@trops/dash-core 0.1.136 → 0.1.138

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../electron/events/secureStorageEvents.js","../../electron/events/workspaceEvents.js","../../electron/events/layoutEvents.js","../../electron/events/themeEvents.js","../../electron/events/dataEvents.js","../../electron/events/settingsEvents.js","../../electron/events/dialogEvents.js","../../electron/events/providerEvents.js","../../electron/events/mcpEvents.js","../../electron/events/registryEvents.js","../../electron/events/algoliaEvents.js","../../electron/events/menuItemEvents.js","../../electron/events/openaiEvents.js","../../electron/events/llmEvents.js","../../electron/events/clientCacheEvents.js","../../electron/events/dashboardConfigEvents.js","../../electron/events/dashboardRatingsEvents.js","../../electron/events/registryAuthEvents.js","../../electron/events/sessionEvents.js","../../electron/events/notificationEvents.js","../../electron/events/index.js","../../electron/controller/dialogController.js","../../electron/controller/secureStoreController.js","../../electron/utils/file.js","../../electron/controller/workspaceController.js","../../electron/controller/themeController.js","../../electron/utils/transform.js","../../electron/utils/ntc.js","../../electron/utils/color.js","../../electron/controller/dataController.js","../../electron/controller/settingsController.js","../../electron/utils/responseCache.js","../../electron/utils/clientCache.js","../../electron/controller/providerController.js","../../electron/controller/layoutController.js","../../electron/controller/mcpController.js","../../electron/controller/registryController.js","../../electron/utils/algolia.js","../../electron/controller/algoliaController.js","../../electron/controller/openaiController.js","../../electron/controller/menuItemsController.js","../../electron/controller/pluginController.js","../../electron/controller/cliController.js","../../electron/controller/llmController.js","../../electron/schema/dashboardConfigValidator.js","../../electron/schema/dashboardConfigUtils.js","../../electron/widgetCompiler.js","../../electron/dynamicWidgetLoader.js","../../electron/widgetRegistry.js","../../electron/controller/registryAuthController.js","../../electron/controller/registryApiController.js","../../electron/controller/themeRegistryController.js","../../electron/controller/dashboardConfigController.js","../../electron/controller/notificationController.js","../../electron/utils/clientFactories.js","../../electron/controller/sessionController.js","../../electron/schema/dashboardRatingsUtils.js","../../electron/controller/dashboardRatingsController.js","../../electron/controller/index.js","../../electron/api/secureStoreApi.js","../../electron/api/workspaceApi.js","../../electron/api/layoutApi.js","../../electron/api/dataApi.js","../../electron/api/settingsApi.js","../../electron/api/dialogApi.js","../../electron/api/widgetApi.js","../../electron/api/providerApi.js","../../electron/api/mcpApi.js","../../electron/api/registryApi.js","../../electron/api/themeApi.js","../../electron/api/algoliaApi.js","../../electron/api/openaiApi.js","../../electron/api/menuItemsApi.js","../../electron/api/pluginApi.js","../../electron/api/llmApi.js","../../electron/api/clientCacheApi.js","../../electron/api/dashboardConfigApi.js","../../electron/api/registryAuthApi.js","../../electron/api/notificationApi.js","../../electron/api/dashboardRatingsApi.js","../../electron/api/sessionApi.js","../../electron/api/mainApi.js","../../electron/index.js"],"sourcesContent":["const SECURE_STORE_ENCRYPTION_CHECK = \"secure-storage-encryption-check\";\nconst SECURE_STORE_ENCRYPTION_CHECK_COMPLETE =\n \"secure-storage-encryption-check-complete\";\nconst SECURE_STORE_ENCRYPTION_CHECK_ERROR =\n \"secure-storage-encryption-check-error\";\n\nconst SECURE_STORAGE_ENCRYPT_STRING = \"secure-storage-encrypt-string\";\nconst SECURE_STORAGE_ENCRYPT_STRING_COMPLETE =\n \"secure-storage-encrypt-string-complete\";\nconst SECURE_STORAGE_ENCRYPT_STRING_ERROR =\n \"secure-storage-encrypt-string-error\";\n\nconst SECURE_STORE_GET_DATA = \"secure-storage-get-data\";\nconst SECURE_STORE_GET_DATA_COMPLETE = \"secure-storage-get-data-complete\";\nconst SECURE_STORE_GET_DATA_ERROR = \"secure-storage-get-data-error\";\n\nconst SECURE_STORE_SET_DATA = \"secure-storage-set-data\";\nconst SECURE_STORE_SET_DATA_COMPLETE = \"secure-storage-set-data-complete\";\nconst SECURE_STORE_SET_DATA_ERROR = \"secure-storage-set-data-error\";\n\nmodule.exports = {\n SECURE_STORE_ENCRYPTION_CHECK,\n SECURE_STORE_ENCRYPTION_CHECK_COMPLETE,\n SECURE_STORE_ENCRYPTION_CHECK_ERROR,\n SECURE_STORE_SET_DATA,\n SECURE_STORE_SET_DATA_COMPLETE,\n SECURE_STORE_SET_DATA_ERROR,\n SECURE_STORE_GET_DATA,\n SECURE_STORE_GET_DATA_COMPLETE,\n SECURE_STORE_GET_DATA_ERROR,\n SECURE_STORAGE_ENCRYPT_STRING,\n SECURE_STORAGE_ENCRYPT_STRING_COMPLETE,\n SECURE_STORAGE_ENCRYPT_STRING_ERROR,\n};\n","/**\n * Event Constants File\n *\n * This file contains event constants that may be used as a type ahead reference for listeners.\n */\nconst WORKSPACE_LIST = \"workspace-list\";\nconst WORKSPACE_LIST_COMPLETE = \"workspace-list-complete\";\nconst WORKSPACE_LIST_ERROR = \"workspace-list-error\";\n\nconst WORKSPACE_SAVE = \"workspace-save\";\nconst WORKSPACE_SAVE_COMPLETE = \"workspace-save-complete\";\nconst WORKSPACE_SAVE_ERROR = \"workspace-save-error\";\n\nconst WORKSPACE_DELETE = \"workspace-delete\";\nconst WORKSPACE_DELETE_COMPLETE = \"workspace-delete-complete\";\nconst WORKSPACE_DELETE_ERROR = \"workspace-delete-error\";\n\nmodule.exports = {\n WORKSPACE_LIST,\n WORKSPACE_LIST_COMPLETE,\n WORKSPACE_LIST_ERROR,\n WORKSPACE_SAVE,\n WORKSPACE_SAVE_COMPLETE,\n WORKSPACE_SAVE_ERROR,\n WORKSPACE_DELETE,\n WORKSPACE_DELETE_COMPLETE,\n WORKSPACE_DELETE_ERROR,\n};\n","/**\n * Event Constants File\n *\n * This file contains event constants that may be used as a type ahead reference for listeners.\n */\nconst LAYOUT_LIST = \"layout-list\";\nconst LAYOUT_LIST_COMPLETE = \"layout-list-complete\";\nconst LAYOUT_LIST_ERROR = \"layout-list-error\";\n\nconst LAYOUT_SAVE = \"layout-save\";\nconst LAYOUT_SAVE_COMPLETE = \"layout-save-complete\";\nconst LAYOUT_SAVE_ERROR = \"layout-save-error\";\n\nmodule.exports = {\n LAYOUT_LIST,\n LAYOUT_LIST_COMPLETE,\n LAYOUT_LIST_ERROR,\n LAYOUT_SAVE,\n LAYOUT_SAVE_COMPLETE,\n LAYOUT_SAVE_ERROR,\n};\n","/**\n * Event Constants File\n *\n * This file contains event constants that may be used as a type ahead reference for listeners.\n */\nconst THEME_LIST = \"theme-list\";\nconst THEME_LIST_COMPLETE = \"theme-list-complete\";\nconst THEME_LIST_ERROR = \"theme-list-error\";\n\nconst THEME_SAVE = \"theme-save\";\nconst THEME_SAVE_COMPLETE = \"theme-save-complete\";\nconst THEME_SAVE_ERROR = \"theme-save-error\";\n\nconst THEME_DELETE = \"theme-delete\";\nconst THEME_DELETE_COMPLETE = \"theme-delete-complete\";\nconst THEME_DELETE_ERROR = \"theme-delete-error\";\n\nconst THEME_PUBLISH = \"theme-publish\";\nconst THEME_INSTALL_FROM_REGISTRY = \"theme-install-from-registry\";\nconst THEME_PUBLISH_PREVIEW = \"theme-publish-preview\";\n\nmodule.exports = {\n THEME_LIST,\n THEME_LIST_COMPLETE,\n THEME_LIST_ERROR,\n THEME_SAVE,\n THEME_SAVE_COMPLETE,\n THEME_SAVE_ERROR,\n THEME_DELETE,\n THEME_DELETE_COMPLETE,\n THEME_DELETE_ERROR,\n THEME_PUBLISH,\n THEME_INSTALL_FROM_REGISTRY,\n THEME_PUBLISH_PREVIEW,\n};\n","const DATA_JSON_TO_CSV_FILE = \"data-json-to-csv-file\";\nconst DATA_JSON_TO_CSV_FILE_COMPLETE = \"data-json-to-csv-file-complete\";\nconst DATA_JSON_TO_CSV_FILE_ERROR = \"data-json-to-csv-file-error\";\n\nconst DATA_READ_FROM_FILE = \"data-read-from-file\";\nconst DATA_READ_FROM_FILE_COMPLETE = \"data-read-from-file-complete\";\nconst DATA_READ_FROM_FILE_ERROR = \"data-read-from-file-error\";\n\nconst DATA_SAVE_TO_FILE = \"data-save-to-file\";\nconst DATA_SAVE_TO_FILE_COMPLETE = \"data-save-to-file-complete\";\nconst DATA_SAVE_TO_FILE_ERROR = \"data-save-to-file-error\";\n\nconst DATA_JSON_TO_CSV_STRING = \"data-json-to-csv-string\";\nconst DATA_JSON_TO_CSV_STRING_COMPLETE = \"data-json-to-csv-string-complete\";\nconst DATA_JSON_TO_CSV_STRING_ERROR = \"data-json-to-csv-string-error\";\n\nconst PARSE_XML_STREAM = \"parse-xml-stream\";\nconst PARSE_XML_STREAM_UPDATE = \"parse-xml-stream-update\";\nconst PARSE_XML_STREAM_COMPLETE = \"parse-xml-stream-complete\";\nconst PARSE_XML_STREAM_ERROR = \"parse-xml-stream-error\";\n\nconst PARSE_CSV_STREAM = \"parse-csv-stream\";\nconst PARSE_CSV_STREAM_UPDATE = \"parse-csv-stream-update\";\nconst PARSE_CSV_STREAM_COMPLETE = \"parse-csv-stream-complete\";\nconst PARSE_CSV_STREAM_ERROR = \"parse-csv-stream-error\";\n\nconst READ_LINES = \"read-lines\";\nconst READ_LINES_UPDATE = \"read-lines-update\";\nconst READ_LINES_COMPLETE = \"read-lines-complete\";\nconst READ_LINES_ERROR = \"read-lines-error\";\n\nconst READ_JSON = \"read-json\";\nconst READ_JSON_UPDATE = \"read-json-update\";\nconst READ_JSON_COMPLETE = \"read-json-complete\";\nconst READ_JSON_ERROR = \"read-json-error\";\n\nconst READ_DATA_URL = \"read-data-url\";\nconst READ_DATA_URL_UPDATE = \"read-data-url-update\";\nconst READ_DATA_URL_COMPLETE = \"read-data-url-complete\";\nconst READ_DATA_URL_ERROR = \"read-data-url-error\";\n\nconst TRANSFORM_FILE = \"transform-file\";\nconst TRANSFORM_FILE_UPDATE = \"transform-file-update\";\nconst TRANSFORM_FILE_COMPLETE = \"transform-file-complete\";\nconst TRANSFORM_FILE_ERROR = \"transform-file-error\";\n\nconst EXTRACT_COLORS_FROM_IMAGE = \"extract-colors-from-image\";\nconst EXTRACT_COLORS_FROM_IMAGE_UPDATE = \"extract-colors-from-image-update\";\nconst EXTRACT_COLORS_FROM_IMAGE_COMPLETE = \"extract-colors-from-image-complete\";\nconst EXTRACT_COLORS_FROM_IMAGE_ERROR = \"extract-colors-from-image-error\";\n\nmodule.exports = {\n DATA_JSON_TO_CSV_FILE,\n DATA_JSON_TO_CSV_FILE_COMPLETE,\n DATA_JSON_TO_CSV_FILE_ERROR,\n\n DATA_JSON_TO_CSV_STRING,\n DATA_JSON_TO_CSV_STRING_COMPLETE,\n DATA_JSON_TO_CSV_STRING_ERROR,\n\n DATA_SAVE_TO_FILE,\n DATA_SAVE_TO_FILE_COMPLETE,\n DATA_SAVE_TO_FILE_ERROR,\n\n DATA_READ_FROM_FILE,\n DATA_READ_FROM_FILE_COMPLETE,\n DATA_READ_FROM_FILE_ERROR,\n\n PARSE_XML_STREAM,\n PARSE_XML_STREAM_COMPLETE,\n PARSE_XML_STREAM_UPDATE,\n PARSE_XML_STREAM_ERROR,\n\n PARSE_CSV_STREAM,\n PARSE_CSV_STREAM_COMPLETE,\n PARSE_CSV_STREAM_UPDATE,\n PARSE_CSV_STREAM_ERROR,\n\n READ_LINES,\n READ_LINES_COMPLETE,\n READ_LINES_UPDATE,\n READ_LINES_ERROR,\n\n READ_JSON,\n READ_JSON_COMPLETE,\n READ_JSON_UPDATE,\n READ_JSON_ERROR,\n\n READ_DATA_URL,\n READ_DATA_URL_COMPLETE,\n READ_DATA_URL_UPDATE,\n READ_DATA_URL_ERROR,\n\n TRANSFORM_FILE,\n TRANSFORM_FILE_COMPLETE,\n TRANSFORM_FILE_UPDATE,\n TRANSFORM_FILE_ERROR,\n\n EXTRACT_COLORS_FROM_IMAGE,\n EXTRACT_COLORS_FROM_IMAGE_COMPLETE,\n EXTRACT_COLORS_FROM_IMAGE_UPDATE,\n EXTRACT_COLORS_FROM_IMAGE_ERROR,\n};\n","const SETTINGS_GET = \"settings-get\";\nconst SETTINGS_GET_COMPLETE = \"settings-get-complete\";\nconst SETTINGS_GET_ERROR = \"settings-get-error\";\n\nconst SETTINGS_SAVE = \"settings-save\";\nconst SETTINGS_SAVE_COMPLETE = \"settings-save-complete\";\nconst SETTINGS_SAVE_ERROR = \"settings-save-error\";\n\nconst SETTINGS_GET_DATA_DIR = \"settings-get-data-dir\";\nconst SETTINGS_GET_DATA_DIR_COMPLETE = \"settings-get-data-dir-complete\";\nconst SETTINGS_GET_DATA_DIR_ERROR = \"settings-get-data-dir-error\";\n\nconst SETTINGS_SET_DATA_DIR = \"settings-set-data-dir\";\nconst SETTINGS_SET_DATA_DIR_COMPLETE = \"settings-set-data-dir-complete\";\nconst SETTINGS_SET_DATA_DIR_ERROR = \"settings-set-data-dir-error\";\n\nconst SETTINGS_MIGRATE_DATA_DIR = \"settings-migrate-data-dir\";\nconst SETTINGS_MIGRATE_DATA_DIR_COMPLETE = \"settings-migrate-data-dir-complete\";\nconst SETTINGS_MIGRATE_DATA_DIR_ERROR = \"settings-migrate-data-dir-error\";\n\nmodule.exports = {\n SETTINGS_GET,\n SETTINGS_GET_COMPLETE,\n SETTINGS_GET_ERROR,\n SETTINGS_SAVE,\n SETTINGS_SAVE_COMPLETE,\n SETTINGS_SAVE_ERROR,\n SETTINGS_GET_DATA_DIR,\n SETTINGS_GET_DATA_DIR_COMPLETE,\n SETTINGS_GET_DATA_DIR_ERROR,\n SETTINGS_SET_DATA_DIR,\n SETTINGS_SET_DATA_DIR_COMPLETE,\n SETTINGS_SET_DATA_DIR_ERROR,\n SETTINGS_MIGRATE_DATA_DIR,\n SETTINGS_MIGRATE_DATA_DIR_COMPLETE,\n SETTINGS_MIGRATE_DATA_DIR_ERROR,\n};\n","const CHOOSE_FILE = \"choose-file\";\nconst CHOOSE_FILE_COMPLETE = \"choose-file-complete\";\nconst CHOOSE_FILE_ERROR = \"choose-file-error\";\n\nmodule.exports = {\n CHOOSE_FILE,\n CHOOSE_FILE_COMPLETE,\n CHOOSE_FILE_ERROR,\n};\n","/**\n * Event Constants File - Provider Events\n *\n * This file contains event constants for provider-related IPC communication.\n */\nconst PROVIDER_SAVE = \"provider-save\";\nconst PROVIDER_SAVE_COMPLETE = \"provider-save-complete\";\nconst PROVIDER_SAVE_ERROR = \"provider-save-error\";\n\nconst PROVIDER_LIST = \"provider-list\";\nconst PROVIDER_LIST_COMPLETE = \"provider-list-complete\";\nconst PROVIDER_LIST_ERROR = \"provider-list-error\";\n\nconst PROVIDER_GET = \"provider-get\";\nconst PROVIDER_GET_COMPLETE = \"provider-get-complete\";\nconst PROVIDER_GET_ERROR = \"provider-get-error\";\n\nconst PROVIDER_DELETE = \"provider-delete\";\nconst PROVIDER_DELETE_COMPLETE = \"provider-delete-complete\";\nconst PROVIDER_DELETE_ERROR = \"provider-delete-error\";\n\nmodule.exports = {\n PROVIDER_SAVE,\n PROVIDER_SAVE_COMPLETE,\n PROVIDER_SAVE_ERROR,\n PROVIDER_LIST,\n PROVIDER_LIST_COMPLETE,\n PROVIDER_LIST_ERROR,\n PROVIDER_GET,\n PROVIDER_GET_COMPLETE,\n PROVIDER_GET_ERROR,\n PROVIDER_DELETE,\n PROVIDER_DELETE_COMPLETE,\n PROVIDER_DELETE_ERROR,\n};\n","/**\n * Event Constants File - MCP Events\n *\n * This file contains event constants for MCP (Model Context Protocol)\n * server-related IPC communication.\n */\nconst MCP_START_SERVER = \"mcp-start-server\";\nconst MCP_START_SERVER_COMPLETE = \"mcp-start-server-complete\";\nconst MCP_START_SERVER_ERROR = \"mcp-start-server-error\";\n\nconst MCP_STOP_SERVER = \"mcp-stop-server\";\nconst MCP_STOP_SERVER_COMPLETE = \"mcp-stop-server-complete\";\nconst MCP_STOP_SERVER_ERROR = \"mcp-stop-server-error\";\n\nconst MCP_LIST_TOOLS = \"mcp-list-tools\";\nconst MCP_LIST_TOOLS_COMPLETE = \"mcp-list-tools-complete\";\nconst MCP_LIST_TOOLS_ERROR = \"mcp-list-tools-error\";\n\nconst MCP_CALL_TOOL = \"mcp-call-tool\";\nconst MCP_CALL_TOOL_COMPLETE = \"mcp-call-tool-complete\";\nconst MCP_CALL_TOOL_ERROR = \"mcp-call-tool-error\";\n\nconst MCP_LIST_RESOURCES = \"mcp-list-resources\";\nconst MCP_LIST_RESOURCES_COMPLETE = \"mcp-list-resources-complete\";\nconst MCP_LIST_RESOURCES_ERROR = \"mcp-list-resources-error\";\n\nconst MCP_READ_RESOURCE = \"mcp-read-resource\";\nconst MCP_READ_RESOURCE_COMPLETE = \"mcp-read-resource-complete\";\nconst MCP_READ_RESOURCE_ERROR = \"mcp-read-resource-error\";\n\nconst MCP_SERVER_STATUS = \"mcp-server-status\";\nconst MCP_SERVER_STATUS_COMPLETE = \"mcp-server-status-complete\";\nconst MCP_SERVER_STATUS_ERROR = \"mcp-server-status-error\";\n\nconst MCP_GET_CATALOG = \"mcp-get-catalog\";\nconst MCP_GET_CATALOG_COMPLETE = \"mcp-get-catalog-complete\";\nconst MCP_GET_CATALOG_ERROR = \"mcp-get-catalog-error\";\n\nconst MCP_RUN_AUTH = \"mcp-run-auth\";\nconst MCP_RUN_AUTH_COMPLETE = \"mcp-run-auth-complete\";\nconst MCP_RUN_AUTH_ERROR = \"mcp-run-auth-error\";\n\nmodule.exports = {\n MCP_START_SERVER,\n MCP_START_SERVER_COMPLETE,\n MCP_START_SERVER_ERROR,\n MCP_STOP_SERVER,\n MCP_STOP_SERVER_COMPLETE,\n MCP_STOP_SERVER_ERROR,\n MCP_LIST_TOOLS,\n MCP_LIST_TOOLS_COMPLETE,\n MCP_LIST_TOOLS_ERROR,\n MCP_CALL_TOOL,\n MCP_CALL_TOOL_COMPLETE,\n MCP_CALL_TOOL_ERROR,\n MCP_LIST_RESOURCES,\n MCP_LIST_RESOURCES_COMPLETE,\n MCP_LIST_RESOURCES_ERROR,\n MCP_READ_RESOURCE,\n MCP_READ_RESOURCE_COMPLETE,\n MCP_READ_RESOURCE_ERROR,\n MCP_SERVER_STATUS,\n MCP_SERVER_STATUS_COMPLETE,\n MCP_SERVER_STATUS_ERROR,\n MCP_GET_CATALOG,\n MCP_GET_CATALOG_COMPLETE,\n MCP_GET_CATALOG_ERROR,\n MCP_RUN_AUTH,\n MCP_RUN_AUTH_COMPLETE,\n MCP_RUN_AUTH_ERROR,\n};\n","/**\n * Event Constants File - Registry Events\n *\n * IPC event constants for the widget registry/marketplace system.\n */\nconst REGISTRY_FETCH_INDEX = \"registry:fetch-index\";\nconst REGISTRY_SEARCH = \"registry:search\";\nconst REGISTRY_GET_PACKAGE = \"registry:get-package\";\nconst REGISTRY_CHECK_UPDATES = \"registry:check-updates\";\nconst REGISTRY_SEARCH_DASHBOARDS = \"registry:search-dashboards\";\nconst REGISTRY_SEARCH_THEMES = \"registry:search-themes\";\n\nmodule.exports = {\n REGISTRY_FETCH_INDEX,\n REGISTRY_SEARCH,\n REGISTRY_GET_PACKAGE,\n REGISTRY_CHECK_UPDATES,\n REGISTRY_SEARCH_DASHBOARDS,\n REGISTRY_SEARCH_THEMES,\n};\n","/**\n * Event Constants File\n *\n * This file contains event constants that may be used as a type ahead reference for listeners.\n */\nconst ALGOLIA_LIST_INDICES = \"algolia-list-indices\";\nconst ALGOLIA_LIST_INDICES_COMPLETE = \"algolia-list-indices-complete\";\nconst ALGOLIA_LIST_INDICES_ERROR = \"algolia-list-indices-error\";\n\nconst ALGOLIA_ANALYTICS_FOR_QUERY = \"algolia-analytics-for-query\";\nconst ALGOLIA_ANALYTICS_FOR_QUERY_COMPLETE =\n \"algolia-analytics-for-query-complete\";\nconst ALGOLIA_ANALYTICS_FOR_QUERY_ERROR = \"algolia-analytics-for-query-error\";\n\nconst ALGOLIA_SAVE_OBJECTS = \"algolia-save-objects\";\nconst ALGOLIA_SAVE_OBJECTS_COMPLETE = \"algolia-save-objects-complete\";\nconst ALGOLIA_SAVE_OBJECTS_ERROR = \"algolia-save-objects-error\";\n\nconst ALGOLIA_PARTIAL_UPDATE_OBJECTS = \"algolia-partial-update-objects\";\nconst ALGOLIA_PARTIAL_UPDATE_OBJECTS_COMPLETE =\n \"algolia-partial-update-objects-complete\";\nconst ALGOLIA_PARTIAL_UPDATE_OBJECTS_ERROR =\n \"algolia-partial-update-objects-error\";\nconst ALGOLIA_PARTIAL_UPDATE_OBJECTS_UPDATE =\n \"algolia-partial-update-objects-update\";\n\nconst ALGOLIA_CREATE_BATCH = \"algolia-create-batch\";\nconst ALGOLIA_CREATE_BATCH_COMPLETE = \"algolia-create-batch-complete\";\nconst ALGOLIA_CREATE_BATCH_UPDATE = \"algolia-create-batch-update\";\nconst ALGOLIA_CREATE_BATCH_ERROR = \"algolia-create-batch-error\";\n\nconst ALGOLIA_BROWSE_OBJECTS = \"algolia-browse-objects\";\nconst ALGOLIA_BROWSE_OBJECTS_COMPLETE = \"algolia-browse-objects-complete\";\nconst ALGOLIA_BROWSE_OBJECTS_UPDATE = \"algolia-browse-objects-update\";\nconst ALGOLIA_BROWSE_OBJECTS_ERROR = \"algolia-browse-objects-error\";\n\nconst ALGOLIA_SEARCH = \"algolia-search\";\n\nmodule.exports = {\n ALGOLIA_LIST_INDICES,\n ALGOLIA_LIST_INDICES_COMPLETE,\n ALGOLIA_LIST_INDICES_ERROR,\n ALGOLIA_ANALYTICS_FOR_QUERY,\n ALGOLIA_ANALYTICS_FOR_QUERY_COMPLETE,\n ALGOLIA_ANALYTICS_FOR_QUERY_ERROR,\n ALGOLIA_SAVE_OBJECTS,\n ALGOLIA_SAVE_OBJECTS_COMPLETE,\n ALGOLIA_SAVE_OBJECTS_ERROR,\n ALGOLIA_PARTIAL_UPDATE_OBJECTS,\n ALGOLIA_PARTIAL_UPDATE_OBJECTS_COMPLETE,\n ALGOLIA_PARTIAL_UPDATE_OBJECTS_ERROR,\n ALGOLIA_PARTIAL_UPDATE_OBJECTS_UPDATE,\n ALGOLIA_CREATE_BATCH,\n ALGOLIA_CREATE_BATCH_COMPLETE,\n ALGOLIA_CREATE_BATCH_ERROR,\n ALGOLIA_CREATE_BATCH_UPDATE,\n ALGOLIA_BROWSE_OBJECTS,\n ALGOLIA_BROWSE_OBJECTS_COMPLETE,\n ALGOLIA_BROWSE_OBJECTS_ERROR,\n ALGOLIA_BROWSE_OBJECTS_UPDATE,\n ALGOLIA_SEARCH,\n};\n","const MENU_ITEMS_SAVE = \"menu-items-save\";\nconst MENU_ITEMS_SAVE_COMPLETE = \"menu-items-save-complete\";\nconst MENU_ITEMS_SAVE_ERROR = \"menu-items-save-error\";\n\nconst MENU_ITEMS_LIST = \"menu-items-list\";\nconst MENU_ITEMS_LIST_COMPLETE = \"menu-items-list-complete\";\nconst MENU_ITEMS_LIST_ERROR = \"menu-items-list-error\";\n\nmodule.exports = {\n MENU_ITEMS_LIST,\n MENU_ITEMS_LIST_COMPLETE,\n MENU_ITEMS_LIST_ERROR,\n MENU_ITEMS_SAVE,\n MENU_ITEMS_SAVE_COMPLETE,\n MENU_ITEMS_SAVE_ERROR,\n};\n","const OPENAI_DESCRIBE_IMAGE = \"openai-describe-image\";\nconst OPENAI_DESCRIBE_IMAGE_COMPLETE = \"openai-describe-image-success\";\nconst OPENAI_DESCRIBE_IMAGE_ERROR = \"openai-describe-image-error\";\n\nmodule.exports = {\n OPENAI_DESCRIBE_IMAGE,\n OPENAI_DESCRIBE_IMAGE_COMPLETE,\n OPENAI_DESCRIBE_IMAGE_ERROR,\n};\n","/**\n * Event Constants File - LLM Events\n *\n * This file contains event constants for LLM (Large Language Model)\n * chat IPC communication — streaming, tool-use, and lifecycle.\n */\n\n// --- Renderer → Main (invoke) ---\nconst LLM_SEND_MESSAGE = \"llm-send-message\";\nconst LLM_ABORT_REQUEST = \"llm-abort-request\";\nconst LLM_LIST_CONNECTED_TOOLS = \"llm-list-connected-tools\";\nconst LLM_CHECK_CLI_AVAILABLE = \"llm-check-cli-available\";\nconst LLM_CLEAR_CLI_SESSION = \"llm-clear-cli-session\";\nconst LLM_CLI_SESSION_STATUS = \"llm-cli-session-status\";\nconst LLM_CLI_END_SESSION = \"llm-cli-end-session\";\n\n// --- Main → Renderer (send) ---\nconst LLM_STREAM_DELTA = \"llm-stream-delta\";\nconst LLM_STREAM_TOOL_CALL = \"llm-stream-tool-call\";\nconst LLM_STREAM_TOOL_RESULT = \"llm-stream-tool-result\";\nconst LLM_STREAM_COMPLETE = \"llm-stream-complete\";\nconst LLM_STREAM_ERROR = \"llm-stream-error\";\n\nmodule.exports = {\n LLM_SEND_MESSAGE,\n LLM_ABORT_REQUEST,\n LLM_LIST_CONNECTED_TOOLS,\n LLM_CHECK_CLI_AVAILABLE,\n LLM_CLEAR_CLI_SESSION,\n LLM_STREAM_DELTA,\n LLM_STREAM_TOOL_CALL,\n LLM_STREAM_TOOL_RESULT,\n LLM_STREAM_COMPLETE,\n LLM_STREAM_ERROR,\n LLM_CLI_SESSION_STATUS,\n LLM_CLI_END_SESSION,\n};\n","/**\n * Event Constants File - Client Cache Events\n *\n * This file contains event constants for client cache management IPC communication.\n */\nconst CLIENT_CACHE_INVALIDATE = \"client-cache-invalidate\";\nconst CLIENT_CACHE_INVALIDATE_ALL = \"client-cache-invalidate-all\";\nconst RESPONSE_CACHE_CLEAR = \"response-cache-clear\";\nconst RESPONSE_CACHE_STATS = \"response-cache-stats\";\n\nmodule.exports = {\n CLIENT_CACHE_INVALIDATE,\n CLIENT_CACHE_INVALIDATE_ALL,\n RESPONSE_CACHE_CLEAR,\n RESPONSE_CACHE_STATS,\n};\n","/**\n * Dashboard Config Events\n *\n * IPC event constants for dashboard configuration export/import.\n */\nconst DASHBOARD_CONFIG_EXPORT = \"dashboard-config-export\";\nconst DASHBOARD_CONFIG_IMPORT = \"dashboard-config-import\";\nconst DASHBOARD_CONFIG_INSTALL = \"dashboard-config-install\";\nconst DASHBOARD_CONFIG_COMPATIBILITY = \"dashboard-config-compatibility\";\nconst DASHBOARD_CONFIG_PUBLISH = \"dashboard-config-publish\";\nconst DASHBOARD_CONFIG_PREVIEW = \"dashboard-config-preview\";\nconst DASHBOARD_CONFIG_CHECK_UPDATES = \"dashboard-config-check-updates\";\nconst DASHBOARD_CONFIG_PROVIDER_SETUP = \"dashboard-config-provider-setup\";\nconst DASHBOARD_CONFIG_PUBLISH_PREVIEW = \"dashboard-config-publish-preview\";\nconst DASHBOARD_CONFIG_SELECT_FILE = \"dashboard-config-select-file\";\n\nmodule.exports = {\n DASHBOARD_CONFIG_EXPORT,\n DASHBOARD_CONFIG_IMPORT,\n DASHBOARD_CONFIG_INSTALL,\n DASHBOARD_CONFIG_COMPATIBILITY,\n DASHBOARD_CONFIG_PUBLISH,\n DASHBOARD_CONFIG_PREVIEW,\n DASHBOARD_CONFIG_CHECK_UPDATES,\n DASHBOARD_CONFIG_PROVIDER_SETUP,\n DASHBOARD_CONFIG_PUBLISH_PREVIEW,\n DASHBOARD_CONFIG_SELECT_FILE,\n};\n","/**\n * Dashboard Ratings Events\n *\n * IPC event constants for dashboard ratings CRUD.\n */\nconst DASHBOARD_RATING_SAVE = \"dashboard-rating-save\";\nconst DASHBOARD_RATING_GET = \"dashboard-rating-get\";\nconst DASHBOARD_RATING_LIST = \"dashboard-rating-list\";\nconst DASHBOARD_RATING_DELETE = \"dashboard-rating-delete\";\n\nmodule.exports = {\n DASHBOARD_RATING_SAVE,\n DASHBOARD_RATING_GET,\n DASHBOARD_RATING_LIST,\n DASHBOARD_RATING_DELETE,\n};\n","/**\n * Event Constants — Registry Auth Events\n *\n * IPC event constants for registry authentication (device code flow).\n */\nconst REGISTRY_AUTH_INITIATE_LOGIN = \"registry-auth:initiate-login\";\nconst REGISTRY_AUTH_POLL_TOKEN = \"registry-auth:poll-token\";\nconst REGISTRY_AUTH_GET_STATUS = \"registry-auth:get-status\";\nconst REGISTRY_AUTH_GET_PROFILE = \"registry-auth:get-profile\";\nconst REGISTRY_AUTH_LOGOUT = \"registry-auth:logout\";\nconst REGISTRY_AUTH_PUBLISH = \"registry-auth:publish\";\nconst REGISTRY_AUTH_UPDATE_PROFILE = \"registry-auth:update-profile\";\nconst REGISTRY_AUTH_GET_PACKAGES = \"registry-auth:get-packages\";\nconst REGISTRY_AUTH_UPDATE_PACKAGE = \"registry-auth:update-package\";\nconst REGISTRY_AUTH_DELETE_PACKAGE = \"registry-auth:delete-package\";\n\nmodule.exports = {\n REGISTRY_AUTH_INITIATE_LOGIN,\n REGISTRY_AUTH_POLL_TOKEN,\n REGISTRY_AUTH_GET_STATUS,\n REGISTRY_AUTH_GET_PROFILE,\n REGISTRY_AUTH_LOGOUT,\n REGISTRY_AUTH_PUBLISH,\n REGISTRY_AUTH_UPDATE_PROFILE,\n REGISTRY_AUTH_GET_PACKAGES,\n REGISTRY_AUTH_UPDATE_PACKAGE,\n REGISTRY_AUTH_DELETE_PACKAGE,\n};\n","/**\n * Event Constants — Session Events\n *\n * IPC event constants for session management (recents + session restore).\n */\nconst SESSION_GET_RECENTS = \"session:get-recents\";\nconst SESSION_ADD_RECENT = \"session:add-recent\";\nconst SESSION_REMOVE_RECENT = \"session:remove-recent\";\nconst SESSION_CLEAR_RECENTS = \"session:clear-recents\";\nconst SESSION_GET_STATE = \"session:get-state\";\nconst SESSION_SAVE_STATE = \"session:save-state\";\nconst SESSION_CLEAR_STATE = \"session:clear-state\";\n\nmodule.exports = {\n SESSION_GET_RECENTS,\n SESSION_ADD_RECENT,\n SESSION_REMOVE_RECENT,\n SESSION_CLEAR_RECENTS,\n SESSION_GET_STATE,\n SESSION_SAVE_STATE,\n SESSION_CLEAR_STATE,\n};\n","/**\n * Event Constants File - Notification Events\n *\n * IPC channel constants for the notification system.\n */\nconst NOTIFICATION_SEND = \"notification-send\";\nconst NOTIFICATION_SEND_COMPLETE = \"notification-send-complete\";\nconst NOTIFICATION_SEND_ERROR = \"notification-send-error\";\n\nconst NOTIFICATION_GET_PREFERENCES = \"notification-get-preferences\";\nconst NOTIFICATION_GET_PREFERENCES_COMPLETE =\n \"notification-get-preferences-complete\";\nconst NOTIFICATION_GET_PREFERENCES_ERROR = \"notification-get-preferences-error\";\n\nconst NOTIFICATION_SET_PREFERENCES = \"notification-set-preferences\";\nconst NOTIFICATION_SET_PREFERENCES_COMPLETE =\n \"notification-set-preferences-complete\";\nconst NOTIFICATION_SET_PREFERENCES_ERROR = \"notification-set-preferences-error\";\n\nconst NOTIFICATION_SET_GLOBAL = \"notification-set-global\";\nconst NOTIFICATION_SET_GLOBAL_COMPLETE = \"notification-set-global-complete\";\nconst NOTIFICATION_SET_GLOBAL_ERROR = \"notification-set-global-error\";\n\nconst NOTIFICATION_CLICKED = \"notification:clicked\";\n\nmodule.exports = {\n NOTIFICATION_SEND,\n NOTIFICATION_SEND_COMPLETE,\n NOTIFICATION_SEND_ERROR,\n NOTIFICATION_GET_PREFERENCES,\n NOTIFICATION_GET_PREFERENCES_COMPLETE,\n NOTIFICATION_GET_PREFERENCES_ERROR,\n NOTIFICATION_SET_PREFERENCES,\n NOTIFICATION_SET_PREFERENCES_COMPLETE,\n NOTIFICATION_SET_PREFERENCES_ERROR,\n NOTIFICATION_SET_GLOBAL,\n NOTIFICATION_SET_GLOBAL_COMPLETE,\n NOTIFICATION_SET_GLOBAL_ERROR,\n NOTIFICATION_CLICKED,\n};\n","/**\n * Events\n *\n * All event constants used by the framework.\n */\nconst secureStorageEvents = require(\"./secureStorageEvents\");\nconst workspaceEvents = require(\"./workspaceEvents\");\nconst layoutEvents = require(\"./layoutEvents\");\nconst themeEvents = require(\"./themeEvents\");\nconst dataEvents = require(\"./dataEvents\");\nconst settingsEvents = require(\"./settingsEvents\");\nconst dialogEvents = require(\"./dialogEvents\");\nconst providerEvents = require(\"./providerEvents\");\nconst mcpEvents = require(\"./mcpEvents\");\nconst registryEvents = require(\"./registryEvents\");\nconst algoliaEvents = require(\"./algoliaEvents\");\nconst menuItemEvents = require(\"./menuItemEvents\");\nconst openaiEvents = require(\"./openaiEvents\");\nconst llmEvents = require(\"./llmEvents\");\nconst clientCacheEvents = require(\"./clientCacheEvents\");\nconst dashboardConfigEvents = require(\"./dashboardConfigEvents\");\nconst dashboardRatingsEvents = require(\"./dashboardRatingsEvents\");\nconst registryAuthEvents = require(\"./registryAuthEvents\");\nconst sessionEvents = require(\"./sessionEvents\");\nconst notificationEvents = require(\"./notificationEvents\");\n\nconst publicEvents = {\n ...dataEvents,\n};\n\nmodule.exports = {\n public: publicEvents,\n ...secureStorageEvents,\n ...workspaceEvents,\n ...layoutEvents,\n ...themeEvents,\n ...dataEvents,\n ...settingsEvents,\n ...dialogEvents,\n ...providerEvents,\n ...mcpEvents,\n ...registryEvents,\n ...algoliaEvents,\n ...menuItemEvents,\n ...openaiEvents,\n ...llmEvents,\n ...clientCacheEvents,\n ...dashboardConfigEvents,\n ...dashboardRatingsEvents,\n ...registryAuthEvents,\n ...sessionEvents,\n ...notificationEvents,\n};\n","/**\n * dialogController.js\n *\n * Open a dialog window for choosing files\n */\nconst { dialog } = require(\"electron\");\nconst events = require(\"../events\");\n\nconst showDialog = async (win, message, allowFile, extensions = [\"*\"]) => {\n const properties =\n allowFile === true ? [\"openFile\"] : [\"openDirectory\", \"createDirectory\"];\n const filters = allowFile === true ? [{ name: \"Data\", extensions }] : [];\n const result = await dialog.showOpenDialog({ properties, filters });\n if (result.canceled || !result.filePaths[0]) return null;\n return result.filePaths[0];\n};\n\nconst fileChosenError = (win, message) => {\n win.webContents.send(events.CHOOSE_FILE_ERROR, message);\n};\n\nmodule.exports = {\n showDialog,\n fileChosenError,\n};\n","/**\n * secureStore\n */\nconst { safeStorage } = require(\"electron\");\nconst Store = require(\"electron-store\");\nconst events = require(\"../events\");\n\nconst schema = {\n appId: {\n type: \"string\",\n },\n apiKey: {\n type: \"string\",\n },\n};\n\nconst isEncryptionAvailable = (win) => {\n const result = safeStorage.isEncryptionAvailable();\n win.webContents.send(events.SECURE_STORE_ENCRYPTION_CHECK_COMPLETE, result);\n};\n\nconst encryptString = (win, str) => {\n const result = safeStorage.encryptString(str);\n win.webContents.send(\"secure-storage-encrypt-string-complete\", result);\n};\n\nconst decryptString = (win, str) => {\n const result = safeStorage.decryptString(str);\n win.webContents.send(\"secure-storage-decrypt-string-complete\", result);\n};\n\nconst saveData = (key, value) => {\n try {\n const store = new Store({ schema });\n store.set(key, value);\n return getData(key);\n } catch (e) {\n return { data: null };\n }\n};\n\nconst getData = (key) => {\n try {\n const store = new Store({ schema });\n const value = store.get(key);\n if (value) {\n return { [key]: value };\n } else {\n return null;\n }\n } catch (e) {\n return null;\n }\n};\n\nmodule.exports = {\n isEncryptionAvailable,\n encryptString,\n decryptString,\n saveData,\n getData,\n};\n","const path = require(\"path\");\nconst {\n readFileSync,\n writeFileSync,\n existsSync,\n mkdirSync,\n openSync,\n closeSync,\n readdir,\n unlink,\n unlinkSync,\n readdirSync,\n lstatSync,\n} = require(\"fs\");\n\nfunction ensureDirectoryExistence(filePath) {\n try {\n // isDirectory\n var dirname = path.dirname(filePath);\n // check if the directory exists...return true\n // if not, we can pass in the dirname as the filepath\n // and check each directory recursively.\n if (existsSync(dirname)) {\n return true;\n }\n // recursion...\n ensureDirectoryExistence(dirname);\n mkdirSync(dirname);\n } catch (e) {\n console.log(\"ensure directory \" + e.message);\n }\n}\n\nfunction checkDirectory(dir) {\n try {\n if (existsSync(dir) === false) {\n console.log(\"filepath doesnt exist\", dir);\n mkdirSync(dir);\n }\n } catch (e) {\n throw e;\n }\n}\n\n// function ensureFileExistence(filePath) {\n// try {\n// var dirname = path.dirname(filePath);\n// if (existsSync(dirname)) {\n// return true;\n// }\n// ensureDirectoryExistence(dirname);\n\n// mkdirSync(dirname);\n// } catch (e) {\n// console.log(e.message);\n// }\n// }\n\n/**\n * getFileContents\n *\n * Will attempt to get the file contents\n * and will generate directory and file if this does not exist.\n *\n * Handles corrupted/empty JSON files by reinitializing with defaults.\n *\n * @param {string} filepath path to the file\n * @returns\n */\nfunction getFileContents(filepath, defaultReturn = []) {\n try {\n // lets first make sure all is there...\n ensureDirectoryExistence(filepath);\n\n // and now lets read the file...\n let fileContents = JSON.stringify(defaultReturn);\n let fileContentsArray = defaultReturn;\n if (existsSync(filepath)) {\n fileContents = readFileSync(filepath, \"utf8\");\n\n try {\n fileContentsArray =\n filepath.substring(filepath.length - 4) === \"json\"\n ? JSON.parse(fileContents)\n : fileContents;\n } catch (parseError) {\n // File exists but is empty or corrupted JSON\n console.warn(\n `[File] Corrupted JSON file: ${filepath}, reinitializing with defaults`,\n );\n console.warn(`[File] Parse error: ${parseError.message}`);\n\n // Reinitialize with default content\n fileContentsArray = defaultReturn;\n writeFileSync(filepath, JSON.stringify(defaultReturn, null, 2));\n console.log(`[File] Successfully reinitialized: ${filepath}`);\n }\n } else {\n // we should make the file with default content\n closeSync(openSync(filepath, \"w\"));\n writeFileSync(filepath, JSON.stringify(defaultReturn, null, 2));\n }\n\n return fileContentsArray;\n } catch (e) {\n console.log(e);\n return defaultReturn;\n }\n}\n\nfunction writeToFile(filename, data) {\n try {\n // write the new pages configuration back to the file\n return writeFileSync(filename, data);\n } catch (e) {\n return false;\n }\n}\n\n/**\n *\n * @param {string} directory\n * @returns\n */\nfunction removeFilesFromDirectory(directory, excludeFiles = []) {\n return (\n directory !== \"\" &&\n directory &&\n readdir(directory, (err, files) => {\n if (err) throw err;\n\n for (const file of files) {\n if (!excludeFiles.includes(file)) {\n unlinkSync(path.join(directory, file), (err) => {\n if (err) throw err;\n });\n }\n }\n })\n );\n}\n\nmodule.exports = {\n ensureDirectoryExistence,\n getFileContents,\n writeToFile,\n removeFilesFromDirectory,\n checkDirectory,\n};\n","const { app } = require(\"electron\");\nconst path = require(\"path\");\nconst { writeFileSync } = require(\"fs\");\nconst events = require(\"../events\");\nconst { getFileContents } = require(\"../utils/file\");\n\nconst configFilename = \"workspaces.json\";\nconst appName = \"Dashboard\";\n\nconst workspaceController = {\n /**\n * createWorkspace\n *\n * Use a simple scaffold to create the Page skeleton for the user\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id from Algolia\n * @param {object} page the page configuration file\n */\n /*\n \"id\": \"<page-id-here>\",\n \"package\":\"\",\n \"repository\":\"\",\n \"author\": \"<user-name>\",\n \"version\": \"1\",\n \"displayName\": \"<page-display-name>\",\n \"indexName\": \"<algolia-index-name>\",\n \"date_created\": \"\",\n \"date_edited\": \"\",\n \"administration\": {\n \"context\": false,\n \"searchBox\": true,\n \"query\": false\n },\n \"layout\": {}\n }\n */\n\n /**\n * saveWorkspace\n * Create a workspace from a json configuration object (no template)\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {object} pageObject the page config object\n */\n saveWorkspaceForApplication: (win, appId, workspaceObject) => {\n try {\n // filename to the pages file (live pages)\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const workspacesArray = getFileContents(filename);\n\n // lets check to see if we already have this one!\n let indexOfExistingItem = null;\n workspacesArray.forEach((element, index) => {\n if (element[\"id\"] === workspaceObject[\"id\"]) {\n indexOfExistingItem = index;\n }\n });\n\n // replace item if we have an id already matching our input object\n if (indexOfExistingItem !== null) {\n // update the existing workspace item\n workspacesArray[indexOfExistingItem] = workspaceObject;\n } else {\n // add the pageObject to the pages file\n workspacesArray.push(workspaceObject);\n }\n\n // write the new pages configuration back to the file\n writeFileSync(filename, JSON.stringify(workspacesArray, null, 2));\n\n console.log(\"[workspaceController] Workspace saved successfully\");\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n workspaces: workspacesArray,\n success: true,\n };\n } catch (e) {\n console.error(\"[workspaceController] Error saving workspace:\", e);\n // Return error object with empty workspaces array\n return {\n error: true,\n message: e.message,\n workspaces: [],\n };\n }\n },\n\n saveMenuItemsForApplication: (win, appId, menuItems) => {\n try {\n // filename to the workspaces file\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const workspacesArray = getFileContents(filename);\n\n // Update menu items for workspaces\n // This assumes menuItems is an object with workspace IDs as keys\n // and updates the menuId property for each workspace\n if (menuItems && typeof menuItems === \"object\") {\n workspacesArray.forEach((workspace, index) => {\n if (menuItems[workspace.id]) {\n workspacesArray[index].menuId = menuItems[workspace.id];\n }\n });\n }\n\n // write the updated workspaces configuration back to the file\n writeFileSync(filename, JSON.stringify(workspacesArray, null, 2));\n\n console.log(\"[workspaceController] Menu items saved successfully\");\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n workspaces: workspacesArray,\n success: true,\n };\n } catch (e) {\n console.error(\"[workspaceController] Error saving menu items:\", e);\n // Return error object with empty workspaces array\n return {\n error: true,\n message: e.message,\n workspaces: [],\n };\n }\n },\n\n /**\n * loadPagesForApplication\n * Load the pages for the application <userdata>/appId/pages.json\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id from Algolia\n */\n deleteWorkspaceForApplication: (win, appId, workspaceId) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const workspacesArray = getFileContents(filename);\n\n const filtered = workspacesArray.filter(\n (workspace) => workspace.id !== workspaceId,\n );\n\n writeFileSync(filename, JSON.stringify(filtered, null, 2));\n\n console.log(\n `[workspaceController] Workspace ${workspaceId} deleted successfully`,\n );\n\n return {\n workspaces: filtered,\n success: true,\n };\n } catch (e) {\n console.error(\"[workspaceController] Error deleting workspace:\", e);\n return {\n error: true,\n message: e.message,\n workspaces: [],\n };\n }\n },\n\n listWorkspacesForApplication: (win, appId) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n\n const workspacesArray = getFileContents(filename);\n console.log(\n `[workspaceController] Loaded ${workspacesArray.length} workspaces for appId: ${appId}`,\n );\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n workspaces: workspacesArray,\n };\n } catch (e) {\n console.error(\"[workspaceController] Error listing workspaces:\", e);\n // Return error object with empty workspaces array\n return {\n error: true,\n message: e.message,\n workspaces: [],\n };\n }\n },\n\n listMenuItemsForApplication: (win, appId) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const workspacesArray = getFileContents(filename);\n\n // Extract unique menu items from workspaces\n // Each workspace can have a menuId, we need to build the menu items list\n const menuItemsMap = new Map();\n\n workspacesArray.forEach((workspace) => {\n if (workspace.menuId) {\n if (!menuItemsMap.has(workspace.menuId)) {\n menuItemsMap.set(workspace.menuId, {\n id: workspace.menuId,\n name: workspace.name || `Menu Item ${workspace.menuId}`,\n // Add other menu item properties as needed\n });\n }\n }\n });\n\n const menuItemsArray = Array.from(menuItemsMap.values());\n\n // Return the menu items data for ipcMain.handle()\n return {\n menuItems: menuItemsArray,\n };\n } catch (e) {\n console.error(\"[workspaceController] Error listing menu items:\", e);\n // Return error object with empty menu items array\n return {\n error: true,\n message: e.message,\n menuItems: [],\n };\n }\n },\n};\n\nmodule.exports = workspaceController;\n","const { app } = require(\"electron\");\nconst path = require(\"path\");\nconst { writeFileSync } = require(\"fs\");\nconst events = require(\"../events\");\nconst { getFileContents } = require(\"../utils/file\");\n\nconst configFilename = \"themes.json\";\nconst appName = \"Dashboard\";\n\nconst themeController = {\n /**\n * saveTheme\n * Create a new Theme that can be used in the application\n * (can have several themes per application)\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {object} themeObject the theme object\n */\n saveThemeForApplication: (win, appId, name, obj) => {\n try {\n // filename to the pages file (live pages)\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const data = getFileContents(filename, {});\n\n // Add/update the theme based on the name\n if (name in data === false) {\n data[name] = {};\n }\n\n data[name] = obj;\n\n // write the new pages configuration back to the file\n writeFileSync(filename, JSON.stringify(data, null, 2));\n\n console.log(\"[themeController] Theme saved successfully\");\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n themes: data,\n key: name,\n theme: obj,\n success: true,\n };\n } catch (e) {\n console.error(\"[themeController] Error saving theme:\", e);\n // Return error object\n return {\n error: true,\n message: e.message,\n themes: {},\n };\n }\n },\n\n /**\n * listThemesForApplication\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id from Algolia\n */\n listThemesForApplication: (win, appId) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n\n const data = getFileContents(filename, {});\n\n console.log(\n \"[themeController] Loading themes from:\",\n filename,\n \"Found:\",\n Object.keys(data).length,\n \"themes\",\n );\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n themes: data,\n };\n } catch (e) {\n console.error(\"[themeController] Error loading themes:\", e);\n // Return error object with empty themes\n return {\n error: true,\n message: e.message,\n themes: {},\n };\n }\n },\n\n /**\n * deleteThemeForApplication\n * Delete a theme from the application's theme configuration\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {string} themeKey the key of the theme to delete\n */\n deleteThemeForApplication: (win, appId, themeKey) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const data = getFileContents(filename, {});\n\n if (themeKey in data) {\n delete data[themeKey];\n writeFileSync(filename, JSON.stringify(data, null, 2));\n }\n\n console.log(\"[themeController] Theme deleted successfully:\", themeKey);\n\n return {\n themes: data,\n success: true,\n };\n } catch (e) {\n console.error(\"[themeController] Error deleting theme:\", e);\n return {\n error: true,\n message: e.message,\n themes: {},\n };\n }\n },\n};\n\nmodule.exports = themeController;\n","/**\n * Utils/tranaform\n * Main gial is to transform a file of data into another form (CSV -> Json for example)\n *\n * - XML -> JSON\n * - CSV -> JSON\n */\n\nvar fs = require(\"fs\");\nvar readline = require(\"readline\");\nconst xtreamer = require(\"xtreamer\");\nvar xmlParser = require(\"xml2js\");\nvar JSONStream = require(\"JSONStream\");\nconst stream = require(\"stream\");\nvar csv = require(\"csv-parser\");\nconst path = require(\"path\");\nconst { app } = require(\"electron\");\nconst { ensureDirectoryExistence } = require(\"./file\");\n\nconst TRANSFORM_APP_NAME = \"Dashboard\";\nconst MAX_MAPPING_BODY_SIZE = 10240; // 10KB limit for mapping function body\n\n/**\n * XtreamerClientTransform\n * Custom Transform stream to parse the JSON from the XML to String operation\n */\nclass XtreamerClientTransform extends stream.Transform {\n _transform(value, encoding, callback) {\n this.push(JSON.parse(value));\n callback();\n }\n}\n\nclass Transform {\n constructor() {\n console.log(\"constructor\");\n }\n\n /**\n * readLinesFromFile\n *\n * If this is a json file we should check in and remove the newLines, and then\n * add commas between records potentially...\n * @param {*} win\n * @param {*} filepath\n * @param {*} linesCount\n * @param {*} callbackEvent\n * @returns\n */\n readLinesFromFile = (\n win,\n filepath,\n linesCount = 100,\n callbackEvent = null,\n ) => {\n return new Promise((resolve, reject) => {\n try {\n let count = 0;\n let lines = [];\n\n // can we aggregate potentially?\n let lineObject = [];\n\n const readInterface = readline.createInterface({\n input: fs.createReadStream(filepath),\n output: process.stdout,\n console: false,\n });\n\n readInterface.on(\"line\", function (line) {\n if (count < linesCount) {\n //console.log(line);\n lines.push(line);\n count++;\n if (callbackEvent !== null) {\n win.webContents.send(callbackEvent, {\n line,\n });\n }\n } else {\n readInterface.close();\n resolve(lines);\n }\n });\n } catch (e) {\n reject(e);\n }\n });\n };\n\n readJSONFromFile = (\n win,\n file = \"\",\n objectCount = 10,\n callbackEvent = null,\n ) => {\n return new Promise((resolve, reject) => {\n try {\n const parser = JSONStream.parse(\"*\");\n const readStream = fs.createReadStream(file).pipe(parser);\n\n let count = 0;\n\n readStream.on(\"data\", (data) => {\n //console.log(data);\n if (callbackEvent !== null) {\n win.webContents.send(callbackEvent, {\n data: JSON.stringify(data),\n });\n }\n if (objectCount !== null && count < objectCount) {\n readStream.destroy();\n resolve(\"complete\");\n }\n count++;\n });\n\n readStream.on(\"error\", (e) => {\n reject(e);\n });\n\n readStream.on(\"end\", (data) => {\n resolve(\"Complete\");\n });\n } catch (e) {\n console.log(\"read json error \", e);\n reject(e);\n }\n });\n };\n\n async parseXMLString(data) {\n let xmlText = data.toString().replace(\"\\ufeff\", \"\");\n return new Promise((resolve, reject) => {\n xmlParser\n .parseStringPromise(xmlText, {\n trim: true,\n compact: true,\n ignoreComment: true,\n ignoreDoctype: true,\n })\n .then((data) => {\n // resolve with the comma\n resolve(JSON.stringify(data) + \",\");\n })\n .catch((e) => reject(e));\n });\n }\n\n parseXMLStream = (filepath, outpath, start) => {\n return new Promise((resolve, reject) => {\n try {\n const xmlFileReadStream = fs.createReadStream(filepath);\n\n xmlFileReadStream.on(\"end\", () => {\n writeStream.write(\"\\n]\");\n resolve(\"Read End\");\n });\n\n xmlFileReadStream.on(\"finished\", () => {\n resolve(\"Read Finish\");\n });\n\n const writeStream = fs.createWriteStream(outpath);\n writeStream.write(\"[\\n\");\n\n const options = {\n headers: { Accept: \"application/xml\" },\n resolveWithFullResponse: true,\n json: false,\n simple: false,\n max_xml_size: 50000000, // 10000000\n };\n\n const xtreamerTransform = xtreamer(\n start,\n {\n transformer: this.parseXMLString, // returns Promise\n max_xml_size: 50000000,\n },\n options,\n ).on(\"error\", (e) => {\n console.log(e);\n reject(e);\n });\n\n xmlFileReadStream\n .pipe(xtreamerTransform)\n .pipe(new XtreamerClientTransform())\n .pipe(writeStream)\n .on(\"end\", () => {\n console.log(\"ended\");\n })\n .on(\"finish\", () => {\n console.log(\"finished pipe\");\n });\n } catch (e) {\n console.log(e);\n reject(e);\n }\n });\n };\n\n parseCSVStream = (\n filepath,\n outpath,\n delimiter = \",\",\n objectIdKey = null,\n headers = null, // optional array of headings to grab\n win = null,\n callbackEvent = null,\n limit = null,\n ) => {\n return new Promise((resolve, reject) => {\n try {\n const readStream = fs\n .createReadStream(filepath)\n .pipe(csv({ separator: delimiter }));\n const writeStream = fs.createWriteStream(outpath);\n\n let canParse = true;\n\n // separators for JSON\n let sep = \"\";\n let count = 0;\n writeStream.write(\"[\\n\");\n\n readStream.on(\"data\", (item) => {\n if (count > 0) {\n sep = \",\\n\";\n }\n // if we have specified a limit...\n if (limit !== null && limit <= count) {\n canParse = false;\n writeStream.write(\"]\");\n readStream.destroy();\n resolve(\"Complete\");\n }\n if (canParse === true) {\n item[\"objectID\"] = item[objectIdKey];\n writeStream.write(sep + JSON.stringify(item));\n count++;\n\n if (win !== null) {\n //console.log(\"have win\", count, callbackEvent);\n win.webContents.send(callbackEvent, {\n count,\n });\n }\n }\n });\n\n readStream.on(\"end\", () => {\n writeStream.write(\"]\");\n readStream.destroy();\n resolve(\"Complete\");\n });\n } catch (e) {\n reject(e);\n }\n });\n };\n\n /**\n * transformFileToFile\n * We want to convert a format from a file into a different format\n * based on the mapper we have provided\n *\n * @param {*} win\n * @param {*} filepath\n * @param {*} outFilepath\n * @param {*} mapping\n */\n transformFileToFile = (\n win,\n filepath,\n outFilepath,\n mappingFunctionBody,\n args = [\"refObj\", \"index\"],\n callbackEvent = null,\n ) => {\n return new Promise((resolve, reject) => {\n // Validate mappingFunctionBody is a non-empty string\n if (\n typeof mappingFunctionBody !== \"string\" ||\n !mappingFunctionBody.trim()\n ) {\n return reject(\n new Error(\"mappingFunctionBody must be a non-empty string\"),\n );\n }\n\n // Enforce size limit on mapping function body\n if (mappingFunctionBody.length > MAX_MAPPING_BODY_SIZE) {\n return reject(\n new Error(\n \"mappingFunctionBody exceeds maximum size of \" +\n MAX_MAPPING_BODY_SIZE +\n \" bytes\",\n ),\n );\n }\n\n // Validate file paths are within app data directory\n const appDataDir = path.join(app.getPath(\"userData\"), TRANSFORM_APP_NAME);\n const resolvedFilepath = path.resolve(filepath);\n const resolvedOutFilepath = path.resolve(outFilepath);\n\n if (!resolvedFilepath.startsWith(appDataDir + path.sep)) {\n return reject(\n new Error(\n \"Input file path must be within the application data directory\",\n ),\n );\n }\n if (!resolvedOutFilepath.startsWith(appDataDir + path.sep)) {\n return reject(\n new Error(\n \"Output file path must be within the application data directory\",\n ),\n );\n }\n\n // JSON parser\n var parser = JSONStream.parse(\"*\");\n\n if (fs.existsSync(resolvedFilepath)) {\n console.log(\"file exists \", resolvedFilepath);\n // create the readStream to parse the large file (json)\n var readStream = fs.createReadStream(resolvedFilepath).pipe(parser);\n\n ensureDirectoryExistence(resolvedOutFilepath);\n\n var writeStream = fs.createWriteStream(resolvedOutFilepath);\n\n let sep = \"\";\n let count = 0;\n\n // create our mapping function\n const fn = new Function(args, mappingFunctionBody);\n\n // begin the write stream\n writeStream.write(\"[\\n\");\n\n readStream.on(\"data\", (data) => {\n try {\n //console.log(\"in stream\", count, data);\n // data in this case is the JSON object...\n if (count > 0) {\n sep = \",\\n\";\n }\n\n if (data) {\n // transform the data here...\n const newValue = fn(data, count);\n\n writeStream.write(sep + JSON.stringify(newValue));\n\n if (callbackEvent !== null && win !== null) {\n win.webContents.send(callbackEvent, {\n count,\n });\n }\n\n // increment the counter\n count++;\n }\n } catch (e) {\n console.log(e.message);\n }\n });\n\n readStream.on(\"end\", (data) => {\n writeStream.write(\"\\n]\");\n writeStream.close();\n resolve(\"Complete: wrote \" + count + \" objects\");\n });\n\n readStream.on(\"error\", (err) => {\n console.log(\"read stream error transform \", err.message);\n reject(err);\n });\n } else {\n reject(new Error(\"File doesnt exist\"));\n }\n });\n };\n\n /**\n * sanitizeLine (line of file)\n * @param {String} line JSON data that we wish to sanitize\n * @returns String the sanitized String\n */\n sanitizeLine = (line) => {\n try {\n let newLine = line;\n\n if (line.slice(-1) === \",\") {\n newLine = newLine.slice(0, -1);\n }\n\n if (line.slice(0, 1) === \"[\") {\n newLine = newLine.slice(1);\n }\n\n return newLine;\n } catch (e) {\n return line;\n }\n };\n}\n\nmodule.exports = Transform;\n","/*\n\n+-----------------------------------------------------------------+\n| Created by Chirag Mehta - http://chir.ag/projects/ntc |\n|-----------------------------------------------------------------|\n| ntc js (Name that Color JavaScript) |\n+-----------------------------------------------------------------+\n\nAll the functions, code, lists etc. have been written specifically\nfor the Name that Color JavaScript by Chirag Mehta unless otherwise\nspecified.\n\nThis script is released under the: Creative Commons License:\nAttribution 2.5 http://creativecommons.org/licenses/by/2.5/\n\nSample Usage:\n\n <script type=\"text/javascript\" src=\"ntc.js\"></script>\n\n <script type=\"text/javascript\">\n\n var n_match = ntc.name(\"#6195ED\");\n n_rgb = n_match[0]; // This is the RGB value of the closest matching color\n n_name = n_match[1]; // This is the text string for the name of the match\n n_exactmatch = n_match[2]; // True if exact color match, False if close-match\n\n alert(n_match);\n\n </script>\n\n*/\n\nclass ntc {\n constructor() {\n var color, rgb, hsl;\n for (var i = 0; i < this.names.length; i++) {\n color = \"#\" + this.names[i][0];\n rgb = this.rgb(color);\n hsl = this.hsl(color);\n this.names[i].push(rgb[0], rgb[1], rgb[2], hsl[0], hsl[1], hsl[2]);\n }\n }\n\n name = function (color) {\n color = color.toUpperCase();\n if (color.length < 3 || color.length > 7)\n return [\"#000000\", \"Invalid Color: \" + color, false];\n if (color.length % 3 == 0) color = \"#\" + color;\n if (color.length == 4)\n color =\n \"#\" +\n color.substr(1, 1) +\n color.substr(1, 1) +\n color.substr(2, 1) +\n color.substr(2, 1) +\n color.substr(3, 1) +\n color.substr(3, 1);\n\n var rgb = this.rgb(color);\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2];\n var hsl = this.hsl(color);\n var h = hsl[0],\n s = hsl[1],\n l = hsl[2];\n var ndf1 = 0;\n var ndf2 = 0;\n var ndf = 0;\n var cl = -1,\n df = -1;\n\n for (var i = 0; i < this.names.length; i++) {\n if (color == \"#\" + this.names[i][0])\n return [\"#\" + this.names[i][0], this.names[i][1], true];\n\n ndf1 =\n Math.pow(r - this.names[i][2], 2) +\n Math.pow(g - this.names[i][3], 2) +\n Math.pow(b - this.names[i][4], 2);\n ndf2 =\n Math.pow(h - this.names[i][5], 2) +\n Math.pow(s - this.names[i][6], 2) +\n Math.pow(l - this.names[i][7], 2);\n ndf = ndf1 + ndf2 * 2;\n if (df < 0 || df > ndf) {\n df = ndf;\n cl = i;\n }\n }\n\n return cl < 0\n ? [\"#000000\", \"Invalid Color: \" + color, false]\n : [\"#\" + this.names[cl][0], this.names[cl][1], false];\n };\n\n // adopted from: Farbtastic 1.2\n // http://acko.net/dev/farbtastic\n hsl = function (color) {\n var rgb = [\n parseInt(\"0x\" + color.substring(1, 3)) / 255,\n parseInt(\"0x\" + color.substring(3, 5)) / 255,\n parseInt(\"0x\" + color.substring(5, 7)) / 255,\n ];\n var min, max, delta, h, s, l;\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2];\n\n min = Math.min(r, Math.min(g, b));\n max = Math.max(r, Math.max(g, b));\n delta = max - min;\n l = (min + max) / 2;\n\n s = 0;\n if (l > 0 && l < 1) s = delta / (l < 0.5 ? 2 * l : 2 - 2 * l);\n\n h = 0;\n if (delta > 0) {\n if (max == r && max != g) h += (g - b) / delta;\n if (max == g && max != b) h += 2 + (b - r) / delta;\n if (max == b && max != r) h += 4 + (r - g) / delta;\n h /= 6;\n }\n return [parseInt(h * 255), parseInt(s * 255), parseInt(l * 255)];\n };\n\n // adopted from: Farbtastic 1.2\n // http://acko.net/dev/farbtastic\n rgb = function (color) {\n return [\n parseInt(\"0x\" + color.substring(1, 3)),\n parseInt(\"0x\" + color.substring(3, 5)),\n parseInt(\"0x\" + color.substring(5, 7)),\n ];\n };\n\n names = [\n [\"000000\", \"Black\"],\n [\"000080\", \"Navy Blue\"],\n [\"0000C8\", \"Dark Blue\"],\n [\"0000FF\", \"Blue\"],\n [\"000741\", \"Stratos\"],\n [\"001B1C\", \"Swamp\"],\n [\"002387\", \"Resolution Blue\"],\n [\"002900\", \"Deep Fir\"],\n [\"002E20\", \"Burnham\"],\n [\"002FA7\", \"International Klein Blue\"],\n [\"003153\", \"Prussian Blue\"],\n [\"003366\", \"Midnight Blue\"],\n [\"003399\", \"Smalt\"],\n [\"003532\", \"Deep Teal\"],\n [\"003E40\", \"Cyprus\"],\n [\"004620\", \"Kaitoke Green\"],\n [\"0047AB\", \"Cobalt\"],\n [\"004816\", \"Crusoe\"],\n [\"004950\", \"Sherpa Blue\"],\n [\"0056A7\", \"Endeavour\"],\n [\"00581A\", \"Camarone\"],\n [\"0066CC\", \"Science Blue\"],\n [\"0066FF\", \"Blue Ribbon\"],\n [\"00755E\", \"Tropical Rain Forest\"],\n [\"0076A3\", \"Allports\"],\n [\"007BA7\", \"Deep Cerulean\"],\n [\"007EC7\", \"Lochmara\"],\n [\"007FFF\", \"Azure Radiance\"],\n [\"008080\", \"Teal\"],\n [\"0095B6\", \"Bondi Blue\"],\n [\"009DC4\", \"Pacific Blue\"],\n [\"00A693\", \"Persian Green\"],\n [\"00A86B\", \"Jade\"],\n [\"00CC99\", \"Caribbean Green\"],\n [\"00CCCC\", \"Robin's Egg Blue\"],\n [\"00FF00\", \"Green\"],\n [\"00FF7F\", \"Spring Green\"],\n [\"00FFFF\", \"Cyan / Aqua\"],\n [\"010D1A\", \"Blue Charcoal\"],\n [\"011635\", \"Midnight\"],\n [\"011D13\", \"Holly\"],\n [\"012731\", \"Daintree\"],\n [\"01361C\", \"Cardin Green\"],\n [\"01371A\", \"County Green\"],\n [\"013E62\", \"Astronaut Blue\"],\n [\"013F6A\", \"Regal Blue\"],\n [\"014B43\", \"Aqua Deep\"],\n [\"015E85\", \"Orient\"],\n [\"016162\", \"Blue Stone\"],\n [\"016D39\", \"Fun Green\"],\n [\"01796F\", \"Pine Green\"],\n [\"017987\", \"Blue Lagoon\"],\n [\"01826B\", \"Deep Sea\"],\n [\"01A368\", \"Green Haze\"],\n [\"022D15\", \"English Holly\"],\n [\"02402C\", \"Sherwood Green\"],\n [\"02478E\", \"Congress Blue\"],\n [\"024E46\", \"Evening Sea\"],\n [\"026395\", \"Bahama Blue\"],\n [\"02866F\", \"Observatory\"],\n [\"02A4D3\", \"Cerulean\"],\n [\"03163C\", \"Tangaroa\"],\n [\"032B52\", \"Green Vogue\"],\n [\"036A6E\", \"Mosque\"],\n [\"041004\", \"Midnight Moss\"],\n [\"041322\", \"Black Pearl\"],\n [\"042E4C\", \"Blue Whale\"],\n [\"044022\", \"Zuccini\"],\n [\"044259\", \"Teal Blue\"],\n [\"051040\", \"Deep Cove\"],\n [\"051657\", \"Gulf Blue\"],\n [\"055989\", \"Venice Blue\"],\n [\"056F57\", \"Watercourse\"],\n [\"062A78\", \"Catalina Blue\"],\n [\"063537\", \"Tiber\"],\n [\"069B81\", \"Gossamer\"],\n [\"06A189\", \"Niagara\"],\n [\"073A50\", \"Tarawera\"],\n [\"080110\", \"Jaguar\"],\n [\"081910\", \"Black Bean\"],\n [\"082567\", \"Deep Sapphire\"],\n [\"088370\", \"Elf Green\"],\n [\"08E8DE\", \"Bright Turquoise\"],\n [\"092256\", \"Downriver\"],\n [\"09230F\", \"Palm Green\"],\n [\"09255D\", \"Madison\"],\n [\"093624\", \"Bottle Green\"],\n [\"095859\", \"Deep Sea Green\"],\n [\"097F4B\", \"Salem\"],\n [\"0A001C\", \"Black Russian\"],\n [\"0A480D\", \"Dark Fern\"],\n [\"0A6906\", \"Japanese Laurel\"],\n [\"0A6F75\", \"Atoll\"],\n [\"0B0B0B\", \"Cod Gray\"],\n [\"0B0F08\", \"Marshland\"],\n [\"0B1107\", \"Gordons Green\"],\n [\"0B1304\", \"Black Forest\"],\n [\"0B6207\", \"San Felix\"],\n [\"0BDA51\", \"Malachite\"],\n [\"0C0B1D\", \"Ebony\"],\n [\"0C0D0F\", \"Woodsmoke\"],\n [\"0C1911\", \"Racing Green\"],\n [\"0C7A79\", \"Surfie Green\"],\n [\"0C8990\", \"Blue Chill\"],\n [\"0D0332\", \"Black Rock\"],\n [\"0D1117\", \"Bunker\"],\n [\"0D1C19\", \"Aztec\"],\n [\"0D2E1C\", \"Bush\"],\n [\"0E0E18\", \"Cinder\"],\n [\"0E2A30\", \"Firefly\"],\n [\"0F2D9E\", \"Torea Bay\"],\n [\"10121D\", \"Vulcan\"],\n [\"101405\", \"Green Waterloo\"],\n [\"105852\", \"Eden\"],\n [\"110C6C\", \"Arapawa\"],\n [\"120A8F\", \"Ultramarine\"],\n [\"123447\", \"Elephant\"],\n [\"126B40\", \"Jewel\"],\n [\"130000\", \"Diesel\"],\n [\"130A06\", \"Asphalt\"],\n [\"13264D\", \"Blue Zodiac\"],\n [\"134F19\", \"Parsley\"],\n [\"140600\", \"Nero\"],\n [\"1450AA\", \"Tory Blue\"],\n [\"151F4C\", \"Bunting\"],\n [\"1560BD\", \"Denim\"],\n [\"15736B\", \"Genoa\"],\n [\"161928\", \"Mirage\"],\n [\"161D10\", \"Hunter Green\"],\n [\"162A40\", \"Big Stone\"],\n [\"163222\", \"Celtic\"],\n [\"16322C\", \"Timber Green\"],\n [\"163531\", \"Gable Green\"],\n [\"171F04\", \"Pine Tree\"],\n [\"175579\", \"Chathams Blue\"],\n [\"182D09\", \"Deep Forest Green\"],\n [\"18587A\", \"Blumine\"],\n [\"19330E\", \"Palm Leaf\"],\n [\"193751\", \"Nile Blue\"],\n [\"1959A8\", \"Fun Blue\"],\n [\"1A1A68\", \"Lucky Point\"],\n [\"1AB385\", \"Mountain Meadow\"],\n [\"1B0245\", \"Tolopea\"],\n [\"1B1035\", \"Haiti\"],\n [\"1B127B\", \"Deep Koamaru\"],\n [\"1B1404\", \"Acadia\"],\n [\"1B2F11\", \"Seaweed\"],\n [\"1B3162\", \"Biscay\"],\n [\"1B659D\", \"Matisse\"],\n [\"1C1208\", \"Crowshead\"],\n [\"1C1E13\", \"Rangoon Green\"],\n [\"1C39BB\", \"Persian Blue\"],\n [\"1C402E\", \"Everglade\"],\n [\"1C7C7D\", \"Elm\"],\n [\"1D6142\", \"Green Pea\"],\n [\"1E0F04\", \"Creole\"],\n [\"1E1609\", \"Karaka\"],\n [\"1E1708\", \"El Paso\"],\n [\"1E385B\", \"Cello\"],\n [\"1E433C\", \"Te Papa Green\"],\n [\"1E90FF\", \"Dodger Blue\"],\n [\"1E9AB0\", \"Eastern Blue\"],\n [\"1F120F\", \"Night Rider\"],\n [\"1FC2C2\", \"Java\"],\n [\"20208D\", \"Jacksons Purple\"],\n [\"202E54\", \"Cloud Burst\"],\n [\"204852\", \"Blue Dianne\"],\n [\"211A0E\", \"Eternity\"],\n [\"220878\", \"Deep Blue\"],\n [\"228B22\", \"Forest Green\"],\n [\"233418\", \"Mallard\"],\n [\"240A40\", \"Violet\"],\n [\"240C02\", \"Kilamanjaro\"],\n [\"242A1D\", \"Log Cabin\"],\n [\"242E16\", \"Black Olive\"],\n [\"24500F\", \"Green House\"],\n [\"251607\", \"Graphite\"],\n [\"251706\", \"Cannon Black\"],\n [\"251F4F\", \"Port Gore\"],\n [\"25272C\", \"Shark\"],\n [\"25311C\", \"Green Kelp\"],\n [\"2596D1\", \"Curious Blue\"],\n [\"260368\", \"Paua\"],\n [\"26056A\", \"Paris M\"],\n [\"261105\", \"Wood Bark\"],\n [\"261414\", \"Gondola\"],\n [\"262335\", \"Steel Gray\"],\n [\"26283B\", \"Ebony Clay\"],\n [\"273A81\", \"Bay of Many\"],\n [\"27504B\", \"Plantation\"],\n [\"278A5B\", \"Eucalyptus\"],\n [\"281E15\", \"Oil\"],\n [\"283A77\", \"Astronaut\"],\n [\"286ACD\", \"Mariner\"],\n [\"290C5E\", \"Violent Violet\"],\n [\"292130\", \"Bastille\"],\n [\"292319\", \"Zeus\"],\n [\"292937\", \"Charade\"],\n [\"297B9A\", \"Jelly Bean\"],\n [\"29AB87\", \"Jungle Green\"],\n [\"2A0359\", \"Cherry Pie\"],\n [\"2A140E\", \"Coffee Bean\"],\n [\"2A2630\", \"Baltic Sea\"],\n [\"2A380B\", \"Turtle Green\"],\n [\"2A52BE\", \"Cerulean Blue\"],\n [\"2B0202\", \"Sepia Black\"],\n [\"2B194F\", \"Valhalla\"],\n [\"2B3228\", \"Heavy Metal\"],\n [\"2C0E8C\", \"Blue Gem\"],\n [\"2C1632\", \"Revolver\"],\n [\"2C2133\", \"Bleached Cedar\"],\n [\"2C8C84\", \"Lochinvar\"],\n [\"2D2510\", \"Mikado\"],\n [\"2D383A\", \"Outer Space\"],\n [\"2D569B\", \"St Tropaz\"],\n [\"2E0329\", \"Jacaranda\"],\n [\"2E1905\", \"Jacko Bean\"],\n [\"2E3222\", \"Rangitoto\"],\n [\"2E3F62\", \"Rhino\"],\n [\"2E8B57\", \"Sea Green\"],\n [\"2EBFD4\", \"Scooter\"],\n [\"2F270E\", \"Onion\"],\n [\"2F3CB3\", \"Governor Bay\"],\n [\"2F519E\", \"Sapphire\"],\n [\"2F5A57\", \"Spectra\"],\n [\"2F6168\", \"Casal\"],\n [\"300529\", \"Melanzane\"],\n [\"301F1E\", \"Cocoa Brown\"],\n [\"302A0F\", \"Woodrush\"],\n [\"304B6A\", \"San Juan\"],\n [\"30D5C8\", \"Turquoise\"],\n [\"311C17\", \"Eclipse\"],\n [\"314459\", \"Pickled Bluewood\"],\n [\"315BA1\", \"Azure\"],\n [\"31728D\", \"Calypso\"],\n [\"317D82\", \"Paradiso\"],\n [\"32127A\", \"Persian Indigo\"],\n [\"32293A\", \"Blackcurrant\"],\n [\"323232\", \"Mine Shaft\"],\n [\"325D52\", \"Stromboli\"],\n [\"327C14\", \"Bilbao\"],\n [\"327DA0\", \"Astral\"],\n [\"33036B\", \"Christalle\"],\n [\"33292F\", \"Thunder\"],\n [\"33CC99\", \"Shamrock\"],\n [\"341515\", \"Tamarind\"],\n [\"350036\", \"Mardi Gras\"],\n [\"350E42\", \"Valentino\"],\n [\"350E57\", \"Jagger\"],\n [\"353542\", \"Tuna\"],\n [\"354E8C\", \"Chambray\"],\n [\"363050\", \"Martinique\"],\n [\"363534\", \"Tuatara\"],\n [\"363C0D\", \"Waiouru\"],\n [\"36747D\", \"Ming\"],\n [\"368716\", \"La Palma\"],\n [\"370202\", \"Chocolate\"],\n [\"371D09\", \"Clinker\"],\n [\"37290E\", \"Brown Tumbleweed\"],\n [\"373021\", \"Birch\"],\n [\"377475\", \"Oracle\"],\n [\"380474\", \"Blue Diamond\"],\n [\"381A51\", \"Grape\"],\n [\"383533\", \"Dune\"],\n [\"384555\", \"Oxford Blue\"],\n [\"384910\", \"Clover\"],\n [\"394851\", \"Limed Spruce\"],\n [\"396413\", \"Dell\"],\n [\"3A0020\", \"Toledo\"],\n [\"3A2010\", \"Sambuca\"],\n [\"3A2A6A\", \"Jacarta\"],\n [\"3A686C\", \"William\"],\n [\"3A6A47\", \"Killarney\"],\n [\"3AB09E\", \"Keppel\"],\n [\"3B000B\", \"Temptress\"],\n [\"3B0910\", \"Aubergine\"],\n [\"3B1F1F\", \"Jon\"],\n [\"3B2820\", \"Treehouse\"],\n [\"3B7A57\", \"Amazon\"],\n [\"3B91B4\", \"Boston Blue\"],\n [\"3C0878\", \"Windsor\"],\n [\"3C1206\", \"Rebel\"],\n [\"3C1F76\", \"Meteorite\"],\n [\"3C2005\", \"Dark Ebony\"],\n [\"3C3910\", \"Camouflage\"],\n [\"3C4151\", \"Bright Gray\"],\n [\"3C4443\", \"Cape Cod\"],\n [\"3C493A\", \"Lunar Green\"],\n [\"3D0C02\", \"Bean \"],\n [\"3D2B1F\", \"Bistre\"],\n [\"3D7D52\", \"Goblin\"],\n [\"3E0480\", \"Kingfisher Daisy\"],\n [\"3E1C14\", \"Cedar\"],\n [\"3E2B23\", \"English Walnut\"],\n [\"3E2C1C\", \"Black Marlin\"],\n [\"3E3A44\", \"Ship Gray\"],\n [\"3EABBF\", \"Pelorous\"],\n [\"3F2109\", \"Bronze\"],\n [\"3F2500\", \"Cola\"],\n [\"3F3002\", \"Madras\"],\n [\"3F307F\", \"Minsk\"],\n [\"3F4C3A\", \"Cabbage Pont\"],\n [\"3F583B\", \"Tom Thumb\"],\n [\"3F5D53\", \"Mineral Green\"],\n [\"3FC1AA\", \"Puerto Rico\"],\n [\"3FFF00\", \"Harlequin\"],\n [\"401801\", \"Brown Pod\"],\n [\"40291D\", \"Cork\"],\n [\"403B38\", \"Masala\"],\n [\"403D19\", \"Thatch Green\"],\n [\"405169\", \"Fiord\"],\n [\"40826D\", \"Viridian\"],\n [\"40A860\", \"Chateau Green\"],\n [\"410056\", \"Ripe Plum\"],\n [\"411F10\", \"Paco\"],\n [\"412010\", \"Deep Oak\"],\n [\"413C37\", \"Merlin\"],\n [\"414257\", \"Gun Powder\"],\n [\"414C7D\", \"East Bay\"],\n [\"4169E1\", \"Royal Blue\"],\n [\"41AA78\", \"Ocean Green\"],\n [\"420303\", \"Burnt Maroon\"],\n [\"423921\", \"Lisbon Brown\"],\n [\"427977\", \"Faded Jade\"],\n [\"431560\", \"Scarlet Gum\"],\n [\"433120\", \"Iroko\"],\n [\"433E37\", \"Armadillo\"],\n [\"434C59\", \"River Bed\"],\n [\"436A0D\", \"Green Leaf\"],\n [\"44012D\", \"Barossa\"],\n [\"441D00\", \"Morocco Brown\"],\n [\"444954\", \"Mako\"],\n [\"454936\", \"Kelp\"],\n [\"456CAC\", \"San Marino\"],\n [\"45B1E8\", \"Picton Blue\"],\n [\"460B41\", \"Loulou\"],\n [\"462425\", \"Crater Brown\"],\n [\"465945\", \"Gray Asparagus\"],\n [\"4682B4\", \"Steel Blue\"],\n [\"480404\", \"Rustic Red\"],\n [\"480607\", \"Bulgarian Rose\"],\n [\"480656\", \"Clairvoyant\"],\n [\"481C1C\", \"Cocoa Bean\"],\n [\"483131\", \"Woody Brown\"],\n [\"483C32\", \"Taupe\"],\n [\"49170C\", \"Van Cleef\"],\n [\"492615\", \"Brown Derby\"],\n [\"49371B\", \"Metallic Bronze\"],\n [\"495400\", \"Verdun Green\"],\n [\"496679\", \"Blue Bayoux\"],\n [\"497183\", \"Bismark\"],\n [\"4A2A04\", \"Bracken\"],\n [\"4A3004\", \"Deep Bronze\"],\n [\"4A3C30\", \"Mondo\"],\n [\"4A4244\", \"Tundora\"],\n [\"4A444B\", \"Gravel\"],\n [\"4A4E5A\", \"Trout\"],\n [\"4B0082\", \"Pigment Indigo\"],\n [\"4B5D52\", \"Nandor\"],\n [\"4C3024\", \"Saddle\"],\n [\"4C4F56\", \"Abbey\"],\n [\"4D0135\", \"Blackberry\"],\n [\"4D0A18\", \"Cab Sav\"],\n [\"4D1E01\", \"Indian Tan\"],\n [\"4D282D\", \"Cowboy\"],\n [\"4D282E\", \"Livid Brown\"],\n [\"4D3833\", \"Rock\"],\n [\"4D3D14\", \"Punga\"],\n [\"4D400F\", \"Bronzetone\"],\n [\"4D5328\", \"Woodland\"],\n [\"4E0606\", \"Mahogany\"],\n [\"4E2A5A\", \"Bossanova\"],\n [\"4E3B41\", \"Matterhorn\"],\n [\"4E420C\", \"Bronze Olive\"],\n [\"4E4562\", \"Mulled Wine\"],\n [\"4E6649\", \"Axolotl\"],\n [\"4E7F9E\", \"Wedgewood\"],\n [\"4EABD1\", \"Shakespeare\"],\n [\"4F1C70\", \"Honey Flower\"],\n [\"4F2398\", \"Daisy Bush\"],\n [\"4F69C6\", \"Indigo\"],\n [\"4F7942\", \"Fern Green\"],\n [\"4F9D5D\", \"Fruit Salad\"],\n [\"4FA83D\", \"Apple\"],\n [\"504351\", \"Mortar\"],\n [\"507096\", \"Kashmir Blue\"],\n [\"507672\", \"Cutty Sark\"],\n [\"50C878\", \"Emerald\"],\n [\"514649\", \"Emperor\"],\n [\"516E3D\", \"Chalet Green\"],\n [\"517C66\", \"Como\"],\n [\"51808F\", \"Smalt Blue\"],\n [\"52001F\", \"Castro\"],\n [\"520C17\", \"Maroon Oak\"],\n [\"523C94\", \"Gigas\"],\n [\"533455\", \"Voodoo\"],\n [\"534491\", \"Victoria\"],\n [\"53824B\", \"Hippie Green\"],\n [\"541012\", \"Heath\"],\n [\"544333\", \"Judge Gray\"],\n [\"54534D\", \"Fuscous Gray\"],\n [\"549019\", \"Vida Loca\"],\n [\"55280C\", \"Cioccolato\"],\n [\"555B10\", \"Saratoga\"],\n [\"556D56\", \"Finlandia\"],\n [\"5590D9\", \"Havelock Blue\"],\n [\"56B4BE\", \"Fountain Blue\"],\n [\"578363\", \"Spring Leaves\"],\n [\"583401\", \"Saddle Brown\"],\n [\"585562\", \"Scarpa Flow\"],\n [\"587156\", \"Cactus\"],\n [\"589AAF\", \"Hippie Blue\"],\n [\"591D35\", \"Wine Berry\"],\n [\"592804\", \"Brown Bramble\"],\n [\"593737\", \"Congo Brown\"],\n [\"594433\", \"Millbrook\"],\n [\"5A6E9C\", \"Waikawa Gray\"],\n [\"5A87A0\", \"Horizon\"],\n [\"5B3013\", \"Jambalaya\"],\n [\"5C0120\", \"Bordeaux\"],\n [\"5C0536\", \"Mulberry Wood\"],\n [\"5C2E01\", \"Carnaby Tan\"],\n [\"5C5D75\", \"Comet\"],\n [\"5D1E0F\", \"Redwood\"],\n [\"5D4C51\", \"Don Juan\"],\n [\"5D5C58\", \"Chicago\"],\n [\"5D5E37\", \"Verdigris\"],\n [\"5D7747\", \"Dingley\"],\n [\"5DA19F\", \"Breaker Bay\"],\n [\"5E483E\", \"Kabul\"],\n [\"5E5D3B\", \"Hemlock\"],\n [\"5F3D26\", \"Irish Coffee\"],\n [\"5F5F6E\", \"Mid Gray\"],\n [\"5F6672\", \"Shuttle Gray\"],\n [\"5FA777\", \"Aqua Forest\"],\n [\"5FB3AC\", \"Tradewind\"],\n [\"604913\", \"Horses Neck\"],\n [\"605B73\", \"Smoky\"],\n [\"606E68\", \"Corduroy\"],\n [\"6093D1\", \"Danube\"],\n [\"612718\", \"Espresso\"],\n [\"614051\", \"Eggplant\"],\n [\"615D30\", \"Costa Del Sol\"],\n [\"61845F\", \"Glade Green\"],\n [\"622F30\", \"Buccaneer\"],\n [\"623F2D\", \"Quincy\"],\n [\"624E9A\", \"Butterfly Bush\"],\n [\"625119\", \"West Coast\"],\n [\"626649\", \"Finch\"],\n [\"639A8F\", \"Patina\"],\n [\"63B76C\", \"Fern\"],\n [\"6456B7\", \"Blue Violet\"],\n [\"646077\", \"Dolphin\"],\n [\"646463\", \"Storm Dust\"],\n [\"646A54\", \"Siam\"],\n [\"646E75\", \"Nevada\"],\n [\"6495ED\", \"Cornflower Blue\"],\n [\"64CCDB\", \"Viking\"],\n [\"65000B\", \"Rosewood\"],\n [\"651A14\", \"Cherrywood\"],\n [\"652DC1\", \"Purple Heart\"],\n [\"657220\", \"Fern Frond\"],\n [\"65745D\", \"Willow Grove\"],\n [\"65869F\", \"Hoki\"],\n [\"660045\", \"Pompadour\"],\n [\"660099\", \"Purple\"],\n [\"66023C\", \"Tyrian Purple\"],\n [\"661010\", \"Dark Tan\"],\n [\"66B58F\", \"Silver Tree\"],\n [\"66FF00\", \"Bright Green\"],\n [\"66FF66\", \"Screamin' Green\"],\n [\"67032D\", \"Black Rose\"],\n [\"675FA6\", \"Scampi\"],\n [\"676662\", \"Ironside Gray\"],\n [\"678975\", \"Viridian Green\"],\n [\"67A712\", \"Christi\"],\n [\"683600\", \"Nutmeg Wood Finish\"],\n [\"685558\", \"Zambezi\"],\n [\"685E6E\", \"Salt Box\"],\n [\"692545\", \"Tawny Port\"],\n [\"692D54\", \"Finn\"],\n [\"695F62\", \"Scorpion\"],\n [\"697E9A\", \"Lynch\"],\n [\"6A442E\", \"Spice\"],\n [\"6A5D1B\", \"Himalaya\"],\n [\"6A6051\", \"Soya Bean\"],\n [\"6B2A14\", \"Hairy Heath\"],\n [\"6B3FA0\", \"Royal Purple\"],\n [\"6B4E31\", \"Shingle Fawn\"],\n [\"6B5755\", \"Dorado\"],\n [\"6B8BA2\", \"Bermuda Gray\"],\n [\"6B8E23\", \"Olive Drab\"],\n [\"6C3082\", \"Eminence\"],\n [\"6CDAE7\", \"Turquoise Blue\"],\n [\"6D0101\", \"Lonestar\"],\n [\"6D5E54\", \"Pine Cone\"],\n [\"6D6C6C\", \"Dove Gray\"],\n [\"6D9292\", \"Juniper\"],\n [\"6D92A1\", \"Gothic\"],\n [\"6E0902\", \"Red Oxide\"],\n [\"6E1D14\", \"Moccaccino\"],\n [\"6E4826\", \"Pickled Bean\"],\n [\"6E4B26\", \"Dallas\"],\n [\"6E6D57\", \"Kokoda\"],\n [\"6E7783\", \"Pale Sky\"],\n [\"6F440C\", \"Cafe Royale\"],\n [\"6F6A61\", \"Flint\"],\n [\"6F8E63\", \"Highland\"],\n [\"6F9D02\", \"Limeade\"],\n [\"6FD0C5\", \"Downy\"],\n [\"701C1C\", \"Persian Plum\"],\n [\"704214\", \"Sepia\"],\n [\"704A07\", \"Antique Bronze\"],\n [\"704F50\", \"Ferra\"],\n [\"706555\", \"Coffee\"],\n [\"708090\", \"Slate Gray\"],\n [\"711A00\", \"Cedar Wood Finish\"],\n [\"71291D\", \"Metallic Copper\"],\n [\"714693\", \"Affair\"],\n [\"714AB2\", \"Studio\"],\n [\"715D47\", \"Tobacco Brown\"],\n [\"716338\", \"Yellow Metal\"],\n [\"716B56\", \"Peat\"],\n [\"716E10\", \"Olivetone\"],\n [\"717486\", \"Storm Gray\"],\n [\"718080\", \"Sirocco\"],\n [\"71D9E2\", \"Aquamarine Blue\"],\n [\"72010F\", \"Venetian Red\"],\n [\"724A2F\", \"Old Copper\"],\n [\"726D4E\", \"Go Ben\"],\n [\"727B89\", \"Raven\"],\n [\"731E8F\", \"Seance\"],\n [\"734A12\", \"Raw Umber\"],\n [\"736C9F\", \"Kimberly\"],\n [\"736D58\", \"Crocodile\"],\n [\"737829\", \"Crete\"],\n [\"738678\", \"Xanadu\"],\n [\"74640D\", \"Spicy Mustard\"],\n [\"747D63\", \"Limed Ash\"],\n [\"747D83\", \"Rolling Stone\"],\n [\"748881\", \"Blue Smoke\"],\n [\"749378\", \"Laurel\"],\n [\"74C365\", \"Mantis\"],\n [\"755A57\", \"Russett\"],\n [\"7563A8\", \"Deluge\"],\n [\"76395D\", \"Cosmic\"],\n [\"7666C6\", \"Blue Marguerite\"],\n [\"76BD17\", \"Lima\"],\n [\"76D7EA\", \"Sky Blue\"],\n [\"770F05\", \"Dark Burgundy\"],\n [\"771F1F\", \"Crown of Thorns\"],\n [\"773F1A\", \"Walnut\"],\n [\"776F61\", \"Pablo\"],\n [\"778120\", \"Pacifika\"],\n [\"779E86\", \"Oxley\"],\n [\"77DD77\", \"Pastel Green\"],\n [\"780109\", \"Japanese Maple\"],\n [\"782D19\", \"Mocha\"],\n [\"782F16\", \"Peanut\"],\n [\"78866B\", \"Camouflage Green\"],\n [\"788A25\", \"Wasabi\"],\n [\"788BBA\", \"Ship Cove\"],\n [\"78A39C\", \"Sea Nymph\"],\n [\"795D4C\", \"Roman Coffee\"],\n [\"796878\", \"Old Lavender\"],\n [\"796989\", \"Rum\"],\n [\"796A78\", \"Fedora\"],\n [\"796D62\", \"Sandstone\"],\n [\"79DEEC\", \"Spray\"],\n [\"7A013A\", \"Siren\"],\n [\"7A58C1\", \"Fuchsia Blue\"],\n [\"7A7A7A\", \"Boulder\"],\n [\"7A89B8\", \"Wild Blue Yonder\"],\n [\"7AC488\", \"De York\"],\n [\"7B3801\", \"Red Beech\"],\n [\"7B3F00\", \"Cinnamon\"],\n [\"7B6608\", \"Yukon Gold\"],\n [\"7B7874\", \"Tapa\"],\n [\"7B7C94\", \"Waterloo \"],\n [\"7B8265\", \"Flax Smoke\"],\n [\"7B9F80\", \"Amulet\"],\n [\"7BA05B\", \"Asparagus\"],\n [\"7C1C05\", \"Kenyan Copper\"],\n [\"7C7631\", \"Pesto\"],\n [\"7C778A\", \"Topaz\"],\n [\"7C7B7A\", \"Concord\"],\n [\"7C7B82\", \"Jumbo\"],\n [\"7C881A\", \"Trendy Green\"],\n [\"7CA1A6\", \"Gumbo\"],\n [\"7CB0A1\", \"Acapulco\"],\n [\"7CB7BB\", \"Neptune\"],\n [\"7D2C14\", \"Pueblo\"],\n [\"7DA98D\", \"Bay Leaf\"],\n [\"7DC8F7\", \"Malibu\"],\n [\"7DD8C6\", \"Bermuda\"],\n [\"7E3A15\", \"Copper Canyon\"],\n [\"7F1734\", \"Claret\"],\n [\"7F3A02\", \"Peru Tan\"],\n [\"7F626D\", \"Falcon\"],\n [\"7F7589\", \"Mobster\"],\n [\"7F76D3\", \"Moody Blue\"],\n [\"7FFF00\", \"Chartreuse\"],\n [\"7FFFD4\", \"Aquamarine\"],\n [\"800000\", \"Maroon\"],\n [\"800B47\", \"Rose Bud Cherry\"],\n [\"801818\", \"Falu Red\"],\n [\"80341F\", \"Red Robin\"],\n [\"803790\", \"Vivid Violet\"],\n [\"80461B\", \"Russet\"],\n [\"807E79\", \"Friar Gray\"],\n [\"808000\", \"Olive\"],\n [\"808080\", \"Gray\"],\n [\"80B3AE\", \"Gulf Stream\"],\n [\"80B3C4\", \"Glacier\"],\n [\"80CCEA\", \"Seagull\"],\n [\"81422C\", \"Nutmeg\"],\n [\"816E71\", \"Spicy Pink\"],\n [\"817377\", \"Empress\"],\n [\"819885\", \"Spanish Green\"],\n [\"826F65\", \"Sand Dune\"],\n [\"828685\", \"Gunsmoke\"],\n [\"828F72\", \"Battleship Gray\"],\n [\"831923\", \"Merlot\"],\n [\"837050\", \"Shadow\"],\n [\"83AA5D\", \"Chelsea Cucumber\"],\n [\"83D0C6\", \"Monte Carlo\"],\n [\"843179\", \"Plum\"],\n [\"84A0A0\", \"Granny Smith\"],\n [\"8581D9\", \"Chetwode Blue\"],\n [\"858470\", \"Bandicoot\"],\n [\"859FAF\", \"Bali Hai\"],\n [\"85C4CC\", \"Half Baked\"],\n [\"860111\", \"Red Devil\"],\n [\"863C3C\", \"Lotus\"],\n [\"86483C\", \"Ironstone\"],\n [\"864D1E\", \"Bull Shot\"],\n [\"86560A\", \"Rusty Nail\"],\n [\"868974\", \"Bitter\"],\n [\"86949F\", \"Regent Gray\"],\n [\"871550\", \"Disco\"],\n [\"87756E\", \"Americano\"],\n [\"877C7B\", \"Hurricane\"],\n [\"878D91\", \"Oslo Gray\"],\n [\"87AB39\", \"Sushi\"],\n [\"885342\", \"Spicy Mix\"],\n [\"886221\", \"Kumera\"],\n [\"888387\", \"Suva Gray\"],\n [\"888D65\", \"Avocado\"],\n [\"893456\", \"Camelot\"],\n [\"893843\", \"Solid Pink\"],\n [\"894367\", \"Cannon Pink\"],\n [\"897D6D\", \"Makara\"],\n [\"8A3324\", \"Burnt Umber\"],\n [\"8A73D6\", \"True V\"],\n [\"8A8360\", \"Clay Creek\"],\n [\"8A8389\", \"Monsoon\"],\n [\"8A8F8A\", \"Stack\"],\n [\"8AB9F1\", \"Jordy Blue\"],\n [\"8B00FF\", \"Electric Violet\"],\n [\"8B0723\", \"Monarch\"],\n [\"8B6B0B\", \"Corn Harvest\"],\n [\"8B8470\", \"Olive Haze\"],\n [\"8B847E\", \"Schooner\"],\n [\"8B8680\", \"Natural Gray\"],\n [\"8B9C90\", \"Mantle\"],\n [\"8B9FEE\", \"Portage\"],\n [\"8BA690\", \"Envy\"],\n [\"8BA9A5\", \"Cascade\"],\n [\"8BE6D8\", \"Riptide\"],\n [\"8C055E\", \"Cardinal Pink\"],\n [\"8C472F\", \"Mule Fawn\"],\n [\"8C5738\", \"Potters Clay\"],\n [\"8C6495\", \"Trendy Pink\"],\n [\"8D0226\", \"Paprika\"],\n [\"8D3D38\", \"Sanguine Brown\"],\n [\"8D3F3F\", \"Tosca\"],\n [\"8D7662\", \"Cement\"],\n [\"8D8974\", \"Granite Green\"],\n [\"8D90A1\", \"Manatee\"],\n [\"8DA8CC\", \"Polo Blue\"],\n [\"8E0000\", \"Red Berry\"],\n [\"8E4D1E\", \"Rope\"],\n [\"8E6F70\", \"Opium\"],\n [\"8E775E\", \"Domino\"],\n [\"8E8190\", \"Mamba\"],\n [\"8EABC1\", \"Nepal\"],\n [\"8F021C\", \"Pohutukawa\"],\n [\"8F3E33\", \"El Salva\"],\n [\"8F4B0E\", \"Korma\"],\n [\"8F8176\", \"Squirrel\"],\n [\"8FD6B4\", \"Vista Blue\"],\n [\"900020\", \"Burgundy\"],\n [\"901E1E\", \"Old Brick\"],\n [\"907874\", \"Hemp\"],\n [\"907B71\", \"Almond Frost\"],\n [\"908D39\", \"Sycamore\"],\n [\"92000A\", \"Sangria\"],\n [\"924321\", \"Cumin\"],\n [\"926F5B\", \"Beaver\"],\n [\"928573\", \"Stonewall\"],\n [\"928590\", \"Venus\"],\n [\"9370DB\", \"Medium Purple\"],\n [\"93CCEA\", \"Cornflower\"],\n [\"93DFB8\", \"Algae Green\"],\n [\"944747\", \"Copper Rust\"],\n [\"948771\", \"Arrowtown\"],\n [\"950015\", \"Scarlett\"],\n [\"956387\", \"Strikemaster\"],\n [\"959396\", \"Mountain Mist\"],\n [\"960018\", \"Carmine\"],\n [\"964B00\", \"Brown\"],\n [\"967059\", \"Leather\"],\n [\"9678B6\", \"Purple Mountain's Majesty\"],\n [\"967BB6\", \"Lavender Purple\"],\n [\"96A8A1\", \"Pewter\"],\n [\"96BBAB\", \"Summer Green\"],\n [\"97605D\", \"Au Chico\"],\n [\"9771B5\", \"Wisteria\"],\n [\"97CD2D\", \"Atlantis\"],\n [\"983D61\", \"Vin Rouge\"],\n [\"9874D3\", \"Lilac Bush\"],\n [\"98777B\", \"Bazaar\"],\n [\"98811B\", \"Hacienda\"],\n [\"988D77\", \"Pale Oyster\"],\n [\"98FF98\", \"Mint Green\"],\n [\"990066\", \"Fresh Eggplant\"],\n [\"991199\", \"Violet Eggplant\"],\n [\"991613\", \"Tamarillo\"],\n [\"991B07\", \"Totem Pole\"],\n [\"996666\", \"Copper Rose\"],\n [\"9966CC\", \"Amethyst\"],\n [\"997A8D\", \"Mountbatten Pink\"],\n [\"9999CC\", \"Blue Bell\"],\n [\"9A3820\", \"Prairie Sand\"],\n [\"9A6E61\", \"Toast\"],\n [\"9A9577\", \"Gurkha\"],\n [\"9AB973\", \"Olivine\"],\n [\"9AC2B8\", \"Shadow Green\"],\n [\"9B4703\", \"Oregon\"],\n [\"9B9E8F\", \"Lemon Grass\"],\n [\"9C3336\", \"Stiletto\"],\n [\"9D5616\", \"Hawaiian Tan\"],\n [\"9DACB7\", \"Gull Gray\"],\n [\"9DC209\", \"Pistachio\"],\n [\"9DE093\", \"Granny Smith Apple\"],\n [\"9DE5FF\", \"Anakiwa\"],\n [\"9E5302\", \"Chelsea Gem\"],\n [\"9E5B40\", \"Sepia Skin\"],\n [\"9EA587\", \"Sage\"],\n [\"9EA91F\", \"Citron\"],\n [\"9EB1CD\", \"Rock Blue\"],\n [\"9EDEE0\", \"Morning Glory\"],\n [\"9F381D\", \"Cognac\"],\n [\"9F821C\", \"Reef Gold\"],\n [\"9F9F9C\", \"Star Dust\"],\n [\"9FA0B1\", \"Santas Gray\"],\n [\"9FD7D3\", \"Sinbad\"],\n [\"9FDD8C\", \"Feijoa\"],\n [\"A02712\", \"Tabasco\"],\n [\"A1750D\", \"Buttered Rum\"],\n [\"A1ADB5\", \"Hit Gray\"],\n [\"A1C50A\", \"Citrus\"],\n [\"A1DAD7\", \"Aqua Island\"],\n [\"A1E9DE\", \"Water Leaf\"],\n [\"A2006D\", \"Flirt\"],\n [\"A23B6C\", \"Rouge\"],\n [\"A26645\", \"Cape Palliser\"],\n [\"A2AAB3\", \"Gray Chateau\"],\n [\"A2AEAB\", \"Edward\"],\n [\"A3807B\", \"Pharlap\"],\n [\"A397B4\", \"Amethyst Smoke\"],\n [\"A3E3ED\", \"Blizzard Blue\"],\n [\"A4A49D\", \"Delta\"],\n [\"A4A6D3\", \"Wistful\"],\n [\"A4AF6E\", \"Green Smoke\"],\n [\"A50B5E\", \"Jazzberry Jam\"],\n [\"A59B91\", \"Zorba\"],\n [\"A5CB0C\", \"Bahia\"],\n [\"A62F20\", \"Roof Terracotta\"],\n [\"A65529\", \"Paarl\"],\n [\"A68B5B\", \"Barley Corn\"],\n [\"A69279\", \"Donkey Brown\"],\n [\"A6A29A\", \"Dawn\"],\n [\"A72525\", \"Mexican Red\"],\n [\"A7882C\", \"Luxor Gold\"],\n [\"A85307\", \"Rich Gold\"],\n [\"A86515\", \"Reno Sand\"],\n [\"A86B6B\", \"Coral Tree\"],\n [\"A8989B\", \"Dusty Gray\"],\n [\"A899E6\", \"Dull Lavender\"],\n [\"A8A589\", \"Tallow\"],\n [\"A8AE9C\", \"Bud\"],\n [\"A8AF8E\", \"Locust\"],\n [\"A8BD9F\", \"Norway\"],\n [\"A8E3BD\", \"Chinook\"],\n [\"A9A491\", \"Gray Olive\"],\n [\"A9ACB6\", \"Aluminium\"],\n [\"A9B2C3\", \"Cadet Blue\"],\n [\"A9B497\", \"Schist\"],\n [\"A9BDBF\", \"Tower Gray\"],\n [\"A9BEF2\", \"Perano\"],\n [\"A9C6C2\", \"Opal\"],\n [\"AA375A\", \"Night Shadz\"],\n [\"AA4203\", \"Fire\"],\n [\"AA8B5B\", \"Muesli\"],\n [\"AA8D6F\", \"Sandal\"],\n [\"AAA5A9\", \"Shady Lady\"],\n [\"AAA9CD\", \"Logan\"],\n [\"AAABB7\", \"Spun Pearl\"],\n [\"AAD6E6\", \"Regent St Blue\"],\n [\"AAF0D1\", \"Magic Mint\"],\n [\"AB0563\", \"Lipstick\"],\n [\"AB3472\", \"Royal Heath\"],\n [\"AB917A\", \"Sandrift\"],\n [\"ABA0D9\", \"Cold Purple\"],\n [\"ABA196\", \"Bronco\"],\n [\"AC8A56\", \"Limed Oak\"],\n [\"AC91CE\", \"East Side\"],\n [\"AC9E22\", \"Lemon Ginger\"],\n [\"ACA494\", \"Napa\"],\n [\"ACA586\", \"Hillary\"],\n [\"ACA59F\", \"Cloudy\"],\n [\"ACACAC\", \"Silver Chalice\"],\n [\"ACB78E\", \"Swamp Green\"],\n [\"ACCBB1\", \"Spring Rain\"],\n [\"ACDD4D\", \"Conifer\"],\n [\"ACE1AF\", \"Celadon\"],\n [\"AD781B\", \"Mandalay\"],\n [\"ADBED1\", \"Casper\"],\n [\"ADDFAD\", \"Moss Green\"],\n [\"ADE6C4\", \"Padua\"],\n [\"ADFF2F\", \"Green Yellow\"],\n [\"AE4560\", \"Hippie Pink\"],\n [\"AE6020\", \"Desert\"],\n [\"AE809E\", \"Bouquet\"],\n [\"AF4035\", \"Medium Carmine\"],\n [\"AF4D43\", \"Apple Blossom\"],\n [\"AF593E\", \"Brown Rust\"],\n [\"AF8751\", \"Driftwood\"],\n [\"AF8F2C\", \"Alpine\"],\n [\"AF9F1C\", \"Lucky\"],\n [\"AFA09E\", \"Martini\"],\n [\"AFB1B8\", \"Bombay\"],\n [\"AFBDD9\", \"Pigeon Post\"],\n [\"B04C6A\", \"Cadillac\"],\n [\"B05D54\", \"Matrix\"],\n [\"B05E81\", \"Tapestry\"],\n [\"B06608\", \"Mai Tai\"],\n [\"B09A95\", \"Del Rio\"],\n [\"B0E0E6\", \"Powder Blue\"],\n [\"B0E313\", \"Inch Worm\"],\n [\"B10000\", \"Bright Red\"],\n [\"B14A0B\", \"Vesuvius\"],\n [\"B1610B\", \"Pumpkin Skin\"],\n [\"B16D52\", \"Santa Fe\"],\n [\"B19461\", \"Teak\"],\n [\"B1E2C1\", \"Fringy Flower\"],\n [\"B1F4E7\", \"Ice Cold\"],\n [\"B20931\", \"Shiraz\"],\n [\"B2A1EA\", \"Biloba Flower\"],\n [\"B32D29\", \"Tall Poppy\"],\n [\"B35213\", \"Fiery Orange\"],\n [\"B38007\", \"Hot Toddy\"],\n [\"B3AF95\", \"Taupe Gray\"],\n [\"B3C110\", \"La Rioja\"],\n [\"B43332\", \"Well Read\"],\n [\"B44668\", \"Blush\"],\n [\"B4CFD3\", \"Jungle Mist\"],\n [\"B57281\", \"Turkish Rose\"],\n [\"B57EDC\", \"Lavender\"],\n [\"B5A27F\", \"Mongoose\"],\n [\"B5B35C\", \"Olive Green\"],\n [\"B5D2CE\", \"Jet Stream\"],\n [\"B5ECDF\", \"Cruise\"],\n [\"B6316C\", \"Hibiscus\"],\n [\"B69D98\", \"Thatch\"],\n [\"B6B095\", \"Heathered Gray\"],\n [\"B6BAA4\", \"Eagle\"],\n [\"B6D1EA\", \"Spindle\"],\n [\"B6D3BF\", \"Gum Leaf\"],\n [\"B7410E\", \"Rust\"],\n [\"B78E5C\", \"Muddy Waters\"],\n [\"B7A214\", \"Sahara\"],\n [\"B7A458\", \"Husk\"],\n [\"B7B1B1\", \"Nobel\"],\n [\"B7C3D0\", \"Heather\"],\n [\"B7F0BE\", \"Madang\"],\n [\"B81104\", \"Milano Red\"],\n [\"B87333\", \"Copper\"],\n [\"B8B56A\", \"Gimblet\"],\n [\"B8C1B1\", \"Green Spring\"],\n [\"B8C25D\", \"Celery\"],\n [\"B8E0F9\", \"Sail\"],\n [\"B94E48\", \"Chestnut\"],\n [\"B95140\", \"Crail\"],\n [\"B98D28\", \"Marigold\"],\n [\"B9C46A\", \"Wild Willow\"],\n [\"B9C8AC\", \"Rainee\"],\n [\"BA0101\", \"Guardsman Red\"],\n [\"BA450C\", \"Rock Spray\"],\n [\"BA6F1E\", \"Bourbon\"],\n [\"BA7F03\", \"Pirate Gold\"],\n [\"BAB1A2\", \"Nomad\"],\n [\"BAC7C9\", \"Submarine\"],\n [\"BAEEF9\", \"Charlotte\"],\n [\"BB3385\", \"Medium Red Violet\"],\n [\"BB8983\", \"Brandy Rose\"],\n [\"BBD009\", \"Rio Grande\"],\n [\"BBD7C1\", \"Surf\"],\n [\"BCC9C2\", \"Powder Ash\"],\n [\"BD5E2E\", \"Tuscany\"],\n [\"BD978E\", \"Quicksand\"],\n [\"BDB1A8\", \"Silk\"],\n [\"BDB2A1\", \"Malta\"],\n [\"BDB3C7\", \"Chatelle\"],\n [\"BDBBD7\", \"Lavender Gray\"],\n [\"BDBDC6\", \"French Gray\"],\n [\"BDC8B3\", \"Clay Ash\"],\n [\"BDC9CE\", \"Loblolly\"],\n [\"BDEDFD\", \"French Pass\"],\n [\"BEA6C3\", \"London Hue\"],\n [\"BEB5B7\", \"Pink Swan\"],\n [\"BEDE0D\", \"Fuego\"],\n [\"BF5500\", \"Rose of Sharon\"],\n [\"BFB8B0\", \"Tide\"],\n [\"BFBED8\", \"Blue Haze\"],\n [\"BFC1C2\", \"Silver Sand\"],\n [\"BFC921\", \"Key Lime Pie\"],\n [\"BFDBE2\", \"Ziggurat\"],\n [\"BFFF00\", \"Lime\"],\n [\"C02B18\", \"Thunderbird\"],\n [\"C04737\", \"Mojo\"],\n [\"C08081\", \"Old Rose\"],\n [\"C0C0C0\", \"Silver\"],\n [\"C0D3B9\", \"Pale Leaf\"],\n [\"C0D8B6\", \"Pixie Green\"],\n [\"C1440E\", \"Tia Maria\"],\n [\"C154C1\", \"Fuchsia Pink\"],\n [\"C1A004\", \"Buddha Gold\"],\n [\"C1B7A4\", \"Bison Hide\"],\n [\"C1BAB0\", \"Tea\"],\n [\"C1BECD\", \"Gray Suit\"],\n [\"C1D7B0\", \"Sprout\"],\n [\"C1F07C\", \"Sulu\"],\n [\"C26B03\", \"Indochine\"],\n [\"C2955D\", \"Twine\"],\n [\"C2BDB6\", \"Cotton Seed\"],\n [\"C2CAC4\", \"Pumice\"],\n [\"C2E8E5\", \"Jagged Ice\"],\n [\"C32148\", \"Maroon Flush\"],\n [\"C3B091\", \"Indian Khaki\"],\n [\"C3BFC1\", \"Pale Slate\"],\n [\"C3C3BD\", \"Gray Nickel\"],\n [\"C3CDE6\", \"Periwinkle Gray\"],\n [\"C3D1D1\", \"Tiara\"],\n [\"C3DDF9\", \"Tropical Blue\"],\n [\"C41E3A\", \"Cardinal\"],\n [\"C45655\", \"Fuzzy Wuzzy Brown\"],\n [\"C45719\", \"Orange Roughy\"],\n [\"C4C4BC\", \"Mist Gray\"],\n [\"C4D0B0\", \"Coriander\"],\n [\"C4F4EB\", \"Mint Tulip\"],\n [\"C54B8C\", \"Mulberry\"],\n [\"C59922\", \"Nugget\"],\n [\"C5994B\", \"Tussock\"],\n [\"C5DBCA\", \"Sea Mist\"],\n [\"C5E17A\", \"Yellow Green\"],\n [\"C62D42\", \"Brick Red\"],\n [\"C6726B\", \"Contessa\"],\n [\"C69191\", \"Oriental Pink\"],\n [\"C6A84B\", \"Roti\"],\n [\"C6C3B5\", \"Ash\"],\n [\"C6C8BD\", \"Kangaroo\"],\n [\"C6E610\", \"Las Palmas\"],\n [\"C7031E\", \"Monza\"],\n [\"C71585\", \"Red Violet\"],\n [\"C7BCA2\", \"Coral Reef\"],\n [\"C7C1FF\", \"Melrose\"],\n [\"C7C4BF\", \"Cloud\"],\n [\"C7C9D5\", \"Ghost\"],\n [\"C7CD90\", \"Pine Glade\"],\n [\"C7DDE5\", \"Botticelli\"],\n [\"C88A65\", \"Antique Brass\"],\n [\"C8A2C8\", \"Lilac\"],\n [\"C8A528\", \"Hokey Pokey\"],\n [\"C8AABF\", \"Lily\"],\n [\"C8B568\", \"Laser\"],\n [\"C8E3D7\", \"Edgewater\"],\n [\"C96323\", \"Piper\"],\n [\"C99415\", \"Pizza\"],\n [\"C9A0DC\", \"Light Wisteria\"],\n [\"C9B29B\", \"Rodeo Dust\"],\n [\"C9B35B\", \"Sundance\"],\n [\"C9B93B\", \"Earls Green\"],\n [\"C9C0BB\", \"Silver Rust\"],\n [\"C9D9D2\", \"Conch\"],\n [\"C9FFA2\", \"Reef\"],\n [\"C9FFE5\", \"Aero Blue\"],\n [\"CA3435\", \"Flush Mahogany\"],\n [\"CABB48\", \"Turmeric\"],\n [\"CADCD4\", \"Paris White\"],\n [\"CAE00D\", \"Bitter Lemon\"],\n [\"CAE6DA\", \"Skeptic\"],\n [\"CB8FA9\", \"Viola\"],\n [\"CBCAB6\", \"Foggy Gray\"],\n [\"CBD3B0\", \"Green Mist\"],\n [\"CBDBD6\", \"Nebula\"],\n [\"CC3333\", \"Persian Red\"],\n [\"CC5500\", \"Burnt Orange\"],\n [\"CC7722\", \"Ochre\"],\n [\"CC8899\", \"Puce\"],\n [\"CCCAA8\", \"Thistle Green\"],\n [\"CCCCFF\", \"Periwinkle\"],\n [\"CCFF00\", \"Electric Lime\"],\n [\"CD5700\", \"Tenn\"],\n [\"CD5C5C\", \"Chestnut Rose\"],\n [\"CD8429\", \"Brandy Punch\"],\n [\"CDF4FF\", \"Onahau\"],\n [\"CEB98F\", \"Sorrell Brown\"],\n [\"CEBABA\", \"Cold Turkey\"],\n [\"CEC291\", \"Yuma\"],\n [\"CEC7A7\", \"Chino\"],\n [\"CFA39D\", \"Eunry\"],\n [\"CFB53B\", \"Old Gold\"],\n [\"CFDCCF\", \"Tasman\"],\n [\"CFE5D2\", \"Surf Crest\"],\n [\"CFF9F3\", \"Humming Bird\"],\n [\"CFFAF4\", \"Scandal\"],\n [\"D05F04\", \"Red Stage\"],\n [\"D06DA1\", \"Hopbush\"],\n [\"D07D12\", \"Meteor\"],\n [\"D0BEF8\", \"Perfume\"],\n [\"D0C0E5\", \"Prelude\"],\n [\"D0F0C0\", \"Tea Green\"],\n [\"D18F1B\", \"Geebung\"],\n [\"D1BEA8\", \"Vanilla\"],\n [\"D1C6B4\", \"Soft Amber\"],\n [\"D1D2CA\", \"Celeste\"],\n [\"D1D2DD\", \"Mischka\"],\n [\"D1E231\", \"Pear\"],\n [\"D2691E\", \"Hot Cinnamon\"],\n [\"D27D46\", \"Raw Sienna\"],\n [\"D29EAA\", \"Careys Pink\"],\n [\"D2B48C\", \"Tan\"],\n [\"D2DA97\", \"Deco\"],\n [\"D2F6DE\", \"Blue Romance\"],\n [\"D2F8B0\", \"Gossip\"],\n [\"D3CBBA\", \"Sisal\"],\n [\"D3CDC5\", \"Swirl\"],\n [\"D47494\", \"Charm\"],\n [\"D4B6AF\", \"Clam Shell\"],\n [\"D4BF8D\", \"Straw\"],\n [\"D4C4A8\", \"Akaroa\"],\n [\"D4CD16\", \"Bird Flower\"],\n [\"D4D7D9\", \"Iron\"],\n [\"D4DFE2\", \"Geyser\"],\n [\"D4E2FC\", \"Hawkes Blue\"],\n [\"D54600\", \"Grenadier\"],\n [\"D591A4\", \"Can Can\"],\n [\"D59A6F\", \"Whiskey\"],\n [\"D5D195\", \"Winter Hazel\"],\n [\"D5F6E3\", \"Granny Apple\"],\n [\"D69188\", \"My Pink\"],\n [\"D6C562\", \"Tacha\"],\n [\"D6CEF6\", \"Moon Raker\"],\n [\"D6D6D1\", \"Quill Gray\"],\n [\"D6FFDB\", \"Snowy Mint\"],\n [\"D7837F\", \"New York Pink\"],\n [\"D7C498\", \"Pavlova\"],\n [\"D7D0FF\", \"Fog\"],\n [\"D84437\", \"Valencia\"],\n [\"D87C63\", \"Japonica\"],\n [\"D8BFD8\", \"Thistle\"],\n [\"D8C2D5\", \"Maverick\"],\n [\"D8FCFA\", \"Foam\"],\n [\"D94972\", \"Cabaret\"],\n [\"D99376\", \"Burning Sand\"],\n [\"D9B99B\", \"Cameo\"],\n [\"D9D6CF\", \"Timberwolf\"],\n [\"D9DCC1\", \"Tana\"],\n [\"D9E4F5\", \"Link Water\"],\n [\"D9F7FF\", \"Mabel\"],\n [\"DA3287\", \"Cerise\"],\n [\"DA5B38\", \"Flame Pea\"],\n [\"DA6304\", \"Bamboo\"],\n [\"DA6A41\", \"Red Damask\"],\n [\"DA70D6\", \"Orchid\"],\n [\"DA8A67\", \"Copperfield\"],\n [\"DAA520\", \"Golden Grass\"],\n [\"DAECD6\", \"Zanah\"],\n [\"DAF4F0\", \"Iceberg\"],\n [\"DAFAFF\", \"Oyster Bay\"],\n [\"DB5079\", \"Cranberry\"],\n [\"DB9690\", \"Petite Orchid\"],\n [\"DB995E\", \"Di Serria\"],\n [\"DBDBDB\", \"Alto\"],\n [\"DBFFF8\", \"Frosted Mint\"],\n [\"DC143C\", \"Crimson\"],\n [\"DC4333\", \"Punch\"],\n [\"DCB20C\", \"Galliano\"],\n [\"DCB4BC\", \"Blossom\"],\n [\"DCD747\", \"Wattle\"],\n [\"DCD9D2\", \"Westar\"],\n [\"DCDDCC\", \"Moon Mist\"],\n [\"DCEDB4\", \"Caper\"],\n [\"DCF0EA\", \"Swans Down\"],\n [\"DDD6D5\", \"Swiss Coffee\"],\n [\"DDF9F1\", \"White Ice\"],\n [\"DE3163\", \"Cerise Red\"],\n [\"DE6360\", \"Roman\"],\n [\"DEA681\", \"Tumbleweed\"],\n [\"DEBA13\", \"Gold Tips\"],\n [\"DEC196\", \"Brandy\"],\n [\"DECBC6\", \"Wafer\"],\n [\"DED4A4\", \"Sapling\"],\n [\"DED717\", \"Barberry\"],\n [\"DEE5C0\", \"Beryl Green\"],\n [\"DEF5FF\", \"Pattens Blue\"],\n [\"DF73FF\", \"Heliotrope\"],\n [\"DFBE6F\", \"Apache\"],\n [\"DFCD6F\", \"Chenin\"],\n [\"DFCFDB\", \"Lola\"],\n [\"DFECDA\", \"Willow Brook\"],\n [\"DFFF00\", \"Chartreuse Yellow\"],\n [\"E0B0FF\", \"Mauve\"],\n [\"E0B646\", \"Anzac\"],\n [\"E0B974\", \"Harvest Gold\"],\n [\"E0C095\", \"Calico\"],\n [\"E0FFFF\", \"Baby Blue\"],\n [\"E16865\", \"Sunglo\"],\n [\"E1BC64\", \"Equator\"],\n [\"E1C0C8\", \"Pink Flare\"],\n [\"E1E6D6\", \"Periglacial Blue\"],\n [\"E1EAD4\", \"Kidnapper\"],\n [\"E1F6E8\", \"Tara\"],\n [\"E25465\", \"Mandy\"],\n [\"E2725B\", \"Terracotta\"],\n [\"E28913\", \"Golden Bell\"],\n [\"E292C0\", \"Shocking\"],\n [\"E29418\", \"Dixie\"],\n [\"E29CD2\", \"Light Orchid\"],\n [\"E2D8ED\", \"Snuff\"],\n [\"E2EBED\", \"Mystic\"],\n [\"E2F3EC\", \"Apple Green\"],\n [\"E30B5C\", \"Razzmatazz\"],\n [\"E32636\", \"Alizarin Crimson\"],\n [\"E34234\", \"Cinnabar\"],\n [\"E3BEBE\", \"Cavern Pink\"],\n [\"E3F5E1\", \"Peppermint\"],\n [\"E3F988\", \"Mindaro\"],\n [\"E47698\", \"Deep Blush\"],\n [\"E49B0F\", \"Gamboge\"],\n [\"E4C2D5\", \"Melanie\"],\n [\"E4CFDE\", \"Twilight\"],\n [\"E4D1C0\", \"Bone\"],\n [\"E4D422\", \"Sunflower\"],\n [\"E4D5B7\", \"Grain Brown\"],\n [\"E4D69B\", \"Zombie\"],\n [\"E4F6E7\", \"Frostee\"],\n [\"E4FFD1\", \"Snow Flurry\"],\n [\"E52B50\", \"Amaranth\"],\n [\"E5841B\", \"Zest\"],\n [\"E5CCC9\", \"Dust Storm\"],\n [\"E5D7BD\", \"Stark White\"],\n [\"E5D8AF\", \"Hampton\"],\n [\"E5E0E1\", \"Bon Jour\"],\n [\"E5E5E5\", \"Mercury\"],\n [\"E5F9F6\", \"Polar\"],\n [\"E64E03\", \"Trinidad\"],\n [\"E6BE8A\", \"Gold Sand\"],\n [\"E6BEA5\", \"Cashmere\"],\n [\"E6D7B9\", \"Double Spanish White\"],\n [\"E6E4D4\", \"Satin Linen\"],\n [\"E6F2EA\", \"Harp\"],\n [\"E6F8F3\", \"Off Green\"],\n [\"E6FFE9\", \"Hint of Green\"],\n [\"E6FFFF\", \"Tranquil\"],\n [\"E77200\", \"Mango Tango\"],\n [\"E7730A\", \"Christine\"],\n [\"E79F8C\", \"Tonys Pink\"],\n [\"E79FC4\", \"Kobi\"],\n [\"E7BCB4\", \"Rose Fog\"],\n [\"E7BF05\", \"Corn\"],\n [\"E7CD8C\", \"Putty\"],\n [\"E7ECE6\", \"Gray Nurse\"],\n [\"E7F8FF\", \"Lily White\"],\n [\"E7FEFF\", \"Bubbles\"],\n [\"E89928\", \"Fire Bush\"],\n [\"E8B9B3\", \"Shilo\"],\n [\"E8E0D5\", \"Pearl Bush\"],\n [\"E8EBE0\", \"Green White\"],\n [\"E8F1D4\", \"Chrome White\"],\n [\"E8F2EB\", \"Gin\"],\n [\"E8F5F2\", \"Aqua Squeeze\"],\n [\"E96E00\", \"Clementine\"],\n [\"E97451\", \"Burnt Sienna\"],\n [\"E97C07\", \"Tahiti Gold\"],\n [\"E9CECD\", \"Oyster Pink\"],\n [\"E9D75A\", \"Confetti\"],\n [\"E9E3E3\", \"Ebb\"],\n [\"E9F8ED\", \"Ottoman\"],\n [\"E9FFFD\", \"Clear Day\"],\n [\"EA88A8\", \"Carissma\"],\n [\"EAAE69\", \"Porsche\"],\n [\"EAB33B\", \"Tulip Tree\"],\n [\"EAC674\", \"Rob Roy\"],\n [\"EADAB8\", \"Raffia\"],\n [\"EAE8D4\", \"White Rock\"],\n [\"EAF6EE\", \"Panache\"],\n [\"EAF6FF\", \"Solitude\"],\n [\"EAF9F5\", \"Aqua Spring\"],\n [\"EAFFFE\", \"Dew\"],\n [\"EB9373\", \"Apricot\"],\n [\"EBC2AF\", \"Zinnwaldite\"],\n [\"ECA927\", \"Fuel Yellow\"],\n [\"ECC54E\", \"Ronchi\"],\n [\"ECC7EE\", \"French Lilac\"],\n [\"ECCDB9\", \"Just Right\"],\n [\"ECE090\", \"Wild Rice\"],\n [\"ECEBBD\", \"Fall Green\"],\n [\"ECEBCE\", \"Aths Special\"],\n [\"ECF245\", \"Starship\"],\n [\"ED0A3F\", \"Red Ribbon\"],\n [\"ED7A1C\", \"Tango\"],\n [\"ED9121\", \"Carrot Orange\"],\n [\"ED989E\", \"Sea Pink\"],\n [\"EDB381\", \"Tacao\"],\n [\"EDC9AF\", \"Desert Sand\"],\n [\"EDCDAB\", \"Pancho\"],\n [\"EDDCB1\", \"Chamois\"],\n [\"EDEA99\", \"Primrose\"],\n [\"EDF5DD\", \"Frost\"],\n [\"EDF5F5\", \"Aqua Haze\"],\n [\"EDF6FF\", \"Zumthor\"],\n [\"EDF9F1\", \"Narvik\"],\n [\"EDFC84\", \"Honeysuckle\"],\n [\"EE82EE\", \"Lavender Magenta\"],\n [\"EEC1BE\", \"Beauty Bush\"],\n [\"EED794\", \"Chalky\"],\n [\"EED9C4\", \"Almond\"],\n [\"EEDC82\", \"Flax\"],\n [\"EEDEDA\", \"Bizarre\"],\n [\"EEE3AD\", \"Double Colonial White\"],\n [\"EEEEE8\", \"Cararra\"],\n [\"EEEF78\", \"Manz\"],\n [\"EEF0C8\", \"Tahuna Sands\"],\n [\"EEF0F3\", \"Athens Gray\"],\n [\"EEF3C3\", \"Tusk\"],\n [\"EEF4DE\", \"Loafer\"],\n [\"EEF6F7\", \"Catskill White\"],\n [\"EEFDFF\", \"Twilight Blue\"],\n [\"EEFF9A\", \"Jonquil\"],\n [\"EEFFE2\", \"Rice Flower\"],\n [\"EF863F\", \"Jaffa\"],\n [\"EFEFEF\", \"Gallery\"],\n [\"EFF2F3\", \"Porcelain\"],\n [\"F091A9\", \"Mauvelous\"],\n [\"F0D52D\", \"Golden Dream\"],\n [\"F0DB7D\", \"Golden Sand\"],\n [\"F0DC82\", \"Buff\"],\n [\"F0E2EC\", \"Prim\"],\n [\"F0E68C\", \"Khaki\"],\n [\"F0EEFD\", \"Selago\"],\n [\"F0EEFF\", \"Titan White\"],\n [\"F0F8FF\", \"Alice Blue\"],\n [\"F0FCEA\", \"Feta\"],\n [\"F18200\", \"Gold Drop\"],\n [\"F19BAB\", \"Wewak\"],\n [\"F1E788\", \"Sahara Sand\"],\n [\"F1E9D2\", \"Parchment\"],\n [\"F1E9FF\", \"Blue Chalk\"],\n [\"F1EEC1\", \"Mint Julep\"],\n [\"F1F1F1\", \"Seashell\"],\n [\"F1F7F2\", \"Saltpan\"],\n [\"F1FFAD\", \"Tidal\"],\n [\"F1FFC8\", \"Chiffon\"],\n [\"F2552A\", \"Flamingo\"],\n [\"F28500\", \"Tangerine\"],\n [\"F2C3B2\", \"Mandys Pink\"],\n [\"F2F2F2\", \"Concrete\"],\n [\"F2FAFA\", \"Black Squeeze\"],\n [\"F34723\", \"Pomegranate\"],\n [\"F3AD16\", \"Buttercup\"],\n [\"F3D69D\", \"New Orleans\"],\n [\"F3D9DF\", \"Vanilla Ice\"],\n [\"F3E7BB\", \"Sidecar\"],\n [\"F3E9E5\", \"Dawn Pink\"],\n [\"F3EDCF\", \"Wheatfield\"],\n [\"F3FB62\", \"Canary\"],\n [\"F3FBD4\", \"Orinoco\"],\n [\"F3FFD8\", \"Carla\"],\n [\"F400A1\", \"Hollywood Cerise\"],\n [\"F4A460\", \"Sandy brown\"],\n [\"F4C430\", \"Saffron\"],\n [\"F4D81C\", \"Ripe Lemon\"],\n [\"F4EBD3\", \"Janna\"],\n [\"F4F2EE\", \"Pampas\"],\n [\"F4F4F4\", \"Wild Sand\"],\n [\"F4F8FF\", \"Zircon\"],\n [\"F57584\", \"Froly\"],\n [\"F5C85C\", \"Cream Can\"],\n [\"F5C999\", \"Manhattan\"],\n [\"F5D5A0\", \"Maize\"],\n [\"F5DEB3\", \"Wheat\"],\n [\"F5E7A2\", \"Sandwisp\"],\n [\"F5E7E2\", \"Pot Pourri\"],\n [\"F5E9D3\", \"Albescent White\"],\n [\"F5EDEF\", \"Soft Peach\"],\n [\"F5F3E5\", \"Ecru White\"],\n [\"F5F5DC\", \"Beige\"],\n [\"F5FB3D\", \"Golden Fizz\"],\n [\"F5FFBE\", \"Australian Mint\"],\n [\"F64A8A\", \"French Rose\"],\n [\"F653A6\", \"Brilliant Rose\"],\n [\"F6A4C9\", \"Illusion\"],\n [\"F6F0E6\", \"Merino\"],\n [\"F6F7F7\", \"Black Haze\"],\n [\"F6FFDC\", \"Spring Sun\"],\n [\"F7468A\", \"Violet Red\"],\n [\"F77703\", \"Chilean Fire\"],\n [\"F77FBE\", \"Persian Pink\"],\n [\"F7B668\", \"Rajah\"],\n [\"F7C8DA\", \"Azalea\"],\n [\"F7DBE6\", \"We Peep\"],\n [\"F7F2E1\", \"Quarter Spanish White\"],\n [\"F7F5FA\", \"Whisper\"],\n [\"F7FAF7\", \"Snow Drift\"],\n [\"F8B853\", \"Casablanca\"],\n [\"F8C3DF\", \"Chantilly\"],\n [\"F8D9E9\", \"Cherub\"],\n [\"F8DB9D\", \"Marzipan\"],\n [\"F8DD5C\", \"Energy Yellow\"],\n [\"F8E4BF\", \"Givry\"],\n [\"F8F0E8\", \"White Linen\"],\n [\"F8F4FF\", \"Magnolia\"],\n [\"F8F6F1\", \"Spring Wood\"],\n [\"F8F7DC\", \"Coconut Cream\"],\n [\"F8F7FC\", \"White Lilac\"],\n [\"F8F8F7\", \"Desert Storm\"],\n [\"F8F99C\", \"Texas\"],\n [\"F8FACD\", \"Corn Field\"],\n [\"F8FDD3\", \"Mimosa\"],\n [\"F95A61\", \"Carnation\"],\n [\"F9BF58\", \"Saffron Mango\"],\n [\"F9E0ED\", \"Carousel Pink\"],\n [\"F9E4BC\", \"Dairy Cream\"],\n [\"F9E663\", \"Portica\"],\n [\"F9EAF3\", \"Amour\"],\n [\"F9F8E4\", \"Rum Swizzle\"],\n [\"F9FF8B\", \"Dolly\"],\n [\"F9FFF6\", \"Sugar Cane\"],\n [\"FA7814\", \"Ecstasy\"],\n [\"FA9D5A\", \"Tan Hide\"],\n [\"FAD3A2\", \"Corvette\"],\n [\"FADFAD\", \"Peach Yellow\"],\n [\"FAE600\", \"Turbo\"],\n [\"FAEAB9\", \"Astra\"],\n [\"FAECCC\", \"Champagne\"],\n [\"FAF0E6\", \"Linen\"],\n [\"FAF3F0\", \"Fantasy\"],\n [\"FAF7D6\", \"Citrine White\"],\n [\"FAFAFA\", \"Alabaster\"],\n [\"FAFDE4\", \"Hint of Yellow\"],\n [\"FAFFA4\", \"Milan\"],\n [\"FB607F\", \"Brink Pink\"],\n [\"FB8989\", \"Geraldine\"],\n [\"FBA0E3\", \"Lavender Rose\"],\n [\"FBA129\", \"Sea Buckthorn\"],\n [\"FBAC13\", \"Sun\"],\n [\"FBAED2\", \"Lavender Pink\"],\n [\"FBB2A3\", \"Rose Bud\"],\n [\"FBBEDA\", \"Cupid\"],\n [\"FBCCE7\", \"Classic Rose\"],\n [\"FBCEB1\", \"Apricot Peach\"],\n [\"FBE7B2\", \"Banana Mania\"],\n [\"FBE870\", \"Marigold Yellow\"],\n [\"FBE96C\", \"Festival\"],\n [\"FBEA8C\", \"Sweet Corn\"],\n [\"FBEC5D\", \"Candy Corn\"],\n [\"FBF9F9\", \"Hint of Red\"],\n [\"FBFFBA\", \"Shalimar\"],\n [\"FC0FC0\", \"Shocking Pink\"],\n [\"FC80A5\", \"Tickle Me Pink\"],\n [\"FC9C1D\", \"Tree Poppy\"],\n [\"FCC01E\", \"Lightning Yellow\"],\n [\"FCD667\", \"Goldenrod\"],\n [\"FCD917\", \"Candlelight\"],\n [\"FCDA98\", \"Cherokee\"],\n [\"FCF4D0\", \"Double Pearl Lusta\"],\n [\"FCF4DC\", \"Pearl Lusta\"],\n [\"FCF8F7\", \"Vista White\"],\n [\"FCFBF3\", \"Bianca\"],\n [\"FCFEDA\", \"Moon Glow\"],\n [\"FCFFE7\", \"China Ivory\"],\n [\"FCFFF9\", \"Ceramic\"],\n [\"FD0E35\", \"Torch Red\"],\n [\"FD5B78\", \"Wild Watermelon\"],\n [\"FD7B33\", \"Crusta\"],\n [\"FD7C07\", \"Sorbus\"],\n [\"FD9FA2\", \"Sweet Pink\"],\n [\"FDD5B1\", \"Light Apricot\"],\n [\"FDD7E4\", \"Pig Pink\"],\n [\"FDE1DC\", \"Cinderella\"],\n [\"FDE295\", \"Golden Glow\"],\n [\"FDE910\", \"Lemon\"],\n [\"FDF5E6\", \"Old Lace\"],\n [\"FDF6D3\", \"Half Colonial White\"],\n [\"FDF7AD\", \"Drover\"],\n [\"FDFEB8\", \"Pale Prim\"],\n [\"FDFFD5\", \"Cumulus\"],\n [\"FE28A2\", \"Persian Rose\"],\n [\"FE4C40\", \"Sunset Orange\"],\n [\"FE6F5E\", \"Bittersweet\"],\n [\"FE9D04\", \"California\"],\n [\"FEA904\", \"Yellow Sea\"],\n [\"FEBAAD\", \"Melon\"],\n [\"FED33C\", \"Bright Sun\"],\n [\"FED85D\", \"Dandelion\"],\n [\"FEDB8D\", \"Salomie\"],\n [\"FEE5AC\", \"Cape Honey\"],\n [\"FEEBF3\", \"Remy\"],\n [\"FEEFCE\", \"Oasis\"],\n [\"FEF0EC\", \"Bridesmaid\"],\n [\"FEF2C7\", \"Beeswax\"],\n [\"FEF3D8\", \"Bleach White\"],\n [\"FEF4CC\", \"Pipi\"],\n [\"FEF4DB\", \"Half Spanish White\"],\n [\"FEF4F8\", \"Wisp Pink\"],\n [\"FEF5F1\", \"Provincial Pink\"],\n [\"FEF7DE\", \"Half Dutch White\"],\n [\"FEF8E2\", \"Solitaire\"],\n [\"FEF8FF\", \"White Pointer\"],\n [\"FEF9E3\", \"Off Yellow\"],\n [\"FEFCED\", \"Orange White\"],\n [\"FF0000\", \"Red\"],\n [\"FF007F\", \"Rose\"],\n [\"FF00CC\", \"Purple Pizzazz\"],\n [\"FF00FF\", \"Magenta / Fuchsia\"],\n [\"FF2400\", \"Scarlet\"],\n [\"FF3399\", \"Wild Strawberry\"],\n [\"FF33CC\", \"Razzle Dazzle Rose\"],\n [\"FF355E\", \"Radical Red\"],\n [\"FF3F34\", \"Red Orange\"],\n [\"FF4040\", \"Coral Red\"],\n [\"FF4D00\", \"Vermilion\"],\n [\"FF4F00\", \"International Orange\"],\n [\"FF6037\", \"Outrageous Orange\"],\n [\"FF6600\", \"Blaze Orange\"],\n [\"FF66FF\", \"Pink Flamingo\"],\n [\"FF681F\", \"Orange\"],\n [\"FF69B4\", \"Hot Pink\"],\n [\"FF6B53\", \"Persimmon\"],\n [\"FF6FFF\", \"Blush Pink\"],\n [\"FF7034\", \"Burning Orange\"],\n [\"FF7518\", \"Pumpkin\"],\n [\"FF7D07\", \"Flamenco\"],\n [\"FF7F00\", \"Flush Orange\"],\n [\"FF7F50\", \"Coral\"],\n [\"FF8C69\", \"Salmon\"],\n [\"FF9000\", \"Pizazz\"],\n [\"FF910F\", \"West Side\"],\n [\"FF91A4\", \"Pink Salmon\"],\n [\"FF9933\", \"Neon Carrot\"],\n [\"FF9966\", \"Atomic Tangerine\"],\n [\"FF9980\", \"Vivid Tangerine\"],\n [\"FF9E2C\", \"Sunshade\"],\n [\"FFA000\", \"Orange Peel\"],\n [\"FFA194\", \"Mona Lisa\"],\n [\"FFA500\", \"Web Orange\"],\n [\"FFA6C9\", \"Carnation Pink\"],\n [\"FFAB81\", \"Hit Pink\"],\n [\"FFAE42\", \"Yellow Orange\"],\n [\"FFB0AC\", \"Cornflower Lilac\"],\n [\"FFB1B3\", \"Sundown\"],\n [\"FFB31F\", \"My Sin\"],\n [\"FFB555\", \"Texas Rose\"],\n [\"FFB7D5\", \"Cotton Candy\"],\n [\"FFB97B\", \"Macaroni and Cheese\"],\n [\"FFBA00\", \"Selective Yellow\"],\n [\"FFBD5F\", \"Koromiko\"],\n [\"FFBF00\", \"Amber\"],\n [\"FFC0A8\", \"Wax Flower\"],\n [\"FFC0CB\", \"Pink\"],\n [\"FFC3C0\", \"Your Pink\"],\n [\"FFC901\", \"Supernova\"],\n [\"FFCBA4\", \"Flesh\"],\n [\"FFCC33\", \"Sunglow\"],\n [\"FFCC5C\", \"Golden Tainoi\"],\n [\"FFCC99\", \"Peach Orange\"],\n [\"FFCD8C\", \"Chardonnay\"],\n [\"FFD1DC\", \"Pastel Pink\"],\n [\"FFD2B7\", \"Romantic\"],\n [\"FFD38C\", \"Grandis\"],\n [\"FFD700\", \"Gold\"],\n [\"FFD800\", \"School bus Yellow\"],\n [\"FFD8D9\", \"Cosmos\"],\n [\"FFDB58\", \"Mustard\"],\n [\"FFDCD6\", \"Peach Schnapps\"],\n [\"FFDDAF\", \"Caramel\"],\n [\"FFDDCD\", \"Tuft Bush\"],\n [\"FFDDCF\", \"Watusi\"],\n [\"FFDDF4\", \"Pink Lace\"],\n [\"FFDEAD\", \"Navajo White\"],\n [\"FFDEB3\", \"Frangipani\"],\n [\"FFE1DF\", \"Pippin\"],\n [\"FFE1F2\", \"Pale Rose\"],\n [\"FFE2C5\", \"Negroni\"],\n [\"FFE5A0\", \"Cream Brulee\"],\n [\"FFE5B4\", \"Peach\"],\n [\"FFE6C7\", \"Tequila\"],\n [\"FFE772\", \"Kournikova\"],\n [\"FFEAC8\", \"Sandy Beach\"],\n [\"FFEAD4\", \"Karry\"],\n [\"FFEC13\", \"Broom\"],\n [\"FFEDBC\", \"Colonial White\"],\n [\"FFEED8\", \"Derby\"],\n [\"FFEFA1\", \"Vis Vis\"],\n [\"FFEFC1\", \"Egg White\"],\n [\"FFEFD5\", \"Papaya Whip\"],\n [\"FFEFEC\", \"Fair Pink\"],\n [\"FFF0DB\", \"Peach Cream\"],\n [\"FFF0F5\", \"Lavender blush\"],\n [\"FFF14F\", \"Gorse\"],\n [\"FFF1B5\", \"Buttermilk\"],\n [\"FFF1D8\", \"Pink Lady\"],\n [\"FFF1EE\", \"Forget Me Not\"],\n [\"FFF1F9\", \"Tutu\"],\n [\"FFF39D\", \"Picasso\"],\n [\"FFF3F1\", \"Chardon\"],\n [\"FFF46E\", \"Paris Daisy\"],\n [\"FFF4CE\", \"Barley White\"],\n [\"FFF4DD\", \"Egg Sour\"],\n [\"FFF4E0\", \"Sazerac\"],\n [\"FFF4E8\", \"Serenade\"],\n [\"FFF4F3\", \"Chablis\"],\n [\"FFF5EE\", \"Seashell Peach\"],\n [\"FFF5F3\", \"Sauvignon\"],\n [\"FFF6D4\", \"Milk Punch\"],\n [\"FFF6DF\", \"Varden\"],\n [\"FFF6F5\", \"Rose White\"],\n [\"FFF8D1\", \"Baja White\"],\n [\"FFF9E2\", \"Gin Fizz\"],\n [\"FFF9E6\", \"Early Dawn\"],\n [\"FFFACD\", \"Lemon Chiffon\"],\n [\"FFFAF4\", \"Bridal Heath\"],\n [\"FFFBDC\", \"Scotch Mist\"],\n [\"FFFBF9\", \"Soapstone\"],\n [\"FFFC99\", \"Witch Haze\"],\n [\"FFFCEA\", \"Buttery White\"],\n [\"FFFCEE\", \"Island Spice\"],\n [\"FFFDD0\", \"Cream\"],\n [\"FFFDE6\", \"Chilean Heath\"],\n [\"FFFDE8\", \"Travertine\"],\n [\"FFFDF3\", \"Orchid White\"],\n [\"FFFDF4\", \"Quarter Pearl Lusta\"],\n [\"FFFEE1\", \"Half and Half\"],\n [\"FFFEEC\", \"Apricot White\"],\n [\"FFFEF0\", \"Rice Cake\"],\n [\"FFFEF6\", \"Black White\"],\n [\"FFFEFD\", \"Romance\"],\n [\"FFFF00\", \"Yellow\"],\n [\"FFFF66\", \"Laser Lemon\"],\n [\"FFFF99\", \"Pale Canary\"],\n [\"FFFFB4\", \"Portafino\"],\n [\"FFFFF0\", \"Ivory\"],\n [\"FFFFFF\", \"White\"],\n ];\n}\n\nmodule.exports = ntc;\n","/**\n * color.js\n * - extractColorsFromImage\n * - extractColorsFromImageURL\n */\nconst download = require(\"image-downloader\");\nconst path = require(\"path\");\nconst getPixels = require(\"get-pixels\");\nconst { extractColors } = require(\"extract-colors\");\nconst ntc = require(\"./ntc\");\n\nasync function extractColorsFromImageURL(url, toDirectory) {\n try {\n // lets first download the image from url\n const options = {\n url,\n dest: toDirectory, // will be saved to /path/to/dest/image.jpg\n };\n\n console.log(options);\n const { filename } = await download.image(options);\n console.log(\"downloaded \", filename);\n\n // now we can go ahead and get the pixels from the image\n getPixels(filename, (err, pixels) => {\n if (!err) {\n const data = [...pixels.data];\n const [width, height] = pixels.shape;\n\n extractColors({ data, width, height })\n .then((result) => {\n console.log(result);\n const n = new ntc();\n const arr = result.map((c) => {\n const name = n.name(c.hex);\n c.colorName = name;\n return c;\n });\n console.log(arr);\n })\n .catch(console.log);\n }\n });\n } catch (e) {\n throw new Error(e);\n }\n}\n\nmodule.exports = { extractColorsFromImageURL };\n","const { app } = require(\"electron\");\nvar fs = require(\"fs\");\nconst path = require(\"path\");\nconst events = require(\"../events\");\nconst { getFileContents, writeToFile } = require(\"../utils/file\");\n\n// Convert Json to Csv\nconst ObjectsToCsv = require(\"objects-to-csv\");\nconst Transform = require(\"../utils/transform\");\nconst { extractColorsFromImageURL } = require(\"../utils/color\");\nconst https = require(\"https\");\n\nconst configFilename = \"data.json\";\nconst appName = \"Dashboard\";\n\nconst dataController = {\n /**\n * saveLayout\n * Create a workspace from a json configuration object (no template)\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {object} pageObject the page config object\n */\n convertJsonToCsvFile: (win, appId, jsonObject, toFilename = \"test.csv\") => {\n try {\n // filename to the pages file (live pages)\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n \"data\",\n toFilename,\n );\n\n // make sure the file exists...\n const fileContents = getFileContents(filename, \"\");\n\n const csv = new ObjectsToCsv(jsonObject);\n\n csv\n .toDisk(filename)\n .then((result) => {\n win.webContents.send(events.DATA_JSON_TO_CSV_FILE_COMPLETE, {\n succes: true,\n result,\n filename,\n });\n })\n .catch((e) =>\n win.webContents.send(events.DATA_JSON_TO_CSV_FILE_ERROR, {\n error: e.message,\n }),\n );\n } catch (e) {\n win.webContents.send(events.DATA_JSON_TO_CSV_FILE_ERROR, {\n error: e.message,\n });\n }\n },\n\n /**\n * convertJsonToCsvString\n * @param {BrowserWindow} win\n * @param {*} jsonObject array of json objects\n */\n convertJsonToCsvString: (win, jsonObject = []) => {\n try {\n const csv = new ObjectsToCsv(jsonObject);\n csv\n .toString(filename)\n .then((result) => {\n win.webContents.send(events.DATA_JSON_TO_CSV_STRING_COMPLETE, {\n succes: true,\n csvString: result,\n });\n })\n .catch((e) =>\n win.webContents.send(events.DATA_JSON_TO_CSV_STRING_ERROR, {\n error: e.message,\n }),\n );\n } catch (e) {\n win.webContents.send(events.DATA_JSON_TO_CSV_STRING_ERROR, {\n error: e.message,\n });\n }\n },\n\n readLinesFromFile: (win, filepath, lineCount) => {\n try {\n const t = new Transform();\n t.readLinesFromFile(win, filepath, lineCount, events.READ_LINES_UPDATE)\n .then((res) => {\n win.webContents.send(events.READ_LINES_COMPLETE, {\n success: true,\n filepath,\n lineCount,\n lines: res,\n });\n })\n .catch((e) => {\n //console.log(e);\n win.webContents.send(events.READ_LINES_ERROR, {\n error: e.message,\n });\n });\n } catch (error) {\n win.webContents.send(events.READ_LINES_ERROR, {\n error: e.message,\n });\n }\n },\n\n readJSONFromFile: (win, filepath, objectCount = null) => {\n try {\n console.log(\"reading json from file \", filepath, objectCount);\n const t = new Transform();\n t.readJSONFromFile(win, filepath, objectCount, events.READ_JSON_UPDATE)\n .then((res) => {\n win.webContents.send(events.READ_JSON_COMPLETE, {\n success: true,\n filepath,\n });\n })\n .catch((e) => {\n //console.log(e);\n win.webContents.send(events.READ_JSON_ERROR, {\n error: e.message,\n });\n });\n } catch (error) {\n console.log(error);\n win.webContents.send(events.READ_JSON_ERROR, {\n error: e.message,\n });\n }\n },\n\n readDataFromURL: (win, url, toFilepath) => {\n try {\n // Validate URL is https protocol only\n let parsedUrl;\n try {\n parsedUrl = new URL(url);\n } catch {\n throw new Error(\"Invalid URL provided\");\n }\n if (parsedUrl.protocol !== \"https:\") {\n throw new Error(\n \"Only HTTPS URLs are allowed, got: \" + parsedUrl.protocol,\n );\n }\n\n // Validate toFilepath is within the app data directory\n const appDataDir = path.join(app.getPath(\"userData\"), appName);\n const resolvedFilepath = path.resolve(toFilepath);\n if (!resolvedFilepath.startsWith(appDataDir + path.sep)) {\n throw new Error(\n \"File path must be within the application data directory\",\n );\n }\n\n const writeStream = fs.createWriteStream(resolvedFilepath);\n\n https\n .get(url, (resp) => {\n resp.on(\"data\", (chunk) => {\n writeStream.write(chunk);\n });\n\n resp.on(\"end\", () => {\n win.webContents.send(events.READ_DATA_URL_COMPLETE, {\n success: true,\n toFilepath: resolvedFilepath,\n });\n });\n })\n .on(\"error\", (err) => {\n win.webContents.send(events.READ_DATA_URL_ERROR, {\n error: err.message,\n });\n });\n } catch (error) {\n console.log(error);\n win.webContents.send(events.READ_DATA_URL_ERROR, {\n error: error.message,\n });\n }\n },\n\n /**\n * parseXMLStream\n * @param {*} filepath\n * @param {*} outpath\n * @param {*} start\n * @param {*} recordNode\n * @param {*} objectIdKey\n */\n parseXMLStream: (\n win,\n filepath,\n outpath,\n start,\n recordNode = null,\n objectIdKey = null,\n ) => {\n try {\n const t = new Transform();\n t.parseXMLStream(\n filepath,\n outpath,\n start,\n // recordNode,\n // objectIdKey,\n // win,\n // events.PARSE_XML_STREAM_UPDATE\n )\n .then((res) => {\n win.webContents.send(events.PARSE_XML_STREAM_COMPLETE, {\n success: true,\n filepath,\n outpath,\n });\n })\n .catch((e) => {\n console.log(e);\n win.webContents.send(events.PARSE_XML_STREAM_ERROR, {\n error: e.message,\n });\n });\n } catch (e) {\n win.webContents.send(events.PARSE_XML_STREAM_ERROR, {\n error: e.message,\n });\n }\n },\n\n /**\n * parseCSVStream\n * @param {*} win\n * @param {*} filepath\n * @param {*} outpath\n * @param {*} delimiter\n * @param {*} objectIdKey\n * @param {Array} headers optional array of headers to choose from the file\n */\n parseCSVStream: (\n win,\n filepath,\n outpath,\n delimiter = \",\",\n objectIdKey = null,\n headers = null,\n limit = null,\n ) => {\n try {\n const t = new Transform();\n t.parseCSVStream(\n filepath,\n outpath,\n delimiter,\n objectIdKey,\n headers,\n win,\n events.PARSE_CSV_STREAM_UPDATE,\n limit,\n )\n .then((res) => {\n win.webContents.send(events.PARSE_CSV_STREAM_COMPLETE, {\n success: true,\n filepath,\n outpath,\n });\n })\n .catch((e) => {\n console.log(e);\n win.webContents.send(events.PARSE_CSV_STREAM_ERROR, {\n error: e.message,\n });\n });\n } catch (e) {\n win.webContents.send(events.PARSE_CSV_STREAM_ERROR, {\n error: e.message,\n });\n }\n },\n /**\n * saveToFile\n *\n * This will save to the /appName/data directory\n * We want this to happen so that all of the data is accessible regardless of the appId\n * Is this the correct behavior?\n *\n * @param {*} win\n * @param {*} data\n * @param {*} filename\n * @param {*} append\n * @param {*} returnEmpty\n */\n saveToFile: (win, data, filename, append, returnEmpty = {}) => {\n try {\n if (data) {\n // filename to the pages file (live pages)\n const toFilename = path.join(\n app.getPath(\"userData\"),\n appName,\n \"data\",\n filename,\n );\n\n //console.log(\"saving to file \", toFilename);\n\n // // call this to make sure the directory structure exists\n let fileContents = getFileContents(toFilename, returnEmpty);\n if (fileContents === null || fileContents === \"\") {\n fileContents = JSON.stringify(returnEmpty);\n }\n\n // timestamp\n const stamp = Date.now();\n\n let writeContents = null;\n\n if (append === true) {\n // append data\n if (JSON.stringify(returnEmpty) === \"{}\") {\n const tempWriteContents = JSON.parse(fileContents);\n tempWriteContents[stamp] = data;\n writeContents = JSON.stringify(tempWriteContents);\n writeToFile(toFilename, writeContents);\n }\n\n if (JSON.stringify(returnEmpty) === \"[]\") {\n const tempWriteContents = JSON.parse(fileContents);\n tempWriteContents.push({ [stamp]: data });\n writeContents = JSON.stringify(tempWriteContents);\n // writeContents = JSON.parse(fileContents);\n // writeContents.push({ [stamp]: data });\n writeToFile(toFilename, writeContents);\n }\n } else {\n // overwrite existing\n writeContents = JSON.stringify(data);\n if (JSON.stringify(returnEmpty) === \"{}\") {\n writeToFile(\n toFilename,\n writeContents,\n // JSON.stringify({ [stamp]: data })\n );\n }\n if (JSON.stringify(returnEmpty) === \"[]\") {\n writeToFile(\n toFilename,\n writeContents,\n // JSON.stringify([{ [stamp]: data }])\n );\n }\n }\n\n // console.log(events.DATA_SAVE_TO_FILE_COMPLETE, {\n // success: true,\n // filename: toFilename,\n // fileContents,\n // });\n\n win.webContents.send(events.DATA_SAVE_TO_FILE_COMPLETE, {\n success: true,\n filename: toFilename,\n fileContents: JSON.parse(writeContents),\n });\n }\n } catch (e) {\n console.log(e);\n win.webContents.send(events.DATA_SAVE_TO_FILE_ERROR, {\n success: false,\n filename: filename,\n message: e.message,\n });\n }\n },\n\n readFromFile: (win, filename, returnIfEmpty = {}) => {\n try {\n if (filename) {\n // filename to the pages file (live pages)\n const fromFilename = path.join(\n app.getPath(\"userData\"),\n appName,\n \"data\",\n filename,\n );\n console.log(\"reading from file \", fromFilename, returnIfEmpty);\n // make sure the file exists...\n const fileContents = getFileContents(fromFilename, returnIfEmpty);\n\n console.log(\"file contents \", fileContents, fromFilename);\n\n win.webContents.send(events.DATA_READ_FROM_FILE_COMPLETE, {\n succes: true,\n filename: fromFilename,\n data: JSON.stringify(fileContents),\n });\n }\n } catch (e) {\n win.webContents.send(events.DATA_READ_FROM_FILE_ERROR, {\n succes: false,\n message: e.message,\n });\n }\n },\n\n /**\n * transformFile\n * Transform the file from one format to another using the provided mapping function block\n * and arguments that are optional (default - refObj, index)\n * @param {*} win\n * @param {*} filepath\n * @param {*} outFilepath\n * @param {*} mappingFunctionBody\n * @param {*} args\n */\n transformFile: (\n win,\n filepath,\n outFilepath,\n mappingFunctionBody,\n args = [\"refObj\", \"index\"],\n ) => {\n try {\n const t = new Transform();\n t.transformFileToFile(\n win,\n filepath,\n outFilepath,\n mappingFunctionBody,\n args,\n events.TRANSFORM_FILE_UPDATE,\n )\n .then((result) => {\n win.webContents.send(events.TRANSFORM_FILE_COMPLETE, {\n succes: true,\n filename: filepath,\n toFilename: outFilepath,\n });\n })\n .catch((e) => {\n win.webContents.send(events.TRANSFORM_FILE_ERROR, {\n succes: false,\n message: e.message,\n });\n });\n } catch (e) {\n win.webContents.send(events.TRANSFORM_FILE_ERROR, {\n succes: false,\n message: e.message,\n });\n }\n },\n\n extractColorsFromImageURL: (win, url) => {\n try {\n console.log(url);\n const fileExtension = \".jpg\";\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n \"@algolia/dash-electron\",\n \"data\",\n \"imageExtract\" + fileExtension,\n );\n\n console.log(\"filename\", filename);\n\n extractColorsFromImageURL(url, filename)\n .then((result) => console.log(result))\n .catch((e) => console.log(e));\n } catch (e) {\n console.log(e);\n }\n },\n};\n\nmodule.exports = dataController;\n","/**\n * settingsController\n */\n\nconst { app } = require(\"electron\");\nconst path = require(\"path\");\nconst fs = require(\"fs\");\nconst events = require(\"../events\");\nconst { getFileContents, writeToFile } = require(\"../utils/file\");\n\nconst configFilename = \"settings.json\";\nconst appName = \"Dashboard\";\n\n// Helper function to recursively copy directory\nfunction copyDirectory(source, destination) {\n if (!fs.existsSync(destination)) {\n fs.mkdirSync(destination, { recursive: true });\n }\n\n const files = fs.readdirSync(source);\n for (const file of files) {\n const srcPath = path.join(source, file);\n const destPath = path.join(destination, file);\n const stat = fs.lstatSync(srcPath);\n\n // Skip symlinks to prevent following links to sensitive files\n if (stat.isSymbolicLink()) {\n console.warn(`[settingsController] Skipping symlink: ${srcPath}`);\n continue;\n }\n\n if (stat.isDirectory()) {\n copyDirectory(srcPath, destPath);\n } else {\n fs.copyFileSync(srcPath, destPath);\n }\n }\n}\n\nconst settingsController = {\n /**\n * saveSettingsForApplication\n * Save the settings object to a file (settings.json)\n * @param {BrowserWindow} win\n * @param {Object} data the settings object to be saved\n */\n saveSettingsForApplication: (win, data) => {\n try {\n if (data) {\n // <appId>/settings.json\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n configFilename,\n );\n writeToFile(filename, JSON.stringify(data, null, 2));\n console.log(\"[settingsController] Settings saved successfully\");\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n success: true,\n settings: data,\n };\n } else {\n return {\n error: true,\n message: \"No Settings Data provided\",\n };\n }\n } catch (e) {\n console.error(\"[settingsController] Error saving settings:\", e);\n return {\n error: true,\n message: e.message,\n };\n }\n },\n\n /**\n * getSettingsForApplication\n * Get the settings for the entire application, not application ID specific\n * We can write different settings into this file but save ALL into one object.\n * @param {BrowserWindow} win\n */\n getSettingsForApplication: (win) => {\n try {\n // <appId>/settings.json\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n configFilename,\n );\n // make sure the file exists...\n const fileContents = getFileContents(filename, {});\n console.log(\"[settingsController] Settings loaded successfully\");\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n success: true,\n settings: fileContents,\n };\n } catch (e) {\n console.error(\"[settingsController] Error loading settings:\", e);\n return {\n error: true,\n message: e.message,\n settings: {},\n };\n }\n },\n\n /**\n * getDataDirectory\n * Get the current user data directory path\n * Returns the default if not set by user\n * @param {BrowserWindow} win\n */\n getDataDirectory: (win) => {\n try {\n const settingsPath = path.join(\n app.getPath(\"userData\"),\n appName,\n configFilename,\n );\n const settings = getFileContents(settingsPath, {});\n const userDataDir =\n settings.userDataDirectory ||\n path.join(app.getPath(\"userData\"), appName);\n\n console.log(\"[settingsController] Data directory retrieved successfully\");\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n success: true,\n dataDirectory: userDataDir,\n isDefault: !settings.userDataDirectory,\n };\n } catch (e) {\n console.error(\"[settingsController] Error getting data directory:\", e);\n return {\n error: true,\n message: e.message,\n };\n }\n },\n\n /**\n * setDataDirectory\n * Validate and set a new user data directory\n * @param {BrowserWindow} win\n * @param {String} newPath the new directory path\n */\n setDataDirectory: (win, newPath) => {\n try {\n // Validate the path exists and is a directory\n if (!fs.existsSync(newPath)) {\n fs.mkdirSync(newPath, { recursive: true });\n }\n\n const stats = fs.statSync(newPath);\n if (!stats.isDirectory()) {\n throw new Error(\"Path is not a directory\");\n }\n\n // Update settings\n const settingsPath = path.join(\n app.getPath(\"userData\"),\n appName,\n configFilename,\n );\n const settings = getFileContents(settingsPath, {});\n settings.userDataDirectory = newPath;\n writeToFile(settingsPath, JSON.stringify(settings, null, 2));\n\n console.log(\"[settingsController] Data directory set successfully\");\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n success: true,\n dataDirectory: newPath,\n };\n } catch (e) {\n console.error(\"[settingsController] Error setting data directory:\", e);\n return {\n error: true,\n message: e.message,\n };\n }\n },\n\n /**\n * migrateDataDirectory\n * Copy all files from old data directory to new one\n * @param {BrowserWindow} win\n * @param {String} oldPath the old directory path\n * @param {String} newPath the new directory path\n */\n migrateDataDirectory: (win, oldPath, newPath) => {\n try {\n // Resolve paths to prevent traversal\n const resolvedOldPath = path.resolve(oldPath);\n const resolvedNewPath = path.resolve(newPath);\n\n // Validate oldPath is the current configured data directory\n const settingsCheckPath = path.join(\n app.getPath(\"userData\"),\n appName,\n configFilename,\n );\n const currentSettings = getFileContents(settingsCheckPath, {});\n const currentDataDir =\n currentSettings.userDataDirectory ||\n path.join(app.getPath(\"userData\"), appName);\n if (resolvedOldPath !== path.resolve(currentDataDir)) {\n throw new Error(\"Source path must be the current data directory\");\n }\n\n // Block system directories as targets\n const blockedPrefixes = [\n \"/System\",\n \"/usr\",\n \"/bin\",\n \"/etc\",\n \"/var\",\n \"/sbin\",\n \"/lib\",\n ];\n for (const prefix of blockedPrefixes) {\n if (\n resolvedNewPath.startsWith(prefix + \"/\") ||\n resolvedNewPath === prefix\n ) {\n throw new Error(\"Cannot migrate to a system directory: \" + prefix);\n }\n }\n\n // Validate paths\n if (!fs.existsSync(resolvedOldPath)) {\n throw new Error(\"Source directory does not exist\");\n }\n\n if (!fs.existsSync(resolvedNewPath)) {\n fs.mkdirSync(resolvedNewPath, { recursive: true });\n }\n\n // Copy files\n copyDirectory(resolvedOldPath, resolvedNewPath);\n\n // Update settings to use new path\n const settingsPath = path.join(\n app.getPath(\"userData\"),\n appName,\n configFilename,\n );\n const settings = getFileContents(settingsPath, {});\n settings.userDataDirectory = resolvedNewPath;\n writeToFile(settingsPath, JSON.stringify(settings, null, 2));\n\n console.log(\"[settingsController] Data directory migrated successfully\");\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n success: true,\n oldDirectory: resolvedOldPath,\n newDirectory: resolvedNewPath,\n };\n } catch (e) {\n console.error(\"[settingsController] Error migrating data directory:\", e);\n return {\n error: true,\n message: e.message,\n };\n }\n },\n};\n\nmodule.exports = settingsController;\n","/**\n * responseCache.js\n *\n * TTL-based API response cache with in-flight deduplication.\n * Renderer-driven: widget developer includes { cache: true } or { cache: { ttl: N } }\n * in IPC messages to opt-in to caching per call.\n *\n * Usage:\n * // Wrap a handler:\n * ipcMain.handle(\"my-channel\", responseCache.cachedHandler(\"my-channel\", handler));\n *\n * // Widget-side (renderer):\n * window.mainApi.myService.getData({ ...pc, cache: true }); // 30s default\n * window.mainApi.myService.getData({ ...pc, cache: 60000 }); // 60s\n * window.mainApi.myService.getData({ ...pc, cache: { ttl: 120000 } }); // 120s\n * window.mainApi.myService.getData({ ...pc, cache: true, forceRefresh: true }); // bypass\n */\n\nconst cache = new Map(); // key → { data, timestamp, ttl }\nconst inflight = new Map(); // key → Promise\n\nfunction stableHash(obj) {\n const str = JSON.stringify(obj, Object.keys(obj).sort());\n let hash = 5381;\n for (let i = 0; i < str.length; i++) {\n hash = ((hash << 5) + hash + str.charCodeAt(i)) & 0xffffffff;\n }\n return hash.toString(36);\n}\n\nconst responseCache = {\n async get(key, fetcher, options = {}) {\n const { ttl = 30000, forceRefresh = false } = options;\n\n if (!forceRefresh && cache.has(key)) {\n const entry = cache.get(key);\n if (Date.now() - entry.timestamp < entry.ttl) {\n console.log(`[responseCache] HIT ${key}`);\n return entry.data;\n }\n cache.delete(key);\n }\n\n if (!forceRefresh && inflight.has(key)) {\n console.log(`[responseCache] DEDUP ${key}`);\n return inflight.get(key);\n }\n\n console.log(`[responseCache] MISS ${key}`);\n const promise = fetcher();\n inflight.set(key, promise);\n try {\n const data = await promise;\n if (data && !data.error) {\n cache.set(key, { data, timestamp: Date.now(), ttl });\n }\n return data;\n } finally {\n inflight.delete(key);\n }\n },\n\n /**\n * Wrap an ipcMain.handle handler with renderer-driven caching.\n * If the incoming message has a `cache` property, the response is cached.\n * If the message has `forceRefresh: true`, the cache is bypassed.\n *\n * The `cache` and `forceRefresh` properties are stripped from the message\n * before passing to the handler, so handlers receive clean params.\n *\n * Cache parameter forms:\n * cache: true → 30s default TTL\n * cache: 60000 → 60s (number shorthand)\n * cache: { ttl: N } → explicit TTL in ms\n */\n cachedHandler(channelName, handler) {\n return async (e, msg) => {\n const { cache: cacheOpt, forceRefresh, ...params } = msg || {};\n if (cacheOpt) {\n const ttl =\n typeof cacheOpt === \"number\" ? cacheOpt : cacheOpt?.ttl || 30000;\n const key = `${channelName}:${stableHash(params)}`;\n return this.get(key, () => handler(e, params), {\n ttl,\n forceRefresh,\n });\n }\n return handler(e, msg);\n };\n },\n\n invalidate(key) {\n cache.delete(key);\n },\n\n invalidatePrefix(prefix) {\n for (const k of cache.keys()) {\n if (k.startsWith(prefix)) cache.delete(k);\n }\n },\n\n clear() {\n cache.clear();\n inflight.clear();\n },\n\n stats() {\n return {\n entries: cache.size,\n inflight: inflight.size,\n keys: [...cache.keys()],\n };\n },\n};\n\nmodule.exports = responseCache;\n","/**\n * clientCache\n *\n * Generic provider client cache for the main process.\n * Caches API clients (e.g., algoliasearch, Stripe) by provider hash.\n * Factories are registered per provider type; credentials are resolved\n * from the encrypted store — renderer never sends credential fields.\n */\n\nconst providerController = require(\"../controller/providerController\");\n\nconst clients = new Map(); // hash → client\nconst factories = new Map(); // providerType → factoryFn(credentials)\nconst pendingClients = new Map(); // hash → Promise (dedup in-flight)\nconst providerLookup = new Map(); // \"appId:providerName\" → hash (reverse lookup)\n\nconst clientCache = {\n registerFactory(providerType, factoryFn) {\n factories.set(providerType, factoryFn);\n },\n\n async getClient(providerHash, appId, providerName) {\n // Cache hit\n if (clients.has(providerHash)) {\n return clients.get(providerHash);\n }\n\n // Dedup in-flight (same pattern as mcpController.pendingStarts)\n if (pendingClients.has(providerHash)) {\n return pendingClients.get(providerHash);\n }\n\n const promise = this._resolve(providerHash, appId, providerName);\n pendingClients.set(providerHash, promise);\n try {\n return await promise;\n } finally {\n pendingClients.delete(providerHash);\n }\n },\n\n async _resolve(providerHash, appId, providerName) {\n const result = providerController.getProvider(null, appId, providerName);\n if (result.error) throw new Error(result.message);\n\n const { provider } = result;\n const factory = factories.get(provider.type);\n if (!factory) {\n throw new Error(`No client factory for type: ${provider.type}`);\n }\n\n const client = factory(provider.credentials);\n clients.set(providerHash, client);\n providerLookup.set(`${appId}:${providerName}`, providerHash);\n console.log(\n `[clientCache] Created ${provider.type} client (hash: ${providerHash.slice(0, 8)}...)`,\n );\n return client;\n },\n\n invalidate(appId, providerName) {\n const lookupKey = `${appId}:${providerName}`;\n const hash = providerLookup.get(lookupKey);\n if (hash) {\n clients.delete(hash);\n providerLookup.delete(lookupKey);\n console.log(\n `[clientCache] Invalidated ${providerName} (hash: ${hash.slice(0, 8)}...)`,\n );\n }\n },\n\n invalidateAll() {\n const count = clients.size;\n clients.clear();\n providerLookup.clear();\n pendingClients.clear();\n console.log(`[clientCache] Invalidated all (${count} clients cleared)`);\n },\n\n clear() {\n clients.clear();\n providerLookup.clear();\n pendingClients.clear();\n },\n\n /**\n * Register IPC handlers for cache management.\n * Call this once in the consuming app's electron.js alongside setupWidgetRegistryHandlers().\n */\n setupCacheHandlers() {\n const { ipcMain } = require(\"electron\");\n const responseCache = require(\"./responseCache\");\n\n ipcMain.handle(\n \"client-cache-invalidate\",\n async (e, { appId, providerName }) => {\n clientCache.invalidate(appId, providerName);\n responseCache.clear(); // credential change = all responses stale\n return { success: true };\n },\n );\n ipcMain.handle(\"client-cache-invalidate-all\", async () => {\n clientCache.invalidateAll();\n responseCache.clear();\n return { success: true };\n });\n ipcMain.handle(\"response-cache-clear\", async () => {\n responseCache.clear();\n return { success: true };\n });\n ipcMain.handle(\"response-cache-stats\", async () => responseCache.stats());\n },\n};\n\nmodule.exports = clientCache;\n","/**\n * providerController.js\n *\n * Handle provider (credentials) management with encryption\n * Saves encrypted credentials to ~/.userData/Dashboard/{appId}/providers.json\n */\nconst { app, safeStorage } = require(\"electron\");\nconst path = require(\"path\");\nconst { writeFileSync, readFileSync, existsSync } = require(\"fs\");\nconst {\n ensureDirectoryExistence,\n getFileContents,\n writeToFile,\n} = require(\"../utils/file\");\n\nconst appName = \"Dashboard\";\nconst configFilename = \"providers.json\";\n\nconst providerController = {\n /**\n * saveProvider\n * Save a new provider with encrypted credentials\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {string} providerName user-defined name (e.g., \"Algolia Production\")\n * @param {string} providerType provider type (e.g., \"algolia\", \"slack\")\n * @param {object} credentials credentials object\n * @param {string} providerClass \"credential\" (default) or \"mcp\"\n * @param {object} mcpConfig MCP server config (transport, command, args, envMapping) - only for providerClass \"mcp\"\n * @param {string[]|null} allowedTools optional list of allowed tool names - only for providerClass \"mcp\"\n */\n saveProvider: (\n win,\n appId,\n providerName,\n providerType,\n credentials,\n providerClass = \"credential\",\n mcpConfig = null,\n allowedTools = null,\n ) => {\n try {\n // Build file path\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n\n // Ensure directory exists\n ensureDirectoryExistence(filename);\n\n // Load existing providers\n const providers = getFileContents(filename, {});\n\n // Encrypt credentials\n const credentialsJson = JSON.stringify(credentials);\n const encryptedCredentials = safeStorage.encryptString(credentialsJson);\n\n // Add/update provider\n const providerEntry = {\n type: providerType,\n providerClass: providerClass || \"credential\",\n credentials: encryptedCredentials.toString(\"base64\"),\n dateCreated:\n providers[providerName]?.dateCreated || new Date().toISOString(),\n dateUpdated: new Date().toISOString(),\n };\n\n // Add mcpConfig for MCP providers\n if (providerClass === \"mcp\" && mcpConfig) {\n providerEntry.mcpConfig = mcpConfig;\n }\n\n // Add allowedTools for MCP providers\n if (providerClass === \"mcp\" && allowedTools) {\n providerEntry.allowedTools = allowedTools;\n }\n\n providers[providerName] = providerEntry;\n\n // Save to file with restrictive permissions (owner read/write only)\n writeFileSync(filename, JSON.stringify(providers, null, 2), {\n mode: 0o600,\n });\n\n console.log(\n `[providerController] Provider saved: ${providerName} (${providerType}, ${providerClass})`,\n );\n\n // Invalidate any cached client so the next getClient() call uses fresh credentials\n const clientCache = require(\"../utils/clientCache\");\n clientCache.invalidate(appId, providerName);\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n success: true,\n providerName,\n providerType,\n providerClass,\n };\n } catch (error) {\n console.error(\"[providerController] Error saving provider:\", error);\n return {\n error: true,\n message: error.message,\n };\n }\n },\n\n /**\n * listProviders\n * Get list of all providers with decrypted credentials\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n */\n listProviders: (win, appId) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n\n // Load providers file\n const providersData = getFileContents(filename, {});\n\n // Load MCP catalog for merging new config fields into saved providers\n let catalog = [];\n try {\n const catalogPath = path.join(\n __dirname,\n \"..\",\n \"mcp\",\n \"mcpServerCatalog.json\",\n );\n if (existsSync(catalogPath)) {\n const catalogData = JSON.parse(readFileSync(catalogPath, \"utf-8\"));\n catalog = catalogData.servers || [];\n }\n } catch (e) {\n // Catalog is optional — merge is best-effort\n }\n\n // Decrypt all credentials\n const decryptedProviders = [];\n Object.entries(providersData).forEach(([name, data]) => {\n try {\n const credentialsBuffer = Buffer.from(data.credentials, \"base64\");\n const decryptedJson = safeStorage.decryptString(credentialsBuffer);\n const credentials = JSON.parse(decryptedJson);\n\n const provider = {\n name,\n type: data.type,\n providerClass: data.providerClass || \"credential\",\n credentials,\n dateCreated: data.dateCreated,\n dateUpdated: data.dateUpdated,\n };\n\n // Include mcpConfig for MCP providers\n if (data.mcpConfig) {\n provider.mcpConfig = data.mcpConfig;\n\n // Merge argsMapping from catalog if missing from saved config\n // (providers snapshot mcpConfig at creation time; this ensures\n // existing providers pick up new catalog features like argsMapping)\n if (!data.mcpConfig.argsMapping && data.type) {\n const catalogEntry = catalog.find(\n (entry) => entry.id === data.type,\n );\n if (catalogEntry?.mcpConfig?.argsMapping) {\n provider.mcpConfig.argsMapping =\n catalogEntry.mcpConfig.argsMapping;\n }\n }\n }\n\n // Include allowedTools for MCP providers\n if (data.allowedTools) {\n provider.allowedTools = data.allowedTools;\n }\n\n decryptedProviders.push(provider);\n } catch (decryptError) {\n console.error(\n `[providerController] Failed to decrypt provider ${name}:`,\n decryptError,\n );\n // Skip this provider if decryption fails\n }\n });\n\n console.log(\n `[providerController] Loaded ${decryptedProviders.length} providers`,\n );\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n providers: decryptedProviders,\n };\n } catch (error) {\n console.error(\"[providerController] Error listing providers:\", error);\n return {\n error: true,\n message: error.message,\n providers: [],\n };\n }\n },\n\n /**\n * getProvider\n * Get a specific provider by name with decrypted credentials\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {string} providerName the provider name to retrieve\n */\n getProvider: (win, appId, providerName) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n\n // Load providers file\n const providersData = getFileContents(filename, {});\n\n // Find and decrypt the specific provider\n const providerData = providersData[providerName];\n if (!providerData) {\n throw new Error(`Provider not found: ${providerName}`);\n }\n\n const credentialsBuffer = Buffer.from(providerData.credentials, \"base64\");\n const decryptedJson = safeStorage.decryptString(credentialsBuffer);\n const credentials = JSON.parse(decryptedJson);\n\n const provider = {\n name: providerName,\n type: providerData.type,\n providerClass: providerData.providerClass || \"credential\",\n credentials,\n dateCreated: providerData.dateCreated,\n dateUpdated: providerData.dateUpdated,\n };\n\n // Include mcpConfig for MCP providers\n if (providerData.mcpConfig) {\n provider.mcpConfig = providerData.mcpConfig;\n }\n\n // Include allowedTools for MCP providers\n if (providerData.allowedTools) {\n provider.allowedTools = providerData.allowedTools;\n }\n\n console.log(`[providerController] Provider retrieved: ${providerName}`);\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n provider,\n };\n } catch (error) {\n console.error(\"[providerController] Error getting provider:\", error);\n return {\n error: true,\n message: error.message,\n };\n }\n },\n\n /**\n * deleteProvider\n * Delete a provider from the providers file\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {string} providerName the provider name to delete\n */\n deleteProvider: (win, appId, providerName) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n\n // Load existing providers\n const providers = getFileContents(filename, {});\n\n // Delete the provider\n if (!providers.hasOwnProperty(providerName)) {\n throw new Error(`Provider not found: ${providerName}`);\n }\n\n delete providers[providerName];\n\n // Save to file with restrictive permissions (owner read/write only)\n writeFileSync(filename, JSON.stringify(providers, null, 2), {\n mode: 0o600,\n });\n\n console.log(`[providerController] Provider deleted: ${providerName}`);\n\n // Invalidate any cached client for the deleted provider\n const clientCache = require(\"../utils/clientCache\");\n clientCache.invalidate(appId, providerName);\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n success: true,\n providerName,\n };\n } catch (error) {\n console.error(\"[providerController] Error deleting provider:\", error);\n return {\n error: true,\n message: error.message,\n };\n }\n },\n};\n\nmodule.exports = providerController;\n","const { app } = require(\"electron\");\nconst path = require(\"path\");\nconst { writeFileSync } = require(\"fs\");\nconst events = require(\"../events\");\nconst { getFileContents } = require(\"../utils/file\");\n\nconst configFilename = \"layouts.json\";\nconst appName = \"Dashboard\";\n\nconst layoutController = {\n /**\n * saveLayout\n * Create a workspace from a json configuration object (no template)\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {object} pageObject the page config object\n */\n saveLayoutForApplication: (win, appId, layoutObject) => {\n try {\n // filename to the pages file (live pages)\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const layoutsArray = getFileContents(filename);\n\n // add the pageObject to the pages file\n layoutsArray.push(layoutObject);\n\n // write the new pages configuration back to the file\n writeFileSync(filename, JSON.stringify(layoutsArray, null, 2));\n\n // message the renderer\n win.webContents.send(events.LAYOUT_SAVE_COMPLETE, {\n layouts: layoutsArray,\n });\n } catch (e) {\n win.webContents.send(events.LAYOUT_SAVE_ERROR, {\n error: e.message,\n });\n }\n },\n\n /**\n *\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id from Algolia\n */\n listLayoutsForApplication: (win, appId) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const layoutsArray = getFileContents(filename);\n win.webContents.send(events.LAYOUT_LIST_COMPLETE, {\n layouts: layoutsArray,\n });\n } catch (e) {\n win.webContents.send(events.LAYOUT_LIST_COMPLETE, {\n error: true,\n message: e.message,\n });\n }\n },\n};\n\nmodule.exports = layoutController;\n","/**\n * mcpController.js\n *\n * Manages MCP (Model Context Protocol) server lifecycle in the main process.\n * Handles starting/stopping MCP servers, calling tools, listing tools/resources.\n *\n * Supports two transport types:\n * - stdio: spawns a local child process (e.g., npx -y @algolia/mcp)\n * - streamable_http: connects to a remote HTTP endpoint (e.g., https://mcp.us.algolia.com/...)\n *\n * Uses @modelcontextprotocol/sdk for protocol handling.\n */\nconst { Client } = require(\"@modelcontextprotocol/sdk/client/index.js\");\nconst {\n StdioClientTransport,\n} = require(\"@modelcontextprotocol/sdk/client/stdio.js\");\nconst {\n StreamableHTTPClientTransport,\n} = require(\"@modelcontextprotocol/sdk/client/streamableHttp.js\");\nconst path = require(\"path\");\nconst fs = require(\"fs\");\n\n/**\n * Cached shell PATH result (resolved once, reused for all spawns).\n */\nlet _shellPath = null;\n\n/**\n * Check if a Node.js major version is compatible (v18, v20, or v22).\n * Node v24+ has stricter ESM resolution that breaks some MCP packages.\n */\nfunction isCompatibleNodeVersion(majorVersion) {\n return majorVersion >= 18 && majorVersion <= 22;\n}\n\n/**\n * Detect if an error message indicates Node v24+ ESM incompatibility.\n */\nfunction isNodeEsmError(errorText) {\n if (!errorText) return false;\n return (\n errorText.includes(\"ERR_PACKAGE_PATH_NOT_EXPORTED\") ||\n errorText.includes(\"ERR_MODULE_NOT_FOUND\")\n );\n}\n\n/**\n * Get the user's full shell PATH (including nvm, homebrew, volta, etc.).\n * Electron GUI apps on macOS don't inherit the shell PATH, so we\n * resolve it once by invoking a login shell.\n *\n * On systems where Node v24+ is the default, this will prefer a compatible\n * nvm-managed Node version (v18/v20/v22) to avoid ESM resolution errors\n * in MCP packages.\n */\nfunction getShellPath() {\n if (_shellPath !== null) return _shellPath;\n\n const { execSync } = require(\"child_process\");\n const fallbackDirs = [\"/usr/local/bin\", \"/opt/homebrew/bin\"];\n\n // Scan nvm versions, tracking both latest and best compatible version\n const home = process.env.HOME || \"\";\n let compatibleNvmBin = null;\n if (home) {\n fallbackDirs.push(`${home}/.volta/bin`);\n fallbackDirs.push(`${home}/.nodenv/shims`);\n try {\n const nvmDir = `${home}/.nvm/versions/node`;\n const versions = fs.readdirSync(nvmDir).sort();\n if (versions.length > 0) {\n // Find the highest compatible version (v18/v20/v22)\n for (let i = versions.length - 1; i >= 0; i--) {\n const match = versions[i].match(/^v(\\d+)/);\n if (match && isCompatibleNodeVersion(parseInt(match[1], 10))) {\n compatibleNvmBin = `${nvmDir}/${versions[i]}/bin`;\n break;\n }\n }\n // Always add the latest nvm version as fallback\n fallbackDirs.push(`${nvmDir}/${versions[versions.length - 1]}/bin`);\n }\n } catch {}\n }\n\n try {\n const shell = process.env.SHELL || \"/bin/bash\";\n const marker = \"__DASH_PATH__\";\n const raw = execSync(`${shell} -ilc 'echo \"${marker}$PATH${marker}\"'`, {\n encoding: \"utf8\",\n timeout: 5000,\n });\n // Extract PATH between markers, stripping session restore noise\n const startIdx = raw.indexOf(marker);\n const endIdx = raw.lastIndexOf(marker);\n if (startIdx !== -1 && endIdx > startIdx) {\n _shellPath = raw\n .substring(startIdx + marker.length, endIdx)\n .replace(/[\\r\\n]/g, \"\");\n } else {\n _shellPath = process.env.PATH || \"\";\n }\n } catch (err) {\n console.warn(\"[mcpController] Failed to resolve shell PATH:\", err.message);\n _shellPath = process.env.PATH || \"\";\n }\n\n // Append fallback dirs that aren't already present\n const currentPaths = _shellPath.split(\":\");\n for (const dir of fallbackDirs) {\n if (!currentPaths.includes(dir)) {\n _shellPath += `:${dir}`;\n }\n }\n\n // If system Node is v24+, prepend compatible nvm version so it's found first\n if (compatibleNvmBin) {\n try {\n const nodeVersion = execSync(\n `PATH=\"${_shellPath}\" node --version 2>/dev/null`,\n { encoding: \"utf8\", timeout: 5000 },\n ).trim();\n const majorMatch = nodeVersion.match(/^v(\\d+)/);\n if (majorMatch && !isCompatibleNodeVersion(parseInt(majorMatch[1], 10))) {\n console.log(\n `[mcpController] System Node is ${nodeVersion} (incompatible), ` +\n `prepending compatible nvm path: ${compatibleNvmBin}`,\n );\n _shellPath = `${compatibleNvmBin}:${_shellPath}`;\n }\n } catch {}\n }\n\n console.log(\"[mcpController] Resolved PATH:\", _shellPath);\n return _shellPath;\n}\n\n/**\n * Create a clean environment for MCP child processes.\n * Strips npm_* and ELECTRON_* vars that would force the child\n * to use Electron's or npm's Node binary instead of the PATH one.\n */\nfunction cleanEnvForChildProcess() {\n const env = {};\n for (const [key, value] of Object.entries(process.env)) {\n if (key.startsWith(\"npm_\") || key.startsWith(\"ELECTRON_\")) continue;\n env[key] = value;\n }\n env.PATH = getShellPath();\n return env;\n}\n\n/**\n * Active MCP server connections\n * Map<string, { client: Client, transport: Transport, tools: Array, status: string }>\n */\nconst activeServers = new Map();\n\n/**\n * In-flight start promises for deduplication.\n * Prevents multiple simultaneous startServer calls for the same server\n * from spawning duplicate processes (e.g., 4 widgets all calling startServer(\"Slack\")).\n * Map<string, Promise<result>>\n */\nconst pendingStarts = new Map();\n\n/**\n * MCP Server status constants\n */\nconst STATUS = {\n DISCONNECTED: \"disconnected\",\n CONNECTING: \"connecting\",\n CONNECTED: \"connected\",\n ERROR: \"error\",\n};\n\n/**\n * Interpolate {{fieldName}} placeholders in a string with credential values.\n * Used for streamable_http URL and header templates.\n *\n * @param {string} template - String containing {{fieldName}} placeholders\n * @param {object} credentials - Credential values to interpolate\n * @returns {string} Interpolated string\n */\nfunction interpolate(template, credentials) {\n if (!template || !credentials) return template;\n return template.replace(/\\{\\{(\\w+)\\}\\}/g, (match, key) => {\n return credentials[key] !== undefined ? credentials[key] : match;\n });\n}\n\n/**\n * Refresh a Google OAuth access token before starting the MCP server.\n * This sidesteps the upstream bug where `new google.auth.OAuth2()` is called\n * without client_id/client_secret, preventing token refresh.\n *\n * Uses only Node built-in `https` — no external dependencies.\n *\n * @param {object} tokenRefresh { credentialsPath, oauthKeysPath }\n */\nasync function refreshGoogleOAuthToken(tokenRefresh) {\n const home = process.env.HOME || \"\";\n const credPath = tokenRefresh.credentialsPath.replace(/^~/, home);\n const keysPath = tokenRefresh.oauthKeysPath.replace(/^~/, home);\n\n if (!fs.existsSync(credPath) || !fs.existsSync(keysPath)) {\n console.log(\n \"[mcpController] Token refresh skipped: credential files not found\",\n );\n return;\n }\n\n const credentials = JSON.parse(fs.readFileSync(credPath, \"utf8\"));\n const keysFile = JSON.parse(fs.readFileSync(keysPath, \"utf8\"));\n const keyData = keysFile.installed || keysFile.web;\n\n if (\n !credentials.refresh_token ||\n !keyData?.client_id ||\n !keyData?.client_secret\n ) {\n console.log(\n \"[mcpController] Token refresh skipped: missing refresh_token or client credentials\",\n );\n return;\n }\n\n // Skip if token is still valid (expiry > 5 minutes from now)\n if (\n credentials.expiry_date &&\n credentials.expiry_date > Date.now() + 5 * 60 * 1000\n ) {\n console.log(\"[mcpController] Token still valid, skipping refresh\");\n return;\n }\n\n console.log(\"[mcpController] Refreshing Google OAuth token...\");\n\n const https = require(\"https\");\n const postData = [\n `client_id=${encodeURIComponent(keyData.client_id)}`,\n `client_secret=${encodeURIComponent(keyData.client_secret)}`,\n `refresh_token=${encodeURIComponent(credentials.refresh_token)}`,\n \"grant_type=refresh_token\",\n ].join(\"&\");\n\n const body = await new Promise((resolve, reject) => {\n const req = https.request(\n {\n hostname: \"oauth2.googleapis.com\",\n path: \"/token\",\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"Content-Length\": Buffer.byteLength(postData),\n },\n },\n (res) => {\n let data = \"\";\n res.on(\"data\", (chunk) => (data += chunk));\n res.on(\"end\", () => {\n if (res.statusCode === 200) {\n resolve(JSON.parse(data));\n } else {\n reject(\n new Error(`Token refresh failed (${res.statusCode}): ${data}`),\n );\n }\n });\n },\n );\n req.on(\"error\", reject);\n req.write(postData);\n req.end();\n });\n\n credentials.access_token = body.access_token;\n credentials.expiry_date = Date.now() + (body.expires_in || 3600) * 1000;\n if (body.refresh_token) {\n credentials.refresh_token = body.refresh_token;\n }\n\n fs.writeFileSync(credPath, JSON.stringify(credentials, null, 2));\n console.log(\"[mcpController] Google OAuth token refreshed successfully\");\n}\n\nconst mcpController = {\n /**\n * startServer\n * Start an MCP server with the given config and credentials\n *\n * @param {BrowserWindow} win the main window\n * @param {string} serverName unique name for this server instance\n * @param {object} mcpConfig { transport, command, args, envMapping }\n * @param {object} credentials decrypted credentials object\n * @returns {{ success, serverName, tools, status } | { error, message }}\n */\n startServer: async (win, serverName, mcpConfig, credentials) => {\n // 1. Already connected? Return existing connection\n const existing = activeServers.get(serverName);\n if (existing && existing.status === STATUS.CONNECTED && existing.client) {\n console.log(`[mcpController] Server already connected: ${serverName}`);\n return {\n success: true,\n serverName,\n tools: existing.tools,\n resources: existing.resources,\n status: STATUS.CONNECTED,\n };\n }\n\n // 2. Already starting? Piggyback on the pending promise\n if (pendingStarts.has(serverName)) {\n console.log(\n `[mcpController] Server already starting, deduplicating: ${serverName}`,\n );\n return pendingStarts.get(serverName);\n }\n\n // 3. Fresh start — wrap in a promise and track it\n const startPromise = (async () => {\n try {\n // Stop if in stale/error state\n if (activeServers.has(serverName)) {\n await mcpController.stopServer(win, serverName);\n }\n\n // Merge with catalog entry to pick up updated command/args\n // (saved provider config may reference a stale or archived package)\n try {\n const { catalog } = mcpController.getCatalog(win);\n const catalogEntry = (catalog || []).find(\n (entry) => entry.name === serverName,\n );\n if (catalogEntry?.mcpConfig) {\n const cat = catalogEntry.mcpConfig;\n if (cat.command) mcpConfig.command = cat.command;\n if (cat.args) mcpConfig.args = [...cat.args];\n if (cat.staticEnv) mcpConfig.staticEnv = cat.staticEnv;\n if (cat.tokenRefresh) mcpConfig.tokenRefresh = cat.tokenRefresh;\n if (cat.envMapping) {\n mcpConfig.envMapping = {\n ...mcpConfig.envMapping,\n ...cat.envMapping,\n };\n }\n }\n } catch (catalogErr) {\n // Non-fatal: proceed with saved config if catalog lookup fails\n }\n\n console.log(\n `[mcpController] Starting server: ${serverName} (transport: ${\n mcpConfig.transport || \"stdio\"\n })`,\n );\n\n // Create transport based on type\n let transport;\n if (mcpConfig.transport === \"streamable_http\") {\n // Remote HTTP transport - connect to a hosted MCP server\n const url = interpolate(mcpConfig.url, credentials);\n if (!url) {\n throw new Error(\"Streamable HTTP transport requires a URL\");\n }\n\n // Build request headers from headerTemplate\n const headers = {};\n if (mcpConfig.headerTemplate && credentials) {\n Object.entries(mcpConfig.headerTemplate).forEach(\n ([headerName, template]) => {\n headers[headerName] = interpolate(template, credentials);\n },\n );\n }\n\n transport = new StreamableHTTPClientTransport(new URL(url), {\n requestInit: {\n headers,\n },\n });\n } else {\n // stdio transport (default) - spawn a local child process\n const env = cleanEnvForChildProcess();\n if (mcpConfig.envMapping && credentials) {\n Object.entries(mcpConfig.envMapping).forEach(\n ([envVar, credentialKey]) => {\n if (credentials[credentialKey] !== undefined) {\n env[envVar] = credentials[credentialKey];\n }\n },\n );\n }\n\n // Merge static env vars from mcpConfig (with ~ expansion)\n if (mcpConfig.staticEnv) {\n Object.entries(mcpConfig.staticEnv).forEach(([envVar, value]) => {\n env[envVar] = value.replace(/^~/, process.env.HOME || \"\");\n });\n }\n\n // Pre-start token refresh (e.g., Google OAuth)\n if (mcpConfig.tokenRefresh) {\n try {\n await refreshGoogleOAuthToken(mcpConfig.tokenRefresh);\n } catch (err) {\n console.warn(\n \"[mcpController] Token refresh failed, continuing:\",\n err.message,\n );\n }\n }\n\n // Build args - start with static args, then append dynamic args from credentials\n const args = [...(mcpConfig.args || [])];\n if (mcpConfig.argsMapping && credentials) {\n Object.entries(mcpConfig.argsMapping).forEach(\n ([credentialKey, config]) => {\n const value = credentials[credentialKey];\n if (value) {\n if (config.type === \"split\" && config.delimiter) {\n args.push(\n ...value\n .split(config.delimiter)\n .map((s) => s.trim())\n .filter(Boolean),\n );\n } else {\n args.push(value);\n }\n }\n },\n );\n }\n\n // Interpolate {{MCP_DIR}} in args to resolve local MCP server scripts\n const mcpDir = path.join(__dirname, \"..\", \"mcp\");\n for (let i = 0; i < args.length; i++) {\n if (\n typeof args[i] === \"string\" &&\n args[i].includes(\"{{MCP_DIR}}\")\n ) {\n args[i] = args[i].replace(/\\{\\{MCP_DIR\\}\\}/g, mcpDir);\n }\n }\n\n transport = new StdioClientTransport({\n command: mcpConfig.command,\n args,\n env,\n });\n }\n\n // Update status to connecting\n activeServers.set(serverName, {\n client: null,\n transport,\n tools: [],\n resources: [],\n status: STATUS.CONNECTING,\n });\n\n // Create MCP client\n const client = new Client({\n name: \"dash\",\n version: \"1.0.0\",\n });\n\n // Connect to the server\n await client.connect(transport);\n\n // List available tools\n let tools = [];\n try {\n const toolsResult = await client.listTools();\n tools = toolsResult.tools || [];\n } catch (toolsError) {\n console.warn(\n `[mcpController] Could not list tools for ${serverName}:`,\n toolsError.message,\n );\n }\n\n // List available resources\n let resources = [];\n try {\n const resourcesResult = await client.listResources();\n resources = resourcesResult.resources || [];\n } catch (resourcesError) {\n // Resources are optional, many servers don't support them\n }\n\n // Store the active connection\n activeServers.set(serverName, {\n client,\n transport,\n tools,\n resources,\n status: STATUS.CONNECTED,\n });\n\n console.log(\n `[mcpController] Server connected: ${serverName} (${tools.length} tools, ${resources.length} resources)`,\n );\n\n return {\n success: true,\n serverName,\n tools,\n resources,\n status: STATUS.CONNECTED,\n };\n } catch (error) {\n console.error(\n `[mcpController] Error starting server ${serverName}:`,\n error,\n );\n\n // Detect Node v24+ ESM compatibility errors and provide actionable message\n let errorMessage = error.message;\n if (isNodeEsmError(error.message)) {\n errorMessage =\n \"This MCP server is incompatible with your system Node.js version. \" +\n \"Install Node.js v22 (LTS) using nvm and restart the app.\";\n }\n\n // Mark as error state\n activeServers.set(serverName, {\n client: null,\n transport: null,\n tools: [],\n resources: [],\n status: STATUS.ERROR,\n error: errorMessage,\n });\n\n return {\n error: true,\n message: errorMessage,\n serverName,\n status: STATUS.ERROR,\n };\n } finally {\n pendingStarts.delete(serverName);\n }\n })();\n\n pendingStarts.set(serverName, startPromise);\n return startPromise;\n },\n\n /**\n * stopServer\n * Stop a running MCP server\n *\n * @param {BrowserWindow} win the main window\n * @param {string} serverName the server to stop\n * @returns {{ success, serverName } | { error, message }}\n */\n stopServer: async (win, serverName) => {\n try {\n // Wait for any in-flight start to finish before stopping\n if (pendingStarts.has(serverName)) {\n try {\n await pendingStarts.get(serverName);\n } catch (e) {\n /* stopping anyway */\n }\n }\n\n const server = activeServers.get(serverName);\n if (!server) {\n return {\n success: true,\n serverName,\n message: \"Server was not running\",\n };\n }\n\n console.log(`[mcpController] Stopping server: ${serverName}`);\n\n // Close the client connection\n if (server.client) {\n try {\n await server.client.close();\n } catch (closeError) {\n console.warn(\n `[mcpController] Error closing client for ${serverName}:`,\n closeError.message,\n );\n }\n }\n\n activeServers.delete(serverName);\n\n console.log(`[mcpController] Server stopped: ${serverName}`);\n\n return {\n success: true,\n serverName,\n };\n } catch (error) {\n console.error(\n `[mcpController] Error stopping server ${serverName}:`,\n error,\n );\n // Clean up anyway\n activeServers.delete(serverName);\n return {\n error: true,\n message: error.message,\n };\n }\n },\n\n /**\n * callTool\n * Call a tool on a running MCP server\n *\n * @param {BrowserWindow} win the main window\n * @param {string} serverName the server to call the tool on\n * @param {string} toolName the tool to call\n * @param {object} args arguments for the tool\n * @param {Array<string>} allowedTools optional whitelist of allowed tool names\n * @returns {{ result } | { error, message }}\n */\n callTool: async (win, serverName, toolName, args, allowedTools = null) => {\n try {\n const server = activeServers.get(serverName);\n if (!server || !server.client) {\n throw new Error(`Server not connected: ${serverName}`);\n }\n\n // Enforce tool scoping if allowedTools is specified\n if (allowedTools && !allowedTools.includes(toolName)) {\n throw new Error(\n `Tool \"${toolName}\" is not in the allowed tools list for this widget. Allowed: ${allowedTools.join(\n \", \",\n )}`,\n );\n }\n\n console.log(`[mcpController] Calling tool: ${serverName}/${toolName}`);\n\n const result = await server.client.callTool({\n name: toolName,\n arguments: args || {},\n });\n\n return {\n success: true,\n result,\n };\n } catch (error) {\n console.error(\n `[mcpController] Error calling tool ${serverName}/${toolName}:`,\n error,\n );\n return {\n error: true,\n message: error.message,\n };\n }\n },\n\n /**\n * listTools\n * List available tools for a running MCP server\n *\n * @param {BrowserWindow} win the main window\n * @param {string} serverName the server name\n * @returns {{ tools } | { error, message }}\n */\n listTools: async (win, serverName) => {\n try {\n const server = activeServers.get(serverName);\n if (!server || !server.client) {\n throw new Error(`Server not connected: ${serverName}`);\n }\n\n // Refresh tool list from server\n const toolsResult = await server.client.listTools();\n const tools = toolsResult.tools || [];\n\n // Update cached tools\n server.tools = tools;\n\n return {\n success: true,\n tools,\n };\n } catch (error) {\n console.error(\n `[mcpController] Error listing tools for ${serverName}:`,\n error,\n );\n return {\n error: true,\n message: error.message,\n };\n }\n },\n\n /**\n * listResources\n * List available resources for a running MCP server\n *\n * @param {BrowserWindow} win the main window\n * @param {string} serverName the server name\n * @returns {{ resources } | { error, message }}\n */\n listResources: async (win, serverName) => {\n try {\n const server = activeServers.get(serverName);\n if (!server || !server.client) {\n throw new Error(`Server not connected: ${serverName}`);\n }\n\n const resourcesResult = await server.client.listResources();\n const resources = resourcesResult.resources || [];\n\n // Update cached resources\n server.resources = resources;\n\n return {\n success: true,\n resources,\n };\n } catch (error) {\n console.error(\n `[mcpController] Error listing resources for ${serverName}:`,\n error,\n );\n return {\n error: true,\n message: error.message,\n };\n }\n },\n\n /**\n * readResource\n * Read a specific resource from a running MCP server\n *\n * @param {BrowserWindow} win the main window\n * @param {string} serverName the server name\n * @param {string} uri the resource URI\n * @returns {{ resource } | { error, message }}\n */\n readResource: async (win, serverName, uri) => {\n try {\n const server = activeServers.get(serverName);\n if (!server || !server.client) {\n throw new Error(`Server not connected: ${serverName}`);\n }\n\n const result = await server.client.readResource({ uri });\n\n return {\n success: true,\n resource: result,\n };\n } catch (error) {\n console.error(\n `[mcpController] Error reading resource ${uri} from ${serverName}:`,\n error,\n );\n return {\n error: true,\n message: error.message,\n };\n }\n },\n\n /**\n * getServerStatus\n * Get the connection status of a server\n *\n * @param {BrowserWindow} win the main window\n * @param {string} serverName the server name\n * @returns {{ status, tools, error }}\n */\n getServerStatus: (win, serverName) => {\n const server = activeServers.get(serverName);\n if (!server) {\n return {\n serverName,\n status: STATUS.DISCONNECTED,\n tools: [],\n resources: [],\n };\n }\n\n return {\n serverName,\n status: server.status,\n tools: server.tools || [],\n resources: server.resources || [],\n error: server.error || null,\n };\n },\n\n /**\n * getCatalog\n * Load the MCP server seed catalog\n *\n * @param {BrowserWindow} win the main window\n * @returns {{ catalog } | { error, message }}\n */\n getCatalog: (win) => {\n try {\n const catalogPath = path.join(\n __dirname,\n \"..\",\n \"mcp\",\n \"mcpServerCatalog.json\",\n );\n\n if (!fs.existsSync(catalogPath)) {\n return {\n catalog: [],\n };\n }\n\n const catalogData = fs.readFileSync(catalogPath, \"utf8\");\n const catalog = JSON.parse(catalogData);\n\n return {\n success: true,\n catalog: catalog.servers || [],\n };\n } catch (error) {\n console.error(\"[mcpController] Error loading catalog:\", error);\n return {\n error: true,\n message: error.message,\n catalog: [],\n };\n }\n },\n\n /**\n * listConnectedServers\n * Returns all connected servers with their cached tool lists.\n * Used by llmController to discover available MCP tools.\n *\n * @returns {Array<{ serverName, tools, resources, status }>}\n */\n listConnectedServers: () => {\n const servers = [];\n for (const [serverName, server] of activeServers) {\n if (server.status === STATUS.CONNECTED) {\n servers.push({\n serverName,\n tools: server.tools || [],\n resources: server.resources || [],\n status: server.status,\n });\n }\n }\n return servers;\n },\n\n /**\n * runAuth\n * Run a one-shot auth command (e.g., OAuth browser flow) for an MCP server\n *\n * @param {BrowserWindow} win the main window\n * @param {object} mcpConfig { transport, command, args, envMapping }\n * @param {object} credentials decrypted credentials object\n * @param {object} authCommand { command, args }\n * @returns {{ success } | { error, message }}\n */\n runAuth: async (win, mcpConfig, credentials, authCommand) => {\n const { spawn } = require(\"child_process\");\n\n const env = cleanEnvForChildProcess();\n\n // Pre-auth setup: copy credential files to expected locations\n if (authCommand.setup?.copyCredential) {\n const { from, to } = authCommand.setup.copyCredential;\n const sourcePath = credentials?.[from];\n if (sourcePath) {\n const destPath = to.replace(/^~/, process.env.HOME || \"\");\n const destDir = require(\"path\").dirname(destPath);\n try {\n fs.mkdirSync(destDir, { recursive: true });\n fs.copyFileSync(sourcePath, destPath);\n } catch (err) {\n return {\n error: true,\n message: `Failed to copy OAuth keys: ${err.message}`,\n };\n }\n }\n }\n\n // Inject credentials as env vars using the same envMapping as startServer\n if (mcpConfig?.envMapping && credentials) {\n Object.entries(mcpConfig.envMapping).forEach(\n ([envVar, credentialKey]) => {\n if (credentials[credentialKey] !== undefined) {\n env[envVar] = credentials[credentialKey];\n }\n },\n );\n }\n\n // Merge static env vars from authCommand (e.g., AUTH_SERVER_PORT)\n if (authCommand.env) {\n Object.entries(authCommand.env).forEach(([key, value]) => {\n env[key] = value;\n });\n }\n\n // Merge static env vars from authCommand with ~ expansion\n if (authCommand.staticEnv) {\n Object.entries(authCommand.staticEnv).forEach(([key, value]) => {\n env[key] = value.replace(/^~/, process.env.HOME || \"\");\n });\n }\n\n // Interpolate {{MCP_DIR}} in authCommand args (same as startServer)\n const mcpDir = path.join(__dirname, \"..\", \"mcp\");\n const resolvedArgs = (authCommand.args || []).map((arg) =>\n typeof arg === \"string\" && arg.includes(\"{{MCP_DIR}}\")\n ? arg.replace(/\\{\\{MCP_DIR\\}\\}/g, mcpDir)\n : arg,\n );\n\n return new Promise((resolve) => {\n const proc = spawn(authCommand.command, resolvedArgs, {\n env,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n\n let stdout = \"\";\n let stderr = \"\";\n proc.stdout.on(\"data\", (data) => {\n stdout += data.toString();\n });\n proc.stderr.on(\"data\", (data) => {\n stderr += data.toString();\n });\n\n const timeout = setTimeout(() => {\n proc.kill();\n resolve({ error: true, message: \"Auth timed out (120s)\" });\n }, 120000);\n\n proc.on(\"close\", (code) => {\n clearTimeout(timeout);\n if (code === 0) {\n resolve({ success: true });\n } else {\n const detail = stderr.trim() || stdout.trim() || \"\";\n // Detect Node v24+ ESM compatibility errors and provide actionable message\n if (isNodeEsmError(detail)) {\n resolve({\n error: true,\n message:\n \"This MCP server is incompatible with your system Node.js version. \" +\n \"Install Node.js v22 (LTS) using nvm and restart the app.\",\n });\n return;\n }\n resolve({\n error: true,\n message: `Auth exited with code ${code}${detail ? \": \" + detail : \"\"}`,\n });\n }\n });\n\n proc.on(\"error\", (err) => {\n clearTimeout(timeout);\n resolve({ error: true, message: err.message });\n });\n });\n },\n\n /**\n * stopAllServers\n * Stop all running MCP servers (called on app quit)\n */\n stopAllServers: async () => {\n // Wait for any in-flight starts to settle before stopping\n if (pendingStarts.size > 0) {\n await Promise.allSettled([...pendingStarts.values()]);\n }\n\n console.log(\n `[mcpController] Stopping all servers (${activeServers.size} active)`,\n );\n const promises = [];\n for (const [serverName] of activeServers) {\n promises.push(mcpController.stopServer(null, serverName));\n }\n await Promise.allSettled(promises);\n console.log(\"[mcpController] All servers stopped\");\n },\n};\n\nmodule.exports = mcpController;\nmodule.exports.refreshGoogleOAuthToken = refreshGoogleOAuthToken;\n","/**\n * registryController.js\n *\n * Manages fetching, caching, and searching the remote widget registry index.\n * Runs in the Electron main process.\n *\n * Responsibilities:\n * - Fetch and cache the remote registry-index.json with 5-min TTL\n * - Search/filter across both packages and individual widgets\n * - Support two-level browsing: packages (bundles) and widgets within packages\n */\n\nconst path = require(\"path\");\nconst fs = require(\"fs\");\n\n// Default registry API base URL\nconst DEFAULT_REGISTRY_API_URL = \"https://main.d919rwhuzp7rj.amplifyapp.com\";\n\n// Cache TTL: 5 minutes\nconst CACHE_TTL_MS = 5 * 60 * 1000;\n\nlet cachedIndex = null;\nlet cacheTimestamp = 0;\n\n/**\n * Get the local test registry path for dev mode\n */\nfunction getTestRegistryPath() {\n return path.join(__dirname, \"..\", \"registry\", \"test-registry-index.json\");\n}\n\n/**\n * Check if running in development mode\n */\nfunction isDev() {\n return (\n process.defaultApp ||\n process.env.NODE_ENV === \"development\" ||\n process.env.NODE_ENV === \"dev\"\n );\n}\n\n/**\n * Fetch the registry index from remote URL or local file (dev mode)\n * Caches the result for CACHE_TTL_MS milliseconds.\n *\n * @param {boolean} forceRefresh - Bypass cache and fetch fresh data\n * @returns {Promise<Object>} The registry index\n */\nasync function fetchRegistryIndex(forceRefresh = false) {\n const now = Date.now();\n\n // Return cached data if still valid\n if (!forceRefresh && cachedIndex && now - cacheTimestamp < CACHE_TTL_MS) {\n console.log(\"[RegistryController] Returning cached registry index\");\n return cachedIndex;\n }\n\n try {\n let indexData;\n\n if (isDev()) {\n // In dev mode, try local test file first\n const testPath = getTestRegistryPath();\n if (fs.existsSync(testPath)) {\n console.log(\n \"[RegistryController] Loading test registry from:\",\n testPath,\n );\n const raw = fs.readFileSync(testPath, \"utf8\");\n indexData = JSON.parse(raw);\n } else {\n // Fall back to API (supports DASH_REGISTRY_URL as full-URL override)\n const registryUrl =\n process.env.DASH_REGISTRY_URL ||\n `${process.env.DASH_REGISTRY_API_URL || DEFAULT_REGISTRY_API_URL}/api/packages`;\n console.log(\n \"[RegistryController] Fetching registry from:\",\n registryUrl,\n );\n const response = await fetch(registryUrl);\n if (!response.ok) {\n throw new Error(\n `Failed to fetch registry: ${response.status} ${response.statusText}`,\n );\n }\n indexData = await response.json();\n }\n } else {\n // In production, fetch from API\n const registryUrl =\n process.env.DASH_REGISTRY_URL ||\n `${process.env.DASH_REGISTRY_API_URL || DEFAULT_REGISTRY_API_URL}/api/packages`;\n console.log(\"[RegistryController] Fetching registry from:\", registryUrl);\n\n const response = await fetch(registryUrl);\n if (!response.ok) {\n throw new Error(\n `Failed to fetch registry: ${response.status} ${response.statusText}`,\n );\n }\n indexData = await response.json();\n }\n\n // Normalize: ensure `version` exists on each package (API uses `latestVersion`)\n if (indexData.packages) {\n indexData.packages = indexData.packages.map((pkg) => ({\n ...pkg,\n version: pkg.version || pkg.latestVersion || \"0.0.0\",\n }));\n }\n\n // Cache the result\n cachedIndex = indexData;\n cacheTimestamp = now;\n\n console.log(\n `[RegistryController] Loaded ${indexData.packages?.length || 0} packages`,\n );\n return indexData;\n } catch (error) {\n console.error(\"[RegistryController] Error fetching registry:\", error);\n\n // Return stale cache if available\n if (cachedIndex) {\n console.log(\n \"[RegistryController] Returning stale cache after fetch error\",\n );\n return cachedIndex;\n }\n\n throw error;\n }\n}\n\n/**\n * Search the registry across packages and individual widgets\n *\n * @param {string} query - Search query string\n * @param {Object} filters - Optional filters\n * @param {string} filters.category - Filter by category\n * @param {string} filters.author - Filter by author\n * @param {string} filters.tag - Filter by tag\n * @param {string} filters.type - Filter by package type (\"widget\" or \"dashboard\")\n * @param {string[]} filters.compatibleWidgets - Only return dashboards whose required widgets are all in this list\n * @param {string[]} filters.appCapabilities - Only return packages whose required API providers are all in this list\n * @returns {Promise<Object>} { packages: [...], totalWidgets: number }\n */\nasync function searchRegistry(query = \"\", filters = {}) {\n const index = await fetchRegistryIndex();\n let packages = index.packages || [];\n\n // Apply type filter — packages without an explicit type default to \"widget\"\n if (filters.type) {\n const typeLower = filters.type.toLowerCase();\n packages = packages.filter(\n (pkg) => (pkg.type || \"widget\").toLowerCase() === typeLower,\n );\n }\n\n // Apply search query\n if (query) {\n const q = query.toLowerCase();\n packages = packages.filter((pkg) => {\n // Match against package-level fields\n const packageMatch =\n (pkg.name || \"\").toLowerCase().includes(q) ||\n (pkg.displayName || \"\").toLowerCase().includes(q) ||\n (pkg.description || \"\").toLowerCase().includes(q) ||\n (pkg.author || \"\").toLowerCase().includes(q) ||\n (pkg.tags || []).some((t) => t.toLowerCase().includes(q));\n\n // Match against individual widgets within the package\n const widgetMatch = (pkg.widgets || []).some(\n (w) =>\n (w.name || \"\").toLowerCase().includes(q) ||\n (w.displayName || \"\").toLowerCase().includes(q) ||\n (w.description || \"\").toLowerCase().includes(q),\n );\n\n return packageMatch || widgetMatch;\n });\n }\n\n // Apply category filter\n if (filters.category) {\n packages = packages.filter(\n (pkg) =>\n (pkg.category || \"\").toLowerCase() === filters.category.toLowerCase(),\n );\n }\n\n // Apply author filter\n if (filters.author) {\n packages = packages.filter(\n (pkg) =>\n (pkg.author || \"\").toLowerCase() === filters.author.toLowerCase(),\n );\n }\n\n // Apply tag filter\n if (filters.tag) {\n const tagLower = filters.tag.toLowerCase();\n packages = packages.filter((pkg) =>\n (pkg.tags || []).some((t) => t.toLowerCase() === tagLower),\n );\n }\n\n // Apply compatibility filter — only dashboards whose required widgets\n // are all present in the user's installed widget list\n if (filters.compatibleWidgets && filters.compatibleWidgets.length) {\n const installedSet = new Set(\n filters.compatibleWidgets.map((w) => w.toLowerCase()),\n );\n packages = packages.filter((pkg) => {\n const requiredWidgets = (pkg.widgets || []).filter(\n (w) => w.required !== false,\n );\n return requiredWidgets.every(\n (w) =>\n installedSet.has((w.package || \"\").toLowerCase()) ||\n installedSet.has((w.name || \"\").toLowerCase()),\n );\n });\n }\n\n // Apply API capability filter — only return packages whose required\n // \"api\" providers are all present in the app's capability set\n if (filters.appCapabilities && filters.appCapabilities.length) {\n const capSet = new Set(filters.appCapabilities.map((c) => c.toLowerCase()));\n packages = packages.filter((pkg) => {\n // Collect all \"api\" provider requirements from package-level and widget-level providers\n const apiProviders = [];\n\n // Package-level providers\n for (const p of pkg.providers || []) {\n if (p.providerClass === \"api\" && p.required !== false) {\n apiProviders.push(p.type);\n }\n }\n\n // Widget-level providers\n for (const w of pkg.widgets || []) {\n for (const p of w.providers || []) {\n if (p.providerClass === \"api\" && p.required !== false) {\n apiProviders.push(p.type);\n }\n }\n }\n\n // Package is compatible if all required API namespaces are present\n return apiProviders.every((api) => capSet.has(api.toLowerCase()));\n });\n }\n\n // Count total widgets across matched packages\n const totalWidgets = packages.reduce(\n (sum, pkg) => sum + (pkg.widgets || []).length,\n 0,\n );\n\n return { packages, totalWidgets };\n}\n\n/**\n * Get a specific package by name\n *\n * @param {string} packageName - Name of the package\n * @returns {Promise<Object|null>} Package data or null if not found\n */\nasync function getPackage(packageName) {\n const index = await fetchRegistryIndex();\n const pkg = (index.packages || []).find((p) => p.name === packageName);\n return pkg || null;\n}\n\n/**\n * Check for updates to installed widgets\n *\n * @param {Array<Object>} installedWidgets - Array of { name, version } objects\n * @returns {Promise<Array<Object>>} Widgets with available updates\n */\nasync function checkUpdates(installedWidgets = []) {\n const index = await fetchRegistryIndex();\n const updates = [];\n\n for (const installed of installedWidgets) {\n const pkg = (index.packages || []).find((p) => p.name === installed.name);\n if (pkg && pkg.version !== installed.version) {\n updates.push({\n name: pkg.name,\n currentVersion: installed.version,\n latestVersion: pkg.version,\n downloadUrl: pkg.downloadUrl,\n changelog: pkg.changelog || null,\n });\n }\n }\n\n return updates;\n}\n\n/**\n * Search the registry for dashboard packages only.\n * Convenience wrapper around searchRegistry with type: \"dashboard\".\n *\n * @param {string} query - Search query string\n * @param {Object} filters - Optional filters (category, author, tag, compatibleWidgets)\n * @returns {Promise<Object>} { packages: [...], totalWidgets: number }\n */\nasync function searchDashboards(query = \"\", filters = {}) {\n return searchRegistry(query, { ...filters, type: \"dashboard\" });\n}\n\n/**\n * Search the registry for theme packages only.\n * Convenience wrapper around searchRegistry with type: \"theme\".\n *\n * @param {string} query - Search query string\n * @param {Object} filters - Optional filters (category, author, tag)\n * @returns {Promise<Object>} { packages: [...], totalWidgets: number }\n */\nasync function searchThemes(query = \"\", filters = {}) {\n return searchRegistry(query, { ...filters, type: \"theme\" });\n}\n\nmodule.exports = {\n fetchRegistryIndex,\n searchRegistry,\n searchDashboards,\n searchThemes,\n getPackage,\n checkUpdates,\n};\n","var fs = require(\"fs\");\nvar JSONStream = require(\"JSONStream\");\nconst algoliasearch = require(\"algoliasearch\");\nconst path = require(\"node:path\");\nconst { ensureDirectoryExistence, checkDirectory } = require(\"./file\");\n\nclass AlgoliaIndex {\n /**\n * @var client the algoliasearch client\n */\n client = null;\n\n /**\n * @var index the algoliasearch initiated index\n */\n index = null;\n\n constructor(appId = \"\", apiKey = \"\", indexName = \"\") {\n if (appId !== \"\" && apiKey !== \"\" && indexName !== \"\") {\n this.client = algoliasearch(appId, apiKey);\n this.index = this.client.initIndex(indexName);\n }\n }\n\n createBatchesFromJSONFile = (\n filepath,\n batchFilepath = \"/data/batch\",\n batchSize,\n callback = null,\n ) => {\n return new Promise((resolve, reject) => {\n // instantiate the JSON parser that will be used by the readStream\n var parser = JSONStream.parse(\"*\");\n\n // count how many items have been added to a single batch\n var countForBatch = 0;\n\n // counter for the number of batches (used as filename)\n var batchNumber = 1;\n\n // create the readStream to parse the large file (json)\n var readStream = fs.createReadStream(filepath).pipe(parser);\n\n var batch = [];\n\n // lets first remove the batch folder\n this.clearDirectory(batchFilepath)\n .then(() => {\n // when we receive data...\n readStream.on(\"data\", function (data) {\n try {\n // if we have reached the limit for the batch...\n // lets write to the batch file\n if (countForBatch === batchSize) {\n // write to the batch file\n var writeStream = fs.createWriteStream(\n batchFilepath + \"/batch_\" + batchNumber + \".json\",\n );\n writeStream.write(JSON.stringify(batch));\n writeStream.close();\n\n // adjust counts and reset batch array\n countForBatch = 0;\n // bump the batch number\n batchNumber++;\n // reset the batch json\n batch = [];\n // callback function to pass batchnumber (or anything later on)\n callback &&\n typeof callback === \"function\" &&\n callback(batchNumber);\n } else {\n try {\n // push the JSON data into the batch array to be written later\n batch.push(data);\n countForBatch++;\n } catch (e) {\n reject(e);\n }\n }\n } catch (e) {\n reject(e);\n }\n });\n\n readStream.on(\"error\", function (e) {\n console.log(\"batch on error \", e);\n reject(e);\n });\n\n readStream.on(\"close\", function () {\n console.log(\"batch on close \");\n resolve(\"batches completed \", batchNumber);\n });\n })\n .catch((e) => {\n console.log(\"catch batch \", e.message);\n reject(e);\n });\n });\n };\n\n clearDirectory = (directoryPath) => {\n return new Promise((resolve, reject) => {\n try {\n checkDirectory(directoryPath);\n fs.readdir(directoryPath, (err, files) => {\n if (err) reject(err);\n if (files) {\n files.forEach((file) => {\n fs.unlinkSync(path.join(directoryPath, file));\n });\n resolve();\n }\n });\n } catch (e) {\n console.log(\"clear dir error \", e.message);\n reject(e);\n }\n });\n };\n\n async partialUpdateObjectsFromDirectorySync(\n batchFilepath,\n createIfNotExists = false,\n callback = null,\n ) {\n try {\n // read the directory...\n const files = await fs.readdirSync(batchFilepath);\n let results = [];\n for (const fileIndex in files) {\n // for each file lets read the file and then push to algolia\n const pathToBatch = path.join(batchFilepath, files[fileIndex]);\n const fileContents = await this.readFile(pathToBatch);\n if (fileContents) {\n if (\"data\" in fileContents && \"filepath\" in fileContents) {\n // now we can update the index with the partial update\n const updateResult = await this.partialUpdateObjects(\n fileContents.data,\n fileContents.filepath,\n createIfNotExists,\n callback,\n );\n results.push({ file: files[fileIndex] });\n } else {\n console.log(\"missed \", files[fileIndex]);\n }\n }\n }\n return Promise.resolve(results);\n } catch (e) {\n return Promise.reject(e);\n }\n }\n\n async readFile(filepath) {\n return await new Promise((resolve, reject) => {\n fs.readFile(filepath, \"utf8\", (err, data) => {\n if (err) {\n reject(err);\n }\n resolve({ data, filepath });\n });\n });\n }\n\n browseObjects = (query = \"\", callback = null) => {\n return new Promise((resolve, reject) => {\n try {\n if (this.index !== null) {\n // call algolia to update the objects\n this.index\n .browseObjects({\n query,\n batch: (hits) => {\n if (callback && typeof callback === \"function\") {\n callback(hits);\n }\n },\n })\n .then(() => {\n resolve({ success: true });\n })\n .catch((e) => reject(e));\n } else {\n reject(\"No index for client\");\n }\n } catch (e) {\n console.log(\"browse objects \", e.message);\n reject(e);\n }\n });\n };\n\n async partialUpdateObjects(\n objects,\n file,\n createIfNotExists = false,\n callback = null,\n ) {\n return new Promise((resolve, reject) => {\n try {\n if (objects) {\n const batch = JSON.parse(objects);\n\n // callback function to pass batchnumber (or anything later on)\n if (callback && typeof callback === \"function\") {\n callback(\"indexing objects \", file, batch.length);\n }\n\n if (this.index !== null) {\n // call algolia to update the objects\n this.index\n .partialUpdateObjects(batch, {\n createIfNotExists: createIfNotExists,\n })\n .then(({ objectIDs }) => {\n resolve({\n success: true,\n batchComplete: batch.length,\n objectIDs,\n });\n })\n .catch((e) => {\n console.log(\"Error partialUpdateObjects\", e.message);\n reject(e);\n });\n } else {\n reject(\"No index for client\");\n }\n }\n } catch (e) {\n console.log(\"partial update objects \", e.message);\n reject(e);\n }\n });\n }\n\n search = (query = \"\", options = {}) => {\n return new Promise((resolve, reject) => {\n try {\n if (this.index !== null) {\n this.index\n .search(query, options)\n .then((result) => resolve(result))\n .catch((e) => reject(e));\n } else {\n reject(\"No index for client\");\n }\n } catch (e) {\n reject(e);\n }\n });\n };\n\n saveObjects = (objects, file, callback = null) => {\n return new Promise((resolve, reject) => {\n try {\n if (objects) {\n const batch = JSON.parse(objects);\n\n // callback function to pass batchnumber (or anything later on)\n if (callback && typeof callback === \"function\") {\n callback(\"saving objects \", file);\n }\n\n if (this.index !== null) {\n // call algolia to update the objects\n this.index\n .saveObjects(batch, {\n autoGenerateObjectIDIfNotExist: true,\n })\n .then(({ objectIDs }) => {\n resolve({\n success: true,\n batchComplete: batch.length,\n file,\n objectIDs,\n });\n })\n .catch((e) => reject(e));\n } else {\n reject(\"No index for client\");\n }\n }\n } catch (e) {\n console.log(\"save objects error\", e.message);\n reject(e);\n }\n });\n };\n}\n\nmodule.exports = AlgoliaIndex;\n","/**\n * algoliaController.js\n *\n * This is a sample controller that is called from the electron.js file\n *\n * The electron.js file contains listeners from the renderer that will call\n * the controller methods as seen below.\n */\nconst algoliasearch = require(\"algoliasearch\");\nconst events = require(\"../events\");\nconst AlgoliaIndex = require(\"../utils/algolia\");\nvar fs = require(\"fs\");\n\nconst algoliaController = {\n /**\n * loadPagesForApplication\n * Load the pages for the application <userdata>/appId/pages.json\n * - filter out the indices that are \"rule\" indices\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id from Algolia\n */\n listIndices: (win, application) => {\n try {\n const searchClient = algoliasearch(\n application[\"appId\"],\n application[\"key\"],\n );\n searchClient\n .listIndices()\n .then(({ items }) => {\n const filtered = items.filter(\n (item) => item.name.substring(0, 7) !== \"sitehub\",\n );\n win.webContents.send(events.ALGOLIA_LIST_INDICES_COMPLETE, filtered);\n })\n .catch((e) => {\n win.webContents.send(events.ALGOLIA_LIST_INDICES_ERROR, {\n error: e.message,\n });\n });\n } catch (e) {\n win.webContents.send(events.ALGOLIA_LIST_INDICES_ERROR, {\n error: e.message,\n });\n }\n },\n\n getAnalyticsForQuery: (win, application, indexName, query) => {\n try {\n const baseUrl = \"https://analytics.us.algolia.com\";\n const headers = {\n \"X-Algolia-Application-Id\": application[\"appId\"],\n \"X-Algolia-API-Key\": application[\"key\"],\n };\n const url = `${baseUrl}/2/hits?search=${encodeURIComponent(\n query,\n )}&clickAnalytics=true&index=${indexName}`;\n axios\n .get(url, {\n headers: headers,\n })\n .then((resp) => {\n if (resp.status === 200) {\n win.webContents.send(events.ALGOLIA_ANALYTICS_FOR_QUERY_COMPLETE, {\n result: resp.data,\n indexName: indexName,\n query: query,\n });\n } else {\n win.webContents.send(events.ALGOLIA_ANALYTICS_FOR_QUERY_ERROR, {\n error: true,\n message: \"Failed request\",\n });\n }\n })\n .catch((e) => {\n win.webContents.send(events.ALGOLIA_ANALYTICS_FOR_QUERY_ERROR, {\n error: true,\n message: e.message,\n });\n });\n } catch (e) {\n win.webContents.send(events.ALGOLIA_ANALYTICS_FOR_QUERY_ERROR, {\n error: true,\n message: e.message,\n });\n }\n },\n\n /**\n * browseObjectsToFile\n * Lets try and browse an index and pull down the hits and save as a file\n *\n * @param {*} win\n * @param {*} appId\n * @param {*} apiKey\n * @param {*} indexName\n * @param {*} toFilename\n * @param {*} query\n */\n browseObjectsToFile: (\n win,\n appId,\n apiKey,\n indexName,\n toFilename,\n query = \"\",\n ) => {\n try {\n if (\n toFilename !== \"\" &&\n apiKey !== \"\" &&\n indexName !== \"\" &&\n appId !== \"\"\n ) {\n // init the Algolia Index helper\n const a = new AlgoliaIndex(appId, apiKey, indexName);\n // create the write stream to store the hits\n const writeStream = fs.createWriteStream(toFilename);\n writeStream.write(\"[\");\n\n let sep = \"\";\n\n // call the algolia browseObjects helper method\n a.browseObjects(query, (hits) => {\n win.webContents.send(events.ALGOLIA_BROWSE_OBJECTS_UPDATE, hits);\n\n let count = 0;\n // write to the file\n hits.forEach((hit) => {\n writeStream.write(sep + JSON.stringify(hit));\n count++;\n sep = \",\\n\";\n });\n })\n .then((result) => {\n writeStream.write(\"]\");\n win.webContents.send(\n events.ALGOLIA_BROWSE_OBJECTS_COMPLETE,\n result,\n );\n })\n .catch((e) => {\n win.webContents.send(events.ALGOLIA_BROWSE_OBJECTS_ERROR, e);\n });\n } else {\n win.webContents.send(\n events.ALGOLIA_BROWSE_OBJECTS_ERROR,\n new Error(\"Missing parameters\"),\n );\n }\n } catch (e) {\n win.webContents.send(events.ALGOLIA_BROWSE_OBJECTS_ERROR, {\n error: e.message,\n });\n }\n },\n\n async partialUpdateObjectsFromDirectory(\n win,\n appId,\n apiKey,\n indexName,\n dir,\n createIfNotExists = false,\n ) {\n try {\n const a = new AlgoliaIndex(appId, apiKey, indexName);\n // now we can make the call to the utility and we are passing in the createIfNotExists FALSE by default\n a.partialUpdateObjectsFromDirectorySync(\n dir,\n createIfNotExists,\n (data) => {\n win.webContents.send(\n events.ALGOLIA_PARTIAL_UPDATE_OBJECTS_UPDATE,\n data,\n );\n },\n )\n .then((result) => {\n win.webContents.send(\n events.ALGOLIA_PARTIAL_UPDATE_OBJECTS_COMPLETE,\n result,\n );\n })\n .catch((e) => {\n win.webContents.send(events.ALGOLIA_PARTIAL_UPDATE_OBJECTS_ERROR, e);\n });\n } catch (e) {\n win.webContents.send(events.ALGOLIA_PARTIAL_UPDATE_OBJECTS_ERROR, {\n error: e.message,\n });\n }\n },\n\n /**\n * createBatchesFromFile\n * @param {*} win\n * @param {*} filepath\n * @param {*} batchFilepath\n * @param {*} batchSize\n * @param {*} callback\n */\n createBatchesFromFile: (\n win,\n filepath,\n batchFilepath = \"/data/batch\",\n batchSize = 500,\n ) => {\n try {\n const a = new AlgoliaIndex();\n a.createBatchesFromJSONFile(\n filepath,\n batchFilepath,\n batchSize,\n (data) => {\n win.webContents.send(events.ALGOLIA_CREATE_BATCH_UPDATE, data);\n },\n )\n .then((result) => {\n win.webContents.send(events.ALGOLIA_CREATE_BATCH_COMPLETE, result);\n })\n .catch((e) => {\n win.webContents.send(events.ALGOLIA_CREATE_BATCH_ERROR, e);\n });\n } catch (e) {\n win.webContents.send(events.ALGOLIA_CREATE_BATCH_ERROR, {\n error: e.message,\n });\n }\n },\n /**\n * search\n * Search an index and return results in-memory (no file export).\n * Returns the result directly for use with ipcMain.handle / ipcRenderer.invoke.\n */\n search: async (win, appId, apiKey, indexName, query = \"\", options = {}) => {\n try {\n const a = new AlgoliaIndex(appId, apiKey, indexName);\n return await a.search(query, options);\n } catch (e) {\n return { error: true, message: e.message || String(e) };\n }\n },\n};\n\nmodule.exports = algoliaController;\n","const OpenAI = require(\"openai\");\nconst events = require(\"../events\");\n\nconst openaiController = {\n async describeImage(win, imageUrl, apiKey, prompt = \"What's in this image?\") {\n try {\n const openai = new OpenAI({\n apiKey: apiKey,\n });\n const response = await openai.chat.completions.create({\n model: \"gpt-4-vision-preview\",\n messages: [\n {\n role: \"user\",\n content: [\n { type: \"text\", text: prompt },\n {\n type: \"image_url\",\n image_url: imageUrl,\n },\n ],\n },\n ],\n });\n\n win.webContents.send(events.OPENAI_DESCRIBE_IMAGE_COMPLETE, {\n succes: true,\n imageUrl,\n response,\n });\n } catch (e) {\n win.webContents.send(events.OPENAI_DESCRIBE_IMAGE_ERROR, {\n succes: true,\n error: e.message,\n });\n }\n },\n};\n\nmodule.exports = openaiController;\n","const { app } = require(\"electron\");\nconst path = require(\"path\");\nconst { writeFileSync } = require(\"fs\");\nconst events = require(\"../events\");\nconst { getFileContents } = require(\"../utils/file\");\n\nconst configFilename = \"menuItems.json\";\nconst appName = \"Dashboard\";\n\nconst menuItemsController = {\n saveMenuItemForApplication: (win, appId, menuItem) => {\n try {\n // filename to the pages file (live pages)\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const menuItemsArray = getFileContents(filename);\n\n menuItemsArray.filter((mi) => mi !== null);\n\n // add the menuItems object to the file\n menuItemsArray.push(menuItem);\n\n // write the new pages configuration back to the file\n writeFileSync(filename, JSON.stringify(menuItemsArray, null, 2));\n\n console.log(\"[menuItemsController] Menu item saved successfully\");\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n menuItems: menuItemsArray,\n success: true,\n };\n } catch (e) {\n console.error(\"[menuItemsController] Error saving menu item:\", e);\n // Return error object with empty menu items array\n return {\n error: true,\n message: e.message,\n menuItems: [],\n };\n }\n },\n\n listMenuItemsForApplication: (win, appId) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const menuItemsArray = getFileContents(filename);\n const filtered = menuItemsArray.filter((mi) => mi !== null);\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n menuItems: filtered,\n };\n } catch (e) {\n console.error(\"[menuItemsController] Error listing menu items:\", e);\n // Return error object with empty menu items array\n return {\n error: true,\n message: e.message,\n menuItems: [],\n };\n }\n },\n};\n\nmodule.exports = menuItemsController;\n","const path = require(\"path\");\nconst { app } = require(\"electron\");\n\nconst events = require(\"../events\");\nconst lpm = require(\"live-plugin-manager\");\nconst { PluginManager } = require(\"live-plugin-manager\");\n\nconst pluginController = {\n install: (win, packageName, filepath) => {\n try {\n const rootPath = path.join(\n app.getPath(\"userData\"),\n \"plugins\",\n packageName,\n );\n } catch (e) {\n win.webContents.send(\"plugin-install-error\", { error: e.message });\n }\n },\n};\n\nmodule.exports = pluginController;\n","/**\n * cliController.js\n *\n * Manages Claude Code CLI (`claude -p`) as an alternative LLM backend.\n * Spawns the CLI subprocess, parses stream-json NDJSON output, and emits\n * the same LLM_STREAM_* events as the Anthropic SDK path.\n *\n * Users with a Claude Pro/Max subscription and Claude Code installed\n * can use the Chat widget without a separate API key.\n */\nconst { spawn, execSync } = require(\"child_process\");\nconst {\n LLM_STREAM_DELTA,\n LLM_STREAM_TOOL_CALL,\n LLM_STREAM_TOOL_RESULT,\n LLM_STREAM_COMPLETE,\n LLM_STREAM_ERROR,\n} = require(\"../events/llmEvents\");\n\n/**\n * Cached shell PATH result (resolved once, reused for all spawns).\n * Same pattern as mcpController.js.\n */\nlet _shellPath = null;\n\nfunction getShellPath() {\n if (_shellPath !== null) return _shellPath;\n\n try {\n const shell = process.env.SHELL || \"/bin/bash\";\n _shellPath = execSync(`${shell} -ilc 'echo -n \"$PATH\"'`, {\n encoding: \"utf8\",\n timeout: 5000,\n });\n } catch {\n _shellPath = process.env.PATH || \"\";\n }\n\n return _shellPath;\n}\n\n/**\n * Cached CLI binary path (resolved once via `which claude`).\n */\nlet _cliBinaryPath = undefined; // undefined = not yet checked\n\nfunction resolveCliBinary() {\n if (_cliBinaryPath !== undefined) return _cliBinaryPath;\n\n try {\n const fullPath = getShellPath();\n _cliBinaryPath = execSync(\"which claude\", {\n encoding: \"utf8\",\n timeout: 5000,\n env: { ...process.env, PATH: fullPath },\n }).trim();\n } catch {\n _cliBinaryPath = null;\n }\n\n return _cliBinaryPath;\n}\n\n/**\n * Active CLI processes for abort support.\n * Map<requestId, ChildProcess>\n */\nconst activeProcesses = new Map();\n\n/**\n * Session IDs for conversation continuity.\n * Map<widgetUuid, sessionId>\n */\nconst sessions = new Map();\n\n/**\n * Send events safely to a window.\n */\nfunction safeSend(win, channel, data) {\n if (win && !win.isDestroyed()) {\n win.webContents.send(channel, data);\n }\n}\n\nconst cliController = {\n /**\n * isAvailable\n * Check if the Claude Code CLI is installed and accessible.\n *\n * @returns {{ available: boolean, path?: string }}\n */\n isAvailable: () => {\n const binaryPath = resolveCliBinary();\n if (binaryPath) {\n return { available: true, path: binaryPath };\n }\n return { available: false };\n },\n\n /**\n * sendMessage\n * Stream a response from the Claude Code CLI with NDJSON parsing.\n *\n * @param {BrowserWindow} win - the window to send stream events to\n * @param {string} requestId - unique ID for this request\n * @param {object} params - { model, messages, systemPrompt, maxToolRounds, widgetUuid }\n */\n sendMessage: async (win, requestId, params) => {\n const { model, messages, systemPrompt, widgetUuid } = params;\n\n const binaryPath = resolveCliBinary();\n if (!binaryPath) {\n safeSend(win, LLM_STREAM_ERROR, {\n requestId,\n error:\n \"Claude Code CLI not found. Install from https://claude.ai/download\",\n code: \"CLI_NOT_FOUND\",\n });\n return;\n }\n\n // Build CLI args\n const args = [\"-p\", \"--output-format\", \"stream-json\", \"--verbose\"];\n\n if (model) {\n args.push(\"--model\", model);\n }\n\n if (systemPrompt) {\n args.push(\"--append-system-prompt\", systemPrompt);\n }\n\n // Resume existing session for conversation continuity\n const sessionId = widgetUuid ? sessions.get(widgetUuid) : null;\n if (sessionId) {\n args.push(\"--resume\", sessionId);\n }\n\n // Extract the user message (last user message in the array)\n const lastUserMsg = [...messages].reverse().find((m) => m.role === \"user\");\n const userText =\n typeof lastUserMsg?.content === \"string\"\n ? lastUserMsg.content\n : Array.isArray(lastUserMsg?.content)\n ? lastUserMsg.content\n .filter((b) => b.type === \"text\")\n .map((b) => b.text)\n .join(\"\\n\")\n : \"\";\n\n if (!userText) {\n safeSend(win, LLM_STREAM_ERROR, {\n requestId,\n error: \"No user message to send.\",\n code: \"CLI_ERROR\",\n });\n return;\n }\n\n try {\n const fullPath = getShellPath();\n const child = spawn(binaryPath, args, {\n env: { ...process.env, PATH: fullPath },\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n\n activeProcesses.set(requestId, child);\n\n // Pipe user message via stdin (not visible in ps)\n child.stdin.write(userText);\n child.stdin.end();\n\n let stdoutBuffer = \"\";\n let stderrBuffer = \"\";\n let capturedSessionId = null;\n let retried = false;\n\n // Track active tool calls for mapping results\n const activeToolCalls = new Map();\n\n child.stdout.on(\"data\", (chunk) => {\n stdoutBuffer += chunk.toString();\n\n // Process complete lines\n const lines = stdoutBuffer.split(\"\\n\");\n stdoutBuffer = lines.pop(); // keep incomplete line in buffer\n\n for (const line of lines) {\n if (!line.trim()) continue;\n\n let parsed;\n try {\n parsed = JSON.parse(line);\n } catch {\n console.warn(\"[cliController] Skipping invalid JSON line:\", line);\n continue;\n }\n\n // Capture session ID from any message that has it\n if (parsed.session_id && widgetUuid) {\n capturedSessionId = parsed.session_id;\n sessions.set(widgetUuid, capturedSessionId);\n }\n\n // Map CLI stream-json events to IPC events\n if (parsed.type === \"content_block_delta\") {\n if (parsed.delta?.type === \"text_delta\" && parsed.delta.text) {\n safeSend(win, LLM_STREAM_DELTA, {\n requestId,\n text: parsed.delta.text,\n });\n } else if (parsed.delta?.type === \"input_json_delta\") {\n // Update tool input incrementally\n const tc = activeToolCalls.get(parsed.index);\n if (tc) {\n tc.partialInput =\n (tc.partialInput || \"\") + (parsed.delta.partial_json || \"\");\n }\n }\n } else if (parsed.type === \"content_block_start\") {\n if (parsed.content_block?.type === \"tool_use\") {\n const toolBlock = parsed.content_block;\n activeToolCalls.set(parsed.index, {\n toolUseId: toolBlock.id,\n toolName: toolBlock.name,\n partialInput: \"\",\n });\n safeSend(win, LLM_STREAM_TOOL_CALL, {\n requestId,\n toolUseId: toolBlock.id,\n toolName: toolBlock.name,\n serverName: \"Claude Code\",\n input: toolBlock.input || {},\n });\n }\n } else if (parsed.type === \"content_block_stop\") {\n // Tool call completed — try to parse the accumulated input\n const tc = activeToolCalls.get(parsed.index);\n if (tc && tc.partialInput) {\n try {\n tc.finalInput = JSON.parse(tc.partialInput);\n } catch {\n tc.finalInput = tc.partialInput;\n }\n }\n } else if (parsed.type === \"message_stop\") {\n // Individual message completed (may be followed by more in tool-use loops)\n } else if (parsed.type === \"result\") {\n // Final result — conversation complete\n const content = [];\n if (parsed.result) {\n content.push({ type: \"text\", text: parsed.result });\n }\n\n safeSend(win, LLM_STREAM_COMPLETE, {\n requestId,\n content,\n stopReason: parsed.stop_reason || \"end_turn\",\n usage: parsed.usage || {},\n });\n }\n }\n });\n\n child.stderr.on(\"data\", (chunk) => {\n stderrBuffer += chunk.toString();\n });\n\n child.on(\"error\", (err) => {\n activeProcesses.delete(requestId);\n safeSend(win, LLM_STREAM_ERROR, {\n requestId,\n error: `Failed to start Claude CLI: ${err.message}`,\n code: \"CLI_SPAWN_ERROR\",\n });\n });\n\n child.on(\"close\", (code) => {\n activeProcesses.delete(requestId);\n\n // Process any remaining buffer\n if (stdoutBuffer.trim()) {\n try {\n const parsed = JSON.parse(stdoutBuffer);\n if (parsed.session_id && widgetUuid) {\n sessions.set(widgetUuid, parsed.session_id);\n }\n if (parsed.type === \"result\") {\n const content = [];\n if (parsed.result) {\n content.push({ type: \"text\", text: parsed.result });\n }\n safeSend(win, LLM_STREAM_COMPLETE, {\n requestId,\n content,\n stopReason: parsed.stop_reason || \"end_turn\",\n usage: parsed.usage || {},\n });\n return;\n }\n } catch {\n // ignore\n }\n }\n\n if (code !== 0 && code !== null) {\n // Check if resume failed and retry without it\n if (sessionId && !retried && stderrBuffer.includes(\"session\")) {\n retried = true;\n if (widgetUuid) sessions.delete(widgetUuid);\n // Retry without --resume\n cliController.sendMessage(win, requestId, {\n ...params,\n _retryWithoutResume: true,\n });\n return;\n }\n\n // Check for auth errors\n if (\n stderrBuffer.includes(\"auth\") ||\n stderrBuffer.includes(\"login\") ||\n stderrBuffer.includes(\"not authenticated\")\n ) {\n safeSend(win, LLM_STREAM_ERROR, {\n requestId,\n error:\n \"Claude Code CLI is not authenticated. Run `claude auth login` in your terminal.\",\n code: \"CLI_AUTH_ERROR\",\n });\n return;\n }\n\n safeSend(win, LLM_STREAM_ERROR, {\n requestId,\n error: `Claude CLI exited with code ${code}${stderrBuffer ? \": \" + stderrBuffer.slice(0, 500) : \"\"}`,\n code: \"CLI_ERROR\",\n });\n }\n });\n } catch (err) {\n activeProcesses.delete(requestId);\n safeSend(win, LLM_STREAM_ERROR, {\n requestId,\n error: `Failed to start Claude CLI: ${err.message}`,\n code: \"CLI_SPAWN_ERROR\",\n });\n }\n },\n\n /**\n * abortRequest\n * Kill an in-flight CLI process.\n *\n * @param {string} requestId - the request to cancel\n * @returns {{ success: boolean }}\n */\n abortRequest: (requestId) => {\n const child = activeProcesses.get(requestId);\n if (child) {\n child.kill(\"SIGTERM\");\n activeProcesses.delete(requestId);\n return { success: true };\n }\n return { success: false, message: \"Request not found\" };\n },\n\n /**\n * clearSession\n * Remove the stored session ID for a widget (called on \"New Chat\").\n *\n * @param {string} widgetUuid - the widget whose session to clear\n * @returns {{ success: boolean }}\n */\n clearSession: (widgetUuid) => {\n if (widgetUuid && sessions.has(widgetUuid)) {\n sessions.delete(widgetUuid);\n return { success: true };\n }\n return { success: false };\n },\n\n /**\n * getSessionStatus\n * Check if a CLI session exists and whether a process is active for a widget.\n *\n * @param {string} widgetUuid - the widget to check\n * @returns {{ hasSession: boolean, sessionId?: string, isProcessActive: boolean }}\n */\n getSessionStatus: (widgetUuid) => {\n const sessionId = widgetUuid ? sessions.get(widgetUuid) : null;\n // Check if any active process belongs to this widget\n let isProcessActive = false;\n for (const [, child] of activeProcesses) {\n if (!child.killed) {\n isProcessActive = true;\n break;\n }\n }\n return {\n hasSession: !!sessionId,\n sessionId: sessionId || undefined,\n isProcessActive,\n };\n },\n\n /**\n * endSession\n * Kill any active CLI process AND clear the session for a widget.\n *\n * @param {string} widgetUuid - the widget whose session to end\n * @returns {{ success: boolean }}\n */\n endSession: (widgetUuid) => {\n // Kill any active processes for this widget\n for (const [reqId, child] of activeProcesses) {\n if (reqId.startsWith(widgetUuid)) {\n child.kill(\"SIGTERM\");\n activeProcesses.delete(reqId);\n }\n }\n // Clear the session\n if (widgetUuid && sessions.has(widgetUuid)) {\n sessions.delete(widgetUuid);\n }\n return { success: true };\n },\n};\n\nmodule.exports = cliController;\n","/**\n * llmController.js\n *\n * Manages LLM chat interactions in the main process.\n * Streams responses from Anthropic's Messages API, handles tool-use loops\n * by calling MCP tools via mcpController, and supports request cancellation.\n *\n * Conversation state lives in the renderer — this controller is stateless\n * per-request, receiving the full messages array each time.\n */\nconst Anthropic = require(\"@anthropic-ai/sdk\");\nconst mcpController = require(\"./mcpController\");\nconst cliController = require(\"./cliController\");\nconst {\n LLM_STREAM_DELTA,\n LLM_STREAM_TOOL_CALL,\n LLM_STREAM_TOOL_RESULT,\n LLM_STREAM_COMPLETE,\n LLM_STREAM_ERROR,\n} = require(\"../events/llmEvents\");\n\n/**\n * In-flight requests for cancellation support.\n * Map<requestId, AbortController>\n */\nconst activeRequests = new Map();\n\n/**\n * Default maximum tool-use rounds to prevent infinite loops.\n */\nconst DEFAULT_MAX_TOOL_ROUNDS = 10;\n\n/**\n * Convert MCP tool format to Anthropic tool format.\n * MCP: { name, description, inputSchema }\n * Anthropic: { name, description, input_schema }\n */\nfunction mcpToolToAnthropic(tool) {\n return {\n name: tool.name,\n description: tool.description || \"\",\n input_schema: tool.inputSchema || { type: \"object\", properties: {} },\n };\n}\n\n/**\n * Extract text content from an MCP tool result.\n * MCP results can be { content: [{ type: \"text\", text: \"...\" }] } or plain strings.\n */\nfunction extractToolResultText(mcpResult) {\n if (!mcpResult) return \"No result returned.\";\n if (mcpResult.error) return `Error: ${mcpResult.message}`;\n\n const result = mcpResult.result;\n if (!result) return \"No result returned.\";\n\n // MCP standard: { content: [{ type, text }] }\n if (result.content && Array.isArray(result.content)) {\n return result.content\n .filter((c) => c.type === \"text\")\n .map((c) => c.text)\n .join(\"\\n\");\n }\n\n // Plain string\n if (typeof result === \"string\") return result;\n\n // Fallback: JSON stringify\n return JSON.stringify(result);\n}\n\nconst llmController = {\n /**\n * sendMessage\n * Stream a response from the Anthropic Messages API with tool-use support.\n *\n * @param {BrowserWindow} win - the window to send stream events to\n * @param {string} requestId - unique ID for this request (for filtering + cancellation)\n * @param {object} params - { apiKey, model, messages, tools, toolServerMap, systemPrompt, maxToolRounds }\n */\n sendMessage: async (win, requestId, params) => {\n // Route to CLI backend if specified\n if (params.backend === \"claude-code\") {\n return cliController.sendMessage(win, requestId, params);\n }\n\n const {\n apiKey,\n model = \"claude-sonnet-4-20250514\",\n messages,\n tools = [],\n toolServerMap = {},\n systemPrompt,\n maxToolRounds = DEFAULT_MAX_TOOL_ROUNDS,\n } = params;\n\n // Set up abort controller\n const abortController = new AbortController();\n activeRequests.set(requestId, abortController);\n\n try {\n if (!apiKey) {\n throw new Error(\n \"API key is required. Add an Anthropic provider in your dashboard settings.\",\n );\n }\n\n const client = new Anthropic({ apiKey });\n\n // Convert MCP tools to Anthropic format\n const anthropicTools = tools.map(mcpToolToAnthropic);\n\n // Build the conversation — mutable copy for tool-use loop\n let currentMessages = [...messages];\n let toolRound = 0;\n\n while (toolRound <= maxToolRounds) {\n // Check for abort before each API call\n if (abortController.signal.aborted) {\n return;\n }\n\n // Build request params\n const requestParams = {\n model,\n max_tokens: 8192,\n messages: currentMessages,\n stream: true,\n };\n if (systemPrompt) {\n requestParams.system = systemPrompt;\n }\n if (anthropicTools.length > 0) {\n requestParams.tools = anthropicTools;\n }\n\n // Stream the response\n const stream = client.messages.stream(requestParams, {\n signal: abortController.signal,\n });\n\n let responseContentBlocks = [];\n let stopReason = null;\n\n // Collect text deltas and content blocks\n stream.on(\"text\", (text) => {\n if (win && !win.isDestroyed()) {\n win.webContents.send(LLM_STREAM_DELTA, { requestId, text });\n }\n });\n\n // Wait for the full message\n const finalMessage = await stream.finalMessage();\n responseContentBlocks = finalMessage.content;\n stopReason = finalMessage.stop_reason;\n\n // Check for tool use\n const toolUseBlocks = responseContentBlocks.filter(\n (block) => block.type === \"tool_use\",\n );\n\n if (stopReason === \"end_turn\" || toolUseBlocks.length === 0) {\n // Done — send complete event\n if (win && !win.isDestroyed()) {\n win.webContents.send(LLM_STREAM_COMPLETE, {\n requestId,\n content: responseContentBlocks,\n stopReason,\n usage: finalMessage.usage,\n });\n }\n return;\n }\n\n // Tool use round\n toolRound++;\n\n // Append assistant message with tool_use blocks\n currentMessages.push({\n role: \"assistant\",\n content: responseContentBlocks,\n });\n\n // Execute each tool call\n const toolResults = [];\n for (const toolBlock of toolUseBlocks) {\n if (abortController.signal.aborted) return;\n\n const serverName = toolServerMap[toolBlock.name];\n\n // Notify renderer of tool call\n if (win && !win.isDestroyed()) {\n win.webContents.send(LLM_STREAM_TOOL_CALL, {\n requestId,\n toolUseId: toolBlock.id,\n toolName: toolBlock.name,\n serverName,\n input: toolBlock.input,\n });\n }\n\n let resultText;\n let isError = false;\n\n if (!serverName) {\n resultText = `Error: No MCP server found for tool \"${toolBlock.name}\". The server may have disconnected.`;\n isError = true;\n } else {\n try {\n const mcpResult = await mcpController.callTool(\n win,\n serverName,\n toolBlock.name,\n toolBlock.input,\n );\n if (mcpResult.error) {\n resultText = `Error: ${mcpResult.message}`;\n isError = true;\n } else {\n resultText = extractToolResultText(mcpResult);\n }\n } catch (err) {\n resultText = `Error calling tool: ${err.message}`;\n isError = true;\n }\n }\n\n // Notify renderer of tool result\n if (win && !win.isDestroyed()) {\n win.webContents.send(LLM_STREAM_TOOL_RESULT, {\n requestId,\n toolUseId: toolBlock.id,\n toolName: toolBlock.name,\n result: resultText,\n isError,\n });\n }\n\n toolResults.push({\n type: \"tool_result\",\n tool_use_id: toolBlock.id,\n content: resultText,\n is_error: isError,\n });\n }\n\n // Append tool results as user message\n currentMessages.push({\n role: \"user\",\n content: toolResults,\n });\n\n // Loop continues — next API call with tool results\n }\n\n // Exceeded max tool rounds\n if (win && !win.isDestroyed()) {\n win.webContents.send(LLM_STREAM_ERROR, {\n requestId,\n error: `Exceeded maximum tool-use rounds (${maxToolRounds}). The assistant may be stuck in a loop.`,\n code: \"MAX_TOOL_ROUNDS\",\n });\n }\n } catch (error) {\n if (abortController.signal.aborted) {\n // Request was cancelled — not an error\n return;\n }\n\n console.error(`[llmController] Error in sendMessage:`, error);\n\n const errorPayload = {\n requestId,\n error: error.message || \"Unknown error\",\n code: error.status || error.code || \"UNKNOWN\",\n };\n\n // Handle rate limiting\n if (error.status === 429) {\n errorPayload.code = \"RATE_LIMITED\";\n const retryAfter = error.headers?.[\"retry-after\"];\n if (retryAfter) {\n errorPayload.retryAfter = parseInt(retryAfter, 10);\n }\n }\n\n if (win && !win.isDestroyed()) {\n win.webContents.send(LLM_STREAM_ERROR, errorPayload);\n }\n } finally {\n activeRequests.delete(requestId);\n }\n },\n\n /**\n * abortRequest\n * Cancel an in-flight LLM request.\n *\n * @param {BrowserWindow} win - the window (unused but kept for API consistency)\n * @param {string} requestId - the request to cancel\n * @returns {{ success: boolean }}\n */\n abortRequest: (win, requestId) => {\n const controller = activeRequests.get(requestId);\n if (controller) {\n controller.abort();\n activeRequests.delete(requestId);\n return { success: true };\n }\n // Fallback to CLI controller\n return cliController.abortRequest(requestId);\n },\n};\n\nmodule.exports = llmController;\n","/**\n * dashboardConfigValidator.js\n *\n * Validates dashboard configuration objects against the dashboard-config schema.\n * Runs in the Electron main process (CJS).\n *\n * Uses a lightweight validation approach based on the JSON Schema definition\n * without requiring a full JSON Schema validator library.\n */\n\nconst schema = require(\"./dashboard-config.schema.json\");\n\nconst CURRENT_SCHEMA_VERSION = \"1.0.0\";\n\n/**\n * Validate a dashboard configuration object.\n *\n * @param {Object} config - The dashboard config to validate\n * @returns {{ valid: boolean, errors: string[] }} Validation result\n */\nfunction validateDashboardConfig(config) {\n const errors = [];\n\n if (config === null || config === undefined || typeof config !== \"object\") {\n return { valid: false, errors: [\"Config must be a non-null object\"] };\n }\n\n // Required fields\n for (const field of schema.required) {\n if (!(field in config)) {\n errors.push(`Missing required field: \"${field}\"`);\n }\n }\n\n // If required fields are missing, return early — further checks would be noisy\n if (errors.length > 0) {\n return { valid: false, errors };\n }\n\n // schemaVersion\n if (typeof config.schemaVersion !== \"string\") {\n errors.push(`\"schemaVersion\" must be a string`);\n } else if (!/^\\d+\\.\\d+\\.\\d+$/.test(config.schemaVersion)) {\n errors.push(\n `\"schemaVersion\" must be a semver string (e.g., \"1.0.0\"), got \"${config.schemaVersion}\"`,\n );\n }\n\n // name\n if (typeof config.name !== \"string\" || config.name.length === 0) {\n errors.push(`\"name\" must be a non-empty string`);\n } else if (config.name.length > 100) {\n errors.push(`\"name\" must be 100 characters or fewer`);\n }\n\n // description (optional)\n if (\"description\" in config && typeof config.description !== \"string\") {\n errors.push(`\"description\" must be a string`);\n }\n\n // author (optional)\n if (\"author\" in config) {\n if (\n typeof config.author !== \"object\" ||\n config.author === null ||\n Array.isArray(config.author)\n ) {\n errors.push(`\"author\" must be an object with at least a \"name\" field`);\n } else if (!config.author.name || typeof config.author.name !== \"string\") {\n errors.push(`\"author.name\" must be a non-empty string`);\n }\n }\n\n // shareable (optional)\n if (\"shareable\" in config && typeof config.shareable !== \"boolean\") {\n errors.push(`\"shareable\" must be a boolean`);\n }\n\n // tags (optional)\n if (\"tags\" in config) {\n if (!Array.isArray(config.tags)) {\n errors.push(`\"tags\" must be an array of strings`);\n } else {\n for (let i = 0; i < config.tags.length; i++) {\n if (typeof config.tags[i] !== \"string\") {\n errors.push(`\"tags[${i}]\" must be a string`);\n }\n }\n }\n }\n\n // workspace\n if (typeof config.workspace !== \"object\" || config.workspace === null) {\n errors.push(`\"workspace\" must be an object`);\n } else {\n if (!Array.isArray(config.workspace.layout)) {\n errors.push(`\"workspace.layout\" must be an array`);\n } else if (config.workspace.layout.length === 0) {\n errors.push(`\"workspace.layout\" must contain at least one layout item`);\n }\n }\n\n // widgets\n if (!Array.isArray(config.widgets)) {\n errors.push(`\"widgets\" must be an array`);\n } else {\n for (let i = 0; i < config.widgets.length; i++) {\n const w = config.widgets[i];\n if (typeof w !== \"object\" || w === null) {\n errors.push(`\"widgets[${i}]\" must be an object`);\n continue;\n }\n if (!w.id || typeof w.id !== \"string\") {\n errors.push(`\"widgets[${i}].id\" must be a non-empty string`);\n }\n if (!w.package || typeof w.package !== \"string\") {\n errors.push(`\"widgets[${i}].package\" must be a non-empty string`);\n }\n if (\"version\" in w && typeof w.version !== \"string\") {\n errors.push(`\"widgets[${i}].version\" must be a string`);\n }\n if (\"required\" in w && typeof w.required !== \"boolean\") {\n errors.push(`\"widgets[${i}].required\" must be a boolean`);\n }\n if (\"author\" in w && typeof w.author !== \"string\") {\n errors.push(`\"widgets[${i}].author\" must be a string`);\n }\n }\n }\n\n // providers (optional)\n if (\"providers\" in config) {\n if (!Array.isArray(config.providers)) {\n errors.push(`\"providers\" must be an array`);\n } else {\n const validClasses = [\"credential\", \"mcp\", \"api\"];\n for (let i = 0; i < config.providers.length; i++) {\n const p = config.providers[i];\n if (typeof p !== \"object\" || p === null) {\n errors.push(`\"providers[${i}]\" must be an object`);\n continue;\n }\n if (!p.type || typeof p.type !== \"string\") {\n errors.push(`\"providers[${i}].type\" must be a non-empty string`);\n }\n if (!validClasses.includes(p.providerClass)) {\n errors.push(\n `\"providers[${i}].providerClass\" must be \"credential\", \"mcp\", or \"api\", got \"${p.providerClass}\"`,\n );\n }\n if (\"usedBy\" in p && !Array.isArray(p.usedBy)) {\n errors.push(`\"providers[${i}].usedBy\" must be an array`);\n }\n }\n }\n }\n\n // appOrigin (optional)\n if (\"appOrigin\" in config) {\n if (typeof config.appOrigin !== \"string\") {\n errors.push(`\"appOrigin\" must be a string`);\n } else if (config.appOrigin.length > 200) {\n errors.push(`\"appOrigin\" must be 200 characters or fewer`);\n }\n }\n\n // eventWiring (optional)\n if (\"eventWiring\" in config) {\n if (!Array.isArray(config.eventWiring)) {\n errors.push(`\"eventWiring\" must be an array`);\n } else {\n for (let i = 0; i < config.eventWiring.length; i++) {\n const ew = config.eventWiring[i];\n if (typeof ew !== \"object\" || ew === null) {\n errors.push(`\"eventWiring[${i}]\" must be an object`);\n continue;\n }\n // source\n if (\n typeof ew.source !== \"object\" ||\n ew.source === null ||\n !ew.source.widget ||\n !ew.source.event\n ) {\n errors.push(\n `\"eventWiring[${i}].source\" must have \"widget\" and \"event\" strings`,\n );\n }\n // target\n if (\n typeof ew.target !== \"object\" ||\n ew.target === null ||\n !ew.target.widget ||\n !ew.target.handler\n ) {\n errors.push(\n `\"eventWiring[${i}].target\" must have \"widget\" and \"handler\" strings`,\n );\n }\n }\n }\n }\n\n // Reject unknown top-level fields\n const allowedFields = Object.keys(schema.properties);\n for (const key of Object.keys(config)) {\n if (!allowedFields.includes(key)) {\n errors.push(`Unknown field: \"${key}\"`);\n }\n }\n\n return { valid: errors.length === 0, errors };\n}\n\n/**\n * Apply defaults to a dashboard config (fills in optional fields with defaults).\n *\n * @param {Object} config - A valid dashboard config\n * @returns {Object} Config with defaults applied (does not mutate original)\n */\nfunction applyDefaults(config) {\n return {\n schemaVersion: CURRENT_SCHEMA_VERSION,\n description: \"\",\n shareable: true,\n tags: [],\n icon: \"grip\",\n screenshots: [],\n providers: [],\n eventWiring: [],\n ...config,\n workspace: {\n type: \"workspace\",\n version: 1,\n menuId: 1,\n ...config.workspace,\n },\n };\n}\n\nmodule.exports = {\n validateDashboardConfig,\n applyDefaults,\n CURRENT_SCHEMA_VERSION,\n};\n","/**\n * dashboardConfigUtils.js\n *\n * Pure utility functions for dashboard config export/import.\n * No Electron dependencies — safe to test and reuse anywhere.\n */\n\n/**\n * Collect all widget component names from a workspace layout.\n * Walks the layout tree and grid cells to find all placed components.\n *\n * @param {Array} layout - The workspace layout array\n * @returns {string[]} Unique component names\n */\nfunction collectComponentNames(layout) {\n const components = new Set();\n\n for (const item of layout) {\n // Direct component reference\n if (item.component && item.type === \"widget\") {\n components.add(item.component);\n }\n\n // Grid cells\n if (item.grid) {\n for (const [key, cell] of Object.entries(item.grid)) {\n // Grid cells are keyed as \"row.col\" (e.g., \"1.1\", \"2.3\")\n if (/^\\d+\\.\\d+$/.test(key) && cell && cell.component) {\n // cell.component can be a string (component name) or a number (layout item id)\n if (typeof cell.component === \"string\") {\n components.add(cell.component);\n }\n }\n }\n }\n }\n\n // Also check child items that reference components via grid\n // The layout is a flat array — items with type \"widget\" have a component name\n for (const item of layout) {\n if (\n item.component &&\n item.component !== \"LayoutGridContainer\" &&\n item.component !== \"Container\"\n ) {\n components.add(item.component);\n }\n }\n\n // Remove container components — these are layout containers, not widgets\n components.delete(\"LayoutGridContainer\");\n components.delete(\"Container\");\n\n return Array.from(components);\n}\n\n/**\n * Extract event wiring from a workspace layout.\n * Reads the `listeners` property from layout items and converts\n * them to the dashboard config eventWiring format.\n *\n * LayoutModel.listeners format:\n * { \"eventName\": { \"sourceWidget\": \"handlerName\" } }\n * or\n * { \"eventName\": \"SourceWidget\" }\n *\n * Dashboard config eventWiring format:\n * [{ source: { widget, event }, target: { widget, handler } }]\n *\n * @param {Array} layout - The workspace layout array\n * @returns {Array} Event wiring array\n */\nfunction extractEventWiring(layout) {\n const wiring = [];\n\n for (const item of layout) {\n if (!item.listeners || typeof item.listeners !== \"object\") continue;\n\n const targetWidget = item.component;\n if (!targetWidget) continue;\n\n for (const [eventName, listenerConfig] of Object.entries(item.listeners)) {\n if (typeof listenerConfig === \"string\") {\n // Simple format: \"SourceWidget\"\n wiring.push({\n source: { widget: listenerConfig, event: eventName },\n target: { widget: targetWidget, handler: eventName },\n });\n } else if (\n typeof listenerConfig === \"object\" &&\n listenerConfig !== null\n ) {\n // Object format: { \"SourceWidget\": \"handlerName\" }\n for (const [sourceKey, handlerValue] of Object.entries(\n listenerConfig,\n )) {\n const parts = sourceKey.split(\".\");\n const sourceWidget = parts[0];\n\n let handler = eventName;\n if (typeof handlerValue === \"string\") {\n handler = handlerValue;\n }\n\n wiring.push({\n source: { widget: sourceWidget, event: eventName },\n target: { widget: targetWidget, handler },\n });\n }\n }\n }\n }\n\n return wiring;\n}\n\n/**\n * Build the widget dependencies array from component names and\n * installed widget metadata.\n *\n * @param {string[]} componentNames - Widget component names from layout\n * @param {Object} widgetRegistry - WidgetRegistry instance (optional, needs getWidgets())\n * @returns {Array} Widget dependency objects for the dashboard config\n */\nfunction buildWidgetDependencies(componentNames, widgetRegistry = null) {\n const widgets = [];\n const seen = new Set();\n\n for (const name of componentNames) {\n if (seen.has(name)) continue;\n seen.add(name);\n\n let packageName = \"\";\n let version = \"*\";\n let author = \"\";\n\n // Try to resolve from widget registry\n if (widgetRegistry) {\n const installedWidgets = widgetRegistry.getWidgets();\n for (const w of installedWidgets) {\n if (w.componentNames && w.componentNames.includes(name)) {\n packageName = w.name || \"\";\n version = w.version || \"*\";\n author =\n typeof w.author === \"string\" ? w.author : w.author?.name || \"\";\n break;\n }\n }\n }\n\n widgets.push({\n id: packageName ? `${packageName}.${name}` : name,\n package: packageName || name,\n version,\n required: true,\n author: author || \"\",\n });\n }\n\n return widgets;\n}\n\n/**\n * Aggregate provider requirements from installed widget configs.\n *\n * @param {string[]} componentNames - Widget component names from layout\n * @param {Object} widgetRegistry - WidgetRegistry instance (optional, needs getWidgets())\n * @returns {Array} Provider requirement objects for the dashboard config\n */\nfunction buildProviderRequirements(componentNames, widgetRegistry = null) {\n const providerMap = new Map();\n\n if (!widgetRegistry) return [];\n\n const installedWidgets = widgetRegistry.getWidgets();\n\n for (const name of componentNames) {\n for (const w of installedWidgets) {\n if (w.providers && w.componentNames && w.componentNames.includes(name)) {\n for (const p of w.providers) {\n const key = `${p.type}:${p.providerClass}`;\n if (!providerMap.has(key)) {\n providerMap.set(key, {\n type: p.type,\n providerClass: p.providerClass,\n required: p.required !== false,\n usedBy: [],\n });\n }\n const entry = providerMap.get(key);\n if (!entry.usedBy.includes(name)) {\n entry.usedBy.push(name);\n }\n }\n }\n }\n }\n\n return Array.from(providerMap.values());\n}\n\n/**\n * Apply event wiring from a dashboard config to a workspace layout.\n * Converts the dashboard config `eventWiring` array back into\n * LayoutModel `listeners` format on the appropriate layout items.\n *\n * This is the reverse of `extractEventWiring`.\n *\n * Dashboard config eventWiring format:\n * [{ source: { widget, event }, target: { widget, handler } }]\n *\n * LayoutModel.listeners format:\n * { \"eventName\": { \"SourceWidget\": \"handlerName\" } }\n *\n * @param {Array} layout - The workspace layout array (mutated in place)\n * @param {Array} eventWiring - Event wiring array from dashboard config\n * @returns {Array} The modified layout array\n */\nfunction applyEventWiringToLayout(layout, eventWiring) {\n if (!eventWiring || !eventWiring.length) return layout;\n\n // Build a map of target widget -> listeners object\n // Each wiring entry: { source: { widget, event }, target: { widget, handler } }\n const listenersByTarget = new Map();\n\n for (const wire of eventWiring) {\n const targetWidget = wire.target?.widget;\n const sourceWidget = wire.source?.widget;\n const eventName = wire.source?.event;\n const handler = wire.target?.handler;\n\n if (!targetWidget || !sourceWidget || !eventName) continue;\n\n if (!listenersByTarget.has(targetWidget)) {\n listenersByTarget.set(targetWidget, {});\n }\n\n const listeners = listenersByTarget.get(targetWidget);\n\n if (!listeners[eventName]) {\n listeners[eventName] = {};\n }\n\n // Use handler value, defaulting to the event name\n listeners[eventName][sourceWidget] = handler || eventName;\n }\n\n // Apply listeners to matching layout items\n for (const item of layout) {\n if (!item.component) continue;\n\n const listeners = listenersByTarget.get(item.component);\n if (listeners) {\n // Merge with any existing listeners\n item.listeners = { ...(item.listeners || {}), ...listeners };\n }\n }\n\n return layout;\n}\n\n/**\n * Check compatibility of a dashboard config against installed widgets.\n * Returns a per-widget status report indicating what's installed,\n * what needs to be installed, and what's unavailable.\n *\n * @param {Array} dashboardWidgets - Widget deps from dashboard config (widgets array)\n * @param {Array} installedWidgets - Currently installed widget metadata (from widgetRegistry.getWidgets())\n * @param {Array} registryPackages - Available packages from registry index (optional)\n * @returns {Object} Compatibility report\n */\nfunction checkDashboardCompatibility(\n dashboardWidgets = [],\n installedWidgets = [],\n registryPackages = [],\n) {\n const installedByName = new Map();\n for (const w of installedWidgets) {\n if (w.name) {\n installedByName.set(w.name, w);\n }\n }\n\n const registryByName = new Map();\n for (const p of registryPackages) {\n if (p.name) {\n registryByName.set(p.name, p);\n }\n }\n\n const widgets = [];\n let installedCount = 0;\n let toInstallCount = 0;\n let unavailableCount = 0;\n\n for (const dep of dashboardWidgets) {\n const packageName = dep.package;\n const required = dep.required !== false;\n const installed = installedByName.get(packageName);\n\n if (installed) {\n installedCount++;\n widgets.push({\n package: packageName,\n required,\n status: \"installed\",\n installedVersion: installed.version || null,\n requiredVersion: dep.version || \"*\",\n });\n } else if (registryByName.has(packageName)) {\n toInstallCount++;\n const registryPkg = registryByName.get(packageName);\n widgets.push({\n package: packageName,\n required,\n status: \"to-install\",\n availableVersion: registryPkg.version || null,\n requiredVersion: dep.version || \"*\",\n });\n } else {\n unavailableCount++;\n widgets.push({\n package: packageName,\n required,\n status: \"unavailable\",\n requiredVersion: dep.version || \"*\",\n });\n }\n }\n\n const hasUnavailableRequired = widgets.some(\n (w) => w.status === \"unavailable\" && w.required,\n );\n\n return {\n compatible: !hasUnavailableRequired,\n summary: {\n total: dashboardWidgets.length,\n installed: installedCount,\n toInstall: toInstallCount,\n unavailable: unavailableCount,\n },\n widgets,\n };\n}\n\n/**\n * Generate a registry manifest from a dashboard config.\n * Converts the internal .dashboard.json format into the registry\n * manifest.json format used by dash-registry.\n *\n * @param {Object} dashboardConfig - Validated dashboard config object\n * @param {Object} options - Publishing options\n * @param {string} options.githubUser - GitHub username / org for the package scope\n * @param {string} options.category - Registry category (default: \"general\")\n * @param {string} options.repository - Repository URL (optional)\n * @param {string} options.appOrigin - Originating app package name (optional)\n * @returns {Object} Registry manifest object\n */\nfunction generateRegistryManifest(dashboardConfig, options = {}) {\n const name = (dashboardConfig.name || \"dashboard\")\n .replace(/[^a-zA-Z0-9-_ ]/g, \"\")\n .replace(/\\s+/g, \"-\")\n .toLowerCase();\n\n const githubUser = options.githubUser || \"\";\n const version = \"1.0.0\";\n\n const manifest = {\n githubUser,\n name,\n displayName: dashboardConfig.name || \"Dashboard\",\n author: dashboardConfig.author?.name || \"\",\n description: dashboardConfig.description || \"\",\n version,\n type: \"dashboard\",\n category: options.category || \"general\",\n tags: dashboardConfig.tags || [],\n icon: dashboardConfig.icon || \"grip\",\n downloadUrl: `https://github.com/${githubUser}/dash-registry/releases/download/${githubUser}--${name}--v{version}/dashboard-${name}-v{version}.zip`,\n repository: options.repository || \"\",\n publishedAt: new Date().toISOString(),\n widgets: (dashboardConfig.widgets || []).map((w) => ({\n id: w.id,\n name: w.id ? w.id.split(\".\").pop() : w.package,\n package: w.package,\n version: w.version || \"*\",\n required: w.required !== false,\n author: w.author || \"\",\n })),\n providers: dashboardConfig.providers || [],\n eventWiring: dashboardConfig.eventWiring || [],\n };\n\n if (options.appOrigin || dashboardConfig.appOrigin) {\n manifest.appOrigin = options.appOrigin || dashboardConfig.appOrigin;\n }\n\n return manifest;\n}\n\n/**\n * Build a structured preview object from a dashboard registry package\n * or dashboard config. Provides all data needed for a rich preview UI.\n *\n * @param {Object} source - Registry package manifest or dashboard config\n * @returns {Object} Structured preview with metadata, widgets, wiring, providers\n */\nfunction buildDashboardPreview(source) {\n const preview = {\n name: source.displayName || source.name || \"Dashboard\",\n description: source.description || \"\",\n author:\n typeof source.author === \"object\"\n ? source.author.name || \"\"\n : source.author || \"\",\n authorId: typeof source.author === \"object\" ? source.author.id || \"\" : \"\",\n version: source.version || \"\",\n icon: source.icon || \"grip\",\n tags: source.tags || [],\n screenshots: source.screenshots || [],\n publishedAt: source.publishedAt || null,\n category: source.category || \"general\",\n widgets: (source.widgets || []).map((w) => ({\n name: w.name || w.id || w.package || \"\",\n package: w.package || \"\",\n version: w.version || \"*\",\n required: w.required !== false,\n author: w.author || \"\",\n })),\n eventWiring: (source.eventWiring || []).map((wire) => ({\n raw: wire,\n summary: `${wire.source?.widget || \"?\"}.${wire.source?.event || \"?\"} → ${wire.target?.widget || \"?\"}.${wire.target?.handler || wire.source?.event || \"?\"}`,\n })),\n providers: (source.providers || []).map((p) => ({\n type: p.type || \"\",\n providerClass: p.providerClass || \"\",\n required: p.required !== false,\n usedBy: p.usedBy || [],\n })),\n appOrigin: source.appOrigin || null,\n summary: {\n widgetCount: (source.widgets || []).length,\n eventCount: (source.eventWiring || []).length,\n providerCount: (source.providers || []).length,\n requiredWidgets: (source.widgets || []).filter(\n (w) => w.required !== false,\n ).length,\n optionalWidgets: (source.widgets || []).filter(\n (w) => w.required === false,\n ).length,\n },\n };\n\n return preview;\n}\n\n/**\n * Check installed dashboards for available updates in the registry.\n *\n * Compares the `_dashboardConfig.installedVersion` of each workspace\n * against the current version in the registry.\n *\n * @param {Array} workspaces - All workspaces from workspaces.json\n * @param {Array} registryPackages - Packages from registry index\n * @returns {Array} Update records with workspace info and version comparison\n */\nfunction checkDashboardUpdates(workspaces = [], registryPackages = []) {\n const registryByName = new Map();\n for (const pkg of registryPackages) {\n if (pkg.name && (pkg.type || \"widget\") === \"dashboard\") {\n registryByName.set(pkg.name, pkg);\n }\n }\n\n const updates = [];\n\n for (const ws of workspaces) {\n const config = ws._dashboardConfig;\n if (!config || !config.registryPackage) continue;\n\n const registryPkg = registryByName.get(config.registryPackage);\n if (!registryPkg) continue;\n\n const installedVersion = config.installedVersion || \"0.0.0\";\n const latestVersion = registryPkg.version || \"0.0.0\";\n\n if (installedVersion !== latestVersion) {\n updates.push({\n workspaceId: ws.id,\n workspaceName: ws.name || ws.label || \"\",\n registryPackage: config.registryPackage,\n installedVersion,\n latestVersion,\n importedAt: config.importedAt || null,\n });\n }\n }\n\n return updates;\n}\n\n/**\n * Build a provider setup manifest for a dashboard's requirements.\n * Compares required providers against configured providers,\n * returning status (configured/needs-setup) for each.\n *\n * @param {Array} requiredProviders - Provider requirements from dashboard config\n * @param {Array} configuredProviders - User's configured providers (from providerController)\n * @returns {Object} Setup manifest with per-provider status\n */\nfunction buildProviderSetupManifest(\n requiredProviders = [],\n configuredProviders = [],\n) {\n const configuredByType = new Map();\n for (const p of configuredProviders) {\n const key = p.type || p.name || \"\";\n if (key) {\n configuredByType.set(key.toLowerCase(), p);\n }\n }\n\n const providers = requiredProviders.map((req) => {\n const typeKey = (req.type || \"\").toLowerCase();\n const configured = configuredByType.get(typeKey);\n\n return {\n type: req.type || \"\",\n providerClass: req.providerClass || \"\",\n required: req.required !== false,\n usedBy: req.usedBy || [],\n status: configured ? \"configured\" : \"needs-setup\",\n configuredProvider: configured || null,\n };\n });\n\n const configuredCount = providers.filter(\n (p) => p.status === \"configured\",\n ).length;\n const needsSetupCount = providers.filter(\n (p) => p.status === \"needs-setup\",\n ).length;\n\n return {\n allConfigured: needsSetupCount === 0,\n summary: {\n total: providers.length,\n configured: configuredCount,\n needsSetup: needsSetupCount,\n },\n providers,\n };\n}\n\n/**\n * Check API compatibility of a package against the app's capabilities.\n * Extracts providers with providerClass \"api\" and checks whether\n * each required API namespace is present in the app's capability set.\n *\n * @param {Array} providers - Provider requirements (from widget config or package manifest)\n * @param {string[]} appCapabilities - API namespaces the app exposes (e.g., Object.keys(window.mainApi))\n * @returns {Object} Compatibility report\n */\nfunction checkApiCompatibility(providers = [], appCapabilities = []) {\n const capSet = new Set(appCapabilities.map((c) => c.toLowerCase()));\n\n const apiProviders = providers.filter((p) => p.providerClass === \"api\");\n\n if (apiProviders.length === 0) {\n return { compatible: true, missingApis: [], requiredApis: [] };\n }\n\n const requiredApis = apiProviders\n .filter((p) => p.required !== false)\n .map((p) => p.type);\n const missingApis = requiredApis.filter(\n (api) => !capSet.has(api.toLowerCase()),\n );\n\n return {\n compatible: missingApis.length === 0,\n missingApis,\n requiredApis,\n };\n}\n\nmodule.exports = {\n collectComponentNames,\n extractEventWiring,\n buildWidgetDependencies,\n buildProviderRequirements,\n applyEventWiringToLayout,\n checkDashboardCompatibility,\n generateRegistryManifest,\n buildDashboardPreview,\n checkDashboardUpdates,\n buildProviderSetupManifest,\n checkApiCompatibility,\n};\n","/**\n * Widget Compiler\n *\n * Compiles raw widget source files (.js + .dash.js) into a single CJS bundle\n * using esbuild. The output bundle is consumable by the existing\n * widgetBundleLoader.js eval pipeline (new Function() + require shim).\n *\n * Runs in the Electron main process at widget install time.\n */\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\n\n/**\n * Find the widgets/ directory, handling nested ZIP extraction.\n *\n * ZIP extraction can create a nested structure like:\n * Weather/weather-widget/widgets/ instead of Weather/widgets/\n *\n * If widgets/ doesn't exist at root, check one level deeper for a\n * single subdirectory that contains widgets/.\n *\n * @param {string} widgetPath - Absolute path to the widget directory\n * @returns {string|null} Path to the widgets/ directory, or null\n */\nfunction findWidgetsDir(widgetPath) {\n const direct = path.join(widgetPath, \"widgets\");\n if (fs.existsSync(direct)) {\n return direct;\n }\n\n // Check configs/ directory (used by packageZip.js for distributed widgets)\n const configs = path.join(widgetPath, \"configs\");\n if (fs.existsSync(configs)) {\n return configs;\n }\n\n // Check one level deeper for nested ZIP extraction\n try {\n const entries = fs.readdirSync(widgetPath, { withFileTypes: true });\n const subdirs = entries.filter(\n (e) =>\n e.isDirectory() &&\n !e.name.startsWith(\".\") &&\n e.name !== \"dist\" &&\n e.name !== \"node_modules\",\n );\n\n for (const subdir of subdirs) {\n const nested = path.join(widgetPath, subdir.name, \"widgets\");\n if (fs.existsSync(nested)) {\n console.log(`[WidgetCompiler] Found nested widgets/ at ${nested}`);\n return nested;\n }\n }\n } catch (err) {\n // Non-fatal — fall through to null\n }\n\n return null;\n}\n\n/**\n * Compile widget source files into a CJS bundle at dist/index.cjs.js.\n *\n * For each {Name}.dash.js found in the widgets/ directory, a synthetic\n * entry point is generated that imports the component + config and\n * re-exports them as `{ ...config, component }` — matching what\n * extractWidgetConfigs() in widgetBundleLoader.js expects.\n *\n * @param {string} widgetPath - Absolute path to the widget directory\n * @returns {Promise<string|null>} Path to the compiled bundle, or null if nothing to compile\n */\nasync function compileWidget(widgetPath) {\n const widgetsDir = findWidgetsDir(widgetPath);\n\n if (!widgetsDir) {\n console.log(\n `[WidgetCompiler] No widgets/ directory in ${widgetPath}, skipping`,\n );\n return null;\n }\n\n // Discover .dash.js config files\n const files = fs.readdirSync(widgetsDir);\n const dashFiles = files.filter((f) => f.endsWith(\".dash.js\"));\n\n if (dashFiles.length === 0) {\n console.log(\n `[WidgetCompiler] No .dash.js files found in ${widgetsDir}, skipping`,\n );\n return null;\n }\n\n // Build a synthetic entry point that pairs each component with its config.\n // Compute relative path from the entry file (in widgetPath) to widgetsDir,\n // since widgetsDir may be nested (e.g., ./weather-widget/widgets/).\n const relWidgetsDir =\n \"./\" + path.relative(widgetPath, widgetsDir).split(path.sep).join(\"/\");\n const imports = [];\n const exportParts = [];\n\n for (const dashFile of dashFiles) {\n const componentName = dashFile.replace(\".dash.js\", \"\");\n const componentFile = `${componentName}.js`;\n const componentFilePath = path.join(widgetsDir, componentFile);\n const hasComponent = fs.existsSync(componentFilePath);\n\n // Import the config (always)\n imports.push(\n `import ${componentName}Config from \"${relWidgetsDir}/${dashFile}\";`,\n );\n\n if (hasComponent) {\n // Import the component and merge with config\n imports.push(\n `import ${componentName}Comp from \"${relWidgetsDir}/${componentFile}\";`,\n );\n exportParts.push(\n `export const ${componentName} = { ...${componentName}Config, component: ${componentName}Comp };`,\n );\n } else {\n // Config-only (no component source file)\n exportParts.push(\n `export const ${componentName} = ${componentName}Config;`,\n );\n }\n }\n\n const entryContent = [...imports, \"\", ...exportParts, \"\"].join(\"\\n\");\n\n // Write temporary entry file in the widget root\n const entryPath = path.join(widgetPath, \"__compile_entry.js\");\n const distDir = path.join(widgetPath, \"dist\");\n const outPath = path.join(distDir, \"index.cjs.js\");\n\n try {\n // Ensure dist/ directory exists\n if (!fs.existsSync(distDir)) {\n fs.mkdirSync(distDir, { recursive: true });\n }\n\n fs.writeFileSync(entryPath, entryContent, \"utf8\");\n\n console.log(\n `[WidgetCompiler] Compiling ${dashFiles.length} component(s) from ${widgetPath}`,\n );\n\n // Lazy-require esbuild so the module doesn't fail to load if\n // esbuild is not yet installed (e.g., during first npm install)\n const esbuild = require(\"esbuild\");\n\n await esbuild.build({\n entryPoints: [entryPath],\n bundle: true,\n format: \"cjs\",\n outfile: outPath,\n // These modules are provided by the host app via MODULE_MAP\n // in widgetBundleLoader.js — do NOT bundle them\n external: [\n \"react\",\n \"react-dom\",\n \"@trops/dash-react\",\n \"@trops/dash-core\",\n \"react/jsx-runtime\",\n \"prop-types\",\n ],\n // Treat .js files as JSX (widget sources use JSX in .js files)\n loader: { \".js\": \"jsx\" },\n logLevel: \"warning\",\n });\n\n console.log(`[WidgetCompiler] Compiled successfully → ${outPath}`);\n return outPath;\n } catch (error) {\n console.error(\n `[WidgetCompiler] Compilation failed for ${widgetPath}:`,\n error,\n );\n throw error;\n } finally {\n // Clean up temporary entry file\n try {\n if (fs.existsSync(entryPath)) {\n fs.unlinkSync(entryPath);\n }\n } catch (cleanupError) {\n // Non-fatal\n console.warn(\n `[WidgetCompiler] Could not remove temp entry file:`,\n cleanupError,\n );\n }\n }\n}\n\nmodule.exports = { compileWidget, findWidgetsDir };\n","/**\n * Dynamic Widget Loader\n *\n * Loads React components and configurations from downloaded/local widget paths\n * Works with widgets that follow the Dash widget structure:\n * - widgets/\n * - WidgetName.js (React component)\n * - WidgetName.dash.js (configuration)\n *\n * Integrates with ComponentManager for automatic registration\n */\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst vm = require(\"vm\");\nconst { findWidgetsDir } = require(\"./widgetCompiler\");\n\nclass DynamicWidgetLoader {\n constructor(componentManager = null) {\n this.loadedWidgets = new Map();\n this.moduleCache = new Map();\n this.componentManager = componentManager;\n }\n\n /**\n * Set ComponentManager instance for automatic widget registration\n * @param {Object} manager - ComponentManager instance from @trops/dash-react\n */\n setComponentManager(manager) {\n this.componentManager = manager;\n }\n\n /**\n * Load a widget from a local path\n * @param {string} widgetName - Name of the widget (e.g., \"MyFirstWidget\")\n * @param {string} widgetPath - Path to the widget directory\n * @param {string} componentName - Name of the component file (e.g., \"MyFirstWidgetWidget\")\n * @param {boolean} autoRegister - Automatically register with ComponentManager (if available)\n * @returns {Promise<Object>} { component, config, registered }\n */\n async loadWidget(widgetName, widgetPath, componentName, autoRegister = true) {\n try {\n const cacheKey = `${widgetName}:${componentName}`;\n\n if (this.loadedWidgets.has(cacheKey)) {\n console.log(`[DynamicWidgetLoader] Loading ${widgetName} from cache`);\n return this.loadedWidgets.get(cacheKey);\n }\n\n console.log(\n `[DynamicWidgetLoader] Loading widget: ${widgetName} from ${widgetPath}`,\n );\n\n const widgetsDir =\n findWidgetsDir(widgetPath) || path.join(widgetPath, \"widgets\");\n const componentPath = path.join(widgetsDir, `${componentName}.js`);\n const configPath = path.join(widgetsDir, `${componentName}.dash.js`);\n\n if (!fs.existsSync(componentPath)) {\n throw new Error(`Component file not found: ${componentPath}`);\n }\n if (!fs.existsSync(configPath)) {\n throw new Error(`Config file not found: ${configPath}`);\n }\n\n const config = await this.loadConfigFile(configPath);\n\n const component = {\n path: componentPath,\n name: componentName,\n };\n\n let registered = false;\n\n if (autoRegister && this.componentManager) {\n try {\n // Use scoped id as registration key if available,\n // otherwise fall back to componentName\n const registrationKey = config.id || componentName;\n this.componentManager.registerWidget(config, registrationKey);\n registered = true;\n console.log(\n `[DynamicWidgetLoader] ✓ Registered ${registrationKey} with ComponentManager`,\n );\n } catch (regError) {\n console.warn(\n `[DynamicWidgetLoader] Failed to register with ComponentManager:`,\n regError,\n );\n }\n }\n\n const result = { component, config, registered };\n this.loadedWidgets.set(cacheKey, result);\n\n return result;\n } catch (error) {\n console.error(\n `[DynamicWidgetLoader] Error loading widget ${widgetName}:`,\n error,\n );\n throw error;\n }\n }\n\n /**\n * Load and parse a .dash.js configuration file\n * @param {string} configPath - Path to the .dash.js file\n * @returns {Promise<Object>} Configuration object\n */\n async loadConfigFile(configPath) {\n try {\n const source = fs.readFileSync(configPath, \"utf8\");\n\n let exportMatch = source.match(/export\\s+default\\s+({[\\s\\S]*});?\\s*$/);\n\n // Handle variable export pattern: const x = {...}; export default x;\n if (!exportMatch) {\n const varExportMatch = source.match(\n /export\\s+default\\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\\s*;?\\s*$/,\n );\n if (varExportMatch) {\n const varName = varExportMatch[1];\n const varDeclMatch = source.match(\n new RegExp(\n `(?:const|let|var)\\\\s+${varName}\\\\s*=\\\\s*({[\\\\s\\\\S]*?});\\\\s*(?:export\\\\s+default)`,\n ),\n );\n if (varDeclMatch) {\n exportMatch = varDeclMatch;\n }\n }\n }\n\n if (!exportMatch) {\n throw new Error(\"Could not find default export in config file\");\n }\n\n // Sanitize component references so vm.runInContext doesn't fail\n // on unresolvable imports — replace component: SomeName with component: \"SomeName\"\n const exportedObjectStr = exportMatch[1].replace(\n /component\\s*:\\s*([A-Z][a-zA-Z0-9_$]*)/g,\n 'component: \"$1\"',\n );\n\n const context = vm.createContext({ module: { exports: {} } });\n vm.runInContext(`module.exports = ${exportedObjectStr}`, context);\n\n return context.module.exports;\n } catch (error) {\n console.error(`[DynamicWidgetLoader] Error loading config:`, error);\n throw error;\n }\n }\n\n /**\n * Discover available widgets in a directory\n * @param {string} widgetPath - Path to search for widgets\n * @returns {Array} List of available widget names\n */\n discoverWidgets(widgetPath) {\n try {\n const widgetsDir = findWidgetsDir(widgetPath);\n if (!widgetsDir) {\n return [];\n }\n\n const files = fs.readdirSync(widgetsDir);\n const widgets = new Set();\n\n files.forEach((file) => {\n if (file.endsWith(\".dash.js\")) {\n const componentName = file.replace(\".dash.js\", \"\");\n widgets.add(componentName);\n }\n });\n\n return Array.from(widgets);\n } catch (error) {\n console.error(`[DynamicWidgetLoader] Error discovering widgets:`, error);\n return [];\n }\n }\n\n /**\n * Clear cache\n */\n clearCache() {\n this.loadedWidgets.clear();\n this.moduleCache.clear();\n }\n}\n\nconst dynamicWidgetLoader = new DynamicWidgetLoader();\n\nmodule.exports = DynamicWidgetLoader;\nmodule.exports.dynamicWidgetLoader = dynamicWidgetLoader;\n","/**\n * Widget Registry System\n *\n * Manages widget discovery, download, and dynamic loading\n * Widgets are expected to have:\n * - package.json (or dash.json) with metadata\n * - widgets/ folder containing [WidgetName].js and [WidgetName].dash.js\n *\n * Files are stored in the Electron app's userData directory:\n * - macOS: ~/Library/Application Support/[appName]/\n * - Windows: %APPDATA%/[appName]/\n * - Linux: ~/.config/[appName]/\n */\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst os = require(\"os\");\nconst AdmZip = require(\"adm-zip\");\nconst { fileURLToPath } = require(\"url\");\nconst { app, ipcMain, BrowserWindow } = require(\"electron\");\nconst { dynamicWidgetLoader } = require(\"./dynamicWidgetLoader\");\nconst { compileWidget, findWidgetsDir } = require(\"./widgetCompiler\");\n\nlet WIDGETS_CACHE_DIR = null;\nlet REGISTRY_CONFIG_FILE = null;\n\n/**\n * Validate ZIP entries to prevent path traversal attacks.\n * Rejects entries containing '..' segments or absolute paths that would\n * write outside the target extraction directory.\n * @param {AdmZip} zip - AdmZip instance\n * @param {string} targetDir - Intended extraction directory\n * @throws {Error} If any entry would escape the target directory\n */\nfunction validateZipEntries(zip, targetDir) {\n const resolvedTarget = path.resolve(targetDir);\n for (const entry of zip.getEntries()) {\n const entryPath = entry.entryName;\n // Reject entries with '..' path segments\n if (\n entryPath.split(\"/\").includes(\"..\") ||\n entryPath.split(\"\\\\\").includes(\"..\")\n ) {\n throw new Error(\n `Malicious ZIP entry rejected (path traversal): ${entryPath}`,\n );\n }\n // Reject absolute paths\n if (path.isAbsolute(entryPath)) {\n throw new Error(\n `Malicious ZIP entry rejected (absolute path): ${entryPath}`,\n );\n }\n // Final check: resolved path must be within target directory\n const resolvedEntry = path.resolve(resolvedTarget, entryPath);\n if (\n !resolvedEntry.startsWith(resolvedTarget + path.sep) &&\n resolvedEntry !== resolvedTarget\n ) {\n throw new Error(\n `Malicious ZIP entry rejected (escapes target): ${entryPath}`,\n );\n }\n }\n}\n\n/**\n * Initialize registry with custom path or default userData path\n * @param {string} customPath - Optional custom path for storing widgets\n */\nfunction initializeRegistry(customPath = null) {\n if (customPath) {\n WIDGETS_CACHE_DIR = path.join(customPath, \"widgets\");\n } else {\n WIDGETS_CACHE_DIR = path.join(app.getPath(\"userData\"), \"widgets\");\n }\n REGISTRY_CONFIG_FILE = path.join(WIDGETS_CACHE_DIR, \"registry.json\");\n console.log(`[WidgetRegistry] Using storage path: ${WIDGETS_CACHE_DIR}`);\n}\n\nclass WidgetRegistry {\n constructor(componentManager = null, customPath = null) {\n if (!WIDGETS_CACHE_DIR) {\n initializeRegistry(customPath);\n }\n\n this.widgets = new Map();\n this.componentManager = componentManager;\n this.ensureCacheDir();\n this.loadRegistry();\n }\n\n /**\n * Static method to initialize registry with custom path\n * Call this early in your app startup (e.g., in main.js)\n * @param {string} customPath - Custom path for storing widgets/configs\n */\n static initialize(customPath = null) {\n initializeRegistry(customPath);\n }\n\n /**\n * Set ComponentManager instance for automatic widget registration\n * @param {Object} manager - ComponentManager instance from @trops/dash-react\n */\n setComponentManager(manager) {\n this.componentManager = manager;\n }\n\n /**\n * Ensure cache directory exists\n */\n ensureCacheDir() {\n if (!fs.existsSync(WIDGETS_CACHE_DIR)) {\n fs.mkdirSync(WIDGETS_CACHE_DIR, { recursive: true });\n }\n }\n\n /**\n * Load registry from disk\n */\n loadRegistry() {\n try {\n if (fs.existsSync(REGISTRY_CONFIG_FILE)) {\n const data = fs.readFileSync(REGISTRY_CONFIG_FILE, \"utf8\");\n const registryData = JSON.parse(data);\n this.widgets = new Map(registryData.widgets || []);\n console.log(\n `[WidgetRegistry] Loaded ${this.widgets.size} widgets from cache`,\n );\n }\n } catch (error) {\n console.error(\"[WidgetRegistry] Error loading registry:\", error);\n }\n }\n\n /**\n * Save registry to disk\n */\n saveRegistry() {\n try {\n const registryData = {\n lastUpdated: new Date().toISOString(),\n widgets: Array.from(this.widgets.entries()),\n };\n fs.writeFileSync(\n REGISTRY_CONFIG_FILE,\n JSON.stringify(registryData, null, 2),\n );\n } catch (error) {\n console.error(\"[WidgetRegistry] Error saving registry:\", error);\n }\n }\n\n /**\n * Resolve download URL from partial template or full URL\n * Supports placeholders: {version}, {name}\n *\n * Examples:\n * - Full URL: \"https://github.com/user/widget/releases/download/v1.0.0/widget.zip\"\n * - Template: \"https://github.com/user/weather-widget/releases/download/v{version}/weather-widget.zip\"\n * - Partial: \"https://github.com/user/weather-widget/releases/download/\" (auto-generates v{version}/{name}.zip)\n *\n * @param {string} urlTemplate - URL template or partial URL\n * @param {string} version - Widget version (e.g., \"1.0.0\")\n * @param {string} name - Widget name (e.g., \"weather-widget\")\n * @returns {string} Resolved download URL\n */\n resolveDownloadUrl(urlTemplate, version, name) {\n if (!urlTemplate) return null;\n\n if (urlTemplate.endsWith(\"/\")) {\n return `${urlTemplate}v${version}/${name}.zip`;\n }\n\n let url = urlTemplate;\n url = url.replace(\"{version}\", version);\n url = url.replace(\"{name}\", name);\n return url;\n }\n\n /**\n * Determine if the input points to a local path (file:// or filesystem path)\n * @param {string} input - URL or path\n * @returns {boolean}\n */\n isLocalSource(input) {\n if (!input) return false;\n if (input.startsWith(\"file://\")) return true;\n if (input.startsWith(\"http://\") || input.startsWith(\"https://\"))\n return false;\n const resolvedPath = this.resolveLocalPath(input);\n return fs.existsSync(resolvedPath);\n }\n\n /**\n * Normalize a local path (supports file:// and ~)\n * @param {string} input - Local path or file:// URL\n * @returns {string}\n */\n resolveLocalPath(input) {\n if (input.startsWith(\"file://\")) {\n return fileURLToPath(input);\n }\n if (input.startsWith(\"~\")) {\n return path.join(os.homedir(), input.slice(1));\n }\n return path.resolve(input);\n }\n\n /**\n * Install a widget from a local ZIP file or folder path\n * @param {string} widgetName - Name of the widget\n * @param {string} localPath - Path to ZIP file or widget folder\n * @param {boolean} autoRegister - Automatically register with ComponentManager\n * @param {string} dashConfigPath - Optional: path to dash.json metadata file\n * @returns {Promise<Object>} Widget configuration\n */\n async installFromLocalPath(\n widgetName,\n localPath,\n autoRegister = true,\n dashConfigPath = null,\n ) {\n try {\n const resolvedPath = this.resolveLocalPath(localPath);\n\n if (!fs.existsSync(resolvedPath)) {\n throw new Error(`Local path not found: ${resolvedPath}`);\n }\n\n const widgetPath = path.join(WIDGETS_CACHE_DIR, widgetName);\n\n if (fs.existsSync(widgetPath)) {\n fs.rmSync(widgetPath, { recursive: true });\n }\n\n const isDirectory = fs.statSync(resolvedPath).isDirectory();\n if (isDirectory) {\n fs.cpSync(resolvedPath, widgetPath, { recursive: true });\n } else if (resolvedPath.endsWith(\".zip\")) {\n const zip = new AdmZip(resolvedPath);\n validateZipEntries(zip, widgetPath);\n zip.extractAllTo(widgetPath, true);\n } else {\n throw new Error(`Unsupported local source type: ${resolvedPath}`);\n }\n\n let config = await this.loadWidgetConfig(widgetName, widgetPath);\n\n if (dashConfigPath) {\n const configPath = this.resolveLocalPath(dashConfigPath);\n if (fs.existsSync(configPath)) {\n const dashConfig = JSON.parse(fs.readFileSync(configPath, \"utf8\"));\n config = { ...config, ...dashConfig };\n }\n }\n\n this.registerWidget(widgetName, config, widgetPath, false);\n\n if (autoRegister) {\n await this.loadWidgetComponents(widgetName, widgetPath);\n }\n\n return config;\n } catch (error) {\n console.error(\n `[WidgetRegistry] Error installing local widget ${widgetName}:`,\n error,\n );\n throw error;\n }\n }\n\n /**\n * Check if a directory looks like a valid widget folder.\n * A directory is a widget if it has:\n * - package.json or dash.json at its root, OR\n * - A widgets/ subdirectory containing at least one .dash.js file\n * @param {string} dirPath - Path to the directory\n * @returns {boolean}\n */\n isWidgetFolder(dirPath) {\n if (fs.existsSync(path.join(dirPath, \"package.json\"))) return true;\n if (fs.existsSync(path.join(dirPath, \"dash.json\"))) return true;\n\n const widgetsDir = path.join(dirPath, \"widgets\");\n if (fs.existsSync(widgetsDir) && fs.statSync(widgetsDir).isDirectory()) {\n const files = fs.readdirSync(widgetsDir);\n if (files.some((f) => f.endsWith(\".dash.js\"))) return true;\n }\n\n return false;\n }\n\n /**\n * Register all widgets found in a local folder.\n *\n * Smart detection:\n * 1. If the selected folder itself is a widget, install it directly.\n * 2. Otherwise iterate subdirectories, skipping non-widget dirs.\n *\n * @param {string} folderPath - Path containing widget folders (or a single widget folder)\n * @param {boolean} autoRegister - Automatically register with ComponentManager\n * @returns {Promise<Array>} Registered widgets (with optional `mode` and `skipped` metadata)\n */\n async registerWidgetsFromFolder(folderPath, autoRegister = true) {\n const SKIP_DIRS = new Set([\"node_modules\", \"dist\", \"__MACOSX\", \".git\"]);\n\n try {\n const resolvedPath = this.resolveLocalPath(folderPath);\n if (!fs.existsSync(resolvedPath)) {\n throw new Error(`Folder not found: ${resolvedPath}`);\n }\n if (!fs.statSync(resolvedPath).isDirectory()) {\n throw new Error(`Path is not a directory: ${resolvedPath}`);\n }\n\n // 1. Check if the selected folder itself is a widget\n if (this.isWidgetFolder(resolvedPath)) {\n const widgetName = path.basename(resolvedPath);\n const config = await this.installFromLocalPath(\n widgetName,\n resolvedPath,\n autoRegister,\n );\n return [\n {\n name: widgetName,\n path: resolvedPath,\n ...config,\n mode: \"single\",\n },\n ];\n }\n\n // 2. Iterate subdirectories with filtering\n const entries = fs.readdirSync(resolvedPath, {\n withFileTypes: true,\n });\n const results = [];\n let skipped = 0;\n\n for (const entry of entries) {\n if (!entry.isDirectory()) continue;\n\n // Skip hidden dirs and known non-widget dirs\n if (entry.name.startsWith(\".\") || SKIP_DIRS.has(entry.name)) {\n skipped++;\n continue;\n }\n\n const widgetPath = path.join(resolvedPath, entry.name);\n\n if (!this.isWidgetFolder(widgetPath)) {\n skipped++;\n continue;\n }\n\n const config = await this.loadWidgetConfig(entry.name, widgetPath);\n this.registerWidget(entry.name, config, widgetPath, false);\n\n if (autoRegister) {\n await this.loadWidgetComponents(entry.name, widgetPath);\n }\n\n results.push({\n name: entry.name,\n path: widgetPath,\n ...config,\n });\n }\n\n // Attach skipped count as metadata on the array\n results.skipped = skipped;\n return results;\n } catch (error) {\n console.error(\n \"[WidgetRegistry] Error registering widgets from folder:\",\n error,\n );\n throw error;\n }\n }\n\n /**\n * Download widget from URL (ZIP file)\n * @param {string} widgetName - Name of the widget\n * @param {string} downloadUrl - URL to download ZIP file from (supports templates and partial URLs)\n * @param {string} dashConfigUrl - Optional: URL to dash.json metadata file\n * @param {boolean} autoRegister - Automatically register with ComponentManager\n * @returns {Promise<Object>} Widget configuration\n */\n async downloadWidget(\n widgetName,\n downloadUrl,\n dashConfigUrl = null,\n autoRegister = true,\n ) {\n try {\n if (this.isLocalSource(downloadUrl)) {\n return this.installFromLocalPath(\n widgetName,\n downloadUrl,\n autoRegister,\n dashConfigUrl,\n );\n }\n // Enforce HTTPS to prevent MITM attacks on widget downloads\n const parsedUrl = new URL(downloadUrl);\n if (parsedUrl.protocol !== \"https:\") {\n throw new Error(\n `Widget downloads must use HTTPS. Refusing to fetch: ${downloadUrl}`,\n );\n }\n\n console.log(\n `[WidgetRegistry] Downloading widget: ${widgetName} from ${downloadUrl}`,\n );\n\n const response = await fetch(downloadUrl);\n if (!response.ok)\n throw new Error(`Failed to fetch: ${response.statusText}`);\n\n const buffer = await response.arrayBuffer();\n const zip = new AdmZip(Buffer.from(buffer));\n\n const widgetPath = path.join(WIDGETS_CACHE_DIR, widgetName);\n\n if (fs.existsSync(widgetPath)) {\n fs.rmSync(widgetPath, { recursive: true });\n }\n\n validateZipEntries(zip, widgetPath);\n zip.extractAllTo(widgetPath, true);\n console.log(`[WidgetRegistry] Extracted widget to: ${widgetPath}`);\n\n let config = await this.loadWidgetConfig(widgetName, widgetPath);\n\n if (dashConfigUrl) {\n const dashConfig = await this.fetchJSON(dashConfigUrl);\n config = { ...config, ...dashConfig };\n }\n\n this.registerWidget(widgetName, config, widgetPath, false);\n\n if (autoRegister) {\n await this.loadWidgetComponents(widgetName, widgetPath);\n }\n\n return config;\n } catch (error) {\n console.error(\n `[WidgetRegistry] Error downloading widget ${widgetName}:`,\n error,\n );\n throw error;\n }\n }\n\n /**\n * Load widget configuration from local path\n * @param {string} widgetName - Name of the widget\n * @param {string} widgetPath - Path to widget directory\n * @returns {Promise<Object>} Widget configuration\n */\n async loadWidgetConfig(widgetName, widgetPath) {\n try {\n const dashJsonPath = path.join(widgetPath, \"dash.json\");\n if (fs.existsSync(dashJsonPath)) {\n const data = fs.readFileSync(dashJsonPath, \"utf8\");\n return JSON.parse(data);\n }\n\n const packageJsonPath = path.join(widgetPath, \"package.json\");\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = JSON.parse(\n fs.readFileSync(packageJsonPath, \"utf8\"),\n );\n return {\n name: packageJson.name || widgetName,\n version: packageJson.version,\n description: packageJson.description,\n author: packageJson.author,\n repository: packageJson.repository,\n };\n }\n\n return {\n name: widgetName,\n version: \"1.0.0\",\n };\n } catch (error) {\n console.error(\n `[WidgetRegistry] Error loading config for ${widgetName}:`,\n error,\n );\n return { name: widgetName };\n }\n }\n\n /**\n * Register a widget in the registry\n * @param {string} widgetName - Name of the widget\n * @param {Object} config - Widget configuration\n * @param {string} widgetPath - Path to widget directory\n * @param {boolean} autoRegister - Automatically register with ComponentManager\n */\n registerWidget(widgetName, config, widgetPath, autoRegister = true) {\n const widgetEntry = {\n name: widgetName,\n path: widgetPath,\n ...config,\n registeredAt: new Date().toISOString(),\n };\n\n this.widgets.set(widgetName, widgetEntry);\n this.saveRegistry();\n console.log(`[WidgetRegistry] Registered widget: ${widgetName}`);\n }\n\n /**\n * Load all components for a widget and register them with ComponentManager\n * @param {string} widgetName - Name of the widget\n * @param {string} widgetPath - Path to widget directory\n */\n async loadWidgetComponents(widgetName, widgetPath) {\n try {\n // Auto-compile widget source to CJS bundle if none exists\n if (!findBundlePath(widgetPath)) {\n try {\n await compileWidget(widgetPath);\n console.log(`[WidgetRegistry] Auto-compiled ${widgetName}`);\n } catch (compileError) {\n console.warn(\n `[WidgetRegistry] Could not compile ${widgetName}:`,\n compileError,\n );\n }\n }\n\n if (this.componentManager) {\n dynamicWidgetLoader.setComponentManager(this.componentManager);\n }\n\n const components = dynamicWidgetLoader.discoverWidgets(widgetPath);\n console.log(\n `[WidgetRegistry] Found ${components.length} components in ${widgetName}`,\n );\n\n const existingEntry = this.widgets.get(widgetName);\n let registryUpdated = false;\n\n // Store component names as displayName on the registry entry\n // so settings UI shows \"WeatherWidget\" instead of \"weather-widget\"\n if (components.length > 0 && existingEntry) {\n existingEntry.displayName = components.join(\", \");\n existingEntry.componentNames = components;\n registryUpdated = true;\n }\n\n for (const componentName of components) {\n try {\n const result = await dynamicWidgetLoader.loadWidget(\n widgetName,\n widgetPath,\n componentName,\n true,\n );\n console.log(`[WidgetRegistry] ✓ Loaded ${componentName}`);\n\n // Enrich registry entry with .dash.js config fields\n // (icon, providers, workspace, etc.) so the settings UI\n // has full display data without needing ComponentManager.\n if (result?.config && existingEntry) {\n const cfg = result.config;\n if (cfg.icon && !existingEntry.icon) existingEntry.icon = cfg.icon;\n if (cfg.providers?.length && !existingEntry.providers?.length)\n existingEntry.providers = cfg.providers;\n if (cfg.workspace && !existingEntry.workspace)\n existingEntry.workspace = cfg.workspace;\n if (cfg.events?.length && !existingEntry.events?.length)\n existingEntry.events = cfg.events;\n if (\n cfg.eventHandlers?.length &&\n !existingEntry.eventHandlers?.length\n )\n existingEntry.eventHandlers = cfg.eventHandlers;\n registryUpdated = true;\n }\n } catch (error) {\n console.error(\n `[WidgetRegistry] Error loading component ${componentName}:`,\n error,\n );\n }\n }\n\n if (registryUpdated && existingEntry) {\n this.widgets.set(widgetName, existingEntry);\n this.saveRegistry();\n }\n } catch (error) {\n console.error(\"[WidgetRegistry] Error loading widget components:\", error);\n }\n }\n\n /**\n * Get all registered widgets\n * @returns {Array} List of widget configurations\n */\n getWidgets() {\n return Array.from(this.widgets.values());\n }\n\n /**\n * Get widget by name\n * @param {string} widgetName - Name of the widget\n * @returns {Object|null} Widget configuration or null\n */\n getWidget(widgetName) {\n return this.widgets.get(widgetName) || null;\n }\n\n /**\n * Uninstall a widget\n * @param {string} widgetName - Name of the widget to remove\n */\n uninstallWidget(widgetName) {\n const widget = this.widgets.get(widgetName);\n if (!widget) {\n console.warn(`[WidgetRegistry] Widget not found: ${widgetName}`);\n return false;\n }\n\n try {\n if (fs.existsSync(widget.path)) {\n fs.rmSync(widget.path, { recursive: true });\n }\n this.widgets.delete(widgetName);\n this.saveRegistry();\n console.log(`[WidgetRegistry] Uninstalled widget: ${widgetName}`);\n return true;\n } catch (error) {\n console.error(\n `[WidgetRegistry] Error uninstalling ${widgetName}:`,\n error,\n );\n return false;\n }\n }\n\n /**\n * Helper: Fetch JSON from URL\n */\n async fetchJSON(url) {\n const response = await fetch(url);\n if (!response.ok)\n throw new Error(`Failed to fetch: ${response.statusText}`);\n return response.json();\n }\n\n /**\n * Get cache directory path\n */\n getCachePath() {\n return WIDGETS_CACHE_DIR;\n }\n\n /**\n * Get the storage directory (parent of widgets directory)\n * @returns {string} Full path to storage directory\n */\n getStoragePath() {\n return path.dirname(WIDGETS_CACHE_DIR);\n }\n}\n\n// Lazy initialization to avoid accessing app.getPath before app is ready\nlet widgetRegistry = null;\n\nfunction getWidgetRegistry() {\n if (!widgetRegistry) {\n widgetRegistry = new WidgetRegistry();\n }\n return widgetRegistry;\n}\n\n/**\n * Look for a CJS bundle file in a widget directory.\n * Checks multiple candidate paths in priority order because\n * packageZip.js may extract dist/ contents to the widget root.\n *\n * @param {string} widgetPath - Path to the widget directory\n * @returns {string|null} Absolute path to the bundle, or null if not found\n */\nfunction findBundlePath(widgetPath) {\n const candidates = [\n path.join(widgetPath, \"dist\", \"index.cjs.js\"),\n path.join(widgetPath, \"index.cjs.js\"),\n path.join(widgetPath, \"dist\", \"index.js\"),\n path.join(widgetPath, \"index.js\"),\n ];\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) {\n // Skip ESM files — the eval pipeline requires CJS\n if (candidate.endsWith(\".js\") && !candidate.endsWith(\".cjs.js\")) {\n try {\n const head = fs.readFileSync(candidate, \"utf8\").slice(0, 256);\n if (/^\\s*(import\\s|export\\s)/m.test(head)) {\n console.log(`[WidgetRegistry] Skipping ESM bundle: ${candidate}`);\n continue;\n }\n } catch (_) {\n // Non-fatal — allow fallthrough\n }\n }\n return candidate;\n }\n }\n\n return null;\n}\n\n/**\n * Setup IPC handlers for widget management (use in main.js)\n */\nfunction setupWidgetRegistryHandlers() {\n ipcMain.handle(\"widget:list\", () => getWidgetRegistry().getWidgets());\n\n ipcMain.handle(\"widget:get\", (event, widgetName) => {\n return getWidgetRegistry().getWidget(widgetName);\n });\n\n ipcMain.handle(\n \"widget:install\",\n async (event, widgetName, downloadUrl, dashConfigUrl) => {\n const config = await getWidgetRegistry().downloadWidget(\n widgetName,\n downloadUrl,\n dashConfigUrl,\n );\n\n BrowserWindow.getAllWindows().forEach((win) => {\n win.webContents.send(\"widget:installed\", {\n widgetName,\n config,\n });\n });\n\n return config;\n },\n );\n\n ipcMain.handle(\n \"widget:install-local\",\n async (event, widgetName, localPath, dashConfigPath) => {\n const config = await getWidgetRegistry().installFromLocalPath(\n widgetName,\n localPath,\n true,\n dashConfigPath,\n );\n\n BrowserWindow.getAllWindows().forEach((win) => {\n win.webContents.send(\"widget:installed\", {\n widgetName,\n config,\n });\n });\n\n return config;\n },\n );\n\n ipcMain.handle(\"widget:load-folder\", async (event, folderPath) => {\n const results = await getWidgetRegistry().registerWidgetsFromFolder(\n folderPath,\n true,\n );\n\n BrowserWindow.getAllWindows().forEach((win) => {\n win.webContents.send(\"widgets:loaded\", {\n count: results.length,\n widgets: results,\n });\n });\n\n return results;\n });\n\n ipcMain.handle(\"widget:uninstall\", (event, widgetName) => {\n return getWidgetRegistry().uninstallWidget(widgetName);\n });\n\n ipcMain.handle(\"widget:cache-path\", () => getWidgetRegistry().getCachePath());\n\n ipcMain.handle(\"widget:storage-path\", () =>\n getWidgetRegistry().getStoragePath(),\n );\n\n ipcMain.handle(\"widget:get-component-configs\", async () => {\n try {\n const registry = getWidgetRegistry();\n const installedWidgets = registry.getWidgets();\n const configs = [];\n\n for (const widget of installedWidgets) {\n const widgetPath = widget.path;\n if (!widgetPath || !fs.existsSync(widgetPath)) continue;\n\n const componentNames = dynamicWidgetLoader.discoverWidgets(widgetPath);\n const widgetsDir = findWidgetsDir(widgetPath);\n for (const componentName of componentNames) {\n try {\n const configPath = path.join(\n widgetsDir || path.join(widgetPath, \"widgets\"),\n `${componentName}.dash.js`,\n );\n const config = await dynamicWidgetLoader.loadConfigFile(configPath);\n configs.push({\n componentName,\n widgetPackage: widget.name,\n // Include scoped id if present in the config\n id: config.id || null,\n config,\n });\n } catch (err) {\n console.error(\n `[WidgetRegistry] Error loading config for ${componentName}:`,\n err,\n );\n }\n }\n }\n\n return configs;\n } catch (error) {\n console.error(\"[WidgetRegistry] Error getting component configs:\", error);\n return [];\n }\n });\n\n ipcMain.handle(\"widget:read-bundle\", async (event, widgetName) => {\n try {\n const registry = getWidgetRegistry();\n const widget = registry.getWidget(widgetName);\n if (!widget || !widget.path) {\n return {\n success: false,\n error: `Widget not found: ${widgetName}`,\n };\n }\n\n let bundlePath = findBundlePath(widget.path);\n\n // Auto-compile if no bundle exists (same as read-all-bundles)\n if (!bundlePath) {\n try {\n const compiled = await compileWidget(widget.path);\n if (compiled) {\n bundlePath = compiled;\n }\n } catch (compileError) {\n console.warn(\n `[WidgetRegistry] Could not compile ${widgetName}:`,\n compileError,\n );\n }\n }\n\n if (!bundlePath) {\n return {\n success: false,\n error: `No bundle found in: ${widget.path}`,\n };\n }\n\n const source = fs.readFileSync(bundlePath, \"utf8\");\n return { success: true, source, widgetName };\n } catch (error) {\n console.error(\n `[WidgetRegistry] Error reading bundle for ${widgetName}:`,\n error,\n );\n return { success: false, error: error.message };\n }\n });\n\n ipcMain.handle(\"widget:read-all-bundles\", async () => {\n try {\n const registry = getWidgetRegistry();\n const installedWidgets = registry.getWidgets();\n const results = [];\n\n for (const widget of installedWidgets) {\n const widgetPath = widget.path;\n if (!widgetPath || !fs.existsSync(widgetPath)) continue;\n\n let bundlePath = findBundlePath(widgetPath);\n\n // Auto-compile if no bundle exists\n if (!bundlePath) {\n try {\n const compiled = await compileWidget(widgetPath);\n if (compiled) {\n bundlePath = compiled;\n }\n } catch (compileError) {\n console.warn(\n `[WidgetRegistry] Could not compile ${widget.name}:`,\n compileError,\n );\n }\n }\n\n if (!bundlePath) {\n console.log(\n `[WidgetRegistry] No CJS bundle for ${widget.name}, skipping (will use config fallback)`,\n );\n continue;\n }\n\n try {\n const source = fs.readFileSync(bundlePath, \"utf8\");\n results.push({\n widgetName: widget.name,\n source,\n });\n } catch (readError) {\n console.error(\n `[WidgetRegistry] Error reading bundle for ${widget.name}:`,\n readError,\n );\n }\n }\n\n return results;\n } catch (error) {\n console.error(\"[WidgetRegistry] Error reading all bundles:\", error);\n return [];\n }\n });\n\n ipcMain.handle(\"widget:set-storage-path\", (event, customPath) => {\n try {\n WidgetRegistry.initialize(customPath);\n console.log(`[WidgetRegistry] Storage path changed to: ${customPath}`);\n return { success: true, path: customPath };\n } catch (error) {\n console.error(\"[WidgetRegistry] Error setting storage path:\", error);\n return { success: false, error: error.message };\n }\n });\n}\n\nmodule.exports = WidgetRegistry;\nmodule.exports.getWidgetRegistry = getWidgetRegistry;\n// For backward compatibility, provide widgetRegistry as a getter\nObject.defineProperty(module.exports, \"widgetRegistry\", {\n get: getWidgetRegistry,\n});\nmodule.exports.setupWidgetRegistryHandlers = setupWidgetRegistryHandlers;\nmodule.exports.validateZipEntries = validateZipEntries;\n","/**\n * registryAuthController.js\n *\n * Manages authentication with the Dash registry service.\n * Uses OAuth device code flow for desktop app authentication.\n *\n * Flow:\n * 1. App calls initiateDeviceFlow() — gets device code + verification URL\n * 2. User opens verification URL in browser, signs in, enters code\n * 3. App polls pollForToken() until authorized\n * 4. Token stored securely via electron-store (encrypted)\n */\nconst { app } = require(\"electron\");\nconst path = require(\"path\");\n\nconst REGISTRY_BASE_URL =\n process.env.DASH_REGISTRY_API_URL || \"https://registry.trops.dev\";\n\n// Lazy-load electron-store to avoid issues when not installed\nlet store = null;\nfunction getStore() {\n if (!store) {\n const Store = require(\"electron-store\");\n store = new Store({\n name: \"dash-registry-auth\",\n encryptionKey: \"dash-registry-v1\",\n });\n }\n return store;\n}\n\n/**\n * Initiate the OAuth device code flow.\n * Returns the device code, user code, and verification URL.\n *\n * @returns {Promise<Object>} { deviceCode, userCode, verificationUrl, verificationUrlComplete, expiresIn, interval }\n */\nasync function initiateDeviceFlow() {\n const response = await fetch(`${REGISTRY_BASE_URL}/api/auth/device`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n });\n\n if (!response.ok) {\n throw new Error(`Device flow initiation failed: ${response.status}`);\n }\n\n const data = await response.json();\n\n return {\n deviceCode: data.device_code,\n userCode: data.user_code,\n verificationUrl: data.verification_uri,\n verificationUrlComplete: data.verification_uri_complete,\n expiresIn: data.expires_in,\n interval: data.interval,\n };\n}\n\n/**\n * Poll the registry for token after user completes browser auth.\n *\n * @param {string} deviceCode - The device code from initiateDeviceFlow()\n * @returns {Promise<Object>} { status: 'pending' | 'authorized' | 'expired', token?, userId? }\n */\nasync function pollForToken(deviceCode) {\n const response = await fetch(\n `${REGISTRY_BASE_URL}/api/auth/device?device_code=${encodeURIComponent(deviceCode)}`,\n );\n\n if (response.status === 428) {\n return { status: \"pending\" };\n }\n\n if (response.status === 400) {\n const data = await response.json();\n if (data.error === \"expired_token\") {\n return { status: \"expired\" };\n }\n return { status: \"pending\" };\n }\n\n if (response.ok) {\n const data = await response.json();\n\n // Store the token securely\n const s = getStore();\n s.set(\"accessToken\", data.access_token);\n s.set(\"userId\", data.user_id);\n s.set(\"tokenType\", data.token_type);\n s.set(\"authenticatedAt\", new Date().toISOString());\n\n return {\n status: \"authorized\",\n token: data.access_token,\n userId: data.user_id,\n };\n }\n\n throw new Error(`Unexpected response: ${response.status}`);\n}\n\n/**\n * Get the stored auth token.\n *\n * @returns {Object|null} { token, userId, authenticatedAt } or null if not authenticated\n */\nfunction getStoredToken() {\n try {\n const s = getStore();\n const token = s.get(\"accessToken\");\n if (!token) return null;\n\n return {\n token,\n userId: s.get(\"userId\"),\n authenticatedAt: s.get(\"authenticatedAt\"),\n };\n } catch {\n return null;\n }\n}\n\n/**\n * Check if the user is authenticated with the registry.\n *\n * @returns {Object} { authenticated: boolean, userId?: string }\n */\nfunction getAuthStatus() {\n const stored = getStoredToken();\n if (!stored) {\n return { authenticated: false };\n }\n\n return {\n authenticated: true,\n userId: stored.userId,\n authenticatedAt: stored.authenticatedAt,\n };\n}\n\n/**\n * Get the user's registry profile.\n *\n * @returns {Promise<Object|null>} User profile or null\n */\nasync function getRegistryProfile() {\n const stored = getStoredToken();\n if (!stored) return null;\n\n try {\n const response = await fetch(`${REGISTRY_BASE_URL}/api/auth/me`, {\n headers: {\n Authorization: `Bearer ${stored.token}`,\n },\n });\n\n if (response.status === 401) {\n // Token expired or invalid — clear stored credentials\n clearToken();\n return null;\n }\n if (!response.ok) return null;\n\n const data = await response.json();\n return data.user || null;\n } catch {\n return null;\n }\n}\n\n/**\n * Clear stored auth token (logout).\n */\nfunction clearToken() {\n try {\n const s = getStore();\n s.clear();\n console.log(\"[RegistryAuthController] Token cleared\");\n } catch (err) {\n console.error(\"[RegistryAuthController] Error clearing token:\", err);\n }\n}\n\n/**\n * Update the authenticated user's registry profile.\n *\n * @param {Object} updates - Fields to update (e.g. { displayName })\n * @returns {Promise<Object|null>} Updated user or null on 401\n */\nasync function updateRegistryProfile(updates) {\n const stored = getStoredToken();\n if (!stored) return null;\n\n try {\n const response = await fetch(`${REGISTRY_BASE_URL}/api/auth/me`, {\n method: \"PATCH\",\n headers: {\n Authorization: `Bearer ${stored.token}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(updates),\n });\n\n if (response.status === 401) {\n clearToken();\n return null;\n }\n if (!response.ok) return null;\n\n const data = await response.json();\n return data.user || null;\n } catch {\n return null;\n }\n}\n\n/**\n * Get the authenticated user's published packages.\n *\n * @returns {Promise<Object|null>} { packages: [...] } or null\n */\nasync function getRegistryPackages() {\n const stored = getStoredToken();\n if (!stored) return null;\n\n try {\n const response = await fetch(`${REGISTRY_BASE_URL}/api/auth/me/packages`, {\n headers: {\n Authorization: `Bearer ${stored.token}`,\n },\n });\n\n if (response.status === 401) {\n clearToken();\n return null;\n }\n if (!response.ok) return null;\n\n return await response.json();\n } catch {\n return null;\n }\n}\n\n/**\n * Update a published package's metadata.\n *\n * @param {string} scope - Package scope (e.g. \"@trops\")\n * @param {string} name - Package name\n * @param {Object} updates - Fields to update (displayName, description, category, tags, visibility)\n * @returns {Promise<Object|null>} Updated package or null\n */\nasync function updateRegistryPackage(scope, name, updates) {\n const stored = getStoredToken();\n if (!stored) return null;\n\n try {\n const response = await fetch(\n `${REGISTRY_BASE_URL}/api/packages/${encodeURIComponent(scope)}/${encodeURIComponent(name)}`,\n {\n method: \"PATCH\",\n headers: {\n Authorization: `Bearer ${stored.token}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(updates),\n },\n );\n\n if (response.status === 401) {\n clearToken();\n return null;\n }\n if (!response.ok) return null;\n\n return await response.json();\n } catch {\n return null;\n }\n}\n\n/**\n * Delete a published package from the registry.\n *\n * @param {string} scope - Package scope (e.g. \"@trops\")\n * @param {string} name - Package name\n * @returns {Promise<Object|null>} Response or null\n */\nasync function deleteRegistryPackage(scope, name) {\n const stored = getStoredToken();\n if (!stored) return null;\n\n try {\n const response = await fetch(\n `${REGISTRY_BASE_URL}/api/packages/${encodeURIComponent(scope)}/${encodeURIComponent(name)}`,\n {\n method: \"DELETE\",\n headers: {\n Authorization: `Bearer ${stored.token}`,\n },\n },\n );\n\n if (response.status === 401) {\n clearToken();\n return null;\n }\n if (!response.ok) return null;\n\n return await response.json();\n } catch {\n return null;\n }\n}\n\nmodule.exports = {\n initiateDeviceFlow,\n pollForToken,\n getStoredToken,\n getAuthStatus,\n getRegistryProfile,\n updateRegistryProfile,\n getRegistryPackages,\n updateRegistryPackage,\n deleteRegistryPackage,\n clearToken,\n};\n","/**\n * registryApiController.js\n *\n * Client for the Dash registry API.\n * Handles publishing packages and generating registry URLs.\n */\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst { getStoredToken } = require(\"./registryAuthController\");\n\nconst REGISTRY_BASE_URL =\n process.env.DASH_REGISTRY_API_URL || \"https://registry.trops.dev\";\n\n/**\n * Publish a package to the registry.\n *\n * @param {string} zipPath - Path to the ZIP file\n * @param {Object} manifest - Package manifest JSON\n * @returns {Promise<Object>} { success, registryUrl, packageId, version, error? }\n */\nasync function publishToRegistry(zipPath, manifest) {\n const auth = getStoredToken();\n if (!auth) {\n return {\n success: false,\n error: \"Not authenticated with registry\",\n authRequired: true,\n };\n }\n\n try {\n // Read the ZIP file\n const zipBuffer = fs.readFileSync(zipPath);\n\n // Create FormData with the ZIP and manifest\n const formData = new FormData();\n formData.append(\n \"file\",\n new Blob([zipBuffer], { type: \"application/zip\" }),\n path.basename(zipPath),\n );\n formData.append(\"manifest\", JSON.stringify(manifest));\n\n // POST to registry\n const response = await fetch(`${REGISTRY_BASE_URL}/api/publish`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${auth.token}`,\n },\n body: formData,\n });\n\n const data = await response.json();\n\n if (!response.ok) {\n return {\n success: false,\n error: data.error || `Publish failed: ${response.status}`,\n details: data.details,\n };\n }\n\n return {\n success: true,\n registryUrl: data.registryUrl,\n packageId: data.packageId,\n version: data.version,\n downloadUrl: data.downloadUrl,\n warnings: data.warnings,\n };\n } catch (err) {\n console.error(\"[RegistryApiController] Publish error:\", err);\n return {\n success: false,\n error: err.message || \"Failed to publish to registry\",\n };\n }\n}\n\n/**\n * Get the registry URL for a published package.\n *\n * @param {string} scope - Package scope (username)\n * @param {string} name - Package name\n * @returns {string} Full registry URL\n */\nfunction getRegistryUrl(scope, name) {\n return `${REGISTRY_BASE_URL}/package/${scope}/${name}`;\n}\n\nmodule.exports = {\n publishToRegistry,\n getRegistryUrl,\n REGISTRY_BASE_URL,\n};\n","/**\n * themeRegistryController.js\n *\n * Handles publishing themes to and installing themes from the Dash registry.\n * Mirrors dashboardConfigController patterns for ZIP creation, manifest generation,\n * and registry interaction.\n */\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst { app, dialog } = require(\"electron\");\nconst AdmZip = require(\"adm-zip\");\n\nconst themeController = require(\"./themeController\");\nconst registryController = require(\"./registryController\");\nconst registryApiController = require(\"./registryApiController\");\nconst {\n getAuthStatus,\n getRegistryProfile,\n} = require(\"./registryAuthController\");\n\nconst appName = \"Dashboard\";\n\n/**\n * Sanitize a name for use as a filename (lowercase, hyphens only).\n */\nfunction sanitizeName(name) {\n return (name || \"theme\")\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-|-$/g, \"\");\n}\n\n/**\n * Generate a registry manifest for a theme package.\n *\n * @param {Object} themeData - The raw theme object\n * @param {string} themeKey - The theme key/name\n * @param {Object} options - Publish options { authorName, description, tags, scope }\n * @returns {Object} Registry manifest\n */\nfunction generateThemeRegistryManifest(themeData, themeKey, options = {}) {\n const humanName = themeData.name || themeKey;\n const sanitizedName = sanitizeName(humanName);\n const colors = extractColors(themeData);\n\n return {\n scope: options.scope || \"\",\n name: sanitizedName,\n displayName: humanName,\n author: options.authorName || \"\",\n description: options.description || \"\",\n version: \"1.0.0\",\n type: \"theme\",\n category: \"general\",\n tags: options.tags || [],\n icon: \"palette\",\n colors,\n appOrigin: options.appOrigin || \"\",\n publishedAt: new Date().toISOString(),\n };\n}\n\n/**\n * Extract primary/secondary/tertiary/neutral colors from a theme object.\n * Theme objects store colors in various structures; this normalizes them.\n */\nfunction extractColors(themeData) {\n const colors = {\n primary: \"\",\n secondary: \"\",\n tertiary: \"\",\n neutral: \"\",\n };\n\n if (!themeData) return colors;\n\n // Direct color fields\n if (themeData.primary) colors.primary = themeData.primary;\n if (themeData.secondary) colors.secondary = themeData.secondary;\n if (themeData.tertiary) colors.tertiary = themeData.tertiary;\n if (themeData.neutral) colors.neutral = themeData.neutral;\n\n // Nested under \"colors\" key\n if (themeData.colors) {\n if (themeData.colors.primary) colors.primary = themeData.colors.primary;\n if (themeData.colors.secondary)\n colors.secondary = themeData.colors.secondary;\n if (themeData.colors.tertiary) colors.tertiary = themeData.colors.tertiary;\n if (themeData.colors.neutral) colors.neutral = themeData.colors.neutral;\n }\n\n return colors;\n}\n\n/**\n * Prepare a theme for publishing to the registry.\n *\n * Reads the theme from themes.json, generates a manifest, creates a ZIP,\n * and publishes via the registry API.\n *\n * @param {BrowserWindow} win - The sender window\n * @param {string} appId - Application identifier\n * @param {string} themeKey - Key of the theme to publish\n * @param {Object} options - { authorName, description, tags }\n * @returns {Object} Result with success, manifest, registryResult\n */\nasync function prepareThemeForPublish(win, appId, themeKey, options = {}) {\n try {\n // Read the theme data\n const themesResult = themeController.listThemesForApplication(win, appId);\n if (themesResult.error) {\n return {\n success: false,\n error: \"Failed to read themes: \" + themesResult.message,\n };\n }\n\n const themeData = themesResult.themes[themeKey];\n if (!themeData) {\n return { success: false, error: `Theme \"${themeKey}\" not found` };\n }\n\n // Get auth status and profile for scope\n const auth = getAuthStatus();\n if (!auth.authenticated) {\n return {\n success: false,\n error: \"Not authenticated with registry\",\n authRequired: true,\n };\n }\n const profile = await getRegistryProfile();\n const scope = profile?.username || options.scope || \"\";\n if (!scope) {\n return {\n success: false,\n error: \"Could not determine registry username\",\n authRequired: true,\n };\n }\n\n // Generate manifest\n const manifest = generateThemeRegistryManifest(themeData, themeKey, {\n ...options,\n scope,\n appOrigin: appId,\n });\n\n // Validate colors\n if (\n !manifest.colors.primary ||\n !manifest.colors.secondary ||\n !manifest.colors.tertiary\n ) {\n return {\n success: false,\n error:\n \"Theme must have primary, secondary, and tertiary colors defined\",\n };\n }\n\n // Show save dialog\n const sanitizedName = sanitizeName(themeKey);\n const defaultFilename = `theme-${sanitizedName}-v${manifest.version}.zip`;\n\n const saveResult = await dialog.showSaveDialog(win, {\n title: \"Save Theme Package\",\n defaultPath: defaultFilename,\n filters: [{ name: \"ZIP Files\", extensions: [\"zip\"] }],\n });\n\n if (saveResult.canceled || !saveResult.filePath) {\n return { success: false, error: \"Save canceled\" };\n }\n\n const filePath = saveResult.filePath;\n\n // Create ZIP with manifest.json + {name}.theme.json\n const zip = new AdmZip();\n zip.addFile(\n \"manifest.json\",\n Buffer.from(JSON.stringify(manifest, null, 2), \"utf-8\"),\n );\n zip.addFile(\n `${sanitizedName}.theme.json`,\n Buffer.from(JSON.stringify(themeData, null, 2), \"utf-8\"),\n );\n zip.writeZip(filePath);\n\n console.log(\"[ThemeRegistryController] ZIP created at:\", filePath);\n\n // Attempt to publish to registry\n let registryResult = null;\n if (auth.authenticated) {\n registryResult = await registryApiController.publishToRegistry(\n filePath,\n manifest,\n );\n console.log(\n \"[ThemeRegistryController] Registry publish result:\",\n registryResult,\n );\n }\n\n return {\n success: true,\n manifest,\n filePath,\n registryResult,\n };\n } catch (err) {\n console.error(\n \"[ThemeRegistryController] Error preparing theme for publish:\",\n err,\n );\n return { success: false, error: err.message };\n }\n}\n\n/**\n * Install a theme from the registry.\n *\n * Looks up the theme package, downloads the ZIP, extracts the .theme.json,\n * and saves it via themeController.\n *\n * @param {BrowserWindow} win - The sender window\n * @param {string} appId - Application identifier\n * @param {string} packageName - Registry package name (e.g., \"username/ocean-depth\")\n * @returns {Object} Result with success, themeKey, theme\n */\nasync function installThemeFromRegistry(win, appId, packageName) {\n try {\n // Look up the package\n const pkg = await registryController.getPackage(packageName);\n if (!pkg) {\n return {\n success: false,\n error: `Theme package \"${packageName}\" not found in registry`,\n };\n }\n\n // Resolve download URL\n let downloadUrl = pkg.downloadUrl;\n if (!downloadUrl) {\n return { success: false, error: \"Package has no download URL\" };\n }\n\n // Resolve template variables\n downloadUrl = downloadUrl\n .replace(\"{version}\", pkg.version || \"1.0.0\")\n .replace(\"{name}\", pkg.name || \"\");\n\n // Enforce HTTPS\n if (!downloadUrl.startsWith(\"https://\")) {\n return { success: false, error: \"Download URL must use HTTPS\" };\n }\n\n console.log(\n \"[ThemeRegistryController] Downloading theme from:\",\n downloadUrl,\n );\n\n // Download the ZIP\n const response = await fetch(downloadUrl);\n if (!response.ok) {\n return {\n success: false,\n error: `Failed to download theme: ${response.status} ${response.statusText}`,\n };\n }\n\n const arrayBuffer = await response.arrayBuffer();\n const zipBuffer = Buffer.from(arrayBuffer);\n\n // Extract .theme.json from ZIP\n const zip = new AdmZip(zipBuffer);\n const entries = zip.getEntries();\n\n const themeEntry = entries.find((entry) =>\n entry.entryName.endsWith(\".theme.json\"),\n );\n\n if (!themeEntry) {\n return {\n success: false,\n error: \"ZIP does not contain a .theme.json file\",\n };\n }\n\n // Validate entry path (security: prevent path traversal)\n if (\n themeEntry.entryName.includes(\"..\") ||\n path.isAbsolute(themeEntry.entryName)\n ) {\n return { success: false, error: \"Invalid file path in ZIP\" };\n }\n\n // Parse theme data\n const themeJson = themeEntry.getData().toString(\"utf-8\");\n let themeData;\n try {\n themeData = JSON.parse(themeJson);\n } catch (parseErr) {\n return {\n success: false,\n error: \"Invalid JSON in theme file: \" + parseErr.message,\n };\n }\n\n // Add registry metadata\n themeData._registryMeta = {\n source: \"registry\",\n packageName,\n installedAt: new Date().toISOString(),\n };\n\n // Determine theme key from package display name or name\n const themeKey = pkg.displayName || pkg.name;\n\n // Save via themeController\n const saveResult = themeController.saveThemeForApplication(\n win,\n appId,\n themeKey,\n themeData,\n );\n\n if (saveResult.error) {\n return {\n success: false,\n error: \"Failed to save theme: \" + saveResult.message,\n };\n }\n\n console.log(\"[ThemeRegistryController] Theme installed:\", themeKey);\n\n return {\n success: true,\n themeKey,\n theme: themeData,\n themes: saveResult.themes,\n };\n } catch (err) {\n console.error(\"[ThemeRegistryController] Error installing theme:\", err);\n return { success: false, error: err.message };\n }\n}\n\n/**\n * Get a preview of theme data for the publish modal.\n *\n * @param {string} appId - Application identifier\n * @param {string} themeKey - Theme key\n * @returns {Object} Preview data with theme name, colors, etc.\n */\nfunction getThemePublishPreview(appId, themeKey) {\n try {\n const themesResult = themeController.listThemesForApplication(null, appId);\n if (themesResult.error) {\n return {\n success: false,\n error: \"Failed to read themes: \" + themesResult.message,\n };\n }\n\n const themeData = themesResult.themes[themeKey];\n if (!themeData) {\n return { success: false, error: `Theme \"${themeKey}\" not found` };\n }\n\n const colors = extractColors(themeData);\n\n return {\n success: true,\n themeName: themeKey,\n colors,\n hasRegistryMeta: !!themeData._registryMeta,\n };\n } catch (err) {\n console.error(\"[ThemeRegistryController] Error getting preview:\", err);\n return { success: false, error: err.message };\n }\n}\n\nmodule.exports = {\n prepareThemeForPublish,\n installThemeFromRegistry,\n getThemePublishPreview,\n generateThemeRegistryManifest,\n extractColors,\n};\n","/**\n * dashboardConfigController.js\n *\n * Handles export and import of dashboard configuration files.\n * Runs in the Electron main process.\n *\n * Export: serializes a workspace into a .dashboard.json config,\n * resolving widget dependencies, extracting event wiring from\n * layout listeners, and aggregating provider requirements.\n *\n * Import: validates and processes a .dashboard.json config,\n * auto-installs missing widgets, creates workspace, and\n * applies event wiring. (Import is implemented in DASH-13.)\n */\n\nconst { app, dialog } = require(\"electron\");\nconst path = require(\"path\");\nconst AdmZip = require(\"adm-zip\");\nconst { getFileContents } = require(\"../utils/file\");\nconst {\n validateDashboardConfig,\n applyDefaults,\n CURRENT_SCHEMA_VERSION,\n} = require(\"../schema/dashboardConfigValidator\");\nconst {\n collectComponentNames,\n extractEventWiring,\n buildWidgetDependencies,\n buildProviderRequirements,\n applyEventWiringToLayout,\n} = require(\"../schema/dashboardConfigUtils\");\nconst { searchRegistry, getPackage } = require(\"./registryController\");\nconst themeController = require(\"./themeController\");\n\nconst configFilename = \"workspaces.json\";\nconst appName = \"Dashboard\";\n\n/**\n * Export a workspace as a .dashboard.json config inside a ZIP file.\n *\n * @param {BrowserWindow} win - The main window (for dialog)\n * @param {string} appId - Application identifier\n * @param {number|string} workspaceId - ID of the workspace to export\n * @param {Object} options - Export options\n * @param {string} options.authorName - Dashboard author name\n * @param {string} options.authorId - Dashboard author ID\n * @param {Object} widgetRegistry - WidgetRegistry instance (optional)\n * @returns {Promise<Object>} Result with success flag and file path\n */\nasync function exportDashboardConfig(\n win,\n appId,\n workspaceId,\n options = {},\n widgetRegistry = null,\n) {\n try {\n // 1. Read workspace from workspaces.json\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const workspacesArray = getFileContents(filename);\n const workspace = workspacesArray.find(\n (w) => w.id === workspaceId || w.id === Number(workspaceId),\n );\n\n if (!workspace) {\n return {\n success: false,\n error: `Workspace not found: ${workspaceId}`,\n };\n }\n\n const layout = workspace.layout || [];\n\n // 2. Collect components, extract wiring, resolve deps\n const componentNames = collectComponentNames(layout);\n const eventWiring = extractEventWiring(layout);\n const widgets = buildWidgetDependencies(componentNames, widgetRegistry);\n const providers = buildProviderRequirements(componentNames, widgetRegistry);\n\n // 3. Build the dashboard config\n const dashboardConfig = applyDefaults({\n schemaVersion: CURRENT_SCHEMA_VERSION,\n name: workspace.name || workspace.label || \"Exported Dashboard\",\n description: options.description || \"\",\n ...(options.authorName\n ? { author: { name: options.authorName, id: options.authorId || \"\" } }\n : {}),\n shareable: true,\n tags: options.tags || [],\n icon: options.icon || \"grip\",\n workspace: {\n id: workspace.id,\n name: workspace.name,\n type: workspace.type || \"workspace\",\n label: workspace.label || workspace.name,\n version: workspace.version || 1,\n layout,\n menuId: workspace.menuId || 1,\n },\n widgets,\n providers,\n eventWiring,\n });\n\n // 4. Bundle theme if workspace has a themeKey\n if (workspace.themeKey) {\n try {\n const themeResult = themeController.listThemesForApplication(\n win,\n appId,\n );\n const themeData = themeResult.themes?.[workspace.themeKey];\n if (themeData) {\n dashboardConfig.theme = {\n key: workspace.themeKey,\n data: themeData,\n };\n if (themeData._registryMeta?.packageName) {\n dashboardConfig.theme.registryPackage =\n themeData._registryMeta.packageName;\n }\n }\n } catch (themeErr) {\n console.warn(\n \"[DashboardConfigController] Could not bundle theme:\",\n themeErr.message,\n );\n }\n }\n\n // 5. Validate the generated config\n const validation = validateDashboardConfig(dashboardConfig);\n if (!validation.valid) {\n return {\n success: false,\n error: `Generated config is invalid: ${validation.errors.join(\", \")}`,\n };\n }\n\n // 6. Show save dialog\n const sanitizedName = (workspace.name || \"dashboard\")\n .replace(/[^a-zA-Z0-9-_ ]/g, \"\")\n .replace(/\\s+/g, \"-\")\n .toLowerCase();\n\n const { canceled, filePath } = await dialog.showSaveDialog(win, {\n title: \"Export Dashboard as ZIP\",\n defaultPath: path.join(\n app.getPath(\"desktop\"),\n `dashboard-${sanitizedName}.zip`,\n ),\n filters: [{ name: \"ZIP Archive\", extensions: [\"zip\"] }],\n });\n\n if (canceled || !filePath) {\n return { success: false, canceled: true };\n }\n\n // 7. Create ZIP with the config\n const zip = new AdmZip();\n const configJson = JSON.stringify(dashboardConfig, null, 2);\n zip.addFile(\n `${sanitizedName}.dashboard.json`,\n Buffer.from(configJson, \"utf-8\"),\n );\n\n zip.writeZip(filePath);\n\n console.log(\n `[DashboardConfigController] Exported dashboard to: ${filePath}`,\n );\n\n return {\n success: true,\n filePath,\n config: dashboardConfig,\n };\n } catch (error) {\n console.error(\n \"[DashboardConfigController] Error exporting dashboard:\",\n error,\n );\n return {\n success: false,\n error: error.message,\n };\n }\n}\n\n/**\n * Select and preview a dashboard ZIP file without importing it.\n * Opens the file picker, extracts and validates the .dashboard.json,\n * and returns a preview of the config + the file path for later import.\n *\n * @param {BrowserWindow} win - The main window (for dialog)\n * @returns {Promise<Object>} Result with success, filePath, and dashboardConfig preview\n */\nasync function selectDashboardFile(win) {\n try {\n const { canceled, filePaths } = await dialog.showOpenDialog(win, {\n title: \"Import Dashboard Configuration\",\n filters: [{ name: \"ZIP Archive\", extensions: [\"zip\"] }],\n properties: [\"openFile\"],\n });\n\n if (canceled || !filePaths || !filePaths.length) {\n return { success: false, canceled: true };\n }\n\n const zipPath = filePaths[0];\n\n // Extract and validate\n const zip = new AdmZip(zipPath);\n const tempDir = path.join(app.getPath(\"temp\"), \"dash-import\");\n const { validateZipEntries } = require(\"../widgetRegistry\");\n validateZipEntries(zip, tempDir);\n\n const entries = zip.getEntries();\n const configEntry = entries.find((e) =>\n e.entryName.endsWith(\".dashboard.json\"),\n );\n\n if (!configEntry) {\n return {\n success: false,\n error: \"No .dashboard.json file found in ZIP archive\",\n };\n }\n\n const configJson = configEntry.getData().toString(\"utf-8\");\n let dashboardConfig;\n try {\n dashboardConfig = JSON.parse(configJson);\n } catch (parseError) {\n return {\n success: false,\n error: `Invalid JSON: ${parseError.message}`,\n };\n }\n\n const validation = validateDashboardConfig(dashboardConfig);\n if (!validation.valid) {\n return {\n success: false,\n error: `Invalid config: ${validation.errors.join(\", \")}`,\n };\n }\n\n dashboardConfig = applyDefaults(dashboardConfig);\n\n return {\n success: true,\n filePath: zipPath,\n dashboardConfig: {\n name: dashboardConfig.name,\n description: dashboardConfig.description,\n author: dashboardConfig.author,\n workspace: dashboardConfig.workspace,\n widgets: dashboardConfig.widgets || [],\n providers: dashboardConfig.providers || [],\n },\n };\n } catch (error) {\n console.error(\n \"[DashboardConfigController] Error selecting dashboard file:\",\n error,\n );\n return { success: false, error: error.message };\n }\n}\n\n/**\n * Import a dashboard from a ZIP file containing a .dashboard.json config.\n *\n * Steps:\n * 1. Show native file picker for .zip selection (or use options.filePath)\n * 2. Extract and validate .dashboard.json\n * 3. Auto-install missing widgets from registry\n * 4. Create workspace in workspaces.json\n * 5. Apply event wiring to layout\n * 6. Mark imported dashboard shareable: false\n *\n * @param {BrowserWindow} win - The main window (for dialog)\n * @param {string} appId - Application identifier\n * @param {Object} widgetRegistry - WidgetRegistry instance (needs getWidgets(), downloadWidget())\n * @param {Object} options - Import options\n * @param {string} options.filePath - Skip file picker, use this path directly\n * @param {string} options.name - Override workspace name\n * @param {number} options.menuId - Override workspace menuId (folder)\n * @param {string} options.themeKey - Override workspace themeKey\n * @returns {Promise<Object>} Result with success, workspace, and import summary\n */\nasync function importDashboardConfig(\n win,\n appId,\n widgetRegistry = null,\n options = {},\n) {\n try {\n let zipPath;\n\n if (options.filePath) {\n // Use the provided file path (from selectDashboardFile)\n zipPath = options.filePath;\n } else {\n // Show file picker\n const { canceled, filePaths } = await dialog.showOpenDialog(win, {\n title: \"Import Dashboard Configuration\",\n filters: [{ name: \"ZIP Archive\", extensions: [\"zip\"] }],\n properties: [\"openFile\"],\n });\n\n if (canceled || !filePaths || !filePaths.length) {\n return { success: false, canceled: true };\n }\n\n zipPath = filePaths[0];\n }\n\n // 2. Extract and validate .dashboard.json from ZIP\n const zip = new AdmZip(zipPath);\n\n // Validate ZIP entries for path traversal\n const tempDir = path.join(app.getPath(\"temp\"), \"dash-import\");\n const { validateZipEntries } = require(\"../widgetRegistry\");\n validateZipEntries(zip, tempDir);\n\n // Find the .dashboard.json file\n const entries = zip.getEntries();\n const configEntry = entries.find((e) =>\n e.entryName.endsWith(\".dashboard.json\"),\n );\n\n if (!configEntry) {\n return {\n success: false,\n error: \"No .dashboard.json file found in ZIP archive\",\n };\n }\n\n const configJson = configEntry.getData().toString(\"utf-8\");\n let dashboardConfig;\n try {\n dashboardConfig = JSON.parse(configJson);\n } catch (parseError) {\n return {\n success: false,\n error: `Invalid JSON in ${configEntry.entryName}: ${parseError.message}`,\n };\n }\n\n // Validate against schema\n const validation = validateDashboardConfig(dashboardConfig);\n if (!validation.valid) {\n return {\n success: false,\n error: `Invalid dashboard config: ${validation.errors.join(\", \")}`,\n };\n }\n\n // Apply defaults to fill in optional fields\n dashboardConfig = applyDefaults(dashboardConfig);\n\n // Delegate to shared import pipeline with overrides\n return await processDashboardConfig(\n win,\n appId,\n dashboardConfig,\n widgetRegistry,\n {\n name: options.name,\n menuId: options.menuId,\n themeKey: options.themeKey,\n },\n );\n } catch (error) {\n console.error(\n \"[DashboardConfigController] Error importing dashboard:\",\n error,\n );\n return {\n success: false,\n error: error.message,\n };\n }\n}\n\n/**\n * Shared import pipeline: install widgets, create workspace, wire events.\n * Used by both importDashboardConfig (ZIP) and installDashboardFromRegistry.\n *\n * @param {BrowserWindow} win - The main window\n * @param {string} appId - Application identifier\n * @param {Object} dashboardConfig - Validated dashboard config object\n * @param {Object} widgetRegistry - WidgetRegistry instance\n * @param {Object} options - Additional options\n * @param {string} options.source - Source label (\"zip\" or \"registry\")\n * @returns {Promise<Object>} Result with success, workspace, and summary\n */\nasync function processDashboardConfig(\n win,\n appId,\n dashboardConfig,\n widgetRegistry = null,\n options = {},\n) {\n const source = options.source || \"zip\";\n\n // 1. Auto-install missing widgets from registry\n const installSummary = {\n installed: [],\n alreadyInstalled: [],\n failed: [],\n };\n\n if (\n widgetRegistry &&\n dashboardConfig.widgets &&\n dashboardConfig.widgets.length\n ) {\n const installedWidgets = widgetRegistry.getWidgets();\n const installedPackages = new Set(installedWidgets.map((w) => w.name));\n\n for (const widgetDep of dashboardConfig.widgets) {\n const packageName = widgetDep.package;\n\n if (installedPackages.has(packageName)) {\n installSummary.alreadyInstalled.push(packageName);\n continue;\n }\n\n // Try to find the widget in the registry and install it\n try {\n const registryPkg = await getPackage(packageName);\n if (registryPkg && registryPkg.downloadUrl) {\n await widgetRegistry.downloadWidget(\n packageName,\n registryPkg.downloadUrl,\n registryPkg.dashConfigUrl || null,\n );\n installSummary.installed.push(packageName);\n installedPackages.add(packageName);\n } else {\n installSummary.failed.push({\n package: packageName,\n reason: \"Not found in registry\",\n });\n }\n } catch (installError) {\n installSummary.failed.push({\n package: packageName,\n reason: installError.message,\n });\n }\n }\n }\n\n // 2. Install bundled theme if present\n let themeInstalled = null;\n if (dashboardConfig.theme) {\n const bundledTheme = dashboardConfig.theme;\n try {\n const themeResult = themeController.listThemesForApplication(win, appId);\n const existingThemes = themeResult.themes || {};\n const themeKey = bundledTheme.key;\n\n if (bundledTheme.data && themeKey && !existingThemes[themeKey]) {\n // Embed registry origin metadata if present\n const themeData = { ...bundledTheme.data };\n if (bundledTheme.registryPackage) {\n themeData._registryMeta = {\n source: \"dashboard-import\",\n packageName: bundledTheme.registryPackage,\n installedAt: new Date().toISOString(),\n };\n }\n themeController.saveThemeForApplication(\n win,\n appId,\n themeKey,\n themeData,\n );\n themeInstalled = themeKey;\n console.log(\n `[DashboardConfigController] Installed bundled theme: ${themeKey}`,\n );\n } else if (\n !bundledTheme.data &&\n bundledTheme.registryPackage &&\n themeKey &&\n !existingThemes[themeKey]\n ) {\n // Fallback: try to install from registry by package name\n try {\n const {\n installThemeFromRegistry,\n } = require(\"./themeRegistryController\");\n await installThemeFromRegistry(\n win,\n appId,\n bundledTheme.registryPackage,\n );\n themeInstalled = themeKey;\n console.log(\n `[DashboardConfigController] Installed theme from registry: ${bundledTheme.registryPackage}`,\n );\n } catch (registryErr) {\n console.warn(\n `[DashboardConfigController] Could not install theme from registry: ${registryErr.message}`,\n );\n }\n }\n } catch (themeErr) {\n console.warn(\n `[DashboardConfigController] Could not install bundled theme: ${themeErr.message}`,\n );\n }\n }\n\n // 3. Build workspace from config\n const workspace = { ...dashboardConfig.workspace };\n\n if (!workspace || !workspace.layout) {\n return {\n success: false,\n error: \"Dashboard config has no workspace data\",\n };\n }\n\n // Generate a unique ID for the imported workspace\n workspace.id = Date.now();\n\n // Apply name/menuId/themeKey overrides if provided\n if (options.name) workspace.name = options.name;\n if (options.menuId !== undefined) workspace.menuId = options.menuId;\n if (options.themeKey !== undefined) workspace.themeKey = options.themeKey;\n\n // Set themeKey from bundled theme if it was installed and no override given\n if (themeInstalled && options.themeKey === undefined) {\n workspace.themeKey = themeInstalled;\n }\n\n // 4. Apply event wiring to layout\n const eventWiringSummary = [];\n if (\n dashboardConfig.eventWiring &&\n dashboardConfig.eventWiring.length &&\n workspace.layout\n ) {\n applyEventWiringToLayout(workspace.layout, dashboardConfig.eventWiring);\n for (const wire of dashboardConfig.eventWiring) {\n eventWiringSummary.push(\n `${wire.source?.widget}.${wire.source?.event} → ${wire.target?.widget}.${wire.target?.handler}`,\n );\n }\n }\n\n // 5. Mark as not shareable (imported dashboards cannot be re-published)\n workspace._dashboardConfig = {\n shareable: false,\n source,\n importedFrom: dashboardConfig.name,\n importedAt: new Date().toISOString(),\n originalAuthor: dashboardConfig.author,\n schemaVersion: dashboardConfig.schemaVersion,\n registryPackage: options.registryPackage || null,\n installedVersion: options.installedVersion || null,\n };\n\n // Save workspace to workspaces.json\n const workspaceController = require(\"./workspaceController\");\n const saveResult = workspaceController.saveWorkspaceForApplication(\n win,\n appId,\n workspace,\n );\n\n if (saveResult.error) {\n return {\n success: false,\n error: `Failed to save workspace: ${saveResult.message}`,\n };\n }\n\n // Build provider requirements summary\n const providerSummary = (dashboardConfig.providers || []).map((p) => ({\n type: p.type,\n providerClass: p.providerClass,\n required: p.required,\n usedBy: p.usedBy,\n }));\n\n console.log(\n `[DashboardConfigController] Imported dashboard \"${dashboardConfig.name}\" (${source}) as workspace ${workspace.id}`,\n );\n\n return {\n success: true,\n workspace,\n summary: {\n name: dashboardConfig.name,\n description: dashboardConfig.description || \"\",\n author: dashboardConfig.author,\n widgets: installSummary,\n eventsWired: eventWiringSummary,\n providersRequired: providerSummary,\n themeInstalled: themeInstalled || null,\n },\n };\n}\n\n/**\n * Install a dashboard from the registry by package name.\n *\n * Fetches the dashboard ZIP from the registry, extracts the .dashboard.json,\n * validates it, and delegates to the shared import pipeline.\n *\n * @param {BrowserWindow} win - The main window\n * @param {string} appId - Application identifier\n * @param {string} packageName - Registry package name for the dashboard\n * @param {Object} widgetRegistry - WidgetRegistry instance\n * @returns {Promise<Object>} Result with success, workspace, and summary\n */\nasync function installDashboardFromRegistry(\n win,\n appId,\n packageName,\n widgetRegistry = null,\n) {\n try {\n // 1. Look up the dashboard package in the registry\n const registryPkg = await getPackage(packageName);\n if (!registryPkg) {\n return {\n success: false,\n error: `Dashboard package not found in registry: ${packageName}`,\n };\n }\n\n if (!registryPkg.downloadUrl) {\n return {\n success: false,\n error: `Dashboard package has no download URL: ${packageName}`,\n };\n }\n\n // 2. Resolve the download URL and fetch the ZIP\n const version = registryPkg.version || \"1.0.0\";\n let downloadUrl = registryPkg.downloadUrl;\n downloadUrl = downloadUrl.replace(\"{version}\", version);\n downloadUrl = downloadUrl.replace(\"{name}\", packageName);\n\n // Enforce HTTPS\n const parsedUrl = new URL(downloadUrl);\n if (parsedUrl.protocol !== \"https:\") {\n return {\n success: false,\n error: `Dashboard downloads must use HTTPS. Refusing: ${downloadUrl}`,\n };\n }\n\n console.log(\n `[DashboardConfigController] Fetching dashboard from: ${downloadUrl}`,\n );\n\n const response = await fetch(downloadUrl);\n if (!response.ok) {\n return {\n success: false,\n error: `Failed to download dashboard: ${response.status} ${response.statusText}`,\n };\n }\n\n const buffer = await response.arrayBuffer();\n const zip = new AdmZip(Buffer.from(buffer));\n\n // 3. Validate ZIP entries\n const tempDir = path.join(app.getPath(\"temp\"), \"dash-registry-import\");\n const { validateZipEntries } = require(\"../widgetRegistry\");\n validateZipEntries(zip, tempDir);\n\n // 4. Find and parse .dashboard.json\n const entries = zip.getEntries();\n const configEntry = entries.find((e) =>\n e.entryName.endsWith(\".dashboard.json\"),\n );\n\n if (!configEntry) {\n return {\n success: false,\n error: \"No .dashboard.json file found in downloaded archive\",\n };\n }\n\n const configJson = configEntry.getData().toString(\"utf-8\");\n let dashboardConfig;\n try {\n dashboardConfig = JSON.parse(configJson);\n } catch (parseError) {\n return {\n success: false,\n error: `Invalid JSON in dashboard config: ${parseError.message}`,\n };\n }\n\n // 5. Validate against schema\n const validation = validateDashboardConfig(dashboardConfig);\n if (!validation.valid) {\n return {\n success: false,\n error: `Invalid dashboard config: ${validation.errors.join(\", \")}`,\n };\n }\n\n dashboardConfig = applyDefaults(dashboardConfig);\n\n // 6. Delegate to shared import pipeline\n return await processDashboardConfig(\n win,\n appId,\n dashboardConfig,\n widgetRegistry,\n {\n source: \"registry\",\n registryPackage: packageName,\n installedVersion: registryPkg.version || null,\n },\n );\n } catch (error) {\n console.error(\n \"[DashboardConfigController] Error installing dashboard from registry:\",\n error,\n );\n return {\n success: false,\n error: error.message,\n };\n }\n}\n\n/**\n * Check compatibility of a dashboard's widget dependencies against\n * installed widgets and registry availability.\n *\n * @param {Array} dashboardWidgets - Widget deps from dashboard config\n * @param {Object} widgetRegistry - WidgetRegistry instance (needs getWidgets())\n * @returns {Promise<Object>} Compatibility report\n */\nasync function checkCompatibility(dashboardWidgets, widgetRegistry = null) {\n const {\n checkDashboardCompatibility,\n } = require(\"../schema/dashboardConfigUtils\");\n const { fetchRegistryIndex } = require(\"./registryController\");\n\n const installedWidgets = widgetRegistry ? widgetRegistry.getWidgets() : [];\n\n let registryPackages = [];\n try {\n const index = await fetchRegistryIndex();\n registryPackages = index.packages || [];\n } catch (err) {\n console.warn(\n \"[DashboardConfigController] Could not fetch registry index for compatibility check:\",\n err.message,\n );\n }\n\n return checkDashboardCompatibility(\n dashboardWidgets,\n installedWidgets,\n registryPackages,\n );\n}\n\n/**\n * Prepare a dashboard for publishing to the registry.\n *\n * Validates that the workspace is shareable, builds the dashboard config,\n * checks that all widgets exist in the registry, generates a registry\n * manifest, and creates a ZIP containing both the manifest and\n * .dashboard.json config.\n *\n * @param {BrowserWindow} win - The main window (for save dialog)\n * @param {string} appId - Application identifier\n * @param {number|string} workspaceId - ID of the workspace to publish\n * @param {Object} options - Publishing options\n * @param {string} options.authorName - Author name\n * @param {string} options.authorId - Author ID\n * @param {string} options.description - Dashboard description\n * @param {string[]} options.tags - Tags\n * @param {string} options.icon - Icon name\n * @param {string} options.githubUser - GitHub user/org for registry scope\n * @param {string} options.category - Registry category\n * @param {Object} widgetRegistry - WidgetRegistry instance\n * @returns {Promise<Object>} Result with success, manifest, and filePath\n */\nasync function prepareDashboardForPublish(\n win,\n appId,\n workspaceId,\n options = {},\n widgetRegistry = null,\n) {\n try {\n const {\n generateRegistryManifest,\n } = require(\"../schema/dashboardConfigUtils\");\n\n // 1. Read workspace\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const workspacesArray = getFileContents(filename);\n const workspace = workspacesArray.find(\n (w) => w.id === workspaceId || w.id === Number(workspaceId),\n );\n\n if (!workspace) {\n return {\n success: false,\n error: `Workspace not found: ${workspaceId}`,\n };\n }\n\n // 2. Check shareable flag — imported dashboards cannot be published\n if (\n workspace._dashboardConfig &&\n workspace._dashboardConfig.shareable === false\n ) {\n return {\n success: false,\n error:\n \"This dashboard was imported and cannot be published. Only dashboards you created can be shared.\",\n };\n }\n\n const layout = workspace.layout || [];\n\n // 3. Build the dashboard config (reuse export logic)\n const componentNames = collectComponentNames(layout);\n const eventWiring = extractEventWiring(layout);\n const widgets = buildWidgetDependencies(componentNames, widgetRegistry);\n const providers = buildProviderRequirements(componentNames, widgetRegistry);\n\n const dashboardConfig = applyDefaults({\n schemaVersion: CURRENT_SCHEMA_VERSION,\n name: workspace.name || workspace.label || \"Dashboard\",\n description: options.description || \"\",\n ...(options.authorName\n ? { author: { name: options.authorName, id: options.authorId || \"\" } }\n : {}),\n shareable: true,\n tags: options.tags || [],\n icon: options.icon || \"grip\",\n workspace: {\n id: workspace.id,\n name: workspace.name,\n type: workspace.type || \"workspace\",\n label: workspace.label || workspace.name,\n version: workspace.version || 1,\n layout,\n menuId: workspace.menuId || 1,\n },\n widgets,\n providers,\n eventWiring,\n });\n\n // 4. Bundle theme if workspace has a themeKey\n if (workspace.themeKey) {\n try {\n const themeResult = themeController.listThemesForApplication(\n win,\n appId,\n );\n const themeData = themeResult.themes?.[workspace.themeKey];\n if (themeData) {\n dashboardConfig.theme = {\n key: workspace.themeKey,\n data: themeData,\n };\n if (themeData._registryMeta?.packageName) {\n dashboardConfig.theme.registryPackage =\n themeData._registryMeta.packageName;\n }\n }\n } catch (themeErr) {\n console.warn(\n \"[DashboardConfigController] Could not bundle theme for publish:\",\n themeErr.message,\n );\n }\n }\n\n // 5. Validate the config\n const validation = validateDashboardConfig(dashboardConfig);\n if (!validation.valid) {\n return {\n success: false,\n error: `Generated config is invalid: ${validation.errors.join(\", \")}`,\n };\n }\n\n // 6. Check which widgets exist in the registry (soft warning, not blocking)\n const { fetchRegistryIndex } = require(\"./registryController\");\n let registryPackages = [];\n let registryCheckFailed = false;\n try {\n const index = await fetchRegistryIndex();\n registryPackages = index.packages || [];\n } catch (err) {\n console.warn(\n `[DashboardConfigController] Unable to verify registry: ${err.message}`,\n );\n registryCheckFailed = true;\n }\n\n let missingFromRegistry = [];\n if (!registryCheckFailed) {\n const registryNames = new Set(registryPackages.map((p) => p.name));\n const missingWidgets = widgets.filter(\n (w) => w.required !== false && !registryNames.has(w.package),\n );\n const grouped = {};\n for (const w of missingWidgets) {\n if (!grouped[w.package]) grouped[w.package] = [];\n const widgetName = w.id.includes(\".\") ? w.id.split(\".\")[1] : w.id;\n if (!grouped[w.package].includes(widgetName)) {\n grouped[w.package].push(widgetName);\n }\n }\n missingFromRegistry = Object.entries(grouped).map(\n ([pkg, widgetNames]) => ({ package: pkg, widgets: widgetNames }),\n );\n }\n\n // 7. Resolve registry username for scope\n let registryUsername = options.githubUser || \"\";\n if (!registryUsername) {\n try {\n const { getRegistryProfile } = require(\"./registryAuthController\");\n const profile = await getRegistryProfile();\n registryUsername = profile?.username || options.authorId || \"\";\n } catch {\n registryUsername = options.authorId || \"\";\n }\n }\n\n // 8. Generate registry manifest\n const manifest = generateRegistryManifest(dashboardConfig, {\n githubUser: registryUsername,\n category: options.category || \"general\",\n repository: options.repository || \"\",\n appOrigin: appId,\n });\n\n // 9. Show save dialog for the publish package\n const sanitizedName = manifest.name;\n const { canceled, filePath } = await dialog.showSaveDialog(win, {\n title: \"Save Dashboard Package for Registry\",\n defaultPath: path.join(\n app.getPath(\"desktop\"),\n `dashboard-${sanitizedName}-v${manifest.version}.zip`,\n ),\n filters: [{ name: \"ZIP Archive\", extensions: [\"zip\"] }],\n });\n\n if (canceled || !filePath) {\n return { success: false, canceled: true };\n }\n\n // 10. Create ZIP with manifest and dashboard config\n const zip = new AdmZip();\n zip.addFile(\n \"manifest.json\",\n Buffer.from(JSON.stringify(manifest, null, 2), \"utf-8\"),\n );\n zip.addFile(\n `${sanitizedName}.dashboard.json`,\n Buffer.from(JSON.stringify(dashboardConfig, null, 2), \"utf-8\"),\n );\n zip.writeZip(filePath);\n\n console.log(\n `[DashboardConfigController] Prepared publish package: ${filePath}`,\n );\n\n // 11. Attempt to publish to registry if authenticated\n let registrySubmission = null;\n try {\n const { getAuthStatus } = require(\"./registryAuthController\");\n const { publishToRegistry } = require(\"./registryApiController\");\n const authStatus = getAuthStatus();\n\n if (authStatus.authenticated) {\n console.log(\"[DashboardConfigController] Publishing to registry...\");\n registrySubmission = await publishToRegistry(filePath, manifest);\n if (registrySubmission.success) {\n console.log(\n `[DashboardConfigController] Published to registry: ${registrySubmission.registryUrl}`,\n );\n } else {\n console.warn(\n `[DashboardConfigController] Registry publish failed: ${registrySubmission.error}`,\n );\n }\n } else {\n registrySubmission = { success: false, authRequired: true };\n }\n } catch (err) {\n console.warn(\n `[DashboardConfigController] Registry publish error: ${err.message}`,\n );\n registrySubmission = { success: false, error: err.message };\n }\n\n return {\n success: true,\n filePath,\n manifest,\n config: dashboardConfig,\n warnings:\n missingFromRegistry.length > 0 ? missingFromRegistry : undefined,\n registryCheckFailed: registryCheckFailed || undefined,\n registrySubmission,\n };\n } catch (error) {\n console.error(\n \"[DashboardConfigController] Error preparing dashboard for publish:\",\n error,\n );\n return {\n success: false,\n error: error.message,\n };\n }\n}\n\n/**\n * Get a full preview of a dashboard package from the registry.\n * Combines the structured preview data with a compatibility check.\n *\n * @param {string} packageName - Registry package name\n * @param {Object} widgetRegistry - WidgetRegistry instance\n * @returns {Promise<Object>} Preview data with compatibility report\n */\nasync function getDashboardPreview(packageName, widgetRegistry = null) {\n const {\n buildDashboardPreview,\n checkDashboardCompatibility,\n } = require(\"../schema/dashboardConfigUtils\");\n const { getPackage, fetchRegistryIndex } = require(\"./registryController\");\n\n const pkg = await getPackage(packageName);\n if (!pkg) {\n return {\n success: false,\n error: `Dashboard package not found: ${packageName}`,\n };\n }\n\n const preview = buildDashboardPreview(pkg);\n\n // Get compatibility report\n const installedWidgets = widgetRegistry ? widgetRegistry.getWidgets() : [];\n let registryPackages = [];\n try {\n const index = await fetchRegistryIndex();\n registryPackages = index.packages || [];\n } catch (err) {\n // Non-fatal — preview still works without compatibility\n }\n\n const compatibility = checkDashboardCompatibility(\n pkg.widgets || [],\n installedWidgets,\n registryPackages,\n );\n\n return {\n success: true,\n preview,\n compatibility,\n };\n}\n\n/**\n * Check installed dashboards for available updates.\n * Reads workspaces, finds those installed from the registry,\n * and compares versions against the current registry index.\n *\n * @param {string} appId - Application identifier\n * @returns {Promise<Object>} Result with updates array\n */\nasync function checkDashboardUpdatesForApp(appId) {\n const { checkDashboardUpdates } = require(\"../schema/dashboardConfigUtils\");\n const { fetchRegistryIndex } = require(\"./registryController\");\n\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const workspaces = getFileContents(filename) || [];\n\n const index = await fetchRegistryIndex();\n const registryPackages = index.packages || [];\n\n const updates = checkDashboardUpdates(workspaces, registryPackages);\n\n return {\n success: true,\n updates,\n totalInstalled: workspaces.filter(\n (w) => w._dashboardConfig?.registryPackage,\n ).length,\n };\n } catch (error) {\n console.error(\n \"[DashboardConfigController] Error checking dashboard updates:\",\n error,\n );\n return {\n success: false,\n error: error.message,\n updates: [],\n };\n }\n}\n\n/**\n * Get a provider setup manifest for a dashboard's requirements.\n * Compares required providers against the user's configured providers.\n *\n * @param {string} appId - Application identifier\n * @param {Array} requiredProviders - Provider requirements from dashboard config\n * @returns {Object} Setup manifest with per-provider status\n */\nfunction getProviderSetupManifest(appId, requiredProviders = []) {\n const {\n buildProviderSetupManifest,\n } = require(\"../schema/dashboardConfigUtils\");\n const { listProviders } = require(\"./providerController\");\n\n let configuredProviders = [];\n try {\n configuredProviders = listProviders(null, appId) || [];\n } catch (err) {\n console.warn(\n \"[DashboardConfigController] Could not list providers:\",\n err.message,\n );\n }\n\n return buildProviderSetupManifest(requiredProviders, configuredProviders);\n}\n\n/**\n * Get a publish preview for a dashboard workspace.\n * Returns widget/layout info without creating a ZIP or uploading.\n *\n * @param {string} appId - Application identifier\n * @param {number|string} workspaceId - Workspace to preview\n * @param {Object} widgetRegistry - WidgetRegistry instance (optional)\n * @returns {Object} Preview with dashboardName, widgetCount, widgets, componentNames\n */\nfunction getDashboardPublishPreview(appId, workspaceId, widgetRegistry = null) {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const workspacesArray = getFileContents(filename);\n const workspace = workspacesArray.find(\n (w) => w.id === workspaceId || w.id === Number(workspaceId),\n );\n\n if (!workspace) {\n return { success: false, error: `Workspace not found: ${workspaceId}` };\n }\n\n const layout = workspace.layout || [];\n const componentNames = collectComponentNames(layout);\n const widgets = buildWidgetDependencies(componentNames, widgetRegistry);\n\n return {\n success: true,\n dashboardName: workspace.name || workspace.label || \"Dashboard\",\n widgetCount: componentNames.length,\n widgets: widgets.map((w) => ({ name: w.name, package: w.package })),\n componentNames: [...componentNames],\n };\n } catch (error) {\n console.error(\n \"[DashboardConfigController] Error getting publish preview:\",\n error,\n );\n return { success: false, error: error.message };\n }\n}\n\nmodule.exports = {\n exportDashboardConfig,\n selectDashboardFile,\n importDashboardConfig,\n installDashboardFromRegistry,\n checkCompatibility,\n prepareDashboardForPublish,\n getDashboardPreview,\n checkDashboardUpdatesForApp,\n getProviderSetupManifest,\n getDashboardPublishPreview,\n};\n","/**\n * notificationController.js\n *\n * Main process controller for OS-level notifications.\n * Manages preferences (electron-store), rate limiting, deduplication,\n * and dispatching native Notification instances.\n */\nconst { Notification } = require(\"electron\");\nconst Store = require(\"electron-store\");\n\nconst store = new Store({ name: \"dash-notifications\" });\n\n// --- Rate limiting ---\n// Sliding window: max 10 notifications per 60s per widget\nconst RATE_LIMIT_WINDOW_MS = 60_000;\nconst RATE_LIMIT_MAX = 10;\nconst rateBuckets = new Map(); // widgetId -> [timestamp, ...]\n\n// --- Deduplication ---\n// Same (widgetName, type, title, body) within 5s is dropped\nconst DEDUP_WINDOW_MS = 5_000;\nconst recentNotifications = new Map(); // dedup key -> timestamp\n\nfunction getDedupKey(payload) {\n return `${payload.widgetName}:${payload.type}:${payload.title}:${payload.body}`;\n}\n\nfunction isRateLimited(widgetId) {\n const now = Date.now();\n let timestamps = rateBuckets.get(widgetId) || [];\n // Prune old entries\n timestamps = timestamps.filter((t) => now - t < RATE_LIMIT_WINDOW_MS);\n rateBuckets.set(widgetId, timestamps);\n return timestamps.length >= RATE_LIMIT_MAX;\n}\n\nfunction recordNotification(widgetId) {\n const timestamps = rateBuckets.get(widgetId) || [];\n timestamps.push(Date.now());\n rateBuckets.set(widgetId, timestamps);\n}\n\nfunction isDuplicate(payload) {\n const key = getDedupKey(payload);\n const now = Date.now();\n const lastSent = recentNotifications.get(key);\n if (lastSent && now - lastSent < DEDUP_WINDOW_MS) {\n return true;\n }\n recentNotifications.set(key, now);\n return false;\n}\n\n// Clean up stale dedup entries periodically\nsetInterval(() => {\n const now = Date.now();\n for (const [key, ts] of recentNotifications) {\n if (now - ts > DEDUP_WINDOW_MS) {\n recentNotifications.delete(key);\n }\n }\n}, 30_000);\n\nconst notificationController = {\n /**\n * Send a notification if it passes all checks.\n *\n * @param {BrowserWindow} win - the main window (for click routing)\n * @param {Object} payload\n * @param {string} payload.widgetName - component name of the widget\n * @param {string} payload.widgetId - widget instance UUID\n * @param {string} payload.workspaceId - workspace containing the widget\n * @param {string} payload.type - notification type key (must match .dash.js config)\n * @param {string} payload.title - notification title\n * @param {string} payload.body - notification body\n * @param {Object} [payload.data] - arbitrary data returned on click\n * @param {boolean} [payload.silent] - suppress sound\n * @param {string} [payload.urgency] - \"low\" | \"normal\" | \"critical\"\n * @returns {{ success: boolean, reason?: string }}\n */\n send: (win, payload) => {\n try {\n const {\n widgetName,\n widgetId,\n workspaceId,\n type,\n title,\n body,\n data,\n silent,\n urgency,\n } = payload;\n\n // 1. Check globalEnabled\n const globalEnabled = store.get(\"globalEnabled\", true);\n if (!globalEnabled) {\n return { success: false, reason: \"notifications_disabled\" };\n }\n\n // 2. Check doNotDisturb\n const dnd = store.get(\"doNotDisturb\", false);\n if (dnd) {\n return { success: false, reason: \"do_not_disturb\" };\n }\n\n // 3. Check per-widget per-type preference\n const instances = store.get(\"instances\", {});\n const widgetPrefs = instances[widgetId];\n if (widgetPrefs && widgetPrefs[type] === false) {\n return { success: false, reason: \"type_disabled\" };\n }\n\n // 4. Rate limit\n if (isRateLimited(widgetId)) {\n return { success: false, reason: \"rate_limited\" };\n }\n\n // 5. Deduplication\n if (isDuplicate(payload)) {\n return { success: false, reason: \"duplicate\" };\n }\n\n // 6. All checks passed — send native notification\n const notification = new Notification({\n title,\n body,\n silent: silent || false,\n urgency: urgency || \"normal\",\n });\n\n notification.on(\"click\", () => {\n if (win && !win.isDestroyed()) {\n win.show();\n win.focus();\n win.webContents.send(\"notification:clicked\", {\n widgetName,\n widgetId,\n workspaceId,\n type,\n data: data || null,\n });\n }\n });\n\n notification.show();\n recordNotification(widgetId);\n\n console.log(\n `[notificationController] Sent: ${widgetName}.${type} — \"${title}\"`,\n );\n\n return { success: true };\n } catch (error) {\n console.error(\n \"[notificationController] Error sending notification:\",\n error,\n );\n return { error: true, message: error.message };\n }\n },\n\n /**\n * Get all notification preferences.\n *\n * @returns {{ globalEnabled: boolean, doNotDisturb: boolean, instances: Object }}\n */\n getPreferences: () => {\n try {\n return {\n globalEnabled: store.get(\"globalEnabled\", true),\n doNotDisturb: store.get(\"doNotDisturb\", false),\n instances: store.get(\"instances\", {}),\n };\n } catch (error) {\n console.error(\n \"[notificationController] Error getting preferences:\",\n error,\n );\n return {\n error: true,\n message: error.message,\n globalEnabled: true,\n doNotDisturb: false,\n instances: {},\n };\n }\n },\n\n /**\n * Set notification preferences for a specific widget instance.\n *\n * @param {string} widgetId - widget instance UUID\n * @param {Object} prefs - { [notificationType]: boolean }\n * @returns {{ success: boolean }}\n */\n setPreferences: (widgetId, prefs) => {\n try {\n const instances = store.get(\"instances\", {});\n instances[widgetId] = { ...(instances[widgetId] || {}), ...prefs };\n store.set(\"instances\", instances);\n console.log(\n `[notificationController] Preferences updated for widget ${widgetId}`,\n );\n return { success: true };\n } catch (error) {\n console.error(\n \"[notificationController] Error setting preferences:\",\n error,\n );\n return { error: true, message: error.message };\n }\n },\n\n /**\n * Set global notification settings.\n *\n * @param {Object} settings\n * @param {boolean} [settings.globalEnabled]\n * @param {boolean} [settings.doNotDisturb]\n * @returns {{ success: boolean }}\n */\n setGlobal: (settings) => {\n try {\n if (typeof settings.globalEnabled === \"boolean\") {\n store.set(\"globalEnabled\", settings.globalEnabled);\n }\n if (typeof settings.doNotDisturb === \"boolean\") {\n store.set(\"doNotDisturb\", settings.doNotDisturb);\n }\n console.log(\n \"[notificationController] Global settings updated:\",\n settings,\n );\n return { success: true };\n } catch (error) {\n console.error(\"[notificationController] Error setting global:\", error);\n return { error: true, message: error.message };\n }\n },\n};\n\nmodule.exports = notificationController;\n","/**\n * clientFactories.js\n *\n * Registers built-in provider type factories with clientCache.\n * SDK packages are lazy-required so they're only loaded when first needed.\n *\n * Auto-imported by electron/index.js — factories are registered the moment\n * any consuming app does require(\"@trops/dash-core/electron\").\n */\n\nconst clientCache = require(\"./clientCache\");\n\n// --- Algolia ---\nclientCache.registerFactory(\"algolia\", (credentials) => {\n const algoliasearch = require(\"algoliasearch\");\n return algoliasearch(\n credentials.appId,\n credentials.apiKey || credentials.key,\n );\n});\n\n// --- OpenAI ---\nclientCache.registerFactory(\"openai\", (credentials) => {\n const OpenAI = require(\"openai\");\n return new OpenAI({ apiKey: credentials.apiKey });\n});\n","/**\n * sessionController.js\n *\n * Manages session persistence: recently opened dashboards and\n * open tab state for session restore on relaunch.\n *\n * Uses electron-store (unencrypted) for lightweight persistence.\n */\n\nconst MAX_RECENTS = 20;\n\n// Lazy-load electron-store to avoid issues when not installed\nlet store = null;\nfunction getStore() {\n if (!store) {\n const Store = require(\"electron-store\");\n store = new Store({ name: \"dash-session\" });\n }\n return store;\n}\n\n/**\n * Get recently opened dashboards.\n *\n * @returns {Array<{ workspaceId: string, name: string, openedAt: string }>}\n */\nfunction getRecentDashboards() {\n try {\n const s = getStore();\n const recents = s.get(\"recents\", []);\n return recents\n .sort((a, b) => new Date(b.openedAt) - new Date(a.openedAt))\n .slice(0, MAX_RECENTS);\n } catch {\n return [];\n }\n}\n\n/**\n * Add (or upsert) a recent dashboard entry.\n *\n * @param {string} workspaceId\n * @param {string} name\n * @returns {Array} Updated recents list\n */\nfunction addRecentDashboard(workspaceId, name) {\n try {\n const s = getStore();\n let recents = s.get(\"recents\", []);\n\n // Remove existing entry for this workspace (upsert)\n recents = recents.filter((r) => r.workspaceId !== workspaceId);\n\n // Prepend new entry\n recents.unshift({\n workspaceId,\n name: name || \"Untitled\",\n openedAt: new Date().toISOString(),\n });\n\n // Cap at MAX_RECENTS\n recents = recents.slice(0, MAX_RECENTS);\n\n s.set(\"recents\", recents);\n return recents;\n } catch {\n return [];\n }\n}\n\n/**\n * Clear all recent dashboards.\n */\nfunction clearRecentDashboards() {\n try {\n const s = getStore();\n s.set(\"recents\", []);\n } catch {\n // ignore\n }\n}\n\n/**\n * Get saved session state (open tabs + active tab).\n *\n * @returns {{ openTabIds: string[], activeTabId: string | null } | null}\n */\nfunction getSessionState() {\n try {\n const s = getStore();\n const state = s.get(\"sessionState\", null);\n return state || null;\n } catch {\n return null;\n }\n}\n\n/**\n * Save session state (open tabs + active tab).\n *\n * @param {string[]} openTabIds\n * @param {string|null} activeTabId\n */\nfunction saveSessionState(openTabIds, activeTabId) {\n try {\n const s = getStore();\n s.set(\"sessionState\", { openTabIds, activeTabId });\n } catch {\n // ignore\n }\n}\n\n/**\n * Clear saved session state.\n */\nfunction clearSessionState() {\n try {\n const s = getStore();\n s.delete(\"sessionState\");\n } catch {\n // ignore\n }\n}\n\nmodule.exports = {\n getRecentDashboards,\n addRecentDashboard,\n clearRecentDashboards,\n getSessionState,\n saveSessionState,\n clearSessionState,\n};\n","/**\n * dashboardRatingsUtils.js\n *\n * Pure utility functions for dashboard ratings logic.\n * No Electron or file I/O dependencies — safe to test anywhere.\n */\n\n/**\n * Validate and build a rating entry.\n *\n * @param {string} packageName - Dashboard package name\n * @param {Object} rating - Rating input\n * @param {number} rating.stars - 1-5 star rating\n * @param {string} [rating.review] - Optional text review\n * @returns {Object} { success, rating, error }\n */\nfunction validateAndBuildRating(packageName, rating = {}) {\n if (!packageName) {\n return { success: false, error: \"Package name is required\" };\n }\n\n const stars = Number(rating.stars);\n if (!stars || stars < 1 || stars > 5 || !Number.isInteger(stars)) {\n return {\n success: false,\n error: \"Stars must be an integer between 1 and 5\",\n };\n }\n\n const entry = {\n stars,\n review:\n typeof rating.review === \"string\" ? rating.review.slice(0, 1000) : \"\",\n ratedAt: new Date().toISOString(),\n };\n\n return { success: true, rating: entry };\n}\n\n/**\n * Enrich packages with user rating data (pure function).\n *\n * @param {Array} packages - Registry packages\n * @param {Object} ratings - Map of packageName → rating data\n * @returns {Array} Packages with userRating field added\n */\nfunction enrichWithRatings(packages, ratings) {\n return packages.map((pkg) => ({\n ...pkg,\n userRating: ratings[pkg.name] || null,\n }));\n}\n\nmodule.exports = {\n validateAndBuildRating,\n enrichWithRatings,\n};\n","/**\n * dashboardRatingsController.js\n *\n * Local storage for dashboard ratings and reviews.\n * Stores user ratings per dashboard package in a JSON file.\n * Runs in the Electron main process.\n */\n\nconst { app } = require(\"electron\");\nconst path = require(\"path\");\nconst { getFileContents, writeToFile } = require(\"../utils/file\");\nconst {\n validateAndBuildRating,\n enrichWithRatings,\n} = require(\"../schema/dashboardRatingsUtils\");\n\nconst ratingsFilename = \"dashboard-ratings.json\";\nconst appName = \"Dashboard\";\n\n/**\n * Get the ratings file path for an app.\n */\nfunction getRatingsPath(appId) {\n return path.join(app.getPath(\"userData\"), appName, appId, ratingsFilename);\n}\n\n/**\n * Read all ratings from disk.\n */\nfunction readRatings(appId) {\n const filepath = getRatingsPath(appId);\n return getFileContents(filepath, {});\n}\n\n/**\n * Write ratings to disk.\n */\nfunction writeRatings(appId, ratings) {\n const filepath = getRatingsPath(appId);\n writeToFile(filepath, JSON.stringify(ratings, null, 2));\n}\n\n/**\n * Save or update a rating for a dashboard package.\n */\nfunction saveDashboardRating(appId, packageName, rating = {}) {\n const result = validateAndBuildRating(packageName, rating);\n if (!result.success) return result;\n\n const ratings = readRatings(appId);\n ratings[packageName] = result.rating;\n writeRatings(appId, ratings);\n\n return { success: true, rating: ratings[packageName] };\n}\n\n/**\n * Get the user's rating for a specific dashboard package.\n */\nfunction getDashboardRating(appId, packageName) {\n const ratings = readRatings(appId);\n return ratings[packageName] || null;\n}\n\n/**\n * Get all dashboard ratings.\n */\nfunction listDashboardRatings(appId) {\n return readRatings(appId);\n}\n\n/**\n * Delete a rating for a dashboard package.\n */\nfunction deleteDashboardRating(appId, packageName) {\n const ratings = readRatings(appId);\n if (!ratings[packageName]) {\n return { success: false, error: \"No rating found for this package\" };\n }\n delete ratings[packageName];\n writeRatings(appId, ratings);\n return { success: true };\n}\n\n/**\n * Enrich registry packages with local rating data.\n */\nfunction enrichPackagesWithRatings(packages, appId) {\n const ratings = readRatings(appId);\n return enrichWithRatings(packages, ratings);\n}\n\nmodule.exports = {\n saveDashboardRating,\n getDashboardRating,\n listDashboardRatings,\n deleteDashboardRating,\n enrichPackagesWithRatings,\n};\n","/**\n * Controller exports.\n */\nconst { showDialog, fileChosenError } = require(\"./dialogController\");\nconst {\n isEncryptionAvailable,\n saveData,\n getData,\n} = require(\"./secureStoreController\");\nconst {\n listWorkspacesForApplication,\n saveWorkspaceForApplication,\n deleteWorkspaceForApplication,\n} = require(\"./workspaceController\");\nconst {\n saveThemeForApplication,\n listThemesForApplication,\n deleteThemeForApplication,\n} = require(\"./themeController\");\nconst {\n convertJsonToCsvFile,\n convertJsonToCsvString,\n saveToFile,\n readFromFile,\n parseXMLStream,\n parseCSVStream,\n readLinesFromFile,\n transformFile,\n readJSONFromFile,\n readDataFromURL,\n extractColorsFromImageURL,\n} = require(\"./dataController\");\nconst {\n saveSettingsForApplication,\n getSettingsForApplication,\n getDataDirectory,\n setDataDirectory,\n migrateDataDirectory,\n} = require(\"./settingsController\");\nconst {\n saveProvider,\n listProviders,\n getProvider,\n deleteProvider,\n} = require(\"./providerController\");\nconst {\n listIndices,\n partialUpdateObjectsFromDirectory,\n createBatchesFromFile,\n browseObjectsToFile,\n search: searchIndex,\n} = require(\"./algoliaController\");\nconst { describeImage } = require(\"./openaiController\");\nconst {\n saveMenuItemForApplication,\n listMenuItemsForApplication,\n} = require(\"./menuItemsController\");\nconst { install: pluginInstall } = require(\"./pluginController\");\nconst {\n exportDashboardConfig,\n selectDashboardFile,\n importDashboardConfig,\n installDashboardFromRegistry,\n checkCompatibility,\n prepareDashboardForPublish,\n getDashboardPreview,\n checkDashboardUpdatesForApp,\n getProviderSetupManifest,\n getDashboardPublishPreview,\n} = require(\"./dashboardConfigController\");\nconst {\n initiateDeviceFlow,\n pollForToken,\n getStoredToken: getRegistryToken,\n getAuthStatus: getRegistryAuthStatus,\n getRegistryProfile,\n updateRegistryProfile,\n getRegistryPackages,\n updateRegistryPackage,\n clearToken: clearRegistryToken,\n} = require(\"./registryAuthController\");\nconst {\n publishToRegistry,\n getRegistryUrl,\n} = require(\"./registryApiController\");\nconst {\n getRecentDashboards,\n addRecentDashboard,\n clearRecentDashboards,\n getSessionState,\n saveSessionState,\n clearSessionState,\n} = require(\"./sessionController\");\nconst {\n saveDashboardRating,\n getDashboardRating,\n listDashboardRatings,\n deleteDashboardRating,\n enrichPackagesWithRatings,\n} = require(\"./dashboardRatingsController\");\nconst notificationController = require(\"./notificationController\");\nconst {\n prepareThemeForPublish,\n installThemeFromRegistry,\n getThemePublishPreview,\n} = require(\"./themeRegistryController\");\n\nmodule.exports = {\n showDialog,\n fileChosenError,\n isEncryptionAvailable,\n saveData,\n getData,\n listWorkspacesForApplication,\n saveWorkspaceForApplication,\n deleteWorkspaceForApplication,\n saveThemeForApplication,\n listThemesForApplication,\n deleteThemeForApplication,\n convertJsonToCsvFile,\n convertJsonToCsvString,\n parseXMLStream,\n parseCSVStream,\n readLinesFromFile,\n saveToFile,\n readFromFile,\n saveSettingsForApplication,\n getSettingsForApplication,\n transformFile,\n readJSONFromFile,\n readDataFromURL,\n extractColorsFromImageURL,\n saveProvider,\n listProviders,\n getProvider,\n deleteProvider,\n getDataDirectory,\n setDataDirectory,\n migrateDataDirectory,\n listIndices,\n partialUpdateObjectsFromDirectory,\n createBatchesFromFile,\n browseObjectsToFile,\n describeImage,\n saveMenuItemForApplication,\n listMenuItemsForApplication,\n pluginInstall,\n searchIndex,\n exportDashboardConfig,\n selectDashboardFile,\n importDashboardConfig,\n installDashboardFromRegistry,\n checkCompatibility,\n prepareDashboardForPublish,\n getDashboardPreview,\n checkDashboardUpdatesForApp,\n getProviderSetupManifest,\n getDashboardPublishPreview,\n saveDashboardRating,\n getDashboardRating,\n listDashboardRatings,\n deleteDashboardRating,\n enrichPackagesWithRatings,\n initiateDeviceFlow,\n pollForToken,\n getRegistryToken,\n getRegistryAuthStatus,\n getRegistryProfile,\n updateRegistryProfile,\n getRegistryPackages,\n updateRegistryPackage,\n clearRegistryToken,\n publishToRegistry,\n getRegistryUrl,\n getRecentDashboards,\n addRecentDashboard,\n clearRecentDashboards,\n getSessionState,\n saveSessionState,\n clearSessionState,\n notificationController,\n prepareThemeForPublish,\n installThemeFromRegistry,\n getThemePublishPreview,\n};\n","const { ipcRenderer } = require(\"electron\");\nconst {\n SECURE_STORE_ENCRYPTION_CHECK,\n SECURE_STORE_SET_DATA,\n SECURE_STORE_GET_DATA,\n} = require(\"../events\");\n/**\n * secureStoreApi\n * - for Apple, keychain methods\n */\nconst secureStoreApi = {\n isEncryptionAvailable: () =>\n ipcRenderer.invoke(SECURE_STORE_ENCRYPTION_CHECK, {}),\n saveData: (key, value) =>\n ipcRenderer.invoke(SECURE_STORE_SET_DATA, { key, value }),\n getData: (key) => ipcRenderer.invoke(SECURE_STORE_GET_DATA, { key }),\n};\n\nmodule.exports = secureStoreApi;\n","/**\n * workspaceApi.js\n *\n * Handle the workspace configuration file\n */\nconst { ipcRenderer } = require(\"electron\");\nconst {\n WORKSPACE_LIST,\n WORKSPACE_SAVE,\n WORKSPACE_DELETE,\n} = require(\"../events\");\n\nconst workspaceApi = {\n /**\n * listWorkspacesForApplication\n * read the workspaces.json file in the app config directory\n * on the local user's machine and return the list of workspaces (dashboards)\n *\n * @param {String} appId the appId specified in the dash initialization\n */\n listWorkspacesForApplication: (appId) => {\n console.log(\"listWorkspacesForApplication called with appId:\", appId);\n return ipcRenderer.invoke(WORKSPACE_LIST, { appId });\n },\n\n /**\n * saveWorkspaceForApplication\n * Save the new workspace to the workspaces.json config file\n * @param {String} appId\n * @param {Object} data\n * @returns\n */\n saveWorkspaceForApplication: (appId, data) =>\n ipcRenderer.invoke(WORKSPACE_SAVE, { appId, data }),\n\n /**\n * deleteWorkspaceForApplication\n * Delete a workspace from the workspaces.json config file\n * @param {String} appId\n * @param {String} workspaceId\n * @returns\n */\n deleteWorkspaceForApplication: (appId, workspaceId) =>\n ipcRenderer.invoke(WORKSPACE_DELETE, { appId, workspaceId }),\n};\n\nmodule.exports = workspaceApi;\n","/**\n * layoutApi.js\n *\n * Handle the layout configuration file\n */\n// ipcRenderer that must be used to invoke the events\nconst { ipcRenderer } = require(\"electron\");\n\nconst { LAYOUT_LIST, LAYOUT_SAVE } = require(\"../events\");\n\nconst layoutApi = {\n listLayoutsForApplication: (appId) =>\n ipcRenderer.invoke(LAYOUT_LIST, { appId }),\n saveLayoutForApplication: (appId, data) =>\n ipcRenderer.invoke(LAYOUT_SAVE, { appId, data }),\n};\n\nmodule.exports = layoutApi;\n","/**\n * dataApi.js\n *\n * Handle the data configuration file\n */\n// ipcRenderer that must be used to invoke the events\nconst { ipcRenderer } = require(\"electron\");\n\nconst {\n DATA_JSON_TO_CSV_FILE,\n DATA_JSON_TO_CSV_STRING,\n DATA_READ_FROM_FILE,\n DATA_SAVE_TO_FILE,\n PARSE_XML_STREAM,\n PARSE_CSV_STREAM,\n READ_LINES,\n TRANSFORM_FILE,\n READ_JSON,\n READ_DATA_URL,\n EXTRACT_COLORS_FROM_IMAGE,\n} = require(\"../events\");\n\nconst dataApi = {\n // convert a json array of objects to a csv string and save to file\n convertJsonToCsvFile: (appId, jsonObject, filename) =>\n ipcRenderer.invoke(DATA_JSON_TO_CSV_FILE, {\n appId,\n jsonObject,\n filename,\n }),\n\n // convert a json array of objects to a csv string and return a string\n convertJsonToCsvString: (appId, jsonObject) =>\n ipcRenderer.invoke(DATA_JSON_TO_CSV_STRING, { appId, jsonObject }),\n\n parseXMLStream: (filepath, outpath, start) =>\n ipcRenderer.invoke(PARSE_XML_STREAM, {\n filepath,\n outpath,\n start,\n }),\n\n parseCSVStream: (\n filepath,\n outpath,\n delimiter = \",\",\n objectIdKey = null,\n headers = null,\n limit = null,\n ) => {\n ipcRenderer.invoke(PARSE_CSV_STREAM, {\n filepath,\n outpath,\n delimiter,\n objectIdKey,\n headers,\n limit,\n });\n },\n\n readLinesFromFile: (filepath, lineCount) => {\n ipcRenderer.invoke(READ_LINES, { filepath, lineCount });\n },\n\n readJSONFromFile: (filepath, objectCount = null) => {\n ipcRenderer.invoke(READ_JSON, { filepath, objectCount });\n },\n\n readDataFromURL: (url, toFilepath) => {\n ipcRenderer.invoke(READ_DATA_URL, { url, toFilepath });\n },\n\n /*\n * saveData\n * @param {object} options { filename, extension }\n * @param {object} returnEmpty the return empty object\n */\n saveData: (data, filename, append, returnEmpty, uuid) =>\n ipcRenderer.invoke(DATA_SAVE_TO_FILE, {\n data,\n filename,\n append,\n returnEmpty,\n }),\n\n /*\n * readData\n * @param {string} filename the filename to read (not path)\n */\n readData: (filename, returnEmpty = []) =>\n ipcRenderer.invoke(DATA_READ_FROM_FILE, { filename, returnEmpty }),\n\n /**\n * transformFile\n * @returns\n */\n transformFile: (filepath, outFilepath, mappingFunctionBody, args) => {\n ipcRenderer.invoke(TRANSFORM_FILE, {\n filepath,\n outFilepath,\n mappingFunctionBody,\n args,\n });\n },\n\n extractColorsFromImageURL: (url) => {\n ipcRenderer.invoke(EXTRACT_COLORS_FROM_IMAGE, {\n url,\n });\n },\n};\n\nmodule.exports = dataApi;\n","/**\n * settingsApi.js\n *\n * Handle the settings configuration file\n */\n// ipcRenderer that must be used to invoke the events\nconst { ipcRenderer } = require(\"electron\");\n\nconst {\n SETTINGS_GET,\n SETTINGS_SAVE,\n SETTINGS_GET_DATA_DIR,\n SETTINGS_SET_DATA_DIR,\n SETTINGS_MIGRATE_DATA_DIR,\n} = require(\"../events\");\n\nconst settingsApi = {\n getSettingsForApplication: () => ipcRenderer.invoke(SETTINGS_GET, {}),\n saveSettingsForApplication: (data) =>\n ipcRenderer.invoke(SETTINGS_SAVE, { data }),\n getDataDirectory: () => ipcRenderer.invoke(SETTINGS_GET_DATA_DIR, {}),\n setDataDirectory: (dataDirectory) =>\n ipcRenderer.invoke(SETTINGS_SET_DATA_DIR, { dataDirectory }),\n migrateDataDirectory: (oldDirectory, newDirectory) =>\n ipcRenderer.invoke(SETTINGS_MIGRATE_DATA_DIR, {\n oldDirectory,\n newDirectory,\n }),\n};\n\nmodule.exports = settingsApi;\n","/**\n * layoutApi.js\n *\n * Handle the layout configuration file\n */\n// ipcRenderer that must be used to invoke the events\nconst { ipcRenderer } = require(\"electron\");\n\nconst { CHOOSE_FILE } = require(\"../events\");\n\nconst dialogApi = {\n /**\n * chooseFile\n * @param {*} allowFile if false, will allow only directory selection\n * @param {*} extensions the file extensions allowed\n */\n chooseFile: (allowFile = true, extensions = [\"*\"]) => {\n console.log(\"dialog api choose file\");\n return ipcRenderer.invoke(CHOOSE_FILE, { allowFile, extensions });\n },\n};\n\nmodule.exports = dialogApi;\n","/**\n * widgetApi.js\n *\n * Frontend API for widget management\n * Provides methods to list, install, uninstall, and manage widgets\n *\n * Usage:\n * mainApi.widgets.list()\n * mainApi.widgets.install('Weather', 'https://github.com/user/weather-widget/releases/download/v1.0.0/weather.zip')\n * mainApi.widgets.installLocal('Weather', '/path/to/widget.zip')\n * mainApi.widgets.uninstall('Weather')\n */\n\nconst { ipcRenderer } = require(\"electron\");\n\nconst widgetApi = {\n /**\n * List all installed widgets\n * @returns {Promise<Array>} Array of widget configurations\n */\n list: async () => {\n try {\n return await ipcRenderer.invoke(\"widget:list\");\n } catch (error) {\n console.error(\"[WidgetApi] Error listing widgets:\", error);\n throw error;\n }\n },\n\n /**\n * Get a specific widget by name\n * @param {string} widgetName - Name of the widget\n * @returns {Promise<Object|null>} Widget configuration or null if not found\n */\n get: async (widgetName) => {\n try {\n return await ipcRenderer.invoke(\"widget:get\", widgetName);\n } catch (error) {\n console.error(`[WidgetApi] Error getting widget ${widgetName}:`, error);\n throw error;\n }\n },\n\n /**\n * Install a widget from a remote URL\n * Supports full URLs, template URLs with {version} and {name}, and partial URLs\n *\n * @param {string} widgetName - Name of the widget (e.g., \"Weather\")\n * @param {string} downloadUrl - Download URL (full, template, or partial)\n * @param {string} dashConfigUrl - Optional: URL to dash.json metadata\n * @returns {Promise<Object>} Widget configuration\n *\n * @example\n * // Full URL\n * await mainApi.widgets.install('Weather', 'https://github.com/user/weather-widget/releases/download/v1.0.0/weather.zip')\n *\n * // Template URL\n * await mainApi.widgets.install('Weather', 'https://github.com/user/weather-widget/releases/download/v{version}/{name}.zip')\n *\n * // Partial URL (auto-appends v{version}/{name}.zip)\n * await mainApi.widgets.install('Weather', 'https://github.com/user/weather-widget/releases/download/')\n */\n install: async (widgetName, downloadUrl, dashConfigUrl = null) => {\n try {\n console.log(\n `[WidgetApi] Installing widget: ${widgetName} from ${downloadUrl}`,\n );\n const config = await ipcRenderer.invoke(\n \"widget:install\",\n widgetName,\n downloadUrl,\n dashConfigUrl,\n );\n console.log(`[WidgetApi] ✓ Widget ${widgetName} installed`);\n return config;\n } catch (error) {\n console.error(\n `[WidgetApi] Error installing widget ${widgetName}:`,\n error,\n );\n throw error;\n }\n },\n\n /**\n * Install a widget from a local ZIP file or folder\n *\n * @param {string} widgetName - Name of the widget\n * @param {string} localPath - Path to ZIP file or widget folder\n * @param {string} dashConfigPath - Optional: path to dash.json metadata\n * @returns {Promise<Object>} Widget configuration\n *\n * @example\n * // Install from ZIP\n * await mainApi.widgets.installLocal('Weather', '/Users/me/Downloads/weather-widget.zip')\n *\n * // Install from folder\n * await mainApi.widgets.installLocal('Weather', '/Users/me/CustomWidgets/weather')\n *\n * // Install from file:// URL\n * await mainApi.widgets.installLocal('Weather', 'file:///Users/me/weather-widget.zip')\n */\n installLocal: async (widgetName, localPath, dashConfigPath = null) => {\n try {\n console.log(\n `[WidgetApi] Installing local widget: ${widgetName} from ${localPath}`,\n );\n const config = await ipcRenderer.invoke(\n \"widget:install-local\",\n widgetName,\n localPath,\n dashConfigPath,\n );\n console.log(`[WidgetApi] ✓ Local widget ${widgetName} installed`);\n return config;\n } catch (error) {\n console.error(\n `[WidgetApi] Error installing local widget ${widgetName}:`,\n error,\n );\n throw error;\n }\n },\n\n /**\n * Load multiple widgets from a folder\n * Each subfolder is treated as a separate widget\n *\n * @param {string} folderPath - Path to folder containing widget subdirectories\n * @returns {Promise<Array>} Array of loaded widget configurations\n *\n * @example\n * // Load all widgets from a folder\n * await mainApi.widgets.loadFolder('/Users/me/CustomWidgets')\n */\n loadFolder: async (folderPath) => {\n try {\n console.log(`[WidgetApi] Loading widgets from folder: ${folderPath}`);\n const results = await ipcRenderer.invoke(\n \"widget:load-folder\",\n folderPath,\n );\n console.log(`[WidgetApi] ✓ Loaded ${results.length} widgets from folder`);\n return results;\n } catch (error) {\n console.error(`[WidgetApi] Error loading widgets from folder:`, error);\n throw error;\n }\n },\n\n /**\n * Uninstall a widget\n *\n * @param {string} widgetName - Name of the widget to uninstall\n * @returns {Promise<boolean>} True if successfully uninstalled, false otherwise\n *\n * @example\n * await mainApi.widgets.uninstall('Weather')\n */\n uninstall: async (widgetName) => {\n try {\n console.log(`[WidgetApi] Uninstalling widget: ${widgetName}`);\n const success = await ipcRenderer.invoke(\"widget:uninstall\", widgetName);\n if (success) {\n console.log(`[WidgetApi] ✓ Widget ${widgetName} uninstalled`);\n } else {\n console.warn(`[WidgetApi] Widget ${widgetName} not found`);\n }\n return success;\n } catch (error) {\n console.error(\n `[WidgetApi] Error uninstalling widget ${widgetName}:`,\n error,\n );\n throw error;\n }\n },\n\n /**\n * Get the cache directory path where widgets are stored\n *\n * @returns {Promise<string>} Path to widgets cache directory\n */\n getCachePath: async () => {\n try {\n return await ipcRenderer.invoke(\"widget:cache-path\");\n } catch (error) {\n console.error(\"[WidgetApi] Error getting cache path:\", error);\n throw error;\n }\n },\n\n /**\n * Get the storage directory path (parent of widgets directory)\n *\n * @returns {Promise<string>} Path to storage directory\n */\n getStoragePath: async () => {\n try {\n return await ipcRenderer.invoke(\"widget:storage-path\");\n } catch (error) {\n console.error(\"[WidgetApi] Error getting storage path:\", error);\n throw error;\n }\n },\n\n /**\n * Set a custom storage path for widgets\n * Call this to move widget storage to a different location\n *\n * @param {string} customPath - Custom path for storing widgets\n * @returns {Promise<Object>} { success: boolean, path: string, error?: string }\n */\n setStoragePath: async (customPath) => {\n try {\n console.log(`[WidgetApi] Setting storage path to: ${customPath}`);\n const result = await ipcRenderer.invoke(\n \"widget:set-storage-path\",\n customPath,\n );\n if (result.success) {\n console.log(`[WidgetApi] ✓ Storage path changed to: ${customPath}`);\n }\n return result;\n } catch (error) {\n console.error(\"[WidgetApi] Error setting storage path:\", error);\n throw error;\n }\n },\n\n /**\n * Get parsed .dash.js component configs for all installed widgets\n * Returns an array of { componentName, widgetPackage, config } objects\n *\n * @returns {Promise<Array>} Array of component configurations\n */\n getComponentConfigs: async () => {\n try {\n return await ipcRenderer.invoke(\"widget:get-component-configs\");\n } catch (error) {\n console.error(\"[WidgetApi] Error getting component configs:\", error);\n return [];\n }\n },\n\n /**\n * Read the CJS bundle source for a single installed widget\n *\n * @param {string} widgetName - Name of the widget\n * @returns {Promise<Object>} { success, source, widgetName } or { success: false, error }\n */\n readBundle: async (widgetName) => {\n try {\n return await ipcRenderer.invoke(\"widget:read-bundle\", widgetName);\n } catch (error) {\n console.error(\n `[WidgetApi] Error reading bundle for ${widgetName}:`,\n error,\n );\n return { success: false, error: error.message };\n }\n },\n\n /**\n * Read CJS bundle sources for all installed widgets\n *\n * @returns {Promise<Array>} Array of { widgetName, source }\n */\n readAllBundles: async () => {\n try {\n return await ipcRenderer.invoke(\"widget:read-all-bundles\");\n } catch (error) {\n console.error(\"[WidgetApi] Error reading all bundles:\", error);\n return [];\n }\n },\n\n /**\n * Listen for widget installation events\n * Useful for updating UI when new widgets are installed\n *\n * @param {Function} callback - Function called when widget is installed\n *\n * @example\n * mainApi.widgets.onInstalled(({ widgetName, config }) => {\n * console.log(`Widget ${widgetName} was installed!`);\n * // Refresh widget list in UI\n * });\n */\n onInstalled: (callback) => {\n ipcRenderer.on(\"widget:installed\", (event, data) => {\n callback(data);\n });\n },\n\n /**\n * Listen for batch widget loading events\n * Useful for updating UI when multiple widgets are loaded at once\n *\n * @param {Function} callback - Function called when widgets are loaded\n *\n * @example\n * mainApi.widgets.onLoaded(({ count, widgets }) => {\n * console.log(`${count} widgets were loaded!`);\n * // Refresh widget list in UI\n * });\n */\n onLoaded: (callback) => {\n ipcRenderer.on(\"widgets:loaded\", (event, data) => {\n callback(data);\n });\n },\n\n /**\n * Remove listener for widget installation events\n *\n * @param {Function} callback - The callback to remove\n */\n removeInstalledListener: (callback) => {\n ipcRenderer.removeListener(\"widget:installed\", callback);\n },\n\n /**\n * Remove listener for batch widget loading events\n *\n * @param {Function} callback - The callback to remove\n */\n removeLoadedListener: (callback) => {\n ipcRenderer.removeListener(\"widgets:loaded\", callback);\n },\n};\n\nmodule.exports = widgetApi;\n","/**\n * providerApi.js\n *\n * Handle provider (credentials) management - save, load, list providers\n * Communicates with main process via IPC to handle encryption and file storage\n */\nconst { ipcRenderer } = require(\"electron\");\nconst {\n PROVIDER_SAVE,\n PROVIDER_LIST,\n PROVIDER_GET,\n PROVIDER_DELETE,\n} = require(\"../events\");\n\nconst providerApi = {\n /**\n * saveProvider\n * Save a new provider with encrypted credentials to providers.json\n * Promise-based version\n *\n * @param {String} appId - the appId specified in the dash initialization\n * @param {String} providerName - user-defined name (e.g., \"Algolia Production\")\n * @param {String} providerType - provider type (e.g., \"algolia\", \"slack\")\n * @param {Object} credentials - credentials object (shape depends on provider type)\n * @param {String} providerClass - \"credential\" (default) or \"mcp\"\n * @param {Object} mcpConfig - MCP server config (only for providerClass \"mcp\")\n * @param {String[]|null} allowedTools - optional list of allowed tool names (MCP only)\n * @returns {Promise}\n */\n saveProvider: (\n appId,\n providerName,\n providerType,\n credentials,\n providerClass = \"credential\",\n mcpConfig = null,\n allowedTools = null,\n ) =>\n ipcRenderer.invoke(PROVIDER_SAVE, {\n appId,\n providerName,\n providerType,\n credentials,\n providerClass,\n mcpConfig,\n allowedTools,\n }),\n\n /**\n * listProviders\n * Get list of all available providers with decrypted credentials\n * Promise-based version\n *\n * @param {String} appId - the appId specified in the dash initialization\n * @returns {Promise<Array>} Array of provider objects with name, type, credentials\n */\n listProviders: (appId) => ipcRenderer.invoke(PROVIDER_LIST, { appId }),\n\n /**\n * getProvider\n * Get a specific provider by name with decrypted credentials\n * Promise-based version\n *\n * @param {String} appId - the appId specified in the dash initialization\n * @param {String} providerName - the provider name to retrieve\n * @returns {Promise<Object>} Provider object with name, type, credentials\n */\n getProvider: (appId, providerName) =>\n ipcRenderer.invoke(PROVIDER_GET, { appId, providerName }),\n\n /**\n * deleteProvider\n * Delete a provider from providers.json\n * Promise-based version\n *\n * @param {String} appId - the appId specified in the dash initialization\n * @param {String} providerName - the provider name to delete\n * @returns {Promise}\n */\n deleteProvider: (appId, providerName) =>\n ipcRenderer.invoke(PROVIDER_DELETE, { appId, providerName }),\n\n /**\n * listProvidersForApplication\n * Get list of all available providers with decrypted credentials\n * Event-listener-based version for use with ElectronDashboardApi\n *\n * @param {String} appId - the appId specified in the dash initialization\n */\n listProvidersForApplication: (appId) => {\n ipcRenderer\n .invoke(PROVIDER_LIST, { appId })\n .then((result) => {\n // Emit the event for ElectronDashboardApi to listen to\n ipcRenderer.send(\"PROVIDER_LIST_COMPLETE\", result);\n })\n .catch((error) => {\n ipcRenderer.send(\"PROVIDER_LIST_ERROR\", {\n error: error.message,\n });\n });\n },\n\n /**\n * saveProviderForApplication\n * Save a new provider with encrypted credentials to providers.json\n * Event-listener-based version for use with ElectronDashboardApi\n */\n saveProviderForApplication: (\n appId,\n providerName,\n providerType,\n credentials,\n ) => {\n ipcRenderer\n .invoke(PROVIDER_SAVE, {\n appId,\n providerName,\n providerType,\n credentials,\n })\n .then((result) => {\n ipcRenderer.send(\"PROVIDER_SAVE_COMPLETE\", result);\n })\n .catch((error) => {\n ipcRenderer.send(\"PROVIDER_SAVE_ERROR\", {\n error: error.message,\n });\n });\n },\n\n /**\n * getProviderForApplication\n * Get a specific provider by name with decrypted credentials\n * Event-listener-based version for use with ElectronDashboardApi\n */\n getProviderForApplication: (appId, providerName) => {\n ipcRenderer\n .invoke(PROVIDER_GET, { appId, providerName })\n .then((result) => {\n ipcRenderer.send(\"PROVIDER_GET_COMPLETE\", result);\n })\n .catch((error) => {\n ipcRenderer.send(\"PROVIDER_GET_ERROR\", {\n error: error.message,\n });\n });\n },\n\n /**\n * deleteProviderForApplication\n * Delete a provider from providers.json\n * Event-listener-based version for use with ElectronDashboardApi\n */\n deleteProviderForApplication: (appId, providerName) => {\n ipcRenderer\n .invoke(PROVIDER_DELETE, { appId, providerName })\n .then((result) => {\n ipcRenderer.send(\"PROVIDER_DELETE_COMPLETE\", result);\n })\n .catch((error) => {\n ipcRenderer.send(\"PROVIDER_DELETE_ERROR\", {\n error: error.message,\n });\n });\n },\n};\n\nmodule.exports = providerApi;\n","/**\n * mcpApi.js\n *\n * Preload bridge for MCP (Model Context Protocol) server operations.\n * Communicates with main process via IPC to manage MCP server lifecycle.\n */\nconst { ipcRenderer } = require(\"electron\");\nconst {\n MCP_START_SERVER,\n MCP_STOP_SERVER,\n MCP_LIST_TOOLS,\n MCP_CALL_TOOL,\n MCP_LIST_RESOURCES,\n MCP_READ_RESOURCE,\n MCP_SERVER_STATUS,\n MCP_GET_CATALOG,\n MCP_RUN_AUTH,\n} = require(\"../events\");\n\nconst mcpApi = {\n /**\n * startServer\n * Start an MCP server with the given config and credentials\n *\n * @param {string} serverName unique name for this server instance\n * @param {object} mcpConfig { transport, command, args, envMapping }\n * @param {object} credentials decrypted credentials object\n * @returns {Promise<{ success, serverName, tools, status } | { error, message }>}\n */\n startServer: (serverName, mcpConfig, credentials) =>\n ipcRenderer.invoke(MCP_START_SERVER, {\n serverName,\n mcpConfig,\n credentials,\n }),\n\n /**\n * stopServer\n * Stop a running MCP server\n *\n * @param {string} serverName the server to stop\n * @returns {Promise<{ success, serverName } | { error, message }>}\n */\n stopServer: (serverName) =>\n ipcRenderer.invoke(MCP_STOP_SERVER, { serverName }),\n\n /**\n * listTools\n * List available tools for a running MCP server\n *\n * @param {string} serverName the server name\n * @returns {Promise<{ tools } | { error, message }>}\n */\n listTools: (serverName) => ipcRenderer.invoke(MCP_LIST_TOOLS, { serverName }),\n\n /**\n * callTool\n * Call a tool on a running MCP server\n *\n * @param {string} serverName the server name\n * @param {string} toolName the tool to call\n * @param {object} args tool arguments\n * @param {Array<string>} allowedTools optional whitelist of allowed tool names\n * @returns {Promise<{ result } | { error, message }>}\n */\n callTool: (serverName, toolName, args, allowedTools = null) =>\n ipcRenderer.invoke(MCP_CALL_TOOL, {\n serverName,\n toolName,\n args,\n allowedTools,\n }),\n\n /**\n * listResources\n * List available resources for a running MCP server\n *\n * @param {string} serverName the server name\n * @returns {Promise<{ resources } | { error, message }>}\n */\n listResources: (serverName) =>\n ipcRenderer.invoke(MCP_LIST_RESOURCES, { serverName }),\n\n /**\n * readResource\n * Read a specific resource from a running MCP server\n *\n * @param {string} serverName the server name\n * @param {string} uri the resource URI\n * @returns {Promise<{ resource } | { error, message }>}\n */\n readResource: (serverName, uri) =>\n ipcRenderer.invoke(MCP_READ_RESOURCE, { serverName, uri }),\n\n /**\n * getServerStatus\n * Get the connection status of a server\n *\n * @param {string} serverName the server name\n * @returns {Promise<{ status, tools, error }>}\n */\n getServerStatus: (serverName) =>\n ipcRenderer.invoke(MCP_SERVER_STATUS, { serverName }),\n\n /**\n * getCatalog\n * Load the MCP server seed catalog\n *\n * @returns {Promise<{ catalog } | { error, message }>}\n */\n getCatalog: () => ipcRenderer.invoke(MCP_GET_CATALOG),\n\n /**\n * runAuth\n * Run a one-shot auth command for an MCP server (e.g., OAuth browser flow)\n *\n * @param {object} mcpConfig { transport, command, args, envMapping }\n * @param {object} credentials decrypted credentials object\n * @param {object} authCommand { command, args }\n * @returns {Promise<{ success } | { error, message }>}\n */\n runAuth: (mcpConfig, credentials, authCommand) =>\n ipcRenderer.invoke(MCP_RUN_AUTH, { mcpConfig, credentials, authCommand }),\n};\n\nmodule.exports = mcpApi;\n","/**\n * registryApi.js\n *\n * Frontend API for the widget registry/marketplace.\n * Wraps IPC calls to the registryController in the main process.\n *\n * Usage:\n * mainApi.registry.search(\"weather\")\n * mainApi.registry.getPackage(\"weather-widgets\")\n * mainApi.registry.fetchIndex(true)\n * mainApi.registry.checkUpdates([{ name: \"weather-widgets\", version: \"1.0.0\" }])\n */\n\nconst { ipcRenderer } = require(\"electron\");\n\nconst registryApi = {\n /**\n * Fetch the registry index (uses cache with 5-min TTL)\n * @param {boolean} forceRefresh - Force a fresh fetch bypassing cache\n * @returns {Promise<Object>} The registry index\n */\n fetchIndex: async (forceRefresh = false) => {\n try {\n return await ipcRenderer.invoke(\"registry:fetch-index\", forceRefresh);\n } catch (error) {\n console.error(\"[RegistryApi] Error fetching index:\", error);\n throw error;\n }\n },\n\n /**\n * Search the registry for packages and widgets\n * @param {string} query - Search query\n * @param {Object} filters - Optional filters { category, author, tag }\n * @returns {Promise<Object>} { packages: [...], totalWidgets: number }\n */\n search: async (query = \"\", filters = {}) => {\n try {\n return await ipcRenderer.invoke(\"registry:search\", query, filters);\n } catch (error) {\n console.error(\"[RegistryApi] Error searching registry:\", error);\n throw error;\n }\n },\n\n /**\n * Get a specific package by name\n * @param {string} packageName - Name of the package\n * @returns {Promise<Object|null>} Package data or null\n */\n getPackage: async (packageName) => {\n try {\n return await ipcRenderer.invoke(\"registry:get-package\", packageName);\n } catch (error) {\n console.error(\n `[RegistryApi] Error getting package ${packageName}:`,\n error,\n );\n throw error;\n }\n },\n\n /**\n * Check for updates to installed widgets\n * @param {Array<Object>} installedWidgets - Array of { name, version }\n * @returns {Promise<Array<Object>>} Widgets with available updates\n */\n checkUpdates: async (installedWidgets = []) => {\n try {\n return await ipcRenderer.invoke(\n \"registry:check-updates\",\n installedWidgets,\n );\n } catch (error) {\n console.error(\"[RegistryApi] Error checking updates:\", error);\n throw error;\n }\n },\n\n /**\n * Search the registry for dashboard packages only\n * @param {string} query - Search query\n * @param {Object} filters - Optional filters { category, author, tag, compatibleWidgets }\n * @returns {Promise<Object>} { packages: [...], totalWidgets: number }\n */\n searchDashboards: async (query = \"\", filters = {}) => {\n try {\n return await ipcRenderer.invoke(\n \"registry:search-dashboards\",\n query,\n filters,\n );\n } catch (error) {\n console.error(\"[RegistryApi] Error searching dashboards:\", error);\n throw error;\n }\n },\n\n /**\n * Search the registry for theme packages only\n * @param {string} query - Search query\n * @param {Object} filters - Optional filters { category, author, tag }\n * @returns {Promise<Object>} { packages: [...], totalWidgets: number }\n */\n searchThemes: async (query = \"\", filters = {}) => {\n try {\n return await ipcRenderer.invoke(\n \"registry:search-themes\",\n query,\n filters,\n );\n } catch (error) {\n console.error(\"[RegistryApi] Error searching themes:\", error);\n throw error;\n }\n },\n};\n\nmodule.exports = registryApi;\n","/**\n * themeApi.js\n *\n * Handle the theme configuration file\n */\n\nconst { ipcRenderer } = require(\"electron\");\n\nconst {\n THEME_LIST,\n THEME_SAVE,\n THEME_DELETE,\n THEME_PUBLISH,\n THEME_INSTALL_FROM_REGISTRY,\n THEME_PUBLISH_PREVIEW,\n} = require(\"../events\");\n\nconst themeApi = {\n listThemesForApplication: (appId) =>\n ipcRenderer.invoke(THEME_LIST, { appId }),\n saveThemeForApplication: (appId, themeName, themeObject) =>\n ipcRenderer.invoke(THEME_SAVE, { appId, themeName, themeObject }),\n deleteThemeForApplication: (appId, themeKey) =>\n ipcRenderer.invoke(THEME_DELETE, { appId, themeKey }),\n publishTheme: (appId, themeKey, options) =>\n ipcRenderer.invoke(THEME_PUBLISH, { appId, themeKey, options }),\n installThemeFromRegistry: (appId, packageName) =>\n ipcRenderer.invoke(THEME_INSTALL_FROM_REGISTRY, { appId, packageName }),\n getThemePublishPreview: (appId, themeKey) =>\n ipcRenderer.invoke(THEME_PUBLISH_PREVIEW, { appId, themeKey }),\n};\n\nmodule.exports = themeApi;\n","/**\n * algoliaApi.js\n *\n * This is a stub sample that can be used as a template for other api's\n */\n// ipcRenderer that must be used to invoke the events\nconst { ipcRenderer } = require(\"electron\");\n\nconst {\n ALGOLIA_LIST_INDICES,\n ALGOLIA_ANALYTICS_FOR_QUERY,\n ALGOLIA_SAVE_SYNONYMS,\n ALGOLIA_PARTIAL_UPDATE_OBJECTS,\n ALGOLIA_CREATE_BATCH,\n ALGOLIA_BROWSE_OBJECTS,\n ALGOLIA_SEARCH,\n} = require(\"../events\");\n\nconst algoliaApi = {\n listIndices: (application) =>\n ipcRenderer.invoke(ALGOLIA_LIST_INDICES, application),\n\n browseObjects: (appId, apiKey, indexName) => {\n ipcRenderer.invoke(ALGOLIA_BROWSE_OBJECTS, {\n appId,\n apiKey,\n indexName,\n dir,\n });\n },\n\n saveSynonyms: () => ipcRenderer.invoke(ALGOLIA_SAVE_SYNONYMS, {}),\n\n getAnalyticsForQuery: (application, indexName, query) =>\n ipcRenderer.invoke(ALGOLIA_ANALYTICS_FOR_QUERY, {\n application,\n indexName,\n query,\n }),\n\n partialUpdateObjectsFromDirectory: (\n appId,\n apiKey,\n indexName,\n dir,\n createIfNotExists = false,\n ) =>\n ipcRenderer.invoke(ALGOLIA_PARTIAL_UPDATE_OBJECTS, {\n appId,\n apiKey,\n indexName,\n dir,\n createIfNotExists,\n }),\n\n createBatchesFromFile: (filepath, batchFilepath, batchSize) => {\n ipcRenderer.invoke(ALGOLIA_CREATE_BATCH, {\n filepath,\n batchFilepath,\n batchSize,\n });\n },\n\n browseObjectsToFile: (appId, apiKey, indexName, toFilename, query = \"\") => {\n ipcRenderer.invoke(ALGOLIA_BROWSE_OBJECTS, {\n appId,\n apiKey,\n indexName,\n toFilename,\n query,\n });\n },\n\n search: (appId, apiKey, indexName, query = \"\", options = {}) =>\n ipcRenderer.invoke(ALGOLIA_SEARCH, {\n appId,\n apiKey,\n indexName,\n query,\n options,\n }),\n};\n\nmodule.exports = algoliaApi;\n","/**\n * openAI\n */\n\nconst { ipcRenderer } = require(\"electron\");\n\nconst { OPENAI_DESCRIBE_IMAGE } = require(\"../events/openaiEvents\");\n\nconst openaiApi = {\n // convert a json array of objects to a csv string and save to file\n describeImage: (imageUrl, apiKey, prompt = \"What's in this image?\") =>\n ipcRenderer.invoke(OPENAI_DESCRIBE_IMAGE, { imageUrl, apiKey, prompt }),\n};\n\nmodule.exports = openaiApi;\n","/**\n * menuItemsApi.js\n *\n */\n// ipcRenderer that must be used to invoke the events\nconst { ipcRenderer } = require(\"electron\");\n\nconst { MENU_ITEMS_SAVE, MENU_ITEMS_LIST } = require(\"../events\");\n\nconst menuItemsApi = {\n saveMenuItem: (appId, menuItem) =>\n ipcRenderer.invoke(MENU_ITEMS_SAVE, { appId, menuItem }),\n listMenuItems: (appId) => ipcRenderer.invoke(MENU_ITEMS_LIST, { appId }),\n};\n\nmodule.exports = menuItemsApi;\n","/**\n * pluginApi.js\n *\n * Plugin management API for the renderer process.\n */\n// ipcRenderer that must be used to invoke the events\nconst { ipcRenderer } = require(\"electron\");\n\nconst pluginApi = {\n install: (packageName, filepath) =>\n ipcRenderer.invoke(\"plugin-install\", { packageName, filepath }),\n uninstall: (filepath) => ipcRenderer.invoke(\"plugin-uninstall\", filepath),\n};\n\nmodule.exports = pluginApi;\n","/**\n * llmApi.js\n *\n * Preload bridge for LLM chat operations.\n * Communicates with main process via IPC for streaming chat,\n * tool-use events, and request cancellation.\n */\nconst { ipcRenderer } = require(\"electron\");\nconst {\n LLM_SEND_MESSAGE,\n LLM_ABORT_REQUEST,\n LLM_LIST_CONNECTED_TOOLS,\n LLM_CHECK_CLI_AVAILABLE,\n LLM_CLEAR_CLI_SESSION,\n LLM_CLI_SESSION_STATUS,\n LLM_CLI_END_SESSION,\n LLM_STREAM_DELTA,\n LLM_STREAM_TOOL_CALL,\n LLM_STREAM_TOOL_RESULT,\n LLM_STREAM_COMPLETE,\n LLM_STREAM_ERROR,\n} = require(\"../events/llmEvents\");\n\nlet _nextListenerId = 0;\nconst _listenerMap = new Map();\n\nfunction _addListener(channel, callback) {\n const id = String(++_nextListenerId);\n const wrapped = (_event, data) => callback(data);\n ipcRenderer.on(channel, wrapped);\n _listenerMap.set(id, { channel, wrapped });\n return id;\n}\n\nconst llmApi = {\n /**\n * sendMessage\n * Start a streaming LLM request with optional tool-use.\n *\n * @param {string} requestId - unique ID for filtering stream events\n * @param {object} params - { apiKey, model, messages, tools, toolServerMap, systemPrompt, maxToolRounds }\n * @returns {Promise<void>}\n */\n sendMessage: (requestId, params) =>\n ipcRenderer.invoke(LLM_SEND_MESSAGE, { requestId, ...params }),\n\n /**\n * abortRequest\n * Cancel an in-flight LLM request.\n *\n * @param {string} requestId - the request to cancel\n * @returns {Promise<{ success: boolean }>}\n */\n abortRequest: (requestId) =>\n ipcRenderer.invoke(LLM_ABORT_REQUEST, { requestId }),\n\n /**\n * listConnectedTools\n * Get all tools from all connected MCP servers.\n *\n * @returns {Promise<Array<{ serverName, tools, resources, status }>>}\n */\n listConnectedTools: () => ipcRenderer.invoke(LLM_LIST_CONNECTED_TOOLS),\n\n /**\n * checkCliAvailable\n * Check if the Claude Code CLI is installed and accessible.\n *\n * @returns {Promise<{ available: boolean, path?: string }>}\n */\n checkCliAvailable: () => ipcRenderer.invoke(LLM_CHECK_CLI_AVAILABLE),\n\n /**\n * clearCliSession\n * Clear the CLI conversation session for a widget (for \"New Chat\").\n *\n * @param {string} widgetUuid - the widget whose session to clear\n * @returns {Promise<{ success: boolean }>}\n */\n clearCliSession: (widgetUuid) =>\n ipcRenderer.invoke(LLM_CLEAR_CLI_SESSION, { widgetUuid }),\n\n /**\n * getCliSessionStatus\n * Check if a CLI session is active for a widget.\n *\n * @param {string} widgetUuid - the widget to check\n * @returns {Promise<{ hasSession: boolean, sessionId?: string, isProcessActive: boolean }>}\n */\n getCliSessionStatus: (widgetUuid) =>\n ipcRenderer.invoke(LLM_CLI_SESSION_STATUS, { widgetUuid }),\n\n /**\n * endCliSession\n * Kill any active CLI process AND clear the session for a widget.\n *\n * @param {string} widgetUuid - the widget whose session to end\n * @returns {Promise<{ success: boolean }>}\n */\n endCliSession: (widgetUuid) =>\n ipcRenderer.invoke(LLM_CLI_END_SESSION, { widgetUuid }),\n\n // --- Stream event listeners ---\n // Each on* method returns an opaque string ID. Strings cross the\n // contextBridge safely (unlike function refs which get proxied).\n // Use removeStreamListener(id) to clean up.\n\n /** @returns {string} listener ID */\n onStreamDelta: (callback) => _addListener(LLM_STREAM_DELTA, callback),\n\n /** @returns {string} listener ID */\n onStreamToolCall: (callback) => _addListener(LLM_STREAM_TOOL_CALL, callback),\n\n /** @returns {string} listener ID */\n onStreamToolResult: (callback) =>\n _addListener(LLM_STREAM_TOOL_RESULT, callback),\n\n /** @returns {string} listener ID */\n onStreamComplete: (callback) => _addListener(LLM_STREAM_COMPLETE, callback),\n\n /** @returns {string} listener ID */\n onStreamError: (callback) => _addListener(LLM_STREAM_ERROR, callback),\n\n /**\n * removeStreamListener\n * Remove a specific stream listener by its opaque ID.\n *\n * @param {string} idOrChannel - listener ID (or legacy channel name when second arg is provided)\n * @param {string} [id] - listener ID when called with legacy (channel, id) signature\n */\n removeStreamListener: (idOrChannel, id) => {\n const listenerId = id !== undefined ? String(id) : String(idOrChannel);\n const entry = _listenerMap.get(listenerId);\n if (entry) {\n ipcRenderer.removeListener(entry.channel, entry.wrapped);\n _listenerMap.delete(listenerId);\n }\n },\n\n /**\n * removeAllStreamListeners\n * Clean up ALL LLM stream listeners (global).\n * Prefer removeStreamListener for scoped cleanup.\n */\n removeAllStreamListeners: () => {\n for (const [, entry] of _listenerMap) {\n ipcRenderer.removeListener(entry.channel, entry.wrapped);\n }\n _listenerMap.clear();\n ipcRenderer.removeAllListeners(LLM_STREAM_DELTA);\n ipcRenderer.removeAllListeners(LLM_STREAM_TOOL_CALL);\n ipcRenderer.removeAllListeners(LLM_STREAM_TOOL_RESULT);\n ipcRenderer.removeAllListeners(LLM_STREAM_COMPLETE);\n ipcRenderer.removeAllListeners(LLM_STREAM_ERROR);\n },\n};\n\nmodule.exports = llmApi;\n","/**\n * clientCacheApi.js\n *\n * Renderer-side API for cache management.\n * Communicates with main process via IPC to invalidate cached clients\n * and manage the response cache.\n */\nconst { ipcRenderer } = require(\"electron\");\nconst {\n CLIENT_CACHE_INVALIDATE,\n CLIENT_CACHE_INVALIDATE_ALL,\n RESPONSE_CACHE_CLEAR,\n RESPONSE_CACHE_STATS,\n} = require(\"../events\");\n\nconst clientCacheApi = {\n /**\n * Invalidate a specific cached client by provider identity.\n *\n * @param {string} appId - the application id\n * @param {string} providerName - the provider name to invalidate\n * @returns {Promise<{success: boolean}>}\n */\n invalidate: (appId, providerName) =>\n ipcRenderer.invoke(CLIENT_CACHE_INVALIDATE, { appId, providerName }),\n\n /**\n * Invalidate all cached clients.\n *\n * @returns {Promise<{success: boolean}>}\n */\n invalidateAll: () => ipcRenderer.invoke(CLIENT_CACHE_INVALIDATE_ALL),\n\n /**\n * Clear the response cache.\n *\n * @returns {Promise<{success: boolean}>}\n */\n clearResponseCache: () => ipcRenderer.invoke(RESPONSE_CACHE_CLEAR),\n\n /**\n * Get response cache statistics.\n *\n * @returns {Promise<{entries: number, inflight: number, keys: string[]}>}\n */\n responseCacheStats: () => ipcRenderer.invoke(RESPONSE_CACHE_STATS),\n};\n\nmodule.exports = clientCacheApi;\n","/**\n * dashboardConfigApi.js\n *\n * IPC bridge for dashboard config export/import (renderer side).\n * Exposed via contextBridge through mainApi.\n */\nconst { ipcRenderer } = require(\"electron\");\nconst {\n DASHBOARD_CONFIG_EXPORT,\n DASHBOARD_CONFIG_SELECT_FILE,\n DASHBOARD_CONFIG_IMPORT,\n DASHBOARD_CONFIG_INSTALL,\n DASHBOARD_CONFIG_COMPATIBILITY,\n DASHBOARD_CONFIG_PUBLISH,\n DASHBOARD_CONFIG_PREVIEW,\n DASHBOARD_CONFIG_CHECK_UPDATES,\n DASHBOARD_CONFIG_PROVIDER_SETUP,\n DASHBOARD_CONFIG_PUBLISH_PREVIEW,\n} = require(\"../events\");\n\nconst dashboardConfigApi = {\n /**\n * Export a workspace as a dashboard config ZIP file.\n *\n * @param {string} appId - Application identifier\n * @param {number|string} workspaceId - ID of the workspace to export\n * @param {Object} options - Export options (authorName, authorId, description, tags, icon)\n * @returns {Promise<Object>} Result with success, filePath, and config\n */\n exportDashboardConfig: (appId, workspaceId, options = {}) =>\n ipcRenderer.invoke(DASHBOARD_CONFIG_EXPORT, {\n appId,\n workspaceId,\n options,\n }),\n\n /**\n * Select and preview a dashboard ZIP file without importing it.\n * Opens the file picker, validates the config, and returns a preview\n * with the file path for later import.\n *\n * @returns {Promise<Object>} Result with success, filePath, and dashboardConfig preview\n */\n selectDashboardFile: () => ipcRenderer.invoke(DASHBOARD_CONFIG_SELECT_FILE),\n\n /**\n * Import a dashboard config from a ZIP file.\n * Shows a file picker (or uses options.filePath), validates the config,\n * installs missing widgets, creates the workspace, and applies event wiring.\n *\n * @param {string} appId - Application identifier\n * @param {Object} options - Import options (filePath, name, menuId, themeKey)\n * @returns {Promise<Object>} Result with success, workspace, and summary\n */\n importDashboardConfig: (appId, options = {}) =>\n ipcRenderer.invoke(DASHBOARD_CONFIG_IMPORT, { appId, ...options }),\n\n /**\n * Install a dashboard from the registry by package name.\n * Fetches the dashboard ZIP, validates config, installs widgets,\n * creates workspace, and applies event wiring.\n *\n * @param {string} appId - Application identifier\n * @param {string} packageName - Registry package name\n * @returns {Promise<Object>} Result with success, workspace, and summary\n */\n installDashboardFromRegistry: (appId, packageName) =>\n ipcRenderer.invoke(DASHBOARD_CONFIG_INSTALL, {\n appId,\n packageName,\n }),\n\n /**\n * Check compatibility of a dashboard config against installed widgets.\n *\n * @param {string} appId - Application identifier\n * @param {Array} dashboardWidgets - Widget dependencies from dashboard config\n * @returns {Promise<Object>} Compatibility report with per-widget status\n */\n checkDashboardCompatibility: (appId, dashboardWidgets) =>\n ipcRenderer.invoke(DASHBOARD_CONFIG_COMPATIBILITY, {\n appId,\n dashboardWidgets,\n }),\n\n /**\n * Prepare a dashboard for publishing to the registry.\n * Validates shareable status, checks widgets exist in registry,\n * generates manifest, and saves a publish-ready ZIP.\n *\n * @param {string} appId - Application identifier\n * @param {number|string} workspaceId - Workspace to publish\n * @param {Object} options - Publishing options (authorName, authorId, description, tags, icon, githubUser, category)\n * @returns {Promise<Object>} Result with success, manifest, filePath\n */\n prepareDashboardForPublish: (appId, workspaceId, options = {}) =>\n ipcRenderer.invoke(DASHBOARD_CONFIG_PUBLISH, {\n appId,\n workspaceId,\n options,\n }),\n\n /**\n * Get a preview of a dashboard package from the registry.\n * Returns structured preview data and compatibility report.\n *\n * @param {string} packageName - Registry package name\n * @returns {Promise<Object>} Preview with metadata, widgets, wiring, compatibility\n */\n getDashboardPreview: (packageName) =>\n ipcRenderer.invoke(DASHBOARD_CONFIG_PREVIEW, { packageName }),\n\n /**\n * Check installed dashboards for available updates.\n *\n * @param {string} appId - Application identifier\n * @returns {Promise<Object>} Result with updates array\n */\n checkDashboardUpdates: (appId) =>\n ipcRenderer.invoke(DASHBOARD_CONFIG_CHECK_UPDATES, { appId }),\n\n /**\n * Get provider setup manifest for a dashboard's requirements.\n *\n * @param {string} appId - Application identifier\n * @param {Array} requiredProviders - Provider requirements from dashboard config\n * @returns {Promise<Object>} Setup manifest with per-provider status\n */\n getProviderSetupManifest: (appId, requiredProviders) =>\n ipcRenderer.invoke(DASHBOARD_CONFIG_PROVIDER_SETUP, {\n appId,\n requiredProviders,\n }),\n\n /**\n * Get a publish preview for a dashboard workspace.\n * Returns widget names and package info without creating a ZIP or uploading.\n *\n * @param {string} appId - Application identifier\n * @param {number|string} workspaceId - Workspace to preview\n * @returns {Promise<Object>} Preview with dashboardName, widgetCount, widgets, componentNames\n */\n getPublishPreview: (appId, workspaceId) =>\n ipcRenderer.invoke(DASHBOARD_CONFIG_PUBLISH_PREVIEW, {\n appId,\n workspaceId,\n }),\n};\n\nmodule.exports = dashboardConfigApi;\n","/**\n * registryAuthApi.js\n *\n * IPC bridge for registry authentication (renderer side).\n * Exposed via contextBridge through mainApi.\n */\nconst { ipcRenderer } = require(\"electron\");\nconst {\n REGISTRY_AUTH_INITIATE_LOGIN,\n REGISTRY_AUTH_POLL_TOKEN,\n REGISTRY_AUTH_GET_STATUS,\n REGISTRY_AUTH_GET_PROFILE,\n REGISTRY_AUTH_LOGOUT,\n REGISTRY_AUTH_PUBLISH,\n REGISTRY_AUTH_UPDATE_PROFILE,\n REGISTRY_AUTH_GET_PACKAGES,\n REGISTRY_AUTH_UPDATE_PACKAGE,\n REGISTRY_AUTH_DELETE_PACKAGE,\n} = require(\"../events\");\n\nconst registryAuthApi = {\n /**\n * Initiate the device code flow for registry login.\n * Returns device code, user code, and verification URL.\n *\n * @returns {Promise<Object>} { deviceCode, userCode, verificationUrl, verificationUrlComplete, expiresIn, interval }\n */\n initiateLogin: () => ipcRenderer.invoke(REGISTRY_AUTH_INITIATE_LOGIN),\n\n /**\n * Poll for token after user completes browser auth.\n *\n * @param {string} deviceCode - Device code from initiateLogin\n * @returns {Promise<Object>} { status: 'pending' | 'authorized' | 'expired', token?, userId? }\n */\n pollToken: (deviceCode) =>\n ipcRenderer.invoke(REGISTRY_AUTH_POLL_TOKEN, { deviceCode }),\n\n /**\n * Get current auth status.\n *\n * @returns {Promise<Object>} { authenticated: boolean, userId?: string }\n */\n getStatus: () => ipcRenderer.invoke(REGISTRY_AUTH_GET_STATUS),\n\n /**\n * Get the authenticated user's registry profile.\n *\n * @returns {Promise<Object|null>} User profile or null\n */\n getProfile: () => ipcRenderer.invoke(REGISTRY_AUTH_GET_PROFILE),\n\n /**\n * Logout from registry.\n */\n logout: () => ipcRenderer.invoke(REGISTRY_AUTH_LOGOUT),\n\n /**\n * Publish a ZIP to the registry.\n *\n * @param {string} zipPath - Path to the ZIP file\n * @param {Object} manifest - Package manifest\n * @returns {Promise<Object>} { success, registryUrl, packageId, version, error? }\n */\n publish: (zipPath, manifest) =>\n ipcRenderer.invoke(REGISTRY_AUTH_PUBLISH, { zipPath, manifest }),\n\n /**\n * Update the authenticated user's profile.\n *\n * @param {Object} updates - Fields to update (e.g. { displayName })\n * @returns {Promise<Object|null>} Updated user or null\n */\n updateProfile: (updates) =>\n ipcRenderer.invoke(REGISTRY_AUTH_UPDATE_PROFILE, updates),\n\n /**\n * Get the authenticated user's published packages.\n *\n * @returns {Promise<Object|null>} { packages: [...] } or null\n */\n getPackages: () => ipcRenderer.invoke(REGISTRY_AUTH_GET_PACKAGES),\n\n /**\n * Update a published package's metadata.\n *\n * @param {string} scope - Package scope\n * @param {string} name - Package name\n * @param {Object} updates - Fields to update\n * @returns {Promise<Object|null>} Updated package or null\n */\n updatePackage: (scope, name, updates) =>\n ipcRenderer.invoke(REGISTRY_AUTH_UPDATE_PACKAGE, {\n scope,\n name,\n updates,\n }),\n\n /**\n * Delete a published package.\n *\n * @param {string} scope - Package scope\n * @param {string} name - Package name\n * @returns {Promise<Object|null>} Response or null\n */\n deletePackage: (scope, name) =>\n ipcRenderer.invoke(REGISTRY_AUTH_DELETE_PACKAGE, { scope, name }),\n};\n\nmodule.exports = registryAuthApi;\n","/**\n * notificationApi.js\n *\n * Preload-side IPC bindings for the notification system.\n * Exposed to the renderer via mainApi.notifications.\n */\nconst { ipcRenderer } = require(\"electron\");\nconst {\n NOTIFICATION_SEND,\n NOTIFICATION_GET_PREFERENCES,\n NOTIFICATION_SET_PREFERENCES,\n NOTIFICATION_SET_GLOBAL,\n} = require(\"../events\");\n\nconst notificationApi = {\n /**\n * Send a notification to the OS.\n *\n * @param {Object} payload - { widgetName, widgetId, workspaceId, type, title, body, data?, silent?, urgency? }\n * @returns {Promise<{ success: boolean, reason?: string }>}\n */\n send: (payload) => ipcRenderer.invoke(NOTIFICATION_SEND, payload),\n\n /**\n * Get all notification preferences (global + per-instance).\n *\n * @returns {Promise<{ globalEnabled: boolean, doNotDisturb: boolean, instances: Object }>}\n */\n getPreferences: () => ipcRenderer.invoke(NOTIFICATION_GET_PREFERENCES),\n\n /**\n * Set per-widget-instance notification preferences.\n *\n * @param {string} widgetId - widget instance UUID\n * @param {Object} prefs - { [notificationType]: boolean }\n * @returns {Promise<{ success: boolean }>}\n */\n setPreferences: (widgetId, prefs) =>\n ipcRenderer.invoke(NOTIFICATION_SET_PREFERENCES, { widgetId, prefs }),\n\n /**\n * Set global notification settings (enabled, DND).\n *\n * @param {Object} settings - { globalEnabled?: boolean, doNotDisturb?: boolean }\n * @returns {Promise<{ success: boolean }>}\n */\n setGlobal: (settings) =>\n ipcRenderer.invoke(NOTIFICATION_SET_GLOBAL, settings),\n\n /**\n * Listen for notification click events from the main process.\n *\n * @param {Function} callback - ({ widgetName, widgetId, workspaceId, type, data }) => void\n * @returns {Function} removeListener function\n */\n onClicked: (callback) => {\n const handler = (_event, data) => callback(data);\n ipcRenderer.on(\"notification:clicked\", handler);\n return () => ipcRenderer.removeListener(\"notification:clicked\", handler);\n },\n\n /**\n * Listen for Do Not Disturb state changes (e.g. toggled from macOS menu).\n *\n * @param {Function} callback - (dndEnabled: boolean) => void\n * @returns {Function} removeListener function\n */\n onDndChanged: (callback) => {\n const handler = (_event, dndEnabled) => callback(dndEnabled);\n ipcRenderer.on(\"notification:dnd-changed\", handler);\n return () =>\n ipcRenderer.removeListener(\"notification:dnd-changed\", handler);\n },\n};\n\nmodule.exports = notificationApi;\n","/**\n * dashboardRatingsApi.js\n *\n * IPC bridge for dashboard ratings (renderer side).\n */\nconst { ipcRenderer } = require(\"electron\");\nconst {\n DASHBOARD_RATING_SAVE,\n DASHBOARD_RATING_GET,\n DASHBOARD_RATING_LIST,\n DASHBOARD_RATING_DELETE,\n} = require(\"../events\");\n\nconst dashboardRatingsApi = {\n saveDashboardRating: (appId, packageName, rating) =>\n ipcRenderer.invoke(DASHBOARD_RATING_SAVE, {\n appId,\n packageName,\n rating,\n }),\n\n getDashboardRating: (appId, packageName) =>\n ipcRenderer.invoke(DASHBOARD_RATING_GET, { appId, packageName }),\n\n listDashboardRatings: (appId) =>\n ipcRenderer.invoke(DASHBOARD_RATING_LIST, { appId }),\n\n deleteDashboardRating: (appId, packageName) =>\n ipcRenderer.invoke(DASHBOARD_RATING_DELETE, { appId, packageName }),\n};\n\nmodule.exports = dashboardRatingsApi;\n","/**\n * sessionApi.js\n *\n * IPC bridge for session management (renderer side).\n * Exposed via contextBridge through mainApi.\n */\nconst { ipcRenderer } = require(\"electron\");\nconst {\n SESSION_GET_RECENTS,\n SESSION_ADD_RECENT,\n SESSION_CLEAR_RECENTS,\n SESSION_GET_STATE,\n SESSION_SAVE_STATE,\n SESSION_CLEAR_STATE,\n} = require(\"../events\");\n\nconst sessionApi = {\n /**\n * Get recently opened dashboards.\n *\n * @returns {Promise<Array<{ workspaceId: string, name: string, openedAt: string }>>}\n */\n getRecents: () => ipcRenderer.invoke(SESSION_GET_RECENTS),\n\n /**\n * Add a recent dashboard entry.\n *\n * @param {string} workspaceId\n * @param {string} name\n * @returns {Promise<Array>} Updated recents list\n */\n addRecent: (workspaceId, name) =>\n ipcRenderer.invoke(SESSION_ADD_RECENT, { workspaceId, name }),\n\n /**\n * Clear all recent dashboards.\n */\n clearRecents: () => ipcRenderer.invoke(SESSION_CLEAR_RECENTS),\n\n /**\n * Get saved session state.\n *\n * @returns {Promise<{ openTabIds: string[], activeTabId: string | null } | null>}\n */\n getState: () => ipcRenderer.invoke(SESSION_GET_STATE),\n\n /**\n * Save session state.\n *\n * @param {string[]} openTabIds\n * @param {string|null} activeTabId\n */\n saveState: (openTabIds, activeTabId) =>\n ipcRenderer.invoke(SESSION_SAVE_STATE, { openTabIds, activeTabId }),\n\n /**\n * Clear saved session state.\n */\n clearState: () => ipcRenderer.invoke(SESSION_CLEAR_STATE),\n};\n\nmodule.exports = sessionApi;\n","/**\n * mainApi.js\n *\n * Factory for creating the main API object exposed to the renderer via contextBridge.\n * All APIs are included by default. Additional template-specific APIs\n * can be added via the extensions parameter.\n *\n * Usage in template's preload.js:\n *\n * const { defaultMainApi } = require(\"@trops/dash-core/electron\");\n * contextBridge.exposeInMainWorld(\"mainApi\", defaultMainApi);\n */\nconst { ipcRenderer, shell } = require(\"electron\");\nconst secureStoreApi = require(\"./secureStoreApi\");\nconst workspaceApi = require(\"./workspaceApi\");\nconst layoutApi = require(\"./layoutApi\");\nconst dataApi = require(\"./dataApi\");\nconst settingsApi = require(\"./settingsApi\");\nconst dialogApi = require(\"./dialogApi\");\nconst widgetApi = require(\"./widgetApi\");\nconst providerApi = require(\"./providerApi\");\nconst mcpApi = require(\"./mcpApi\");\nconst registryApi = require(\"./registryApi\");\nconst themeApi = require(\"./themeApi\");\nconst algoliaApi = require(\"./algoliaApi\");\nconst openaiApi = require(\"./openaiApi\");\nconst menuItemsApi = require(\"./menuItemsApi\");\nconst pluginApi = require(\"./pluginApi\");\nconst llmApi = require(\"./llmApi\");\nconst clientCacheApi = require(\"./clientCacheApi\");\nconst dashboardConfigApi = require(\"./dashboardConfigApi\");\nconst dashboardRatingsApi = require(\"./dashboardRatingsApi\");\nconst registryAuthApi = require(\"./registryAuthApi\");\nconst sessionApi = require(\"./sessionApi\");\nconst notificationApi = require(\"./notificationApi\");\n\n// Events constants\nconst events = require(\"../events\");\n\n/**\n * Create the main API object with core APIs and optional extensions.\n *\n * @param {Object} extensions - Additional API namespaces to merge (e.g., { algolia: algoliaApi })\n * @returns {Object} The complete mainApi object\n */\nfunction createMainApi(extensions = {}) {\n const mainApi = {\n // the main application identifier to STORE the data in the application folder.\n appId: null,\n\n setAppId: (appId) => {\n console.log(\"setting appId in the api \", appId);\n mainApi.appId = appId;\n },\n\n // keep these for general use\n on: (event, fn) => {\n ipcRenderer.addListener(event, fn);\n },\n removeAllListeners: (name = null) => {\n // can remove all listeners for event\n if (name) ipcRenderer.removeAllListeners(name);\n },\n removeListener: (name, fn) => ipcRenderer.removeListener(name, fn),\n\n // Core APIs\n secureStoreApi: secureStoreApi,\n workspace: workspaceApi,\n layout: layoutApi,\n themes: themeApi,\n data: { appId: null, ...dataApi },\n settings: settingsApi,\n dialog: dialogApi,\n widgets: widgetApi,\n providers: providerApi,\n mcp: mcpApi,\n registry: registryApi,\n\n shell: {\n openPath: (path) => shell.openPath(path),\n openExternal: (url) => {\n if (\n typeof url === \"string\" &&\n (url.startsWith(\"http://\") || url.startsWith(\"https://\"))\n ) {\n return shell.openExternal(url);\n }\n },\n },\n\n // included these in the bridge\n events: { ...events },\n\n publicEvents: events.public,\n\n pathPlugins: \"\",\n\n // LLM\n llm: llmApi,\n\n // APIs previously in template\n algolia: algoliaApi,\n openai: openaiApi,\n menuItems: menuItemsApi,\n plugins: pluginApi,\n clientCache: clientCacheApi,\n dashboardConfig: dashboardConfigApi,\n dashboardRatings: dashboardRatingsApi,\n registryAuth: registryAuthApi,\n session: sessionApi,\n notifications: notificationApi,\n\n widgetEvent: {\n publish: (eventType, content) => {\n ipcRenderer.send(\"widget-event:publish\", { eventType, content });\n },\n },\n\n // Merge template-specific extensions\n ...extensions,\n };\n\n return mainApi;\n}\n\n/**\n * Default mainApi for simple migration — includes only core APIs.\n * Templates that don't need extensions can use this directly.\n */\nconst defaultMainApi = createMainApi();\n\nmodule.exports = { createMainApi, defaultMainApi };\n","/**\n * @trops/dash-core/electron\n *\n * Electron main process layer — controllers, IPC handlers, and widget pipeline.\n */\n\n// --- Controllers (namespaced) ---\nconst dialogController = require(\"./controller/dialogController\");\nconst secureStoreController = require(\"./controller/secureStoreController\");\nconst workspaceController = require(\"./controller/workspaceController\");\nconst themeController = require(\"./controller/themeController\");\nconst dataController = require(\"./controller/dataController\");\nconst settingsController = require(\"./controller/settingsController\");\nconst providerController = require(\"./controller/providerController\");\nconst layoutController = require(\"./controller/layoutController\");\nconst mcpController = require(\"./controller/mcpController\");\nconst registryController = require(\"./controller/registryController\");\nconst algoliaController = require(\"./controller/algoliaController\");\nconst openaiController = require(\"./controller/openaiController\");\nconst menuItemsController = require(\"./controller/menuItemsController\");\nconst pluginController = require(\"./controller/pluginController\");\nconst llmController = require(\"./controller/llmController\");\nconst cliController = require(\"./controller/cliController\");\nconst dashboardConfigController = require(\"./controller/dashboardConfigController\");\nconst registryAuthController = require(\"./controller/registryAuthController\");\nconst registryApiController = require(\"./controller/registryApiController\");\nconst notificationController = require(\"./controller/notificationController\");\nconst themeRegistryController = require(\"./controller/themeRegistryController\");\n\n// --- Utils ---\nconst clientCache = require(\"./utils/clientCache\");\nrequire(\"./utils/clientFactories\"); // auto-register built-in factories\nconst responseCache = require(\"./utils/responseCache\");\n\n// --- Controller functions (flat, for convenient destructuring) ---\nconst controllers = require(\"./controller\");\n\n// --- APIs (IPC handlers) ---\nconst secureStoreApi = require(\"./api/secureStoreApi\");\nconst workspaceApi = require(\"./api/workspaceApi\");\nconst layoutApi = require(\"./api/layoutApi\");\nconst dataApi = require(\"./api/dataApi\");\nconst settingsApi = require(\"./api/settingsApi\");\nconst dialogApi = require(\"./api/dialogApi\");\nconst widgetApi = require(\"./api/widgetApi\");\nconst providerApi = require(\"./api/providerApi\");\nconst mcpApi = require(\"./api/mcpApi\");\nconst registryApi = require(\"./api/registryApi\");\nconst themeApi = require(\"./api/themeApi\");\nconst algoliaApi = require(\"./api/algoliaApi\");\nconst openaiApi = require(\"./api/openaiApi\");\nconst menuItemsApi = require(\"./api/menuItemsApi\");\nconst pluginApi = require(\"./api/pluginApi\");\nconst llmApi = require(\"./api/llmApi\");\nconst clientCacheApi = require(\"./api/clientCacheApi\");\nconst dashboardConfigApi = require(\"./api/dashboardConfigApi\");\nconst registryAuthApi = require(\"./api/registryAuthApi\");\nconst notificationApi = require(\"./api/notificationApi\");\n\n// --- Events ---\nconst events = require(\"./events\");\n\n// --- Widget Pipeline ---\nconst widgetRegistry = require(\"./widgetRegistry\");\nconst widgetCompiler = require(\"./widgetCompiler\");\nconst dynamicWidgetLoader = require(\"./dynamicWidgetLoader\");\n\n// --- Schema ---\nconst dashboardConfigValidator = require(\"./schema/dashboardConfigValidator\");\nconst dashboardConfigUtils = require(\"./schema/dashboardConfigUtils\");\n\n// --- Factory: createMainApi ---\nconst { createMainApi, defaultMainApi } = require(\"./api/mainApi\");\n\nmodule.exports = {\n // Controllers (namespaced)\n dialogController,\n secureStoreController,\n workspaceController,\n themeController,\n dataController,\n settingsController,\n providerController,\n layoutController,\n mcpController,\n registryController,\n algoliaController,\n openaiController,\n menuItemsController,\n pluginController,\n llmController,\n cliController,\n dashboardConfigController,\n registryAuthController,\n registryApiController,\n notificationController,\n themeRegistryController,\n\n // Controller functions (flat) — spread for convenient destructuring\n ...controllers,\n\n // APIs\n secureStoreApi,\n workspaceApi,\n layoutApi,\n dataApi,\n settingsApi,\n dialogApi,\n widgetApi,\n providerApi,\n mcpApi,\n registryApi,\n themeApi,\n algoliaApi,\n openaiApi,\n menuItemsApi,\n pluginApi,\n llmApi,\n clientCacheApi,\n dashboardConfigApi,\n registryAuthApi,\n notificationApi,\n\n // Events\n events,\n\n // Widget Pipeline\n widgetRegistry,\n widgetCompiler,\n dynamicWidgetLoader,\n\n // Factory\n createMainApi,\n defaultMainApi,\n\n // Utils\n clientCache,\n responseCache,\n\n // Schema\n dashboardConfigValidator,\n dashboardConfigUtils,\n\n // Setup helpers\n setupCacheHandlers: clientCache.setupCacheHandlers.bind(clientCache),\n};\n"],"names":["SECURE_STORE_ENCRYPTION_CHECK","SECURE_STORE_GET_DATA","SECURE_STORE_SET_DATA","secureStorageEvents","WORKSPACE_LIST","WORKSPACE_SAVE","WORKSPACE_DELETE","workspaceEvents","LAYOUT_LIST","LAYOUT_SAVE","layoutEvents","THEME_LIST","THEME_SAVE","THEME_DELETE","THEME_PUBLISH","THEME_INSTALL_FROM_REGISTRY","THEME_PUBLISH_PREVIEW","themeEvents","DATA_JSON_TO_CSV_FILE","DATA_READ_FROM_FILE","DATA_SAVE_TO_FILE","DATA_JSON_TO_CSV_STRING","PARSE_XML_STREAM","PARSE_CSV_STREAM","READ_LINES","READ_JSON","READ_DATA_URL","TRANSFORM_FILE","EXTRACT_COLORS_FROM_IMAGE","dataEvents","SETTINGS_GET","SETTINGS_SAVE","SETTINGS_GET_DATA_DIR","SETTINGS_SET_DATA_DIR","SETTINGS_MIGRATE_DATA_DIR","settingsEvents","CHOOSE_FILE","dialogEvents","PROVIDER_SAVE","PROVIDER_LIST","PROVIDER_GET","PROVIDER_DELETE","providerEvents","MCP_START_SERVER","MCP_STOP_SERVER","MCP_LIST_TOOLS","MCP_CALL_TOOL","MCP_LIST_RESOURCES","MCP_READ_RESOURCE","MCP_SERVER_STATUS","MCP_GET_CATALOG","MCP_RUN_AUTH","mcpEvents","registryEvents","ALGOLIA_LIST_INDICES","ALGOLIA_ANALYTICS_FOR_QUERY","ALGOLIA_PARTIAL_UPDATE_OBJECTS","ALGOLIA_CREATE_BATCH","ALGOLIA_BROWSE_OBJECTS","ALGOLIA_SEARCH","algoliaEvents","MENU_ITEMS_SAVE","MENU_ITEMS_LIST","menuItemEvents","OPENAI_DESCRIBE_IMAGE","openaiEvents","LLM_SEND_MESSAGE","LLM_ABORT_REQUEST","LLM_LIST_CONNECTED_TOOLS","LLM_CHECK_CLI_AVAILABLE","LLM_CLEAR_CLI_SESSION","LLM_CLI_SESSION_STATUS","LLM_CLI_END_SESSION","LLM_STREAM_DELTA","LLM_STREAM_TOOL_CALL","LLM_STREAM_TOOL_RESULT","LLM_STREAM_COMPLETE","LLM_STREAM_ERROR","llmEvents","CLIENT_CACHE_INVALIDATE","CLIENT_CACHE_INVALIDATE_ALL","RESPONSE_CACHE_CLEAR","RESPONSE_CACHE_STATS","clientCacheEvents","DASHBOARD_CONFIG_EXPORT","DASHBOARD_CONFIG_IMPORT","DASHBOARD_CONFIG_INSTALL","DASHBOARD_CONFIG_COMPATIBILITY","DASHBOARD_CONFIG_PUBLISH","DASHBOARD_CONFIG_PREVIEW","DASHBOARD_CONFIG_CHECK_UPDATES","DASHBOARD_CONFIG_PROVIDER_SETUP","DASHBOARD_CONFIG_PUBLISH_PREVIEW","DASHBOARD_CONFIG_SELECT_FILE","dashboardConfigEvents","DASHBOARD_RATING_SAVE","DASHBOARD_RATING_GET","DASHBOARD_RATING_LIST","DASHBOARD_RATING_DELETE","dashboardRatingsEvents","REGISTRY_AUTH_INITIATE_LOGIN","REGISTRY_AUTH_POLL_TOKEN","REGISTRY_AUTH_GET_STATUS","REGISTRY_AUTH_GET_PROFILE","REGISTRY_AUTH_LOGOUT","REGISTRY_AUTH_PUBLISH","REGISTRY_AUTH_UPDATE_PROFILE","REGISTRY_AUTH_GET_PACKAGES","REGISTRY_AUTH_UPDATE_PACKAGE","REGISTRY_AUTH_DELETE_PACKAGE","registryAuthEvents","SESSION_GET_RECENTS","SESSION_ADD_RECENT","SESSION_CLEAR_RECENTS","SESSION_GET_STATE","SESSION_SAVE_STATE","SESSION_CLEAR_STATE","sessionEvents","NOTIFICATION_SEND","NOTIFICATION_GET_PREFERENCES","NOTIFICATION_SET_PREFERENCES","NOTIFICATION_SET_GLOBAL","notificationEvents","require$$0","require$$1","require$$2","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","events","dialog","showDialog","fileChosenError","dialogController","Store","schema","isEncryptionAvailable","saveData","getData","secureStoreController","path","writeFileSync","ensureDirectoryExistence","checkDirectory","getFileContents","writeToFile","app","configFilename","appName","workspaceController","themeController","fs","JSONStream","Transform","ntc","extractColors","extractColorsFromImageURL","dataController","settingsController","responseCache","layoutController","_shellPath","getShellPath","mcpController","mcpControllerModule","searchRegistry","getPackage","registryController","algoliasearch","AlgoliaIndex","algoliaController","openaiController","menuItemsController","pluginController","cliController","llmController","CURRENT_SCHEMA_VERSION","validateDashboardConfig","applyDefaults","dashboardConfigValidator","collectComponentNames","extractEventWiring","buildWidgetDependencies","buildProviderRequirements","applyEventWiringToLayout","dashboardConfigUtils","findWidgetsDir","widgetCompiler","dynamicWidgetLoader","dynamicWidgetLoaderModule","REGISTRY_BASE_URL","store","getStore","initiateDeviceFlow","pollForToken","getStoredToken","getAuthStatus","getRegistryProfile","updateRegistryProfile","getRegistryPackages","updateRegistryPackage","registryAuthController","publishToRegistry","getRegistryUrl","registryApiController","AdmZip","prepareThemeForPublish","installThemeFromRegistry","getThemePublishPreview","themeRegistryController","exportDashboardConfig","selectDashboardFile","importDashboardConfig","installDashboardFromRegistry","checkCompatibility","prepareDashboardForPublish","getDashboardPreview","checkDashboardUpdatesForApp","getProviderSetupManifest","getDashboardPublishPreview","dashboardConfigController","notificationController","clientCache","getRecentDashboards","addRecentDashboard","clearRecentDashboards","getSessionState","saveSessionState","clearSessionState","validateAndBuildRating","enrichWithRatings","saveDashboardRating","getDashboardRating","listDashboardRatings","deleteDashboardRating","enrichPackagesWithRatings","ipcRenderer","secureStoreApi","workspaceApi","layoutApi","dataApi","settingsApi","dialogApi","widgetApi","providerApi","mcpApi","registryApi","themeApi","algoliaApi","openaiApi","menuItemsApi","pluginApi","llmApi","clientCacheApi","dashboardConfigApi","registryAuthApi","notificationApi","dashboardRatingsApi","sessionApi","require$$20","require$$21","require$$22","require$$23","createMainApi","defaultMainApi","require$$24","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","require$$35","require$$36","require$$37","require$$38","require$$39","require$$40","require$$41","require$$42","require$$43","require$$44","require$$45","require$$46","require$$47","require$$48","require$$49","require$$50","require$$51"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAMA,+BAA6B,GAAG,iCAAiC,CAAA;AACvE,MAAM,sCAAsC;AAC5C,EAAE,0CAA0C,CAAA;AAC5C,MAAM,mCAAmC;AACzC,EAAE,uCAAuC,CAAA;;AAEzC,MAAM,6BAA6B,GAAG,+BAA+B,CAAA;AACrE,MAAM,sCAAsC;AAC5C,EAAE,wCAAwC,CAAA;AAC1C,MAAM,mCAAmC;AACzC,EAAE,qCAAqC,CAAA;;AAEvC,MAAMC,uBAAqB,GAAG,yBAAyB,CAAA;AACvD,MAAM,8BAA8B,GAAG,kCAAkC,CAAA;AACzE,MAAM,2BAA2B,GAAG,+BAA+B,CAAA;;AAEnE,MAAMC,uBAAqB,GAAG,yBAAyB,CAAA;AACvD,MAAM,8BAA8B,GAAG,kCAAkC,CAAA;AACzE,MAAM,2BAA2B,GAAG,+BAA+B,CAAA;;AAEnE,IAAAC,qBAAc,GAAG;AACjB,iCAAEH,+BAA6B;AAC/B,EAAE,sCAAsC;AACxC,EAAE,mCAAmC;AACrC,yBAAEE,uBAAqB;AACvB,EAAE,8BAA8B;AAChC,EAAE,2BAA2B;AAC7B,yBAAED,uBAAqB;AACvB,EAAE,8BAA8B;AAChC,EAAE,2BAA2B;AAC7B,EAAE,6BAA6B;AAC/B,EAAE,sCAAsC;AACxC,EAAE,mCAAmC;AACrC,CAAC;;;;;;;;AC5BD,MAAMG,gBAAc,GAAG,gBAAgB,CAAA;AACvC,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;;AAEnD,MAAMC,gBAAc,GAAG,gBAAgB,CAAA;AACvC,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;;AAEnD,MAAMC,kBAAgB,GAAG,kBAAkB,CAAA;AAC3C,MAAM,yBAAyB,GAAG,2BAA2B,CAAA;AAC7D,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;;AAEvD,IAAAC,iBAAc,GAAG;AACjB,kBAAEH,gBAAc;AAChB,EAAE,uBAAuB;AACzB,EAAE,oBAAoB;AACtB,kBAAEC,gBAAc;AAChB,EAAE,uBAAuB;AACzB,EAAE,oBAAoB;AACtB,oBAAEC,kBAAgB;AAClB,EAAE,yBAAyB;AAC3B,EAAE,sBAAsB;AACxB,CAAC;;;;;;;;ACtBD,MAAME,aAAW,GAAG,aAAa,CAAA;AACjC,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAM,iBAAiB,GAAG,mBAAmB,CAAA;;AAE7C,MAAMC,aAAW,GAAG,aAAa,CAAA;AACjC,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAM,iBAAiB,GAAG,mBAAmB,CAAA;;AAE7C,IAAAC,cAAc,GAAG;AACjB,eAAEF,aAAW;AACb,EAAE,oBAAoB;AACtB,EAAE,iBAAiB;AACnB,eAAEC,aAAW;AACb,EAAE,oBAAoB;AACtB,EAAE,iBAAiB;AACnB,CAAC;;;;;;;;ACfD,MAAME,YAAU,GAAG,YAAY,CAAA;AAC/B,MAAM,mBAAmB,GAAG,qBAAqB,CAAA;AACjD,MAAM,gBAAgB,GAAG,kBAAkB,CAAA;;AAE3C,MAAMC,YAAU,GAAG,YAAY,CAAA;AAC/B,MAAM,mBAAmB,GAAG,qBAAqB,CAAA;AACjD,MAAM,gBAAgB,GAAG,kBAAkB,CAAA;;AAE3C,MAAMC,cAAY,GAAG,cAAc,CAAA;AACnC,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAM,kBAAkB,GAAG,oBAAoB,CAAA;;AAE/C,MAAMC,eAAa,GAAG,eAAe,CAAA;AACrC,MAAMC,6BAA2B,GAAG,6BAA6B,CAAA;AACjE,MAAMC,uBAAqB,GAAG,uBAAuB,CAAA;;AAErD,IAAAC,aAAc,GAAG;AACjB,cAAEN,YAAU;AACZ,EAAE,mBAAmB;AACrB,EAAE,gBAAgB;AAClB,cAAEC,YAAU;AACZ,EAAE,mBAAmB;AACrB,EAAE,gBAAgB;AAClB,gBAAEC,cAAY;AACd,EAAE,qBAAqB;AACvB,EAAE,kBAAkB;AACpB,iBAAEC,eAAa;AACf,+BAAEC,6BAA2B;AAC7B,yBAAEC,uBAAqB;AACvB,CAAC;;AClCD,MAAME,uBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAM,8BAA8B,GAAG,gCAAgC,CAAA;AACvE,MAAM,2BAA2B,GAAG,6BAA6B,CAAA;;AAEjE,MAAMC,qBAAmB,GAAG,qBAAqB,CAAA;AACjD,MAAM,4BAA4B,GAAG,8BAA8B,CAAA;AACnE,MAAM,yBAAyB,GAAG,2BAA2B,CAAA;;AAE7D,MAAMC,mBAAiB,GAAG,mBAAmB,CAAA;AAC7C,MAAM,0BAA0B,GAAG,4BAA4B,CAAA;AAC/D,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;;AAEzD,MAAMC,yBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAM,gCAAgC,GAAG,kCAAkC,CAAA;AAC3E,MAAM,6BAA6B,GAAG,+BAA+B,CAAA;;AAErE,MAAMC,kBAAgB,GAAG,kBAAkB,CAAA;AAC3C,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAM,yBAAyB,GAAG,2BAA2B,CAAA;AAC7D,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;;AAEvD,MAAMC,kBAAgB,GAAG,kBAAkB,CAAA;AAC3C,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAM,yBAAyB,GAAG,2BAA2B,CAAA;AAC7D,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;;AAEvD,MAAMC,YAAU,GAAG,YAAY,CAAA;AAC/B,MAAM,iBAAiB,GAAG,mBAAmB,CAAA;AAC7C,MAAM,mBAAmB,GAAG,qBAAqB,CAAA;AACjD,MAAM,gBAAgB,GAAG,kBAAkB,CAAA;;AAE3C,MAAMC,WAAS,GAAG,WAAW,CAAA;AAC7B,MAAM,gBAAgB,GAAG,kBAAkB,CAAA;AAC3C,MAAM,kBAAkB,GAAG,oBAAoB,CAAA;AAC/C,MAAM,eAAe,GAAG,iBAAiB,CAAA;;AAEzC,MAAMC,eAAa,GAAG,eAAe,CAAA;AACrC,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;AACvD,MAAM,mBAAmB,GAAG,qBAAqB,CAAA;;AAEjD,MAAMC,gBAAc,GAAG,gBAAgB,CAAA;AACvC,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;;AAEnD,MAAMC,2BAAyB,GAAG,2BAA2B,CAAA;AAC7D,MAAM,gCAAgC,GAAG,kCAAkC,CAAA;AAC3E,MAAM,kCAAkC,GAAG,oCAAoC,CAAA;AAC/E,MAAM,+BAA+B,GAAG,iCAAiC,CAAA;;AAEzE,IAAAC,YAAc,GAAG;AACjB,yBAAEX,uBAAqB;AACvB,EAAE,8BAA8B;AAChC,EAAE,2BAA2B;;AAE7B,2BAAEG,yBAAuB;AACzB,EAAE,gCAAgC;AAClC,EAAE,6BAA6B;;AAE/B,qBAAED,mBAAiB;AACnB,EAAE,0BAA0B;AAC5B,EAAE,uBAAuB;;AAEzB,uBAAED,qBAAmB;AACrB,EAAE,4BAA4B;AAC9B,EAAE,yBAAyB;;AAE3B,oBAAEG,kBAAgB;AAClB,EAAE,yBAAyB;AAC3B,EAAE,uBAAuB;AACzB,EAAE,sBAAsB;;AAExB,oBAAEC,kBAAgB;AAClB,EAAE,yBAAyB;AAC3B,EAAE,uBAAuB;AACzB,EAAE,sBAAsB;;AAExB,cAAEC,YAAU;AACZ,EAAE,mBAAmB;AACrB,EAAE,iBAAiB;AACnB,EAAE,gBAAgB;;AAElB,aAAEC,WAAS;AACX,EAAE,kBAAkB;AACpB,EAAE,gBAAgB;AAClB,EAAE,eAAe;;AAEjB,iBAAEC,eAAa;AACf,EAAE,sBAAsB;AACxB,EAAE,oBAAoB;AACtB,EAAE,mBAAmB;;AAErB,kBAAEC,gBAAc;AAChB,EAAE,uBAAuB;AACzB,EAAE,qBAAqB;AACvB,EAAE,oBAAoB;;AAEtB,6BAAEC,2BAAyB;AAC3B,EAAE,kCAAkC;AACpC,EAAE,gCAAgC;AAClC,EAAE,+BAA+B;AACjC,CAAC;;ACtGD,MAAME,cAAY,GAAG,cAAc,CAAA;AACnC,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAM,kBAAkB,GAAG,oBAAoB,CAAA;;AAE/C,MAAMC,eAAa,GAAG,eAAe,CAAA;AACrC,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;AACvD,MAAM,mBAAmB,GAAG,qBAAqB,CAAA;;AAEjD,MAAMC,uBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAM,8BAA8B,GAAG,gCAAgC,CAAA;AACvE,MAAM,2BAA2B,GAAG,6BAA6B,CAAA;;AAEjE,MAAMC,uBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAM,8BAA8B,GAAG,gCAAgC,CAAA;AACvE,MAAM,2BAA2B,GAAG,6BAA6B,CAAA;;AAEjE,MAAMC,2BAAyB,GAAG,2BAA2B,CAAA;AAC7D,MAAM,kCAAkC,GAAG,oCAAoC,CAAA;AAC/E,MAAM,+BAA+B,GAAG,iCAAiC,CAAA;;AAEzE,IAAAC,gBAAc,GAAG;AACjB,gBAAEL,cAAY;AACd,EAAE,qBAAqB;AACvB,EAAE,kBAAkB;AACpB,iBAAEC,eAAa;AACf,EAAE,sBAAsB;AACxB,EAAE,mBAAmB;AACrB,yBAAEC,uBAAqB;AACvB,EAAE,8BAA8B;AAChC,EAAE,2BAA2B;AAC7B,yBAAEC,uBAAqB;AACvB,EAAE,8BAA8B;AAChC,EAAE,2BAA2B;AAC7B,6BAAEC,2BAAyB;AAC3B,EAAE,kCAAkC;AACpC,EAAE,+BAA+B;AACjC,CAAC;;ACpCD,MAAME,aAAW,GAAG,aAAa,CAAA;AACjC,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAM,iBAAiB,GAAG,mBAAmB,CAAA;;AAE7C,IAAAC,cAAc,GAAG;AACjB,eAAED,aAAW;AACb,EAAE,oBAAoB;AACtB,EAAE,iBAAiB;AACnB,CAAC;;;;;;;;ACHD,MAAME,eAAa,GAAG,eAAe,CAAA;AACrC,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;AACvD,MAAM,mBAAmB,GAAG,qBAAqB,CAAA;;AAEjD,MAAMC,eAAa,GAAG,eAAe,CAAA;AACrC,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;AACvD,MAAM,mBAAmB,GAAG,qBAAqB,CAAA;;AAEjD,MAAMC,cAAY,GAAG,cAAc,CAAA;AACnC,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAM,kBAAkB,GAAG,oBAAoB,CAAA;;AAE/C,MAAMC,iBAAe,GAAG,iBAAiB,CAAA;AACzC,MAAM,wBAAwB,GAAG,0BAA0B,CAAA;AAC3D,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;;AAErD,IAAAC,gBAAc,GAAG;AACjB,iBAAEJ,eAAa;AACf,EAAE,sBAAsB;AACxB,EAAE,mBAAmB;AACrB,iBAAEC,eAAa;AACf,EAAE,sBAAsB;AACxB,EAAE,mBAAmB;AACrB,gBAAEC,cAAY;AACd,EAAE,qBAAqB;AACvB,EAAE,kBAAkB;AACpB,mBAAEC,iBAAe;AACjB,EAAE,wBAAwB;AAC1B,EAAE,qBAAqB;AACvB,CAAC;;;;;;;;;AC5BD,MAAME,kBAAgB,GAAG,kBAAkB,CAAA;AAC3C,MAAM,yBAAyB,GAAG,2BAA2B,CAAA;AAC7D,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;;AAEvD,MAAMC,iBAAe,GAAG,iBAAiB,CAAA;AACzC,MAAM,wBAAwB,GAAG,0BAA0B,CAAA;AAC3D,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;;AAErD,MAAMC,gBAAc,GAAG,gBAAgB,CAAA;AACvC,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;;AAEnD,MAAMC,eAAa,GAAG,eAAe,CAAA;AACrC,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;AACvD,MAAM,mBAAmB,GAAG,qBAAqB,CAAA;;AAEjD,MAAMC,oBAAkB,GAAG,oBAAoB,CAAA;AAC/C,MAAM,2BAA2B,GAAG,6BAA6B,CAAA;AACjE,MAAM,wBAAwB,GAAG,0BAA0B,CAAA;;AAE3D,MAAMC,mBAAiB,GAAG,mBAAmB,CAAA;AAC7C,MAAM,0BAA0B,GAAG,4BAA4B,CAAA;AAC/D,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;;AAEzD,MAAMC,mBAAiB,GAAG,mBAAmB,CAAA;AAC7C,MAAM,0BAA0B,GAAG,4BAA4B,CAAA;AAC/D,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;;AAEzD,MAAMC,iBAAe,GAAG,iBAAiB,CAAA;AACzC,MAAM,wBAAwB,GAAG,0BAA0B,CAAA;AAC3D,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;;AAErD,MAAMC,cAAY,GAAG,cAAc,CAAA;AACnC,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAM,kBAAkB,GAAG,oBAAoB,CAAA;;AAE/C,IAAAC,WAAc,GAAG;AACjB,oBAAET,kBAAgB;AAClB,EAAE,yBAAyB;AAC3B,EAAE,sBAAsB;AACxB,mBAAEC,iBAAe;AACjB,EAAE,wBAAwB;AAC1B,EAAE,qBAAqB;AACvB,kBAAEC,gBAAc;AAChB,EAAE,uBAAuB;AACzB,EAAE,oBAAoB;AACtB,iBAAEC,eAAa;AACf,EAAE,sBAAsB;AACxB,EAAE,mBAAmB;AACrB,sBAAEC,oBAAkB;AACpB,EAAE,2BAA2B;AAC7B,EAAE,wBAAwB;AAC1B,qBAAEC,mBAAiB;AACnB,EAAE,0BAA0B;AAC5B,EAAE,uBAAuB;AACzB,qBAAEC,mBAAiB;AACnB,EAAE,0BAA0B;AAC5B,EAAE,uBAAuB;AACzB,mBAAEC,iBAAe;AACjB,EAAE,wBAAwB;AAC1B,EAAE,qBAAqB;AACvB,gBAAEC,cAAY;AACd,EAAE,qBAAqB;AACvB,EAAE,kBAAkB;AACpB,CAAC;;;;;;;;ACjED,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAM,eAAe,GAAG,iBAAiB,CAAA;AACzC,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;AACvD,MAAM,0BAA0B,GAAG,4BAA4B,CAAA;AAC/D,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;;AAEvD,IAAAE,gBAAc,GAAG;AACjB,EAAE,oBAAoB;AACtB,EAAE,eAAe;AACjB,EAAE,oBAAoB;AACtB,EAAE,sBAAsB;AACxB,EAAE,0BAA0B;AAC5B,EAAE,sBAAsB;AACxB,CAAC;;;;;;;;ACdD,MAAMC,sBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAM,6BAA6B,GAAG,+BAA+B,CAAA;AACrE,MAAM,0BAA0B,GAAG,4BAA4B,CAAA;;AAE/D,MAAMC,6BAA2B,GAAG,6BAA6B,CAAA;AACjE,MAAM,oCAAoC;AAC1C,EAAE,sCAAsC,CAAA;AACxC,MAAM,iCAAiC,GAAG,mCAAmC,CAAA;;AAE7E,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAM,6BAA6B,GAAG,+BAA+B,CAAA;AACrE,MAAM,0BAA0B,GAAG,4BAA4B,CAAA;;AAE/D,MAAMC,gCAA8B,GAAG,gCAAgC,CAAA;AACvE,MAAM,uCAAuC;AAC7C,EAAE,yCAAyC,CAAA;AAC3C,MAAM,oCAAoC;AAC1C,EAAE,sCAAsC,CAAA;AACxC,MAAM,qCAAqC;AAC3C,EAAE,uCAAuC,CAAA;;AAEzC,MAAMC,sBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAM,6BAA6B,GAAG,+BAA+B,CAAA;AACrE,MAAM,2BAA2B,GAAG,6BAA6B,CAAA;AACjE,MAAM,0BAA0B,GAAG,4BAA4B,CAAA;;AAE/D,MAAMC,wBAAsB,GAAG,wBAAwB,CAAA;AACvD,MAAM,+BAA+B,GAAG,iCAAiC,CAAA;AACzE,MAAM,6BAA6B,GAAG,+BAA+B,CAAA;AACrE,MAAM,4BAA4B,GAAG,8BAA8B,CAAA;;AAEnE,MAAMC,gBAAc,GAAG,gBAAgB,CAAA;;AAEvC,IAAAC,eAAc,GAAG;AACjB,wBAAEN,sBAAoB;AACtB,EAAE,6BAA6B;AAC/B,EAAE,0BAA0B;AAC5B,+BAAEC,6BAA2B;AAC7B,EAAE,oCAAoC;AACtC,EAAE,iCAAiC;AACnC,EAAE,oBAAoB;AACtB,EAAE,6BAA6B;AAC/B,EAAE,0BAA0B;AAC5B,kCAAEC,gCAA8B;AAChC,EAAE,uCAAuC;AACzC,EAAE,oCAAoC;AACtC,EAAE,qCAAqC;AACvC,wBAAEC,sBAAoB;AACtB,EAAE,6BAA6B;AAC/B,EAAE,0BAA0B;AAC5B,EAAE,2BAA2B;AAC7B,0BAAEC,wBAAsB;AACxB,EAAE,+BAA+B;AACjC,EAAE,4BAA4B;AAC9B,EAAE,6BAA6B;AAC/B,kBAAEC,gBAAc;AAChB,CAAC;;AC7DD,MAAME,iBAAe,GAAG,iBAAiB,CAAA;AACzC,MAAM,wBAAwB,GAAG,0BAA0B,CAAA;AAC3D,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;;AAErD,MAAMC,iBAAe,GAAG,iBAAiB,CAAA;AACzC,MAAM,wBAAwB,GAAG,0BAA0B,CAAA;AAC3D,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;;AAErD,IAAAC,gBAAc,GAAG;AACjB,mBAAED,iBAAe;AACjB,EAAE,wBAAwB;AAC1B,EAAE,qBAAqB;AACvB,mBAAED,iBAAe;AACjB,EAAE,wBAAwB;AAC1B,EAAE,qBAAqB;AACvB,CAAC;;ACfD,MAAMG,uBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAM,8BAA8B,GAAG,+BAA+B,CAAA;AACtE,MAAM,2BAA2B,GAAG,6BAA6B,CAAA;;AAEjE,IAAAC,cAAc,GAAG;AACjB,yBAAED,uBAAqB;AACvB,EAAE,8BAA8B;AAChC,EAAE,2BAA2B;AAC7B,CAAC;;;;;;;;;ACDD;AACA,MAAME,kBAAgB,GAAG,kBAAkB,CAAA;AAC3C,MAAMC,mBAAiB,GAAG,mBAAmB,CAAA;AAC7C,MAAMC,0BAAwB,GAAG,0BAA0B,CAAA;AAC3D,MAAMC,yBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAMC,uBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAMC,wBAAsB,GAAG,wBAAwB,CAAA;AACvD,MAAMC,qBAAmB,GAAG,qBAAqB,CAAA;;AAEjD;AACA,MAAMC,kBAAgB,GAAG,kBAAkB,CAAA;AAC3C,MAAMC,sBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAMC,wBAAsB,GAAG,wBAAwB,CAAA;AACvD,MAAMC,qBAAmB,GAAG,qBAAqB,CAAA;AACjD,MAAMC,kBAAgB,GAAG,kBAAkB,CAAA;;AAE3C,IAAAC,WAAc,GAAG;AACjB,oBAAEZ,kBAAgB;AAClB,qBAAEC,mBAAiB;AACnB,4BAAEC,0BAAwB;AAC1B,2BAAEC,yBAAuB;AACzB,yBAAEC,uBAAqB;AACvB,oBAAEG,kBAAgB;AAClB,wBAAEC,sBAAoB;AACtB,0BAAEC,wBAAsB;AACxB,uBAAEC,qBAAmB;AACrB,oBAAEC,kBAAgB;AAClB,0BAAEN,wBAAsB;AACxB,uBAAEC,qBAAmB;AACrB,CAAC;;;;;;;;AC/BD,MAAMO,yBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAMC,6BAA2B,GAAG,6BAA6B,CAAA;AACjE,MAAMC,sBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAMC,sBAAoB,GAAG,sBAAsB,CAAA;;AAEnD,IAAAC,mBAAc,GAAG;AACjB,2BAAEJ,yBAAuB;AACzB,+BAAEC,6BAA2B;AAC7B,wBAAEC,sBAAoB;AACtB,wBAAEC,sBAAoB;AACtB,CAAC;;;;;;;;ACVD,MAAME,yBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAMC,yBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAMC,0BAAwB,GAAG,0BAA0B,CAAA;AAC3D,MAAMC,gCAA8B,GAAG,gCAAgC,CAAA;AACvE,MAAMC,0BAAwB,GAAG,0BAA0B,CAAA;AAC3D,MAAMC,0BAAwB,GAAG,0BAA0B,CAAA;AAC3D,MAAMC,gCAA8B,GAAG,gCAAgC,CAAA;AACvE,MAAMC,iCAA+B,GAAG,iCAAiC,CAAA;AACzE,MAAMC,kCAAgC,GAAG,kCAAkC,CAAA;AAC3E,MAAMC,8BAA4B,GAAG,8BAA8B,CAAA;;AAEnE,IAAAC,uBAAc,GAAG;AACjB,2BAAEV,yBAAuB;AACzB,2BAAEC,yBAAuB;AACzB,4BAAEC,0BAAwB;AAC1B,kCAAEC,gCAA8B;AAChC,4BAAEC,0BAAwB;AAC1B,4BAAEC,0BAAwB;AAC1B,kCAAEC,gCAA8B;AAChC,mCAAEC,iCAA+B;AACjC,oCAAEC,kCAAgC;AAClC,gCAAEC,8BAA4B;AAC9B,CAAC;;;;;;;;ACtBD,MAAME,uBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAMC,sBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAMC,uBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAMC,yBAAuB,GAAG,yBAAyB,CAAA;;AAEzD,IAAAC,wBAAc,GAAG;AACjB,yBAAEJ,uBAAqB;AACvB,wBAAEC,sBAAoB;AACtB,yBAAEC,uBAAqB;AACvB,2BAAEC,yBAAuB;AACzB,CAAC;;;;;;;;ACVD,MAAME,8BAA4B,GAAG,8BAA8B,CAAA;AACnE,MAAMC,0BAAwB,GAAG,0BAA0B,CAAA;AAC3D,MAAMC,0BAAwB,GAAG,0BAA0B,CAAA;AAC3D,MAAMC,2BAAyB,GAAG,2BAA2B,CAAA;AAC7D,MAAMC,sBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAMC,uBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAMC,8BAA4B,GAAG,8BAA8B,CAAA;AACnE,MAAMC,4BAA0B,GAAG,4BAA4B,CAAA;AAC/D,MAAMC,8BAA4B,GAAG,8BAA8B,CAAA;AACnE,MAAMC,8BAA4B,GAAG,8BAA8B,CAAA;;AAEnE,IAAAC,oBAAc,GAAG;AACjB,gCAAEV,8BAA4B;AAC9B,4BAAEC,0BAAwB;AAC1B,4BAAEC,0BAAwB;AAC1B,6BAAEC,2BAAyB;AAC3B,wBAAEC,sBAAoB;AACtB,yBAAEC,uBAAqB;AACvB,gCAAEC,8BAA4B;AAC9B,8BAAEC,4BAA0B;AAC5B,gCAAEC,8BAA4B;AAC9B,gCAAEC,8BAA4B;AAC9B,CAAC;;;;;;;;ACtBD,MAAME,qBAAmB,GAAG,qBAAqB,CAAA;AACjD,MAAMC,oBAAkB,GAAG,oBAAoB,CAAA;AAC/C,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAMC,uBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAMC,mBAAiB,GAAG,mBAAmB,CAAA;AAC7C,MAAMC,oBAAkB,GAAG,oBAAoB,CAAA;AAC/C,MAAMC,qBAAmB,GAAG,qBAAqB,CAAA;;AAEjD,IAAAC,eAAc,GAAG;AACjB,uBAAEN,qBAAmB;AACrB,sBAAEC,oBAAkB;AACpB,EAAE,qBAAqB;AACvB,yBAAEC,uBAAqB;AACvB,qBAAEC,mBAAiB;AACnB,sBAAEC,oBAAkB;AACpB,uBAAEC,qBAAmB;AACrB,CAAC;;;;;;;;AChBD,MAAME,mBAAiB,GAAG,mBAAmB,CAAA;AAC7C,MAAM,0BAA0B,GAAG,4BAA4B,CAAA;AAC/D,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;;AAEzD,MAAMC,8BAA4B,GAAG,8BAA8B,CAAA;AACnE,MAAM,qCAAqC;AAC3C,EAAE,uCAAuC,CAAA;AACzC,MAAM,kCAAkC,GAAG,oCAAoC,CAAA;;AAE/E,MAAMC,8BAA4B,GAAG,8BAA8B,CAAA;AACnE,MAAM,qCAAqC;AAC3C,EAAE,uCAAuC,CAAA;AACzC,MAAM,kCAAkC,GAAG,oCAAoC,CAAA;;AAE/E,MAAMC,yBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAM,gCAAgC,GAAG,kCAAkC,CAAA;AAC3E,MAAM,6BAA6B,GAAG,+BAA+B,CAAA;;AAErE,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;;AAEnD,IAAAC,oBAAc,GAAG;AACjB,qBAAEJ,mBAAiB;AACnB,EAAE,0BAA0B;AAC5B,EAAE,uBAAuB;AACzB,gCAAEC,8BAA4B;AAC9B,EAAE,qCAAqC;AACvC,EAAE,kCAAkC;AACpC,gCAAEC,8BAA4B;AAC9B,EAAE,qCAAqC;AACvC,EAAE,kCAAkC;AACpC,2BAAEC,yBAAuB;AACzB,EAAE,gCAAgC;AAClC,EAAE,6BAA6B;AAC/B,EAAE,oBAAoB;AACtB,CAAC;;;;;;;;AClCD,MAAM,mBAAmB,GAAGE,qBAAgC,CAAA;AAC5D,MAAM,eAAe,GAAGC,iBAA4B,CAAA;AACpD,MAAM,YAAY,GAAGC,cAAyB,CAAA;AAC9C,MAAM,WAAW,GAAGC,aAAwB,CAAA;AAC5C,MAAM,UAAU,GAAGC,YAAuB,CAAA;AAC1C,MAAM,cAAc,GAAGC,gBAA2B,CAAA;AAClD,MAAM,YAAY,GAAGC,cAAyB,CAAA;AAC9C,MAAM,cAAc,GAAGC,gBAA2B,CAAA;AAClD,MAAM,SAAS,GAAGC,WAAsB,CAAA;AACxC,MAAM,cAAc,GAAGC,gBAA2B,CAAA;AAClD,MAAM,aAAa,GAAGC,eAA0B,CAAA;AAChD,MAAM,cAAc,GAAGC,gBAA2B,CAAA;AAClD,MAAM,YAAY,GAAGC,cAAyB,CAAA;AAC9C,MAAM,SAAS,GAAGC,WAAsB,CAAA;AACxC,MAAM,iBAAiB,GAAGC,mBAA8B,CAAA;AACxD,MAAM,qBAAqB,GAAGC,uBAAkC,CAAA;AAChE,MAAM,sBAAsB,GAAGC,wBAAmC,CAAA;AAClE,MAAM,kBAAkB,GAAGC,oBAA+B,CAAA;AAC1D,MAAM,aAAa,GAAGC,eAA0B,CAAA;AAChD,MAAM,kBAAkB,GAAGC,oBAA+B,CAAA;;AAE1D,MAAM,YAAY,GAAG;AACrB,EAAE,GAAG,UAAU;AACf,CAAC,CAAA;;AAED,IAAAC,QAAc,GAAG;AACjB,EAAE,MAAM,EAAE,YAAY;AACtB,EAAE,GAAG,mBAAmB;AACxB,EAAE,GAAG,eAAe;AACpB,EAAE,GAAG,YAAY;AACjB,EAAE,GAAG,WAAW;AAChB,EAAE,GAAG,UAAU;AACf,EAAE,GAAG,cAAc;AACnB,EAAE,GAAG,YAAY;AACjB,EAAE,GAAG,cAAc;AACnB,EAAE,GAAG,SAAS;AACd,EAAE,GAAG,cAAc;AACnB,EAAE,GAAG,aAAa;AAClB,EAAE,GAAG,cAAc;AACnB,EAAE,GAAG,YAAY;AACjB,EAAE,GAAG,SAAS;AACd,EAAE,GAAG,iBAAiB;AACtB,EAAE,GAAG,qBAAqB;AAC1B,EAAE,GAAG,sBAAsB;AAC3B,EAAE,GAAG,kBAAkB;AACvB,EAAE,GAAG,aAAa;AAClB,EAAE,GAAG,kBAAkB;AACvB,CAAC;;;;;;;;AC/CD,MAAM,UAAEC,QAAM,EAAE,GAAGrB,YAAmB,CAAA;AACtC,MAAMoB,QAAM,GAAGnB,QAAoB,CAAA;;AAEnC,MAAMqB,YAAU,GAAG,OAAO,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,KAAK;AAC1E,EAAE,MAAM,UAAU;AAClB,IAAI,SAAS,KAAK,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAA;AAC5E,EAAE,MAAM,OAAO,GAAG,SAAS,KAAK,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAA;AAC1E,EAAE,MAAM,MAAM,GAAG,MAAMD,QAAM,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAA;AACrE,EAAE,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,CAAA;AAC1D,EAAE,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;AAC5B,CAAC,CAAA;;AAED,MAAME,iBAAe,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK;AAC1C,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAACH,QAAM,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;AACzD,CAAC,CAAA;;AAED,IAAAI,kBAAc,GAAG;AACjB,cAAEF,YAAU;AACZ,mBAAEC,iBAAe;AACjB,CAAC;;;;;;ACrBD,MAAM,EAAE,WAAW,EAAE,GAAGvB,YAAmB,CAAA;AAC3C,MAAMyB,OAAK,GAAG,UAAyB,CAAA;AACvC,MAAML,QAAM,GAAGlB,QAAoB,CAAA;;AAEnC,MAAMwB,QAAM,GAAG;AACf,EAAE,KAAK,EAAE;AACT,IAAI,IAAI,EAAE,QAAQ;AAClB,GAAG;AACH,EAAE,MAAM,EAAE;AACV,IAAI,IAAI,EAAE,QAAQ;AAClB,GAAG;AACH,CAAC,CAAA;;AAED,MAAMC,uBAAqB,GAAG,CAAC,GAAG,KAAK;AACvC,EAAE,MAAM,MAAM,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAA;AACpD,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAACP,QAAM,CAAC,sCAAsC,EAAE,MAAM,CAAC,CAAA;AAC7E,CAAC,CAAA;;AAED,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK;AACpC,EAAE,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;AAC/C,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,wCAAwC,EAAE,MAAM,CAAC,CAAA;AACxE,CAAC,CAAA;;AAED,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK;AACpC,EAAE,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;AAC/C,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,wCAAwC,EAAE,MAAM,CAAC,CAAA;AACxE,CAAC,CAAA;;AAED,MAAMQ,UAAQ,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK;AACjC,EAAE,IAAI;AACN,IAAI,MAAM,KAAK,GAAG,IAAIH,OAAK,CAAC,UAAEC,QAAM,EAAE,CAAC,CAAA;AACvC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AACzB,IAAI,OAAOG,SAAO,CAAC,GAAG,CAAC,CAAA;AACvB,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AACzB,GAAA;AACA,CAAC,CAAA;;AAED,MAAMA,SAAO,GAAG,CAAC,GAAG,KAAK;AACzB,EAAE,IAAI;AACN,IAAI,MAAM,KAAK,GAAG,IAAIJ,OAAK,CAAC,UAAEC,QAAM,EAAE,CAAC,CAAA;AACvC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAChC,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,OAAO,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAA;AAC7B,KAAK,MAAM;AACX,MAAM,OAAO,IAAI,CAAA;AACjB,KAAA;AACA,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,OAAO,IAAI,CAAA;AACf,GAAA;AACA,CAAC,CAAA;;AAED,IAAAI,uBAAc,GAAG;AACjB,yBAAEH,uBAAqB;AACvB,EAAE,aAAa;AACf,EAAE,aAAa;AACf,YAAEC,UAAQ;AACV,WAAEC,SAAO;AACT,CAAC;;AC7DD,MAAME,MAAI,GAAG/B,YAAe,CAAA;AAC5B,MAAM;AACN,EAAE,YAAY;AACd,iBAAEgC,eAAa;AACf,EAAE,UAAU;AACZ,EAAE,SAAS;AACX,EAAE,QAAQ;AACV,EAAE,SAAS;AACX,EAAE,OAAO;AACT,EAAE,MAAM;AACR,EAAE,UAAU;AACZ,EAAE,WAAW;AACb,EAAE,SAAS;AACX,CAAC,GAAG/B,YAAa,CAAA;;AAEjB,SAASgC,0BAAwB,CAAC,QAAQ,EAAE;AAC5C,EAAE,IAAI;AACN;AACA,IAAI,IAAI,OAAO,GAAGF,MAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;AACxC;AACA;AACA;AACA,IAAI,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE;AAC7B,MAAM,OAAO,IAAI,CAAA;AACjB,KAAA;AACA;AACA,IAAIE,0BAAwB,CAAC,OAAO,CAAC,CAAA;AACrC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAA;AACtB,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,CAAC,OAAO,CAAC,CAAA;AAChD,GAAA;AACA,CAAA;;AAEA,SAASC,gBAAc,CAAC,GAAG,EAAE;AAC7B,EAAE,IAAI;AACN,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE;AACnC,MAAM,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAA;AAC/C,MAAM,SAAS,CAAC,GAAG,CAAC,CAAA;AACpB,KAAA;AACA,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,MAAM,CAAC,CAAA;AACX,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,iBAAe,CAAC,QAAQ,EAAE,aAAa,GAAG,EAAE,EAAE;AACvD,EAAE,IAAI;AACN;AACA,IAAIF,0BAAwB,CAAC,QAAQ,CAAC,CAAA;;AAEtC;AACA,IAAI,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;AACpD,IAAI,IAAI,iBAAiB,GAAG,aAAa,CAAA;AACzC,IAAI,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC9B,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;;AAEnD,MAAM,IAAI;AACV,QAAQ,iBAAiB;AACzB,UAAU,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,MAAA;AACtD,cAAc,IAAI,CAAC,KAAK,CAAC,YAAY,CAAA;AACrC,cAAc,YAAY,CAAA;AAC1B,OAAO,CAAC,OAAO,UAAU,EAAE;AAC3B;AACA,QAAQ,OAAO,CAAC,IAAI;AACpB,UAAU,CAAC,4BAA4B,EAAE,QAAQ,CAAC,8BAA8B,CAAC;AACjF,SAAS,CAAA;AACT,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;;AAEjE;AACA,QAAQ,iBAAiB,GAAG,aAAa,CAAA;AACzC,QAAQD,eAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AACvE,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,mCAAmC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;AACrE,OAAA;AACA,KAAK,MAAM;AACX;AACA,MAAM,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA;AACxC,MAAMA,eAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AACrE,KAAA;;AAEA,IAAI,OAAO,iBAAiB,CAAA;AAC5B,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAClB,IAAI,OAAO,aAAa,CAAA;AACxB,GAAA;AACA,CAAA;;AAEA,SAASI,aAAW,CAAC,QAAQ,EAAE,IAAI,EAAE;AACrC,EAAE,IAAI;AACN;AACA,IAAI,OAAOJ,eAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AACxC,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,OAAO,KAAK,CAAA;AAChB,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS,wBAAwB,CAAC,SAAS,EAAE,YAAY,GAAG,EAAE,EAAE;AAChE,EAAE;AACF,IAAI,SAAS,KAAK,EAAE;AACpB,IAAI,SAAS;AACb,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AACvC,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,CAAA;;AAExB,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAChC,QAAQ,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC1C,UAAU,UAAU,CAACD,MAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK;AAC1D,YAAY,IAAI,GAAG,EAAE,MAAM,GAAG,CAAA;AAC9B,WAAW,CAAC,CAAA;AACZ,SAAA;AACA,OAAA;AACA,KAAK,CAAA;AACL,IAAA;AACA,CAAA;;AAEA,IAAA,IAAc,GAAG;AACjB,4BAAEE,0BAAwB;AAC1B,mBAAEE,iBAAe;AACjB,eAAEC,aAAW;AACb,EAAE,wBAAwB;AAC1B,kBAAEF,gBAAc;AAChB,CAAC;;ACpJD,MAAM,OAAEG,KAAG,EAAE,GAAGrC,YAAmB,CAAA;AACnC,MAAM+B,MAAI,GAAG9B,YAAe,CAAA;AAC5B,MAAM,iBAAE+B,eAAa,EAAE,GAAG9B,YAAa,CAAA;AAEvC,MAAM,mBAAEiC,iBAAe,EAAE,GAAG/B,IAAwB,CAAA;;AAEpD,MAAMkC,gBAAc,GAAG,iBAAiB,CAAA;AACxC,MAAMC,SAAO,GAAG,WAAW,CAAA;;AAE3B,MAAMC,qBAAmB,GAAG;AAC5B;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,2BAA2B,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,KAAK;AAChE,IAAI,IAAI;AACR;AACA,MAAM,MAAM,QAAQ,GAAGT,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,eAAe,GAAGH,iBAAe,CAAC,QAAQ,CAAC,CAAA;;AAEvD;AACA,MAAM,IAAI,mBAAmB,GAAG,IAAI,CAAA;AACpC,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,KAAK;AAClD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,eAAe,CAAC,IAAI,CAAC,EAAE;AACrD,UAAU,mBAAmB,GAAG,KAAK,CAAA;AACrC,SAAA;AACA,OAAO,CAAC,CAAA;;AAER;AACA,MAAM,IAAI,mBAAmB,KAAK,IAAI,EAAE;AACxC;AACA,QAAQ,eAAe,CAAC,mBAAmB,CAAC,GAAG,eAAe,CAAA;AAC9D,OAAO,MAAM;AACb;AACA,QAAQ,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;AAC7C,OAAA;;AAEA;AACA,MAAMH,eAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;;AAEvE,MAAM,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAA;;AAEvE;AACA,MAAM,OAAO;AACb,QAAQ,UAAU,EAAE,eAAe;AACnC,QAAQ,OAAO,EAAE,IAAI;AACrB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,CAAC,CAAC,CAAA;AACvE;AACA,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,QAAQ,UAAU,EAAE,EAAE;AACtB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH,EAAE,2BAA2B,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,KAAK;AAC1D,IAAI,IAAI;AACR;AACA,MAAM,MAAM,QAAQ,GAAGD,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,eAAe,GAAGH,iBAAe,CAAC,QAAQ,CAAC,CAAA;;AAEvD;AACA;AACA;AACA,MAAM,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AACtD,QAAQ,eAAe,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,KAAK;AACtD,UAAU,IAAI,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;AACvC,YAAY,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;AACnE,WAAA;AACA,SAAS,CAAC,CAAA;AACV,OAAA;;AAEA;AACA,MAAMH,eAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;;AAEvE,MAAM,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAA;;AAExE;AACA,MAAM,OAAO;AACb,QAAQ,UAAU,EAAE,eAAe;AACnC,QAAQ,OAAO,EAAE,IAAI;AACrB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,CAAC,CAAC,CAAA;AACxE;AACA,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,QAAQ,UAAU,EAAE,EAAE;AACtB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,6BAA6B,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,KAAK;AAC9D,IAAI,IAAI;AACR,MAAM,MAAM,QAAQ,GAAGD,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,eAAe,GAAGH,iBAAe,CAAC,QAAQ,CAAC,CAAA;;AAEvD,MAAM,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM;AAC7C,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,EAAE,KAAK,WAAW;AACnD,OAAO,CAAA;;AAEP,MAAMH,eAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;;AAEhE,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,CAAC,gCAAgC,EAAE,WAAW,CAAC,qBAAqB,CAAC;AAC7E,OAAO,CAAA;;AAEP,MAAM,OAAO;AACb,QAAQ,UAAU,EAAE,QAAQ;AAC5B,QAAQ,OAAO,EAAE,IAAI;AACrB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,CAAC,CAAC,CAAA;AACzE,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,QAAQ,UAAU,EAAE,EAAE;AACtB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH,EAAE,4BAA4B,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAChD,IAAI,IAAI;AACR,MAAM,MAAM,QAAQ,GAAGD,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;;AAEP,MAAM,MAAM,eAAe,GAAGH,iBAAe,CAAC,QAAQ,CAAC,CAAA;AACvD,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,CAAC,6BAA6B,EAAE,eAAe,CAAC,MAAM,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;AAC/F,OAAO,CAAA;AACP;AACA,MAAM,OAAO;AACb,QAAQ,UAAU,EAAE,eAAe;AACnC,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,CAAC,CAAC,CAAA;AACzE;AACA,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,QAAQ,UAAU,EAAE,EAAE;AACtB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH,EAAE,2BAA2B,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAC/C,IAAI,IAAI;AACR,MAAM,MAAM,QAAQ,GAAGJ,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,eAAe,GAAGH,iBAAe,CAAC,QAAQ,CAAC,CAAA;;AAEvD;AACA;AACA,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE,CAAA;;AAEpC,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK;AAC7C,QAAQ,IAAI,SAAS,CAAC,MAAM,EAAE;AAC9B,UAAU,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AACnD,YAAY,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE;AAC/C,cAAc,EAAE,EAAE,SAAS,CAAC,MAAM;AAClC,cAAc,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;AACrE;AACA,aAAa,CAAC,CAAA;AACd,WAAA;AACA,SAAA;AACA,OAAO,CAAC,CAAA;;AAER,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;;AAE9D;AACA,MAAM,OAAO;AACb,QAAQ,SAAS,EAAE,cAAc;AACjC,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,CAAC,CAAC,CAAA;AACzE;AACA,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,QAAQ,SAAS,EAAE,EAAE;AACrB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,qBAAc,GAAGK,qBAAmB;;AC3PpC,MAAM,OAAEH,KAAG,EAAE,GAAGrC,YAAmB,CAAA;AACnC,MAAM+B,MAAI,GAAG9B,YAAe,CAAA;AAC5B,MAAM,iBAAE+B,eAAa,EAAE,GAAG9B,YAAa,CAAA;AAEvC,MAAM,mBAAEiC,iBAAe,EAAE,GAAG/B,IAAwB,CAAA;;AAEpD,MAAMkC,gBAAc,GAAG,aAAa,CAAA;AACpC,MAAMC,SAAO,GAAG,WAAW,CAAA;;AAE3B,MAAME,iBAAe,GAAG;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,uBAAuB,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK;AACtD,IAAI,IAAI;AACR;AACA,MAAM,MAAM,QAAQ,GAAGV,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,IAAI,GAAGH,iBAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;;AAEhD;AACA,MAAM,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE;AAClC,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;AACvB,OAAA;;AAEA,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAA;;AAEtB;AACA,MAAMH,eAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;;AAE5D,MAAM,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAA;;AAE/D;AACA,MAAM,OAAO;AACb,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,GAAG,EAAE,IAAI;AACjB,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,OAAO,EAAE,IAAI;AACrB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,CAAC,CAAC,CAAA;AAC/D;AACA,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,QAAQ,MAAM,EAAE,EAAE;AAClB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,wBAAwB,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAC5C,IAAI,IAAI;AACR,MAAM,MAAM,QAAQ,GAAGD,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;;AAEP,MAAM,MAAM,IAAI,GAAGH,iBAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;;AAEhD,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,wCAAwC;AAChD,QAAQ,QAAQ;AAChB,QAAQ,QAAQ;AAChB,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM;AAChC,QAAQ,QAAQ;AAChB,OAAO,CAAA;;AAEP;AACA,MAAM,OAAO;AACb,QAAQ,MAAM,EAAE,IAAI;AACpB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,CAAC,CAAC,CAAA;AACjE;AACA,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,QAAQ,MAAM,EAAE,EAAE;AAClB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,yBAAyB,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,KAAK;AACvD,IAAI,IAAI;AACR,MAAM,MAAM,QAAQ,GAAGJ,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,IAAI,GAAGH,iBAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;;AAEhD,MAAM,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC5B,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAA;AAC7B,QAAQH,eAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAC9D,OAAA;;AAEA,MAAM,OAAO,CAAC,GAAG,CAAC,+CAA+C,EAAE,QAAQ,CAAC,CAAA;;AAE5E,MAAM,OAAO;AACb,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,OAAO,EAAE,IAAI;AACrB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,CAAC,CAAC,CAAA;AACjE,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,QAAQ,MAAM,EAAE,EAAE;AAClB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,iBAAc,GAAGS,iBAAe;;;;;;;;;;ACpIhC,IAAIC,IAAE,GAAG1C,YAAa,CAAA;AACtB,IAAI,QAAQ,GAAGC,YAAmB,CAAA;AAClC,MAAM,QAAQ,GAAG,UAAmB,CAAA;AACpC,IAAI,SAAS,GAAG,UAAiB,CAAA;AACjC,IAAI0C,YAAU,GAAG,UAAqB,CAAA;AACtC,MAAM,MAAM,GAAG,UAAiB,CAAA;AAChC,IAAI,GAAG,GAAG,UAAqB,CAAA;AAC/B,MAAMZ,MAAI,GAAGxB,YAAe,CAAA;AAC5B,MAAM,OAAE8B,KAAG,EAAE,GAAG7B,YAAmB,CAAA;AACnC,MAAM,4BAAEyB,0BAAwB,EAAE,GAAGxB,IAAiB,CAAA;;AAEtD,MAAM,kBAAkB,GAAG,WAAW,CAAA;AACtC,MAAM,qBAAqB,GAAG,KAAK,CAAC;;AAEpC;AACA;AACA;AACA;AACA,MAAM,uBAAuB,SAAS,MAAM,CAAC,SAAS,CAAC;AACvD,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACxC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;AAChC,IAAI,QAAQ,EAAE,CAAA;AACd,GAAA;AACA,CAAA;;kBAEA,MAAM,SAAS,CAAC;AAChB,EAAE,WAAW,GAAG;AAChB,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;AAC9B,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,iBAAiB,GAAG;AACtB,IAAI,GAAG;AACP,IAAI,QAAQ;AACZ,IAAI,UAAU,GAAG,GAAG;AACpB,IAAI,aAAa,GAAG,IAAI;AACxB,OAAO;AACP,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI;AACV,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAA;AACrB,QAAQ,IAAI,KAAK,GAAG,EAAE,CAAA;;AAEtB;AACA,QAAQ,IAAI,UAAU,GAAG,EAAE,CAAA;;AAE3B,QAAQ,MAAM,aAAa,GAAG,QAAQ,CAAC,eAAe,CAAC;AACvD,UAAU,KAAK,EAAEiC,IAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AAC9C,UAAU,MAAM,EAAE,OAAO,CAAC,MAAM;AAChC,UAAU,OAAO,EAAE,KAAK;AACxB,SAAS,CAAC,CAAA;;AAEV,QAAQ,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,IAAI,EAAE;AACjD,UAAU,IAAI,KAAK,GAAG,UAAU,EAAE;AAClC;AACA,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC5B,YAAY,KAAK,EAAE,CAAA;AACnB,YAAY,IAAI,aAAa,KAAK,IAAI,EAAE;AACxC,cAAc,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE;AAClD,gBAAgB,IAAI;AACpB,eAAe,CAAC,CAAA;AAChB,aAAA;AACA,WAAW,MAAM;AACjB,YAAY,aAAa,CAAC,KAAK,EAAE,CAAA;AACjC,YAAY,OAAO,CAAC,KAAK,CAAC,CAAA;AAC1B,WAAA;AACA,SAAS,CAAC,CAAA;AACV,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAA;AACjB,OAAA;AACA,KAAK,CAAC,CAAA;AACN,GAAG,CAAA;;AAEH,EAAE,gBAAgB,GAAG;AACrB,IAAI,GAAG;AACP,IAAI,IAAI,GAAG,EAAE;AACb,IAAI,WAAW,GAAG,EAAE;AACpB,IAAI,aAAa,GAAG,IAAI;AACxB,OAAO;AACP,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI;AACV,QAAQ,MAAM,MAAM,GAAGC,YAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAC5C,QAAQ,MAAM,UAAU,GAAGD,IAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;;AAEjE,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAA;;AAErB,QAAQ,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;AACxC;AACA,UAAU,IAAI,aAAa,KAAK,IAAI,EAAE;AACtC,YAAY,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE;AAChD,cAAc,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACxC,aAAa,CAAC,CAAA;AACd,WAAA;AACA,UAAU,IAAI,WAAW,KAAK,IAAI,IAAI,KAAK,GAAG,WAAW,EAAE;AAC3D,YAAY,UAAU,CAAC,OAAO,EAAE,CAAA;AAChC,YAAY,OAAO,CAAC,UAAU,CAAC,CAAA;AAC/B,WAAA;AACA,UAAU,KAAK,EAAE,CAAA;AACjB,SAAS,CAAC,CAAA;;AAEV,QAAQ,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AACtC,UAAU,MAAM,CAAC,CAAC,CAAC,CAAA;AACnB,SAAS,CAAC,CAAA;;AAEV,QAAQ,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK;AACvC,UAAU,OAAO,CAAC,UAAU,CAAC,CAAA;AAC7B,SAAS,CAAC,CAAA;AACV,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB,QAAQ,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAA;AAC1C,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAA;AACjB,OAAA;AACA,KAAK,CAAC,CAAA;AACN,GAAG,CAAA;;AAEH,EAAE,MAAM,cAAc,CAAC,IAAI,EAAE;AAC7B,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;AACvD,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,SAAA;AACN,SAAS,kBAAkB,CAAC,OAAO,EAAE;AACrC,UAAU,IAAI,EAAE,IAAI;AACpB,UAAU,OAAO,EAAE,IAAI;AACvB,UAAU,aAAa,EAAE,IAAI;AAC7B,UAAU,aAAa,EAAE,IAAI;AAC7B,SAAS,CAAA;AACT,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK;AACxB;AACA,UAAU,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAA;AAC7C,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAChC,KAAK,CAAC,CAAA;AACN,GAAA;;AAEA,EAAE,cAAc,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,KAAK;AACjD,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI;AACV,QAAQ,MAAM,iBAAiB,GAAGA,IAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;;AAE/D,QAAQ,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM;AAC1C,UAAU,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAClC,UAAU,OAAO,CAAC,UAAU,CAAC,CAAA;AAC7B,SAAS,CAAC,CAAA;;AAEV,QAAQ,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM;AAC/C,UAAU,OAAO,CAAC,aAAa,CAAC,CAAA;AAChC,SAAS,CAAC,CAAA;;AAEV,QAAQ,MAAM,WAAW,GAAGA,IAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;AACzD,QAAQ,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;;AAEhC,QAAQ,MAAM,OAAO,GAAG;AACxB,UAAU,OAAO,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE;AAChD,UAAU,uBAAuB,EAAE,IAAI;AACvC,UAAU,IAAI,EAAE,KAAK;AACrB,UAAU,MAAM,EAAE,KAAK;AACvB,UAAU,YAAY,EAAE,QAAQ;AAChC,SAAS,CAAA;;AAET,QAAQ,MAAM,iBAAiB,GAAG,QAAQ;AAC1C,UAAU,KAAK;AACf,UAAU;AACV,YAAY,WAAW,EAAE,IAAI,CAAC,cAAc;AAC5C,YAAY,YAAY,EAAE,QAAQ;AAClC,WAAW;AACX,UAAU,OAAO;AACjB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AAC7B,UAAU,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACxB,UAAU,MAAM,CAAC,CAAC,CAAC,CAAA;AACnB,SAAS,CAAC,CAAA;;AAEV,QAAQ,iBAAA;AACR,WAAW,IAAI,CAAC,iBAAiB,CAAA;AACjC,WAAW,IAAI,CAAC,IAAI,uBAAuB,EAAE,CAAA;AAC7C,WAAW,IAAI,CAAC,WAAW,CAAA;AAC3B,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM;AAC3B,YAAY,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AAChC,WAAW,CAAA;AACX,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM;AAC9B,YAAY,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;AACxC,WAAW,CAAC,CAAA;AACZ,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACtB,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAA;AACjB,OAAA;AACA,KAAK,CAAC,CAAA;AACN,GAAG,CAAA;;AAEH,EAAE,cAAc,GAAG;AACnB,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,SAAS,GAAG,GAAG;AACnB,IAAI,WAAW,GAAG,IAAI;AACtB,IAAI,OAAO,GAAG,IAAI;AAClB,IAAI,GAAG,GAAG,IAAI;AACd,IAAI,aAAa,GAAG,IAAI;AACxB,IAAI,KAAK,GAAG,IAAI;AAChB,OAAO;AACP,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI;AACV,QAAQ,MAAM,UAAU,GAAGA,IAAA;AAC3B,WAAW,gBAAgB,CAAC,QAAQ,CAAA;AACpC,WAAW,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;AAC9C,QAAQ,MAAM,WAAW,GAAGA,IAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;;AAEzD,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAA;;AAE3B;AACA,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAA;AACpB,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAA;AACrB,QAAQ,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;;AAEhC,QAAQ,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;AACxC,UAAU,IAAI,KAAK,GAAG,CAAC,EAAE;AACzB,YAAY,GAAG,GAAG,KAAK,CAAA;AACvB,WAAA;AACA;AACA,UAAU,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,KAAK,EAAE;AAChD,YAAY,QAAQ,GAAG,KAAK,CAAA;AAC5B,YAAY,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAClC,YAAY,UAAU,CAAC,OAAO,EAAE,CAAA;AAChC,YAAY,OAAO,CAAC,UAAU,CAAC,CAAA;AAC/B,WAAA;AACA,UAAU,IAAI,QAAQ,KAAK,IAAI,EAAE;AACjC,YAAY,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAA;AAChD,YAAY,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;AACzD,YAAY,KAAK,EAAE,CAAA;;AAEnB,YAAY,IAAI,GAAG,KAAK,IAAI,EAAE;AAC9B;AACA,cAAc,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE;AAClD,gBAAgB,KAAK;AACrB,eAAe,CAAC,CAAA;AAChB,aAAA;AACA,WAAA;AACA,SAAS,CAAC,CAAA;;AAEV,QAAQ,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM;AACnC,UAAU,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAChC,UAAU,UAAU,CAAC,OAAO,EAAE,CAAA;AAC9B,UAAU,OAAO,CAAC,UAAU,CAAC,CAAA;AAC7B,SAAS,CAAC,CAAA;AACV,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAA;AACjB,OAAA;AACA,KAAK,CAAC,CAAA;AACN,GAAG,CAAA;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,mBAAmB,GAAG;AACxB,IAAI,GAAG;AACP,IAAI,QAAQ;AACZ,IAAI,WAAW;AACf,IAAI,mBAAmB;AACvB,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC;AAC9B,IAAI,aAAa,GAAG,IAAI;AACxB,OAAO;AACP,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C;AACA,MAAM;AACN,QAAQ,OAAO,mBAAmB,KAAK,QAAQ;AAC/C,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAA;AACjC,QAAQ;AACR,QAAQ,OAAO,MAAM;AACrB,UAAU,IAAI,KAAK,CAAC,gDAAgD,CAAC;AACrE,SAAS,CAAA;AACT,OAAA;;AAEA;AACA,MAAM,IAAI,mBAAmB,CAAC,MAAM,GAAG,qBAAqB,EAAE;AAC9D,QAAQ,OAAO,MAAM;AACrB,UAAU,IAAI,KAAK;AACnB,YAAY,8CAA8C;AAC1D,cAAc,qBAAqB;AACnC,cAAc,QAAQ;AACtB,WAAW;AACX,SAAS,CAAA;AACT,OAAA;;AAEA;AACA,MAAM,MAAM,UAAU,GAAGX,MAAI,CAAC,IAAI,CAACM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC,CAAA;AAC/E,MAAM,MAAM,gBAAgB,GAAGN,MAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;AACrD,MAAM,MAAM,mBAAmB,GAAGA,MAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;;AAE3D,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,UAAU,GAAGA,MAAI,CAAC,GAAG,CAAC,EAAE;AAC/D,QAAQ,OAAO,MAAM;AACrB,UAAU,IAAI,KAAK;AACnB,YAAY,+DAA+D;AAC3E,WAAW;AACX,SAAS,CAAA;AACT,OAAA;AACA,MAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,UAAU,GAAGA,MAAI,CAAC,GAAG,CAAC,EAAE;AAClE,QAAQ,OAAO,MAAM;AACrB,UAAU,IAAI,KAAK;AACnB,YAAY,gEAAgE;AAC5E,WAAW;AACX,SAAS,CAAA;AACT,OAAA;;AAEA;AACA,MAAM,IAAI,MAAM,GAAGY,YAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;;AAExC,MAAM,IAAID,IAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;AAC3C,QAAQ,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAA;AACrD;AACA,QAAQ,IAAI,UAAU,GAAGA,IAAE,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;;AAE3E,QAAQT,0BAAwB,CAAC,mBAAmB,CAAC,CAAA;;AAErD,QAAQ,IAAI,WAAW,GAAGS,IAAE,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAA;;AAEnE,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAA;AACpB,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAA;;AAErB;AACA,QAAQ,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;;AAE1D;AACA,QAAQ,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;;AAEhC,QAAQ,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;AACxC,UAAU,IAAI;AACd;AACA;AACA,YAAY,IAAI,KAAK,GAAG,CAAC,EAAE;AAC3B,cAAc,GAAG,GAAG,KAAK,CAAA;AACzB,aAAA;;AAEA,YAAY,IAAI,IAAI,EAAE;AACtB;AACA,cAAc,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;;AAE9C,cAAc,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAA;;AAE/D,cAAc,IAAI,aAAa,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;AAC1D,gBAAgB,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE;AACpD,kBAAkB,KAAK;AACvB,iBAAiB,CAAC,CAAA;AAClB,eAAA;;AAEA;AACA,cAAc,KAAK,EAAE,CAAA;AACrB,aAAA;AACA,WAAW,CAAC,OAAO,CAAC,EAAE;AACtB,YAAY,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;AAClC,WAAA;AACA,SAAS,CAAC,CAAA;;AAEV,QAAQ,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK;AACvC,UAAU,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAClC,UAAU,WAAW,CAAC,KAAK,EAAE,CAAA;AAC7B,UAAU,OAAO,CAAC,kBAAkB,GAAG,KAAK,GAAG,UAAU,CAAC,CAAA;AAC1D,SAAS,CAAC,CAAA;;AAEV,QAAQ,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;AACxC,UAAU,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;AAClE,UAAU,MAAM,CAAC,GAAG,CAAC,CAAA;AACrB,SAAS,CAAC,CAAA;AACV,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAA;AAC9C,OAAA;AACA,KAAK,CAAC,CAAA;AACN,GAAG,CAAA;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,GAAG,CAAC,IAAI,KAAK;AAC3B,IAAI,IAAI;AACR,MAAM,IAAI,OAAO,GAAG,IAAI,CAAA;;AAExB,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAClC,QAAQ,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AACtC,OAAA;;AAEA,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE;AACpC,QAAQ,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAClC,OAAA;;AAEA,MAAM,OAAO,OAAO,CAAA;AACpB,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,IAAI,CAAA;AACjB,KAAA;AACA,GAAG,CAAA;AACH,EAAA;;AAEA,IAAA,SAAc,GAAGE,WAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YC5X1B,MAAM,GAAG,CAAC;AACV,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,KAAK,EAAE,GAAG,EAAE,GAAG,CAAA;AACvB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,MAAM,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AACxE,KAAA;AACA,GAAA;;AAEA,EAAE,IAAI,GAAG,UAAU,KAAK,EAAE;AAC1B,IAAI,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;AAC/B,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;AAC5C,MAAM,OAAO,CAAC,SAAS,EAAE,iBAAiB,GAAG,KAAK,EAAE,KAAK,CAAC,CAAA;AAC1D,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,GAAG,GAAG,KAAK,CAAA;AAClD,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;AACzB,MAAM,KAAK;AACX,QAAQ,GAAG;AACX,QAAQ,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1B,QAAQ,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1B,QAAQ,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1B,QAAQ,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1B,QAAQ,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1B,QAAQ,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;;AAE1B,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AAC7B,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAClB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAChB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;AAChB,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AAC7B,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAClB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAChB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;AAChB,IAAI,IAAI,IAAI,GAAG,CAAC,CAAA;AAChB,IAAI,IAAI,IAAI,GAAG,CAAC,CAAA;AAChB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAA;AACf,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;AACf,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;;AAEb,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,MAAM,IAAI,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,QAAQ,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;;AAE/D,MAAM,IAAI;AACV,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACzC,MAAM,IAAI;AACV,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACzC,MAAM,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAA;AAC3B,MAAM,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,EAAE;AAC9B,QAAQ,EAAE,GAAG,GAAG,CAAA;AAChB,QAAQ,EAAE,GAAG,CAAC,CAAA;AACd,OAAA;AACA,KAAA;;AAEA,IAAI,OAAO,EAAE,GAAG,CAAA;AAChB,QAAQ,CAAC,SAAS,EAAE,iBAAiB,GAAG,KAAK,EAAE,KAAK,CAAA;AACpD,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AAC3D,GAAG,CAAA;;AAEH;AACA;AACA,EAAE,GAAG,GAAG,UAAU,KAAK,EAAE;AACzB,IAAI,IAAI,GAAG,GAAG;AACd,MAAM,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;AAClD,MAAM,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;AAClD,MAAM,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;AAClD,KAAK,CAAA;AACL,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;AAChC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAClB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAChB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;;AAEhB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AACrC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AACrC,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,CAAA;AACrB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAA;;AAEvB,IAAI,CAAC,GAAG,CAAC,CAAA;AACT,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;;AAEjE,IAAI,CAAC,GAAG,CAAC,CAAA;AACT,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE;AACnB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAA;AACpD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAA;AACxD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAA;AACxD,MAAM,CAAC,IAAI,CAAC,CAAA;AACZ,KAAA;AACA,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;AACpE,GAAG,CAAA;;AAEH;AACA;AACA,EAAE,GAAG,GAAG,UAAU,KAAK,EAAE;AACzB,IAAI,OAAO;AACX,MAAM,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5C,MAAM,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5C,MAAM,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5C,KAAK,CAAA;AACL,GAAG,CAAA;;AAEH,EAAE,KAAK,GAAG;AACV,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,0BAA0B,CAAC;AAC1C,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAC;AACtC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AACnC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC;AACpC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AACnC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,2BAA2B,CAAC;AAC3C,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC;AACpC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AACnC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AACnC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AACnC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAC;AACtC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC;AACvC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC;AACvC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC;AACpC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC;AACrC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC;AACpC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AACnC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC;AACpC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAC;AACtC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AACnC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC;AACrC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AACnC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC;AACrC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,GAAG,CAAA;AACH,EAAA;;AAEA,IAAA,KAAc,GAAGC,KAAG;;;;;;;;ACtqDpB,MAAM,QAAQ,GAAG7C,YAA2B,CAAA;AAE5C,MAAM,SAAS,GAAGE,YAAqB,CAAA;AACvC,MAAM,iBAAE4C,eAAa,EAAE,GAAG3C,YAAyB,CAAA;AACnD,MAAM,GAAG,GAAGC,KAAgB,CAAA;;AAE5B,eAAe2C,2BAAyB,CAAC,GAAG,EAAE,WAAW,EAAE;AAC3D,EAAE,IAAI;AACN;AACA,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,GAAG;AACT,MAAM,IAAI,EAAE,WAAW;AACvB,KAAK,CAAA;;AAEL,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AACxB,IAAI,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AACtD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;;AAExC;AACA,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK;AACzC,MAAM,IAAI,CAAC,GAAG,EAAE;AAChB,QAAQ,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;AACrC,QAAQ,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAA;;AAE5C,QAAQD,eAAa,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;AAC7C,WAAW,IAAI,CAAC,CAAC,MAAM,KAAK;AAC5B,YAAY,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AAC/B,YAAY,MAAM,CAAC,GAAG,IAAI,GAAG,EAAE,CAAA;AAC/B,YAAY,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AAC1C,cAAc,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AACxC,cAAc,CAAC,CAAC,SAAS,GAAG,IAAI,CAAA;AAChC,cAAc,OAAO,CAAC,CAAA;AACtB,aAAa,CAAC,CAAA;AACd,YAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAC5B,WAAW,CAAA;AACX,WAAW,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;AAC7B,OAAA;AACA,KAAK,CAAC,CAAA;AACN,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAA;AACtB,GAAA;AACA,CAAA;;IAEA,KAAc,GAAG,6BAAEC,2BAAyB,EAAE;;AChD9C,MAAM,OAAEV,KAAG,EAAE,GAAGrC,YAAmB,CAAA;AACnC,IAAI0C,IAAE,GAAGzC,YAAa,CAAA;AACtB,MAAM8B,MAAI,GAAG7B,YAAe,CAAA;AAC5B,MAAMkB,QAAM,GAAGjB,QAAoB,CAAA;AACnC,MAAM,mBAAEgC,iBAAe,eAAEC,aAAW,EAAE,GAAGhC,IAAwB,CAAA;;AAEjE;AACA,MAAM,YAAY,GAAGC,YAAyB,CAAA;AAC9C,MAAM,SAAS,GAAGC,SAA6B,CAAA;AAC/C,MAAM,6BAAEyC,2BAAyB,EAAE,GAAGxC,KAAyB,CAAA;AAC/D,MAAM,KAAK,GAAG,UAAgB,CAAA;AAG9B,MAAMgC,SAAO,GAAG,WAAW,CAAA;;AAE3B,MAAMS,gBAAc,GAAG;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,oBAAoB,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,GAAG,UAAU,KAAK;AAC7E,IAAI,IAAI;AACR;AACA,MAAM,MAAM,QAAQ,GAAGjB,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQ,MAAM;AACd,QAAQ,UAAU;AAClB,OAAO,CAAA;;AAEP;AACA,MAAM,MAAM,YAAY,GAAGJ,iBAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;;AAExD,MAAM,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAA;;AAE9C,MAAM,GAAA;AACN,SAAS,MAAM,CAAC,QAAQ,CAAA;AACxB,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK;AAC1B,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACf,QAAM,CAAC,8BAA8B,EAAE;AACtE,YAAY,MAAM,EAAE,IAAI;AACxB,YAAY,MAAM;AAClB,YAAY,QAAQ;AACpB,WAAW,CAAC,CAAA;AACZ,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC;AACjB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,2BAA2B,EAAE;AACnE,YAAY,KAAK,EAAE,CAAC,CAAC,OAAO;AAC5B,WAAW,CAAC;AACZ,SAAS,CAAA;AACT,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,2BAA2B,EAAE;AAC/D,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,sBAAsB,EAAE,CAAC,GAAG,EAAE,UAAU,GAAG,EAAE,KAAK;AACpD,IAAI,IAAI;AACR,MAAM,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAA;AAC9C,MAAM,GAAA;AACN,SAAS,QAAQ,CAAC,QAAQ,CAAA;AAC1B,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK;AAC1B,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,gCAAgC,EAAE;AACxE,YAAY,MAAM,EAAE,IAAI;AACxB,YAAY,SAAS,EAAE,MAAM;AAC7B,WAAW,CAAC,CAAA;AACZ,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC;AACjB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,6BAA6B,EAAE;AACrE,YAAY,KAAK,EAAE,CAAC,CAAC,OAAO;AAC5B,WAAW,CAAC;AACZ,SAAS,CAAA;AACT,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,6BAA6B,EAAE;AACjE,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH,EAAE,iBAAiB,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,KAAK;AACnD,IAAI,IAAI;AACR,MAAM,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAA;AAC/B,MAAM,CAAC,CAAC,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAEA,QAAM,CAAC,iBAAiB,CAAA;AAC5E,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK;AACvB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,mBAAmB,EAAE;AAC3D,YAAY,OAAO,EAAE,IAAI;AACzB,YAAY,QAAQ;AACpB,YAAY,SAAS;AACrB,YAAY,KAAK,EAAE,GAAG;AACtB,WAAW,CAAC,CAAA;AACZ,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK;AACtB;AACA,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,gBAAgB,EAAE;AACxD,YAAY,KAAK,EAAE,CAAC,CAAC,OAAO;AAC5B,WAAW,CAAC,CAAA;AACZ,SAAS,CAAC,CAAA;AACV,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,gBAAgB,EAAE;AACpD,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH,EAAE,gBAAgB,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI,KAAK;AAC3D,IAAI,IAAI;AACR,MAAM,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;AACnE,MAAM,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAA;AAC/B,MAAM,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAEA,QAAM,CAAC,gBAAgB,CAAA;AAC5E,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK;AACvB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,kBAAkB,EAAE;AAC1D,YAAY,OAAO,EAAE,IAAI;AACzB,YAAY,QAAQ;AACpB,WAAW,CAAC,CAAA;AACZ,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK;AACtB;AACA,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,eAAe,EAAE;AACvD,YAAY,KAAK,EAAE,CAAC,CAAC,OAAO;AAC5B,WAAW,CAAC,CAAA;AACZ,SAAS,CAAC,CAAA;AACV,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AACxB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,eAAe,EAAE;AACnD,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,KAAK;AAC7C,IAAI,IAAI;AACR;AACA,MAAM,IAAI,SAAS,CAAA;AACnB,MAAM,IAAI;AACV,QAAQ,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;AAChC,OAAO,CAAC,MAAM;AACd,QAAQ,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;AAC/C,OAAA;AACA,MAAM,IAAI,SAAS,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC3C,QAAQ,MAAM,IAAI,KAAK;AACvB,UAAU,oCAAoC,GAAG,SAAS,CAAC,QAAQ;AACnE,SAAS,CAAA;AACT,OAAA;;AAEA;AACA,MAAM,MAAM,UAAU,GAAGW,MAAI,CAAC,IAAI,CAACM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAEE,SAAO,CAAC,CAAA;AACpE,MAAM,MAAM,gBAAgB,GAAGR,MAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;AACvD,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,UAAU,GAAGA,MAAI,CAAC,GAAG,CAAC,EAAE;AAC/D,QAAQ,MAAM,IAAI,KAAK;AACvB,UAAU,yDAAyD;AACnE,SAAS,CAAA;AACT,OAAA;;AAEA,MAAM,MAAM,WAAW,GAAGW,IAAE,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAA;;AAEhE,MAAM,KAAA;AACN,SAAS,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK;AAC5B,UAAU,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,KAAK;AACrC,YAAY,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AACpC,WAAW,CAAC,CAAA;;AAEZ,UAAU,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM;AAC/B,YAAY,GAAG,CAAC,WAAW,CAAC,IAAI,CAACtB,QAAM,CAAC,sBAAsB,EAAE;AAChE,cAAc,OAAO,EAAE,IAAI;AAC3B,cAAc,UAAU,EAAE,gBAAgB;AAC1C,aAAa,CAAC,CAAA;AACd,WAAW,CAAC,CAAA;AACZ,SAAS,CAAA;AACT,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;AAC9B,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,mBAAmB,EAAE;AAC3D,YAAY,KAAK,EAAE,GAAG,CAAC,OAAO;AAC9B,WAAW,CAAC,CAAA;AACZ,SAAS,CAAC,CAAA;AACV,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AACxB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,mBAAmB,EAAE;AACvD,QAAQ,KAAK,EAAE,KAAK,CAAC,OAAO;AAC5B,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,EAAE;AAClB,IAAI,GAAG;AACP,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,UAAU,GAAG,IAAI;AACrB,IAAI,WAAW,GAAG,IAAI;AACtB,OAAO;AACP,IAAI,IAAI;AACR,MAAM,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAA;AAC/B,MAAM,CAAC,CAAC,cAAc;AACtB,QAAQ,QAAQ;AAChB,QAAQ,OAAO;AACf,QAAQ,KAAK;AACb;AACA;AACA;AACA;AACA,OAAA;AACA,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK;AACvB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,yBAAyB,EAAE;AACjE,YAAY,OAAO,EAAE,IAAI;AACzB,YAAY,QAAQ;AACpB,YAAY,OAAO;AACnB,WAAW,CAAC,CAAA;AACZ,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK;AACtB,UAAU,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACxB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,sBAAsB,EAAE;AAC9D,YAAY,KAAK,EAAE,CAAC,CAAC,OAAO;AAC5B,WAAW,CAAC,CAAA;AACZ,SAAS,CAAC,CAAA;AACV,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,sBAAsB,EAAE;AAC1D,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,EAAE;AAClB,IAAI,GAAG;AACP,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,SAAS,GAAG,GAAG;AACnB,IAAI,WAAW,GAAG,IAAI;AACtB,IAAI,OAAO,GAAG,IAAI;AAClB,IAAI,KAAK,GAAG,IAAI;AAChB,OAAO;AACP,IAAI,IAAI;AACR,MAAM,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAA;AAC/B,MAAM,CAAC,CAAC,cAAc;AACtB,QAAQ,QAAQ;AAChB,QAAQ,OAAO;AACf,QAAQ,SAAS;AACjB,QAAQ,WAAW;AACnB,QAAQ,OAAO;AACf,QAAQ,GAAG;AACX,QAAQA,QAAM,CAAC,uBAAuB;AACtC,QAAQ,KAAK;AACb,OAAA;AACA,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK;AACvB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,yBAAyB,EAAE;AACjE,YAAY,OAAO,EAAE,IAAI;AACzB,YAAY,QAAQ;AACpB,YAAY,OAAO;AACnB,WAAW,CAAC,CAAA;AACZ,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK;AACtB,UAAU,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACxB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,sBAAsB,EAAE;AAC9D,YAAY,KAAK,EAAE,CAAC,CAAC,OAAO;AAC5B,WAAW,CAAC,CAAA;AACZ,SAAS,CAAC,CAAA;AACV,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,sBAAsB,EAAE;AAC1D,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAG,EAAE,KAAK;AACjE,IAAI,IAAI;AACR,MAAM,IAAI,IAAI,EAAE;AAChB;AACA,QAAQ,MAAM,UAAU,GAAGW,MAAI,CAAC,IAAI;AACpC,UAAUM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AACjC,UAAUE,SAAO;AACjB,UAAU,MAAM;AAChB,UAAU,QAAQ;AAClB,SAAS,CAAA;;AAET;;AAEA;AACA,QAAQ,IAAI,YAAY,GAAGJ,iBAAe,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;AACnE,QAAQ,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,EAAE,EAAE;AAC1D,UAAU,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;AACpD,SAAA;;AAEA;AACA,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;;AAEhC,QAAQ,IAAI,aAAa,GAAG,IAAI,CAAA;;AAEhC,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AAC7B;AACA,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;AACpD,YAAY,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;AAC9D,YAAY,iBAAiB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;AAC3C,YAAY,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA;AAC7D,YAAYC,aAAW,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;AAClD,WAAA;;AAEA,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;AACpD,YAAY,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;AAC9D,YAAY,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,CAAA;AACrD,YAAY,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA;AAC7D;AACA;AACA,YAAYA,aAAW,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;AAClD,WAAA;AACA,SAAS,MAAM;AACf;AACA,UAAU,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;AAC9C,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;AACpD,YAAYA,aAAW;AACvB,cAAc,UAAU;AACxB,cAAc,aAAa;AAC3B;AACA,aAAa,CAAA;AACb,WAAA;AACA,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;AACpD,YAAYA,aAAW;AACvB,cAAc,UAAU;AACxB,cAAc,aAAa;AAC3B;AACA,aAAa,CAAA;AACb,WAAA;AACA,SAAA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,GAAG,CAAC,WAAW,CAAC,IAAI,CAAChB,QAAM,CAAC,0BAA0B,EAAE;AAChE,UAAU,OAAO,EAAE,IAAI;AACvB,UAAU,QAAQ,EAAE,UAAU;AAC9B,UAAU,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;AACjD,SAAS,CAAC,CAAA;AACV,OAAA;AACA,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACpB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,uBAAuB,EAAE;AAC3D,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,QAAQ,EAAE,QAAQ;AAC1B,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,GAAG,EAAE,KAAK;AACvD,IAAI,IAAI;AACR,MAAM,IAAI,QAAQ,EAAE;AACpB;AACA,QAAQ,MAAM,YAAY,GAAGW,MAAI,CAAC,IAAI;AACtC,UAAUM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AACjC,UAAUE,SAAO;AACjB,UAAU,MAAM;AAChB,UAAU,QAAQ;AAClB,SAAS,CAAA;AACT,QAAQ,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,YAAY,EAAE,aAAa,CAAC,CAAA;AACtE;AACA,QAAQ,MAAM,YAAY,GAAGJ,iBAAe,CAAC,YAAY,EAAE,aAAa,CAAC,CAAA;;AAEzE,QAAQ,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,YAAY,EAAE,YAAY,CAAC,CAAA;;AAEjE,QAAQ,GAAG,CAAC,WAAW,CAAC,IAAI,CAACf,QAAM,CAAC,4BAA4B,EAAE;AAClE,UAAU,MAAM,EAAE,IAAI;AACtB,UAAU,QAAQ,EAAE,YAAY;AAChC,UAAU,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AAC5C,SAAS,CAAC,CAAA;AACV,OAAA;AACA,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,yBAAyB,EAAE;AAC7D,QAAQ,MAAM,EAAE,KAAK;AACrB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,EAAE;AACjB,IAAI,GAAG;AACP,IAAI,QAAQ;AACZ,IAAI,WAAW;AACf,IAAI,mBAAmB;AACvB,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC;AAC9B,OAAO;AACP,IAAI,IAAI;AACR,MAAM,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAA;AAC/B,MAAM,CAAC,CAAC,mBAAmB;AAC3B,QAAQ,GAAG;AACX,QAAQ,QAAQ;AAChB,QAAQ,WAAW;AACnB,QAAQ,mBAAmB;AAC3B,QAAQ,IAAI;AACZ,QAAQA,QAAM,CAAC,qBAAqB;AACpC,OAAA;AACA,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK;AAC1B,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,uBAAuB,EAAE;AAC/D,YAAY,MAAM,EAAE,IAAI;AACxB,YAAY,QAAQ,EAAE,QAAQ;AAC9B,YAAY,UAAU,EAAE,WAAW;AACnC,WAAW,CAAC,CAAA;AACZ,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK;AACtB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,oBAAoB,EAAE;AAC5D,YAAY,MAAM,EAAE,KAAK;AACzB,YAAY,OAAO,EAAE,CAAC,CAAC,OAAO;AAC9B,WAAW,CAAC,CAAA;AACZ,SAAS,CAAC,CAAA;AACV,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,oBAAoB,EAAE;AACxD,QAAQ,MAAM,EAAE,KAAK;AACrB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH,EAAE,yBAAyB,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK;AAC3C,IAAI,IAAI;AACR,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AACtB,MAAM,MAAM,aAAa,GAAG,MAAM,CAAA;AAClC,MAAM,MAAM,QAAQ,GAAGW,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,wBAAwB;AAChC,QAAQ,MAAM;AACd,QAAQ,cAAc,GAAG,aAAa;AACtC,OAAO,CAAA;;AAEP,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;;AAEvC,MAAMQ,2BAAyB,CAAC,GAAG,EAAE,QAAQ,CAAA;AAC7C,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AAC7C,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AACrC,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACpB,KAAA;AACA,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,gBAAc,GAAGC,gBAAc;;;;;;AC/d/B,MAAM,OAAEX,KAAG,EAAE,GAAGrC,YAAmB,CAAA;AACnC,MAAM+B,MAAI,GAAG9B,YAAe,CAAA;AAC5B,MAAMyC,IAAE,GAAGxC,YAAa,CAAA;AAExB,MAAM,mBAAEiC,iBAAe,eAAEC,aAAW,EAAE,GAAGhC,IAAwB,CAAA;;AAEjE,MAAMkC,gBAAc,GAAG,eAAe,CAAA;AACtC,MAAMC,SAAO,GAAG,WAAW,CAAA;;AAE3B;AACA,SAAS,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE;AAC5C,EAAE,IAAI,CAACG,IAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;AACnC,IAAIA,IAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AAClD,GAAA;;AAEA,EAAE,MAAM,KAAK,GAAGA,IAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;AACtC,EAAE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAC5B,IAAI,MAAM,OAAO,GAAGX,MAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAC3C,IAAI,MAAM,QAAQ,GAAGA,MAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;AACjD,IAAI,MAAM,IAAI,GAAGW,IAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;;AAEtC;AACA,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AAC/B,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,uCAAuC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;AACvE,MAAM,SAAA;AACN,KAAA;;AAEA,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AAC5B,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AACtC,KAAK,MAAM;AACX,MAAMA,IAAE,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AACxC,KAAA;AACA,GAAA;AACA,CAAA;;AAEA,MAAMO,oBAAkB,GAAG;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,0BAA0B,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK;AAC7C,IAAI,IAAI;AACR,MAAM,IAAI,IAAI,EAAE;AAChB;AACA,QAAQ,MAAM,QAAQ,GAAGlB,MAAI,CAAC,IAAI;AAClC,UAAUM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AACjC,UAAUE,SAAO;AACjB,UAAUD,gBAAc;AACxB,SAAS,CAAA;AACT,QAAQF,aAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAC5D,QAAQ,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;AACvE;AACA,QAAQ,OAAO;AACf,UAAU,OAAO,EAAE,IAAI;AACvB,UAAU,QAAQ,EAAE,IAAI;AACxB,SAAS,CAAA;AACT,OAAO,MAAM;AACb,QAAQ,OAAO;AACf,UAAU,KAAK,EAAE,IAAI;AACrB,UAAU,OAAO,EAAE,2BAA2B;AAC9C,SAAS,CAAA;AACT,OAAA;AACA,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,CAAC,CAAC,CAAA;AACrE,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,yBAAyB,EAAE,CAAC,GAAG,KAAK;AACtC,IAAI,IAAI;AACR;AACA,MAAM,MAAM,QAAQ,GAAGL,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP;AACA,MAAM,MAAM,YAAY,GAAGH,iBAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;AACxD,MAAM,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAA;AACtE;AACA,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,QAAQ,EAAE,YAAY;AAC9B,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,CAAC,CAAC,CAAA;AACtE,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,QAAQ,QAAQ,EAAE,EAAE;AACpB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,gBAAgB,EAAE,CAAC,GAAG,KAAK;AAC7B,IAAI,IAAI;AACR,MAAM,MAAM,YAAY,GAAGJ,MAAI,CAAC,IAAI;AACpC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,QAAQ,GAAGH,iBAAe,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;AACxD,MAAM,MAAM,WAAW;AACvB,QAAQ,QAAQ,CAAC,iBAAiB;AAClC,QAAQJ,MAAI,CAAC,IAAI,CAACM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAEE,SAAO,CAAC,CAAA;;AAEnD,MAAM,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAA;AAC/E;AACA,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,aAAa,EAAE,WAAW;AAClC,QAAQ,SAAS,EAAE,CAAC,QAAQ,CAAC,iBAAiB;AAC9C,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,oDAAoD,EAAE,CAAC,CAAC,CAAA;AAC5E,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,gBAAgB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK;AACtC,IAAI,IAAI;AACR;AACA,MAAM,IAAI,CAACG,IAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AACnC,QAAQA,IAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AAClD,OAAA;;AAEA,MAAM,MAAM,KAAK,GAAGA,IAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;AACxC,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE;AAChC,QAAQ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;AAClD,OAAA;;AAEA;AACA,MAAM,MAAM,YAAY,GAAGX,MAAI,CAAC,IAAI;AACpC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,QAAQ,GAAGH,iBAAe,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;AACxD,MAAM,QAAQ,CAAC,iBAAiB,GAAG,OAAO,CAAA;AAC1C,MAAMC,aAAW,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;;AAElE,MAAM,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAA;AACzE;AACA,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,aAAa,EAAE,OAAO;AAC9B,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,oDAAoD,EAAE,CAAC,CAAC,CAAA;AAC5E,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,oBAAoB,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,KAAK;AACnD,IAAI,IAAI;AACR;AACA,MAAM,MAAM,eAAe,GAAGL,MAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AACnD,MAAM,MAAM,eAAe,GAAGA,MAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;;AAEnD;AACA,MAAM,MAAM,iBAAiB,GAAGA,MAAI,CAAC,IAAI;AACzC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,eAAe,GAAGH,iBAAe,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAA;AACpE,MAAM,MAAM,cAAc;AAC1B,QAAQ,eAAe,CAAC,iBAAiB;AACzC,QAAQJ,MAAI,CAAC,IAAI,CAACM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAEE,SAAO,CAAC,CAAA;AACnD,MAAM,IAAI,eAAe,KAAKR,MAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;AAC5D,QAAQ,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;AACzE,OAAA;;AAEA;AACA,MAAM,MAAM,eAAe,GAAG;AAC9B,QAAQ,SAAS;AACjB,QAAQ,MAAM;AACd,QAAQ,MAAM;AACd,QAAQ,MAAM;AACd,QAAQ,MAAM;AACd,QAAQ,OAAO;AACf,QAAQ,MAAM;AACd,OAAO,CAAA;AACP,MAAM,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE;AAC5C,QAAQ;AACR,UAAU,eAAe,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC;AAClD,UAAU,eAAe,KAAK,MAAA;AAC9B,UAAU;AACV,UAAU,MAAM,IAAI,KAAK,CAAC,wCAAwC,GAAG,MAAM,CAAC,CAAA;AAC5E,SAAA;AACA,OAAA;;AAEA;AACA,MAAM,IAAI,CAACW,IAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;AAC3C,QAAQ,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;AAC1D,OAAA;;AAEA,MAAM,IAAI,CAACA,IAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;AAC3C,QAAQA,IAAE,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AAC1D,OAAA;;AAEA;AACA,MAAM,aAAa,CAAC,eAAe,EAAE,eAAe,CAAC,CAAA;;AAErD;AACA,MAAM,MAAM,YAAY,GAAGX,MAAI,CAAC,IAAI;AACpC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,QAAQ,GAAGH,iBAAe,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;AACxD,MAAM,QAAQ,CAAC,iBAAiB,GAAG,eAAe,CAAA;AAClD,MAAMC,aAAW,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;;AAElE,MAAM,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAA;AAC9E;AACA,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,YAAY,EAAE,eAAe;AACrC,QAAQ,YAAY,EAAE,eAAe;AACrC,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,sDAAsD,EAAE,CAAC,CAAC,CAAA;AAC9E,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,OAAO,CAAA;AACP,KAAA;AACA,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,oBAAc,GAAGa,oBAAkB;;;;;;;;;;;;;;;;;;;;AC7PnC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;AACxB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;;AAE3B,SAAS,UAAU,CAAC,GAAG,EAAE;AACzB,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;AAC1D,EAAE,IAAI,IAAI,GAAG,IAAI,CAAA;AACjB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAA;AAChE,GAAA;AACA,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;AAC1B,CAAA;;AAEA,MAAMC,eAAa,GAAG;AACtB,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,EAAE;AACxC,IAAI,MAAM,EAAE,GAAG,GAAG,KAAK,EAAE,YAAY,GAAG,KAAK,EAAE,GAAG,OAAO,CAAA;;AAEzD,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACzC,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAClC,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE;AACpD,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;AACjD,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAA;AACzB,OAAA;AACA,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AACvB,KAAA;;AAEA,IAAI,IAAI,CAAC,YAAY,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC5C,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;AACjD,MAAM,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAC9B,KAAA;;AAEA,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;AAC9C,IAAI,MAAM,OAAO,GAAG,OAAO,EAAE,CAAA;AAC7B,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AAC9B,IAAI,IAAI;AACR,MAAM,MAAM,IAAI,GAAG,MAAM,OAAO,CAAA;AAChC,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAC/B,QAAQ,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;AAC5D,OAAA;AACA,MAAM,OAAO,IAAI,CAAA;AACjB,KAAK,SAAS;AACd,MAAM,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAC1B,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,CAAC,WAAW,EAAE,OAAO,EAAE;AACtC,IAAI,OAAO,OAAO,CAAC,EAAE,GAAG,KAAK;AAC7B,MAAM,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,GAAG,GAAG,IAAI,EAAE,CAAA;AACpE,MAAM,IAAI,QAAQ,EAAE;AACpB,QAAQ,MAAM,GAAG;AACjB,UAAU,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EAAE,GAAG,IAAI,KAAK,CAAA;AAC1E,QAAQ,MAAM,GAAG,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC1D,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE;AACvD,UAAU,GAAG;AACb,UAAU,YAAY;AACtB,SAAS,CAAC,CAAA;AACV,OAAA;AACA,MAAM,OAAO,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAC5B,KAAK,CAAA;AACL,GAAG;;AAEH,EAAE,UAAU,CAAC,GAAG,EAAE;AAClB,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AACrB,GAAG;;AAEH,EAAE,gBAAgB,CAAC,MAAM,EAAE;AAC3B,IAAI,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE;AAClC,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC/C,KAAA;AACA,GAAG;;AAEH,EAAE,KAAK,GAAG;AACV,IAAI,KAAK,CAAC,KAAK,EAAE,CAAA;AACjB,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAA;AACpB,GAAG;;AAEH,EAAE,KAAK,GAAG;AACV,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK,CAAC,IAAI;AACzB,MAAM,QAAQ,EAAE,QAAQ,CAAC,IAAI;AAC7B,MAAM,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;AAC7B,KAAK,CAAA;AACL,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,eAAc,GAAGA,eAAa;;;;;;;;;;;;;;;;;CC1G9B,MAAM,kBAAkB,GAAGlD,yBAA2C,EAAA,CAAA;;AAEtE,CAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;AAC1B,CAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;AAC5B,CAAA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;AACjC,CAAA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;;AAEjC,CAAA,MAAM,WAAW,GAAG;AACpB,GAAE,eAAe,CAAC,YAAY,EAAE,SAAS,EAAE;AAC3C,KAAI,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;IACvC;;GAED,MAAM,SAAS,CAAC,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AACrD;AACA,KAAI,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;AACnC,OAAM,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;AACtC,MAAA;;AAEA;AACA,KAAI,IAAI,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;AAC1C,OAAM,OAAO,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;AAC7C,MAAA;;AAEA,KAAI,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;AACpE,KAAI,cAAc,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;AAC7C,KAAI,IAAI;OACF,OAAO,MAAM,OAAO,CAAA;AAC1B,MAAK,SAAS;AACd,OAAM,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;AACzC,MAAA;IACG;;GAED,MAAM,QAAQ,CAAC,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AACpD,KAAI,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;AAC5E,KAAI,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;;AAErD,KAAI,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAA;KAC3B,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;KAC5C,IAAI,CAAC,OAAO,EAAE;AAClB,OAAM,MAAM,IAAI,KAAK,CAAC,CAAC,4BAA4B,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACrE,MAAA;;KAEI,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;AAChD,KAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;AACrC,KAAI,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;KAC5D,OAAO,CAAC,GAAG;AACf,OAAM,CAAC,sBAAsB,EAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;MACvF,CAAA;AACL,KAAI,OAAO,MAAM,CAAA;IACd;;AAEH,GAAE,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE;KAC9B,MAAM,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAA;KAC5C,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;KAC1C,IAAI,IAAI,EAAE;AACd,OAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AAC1B,OAAM,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;OAChC,OAAO,CAAC,GAAG;AACjB,SAAQ,CAAC,0BAA0B,EAAE,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3E,CAAA;AACP,MAAA;IACG;;AAEH,GAAE,aAAa,GAAG;AAClB,KAAI,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAA;KAC1B,OAAO,CAAC,KAAK,EAAE,CAAA;KACf,cAAc,CAAC,KAAK,EAAE,CAAA;KACtB,cAAc,CAAC,KAAK,EAAE,CAAA;KACtB,OAAO,CAAC,GAAG,CAAC,CAAC,+BAA+B,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAA;IACxE;;AAEH,GAAE,KAAK,GAAG;KACN,OAAO,CAAC,KAAK,EAAE,CAAA;KACf,cAAc,CAAC,KAAK,EAAE,CAAA;KACtB,cAAc,CAAC,KAAK,EAAE,CAAA;IACvB;;AAEH;AACA;AACA;AACA;AACA,GAAE,kBAAkB,GAAG;AACvB,KAAI,MAAM,EAAE,OAAO,EAAE,GAAGC,YAAmB,CAAA;KACvC,MAAM,aAAa,GAAGC,eAA0B,CAAA;;KAEhD,OAAO,CAAC,MAAM;AAClB,OAAM,yBAAyB;OACzB,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK;AAC5C,SAAQ,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;AACnD,SAAQ,aAAa,CAAC,KAAK,EAAE,CAAC;AAC9B,SAAQ,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QACzB;MACF,CAAA;AACL,KAAI,OAAO,CAAC,MAAM,CAAC,6BAA6B,EAAE,YAAY;OACxD,WAAW,CAAC,aAAa,EAAE,CAAA;OAC3B,aAAa,CAAC,KAAK,EAAE,CAAA;AAC3B,OAAM,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC9B,MAAK,CAAC,CAAA;AACN,KAAI,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,YAAY;OACjD,aAAa,CAAC,KAAK,EAAE,CAAA;AAC3B,OAAM,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC9B,MAAK,CAAC,CAAA;KACF,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,YAAY,aAAa,CAAC,KAAK,EAAE,CAAC,CAAA;IAC1E;EACF,CAAA;;AAED,CAAA,aAAc,GAAG,WAAW,CAAA;;;;;;;;;;;;;;;;;AC7G5B,CAAA,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,GAAGF,YAAmB,CAAA;CAChD,MAAM,IAAI,GAAGC,YAAe,CAAA;CAC5B,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,GAAGC,YAAa,CAAA;CACjE,MAAM;AACN,GAAE,wBAAwB;AAC1B,GAAE,eAAe;AACjB,GAAE,WAAW;AACb,EAAC,GAAGC,IAAwB,CAAA;;CAE5B,MAAM,OAAO,GAAG,WAAW,CAAA;CAC3B,MAAM,cAAc,GAAG,gBAAgB,CAAA;;AAEvC,CAAA,MAAM,kBAAkB,GAAG;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,YAAY,EAAE;AAChB,KAAI,GAAG;AACP,KAAI,KAAK;AACT,KAAI,YAAY;AAChB,KAAI,YAAY;AAChB,KAAI,WAAW;KACX,aAAa,GAAG,YAAY;KAC5B,SAAS,GAAG,IAAI;KAChB,YAAY,GAAG,IAAI;QAChB;AACP,KAAI,IAAI;AACR;AACA,OAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI;AAChC,SAAQ,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,SAAQ,OAAO;AACf,SAAQ,KAAK;AACb,SAAQ,cAAc;QACf,CAAA;;AAEP;OACM,wBAAwB,CAAC,QAAQ,CAAC,CAAA;;AAExC;OACM,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;;AAErD;OACM,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;OACnD,MAAM,oBAAoB,GAAG,WAAW,CAAC,aAAa,CAAC,eAAe,CAAC,CAAA;;AAE7E;OACM,MAAM,aAAa,GAAG;SACpB,IAAI,EAAE,YAAY;AAC1B,SAAQ,aAAa,EAAE,aAAa,IAAI,YAAY;AACpD,SAAQ,WAAW,EAAE,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC5D,SAAQ,WAAW;AACnB,WAAU,SAAS,CAAC,YAAY,CAAC,EAAE,WAAW,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AAC1E,SAAQ,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACtC,CAAA;;AAEP;AACA,OAAM,IAAI,aAAa,KAAK,KAAK,IAAI,SAAS,EAAE;AAChD,SAAQ,aAAa,CAAC,SAAS,GAAG,SAAS,CAAA;AAC3C,QAAA;;AAEA;AACA,OAAM,IAAI,aAAa,KAAK,KAAK,IAAI,YAAY,EAAE;AACnD,SAAQ,aAAa,CAAC,YAAY,GAAG,YAAY,CAAA;AACjD,QAAA;;AAEA,OAAM,SAAS,CAAC,YAAY,CAAC,GAAG,aAAa,CAAA;;AAE7C;AACA,OAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;SAC1D,IAAI,EAAE,KAAK;AACnB,QAAO,CAAC,CAAA;;OAEF,OAAO,CAAC,GAAG;AACjB,SAAQ,CAAC,qCAAqC,EAAE,YAAY,CAAC,EAAE,EAAE,YAAY,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;QAC3F,CAAA;;AAEP;OACM,MAAM,WAAW,GAAGC,kBAA+B,EAAA,CAAA;AACzD,OAAM,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;;AAEjD;AACA,OAAM,OAAO;SACL,OAAO,EAAE,IAAI;AACrB,SAAQ,YAAY;AACpB,SAAQ,YAAY;AACpB,SAAQ,aAAa;QACd,CAAA;MACF,CAAC,OAAO,KAAK,EAAE;AACpB,OAAM,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAA;AACzE,OAAM,OAAO;SACL,KAAK,EAAE,IAAI;AACnB,SAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;QACvB,CAAA;AACP,MAAA;IACG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,aAAa,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AACjC,KAAI,IAAI;AACR,OAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI;AAChC,SAAQ,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,SAAQ,OAAO;AACf,SAAQ,KAAK;AACb,SAAQ,cAAc;QACf,CAAA;;AAEP;OACM,MAAM,aAAa,GAAG,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;;AAEzD;OACM,IAAI,OAAO,GAAG,EAAE,CAAA;AACtB,OAAM,IAAI;AACV,SAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI;AACrC,WAAU,SAAS;AACnB,WAAU,IAAI;AACd,WAAU,KAAK;AACf,WAAU,uBAAuB;UACxB,CAAA;AACT,SAAQ,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE;AACrC,WAAU,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;AAC5E,WAAU,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,EAAE,CAAA;AAC7C,UAAA;QACO,CAAC,OAAO,CAAC,EAAE;AAClB;AACA,QAAA;;AAEA;OACM,MAAM,kBAAkB,GAAG,EAAE,CAAA;AACnC,OAAM,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK;AAC9D,SAAQ,IAAI;AACZ,WAAU,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;WACjE,MAAM,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAA;WAClE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;;WAE7C,MAAM,QAAQ,GAAG;AAC3B,aAAY,IAAI;AAChB,aAAY,IAAI,EAAE,IAAI,CAAC,IAAI;AAC3B,aAAY,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,YAAY;AAC7D,aAAY,WAAW;AACvB,aAAY,WAAW,EAAE,IAAI,CAAC,WAAW;AACzC,aAAY,WAAW,EAAE,IAAI,CAAC,WAAW;YAC9B,CAAA;;AAEX;AACA,WAAU,IAAI,IAAI,CAAC,SAAS,EAAE;AAC9B,aAAY,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;;AAE/C;AACA;AACA;aACY,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE;AAC1D,eAAc,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI;iBAC/B,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI;gBAClC,CAAA;AACf,eAAc,IAAI,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE;AACxD,iBAAgB,QAAQ,CAAC,SAAS,CAAC,WAAW;AAC9C,mBAAkB,YAAY,CAAC,SAAS,CAAC,WAAW,CAAA;AACpD,gBAAA;AACA,cAAA;AACA,YAAA;;AAEA;AACA,WAAU,IAAI,IAAI,CAAC,YAAY,EAAE;AACjC,aAAY,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;AACrD,YAAA;;AAEA,WAAU,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;UAClC,CAAC,OAAO,YAAY,EAAE;WACrB,OAAO,CAAC,KAAK;AACvB,aAAY,CAAC,gDAAgD,EAAE,IAAI,CAAC,CAAC,CAAC;AACtE,aAAY,YAAY;YACb,CAAA;AACX;AACA,UAAA;AACA,QAAO,CAAC,CAAA;;OAEF,OAAO,CAAC,GAAG;SACT,CAAC,4BAA4B,EAAE,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC;QACrE,CAAA;;AAEP;AACA,OAAM,OAAO;SACL,SAAS,EAAE,kBAAkB;QAC9B,CAAA;MACF,CAAC,OAAO,KAAK,EAAE;AACpB,OAAM,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAA;AAC3E,OAAM,OAAO;SACL,KAAK,EAAE,IAAI;AACnB,SAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;SACtB,SAAS,EAAE,EAAE;QACd,CAAA;AACP,MAAA;IACG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,WAAW,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,KAAK;AAC7C,KAAI,IAAI;AACR,OAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI;AAChC,SAAQ,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,SAAQ,OAAO;AACf,SAAQ,KAAK;AACb,SAAQ,cAAc;QACf,CAAA;;AAEP;OACM,MAAM,aAAa,GAAG,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;;AAEzD;AACA,OAAM,MAAM,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC,CAAA;OAChD,IAAI,CAAC,YAAY,EAAE;SACjB,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;AAC9D,QAAA;;AAEA,OAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;OACzE,MAAM,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAA;OAClE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;;OAE7C,MAAM,QAAQ,GAAG;SACf,IAAI,EAAE,YAAY;AAC1B,SAAQ,IAAI,EAAE,YAAY,CAAC,IAAI;AAC/B,SAAQ,aAAa,EAAE,YAAY,CAAC,aAAa,IAAI,YAAY;AACjE,SAAQ,WAAW;AACnB,SAAQ,WAAW,EAAE,YAAY,CAAC,WAAW;AAC7C,SAAQ,WAAW,EAAE,YAAY,CAAC,WAAW;QACtC,CAAA;;AAEP;AACA,OAAM,IAAI,YAAY,CAAC,SAAS,EAAE;AAClC,SAAQ,QAAQ,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;AACnD,QAAA;;AAEA;AACA,OAAM,IAAI,YAAY,CAAC,YAAY,EAAE;AACrC,SAAQ,QAAQ,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAA;AACzD,QAAA;;OAEM,OAAO,CAAC,GAAG,CAAC,CAAC,yCAAyC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;;AAE7E;AACA,OAAM,OAAO;AACb,SAAQ,QAAQ;QACT,CAAA;MACF,CAAC,OAAO,KAAK,EAAE;AACpB,OAAM,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAA;AAC1E,OAAM,OAAO;SACL,KAAK,EAAE,IAAI;AACnB,SAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;QACvB,CAAA;AACP,MAAA;IACG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,cAAc,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,KAAK;AAChD,KAAI,IAAI;AACR,OAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI;AAChC,SAAQ,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,SAAQ,OAAO;AACf,SAAQ,KAAK;AACb,SAAQ,cAAc;QACf,CAAA;;AAEP;OACM,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;;AAErD;OACM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;SAC3C,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;AAC9D,QAAA;;AAEA,OAAM,OAAO,SAAS,CAAC,YAAY,CAAC,CAAA;;AAEpC;AACA,OAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;SAC1D,IAAI,EAAE,KAAK;AACnB,QAAO,CAAC,CAAA;;OAEF,OAAO,CAAC,GAAG,CAAC,CAAC,uCAAuC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;;AAE3E;OACM,MAAM,WAAW,GAAGA,kBAA+B,EAAA,CAAA;AACzD,OAAM,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;;AAEjD;AACA,OAAM,OAAO;SACL,OAAO,EAAE,IAAI;AACrB,SAAQ,YAAY;QACb,CAAA;MACF,CAAC,OAAO,KAAK,EAAE;AACpB,OAAM,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAA;AAC3E,OAAM,OAAO;SACL,KAAK,EAAE,IAAI;AACnB,SAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;QACvB,CAAA;AACP,MAAA;IACG;EACF,CAAA;;AAED,CAAA,oBAAc,GAAG,kBAAkB,CAAA;;;;AC7UnC,MAAM,OAAEiC,KAAG,EAAE,GAAGrC,YAAmB,CAAA;AACnC,MAAM+B,MAAI,GAAG9B,YAAe,CAAA;AAC5B,MAAM,iBAAE+B,eAAa,EAAE,GAAG9B,YAAa,CAAA;AACvC,MAAMkB,QAAM,GAAGjB,QAAoB,CAAA;AACnC,MAAM,mBAAEgC,iBAAe,EAAE,GAAG/B,IAAwB,CAAA;;AAEpD,MAAMkC,gBAAc,GAAG,cAAc,CAAA;AACrC,MAAMC,SAAO,GAAG,WAAW,CAAA;;AAE3B,MAAMY,kBAAgB,GAAG;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,wBAAwB,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,KAAK;AAC1D,IAAI,IAAI;AACR;AACA,MAAM,MAAM,QAAQ,GAAGpB,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,YAAY,GAAGH,iBAAe,CAAC,QAAQ,CAAC,CAAA;;AAEpD;AACA,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;;AAErC;AACA,MAAMH,eAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;;AAEpE;AACA,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACZ,QAAM,CAAC,oBAAoB,EAAE;AACxD,QAAQ,OAAO,EAAE,YAAY;AAC7B,OAAO,CAAC,CAAA;AACR,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,iBAAiB,EAAE;AACrD,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,yBAAyB,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAC7C,IAAI,IAAI;AACR,MAAM,MAAM,QAAQ,GAAGW,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,YAAY,GAAGH,iBAAe,CAAC,QAAQ,CAAC,CAAA;AACpD,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACf,QAAM,CAAC,oBAAoB,EAAE;AACxD,QAAQ,OAAO,EAAE,YAAY;AAC7B,OAAO,CAAC,CAAA;AACR,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,oBAAoB,EAAE;AACxD,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,kBAAc,GAAG+B,kBAAgB;;;;;;;;;;;;;;;;;AC7DjC,MAAM,EAAE,MAAM,EAAE,GAAGnD,YAAoD,CAAA;AACvE,MAAM;AACN,EAAE,oBAAoB;AACtB,CAAC,GAAGC,YAAoD,CAAA;AACxD,MAAM;AACN,EAAE,6BAA6B;AAC/B,CAAC,GAAGC,YAA6D,CAAA;AACjE,MAAM6B,MAAI,GAAG5B,YAAe,CAAA;AAC5B,MAAMuC,IAAE,GAAGtC,YAAa,CAAA;;AAExB;AACA;AACA;AACA,IAAIgD,YAAU,GAAG,IAAI,CAAA;;AAErB;AACA;AACA;AACA;AACA,SAAS,uBAAuB,CAAC,YAAY,EAAE;AAC/C,EAAE,OAAO,YAAY,IAAI,EAAE,IAAI,YAAY,IAAI,EAAE,CAAA;AACjD,CAAA;;AAEA;AACA;AACA;AACA,SAAS,cAAc,CAAC,SAAS,EAAE;AACnC,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,KAAK,CAAA;AAC9B,EAAE;AACF,IAAI,SAAS,CAAC,QAAQ,CAAC,+BAA+B,CAAC;AACvD,IAAI,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAA;AAC7C,IAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,cAAY,GAAG;AACxB,EAAE,IAAID,YAAU,KAAK,IAAI,EAAE,OAAOA,YAAU,CAAA;;AAE5C,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG/C,YAAwB,CAAA;AAC/C,EAAE,MAAM,YAAY,GAAG,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAA;;AAE9D;AACA,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;AACrC,EAAE,IAAI,gBAAgB,GAAG,IAAI,CAAA;AAC7B,EAAE,IAAI,IAAI,EAAE;AACZ,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;AAC3C,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAA;AAC9C,IAAI,IAAI;AACR,MAAM,MAAM,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAA;AACjD,MAAM,MAAM,QAAQ,GAAGqC,IAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;AACpD,MAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B;AACA,QAAQ,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACvD,UAAU,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;AACpD,UAAU,IAAI,KAAK,IAAI,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACxE,YAAY,gBAAgB,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AAC7D,YAAY,MAAA;AACZ,WAAA;AACA,SAAA;AACA;AACA,QAAQ,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AAC3E,OAAA;AACA,KAAK,CAAC,MAAM,EAAA;AACZ,GAAA;;AAEA,EAAE,IAAI;AACN,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,WAAW,CAAA;AAClD,IAAI,MAAM,MAAM,GAAG,eAAe,CAAA;AAClC,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE;AAC3E,MAAM,QAAQ,EAAE,MAAM;AACtB,MAAM,OAAO,EAAE,IAAI;AACnB,KAAK,CAAC,CAAA;AACN;AACA,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;AACxC,IAAI,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;AAC1C,IAAI,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,MAAM,GAAG,QAAQ,EAAE;AAC9C,MAAMU,YAAU,GAAG,GAAA;AACnB,SAAS,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAA;AACnD,SAAS,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;AAC/B,KAAK,MAAM;AACX,MAAMA,YAAU,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;AACzC,KAAA;AACA,GAAG,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,OAAO,CAAC,IAAI,CAAC,+CAA+C,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;AAC9E,IAAIA,YAAU,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;AACvC,GAAA;;AAEA;AACA,EAAE,MAAM,YAAY,GAAGA,YAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAC5C,EAAE,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE;AAClC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACrC,MAAMA,YAAU,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;AAC7B,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,IAAI,gBAAgB,EAAE;AACxB,IAAI,IAAI;AACR,MAAM,MAAM,WAAW,GAAG,QAAQ;AAClC,QAAQ,CAAC,MAAM,EAAEA,YAAU,CAAC,4BAA4B,CAAC;AACzD,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;AAC3C,OAAO,CAAC,IAAI,EAAE,CAAA;AACd,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;AACrD,MAAM,IAAI,UAAU,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC/E,QAAQ,OAAO,CAAC,GAAG;AACnB,UAAU,CAAC,+BAA+B,EAAE,WAAW,CAAC,iBAAiB,CAAC;AAC1E,YAAY,CAAC,gCAAgC,EAAE,gBAAgB,CAAC,CAAC;AACjE,SAAS,CAAA;AACT,QAAQA,YAAU,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAEA,YAAU,CAAC,CAAC,CAAA;AACxD,OAAA;AACA,KAAK,CAAC,MAAM,EAAA;AACZ,GAAA;;AAEA,EAAE,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAEA,YAAU,CAAC,CAAA;AAC3D,EAAE,OAAOA,YAAU,CAAA;AACnB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS,uBAAuB,GAAG;AACnC,EAAE,MAAM,GAAG,GAAG,EAAE,CAAA;AAChB,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAC1D,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,SAAA;AAC/D,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AACpB,GAAA;AACA,EAAE,GAAG,CAAC,IAAI,GAAGC,cAAY,EAAE,CAAA;AAC3B,EAAE,OAAO,GAAG,CAAA;AACZ,CAAA;;AAEA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,CAAA;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,CAAA;;AAE/B;AACA;AACA;AACA,MAAM,MAAM,GAAG;AACf,EAAE,YAAY,EAAE,cAAc;AAC9B,EAAE,UAAU,EAAE,YAAY;AAC1B,EAAE,SAAS,EAAE,WAAW;AACxB,EAAE,KAAK,EAAE,OAAO;AAChB,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE;AAC5C,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW,EAAE,OAAO,QAAQ,CAAA;AAChD,EAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK;AAC5D,IAAI,OAAO,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AACpE,GAAG,CAAC,CAAA;AACJ,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uBAAuB,CAAC,YAAY,EAAE;AACrD,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;AACrC,EAAE,MAAM,QAAQ,GAAG,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AACnE,EAAE,MAAM,QAAQ,GAAG,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;;AAEjE,EAAE,IAAI,CAACX,IAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAACA,IAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC5D,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,mEAAmE;AACzE,KAAK,CAAA;AACL,IAAI,OAAA;AACJ,GAAA;;AAEA,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAACA,IAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;AACnE,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAACA,IAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;AAChE,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAA;;AAEpD,EAAE;AACF,IAAI,CAAC,WAAW,CAAC,aAAa;AAC9B,IAAI,CAAC,OAAO,EAAE,SAAS;AACvB,IAAI,CAAC,OAAO,EAAE,aAAA;AACd,IAAI;AACJ,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,oFAAoF;AAC1F,KAAK,CAAA;AACL,IAAI,OAAA;AACJ,GAAA;;AAEA;AACA,EAAE;AACF,IAAI,WAAW,CAAC,WAAW;AAC3B,IAAI,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,IAAA;AACpD,IAAI;AACJ,IAAI,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAA;AACtE,IAAI,OAAA;AACJ,GAAA;;AAEA,EAAE,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;;AAEjE,EAAE,MAAM,KAAK,GAAGpC,UAAgB,CAAA;AAChC,EAAE,MAAM,QAAQ,GAAG;AACnB,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AACxD,IAAI,CAAC,cAAc,EAAE,kBAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AAChE,IAAI,CAAC,cAAc,EAAE,kBAAkB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;AACpE,IAAI,0BAA0B;AAC9B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;;AAEb,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACtD,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO;AAC7B,MAAM;AACN,QAAQ,QAAQ,EAAE,uBAAuB;AACzC,QAAQ,IAAI,EAAE,QAAQ;AACtB,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,OAAO,EAAE;AACjB,UAAU,cAAc,EAAE,mCAAmC;AAC7D,UAAU,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;AACvD,SAAS;AACT,OAAO;AACP,MAAM,CAAC,GAAG,KAAK;AACf,QAAQ,IAAI,IAAI,GAAG,EAAE,CAAA;AACrB,QAAQ,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,CAAC,CAAA;AAClD,QAAQ,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM;AAC5B,UAAU,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE;AACtC,YAAY,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;AACrC,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB,cAAc,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5E,aAAa,CAAA;AACb,WAAA;AACA,SAAS,CAAC,CAAA;AACV,OAAO;AACP,KAAK,CAAA;AACL,IAAI,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;AAC3B,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;AACvB,IAAI,GAAG,CAAC,GAAG,EAAE,CAAA;AACb,GAAG,CAAC,CAAA;;AAEJ,EAAE,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;AAC9C,EAAE,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,IAAI,CAAA;AACzE,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE;AAC1B,IAAI,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;AAClD,GAAA;;AAEA,EAAEoC,IAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAClE,EAAE,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAA;AAC1E,CAAA;;AAEA,MAAMY,eAAa,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,EAAE,OAAO,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,KAAK;AAClE;AACA,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAClD,IAAI,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,IAAI,QAAQ,CAAC,MAAM,EAAE;AAC7E,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,0CAA0C,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AAC5E,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,UAAU;AAClB,QAAQ,KAAK,EAAE,QAAQ,CAAC,KAAK;AAC7B,QAAQ,SAAS,EAAE,QAAQ,CAAC,SAAS;AACrC,QAAQ,MAAM,EAAE,MAAM,CAAC,SAAS;AAChC,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AACvC,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,CAAC,wDAAwD,EAAE,UAAU,CAAC,CAAC;AAC/E,OAAO,CAAA;AACP,MAAM,OAAO,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAC1C,KAAA;;AAEA;AACA,IAAI,MAAM,YAAY,GAAG,CAAC,YAAY;AACtC,MAAM,IAAI;AACV;AACA,QAAQ,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AAC3C,UAAU,MAAMA,eAAa,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;AACzD,SAAA;;AAEA;AACA;AACA,QAAQ,IAAI;AACZ,UAAU,MAAM,EAAE,OAAO,EAAE,GAAGA,eAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAC3D,UAAU,MAAM,YAAY,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,IAAI;AACnD,YAAY,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,UAAU;AAChD,WAAW,CAAA;AACX,UAAU,IAAI,YAAY,EAAE,SAAS,EAAE;AACvC,YAAY,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,CAAA;AAC9C,YAAY,IAAI,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAA;AAC5D,YAAY,IAAI,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAA;AACxD,YAAY,IAAI,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAA;AAClE,YAAY,IAAI,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAA;AAC3E,YAAY,IAAI,GAAG,CAAC,UAAU,EAAE;AAChC,cAAc,SAAS,CAAC,UAAU,GAAG;AACrC,gBAAgB,GAAG,SAAS,CAAC,UAAU;AACvC,gBAAgB,GAAG,GAAG,CAAC,UAAU;AACjC,eAAe,CAAA;AACf,aAAA;AACA,WAAA;AACA,SAAS,CAAC,OAAO,UAAU,EAAE;AAC7B;AACA,SAAA;;AAEA,QAAQ,OAAO,CAAC,GAAG;AACnB,UAAU,CAAC,iCAAiC,EAAE,UAAU,CAAC,aAAa;AACtE,YAAY,SAAS,CAAC,SAAS,IAAI,OAAA;AACnC,WAAW,CAAC,CAAC;AACb,SAAS,CAAA;;AAET;AACA,QAAQ,IAAI,SAAS,CAAA;AACrB,QAAQ,IAAI,SAAS,CAAC,SAAS,KAAK,iBAAiB,EAAE;AACvD;AACA,UAAU,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;AAC7D,UAAU,IAAI,CAAC,GAAG,EAAE;AACpB,YAAY,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;AACvE,WAAA;;AAEA;AACA,UAAU,MAAM,OAAO,GAAG,EAAE,CAAA;AAC5B,UAAU,IAAI,SAAS,CAAC,cAAc,IAAI,WAAW,EAAE;AACvD,YAAY,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,OAAO;AAC5D,cAAc,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK;AAC1C,gBAAgB,OAAO,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;AACxE,eAAe;AACf,aAAa,CAAA;AACb,WAAA;;AAEA,UAAU,SAAS,GAAG,IAAI,6BAA6B,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE;AACtE,YAAY,WAAW,EAAE;AACzB,cAAc,OAAO;AACrB,aAAa;AACb,WAAW,CAAC,CAAA;AACZ,SAAS,MAAM;AACf;AACA,UAAU,MAAM,GAAG,GAAG,uBAAuB,EAAE,CAAA;AAC/C,UAAU,IAAI,SAAS,CAAC,UAAU,IAAI,WAAW,EAAE;AACnD,YAAY,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO;AACxD,cAAc,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK;AAC3C,gBAAgB,IAAI,WAAW,CAAC,aAAa,CAAC,KAAK,SAAS,EAAE;AAC9D,kBAAkB,GAAG,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC,CAAA;AAC1D,iBAAA;AACA,eAAe;AACf,aAAa,CAAA;AACb,WAAA;;AAEA;AACA,UAAU,IAAI,SAAS,CAAC,SAAS,EAAE;AACnC,YAAY,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK;AAC7E,cAAc,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;AACvE,aAAa,CAAC,CAAA;AACd,WAAA;;AAEA;AACA,UAAU,IAAI,SAAS,CAAC,YAAY,EAAE;AACtC,YAAY,IAAI;AAChB,cAAc,MAAM,uBAAuB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;AACnE,aAAa,CAAC,OAAO,GAAG,EAAE;AAC1B,cAAc,OAAO,CAAC,IAAI;AAC1B,gBAAgB,mDAAmD;AACnE,gBAAgB,GAAG,CAAC,OAAO;AAC3B,eAAe,CAAA;AACf,aAAA;AACA,WAAA;;AAEA;AACA,UAAU,MAAM,IAAI,GAAG,CAAC,IAAI,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAA;AAClD,UAAU,IAAI,SAAS,CAAC,WAAW,IAAI,WAAW,EAAE;AACpD,YAAY,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,OAAO;AACzD,cAAc,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,KAAK;AAC3C,gBAAgB,MAAM,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC,CAAA;AACxD,gBAAgB,IAAI,KAAK,EAAE;AAC3B,kBAAkB,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,SAAS,EAAE;AACnE,oBAAoB,IAAI,CAAC,IAAI;AAC7B,sBAAsB,GAAG,KAAA;AACzB,yBAAyB,KAAK,CAAC,MAAM,CAAC,SAAS,CAAA;AAC/C,yBAAyB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAA;AAC5C,yBAAyB,MAAM,CAAC,OAAO,CAAC;AACxC,qBAAqB,CAAA;AACrB,mBAAmB,MAAM;AACzB,oBAAoB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACpC,mBAAA;AACA,iBAAA;AACA,eAAe;AACf,aAAa,CAAA;AACb,WAAA;;AAEA;AACA,UAAU,MAAM,MAAM,GAAGvB,MAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;AAC1D,UAAU,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,YAAY;AACZ,cAAc,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;AACzC,cAAc,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAA;AAC5C,cAAc;AACd,cAAc,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAA;AACnE,aAAA;AACA,WAAA;;AAEA,UAAU,SAAS,GAAG,IAAI,oBAAoB,CAAC;AAC/C,YAAY,OAAO,EAAE,SAAS,CAAC,OAAO;AACtC,YAAY,IAAI;AAChB,YAAY,GAAG;AACf,WAAW,CAAC,CAAA;AACZ,SAAA;;AAEA;AACA,QAAQ,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE;AACtC,UAAU,MAAM,EAAE,IAAI;AACtB,UAAU,SAAS;AACnB,UAAU,KAAK,EAAE,EAAE;AACnB,UAAU,SAAS,EAAE,EAAE;AACvB,UAAU,MAAM,EAAE,MAAM,CAAC,UAAU;AACnC,SAAS,CAAC,CAAA;;AAEV;AACA,QAAQ,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;AAClC,UAAU,IAAI,EAAE,MAAM;AACtB,UAAU,OAAO,EAAE,OAAO;AAC1B,SAAS,CAAC,CAAA;;AAEV;AACA,QAAQ,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;;AAEvC;AACA,QAAQ,IAAI,KAAK,GAAG,EAAE,CAAA;AACtB,QAAQ,IAAI;AACZ,UAAU,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAA;AACtD,UAAU,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE,CAAA;AACzC,SAAS,CAAC,OAAO,UAAU,EAAE;AAC7B,UAAU,OAAO,CAAC,IAAI;AACtB,YAAY,CAAC,yCAAyC,EAAE,UAAU,CAAC,CAAC,CAAC;AACrE,YAAY,UAAU,CAAC,OAAO;AAC9B,WAAW,CAAA;AACX,SAAA;;AAEA;AACA,QAAQ,IAAI,SAAS,GAAG,EAAE,CAAA;AAC1B,QAAQ,IAAI;AACZ,UAAU,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAA;AAC9D,UAAU,SAAS,GAAG,eAAe,CAAC,SAAS,IAAI,EAAE,CAAA;AACrD,SAAS,CAAC,OAAO,cAAc,EAAE;AACjC;AACA,SAAA;;AAEA;AACA,QAAQ,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE;AACtC,UAAU,MAAM;AAChB,UAAU,SAAS;AACnB,UAAU,KAAK;AACf,UAAU,SAAS;AACnB,UAAU,MAAM,EAAE,MAAM,CAAC,SAAS;AAClC,SAAS,CAAC,CAAA;;AAEV,QAAQ,OAAO,CAAC,GAAG;AACnB,UAAU,CAAC,kCAAkC,EAAE,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC;AAClH,SAAS,CAAA;;AAET,QAAQ,OAAO;AACf,UAAU,OAAO,EAAE,IAAI;AACvB,UAAU,UAAU;AACpB,UAAU,KAAK;AACf,UAAU,SAAS;AACnB,UAAU,MAAM,EAAE,MAAM,CAAC,SAAS;AAClC,SAAS,CAAA;AACT,OAAO,CAAC,OAAO,KAAK,EAAE;AACtB,QAAQ,OAAO,CAAC,KAAK;AACrB,UAAU,CAAC,sCAAsC,EAAE,UAAU,CAAC,CAAC,CAAC;AAChE,UAAU,KAAK;AACf,SAAS,CAAA;;AAET;AACA,QAAQ,IAAI,YAAY,GAAG,KAAK,CAAC,OAAO,CAAA;AACxC,QAAQ,IAAI,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AAC3C,UAAU,YAAY;AACtB,YAAY,oEAAoE;AAChF,YAAY,0DAA0D,CAAA;AACtE,SAAA;;AAEA;AACA,QAAQ,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE;AACtC,UAAU,MAAM,EAAE,IAAI;AACtB,UAAU,SAAS,EAAE,IAAI;AACzB,UAAU,KAAK,EAAE,EAAE;AACnB,UAAU,SAAS,EAAE,EAAE;AACvB,UAAU,MAAM,EAAE,MAAM,CAAC,KAAK;AAC9B,UAAU,KAAK,EAAE,YAAY;AAC7B,SAAS,CAAC,CAAA;;AAEV,QAAQ,OAAO;AACf,UAAU,KAAK,EAAE,IAAI;AACrB,UAAU,OAAO,EAAE,YAAY;AAC/B,UAAU,UAAU;AACpB,UAAU,MAAM,EAAE,MAAM,CAAC,KAAK;AAC9B,SAAS,CAAA;AACT,OAAO,SAAS;AAChB,QAAQ,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;AACxC,OAAA;AACA,KAAK,GAAG,CAAA;;AAER,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;AAC/C,IAAI,OAAO,YAAY,CAAA;AACvB,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,OAAO,GAAG,EAAE,UAAU,KAAK;AACzC,IAAI,IAAI;AACR;AACA,MAAM,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AACzC,QAAQ,IAAI;AACZ,UAAU,MAAM,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAC7C,SAAS,CAAC,OAAO,CAAC,EAAE;AACpB;AACA,SAAA;AACA,OAAA;;AAEA,MAAM,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAClD,MAAM,IAAI,CAAC,MAAM,EAAE;AACnB,QAAQ,OAAO;AACf,UAAU,OAAO,EAAE,IAAI;AACvB,UAAU,UAAU;AACpB,UAAU,OAAO,EAAE,wBAAwB;AAC3C,SAAS,CAAA;AACT,OAAA;;AAEA,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,iCAAiC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;;AAEnE;AACA,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AACzB,QAAQ,IAAI;AACZ,UAAU,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;AACrC,SAAS,CAAC,OAAO,UAAU,EAAE;AAC7B,UAAU,OAAO,CAAC,IAAI;AACtB,YAAY,CAAC,yCAAyC,EAAE,UAAU,CAAC,CAAC,CAAC;AACrE,YAAY,UAAU,CAAC,OAAO;AAC9B,WAAW,CAAA;AACX,SAAA;AACA,OAAA;;AAEA,MAAM,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;;AAEtC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,gCAAgC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;;AAElE,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,UAAU;AAClB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,sCAAsC,EAAE,UAAU,CAAC,CAAC,CAAC;AAC9D,QAAQ,KAAK;AACb,OAAO,CAAA;AACP;AACA,MAAM,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;AACtC,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;AAC9B,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,KAAK;AAC5E,IAAI,IAAI;AACR,MAAM,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAClD,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACrC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AAC9D,OAAA;;AAEA;AACA,MAAM,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC5D,QAAQ,MAAM,IAAI,KAAK;AACvB,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,6DAA6D,EAAE,YAAY,CAAC,IAAI;AAC5G,YAAY,IAAI;AAChB,WAAW,CAAC,CAAC;AACb,SAAS,CAAA;AACT,OAAA;;AAEA,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,8BAA8B,EAAE,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;;AAE5E,MAAM,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;AAClD,QAAQ,IAAI,EAAE,QAAQ;AACtB,QAAQ,SAAS,EAAE,IAAI,IAAI,EAAE;AAC7B,OAAO,CAAC,CAAA;;AAER,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,MAAM;AACd,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,mCAAmC,EAAE,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AACvE,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;AAC9B,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE,UAAU,KAAK;AACxC,IAAI,IAAI;AACR,MAAM,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAClD,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACrC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AAC9D,OAAA;;AAEA;AACA,MAAM,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAA;AACzD,MAAM,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE,CAAA;;AAE3C;AACA,MAAM,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;;AAE1B,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,wCAAwC,EAAE,UAAU,CAAC,CAAC,CAAC;AAChE,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;AAC9B,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,EAAE,OAAO,GAAG,EAAE,UAAU,KAAK;AAC5C,IAAI,IAAI;AACR,MAAM,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAClD,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACrC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AAC9D,OAAA;;AAEA,MAAM,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAA;AACjE,MAAM,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,IAAI,EAAE,CAAA;;AAEvD;AACA,MAAM,MAAM,CAAC,SAAS,GAAG,SAAS,CAAA;;AAElC,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,SAAS;AACjB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,4CAA4C,EAAE,UAAU,CAAC,CAAC,CAAC;AACpE,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;AAC9B,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE,OAAO,GAAG,EAAE,UAAU,EAAE,GAAG,KAAK;AAChD,IAAI,IAAI;AACR,MAAM,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAClD,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACrC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AAC9D,OAAA;;AAEA,MAAM,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;;AAE9D,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,QAAQ,EAAE,MAAM;AACxB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,uCAAuC,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AAC3E,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;AAC9B,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK;AACxC,IAAI,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAChD,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,MAAM,OAAO;AACb,QAAQ,UAAU;AAClB,QAAQ,MAAM,EAAE,MAAM,CAAC,YAAY;AACnC,QAAQ,KAAK,EAAE,EAAE;AACjB,QAAQ,SAAS,EAAE,EAAE;AACrB,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,OAAO;AACX,MAAM,UAAU;AAChB,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM;AAC3B,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;AAC/B,MAAM,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;AACvC,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI;AACjC,KAAK,CAAA;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,CAAC,GAAG,KAAK;AACvB,IAAI,IAAI;AACR,MAAM,MAAM,WAAW,GAAGA,MAAI,CAAC,IAAI;AACnC,QAAQ,SAAS;AACjB,QAAQ,IAAI;AACZ,QAAQ,KAAK;AACb,QAAQ,uBAAuB;AAC/B,OAAO,CAAA;;AAEP,MAAM,IAAI,CAACW,IAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;AACvC,QAAQ,OAAO;AACf,UAAU,OAAO,EAAE,EAAE;AACrB,SAAS,CAAA;AACT,OAAA;;AAEA,MAAM,MAAM,WAAW,GAAGA,IAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;AAC9D,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;;AAE7C,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;AACtC,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAA;AACpE,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;AAC9B,QAAQ,OAAO,EAAE,EAAE;AACnB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,oBAAoB,EAAE,MAAM;AAC9B,IAAI,MAAM,OAAO,GAAG,EAAE,CAAA;AACtB,IAAI,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,aAAa,EAAE;AACtD,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,EAAE;AAC9C,QAAQ,OAAO,CAAC,IAAI,CAAC;AACrB,UAAU,UAAU;AACpB,UAAU,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;AACnC,UAAU,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;AAC3C,UAAU,MAAM,EAAE,MAAM,CAAC,MAAM;AAC/B,SAAS,CAAC,CAAA;AACV,OAAA;AACA,KAAA;AACA,IAAI,OAAO,OAAO,CAAA;AAClB,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,KAAK;AAC/D,IAAI,MAAM,EAAE,KAAK,EAAE,GAAGrC,YAAwB,CAAA;;AAE9C,IAAI,MAAM,GAAG,GAAG,uBAAuB,EAAE,CAAA;;AAEzC;AACA,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE,cAAc,EAAE;AAC3C,MAAM,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,cAAc,CAAA;AAC3D,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC,CAAA;AAC5C,MAAM,IAAI,UAAU,EAAE;AACtB,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;AACjE,QAAQ,MAAM,OAAO,GAAGF,YAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;AACzD,QAAQ,IAAI;AACZ,UAAUuC,IAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACpD,UAAUA,IAAE,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;AAC/C,SAAS,CAAC,OAAO,GAAG,EAAE;AACtB,UAAU,OAAO;AACjB,YAAY,KAAK,EAAE,IAAI;AACvB,YAAY,OAAO,EAAE,CAAC,2BAA2B,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAChE,WAAW,CAAA;AACX,SAAA;AACA,OAAA;AACA,KAAA;;AAEA;AACA,IAAI,IAAI,SAAS,EAAE,UAAU,IAAI,WAAW,EAAE;AAC9C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO;AAClD,QAAQ,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK;AACrC,UAAU,IAAI,WAAW,CAAC,aAAa,CAAC,KAAK,SAAS,EAAE;AACxD,YAAY,GAAG,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC,CAAA;AACpD,WAAA;AACA,SAAS;AACT,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,IAAI,WAAW,CAAC,GAAG,EAAE;AACzB,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AAChE,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;;AAEA;AACA,IAAI,IAAI,WAAW,CAAC,SAAS,EAAE;AAC/B,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AACtE,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;AAC9D,OAAO,CAAC,CAAA;AACR,KAAA;;AAEA;AACA,IAAI,MAAM,MAAM,GAAGX,MAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;AACpD,IAAI,MAAM,YAAY,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG;AAC1D,MAAM,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAA;AAC3D,UAAU,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAA;AAChD,UAAU,GAAG;AACb,KAAK,CAAA;;AAEL,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AACpC,MAAM,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE;AAC5D,QAAQ,GAAG;AACX,QAAQ,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;AACzC,OAAO,CAAC,CAAA;;AAER,MAAM,IAAI,MAAM,GAAG,EAAE,CAAA;AACrB,MAAM,IAAI,MAAM,GAAG,EAAE,CAAA;AACrB,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;AACvC,QAAQ,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;AACjC,OAAO,CAAC,CAAA;AACR,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;AACvC,QAAQ,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;AACjC,OAAO,CAAC,CAAA;;AAER,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM;AACvC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAA;AACnB,QAAQ,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,CAAA;AAClE,OAAO,EAAE,MAAM,CAAC,CAAA;;AAEhB,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK;AACjC,QAAQ,YAAY,CAAC,OAAO,CAAC,CAAA;AAC7B,QAAQ,IAAI,IAAI,KAAK,CAAC,EAAE;AACxB,UAAU,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AACpC,SAAS,MAAM;AACf,UAAU,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAA;AAC7D;AACA,UAAU,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE;AACtC,YAAY,OAAO,CAAC;AACpB,cAAc,KAAK,EAAE,IAAI;AACzB,cAAc,OAAO;AACrB,gBAAgB,oEAAoE;AACpF,gBAAgB,0DAA0D;AAC1E,aAAa,CAAC,CAAA;AACd,YAAY,OAAA;AACZ,WAAA;AACA,UAAU,OAAO,CAAC;AAClB,YAAY,KAAK,EAAE,IAAI;AACvB,YAAY,OAAO,EAAE,CAAC,sBAAsB,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC;AAClF,WAAW,CAAC,CAAA;AACZ,SAAA;AACA,OAAO,CAAC,CAAA;;AAER,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;AAChC,QAAQ,YAAY,CAAC,OAAO,CAAC,CAAA;AAC7B,QAAQ,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;AACtD,OAAO,CAAC,CAAA;AACR,KAAK,CAAC,CAAA;AACN,GAAG;;AAEH;AACA;AACA;AACA;AACA,EAAE,cAAc,EAAE,YAAY;AAC9B;AACA,IAAI,IAAI,aAAa,CAAC,IAAI,GAAG,CAAC,EAAE;AAChC,MAAM,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AAC3D,KAAA;;AAEA,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,CAAC,sCAAsC,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC3E,KAAK,CAAA;AACL,IAAI,MAAM,QAAQ,GAAG,EAAE,CAAA;AACvB,IAAI,KAAK,MAAM,CAAC,UAAU,CAAC,IAAI,aAAa,EAAE;AAC9C,MAAM,QAAQ,CAAC,IAAI,CAACuB,eAAa,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;AAC/D,KAAA;AACA,IAAI,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;AACtC,IAAI,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAA;AACtD,GAAG;AACH,CAAC,CAAA;;AAEDC,eAAA,CAAA,OAAc,GAAGD,eAAa,CAAA;AAC9BC,eAAA,CAAA,OAAA,CAAA,uBAAsC,GAAG,wBAAuB;;;;;;;;;;;;;;;;AC/9BhE,MAAMxB,MAAI,GAAG/B,YAAe,CAAA;AAC5B,MAAM0C,IAAE,GAAGzC,YAAa,CAAA;;AAExB;AACA,MAAM,wBAAwB,GAAG,2CAA2C,CAAA;;AAE5E;AACA,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;;AAElC,IAAI,WAAW,GAAG,IAAI,CAAA;AACtB,IAAI,cAAc,GAAG,CAAC,CAAA;;AAEtB;AACA;AACA;AACA,SAAS,mBAAmB,GAAG;AAC/B,EAAE,OAAO8B,MAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,0BAA0B,CAAC,CAAA;AAC3E,CAAA;;AAEA;AACA;AACA;AACA,SAAS,KAAK,GAAG;AACjB,EAAE;AACF,IAAI,OAAO,CAAC,UAAU;AACtB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;AAC1C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,KAAA;AAC7B,IAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kBAAkB,CAAC,YAAY,GAAG,KAAK,EAAE;AACxD,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;;AAExB;AACA,EAAE,IAAI,CAAC,YAAY,IAAI,WAAW,IAAI,GAAG,GAAG,cAAc,GAAG,YAAY,EAAE;AAC3E,IAAI,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAA;AACvE,IAAI,OAAO,WAAW,CAAA;AACtB,GAAA;;AAEA,EAAE,IAAI;AACN,IAAI,IAAI,SAAS,CAAA;;AAEjB,IAAI,IAAI,KAAK,EAAE,EAAE;AACjB;AACA,MAAM,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAA;AAC5C,MAAM,IAAIW,IAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACnC,QAAQ,OAAO,CAAC,GAAG;AACnB,UAAU,kDAAkD;AAC5D,UAAU,QAAQ;AAClB,SAAS,CAAA;AACT,QAAQ,MAAM,GAAG,GAAGA,IAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;AACrD,QAAQ,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AACnC,OAAO,MAAM;AACb;AACA,QAAQ,MAAM,WAAW;AACzB,UAAU,OAAO,CAAC,GAAG,CAAC,iBAAiB;AACvC,UAAU,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,wBAAwB,CAAC,aAAa,CAAC,CAAA;AACzF,QAAQ,OAAO,CAAC,GAAG;AACnB,UAAU,8CAA8C;AACxD,UAAU,WAAW;AACrB,SAAS,CAAA;AACT,QAAQ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAA;AACjD,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC1B,UAAU,MAAM,IAAI,KAAK;AACzB,YAAY,CAAC,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;AACjF,WAAW,CAAA;AACX,SAAA;AACA,QAAQ,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;AACzC,OAAA;AACA,KAAK,MAAM;AACX;AACA,MAAM,MAAM,WAAW;AACvB,QAAQ,OAAO,CAAC,GAAG,CAAC,iBAAiB;AACrC,QAAQ,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,wBAAwB,CAAC,aAAa,CAAC,CAAA;AACvF,MAAM,OAAO,CAAC,GAAG,CAAC,8CAA8C,EAAE,WAAW,CAAC,CAAA;;AAE9E,MAAM,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAA;AAC/C,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AACxB,QAAQ,MAAM,IAAI,KAAK;AACvB,UAAU,CAAC,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC/E,SAAS,CAAA;AACT,OAAA;AACA,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;AACvC,KAAA;;AAEA;AACA,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAE;AAC5B,MAAM,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AAC5D,QAAQ,GAAG,GAAG;AACd,QAAQ,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,aAAa,IAAI,OAAO;AAC5D,OAAO,CAAC,CAAC,CAAA;AACT,KAAA;;AAEA;AACA,IAAI,WAAW,GAAG,SAAS,CAAA;AAC3B,IAAI,cAAc,GAAG,GAAG,CAAA;;AAExB,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,CAAC,4BAA4B,EAAE,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,SAAS,CAAC;AAC/E,KAAK,CAAA;AACL,IAAI,OAAO,SAAS,CAAA;AACpB,GAAG,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAA;;AAEzE;AACA,IAAI,IAAI,WAAW,EAAE;AACrB,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,8DAA8D;AACtE,OAAO,CAAA;AACP,MAAM,OAAO,WAAW,CAAA;AACxB,KAAA;;AAEA,IAAI,MAAM,KAAK,CAAA;AACf,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAec,gBAAc,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE;AACxD,EAAE,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAA;AAC1C,EAAE,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;;AAErC;AACA,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE;AACpB,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;AAChD,IAAI,QAAQ,GAAG,QAAQ,CAAC,MAAM;AAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,QAAQ,EAAE,WAAW,EAAE,KAAK,SAAS;AACjE,KAAK,CAAA;AACL,GAAA;;AAEA;AACA,EAAE,IAAI,KAAK,EAAE;AACb,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;AACjC,IAAI,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK;AACxC;AACA,MAAM,MAAM,YAAY;AACxB,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClD,QAAQ,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzD,QAAQ,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzD,QAAQ,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpD,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;;AAEjE;AACA,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,IAAI;AAClD,QAAQ,CAAC,CAAC;AACV,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClD,UAAU,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzD,UAAU,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzD,OAAO,CAAA;;AAEP,MAAM,OAAO,YAAY,IAAI,WAAW,CAAA;AACxC,KAAK,CAAC,CAAA;AACN,GAAA;;AAEA;AACA,EAAE,IAAI,OAAO,CAAC,QAAQ,EAAE;AACxB,IAAI,QAAQ,GAAG,QAAQ,CAAC,MAAM;AAC9B,MAAM,CAAC,GAAG;AACV,QAAQ,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE;AAC7E,KAAK,CAAA;AACL,GAAA;;AAEA;AACA,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE;AACtB,IAAI,QAAQ,GAAG,QAAQ,CAAC,MAAM;AAC9B,MAAM,CAAC,GAAG;AACV,QAAQ,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;AACzE,KAAK,CAAA;AACL,GAAA;;AAEA;AACA,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE;AACnB,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAA;AAC9C,IAAI,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG;AACnC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC;AAChE,KAAK,CAAA;AACL,GAAA;;AAEA;AACA;AACA,EAAE,IAAI,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,iBAAiB,CAAC,MAAM,EAAE;AACrE,IAAI,MAAM,YAAY,GAAG,IAAI,GAAG;AAChC,MAAM,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC3D,KAAK,CAAA;AACL,IAAI,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK;AACxC,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM;AACxD,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,KAAK;AACnC,OAAO,CAAA;AACP,MAAM,OAAO,eAAe,CAAC,KAAK;AAClC,QAAQ,CAAC,CAAC;AACV,UAAU,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC;AAC3D,UAAU,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC;AACxD,OAAO,CAAA;AACP,KAAK,CAAC,CAAA;AACN,GAAA;;AAEA;AACA;AACA,EAAE,IAAI,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE;AACjE,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;AAC/E,IAAI,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK;AACxC;AACA,MAAM,MAAM,YAAY,GAAG,EAAE,CAAA;;AAE7B;AACA,MAAM,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,SAAS,IAAI,EAAE,EAAE;AAC3C,QAAQ,IAAI,CAAC,CAAC,aAAa,KAAK,KAAK,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK,EAAE;AAC/D,UAAU,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AACnC,SAAA;AACA,OAAA;;AAEA;AACA,MAAM,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE;AACzC,QAAQ,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,EAAE,EAAE;AAC3C,UAAU,IAAI,CAAC,CAAC,aAAa,KAAK,KAAK,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK,EAAE;AACjE,YAAY,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AACrC,WAAA;AACA,SAAA;AACA,OAAA;;AAEA;AACA,MAAM,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;AACvE,KAAK,CAAC,CAAA;AACN,GAAA;;AAEA;AACA,EAAE,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM;AACtC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM;AAClD,IAAI,CAAC;AACL,GAAG,CAAA;;AAEH,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;AACnC,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeC,YAAU,CAAC,WAAW,EAAE;AACvC,EAAE,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAA;AAC1C,EAAE,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAA;AACxE,EAAE,OAAO,GAAG,IAAI,IAAI,CAAA;AACpB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY,CAAC,gBAAgB,GAAG,EAAE,EAAE;AACnD,EAAE,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAA;AAC1C,EAAE,MAAM,OAAO,GAAG,EAAE,CAAA;;AAEpB,EAAE,KAAK,MAAM,SAAS,IAAI,gBAAgB,EAAE;AAC5C,IAAI,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,CAAA;AAC7E,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO,EAAE;AAClD,MAAM,OAAO,CAAC,IAAI,CAAC;AACnB,QAAQ,IAAI,EAAE,GAAG,CAAC,IAAI;AACtB,QAAQ,cAAc,EAAE,SAAS,CAAC,OAAO;AACzC,QAAQ,aAAa,EAAE,GAAG,CAAC,OAAO;AAClC,QAAQ,WAAW,EAAE,GAAG,CAAC,WAAW;AACpC,QAAQ,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI;AACxC,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAA;;AAEA,EAAE,OAAO,OAAO,CAAA;AAChB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gBAAgB,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE;AAC1D,EAAE,OAAOD,gBAAc,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;AACjE,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE;AACtD,EAAE,OAAOA,gBAAc,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;AAC7D,CAAA;;AAEA,IAAAE,oBAAc,GAAG;AACjB,EAAE,kBAAkB;AACpB,kBAAEF,gBAAc;AAChB,EAAE,gBAAgB;AAClB,EAAE,YAAY;AACd,cAAEC,YAAU;AACZ,EAAE,YAAY;AACd,CAAC;;AC7UD,IAAIf,IAAE,GAAG1C,YAAa,CAAA;AACtB,IAAI,UAAU,GAAGC,UAAqB,CAAA;AACtC,MAAM0D,eAAa,GAAGzD,YAAwB,CAAA;AAC9C,MAAM6B,MAAI,GAAG5B,YAAoB,CAAA;AACjC,MAAM,EAAE,wBAAwB,EAAE,cAAc,EAAE,GAAGC,IAAiB,CAAA;;qBAEtE,MAAM,YAAY,CAAC;AACnB;AACA;AACA;AACA,EAAE,MAAM,GAAG,IAAI,CAAA;;AAEf;AACA;AACA;AACA,EAAE,KAAK,GAAG,IAAI,CAAA;;AAEd,EAAE,WAAW,CAAC,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE;AACvD,IAAI,IAAI,KAAK,KAAK,EAAE,IAAI,MAAM,KAAK,EAAE,IAAI,SAAS,KAAK,EAAE,EAAE;AAC3D,MAAM,IAAI,CAAC,MAAM,GAAGuD,eAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;AAChD,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;AACnD,KAAA;AACA,GAAA;;AAEA,EAAE,yBAAyB,GAAG;AAC9B,IAAI,QAAQ;AACZ,IAAI,aAAa,GAAG,aAAa;AACjC,IAAI,SAAS;AACb,IAAI,QAAQ,GAAG,IAAI;AACnB,OAAO;AACP,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C;AACA,MAAM,IAAI,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;;AAExC;AACA,MAAM,IAAI,aAAa,GAAG,CAAC,CAAA;;AAE3B;AACA,MAAM,IAAI,WAAW,GAAG,CAAC,CAAA;;AAEzB;AACA,MAAM,IAAI,UAAU,GAAGjB,IAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;;AAEjE,MAAM,IAAI,KAAK,GAAG,EAAE,CAAA;;AAEpB;AACA,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAA;AACvC,SAAS,IAAI,CAAC,MAAM;AACpB;AACA,UAAU,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,IAAI,EAAE;AAChD,YAAY,IAAI;AAChB;AACA;AACA,cAAc,IAAI,aAAa,KAAK,SAAS,EAAE;AAC/C;AACA,gBAAgB,IAAI,WAAW,GAAGA,IAAE,CAAC,iBAAiB;AACtD,kBAAkB,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO;AACnE,iBAAiB,CAAA;AACjB,gBAAgB,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;AACxD,gBAAgB,WAAW,CAAC,KAAK,EAAE,CAAA;;AAEnC;AACA,gBAAgB,aAAa,GAAG,CAAC,CAAA;AACjC;AACA,gBAAgB,WAAW,EAAE,CAAA;AAC7B;AACA,gBAAgB,KAAK,GAAG,EAAE,CAAA;AAC1B;AACA,gBAAgB,QAAQ;AACxB,kBAAkB,OAAO,QAAQ,KAAK,UAAU;AAChD,kBAAkB,QAAQ,CAAC,WAAW,CAAC,CAAA;AACvC,eAAe,MAAM;AACrB,gBAAgB,IAAI;AACpB;AACA,kBAAkB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAClC,kBAAkB,aAAa,EAAE,CAAA;AACjC,iBAAiB,CAAC,OAAO,CAAC,EAAE;AAC5B,kBAAkB,MAAM,CAAC,CAAC,CAAC,CAAA;AAC3B,iBAAA;AACA,eAAA;AACA,aAAa,CAAC,OAAO,CAAC,EAAE;AACxB,cAAc,MAAM,CAAC,CAAC,CAAC,CAAA;AACvB,aAAA;AACA,WAAW,CAAC,CAAA;;AAEZ,UAAU,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE;AAC9C,YAAY,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAA;AAC7C,YAAY,MAAM,CAAC,CAAC,CAAC,CAAA;AACrB,WAAW,CAAC,CAAA;;AAEZ,UAAU,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY;AAC7C,YAAY,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;AAC1C,YAAY,OAAO,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAA;AACtD,WAAW,CAAC,CAAA;AACZ,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK;AACtB,UAAU,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;AAChD,UAAU,MAAM,CAAC,CAAC,CAAC,CAAA;AACnB,SAAS,CAAC,CAAA;AACV,KAAK,CAAC,CAAA;AACN,GAAG,CAAA;;AAEH,EAAE,cAAc,GAAG,CAAC,aAAa,KAAK;AACtC,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI;AACV,QAAQ,cAAc,CAAC,aAAa,CAAC,CAAA;AACrC,QAAQA,IAAE,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAClD,UAAU,IAAI,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;AAC9B,UAAU,IAAI,KAAK,EAAE;AACrB,YAAY,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACpC,cAAcA,IAAE,CAAC,UAAU,CAACX,MAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAA;AAC3D,aAAa,CAAC,CAAA;AACd,YAAY,OAAO,EAAE,CAAA;AACrB,WAAA;AACA,SAAS,CAAC,CAAA;AACV,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB,QAAQ,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;AAClD,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAA;AACjB,OAAA;AACA,KAAK,CAAC,CAAA;AACN,GAAG,CAAA;;AAEH,EAAE,MAAM,qCAAqC;AAC7C,IAAI,aAAa;AACjB,IAAI,iBAAiB,GAAG,KAAK;AAC7B,IAAI,QAAQ,GAAG,IAAI;AACnB,IAAI;AACJ,IAAI,IAAI;AACR;AACA,MAAM,MAAM,KAAK,GAAG,MAAMW,IAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CAAA;AACvD,MAAM,IAAI,OAAO,GAAG,EAAE,CAAA;AACtB,MAAM,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE;AACrC;AACA,QAAQ,MAAM,WAAW,GAAGX,MAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;AACtE,QAAQ,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;AAC7D,QAAQ,IAAI,YAAY,EAAE;AAC1B,UAAU,IAAI,MAAM,IAAI,YAAY,IAAI,UAAU,IAAI,YAAY,EAAE;AACpE;AACA,YAAY,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,oBAAoB;AAChE,cAAc,YAAY,CAAC,IAAI;AAC/B,cAAc,YAAY,CAAC,QAAQ;AACnC,cAAc,iBAAiB;AAC/B,cAAc,QAAQ;AACtB,aAAa,CAAA;AACb,YAAY,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;AACpD,WAAW,MAAM;AACjB,YAAY,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;AACpD,WAAA;AACA,SAAA;AACA,OAAA;AACA,MAAM,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AACrC,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC9B,KAAA;AACA,GAAA;;AAEA,EAAE,MAAM,QAAQ,CAAC,QAAQ,EAAE;AAC3B,IAAI,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAClD,MAAMW,IAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK;AACnD,QAAQ,IAAI,GAAG,EAAE;AACjB,UAAU,MAAM,CAAC,GAAG,CAAC,CAAA;AACrB,SAAA;AACA,QAAQ,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;AACnC,OAAO,CAAC,CAAA;AACR,KAAK,CAAC,CAAA;AACN,GAAA;;AAEA,EAAE,aAAa,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,QAAQ,GAAG,IAAI,KAAK;AACnD,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI;AACV,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;AACjC;AACA,UAAU,IAAI,CAAC,KAAA;AACf,aAAa,aAAa,CAAC;AAC3B,cAAc,KAAK;AACnB,cAAc,KAAK,EAAE,CAAC,IAAI,KAAK;AAC/B,gBAAgB,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChE,kBAAkB,QAAQ,CAAC,IAAI,CAAC,CAAA;AAChC,iBAAA;AACA,eAAe;AACf,aAAa,CAAA;AACb,aAAa,IAAI,CAAC,MAAM;AACxB,cAAc,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AACxC,aAAa,CAAA;AACb,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACpC,SAAS,MAAM;AACf,UAAU,MAAM,CAAC,qBAAqB,CAAC,CAAA;AACvC,SAAA;AACA,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB,QAAQ,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;AACjD,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAA;AACjB,OAAA;AACA,KAAK,CAAC,CAAA;AACN,GAAG,CAAA;;AAEH,EAAE,MAAM,oBAAoB;AAC5B,IAAI,OAAO;AACX,IAAI,IAAI;AACR,IAAI,iBAAiB,GAAG,KAAK;AAC7B,IAAI,QAAQ,GAAG,IAAI;AACnB,IAAI;AACJ,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI;AACV,QAAQ,IAAI,OAAO,EAAE;AACrB,UAAU,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;;AAE3C;AACA,UAAU,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAC1D,YAAY,QAAQ,CAAC,mBAAmB,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;AAC7D,WAAA;;AAEA,UAAU,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;AACnC;AACA,YAAY,IAAI,CAAC,KAAA;AACjB,eAAe,oBAAoB,CAAC,KAAK,EAAE;AAC3C,gBAAgB,iBAAiB,EAAE,iBAAiB;AACpD,eAAe,CAAA;AACf,eAAe,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK;AACvC,gBAAgB,OAAO,CAAC;AACxB,kBAAkB,OAAO,EAAE,IAAI;AAC/B,kBAAkB,aAAa,EAAE,KAAK,CAAC,MAAM;AAC7C,kBAAkB,SAAS;AAC3B,iBAAiB,CAAC,CAAA;AAClB,eAAe,CAAA;AACf,eAAe,KAAK,CAAC,CAAC,CAAC,KAAK;AAC5B,gBAAgB,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;AACpE,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAA;AACzB,eAAe,CAAC,CAAA;AAChB,WAAW,MAAM;AACjB,YAAY,MAAM,CAAC,qBAAqB,CAAC,CAAA;AACzC,WAAA;AACA,SAAA;AACA,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB,QAAQ,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;AACzD,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAA;AACjB,OAAA;AACA,KAAK,CAAC,CAAA;AACN,GAAA;;AAEA,EAAE,MAAM,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,KAAK;AACzC,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI;AACV,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;AACjC,UAAU,IAAI,CAAC,KAAA;AACf,aAAa,MAAM,CAAC,KAAK,EAAE,OAAO,CAAA;AAClC,aAAa,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAC7C,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACpC,SAAS,MAAM;AACf,UAAU,MAAM,CAAC,qBAAqB,CAAC,CAAA;AACvC,SAAA;AACA,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAA;AACjB,OAAA;AACA,KAAK,CAAC,CAAA;AACN,GAAG,CAAA;;AAEH,EAAE,WAAW,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,KAAK;AACpD,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI;AACV,QAAQ,IAAI,OAAO,EAAE;AACrB,UAAU,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;;AAE3C;AACA,UAAU,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAC1D,YAAY,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAA;AAC7C,WAAA;;AAEA,UAAU,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;AACnC;AACA,YAAY,IAAI,CAAC,KAAA;AACjB,eAAe,WAAW,CAAC,KAAK,EAAE;AAClC,gBAAgB,8BAA8B,EAAE,IAAI;AACpD,eAAe,CAAA;AACf,eAAe,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK;AACvC,gBAAgB,OAAO,CAAC;AACxB,kBAAkB,OAAO,EAAE,IAAI;AAC/B,kBAAkB,aAAa,EAAE,KAAK,CAAC,MAAM;AAC7C,kBAAkB,IAAI;AACtB,kBAAkB,SAAS;AAC3B,iBAAiB,CAAC,CAAA;AAClB,eAAe,CAAA;AACf,eAAe,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACtC,WAAW,MAAM;AACjB,YAAY,MAAM,CAAC,qBAAqB,CAAC,CAAA;AACzC,WAAA;AACA,SAAA;AACA,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB,QAAQ,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;AACpD,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAA;AACjB,OAAA;AACA,KAAK,CAAC,CAAA;AACN,GAAG,CAAA;AACH,EAAA;;AAEA,IAAA,OAAc,GAAGkB,cAAY;;;;;;;;;;;AC9R7B,MAAM,aAAa,GAAG5D,YAAwB,CAAA;AAC9C,MAAMoB,QAAM,GAAGnB,QAAoB,CAAA;AACnC,MAAM,YAAY,GAAGC,OAA2B,CAAA;AAChD,IAAIwC,IAAE,GAAGvC,YAAa,CAAA;;AAEtB,MAAM0D,mBAAiB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK;AACrC,IAAI,IAAI;AACR,MAAM,MAAM,YAAY,GAAG,aAAa;AACxC,QAAQ,WAAW,CAAC,OAAO,CAAC;AAC5B,QAAQ,WAAW,CAAC,KAAK,CAAC;AAC1B,OAAO,CAAA;AACP,MAAM,YAAA;AACN,SAAS,WAAW,EAAA;AACpB,SAAS,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK;AAC7B,UAAU,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM;AACvC,YAAY,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS;AAC7D,WAAW,CAAA;AACX,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACzC,QAAM,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAA;AAC9E,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK;AACtB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,0BAA0B,EAAE;AAClE,YAAY,KAAK,EAAE,CAAC,CAAC,OAAO;AAC5B,WAAW,CAAC,CAAA;AACZ,SAAS,CAAC,CAAA;AACV,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,0BAA0B,EAAE;AAC9D,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH,EAAE,oBAAoB,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,KAAK;AAChE,IAAI,IAAI;AACR,MAAM,MAAM,OAAO,GAAG,kCAAkC,CAAA;AACxD,MAAM,MAAM,OAAO,GAAG;AACtB,QAAQ,0BAA0B,EAAE,WAAW,CAAC,OAAO,CAAC;AACxD,QAAQ,mBAAmB,EAAE,WAAW,CAAC,KAAK,CAAC;AAC/C,OAAO,CAAA;AACP,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,OAAO,CAAC,eAAe,EAAE,kBAAkB;AAChE,QAAQ,KAAK;AACb,OAAO,CAAC,2BAA2B,EAAE,SAAS,CAAC,CAAC,CAAA;AAChD,MAAM,KAAA;AACN,SAAS,GAAG,CAAC,GAAG,EAAE;AAClB,UAAU,OAAO,EAAE,OAAO;AAC1B,SAAS,CAAA;AACT,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK;AACxB,UAAU,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE;AACnC,YAAY,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,oCAAoC,EAAE;AAC9E,cAAc,MAAM,EAAE,IAAI,CAAC,IAAI;AAC/B,cAAc,SAAS,EAAE,SAAS;AAClC,cAAc,KAAK,EAAE,KAAK;AAC1B,aAAa,CAAC,CAAA;AACd,WAAW,MAAM;AACjB,YAAY,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,iCAAiC,EAAE;AAC3E,cAAc,KAAK,EAAE,IAAI;AACzB,cAAc,OAAO,EAAE,gBAAgB;AACvC,aAAa,CAAC,CAAA;AACd,WAAA;AACA,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK;AACtB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,iCAAiC,EAAE;AACzE,YAAY,KAAK,EAAE,IAAI;AACvB,YAAY,OAAO,EAAE,CAAC,CAAC,OAAO;AAC9B,WAAW,CAAC,CAAA;AACZ,SAAS,CAAC,CAAA;AACV,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,iCAAiC,EAAE;AACrE,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,mBAAmB,EAAE;AACvB,IAAI,GAAG;AACP,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,KAAK,GAAG,EAAE;AACd,OAAO;AACP,IAAI,IAAI;AACR,MAAM;AACN,QAAQ,UAAU,KAAK,EAAE;AACzB,QAAQ,MAAM,KAAK,EAAE;AACrB,QAAQ,SAAS,KAAK,EAAE;AACxB,QAAQ,KAAK,KAAK,EAAA;AAClB,QAAQ;AACR;AACA,QAAQ,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;AAC5D;AACA,QAAQ,MAAM,WAAW,GAAGsB,IAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAA;AAC5D,QAAQ,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;;AAE9B,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAA;;AAEpB;AACA,QAAQ,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK;AACzC,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACtB,QAAM,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAA;;AAE1E,UAAU,IAAI,KAAK,GAAG,CAAC,CAAA;AACvB;AACA,UAAU,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAChC,YAAY,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;AACxD,YAAY,KAAK,EAAE,CAAA;AACnB,YAAY,GAAG,GAAG,KAAK,CAAA;AACvB,WAAW,CAAC,CAAA;AACZ,SAAS,CAAA;AACT,WAAW,IAAI,CAAC,CAAC,MAAM,KAAK;AAC5B,YAAY,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAClC,YAAY,GAAG,CAAC,WAAW,CAAC,IAAI;AAChC,cAAcA,QAAM,CAAC,+BAA+B;AACpD,cAAc,MAAM;AACpB,aAAa,CAAA;AACb,WAAW,CAAA;AACX,WAAW,KAAK,CAAC,CAAC,CAAC,KAAK;AACxB,YAAY,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,4BAA4B,EAAE,CAAC,CAAC,CAAA;AACxE,WAAW,CAAC,CAAA;AACZ,OAAO,MAAM;AACb,QAAQ,GAAG,CAAC,WAAW,CAAC,IAAI;AAC5B,UAAUA,QAAM,CAAC,4BAA4B;AAC7C,UAAU,IAAI,KAAK,CAAC,oBAAoB,CAAC;AACzC,SAAS,CAAA;AACT,OAAA;AACA,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,4BAA4B,EAAE;AAChE,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH,EAAE,MAAM,iCAAiC;AACzC,IAAI,GAAG;AACP,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,SAAS;AACb,IAAI,GAAG;AACP,IAAI,iBAAiB,GAAG,KAAK;AAC7B,IAAI;AACJ,IAAI,IAAI;AACR,MAAM,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;AAC1D;AACA,MAAM,CAAC,CAAC,qCAAqC;AAC7C,QAAQ,GAAG;AACX,QAAQ,iBAAiB;AACzB,QAAQ,CAAC,IAAI,KAAK;AAClB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI;AAC9B,YAAYA,QAAM,CAAC,qCAAqC;AACxD,YAAY,IAAI;AAChB,WAAW,CAAA;AACX,SAAS;AACT,OAAA;AACA,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK;AAC1B,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI;AAC9B,YAAYA,QAAM,CAAC,uCAAuC;AAC1D,YAAY,MAAM;AAClB,WAAW,CAAA;AACX,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK;AACtB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,oCAAoC,EAAE,CAAC,CAAC,CAAA;AAC9E,SAAS,CAAC,CAAA;AACV,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,oCAAoC,EAAE;AACxE,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,qBAAqB,EAAE;AACzB,IAAI,GAAG;AACP,IAAI,QAAQ;AACZ,IAAI,aAAa,GAAG,aAAa;AACjC,IAAI,SAAS,GAAG,GAAG;AACnB,OAAO;AACP,IAAI,IAAI;AACR,MAAM,MAAM,CAAC,GAAG,IAAI,YAAY,EAAE,CAAA;AAClC,MAAM,CAAC,CAAC,yBAAyB;AACjC,QAAQ,QAAQ;AAChB,QAAQ,aAAa;AACrB,QAAQ,SAAS;AACjB,QAAQ,CAAC,IAAI,KAAK;AAClB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAA;AACxE,SAAS;AACT,OAAA;AACA,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK;AAC1B,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAA;AAC5E,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK;AACtB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAA;AACpE,SAAS,CAAC,CAAA;AACV,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,0BAA0B,EAAE;AAC9D,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,EAAE,OAAO,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,KAAK;AAC7E,IAAI,IAAI;AACR,MAAM,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;AAC1D,MAAM,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AAC3C,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;AAC7D,KAAA;AACA,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,mBAAc,GAAGyC,mBAAiB;;ACvPlC,MAAM,MAAM,GAAG7D,YAAiB,CAAA;AAChC,MAAMoB,QAAM,GAAGnB,QAAoB,CAAA;;AAEnC,MAAM6D,kBAAgB,GAAG;AACzB,EAAE,MAAM,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,uBAAuB,EAAE;AAC/E,IAAI,IAAI;AACR,MAAM,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;AAChC,QAAQ,MAAM,EAAE,MAAM;AACtB,OAAO,CAAC,CAAA;AACR,MAAM,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAC5D,QAAQ,KAAK,EAAE,sBAAsB;AACrC,QAAQ,QAAQ,EAAE;AAClB,UAAU;AACV,YAAY,IAAI,EAAE,MAAM;AACxB,YAAY,OAAO,EAAE;AACrB,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;AAC5C,cAAc;AACd,gBAAgB,IAAI,EAAE,WAAW;AACjC,gBAAgB,SAAS,EAAE,QAAQ;AACnC,eAAe;AACf,aAAa;AACb,WAAW;AACX,SAAS;AACT,OAAO,CAAC,CAAA;;AAER,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC1C,QAAM,CAAC,8BAA8B,EAAE;AAClE,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,QAAQ;AAChB,QAAQ,QAAQ;AAChB,OAAO,CAAC,CAAA;AACR,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,2BAA2B,EAAE;AAC/D,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,kBAAc,GAAG0C,kBAAgB;;ACvCjC,MAAM,OAAEzB,KAAG,EAAE,GAAGrC,YAAmB,CAAA;AACnC,MAAM+B,MAAI,GAAG9B,YAAe,CAAA;AAC5B,MAAM,EAAE,aAAa,EAAE,GAAGC,YAAa,CAAA;AAEvC,MAAM,mBAAEiC,iBAAe,EAAE,GAAG/B,IAAwB,CAAA;;AAEpD,MAAMkC,gBAAc,GAAG,gBAAgB,CAAA;AACvC,MAAMC,SAAO,GAAG,WAAW,CAAA;;AAE3B,MAAMwB,qBAAmB,GAAG;AAC5B,EAAE,0BAA0B,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,KAAK;AACxD,IAAI,IAAI;AACR;AACA,MAAM,MAAM,QAAQ,GAAGhC,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,cAAc,GAAGH,iBAAe,CAAC,QAAQ,CAAC,CAAA;;AAEtD,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,CAAA;;AAEhD;AACA,MAAM,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;;AAEnC;AACA,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;;AAEtE,MAAM,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAA;;AAEvE;AACA,MAAM,OAAO;AACb,QAAQ,SAAS,EAAE,cAAc;AACjC,QAAQ,OAAO,EAAE,IAAI;AACrB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,CAAC,CAAC,CAAA;AACvE;AACA,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,QAAQ,SAAS,EAAE,EAAE;AACrB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH,EAAE,2BAA2B,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAC/C,IAAI,IAAI;AACR,MAAM,MAAM,QAAQ,GAAGJ,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,cAAc,GAAGH,iBAAe,CAAC,QAAQ,CAAC,CAAA;AACtD,MAAM,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,CAAA;AACjE;AACA,MAAM,OAAO;AACb,QAAQ,SAAS,EAAE,QAAQ;AAC3B,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,CAAC,CAAC,CAAA;AACzE;AACA,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,QAAQ,SAAS,EAAE,EAAE;AACrB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,qBAAc,GAAG4B,qBAAmB;;ACzEpC,MAAMhC,MAAI,GAAG/B,YAAe,CAAA;AAC5B,MAAM,OAAEqC,KAAG,EAAE,GAAGpC,YAAmB,CAAA;;AAMnC,MAAM+D,kBAAgB,GAAG;AACzB,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,KAAK;AAC3C,IAAI,IAAI;AACR,MAAM,MAAM,QAAQ,GAAGjC,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQ,SAAS;AACjB,QAAQ,WAAW;AACnB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;AACxE,KAAA;AACA,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,kBAAc,GAAG2B,kBAAgB;;;;;;;;;;;;;ACXjC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAGhE,YAAwB,CAAA;AACpD,MAAM;AACN,oBAAElD,kBAAgB;AAClB,wBAAEC,sBAAoB;AACtB,0BAAEC,wBAAsB;AACxB,uBAAEC,qBAAmB;AACrB,oBAAEC,kBAAgB;AAClB,CAAC,GAAG+C,WAA8B,CAAA;;AAElC;AACA;AACA;AACA;AACA,IAAI,UAAU,GAAG,IAAI,CAAA;;AAErB,SAAS,YAAY,GAAG;AACxB,EAAE,IAAI,UAAU,KAAK,IAAI,EAAE,OAAO,UAAU,CAAA;;AAE5C,EAAE,IAAI;AACN,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,WAAW,CAAA;AAClD,IAAI,UAAU,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,uBAAuB,CAAC,EAAE;AAC7D,MAAM,QAAQ,EAAE,MAAM;AACtB,MAAM,OAAO,EAAE,IAAI;AACnB,KAAK,CAAC,CAAA;AACN,GAAG,CAAC,MAAM;AACV,IAAI,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;AACvC,GAAA;;AAEA,EAAE,OAAO,UAAU,CAAA;AACnB,CAAA;;AAEA;AACA;AACA;AACA,IAAI,cAAc,GAAG,SAAS,CAAC;;AAE/B,SAAS,gBAAgB,GAAG;AAC5B,EAAE,IAAI,cAAc,KAAK,SAAS,EAAE,OAAO,cAAc,CAAA;;AAEzD,EAAE,IAAI;AACN,IAAI,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAA;AACnC,IAAI,cAAc,GAAG,QAAQ,CAAC,cAAc,EAAE;AAC9C,MAAM,QAAQ,EAAE,MAAM;AACtB,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC7C,KAAK,CAAC,CAAC,IAAI,EAAE,CAAA;AACb,GAAG,CAAC,MAAM;AACV,IAAI,cAAc,GAAG,IAAI,CAAA;AACzB,GAAA;;AAEA,EAAE,OAAO,cAAc,CAAA;AACvB,CAAA;;AAEA;AACA;AACA;AACA;AACA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAE,CAAA;;AAEjC;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAA;;AAE1B;AACA;AACA;AACA,SAAS,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;AACtC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE;AACjC,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AACvC,GAAA;AACA,CAAA;;AAEA,MAAMgE,eAAa,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,EAAE,MAAM;AACrB,IAAI,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAA;AACzC,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;AAClD,KAAA;AACA,IAAI,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;AAC/B,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,EAAE,OAAO,GAAG,EAAE,SAAS,EAAE,MAAM,KAAK;AACjD,IAAI,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,MAAM,CAAA;;AAEhE,IAAI,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAA;AACzC,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,MAAM,QAAQ,CAAC,GAAG,EAAE/G,kBAAgB,EAAE;AACtC,QAAQ,SAAS;AACjB,QAAQ,KAAK;AACb,UAAU,oEAAoE;AAC9E,QAAQ,IAAI,EAAE,eAAe;AAC7B,OAAO,CAAC,CAAA;AACR,MAAM,OAAA;AACN,KAAA;;AAEA;AACA,IAAI,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,CAAC,CAAA;;AAEtE,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;AACjC,KAAA;;AAEA,IAAI,IAAI,YAAY,EAAE;AACtB,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAA;AACvD,KAAA;;AAEA;AACA,IAAI,MAAM,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,CAAA;AAClE,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;AACtC,KAAA;;AAEA;AACA,IAAI,MAAM,WAAW,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;AAC9E,IAAI,MAAM,QAAQ;AAClB,MAAM,OAAO,WAAW,EAAE,OAAO,KAAK,QAAA;AACtC,UAAU,WAAW,CAAC,OAAA;AACtB,UAAU,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAA;AAC5C,YAAY,WAAW,CAAC,OAAA;AACxB,eAAe,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,CAAA;AAC9C,eAAe,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAA;AAChC,eAAe,IAAI,CAAC,IAAI,CAAA;AACxB,YAAY,EAAE,CAAA;;AAEd,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,MAAM,QAAQ,CAAC,GAAG,EAAEA,kBAAgB,EAAE;AACtC,QAAQ,SAAS;AACjB,QAAQ,KAAK,EAAE,0BAA0B;AACzC,QAAQ,IAAI,EAAE,WAAW;AACzB,OAAO,CAAC,CAAA;AACR,MAAM,OAAA;AACN,KAAA;;AAEA,IAAI,IAAI;AACR,MAAM,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAA;AACrC,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE;AAC5C,QAAQ,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC/C,QAAQ,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AACvC,OAAO,CAAC,CAAA;;AAER,MAAM,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;;AAE3C;AACA,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;AACjC,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;;AAEvB,MAAM,IAAI,YAAY,GAAG,EAAE,CAAA;AAC3B,MAAM,IAAI,YAAY,GAAG,EAAE,CAAA;AAC3B,MAAM,IAAI,iBAAiB,GAAG,IAAI,CAAA;AAClC,MAAM,IAAI,OAAO,GAAG,KAAK,CAAA;;AAEzB;AACA,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,EAAE,CAAA;;AAEvC,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,KAAK;AACzC,QAAQ,YAAY,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;;AAExC;AACA,QAAQ,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC9C,QAAQ,YAAY,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;;AAEnC,QAAQ,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAClC,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAA;;AAE5B,UAAU,IAAI,MAAM,CAAA;AACpB,UAAU,IAAI;AACd,YAAY,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AACrC,WAAW,CAAC,MAAM;AAClB,YAAY,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,IAAI,CAAC,CAAA;AAC7E,YAAY,SAAA;AACZ,WAAA;;AAEA;AACA,UAAU,IAAI,MAAM,CAAC,UAAU,IAAI,UAAU,EAAE;AAC/C,YAAY,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAA;AACjD,YAAY,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;AACvD,WAAA;;AAEA;AACA,UAAU,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAqB,EAAE;AACrD,YAAY,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;AAC1E,cAAc,QAAQ,CAAC,GAAG,EAAEJ,kBAAgB,EAAE;AAC9C,gBAAgB,SAAS;AACzB,gBAAgB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI;AACvC,eAAe,CAAC,CAAA;AAChB,aAAa,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,KAAK,kBAAkB,EAAE;AAClE;AACA,cAAc,MAAM,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC1D,cAAc,IAAI,EAAE,EAAE;AACtB,gBAAgB,EAAE,CAAC,YAAY;AAC/B,kBAAkB,CAAC,EAAE,CAAC,YAAY,IAAI,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAA;AAC7E,eAAA;AACA,aAAA;AACA,WAAW,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAqB,EAAE;AAC5D,YAAY,IAAI,MAAM,CAAC,aAAa,EAAE,IAAI,KAAK,UAAU,EAAE;AAC3D,cAAc,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAA;AACpD,cAAc,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE;AAChD,gBAAgB,SAAS,EAAE,SAAS,CAAC,EAAE;AACvC,gBAAgB,QAAQ,EAAE,SAAS,CAAC,IAAI;AACxC,gBAAgB,YAAY,EAAE,EAAE;AAChC,eAAe,CAAC,CAAA;AAChB,cAAc,QAAQ,CAAC,GAAG,EAAEC,sBAAoB,EAAE;AAClD,gBAAgB,SAAS;AACzB,gBAAgB,SAAS,EAAE,SAAS,CAAC,EAAE;AACvC,gBAAgB,QAAQ,EAAE,SAAS,CAAC,IAAI;AACxC,gBAAgB,UAAU,EAAE,aAAa;AACzC,gBAAgB,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,EAAE;AAC5C,eAAe,CAAC,CAAA;AAChB,aAAA;AACA,WAAW,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,oBAAoB,EAAE;AAC3D;AACA,YAAY,MAAM,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACxD,YAAY,IAAI,EAAE,IAAI,EAAE,CAAC,YAAY,EAAE;AACvC,cAAc,IAAI;AAClB,gBAAgB,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA;AAC3D,eAAe,CAAC,MAAM;AACtB,gBAAgB,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,YAAY,CAAA;AAC/C,eAAA;AACA,aAAA;AACA,WAAW,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE;AACrD;AACA,WAAW,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC/C;AACA,YAAY,MAAM,OAAO,GAAG,EAAE,CAAA;AAC9B,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE;AAC/B,cAAc,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;AACjE,aAAA;;AAEA,YAAY,QAAQ,CAAC,GAAG,EAAEE,qBAAmB,EAAE;AAC/C,cAAc,SAAS;AACvB,cAAc,OAAO;AACrB,cAAc,UAAU,EAAE,MAAM,CAAC,WAAW,IAAI,UAAU;AAC1D,cAAc,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;AACvC,aAAa,CAAC,CAAA;AACd,WAAA;AACA,SAAA;AACA,OAAO,CAAC,CAAA;;AAER,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,KAAK;AACzC,QAAQ,YAAY,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;AACxC,OAAO,CAAC,CAAA;;AAER,MAAM,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;AACjC,QAAQ,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;AACzC,QAAQ,QAAQ,CAAC,GAAG,EAAEC,kBAAgB,EAAE;AACxC,UAAU,SAAS;AACnB,UAAU,KAAK,EAAE,CAAC,4BAA4B,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7D,UAAU,IAAI,EAAE,iBAAiB;AACjC,SAAS,CAAC,CAAA;AACV,OAAO,CAAC,CAAA;;AAER,MAAM,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK;AAClC,QAAQ,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;;AAEzC;AACA,QAAQ,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE;AACjC,UAAU,IAAI;AACd,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;AACnD,YAAY,IAAI,MAAM,CAAC,UAAU,IAAI,UAAU,EAAE;AACjD,cAAc,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;AACzD,aAAA;AACA,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC1C,cAAc,MAAM,OAAO,GAAG,EAAE,CAAA;AAChC,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE;AACjC,gBAAgB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;AACnE,eAAA;AACA,cAAc,QAAQ,CAAC,GAAG,EAAED,qBAAmB,EAAE;AACjD,gBAAgB,SAAS;AACzB,gBAAgB,OAAO;AACvB,gBAAgB,UAAU,EAAE,MAAM,CAAC,WAAW,IAAI,UAAU;AAC5D,gBAAgB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;AACzC,eAAe,CAAC,CAAA;AAChB,cAAc,OAAA;AACd,aAAA;AACA,WAAW,CAAC,MAAM;AAClB;AACA,WAAA;AACA,SAAA;;AAEA,QAAQ,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,IAAI,EAAE;AACzC;AACA,UAAU,IAAI,SAAS,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACzE,YAAY,OAAO,GAAG,IAAI,CAAA;AAC1B,YAAY,IAAI,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;AACvD;AACA,YAAYgH,eAAa,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE;AACtD,cAAc,GAAG,MAAM;AACvB,cAAc,mBAAmB,EAAE,IAAI;AACvC,aAAa,CAAC,CAAA;AACd,YAAY,OAAA;AACZ,WAAA;;AAEA;AACA,UAAU;AACV,YAAY,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;AACzC,YAAY,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC1C,YAAY,YAAY,CAAC,QAAQ,CAAC,mBAAmB,CAAA;AACrD,YAAY;AACZ,YAAY,QAAQ,CAAC,GAAG,EAAE/G,kBAAgB,EAAE;AAC5C,cAAc,SAAS;AACvB,cAAc,KAAK;AACnB,gBAAgB,iFAAiF;AACjG,cAAc,IAAI,EAAE,gBAAgB;AACpC,aAAa,CAAC,CAAA;AACd,YAAY,OAAA;AACZ,WAAA;;AAEA,UAAU,QAAQ,CAAC,GAAG,EAAEA,kBAAgB,EAAE;AAC1C,YAAY,SAAS;AACrB,YAAY,KAAK,EAAE,CAAC,4BAA4B,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AAChH,YAAY,IAAI,EAAE,WAAW;AAC7B,WAAW,CAAC,CAAA;AACZ,SAAA;AACA,OAAO,CAAC,CAAA;AACR,KAAK,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;AACvC,MAAM,QAAQ,CAAC,GAAG,EAAEA,kBAAgB,EAAE;AACtC,QAAQ,SAAS;AACjB,QAAQ,KAAK,EAAE,CAAC,4BAA4B,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAC3D,QAAQ,IAAI,EAAE,iBAAiB;AAC/B,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE,CAAC,SAAS,KAAK;AAC/B,IAAI,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;AAChD,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC3B,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;AACvC,MAAM,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC9B,KAAA;AACA,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAA;AAC3D,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE,CAAC,UAAU,KAAK;AAChC,IAAI,IAAI,UAAU,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AAChD,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;AACjC,MAAM,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC9B,KAAA;AACA,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;AAC7B,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,gBAAgB,EAAE,CAAC,UAAU,KAAK;AACpC,IAAI,MAAM,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,CAAA;AAClE;AACA,IAAI,IAAI,eAAe,GAAG,KAAK,CAAA;AAC/B,IAAI,KAAK,MAAM,GAAG,KAAK,CAAC,IAAI,eAAe,EAAE;AAC7C,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACzB,QAAQ,eAAe,GAAG,IAAI,CAAA;AAC9B,QAAQ,MAAA;AACR,OAAA;AACA,KAAA;AACA,IAAI,OAAO;AACX,MAAM,UAAU,EAAE,CAAC,CAAC,SAAS;AAC7B,MAAM,SAAS,EAAE,SAAS,IAAI,SAAS;AACvC,MAAM,eAAe;AACrB,KAAK,CAAA;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,CAAC,UAAU,KAAK;AAC9B;AACA,IAAI,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,eAAe,EAAE;AAClD,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AACxC,QAAQ,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC7B,QAAQ,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACrC,OAAA;AACA,KAAA;AACA;AACA,IAAI,IAAI,UAAU,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AAChD,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;AACjC,KAAA;AACA,IAAI,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC5B,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,eAAc,GAAG+G,eAAa;;;;;;;;;;;;;ACna9B,MAAM,SAAS,GAAGjE,YAA4B,CAAA;AAC9C,MAAMsD,eAAa,GAAGrD,oBAA0B,CAAA;AAChD,MAAMgE,eAAa,GAAG/D,eAA0B,CAAA;AAChD,MAAM;AACN,oBAAEpD,kBAAgB;AAClB,wBAAEC,sBAAoB;AACtB,0BAAEC,wBAAsB;AACxB,uBAAEC,qBAAmB;AACrB,oBAAEC,kBAAgB;AAClB,CAAC,GAAGiD,WAA8B,CAAA;;AAElC;AACA;AACA;AACA;AACA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAE,CAAA;;AAEhC;AACA;AACA;AACA,MAAM,uBAAuB,GAAG,EAAE,CAAA;;AAElC;AACA;AACA;AACA;AACA;AACA,SAAS,kBAAkB,CAAC,IAAI,EAAE;AAClC,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,IAAI,CAAC,IAAI;AACnB,IAAI,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;AACvC,IAAI,YAAY,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;AACxE,GAAG,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,SAAS,EAAE;AAC1C,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,qBAAqB,CAAA;AAC9C,EAAE,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;;AAE3D,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAA;AACjC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,qBAAqB,CAAA;;AAE3C;AACA,EAAE,IAAI,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AACvD,IAAI,OAAO,MAAM,CAAC,OAAA;AAClB,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,CAAA;AACtC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAA;AACxB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAA;AACjB,GAAA;;AAEA;AACA,EAAE,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,OAAO,MAAM,CAAA;;AAE/C;AACA,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;AAC/B,CAAA;;AAEA,MAAM+D,eAAa,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,EAAE,OAAO,GAAG,EAAE,SAAS,EAAE,MAAM,KAAK;AACjD;AACA,IAAI,IAAI,MAAM,CAAC,OAAO,KAAK,aAAa,EAAE;AAC1C,MAAM,OAAOD,eAAa,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;AAC9D,KAAA;;AAEA,IAAI,MAAM;AACV,MAAM,MAAM;AACZ,MAAM,KAAK,GAAG,0BAA0B;AACxC,MAAM,QAAQ;AACd,MAAM,KAAK,GAAG,EAAE;AAChB,MAAM,aAAa,GAAG,EAAE;AACxB,MAAM,YAAY;AAClB,MAAM,aAAa,GAAG,uBAAuB;AAC7C,KAAK,GAAG,MAAM,CAAA;;AAEd;AACA,IAAI,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;AACjD,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;;AAElD,IAAI,IAAI;AACR,MAAM,IAAI,CAAC,MAAM,EAAE;AACnB,QAAQ,MAAM,IAAI,KAAK;AACvB,UAAU,4EAA4E;AACtF,SAAS,CAAA;AACT,OAAA;;AAEA,MAAM,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;;AAE9C;AACA,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;;AAE1D;AACA,MAAM,IAAI,eAAe,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAA;AACzC,MAAM,IAAI,SAAS,GAAG,CAAC,CAAA;;AAEvB,MAAM,OAAO,SAAS,IAAI,aAAa,EAAE;AACzC;AACA,QAAQ,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE;AAC5C,UAAU,OAAA;AACV,SAAA;;AAEA;AACA,QAAQ,MAAM,aAAa,GAAG;AAC9B,UAAU,KAAK;AACf,UAAU,UAAU,EAAE,IAAI;AAC1B,UAAU,QAAQ,EAAE,eAAe;AACnC,UAAU,MAAM,EAAE,IAAI;AACtB,SAAS,CAAA;AACT,QAAQ,IAAI,YAAY,EAAE;AAC1B,UAAU,aAAa,CAAC,MAAM,GAAG,YAAY,CAAA;AAC7C,SAAA;AACA,QAAQ,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,UAAU,aAAa,CAAC,KAAK,GAAG,cAAc,CAAA;AAC9C,SAAA;;AAEA;AACA,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE;AAC7D,UAAU,MAAM,EAAE,eAAe,CAAC,MAAM;AACxC,SAAS,CAAC,CAAA;;AAEV,QAAQ,IAAI,qBAAqB,GAAG,EAAE,CAAA;AACtC,QAAQ,IAAI,UAAU,GAAG,IAAI,CAAA;;AAE7B;AACA,QAAQ,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;AACpC,UAAU,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE;AACzC,YAAY,GAAG,CAAC,WAAW,CAAC,IAAI,CAACnH,kBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACvE,WAAA;AACA,SAAS,CAAC,CAAA;;AAEV;AACA,QAAQ,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,CAAA;AACxD,QAAQ,qBAAqB,GAAG,YAAY,CAAC,OAAO,CAAA;AACpD,QAAQ,UAAU,GAAG,YAAY,CAAC,WAAW,CAAA;;AAE7C;AACA,QAAQ,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM;AAC1D,UAAU,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,UAAU;AAC9C,SAAS,CAAA;;AAET,QAAQ,IAAI,UAAU,KAAK,UAAU,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;AACrE;AACA,UAAU,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE;AACzC,YAAY,GAAG,CAAC,WAAW,CAAC,IAAI,CAACG,qBAAmB,EAAE;AACtD,cAAc,SAAS;AACvB,cAAc,OAAO,EAAE,qBAAqB;AAC5C,cAAc,UAAU;AACxB,cAAc,KAAK,EAAE,YAAY,CAAC,KAAK;AACvC,aAAa,CAAC,CAAA;AACd,WAAA;AACA,UAAU,OAAA;AACV,SAAA;;AAEA;AACA,QAAQ,SAAS,EAAE,CAAA;;AAEnB;AACA,QAAQ,eAAe,CAAC,IAAI,CAAC;AAC7B,UAAU,IAAI,EAAE,WAAW;AAC3B,UAAU,OAAO,EAAE,qBAAqB;AACxC,SAAS,CAAC,CAAA;;AAEV;AACA,QAAQ,MAAM,WAAW,GAAG,EAAE,CAAA;AAC9B,QAAQ,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE;AAC/C,UAAU,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,OAAA;;AAE9C,UAAU,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;;AAE1D;AACA,UAAU,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE;AACzC,YAAY,GAAG,CAAC,WAAW,CAAC,IAAI,CAACF,sBAAoB,EAAE;AACvD,cAAc,SAAS;AACvB,cAAc,SAAS,EAAE,SAAS,CAAC,EAAE;AACrC,cAAc,QAAQ,EAAE,SAAS,CAAC,IAAI;AACtC,cAAc,UAAU;AACxB,cAAc,KAAK,EAAE,SAAS,CAAC,KAAK;AACpC,aAAa,CAAC,CAAA;AACd,WAAA;;AAEA,UAAU,IAAI,UAAU,CAAA;AACxB,UAAU,IAAI,OAAO,GAAG,KAAK,CAAA;;AAE7B,UAAU,IAAI,CAAC,UAAU,EAAE;AAC3B,YAAY,UAAU,GAAG,CAAC,qCAAqC,EAAE,SAAS,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;AACrH,YAAY,OAAO,GAAG,IAAI,CAAA;AAC1B,WAAW,MAAM;AACjB,YAAY,IAAI;AAChB,cAAc,MAAM,SAAS,GAAG,MAAMuG,eAAa,CAAC,QAAQ;AAC5D,gBAAgB,GAAG;AACnB,gBAAgB,UAAU;AAC1B,gBAAgB,SAAS,CAAC,IAAI;AAC9B,gBAAgB,SAAS,CAAC,KAAK;AAC/B,eAAe,CAAA;AACf,cAAc,IAAI,SAAS,CAAC,KAAK,EAAE;AACnC,gBAAgB,UAAU,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;AAC1D,gBAAgB,OAAO,GAAG,IAAI,CAAA;AAC9B,eAAe,MAAM;AACrB,gBAAgB,UAAU,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;AAC7D,eAAA;AACA,aAAa,CAAC,OAAO,GAAG,EAAE;AAC1B,cAAc,UAAU,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;AAC/D,cAAc,OAAO,GAAG,IAAI,CAAA;AAC5B,aAAA;AACA,WAAA;;AAEA;AACA,UAAU,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE;AACzC,YAAY,GAAG,CAAC,WAAW,CAAC,IAAI,CAACtG,wBAAsB,EAAE;AACzD,cAAc,SAAS;AACvB,cAAc,SAAS,EAAE,SAAS,CAAC,EAAE;AACrC,cAAc,QAAQ,EAAE,SAAS,CAAC,IAAI;AACtC,cAAc,MAAM,EAAE,UAAU;AAChC,cAAc,OAAO;AACrB,aAAa,CAAC,CAAA;AACd,WAAA;;AAEA,UAAU,WAAW,CAAC,IAAI,CAAC;AAC3B,YAAY,IAAI,EAAE,aAAa;AAC/B,YAAY,WAAW,EAAE,SAAS,CAAC,EAAE;AACrC,YAAY,OAAO,EAAE,UAAU;AAC/B,YAAY,QAAQ,EAAE,OAAO;AAC7B,WAAW,CAAC,CAAA;AACZ,SAAA;;AAEA;AACA,QAAQ,eAAe,CAAC,IAAI,CAAC;AAC7B,UAAU,IAAI,EAAE,MAAM;AACtB,UAAU,OAAO,EAAE,WAAW;AAC9B,SAAS,CAAC,CAAA;;AAEV;AACA,OAAA;;AAEA;AACA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE;AACrC,QAAQ,GAAG,CAAC,WAAW,CAAC,IAAI,CAACE,kBAAgB,EAAE;AAC/C,UAAU,SAAS;AACnB,UAAU,KAAK,EAAE,CAAC,kCAAkC,EAAE,aAAa,CAAC,wCAAwC,CAAC;AAC7G,UAAU,IAAI,EAAE,iBAAiB;AACjC,SAAS,CAAC,CAAA;AACV,OAAA;AACA,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE;AAC1C;AACA,QAAQ,OAAA;AACR,OAAA;;AAEA,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,qCAAqC,CAAC,EAAE,KAAK,CAAC,CAAA;;AAEnE,MAAM,MAAM,YAAY,GAAG;AAC3B,QAAQ,SAAS;AACjB,QAAQ,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,eAAe;AAC/C,QAAQ,IAAI,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,SAAS;AACrD,OAAO,CAAA;;AAEP;AACA,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;AAChC,QAAQ,YAAY,CAAC,IAAI,GAAG,cAAc,CAAA;AAC1C,QAAQ,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC,CAAA;AACzD,QAAQ,IAAI,UAAU,EAAE;AACxB,UAAU,YAAY,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;AAC5D,SAAA;AACA,OAAA;;AAEA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE;AACrC,QAAQ,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,kBAAgB,EAAE,YAAY,CAAC,CAAA;AAC5D,OAAA;AACA,KAAK,SAAS;AACd,MAAM,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;AACtC,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK;AACpC,IAAI,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;AACpD,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;AACxB,MAAM,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;AACtC,MAAM,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC9B,KAAA;AACA;AACA,IAAI,OAAO+G,eAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;AAChD,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,eAAc,GAAGC,eAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChT9B,MAAM,MAAM,GAAG,UAAyC,CAAA;;AAExD,MAAMC,wBAAsB,GAAG,OAAO,CAAA;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,yBAAuB,CAAC,MAAM,EAAE;AACzC,EAAE,MAAM,MAAM,GAAG,EAAE,CAAA;;AAEnB,EAAE,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC7E,IAAI,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,kCAAkC,CAAC,EAAE,CAAA;AACzE,GAAA;;AAEA;AACA,EAAE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE;AACvC,IAAI,IAAI,EAAE,KAAK,IAAI,MAAM,CAAC,EAAE;AAC5B,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACvD,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,IAAI,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;AACnC,GAAA;;AAEA;AACA,EAAE,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,EAAE;AAChD,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAA;AACnD,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;AAC5D,IAAI,MAAM,CAAC,IAAI;AACf,MAAM,CAAC,8DAA8D,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;AAC9F,KAAK,CAAA;AACL,GAAA;;AAEA;AACA,EAAE,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACnE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAA;AACpD,GAAG,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE;AACvC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAA;AACzD,GAAA;;AAEA;AACA,EAAE,IAAI,aAAa,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE;AACzE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAA;AACjD,GAAA;;AAEA;AACA,EAAE,IAAI,QAAQ,IAAI,MAAM,EAAE;AAC1B,IAAI;AACJ,MAAM,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;AACvC,MAAM,MAAM,CAAC,MAAM,KAAK,IAAI;AAC5B,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAA;AACjC,MAAM;AACN,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAA;AAC5E,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC9E,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAA;AAC7D,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,IAAI,WAAW,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE;AACtE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAA;AAChD,GAAA;;AAEA;AACA,EAAE,IAAI,MAAM,IAAI,MAAM,EAAE;AACxB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACrC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAA;AACvD,KAAK,MAAM;AACX,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnD,QAAQ,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAChD,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAA;AACtD,SAAA;AACA,OAAA;AACA,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,EAAE;AACzE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAA;AAChD,GAAG,MAAM;AACT,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AACjD,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAA;AACxD,KAAK,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACrD,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,wDAAwD,CAAC,CAAC,CAAA;AAC7E,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AACtC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAA;AAC7C,GAAG,MAAM;AACT,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpD,MAAM,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AACjC,MAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE;AAC/C,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAA;AACxD,QAAQ,SAAA;AACR,OAAA;AACA,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,EAAE;AAC7C,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAA;AACpE,OAAA;AACA,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE;AACvD,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAA;AACzE,OAAA;AACA,MAAM,IAAI,SAAS,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE;AAC3D,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAA;AAC/D,OAAA;AACA,MAAM,IAAI,UAAU,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE;AAC9D,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAA;AACjE,OAAA;AACA,MAAM,IAAI,QAAQ,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE;AACzD,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAA;AAC9D,OAAA;AACA,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,IAAI,WAAW,IAAI,MAAM,EAAE;AAC7B,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AAC1C,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAA;AACjD,KAAK,MAAM;AACX,MAAM,MAAM,YAAY,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;AACvD,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxD,QAAQ,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;AACrC,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE;AACjD,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAA;AAC5D,UAAU,SAAA;AACV,SAAA;AACA,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE;AACnD,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAA;AAC1E,SAAA;AACA,QAAQ,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE;AACrD,UAAU,MAAM,CAAC,IAAI;AACrB,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,6DAA6D,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAC7G,WAAW,CAAA;AACX,SAAA;AACA,QAAQ,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;AACvD,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAA;AAClE,SAAA;AACA,OAAA;AACA,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,IAAI,WAAW,IAAI,MAAM,EAAE;AAC7B,IAAI,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE;AAC9C,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAA;AACjD,KAAK,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,GAAG,EAAE;AAC9C,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAA;AAChE,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,IAAI,aAAa,IAAI,MAAM,EAAE;AAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;AAC5C,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAA;AACnD,KAAK,MAAM;AACX,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1D,QAAQ,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;AACxC,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,IAAI,EAAE;AACnD,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAA;AAC9D,UAAU,SAAA;AACV,SAAA;AACA;AACA,QAAQ;AACR,UAAU,OAAO,EAAE,CAAC,MAAM,KAAK,QAAQ;AACvC,UAAU,EAAE,CAAC,MAAM,KAAK,IAAI;AAC5B,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM;AAC3B,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,KAAA;AACrB,UAAU;AACV,UAAU,MAAM,CAAC,IAAI;AACrB,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC,gDAAgD,CAAC;AAC/E,WAAW,CAAA;AACX,SAAA;AACA;AACA,QAAQ;AACR,UAAU,OAAO,EAAE,CAAC,MAAM,KAAK,QAAQ;AACvC,UAAU,EAAE,CAAC,MAAM,KAAK,IAAI;AAC5B,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM;AAC3B,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,OAAA;AACrB,UAAU;AACV,UAAU,MAAM,CAAC,IAAI;AACrB,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC,kDAAkD,CAAC;AACjF,WAAW,CAAA;AACX,SAAA;AACA,OAAA;AACA,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;AACtD,EAAE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACzC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACtC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5C,KAAA;AACA,GAAA;;AAEA,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;AAC/C,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,eAAa,CAAC,MAAM,EAAE;AAC/B,EAAE,OAAO;AACT,IAAI,aAAa,EAAEF,wBAAsB;AACzC,IAAI,WAAW,EAAE,EAAE;AACnB,IAAI,SAAS,EAAE,IAAI;AACnB,IAAI,IAAI,EAAE,EAAE;AACZ,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,WAAW,EAAE,EAAE;AACnB,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,WAAW,EAAE,EAAE;AACnB,IAAI,GAAG,MAAM;AACb,IAAI,SAAS,EAAE;AACf,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,OAAO,EAAE,CAAC;AAChB,MAAM,MAAM,EAAE,CAAC;AACf,MAAM,GAAG,MAAM,CAAC,SAAS;AACzB,KAAK;AACL,GAAG,CAAA;AACH,CAAA;;AAEA,IAAAG,0BAAc,GAAG;AACjB,2BAAEF,yBAAuB;AACzB,iBAAEC,eAAa;AACf,0BAAEF,wBAAsB;AACxB,CAAC;;;;;;;;;AC7OD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASI,uBAAqB,CAAC,MAAM,EAAE;AACvC,EAAE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE,CAAA;;AAE9B,EAAE,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;AAC7B;AACA,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;AAClD,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AACpC,KAAA;;AAEA;AACA,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,MAAM,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC3D;AACA,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AAC9D;AACA,UAAU,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;AAClD,YAAY,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC1C,WAAA;AACA,SAAA;AACA,OAAA;AACA,KAAA;AACA,GAAA;;AAEA;AACA;AACA,EAAE,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;AAC7B,IAAI;AACJ,MAAM,IAAI,CAAC,SAAS;AACpB,MAAM,IAAI,CAAC,SAAS,KAAK,qBAAqB;AAC9C,MAAM,IAAI,CAAC,SAAS,KAAK,WAAA;AACzB,MAAM;AACN,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AACpC,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,UAAU,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAA;AAC1C,EAAE,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;;AAEhC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;AAC/B,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,oBAAkB,CAAC,MAAM,EAAE;AACpC,EAAE,MAAM,MAAM,GAAG,EAAE,CAAA;;AAEnB,EAAE,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;AAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,SAAA;;AAE/D,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAA;AACvC,IAAI,IAAI,CAAC,YAAY,EAAE,SAAA;;AAEvB,IAAI,KAAK,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AAC9E,MAAM,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE;AAC9C;AACA,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,UAAU,MAAM,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE;AAC9D,UAAU,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE;AAC9D,SAAS,CAAC,CAAA;AACV,OAAO,MAAM;AACb,QAAQ,OAAO,cAAc,KAAK,QAAQ;AAC1C,QAAQ,cAAc,KAAK,IAAA;AAC3B,QAAQ;AACR;AACA,QAAQ,KAAK,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO;AAC9D,UAAU,cAAc;AACxB,SAAS,EAAE;AACX,UAAU,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAC5C,UAAU,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;;AAEvC,UAAU,IAAI,OAAO,GAAG,SAAS,CAAA;AACjC,UAAU,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;AAChD,YAAY,OAAO,GAAG,YAAY,CAAA;AAClC,WAAA;;AAEA,UAAU,MAAM,CAAC,IAAI,CAAC;AACtB,YAAY,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE;AAC9D,YAAY,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE;AACrD,WAAW,CAAC,CAAA;AACZ,SAAA;AACA,OAAA;AACA,KAAA;AACA,GAAA;;AAEA,EAAE,OAAO,MAAM,CAAA;AACf,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,yBAAuB,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI,EAAE;AACxE,EAAE,MAAM,OAAO,GAAG,EAAE,CAAA;AACpB,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAA;;AAExB,EAAE,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE;AACrC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAA;AACxB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;;AAElB,IAAI,IAAI,WAAW,GAAG,EAAE,CAAA;AACxB,IAAI,IAAI,OAAO,GAAG,GAAG,CAAA;AACrB,IAAI,IAAI,MAAM,GAAG,EAAE,CAAA;;AAEnB;AACA,IAAI,IAAI,cAAc,EAAE;AACxB,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,UAAU,EAAE,CAAA;AAC1D,MAAM,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE;AACxC,QAAQ,IAAI,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACjE,UAAU,WAAW,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,CAAA;AACpC,UAAU,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,GAAG,CAAA;AACpC,UAAU,MAAM;AAChB,YAAY,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAA;AAC1E,UAAU,MAAA;AACV,SAAA;AACA,OAAA;AACA,KAAA;;AAEA,IAAI,OAAO,CAAC,IAAI,CAAC;AACjB,MAAM,EAAE,EAAE,WAAW,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI;AACvD,MAAM,OAAO,EAAE,WAAW,IAAI,IAAI;AAClC,MAAM,OAAO;AACb,MAAM,QAAQ,EAAE,IAAI;AACpB,MAAM,MAAM,EAAE,MAAM,IAAI,EAAE;AAC1B,KAAK,CAAC,CAAA;AACN,GAAA;;AAEA,EAAE,OAAO,OAAO,CAAA;AAChB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,2BAAyB,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI,EAAE;AAC1E,EAAE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAE,CAAA;;AAE/B,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,CAAA;;AAEhC,EAAE,MAAM,gBAAgB,GAAG,cAAc,CAAC,UAAU,EAAE,CAAA;;AAEtD,EAAE,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE;AACrC,IAAI,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE;AACtC,MAAM,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC9E,QAAQ,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE;AACrC,UAAU,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAA;AACpD,UAAU,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACrC,YAAY,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE;AACjC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI;AAC1B,cAAc,aAAa,EAAE,CAAC,CAAC,aAAa;AAC5C,cAAc,QAAQ,EAAE,CAAC,CAAC,QAAQ,KAAK,KAAK;AAC5C,cAAc,MAAM,EAAE,EAAE;AACxB,aAAa,CAAC,CAAA;AACd,WAAA;AACA,UAAU,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAC5C,UAAU,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC5C,YAAY,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACnC,WAAA;AACA,SAAA;AACA,OAAA;AACA,KAAA;AACA,GAAA;;AAEA,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAA;AACzC,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,0BAAwB,CAAC,MAAM,EAAE,WAAW,EAAE;AACvD,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,MAAM,CAAA;;AAExD;AACA;AACA,EAAE,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAA;;AAErC,EAAE,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;AAClC,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAA;AAC5C,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAA;AAC5C,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAA;AACxC,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAA;;AAExC,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,EAAE,SAAA;;AAEtD,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;AAC9C,MAAM,iBAAiB,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;AAC7C,KAAA;;AAEA,IAAI,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;;AAEzD,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;AAC/B,MAAM,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAA;AAC/B,KAAA;;AAEA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,GAAG,OAAO,IAAI,SAAS,CAAA;AAC7D,GAAA;;AAEA;AACA,EAAE,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;AAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAA;;AAEzB,IAAI,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC3D,IAAI,IAAI,SAAS,EAAE;AACnB;AACA,MAAM,IAAI,CAAC,SAAS,GAAG,EAAE,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,CAAA;AAClE,KAAA;AACA,GAAA;;AAEA,EAAE,OAAO,MAAM,CAAA;AACf,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,2BAA2B;AACpC,EAAE,gBAAgB,GAAG,EAAE;AACvB,EAAE,gBAAgB,GAAG,EAAE;AACvB,EAAE,gBAAgB,GAAG,EAAE;AACvB,EAAE;AACF,EAAE,MAAM,eAAe,GAAG,IAAI,GAAG,EAAE,CAAA;AACnC,EAAE,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE;AACpC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE;AAChB,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AACpC,KAAA;AACA,GAAA;;AAEA,EAAE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAE,CAAA;AAClC,EAAE,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE;AACpC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE;AAChB,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AACnC,KAAA;AACA,GAAA;;AAEA,EAAE,MAAM,OAAO,GAAG,EAAE,CAAA;AACpB,EAAE,IAAI,cAAc,GAAG,CAAC,CAAA;AACxB,EAAE,IAAI,cAAc,GAAG,CAAC,CAAA;AACxB,EAAE,IAAI,gBAAgB,GAAG,CAAC,CAAA;;AAE1B,EAAE,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE;AACtC,IAAI,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAA;AACnC,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,KAAK,KAAK,CAAA;AAC3C,IAAI,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;;AAEtD,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,cAAc,EAAE,CAAA;AACtB,MAAM,OAAO,CAAC,IAAI,CAAC;AACnB,QAAQ,OAAO,EAAE,WAAW;AAC5B,QAAQ,QAAQ;AAChB,QAAQ,MAAM,EAAE,WAAW;AAC3B,QAAQ,gBAAgB,EAAE,SAAS,CAAC,OAAO,IAAI,IAAI;AACnD,QAAQ,eAAe,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG;AAC3C,OAAO,CAAC,CAAA;AACR,KAAK,MAAM,IAAI,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;AAChD,MAAM,cAAc,EAAE,CAAA;AACtB,MAAM,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;AACzD,MAAM,OAAO,CAAC,IAAI,CAAC;AACnB,QAAQ,OAAO,EAAE,WAAW;AAC5B,QAAQ,QAAQ;AAChB,QAAQ,MAAM,EAAE,YAAY;AAC5B,QAAQ,gBAAgB,EAAE,WAAW,CAAC,OAAO,IAAI,IAAI;AACrD,QAAQ,eAAe,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG;AAC3C,OAAO,CAAC,CAAA;AACR,KAAK,MAAM;AACX,MAAM,gBAAgB,EAAE,CAAA;AACxB,MAAM,OAAO,CAAC,IAAI,CAAC;AACnB,QAAQ,OAAO,EAAE,WAAW;AAC5B,QAAQ,QAAQ;AAChB,QAAQ,MAAM,EAAE,aAAa;AAC7B,QAAQ,eAAe,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG;AAC3C,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAA;;AAEA,EAAE,MAAM,sBAAsB,GAAG,OAAO,CAAC,IAAI;AAC7C,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,aAAa,IAAI,CAAC,CAAC,QAAQ;AACnD,GAAG,CAAA;;AAEH,EAAE,OAAO;AACT,IAAI,UAAU,EAAE,CAAC,sBAAsB;AACvC,IAAI,OAAO,EAAE;AACb,MAAM,KAAK,EAAE,gBAAgB,CAAC,MAAM;AACpC,MAAM,SAAS,EAAE,cAAc;AAC/B,MAAM,SAAS,EAAE,cAAc;AAC/B,MAAM,WAAW,EAAE,gBAAgB;AACnC,KAAK;AACL,IAAI,OAAO;AACX,GAAG,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,wBAAwB,CAAC,eAAe,EAAE,OAAO,GAAG,EAAE,EAAE;AACjE,EAAE,MAAM,IAAI,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI,WAAW;AACnD,KAAK,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAA;AACnC,KAAK,OAAO,CAAC,MAAM,EAAE,GAAG,CAAA;AACxB,KAAK,WAAW,EAAE,CAAA;;AAElB,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAA;AAC7C,EAAE,MAAM,OAAO,GAAG,OAAO,CAAA;;AAEzB,EAAE,MAAM,QAAQ,GAAG;AACnB,IAAI,UAAU;AACd,IAAI,IAAI;AACR,IAAI,WAAW,EAAE,eAAe,CAAC,IAAI,IAAI,WAAW;AACpD,IAAI,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE;AAC9C,IAAI,WAAW,EAAE,eAAe,CAAC,WAAW,IAAI,EAAE;AAClD,IAAI,OAAO;AACX,IAAI,IAAI,EAAE,WAAW;AACrB,IAAI,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,SAAS;AAC3C,IAAI,IAAI,EAAE,eAAe,CAAC,IAAI,IAAI,EAAE;AACpC,IAAI,IAAI,EAAE,eAAe,CAAC,IAAI,IAAI,MAAM;AACxC,IAAI,WAAW,EAAE,CAAC,mBAAmB,EAAE,UAAU,CAAC,iCAAiC,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,eAAe,CAAC;AACvJ,IAAI,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;AACxC,IAAI,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACzC,IAAI,OAAO,EAAE,CAAC,eAAe,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM;AACzD,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE;AACd,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO;AACpD,MAAM,OAAO,EAAE,CAAC,CAAC,OAAO;AACxB,MAAM,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,GAAG;AAC/B,MAAM,QAAQ,EAAE,CAAC,CAAC,QAAQ,KAAK,KAAK;AACpC,MAAM,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE;AAC5B,KAAK,CAAC,CAAC;AACP,IAAI,SAAS,EAAE,eAAe,CAAC,SAAS,IAAI,EAAE;AAC9C,IAAI,WAAW,EAAE,eAAe,CAAC,WAAW,IAAI,EAAE;AAClD,GAAG,CAAA;;AAEH,EAAE,IAAI,OAAO,CAAC,SAAS,IAAI,eAAe,CAAC,SAAS,EAAE;AACtD,IAAI,QAAQ,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,eAAe,CAAC,SAAS,CAAA;AACvE,GAAA;;AAEA,EAAE,OAAO,QAAQ,CAAA;AACjB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,MAAM,EAAE;AACvC,EAAE,MAAM,OAAO,GAAG;AAClB,IAAI,IAAI,EAAE,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,IAAI,WAAW;AAC1D,IAAI,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;AACzC,IAAI,MAAM;AACV,MAAM,OAAO,MAAM,CAAC,MAAM,KAAK,QAAA;AAC/B,UAAU,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAA;AAChC,UAAU,MAAM,CAAC,MAAM,IAAI,EAAE;AAC7B,IAAI,QAAQ,EAAE,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE;AAC7E,IAAI,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;AACjC,IAAI,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM;AAC/B,IAAI,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;AAC3B,IAAI,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;AACzC,IAAI,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI;AAC3C,IAAI,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,SAAS;AAC1C,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM;AAChD,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE;AAC7C,MAAM,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE;AAC9B,MAAM,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,GAAG;AAC/B,MAAM,QAAQ,EAAE,CAAC,CAAC,QAAQ,KAAK,KAAK;AACpC,MAAM,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE;AAC5B,KAAK,CAAC,CAAC;AACP,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM;AAC3D,MAAM,GAAG,EAAE,IAAI;AACf,MAAM,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC;AAChK,KAAK,CAAC,CAAC;AACP,IAAI,SAAS,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM;AACpD,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;AACxB,MAAM,aAAa,EAAE,CAAC,CAAC,aAAa,IAAI,EAAE;AAC1C,MAAM,QAAQ,EAAE,CAAC,CAAC,QAAQ,KAAK,KAAK;AACpC,MAAM,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE;AAC5B,KAAK,CAAC,CAAC;AACP,IAAI,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI;AACvC,IAAI,OAAO,EAAE;AACb,MAAM,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM;AAChD,MAAM,UAAU,EAAE,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE,MAAM;AACnD,MAAM,aAAa,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,MAAM;AACpD,MAAM,eAAe,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM;AACpD,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,KAAK;AACnC,OAAO,CAAC,MAAM;AACd,MAAM,eAAe,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM;AACpD,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,KAAK;AACnC,OAAO,CAAC,MAAM;AACd,KAAK;AACL,GAAG,CAAA;;AAEH,EAAE,OAAO,OAAO,CAAA;AAChB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,UAAU,GAAG,EAAE,EAAE,gBAAgB,GAAG,EAAE,EAAE;AACvE,EAAE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAE,CAAA;AAClC,EAAE,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE;AACtC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,QAAQ,MAAM,WAAW,EAAE;AAC5D,MAAM,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AACvC,KAAA;AACA,GAAA;;AAEA,EAAE,MAAM,OAAO,GAAG,EAAE,CAAA;;AAEpB,EAAE,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE;AAC/B,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC,gBAAgB,CAAA;AACtC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,SAAA;;AAE5C,IAAI,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;AAClE,IAAI,IAAI,CAAC,WAAW,EAAE,SAAA;;AAEtB,IAAI,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,OAAO,CAAA;AAC/D,IAAI,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,IAAI,OAAO,CAAA;;AAExD,IAAI,IAAI,gBAAgB,KAAK,aAAa,EAAE;AAC5C,MAAM,OAAO,CAAC,IAAI,CAAC;AACnB,QAAQ,WAAW,EAAE,EAAE,CAAC,EAAE;AAC1B,QAAQ,aAAa,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE;AAChD,QAAQ,eAAe,EAAE,MAAM,CAAC,eAAe;AAC/C,QAAQ,gBAAgB;AACxB,QAAQ,aAAa;AACrB,QAAQ,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI;AAC7C,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAA;;AAEA,EAAE,OAAO,OAAO,CAAA;AAChB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,0BAA0B;AACnC,EAAE,iBAAiB,GAAG,EAAE;AACxB,EAAE,mBAAmB,GAAG,EAAE;AAC1B,EAAE;AACF,EAAE,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAA;AACpC,EAAE,KAAK,MAAM,CAAC,IAAI,mBAAmB,EAAE;AACvC,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAA;AACtC,IAAI,IAAI,GAAG,EAAE;AACb,MAAM,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAA;AAChD,KAAA;AACA,GAAA;;AAEA,EAAE,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;AACnD,IAAI,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,CAAA;AAClD,IAAI,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;;AAEpD,IAAI,OAAO;AACX,MAAM,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;AAC1B,MAAM,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,EAAE;AAC5C,MAAM,QAAQ,EAAE,GAAG,CAAC,QAAQ,KAAK,KAAK;AACtC,MAAM,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE;AAC9B,MAAM,MAAM,EAAE,UAAU,GAAG,YAAY,GAAG,aAAa;AACvD,MAAM,kBAAkB,EAAE,UAAU,IAAI,IAAI;AAC5C,KAAK,CAAA;AACL,GAAG,CAAC,CAAA;;AAEJ,EAAE,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM;AAC1C,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,YAAY;AACpC,GAAG,CAAC,MAAM,CAAA;AACV,EAAE,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM;AAC1C,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,aAAa;AACrC,GAAG,CAAC,MAAM,CAAA;;AAEV,EAAE,OAAO;AACT,IAAI,aAAa,EAAE,eAAe,KAAK,CAAC;AACxC,IAAI,OAAO,EAAE;AACb,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM;AAC7B,MAAM,UAAU,EAAE,eAAe;AACjC,MAAM,UAAU,EAAE,eAAe;AACjC,KAAK;AACL,IAAI,SAAS;AACb,GAAG,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,SAAS,GAAG,EAAE,EAAE,eAAe,GAAG,EAAE,EAAE;AACrE,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;;AAErE,EAAE,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,KAAK,KAAK,CAAC,CAAA;;AAEzE,EAAE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,IAAI,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAA;AAClE,GAAA;;AAEA,EAAE,MAAM,YAAY,GAAG,YAAA;AACvB,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAA;AACvC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAA;AACvB,EAAE,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM;AACzC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;AAC3C,GAAG,CAAA;;AAEH,EAAE,OAAO;AACT,IAAI,UAAU,EAAE,WAAW,CAAC,MAAM,KAAK,CAAC;AACxC,IAAI,WAAW;AACf,IAAI,YAAY;AAChB,GAAG,CAAA;AACH,CAAA;;AAEA,IAAAC,sBAAc,GAAG;AACjB,yBAAEL,uBAAqB;AACvB,sBAAEC,oBAAkB;AACpB,2BAAEC,yBAAuB;AACzB,6BAAEC,2BAAyB;AAC3B,4BAAEC,0BAAwB;AAC1B,EAAE,2BAA2B;AAC7B,EAAE,wBAAwB;AAC1B,EAAE,qBAAqB;AACvB,EAAE,qBAAqB;AACvB,EAAE,0BAA0B;AAC5B,EAAE,qBAAqB;AACvB,CAAC;;;;;;;;;;;;;;;;AC7kBD,MAAMjC,IAAE,GAAG1C,YAAa,CAAA;AACxB,MAAM+B,MAAI,GAAG9B,YAAe,CAAA;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS4E,gBAAc,CAAC,UAAU,EAAE;AACpC,EAAE,MAAM,MAAM,GAAG9C,MAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;AACjD,EAAE,IAAIW,IAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAC7B,IAAI,OAAO,MAAM,CAAA;AACjB,GAAA;;AAEA;AACA,EAAE,MAAM,OAAO,GAAGX,MAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;AAClD,EAAE,IAAIW,IAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AAC9B,IAAI,OAAO,OAAO,CAAA;AAClB,GAAA;;AAEA;AACA,EAAE,IAAI;AACN,IAAI,MAAM,OAAO,GAAGA,IAAE,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;AACvE,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM;AAClC,MAAM,CAAC,CAAC;AACR,QAAQ,CAAC,CAAC,WAAW,EAAE;AACvB,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;AAC/B,QAAQ,CAAC,CAAC,IAAI,KAAK,MAAM;AACzB,QAAQ,CAAC,CAAC,IAAI,KAAK,cAAc;AACjC,KAAK,CAAA;;AAEL,IAAI,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAClC,MAAM,MAAM,MAAM,GAAGX,MAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;AAClE,MAAM,IAAIW,IAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACjC,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,0CAA0C,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;AAC1E,QAAQ,OAAO,MAAM,CAAA;AACrB,OAAA;AACA,KAAA;AACA,GAAG,CAAC,OAAO,GAAG,EAAE;AAChB;AACA,GAAA;;AAEA,EAAE,OAAO,IAAI,CAAA;AACb,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa,CAAC,UAAU,EAAE;AACzC,EAAE,MAAM,UAAU,GAAGmC,gBAAc,CAAC,UAAU,CAAC,CAAA;;AAE/C,EAAE,IAAI,CAAC,UAAU,EAAE;AACnB,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,CAAC,0CAA0C,EAAE,UAAU,CAAC,UAAU,CAAC;AACzE,KAAK,CAAA;AACL,IAAI,OAAO,IAAI,CAAA;AACf,GAAA;;AAEA;AACA,EAAE,MAAM,KAAK,GAAGnC,IAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;AAC1C,EAAE,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAA;;AAE/D,EAAE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9B,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,CAAC,4CAA4C,EAAE,UAAU,CAAC,UAAU,CAAC;AAC3E,KAAK,CAAA;AACL,IAAI,OAAO,IAAI,CAAA;AACf,GAAA;;AAEA;AACA;AACA;AACA,EAAE,MAAM,aAAa;AACrB,IAAI,IAAI,GAAGX,MAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1E,EAAE,MAAM,OAAO,GAAG,EAAE,CAAA;AACpB,EAAE,MAAM,WAAW,GAAG,EAAE,CAAA;;AAExB,EAAE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AACpC,IAAI,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;AAC1D,IAAI,MAAM,aAAa,GAAG,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA;AAC/C,IAAI,MAAM,iBAAiB,GAAGA,MAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;AAClE,IAAI,MAAM,YAAY,GAAGW,IAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAA;;AAEzD;AACA,IAAI,OAAO,CAAC,IAAI;AAChB,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;AAC1E,KAAK,CAAA;;AAEL,IAAI,IAAI,YAAY,EAAE;AACtB;AACA,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC;AAC/E,OAAO,CAAA;AACP,MAAM,WAAW,CAAC,IAAI;AACtB,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,mBAAmB,EAAE,aAAa,CAAC,OAAO,CAAC;AACzG,OAAO,CAAA;AACP,KAAK,MAAM;AACX;AACA,MAAM,WAAW,CAAC,IAAI;AACtB,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC;AACjE,OAAO,CAAA;AACP,KAAA;AACA,GAAA;;AAEA,EAAE,MAAM,YAAY,GAAG,CAAC,GAAG,OAAO,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;;AAEtE;AACA,EAAE,MAAM,SAAS,GAAGX,MAAI,CAAC,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAA;AAC/D,EAAE,MAAM,OAAO,GAAGA,MAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;AAC/C,EAAE,MAAM,OAAO,GAAGA,MAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;;AAEpD,EAAE,IAAI;AACN;AACA,IAAI,IAAI,CAACW,IAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AACjC,MAAMA,IAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AAChD,KAAA;;AAEA,IAAIA,IAAE,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;;AAErD,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,CAAC,2BAA2B,EAAE,SAAS,CAAC,MAAM,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;AACtF,KAAK,CAAA;;AAEL;AACA;AACA,IAAI,MAAM,OAAO,GAAG,OAAA,CAAQ,SAAS,CAAC,CAAA;;AAEtC,IAAI,MAAM,OAAO,CAAC,KAAK,CAAC;AACxB,MAAM,WAAW,EAAE,CAAC,SAAS,CAAC;AAC9B,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,OAAO,EAAE,OAAO;AACtB;AACA;AACA,MAAM,QAAQ,EAAE;AAChB,QAAQ,OAAO;AACf,QAAQ,WAAW;AACnB,QAAQ,mBAAmB;AAC3B,QAAQ,kBAAkB;AAC1B,QAAQ,mBAAmB;AAC3B,QAAQ,YAAY;AACpB,OAAO;AACP;AACA,MAAM,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;AAC9B,MAAM,QAAQ,EAAE,SAAS;AACzB,KAAK,CAAC,CAAA;;AAEN,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,yCAAyC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;AACtE,IAAI,OAAO,OAAO,CAAA;AAClB,GAAG,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK;AACjB,MAAM,CAAC,wCAAwC,EAAE,UAAU,CAAC,CAAC,CAAC;AAC9D,MAAM,KAAK;AACX,KAAK,CAAA;AACL,IAAI,MAAM,KAAK,CAAA;AACf,GAAG,SAAS;AACZ;AACA,IAAI,IAAI;AACR,MAAM,IAAIA,IAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AACpC,QAAQA,IAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;AAChC,OAAA;AACA,KAAK,CAAC,OAAO,YAAY,EAAE;AAC3B;AACA,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,CAAC,kDAAkD,CAAC;AAC5D,QAAQ,YAAY;AACpB,OAAO,CAAA;AACP,KAAA;AACA,GAAA;AACA,CAAA;;AAEA,IAAAoC,gBAAc,GAAG,EAAE,aAAa,kBAAED,gBAAc,EAAE;;;;;;;;;;;;;;ACxLlD,MAAMnC,IAAE,GAAG1C,YAAa,CAAA;AACxB,MAAM+B,MAAI,GAAG9B,YAAe,CAAA;AAC5B,MAAM,EAAE,GAAGC,YAAa,CAAA;AACxB,MAAM,EAAE,cAAc,EAAE,GAAGC,gBAA2B,CAAA;;AAEtD,MAAM,mBAAmB,CAAC;AAC1B,EAAE,WAAW,CAAC,gBAAgB,GAAG,IAAI,EAAE;AACvC,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAA;AAClC,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAA;AAChC,IAAI,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;AAC5C,GAAA;;AAEA;AACA;AACA;AACA;AACA,EAAE,mBAAmB,CAAC,OAAO,EAAE;AAC/B,IAAI,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAA;AACnC,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,GAAG,IAAI,EAAE;AAC/E,IAAI,IAAI;AACR,MAAM,MAAM,QAAQ,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAA;;AAEvD,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC5C,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,8BAA8B,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAA;AAC7E,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;AAC/C,OAAA;;AAEA,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,CAAC,sCAAsC,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAChF,OAAO,CAAA;;AAEP,MAAM,MAAM,UAAU;AACtB,QAAQ,cAAc,CAAC,UAAU,CAAC,IAAI4B,MAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;AACtE,MAAM,MAAM,aAAa,GAAGA,MAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;AACxE,MAAM,MAAM,UAAU,GAAGA,MAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAA;;AAE1E,MAAM,IAAI,CAACW,IAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;AACzC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,0BAA0B,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;AACrE,OAAA;AACA,MAAM,IAAI,CAACA,IAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AACtC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,uBAAuB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AAC/D,OAAA;;AAEA,MAAM,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;;AAE1D,MAAM,MAAM,SAAS,GAAG;AACxB,QAAQ,IAAI,EAAE,aAAa;AAC3B,QAAQ,IAAI,EAAE,aAAa;AAC3B,OAAO,CAAA;;AAEP,MAAM,IAAI,UAAU,GAAG,KAAK,CAAA;;AAE5B,MAAM,IAAI,YAAY,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACjD,QAAQ,IAAI;AACZ;AACA;AACA,UAAU,MAAM,eAAe,GAAG,MAAM,CAAC,EAAE,IAAI,aAAa,CAAA;AAC5D,UAAU,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;AACvE,UAAU,UAAU,GAAG,IAAI,CAAA;AAC3B,UAAU,OAAO,CAAC,GAAG;AACrB,YAAY,CAAC,mCAAmC,EAAE,eAAe,CAAC,sBAAsB,CAAC;AACzF,WAAW,CAAA;AACX,SAAS,CAAC,OAAO,QAAQ,EAAE;AAC3B,UAAU,OAAO,CAAC,IAAI;AACtB,YAAY,CAAC,+DAA+D,CAAC;AAC7E,YAAY,QAAQ;AACpB,WAAW,CAAA;AACX,SAAA;AACA,OAAA;;AAEA,MAAM,MAAM,MAAM,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,CAAA;AACtD,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;;AAE9C,MAAM,OAAO,MAAM,CAAA;AACnB,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,2CAA2C,EAAE,UAAU,CAAC,CAAC,CAAC;AACnE,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,cAAc,CAAC,UAAU,EAAE;AACnC,IAAI,IAAI;AACR,MAAM,MAAM,MAAM,GAAGA,IAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;;AAExD,MAAM,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAA;;AAE5E;AACA,MAAM,IAAI,CAAC,WAAW,EAAE;AACxB,QAAQ,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK;AAC3C,UAAU,wDAAwD;AAClE,SAAS,CAAA;AACT,QAAQ,IAAI,cAAc,EAAE;AAC5B,UAAU,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;AAC3C,UAAU,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK;AAC3C,YAAY,IAAI,MAAM;AACtB,cAAc,CAAC,qBAAqB,EAAE,OAAO,CAAC,iDAAiD,CAAC;AAChG,aAAa;AACb,WAAW,CAAA;AACX,UAAU,IAAI,YAAY,EAAE;AAC5B,YAAY,WAAW,GAAG,YAAY,CAAA;AACtC,WAAA;AACA,SAAA;AACA,OAAA;;AAEA,MAAM,IAAI,CAAC,WAAW,EAAE;AACxB,QAAQ,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;AACvE,OAAA;;AAEA;AACA;AACA,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO;AACtD,QAAQ,wCAAwC;AAChD,QAAQ,iBAAiB;AACzB,OAAO,CAAA;;AAEP,MAAM,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;AACnE,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;;AAEvE,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAA;AACnC,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,2CAA2C,CAAC,EAAE,KAAK,CAAC,CAAA;AACzE,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE,eAAe,CAAC,UAAU,EAAE;AAC9B,IAAI,IAAI;AACR,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAAA;AACnD,MAAM,IAAI,CAAC,UAAU,EAAE;AACvB,QAAQ,OAAO,EAAE,CAAA;AACjB,OAAA;;AAEA,MAAM,MAAM,KAAK,GAAGA,IAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;AAC9C,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,CAAA;;AAE/B,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC9B,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACvC,UAAU,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;AAC5D,UAAU,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;AACpC,SAAA;AACA,OAAO,CAAC,CAAA;;AAER,MAAM,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAChC,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,gDAAgD,CAAC,EAAE,KAAK,CAAC,CAAA;AAC9E,MAAM,OAAO,EAAE,CAAA;AACf,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA,EAAE,UAAU,GAAG;AACf,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;AAC9B,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;AAC5B,GAAA;AACA,CAAA;;AAEA,MAAMqC,qBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAA;;AAErDC,qBAAA,CAAA,OAAc,GAAG,mBAAmB,CAAA;AACpCA,qBAAA,CAAA,OAAA,CAAA,mBAAkC,GAAGD,sBAAmB;;;;;;;;;;;;;;;;;;;CCtLxD,MAAM,EAAE,GAAG/E,YAAa,CAAA;CACxB,MAAM,IAAI,GAAGC,YAAe,CAAA;CAC5B,MAAM,EAAE,GAAGC,YAAa,CAAA;CACxB,MAAM,MAAM,GAAGC,YAAkB,CAAA;AACjC,CAAA,MAAM,EAAE,aAAa,EAAE,GAAGC,YAAc,CAAA;CACxC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,GAAGC,YAAmB,CAAA;AAC3D,CAAA,MAAM,EAAE,mBAAmB,EAAE,GAAGC,0BAAgC,CAAA;AAChE,CAAA,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAGC,gBAA2B,CAAA;;CAErE,IAAI,iBAAiB,GAAG,IAAI,CAAA;CAC5B,IAAI,oBAAoB,GAAG,IAAI,CAAA;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,kBAAkB,CAAC,GAAG,EAAE,SAAS,EAAE;GAC1C,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;GAC9C,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,UAAU,EAAE,EAAE;AACxC,KAAI,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;AACrC;KACI;OACE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;OACnC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAA;OACnC;OACA,MAAM,IAAI,KAAK;AACrB,SAAQ,CAAC,+CAA+C,EAAE,SAAS,CAAC,CAAC;QAC9D,CAAA;AACP,MAAA;AACA;AACA,KAAI,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;OAC9B,MAAM,IAAI,KAAK;AACrB,SAAQ,CAAC,8CAA8C,EAAE,SAAS,CAAC,CAAC;QAC7D,CAAA;AACP,MAAA;AACA;KACI,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAA;KAC7D;OACE,CAAC,aAAa,CAAC,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC;AAC1D,OAAM,aAAa,KAAK,cAAA;OAClB;OACA,MAAM,IAAI,KAAK;AACrB,SAAQ,CAAC,+CAA+C,EAAE,SAAS,CAAC,CAAC;QAC9D,CAAA;AACP,MAAA;AACA,IAAA;AACA,EAAA;;AAEA;AACA;AACA;AACA;AACA,CAAA,SAAS,kBAAkB,CAAC,UAAU,GAAG,IAAI,EAAE;GAC7C,IAAI,UAAU,EAAE;KACd,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;AACxD,IAAG,MAAM;AACT,KAAI,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,CAAA;AACrE,IAAA;GACE,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAA;GACpE,OAAO,CAAC,GAAG,CAAC,CAAC,qCAAqC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAA;AAC1E,EAAA;;AAEA,CAAA,MAAM,cAAc,CAAC;GACnB,WAAW,CAAC,gBAAgB,GAAG,IAAI,EAAE,UAAU,GAAG,IAAI,EAAE;KACtD,IAAI,CAAC,iBAAiB,EAAE;OACtB,kBAAkB,CAAC,UAAU,CAAC,CAAA;AACpC,MAAA;;AAEA,KAAI,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAA;AAC5B,KAAI,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;KACxC,IAAI,CAAC,cAAc,EAAE,CAAA;KACrB,IAAI,CAAC,YAAY,EAAE,CAAA;AACvB,IAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE,OAAO,UAAU,CAAC,UAAU,GAAG,IAAI,EAAE;KACnC,kBAAkB,CAAC,UAAU,CAAC,CAAA;AAClC,IAAA;;AAEA;AACA;AACA;AACA;GACE,mBAAmB,CAAC,OAAO,EAAE;AAC/B,KAAI,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAA;AACnC,IAAA;;AAEA;AACA;AACA;AACA,GAAE,cAAc,GAAG;KACf,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE;OACrC,EAAE,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AAC1D,MAAA;AACA,IAAA;;AAEA;AACA;AACA;AACA,GAAE,YAAY,GAAG;AACjB,KAAI,IAAI;AACR,OAAM,IAAI,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE;SACvC,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAA;SAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC7C,SAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;SAClD,OAAO,CAAC,GAAG;WACT,CAAC,wBAAwB,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC;UAClE,CAAA;AACT,QAAA;MACK,CAAC,OAAO,KAAK,EAAE;AACpB,OAAM,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAA;AACtE,MAAA;AACA,IAAA;;AAEA;AACA;AACA;AACA,GAAE,YAAY,GAAG;AACjB,KAAI,IAAI;OACF,MAAM,YAAY,GAAG;AAC3B,SAAQ,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AAC7C,SAAQ,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5C,CAAA;OACD,EAAE,CAAC,aAAa;AACtB,SAAQ,oBAAoB;SACpB,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAA;MACF,CAAC,OAAO,KAAK,EAAE;AACpB,OAAM,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAA;AACrE,MAAA;AACA,IAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,kBAAkB,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE;AACjD,KAAI,IAAI,CAAC,WAAW,EAAE,OAAO,IAAI,CAAA;;AAEjC,KAAI,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACnC,OAAM,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;AACpD,MAAA;;KAEI,IAAI,GAAG,GAAG,WAAW,CAAA;KACrB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;KACvC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AACrC,KAAI,OAAO,GAAG,CAAA;AACd,IAAA;;AAEA;AACA;AACA;AACA;AACA;GACE,aAAa,CAAC,KAAK,EAAE;AACvB,KAAI,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK,CAAA;KACxB,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,IAAI,CAAA;AAChD,KAAI,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;AACnE,OAAM,OAAO,KAAK,CAAA;KACd,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;AACrD,KAAI,OAAO,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AACtC,IAAA;;AAEA;AACA;AACA;AACA;AACA;GACE,gBAAgB,CAAC,KAAK,EAAE;AAC1B,KAAI,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AACrC,OAAM,OAAO,aAAa,CAAC,KAAK,CAAC,CAAA;AACjC,MAAA;AACA,KAAI,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC/B,OAAM,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACpD,MAAA;AACA,KAAI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC9B,IAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,MAAM,oBAAoB;AAC5B,KAAI,UAAU;AACd,KAAI,SAAS;KACT,YAAY,GAAG,IAAI;KACnB,cAAc,GAAG,IAAI;KACrB;AACJ,KAAI,IAAI;OACF,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;;OAErD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;SAChC,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;AAChE,QAAA;;OAEM,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAA;;AAEjE,OAAM,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;SAC7B,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AAClD,QAAA;;OAEM,MAAM,WAAW,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAA;OAC3D,IAAI,WAAW,EAAE;AACvB,SAAQ,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACzD,MAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAChD,SAAQ,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAA;AAC5C,SAAQ,kBAAkB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;AAC3C,SAAQ,GAAG,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AAC1C,QAAO,MAAM;SACL,MAAM,IAAI,KAAK,CAAC,CAAC,+BAA+B,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;AACzE,QAAA;;OAEM,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;;OAEhE,IAAI,cAAc,EAAE;SAClB,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAA;AAChE,SAAQ,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AACvC,WAAU,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;WAClE,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,UAAU,EAAE,CAAA;AAC/C,UAAA;AACA,QAAA;;OAEM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;;OAE1D,IAAI,YAAY,EAAE;SAChB,MAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;AAC/D,QAAA;;AAEA,OAAM,OAAO,MAAM,CAAA;MACd,CAAC,OAAO,KAAK,EAAE;OACd,OAAO,CAAC,KAAK;AACnB,SAAQ,CAAC,+CAA+C,EAAE,UAAU,CAAC,CAAC,CAAC;AACvE,SAAQ,KAAK;QACN,CAAA;AACP,OAAM,MAAM,KAAK,CAAA;AACjB,MAAA;AACA,IAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,cAAc,CAAC,OAAO,EAAE;AAC1B,KAAI,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,EAAE,OAAO,IAAI,CAAA;AACtE,KAAI,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,OAAO,IAAI,CAAA;;KAE/D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;AACpD,KAAI,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE;OACtE,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;AAC9C,OAAM,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,IAAI,CAAA;AAChE,MAAA;;AAEA,KAAI,OAAO,KAAK,CAAA;AAChB,IAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,MAAM,yBAAyB,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI,EAAE;AACnE,KAAI,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;;AAE3E,KAAI,IAAI;OACF,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAA;OACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;SAChC,MAAM,IAAI,KAAK,CAAC,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;AAC5D,QAAA;OACM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,EAAE;SAC5C,MAAM,IAAI,KAAK,CAAC,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;AACnE,QAAA;;AAEA;AACA,OAAM,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;SACrC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;AACtD,SAAQ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB;AACtD,WAAU,UAAU;AACpB,WAAU,YAAY;AACtB,WAAU,YAAY;UACb,CAAA;AACT,SAAQ,OAAO;WACL;aACE,IAAI,EAAE,UAAU;aAChB,IAAI,EAAE,YAAY;AAC9B,aAAY,GAAG,MAAM;aACT,IAAI,EAAE,QAAQ;YACf;UACF,CAAA;AACT,QAAA;;AAEA;OACM,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE;SAC3C,aAAa,EAAE,IAAI;AAC3B,QAAO,CAAC,CAAA;OACF,MAAM,OAAO,GAAG,EAAE,CAAA;OAClB,IAAI,OAAO,GAAG,CAAC,CAAA;;AAErB,OAAM,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AACnC,SAAQ,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAA;;AAElC;AACA,SAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AACrE,WAAU,OAAO,EAAE,CAAA;WACT,SAAA;AACV,UAAA;;AAEA,SAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;;SAEtD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;AAC9C,WAAU,OAAO,EAAE,CAAA;WACT,SAAA;AACV,UAAA;;AAEA,SAAQ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;AAC1E,SAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;;SAE1D,IAAI,YAAY,EAAE;WAChB,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;AACjE,UAAA;;SAEQ,OAAO,CAAC,IAAI,CAAC;AACrB,WAAU,IAAI,EAAE,KAAK,CAAC,IAAI;WAChB,IAAI,EAAE,UAAU;AAC1B,WAAU,GAAG,MAAM;AACnB,UAAS,CAAC,CAAA;AACV,QAAA;;AAEA;AACA,OAAM,OAAO,CAAC,OAAO,GAAG,OAAO,CAAA;AAC/B,OAAM,OAAO,OAAO,CAAA;MACf,CAAC,OAAO,KAAK,EAAE;OACd,OAAO,CAAC,KAAK;AACnB,SAAQ,yDAAyD;AACjE,SAAQ,KAAK;QACN,CAAA;AACP,OAAM,MAAM,KAAK,CAAA;AACjB,MAAA;AACA,IAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,MAAM,cAAc;AACtB,KAAI,UAAU;AACd,KAAI,WAAW;KACX,aAAa,GAAG,IAAI;KACpB,YAAY,GAAG,IAAI;KACnB;AACJ,KAAI,IAAI;AACR,OAAM,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE;SACnC,OAAO,IAAI,CAAC,oBAAoB;AACxC,WAAU,UAAU;AACpB,WAAU,WAAW;AACrB,WAAU,YAAY;AACtB,WAAU,aAAa;UACd,CAAA;AACT,QAAA;AACA;AACA,OAAM,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAA;AAC5C,OAAM,IAAI,SAAS,CAAC,QAAQ,KAAK,QAAQ,EAAE;SACnC,MAAM,IAAI,KAAK;AACvB,WAAU,CAAC,oDAAoD,EAAE,WAAW,CAAC,CAAC;UACrE,CAAA;AACT,QAAA;;OAEM,OAAO,CAAC,GAAG;SACT,CAAC,qCAAqC,EAAE,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACzE,CAAA;;AAEP,OAAM,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAA;AAC/C,OAAM,IAAI,CAAC,QAAQ,CAAC,EAAE;AACtB,SAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,iBAAiB,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;;AAElE,OAAM,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;AACjD,OAAM,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;;OAE3C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAA;;AAEjE,OAAM,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;SAC7B,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AAClD,QAAA;;AAEA,OAAM,kBAAkB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;AACzC,OAAM,GAAG,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;OAClC,OAAO,CAAC,GAAG,CAAC,CAAC,sCAAsC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;;OAElE,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;;OAEhE,IAAI,aAAa,EAAE;SACjB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;SACtD,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,UAAU,EAAE,CAAA;AAC7C,QAAA;;OAEM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;;OAE1D,IAAI,YAAY,EAAE;SAChB,MAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;AAC/D,QAAA;;AAEA,OAAM,OAAO,MAAM,CAAA;MACd,CAAC,OAAO,KAAK,EAAE;OACd,OAAO,CAAC,KAAK;AACnB,SAAQ,CAAC,0CAA0C,EAAE,UAAU,CAAC,CAAC,CAAC;AAClE,SAAQ,KAAK;QACN,CAAA;AACP,OAAM,MAAM,KAAK,CAAA;AACjB,MAAA;AACA,IAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,MAAM,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE;AACjD,KAAI,IAAI;OACF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;AAC7D,OAAM,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;SAC/B,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;AAC1D,SAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC/B,QAAA;;OAEM,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;AACnE,OAAM,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;AAC1C,SAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK;AACtC,WAAU,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;UACzC,CAAA;AACT,SAAQ,OAAO;AACf,WAAU,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,UAAU;AAC9C,WAAU,OAAO,EAAE,WAAW,CAAC,OAAO;AACtC,WAAU,WAAW,EAAE,WAAW,CAAC,WAAW;AAC9C,WAAU,MAAM,EAAE,WAAW,CAAC,MAAM;AACpC,WAAU,UAAU,EAAE,WAAW,CAAC,UAAU;UACnC,CAAA;AACT,QAAA;;AAEA,OAAM,OAAO;SACL,IAAI,EAAE,UAAU;SAChB,OAAO,EAAE,OAAO;QACjB,CAAA;MACF,CAAC,OAAO,KAAK,EAAE;OACd,OAAO,CAAC,KAAK;AACnB,SAAQ,CAAC,0CAA0C,EAAE,UAAU,CAAC,CAAC,CAAC;AAClE,SAAQ,KAAK;QACN,CAAA;AACP,OAAM,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;AACjC,MAAA;AACA,IAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,GAAG,IAAI,EAAE;KAClE,MAAM,WAAW,GAAG;OAClB,IAAI,EAAE,UAAU;OAChB,IAAI,EAAE,UAAU;AACtB,OAAM,GAAG,MAAM;AACf,OAAM,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;MACvC,CAAA;;KAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;KACzC,IAAI,CAAC,YAAY,EAAE,CAAA;KACnB,OAAO,CAAC,GAAG,CAAC,CAAC,oCAAoC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AACpE,IAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE,MAAM,oBAAoB,CAAC,UAAU,EAAE,UAAU,EAAE;AACrD,KAAI,IAAI;AACR;AACA,OAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;AACvC,SAAQ,IAAI;AACZ,WAAU,MAAM,aAAa,CAAC,UAAU,CAAC,CAAA;WAC/B,OAAO,CAAC,GAAG,CAAC,CAAC,+BAA+B,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;UAC5D,CAAC,OAAO,YAAY,EAAE;WACrB,OAAO,CAAC,IAAI;AACtB,aAAY,CAAC,mCAAmC,EAAE,UAAU,CAAC,CAAC,CAAC;AAC/D,aAAY,YAAY;YACb,CAAA;AACX,UAAA;AACA,QAAA;;AAEA,OAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACjC,SAAQ,mBAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;AACtE,QAAA;;OAEM,MAAM,UAAU,GAAG,mBAAmB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;OAClE,OAAO,CAAC,GAAG;SACT,CAAC,uBAAuB,EAAE,UAAU,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QAC1E,CAAA;;OAED,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;OAClD,IAAI,eAAe,GAAG,KAAK,CAAA;;AAEjC;AACA;OACM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,EAAE;SAC1C,aAAa,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzD,SAAQ,aAAa,CAAC,cAAc,GAAG,UAAU,CAAA;SACzC,eAAe,GAAG,IAAI,CAAA;AAC9B,QAAA;;AAEA,OAAM,KAAK,MAAM,aAAa,IAAI,UAAU,EAAE;AAC9C,SAAQ,IAAI;AACZ,WAAU,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,UAAU;AAC7D,aAAY,UAAU;AACtB,aAAY,UAAU;AACtB,aAAY,aAAa;AACzB,aAAY,IAAI;YACL,CAAA;WACD,OAAO,CAAC,GAAG,CAAC,CAAC,0BAA0B,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;;AAEnE;AACA;AACA;AACA,WAAU,IAAI,MAAM,EAAE,MAAM,IAAI,aAAa,EAAE;AAC/C,aAAY,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAA;AACrC,aAAY,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;AAC9E,aAAY,IAAI,GAAG,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM;AACzE,eAAc,aAAa,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAA;aACzC,IAAI,GAAG,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC,SAAS;AACzD,eAAc,aAAa,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAA;AACrD,aAAY,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM;AACnE,eAAc,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAA;aACnC;AACZ,eAAc,GAAG,CAAC,aAAa,EAAE,MAAM;AACvC,eAAc,CAAC,aAAa,CAAC,aAAa,EAAE,MAAA;AAC5C;AACA,eAAc,aAAa,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa,CAAA;aACjD,eAAe,GAAG,IAAI,CAAA;AAClC,YAAA;UACS,CAAC,OAAO,KAAK,EAAE;WACd,OAAO,CAAC,KAAK;AACvB,aAAY,CAAC,yCAAyC,EAAE,aAAa,CAAC,CAAC,CAAC;AACxE,aAAY,KAAK;YACN,CAAA;AACX,UAAA;AACA,QAAA;;AAEA,OAAM,IAAI,eAAe,IAAI,aAAa,EAAE;SACpC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;SAC3C,IAAI,CAAC,YAAY,EAAE,CAAA;AAC3B,QAAA;MACK,CAAC,OAAO,KAAK,EAAE;AACpB,OAAM,OAAO,CAAC,KAAK,CAAC,mDAAmD,EAAE,KAAK,CAAC,CAAA;AAC/E,MAAA;AACA,IAAA;;AAEA;AACA;AACA;AACA;AACA,GAAE,UAAU,GAAG;KACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;AAC5C,IAAA;;AAEA;AACA;AACA;AACA;AACA;GACE,SAAS,CAAC,UAAU,EAAE;KACpB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAA;AAC/C,IAAA;;AAEA;AACA;AACA;AACA;GACE,eAAe,CAAC,UAAU,EAAE;KAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;KAC3C,IAAI,CAAC,MAAM,EAAE;OACX,OAAO,CAAC,IAAI,CAAC,CAAC,mCAAmC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AACtE,OAAM,OAAO,KAAK,CAAA;AAClB,MAAA;;AAEA,KAAI,IAAI;OACF,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACtC,SAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACnD,QAAA;AACA,OAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;OAC/B,IAAI,CAAC,YAAY,EAAE,CAAA;OACnB,OAAO,CAAC,GAAG,CAAC,CAAC,qCAAqC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AACvE,OAAM,OAAO,IAAI,CAAA;MACZ,CAAC,OAAO,KAAK,EAAE;OACd,OAAO,CAAC,KAAK;AACnB,SAAQ,CAAC,oCAAoC,EAAE,UAAU,CAAC,CAAC,CAAC;AAC5D,SAAQ,KAAK;QACN,CAAA;AACP,OAAM,OAAO,KAAK,CAAA;AAClB,MAAA;AACA,IAAA;;AAEA;AACA;AACA;AACA,GAAE,MAAM,SAAS,CAAC,GAAG,EAAE;AACvB,KAAI,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;AACrC,KAAI,IAAI,CAAC,QAAQ,CAAC,EAAE;AACpB,OAAM,MAAM,IAAI,KAAK,CAAC,CAAC,iBAAiB,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AAChE,KAAI,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;AAC1B,IAAA;;AAEA;AACA;AACA;AACA,GAAE,YAAY,GAAG;AACjB,KAAI,OAAO,iBAAiB,CAAA;AAC5B,IAAA;;AAEA;AACA;AACA;AACA;AACA,GAAE,cAAc,GAAG;AACnB,KAAI,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAC1C,IAAA;AACA,EAAA;;AAEA;CACA,IAAI,cAAc,GAAG,IAAI,CAAA;;AAEzB,CAAA,SAAS,iBAAiB,GAAG;GAC3B,IAAI,CAAC,cAAc,EAAE;AACvB,KAAI,cAAc,GAAG,IAAI,cAAc,EAAE,CAAA;AACzC,IAAA;AACA,GAAE,OAAO,cAAc,CAAA;AACvB,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,cAAc,CAAC,UAAU,EAAE;GAClC,MAAM,UAAU,GAAG;KACjB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC;AACjD,KAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC;KACrC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC;AAC7C,KAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;IAClC,CAAA;;AAEH,GAAE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;AACtC,KAAI,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AAClC;AACA,OAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACvE,SAAQ,IAAI;AACZ,WAAU,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AACvE,WAAU,IAAI,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aACzC,OAAO,CAAC,GAAG,CAAC,CAAC,sCAAsC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;aACjE,SAAA;AACZ,YAAA;UACS,CAAC,OAAO,CAAC,EAAE;AACpB;AACA,UAAA;AACA,QAAA;AACA,OAAM,OAAO,SAAS,CAAA;AACtB,MAAA;AACA,IAAA;;AAEA,GAAE,OAAO,IAAI,CAAA;AACb,EAAA;;AAEA;AACA;AACA;AACA,CAAA,SAAS,2BAA2B,GAAG;AACvC,GAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,iBAAiB,EAAE,CAAC,UAAU,EAAE,CAAC,CAAA;;GAErE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK;AACtD,KAAI,OAAO,iBAAiB,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;AACpD,IAAG,CAAC,CAAA;;GAEF,OAAO,CAAC,MAAM;AAChB,KAAI,gBAAgB;KAChB,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,KAAK;AAC7D,OAAM,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC,cAAc;AAC7D,SAAQ,UAAU;AAClB,SAAQ,WAAW;AACnB,SAAQ,aAAa;QACd,CAAA;;OAED,aAAa,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACrD,SAAQ,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE;AACjD,WAAU,UAAU;AACpB,WAAU,MAAM;AAChB,UAAS,CAAC,CAAA;AACV,QAAO,CAAC,CAAA;;AAER,OAAM,OAAO,MAAM,CAAA;MACd;IACF,CAAA;;GAED,OAAO,CAAC,MAAM;AAChB,KAAI,sBAAsB;KACtB,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,KAAK;AAC5D,OAAM,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC,oBAAoB;AACnE,SAAQ,UAAU;AAClB,SAAQ,SAAS;AACjB,SAAQ,IAAI;AACZ,SAAQ,cAAc;QACf,CAAA;;OAED,aAAa,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACrD,SAAQ,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE;AACjD,WAAU,UAAU;AACpB,WAAU,MAAM;AAChB,UAAS,CAAC,CAAA;AACV,QAAO,CAAC,CAAA;;AAER,OAAM,OAAO,MAAM,CAAA;MACd;IACF,CAAA;;GAED,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,OAAO,KAAK,EAAE,UAAU,KAAK;AACpE,KAAI,MAAM,OAAO,GAAG,MAAM,iBAAiB,EAAE,CAAC,yBAAyB;AACvE,OAAM,UAAU;AAChB,OAAM,IAAI;MACL,CAAA;;KAED,aAAa,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACnD,OAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC7C,SAAQ,KAAK,EAAE,OAAO,CAAC,MAAM;SACrB,OAAO,EAAE,OAAO;AACxB,QAAO,CAAC,CAAA;AACR,MAAK,CAAC,CAAA;;AAEN,KAAI,OAAO,OAAO,CAAA;AAClB,IAAG,CAAC,CAAA;;GAEF,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK;AAC5D,KAAI,OAAO,iBAAiB,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;AAC1D,IAAG,CAAC,CAAA;;AAEJ,GAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,MAAM,iBAAiB,EAAE,CAAC,YAAY,EAAE,CAAC,CAAA;;AAE/E,GAAE,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE;AACxC,KAAI,iBAAiB,EAAE,CAAC,cAAc,EAAE;IACrC,CAAA;;AAEH,GAAE,OAAO,CAAC,MAAM,CAAC,8BAA8B,EAAE,YAAY;AAC7D,KAAI,IAAI;AACR,OAAM,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAA;AAC1C,OAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAA;OAC9C,MAAM,OAAO,GAAG,EAAE,CAAA;;AAExB,OAAM,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE;AAC7C,SAAQ,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAA;SAC9B,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,SAAA;;SAE/C,MAAM,cAAc,GAAG,mBAAmB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;AAC9E,SAAQ,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAAA;AACrD,SAAQ,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE;AACpD,WAAU,IAAI;AACd,aAAY,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI;eAC1B,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;AAC5D,eAAc,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC;cAC3B,CAAA;aACD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;aACnE,OAAO,CAAC,IAAI,CAAC;AACzB,eAAc,aAAa;AAC3B,eAAc,aAAa,EAAE,MAAM,CAAC,IAAI;AACxC;AACA,eAAc,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,IAAI;AACnC,eAAc,MAAM;AACpB,cAAa,CAAC,CAAA;YACH,CAAC,OAAO,GAAG,EAAE;aACZ,OAAO,CAAC,KAAK;AACzB,eAAc,CAAC,0CAA0C,EAAE,aAAa,CAAC,CAAC,CAAC;AAC3E,eAAc,GAAG;cACJ,CAAA;AACb,YAAA;AACA,UAAA;AACA,QAAA;;AAEA,OAAM,OAAO,OAAO,CAAA;MACf,CAAC,OAAO,KAAK,EAAE;AACpB,OAAM,OAAO,CAAC,KAAK,CAAC,mDAAmD,EAAE,KAAK,CAAC,CAAA;AAC/E,OAAM,OAAO,EAAE,CAAA;AACf,MAAA;AACA,IAAG,CAAC,CAAA;;GAEF,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,OAAO,KAAK,EAAE,UAAU,KAAK;AACpE,KAAI,IAAI;AACR,OAAM,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAA;OACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;OAC7C,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AACnC,SAAQ,OAAO;WACL,OAAO,EAAE,KAAK;AACxB,WAAU,KAAK,EAAE,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;UACzC,CAAA;AACT,QAAA;;OAEM,IAAI,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;;AAElD;OACM,IAAI,CAAC,UAAU,EAAE;AACvB,SAAQ,IAAI;WACF,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;WACjD,IAAI,QAAQ,EAAE;aACZ,UAAU,GAAG,QAAQ,CAAA;AACjC,YAAA;UACS,CAAC,OAAO,YAAY,EAAE;WACrB,OAAO,CAAC,IAAI;AACtB,aAAY,CAAC,mCAAmC,EAAE,UAAU,CAAC,CAAC,CAAC;AAC/D,aAAY,YAAY;YACb,CAAA;AACX,UAAA;AACA,QAAA;;OAEM,IAAI,CAAC,UAAU,EAAE;AACvB,SAAQ,OAAO;WACL,OAAO,EAAE,KAAK;WACd,KAAK,EAAE,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;UAC5C,CAAA;AACT,QAAA;;OAEM,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;OAClD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAA;MAC7C,CAAC,OAAO,KAAK,EAAE;OACd,OAAO,CAAC,KAAK;AACnB,SAAQ,CAAC,0CAA0C,EAAE,UAAU,CAAC,CAAC,CAAC;AAClE,SAAQ,KAAK;QACN,CAAA;OACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;AACrD,MAAA;AACA,IAAG,CAAC,CAAA;;AAEJ,GAAE,OAAO,CAAC,MAAM,CAAC,yBAAyB,EAAE,YAAY;AACxD,KAAI,IAAI;AACR,OAAM,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAA;AAC1C,OAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAA;OAC9C,MAAM,OAAO,GAAG,EAAE,CAAA;;AAExB,OAAM,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE;AAC7C,SAAQ,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAA;SAC9B,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,SAAA;;AAEvD,SAAQ,IAAI,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAAA;;AAEnD;SACQ,IAAI,CAAC,UAAU,EAAE;AACzB,WAAU,IAAI;AACd,aAAY,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,CAAA;aAChD,IAAI,QAAQ,EAAE;eACZ,UAAU,GAAG,QAAQ,CAAA;AACnC,cAAA;YACW,CAAC,OAAO,YAAY,EAAE;aACrB,OAAO,CAAC,IAAI;eACV,CAAC,mCAAmC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,eAAc,YAAY;cACb,CAAA;AACb,YAAA;AACA,UAAA;;SAEQ,IAAI,CAAC,UAAU,EAAE;WACf,OAAO,CAAC,GAAG;aACT,CAAC,mCAAmC,EAAE,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC;YACzF,CAAA;WACD,SAAA;AACV,UAAA;;AAEA,SAAQ,IAAI;WACF,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;WAClD,OAAO,CAAC,IAAI,CAAC;AACvB,aAAY,UAAU,EAAE,MAAM,CAAC,IAAI;AACnC,aAAY,MAAM;AAClB,YAAW,CAAC,CAAA;UACH,CAAC,OAAO,SAAS,EAAE;WAClB,OAAO,CAAC,KAAK;aACX,CAAC,0CAA0C,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE,aAAY,SAAS;YACV,CAAA;AACX,UAAA;AACA,QAAA;;AAEA,OAAM,OAAO,OAAO,CAAA;MACf,CAAC,OAAO,KAAK,EAAE;AACpB,OAAM,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAA;AACzE,OAAM,OAAO,EAAE,CAAA;AACf,MAAA;AACA,IAAG,CAAC,CAAA;;GAEF,OAAO,CAAC,MAAM,CAAC,yBAAyB,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK;AACnE,KAAI,IAAI;AACR,OAAM,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;OACrC,OAAO,CAAC,GAAG,CAAC,CAAC,0CAA0C,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;OACtE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;MAC3C,CAAC,OAAO,KAAK,EAAE;AACpB,OAAM,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAA;OACpE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;AACrD,MAAA;AACA,IAAG,CAAC,CAAA;AACJ,EAAA;;AAEA,CAAA,MAAA,CAAA,OAAA,GAAiB,cAAc,CAAA;AAC/B,CAAA,MAAA,CAAA,OAAA,CAAA,iBAAA,GAAmC,iBAAiB,CAAA;AACpD;CACA,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,gBAAgB,EAAE;GACtD,GAAG,EAAE,iBAAiB;AACxB,EAAC,CAAC,CAAA;AACF,CAAA,MAAA,CAAA,OAAA,CAAA,2BAAA,GAA6C,2BAA2B,CAAA;AACxE,CAAA,MAAA,CAAA,OAAA,CAAA,kBAAA,GAAoC,kBAAkB,CAAA;;;;;;;;;;;;;;;;;;ACr7BtD,MAAM0E,mBAAiB;AACvB,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,4BAA4B,CAAA;;AAEnE;AACA,IAAIC,OAAK,GAAG,IAAI,CAAA;AAChB,SAASC,UAAQ,GAAG;AACpB,EAAE,IAAI,CAACD,OAAK,EAAE;AACd,IAAI,MAAM,KAAK,GAAGhF,UAAyB,CAAA;AAC3C,IAAIgF,OAAK,GAAG,IAAI,KAAK,CAAC;AACtB,MAAM,IAAI,EAAE,oBAAoB;AAChC,MAAM,aAAa,EAAE,kBAAkB;AACvC,KAAK,CAAC,CAAA;AACN,GAAA;AACA,EAAE,OAAOA,OAAK,CAAA;AACd,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeE,oBAAkB,GAAG;AACpC,EAAE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,CAAC,EAAEH,mBAAiB,CAAC,gBAAgB,CAAC,EAAE;AACvE,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;AACnD,GAAG,CAAC,CAAA;;AAEJ,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AACpB,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,+BAA+B,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AACxE,GAAA;;AAEA,EAAE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;;AAEpC,EAAE,OAAO;AACT,IAAI,UAAU,EAAE,IAAI,CAAC,WAAW;AAChC,IAAI,QAAQ,EAAE,IAAI,CAAC,SAAS;AAC5B,IAAI,eAAe,EAAE,IAAI,CAAC,gBAAgB;AAC1C,IAAI,uBAAuB,EAAE,IAAI,CAAC,yBAAyB;AAC3D,IAAI,SAAS,EAAE,IAAI,CAAC,UAAU;AAC9B,IAAI,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC3B,GAAG,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeI,cAAY,CAAC,UAAU,EAAE;AACxC,EAAE,MAAM,QAAQ,GAAG,MAAM,KAAK;AAC9B,IAAI,CAAC,EAAEJ,mBAAiB,CAAC,6BAA6B,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;AACxF,GAAG,CAAA;;AAEH,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AAC/B,IAAI,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;AAChC,GAAA;;AAEA,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AAC/B,IAAI,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;AACtC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,eAAe,EAAE;AACxC,MAAM,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;AAClC,KAAA;AACA,IAAI,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;AAChC,GAAA;;AAEA,EAAE,IAAI,QAAQ,CAAC,EAAE,EAAE;AACnB,IAAI,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;;AAEtC;AACA,IAAI,MAAM,CAAC,GAAGE,UAAQ,EAAE,CAAA;AACxB,IAAI,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;AAC3C,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;AACjC,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;AACvC,IAAI,CAAC,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;;AAEtD,IAAI,OAAO;AACX,MAAM,MAAM,EAAE,YAAY;AAC1B,MAAM,KAAK,EAAE,IAAI,CAAC,YAAY;AAC9B,MAAM,MAAM,EAAE,IAAI,CAAC,OAAO;AAC1B,KAAK,CAAA;AACL,GAAA;;AAEA,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC5D,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASG,gBAAc,GAAG;AAC1B,EAAE,IAAI;AACN,IAAI,MAAM,CAAC,GAAGH,UAAQ,EAAE,CAAA;AACxB,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;AACtC,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAA;;AAE3B,IAAI,OAAO;AACX,MAAM,KAAK;AACX,MAAM,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC7B,MAAM,eAAe,EAAE,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAC/C,KAAK,CAAA;AACL,GAAG,CAAC,MAAM;AACV,IAAI,OAAO,IAAI,CAAA;AACf,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASI,eAAa,GAAG;AACzB,EAAE,MAAM,MAAM,GAAGD,gBAAc,EAAE,CAAA;AACjC,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,CAAA;AACnC,GAAA;;AAEA,EAAE,OAAO;AACT,IAAI,aAAa,EAAE,IAAI;AACvB,IAAI,MAAM,EAAE,MAAM,CAAC,MAAM;AACzB,IAAI,eAAe,EAAE,MAAM,CAAC,eAAe;AAC3C,GAAG,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAeE,oBAAkB,GAAG;AACpC,EAAE,MAAM,MAAM,GAAGF,gBAAc,EAAE,CAAA;AACjC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;;AAE1B,EAAE,IAAI;AACN,IAAI,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,CAAC,EAAEL,mBAAiB,CAAC,YAAY,CAAC,EAAE;AACrE,MAAM,OAAO,EAAE;AACf,QAAQ,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/C,OAAO;AACP,KAAK,CAAC,CAAA;;AAEN,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AACjC;AACA,MAAM,UAAU,EAAE,CAAA;AAClB,MAAM,OAAO,IAAI,CAAA;AACjB,KAAA;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,IAAI,CAAA;;AAEjC,IAAI,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;AACtC,IAAI,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAA;AAC5B,GAAG,CAAC,MAAM;AACV,IAAI,OAAO,IAAI,CAAA;AACf,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA,SAAS,UAAU,GAAG;AACtB,EAAE,IAAI;AACN,IAAI,MAAM,CAAC,GAAGE,UAAQ,EAAE,CAAA;AACxB,IAAI,CAAC,CAAC,KAAK,EAAE,CAAA;AACb,IAAI,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAA;AACzD,GAAG,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,GAAG,CAAC,CAAA;AACxE,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeM,uBAAqB,CAAC,OAAO,EAAE;AAC9C,EAAE,MAAM,MAAM,GAAGH,gBAAc,EAAE,CAAA;AACjC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;;AAE1B,EAAE,IAAI;AACN,IAAI,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,CAAC,EAAEL,mBAAiB,CAAC,YAAY,CAAC,EAAE;AACrE,MAAM,MAAM,EAAE,OAAO;AACrB,MAAM,OAAO,EAAE;AACf,QAAQ,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/C,QAAQ,cAAc,EAAE,kBAAkB;AAC1C,OAAO;AACP,MAAM,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AACnC,KAAK,CAAC,CAAA;;AAEN,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AACjC,MAAM,UAAU,EAAE,CAAA;AAClB,MAAM,OAAO,IAAI,CAAA;AACjB,KAAA;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,IAAI,CAAA;;AAEjC,IAAI,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;AACtC,IAAI,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAA;AAC5B,GAAG,CAAC,MAAM;AACV,IAAI,OAAO,IAAI,CAAA;AACf,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAeS,qBAAmB,GAAG;AACrC,EAAE,MAAM,MAAM,GAAGJ,gBAAc,EAAE,CAAA;AACjC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;;AAE1B,EAAE,IAAI;AACN,IAAI,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,CAAC,EAAEL,mBAAiB,CAAC,qBAAqB,CAAC,EAAE;AAC9E,MAAM,OAAO,EAAE;AACf,QAAQ,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/C,OAAO;AACP,KAAK,CAAC,CAAA;;AAEN,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AACjC,MAAM,UAAU,EAAE,CAAA;AAClB,MAAM,OAAO,IAAI,CAAA;AACjB,KAAA;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,IAAI,CAAA;;AAEjC,IAAI,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;AAChC,GAAG,CAAC,MAAM;AACV,IAAI,OAAO,IAAI,CAAA;AACf,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeU,uBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;AAC3D,EAAE,MAAM,MAAM,GAAGL,gBAAc,EAAE,CAAA;AACjC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;;AAE1B,EAAE,IAAI;AACN,IAAI,MAAM,QAAQ,GAAG,MAAM,KAAK;AAChC,MAAM,CAAC,EAAEL,mBAAiB,CAAC,cAAc,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;AAClG,MAAM;AACN,QAAQ,MAAM,EAAE,OAAO;AACvB,QAAQ,OAAO,EAAE;AACjB,UAAU,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACjD,UAAU,cAAc,EAAE,kBAAkB;AAC5C,SAAS;AACT,QAAQ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AACrC,OAAO;AACP,KAAK,CAAA;;AAEL,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AACjC,MAAM,UAAU,EAAE,CAAA;AAClB,MAAM,OAAO,IAAI,CAAA;AACjB,KAAA;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,IAAI,CAAA;;AAEjC,IAAI,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;AAChC,GAAG,CAAC,MAAM;AACV,IAAI,OAAO,IAAI,CAAA;AACf,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE;AAClD,EAAE,MAAM,MAAM,GAAGK,gBAAc,EAAE,CAAA;AACjC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;;AAE1B,EAAE,IAAI;AACN,IAAI,MAAM,QAAQ,GAAG,MAAM,KAAK;AAChC,MAAM,CAAC,EAAEL,mBAAiB,CAAC,cAAc,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;AAClG,MAAM;AACN,QAAQ,MAAM,EAAE,QAAQ;AACxB,QAAQ,OAAO,EAAE;AACjB,UAAU,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACjD,SAAS;AACT,OAAO;AACP,KAAK,CAAA;;AAEL,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AACjC,MAAM,UAAU,EAAE,CAAA;AAClB,MAAM,OAAO,IAAI,CAAA;AACjB,KAAA;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,IAAI,CAAA;;AAEjC,IAAI,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;AAChC,GAAG,CAAC,MAAM;AACV,IAAI,OAAO,IAAI,CAAA;AACf,GAAA;AACA,CAAA;;AAEA,IAAAW,wBAAc,GAAG;AACjB,sBAAER,oBAAkB;AACpB,gBAAEC,cAAY;AACd,kBAAEC,gBAAc;AAChB,iBAAEC,eAAa;AACf,sBAAEC,oBAAkB;AACpB,yBAAEC,uBAAqB;AACvB,uBAAEC,qBAAmB;AACrB,yBAAEC,uBAAqB;AACvB,EAAE,qBAAqB;AACvB,EAAE,UAAU;AACZ,CAAC;;;;;;;;;ACjUD,MAAM,EAAE,GAAG3F,YAAa,CAAA;AACxB,MAAM+B,MAAI,GAAG9B,YAAe,CAAA;AAC5B,MAAM,EAAE,cAAc,EAAE,GAAGC,wBAAmC,CAAA;;AAE9D,MAAM,iBAAiB;AACvB,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,4BAA4B,CAAA;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe2F,mBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;AACpD,EAAE,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;AAC/B,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,iCAAiC;AAC9C,MAAM,YAAY,EAAE,IAAI;AACxB,KAAK,CAAA;AACL,GAAA;;AAEA,EAAE,IAAI;AACN;AACA,IAAI,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;;AAE9C;AACA,IAAI,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAA;AACnC,IAAI,QAAQ,CAAC,MAAM;AACnB,MAAM,MAAM;AACZ,MAAM,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;AACxD,MAAM9D,MAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC5B,KAAK,CAAA;AACL,IAAI,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAA;;AAEzD;AACA,IAAI,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC,EAAE;AACrE,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM,OAAO,EAAE;AACf,QAAQ,aAAa,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7C,OAAO;AACP,MAAM,IAAI,EAAE,QAAQ;AACpB,KAAK,CAAC,CAAA;;AAEN,IAAI,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;;AAEtC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AACtB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AACjE,QAAQ,OAAO,EAAE,IAAI,CAAC,OAAO;AAC7B,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,WAAW,EAAE,IAAI,CAAC,WAAW;AACnC,MAAM,SAAS,EAAE,IAAI,CAAC,SAAS;AAC/B,MAAM,OAAO,EAAE,IAAI,CAAC,OAAO;AAC3B,MAAM,WAAW,EAAE,IAAI,CAAC,WAAW;AACnC,MAAM,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC7B,KAAK,CAAA;AACL,GAAG,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAAA;AAChE,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,+BAA+B;AAC3D,KAAK,CAAA;AACL,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS+D,gBAAc,CAAC,KAAK,EAAE,IAAI,EAAE;AACrC,EAAE,OAAO,CAAC,EAAE,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;AACxD,CAAA;;AAEA,IAAAC,uBAAc,GAAG;AACjB,qBAAEF,mBAAiB;AACnB,kBAAEC,gBAAc;AAChB,EAAE,iBAAiB;AACnB,CAAC;;;;;;;;;ACtFD,MAAM/D,MAAI,GAAG9B,YAAe,CAAA;AAC5B,MAAM,OAAEoC,KAAG,UAAEhB,QAAM,EAAE,GAAGnB,YAAmB,CAAA;AAC3C,MAAM8F,QAAM,GAAG7F,YAAkB,CAAA;;AAEjC,MAAMsC,iBAAe,GAAGrC,iBAA4B,CAAA;AACpD,MAAMsD,oBAAkB,GAAGrD,oBAA+B,CAAA;AAC1D,MAAM0F,uBAAqB,GAAGzF,uBAAkC,CAAA;AAChE,MAAM;AACN,EAAE,aAAa;AACf,sBAAEkF,oBAAkB;AACpB,CAAC,GAAGjF,wBAAmC,CAAA;;AAIvC;AACA;AACA;AACA,SAAS,YAAY,CAAC,IAAI,EAAE;AAC5B,EAAE,OAAO,CAAC,IAAI,IAAI,OAAO;AACzB,KAAK,WAAW,EAAA;AAChB,KAAK,OAAO,CAAC,aAAa,EAAE,GAAG,CAAA;AAC/B,KAAK,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;AAC1B,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,6BAA6B,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE;AAC1E,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,IAAI,QAAQ,CAAA;AAC9C,EAAE,MAAM,aAAa,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;AAC/C,EAAE,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;;AAEzC,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;AAC9B,IAAI,IAAI,EAAE,aAAa;AACvB,IAAI,WAAW,EAAE,SAAS;AAC1B,IAAI,MAAM,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;AACpC,IAAI,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;AAC1C,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,QAAQ,EAAE,SAAS;AACvB,IAAI,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;AAC5B,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,MAAM;AACV,IAAI,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;AACtC,IAAI,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACzC,GAAG,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,SAAS,EAAE;AAClC,EAAE,MAAM,MAAM,GAAG;AACjB,IAAI,OAAO,EAAE,EAAE;AACf,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,QAAQ,EAAE,EAAE;AAChB,IAAI,OAAO,EAAE,EAAE;AACf,GAAG,CAAA;;AAEH,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,MAAM,CAAA;;AAE/B;AACA,EAAE,IAAI,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAA;AAC3D,EAAE,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAA;AACjE,EAAE,IAAI,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAA;AAC9D,EAAE,IAAI,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAA;;AAE3D;AACA,EAAE,IAAI,SAAS,CAAC,MAAM,EAAE;AACxB,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAA;AAC3E,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,SAAS;AAClC,MAAM,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAA;AACnD,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAA;AAC9E,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAA;AAC3E,GAAA;;AAEA,EAAE,OAAO,MAAM,CAAA;AACf,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe0F,wBAAsB,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE;AAC1E,EAAE,IAAI;AACN;AACA,IAAI,MAAM,YAAY,GAAGxD,iBAAe,CAAC,wBAAwB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AAC7E,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE;AAC5B,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,yBAAyB,GAAG,YAAY,CAAC,OAAO;AAC/D,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AACnD,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,MAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAA;AACvE,KAAA;;AAEA;AACA,IAAI,MAAM,IAAI,GAAG,aAAa,EAAE,CAAA;AAChC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AAC7B,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,iCAAiC;AAChD,QAAQ,YAAY,EAAE,IAAI;AAC1B,OAAO,CAAA;AACP,KAAA;AACA,IAAI,MAAM,OAAO,GAAG,MAAM+C,oBAAkB,EAAE,CAAA;AAC9C,IAAI,MAAM,KAAK,GAAG,OAAO,EAAE,QAAQ,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE,CAAA;AAC1D,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,uCAAuC;AACtD,QAAQ,YAAY,EAAE,IAAI;AAC1B,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,MAAM,QAAQ,GAAG,6BAA6B,CAAC,SAAS,EAAE,QAAQ,EAAE;AACxE,MAAM,GAAG,OAAO;AAChB,MAAM,KAAK;AACX,MAAM,SAAS,EAAE,KAAK;AACtB,KAAK,CAAC,CAAA;;AAEN;AACA,IAAI;AACJ,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO;AAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS;AAChC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAA;AACvB,MAAM;AACN,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK;AACb,UAAU,iEAAiE;AAC3E,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,MAAM,aAAa,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;AAChD,IAAI,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;;AAE7E,IAAI,MAAM,UAAU,GAAG,MAAMnE,QAAM,CAAC,cAAc,CAAC,GAAG,EAAE;AACxD,MAAM,KAAK,EAAE,oBAAoB;AACjC,MAAM,WAAW,EAAE,eAAe;AAClC,MAAM,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3D,KAAK,CAAC,CAAA;;AAEN,IAAI,IAAI,UAAU,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AACrD,MAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,CAAA;AACvD,KAAA;;AAEA,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;;AAExC;AACA,IAAI,MAAM,GAAG,GAAG,IAAI2E,QAAM,EAAE,CAAA;AAC5B,IAAI,GAAG,CAAC,OAAO;AACf,MAAM,eAAe;AACrB,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC;AAC7D,KAAK,CAAA;AACL,IAAI,GAAG,CAAC,OAAO;AACf,MAAM,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC;AACnC,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC;AAC9D,KAAK,CAAA;AACL,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;;AAE1B,IAAI,OAAO,CAAC,GAAG,CAAC,2CAA2C,EAAE,QAAQ,CAAC,CAAA;;AAEtE;AACA,IAAI,IAAI,cAAc,GAAG,IAAI,CAAA;AAC7B,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;AAC5B,MAAM,cAAc,GAAG,MAAMD,uBAAqB,CAAC,iBAAiB;AACpE,QAAQ,QAAQ;AAChB,QAAQ,QAAQ;AAChB,OAAO,CAAA;AACP,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,oDAAoD;AAC5D,QAAQ,cAAc;AACtB,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,QAAQ;AACd,MAAM,QAAQ;AACd,MAAM,cAAc;AACpB,KAAK,CAAA;AACL,GAAG,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,OAAO,CAAC,KAAK;AACjB,MAAM,8DAA8D;AACpE,MAAM,GAAG;AACT,KAAK,CAAA;AACL,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAA;AACjD,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeG,0BAAwB,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE;AACjE,EAAE,IAAI;AACN;AACA,IAAI,MAAM,GAAG,GAAG,MAAMxC,oBAAkB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AAChE,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,eAAe,EAAE,WAAW,CAAC,uBAAuB,CAAC;AACrE,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,IAAI,WAAW,GAAG,GAAG,CAAC,WAAW,CAAA;AACrC,IAAI,IAAI,CAAC,WAAW,EAAE;AACtB,MAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAA;AACrE,KAAA;;AAEA;AACA,IAAI,WAAW,GAAG,WAAA;AAClB,OAAO,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,IAAI,OAAO,CAAA;AAClD,OAAO,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;;AAExC;AACA,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AAC7C,MAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAA;AACrE,KAAA;;AAEA,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,mDAAmD;AACzD,MAAM,WAAW;AACjB,KAAK,CAAA;;AAEL;AACA,IAAI,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAA;AAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AACtB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;AACpF,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;AACpD,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;;AAE9C;AACA,IAAI,MAAM,GAAG,GAAG,IAAIsC,QAAM,CAAC,SAAS,CAAC,CAAA;AACrC,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;;AAEpC,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK;AAC1C,MAAM,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC7C,KAAK,CAAA;;AAEL,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,yCAAyC;AACxD,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI;AACJ,MAAM,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;AACzC,MAAMjE,MAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAA;AAC1C,MAAM;AACN,MAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAA;AAClE,KAAA;;AAEA;AACA,IAAI,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;AAC5D,IAAI,IAAI,SAAS,CAAA;AACjB,IAAI,IAAI;AACR,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;AACvC,KAAK,CAAC,OAAO,QAAQ,EAAE;AACvB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,8BAA8B,GAAG,QAAQ,CAAC,OAAO;AAChE,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,SAAS,CAAC,aAAa,GAAG;AAC9B,MAAM,MAAM,EAAE,UAAU;AACxB,MAAM,WAAW;AACjB,MAAM,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AAC3C,KAAK,CAAA;;AAEL;AACA,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,CAAA;;AAEhD;AACA,IAAI,MAAM,UAAU,GAAGU,iBAAe,CAAC,uBAAuB;AAC9D,MAAM,GAAG;AACT,MAAM,KAAK;AACX,MAAM,QAAQ;AACd,MAAM,SAAS;AACf,KAAK,CAAA;;AAEL,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE;AAC1B,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,wBAAwB,GAAG,UAAU,CAAC,OAAO;AAC5D,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,OAAO,CAAC,GAAG,CAAC,4CAA4C,EAAE,QAAQ,CAAC,CAAA;;AAEvE,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,QAAQ;AACd,MAAM,KAAK,EAAE,SAAS;AACtB,MAAM,MAAM,EAAE,UAAU,CAAC,MAAM;AAC/B,KAAK,CAAA;AACL,GAAG,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,OAAO,CAAC,KAAK,CAAC,mDAAmD,EAAE,GAAG,CAAC,CAAA;AAC3E,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAA;AACjD,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS0D,wBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE;AACjD,EAAE,IAAI;AACN,IAAI,MAAM,YAAY,GAAG1D,iBAAe,CAAC,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AAC9E,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE;AAC5B,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,yBAAyB,GAAG,YAAY,CAAC,OAAO;AAC/D,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AACnD,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,MAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAA;AACvE,KAAA;;AAEA,IAAI,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;;AAE3C,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,SAAS,EAAE,QAAQ;AACzB,MAAM,MAAM;AACZ,MAAM,eAAe,EAAE,CAAC,CAAC,SAAS,CAAC,aAAa;AAChD,KAAK,CAAA;AACL,GAAG,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,OAAO,CAAC,KAAK,CAAC,kDAAkD,EAAE,GAAG,CAAC,CAAA;AAC1E,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAA;AACjD,GAAA;AACA,CAAA;;AAEA,IAAA2D,yBAAc,GAAG;AACjB,0BAAEH,wBAAsB;AACxB,4BAAEC,0BAAwB;AAC1B,0BAAEC,wBAAsB;AACxB,EAAE,6BAA6B;AAC/B,EAAE,aAAa;AACf,CAAC;;;;;;;;;;;;;;;;;ACvXD,MAAM,OAAE9D,KAAG,EAAE,MAAM,EAAE,GAAGrC,YAAmB,CAAA;AAC3C,MAAM+B,MAAI,GAAG9B,YAAe,CAAA;AAC5B,MAAM,MAAM,GAAGC,YAAkB,CAAA;AACjC,MAAM,mBAAEiC,iBAAe,EAAE,GAAGhC,IAAwB,CAAA;AACpD,MAAM;AACN,EAAE,uBAAuB;AACzB,EAAE,aAAa;AACf,EAAE,sBAAsB;AACxB,CAAC,GAAGC,0BAA6C,CAAA;AACjD,MAAM;AACN,EAAE,qBAAqB;AACvB,EAAE,kBAAkB;AACpB,EAAE,uBAAuB;AACzB,EAAE,yBAAyB;AAC3B,EAAE,wBAAwB;AAC1B,CAAC,GAAGC,sBAAyC,CAAA;AAC7C,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,GAAGC,oBAA+B,CAAA;AACtE,MAAMmC,iBAAe,GAAGlC,iBAA4B,CAAA;;AAEpD,MAAM,cAAc,GAAG,iBAAiB,CAAA;AACxC,MAAMgC,SAAO,GAAG,WAAW,CAAA;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe8D,uBAAqB;AACpC,EAAE,GAAG;AACL,EAAE,KAAK;AACP,EAAE,WAAW;AACb,EAAE,OAAO,GAAG,EAAE;AACd,EAAE,cAAc,GAAG,IAAI;AACvB,EAAE;AACF,EAAE,IAAI;AACN;AACA,IAAI,MAAM,QAAQ,GAAGtE,MAAI,CAAC,IAAI;AAC9B,MAAMM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC7B,MAAME,SAAO;AACb,MAAM,KAAK;AACX,MAAM,cAAc;AACpB,KAAK,CAAA;AACL,IAAI,MAAM,eAAe,GAAGJ,iBAAe,CAAC,QAAQ,CAAC,CAAA;AACrD,IAAI,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI;AAC1C,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,WAAW,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,WAAW,CAAC;AACjE,KAAK,CAAA;;AAEL,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC;AACpD,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,EAAE,CAAA;;AAEzC;AACA,IAAI,MAAM,cAAc,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;AACxD,IAAI,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;AAClD,IAAI,MAAM,OAAO,GAAG,uBAAuB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA;AAC3E,IAAI,MAAM,SAAS,GAAG,yBAAyB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA;;AAE/E;AACA,IAAI,MAAM,eAAe,GAAG,aAAa,CAAC;AAC1C,MAAM,aAAa,EAAE,sBAAsB;AAC3C,MAAM,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,IAAI,oBAAoB;AACrE,MAAM,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;AAC5C,MAAM,IAAI,OAAO,CAAC,UAAA;AAClB,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,EAAA;AAC5E,UAAU,EAAE,CAAC;AACb,MAAM,SAAS,EAAE,IAAI;AACrB,MAAM,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;AAC9B,MAAM,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,MAAM;AAClC,MAAM,SAAS,EAAE;AACjB,QAAQ,EAAE,EAAE,SAAS,CAAC,EAAE;AACxB,QAAQ,IAAI,EAAE,SAAS,CAAC,IAAI;AAC5B,QAAQ,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,WAAW;AAC3C,QAAQ,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI;AAChD,QAAQ,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,CAAC;AACvC,QAAQ,MAAM;AACd,QAAQ,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC;AACrC,OAAO;AACP,MAAM,OAAO;AACb,MAAM,SAAS;AACf,MAAM,WAAW;AACjB,KAAK,CAAC,CAAA;;AAEN;AACA,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAE;AAC5B,MAAM,IAAI;AACV,QAAQ,MAAM,WAAW,GAAGM,iBAAe,CAAC,wBAAwB;AACpE,UAAU,GAAG;AACb,UAAU,KAAK;AACf,SAAS,CAAA;AACT,QAAQ,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAClE,QAAQ,IAAI,SAAS,EAAE;AACvB,UAAU,eAAe,CAAC,KAAK,GAAG;AAClC,YAAY,GAAG,EAAE,SAAS,CAAC,QAAQ;AACnC,YAAY,IAAI,EAAE,SAAS;AAC3B,WAAW,CAAA;AACX,UAAU,IAAI,SAAS,CAAC,aAAa,EAAE,WAAW,EAAE;AACpD,YAAY,eAAe,CAAC,KAAK,CAAC,eAAe;AACjD,cAAc,SAAS,CAAC,aAAa,CAAC,WAAW,CAAA;AACjD,WAAA;AACA,SAAA;AACA,OAAO,CAAC,OAAO,QAAQ,EAAE;AACzB,QAAQ,OAAO,CAAC,IAAI;AACpB,UAAU,qDAAqD;AAC/D,UAAU,QAAQ,CAAC,OAAO;AAC1B,SAAS,CAAA;AACT,OAAA;AACA,KAAA;;AAEA;AACA,IAAI,MAAM,UAAU,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAA;AAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AAC3B,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,6BAA6B,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,MAAM,aAAa,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,WAAW;AACxD,OAAO,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAA;AACrC,OAAO,OAAO,CAAC,MAAM,EAAE,GAAG,CAAA;AAC1B,OAAO,WAAW,EAAE,CAAA;;AAEpB,IAAI,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE;AACpE,MAAM,KAAK,EAAE,yBAAyB;AACtC,MAAM,WAAW,EAAEV,MAAI,CAAC,IAAI;AAC5B,QAAQM,KAAG,CAAC,OAAO,CAAC,SAAS,CAAC;AAC9B,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;AACxC,OAAO;AACP,MAAM,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAC7D,KAAK,CAAC,CAAA;;AAEN,IAAI,IAAI,QAAQ,IAAI,CAAC,QAAQ,EAAE;AAC/B,MAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;AAC/C,KAAA;;AAEA;AACA,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,EAAE,CAAA;AAC5B,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AAC/D,IAAI,GAAG,CAAC,OAAO;AACf,MAAM,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC;AACvC,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;AACtC,KAAK,CAAA;;AAEL,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;;AAE1B,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,CAAC,mDAAmD,EAAE,QAAQ,CAAC,CAAC;AACtE,KAAK,CAAA;;AAEL,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,QAAQ;AACd,MAAM,MAAM,EAAE,eAAe;AAC7B,KAAK,CAAA;AACL,GAAG,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK;AACjB,MAAM,wDAAwD;AAC9D,MAAM,KAAK;AACX,KAAK,CAAA;AACL,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,KAAK,CAAC,OAAO;AAC1B,KAAK,CAAA;AACL,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeiE,qBAAmB,CAAC,GAAG,EAAE;AACxC,EAAE,IAAI;AACN,IAAI,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE;AACrE,MAAM,KAAK,EAAE,gCAAgC;AAC7C,MAAM,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAC7D,MAAM,UAAU,EAAE,CAAC,UAAU,CAAC;AAC9B,KAAK,CAAC,CAAA;;AAEN,IAAI,IAAI,QAAQ,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACrD,MAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;AAC/C,KAAA;;AAEA,IAAI,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;;AAEhC;AACA,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAA;AACnC,IAAI,MAAM,OAAO,GAAGvE,MAAI,CAAC,IAAI,CAACM,KAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAA;AACjE,IAAI,MAAM,EAAE,kBAAkB,EAAE,GAAG7B,qBAA4B,CAAA;AAC/D,IAAI,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;;AAEpC,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;AACpC,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AAC7C,KAAK,CAAA;;AAEL,IAAI,IAAI,CAAC,WAAW,EAAE;AACtB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,8CAA8C;AAC7D,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;AAC9D,IAAI,IAAI,eAAe,CAAA;AACvB,IAAI,IAAI;AACR,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;AAC9C,KAAK,CAAC,OAAO,UAAU,EAAE;AACzB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AACpD,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,MAAM,UAAU,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAA;AAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AAC3B,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,gBAAgB,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,eAAe,GAAG,aAAa,CAAC,eAAe,CAAC,CAAA;;AAEpD,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,QAAQ,EAAE,OAAO;AACvB,MAAM,eAAe,EAAE;AACvB,QAAQ,IAAI,EAAE,eAAe,CAAC,IAAI;AAClC,QAAQ,WAAW,EAAE,eAAe,CAAC,WAAW;AAChD,QAAQ,MAAM,EAAE,eAAe,CAAC,MAAM;AACtC,QAAQ,SAAS,EAAE,eAAe,CAAC,SAAS;AAC5C,QAAQ,OAAO,EAAE,eAAe,CAAC,OAAO,IAAI,EAAE;AAC9C,QAAQ,SAAS,EAAE,eAAe,CAAC,SAAS,IAAI,EAAE;AAClD,OAAO;AACP,KAAK,CAAA;AACL,GAAG,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK;AACjB,MAAM,6DAA6D;AACnE,MAAM,KAAK;AACX,KAAK,CAAA;AACL,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;AACnD,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe+F,uBAAqB;AACpC,EAAE,GAAG;AACL,EAAE,KAAK;AACP,EAAE,cAAc,GAAG,IAAI;AACvB,EAAE,OAAO,GAAG,EAAE;AACd,EAAE;AACF,EAAE,IAAI;AACN,IAAI,IAAI,OAAO,CAAA;;AAEf,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC1B;AACA,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAA;AAChC,KAAK,MAAM;AACX;AACA,MAAM,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE;AACvE,QAAQ,KAAK,EAAE,gCAAgC;AAC/C,QAAQ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAC/D,QAAQ,UAAU,EAAE,CAAC,UAAU,CAAC;AAChC,OAAO,CAAC,CAAA;;AAER,MAAM,IAAI,QAAQ,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACvD,QAAQ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;AACjD,OAAA;;AAEA,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;AAC5B,KAAA;;AAEA;AACA,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAA;;AAEnC;AACA,IAAI,MAAM,OAAO,GAAGxE,MAAI,CAAC,IAAI,CAACM,KAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAA;AACjE,IAAI,MAAM,EAAE,kBAAkB,EAAE,GAAG7B,qBAA4B,CAAA;AAC/D,IAAI,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;;AAEpC;AACA,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;AACpC,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AAC7C,KAAK,CAAA;;AAEL,IAAI,IAAI,CAAC,WAAW,EAAE;AACtB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,8CAA8C;AAC7D,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;AAC9D,IAAI,IAAI,eAAe,CAAA;AACvB,IAAI,IAAI;AACR,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;AAC9C,KAAK,CAAC,OAAO,UAAU,EAAE;AACzB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,gBAAgB,EAAE,WAAW,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AAChF,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,MAAM,UAAU,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAA;AAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AAC3B,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,0BAA0B,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,eAAe,GAAG,aAAa,CAAC,eAAe,CAAC,CAAA;;AAEpD;AACA,IAAI,OAAO,MAAM,sBAAsB;AACvC,MAAM,GAAG;AACT,MAAM,KAAK;AACX,MAAM,eAAe;AACrB,MAAM,cAAc;AACpB,MAAM;AACN,QAAQ,IAAI,EAAE,OAAO,CAAC,IAAI;AAC1B,QAAQ,MAAM,EAAE,OAAO,CAAC,MAAM;AAC9B,QAAQ,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAClC,OAAO;AACP,KAAK,CAAA;AACL,GAAG,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK;AACjB,MAAM,wDAAwD;AAC9D,MAAM,KAAK;AACX,KAAK,CAAA;AACL,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,KAAK,CAAC,OAAO;AAC1B,KAAK,CAAA;AACL,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sBAAsB;AACrC,EAAE,GAAG;AACL,EAAE,KAAK;AACP,EAAE,eAAe;AACjB,EAAE,cAAc,GAAG,IAAI;AACvB,EAAE,OAAO,GAAG,EAAE;AACd,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAA;;AAExC;AACA,EAAE,MAAM,cAAc,GAAG;AACzB,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,gBAAgB,EAAE,EAAE;AACxB,IAAI,MAAM,EAAE,EAAE;AACd,GAAG,CAAA;;AAEH,EAAE;AACF,IAAI,cAAc;AAClB,IAAI,eAAe,CAAC,OAAO;AAC3B,IAAI,eAAe,CAAC,OAAO,CAAC,MAAA;AAC5B,IAAI;AACJ,IAAI,MAAM,gBAAgB,GAAG,cAAc,CAAC,UAAU,EAAE,CAAA;AACxD,IAAI,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;;AAE1E,IAAI,KAAK,MAAM,SAAS,IAAI,eAAe,CAAC,OAAO,EAAE;AACrD,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAA;;AAE3C,MAAM,IAAI,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;AAC9C,QAAQ,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;AACzD,QAAQ,SAAA;AACR,OAAA;;AAEA;AACA,MAAM,IAAI;AACV,QAAQ,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAA;AACzD,QAAQ,IAAI,WAAW,IAAI,WAAW,CAAC,WAAW,EAAE;AACpD,UAAU,MAAM,cAAc,CAAC,cAAc;AAC7C,YAAY,WAAW;AACvB,YAAY,WAAW,CAAC,WAAW;AACnC,YAAY,WAAW,CAAC,aAAa,IAAI,IAAI;AAC7C,WAAW,CAAA;AACX,UAAU,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;AACpD,UAAU,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;AAC5C,SAAS,MAAM;AACf,UAAU,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;AACrC,YAAY,OAAO,EAAE,WAAW;AAChC,YAAY,MAAM,EAAE,uBAAuB;AAC3C,WAAW,CAAC,CAAA;AACZ,SAAA;AACA,OAAO,CAAC,OAAO,YAAY,EAAE;AAC7B,QAAQ,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;AACnC,UAAU,OAAO,EAAE,WAAW;AAC9B,UAAU,MAAM,EAAE,YAAY,CAAC,OAAO;AACtC,SAAS,CAAC,CAAA;AACV,OAAA;AACA,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,IAAI,cAAc,GAAG,IAAI,CAAA;AAC3B,EAAE,IAAI,eAAe,CAAC,KAAK,EAAE;AAC7B,IAAI,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAA;AAC9C,IAAI,IAAI;AACR,MAAM,MAAM,WAAW,GAAGiC,iBAAe,CAAC,wBAAwB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AAC9E,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,IAAI,EAAE,CAAA;AACrD,MAAM,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAA;;AAEvC,MAAM,IAAI,YAAY,CAAC,IAAI,IAAI,QAAQ,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AACtE;AACA,QAAQ,MAAM,SAAS,GAAG,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,CAAA;AAClD,QAAQ,IAAI,YAAY,CAAC,eAAe,EAAE;AAC1C,UAAU,SAAS,CAAC,aAAa,GAAG;AACpC,YAAY,MAAM,EAAE,kBAAkB;AACtC,YAAY,WAAW,EAAE,YAAY,CAAC,eAAe;AACrD,YAAY,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACjD,WAAW,CAAA;AACX,SAAA;AACA,QAAQA,iBAAe,CAAC,uBAAuB;AAC/C,UAAU,GAAG;AACb,UAAU,KAAK;AACf,UAAU,QAAQ;AAClB,UAAU,SAAS;AACnB,SAAS,CAAA;AACT,QAAQ,cAAc,GAAG,QAAQ,CAAA;AACjC,QAAQ,OAAO,CAAC,GAAG;AACnB,UAAU,CAAC,qDAAqD,EAAE,QAAQ,CAAC,CAAC;AAC5E,SAAS,CAAA;AACT,OAAO,MAAM;AACb,QAAQ,CAAC,YAAY,CAAC,IAAI;AAC1B,QAAQ,YAAY,CAAC,eAAe;AACpC,QAAQ,QAAQ;AAChB,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAA;AAChC,QAAQ;AACR;AACA,QAAQ,IAAI;AACZ,UAAU,MAAM;AAChB,YAAY,wBAAwB;AACpC,WAAW,GAAGhC,yBAAoC,CAAA;AAClD,UAAU,MAAM,wBAAwB;AACxC,YAAY,GAAG;AACf,YAAY,KAAK;AACjB,YAAY,YAAY,CAAC,eAAe;AACxC,WAAW,CAAA;AACX,UAAU,cAAc,GAAG,QAAQ,CAAA;AACnC,UAAU,OAAO,CAAC,GAAG;AACrB,YAAY,CAAC,2DAA2D,EAAE,YAAY,CAAC,eAAe,CAAC,CAAC;AACxG,WAAW,CAAA;AACX,SAAS,CAAC,OAAO,WAAW,EAAE;AAC9B,UAAU,OAAO,CAAC,IAAI;AACtB,YAAY,CAAC,mEAAmE,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;AACvG,WAAW,CAAA;AACX,SAAA;AACA,OAAA;AACA,KAAK,CAAC,OAAO,QAAQ,EAAE;AACvB,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,CAAC,6DAA6D,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC1F,OAAO,CAAA;AACP,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,MAAM,SAAS,GAAG,EAAE,GAAG,eAAe,CAAC,SAAS,EAAE,CAAA;;AAEpD,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACvC,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,wCAAwC;AACrD,KAAK,CAAA;AACL,GAAA;;AAEA;AACA,EAAE,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;;AAE3B;AACA,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;AACjD,EAAE,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;AACrE,EAAE,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,SAAS,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;;AAE3E;AACA,EAAE,IAAI,cAAc,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE;AACxD,IAAI,SAAS,CAAC,QAAQ,GAAG,cAAc,CAAA;AACvC,GAAA;;AAEA;AACA,EAAE,MAAM,kBAAkB,GAAG,EAAE,CAAA;AAC/B,EAAE;AACF,IAAI,eAAe,CAAC,WAAW;AAC/B,IAAI,eAAe,CAAC,WAAW,CAAC,MAAM;AACtC,IAAI,SAAS,CAAC,MAAA;AACd,IAAI;AACJ,IAAI,wBAAwB,CAAC,SAAS,CAAC,MAAM,EAAE,eAAe,CAAC,WAAW,CAAC,CAAA;AAC3E,IAAI,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,WAAW,EAAE;AACpD,MAAM,kBAAkB,CAAC,IAAI;AAC7B,QAAQ,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACvG,OAAO,CAAA;AACP,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,SAAS,CAAC,gBAAgB,GAAG;AAC/B,IAAI,SAAS,EAAE,KAAK;AACpB,IAAI,MAAM;AACV,IAAI,YAAY,EAAE,eAAe,CAAC,IAAI;AACtC,IAAI,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACxC,IAAI,cAAc,EAAE,eAAe,CAAC,MAAM;AAC1C,IAAI,aAAa,EAAE,eAAe,CAAC,aAAa;AAChD,IAAI,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,IAAI;AACpD,IAAI,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,IAAI;AACtD,GAAG,CAAA;;AAEH;AACA,EAAE,MAAM,mBAAmB,GAAGC,qBAAgC,CAAA;AAC9D,EAAE,MAAM,UAAU,GAAG,mBAAmB,CAAC,2BAA2B;AACpE,IAAI,GAAG;AACP,IAAI,KAAK;AACT,IAAI,SAAS;AACb,GAAG,CAAA;;AAEH,EAAE,IAAI,UAAU,CAAC,KAAK,EAAE;AACxB,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,CAAC,0BAA0B,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AAC9D,KAAK,CAAA;AACL,GAAA;;AAEA;AACA,EAAE,MAAM,eAAe,GAAG,CAAC,eAAe,CAAC,SAAS,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM;AACxE,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI;AAChB,IAAI,aAAa,EAAE,CAAC,CAAC,aAAa;AAClC,IAAI,QAAQ,EAAE,CAAC,CAAC,QAAQ;AACxB,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM;AACpB,GAAG,CAAC,CAAC,CAAA;;AAEL,EAAE,OAAO,CAAC,GAAG;AACb,IAAI,CAAC,gDAAgD,EAAE,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AACvH,GAAG,CAAA;;AAEH,EAAE,OAAO;AACT,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,SAAS;AACb,IAAI,OAAO,EAAE;AACb,MAAM,IAAI,EAAE,eAAe,CAAC,IAAI;AAChC,MAAM,WAAW,EAAE,eAAe,CAAC,WAAW,IAAI,EAAE;AACpD,MAAM,MAAM,EAAE,eAAe,CAAC,MAAM;AACpC,MAAM,OAAO,EAAE,cAAc;AAC7B,MAAM,WAAW,EAAE,kBAAkB;AACrC,MAAM,iBAAiB,EAAE,eAAe;AACxC,MAAM,cAAc,EAAE,cAAc,IAAI,IAAI;AAC5C,KAAK;AACL,GAAG,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe8F,8BAA4B;AAC3C,EAAE,GAAG;AACL,EAAE,KAAK;AACP,EAAE,WAAW;AACb,EAAE,cAAc,GAAG,IAAI;AACvB,EAAE;AACF,EAAE,IAAI;AACN;AACA,IAAI,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAA;AACrD,IAAI,IAAI,CAAC,WAAW,EAAE;AACtB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,yCAAyC,EAAE,WAAW,CAAC,CAAC;AACxE,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;AAClC,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,uCAAuC,EAAE,WAAW,CAAC,CAAC;AACtE,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,OAAO,CAAA;AAClD,IAAI,IAAI,WAAW,GAAG,WAAW,CAAC,WAAW,CAAA;AAC7C,IAAI,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;AAC3D,IAAI,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;;AAE5D;AACA,IAAI,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAA;AAC1C,IAAI,IAAI,SAAS,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACzC,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,8CAA8C,EAAE,WAAW,CAAC,CAAC;AAC7E,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,CAAC,qDAAqD,EAAE,WAAW,CAAC,CAAC;AAC3E,KAAK,CAAA;;AAEL,IAAI,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAA;AAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AACtB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,8BAA8B,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;AACxF,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;AAC/C,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;;AAE/C;AACA,IAAI,MAAM,OAAO,GAAGzE,MAAI,CAAC,IAAI,CAACM,KAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,sBAAsB,CAAC,CAAA;AAC1E,IAAI,MAAM,EAAE,kBAAkB,EAAE,GAAG7B,qBAA4B,CAAA;AAC/D,IAAI,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;;AAEpC;AACA,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;AACpC,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AAC7C,KAAK,CAAA;;AAEL,IAAI,IAAI,CAAC,WAAW,EAAE;AACtB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,qDAAqD;AACpE,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;AAC9D,IAAI,IAAI,eAAe,CAAA;AACvB,IAAI,IAAI;AACR,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;AAC9C,KAAK,CAAC,OAAO,UAAU,EAAE;AACzB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,kCAAkC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AACxE,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,MAAM,UAAU,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAA;AAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AAC3B,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,0BAA0B,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,eAAe,GAAG,aAAa,CAAC,eAAe,CAAC,CAAA;;AAEpD;AACA,IAAI,OAAO,MAAM,sBAAsB;AACvC,MAAM,GAAG;AACT,MAAM,KAAK;AACX,MAAM,eAAe;AACrB,MAAM,cAAc;AACpB,MAAM;AACN,QAAQ,MAAM,EAAE,UAAU;AAC1B,QAAQ,eAAe,EAAE,WAAW;AACpC,QAAQ,gBAAgB,EAAE,WAAW,CAAC,OAAO,IAAI,IAAI;AACrD,OAAO;AACP,KAAK,CAAA;AACL,GAAG,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK;AACjB,MAAM,uEAAuE;AAC7E,MAAM,KAAK;AACX,KAAK,CAAA;AACL,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,KAAK,CAAC,OAAO;AAC1B,KAAK,CAAA;AACL,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeiG,oBAAkB,CAAC,gBAAgB,EAAE,cAAc,GAAG,IAAI,EAAE;AAC3E,EAAE,MAAM;AACR,IAAI,2BAA2B;AAC/B,GAAG,GAAGpG,sBAAyC,CAAA;AAC/C,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAGC,oBAA+B,CAAA;;AAEhE,EAAE,MAAM,gBAAgB,GAAG,cAAc,GAAG,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,CAAA;;AAE5E,EAAE,IAAI,gBAAgB,GAAG,EAAE,CAAA;AAC3B,EAAE,IAAI;AACN,IAAI,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAA;AAC5C,IAAI,gBAAgB,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;AAC3C,GAAG,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,OAAO,CAAC,IAAI;AAChB,MAAM,qFAAqF;AAC3F,MAAM,GAAG,CAAC,OAAO;AACjB,KAAK,CAAA;AACL,GAAA;;AAEA,EAAE,OAAO,2BAA2B;AACpC,IAAI,gBAAgB;AACpB,IAAI,gBAAgB;AACpB,IAAI,gBAAgB;AACpB,GAAG,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeoG,4BAA0B;AACzC,EAAE,GAAG;AACL,EAAE,KAAK;AACP,EAAE,WAAW;AACb,EAAE,OAAO,GAAG,EAAE;AACd,EAAE,cAAc,GAAG,IAAI;AACvB,EAAE;AACF,EAAE,IAAI;AACN,IAAI,MAAM;AACV,MAAM,wBAAwB;AAC9B,KAAK,GAAGrG,sBAAyC,CAAA;;AAEjD;AACA,IAAI,MAAM,QAAQ,GAAG0B,MAAI,CAAC,IAAI;AAC9B,MAAMM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC7B,MAAME,SAAO;AACb,MAAM,KAAK;AACX,MAAM,cAAc;AACpB,KAAK,CAAA;AACL,IAAI,MAAM,eAAe,GAAGJ,iBAAe,CAAC,QAAQ,CAAC,CAAA;AACrD,IAAI,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI;AAC1C,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,WAAW,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,WAAW,CAAC;AACjE,KAAK,CAAA;;AAEL,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC;AACpD,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI;AACJ,MAAM,SAAS,CAAC,gBAAgB;AAChC,MAAM,SAAS,CAAC,gBAAgB,CAAC,SAAS,KAAK,KAAA;AAC/C,MAAM;AACN,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK;AACb,UAAU,iGAAiG;AAC3G,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,EAAE,CAAA;;AAEzC;AACA,IAAI,MAAM,cAAc,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;AACxD,IAAI,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;AAClD,IAAI,MAAM,OAAO,GAAG,uBAAuB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA;AAC3E,IAAI,MAAM,SAAS,GAAG,yBAAyB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA;;AAE/E,IAAI,MAAM,eAAe,GAAG,aAAa,CAAC;AAC1C,MAAM,aAAa,EAAE,sBAAsB;AAC3C,MAAM,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,IAAI,WAAW;AAC5D,MAAM,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;AAC5C,MAAM,IAAI,OAAO,CAAC,UAAA;AAClB,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,EAAA;AAC5E,UAAU,EAAE,CAAC;AACb,MAAM,SAAS,EAAE,IAAI;AACrB,MAAM,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;AAC9B,MAAM,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,MAAM;AAClC,MAAM,SAAS,EAAE;AACjB,QAAQ,EAAE,EAAE,SAAS,CAAC,EAAE;AACxB,QAAQ,IAAI,EAAE,SAAS,CAAC,IAAI;AAC5B,QAAQ,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,WAAW;AAC3C,QAAQ,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI;AAChD,QAAQ,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,CAAC;AACvC,QAAQ,MAAM;AACd,QAAQ,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC;AACrC,OAAO;AACP,MAAM,OAAO;AACb,MAAM,SAAS;AACf,MAAM,WAAW;AACjB,KAAK,CAAC,CAAA;;AAEN;AACA,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAE;AAC5B,MAAM,IAAI;AACV,QAAQ,MAAM,WAAW,GAAGM,iBAAe,CAAC,wBAAwB;AACpE,UAAU,GAAG;AACb,UAAU,KAAK;AACf,SAAS,CAAA;AACT,QAAQ,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAClE,QAAQ,IAAI,SAAS,EAAE;AACvB,UAAU,eAAe,CAAC,KAAK,GAAG;AAClC,YAAY,GAAG,EAAE,SAAS,CAAC,QAAQ;AACnC,YAAY,IAAI,EAAE,SAAS;AAC3B,WAAW,CAAA;AACX,UAAU,IAAI,SAAS,CAAC,aAAa,EAAE,WAAW,EAAE;AACpD,YAAY,eAAe,CAAC,KAAK,CAAC,eAAe;AACjD,cAAc,SAAS,CAAC,aAAa,CAAC,WAAW,CAAA;AACjD,WAAA;AACA,SAAA;AACA,OAAO,CAAC,OAAO,QAAQ,EAAE;AACzB,QAAQ,OAAO,CAAC,IAAI;AACpB,UAAU,iEAAiE;AAC3E,UAAU,QAAQ,CAAC,OAAO;AAC1B,SAAS,CAAA;AACT,OAAA;AACA,KAAA;;AAEA;AACA,IAAI,MAAM,UAAU,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAA;AAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AAC3B,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,6BAA6B,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,MAAM,EAAE,kBAAkB,EAAE,GAAGnC,oBAA+B,CAAA;AAClE,IAAI,IAAI,gBAAgB,GAAG,EAAE,CAAA;AAC7B,IAAI,IAAI,mBAAmB,GAAG,KAAK,CAAA;AACnC,IAAI,IAAI;AACR,MAAM,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAA;AAC9C,MAAM,gBAAgB,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;AAC7C,KAAK,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,CAAC,uDAAuD,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAC/E,OAAO,CAAA;AACP,MAAM,mBAAmB,GAAG,IAAI,CAAA;AAChC,KAAA;;AAEA,IAAI,IAAI,mBAAmB,GAAG,EAAE,CAAA;AAChC,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC9B,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AACxE,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM;AAC3C,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;AACpE,OAAO,CAAA;AACP,MAAM,MAAM,OAAO,GAAG,EAAE,CAAA;AACxB,MAAM,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE;AACtC,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;AACxD,QAAQ,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAA;AACzE,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACtD,UAAU,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;AAC7C,SAAA;AACA,OAAA;AACA,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG;AACvD,QAAQ,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AACxE,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,IAAI,gBAAgB,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAA;AACnD,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC3B,MAAM,IAAI;AACV,QAAQ,MAAM,EAAE,kBAAkB,EAAE,GAAGK,wBAAmC,CAAA;AAC1E,QAAQ,MAAM,OAAO,GAAG,MAAM,kBAAkB,EAAE,CAAA;AAClD,QAAQ,gBAAgB,GAAG,OAAO,EAAE,QAAQ,IAAI,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAA;AACtE,OAAO,CAAC,MAAM;AACd,QAAQ,gBAAgB,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAA;AACjD,OAAA;AACA,KAAA;;AAEA;AACA,IAAI,MAAM,QAAQ,GAAG,wBAAwB,CAAC,eAAe,EAAE;AAC/D,MAAM,UAAU,EAAE,gBAAgB;AAClC,MAAM,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,SAAS;AAC7C,MAAM,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;AAC1C,MAAM,SAAS,EAAE,KAAK;AACtB,KAAK,CAAC,CAAA;;AAEN;AACA,IAAI,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAA;AACvC,IAAI,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE;AACpE,MAAM,KAAK,EAAE,qCAAqC;AAClD,MAAM,WAAW,EAAEoB,MAAI,CAAC,IAAI;AAC5B,QAAQM,KAAG,CAAC,OAAO,CAAC,SAAS,CAAC;AAC9B,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AAC7D,OAAO;AACP,MAAM,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAC7D,KAAK,CAAC,CAAA;;AAEN,IAAI,IAAI,QAAQ,IAAI,CAAC,QAAQ,EAAE;AAC/B,MAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;AAC/C,KAAA;;AAEA;AACA,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,EAAE,CAAA;AAC5B,IAAI,GAAG,CAAC,OAAO;AACf,MAAM,eAAe;AACrB,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC;AAC7D,KAAK,CAAA;AACL,IAAI,GAAG,CAAC,OAAO;AACf,MAAM,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC;AACvC,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC;AACpE,KAAK,CAAA;AACL,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;;AAE1B,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,CAAC,sDAAsD,EAAE,QAAQ,CAAC,CAAC;AACzE,KAAK,CAAA;;AAEL;AACA,IAAI,IAAI,kBAAkB,GAAG,IAAI,CAAA;AACjC,IAAI,IAAI;AACR,MAAM,MAAM,EAAE,aAAa,EAAE,GAAG1B,wBAAmC,CAAA;AACnE,MAAM,MAAM,EAAE,iBAAiB,EAAE,GAAGC,uBAAkC,CAAA;AACtE,MAAM,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;;AAExC,MAAM,IAAI,UAAU,CAAC,aAAa,EAAE;AACpC,QAAQ,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAA;AAC5E,QAAQ,kBAAkB,GAAG,MAAM,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AACxE,QAAQ,IAAI,kBAAkB,CAAC,OAAO,EAAE;AACxC,UAAU,OAAO,CAAC,GAAG;AACrB,YAAY,CAAC,mDAAmD,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC;AAClG,WAAW,CAAA;AACX,SAAS,MAAM;AACf,UAAU,OAAO,CAAC,IAAI;AACtB,YAAY,CAAC,qDAAqD,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC9F,WAAW,CAAA;AACX,SAAA;AACA,OAAO,MAAM;AACb,QAAQ,kBAAkB,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAA;AACnE,OAAA;AACA,KAAK,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,CAAC,oDAAoD,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAC5E,OAAO,CAAA;AACP,MAAM,kBAAkB,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAA;AACjE,KAAA;;AAEA,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,QAAQ;AACd,MAAM,QAAQ;AACd,MAAM,MAAM,EAAE,eAAe;AAC7B,MAAM,QAAQ;AACd,QAAQ,mBAAmB,CAAC,MAAM,GAAG,CAAC,GAAG,mBAAmB,GAAG,SAAS;AACxE,MAAM,mBAAmB,EAAE,mBAAmB,IAAI,SAAS;AAC3D,MAAM,kBAAkB;AACxB,KAAK,CAAA;AACL,GAAG,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK;AACjB,MAAM,oEAAoE;AAC1E,MAAM,KAAK;AACX,KAAK,CAAA;AACL,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,KAAK,CAAC,OAAO;AAC1B,KAAK,CAAA;AACL,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe+F,qBAAmB,CAAC,WAAW,EAAE,cAAc,GAAG,IAAI,EAAE;AACvE,EAAE,MAAM;AACR,IAAI,qBAAqB;AACzB,IAAI,2BAA2B;AAC/B,GAAG,GAAGtG,sBAAyC,CAAA;AAC/C,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,GAAGC,oBAA+B,CAAA;;AAE5E,EAAE,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAA;AAC3C,EAAE,IAAI,CAAC,GAAG,EAAE;AACZ,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,CAAC,6BAA6B,EAAE,WAAW,CAAC,CAAC;AAC1D,KAAK,CAAA;AACL,GAAA;;AAEA,EAAE,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;;AAE5C;AACA,EAAE,MAAM,gBAAgB,GAAG,cAAc,GAAG,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,CAAA;AAC5E,EAAE,IAAI,gBAAgB,GAAG,EAAE,CAAA;AAC3B,EAAE,IAAI;AACN,IAAI,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAA;AAC5C,IAAI,gBAAgB,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;AAC3C,GAAG,CAAC,OAAO,GAAG,EAAE;AAChB;AACA,GAAA;;AAEA,EAAE,MAAM,aAAa,GAAG,2BAA2B;AACnD,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE;AACrB,IAAI,gBAAgB;AACpB,IAAI,gBAAgB;AACpB,GAAG,CAAA;;AAEH,EAAE,OAAO;AACT,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,OAAO;AACX,IAAI,aAAa;AACjB,GAAG,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAesG,6BAA2B,CAAC,KAAK,EAAE;AAClD,EAAE,MAAM,EAAE,qBAAqB,EAAE,GAAGvG,sBAAyC,CAAA;AAC7E,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAGC,oBAA+B,CAAA;;AAEhE,EAAE,IAAI;AACN,IAAI,MAAM,QAAQ,GAAGyB,MAAI,CAAC,IAAI;AAC9B,MAAMM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC7B,MAAME,SAAO;AACb,MAAM,KAAK;AACX,MAAM,cAAc;AACpB,KAAK,CAAA;AACL,IAAI,MAAM,UAAU,GAAGJ,iBAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;;AAEtD,IAAI,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAA;AAC5C,IAAI,MAAM,gBAAgB,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;;AAEjD,IAAI,MAAM,OAAO,GAAG,qBAAqB,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAA;;AAEvE,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,OAAO;AACb,MAAM,cAAc,EAAE,UAAU,CAAC,MAAM;AACvC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,eAAe;AAClD,OAAO,CAAC,MAAM;AACd,KAAK,CAAA;AACL,GAAG,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK;AACjB,MAAM,+DAA+D;AACrE,MAAM,KAAK;AACX,KAAK,CAAA;AACL,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,KAAK,CAAC,OAAO;AAC1B,MAAM,OAAO,EAAE,EAAE;AACjB,KAAK,CAAA;AACL,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS0E,0BAAwB,CAAC,KAAK,EAAE,iBAAiB,GAAG,EAAE,EAAE;AACjE,EAAE,MAAM;AACR,IAAI,0BAA0B;AAC9B,GAAG,GAAGxG,sBAAyC,CAAA;AAC/C,EAAE,MAAM,EAAE,aAAa,EAAE,GAAGQ,yBAA+B,EAAA,CAAA;;AAE3D,EAAE,IAAI,mBAAmB,GAAG,EAAE,CAAA;AAC9B,EAAE,IAAI;AACN,IAAI,mBAAmB,GAAG,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;AAC1D,GAAG,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,OAAO,CAAC,IAAI;AAChB,MAAM,uDAAuD;AAC7D,MAAM,GAAG,CAAC,OAAO;AACjB,KAAK,CAAA;AACL,GAAA;;AAEA,EAAE,OAAO,0BAA0B,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAA;AAC3E,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASiG,4BAA0B,CAAC,KAAK,EAAE,WAAW,EAAE,cAAc,GAAG,IAAI,EAAE;AAC/E,EAAE,IAAI;AACN,IAAI,MAAM,QAAQ,GAAG/E,MAAI,CAAC,IAAI;AAC9B,MAAMM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC7B,MAAME,SAAO;AACb,MAAM,KAAK;AACX,MAAM,cAAc;AACpB,KAAK,CAAA;AACL,IAAI,MAAM,eAAe,GAAGJ,iBAAe,CAAC,QAAQ,CAAC,CAAA;AACrD,IAAI,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI;AAC1C,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,WAAW,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,WAAW,CAAC;AACjE,KAAK,CAAA;;AAEL,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,MAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC,EAAE,CAAA;AAC7E,KAAA;;AAEA,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,EAAE,CAAA;AACzC,IAAI,MAAM,cAAc,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;AACxD,IAAI,MAAM,OAAO,GAAG,uBAAuB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA;;AAE3E,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,aAAa,EAAE,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,IAAI,WAAW;AACrE,MAAM,WAAW,EAAE,cAAc,CAAC,MAAM;AACxC,MAAM,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AACzE,MAAM,cAAc,EAAE,CAAC,GAAG,cAAc,CAAC;AACzC,KAAK,CAAA;AACL,GAAG,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK;AACjB,MAAM,4DAA4D;AAClE,MAAM,KAAK;AACX,KAAK,CAAA;AACL,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;AACnD,GAAA;AACA,CAAA;;AAEA,IAAA4E,2BAAc,GAAG;AACjB,yBAAEV,uBAAqB;AACvB,uBAAEC,qBAAmB;AACrB,yBAAEC,uBAAqB;AACvB,gCAAEC,8BAA4B;AAC9B,sBAAEC,oBAAkB;AACpB,8BAAEC,4BAA0B;AAC5B,uBAAEC,qBAAmB;AACrB,+BAAEC,6BAA2B;AAC7B,4BAAEC,0BAAwB;AAC1B,8BAAEC,4BAA0B;AAC5B,CAAC;;;;;;;;;;ACjsCD,MAAM,EAAE,YAAY,EAAE,GAAG9G,YAAmB,CAAA;AAC5C,MAAM,KAAK,GAAG,UAAyB,CAAA;;AAEvC,MAAMkF,OAAK,GAAG,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAA;;AAEvD;AACA;AACA,MAAM,oBAAoB,GAAG,MAAM,CAAA;AACnC,MAAM,cAAc,GAAG,EAAE,CAAA;AACzB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;;AAE9B;AACA;AACA,MAAM,eAAe,GAAG,KAAK,CAAA;AAC7B,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAE,CAAC;;AAEtC,SAAS,WAAW,CAAC,OAAO,EAAE;AAC9B,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;AACjF,CAAA;;AAEA,SAAS,aAAa,CAAC,QAAQ,EAAE;AACjC,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;AACxB,EAAE,IAAI,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;AAClD;AACA,EAAE,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,oBAAoB,CAAC,CAAA;AACvE,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;AACvC,EAAE,OAAO,UAAU,CAAC,MAAM,IAAI,cAAc,CAAA;AAC5C,CAAA;;AAEA,SAAS,kBAAkB,CAAC,QAAQ,EAAE;AACtC,EAAE,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;AACpD,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;AAC7B,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;AACvC,CAAA;;AAEA,SAAS,WAAW,CAAC,OAAO,EAAE;AAC9B,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;AAClC,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;AACxB,EAAE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAC/C,EAAE,IAAI,QAAQ,IAAI,GAAG,GAAG,QAAQ,GAAG,eAAe,EAAE;AACpD,IAAI,OAAO,IAAI,CAAA;AACf,GAAA;AACA,EAAE,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;AACnC,EAAE,OAAO,KAAK,CAAA;AACd,CAAA;;AAEA;AACA,WAAW,CAAC,MAAM;AAClB,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;AACxB,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,mBAAmB,EAAE;AAC/C,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,eAAe,EAAE;AACpC,MAAM,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AACrC,KAAA;AACA,GAAA;AACA,CAAC,EAAE,MAAM,CAAC,CAAA;;AAEV,MAAM8B,wBAAsB,GAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK;AAC1B,IAAI,IAAI;AACR,MAAM,MAAM;AACZ,QAAQ,UAAU;AAClB,QAAQ,QAAQ;AAChB,QAAQ,WAAW;AACnB,QAAQ,IAAI;AACZ,QAAQ,KAAK;AACb,QAAQ,IAAI;AACZ,QAAQ,IAAI;AACZ,QAAQ,MAAM;AACd,QAAQ,OAAO;AACf,OAAO,GAAG,OAAO,CAAA;;AAEjB;AACA,MAAM,MAAM,aAAa,GAAG9B,OAAK,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,CAAA;AAC5D,MAAM,IAAI,CAAC,aAAa,EAAE;AAC1B,QAAQ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAA;AACnE,OAAA;;AAEA;AACA,MAAM,MAAM,GAAG,GAAGA,OAAK,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;AAClD,MAAM,IAAI,GAAG,EAAE;AACf,QAAQ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAA;AAC3D,OAAA;;AAEA;AACA,MAAM,MAAM,SAAS,GAAGA,OAAK,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;AAClD,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAC7C,MAAM,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE;AACtD,QAAQ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAA;AAC1D,OAAA;;AAEA;AACA,MAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE;AACnC,QAAQ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;AACzD,OAAA;;AAEA;AACA,MAAM,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE;AAChC,QAAQ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;AACtD,OAAA;;AAEA;AACA,MAAM,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC;AAC5C,QAAQ,KAAK;AACb,QAAQ,IAAI;AACZ,QAAQ,MAAM,EAAE,MAAM,IAAI,KAAK;AAC/B,QAAQ,OAAO,EAAE,OAAO,IAAI,QAAQ;AACpC,OAAO,CAAC,CAAA;;AAER,MAAM,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM;AACrC,QAAQ,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE;AACvC,UAAU,GAAG,CAAC,IAAI,EAAE,CAAA;AACpB,UAAU,GAAG,CAAC,KAAK,EAAE,CAAA;AACrB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,EAAE;AACvD,YAAY,UAAU;AACtB,YAAY,QAAQ;AACpB,YAAY,WAAW;AACvB,YAAY,IAAI;AAChB,YAAY,IAAI,EAAE,IAAI,IAAI,IAAI;AAC9B,WAAW,CAAC,CAAA;AACZ,SAAA;AACA,OAAO,CAAC,CAAA;;AAER,MAAM,YAAY,CAAC,IAAI,EAAE,CAAA;AACzB,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAA;;AAElC,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,CAAC,+BAA+B,EAAE,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3E,OAAO,CAAA;;AAEP,MAAM,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC9B,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,sDAAsD;AAC9D,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;AACpD,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,EAAE,MAAM;AACxB,IAAI,IAAI;AACR,MAAM,OAAO;AACb,QAAQ,aAAa,EAAEA,OAAK,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC;AACvD,QAAQ,YAAY,EAAEA,OAAK,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC;AACtD,QAAQ,SAAS,EAAEA,OAAK,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;AAC7C,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,qDAAqD;AAC7D,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;AAC9B,QAAQ,aAAa,EAAE,IAAI;AAC3B,QAAQ,YAAY,EAAE,KAAK;AAC3B,QAAQ,SAAS,EAAE,EAAE;AACrB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAK;AACvC,IAAI,IAAI;AACR,MAAM,MAAM,SAAS,GAAGA,OAAK,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;AAClD,MAAM,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAA;AACxE,MAAMA,OAAK,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;AACvC,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,CAAC,wDAAwD,EAAE,QAAQ,CAAC,CAAC;AAC7E,OAAO,CAAA;AACP,MAAM,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC9B,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,qDAAqD;AAC7D,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;AACpD,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,EAAE,CAAC,QAAQ,KAAK;AAC3B,IAAI,IAAI;AACR,MAAM,IAAI,OAAO,QAAQ,CAAC,aAAa,KAAK,SAAS,EAAE;AACvD,QAAQA,OAAK,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;AAC1D,OAAA;AACA,MAAM,IAAI,OAAO,QAAQ,CAAC,YAAY,KAAK,SAAS,EAAE;AACtD,QAAQA,OAAK,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;AACxD,OAAA;AACA,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,mDAAmD;AAC3D,QAAQ,QAAQ;AAChB,OAAO,CAAA;AACP,MAAM,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC9B,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAA;AAC5E,MAAM,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;AACpD,KAAA;AACA,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,wBAAc,GAAG8B,wBAAsB;;;;;;;;;;;;ACxOvC,MAAMC,aAAW,GAAGjH,kBAAwB,EAAA,CAAA;;AAE5C;AACAiH,aAAW,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,WAAW,KAAK;AACxD,EAAE,MAAM,aAAa,GAAGhH,YAAwB,CAAA;AAChD,EAAE,OAAO,aAAa;AACtB,IAAI,WAAW,CAAC,KAAK;AACrB,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,GAAG;AACzC,GAAG,CAAA;AACH,CAAC,CAAC,CAAA;;AAEF;AACAgH,aAAW,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,WAAW,KAAK;AACvD,EAAE,MAAM,MAAM,GAAG/G,YAAiB,CAAA;AAClC,EAAE,OAAO,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAA;AACnD,CAAC,CAAC;;;;;;;;;;;AChBF,MAAM,WAAW,GAAG,EAAE,CAAA;;AAEtB;AACA,IAAI,KAAK,GAAG,IAAI,CAAA;AAChB,SAAS,QAAQ,GAAG;AACpB,EAAE,IAAI,CAAC,KAAK,EAAE;AACd,IAAI,MAAM,KAAK,GAAGF,UAAyB,CAAA;AAC3C,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAA;AAC/C,GAAA;AACA,EAAE,OAAO,KAAK,CAAA;AACd,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASkH,qBAAmB,GAAG;AAC/B,EAAE,IAAI;AACN,IAAI,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAA;AACxB,IAAI,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;AACxC,IAAI,OAAO,OAAA;AACX,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;AACjE,OAAO,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;AAC5B,GAAG,CAAC,MAAM;AACV,IAAI,OAAO,EAAE,CAAA;AACb,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,oBAAkB,CAAC,WAAW,EAAE,IAAI,EAAE;AAC/C,EAAE,IAAI;AACN,IAAI,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAA;AACxB,IAAI,IAAI,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;;AAEtC;AACA,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,CAAA;;AAElE;AACA,IAAI,OAAO,CAAC,OAAO,CAAC;AACpB,MAAM,WAAW;AACjB,MAAM,IAAI,EAAE,IAAI,IAAI,UAAU;AAC9B,MAAM,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACxC,KAAK,CAAC,CAAA;;AAEN;AACA,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;;AAE3C,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAC7B,IAAI,OAAO,OAAO,CAAA;AAClB,GAAG,CAAC,MAAM;AACV,IAAI,OAAO,EAAE,CAAA;AACb,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA,SAASC,uBAAqB,GAAG;AACjC,EAAE,IAAI;AACN,IAAI,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAA;AACxB,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;AACxB,GAAG,CAAC,MAAM;AACV;AACA,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,iBAAe,GAAG;AAC3B,EAAE,IAAI;AACN,IAAI,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAA;AACxB,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;AAC7C,IAAI,OAAO,KAAK,IAAI,IAAI,CAAA;AACxB,GAAG,CAAC,MAAM;AACV,IAAI,OAAO,IAAI,CAAA;AACf,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,kBAAgB,CAAC,UAAU,EAAE,WAAW,EAAE;AACnD,EAAE,IAAI;AACN,IAAI,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAA;AACxB,IAAI,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAA;AACtD,GAAG,CAAC,MAAM;AACV;AACA,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA,SAASC,mBAAiB,GAAG;AAC7B,EAAE,IAAI;AACN,IAAI,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAA;AACxB,IAAI,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;AAC5B,GAAG,CAAC,MAAM;AACV;AACA,GAAA;AACA,CAAA;;AAEA,IAAA,iBAAc,GAAG;AACjB,uBAAEL,qBAAmB;AACrB,sBAAEC,oBAAkB;AACpB,yBAAEC,uBAAqB;AACvB,mBAAEC,iBAAe;AACjB,oBAAEC,kBAAgB;AAClB,qBAAEC,mBAAiB;AACnB,CAAC;;;;;;;;;AC5HD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,wBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,EAAE,EAAE;AAC1D,EAAE,IAAI,CAAC,WAAW,EAAE;AACpB,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAA;AAChE,GAAA;;AAEA,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACpC,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AACpE,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,0CAA0C;AACvD,KAAK,CAAA;AACL,GAAA;;AAEA,EAAE,MAAM,KAAK,GAAG;AAChB,IAAI,KAAK;AACT,IAAI,MAAM;AACV,MAAM,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE;AAC3E,IAAI,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACrC,GAAG,CAAA;;AAEH,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;AACzC,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,mBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE;AAC9C,EAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AAChC,IAAI,GAAG,GAAG;AACV,IAAI,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI;AACzC,GAAG,CAAC,CAAC,CAAA;AACL,CAAA;;AAEA,IAAA,qBAAc,GAAG;AACjB,0BAAED,wBAAsB;AACxB,qBAAEC,mBAAiB;AACnB,CAAC;;;;;;;;;;AChDD,MAAM,EAAE,GAAG,EAAE,GAAGzH,YAAmB,CAAA;AACnC,MAAM,IAAI,GAAGC,YAAe,CAAA;AAC5B,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,GAAGC,IAAwB,CAAA;AACjE,MAAM;AACN,EAAE,sBAAsB;AACxB,EAAE,iBAAiB;AACnB,CAAC,GAAGC,qBAA0C,CAAA;;AAE9C,MAAM,eAAe,GAAG,wBAAwB,CAAA;AAChD,MAAM,OAAO,GAAG,WAAW,CAAA;;AAE3B;AACA;AACA;AACA,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC,CAAA;AAC5E,CAAA;;AAEA;AACA;AACA;AACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,EAAE,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;AACxC,EAAE,OAAO,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;AACtC,CAAA;;AAEA;AACA;AACA;AACA,SAAS,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE;AACtC,EAAE,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;AACxC,EAAE,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AACzD,CAAA;;AAEA;AACA;AACA;AACA,SAASuH,qBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,GAAG,EAAE,EAAE;AAC9D,EAAE,MAAM,MAAM,GAAG,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;AAC5D,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,MAAM,CAAA;;AAEpC,EAAE,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;AACpC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,CAAA;AACtC,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;;AAE9B,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,CAAA;AACxD,CAAA;;AAEA;AACA;AACA;AACA,SAASC,oBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE;AAChD,EAAE,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;AACpC,EAAE,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAAA;AACrC,CAAA;;AAEA;AACA;AACA;AACA,SAASC,sBAAoB,CAAC,KAAK,EAAE;AACrC,EAAE,OAAO,WAAW,CAAC,KAAK,CAAC,CAAA;AAC3B,CAAA;;AAEA;AACA;AACA;AACA,SAASC,uBAAqB,CAAC,KAAK,EAAE,WAAW,EAAE;AACnD,EAAE,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;AACpC,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AAC7B,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAA;AACxE,GAAA;AACA,EAAE,OAAO,OAAO,CAAC,WAAW,CAAC,CAAA;AAC7B,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AAC9B,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC1B,CAAA;;AAEA;AACA;AACA;AACA,SAASC,2BAAyB,CAAC,QAAQ,EAAE,KAAK,EAAE;AACpD,EAAE,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;AACpC,EAAE,OAAO,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;AAC7C,CAAA;;AAEA,IAAA,0BAAc,GAAG;AACjB,uBAAEJ,qBAAmB;AACrB,sBAAEC,oBAAkB;AACpB,wBAAEC,sBAAoB;AACtB,yBAAEC,uBAAqB;AACvB,6BAAEC,2BAAyB;AAC3B,CAAC;;;;;;AC/FD,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG9H,kBAA6B,CAAA;AACrE,MAAM;AACN,EAAE,qBAAqB;AACvB,EAAE,QAAQ;AACV,EAAE,OAAO;AACT,CAAC,GAAGC,uBAAkC,CAAA;AACtC,MAAM;AACN,EAAE,4BAA4B;AAC9B,EAAE,2BAA2B;AAC7B,EAAE,6BAA6B;AAC/B,CAAC,GAAGC,qBAAgC,CAAA;AACpC,MAAM;AACN,EAAE,uBAAuB;AACzB,EAAE,wBAAwB;AAC1B,EAAE,yBAAyB;AAC3B,CAAC,GAAGC,iBAA4B,CAAA;AAChC,MAAM;AACN,EAAE,oBAAoB;AACtB,EAAE,sBAAsB;AACxB,EAAE,UAAU;AACZ,EAAE,YAAY;AACd,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,iBAAiB;AACnB,EAAE,aAAa;AACf,EAAE,gBAAgB;AAClB,EAAE,eAAe;AACjB,EAAE,yBAAyB;AAC3B,CAAC,GAAGC,gBAA2B,CAAA;AAC/B,MAAM;AACN,EAAE,0BAA0B;AAC5B,EAAE,yBAAyB;AAC3B,EAAE,gBAAgB;AAClB,EAAE,gBAAgB;AAClB,EAAE,oBAAoB;AACtB,CAAC,GAAGC,oBAA+B,CAAA;AACnC,MAAM;AACN,EAAE,YAAY;AACd,EAAE,aAAa;AACf,EAAE,WAAW;AACb,EAAE,cAAc;AAChB,CAAC,GAAGC,yBAA+B,EAAA,CAAA;AACnC,MAAM;AACN,EAAE,WAAW;AACb,EAAE,iCAAiC;AACnC,EAAE,qBAAqB;AACvB,EAAE,mBAAmB;AACrB,EAAE,MAAM,EAAE,WAAW;AACrB,CAAC,GAAGC,mBAA8B,CAAA;AAClC,MAAM,EAAE,aAAa,EAAE,GAAGC,kBAA6B,CAAA;AACvD,MAAM;AACN,EAAE,0BAA0B;AAC5B,EAAE,2BAA2B;AAC7B,CAAC,GAAGC,qBAAgC,CAAA;AACpC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAGC,kBAA6B,CAAA;AAChE,MAAM;AACN,EAAE,qBAAqB;AACvB,EAAE,mBAAmB;AACrB,EAAE,qBAAqB;AACvB,EAAE,4BAA4B;AAC9B,EAAE,kBAAkB;AACpB,EAAE,0BAA0B;AAC5B,EAAE,mBAAmB;AACrB,EAAE,2BAA2B;AAC7B,EAAE,wBAAwB;AAC1B,EAAE,0BAA0B;AAC5B,CAAC,GAAGC,2BAAsC,CAAA;AAC1C,MAAM;AACN,EAAE,kBAAkB;AACpB,EAAE,YAAY;AACd,EAAE,cAAc,EAAE,gBAAgB;AAClC,EAAE,aAAa,EAAE,qBAAqB;AACtC,EAAE,kBAAkB;AACpB,EAAE,qBAAqB;AACvB,EAAE,mBAAmB;AACrB,EAAE,qBAAqB;AACvB,EAAE,UAAU,EAAE,kBAAkB;AAChC,CAAC,GAAGC,wBAAmC,CAAA;AACvC,MAAM;AACN,EAAE,iBAAiB;AACnB,EAAE,cAAc;AAChB,CAAC,GAAGC,uBAAkC,CAAA;AACtC,MAAM;AACN,EAAE,mBAAmB;AACrB,EAAE,kBAAkB;AACpB,EAAE,qBAAqB;AACvB,EAAE,eAAe;AACjB,EAAE,gBAAgB;AAClB,EAAE,iBAAiB;AACnB,CAAC,GAAGC,iBAA8B,CAAA;AAClC,MAAM;AACN,EAAE,mBAAmB;AACrB,EAAE,kBAAkB;AACpB,EAAE,oBAAoB;AACtB,EAAE,qBAAqB;AACvB,EAAE,yBAAyB;AAC3B,CAAC,GAAGC,0BAAuC,CAAA;AAC3C,MAAMiG,wBAAsB,GAAGhG,wBAAmC,CAAA;AAClE,MAAM;AACN,EAAE,sBAAsB;AACxB,EAAE,wBAAwB;AAC1B,EAAE,sBAAsB;AACxB,CAAC,GAAGC,yBAAoC,CAAA;;AAExC,IAAA,UAAc,GAAG;AACjB,EAAE,UAAU;AACZ,EAAE,eAAe;AACjB,EAAE,qBAAqB;AACvB,EAAE,QAAQ;AACV,EAAE,OAAO;AACT,EAAE,4BAA4B;AAC9B,EAAE,2BAA2B;AAC7B,EAAE,6BAA6B;AAC/B,EAAE,uBAAuB;AACzB,EAAE,wBAAwB;AAC1B,EAAE,yBAAyB;AAC3B,EAAE,oBAAoB;AACtB,EAAE,sBAAsB;AACxB,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,iBAAiB;AACnB,EAAE,UAAU;AACZ,EAAE,YAAY;AACd,EAAE,0BAA0B;AAC5B,EAAE,yBAAyB;AAC3B,EAAE,aAAa;AACf,EAAE,gBAAgB;AAClB,EAAE,eAAe;AACjB,EAAE,yBAAyB;AAC3B,EAAE,YAAY;AACd,EAAE,aAAa;AACf,EAAE,WAAW;AACb,EAAE,cAAc;AAChB,EAAE,gBAAgB;AAClB,EAAE,gBAAgB;AAClB,EAAE,oBAAoB;AACtB,EAAE,WAAW;AACb,EAAE,iCAAiC;AACnC,EAAE,qBAAqB;AACvB,EAAE,mBAAmB;AACrB,EAAE,aAAa;AACf,EAAE,0BAA0B;AAC5B,EAAE,2BAA2B;AAC7B,EAAE,aAAa;AACf,EAAE,WAAW;AACb,EAAE,qBAAqB;AACvB,EAAE,mBAAmB;AACrB,EAAE,qBAAqB;AACvB,EAAE,4BAA4B;AAC9B,EAAE,kBAAkB;AACpB,EAAE,0BAA0B;AAC5B,EAAE,mBAAmB;AACrB,EAAE,2BAA2B;AAC7B,EAAE,wBAAwB;AAC1B,EAAE,0BAA0B;AAC5B,EAAE,mBAAmB;AACrB,EAAE,kBAAkB;AACpB,EAAE,oBAAoB;AACtB,EAAE,qBAAqB;AACvB,EAAE,yBAAyB;AAC3B,EAAE,kBAAkB;AACpB,EAAE,YAAY;AACd,EAAE,gBAAgB;AAClB,EAAE,qBAAqB;AACvB,EAAE,kBAAkB;AACpB,EAAE,qBAAqB;AACvB,EAAE,mBAAmB;AACrB,EAAE,qBAAqB;AACvB,EAAE,kBAAkB;AACpB,EAAE,iBAAiB;AACnB,EAAE,cAAc;AAChB,EAAE,mBAAmB;AACrB,EAAE,kBAAkB;AACpB,EAAE,qBAAqB;AACvB,EAAE,eAAe;AACjB,EAAE,gBAAgB;AAClB,EAAE,iBAAiB;AACnB,0BAAE+F,wBAAsB;AACxB,EAAE,sBAAsB;AACxB,EAAE,wBAAwB;AAC1B,EAAE,sBAAsB;AACxB,CAAC;;ACxLD,MAAM,eAAEe,aAAW,EAAE,GAAG/H,YAAmB,CAAA;AAC3C,MAAM;AACN,EAAE,6BAA6B;AAC/B,EAAE,qBAAqB;AACvB,EAAE,qBAAqB;AACvB,CAAC,GAAGC,QAAoB,CAAA;AACxB;AACA;AACA;AACA;AACA,MAAM+H,gBAAc,GAAG;AACvB,EAAE,qBAAqB,EAAE;AACzB,IAAID,aAAW,CAAC,MAAM,CAAC,6BAA6B,EAAE,EAAE,CAAC;AACzD,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK;AACvB,IAAIA,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAC7D,EAAE,OAAO,EAAE,CAAC,GAAG,KAAKA,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,CAAC;AACtE,CAAC,CAAA;;AAED,IAAA,gBAAc,GAAGC,gBAAc;;;;;;;;ACb/B,MAAM,eAAED,aAAW,EAAE,GAAG/H,YAAmB,CAAA;AAC3C,MAAM;AACN,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,gBAAgB;AAClB,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAMgI,cAAY,GAAG;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,4BAA4B,EAAE,CAAC,KAAK,KAAK;AAC3C,IAAI,OAAO,CAAC,GAAG,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAA;AACzE,IAAI,OAAOF,aAAW,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;AACxD,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,2BAA2B,EAAE,CAAC,KAAK,EAAE,IAAI;AAC3C,IAAIA,aAAW,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,6BAA6B,EAAE,CAAC,KAAK,EAAE,WAAW;AACpD,IAAIA,aAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AAChE,CAAC,CAAA;;AAED,IAAA,cAAc,GAAGE,cAAY;;;;;;;;ACzC7B;AACA,MAAM,eAAEF,aAAW,EAAE,GAAG/H,YAAmB,CAAA;;AAE3C,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAGC,QAAoB,CAAA;;AAEzD,MAAMiI,WAAS,GAAG;AAClB,EAAE,yBAAyB,EAAE,CAAC,KAAK;AACnC,IAAIH,aAAW,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC;AAC9C,EAAE,wBAAwB,EAAE,CAAC,KAAK,EAAE,IAAI;AACxC,IAAIA,aAAW,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACpD,CAAC,CAAA;;AAED,IAAA,WAAc,GAAGG,WAAS;;;;;;;;ACZ1B;AACA,MAAM,eAAEH,aAAW,EAAE,GAAG/H,YAAmB,CAAA;;AAE3C,MAAM;AACN,EAAE,qBAAqB;AACvB,EAAE,uBAAuB;AACzB,EAAE,mBAAmB;AACrB,EAAE,iBAAiB;AACnB,EAAE,gBAAgB;AAClB,EAAE,gBAAgB;AAClB,EAAE,UAAU;AACZ,EAAE,cAAc;AAChB,EAAE,SAAS;AACX,EAAE,aAAa;AACf,EAAE,yBAAyB;AAC3B,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAMkI,SAAO,GAAG;AAChB;AACA,EAAE,oBAAoB,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ;AACpD,IAAIJ,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAC9C,MAAM,KAAK;AACX,MAAM,UAAU;AAChB,MAAM,QAAQ;AACd,KAAK,CAAC;;AAEN;AACA,EAAE,sBAAsB,EAAE,CAAC,KAAK,EAAE,UAAU;AAC5C,IAAIA,aAAW,CAAC,MAAM,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;;AAEtE,EAAE,cAAc,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK;AAC3C,IAAIA,aAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACzC,MAAM,QAAQ;AACd,MAAM,OAAO;AACb,MAAM,KAAK;AACX,KAAK,CAAC;;AAEN,EAAE,cAAc,EAAE;AAClB,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,SAAS,GAAG,GAAG;AACnB,IAAI,WAAW,GAAG,IAAI;AACtB,IAAI,OAAO,GAAG,IAAI;AAClB,IAAI,KAAK,GAAG,IAAI;AAChB,OAAO;AACP,IAAIA,aAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACzC,MAAM,QAAQ;AACd,MAAM,OAAO;AACb,MAAM,SAAS;AACf,MAAM,WAAW;AACjB,MAAM,OAAO;AACb,MAAM,KAAK;AACX,KAAK,CAAC,CAAA;AACN,GAAG;;AAEH,EAAE,iBAAiB,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK;AAC9C,IAAIA,aAAW,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAA;AAC3D,GAAG;;AAEH,EAAE,gBAAgB,EAAE,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,KAAK;AACtD,IAAIA,aAAW,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAA;AAC5D,GAAG;;AAEH,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK;AACxC,IAAIA,aAAW,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAA;AAC1D,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI;AACtD,IAAIA,aAAW,CAAC,MAAM,CAAC,iBAAiB,EAAE;AAC1C,MAAM,IAAI;AACV,MAAM,QAAQ;AACd,MAAM,MAAM;AACZ,MAAM,WAAW;AACjB,KAAK,CAAC;;AAEN;AACA;AACA;AACA;AACA,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,WAAW,GAAG,EAAE;AACvC,IAAIA,aAAW,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;;AAEtE;AACA;AACA;AACA;AACA,EAAE,aAAa,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE,IAAI,KAAK;AACvE,IAAIA,aAAW,CAAC,MAAM,CAAC,cAAc,EAAE;AACvC,MAAM,QAAQ;AACd,MAAM,WAAW;AACjB,MAAM,mBAAmB;AACzB,MAAM,IAAI;AACV,KAAK,CAAC,CAAA;AACN,GAAG;;AAEH,EAAE,yBAAyB,EAAE,CAAC,GAAG,KAAK;AACtC,IAAIA,aAAW,CAAC,MAAM,CAAC,yBAAyB,EAAE;AAClD,MAAM,GAAG;AACT,KAAK,CAAC,CAAA;AACN,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,SAAc,GAAGI,SAAO;;;;;;;;AC3GxB;AACA,MAAM,eAAEJ,aAAW,EAAE,GAAG/H,YAAmB,CAAA;;AAE3C,MAAM;AACN,EAAE,YAAY;AACd,EAAE,aAAa;AACf,EAAE,qBAAqB;AACvB,EAAE,qBAAqB;AACvB,EAAE,yBAAyB;AAC3B,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAMmI,aAAW,GAAG;AACpB,EAAE,yBAAyB,EAAE,MAAML,aAAW,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;AACvE,EAAE,0BAA0B,EAAE,CAAC,IAAI;AACnC,IAAIA,aAAW,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC;AAC/C,EAAE,gBAAgB,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,CAAC;AACvE,EAAE,gBAAgB,EAAE,CAAC,aAAa;AAClC,IAAIA,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,aAAa,EAAE,CAAC;AAChE,EAAE,oBAAoB,EAAE,CAAC,YAAY,EAAE,YAAY;AACnD,IAAIA,aAAW,CAAC,MAAM,CAAC,yBAAyB,EAAE;AAClD,MAAM,YAAY;AAClB,MAAM,YAAY;AAClB,KAAK,CAAC;AACN,CAAC,CAAA;;AAED,IAAA,aAAc,GAAGK,aAAW;;;;;;;;ACzB5B;AACA,MAAM,eAAEL,aAAW,EAAE,GAAG/H,YAAmB,CAAA;;AAE3C,MAAM,EAAE,WAAW,EAAE,GAAGC,QAAoB,CAAA;;AAE5C,MAAMoI,WAAS,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,CAAC,SAAS,GAAG,IAAI,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,KAAK;AACxD,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;AACzC,IAAI,OAAON,aAAW,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAA;AACrE,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,WAAc,GAAGM,WAAS;;;;;;;;;;;;;;;ACT1B,MAAM,eAAEN,aAAW,EAAE,GAAG/H,YAAmB,CAAA;;AAE3C,MAAMsI,WAAS,GAAG;AAClB;AACA;AACA;AACA;AACA,EAAE,IAAI,EAAE,YAAY;AACpB,IAAI,IAAI;AACR,MAAM,OAAO,MAAMP,aAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;AACpD,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAA;AAChE,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,GAAG,EAAE,OAAO,UAAU,KAAK;AAC7B,IAAI,IAAI;AACR,MAAM,OAAO,MAAMA,aAAW,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;AAC/D,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,iCAAiC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AAC7E,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,EAAE,OAAO,UAAU,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,KAAK;AACpE,IAAI,IAAI;AACR,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,CAAC,+BAA+B,EAAE,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAC1E,OAAO,CAAA;AACP,MAAM,MAAM,MAAM,GAAG,MAAMA,aAAW,CAAC,MAAM;AAC7C,QAAQ,gBAAgB;AACxB,QAAQ,UAAU;AAClB,QAAQ,WAAW;AACnB,QAAQ,aAAa;AACrB,OAAO,CAAA;AACP,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,qBAAqB,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAA;AACjE,MAAM,OAAO,MAAM,CAAA;AACnB,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,oCAAoC,EAAE,UAAU,CAAC,CAAC,CAAC;AAC5D,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE,OAAO,UAAU,EAAE,SAAS,EAAE,cAAc,GAAG,IAAI,KAAK;AACxE,IAAI,IAAI;AACR,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,CAAC,qCAAqC,EAAE,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC9E,OAAO,CAAA;AACP,MAAM,MAAM,MAAM,GAAG,MAAMA,aAAW,CAAC,MAAM;AAC7C,QAAQ,sBAAsB;AAC9B,QAAQ,UAAU;AAClB,QAAQ,SAAS;AACjB,QAAQ,cAAc;AACtB,OAAO,CAAA;AACP,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,2BAA2B,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAA;AACvE,MAAM,OAAO,MAAM,CAAA;AACnB,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,0CAA0C,EAAE,UAAU,CAAC,CAAC,CAAC;AAClE,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,OAAO,UAAU,KAAK;AACpC,IAAI,IAAI;AACR,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,yCAAyC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AAC3E,MAAM,MAAM,OAAO,GAAG,MAAMA,aAAW,CAAC,MAAM;AAC9C,QAAQ,oBAAoB;AAC5B,QAAQ,UAAU;AAClB,OAAO,CAAA;AACP,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,qBAAqB,EAAE,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAA;AAC/E,MAAM,OAAO,OAAO,CAAA;AACpB,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,8CAA8C,CAAC,EAAE,KAAK,CAAC,CAAA;AAC5E,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,EAAE,OAAO,UAAU,KAAK;AACnC,IAAI,IAAI;AACR,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,iCAAiC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AACnE,MAAM,MAAM,OAAO,GAAG,MAAMA,aAAW,CAAC,MAAM,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAA;AAC9E,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,qBAAqB,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAA;AACrE,OAAO,MAAM;AACb,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,mBAAmB,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAA;AAClE,OAAA;AACA,MAAM,OAAO,OAAO,CAAA;AACpB,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,sCAAsC,EAAE,UAAU,CAAC,CAAC,CAAC;AAC9D,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE,YAAY;AAC5B,IAAI,IAAI;AACR,MAAM,OAAO,MAAMA,aAAW,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAC1D,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAA;AACnE,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,EAAE,YAAY;AAC9B,IAAI,IAAI;AACR,MAAM,OAAO,MAAMA,aAAW,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAA;AAC5D,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAA;AACrE,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,EAAE,OAAO,UAAU,KAAK;AACxC,IAAI,IAAI;AACR,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,qCAAqC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AACvE,MAAM,MAAM,MAAM,GAAG,MAAMA,aAAW,CAAC,MAAM;AAC7C,QAAQ,yBAAyB;AACjC,QAAQ,UAAU;AAClB,OAAO,CAAA;AACP,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;AAC1B,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,uCAAuC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AAC3E,OAAA;AACA,MAAM,OAAO,MAAM,CAAA;AACnB,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAA;AACrE,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,mBAAmB,EAAE,YAAY;AACnC,IAAI,IAAI;AACR,MAAM,OAAO,MAAMA,aAAW,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAA;AACrE,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAA;AAC1E,MAAM,OAAO,EAAE,CAAA;AACf,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,OAAO,UAAU,KAAK;AACpC,IAAI,IAAI;AACR,MAAM,OAAO,MAAMA,aAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAA;AACvE,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,qCAAqC,EAAE,UAAU,CAAC,CAAC,CAAC;AAC7D,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;AACrD,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,EAAE,YAAY;AAC9B,IAAI,IAAI;AACR,MAAM,OAAO,MAAMA,aAAW,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAA;AAChE,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAA;AACpE,MAAM,OAAO,EAAE,CAAA;AACf,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,EAAE,CAAC,QAAQ,KAAK;AAC7B,IAAIA,aAAW,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK;AACxD,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAA;AACpB,KAAK,CAAC,CAAA;AACN,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,EAAE,CAAC,QAAQ,KAAK;AAC1B,IAAIA,aAAW,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK;AACtD,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAA;AACpB,KAAK,CAAC,CAAA;AACN,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,uBAAuB,EAAE,CAAC,QAAQ,KAAK;AACzC,IAAIA,aAAW,CAAC,cAAc,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAA;AAC5D,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,oBAAoB,EAAE,CAAC,QAAQ,KAAK;AACtC,IAAIA,aAAW,CAAC,cAAc,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAA;AAC1D,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,WAAc,GAAGO,WAAS;;;;;;;;;ACtU1B,MAAM,eAAEP,aAAW,EAAE,GAAG/H,YAAmB,CAAA;AAC3C,MAAM;AACN,EAAE,aAAa;AACf,EAAE,aAAa;AACf,EAAE,YAAY;AACd,EAAE,eAAe;AACjB,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAMsI,aAAW,GAAG;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE;AAChB,IAAI,KAAK;AACT,IAAI,YAAY;AAChB,IAAI,YAAY;AAChB,IAAI,WAAW;AACf,IAAI,aAAa,GAAG,YAAY;AAChC,IAAI,SAAS,GAAG,IAAI;AACpB,IAAI,YAAY,GAAG,IAAI;AACvB;AACA,IAAIR,aAAW,CAAC,MAAM,CAAC,aAAa,EAAE;AACtC,MAAM,KAAK;AACX,MAAM,YAAY;AAClB,MAAM,YAAY;AAClB,MAAM,WAAW;AACjB,MAAM,aAAa;AACnB,MAAM,SAAS;AACf,MAAM,YAAY;AAClB,KAAK,CAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,EAAE,CAAC,KAAK,KAAKA,aAAW,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,YAAY;AACnC,IAAIA,aAAW,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,EAAE,CAAC,KAAK,EAAE,YAAY;AACtC,IAAIA,aAAW,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;;AAEhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,2BAA2B,EAAE,CAAC,KAAK,KAAK;AAC1C,IAAIA,aAAA;AACJ,OAAO,MAAM,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,CAAA;AACtC,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK;AACxB;AACA,QAAQA,aAAW,CAAC,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAA;AAC1D,OAAO,CAAA;AACP,OAAO,KAAK,CAAC,CAAC,KAAK,KAAK;AACxB,QAAQA,aAAW,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAChD,UAAU,KAAK,EAAE,KAAK,CAAC,OAAO;AAC9B,SAAS,CAAC,CAAA;AACV,OAAO,CAAC,CAAA;AACR,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,0BAA0B,EAAE;AAC9B,IAAI,KAAK;AACT,IAAI,YAAY;AAChB,IAAI,YAAY;AAChB,IAAI,WAAW;AACf,OAAO;AACP,IAAIA,aAAA;AACJ,OAAO,MAAM,CAAC,aAAa,EAAE;AAC7B,QAAQ,KAAK;AACb,QAAQ,YAAY;AACpB,QAAQ,YAAY;AACpB,QAAQ,WAAW;AACnB,OAAO,CAAA;AACP,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK;AACxB,QAAQA,aAAW,CAAC,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAA;AAC1D,OAAO,CAAA;AACP,OAAO,KAAK,CAAC,CAAC,KAAK,KAAK;AACxB,QAAQA,aAAW,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAChD,UAAU,KAAK,EAAE,KAAK,CAAC,OAAO;AAC9B,SAAS,CAAC,CAAA;AACV,OAAO,CAAC,CAAA;AACR,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,yBAAyB,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK;AACtD,IAAIA,aAAA;AACJ,OAAO,MAAM,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;AACnD,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK;AACxB,QAAQA,aAAW,CAAC,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAA;AACzD,OAAO,CAAA;AACP,OAAO,KAAK,CAAC,CAAC,KAAK,KAAK;AACxB,QAAQA,aAAW,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC/C,UAAU,KAAK,EAAE,KAAK,CAAC,OAAO;AAC9B,SAAS,CAAC,CAAA;AACV,OAAO,CAAC,CAAA;AACR,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,4BAA4B,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK;AACzD,IAAIA,aAAA;AACJ,OAAO,MAAM,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;AACtD,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK;AACxB,QAAQA,aAAW,CAAC,IAAI,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAA;AAC5D,OAAO,CAAA;AACP,OAAO,KAAK,CAAC,CAAC,KAAK,KAAK;AACxB,QAAQA,aAAW,CAAC,IAAI,CAAC,uBAAuB,EAAE;AAClD,UAAU,KAAK,EAAE,KAAK,CAAC,OAAO;AAC9B,SAAS,CAAC,CAAA;AACV,OAAO,CAAC,CAAA;AACR,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,aAAc,GAAGQ,aAAW;;;;;;;;;AClK5B,MAAM,eAAER,aAAW,EAAE,GAAG/H,YAAmB,CAAA;AAC3C,MAAM;AACN,EAAE,gBAAgB;AAClB,EAAE,eAAe;AACjB,EAAE,cAAc;AAChB,EAAE,aAAa;AACf,EAAE,kBAAkB;AACpB,EAAE,iBAAiB;AACnB,EAAE,iBAAiB;AACnB,EAAE,eAAe;AACjB,EAAE,YAAY;AACd,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAMuI,QAAM,GAAG;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW;AAClD,IAAIT,aAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACzC,MAAM,UAAU;AAChB,MAAM,SAAS;AACf,MAAM,WAAW;AACjB,KAAK,CAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,CAAC,UAAU;AACzB,IAAIA,aAAW,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,UAAU,EAAE,CAAC;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,EAAE,CAAC,UAAU,KAAKA,aAAW,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,UAAU,EAAE,CAAC;;AAE/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI;AAC5D,IAAIA,aAAW,CAAC,MAAM,CAAC,aAAa,EAAE;AACtC,MAAM,UAAU;AAChB,MAAM,QAAQ;AACd,MAAM,IAAI;AACV,MAAM,YAAY;AAClB,KAAK,CAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,EAAE,CAAC,UAAU;AAC5B,IAAIA,aAAW,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE,UAAU,EAAE,CAAC;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE,CAAC,UAAU,EAAE,GAAG;AAChC,IAAIA,aAAW,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,eAAe,EAAE,CAAC,UAAU;AAC9B,IAAIA,aAAW,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,UAAU,EAAE,CAAC;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,eAAe,CAAC;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW;AAC/C,IAAIA,aAAW,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AAC7E,CAAC,CAAA;;AAED,IAAA,QAAc,GAAGS,QAAM;;;;;;;;;;;;;;;AChHvB,MAAM,eAAET,aAAW,EAAE,GAAG/H,YAAmB,CAAA;;AAE3C,MAAMyI,aAAW,GAAG;AACpB;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,OAAO,YAAY,GAAG,KAAK,KAAK;AAC9C,IAAI,IAAI;AACR,MAAM,OAAO,MAAMV,aAAW,CAAC,MAAM,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAA;AAC3E,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAA;AACjE,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,EAAE,OAAO,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,KAAK;AAC9C,IAAI,IAAI;AACR,MAAM,OAAO,MAAMA,aAAW,CAAC,MAAM,CAAC,iBAAiB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;AACxE,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAA;AACrE,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,OAAO,WAAW,KAAK;AACrC,IAAI,IAAI;AACR,MAAM,OAAO,MAAMA,aAAW,CAAC,MAAM,CAAC,sBAAsB,EAAE,WAAW,CAAC,CAAA;AAC1E,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,oCAAoC,EAAE,WAAW,CAAC,CAAC,CAAC;AAC7D,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE,OAAO,gBAAgB,GAAG,EAAE,KAAK;AACjD,IAAI,IAAI;AACR,MAAM,OAAO,MAAMA,aAAW,CAAC,MAAM;AACrC,QAAQ,wBAAwB;AAChC,QAAQ,gBAAgB;AACxB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAA;AACnE,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,gBAAgB,EAAE,OAAO,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,KAAK;AACxD,IAAI,IAAI;AACR,MAAM,OAAO,MAAMA,aAAW,CAAC,MAAM;AACrC,QAAQ,4BAA4B;AACpC,QAAQ,KAAK;AACb,QAAQ,OAAO;AACf,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAA;AACvE,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE,OAAO,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,KAAK;AACpD,IAAI,IAAI;AACR,MAAM,OAAO,MAAMA,aAAW,CAAC,MAAM;AACrC,QAAQ,wBAAwB;AAChC,QAAQ,KAAK;AACb,QAAQ,OAAO;AACf,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAA;AACnE,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,aAAc,GAAGU,aAAW;;;;;;;;AChH5B,MAAM,eAAEV,aAAW,EAAE,GAAG/H,YAAmB,CAAA;;AAE3C,MAAM;AACN,EAAE,UAAU;AACZ,EAAE,UAAU;AACZ,EAAE,YAAY;AACd,EAAE,aAAa;AACf,EAAE,2BAA2B;AAC7B,EAAE,qBAAqB;AACvB,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAMyI,UAAQ,GAAG;AACjB,EAAE,wBAAwB,EAAE,CAAC,KAAK;AAClC,IAAIX,aAAW,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC;AAC7C,EAAE,uBAAuB,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW;AACzD,IAAIA,aAAW,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;AACrE,EAAE,yBAAyB,EAAE,CAAC,KAAK,EAAE,QAAQ;AAC7C,IAAIA,aAAW,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACzD,EAAE,YAAY,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO;AACzC,IAAIA,aAAW,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AACnE,EAAE,wBAAwB,EAAE,CAAC,KAAK,EAAE,WAAW;AAC/C,IAAIA,aAAW,CAAC,MAAM,CAAC,2BAA2B,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AAC3E,EAAE,sBAAsB,EAAE,CAAC,KAAK,EAAE,QAAQ;AAC1C,IAAIA,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAClE,CAAC,CAAA;;AAED,IAAA,UAAc,GAAGW,UAAQ;;;;;;;;AC3BzB;AACA,MAAM,eAAEX,aAAW,EAAE,GAAG/H,YAAmB,CAAA;;AAE3C,MAAM;AACN,EAAE,oBAAoB;AACtB,EAAE,2BAA2B;AAC7B,EAAE,qBAAqB;AACvB,EAAE,8BAA8B;AAChC,EAAE,oBAAoB;AACtB,EAAE,sBAAsB;AACxB,EAAE,cAAc;AAChB,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAM0I,YAAU,GAAG;AACnB,EAAE,WAAW,EAAE,CAAC,WAAW;AAC3B,IAAIZ,aAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE,WAAW,CAAC;;AAEzD,EAAE,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,KAAK;AAC/C,IAAIA,aAAW,CAAC,MAAM,CAAC,sBAAsB,EAAE;AAC/C,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,MAAM,SAAS;AACf,MAAM,GAAG;AACT,KAAK,CAAC,CAAA;AACN,GAAG;;AAEH,EAAE,YAAY,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,CAAC;;AAEnE,EAAE,oBAAoB,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK;AACtD,IAAIA,aAAW,CAAC,MAAM,CAAC,2BAA2B,EAAE;AACpD,MAAM,WAAW;AACjB,MAAM,SAAS;AACf,MAAM,KAAK;AACX,KAAK,CAAC;;AAEN,EAAE,iCAAiC,EAAE;AACrC,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,SAAS;AACb,IAAI,GAAG;AACP,IAAI,iBAAiB,GAAG,KAAK;AAC7B;AACA,IAAIA,aAAW,CAAC,MAAM,CAAC,8BAA8B,EAAE;AACvD,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,MAAM,SAAS;AACf,MAAM,GAAG;AACT,MAAM,iBAAiB;AACvB,KAAK,CAAC;;AAEN,EAAE,qBAAqB,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,KAAK;AACjE,IAAIA,aAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE;AAC7C,MAAM,QAAQ;AACd,MAAM,aAAa;AACnB,MAAM,SAAS;AACf,KAAK,CAAC,CAAA;AACN,GAAG;;AAEH,EAAE,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,GAAG,EAAE,KAAK;AAC7E,IAAIA,aAAW,CAAC,MAAM,CAAC,sBAAsB,EAAE;AAC/C,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,MAAM,SAAS;AACf,MAAM,UAAU;AAChB,MAAM,KAAK;AACX,KAAK,CAAC,CAAA;AACN,GAAG;;AAEH,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE;AAC7D,IAAIA,aAAW,CAAC,MAAM,CAAC,cAAc,EAAE;AACvC,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,MAAM,SAAS;AACf,MAAM,KAAK;AACX,MAAM,OAAO;AACb,KAAK,CAAC;AACN,CAAC,CAAA;;AAED,IAAA,YAAc,GAAGY,YAAU;;;;;;AC/E3B,MAAM,eAAEZ,aAAW,EAAE,GAAG/H,YAAmB,CAAA;;AAE3C,MAAM,EAAE,qBAAqB,EAAE,GAAGC,cAAiC,CAAA;;AAEnE,MAAM2I,WAAS,GAAG;AAClB;AACA,EAAE,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,uBAAuB;AACpE,IAAIb,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC3E,CAAC,CAAA;;AAED,IAAA,WAAc,GAAGa,WAAS;;;;;;;ACV1B;AACA,MAAM,eAAEb,aAAW,EAAE,GAAG/H,YAAmB,CAAA;;AAE3C,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,GAAGC,QAAoB,CAAA;;AAEjE,MAAM4I,cAAY,GAAG;AACrB,EAAE,YAAY,EAAE,CAAC,KAAK,EAAE,QAAQ;AAChC,IAAId,aAAW,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC5D,EAAE,aAAa,EAAE,CAAC,KAAK,KAAKA,aAAW,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC;AAC1E,CAAC,CAAA;;AAED,IAAA,cAAc,GAAGc,cAAY;;;;;;;;ACV7B;AACA,MAAM,eAAEd,aAAW,EAAE,GAAG/H,YAAmB,CAAA;;AAE3C,MAAM8I,WAAS,GAAG;AAClB,EAAE,OAAO,EAAE,CAAC,WAAW,EAAE,QAAQ;AACjC,IAAIf,aAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AACnE,EAAE,SAAS,EAAE,CAAC,QAAQ,KAAKA,aAAW,CAAC,MAAM,CAAC,kBAAkB,EAAE,QAAQ,CAAC;AAC3E,CAAC,CAAA;;AAED,IAAA,WAAc,GAAGe,WAAS;;;;;;;;;;ACP1B,MAAM,eAAEf,aAAW,EAAE,GAAG/H,YAAmB,CAAA;AAC3C,MAAM;AACN,EAAE,gBAAgB;AAClB,EAAE,iBAAiB;AACnB,EAAE,wBAAwB;AAC1B,EAAE,uBAAuB;AACzB,EAAE,qBAAqB;AACvB,EAAE,sBAAsB;AACxB,EAAE,mBAAmB;AACrB,EAAE,gBAAgB;AAClB,EAAE,oBAAoB;AACtB,EAAE,sBAAsB;AACxB,EAAE,mBAAmB;AACrB,EAAE,gBAAgB;AAClB,CAAC,GAAGC,WAA8B,CAAA;;AAElC,IAAI,eAAe,GAAG,CAAC,CAAA;AACvB,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE,CAAA;;AAE9B,SAAS,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE;AACzC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,eAAe,CAAC,CAAA;AACtC,EAAE,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAA;AAClD,EAAE8H,aAAW,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;AAClC,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;AAC5C,EAAE,OAAO,EAAE,CAAA;AACX,CAAA;;AAEA,MAAMgB,QAAM,GAAG;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM;AACjC,IAAIhB,aAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE,CAAC,SAAS;AAC1B,IAAIA,aAAW,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,CAAC;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,kBAAkB,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,wBAAwB,CAAC;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,iBAAiB,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,uBAAuB,CAAC;;AAEtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,eAAe,EAAE,CAAC,UAAU;AAC9B,IAAIA,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,UAAU,EAAE,CAAC;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,mBAAmB,EAAE,CAAC,UAAU;AAClC,IAAIA,aAAW,CAAC,MAAM,CAAC,sBAAsB,EAAE,EAAE,UAAU,EAAE,CAAC;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,EAAE,CAAC,UAAU;AAC5B,IAAIA,aAAW,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,UAAU,EAAE,CAAC;;AAE3D;AACA;AACA;AACA;;AAEA;AACA,EAAE,aAAa,EAAE,CAAC,QAAQ,KAAK,YAAY,CAAC,gBAAgB,EAAE,QAAQ,CAAC;;AAEvE;AACA,EAAE,gBAAgB,EAAE,CAAC,QAAQ,KAAK,YAAY,CAAC,oBAAoB,EAAE,QAAQ,CAAC;;AAE9E;AACA,EAAE,kBAAkB,EAAE,CAAC,QAAQ;AAC/B,IAAI,YAAY,CAAC,sBAAsB,EAAE,QAAQ,CAAC;;AAElD;AACA,EAAE,gBAAgB,EAAE,CAAC,QAAQ,KAAK,YAAY,CAAC,mBAAmB,EAAE,QAAQ,CAAC;;AAE7E;AACA,EAAE,aAAa,EAAE,CAAC,QAAQ,KAAK,YAAY,CAAC,gBAAgB,EAAE,QAAQ,CAAC;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,oBAAoB,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK;AAC7C,IAAI,MAAM,UAAU,GAAG,EAAE,KAAK,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;AAC1E,IAAI,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAC9C,IAAI,IAAI,KAAK,EAAE;AACf,MAAMA,aAAW,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;AAC9D,MAAM,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;AACrC,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,wBAAwB,EAAE,MAAM;AAClC,IAAI,KAAK,MAAM,GAAG,KAAK,CAAC,IAAI,YAAY,EAAE;AAC1C,MAAMA,aAAW,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;AAC9D,KAAA;AACA,IAAI,YAAY,CAAC,KAAK,EAAE,CAAA;AACxB,IAAIA,aAAW,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAA;AACpD,IAAIA,aAAW,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,CAAA;AACxD,IAAIA,aAAW,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CAAA;AAC1D,IAAIA,aAAW,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAA;AACvD,IAAIA,aAAW,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAA;AACpD,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,QAAc,GAAGgB,QAAM;;;;;;;;;;ACtJvB,MAAM,eAAEhB,aAAW,EAAE,GAAG/H,YAAmB,CAAA;AAC3C,MAAM;AACN,EAAE,uBAAuB;AACzB,EAAE,2BAA2B;AAC7B,EAAE,oBAAoB;AACtB,EAAE,oBAAoB;AACtB,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAM+I,gBAAc,GAAG;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,CAAC,KAAK,EAAE,YAAY;AAClC,IAAIjB,aAAW,CAAC,MAAM,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;;AAExE;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,2BAA2B,CAAC;;AAEtE;AACA;AACA;AACA;AACA;AACA,EAAE,kBAAkB,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC;;AAEpE;AACA;AACA;AACA;AACA;AACA,EAAE,kBAAkB,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC;AACpE,CAAC,CAAA;;AAED,IAAA,gBAAc,GAAGiB,gBAAc;;;;;;;;;AC1C/B,MAAM,eAAEjB,aAAW,EAAE,GAAG/H,YAAmB,CAAA;AAC3C,MAAM;AACN,EAAE,uBAAuB;AACzB,EAAE,4BAA4B;AAC9B,EAAE,uBAAuB;AACzB,EAAE,wBAAwB;AAC1B,EAAE,8BAA8B;AAChC,EAAE,wBAAwB;AAC1B,EAAE,wBAAwB;AAC1B,EAAE,8BAA8B;AAChC,EAAE,+BAA+B;AACjC,EAAE,gCAAgC;AAClC,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAMgJ,oBAAkB,GAAG;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,qBAAqB,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,GAAG,EAAE;AAC1D,IAAIlB,aAAW,CAAC,MAAM,CAAC,uBAAuB,EAAE;AAChD,MAAM,KAAK;AACX,MAAM,WAAW;AACjB,MAAM,OAAO;AACb,KAAK,CAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,mBAAmB,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,4BAA4B,CAAC;;AAE7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,qBAAqB,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,EAAE;AAC7C,IAAIA,aAAW,CAAC,MAAM,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC;;AAEtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,4BAA4B,EAAE,CAAC,KAAK,EAAE,WAAW;AACnD,IAAIA,aAAW,CAAC,MAAM,CAAC,wBAAwB,EAAE;AACjD,MAAM,KAAK;AACX,MAAM,WAAW;AACjB,KAAK,CAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,2BAA2B,EAAE,CAAC,KAAK,EAAE,gBAAgB;AACvD,IAAIA,aAAW,CAAC,MAAM,CAAC,8BAA8B,EAAE;AACvD,MAAM,KAAK;AACX,MAAM,gBAAgB;AACtB,KAAK,CAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,0BAA0B,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,GAAG,EAAE;AAC/D,IAAIA,aAAW,CAAC,MAAM,CAAC,wBAAwB,EAAE;AACjD,MAAM,KAAK;AACX,MAAM,WAAW;AACjB,MAAM,OAAO;AACb,KAAK,CAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,mBAAmB,EAAE,CAAC,WAAW;AACnC,IAAIA,aAAW,CAAC,MAAM,CAAC,wBAAwB,EAAE,EAAE,WAAW,EAAE,CAAC;;AAEjE;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,qBAAqB,EAAE,CAAC,KAAK;AAC/B,IAAIA,aAAW,CAAC,MAAM,CAAC,8BAA8B,EAAE,EAAE,KAAK,EAAE,CAAC;;AAEjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,wBAAwB,EAAE,CAAC,KAAK,EAAE,iBAAiB;AACrD,IAAIA,aAAW,CAAC,MAAM,CAAC,+BAA+B,EAAE;AACxD,MAAM,KAAK;AACX,MAAM,iBAAiB;AACvB,KAAK,CAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,iBAAiB,EAAE,CAAC,KAAK,EAAE,WAAW;AACxC,IAAIA,aAAW,CAAC,MAAM,CAAC,gCAAgC,EAAE;AACzD,MAAM,KAAK;AACX,MAAM,WAAW;AACjB,KAAK,CAAC;AACN,CAAC,CAAA;;AAED,IAAA,oBAAc,GAAGkB,oBAAkB;;;;;;;;;AC/InC,MAAM,eAAElB,aAAW,EAAE,GAAG/H,YAAmB,CAAA;AAC3C,MAAM;AACN,EAAE,4BAA4B;AAC9B,EAAE,wBAAwB;AAC1B,EAAE,wBAAwB;AAC1B,EAAE,yBAAyB;AAC3B,EAAE,oBAAoB;AACtB,EAAE,qBAAqB;AACvB,EAAE,4BAA4B;AAC9B,EAAE,0BAA0B;AAC5B,EAAE,4BAA4B;AAC9B,EAAE,4BAA4B;AAC9B,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAMiJ,iBAAe,GAAG;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,EAAE,MAAMnB,aAAW,CAAC,MAAM,CAAC,4BAA4B,CAAC;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,EAAE,CAAC,UAAU;AACxB,IAAIA,aAAW,CAAC,MAAM,CAAC,wBAAwB,EAAE,EAAE,UAAU,EAAE,CAAC;;AAEhE;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,wBAAwB,CAAC;;AAE/D;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,yBAAyB,CAAC;;AAEjE;AACA;AACA;AACA,EAAE,MAAM,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ;AAC7B,IAAIA,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;;AAEpE;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,EAAE,CAAC,OAAO;AACzB,IAAIA,aAAW,CAAC,MAAM,CAAC,4BAA4B,EAAE,OAAO,CAAC;;AAE7D;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,0BAA0B,CAAC;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO;AACtC,IAAIA,aAAW,CAAC,MAAM,CAAC,4BAA4B,EAAE;AACrD,MAAM,KAAK;AACX,MAAM,IAAI;AACV,MAAM,OAAO;AACb,KAAK,CAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI;AAC7B,IAAIA,aAAW,CAAC,MAAM,CAAC,4BAA4B,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACrE,CAAC,CAAA;;AAED,IAAA,iBAAc,GAAGmB,iBAAe;;;;;;;;;ACvGhC,MAAM,eAAEnB,aAAW,EAAE,GAAG/H,YAAmB,CAAA;AAC3C,MAAM;AACN,EAAE,iBAAiB;AACnB,EAAE,4BAA4B;AAC9B,EAAE,4BAA4B;AAC9B,EAAE,uBAAuB;AACzB,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAMkJ,iBAAe,GAAG;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,EAAE,CAAC,OAAO,KAAKpB,aAAW,CAAC,MAAM,CAAC,iBAAiB,EAAE,OAAO,CAAC;;AAEnE;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,4BAA4B,CAAC;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,EAAE,CAAC,QAAQ,EAAE,KAAK;AAClC,IAAIA,aAAW,CAAC,MAAM,CAAC,4BAA4B,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;AAEzE;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,EAAE,CAAC,QAAQ;AACtB,IAAIA,aAAW,CAAC,MAAM,CAAC,uBAAuB,EAAE,QAAQ,CAAC;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,EAAE,CAAC,QAAQ,KAAK;AAC3B,IAAI,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAA;AACpD,IAAIA,aAAW,CAAC,EAAE,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAA;AACnD,IAAI,OAAO,MAAMA,aAAW,CAAC,cAAc,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAA;AAC5E,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE,CAAC,QAAQ,KAAK;AAC9B,IAAI,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,UAAU,KAAK,QAAQ,CAAC,UAAU,CAAC,CAAA;AAChE,IAAIA,aAAW,CAAC,EAAE,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAA;AACvD,IAAI,OAAO;AACX,MAAMA,aAAW,CAAC,cAAc,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAA;AACrE,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,iBAAc,GAAGoB,iBAAe;;;;;;;;ACtEhC,MAAM,eAAEpB,aAAW,EAAE,GAAG/H,YAAmB,CAAA;AAC3C,MAAM;AACN,EAAE,qBAAqB;AACvB,EAAE,oBAAoB;AACtB,EAAE,qBAAqB;AACvB,EAAE,uBAAuB;AACzB,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAMmJ,qBAAmB,GAAG;AAC5B,EAAE,mBAAmB,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM;AAClD,IAAIrB,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAC9C,MAAM,KAAK;AACX,MAAM,WAAW;AACjB,MAAM,MAAM;AACZ,KAAK,CAAC;;AAEN,EAAE,kBAAkB,EAAE,CAAC,KAAK,EAAE,WAAW;AACzC,IAAIA,aAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;;AAEpE,EAAE,oBAAoB,EAAE,CAAC,KAAK;AAC9B,IAAIA,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC;;AAExD,EAAE,qBAAqB,EAAE,CAAC,KAAK,EAAE,WAAW;AAC5C,IAAIA,aAAW,CAAC,MAAM,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AACvE,CAAC,CAAA;;AAED,IAAA,qBAAc,GAAGqB,qBAAmB;;;;;;;;;ACzBpC,MAAM,eAAErB,aAAW,EAAE,GAAG/H,YAAmB,CAAA;AAC3C,MAAM;AACN,EAAE,mBAAmB;AACrB,EAAE,kBAAkB;AACpB,EAAE,qBAAqB;AACvB,EAAE,iBAAiB;AACnB,EAAE,kBAAkB;AACpB,EAAE,mBAAmB;AACrB,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAMoJ,YAAU,GAAG;AACnB;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,MAAMtB,aAAW,CAAC,MAAM,CAAC,mBAAmB,CAAC;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,EAAE,CAAC,WAAW,EAAE,IAAI;AAC/B,IAAIA,aAAW,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;;AAEjE;AACA;AACA;AACA,EAAE,YAAY,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,qBAAqB,CAAC;;AAE/D;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,iBAAiB,CAAC;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,EAAE,CAAC,UAAU,EAAE,WAAW;AACrC,IAAIA,aAAW,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;;AAEvE;AACA;AACA;AACA,EAAE,UAAU,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,mBAAmB,CAAC;AAC3D,CAAC,CAAA;;AAED,IAAA,YAAc,GAAGsB,YAAU;;;;;;;;;;;;;;;ACjD3B,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAGrJ,YAAmB,CAAA;AAClD,MAAMgI,gBAAc,GAAG/H,gBAA2B,CAAA;AAClD,MAAMgI,cAAY,GAAG/H,cAAyB,CAAA;AAC9C,MAAMgI,WAAS,GAAG/H,WAAsB,CAAA;AACxC,MAAMgI,SAAO,GAAG/H,SAAoB,CAAA;AACpC,MAAMgI,aAAW,GAAG/H,aAAwB,CAAA;AAC5C,MAAMgI,WAAS,GAAG/H,WAAsB,CAAA;AACxC,MAAMgI,WAAS,GAAG/H,WAAsB,CAAA;AACxC,MAAMgI,aAAW,GAAG/H,aAAwB,CAAA;AAC5C,MAAMgI,QAAM,GAAG/H,QAAmB,CAAA;AAClC,MAAMgI,aAAW,GAAG/H,aAAwB,CAAA;AAC5C,MAAMgI,UAAQ,GAAG/H,UAAqB,CAAA;AACtC,MAAMgI,YAAU,GAAG/H,YAAuB,CAAA;AAC1C,MAAMgI,WAAS,GAAG/H,WAAsB,CAAA;AACxC,MAAMgI,cAAY,GAAG/H,cAAyB,CAAA;AAC9C,MAAMgI,WAAS,GAAG/H,WAAsB,CAAA;AACxC,MAAMgI,QAAM,GAAG/H,QAAmB,CAAA;AAClC,MAAMgI,gBAAc,GAAG/H,gBAA2B,CAAA;AAClD,MAAMgI,oBAAkB,GAAG/H,oBAA+B,CAAA;AAC1D,MAAM,mBAAmB,GAAGC,qBAAgC,CAAA;AAC5D,MAAM+H,iBAAe,GAAGI,iBAA4B,CAAA;AACpD,MAAM,UAAU,GAAGC,YAAuB,CAAA;AAC1C,MAAMJ,iBAAe,GAAGK,iBAA4B,CAAA;;AAEpD;AACA,MAAMpI,QAAM,GAAGqI,QAAoB,CAAA;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,eAAa,CAAC,UAAU,GAAG,EAAE,EAAE;AACxC,EAAE,MAAM,OAAO,GAAG;AAClB;AACA,IAAI,KAAK,EAAE,IAAI;;AAEf,IAAI,QAAQ,EAAE,CAAC,KAAK,KAAK;AACzB,MAAM,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAA;AACrD,MAAM,OAAO,CAAC,KAAK,GAAG,KAAK,CAAA;AAC3B,KAAK;;AAEL;AACA,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK;AACvB,MAAM,WAAW,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AACxC,KAAK;AACL,IAAI,kBAAkB,EAAE,CAAC,IAAI,GAAG,IAAI,KAAK;AACzC;AACA,MAAM,IAAI,IAAI,EAAE,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;AACpD,KAAK;AACL,IAAI,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,WAAW,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;;AAEtE;AACA,IAAI,cAAc,EAAE1B,gBAAc;AAClC,IAAI,SAAS,EAAEC,cAAY;AAC3B,IAAI,MAAM,EAAEC,WAAS;AACrB,IAAI,MAAM,EAAEQ,UAAQ;AACpB,IAAI,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAGP,SAAO,EAAE;AACrC,IAAI,QAAQ,EAAEC,aAAW;AACzB,IAAI,MAAM,EAAEC,WAAS;AACrB,IAAI,OAAO,EAAEC,WAAS;AACtB,IAAI,SAAS,EAAEC,aAAW;AAC1B,IAAI,GAAG,EAAEC,QAAM;AACf,IAAI,QAAQ,EAAEC,aAAW;;AAEzB,IAAI,KAAK,EAAE;AACX,MAAM,QAAQ,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC9C,MAAM,YAAY,EAAE,CAAC,GAAG,KAAK;AAC7B,QAAQ;AACR,UAAU,OAAO,GAAG,KAAK,QAAQ;AACjC,WAAW,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AAClE,UAAU;AACV,UAAU,OAAO,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;AACxC,SAAA;AACA,OAAO;AACP,KAAK;;AAEL;AACA,IAAI,MAAM,EAAE,EAAE,GAAGrH,QAAM,EAAE;;AAEzB,IAAI,YAAY,EAAEA,QAAM,CAAC,MAAM;;AAE/B,IAAI,WAAW,EAAE,EAAE;;AAEnB;AACA,IAAI,GAAG,EAAE2H,QAAM;;AAEf;AACA,IAAI,OAAO,EAAEJ,YAAU;AACvB,IAAI,MAAM,EAAEC,WAAS;AACrB,IAAI,SAAS,EAAEC,cAAY;AAC3B,IAAI,OAAO,EAAEC,WAAS;AACtB,IAAI,WAAW,EAAEE,gBAAc;AAC/B,IAAI,eAAe,EAAEC,oBAAkB;AACvC,IAAI,gBAAgB,EAAE,mBAAmB;AACzC,IAAI,YAAY,EAAEC,iBAAe;AACjC,IAAI,OAAO,EAAE,UAAU;AACvB,IAAI,aAAa,EAAEC,iBAAe;;AAElC,IAAI,WAAW,EAAE;AACjB,MAAM,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK;AACvC,QAAQ,WAAW,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAA;AACxE,OAAO;AACP,KAAK;;AAEL;AACA,IAAI,GAAG,UAAU;AACjB,GAAG,CAAA;;AAEH,EAAE,OAAO,OAAO,CAAA;AAChB,CAAA;;AAEA;AACA;AACA;AACA;AACA,MAAMQ,gBAAc,GAAGD,eAAa,EAAE,CAAA;;AAEtC,IAAA,OAAc,GAAG,iBAAEA,eAAa,kBAAEC,gBAAc,EAAE;;;;;;;;AC7HlD;AACA,MAAM,gBAAgB,GAAG3J,kBAAwC,CAAA;AACjE,MAAM,qBAAqB,GAAGC,uBAA6C,CAAA;AAC3E,MAAM,mBAAmB,GAAGC,qBAA2C,CAAA;AACvE,MAAM,eAAe,GAAGC,iBAAuC,CAAA;AAC/D,MAAM,cAAc,GAAGC,gBAAsC,CAAA;AAC7D,MAAM,kBAAkB,GAAGC,oBAA0C,CAAA;AACrE,MAAM,kBAAkB,GAAGC,yBAA0C,EAAA,CAAA;AACrE,MAAM,gBAAgB,GAAGC,kBAAwC,CAAA;AACjE,MAAM,aAAa,GAAGC,oBAAqC,CAAA;AAC3D,MAAM,kBAAkB,GAAGC,oBAA0C,CAAA;AACrE,MAAM,iBAAiB,GAAGC,mBAAyC,CAAA;AACnE,MAAM,gBAAgB,GAAGC,kBAAwC,CAAA;AACjE,MAAM,mBAAmB,GAAGC,qBAA2C,CAAA;AACvE,MAAM,gBAAgB,GAAGC,kBAAwC,CAAA;AACjE,MAAM,aAAa,GAAGC,eAAqC,CAAA;AAC3D,MAAM,aAAa,GAAGC,eAAqC,CAAA;AAC3D,MAAM,yBAAyB,GAAGC,2BAAiD,CAAA;AACnF,MAAM,sBAAsB,GAAGC,wBAA8C,CAAA;AAC7E,MAAM,qBAAqB,GAAGC,uBAA6C,CAAA;AAC3E,MAAM,sBAAsB,GAAGC,wBAA8C,CAAA;AAC7E,MAAM,uBAAuB,GAAGmI,yBAA+C,CAAA;;AAE/E;AACA,MAAM,WAAW,GAAGC,kBAA8B,EAAA,CAAA;AACf;AACnC,MAAM,aAAa,GAAGE,eAAgC,CAAA;;AAEtD;AACA,MAAM,WAAW,GAAGG,UAAuB,CAAA;;AAE3C;AACA,MAAM,cAAc,GAAGC,gBAA+B,CAAA;AACtD,MAAM,YAAY,GAAGC,cAA6B,CAAA;AAClD,MAAM,SAAS,GAAGC,WAA0B,CAAA;AAC5C,MAAM,OAAO,GAAGC,SAAwB,CAAA;AACxC,MAAM,WAAW,GAAGC,aAA4B,CAAA;AAChD,MAAM,SAAS,GAAGC,WAA0B,CAAA;AAC5C,MAAM,SAAS,GAAGC,WAA0B,CAAA;AAC5C,MAAM,WAAW,GAAGC,aAA4B,CAAA;AAChD,MAAM,MAAM,GAAGC,QAAuB,CAAA;AACtC,MAAM,WAAW,GAAGC,aAA4B,CAAA;AAChD,MAAM,QAAQ,GAAGC,UAAyB,CAAA;AAC1C,MAAM,UAAU,GAAGC,YAA2B,CAAA;AAC9C,MAAM,SAAS,GAAGC,WAA0B,CAAA;AAC5C,MAAM,YAAY,GAAGC,cAA6B,CAAA;AAClD,MAAM,SAAS,GAAGC,WAA0B,CAAA;AAC5C,MAAM,MAAM,GAAGC,QAAuB,CAAA;AACtC,MAAM,cAAc,GAAGC,gBAA+B,CAAA;AACtD,MAAM,kBAAkB,GAAGC,oBAAmC,CAAA;AAC9D,MAAM,eAAe,GAAGC,iBAAgC,CAAA;AACxD,MAAM,eAAe,GAAGC,iBAAgC,CAAA;;AAExD;AACA,MAAM,MAAM,GAAGC,QAAmB,CAAA;;AAElC;AACA,MAAM,cAAc,GAAGC,qBAA2B,CAAA;AAClD,MAAM,cAAc,GAAGC,gBAA2B,CAAA;AAClD,MAAM,mBAAmB,GAAGC,0BAAgC,CAAA;;AAE5D;AACA,MAAM,wBAAwB,GAAGC,0BAA4C,CAAA;AAC7E,MAAM,oBAAoB,GAAGC,sBAAwC,CAAA;;AAErE;AACA,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAGC,OAAwB,CAAA;;AAElE,IAAA,QAAc,GAAG;AACjB;AACA,EAAE,gBAAgB;AAClB,EAAE,qBAAqB;AACvB,EAAE,mBAAmB;AACrB,EAAE,eAAe;AACjB,EAAE,cAAc;AAChB,EAAE,kBAAkB;AACpB,EAAE,kBAAkB;AACpB,EAAE,gBAAgB;AAClB,EAAE,aAAa;AACf,EAAE,kBAAkB;AACpB,EAAE,iBAAiB;AACnB,EAAE,gBAAgB;AAClB,EAAE,mBAAmB;AACrB,EAAE,gBAAgB;AAClB,EAAE,aAAa;AACf,EAAE,aAAa;AACf,EAAE,yBAAyB;AAC3B,EAAE,sBAAsB;AACxB,EAAE,qBAAqB;AACvB,EAAE,sBAAsB;AACxB,EAAE,uBAAuB;;AAEzB;AACA,EAAE,GAAG,WAAW;;AAEhB;AACA,EAAE,cAAc;AAChB,EAAE,YAAY;AACd,EAAE,SAAS;AACX,EAAE,OAAO;AACT,EAAE,WAAW;AACb,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,WAAW;AACb,EAAE,MAAM;AACR,EAAE,WAAW;AACb,EAAE,QAAQ;AACV,EAAE,UAAU;AACZ,EAAE,SAAS;AACX,EAAE,YAAY;AACd,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,cAAc;AAChB,EAAE,kBAAkB;AACpB,EAAE,eAAe;AACjB,EAAE,eAAe;;AAEjB;AACA,EAAE,MAAM;;AAER;AACA,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,mBAAmB;;AAErB;AACA,EAAE,aAAa;AACf,EAAE,cAAc;;AAEhB;AACA,EAAE,WAAW;AACb,EAAE,aAAa;;AAEf;AACA,EAAE,wBAAwB;AAC1B,EAAE,oBAAoB;;AAEtB;AACA,EAAE,kBAAkB,EAAE,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACtE,CAAC,CAAA;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../electron/events/secureStorageEvents.js","../../electron/events/workspaceEvents.js","../../electron/events/layoutEvents.js","../../electron/events/themeEvents.js","../../electron/events/dataEvents.js","../../electron/events/settingsEvents.js","../../electron/events/dialogEvents.js","../../electron/events/providerEvents.js","../../electron/events/mcpEvents.js","../../electron/events/registryEvents.js","../../electron/events/algoliaEvents.js","../../electron/events/menuItemEvents.js","../../electron/events/openaiEvents.js","../../electron/events/llmEvents.js","../../electron/events/clientCacheEvents.js","../../electron/events/dashboardConfigEvents.js","../../electron/events/dashboardRatingsEvents.js","../../electron/events/registryAuthEvents.js","../../electron/events/sessionEvents.js","../../electron/events/notificationEvents.js","../../electron/events/index.js","../../electron/controller/dialogController.js","../../electron/controller/secureStoreController.js","../../electron/utils/file.js","../../electron/controller/workspaceController.js","../../electron/controller/themeController.js","../../electron/utils/transform.js","../../electron/utils/ntc.js","../../electron/utils/color.js","../../electron/controller/dataController.js","../../electron/controller/settingsController.js","../../electron/utils/responseCache.js","../../electron/utils/clientCache.js","../../electron/controller/providerController.js","../../electron/controller/layoutController.js","../../electron/controller/mcpController.js","../../electron/controller/registryController.js","../../electron/utils/algolia.js","../../electron/controller/algoliaController.js","../../electron/controller/openaiController.js","../../electron/controller/menuItemsController.js","../../electron/controller/pluginController.js","../../electron/controller/cliController.js","../../electron/controller/llmController.js","../../electron/schema/dashboardConfigValidator.js","../../electron/schema/dashboardConfigUtils.js","../../electron/widgetCompiler.js","../../electron/dynamicWidgetLoader.js","../../electron/widgetRegistry.js","../../electron/controller/registryAuthController.js","../../electron/controller/registryApiController.js","../../electron/controller/themeRegistryController.js","../../electron/controller/dashboardConfigController.js","../../electron/controller/notificationController.js","../../electron/utils/clientFactories.js","../../electron/controller/sessionController.js","../../electron/schema/dashboardRatingsUtils.js","../../electron/controller/dashboardRatingsController.js","../../electron/controller/index.js","../../electron/api/secureStoreApi.js","../../electron/api/workspaceApi.js","../../electron/api/layoutApi.js","../../electron/api/dataApi.js","../../electron/api/settingsApi.js","../../electron/api/dialogApi.js","../../electron/api/widgetApi.js","../../electron/api/providerApi.js","../../electron/api/mcpApi.js","../../electron/api/registryApi.js","../../electron/api/themeApi.js","../../electron/api/algoliaApi.js","../../electron/api/openaiApi.js","../../electron/api/menuItemsApi.js","../../electron/api/pluginApi.js","../../electron/api/llmApi.js","../../electron/api/clientCacheApi.js","../../electron/api/dashboardConfigApi.js","../../electron/api/registryAuthApi.js","../../electron/api/notificationApi.js","../../electron/api/dashboardRatingsApi.js","../../electron/api/sessionApi.js","../../electron/api/mainApi.js","../../electron/index.js"],"sourcesContent":["const SECURE_STORE_ENCRYPTION_CHECK = \"secure-storage-encryption-check\";\nconst SECURE_STORE_ENCRYPTION_CHECK_COMPLETE =\n \"secure-storage-encryption-check-complete\";\nconst SECURE_STORE_ENCRYPTION_CHECK_ERROR =\n \"secure-storage-encryption-check-error\";\n\nconst SECURE_STORAGE_ENCRYPT_STRING = \"secure-storage-encrypt-string\";\nconst SECURE_STORAGE_ENCRYPT_STRING_COMPLETE =\n \"secure-storage-encrypt-string-complete\";\nconst SECURE_STORAGE_ENCRYPT_STRING_ERROR =\n \"secure-storage-encrypt-string-error\";\n\nconst SECURE_STORE_GET_DATA = \"secure-storage-get-data\";\nconst SECURE_STORE_GET_DATA_COMPLETE = \"secure-storage-get-data-complete\";\nconst SECURE_STORE_GET_DATA_ERROR = \"secure-storage-get-data-error\";\n\nconst SECURE_STORE_SET_DATA = \"secure-storage-set-data\";\nconst SECURE_STORE_SET_DATA_COMPLETE = \"secure-storage-set-data-complete\";\nconst SECURE_STORE_SET_DATA_ERROR = \"secure-storage-set-data-error\";\n\nmodule.exports = {\n SECURE_STORE_ENCRYPTION_CHECK,\n SECURE_STORE_ENCRYPTION_CHECK_COMPLETE,\n SECURE_STORE_ENCRYPTION_CHECK_ERROR,\n SECURE_STORE_SET_DATA,\n SECURE_STORE_SET_DATA_COMPLETE,\n SECURE_STORE_SET_DATA_ERROR,\n SECURE_STORE_GET_DATA,\n SECURE_STORE_GET_DATA_COMPLETE,\n SECURE_STORE_GET_DATA_ERROR,\n SECURE_STORAGE_ENCRYPT_STRING,\n SECURE_STORAGE_ENCRYPT_STRING_COMPLETE,\n SECURE_STORAGE_ENCRYPT_STRING_ERROR,\n};\n","/**\n * Event Constants File\n *\n * This file contains event constants that may be used as a type ahead reference for listeners.\n */\nconst WORKSPACE_LIST = \"workspace-list\";\nconst WORKSPACE_LIST_COMPLETE = \"workspace-list-complete\";\nconst WORKSPACE_LIST_ERROR = \"workspace-list-error\";\n\nconst WORKSPACE_SAVE = \"workspace-save\";\nconst WORKSPACE_SAVE_COMPLETE = \"workspace-save-complete\";\nconst WORKSPACE_SAVE_ERROR = \"workspace-save-error\";\n\nconst WORKSPACE_DELETE = \"workspace-delete\";\nconst WORKSPACE_DELETE_COMPLETE = \"workspace-delete-complete\";\nconst WORKSPACE_DELETE_ERROR = \"workspace-delete-error\";\n\nmodule.exports = {\n WORKSPACE_LIST,\n WORKSPACE_LIST_COMPLETE,\n WORKSPACE_LIST_ERROR,\n WORKSPACE_SAVE,\n WORKSPACE_SAVE_COMPLETE,\n WORKSPACE_SAVE_ERROR,\n WORKSPACE_DELETE,\n WORKSPACE_DELETE_COMPLETE,\n WORKSPACE_DELETE_ERROR,\n};\n","/**\n * Event Constants File\n *\n * This file contains event constants that may be used as a type ahead reference for listeners.\n */\nconst LAYOUT_LIST = \"layout-list\";\nconst LAYOUT_LIST_COMPLETE = \"layout-list-complete\";\nconst LAYOUT_LIST_ERROR = \"layout-list-error\";\n\nconst LAYOUT_SAVE = \"layout-save\";\nconst LAYOUT_SAVE_COMPLETE = \"layout-save-complete\";\nconst LAYOUT_SAVE_ERROR = \"layout-save-error\";\n\nmodule.exports = {\n LAYOUT_LIST,\n LAYOUT_LIST_COMPLETE,\n LAYOUT_LIST_ERROR,\n LAYOUT_SAVE,\n LAYOUT_SAVE_COMPLETE,\n LAYOUT_SAVE_ERROR,\n};\n","/**\n * Event Constants File\n *\n * This file contains event constants that may be used as a type ahead reference for listeners.\n */\nconst THEME_LIST = \"theme-list\";\nconst THEME_LIST_COMPLETE = \"theme-list-complete\";\nconst THEME_LIST_ERROR = \"theme-list-error\";\n\nconst THEME_SAVE = \"theme-save\";\nconst THEME_SAVE_COMPLETE = \"theme-save-complete\";\nconst THEME_SAVE_ERROR = \"theme-save-error\";\n\nconst THEME_DELETE = \"theme-delete\";\nconst THEME_DELETE_COMPLETE = \"theme-delete-complete\";\nconst THEME_DELETE_ERROR = \"theme-delete-error\";\n\nconst THEME_PUBLISH = \"theme-publish\";\nconst THEME_INSTALL_FROM_REGISTRY = \"theme-install-from-registry\";\nconst THEME_PUBLISH_PREVIEW = \"theme-publish-preview\";\n\nmodule.exports = {\n THEME_LIST,\n THEME_LIST_COMPLETE,\n THEME_LIST_ERROR,\n THEME_SAVE,\n THEME_SAVE_COMPLETE,\n THEME_SAVE_ERROR,\n THEME_DELETE,\n THEME_DELETE_COMPLETE,\n THEME_DELETE_ERROR,\n THEME_PUBLISH,\n THEME_INSTALL_FROM_REGISTRY,\n THEME_PUBLISH_PREVIEW,\n};\n","const DATA_JSON_TO_CSV_FILE = \"data-json-to-csv-file\";\nconst DATA_JSON_TO_CSV_FILE_COMPLETE = \"data-json-to-csv-file-complete\";\nconst DATA_JSON_TO_CSV_FILE_ERROR = \"data-json-to-csv-file-error\";\n\nconst DATA_READ_FROM_FILE = \"data-read-from-file\";\nconst DATA_READ_FROM_FILE_COMPLETE = \"data-read-from-file-complete\";\nconst DATA_READ_FROM_FILE_ERROR = \"data-read-from-file-error\";\n\nconst DATA_SAVE_TO_FILE = \"data-save-to-file\";\nconst DATA_SAVE_TO_FILE_COMPLETE = \"data-save-to-file-complete\";\nconst DATA_SAVE_TO_FILE_ERROR = \"data-save-to-file-error\";\n\nconst DATA_JSON_TO_CSV_STRING = \"data-json-to-csv-string\";\nconst DATA_JSON_TO_CSV_STRING_COMPLETE = \"data-json-to-csv-string-complete\";\nconst DATA_JSON_TO_CSV_STRING_ERROR = \"data-json-to-csv-string-error\";\n\nconst PARSE_XML_STREAM = \"parse-xml-stream\";\nconst PARSE_XML_STREAM_UPDATE = \"parse-xml-stream-update\";\nconst PARSE_XML_STREAM_COMPLETE = \"parse-xml-stream-complete\";\nconst PARSE_XML_STREAM_ERROR = \"parse-xml-stream-error\";\n\nconst PARSE_CSV_STREAM = \"parse-csv-stream\";\nconst PARSE_CSV_STREAM_UPDATE = \"parse-csv-stream-update\";\nconst PARSE_CSV_STREAM_COMPLETE = \"parse-csv-stream-complete\";\nconst PARSE_CSV_STREAM_ERROR = \"parse-csv-stream-error\";\n\nconst READ_LINES = \"read-lines\";\nconst READ_LINES_UPDATE = \"read-lines-update\";\nconst READ_LINES_COMPLETE = \"read-lines-complete\";\nconst READ_LINES_ERROR = \"read-lines-error\";\n\nconst READ_JSON = \"read-json\";\nconst READ_JSON_UPDATE = \"read-json-update\";\nconst READ_JSON_COMPLETE = \"read-json-complete\";\nconst READ_JSON_ERROR = \"read-json-error\";\n\nconst READ_DATA_URL = \"read-data-url\";\nconst READ_DATA_URL_UPDATE = \"read-data-url-update\";\nconst READ_DATA_URL_COMPLETE = \"read-data-url-complete\";\nconst READ_DATA_URL_ERROR = \"read-data-url-error\";\n\nconst TRANSFORM_FILE = \"transform-file\";\nconst TRANSFORM_FILE_UPDATE = \"transform-file-update\";\nconst TRANSFORM_FILE_COMPLETE = \"transform-file-complete\";\nconst TRANSFORM_FILE_ERROR = \"transform-file-error\";\n\nconst EXTRACT_COLORS_FROM_IMAGE = \"extract-colors-from-image\";\nconst EXTRACT_COLORS_FROM_IMAGE_UPDATE = \"extract-colors-from-image-update\";\nconst EXTRACT_COLORS_FROM_IMAGE_COMPLETE = \"extract-colors-from-image-complete\";\nconst EXTRACT_COLORS_FROM_IMAGE_ERROR = \"extract-colors-from-image-error\";\n\nmodule.exports = {\n DATA_JSON_TO_CSV_FILE,\n DATA_JSON_TO_CSV_FILE_COMPLETE,\n DATA_JSON_TO_CSV_FILE_ERROR,\n\n DATA_JSON_TO_CSV_STRING,\n DATA_JSON_TO_CSV_STRING_COMPLETE,\n DATA_JSON_TO_CSV_STRING_ERROR,\n\n DATA_SAVE_TO_FILE,\n DATA_SAVE_TO_FILE_COMPLETE,\n DATA_SAVE_TO_FILE_ERROR,\n\n DATA_READ_FROM_FILE,\n DATA_READ_FROM_FILE_COMPLETE,\n DATA_READ_FROM_FILE_ERROR,\n\n PARSE_XML_STREAM,\n PARSE_XML_STREAM_COMPLETE,\n PARSE_XML_STREAM_UPDATE,\n PARSE_XML_STREAM_ERROR,\n\n PARSE_CSV_STREAM,\n PARSE_CSV_STREAM_COMPLETE,\n PARSE_CSV_STREAM_UPDATE,\n PARSE_CSV_STREAM_ERROR,\n\n READ_LINES,\n READ_LINES_COMPLETE,\n READ_LINES_UPDATE,\n READ_LINES_ERROR,\n\n READ_JSON,\n READ_JSON_COMPLETE,\n READ_JSON_UPDATE,\n READ_JSON_ERROR,\n\n READ_DATA_URL,\n READ_DATA_URL_COMPLETE,\n READ_DATA_URL_UPDATE,\n READ_DATA_URL_ERROR,\n\n TRANSFORM_FILE,\n TRANSFORM_FILE_COMPLETE,\n TRANSFORM_FILE_UPDATE,\n TRANSFORM_FILE_ERROR,\n\n EXTRACT_COLORS_FROM_IMAGE,\n EXTRACT_COLORS_FROM_IMAGE_COMPLETE,\n EXTRACT_COLORS_FROM_IMAGE_UPDATE,\n EXTRACT_COLORS_FROM_IMAGE_ERROR,\n};\n","const SETTINGS_GET = \"settings-get\";\nconst SETTINGS_GET_COMPLETE = \"settings-get-complete\";\nconst SETTINGS_GET_ERROR = \"settings-get-error\";\n\nconst SETTINGS_SAVE = \"settings-save\";\nconst SETTINGS_SAVE_COMPLETE = \"settings-save-complete\";\nconst SETTINGS_SAVE_ERROR = \"settings-save-error\";\n\nconst SETTINGS_GET_DATA_DIR = \"settings-get-data-dir\";\nconst SETTINGS_GET_DATA_DIR_COMPLETE = \"settings-get-data-dir-complete\";\nconst SETTINGS_GET_DATA_DIR_ERROR = \"settings-get-data-dir-error\";\n\nconst SETTINGS_SET_DATA_DIR = \"settings-set-data-dir\";\nconst SETTINGS_SET_DATA_DIR_COMPLETE = \"settings-set-data-dir-complete\";\nconst SETTINGS_SET_DATA_DIR_ERROR = \"settings-set-data-dir-error\";\n\nconst SETTINGS_MIGRATE_DATA_DIR = \"settings-migrate-data-dir\";\nconst SETTINGS_MIGRATE_DATA_DIR_COMPLETE = \"settings-migrate-data-dir-complete\";\nconst SETTINGS_MIGRATE_DATA_DIR_ERROR = \"settings-migrate-data-dir-error\";\n\nmodule.exports = {\n SETTINGS_GET,\n SETTINGS_GET_COMPLETE,\n SETTINGS_GET_ERROR,\n SETTINGS_SAVE,\n SETTINGS_SAVE_COMPLETE,\n SETTINGS_SAVE_ERROR,\n SETTINGS_GET_DATA_DIR,\n SETTINGS_GET_DATA_DIR_COMPLETE,\n SETTINGS_GET_DATA_DIR_ERROR,\n SETTINGS_SET_DATA_DIR,\n SETTINGS_SET_DATA_DIR_COMPLETE,\n SETTINGS_SET_DATA_DIR_ERROR,\n SETTINGS_MIGRATE_DATA_DIR,\n SETTINGS_MIGRATE_DATA_DIR_COMPLETE,\n SETTINGS_MIGRATE_DATA_DIR_ERROR,\n};\n","const CHOOSE_FILE = \"choose-file\";\nconst CHOOSE_FILE_COMPLETE = \"choose-file-complete\";\nconst CHOOSE_FILE_ERROR = \"choose-file-error\";\n\nmodule.exports = {\n CHOOSE_FILE,\n CHOOSE_FILE_COMPLETE,\n CHOOSE_FILE_ERROR,\n};\n","/**\n * Event Constants File - Provider Events\n *\n * This file contains event constants for provider-related IPC communication.\n */\nconst PROVIDER_SAVE = \"provider-save\";\nconst PROVIDER_SAVE_COMPLETE = \"provider-save-complete\";\nconst PROVIDER_SAVE_ERROR = \"provider-save-error\";\n\nconst PROVIDER_LIST = \"provider-list\";\nconst PROVIDER_LIST_COMPLETE = \"provider-list-complete\";\nconst PROVIDER_LIST_ERROR = \"provider-list-error\";\n\nconst PROVIDER_GET = \"provider-get\";\nconst PROVIDER_GET_COMPLETE = \"provider-get-complete\";\nconst PROVIDER_GET_ERROR = \"provider-get-error\";\n\nconst PROVIDER_DELETE = \"provider-delete\";\nconst PROVIDER_DELETE_COMPLETE = \"provider-delete-complete\";\nconst PROVIDER_DELETE_ERROR = \"provider-delete-error\";\n\nmodule.exports = {\n PROVIDER_SAVE,\n PROVIDER_SAVE_COMPLETE,\n PROVIDER_SAVE_ERROR,\n PROVIDER_LIST,\n PROVIDER_LIST_COMPLETE,\n PROVIDER_LIST_ERROR,\n PROVIDER_GET,\n PROVIDER_GET_COMPLETE,\n PROVIDER_GET_ERROR,\n PROVIDER_DELETE,\n PROVIDER_DELETE_COMPLETE,\n PROVIDER_DELETE_ERROR,\n};\n","/**\n * Event Constants File - MCP Events\n *\n * This file contains event constants for MCP (Model Context Protocol)\n * server-related IPC communication.\n */\nconst MCP_START_SERVER = \"mcp-start-server\";\nconst MCP_START_SERVER_COMPLETE = \"mcp-start-server-complete\";\nconst MCP_START_SERVER_ERROR = \"mcp-start-server-error\";\n\nconst MCP_STOP_SERVER = \"mcp-stop-server\";\nconst MCP_STOP_SERVER_COMPLETE = \"mcp-stop-server-complete\";\nconst MCP_STOP_SERVER_ERROR = \"mcp-stop-server-error\";\n\nconst MCP_LIST_TOOLS = \"mcp-list-tools\";\nconst MCP_LIST_TOOLS_COMPLETE = \"mcp-list-tools-complete\";\nconst MCP_LIST_TOOLS_ERROR = \"mcp-list-tools-error\";\n\nconst MCP_CALL_TOOL = \"mcp-call-tool\";\nconst MCP_CALL_TOOL_COMPLETE = \"mcp-call-tool-complete\";\nconst MCP_CALL_TOOL_ERROR = \"mcp-call-tool-error\";\n\nconst MCP_LIST_RESOURCES = \"mcp-list-resources\";\nconst MCP_LIST_RESOURCES_COMPLETE = \"mcp-list-resources-complete\";\nconst MCP_LIST_RESOURCES_ERROR = \"mcp-list-resources-error\";\n\nconst MCP_READ_RESOURCE = \"mcp-read-resource\";\nconst MCP_READ_RESOURCE_COMPLETE = \"mcp-read-resource-complete\";\nconst MCP_READ_RESOURCE_ERROR = \"mcp-read-resource-error\";\n\nconst MCP_SERVER_STATUS = \"mcp-server-status\";\nconst MCP_SERVER_STATUS_COMPLETE = \"mcp-server-status-complete\";\nconst MCP_SERVER_STATUS_ERROR = \"mcp-server-status-error\";\n\nconst MCP_GET_CATALOG = \"mcp-get-catalog\";\nconst MCP_GET_CATALOG_COMPLETE = \"mcp-get-catalog-complete\";\nconst MCP_GET_CATALOG_ERROR = \"mcp-get-catalog-error\";\n\nconst MCP_RUN_AUTH = \"mcp-run-auth\";\nconst MCP_RUN_AUTH_COMPLETE = \"mcp-run-auth-complete\";\nconst MCP_RUN_AUTH_ERROR = \"mcp-run-auth-error\";\n\nmodule.exports = {\n MCP_START_SERVER,\n MCP_START_SERVER_COMPLETE,\n MCP_START_SERVER_ERROR,\n MCP_STOP_SERVER,\n MCP_STOP_SERVER_COMPLETE,\n MCP_STOP_SERVER_ERROR,\n MCP_LIST_TOOLS,\n MCP_LIST_TOOLS_COMPLETE,\n MCP_LIST_TOOLS_ERROR,\n MCP_CALL_TOOL,\n MCP_CALL_TOOL_COMPLETE,\n MCP_CALL_TOOL_ERROR,\n MCP_LIST_RESOURCES,\n MCP_LIST_RESOURCES_COMPLETE,\n MCP_LIST_RESOURCES_ERROR,\n MCP_READ_RESOURCE,\n MCP_READ_RESOURCE_COMPLETE,\n MCP_READ_RESOURCE_ERROR,\n MCP_SERVER_STATUS,\n MCP_SERVER_STATUS_COMPLETE,\n MCP_SERVER_STATUS_ERROR,\n MCP_GET_CATALOG,\n MCP_GET_CATALOG_COMPLETE,\n MCP_GET_CATALOG_ERROR,\n MCP_RUN_AUTH,\n MCP_RUN_AUTH_COMPLETE,\n MCP_RUN_AUTH_ERROR,\n};\n","/**\n * Event Constants File - Registry Events\n *\n * IPC event constants for the widget registry/marketplace system.\n */\nconst REGISTRY_FETCH_INDEX = \"registry:fetch-index\";\nconst REGISTRY_SEARCH = \"registry:search\";\nconst REGISTRY_GET_PACKAGE = \"registry:get-package\";\nconst REGISTRY_CHECK_UPDATES = \"registry:check-updates\";\nconst REGISTRY_SEARCH_DASHBOARDS = \"registry:search-dashboards\";\nconst REGISTRY_SEARCH_THEMES = \"registry:search-themes\";\n\nmodule.exports = {\n REGISTRY_FETCH_INDEX,\n REGISTRY_SEARCH,\n REGISTRY_GET_PACKAGE,\n REGISTRY_CHECK_UPDATES,\n REGISTRY_SEARCH_DASHBOARDS,\n REGISTRY_SEARCH_THEMES,\n};\n","/**\n * Event Constants File\n *\n * This file contains event constants that may be used as a type ahead reference for listeners.\n */\nconst ALGOLIA_LIST_INDICES = \"algolia-list-indices\";\nconst ALGOLIA_LIST_INDICES_COMPLETE = \"algolia-list-indices-complete\";\nconst ALGOLIA_LIST_INDICES_ERROR = \"algolia-list-indices-error\";\n\nconst ALGOLIA_ANALYTICS_FOR_QUERY = \"algolia-analytics-for-query\";\nconst ALGOLIA_ANALYTICS_FOR_QUERY_COMPLETE =\n \"algolia-analytics-for-query-complete\";\nconst ALGOLIA_ANALYTICS_FOR_QUERY_ERROR = \"algolia-analytics-for-query-error\";\n\nconst ALGOLIA_SAVE_OBJECTS = \"algolia-save-objects\";\nconst ALGOLIA_SAVE_OBJECTS_COMPLETE = \"algolia-save-objects-complete\";\nconst ALGOLIA_SAVE_OBJECTS_ERROR = \"algolia-save-objects-error\";\n\nconst ALGOLIA_PARTIAL_UPDATE_OBJECTS = \"algolia-partial-update-objects\";\nconst ALGOLIA_PARTIAL_UPDATE_OBJECTS_COMPLETE =\n \"algolia-partial-update-objects-complete\";\nconst ALGOLIA_PARTIAL_UPDATE_OBJECTS_ERROR =\n \"algolia-partial-update-objects-error\";\nconst ALGOLIA_PARTIAL_UPDATE_OBJECTS_UPDATE =\n \"algolia-partial-update-objects-update\";\n\nconst ALGOLIA_CREATE_BATCH = \"algolia-create-batch\";\nconst ALGOLIA_CREATE_BATCH_COMPLETE = \"algolia-create-batch-complete\";\nconst ALGOLIA_CREATE_BATCH_UPDATE = \"algolia-create-batch-update\";\nconst ALGOLIA_CREATE_BATCH_ERROR = \"algolia-create-batch-error\";\n\nconst ALGOLIA_BROWSE_OBJECTS = \"algolia-browse-objects\";\nconst ALGOLIA_BROWSE_OBJECTS_COMPLETE = \"algolia-browse-objects-complete\";\nconst ALGOLIA_BROWSE_OBJECTS_UPDATE = \"algolia-browse-objects-update\";\nconst ALGOLIA_BROWSE_OBJECTS_ERROR = \"algolia-browse-objects-error\";\n\nconst ALGOLIA_SEARCH = \"algolia-search\";\n\nmodule.exports = {\n ALGOLIA_LIST_INDICES,\n ALGOLIA_LIST_INDICES_COMPLETE,\n ALGOLIA_LIST_INDICES_ERROR,\n ALGOLIA_ANALYTICS_FOR_QUERY,\n ALGOLIA_ANALYTICS_FOR_QUERY_COMPLETE,\n ALGOLIA_ANALYTICS_FOR_QUERY_ERROR,\n ALGOLIA_SAVE_OBJECTS,\n ALGOLIA_SAVE_OBJECTS_COMPLETE,\n ALGOLIA_SAVE_OBJECTS_ERROR,\n ALGOLIA_PARTIAL_UPDATE_OBJECTS,\n ALGOLIA_PARTIAL_UPDATE_OBJECTS_COMPLETE,\n ALGOLIA_PARTIAL_UPDATE_OBJECTS_ERROR,\n ALGOLIA_PARTIAL_UPDATE_OBJECTS_UPDATE,\n ALGOLIA_CREATE_BATCH,\n ALGOLIA_CREATE_BATCH_COMPLETE,\n ALGOLIA_CREATE_BATCH_ERROR,\n ALGOLIA_CREATE_BATCH_UPDATE,\n ALGOLIA_BROWSE_OBJECTS,\n ALGOLIA_BROWSE_OBJECTS_COMPLETE,\n ALGOLIA_BROWSE_OBJECTS_ERROR,\n ALGOLIA_BROWSE_OBJECTS_UPDATE,\n ALGOLIA_SEARCH,\n};\n","const MENU_ITEMS_SAVE = \"menu-items-save\";\nconst MENU_ITEMS_SAVE_COMPLETE = \"menu-items-save-complete\";\nconst MENU_ITEMS_SAVE_ERROR = \"menu-items-save-error\";\n\nconst MENU_ITEMS_LIST = \"menu-items-list\";\nconst MENU_ITEMS_LIST_COMPLETE = \"menu-items-list-complete\";\nconst MENU_ITEMS_LIST_ERROR = \"menu-items-list-error\";\n\nmodule.exports = {\n MENU_ITEMS_LIST,\n MENU_ITEMS_LIST_COMPLETE,\n MENU_ITEMS_LIST_ERROR,\n MENU_ITEMS_SAVE,\n MENU_ITEMS_SAVE_COMPLETE,\n MENU_ITEMS_SAVE_ERROR,\n};\n","const OPENAI_DESCRIBE_IMAGE = \"openai-describe-image\";\nconst OPENAI_DESCRIBE_IMAGE_COMPLETE = \"openai-describe-image-success\";\nconst OPENAI_DESCRIBE_IMAGE_ERROR = \"openai-describe-image-error\";\n\nmodule.exports = {\n OPENAI_DESCRIBE_IMAGE,\n OPENAI_DESCRIBE_IMAGE_COMPLETE,\n OPENAI_DESCRIBE_IMAGE_ERROR,\n};\n","/**\n * Event Constants File - LLM Events\n *\n * This file contains event constants for LLM (Large Language Model)\n * chat IPC communication — streaming, tool-use, and lifecycle.\n */\n\n// --- Renderer → Main (invoke) ---\nconst LLM_SEND_MESSAGE = \"llm-send-message\";\nconst LLM_ABORT_REQUEST = \"llm-abort-request\";\nconst LLM_LIST_CONNECTED_TOOLS = \"llm-list-connected-tools\";\nconst LLM_CHECK_CLI_AVAILABLE = \"llm-check-cli-available\";\nconst LLM_CLEAR_CLI_SESSION = \"llm-clear-cli-session\";\nconst LLM_CLI_SESSION_STATUS = \"llm-cli-session-status\";\nconst LLM_CLI_END_SESSION = \"llm-cli-end-session\";\n\n// --- Main → Renderer (send) ---\nconst LLM_STREAM_DELTA = \"llm-stream-delta\";\nconst LLM_STREAM_TOOL_CALL = \"llm-stream-tool-call\";\nconst LLM_STREAM_TOOL_RESULT = \"llm-stream-tool-result\";\nconst LLM_STREAM_COMPLETE = \"llm-stream-complete\";\nconst LLM_STREAM_ERROR = \"llm-stream-error\";\n\nmodule.exports = {\n LLM_SEND_MESSAGE,\n LLM_ABORT_REQUEST,\n LLM_LIST_CONNECTED_TOOLS,\n LLM_CHECK_CLI_AVAILABLE,\n LLM_CLEAR_CLI_SESSION,\n LLM_STREAM_DELTA,\n LLM_STREAM_TOOL_CALL,\n LLM_STREAM_TOOL_RESULT,\n LLM_STREAM_COMPLETE,\n LLM_STREAM_ERROR,\n LLM_CLI_SESSION_STATUS,\n LLM_CLI_END_SESSION,\n};\n","/**\n * Event Constants File - Client Cache Events\n *\n * This file contains event constants for client cache management IPC communication.\n */\nconst CLIENT_CACHE_INVALIDATE = \"client-cache-invalidate\";\nconst CLIENT_CACHE_INVALIDATE_ALL = \"client-cache-invalidate-all\";\nconst RESPONSE_CACHE_CLEAR = \"response-cache-clear\";\nconst RESPONSE_CACHE_STATS = \"response-cache-stats\";\n\nmodule.exports = {\n CLIENT_CACHE_INVALIDATE,\n CLIENT_CACHE_INVALIDATE_ALL,\n RESPONSE_CACHE_CLEAR,\n RESPONSE_CACHE_STATS,\n};\n","/**\n * Dashboard Config Events\n *\n * IPC event constants for dashboard configuration export/import.\n */\nconst DASHBOARD_CONFIG_EXPORT = \"dashboard-config-export\";\nconst DASHBOARD_CONFIG_IMPORT = \"dashboard-config-import\";\nconst DASHBOARD_CONFIG_INSTALL = \"dashboard-config-install\";\nconst DASHBOARD_CONFIG_COMPATIBILITY = \"dashboard-config-compatibility\";\nconst DASHBOARD_CONFIG_PUBLISH = \"dashboard-config-publish\";\nconst DASHBOARD_CONFIG_PREVIEW = \"dashboard-config-preview\";\nconst DASHBOARD_CONFIG_CHECK_UPDATES = \"dashboard-config-check-updates\";\nconst DASHBOARD_CONFIG_PROVIDER_SETUP = \"dashboard-config-provider-setup\";\nconst DASHBOARD_CONFIG_PUBLISH_PREVIEW = \"dashboard-config-publish-preview\";\nconst DASHBOARD_CONFIG_SELECT_FILE = \"dashboard-config-select-file\";\n\nmodule.exports = {\n DASHBOARD_CONFIG_EXPORT,\n DASHBOARD_CONFIG_IMPORT,\n DASHBOARD_CONFIG_INSTALL,\n DASHBOARD_CONFIG_COMPATIBILITY,\n DASHBOARD_CONFIG_PUBLISH,\n DASHBOARD_CONFIG_PREVIEW,\n DASHBOARD_CONFIG_CHECK_UPDATES,\n DASHBOARD_CONFIG_PROVIDER_SETUP,\n DASHBOARD_CONFIG_PUBLISH_PREVIEW,\n DASHBOARD_CONFIG_SELECT_FILE,\n};\n","/**\n * Dashboard Ratings Events\n *\n * IPC event constants for dashboard ratings CRUD.\n */\nconst DASHBOARD_RATING_SAVE = \"dashboard-rating-save\";\nconst DASHBOARD_RATING_GET = \"dashboard-rating-get\";\nconst DASHBOARD_RATING_LIST = \"dashboard-rating-list\";\nconst DASHBOARD_RATING_DELETE = \"dashboard-rating-delete\";\n\nmodule.exports = {\n DASHBOARD_RATING_SAVE,\n DASHBOARD_RATING_GET,\n DASHBOARD_RATING_LIST,\n DASHBOARD_RATING_DELETE,\n};\n","/**\n * Event Constants — Registry Auth Events\n *\n * IPC event constants for registry authentication (device code flow).\n */\nconst REGISTRY_AUTH_INITIATE_LOGIN = \"registry-auth:initiate-login\";\nconst REGISTRY_AUTH_POLL_TOKEN = \"registry-auth:poll-token\";\nconst REGISTRY_AUTH_GET_STATUS = \"registry-auth:get-status\";\nconst REGISTRY_AUTH_GET_PROFILE = \"registry-auth:get-profile\";\nconst REGISTRY_AUTH_LOGOUT = \"registry-auth:logout\";\nconst REGISTRY_AUTH_PUBLISH = \"registry-auth:publish\";\nconst REGISTRY_AUTH_UPDATE_PROFILE = \"registry-auth:update-profile\";\nconst REGISTRY_AUTH_GET_PACKAGES = \"registry-auth:get-packages\";\nconst REGISTRY_AUTH_UPDATE_PACKAGE = \"registry-auth:update-package\";\nconst REGISTRY_AUTH_DELETE_PACKAGE = \"registry-auth:delete-package\";\n\nmodule.exports = {\n REGISTRY_AUTH_INITIATE_LOGIN,\n REGISTRY_AUTH_POLL_TOKEN,\n REGISTRY_AUTH_GET_STATUS,\n REGISTRY_AUTH_GET_PROFILE,\n REGISTRY_AUTH_LOGOUT,\n REGISTRY_AUTH_PUBLISH,\n REGISTRY_AUTH_UPDATE_PROFILE,\n REGISTRY_AUTH_GET_PACKAGES,\n REGISTRY_AUTH_UPDATE_PACKAGE,\n REGISTRY_AUTH_DELETE_PACKAGE,\n};\n","/**\n * Event Constants — Session Events\n *\n * IPC event constants for session management (recents + session restore).\n */\nconst SESSION_GET_RECENTS = \"session:get-recents\";\nconst SESSION_ADD_RECENT = \"session:add-recent\";\nconst SESSION_REMOVE_RECENT = \"session:remove-recent\";\nconst SESSION_CLEAR_RECENTS = \"session:clear-recents\";\nconst SESSION_GET_STATE = \"session:get-state\";\nconst SESSION_SAVE_STATE = \"session:save-state\";\nconst SESSION_CLEAR_STATE = \"session:clear-state\";\n\nmodule.exports = {\n SESSION_GET_RECENTS,\n SESSION_ADD_RECENT,\n SESSION_REMOVE_RECENT,\n SESSION_CLEAR_RECENTS,\n SESSION_GET_STATE,\n SESSION_SAVE_STATE,\n SESSION_CLEAR_STATE,\n};\n","/**\n * Event Constants File - Notification Events\n *\n * IPC channel constants for the notification system.\n */\nconst NOTIFICATION_SEND = \"notification-send\";\nconst NOTIFICATION_SEND_COMPLETE = \"notification-send-complete\";\nconst NOTIFICATION_SEND_ERROR = \"notification-send-error\";\n\nconst NOTIFICATION_GET_PREFERENCES = \"notification-get-preferences\";\nconst NOTIFICATION_GET_PREFERENCES_COMPLETE =\n \"notification-get-preferences-complete\";\nconst NOTIFICATION_GET_PREFERENCES_ERROR = \"notification-get-preferences-error\";\n\nconst NOTIFICATION_SET_PREFERENCES = \"notification-set-preferences\";\nconst NOTIFICATION_SET_PREFERENCES_COMPLETE =\n \"notification-set-preferences-complete\";\nconst NOTIFICATION_SET_PREFERENCES_ERROR = \"notification-set-preferences-error\";\n\nconst NOTIFICATION_SET_GLOBAL = \"notification-set-global\";\nconst NOTIFICATION_SET_GLOBAL_COMPLETE = \"notification-set-global-complete\";\nconst NOTIFICATION_SET_GLOBAL_ERROR = \"notification-set-global-error\";\n\nconst NOTIFICATION_CLICKED = \"notification:clicked\";\n\nmodule.exports = {\n NOTIFICATION_SEND,\n NOTIFICATION_SEND_COMPLETE,\n NOTIFICATION_SEND_ERROR,\n NOTIFICATION_GET_PREFERENCES,\n NOTIFICATION_GET_PREFERENCES_COMPLETE,\n NOTIFICATION_GET_PREFERENCES_ERROR,\n NOTIFICATION_SET_PREFERENCES,\n NOTIFICATION_SET_PREFERENCES_COMPLETE,\n NOTIFICATION_SET_PREFERENCES_ERROR,\n NOTIFICATION_SET_GLOBAL,\n NOTIFICATION_SET_GLOBAL_COMPLETE,\n NOTIFICATION_SET_GLOBAL_ERROR,\n NOTIFICATION_CLICKED,\n};\n","/**\n * Events\n *\n * All event constants used by the framework.\n */\nconst secureStorageEvents = require(\"./secureStorageEvents\");\nconst workspaceEvents = require(\"./workspaceEvents\");\nconst layoutEvents = require(\"./layoutEvents\");\nconst themeEvents = require(\"./themeEvents\");\nconst dataEvents = require(\"./dataEvents\");\nconst settingsEvents = require(\"./settingsEvents\");\nconst dialogEvents = require(\"./dialogEvents\");\nconst providerEvents = require(\"./providerEvents\");\nconst mcpEvents = require(\"./mcpEvents\");\nconst registryEvents = require(\"./registryEvents\");\nconst algoliaEvents = require(\"./algoliaEvents\");\nconst menuItemEvents = require(\"./menuItemEvents\");\nconst openaiEvents = require(\"./openaiEvents\");\nconst llmEvents = require(\"./llmEvents\");\nconst clientCacheEvents = require(\"./clientCacheEvents\");\nconst dashboardConfigEvents = require(\"./dashboardConfigEvents\");\nconst dashboardRatingsEvents = require(\"./dashboardRatingsEvents\");\nconst registryAuthEvents = require(\"./registryAuthEvents\");\nconst sessionEvents = require(\"./sessionEvents\");\nconst notificationEvents = require(\"./notificationEvents\");\n\nconst publicEvents = {\n ...dataEvents,\n};\n\nmodule.exports = {\n public: publicEvents,\n ...secureStorageEvents,\n ...workspaceEvents,\n ...layoutEvents,\n ...themeEvents,\n ...dataEvents,\n ...settingsEvents,\n ...dialogEvents,\n ...providerEvents,\n ...mcpEvents,\n ...registryEvents,\n ...algoliaEvents,\n ...menuItemEvents,\n ...openaiEvents,\n ...llmEvents,\n ...clientCacheEvents,\n ...dashboardConfigEvents,\n ...dashboardRatingsEvents,\n ...registryAuthEvents,\n ...sessionEvents,\n ...notificationEvents,\n};\n","/**\n * dialogController.js\n *\n * Open a dialog window for choosing files\n */\nconst { dialog } = require(\"electron\");\nconst events = require(\"../events\");\n\nconst showDialog = async (win, message, allowFile, extensions = [\"*\"]) => {\n const properties =\n allowFile === true ? [\"openFile\"] : [\"openDirectory\", \"createDirectory\"];\n const filters = allowFile === true ? [{ name: \"Data\", extensions }] : [];\n const result = await dialog.showOpenDialog({ properties, filters });\n if (result.canceled || !result.filePaths[0]) return null;\n return result.filePaths[0];\n};\n\nconst fileChosenError = (win, message) => {\n win.webContents.send(events.CHOOSE_FILE_ERROR, message);\n};\n\nmodule.exports = {\n showDialog,\n fileChosenError,\n};\n","/**\n * secureStore\n */\nconst { safeStorage } = require(\"electron\");\nconst Store = require(\"electron-store\");\nconst events = require(\"../events\");\n\nconst schema = {\n appId: {\n type: \"string\",\n },\n apiKey: {\n type: \"string\",\n },\n};\n\nconst isEncryptionAvailable = (win) => {\n const result = safeStorage.isEncryptionAvailable();\n win.webContents.send(events.SECURE_STORE_ENCRYPTION_CHECK_COMPLETE, result);\n};\n\nconst encryptString = (win, str) => {\n const result = safeStorage.encryptString(str);\n win.webContents.send(\"secure-storage-encrypt-string-complete\", result);\n};\n\nconst decryptString = (win, str) => {\n const result = safeStorage.decryptString(str);\n win.webContents.send(\"secure-storage-decrypt-string-complete\", result);\n};\n\nconst saveData = (key, value) => {\n try {\n const store = new Store({ schema });\n store.set(key, value);\n return getData(key);\n } catch (e) {\n return { data: null };\n }\n};\n\nconst getData = (key) => {\n try {\n const store = new Store({ schema });\n const value = store.get(key);\n if (value) {\n return { [key]: value };\n } else {\n return null;\n }\n } catch (e) {\n return null;\n }\n};\n\nmodule.exports = {\n isEncryptionAvailable,\n encryptString,\n decryptString,\n saveData,\n getData,\n};\n","const path = require(\"path\");\nconst {\n readFileSync,\n writeFileSync,\n existsSync,\n mkdirSync,\n openSync,\n closeSync,\n readdir,\n unlink,\n unlinkSync,\n readdirSync,\n lstatSync,\n} = require(\"fs\");\n\nfunction ensureDirectoryExistence(filePath) {\n try {\n // isDirectory\n var dirname = path.dirname(filePath);\n // check if the directory exists...return true\n // if not, we can pass in the dirname as the filepath\n // and check each directory recursively.\n if (existsSync(dirname)) {\n return true;\n }\n // recursion...\n ensureDirectoryExistence(dirname);\n mkdirSync(dirname);\n } catch (e) {\n console.log(\"ensure directory \" + e.message);\n }\n}\n\nfunction checkDirectory(dir) {\n try {\n if (existsSync(dir) === false) {\n console.log(\"filepath doesnt exist\", dir);\n mkdirSync(dir);\n }\n } catch (e) {\n throw e;\n }\n}\n\n// function ensureFileExistence(filePath) {\n// try {\n// var dirname = path.dirname(filePath);\n// if (existsSync(dirname)) {\n// return true;\n// }\n// ensureDirectoryExistence(dirname);\n\n// mkdirSync(dirname);\n// } catch (e) {\n// console.log(e.message);\n// }\n// }\n\n/**\n * getFileContents\n *\n * Will attempt to get the file contents\n * and will generate directory and file if this does not exist.\n *\n * Handles corrupted/empty JSON files by reinitializing with defaults.\n *\n * @param {string} filepath path to the file\n * @returns\n */\nfunction getFileContents(filepath, defaultReturn = []) {\n try {\n // lets first make sure all is there...\n ensureDirectoryExistence(filepath);\n\n // and now lets read the file...\n let fileContents = JSON.stringify(defaultReturn);\n let fileContentsArray = defaultReturn;\n if (existsSync(filepath)) {\n fileContents = readFileSync(filepath, \"utf8\");\n\n try {\n fileContentsArray =\n filepath.substring(filepath.length - 4) === \"json\"\n ? JSON.parse(fileContents)\n : fileContents;\n } catch (parseError) {\n // File exists but is empty or corrupted JSON\n console.warn(\n `[File] Corrupted JSON file: ${filepath}, reinitializing with defaults`,\n );\n console.warn(`[File] Parse error: ${parseError.message}`);\n\n // Reinitialize with default content\n fileContentsArray = defaultReturn;\n writeFileSync(filepath, JSON.stringify(defaultReturn, null, 2));\n console.log(`[File] Successfully reinitialized: ${filepath}`);\n }\n } else {\n // we should make the file with default content\n closeSync(openSync(filepath, \"w\"));\n writeFileSync(filepath, JSON.stringify(defaultReturn, null, 2));\n }\n\n return fileContentsArray;\n } catch (e) {\n console.log(e);\n return defaultReturn;\n }\n}\n\nfunction writeToFile(filename, data) {\n try {\n // write the new pages configuration back to the file\n return writeFileSync(filename, data);\n } catch (e) {\n return false;\n }\n}\n\n/**\n *\n * @param {string} directory\n * @returns\n */\nfunction removeFilesFromDirectory(directory, excludeFiles = []) {\n return (\n directory !== \"\" &&\n directory &&\n readdir(directory, (err, files) => {\n if (err) throw err;\n\n for (const file of files) {\n if (!excludeFiles.includes(file)) {\n unlinkSync(path.join(directory, file), (err) => {\n if (err) throw err;\n });\n }\n }\n })\n );\n}\n\nmodule.exports = {\n ensureDirectoryExistence,\n getFileContents,\n writeToFile,\n removeFilesFromDirectory,\n checkDirectory,\n};\n","const { app } = require(\"electron\");\nconst path = require(\"path\");\nconst { writeFileSync } = require(\"fs\");\nconst events = require(\"../events\");\nconst { getFileContents } = require(\"../utils/file\");\n\nconst configFilename = \"workspaces.json\";\nconst appName = \"Dashboard\";\n\nconst workspaceController = {\n /**\n * createWorkspace\n *\n * Use a simple scaffold to create the Page skeleton for the user\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id from Algolia\n * @param {object} page the page configuration file\n */\n /*\n \"id\": \"<page-id-here>\",\n \"package\":\"\",\n \"repository\":\"\",\n \"author\": \"<user-name>\",\n \"version\": \"1\",\n \"displayName\": \"<page-display-name>\",\n \"indexName\": \"<algolia-index-name>\",\n \"date_created\": \"\",\n \"date_edited\": \"\",\n \"administration\": {\n \"context\": false,\n \"searchBox\": true,\n \"query\": false\n },\n \"layout\": {}\n }\n */\n\n /**\n * saveWorkspace\n * Create a workspace from a json configuration object (no template)\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {object} pageObject the page config object\n */\n saveWorkspaceForApplication: (win, appId, workspaceObject) => {\n try {\n // filename to the pages file (live pages)\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const workspacesArray = getFileContents(filename);\n\n // lets check to see if we already have this one!\n let indexOfExistingItem = null;\n workspacesArray.forEach((element, index) => {\n if (element[\"id\"] === workspaceObject[\"id\"]) {\n indexOfExistingItem = index;\n }\n });\n\n // replace item if we have an id already matching our input object\n if (indexOfExistingItem !== null) {\n // update the existing workspace item\n workspacesArray[indexOfExistingItem] = workspaceObject;\n } else {\n // add the pageObject to the pages file\n workspacesArray.push(workspaceObject);\n }\n\n // write the new pages configuration back to the file\n writeFileSync(filename, JSON.stringify(workspacesArray, null, 2));\n\n console.log(\"[workspaceController] Workspace saved successfully\");\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n workspaces: workspacesArray,\n success: true,\n };\n } catch (e) {\n console.error(\"[workspaceController] Error saving workspace:\", e);\n // Return error object with empty workspaces array\n return {\n error: true,\n message: e.message,\n workspaces: [],\n };\n }\n },\n\n saveMenuItemsForApplication: (win, appId, menuItems) => {\n try {\n // filename to the workspaces file\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const workspacesArray = getFileContents(filename);\n\n // Update menu items for workspaces\n // This assumes menuItems is an object with workspace IDs as keys\n // and updates the menuId property for each workspace\n if (menuItems && typeof menuItems === \"object\") {\n workspacesArray.forEach((workspace, index) => {\n if (menuItems[workspace.id]) {\n workspacesArray[index].menuId = menuItems[workspace.id];\n }\n });\n }\n\n // write the updated workspaces configuration back to the file\n writeFileSync(filename, JSON.stringify(workspacesArray, null, 2));\n\n console.log(\"[workspaceController] Menu items saved successfully\");\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n workspaces: workspacesArray,\n success: true,\n };\n } catch (e) {\n console.error(\"[workspaceController] Error saving menu items:\", e);\n // Return error object with empty workspaces array\n return {\n error: true,\n message: e.message,\n workspaces: [],\n };\n }\n },\n\n /**\n * loadPagesForApplication\n * Load the pages for the application <userdata>/appId/pages.json\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id from Algolia\n */\n deleteWorkspaceForApplication: (win, appId, workspaceId) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const workspacesArray = getFileContents(filename);\n\n const filtered = workspacesArray.filter(\n (workspace) => workspace.id !== workspaceId,\n );\n\n writeFileSync(filename, JSON.stringify(filtered, null, 2));\n\n console.log(\n `[workspaceController] Workspace ${workspaceId} deleted successfully`,\n );\n\n return {\n workspaces: filtered,\n success: true,\n };\n } catch (e) {\n console.error(\"[workspaceController] Error deleting workspace:\", e);\n return {\n error: true,\n message: e.message,\n workspaces: [],\n };\n }\n },\n\n listWorkspacesForApplication: (win, appId) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n\n const workspacesArray = getFileContents(filename);\n console.log(\n `[workspaceController] Loaded ${workspacesArray.length} workspaces for appId: ${appId}`,\n );\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n workspaces: workspacesArray,\n };\n } catch (e) {\n console.error(\"[workspaceController] Error listing workspaces:\", e);\n // Return error object with empty workspaces array\n return {\n error: true,\n message: e.message,\n workspaces: [],\n };\n }\n },\n\n listMenuItemsForApplication: (win, appId) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const workspacesArray = getFileContents(filename);\n\n // Extract unique menu items from workspaces\n // Each workspace can have a menuId, we need to build the menu items list\n const menuItemsMap = new Map();\n\n workspacesArray.forEach((workspace) => {\n if (workspace.menuId) {\n if (!menuItemsMap.has(workspace.menuId)) {\n menuItemsMap.set(workspace.menuId, {\n id: workspace.menuId,\n name: workspace.name || `Menu Item ${workspace.menuId}`,\n // Add other menu item properties as needed\n });\n }\n }\n });\n\n const menuItemsArray = Array.from(menuItemsMap.values());\n\n // Return the menu items data for ipcMain.handle()\n return {\n menuItems: menuItemsArray,\n };\n } catch (e) {\n console.error(\"[workspaceController] Error listing menu items:\", e);\n // Return error object with empty menu items array\n return {\n error: true,\n message: e.message,\n menuItems: [],\n };\n }\n },\n};\n\nmodule.exports = workspaceController;\n","const { app } = require(\"electron\");\nconst path = require(\"path\");\nconst { writeFileSync } = require(\"fs\");\nconst events = require(\"../events\");\nconst { getFileContents } = require(\"../utils/file\");\n\nconst configFilename = \"themes.json\";\nconst appName = \"Dashboard\";\n\nconst themeController = {\n /**\n * saveTheme\n * Create a new Theme that can be used in the application\n * (can have several themes per application)\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {object} themeObject the theme object\n */\n saveThemeForApplication: (win, appId, name, obj) => {\n try {\n // filename to the pages file (live pages)\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const data = getFileContents(filename, {});\n\n // Add/update the theme based on the name\n if (name in data === false) {\n data[name] = {};\n }\n\n data[name] = obj;\n\n // write the new pages configuration back to the file\n writeFileSync(filename, JSON.stringify(data, null, 2));\n\n console.log(\"[themeController] Theme saved successfully\");\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n themes: data,\n key: name,\n theme: obj,\n success: true,\n };\n } catch (e) {\n console.error(\"[themeController] Error saving theme:\", e);\n // Return error object\n return {\n error: true,\n message: e.message,\n themes: {},\n };\n }\n },\n\n /**\n * listThemesForApplication\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id from Algolia\n */\n listThemesForApplication: (win, appId) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n\n const data = getFileContents(filename, {});\n\n console.log(\n \"[themeController] Loading themes from:\",\n filename,\n \"Found:\",\n Object.keys(data).length,\n \"themes\",\n );\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n themes: data,\n };\n } catch (e) {\n console.error(\"[themeController] Error loading themes:\", e);\n // Return error object with empty themes\n return {\n error: true,\n message: e.message,\n themes: {},\n };\n }\n },\n\n /**\n * deleteThemeForApplication\n * Delete a theme from the application's theme configuration\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {string} themeKey the key of the theme to delete\n */\n deleteThemeForApplication: (win, appId, themeKey) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const data = getFileContents(filename, {});\n\n if (themeKey in data) {\n delete data[themeKey];\n writeFileSync(filename, JSON.stringify(data, null, 2));\n }\n\n console.log(\"[themeController] Theme deleted successfully:\", themeKey);\n\n return {\n themes: data,\n success: true,\n };\n } catch (e) {\n console.error(\"[themeController] Error deleting theme:\", e);\n return {\n error: true,\n message: e.message,\n themes: {},\n };\n }\n },\n};\n\nmodule.exports = themeController;\n","/**\n * Utils/tranaform\n * Main gial is to transform a file of data into another form (CSV -> Json for example)\n *\n * - XML -> JSON\n * - CSV -> JSON\n */\n\nvar fs = require(\"fs\");\nvar readline = require(\"readline\");\nconst xtreamer = require(\"xtreamer\");\nvar xmlParser = require(\"xml2js\");\nvar JSONStream = require(\"JSONStream\");\nconst stream = require(\"stream\");\nvar csv = require(\"csv-parser\");\nconst path = require(\"path\");\nconst { app } = require(\"electron\");\nconst { ensureDirectoryExistence } = require(\"./file\");\n\nconst TRANSFORM_APP_NAME = \"Dashboard\";\nconst MAX_MAPPING_BODY_SIZE = 10240; // 10KB limit for mapping function body\n\n/**\n * XtreamerClientTransform\n * Custom Transform stream to parse the JSON from the XML to String operation\n */\nclass XtreamerClientTransform extends stream.Transform {\n _transform(value, encoding, callback) {\n this.push(JSON.parse(value));\n callback();\n }\n}\n\nclass Transform {\n constructor() {\n console.log(\"constructor\");\n }\n\n /**\n * readLinesFromFile\n *\n * If this is a json file we should check in and remove the newLines, and then\n * add commas between records potentially...\n * @param {*} win\n * @param {*} filepath\n * @param {*} linesCount\n * @param {*} callbackEvent\n * @returns\n */\n readLinesFromFile = (\n win,\n filepath,\n linesCount = 100,\n callbackEvent = null,\n ) => {\n return new Promise((resolve, reject) => {\n try {\n let count = 0;\n let lines = [];\n\n // can we aggregate potentially?\n let lineObject = [];\n\n const readInterface = readline.createInterface({\n input: fs.createReadStream(filepath),\n output: process.stdout,\n console: false,\n });\n\n readInterface.on(\"line\", function (line) {\n if (count < linesCount) {\n //console.log(line);\n lines.push(line);\n count++;\n if (callbackEvent !== null) {\n win.webContents.send(callbackEvent, {\n line,\n });\n }\n } else {\n readInterface.close();\n resolve(lines);\n }\n });\n } catch (e) {\n reject(e);\n }\n });\n };\n\n readJSONFromFile = (\n win,\n file = \"\",\n objectCount = 10,\n callbackEvent = null,\n ) => {\n return new Promise((resolve, reject) => {\n try {\n const parser = JSONStream.parse(\"*\");\n const readStream = fs.createReadStream(file).pipe(parser);\n\n let count = 0;\n\n readStream.on(\"data\", (data) => {\n //console.log(data);\n if (callbackEvent !== null) {\n win.webContents.send(callbackEvent, {\n data: JSON.stringify(data),\n });\n }\n if (objectCount !== null && count < objectCount) {\n readStream.destroy();\n resolve(\"complete\");\n }\n count++;\n });\n\n readStream.on(\"error\", (e) => {\n reject(e);\n });\n\n readStream.on(\"end\", (data) => {\n resolve(\"Complete\");\n });\n } catch (e) {\n console.log(\"read json error \", e);\n reject(e);\n }\n });\n };\n\n async parseXMLString(data) {\n let xmlText = data.toString().replace(\"\\ufeff\", \"\");\n return new Promise((resolve, reject) => {\n xmlParser\n .parseStringPromise(xmlText, {\n trim: true,\n compact: true,\n ignoreComment: true,\n ignoreDoctype: true,\n })\n .then((data) => {\n // resolve with the comma\n resolve(JSON.stringify(data) + \",\");\n })\n .catch((e) => reject(e));\n });\n }\n\n parseXMLStream = (filepath, outpath, start) => {\n return new Promise((resolve, reject) => {\n try {\n const xmlFileReadStream = fs.createReadStream(filepath);\n\n xmlFileReadStream.on(\"end\", () => {\n writeStream.write(\"\\n]\");\n resolve(\"Read End\");\n });\n\n xmlFileReadStream.on(\"finished\", () => {\n resolve(\"Read Finish\");\n });\n\n const writeStream = fs.createWriteStream(outpath);\n writeStream.write(\"[\\n\");\n\n const options = {\n headers: { Accept: \"application/xml\" },\n resolveWithFullResponse: true,\n json: false,\n simple: false,\n max_xml_size: 50000000, // 10000000\n };\n\n const xtreamerTransform = xtreamer(\n start,\n {\n transformer: this.parseXMLString, // returns Promise\n max_xml_size: 50000000,\n },\n options,\n ).on(\"error\", (e) => {\n console.log(e);\n reject(e);\n });\n\n xmlFileReadStream\n .pipe(xtreamerTransform)\n .pipe(new XtreamerClientTransform())\n .pipe(writeStream)\n .on(\"end\", () => {\n console.log(\"ended\");\n })\n .on(\"finish\", () => {\n console.log(\"finished pipe\");\n });\n } catch (e) {\n console.log(e);\n reject(e);\n }\n });\n };\n\n parseCSVStream = (\n filepath,\n outpath,\n delimiter = \",\",\n objectIdKey = null,\n headers = null, // optional array of headings to grab\n win = null,\n callbackEvent = null,\n limit = null,\n ) => {\n return new Promise((resolve, reject) => {\n try {\n const readStream = fs\n .createReadStream(filepath)\n .pipe(csv({ separator: delimiter }));\n const writeStream = fs.createWriteStream(outpath);\n\n let canParse = true;\n\n // separators for JSON\n let sep = \"\";\n let count = 0;\n writeStream.write(\"[\\n\");\n\n readStream.on(\"data\", (item) => {\n if (count > 0) {\n sep = \",\\n\";\n }\n // if we have specified a limit...\n if (limit !== null && limit <= count) {\n canParse = false;\n writeStream.write(\"]\");\n readStream.destroy();\n resolve(\"Complete\");\n }\n if (canParse === true) {\n item[\"objectID\"] = item[objectIdKey];\n writeStream.write(sep + JSON.stringify(item));\n count++;\n\n if (win !== null) {\n //console.log(\"have win\", count, callbackEvent);\n win.webContents.send(callbackEvent, {\n count,\n });\n }\n }\n });\n\n readStream.on(\"end\", () => {\n writeStream.write(\"]\");\n readStream.destroy();\n resolve(\"Complete\");\n });\n } catch (e) {\n reject(e);\n }\n });\n };\n\n /**\n * transformFileToFile\n * We want to convert a format from a file into a different format\n * based on the mapper we have provided\n *\n * @param {*} win\n * @param {*} filepath\n * @param {*} outFilepath\n * @param {*} mapping\n */\n transformFileToFile = (\n win,\n filepath,\n outFilepath,\n mappingFunctionBody,\n args = [\"refObj\", \"index\"],\n callbackEvent = null,\n ) => {\n return new Promise((resolve, reject) => {\n // Validate mappingFunctionBody is a non-empty string\n if (\n typeof mappingFunctionBody !== \"string\" ||\n !mappingFunctionBody.trim()\n ) {\n return reject(\n new Error(\"mappingFunctionBody must be a non-empty string\"),\n );\n }\n\n // Enforce size limit on mapping function body\n if (mappingFunctionBody.length > MAX_MAPPING_BODY_SIZE) {\n return reject(\n new Error(\n \"mappingFunctionBody exceeds maximum size of \" +\n MAX_MAPPING_BODY_SIZE +\n \" bytes\",\n ),\n );\n }\n\n // Validate file paths are within app data directory\n const appDataDir = path.join(app.getPath(\"userData\"), TRANSFORM_APP_NAME);\n const resolvedFilepath = path.resolve(filepath);\n const resolvedOutFilepath = path.resolve(outFilepath);\n\n if (!resolvedFilepath.startsWith(appDataDir + path.sep)) {\n return reject(\n new Error(\n \"Input file path must be within the application data directory\",\n ),\n );\n }\n if (!resolvedOutFilepath.startsWith(appDataDir + path.sep)) {\n return reject(\n new Error(\n \"Output file path must be within the application data directory\",\n ),\n );\n }\n\n // JSON parser\n var parser = JSONStream.parse(\"*\");\n\n if (fs.existsSync(resolvedFilepath)) {\n console.log(\"file exists \", resolvedFilepath);\n // create the readStream to parse the large file (json)\n var readStream = fs.createReadStream(resolvedFilepath).pipe(parser);\n\n ensureDirectoryExistence(resolvedOutFilepath);\n\n var writeStream = fs.createWriteStream(resolvedOutFilepath);\n\n let sep = \"\";\n let count = 0;\n\n // create our mapping function\n const fn = new Function(args, mappingFunctionBody);\n\n // begin the write stream\n writeStream.write(\"[\\n\");\n\n readStream.on(\"data\", (data) => {\n try {\n //console.log(\"in stream\", count, data);\n // data in this case is the JSON object...\n if (count > 0) {\n sep = \",\\n\";\n }\n\n if (data) {\n // transform the data here...\n const newValue = fn(data, count);\n\n writeStream.write(sep + JSON.stringify(newValue));\n\n if (callbackEvent !== null && win !== null) {\n win.webContents.send(callbackEvent, {\n count,\n });\n }\n\n // increment the counter\n count++;\n }\n } catch (e) {\n console.log(e.message);\n }\n });\n\n readStream.on(\"end\", (data) => {\n writeStream.write(\"\\n]\");\n writeStream.close();\n resolve(\"Complete: wrote \" + count + \" objects\");\n });\n\n readStream.on(\"error\", (err) => {\n console.log(\"read stream error transform \", err.message);\n reject(err);\n });\n } else {\n reject(new Error(\"File doesnt exist\"));\n }\n });\n };\n\n /**\n * sanitizeLine (line of file)\n * @param {String} line JSON data that we wish to sanitize\n * @returns String the sanitized String\n */\n sanitizeLine = (line) => {\n try {\n let newLine = line;\n\n if (line.slice(-1) === \",\") {\n newLine = newLine.slice(0, -1);\n }\n\n if (line.slice(0, 1) === \"[\") {\n newLine = newLine.slice(1);\n }\n\n return newLine;\n } catch (e) {\n return line;\n }\n };\n}\n\nmodule.exports = Transform;\n","/*\n\n+-----------------------------------------------------------------+\n| Created by Chirag Mehta - http://chir.ag/projects/ntc |\n|-----------------------------------------------------------------|\n| ntc js (Name that Color JavaScript) |\n+-----------------------------------------------------------------+\n\nAll the functions, code, lists etc. have been written specifically\nfor the Name that Color JavaScript by Chirag Mehta unless otherwise\nspecified.\n\nThis script is released under the: Creative Commons License:\nAttribution 2.5 http://creativecommons.org/licenses/by/2.5/\n\nSample Usage:\n\n <script type=\"text/javascript\" src=\"ntc.js\"></script>\n\n <script type=\"text/javascript\">\n\n var n_match = ntc.name(\"#6195ED\");\n n_rgb = n_match[0]; // This is the RGB value of the closest matching color\n n_name = n_match[1]; // This is the text string for the name of the match\n n_exactmatch = n_match[2]; // True if exact color match, False if close-match\n\n alert(n_match);\n\n </script>\n\n*/\n\nclass ntc {\n constructor() {\n var color, rgb, hsl;\n for (var i = 0; i < this.names.length; i++) {\n color = \"#\" + this.names[i][0];\n rgb = this.rgb(color);\n hsl = this.hsl(color);\n this.names[i].push(rgb[0], rgb[1], rgb[2], hsl[0], hsl[1], hsl[2]);\n }\n }\n\n name = function (color) {\n color = color.toUpperCase();\n if (color.length < 3 || color.length > 7)\n return [\"#000000\", \"Invalid Color: \" + color, false];\n if (color.length % 3 == 0) color = \"#\" + color;\n if (color.length == 4)\n color =\n \"#\" +\n color.substr(1, 1) +\n color.substr(1, 1) +\n color.substr(2, 1) +\n color.substr(2, 1) +\n color.substr(3, 1) +\n color.substr(3, 1);\n\n var rgb = this.rgb(color);\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2];\n var hsl = this.hsl(color);\n var h = hsl[0],\n s = hsl[1],\n l = hsl[2];\n var ndf1 = 0;\n var ndf2 = 0;\n var ndf = 0;\n var cl = -1,\n df = -1;\n\n for (var i = 0; i < this.names.length; i++) {\n if (color == \"#\" + this.names[i][0])\n return [\"#\" + this.names[i][0], this.names[i][1], true];\n\n ndf1 =\n Math.pow(r - this.names[i][2], 2) +\n Math.pow(g - this.names[i][3], 2) +\n Math.pow(b - this.names[i][4], 2);\n ndf2 =\n Math.pow(h - this.names[i][5], 2) +\n Math.pow(s - this.names[i][6], 2) +\n Math.pow(l - this.names[i][7], 2);\n ndf = ndf1 + ndf2 * 2;\n if (df < 0 || df > ndf) {\n df = ndf;\n cl = i;\n }\n }\n\n return cl < 0\n ? [\"#000000\", \"Invalid Color: \" + color, false]\n : [\"#\" + this.names[cl][0], this.names[cl][1], false];\n };\n\n // adopted from: Farbtastic 1.2\n // http://acko.net/dev/farbtastic\n hsl = function (color) {\n var rgb = [\n parseInt(\"0x\" + color.substring(1, 3)) / 255,\n parseInt(\"0x\" + color.substring(3, 5)) / 255,\n parseInt(\"0x\" + color.substring(5, 7)) / 255,\n ];\n var min, max, delta, h, s, l;\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2];\n\n min = Math.min(r, Math.min(g, b));\n max = Math.max(r, Math.max(g, b));\n delta = max - min;\n l = (min + max) / 2;\n\n s = 0;\n if (l > 0 && l < 1) s = delta / (l < 0.5 ? 2 * l : 2 - 2 * l);\n\n h = 0;\n if (delta > 0) {\n if (max == r && max != g) h += (g - b) / delta;\n if (max == g && max != b) h += 2 + (b - r) / delta;\n if (max == b && max != r) h += 4 + (r - g) / delta;\n h /= 6;\n }\n return [parseInt(h * 255), parseInt(s * 255), parseInt(l * 255)];\n };\n\n // adopted from: Farbtastic 1.2\n // http://acko.net/dev/farbtastic\n rgb = function (color) {\n return [\n parseInt(\"0x\" + color.substring(1, 3)),\n parseInt(\"0x\" + color.substring(3, 5)),\n parseInt(\"0x\" + color.substring(5, 7)),\n ];\n };\n\n names = [\n [\"000000\", \"Black\"],\n [\"000080\", \"Navy Blue\"],\n [\"0000C8\", \"Dark Blue\"],\n [\"0000FF\", \"Blue\"],\n [\"000741\", \"Stratos\"],\n [\"001B1C\", \"Swamp\"],\n [\"002387\", \"Resolution Blue\"],\n [\"002900\", \"Deep Fir\"],\n [\"002E20\", \"Burnham\"],\n [\"002FA7\", \"International Klein Blue\"],\n [\"003153\", \"Prussian Blue\"],\n [\"003366\", \"Midnight Blue\"],\n [\"003399\", \"Smalt\"],\n [\"003532\", \"Deep Teal\"],\n [\"003E40\", \"Cyprus\"],\n [\"004620\", \"Kaitoke Green\"],\n [\"0047AB\", \"Cobalt\"],\n [\"004816\", \"Crusoe\"],\n [\"004950\", \"Sherpa Blue\"],\n [\"0056A7\", \"Endeavour\"],\n [\"00581A\", \"Camarone\"],\n [\"0066CC\", \"Science Blue\"],\n [\"0066FF\", \"Blue Ribbon\"],\n [\"00755E\", \"Tropical Rain Forest\"],\n [\"0076A3\", \"Allports\"],\n [\"007BA7\", \"Deep Cerulean\"],\n [\"007EC7\", \"Lochmara\"],\n [\"007FFF\", \"Azure Radiance\"],\n [\"008080\", \"Teal\"],\n [\"0095B6\", \"Bondi Blue\"],\n [\"009DC4\", \"Pacific Blue\"],\n [\"00A693\", \"Persian Green\"],\n [\"00A86B\", \"Jade\"],\n [\"00CC99\", \"Caribbean Green\"],\n [\"00CCCC\", \"Robin's Egg Blue\"],\n [\"00FF00\", \"Green\"],\n [\"00FF7F\", \"Spring Green\"],\n [\"00FFFF\", \"Cyan / Aqua\"],\n [\"010D1A\", \"Blue Charcoal\"],\n [\"011635\", \"Midnight\"],\n [\"011D13\", \"Holly\"],\n [\"012731\", \"Daintree\"],\n [\"01361C\", \"Cardin Green\"],\n [\"01371A\", \"County Green\"],\n [\"013E62\", \"Astronaut Blue\"],\n [\"013F6A\", \"Regal Blue\"],\n [\"014B43\", \"Aqua Deep\"],\n [\"015E85\", \"Orient\"],\n [\"016162\", \"Blue Stone\"],\n [\"016D39\", \"Fun Green\"],\n [\"01796F\", \"Pine Green\"],\n [\"017987\", \"Blue Lagoon\"],\n [\"01826B\", \"Deep Sea\"],\n [\"01A368\", \"Green Haze\"],\n [\"022D15\", \"English Holly\"],\n [\"02402C\", \"Sherwood Green\"],\n [\"02478E\", \"Congress Blue\"],\n [\"024E46\", \"Evening Sea\"],\n [\"026395\", \"Bahama Blue\"],\n [\"02866F\", \"Observatory\"],\n [\"02A4D3\", \"Cerulean\"],\n [\"03163C\", \"Tangaroa\"],\n [\"032B52\", \"Green Vogue\"],\n [\"036A6E\", \"Mosque\"],\n [\"041004\", \"Midnight Moss\"],\n [\"041322\", \"Black Pearl\"],\n [\"042E4C\", \"Blue Whale\"],\n [\"044022\", \"Zuccini\"],\n [\"044259\", \"Teal Blue\"],\n [\"051040\", \"Deep Cove\"],\n [\"051657\", \"Gulf Blue\"],\n [\"055989\", \"Venice Blue\"],\n [\"056F57\", \"Watercourse\"],\n [\"062A78\", \"Catalina Blue\"],\n [\"063537\", \"Tiber\"],\n [\"069B81\", \"Gossamer\"],\n [\"06A189\", \"Niagara\"],\n [\"073A50\", \"Tarawera\"],\n [\"080110\", \"Jaguar\"],\n [\"081910\", \"Black Bean\"],\n [\"082567\", \"Deep Sapphire\"],\n [\"088370\", \"Elf Green\"],\n [\"08E8DE\", \"Bright Turquoise\"],\n [\"092256\", \"Downriver\"],\n [\"09230F\", \"Palm Green\"],\n [\"09255D\", \"Madison\"],\n [\"093624\", \"Bottle Green\"],\n [\"095859\", \"Deep Sea Green\"],\n [\"097F4B\", \"Salem\"],\n [\"0A001C\", \"Black Russian\"],\n [\"0A480D\", \"Dark Fern\"],\n [\"0A6906\", \"Japanese Laurel\"],\n [\"0A6F75\", \"Atoll\"],\n [\"0B0B0B\", \"Cod Gray\"],\n [\"0B0F08\", \"Marshland\"],\n [\"0B1107\", \"Gordons Green\"],\n [\"0B1304\", \"Black Forest\"],\n [\"0B6207\", \"San Felix\"],\n [\"0BDA51\", \"Malachite\"],\n [\"0C0B1D\", \"Ebony\"],\n [\"0C0D0F\", \"Woodsmoke\"],\n [\"0C1911\", \"Racing Green\"],\n [\"0C7A79\", \"Surfie Green\"],\n [\"0C8990\", \"Blue Chill\"],\n [\"0D0332\", \"Black Rock\"],\n [\"0D1117\", \"Bunker\"],\n [\"0D1C19\", \"Aztec\"],\n [\"0D2E1C\", \"Bush\"],\n [\"0E0E18\", \"Cinder\"],\n [\"0E2A30\", \"Firefly\"],\n [\"0F2D9E\", \"Torea Bay\"],\n [\"10121D\", \"Vulcan\"],\n [\"101405\", \"Green Waterloo\"],\n [\"105852\", \"Eden\"],\n [\"110C6C\", \"Arapawa\"],\n [\"120A8F\", \"Ultramarine\"],\n [\"123447\", \"Elephant\"],\n [\"126B40\", \"Jewel\"],\n [\"130000\", \"Diesel\"],\n [\"130A06\", \"Asphalt\"],\n [\"13264D\", \"Blue Zodiac\"],\n [\"134F19\", \"Parsley\"],\n [\"140600\", \"Nero\"],\n [\"1450AA\", \"Tory Blue\"],\n [\"151F4C\", \"Bunting\"],\n [\"1560BD\", \"Denim\"],\n [\"15736B\", \"Genoa\"],\n [\"161928\", \"Mirage\"],\n [\"161D10\", \"Hunter Green\"],\n [\"162A40\", \"Big Stone\"],\n [\"163222\", \"Celtic\"],\n [\"16322C\", \"Timber Green\"],\n [\"163531\", \"Gable Green\"],\n [\"171F04\", \"Pine Tree\"],\n [\"175579\", \"Chathams Blue\"],\n [\"182D09\", \"Deep Forest Green\"],\n [\"18587A\", \"Blumine\"],\n [\"19330E\", \"Palm Leaf\"],\n [\"193751\", \"Nile Blue\"],\n [\"1959A8\", \"Fun Blue\"],\n [\"1A1A68\", \"Lucky Point\"],\n [\"1AB385\", \"Mountain Meadow\"],\n [\"1B0245\", \"Tolopea\"],\n [\"1B1035\", \"Haiti\"],\n [\"1B127B\", \"Deep Koamaru\"],\n [\"1B1404\", \"Acadia\"],\n [\"1B2F11\", \"Seaweed\"],\n [\"1B3162\", \"Biscay\"],\n [\"1B659D\", \"Matisse\"],\n [\"1C1208\", \"Crowshead\"],\n [\"1C1E13\", \"Rangoon Green\"],\n [\"1C39BB\", \"Persian Blue\"],\n [\"1C402E\", \"Everglade\"],\n [\"1C7C7D\", \"Elm\"],\n [\"1D6142\", \"Green Pea\"],\n [\"1E0F04\", \"Creole\"],\n [\"1E1609\", \"Karaka\"],\n [\"1E1708\", \"El Paso\"],\n [\"1E385B\", \"Cello\"],\n [\"1E433C\", \"Te Papa Green\"],\n [\"1E90FF\", \"Dodger Blue\"],\n [\"1E9AB0\", \"Eastern Blue\"],\n [\"1F120F\", \"Night Rider\"],\n [\"1FC2C2\", \"Java\"],\n [\"20208D\", \"Jacksons Purple\"],\n [\"202E54\", \"Cloud Burst\"],\n [\"204852\", \"Blue Dianne\"],\n [\"211A0E\", \"Eternity\"],\n [\"220878\", \"Deep Blue\"],\n [\"228B22\", \"Forest Green\"],\n [\"233418\", \"Mallard\"],\n [\"240A40\", \"Violet\"],\n [\"240C02\", \"Kilamanjaro\"],\n [\"242A1D\", \"Log Cabin\"],\n [\"242E16\", \"Black Olive\"],\n [\"24500F\", \"Green House\"],\n [\"251607\", \"Graphite\"],\n [\"251706\", \"Cannon Black\"],\n [\"251F4F\", \"Port Gore\"],\n [\"25272C\", \"Shark\"],\n [\"25311C\", \"Green Kelp\"],\n [\"2596D1\", \"Curious Blue\"],\n [\"260368\", \"Paua\"],\n [\"26056A\", \"Paris M\"],\n [\"261105\", \"Wood Bark\"],\n [\"261414\", \"Gondola\"],\n [\"262335\", \"Steel Gray\"],\n [\"26283B\", \"Ebony Clay\"],\n [\"273A81\", \"Bay of Many\"],\n [\"27504B\", \"Plantation\"],\n [\"278A5B\", \"Eucalyptus\"],\n [\"281E15\", \"Oil\"],\n [\"283A77\", \"Astronaut\"],\n [\"286ACD\", \"Mariner\"],\n [\"290C5E\", \"Violent Violet\"],\n [\"292130\", \"Bastille\"],\n [\"292319\", \"Zeus\"],\n [\"292937\", \"Charade\"],\n [\"297B9A\", \"Jelly Bean\"],\n [\"29AB87\", \"Jungle Green\"],\n [\"2A0359\", \"Cherry Pie\"],\n [\"2A140E\", \"Coffee Bean\"],\n [\"2A2630\", \"Baltic Sea\"],\n [\"2A380B\", \"Turtle Green\"],\n [\"2A52BE\", \"Cerulean Blue\"],\n [\"2B0202\", \"Sepia Black\"],\n [\"2B194F\", \"Valhalla\"],\n [\"2B3228\", \"Heavy Metal\"],\n [\"2C0E8C\", \"Blue Gem\"],\n [\"2C1632\", \"Revolver\"],\n [\"2C2133\", \"Bleached Cedar\"],\n [\"2C8C84\", \"Lochinvar\"],\n [\"2D2510\", \"Mikado\"],\n [\"2D383A\", \"Outer Space\"],\n [\"2D569B\", \"St Tropaz\"],\n [\"2E0329\", \"Jacaranda\"],\n [\"2E1905\", \"Jacko Bean\"],\n [\"2E3222\", \"Rangitoto\"],\n [\"2E3F62\", \"Rhino\"],\n [\"2E8B57\", \"Sea Green\"],\n [\"2EBFD4\", \"Scooter\"],\n [\"2F270E\", \"Onion\"],\n [\"2F3CB3\", \"Governor Bay\"],\n [\"2F519E\", \"Sapphire\"],\n [\"2F5A57\", \"Spectra\"],\n [\"2F6168\", \"Casal\"],\n [\"300529\", \"Melanzane\"],\n [\"301F1E\", \"Cocoa Brown\"],\n [\"302A0F\", \"Woodrush\"],\n [\"304B6A\", \"San Juan\"],\n [\"30D5C8\", \"Turquoise\"],\n [\"311C17\", \"Eclipse\"],\n [\"314459\", \"Pickled Bluewood\"],\n [\"315BA1\", \"Azure\"],\n [\"31728D\", \"Calypso\"],\n [\"317D82\", \"Paradiso\"],\n [\"32127A\", \"Persian Indigo\"],\n [\"32293A\", \"Blackcurrant\"],\n [\"323232\", \"Mine Shaft\"],\n [\"325D52\", \"Stromboli\"],\n [\"327C14\", \"Bilbao\"],\n [\"327DA0\", \"Astral\"],\n [\"33036B\", \"Christalle\"],\n [\"33292F\", \"Thunder\"],\n [\"33CC99\", \"Shamrock\"],\n [\"341515\", \"Tamarind\"],\n [\"350036\", \"Mardi Gras\"],\n [\"350E42\", \"Valentino\"],\n [\"350E57\", \"Jagger\"],\n [\"353542\", \"Tuna\"],\n [\"354E8C\", \"Chambray\"],\n [\"363050\", \"Martinique\"],\n [\"363534\", \"Tuatara\"],\n [\"363C0D\", \"Waiouru\"],\n [\"36747D\", \"Ming\"],\n [\"368716\", \"La Palma\"],\n [\"370202\", \"Chocolate\"],\n [\"371D09\", \"Clinker\"],\n [\"37290E\", \"Brown Tumbleweed\"],\n [\"373021\", \"Birch\"],\n [\"377475\", \"Oracle\"],\n [\"380474\", \"Blue Diamond\"],\n [\"381A51\", \"Grape\"],\n [\"383533\", \"Dune\"],\n [\"384555\", \"Oxford Blue\"],\n [\"384910\", \"Clover\"],\n [\"394851\", \"Limed Spruce\"],\n [\"396413\", \"Dell\"],\n [\"3A0020\", \"Toledo\"],\n [\"3A2010\", \"Sambuca\"],\n [\"3A2A6A\", \"Jacarta\"],\n [\"3A686C\", \"William\"],\n [\"3A6A47\", \"Killarney\"],\n [\"3AB09E\", \"Keppel\"],\n [\"3B000B\", \"Temptress\"],\n [\"3B0910\", \"Aubergine\"],\n [\"3B1F1F\", \"Jon\"],\n [\"3B2820\", \"Treehouse\"],\n [\"3B7A57\", \"Amazon\"],\n [\"3B91B4\", \"Boston Blue\"],\n [\"3C0878\", \"Windsor\"],\n [\"3C1206\", \"Rebel\"],\n [\"3C1F76\", \"Meteorite\"],\n [\"3C2005\", \"Dark Ebony\"],\n [\"3C3910\", \"Camouflage\"],\n [\"3C4151\", \"Bright Gray\"],\n [\"3C4443\", \"Cape Cod\"],\n [\"3C493A\", \"Lunar Green\"],\n [\"3D0C02\", \"Bean \"],\n [\"3D2B1F\", \"Bistre\"],\n [\"3D7D52\", \"Goblin\"],\n [\"3E0480\", \"Kingfisher Daisy\"],\n [\"3E1C14\", \"Cedar\"],\n [\"3E2B23\", \"English Walnut\"],\n [\"3E2C1C\", \"Black Marlin\"],\n [\"3E3A44\", \"Ship Gray\"],\n [\"3EABBF\", \"Pelorous\"],\n [\"3F2109\", \"Bronze\"],\n [\"3F2500\", \"Cola\"],\n [\"3F3002\", \"Madras\"],\n [\"3F307F\", \"Minsk\"],\n [\"3F4C3A\", \"Cabbage Pont\"],\n [\"3F583B\", \"Tom Thumb\"],\n [\"3F5D53\", \"Mineral Green\"],\n [\"3FC1AA\", \"Puerto Rico\"],\n [\"3FFF00\", \"Harlequin\"],\n [\"401801\", \"Brown Pod\"],\n [\"40291D\", \"Cork\"],\n [\"403B38\", \"Masala\"],\n [\"403D19\", \"Thatch Green\"],\n [\"405169\", \"Fiord\"],\n [\"40826D\", \"Viridian\"],\n [\"40A860\", \"Chateau Green\"],\n [\"410056\", \"Ripe Plum\"],\n [\"411F10\", \"Paco\"],\n [\"412010\", \"Deep Oak\"],\n [\"413C37\", \"Merlin\"],\n [\"414257\", \"Gun Powder\"],\n [\"414C7D\", \"East Bay\"],\n [\"4169E1\", \"Royal Blue\"],\n [\"41AA78\", \"Ocean Green\"],\n [\"420303\", \"Burnt Maroon\"],\n [\"423921\", \"Lisbon Brown\"],\n [\"427977\", \"Faded Jade\"],\n [\"431560\", \"Scarlet Gum\"],\n [\"433120\", \"Iroko\"],\n [\"433E37\", \"Armadillo\"],\n [\"434C59\", \"River Bed\"],\n [\"436A0D\", \"Green Leaf\"],\n [\"44012D\", \"Barossa\"],\n [\"441D00\", \"Morocco Brown\"],\n [\"444954\", \"Mako\"],\n [\"454936\", \"Kelp\"],\n [\"456CAC\", \"San Marino\"],\n [\"45B1E8\", \"Picton Blue\"],\n [\"460B41\", \"Loulou\"],\n [\"462425\", \"Crater Brown\"],\n [\"465945\", \"Gray Asparagus\"],\n [\"4682B4\", \"Steel Blue\"],\n [\"480404\", \"Rustic Red\"],\n [\"480607\", \"Bulgarian Rose\"],\n [\"480656\", \"Clairvoyant\"],\n [\"481C1C\", \"Cocoa Bean\"],\n [\"483131\", \"Woody Brown\"],\n [\"483C32\", \"Taupe\"],\n [\"49170C\", \"Van Cleef\"],\n [\"492615\", \"Brown Derby\"],\n [\"49371B\", \"Metallic Bronze\"],\n [\"495400\", \"Verdun Green\"],\n [\"496679\", \"Blue Bayoux\"],\n [\"497183\", \"Bismark\"],\n [\"4A2A04\", \"Bracken\"],\n [\"4A3004\", \"Deep Bronze\"],\n [\"4A3C30\", \"Mondo\"],\n [\"4A4244\", \"Tundora\"],\n [\"4A444B\", \"Gravel\"],\n [\"4A4E5A\", \"Trout\"],\n [\"4B0082\", \"Pigment Indigo\"],\n [\"4B5D52\", \"Nandor\"],\n [\"4C3024\", \"Saddle\"],\n [\"4C4F56\", \"Abbey\"],\n [\"4D0135\", \"Blackberry\"],\n [\"4D0A18\", \"Cab Sav\"],\n [\"4D1E01\", \"Indian Tan\"],\n [\"4D282D\", \"Cowboy\"],\n [\"4D282E\", \"Livid Brown\"],\n [\"4D3833\", \"Rock\"],\n [\"4D3D14\", \"Punga\"],\n [\"4D400F\", \"Bronzetone\"],\n [\"4D5328\", \"Woodland\"],\n [\"4E0606\", \"Mahogany\"],\n [\"4E2A5A\", \"Bossanova\"],\n [\"4E3B41\", \"Matterhorn\"],\n [\"4E420C\", \"Bronze Olive\"],\n [\"4E4562\", \"Mulled Wine\"],\n [\"4E6649\", \"Axolotl\"],\n [\"4E7F9E\", \"Wedgewood\"],\n [\"4EABD1\", \"Shakespeare\"],\n [\"4F1C70\", \"Honey Flower\"],\n [\"4F2398\", \"Daisy Bush\"],\n [\"4F69C6\", \"Indigo\"],\n [\"4F7942\", \"Fern Green\"],\n [\"4F9D5D\", \"Fruit Salad\"],\n [\"4FA83D\", \"Apple\"],\n [\"504351\", \"Mortar\"],\n [\"507096\", \"Kashmir Blue\"],\n [\"507672\", \"Cutty Sark\"],\n [\"50C878\", \"Emerald\"],\n [\"514649\", \"Emperor\"],\n [\"516E3D\", \"Chalet Green\"],\n [\"517C66\", \"Como\"],\n [\"51808F\", \"Smalt Blue\"],\n [\"52001F\", \"Castro\"],\n [\"520C17\", \"Maroon Oak\"],\n [\"523C94\", \"Gigas\"],\n [\"533455\", \"Voodoo\"],\n [\"534491\", \"Victoria\"],\n [\"53824B\", \"Hippie Green\"],\n [\"541012\", \"Heath\"],\n [\"544333\", \"Judge Gray\"],\n [\"54534D\", \"Fuscous Gray\"],\n [\"549019\", \"Vida Loca\"],\n [\"55280C\", \"Cioccolato\"],\n [\"555B10\", \"Saratoga\"],\n [\"556D56\", \"Finlandia\"],\n [\"5590D9\", \"Havelock Blue\"],\n [\"56B4BE\", \"Fountain Blue\"],\n [\"578363\", \"Spring Leaves\"],\n [\"583401\", \"Saddle Brown\"],\n [\"585562\", \"Scarpa Flow\"],\n [\"587156\", \"Cactus\"],\n [\"589AAF\", \"Hippie Blue\"],\n [\"591D35\", \"Wine Berry\"],\n [\"592804\", \"Brown Bramble\"],\n [\"593737\", \"Congo Brown\"],\n [\"594433\", \"Millbrook\"],\n [\"5A6E9C\", \"Waikawa Gray\"],\n [\"5A87A0\", \"Horizon\"],\n [\"5B3013\", \"Jambalaya\"],\n [\"5C0120\", \"Bordeaux\"],\n [\"5C0536\", \"Mulberry Wood\"],\n [\"5C2E01\", \"Carnaby Tan\"],\n [\"5C5D75\", \"Comet\"],\n [\"5D1E0F\", \"Redwood\"],\n [\"5D4C51\", \"Don Juan\"],\n [\"5D5C58\", \"Chicago\"],\n [\"5D5E37\", \"Verdigris\"],\n [\"5D7747\", \"Dingley\"],\n [\"5DA19F\", \"Breaker Bay\"],\n [\"5E483E\", \"Kabul\"],\n [\"5E5D3B\", \"Hemlock\"],\n [\"5F3D26\", \"Irish Coffee\"],\n [\"5F5F6E\", \"Mid Gray\"],\n [\"5F6672\", \"Shuttle Gray\"],\n [\"5FA777\", \"Aqua Forest\"],\n [\"5FB3AC\", \"Tradewind\"],\n [\"604913\", \"Horses Neck\"],\n [\"605B73\", \"Smoky\"],\n [\"606E68\", \"Corduroy\"],\n [\"6093D1\", \"Danube\"],\n [\"612718\", \"Espresso\"],\n [\"614051\", \"Eggplant\"],\n [\"615D30\", \"Costa Del Sol\"],\n [\"61845F\", \"Glade Green\"],\n [\"622F30\", \"Buccaneer\"],\n [\"623F2D\", \"Quincy\"],\n [\"624E9A\", \"Butterfly Bush\"],\n [\"625119\", \"West Coast\"],\n [\"626649\", \"Finch\"],\n [\"639A8F\", \"Patina\"],\n [\"63B76C\", \"Fern\"],\n [\"6456B7\", \"Blue Violet\"],\n [\"646077\", \"Dolphin\"],\n [\"646463\", \"Storm Dust\"],\n [\"646A54\", \"Siam\"],\n [\"646E75\", \"Nevada\"],\n [\"6495ED\", \"Cornflower Blue\"],\n [\"64CCDB\", \"Viking\"],\n [\"65000B\", \"Rosewood\"],\n [\"651A14\", \"Cherrywood\"],\n [\"652DC1\", \"Purple Heart\"],\n [\"657220\", \"Fern Frond\"],\n [\"65745D\", \"Willow Grove\"],\n [\"65869F\", \"Hoki\"],\n [\"660045\", \"Pompadour\"],\n [\"660099\", \"Purple\"],\n [\"66023C\", \"Tyrian Purple\"],\n [\"661010\", \"Dark Tan\"],\n [\"66B58F\", \"Silver Tree\"],\n [\"66FF00\", \"Bright Green\"],\n [\"66FF66\", \"Screamin' Green\"],\n [\"67032D\", \"Black Rose\"],\n [\"675FA6\", \"Scampi\"],\n [\"676662\", \"Ironside Gray\"],\n [\"678975\", \"Viridian Green\"],\n [\"67A712\", \"Christi\"],\n [\"683600\", \"Nutmeg Wood Finish\"],\n [\"685558\", \"Zambezi\"],\n [\"685E6E\", \"Salt Box\"],\n [\"692545\", \"Tawny Port\"],\n [\"692D54\", \"Finn\"],\n [\"695F62\", \"Scorpion\"],\n [\"697E9A\", \"Lynch\"],\n [\"6A442E\", \"Spice\"],\n [\"6A5D1B\", \"Himalaya\"],\n [\"6A6051\", \"Soya Bean\"],\n [\"6B2A14\", \"Hairy Heath\"],\n [\"6B3FA0\", \"Royal Purple\"],\n [\"6B4E31\", \"Shingle Fawn\"],\n [\"6B5755\", \"Dorado\"],\n [\"6B8BA2\", \"Bermuda Gray\"],\n [\"6B8E23\", \"Olive Drab\"],\n [\"6C3082\", \"Eminence\"],\n [\"6CDAE7\", \"Turquoise Blue\"],\n [\"6D0101\", \"Lonestar\"],\n [\"6D5E54\", \"Pine Cone\"],\n [\"6D6C6C\", \"Dove Gray\"],\n [\"6D9292\", \"Juniper\"],\n [\"6D92A1\", \"Gothic\"],\n [\"6E0902\", \"Red Oxide\"],\n [\"6E1D14\", \"Moccaccino\"],\n [\"6E4826\", \"Pickled Bean\"],\n [\"6E4B26\", \"Dallas\"],\n [\"6E6D57\", \"Kokoda\"],\n [\"6E7783\", \"Pale Sky\"],\n [\"6F440C\", \"Cafe Royale\"],\n [\"6F6A61\", \"Flint\"],\n [\"6F8E63\", \"Highland\"],\n [\"6F9D02\", \"Limeade\"],\n [\"6FD0C5\", \"Downy\"],\n [\"701C1C\", \"Persian Plum\"],\n [\"704214\", \"Sepia\"],\n [\"704A07\", \"Antique Bronze\"],\n [\"704F50\", \"Ferra\"],\n [\"706555\", \"Coffee\"],\n [\"708090\", \"Slate Gray\"],\n [\"711A00\", \"Cedar Wood Finish\"],\n [\"71291D\", \"Metallic Copper\"],\n [\"714693\", \"Affair\"],\n [\"714AB2\", \"Studio\"],\n [\"715D47\", \"Tobacco Brown\"],\n [\"716338\", \"Yellow Metal\"],\n [\"716B56\", \"Peat\"],\n [\"716E10\", \"Olivetone\"],\n [\"717486\", \"Storm Gray\"],\n [\"718080\", \"Sirocco\"],\n [\"71D9E2\", \"Aquamarine Blue\"],\n [\"72010F\", \"Venetian Red\"],\n [\"724A2F\", \"Old Copper\"],\n [\"726D4E\", \"Go Ben\"],\n [\"727B89\", \"Raven\"],\n [\"731E8F\", \"Seance\"],\n [\"734A12\", \"Raw Umber\"],\n [\"736C9F\", \"Kimberly\"],\n [\"736D58\", \"Crocodile\"],\n [\"737829\", \"Crete\"],\n [\"738678\", \"Xanadu\"],\n [\"74640D\", \"Spicy Mustard\"],\n [\"747D63\", \"Limed Ash\"],\n [\"747D83\", \"Rolling Stone\"],\n [\"748881\", \"Blue Smoke\"],\n [\"749378\", \"Laurel\"],\n [\"74C365\", \"Mantis\"],\n [\"755A57\", \"Russett\"],\n [\"7563A8\", \"Deluge\"],\n [\"76395D\", \"Cosmic\"],\n [\"7666C6\", \"Blue Marguerite\"],\n [\"76BD17\", \"Lima\"],\n [\"76D7EA\", \"Sky Blue\"],\n [\"770F05\", \"Dark Burgundy\"],\n [\"771F1F\", \"Crown of Thorns\"],\n [\"773F1A\", \"Walnut\"],\n [\"776F61\", \"Pablo\"],\n [\"778120\", \"Pacifika\"],\n [\"779E86\", \"Oxley\"],\n [\"77DD77\", \"Pastel Green\"],\n [\"780109\", \"Japanese Maple\"],\n [\"782D19\", \"Mocha\"],\n [\"782F16\", \"Peanut\"],\n [\"78866B\", \"Camouflage Green\"],\n [\"788A25\", \"Wasabi\"],\n [\"788BBA\", \"Ship Cove\"],\n [\"78A39C\", \"Sea Nymph\"],\n [\"795D4C\", \"Roman Coffee\"],\n [\"796878\", \"Old Lavender\"],\n [\"796989\", \"Rum\"],\n [\"796A78\", \"Fedora\"],\n [\"796D62\", \"Sandstone\"],\n [\"79DEEC\", \"Spray\"],\n [\"7A013A\", \"Siren\"],\n [\"7A58C1\", \"Fuchsia Blue\"],\n [\"7A7A7A\", \"Boulder\"],\n [\"7A89B8\", \"Wild Blue Yonder\"],\n [\"7AC488\", \"De York\"],\n [\"7B3801\", \"Red Beech\"],\n [\"7B3F00\", \"Cinnamon\"],\n [\"7B6608\", \"Yukon Gold\"],\n [\"7B7874\", \"Tapa\"],\n [\"7B7C94\", \"Waterloo \"],\n [\"7B8265\", \"Flax Smoke\"],\n [\"7B9F80\", \"Amulet\"],\n [\"7BA05B\", \"Asparagus\"],\n [\"7C1C05\", \"Kenyan Copper\"],\n [\"7C7631\", \"Pesto\"],\n [\"7C778A\", \"Topaz\"],\n [\"7C7B7A\", \"Concord\"],\n [\"7C7B82\", \"Jumbo\"],\n [\"7C881A\", \"Trendy Green\"],\n [\"7CA1A6\", \"Gumbo\"],\n [\"7CB0A1\", \"Acapulco\"],\n [\"7CB7BB\", \"Neptune\"],\n [\"7D2C14\", \"Pueblo\"],\n [\"7DA98D\", \"Bay Leaf\"],\n [\"7DC8F7\", \"Malibu\"],\n [\"7DD8C6\", \"Bermuda\"],\n [\"7E3A15\", \"Copper Canyon\"],\n [\"7F1734\", \"Claret\"],\n [\"7F3A02\", \"Peru Tan\"],\n [\"7F626D\", \"Falcon\"],\n [\"7F7589\", \"Mobster\"],\n [\"7F76D3\", \"Moody Blue\"],\n [\"7FFF00\", \"Chartreuse\"],\n [\"7FFFD4\", \"Aquamarine\"],\n [\"800000\", \"Maroon\"],\n [\"800B47\", \"Rose Bud Cherry\"],\n [\"801818\", \"Falu Red\"],\n [\"80341F\", \"Red Robin\"],\n [\"803790\", \"Vivid Violet\"],\n [\"80461B\", \"Russet\"],\n [\"807E79\", \"Friar Gray\"],\n [\"808000\", \"Olive\"],\n [\"808080\", \"Gray\"],\n [\"80B3AE\", \"Gulf Stream\"],\n [\"80B3C4\", \"Glacier\"],\n [\"80CCEA\", \"Seagull\"],\n [\"81422C\", \"Nutmeg\"],\n [\"816E71\", \"Spicy Pink\"],\n [\"817377\", \"Empress\"],\n [\"819885\", \"Spanish Green\"],\n [\"826F65\", \"Sand Dune\"],\n [\"828685\", \"Gunsmoke\"],\n [\"828F72\", \"Battleship Gray\"],\n [\"831923\", \"Merlot\"],\n [\"837050\", \"Shadow\"],\n [\"83AA5D\", \"Chelsea Cucumber\"],\n [\"83D0C6\", \"Monte Carlo\"],\n [\"843179\", \"Plum\"],\n [\"84A0A0\", \"Granny Smith\"],\n [\"8581D9\", \"Chetwode Blue\"],\n [\"858470\", \"Bandicoot\"],\n [\"859FAF\", \"Bali Hai\"],\n [\"85C4CC\", \"Half Baked\"],\n [\"860111\", \"Red Devil\"],\n [\"863C3C\", \"Lotus\"],\n [\"86483C\", \"Ironstone\"],\n [\"864D1E\", \"Bull Shot\"],\n [\"86560A\", \"Rusty Nail\"],\n [\"868974\", \"Bitter\"],\n [\"86949F\", \"Regent Gray\"],\n [\"871550\", \"Disco\"],\n [\"87756E\", \"Americano\"],\n [\"877C7B\", \"Hurricane\"],\n [\"878D91\", \"Oslo Gray\"],\n [\"87AB39\", \"Sushi\"],\n [\"885342\", \"Spicy Mix\"],\n [\"886221\", \"Kumera\"],\n [\"888387\", \"Suva Gray\"],\n [\"888D65\", \"Avocado\"],\n [\"893456\", \"Camelot\"],\n [\"893843\", \"Solid Pink\"],\n [\"894367\", \"Cannon Pink\"],\n [\"897D6D\", \"Makara\"],\n [\"8A3324\", \"Burnt Umber\"],\n [\"8A73D6\", \"True V\"],\n [\"8A8360\", \"Clay Creek\"],\n [\"8A8389\", \"Monsoon\"],\n [\"8A8F8A\", \"Stack\"],\n [\"8AB9F1\", \"Jordy Blue\"],\n [\"8B00FF\", \"Electric Violet\"],\n [\"8B0723\", \"Monarch\"],\n [\"8B6B0B\", \"Corn Harvest\"],\n [\"8B8470\", \"Olive Haze\"],\n [\"8B847E\", \"Schooner\"],\n [\"8B8680\", \"Natural Gray\"],\n [\"8B9C90\", \"Mantle\"],\n [\"8B9FEE\", \"Portage\"],\n [\"8BA690\", \"Envy\"],\n [\"8BA9A5\", \"Cascade\"],\n [\"8BE6D8\", \"Riptide\"],\n [\"8C055E\", \"Cardinal Pink\"],\n [\"8C472F\", \"Mule Fawn\"],\n [\"8C5738\", \"Potters Clay\"],\n [\"8C6495\", \"Trendy Pink\"],\n [\"8D0226\", \"Paprika\"],\n [\"8D3D38\", \"Sanguine Brown\"],\n [\"8D3F3F\", \"Tosca\"],\n [\"8D7662\", \"Cement\"],\n [\"8D8974\", \"Granite Green\"],\n [\"8D90A1\", \"Manatee\"],\n [\"8DA8CC\", \"Polo Blue\"],\n [\"8E0000\", \"Red Berry\"],\n [\"8E4D1E\", \"Rope\"],\n [\"8E6F70\", \"Opium\"],\n [\"8E775E\", \"Domino\"],\n [\"8E8190\", \"Mamba\"],\n [\"8EABC1\", \"Nepal\"],\n [\"8F021C\", \"Pohutukawa\"],\n [\"8F3E33\", \"El Salva\"],\n [\"8F4B0E\", \"Korma\"],\n [\"8F8176\", \"Squirrel\"],\n [\"8FD6B4\", \"Vista Blue\"],\n [\"900020\", \"Burgundy\"],\n [\"901E1E\", \"Old Brick\"],\n [\"907874\", \"Hemp\"],\n [\"907B71\", \"Almond Frost\"],\n [\"908D39\", \"Sycamore\"],\n [\"92000A\", \"Sangria\"],\n [\"924321\", \"Cumin\"],\n [\"926F5B\", \"Beaver\"],\n [\"928573\", \"Stonewall\"],\n [\"928590\", \"Venus\"],\n [\"9370DB\", \"Medium Purple\"],\n [\"93CCEA\", \"Cornflower\"],\n [\"93DFB8\", \"Algae Green\"],\n [\"944747\", \"Copper Rust\"],\n [\"948771\", \"Arrowtown\"],\n [\"950015\", \"Scarlett\"],\n [\"956387\", \"Strikemaster\"],\n [\"959396\", \"Mountain Mist\"],\n [\"960018\", \"Carmine\"],\n [\"964B00\", \"Brown\"],\n [\"967059\", \"Leather\"],\n [\"9678B6\", \"Purple Mountain's Majesty\"],\n [\"967BB6\", \"Lavender Purple\"],\n [\"96A8A1\", \"Pewter\"],\n [\"96BBAB\", \"Summer Green\"],\n [\"97605D\", \"Au Chico\"],\n [\"9771B5\", \"Wisteria\"],\n [\"97CD2D\", \"Atlantis\"],\n [\"983D61\", \"Vin Rouge\"],\n [\"9874D3\", \"Lilac Bush\"],\n [\"98777B\", \"Bazaar\"],\n [\"98811B\", \"Hacienda\"],\n [\"988D77\", \"Pale Oyster\"],\n [\"98FF98\", \"Mint Green\"],\n [\"990066\", \"Fresh Eggplant\"],\n [\"991199\", \"Violet Eggplant\"],\n [\"991613\", \"Tamarillo\"],\n [\"991B07\", \"Totem Pole\"],\n [\"996666\", \"Copper Rose\"],\n [\"9966CC\", \"Amethyst\"],\n [\"997A8D\", \"Mountbatten Pink\"],\n [\"9999CC\", \"Blue Bell\"],\n [\"9A3820\", \"Prairie Sand\"],\n [\"9A6E61\", \"Toast\"],\n [\"9A9577\", \"Gurkha\"],\n [\"9AB973\", \"Olivine\"],\n [\"9AC2B8\", \"Shadow Green\"],\n [\"9B4703\", \"Oregon\"],\n [\"9B9E8F\", \"Lemon Grass\"],\n [\"9C3336\", \"Stiletto\"],\n [\"9D5616\", \"Hawaiian Tan\"],\n [\"9DACB7\", \"Gull Gray\"],\n [\"9DC209\", \"Pistachio\"],\n [\"9DE093\", \"Granny Smith Apple\"],\n [\"9DE5FF\", \"Anakiwa\"],\n [\"9E5302\", \"Chelsea Gem\"],\n [\"9E5B40\", \"Sepia Skin\"],\n [\"9EA587\", \"Sage\"],\n [\"9EA91F\", \"Citron\"],\n [\"9EB1CD\", \"Rock Blue\"],\n [\"9EDEE0\", \"Morning Glory\"],\n [\"9F381D\", \"Cognac\"],\n [\"9F821C\", \"Reef Gold\"],\n [\"9F9F9C\", \"Star Dust\"],\n [\"9FA0B1\", \"Santas Gray\"],\n [\"9FD7D3\", \"Sinbad\"],\n [\"9FDD8C\", \"Feijoa\"],\n [\"A02712\", \"Tabasco\"],\n [\"A1750D\", \"Buttered Rum\"],\n [\"A1ADB5\", \"Hit Gray\"],\n [\"A1C50A\", \"Citrus\"],\n [\"A1DAD7\", \"Aqua Island\"],\n [\"A1E9DE\", \"Water Leaf\"],\n [\"A2006D\", \"Flirt\"],\n [\"A23B6C\", \"Rouge\"],\n [\"A26645\", \"Cape Palliser\"],\n [\"A2AAB3\", \"Gray Chateau\"],\n [\"A2AEAB\", \"Edward\"],\n [\"A3807B\", \"Pharlap\"],\n [\"A397B4\", \"Amethyst Smoke\"],\n [\"A3E3ED\", \"Blizzard Blue\"],\n [\"A4A49D\", \"Delta\"],\n [\"A4A6D3\", \"Wistful\"],\n [\"A4AF6E\", \"Green Smoke\"],\n [\"A50B5E\", \"Jazzberry Jam\"],\n [\"A59B91\", \"Zorba\"],\n [\"A5CB0C\", \"Bahia\"],\n [\"A62F20\", \"Roof Terracotta\"],\n [\"A65529\", \"Paarl\"],\n [\"A68B5B\", \"Barley Corn\"],\n [\"A69279\", \"Donkey Brown\"],\n [\"A6A29A\", \"Dawn\"],\n [\"A72525\", \"Mexican Red\"],\n [\"A7882C\", \"Luxor Gold\"],\n [\"A85307\", \"Rich Gold\"],\n [\"A86515\", \"Reno Sand\"],\n [\"A86B6B\", \"Coral Tree\"],\n [\"A8989B\", \"Dusty Gray\"],\n [\"A899E6\", \"Dull Lavender\"],\n [\"A8A589\", \"Tallow\"],\n [\"A8AE9C\", \"Bud\"],\n [\"A8AF8E\", \"Locust\"],\n [\"A8BD9F\", \"Norway\"],\n [\"A8E3BD\", \"Chinook\"],\n [\"A9A491\", \"Gray Olive\"],\n [\"A9ACB6\", \"Aluminium\"],\n [\"A9B2C3\", \"Cadet Blue\"],\n [\"A9B497\", \"Schist\"],\n [\"A9BDBF\", \"Tower Gray\"],\n [\"A9BEF2\", \"Perano\"],\n [\"A9C6C2\", \"Opal\"],\n [\"AA375A\", \"Night Shadz\"],\n [\"AA4203\", \"Fire\"],\n [\"AA8B5B\", \"Muesli\"],\n [\"AA8D6F\", \"Sandal\"],\n [\"AAA5A9\", \"Shady Lady\"],\n [\"AAA9CD\", \"Logan\"],\n [\"AAABB7\", \"Spun Pearl\"],\n [\"AAD6E6\", \"Regent St Blue\"],\n [\"AAF0D1\", \"Magic Mint\"],\n [\"AB0563\", \"Lipstick\"],\n [\"AB3472\", \"Royal Heath\"],\n [\"AB917A\", \"Sandrift\"],\n [\"ABA0D9\", \"Cold Purple\"],\n [\"ABA196\", \"Bronco\"],\n [\"AC8A56\", \"Limed Oak\"],\n [\"AC91CE\", \"East Side\"],\n [\"AC9E22\", \"Lemon Ginger\"],\n [\"ACA494\", \"Napa\"],\n [\"ACA586\", \"Hillary\"],\n [\"ACA59F\", \"Cloudy\"],\n [\"ACACAC\", \"Silver Chalice\"],\n [\"ACB78E\", \"Swamp Green\"],\n [\"ACCBB1\", \"Spring Rain\"],\n [\"ACDD4D\", \"Conifer\"],\n [\"ACE1AF\", \"Celadon\"],\n [\"AD781B\", \"Mandalay\"],\n [\"ADBED1\", \"Casper\"],\n [\"ADDFAD\", \"Moss Green\"],\n [\"ADE6C4\", \"Padua\"],\n [\"ADFF2F\", \"Green Yellow\"],\n [\"AE4560\", \"Hippie Pink\"],\n [\"AE6020\", \"Desert\"],\n [\"AE809E\", \"Bouquet\"],\n [\"AF4035\", \"Medium Carmine\"],\n [\"AF4D43\", \"Apple Blossom\"],\n [\"AF593E\", \"Brown Rust\"],\n [\"AF8751\", \"Driftwood\"],\n [\"AF8F2C\", \"Alpine\"],\n [\"AF9F1C\", \"Lucky\"],\n [\"AFA09E\", \"Martini\"],\n [\"AFB1B8\", \"Bombay\"],\n [\"AFBDD9\", \"Pigeon Post\"],\n [\"B04C6A\", \"Cadillac\"],\n [\"B05D54\", \"Matrix\"],\n [\"B05E81\", \"Tapestry\"],\n [\"B06608\", \"Mai Tai\"],\n [\"B09A95\", \"Del Rio\"],\n [\"B0E0E6\", \"Powder Blue\"],\n [\"B0E313\", \"Inch Worm\"],\n [\"B10000\", \"Bright Red\"],\n [\"B14A0B\", \"Vesuvius\"],\n [\"B1610B\", \"Pumpkin Skin\"],\n [\"B16D52\", \"Santa Fe\"],\n [\"B19461\", \"Teak\"],\n [\"B1E2C1\", \"Fringy Flower\"],\n [\"B1F4E7\", \"Ice Cold\"],\n [\"B20931\", \"Shiraz\"],\n [\"B2A1EA\", \"Biloba Flower\"],\n [\"B32D29\", \"Tall Poppy\"],\n [\"B35213\", \"Fiery Orange\"],\n [\"B38007\", \"Hot Toddy\"],\n [\"B3AF95\", \"Taupe Gray\"],\n [\"B3C110\", \"La Rioja\"],\n [\"B43332\", \"Well Read\"],\n [\"B44668\", \"Blush\"],\n [\"B4CFD3\", \"Jungle Mist\"],\n [\"B57281\", \"Turkish Rose\"],\n [\"B57EDC\", \"Lavender\"],\n [\"B5A27F\", \"Mongoose\"],\n [\"B5B35C\", \"Olive Green\"],\n [\"B5D2CE\", \"Jet Stream\"],\n [\"B5ECDF\", \"Cruise\"],\n [\"B6316C\", \"Hibiscus\"],\n [\"B69D98\", \"Thatch\"],\n [\"B6B095\", \"Heathered Gray\"],\n [\"B6BAA4\", \"Eagle\"],\n [\"B6D1EA\", \"Spindle\"],\n [\"B6D3BF\", \"Gum Leaf\"],\n [\"B7410E\", \"Rust\"],\n [\"B78E5C\", \"Muddy Waters\"],\n [\"B7A214\", \"Sahara\"],\n [\"B7A458\", \"Husk\"],\n [\"B7B1B1\", \"Nobel\"],\n [\"B7C3D0\", \"Heather\"],\n [\"B7F0BE\", \"Madang\"],\n [\"B81104\", \"Milano Red\"],\n [\"B87333\", \"Copper\"],\n [\"B8B56A\", \"Gimblet\"],\n [\"B8C1B1\", \"Green Spring\"],\n [\"B8C25D\", \"Celery\"],\n [\"B8E0F9\", \"Sail\"],\n [\"B94E48\", \"Chestnut\"],\n [\"B95140\", \"Crail\"],\n [\"B98D28\", \"Marigold\"],\n [\"B9C46A\", \"Wild Willow\"],\n [\"B9C8AC\", \"Rainee\"],\n [\"BA0101\", \"Guardsman Red\"],\n [\"BA450C\", \"Rock Spray\"],\n [\"BA6F1E\", \"Bourbon\"],\n [\"BA7F03\", \"Pirate Gold\"],\n [\"BAB1A2\", \"Nomad\"],\n [\"BAC7C9\", \"Submarine\"],\n [\"BAEEF9\", \"Charlotte\"],\n [\"BB3385\", \"Medium Red Violet\"],\n [\"BB8983\", \"Brandy Rose\"],\n [\"BBD009\", \"Rio Grande\"],\n [\"BBD7C1\", \"Surf\"],\n [\"BCC9C2\", \"Powder Ash\"],\n [\"BD5E2E\", \"Tuscany\"],\n [\"BD978E\", \"Quicksand\"],\n [\"BDB1A8\", \"Silk\"],\n [\"BDB2A1\", \"Malta\"],\n [\"BDB3C7\", \"Chatelle\"],\n [\"BDBBD7\", \"Lavender Gray\"],\n [\"BDBDC6\", \"French Gray\"],\n [\"BDC8B3\", \"Clay Ash\"],\n [\"BDC9CE\", \"Loblolly\"],\n [\"BDEDFD\", \"French Pass\"],\n [\"BEA6C3\", \"London Hue\"],\n [\"BEB5B7\", \"Pink Swan\"],\n [\"BEDE0D\", \"Fuego\"],\n [\"BF5500\", \"Rose of Sharon\"],\n [\"BFB8B0\", \"Tide\"],\n [\"BFBED8\", \"Blue Haze\"],\n [\"BFC1C2\", \"Silver Sand\"],\n [\"BFC921\", \"Key Lime Pie\"],\n [\"BFDBE2\", \"Ziggurat\"],\n [\"BFFF00\", \"Lime\"],\n [\"C02B18\", \"Thunderbird\"],\n [\"C04737\", \"Mojo\"],\n [\"C08081\", \"Old Rose\"],\n [\"C0C0C0\", \"Silver\"],\n [\"C0D3B9\", \"Pale Leaf\"],\n [\"C0D8B6\", \"Pixie Green\"],\n [\"C1440E\", \"Tia Maria\"],\n [\"C154C1\", \"Fuchsia Pink\"],\n [\"C1A004\", \"Buddha Gold\"],\n [\"C1B7A4\", \"Bison Hide\"],\n [\"C1BAB0\", \"Tea\"],\n [\"C1BECD\", \"Gray Suit\"],\n [\"C1D7B0\", \"Sprout\"],\n [\"C1F07C\", \"Sulu\"],\n [\"C26B03\", \"Indochine\"],\n [\"C2955D\", \"Twine\"],\n [\"C2BDB6\", \"Cotton Seed\"],\n [\"C2CAC4\", \"Pumice\"],\n [\"C2E8E5\", \"Jagged Ice\"],\n [\"C32148\", \"Maroon Flush\"],\n [\"C3B091\", \"Indian Khaki\"],\n [\"C3BFC1\", \"Pale Slate\"],\n [\"C3C3BD\", \"Gray Nickel\"],\n [\"C3CDE6\", \"Periwinkle Gray\"],\n [\"C3D1D1\", \"Tiara\"],\n [\"C3DDF9\", \"Tropical Blue\"],\n [\"C41E3A\", \"Cardinal\"],\n [\"C45655\", \"Fuzzy Wuzzy Brown\"],\n [\"C45719\", \"Orange Roughy\"],\n [\"C4C4BC\", \"Mist Gray\"],\n [\"C4D0B0\", \"Coriander\"],\n [\"C4F4EB\", \"Mint Tulip\"],\n [\"C54B8C\", \"Mulberry\"],\n [\"C59922\", \"Nugget\"],\n [\"C5994B\", \"Tussock\"],\n [\"C5DBCA\", \"Sea Mist\"],\n [\"C5E17A\", \"Yellow Green\"],\n [\"C62D42\", \"Brick Red\"],\n [\"C6726B\", \"Contessa\"],\n [\"C69191\", \"Oriental Pink\"],\n [\"C6A84B\", \"Roti\"],\n [\"C6C3B5\", \"Ash\"],\n [\"C6C8BD\", \"Kangaroo\"],\n [\"C6E610\", \"Las Palmas\"],\n [\"C7031E\", \"Monza\"],\n [\"C71585\", \"Red Violet\"],\n [\"C7BCA2\", \"Coral Reef\"],\n [\"C7C1FF\", \"Melrose\"],\n [\"C7C4BF\", \"Cloud\"],\n [\"C7C9D5\", \"Ghost\"],\n [\"C7CD90\", \"Pine Glade\"],\n [\"C7DDE5\", \"Botticelli\"],\n [\"C88A65\", \"Antique Brass\"],\n [\"C8A2C8\", \"Lilac\"],\n [\"C8A528\", \"Hokey Pokey\"],\n [\"C8AABF\", \"Lily\"],\n [\"C8B568\", \"Laser\"],\n [\"C8E3D7\", \"Edgewater\"],\n [\"C96323\", \"Piper\"],\n [\"C99415\", \"Pizza\"],\n [\"C9A0DC\", \"Light Wisteria\"],\n [\"C9B29B\", \"Rodeo Dust\"],\n [\"C9B35B\", \"Sundance\"],\n [\"C9B93B\", \"Earls Green\"],\n [\"C9C0BB\", \"Silver Rust\"],\n [\"C9D9D2\", \"Conch\"],\n [\"C9FFA2\", \"Reef\"],\n [\"C9FFE5\", \"Aero Blue\"],\n [\"CA3435\", \"Flush Mahogany\"],\n [\"CABB48\", \"Turmeric\"],\n [\"CADCD4\", \"Paris White\"],\n [\"CAE00D\", \"Bitter Lemon\"],\n [\"CAE6DA\", \"Skeptic\"],\n [\"CB8FA9\", \"Viola\"],\n [\"CBCAB6\", \"Foggy Gray\"],\n [\"CBD3B0\", \"Green Mist\"],\n [\"CBDBD6\", \"Nebula\"],\n [\"CC3333\", \"Persian Red\"],\n [\"CC5500\", \"Burnt Orange\"],\n [\"CC7722\", \"Ochre\"],\n [\"CC8899\", \"Puce\"],\n [\"CCCAA8\", \"Thistle Green\"],\n [\"CCCCFF\", \"Periwinkle\"],\n [\"CCFF00\", \"Electric Lime\"],\n [\"CD5700\", \"Tenn\"],\n [\"CD5C5C\", \"Chestnut Rose\"],\n [\"CD8429\", \"Brandy Punch\"],\n [\"CDF4FF\", \"Onahau\"],\n [\"CEB98F\", \"Sorrell Brown\"],\n [\"CEBABA\", \"Cold Turkey\"],\n [\"CEC291\", \"Yuma\"],\n [\"CEC7A7\", \"Chino\"],\n [\"CFA39D\", \"Eunry\"],\n [\"CFB53B\", \"Old Gold\"],\n [\"CFDCCF\", \"Tasman\"],\n [\"CFE5D2\", \"Surf Crest\"],\n [\"CFF9F3\", \"Humming Bird\"],\n [\"CFFAF4\", \"Scandal\"],\n [\"D05F04\", \"Red Stage\"],\n [\"D06DA1\", \"Hopbush\"],\n [\"D07D12\", \"Meteor\"],\n [\"D0BEF8\", \"Perfume\"],\n [\"D0C0E5\", \"Prelude\"],\n [\"D0F0C0\", \"Tea Green\"],\n [\"D18F1B\", \"Geebung\"],\n [\"D1BEA8\", \"Vanilla\"],\n [\"D1C6B4\", \"Soft Amber\"],\n [\"D1D2CA\", \"Celeste\"],\n [\"D1D2DD\", \"Mischka\"],\n [\"D1E231\", \"Pear\"],\n [\"D2691E\", \"Hot Cinnamon\"],\n [\"D27D46\", \"Raw Sienna\"],\n [\"D29EAA\", \"Careys Pink\"],\n [\"D2B48C\", \"Tan\"],\n [\"D2DA97\", \"Deco\"],\n [\"D2F6DE\", \"Blue Romance\"],\n [\"D2F8B0\", \"Gossip\"],\n [\"D3CBBA\", \"Sisal\"],\n [\"D3CDC5\", \"Swirl\"],\n [\"D47494\", \"Charm\"],\n [\"D4B6AF\", \"Clam Shell\"],\n [\"D4BF8D\", \"Straw\"],\n [\"D4C4A8\", \"Akaroa\"],\n [\"D4CD16\", \"Bird Flower\"],\n [\"D4D7D9\", \"Iron\"],\n [\"D4DFE2\", \"Geyser\"],\n [\"D4E2FC\", \"Hawkes Blue\"],\n [\"D54600\", \"Grenadier\"],\n [\"D591A4\", \"Can Can\"],\n [\"D59A6F\", \"Whiskey\"],\n [\"D5D195\", \"Winter Hazel\"],\n [\"D5F6E3\", \"Granny Apple\"],\n [\"D69188\", \"My Pink\"],\n [\"D6C562\", \"Tacha\"],\n [\"D6CEF6\", \"Moon Raker\"],\n [\"D6D6D1\", \"Quill Gray\"],\n [\"D6FFDB\", \"Snowy Mint\"],\n [\"D7837F\", \"New York Pink\"],\n [\"D7C498\", \"Pavlova\"],\n [\"D7D0FF\", \"Fog\"],\n [\"D84437\", \"Valencia\"],\n [\"D87C63\", \"Japonica\"],\n [\"D8BFD8\", \"Thistle\"],\n [\"D8C2D5\", \"Maverick\"],\n [\"D8FCFA\", \"Foam\"],\n [\"D94972\", \"Cabaret\"],\n [\"D99376\", \"Burning Sand\"],\n [\"D9B99B\", \"Cameo\"],\n [\"D9D6CF\", \"Timberwolf\"],\n [\"D9DCC1\", \"Tana\"],\n [\"D9E4F5\", \"Link Water\"],\n [\"D9F7FF\", \"Mabel\"],\n [\"DA3287\", \"Cerise\"],\n [\"DA5B38\", \"Flame Pea\"],\n [\"DA6304\", \"Bamboo\"],\n [\"DA6A41\", \"Red Damask\"],\n [\"DA70D6\", \"Orchid\"],\n [\"DA8A67\", \"Copperfield\"],\n [\"DAA520\", \"Golden Grass\"],\n [\"DAECD6\", \"Zanah\"],\n [\"DAF4F0\", \"Iceberg\"],\n [\"DAFAFF\", \"Oyster Bay\"],\n [\"DB5079\", \"Cranberry\"],\n [\"DB9690\", \"Petite Orchid\"],\n [\"DB995E\", \"Di Serria\"],\n [\"DBDBDB\", \"Alto\"],\n [\"DBFFF8\", \"Frosted Mint\"],\n [\"DC143C\", \"Crimson\"],\n [\"DC4333\", \"Punch\"],\n [\"DCB20C\", \"Galliano\"],\n [\"DCB4BC\", \"Blossom\"],\n [\"DCD747\", \"Wattle\"],\n [\"DCD9D2\", \"Westar\"],\n [\"DCDDCC\", \"Moon Mist\"],\n [\"DCEDB4\", \"Caper\"],\n [\"DCF0EA\", \"Swans Down\"],\n [\"DDD6D5\", \"Swiss Coffee\"],\n [\"DDF9F1\", \"White Ice\"],\n [\"DE3163\", \"Cerise Red\"],\n [\"DE6360\", \"Roman\"],\n [\"DEA681\", \"Tumbleweed\"],\n [\"DEBA13\", \"Gold Tips\"],\n [\"DEC196\", \"Brandy\"],\n [\"DECBC6\", \"Wafer\"],\n [\"DED4A4\", \"Sapling\"],\n [\"DED717\", \"Barberry\"],\n [\"DEE5C0\", \"Beryl Green\"],\n [\"DEF5FF\", \"Pattens Blue\"],\n [\"DF73FF\", \"Heliotrope\"],\n [\"DFBE6F\", \"Apache\"],\n [\"DFCD6F\", \"Chenin\"],\n [\"DFCFDB\", \"Lola\"],\n [\"DFECDA\", \"Willow Brook\"],\n [\"DFFF00\", \"Chartreuse Yellow\"],\n [\"E0B0FF\", \"Mauve\"],\n [\"E0B646\", \"Anzac\"],\n [\"E0B974\", \"Harvest Gold\"],\n [\"E0C095\", \"Calico\"],\n [\"E0FFFF\", \"Baby Blue\"],\n [\"E16865\", \"Sunglo\"],\n [\"E1BC64\", \"Equator\"],\n [\"E1C0C8\", \"Pink Flare\"],\n [\"E1E6D6\", \"Periglacial Blue\"],\n [\"E1EAD4\", \"Kidnapper\"],\n [\"E1F6E8\", \"Tara\"],\n [\"E25465\", \"Mandy\"],\n [\"E2725B\", \"Terracotta\"],\n [\"E28913\", \"Golden Bell\"],\n [\"E292C0\", \"Shocking\"],\n [\"E29418\", \"Dixie\"],\n [\"E29CD2\", \"Light Orchid\"],\n [\"E2D8ED\", \"Snuff\"],\n [\"E2EBED\", \"Mystic\"],\n [\"E2F3EC\", \"Apple Green\"],\n [\"E30B5C\", \"Razzmatazz\"],\n [\"E32636\", \"Alizarin Crimson\"],\n [\"E34234\", \"Cinnabar\"],\n [\"E3BEBE\", \"Cavern Pink\"],\n [\"E3F5E1\", \"Peppermint\"],\n [\"E3F988\", \"Mindaro\"],\n [\"E47698\", \"Deep Blush\"],\n [\"E49B0F\", \"Gamboge\"],\n [\"E4C2D5\", \"Melanie\"],\n [\"E4CFDE\", \"Twilight\"],\n [\"E4D1C0\", \"Bone\"],\n [\"E4D422\", \"Sunflower\"],\n [\"E4D5B7\", \"Grain Brown\"],\n [\"E4D69B\", \"Zombie\"],\n [\"E4F6E7\", \"Frostee\"],\n [\"E4FFD1\", \"Snow Flurry\"],\n [\"E52B50\", \"Amaranth\"],\n [\"E5841B\", \"Zest\"],\n [\"E5CCC9\", \"Dust Storm\"],\n [\"E5D7BD\", \"Stark White\"],\n [\"E5D8AF\", \"Hampton\"],\n [\"E5E0E1\", \"Bon Jour\"],\n [\"E5E5E5\", \"Mercury\"],\n [\"E5F9F6\", \"Polar\"],\n [\"E64E03\", \"Trinidad\"],\n [\"E6BE8A\", \"Gold Sand\"],\n [\"E6BEA5\", \"Cashmere\"],\n [\"E6D7B9\", \"Double Spanish White\"],\n [\"E6E4D4\", \"Satin Linen\"],\n [\"E6F2EA\", \"Harp\"],\n [\"E6F8F3\", \"Off Green\"],\n [\"E6FFE9\", \"Hint of Green\"],\n [\"E6FFFF\", \"Tranquil\"],\n [\"E77200\", \"Mango Tango\"],\n [\"E7730A\", \"Christine\"],\n [\"E79F8C\", \"Tonys Pink\"],\n [\"E79FC4\", \"Kobi\"],\n [\"E7BCB4\", \"Rose Fog\"],\n [\"E7BF05\", \"Corn\"],\n [\"E7CD8C\", \"Putty\"],\n [\"E7ECE6\", \"Gray Nurse\"],\n [\"E7F8FF\", \"Lily White\"],\n [\"E7FEFF\", \"Bubbles\"],\n [\"E89928\", \"Fire Bush\"],\n [\"E8B9B3\", \"Shilo\"],\n [\"E8E0D5\", \"Pearl Bush\"],\n [\"E8EBE0\", \"Green White\"],\n [\"E8F1D4\", \"Chrome White\"],\n [\"E8F2EB\", \"Gin\"],\n [\"E8F5F2\", \"Aqua Squeeze\"],\n [\"E96E00\", \"Clementine\"],\n [\"E97451\", \"Burnt Sienna\"],\n [\"E97C07\", \"Tahiti Gold\"],\n [\"E9CECD\", \"Oyster Pink\"],\n [\"E9D75A\", \"Confetti\"],\n [\"E9E3E3\", \"Ebb\"],\n [\"E9F8ED\", \"Ottoman\"],\n [\"E9FFFD\", \"Clear Day\"],\n [\"EA88A8\", \"Carissma\"],\n [\"EAAE69\", \"Porsche\"],\n [\"EAB33B\", \"Tulip Tree\"],\n [\"EAC674\", \"Rob Roy\"],\n [\"EADAB8\", \"Raffia\"],\n [\"EAE8D4\", \"White Rock\"],\n [\"EAF6EE\", \"Panache\"],\n [\"EAF6FF\", \"Solitude\"],\n [\"EAF9F5\", \"Aqua Spring\"],\n [\"EAFFFE\", \"Dew\"],\n [\"EB9373\", \"Apricot\"],\n [\"EBC2AF\", \"Zinnwaldite\"],\n [\"ECA927\", \"Fuel Yellow\"],\n [\"ECC54E\", \"Ronchi\"],\n [\"ECC7EE\", \"French Lilac\"],\n [\"ECCDB9\", \"Just Right\"],\n [\"ECE090\", \"Wild Rice\"],\n [\"ECEBBD\", \"Fall Green\"],\n [\"ECEBCE\", \"Aths Special\"],\n [\"ECF245\", \"Starship\"],\n [\"ED0A3F\", \"Red Ribbon\"],\n [\"ED7A1C\", \"Tango\"],\n [\"ED9121\", \"Carrot Orange\"],\n [\"ED989E\", \"Sea Pink\"],\n [\"EDB381\", \"Tacao\"],\n [\"EDC9AF\", \"Desert Sand\"],\n [\"EDCDAB\", \"Pancho\"],\n [\"EDDCB1\", \"Chamois\"],\n [\"EDEA99\", \"Primrose\"],\n [\"EDF5DD\", \"Frost\"],\n [\"EDF5F5\", \"Aqua Haze\"],\n [\"EDF6FF\", \"Zumthor\"],\n [\"EDF9F1\", \"Narvik\"],\n [\"EDFC84\", \"Honeysuckle\"],\n [\"EE82EE\", \"Lavender Magenta\"],\n [\"EEC1BE\", \"Beauty Bush\"],\n [\"EED794\", \"Chalky\"],\n [\"EED9C4\", \"Almond\"],\n [\"EEDC82\", \"Flax\"],\n [\"EEDEDA\", \"Bizarre\"],\n [\"EEE3AD\", \"Double Colonial White\"],\n [\"EEEEE8\", \"Cararra\"],\n [\"EEEF78\", \"Manz\"],\n [\"EEF0C8\", \"Tahuna Sands\"],\n [\"EEF0F3\", \"Athens Gray\"],\n [\"EEF3C3\", \"Tusk\"],\n [\"EEF4DE\", \"Loafer\"],\n [\"EEF6F7\", \"Catskill White\"],\n [\"EEFDFF\", \"Twilight Blue\"],\n [\"EEFF9A\", \"Jonquil\"],\n [\"EEFFE2\", \"Rice Flower\"],\n [\"EF863F\", \"Jaffa\"],\n [\"EFEFEF\", \"Gallery\"],\n [\"EFF2F3\", \"Porcelain\"],\n [\"F091A9\", \"Mauvelous\"],\n [\"F0D52D\", \"Golden Dream\"],\n [\"F0DB7D\", \"Golden Sand\"],\n [\"F0DC82\", \"Buff\"],\n [\"F0E2EC\", \"Prim\"],\n [\"F0E68C\", \"Khaki\"],\n [\"F0EEFD\", \"Selago\"],\n [\"F0EEFF\", \"Titan White\"],\n [\"F0F8FF\", \"Alice Blue\"],\n [\"F0FCEA\", \"Feta\"],\n [\"F18200\", \"Gold Drop\"],\n [\"F19BAB\", \"Wewak\"],\n [\"F1E788\", \"Sahara Sand\"],\n [\"F1E9D2\", \"Parchment\"],\n [\"F1E9FF\", \"Blue Chalk\"],\n [\"F1EEC1\", \"Mint Julep\"],\n [\"F1F1F1\", \"Seashell\"],\n [\"F1F7F2\", \"Saltpan\"],\n [\"F1FFAD\", \"Tidal\"],\n [\"F1FFC8\", \"Chiffon\"],\n [\"F2552A\", \"Flamingo\"],\n [\"F28500\", \"Tangerine\"],\n [\"F2C3B2\", \"Mandys Pink\"],\n [\"F2F2F2\", \"Concrete\"],\n [\"F2FAFA\", \"Black Squeeze\"],\n [\"F34723\", \"Pomegranate\"],\n [\"F3AD16\", \"Buttercup\"],\n [\"F3D69D\", \"New Orleans\"],\n [\"F3D9DF\", \"Vanilla Ice\"],\n [\"F3E7BB\", \"Sidecar\"],\n [\"F3E9E5\", \"Dawn Pink\"],\n [\"F3EDCF\", \"Wheatfield\"],\n [\"F3FB62\", \"Canary\"],\n [\"F3FBD4\", \"Orinoco\"],\n [\"F3FFD8\", \"Carla\"],\n [\"F400A1\", \"Hollywood Cerise\"],\n [\"F4A460\", \"Sandy brown\"],\n [\"F4C430\", \"Saffron\"],\n [\"F4D81C\", \"Ripe Lemon\"],\n [\"F4EBD3\", \"Janna\"],\n [\"F4F2EE\", \"Pampas\"],\n [\"F4F4F4\", \"Wild Sand\"],\n [\"F4F8FF\", \"Zircon\"],\n [\"F57584\", \"Froly\"],\n [\"F5C85C\", \"Cream Can\"],\n [\"F5C999\", \"Manhattan\"],\n [\"F5D5A0\", \"Maize\"],\n [\"F5DEB3\", \"Wheat\"],\n [\"F5E7A2\", \"Sandwisp\"],\n [\"F5E7E2\", \"Pot Pourri\"],\n [\"F5E9D3\", \"Albescent White\"],\n [\"F5EDEF\", \"Soft Peach\"],\n [\"F5F3E5\", \"Ecru White\"],\n [\"F5F5DC\", \"Beige\"],\n [\"F5FB3D\", \"Golden Fizz\"],\n [\"F5FFBE\", \"Australian Mint\"],\n [\"F64A8A\", \"French Rose\"],\n [\"F653A6\", \"Brilliant Rose\"],\n [\"F6A4C9\", \"Illusion\"],\n [\"F6F0E6\", \"Merino\"],\n [\"F6F7F7\", \"Black Haze\"],\n [\"F6FFDC\", \"Spring Sun\"],\n [\"F7468A\", \"Violet Red\"],\n [\"F77703\", \"Chilean Fire\"],\n [\"F77FBE\", \"Persian Pink\"],\n [\"F7B668\", \"Rajah\"],\n [\"F7C8DA\", \"Azalea\"],\n [\"F7DBE6\", \"We Peep\"],\n [\"F7F2E1\", \"Quarter Spanish White\"],\n [\"F7F5FA\", \"Whisper\"],\n [\"F7FAF7\", \"Snow Drift\"],\n [\"F8B853\", \"Casablanca\"],\n [\"F8C3DF\", \"Chantilly\"],\n [\"F8D9E9\", \"Cherub\"],\n [\"F8DB9D\", \"Marzipan\"],\n [\"F8DD5C\", \"Energy Yellow\"],\n [\"F8E4BF\", \"Givry\"],\n [\"F8F0E8\", \"White Linen\"],\n [\"F8F4FF\", \"Magnolia\"],\n [\"F8F6F1\", \"Spring Wood\"],\n [\"F8F7DC\", \"Coconut Cream\"],\n [\"F8F7FC\", \"White Lilac\"],\n [\"F8F8F7\", \"Desert Storm\"],\n [\"F8F99C\", \"Texas\"],\n [\"F8FACD\", \"Corn Field\"],\n [\"F8FDD3\", \"Mimosa\"],\n [\"F95A61\", \"Carnation\"],\n [\"F9BF58\", \"Saffron Mango\"],\n [\"F9E0ED\", \"Carousel Pink\"],\n [\"F9E4BC\", \"Dairy Cream\"],\n [\"F9E663\", \"Portica\"],\n [\"F9EAF3\", \"Amour\"],\n [\"F9F8E4\", \"Rum Swizzle\"],\n [\"F9FF8B\", \"Dolly\"],\n [\"F9FFF6\", \"Sugar Cane\"],\n [\"FA7814\", \"Ecstasy\"],\n [\"FA9D5A\", \"Tan Hide\"],\n [\"FAD3A2\", \"Corvette\"],\n [\"FADFAD\", \"Peach Yellow\"],\n [\"FAE600\", \"Turbo\"],\n [\"FAEAB9\", \"Astra\"],\n [\"FAECCC\", \"Champagne\"],\n [\"FAF0E6\", \"Linen\"],\n [\"FAF3F0\", \"Fantasy\"],\n [\"FAF7D6\", \"Citrine White\"],\n [\"FAFAFA\", \"Alabaster\"],\n [\"FAFDE4\", \"Hint of Yellow\"],\n [\"FAFFA4\", \"Milan\"],\n [\"FB607F\", \"Brink Pink\"],\n [\"FB8989\", \"Geraldine\"],\n [\"FBA0E3\", \"Lavender Rose\"],\n [\"FBA129\", \"Sea Buckthorn\"],\n [\"FBAC13\", \"Sun\"],\n [\"FBAED2\", \"Lavender Pink\"],\n [\"FBB2A3\", \"Rose Bud\"],\n [\"FBBEDA\", \"Cupid\"],\n [\"FBCCE7\", \"Classic Rose\"],\n [\"FBCEB1\", \"Apricot Peach\"],\n [\"FBE7B2\", \"Banana Mania\"],\n [\"FBE870\", \"Marigold Yellow\"],\n [\"FBE96C\", \"Festival\"],\n [\"FBEA8C\", \"Sweet Corn\"],\n [\"FBEC5D\", \"Candy Corn\"],\n [\"FBF9F9\", \"Hint of Red\"],\n [\"FBFFBA\", \"Shalimar\"],\n [\"FC0FC0\", \"Shocking Pink\"],\n [\"FC80A5\", \"Tickle Me Pink\"],\n [\"FC9C1D\", \"Tree Poppy\"],\n [\"FCC01E\", \"Lightning Yellow\"],\n [\"FCD667\", \"Goldenrod\"],\n [\"FCD917\", \"Candlelight\"],\n [\"FCDA98\", \"Cherokee\"],\n [\"FCF4D0\", \"Double Pearl Lusta\"],\n [\"FCF4DC\", \"Pearl Lusta\"],\n [\"FCF8F7\", \"Vista White\"],\n [\"FCFBF3\", \"Bianca\"],\n [\"FCFEDA\", \"Moon Glow\"],\n [\"FCFFE7\", \"China Ivory\"],\n [\"FCFFF9\", \"Ceramic\"],\n [\"FD0E35\", \"Torch Red\"],\n [\"FD5B78\", \"Wild Watermelon\"],\n [\"FD7B33\", \"Crusta\"],\n [\"FD7C07\", \"Sorbus\"],\n [\"FD9FA2\", \"Sweet Pink\"],\n [\"FDD5B1\", \"Light Apricot\"],\n [\"FDD7E4\", \"Pig Pink\"],\n [\"FDE1DC\", \"Cinderella\"],\n [\"FDE295\", \"Golden Glow\"],\n [\"FDE910\", \"Lemon\"],\n [\"FDF5E6\", \"Old Lace\"],\n [\"FDF6D3\", \"Half Colonial White\"],\n [\"FDF7AD\", \"Drover\"],\n [\"FDFEB8\", \"Pale Prim\"],\n [\"FDFFD5\", \"Cumulus\"],\n [\"FE28A2\", \"Persian Rose\"],\n [\"FE4C40\", \"Sunset Orange\"],\n [\"FE6F5E\", \"Bittersweet\"],\n [\"FE9D04\", \"California\"],\n [\"FEA904\", \"Yellow Sea\"],\n [\"FEBAAD\", \"Melon\"],\n [\"FED33C\", \"Bright Sun\"],\n [\"FED85D\", \"Dandelion\"],\n [\"FEDB8D\", \"Salomie\"],\n [\"FEE5AC\", \"Cape Honey\"],\n [\"FEEBF3\", \"Remy\"],\n [\"FEEFCE\", \"Oasis\"],\n [\"FEF0EC\", \"Bridesmaid\"],\n [\"FEF2C7\", \"Beeswax\"],\n [\"FEF3D8\", \"Bleach White\"],\n [\"FEF4CC\", \"Pipi\"],\n [\"FEF4DB\", \"Half Spanish White\"],\n [\"FEF4F8\", \"Wisp Pink\"],\n [\"FEF5F1\", \"Provincial Pink\"],\n [\"FEF7DE\", \"Half Dutch White\"],\n [\"FEF8E2\", \"Solitaire\"],\n [\"FEF8FF\", \"White Pointer\"],\n [\"FEF9E3\", \"Off Yellow\"],\n [\"FEFCED\", \"Orange White\"],\n [\"FF0000\", \"Red\"],\n [\"FF007F\", \"Rose\"],\n [\"FF00CC\", \"Purple Pizzazz\"],\n [\"FF00FF\", \"Magenta / Fuchsia\"],\n [\"FF2400\", \"Scarlet\"],\n [\"FF3399\", \"Wild Strawberry\"],\n [\"FF33CC\", \"Razzle Dazzle Rose\"],\n [\"FF355E\", \"Radical Red\"],\n [\"FF3F34\", \"Red Orange\"],\n [\"FF4040\", \"Coral Red\"],\n [\"FF4D00\", \"Vermilion\"],\n [\"FF4F00\", \"International Orange\"],\n [\"FF6037\", \"Outrageous Orange\"],\n [\"FF6600\", \"Blaze Orange\"],\n [\"FF66FF\", \"Pink Flamingo\"],\n [\"FF681F\", \"Orange\"],\n [\"FF69B4\", \"Hot Pink\"],\n [\"FF6B53\", \"Persimmon\"],\n [\"FF6FFF\", \"Blush Pink\"],\n [\"FF7034\", \"Burning Orange\"],\n [\"FF7518\", \"Pumpkin\"],\n [\"FF7D07\", \"Flamenco\"],\n [\"FF7F00\", \"Flush Orange\"],\n [\"FF7F50\", \"Coral\"],\n [\"FF8C69\", \"Salmon\"],\n [\"FF9000\", \"Pizazz\"],\n [\"FF910F\", \"West Side\"],\n [\"FF91A4\", \"Pink Salmon\"],\n [\"FF9933\", \"Neon Carrot\"],\n [\"FF9966\", \"Atomic Tangerine\"],\n [\"FF9980\", \"Vivid Tangerine\"],\n [\"FF9E2C\", \"Sunshade\"],\n [\"FFA000\", \"Orange Peel\"],\n [\"FFA194\", \"Mona Lisa\"],\n [\"FFA500\", \"Web Orange\"],\n [\"FFA6C9\", \"Carnation Pink\"],\n [\"FFAB81\", \"Hit Pink\"],\n [\"FFAE42\", \"Yellow Orange\"],\n [\"FFB0AC\", \"Cornflower Lilac\"],\n [\"FFB1B3\", \"Sundown\"],\n [\"FFB31F\", \"My Sin\"],\n [\"FFB555\", \"Texas Rose\"],\n [\"FFB7D5\", \"Cotton Candy\"],\n [\"FFB97B\", \"Macaroni and Cheese\"],\n [\"FFBA00\", \"Selective Yellow\"],\n [\"FFBD5F\", \"Koromiko\"],\n [\"FFBF00\", \"Amber\"],\n [\"FFC0A8\", \"Wax Flower\"],\n [\"FFC0CB\", \"Pink\"],\n [\"FFC3C0\", \"Your Pink\"],\n [\"FFC901\", \"Supernova\"],\n [\"FFCBA4\", \"Flesh\"],\n [\"FFCC33\", \"Sunglow\"],\n [\"FFCC5C\", \"Golden Tainoi\"],\n [\"FFCC99\", \"Peach Orange\"],\n [\"FFCD8C\", \"Chardonnay\"],\n [\"FFD1DC\", \"Pastel Pink\"],\n [\"FFD2B7\", \"Romantic\"],\n [\"FFD38C\", \"Grandis\"],\n [\"FFD700\", \"Gold\"],\n [\"FFD800\", \"School bus Yellow\"],\n [\"FFD8D9\", \"Cosmos\"],\n [\"FFDB58\", \"Mustard\"],\n [\"FFDCD6\", \"Peach Schnapps\"],\n [\"FFDDAF\", \"Caramel\"],\n [\"FFDDCD\", \"Tuft Bush\"],\n [\"FFDDCF\", \"Watusi\"],\n [\"FFDDF4\", \"Pink Lace\"],\n [\"FFDEAD\", \"Navajo White\"],\n [\"FFDEB3\", \"Frangipani\"],\n [\"FFE1DF\", \"Pippin\"],\n [\"FFE1F2\", \"Pale Rose\"],\n [\"FFE2C5\", \"Negroni\"],\n [\"FFE5A0\", \"Cream Brulee\"],\n [\"FFE5B4\", \"Peach\"],\n [\"FFE6C7\", \"Tequila\"],\n [\"FFE772\", \"Kournikova\"],\n [\"FFEAC8\", \"Sandy Beach\"],\n [\"FFEAD4\", \"Karry\"],\n [\"FFEC13\", \"Broom\"],\n [\"FFEDBC\", \"Colonial White\"],\n [\"FFEED8\", \"Derby\"],\n [\"FFEFA1\", \"Vis Vis\"],\n [\"FFEFC1\", \"Egg White\"],\n [\"FFEFD5\", \"Papaya Whip\"],\n [\"FFEFEC\", \"Fair Pink\"],\n [\"FFF0DB\", \"Peach Cream\"],\n [\"FFF0F5\", \"Lavender blush\"],\n [\"FFF14F\", \"Gorse\"],\n [\"FFF1B5\", \"Buttermilk\"],\n [\"FFF1D8\", \"Pink Lady\"],\n [\"FFF1EE\", \"Forget Me Not\"],\n [\"FFF1F9\", \"Tutu\"],\n [\"FFF39D\", \"Picasso\"],\n [\"FFF3F1\", \"Chardon\"],\n [\"FFF46E\", \"Paris Daisy\"],\n [\"FFF4CE\", \"Barley White\"],\n [\"FFF4DD\", \"Egg Sour\"],\n [\"FFF4E0\", \"Sazerac\"],\n [\"FFF4E8\", \"Serenade\"],\n [\"FFF4F3\", \"Chablis\"],\n [\"FFF5EE\", \"Seashell Peach\"],\n [\"FFF5F3\", \"Sauvignon\"],\n [\"FFF6D4\", \"Milk Punch\"],\n [\"FFF6DF\", \"Varden\"],\n [\"FFF6F5\", \"Rose White\"],\n [\"FFF8D1\", \"Baja White\"],\n [\"FFF9E2\", \"Gin Fizz\"],\n [\"FFF9E6\", \"Early Dawn\"],\n [\"FFFACD\", \"Lemon Chiffon\"],\n [\"FFFAF4\", \"Bridal Heath\"],\n [\"FFFBDC\", \"Scotch Mist\"],\n [\"FFFBF9\", \"Soapstone\"],\n [\"FFFC99\", \"Witch Haze\"],\n [\"FFFCEA\", \"Buttery White\"],\n [\"FFFCEE\", \"Island Spice\"],\n [\"FFFDD0\", \"Cream\"],\n [\"FFFDE6\", \"Chilean Heath\"],\n [\"FFFDE8\", \"Travertine\"],\n [\"FFFDF3\", \"Orchid White\"],\n [\"FFFDF4\", \"Quarter Pearl Lusta\"],\n [\"FFFEE1\", \"Half and Half\"],\n [\"FFFEEC\", \"Apricot White\"],\n [\"FFFEF0\", \"Rice Cake\"],\n [\"FFFEF6\", \"Black White\"],\n [\"FFFEFD\", \"Romance\"],\n [\"FFFF00\", \"Yellow\"],\n [\"FFFF66\", \"Laser Lemon\"],\n [\"FFFF99\", \"Pale Canary\"],\n [\"FFFFB4\", \"Portafino\"],\n [\"FFFFF0\", \"Ivory\"],\n [\"FFFFFF\", \"White\"],\n ];\n}\n\nmodule.exports = ntc;\n","/**\n * color.js\n * - extractColorsFromImage\n * - extractColorsFromImageURL\n */\nconst download = require(\"image-downloader\");\nconst path = require(\"path\");\nconst getPixels = require(\"get-pixels\");\nconst { extractColors } = require(\"extract-colors\");\nconst ntc = require(\"./ntc\");\n\nasync function extractColorsFromImageURL(url, toDirectory) {\n try {\n // lets first download the image from url\n const options = {\n url,\n dest: toDirectory, // will be saved to /path/to/dest/image.jpg\n };\n\n console.log(options);\n const { filename } = await download.image(options);\n console.log(\"downloaded \", filename);\n\n // now we can go ahead and get the pixels from the image\n getPixels(filename, (err, pixels) => {\n if (!err) {\n const data = [...pixels.data];\n const [width, height] = pixels.shape;\n\n extractColors({ data, width, height })\n .then((result) => {\n console.log(result);\n const n = new ntc();\n const arr = result.map((c) => {\n const name = n.name(c.hex);\n c.colorName = name;\n return c;\n });\n console.log(arr);\n })\n .catch(console.log);\n }\n });\n } catch (e) {\n throw new Error(e);\n }\n}\n\nmodule.exports = { extractColorsFromImageURL };\n","const { app } = require(\"electron\");\nvar fs = require(\"fs\");\nconst path = require(\"path\");\nconst events = require(\"../events\");\nconst { getFileContents, writeToFile } = require(\"../utils/file\");\n\n// Convert Json to Csv\nconst ObjectsToCsv = require(\"objects-to-csv\");\nconst Transform = require(\"../utils/transform\");\nconst { extractColorsFromImageURL } = require(\"../utils/color\");\nconst https = require(\"https\");\n\nconst configFilename = \"data.json\";\nconst appName = \"Dashboard\";\n\nconst dataController = {\n /**\n * saveLayout\n * Create a workspace from a json configuration object (no template)\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {object} pageObject the page config object\n */\n convertJsonToCsvFile: (win, appId, jsonObject, toFilename = \"test.csv\") => {\n try {\n // filename to the pages file (live pages)\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n \"data\",\n toFilename,\n );\n\n // make sure the file exists...\n const fileContents = getFileContents(filename, \"\");\n\n const csv = new ObjectsToCsv(jsonObject);\n\n csv\n .toDisk(filename)\n .then((result) => {\n win.webContents.send(events.DATA_JSON_TO_CSV_FILE_COMPLETE, {\n succes: true,\n result,\n filename,\n });\n })\n .catch((e) =>\n win.webContents.send(events.DATA_JSON_TO_CSV_FILE_ERROR, {\n error: e.message,\n }),\n );\n } catch (e) {\n win.webContents.send(events.DATA_JSON_TO_CSV_FILE_ERROR, {\n error: e.message,\n });\n }\n },\n\n /**\n * convertJsonToCsvString\n * @param {BrowserWindow} win\n * @param {*} jsonObject array of json objects\n */\n convertJsonToCsvString: (win, jsonObject = []) => {\n try {\n const csv = new ObjectsToCsv(jsonObject);\n csv\n .toString(filename)\n .then((result) => {\n win.webContents.send(events.DATA_JSON_TO_CSV_STRING_COMPLETE, {\n succes: true,\n csvString: result,\n });\n })\n .catch((e) =>\n win.webContents.send(events.DATA_JSON_TO_CSV_STRING_ERROR, {\n error: e.message,\n }),\n );\n } catch (e) {\n win.webContents.send(events.DATA_JSON_TO_CSV_STRING_ERROR, {\n error: e.message,\n });\n }\n },\n\n readLinesFromFile: (win, filepath, lineCount) => {\n try {\n const t = new Transform();\n t.readLinesFromFile(win, filepath, lineCount, events.READ_LINES_UPDATE)\n .then((res) => {\n win.webContents.send(events.READ_LINES_COMPLETE, {\n success: true,\n filepath,\n lineCount,\n lines: res,\n });\n })\n .catch((e) => {\n //console.log(e);\n win.webContents.send(events.READ_LINES_ERROR, {\n error: e.message,\n });\n });\n } catch (error) {\n win.webContents.send(events.READ_LINES_ERROR, {\n error: e.message,\n });\n }\n },\n\n readJSONFromFile: (win, filepath, objectCount = null) => {\n try {\n console.log(\"reading json from file \", filepath, objectCount);\n const t = new Transform();\n t.readJSONFromFile(win, filepath, objectCount, events.READ_JSON_UPDATE)\n .then((res) => {\n win.webContents.send(events.READ_JSON_COMPLETE, {\n success: true,\n filepath,\n });\n })\n .catch((e) => {\n //console.log(e);\n win.webContents.send(events.READ_JSON_ERROR, {\n error: e.message,\n });\n });\n } catch (error) {\n console.log(error);\n win.webContents.send(events.READ_JSON_ERROR, {\n error: e.message,\n });\n }\n },\n\n readDataFromURL: (win, url, toFilepath) => {\n try {\n // Validate URL is https protocol only\n let parsedUrl;\n try {\n parsedUrl = new URL(url);\n } catch {\n throw new Error(\"Invalid URL provided\");\n }\n if (parsedUrl.protocol !== \"https:\") {\n throw new Error(\n \"Only HTTPS URLs are allowed, got: \" + parsedUrl.protocol,\n );\n }\n\n // Validate toFilepath is within the app data directory\n const appDataDir = path.join(app.getPath(\"userData\"), appName);\n const resolvedFilepath = path.resolve(toFilepath);\n if (!resolvedFilepath.startsWith(appDataDir + path.sep)) {\n throw new Error(\n \"File path must be within the application data directory\",\n );\n }\n\n const writeStream = fs.createWriteStream(resolvedFilepath);\n\n https\n .get(url, (resp) => {\n resp.on(\"data\", (chunk) => {\n writeStream.write(chunk);\n });\n\n resp.on(\"end\", () => {\n win.webContents.send(events.READ_DATA_URL_COMPLETE, {\n success: true,\n toFilepath: resolvedFilepath,\n });\n });\n })\n .on(\"error\", (err) => {\n win.webContents.send(events.READ_DATA_URL_ERROR, {\n error: err.message,\n });\n });\n } catch (error) {\n console.log(error);\n win.webContents.send(events.READ_DATA_URL_ERROR, {\n error: error.message,\n });\n }\n },\n\n /**\n * parseXMLStream\n * @param {*} filepath\n * @param {*} outpath\n * @param {*} start\n * @param {*} recordNode\n * @param {*} objectIdKey\n */\n parseXMLStream: (\n win,\n filepath,\n outpath,\n start,\n recordNode = null,\n objectIdKey = null,\n ) => {\n try {\n const t = new Transform();\n t.parseXMLStream(\n filepath,\n outpath,\n start,\n // recordNode,\n // objectIdKey,\n // win,\n // events.PARSE_XML_STREAM_UPDATE\n )\n .then((res) => {\n win.webContents.send(events.PARSE_XML_STREAM_COMPLETE, {\n success: true,\n filepath,\n outpath,\n });\n })\n .catch((e) => {\n console.log(e);\n win.webContents.send(events.PARSE_XML_STREAM_ERROR, {\n error: e.message,\n });\n });\n } catch (e) {\n win.webContents.send(events.PARSE_XML_STREAM_ERROR, {\n error: e.message,\n });\n }\n },\n\n /**\n * parseCSVStream\n * @param {*} win\n * @param {*} filepath\n * @param {*} outpath\n * @param {*} delimiter\n * @param {*} objectIdKey\n * @param {Array} headers optional array of headers to choose from the file\n */\n parseCSVStream: (\n win,\n filepath,\n outpath,\n delimiter = \",\",\n objectIdKey = null,\n headers = null,\n limit = null,\n ) => {\n try {\n const t = new Transform();\n t.parseCSVStream(\n filepath,\n outpath,\n delimiter,\n objectIdKey,\n headers,\n win,\n events.PARSE_CSV_STREAM_UPDATE,\n limit,\n )\n .then((res) => {\n win.webContents.send(events.PARSE_CSV_STREAM_COMPLETE, {\n success: true,\n filepath,\n outpath,\n });\n })\n .catch((e) => {\n console.log(e);\n win.webContents.send(events.PARSE_CSV_STREAM_ERROR, {\n error: e.message,\n });\n });\n } catch (e) {\n win.webContents.send(events.PARSE_CSV_STREAM_ERROR, {\n error: e.message,\n });\n }\n },\n /**\n * saveToFile\n *\n * This will save to the /appName/data directory\n * We want this to happen so that all of the data is accessible regardless of the appId\n * Is this the correct behavior?\n *\n * @param {*} win\n * @param {*} data\n * @param {*} filename\n * @param {*} append\n * @param {*} returnEmpty\n */\n saveToFile: (win, data, filename, append, returnEmpty = {}) => {\n try {\n if (data) {\n // filename to the pages file (live pages)\n const toFilename = path.join(\n app.getPath(\"userData\"),\n appName,\n \"data\",\n filename,\n );\n\n //console.log(\"saving to file \", toFilename);\n\n // // call this to make sure the directory structure exists\n let fileContents = getFileContents(toFilename, returnEmpty);\n if (fileContents === null || fileContents === \"\") {\n fileContents = JSON.stringify(returnEmpty);\n }\n\n // timestamp\n const stamp = Date.now();\n\n let writeContents = null;\n\n if (append === true) {\n // append data\n if (JSON.stringify(returnEmpty) === \"{}\") {\n const tempWriteContents = JSON.parse(fileContents);\n tempWriteContents[stamp] = data;\n writeContents = JSON.stringify(tempWriteContents);\n writeToFile(toFilename, writeContents);\n }\n\n if (JSON.stringify(returnEmpty) === \"[]\") {\n const tempWriteContents = JSON.parse(fileContents);\n tempWriteContents.push({ [stamp]: data });\n writeContents = JSON.stringify(tempWriteContents);\n // writeContents = JSON.parse(fileContents);\n // writeContents.push({ [stamp]: data });\n writeToFile(toFilename, writeContents);\n }\n } else {\n // overwrite existing\n writeContents = JSON.stringify(data);\n if (JSON.stringify(returnEmpty) === \"{}\") {\n writeToFile(\n toFilename,\n writeContents,\n // JSON.stringify({ [stamp]: data })\n );\n }\n if (JSON.stringify(returnEmpty) === \"[]\") {\n writeToFile(\n toFilename,\n writeContents,\n // JSON.stringify([{ [stamp]: data }])\n );\n }\n }\n\n // console.log(events.DATA_SAVE_TO_FILE_COMPLETE, {\n // success: true,\n // filename: toFilename,\n // fileContents,\n // });\n\n win.webContents.send(events.DATA_SAVE_TO_FILE_COMPLETE, {\n success: true,\n filename: toFilename,\n fileContents: JSON.parse(writeContents),\n });\n }\n } catch (e) {\n console.log(e);\n win.webContents.send(events.DATA_SAVE_TO_FILE_ERROR, {\n success: false,\n filename: filename,\n message: e.message,\n });\n }\n },\n\n readFromFile: (win, filename, returnIfEmpty = {}) => {\n try {\n if (filename) {\n // filename to the pages file (live pages)\n const fromFilename = path.join(\n app.getPath(\"userData\"),\n appName,\n \"data\",\n filename,\n );\n console.log(\"reading from file \", fromFilename, returnIfEmpty);\n // make sure the file exists...\n const fileContents = getFileContents(fromFilename, returnIfEmpty);\n\n console.log(\"file contents \", fileContents, fromFilename);\n\n win.webContents.send(events.DATA_READ_FROM_FILE_COMPLETE, {\n succes: true,\n filename: fromFilename,\n data: JSON.stringify(fileContents),\n });\n }\n } catch (e) {\n win.webContents.send(events.DATA_READ_FROM_FILE_ERROR, {\n succes: false,\n message: e.message,\n });\n }\n },\n\n /**\n * transformFile\n * Transform the file from one format to another using the provided mapping function block\n * and arguments that are optional (default - refObj, index)\n * @param {*} win\n * @param {*} filepath\n * @param {*} outFilepath\n * @param {*} mappingFunctionBody\n * @param {*} args\n */\n transformFile: (\n win,\n filepath,\n outFilepath,\n mappingFunctionBody,\n args = [\"refObj\", \"index\"],\n ) => {\n try {\n const t = new Transform();\n t.transformFileToFile(\n win,\n filepath,\n outFilepath,\n mappingFunctionBody,\n args,\n events.TRANSFORM_FILE_UPDATE,\n )\n .then((result) => {\n win.webContents.send(events.TRANSFORM_FILE_COMPLETE, {\n succes: true,\n filename: filepath,\n toFilename: outFilepath,\n });\n })\n .catch((e) => {\n win.webContents.send(events.TRANSFORM_FILE_ERROR, {\n succes: false,\n message: e.message,\n });\n });\n } catch (e) {\n win.webContents.send(events.TRANSFORM_FILE_ERROR, {\n succes: false,\n message: e.message,\n });\n }\n },\n\n extractColorsFromImageURL: (win, url) => {\n try {\n console.log(url);\n const fileExtension = \".jpg\";\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n \"@algolia/dash-electron\",\n \"data\",\n \"imageExtract\" + fileExtension,\n );\n\n console.log(\"filename\", filename);\n\n extractColorsFromImageURL(url, filename)\n .then((result) => console.log(result))\n .catch((e) => console.log(e));\n } catch (e) {\n console.log(e);\n }\n },\n};\n\nmodule.exports = dataController;\n","/**\n * settingsController\n */\n\nconst { app } = require(\"electron\");\nconst path = require(\"path\");\nconst fs = require(\"fs\");\nconst events = require(\"../events\");\nconst { getFileContents, writeToFile } = require(\"../utils/file\");\n\nconst configFilename = \"settings.json\";\nconst appName = \"Dashboard\";\n\n// Helper function to recursively copy directory\nfunction copyDirectory(source, destination) {\n if (!fs.existsSync(destination)) {\n fs.mkdirSync(destination, { recursive: true });\n }\n\n const files = fs.readdirSync(source);\n for (const file of files) {\n const srcPath = path.join(source, file);\n const destPath = path.join(destination, file);\n const stat = fs.lstatSync(srcPath);\n\n // Skip symlinks to prevent following links to sensitive files\n if (stat.isSymbolicLink()) {\n console.warn(`[settingsController] Skipping symlink: ${srcPath}`);\n continue;\n }\n\n if (stat.isDirectory()) {\n copyDirectory(srcPath, destPath);\n } else {\n fs.copyFileSync(srcPath, destPath);\n }\n }\n}\n\nconst settingsController = {\n /**\n * saveSettingsForApplication\n * Save the settings object to a file (settings.json)\n * @param {BrowserWindow} win\n * @param {Object} data the settings object to be saved\n */\n saveSettingsForApplication: (win, data) => {\n try {\n if (data) {\n // <appId>/settings.json\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n configFilename,\n );\n writeToFile(filename, JSON.stringify(data, null, 2));\n console.log(\"[settingsController] Settings saved successfully\");\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n success: true,\n settings: data,\n };\n } else {\n return {\n error: true,\n message: \"No Settings Data provided\",\n };\n }\n } catch (e) {\n console.error(\"[settingsController] Error saving settings:\", e);\n return {\n error: true,\n message: e.message,\n };\n }\n },\n\n /**\n * getSettingsForApplication\n * Get the settings for the entire application, not application ID specific\n * We can write different settings into this file but save ALL into one object.\n * @param {BrowserWindow} win\n */\n getSettingsForApplication: (win) => {\n try {\n // <appId>/settings.json\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n configFilename,\n );\n // make sure the file exists...\n const fileContents = getFileContents(filename, {});\n console.log(\"[settingsController] Settings loaded successfully\");\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n success: true,\n settings: fileContents,\n };\n } catch (e) {\n console.error(\"[settingsController] Error loading settings:\", e);\n return {\n error: true,\n message: e.message,\n settings: {},\n };\n }\n },\n\n /**\n * getDataDirectory\n * Get the current user data directory path\n * Returns the default if not set by user\n * @param {BrowserWindow} win\n */\n getDataDirectory: (win) => {\n try {\n const settingsPath = path.join(\n app.getPath(\"userData\"),\n appName,\n configFilename,\n );\n const settings = getFileContents(settingsPath, {});\n const userDataDir =\n settings.userDataDirectory ||\n path.join(app.getPath(\"userData\"), appName);\n\n console.log(\"[settingsController] Data directory retrieved successfully\");\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n success: true,\n dataDirectory: userDataDir,\n isDefault: !settings.userDataDirectory,\n };\n } catch (e) {\n console.error(\"[settingsController] Error getting data directory:\", e);\n return {\n error: true,\n message: e.message,\n };\n }\n },\n\n /**\n * setDataDirectory\n * Validate and set a new user data directory\n * @param {BrowserWindow} win\n * @param {String} newPath the new directory path\n */\n setDataDirectory: (win, newPath) => {\n try {\n // Validate the path exists and is a directory\n if (!fs.existsSync(newPath)) {\n fs.mkdirSync(newPath, { recursive: true });\n }\n\n const stats = fs.statSync(newPath);\n if (!stats.isDirectory()) {\n throw new Error(\"Path is not a directory\");\n }\n\n // Update settings\n const settingsPath = path.join(\n app.getPath(\"userData\"),\n appName,\n configFilename,\n );\n const settings = getFileContents(settingsPath, {});\n settings.userDataDirectory = newPath;\n writeToFile(settingsPath, JSON.stringify(settings, null, 2));\n\n console.log(\"[settingsController] Data directory set successfully\");\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n success: true,\n dataDirectory: newPath,\n };\n } catch (e) {\n console.error(\"[settingsController] Error setting data directory:\", e);\n return {\n error: true,\n message: e.message,\n };\n }\n },\n\n /**\n * migrateDataDirectory\n * Copy all files from old data directory to new one\n * @param {BrowserWindow} win\n * @param {String} oldPath the old directory path\n * @param {String} newPath the new directory path\n */\n migrateDataDirectory: (win, oldPath, newPath) => {\n try {\n // Resolve paths to prevent traversal\n const resolvedOldPath = path.resolve(oldPath);\n const resolvedNewPath = path.resolve(newPath);\n\n // Validate oldPath is the current configured data directory\n const settingsCheckPath = path.join(\n app.getPath(\"userData\"),\n appName,\n configFilename,\n );\n const currentSettings = getFileContents(settingsCheckPath, {});\n const currentDataDir =\n currentSettings.userDataDirectory ||\n path.join(app.getPath(\"userData\"), appName);\n if (resolvedOldPath !== path.resolve(currentDataDir)) {\n throw new Error(\"Source path must be the current data directory\");\n }\n\n // Block system directories as targets\n const blockedPrefixes = [\n \"/System\",\n \"/usr\",\n \"/bin\",\n \"/etc\",\n \"/var\",\n \"/sbin\",\n \"/lib\",\n ];\n for (const prefix of blockedPrefixes) {\n if (\n resolvedNewPath.startsWith(prefix + \"/\") ||\n resolvedNewPath === prefix\n ) {\n throw new Error(\"Cannot migrate to a system directory: \" + prefix);\n }\n }\n\n // Validate paths\n if (!fs.existsSync(resolvedOldPath)) {\n throw new Error(\"Source directory does not exist\");\n }\n\n if (!fs.existsSync(resolvedNewPath)) {\n fs.mkdirSync(resolvedNewPath, { recursive: true });\n }\n\n // Copy files\n copyDirectory(resolvedOldPath, resolvedNewPath);\n\n // Update settings to use new path\n const settingsPath = path.join(\n app.getPath(\"userData\"),\n appName,\n configFilename,\n );\n const settings = getFileContents(settingsPath, {});\n settings.userDataDirectory = resolvedNewPath;\n writeToFile(settingsPath, JSON.stringify(settings, null, 2));\n\n console.log(\"[settingsController] Data directory migrated successfully\");\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n success: true,\n oldDirectory: resolvedOldPath,\n newDirectory: resolvedNewPath,\n };\n } catch (e) {\n console.error(\"[settingsController] Error migrating data directory:\", e);\n return {\n error: true,\n message: e.message,\n };\n }\n },\n};\n\nmodule.exports = settingsController;\n","/**\n * responseCache.js\n *\n * TTL-based API response cache with in-flight deduplication.\n * Renderer-driven: widget developer includes { cache: true } or { cache: { ttl: N } }\n * in IPC messages to opt-in to caching per call.\n *\n * Usage:\n * // Wrap a handler:\n * ipcMain.handle(\"my-channel\", responseCache.cachedHandler(\"my-channel\", handler));\n *\n * // Widget-side (renderer):\n * window.mainApi.myService.getData({ ...pc, cache: true }); // 30s default\n * window.mainApi.myService.getData({ ...pc, cache: 60000 }); // 60s\n * window.mainApi.myService.getData({ ...pc, cache: { ttl: 120000 } }); // 120s\n * window.mainApi.myService.getData({ ...pc, cache: true, forceRefresh: true }); // bypass\n */\n\nconst cache = new Map(); // key → { data, timestamp, ttl }\nconst inflight = new Map(); // key → Promise\n\nfunction stableHash(obj) {\n const str = JSON.stringify(obj, Object.keys(obj).sort());\n let hash = 5381;\n for (let i = 0; i < str.length; i++) {\n hash = ((hash << 5) + hash + str.charCodeAt(i)) & 0xffffffff;\n }\n return hash.toString(36);\n}\n\nconst responseCache = {\n async get(key, fetcher, options = {}) {\n const { ttl = 30000, forceRefresh = false } = options;\n\n if (!forceRefresh && cache.has(key)) {\n const entry = cache.get(key);\n if (Date.now() - entry.timestamp < entry.ttl) {\n console.log(`[responseCache] HIT ${key}`);\n return entry.data;\n }\n cache.delete(key);\n }\n\n if (!forceRefresh && inflight.has(key)) {\n console.log(`[responseCache] DEDUP ${key}`);\n return inflight.get(key);\n }\n\n console.log(`[responseCache] MISS ${key}`);\n const promise = fetcher();\n inflight.set(key, promise);\n try {\n const data = await promise;\n if (data && !data.error) {\n cache.set(key, { data, timestamp: Date.now(), ttl });\n }\n return data;\n } finally {\n inflight.delete(key);\n }\n },\n\n /**\n * Wrap an ipcMain.handle handler with renderer-driven caching.\n * If the incoming message has a `cache` property, the response is cached.\n * If the message has `forceRefresh: true`, the cache is bypassed.\n *\n * The `cache` and `forceRefresh` properties are stripped from the message\n * before passing to the handler, so handlers receive clean params.\n *\n * Cache parameter forms:\n * cache: true → 30s default TTL\n * cache: 60000 → 60s (number shorthand)\n * cache: { ttl: N } → explicit TTL in ms\n */\n cachedHandler(channelName, handler) {\n return async (e, msg) => {\n const { cache: cacheOpt, forceRefresh, ...params } = msg || {};\n if (cacheOpt) {\n const ttl =\n typeof cacheOpt === \"number\" ? cacheOpt : cacheOpt?.ttl || 30000;\n const key = `${channelName}:${stableHash(params)}`;\n return this.get(key, () => handler(e, params), {\n ttl,\n forceRefresh,\n });\n }\n return handler(e, msg);\n };\n },\n\n invalidate(key) {\n cache.delete(key);\n },\n\n invalidatePrefix(prefix) {\n for (const k of cache.keys()) {\n if (k.startsWith(prefix)) cache.delete(k);\n }\n },\n\n clear() {\n cache.clear();\n inflight.clear();\n },\n\n stats() {\n return {\n entries: cache.size,\n inflight: inflight.size,\n keys: [...cache.keys()],\n };\n },\n};\n\nmodule.exports = responseCache;\n","/**\n * clientCache\n *\n * Generic provider client cache for the main process.\n * Caches API clients (e.g., algoliasearch, Stripe) by provider hash.\n * Factories are registered per provider type; credentials are resolved\n * from the encrypted store — renderer never sends credential fields.\n */\n\nconst providerController = require(\"../controller/providerController\");\n\nconst clients = new Map(); // hash → client\nconst factories = new Map(); // providerType → factoryFn(credentials)\nconst pendingClients = new Map(); // hash → Promise (dedup in-flight)\nconst providerLookup = new Map(); // \"appId:providerName\" → hash (reverse lookup)\n\nconst clientCache = {\n registerFactory(providerType, factoryFn) {\n factories.set(providerType, factoryFn);\n },\n\n async getClient(providerHash, appId, providerName) {\n // Cache hit\n if (clients.has(providerHash)) {\n return clients.get(providerHash);\n }\n\n // Dedup in-flight (same pattern as mcpController.pendingStarts)\n if (pendingClients.has(providerHash)) {\n return pendingClients.get(providerHash);\n }\n\n const promise = this._resolve(providerHash, appId, providerName);\n pendingClients.set(providerHash, promise);\n try {\n return await promise;\n } finally {\n pendingClients.delete(providerHash);\n }\n },\n\n async _resolve(providerHash, appId, providerName) {\n const result = providerController.getProvider(null, appId, providerName);\n if (result.error) throw new Error(result.message);\n\n const { provider } = result;\n const factory = factories.get(provider.type);\n if (!factory) {\n throw new Error(`No client factory for type: ${provider.type}`);\n }\n\n const client = factory(provider.credentials);\n clients.set(providerHash, client);\n providerLookup.set(`${appId}:${providerName}`, providerHash);\n console.log(\n `[clientCache] Created ${provider.type} client (hash: ${providerHash.slice(0, 8)}...)`,\n );\n return client;\n },\n\n invalidate(appId, providerName) {\n const lookupKey = `${appId}:${providerName}`;\n const hash = providerLookup.get(lookupKey);\n if (hash) {\n clients.delete(hash);\n providerLookup.delete(lookupKey);\n console.log(\n `[clientCache] Invalidated ${providerName} (hash: ${hash.slice(0, 8)}...)`,\n );\n }\n },\n\n invalidateAll() {\n const count = clients.size;\n clients.clear();\n providerLookup.clear();\n pendingClients.clear();\n console.log(`[clientCache] Invalidated all (${count} clients cleared)`);\n },\n\n clear() {\n clients.clear();\n providerLookup.clear();\n pendingClients.clear();\n },\n\n /**\n * Register IPC handlers for cache management.\n * Call this once in the consuming app's electron.js alongside setupWidgetRegistryHandlers().\n */\n setupCacheHandlers() {\n const { ipcMain } = require(\"electron\");\n const responseCache = require(\"./responseCache\");\n\n ipcMain.handle(\n \"client-cache-invalidate\",\n async (e, { appId, providerName }) => {\n clientCache.invalidate(appId, providerName);\n responseCache.clear(); // credential change = all responses stale\n return { success: true };\n },\n );\n ipcMain.handle(\"client-cache-invalidate-all\", async () => {\n clientCache.invalidateAll();\n responseCache.clear();\n return { success: true };\n });\n ipcMain.handle(\"response-cache-clear\", async () => {\n responseCache.clear();\n return { success: true };\n });\n ipcMain.handle(\"response-cache-stats\", async () => responseCache.stats());\n },\n};\n\nmodule.exports = clientCache;\n","/**\n * providerController.js\n *\n * Handle provider (credentials) management with encryption\n * Saves encrypted credentials to ~/.userData/Dashboard/{appId}/providers.json\n */\nconst { app, safeStorage } = require(\"electron\");\nconst path = require(\"path\");\nconst { writeFileSync, readFileSync, existsSync } = require(\"fs\");\nconst {\n ensureDirectoryExistence,\n getFileContents,\n writeToFile,\n} = require(\"../utils/file\");\n\nconst appName = \"Dashboard\";\nconst configFilename = \"providers.json\";\n\nconst providerController = {\n /**\n * saveProvider\n * Save a new provider with encrypted credentials\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {string} providerName user-defined name (e.g., \"Algolia Production\")\n * @param {string} providerType provider type (e.g., \"algolia\", \"slack\")\n * @param {object} credentials credentials object\n * @param {string} providerClass \"credential\" (default) or \"mcp\"\n * @param {object} mcpConfig MCP server config (transport, command, args, envMapping) - only for providerClass \"mcp\"\n * @param {string[]|null} allowedTools optional list of allowed tool names - only for providerClass \"mcp\"\n */\n saveProvider: (\n win,\n appId,\n providerName,\n providerType,\n credentials,\n providerClass = \"credential\",\n mcpConfig = null,\n allowedTools = null,\n ) => {\n try {\n // Build file path\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n\n // Ensure directory exists\n ensureDirectoryExistence(filename);\n\n // Load existing providers\n const providers = getFileContents(filename, {});\n\n // Encrypt credentials\n const credentialsJson = JSON.stringify(credentials);\n const encryptedCredentials = safeStorage.encryptString(credentialsJson);\n\n // Add/update provider\n const providerEntry = {\n type: providerType,\n providerClass: providerClass || \"credential\",\n credentials: encryptedCredentials.toString(\"base64\"),\n dateCreated:\n providers[providerName]?.dateCreated || new Date().toISOString(),\n dateUpdated: new Date().toISOString(),\n };\n\n // Add mcpConfig for MCP providers\n if (providerClass === \"mcp\" && mcpConfig) {\n providerEntry.mcpConfig = mcpConfig;\n }\n\n // Add allowedTools for MCP providers\n if (providerClass === \"mcp\" && allowedTools) {\n providerEntry.allowedTools = allowedTools;\n }\n\n providers[providerName] = providerEntry;\n\n // Save to file with restrictive permissions (owner read/write only)\n writeFileSync(filename, JSON.stringify(providers, null, 2), {\n mode: 0o600,\n });\n\n console.log(\n `[providerController] Provider saved: ${providerName} (${providerType}, ${providerClass})`,\n );\n\n // Invalidate any cached client so the next getClient() call uses fresh credentials\n const clientCache = require(\"../utils/clientCache\");\n clientCache.invalidate(appId, providerName);\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n success: true,\n providerName,\n providerType,\n providerClass,\n };\n } catch (error) {\n console.error(\"[providerController] Error saving provider:\", error);\n return {\n error: true,\n message: error.message,\n };\n }\n },\n\n /**\n * listProviders\n * Get list of all providers with decrypted credentials\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n */\n listProviders: (win, appId) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n\n // Load providers file\n const providersData = getFileContents(filename, {});\n\n // Load MCP catalog for merging new config fields into saved providers\n let catalog = [];\n try {\n const catalogPath = path.join(\n __dirname,\n \"..\",\n \"mcp\",\n \"mcpServerCatalog.json\",\n );\n if (existsSync(catalogPath)) {\n const catalogData = JSON.parse(readFileSync(catalogPath, \"utf-8\"));\n catalog = catalogData.servers || [];\n }\n } catch (e) {\n // Catalog is optional — merge is best-effort\n }\n\n // Decrypt all credentials\n const decryptedProviders = [];\n Object.entries(providersData).forEach(([name, data]) => {\n try {\n const credentialsBuffer = Buffer.from(data.credentials, \"base64\");\n const decryptedJson = safeStorage.decryptString(credentialsBuffer);\n const credentials = JSON.parse(decryptedJson);\n\n const provider = {\n name,\n type: data.type,\n providerClass: data.providerClass || \"credential\",\n credentials,\n dateCreated: data.dateCreated,\n dateUpdated: data.dateUpdated,\n };\n\n // Include mcpConfig for MCP providers\n if (data.mcpConfig) {\n provider.mcpConfig = data.mcpConfig;\n\n // Merge argsMapping from catalog if missing from saved config\n // (providers snapshot mcpConfig at creation time; this ensures\n // existing providers pick up new catalog features like argsMapping)\n if (!data.mcpConfig.argsMapping && data.type) {\n const catalogEntry = catalog.find(\n (entry) => entry.id === data.type,\n );\n if (catalogEntry?.mcpConfig?.argsMapping) {\n provider.mcpConfig.argsMapping =\n catalogEntry.mcpConfig.argsMapping;\n }\n }\n }\n\n // Include allowedTools for MCP providers\n if (data.allowedTools) {\n provider.allowedTools = data.allowedTools;\n }\n\n decryptedProviders.push(provider);\n } catch (decryptError) {\n console.error(\n `[providerController] Failed to decrypt provider ${name}:`,\n decryptError,\n );\n // Skip this provider if decryption fails\n }\n });\n\n console.log(\n `[providerController] Loaded ${decryptedProviders.length} providers`,\n );\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n providers: decryptedProviders,\n };\n } catch (error) {\n console.error(\"[providerController] Error listing providers:\", error);\n return {\n error: true,\n message: error.message,\n providers: [],\n };\n }\n },\n\n /**\n * getProvider\n * Get a specific provider by name with decrypted credentials\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {string} providerName the provider name to retrieve\n */\n getProvider: (win, appId, providerName) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n\n // Load providers file\n const providersData = getFileContents(filename, {});\n\n // Find and decrypt the specific provider\n const providerData = providersData[providerName];\n if (!providerData) {\n throw new Error(`Provider not found: ${providerName}`);\n }\n\n const credentialsBuffer = Buffer.from(providerData.credentials, \"base64\");\n const decryptedJson = safeStorage.decryptString(credentialsBuffer);\n const credentials = JSON.parse(decryptedJson);\n\n const provider = {\n name: providerName,\n type: providerData.type,\n providerClass: providerData.providerClass || \"credential\",\n credentials,\n dateCreated: providerData.dateCreated,\n dateUpdated: providerData.dateUpdated,\n };\n\n // Include mcpConfig for MCP providers\n if (providerData.mcpConfig) {\n provider.mcpConfig = providerData.mcpConfig;\n }\n\n // Include allowedTools for MCP providers\n if (providerData.allowedTools) {\n provider.allowedTools = providerData.allowedTools;\n }\n\n console.log(`[providerController] Provider retrieved: ${providerName}`);\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n provider,\n };\n } catch (error) {\n console.error(\"[providerController] Error getting provider:\", error);\n return {\n error: true,\n message: error.message,\n };\n }\n },\n\n /**\n * deleteProvider\n * Delete a provider from the providers file\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {string} providerName the provider name to delete\n */\n deleteProvider: (win, appId, providerName) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n\n // Load existing providers\n const providers = getFileContents(filename, {});\n\n // Delete the provider\n if (!providers.hasOwnProperty(providerName)) {\n throw new Error(`Provider not found: ${providerName}`);\n }\n\n delete providers[providerName];\n\n // Save to file with restrictive permissions (owner read/write only)\n writeFileSync(filename, JSON.stringify(providers, null, 2), {\n mode: 0o600,\n });\n\n console.log(`[providerController] Provider deleted: ${providerName}`);\n\n // Invalidate any cached client for the deleted provider\n const clientCache = require(\"../utils/clientCache\");\n clientCache.invalidate(appId, providerName);\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n success: true,\n providerName,\n };\n } catch (error) {\n console.error(\"[providerController] Error deleting provider:\", error);\n return {\n error: true,\n message: error.message,\n };\n }\n },\n};\n\nmodule.exports = providerController;\n","const { app } = require(\"electron\");\nconst path = require(\"path\");\nconst { writeFileSync } = require(\"fs\");\nconst events = require(\"../events\");\nconst { getFileContents } = require(\"../utils/file\");\n\nconst configFilename = \"layouts.json\";\nconst appName = \"Dashboard\";\n\nconst layoutController = {\n /**\n * saveLayout\n * Create a workspace from a json configuration object (no template)\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {object} pageObject the page config object\n */\n saveLayoutForApplication: (win, appId, layoutObject) => {\n try {\n // filename to the pages file (live pages)\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const layoutsArray = getFileContents(filename);\n\n // add the pageObject to the pages file\n layoutsArray.push(layoutObject);\n\n // write the new pages configuration back to the file\n writeFileSync(filename, JSON.stringify(layoutsArray, null, 2));\n\n // message the renderer\n win.webContents.send(events.LAYOUT_SAVE_COMPLETE, {\n layouts: layoutsArray,\n });\n } catch (e) {\n win.webContents.send(events.LAYOUT_SAVE_ERROR, {\n error: e.message,\n });\n }\n },\n\n /**\n *\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id from Algolia\n */\n listLayoutsForApplication: (win, appId) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const layoutsArray = getFileContents(filename);\n win.webContents.send(events.LAYOUT_LIST_COMPLETE, {\n layouts: layoutsArray,\n });\n } catch (e) {\n win.webContents.send(events.LAYOUT_LIST_COMPLETE, {\n error: true,\n message: e.message,\n });\n }\n },\n};\n\nmodule.exports = layoutController;\n","/**\n * mcpController.js\n *\n * Manages MCP (Model Context Protocol) server lifecycle in the main process.\n * Handles starting/stopping MCP servers, calling tools, listing tools/resources.\n *\n * Supports two transport types:\n * - stdio: spawns a local child process (e.g., npx -y @algolia/mcp)\n * - streamable_http: connects to a remote HTTP endpoint (e.g., https://mcp.us.algolia.com/...)\n *\n * Uses @modelcontextprotocol/sdk for protocol handling.\n */\nconst { Client } = require(\"@modelcontextprotocol/sdk/client/index.js\");\nconst {\n StdioClientTransport,\n} = require(\"@modelcontextprotocol/sdk/client/stdio.js\");\nconst {\n StreamableHTTPClientTransport,\n} = require(\"@modelcontextprotocol/sdk/client/streamableHttp.js\");\nconst path = require(\"path\");\nconst fs = require(\"fs\");\n\n/**\n * Cached shell PATH result (resolved once, reused for all spawns).\n */\nlet _shellPath = null;\n\n/**\n * Check if a Node.js major version is compatible (v18, v20, or v22).\n * Node v24+ has stricter ESM resolution that breaks some MCP packages.\n */\nfunction isCompatibleNodeVersion(majorVersion) {\n return majorVersion >= 18 && majorVersion <= 22;\n}\n\n/**\n * Detect if an error message indicates Node v24+ ESM incompatibility.\n */\nfunction isNodeEsmError(errorText) {\n if (!errorText) return false;\n return (\n errorText.includes(\"ERR_PACKAGE_PATH_NOT_EXPORTED\") ||\n errorText.includes(\"ERR_MODULE_NOT_FOUND\")\n );\n}\n\n/**\n * Get the user's full shell PATH (including nvm, homebrew, volta, etc.).\n * Electron GUI apps on macOS don't inherit the shell PATH, so we\n * resolve it once by invoking a login shell.\n *\n * On systems where Node v24+ is the default, this will prefer a compatible\n * nvm-managed Node version (v18/v20/v22) to avoid ESM resolution errors\n * in MCP packages.\n */\nfunction getShellPath() {\n if (_shellPath !== null) return _shellPath;\n\n const { execSync } = require(\"child_process\");\n const fallbackDirs = [\"/usr/local/bin\", \"/opt/homebrew/bin\"];\n\n // Scan nvm versions, tracking both latest and best compatible version\n const home = process.env.HOME || \"\";\n let compatibleNvmBin = null;\n if (home) {\n fallbackDirs.push(`${home}/.volta/bin`);\n fallbackDirs.push(`${home}/.nodenv/shims`);\n try {\n const nvmDir = `${home}/.nvm/versions/node`;\n const versions = fs.readdirSync(nvmDir).sort();\n if (versions.length > 0) {\n // Find the highest compatible version (v18/v20/v22)\n for (let i = versions.length - 1; i >= 0; i--) {\n const match = versions[i].match(/^v(\\d+)/);\n if (match && isCompatibleNodeVersion(parseInt(match[1], 10))) {\n compatibleNvmBin = `${nvmDir}/${versions[i]}/bin`;\n break;\n }\n }\n // Always add the latest nvm version as fallback\n fallbackDirs.push(`${nvmDir}/${versions[versions.length - 1]}/bin`);\n }\n } catch {}\n }\n\n try {\n const shell = process.env.SHELL || \"/bin/bash\";\n const marker = \"__DASH_PATH__\";\n const raw = execSync(`${shell} -ilc 'echo \"${marker}$PATH${marker}\"'`, {\n encoding: \"utf8\",\n timeout: 5000,\n });\n // Extract PATH between markers, stripping session restore noise\n const startIdx = raw.indexOf(marker);\n const endIdx = raw.lastIndexOf(marker);\n if (startIdx !== -1 && endIdx > startIdx) {\n _shellPath = raw\n .substring(startIdx + marker.length, endIdx)\n .replace(/[\\r\\n]/g, \"\");\n } else {\n _shellPath = process.env.PATH || \"\";\n }\n } catch (err) {\n console.warn(\"[mcpController] Failed to resolve shell PATH:\", err.message);\n _shellPath = process.env.PATH || \"\";\n }\n\n // Append fallback dirs that aren't already present\n const currentPaths = _shellPath.split(\":\");\n for (const dir of fallbackDirs) {\n if (!currentPaths.includes(dir)) {\n _shellPath += `:${dir}`;\n }\n }\n\n // If system Node is v24+, prepend compatible nvm version so it's found first\n if (compatibleNvmBin) {\n try {\n const nodeVersion = execSync(\n `PATH=\"${_shellPath}\" node --version 2>/dev/null`,\n { encoding: \"utf8\", timeout: 5000 },\n ).trim();\n const majorMatch = nodeVersion.match(/^v(\\d+)/);\n if (majorMatch && !isCompatibleNodeVersion(parseInt(majorMatch[1], 10))) {\n console.log(\n `[mcpController] System Node is ${nodeVersion} (incompatible), ` +\n `prepending compatible nvm path: ${compatibleNvmBin}`,\n );\n _shellPath = `${compatibleNvmBin}:${_shellPath}`;\n }\n } catch {}\n }\n\n console.log(\"[mcpController] Resolved PATH:\", _shellPath);\n return _shellPath;\n}\n\n/**\n * Create a clean environment for MCP child processes.\n * Strips npm_* and ELECTRON_* vars that would force the child\n * to use Electron's or npm's Node binary instead of the PATH one.\n */\nfunction cleanEnvForChildProcess() {\n const env = {};\n for (const [key, value] of Object.entries(process.env)) {\n if (key.startsWith(\"npm_\") || key.startsWith(\"ELECTRON_\")) continue;\n env[key] = value;\n }\n env.PATH = getShellPath();\n return env;\n}\n\n/**\n * Active MCP server connections\n * Map<string, { client: Client, transport: Transport, tools: Array, status: string }>\n */\nconst activeServers = new Map();\n\n/**\n * In-flight start promises for deduplication.\n * Prevents multiple simultaneous startServer calls for the same server\n * from spawning duplicate processes (e.g., 4 widgets all calling startServer(\"Slack\")).\n * Map<string, Promise<result>>\n */\nconst pendingStarts = new Map();\n\n/**\n * MCP Server status constants\n */\nconst STATUS = {\n DISCONNECTED: \"disconnected\",\n CONNECTING: \"connecting\",\n CONNECTED: \"connected\",\n ERROR: \"error\",\n};\n\n/**\n * Interpolate {{fieldName}} placeholders in a string with credential values.\n * Used for streamable_http URL and header templates.\n *\n * @param {string} template - String containing {{fieldName}} placeholders\n * @param {object} credentials - Credential values to interpolate\n * @returns {string} Interpolated string\n */\nfunction interpolate(template, credentials) {\n if (!template || !credentials) return template;\n return template.replace(/\\{\\{(\\w+)\\}\\}/g, (match, key) => {\n return credentials[key] !== undefined ? credentials[key] : match;\n });\n}\n\n/**\n * Refresh a Google OAuth access token before starting the MCP server.\n * This sidesteps the upstream bug where `new google.auth.OAuth2()` is called\n * without client_id/client_secret, preventing token refresh.\n *\n * Uses only Node built-in `https` — no external dependencies.\n *\n * @param {object} tokenRefresh { credentialsPath, oauthKeysPath }\n */\nasync function refreshGoogleOAuthToken(tokenRefresh) {\n const home = process.env.HOME || \"\";\n const credPath = tokenRefresh.credentialsPath.replace(/^~/, home);\n const keysPath = tokenRefresh.oauthKeysPath.replace(/^~/, home);\n\n if (!fs.existsSync(credPath) || !fs.existsSync(keysPath)) {\n console.log(\n \"[mcpController] Token refresh skipped: credential files not found\",\n );\n return;\n }\n\n const credentials = JSON.parse(fs.readFileSync(credPath, \"utf8\"));\n const keysFile = JSON.parse(fs.readFileSync(keysPath, \"utf8\"));\n const keyData = keysFile.installed || keysFile.web;\n\n if (\n !credentials.refresh_token ||\n !keyData?.client_id ||\n !keyData?.client_secret\n ) {\n console.log(\n \"[mcpController] Token refresh skipped: missing refresh_token or client credentials\",\n );\n return;\n }\n\n // Skip if token is still valid (expiry > 5 minutes from now)\n if (\n credentials.expiry_date &&\n credentials.expiry_date > Date.now() + 5 * 60 * 1000\n ) {\n console.log(\"[mcpController] Token still valid, skipping refresh\");\n return;\n }\n\n console.log(\"[mcpController] Refreshing Google OAuth token...\");\n\n const https = require(\"https\");\n const postData = [\n `client_id=${encodeURIComponent(keyData.client_id)}`,\n `client_secret=${encodeURIComponent(keyData.client_secret)}`,\n `refresh_token=${encodeURIComponent(credentials.refresh_token)}`,\n \"grant_type=refresh_token\",\n ].join(\"&\");\n\n const body = await new Promise((resolve, reject) => {\n const req = https.request(\n {\n hostname: \"oauth2.googleapis.com\",\n path: \"/token\",\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n \"Content-Length\": Buffer.byteLength(postData),\n },\n },\n (res) => {\n let data = \"\";\n res.on(\"data\", (chunk) => (data += chunk));\n res.on(\"end\", () => {\n if (res.statusCode === 200) {\n resolve(JSON.parse(data));\n } else {\n reject(\n new Error(`Token refresh failed (${res.statusCode}): ${data}`),\n );\n }\n });\n },\n );\n req.on(\"error\", reject);\n req.write(postData);\n req.end();\n });\n\n credentials.access_token = body.access_token;\n credentials.expiry_date = Date.now() + (body.expires_in || 3600) * 1000;\n if (body.refresh_token) {\n credentials.refresh_token = body.refresh_token;\n }\n\n fs.writeFileSync(credPath, JSON.stringify(credentials, null, 2));\n console.log(\"[mcpController] Google OAuth token refreshed successfully\");\n}\n\nconst mcpController = {\n /**\n * startServer\n * Start an MCP server with the given config and credentials\n *\n * @param {BrowserWindow} win the main window\n * @param {string} serverName unique name for this server instance\n * @param {object} mcpConfig { transport, command, args, envMapping }\n * @param {object} credentials decrypted credentials object\n * @returns {{ success, serverName, tools, status } | { error, message }}\n */\n startServer: async (win, serverName, mcpConfig, credentials) => {\n // 1. Already connected? Return existing connection\n const existing = activeServers.get(serverName);\n if (existing && existing.status === STATUS.CONNECTED && existing.client) {\n console.log(`[mcpController] Server already connected: ${serverName}`);\n return {\n success: true,\n serverName,\n tools: existing.tools,\n resources: existing.resources,\n status: STATUS.CONNECTED,\n };\n }\n\n // 2. Already starting? Piggyback on the pending promise\n if (pendingStarts.has(serverName)) {\n console.log(\n `[mcpController] Server already starting, deduplicating: ${serverName}`,\n );\n return pendingStarts.get(serverName);\n }\n\n // 3. Fresh start — wrap in a promise and track it\n const startPromise = (async () => {\n try {\n // Stop if in stale/error state\n if (activeServers.has(serverName)) {\n await mcpController.stopServer(win, serverName);\n }\n\n // Merge with catalog entry to pick up updated command/args\n // (saved provider config may reference a stale or archived package)\n try {\n const { catalog } = mcpController.getCatalog(win);\n const catalogEntry = (catalog || []).find(\n (entry) => entry.name === serverName,\n );\n if (catalogEntry?.mcpConfig) {\n const cat = catalogEntry.mcpConfig;\n if (cat.command) mcpConfig.command = cat.command;\n if (cat.args) mcpConfig.args = [...cat.args];\n if (cat.staticEnv) mcpConfig.staticEnv = cat.staticEnv;\n if (cat.tokenRefresh) mcpConfig.tokenRefresh = cat.tokenRefresh;\n if (cat.envMapping) {\n mcpConfig.envMapping = {\n ...mcpConfig.envMapping,\n ...cat.envMapping,\n };\n }\n }\n } catch (catalogErr) {\n // Non-fatal: proceed with saved config if catalog lookup fails\n }\n\n console.log(\n `[mcpController] Starting server: ${serverName} (transport: ${\n mcpConfig.transport || \"stdio\"\n })`,\n );\n\n // Create transport based on type\n let transport;\n if (mcpConfig.transport === \"streamable_http\") {\n // Remote HTTP transport - connect to a hosted MCP server\n const url = interpolate(mcpConfig.url, credentials);\n if (!url) {\n throw new Error(\"Streamable HTTP transport requires a URL\");\n }\n\n // Build request headers from headerTemplate\n const headers = {};\n if (mcpConfig.headerTemplate && credentials) {\n Object.entries(mcpConfig.headerTemplate).forEach(\n ([headerName, template]) => {\n headers[headerName] = interpolate(template, credentials);\n },\n );\n }\n\n transport = new StreamableHTTPClientTransport(new URL(url), {\n requestInit: {\n headers,\n },\n });\n } else {\n // stdio transport (default) - spawn a local child process\n const env = cleanEnvForChildProcess();\n if (mcpConfig.envMapping && credentials) {\n Object.entries(mcpConfig.envMapping).forEach(\n ([envVar, credentialKey]) => {\n if (credentials[credentialKey] !== undefined) {\n env[envVar] = credentials[credentialKey];\n }\n },\n );\n }\n\n // Merge static env vars from mcpConfig (with ~ expansion)\n if (mcpConfig.staticEnv) {\n Object.entries(mcpConfig.staticEnv).forEach(([envVar, value]) => {\n env[envVar] = value.replace(/^~/, process.env.HOME || \"\");\n });\n }\n\n // Pre-start token refresh (e.g., Google OAuth)\n if (mcpConfig.tokenRefresh) {\n try {\n await refreshGoogleOAuthToken(mcpConfig.tokenRefresh);\n } catch (err) {\n console.warn(\n \"[mcpController] Token refresh failed, continuing:\",\n err.message,\n );\n }\n }\n\n // Build args - start with static args, then append dynamic args from credentials\n const args = [...(mcpConfig.args || [])];\n if (mcpConfig.argsMapping && credentials) {\n Object.entries(mcpConfig.argsMapping).forEach(\n ([credentialKey, config]) => {\n const value = credentials[credentialKey];\n if (value) {\n if (config.type === \"split\" && config.delimiter) {\n args.push(\n ...value\n .split(config.delimiter)\n .map((s) => s.trim())\n .filter(Boolean),\n );\n } else {\n args.push(value);\n }\n }\n },\n );\n }\n\n // Interpolate {{MCP_DIR}} in args to resolve local MCP server scripts\n const mcpDir = path.join(__dirname, \"..\", \"mcp\");\n for (let i = 0; i < args.length; i++) {\n if (\n typeof args[i] === \"string\" &&\n args[i].includes(\"{{MCP_DIR}}\")\n ) {\n args[i] = args[i].replace(/\\{\\{MCP_DIR\\}\\}/g, mcpDir);\n }\n }\n\n transport = new StdioClientTransport({\n command: mcpConfig.command,\n args,\n env,\n });\n }\n\n // Update status to connecting\n activeServers.set(serverName, {\n client: null,\n transport,\n tools: [],\n resources: [],\n status: STATUS.CONNECTING,\n });\n\n // Create MCP client\n const client = new Client({\n name: \"dash\",\n version: \"1.0.0\",\n });\n\n // Connect to the server\n await client.connect(transport);\n\n // List available tools\n let tools = [];\n try {\n const toolsResult = await client.listTools();\n tools = toolsResult.tools || [];\n } catch (toolsError) {\n console.warn(\n `[mcpController] Could not list tools for ${serverName}:`,\n toolsError.message,\n );\n }\n\n // List available resources\n let resources = [];\n try {\n const resourcesResult = await client.listResources();\n resources = resourcesResult.resources || [];\n } catch (resourcesError) {\n // Resources are optional, many servers don't support them\n }\n\n // Store the active connection\n activeServers.set(serverName, {\n client,\n transport,\n tools,\n resources,\n status: STATUS.CONNECTED,\n });\n\n console.log(\n `[mcpController] Server connected: ${serverName} (${tools.length} tools, ${resources.length} resources)`,\n );\n\n return {\n success: true,\n serverName,\n tools,\n resources,\n status: STATUS.CONNECTED,\n };\n } catch (error) {\n console.error(\n `[mcpController] Error starting server ${serverName}:`,\n error,\n );\n\n // Detect Node v24+ ESM compatibility errors and provide actionable message\n let errorMessage = error.message;\n if (isNodeEsmError(error.message)) {\n errorMessage =\n \"This MCP server is incompatible with your system Node.js version. \" +\n \"Install Node.js v22 (LTS) using nvm and restart the app.\";\n }\n\n // Mark as error state\n activeServers.set(serverName, {\n client: null,\n transport: null,\n tools: [],\n resources: [],\n status: STATUS.ERROR,\n error: errorMessage,\n });\n\n return {\n error: true,\n message: errorMessage,\n serverName,\n status: STATUS.ERROR,\n };\n } finally {\n pendingStarts.delete(serverName);\n }\n })();\n\n pendingStarts.set(serverName, startPromise);\n return startPromise;\n },\n\n /**\n * stopServer\n * Stop a running MCP server\n *\n * @param {BrowserWindow} win the main window\n * @param {string} serverName the server to stop\n * @returns {{ success, serverName } | { error, message }}\n */\n stopServer: async (win, serverName) => {\n try {\n // Wait for any in-flight start to finish before stopping\n if (pendingStarts.has(serverName)) {\n try {\n await pendingStarts.get(serverName);\n } catch (e) {\n /* stopping anyway */\n }\n }\n\n const server = activeServers.get(serverName);\n if (!server) {\n return {\n success: true,\n serverName,\n message: \"Server was not running\",\n };\n }\n\n console.log(`[mcpController] Stopping server: ${serverName}`);\n\n // Close the client connection\n if (server.client) {\n try {\n await server.client.close();\n } catch (closeError) {\n console.warn(\n `[mcpController] Error closing client for ${serverName}:`,\n closeError.message,\n );\n }\n }\n\n activeServers.delete(serverName);\n\n console.log(`[mcpController] Server stopped: ${serverName}`);\n\n return {\n success: true,\n serverName,\n };\n } catch (error) {\n console.error(\n `[mcpController] Error stopping server ${serverName}:`,\n error,\n );\n // Clean up anyway\n activeServers.delete(serverName);\n return {\n error: true,\n message: error.message,\n };\n }\n },\n\n /**\n * callTool\n * Call a tool on a running MCP server\n *\n * @param {BrowserWindow} win the main window\n * @param {string} serverName the server to call the tool on\n * @param {string} toolName the tool to call\n * @param {object} args arguments for the tool\n * @param {Array<string>} allowedTools optional whitelist of allowed tool names\n * @returns {{ result } | { error, message }}\n */\n callTool: async (win, serverName, toolName, args, allowedTools = null) => {\n try {\n const server = activeServers.get(serverName);\n if (!server || !server.client) {\n throw new Error(`Server not connected: ${serverName}`);\n }\n\n // Enforce tool scoping if allowedTools is specified\n if (allowedTools && !allowedTools.includes(toolName)) {\n throw new Error(\n `Tool \"${toolName}\" is not in the allowed tools list for this widget. Allowed: ${allowedTools.join(\n \", \",\n )}`,\n );\n }\n\n console.log(`[mcpController] Calling tool: ${serverName}/${toolName}`);\n\n const result = await server.client.callTool({\n name: toolName,\n arguments: args || {},\n });\n\n return {\n success: true,\n result,\n };\n } catch (error) {\n console.error(\n `[mcpController] Error calling tool ${serverName}/${toolName}:`,\n error,\n );\n return {\n error: true,\n message: error.message,\n };\n }\n },\n\n /**\n * listTools\n * List available tools for a running MCP server\n *\n * @param {BrowserWindow} win the main window\n * @param {string} serverName the server name\n * @returns {{ tools } | { error, message }}\n */\n listTools: async (win, serverName) => {\n try {\n const server = activeServers.get(serverName);\n if (!server || !server.client) {\n throw new Error(`Server not connected: ${serverName}`);\n }\n\n // Refresh tool list from server\n const toolsResult = await server.client.listTools();\n const tools = toolsResult.tools || [];\n\n // Update cached tools\n server.tools = tools;\n\n return {\n success: true,\n tools,\n };\n } catch (error) {\n console.error(\n `[mcpController] Error listing tools for ${serverName}:`,\n error,\n );\n return {\n error: true,\n message: error.message,\n };\n }\n },\n\n /**\n * listResources\n * List available resources for a running MCP server\n *\n * @param {BrowserWindow} win the main window\n * @param {string} serverName the server name\n * @returns {{ resources } | { error, message }}\n */\n listResources: async (win, serverName) => {\n try {\n const server = activeServers.get(serverName);\n if (!server || !server.client) {\n throw new Error(`Server not connected: ${serverName}`);\n }\n\n const resourcesResult = await server.client.listResources();\n const resources = resourcesResult.resources || [];\n\n // Update cached resources\n server.resources = resources;\n\n return {\n success: true,\n resources,\n };\n } catch (error) {\n console.error(\n `[mcpController] Error listing resources for ${serverName}:`,\n error,\n );\n return {\n error: true,\n message: error.message,\n };\n }\n },\n\n /**\n * readResource\n * Read a specific resource from a running MCP server\n *\n * @param {BrowserWindow} win the main window\n * @param {string} serverName the server name\n * @param {string} uri the resource URI\n * @returns {{ resource } | { error, message }}\n */\n readResource: async (win, serverName, uri) => {\n try {\n const server = activeServers.get(serverName);\n if (!server || !server.client) {\n throw new Error(`Server not connected: ${serverName}`);\n }\n\n const result = await server.client.readResource({ uri });\n\n return {\n success: true,\n resource: result,\n };\n } catch (error) {\n console.error(\n `[mcpController] Error reading resource ${uri} from ${serverName}:`,\n error,\n );\n return {\n error: true,\n message: error.message,\n };\n }\n },\n\n /**\n * getServerStatus\n * Get the connection status of a server\n *\n * @param {BrowserWindow} win the main window\n * @param {string} serverName the server name\n * @returns {{ status, tools, error }}\n */\n getServerStatus: (win, serverName) => {\n const server = activeServers.get(serverName);\n if (!server) {\n return {\n serverName,\n status: STATUS.DISCONNECTED,\n tools: [],\n resources: [],\n };\n }\n\n return {\n serverName,\n status: server.status,\n tools: server.tools || [],\n resources: server.resources || [],\n error: server.error || null,\n };\n },\n\n /**\n * getCatalog\n * Load the MCP server seed catalog\n *\n * @param {BrowserWindow} win the main window\n * @returns {{ catalog } | { error, message }}\n */\n getCatalog: (win) => {\n try {\n const catalogPath = path.join(\n __dirname,\n \"..\",\n \"mcp\",\n \"mcpServerCatalog.json\",\n );\n\n if (!fs.existsSync(catalogPath)) {\n return {\n catalog: [],\n };\n }\n\n const catalogData = fs.readFileSync(catalogPath, \"utf8\");\n const catalog = JSON.parse(catalogData);\n\n return {\n success: true,\n catalog: catalog.servers || [],\n };\n } catch (error) {\n console.error(\"[mcpController] Error loading catalog:\", error);\n return {\n error: true,\n message: error.message,\n catalog: [],\n };\n }\n },\n\n /**\n * listConnectedServers\n * Returns all connected servers with their cached tool lists.\n * Used by llmController to discover available MCP tools.\n *\n * @returns {Array<{ serverName, tools, resources, status }>}\n */\n listConnectedServers: () => {\n const servers = [];\n for (const [serverName, server] of activeServers) {\n if (server.status === STATUS.CONNECTED) {\n servers.push({\n serverName,\n tools: server.tools || [],\n resources: server.resources || [],\n status: server.status,\n });\n }\n }\n return servers;\n },\n\n /**\n * runAuth\n * Run a one-shot auth command (e.g., OAuth browser flow) for an MCP server\n *\n * @param {BrowserWindow} win the main window\n * @param {object} mcpConfig { transport, command, args, envMapping }\n * @param {object} credentials decrypted credentials object\n * @param {object} authCommand { command, args }\n * @returns {{ success } | { error, message }}\n */\n runAuth: async (win, mcpConfig, credentials, authCommand) => {\n const { spawn } = require(\"child_process\");\n\n const env = cleanEnvForChildProcess();\n\n // Pre-auth setup: copy credential files to expected locations\n if (authCommand.setup?.copyCredential) {\n const { from, to } = authCommand.setup.copyCredential;\n const sourcePath = credentials?.[from];\n if (sourcePath) {\n const destPath = to.replace(/^~/, process.env.HOME || \"\");\n const destDir = require(\"path\").dirname(destPath);\n try {\n fs.mkdirSync(destDir, { recursive: true });\n fs.copyFileSync(sourcePath, destPath);\n } catch (err) {\n return {\n error: true,\n message: `Failed to copy OAuth keys: ${err.message}`,\n };\n }\n }\n }\n\n // Inject credentials as env vars using the same envMapping as startServer\n if (mcpConfig?.envMapping && credentials) {\n Object.entries(mcpConfig.envMapping).forEach(\n ([envVar, credentialKey]) => {\n if (credentials[credentialKey] !== undefined) {\n env[envVar] = credentials[credentialKey];\n }\n },\n );\n }\n\n // Merge static env vars from authCommand (e.g., AUTH_SERVER_PORT)\n if (authCommand.env) {\n Object.entries(authCommand.env).forEach(([key, value]) => {\n env[key] = value;\n });\n }\n\n // Merge static env vars from authCommand with ~ expansion\n if (authCommand.staticEnv) {\n Object.entries(authCommand.staticEnv).forEach(([key, value]) => {\n env[key] = value.replace(/^~/, process.env.HOME || \"\");\n });\n }\n\n // Interpolate {{MCP_DIR}} in authCommand args (same as startServer)\n const mcpDir = path.join(__dirname, \"..\", \"mcp\");\n const resolvedArgs = (authCommand.args || []).map((arg) =>\n typeof arg === \"string\" && arg.includes(\"{{MCP_DIR}}\")\n ? arg.replace(/\\{\\{MCP_DIR\\}\\}/g, mcpDir)\n : arg,\n );\n\n return new Promise((resolve) => {\n const proc = spawn(authCommand.command, resolvedArgs, {\n env,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n\n let stdout = \"\";\n let stderr = \"\";\n proc.stdout.on(\"data\", (data) => {\n stdout += data.toString();\n });\n proc.stderr.on(\"data\", (data) => {\n stderr += data.toString();\n });\n\n const timeout = setTimeout(() => {\n proc.kill();\n resolve({ error: true, message: \"Auth timed out (120s)\" });\n }, 120000);\n\n proc.on(\"close\", (code) => {\n clearTimeout(timeout);\n if (code === 0) {\n resolve({ success: true });\n } else {\n const detail = stderr.trim() || stdout.trim() || \"\";\n // Detect Node v24+ ESM compatibility errors and provide actionable message\n if (isNodeEsmError(detail)) {\n resolve({\n error: true,\n message:\n \"This MCP server is incompatible with your system Node.js version. \" +\n \"Install Node.js v22 (LTS) using nvm and restart the app.\",\n });\n return;\n }\n resolve({\n error: true,\n message: `Auth exited with code ${code}${detail ? \": \" + detail : \"\"}`,\n });\n }\n });\n\n proc.on(\"error\", (err) => {\n clearTimeout(timeout);\n resolve({ error: true, message: err.message });\n });\n });\n },\n\n /**\n * stopAllServers\n * Stop all running MCP servers (called on app quit)\n */\n stopAllServers: async () => {\n // Wait for any in-flight starts to settle before stopping\n if (pendingStarts.size > 0) {\n await Promise.allSettled([...pendingStarts.values()]);\n }\n\n console.log(\n `[mcpController] Stopping all servers (${activeServers.size} active)`,\n );\n const promises = [];\n for (const [serverName] of activeServers) {\n promises.push(mcpController.stopServer(null, serverName));\n }\n await Promise.allSettled(promises);\n console.log(\"[mcpController] All servers stopped\");\n },\n};\n\nmodule.exports = mcpController;\nmodule.exports.refreshGoogleOAuthToken = refreshGoogleOAuthToken;\n","/**\n * registryController.js\n *\n * Manages fetching, caching, and searching the remote widget registry index.\n * Runs in the Electron main process.\n *\n * Responsibilities:\n * - Fetch and cache the remote registry-index.json with 5-min TTL\n * - Search/filter across both packages and individual widgets\n * - Support two-level browsing: packages (bundles) and widgets within packages\n */\n\nconst path = require(\"path\");\nconst fs = require(\"fs\");\n\n// Default registry API base URL\nconst DEFAULT_REGISTRY_API_URL = \"https://main.d919rwhuzp7rj.amplifyapp.com\";\n\n// Cache TTL: 5 minutes\nconst CACHE_TTL_MS = 5 * 60 * 1000;\n\nlet cachedIndex = null;\nlet cacheTimestamp = 0;\n\n/**\n * Get the local test registry path for dev mode\n */\nfunction getTestRegistryPath() {\n return path.join(__dirname, \"..\", \"registry\", \"test-registry-index.json\");\n}\n\n/**\n * Check if running in development mode\n */\nfunction isDev() {\n return (\n process.defaultApp ||\n process.env.NODE_ENV === \"development\" ||\n process.env.NODE_ENV === \"dev\"\n );\n}\n\n/**\n * Fetch the registry index from remote URL or local file (dev mode)\n * Caches the result for CACHE_TTL_MS milliseconds.\n *\n * @param {boolean} forceRefresh - Bypass cache and fetch fresh data\n * @returns {Promise<Object>} The registry index\n */\nasync function fetchRegistryIndex(forceRefresh = false) {\n const now = Date.now();\n\n // Return cached data if still valid\n if (!forceRefresh && cachedIndex && now - cacheTimestamp < CACHE_TTL_MS) {\n console.log(\"[RegistryController] Returning cached registry index\");\n return cachedIndex;\n }\n\n try {\n let indexData;\n\n if (isDev()) {\n // In dev mode, try local test file first\n const testPath = getTestRegistryPath();\n if (fs.existsSync(testPath)) {\n console.log(\n \"[RegistryController] Loading test registry from:\",\n testPath,\n );\n const raw = fs.readFileSync(testPath, \"utf8\");\n indexData = JSON.parse(raw);\n } else {\n // Fall back to API (supports DASH_REGISTRY_URL as full-URL override)\n const registryUrl =\n process.env.DASH_REGISTRY_URL ||\n `${process.env.DASH_REGISTRY_API_URL || DEFAULT_REGISTRY_API_URL}/api/packages`;\n console.log(\n \"[RegistryController] Fetching registry from:\",\n registryUrl,\n );\n const response = await fetch(registryUrl);\n if (!response.ok) {\n throw new Error(\n `Failed to fetch registry: ${response.status} ${response.statusText}`,\n );\n }\n indexData = await response.json();\n }\n } else {\n // In production, fetch from API\n const registryUrl =\n process.env.DASH_REGISTRY_URL ||\n `${process.env.DASH_REGISTRY_API_URL || DEFAULT_REGISTRY_API_URL}/api/packages`;\n console.log(\"[RegistryController] Fetching registry from:\", registryUrl);\n\n const response = await fetch(registryUrl);\n if (!response.ok) {\n throw new Error(\n `Failed to fetch registry: ${response.status} ${response.statusText}`,\n );\n }\n indexData = await response.json();\n }\n\n // Normalize: ensure `version` exists on each package (API uses `latestVersion`)\n if (indexData.packages) {\n indexData.packages = indexData.packages.map((pkg) => ({\n ...pkg,\n version: pkg.version || pkg.latestVersion || \"0.0.0\",\n }));\n }\n\n // Cache the result\n cachedIndex = indexData;\n cacheTimestamp = now;\n\n console.log(\n `[RegistryController] Loaded ${indexData.packages?.length || 0} packages`,\n );\n return indexData;\n } catch (error) {\n console.error(\"[RegistryController] Error fetching registry:\", error);\n\n // Return stale cache if available\n if (cachedIndex) {\n console.log(\n \"[RegistryController] Returning stale cache after fetch error\",\n );\n return cachedIndex;\n }\n\n throw error;\n }\n}\n\n/**\n * Search the registry across packages and individual widgets\n *\n * @param {string} query - Search query string\n * @param {Object} filters - Optional filters\n * @param {string} filters.category - Filter by category\n * @param {string} filters.author - Filter by author\n * @param {string} filters.tag - Filter by tag\n * @param {string} filters.type - Filter by package type (\"widget\" or \"dashboard\")\n * @param {string[]} filters.compatibleWidgets - Only return dashboards whose required widgets are all in this list\n * @param {string[]} filters.appCapabilities - Only return packages whose required API providers are all in this list\n * @returns {Promise<Object>} { packages: [...], totalWidgets: number }\n */\nasync function searchRegistry(query = \"\", filters = {}) {\n const index = await fetchRegistryIndex();\n let packages = index.packages || [];\n\n // Apply type filter — packages without an explicit type default to \"widget\"\n if (filters.type) {\n const typeLower = filters.type.toLowerCase();\n packages = packages.filter(\n (pkg) => (pkg.type || \"widget\").toLowerCase() === typeLower,\n );\n }\n\n // Apply search query\n if (query) {\n const q = query.toLowerCase();\n packages = packages.filter((pkg) => {\n // Match against package-level fields\n const packageMatch =\n (pkg.name || \"\").toLowerCase().includes(q) ||\n (pkg.displayName || \"\").toLowerCase().includes(q) ||\n (pkg.description || \"\").toLowerCase().includes(q) ||\n (pkg.author || \"\").toLowerCase().includes(q) ||\n (pkg.tags || []).some((t) => t.toLowerCase().includes(q));\n\n // Match against individual widgets within the package\n const widgetMatch = (pkg.widgets || []).some(\n (w) =>\n (w.name || \"\").toLowerCase().includes(q) ||\n (w.displayName || \"\").toLowerCase().includes(q) ||\n (w.description || \"\").toLowerCase().includes(q),\n );\n\n return packageMatch || widgetMatch;\n });\n }\n\n // Apply category filter\n if (filters.category) {\n packages = packages.filter(\n (pkg) =>\n (pkg.category || \"\").toLowerCase() === filters.category.toLowerCase(),\n );\n }\n\n // Apply author filter\n if (filters.author) {\n packages = packages.filter(\n (pkg) =>\n (pkg.author || \"\").toLowerCase() === filters.author.toLowerCase(),\n );\n }\n\n // Apply tag filter\n if (filters.tag) {\n const tagLower = filters.tag.toLowerCase();\n packages = packages.filter((pkg) =>\n (pkg.tags || []).some((t) => t.toLowerCase() === tagLower),\n );\n }\n\n // Apply compatibility filter — only dashboards whose required widgets\n // are all present in the user's installed widget list\n if (filters.compatibleWidgets && filters.compatibleWidgets.length) {\n const installedSet = new Set(\n filters.compatibleWidgets.map((w) => w.toLowerCase()),\n );\n packages = packages.filter((pkg) => {\n const requiredWidgets = (pkg.widgets || []).filter(\n (w) => w.required !== false,\n );\n return requiredWidgets.every(\n (w) =>\n installedSet.has((w.package || \"\").toLowerCase()) ||\n installedSet.has((w.name || \"\").toLowerCase()),\n );\n });\n }\n\n // Apply API capability filter — only return packages whose required\n // \"api\" providers are all present in the app's capability set\n if (filters.appCapabilities && filters.appCapabilities.length) {\n const capSet = new Set(filters.appCapabilities.map((c) => c.toLowerCase()));\n packages = packages.filter((pkg) => {\n // Collect all \"api\" provider requirements from package-level and widget-level providers\n const apiProviders = [];\n\n // Package-level providers\n for (const p of pkg.providers || []) {\n if (p.providerClass === \"api\" && p.required !== false) {\n apiProviders.push(p.type);\n }\n }\n\n // Widget-level providers\n for (const w of pkg.widgets || []) {\n for (const p of w.providers || []) {\n if (p.providerClass === \"api\" && p.required !== false) {\n apiProviders.push(p.type);\n }\n }\n }\n\n // Package is compatible if all required API namespaces are present\n return apiProviders.every((api) => capSet.has(api.toLowerCase()));\n });\n }\n\n // Count total widgets across matched packages\n const totalWidgets = packages.reduce(\n (sum, pkg) => sum + (pkg.widgets || []).length,\n 0,\n );\n\n return { packages, totalWidgets };\n}\n\n/**\n * Get a specific package by name\n *\n * @param {string} packageName - Name of the package\n * @returns {Promise<Object|null>} Package data or null if not found\n */\nasync function getPackage(packageName) {\n const index = await fetchRegistryIndex();\n const pkg = (index.packages || []).find((p) => p.name === packageName);\n return pkg || null;\n}\n\n/**\n * Check for updates to installed widgets\n *\n * @param {Array<Object>} installedWidgets - Array of { name, version } objects\n * @returns {Promise<Array<Object>>} Widgets with available updates\n */\nasync function checkUpdates(installedWidgets = []) {\n const index = await fetchRegistryIndex();\n const updates = [];\n\n for (const installed of installedWidgets) {\n const pkg = (index.packages || []).find((p) => p.name === installed.name);\n if (pkg && pkg.version !== installed.version) {\n updates.push({\n name: pkg.name,\n currentVersion: installed.version,\n latestVersion: pkg.version,\n downloadUrl: pkg.downloadUrl,\n changelog: pkg.changelog || null,\n });\n }\n }\n\n return updates;\n}\n\n/**\n * Search the registry for dashboard packages only.\n * Convenience wrapper around searchRegistry with type: \"dashboard\".\n *\n * @param {string} query - Search query string\n * @param {Object} filters - Optional filters (category, author, tag, compatibleWidgets)\n * @returns {Promise<Object>} { packages: [...], totalWidgets: number }\n */\nasync function searchDashboards(query = \"\", filters = {}) {\n return searchRegistry(query, { ...filters, type: \"dashboard\" });\n}\n\n/**\n * Search the registry for theme packages only.\n * Convenience wrapper around searchRegistry with type: \"theme\".\n *\n * @param {string} query - Search query string\n * @param {Object} filters - Optional filters (category, author, tag)\n * @returns {Promise<Object>} { packages: [...], totalWidgets: number }\n */\nasync function searchThemes(query = \"\", filters = {}) {\n return searchRegistry(query, { ...filters, type: \"theme\" });\n}\n\nmodule.exports = {\n fetchRegistryIndex,\n searchRegistry,\n searchDashboards,\n searchThemes,\n getPackage,\n checkUpdates,\n};\n","var fs = require(\"fs\");\nvar JSONStream = require(\"JSONStream\");\nconst algoliasearch = require(\"algoliasearch\");\nconst path = require(\"node:path\");\nconst { ensureDirectoryExistence, checkDirectory } = require(\"./file\");\n\nclass AlgoliaIndex {\n /**\n * @var client the algoliasearch client\n */\n client = null;\n\n /**\n * @var index the algoliasearch initiated index\n */\n index = null;\n\n constructor(appId = \"\", apiKey = \"\", indexName = \"\") {\n if (appId !== \"\" && apiKey !== \"\" && indexName !== \"\") {\n this.client = algoliasearch(appId, apiKey);\n this.index = this.client.initIndex(indexName);\n }\n }\n\n createBatchesFromJSONFile = (\n filepath,\n batchFilepath = \"/data/batch\",\n batchSize,\n callback = null,\n ) => {\n return new Promise((resolve, reject) => {\n // instantiate the JSON parser that will be used by the readStream\n var parser = JSONStream.parse(\"*\");\n\n // count how many items have been added to a single batch\n var countForBatch = 0;\n\n // counter for the number of batches (used as filename)\n var batchNumber = 1;\n\n // create the readStream to parse the large file (json)\n var readStream = fs.createReadStream(filepath).pipe(parser);\n\n var batch = [];\n\n // lets first remove the batch folder\n this.clearDirectory(batchFilepath)\n .then(() => {\n // when we receive data...\n readStream.on(\"data\", function (data) {\n try {\n // if we have reached the limit for the batch...\n // lets write to the batch file\n if (countForBatch === batchSize) {\n // write to the batch file\n var writeStream = fs.createWriteStream(\n batchFilepath + \"/batch_\" + batchNumber + \".json\",\n );\n writeStream.write(JSON.stringify(batch));\n writeStream.close();\n\n // adjust counts and reset batch array\n countForBatch = 0;\n // bump the batch number\n batchNumber++;\n // reset the batch json\n batch = [];\n // callback function to pass batchnumber (or anything later on)\n callback &&\n typeof callback === \"function\" &&\n callback(batchNumber);\n } else {\n try {\n // push the JSON data into the batch array to be written later\n batch.push(data);\n countForBatch++;\n } catch (e) {\n reject(e);\n }\n }\n } catch (e) {\n reject(e);\n }\n });\n\n readStream.on(\"error\", function (e) {\n console.log(\"batch on error \", e);\n reject(e);\n });\n\n readStream.on(\"close\", function () {\n console.log(\"batch on close \");\n resolve(\"batches completed \", batchNumber);\n });\n })\n .catch((e) => {\n console.log(\"catch batch \", e.message);\n reject(e);\n });\n });\n };\n\n clearDirectory = (directoryPath) => {\n return new Promise((resolve, reject) => {\n try {\n checkDirectory(directoryPath);\n fs.readdir(directoryPath, (err, files) => {\n if (err) reject(err);\n if (files) {\n files.forEach((file) => {\n fs.unlinkSync(path.join(directoryPath, file));\n });\n resolve();\n }\n });\n } catch (e) {\n console.log(\"clear dir error \", e.message);\n reject(e);\n }\n });\n };\n\n async partialUpdateObjectsFromDirectorySync(\n batchFilepath,\n createIfNotExists = false,\n callback = null,\n ) {\n try {\n // read the directory...\n const files = await fs.readdirSync(batchFilepath);\n let results = [];\n for (const fileIndex in files) {\n // for each file lets read the file and then push to algolia\n const pathToBatch = path.join(batchFilepath, files[fileIndex]);\n const fileContents = await this.readFile(pathToBatch);\n if (fileContents) {\n if (\"data\" in fileContents && \"filepath\" in fileContents) {\n // now we can update the index with the partial update\n const updateResult = await this.partialUpdateObjects(\n fileContents.data,\n fileContents.filepath,\n createIfNotExists,\n callback,\n );\n results.push({ file: files[fileIndex] });\n } else {\n console.log(\"missed \", files[fileIndex]);\n }\n }\n }\n return Promise.resolve(results);\n } catch (e) {\n return Promise.reject(e);\n }\n }\n\n async readFile(filepath) {\n return await new Promise((resolve, reject) => {\n fs.readFile(filepath, \"utf8\", (err, data) => {\n if (err) {\n reject(err);\n }\n resolve({ data, filepath });\n });\n });\n }\n\n browseObjects = (query = \"\", callback = null) => {\n return new Promise((resolve, reject) => {\n try {\n if (this.index !== null) {\n // call algolia to update the objects\n this.index\n .browseObjects({\n query,\n batch: (hits) => {\n if (callback && typeof callback === \"function\") {\n callback(hits);\n }\n },\n })\n .then(() => {\n resolve({ success: true });\n })\n .catch((e) => reject(e));\n } else {\n reject(\"No index for client\");\n }\n } catch (e) {\n console.log(\"browse objects \", e.message);\n reject(e);\n }\n });\n };\n\n async partialUpdateObjects(\n objects,\n file,\n createIfNotExists = false,\n callback = null,\n ) {\n return new Promise((resolve, reject) => {\n try {\n if (objects) {\n const batch = JSON.parse(objects);\n\n // callback function to pass batchnumber (or anything later on)\n if (callback && typeof callback === \"function\") {\n callback(\"indexing objects \", file, batch.length);\n }\n\n if (this.index !== null) {\n // call algolia to update the objects\n this.index\n .partialUpdateObjects(batch, {\n createIfNotExists: createIfNotExists,\n })\n .then(({ objectIDs }) => {\n resolve({\n success: true,\n batchComplete: batch.length,\n objectIDs,\n });\n })\n .catch((e) => {\n console.log(\"Error partialUpdateObjects\", e.message);\n reject(e);\n });\n } else {\n reject(\"No index for client\");\n }\n }\n } catch (e) {\n console.log(\"partial update objects \", e.message);\n reject(e);\n }\n });\n }\n\n search = (query = \"\", options = {}) => {\n return new Promise((resolve, reject) => {\n try {\n if (this.index !== null) {\n this.index\n .search(query, options)\n .then((result) => resolve(result))\n .catch((e) => reject(e));\n } else {\n reject(\"No index for client\");\n }\n } catch (e) {\n reject(e);\n }\n });\n };\n\n saveObjects = (objects, file, callback = null) => {\n return new Promise((resolve, reject) => {\n try {\n if (objects) {\n const batch = JSON.parse(objects);\n\n // callback function to pass batchnumber (or anything later on)\n if (callback && typeof callback === \"function\") {\n callback(\"saving objects \", file);\n }\n\n if (this.index !== null) {\n // call algolia to update the objects\n this.index\n .saveObjects(batch, {\n autoGenerateObjectIDIfNotExist: true,\n })\n .then(({ objectIDs }) => {\n resolve({\n success: true,\n batchComplete: batch.length,\n file,\n objectIDs,\n });\n })\n .catch((e) => reject(e));\n } else {\n reject(\"No index for client\");\n }\n }\n } catch (e) {\n console.log(\"save objects error\", e.message);\n reject(e);\n }\n });\n };\n}\n\nmodule.exports = AlgoliaIndex;\n","/**\n * algoliaController.js\n *\n * This is a sample controller that is called from the electron.js file\n *\n * The electron.js file contains listeners from the renderer that will call\n * the controller methods as seen below.\n */\nconst algoliasearch = require(\"algoliasearch\");\nconst events = require(\"../events\");\nconst AlgoliaIndex = require(\"../utils/algolia\");\nvar fs = require(\"fs\");\n\nconst algoliaController = {\n /**\n * loadPagesForApplication\n * Load the pages for the application <userdata>/appId/pages.json\n * - filter out the indices that are \"rule\" indices\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id from Algolia\n */\n listIndices: (win, application) => {\n try {\n const searchClient = algoliasearch(\n application[\"appId\"],\n application[\"key\"],\n );\n searchClient\n .listIndices()\n .then(({ items }) => {\n const filtered = items.filter(\n (item) => item.name.substring(0, 7) !== \"sitehub\",\n );\n win.webContents.send(events.ALGOLIA_LIST_INDICES_COMPLETE, filtered);\n })\n .catch((e) => {\n win.webContents.send(events.ALGOLIA_LIST_INDICES_ERROR, {\n error: e.message,\n });\n });\n } catch (e) {\n win.webContents.send(events.ALGOLIA_LIST_INDICES_ERROR, {\n error: e.message,\n });\n }\n },\n\n getAnalyticsForQuery: (win, application, indexName, query) => {\n try {\n const baseUrl = \"https://analytics.us.algolia.com\";\n const headers = {\n \"X-Algolia-Application-Id\": application[\"appId\"],\n \"X-Algolia-API-Key\": application[\"key\"],\n };\n const url = `${baseUrl}/2/hits?search=${encodeURIComponent(\n query,\n )}&clickAnalytics=true&index=${indexName}`;\n axios\n .get(url, {\n headers: headers,\n })\n .then((resp) => {\n if (resp.status === 200) {\n win.webContents.send(events.ALGOLIA_ANALYTICS_FOR_QUERY_COMPLETE, {\n result: resp.data,\n indexName: indexName,\n query: query,\n });\n } else {\n win.webContents.send(events.ALGOLIA_ANALYTICS_FOR_QUERY_ERROR, {\n error: true,\n message: \"Failed request\",\n });\n }\n })\n .catch((e) => {\n win.webContents.send(events.ALGOLIA_ANALYTICS_FOR_QUERY_ERROR, {\n error: true,\n message: e.message,\n });\n });\n } catch (e) {\n win.webContents.send(events.ALGOLIA_ANALYTICS_FOR_QUERY_ERROR, {\n error: true,\n message: e.message,\n });\n }\n },\n\n /**\n * browseObjectsToFile\n * Lets try and browse an index and pull down the hits and save as a file\n *\n * @param {*} win\n * @param {*} appId\n * @param {*} apiKey\n * @param {*} indexName\n * @param {*} toFilename\n * @param {*} query\n */\n browseObjectsToFile: (\n win,\n appId,\n apiKey,\n indexName,\n toFilename,\n query = \"\",\n ) => {\n try {\n if (\n toFilename !== \"\" &&\n apiKey !== \"\" &&\n indexName !== \"\" &&\n appId !== \"\"\n ) {\n // init the Algolia Index helper\n const a = new AlgoliaIndex(appId, apiKey, indexName);\n // create the write stream to store the hits\n const writeStream = fs.createWriteStream(toFilename);\n writeStream.write(\"[\");\n\n let sep = \"\";\n\n // call the algolia browseObjects helper method\n a.browseObjects(query, (hits) => {\n win.webContents.send(events.ALGOLIA_BROWSE_OBJECTS_UPDATE, hits);\n\n let count = 0;\n // write to the file\n hits.forEach((hit) => {\n writeStream.write(sep + JSON.stringify(hit));\n count++;\n sep = \",\\n\";\n });\n })\n .then((result) => {\n writeStream.write(\"]\");\n win.webContents.send(\n events.ALGOLIA_BROWSE_OBJECTS_COMPLETE,\n result,\n );\n })\n .catch((e) => {\n win.webContents.send(events.ALGOLIA_BROWSE_OBJECTS_ERROR, e);\n });\n } else {\n win.webContents.send(\n events.ALGOLIA_BROWSE_OBJECTS_ERROR,\n new Error(\"Missing parameters\"),\n );\n }\n } catch (e) {\n win.webContents.send(events.ALGOLIA_BROWSE_OBJECTS_ERROR, {\n error: e.message,\n });\n }\n },\n\n async partialUpdateObjectsFromDirectory(\n win,\n appId,\n apiKey,\n indexName,\n dir,\n createIfNotExists = false,\n ) {\n try {\n const a = new AlgoliaIndex(appId, apiKey, indexName);\n // now we can make the call to the utility and we are passing in the createIfNotExists FALSE by default\n a.partialUpdateObjectsFromDirectorySync(\n dir,\n createIfNotExists,\n (data) => {\n win.webContents.send(\n events.ALGOLIA_PARTIAL_UPDATE_OBJECTS_UPDATE,\n data,\n );\n },\n )\n .then((result) => {\n win.webContents.send(\n events.ALGOLIA_PARTIAL_UPDATE_OBJECTS_COMPLETE,\n result,\n );\n })\n .catch((e) => {\n win.webContents.send(events.ALGOLIA_PARTIAL_UPDATE_OBJECTS_ERROR, e);\n });\n } catch (e) {\n win.webContents.send(events.ALGOLIA_PARTIAL_UPDATE_OBJECTS_ERROR, {\n error: e.message,\n });\n }\n },\n\n /**\n * createBatchesFromFile\n * @param {*} win\n * @param {*} filepath\n * @param {*} batchFilepath\n * @param {*} batchSize\n * @param {*} callback\n */\n createBatchesFromFile: (\n win,\n filepath,\n batchFilepath = \"/data/batch\",\n batchSize = 500,\n ) => {\n try {\n const a = new AlgoliaIndex();\n a.createBatchesFromJSONFile(\n filepath,\n batchFilepath,\n batchSize,\n (data) => {\n win.webContents.send(events.ALGOLIA_CREATE_BATCH_UPDATE, data);\n },\n )\n .then((result) => {\n win.webContents.send(events.ALGOLIA_CREATE_BATCH_COMPLETE, result);\n })\n .catch((e) => {\n win.webContents.send(events.ALGOLIA_CREATE_BATCH_ERROR, e);\n });\n } catch (e) {\n win.webContents.send(events.ALGOLIA_CREATE_BATCH_ERROR, {\n error: e.message,\n });\n }\n },\n /**\n * search\n * Search an index and return results in-memory (no file export).\n * Returns the result directly for use with ipcMain.handle / ipcRenderer.invoke.\n */\n search: async (win, appId, apiKey, indexName, query = \"\", options = {}) => {\n try {\n const a = new AlgoliaIndex(appId, apiKey, indexName);\n return await a.search(query, options);\n } catch (e) {\n return { error: true, message: e.message || String(e) };\n }\n },\n};\n\nmodule.exports = algoliaController;\n","const OpenAI = require(\"openai\");\nconst events = require(\"../events\");\n\nconst openaiController = {\n async describeImage(win, imageUrl, apiKey, prompt = \"What's in this image?\") {\n try {\n const openai = new OpenAI({\n apiKey: apiKey,\n });\n const response = await openai.chat.completions.create({\n model: \"gpt-4-vision-preview\",\n messages: [\n {\n role: \"user\",\n content: [\n { type: \"text\", text: prompt },\n {\n type: \"image_url\",\n image_url: imageUrl,\n },\n ],\n },\n ],\n });\n\n win.webContents.send(events.OPENAI_DESCRIBE_IMAGE_COMPLETE, {\n succes: true,\n imageUrl,\n response,\n });\n } catch (e) {\n win.webContents.send(events.OPENAI_DESCRIBE_IMAGE_ERROR, {\n succes: true,\n error: e.message,\n });\n }\n },\n};\n\nmodule.exports = openaiController;\n","const { app } = require(\"electron\");\nconst path = require(\"path\");\nconst { writeFileSync } = require(\"fs\");\nconst events = require(\"../events\");\nconst { getFileContents } = require(\"../utils/file\");\n\nconst configFilename = \"menuItems.json\";\nconst appName = \"Dashboard\";\n\nconst menuItemsController = {\n saveMenuItemForApplication: (win, appId, menuItem) => {\n try {\n // filename to the pages file (live pages)\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const menuItemsArray = getFileContents(filename);\n\n menuItemsArray.filter((mi) => mi !== null);\n\n // add the menuItems object to the file\n menuItemsArray.push(menuItem);\n\n // write the new pages configuration back to the file\n writeFileSync(filename, JSON.stringify(menuItemsArray, null, 2));\n\n console.log(\"[menuItemsController] Menu item saved successfully\");\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n menuItems: menuItemsArray,\n success: true,\n };\n } catch (e) {\n console.error(\"[menuItemsController] Error saving menu item:\", e);\n // Return error object with empty menu items array\n return {\n error: true,\n message: e.message,\n menuItems: [],\n };\n }\n },\n\n listMenuItemsForApplication: (win, appId) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const menuItemsArray = getFileContents(filename);\n const filtered = menuItemsArray.filter((mi) => mi !== null);\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n menuItems: filtered,\n };\n } catch (e) {\n console.error(\"[menuItemsController] Error listing menu items:\", e);\n // Return error object with empty menu items array\n return {\n error: true,\n message: e.message,\n menuItems: [],\n };\n }\n },\n};\n\nmodule.exports = menuItemsController;\n","const path = require(\"path\");\nconst { app } = require(\"electron\");\n\nconst events = require(\"../events\");\nconst lpm = require(\"live-plugin-manager\");\nconst { PluginManager } = require(\"live-plugin-manager\");\n\nconst pluginController = {\n install: (win, packageName, filepath) => {\n try {\n const rootPath = path.join(\n app.getPath(\"userData\"),\n \"plugins\",\n packageName,\n );\n } catch (e) {\n win.webContents.send(\"plugin-install-error\", { error: e.message });\n }\n },\n};\n\nmodule.exports = pluginController;\n","/**\n * cliController.js\n *\n * Manages Claude Code CLI (`claude -p`) as an alternative LLM backend.\n * Spawns the CLI subprocess, parses stream-json NDJSON output, and emits\n * the same LLM_STREAM_* events as the Anthropic SDK path.\n *\n * Users with a Claude Pro/Max subscription and Claude Code installed\n * can use the Chat widget without a separate API key.\n */\nconst { spawn, execSync } = require(\"child_process\");\nconst {\n LLM_STREAM_DELTA,\n LLM_STREAM_TOOL_CALL,\n LLM_STREAM_TOOL_RESULT,\n LLM_STREAM_COMPLETE,\n LLM_STREAM_ERROR,\n} = require(\"../events/llmEvents\");\n\n/**\n * Cached shell PATH result (resolved once, reused for all spawns).\n * Same pattern as mcpController.js.\n */\nlet _shellPath = null;\n\nfunction getShellPath() {\n if (_shellPath !== null) return _shellPath;\n\n try {\n const shell = process.env.SHELL || \"/bin/bash\";\n _shellPath = execSync(`${shell} -ilc 'echo -n \"$PATH\"'`, {\n encoding: \"utf8\",\n timeout: 5000,\n });\n } catch {\n _shellPath = process.env.PATH || \"\";\n }\n\n return _shellPath;\n}\n\n/**\n * Cached CLI binary path (resolved once via `which claude`).\n */\nlet _cliBinaryPath = undefined; // undefined = not yet checked\n\nfunction resolveCliBinary() {\n if (_cliBinaryPath !== undefined) return _cliBinaryPath;\n\n try {\n const fullPath = getShellPath();\n _cliBinaryPath = execSync(\"which claude\", {\n encoding: \"utf8\",\n timeout: 5000,\n env: { ...process.env, PATH: fullPath },\n }).trim();\n } catch {\n _cliBinaryPath = null;\n }\n\n return _cliBinaryPath;\n}\n\n/**\n * Active CLI processes for abort support.\n * Map<requestId, ChildProcess>\n */\nconst activeProcesses = new Map();\n\n/**\n * Session IDs for conversation continuity.\n * Map<widgetUuid, sessionId>\n */\nconst sessions = new Map();\n\n/**\n * Send events safely to a window.\n */\nfunction safeSend(win, channel, data) {\n if (win && !win.isDestroyed()) {\n win.webContents.send(channel, data);\n }\n}\n\nconst cliController = {\n /**\n * isAvailable\n * Check if the Claude Code CLI is installed and accessible.\n *\n * @returns {{ available: boolean, path?: string }}\n */\n isAvailable: () => {\n const binaryPath = resolveCliBinary();\n if (binaryPath) {\n return { available: true, path: binaryPath };\n }\n return { available: false };\n },\n\n /**\n * sendMessage\n * Stream a response from the Claude Code CLI with NDJSON parsing.\n *\n * @param {BrowserWindow} win - the window to send stream events to\n * @param {string} requestId - unique ID for this request\n * @param {object} params - { model, messages, systemPrompt, maxToolRounds, widgetUuid }\n */\n sendMessage: async (win, requestId, params) => {\n const { model, messages, systemPrompt, widgetUuid } = params;\n\n const binaryPath = resolveCliBinary();\n if (!binaryPath) {\n safeSend(win, LLM_STREAM_ERROR, {\n requestId,\n error:\n \"Claude Code CLI not found. Install from https://claude.ai/download\",\n code: \"CLI_NOT_FOUND\",\n });\n return;\n }\n\n // Build CLI args\n const args = [\"-p\", \"--output-format\", \"stream-json\", \"--verbose\"];\n\n if (model) {\n args.push(\"--model\", model);\n }\n\n if (systemPrompt) {\n args.push(\"--append-system-prompt\", systemPrompt);\n }\n\n // Resume existing session for conversation continuity\n const sessionId = widgetUuid ? sessions.get(widgetUuid) : null;\n if (sessionId) {\n args.push(\"--resume\", sessionId);\n }\n\n // Extract the user message (last user message in the array)\n const lastUserMsg = [...messages].reverse().find((m) => m.role === \"user\");\n const userText =\n typeof lastUserMsg?.content === \"string\"\n ? lastUserMsg.content\n : Array.isArray(lastUserMsg?.content)\n ? lastUserMsg.content\n .filter((b) => b.type === \"text\")\n .map((b) => b.text)\n .join(\"\\n\")\n : \"\";\n\n if (!userText) {\n safeSend(win, LLM_STREAM_ERROR, {\n requestId,\n error: \"No user message to send.\",\n code: \"CLI_ERROR\",\n });\n return;\n }\n\n try {\n const fullPath = getShellPath();\n const child = spawn(binaryPath, args, {\n env: { ...process.env, PATH: fullPath },\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n\n activeProcesses.set(requestId, child);\n\n // Pipe user message via stdin (not visible in ps)\n child.stdin.write(userText);\n child.stdin.end();\n\n let stdoutBuffer = \"\";\n let stderrBuffer = \"\";\n let capturedSessionId = null;\n let retried = false;\n\n // Track active tool calls for mapping results\n const activeToolCalls = new Map();\n\n child.stdout.on(\"data\", (chunk) => {\n stdoutBuffer += chunk.toString();\n\n // Process complete lines\n const lines = stdoutBuffer.split(\"\\n\");\n stdoutBuffer = lines.pop(); // keep incomplete line in buffer\n\n for (const line of lines) {\n if (!line.trim()) continue;\n\n let parsed;\n try {\n parsed = JSON.parse(line);\n } catch {\n console.warn(\"[cliController] Skipping invalid JSON line:\", line);\n continue;\n }\n\n // Capture session ID from any message that has it\n if (parsed.session_id && widgetUuid) {\n capturedSessionId = parsed.session_id;\n sessions.set(widgetUuid, capturedSessionId);\n }\n\n // Map CLI stream-json events to IPC events\n if (parsed.type === \"content_block_delta\") {\n if (parsed.delta?.type === \"text_delta\" && parsed.delta.text) {\n safeSend(win, LLM_STREAM_DELTA, {\n requestId,\n text: parsed.delta.text,\n });\n } else if (parsed.delta?.type === \"input_json_delta\") {\n // Update tool input incrementally\n const tc = activeToolCalls.get(parsed.index);\n if (tc) {\n tc.partialInput =\n (tc.partialInput || \"\") + (parsed.delta.partial_json || \"\");\n }\n }\n } else if (parsed.type === \"content_block_start\") {\n if (parsed.content_block?.type === \"tool_use\") {\n const toolBlock = parsed.content_block;\n activeToolCalls.set(parsed.index, {\n toolUseId: toolBlock.id,\n toolName: toolBlock.name,\n partialInput: \"\",\n });\n safeSend(win, LLM_STREAM_TOOL_CALL, {\n requestId,\n toolUseId: toolBlock.id,\n toolName: toolBlock.name,\n serverName: \"Claude Code\",\n input: toolBlock.input || {},\n });\n }\n } else if (parsed.type === \"content_block_stop\") {\n // Tool call completed — try to parse the accumulated input\n const tc = activeToolCalls.get(parsed.index);\n if (tc && tc.partialInput) {\n try {\n tc.finalInput = JSON.parse(tc.partialInput);\n } catch {\n tc.finalInput = tc.partialInput;\n }\n }\n } else if (parsed.type === \"message_stop\") {\n // Individual message completed (may be followed by more in tool-use loops)\n } else if (parsed.type === \"result\") {\n // Final result — conversation complete\n const content = [];\n if (parsed.result) {\n content.push({ type: \"text\", text: parsed.result });\n }\n\n safeSend(win, LLM_STREAM_COMPLETE, {\n requestId,\n content,\n stopReason: parsed.stop_reason || \"end_turn\",\n usage: parsed.usage || {},\n });\n }\n }\n });\n\n child.stderr.on(\"data\", (chunk) => {\n stderrBuffer += chunk.toString();\n });\n\n child.on(\"error\", (err) => {\n activeProcesses.delete(requestId);\n safeSend(win, LLM_STREAM_ERROR, {\n requestId,\n error: `Failed to start Claude CLI: ${err.message}`,\n code: \"CLI_SPAWN_ERROR\",\n });\n });\n\n child.on(\"close\", (code) => {\n activeProcesses.delete(requestId);\n\n // Process any remaining buffer\n if (stdoutBuffer.trim()) {\n try {\n const parsed = JSON.parse(stdoutBuffer);\n if (parsed.session_id && widgetUuid) {\n sessions.set(widgetUuid, parsed.session_id);\n }\n if (parsed.type === \"result\") {\n const content = [];\n if (parsed.result) {\n content.push({ type: \"text\", text: parsed.result });\n }\n safeSend(win, LLM_STREAM_COMPLETE, {\n requestId,\n content,\n stopReason: parsed.stop_reason || \"end_turn\",\n usage: parsed.usage || {},\n });\n return;\n }\n } catch {\n // ignore\n }\n }\n\n if (code !== 0 && code !== null) {\n // Check if resume failed and retry without it\n if (sessionId && !retried && stderrBuffer.includes(\"session\")) {\n retried = true;\n if (widgetUuid) sessions.delete(widgetUuid);\n // Retry without --resume\n cliController.sendMessage(win, requestId, {\n ...params,\n _retryWithoutResume: true,\n });\n return;\n }\n\n // Check for auth errors\n if (\n stderrBuffer.includes(\"auth\") ||\n stderrBuffer.includes(\"login\") ||\n stderrBuffer.includes(\"not authenticated\")\n ) {\n safeSend(win, LLM_STREAM_ERROR, {\n requestId,\n error:\n \"Claude Code CLI is not authenticated. Run `claude auth login` in your terminal.\",\n code: \"CLI_AUTH_ERROR\",\n });\n return;\n }\n\n safeSend(win, LLM_STREAM_ERROR, {\n requestId,\n error: `Claude CLI exited with code ${code}${stderrBuffer ? \": \" + stderrBuffer.slice(0, 500) : \"\"}`,\n code: \"CLI_ERROR\",\n });\n }\n });\n } catch (err) {\n activeProcesses.delete(requestId);\n safeSend(win, LLM_STREAM_ERROR, {\n requestId,\n error: `Failed to start Claude CLI: ${err.message}`,\n code: \"CLI_SPAWN_ERROR\",\n });\n }\n },\n\n /**\n * abortRequest\n * Kill an in-flight CLI process.\n *\n * @param {string} requestId - the request to cancel\n * @returns {{ success: boolean }}\n */\n abortRequest: (requestId) => {\n const child = activeProcesses.get(requestId);\n if (child) {\n child.kill(\"SIGTERM\");\n activeProcesses.delete(requestId);\n return { success: true };\n }\n return { success: false, message: \"Request not found\" };\n },\n\n /**\n * clearSession\n * Remove the stored session ID for a widget (called on \"New Chat\").\n *\n * @param {string} widgetUuid - the widget whose session to clear\n * @returns {{ success: boolean }}\n */\n clearSession: (widgetUuid) => {\n if (widgetUuid && sessions.has(widgetUuid)) {\n sessions.delete(widgetUuid);\n return { success: true };\n }\n return { success: false };\n },\n\n /**\n * getSessionStatus\n * Check if a CLI session exists and whether a process is active for a widget.\n *\n * @param {string} widgetUuid - the widget to check\n * @returns {{ hasSession: boolean, sessionId?: string, isProcessActive: boolean }}\n */\n getSessionStatus: (widgetUuid) => {\n const sessionId = widgetUuid ? sessions.get(widgetUuid) : null;\n // Check if any active process belongs to this widget\n let isProcessActive = false;\n for (const [, child] of activeProcesses) {\n if (!child.killed) {\n isProcessActive = true;\n break;\n }\n }\n return {\n hasSession: !!sessionId,\n sessionId: sessionId || undefined,\n isProcessActive,\n };\n },\n\n /**\n * endSession\n * Kill any active CLI process AND clear the session for a widget.\n *\n * @param {string} widgetUuid - the widget whose session to end\n * @returns {{ success: boolean }}\n */\n endSession: (widgetUuid) => {\n // Kill any active processes for this widget\n for (const [reqId, child] of activeProcesses) {\n if (reqId.startsWith(widgetUuid)) {\n child.kill(\"SIGTERM\");\n activeProcesses.delete(reqId);\n }\n }\n // Clear the session\n if (widgetUuid && sessions.has(widgetUuid)) {\n sessions.delete(widgetUuid);\n }\n return { success: true };\n },\n};\n\nmodule.exports = cliController;\n","/**\n * llmController.js\n *\n * Manages LLM chat interactions in the main process.\n * Streams responses from Anthropic's Messages API, handles tool-use loops\n * by calling MCP tools via mcpController, and supports request cancellation.\n *\n * Conversation state lives in the renderer — this controller is stateless\n * per-request, receiving the full messages array each time.\n */\nconst Anthropic = require(\"@anthropic-ai/sdk\");\nconst mcpController = require(\"./mcpController\");\nconst cliController = require(\"./cliController\");\nconst {\n LLM_STREAM_DELTA,\n LLM_STREAM_TOOL_CALL,\n LLM_STREAM_TOOL_RESULT,\n LLM_STREAM_COMPLETE,\n LLM_STREAM_ERROR,\n} = require(\"../events/llmEvents\");\n\n/**\n * In-flight requests for cancellation support.\n * Map<requestId, AbortController>\n */\nconst activeRequests = new Map();\n\n/**\n * Default maximum tool-use rounds to prevent infinite loops.\n */\nconst DEFAULT_MAX_TOOL_ROUNDS = 10;\n\n/**\n * Convert MCP tool format to Anthropic tool format.\n * MCP: { name, description, inputSchema }\n * Anthropic: { name, description, input_schema }\n */\nfunction mcpToolToAnthropic(tool) {\n return {\n name: tool.name,\n description: tool.description || \"\",\n input_schema: tool.inputSchema || { type: \"object\", properties: {} },\n };\n}\n\n/**\n * Extract text content from an MCP tool result.\n * MCP results can be { content: [{ type: \"text\", text: \"...\" }] } or plain strings.\n */\nfunction extractToolResultText(mcpResult) {\n if (!mcpResult) return \"No result returned.\";\n if (mcpResult.error) return `Error: ${mcpResult.message}`;\n\n const result = mcpResult.result;\n if (!result) return \"No result returned.\";\n\n // MCP standard: { content: [{ type, text }] }\n if (result.content && Array.isArray(result.content)) {\n return result.content\n .filter((c) => c.type === \"text\")\n .map((c) => c.text)\n .join(\"\\n\");\n }\n\n // Plain string\n if (typeof result === \"string\") return result;\n\n // Fallback: JSON stringify\n return JSON.stringify(result);\n}\n\nconst llmController = {\n /**\n * sendMessage\n * Stream a response from the Anthropic Messages API with tool-use support.\n *\n * @param {BrowserWindow} win - the window to send stream events to\n * @param {string} requestId - unique ID for this request (for filtering + cancellation)\n * @param {object} params - { apiKey, model, messages, tools, toolServerMap, systemPrompt, maxToolRounds }\n */\n sendMessage: async (win, requestId, params) => {\n // Route to CLI backend if specified\n if (params.backend === \"claude-code\") {\n return cliController.sendMessage(win, requestId, params);\n }\n\n const {\n apiKey,\n model = \"claude-sonnet-4-20250514\",\n messages,\n tools = [],\n toolServerMap = {},\n systemPrompt,\n maxToolRounds = DEFAULT_MAX_TOOL_ROUNDS,\n } = params;\n\n // Set up abort controller\n const abortController = new AbortController();\n activeRequests.set(requestId, abortController);\n\n try {\n if (!apiKey) {\n throw new Error(\n \"API key is required. Add an Anthropic provider in your dashboard settings.\",\n );\n }\n\n const client = new Anthropic({ apiKey });\n\n // Convert MCP tools to Anthropic format\n const anthropicTools = tools.map(mcpToolToAnthropic);\n\n // Build the conversation — mutable copy for tool-use loop\n let currentMessages = [...messages];\n let toolRound = 0;\n\n while (toolRound <= maxToolRounds) {\n // Check for abort before each API call\n if (abortController.signal.aborted) {\n return;\n }\n\n // Build request params\n const requestParams = {\n model,\n max_tokens: 8192,\n messages: currentMessages,\n stream: true,\n };\n if (systemPrompt) {\n requestParams.system = systemPrompt;\n }\n if (anthropicTools.length > 0) {\n requestParams.tools = anthropicTools;\n }\n\n // Stream the response\n const stream = client.messages.stream(requestParams, {\n signal: abortController.signal,\n });\n\n let responseContentBlocks = [];\n let stopReason = null;\n\n // Collect text deltas and content blocks\n stream.on(\"text\", (text) => {\n if (win && !win.isDestroyed()) {\n win.webContents.send(LLM_STREAM_DELTA, { requestId, text });\n }\n });\n\n // Wait for the full message\n const finalMessage = await stream.finalMessage();\n responseContentBlocks = finalMessage.content;\n stopReason = finalMessage.stop_reason;\n\n // Check for tool use\n const toolUseBlocks = responseContentBlocks.filter(\n (block) => block.type === \"tool_use\",\n );\n\n if (stopReason === \"end_turn\" || toolUseBlocks.length === 0) {\n // Done — send complete event\n if (win && !win.isDestroyed()) {\n win.webContents.send(LLM_STREAM_COMPLETE, {\n requestId,\n content: responseContentBlocks,\n stopReason,\n usage: finalMessage.usage,\n });\n }\n return;\n }\n\n // Tool use round\n toolRound++;\n\n // Append assistant message with tool_use blocks\n currentMessages.push({\n role: \"assistant\",\n content: responseContentBlocks,\n });\n\n // Execute each tool call\n const toolResults = [];\n for (const toolBlock of toolUseBlocks) {\n if (abortController.signal.aborted) return;\n\n const serverName = toolServerMap[toolBlock.name];\n\n // Notify renderer of tool call\n if (win && !win.isDestroyed()) {\n win.webContents.send(LLM_STREAM_TOOL_CALL, {\n requestId,\n toolUseId: toolBlock.id,\n toolName: toolBlock.name,\n serverName,\n input: toolBlock.input,\n });\n }\n\n let resultText;\n let isError = false;\n\n if (!serverName) {\n resultText = `Error: No MCP server found for tool \"${toolBlock.name}\". The server may have disconnected.`;\n isError = true;\n } else {\n try {\n const mcpResult = await mcpController.callTool(\n win,\n serverName,\n toolBlock.name,\n toolBlock.input,\n );\n if (mcpResult.error) {\n resultText = `Error: ${mcpResult.message}`;\n isError = true;\n } else {\n resultText = extractToolResultText(mcpResult);\n }\n } catch (err) {\n resultText = `Error calling tool: ${err.message}`;\n isError = true;\n }\n }\n\n // Notify renderer of tool result\n if (win && !win.isDestroyed()) {\n win.webContents.send(LLM_STREAM_TOOL_RESULT, {\n requestId,\n toolUseId: toolBlock.id,\n toolName: toolBlock.name,\n result: resultText,\n isError,\n });\n }\n\n toolResults.push({\n type: \"tool_result\",\n tool_use_id: toolBlock.id,\n content: resultText,\n is_error: isError,\n });\n }\n\n // Append tool results as user message\n currentMessages.push({\n role: \"user\",\n content: toolResults,\n });\n\n // Loop continues — next API call with tool results\n }\n\n // Exceeded max tool rounds\n if (win && !win.isDestroyed()) {\n win.webContents.send(LLM_STREAM_ERROR, {\n requestId,\n error: `Exceeded maximum tool-use rounds (${maxToolRounds}). The assistant may be stuck in a loop.`,\n code: \"MAX_TOOL_ROUNDS\",\n });\n }\n } catch (error) {\n if (abortController.signal.aborted) {\n // Request was cancelled — not an error\n return;\n }\n\n console.error(`[llmController] Error in sendMessage:`, error);\n\n const errorPayload = {\n requestId,\n error: error.message || \"Unknown error\",\n code: error.status || error.code || \"UNKNOWN\",\n };\n\n // Handle rate limiting\n if (error.status === 429) {\n errorPayload.code = \"RATE_LIMITED\";\n const retryAfter = error.headers?.[\"retry-after\"];\n if (retryAfter) {\n errorPayload.retryAfter = parseInt(retryAfter, 10);\n }\n }\n\n if (win && !win.isDestroyed()) {\n win.webContents.send(LLM_STREAM_ERROR, errorPayload);\n }\n } finally {\n activeRequests.delete(requestId);\n }\n },\n\n /**\n * abortRequest\n * Cancel an in-flight LLM request.\n *\n * @param {BrowserWindow} win - the window (unused but kept for API consistency)\n * @param {string} requestId - the request to cancel\n * @returns {{ success: boolean }}\n */\n abortRequest: (win, requestId) => {\n const controller = activeRequests.get(requestId);\n if (controller) {\n controller.abort();\n activeRequests.delete(requestId);\n return { success: true };\n }\n // Fallback to CLI controller\n return cliController.abortRequest(requestId);\n },\n};\n\nmodule.exports = llmController;\n","/**\n * dashboardConfigValidator.js\n *\n * Validates dashboard configuration objects against the dashboard-config schema.\n * Runs in the Electron main process (CJS).\n *\n * Uses a lightweight validation approach based on the JSON Schema definition\n * without requiring a full JSON Schema validator library.\n */\n\nconst schema = require(\"./dashboard-config.schema.json\");\n\nconst CURRENT_SCHEMA_VERSION = \"1.0.0\";\n\n/**\n * Validate a dashboard configuration object.\n *\n * @param {Object} config - The dashboard config to validate\n * @returns {{ valid: boolean, errors: string[] }} Validation result\n */\nfunction validateDashboardConfig(config) {\n const errors = [];\n\n if (config === null || config === undefined || typeof config !== \"object\") {\n return { valid: false, errors: [\"Config must be a non-null object\"] };\n }\n\n // Required fields\n for (const field of schema.required) {\n if (!(field in config)) {\n errors.push(`Missing required field: \"${field}\"`);\n }\n }\n\n // If required fields are missing, return early — further checks would be noisy\n if (errors.length > 0) {\n return { valid: false, errors };\n }\n\n // schemaVersion\n if (typeof config.schemaVersion !== \"string\") {\n errors.push(`\"schemaVersion\" must be a string`);\n } else if (!/^\\d+\\.\\d+\\.\\d+$/.test(config.schemaVersion)) {\n errors.push(\n `\"schemaVersion\" must be a semver string (e.g., \"1.0.0\"), got \"${config.schemaVersion}\"`,\n );\n }\n\n // name\n if (typeof config.name !== \"string\" || config.name.length === 0) {\n errors.push(`\"name\" must be a non-empty string`);\n } else if (config.name.length > 100) {\n errors.push(`\"name\" must be 100 characters or fewer`);\n }\n\n // description (optional)\n if (\"description\" in config && typeof config.description !== \"string\") {\n errors.push(`\"description\" must be a string`);\n }\n\n // author (optional)\n if (\"author\" in config) {\n if (\n typeof config.author !== \"object\" ||\n config.author === null ||\n Array.isArray(config.author)\n ) {\n errors.push(`\"author\" must be an object with at least a \"name\" field`);\n } else if (!config.author.name || typeof config.author.name !== \"string\") {\n errors.push(`\"author.name\" must be a non-empty string`);\n }\n }\n\n // shareable (optional)\n if (\"shareable\" in config && typeof config.shareable !== \"boolean\") {\n errors.push(`\"shareable\" must be a boolean`);\n }\n\n // tags (optional)\n if (\"tags\" in config) {\n if (!Array.isArray(config.tags)) {\n errors.push(`\"tags\" must be an array of strings`);\n } else {\n for (let i = 0; i < config.tags.length; i++) {\n if (typeof config.tags[i] !== \"string\") {\n errors.push(`\"tags[${i}]\" must be a string`);\n }\n }\n }\n }\n\n // workspace\n if (typeof config.workspace !== \"object\" || config.workspace === null) {\n errors.push(`\"workspace\" must be an object`);\n } else {\n if (!Array.isArray(config.workspace.layout)) {\n errors.push(`\"workspace.layout\" must be an array`);\n } else if (config.workspace.layout.length === 0) {\n errors.push(`\"workspace.layout\" must contain at least one layout item`);\n }\n }\n\n // widgets\n if (!Array.isArray(config.widgets)) {\n errors.push(`\"widgets\" must be an array`);\n } else {\n for (let i = 0; i < config.widgets.length; i++) {\n const w = config.widgets[i];\n if (typeof w !== \"object\" || w === null) {\n errors.push(`\"widgets[${i}]\" must be an object`);\n continue;\n }\n if (!w.id || typeof w.id !== \"string\") {\n errors.push(`\"widgets[${i}].id\" must be a non-empty string`);\n }\n if (!w.package || typeof w.package !== \"string\") {\n errors.push(`\"widgets[${i}].package\" must be a non-empty string`);\n }\n if (\"version\" in w && typeof w.version !== \"string\") {\n errors.push(`\"widgets[${i}].version\" must be a string`);\n }\n if (\"required\" in w && typeof w.required !== \"boolean\") {\n errors.push(`\"widgets[${i}].required\" must be a boolean`);\n }\n if (\"author\" in w && typeof w.author !== \"string\") {\n errors.push(`\"widgets[${i}].author\" must be a string`);\n }\n }\n }\n\n // providers (optional)\n if (\"providers\" in config) {\n if (!Array.isArray(config.providers)) {\n errors.push(`\"providers\" must be an array`);\n } else {\n const validClasses = [\"credential\", \"mcp\", \"api\"];\n for (let i = 0; i < config.providers.length; i++) {\n const p = config.providers[i];\n if (typeof p !== \"object\" || p === null) {\n errors.push(`\"providers[${i}]\" must be an object`);\n continue;\n }\n if (!p.type || typeof p.type !== \"string\") {\n errors.push(`\"providers[${i}].type\" must be a non-empty string`);\n }\n if (!validClasses.includes(p.providerClass)) {\n errors.push(\n `\"providers[${i}].providerClass\" must be \"credential\", \"mcp\", or \"api\", got \"${p.providerClass}\"`,\n );\n }\n if (\"usedBy\" in p && !Array.isArray(p.usedBy)) {\n errors.push(`\"providers[${i}].usedBy\" must be an array`);\n }\n }\n }\n }\n\n // appOrigin (optional)\n if (\"appOrigin\" in config) {\n if (typeof config.appOrigin !== \"string\") {\n errors.push(`\"appOrigin\" must be a string`);\n } else if (config.appOrigin.length > 200) {\n errors.push(`\"appOrigin\" must be 200 characters or fewer`);\n }\n }\n\n // eventWiring (optional)\n if (\"eventWiring\" in config) {\n if (!Array.isArray(config.eventWiring)) {\n errors.push(`\"eventWiring\" must be an array`);\n } else {\n for (let i = 0; i < config.eventWiring.length; i++) {\n const ew = config.eventWiring[i];\n if (typeof ew !== \"object\" || ew === null) {\n errors.push(`\"eventWiring[${i}]\" must be an object`);\n continue;\n }\n // source\n if (\n typeof ew.source !== \"object\" ||\n ew.source === null ||\n !ew.source.widget ||\n !ew.source.event\n ) {\n errors.push(\n `\"eventWiring[${i}].source\" must have \"widget\" and \"event\" strings`,\n );\n }\n // target\n if (\n typeof ew.target !== \"object\" ||\n ew.target === null ||\n !ew.target.widget ||\n !ew.target.handler\n ) {\n errors.push(\n `\"eventWiring[${i}].target\" must have \"widget\" and \"handler\" strings`,\n );\n }\n }\n }\n }\n\n // Reject unknown top-level fields\n const allowedFields = Object.keys(schema.properties);\n for (const key of Object.keys(config)) {\n if (!allowedFields.includes(key)) {\n errors.push(`Unknown field: \"${key}\"`);\n }\n }\n\n return { valid: errors.length === 0, errors };\n}\n\n/**\n * Apply defaults to a dashboard config (fills in optional fields with defaults).\n *\n * @param {Object} config - A valid dashboard config\n * @returns {Object} Config with defaults applied (does not mutate original)\n */\nfunction applyDefaults(config) {\n return {\n schemaVersion: CURRENT_SCHEMA_VERSION,\n description: \"\",\n shareable: true,\n tags: [],\n icon: \"grip\",\n screenshots: [],\n providers: [],\n eventWiring: [],\n ...config,\n workspace: {\n type: \"workspace\",\n version: 1,\n menuId: 1,\n ...config.workspace,\n },\n };\n}\n\nmodule.exports = {\n validateDashboardConfig,\n applyDefaults,\n CURRENT_SCHEMA_VERSION,\n};\n","/**\n * dashboardConfigUtils.js\n *\n * Pure utility functions for dashboard config export/import.\n * No Electron dependencies — safe to test and reuse anywhere.\n */\n\n/**\n * Collect all widget component names from a workspace layout.\n * Walks the layout tree and grid cells to find all placed components.\n *\n * @param {Array} layout - The workspace layout array\n * @returns {string[]} Unique component names\n */\nfunction collectComponentNames(layout) {\n const components = new Set();\n\n for (const item of layout) {\n // Direct component reference\n if (item.component && item.type === \"widget\") {\n components.add(item.component);\n }\n\n // Grid cells\n if (item.grid) {\n for (const [key, cell] of Object.entries(item.grid)) {\n // Grid cells are keyed as \"row.col\" (e.g., \"1.1\", \"2.3\")\n if (/^\\d+\\.\\d+$/.test(key) && cell && cell.component) {\n // cell.component can be a string (component name) or a number (layout item id)\n if (typeof cell.component === \"string\") {\n components.add(cell.component);\n }\n }\n }\n }\n }\n\n // Also check child items that reference components via grid\n // The layout is a flat array — items with type \"widget\" have a component name\n for (const item of layout) {\n if (\n item.component &&\n item.component !== \"LayoutGridContainer\" &&\n item.component !== \"Container\"\n ) {\n components.add(item.component);\n }\n }\n\n // Remove container components — these are layout containers, not widgets\n components.delete(\"LayoutGridContainer\");\n components.delete(\"Container\");\n\n return Array.from(components);\n}\n\n/**\n * Extract event wiring from a workspace layout.\n * Reads the `listeners` property from layout items and converts\n * them to the dashboard config eventWiring format.\n *\n * LayoutModel.listeners format:\n * { \"eventName\": { \"sourceWidget\": \"handlerName\" } }\n * or\n * { \"eventName\": \"SourceWidget\" }\n *\n * Dashboard config eventWiring format:\n * [{ source: { widget, event }, target: { widget, handler } }]\n *\n * @param {Array} layout - The workspace layout array\n * @returns {Array} Event wiring array\n */\nfunction extractEventWiring(layout) {\n const wiring = [];\n\n for (const item of layout) {\n if (!item.listeners || typeof item.listeners !== \"object\") continue;\n\n const targetWidget = item.component;\n if (!targetWidget) continue;\n\n for (const [eventName, listenerConfig] of Object.entries(item.listeners)) {\n if (typeof listenerConfig === \"string\") {\n // Simple format: \"SourceWidget\"\n wiring.push({\n source: { widget: listenerConfig, event: eventName },\n target: { widget: targetWidget, handler: eventName },\n });\n } else if (\n typeof listenerConfig === \"object\" &&\n listenerConfig !== null\n ) {\n // Object format: { \"SourceWidget\": \"handlerName\" }\n for (const [sourceKey, handlerValue] of Object.entries(\n listenerConfig,\n )) {\n const parts = sourceKey.split(\".\");\n const sourceWidget = parts[0];\n\n let handler = eventName;\n if (typeof handlerValue === \"string\") {\n handler = handlerValue;\n }\n\n wiring.push({\n source: { widget: sourceWidget, event: eventName },\n target: { widget: targetWidget, handler },\n });\n }\n }\n }\n }\n\n return wiring;\n}\n\n/**\n * Build the widget dependencies array from component names and\n * installed widget metadata.\n *\n * @param {string[]} componentNames - Widget component names from layout\n * @param {Object} widgetRegistry - WidgetRegistry instance (optional, needs getWidgets())\n * @returns {Array} Widget dependency objects for the dashboard config\n */\nfunction buildWidgetDependencies(componentNames, widgetRegistry = null) {\n const widgets = [];\n const seen = new Set();\n\n for (const name of componentNames) {\n if (seen.has(name)) continue;\n seen.add(name);\n\n let packageName = \"\";\n let version = \"*\";\n let author = \"\";\n\n // Try to resolve from widget registry\n if (widgetRegistry) {\n const installedWidgets = widgetRegistry.getWidgets();\n for (const w of installedWidgets) {\n if (w.componentNames && w.componentNames.includes(name)) {\n packageName = w.name || \"\";\n version = w.version || \"*\";\n author =\n typeof w.author === \"string\" ? w.author : w.author?.name || \"\";\n break;\n }\n }\n }\n\n widgets.push({\n id: packageName ? `${packageName}.${name}` : name,\n package: packageName || name,\n version,\n required: true,\n author: author || \"\",\n });\n }\n\n return widgets;\n}\n\n/**\n * Aggregate provider requirements from installed widget configs.\n *\n * @param {string[]} componentNames - Widget component names from layout\n * @param {Object} widgetRegistry - WidgetRegistry instance (optional, needs getWidgets())\n * @returns {Array} Provider requirement objects for the dashboard config\n */\nfunction buildProviderRequirements(componentNames, widgetRegistry = null) {\n const providerMap = new Map();\n\n if (!widgetRegistry) return [];\n\n const installedWidgets = widgetRegistry.getWidgets();\n\n for (const name of componentNames) {\n for (const w of installedWidgets) {\n if (w.providers && w.componentNames && w.componentNames.includes(name)) {\n for (const p of w.providers) {\n const key = `${p.type}:${p.providerClass}`;\n if (!providerMap.has(key)) {\n providerMap.set(key, {\n type: p.type,\n providerClass: p.providerClass,\n required: p.required !== false,\n usedBy: [],\n });\n }\n const entry = providerMap.get(key);\n if (!entry.usedBy.includes(name)) {\n entry.usedBy.push(name);\n }\n }\n }\n }\n }\n\n return Array.from(providerMap.values());\n}\n\n/**\n * Apply event wiring from a dashboard config to a workspace layout.\n * Converts the dashboard config `eventWiring` array back into\n * LayoutModel `listeners` format on the appropriate layout items.\n *\n * This is the reverse of `extractEventWiring`.\n *\n * Dashboard config eventWiring format:\n * [{ source: { widget, event }, target: { widget, handler } }]\n *\n * LayoutModel.listeners format:\n * { \"eventName\": { \"SourceWidget\": \"handlerName\" } }\n *\n * @param {Array} layout - The workspace layout array (mutated in place)\n * @param {Array} eventWiring - Event wiring array from dashboard config\n * @returns {Array} The modified layout array\n */\nfunction applyEventWiringToLayout(layout, eventWiring) {\n if (!eventWiring || !eventWiring.length) return layout;\n\n // Build a map of target widget -> listeners object\n // Each wiring entry: { source: { widget, event }, target: { widget, handler } }\n const listenersByTarget = new Map();\n\n for (const wire of eventWiring) {\n const targetWidget = wire.target?.widget;\n const sourceWidget = wire.source?.widget;\n const eventName = wire.source?.event;\n const handler = wire.target?.handler;\n\n if (!targetWidget || !sourceWidget || !eventName) continue;\n\n if (!listenersByTarget.has(targetWidget)) {\n listenersByTarget.set(targetWidget, {});\n }\n\n const listeners = listenersByTarget.get(targetWidget);\n\n if (!listeners[eventName]) {\n listeners[eventName] = {};\n }\n\n // Use handler value, defaulting to the event name\n listeners[eventName][sourceWidget] = handler || eventName;\n }\n\n // Apply listeners to matching layout items\n for (const item of layout) {\n if (!item.component) continue;\n\n const listeners = listenersByTarget.get(item.component);\n if (listeners) {\n // Merge with any existing listeners\n item.listeners = { ...(item.listeners || {}), ...listeners };\n }\n }\n\n return layout;\n}\n\n/**\n * Check compatibility of a dashboard config against installed widgets.\n * Returns a per-widget status report indicating what's installed,\n * what needs to be installed, and what's unavailable.\n *\n * @param {Array} dashboardWidgets - Widget deps from dashboard config (widgets array)\n * @param {Array} installedWidgets - Currently installed widget metadata (from widgetRegistry.getWidgets())\n * @param {Array} registryPackages - Available packages from registry index (optional)\n * @returns {Object} Compatibility report\n */\nfunction checkDashboardCompatibility(\n dashboardWidgets = [],\n installedWidgets = [],\n registryPackages = [],\n) {\n const installedByName = new Map();\n for (const w of installedWidgets) {\n if (w.name) {\n installedByName.set(w.name, w);\n }\n }\n\n const registryByName = new Map();\n for (const p of registryPackages) {\n if (p.name) {\n registryByName.set(p.name, p);\n }\n }\n\n const widgets = [];\n let installedCount = 0;\n let toInstallCount = 0;\n let unavailableCount = 0;\n\n for (const dep of dashboardWidgets) {\n const packageName = dep.package;\n const required = dep.required !== false;\n const installed = installedByName.get(packageName);\n\n if (installed) {\n installedCount++;\n widgets.push({\n package: packageName,\n required,\n status: \"installed\",\n installedVersion: installed.version || null,\n requiredVersion: dep.version || \"*\",\n });\n } else if (registryByName.has(packageName)) {\n toInstallCount++;\n const registryPkg = registryByName.get(packageName);\n widgets.push({\n package: packageName,\n required,\n status: \"to-install\",\n availableVersion: registryPkg.version || null,\n requiredVersion: dep.version || \"*\",\n });\n } else {\n unavailableCount++;\n widgets.push({\n package: packageName,\n required,\n status: \"unavailable\",\n requiredVersion: dep.version || \"*\",\n });\n }\n }\n\n const hasUnavailableRequired = widgets.some(\n (w) => w.status === \"unavailable\" && w.required,\n );\n\n return {\n compatible: !hasUnavailableRequired,\n summary: {\n total: dashboardWidgets.length,\n installed: installedCount,\n toInstall: toInstallCount,\n unavailable: unavailableCount,\n },\n widgets,\n };\n}\n\n// Tailwind color family name → representative hex (500 shade)\nconst TAILWIND_COLORS = {\n slate: \"#64748b\",\n gray: \"#6b7280\",\n zinc: \"#71717a\",\n neutral: \"#737373\",\n stone: \"#78716c\",\n red: \"#ef4444\",\n orange: \"#f97316\",\n amber: \"#f59e0b\",\n yellow: \"#eab308\",\n lime: \"#84cc16\",\n green: \"#22c55e\",\n emerald: \"#10b981\",\n teal: \"#14b8a6\",\n cyan: \"#06b6d4\",\n sky: \"#0ea5e9\",\n blue: \"#3b82f6\",\n indigo: \"#6366f1\",\n violet: \"#8b5cf6\",\n purple: \"#a855f7\",\n fuchsia: \"#d946ef\",\n pink: \"#ec4899\",\n rose: \"#f43f5e\",\n};\n\n/**\n * Convert a color value to a CSS-usable color.\n * If it's a Tailwind family name, map to its hex 500 shade.\n */\nfunction toDisplayColor(value) {\n if (!value) return \"\";\n const lower = value.toLowerCase().trim();\n if (TAILWIND_COLORS[lower]) return TAILWIND_COLORS[lower];\n return value;\n}\n\n/**\n * Generate a registry manifest from a dashboard config.\n * Converts the internal .dashboard.json format into the registry\n * manifest.json format used by dash-registry.\n *\n * @param {Object} dashboardConfig - Validated dashboard config object\n * @param {Object} options - Publishing options\n * @param {string} options.githubUser - GitHub username / org for the package scope\n * @param {string} options.category - Registry category (default: \"general\")\n * @param {string} options.repository - Repository URL (optional)\n * @param {string} options.appOrigin - Originating app package name (optional)\n * @returns {Object} Registry manifest object\n */\nfunction generateRegistryManifest(dashboardConfig, options = {}) {\n const name = (dashboardConfig.name || \"dashboard\")\n .replace(/[^a-zA-Z0-9-_ ]/g, \"\")\n .replace(/\\s+/g, \"-\")\n .toLowerCase();\n\n const githubUser = options.githubUser || \"\";\n const version = \"1.0.0\";\n\n const manifest = {\n githubUser,\n name,\n displayName: dashboardConfig.name || \"Dashboard\",\n author: dashboardConfig.author?.name || \"\",\n description: dashboardConfig.description || \"\",\n version,\n type: \"dashboard\",\n category: options.category || \"general\",\n tags: dashboardConfig.tags || [],\n icon: dashboardConfig.icon || \"grip\",\n downloadUrl: `https://github.com/${githubUser}/dash-registry/releases/download/${githubUser}--${name}--v{version}/dashboard-${name}-v{version}.zip`,\n repository: options.repository || \"\",\n publishedAt: new Date().toISOString(),\n widgets: (dashboardConfig.widgets || []).map((w) => ({\n id: w.id,\n name: w.id ? w.id.split(\".\").pop() : w.package,\n package: w.package,\n version: w.version || \"*\",\n required: w.required !== false,\n author: w.author || \"\",\n })),\n providers: dashboardConfig.providers || [],\n eventWiring: dashboardConfig.eventWiring || [],\n };\n\n if (options.appOrigin || dashboardConfig.appOrigin) {\n manifest.appOrigin = options.appOrigin || dashboardConfig.appOrigin;\n }\n\n // Include theme metadata if dashboard bundles a theme\n if (dashboardConfig.theme) {\n manifest.theme = {\n key: dashboardConfig.theme.key || \"\",\n name: dashboardConfig.theme.data?.name || dashboardConfig.theme.key || \"\",\n };\n if (dashboardConfig.theme.registryPackage) {\n manifest.theme.registryPackage = dashboardConfig.theme.registryPackage;\n }\n // Extract color values for display (convert Tailwind names to hex)\n const td = dashboardConfig.theme.data;\n if (td) {\n const colors = {};\n if (td.primary || td.colors?.primary)\n colors.primary = toDisplayColor(td.primary || td.colors.primary);\n if (td.secondary || td.colors?.secondary)\n colors.secondary = toDisplayColor(td.secondary || td.colors.secondary);\n if (td.tertiary || td.colors?.tertiary)\n colors.tertiary = toDisplayColor(td.tertiary || td.colors.tertiary);\n if (Object.keys(colors).length > 0) {\n manifest.theme.colors = colors;\n }\n }\n }\n\n return manifest;\n}\n\n/**\n * Build a structured preview object from a dashboard registry package\n * or dashboard config. Provides all data needed for a rich preview UI.\n *\n * @param {Object} source - Registry package manifest or dashboard config\n * @returns {Object} Structured preview with metadata, widgets, wiring, providers\n */\nfunction buildDashboardPreview(source) {\n const preview = {\n name: source.displayName || source.name || \"Dashboard\",\n description: source.description || \"\",\n author:\n typeof source.author === \"object\"\n ? source.author.name || \"\"\n : source.author || \"\",\n authorId: typeof source.author === \"object\" ? source.author.id || \"\" : \"\",\n version: source.version || \"\",\n icon: source.icon || \"grip\",\n tags: source.tags || [],\n screenshots: source.screenshots || [],\n publishedAt: source.publishedAt || null,\n category: source.category || \"general\",\n widgets: (source.widgets || []).map((w) => ({\n name: w.name || w.id || w.package || \"\",\n package: w.package || \"\",\n version: w.version || \"*\",\n required: w.required !== false,\n author: w.author || \"\",\n })),\n eventWiring: (source.eventWiring || []).map((wire) => ({\n raw: wire,\n summary: `${wire.source?.widget || \"?\"}.${wire.source?.event || \"?\"} → ${wire.target?.widget || \"?\"}.${wire.target?.handler || wire.source?.event || \"?\"}`,\n })),\n providers: (source.providers || []).map((p) => ({\n type: p.type || \"\",\n providerClass: p.providerClass || \"\",\n required: p.required !== false,\n usedBy: p.usedBy || [],\n })),\n appOrigin: source.appOrigin || null,\n summary: {\n widgetCount: (source.widgets || []).length,\n eventCount: (source.eventWiring || []).length,\n providerCount: (source.providers || []).length,\n requiredWidgets: (source.widgets || []).filter(\n (w) => w.required !== false,\n ).length,\n optionalWidgets: (source.widgets || []).filter(\n (w) => w.required === false,\n ).length,\n },\n };\n\n return preview;\n}\n\n/**\n * Check installed dashboards for available updates in the registry.\n *\n * Compares the `_dashboardConfig.installedVersion` of each workspace\n * against the current version in the registry.\n *\n * @param {Array} workspaces - All workspaces from workspaces.json\n * @param {Array} registryPackages - Packages from registry index\n * @returns {Array} Update records with workspace info and version comparison\n */\nfunction checkDashboardUpdates(workspaces = [], registryPackages = []) {\n const registryByName = new Map();\n for (const pkg of registryPackages) {\n if (pkg.name && (pkg.type || \"widget\") === \"dashboard\") {\n registryByName.set(pkg.name, pkg);\n }\n }\n\n const updates = [];\n\n for (const ws of workspaces) {\n const config = ws._dashboardConfig;\n if (!config || !config.registryPackage) continue;\n\n const registryPkg = registryByName.get(config.registryPackage);\n if (!registryPkg) continue;\n\n const installedVersion = config.installedVersion || \"0.0.0\";\n const latestVersion = registryPkg.version || \"0.0.0\";\n\n if (installedVersion !== latestVersion) {\n updates.push({\n workspaceId: ws.id,\n workspaceName: ws.name || ws.label || \"\",\n registryPackage: config.registryPackage,\n installedVersion,\n latestVersion,\n importedAt: config.importedAt || null,\n });\n }\n }\n\n return updates;\n}\n\n/**\n * Build a provider setup manifest for a dashboard's requirements.\n * Compares required providers against configured providers,\n * returning status (configured/needs-setup) for each.\n *\n * @param {Array} requiredProviders - Provider requirements from dashboard config\n * @param {Array} configuredProviders - User's configured providers (from providerController)\n * @returns {Object} Setup manifest with per-provider status\n */\nfunction buildProviderSetupManifest(\n requiredProviders = [],\n configuredProviders = [],\n) {\n const configuredByType = new Map();\n for (const p of configuredProviders) {\n const key = p.type || p.name || \"\";\n if (key) {\n configuredByType.set(key.toLowerCase(), p);\n }\n }\n\n const providers = requiredProviders.map((req) => {\n const typeKey = (req.type || \"\").toLowerCase();\n const configured = configuredByType.get(typeKey);\n\n return {\n type: req.type || \"\",\n providerClass: req.providerClass || \"\",\n required: req.required !== false,\n usedBy: req.usedBy || [],\n status: configured ? \"configured\" : \"needs-setup\",\n configuredProvider: configured || null,\n };\n });\n\n const configuredCount = providers.filter(\n (p) => p.status === \"configured\",\n ).length;\n const needsSetupCount = providers.filter(\n (p) => p.status === \"needs-setup\",\n ).length;\n\n return {\n allConfigured: needsSetupCount === 0,\n summary: {\n total: providers.length,\n configured: configuredCount,\n needsSetup: needsSetupCount,\n },\n providers,\n };\n}\n\n/**\n * Check API compatibility of a package against the app's capabilities.\n * Extracts providers with providerClass \"api\" and checks whether\n * each required API namespace is present in the app's capability set.\n *\n * @param {Array} providers - Provider requirements (from widget config or package manifest)\n * @param {string[]} appCapabilities - API namespaces the app exposes (e.g., Object.keys(window.mainApi))\n * @returns {Object} Compatibility report\n */\nfunction checkApiCompatibility(providers = [], appCapabilities = []) {\n const capSet = new Set(appCapabilities.map((c) => c.toLowerCase()));\n\n const apiProviders = providers.filter((p) => p.providerClass === \"api\");\n\n if (apiProviders.length === 0) {\n return { compatible: true, missingApis: [], requiredApis: [] };\n }\n\n const requiredApis = apiProviders\n .filter((p) => p.required !== false)\n .map((p) => p.type);\n const missingApis = requiredApis.filter(\n (api) => !capSet.has(api.toLowerCase()),\n );\n\n return {\n compatible: missingApis.length === 0,\n missingApis,\n requiredApis,\n };\n}\n\nmodule.exports = {\n collectComponentNames,\n extractEventWiring,\n buildWidgetDependencies,\n buildProviderRequirements,\n applyEventWiringToLayout,\n checkDashboardCompatibility,\n generateRegistryManifest,\n buildDashboardPreview,\n checkDashboardUpdates,\n buildProviderSetupManifest,\n checkApiCompatibility,\n};\n","/**\n * Widget Compiler\n *\n * Compiles raw widget source files (.js + .dash.js) into a single CJS bundle\n * using esbuild. The output bundle is consumable by the existing\n * widgetBundleLoader.js eval pipeline (new Function() + require shim).\n *\n * Runs in the Electron main process at widget install time.\n */\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\n\n/**\n * Find the widgets/ directory, handling nested ZIP extraction.\n *\n * ZIP extraction can create a nested structure like:\n * Weather/weather-widget/widgets/ instead of Weather/widgets/\n *\n * If widgets/ doesn't exist at root, check one level deeper for a\n * single subdirectory that contains widgets/.\n *\n * @param {string} widgetPath - Absolute path to the widget directory\n * @returns {string|null} Path to the widgets/ directory, or null\n */\nfunction findWidgetsDir(widgetPath) {\n const direct = path.join(widgetPath, \"widgets\");\n if (fs.existsSync(direct)) {\n return direct;\n }\n\n // Check configs/ directory (used by packageZip.js for distributed widgets)\n const configs = path.join(widgetPath, \"configs\");\n if (fs.existsSync(configs)) {\n return configs;\n }\n\n // Check one level deeper for nested ZIP extraction\n try {\n const entries = fs.readdirSync(widgetPath, { withFileTypes: true });\n const subdirs = entries.filter(\n (e) =>\n e.isDirectory() &&\n !e.name.startsWith(\".\") &&\n e.name !== \"dist\" &&\n e.name !== \"node_modules\",\n );\n\n for (const subdir of subdirs) {\n const nested = path.join(widgetPath, subdir.name, \"widgets\");\n if (fs.existsSync(nested)) {\n console.log(`[WidgetCompiler] Found nested widgets/ at ${nested}`);\n return nested;\n }\n }\n } catch (err) {\n // Non-fatal — fall through to null\n }\n\n return null;\n}\n\n/**\n * Compile widget source files into a CJS bundle at dist/index.cjs.js.\n *\n * For each {Name}.dash.js found in the widgets/ directory, a synthetic\n * entry point is generated that imports the component + config and\n * re-exports them as `{ ...config, component }` — matching what\n * extractWidgetConfigs() in widgetBundleLoader.js expects.\n *\n * @param {string} widgetPath - Absolute path to the widget directory\n * @returns {Promise<string|null>} Path to the compiled bundle, or null if nothing to compile\n */\nasync function compileWidget(widgetPath) {\n const widgetsDir = findWidgetsDir(widgetPath);\n\n if (!widgetsDir) {\n console.log(\n `[WidgetCompiler] No widgets/ directory in ${widgetPath}, skipping`,\n );\n return null;\n }\n\n // Discover .dash.js config files\n const files = fs.readdirSync(widgetsDir);\n const dashFiles = files.filter((f) => f.endsWith(\".dash.js\"));\n\n if (dashFiles.length === 0) {\n console.log(\n `[WidgetCompiler] No .dash.js files found in ${widgetsDir}, skipping`,\n );\n return null;\n }\n\n // Build a synthetic entry point that pairs each component with its config.\n // Compute relative path from the entry file (in widgetPath) to widgetsDir,\n // since widgetsDir may be nested (e.g., ./weather-widget/widgets/).\n const relWidgetsDir =\n \"./\" + path.relative(widgetPath, widgetsDir).split(path.sep).join(\"/\");\n const imports = [];\n const exportParts = [];\n\n for (const dashFile of dashFiles) {\n const componentName = dashFile.replace(\".dash.js\", \"\");\n const componentFile = `${componentName}.js`;\n const componentFilePath = path.join(widgetsDir, componentFile);\n const hasComponent = fs.existsSync(componentFilePath);\n\n // Import the config (always)\n imports.push(\n `import ${componentName}Config from \"${relWidgetsDir}/${dashFile}\";`,\n );\n\n if (hasComponent) {\n // Import the component and merge with config\n imports.push(\n `import ${componentName}Comp from \"${relWidgetsDir}/${componentFile}\";`,\n );\n exportParts.push(\n `export const ${componentName} = { ...${componentName}Config, component: ${componentName}Comp };`,\n );\n } else {\n // Config-only (no component source file)\n exportParts.push(\n `export const ${componentName} = ${componentName}Config;`,\n );\n }\n }\n\n const entryContent = [...imports, \"\", ...exportParts, \"\"].join(\"\\n\");\n\n // Write temporary entry file in the widget root\n const entryPath = path.join(widgetPath, \"__compile_entry.js\");\n const distDir = path.join(widgetPath, \"dist\");\n const outPath = path.join(distDir, \"index.cjs.js\");\n\n try {\n // Ensure dist/ directory exists\n if (!fs.existsSync(distDir)) {\n fs.mkdirSync(distDir, { recursive: true });\n }\n\n fs.writeFileSync(entryPath, entryContent, \"utf8\");\n\n console.log(\n `[WidgetCompiler] Compiling ${dashFiles.length} component(s) from ${widgetPath}`,\n );\n\n // Lazy-require esbuild so the module doesn't fail to load if\n // esbuild is not yet installed (e.g., during first npm install)\n const esbuild = require(\"esbuild\");\n\n await esbuild.build({\n entryPoints: [entryPath],\n bundle: true,\n format: \"cjs\",\n outfile: outPath,\n // These modules are provided by the host app via MODULE_MAP\n // in widgetBundleLoader.js — do NOT bundle them\n external: [\n \"react\",\n \"react-dom\",\n \"@trops/dash-react\",\n \"@trops/dash-core\",\n \"react/jsx-runtime\",\n \"prop-types\",\n ],\n // Treat .js files as JSX (widget sources use JSX in .js files)\n loader: { \".js\": \"jsx\" },\n logLevel: \"warning\",\n });\n\n console.log(`[WidgetCompiler] Compiled successfully → ${outPath}`);\n return outPath;\n } catch (error) {\n console.error(\n `[WidgetCompiler] Compilation failed for ${widgetPath}:`,\n error,\n );\n throw error;\n } finally {\n // Clean up temporary entry file\n try {\n if (fs.existsSync(entryPath)) {\n fs.unlinkSync(entryPath);\n }\n } catch (cleanupError) {\n // Non-fatal\n console.warn(\n `[WidgetCompiler] Could not remove temp entry file:`,\n cleanupError,\n );\n }\n }\n}\n\nmodule.exports = { compileWidget, findWidgetsDir };\n","/**\n * Dynamic Widget Loader\n *\n * Loads React components and configurations from downloaded/local widget paths\n * Works with widgets that follow the Dash widget structure:\n * - widgets/\n * - WidgetName.js (React component)\n * - WidgetName.dash.js (configuration)\n *\n * Integrates with ComponentManager for automatic registration\n */\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst vm = require(\"vm\");\nconst { findWidgetsDir } = require(\"./widgetCompiler\");\n\nclass DynamicWidgetLoader {\n constructor(componentManager = null) {\n this.loadedWidgets = new Map();\n this.moduleCache = new Map();\n this.componentManager = componentManager;\n }\n\n /**\n * Set ComponentManager instance for automatic widget registration\n * @param {Object} manager - ComponentManager instance from @trops/dash-react\n */\n setComponentManager(manager) {\n this.componentManager = manager;\n }\n\n /**\n * Load a widget from a local path\n * @param {string} widgetName - Name of the widget (e.g., \"MyFirstWidget\")\n * @param {string} widgetPath - Path to the widget directory\n * @param {string} componentName - Name of the component file (e.g., \"MyFirstWidgetWidget\")\n * @param {boolean} autoRegister - Automatically register with ComponentManager (if available)\n * @returns {Promise<Object>} { component, config, registered }\n */\n async loadWidget(widgetName, widgetPath, componentName, autoRegister = true) {\n try {\n const cacheKey = `${widgetName}:${componentName}`;\n\n if (this.loadedWidgets.has(cacheKey)) {\n console.log(`[DynamicWidgetLoader] Loading ${widgetName} from cache`);\n return this.loadedWidgets.get(cacheKey);\n }\n\n console.log(\n `[DynamicWidgetLoader] Loading widget: ${widgetName} from ${widgetPath}`,\n );\n\n const widgetsDir =\n findWidgetsDir(widgetPath) || path.join(widgetPath, \"widgets\");\n const componentPath = path.join(widgetsDir, `${componentName}.js`);\n const configPath = path.join(widgetsDir, `${componentName}.dash.js`);\n\n if (!fs.existsSync(componentPath)) {\n throw new Error(`Component file not found: ${componentPath}`);\n }\n if (!fs.existsSync(configPath)) {\n throw new Error(`Config file not found: ${configPath}`);\n }\n\n const config = await this.loadConfigFile(configPath);\n\n const component = {\n path: componentPath,\n name: componentName,\n };\n\n let registered = false;\n\n if (autoRegister && this.componentManager) {\n try {\n // Use scoped id as registration key if available,\n // otherwise fall back to componentName\n const registrationKey = config.id || componentName;\n this.componentManager.registerWidget(config, registrationKey);\n registered = true;\n console.log(\n `[DynamicWidgetLoader] ✓ Registered ${registrationKey} with ComponentManager`,\n );\n } catch (regError) {\n console.warn(\n `[DynamicWidgetLoader] Failed to register with ComponentManager:`,\n regError,\n );\n }\n }\n\n const result = { component, config, registered };\n this.loadedWidgets.set(cacheKey, result);\n\n return result;\n } catch (error) {\n console.error(\n `[DynamicWidgetLoader] Error loading widget ${widgetName}:`,\n error,\n );\n throw error;\n }\n }\n\n /**\n * Load and parse a .dash.js configuration file\n * @param {string} configPath - Path to the .dash.js file\n * @returns {Promise<Object>} Configuration object\n */\n async loadConfigFile(configPath) {\n try {\n const source = fs.readFileSync(configPath, \"utf8\");\n\n let exportMatch = source.match(/export\\s+default\\s+({[\\s\\S]*});?\\s*$/);\n\n // Handle variable export pattern: const x = {...}; export default x;\n if (!exportMatch) {\n const varExportMatch = source.match(\n /export\\s+default\\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\\s*;?\\s*$/,\n );\n if (varExportMatch) {\n const varName = varExportMatch[1];\n const varDeclMatch = source.match(\n new RegExp(\n `(?:const|let|var)\\\\s+${varName}\\\\s*=\\\\s*({[\\\\s\\\\S]*?});\\\\s*(?:export\\\\s+default)`,\n ),\n );\n if (varDeclMatch) {\n exportMatch = varDeclMatch;\n }\n }\n }\n\n if (!exportMatch) {\n throw new Error(\"Could not find default export in config file\");\n }\n\n // Sanitize component references so vm.runInContext doesn't fail\n // on unresolvable imports — replace component: SomeName with component: \"SomeName\"\n const exportedObjectStr = exportMatch[1].replace(\n /component\\s*:\\s*([A-Z][a-zA-Z0-9_$]*)/g,\n 'component: \"$1\"',\n );\n\n const context = vm.createContext({ module: { exports: {} } });\n vm.runInContext(`module.exports = ${exportedObjectStr}`, context);\n\n return context.module.exports;\n } catch (error) {\n console.error(`[DynamicWidgetLoader] Error loading config:`, error);\n throw error;\n }\n }\n\n /**\n * Discover available widgets in a directory\n * @param {string} widgetPath - Path to search for widgets\n * @returns {Array} List of available widget names\n */\n discoverWidgets(widgetPath) {\n try {\n const widgetsDir = findWidgetsDir(widgetPath);\n if (!widgetsDir) {\n return [];\n }\n\n const files = fs.readdirSync(widgetsDir);\n const widgets = new Set();\n\n files.forEach((file) => {\n if (file.endsWith(\".dash.js\")) {\n const componentName = file.replace(\".dash.js\", \"\");\n widgets.add(componentName);\n }\n });\n\n return Array.from(widgets);\n } catch (error) {\n console.error(`[DynamicWidgetLoader] Error discovering widgets:`, error);\n return [];\n }\n }\n\n /**\n * Clear cache\n */\n clearCache() {\n this.loadedWidgets.clear();\n this.moduleCache.clear();\n }\n}\n\nconst dynamicWidgetLoader = new DynamicWidgetLoader();\n\nmodule.exports = DynamicWidgetLoader;\nmodule.exports.dynamicWidgetLoader = dynamicWidgetLoader;\n","/**\n * Widget Registry System\n *\n * Manages widget discovery, download, and dynamic loading\n * Widgets are expected to have:\n * - package.json (or dash.json) with metadata\n * - widgets/ folder containing [WidgetName].js and [WidgetName].dash.js\n *\n * Files are stored in the Electron app's userData directory:\n * - macOS: ~/Library/Application Support/[appName]/\n * - Windows: %APPDATA%/[appName]/\n * - Linux: ~/.config/[appName]/\n */\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst os = require(\"os\");\nconst AdmZip = require(\"adm-zip\");\nconst { fileURLToPath } = require(\"url\");\nconst { app, ipcMain, BrowserWindow } = require(\"electron\");\nconst { dynamicWidgetLoader } = require(\"./dynamicWidgetLoader\");\nconst { compileWidget, findWidgetsDir } = require(\"./widgetCompiler\");\n\nlet WIDGETS_CACHE_DIR = null;\nlet REGISTRY_CONFIG_FILE = null;\n\n/**\n * Validate ZIP entries to prevent path traversal attacks.\n * Rejects entries containing '..' segments or absolute paths that would\n * write outside the target extraction directory.\n * @param {AdmZip} zip - AdmZip instance\n * @param {string} targetDir - Intended extraction directory\n * @throws {Error} If any entry would escape the target directory\n */\nfunction validateZipEntries(zip, targetDir) {\n const resolvedTarget = path.resolve(targetDir);\n for (const entry of zip.getEntries()) {\n const entryPath = entry.entryName;\n // Reject entries with '..' path segments\n if (\n entryPath.split(\"/\").includes(\"..\") ||\n entryPath.split(\"\\\\\").includes(\"..\")\n ) {\n throw new Error(\n `Malicious ZIP entry rejected (path traversal): ${entryPath}`,\n );\n }\n // Reject absolute paths\n if (path.isAbsolute(entryPath)) {\n throw new Error(\n `Malicious ZIP entry rejected (absolute path): ${entryPath}`,\n );\n }\n // Final check: resolved path must be within target directory\n const resolvedEntry = path.resolve(resolvedTarget, entryPath);\n if (\n !resolvedEntry.startsWith(resolvedTarget + path.sep) &&\n resolvedEntry !== resolvedTarget\n ) {\n throw new Error(\n `Malicious ZIP entry rejected (escapes target): ${entryPath}`,\n );\n }\n }\n}\n\n/**\n * Initialize registry with custom path or default userData path\n * @param {string} customPath - Optional custom path for storing widgets\n */\nfunction initializeRegistry(customPath = null) {\n if (customPath) {\n WIDGETS_CACHE_DIR = path.join(customPath, \"widgets\");\n } else {\n WIDGETS_CACHE_DIR = path.join(app.getPath(\"userData\"), \"widgets\");\n }\n REGISTRY_CONFIG_FILE = path.join(WIDGETS_CACHE_DIR, \"registry.json\");\n console.log(`[WidgetRegistry] Using storage path: ${WIDGETS_CACHE_DIR}`);\n}\n\nclass WidgetRegistry {\n constructor(componentManager = null, customPath = null) {\n if (!WIDGETS_CACHE_DIR) {\n initializeRegistry(customPath);\n }\n\n this.widgets = new Map();\n this.componentManager = componentManager;\n this.ensureCacheDir();\n this.loadRegistry();\n }\n\n /**\n * Static method to initialize registry with custom path\n * Call this early in your app startup (e.g., in main.js)\n * @param {string} customPath - Custom path for storing widgets/configs\n */\n static initialize(customPath = null) {\n initializeRegistry(customPath);\n }\n\n /**\n * Set ComponentManager instance for automatic widget registration\n * @param {Object} manager - ComponentManager instance from @trops/dash-react\n */\n setComponentManager(manager) {\n this.componentManager = manager;\n }\n\n /**\n * Ensure cache directory exists\n */\n ensureCacheDir() {\n if (!fs.existsSync(WIDGETS_CACHE_DIR)) {\n fs.mkdirSync(WIDGETS_CACHE_DIR, { recursive: true });\n }\n }\n\n /**\n * Load registry from disk\n */\n loadRegistry() {\n try {\n if (fs.existsSync(REGISTRY_CONFIG_FILE)) {\n const data = fs.readFileSync(REGISTRY_CONFIG_FILE, \"utf8\");\n const registryData = JSON.parse(data);\n this.widgets = new Map(registryData.widgets || []);\n console.log(\n `[WidgetRegistry] Loaded ${this.widgets.size} widgets from cache`,\n );\n }\n } catch (error) {\n console.error(\"[WidgetRegistry] Error loading registry:\", error);\n }\n }\n\n /**\n * Save registry to disk\n */\n saveRegistry() {\n try {\n const registryData = {\n lastUpdated: new Date().toISOString(),\n widgets: Array.from(this.widgets.entries()),\n };\n fs.writeFileSync(\n REGISTRY_CONFIG_FILE,\n JSON.stringify(registryData, null, 2),\n );\n } catch (error) {\n console.error(\"[WidgetRegistry] Error saving registry:\", error);\n }\n }\n\n /**\n * Resolve download URL from partial template or full URL\n * Supports placeholders: {version}, {name}\n *\n * Examples:\n * - Full URL: \"https://github.com/user/widget/releases/download/v1.0.0/widget.zip\"\n * - Template: \"https://github.com/user/weather-widget/releases/download/v{version}/weather-widget.zip\"\n * - Partial: \"https://github.com/user/weather-widget/releases/download/\" (auto-generates v{version}/{name}.zip)\n *\n * @param {string} urlTemplate - URL template or partial URL\n * @param {string} version - Widget version (e.g., \"1.0.0\")\n * @param {string} name - Widget name (e.g., \"weather-widget\")\n * @returns {string} Resolved download URL\n */\n resolveDownloadUrl(urlTemplate, version, name) {\n if (!urlTemplate) return null;\n\n if (urlTemplate.endsWith(\"/\")) {\n return `${urlTemplate}v${version}/${name}.zip`;\n }\n\n let url = urlTemplate;\n url = url.replace(\"{version}\", version);\n url = url.replace(\"{name}\", name);\n return url;\n }\n\n /**\n * Determine if the input points to a local path (file:// or filesystem path)\n * @param {string} input - URL or path\n * @returns {boolean}\n */\n isLocalSource(input) {\n if (!input) return false;\n if (input.startsWith(\"file://\")) return true;\n if (input.startsWith(\"http://\") || input.startsWith(\"https://\"))\n return false;\n const resolvedPath = this.resolveLocalPath(input);\n return fs.existsSync(resolvedPath);\n }\n\n /**\n * Normalize a local path (supports file:// and ~)\n * @param {string} input - Local path or file:// URL\n * @returns {string}\n */\n resolveLocalPath(input) {\n if (input.startsWith(\"file://\")) {\n return fileURLToPath(input);\n }\n if (input.startsWith(\"~\")) {\n return path.join(os.homedir(), input.slice(1));\n }\n return path.resolve(input);\n }\n\n /**\n * Install a widget from a local ZIP file or folder path\n * @param {string} widgetName - Name of the widget\n * @param {string} localPath - Path to ZIP file or widget folder\n * @param {boolean} autoRegister - Automatically register with ComponentManager\n * @param {string} dashConfigPath - Optional: path to dash.json metadata file\n * @returns {Promise<Object>} Widget configuration\n */\n async installFromLocalPath(\n widgetName,\n localPath,\n autoRegister = true,\n dashConfigPath = null,\n ) {\n try {\n const resolvedPath = this.resolveLocalPath(localPath);\n\n if (!fs.existsSync(resolvedPath)) {\n throw new Error(`Local path not found: ${resolvedPath}`);\n }\n\n const widgetPath = path.join(WIDGETS_CACHE_DIR, widgetName);\n\n if (fs.existsSync(widgetPath)) {\n fs.rmSync(widgetPath, { recursive: true });\n }\n\n const isDirectory = fs.statSync(resolvedPath).isDirectory();\n if (isDirectory) {\n fs.cpSync(resolvedPath, widgetPath, { recursive: true });\n } else if (resolvedPath.endsWith(\".zip\")) {\n const zip = new AdmZip(resolvedPath);\n validateZipEntries(zip, widgetPath);\n zip.extractAllTo(widgetPath, true);\n } else {\n throw new Error(`Unsupported local source type: ${resolvedPath}`);\n }\n\n let config = await this.loadWidgetConfig(widgetName, widgetPath);\n\n if (dashConfigPath) {\n const configPath = this.resolveLocalPath(dashConfigPath);\n if (fs.existsSync(configPath)) {\n const dashConfig = JSON.parse(fs.readFileSync(configPath, \"utf8\"));\n config = { ...config, ...dashConfig };\n }\n }\n\n this.registerWidget(widgetName, config, widgetPath, false);\n\n if (autoRegister) {\n await this.loadWidgetComponents(widgetName, widgetPath);\n }\n\n return config;\n } catch (error) {\n console.error(\n `[WidgetRegistry] Error installing local widget ${widgetName}:`,\n error,\n );\n throw error;\n }\n }\n\n /**\n * Check if a directory looks like a valid widget folder.\n * A directory is a widget if it has:\n * - package.json or dash.json at its root, OR\n * - A widgets/ subdirectory containing at least one .dash.js file\n * @param {string} dirPath - Path to the directory\n * @returns {boolean}\n */\n isWidgetFolder(dirPath) {\n if (fs.existsSync(path.join(dirPath, \"package.json\"))) return true;\n if (fs.existsSync(path.join(dirPath, \"dash.json\"))) return true;\n\n const widgetsDir = path.join(dirPath, \"widgets\");\n if (fs.existsSync(widgetsDir) && fs.statSync(widgetsDir).isDirectory()) {\n const files = fs.readdirSync(widgetsDir);\n if (files.some((f) => f.endsWith(\".dash.js\"))) return true;\n }\n\n return false;\n }\n\n /**\n * Register all widgets found in a local folder.\n *\n * Smart detection:\n * 1. If the selected folder itself is a widget, install it directly.\n * 2. Otherwise iterate subdirectories, skipping non-widget dirs.\n *\n * @param {string} folderPath - Path containing widget folders (or a single widget folder)\n * @param {boolean} autoRegister - Automatically register with ComponentManager\n * @returns {Promise<Array>} Registered widgets (with optional `mode` and `skipped` metadata)\n */\n async registerWidgetsFromFolder(folderPath, autoRegister = true) {\n const SKIP_DIRS = new Set([\"node_modules\", \"dist\", \"__MACOSX\", \".git\"]);\n\n try {\n const resolvedPath = this.resolveLocalPath(folderPath);\n if (!fs.existsSync(resolvedPath)) {\n throw new Error(`Folder not found: ${resolvedPath}`);\n }\n if (!fs.statSync(resolvedPath).isDirectory()) {\n throw new Error(`Path is not a directory: ${resolvedPath}`);\n }\n\n // 1. Check if the selected folder itself is a widget\n if (this.isWidgetFolder(resolvedPath)) {\n const widgetName = path.basename(resolvedPath);\n const config = await this.installFromLocalPath(\n widgetName,\n resolvedPath,\n autoRegister,\n );\n return [\n {\n name: widgetName,\n path: resolvedPath,\n ...config,\n mode: \"single\",\n },\n ];\n }\n\n // 2. Iterate subdirectories with filtering\n const entries = fs.readdirSync(resolvedPath, {\n withFileTypes: true,\n });\n const results = [];\n let skipped = 0;\n\n for (const entry of entries) {\n if (!entry.isDirectory()) continue;\n\n // Skip hidden dirs and known non-widget dirs\n if (entry.name.startsWith(\".\") || SKIP_DIRS.has(entry.name)) {\n skipped++;\n continue;\n }\n\n const widgetPath = path.join(resolvedPath, entry.name);\n\n if (!this.isWidgetFolder(widgetPath)) {\n skipped++;\n continue;\n }\n\n const config = await this.loadWidgetConfig(entry.name, widgetPath);\n this.registerWidget(entry.name, config, widgetPath, false);\n\n if (autoRegister) {\n await this.loadWidgetComponents(entry.name, widgetPath);\n }\n\n results.push({\n name: entry.name,\n path: widgetPath,\n ...config,\n });\n }\n\n // Attach skipped count as metadata on the array\n results.skipped = skipped;\n return results;\n } catch (error) {\n console.error(\n \"[WidgetRegistry] Error registering widgets from folder:\",\n error,\n );\n throw error;\n }\n }\n\n /**\n * Download widget from URL (ZIP file)\n * @param {string} widgetName - Name of the widget\n * @param {string} downloadUrl - URL to download ZIP file from (supports templates and partial URLs)\n * @param {string} dashConfigUrl - Optional: URL to dash.json metadata file\n * @param {boolean} autoRegister - Automatically register with ComponentManager\n * @returns {Promise<Object>} Widget configuration\n */\n async downloadWidget(\n widgetName,\n downloadUrl,\n dashConfigUrl = null,\n autoRegister = true,\n ) {\n try {\n if (this.isLocalSource(downloadUrl)) {\n return this.installFromLocalPath(\n widgetName,\n downloadUrl,\n autoRegister,\n dashConfigUrl,\n );\n }\n // Enforce HTTPS to prevent MITM attacks on widget downloads\n const parsedUrl = new URL(downloadUrl);\n if (parsedUrl.protocol !== \"https:\") {\n throw new Error(\n `Widget downloads must use HTTPS. Refusing to fetch: ${downloadUrl}`,\n );\n }\n\n console.log(\n `[WidgetRegistry] Downloading widget: ${widgetName} from ${downloadUrl}`,\n );\n\n const response = await fetch(downloadUrl);\n if (!response.ok)\n throw new Error(`Failed to fetch: ${response.statusText}`);\n\n const buffer = await response.arrayBuffer();\n const zip = new AdmZip(Buffer.from(buffer));\n\n const widgetPath = path.join(WIDGETS_CACHE_DIR, widgetName);\n\n if (fs.existsSync(widgetPath)) {\n fs.rmSync(widgetPath, { recursive: true });\n }\n\n validateZipEntries(zip, widgetPath);\n zip.extractAllTo(widgetPath, true);\n console.log(`[WidgetRegistry] Extracted widget to: ${widgetPath}`);\n\n let config = await this.loadWidgetConfig(widgetName, widgetPath);\n\n if (dashConfigUrl) {\n const dashConfig = await this.fetchJSON(dashConfigUrl);\n config = { ...config, ...dashConfig };\n }\n\n this.registerWidget(widgetName, config, widgetPath, false);\n\n if (autoRegister) {\n await this.loadWidgetComponents(widgetName, widgetPath);\n }\n\n return config;\n } catch (error) {\n console.error(\n `[WidgetRegistry] Error downloading widget ${widgetName}:`,\n error,\n );\n throw error;\n }\n }\n\n /**\n * Load widget configuration from local path\n * @param {string} widgetName - Name of the widget\n * @param {string} widgetPath - Path to widget directory\n * @returns {Promise<Object>} Widget configuration\n */\n async loadWidgetConfig(widgetName, widgetPath) {\n try {\n const dashJsonPath = path.join(widgetPath, \"dash.json\");\n if (fs.existsSync(dashJsonPath)) {\n const data = fs.readFileSync(dashJsonPath, \"utf8\");\n return JSON.parse(data);\n }\n\n const packageJsonPath = path.join(widgetPath, \"package.json\");\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = JSON.parse(\n fs.readFileSync(packageJsonPath, \"utf8\"),\n );\n return {\n name: packageJson.name || widgetName,\n version: packageJson.version,\n description: packageJson.description,\n author: packageJson.author,\n repository: packageJson.repository,\n };\n }\n\n return {\n name: widgetName,\n version: \"1.0.0\",\n };\n } catch (error) {\n console.error(\n `[WidgetRegistry] Error loading config for ${widgetName}:`,\n error,\n );\n return { name: widgetName };\n }\n }\n\n /**\n * Register a widget in the registry\n * @param {string} widgetName - Name of the widget\n * @param {Object} config - Widget configuration\n * @param {string} widgetPath - Path to widget directory\n * @param {boolean} autoRegister - Automatically register with ComponentManager\n */\n registerWidget(widgetName, config, widgetPath, autoRegister = true) {\n const widgetEntry = {\n name: widgetName,\n path: widgetPath,\n ...config,\n registeredAt: new Date().toISOString(),\n };\n\n this.widgets.set(widgetName, widgetEntry);\n this.saveRegistry();\n console.log(`[WidgetRegistry] Registered widget: ${widgetName}`);\n }\n\n /**\n * Load all components for a widget and register them with ComponentManager\n * @param {string} widgetName - Name of the widget\n * @param {string} widgetPath - Path to widget directory\n */\n async loadWidgetComponents(widgetName, widgetPath) {\n try {\n // Auto-compile widget source to CJS bundle if none exists\n if (!findBundlePath(widgetPath)) {\n try {\n await compileWidget(widgetPath);\n console.log(`[WidgetRegistry] Auto-compiled ${widgetName}`);\n } catch (compileError) {\n console.warn(\n `[WidgetRegistry] Could not compile ${widgetName}:`,\n compileError,\n );\n }\n }\n\n if (this.componentManager) {\n dynamicWidgetLoader.setComponentManager(this.componentManager);\n }\n\n const components = dynamicWidgetLoader.discoverWidgets(widgetPath);\n console.log(\n `[WidgetRegistry] Found ${components.length} components in ${widgetName}`,\n );\n\n const existingEntry = this.widgets.get(widgetName);\n let registryUpdated = false;\n\n // Store component names as displayName on the registry entry\n // so settings UI shows \"WeatherWidget\" instead of \"weather-widget\"\n if (components.length > 0 && existingEntry) {\n existingEntry.displayName = components.join(\", \");\n existingEntry.componentNames = components;\n registryUpdated = true;\n }\n\n for (const componentName of components) {\n try {\n const result = await dynamicWidgetLoader.loadWidget(\n widgetName,\n widgetPath,\n componentName,\n true,\n );\n console.log(`[WidgetRegistry] ✓ Loaded ${componentName}`);\n\n // Enrich registry entry with .dash.js config fields\n // (icon, providers, workspace, etc.) so the settings UI\n // has full display data without needing ComponentManager.\n if (result?.config && existingEntry) {\n const cfg = result.config;\n if (cfg.icon && !existingEntry.icon) existingEntry.icon = cfg.icon;\n if (cfg.providers?.length && !existingEntry.providers?.length)\n existingEntry.providers = cfg.providers;\n if (cfg.workspace && !existingEntry.workspace)\n existingEntry.workspace = cfg.workspace;\n if (cfg.events?.length && !existingEntry.events?.length)\n existingEntry.events = cfg.events;\n if (\n cfg.eventHandlers?.length &&\n !existingEntry.eventHandlers?.length\n )\n existingEntry.eventHandlers = cfg.eventHandlers;\n registryUpdated = true;\n }\n } catch (error) {\n console.error(\n `[WidgetRegistry] Error loading component ${componentName}:`,\n error,\n );\n }\n }\n\n if (registryUpdated && existingEntry) {\n this.widgets.set(widgetName, existingEntry);\n this.saveRegistry();\n }\n } catch (error) {\n console.error(\"[WidgetRegistry] Error loading widget components:\", error);\n }\n }\n\n /**\n * Get all registered widgets\n * @returns {Array} List of widget configurations\n */\n getWidgets() {\n return Array.from(this.widgets.values());\n }\n\n /**\n * Get widget by name\n * @param {string} widgetName - Name of the widget\n * @returns {Object|null} Widget configuration or null\n */\n getWidget(widgetName) {\n return this.widgets.get(widgetName) || null;\n }\n\n /**\n * Uninstall a widget\n * @param {string} widgetName - Name of the widget to remove\n */\n uninstallWidget(widgetName) {\n const widget = this.widgets.get(widgetName);\n if (!widget) {\n console.warn(`[WidgetRegistry] Widget not found: ${widgetName}`);\n return false;\n }\n\n try {\n if (fs.existsSync(widget.path)) {\n fs.rmSync(widget.path, { recursive: true });\n }\n this.widgets.delete(widgetName);\n this.saveRegistry();\n console.log(`[WidgetRegistry] Uninstalled widget: ${widgetName}`);\n return true;\n } catch (error) {\n console.error(\n `[WidgetRegistry] Error uninstalling ${widgetName}:`,\n error,\n );\n return false;\n }\n }\n\n /**\n * Helper: Fetch JSON from URL\n */\n async fetchJSON(url) {\n const response = await fetch(url);\n if (!response.ok)\n throw new Error(`Failed to fetch: ${response.statusText}`);\n return response.json();\n }\n\n /**\n * Get cache directory path\n */\n getCachePath() {\n return WIDGETS_CACHE_DIR;\n }\n\n /**\n * Get the storage directory (parent of widgets directory)\n * @returns {string} Full path to storage directory\n */\n getStoragePath() {\n return path.dirname(WIDGETS_CACHE_DIR);\n }\n}\n\n// Lazy initialization to avoid accessing app.getPath before app is ready\nlet widgetRegistry = null;\n\nfunction getWidgetRegistry() {\n if (!widgetRegistry) {\n widgetRegistry = new WidgetRegistry();\n }\n return widgetRegistry;\n}\n\n/**\n * Look for a CJS bundle file in a widget directory.\n * Checks multiple candidate paths in priority order because\n * packageZip.js may extract dist/ contents to the widget root.\n *\n * @param {string} widgetPath - Path to the widget directory\n * @returns {string|null} Absolute path to the bundle, or null if not found\n */\nfunction findBundlePath(widgetPath) {\n const candidates = [\n path.join(widgetPath, \"dist\", \"index.cjs.js\"),\n path.join(widgetPath, \"index.cjs.js\"),\n path.join(widgetPath, \"dist\", \"index.js\"),\n path.join(widgetPath, \"index.js\"),\n ];\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) {\n // Skip ESM files — the eval pipeline requires CJS\n if (candidate.endsWith(\".js\") && !candidate.endsWith(\".cjs.js\")) {\n try {\n const head = fs.readFileSync(candidate, \"utf8\").slice(0, 256);\n if (/^\\s*(import\\s|export\\s)/m.test(head)) {\n console.log(`[WidgetRegistry] Skipping ESM bundle: ${candidate}`);\n continue;\n }\n } catch (_) {\n // Non-fatal — allow fallthrough\n }\n }\n return candidate;\n }\n }\n\n return null;\n}\n\n/**\n * Setup IPC handlers for widget management (use in main.js)\n */\nfunction setupWidgetRegistryHandlers() {\n ipcMain.handle(\"widget:list\", () => getWidgetRegistry().getWidgets());\n\n ipcMain.handle(\"widget:get\", (event, widgetName) => {\n return getWidgetRegistry().getWidget(widgetName);\n });\n\n ipcMain.handle(\n \"widget:install\",\n async (event, widgetName, downloadUrl, dashConfigUrl) => {\n const config = await getWidgetRegistry().downloadWidget(\n widgetName,\n downloadUrl,\n dashConfigUrl,\n );\n\n BrowserWindow.getAllWindows().forEach((win) => {\n win.webContents.send(\"widget:installed\", {\n widgetName,\n config,\n });\n });\n\n return config;\n },\n );\n\n ipcMain.handle(\n \"widget:install-local\",\n async (event, widgetName, localPath, dashConfigPath) => {\n const config = await getWidgetRegistry().installFromLocalPath(\n widgetName,\n localPath,\n true,\n dashConfigPath,\n );\n\n BrowserWindow.getAllWindows().forEach((win) => {\n win.webContents.send(\"widget:installed\", {\n widgetName,\n config,\n });\n });\n\n return config;\n },\n );\n\n ipcMain.handle(\"widget:load-folder\", async (event, folderPath) => {\n const results = await getWidgetRegistry().registerWidgetsFromFolder(\n folderPath,\n true,\n );\n\n BrowserWindow.getAllWindows().forEach((win) => {\n win.webContents.send(\"widgets:loaded\", {\n count: results.length,\n widgets: results,\n });\n });\n\n return results;\n });\n\n ipcMain.handle(\"widget:uninstall\", (event, widgetName) => {\n return getWidgetRegistry().uninstallWidget(widgetName);\n });\n\n ipcMain.handle(\"widget:cache-path\", () => getWidgetRegistry().getCachePath());\n\n ipcMain.handle(\"widget:storage-path\", () =>\n getWidgetRegistry().getStoragePath(),\n );\n\n ipcMain.handle(\"widget:get-component-configs\", async () => {\n try {\n const registry = getWidgetRegistry();\n const installedWidgets = registry.getWidgets();\n const configs = [];\n\n for (const widget of installedWidgets) {\n const widgetPath = widget.path;\n if (!widgetPath || !fs.existsSync(widgetPath)) continue;\n\n const componentNames = dynamicWidgetLoader.discoverWidgets(widgetPath);\n const widgetsDir = findWidgetsDir(widgetPath);\n for (const componentName of componentNames) {\n try {\n const configPath = path.join(\n widgetsDir || path.join(widgetPath, \"widgets\"),\n `${componentName}.dash.js`,\n );\n const config = await dynamicWidgetLoader.loadConfigFile(configPath);\n configs.push({\n componentName,\n widgetPackage: widget.name,\n // Include scoped id if present in the config\n id: config.id || null,\n config,\n });\n } catch (err) {\n console.error(\n `[WidgetRegistry] Error loading config for ${componentName}:`,\n err,\n );\n }\n }\n }\n\n return configs;\n } catch (error) {\n console.error(\"[WidgetRegistry] Error getting component configs:\", error);\n return [];\n }\n });\n\n ipcMain.handle(\"widget:read-bundle\", async (event, widgetName) => {\n try {\n const registry = getWidgetRegistry();\n const widget = registry.getWidget(widgetName);\n if (!widget || !widget.path) {\n return {\n success: false,\n error: `Widget not found: ${widgetName}`,\n };\n }\n\n let bundlePath = findBundlePath(widget.path);\n\n // Auto-compile if no bundle exists (same as read-all-bundles)\n if (!bundlePath) {\n try {\n const compiled = await compileWidget(widget.path);\n if (compiled) {\n bundlePath = compiled;\n }\n } catch (compileError) {\n console.warn(\n `[WidgetRegistry] Could not compile ${widgetName}:`,\n compileError,\n );\n }\n }\n\n if (!bundlePath) {\n return {\n success: false,\n error: `No bundle found in: ${widget.path}`,\n };\n }\n\n const source = fs.readFileSync(bundlePath, \"utf8\");\n return { success: true, source, widgetName };\n } catch (error) {\n console.error(\n `[WidgetRegistry] Error reading bundle for ${widgetName}:`,\n error,\n );\n return { success: false, error: error.message };\n }\n });\n\n ipcMain.handle(\"widget:read-all-bundles\", async () => {\n try {\n const registry = getWidgetRegistry();\n const installedWidgets = registry.getWidgets();\n const results = [];\n\n for (const widget of installedWidgets) {\n const widgetPath = widget.path;\n if (!widgetPath || !fs.existsSync(widgetPath)) continue;\n\n let bundlePath = findBundlePath(widgetPath);\n\n // Auto-compile if no bundle exists\n if (!bundlePath) {\n try {\n const compiled = await compileWidget(widgetPath);\n if (compiled) {\n bundlePath = compiled;\n }\n } catch (compileError) {\n console.warn(\n `[WidgetRegistry] Could not compile ${widget.name}:`,\n compileError,\n );\n }\n }\n\n if (!bundlePath) {\n console.log(\n `[WidgetRegistry] No CJS bundle for ${widget.name}, skipping (will use config fallback)`,\n );\n continue;\n }\n\n try {\n const source = fs.readFileSync(bundlePath, \"utf8\");\n results.push({\n widgetName: widget.name,\n source,\n });\n } catch (readError) {\n console.error(\n `[WidgetRegistry] Error reading bundle for ${widget.name}:`,\n readError,\n );\n }\n }\n\n return results;\n } catch (error) {\n console.error(\"[WidgetRegistry] Error reading all bundles:\", error);\n return [];\n }\n });\n\n ipcMain.handle(\"widget:set-storage-path\", (event, customPath) => {\n try {\n WidgetRegistry.initialize(customPath);\n console.log(`[WidgetRegistry] Storage path changed to: ${customPath}`);\n return { success: true, path: customPath };\n } catch (error) {\n console.error(\"[WidgetRegistry] Error setting storage path:\", error);\n return { success: false, error: error.message };\n }\n });\n}\n\nmodule.exports = WidgetRegistry;\nmodule.exports.getWidgetRegistry = getWidgetRegistry;\n// For backward compatibility, provide widgetRegistry as a getter\nObject.defineProperty(module.exports, \"widgetRegistry\", {\n get: getWidgetRegistry,\n});\nmodule.exports.setupWidgetRegistryHandlers = setupWidgetRegistryHandlers;\nmodule.exports.validateZipEntries = validateZipEntries;\n","/**\n * registryAuthController.js\n *\n * Manages authentication with the Dash registry service.\n * Uses OAuth device code flow for desktop app authentication.\n *\n * Flow:\n * 1. App calls initiateDeviceFlow() — gets device code + verification URL\n * 2. User opens verification URL in browser, signs in, enters code\n * 3. App polls pollForToken() until authorized\n * 4. Token stored securely via electron-store (encrypted)\n */\nconst { app } = require(\"electron\");\nconst path = require(\"path\");\n\nconst REGISTRY_BASE_URL =\n process.env.DASH_REGISTRY_API_URL || \"https://registry.trops.dev\";\n\n// Lazy-load electron-store to avoid issues when not installed\nlet store = null;\nfunction getStore() {\n if (!store) {\n const Store = require(\"electron-store\");\n store = new Store({\n name: \"dash-registry-auth\",\n encryptionKey: \"dash-registry-v1\",\n });\n }\n return store;\n}\n\n/**\n * Initiate the OAuth device code flow.\n * Returns the device code, user code, and verification URL.\n *\n * @returns {Promise<Object>} { deviceCode, userCode, verificationUrl, verificationUrlComplete, expiresIn, interval }\n */\nasync function initiateDeviceFlow() {\n const response = await fetch(`${REGISTRY_BASE_URL}/api/auth/device`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n });\n\n if (!response.ok) {\n throw new Error(`Device flow initiation failed: ${response.status}`);\n }\n\n const data = await response.json();\n\n return {\n deviceCode: data.device_code,\n userCode: data.user_code,\n verificationUrl: data.verification_uri,\n verificationUrlComplete: data.verification_uri_complete,\n expiresIn: data.expires_in,\n interval: data.interval,\n };\n}\n\n/**\n * Poll the registry for token after user completes browser auth.\n *\n * @param {string} deviceCode - The device code from initiateDeviceFlow()\n * @returns {Promise<Object>} { status: 'pending' | 'authorized' | 'expired', token?, userId? }\n */\nasync function pollForToken(deviceCode) {\n const response = await fetch(\n `${REGISTRY_BASE_URL}/api/auth/device?device_code=${encodeURIComponent(deviceCode)}`,\n );\n\n if (response.status === 428) {\n return { status: \"pending\" };\n }\n\n if (response.status === 400) {\n const data = await response.json();\n if (data.error === \"expired_token\") {\n return { status: \"expired\" };\n }\n return { status: \"pending\" };\n }\n\n if (response.ok) {\n const data = await response.json();\n\n // Store the token securely\n const s = getStore();\n s.set(\"accessToken\", data.access_token);\n s.set(\"userId\", data.user_id);\n s.set(\"tokenType\", data.token_type);\n s.set(\"authenticatedAt\", new Date().toISOString());\n\n return {\n status: \"authorized\",\n token: data.access_token,\n userId: data.user_id,\n };\n }\n\n throw new Error(`Unexpected response: ${response.status}`);\n}\n\n/**\n * Get the stored auth token.\n *\n * @returns {Object|null} { token, userId, authenticatedAt } or null if not authenticated\n */\nfunction getStoredToken() {\n try {\n const s = getStore();\n const token = s.get(\"accessToken\");\n if (!token) return null;\n\n return {\n token,\n userId: s.get(\"userId\"),\n authenticatedAt: s.get(\"authenticatedAt\"),\n };\n } catch {\n return null;\n }\n}\n\n/**\n * Check if the user is authenticated with the registry.\n *\n * @returns {Object} { authenticated: boolean, userId?: string }\n */\nfunction getAuthStatus() {\n const stored = getStoredToken();\n if (!stored) {\n return { authenticated: false };\n }\n\n return {\n authenticated: true,\n userId: stored.userId,\n authenticatedAt: stored.authenticatedAt,\n };\n}\n\n/**\n * Get the user's registry profile.\n *\n * @returns {Promise<Object|null>} User profile or null\n */\nasync function getRegistryProfile() {\n const stored = getStoredToken();\n if (!stored) return null;\n\n try {\n const response = await fetch(`${REGISTRY_BASE_URL}/api/auth/me`, {\n headers: {\n Authorization: `Bearer ${stored.token}`,\n },\n });\n\n if (response.status === 401) {\n // Token expired or invalid — clear stored credentials\n clearToken();\n return null;\n }\n if (!response.ok) return null;\n\n const data = await response.json();\n return data.user || null;\n } catch {\n return null;\n }\n}\n\n/**\n * Clear stored auth token (logout).\n */\nfunction clearToken() {\n try {\n const s = getStore();\n s.clear();\n console.log(\"[RegistryAuthController] Token cleared\");\n } catch (err) {\n console.error(\"[RegistryAuthController] Error clearing token:\", err);\n }\n}\n\n/**\n * Update the authenticated user's registry profile.\n *\n * @param {Object} updates - Fields to update (e.g. { displayName })\n * @returns {Promise<Object|null>} Updated user or null on 401\n */\nasync function updateRegistryProfile(updates) {\n const stored = getStoredToken();\n if (!stored) return null;\n\n try {\n const response = await fetch(`${REGISTRY_BASE_URL}/api/auth/me`, {\n method: \"PATCH\",\n headers: {\n Authorization: `Bearer ${stored.token}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(updates),\n });\n\n if (response.status === 401) {\n clearToken();\n return null;\n }\n if (!response.ok) return null;\n\n const data = await response.json();\n return data.user || null;\n } catch {\n return null;\n }\n}\n\n/**\n * Get the authenticated user's published packages.\n *\n * @returns {Promise<Object|null>} { packages: [...] } or null\n */\nasync function getRegistryPackages() {\n const stored = getStoredToken();\n if (!stored) return null;\n\n try {\n const response = await fetch(`${REGISTRY_BASE_URL}/api/auth/me/packages`, {\n headers: {\n Authorization: `Bearer ${stored.token}`,\n },\n });\n\n if (response.status === 401) {\n clearToken();\n return null;\n }\n if (!response.ok) return null;\n\n return await response.json();\n } catch {\n return null;\n }\n}\n\n/**\n * Update a published package's metadata.\n *\n * @param {string} scope - Package scope (e.g. \"@trops\")\n * @param {string} name - Package name\n * @param {Object} updates - Fields to update (displayName, description, category, tags, visibility)\n * @returns {Promise<Object|null>} Updated package or null\n */\nasync function updateRegistryPackage(scope, name, updates) {\n const stored = getStoredToken();\n if (!stored) return null;\n\n try {\n const response = await fetch(\n `${REGISTRY_BASE_URL}/api/packages/${encodeURIComponent(scope)}/${encodeURIComponent(name)}`,\n {\n method: \"PATCH\",\n headers: {\n Authorization: `Bearer ${stored.token}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(updates),\n },\n );\n\n if (response.status === 401) {\n clearToken();\n return null;\n }\n if (!response.ok) return null;\n\n return await response.json();\n } catch {\n return null;\n }\n}\n\n/**\n * Delete a published package from the registry.\n *\n * @param {string} scope - Package scope (e.g. \"@trops\")\n * @param {string} name - Package name\n * @returns {Promise<Object|null>} Response or null\n */\nasync function deleteRegistryPackage(scope, name) {\n const stored = getStoredToken();\n if (!stored) return null;\n\n try {\n const response = await fetch(\n `${REGISTRY_BASE_URL}/api/packages/${encodeURIComponent(scope)}/${encodeURIComponent(name)}`,\n {\n method: \"DELETE\",\n headers: {\n Authorization: `Bearer ${stored.token}`,\n },\n },\n );\n\n if (response.status === 401) {\n clearToken();\n return null;\n }\n if (!response.ok) return null;\n\n return await response.json();\n } catch {\n return null;\n }\n}\n\nmodule.exports = {\n initiateDeviceFlow,\n pollForToken,\n getStoredToken,\n getAuthStatus,\n getRegistryProfile,\n updateRegistryProfile,\n getRegistryPackages,\n updateRegistryPackage,\n deleteRegistryPackage,\n clearToken,\n};\n","/**\n * registryApiController.js\n *\n * Client for the Dash registry API.\n * Handles publishing packages and generating registry URLs.\n */\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst { getStoredToken } = require(\"./registryAuthController\");\n\nconst REGISTRY_BASE_URL =\n process.env.DASH_REGISTRY_API_URL || \"https://registry.trops.dev\";\n\n/**\n * Publish a package to the registry.\n *\n * @param {string} zipPath - Path to the ZIP file\n * @param {Object} manifest - Package manifest JSON\n * @returns {Promise<Object>} { success, registryUrl, packageId, version, error? }\n */\nasync function publishToRegistry(zipPath, manifest) {\n const auth = getStoredToken();\n if (!auth) {\n return {\n success: false,\n error: \"Not authenticated with registry\",\n authRequired: true,\n };\n }\n\n try {\n // Read the ZIP file\n const zipBuffer = fs.readFileSync(zipPath);\n\n // Create FormData with the ZIP and manifest\n const formData = new FormData();\n formData.append(\n \"file\",\n new Blob([zipBuffer], { type: \"application/zip\" }),\n path.basename(zipPath),\n );\n formData.append(\"manifest\", JSON.stringify(manifest));\n\n // POST to registry\n const response = await fetch(`${REGISTRY_BASE_URL}/api/publish`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${auth.token}`,\n },\n body: formData,\n });\n\n const data = await response.json();\n\n if (!response.ok) {\n return {\n success: false,\n error: data.error || `Publish failed: ${response.status}`,\n details: data.details,\n };\n }\n\n return {\n success: true,\n registryUrl: data.registryUrl,\n packageId: data.packageId,\n version: data.version,\n downloadUrl: data.downloadUrl,\n warnings: data.warnings,\n };\n } catch (err) {\n console.error(\"[RegistryApiController] Publish error:\", err);\n return {\n success: false,\n error: err.message || \"Failed to publish to registry\",\n };\n }\n}\n\n/**\n * Get the registry URL for a published package.\n *\n * @param {string} scope - Package scope (username)\n * @param {string} name - Package name\n * @returns {string} Full registry URL\n */\nfunction getRegistryUrl(scope, name) {\n return `${REGISTRY_BASE_URL}/package/${scope}/${name}`;\n}\n\nmodule.exports = {\n publishToRegistry,\n getRegistryUrl,\n REGISTRY_BASE_URL,\n};\n","/**\n * themeRegistryController.js\n *\n * Handles publishing themes to and installing themes from the Dash registry.\n * Mirrors dashboardConfigController patterns for ZIP creation, manifest generation,\n * and registry interaction.\n */\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst { app, dialog } = require(\"electron\");\nconst AdmZip = require(\"adm-zip\");\n\nconst themeController = require(\"./themeController\");\nconst registryController = require(\"./registryController\");\nconst registryApiController = require(\"./registryApiController\");\nconst {\n getAuthStatus,\n getRegistryProfile,\n} = require(\"./registryAuthController\");\n\nconst appName = \"Dashboard\";\n\n/**\n * Sanitize a name for use as a filename (lowercase, hyphens only).\n */\nfunction sanitizeName(name) {\n return (name || \"theme\")\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-|-$/g, \"\");\n}\n\n/**\n * Generate a registry manifest for a theme package.\n *\n * @param {Object} themeData - The raw theme object\n * @param {string} themeKey - The theme key/name\n * @param {Object} options - Publish options { authorName, description, tags, scope }\n * @returns {Object} Registry manifest\n */\nfunction generateThemeRegistryManifest(themeData, themeKey, options = {}) {\n const humanName = themeData.name || themeKey;\n const sanitizedName = sanitizeName(humanName);\n const colors = extractColors(themeData);\n\n return {\n scope: options.scope || \"\",\n name: sanitizedName,\n displayName: humanName,\n author: options.authorName || \"\",\n description: options.description || \"\",\n version: \"1.0.0\",\n type: \"theme\",\n category: \"general\",\n tags: options.tags || [],\n icon: \"palette\",\n colors,\n appOrigin: options.appOrigin || \"\",\n publishedAt: new Date().toISOString(),\n };\n}\n\n// Tailwind color family name → representative hex (500 shade)\nconst TAILWIND_COLORS = {\n slate: \"#64748b\",\n gray: \"#6b7280\",\n zinc: \"#71717a\",\n neutral: \"#737373\",\n stone: \"#78716c\",\n red: \"#ef4444\",\n orange: \"#f97316\",\n amber: \"#f59e0b\",\n yellow: \"#eab308\",\n lime: \"#84cc16\",\n green: \"#22c55e\",\n emerald: \"#10b981\",\n teal: \"#14b8a6\",\n cyan: \"#06b6d4\",\n sky: \"#0ea5e9\",\n blue: \"#3b82f6\",\n indigo: \"#6366f1\",\n violet: \"#8b5cf6\",\n purple: \"#a855f7\",\n fuchsia: \"#d946ef\",\n pink: \"#ec4899\",\n rose: \"#f43f5e\",\n};\n\n/**\n * Convert a color value to a CSS-usable color.\n * If it's a Tailwind family name, map to its hex 500 shade.\n * If it already looks like a hex/rgb/hsl value, return as-is.\n */\nfunction toDisplayColor(value) {\n if (!value) return \"\";\n const lower = value.toLowerCase().trim();\n if (TAILWIND_COLORS[lower]) return TAILWIND_COLORS[lower];\n return value;\n}\n\n/**\n * Extract primary/secondary/tertiary/neutral colors from a theme object.\n * Theme objects store colors in various structures; this normalizes them.\n * Converts Tailwind color family names to hex values for display.\n */\nfunction extractColors(themeData) {\n const colors = {\n primary: \"\",\n secondary: \"\",\n tertiary: \"\",\n neutral: \"\",\n };\n\n if (!themeData) return colors;\n\n // Direct color fields\n if (themeData.primary) colors.primary = themeData.primary;\n if (themeData.secondary) colors.secondary = themeData.secondary;\n if (themeData.tertiary) colors.tertiary = themeData.tertiary;\n if (themeData.neutral) colors.neutral = themeData.neutral;\n\n // Nested under \"colors\" key\n if (themeData.colors) {\n if (themeData.colors.primary) colors.primary = themeData.colors.primary;\n if (themeData.colors.secondary)\n colors.secondary = themeData.colors.secondary;\n if (themeData.colors.tertiary) colors.tertiary = themeData.colors.tertiary;\n if (themeData.colors.neutral) colors.neutral = themeData.colors.neutral;\n }\n\n // Convert Tailwind names to hex\n colors.primary = toDisplayColor(colors.primary);\n colors.secondary = toDisplayColor(colors.secondary);\n colors.tertiary = toDisplayColor(colors.tertiary);\n colors.neutral = toDisplayColor(colors.neutral);\n\n return colors;\n}\n\n/**\n * Prepare a theme for publishing to the registry.\n *\n * Reads the theme from themes.json, generates a manifest, creates a ZIP,\n * and publishes via the registry API.\n *\n * @param {BrowserWindow} win - The sender window\n * @param {string} appId - Application identifier\n * @param {string} themeKey - Key of the theme to publish\n * @param {Object} options - { authorName, description, tags }\n * @returns {Object} Result with success, manifest, registryResult\n */\nasync function prepareThemeForPublish(win, appId, themeKey, options = {}) {\n try {\n // Read the theme data\n const themesResult = themeController.listThemesForApplication(win, appId);\n if (themesResult.error) {\n return {\n success: false,\n error: \"Failed to read themes: \" + themesResult.message,\n };\n }\n\n const themeData = themesResult.themes[themeKey];\n if (!themeData) {\n return { success: false, error: `Theme \"${themeKey}\" not found` };\n }\n\n // Get auth status and profile for scope\n const auth = getAuthStatus();\n if (!auth.authenticated) {\n return {\n success: false,\n error: \"Not authenticated with registry\",\n authRequired: true,\n };\n }\n const profile = await getRegistryProfile();\n const scope = profile?.username || options.scope || \"\";\n if (!scope) {\n return {\n success: false,\n error: \"Could not determine registry username\",\n authRequired: true,\n };\n }\n\n // Generate manifest\n const manifest = generateThemeRegistryManifest(themeData, themeKey, {\n ...options,\n scope,\n appOrigin: appId,\n });\n\n // Validate colors\n if (\n !manifest.colors.primary ||\n !manifest.colors.secondary ||\n !manifest.colors.tertiary\n ) {\n return {\n success: false,\n error:\n \"Theme must have primary, secondary, and tertiary colors defined\",\n };\n }\n\n // Show save dialog\n const sanitizedName = sanitizeName(themeKey);\n const defaultFilename = `theme-${sanitizedName}-v${manifest.version}.zip`;\n\n const saveResult = await dialog.showSaveDialog(win, {\n title: \"Save Theme Package\",\n defaultPath: defaultFilename,\n filters: [{ name: \"ZIP Files\", extensions: [\"zip\"] }],\n });\n\n if (saveResult.canceled || !saveResult.filePath) {\n return { success: false, error: \"Save canceled\" };\n }\n\n const filePath = saveResult.filePath;\n\n // Create ZIP with manifest.json + {name}.theme.json\n const zip = new AdmZip();\n zip.addFile(\n \"manifest.json\",\n Buffer.from(JSON.stringify(manifest, null, 2), \"utf-8\"),\n );\n zip.addFile(\n `${sanitizedName}.theme.json`,\n Buffer.from(JSON.stringify(themeData, null, 2), \"utf-8\"),\n );\n zip.writeZip(filePath);\n\n console.log(\"[ThemeRegistryController] ZIP created at:\", filePath);\n\n // Attempt to publish to registry\n let registryResult = null;\n if (auth.authenticated) {\n registryResult = await registryApiController.publishToRegistry(\n filePath,\n manifest,\n );\n console.log(\n \"[ThemeRegistryController] Registry publish result:\",\n registryResult,\n );\n }\n\n return {\n success: true,\n manifest,\n filePath,\n registryResult,\n };\n } catch (err) {\n console.error(\n \"[ThemeRegistryController] Error preparing theme for publish:\",\n err,\n );\n return { success: false, error: err.message };\n }\n}\n\n/**\n * Install a theme from the registry.\n *\n * Looks up the theme package, downloads the ZIP, extracts the .theme.json,\n * and saves it via themeController.\n *\n * @param {BrowserWindow} win - The sender window\n * @param {string} appId - Application identifier\n * @param {string} packageName - Registry package name (e.g., \"username/ocean-depth\")\n * @returns {Object} Result with success, themeKey, theme\n */\nasync function installThemeFromRegistry(win, appId, packageName) {\n try {\n // Look up the package\n const pkg = await registryController.getPackage(packageName);\n if (!pkg) {\n return {\n success: false,\n error: `Theme package \"${packageName}\" not found in registry`,\n };\n }\n\n // Resolve download URL\n let downloadUrl = pkg.downloadUrl;\n if (!downloadUrl) {\n return { success: false, error: \"Package has no download URL\" };\n }\n\n // Resolve template variables\n downloadUrl = downloadUrl\n .replace(\"{version}\", pkg.version || \"1.0.0\")\n .replace(\"{name}\", pkg.name || \"\");\n\n // Enforce HTTPS\n if (!downloadUrl.startsWith(\"https://\")) {\n return { success: false, error: \"Download URL must use HTTPS\" };\n }\n\n console.log(\n \"[ThemeRegistryController] Downloading theme from:\",\n downloadUrl,\n );\n\n // Download the ZIP\n const response = await fetch(downloadUrl);\n if (!response.ok) {\n return {\n success: false,\n error: `Failed to download theme: ${response.status} ${response.statusText}`,\n };\n }\n\n const arrayBuffer = await response.arrayBuffer();\n const zipBuffer = Buffer.from(arrayBuffer);\n\n // Extract .theme.json from ZIP\n const zip = new AdmZip(zipBuffer);\n const entries = zip.getEntries();\n\n const themeEntry = entries.find((entry) =>\n entry.entryName.endsWith(\".theme.json\"),\n );\n\n if (!themeEntry) {\n return {\n success: false,\n error: \"ZIP does not contain a .theme.json file\",\n };\n }\n\n // Validate entry path (security: prevent path traversal)\n if (\n themeEntry.entryName.includes(\"..\") ||\n path.isAbsolute(themeEntry.entryName)\n ) {\n return { success: false, error: \"Invalid file path in ZIP\" };\n }\n\n // Parse theme data\n const themeJson = themeEntry.getData().toString(\"utf-8\");\n let themeData;\n try {\n themeData = JSON.parse(themeJson);\n } catch (parseErr) {\n return {\n success: false,\n error: \"Invalid JSON in theme file: \" + parseErr.message,\n };\n }\n\n // Add registry metadata\n themeData._registryMeta = {\n source: \"registry\",\n packageName,\n installedAt: new Date().toISOString(),\n };\n\n // Determine theme key from package display name or name\n const themeKey = pkg.displayName || pkg.name;\n\n // Save via themeController\n const saveResult = themeController.saveThemeForApplication(\n win,\n appId,\n themeKey,\n themeData,\n );\n\n if (saveResult.error) {\n return {\n success: false,\n error: \"Failed to save theme: \" + saveResult.message,\n };\n }\n\n console.log(\"[ThemeRegistryController] Theme installed:\", themeKey);\n\n return {\n success: true,\n themeKey,\n theme: themeData,\n themes: saveResult.themes,\n };\n } catch (err) {\n console.error(\"[ThemeRegistryController] Error installing theme:\", err);\n return { success: false, error: err.message };\n }\n}\n\n/**\n * Get a preview of theme data for the publish modal.\n *\n * @param {string} appId - Application identifier\n * @param {string} themeKey - Theme key\n * @returns {Object} Preview data with theme name, colors, etc.\n */\nfunction getThemePublishPreview(appId, themeKey) {\n try {\n const themesResult = themeController.listThemesForApplication(null, appId);\n if (themesResult.error) {\n return {\n success: false,\n error: \"Failed to read themes: \" + themesResult.message,\n };\n }\n\n const themeData = themesResult.themes[themeKey];\n if (!themeData) {\n return { success: false, error: `Theme \"${themeKey}\" not found` };\n }\n\n const colors = extractColors(themeData);\n\n return {\n success: true,\n themeName: themeKey,\n colors,\n hasRegistryMeta: !!themeData._registryMeta,\n };\n } catch (err) {\n console.error(\"[ThemeRegistryController] Error getting preview:\", err);\n return { success: false, error: err.message };\n }\n}\n\nmodule.exports = {\n prepareThemeForPublish,\n installThemeFromRegistry,\n getThemePublishPreview,\n generateThemeRegistryManifest,\n extractColors,\n};\n","/**\n * dashboardConfigController.js\n *\n * Handles export and import of dashboard configuration files.\n * Runs in the Electron main process.\n *\n * Export: serializes a workspace into a .dashboard.json config,\n * resolving widget dependencies, extracting event wiring from\n * layout listeners, and aggregating provider requirements.\n *\n * Import: validates and processes a .dashboard.json config,\n * auto-installs missing widgets, creates workspace, and\n * applies event wiring. (Import is implemented in DASH-13.)\n */\n\nconst { app, dialog } = require(\"electron\");\nconst path = require(\"path\");\nconst AdmZip = require(\"adm-zip\");\nconst { getFileContents } = require(\"../utils/file\");\nconst {\n validateDashboardConfig,\n applyDefaults,\n CURRENT_SCHEMA_VERSION,\n} = require(\"../schema/dashboardConfigValidator\");\nconst {\n collectComponentNames,\n extractEventWiring,\n buildWidgetDependencies,\n buildProviderRequirements,\n applyEventWiringToLayout,\n} = require(\"../schema/dashboardConfigUtils\");\nconst { searchRegistry, getPackage } = require(\"./registryController\");\nconst themeController = require(\"./themeController\");\n\nconst configFilename = \"workspaces.json\";\nconst appName = \"Dashboard\";\n\n/**\n * Export a workspace as a .dashboard.json config inside a ZIP file.\n *\n * @param {BrowserWindow} win - The main window (for dialog)\n * @param {string} appId - Application identifier\n * @param {number|string} workspaceId - ID of the workspace to export\n * @param {Object} options - Export options\n * @param {string} options.authorName - Dashboard author name\n * @param {string} options.authorId - Dashboard author ID\n * @param {Object} widgetRegistry - WidgetRegistry instance (optional)\n * @returns {Promise<Object>} Result with success flag and file path\n */\nasync function exportDashboardConfig(\n win,\n appId,\n workspaceId,\n options = {},\n widgetRegistry = null,\n) {\n try {\n // 1. Read workspace from workspaces.json\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const workspacesArray = getFileContents(filename);\n const workspace = workspacesArray.find(\n (w) => w.id === workspaceId || w.id === Number(workspaceId),\n );\n\n if (!workspace) {\n return {\n success: false,\n error: `Workspace not found: ${workspaceId}`,\n };\n }\n\n const layout = workspace.layout || [];\n\n // 2. Collect components, extract wiring, resolve deps\n const componentNames = collectComponentNames(layout);\n const eventWiring = extractEventWiring(layout);\n const widgets = buildWidgetDependencies(componentNames, widgetRegistry);\n const providers = buildProviderRequirements(componentNames, widgetRegistry);\n\n // 3. Build the dashboard config\n const dashboardConfig = applyDefaults({\n schemaVersion: CURRENT_SCHEMA_VERSION,\n name: workspace.name || workspace.label || \"Exported Dashboard\",\n description: options.description || \"\",\n ...(options.authorName\n ? { author: { name: options.authorName, id: options.authorId || \"\" } }\n : {}),\n shareable: true,\n tags: options.tags || [],\n icon: options.icon || \"grip\",\n workspace: {\n id: workspace.id,\n name: workspace.name,\n type: workspace.type || \"workspace\",\n label: workspace.label || workspace.name,\n version: workspace.version || 1,\n layout,\n menuId: workspace.menuId || 1,\n },\n widgets,\n providers,\n eventWiring,\n });\n\n // 4. Bundle theme if workspace has a themeKey\n if (workspace.themeKey) {\n try {\n const themeResult = themeController.listThemesForApplication(\n win,\n appId,\n );\n const themeData = themeResult.themes?.[workspace.themeKey];\n if (themeData) {\n dashboardConfig.theme = {\n key: workspace.themeKey,\n data: themeData,\n };\n if (themeData._registryMeta?.packageName) {\n dashboardConfig.theme.registryPackage =\n themeData._registryMeta.packageName;\n }\n }\n } catch (themeErr) {\n console.warn(\n \"[DashboardConfigController] Could not bundle theme:\",\n themeErr.message,\n );\n }\n }\n\n // 5. Validate the generated config\n const validation = validateDashboardConfig(dashboardConfig);\n if (!validation.valid) {\n return {\n success: false,\n error: `Generated config is invalid: ${validation.errors.join(\", \")}`,\n };\n }\n\n // 6. Show save dialog\n const sanitizedName = (workspace.name || \"dashboard\")\n .replace(/[^a-zA-Z0-9-_ ]/g, \"\")\n .replace(/\\s+/g, \"-\")\n .toLowerCase();\n\n const { canceled, filePath } = await dialog.showSaveDialog(win, {\n title: \"Export Dashboard as ZIP\",\n defaultPath: path.join(\n app.getPath(\"desktop\"),\n `dashboard-${sanitizedName}.zip`,\n ),\n filters: [{ name: \"ZIP Archive\", extensions: [\"zip\"] }],\n });\n\n if (canceled || !filePath) {\n return { success: false, canceled: true };\n }\n\n // 7. Create ZIP with the config\n const zip = new AdmZip();\n const configJson = JSON.stringify(dashboardConfig, null, 2);\n zip.addFile(\n `${sanitizedName}.dashboard.json`,\n Buffer.from(configJson, \"utf-8\"),\n );\n\n zip.writeZip(filePath);\n\n console.log(\n `[DashboardConfigController] Exported dashboard to: ${filePath}`,\n );\n\n return {\n success: true,\n filePath,\n config: dashboardConfig,\n };\n } catch (error) {\n console.error(\n \"[DashboardConfigController] Error exporting dashboard:\",\n error,\n );\n return {\n success: false,\n error: error.message,\n };\n }\n}\n\n/**\n * Select and preview a dashboard ZIP file without importing it.\n * Opens the file picker, extracts and validates the .dashboard.json,\n * and returns a preview of the config + the file path for later import.\n *\n * @param {BrowserWindow} win - The main window (for dialog)\n * @returns {Promise<Object>} Result with success, filePath, and dashboardConfig preview\n */\nasync function selectDashboardFile(win) {\n try {\n const { canceled, filePaths } = await dialog.showOpenDialog(win, {\n title: \"Import Dashboard Configuration\",\n filters: [{ name: \"ZIP Archive\", extensions: [\"zip\"] }],\n properties: [\"openFile\"],\n });\n\n if (canceled || !filePaths || !filePaths.length) {\n return { success: false, canceled: true };\n }\n\n const zipPath = filePaths[0];\n\n // Extract and validate\n const zip = new AdmZip(zipPath);\n const tempDir = path.join(app.getPath(\"temp\"), \"dash-import\");\n const { validateZipEntries } = require(\"../widgetRegistry\");\n validateZipEntries(zip, tempDir);\n\n const entries = zip.getEntries();\n const configEntry = entries.find((e) =>\n e.entryName.endsWith(\".dashboard.json\"),\n );\n\n if (!configEntry) {\n return {\n success: false,\n error: \"No .dashboard.json file found in ZIP archive\",\n };\n }\n\n const configJson = configEntry.getData().toString(\"utf-8\");\n let dashboardConfig;\n try {\n dashboardConfig = JSON.parse(configJson);\n } catch (parseError) {\n return {\n success: false,\n error: `Invalid JSON: ${parseError.message}`,\n };\n }\n\n const validation = validateDashboardConfig(dashboardConfig);\n if (!validation.valid) {\n return {\n success: false,\n error: `Invalid config: ${validation.errors.join(\", \")}`,\n };\n }\n\n dashboardConfig = applyDefaults(dashboardConfig);\n\n return {\n success: true,\n filePath: zipPath,\n dashboardConfig: {\n name: dashboardConfig.name,\n description: dashboardConfig.description,\n author: dashboardConfig.author,\n workspace: dashboardConfig.workspace,\n widgets: dashboardConfig.widgets || [],\n providers: dashboardConfig.providers || [],\n },\n };\n } catch (error) {\n console.error(\n \"[DashboardConfigController] Error selecting dashboard file:\",\n error,\n );\n return { success: false, error: error.message };\n }\n}\n\n/**\n * Import a dashboard from a ZIP file containing a .dashboard.json config.\n *\n * Steps:\n * 1. Show native file picker for .zip selection (or use options.filePath)\n * 2. Extract and validate .dashboard.json\n * 3. Auto-install missing widgets from registry\n * 4. Create workspace in workspaces.json\n * 5. Apply event wiring to layout\n * 6. Mark imported dashboard shareable: false\n *\n * @param {BrowserWindow} win - The main window (for dialog)\n * @param {string} appId - Application identifier\n * @param {Object} widgetRegistry - WidgetRegistry instance (needs getWidgets(), downloadWidget())\n * @param {Object} options - Import options\n * @param {string} options.filePath - Skip file picker, use this path directly\n * @param {string} options.name - Override workspace name\n * @param {number} options.menuId - Override workspace menuId (folder)\n * @param {string} options.themeKey - Override workspace themeKey\n * @returns {Promise<Object>} Result with success, workspace, and import summary\n */\nasync function importDashboardConfig(\n win,\n appId,\n widgetRegistry = null,\n options = {},\n) {\n try {\n let zipPath;\n\n if (options.filePath) {\n // Use the provided file path (from selectDashboardFile)\n zipPath = options.filePath;\n } else {\n // Show file picker\n const { canceled, filePaths } = await dialog.showOpenDialog(win, {\n title: \"Import Dashboard Configuration\",\n filters: [{ name: \"ZIP Archive\", extensions: [\"zip\"] }],\n properties: [\"openFile\"],\n });\n\n if (canceled || !filePaths || !filePaths.length) {\n return { success: false, canceled: true };\n }\n\n zipPath = filePaths[0];\n }\n\n // 2. Extract and validate .dashboard.json from ZIP\n const zip = new AdmZip(zipPath);\n\n // Validate ZIP entries for path traversal\n const tempDir = path.join(app.getPath(\"temp\"), \"dash-import\");\n const { validateZipEntries } = require(\"../widgetRegistry\");\n validateZipEntries(zip, tempDir);\n\n // Find the .dashboard.json file\n const entries = zip.getEntries();\n const configEntry = entries.find((e) =>\n e.entryName.endsWith(\".dashboard.json\"),\n );\n\n if (!configEntry) {\n return {\n success: false,\n error: \"No .dashboard.json file found in ZIP archive\",\n };\n }\n\n const configJson = configEntry.getData().toString(\"utf-8\");\n let dashboardConfig;\n try {\n dashboardConfig = JSON.parse(configJson);\n } catch (parseError) {\n return {\n success: false,\n error: `Invalid JSON in ${configEntry.entryName}: ${parseError.message}`,\n };\n }\n\n // Validate against schema\n const validation = validateDashboardConfig(dashboardConfig);\n if (!validation.valid) {\n return {\n success: false,\n error: `Invalid dashboard config: ${validation.errors.join(\", \")}`,\n };\n }\n\n // Apply defaults to fill in optional fields\n dashboardConfig = applyDefaults(dashboardConfig);\n\n // Delegate to shared import pipeline with overrides\n return await processDashboardConfig(\n win,\n appId,\n dashboardConfig,\n widgetRegistry,\n {\n name: options.name,\n menuId: options.menuId,\n themeKey: options.themeKey,\n },\n );\n } catch (error) {\n console.error(\n \"[DashboardConfigController] Error importing dashboard:\",\n error,\n );\n return {\n success: false,\n error: error.message,\n };\n }\n}\n\n/**\n * Shared import pipeline: install widgets, create workspace, wire events.\n * Used by both importDashboardConfig (ZIP) and installDashboardFromRegistry.\n *\n * @param {BrowserWindow} win - The main window\n * @param {string} appId - Application identifier\n * @param {Object} dashboardConfig - Validated dashboard config object\n * @param {Object} widgetRegistry - WidgetRegistry instance\n * @param {Object} options - Additional options\n * @param {string} options.source - Source label (\"zip\" or \"registry\")\n * @returns {Promise<Object>} Result with success, workspace, and summary\n */\nasync function processDashboardConfig(\n win,\n appId,\n dashboardConfig,\n widgetRegistry = null,\n options = {},\n) {\n const source = options.source || \"zip\";\n\n // 1. Auto-install missing widgets from registry\n const installSummary = {\n installed: [],\n alreadyInstalled: [],\n failed: [],\n };\n\n if (\n widgetRegistry &&\n dashboardConfig.widgets &&\n dashboardConfig.widgets.length\n ) {\n const installedWidgets = widgetRegistry.getWidgets();\n const installedPackages = new Set(installedWidgets.map((w) => w.name));\n\n for (const widgetDep of dashboardConfig.widgets) {\n const packageName = widgetDep.package;\n\n if (installedPackages.has(packageName)) {\n installSummary.alreadyInstalled.push(packageName);\n continue;\n }\n\n // Try to find the widget in the registry and install it\n try {\n const registryPkg = await getPackage(packageName);\n if (registryPkg && registryPkg.downloadUrl) {\n await widgetRegistry.downloadWidget(\n packageName,\n registryPkg.downloadUrl,\n registryPkg.dashConfigUrl || null,\n );\n installSummary.installed.push(packageName);\n installedPackages.add(packageName);\n } else {\n installSummary.failed.push({\n package: packageName,\n reason: \"Not found in registry\",\n });\n }\n } catch (installError) {\n installSummary.failed.push({\n package: packageName,\n reason: installError.message,\n });\n }\n }\n }\n\n // 2. Install bundled theme if present\n let themeInstalled = null;\n if (dashboardConfig.theme) {\n const bundledTheme = dashboardConfig.theme;\n try {\n const themeResult = themeController.listThemesForApplication(win, appId);\n const existingThemes = themeResult.themes || {};\n const themeKey = bundledTheme.key;\n\n if (bundledTheme.data && themeKey && !existingThemes[themeKey]) {\n // Embed registry origin metadata if present\n const themeData = { ...bundledTheme.data };\n if (bundledTheme.registryPackage) {\n themeData._registryMeta = {\n source: \"dashboard-import\",\n packageName: bundledTheme.registryPackage,\n installedAt: new Date().toISOString(),\n };\n }\n themeController.saveThemeForApplication(\n win,\n appId,\n themeKey,\n themeData,\n );\n themeInstalled = themeKey;\n console.log(\n `[DashboardConfigController] Installed bundled theme: ${themeKey}`,\n );\n } else if (\n !bundledTheme.data &&\n bundledTheme.registryPackage &&\n themeKey &&\n !existingThemes[themeKey]\n ) {\n // Fallback: try to install from registry by package name\n try {\n const {\n installThemeFromRegistry,\n } = require(\"./themeRegistryController\");\n await installThemeFromRegistry(\n win,\n appId,\n bundledTheme.registryPackage,\n );\n themeInstalled = themeKey;\n console.log(\n `[DashboardConfigController] Installed theme from registry: ${bundledTheme.registryPackage}`,\n );\n } catch (registryErr) {\n console.warn(\n `[DashboardConfigController] Could not install theme from registry: ${registryErr.message}`,\n );\n }\n }\n } catch (themeErr) {\n console.warn(\n `[DashboardConfigController] Could not install bundled theme: ${themeErr.message}`,\n );\n }\n }\n\n // 3. Build workspace from config\n const workspace = { ...dashboardConfig.workspace };\n\n if (!workspace || !workspace.layout) {\n return {\n success: false,\n error: \"Dashboard config has no workspace data\",\n };\n }\n\n // Generate a unique ID for the imported workspace\n workspace.id = Date.now();\n\n // Apply name/menuId/themeKey overrides if provided\n if (options.name) workspace.name = options.name;\n if (options.menuId !== undefined) workspace.menuId = options.menuId;\n if (options.themeKey !== undefined) workspace.themeKey = options.themeKey;\n\n // Set themeKey from bundled theme if it was installed and no override given\n if (themeInstalled && options.themeKey === undefined) {\n workspace.themeKey = themeInstalled;\n }\n\n // 4. Apply event wiring to layout\n const eventWiringSummary = [];\n if (\n dashboardConfig.eventWiring &&\n dashboardConfig.eventWiring.length &&\n workspace.layout\n ) {\n applyEventWiringToLayout(workspace.layout, dashboardConfig.eventWiring);\n for (const wire of dashboardConfig.eventWiring) {\n eventWiringSummary.push(\n `${wire.source?.widget}.${wire.source?.event} → ${wire.target?.widget}.${wire.target?.handler}`,\n );\n }\n }\n\n // 5. Mark as not shareable (imported dashboards cannot be re-published)\n workspace._dashboardConfig = {\n shareable: false,\n source,\n importedFrom: dashboardConfig.name,\n importedAt: new Date().toISOString(),\n originalAuthor: dashboardConfig.author,\n schemaVersion: dashboardConfig.schemaVersion,\n registryPackage: options.registryPackage || null,\n installedVersion: options.installedVersion || null,\n };\n\n // Save workspace to workspaces.json\n const workspaceController = require(\"./workspaceController\");\n const saveResult = workspaceController.saveWorkspaceForApplication(\n win,\n appId,\n workspace,\n );\n\n if (saveResult.error) {\n return {\n success: false,\n error: `Failed to save workspace: ${saveResult.message}`,\n };\n }\n\n // Build provider requirements summary\n const providerSummary = (dashboardConfig.providers || []).map((p) => ({\n type: p.type,\n providerClass: p.providerClass,\n required: p.required,\n usedBy: p.usedBy,\n }));\n\n console.log(\n `[DashboardConfigController] Imported dashboard \"${dashboardConfig.name}\" (${source}) as workspace ${workspace.id}`,\n );\n\n return {\n success: true,\n workspace,\n summary: {\n name: dashboardConfig.name,\n description: dashboardConfig.description || \"\",\n author: dashboardConfig.author,\n widgets: installSummary,\n eventsWired: eventWiringSummary,\n providersRequired: providerSummary,\n themeInstalled: themeInstalled || null,\n },\n };\n}\n\n/**\n * Install a dashboard from the registry by package name.\n *\n * Fetches the dashboard ZIP from the registry, extracts the .dashboard.json,\n * validates it, and delegates to the shared import pipeline.\n *\n * @param {BrowserWindow} win - The main window\n * @param {string} appId - Application identifier\n * @param {string} packageName - Registry package name for the dashboard\n * @param {Object} widgetRegistry - WidgetRegistry instance\n * @returns {Promise<Object>} Result with success, workspace, and summary\n */\nasync function installDashboardFromRegistry(\n win,\n appId,\n packageName,\n widgetRegistry = null,\n) {\n try {\n // 1. Look up the dashboard package in the registry\n const registryPkg = await getPackage(packageName);\n if (!registryPkg) {\n return {\n success: false,\n error: `Dashboard package not found in registry: ${packageName}`,\n };\n }\n\n if (!registryPkg.downloadUrl) {\n return {\n success: false,\n error: `Dashboard package has no download URL: ${packageName}`,\n };\n }\n\n // 2. Resolve the download URL and fetch the ZIP\n const version = registryPkg.version || \"1.0.0\";\n let downloadUrl = registryPkg.downloadUrl;\n downloadUrl = downloadUrl.replace(\"{version}\", version);\n downloadUrl = downloadUrl.replace(\"{name}\", packageName);\n\n // Enforce HTTPS\n const parsedUrl = new URL(downloadUrl);\n if (parsedUrl.protocol !== \"https:\") {\n return {\n success: false,\n error: `Dashboard downloads must use HTTPS. Refusing: ${downloadUrl}`,\n };\n }\n\n console.log(\n `[DashboardConfigController] Fetching dashboard from: ${downloadUrl}`,\n );\n\n const response = await fetch(downloadUrl);\n if (!response.ok) {\n return {\n success: false,\n error: `Failed to download dashboard: ${response.status} ${response.statusText}`,\n };\n }\n\n const buffer = await response.arrayBuffer();\n const zip = new AdmZip(Buffer.from(buffer));\n\n // 3. Validate ZIP entries\n const tempDir = path.join(app.getPath(\"temp\"), \"dash-registry-import\");\n const { validateZipEntries } = require(\"../widgetRegistry\");\n validateZipEntries(zip, tempDir);\n\n // 4. Find and parse .dashboard.json\n const entries = zip.getEntries();\n const configEntry = entries.find((e) =>\n e.entryName.endsWith(\".dashboard.json\"),\n );\n\n if (!configEntry) {\n return {\n success: false,\n error: \"No .dashboard.json file found in downloaded archive\",\n };\n }\n\n const configJson = configEntry.getData().toString(\"utf-8\");\n let dashboardConfig;\n try {\n dashboardConfig = JSON.parse(configJson);\n } catch (parseError) {\n return {\n success: false,\n error: `Invalid JSON in dashboard config: ${parseError.message}`,\n };\n }\n\n // 5. Validate against schema\n const validation = validateDashboardConfig(dashboardConfig);\n if (!validation.valid) {\n return {\n success: false,\n error: `Invalid dashboard config: ${validation.errors.join(\", \")}`,\n };\n }\n\n dashboardConfig = applyDefaults(dashboardConfig);\n\n // 6. Delegate to shared import pipeline\n return await processDashboardConfig(\n win,\n appId,\n dashboardConfig,\n widgetRegistry,\n {\n source: \"registry\",\n registryPackage: packageName,\n installedVersion: registryPkg.version || null,\n },\n );\n } catch (error) {\n console.error(\n \"[DashboardConfigController] Error installing dashboard from registry:\",\n error,\n );\n return {\n success: false,\n error: error.message,\n };\n }\n}\n\n/**\n * Check compatibility of a dashboard's widget dependencies against\n * installed widgets and registry availability.\n *\n * @param {Array} dashboardWidgets - Widget deps from dashboard config\n * @param {Object} widgetRegistry - WidgetRegistry instance (needs getWidgets())\n * @returns {Promise<Object>} Compatibility report\n */\nasync function checkCompatibility(dashboardWidgets, widgetRegistry = null) {\n const {\n checkDashboardCompatibility,\n } = require(\"../schema/dashboardConfigUtils\");\n const { fetchRegistryIndex } = require(\"./registryController\");\n\n const installedWidgets = widgetRegistry ? widgetRegistry.getWidgets() : [];\n\n let registryPackages = [];\n try {\n const index = await fetchRegistryIndex();\n registryPackages = index.packages || [];\n } catch (err) {\n console.warn(\n \"[DashboardConfigController] Could not fetch registry index for compatibility check:\",\n err.message,\n );\n }\n\n return checkDashboardCompatibility(\n dashboardWidgets,\n installedWidgets,\n registryPackages,\n );\n}\n\n/**\n * Prepare a dashboard for publishing to the registry.\n *\n * Validates that the workspace is shareable, builds the dashboard config,\n * checks that all widgets exist in the registry, generates a registry\n * manifest, and creates a ZIP containing both the manifest and\n * .dashboard.json config.\n *\n * @param {BrowserWindow} win - The main window (for save dialog)\n * @param {string} appId - Application identifier\n * @param {number|string} workspaceId - ID of the workspace to publish\n * @param {Object} options - Publishing options\n * @param {string} options.authorName - Author name\n * @param {string} options.authorId - Author ID\n * @param {string} options.description - Dashboard description\n * @param {string[]} options.tags - Tags\n * @param {string} options.icon - Icon name\n * @param {string} options.githubUser - GitHub user/org for registry scope\n * @param {string} options.category - Registry category\n * @param {Object} widgetRegistry - WidgetRegistry instance\n * @returns {Promise<Object>} Result with success, manifest, and filePath\n */\nasync function prepareDashboardForPublish(\n win,\n appId,\n workspaceId,\n options = {},\n widgetRegistry = null,\n) {\n try {\n const {\n generateRegistryManifest,\n } = require(\"../schema/dashboardConfigUtils\");\n\n // 1. Read workspace\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const workspacesArray = getFileContents(filename);\n const workspace = workspacesArray.find(\n (w) => w.id === workspaceId || w.id === Number(workspaceId),\n );\n\n if (!workspace) {\n return {\n success: false,\n error: `Workspace not found: ${workspaceId}`,\n };\n }\n\n // 2. Check shareable flag — imported dashboards cannot be published\n if (\n workspace._dashboardConfig &&\n workspace._dashboardConfig.shareable === false\n ) {\n return {\n success: false,\n error:\n \"This dashboard was imported and cannot be published. Only dashboards you created can be shared.\",\n };\n }\n\n const layout = workspace.layout || [];\n\n // 3. Build the dashboard config (reuse export logic)\n const componentNames = collectComponentNames(layout);\n const eventWiring = extractEventWiring(layout);\n const widgets = buildWidgetDependencies(componentNames, widgetRegistry);\n const providers = buildProviderRequirements(componentNames, widgetRegistry);\n\n const dashboardConfig = applyDefaults({\n schemaVersion: CURRENT_SCHEMA_VERSION,\n name: workspace.name || workspace.label || \"Dashboard\",\n description: options.description || \"\",\n ...(options.authorName\n ? { author: { name: options.authorName, id: options.authorId || \"\" } }\n : {}),\n shareable: true,\n tags: options.tags || [],\n icon: options.icon || \"grip\",\n workspace: {\n id: workspace.id,\n name: workspace.name,\n type: workspace.type || \"workspace\",\n label: workspace.label || workspace.name,\n version: workspace.version || 1,\n layout,\n menuId: workspace.menuId || 1,\n },\n widgets,\n providers,\n eventWiring,\n });\n\n // 4. Bundle theme if workspace has a themeKey\n if (workspace.themeKey) {\n try {\n const themeResult = themeController.listThemesForApplication(\n win,\n appId,\n );\n const themeData = themeResult.themes?.[workspace.themeKey];\n if (themeData) {\n dashboardConfig.theme = {\n key: workspace.themeKey,\n data: themeData,\n };\n if (themeData._registryMeta?.packageName) {\n dashboardConfig.theme.registryPackage =\n themeData._registryMeta.packageName;\n }\n }\n } catch (themeErr) {\n console.warn(\n \"[DashboardConfigController] Could not bundle theme for publish:\",\n themeErr.message,\n );\n }\n }\n\n // 5. Validate the config\n const validation = validateDashboardConfig(dashboardConfig);\n if (!validation.valid) {\n return {\n success: false,\n error: `Generated config is invalid: ${validation.errors.join(\", \")}`,\n };\n }\n\n // 6. Check which widgets exist in the registry (soft warning, not blocking)\n const { fetchRegistryIndex } = require(\"./registryController\");\n let registryPackages = [];\n let registryCheckFailed = false;\n try {\n const index = await fetchRegistryIndex();\n registryPackages = index.packages || [];\n } catch (err) {\n console.warn(\n `[DashboardConfigController] Unable to verify registry: ${err.message}`,\n );\n registryCheckFailed = true;\n }\n\n let missingFromRegistry = [];\n if (!registryCheckFailed) {\n const registryNames = new Set(registryPackages.map((p) => p.name));\n const missingWidgets = widgets.filter(\n (w) => w.required !== false && !registryNames.has(w.package),\n );\n const grouped = {};\n for (const w of missingWidgets) {\n if (!grouped[w.package]) grouped[w.package] = [];\n const widgetName = w.id.includes(\".\") ? w.id.split(\".\")[1] : w.id;\n if (!grouped[w.package].includes(widgetName)) {\n grouped[w.package].push(widgetName);\n }\n }\n missingFromRegistry = Object.entries(grouped).map(\n ([pkg, widgetNames]) => ({ package: pkg, widgets: widgetNames }),\n );\n }\n\n // 7. Resolve registry username for scope\n let registryUsername = options.githubUser || \"\";\n if (!registryUsername) {\n try {\n const { getRegistryProfile } = require(\"./registryAuthController\");\n const profile = await getRegistryProfile();\n registryUsername = profile?.username || options.authorId || \"\";\n } catch {\n registryUsername = options.authorId || \"\";\n }\n }\n\n // 8. Generate registry manifest\n const manifest = generateRegistryManifest(dashboardConfig, {\n githubUser: registryUsername,\n category: options.category || \"general\",\n repository: options.repository || \"\",\n appOrigin: appId,\n });\n\n // 9. Show save dialog for the publish package\n const sanitizedName = manifest.name;\n const { canceled, filePath } = await dialog.showSaveDialog(win, {\n title: \"Save Dashboard Package for Registry\",\n defaultPath: path.join(\n app.getPath(\"desktop\"),\n `dashboard-${sanitizedName}-v${manifest.version}.zip`,\n ),\n filters: [{ name: \"ZIP Archive\", extensions: [\"zip\"] }],\n });\n\n if (canceled || !filePath) {\n return { success: false, canceled: true };\n }\n\n // 10. Create ZIP with manifest and dashboard config\n const zip = new AdmZip();\n zip.addFile(\n \"manifest.json\",\n Buffer.from(JSON.stringify(manifest, null, 2), \"utf-8\"),\n );\n zip.addFile(\n `${sanitizedName}.dashboard.json`,\n Buffer.from(JSON.stringify(dashboardConfig, null, 2), \"utf-8\"),\n );\n zip.writeZip(filePath);\n\n console.log(\n `[DashboardConfigController] Prepared publish package: ${filePath}`,\n );\n\n // 11. Attempt to publish to registry if authenticated\n let registrySubmission = null;\n try {\n const { getAuthStatus } = require(\"./registryAuthController\");\n const { publishToRegistry } = require(\"./registryApiController\");\n const authStatus = getAuthStatus();\n\n if (authStatus.authenticated) {\n console.log(\"[DashboardConfigController] Publishing to registry...\");\n registrySubmission = await publishToRegistry(filePath, manifest);\n if (registrySubmission.success) {\n console.log(\n `[DashboardConfigController] Published to registry: ${registrySubmission.registryUrl}`,\n );\n } else {\n console.warn(\n `[DashboardConfigController] Registry publish failed: ${registrySubmission.error}`,\n );\n }\n } else {\n registrySubmission = { success: false, authRequired: true };\n }\n } catch (err) {\n console.warn(\n `[DashboardConfigController] Registry publish error: ${err.message}`,\n );\n registrySubmission = { success: false, error: err.message };\n }\n\n return {\n success: true,\n filePath,\n manifest,\n config: dashboardConfig,\n warnings:\n missingFromRegistry.length > 0 ? missingFromRegistry : undefined,\n registryCheckFailed: registryCheckFailed || undefined,\n registrySubmission,\n };\n } catch (error) {\n console.error(\n \"[DashboardConfigController] Error preparing dashboard for publish:\",\n error,\n );\n return {\n success: false,\n error: error.message,\n };\n }\n}\n\n/**\n * Get a full preview of a dashboard package from the registry.\n * Combines the structured preview data with a compatibility check.\n *\n * @param {string} packageName - Registry package name\n * @param {Object} widgetRegistry - WidgetRegistry instance\n * @returns {Promise<Object>} Preview data with compatibility report\n */\nasync function getDashboardPreview(packageName, widgetRegistry = null) {\n const {\n buildDashboardPreview,\n checkDashboardCompatibility,\n } = require(\"../schema/dashboardConfigUtils\");\n const { getPackage, fetchRegistryIndex } = require(\"./registryController\");\n\n const pkg = await getPackage(packageName);\n if (!pkg) {\n return {\n success: false,\n error: `Dashboard package not found: ${packageName}`,\n };\n }\n\n const preview = buildDashboardPreview(pkg);\n\n // Get compatibility report\n const installedWidgets = widgetRegistry ? widgetRegistry.getWidgets() : [];\n let registryPackages = [];\n try {\n const index = await fetchRegistryIndex();\n registryPackages = index.packages || [];\n } catch (err) {\n // Non-fatal — preview still works without compatibility\n }\n\n const compatibility = checkDashboardCompatibility(\n pkg.widgets || [],\n installedWidgets,\n registryPackages,\n );\n\n return {\n success: true,\n preview,\n compatibility,\n };\n}\n\n/**\n * Check installed dashboards for available updates.\n * Reads workspaces, finds those installed from the registry,\n * and compares versions against the current registry index.\n *\n * @param {string} appId - Application identifier\n * @returns {Promise<Object>} Result with updates array\n */\nasync function checkDashboardUpdatesForApp(appId) {\n const { checkDashboardUpdates } = require(\"../schema/dashboardConfigUtils\");\n const { fetchRegistryIndex } = require(\"./registryController\");\n\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const workspaces = getFileContents(filename) || [];\n\n const index = await fetchRegistryIndex();\n const registryPackages = index.packages || [];\n\n const updates = checkDashboardUpdates(workspaces, registryPackages);\n\n return {\n success: true,\n updates,\n totalInstalled: workspaces.filter(\n (w) => w._dashboardConfig?.registryPackage,\n ).length,\n };\n } catch (error) {\n console.error(\n \"[DashboardConfigController] Error checking dashboard updates:\",\n error,\n );\n return {\n success: false,\n error: error.message,\n updates: [],\n };\n }\n}\n\n/**\n * Get a provider setup manifest for a dashboard's requirements.\n * Compares required providers against the user's configured providers.\n *\n * @param {string} appId - Application identifier\n * @param {Array} requiredProviders - Provider requirements from dashboard config\n * @returns {Object} Setup manifest with per-provider status\n */\nfunction getProviderSetupManifest(appId, requiredProviders = []) {\n const {\n buildProviderSetupManifest,\n } = require(\"../schema/dashboardConfigUtils\");\n const { listProviders } = require(\"./providerController\");\n\n let configuredProviders = [];\n try {\n configuredProviders = listProviders(null, appId) || [];\n } catch (err) {\n console.warn(\n \"[DashboardConfigController] Could not list providers:\",\n err.message,\n );\n }\n\n return buildProviderSetupManifest(requiredProviders, configuredProviders);\n}\n\n/**\n * Get a publish preview for a dashboard workspace.\n * Returns widget/layout info without creating a ZIP or uploading.\n *\n * @param {string} appId - Application identifier\n * @param {number|string} workspaceId - Workspace to preview\n * @param {Object} widgetRegistry - WidgetRegistry instance (optional)\n * @returns {Object} Preview with dashboardName, widgetCount, widgets, componentNames\n */\nfunction getDashboardPublishPreview(appId, workspaceId, widgetRegistry = null) {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename,\n );\n const workspacesArray = getFileContents(filename);\n const workspace = workspacesArray.find(\n (w) => w.id === workspaceId || w.id === Number(workspaceId),\n );\n\n if (!workspace) {\n return { success: false, error: `Workspace not found: ${workspaceId}` };\n }\n\n const layout = workspace.layout || [];\n const componentNames = collectComponentNames(layout);\n const widgets = buildWidgetDependencies(componentNames, widgetRegistry);\n\n return {\n success: true,\n dashboardName: workspace.name || workspace.label || \"Dashboard\",\n widgetCount: componentNames.length,\n widgets: widgets.map((w) => ({ name: w.name, package: w.package })),\n componentNames: [...componentNames],\n };\n } catch (error) {\n console.error(\n \"[DashboardConfigController] Error getting publish preview:\",\n error,\n );\n return { success: false, error: error.message };\n }\n}\n\nmodule.exports = {\n exportDashboardConfig,\n selectDashboardFile,\n importDashboardConfig,\n installDashboardFromRegistry,\n checkCompatibility,\n prepareDashboardForPublish,\n getDashboardPreview,\n checkDashboardUpdatesForApp,\n getProviderSetupManifest,\n getDashboardPublishPreview,\n};\n","/**\n * notificationController.js\n *\n * Main process controller for OS-level notifications.\n * Manages preferences (electron-store), rate limiting, deduplication,\n * and dispatching native Notification instances.\n */\nconst { Notification } = require(\"electron\");\nconst Store = require(\"electron-store\");\n\nconst store = new Store({ name: \"dash-notifications\" });\n\n// --- Rate limiting ---\n// Sliding window: max 10 notifications per 60s per widget\nconst RATE_LIMIT_WINDOW_MS = 60_000;\nconst RATE_LIMIT_MAX = 10;\nconst rateBuckets = new Map(); // widgetId -> [timestamp, ...]\n\n// --- Deduplication ---\n// Same (widgetName, type, title, body) within 5s is dropped\nconst DEDUP_WINDOW_MS = 5_000;\nconst recentNotifications = new Map(); // dedup key -> timestamp\n\nfunction getDedupKey(payload) {\n return `${payload.widgetName}:${payload.type}:${payload.title}:${payload.body}`;\n}\n\nfunction isRateLimited(widgetId) {\n const now = Date.now();\n let timestamps = rateBuckets.get(widgetId) || [];\n // Prune old entries\n timestamps = timestamps.filter((t) => now - t < RATE_LIMIT_WINDOW_MS);\n rateBuckets.set(widgetId, timestamps);\n return timestamps.length >= RATE_LIMIT_MAX;\n}\n\nfunction recordNotification(widgetId) {\n const timestamps = rateBuckets.get(widgetId) || [];\n timestamps.push(Date.now());\n rateBuckets.set(widgetId, timestamps);\n}\n\nfunction isDuplicate(payload) {\n const key = getDedupKey(payload);\n const now = Date.now();\n const lastSent = recentNotifications.get(key);\n if (lastSent && now - lastSent < DEDUP_WINDOW_MS) {\n return true;\n }\n recentNotifications.set(key, now);\n return false;\n}\n\n// Clean up stale dedup entries periodically\nsetInterval(() => {\n const now = Date.now();\n for (const [key, ts] of recentNotifications) {\n if (now - ts > DEDUP_WINDOW_MS) {\n recentNotifications.delete(key);\n }\n }\n}, 30_000);\n\nconst notificationController = {\n /**\n * Send a notification if it passes all checks.\n *\n * @param {BrowserWindow} win - the main window (for click routing)\n * @param {Object} payload\n * @param {string} payload.widgetName - component name of the widget\n * @param {string} payload.widgetId - widget instance UUID\n * @param {string} payload.workspaceId - workspace containing the widget\n * @param {string} payload.type - notification type key (must match .dash.js config)\n * @param {string} payload.title - notification title\n * @param {string} payload.body - notification body\n * @param {Object} [payload.data] - arbitrary data returned on click\n * @param {boolean} [payload.silent] - suppress sound\n * @param {string} [payload.urgency] - \"low\" | \"normal\" | \"critical\"\n * @returns {{ success: boolean, reason?: string }}\n */\n send: (win, payload) => {\n try {\n const {\n widgetName,\n widgetId,\n workspaceId,\n type,\n title,\n body,\n data,\n silent,\n urgency,\n } = payload;\n\n // 1. Check globalEnabled\n const globalEnabled = store.get(\"globalEnabled\", true);\n if (!globalEnabled) {\n return { success: false, reason: \"notifications_disabled\" };\n }\n\n // 2. Check doNotDisturb\n const dnd = store.get(\"doNotDisturb\", false);\n if (dnd) {\n return { success: false, reason: \"do_not_disturb\" };\n }\n\n // 3. Check per-widget per-type preference\n const instances = store.get(\"instances\", {});\n const widgetPrefs = instances[widgetId];\n if (widgetPrefs && widgetPrefs[type] === false) {\n return { success: false, reason: \"type_disabled\" };\n }\n\n // 4. Rate limit\n if (isRateLimited(widgetId)) {\n return { success: false, reason: \"rate_limited\" };\n }\n\n // 5. Deduplication\n if (isDuplicate(payload)) {\n return { success: false, reason: \"duplicate\" };\n }\n\n // 6. All checks passed — send native notification\n const notification = new Notification({\n title,\n body,\n silent: silent || false,\n urgency: urgency || \"normal\",\n });\n\n notification.on(\"click\", () => {\n if (win && !win.isDestroyed()) {\n win.show();\n win.focus();\n win.webContents.send(\"notification:clicked\", {\n widgetName,\n widgetId,\n workspaceId,\n type,\n data: data || null,\n });\n }\n });\n\n notification.show();\n recordNotification(widgetId);\n\n console.log(\n `[notificationController] Sent: ${widgetName}.${type} — \"${title}\"`,\n );\n\n return { success: true };\n } catch (error) {\n console.error(\n \"[notificationController] Error sending notification:\",\n error,\n );\n return { error: true, message: error.message };\n }\n },\n\n /**\n * Get all notification preferences.\n *\n * @returns {{ globalEnabled: boolean, doNotDisturb: boolean, instances: Object }}\n */\n getPreferences: () => {\n try {\n return {\n globalEnabled: store.get(\"globalEnabled\", true),\n doNotDisturb: store.get(\"doNotDisturb\", false),\n instances: store.get(\"instances\", {}),\n };\n } catch (error) {\n console.error(\n \"[notificationController] Error getting preferences:\",\n error,\n );\n return {\n error: true,\n message: error.message,\n globalEnabled: true,\n doNotDisturb: false,\n instances: {},\n };\n }\n },\n\n /**\n * Set notification preferences for a specific widget instance.\n *\n * @param {string} widgetId - widget instance UUID\n * @param {Object} prefs - { [notificationType]: boolean }\n * @returns {{ success: boolean }}\n */\n setPreferences: (widgetId, prefs) => {\n try {\n const instances = store.get(\"instances\", {});\n instances[widgetId] = { ...(instances[widgetId] || {}), ...prefs };\n store.set(\"instances\", instances);\n console.log(\n `[notificationController] Preferences updated for widget ${widgetId}`,\n );\n return { success: true };\n } catch (error) {\n console.error(\n \"[notificationController] Error setting preferences:\",\n error,\n );\n return { error: true, message: error.message };\n }\n },\n\n /**\n * Set global notification settings.\n *\n * @param {Object} settings\n * @param {boolean} [settings.globalEnabled]\n * @param {boolean} [settings.doNotDisturb]\n * @returns {{ success: boolean }}\n */\n setGlobal: (settings) => {\n try {\n if (typeof settings.globalEnabled === \"boolean\") {\n store.set(\"globalEnabled\", settings.globalEnabled);\n }\n if (typeof settings.doNotDisturb === \"boolean\") {\n store.set(\"doNotDisturb\", settings.doNotDisturb);\n }\n console.log(\n \"[notificationController] Global settings updated:\",\n settings,\n );\n return { success: true };\n } catch (error) {\n console.error(\"[notificationController] Error setting global:\", error);\n return { error: true, message: error.message };\n }\n },\n};\n\nmodule.exports = notificationController;\n","/**\n * clientFactories.js\n *\n * Registers built-in provider type factories with clientCache.\n * SDK packages are lazy-required so they're only loaded when first needed.\n *\n * Auto-imported by electron/index.js — factories are registered the moment\n * any consuming app does require(\"@trops/dash-core/electron\").\n */\n\nconst clientCache = require(\"./clientCache\");\n\n// --- Algolia ---\nclientCache.registerFactory(\"algolia\", (credentials) => {\n const algoliasearch = require(\"algoliasearch\");\n return algoliasearch(\n credentials.appId,\n credentials.apiKey || credentials.key,\n );\n});\n\n// --- OpenAI ---\nclientCache.registerFactory(\"openai\", (credentials) => {\n const OpenAI = require(\"openai\");\n return new OpenAI({ apiKey: credentials.apiKey });\n});\n","/**\n * sessionController.js\n *\n * Manages session persistence: recently opened dashboards and\n * open tab state for session restore on relaunch.\n *\n * Uses electron-store (unencrypted) for lightweight persistence.\n */\n\nconst MAX_RECENTS = 20;\n\n// Lazy-load electron-store to avoid issues when not installed\nlet store = null;\nfunction getStore() {\n if (!store) {\n const Store = require(\"electron-store\");\n store = new Store({ name: \"dash-session\" });\n }\n return store;\n}\n\n/**\n * Get recently opened dashboards.\n *\n * @returns {Array<{ workspaceId: string, name: string, openedAt: string }>}\n */\nfunction getRecentDashboards() {\n try {\n const s = getStore();\n const recents = s.get(\"recents\", []);\n return recents\n .sort((a, b) => new Date(b.openedAt) - new Date(a.openedAt))\n .slice(0, MAX_RECENTS);\n } catch {\n return [];\n }\n}\n\n/**\n * Add (or upsert) a recent dashboard entry.\n *\n * @param {string} workspaceId\n * @param {string} name\n * @returns {Array} Updated recents list\n */\nfunction addRecentDashboard(workspaceId, name) {\n try {\n const s = getStore();\n let recents = s.get(\"recents\", []);\n\n // Remove existing entry for this workspace (upsert)\n recents = recents.filter((r) => r.workspaceId !== workspaceId);\n\n // Prepend new entry\n recents.unshift({\n workspaceId,\n name: name || \"Untitled\",\n openedAt: new Date().toISOString(),\n });\n\n // Cap at MAX_RECENTS\n recents = recents.slice(0, MAX_RECENTS);\n\n s.set(\"recents\", recents);\n return recents;\n } catch {\n return [];\n }\n}\n\n/**\n * Clear all recent dashboards.\n */\nfunction clearRecentDashboards() {\n try {\n const s = getStore();\n s.set(\"recents\", []);\n } catch {\n // ignore\n }\n}\n\n/**\n * Get saved session state (open tabs + active tab).\n *\n * @returns {{ openTabIds: string[], activeTabId: string | null } | null}\n */\nfunction getSessionState() {\n try {\n const s = getStore();\n const state = s.get(\"sessionState\", null);\n return state || null;\n } catch {\n return null;\n }\n}\n\n/**\n * Save session state (open tabs + active tab).\n *\n * @param {string[]} openTabIds\n * @param {string|null} activeTabId\n */\nfunction saveSessionState(openTabIds, activeTabId) {\n try {\n const s = getStore();\n s.set(\"sessionState\", { openTabIds, activeTabId });\n } catch {\n // ignore\n }\n}\n\n/**\n * Clear saved session state.\n */\nfunction clearSessionState() {\n try {\n const s = getStore();\n s.delete(\"sessionState\");\n } catch {\n // ignore\n }\n}\n\nmodule.exports = {\n getRecentDashboards,\n addRecentDashboard,\n clearRecentDashboards,\n getSessionState,\n saveSessionState,\n clearSessionState,\n};\n","/**\n * dashboardRatingsUtils.js\n *\n * Pure utility functions for dashboard ratings logic.\n * No Electron or file I/O dependencies — safe to test anywhere.\n */\n\n/**\n * Validate and build a rating entry.\n *\n * @param {string} packageName - Dashboard package name\n * @param {Object} rating - Rating input\n * @param {number} rating.stars - 1-5 star rating\n * @param {string} [rating.review] - Optional text review\n * @returns {Object} { success, rating, error }\n */\nfunction validateAndBuildRating(packageName, rating = {}) {\n if (!packageName) {\n return { success: false, error: \"Package name is required\" };\n }\n\n const stars = Number(rating.stars);\n if (!stars || stars < 1 || stars > 5 || !Number.isInteger(stars)) {\n return {\n success: false,\n error: \"Stars must be an integer between 1 and 5\",\n };\n }\n\n const entry = {\n stars,\n review:\n typeof rating.review === \"string\" ? rating.review.slice(0, 1000) : \"\",\n ratedAt: new Date().toISOString(),\n };\n\n return { success: true, rating: entry };\n}\n\n/**\n * Enrich packages with user rating data (pure function).\n *\n * @param {Array} packages - Registry packages\n * @param {Object} ratings - Map of packageName → rating data\n * @returns {Array} Packages with userRating field added\n */\nfunction enrichWithRatings(packages, ratings) {\n return packages.map((pkg) => ({\n ...pkg,\n userRating: ratings[pkg.name] || null,\n }));\n}\n\nmodule.exports = {\n validateAndBuildRating,\n enrichWithRatings,\n};\n","/**\n * dashboardRatingsController.js\n *\n * Local storage for dashboard ratings and reviews.\n * Stores user ratings per dashboard package in a JSON file.\n * Runs in the Electron main process.\n */\n\nconst { app } = require(\"electron\");\nconst path = require(\"path\");\nconst { getFileContents, writeToFile } = require(\"../utils/file\");\nconst {\n validateAndBuildRating,\n enrichWithRatings,\n} = require(\"../schema/dashboardRatingsUtils\");\n\nconst ratingsFilename = \"dashboard-ratings.json\";\nconst appName = \"Dashboard\";\n\n/**\n * Get the ratings file path for an app.\n */\nfunction getRatingsPath(appId) {\n return path.join(app.getPath(\"userData\"), appName, appId, ratingsFilename);\n}\n\n/**\n * Read all ratings from disk.\n */\nfunction readRatings(appId) {\n const filepath = getRatingsPath(appId);\n return getFileContents(filepath, {});\n}\n\n/**\n * Write ratings to disk.\n */\nfunction writeRatings(appId, ratings) {\n const filepath = getRatingsPath(appId);\n writeToFile(filepath, JSON.stringify(ratings, null, 2));\n}\n\n/**\n * Save or update a rating for a dashboard package.\n */\nfunction saveDashboardRating(appId, packageName, rating = {}) {\n const result = validateAndBuildRating(packageName, rating);\n if (!result.success) return result;\n\n const ratings = readRatings(appId);\n ratings[packageName] = result.rating;\n writeRatings(appId, ratings);\n\n return { success: true, rating: ratings[packageName] };\n}\n\n/**\n * Get the user's rating for a specific dashboard package.\n */\nfunction getDashboardRating(appId, packageName) {\n const ratings = readRatings(appId);\n return ratings[packageName] || null;\n}\n\n/**\n * Get all dashboard ratings.\n */\nfunction listDashboardRatings(appId) {\n return readRatings(appId);\n}\n\n/**\n * Delete a rating for a dashboard package.\n */\nfunction deleteDashboardRating(appId, packageName) {\n const ratings = readRatings(appId);\n if (!ratings[packageName]) {\n return { success: false, error: \"No rating found for this package\" };\n }\n delete ratings[packageName];\n writeRatings(appId, ratings);\n return { success: true };\n}\n\n/**\n * Enrich registry packages with local rating data.\n */\nfunction enrichPackagesWithRatings(packages, appId) {\n const ratings = readRatings(appId);\n return enrichWithRatings(packages, ratings);\n}\n\nmodule.exports = {\n saveDashboardRating,\n getDashboardRating,\n listDashboardRatings,\n deleteDashboardRating,\n enrichPackagesWithRatings,\n};\n","/**\n * Controller exports.\n */\nconst { showDialog, fileChosenError } = require(\"./dialogController\");\nconst {\n isEncryptionAvailable,\n saveData,\n getData,\n} = require(\"./secureStoreController\");\nconst {\n listWorkspacesForApplication,\n saveWorkspaceForApplication,\n deleteWorkspaceForApplication,\n} = require(\"./workspaceController\");\nconst {\n saveThemeForApplication,\n listThemesForApplication,\n deleteThemeForApplication,\n} = require(\"./themeController\");\nconst {\n convertJsonToCsvFile,\n convertJsonToCsvString,\n saveToFile,\n readFromFile,\n parseXMLStream,\n parseCSVStream,\n readLinesFromFile,\n transformFile,\n readJSONFromFile,\n readDataFromURL,\n extractColorsFromImageURL,\n} = require(\"./dataController\");\nconst {\n saveSettingsForApplication,\n getSettingsForApplication,\n getDataDirectory,\n setDataDirectory,\n migrateDataDirectory,\n} = require(\"./settingsController\");\nconst {\n saveProvider,\n listProviders,\n getProvider,\n deleteProvider,\n} = require(\"./providerController\");\nconst {\n listIndices,\n partialUpdateObjectsFromDirectory,\n createBatchesFromFile,\n browseObjectsToFile,\n search: searchIndex,\n} = require(\"./algoliaController\");\nconst { describeImage } = require(\"./openaiController\");\nconst {\n saveMenuItemForApplication,\n listMenuItemsForApplication,\n} = require(\"./menuItemsController\");\nconst { install: pluginInstall } = require(\"./pluginController\");\nconst {\n exportDashboardConfig,\n selectDashboardFile,\n importDashboardConfig,\n installDashboardFromRegistry,\n checkCompatibility,\n prepareDashboardForPublish,\n getDashboardPreview,\n checkDashboardUpdatesForApp,\n getProviderSetupManifest,\n getDashboardPublishPreview,\n} = require(\"./dashboardConfigController\");\nconst {\n initiateDeviceFlow,\n pollForToken,\n getStoredToken: getRegistryToken,\n getAuthStatus: getRegistryAuthStatus,\n getRegistryProfile,\n updateRegistryProfile,\n getRegistryPackages,\n updateRegistryPackage,\n clearToken: clearRegistryToken,\n} = require(\"./registryAuthController\");\nconst {\n publishToRegistry,\n getRegistryUrl,\n} = require(\"./registryApiController\");\nconst {\n getRecentDashboards,\n addRecentDashboard,\n clearRecentDashboards,\n getSessionState,\n saveSessionState,\n clearSessionState,\n} = require(\"./sessionController\");\nconst {\n saveDashboardRating,\n getDashboardRating,\n listDashboardRatings,\n deleteDashboardRating,\n enrichPackagesWithRatings,\n} = require(\"./dashboardRatingsController\");\nconst notificationController = require(\"./notificationController\");\nconst {\n prepareThemeForPublish,\n installThemeFromRegistry,\n getThemePublishPreview,\n} = require(\"./themeRegistryController\");\n\nmodule.exports = {\n showDialog,\n fileChosenError,\n isEncryptionAvailable,\n saveData,\n getData,\n listWorkspacesForApplication,\n saveWorkspaceForApplication,\n deleteWorkspaceForApplication,\n saveThemeForApplication,\n listThemesForApplication,\n deleteThemeForApplication,\n convertJsonToCsvFile,\n convertJsonToCsvString,\n parseXMLStream,\n parseCSVStream,\n readLinesFromFile,\n saveToFile,\n readFromFile,\n saveSettingsForApplication,\n getSettingsForApplication,\n transformFile,\n readJSONFromFile,\n readDataFromURL,\n extractColorsFromImageURL,\n saveProvider,\n listProviders,\n getProvider,\n deleteProvider,\n getDataDirectory,\n setDataDirectory,\n migrateDataDirectory,\n listIndices,\n partialUpdateObjectsFromDirectory,\n createBatchesFromFile,\n browseObjectsToFile,\n describeImage,\n saveMenuItemForApplication,\n listMenuItemsForApplication,\n pluginInstall,\n searchIndex,\n exportDashboardConfig,\n selectDashboardFile,\n importDashboardConfig,\n installDashboardFromRegistry,\n checkCompatibility,\n prepareDashboardForPublish,\n getDashboardPreview,\n checkDashboardUpdatesForApp,\n getProviderSetupManifest,\n getDashboardPublishPreview,\n saveDashboardRating,\n getDashboardRating,\n listDashboardRatings,\n deleteDashboardRating,\n enrichPackagesWithRatings,\n initiateDeviceFlow,\n pollForToken,\n getRegistryToken,\n getRegistryAuthStatus,\n getRegistryProfile,\n updateRegistryProfile,\n getRegistryPackages,\n updateRegistryPackage,\n clearRegistryToken,\n publishToRegistry,\n getRegistryUrl,\n getRecentDashboards,\n addRecentDashboard,\n clearRecentDashboards,\n getSessionState,\n saveSessionState,\n clearSessionState,\n notificationController,\n prepareThemeForPublish,\n installThemeFromRegistry,\n getThemePublishPreview,\n};\n","const { ipcRenderer } = require(\"electron\");\nconst {\n SECURE_STORE_ENCRYPTION_CHECK,\n SECURE_STORE_SET_DATA,\n SECURE_STORE_GET_DATA,\n} = require(\"../events\");\n/**\n * secureStoreApi\n * - for Apple, keychain methods\n */\nconst secureStoreApi = {\n isEncryptionAvailable: () =>\n ipcRenderer.invoke(SECURE_STORE_ENCRYPTION_CHECK, {}),\n saveData: (key, value) =>\n ipcRenderer.invoke(SECURE_STORE_SET_DATA, { key, value }),\n getData: (key) => ipcRenderer.invoke(SECURE_STORE_GET_DATA, { key }),\n};\n\nmodule.exports = secureStoreApi;\n","/**\n * workspaceApi.js\n *\n * Handle the workspace configuration file\n */\nconst { ipcRenderer } = require(\"electron\");\nconst {\n WORKSPACE_LIST,\n WORKSPACE_SAVE,\n WORKSPACE_DELETE,\n} = require(\"../events\");\n\nconst workspaceApi = {\n /**\n * listWorkspacesForApplication\n * read the workspaces.json file in the app config directory\n * on the local user's machine and return the list of workspaces (dashboards)\n *\n * @param {String} appId the appId specified in the dash initialization\n */\n listWorkspacesForApplication: (appId) => {\n console.log(\"listWorkspacesForApplication called with appId:\", appId);\n return ipcRenderer.invoke(WORKSPACE_LIST, { appId });\n },\n\n /**\n * saveWorkspaceForApplication\n * Save the new workspace to the workspaces.json config file\n * @param {String} appId\n * @param {Object} data\n * @returns\n */\n saveWorkspaceForApplication: (appId, data) =>\n ipcRenderer.invoke(WORKSPACE_SAVE, { appId, data }),\n\n /**\n * deleteWorkspaceForApplication\n * Delete a workspace from the workspaces.json config file\n * @param {String} appId\n * @param {String} workspaceId\n * @returns\n */\n deleteWorkspaceForApplication: (appId, workspaceId) =>\n ipcRenderer.invoke(WORKSPACE_DELETE, { appId, workspaceId }),\n};\n\nmodule.exports = workspaceApi;\n","/**\n * layoutApi.js\n *\n * Handle the layout configuration file\n */\n// ipcRenderer that must be used to invoke the events\nconst { ipcRenderer } = require(\"electron\");\n\nconst { LAYOUT_LIST, LAYOUT_SAVE } = require(\"../events\");\n\nconst layoutApi = {\n listLayoutsForApplication: (appId) =>\n ipcRenderer.invoke(LAYOUT_LIST, { appId }),\n saveLayoutForApplication: (appId, data) =>\n ipcRenderer.invoke(LAYOUT_SAVE, { appId, data }),\n};\n\nmodule.exports = layoutApi;\n","/**\n * dataApi.js\n *\n * Handle the data configuration file\n */\n// ipcRenderer that must be used to invoke the events\nconst { ipcRenderer } = require(\"electron\");\n\nconst {\n DATA_JSON_TO_CSV_FILE,\n DATA_JSON_TO_CSV_STRING,\n DATA_READ_FROM_FILE,\n DATA_SAVE_TO_FILE,\n PARSE_XML_STREAM,\n PARSE_CSV_STREAM,\n READ_LINES,\n TRANSFORM_FILE,\n READ_JSON,\n READ_DATA_URL,\n EXTRACT_COLORS_FROM_IMAGE,\n} = require(\"../events\");\n\nconst dataApi = {\n // convert a json array of objects to a csv string and save to file\n convertJsonToCsvFile: (appId, jsonObject, filename) =>\n ipcRenderer.invoke(DATA_JSON_TO_CSV_FILE, {\n appId,\n jsonObject,\n filename,\n }),\n\n // convert a json array of objects to a csv string and return a string\n convertJsonToCsvString: (appId, jsonObject) =>\n ipcRenderer.invoke(DATA_JSON_TO_CSV_STRING, { appId, jsonObject }),\n\n parseXMLStream: (filepath, outpath, start) =>\n ipcRenderer.invoke(PARSE_XML_STREAM, {\n filepath,\n outpath,\n start,\n }),\n\n parseCSVStream: (\n filepath,\n outpath,\n delimiter = \",\",\n objectIdKey = null,\n headers = null,\n limit = null,\n ) => {\n ipcRenderer.invoke(PARSE_CSV_STREAM, {\n filepath,\n outpath,\n delimiter,\n objectIdKey,\n headers,\n limit,\n });\n },\n\n readLinesFromFile: (filepath, lineCount) => {\n ipcRenderer.invoke(READ_LINES, { filepath, lineCount });\n },\n\n readJSONFromFile: (filepath, objectCount = null) => {\n ipcRenderer.invoke(READ_JSON, { filepath, objectCount });\n },\n\n readDataFromURL: (url, toFilepath) => {\n ipcRenderer.invoke(READ_DATA_URL, { url, toFilepath });\n },\n\n /*\n * saveData\n * @param {object} options { filename, extension }\n * @param {object} returnEmpty the return empty object\n */\n saveData: (data, filename, append, returnEmpty, uuid) =>\n ipcRenderer.invoke(DATA_SAVE_TO_FILE, {\n data,\n filename,\n append,\n returnEmpty,\n }),\n\n /*\n * readData\n * @param {string} filename the filename to read (not path)\n */\n readData: (filename, returnEmpty = []) =>\n ipcRenderer.invoke(DATA_READ_FROM_FILE, { filename, returnEmpty }),\n\n /**\n * transformFile\n * @returns\n */\n transformFile: (filepath, outFilepath, mappingFunctionBody, args) => {\n ipcRenderer.invoke(TRANSFORM_FILE, {\n filepath,\n outFilepath,\n mappingFunctionBody,\n args,\n });\n },\n\n extractColorsFromImageURL: (url) => {\n ipcRenderer.invoke(EXTRACT_COLORS_FROM_IMAGE, {\n url,\n });\n },\n};\n\nmodule.exports = dataApi;\n","/**\n * settingsApi.js\n *\n * Handle the settings configuration file\n */\n// ipcRenderer that must be used to invoke the events\nconst { ipcRenderer } = require(\"electron\");\n\nconst {\n SETTINGS_GET,\n SETTINGS_SAVE,\n SETTINGS_GET_DATA_DIR,\n SETTINGS_SET_DATA_DIR,\n SETTINGS_MIGRATE_DATA_DIR,\n} = require(\"../events\");\n\nconst settingsApi = {\n getSettingsForApplication: () => ipcRenderer.invoke(SETTINGS_GET, {}),\n saveSettingsForApplication: (data) =>\n ipcRenderer.invoke(SETTINGS_SAVE, { data }),\n getDataDirectory: () => ipcRenderer.invoke(SETTINGS_GET_DATA_DIR, {}),\n setDataDirectory: (dataDirectory) =>\n ipcRenderer.invoke(SETTINGS_SET_DATA_DIR, { dataDirectory }),\n migrateDataDirectory: (oldDirectory, newDirectory) =>\n ipcRenderer.invoke(SETTINGS_MIGRATE_DATA_DIR, {\n oldDirectory,\n newDirectory,\n }),\n};\n\nmodule.exports = settingsApi;\n","/**\n * layoutApi.js\n *\n * Handle the layout configuration file\n */\n// ipcRenderer that must be used to invoke the events\nconst { ipcRenderer } = require(\"electron\");\n\nconst { CHOOSE_FILE } = require(\"../events\");\n\nconst dialogApi = {\n /**\n * chooseFile\n * @param {*} allowFile if false, will allow only directory selection\n * @param {*} extensions the file extensions allowed\n */\n chooseFile: (allowFile = true, extensions = [\"*\"]) => {\n console.log(\"dialog api choose file\");\n return ipcRenderer.invoke(CHOOSE_FILE, { allowFile, extensions });\n },\n};\n\nmodule.exports = dialogApi;\n","/**\n * widgetApi.js\n *\n * Frontend API for widget management\n * Provides methods to list, install, uninstall, and manage widgets\n *\n * Usage:\n * mainApi.widgets.list()\n * mainApi.widgets.install('Weather', 'https://github.com/user/weather-widget/releases/download/v1.0.0/weather.zip')\n * mainApi.widgets.installLocal('Weather', '/path/to/widget.zip')\n * mainApi.widgets.uninstall('Weather')\n */\n\nconst { ipcRenderer } = require(\"electron\");\n\nconst widgetApi = {\n /**\n * List all installed widgets\n * @returns {Promise<Array>} Array of widget configurations\n */\n list: async () => {\n try {\n return await ipcRenderer.invoke(\"widget:list\");\n } catch (error) {\n console.error(\"[WidgetApi] Error listing widgets:\", error);\n throw error;\n }\n },\n\n /**\n * Get a specific widget by name\n * @param {string} widgetName - Name of the widget\n * @returns {Promise<Object|null>} Widget configuration or null if not found\n */\n get: async (widgetName) => {\n try {\n return await ipcRenderer.invoke(\"widget:get\", widgetName);\n } catch (error) {\n console.error(`[WidgetApi] Error getting widget ${widgetName}:`, error);\n throw error;\n }\n },\n\n /**\n * Install a widget from a remote URL\n * Supports full URLs, template URLs with {version} and {name}, and partial URLs\n *\n * @param {string} widgetName - Name of the widget (e.g., \"Weather\")\n * @param {string} downloadUrl - Download URL (full, template, or partial)\n * @param {string} dashConfigUrl - Optional: URL to dash.json metadata\n * @returns {Promise<Object>} Widget configuration\n *\n * @example\n * // Full URL\n * await mainApi.widgets.install('Weather', 'https://github.com/user/weather-widget/releases/download/v1.0.0/weather.zip')\n *\n * // Template URL\n * await mainApi.widgets.install('Weather', 'https://github.com/user/weather-widget/releases/download/v{version}/{name}.zip')\n *\n * // Partial URL (auto-appends v{version}/{name}.zip)\n * await mainApi.widgets.install('Weather', 'https://github.com/user/weather-widget/releases/download/')\n */\n install: async (widgetName, downloadUrl, dashConfigUrl = null) => {\n try {\n console.log(\n `[WidgetApi] Installing widget: ${widgetName} from ${downloadUrl}`,\n );\n const config = await ipcRenderer.invoke(\n \"widget:install\",\n widgetName,\n downloadUrl,\n dashConfigUrl,\n );\n console.log(`[WidgetApi] ✓ Widget ${widgetName} installed`);\n return config;\n } catch (error) {\n console.error(\n `[WidgetApi] Error installing widget ${widgetName}:`,\n error,\n );\n throw error;\n }\n },\n\n /**\n * Install a widget from a local ZIP file or folder\n *\n * @param {string} widgetName - Name of the widget\n * @param {string} localPath - Path to ZIP file or widget folder\n * @param {string} dashConfigPath - Optional: path to dash.json metadata\n * @returns {Promise<Object>} Widget configuration\n *\n * @example\n * // Install from ZIP\n * await mainApi.widgets.installLocal('Weather', '/Users/me/Downloads/weather-widget.zip')\n *\n * // Install from folder\n * await mainApi.widgets.installLocal('Weather', '/Users/me/CustomWidgets/weather')\n *\n * // Install from file:// URL\n * await mainApi.widgets.installLocal('Weather', 'file:///Users/me/weather-widget.zip')\n */\n installLocal: async (widgetName, localPath, dashConfigPath = null) => {\n try {\n console.log(\n `[WidgetApi] Installing local widget: ${widgetName} from ${localPath}`,\n );\n const config = await ipcRenderer.invoke(\n \"widget:install-local\",\n widgetName,\n localPath,\n dashConfigPath,\n );\n console.log(`[WidgetApi] ✓ Local widget ${widgetName} installed`);\n return config;\n } catch (error) {\n console.error(\n `[WidgetApi] Error installing local widget ${widgetName}:`,\n error,\n );\n throw error;\n }\n },\n\n /**\n * Load multiple widgets from a folder\n * Each subfolder is treated as a separate widget\n *\n * @param {string} folderPath - Path to folder containing widget subdirectories\n * @returns {Promise<Array>} Array of loaded widget configurations\n *\n * @example\n * // Load all widgets from a folder\n * await mainApi.widgets.loadFolder('/Users/me/CustomWidgets')\n */\n loadFolder: async (folderPath) => {\n try {\n console.log(`[WidgetApi] Loading widgets from folder: ${folderPath}`);\n const results = await ipcRenderer.invoke(\n \"widget:load-folder\",\n folderPath,\n );\n console.log(`[WidgetApi] ✓ Loaded ${results.length} widgets from folder`);\n return results;\n } catch (error) {\n console.error(`[WidgetApi] Error loading widgets from folder:`, error);\n throw error;\n }\n },\n\n /**\n * Uninstall a widget\n *\n * @param {string} widgetName - Name of the widget to uninstall\n * @returns {Promise<boolean>} True if successfully uninstalled, false otherwise\n *\n * @example\n * await mainApi.widgets.uninstall('Weather')\n */\n uninstall: async (widgetName) => {\n try {\n console.log(`[WidgetApi] Uninstalling widget: ${widgetName}`);\n const success = await ipcRenderer.invoke(\"widget:uninstall\", widgetName);\n if (success) {\n console.log(`[WidgetApi] ✓ Widget ${widgetName} uninstalled`);\n } else {\n console.warn(`[WidgetApi] Widget ${widgetName} not found`);\n }\n return success;\n } catch (error) {\n console.error(\n `[WidgetApi] Error uninstalling widget ${widgetName}:`,\n error,\n );\n throw error;\n }\n },\n\n /**\n * Get the cache directory path where widgets are stored\n *\n * @returns {Promise<string>} Path to widgets cache directory\n */\n getCachePath: async () => {\n try {\n return await ipcRenderer.invoke(\"widget:cache-path\");\n } catch (error) {\n console.error(\"[WidgetApi] Error getting cache path:\", error);\n throw error;\n }\n },\n\n /**\n * Get the storage directory path (parent of widgets directory)\n *\n * @returns {Promise<string>} Path to storage directory\n */\n getStoragePath: async () => {\n try {\n return await ipcRenderer.invoke(\"widget:storage-path\");\n } catch (error) {\n console.error(\"[WidgetApi] Error getting storage path:\", error);\n throw error;\n }\n },\n\n /**\n * Set a custom storage path for widgets\n * Call this to move widget storage to a different location\n *\n * @param {string} customPath - Custom path for storing widgets\n * @returns {Promise<Object>} { success: boolean, path: string, error?: string }\n */\n setStoragePath: async (customPath) => {\n try {\n console.log(`[WidgetApi] Setting storage path to: ${customPath}`);\n const result = await ipcRenderer.invoke(\n \"widget:set-storage-path\",\n customPath,\n );\n if (result.success) {\n console.log(`[WidgetApi] ✓ Storage path changed to: ${customPath}`);\n }\n return result;\n } catch (error) {\n console.error(\"[WidgetApi] Error setting storage path:\", error);\n throw error;\n }\n },\n\n /**\n * Get parsed .dash.js component configs for all installed widgets\n * Returns an array of { componentName, widgetPackage, config } objects\n *\n * @returns {Promise<Array>} Array of component configurations\n */\n getComponentConfigs: async () => {\n try {\n return await ipcRenderer.invoke(\"widget:get-component-configs\");\n } catch (error) {\n console.error(\"[WidgetApi] Error getting component configs:\", error);\n return [];\n }\n },\n\n /**\n * Read the CJS bundle source for a single installed widget\n *\n * @param {string} widgetName - Name of the widget\n * @returns {Promise<Object>} { success, source, widgetName } or { success: false, error }\n */\n readBundle: async (widgetName) => {\n try {\n return await ipcRenderer.invoke(\"widget:read-bundle\", widgetName);\n } catch (error) {\n console.error(\n `[WidgetApi] Error reading bundle for ${widgetName}:`,\n error,\n );\n return { success: false, error: error.message };\n }\n },\n\n /**\n * Read CJS bundle sources for all installed widgets\n *\n * @returns {Promise<Array>} Array of { widgetName, source }\n */\n readAllBundles: async () => {\n try {\n return await ipcRenderer.invoke(\"widget:read-all-bundles\");\n } catch (error) {\n console.error(\"[WidgetApi] Error reading all bundles:\", error);\n return [];\n }\n },\n\n /**\n * Listen for widget installation events\n * Useful for updating UI when new widgets are installed\n *\n * @param {Function} callback - Function called when widget is installed\n *\n * @example\n * mainApi.widgets.onInstalled(({ widgetName, config }) => {\n * console.log(`Widget ${widgetName} was installed!`);\n * // Refresh widget list in UI\n * });\n */\n onInstalled: (callback) => {\n ipcRenderer.on(\"widget:installed\", (event, data) => {\n callback(data);\n });\n },\n\n /**\n * Listen for batch widget loading events\n * Useful for updating UI when multiple widgets are loaded at once\n *\n * @param {Function} callback - Function called when widgets are loaded\n *\n * @example\n * mainApi.widgets.onLoaded(({ count, widgets }) => {\n * console.log(`${count} widgets were loaded!`);\n * // Refresh widget list in UI\n * });\n */\n onLoaded: (callback) => {\n ipcRenderer.on(\"widgets:loaded\", (event, data) => {\n callback(data);\n });\n },\n\n /**\n * Remove listener for widget installation events\n *\n * @param {Function} callback - The callback to remove\n */\n removeInstalledListener: (callback) => {\n ipcRenderer.removeListener(\"widget:installed\", callback);\n },\n\n /**\n * Remove listener for batch widget loading events\n *\n * @param {Function} callback - The callback to remove\n */\n removeLoadedListener: (callback) => {\n ipcRenderer.removeListener(\"widgets:loaded\", callback);\n },\n};\n\nmodule.exports = widgetApi;\n","/**\n * providerApi.js\n *\n * Handle provider (credentials) management - save, load, list providers\n * Communicates with main process via IPC to handle encryption and file storage\n */\nconst { ipcRenderer } = require(\"electron\");\nconst {\n PROVIDER_SAVE,\n PROVIDER_LIST,\n PROVIDER_GET,\n PROVIDER_DELETE,\n} = require(\"../events\");\n\nconst providerApi = {\n /**\n * saveProvider\n * Save a new provider with encrypted credentials to providers.json\n * Promise-based version\n *\n * @param {String} appId - the appId specified in the dash initialization\n * @param {String} providerName - user-defined name (e.g., \"Algolia Production\")\n * @param {String} providerType - provider type (e.g., \"algolia\", \"slack\")\n * @param {Object} credentials - credentials object (shape depends on provider type)\n * @param {String} providerClass - \"credential\" (default) or \"mcp\"\n * @param {Object} mcpConfig - MCP server config (only for providerClass \"mcp\")\n * @param {String[]|null} allowedTools - optional list of allowed tool names (MCP only)\n * @returns {Promise}\n */\n saveProvider: (\n appId,\n providerName,\n providerType,\n credentials,\n providerClass = \"credential\",\n mcpConfig = null,\n allowedTools = null,\n ) =>\n ipcRenderer.invoke(PROVIDER_SAVE, {\n appId,\n providerName,\n providerType,\n credentials,\n providerClass,\n mcpConfig,\n allowedTools,\n }),\n\n /**\n * listProviders\n * Get list of all available providers with decrypted credentials\n * Promise-based version\n *\n * @param {String} appId - the appId specified in the dash initialization\n * @returns {Promise<Array>} Array of provider objects with name, type, credentials\n */\n listProviders: (appId) => ipcRenderer.invoke(PROVIDER_LIST, { appId }),\n\n /**\n * getProvider\n * Get a specific provider by name with decrypted credentials\n * Promise-based version\n *\n * @param {String} appId - the appId specified in the dash initialization\n * @param {String} providerName - the provider name to retrieve\n * @returns {Promise<Object>} Provider object with name, type, credentials\n */\n getProvider: (appId, providerName) =>\n ipcRenderer.invoke(PROVIDER_GET, { appId, providerName }),\n\n /**\n * deleteProvider\n * Delete a provider from providers.json\n * Promise-based version\n *\n * @param {String} appId - the appId specified in the dash initialization\n * @param {String} providerName - the provider name to delete\n * @returns {Promise}\n */\n deleteProvider: (appId, providerName) =>\n ipcRenderer.invoke(PROVIDER_DELETE, { appId, providerName }),\n\n /**\n * listProvidersForApplication\n * Get list of all available providers with decrypted credentials\n * Event-listener-based version for use with ElectronDashboardApi\n *\n * @param {String} appId - the appId specified in the dash initialization\n */\n listProvidersForApplication: (appId) => {\n ipcRenderer\n .invoke(PROVIDER_LIST, { appId })\n .then((result) => {\n // Emit the event for ElectronDashboardApi to listen to\n ipcRenderer.send(\"PROVIDER_LIST_COMPLETE\", result);\n })\n .catch((error) => {\n ipcRenderer.send(\"PROVIDER_LIST_ERROR\", {\n error: error.message,\n });\n });\n },\n\n /**\n * saveProviderForApplication\n * Save a new provider with encrypted credentials to providers.json\n * Event-listener-based version for use with ElectronDashboardApi\n */\n saveProviderForApplication: (\n appId,\n providerName,\n providerType,\n credentials,\n ) => {\n ipcRenderer\n .invoke(PROVIDER_SAVE, {\n appId,\n providerName,\n providerType,\n credentials,\n })\n .then((result) => {\n ipcRenderer.send(\"PROVIDER_SAVE_COMPLETE\", result);\n })\n .catch((error) => {\n ipcRenderer.send(\"PROVIDER_SAVE_ERROR\", {\n error: error.message,\n });\n });\n },\n\n /**\n * getProviderForApplication\n * Get a specific provider by name with decrypted credentials\n * Event-listener-based version for use with ElectronDashboardApi\n */\n getProviderForApplication: (appId, providerName) => {\n ipcRenderer\n .invoke(PROVIDER_GET, { appId, providerName })\n .then((result) => {\n ipcRenderer.send(\"PROVIDER_GET_COMPLETE\", result);\n })\n .catch((error) => {\n ipcRenderer.send(\"PROVIDER_GET_ERROR\", {\n error: error.message,\n });\n });\n },\n\n /**\n * deleteProviderForApplication\n * Delete a provider from providers.json\n * Event-listener-based version for use with ElectronDashboardApi\n */\n deleteProviderForApplication: (appId, providerName) => {\n ipcRenderer\n .invoke(PROVIDER_DELETE, { appId, providerName })\n .then((result) => {\n ipcRenderer.send(\"PROVIDER_DELETE_COMPLETE\", result);\n })\n .catch((error) => {\n ipcRenderer.send(\"PROVIDER_DELETE_ERROR\", {\n error: error.message,\n });\n });\n },\n};\n\nmodule.exports = providerApi;\n","/**\n * mcpApi.js\n *\n * Preload bridge for MCP (Model Context Protocol) server operations.\n * Communicates with main process via IPC to manage MCP server lifecycle.\n */\nconst { ipcRenderer } = require(\"electron\");\nconst {\n MCP_START_SERVER,\n MCP_STOP_SERVER,\n MCP_LIST_TOOLS,\n MCP_CALL_TOOL,\n MCP_LIST_RESOURCES,\n MCP_READ_RESOURCE,\n MCP_SERVER_STATUS,\n MCP_GET_CATALOG,\n MCP_RUN_AUTH,\n} = require(\"../events\");\n\nconst mcpApi = {\n /**\n * startServer\n * Start an MCP server with the given config and credentials\n *\n * @param {string} serverName unique name for this server instance\n * @param {object} mcpConfig { transport, command, args, envMapping }\n * @param {object} credentials decrypted credentials object\n * @returns {Promise<{ success, serverName, tools, status } | { error, message }>}\n */\n startServer: (serverName, mcpConfig, credentials) =>\n ipcRenderer.invoke(MCP_START_SERVER, {\n serverName,\n mcpConfig,\n credentials,\n }),\n\n /**\n * stopServer\n * Stop a running MCP server\n *\n * @param {string} serverName the server to stop\n * @returns {Promise<{ success, serverName } | { error, message }>}\n */\n stopServer: (serverName) =>\n ipcRenderer.invoke(MCP_STOP_SERVER, { serverName }),\n\n /**\n * listTools\n * List available tools for a running MCP server\n *\n * @param {string} serverName the server name\n * @returns {Promise<{ tools } | { error, message }>}\n */\n listTools: (serverName) => ipcRenderer.invoke(MCP_LIST_TOOLS, { serverName }),\n\n /**\n * callTool\n * Call a tool on a running MCP server\n *\n * @param {string} serverName the server name\n * @param {string} toolName the tool to call\n * @param {object} args tool arguments\n * @param {Array<string>} allowedTools optional whitelist of allowed tool names\n * @returns {Promise<{ result } | { error, message }>}\n */\n callTool: (serverName, toolName, args, allowedTools = null) =>\n ipcRenderer.invoke(MCP_CALL_TOOL, {\n serverName,\n toolName,\n args,\n allowedTools,\n }),\n\n /**\n * listResources\n * List available resources for a running MCP server\n *\n * @param {string} serverName the server name\n * @returns {Promise<{ resources } | { error, message }>}\n */\n listResources: (serverName) =>\n ipcRenderer.invoke(MCP_LIST_RESOURCES, { serverName }),\n\n /**\n * readResource\n * Read a specific resource from a running MCP server\n *\n * @param {string} serverName the server name\n * @param {string} uri the resource URI\n * @returns {Promise<{ resource } | { error, message }>}\n */\n readResource: (serverName, uri) =>\n ipcRenderer.invoke(MCP_READ_RESOURCE, { serverName, uri }),\n\n /**\n * getServerStatus\n * Get the connection status of a server\n *\n * @param {string} serverName the server name\n * @returns {Promise<{ status, tools, error }>}\n */\n getServerStatus: (serverName) =>\n ipcRenderer.invoke(MCP_SERVER_STATUS, { serverName }),\n\n /**\n * getCatalog\n * Load the MCP server seed catalog\n *\n * @returns {Promise<{ catalog } | { error, message }>}\n */\n getCatalog: () => ipcRenderer.invoke(MCP_GET_CATALOG),\n\n /**\n * runAuth\n * Run a one-shot auth command for an MCP server (e.g., OAuth browser flow)\n *\n * @param {object} mcpConfig { transport, command, args, envMapping }\n * @param {object} credentials decrypted credentials object\n * @param {object} authCommand { command, args }\n * @returns {Promise<{ success } | { error, message }>}\n */\n runAuth: (mcpConfig, credentials, authCommand) =>\n ipcRenderer.invoke(MCP_RUN_AUTH, { mcpConfig, credentials, authCommand }),\n};\n\nmodule.exports = mcpApi;\n","/**\n * registryApi.js\n *\n * Frontend API for the widget registry/marketplace.\n * Wraps IPC calls to the registryController in the main process.\n *\n * Usage:\n * mainApi.registry.search(\"weather\")\n * mainApi.registry.getPackage(\"weather-widgets\")\n * mainApi.registry.fetchIndex(true)\n * mainApi.registry.checkUpdates([{ name: \"weather-widgets\", version: \"1.0.0\" }])\n */\n\nconst { ipcRenderer } = require(\"electron\");\n\nconst registryApi = {\n /**\n * Fetch the registry index (uses cache with 5-min TTL)\n * @param {boolean} forceRefresh - Force a fresh fetch bypassing cache\n * @returns {Promise<Object>} The registry index\n */\n fetchIndex: async (forceRefresh = false) => {\n try {\n return await ipcRenderer.invoke(\"registry:fetch-index\", forceRefresh);\n } catch (error) {\n console.error(\"[RegistryApi] Error fetching index:\", error);\n throw error;\n }\n },\n\n /**\n * Search the registry for packages and widgets\n * @param {string} query - Search query\n * @param {Object} filters - Optional filters { category, author, tag }\n * @returns {Promise<Object>} { packages: [...], totalWidgets: number }\n */\n search: async (query = \"\", filters = {}) => {\n try {\n return await ipcRenderer.invoke(\"registry:search\", query, filters);\n } catch (error) {\n console.error(\"[RegistryApi] Error searching registry:\", error);\n throw error;\n }\n },\n\n /**\n * Get a specific package by name\n * @param {string} packageName - Name of the package\n * @returns {Promise<Object|null>} Package data or null\n */\n getPackage: async (packageName) => {\n try {\n return await ipcRenderer.invoke(\"registry:get-package\", packageName);\n } catch (error) {\n console.error(\n `[RegistryApi] Error getting package ${packageName}:`,\n error,\n );\n throw error;\n }\n },\n\n /**\n * Check for updates to installed widgets\n * @param {Array<Object>} installedWidgets - Array of { name, version }\n * @returns {Promise<Array<Object>>} Widgets with available updates\n */\n checkUpdates: async (installedWidgets = []) => {\n try {\n return await ipcRenderer.invoke(\n \"registry:check-updates\",\n installedWidgets,\n );\n } catch (error) {\n console.error(\"[RegistryApi] Error checking updates:\", error);\n throw error;\n }\n },\n\n /**\n * Search the registry for dashboard packages only\n * @param {string} query - Search query\n * @param {Object} filters - Optional filters { category, author, tag, compatibleWidgets }\n * @returns {Promise<Object>} { packages: [...], totalWidgets: number }\n */\n searchDashboards: async (query = \"\", filters = {}) => {\n try {\n return await ipcRenderer.invoke(\n \"registry:search-dashboards\",\n query,\n filters,\n );\n } catch (error) {\n console.error(\"[RegistryApi] Error searching dashboards:\", error);\n throw error;\n }\n },\n\n /**\n * Search the registry for theme packages only\n * @param {string} query - Search query\n * @param {Object} filters - Optional filters { category, author, tag }\n * @returns {Promise<Object>} { packages: [...], totalWidgets: number }\n */\n searchThemes: async (query = \"\", filters = {}) => {\n try {\n return await ipcRenderer.invoke(\n \"registry:search-themes\",\n query,\n filters,\n );\n } catch (error) {\n console.error(\"[RegistryApi] Error searching themes:\", error);\n throw error;\n }\n },\n};\n\nmodule.exports = registryApi;\n","/**\n * themeApi.js\n *\n * Handle the theme configuration file\n */\n\nconst { ipcRenderer } = require(\"electron\");\n\nconst {\n THEME_LIST,\n THEME_SAVE,\n THEME_DELETE,\n THEME_PUBLISH,\n THEME_INSTALL_FROM_REGISTRY,\n THEME_PUBLISH_PREVIEW,\n} = require(\"../events\");\n\nconst themeApi = {\n listThemesForApplication: (appId) =>\n ipcRenderer.invoke(THEME_LIST, { appId }),\n saveThemeForApplication: (appId, themeName, themeObject) =>\n ipcRenderer.invoke(THEME_SAVE, { appId, themeName, themeObject }),\n deleteThemeForApplication: (appId, themeKey) =>\n ipcRenderer.invoke(THEME_DELETE, { appId, themeKey }),\n publishTheme: (appId, themeKey, options) =>\n ipcRenderer.invoke(THEME_PUBLISH, { appId, themeKey, options }),\n installThemeFromRegistry: (appId, packageName) =>\n ipcRenderer.invoke(THEME_INSTALL_FROM_REGISTRY, { appId, packageName }),\n getThemePublishPreview: (appId, themeKey) =>\n ipcRenderer.invoke(THEME_PUBLISH_PREVIEW, { appId, themeKey }),\n};\n\nmodule.exports = themeApi;\n","/**\n * algoliaApi.js\n *\n * This is a stub sample that can be used as a template for other api's\n */\n// ipcRenderer that must be used to invoke the events\nconst { ipcRenderer } = require(\"electron\");\n\nconst {\n ALGOLIA_LIST_INDICES,\n ALGOLIA_ANALYTICS_FOR_QUERY,\n ALGOLIA_SAVE_SYNONYMS,\n ALGOLIA_PARTIAL_UPDATE_OBJECTS,\n ALGOLIA_CREATE_BATCH,\n ALGOLIA_BROWSE_OBJECTS,\n ALGOLIA_SEARCH,\n} = require(\"../events\");\n\nconst algoliaApi = {\n listIndices: (application) =>\n ipcRenderer.invoke(ALGOLIA_LIST_INDICES, application),\n\n browseObjects: (appId, apiKey, indexName) => {\n ipcRenderer.invoke(ALGOLIA_BROWSE_OBJECTS, {\n appId,\n apiKey,\n indexName,\n dir,\n });\n },\n\n saveSynonyms: () => ipcRenderer.invoke(ALGOLIA_SAVE_SYNONYMS, {}),\n\n getAnalyticsForQuery: (application, indexName, query) =>\n ipcRenderer.invoke(ALGOLIA_ANALYTICS_FOR_QUERY, {\n application,\n indexName,\n query,\n }),\n\n partialUpdateObjectsFromDirectory: (\n appId,\n apiKey,\n indexName,\n dir,\n createIfNotExists = false,\n ) =>\n ipcRenderer.invoke(ALGOLIA_PARTIAL_UPDATE_OBJECTS, {\n appId,\n apiKey,\n indexName,\n dir,\n createIfNotExists,\n }),\n\n createBatchesFromFile: (filepath, batchFilepath, batchSize) => {\n ipcRenderer.invoke(ALGOLIA_CREATE_BATCH, {\n filepath,\n batchFilepath,\n batchSize,\n });\n },\n\n browseObjectsToFile: (appId, apiKey, indexName, toFilename, query = \"\") => {\n ipcRenderer.invoke(ALGOLIA_BROWSE_OBJECTS, {\n appId,\n apiKey,\n indexName,\n toFilename,\n query,\n });\n },\n\n search: (appId, apiKey, indexName, query = \"\", options = {}) =>\n ipcRenderer.invoke(ALGOLIA_SEARCH, {\n appId,\n apiKey,\n indexName,\n query,\n options,\n }),\n};\n\nmodule.exports = algoliaApi;\n","/**\n * openAI\n */\n\nconst { ipcRenderer } = require(\"electron\");\n\nconst { OPENAI_DESCRIBE_IMAGE } = require(\"../events/openaiEvents\");\n\nconst openaiApi = {\n // convert a json array of objects to a csv string and save to file\n describeImage: (imageUrl, apiKey, prompt = \"What's in this image?\") =>\n ipcRenderer.invoke(OPENAI_DESCRIBE_IMAGE, { imageUrl, apiKey, prompt }),\n};\n\nmodule.exports = openaiApi;\n","/**\n * menuItemsApi.js\n *\n */\n// ipcRenderer that must be used to invoke the events\nconst { ipcRenderer } = require(\"electron\");\n\nconst { MENU_ITEMS_SAVE, MENU_ITEMS_LIST } = require(\"../events\");\n\nconst menuItemsApi = {\n saveMenuItem: (appId, menuItem) =>\n ipcRenderer.invoke(MENU_ITEMS_SAVE, { appId, menuItem }),\n listMenuItems: (appId) => ipcRenderer.invoke(MENU_ITEMS_LIST, { appId }),\n};\n\nmodule.exports = menuItemsApi;\n","/**\n * pluginApi.js\n *\n * Plugin management API for the renderer process.\n */\n// ipcRenderer that must be used to invoke the events\nconst { ipcRenderer } = require(\"electron\");\n\nconst pluginApi = {\n install: (packageName, filepath) =>\n ipcRenderer.invoke(\"plugin-install\", { packageName, filepath }),\n uninstall: (filepath) => ipcRenderer.invoke(\"plugin-uninstall\", filepath),\n};\n\nmodule.exports = pluginApi;\n","/**\n * llmApi.js\n *\n * Preload bridge for LLM chat operations.\n * Communicates with main process via IPC for streaming chat,\n * tool-use events, and request cancellation.\n */\nconst { ipcRenderer } = require(\"electron\");\nconst {\n LLM_SEND_MESSAGE,\n LLM_ABORT_REQUEST,\n LLM_LIST_CONNECTED_TOOLS,\n LLM_CHECK_CLI_AVAILABLE,\n LLM_CLEAR_CLI_SESSION,\n LLM_CLI_SESSION_STATUS,\n LLM_CLI_END_SESSION,\n LLM_STREAM_DELTA,\n LLM_STREAM_TOOL_CALL,\n LLM_STREAM_TOOL_RESULT,\n LLM_STREAM_COMPLETE,\n LLM_STREAM_ERROR,\n} = require(\"../events/llmEvents\");\n\nlet _nextListenerId = 0;\nconst _listenerMap = new Map();\n\nfunction _addListener(channel, callback) {\n const id = String(++_nextListenerId);\n const wrapped = (_event, data) => callback(data);\n ipcRenderer.on(channel, wrapped);\n _listenerMap.set(id, { channel, wrapped });\n return id;\n}\n\nconst llmApi = {\n /**\n * sendMessage\n * Start a streaming LLM request with optional tool-use.\n *\n * @param {string} requestId - unique ID for filtering stream events\n * @param {object} params - { apiKey, model, messages, tools, toolServerMap, systemPrompt, maxToolRounds }\n * @returns {Promise<void>}\n */\n sendMessage: (requestId, params) =>\n ipcRenderer.invoke(LLM_SEND_MESSAGE, { requestId, ...params }),\n\n /**\n * abortRequest\n * Cancel an in-flight LLM request.\n *\n * @param {string} requestId - the request to cancel\n * @returns {Promise<{ success: boolean }>}\n */\n abortRequest: (requestId) =>\n ipcRenderer.invoke(LLM_ABORT_REQUEST, { requestId }),\n\n /**\n * listConnectedTools\n * Get all tools from all connected MCP servers.\n *\n * @returns {Promise<Array<{ serverName, tools, resources, status }>>}\n */\n listConnectedTools: () => ipcRenderer.invoke(LLM_LIST_CONNECTED_TOOLS),\n\n /**\n * checkCliAvailable\n * Check if the Claude Code CLI is installed and accessible.\n *\n * @returns {Promise<{ available: boolean, path?: string }>}\n */\n checkCliAvailable: () => ipcRenderer.invoke(LLM_CHECK_CLI_AVAILABLE),\n\n /**\n * clearCliSession\n * Clear the CLI conversation session for a widget (for \"New Chat\").\n *\n * @param {string} widgetUuid - the widget whose session to clear\n * @returns {Promise<{ success: boolean }>}\n */\n clearCliSession: (widgetUuid) =>\n ipcRenderer.invoke(LLM_CLEAR_CLI_SESSION, { widgetUuid }),\n\n /**\n * getCliSessionStatus\n * Check if a CLI session is active for a widget.\n *\n * @param {string} widgetUuid - the widget to check\n * @returns {Promise<{ hasSession: boolean, sessionId?: string, isProcessActive: boolean }>}\n */\n getCliSessionStatus: (widgetUuid) =>\n ipcRenderer.invoke(LLM_CLI_SESSION_STATUS, { widgetUuid }),\n\n /**\n * endCliSession\n * Kill any active CLI process AND clear the session for a widget.\n *\n * @param {string} widgetUuid - the widget whose session to end\n * @returns {Promise<{ success: boolean }>}\n */\n endCliSession: (widgetUuid) =>\n ipcRenderer.invoke(LLM_CLI_END_SESSION, { widgetUuid }),\n\n // --- Stream event listeners ---\n // Each on* method returns an opaque string ID. Strings cross the\n // contextBridge safely (unlike function refs which get proxied).\n // Use removeStreamListener(id) to clean up.\n\n /** @returns {string} listener ID */\n onStreamDelta: (callback) => _addListener(LLM_STREAM_DELTA, callback),\n\n /** @returns {string} listener ID */\n onStreamToolCall: (callback) => _addListener(LLM_STREAM_TOOL_CALL, callback),\n\n /** @returns {string} listener ID */\n onStreamToolResult: (callback) =>\n _addListener(LLM_STREAM_TOOL_RESULT, callback),\n\n /** @returns {string} listener ID */\n onStreamComplete: (callback) => _addListener(LLM_STREAM_COMPLETE, callback),\n\n /** @returns {string} listener ID */\n onStreamError: (callback) => _addListener(LLM_STREAM_ERROR, callback),\n\n /**\n * removeStreamListener\n * Remove a specific stream listener by its opaque ID.\n *\n * @param {string} idOrChannel - listener ID (or legacy channel name when second arg is provided)\n * @param {string} [id] - listener ID when called with legacy (channel, id) signature\n */\n removeStreamListener: (idOrChannel, id) => {\n const listenerId = id !== undefined ? String(id) : String(idOrChannel);\n const entry = _listenerMap.get(listenerId);\n if (entry) {\n ipcRenderer.removeListener(entry.channel, entry.wrapped);\n _listenerMap.delete(listenerId);\n }\n },\n\n /**\n * removeAllStreamListeners\n * Clean up ALL LLM stream listeners (global).\n * Prefer removeStreamListener for scoped cleanup.\n */\n removeAllStreamListeners: () => {\n for (const [, entry] of _listenerMap) {\n ipcRenderer.removeListener(entry.channel, entry.wrapped);\n }\n _listenerMap.clear();\n ipcRenderer.removeAllListeners(LLM_STREAM_DELTA);\n ipcRenderer.removeAllListeners(LLM_STREAM_TOOL_CALL);\n ipcRenderer.removeAllListeners(LLM_STREAM_TOOL_RESULT);\n ipcRenderer.removeAllListeners(LLM_STREAM_COMPLETE);\n ipcRenderer.removeAllListeners(LLM_STREAM_ERROR);\n },\n};\n\nmodule.exports = llmApi;\n","/**\n * clientCacheApi.js\n *\n * Renderer-side API for cache management.\n * Communicates with main process via IPC to invalidate cached clients\n * and manage the response cache.\n */\nconst { ipcRenderer } = require(\"electron\");\nconst {\n CLIENT_CACHE_INVALIDATE,\n CLIENT_CACHE_INVALIDATE_ALL,\n RESPONSE_CACHE_CLEAR,\n RESPONSE_CACHE_STATS,\n} = require(\"../events\");\n\nconst clientCacheApi = {\n /**\n * Invalidate a specific cached client by provider identity.\n *\n * @param {string} appId - the application id\n * @param {string} providerName - the provider name to invalidate\n * @returns {Promise<{success: boolean}>}\n */\n invalidate: (appId, providerName) =>\n ipcRenderer.invoke(CLIENT_CACHE_INVALIDATE, { appId, providerName }),\n\n /**\n * Invalidate all cached clients.\n *\n * @returns {Promise<{success: boolean}>}\n */\n invalidateAll: () => ipcRenderer.invoke(CLIENT_CACHE_INVALIDATE_ALL),\n\n /**\n * Clear the response cache.\n *\n * @returns {Promise<{success: boolean}>}\n */\n clearResponseCache: () => ipcRenderer.invoke(RESPONSE_CACHE_CLEAR),\n\n /**\n * Get response cache statistics.\n *\n * @returns {Promise<{entries: number, inflight: number, keys: string[]}>}\n */\n responseCacheStats: () => ipcRenderer.invoke(RESPONSE_CACHE_STATS),\n};\n\nmodule.exports = clientCacheApi;\n","/**\n * dashboardConfigApi.js\n *\n * IPC bridge for dashboard config export/import (renderer side).\n * Exposed via contextBridge through mainApi.\n */\nconst { ipcRenderer } = require(\"electron\");\nconst {\n DASHBOARD_CONFIG_EXPORT,\n DASHBOARD_CONFIG_SELECT_FILE,\n DASHBOARD_CONFIG_IMPORT,\n DASHBOARD_CONFIG_INSTALL,\n DASHBOARD_CONFIG_COMPATIBILITY,\n DASHBOARD_CONFIG_PUBLISH,\n DASHBOARD_CONFIG_PREVIEW,\n DASHBOARD_CONFIG_CHECK_UPDATES,\n DASHBOARD_CONFIG_PROVIDER_SETUP,\n DASHBOARD_CONFIG_PUBLISH_PREVIEW,\n} = require(\"../events\");\n\nconst dashboardConfigApi = {\n /**\n * Export a workspace as a dashboard config ZIP file.\n *\n * @param {string} appId - Application identifier\n * @param {number|string} workspaceId - ID of the workspace to export\n * @param {Object} options - Export options (authorName, authorId, description, tags, icon)\n * @returns {Promise<Object>} Result with success, filePath, and config\n */\n exportDashboardConfig: (appId, workspaceId, options = {}) =>\n ipcRenderer.invoke(DASHBOARD_CONFIG_EXPORT, {\n appId,\n workspaceId,\n options,\n }),\n\n /**\n * Select and preview a dashboard ZIP file without importing it.\n * Opens the file picker, validates the config, and returns a preview\n * with the file path for later import.\n *\n * @returns {Promise<Object>} Result with success, filePath, and dashboardConfig preview\n */\n selectDashboardFile: () => ipcRenderer.invoke(DASHBOARD_CONFIG_SELECT_FILE),\n\n /**\n * Import a dashboard config from a ZIP file.\n * Shows a file picker (or uses options.filePath), validates the config,\n * installs missing widgets, creates the workspace, and applies event wiring.\n *\n * @param {string} appId - Application identifier\n * @param {Object} options - Import options (filePath, name, menuId, themeKey)\n * @returns {Promise<Object>} Result with success, workspace, and summary\n */\n importDashboardConfig: (appId, options = {}) =>\n ipcRenderer.invoke(DASHBOARD_CONFIG_IMPORT, { appId, ...options }),\n\n /**\n * Install a dashboard from the registry by package name.\n * Fetches the dashboard ZIP, validates config, installs widgets,\n * creates workspace, and applies event wiring.\n *\n * @param {string} appId - Application identifier\n * @param {string} packageName - Registry package name\n * @returns {Promise<Object>} Result with success, workspace, and summary\n */\n installDashboardFromRegistry: (appId, packageName) =>\n ipcRenderer.invoke(DASHBOARD_CONFIG_INSTALL, {\n appId,\n packageName,\n }),\n\n /**\n * Check compatibility of a dashboard config against installed widgets.\n *\n * @param {string} appId - Application identifier\n * @param {Array} dashboardWidgets - Widget dependencies from dashboard config\n * @returns {Promise<Object>} Compatibility report with per-widget status\n */\n checkDashboardCompatibility: (appId, dashboardWidgets) =>\n ipcRenderer.invoke(DASHBOARD_CONFIG_COMPATIBILITY, {\n appId,\n dashboardWidgets,\n }),\n\n /**\n * Prepare a dashboard for publishing to the registry.\n * Validates shareable status, checks widgets exist in registry,\n * generates manifest, and saves a publish-ready ZIP.\n *\n * @param {string} appId - Application identifier\n * @param {number|string} workspaceId - Workspace to publish\n * @param {Object} options - Publishing options (authorName, authorId, description, tags, icon, githubUser, category)\n * @returns {Promise<Object>} Result with success, manifest, filePath\n */\n prepareDashboardForPublish: (appId, workspaceId, options = {}) =>\n ipcRenderer.invoke(DASHBOARD_CONFIG_PUBLISH, {\n appId,\n workspaceId,\n options,\n }),\n\n /**\n * Get a preview of a dashboard package from the registry.\n * Returns structured preview data and compatibility report.\n *\n * @param {string} packageName - Registry package name\n * @returns {Promise<Object>} Preview with metadata, widgets, wiring, compatibility\n */\n getDashboardPreview: (packageName) =>\n ipcRenderer.invoke(DASHBOARD_CONFIG_PREVIEW, { packageName }),\n\n /**\n * Check installed dashboards for available updates.\n *\n * @param {string} appId - Application identifier\n * @returns {Promise<Object>} Result with updates array\n */\n checkDashboardUpdates: (appId) =>\n ipcRenderer.invoke(DASHBOARD_CONFIG_CHECK_UPDATES, { appId }),\n\n /**\n * Get provider setup manifest for a dashboard's requirements.\n *\n * @param {string} appId - Application identifier\n * @param {Array} requiredProviders - Provider requirements from dashboard config\n * @returns {Promise<Object>} Setup manifest with per-provider status\n */\n getProviderSetupManifest: (appId, requiredProviders) =>\n ipcRenderer.invoke(DASHBOARD_CONFIG_PROVIDER_SETUP, {\n appId,\n requiredProviders,\n }),\n\n /**\n * Get a publish preview for a dashboard workspace.\n * Returns widget names and package info without creating a ZIP or uploading.\n *\n * @param {string} appId - Application identifier\n * @param {number|string} workspaceId - Workspace to preview\n * @returns {Promise<Object>} Preview with dashboardName, widgetCount, widgets, componentNames\n */\n getPublishPreview: (appId, workspaceId) =>\n ipcRenderer.invoke(DASHBOARD_CONFIG_PUBLISH_PREVIEW, {\n appId,\n workspaceId,\n }),\n};\n\nmodule.exports = dashboardConfigApi;\n","/**\n * registryAuthApi.js\n *\n * IPC bridge for registry authentication (renderer side).\n * Exposed via contextBridge through mainApi.\n */\nconst { ipcRenderer } = require(\"electron\");\nconst {\n REGISTRY_AUTH_INITIATE_LOGIN,\n REGISTRY_AUTH_POLL_TOKEN,\n REGISTRY_AUTH_GET_STATUS,\n REGISTRY_AUTH_GET_PROFILE,\n REGISTRY_AUTH_LOGOUT,\n REGISTRY_AUTH_PUBLISH,\n REGISTRY_AUTH_UPDATE_PROFILE,\n REGISTRY_AUTH_GET_PACKAGES,\n REGISTRY_AUTH_UPDATE_PACKAGE,\n REGISTRY_AUTH_DELETE_PACKAGE,\n} = require(\"../events\");\n\nconst registryAuthApi = {\n /**\n * Initiate the device code flow for registry login.\n * Returns device code, user code, and verification URL.\n *\n * @returns {Promise<Object>} { deviceCode, userCode, verificationUrl, verificationUrlComplete, expiresIn, interval }\n */\n initiateLogin: () => ipcRenderer.invoke(REGISTRY_AUTH_INITIATE_LOGIN),\n\n /**\n * Poll for token after user completes browser auth.\n *\n * @param {string} deviceCode - Device code from initiateLogin\n * @returns {Promise<Object>} { status: 'pending' | 'authorized' | 'expired', token?, userId? }\n */\n pollToken: (deviceCode) =>\n ipcRenderer.invoke(REGISTRY_AUTH_POLL_TOKEN, { deviceCode }),\n\n /**\n * Get current auth status.\n *\n * @returns {Promise<Object>} { authenticated: boolean, userId?: string }\n */\n getStatus: () => ipcRenderer.invoke(REGISTRY_AUTH_GET_STATUS),\n\n /**\n * Get the authenticated user's registry profile.\n *\n * @returns {Promise<Object|null>} User profile or null\n */\n getProfile: () => ipcRenderer.invoke(REGISTRY_AUTH_GET_PROFILE),\n\n /**\n * Logout from registry.\n */\n logout: () => ipcRenderer.invoke(REGISTRY_AUTH_LOGOUT),\n\n /**\n * Publish a ZIP to the registry.\n *\n * @param {string} zipPath - Path to the ZIP file\n * @param {Object} manifest - Package manifest\n * @returns {Promise<Object>} { success, registryUrl, packageId, version, error? }\n */\n publish: (zipPath, manifest) =>\n ipcRenderer.invoke(REGISTRY_AUTH_PUBLISH, { zipPath, manifest }),\n\n /**\n * Update the authenticated user's profile.\n *\n * @param {Object} updates - Fields to update (e.g. { displayName })\n * @returns {Promise<Object|null>} Updated user or null\n */\n updateProfile: (updates) =>\n ipcRenderer.invoke(REGISTRY_AUTH_UPDATE_PROFILE, updates),\n\n /**\n * Get the authenticated user's published packages.\n *\n * @returns {Promise<Object|null>} { packages: [...] } or null\n */\n getPackages: () => ipcRenderer.invoke(REGISTRY_AUTH_GET_PACKAGES),\n\n /**\n * Update a published package's metadata.\n *\n * @param {string} scope - Package scope\n * @param {string} name - Package name\n * @param {Object} updates - Fields to update\n * @returns {Promise<Object|null>} Updated package or null\n */\n updatePackage: (scope, name, updates) =>\n ipcRenderer.invoke(REGISTRY_AUTH_UPDATE_PACKAGE, {\n scope,\n name,\n updates,\n }),\n\n /**\n * Delete a published package.\n *\n * @param {string} scope - Package scope\n * @param {string} name - Package name\n * @returns {Promise<Object|null>} Response or null\n */\n deletePackage: (scope, name) =>\n ipcRenderer.invoke(REGISTRY_AUTH_DELETE_PACKAGE, { scope, name }),\n};\n\nmodule.exports = registryAuthApi;\n","/**\n * notificationApi.js\n *\n * Preload-side IPC bindings for the notification system.\n * Exposed to the renderer via mainApi.notifications.\n */\nconst { ipcRenderer } = require(\"electron\");\nconst {\n NOTIFICATION_SEND,\n NOTIFICATION_GET_PREFERENCES,\n NOTIFICATION_SET_PREFERENCES,\n NOTIFICATION_SET_GLOBAL,\n} = require(\"../events\");\n\nconst notificationApi = {\n /**\n * Send a notification to the OS.\n *\n * @param {Object} payload - { widgetName, widgetId, workspaceId, type, title, body, data?, silent?, urgency? }\n * @returns {Promise<{ success: boolean, reason?: string }>}\n */\n send: (payload) => ipcRenderer.invoke(NOTIFICATION_SEND, payload),\n\n /**\n * Get all notification preferences (global + per-instance).\n *\n * @returns {Promise<{ globalEnabled: boolean, doNotDisturb: boolean, instances: Object }>}\n */\n getPreferences: () => ipcRenderer.invoke(NOTIFICATION_GET_PREFERENCES),\n\n /**\n * Set per-widget-instance notification preferences.\n *\n * @param {string} widgetId - widget instance UUID\n * @param {Object} prefs - { [notificationType]: boolean }\n * @returns {Promise<{ success: boolean }>}\n */\n setPreferences: (widgetId, prefs) =>\n ipcRenderer.invoke(NOTIFICATION_SET_PREFERENCES, { widgetId, prefs }),\n\n /**\n * Set global notification settings (enabled, DND).\n *\n * @param {Object} settings - { globalEnabled?: boolean, doNotDisturb?: boolean }\n * @returns {Promise<{ success: boolean }>}\n */\n setGlobal: (settings) =>\n ipcRenderer.invoke(NOTIFICATION_SET_GLOBAL, settings),\n\n /**\n * Listen for notification click events from the main process.\n *\n * @param {Function} callback - ({ widgetName, widgetId, workspaceId, type, data }) => void\n * @returns {Function} removeListener function\n */\n onClicked: (callback) => {\n const handler = (_event, data) => callback(data);\n ipcRenderer.on(\"notification:clicked\", handler);\n return () => ipcRenderer.removeListener(\"notification:clicked\", handler);\n },\n\n /**\n * Listen for Do Not Disturb state changes (e.g. toggled from macOS menu).\n *\n * @param {Function} callback - (dndEnabled: boolean) => void\n * @returns {Function} removeListener function\n */\n onDndChanged: (callback) => {\n const handler = (_event, dndEnabled) => callback(dndEnabled);\n ipcRenderer.on(\"notification:dnd-changed\", handler);\n return () =>\n ipcRenderer.removeListener(\"notification:dnd-changed\", handler);\n },\n};\n\nmodule.exports = notificationApi;\n","/**\n * dashboardRatingsApi.js\n *\n * IPC bridge for dashboard ratings (renderer side).\n */\nconst { ipcRenderer } = require(\"electron\");\nconst {\n DASHBOARD_RATING_SAVE,\n DASHBOARD_RATING_GET,\n DASHBOARD_RATING_LIST,\n DASHBOARD_RATING_DELETE,\n} = require(\"../events\");\n\nconst dashboardRatingsApi = {\n saveDashboardRating: (appId, packageName, rating) =>\n ipcRenderer.invoke(DASHBOARD_RATING_SAVE, {\n appId,\n packageName,\n rating,\n }),\n\n getDashboardRating: (appId, packageName) =>\n ipcRenderer.invoke(DASHBOARD_RATING_GET, { appId, packageName }),\n\n listDashboardRatings: (appId) =>\n ipcRenderer.invoke(DASHBOARD_RATING_LIST, { appId }),\n\n deleteDashboardRating: (appId, packageName) =>\n ipcRenderer.invoke(DASHBOARD_RATING_DELETE, { appId, packageName }),\n};\n\nmodule.exports = dashboardRatingsApi;\n","/**\n * sessionApi.js\n *\n * IPC bridge for session management (renderer side).\n * Exposed via contextBridge through mainApi.\n */\nconst { ipcRenderer } = require(\"electron\");\nconst {\n SESSION_GET_RECENTS,\n SESSION_ADD_RECENT,\n SESSION_CLEAR_RECENTS,\n SESSION_GET_STATE,\n SESSION_SAVE_STATE,\n SESSION_CLEAR_STATE,\n} = require(\"../events\");\n\nconst sessionApi = {\n /**\n * Get recently opened dashboards.\n *\n * @returns {Promise<Array<{ workspaceId: string, name: string, openedAt: string }>>}\n */\n getRecents: () => ipcRenderer.invoke(SESSION_GET_RECENTS),\n\n /**\n * Add a recent dashboard entry.\n *\n * @param {string} workspaceId\n * @param {string} name\n * @returns {Promise<Array>} Updated recents list\n */\n addRecent: (workspaceId, name) =>\n ipcRenderer.invoke(SESSION_ADD_RECENT, { workspaceId, name }),\n\n /**\n * Clear all recent dashboards.\n */\n clearRecents: () => ipcRenderer.invoke(SESSION_CLEAR_RECENTS),\n\n /**\n * Get saved session state.\n *\n * @returns {Promise<{ openTabIds: string[], activeTabId: string | null } | null>}\n */\n getState: () => ipcRenderer.invoke(SESSION_GET_STATE),\n\n /**\n * Save session state.\n *\n * @param {string[]} openTabIds\n * @param {string|null} activeTabId\n */\n saveState: (openTabIds, activeTabId) =>\n ipcRenderer.invoke(SESSION_SAVE_STATE, { openTabIds, activeTabId }),\n\n /**\n * Clear saved session state.\n */\n clearState: () => ipcRenderer.invoke(SESSION_CLEAR_STATE),\n};\n\nmodule.exports = sessionApi;\n","/**\n * mainApi.js\n *\n * Factory for creating the main API object exposed to the renderer via contextBridge.\n * All APIs are included by default. Additional template-specific APIs\n * can be added via the extensions parameter.\n *\n * Usage in template's preload.js:\n *\n * const { defaultMainApi } = require(\"@trops/dash-core/electron\");\n * contextBridge.exposeInMainWorld(\"mainApi\", defaultMainApi);\n */\nconst { ipcRenderer, shell } = require(\"electron\");\nconst secureStoreApi = require(\"./secureStoreApi\");\nconst workspaceApi = require(\"./workspaceApi\");\nconst layoutApi = require(\"./layoutApi\");\nconst dataApi = require(\"./dataApi\");\nconst settingsApi = require(\"./settingsApi\");\nconst dialogApi = require(\"./dialogApi\");\nconst widgetApi = require(\"./widgetApi\");\nconst providerApi = require(\"./providerApi\");\nconst mcpApi = require(\"./mcpApi\");\nconst registryApi = require(\"./registryApi\");\nconst themeApi = require(\"./themeApi\");\nconst algoliaApi = require(\"./algoliaApi\");\nconst openaiApi = require(\"./openaiApi\");\nconst menuItemsApi = require(\"./menuItemsApi\");\nconst pluginApi = require(\"./pluginApi\");\nconst llmApi = require(\"./llmApi\");\nconst clientCacheApi = require(\"./clientCacheApi\");\nconst dashboardConfigApi = require(\"./dashboardConfigApi\");\nconst dashboardRatingsApi = require(\"./dashboardRatingsApi\");\nconst registryAuthApi = require(\"./registryAuthApi\");\nconst sessionApi = require(\"./sessionApi\");\nconst notificationApi = require(\"./notificationApi\");\n\n// Events constants\nconst events = require(\"../events\");\n\n/**\n * Create the main API object with core APIs and optional extensions.\n *\n * @param {Object} extensions - Additional API namespaces to merge (e.g., { algolia: algoliaApi })\n * @returns {Object} The complete mainApi object\n */\nfunction createMainApi(extensions = {}) {\n const mainApi = {\n // the main application identifier to STORE the data in the application folder.\n appId: null,\n\n setAppId: (appId) => {\n console.log(\"setting appId in the api \", appId);\n mainApi.appId = appId;\n },\n\n // keep these for general use\n on: (event, fn) => {\n ipcRenderer.addListener(event, fn);\n },\n removeAllListeners: (name = null) => {\n // can remove all listeners for event\n if (name) ipcRenderer.removeAllListeners(name);\n },\n removeListener: (name, fn) => ipcRenderer.removeListener(name, fn),\n\n // Core APIs\n secureStoreApi: secureStoreApi,\n workspace: workspaceApi,\n layout: layoutApi,\n themes: themeApi,\n data: { appId: null, ...dataApi },\n settings: settingsApi,\n dialog: dialogApi,\n widgets: widgetApi,\n providers: providerApi,\n mcp: mcpApi,\n registry: registryApi,\n\n shell: {\n openPath: (path) => shell.openPath(path),\n openExternal: (url) => {\n if (\n typeof url === \"string\" &&\n (url.startsWith(\"http://\") || url.startsWith(\"https://\"))\n ) {\n return shell.openExternal(url);\n }\n },\n },\n\n // included these in the bridge\n events: { ...events },\n\n publicEvents: events.public,\n\n pathPlugins: \"\",\n\n // LLM\n llm: llmApi,\n\n // APIs previously in template\n algolia: algoliaApi,\n openai: openaiApi,\n menuItems: menuItemsApi,\n plugins: pluginApi,\n clientCache: clientCacheApi,\n dashboardConfig: dashboardConfigApi,\n dashboardRatings: dashboardRatingsApi,\n registryAuth: registryAuthApi,\n session: sessionApi,\n notifications: notificationApi,\n\n widgetEvent: {\n publish: (eventType, content) => {\n ipcRenderer.send(\"widget-event:publish\", { eventType, content });\n },\n },\n\n // Merge template-specific extensions\n ...extensions,\n };\n\n return mainApi;\n}\n\n/**\n * Default mainApi for simple migration — includes only core APIs.\n * Templates that don't need extensions can use this directly.\n */\nconst defaultMainApi = createMainApi();\n\nmodule.exports = { createMainApi, defaultMainApi };\n","/**\n * @trops/dash-core/electron\n *\n * Electron main process layer — controllers, IPC handlers, and widget pipeline.\n */\n\n// --- Controllers (namespaced) ---\nconst dialogController = require(\"./controller/dialogController\");\nconst secureStoreController = require(\"./controller/secureStoreController\");\nconst workspaceController = require(\"./controller/workspaceController\");\nconst themeController = require(\"./controller/themeController\");\nconst dataController = require(\"./controller/dataController\");\nconst settingsController = require(\"./controller/settingsController\");\nconst providerController = require(\"./controller/providerController\");\nconst layoutController = require(\"./controller/layoutController\");\nconst mcpController = require(\"./controller/mcpController\");\nconst registryController = require(\"./controller/registryController\");\nconst algoliaController = require(\"./controller/algoliaController\");\nconst openaiController = require(\"./controller/openaiController\");\nconst menuItemsController = require(\"./controller/menuItemsController\");\nconst pluginController = require(\"./controller/pluginController\");\nconst llmController = require(\"./controller/llmController\");\nconst cliController = require(\"./controller/cliController\");\nconst dashboardConfigController = require(\"./controller/dashboardConfigController\");\nconst registryAuthController = require(\"./controller/registryAuthController\");\nconst registryApiController = require(\"./controller/registryApiController\");\nconst notificationController = require(\"./controller/notificationController\");\nconst themeRegistryController = require(\"./controller/themeRegistryController\");\n\n// --- Utils ---\nconst clientCache = require(\"./utils/clientCache\");\nrequire(\"./utils/clientFactories\"); // auto-register built-in factories\nconst responseCache = require(\"./utils/responseCache\");\n\n// --- Controller functions (flat, for convenient destructuring) ---\nconst controllers = require(\"./controller\");\n\n// --- APIs (IPC handlers) ---\nconst secureStoreApi = require(\"./api/secureStoreApi\");\nconst workspaceApi = require(\"./api/workspaceApi\");\nconst layoutApi = require(\"./api/layoutApi\");\nconst dataApi = require(\"./api/dataApi\");\nconst settingsApi = require(\"./api/settingsApi\");\nconst dialogApi = require(\"./api/dialogApi\");\nconst widgetApi = require(\"./api/widgetApi\");\nconst providerApi = require(\"./api/providerApi\");\nconst mcpApi = require(\"./api/mcpApi\");\nconst registryApi = require(\"./api/registryApi\");\nconst themeApi = require(\"./api/themeApi\");\nconst algoliaApi = require(\"./api/algoliaApi\");\nconst openaiApi = require(\"./api/openaiApi\");\nconst menuItemsApi = require(\"./api/menuItemsApi\");\nconst pluginApi = require(\"./api/pluginApi\");\nconst llmApi = require(\"./api/llmApi\");\nconst clientCacheApi = require(\"./api/clientCacheApi\");\nconst dashboardConfigApi = require(\"./api/dashboardConfigApi\");\nconst registryAuthApi = require(\"./api/registryAuthApi\");\nconst notificationApi = require(\"./api/notificationApi\");\n\n// --- Events ---\nconst events = require(\"./events\");\n\n// --- Widget Pipeline ---\nconst widgetRegistry = require(\"./widgetRegistry\");\nconst widgetCompiler = require(\"./widgetCompiler\");\nconst dynamicWidgetLoader = require(\"./dynamicWidgetLoader\");\n\n// --- Schema ---\nconst dashboardConfigValidator = require(\"./schema/dashboardConfigValidator\");\nconst dashboardConfigUtils = require(\"./schema/dashboardConfigUtils\");\n\n// --- Factory: createMainApi ---\nconst { createMainApi, defaultMainApi } = require(\"./api/mainApi\");\n\nmodule.exports = {\n // Controllers (namespaced)\n dialogController,\n secureStoreController,\n workspaceController,\n themeController,\n dataController,\n settingsController,\n providerController,\n layoutController,\n mcpController,\n registryController,\n algoliaController,\n openaiController,\n menuItemsController,\n pluginController,\n llmController,\n cliController,\n dashboardConfigController,\n registryAuthController,\n registryApiController,\n notificationController,\n themeRegistryController,\n\n // Controller functions (flat) — spread for convenient destructuring\n ...controllers,\n\n // APIs\n secureStoreApi,\n workspaceApi,\n layoutApi,\n dataApi,\n settingsApi,\n dialogApi,\n widgetApi,\n providerApi,\n mcpApi,\n registryApi,\n themeApi,\n algoliaApi,\n openaiApi,\n menuItemsApi,\n pluginApi,\n llmApi,\n clientCacheApi,\n dashboardConfigApi,\n registryAuthApi,\n notificationApi,\n\n // Events\n events,\n\n // Widget Pipeline\n widgetRegistry,\n widgetCompiler,\n dynamicWidgetLoader,\n\n // Factory\n createMainApi,\n defaultMainApi,\n\n // Utils\n clientCache,\n responseCache,\n\n // Schema\n dashboardConfigValidator,\n dashboardConfigUtils,\n\n // Setup helpers\n setupCacheHandlers: clientCache.setupCacheHandlers.bind(clientCache),\n};\n"],"names":["SECURE_STORE_ENCRYPTION_CHECK","SECURE_STORE_GET_DATA","SECURE_STORE_SET_DATA","secureStorageEvents","WORKSPACE_LIST","WORKSPACE_SAVE","WORKSPACE_DELETE","workspaceEvents","LAYOUT_LIST","LAYOUT_SAVE","layoutEvents","THEME_LIST","THEME_SAVE","THEME_DELETE","THEME_PUBLISH","THEME_INSTALL_FROM_REGISTRY","THEME_PUBLISH_PREVIEW","themeEvents","DATA_JSON_TO_CSV_FILE","DATA_READ_FROM_FILE","DATA_SAVE_TO_FILE","DATA_JSON_TO_CSV_STRING","PARSE_XML_STREAM","PARSE_CSV_STREAM","READ_LINES","READ_JSON","READ_DATA_URL","TRANSFORM_FILE","EXTRACT_COLORS_FROM_IMAGE","dataEvents","SETTINGS_GET","SETTINGS_SAVE","SETTINGS_GET_DATA_DIR","SETTINGS_SET_DATA_DIR","SETTINGS_MIGRATE_DATA_DIR","settingsEvents","CHOOSE_FILE","dialogEvents","PROVIDER_SAVE","PROVIDER_LIST","PROVIDER_GET","PROVIDER_DELETE","providerEvents","MCP_START_SERVER","MCP_STOP_SERVER","MCP_LIST_TOOLS","MCP_CALL_TOOL","MCP_LIST_RESOURCES","MCP_READ_RESOURCE","MCP_SERVER_STATUS","MCP_GET_CATALOG","MCP_RUN_AUTH","mcpEvents","registryEvents","ALGOLIA_LIST_INDICES","ALGOLIA_ANALYTICS_FOR_QUERY","ALGOLIA_PARTIAL_UPDATE_OBJECTS","ALGOLIA_CREATE_BATCH","ALGOLIA_BROWSE_OBJECTS","ALGOLIA_SEARCH","algoliaEvents","MENU_ITEMS_SAVE","MENU_ITEMS_LIST","menuItemEvents","OPENAI_DESCRIBE_IMAGE","openaiEvents","LLM_SEND_MESSAGE","LLM_ABORT_REQUEST","LLM_LIST_CONNECTED_TOOLS","LLM_CHECK_CLI_AVAILABLE","LLM_CLEAR_CLI_SESSION","LLM_CLI_SESSION_STATUS","LLM_CLI_END_SESSION","LLM_STREAM_DELTA","LLM_STREAM_TOOL_CALL","LLM_STREAM_TOOL_RESULT","LLM_STREAM_COMPLETE","LLM_STREAM_ERROR","llmEvents","CLIENT_CACHE_INVALIDATE","CLIENT_CACHE_INVALIDATE_ALL","RESPONSE_CACHE_CLEAR","RESPONSE_CACHE_STATS","clientCacheEvents","DASHBOARD_CONFIG_EXPORT","DASHBOARD_CONFIG_IMPORT","DASHBOARD_CONFIG_INSTALL","DASHBOARD_CONFIG_COMPATIBILITY","DASHBOARD_CONFIG_PUBLISH","DASHBOARD_CONFIG_PREVIEW","DASHBOARD_CONFIG_CHECK_UPDATES","DASHBOARD_CONFIG_PROVIDER_SETUP","DASHBOARD_CONFIG_PUBLISH_PREVIEW","DASHBOARD_CONFIG_SELECT_FILE","dashboardConfigEvents","DASHBOARD_RATING_SAVE","DASHBOARD_RATING_GET","DASHBOARD_RATING_LIST","DASHBOARD_RATING_DELETE","dashboardRatingsEvents","REGISTRY_AUTH_INITIATE_LOGIN","REGISTRY_AUTH_POLL_TOKEN","REGISTRY_AUTH_GET_STATUS","REGISTRY_AUTH_GET_PROFILE","REGISTRY_AUTH_LOGOUT","REGISTRY_AUTH_PUBLISH","REGISTRY_AUTH_UPDATE_PROFILE","REGISTRY_AUTH_GET_PACKAGES","REGISTRY_AUTH_UPDATE_PACKAGE","REGISTRY_AUTH_DELETE_PACKAGE","registryAuthEvents","SESSION_GET_RECENTS","SESSION_ADD_RECENT","SESSION_CLEAR_RECENTS","SESSION_GET_STATE","SESSION_SAVE_STATE","SESSION_CLEAR_STATE","sessionEvents","NOTIFICATION_SEND","NOTIFICATION_GET_PREFERENCES","NOTIFICATION_SET_PREFERENCES","NOTIFICATION_SET_GLOBAL","notificationEvents","require$$0","require$$1","require$$2","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","events","dialog","showDialog","fileChosenError","dialogController","Store","schema","isEncryptionAvailable","saveData","getData","secureStoreController","path","writeFileSync","ensureDirectoryExistence","checkDirectory","getFileContents","writeToFile","app","configFilename","appName","workspaceController","themeController","fs","JSONStream","Transform","ntc","extractColors","extractColorsFromImageURL","dataController","settingsController","responseCache","layoutController","_shellPath","getShellPath","mcpController","mcpControllerModule","searchRegistry","getPackage","registryController","algoliasearch","AlgoliaIndex","algoliaController","openaiController","menuItemsController","pluginController","cliController","llmController","CURRENT_SCHEMA_VERSION","validateDashboardConfig","applyDefaults","dashboardConfigValidator","collectComponentNames","extractEventWiring","buildWidgetDependencies","buildProviderRequirements","applyEventWiringToLayout","TAILWIND_COLORS","toDisplayColor","dashboardConfigUtils","findWidgetsDir","widgetCompiler","dynamicWidgetLoader","dynamicWidgetLoaderModule","REGISTRY_BASE_URL","store","getStore","initiateDeviceFlow","pollForToken","getStoredToken","getAuthStatus","getRegistryProfile","updateRegistryProfile","getRegistryPackages","updateRegistryPackage","registryAuthController","publishToRegistry","getRegistryUrl","registryApiController","AdmZip","prepareThemeForPublish","installThemeFromRegistry","getThemePublishPreview","themeRegistryController","exportDashboardConfig","selectDashboardFile","importDashboardConfig","installDashboardFromRegistry","checkCompatibility","prepareDashboardForPublish","getDashboardPreview","checkDashboardUpdatesForApp","getProviderSetupManifest","getDashboardPublishPreview","dashboardConfigController","notificationController","clientCache","getRecentDashboards","addRecentDashboard","clearRecentDashboards","getSessionState","saveSessionState","clearSessionState","validateAndBuildRating","enrichWithRatings","saveDashboardRating","getDashboardRating","listDashboardRatings","deleteDashboardRating","enrichPackagesWithRatings","ipcRenderer","secureStoreApi","workspaceApi","layoutApi","dataApi","settingsApi","dialogApi","widgetApi","providerApi","mcpApi","registryApi","themeApi","algoliaApi","openaiApi","menuItemsApi","pluginApi","llmApi","clientCacheApi","dashboardConfigApi","registryAuthApi","notificationApi","dashboardRatingsApi","sessionApi","require$$20","require$$21","require$$22","require$$23","createMainApi","defaultMainApi","require$$24","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","require$$35","require$$36","require$$37","require$$38","require$$39","require$$40","require$$41","require$$42","require$$43","require$$44","require$$45","require$$46","require$$47","require$$48","require$$49","require$$50","require$$51"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAMA,+BAA6B,GAAG,iCAAiC,CAAA;AACvE,MAAM,sCAAsC;AAC5C,EAAE,0CAA0C,CAAA;AAC5C,MAAM,mCAAmC;AACzC,EAAE,uCAAuC,CAAA;;AAEzC,MAAM,6BAA6B,GAAG,+BAA+B,CAAA;AACrE,MAAM,sCAAsC;AAC5C,EAAE,wCAAwC,CAAA;AAC1C,MAAM,mCAAmC;AACzC,EAAE,qCAAqC,CAAA;;AAEvC,MAAMC,uBAAqB,GAAG,yBAAyB,CAAA;AACvD,MAAM,8BAA8B,GAAG,kCAAkC,CAAA;AACzE,MAAM,2BAA2B,GAAG,+BAA+B,CAAA;;AAEnE,MAAMC,uBAAqB,GAAG,yBAAyB,CAAA;AACvD,MAAM,8BAA8B,GAAG,kCAAkC,CAAA;AACzE,MAAM,2BAA2B,GAAG,+BAA+B,CAAA;;AAEnE,IAAAC,qBAAc,GAAG;AACjB,iCAAEH,+BAA6B;AAC/B,EAAE,sCAAsC;AACxC,EAAE,mCAAmC;AACrC,yBAAEE,uBAAqB;AACvB,EAAE,8BAA8B;AAChC,EAAE,2BAA2B;AAC7B,yBAAED,uBAAqB;AACvB,EAAE,8BAA8B;AAChC,EAAE,2BAA2B;AAC7B,EAAE,6BAA6B;AAC/B,EAAE,sCAAsC;AACxC,EAAE,mCAAmC;AACrC,CAAC;;;;;;;;AC5BD,MAAMG,gBAAc,GAAG,gBAAgB,CAAA;AACvC,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;;AAEnD,MAAMC,gBAAc,GAAG,gBAAgB,CAAA;AACvC,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;;AAEnD,MAAMC,kBAAgB,GAAG,kBAAkB,CAAA;AAC3C,MAAM,yBAAyB,GAAG,2BAA2B,CAAA;AAC7D,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;;AAEvD,IAAAC,iBAAc,GAAG;AACjB,kBAAEH,gBAAc;AAChB,EAAE,uBAAuB;AACzB,EAAE,oBAAoB;AACtB,kBAAEC,gBAAc;AAChB,EAAE,uBAAuB;AACzB,EAAE,oBAAoB;AACtB,oBAAEC,kBAAgB;AAClB,EAAE,yBAAyB;AAC3B,EAAE,sBAAsB;AACxB,CAAC;;;;;;;;ACtBD,MAAME,aAAW,GAAG,aAAa,CAAA;AACjC,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAM,iBAAiB,GAAG,mBAAmB,CAAA;;AAE7C,MAAMC,aAAW,GAAG,aAAa,CAAA;AACjC,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAM,iBAAiB,GAAG,mBAAmB,CAAA;;AAE7C,IAAAC,cAAc,GAAG;AACjB,eAAEF,aAAW;AACb,EAAE,oBAAoB;AACtB,EAAE,iBAAiB;AACnB,eAAEC,aAAW;AACb,EAAE,oBAAoB;AACtB,EAAE,iBAAiB;AACnB,CAAC;;;;;;;;ACfD,MAAME,YAAU,GAAG,YAAY,CAAA;AAC/B,MAAM,mBAAmB,GAAG,qBAAqB,CAAA;AACjD,MAAM,gBAAgB,GAAG,kBAAkB,CAAA;;AAE3C,MAAMC,YAAU,GAAG,YAAY,CAAA;AAC/B,MAAM,mBAAmB,GAAG,qBAAqB,CAAA;AACjD,MAAM,gBAAgB,GAAG,kBAAkB,CAAA;;AAE3C,MAAMC,cAAY,GAAG,cAAc,CAAA;AACnC,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAM,kBAAkB,GAAG,oBAAoB,CAAA;;AAE/C,MAAMC,eAAa,GAAG,eAAe,CAAA;AACrC,MAAMC,6BAA2B,GAAG,6BAA6B,CAAA;AACjE,MAAMC,uBAAqB,GAAG,uBAAuB,CAAA;;AAErD,IAAAC,aAAc,GAAG;AACjB,cAAEN,YAAU;AACZ,EAAE,mBAAmB;AACrB,EAAE,gBAAgB;AAClB,cAAEC,YAAU;AACZ,EAAE,mBAAmB;AACrB,EAAE,gBAAgB;AAClB,gBAAEC,cAAY;AACd,EAAE,qBAAqB;AACvB,EAAE,kBAAkB;AACpB,iBAAEC,eAAa;AACf,+BAAEC,6BAA2B;AAC7B,yBAAEC,uBAAqB;AACvB,CAAC;;AClCD,MAAME,uBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAM,8BAA8B,GAAG,gCAAgC,CAAA;AACvE,MAAM,2BAA2B,GAAG,6BAA6B,CAAA;;AAEjE,MAAMC,qBAAmB,GAAG,qBAAqB,CAAA;AACjD,MAAM,4BAA4B,GAAG,8BAA8B,CAAA;AACnE,MAAM,yBAAyB,GAAG,2BAA2B,CAAA;;AAE7D,MAAMC,mBAAiB,GAAG,mBAAmB,CAAA;AAC7C,MAAM,0BAA0B,GAAG,4BAA4B,CAAA;AAC/D,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;;AAEzD,MAAMC,yBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAM,gCAAgC,GAAG,kCAAkC,CAAA;AAC3E,MAAM,6BAA6B,GAAG,+BAA+B,CAAA;;AAErE,MAAMC,kBAAgB,GAAG,kBAAkB,CAAA;AAC3C,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAM,yBAAyB,GAAG,2BAA2B,CAAA;AAC7D,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;;AAEvD,MAAMC,kBAAgB,GAAG,kBAAkB,CAAA;AAC3C,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAM,yBAAyB,GAAG,2BAA2B,CAAA;AAC7D,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;;AAEvD,MAAMC,YAAU,GAAG,YAAY,CAAA;AAC/B,MAAM,iBAAiB,GAAG,mBAAmB,CAAA;AAC7C,MAAM,mBAAmB,GAAG,qBAAqB,CAAA;AACjD,MAAM,gBAAgB,GAAG,kBAAkB,CAAA;;AAE3C,MAAMC,WAAS,GAAG,WAAW,CAAA;AAC7B,MAAM,gBAAgB,GAAG,kBAAkB,CAAA;AAC3C,MAAM,kBAAkB,GAAG,oBAAoB,CAAA;AAC/C,MAAM,eAAe,GAAG,iBAAiB,CAAA;;AAEzC,MAAMC,eAAa,GAAG,eAAe,CAAA;AACrC,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;AACvD,MAAM,mBAAmB,GAAG,qBAAqB,CAAA;;AAEjD,MAAMC,gBAAc,GAAG,gBAAgB,CAAA;AACvC,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;;AAEnD,MAAMC,2BAAyB,GAAG,2BAA2B,CAAA;AAC7D,MAAM,gCAAgC,GAAG,kCAAkC,CAAA;AAC3E,MAAM,kCAAkC,GAAG,oCAAoC,CAAA;AAC/E,MAAM,+BAA+B,GAAG,iCAAiC,CAAA;;AAEzE,IAAAC,YAAc,GAAG;AACjB,yBAAEX,uBAAqB;AACvB,EAAE,8BAA8B;AAChC,EAAE,2BAA2B;;AAE7B,2BAAEG,yBAAuB;AACzB,EAAE,gCAAgC;AAClC,EAAE,6BAA6B;;AAE/B,qBAAED,mBAAiB;AACnB,EAAE,0BAA0B;AAC5B,EAAE,uBAAuB;;AAEzB,uBAAED,qBAAmB;AACrB,EAAE,4BAA4B;AAC9B,EAAE,yBAAyB;;AAE3B,oBAAEG,kBAAgB;AAClB,EAAE,yBAAyB;AAC3B,EAAE,uBAAuB;AACzB,EAAE,sBAAsB;;AAExB,oBAAEC,kBAAgB;AAClB,EAAE,yBAAyB;AAC3B,EAAE,uBAAuB;AACzB,EAAE,sBAAsB;;AAExB,cAAEC,YAAU;AACZ,EAAE,mBAAmB;AACrB,EAAE,iBAAiB;AACnB,EAAE,gBAAgB;;AAElB,aAAEC,WAAS;AACX,EAAE,kBAAkB;AACpB,EAAE,gBAAgB;AAClB,EAAE,eAAe;;AAEjB,iBAAEC,eAAa;AACf,EAAE,sBAAsB;AACxB,EAAE,oBAAoB;AACtB,EAAE,mBAAmB;;AAErB,kBAAEC,gBAAc;AAChB,EAAE,uBAAuB;AACzB,EAAE,qBAAqB;AACvB,EAAE,oBAAoB;;AAEtB,6BAAEC,2BAAyB;AAC3B,EAAE,kCAAkC;AACpC,EAAE,gCAAgC;AAClC,EAAE,+BAA+B;AACjC,CAAC;;ACtGD,MAAME,cAAY,GAAG,cAAc,CAAA;AACnC,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAM,kBAAkB,GAAG,oBAAoB,CAAA;;AAE/C,MAAMC,eAAa,GAAG,eAAe,CAAA;AACrC,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;AACvD,MAAM,mBAAmB,GAAG,qBAAqB,CAAA;;AAEjD,MAAMC,uBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAM,8BAA8B,GAAG,gCAAgC,CAAA;AACvE,MAAM,2BAA2B,GAAG,6BAA6B,CAAA;;AAEjE,MAAMC,uBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAM,8BAA8B,GAAG,gCAAgC,CAAA;AACvE,MAAM,2BAA2B,GAAG,6BAA6B,CAAA;;AAEjE,MAAMC,2BAAyB,GAAG,2BAA2B,CAAA;AAC7D,MAAM,kCAAkC,GAAG,oCAAoC,CAAA;AAC/E,MAAM,+BAA+B,GAAG,iCAAiC,CAAA;;AAEzE,IAAAC,gBAAc,GAAG;AACjB,gBAAEL,cAAY;AACd,EAAE,qBAAqB;AACvB,EAAE,kBAAkB;AACpB,iBAAEC,eAAa;AACf,EAAE,sBAAsB;AACxB,EAAE,mBAAmB;AACrB,yBAAEC,uBAAqB;AACvB,EAAE,8BAA8B;AAChC,EAAE,2BAA2B;AAC7B,yBAAEC,uBAAqB;AACvB,EAAE,8BAA8B;AAChC,EAAE,2BAA2B;AAC7B,6BAAEC,2BAAyB;AAC3B,EAAE,kCAAkC;AACpC,EAAE,+BAA+B;AACjC,CAAC;;ACpCD,MAAME,aAAW,GAAG,aAAa,CAAA;AACjC,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAM,iBAAiB,GAAG,mBAAmB,CAAA;;AAE7C,IAAAC,cAAc,GAAG;AACjB,eAAED,aAAW;AACb,EAAE,oBAAoB;AACtB,EAAE,iBAAiB;AACnB,CAAC;;;;;;;;ACHD,MAAME,eAAa,GAAG,eAAe,CAAA;AACrC,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;AACvD,MAAM,mBAAmB,GAAG,qBAAqB,CAAA;;AAEjD,MAAMC,eAAa,GAAG,eAAe,CAAA;AACrC,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;AACvD,MAAM,mBAAmB,GAAG,qBAAqB,CAAA;;AAEjD,MAAMC,cAAY,GAAG,cAAc,CAAA;AACnC,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAM,kBAAkB,GAAG,oBAAoB,CAAA;;AAE/C,MAAMC,iBAAe,GAAG,iBAAiB,CAAA;AACzC,MAAM,wBAAwB,GAAG,0BAA0B,CAAA;AAC3D,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;;AAErD,IAAAC,gBAAc,GAAG;AACjB,iBAAEJ,eAAa;AACf,EAAE,sBAAsB;AACxB,EAAE,mBAAmB;AACrB,iBAAEC,eAAa;AACf,EAAE,sBAAsB;AACxB,EAAE,mBAAmB;AACrB,gBAAEC,cAAY;AACd,EAAE,qBAAqB;AACvB,EAAE,kBAAkB;AACpB,mBAAEC,iBAAe;AACjB,EAAE,wBAAwB;AAC1B,EAAE,qBAAqB;AACvB,CAAC;;;;;;;;;AC5BD,MAAME,kBAAgB,GAAG,kBAAkB,CAAA;AAC3C,MAAM,yBAAyB,GAAG,2BAA2B,CAAA;AAC7D,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;;AAEvD,MAAMC,iBAAe,GAAG,iBAAiB,CAAA;AACzC,MAAM,wBAAwB,GAAG,0BAA0B,CAAA;AAC3D,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;;AAErD,MAAMC,gBAAc,GAAG,gBAAgB,CAAA;AACvC,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;;AAEnD,MAAMC,eAAa,GAAG,eAAe,CAAA;AACrC,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;AACvD,MAAM,mBAAmB,GAAG,qBAAqB,CAAA;;AAEjD,MAAMC,oBAAkB,GAAG,oBAAoB,CAAA;AAC/C,MAAM,2BAA2B,GAAG,6BAA6B,CAAA;AACjE,MAAM,wBAAwB,GAAG,0BAA0B,CAAA;;AAE3D,MAAMC,mBAAiB,GAAG,mBAAmB,CAAA;AAC7C,MAAM,0BAA0B,GAAG,4BAA4B,CAAA;AAC/D,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;;AAEzD,MAAMC,mBAAiB,GAAG,mBAAmB,CAAA;AAC7C,MAAM,0BAA0B,GAAG,4BAA4B,CAAA;AAC/D,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;;AAEzD,MAAMC,iBAAe,GAAG,iBAAiB,CAAA;AACzC,MAAM,wBAAwB,GAAG,0BAA0B,CAAA;AAC3D,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;;AAErD,MAAMC,cAAY,GAAG,cAAc,CAAA;AACnC,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAM,kBAAkB,GAAG,oBAAoB,CAAA;;AAE/C,IAAAC,WAAc,GAAG;AACjB,oBAAET,kBAAgB;AAClB,EAAE,yBAAyB;AAC3B,EAAE,sBAAsB;AACxB,mBAAEC,iBAAe;AACjB,EAAE,wBAAwB;AAC1B,EAAE,qBAAqB;AACvB,kBAAEC,gBAAc;AAChB,EAAE,uBAAuB;AACzB,EAAE,oBAAoB;AACtB,iBAAEC,eAAa;AACf,EAAE,sBAAsB;AACxB,EAAE,mBAAmB;AACrB,sBAAEC,oBAAkB;AACpB,EAAE,2BAA2B;AAC7B,EAAE,wBAAwB;AAC1B,qBAAEC,mBAAiB;AACnB,EAAE,0BAA0B;AAC5B,EAAE,uBAAuB;AACzB,qBAAEC,mBAAiB;AACnB,EAAE,0BAA0B;AAC5B,EAAE,uBAAuB;AACzB,mBAAEC,iBAAe;AACjB,EAAE,wBAAwB;AAC1B,EAAE,qBAAqB;AACvB,gBAAEC,cAAY;AACd,EAAE,qBAAqB;AACvB,EAAE,kBAAkB;AACpB,CAAC;;;;;;;;ACjED,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAM,eAAe,GAAG,iBAAiB,CAAA;AACzC,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;AACvD,MAAM,0BAA0B,GAAG,4BAA4B,CAAA;AAC/D,MAAM,sBAAsB,GAAG,wBAAwB,CAAA;;AAEvD,IAAAE,gBAAc,GAAG;AACjB,EAAE,oBAAoB;AACtB,EAAE,eAAe;AACjB,EAAE,oBAAoB;AACtB,EAAE,sBAAsB;AACxB,EAAE,0BAA0B;AAC5B,EAAE,sBAAsB;AACxB,CAAC;;;;;;;;ACdD,MAAMC,sBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAM,6BAA6B,GAAG,+BAA+B,CAAA;AACrE,MAAM,0BAA0B,GAAG,4BAA4B,CAAA;;AAE/D,MAAMC,6BAA2B,GAAG,6BAA6B,CAAA;AACjE,MAAM,oCAAoC;AAC1C,EAAE,sCAAsC,CAAA;AACxC,MAAM,iCAAiC,GAAG,mCAAmC,CAAA;;AAE7E,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAM,6BAA6B,GAAG,+BAA+B,CAAA;AACrE,MAAM,0BAA0B,GAAG,4BAA4B,CAAA;;AAE/D,MAAMC,gCAA8B,GAAG,gCAAgC,CAAA;AACvE,MAAM,uCAAuC;AAC7C,EAAE,yCAAyC,CAAA;AAC3C,MAAM,oCAAoC;AAC1C,EAAE,sCAAsC,CAAA;AACxC,MAAM,qCAAqC;AAC3C,EAAE,uCAAuC,CAAA;;AAEzC,MAAMC,sBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAM,6BAA6B,GAAG,+BAA+B,CAAA;AACrE,MAAM,2BAA2B,GAAG,6BAA6B,CAAA;AACjE,MAAM,0BAA0B,GAAG,4BAA4B,CAAA;;AAE/D,MAAMC,wBAAsB,GAAG,wBAAwB,CAAA;AACvD,MAAM,+BAA+B,GAAG,iCAAiC,CAAA;AACzE,MAAM,6BAA6B,GAAG,+BAA+B,CAAA;AACrE,MAAM,4BAA4B,GAAG,8BAA8B,CAAA;;AAEnE,MAAMC,gBAAc,GAAG,gBAAgB,CAAA;;AAEvC,IAAAC,eAAc,GAAG;AACjB,wBAAEN,sBAAoB;AACtB,EAAE,6BAA6B;AAC/B,EAAE,0BAA0B;AAC5B,+BAAEC,6BAA2B;AAC7B,EAAE,oCAAoC;AACtC,EAAE,iCAAiC;AACnC,EAAE,oBAAoB;AACtB,EAAE,6BAA6B;AAC/B,EAAE,0BAA0B;AAC5B,kCAAEC,gCAA8B;AAChC,EAAE,uCAAuC;AACzC,EAAE,oCAAoC;AACtC,EAAE,qCAAqC;AACvC,wBAAEC,sBAAoB;AACtB,EAAE,6BAA6B;AAC/B,EAAE,0BAA0B;AAC5B,EAAE,2BAA2B;AAC7B,0BAAEC,wBAAsB;AACxB,EAAE,+BAA+B;AACjC,EAAE,4BAA4B;AAC9B,EAAE,6BAA6B;AAC/B,kBAAEC,gBAAc;AAChB,CAAC;;AC7DD,MAAME,iBAAe,GAAG,iBAAiB,CAAA;AACzC,MAAM,wBAAwB,GAAG,0BAA0B,CAAA;AAC3D,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;;AAErD,MAAMC,iBAAe,GAAG,iBAAiB,CAAA;AACzC,MAAM,wBAAwB,GAAG,0BAA0B,CAAA;AAC3D,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;;AAErD,IAAAC,gBAAc,GAAG;AACjB,mBAAED,iBAAe;AACjB,EAAE,wBAAwB;AAC1B,EAAE,qBAAqB;AACvB,mBAAED,iBAAe;AACjB,EAAE,wBAAwB;AAC1B,EAAE,qBAAqB;AACvB,CAAC;;ACfD,MAAMG,uBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAM,8BAA8B,GAAG,+BAA+B,CAAA;AACtE,MAAM,2BAA2B,GAAG,6BAA6B,CAAA;;AAEjE,IAAAC,cAAc,GAAG;AACjB,yBAAED,uBAAqB;AACvB,EAAE,8BAA8B;AAChC,EAAE,2BAA2B;AAC7B,CAAC;;;;;;;;;ACDD;AACA,MAAME,kBAAgB,GAAG,kBAAkB,CAAA;AAC3C,MAAMC,mBAAiB,GAAG,mBAAmB,CAAA;AAC7C,MAAMC,0BAAwB,GAAG,0BAA0B,CAAA;AAC3D,MAAMC,yBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAMC,uBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAMC,wBAAsB,GAAG,wBAAwB,CAAA;AACvD,MAAMC,qBAAmB,GAAG,qBAAqB,CAAA;;AAEjD;AACA,MAAMC,kBAAgB,GAAG,kBAAkB,CAAA;AAC3C,MAAMC,sBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAMC,wBAAsB,GAAG,wBAAwB,CAAA;AACvD,MAAMC,qBAAmB,GAAG,qBAAqB,CAAA;AACjD,MAAMC,kBAAgB,GAAG,kBAAkB,CAAA;;AAE3C,IAAAC,WAAc,GAAG;AACjB,oBAAEZ,kBAAgB;AAClB,qBAAEC,mBAAiB;AACnB,4BAAEC,0BAAwB;AAC1B,2BAAEC,yBAAuB;AACzB,yBAAEC,uBAAqB;AACvB,oBAAEG,kBAAgB;AAClB,wBAAEC,sBAAoB;AACtB,0BAAEC,wBAAsB;AACxB,uBAAEC,qBAAmB;AACrB,oBAAEC,kBAAgB;AAClB,0BAAEN,wBAAsB;AACxB,uBAAEC,qBAAmB;AACrB,CAAC;;;;;;;;AC/BD,MAAMO,yBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAMC,6BAA2B,GAAG,6BAA6B,CAAA;AACjE,MAAMC,sBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAMC,sBAAoB,GAAG,sBAAsB,CAAA;;AAEnD,IAAAC,mBAAc,GAAG;AACjB,2BAAEJ,yBAAuB;AACzB,+BAAEC,6BAA2B;AAC7B,wBAAEC,sBAAoB;AACtB,wBAAEC,sBAAoB;AACtB,CAAC;;;;;;;;ACVD,MAAME,yBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAMC,yBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAMC,0BAAwB,GAAG,0BAA0B,CAAA;AAC3D,MAAMC,gCAA8B,GAAG,gCAAgC,CAAA;AACvE,MAAMC,0BAAwB,GAAG,0BAA0B,CAAA;AAC3D,MAAMC,0BAAwB,GAAG,0BAA0B,CAAA;AAC3D,MAAMC,gCAA8B,GAAG,gCAAgC,CAAA;AACvE,MAAMC,iCAA+B,GAAG,iCAAiC,CAAA;AACzE,MAAMC,kCAAgC,GAAG,kCAAkC,CAAA;AAC3E,MAAMC,8BAA4B,GAAG,8BAA8B,CAAA;;AAEnE,IAAAC,uBAAc,GAAG;AACjB,2BAAEV,yBAAuB;AACzB,2BAAEC,yBAAuB;AACzB,4BAAEC,0BAAwB;AAC1B,kCAAEC,gCAA8B;AAChC,4BAAEC,0BAAwB;AAC1B,4BAAEC,0BAAwB;AAC1B,kCAAEC,gCAA8B;AAChC,mCAAEC,iCAA+B;AACjC,oCAAEC,kCAAgC;AAClC,gCAAEC,8BAA4B;AAC9B,CAAC;;;;;;;;ACtBD,MAAME,uBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAMC,sBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAMC,uBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAMC,yBAAuB,GAAG,yBAAyB,CAAA;;AAEzD,IAAAC,wBAAc,GAAG;AACjB,yBAAEJ,uBAAqB;AACvB,wBAAEC,sBAAoB;AACtB,yBAAEC,uBAAqB;AACvB,2BAAEC,yBAAuB;AACzB,CAAC;;;;;;;;ACVD,MAAME,8BAA4B,GAAG,8BAA8B,CAAA;AACnE,MAAMC,0BAAwB,GAAG,0BAA0B,CAAA;AAC3D,MAAMC,0BAAwB,GAAG,0BAA0B,CAAA;AAC3D,MAAMC,2BAAyB,GAAG,2BAA2B,CAAA;AAC7D,MAAMC,sBAAoB,GAAG,sBAAsB,CAAA;AACnD,MAAMC,uBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAMC,8BAA4B,GAAG,8BAA8B,CAAA;AACnE,MAAMC,4BAA0B,GAAG,4BAA4B,CAAA;AAC/D,MAAMC,8BAA4B,GAAG,8BAA8B,CAAA;AACnE,MAAMC,8BAA4B,GAAG,8BAA8B,CAAA;;AAEnE,IAAAC,oBAAc,GAAG;AACjB,gCAAEV,8BAA4B;AAC9B,4BAAEC,0BAAwB;AAC1B,4BAAEC,0BAAwB;AAC1B,6BAAEC,2BAAyB;AAC3B,wBAAEC,sBAAoB;AACtB,yBAAEC,uBAAqB;AACvB,gCAAEC,8BAA4B;AAC9B,8BAAEC,4BAA0B;AAC5B,gCAAEC,8BAA4B;AAC9B,gCAAEC,8BAA4B;AAC9B,CAAC;;;;;;;;ACtBD,MAAME,qBAAmB,GAAG,qBAAqB,CAAA;AACjD,MAAMC,oBAAkB,GAAG,oBAAoB,CAAA;AAC/C,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAMC,uBAAqB,GAAG,uBAAuB,CAAA;AACrD,MAAMC,mBAAiB,GAAG,mBAAmB,CAAA;AAC7C,MAAMC,oBAAkB,GAAG,oBAAoB,CAAA;AAC/C,MAAMC,qBAAmB,GAAG,qBAAqB,CAAA;;AAEjD,IAAAC,eAAc,GAAG;AACjB,uBAAEN,qBAAmB;AACrB,sBAAEC,oBAAkB;AACpB,EAAE,qBAAqB;AACvB,yBAAEC,uBAAqB;AACvB,qBAAEC,mBAAiB;AACnB,sBAAEC,oBAAkB;AACpB,uBAAEC,qBAAmB;AACrB,CAAC;;;;;;;;AChBD,MAAME,mBAAiB,GAAG,mBAAmB,CAAA;AAC7C,MAAM,0BAA0B,GAAG,4BAA4B,CAAA;AAC/D,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;;AAEzD,MAAMC,8BAA4B,GAAG,8BAA8B,CAAA;AACnE,MAAM,qCAAqC;AAC3C,EAAE,uCAAuC,CAAA;AACzC,MAAM,kCAAkC,GAAG,oCAAoC,CAAA;;AAE/E,MAAMC,8BAA4B,GAAG,8BAA8B,CAAA;AACnE,MAAM,qCAAqC;AAC3C,EAAE,uCAAuC,CAAA;AACzC,MAAM,kCAAkC,GAAG,oCAAoC,CAAA;;AAE/E,MAAMC,yBAAuB,GAAG,yBAAyB,CAAA;AACzD,MAAM,gCAAgC,GAAG,kCAAkC,CAAA;AAC3E,MAAM,6BAA6B,GAAG,+BAA+B,CAAA;;AAErE,MAAM,oBAAoB,GAAG,sBAAsB,CAAA;;AAEnD,IAAAC,oBAAc,GAAG;AACjB,qBAAEJ,mBAAiB;AACnB,EAAE,0BAA0B;AAC5B,EAAE,uBAAuB;AACzB,gCAAEC,8BAA4B;AAC9B,EAAE,qCAAqC;AACvC,EAAE,kCAAkC;AACpC,gCAAEC,8BAA4B;AAC9B,EAAE,qCAAqC;AACvC,EAAE,kCAAkC;AACpC,2BAAEC,yBAAuB;AACzB,EAAE,gCAAgC;AAClC,EAAE,6BAA6B;AAC/B,EAAE,oBAAoB;AACtB,CAAC;;;;;;;;AClCD,MAAM,mBAAmB,GAAGE,qBAAgC,CAAA;AAC5D,MAAM,eAAe,GAAGC,iBAA4B,CAAA;AACpD,MAAM,YAAY,GAAGC,cAAyB,CAAA;AAC9C,MAAM,WAAW,GAAGC,aAAwB,CAAA;AAC5C,MAAM,UAAU,GAAGC,YAAuB,CAAA;AAC1C,MAAM,cAAc,GAAGC,gBAA2B,CAAA;AAClD,MAAM,YAAY,GAAGC,cAAyB,CAAA;AAC9C,MAAM,cAAc,GAAGC,gBAA2B,CAAA;AAClD,MAAM,SAAS,GAAGC,WAAsB,CAAA;AACxC,MAAM,cAAc,GAAGC,gBAA2B,CAAA;AAClD,MAAM,aAAa,GAAGC,eAA0B,CAAA;AAChD,MAAM,cAAc,GAAGC,gBAA2B,CAAA;AAClD,MAAM,YAAY,GAAGC,cAAyB,CAAA;AAC9C,MAAM,SAAS,GAAGC,WAAsB,CAAA;AACxC,MAAM,iBAAiB,GAAGC,mBAA8B,CAAA;AACxD,MAAM,qBAAqB,GAAGC,uBAAkC,CAAA;AAChE,MAAM,sBAAsB,GAAGC,wBAAmC,CAAA;AAClE,MAAM,kBAAkB,GAAGC,oBAA+B,CAAA;AAC1D,MAAM,aAAa,GAAGC,eAA0B,CAAA;AAChD,MAAM,kBAAkB,GAAGC,oBAA+B,CAAA;;AAE1D,MAAM,YAAY,GAAG;AACrB,EAAE,GAAG,UAAU;AACf,CAAC,CAAA;;AAED,IAAAC,QAAc,GAAG;AACjB,EAAE,MAAM,EAAE,YAAY;AACtB,EAAE,GAAG,mBAAmB;AACxB,EAAE,GAAG,eAAe;AACpB,EAAE,GAAG,YAAY;AACjB,EAAE,GAAG,WAAW;AAChB,EAAE,GAAG,UAAU;AACf,EAAE,GAAG,cAAc;AACnB,EAAE,GAAG,YAAY;AACjB,EAAE,GAAG,cAAc;AACnB,EAAE,GAAG,SAAS;AACd,EAAE,GAAG,cAAc;AACnB,EAAE,GAAG,aAAa;AAClB,EAAE,GAAG,cAAc;AACnB,EAAE,GAAG,YAAY;AACjB,EAAE,GAAG,SAAS;AACd,EAAE,GAAG,iBAAiB;AACtB,EAAE,GAAG,qBAAqB;AAC1B,EAAE,GAAG,sBAAsB;AAC3B,EAAE,GAAG,kBAAkB;AACvB,EAAE,GAAG,aAAa;AAClB,EAAE,GAAG,kBAAkB;AACvB,CAAC;;;;;;;;AC/CD,MAAM,UAAEC,QAAM,EAAE,GAAGrB,YAAmB,CAAA;AACtC,MAAMoB,QAAM,GAAGnB,QAAoB,CAAA;;AAEnC,MAAMqB,YAAU,GAAG,OAAO,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,KAAK;AAC1E,EAAE,MAAM,UAAU;AAClB,IAAI,SAAS,KAAK,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAA;AAC5E,EAAE,MAAM,OAAO,GAAG,SAAS,KAAK,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,CAAA;AAC1E,EAAE,MAAM,MAAM,GAAG,MAAMD,QAAM,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAA;AACrE,EAAE,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,CAAA;AAC1D,EAAE,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;AAC5B,CAAC,CAAA;;AAED,MAAME,iBAAe,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK;AAC1C,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAACH,QAAM,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;AACzD,CAAC,CAAA;;AAED,IAAAI,kBAAc,GAAG;AACjB,cAAEF,YAAU;AACZ,mBAAEC,iBAAe;AACjB,CAAC;;;;;;ACrBD,MAAM,EAAE,WAAW,EAAE,GAAGvB,YAAmB,CAAA;AAC3C,MAAMyB,OAAK,GAAG,UAAyB,CAAA;AACvC,MAAML,QAAM,GAAGlB,QAAoB,CAAA;;AAEnC,MAAMwB,QAAM,GAAG;AACf,EAAE,KAAK,EAAE;AACT,IAAI,IAAI,EAAE,QAAQ;AAClB,GAAG;AACH,EAAE,MAAM,EAAE;AACV,IAAI,IAAI,EAAE,QAAQ;AAClB,GAAG;AACH,CAAC,CAAA;;AAED,MAAMC,uBAAqB,GAAG,CAAC,GAAG,KAAK;AACvC,EAAE,MAAM,MAAM,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAA;AACpD,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAACP,QAAM,CAAC,sCAAsC,EAAE,MAAM,CAAC,CAAA;AAC7E,CAAC,CAAA;;AAED,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK;AACpC,EAAE,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;AAC/C,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,wCAAwC,EAAE,MAAM,CAAC,CAAA;AACxE,CAAC,CAAA;;AAED,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK;AACpC,EAAE,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;AAC/C,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,wCAAwC,EAAE,MAAM,CAAC,CAAA;AACxE,CAAC,CAAA;;AAED,MAAMQ,UAAQ,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK;AACjC,EAAE,IAAI;AACN,IAAI,MAAM,KAAK,GAAG,IAAIH,OAAK,CAAC,UAAEC,QAAM,EAAE,CAAC,CAAA;AACvC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AACzB,IAAI,OAAOG,SAAO,CAAC,GAAG,CAAC,CAAA;AACvB,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AACzB,GAAA;AACA,CAAC,CAAA;;AAED,MAAMA,SAAO,GAAG,CAAC,GAAG,KAAK;AACzB,EAAE,IAAI;AACN,IAAI,MAAM,KAAK,GAAG,IAAIJ,OAAK,CAAC,UAAEC,QAAM,EAAE,CAAC,CAAA;AACvC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAChC,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,OAAO,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAA;AAC7B,KAAK,MAAM;AACX,MAAM,OAAO,IAAI,CAAA;AACjB,KAAA;AACA,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,OAAO,IAAI,CAAA;AACf,GAAA;AACA,CAAC,CAAA;;AAED,IAAAI,uBAAc,GAAG;AACjB,yBAAEH,uBAAqB;AACvB,EAAE,aAAa;AACf,EAAE,aAAa;AACf,YAAEC,UAAQ;AACV,WAAEC,SAAO;AACT,CAAC;;AC7DD,MAAME,MAAI,GAAG/B,YAAe,CAAA;AAC5B,MAAM;AACN,EAAE,YAAY;AACd,iBAAEgC,eAAa;AACf,EAAE,UAAU;AACZ,EAAE,SAAS;AACX,EAAE,QAAQ;AACV,EAAE,SAAS;AACX,EAAE,OAAO;AACT,EAAE,MAAM;AACR,EAAE,UAAU;AACZ,EAAE,WAAW;AACb,EAAE,SAAS;AACX,CAAC,GAAG/B,YAAa,CAAA;;AAEjB,SAASgC,0BAAwB,CAAC,QAAQ,EAAE;AAC5C,EAAE,IAAI;AACN;AACA,IAAI,IAAI,OAAO,GAAGF,MAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;AACxC;AACA;AACA;AACA,IAAI,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE;AAC7B,MAAM,OAAO,IAAI,CAAA;AACjB,KAAA;AACA;AACA,IAAIE,0BAAwB,CAAC,OAAO,CAAC,CAAA;AACrC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAA;AACtB,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,CAAC,OAAO,CAAC,CAAA;AAChD,GAAA;AACA,CAAA;;AAEA,SAASC,gBAAc,CAAC,GAAG,EAAE;AAC7B,EAAE,IAAI;AACN,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE;AACnC,MAAM,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAA;AAC/C,MAAM,SAAS,CAAC,GAAG,CAAC,CAAA;AACpB,KAAA;AACA,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,MAAM,CAAC,CAAA;AACX,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,iBAAe,CAAC,QAAQ,EAAE,aAAa,GAAG,EAAE,EAAE;AACvD,EAAE,IAAI;AACN;AACA,IAAIF,0BAAwB,CAAC,QAAQ,CAAC,CAAA;;AAEtC;AACA,IAAI,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;AACpD,IAAI,IAAI,iBAAiB,GAAG,aAAa,CAAA;AACzC,IAAI,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC9B,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;;AAEnD,MAAM,IAAI;AACV,QAAQ,iBAAiB;AACzB,UAAU,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,MAAA;AACtD,cAAc,IAAI,CAAC,KAAK,CAAC,YAAY,CAAA;AACrC,cAAc,YAAY,CAAA;AAC1B,OAAO,CAAC,OAAO,UAAU,EAAE;AAC3B;AACA,QAAQ,OAAO,CAAC,IAAI;AACpB,UAAU,CAAC,4BAA4B,EAAE,QAAQ,CAAC,8BAA8B,CAAC;AACjF,SAAS,CAAA;AACT,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;;AAEjE;AACA,QAAQ,iBAAiB,GAAG,aAAa,CAAA;AACzC,QAAQD,eAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AACvE,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,mCAAmC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;AACrE,OAAA;AACA,KAAK,MAAM;AACX;AACA,MAAM,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA;AACxC,MAAMA,eAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AACrE,KAAA;;AAEA,IAAI,OAAO,iBAAiB,CAAA;AAC5B,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAClB,IAAI,OAAO,aAAa,CAAA;AACxB,GAAA;AACA,CAAA;;AAEA,SAASI,aAAW,CAAC,QAAQ,EAAE,IAAI,EAAE;AACrC,EAAE,IAAI;AACN;AACA,IAAI,OAAOJ,eAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AACxC,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,OAAO,KAAK,CAAA;AAChB,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS,wBAAwB,CAAC,SAAS,EAAE,YAAY,GAAG,EAAE,EAAE;AAChE,EAAE;AACF,IAAI,SAAS,KAAK,EAAE;AACpB,IAAI,SAAS;AACb,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AACvC,MAAM,IAAI,GAAG,EAAE,MAAM,GAAG,CAAA;;AAExB,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAChC,QAAQ,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC1C,UAAU,UAAU,CAACD,MAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK;AAC1D,YAAY,IAAI,GAAG,EAAE,MAAM,GAAG,CAAA;AAC9B,WAAW,CAAC,CAAA;AACZ,SAAA;AACA,OAAA;AACA,KAAK,CAAA;AACL,IAAA;AACA,CAAA;;AAEA,IAAA,IAAc,GAAG;AACjB,4BAAEE,0BAAwB;AAC1B,mBAAEE,iBAAe;AACjB,eAAEC,aAAW;AACb,EAAE,wBAAwB;AAC1B,kBAAEF,gBAAc;AAChB,CAAC;;ACpJD,MAAM,OAAEG,KAAG,EAAE,GAAGrC,YAAmB,CAAA;AACnC,MAAM+B,MAAI,GAAG9B,YAAe,CAAA;AAC5B,MAAM,iBAAE+B,eAAa,EAAE,GAAG9B,YAAa,CAAA;AAEvC,MAAM,mBAAEiC,iBAAe,EAAE,GAAG/B,IAAwB,CAAA;;AAEpD,MAAMkC,gBAAc,GAAG,iBAAiB,CAAA;AACxC,MAAMC,SAAO,GAAG,WAAW,CAAA;;AAE3B,MAAMC,qBAAmB,GAAG;AAC5B;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,2BAA2B,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,KAAK;AAChE,IAAI,IAAI;AACR;AACA,MAAM,MAAM,QAAQ,GAAGT,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,eAAe,GAAGH,iBAAe,CAAC,QAAQ,CAAC,CAAA;;AAEvD;AACA,MAAM,IAAI,mBAAmB,GAAG,IAAI,CAAA;AACpC,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,KAAK;AAClD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,eAAe,CAAC,IAAI,CAAC,EAAE;AACrD,UAAU,mBAAmB,GAAG,KAAK,CAAA;AACrC,SAAA;AACA,OAAO,CAAC,CAAA;;AAER;AACA,MAAM,IAAI,mBAAmB,KAAK,IAAI,EAAE;AACxC;AACA,QAAQ,eAAe,CAAC,mBAAmB,CAAC,GAAG,eAAe,CAAA;AAC9D,OAAO,MAAM;AACb;AACA,QAAQ,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;AAC7C,OAAA;;AAEA;AACA,MAAMH,eAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;;AAEvE,MAAM,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAA;;AAEvE;AACA,MAAM,OAAO;AACb,QAAQ,UAAU,EAAE,eAAe;AACnC,QAAQ,OAAO,EAAE,IAAI;AACrB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,CAAC,CAAC,CAAA;AACvE;AACA,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,QAAQ,UAAU,EAAE,EAAE;AACtB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH,EAAE,2BAA2B,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,KAAK;AAC1D,IAAI,IAAI;AACR;AACA,MAAM,MAAM,QAAQ,GAAGD,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,eAAe,GAAGH,iBAAe,CAAC,QAAQ,CAAC,CAAA;;AAEvD;AACA;AACA;AACA,MAAM,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AACtD,QAAQ,eAAe,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,KAAK;AACtD,UAAU,IAAI,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;AACvC,YAAY,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;AACnE,WAAA;AACA,SAAS,CAAC,CAAA;AACV,OAAA;;AAEA;AACA,MAAMH,eAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;;AAEvE,MAAM,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAA;;AAExE;AACA,MAAM,OAAO;AACb,QAAQ,UAAU,EAAE,eAAe;AACnC,QAAQ,OAAO,EAAE,IAAI;AACrB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,CAAC,CAAC,CAAA;AACxE;AACA,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,QAAQ,UAAU,EAAE,EAAE;AACtB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,6BAA6B,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,KAAK;AAC9D,IAAI,IAAI;AACR,MAAM,MAAM,QAAQ,GAAGD,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,eAAe,GAAGH,iBAAe,CAAC,QAAQ,CAAC,CAAA;;AAEvD,MAAM,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM;AAC7C,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,EAAE,KAAK,WAAW;AACnD,OAAO,CAAA;;AAEP,MAAMH,eAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;;AAEhE,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,CAAC,gCAAgC,EAAE,WAAW,CAAC,qBAAqB,CAAC;AAC7E,OAAO,CAAA;;AAEP,MAAM,OAAO;AACb,QAAQ,UAAU,EAAE,QAAQ;AAC5B,QAAQ,OAAO,EAAE,IAAI;AACrB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,CAAC,CAAC,CAAA;AACzE,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,QAAQ,UAAU,EAAE,EAAE;AACtB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH,EAAE,4BAA4B,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAChD,IAAI,IAAI;AACR,MAAM,MAAM,QAAQ,GAAGD,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;;AAEP,MAAM,MAAM,eAAe,GAAGH,iBAAe,CAAC,QAAQ,CAAC,CAAA;AACvD,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,CAAC,6BAA6B,EAAE,eAAe,CAAC,MAAM,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;AAC/F,OAAO,CAAA;AACP;AACA,MAAM,OAAO;AACb,QAAQ,UAAU,EAAE,eAAe;AACnC,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,CAAC,CAAC,CAAA;AACzE;AACA,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,QAAQ,UAAU,EAAE,EAAE;AACtB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH,EAAE,2BAA2B,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAC/C,IAAI,IAAI;AACR,MAAM,MAAM,QAAQ,GAAGJ,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,eAAe,GAAGH,iBAAe,CAAC,QAAQ,CAAC,CAAA;;AAEvD;AACA;AACA,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE,CAAA;;AAEpC,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK;AAC7C,QAAQ,IAAI,SAAS,CAAC,MAAM,EAAE;AAC9B,UAAU,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AACnD,YAAY,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE;AAC/C,cAAc,EAAE,EAAE,SAAS,CAAC,MAAM;AAClC,cAAc,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;AACrE;AACA,aAAa,CAAC,CAAA;AACd,WAAA;AACA,SAAA;AACA,OAAO,CAAC,CAAA;;AAER,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAA;;AAE9D;AACA,MAAM,OAAO;AACb,QAAQ,SAAS,EAAE,cAAc;AACjC,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,CAAC,CAAC,CAAA;AACzE;AACA,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,QAAQ,SAAS,EAAE,EAAE;AACrB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,qBAAc,GAAGK,qBAAmB;;AC3PpC,MAAM,OAAEH,KAAG,EAAE,GAAGrC,YAAmB,CAAA;AACnC,MAAM+B,MAAI,GAAG9B,YAAe,CAAA;AAC5B,MAAM,iBAAE+B,eAAa,EAAE,GAAG9B,YAAa,CAAA;AAEvC,MAAM,mBAAEiC,iBAAe,EAAE,GAAG/B,IAAwB,CAAA;;AAEpD,MAAMkC,gBAAc,GAAG,aAAa,CAAA;AACpC,MAAMC,SAAO,GAAG,WAAW,CAAA;;AAE3B,MAAME,iBAAe,GAAG;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,uBAAuB,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK;AACtD,IAAI,IAAI;AACR;AACA,MAAM,MAAM,QAAQ,GAAGV,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,IAAI,GAAGH,iBAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;;AAEhD;AACA,MAAM,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE;AAClC,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;AACvB,OAAA;;AAEA,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAA;;AAEtB;AACA,MAAMH,eAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;;AAE5D,MAAM,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAA;;AAE/D;AACA,MAAM,OAAO;AACb,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,GAAG,EAAE,IAAI;AACjB,QAAQ,KAAK,EAAE,GAAG;AAClB,QAAQ,OAAO,EAAE,IAAI;AACrB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,CAAC,CAAC,CAAA;AAC/D;AACA,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,QAAQ,MAAM,EAAE,EAAE;AAClB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,wBAAwB,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAC5C,IAAI,IAAI;AACR,MAAM,MAAM,QAAQ,GAAGD,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;;AAEP,MAAM,MAAM,IAAI,GAAGH,iBAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;;AAEhD,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,wCAAwC;AAChD,QAAQ,QAAQ;AAChB,QAAQ,QAAQ;AAChB,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM;AAChC,QAAQ,QAAQ;AAChB,OAAO,CAAA;;AAEP;AACA,MAAM,OAAO;AACb,QAAQ,MAAM,EAAE,IAAI;AACpB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,CAAC,CAAC,CAAA;AACjE;AACA,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,QAAQ,MAAM,EAAE,EAAE;AAClB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,yBAAyB,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,KAAK;AACvD,IAAI,IAAI;AACR,MAAM,MAAM,QAAQ,GAAGJ,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,IAAI,GAAGH,iBAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;;AAEhD,MAAM,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC5B,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAA;AAC7B,QAAQH,eAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAC9D,OAAA;;AAEA,MAAM,OAAO,CAAC,GAAG,CAAC,+CAA+C,EAAE,QAAQ,CAAC,CAAA;;AAE5E,MAAM,OAAO;AACb,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,OAAO,EAAE,IAAI;AACrB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,CAAC,CAAC,CAAA;AACjE,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,QAAQ,MAAM,EAAE,EAAE;AAClB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,iBAAc,GAAGS,iBAAe;;;;;;;;;;ACpIhC,IAAIC,IAAE,GAAG1C,YAAa,CAAA;AACtB,IAAI,QAAQ,GAAGC,YAAmB,CAAA;AAClC,MAAM,QAAQ,GAAG,UAAmB,CAAA;AACpC,IAAI,SAAS,GAAG,UAAiB,CAAA;AACjC,IAAI0C,YAAU,GAAG,UAAqB,CAAA;AACtC,MAAM,MAAM,GAAG,UAAiB,CAAA;AAChC,IAAI,GAAG,GAAG,UAAqB,CAAA;AAC/B,MAAMZ,MAAI,GAAGxB,YAAe,CAAA;AAC5B,MAAM,OAAE8B,KAAG,EAAE,GAAG7B,YAAmB,CAAA;AACnC,MAAM,4BAAEyB,0BAAwB,EAAE,GAAGxB,IAAiB,CAAA;;AAEtD,MAAM,kBAAkB,GAAG,WAAW,CAAA;AACtC,MAAM,qBAAqB,GAAG,KAAK,CAAC;;AAEpC;AACA;AACA;AACA;AACA,MAAM,uBAAuB,SAAS,MAAM,CAAC,SAAS,CAAC;AACvD,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACxC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;AAChC,IAAI,QAAQ,EAAE,CAAA;AACd,GAAA;AACA,CAAA;;kBAEA,MAAM,SAAS,CAAC;AAChB,EAAE,WAAW,GAAG;AAChB,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;AAC9B,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,iBAAiB,GAAG;AACtB,IAAI,GAAG;AACP,IAAI,QAAQ;AACZ,IAAI,UAAU,GAAG,GAAG;AACpB,IAAI,aAAa,GAAG,IAAI;AACxB,OAAO;AACP,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI;AACV,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAA;AACrB,QAAQ,IAAI,KAAK,GAAG,EAAE,CAAA;;AAEtB;AACA,QAAQ,IAAI,UAAU,GAAG,EAAE,CAAA;;AAE3B,QAAQ,MAAM,aAAa,GAAG,QAAQ,CAAC,eAAe,CAAC;AACvD,UAAU,KAAK,EAAEiC,IAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AAC9C,UAAU,MAAM,EAAE,OAAO,CAAC,MAAM;AAChC,UAAU,OAAO,EAAE,KAAK;AACxB,SAAS,CAAC,CAAA;;AAEV,QAAQ,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,IAAI,EAAE;AACjD,UAAU,IAAI,KAAK,GAAG,UAAU,EAAE;AAClC;AACA,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC5B,YAAY,KAAK,EAAE,CAAA;AACnB,YAAY,IAAI,aAAa,KAAK,IAAI,EAAE;AACxC,cAAc,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE;AAClD,gBAAgB,IAAI;AACpB,eAAe,CAAC,CAAA;AAChB,aAAA;AACA,WAAW,MAAM;AACjB,YAAY,aAAa,CAAC,KAAK,EAAE,CAAA;AACjC,YAAY,OAAO,CAAC,KAAK,CAAC,CAAA;AAC1B,WAAA;AACA,SAAS,CAAC,CAAA;AACV,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAA;AACjB,OAAA;AACA,KAAK,CAAC,CAAA;AACN,GAAG,CAAA;;AAEH,EAAE,gBAAgB,GAAG;AACrB,IAAI,GAAG;AACP,IAAI,IAAI,GAAG,EAAE;AACb,IAAI,WAAW,GAAG,EAAE;AACpB,IAAI,aAAa,GAAG,IAAI;AACxB,OAAO;AACP,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI;AACV,QAAQ,MAAM,MAAM,GAAGC,YAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAC5C,QAAQ,MAAM,UAAU,GAAGD,IAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;;AAEjE,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAA;;AAErB,QAAQ,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;AACxC;AACA,UAAU,IAAI,aAAa,KAAK,IAAI,EAAE;AACtC,YAAY,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE;AAChD,cAAc,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACxC,aAAa,CAAC,CAAA;AACd,WAAA;AACA,UAAU,IAAI,WAAW,KAAK,IAAI,IAAI,KAAK,GAAG,WAAW,EAAE;AAC3D,YAAY,UAAU,CAAC,OAAO,EAAE,CAAA;AAChC,YAAY,OAAO,CAAC,UAAU,CAAC,CAAA;AAC/B,WAAA;AACA,UAAU,KAAK,EAAE,CAAA;AACjB,SAAS,CAAC,CAAA;;AAEV,QAAQ,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AACtC,UAAU,MAAM,CAAC,CAAC,CAAC,CAAA;AACnB,SAAS,CAAC,CAAA;;AAEV,QAAQ,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK;AACvC,UAAU,OAAO,CAAC,UAAU,CAAC,CAAA;AAC7B,SAAS,CAAC,CAAA;AACV,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB,QAAQ,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAA;AAC1C,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAA;AACjB,OAAA;AACA,KAAK,CAAC,CAAA;AACN,GAAG,CAAA;;AAEH,EAAE,MAAM,cAAc,CAAC,IAAI,EAAE;AAC7B,IAAI,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;AACvD,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,SAAA;AACN,SAAS,kBAAkB,CAAC,OAAO,EAAE;AACrC,UAAU,IAAI,EAAE,IAAI;AACpB,UAAU,OAAO,EAAE,IAAI;AACvB,UAAU,aAAa,EAAE,IAAI;AAC7B,UAAU,aAAa,EAAE,IAAI;AAC7B,SAAS,CAAA;AACT,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK;AACxB;AACA,UAAU,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAA;AAC7C,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAChC,KAAK,CAAC,CAAA;AACN,GAAA;;AAEA,EAAE,cAAc,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,KAAK;AACjD,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI;AACV,QAAQ,MAAM,iBAAiB,GAAGA,IAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;;AAE/D,QAAQ,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM;AAC1C,UAAU,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAClC,UAAU,OAAO,CAAC,UAAU,CAAC,CAAA;AAC7B,SAAS,CAAC,CAAA;;AAEV,QAAQ,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM;AAC/C,UAAU,OAAO,CAAC,aAAa,CAAC,CAAA;AAChC,SAAS,CAAC,CAAA;;AAEV,QAAQ,MAAM,WAAW,GAAGA,IAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;AACzD,QAAQ,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;;AAEhC,QAAQ,MAAM,OAAO,GAAG;AACxB,UAAU,OAAO,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE;AAChD,UAAU,uBAAuB,EAAE,IAAI;AACvC,UAAU,IAAI,EAAE,KAAK;AACrB,UAAU,MAAM,EAAE,KAAK;AACvB,UAAU,YAAY,EAAE,QAAQ;AAChC,SAAS,CAAA;;AAET,QAAQ,MAAM,iBAAiB,GAAG,QAAQ;AAC1C,UAAU,KAAK;AACf,UAAU;AACV,YAAY,WAAW,EAAE,IAAI,CAAC,cAAc;AAC5C,YAAY,YAAY,EAAE,QAAQ;AAClC,WAAW;AACX,UAAU,OAAO;AACjB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK;AAC7B,UAAU,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACxB,UAAU,MAAM,CAAC,CAAC,CAAC,CAAA;AACnB,SAAS,CAAC,CAAA;;AAEV,QAAQ,iBAAA;AACR,WAAW,IAAI,CAAC,iBAAiB,CAAA;AACjC,WAAW,IAAI,CAAC,IAAI,uBAAuB,EAAE,CAAA;AAC7C,WAAW,IAAI,CAAC,WAAW,CAAA;AAC3B,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM;AAC3B,YAAY,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AAChC,WAAW,CAAA;AACX,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM;AAC9B,YAAY,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;AACxC,WAAW,CAAC,CAAA;AACZ,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACtB,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAA;AACjB,OAAA;AACA,KAAK,CAAC,CAAA;AACN,GAAG,CAAA;;AAEH,EAAE,cAAc,GAAG;AACnB,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,SAAS,GAAG,GAAG;AACnB,IAAI,WAAW,GAAG,IAAI;AACtB,IAAI,OAAO,GAAG,IAAI;AAClB,IAAI,GAAG,GAAG,IAAI;AACd,IAAI,aAAa,GAAG,IAAI;AACxB,IAAI,KAAK,GAAG,IAAI;AAChB,OAAO;AACP,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI;AACV,QAAQ,MAAM,UAAU,GAAGA,IAAA;AAC3B,WAAW,gBAAgB,CAAC,QAAQ,CAAA;AACpC,WAAW,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;AAC9C,QAAQ,MAAM,WAAW,GAAGA,IAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;;AAEzD,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAAA;;AAE3B;AACA,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAA;AACpB,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAA;AACrB,QAAQ,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;;AAEhC,QAAQ,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;AACxC,UAAU,IAAI,KAAK,GAAG,CAAC,EAAE;AACzB,YAAY,GAAG,GAAG,KAAK,CAAA;AACvB,WAAA;AACA;AACA,UAAU,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,KAAK,EAAE;AAChD,YAAY,QAAQ,GAAG,KAAK,CAAA;AAC5B,YAAY,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAClC,YAAY,UAAU,CAAC,OAAO,EAAE,CAAA;AAChC,YAAY,OAAO,CAAC,UAAU,CAAC,CAAA;AAC/B,WAAA;AACA,UAAU,IAAI,QAAQ,KAAK,IAAI,EAAE;AACjC,YAAY,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAA;AAChD,YAAY,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;AACzD,YAAY,KAAK,EAAE,CAAA;;AAEnB,YAAY,IAAI,GAAG,KAAK,IAAI,EAAE;AAC9B;AACA,cAAc,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE;AAClD,gBAAgB,KAAK;AACrB,eAAe,CAAC,CAAA;AAChB,aAAA;AACA,WAAA;AACA,SAAS,CAAC,CAAA;;AAEV,QAAQ,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM;AACnC,UAAU,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAChC,UAAU,UAAU,CAAC,OAAO,EAAE,CAAA;AAC9B,UAAU,OAAO,CAAC,UAAU,CAAC,CAAA;AAC7B,SAAS,CAAC,CAAA;AACV,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAA;AACjB,OAAA;AACA,KAAK,CAAC,CAAA;AACN,GAAG,CAAA;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,mBAAmB,GAAG;AACxB,IAAI,GAAG;AACP,IAAI,QAAQ;AACZ,IAAI,WAAW;AACf,IAAI,mBAAmB;AACvB,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC;AAC9B,IAAI,aAAa,GAAG,IAAI;AACxB,OAAO;AACP,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C;AACA,MAAM;AACN,QAAQ,OAAO,mBAAmB,KAAK,QAAQ;AAC/C,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAA;AACjC,QAAQ;AACR,QAAQ,OAAO,MAAM;AACrB,UAAU,IAAI,KAAK,CAAC,gDAAgD,CAAC;AACrE,SAAS,CAAA;AACT,OAAA;;AAEA;AACA,MAAM,IAAI,mBAAmB,CAAC,MAAM,GAAG,qBAAqB,EAAE;AAC9D,QAAQ,OAAO,MAAM;AACrB,UAAU,IAAI,KAAK;AACnB,YAAY,8CAA8C;AAC1D,cAAc,qBAAqB;AACnC,cAAc,QAAQ;AACtB,WAAW;AACX,SAAS,CAAA;AACT,OAAA;;AAEA;AACA,MAAM,MAAM,UAAU,GAAGX,MAAI,CAAC,IAAI,CAACM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC,CAAA;AAC/E,MAAM,MAAM,gBAAgB,GAAGN,MAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;AACrD,MAAM,MAAM,mBAAmB,GAAGA,MAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;;AAE3D,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,UAAU,GAAGA,MAAI,CAAC,GAAG,CAAC,EAAE;AAC/D,QAAQ,OAAO,MAAM;AACrB,UAAU,IAAI,KAAK;AACnB,YAAY,+DAA+D;AAC3E,WAAW;AACX,SAAS,CAAA;AACT,OAAA;AACA,MAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,UAAU,GAAGA,MAAI,CAAC,GAAG,CAAC,EAAE;AAClE,QAAQ,OAAO,MAAM;AACrB,UAAU,IAAI,KAAK;AACnB,YAAY,gEAAgE;AAC5E,WAAW;AACX,SAAS,CAAA;AACT,OAAA;;AAEA;AACA,MAAM,IAAI,MAAM,GAAGY,YAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;;AAExC,MAAM,IAAID,IAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;AAC3C,QAAQ,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAA;AACrD;AACA,QAAQ,IAAI,UAAU,GAAGA,IAAE,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;;AAE3E,QAAQT,0BAAwB,CAAC,mBAAmB,CAAC,CAAA;;AAErD,QAAQ,IAAI,WAAW,GAAGS,IAAE,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAA;;AAEnE,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAA;AACpB,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAA;;AAErB;AACA,QAAQ,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;;AAE1D;AACA,QAAQ,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;;AAEhC,QAAQ,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;AACxC,UAAU,IAAI;AACd;AACA;AACA,YAAY,IAAI,KAAK,GAAG,CAAC,EAAE;AAC3B,cAAc,GAAG,GAAG,KAAK,CAAA;AACzB,aAAA;;AAEA,YAAY,IAAI,IAAI,EAAE;AACtB;AACA,cAAc,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;;AAE9C,cAAc,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAA;;AAE/D,cAAc,IAAI,aAAa,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;AAC1D,gBAAgB,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE;AACpD,kBAAkB,KAAK;AACvB,iBAAiB,CAAC,CAAA;AAClB,eAAA;;AAEA;AACA,cAAc,KAAK,EAAE,CAAA;AACrB,aAAA;AACA,WAAW,CAAC,OAAO,CAAC,EAAE;AACtB,YAAY,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;AAClC,WAAA;AACA,SAAS,CAAC,CAAA;;AAEV,QAAQ,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK;AACvC,UAAU,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAClC,UAAU,WAAW,CAAC,KAAK,EAAE,CAAA;AAC7B,UAAU,OAAO,CAAC,kBAAkB,GAAG,KAAK,GAAG,UAAU,CAAC,CAAA;AAC1D,SAAS,CAAC,CAAA;;AAEV,QAAQ,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;AACxC,UAAU,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;AAClE,UAAU,MAAM,CAAC,GAAG,CAAC,CAAA;AACrB,SAAS,CAAC,CAAA;AACV,OAAO,MAAM;AACb,QAAQ,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAA;AAC9C,OAAA;AACA,KAAK,CAAC,CAAA;AACN,GAAG,CAAA;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,GAAG,CAAC,IAAI,KAAK;AAC3B,IAAI,IAAI;AACR,MAAM,IAAI,OAAO,GAAG,IAAI,CAAA;;AAExB,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAClC,QAAQ,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AACtC,OAAA;;AAEA,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE;AACpC,QAAQ,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAClC,OAAA;;AAEA,MAAM,OAAO,OAAO,CAAA;AACpB,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,IAAI,CAAA;AACjB,KAAA;AACA,GAAG,CAAA;AACH,EAAA;;AAEA,IAAA,SAAc,GAAGE,WAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YC5X1B,MAAM,GAAG,CAAC;AACV,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,KAAK,EAAE,GAAG,EAAE,GAAG,CAAA;AACvB,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,MAAM,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AACxE,KAAA;AACA,GAAA;;AAEA,EAAE,IAAI,GAAG,UAAU,KAAK,EAAE;AAC1B,IAAI,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;AAC/B,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;AAC5C,MAAM,OAAO,CAAC,SAAS,EAAE,iBAAiB,GAAG,KAAK,EAAE,KAAK,CAAC,CAAA;AAC1D,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,GAAG,GAAG,KAAK,CAAA;AAClD,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;AACzB,MAAM,KAAK;AACX,QAAQ,GAAG;AACX,QAAQ,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1B,QAAQ,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1B,QAAQ,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1B,QAAQ,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1B,QAAQ,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1B,QAAQ,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;;AAE1B,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AAC7B,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAClB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAChB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;AAChB,IAAI,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AAC7B,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAClB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAChB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;AAChB,IAAI,IAAI,IAAI,GAAG,CAAC,CAAA;AAChB,IAAI,IAAI,IAAI,GAAG,CAAC,CAAA;AAChB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAA;AACf,IAAI,IAAI,EAAE,GAAG,CAAC,CAAC;AACf,MAAM,EAAE,GAAG,CAAC,CAAC,CAAA;;AAEb,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,MAAM,IAAI,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,QAAQ,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;;AAE/D,MAAM,IAAI;AACV,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACzC,MAAM,IAAI;AACV,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACzC,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACzC,MAAM,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAA;AAC3B,MAAM,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,EAAE;AAC9B,QAAQ,EAAE,GAAG,GAAG,CAAA;AAChB,QAAQ,EAAE,GAAG,CAAC,CAAA;AACd,OAAA;AACA,KAAA;;AAEA,IAAI,OAAO,EAAE,GAAG,CAAA;AAChB,QAAQ,CAAC,SAAS,EAAE,iBAAiB,GAAG,KAAK,EAAE,KAAK,CAAA;AACpD,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AAC3D,GAAG,CAAA;;AAEH;AACA;AACA,EAAE,GAAG,GAAG,UAAU,KAAK,EAAE;AACzB,IAAI,IAAI,GAAG,GAAG;AACd,MAAM,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;AAClD,MAAM,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;AAClD,MAAM,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;AAClD,KAAK,CAAA;AACL,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;AAChC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAClB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAChB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;;AAEhB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AACrC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AACrC,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,CAAA;AACrB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAA;;AAEvB,IAAI,CAAC,GAAG,CAAC,CAAA;AACT,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;;AAEjE,IAAI,CAAC,GAAG,CAAC,CAAA;AACT,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE;AACnB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAA;AACpD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAA;AACxD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAA;AACxD,MAAM,CAAC,IAAI,CAAC,CAAA;AACZ,KAAA;AACA,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;AACpE,GAAG,CAAA;;AAEH;AACA;AACA,EAAE,GAAG,GAAG,UAAU,KAAK,EAAE;AACzB,IAAI,OAAO;AACX,MAAM,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5C,MAAM,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5C,MAAM,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5C,KAAK,CAAA;AACL,GAAG,CAAA;;AAEH,EAAE,KAAK,GAAG;AACV,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,0BAA0B,CAAC;AAC1C,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAC;AACtC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AACnC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC;AACpC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AACnC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,2BAA2B,CAAC;AAC3C,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC;AACpC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AACnC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AACnC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AACnC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAC;AACtC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC;AACvC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC;AACvC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC;AACpC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC;AACrC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC;AACpC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AACnC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC;AACpC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAC;AACtC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AACnC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACjC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC;AACrC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AAClC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC;AACnC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,gBAAgB,CAAC;AAChC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC1B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC;AAC5B,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC;AAC9B,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC;AACrC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC;AAC/B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC;AACzB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxB,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC;AAC7B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;AAC3B,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;AACvB,GAAG,CAAA;AACH,EAAA;;AAEA,IAAA,KAAc,GAAGC,KAAG;;;;;;;;ACtqDpB,MAAM,QAAQ,GAAG7C,YAA2B,CAAA;AAE5C,MAAM,SAAS,GAAGE,YAAqB,CAAA;AACvC,MAAM,iBAAE4C,eAAa,EAAE,GAAG3C,YAAyB,CAAA;AACnD,MAAM,GAAG,GAAGC,KAAgB,CAAA;;AAE5B,eAAe2C,2BAAyB,CAAC,GAAG,EAAE,WAAW,EAAE;AAC3D,EAAE,IAAI;AACN;AACA,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,GAAG;AACT,MAAM,IAAI,EAAE,WAAW;AACvB,KAAK,CAAA;;AAEL,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AACxB,IAAI,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AACtD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;;AAExC;AACA,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK;AACzC,MAAM,IAAI,CAAC,GAAG,EAAE;AAChB,QAAQ,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;AACrC,QAAQ,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAA;;AAE5C,QAAQD,eAAa,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;AAC7C,WAAW,IAAI,CAAC,CAAC,MAAM,KAAK;AAC5B,YAAY,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AAC/B,YAAY,MAAM,CAAC,GAAG,IAAI,GAAG,EAAE,CAAA;AAC/B,YAAY,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AAC1C,cAAc,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AACxC,cAAc,CAAC,CAAC,SAAS,GAAG,IAAI,CAAA;AAChC,cAAc,OAAO,CAAC,CAAA;AACtB,aAAa,CAAC,CAAA;AACd,YAAY,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAC5B,WAAW,CAAA;AACX,WAAW,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;AAC7B,OAAA;AACA,KAAK,CAAC,CAAA;AACN,GAAG,CAAC,OAAO,CAAC,EAAE;AACd,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAA;AACtB,GAAA;AACA,CAAA;;IAEA,KAAc,GAAG,6BAAEC,2BAAyB,EAAE;;AChD9C,MAAM,OAAEV,KAAG,EAAE,GAAGrC,YAAmB,CAAA;AACnC,IAAI0C,IAAE,GAAGzC,YAAa,CAAA;AACtB,MAAM8B,MAAI,GAAG7B,YAAe,CAAA;AAC5B,MAAMkB,QAAM,GAAGjB,QAAoB,CAAA;AACnC,MAAM,mBAAEgC,iBAAe,eAAEC,aAAW,EAAE,GAAGhC,IAAwB,CAAA;;AAEjE;AACA,MAAM,YAAY,GAAGC,YAAyB,CAAA;AAC9C,MAAM,SAAS,GAAGC,SAA6B,CAAA;AAC/C,MAAM,6BAAEyC,2BAAyB,EAAE,GAAGxC,KAAyB,CAAA;AAC/D,MAAM,KAAK,GAAG,UAAgB,CAAA;AAG9B,MAAMgC,SAAO,GAAG,WAAW,CAAA;;AAE3B,MAAMS,gBAAc,GAAG;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,oBAAoB,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,GAAG,UAAU,KAAK;AAC7E,IAAI,IAAI;AACR;AACA,MAAM,MAAM,QAAQ,GAAGjB,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQ,MAAM;AACd,QAAQ,UAAU;AAClB,OAAO,CAAA;;AAEP;AACA,MAAM,MAAM,YAAY,GAAGJ,iBAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;;AAExD,MAAM,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAA;;AAE9C,MAAM,GAAA;AACN,SAAS,MAAM,CAAC,QAAQ,CAAA;AACxB,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK;AAC1B,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACf,QAAM,CAAC,8BAA8B,EAAE;AACtE,YAAY,MAAM,EAAE,IAAI;AACxB,YAAY,MAAM;AAClB,YAAY,QAAQ;AACpB,WAAW,CAAC,CAAA;AACZ,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC;AACjB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,2BAA2B,EAAE;AACnE,YAAY,KAAK,EAAE,CAAC,CAAC,OAAO;AAC5B,WAAW,CAAC;AACZ,SAAS,CAAA;AACT,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,2BAA2B,EAAE;AAC/D,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,sBAAsB,EAAE,CAAC,GAAG,EAAE,UAAU,GAAG,EAAE,KAAK;AACpD,IAAI,IAAI;AACR,MAAM,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAA;AAC9C,MAAM,GAAA;AACN,SAAS,QAAQ,CAAC,QAAQ,CAAA;AAC1B,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK;AAC1B,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,gCAAgC,EAAE;AACxE,YAAY,MAAM,EAAE,IAAI;AACxB,YAAY,SAAS,EAAE,MAAM;AAC7B,WAAW,CAAC,CAAA;AACZ,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC;AACjB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,6BAA6B,EAAE;AACrE,YAAY,KAAK,EAAE,CAAC,CAAC,OAAO;AAC5B,WAAW,CAAC;AACZ,SAAS,CAAA;AACT,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,6BAA6B,EAAE;AACjE,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH,EAAE,iBAAiB,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,KAAK;AACnD,IAAI,IAAI;AACR,MAAM,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAA;AAC/B,MAAM,CAAC,CAAC,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAEA,QAAM,CAAC,iBAAiB,CAAA;AAC5E,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK;AACvB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,mBAAmB,EAAE;AAC3D,YAAY,OAAO,EAAE,IAAI;AACzB,YAAY,QAAQ;AACpB,YAAY,SAAS;AACrB,YAAY,KAAK,EAAE,GAAG;AACtB,WAAW,CAAC,CAAA;AACZ,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK;AACtB;AACA,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,gBAAgB,EAAE;AACxD,YAAY,KAAK,EAAE,CAAC,CAAC,OAAO;AAC5B,WAAW,CAAC,CAAA;AACZ,SAAS,CAAC,CAAA;AACV,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,gBAAgB,EAAE;AACpD,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH,EAAE,gBAAgB,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI,KAAK;AAC3D,IAAI,IAAI;AACR,MAAM,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;AACnE,MAAM,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAA;AAC/B,MAAM,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAEA,QAAM,CAAC,gBAAgB,CAAA;AAC5E,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK;AACvB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,kBAAkB,EAAE;AAC1D,YAAY,OAAO,EAAE,IAAI;AACzB,YAAY,QAAQ;AACpB,WAAW,CAAC,CAAA;AACZ,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK;AACtB;AACA,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,eAAe,EAAE;AACvD,YAAY,KAAK,EAAE,CAAC,CAAC,OAAO;AAC5B,WAAW,CAAC,CAAA;AACZ,SAAS,CAAC,CAAA;AACV,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AACxB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,eAAe,EAAE;AACnD,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,KAAK;AAC7C,IAAI,IAAI;AACR;AACA,MAAM,IAAI,SAAS,CAAA;AACnB,MAAM,IAAI;AACV,QAAQ,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;AAChC,OAAO,CAAC,MAAM;AACd,QAAQ,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;AAC/C,OAAA;AACA,MAAM,IAAI,SAAS,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC3C,QAAQ,MAAM,IAAI,KAAK;AACvB,UAAU,oCAAoC,GAAG,SAAS,CAAC,QAAQ;AACnE,SAAS,CAAA;AACT,OAAA;;AAEA;AACA,MAAM,MAAM,UAAU,GAAGW,MAAI,CAAC,IAAI,CAACM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAEE,SAAO,CAAC,CAAA;AACpE,MAAM,MAAM,gBAAgB,GAAGR,MAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;AACvD,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,UAAU,GAAGA,MAAI,CAAC,GAAG,CAAC,EAAE;AAC/D,QAAQ,MAAM,IAAI,KAAK;AACvB,UAAU,yDAAyD;AACnE,SAAS,CAAA;AACT,OAAA;;AAEA,MAAM,MAAM,WAAW,GAAGW,IAAE,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAA;;AAEhE,MAAM,KAAA;AACN,SAAS,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK;AAC5B,UAAU,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,KAAK;AACrC,YAAY,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AACpC,WAAW,CAAC,CAAA;;AAEZ,UAAU,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM;AAC/B,YAAY,GAAG,CAAC,WAAW,CAAC,IAAI,CAACtB,QAAM,CAAC,sBAAsB,EAAE;AAChE,cAAc,OAAO,EAAE,IAAI;AAC3B,cAAc,UAAU,EAAE,gBAAgB;AAC1C,aAAa,CAAC,CAAA;AACd,WAAW,CAAC,CAAA;AACZ,SAAS,CAAA;AACT,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;AAC9B,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,mBAAmB,EAAE;AAC3D,YAAY,KAAK,EAAE,GAAG,CAAC,OAAO;AAC9B,WAAW,CAAC,CAAA;AACZ,SAAS,CAAC,CAAA;AACV,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AACxB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,mBAAmB,EAAE;AACvD,QAAQ,KAAK,EAAE,KAAK,CAAC,OAAO;AAC5B,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,EAAE;AAClB,IAAI,GAAG;AACP,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,KAAK;AACT,IAAI,UAAU,GAAG,IAAI;AACrB,IAAI,WAAW,GAAG,IAAI;AACtB,OAAO;AACP,IAAI,IAAI;AACR,MAAM,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAA;AAC/B,MAAM,CAAC,CAAC,cAAc;AACtB,QAAQ,QAAQ;AAChB,QAAQ,OAAO;AACf,QAAQ,KAAK;AACb;AACA;AACA;AACA;AACA,OAAA;AACA,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK;AACvB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,yBAAyB,EAAE;AACjE,YAAY,OAAO,EAAE,IAAI;AACzB,YAAY,QAAQ;AACpB,YAAY,OAAO;AACnB,WAAW,CAAC,CAAA;AACZ,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK;AACtB,UAAU,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACxB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,sBAAsB,EAAE;AAC9D,YAAY,KAAK,EAAE,CAAC,CAAC,OAAO;AAC5B,WAAW,CAAC,CAAA;AACZ,SAAS,CAAC,CAAA;AACV,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,sBAAsB,EAAE;AAC1D,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,EAAE;AAClB,IAAI,GAAG;AACP,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,SAAS,GAAG,GAAG;AACnB,IAAI,WAAW,GAAG,IAAI;AACtB,IAAI,OAAO,GAAG,IAAI;AAClB,IAAI,KAAK,GAAG,IAAI;AAChB,OAAO;AACP,IAAI,IAAI;AACR,MAAM,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAA;AAC/B,MAAM,CAAC,CAAC,cAAc;AACtB,QAAQ,QAAQ;AAChB,QAAQ,OAAO;AACf,QAAQ,SAAS;AACjB,QAAQ,WAAW;AACnB,QAAQ,OAAO;AACf,QAAQ,GAAG;AACX,QAAQA,QAAM,CAAC,uBAAuB;AACtC,QAAQ,KAAK;AACb,OAAA;AACA,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK;AACvB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,yBAAyB,EAAE;AACjE,YAAY,OAAO,EAAE,IAAI;AACzB,YAAY,QAAQ;AACpB,YAAY,OAAO;AACnB,WAAW,CAAC,CAAA;AACZ,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK;AACtB,UAAU,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACxB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,sBAAsB,EAAE;AAC9D,YAAY,KAAK,EAAE,CAAC,CAAC,OAAO;AAC5B,WAAW,CAAC,CAAA;AACZ,SAAS,CAAC,CAAA;AACV,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,sBAAsB,EAAE;AAC1D,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAG,EAAE,KAAK;AACjE,IAAI,IAAI;AACR,MAAM,IAAI,IAAI,EAAE;AAChB;AACA,QAAQ,MAAM,UAAU,GAAGW,MAAI,CAAC,IAAI;AACpC,UAAUM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AACjC,UAAUE,SAAO;AACjB,UAAU,MAAM;AAChB,UAAU,QAAQ;AAClB,SAAS,CAAA;;AAET;;AAEA;AACA,QAAQ,IAAI,YAAY,GAAGJ,iBAAe,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;AACnE,QAAQ,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,EAAE,EAAE;AAC1D,UAAU,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;AACpD,SAAA;;AAEA;AACA,QAAQ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;;AAEhC,QAAQ,IAAI,aAAa,GAAG,IAAI,CAAA;;AAEhC,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AAC7B;AACA,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;AACpD,YAAY,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;AAC9D,YAAY,iBAAiB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;AAC3C,YAAY,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA;AAC7D,YAAYC,aAAW,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;AAClD,WAAA;;AAEA,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;AACpD,YAAY,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;AAC9D,YAAY,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,CAAA;AACrD,YAAY,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAA;AAC7D;AACA;AACA,YAAYA,aAAW,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;AAClD,WAAA;AACA,SAAS,MAAM;AACf;AACA,UAAU,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;AAC9C,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;AACpD,YAAYA,aAAW;AACvB,cAAc,UAAU;AACxB,cAAc,aAAa;AAC3B;AACA,aAAa,CAAA;AACb,WAAA;AACA,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;AACpD,YAAYA,aAAW;AACvB,cAAc,UAAU;AACxB,cAAc,aAAa;AAC3B;AACA,aAAa,CAAA;AACb,WAAA;AACA,SAAA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,GAAG,CAAC,WAAW,CAAC,IAAI,CAAChB,QAAM,CAAC,0BAA0B,EAAE;AAChE,UAAU,OAAO,EAAE,IAAI;AACvB,UAAU,QAAQ,EAAE,UAAU;AAC9B,UAAU,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;AACjD,SAAS,CAAC,CAAA;AACV,OAAA;AACA,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACpB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,uBAAuB,EAAE;AAC3D,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,QAAQ,EAAE,QAAQ;AAC1B,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,GAAG,EAAE,KAAK;AACvD,IAAI,IAAI;AACR,MAAM,IAAI,QAAQ,EAAE;AACpB;AACA,QAAQ,MAAM,YAAY,GAAGW,MAAI,CAAC,IAAI;AACtC,UAAUM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AACjC,UAAUE,SAAO;AACjB,UAAU,MAAM;AAChB,UAAU,QAAQ;AAClB,SAAS,CAAA;AACT,QAAQ,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,YAAY,EAAE,aAAa,CAAC,CAAA;AACtE;AACA,QAAQ,MAAM,YAAY,GAAGJ,iBAAe,CAAC,YAAY,EAAE,aAAa,CAAC,CAAA;;AAEzE,QAAQ,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,YAAY,EAAE,YAAY,CAAC,CAAA;;AAEjE,QAAQ,GAAG,CAAC,WAAW,CAAC,IAAI,CAACf,QAAM,CAAC,4BAA4B,EAAE;AAClE,UAAU,MAAM,EAAE,IAAI;AACtB,UAAU,QAAQ,EAAE,YAAY;AAChC,UAAU,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AAC5C,SAAS,CAAC,CAAA;AACV,OAAA;AACA,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,yBAAyB,EAAE;AAC7D,QAAQ,MAAM,EAAE,KAAK;AACrB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,EAAE;AACjB,IAAI,GAAG;AACP,IAAI,QAAQ;AACZ,IAAI,WAAW;AACf,IAAI,mBAAmB;AACvB,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC;AAC9B,OAAO;AACP,IAAI,IAAI;AACR,MAAM,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAA;AAC/B,MAAM,CAAC,CAAC,mBAAmB;AAC3B,QAAQ,GAAG;AACX,QAAQ,QAAQ;AAChB,QAAQ,WAAW;AACnB,QAAQ,mBAAmB;AAC3B,QAAQ,IAAI;AACZ,QAAQA,QAAM,CAAC,qBAAqB;AACpC,OAAA;AACA,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK;AAC1B,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,uBAAuB,EAAE;AAC/D,YAAY,MAAM,EAAE,IAAI;AACxB,YAAY,QAAQ,EAAE,QAAQ;AAC9B,YAAY,UAAU,EAAE,WAAW;AACnC,WAAW,CAAC,CAAA;AACZ,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK;AACtB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,oBAAoB,EAAE;AAC5D,YAAY,MAAM,EAAE,KAAK;AACzB,YAAY,OAAO,EAAE,CAAC,CAAC,OAAO;AAC9B,WAAW,CAAC,CAAA;AACZ,SAAS,CAAC,CAAA;AACV,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,oBAAoB,EAAE;AACxD,QAAQ,MAAM,EAAE,KAAK;AACrB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH,EAAE,yBAAyB,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK;AAC3C,IAAI,IAAI;AACR,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AACtB,MAAM,MAAM,aAAa,GAAG,MAAM,CAAA;AAClC,MAAM,MAAM,QAAQ,GAAGW,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,wBAAwB;AAChC,QAAQ,MAAM;AACd,QAAQ,cAAc,GAAG,aAAa;AACtC,OAAO,CAAA;;AAEP,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;;AAEvC,MAAMQ,2BAAyB,CAAC,GAAG,EAAE,QAAQ,CAAA;AAC7C,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AAC7C,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AACrC,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AACpB,KAAA;AACA,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,gBAAc,GAAGC,gBAAc;;;;;;AC/d/B,MAAM,OAAEX,KAAG,EAAE,GAAGrC,YAAmB,CAAA;AACnC,MAAM+B,MAAI,GAAG9B,YAAe,CAAA;AAC5B,MAAMyC,IAAE,GAAGxC,YAAa,CAAA;AAExB,MAAM,mBAAEiC,iBAAe,eAAEC,aAAW,EAAE,GAAGhC,IAAwB,CAAA;;AAEjE,MAAMkC,gBAAc,GAAG,eAAe,CAAA;AACtC,MAAMC,SAAO,GAAG,WAAW,CAAA;;AAE3B;AACA,SAAS,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE;AAC5C,EAAE,IAAI,CAACG,IAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;AACnC,IAAIA,IAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AAClD,GAAA;;AAEA,EAAE,MAAM,KAAK,GAAGA,IAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;AACtC,EAAE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAC5B,IAAI,MAAM,OAAO,GAAGX,MAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AAC3C,IAAI,MAAM,QAAQ,GAAGA,MAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;AACjD,IAAI,MAAM,IAAI,GAAGW,IAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;;AAEtC;AACA,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;AAC/B,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,uCAAuC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;AACvE,MAAM,SAAA;AACN,KAAA;;AAEA,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AAC5B,MAAM,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AACtC,KAAK,MAAM;AACX,MAAMA,IAAE,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;AACxC,KAAA;AACA,GAAA;AACA,CAAA;;AAEA,MAAMO,oBAAkB,GAAG;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,0BAA0B,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK;AAC7C,IAAI,IAAI;AACR,MAAM,IAAI,IAAI,EAAE;AAChB;AACA,QAAQ,MAAM,QAAQ,GAAGlB,MAAI,CAAC,IAAI;AAClC,UAAUM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AACjC,UAAUE,SAAO;AACjB,UAAUD,gBAAc;AACxB,SAAS,CAAA;AACT,QAAQF,aAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAC5D,QAAQ,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;AACvE;AACA,QAAQ,OAAO;AACf,UAAU,OAAO,EAAE,IAAI;AACvB,UAAU,QAAQ,EAAE,IAAI;AACxB,SAAS,CAAA;AACT,OAAO,MAAM;AACb,QAAQ,OAAO;AACf,UAAU,KAAK,EAAE,IAAI;AACrB,UAAU,OAAO,EAAE,2BAA2B;AAC9C,SAAS,CAAA;AACT,OAAA;AACA,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,CAAC,CAAC,CAAA;AACrE,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,yBAAyB,EAAE,CAAC,GAAG,KAAK;AACtC,IAAI,IAAI;AACR;AACA,MAAM,MAAM,QAAQ,GAAGL,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP;AACA,MAAM,MAAM,YAAY,GAAGH,iBAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;AACxD,MAAM,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAA;AACtE;AACA,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,QAAQ,EAAE,YAAY;AAC9B,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,CAAC,CAAC,CAAA;AACtE,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,QAAQ,QAAQ,EAAE,EAAE;AACpB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,gBAAgB,EAAE,CAAC,GAAG,KAAK;AAC7B,IAAI,IAAI;AACR,MAAM,MAAM,YAAY,GAAGJ,MAAI,CAAC,IAAI;AACpC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,QAAQ,GAAGH,iBAAe,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;AACxD,MAAM,MAAM,WAAW;AACvB,QAAQ,QAAQ,CAAC,iBAAiB;AAClC,QAAQJ,MAAI,CAAC,IAAI,CAACM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAEE,SAAO,CAAC,CAAA;;AAEnD,MAAM,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAA;AAC/E;AACA,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,aAAa,EAAE,WAAW;AAClC,QAAQ,SAAS,EAAE,CAAC,QAAQ,CAAC,iBAAiB;AAC9C,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,oDAAoD,EAAE,CAAC,CAAC,CAAA;AAC5E,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,gBAAgB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK;AACtC,IAAI,IAAI;AACR;AACA,MAAM,IAAI,CAACG,IAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AACnC,QAAQA,IAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AAClD,OAAA;;AAEA,MAAM,MAAM,KAAK,GAAGA,IAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;AACxC,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE;AAChC,QAAQ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;AAClD,OAAA;;AAEA;AACA,MAAM,MAAM,YAAY,GAAGX,MAAI,CAAC,IAAI;AACpC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,QAAQ,GAAGH,iBAAe,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;AACxD,MAAM,QAAQ,CAAC,iBAAiB,GAAG,OAAO,CAAA;AAC1C,MAAMC,aAAW,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;;AAElE,MAAM,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAA;AACzE;AACA,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,aAAa,EAAE,OAAO;AAC9B,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,oDAAoD,EAAE,CAAC,CAAC,CAAA;AAC5E,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,oBAAoB,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,KAAK;AACnD,IAAI,IAAI;AACR;AACA,MAAM,MAAM,eAAe,GAAGL,MAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AACnD,MAAM,MAAM,eAAe,GAAGA,MAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;;AAEnD;AACA,MAAM,MAAM,iBAAiB,GAAGA,MAAI,CAAC,IAAI;AACzC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,eAAe,GAAGH,iBAAe,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAA;AACpE,MAAM,MAAM,cAAc;AAC1B,QAAQ,eAAe,CAAC,iBAAiB;AACzC,QAAQJ,MAAI,CAAC,IAAI,CAACM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAEE,SAAO,CAAC,CAAA;AACnD,MAAM,IAAI,eAAe,KAAKR,MAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;AAC5D,QAAQ,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;AACzE,OAAA;;AAEA;AACA,MAAM,MAAM,eAAe,GAAG;AAC9B,QAAQ,SAAS;AACjB,QAAQ,MAAM;AACd,QAAQ,MAAM;AACd,QAAQ,MAAM;AACd,QAAQ,MAAM;AACd,QAAQ,OAAO;AACf,QAAQ,MAAM;AACd,OAAO,CAAA;AACP,MAAM,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE;AAC5C,QAAQ;AACR,UAAU,eAAe,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC;AAClD,UAAU,eAAe,KAAK,MAAA;AAC9B,UAAU;AACV,UAAU,MAAM,IAAI,KAAK,CAAC,wCAAwC,GAAG,MAAM,CAAC,CAAA;AAC5E,SAAA;AACA,OAAA;;AAEA;AACA,MAAM,IAAI,CAACW,IAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;AAC3C,QAAQ,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;AAC1D,OAAA;;AAEA,MAAM,IAAI,CAACA,IAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;AAC3C,QAAQA,IAAE,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AAC1D,OAAA;;AAEA;AACA,MAAM,aAAa,CAAC,eAAe,EAAE,eAAe,CAAC,CAAA;;AAErD;AACA,MAAM,MAAM,YAAY,GAAGX,MAAI,CAAC,IAAI;AACpC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,QAAQ,GAAGH,iBAAe,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;AACxD,MAAM,QAAQ,CAAC,iBAAiB,GAAG,eAAe,CAAA;AAClD,MAAMC,aAAW,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;;AAElE,MAAM,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAA;AAC9E;AACA,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,YAAY,EAAE,eAAe;AACrC,QAAQ,YAAY,EAAE,eAAe;AACrC,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,sDAAsD,EAAE,CAAC,CAAC,CAAA;AAC9E,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,OAAO,CAAA;AACP,KAAA;AACA,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,oBAAc,GAAGa,oBAAkB;;;;;;;;;;;;;;;;;;;;AC7PnC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;AACxB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;;AAE3B,SAAS,UAAU,CAAC,GAAG,EAAE;AACzB,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;AAC1D,EAAE,IAAI,IAAI,GAAG,IAAI,CAAA;AACjB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvC,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAA;AAChE,GAAA;AACA,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;AAC1B,CAAA;;AAEA,MAAMC,eAAa,GAAG;AACtB,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,EAAE;AACxC,IAAI,MAAM,EAAE,GAAG,GAAG,KAAK,EAAE,YAAY,GAAG,KAAK,EAAE,GAAG,OAAO,CAAA;;AAEzD,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACzC,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAClC,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE;AACpD,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;AACjD,QAAQ,OAAO,KAAK,CAAC,IAAI,CAAA;AACzB,OAAA;AACA,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AACvB,KAAA;;AAEA,IAAI,IAAI,CAAC,YAAY,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAC5C,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;AACjD,MAAM,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAC9B,KAAA;;AAEA,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;AAC9C,IAAI,MAAM,OAAO,GAAG,OAAO,EAAE,CAAA;AAC7B,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;AAC9B,IAAI,IAAI;AACR,MAAM,MAAM,IAAI,GAAG,MAAM,OAAO,CAAA;AAChC,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAC/B,QAAQ,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;AAC5D,OAAA;AACA,MAAM,OAAO,IAAI,CAAA;AACjB,KAAK,SAAS;AACd,MAAM,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AAC1B,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,CAAC,WAAW,EAAE,OAAO,EAAE;AACtC,IAAI,OAAO,OAAO,CAAC,EAAE,GAAG,KAAK;AAC7B,MAAM,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,GAAG,GAAG,IAAI,EAAE,CAAA;AACpE,MAAM,IAAI,QAAQ,EAAE;AACpB,QAAQ,MAAM,GAAG;AACjB,UAAU,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EAAE,GAAG,IAAI,KAAK,CAAA;AAC1E,QAAQ,MAAM,GAAG,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC1D,QAAQ,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE;AACvD,UAAU,GAAG;AACb,UAAU,YAAY;AACtB,SAAS,CAAC,CAAA;AACV,OAAA;AACA,MAAM,OAAO,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAC5B,KAAK,CAAA;AACL,GAAG;;AAEH,EAAE,UAAU,CAAC,GAAG,EAAE;AAClB,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AACrB,GAAG;;AAEH,EAAE,gBAAgB,CAAC,MAAM,EAAE;AAC3B,IAAI,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE;AAClC,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC/C,KAAA;AACA,GAAG;;AAEH,EAAE,KAAK,GAAG;AACV,IAAI,KAAK,CAAC,KAAK,EAAE,CAAA;AACjB,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAA;AACpB,GAAG;;AAEH,EAAE,KAAK,GAAG;AACV,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK,CAAC,IAAI;AACzB,MAAM,QAAQ,EAAE,QAAQ,CAAC,IAAI;AAC7B,MAAM,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;AAC7B,KAAK,CAAA;AACL,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,eAAc,GAAGA,eAAa;;;;;;;;;;;;;;;;;CC1G9B,MAAM,kBAAkB,GAAGlD,yBAA2C,EAAA,CAAA;;AAEtE,CAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;AAC1B,CAAA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;AAC5B,CAAA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;AACjC,CAAA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;;AAEjC,CAAA,MAAM,WAAW,GAAG;AACpB,GAAE,eAAe,CAAC,YAAY,EAAE,SAAS,EAAE;AAC3C,KAAI,SAAS,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;IACvC;;GAED,MAAM,SAAS,CAAC,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AACrD;AACA,KAAI,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;AACnC,OAAM,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;AACtC,MAAA;;AAEA;AACA,KAAI,IAAI,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;AAC1C,OAAM,OAAO,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;AAC7C,MAAA;;AAEA,KAAI,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;AACpE,KAAI,cAAc,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;AAC7C,KAAI,IAAI;OACF,OAAO,MAAM,OAAO,CAAA;AAC1B,MAAK,SAAS;AACd,OAAM,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;AACzC,MAAA;IACG;;GAED,MAAM,QAAQ,CAAC,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AACpD,KAAI,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;AAC5E,KAAI,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;;AAErD,KAAI,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAA;KAC3B,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;KAC5C,IAAI,CAAC,OAAO,EAAE;AAClB,OAAM,MAAM,IAAI,KAAK,CAAC,CAAC,4BAA4B,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACrE,MAAA;;KAEI,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;AAChD,KAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;AACrC,KAAI,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;KAC5D,OAAO,CAAC,GAAG;AACf,OAAM,CAAC,sBAAsB,EAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;MACvF,CAAA;AACL,KAAI,OAAO,MAAM,CAAA;IACd;;AAEH,GAAE,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE;KAC9B,MAAM,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAA;KAC5C,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;KAC1C,IAAI,IAAI,EAAE;AACd,OAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AAC1B,OAAM,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;OAChC,OAAO,CAAC,GAAG;AACjB,SAAQ,CAAC,0BAA0B,EAAE,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3E,CAAA;AACP,MAAA;IACG;;AAEH,GAAE,aAAa,GAAG;AAClB,KAAI,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAA;KAC1B,OAAO,CAAC,KAAK,EAAE,CAAA;KACf,cAAc,CAAC,KAAK,EAAE,CAAA;KACtB,cAAc,CAAC,KAAK,EAAE,CAAA;KACtB,OAAO,CAAC,GAAG,CAAC,CAAC,+BAA+B,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAA;IACxE;;AAEH,GAAE,KAAK,GAAG;KACN,OAAO,CAAC,KAAK,EAAE,CAAA;KACf,cAAc,CAAC,KAAK,EAAE,CAAA;KACtB,cAAc,CAAC,KAAK,EAAE,CAAA;IACvB;;AAEH;AACA;AACA;AACA;AACA,GAAE,kBAAkB,GAAG;AACvB,KAAI,MAAM,EAAE,OAAO,EAAE,GAAGC,YAAmB,CAAA;KACvC,MAAM,aAAa,GAAGC,eAA0B,CAAA;;KAEhD,OAAO,CAAC,MAAM;AAClB,OAAM,yBAAyB;OACzB,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK;AAC5C,SAAQ,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;AACnD,SAAQ,aAAa,CAAC,KAAK,EAAE,CAAC;AAC9B,SAAQ,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QACzB;MACF,CAAA;AACL,KAAI,OAAO,CAAC,MAAM,CAAC,6BAA6B,EAAE,YAAY;OACxD,WAAW,CAAC,aAAa,EAAE,CAAA;OAC3B,aAAa,CAAC,KAAK,EAAE,CAAA;AAC3B,OAAM,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC9B,MAAK,CAAC,CAAA;AACN,KAAI,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,YAAY;OACjD,aAAa,CAAC,KAAK,EAAE,CAAA;AAC3B,OAAM,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC9B,MAAK,CAAC,CAAA;KACF,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,YAAY,aAAa,CAAC,KAAK,EAAE,CAAC,CAAA;IAC1E;EACF,CAAA;;AAED,CAAA,aAAc,GAAG,WAAW,CAAA;;;;;;;;;;;;;;;;;AC7G5B,CAAA,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,GAAGF,YAAmB,CAAA;CAChD,MAAM,IAAI,GAAGC,YAAe,CAAA;CAC5B,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,GAAGC,YAAa,CAAA;CACjE,MAAM;AACN,GAAE,wBAAwB;AAC1B,GAAE,eAAe;AACjB,GAAE,WAAW;AACb,EAAC,GAAGC,IAAwB,CAAA;;CAE5B,MAAM,OAAO,GAAG,WAAW,CAAA;CAC3B,MAAM,cAAc,GAAG,gBAAgB,CAAA;;AAEvC,CAAA,MAAM,kBAAkB,GAAG;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,YAAY,EAAE;AAChB,KAAI,GAAG;AACP,KAAI,KAAK;AACT,KAAI,YAAY;AAChB,KAAI,YAAY;AAChB,KAAI,WAAW;KACX,aAAa,GAAG,YAAY;KAC5B,SAAS,GAAG,IAAI;KAChB,YAAY,GAAG,IAAI;QAChB;AACP,KAAI,IAAI;AACR;AACA,OAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI;AAChC,SAAQ,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,SAAQ,OAAO;AACf,SAAQ,KAAK;AACb,SAAQ,cAAc;QACf,CAAA;;AAEP;OACM,wBAAwB,CAAC,QAAQ,CAAC,CAAA;;AAExC;OACM,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;;AAErD;OACM,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;OACnD,MAAM,oBAAoB,GAAG,WAAW,CAAC,aAAa,CAAC,eAAe,CAAC,CAAA;;AAE7E;OACM,MAAM,aAAa,GAAG;SACpB,IAAI,EAAE,YAAY;AAC1B,SAAQ,aAAa,EAAE,aAAa,IAAI,YAAY;AACpD,SAAQ,WAAW,EAAE,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC5D,SAAQ,WAAW;AACnB,WAAU,SAAS,CAAC,YAAY,CAAC,EAAE,WAAW,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AAC1E,SAAQ,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACtC,CAAA;;AAEP;AACA,OAAM,IAAI,aAAa,KAAK,KAAK,IAAI,SAAS,EAAE;AAChD,SAAQ,aAAa,CAAC,SAAS,GAAG,SAAS,CAAA;AAC3C,QAAA;;AAEA;AACA,OAAM,IAAI,aAAa,KAAK,KAAK,IAAI,YAAY,EAAE;AACnD,SAAQ,aAAa,CAAC,YAAY,GAAG,YAAY,CAAA;AACjD,QAAA;;AAEA,OAAM,SAAS,CAAC,YAAY,CAAC,GAAG,aAAa,CAAA;;AAE7C;AACA,OAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;SAC1D,IAAI,EAAE,KAAK;AACnB,QAAO,CAAC,CAAA;;OAEF,OAAO,CAAC,GAAG;AACjB,SAAQ,CAAC,qCAAqC,EAAE,YAAY,CAAC,EAAE,EAAE,YAAY,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;QAC3F,CAAA;;AAEP;OACM,MAAM,WAAW,GAAGC,kBAA+B,EAAA,CAAA;AACzD,OAAM,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;;AAEjD;AACA,OAAM,OAAO;SACL,OAAO,EAAE,IAAI;AACrB,SAAQ,YAAY;AACpB,SAAQ,YAAY;AACpB,SAAQ,aAAa;QACd,CAAA;MACF,CAAC,OAAO,KAAK,EAAE;AACpB,OAAM,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAA;AACzE,OAAM,OAAO;SACL,KAAK,EAAE,IAAI;AACnB,SAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;QACvB,CAAA;AACP,MAAA;IACG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,aAAa,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AACjC,KAAI,IAAI;AACR,OAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI;AAChC,SAAQ,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,SAAQ,OAAO;AACf,SAAQ,KAAK;AACb,SAAQ,cAAc;QACf,CAAA;;AAEP;OACM,MAAM,aAAa,GAAG,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;;AAEzD;OACM,IAAI,OAAO,GAAG,EAAE,CAAA;AACtB,OAAM,IAAI;AACV,SAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI;AACrC,WAAU,SAAS;AACnB,WAAU,IAAI;AACd,WAAU,KAAK;AACf,WAAU,uBAAuB;UACxB,CAAA;AACT,SAAQ,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE;AACrC,WAAU,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;AAC5E,WAAU,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,EAAE,CAAA;AAC7C,UAAA;QACO,CAAC,OAAO,CAAC,EAAE;AAClB;AACA,QAAA;;AAEA;OACM,MAAM,kBAAkB,GAAG,EAAE,CAAA;AACnC,OAAM,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK;AAC9D,SAAQ,IAAI;AACZ,WAAU,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;WACjE,MAAM,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAA;WAClE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;;WAE7C,MAAM,QAAQ,GAAG;AAC3B,aAAY,IAAI;AAChB,aAAY,IAAI,EAAE,IAAI,CAAC,IAAI;AAC3B,aAAY,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,YAAY;AAC7D,aAAY,WAAW;AACvB,aAAY,WAAW,EAAE,IAAI,CAAC,WAAW;AACzC,aAAY,WAAW,EAAE,IAAI,CAAC,WAAW;YAC9B,CAAA;;AAEX;AACA,WAAU,IAAI,IAAI,CAAC,SAAS,EAAE;AAC9B,aAAY,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;;AAE/C;AACA;AACA;aACY,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE;AAC1D,eAAc,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI;iBAC/B,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI;gBAClC,CAAA;AACf,eAAc,IAAI,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE;AACxD,iBAAgB,QAAQ,CAAC,SAAS,CAAC,WAAW;AAC9C,mBAAkB,YAAY,CAAC,SAAS,CAAC,WAAW,CAAA;AACpD,gBAAA;AACA,cAAA;AACA,YAAA;;AAEA;AACA,WAAU,IAAI,IAAI,CAAC,YAAY,EAAE;AACjC,aAAY,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;AACrD,YAAA;;AAEA,WAAU,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;UAClC,CAAC,OAAO,YAAY,EAAE;WACrB,OAAO,CAAC,KAAK;AACvB,aAAY,CAAC,gDAAgD,EAAE,IAAI,CAAC,CAAC,CAAC;AACtE,aAAY,YAAY;YACb,CAAA;AACX;AACA,UAAA;AACA,QAAO,CAAC,CAAA;;OAEF,OAAO,CAAC,GAAG;SACT,CAAC,4BAA4B,EAAE,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC;QACrE,CAAA;;AAEP;AACA,OAAM,OAAO;SACL,SAAS,EAAE,kBAAkB;QAC9B,CAAA;MACF,CAAC,OAAO,KAAK,EAAE;AACpB,OAAM,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAA;AAC3E,OAAM,OAAO;SACL,KAAK,EAAE,IAAI;AACnB,SAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;SACtB,SAAS,EAAE,EAAE;QACd,CAAA;AACP,MAAA;IACG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,WAAW,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,KAAK;AAC7C,KAAI,IAAI;AACR,OAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI;AAChC,SAAQ,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,SAAQ,OAAO;AACf,SAAQ,KAAK;AACb,SAAQ,cAAc;QACf,CAAA;;AAEP;OACM,MAAM,aAAa,GAAG,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;;AAEzD;AACA,OAAM,MAAM,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC,CAAA;OAChD,IAAI,CAAC,YAAY,EAAE;SACjB,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;AAC9D,QAAA;;AAEA,OAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;OACzE,MAAM,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAA;OAClE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;;OAE7C,MAAM,QAAQ,GAAG;SACf,IAAI,EAAE,YAAY;AAC1B,SAAQ,IAAI,EAAE,YAAY,CAAC,IAAI;AAC/B,SAAQ,aAAa,EAAE,YAAY,CAAC,aAAa,IAAI,YAAY;AACjE,SAAQ,WAAW;AACnB,SAAQ,WAAW,EAAE,YAAY,CAAC,WAAW;AAC7C,SAAQ,WAAW,EAAE,YAAY,CAAC,WAAW;QACtC,CAAA;;AAEP;AACA,OAAM,IAAI,YAAY,CAAC,SAAS,EAAE;AAClC,SAAQ,QAAQ,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;AACnD,QAAA;;AAEA;AACA,OAAM,IAAI,YAAY,CAAC,YAAY,EAAE;AACrC,SAAQ,QAAQ,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAA;AACzD,QAAA;;OAEM,OAAO,CAAC,GAAG,CAAC,CAAC,yCAAyC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;;AAE7E;AACA,OAAM,OAAO;AACb,SAAQ,QAAQ;QACT,CAAA;MACF,CAAC,OAAO,KAAK,EAAE;AACpB,OAAM,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAA;AAC1E,OAAM,OAAO;SACL,KAAK,EAAE,IAAI;AACnB,SAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;QACvB,CAAA;AACP,MAAA;IACG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,cAAc,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,KAAK;AAChD,KAAI,IAAI;AACR,OAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI;AAChC,SAAQ,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,SAAQ,OAAO;AACf,SAAQ,KAAK;AACb,SAAQ,cAAc;QACf,CAAA;;AAEP;OACM,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;;AAErD;OACM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;SAC3C,MAAM,IAAI,KAAK,CAAC,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;AAC9D,QAAA;;AAEA,OAAM,OAAO,SAAS,CAAC,YAAY,CAAC,CAAA;;AAEpC;AACA,OAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;SAC1D,IAAI,EAAE,KAAK;AACnB,QAAO,CAAC,CAAA;;OAEF,OAAO,CAAC,GAAG,CAAC,CAAC,uCAAuC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;;AAE3E;OACM,MAAM,WAAW,GAAGA,kBAA+B,EAAA,CAAA;AACzD,OAAM,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;;AAEjD;AACA,OAAM,OAAO;SACL,OAAO,EAAE,IAAI;AACrB,SAAQ,YAAY;QACb,CAAA;MACF,CAAC,OAAO,KAAK,EAAE;AACpB,OAAM,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAA;AAC3E,OAAM,OAAO;SACL,KAAK,EAAE,IAAI;AACnB,SAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;QACvB,CAAA;AACP,MAAA;IACG;EACF,CAAA;;AAED,CAAA,oBAAc,GAAG,kBAAkB,CAAA;;;;AC7UnC,MAAM,OAAEiC,KAAG,EAAE,GAAGrC,YAAmB,CAAA;AACnC,MAAM+B,MAAI,GAAG9B,YAAe,CAAA;AAC5B,MAAM,iBAAE+B,eAAa,EAAE,GAAG9B,YAAa,CAAA;AACvC,MAAMkB,QAAM,GAAGjB,QAAoB,CAAA;AACnC,MAAM,mBAAEgC,iBAAe,EAAE,GAAG/B,IAAwB,CAAA;;AAEpD,MAAMkC,gBAAc,GAAG,cAAc,CAAA;AACrC,MAAMC,SAAO,GAAG,WAAW,CAAA;;AAE3B,MAAMY,kBAAgB,GAAG;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,wBAAwB,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,KAAK;AAC1D,IAAI,IAAI;AACR;AACA,MAAM,MAAM,QAAQ,GAAGpB,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,YAAY,GAAGH,iBAAe,CAAC,QAAQ,CAAC,CAAA;;AAEpD;AACA,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;;AAErC;AACA,MAAMH,eAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;;AAEpE;AACA,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACZ,QAAM,CAAC,oBAAoB,EAAE;AACxD,QAAQ,OAAO,EAAE,YAAY;AAC7B,OAAO,CAAC,CAAA;AACR,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,iBAAiB,EAAE;AACrD,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,yBAAyB,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAC7C,IAAI,IAAI;AACR,MAAM,MAAM,QAAQ,GAAGW,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,YAAY,GAAGH,iBAAe,CAAC,QAAQ,CAAC,CAAA;AACpD,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACf,QAAM,CAAC,oBAAoB,EAAE;AACxD,QAAQ,OAAO,EAAE,YAAY;AAC7B,OAAO,CAAC,CAAA;AACR,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,oBAAoB,EAAE;AACxD,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,kBAAc,GAAG+B,kBAAgB;;;;;;;;;;;;;;;;;AC7DjC,MAAM,EAAE,MAAM,EAAE,GAAGnD,YAAoD,CAAA;AACvE,MAAM;AACN,EAAE,oBAAoB;AACtB,CAAC,GAAGC,YAAoD,CAAA;AACxD,MAAM;AACN,EAAE,6BAA6B;AAC/B,CAAC,GAAGC,YAA6D,CAAA;AACjE,MAAM6B,MAAI,GAAG5B,YAAe,CAAA;AAC5B,MAAMuC,IAAE,GAAGtC,YAAa,CAAA;;AAExB;AACA;AACA;AACA,IAAIgD,YAAU,GAAG,IAAI,CAAA;;AAErB;AACA;AACA;AACA;AACA,SAAS,uBAAuB,CAAC,YAAY,EAAE;AAC/C,EAAE,OAAO,YAAY,IAAI,EAAE,IAAI,YAAY,IAAI,EAAE,CAAA;AACjD,CAAA;;AAEA;AACA;AACA;AACA,SAAS,cAAc,CAAC,SAAS,EAAE;AACnC,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,KAAK,CAAA;AAC9B,EAAE;AACF,IAAI,SAAS,CAAC,QAAQ,CAAC,+BAA+B,CAAC;AACvD,IAAI,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAA;AAC7C,IAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,cAAY,GAAG;AACxB,EAAE,IAAID,YAAU,KAAK,IAAI,EAAE,OAAOA,YAAU,CAAA;;AAE5C,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG/C,YAAwB,CAAA;AAC/C,EAAE,MAAM,YAAY,GAAG,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAA;;AAE9D;AACA,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;AACrC,EAAE,IAAI,gBAAgB,GAAG,IAAI,CAAA;AAC7B,EAAE,IAAI,IAAI,EAAE;AACZ,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;AAC3C,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAA;AAC9C,IAAI,IAAI;AACR,MAAM,MAAM,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAA;AACjD,MAAM,MAAM,QAAQ,GAAGqC,IAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;AACpD,MAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B;AACA,QAAQ,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACvD,UAAU,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;AACpD,UAAU,IAAI,KAAK,IAAI,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AACxE,YAAY,gBAAgB,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AAC7D,YAAY,MAAA;AACZ,WAAA;AACA,SAAA;AACA;AACA,QAAQ,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AAC3E,OAAA;AACA,KAAK,CAAC,MAAM,EAAA;AACZ,GAAA;;AAEA,EAAE,IAAI;AACN,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,WAAW,CAAA;AAClD,IAAI,MAAM,MAAM,GAAG,eAAe,CAAA;AAClC,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE;AAC3E,MAAM,QAAQ,EAAE,MAAM;AACtB,MAAM,OAAO,EAAE,IAAI;AACnB,KAAK,CAAC,CAAA;AACN;AACA,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;AACxC,IAAI,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;AAC1C,IAAI,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,MAAM,GAAG,QAAQ,EAAE;AAC9C,MAAMU,YAAU,GAAG,GAAA;AACnB,SAAS,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAA;AACnD,SAAS,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;AAC/B,KAAK,MAAM;AACX,MAAMA,YAAU,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;AACzC,KAAA;AACA,GAAG,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,OAAO,CAAC,IAAI,CAAC,+CAA+C,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;AAC9E,IAAIA,YAAU,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;AACvC,GAAA;;AAEA;AACA,EAAE,MAAM,YAAY,GAAGA,YAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAC5C,EAAE,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE;AAClC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACrC,MAAMA,YAAU,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;AAC7B,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,IAAI,gBAAgB,EAAE;AACxB,IAAI,IAAI;AACR,MAAM,MAAM,WAAW,GAAG,QAAQ;AAClC,QAAQ,CAAC,MAAM,EAAEA,YAAU,CAAC,4BAA4B,CAAC;AACzD,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;AAC3C,OAAO,CAAC,IAAI,EAAE,CAAA;AACd,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;AACrD,MAAM,IAAI,UAAU,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;AAC/E,QAAQ,OAAO,CAAC,GAAG;AACnB,UAAU,CAAC,+BAA+B,EAAE,WAAW,CAAC,iBAAiB,CAAC;AAC1E,YAAY,CAAC,gCAAgC,EAAE,gBAAgB,CAAC,CAAC;AACjE,SAAS,CAAA;AACT,QAAQA,YAAU,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAEA,YAAU,CAAC,CAAC,CAAA;AACxD,OAAA;AACA,KAAK,CAAC,MAAM,EAAA;AACZ,GAAA;;AAEA,EAAE,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAEA,YAAU,CAAC,CAAA;AAC3D,EAAE,OAAOA,YAAU,CAAA;AACnB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS,uBAAuB,GAAG;AACnC,EAAE,MAAM,GAAG,GAAG,EAAE,CAAA;AAChB,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AAC1D,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,SAAA;AAC/D,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AACpB,GAAA;AACA,EAAE,GAAG,CAAC,IAAI,GAAGC,cAAY,EAAE,CAAA;AAC3B,EAAE,OAAO,GAAG,CAAA;AACZ,CAAA;;AAEA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,CAAA;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,IAAI,GAAG,EAAE,CAAA;;AAE/B;AACA;AACA;AACA,MAAM,MAAM,GAAG;AACf,EAAE,YAAY,EAAE,cAAc;AAC9B,EAAE,UAAU,EAAE,YAAY;AAC1B,EAAE,SAAS,EAAE,WAAW;AACxB,EAAE,KAAK,EAAE,OAAO;AAChB,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE;AAC5C,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW,EAAE,OAAO,QAAQ,CAAA;AAChD,EAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK;AAC5D,IAAI,OAAO,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AACpE,GAAG,CAAC,CAAA;AACJ,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uBAAuB,CAAC,YAAY,EAAE;AACrD,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;AACrC,EAAE,MAAM,QAAQ,GAAG,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AACnE,EAAE,MAAM,QAAQ,GAAG,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;;AAEjE,EAAE,IAAI,CAACX,IAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAACA,IAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AAC5D,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,mEAAmE;AACzE,KAAK,CAAA;AACL,IAAI,OAAA;AACJ,GAAA;;AAEA,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAACA,IAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;AACnE,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAACA,IAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;AAChE,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAA;;AAEpD,EAAE;AACF,IAAI,CAAC,WAAW,CAAC,aAAa;AAC9B,IAAI,CAAC,OAAO,EAAE,SAAS;AACvB,IAAI,CAAC,OAAO,EAAE,aAAA;AACd,IAAI;AACJ,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,oFAAoF;AAC1F,KAAK,CAAA;AACL,IAAI,OAAA;AACJ,GAAA;;AAEA;AACA,EAAE;AACF,IAAI,WAAW,CAAC,WAAW;AAC3B,IAAI,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,IAAA;AACpD,IAAI;AACJ,IAAI,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAA;AACtE,IAAI,OAAA;AACJ,GAAA;;AAEA,EAAE,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;;AAEjE,EAAE,MAAM,KAAK,GAAGpC,UAAgB,CAAA;AAChC,EAAE,MAAM,QAAQ,GAAG;AACnB,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AACxD,IAAI,CAAC,cAAc,EAAE,kBAAkB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AAChE,IAAI,CAAC,cAAc,EAAE,kBAAkB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;AACpE,IAAI,0BAA0B;AAC9B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;;AAEb,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AACtD,IAAI,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO;AAC7B,MAAM;AACN,QAAQ,QAAQ,EAAE,uBAAuB;AACzC,QAAQ,IAAI,EAAE,QAAQ;AACtB,QAAQ,MAAM,EAAE,MAAM;AACtB,QAAQ,OAAO,EAAE;AACjB,UAAU,cAAc,EAAE,mCAAmC;AAC7D,UAAU,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;AACvD,SAAS;AACT,OAAO;AACP,MAAM,CAAC,GAAG,KAAK;AACf,QAAQ,IAAI,IAAI,GAAG,EAAE,CAAA;AACrB,QAAQ,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,CAAC,CAAA;AAClD,QAAQ,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM;AAC5B,UAAU,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE;AACtC,YAAY,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;AACrC,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB,cAAc,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5E,aAAa,CAAA;AACb,WAAA;AACA,SAAS,CAAC,CAAA;AACV,OAAO;AACP,KAAK,CAAA;AACL,IAAI,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;AAC3B,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;AACvB,IAAI,GAAG,CAAC,GAAG,EAAE,CAAA;AACb,GAAG,CAAC,CAAA;;AAEJ,EAAE,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;AAC9C,EAAE,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,IAAI,CAAA;AACzE,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE;AAC1B,IAAI,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;AAClD,GAAA;;AAEA,EAAEoC,IAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAClE,EAAE,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAA;AAC1E,CAAA;;AAEA,MAAMY,eAAa,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,EAAE,OAAO,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,KAAK;AAClE;AACA,IAAI,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAClD,IAAI,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,IAAI,QAAQ,CAAC,MAAM,EAAE;AAC7E,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,0CAA0C,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AAC5E,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,UAAU;AAClB,QAAQ,KAAK,EAAE,QAAQ,CAAC,KAAK;AAC7B,QAAQ,SAAS,EAAE,QAAQ,CAAC,SAAS;AACrC,QAAQ,MAAM,EAAE,MAAM,CAAC,SAAS;AAChC,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AACvC,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,CAAC,wDAAwD,EAAE,UAAU,CAAC,CAAC;AAC/E,OAAO,CAAA;AACP,MAAM,OAAO,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAC1C,KAAA;;AAEA;AACA,IAAI,MAAM,YAAY,GAAG,CAAC,YAAY;AACtC,MAAM,IAAI;AACV;AACA,QAAQ,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AAC3C,UAAU,MAAMA,eAAa,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;AACzD,SAAA;;AAEA;AACA;AACA,QAAQ,IAAI;AACZ,UAAU,MAAM,EAAE,OAAO,EAAE,GAAGA,eAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAC3D,UAAU,MAAM,YAAY,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,IAAI;AACnD,YAAY,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,UAAU;AAChD,WAAW,CAAA;AACX,UAAU,IAAI,YAAY,EAAE,SAAS,EAAE;AACvC,YAAY,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,CAAA;AAC9C,YAAY,IAAI,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAA;AAC5D,YAAY,IAAI,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAA;AACxD,YAAY,IAAI,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAA;AAClE,YAAY,IAAI,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAA;AAC3E,YAAY,IAAI,GAAG,CAAC,UAAU,EAAE;AAChC,cAAc,SAAS,CAAC,UAAU,GAAG;AACrC,gBAAgB,GAAG,SAAS,CAAC,UAAU;AACvC,gBAAgB,GAAG,GAAG,CAAC,UAAU;AACjC,eAAe,CAAA;AACf,aAAA;AACA,WAAA;AACA,SAAS,CAAC,OAAO,UAAU,EAAE;AAC7B;AACA,SAAA;;AAEA,QAAQ,OAAO,CAAC,GAAG;AACnB,UAAU,CAAC,iCAAiC,EAAE,UAAU,CAAC,aAAa;AACtE,YAAY,SAAS,CAAC,SAAS,IAAI,OAAA;AACnC,WAAW,CAAC,CAAC;AACb,SAAS,CAAA;;AAET;AACA,QAAQ,IAAI,SAAS,CAAA;AACrB,QAAQ,IAAI,SAAS,CAAC,SAAS,KAAK,iBAAiB,EAAE;AACvD;AACA,UAAU,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;AAC7D,UAAU,IAAI,CAAC,GAAG,EAAE;AACpB,YAAY,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;AACvE,WAAA;;AAEA;AACA,UAAU,MAAM,OAAO,GAAG,EAAE,CAAA;AAC5B,UAAU,IAAI,SAAS,CAAC,cAAc,IAAI,WAAW,EAAE;AACvD,YAAY,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,OAAO;AAC5D,cAAc,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK;AAC1C,gBAAgB,OAAO,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;AACxE,eAAe;AACf,aAAa,CAAA;AACb,WAAA;;AAEA,UAAU,SAAS,GAAG,IAAI,6BAA6B,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE;AACtE,YAAY,WAAW,EAAE;AACzB,cAAc,OAAO;AACrB,aAAa;AACb,WAAW,CAAC,CAAA;AACZ,SAAS,MAAM;AACf;AACA,UAAU,MAAM,GAAG,GAAG,uBAAuB,EAAE,CAAA;AAC/C,UAAU,IAAI,SAAS,CAAC,UAAU,IAAI,WAAW,EAAE;AACnD,YAAY,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO;AACxD,cAAc,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK;AAC3C,gBAAgB,IAAI,WAAW,CAAC,aAAa,CAAC,KAAK,SAAS,EAAE;AAC9D,kBAAkB,GAAG,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC,CAAA;AAC1D,iBAAA;AACA,eAAe;AACf,aAAa,CAAA;AACb,WAAA;;AAEA;AACA,UAAU,IAAI,SAAS,CAAC,SAAS,EAAE;AACnC,YAAY,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK;AAC7E,cAAc,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;AACvE,aAAa,CAAC,CAAA;AACd,WAAA;;AAEA;AACA,UAAU,IAAI,SAAS,CAAC,YAAY,EAAE;AACtC,YAAY,IAAI;AAChB,cAAc,MAAM,uBAAuB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;AACnE,aAAa,CAAC,OAAO,GAAG,EAAE;AAC1B,cAAc,OAAO,CAAC,IAAI;AAC1B,gBAAgB,mDAAmD;AACnE,gBAAgB,GAAG,CAAC,OAAO;AAC3B,eAAe,CAAA;AACf,aAAA;AACA,WAAA;;AAEA;AACA,UAAU,MAAM,IAAI,GAAG,CAAC,IAAI,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAA;AAClD,UAAU,IAAI,SAAS,CAAC,WAAW,IAAI,WAAW,EAAE;AACpD,YAAY,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,OAAO;AACzD,cAAc,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,KAAK;AAC3C,gBAAgB,MAAM,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC,CAAA;AACxD,gBAAgB,IAAI,KAAK,EAAE;AAC3B,kBAAkB,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,SAAS,EAAE;AACnE,oBAAoB,IAAI,CAAC,IAAI;AAC7B,sBAAsB,GAAG,KAAA;AACzB,yBAAyB,KAAK,CAAC,MAAM,CAAC,SAAS,CAAA;AAC/C,yBAAyB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAA;AAC5C,yBAAyB,MAAM,CAAC,OAAO,CAAC;AACxC,qBAAqB,CAAA;AACrB,mBAAmB,MAAM;AACzB,oBAAoB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACpC,mBAAA;AACA,iBAAA;AACA,eAAe;AACf,aAAa,CAAA;AACb,WAAA;;AAEA;AACA,UAAU,MAAM,MAAM,GAAGvB,MAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;AAC1D,UAAU,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,YAAY;AACZ,cAAc,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;AACzC,cAAc,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAA;AAC5C,cAAc;AACd,cAAc,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAA;AACnE,aAAA;AACA,WAAA;;AAEA,UAAU,SAAS,GAAG,IAAI,oBAAoB,CAAC;AAC/C,YAAY,OAAO,EAAE,SAAS,CAAC,OAAO;AACtC,YAAY,IAAI;AAChB,YAAY,GAAG;AACf,WAAW,CAAC,CAAA;AACZ,SAAA;;AAEA;AACA,QAAQ,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE;AACtC,UAAU,MAAM,EAAE,IAAI;AACtB,UAAU,SAAS;AACnB,UAAU,KAAK,EAAE,EAAE;AACnB,UAAU,SAAS,EAAE,EAAE;AACvB,UAAU,MAAM,EAAE,MAAM,CAAC,UAAU;AACnC,SAAS,CAAC,CAAA;;AAEV;AACA,QAAQ,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;AAClC,UAAU,IAAI,EAAE,MAAM;AACtB,UAAU,OAAO,EAAE,OAAO;AAC1B,SAAS,CAAC,CAAA;;AAEV;AACA,QAAQ,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;;AAEvC;AACA,QAAQ,IAAI,KAAK,GAAG,EAAE,CAAA;AACtB,QAAQ,IAAI;AACZ,UAAU,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAA;AACtD,UAAU,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE,CAAA;AACzC,SAAS,CAAC,OAAO,UAAU,EAAE;AAC7B,UAAU,OAAO,CAAC,IAAI;AACtB,YAAY,CAAC,yCAAyC,EAAE,UAAU,CAAC,CAAC,CAAC;AACrE,YAAY,UAAU,CAAC,OAAO;AAC9B,WAAW,CAAA;AACX,SAAA;;AAEA;AACA,QAAQ,IAAI,SAAS,GAAG,EAAE,CAAA;AAC1B,QAAQ,IAAI;AACZ,UAAU,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAA;AAC9D,UAAU,SAAS,GAAG,eAAe,CAAC,SAAS,IAAI,EAAE,CAAA;AACrD,SAAS,CAAC,OAAO,cAAc,EAAE;AACjC;AACA,SAAA;;AAEA;AACA,QAAQ,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE;AACtC,UAAU,MAAM;AAChB,UAAU,SAAS;AACnB,UAAU,KAAK;AACf,UAAU,SAAS;AACnB,UAAU,MAAM,EAAE,MAAM,CAAC,SAAS;AAClC,SAAS,CAAC,CAAA;;AAEV,QAAQ,OAAO,CAAC,GAAG;AACnB,UAAU,CAAC,kCAAkC,EAAE,UAAU,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC;AAClH,SAAS,CAAA;;AAET,QAAQ,OAAO;AACf,UAAU,OAAO,EAAE,IAAI;AACvB,UAAU,UAAU;AACpB,UAAU,KAAK;AACf,UAAU,SAAS;AACnB,UAAU,MAAM,EAAE,MAAM,CAAC,SAAS;AAClC,SAAS,CAAA;AACT,OAAO,CAAC,OAAO,KAAK,EAAE;AACtB,QAAQ,OAAO,CAAC,KAAK;AACrB,UAAU,CAAC,sCAAsC,EAAE,UAAU,CAAC,CAAC,CAAC;AAChE,UAAU,KAAK;AACf,SAAS,CAAA;;AAET;AACA,QAAQ,IAAI,YAAY,GAAG,KAAK,CAAC,OAAO,CAAA;AACxC,QAAQ,IAAI,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AAC3C,UAAU,YAAY;AACtB,YAAY,oEAAoE;AAChF,YAAY,0DAA0D,CAAA;AACtE,SAAA;;AAEA;AACA,QAAQ,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE;AACtC,UAAU,MAAM,EAAE,IAAI;AACtB,UAAU,SAAS,EAAE,IAAI;AACzB,UAAU,KAAK,EAAE,EAAE;AACnB,UAAU,SAAS,EAAE,EAAE;AACvB,UAAU,MAAM,EAAE,MAAM,CAAC,KAAK;AAC9B,UAAU,KAAK,EAAE,YAAY;AAC7B,SAAS,CAAC,CAAA;;AAEV,QAAQ,OAAO;AACf,UAAU,KAAK,EAAE,IAAI;AACrB,UAAU,OAAO,EAAE,YAAY;AAC/B,UAAU,UAAU;AACpB,UAAU,MAAM,EAAE,MAAM,CAAC,KAAK;AAC9B,SAAS,CAAA;AACT,OAAO,SAAS;AAChB,QAAQ,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;AACxC,OAAA;AACA,KAAK,GAAG,CAAA;;AAER,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;AAC/C,IAAI,OAAO,YAAY,CAAA;AACvB,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,OAAO,GAAG,EAAE,UAAU,KAAK;AACzC,IAAI,IAAI;AACR;AACA,MAAM,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AACzC,QAAQ,IAAI;AACZ,UAAU,MAAM,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAC7C,SAAS,CAAC,OAAO,CAAC,EAAE;AACpB;AACA,SAAA;AACA,OAAA;;AAEA,MAAM,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAClD,MAAM,IAAI,CAAC,MAAM,EAAE;AACnB,QAAQ,OAAO;AACf,UAAU,OAAO,EAAE,IAAI;AACvB,UAAU,UAAU;AACpB,UAAU,OAAO,EAAE,wBAAwB;AAC3C,SAAS,CAAA;AACT,OAAA;;AAEA,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,iCAAiC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;;AAEnE;AACA,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AACzB,QAAQ,IAAI;AACZ,UAAU,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;AACrC,SAAS,CAAC,OAAO,UAAU,EAAE;AAC7B,UAAU,OAAO,CAAC,IAAI;AACtB,YAAY,CAAC,yCAAyC,EAAE,UAAU,CAAC,CAAC,CAAC;AACrE,YAAY,UAAU,CAAC,OAAO;AAC9B,WAAW,CAAA;AACX,SAAA;AACA,OAAA;;AAEA,MAAM,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;;AAEtC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,gCAAgC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;;AAElE,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,UAAU;AAClB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,sCAAsC,EAAE,UAAU,CAAC,CAAC,CAAC;AAC9D,QAAQ,KAAK;AACb,OAAO,CAAA;AACP;AACA,MAAM,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;AACtC,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;AAC9B,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,KAAK;AAC5E,IAAI,IAAI;AACR,MAAM,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAClD,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACrC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AAC9D,OAAA;;AAEA;AACA,MAAM,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC5D,QAAQ,MAAM,IAAI,KAAK;AACvB,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,6DAA6D,EAAE,YAAY,CAAC,IAAI;AAC5G,YAAY,IAAI;AAChB,WAAW,CAAC,CAAC;AACb,SAAS,CAAA;AACT,OAAA;;AAEA,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,8BAA8B,EAAE,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;;AAE5E,MAAM,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;AAClD,QAAQ,IAAI,EAAE,QAAQ;AACtB,QAAQ,SAAS,EAAE,IAAI,IAAI,EAAE;AAC7B,OAAO,CAAC,CAAA;;AAER,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,MAAM;AACd,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,mCAAmC,EAAE,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AACvE,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;AAC9B,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,EAAE,OAAO,GAAG,EAAE,UAAU,KAAK;AACxC,IAAI,IAAI;AACR,MAAM,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAClD,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACrC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AAC9D,OAAA;;AAEA;AACA,MAAM,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAA;AACzD,MAAM,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE,CAAA;;AAE3C;AACA,MAAM,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;;AAE1B,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,wCAAwC,EAAE,UAAU,CAAC,CAAC,CAAC;AAChE,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;AAC9B,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,EAAE,OAAO,GAAG,EAAE,UAAU,KAAK;AAC5C,IAAI,IAAI;AACR,MAAM,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAClD,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACrC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AAC9D,OAAA;;AAEA,MAAM,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAA;AACjE,MAAM,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,IAAI,EAAE,CAAA;;AAEvD;AACA,MAAM,MAAM,CAAC,SAAS,GAAG,SAAS,CAAA;;AAElC,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,SAAS;AACjB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,4CAA4C,EAAE,UAAU,CAAC,CAAC,CAAC;AACpE,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;AAC9B,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE,OAAO,GAAG,EAAE,UAAU,EAAE,GAAG,KAAK;AAChD,IAAI,IAAI;AACR,MAAM,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAClD,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AACrC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AAC9D,OAAA;;AAEA,MAAM,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;;AAE9D,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,QAAQ,EAAE,MAAM;AACxB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,uCAAuC,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AAC3E,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;AAC9B,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK;AACxC,IAAI,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAChD,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,MAAM,OAAO;AACb,QAAQ,UAAU;AAClB,QAAQ,MAAM,EAAE,MAAM,CAAC,YAAY;AACnC,QAAQ,KAAK,EAAE,EAAE;AACjB,QAAQ,SAAS,EAAE,EAAE;AACrB,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,OAAO;AACX,MAAM,UAAU;AAChB,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM;AAC3B,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;AAC/B,MAAM,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;AACvC,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI;AACjC,KAAK,CAAA;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,CAAC,GAAG,KAAK;AACvB,IAAI,IAAI;AACR,MAAM,MAAM,WAAW,GAAGA,MAAI,CAAC,IAAI;AACnC,QAAQ,SAAS;AACjB,QAAQ,IAAI;AACZ,QAAQ,KAAK;AACb,QAAQ,uBAAuB;AAC/B,OAAO,CAAA;;AAEP,MAAM,IAAI,CAACW,IAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;AACvC,QAAQ,OAAO;AACf,UAAU,OAAO,EAAE,EAAE;AACrB,SAAS,CAAA;AACT,OAAA;;AAEA,MAAM,MAAM,WAAW,GAAGA,IAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;AAC9D,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;;AAE7C,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,IAAI;AACrB,QAAQ,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;AACtC,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAA;AACpE,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;AAC9B,QAAQ,OAAO,EAAE,EAAE;AACnB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,oBAAoB,EAAE,MAAM;AAC9B,IAAI,MAAM,OAAO,GAAG,EAAE,CAAA;AACtB,IAAI,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,aAAa,EAAE;AACtD,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,EAAE;AAC9C,QAAQ,OAAO,CAAC,IAAI,CAAC;AACrB,UAAU,UAAU;AACpB,UAAU,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;AACnC,UAAU,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;AAC3C,UAAU,MAAM,EAAE,MAAM,CAAC,MAAM;AAC/B,SAAS,CAAC,CAAA;AACV,OAAA;AACA,KAAA;AACA,IAAI,OAAO,OAAO,CAAA;AAClB,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,KAAK;AAC/D,IAAI,MAAM,EAAE,KAAK,EAAE,GAAGrC,YAAwB,CAAA;;AAE9C,IAAI,MAAM,GAAG,GAAG,uBAAuB,EAAE,CAAA;;AAEzC;AACA,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE,cAAc,EAAE;AAC3C,MAAM,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,cAAc,CAAA;AAC3D,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC,CAAA;AAC5C,MAAM,IAAI,UAAU,EAAE;AACtB,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;AACjE,QAAQ,MAAM,OAAO,GAAGF,YAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;AACzD,QAAQ,IAAI;AACZ,UAAUuC,IAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACpD,UAAUA,IAAE,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;AAC/C,SAAS,CAAC,OAAO,GAAG,EAAE;AACtB,UAAU,OAAO;AACjB,YAAY,KAAK,EAAE,IAAI;AACvB,YAAY,OAAO,EAAE,CAAC,2BAA2B,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAChE,WAAW,CAAA;AACX,SAAA;AACA,OAAA;AACA,KAAA;;AAEA;AACA,IAAI,IAAI,SAAS,EAAE,UAAU,IAAI,WAAW,EAAE;AAC9C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO;AAClD,QAAQ,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK;AACrC,UAAU,IAAI,WAAW,CAAC,aAAa,CAAC,KAAK,SAAS,EAAE;AACxD,YAAY,GAAG,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC,CAAA;AACpD,WAAA;AACA,SAAS;AACT,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,IAAI,WAAW,CAAC,GAAG,EAAE;AACzB,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AAChE,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;;AAEA;AACA,IAAI,IAAI,WAAW,CAAC,SAAS,EAAE;AAC/B,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;AACtE,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;AAC9D,OAAO,CAAC,CAAA;AACR,KAAA;;AAEA;AACA,IAAI,MAAM,MAAM,GAAGX,MAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;AACpD,IAAI,MAAM,YAAY,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG;AAC1D,MAAM,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAA;AAC3D,UAAU,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,MAAM,CAAA;AAChD,UAAU,GAAG;AACb,KAAK,CAAA;;AAEL,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK;AACpC,MAAM,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE;AAC5D,QAAQ,GAAG;AACX,QAAQ,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;AACzC,OAAO,CAAC,CAAA;;AAER,MAAM,IAAI,MAAM,GAAG,EAAE,CAAA;AACrB,MAAM,IAAI,MAAM,GAAG,EAAE,CAAA;AACrB,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;AACvC,QAAQ,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;AACjC,OAAO,CAAC,CAAA;AACR,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;AACvC,QAAQ,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;AACjC,OAAO,CAAC,CAAA;;AAER,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM;AACvC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAA;AACnB,QAAQ,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,CAAA;AAClE,OAAO,EAAE,MAAM,CAAC,CAAA;;AAEhB,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK;AACjC,QAAQ,YAAY,CAAC,OAAO,CAAC,CAAA;AAC7B,QAAQ,IAAI,IAAI,KAAK,CAAC,EAAE;AACxB,UAAU,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AACpC,SAAS,MAAM;AACf,UAAU,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAA;AAC7D;AACA,UAAU,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE;AACtC,YAAY,OAAO,CAAC;AACpB,cAAc,KAAK,EAAE,IAAI;AACzB,cAAc,OAAO;AACrB,gBAAgB,oEAAoE;AACpF,gBAAgB,0DAA0D;AAC1E,aAAa,CAAC,CAAA;AACd,YAAY,OAAA;AACZ,WAAA;AACA,UAAU,OAAO,CAAC;AAClB,YAAY,KAAK,EAAE,IAAI;AACvB,YAAY,OAAO,EAAE,CAAC,sBAAsB,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,CAAC;AAClF,WAAW,CAAC,CAAA;AACZ,SAAA;AACA,OAAO,CAAC,CAAA;;AAER,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;AAChC,QAAQ,YAAY,CAAC,OAAO,CAAC,CAAA;AAC7B,QAAQ,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;AACtD,OAAO,CAAC,CAAA;AACR,KAAK,CAAC,CAAA;AACN,GAAG;;AAEH;AACA;AACA;AACA;AACA,EAAE,cAAc,EAAE,YAAY;AAC9B;AACA,IAAI,IAAI,aAAa,CAAC,IAAI,GAAG,CAAC,EAAE;AAChC,MAAM,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;AAC3D,KAAA;;AAEA,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,CAAC,sCAAsC,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC3E,KAAK,CAAA;AACL,IAAI,MAAM,QAAQ,GAAG,EAAE,CAAA;AACvB,IAAI,KAAK,MAAM,CAAC,UAAU,CAAC,IAAI,aAAa,EAAE;AAC9C,MAAM,QAAQ,CAAC,IAAI,CAACuB,eAAa,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;AAC/D,KAAA;AACA,IAAI,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;AACtC,IAAI,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAA;AACtD,GAAG;AACH,CAAC,CAAA;;AAEDC,eAAA,CAAA,OAAc,GAAGD,eAAa,CAAA;AAC9BC,eAAA,CAAA,OAAA,CAAA,uBAAsC,GAAG,wBAAuB;;;;;;;;;;;;;;;;AC/9BhE,MAAMxB,MAAI,GAAG/B,YAAe,CAAA;AAC5B,MAAM0C,IAAE,GAAGzC,YAAa,CAAA;;AAExB;AACA,MAAM,wBAAwB,GAAG,2CAA2C,CAAA;;AAE5E;AACA,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;;AAElC,IAAI,WAAW,GAAG,IAAI,CAAA;AACtB,IAAI,cAAc,GAAG,CAAC,CAAA;;AAEtB;AACA;AACA;AACA,SAAS,mBAAmB,GAAG;AAC/B,EAAE,OAAO8B,MAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,0BAA0B,CAAC,CAAA;AAC3E,CAAA;;AAEA;AACA;AACA;AACA,SAAS,KAAK,GAAG;AACjB,EAAE;AACF,IAAI,OAAO,CAAC,UAAU;AACtB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;AAC1C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,KAAA;AAC7B,IAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kBAAkB,CAAC,YAAY,GAAG,KAAK,EAAE;AACxD,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;;AAExB;AACA,EAAE,IAAI,CAAC,YAAY,IAAI,WAAW,IAAI,GAAG,GAAG,cAAc,GAAG,YAAY,EAAE;AAC3E,IAAI,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAA;AACvE,IAAI,OAAO,WAAW,CAAA;AACtB,GAAA;;AAEA,EAAE,IAAI;AACN,IAAI,IAAI,SAAS,CAAA;;AAEjB,IAAI,IAAI,KAAK,EAAE,EAAE;AACjB;AACA,MAAM,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAA;AAC5C,MAAM,IAAIW,IAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;AACnC,QAAQ,OAAO,CAAC,GAAG;AACnB,UAAU,kDAAkD;AAC5D,UAAU,QAAQ;AAClB,SAAS,CAAA;AACT,QAAQ,MAAM,GAAG,GAAGA,IAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;AACrD,QAAQ,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AACnC,OAAO,MAAM;AACb;AACA,QAAQ,MAAM,WAAW;AACzB,UAAU,OAAO,CAAC,GAAG,CAAC,iBAAiB;AACvC,UAAU,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,wBAAwB,CAAC,aAAa,CAAC,CAAA;AACzF,QAAQ,OAAO,CAAC,GAAG;AACnB,UAAU,8CAA8C;AACxD,UAAU,WAAW;AACrB,SAAS,CAAA;AACT,QAAQ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAA;AACjD,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAC1B,UAAU,MAAM,IAAI,KAAK;AACzB,YAAY,CAAC,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;AACjF,WAAW,CAAA;AACX,SAAA;AACA,QAAQ,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;AACzC,OAAA;AACA,KAAK,MAAM;AACX;AACA,MAAM,MAAM,WAAW;AACvB,QAAQ,OAAO,CAAC,GAAG,CAAC,iBAAiB;AACrC,QAAQ,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,wBAAwB,CAAC,aAAa,CAAC,CAAA;AACvF,MAAM,OAAO,CAAC,GAAG,CAAC,8CAA8C,EAAE,WAAW,CAAC,CAAA;;AAE9E,MAAM,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAA;AAC/C,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AACxB,QAAQ,MAAM,IAAI,KAAK;AACvB,UAAU,CAAC,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC/E,SAAS,CAAA;AACT,OAAA;AACA,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;AACvC,KAAA;;AAEA;AACA,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAE;AAC5B,MAAM,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AAC5D,QAAQ,GAAG,GAAG;AACd,QAAQ,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,aAAa,IAAI,OAAO;AAC5D,OAAO,CAAC,CAAC,CAAA;AACT,KAAA;;AAEA;AACA,IAAI,WAAW,GAAG,SAAS,CAAA;AAC3B,IAAI,cAAc,GAAG,GAAG,CAAA;;AAExB,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,CAAC,4BAA4B,EAAE,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,SAAS,CAAC;AAC/E,KAAK,CAAA;AACL,IAAI,OAAO,SAAS,CAAA;AACpB,GAAG,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAA;;AAEzE;AACA,IAAI,IAAI,WAAW,EAAE;AACrB,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,8DAA8D;AACtE,OAAO,CAAA;AACP,MAAM,OAAO,WAAW,CAAA;AACxB,KAAA;;AAEA,IAAI,MAAM,KAAK,CAAA;AACf,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAec,gBAAc,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE;AACxD,EAAE,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAA;AAC1C,EAAE,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;;AAErC;AACA,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE;AACpB,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;AAChD,IAAI,QAAQ,GAAG,QAAQ,CAAC,MAAM;AAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,QAAQ,EAAE,WAAW,EAAE,KAAK,SAAS;AACjE,KAAK,CAAA;AACL,GAAA;;AAEA;AACA,EAAE,IAAI,KAAK,EAAE;AACb,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;AACjC,IAAI,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK;AACxC;AACA,MAAM,MAAM,YAAY;AACxB,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClD,QAAQ,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzD,QAAQ,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzD,QAAQ,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACpD,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;;AAEjE;AACA,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,IAAI;AAClD,QAAQ,CAAC,CAAC;AACV,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClD,UAAU,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzD,UAAU,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzD,OAAO,CAAA;;AAEP,MAAM,OAAO,YAAY,IAAI,WAAW,CAAA;AACxC,KAAK,CAAC,CAAA;AACN,GAAA;;AAEA;AACA,EAAE,IAAI,OAAO,CAAC,QAAQ,EAAE;AACxB,IAAI,QAAQ,GAAG,QAAQ,CAAC,MAAM;AAC9B,MAAM,CAAC,GAAG;AACV,QAAQ,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE;AAC7E,KAAK,CAAA;AACL,GAAA;;AAEA;AACA,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE;AACtB,IAAI,QAAQ,GAAG,QAAQ,CAAC,MAAM;AAC9B,MAAM,CAAC,GAAG;AACV,QAAQ,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;AACzE,KAAK,CAAA;AACL,GAAA;;AAEA;AACA,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE;AACnB,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAA;AAC9C,IAAI,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG;AACnC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC;AAChE,KAAK,CAAA;AACL,GAAA;;AAEA;AACA;AACA,EAAE,IAAI,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,iBAAiB,CAAC,MAAM,EAAE;AACrE,IAAI,MAAM,YAAY,GAAG,IAAI,GAAG;AAChC,MAAM,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC3D,KAAK,CAAA;AACL,IAAI,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK;AACxC,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM;AACxD,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,KAAK;AACnC,OAAO,CAAA;AACP,MAAM,OAAO,eAAe,CAAC,KAAK;AAClC,QAAQ,CAAC,CAAC;AACV,UAAU,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC;AAC3D,UAAU,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC;AACxD,OAAO,CAAA;AACP,KAAK,CAAC,CAAA;AACN,GAAA;;AAEA;AACA;AACA,EAAE,IAAI,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE;AACjE,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;AAC/E,IAAI,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK;AACxC;AACA,MAAM,MAAM,YAAY,GAAG,EAAE,CAAA;;AAE7B;AACA,MAAM,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,SAAS,IAAI,EAAE,EAAE;AAC3C,QAAQ,IAAI,CAAC,CAAC,aAAa,KAAK,KAAK,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK,EAAE;AAC/D,UAAU,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AACnC,SAAA;AACA,OAAA;;AAEA;AACA,MAAM,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE;AACzC,QAAQ,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,EAAE,EAAE;AAC3C,UAAU,IAAI,CAAC,CAAC,aAAa,KAAK,KAAK,IAAI,CAAC,CAAC,QAAQ,KAAK,KAAK,EAAE;AACjE,YAAY,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AACrC,WAAA;AACA,SAAA;AACA,OAAA;;AAEA;AACA,MAAM,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;AACvE,KAAK,CAAC,CAAA;AACN,GAAA;;AAEA;AACA,EAAE,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM;AACtC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM;AAClD,IAAI,CAAC;AACL,GAAG,CAAA;;AAEH,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAA;AACnC,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeC,YAAU,CAAC,WAAW,EAAE;AACvC,EAAE,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAA;AAC1C,EAAE,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAA;AACxE,EAAE,OAAO,GAAG,IAAI,IAAI,CAAA;AACpB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY,CAAC,gBAAgB,GAAG,EAAE,EAAE;AACnD,EAAE,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAA;AAC1C,EAAE,MAAM,OAAO,GAAG,EAAE,CAAA;;AAEpB,EAAE,KAAK,MAAM,SAAS,IAAI,gBAAgB,EAAE;AAC5C,IAAI,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,CAAA;AAC7E,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO,EAAE;AAClD,MAAM,OAAO,CAAC,IAAI,CAAC;AACnB,QAAQ,IAAI,EAAE,GAAG,CAAC,IAAI;AACtB,QAAQ,cAAc,EAAE,SAAS,CAAC,OAAO;AACzC,QAAQ,aAAa,EAAE,GAAG,CAAC,OAAO;AAClC,QAAQ,WAAW,EAAE,GAAG,CAAC,WAAW;AACpC,QAAQ,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI;AACxC,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAA;;AAEA,EAAE,OAAO,OAAO,CAAA;AAChB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gBAAgB,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE;AAC1D,EAAE,OAAOD,gBAAc,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;AACjE,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE;AACtD,EAAE,OAAOA,gBAAc,CAAC,KAAK,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;AAC7D,CAAA;;AAEA,IAAAE,oBAAc,GAAG;AACjB,EAAE,kBAAkB;AACpB,kBAAEF,gBAAc;AAChB,EAAE,gBAAgB;AAClB,EAAE,YAAY;AACd,cAAEC,YAAU;AACZ,EAAE,YAAY;AACd,CAAC;;AC7UD,IAAIf,IAAE,GAAG1C,YAAa,CAAA;AACtB,IAAI,UAAU,GAAGC,UAAqB,CAAA;AACtC,MAAM0D,eAAa,GAAGzD,YAAwB,CAAA;AAC9C,MAAM6B,MAAI,GAAG5B,YAAoB,CAAA;AACjC,MAAM,EAAE,wBAAwB,EAAE,cAAc,EAAE,GAAGC,IAAiB,CAAA;;qBAEtE,MAAM,YAAY,CAAC;AACnB;AACA;AACA;AACA,EAAE,MAAM,GAAG,IAAI,CAAA;;AAEf;AACA;AACA;AACA,EAAE,KAAK,GAAG,IAAI,CAAA;;AAEd,EAAE,WAAW,CAAC,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE;AACvD,IAAI,IAAI,KAAK,KAAK,EAAE,IAAI,MAAM,KAAK,EAAE,IAAI,SAAS,KAAK,EAAE,EAAE;AAC3D,MAAM,IAAI,CAAC,MAAM,GAAGuD,eAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;AAChD,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;AACnD,KAAA;AACA,GAAA;;AAEA,EAAE,yBAAyB,GAAG;AAC9B,IAAI,QAAQ;AACZ,IAAI,aAAa,GAAG,aAAa;AACjC,IAAI,SAAS;AACb,IAAI,QAAQ,GAAG,IAAI;AACnB,OAAO;AACP,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C;AACA,MAAM,IAAI,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;;AAExC;AACA,MAAM,IAAI,aAAa,GAAG,CAAC,CAAA;;AAE3B;AACA,MAAM,IAAI,WAAW,GAAG,CAAC,CAAA;;AAEzB;AACA,MAAM,IAAI,UAAU,GAAGjB,IAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;;AAEjE,MAAM,IAAI,KAAK,GAAG,EAAE,CAAA;;AAEpB;AACA,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAA;AACvC,SAAS,IAAI,CAAC,MAAM;AACpB;AACA,UAAU,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,IAAI,EAAE;AAChD,YAAY,IAAI;AAChB;AACA;AACA,cAAc,IAAI,aAAa,KAAK,SAAS,EAAE;AAC/C;AACA,gBAAgB,IAAI,WAAW,GAAGA,IAAE,CAAC,iBAAiB;AACtD,kBAAkB,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO;AACnE,iBAAiB,CAAA;AACjB,gBAAgB,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;AACxD,gBAAgB,WAAW,CAAC,KAAK,EAAE,CAAA;;AAEnC;AACA,gBAAgB,aAAa,GAAG,CAAC,CAAA;AACjC;AACA,gBAAgB,WAAW,EAAE,CAAA;AAC7B;AACA,gBAAgB,KAAK,GAAG,EAAE,CAAA;AAC1B;AACA,gBAAgB,QAAQ;AACxB,kBAAkB,OAAO,QAAQ,KAAK,UAAU;AAChD,kBAAkB,QAAQ,CAAC,WAAW,CAAC,CAAA;AACvC,eAAe,MAAM;AACrB,gBAAgB,IAAI;AACpB;AACA,kBAAkB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAClC,kBAAkB,aAAa,EAAE,CAAA;AACjC,iBAAiB,CAAC,OAAO,CAAC,EAAE;AAC5B,kBAAkB,MAAM,CAAC,CAAC,CAAC,CAAA;AAC3B,iBAAA;AACA,eAAA;AACA,aAAa,CAAC,OAAO,CAAC,EAAE;AACxB,cAAc,MAAM,CAAC,CAAC,CAAC,CAAA;AACvB,aAAA;AACA,WAAW,CAAC,CAAA;;AAEZ,UAAU,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE;AAC9C,YAAY,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAA;AAC7C,YAAY,MAAM,CAAC,CAAC,CAAC,CAAA;AACrB,WAAW,CAAC,CAAA;;AAEZ,UAAU,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY;AAC7C,YAAY,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;AAC1C,YAAY,OAAO,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAA;AACtD,WAAW,CAAC,CAAA;AACZ,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK;AACtB,UAAU,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;AAChD,UAAU,MAAM,CAAC,CAAC,CAAC,CAAA;AACnB,SAAS,CAAC,CAAA;AACV,KAAK,CAAC,CAAA;AACN,GAAG,CAAA;;AAEH,EAAE,cAAc,GAAG,CAAC,aAAa,KAAK;AACtC,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI;AACV,QAAQ,cAAc,CAAC,aAAa,CAAC,CAAA;AACrC,QAAQA,IAAE,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAClD,UAAU,IAAI,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;AAC9B,UAAU,IAAI,KAAK,EAAE;AACrB,YAAY,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACpC,cAAcA,IAAE,CAAC,UAAU,CAACX,MAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAA;AAC3D,aAAa,CAAC,CAAA;AACd,YAAY,OAAO,EAAE,CAAA;AACrB,WAAA;AACA,SAAS,CAAC,CAAA;AACV,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB,QAAQ,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;AAClD,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAA;AACjB,OAAA;AACA,KAAK,CAAC,CAAA;AACN,GAAG,CAAA;;AAEH,EAAE,MAAM,qCAAqC;AAC7C,IAAI,aAAa;AACjB,IAAI,iBAAiB,GAAG,KAAK;AAC7B,IAAI,QAAQ,GAAG,IAAI;AACnB,IAAI;AACJ,IAAI,IAAI;AACR;AACA,MAAM,MAAM,KAAK,GAAG,MAAMW,IAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CAAA;AACvD,MAAM,IAAI,OAAO,GAAG,EAAE,CAAA;AACtB,MAAM,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE;AACrC;AACA,QAAQ,MAAM,WAAW,GAAGX,MAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;AACtE,QAAQ,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;AAC7D,QAAQ,IAAI,YAAY,EAAE;AAC1B,UAAU,IAAI,MAAM,IAAI,YAAY,IAAI,UAAU,IAAI,YAAY,EAAE;AACpE;AACA,YAAY,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,oBAAoB;AAChE,cAAc,YAAY,CAAC,IAAI;AAC/B,cAAc,YAAY,CAAC,QAAQ;AACnC,cAAc,iBAAiB;AAC/B,cAAc,QAAQ;AACtB,aAAa,CAAA;AACb,YAAY,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;AACpD,WAAW,MAAM;AACjB,YAAY,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;AACpD,WAAA;AACA,SAAA;AACA,OAAA;AACA,MAAM,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AACrC,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC9B,KAAA;AACA,GAAA;;AAEA,EAAE,MAAM,QAAQ,CAAC,QAAQ,EAAE;AAC3B,IAAI,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAClD,MAAMW,IAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK;AACnD,QAAQ,IAAI,GAAG,EAAE;AACjB,UAAU,MAAM,CAAC,GAAG,CAAC,CAAA;AACrB,SAAA;AACA,QAAQ,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;AACnC,OAAO,CAAC,CAAA;AACR,KAAK,CAAC,CAAA;AACN,GAAA;;AAEA,EAAE,aAAa,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,QAAQ,GAAG,IAAI,KAAK;AACnD,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI;AACV,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;AACjC;AACA,UAAU,IAAI,CAAC,KAAA;AACf,aAAa,aAAa,CAAC;AAC3B,cAAc,KAAK;AACnB,cAAc,KAAK,EAAE,CAAC,IAAI,KAAK;AAC/B,gBAAgB,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAChE,kBAAkB,QAAQ,CAAC,IAAI,CAAC,CAAA;AAChC,iBAAA;AACA,eAAe;AACf,aAAa,CAAA;AACb,aAAa,IAAI,CAAC,MAAM;AACxB,cAAc,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AACxC,aAAa,CAAA;AACb,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACpC,SAAS,MAAM;AACf,UAAU,MAAM,CAAC,qBAAqB,CAAC,CAAA;AACvC,SAAA;AACA,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB,QAAQ,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;AACjD,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAA;AACjB,OAAA;AACA,KAAK,CAAC,CAAA;AACN,GAAG,CAAA;;AAEH,EAAE,MAAM,oBAAoB;AAC5B,IAAI,OAAO;AACX,IAAI,IAAI;AACR,IAAI,iBAAiB,GAAG,KAAK;AAC7B,IAAI,QAAQ,GAAG,IAAI;AACnB,IAAI;AACJ,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI;AACV,QAAQ,IAAI,OAAO,EAAE;AACrB,UAAU,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;;AAE3C;AACA,UAAU,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAC1D,YAAY,QAAQ,CAAC,mBAAmB,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;AAC7D,WAAA;;AAEA,UAAU,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;AACnC;AACA,YAAY,IAAI,CAAC,KAAA;AACjB,eAAe,oBAAoB,CAAC,KAAK,EAAE;AAC3C,gBAAgB,iBAAiB,EAAE,iBAAiB;AACpD,eAAe,CAAA;AACf,eAAe,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK;AACvC,gBAAgB,OAAO,CAAC;AACxB,kBAAkB,OAAO,EAAE,IAAI;AAC/B,kBAAkB,aAAa,EAAE,KAAK,CAAC,MAAM;AAC7C,kBAAkB,SAAS;AAC3B,iBAAiB,CAAC,CAAA;AAClB,eAAe,CAAA;AACf,eAAe,KAAK,CAAC,CAAC,CAAC,KAAK;AAC5B,gBAAgB,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;AACpE,gBAAgB,MAAM,CAAC,CAAC,CAAC,CAAA;AACzB,eAAe,CAAC,CAAA;AAChB,WAAW,MAAM;AACjB,YAAY,MAAM,CAAC,qBAAqB,CAAC,CAAA;AACzC,WAAA;AACA,SAAA;AACA,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB,QAAQ,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;AACzD,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAA;AACjB,OAAA;AACA,KAAK,CAAC,CAAA;AACN,GAAA;;AAEA,EAAE,MAAM,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,KAAK;AACzC,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI;AACV,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;AACjC,UAAU,IAAI,CAAC,KAAA;AACf,aAAa,MAAM,CAAC,KAAK,EAAE,OAAO,CAAA;AAClC,aAAa,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAC7C,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACpC,SAAS,MAAM;AACf,UAAU,MAAM,CAAC,qBAAqB,CAAC,CAAA;AACvC,SAAA;AACA,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAA;AACjB,OAAA;AACA,KAAK,CAAC,CAAA;AACN,GAAG,CAAA;;AAEH,EAAE,WAAW,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,KAAK;AACpD,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC5C,MAAM,IAAI;AACV,QAAQ,IAAI,OAAO,EAAE;AACrB,UAAU,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;;AAE3C;AACA,UAAU,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AAC1D,YAAY,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAA;AAC7C,WAAA;;AAEA,UAAU,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;AACnC;AACA,YAAY,IAAI,CAAC,KAAA;AACjB,eAAe,WAAW,CAAC,KAAK,EAAE;AAClC,gBAAgB,8BAA8B,EAAE,IAAI;AACpD,eAAe,CAAA;AACf,eAAe,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK;AACvC,gBAAgB,OAAO,CAAC;AACxB,kBAAkB,OAAO,EAAE,IAAI;AAC/B,kBAAkB,aAAa,EAAE,KAAK,CAAC,MAAM;AAC7C,kBAAkB,IAAI;AACtB,kBAAkB,SAAS;AAC3B,iBAAiB,CAAC,CAAA;AAClB,eAAe,CAAA;AACf,eAAe,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACtC,WAAW,MAAM;AACjB,YAAY,MAAM,CAAC,qBAAqB,CAAC,CAAA;AACzC,WAAA;AACA,SAAA;AACA,OAAO,CAAC,OAAO,CAAC,EAAE;AAClB,QAAQ,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;AACpD,QAAQ,MAAM,CAAC,CAAC,CAAC,CAAA;AACjB,OAAA;AACA,KAAK,CAAC,CAAA;AACN,GAAG,CAAA;AACH,EAAA;;AAEA,IAAA,OAAc,GAAGkB,cAAY;;;;;;;;;;;AC9R7B,MAAM,aAAa,GAAG5D,YAAwB,CAAA;AAC9C,MAAMoB,QAAM,GAAGnB,QAAoB,CAAA;AACnC,MAAM,YAAY,GAAGC,OAA2B,CAAA;AAChD,IAAIwC,IAAE,GAAGvC,YAAa,CAAA;;AAEtB,MAAM0D,mBAAiB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK;AACrC,IAAI,IAAI;AACR,MAAM,MAAM,YAAY,GAAG,aAAa;AACxC,QAAQ,WAAW,CAAC,OAAO,CAAC;AAC5B,QAAQ,WAAW,CAAC,KAAK,CAAC;AAC1B,OAAO,CAAA;AACP,MAAM,YAAA;AACN,SAAS,WAAW,EAAA;AACpB,SAAS,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK;AAC7B,UAAU,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM;AACvC,YAAY,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS;AAC7D,WAAW,CAAA;AACX,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACzC,QAAM,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAA;AAC9E,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK;AACtB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,0BAA0B,EAAE;AAClE,YAAY,KAAK,EAAE,CAAC,CAAC,OAAO;AAC5B,WAAW,CAAC,CAAA;AACZ,SAAS,CAAC,CAAA;AACV,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,0BAA0B,EAAE;AAC9D,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH,EAAE,oBAAoB,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,KAAK;AAChE,IAAI,IAAI;AACR,MAAM,MAAM,OAAO,GAAG,kCAAkC,CAAA;AACxD,MAAM,MAAM,OAAO,GAAG;AACtB,QAAQ,0BAA0B,EAAE,WAAW,CAAC,OAAO,CAAC;AACxD,QAAQ,mBAAmB,EAAE,WAAW,CAAC,KAAK,CAAC;AAC/C,OAAO,CAAA;AACP,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,OAAO,CAAC,eAAe,EAAE,kBAAkB;AAChE,QAAQ,KAAK;AACb,OAAO,CAAC,2BAA2B,EAAE,SAAS,CAAC,CAAC,CAAA;AAChD,MAAM,KAAA;AACN,SAAS,GAAG,CAAC,GAAG,EAAE;AAClB,UAAU,OAAO,EAAE,OAAO;AAC1B,SAAS,CAAA;AACT,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK;AACxB,UAAU,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE;AACnC,YAAY,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,oCAAoC,EAAE;AAC9E,cAAc,MAAM,EAAE,IAAI,CAAC,IAAI;AAC/B,cAAc,SAAS,EAAE,SAAS;AAClC,cAAc,KAAK,EAAE,KAAK;AAC1B,aAAa,CAAC,CAAA;AACd,WAAW,MAAM;AACjB,YAAY,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,iCAAiC,EAAE;AAC3E,cAAc,KAAK,EAAE,IAAI;AACzB,cAAc,OAAO,EAAE,gBAAgB;AACvC,aAAa,CAAC,CAAA;AACd,WAAA;AACA,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK;AACtB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,iCAAiC,EAAE;AACzE,YAAY,KAAK,EAAE,IAAI;AACvB,YAAY,OAAO,EAAE,CAAC,CAAC,OAAO;AAC9B,WAAW,CAAC,CAAA;AACZ,SAAS,CAAC,CAAA;AACV,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,iCAAiC,EAAE;AACrE,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,mBAAmB,EAAE;AACvB,IAAI,GAAG;AACP,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,KAAK,GAAG,EAAE;AACd,OAAO;AACP,IAAI,IAAI;AACR,MAAM;AACN,QAAQ,UAAU,KAAK,EAAE;AACzB,QAAQ,MAAM,KAAK,EAAE;AACrB,QAAQ,SAAS,KAAK,EAAE;AACxB,QAAQ,KAAK,KAAK,EAAA;AAClB,QAAQ;AACR;AACA,QAAQ,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;AAC5D;AACA,QAAQ,MAAM,WAAW,GAAGsB,IAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAA;AAC5D,QAAQ,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;;AAE9B,QAAQ,IAAI,GAAG,GAAG,EAAE,CAAA;;AAEpB;AACA,QAAQ,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,KAAK;AACzC,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACtB,QAAM,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAA;;AAE1E,UAAU,IAAI,KAAK,GAAG,CAAC,CAAA;AACvB;AACA,UAAU,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AAChC,YAAY,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;AACxD,YAAY,KAAK,EAAE,CAAA;AACnB,YAAY,GAAG,GAAG,KAAK,CAAA;AACvB,WAAW,CAAC,CAAA;AACZ,SAAS,CAAA;AACT,WAAW,IAAI,CAAC,CAAC,MAAM,KAAK;AAC5B,YAAY,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAClC,YAAY,GAAG,CAAC,WAAW,CAAC,IAAI;AAChC,cAAcA,QAAM,CAAC,+BAA+B;AACpD,cAAc,MAAM;AACpB,aAAa,CAAA;AACb,WAAW,CAAA;AACX,WAAW,KAAK,CAAC,CAAC,CAAC,KAAK;AACxB,YAAY,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,4BAA4B,EAAE,CAAC,CAAC,CAAA;AACxE,WAAW,CAAC,CAAA;AACZ,OAAO,MAAM;AACb,QAAQ,GAAG,CAAC,WAAW,CAAC,IAAI;AAC5B,UAAUA,QAAM,CAAC,4BAA4B;AAC7C,UAAU,IAAI,KAAK,CAAC,oBAAoB,CAAC;AACzC,SAAS,CAAA;AACT,OAAA;AACA,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,4BAA4B,EAAE;AAChE,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH,EAAE,MAAM,iCAAiC;AACzC,IAAI,GAAG;AACP,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,SAAS;AACb,IAAI,GAAG;AACP,IAAI,iBAAiB,GAAG,KAAK;AAC7B,IAAI;AACJ,IAAI,IAAI;AACR,MAAM,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;AAC1D;AACA,MAAM,CAAC,CAAC,qCAAqC;AAC7C,QAAQ,GAAG;AACX,QAAQ,iBAAiB;AACzB,QAAQ,CAAC,IAAI,KAAK;AAClB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI;AAC9B,YAAYA,QAAM,CAAC,qCAAqC;AACxD,YAAY,IAAI;AAChB,WAAW,CAAA;AACX,SAAS;AACT,OAAA;AACA,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK;AAC1B,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI;AAC9B,YAAYA,QAAM,CAAC,uCAAuC;AAC1D,YAAY,MAAM;AAClB,WAAW,CAAA;AACX,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK;AACtB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,oCAAoC,EAAE,CAAC,CAAC,CAAA;AAC9E,SAAS,CAAC,CAAA;AACV,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,oCAAoC,EAAE;AACxE,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,qBAAqB,EAAE;AACzB,IAAI,GAAG;AACP,IAAI,QAAQ;AACZ,IAAI,aAAa,GAAG,aAAa;AACjC,IAAI,SAAS,GAAG,GAAG;AACnB,OAAO;AACP,IAAI,IAAI;AACR,MAAM,MAAM,CAAC,GAAG,IAAI,YAAY,EAAE,CAAA;AAClC,MAAM,CAAC,CAAC,yBAAyB;AACjC,QAAQ,QAAQ;AAChB,QAAQ,aAAa;AACrB,QAAQ,SAAS;AACjB,QAAQ,CAAC,IAAI,KAAK;AAClB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAA;AACxE,SAAS;AACT,OAAA;AACA,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK;AAC1B,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAA;AAC5E,SAAS,CAAA;AACT,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK;AACtB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAA;AACpE,SAAS,CAAC,CAAA;AACV,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,0BAA0B,EAAE;AAC9D,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,EAAE,OAAO,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,KAAK;AAC7E,IAAI,IAAI;AACR,MAAM,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;AAC1D,MAAM,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AAC3C,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;AAC7D,KAAA;AACA,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,mBAAc,GAAGyC,mBAAiB;;ACvPlC,MAAM,MAAM,GAAG7D,YAAiB,CAAA;AAChC,MAAMoB,QAAM,GAAGnB,QAAoB,CAAA;;AAEnC,MAAM6D,kBAAgB,GAAG;AACzB,EAAE,MAAM,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,uBAAuB,EAAE;AAC/E,IAAI,IAAI;AACR,MAAM,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;AAChC,QAAQ,MAAM,EAAE,MAAM;AACtB,OAAO,CAAC,CAAA;AACR,MAAM,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AAC5D,QAAQ,KAAK,EAAE,sBAAsB;AACrC,QAAQ,QAAQ,EAAE;AAClB,UAAU;AACV,YAAY,IAAI,EAAE,MAAM;AACxB,YAAY,OAAO,EAAE;AACrB,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;AAC5C,cAAc;AACd,gBAAgB,IAAI,EAAE,WAAW;AACjC,gBAAgB,SAAS,EAAE,QAAQ;AACnC,eAAe;AACf,aAAa;AACb,WAAW;AACX,SAAS;AACT,OAAO,CAAC,CAAA;;AAER,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC1C,QAAM,CAAC,8BAA8B,EAAE;AAClE,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,QAAQ;AAChB,QAAQ,QAAQ;AAChB,OAAO,CAAC,CAAA;AACR,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,QAAM,CAAC,2BAA2B,EAAE;AAC/D,QAAQ,MAAM,EAAE,IAAI;AACpB,QAAQ,KAAK,EAAE,CAAC,CAAC,OAAO;AACxB,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,kBAAc,GAAG0C,kBAAgB;;ACvCjC,MAAM,OAAEzB,KAAG,EAAE,GAAGrC,YAAmB,CAAA;AACnC,MAAM+B,MAAI,GAAG9B,YAAe,CAAA;AAC5B,MAAM,EAAE,aAAa,EAAE,GAAGC,YAAa,CAAA;AAEvC,MAAM,mBAAEiC,iBAAe,EAAE,GAAG/B,IAAwB,CAAA;;AAEpD,MAAMkC,gBAAc,GAAG,gBAAgB,CAAA;AACvC,MAAMC,SAAO,GAAG,WAAW,CAAA;;AAE3B,MAAMwB,qBAAmB,GAAG;AAC5B,EAAE,0BAA0B,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,KAAK;AACxD,IAAI,IAAI;AACR;AACA,MAAM,MAAM,QAAQ,GAAGhC,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,cAAc,GAAGH,iBAAe,CAAC,QAAQ,CAAC,CAAA;;AAEtD,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,CAAA;;AAEhD;AACA,MAAM,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;;AAEnC;AACA,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;;AAEtE,MAAM,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAA;;AAEvE;AACA,MAAM,OAAO;AACb,QAAQ,SAAS,EAAE,cAAc;AACjC,QAAQ,OAAO,EAAE,IAAI;AACrB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,CAAC,CAAC,CAAA;AACvE;AACA,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,QAAQ,SAAS,EAAE,EAAE;AACrB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH,EAAE,2BAA2B,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK;AAC/C,IAAI,IAAI;AACR,MAAM,MAAM,QAAQ,GAAGJ,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQE,SAAO;AACf,QAAQ,KAAK;AACb,QAAQD,gBAAc;AACtB,OAAO,CAAA;AACP,MAAM,MAAM,cAAc,GAAGH,iBAAe,CAAC,QAAQ,CAAC,CAAA;AACtD,MAAM,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,CAAA;AACjE;AACA,MAAM,OAAO;AACb,QAAQ,SAAS,EAAE,QAAQ;AAC3B,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,CAAC,CAAC,CAAA;AACzE;AACA,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,OAAO;AAC1B,QAAQ,SAAS,EAAE,EAAE;AACrB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,qBAAc,GAAG4B,qBAAmB;;ACzEpC,MAAMhC,MAAI,GAAG/B,YAAe,CAAA;AAC5B,MAAM,OAAEqC,KAAG,EAAE,GAAGpC,YAAmB,CAAA;;AAMnC,MAAM+D,kBAAgB,GAAG;AACzB,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,KAAK;AAC3C,IAAI,IAAI;AACR,MAAM,MAAM,QAAQ,GAAGjC,MAAI,CAAC,IAAI;AAChC,QAAQM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC/B,QAAQ,SAAS;AACjB,QAAQ,WAAW;AACnB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,CAAC,EAAE;AAChB,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;AACxE,KAAA;AACA,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,kBAAc,GAAG2B,kBAAgB;;;;;;;;;;;;;ACXjC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAGhE,YAAwB,CAAA;AACpD,MAAM;AACN,oBAAElD,kBAAgB;AAClB,wBAAEC,sBAAoB;AACtB,0BAAEC,wBAAsB;AACxB,uBAAEC,qBAAmB;AACrB,oBAAEC,kBAAgB;AAClB,CAAC,GAAG+C,WAA8B,CAAA;;AAElC;AACA;AACA;AACA;AACA,IAAI,UAAU,GAAG,IAAI,CAAA;;AAErB,SAAS,YAAY,GAAG;AACxB,EAAE,IAAI,UAAU,KAAK,IAAI,EAAE,OAAO,UAAU,CAAA;;AAE5C,EAAE,IAAI;AACN,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,WAAW,CAAA;AAClD,IAAI,UAAU,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,uBAAuB,CAAC,EAAE;AAC7D,MAAM,QAAQ,EAAE,MAAM;AACtB,MAAM,OAAO,EAAE,IAAI;AACnB,KAAK,CAAC,CAAA;AACN,GAAG,CAAC,MAAM;AACV,IAAI,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;AACvC,GAAA;;AAEA,EAAE,OAAO,UAAU,CAAA;AACnB,CAAA;;AAEA;AACA;AACA;AACA,IAAI,cAAc,GAAG,SAAS,CAAC;;AAE/B,SAAS,gBAAgB,GAAG;AAC5B,EAAE,IAAI,cAAc,KAAK,SAAS,EAAE,OAAO,cAAc,CAAA;;AAEzD,EAAE,IAAI;AACN,IAAI,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAA;AACnC,IAAI,cAAc,GAAG,QAAQ,CAAC,cAAc,EAAE;AAC9C,MAAM,QAAQ,EAAE,MAAM;AACtB,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC7C,KAAK,CAAC,CAAC,IAAI,EAAE,CAAA;AACb,GAAG,CAAC,MAAM;AACV,IAAI,cAAc,GAAG,IAAI,CAAA;AACzB,GAAA;;AAEA,EAAE,OAAO,cAAc,CAAA;AACvB,CAAA;;AAEA;AACA;AACA;AACA;AACA,MAAM,eAAe,GAAG,IAAI,GAAG,EAAE,CAAA;;AAEjC;AACA;AACA;AACA;AACA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAA;;AAE1B;AACA;AACA;AACA,SAAS,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE;AACtC,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE;AACjC,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AACvC,GAAA;AACA,CAAA;;AAEA,MAAMgE,eAAa,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,EAAE,MAAM;AACrB,IAAI,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAA;AACzC,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;AAClD,KAAA;AACA,IAAI,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;AAC/B,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,EAAE,OAAO,GAAG,EAAE,SAAS,EAAE,MAAM,KAAK;AACjD,IAAI,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,MAAM,CAAA;;AAEhE,IAAI,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAA;AACzC,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,MAAM,QAAQ,CAAC,GAAG,EAAE/G,kBAAgB,EAAE;AACtC,QAAQ,SAAS;AACjB,QAAQ,KAAK;AACb,UAAU,oEAAoE;AAC9E,QAAQ,IAAI,EAAE,eAAe;AAC7B,OAAO,CAAC,CAAA;AACR,MAAM,OAAA;AACN,KAAA;;AAEA;AACA,IAAI,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,CAAC,CAAA;;AAEtE,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;AACjC,KAAA;;AAEA,IAAI,IAAI,YAAY,EAAE;AACtB,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAA;AACvD,KAAA;;AAEA;AACA,IAAI,MAAM,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,CAAA;AAClE,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;AACtC,KAAA;;AAEA;AACA,IAAI,MAAM,WAAW,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;AAC9E,IAAI,MAAM,QAAQ;AAClB,MAAM,OAAO,WAAW,EAAE,OAAO,KAAK,QAAA;AACtC,UAAU,WAAW,CAAC,OAAA;AACtB,UAAU,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAA;AAC5C,YAAY,WAAW,CAAC,OAAA;AACxB,eAAe,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,CAAA;AAC9C,eAAe,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAA;AAChC,eAAe,IAAI,CAAC,IAAI,CAAA;AACxB,YAAY,EAAE,CAAA;;AAEd,IAAI,IAAI,CAAC,QAAQ,EAAE;AACnB,MAAM,QAAQ,CAAC,GAAG,EAAEA,kBAAgB,EAAE;AACtC,QAAQ,SAAS;AACjB,QAAQ,KAAK,EAAE,0BAA0B;AACzC,QAAQ,IAAI,EAAE,WAAW;AACzB,OAAO,CAAC,CAAA;AACR,MAAM,OAAA;AACN,KAAA;;AAEA,IAAI,IAAI;AACR,MAAM,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAA;AACrC,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE;AAC5C,QAAQ,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC/C,QAAQ,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AACvC,OAAO,CAAC,CAAA;;AAER,MAAM,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;;AAE3C;AACA,MAAM,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;AACjC,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;;AAEvB,MAAM,IAAI,YAAY,GAAG,EAAE,CAAA;AAC3B,MAAM,IAAI,YAAY,GAAG,EAAE,CAAA;AAC3B,MAAM,IAAI,iBAAiB,GAAG,IAAI,CAAA;AAClC,MAAM,IAAI,OAAO,GAAG,KAAK,CAAA;;AAEzB;AACA,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,EAAE,CAAA;;AAEvC,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,KAAK;AACzC,QAAQ,YAAY,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;;AAExC;AACA,QAAQ,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC9C,QAAQ,YAAY,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;;AAEnC,QAAQ,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AAClC,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAA;;AAE5B,UAAU,IAAI,MAAM,CAAA;AACpB,UAAU,IAAI;AACd,YAAY,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AACrC,WAAW,CAAC,MAAM;AAClB,YAAY,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,IAAI,CAAC,CAAA;AAC7E,YAAY,SAAA;AACZ,WAAA;;AAEA;AACA,UAAU,IAAI,MAAM,CAAC,UAAU,IAAI,UAAU,EAAE;AAC/C,YAAY,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAA;AACjD,YAAY,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;AACvD,WAAA;;AAEA;AACA,UAAU,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAqB,EAAE;AACrD,YAAY,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;AAC1E,cAAc,QAAQ,CAAC,GAAG,EAAEJ,kBAAgB,EAAE;AAC9C,gBAAgB,SAAS;AACzB,gBAAgB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI;AACvC,eAAe,CAAC,CAAA;AAChB,aAAa,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,KAAK,kBAAkB,EAAE;AAClE;AACA,cAAc,MAAM,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC1D,cAAc,IAAI,EAAE,EAAE;AACtB,gBAAgB,EAAE,CAAC,YAAY;AAC/B,kBAAkB,CAAC,EAAE,CAAC,YAAY,IAAI,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAA;AAC7E,eAAA;AACA,aAAA;AACA,WAAW,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAqB,EAAE;AAC5D,YAAY,IAAI,MAAM,CAAC,aAAa,EAAE,IAAI,KAAK,UAAU,EAAE;AAC3D,cAAc,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAA;AACpD,cAAc,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE;AAChD,gBAAgB,SAAS,EAAE,SAAS,CAAC,EAAE;AACvC,gBAAgB,QAAQ,EAAE,SAAS,CAAC,IAAI;AACxC,gBAAgB,YAAY,EAAE,EAAE;AAChC,eAAe,CAAC,CAAA;AAChB,cAAc,QAAQ,CAAC,GAAG,EAAEC,sBAAoB,EAAE;AAClD,gBAAgB,SAAS;AACzB,gBAAgB,SAAS,EAAE,SAAS,CAAC,EAAE;AACvC,gBAAgB,QAAQ,EAAE,SAAS,CAAC,IAAI;AACxC,gBAAgB,UAAU,EAAE,aAAa;AACzC,gBAAgB,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,EAAE;AAC5C,eAAe,CAAC,CAAA;AAChB,aAAA;AACA,WAAW,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,oBAAoB,EAAE;AAC3D;AACA,YAAY,MAAM,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACxD,YAAY,IAAI,EAAE,IAAI,EAAE,CAAC,YAAY,EAAE;AACvC,cAAc,IAAI;AAClB,gBAAgB,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA;AAC3D,eAAe,CAAC,MAAM;AACtB,gBAAgB,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,YAAY,CAAA;AAC/C,eAAA;AACA,aAAA;AACA,WAAW,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE;AACrD;AACA,WAAW,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC/C;AACA,YAAY,MAAM,OAAO,GAAG,EAAE,CAAA;AAC9B,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE;AAC/B,cAAc,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;AACjE,aAAA;;AAEA,YAAY,QAAQ,CAAC,GAAG,EAAEE,qBAAmB,EAAE;AAC/C,cAAc,SAAS;AACvB,cAAc,OAAO;AACrB,cAAc,UAAU,EAAE,MAAM,CAAC,WAAW,IAAI,UAAU;AAC1D,cAAc,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;AACvC,aAAa,CAAC,CAAA;AACd,WAAA;AACA,SAAA;AACA,OAAO,CAAC,CAAA;;AAER,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,KAAK;AACzC,QAAQ,YAAY,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;AACxC,OAAO,CAAC,CAAA;;AAER,MAAM,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;AACjC,QAAQ,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;AACzC,QAAQ,QAAQ,CAAC,GAAG,EAAEC,kBAAgB,EAAE;AACxC,UAAU,SAAS;AACnB,UAAU,KAAK,EAAE,CAAC,4BAA4B,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7D,UAAU,IAAI,EAAE,iBAAiB;AACjC,SAAS,CAAC,CAAA;AACV,OAAO,CAAC,CAAA;;AAER,MAAM,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK;AAClC,QAAQ,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;;AAEzC;AACA,QAAQ,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE;AACjC,UAAU,IAAI;AACd,YAAY,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;AACnD,YAAY,IAAI,MAAM,CAAC,UAAU,IAAI,UAAU,EAAE;AACjD,cAAc,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;AACzD,aAAA;AACA,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC1C,cAAc,MAAM,OAAO,GAAG,EAAE,CAAA;AAChC,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE;AACjC,gBAAgB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;AACnE,eAAA;AACA,cAAc,QAAQ,CAAC,GAAG,EAAED,qBAAmB,EAAE;AACjD,gBAAgB,SAAS;AACzB,gBAAgB,OAAO;AACvB,gBAAgB,UAAU,EAAE,MAAM,CAAC,WAAW,IAAI,UAAU;AAC5D,gBAAgB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;AACzC,eAAe,CAAC,CAAA;AAChB,cAAc,OAAA;AACd,aAAA;AACA,WAAW,CAAC,MAAM;AAClB;AACA,WAAA;AACA,SAAA;;AAEA,QAAQ,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,IAAI,EAAE;AACzC;AACA,UAAU,IAAI,SAAS,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACzE,YAAY,OAAO,GAAG,IAAI,CAAA;AAC1B,YAAY,IAAI,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;AACvD;AACA,YAAYgH,eAAa,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE;AACtD,cAAc,GAAG,MAAM;AACvB,cAAc,mBAAmB,EAAE,IAAI;AACvC,aAAa,CAAC,CAAA;AACd,YAAY,OAAA;AACZ,WAAA;;AAEA;AACA,UAAU;AACV,YAAY,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;AACzC,YAAY,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC1C,YAAY,YAAY,CAAC,QAAQ,CAAC,mBAAmB,CAAA;AACrD,YAAY;AACZ,YAAY,QAAQ,CAAC,GAAG,EAAE/G,kBAAgB,EAAE;AAC5C,cAAc,SAAS;AACvB,cAAc,KAAK;AACnB,gBAAgB,iFAAiF;AACjG,cAAc,IAAI,EAAE,gBAAgB;AACpC,aAAa,CAAC,CAAA;AACd,YAAY,OAAA;AACZ,WAAA;;AAEA,UAAU,QAAQ,CAAC,GAAG,EAAEA,kBAAgB,EAAE;AAC1C,YAAY,SAAS;AACrB,YAAY,KAAK,EAAE,CAAC,4BAA4B,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;AAChH,YAAY,IAAI,EAAE,WAAW;AAC7B,WAAW,CAAC,CAAA;AACZ,SAAA;AACA,OAAO,CAAC,CAAA;AACR,KAAK,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;AACvC,MAAM,QAAQ,CAAC,GAAG,EAAEA,kBAAgB,EAAE;AACtC,QAAQ,SAAS;AACjB,QAAQ,KAAK,EAAE,CAAC,4BAA4B,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAC3D,QAAQ,IAAI,EAAE,iBAAiB;AAC/B,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE,CAAC,SAAS,KAAK;AAC/B,IAAI,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;AAChD,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC3B,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;AACvC,MAAM,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC9B,KAAA;AACA,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAA;AAC3D,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE,CAAC,UAAU,KAAK;AAChC,IAAI,IAAI,UAAU,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AAChD,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;AACjC,MAAM,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC9B,KAAA;AACA,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;AAC7B,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,gBAAgB,EAAE,CAAC,UAAU,KAAK;AACpC,IAAI,MAAM,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,CAAA;AAClE;AACA,IAAI,IAAI,eAAe,GAAG,KAAK,CAAA;AAC/B,IAAI,KAAK,MAAM,GAAG,KAAK,CAAC,IAAI,eAAe,EAAE;AAC7C,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACzB,QAAQ,eAAe,GAAG,IAAI,CAAA;AAC9B,QAAQ,MAAA;AACR,OAAA;AACA,KAAA;AACA,IAAI,OAAO;AACX,MAAM,UAAU,EAAE,CAAC,CAAC,SAAS;AAC7B,MAAM,SAAS,EAAE,SAAS,IAAI,SAAS;AACvC,MAAM,eAAe;AACrB,KAAK,CAAA;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,CAAC,UAAU,KAAK;AAC9B;AACA,IAAI,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,eAAe,EAAE;AAClD,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AACxC,QAAQ,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC7B,QAAQ,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACrC,OAAA;AACA,KAAA;AACA;AACA,IAAI,IAAI,UAAU,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AAChD,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;AACjC,KAAA;AACA,IAAI,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC5B,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,eAAc,GAAG+G,eAAa;;;;;;;;;;;;;ACna9B,MAAM,SAAS,GAAGjE,YAA4B,CAAA;AAC9C,MAAMsD,eAAa,GAAGrD,oBAA0B,CAAA;AAChD,MAAMgE,eAAa,GAAG/D,eAA0B,CAAA;AAChD,MAAM;AACN,oBAAEpD,kBAAgB;AAClB,wBAAEC,sBAAoB;AACtB,0BAAEC,wBAAsB;AACxB,uBAAEC,qBAAmB;AACrB,oBAAEC,kBAAgB;AAClB,CAAC,GAAGiD,WAA8B,CAAA;;AAElC;AACA;AACA;AACA;AACA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAE,CAAA;;AAEhC;AACA;AACA;AACA,MAAM,uBAAuB,GAAG,EAAE,CAAA;;AAElC;AACA;AACA;AACA;AACA;AACA,SAAS,kBAAkB,CAAC,IAAI,EAAE;AAClC,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,IAAI,CAAC,IAAI;AACnB,IAAI,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;AACvC,IAAI,YAAY,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;AACxE,GAAG,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,SAAS,EAAE;AAC1C,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,qBAAqB,CAAA;AAC9C,EAAE,IAAI,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;;AAE3D,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAA;AACjC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,qBAAqB,CAAA;;AAE3C;AACA,EAAE,IAAI,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AACvD,IAAI,OAAO,MAAM,CAAC,OAAA;AAClB,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,CAAA;AACtC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAA;AACxB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAA;AACjB,GAAA;;AAEA;AACA,EAAE,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,OAAO,MAAM,CAAA;;AAE/C;AACA,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;AAC/B,CAAA;;AAEA,MAAM+D,eAAa,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,EAAE,OAAO,GAAG,EAAE,SAAS,EAAE,MAAM,KAAK;AACjD;AACA,IAAI,IAAI,MAAM,CAAC,OAAO,KAAK,aAAa,EAAE;AAC1C,MAAM,OAAOD,eAAa,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;AAC9D,KAAA;;AAEA,IAAI,MAAM;AACV,MAAM,MAAM;AACZ,MAAM,KAAK,GAAG,0BAA0B;AACxC,MAAM,QAAQ;AACd,MAAM,KAAK,GAAG,EAAE;AAChB,MAAM,aAAa,GAAG,EAAE;AACxB,MAAM,YAAY;AAClB,MAAM,aAAa,GAAG,uBAAuB;AAC7C,KAAK,GAAG,MAAM,CAAA;;AAEd;AACA,IAAI,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;AACjD,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;;AAElD,IAAI,IAAI;AACR,MAAM,IAAI,CAAC,MAAM,EAAE;AACnB,QAAQ,MAAM,IAAI,KAAK;AACvB,UAAU,4EAA4E;AACtF,SAAS,CAAA;AACT,OAAA;;AAEA,MAAM,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;;AAE9C;AACA,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;;AAE1D;AACA,MAAM,IAAI,eAAe,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAA;AACzC,MAAM,IAAI,SAAS,GAAG,CAAC,CAAA;;AAEvB,MAAM,OAAO,SAAS,IAAI,aAAa,EAAE;AACzC;AACA,QAAQ,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE;AAC5C,UAAU,OAAA;AACV,SAAA;;AAEA;AACA,QAAQ,MAAM,aAAa,GAAG;AAC9B,UAAU,KAAK;AACf,UAAU,UAAU,EAAE,IAAI;AAC1B,UAAU,QAAQ,EAAE,eAAe;AACnC,UAAU,MAAM,EAAE,IAAI;AACtB,SAAS,CAAA;AACT,QAAQ,IAAI,YAAY,EAAE;AAC1B,UAAU,aAAa,CAAC,MAAM,GAAG,YAAY,CAAA;AAC7C,SAAA;AACA,QAAQ,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,UAAU,aAAa,CAAC,KAAK,GAAG,cAAc,CAAA;AAC9C,SAAA;;AAEA;AACA,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE;AAC7D,UAAU,MAAM,EAAE,eAAe,CAAC,MAAM;AACxC,SAAS,CAAC,CAAA;;AAEV,QAAQ,IAAI,qBAAqB,GAAG,EAAE,CAAA;AACtC,QAAQ,IAAI,UAAU,GAAG,IAAI,CAAA;;AAE7B;AACA,QAAQ,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK;AACpC,UAAU,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE;AACzC,YAAY,GAAG,CAAC,WAAW,CAAC,IAAI,CAACnH,kBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACvE,WAAA;AACA,SAAS,CAAC,CAAA;;AAEV;AACA,QAAQ,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,YAAY,EAAE,CAAA;AACxD,QAAQ,qBAAqB,GAAG,YAAY,CAAC,OAAO,CAAA;AACpD,QAAQ,UAAU,GAAG,YAAY,CAAC,WAAW,CAAA;;AAE7C;AACA,QAAQ,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM;AAC1D,UAAU,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,UAAU;AAC9C,SAAS,CAAA;;AAET,QAAQ,IAAI,UAAU,KAAK,UAAU,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;AACrE;AACA,UAAU,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE;AACzC,YAAY,GAAG,CAAC,WAAW,CAAC,IAAI,CAACG,qBAAmB,EAAE;AACtD,cAAc,SAAS;AACvB,cAAc,OAAO,EAAE,qBAAqB;AAC5C,cAAc,UAAU;AACxB,cAAc,KAAK,EAAE,YAAY,CAAC,KAAK;AACvC,aAAa,CAAC,CAAA;AACd,WAAA;AACA,UAAU,OAAA;AACV,SAAA;;AAEA;AACA,QAAQ,SAAS,EAAE,CAAA;;AAEnB;AACA,QAAQ,eAAe,CAAC,IAAI,CAAC;AAC7B,UAAU,IAAI,EAAE,WAAW;AAC3B,UAAU,OAAO,EAAE,qBAAqB;AACxC,SAAS,CAAC,CAAA;;AAEV;AACA,QAAQ,MAAM,WAAW,GAAG,EAAE,CAAA;AAC9B,QAAQ,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE;AAC/C,UAAU,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,OAAA;;AAE9C,UAAU,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;;AAE1D;AACA,UAAU,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE;AACzC,YAAY,GAAG,CAAC,WAAW,CAAC,IAAI,CAACF,sBAAoB,EAAE;AACvD,cAAc,SAAS;AACvB,cAAc,SAAS,EAAE,SAAS,CAAC,EAAE;AACrC,cAAc,QAAQ,EAAE,SAAS,CAAC,IAAI;AACtC,cAAc,UAAU;AACxB,cAAc,KAAK,EAAE,SAAS,CAAC,KAAK;AACpC,aAAa,CAAC,CAAA;AACd,WAAA;;AAEA,UAAU,IAAI,UAAU,CAAA;AACxB,UAAU,IAAI,OAAO,GAAG,KAAK,CAAA;;AAE7B,UAAU,IAAI,CAAC,UAAU,EAAE;AAC3B,YAAY,UAAU,GAAG,CAAC,qCAAqC,EAAE,SAAS,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;AACrH,YAAY,OAAO,GAAG,IAAI,CAAA;AAC1B,WAAW,MAAM;AACjB,YAAY,IAAI;AAChB,cAAc,MAAM,SAAS,GAAG,MAAMuG,eAAa,CAAC,QAAQ;AAC5D,gBAAgB,GAAG;AACnB,gBAAgB,UAAU;AAC1B,gBAAgB,SAAS,CAAC,IAAI;AAC9B,gBAAgB,SAAS,CAAC,KAAK;AAC/B,eAAe,CAAA;AACf,cAAc,IAAI,SAAS,CAAC,KAAK,EAAE;AACnC,gBAAgB,UAAU,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;AAC1D,gBAAgB,OAAO,GAAG,IAAI,CAAA;AAC9B,eAAe,MAAM;AACrB,gBAAgB,UAAU,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;AAC7D,eAAA;AACA,aAAa,CAAC,OAAO,GAAG,EAAE;AAC1B,cAAc,UAAU,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;AAC/D,cAAc,OAAO,GAAG,IAAI,CAAA;AAC5B,aAAA;AACA,WAAA;;AAEA;AACA,UAAU,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE;AACzC,YAAY,GAAG,CAAC,WAAW,CAAC,IAAI,CAACtG,wBAAsB,EAAE;AACzD,cAAc,SAAS;AACvB,cAAc,SAAS,EAAE,SAAS,CAAC,EAAE;AACrC,cAAc,QAAQ,EAAE,SAAS,CAAC,IAAI;AACtC,cAAc,MAAM,EAAE,UAAU;AAChC,cAAc,OAAO;AACrB,aAAa,CAAC,CAAA;AACd,WAAA;;AAEA,UAAU,WAAW,CAAC,IAAI,CAAC;AAC3B,YAAY,IAAI,EAAE,aAAa;AAC/B,YAAY,WAAW,EAAE,SAAS,CAAC,EAAE;AACrC,YAAY,OAAO,EAAE,UAAU;AAC/B,YAAY,QAAQ,EAAE,OAAO;AAC7B,WAAW,CAAC,CAAA;AACZ,SAAA;;AAEA;AACA,QAAQ,eAAe,CAAC,IAAI,CAAC;AAC7B,UAAU,IAAI,EAAE,MAAM;AACtB,UAAU,OAAO,EAAE,WAAW;AAC9B,SAAS,CAAC,CAAA;;AAEV;AACA,OAAA;;AAEA;AACA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE;AACrC,QAAQ,GAAG,CAAC,WAAW,CAAC,IAAI,CAACE,kBAAgB,EAAE;AAC/C,UAAU,SAAS;AACnB,UAAU,KAAK,EAAE,CAAC,kCAAkC,EAAE,aAAa,CAAC,wCAAwC,CAAC;AAC7G,UAAU,IAAI,EAAE,iBAAiB;AACjC,SAAS,CAAC,CAAA;AACV,OAAA;AACA,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE;AAC1C;AACA,QAAQ,OAAA;AACR,OAAA;;AAEA,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,qCAAqC,CAAC,EAAE,KAAK,CAAC,CAAA;;AAEnE,MAAM,MAAM,YAAY,GAAG;AAC3B,QAAQ,SAAS;AACjB,QAAQ,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,eAAe;AAC/C,QAAQ,IAAI,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,SAAS;AACrD,OAAO,CAAA;;AAEP;AACA,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;AAChC,QAAQ,YAAY,CAAC,IAAI,GAAG,cAAc,CAAA;AAC1C,QAAQ,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC,CAAA;AACzD,QAAQ,IAAI,UAAU,EAAE;AACxB,UAAU,YAAY,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;AAC5D,SAAA;AACA,OAAA;;AAEA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE;AACrC,QAAQ,GAAG,CAAC,WAAW,CAAC,IAAI,CAACA,kBAAgB,EAAE,YAAY,CAAC,CAAA;AAC5D,OAAA;AACA,KAAK,SAAS;AACd,MAAM,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;AACtC,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK;AACpC,IAAI,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;AACpD,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;AACxB,MAAM,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;AACtC,MAAM,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC9B,KAAA;AACA;AACA,IAAI,OAAO+G,eAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;AAChD,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,eAAc,GAAGC,eAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChT9B,MAAM,MAAM,GAAG,UAAyC,CAAA;;AAExD,MAAMC,wBAAsB,GAAG,OAAO,CAAA;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,yBAAuB,CAAC,MAAM,EAAE;AACzC,EAAE,MAAM,MAAM,GAAG,EAAE,CAAA;;AAEnB,EAAE,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC7E,IAAI,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,kCAAkC,CAAC,EAAE,CAAA;AACzE,GAAA;;AAEA;AACA,EAAE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE;AACvC,IAAI,IAAI,EAAE,KAAK,IAAI,MAAM,CAAC,EAAE;AAC5B,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACvD,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,IAAI,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;AACnC,GAAA;;AAEA;AACA,EAAE,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,EAAE;AAChD,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAA;AACnD,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;AAC5D,IAAI,MAAM,CAAC,IAAI;AACf,MAAM,CAAC,8DAA8D,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;AAC9F,KAAK,CAAA;AACL,GAAA;;AAEA;AACA,EAAE,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AACnE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAA;AACpD,GAAG,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE;AACvC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAA;AACzD,GAAA;;AAEA;AACA,EAAE,IAAI,aAAa,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,EAAE;AACzE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAA;AACjD,GAAA;;AAEA;AACA,EAAE,IAAI,QAAQ,IAAI,MAAM,EAAE;AAC1B,IAAI;AACJ,MAAM,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;AACvC,MAAM,MAAM,CAAC,MAAM,KAAK,IAAI;AAC5B,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAA;AACjC,MAAM;AACN,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAA;AAC5E,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC9E,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAA;AAC7D,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,IAAI,WAAW,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE;AACtE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAA;AAChD,GAAA;;AAEA;AACA,EAAE,IAAI,MAAM,IAAI,MAAM,EAAE;AACxB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACrC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAA;AACvD,KAAK,MAAM;AACX,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnD,QAAQ,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAChD,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAA;AACtD,SAAA;AACA,OAAA;AACA,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,EAAE;AACzE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAA;AAChD,GAAG,MAAM;AACT,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;AACjD,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAA;AACxD,KAAK,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACrD,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,wDAAwD,CAAC,CAAC,CAAA;AAC7E,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AACtC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAA;AAC7C,GAAG,MAAM;AACT,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpD,MAAM,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AACjC,MAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE;AAC/C,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAA;AACxD,QAAQ,SAAA;AACR,OAAA;AACA,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,EAAE;AAC7C,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAA;AACpE,OAAA;AACA,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE;AACvD,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAA;AACzE,OAAA;AACA,MAAM,IAAI,SAAS,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE;AAC3D,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAA;AAC/D,OAAA;AACA,MAAM,IAAI,UAAU,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE;AAC9D,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAA;AACjE,OAAA;AACA,MAAM,IAAI,QAAQ,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE;AACzD,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAA;AAC9D,OAAA;AACA,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,IAAI,WAAW,IAAI,MAAM,EAAE;AAC7B,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AAC1C,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAA;AACjD,KAAK,MAAM;AACX,MAAM,MAAM,YAAY,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;AACvD,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxD,QAAQ,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;AACrC,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE;AACjD,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAA;AAC5D,UAAU,SAAA;AACV,SAAA;AACA,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE;AACnD,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAA;AAC1E,SAAA;AACA,QAAQ,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE;AACrD,UAAU,MAAM,CAAC,IAAI;AACrB,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,6DAA6D,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAC7G,WAAW,CAAA;AACX,SAAA;AACA,QAAQ,IAAI,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;AACvD,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAA;AAClE,SAAA;AACA,OAAA;AACA,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,IAAI,WAAW,IAAI,MAAM,EAAE;AAC7B,IAAI,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE;AAC9C,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAA;AACjD,KAAK,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,GAAG,EAAE;AAC9C,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAA;AAChE,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,IAAI,aAAa,IAAI,MAAM,EAAE;AAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;AAC5C,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAA;AACnD,KAAK,MAAM;AACX,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1D,QAAQ,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;AACxC,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,IAAI,EAAE;AACnD,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAA;AAC9D,UAAU,SAAA;AACV,SAAA;AACA;AACA,QAAQ;AACR,UAAU,OAAO,EAAE,CAAC,MAAM,KAAK,QAAQ;AACvC,UAAU,EAAE,CAAC,MAAM,KAAK,IAAI;AAC5B,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM;AAC3B,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,KAAA;AACrB,UAAU;AACV,UAAU,MAAM,CAAC,IAAI;AACrB,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC,gDAAgD,CAAC;AAC/E,WAAW,CAAA;AACX,SAAA;AACA;AACA,QAAQ;AACR,UAAU,OAAO,EAAE,CAAC,MAAM,KAAK,QAAQ;AACvC,UAAU,EAAE,CAAC,MAAM,KAAK,IAAI;AAC5B,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM;AAC3B,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,OAAA;AACrB,UAAU;AACV,UAAU,MAAM,CAAC,IAAI;AACrB,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC,kDAAkD,CAAC;AACjF,WAAW,CAAA;AACX,SAAA;AACA,OAAA;AACA,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;AACtD,EAAE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACzC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACtC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5C,KAAA;AACA,GAAA;;AAEA,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;AAC/C,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,eAAa,CAAC,MAAM,EAAE;AAC/B,EAAE,OAAO;AACT,IAAI,aAAa,EAAEF,wBAAsB;AACzC,IAAI,WAAW,EAAE,EAAE;AACnB,IAAI,SAAS,EAAE,IAAI;AACnB,IAAI,IAAI,EAAE,EAAE;AACZ,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,WAAW,EAAE,EAAE;AACnB,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,WAAW,EAAE,EAAE;AACnB,IAAI,GAAG,MAAM;AACb,IAAI,SAAS,EAAE;AACf,MAAM,IAAI,EAAE,WAAW;AACvB,MAAM,OAAO,EAAE,CAAC;AAChB,MAAM,MAAM,EAAE,CAAC;AACf,MAAM,GAAG,MAAM,CAAC,SAAS;AACzB,KAAK;AACL,GAAG,CAAA;AACH,CAAA;;AAEA,IAAAG,0BAAc,GAAG;AACjB,2BAAEF,yBAAuB;AACzB,iBAAEC,eAAa;AACf,0BAAEF,wBAAsB;AACxB,CAAC;;;;;;;;;AC7OD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASI,uBAAqB,CAAC,MAAM,EAAE;AACvC,EAAE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE,CAAA;;AAE9B,EAAE,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;AAC7B;AACA,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;AAClD,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AACpC,KAAA;;AAEA;AACA,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,MAAM,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAC3D;AACA,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;AAC9D;AACA,UAAU,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;AAClD,YAAY,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC1C,WAAA;AACA,SAAA;AACA,OAAA;AACA,KAAA;AACA,GAAA;;AAEA;AACA;AACA,EAAE,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;AAC7B,IAAI;AACJ,MAAM,IAAI,CAAC,SAAS;AACpB,MAAM,IAAI,CAAC,SAAS,KAAK,qBAAqB;AAC9C,MAAM,IAAI,CAAC,SAAS,KAAK,WAAA;AACzB,MAAM;AACN,MAAM,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AACpC,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,UAAU,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAA;AAC1C,EAAE,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;;AAEhC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;AAC/B,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,oBAAkB,CAAC,MAAM,EAAE;AACpC,EAAE,MAAM,MAAM,GAAG,EAAE,CAAA;;AAEnB,EAAE,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;AAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,SAAA;;AAE/D,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAA;AACvC,IAAI,IAAI,CAAC,YAAY,EAAE,SAAA;;AAEvB,IAAI,KAAK,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AAC9E,MAAM,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE;AAC9C;AACA,QAAQ,MAAM,CAAC,IAAI,CAAC;AACpB,UAAU,MAAM,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE;AAC9D,UAAU,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE;AAC9D,SAAS,CAAC,CAAA;AACV,OAAO,MAAM;AACb,QAAQ,OAAO,cAAc,KAAK,QAAQ;AAC1C,QAAQ,cAAc,KAAK,IAAA;AAC3B,QAAQ;AACR;AACA,QAAQ,KAAK,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO;AAC9D,UAAU,cAAc;AACxB,SAAS,EAAE;AACX,UAAU,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAC5C,UAAU,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;;AAEvC,UAAU,IAAI,OAAO,GAAG,SAAS,CAAA;AACjC,UAAU,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;AAChD,YAAY,OAAO,GAAG,YAAY,CAAA;AAClC,WAAA;;AAEA,UAAU,MAAM,CAAC,IAAI,CAAC;AACtB,YAAY,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE;AAC9D,YAAY,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE;AACrD,WAAW,CAAC,CAAA;AACZ,SAAA;AACA,OAAA;AACA,KAAA;AACA,GAAA;;AAEA,EAAE,OAAO,MAAM,CAAA;AACf,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,yBAAuB,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI,EAAE;AACxE,EAAE,MAAM,OAAO,GAAG,EAAE,CAAA;AACpB,EAAE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAA;;AAExB,EAAE,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE;AACrC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAA;AACxB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;;AAElB,IAAI,IAAI,WAAW,GAAG,EAAE,CAAA;AACxB,IAAI,IAAI,OAAO,GAAG,GAAG,CAAA;AACrB,IAAI,IAAI,MAAM,GAAG,EAAE,CAAA;;AAEnB;AACA,IAAI,IAAI,cAAc,EAAE;AACxB,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,UAAU,EAAE,CAAA;AAC1D,MAAM,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE;AACxC,QAAQ,IAAI,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACjE,UAAU,WAAW,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,CAAA;AACpC,UAAU,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,GAAG,CAAA;AACpC,UAAU,MAAM;AAChB,YAAY,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAA;AAC1E,UAAU,MAAA;AACV,SAAA;AACA,OAAA;AACA,KAAA;;AAEA,IAAI,OAAO,CAAC,IAAI,CAAC;AACjB,MAAM,EAAE,EAAE,WAAW,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI;AACvD,MAAM,OAAO,EAAE,WAAW,IAAI,IAAI;AAClC,MAAM,OAAO;AACb,MAAM,QAAQ,EAAE,IAAI;AACpB,MAAM,MAAM,EAAE,MAAM,IAAI,EAAE;AAC1B,KAAK,CAAC,CAAA;AACN,GAAA;;AAEA,EAAE,OAAO,OAAO,CAAA;AAChB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,2BAAyB,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI,EAAE;AAC1E,EAAE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAE,CAAA;;AAE/B,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,CAAA;;AAEhC,EAAE,MAAM,gBAAgB,GAAG,cAAc,CAAC,UAAU,EAAE,CAAA;;AAEtD,EAAE,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE;AACrC,IAAI,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE;AACtC,MAAM,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC9E,QAAQ,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE;AACrC,UAAU,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAA;AACpD,UAAU,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACrC,YAAY,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE;AACjC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI;AAC1B,cAAc,aAAa,EAAE,CAAC,CAAC,aAAa;AAC5C,cAAc,QAAQ,EAAE,CAAC,CAAC,QAAQ,KAAK,KAAK;AAC5C,cAAc,MAAM,EAAE,EAAE;AACxB,aAAa,CAAC,CAAA;AACd,WAAA;AACA,UAAU,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAC5C,UAAU,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC5C,YAAY,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACnC,WAAA;AACA,SAAA;AACA,OAAA;AACA,KAAA;AACA,GAAA;;AAEA,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAA;AACzC,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,0BAAwB,CAAC,MAAM,EAAE,WAAW,EAAE;AACvD,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,MAAM,CAAA;;AAExD;AACA;AACA,EAAE,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAE,CAAA;;AAErC,EAAE,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;AAClC,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAA;AAC5C,IAAI,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAA;AAC5C,IAAI,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAA;AACxC,IAAI,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,CAAA;;AAExC,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,EAAE,SAAA;;AAEtD,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;AAC9C,MAAM,iBAAiB,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;AAC7C,KAAA;;AAEA,IAAI,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;;AAEzD,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;AAC/B,MAAM,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAA;AAC/B,KAAA;;AAEA;AACA,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,GAAG,OAAO,IAAI,SAAS,CAAA;AAC7D,GAAA;;AAEA;AACA,EAAE,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;AAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAA;;AAEzB,IAAI,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC3D,IAAI,IAAI,SAAS,EAAE;AACnB;AACA,MAAM,IAAI,CAAC,SAAS,GAAG,EAAE,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,CAAA;AAClE,KAAA;AACA,GAAA;;AAEA,EAAE,OAAO,MAAM,CAAA;AACf,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,2BAA2B;AACpC,EAAE,gBAAgB,GAAG,EAAE;AACvB,EAAE,gBAAgB,GAAG,EAAE;AACvB,EAAE,gBAAgB,GAAG,EAAE;AACvB,EAAE;AACF,EAAE,MAAM,eAAe,GAAG,IAAI,GAAG,EAAE,CAAA;AACnC,EAAE,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE;AACpC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE;AAChB,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AACpC,KAAA;AACA,GAAA;;AAEA,EAAE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAE,CAAA;AAClC,EAAE,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE;AACpC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE;AAChB,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AACnC,KAAA;AACA,GAAA;;AAEA,EAAE,MAAM,OAAO,GAAG,EAAE,CAAA;AACpB,EAAE,IAAI,cAAc,GAAG,CAAC,CAAA;AACxB,EAAE,IAAI,cAAc,GAAG,CAAC,CAAA;AACxB,EAAE,IAAI,gBAAgB,GAAG,CAAC,CAAA;;AAE1B,EAAE,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE;AACtC,IAAI,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAA;AACnC,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,KAAK,KAAK,CAAA;AAC3C,IAAI,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;;AAEtD,IAAI,IAAI,SAAS,EAAE;AACnB,MAAM,cAAc,EAAE,CAAA;AACtB,MAAM,OAAO,CAAC,IAAI,CAAC;AACnB,QAAQ,OAAO,EAAE,WAAW;AAC5B,QAAQ,QAAQ;AAChB,QAAQ,MAAM,EAAE,WAAW;AAC3B,QAAQ,gBAAgB,EAAE,SAAS,CAAC,OAAO,IAAI,IAAI;AACnD,QAAQ,eAAe,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG;AAC3C,OAAO,CAAC,CAAA;AACR,KAAK,MAAM,IAAI,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;AAChD,MAAM,cAAc,EAAE,CAAA;AACtB,MAAM,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;AACzD,MAAM,OAAO,CAAC,IAAI,CAAC;AACnB,QAAQ,OAAO,EAAE,WAAW;AAC5B,QAAQ,QAAQ;AAChB,QAAQ,MAAM,EAAE,YAAY;AAC5B,QAAQ,gBAAgB,EAAE,WAAW,CAAC,OAAO,IAAI,IAAI;AACrD,QAAQ,eAAe,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG;AAC3C,OAAO,CAAC,CAAA;AACR,KAAK,MAAM;AACX,MAAM,gBAAgB,EAAE,CAAA;AACxB,MAAM,OAAO,CAAC,IAAI,CAAC;AACnB,QAAQ,OAAO,EAAE,WAAW;AAC5B,QAAQ,QAAQ;AAChB,QAAQ,MAAM,EAAE,aAAa;AAC7B,QAAQ,eAAe,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG;AAC3C,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAA;;AAEA,EAAE,MAAM,sBAAsB,GAAG,OAAO,CAAC,IAAI;AAC7C,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,aAAa,IAAI,CAAC,CAAC,QAAQ;AACnD,GAAG,CAAA;;AAEH,EAAE,OAAO;AACT,IAAI,UAAU,EAAE,CAAC,sBAAsB;AACvC,IAAI,OAAO,EAAE;AACb,MAAM,KAAK,EAAE,gBAAgB,CAAC,MAAM;AACpC,MAAM,SAAS,EAAE,cAAc;AAC/B,MAAM,SAAS,EAAE,cAAc;AAC/B,MAAM,WAAW,EAAE,gBAAgB;AACnC,KAAK;AACL,IAAI,OAAO;AACX,GAAG,CAAA;AACH,CAAA;;AAEA;AACA,MAAMC,iBAAe,GAAG;AACxB,EAAE,KAAK,EAAE,SAAS;AAClB,EAAE,IAAI,EAAE,SAAS;AACjB,EAAE,IAAI,EAAE,SAAS;AACjB,EAAE,OAAO,EAAE,SAAS;AACpB,EAAE,KAAK,EAAE,SAAS;AAClB,EAAE,GAAG,EAAE,SAAS;AAChB,EAAE,MAAM,EAAE,SAAS;AACnB,EAAE,KAAK,EAAE,SAAS;AAClB,EAAE,MAAM,EAAE,SAAS;AACnB,EAAE,IAAI,EAAE,SAAS;AACjB,EAAE,KAAK,EAAE,SAAS;AAClB,EAAE,OAAO,EAAE,SAAS;AACpB,EAAE,IAAI,EAAE,SAAS;AACjB,EAAE,IAAI,EAAE,SAAS;AACjB,EAAE,GAAG,EAAE,SAAS;AAChB,EAAE,IAAI,EAAE,SAAS;AACjB,EAAE,MAAM,EAAE,SAAS;AACnB,EAAE,MAAM,EAAE,SAAS;AACnB,EAAE,MAAM,EAAE,SAAS;AACnB,EAAE,OAAO,EAAE,SAAS;AACpB,EAAE,IAAI,EAAE,SAAS;AACjB,EAAE,IAAI,EAAE,SAAS;AACjB,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA,SAASC,gBAAc,CAAC,KAAK,EAAE;AAC/B,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAA;AACvB,EAAE,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAA;AAC1C,EAAE,IAAID,iBAAe,CAAC,KAAK,CAAC,EAAE,OAAOA,iBAAe,CAAC,KAAK,CAAC,CAAA;AAC3D,EAAE,OAAO,KAAK,CAAA;AACd,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,wBAAwB,CAAC,eAAe,EAAE,OAAO,GAAG,EAAE,EAAE;AACjE,EAAE,MAAM,IAAI,GAAG,CAAC,eAAe,CAAC,IAAI,IAAI,WAAW;AACnD,KAAK,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAA;AACnC,KAAK,OAAO,CAAC,MAAM,EAAE,GAAG,CAAA;AACxB,KAAK,WAAW,EAAE,CAAA;;AAElB,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAA;AAC7C,EAAE,MAAM,OAAO,GAAG,OAAO,CAAA;;AAEzB,EAAE,MAAM,QAAQ,GAAG;AACnB,IAAI,UAAU;AACd,IAAI,IAAI;AACR,IAAI,WAAW,EAAE,eAAe,CAAC,IAAI,IAAI,WAAW;AACpD,IAAI,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE;AAC9C,IAAI,WAAW,EAAE,eAAe,CAAC,WAAW,IAAI,EAAE;AAClD,IAAI,OAAO;AACX,IAAI,IAAI,EAAE,WAAW;AACrB,IAAI,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,SAAS;AAC3C,IAAI,IAAI,EAAE,eAAe,CAAC,IAAI,IAAI,EAAE;AACpC,IAAI,IAAI,EAAE,eAAe,CAAC,IAAI,IAAI,MAAM;AACxC,IAAI,WAAW,EAAE,CAAC,mBAAmB,EAAE,UAAU,CAAC,iCAAiC,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,eAAe,CAAC;AACvJ,IAAI,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;AACxC,IAAI,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACzC,IAAI,OAAO,EAAE,CAAC,eAAe,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM;AACzD,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE;AACd,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO;AACpD,MAAM,OAAO,EAAE,CAAC,CAAC,OAAO;AACxB,MAAM,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,GAAG;AAC/B,MAAM,QAAQ,EAAE,CAAC,CAAC,QAAQ,KAAK,KAAK;AACpC,MAAM,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE;AAC5B,KAAK,CAAC,CAAC;AACP,IAAI,SAAS,EAAE,eAAe,CAAC,SAAS,IAAI,EAAE;AAC9C,IAAI,WAAW,EAAE,eAAe,CAAC,WAAW,IAAI,EAAE;AAClD,GAAG,CAAA;;AAEH,EAAE,IAAI,OAAO,CAAC,SAAS,IAAI,eAAe,CAAC,SAAS,EAAE;AACtD,IAAI,QAAQ,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,eAAe,CAAC,SAAS,CAAA;AACvE,GAAA;;AAEA;AACA,EAAE,IAAI,eAAe,CAAC,KAAK,EAAE;AAC7B,IAAI,QAAQ,CAAC,KAAK,GAAG;AACrB,MAAM,GAAG,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE;AAC1C,MAAM,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,eAAe,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE;AAC/E,KAAK,CAAA;AACL,IAAI,IAAI,eAAe,CAAC,KAAK,CAAC,eAAe,EAAE;AAC/C,MAAM,QAAQ,CAAC,KAAK,CAAC,eAAe,GAAG,eAAe,CAAC,KAAK,CAAC,eAAe,CAAA;AAC5E,KAAA;AACA;AACA,IAAI,MAAM,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAA;AACzC,IAAI,IAAI,EAAE,EAAE;AACZ,MAAM,MAAM,MAAM,GAAG,EAAE,CAAA;AACvB,MAAM,IAAI,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO;AAC1C,QAAQ,MAAM,CAAC,OAAO,GAAGC,gBAAc,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AACxE,MAAM,IAAI,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS;AAC9C,QAAQ,MAAM,CAAC,SAAS,GAAGA,gBAAc,CAAC,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;AAC9E,MAAM,IAAI,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ;AAC5C,QAAQ,MAAM,CAAC,QAAQ,GAAGA,gBAAc,CAAC,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AAC3E,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1C,QAAQ,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;AACtC,OAAA;AACA,KAAA;AACA,GAAA;;AAEA,EAAE,OAAO,QAAQ,CAAA;AACjB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,MAAM,EAAE;AACvC,EAAE,MAAM,OAAO,GAAG;AAClB,IAAI,IAAI,EAAE,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,IAAI,WAAW;AAC1D,IAAI,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;AACzC,IAAI,MAAM;AACV,MAAM,OAAO,MAAM,CAAC,MAAM,KAAK,QAAA;AAC/B,UAAU,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAA;AAChC,UAAU,MAAM,CAAC,MAAM,IAAI,EAAE;AAC7B,IAAI,QAAQ,EAAE,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE;AAC7E,IAAI,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;AACjC,IAAI,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM;AAC/B,IAAI,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;AAC3B,IAAI,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;AACzC,IAAI,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,IAAI;AAC3C,IAAI,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,SAAS;AAC1C,IAAI,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM;AAChD,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE;AAC7C,MAAM,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE;AAC9B,MAAM,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,GAAG;AAC/B,MAAM,QAAQ,EAAE,CAAC,CAAC,QAAQ,KAAK,KAAK;AACpC,MAAM,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE;AAC5B,KAAK,CAAC,CAAC;AACP,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM;AAC3D,MAAM,GAAG,EAAE,IAAI;AACf,MAAM,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC;AAChK,KAAK,CAAC,CAAC;AACP,IAAI,SAAS,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM;AACpD,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;AACxB,MAAM,aAAa,EAAE,CAAC,CAAC,aAAa,IAAI,EAAE;AAC1C,MAAM,QAAQ,EAAE,CAAC,CAAC,QAAQ,KAAK,KAAK;AACpC,MAAM,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE;AAC5B,KAAK,CAAC,CAAC;AACP,IAAI,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,IAAI;AACvC,IAAI,OAAO,EAAE;AACb,MAAM,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM;AAChD,MAAM,UAAU,EAAE,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE,MAAM;AACnD,MAAM,aAAa,EAAE,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,MAAM;AACpD,MAAM,eAAe,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM;AACpD,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,KAAK;AACnC,OAAO,CAAC,MAAM;AACd,MAAM,eAAe,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM;AACpD,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,KAAK;AACnC,OAAO,CAAC,MAAM;AACd,KAAK;AACL,GAAG,CAAA;;AAEH,EAAE,OAAO,OAAO,CAAA;AAChB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,UAAU,GAAG,EAAE,EAAE,gBAAgB,GAAG,EAAE,EAAE;AACvE,EAAE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAE,CAAA;AAClC,EAAE,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE;AACtC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,QAAQ,MAAM,WAAW,EAAE;AAC5D,MAAM,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AACvC,KAAA;AACA,GAAA;;AAEA,EAAE,MAAM,OAAO,GAAG,EAAE,CAAA;;AAEpB,EAAE,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE;AAC/B,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC,gBAAgB,CAAA;AACtC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,SAAA;;AAE5C,IAAI,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;AAClE,IAAI,IAAI,CAAC,WAAW,EAAE,SAAA;;AAEtB,IAAI,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,OAAO,CAAA;AAC/D,IAAI,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,IAAI,OAAO,CAAA;;AAExD,IAAI,IAAI,gBAAgB,KAAK,aAAa,EAAE;AAC5C,MAAM,OAAO,CAAC,IAAI,CAAC;AACnB,QAAQ,WAAW,EAAE,EAAE,CAAC,EAAE;AAC1B,QAAQ,aAAa,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE;AAChD,QAAQ,eAAe,EAAE,MAAM,CAAC,eAAe;AAC/C,QAAQ,gBAAgB;AACxB,QAAQ,aAAa;AACrB,QAAQ,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI;AAC7C,OAAO,CAAC,CAAA;AACR,KAAA;AACA,GAAA;;AAEA,EAAE,OAAO,OAAO,CAAA;AAChB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,0BAA0B;AACnC,EAAE,iBAAiB,GAAG,EAAE;AACxB,EAAE,mBAAmB,GAAG,EAAE;AAC1B,EAAE;AACF,EAAE,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAA;AACpC,EAAE,KAAK,MAAM,CAAC,IAAI,mBAAmB,EAAE;AACvC,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAA;AACtC,IAAI,IAAI,GAAG,EAAE;AACb,MAAM,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAA;AAChD,KAAA;AACA,GAAA;;AAEA,EAAE,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;AACnD,IAAI,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,CAAA;AAClD,IAAI,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;;AAEpD,IAAI,OAAO;AACX,MAAM,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE;AAC1B,MAAM,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,EAAE;AAC5C,MAAM,QAAQ,EAAE,GAAG,CAAC,QAAQ,KAAK,KAAK;AACtC,MAAM,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE;AAC9B,MAAM,MAAM,EAAE,UAAU,GAAG,YAAY,GAAG,aAAa;AACvD,MAAM,kBAAkB,EAAE,UAAU,IAAI,IAAI;AAC5C,KAAK,CAAA;AACL,GAAG,CAAC,CAAA;;AAEJ,EAAE,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM;AAC1C,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,YAAY;AACpC,GAAG,CAAC,MAAM,CAAA;AACV,EAAE,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM;AAC1C,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,aAAa;AACrC,GAAG,CAAC,MAAM,CAAA;;AAEV,EAAE,OAAO;AACT,IAAI,aAAa,EAAE,eAAe,KAAK,CAAC;AACxC,IAAI,OAAO,EAAE;AACb,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM;AAC7B,MAAM,UAAU,EAAE,eAAe;AACjC,MAAM,UAAU,EAAE,eAAe;AACjC,KAAK;AACL,IAAI,SAAS;AACb,GAAG,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,SAAS,GAAG,EAAE,EAAE,eAAe,GAAG,EAAE,EAAE;AACrE,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;;AAErE,EAAE,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,KAAK,KAAK,CAAC,CAAA;;AAEzE,EAAE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;AACjC,IAAI,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAA;AAClE,GAAA;;AAEA,EAAE,MAAM,YAAY,GAAG,YAAA;AACvB,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAA;AACvC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAA;AACvB,EAAE,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM;AACzC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;AAC3C,GAAG,CAAA;;AAEH,EAAE,OAAO;AACT,IAAI,UAAU,EAAE,WAAW,CAAC,MAAM,KAAK,CAAC;AACxC,IAAI,WAAW;AACf,IAAI,YAAY;AAChB,GAAG,CAAA;AACH,CAAA;;AAEA,IAAAC,sBAAc,GAAG;AACjB,yBAAEP,uBAAqB;AACvB,sBAAEC,oBAAkB;AACpB,2BAAEC,yBAAuB;AACzB,6BAAEC,2BAAyB;AAC3B,4BAAEC,0BAAwB;AAC1B,EAAE,2BAA2B;AAC7B,EAAE,wBAAwB;AAC1B,EAAE,qBAAqB;AACvB,EAAE,qBAAqB;AACvB,EAAE,0BAA0B;AAC5B,EAAE,qBAAqB;AACvB,CAAC;;;;;;;;;;;;;;;;AC3oBD,MAAMjC,IAAE,GAAG1C,YAAa,CAAA;AACxB,MAAM+B,MAAI,GAAG9B,YAAe,CAAA;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS8E,gBAAc,CAAC,UAAU,EAAE;AACpC,EAAE,MAAM,MAAM,GAAGhD,MAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;AACjD,EAAE,IAAIW,IAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AAC7B,IAAI,OAAO,MAAM,CAAA;AACjB,GAAA;;AAEA;AACA,EAAE,MAAM,OAAO,GAAGX,MAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;AAClD,EAAE,IAAIW,IAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AAC9B,IAAI,OAAO,OAAO,CAAA;AAClB,GAAA;;AAEA;AACA,EAAE,IAAI;AACN,IAAI,MAAM,OAAO,GAAGA,IAAE,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;AACvE,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM;AAClC,MAAM,CAAC,CAAC;AACR,QAAQ,CAAC,CAAC,WAAW,EAAE;AACvB,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;AAC/B,QAAQ,CAAC,CAAC,IAAI,KAAK,MAAM;AACzB,QAAQ,CAAC,CAAC,IAAI,KAAK,cAAc;AACjC,KAAK,CAAA;;AAEL,IAAI,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAClC,MAAM,MAAM,MAAM,GAAGX,MAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;AAClE,MAAM,IAAIW,IAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;AACjC,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,0CAA0C,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;AAC1E,QAAQ,OAAO,MAAM,CAAA;AACrB,OAAA;AACA,KAAA;AACA,GAAG,CAAC,OAAO,GAAG,EAAE;AAChB;AACA,GAAA;;AAEA,EAAE,OAAO,IAAI,CAAA;AACb,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa,CAAC,UAAU,EAAE;AACzC,EAAE,MAAM,UAAU,GAAGqC,gBAAc,CAAC,UAAU,CAAC,CAAA;;AAE/C,EAAE,IAAI,CAAC,UAAU,EAAE;AACnB,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,CAAC,0CAA0C,EAAE,UAAU,CAAC,UAAU,CAAC;AACzE,KAAK,CAAA;AACL,IAAI,OAAO,IAAI,CAAA;AACf,GAAA;;AAEA;AACA,EAAE,MAAM,KAAK,GAAGrC,IAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;AAC1C,EAAE,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAA;;AAE/D,EAAE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9B,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,CAAC,4CAA4C,EAAE,UAAU,CAAC,UAAU,CAAC;AAC3E,KAAK,CAAA;AACL,IAAI,OAAO,IAAI,CAAA;AACf,GAAA;;AAEA;AACA;AACA;AACA,EAAE,MAAM,aAAa;AACrB,IAAI,IAAI,GAAGX,MAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1E,EAAE,MAAM,OAAO,GAAG,EAAE,CAAA;AACpB,EAAE,MAAM,WAAW,GAAG,EAAE,CAAA;;AAExB,EAAE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AACpC,IAAI,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;AAC1D,IAAI,MAAM,aAAa,GAAG,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA;AAC/C,IAAI,MAAM,iBAAiB,GAAGA,MAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;AAClE,IAAI,MAAM,YAAY,GAAGW,IAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAA;;AAEzD;AACA,IAAI,OAAO,CAAC,IAAI;AAChB,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;AAC1E,KAAK,CAAA;;AAEL,IAAI,IAAI,YAAY,EAAE;AACtB;AACA,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC;AAC/E,OAAO,CAAA;AACP,MAAM,WAAW,CAAC,IAAI;AACtB,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,mBAAmB,EAAE,aAAa,CAAC,OAAO,CAAC;AACzG,OAAO,CAAA;AACP,KAAK,MAAM;AACX;AACA,MAAM,WAAW,CAAC,IAAI;AACtB,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC;AACjE,OAAO,CAAA;AACP,KAAA;AACA,GAAA;;AAEA,EAAE,MAAM,YAAY,GAAG,CAAC,GAAG,OAAO,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;;AAEtE;AACA,EAAE,MAAM,SAAS,GAAGX,MAAI,CAAC,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAA;AAC/D,EAAE,MAAM,OAAO,GAAGA,MAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;AAC/C,EAAE,MAAM,OAAO,GAAGA,MAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;;AAEpD,EAAE,IAAI;AACN;AACA,IAAI,IAAI,CAACW,IAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AACjC,MAAMA,IAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AAChD,KAAA;;AAEA,IAAIA,IAAE,CAAC,aAAa,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;;AAErD,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,CAAC,2BAA2B,EAAE,SAAS,CAAC,MAAM,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;AACtF,KAAK,CAAA;;AAEL;AACA;AACA,IAAI,MAAM,OAAO,GAAG,OAAA,CAAQ,SAAS,CAAC,CAAA;;AAEtC,IAAI,MAAM,OAAO,CAAC,KAAK,CAAC;AACxB,MAAM,WAAW,EAAE,CAAC,SAAS,CAAC;AAC9B,MAAM,MAAM,EAAE,IAAI;AAClB,MAAM,MAAM,EAAE,KAAK;AACnB,MAAM,OAAO,EAAE,OAAO;AACtB;AACA;AACA,MAAM,QAAQ,EAAE;AAChB,QAAQ,OAAO;AACf,QAAQ,WAAW;AACnB,QAAQ,mBAAmB;AAC3B,QAAQ,kBAAkB;AAC1B,QAAQ,mBAAmB;AAC3B,QAAQ,YAAY;AACpB,OAAO;AACP;AACA,MAAM,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;AAC9B,MAAM,QAAQ,EAAE,SAAS;AACzB,KAAK,CAAC,CAAA;;AAEN,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,yCAAyC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;AACtE,IAAI,OAAO,OAAO,CAAA;AAClB,GAAG,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK;AACjB,MAAM,CAAC,wCAAwC,EAAE,UAAU,CAAC,CAAC,CAAC;AAC9D,MAAM,KAAK;AACX,KAAK,CAAA;AACL,IAAI,MAAM,KAAK,CAAA;AACf,GAAG,SAAS;AACZ;AACA,IAAI,IAAI;AACR,MAAM,IAAIA,IAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AACpC,QAAQA,IAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;AAChC,OAAA;AACA,KAAK,CAAC,OAAO,YAAY,EAAE;AAC3B;AACA,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,CAAC,kDAAkD,CAAC;AAC5D,QAAQ,YAAY;AACpB,OAAO,CAAA;AACP,KAAA;AACA,GAAA;AACA,CAAA;;AAEA,IAAAsC,gBAAc,GAAG,EAAE,aAAa,kBAAED,gBAAc,EAAE;;;;;;;;;;;;;;ACxLlD,MAAMrC,IAAE,GAAG1C,YAAa,CAAA;AACxB,MAAM+B,MAAI,GAAG9B,YAAe,CAAA;AAC5B,MAAM,EAAE,GAAGC,YAAa,CAAA;AACxB,MAAM,EAAE,cAAc,EAAE,GAAGC,gBAA2B,CAAA;;AAEtD,MAAM,mBAAmB,CAAC;AAC1B,EAAE,WAAW,CAAC,gBAAgB,GAAG,IAAI,EAAE;AACvC,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAA;AAClC,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAA;AAChC,IAAI,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;AAC5C,GAAA;;AAEA;AACA;AACA;AACA;AACA,EAAE,mBAAmB,CAAC,OAAO,EAAE;AAC/B,IAAI,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAA;AACnC,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,UAAU,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,GAAG,IAAI,EAAE;AAC/E,IAAI,IAAI;AACR,MAAM,MAAM,QAAQ,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAA;;AAEvD,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC5C,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,8BAA8B,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAA;AAC7E,QAAQ,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;AAC/C,OAAA;;AAEA,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,CAAC,sCAAsC,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAChF,OAAO,CAAA;;AAEP,MAAM,MAAM,UAAU;AACtB,QAAQ,cAAc,CAAC,UAAU,CAAC,IAAI4B,MAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;AACtE,MAAM,MAAM,aAAa,GAAGA,MAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAA;AACxE,MAAM,MAAM,UAAU,GAAGA,MAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAA;;AAE1E,MAAM,IAAI,CAACW,IAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;AACzC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,0BAA0B,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;AACrE,OAAA;AACA,MAAM,IAAI,CAACA,IAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AACtC,QAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,uBAAuB,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AAC/D,OAAA;;AAEA,MAAM,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;;AAE1D,MAAM,MAAM,SAAS,GAAG;AACxB,QAAQ,IAAI,EAAE,aAAa;AAC3B,QAAQ,IAAI,EAAE,aAAa;AAC3B,OAAO,CAAA;;AAEP,MAAM,IAAI,UAAU,GAAG,KAAK,CAAA;;AAE5B,MAAM,IAAI,YAAY,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACjD,QAAQ,IAAI;AACZ;AACA;AACA,UAAU,MAAM,eAAe,GAAG,MAAM,CAAC,EAAE,IAAI,aAAa,CAAA;AAC5D,UAAU,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;AACvE,UAAU,UAAU,GAAG,IAAI,CAAA;AAC3B,UAAU,OAAO,CAAC,GAAG;AACrB,YAAY,CAAC,mCAAmC,EAAE,eAAe,CAAC,sBAAsB,CAAC;AACzF,WAAW,CAAA;AACX,SAAS,CAAC,OAAO,QAAQ,EAAE;AAC3B,UAAU,OAAO,CAAC,IAAI;AACtB,YAAY,CAAC,+DAA+D,CAAC;AAC7E,YAAY,QAAQ;AACpB,WAAW,CAAA;AACX,SAAA;AACA,OAAA;;AAEA,MAAM,MAAM,MAAM,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,CAAA;AACtD,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;;AAE9C,MAAM,OAAO,MAAM,CAAA;AACnB,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,2CAA2C,EAAE,UAAU,CAAC,CAAC,CAAC;AACnE,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,cAAc,CAAC,UAAU,EAAE;AACnC,IAAI,IAAI;AACR,MAAM,MAAM,MAAM,GAAGA,IAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;;AAExD,MAAM,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAA;;AAE5E;AACA,MAAM,IAAI,CAAC,WAAW,EAAE;AACxB,QAAQ,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK;AAC3C,UAAU,wDAAwD;AAClE,SAAS,CAAA;AACT,QAAQ,IAAI,cAAc,EAAE;AAC5B,UAAU,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;AAC3C,UAAU,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK;AAC3C,YAAY,IAAI,MAAM;AACtB,cAAc,CAAC,qBAAqB,EAAE,OAAO,CAAC,iDAAiD,CAAC;AAChG,aAAa;AACb,WAAW,CAAA;AACX,UAAU,IAAI,YAAY,EAAE;AAC5B,YAAY,WAAW,GAAG,YAAY,CAAA;AACtC,WAAA;AACA,SAAA;AACA,OAAA;;AAEA,MAAM,IAAI,CAAC,WAAW,EAAE;AACxB,QAAQ,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;AACvE,OAAA;;AAEA;AACA;AACA,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO;AACtD,QAAQ,wCAAwC;AAChD,QAAQ,iBAAiB;AACzB,OAAO,CAAA;;AAEP,MAAM,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;AACnE,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;;AAEvE,MAAM,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAA;AACnC,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,2CAA2C,CAAC,EAAE,KAAK,CAAC,CAAA;AACzE,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE,eAAe,CAAC,UAAU,EAAE;AAC9B,IAAI,IAAI;AACR,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAAA;AACnD,MAAM,IAAI,CAAC,UAAU,EAAE;AACvB,QAAQ,OAAO,EAAE,CAAA;AACjB,OAAA;;AAEA,MAAM,MAAM,KAAK,GAAGA,IAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;AAC9C,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,CAAA;;AAE/B,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC9B,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACvC,UAAU,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;AAC5D,UAAU,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;AACpC,SAAA;AACA,OAAO,CAAC,CAAA;;AAER,MAAM,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAChC,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,gDAAgD,CAAC,EAAE,KAAK,CAAC,CAAA;AAC9E,MAAM,OAAO,EAAE,CAAA;AACf,KAAA;AACA,GAAA;;AAEA;AACA;AACA;AACA,EAAE,UAAU,GAAG;AACf,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;AAC9B,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;AAC5B,GAAA;AACA,CAAA;;AAEA,MAAMuC,qBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAA;;AAErDC,qBAAA,CAAA,OAAc,GAAG,mBAAmB,CAAA;AACpCA,qBAAA,CAAA,OAAA,CAAA,mBAAkC,GAAGD,sBAAmB;;;;;;;;;;;;;;;;;;;CCtLxD,MAAM,EAAE,GAAGjF,YAAa,CAAA;CACxB,MAAM,IAAI,GAAGC,YAAe,CAAA;CAC5B,MAAM,EAAE,GAAGC,YAAa,CAAA;CACxB,MAAM,MAAM,GAAGC,YAAkB,CAAA;AACjC,CAAA,MAAM,EAAE,aAAa,EAAE,GAAGC,YAAc,CAAA;CACxC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,GAAGC,YAAmB,CAAA;AAC3D,CAAA,MAAM,EAAE,mBAAmB,EAAE,GAAGC,0BAAgC,CAAA;AAChE,CAAA,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAGC,gBAA2B,CAAA;;CAErE,IAAI,iBAAiB,GAAG,IAAI,CAAA;CAC5B,IAAI,oBAAoB,GAAG,IAAI,CAAA;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,kBAAkB,CAAC,GAAG,EAAE,SAAS,EAAE;GAC1C,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;GAC9C,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,UAAU,EAAE,EAAE;AACxC,KAAI,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;AACrC;KACI;OACE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;OACnC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAA;OACnC;OACA,MAAM,IAAI,KAAK;AACrB,SAAQ,CAAC,+CAA+C,EAAE,SAAS,CAAC,CAAC;QAC9D,CAAA;AACP,MAAA;AACA;AACA,KAAI,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;OAC9B,MAAM,IAAI,KAAK;AACrB,SAAQ,CAAC,8CAA8C,EAAE,SAAS,CAAC,CAAC;QAC7D,CAAA;AACP,MAAA;AACA;KACI,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAA;KAC7D;OACE,CAAC,aAAa,CAAC,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC;AAC1D,OAAM,aAAa,KAAK,cAAA;OAClB;OACA,MAAM,IAAI,KAAK;AACrB,SAAQ,CAAC,+CAA+C,EAAE,SAAS,CAAC,CAAC;QAC9D,CAAA;AACP,MAAA;AACA,IAAA;AACA,EAAA;;AAEA;AACA;AACA;AACA;AACA,CAAA,SAAS,kBAAkB,CAAC,UAAU,GAAG,IAAI,EAAE;GAC7C,IAAI,UAAU,EAAE;KACd,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;AACxD,IAAG,MAAM;AACT,KAAI,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,CAAA;AACrE,IAAA;GACE,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAA;GACpE,OAAO,CAAC,GAAG,CAAC,CAAC,qCAAqC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAA;AAC1E,EAAA;;AAEA,CAAA,MAAM,cAAc,CAAC;GACnB,WAAW,CAAC,gBAAgB,GAAG,IAAI,EAAE,UAAU,GAAG,IAAI,EAAE;KACtD,IAAI,CAAC,iBAAiB,EAAE;OACtB,kBAAkB,CAAC,UAAU,CAAC,CAAA;AACpC,MAAA;;AAEA,KAAI,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAA;AAC5B,KAAI,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAA;KACxC,IAAI,CAAC,cAAc,EAAE,CAAA;KACrB,IAAI,CAAC,YAAY,EAAE,CAAA;AACvB,IAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE,OAAO,UAAU,CAAC,UAAU,GAAG,IAAI,EAAE;KACnC,kBAAkB,CAAC,UAAU,CAAC,CAAA;AAClC,IAAA;;AAEA;AACA;AACA;AACA;GACE,mBAAmB,CAAC,OAAO,EAAE;AAC/B,KAAI,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAA;AACnC,IAAA;;AAEA;AACA;AACA;AACA,GAAE,cAAc,GAAG;KACf,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE;OACrC,EAAE,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AAC1D,MAAA;AACA,IAAA;;AAEA;AACA;AACA;AACA,GAAE,YAAY,GAAG;AACjB,KAAI,IAAI;AACR,OAAM,IAAI,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE;SACvC,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAA;SAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC7C,SAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;SAClD,OAAO,CAAC,GAAG;WACT,CAAC,wBAAwB,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC;UAClE,CAAA;AACT,QAAA;MACK,CAAC,OAAO,KAAK,EAAE;AACpB,OAAM,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAA;AACtE,MAAA;AACA,IAAA;;AAEA;AACA;AACA;AACA,GAAE,YAAY,GAAG;AACjB,KAAI,IAAI;OACF,MAAM,YAAY,GAAG;AAC3B,SAAQ,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AAC7C,SAAQ,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5C,CAAA;OACD,EAAE,CAAC,aAAa;AACtB,SAAQ,oBAAoB;SACpB,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAA;MACF,CAAC,OAAO,KAAK,EAAE;AACpB,OAAM,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAA;AACrE,MAAA;AACA,IAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,kBAAkB,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE;AACjD,KAAI,IAAI,CAAC,WAAW,EAAE,OAAO,IAAI,CAAA;;AAEjC,KAAI,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACnC,OAAM,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;AACpD,MAAA;;KAEI,IAAI,GAAG,GAAG,WAAW,CAAA;KACrB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;KACvC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AACrC,KAAI,OAAO,GAAG,CAAA;AACd,IAAA;;AAEA;AACA;AACA;AACA;AACA;GACE,aAAa,CAAC,KAAK,EAAE;AACvB,KAAI,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK,CAAA;KACxB,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,IAAI,CAAA;AAChD,KAAI,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;AACnE,OAAM,OAAO,KAAK,CAAA;KACd,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;AACrD,KAAI,OAAO,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AACtC,IAAA;;AAEA;AACA;AACA;AACA;AACA;GACE,gBAAgB,CAAC,KAAK,EAAE;AAC1B,KAAI,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AACrC,OAAM,OAAO,aAAa,CAAC,KAAK,CAAC,CAAA;AACjC,MAAA;AACA,KAAI,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AAC/B,OAAM,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACpD,MAAA;AACA,KAAI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC9B,IAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,MAAM,oBAAoB;AAC5B,KAAI,UAAU;AACd,KAAI,SAAS;KACT,YAAY,GAAG,IAAI;KACnB,cAAc,GAAG,IAAI;KACrB;AACJ,KAAI,IAAI;OACF,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;;OAErD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;SAChC,MAAM,IAAI,KAAK,CAAC,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;AAChE,QAAA;;OAEM,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAA;;AAEjE,OAAM,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;SAC7B,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AAClD,QAAA;;OAEM,MAAM,WAAW,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAA;OAC3D,IAAI,WAAW,EAAE;AACvB,SAAQ,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACzD,MAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AAChD,SAAQ,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAA;AAC5C,SAAQ,kBAAkB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;AAC3C,SAAQ,GAAG,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AAC1C,QAAO,MAAM;SACL,MAAM,IAAI,KAAK,CAAC,CAAC,+BAA+B,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;AACzE,QAAA;;OAEM,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;;OAEhE,IAAI,cAAc,EAAE;SAClB,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAA;AAChE,SAAQ,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AACvC,WAAU,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;WAClE,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,UAAU,EAAE,CAAA;AAC/C,UAAA;AACA,QAAA;;OAEM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;;OAE1D,IAAI,YAAY,EAAE;SAChB,MAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;AAC/D,QAAA;;AAEA,OAAM,OAAO,MAAM,CAAA;MACd,CAAC,OAAO,KAAK,EAAE;OACd,OAAO,CAAC,KAAK;AACnB,SAAQ,CAAC,+CAA+C,EAAE,UAAU,CAAC,CAAC,CAAC;AACvE,SAAQ,KAAK;QACN,CAAA;AACP,OAAM,MAAM,KAAK,CAAA;AACjB,MAAA;AACA,IAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,cAAc,CAAC,OAAO,EAAE;AAC1B,KAAI,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,EAAE,OAAO,IAAI,CAAA;AACtE,KAAI,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,EAAE,OAAO,IAAI,CAAA;;KAE/D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;AACpD,KAAI,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE;OACtE,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;AAC9C,OAAM,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,IAAI,CAAA;AAChE,MAAA;;AAEA,KAAI,OAAO,KAAK,CAAA;AAChB,IAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,MAAM,yBAAyB,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI,EAAE;AACnE,KAAI,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;;AAE3E,KAAI,IAAI;OACF,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAA;OACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;SAChC,MAAM,IAAI,KAAK,CAAC,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;AAC5D,QAAA;OACM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,EAAE;SAC5C,MAAM,IAAI,KAAK,CAAC,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;AACnE,QAAA;;AAEA;AACA,OAAM,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;SACrC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;AACtD,SAAQ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB;AACtD,WAAU,UAAU;AACpB,WAAU,YAAY;AACtB,WAAU,YAAY;UACb,CAAA;AACT,SAAQ,OAAO;WACL;aACE,IAAI,EAAE,UAAU;aAChB,IAAI,EAAE,YAAY;AAC9B,aAAY,GAAG,MAAM;aACT,IAAI,EAAE,QAAQ;YACf;UACF,CAAA;AACT,QAAA;;AAEA;OACM,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE;SAC3C,aAAa,EAAE,IAAI;AAC3B,QAAO,CAAC,CAAA;OACF,MAAM,OAAO,GAAG,EAAE,CAAA;OAClB,IAAI,OAAO,GAAG,CAAC,CAAA;;AAErB,OAAM,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AACnC,SAAQ,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAA;;AAElC;AACA,SAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AACrE,WAAU,OAAO,EAAE,CAAA;WACT,SAAA;AACV,UAAA;;AAEA,SAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;;SAEtD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;AAC9C,WAAU,OAAO,EAAE,CAAA;WACT,SAAA;AACV,UAAA;;AAEA,SAAQ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;AAC1E,SAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;;SAE1D,IAAI,YAAY,EAAE;WAChB,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;AACjE,UAAA;;SAEQ,OAAO,CAAC,IAAI,CAAC;AACrB,WAAU,IAAI,EAAE,KAAK,CAAC,IAAI;WAChB,IAAI,EAAE,UAAU;AAC1B,WAAU,GAAG,MAAM;AACnB,UAAS,CAAC,CAAA;AACV,QAAA;;AAEA;AACA,OAAM,OAAO,CAAC,OAAO,GAAG,OAAO,CAAA;AAC/B,OAAM,OAAO,OAAO,CAAA;MACf,CAAC,OAAO,KAAK,EAAE;OACd,OAAO,CAAC,KAAK;AACnB,SAAQ,yDAAyD;AACjE,SAAQ,KAAK;QACN,CAAA;AACP,OAAM,MAAM,KAAK,CAAA;AACjB,MAAA;AACA,IAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,MAAM,cAAc;AACtB,KAAI,UAAU;AACd,KAAI,WAAW;KACX,aAAa,GAAG,IAAI;KACpB,YAAY,GAAG,IAAI;KACnB;AACJ,KAAI,IAAI;AACR,OAAM,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE;SACnC,OAAO,IAAI,CAAC,oBAAoB;AACxC,WAAU,UAAU;AACpB,WAAU,WAAW;AACrB,WAAU,YAAY;AACtB,WAAU,aAAa;UACd,CAAA;AACT,QAAA;AACA;AACA,OAAM,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAA;AAC5C,OAAM,IAAI,SAAS,CAAC,QAAQ,KAAK,QAAQ,EAAE;SACnC,MAAM,IAAI,KAAK;AACvB,WAAU,CAAC,oDAAoD,EAAE,WAAW,CAAC,CAAC;UACrE,CAAA;AACT,QAAA;;OAEM,OAAO,CAAC,GAAG;SACT,CAAC,qCAAqC,EAAE,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACzE,CAAA;;AAEP,OAAM,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAA;AAC/C,OAAM,IAAI,CAAC,QAAQ,CAAC,EAAE;AACtB,SAAQ,MAAM,IAAI,KAAK,CAAC,CAAC,iBAAiB,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;;AAElE,OAAM,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;AACjD,OAAM,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;;OAE3C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAA;;AAEjE,OAAM,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;SAC7B,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AAClD,QAAA;;AAEA,OAAM,kBAAkB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;AACzC,OAAM,GAAG,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;OAClC,OAAO,CAAC,GAAG,CAAC,CAAC,sCAAsC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;;OAElE,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;;OAEhE,IAAI,aAAa,EAAE;SACjB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;SACtD,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,UAAU,EAAE,CAAA;AAC7C,QAAA;;OAEM,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;;OAE1D,IAAI,YAAY,EAAE;SAChB,MAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;AAC/D,QAAA;;AAEA,OAAM,OAAO,MAAM,CAAA;MACd,CAAC,OAAO,KAAK,EAAE;OACd,OAAO,CAAC,KAAK;AACnB,SAAQ,CAAC,0CAA0C,EAAE,UAAU,CAAC,CAAC,CAAC;AAClE,SAAQ,KAAK;QACN,CAAA;AACP,OAAM,MAAM,KAAK,CAAA;AACjB,MAAA;AACA,IAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE,MAAM,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE;AACjD,KAAI,IAAI;OACF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;AAC7D,OAAM,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;SAC/B,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;AAC1D,SAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC/B,QAAA;;OAEM,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;AACnE,OAAM,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;AAC1C,SAAQ,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK;AACtC,WAAU,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;UACzC,CAAA;AACT,SAAQ,OAAO;AACf,WAAU,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,UAAU;AAC9C,WAAU,OAAO,EAAE,WAAW,CAAC,OAAO;AACtC,WAAU,WAAW,EAAE,WAAW,CAAC,WAAW;AAC9C,WAAU,MAAM,EAAE,WAAW,CAAC,MAAM;AACpC,WAAU,UAAU,EAAE,WAAW,CAAC,UAAU;UACnC,CAAA;AACT,QAAA;;AAEA,OAAM,OAAO;SACL,IAAI,EAAE,UAAU;SAChB,OAAO,EAAE,OAAO;QACjB,CAAA;MACF,CAAC,OAAO,KAAK,EAAE;OACd,OAAO,CAAC,KAAK;AACnB,SAAQ,CAAC,0CAA0C,EAAE,UAAU,CAAC,CAAC,CAAC;AAClE,SAAQ,KAAK;QACN,CAAA;AACP,OAAM,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;AACjC,MAAA;AACA,IAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;GACE,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,GAAG,IAAI,EAAE;KAClE,MAAM,WAAW,GAAG;OAClB,IAAI,EAAE,UAAU;OAChB,IAAI,EAAE,UAAU;AACtB,OAAM,GAAG,MAAM;AACf,OAAM,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;MACvC,CAAA;;KAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;KACzC,IAAI,CAAC,YAAY,EAAE,CAAA;KACnB,OAAO,CAAC,GAAG,CAAC,CAAC,oCAAoC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AACpE,IAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAE,MAAM,oBAAoB,CAAC,UAAU,EAAE,UAAU,EAAE;AACrD,KAAI,IAAI;AACR;AACA,OAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;AACvC,SAAQ,IAAI;AACZ,WAAU,MAAM,aAAa,CAAC,UAAU,CAAC,CAAA;WAC/B,OAAO,CAAC,GAAG,CAAC,CAAC,+BAA+B,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;UAC5D,CAAC,OAAO,YAAY,EAAE;WACrB,OAAO,CAAC,IAAI;AACtB,aAAY,CAAC,mCAAmC,EAAE,UAAU,CAAC,CAAC,CAAC;AAC/D,aAAY,YAAY;YACb,CAAA;AACX,UAAA;AACA,QAAA;;AAEA,OAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACjC,SAAQ,mBAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;AACtE,QAAA;;OAEM,MAAM,UAAU,GAAG,mBAAmB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;OAClE,OAAO,CAAC,GAAG;SACT,CAAC,uBAAuB,EAAE,UAAU,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QAC1E,CAAA;;OAED,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;OAClD,IAAI,eAAe,GAAG,KAAK,CAAA;;AAEjC;AACA;OACM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,EAAE;SAC1C,aAAa,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzD,SAAQ,aAAa,CAAC,cAAc,GAAG,UAAU,CAAA;SACzC,eAAe,GAAG,IAAI,CAAA;AAC9B,QAAA;;AAEA,OAAM,KAAK,MAAM,aAAa,IAAI,UAAU,EAAE;AAC9C,SAAQ,IAAI;AACZ,WAAU,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,UAAU;AAC7D,aAAY,UAAU;AACtB,aAAY,UAAU;AACtB,aAAY,aAAa;AACzB,aAAY,IAAI;YACL,CAAA;WACD,OAAO,CAAC,GAAG,CAAC,CAAC,0BAA0B,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;;AAEnE;AACA;AACA;AACA,WAAU,IAAI,MAAM,EAAE,MAAM,IAAI,aAAa,EAAE;AAC/C,aAAY,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAA;AACrC,aAAY,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;AAC9E,aAAY,IAAI,GAAG,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM;AACzE,eAAc,aAAa,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAA;aACzC,IAAI,GAAG,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC,SAAS;AACzD,eAAc,aAAa,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAA;AACrD,aAAY,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM;AACnE,eAAc,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAA;aACnC;AACZ,eAAc,GAAG,CAAC,aAAa,EAAE,MAAM;AACvC,eAAc,CAAC,aAAa,CAAC,aAAa,EAAE,MAAA;AAC5C;AACA,eAAc,aAAa,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa,CAAA;aACjD,eAAe,GAAG,IAAI,CAAA;AAClC,YAAA;UACS,CAAC,OAAO,KAAK,EAAE;WACd,OAAO,CAAC,KAAK;AACvB,aAAY,CAAC,yCAAyC,EAAE,aAAa,CAAC,CAAC,CAAC;AACxE,aAAY,KAAK;YACN,CAAA;AACX,UAAA;AACA,QAAA;;AAEA,OAAM,IAAI,eAAe,IAAI,aAAa,EAAE;SACpC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;SAC3C,IAAI,CAAC,YAAY,EAAE,CAAA;AAC3B,QAAA;MACK,CAAC,OAAO,KAAK,EAAE;AACpB,OAAM,OAAO,CAAC,KAAK,CAAC,mDAAmD,EAAE,KAAK,CAAC,CAAA;AAC/E,MAAA;AACA,IAAA;;AAEA;AACA;AACA;AACA;AACA,GAAE,UAAU,GAAG;KACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;AAC5C,IAAA;;AAEA;AACA;AACA;AACA;AACA;GACE,SAAS,CAAC,UAAU,EAAE;KACpB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAA;AAC/C,IAAA;;AAEA;AACA;AACA;AACA;GACE,eAAe,CAAC,UAAU,EAAE;KAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;KAC3C,IAAI,CAAC,MAAM,EAAE;OACX,OAAO,CAAC,IAAI,CAAC,CAAC,mCAAmC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AACtE,OAAM,OAAO,KAAK,CAAA;AAClB,MAAA;;AAEA,KAAI,IAAI;OACF,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACtC,SAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACnD,QAAA;AACA,OAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;OAC/B,IAAI,CAAC,YAAY,EAAE,CAAA;OACnB,OAAO,CAAC,GAAG,CAAC,CAAC,qCAAqC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AACvE,OAAM,OAAO,IAAI,CAAA;MACZ,CAAC,OAAO,KAAK,EAAE;OACd,OAAO,CAAC,KAAK;AACnB,SAAQ,CAAC,oCAAoC,EAAE,UAAU,CAAC,CAAC,CAAC;AAC5D,SAAQ,KAAK;QACN,CAAA;AACP,OAAM,OAAO,KAAK,CAAA;AAClB,MAAA;AACA,IAAA;;AAEA;AACA;AACA;AACA,GAAE,MAAM,SAAS,CAAC,GAAG,EAAE;AACvB,KAAI,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;AACrC,KAAI,IAAI,CAAC,QAAQ,CAAC,EAAE;AACpB,OAAM,MAAM,IAAI,KAAK,CAAC,CAAC,iBAAiB,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;AAChE,KAAI,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;AAC1B,IAAA;;AAEA;AACA;AACA;AACA,GAAE,YAAY,GAAG;AACjB,KAAI,OAAO,iBAAiB,CAAA;AAC5B,IAAA;;AAEA;AACA;AACA;AACA;AACA,GAAE,cAAc,GAAG;AACnB,KAAI,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAC1C,IAAA;AACA,EAAA;;AAEA;CACA,IAAI,cAAc,GAAG,IAAI,CAAA;;AAEzB,CAAA,SAAS,iBAAiB,GAAG;GAC3B,IAAI,CAAC,cAAc,EAAE;AACvB,KAAI,cAAc,GAAG,IAAI,cAAc,EAAE,CAAA;AACzC,IAAA;AACA,GAAE,OAAO,cAAc,CAAA;AACvB,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;CACA,SAAS,cAAc,CAAC,UAAU,EAAE;GAClC,MAAM,UAAU,GAAG;KACjB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC;AACjD,KAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC;KACrC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC;AAC7C,KAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;IAClC,CAAA;;AAEH,GAAE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;AACtC,KAAI,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AAClC;AACA,OAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACvE,SAAQ,IAAI;AACZ,WAAU,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AACvE,WAAU,IAAI,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aACzC,OAAO,CAAC,GAAG,CAAC,CAAC,sCAAsC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;aACjE,SAAA;AACZ,YAAA;UACS,CAAC,OAAO,CAAC,EAAE;AACpB;AACA,UAAA;AACA,QAAA;AACA,OAAM,OAAO,SAAS,CAAA;AACtB,MAAA;AACA,IAAA;;AAEA,GAAE,OAAO,IAAI,CAAA;AACb,EAAA;;AAEA;AACA;AACA;AACA,CAAA,SAAS,2BAA2B,GAAG;AACvC,GAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,iBAAiB,EAAE,CAAC,UAAU,EAAE,CAAC,CAAA;;GAErE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK;AACtD,KAAI,OAAO,iBAAiB,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;AACpD,IAAG,CAAC,CAAA;;GAEF,OAAO,CAAC,MAAM;AAChB,KAAI,gBAAgB;KAChB,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,KAAK;AAC7D,OAAM,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC,cAAc;AAC7D,SAAQ,UAAU;AAClB,SAAQ,WAAW;AACnB,SAAQ,aAAa;QACd,CAAA;;OAED,aAAa,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACrD,SAAQ,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE;AACjD,WAAU,UAAU;AACpB,WAAU,MAAM;AAChB,UAAS,CAAC,CAAA;AACV,QAAO,CAAC,CAAA;;AAER,OAAM,OAAO,MAAM,CAAA;MACd;IACF,CAAA;;GAED,OAAO,CAAC,MAAM;AAChB,KAAI,sBAAsB;KACtB,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,KAAK;AAC5D,OAAM,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC,oBAAoB;AACnE,SAAQ,UAAU;AAClB,SAAQ,SAAS;AACjB,SAAQ,IAAI;AACZ,SAAQ,cAAc;QACf,CAAA;;OAED,aAAa,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACrD,SAAQ,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE;AACjD,WAAU,UAAU;AACpB,WAAU,MAAM;AAChB,UAAS,CAAC,CAAA;AACV,QAAO,CAAC,CAAA;;AAER,OAAM,OAAO,MAAM,CAAA;MACd;IACF,CAAA;;GAED,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,OAAO,KAAK,EAAE,UAAU,KAAK;AACpE,KAAI,MAAM,OAAO,GAAG,MAAM,iBAAiB,EAAE,CAAC,yBAAyB;AACvE,OAAM,UAAU;AAChB,OAAM,IAAI;MACL,CAAA;;KAED,aAAa,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACnD,OAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC7C,SAAQ,KAAK,EAAE,OAAO,CAAC,MAAM;SACrB,OAAO,EAAE,OAAO;AACxB,QAAO,CAAC,CAAA;AACR,MAAK,CAAC,CAAA;;AAEN,KAAI,OAAO,OAAO,CAAA;AAClB,IAAG,CAAC,CAAA;;GAEF,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK;AAC5D,KAAI,OAAO,iBAAiB,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;AAC1D,IAAG,CAAC,CAAA;;AAEJ,GAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,MAAM,iBAAiB,EAAE,CAAC,YAAY,EAAE,CAAC,CAAA;;AAE/E,GAAE,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE;AACxC,KAAI,iBAAiB,EAAE,CAAC,cAAc,EAAE;IACrC,CAAA;;AAEH,GAAE,OAAO,CAAC,MAAM,CAAC,8BAA8B,EAAE,YAAY;AAC7D,KAAI,IAAI;AACR,OAAM,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAA;AAC1C,OAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAA;OAC9C,MAAM,OAAO,GAAG,EAAE,CAAA;;AAExB,OAAM,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE;AAC7C,SAAQ,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAA;SAC9B,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,SAAA;;SAE/C,MAAM,cAAc,GAAG,mBAAmB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;AAC9E,SAAQ,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAAA;AACrD,SAAQ,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE;AACpD,WAAU,IAAI;AACd,aAAY,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI;eAC1B,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;AAC5D,eAAc,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC;cAC3B,CAAA;aACD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAA;aACnE,OAAO,CAAC,IAAI,CAAC;AACzB,eAAc,aAAa;AAC3B,eAAc,aAAa,EAAE,MAAM,CAAC,IAAI;AACxC;AACA,eAAc,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,IAAI;AACnC,eAAc,MAAM;AACpB,cAAa,CAAC,CAAA;YACH,CAAC,OAAO,GAAG,EAAE;aACZ,OAAO,CAAC,KAAK;AACzB,eAAc,CAAC,0CAA0C,EAAE,aAAa,CAAC,CAAC,CAAC;AAC3E,eAAc,GAAG;cACJ,CAAA;AACb,YAAA;AACA,UAAA;AACA,QAAA;;AAEA,OAAM,OAAO,OAAO,CAAA;MACf,CAAC,OAAO,KAAK,EAAE;AACpB,OAAM,OAAO,CAAC,KAAK,CAAC,mDAAmD,EAAE,KAAK,CAAC,CAAA;AAC/E,OAAM,OAAO,EAAE,CAAA;AACf,MAAA;AACA,IAAG,CAAC,CAAA;;GAEF,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,OAAO,KAAK,EAAE,UAAU,KAAK;AACpE,KAAI,IAAI;AACR,OAAM,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAA;OACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;OAC7C,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AACnC,SAAQ,OAAO;WACL,OAAO,EAAE,KAAK;AACxB,WAAU,KAAK,EAAE,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;UACzC,CAAA;AACT,QAAA;;OAEM,IAAI,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;;AAElD;OACM,IAAI,CAAC,UAAU,EAAE;AACvB,SAAQ,IAAI;WACF,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;WACjD,IAAI,QAAQ,EAAE;aACZ,UAAU,GAAG,QAAQ,CAAA;AACjC,YAAA;UACS,CAAC,OAAO,YAAY,EAAE;WACrB,OAAO,CAAC,IAAI;AACtB,aAAY,CAAC,mCAAmC,EAAE,UAAU,CAAC,CAAC,CAAC;AAC/D,aAAY,YAAY;YACb,CAAA;AACX,UAAA;AACA,QAAA;;OAEM,IAAI,CAAC,UAAU,EAAE;AACvB,SAAQ,OAAO;WACL,OAAO,EAAE,KAAK;WACd,KAAK,EAAE,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;UAC5C,CAAA;AACT,QAAA;;OAEM,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;OAClD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAA;MAC7C,CAAC,OAAO,KAAK,EAAE;OACd,OAAO,CAAC,KAAK;AACnB,SAAQ,CAAC,0CAA0C,EAAE,UAAU,CAAC,CAAC,CAAC;AAClE,SAAQ,KAAK;QACN,CAAA;OACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;AACrD,MAAA;AACA,IAAG,CAAC,CAAA;;AAEJ,GAAE,OAAO,CAAC,MAAM,CAAC,yBAAyB,EAAE,YAAY;AACxD,KAAI,IAAI;AACR,OAAM,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAA;AAC1C,OAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAA;OAC9C,MAAM,OAAO,GAAG,EAAE,CAAA;;AAExB,OAAM,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE;AAC7C,SAAQ,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAA;SAC9B,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,SAAA;;AAEvD,SAAQ,IAAI,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAAA;;AAEnD;SACQ,IAAI,CAAC,UAAU,EAAE;AACzB,WAAU,IAAI;AACd,aAAY,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,CAAA;aAChD,IAAI,QAAQ,EAAE;eACZ,UAAU,GAAG,QAAQ,CAAA;AACnC,cAAA;YACW,CAAC,OAAO,YAAY,EAAE;aACrB,OAAO,CAAC,IAAI;eACV,CAAC,mCAAmC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,eAAc,YAAY;cACb,CAAA;AACb,YAAA;AACA,UAAA;;SAEQ,IAAI,CAAC,UAAU,EAAE;WACf,OAAO,CAAC,GAAG;aACT,CAAC,mCAAmC,EAAE,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC;YACzF,CAAA;WACD,SAAA;AACV,UAAA;;AAEA,SAAQ,IAAI;WACF,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;WAClD,OAAO,CAAC,IAAI,CAAC;AACvB,aAAY,UAAU,EAAE,MAAM,CAAC,IAAI;AACnC,aAAY,MAAM;AAClB,YAAW,CAAC,CAAA;UACH,CAAC,OAAO,SAAS,EAAE;WAClB,OAAO,CAAC,KAAK;aACX,CAAC,0CAA0C,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACvE,aAAY,SAAS;YACV,CAAA;AACX,UAAA;AACA,QAAA;;AAEA,OAAM,OAAO,OAAO,CAAA;MACf,CAAC,OAAO,KAAK,EAAE;AACpB,OAAM,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAA;AACzE,OAAM,OAAO,EAAE,CAAA;AACf,MAAA;AACA,IAAG,CAAC,CAAA;;GAEF,OAAO,CAAC,MAAM,CAAC,yBAAyB,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK;AACnE,KAAI,IAAI;AACR,OAAM,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;OACrC,OAAO,CAAC,GAAG,CAAC,CAAC,0CAA0C,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;OACtE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;MAC3C,CAAC,OAAO,KAAK,EAAE;AACpB,OAAM,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAA;OACpE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;AACrD,MAAA;AACA,IAAG,CAAC,CAAA;AACJ,EAAA;;AAEA,CAAA,MAAA,CAAA,OAAA,GAAiB,cAAc,CAAA;AAC/B,CAAA,MAAA,CAAA,OAAA,CAAA,iBAAA,GAAmC,iBAAiB,CAAA;AACpD;CACA,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,gBAAgB,EAAE;GACtD,GAAG,EAAE,iBAAiB;AACxB,EAAC,CAAC,CAAA;AACF,CAAA,MAAA,CAAA,OAAA,CAAA,2BAAA,GAA6C,2BAA2B,CAAA;AACxE,CAAA,MAAA,CAAA,OAAA,CAAA,kBAAA,GAAoC,kBAAkB,CAAA;;;;;;;;;;;;;;;;;;ACr7BtD,MAAM4E,mBAAiB;AACvB,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,4BAA4B,CAAA;;AAEnE;AACA,IAAIC,OAAK,GAAG,IAAI,CAAA;AAChB,SAASC,UAAQ,GAAG;AACpB,EAAE,IAAI,CAACD,OAAK,EAAE;AACd,IAAI,MAAM,KAAK,GAAGlF,UAAyB,CAAA;AAC3C,IAAIkF,OAAK,GAAG,IAAI,KAAK,CAAC;AACtB,MAAM,IAAI,EAAE,oBAAoB;AAChC,MAAM,aAAa,EAAE,kBAAkB;AACvC,KAAK,CAAC,CAAA;AACN,GAAA;AACA,EAAE,OAAOA,OAAK,CAAA;AACd,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeE,oBAAkB,GAAG;AACpC,EAAE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,CAAC,EAAEH,mBAAiB,CAAC,gBAAgB,CAAC,EAAE;AACvE,IAAI,MAAM,EAAE,MAAM;AAClB,IAAI,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;AACnD,GAAG,CAAC,CAAA;;AAEJ,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AACpB,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,+BAA+B,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AACxE,GAAA;;AAEA,EAAE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;;AAEpC,EAAE,OAAO;AACT,IAAI,UAAU,EAAE,IAAI,CAAC,WAAW;AAChC,IAAI,QAAQ,EAAE,IAAI,CAAC,SAAS;AAC5B,IAAI,eAAe,EAAE,IAAI,CAAC,gBAAgB;AAC1C,IAAI,uBAAuB,EAAE,IAAI,CAAC,yBAAyB;AAC3D,IAAI,SAAS,EAAE,IAAI,CAAC,UAAU;AAC9B,IAAI,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC3B,GAAG,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeI,cAAY,CAAC,UAAU,EAAE;AACxC,EAAE,MAAM,QAAQ,GAAG,MAAM,KAAK;AAC9B,IAAI,CAAC,EAAEJ,mBAAiB,CAAC,6BAA6B,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;AACxF,GAAG,CAAA;;AAEH,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AAC/B,IAAI,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;AAChC,GAAA;;AAEA,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AAC/B,IAAI,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;AACtC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,eAAe,EAAE;AACxC,MAAM,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;AAClC,KAAA;AACA,IAAI,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;AAChC,GAAA;;AAEA,EAAE,IAAI,QAAQ,CAAC,EAAE,EAAE;AACnB,IAAI,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;;AAEtC;AACA,IAAI,MAAM,CAAC,GAAGE,UAAQ,EAAE,CAAA;AACxB,IAAI,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;AAC3C,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;AACjC,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;AACvC,IAAI,CAAC,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;;AAEtD,IAAI,OAAO;AACX,MAAM,MAAM,EAAE,YAAY;AAC1B,MAAM,KAAK,EAAE,IAAI,CAAC,YAAY;AAC9B,MAAM,MAAM,EAAE,IAAI,CAAC,OAAO;AAC1B,KAAK,CAAA;AACL,GAAA;;AAEA,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAC5D,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASG,gBAAc,GAAG;AAC1B,EAAE,IAAI;AACN,IAAI,MAAM,CAAC,GAAGH,UAAQ,EAAE,CAAA;AACxB,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;AACtC,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAA;;AAE3B,IAAI,OAAO;AACX,MAAM,KAAK;AACX,MAAM,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC7B,MAAM,eAAe,EAAE,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAC/C,KAAK,CAAA;AACL,GAAG,CAAC,MAAM;AACV,IAAI,OAAO,IAAI,CAAA;AACf,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASI,eAAa,GAAG;AACzB,EAAE,MAAM,MAAM,GAAGD,gBAAc,EAAE,CAAA;AACjC,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,CAAA;AACnC,GAAA;;AAEA,EAAE,OAAO;AACT,IAAI,aAAa,EAAE,IAAI;AACvB,IAAI,MAAM,EAAE,MAAM,CAAC,MAAM;AACzB,IAAI,eAAe,EAAE,MAAM,CAAC,eAAe;AAC3C,GAAG,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAeE,oBAAkB,GAAG;AACpC,EAAE,MAAM,MAAM,GAAGF,gBAAc,EAAE,CAAA;AACjC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;;AAE1B,EAAE,IAAI;AACN,IAAI,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,CAAC,EAAEL,mBAAiB,CAAC,YAAY,CAAC,EAAE;AACrE,MAAM,OAAO,EAAE;AACf,QAAQ,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/C,OAAO;AACP,KAAK,CAAC,CAAA;;AAEN,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AACjC;AACA,MAAM,UAAU,EAAE,CAAA;AAClB,MAAM,OAAO,IAAI,CAAA;AACjB,KAAA;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,IAAI,CAAA;;AAEjC,IAAI,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;AACtC,IAAI,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAA;AAC5B,GAAG,CAAC,MAAM;AACV,IAAI,OAAO,IAAI,CAAA;AACf,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA,SAAS,UAAU,GAAG;AACtB,EAAE,IAAI;AACN,IAAI,MAAM,CAAC,GAAGE,UAAQ,EAAE,CAAA;AACxB,IAAI,CAAC,CAAC,KAAK,EAAE,CAAA;AACb,IAAI,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAA;AACzD,GAAG,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,GAAG,CAAC,CAAA;AACxE,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeM,uBAAqB,CAAC,OAAO,EAAE;AAC9C,EAAE,MAAM,MAAM,GAAGH,gBAAc,EAAE,CAAA;AACjC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;;AAE1B,EAAE,IAAI;AACN,IAAI,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,CAAC,EAAEL,mBAAiB,CAAC,YAAY,CAAC,EAAE;AACrE,MAAM,MAAM,EAAE,OAAO;AACrB,MAAM,OAAO,EAAE;AACf,QAAQ,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/C,QAAQ,cAAc,EAAE,kBAAkB;AAC1C,OAAO;AACP,MAAM,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AACnC,KAAK,CAAC,CAAA;;AAEN,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AACjC,MAAM,UAAU,EAAE,CAAA;AAClB,MAAM,OAAO,IAAI,CAAA;AACjB,KAAA;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,IAAI,CAAA;;AAEjC,IAAI,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;AACtC,IAAI,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAA;AAC5B,GAAG,CAAC,MAAM;AACV,IAAI,OAAO,IAAI,CAAA;AACf,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAeS,qBAAmB,GAAG;AACrC,EAAE,MAAM,MAAM,GAAGJ,gBAAc,EAAE,CAAA;AACjC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;;AAE1B,EAAE,IAAI;AACN,IAAI,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,CAAC,EAAEL,mBAAiB,CAAC,qBAAqB,CAAC,EAAE;AAC9E,MAAM,OAAO,EAAE;AACf,QAAQ,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/C,OAAO;AACP,KAAK,CAAC,CAAA;;AAEN,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AACjC,MAAM,UAAU,EAAE,CAAA;AAClB,MAAM,OAAO,IAAI,CAAA;AACjB,KAAA;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,IAAI,CAAA;;AAEjC,IAAI,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;AAChC,GAAG,CAAC,MAAM;AACV,IAAI,OAAO,IAAI,CAAA;AACf,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeU,uBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;AAC3D,EAAE,MAAM,MAAM,GAAGL,gBAAc,EAAE,CAAA;AACjC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;;AAE1B,EAAE,IAAI;AACN,IAAI,MAAM,QAAQ,GAAG,MAAM,KAAK;AAChC,MAAM,CAAC,EAAEL,mBAAiB,CAAC,cAAc,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;AAClG,MAAM;AACN,QAAQ,MAAM,EAAE,OAAO;AACvB,QAAQ,OAAO,EAAE;AACjB,UAAU,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACjD,UAAU,cAAc,EAAE,kBAAkB;AAC5C,SAAS;AACT,QAAQ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AACrC,OAAO;AACP,KAAK,CAAA;;AAEL,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AACjC,MAAM,UAAU,EAAE,CAAA;AAClB,MAAM,OAAO,IAAI,CAAA;AACjB,KAAA;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,IAAI,CAAA;;AAEjC,IAAI,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;AAChC,GAAG,CAAC,MAAM;AACV,IAAI,OAAO,IAAI,CAAA;AACf,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE;AAClD,EAAE,MAAM,MAAM,GAAGK,gBAAc,EAAE,CAAA;AACjC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAA;;AAE1B,EAAE,IAAI;AACN,IAAI,MAAM,QAAQ,GAAG,MAAM,KAAK;AAChC,MAAM,CAAC,EAAEL,mBAAiB,CAAC,cAAc,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;AAClG,MAAM;AACN,QAAQ,MAAM,EAAE,QAAQ;AACxB,QAAQ,OAAO,EAAE;AACjB,UAAU,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACjD,SAAS;AACT,OAAO;AACP,KAAK,CAAA;;AAEL,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;AACjC,MAAM,UAAU,EAAE,CAAA;AAClB,MAAM,OAAO,IAAI,CAAA;AACjB,KAAA;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,IAAI,CAAA;;AAEjC,IAAI,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;AAChC,GAAG,CAAC,MAAM;AACV,IAAI,OAAO,IAAI,CAAA;AACf,GAAA;AACA,CAAA;;AAEA,IAAAW,wBAAc,GAAG;AACjB,sBAAER,oBAAkB;AACpB,gBAAEC,cAAY;AACd,kBAAEC,gBAAc;AAChB,iBAAEC,eAAa;AACf,sBAAEC,oBAAkB;AACpB,yBAAEC,uBAAqB;AACvB,uBAAEC,qBAAmB;AACrB,yBAAEC,uBAAqB;AACvB,EAAE,qBAAqB;AACvB,EAAE,UAAU;AACZ,CAAC;;;;;;;;;ACjUD,MAAM,EAAE,GAAG7F,YAAa,CAAA;AACxB,MAAM+B,MAAI,GAAG9B,YAAe,CAAA;AAC5B,MAAM,EAAE,cAAc,EAAE,GAAGC,wBAAmC,CAAA;;AAE9D,MAAM,iBAAiB;AACvB,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,4BAA4B,CAAA;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe6F,mBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE;AACpD,EAAE,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;AAC/B,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,iCAAiC;AAC9C,MAAM,YAAY,EAAE,IAAI;AACxB,KAAK,CAAA;AACL,GAAA;;AAEA,EAAE,IAAI;AACN;AACA,IAAI,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;;AAE9C;AACA,IAAI,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAA;AACnC,IAAI,QAAQ,CAAC,MAAM;AACnB,MAAM,MAAM;AACZ,MAAM,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;AACxD,MAAMhE,MAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC5B,KAAK,CAAA;AACL,IAAI,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAA;;AAEzD;AACA,IAAI,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC,EAAE;AACrE,MAAM,MAAM,EAAE,MAAM;AACpB,MAAM,OAAO,EAAE;AACf,QAAQ,aAAa,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7C,OAAO;AACP,MAAM,IAAI,EAAE,QAAQ;AACpB,KAAK,CAAC,CAAA;;AAEN,IAAI,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;;AAEtC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AACtB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;AACjE,QAAQ,OAAO,EAAE,IAAI,CAAC,OAAO;AAC7B,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,WAAW,EAAE,IAAI,CAAC,WAAW;AACnC,MAAM,SAAS,EAAE,IAAI,CAAC,SAAS;AAC/B,MAAM,OAAO,EAAE,IAAI,CAAC,OAAO;AAC3B,MAAM,WAAW,EAAE,IAAI,CAAC,WAAW;AACnC,MAAM,QAAQ,EAAE,IAAI,CAAC,QAAQ;AAC7B,KAAK,CAAA;AACL,GAAG,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAAA;AAChE,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,GAAG,CAAC,OAAO,IAAI,+BAA+B;AAC3D,KAAK,CAAA;AACL,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASiE,gBAAc,CAAC,KAAK,EAAE,IAAI,EAAE;AACrC,EAAE,OAAO,CAAC,EAAE,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;AACxD,CAAA;;AAEA,IAAAC,uBAAc,GAAG;AACjB,qBAAEF,mBAAiB;AACnB,kBAAEC,gBAAc;AAChB,EAAE,iBAAiB;AACnB,CAAC;;;;;;;;;ACtFD,MAAMjE,MAAI,GAAG9B,YAAe,CAAA;AAC5B,MAAM,OAAEoC,KAAG,UAAEhB,QAAM,EAAE,GAAGnB,YAAmB,CAAA;AAC3C,MAAMgG,QAAM,GAAG/F,YAAkB,CAAA;;AAEjC,MAAMsC,iBAAe,GAAGrC,iBAA4B,CAAA;AACpD,MAAMsD,oBAAkB,GAAGrD,oBAA+B,CAAA;AAC1D,MAAM4F,uBAAqB,GAAG3F,uBAAkC,CAAA;AAChE,MAAM;AACN,EAAE,aAAa;AACf,sBAAEoF,oBAAkB;AACpB,CAAC,GAAGnF,wBAAmC,CAAA;;AAIvC;AACA;AACA;AACA,SAAS,YAAY,CAAC,IAAI,EAAE;AAC5B,EAAE,OAAO,CAAC,IAAI,IAAI,OAAO;AACzB,KAAK,WAAW,EAAA;AAChB,KAAK,OAAO,CAAC,aAAa,EAAE,GAAG,CAAA;AAC/B,KAAK,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;AAC1B,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,6BAA6B,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE;AAC1E,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,IAAI,QAAQ,CAAA;AAC9C,EAAE,MAAM,aAAa,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;AAC/C,EAAE,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;;AAEzC,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;AAC9B,IAAI,IAAI,EAAE,aAAa;AACvB,IAAI,WAAW,EAAE,SAAS;AAC1B,IAAI,MAAM,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;AACpC,IAAI,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;AAC1C,IAAI,OAAO,EAAE,OAAO;AACpB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,QAAQ,EAAE,SAAS;AACvB,IAAI,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;AAC5B,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,MAAM;AACV,IAAI,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;AACtC,IAAI,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACzC,GAAG,CAAA;AACH,CAAA;;AAEA;AACA,MAAM,eAAe,GAAG;AACxB,EAAE,KAAK,EAAE,SAAS;AAClB,EAAE,IAAI,EAAE,SAAS;AACjB,EAAE,IAAI,EAAE,SAAS;AACjB,EAAE,OAAO,EAAE,SAAS;AACpB,EAAE,KAAK,EAAE,SAAS;AAClB,EAAE,GAAG,EAAE,SAAS;AAChB,EAAE,MAAM,EAAE,SAAS;AACnB,EAAE,KAAK,EAAE,SAAS;AAClB,EAAE,MAAM,EAAE,SAAS;AACnB,EAAE,IAAI,EAAE,SAAS;AACjB,EAAE,KAAK,EAAE,SAAS;AAClB,EAAE,OAAO,EAAE,SAAS;AACpB,EAAE,IAAI,EAAE,SAAS;AACjB,EAAE,IAAI,EAAE,SAAS;AACjB,EAAE,GAAG,EAAE,SAAS;AAChB,EAAE,IAAI,EAAE,SAAS;AACjB,EAAE,MAAM,EAAE,SAAS;AACnB,EAAE,MAAM,EAAE,SAAS;AACnB,EAAE,MAAM,EAAE,SAAS;AACnB,EAAE,OAAO,EAAE,SAAS;AACpB,EAAE,IAAI,EAAE,SAAS;AACjB,EAAE,IAAI,EAAE,SAAS;AACjB,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAA;AACvB,EAAE,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAA;AAC1C,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,OAAO,eAAe,CAAC,KAAK,CAAC,CAAA;AAC3D,EAAE,OAAO,KAAK,CAAA;AACd,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,CAAC,SAAS,EAAE;AAClC,EAAE,MAAM,MAAM,GAAG;AACjB,IAAI,OAAO,EAAE,EAAE;AACf,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,QAAQ,EAAE,EAAE;AAChB,IAAI,OAAO,EAAE,EAAE;AACf,GAAG,CAAA;;AAEH,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,MAAM,CAAA;;AAE/B;AACA,EAAE,IAAI,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAA;AAC3D,EAAE,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAA;AACjE,EAAE,IAAI,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAA;AAC9D,EAAE,IAAI,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAA;;AAE3D;AACA,EAAE,IAAI,SAAS,CAAC,MAAM,EAAE;AACxB,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAA;AAC3E,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,SAAS;AAClC,MAAM,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAA;AACnD,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAA;AAC9E,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAA;AAC3E,GAAA;;AAEA;AACA,EAAE,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AACjD,EAAE,MAAM,CAAC,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;AACrD,EAAE,MAAM,CAAC,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AACnD,EAAE,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;;AAEjD,EAAE,OAAO,MAAM,CAAA;AACf,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe4F,wBAAsB,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE;AAC1E,EAAE,IAAI;AACN;AACA,IAAI,MAAM,YAAY,GAAG1D,iBAAe,CAAC,wBAAwB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AAC7E,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE;AAC5B,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,yBAAyB,GAAG,YAAY,CAAC,OAAO;AAC/D,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AACnD,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,MAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAA;AACvE,KAAA;;AAEA;AACA,IAAI,MAAM,IAAI,GAAG,aAAa,EAAE,CAAA;AAChC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AAC7B,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,iCAAiC;AAChD,QAAQ,YAAY,EAAE,IAAI;AAC1B,OAAO,CAAA;AACP,KAAA;AACA,IAAI,MAAM,OAAO,GAAG,MAAMiD,oBAAkB,EAAE,CAAA;AAC9C,IAAI,MAAM,KAAK,GAAG,OAAO,EAAE,QAAQ,IAAI,OAAO,CAAC,KAAK,IAAI,EAAE,CAAA;AAC1D,IAAI,IAAI,CAAC,KAAK,EAAE;AAChB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,uCAAuC;AACtD,QAAQ,YAAY,EAAE,IAAI;AAC1B,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,MAAM,QAAQ,GAAG,6BAA6B,CAAC,SAAS,EAAE,QAAQ,EAAE;AACxE,MAAM,GAAG,OAAO;AAChB,MAAM,KAAK;AACX,MAAM,SAAS,EAAE,KAAK;AACtB,KAAK,CAAC,CAAA;;AAEN;AACA,IAAI;AACJ,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO;AAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS;AAChC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAA;AACvB,MAAM;AACN,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK;AACb,UAAU,iEAAiE;AAC3E,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,MAAM,aAAa,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;AAChD,IAAI,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;;AAE7E,IAAI,MAAM,UAAU,GAAG,MAAMrE,QAAM,CAAC,cAAc,CAAC,GAAG,EAAE;AACxD,MAAM,KAAK,EAAE,oBAAoB;AACjC,MAAM,WAAW,EAAE,eAAe;AAClC,MAAM,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3D,KAAK,CAAC,CAAA;;AAEN,IAAI,IAAI,UAAU,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AACrD,MAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,CAAA;AACvD,KAAA;;AAEA,IAAI,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;;AAExC;AACA,IAAI,MAAM,GAAG,GAAG,IAAI6E,QAAM,EAAE,CAAA;AAC5B,IAAI,GAAG,CAAC,OAAO;AACf,MAAM,eAAe;AACrB,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC;AAC7D,KAAK,CAAA;AACL,IAAI,GAAG,CAAC,OAAO;AACf,MAAM,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC;AACnC,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC;AAC9D,KAAK,CAAA;AACL,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;;AAE1B,IAAI,OAAO,CAAC,GAAG,CAAC,2CAA2C,EAAE,QAAQ,CAAC,CAAA;;AAEtE;AACA,IAAI,IAAI,cAAc,GAAG,IAAI,CAAA;AAC7B,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;AAC5B,MAAM,cAAc,GAAG,MAAMD,uBAAqB,CAAC,iBAAiB;AACpE,QAAQ,QAAQ;AAChB,QAAQ,QAAQ;AAChB,OAAO,CAAA;AACP,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,oDAAoD;AAC5D,QAAQ,cAAc;AACtB,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,QAAQ;AACd,MAAM,QAAQ;AACd,MAAM,cAAc;AACpB,KAAK,CAAA;AACL,GAAG,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,OAAO,CAAC,KAAK;AACjB,MAAM,8DAA8D;AACpE,MAAM,GAAG;AACT,KAAK,CAAA;AACL,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAA;AACjD,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeG,0BAAwB,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE;AACjE,EAAE,IAAI;AACN;AACA,IAAI,MAAM,GAAG,GAAG,MAAM1C,oBAAkB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AAChE,IAAI,IAAI,CAAC,GAAG,EAAE;AACd,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,eAAe,EAAE,WAAW,CAAC,uBAAuB,CAAC;AACrE,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,IAAI,WAAW,GAAG,GAAG,CAAC,WAAW,CAAA;AACrC,IAAI,IAAI,CAAC,WAAW,EAAE;AACtB,MAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAA;AACrE,KAAA;;AAEA;AACA,IAAI,WAAW,GAAG,WAAA;AAClB,OAAO,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,IAAI,OAAO,CAAA;AAClD,OAAO,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;;AAExC;AACA,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;AAC7C,MAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAA;AACrE,KAAA;;AAEA,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,mDAAmD;AACzD,MAAM,WAAW;AACjB,KAAK,CAAA;;AAEL;AACA,IAAI,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAA;AAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AACtB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;AACpF,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;AACpD,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;;AAE9C;AACA,IAAI,MAAM,GAAG,GAAG,IAAIwC,QAAM,CAAC,SAAS,CAAC,CAAA;AACrC,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;;AAEpC,IAAI,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK;AAC1C,MAAM,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC7C,KAAK,CAAA;;AAEL,IAAI,IAAI,CAAC,UAAU,EAAE;AACrB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,yCAAyC;AACxD,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI;AACJ,MAAM,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;AACzC,MAAMnE,MAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAA;AAC1C,MAAM;AACN,MAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAA;AAClE,KAAA;;AAEA;AACA,IAAI,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;AAC5D,IAAI,IAAI,SAAS,CAAA;AACjB,IAAI,IAAI;AACR,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;AACvC,KAAK,CAAC,OAAO,QAAQ,EAAE;AACvB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,8BAA8B,GAAG,QAAQ,CAAC,OAAO;AAChE,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,SAAS,CAAC,aAAa,GAAG;AAC9B,MAAM,MAAM,EAAE,UAAU;AACxB,MAAM,WAAW;AACjB,MAAM,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AAC3C,KAAK,CAAA;;AAEL;AACA,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,CAAA;;AAEhD;AACA,IAAI,MAAM,UAAU,GAAGU,iBAAe,CAAC,uBAAuB;AAC9D,MAAM,GAAG;AACT,MAAM,KAAK;AACX,MAAM,QAAQ;AACd,MAAM,SAAS;AACf,KAAK,CAAA;;AAEL,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE;AAC1B,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,wBAAwB,GAAG,UAAU,CAAC,OAAO;AAC5D,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,OAAO,CAAC,GAAG,CAAC,4CAA4C,EAAE,QAAQ,CAAC,CAAA;;AAEvE,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,QAAQ;AACd,MAAM,KAAK,EAAE,SAAS;AACtB,MAAM,MAAM,EAAE,UAAU,CAAC,MAAM;AAC/B,KAAK,CAAA;AACL,GAAG,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,OAAO,CAAC,KAAK,CAAC,mDAAmD,EAAE,GAAG,CAAC,CAAA;AAC3E,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAA;AACjD,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS4D,wBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE;AACjD,EAAE,IAAI;AACN,IAAI,MAAM,YAAY,GAAG5D,iBAAe,CAAC,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AAC9E,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE;AAC5B,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,yBAAyB,GAAG,YAAY,CAAC,OAAO;AAC/D,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AACnD,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,MAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAA;AACvE,KAAA;;AAEA,IAAI,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;;AAE3C,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,SAAS,EAAE,QAAQ;AACzB,MAAM,MAAM;AACZ,MAAM,eAAe,EAAE,CAAC,CAAC,SAAS,CAAC,aAAa;AAChD,KAAK,CAAA;AACL,GAAG,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,OAAO,CAAC,KAAK,CAAC,kDAAkD,EAAE,GAAG,CAAC,CAAA;AAC1E,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAA;AACjD,GAAA;AACA,CAAA;;AAEA,IAAA6D,yBAAc,GAAG;AACjB,0BAAEH,wBAAsB;AACxB,4BAAEC,0BAAwB;AAC1B,0BAAEC,wBAAsB;AACxB,EAAE,6BAA6B;AAC/B,EAAE,aAAa;AACf,CAAC;;;;;;;;;;;;;;;;;ACpaD,MAAM,OAAEhE,KAAG,EAAE,MAAM,EAAE,GAAGrC,YAAmB,CAAA;AAC3C,MAAM+B,MAAI,GAAG9B,YAAe,CAAA;AAC5B,MAAM,MAAM,GAAGC,YAAkB,CAAA;AACjC,MAAM,mBAAEiC,iBAAe,EAAE,GAAGhC,IAAwB,CAAA;AACpD,MAAM;AACN,EAAE,uBAAuB;AACzB,EAAE,aAAa;AACf,EAAE,sBAAsB;AACxB,CAAC,GAAGC,0BAA6C,CAAA;AACjD,MAAM;AACN,EAAE,qBAAqB;AACvB,EAAE,kBAAkB;AACpB,EAAE,uBAAuB;AACzB,EAAE,yBAAyB;AAC3B,EAAE,wBAAwB;AAC1B,CAAC,GAAGC,sBAAyC,CAAA;AAC7C,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,GAAGC,oBAA+B,CAAA;AACtE,MAAMmC,iBAAe,GAAGlC,iBAA4B,CAAA;;AAEpD,MAAM,cAAc,GAAG,iBAAiB,CAAA;AACxC,MAAMgC,SAAO,GAAG,WAAW,CAAA;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAegE,uBAAqB;AACpC,EAAE,GAAG;AACL,EAAE,KAAK;AACP,EAAE,WAAW;AACb,EAAE,OAAO,GAAG,EAAE;AACd,EAAE,cAAc,GAAG,IAAI;AACvB,EAAE;AACF,EAAE,IAAI;AACN;AACA,IAAI,MAAM,QAAQ,GAAGxE,MAAI,CAAC,IAAI;AAC9B,MAAMM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC7B,MAAME,SAAO;AACb,MAAM,KAAK;AACX,MAAM,cAAc;AACpB,KAAK,CAAA;AACL,IAAI,MAAM,eAAe,GAAGJ,iBAAe,CAAC,QAAQ,CAAC,CAAA;AACrD,IAAI,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI;AAC1C,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,WAAW,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,WAAW,CAAC;AACjE,KAAK,CAAA;;AAEL,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC;AACpD,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,EAAE,CAAA;;AAEzC;AACA,IAAI,MAAM,cAAc,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;AACxD,IAAI,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;AAClD,IAAI,MAAM,OAAO,GAAG,uBAAuB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA;AAC3E,IAAI,MAAM,SAAS,GAAG,yBAAyB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA;;AAE/E;AACA,IAAI,MAAM,eAAe,GAAG,aAAa,CAAC;AAC1C,MAAM,aAAa,EAAE,sBAAsB;AAC3C,MAAM,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,IAAI,oBAAoB;AACrE,MAAM,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;AAC5C,MAAM,IAAI,OAAO,CAAC,UAAA;AAClB,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,EAAA;AAC5E,UAAU,EAAE,CAAC;AACb,MAAM,SAAS,EAAE,IAAI;AACrB,MAAM,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;AAC9B,MAAM,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,MAAM;AAClC,MAAM,SAAS,EAAE;AACjB,QAAQ,EAAE,EAAE,SAAS,CAAC,EAAE;AACxB,QAAQ,IAAI,EAAE,SAAS,CAAC,IAAI;AAC5B,QAAQ,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,WAAW;AAC3C,QAAQ,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI;AAChD,QAAQ,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,CAAC;AACvC,QAAQ,MAAM;AACd,QAAQ,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC;AACrC,OAAO;AACP,MAAM,OAAO;AACb,MAAM,SAAS;AACf,MAAM,WAAW;AACjB,KAAK,CAAC,CAAA;;AAEN;AACA,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAE;AAC5B,MAAM,IAAI;AACV,QAAQ,MAAM,WAAW,GAAGM,iBAAe,CAAC,wBAAwB;AACpE,UAAU,GAAG;AACb,UAAU,KAAK;AACf,SAAS,CAAA;AACT,QAAQ,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAClE,QAAQ,IAAI,SAAS,EAAE;AACvB,UAAU,eAAe,CAAC,KAAK,GAAG;AAClC,YAAY,GAAG,EAAE,SAAS,CAAC,QAAQ;AACnC,YAAY,IAAI,EAAE,SAAS;AAC3B,WAAW,CAAA;AACX,UAAU,IAAI,SAAS,CAAC,aAAa,EAAE,WAAW,EAAE;AACpD,YAAY,eAAe,CAAC,KAAK,CAAC,eAAe;AACjD,cAAc,SAAS,CAAC,aAAa,CAAC,WAAW,CAAA;AACjD,WAAA;AACA,SAAA;AACA,OAAO,CAAC,OAAO,QAAQ,EAAE;AACzB,QAAQ,OAAO,CAAC,IAAI;AACpB,UAAU,qDAAqD;AAC/D,UAAU,QAAQ,CAAC,OAAO;AAC1B,SAAS,CAAA;AACT,OAAA;AACA,KAAA;;AAEA;AACA,IAAI,MAAM,UAAU,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAA;AAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AAC3B,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,6BAA6B,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,MAAM,aAAa,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,WAAW;AACxD,OAAO,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAA;AACrC,OAAO,OAAO,CAAC,MAAM,EAAE,GAAG,CAAA;AAC1B,OAAO,WAAW,EAAE,CAAA;;AAEpB,IAAI,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE;AACpE,MAAM,KAAK,EAAE,yBAAyB;AACtC,MAAM,WAAW,EAAEV,MAAI,CAAC,IAAI;AAC5B,QAAQM,KAAG,CAAC,OAAO,CAAC,SAAS,CAAC;AAC9B,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;AACxC,OAAO;AACP,MAAM,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAC7D,KAAK,CAAC,CAAA;;AAEN,IAAI,IAAI,QAAQ,IAAI,CAAC,QAAQ,EAAE;AAC/B,MAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;AAC/C,KAAA;;AAEA;AACA,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,EAAE,CAAA;AAC5B,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AAC/D,IAAI,GAAG,CAAC,OAAO;AACf,MAAM,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC;AACvC,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;AACtC,KAAK,CAAA;;AAEL,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;;AAE1B,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,CAAC,mDAAmD,EAAE,QAAQ,CAAC,CAAC;AACtE,KAAK,CAAA;;AAEL,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,QAAQ;AACd,MAAM,MAAM,EAAE,eAAe;AAC7B,KAAK,CAAA;AACL,GAAG,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK;AACjB,MAAM,wDAAwD;AAC9D,MAAM,KAAK;AACX,KAAK,CAAA;AACL,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,KAAK,CAAC,OAAO;AAC1B,KAAK,CAAA;AACL,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAemE,qBAAmB,CAAC,GAAG,EAAE;AACxC,EAAE,IAAI;AACN,IAAI,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE;AACrE,MAAM,KAAK,EAAE,gCAAgC;AAC7C,MAAM,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAC7D,MAAM,UAAU,EAAE,CAAC,UAAU,CAAC;AAC9B,KAAK,CAAC,CAAA;;AAEN,IAAI,IAAI,QAAQ,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACrD,MAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;AAC/C,KAAA;;AAEA,IAAI,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;;AAEhC;AACA,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAA;AACnC,IAAI,MAAM,OAAO,GAAGzE,MAAI,CAAC,IAAI,CAACM,KAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAA;AACjE,IAAI,MAAM,EAAE,kBAAkB,EAAE,GAAG7B,qBAA4B,CAAA;AAC/D,IAAI,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;;AAEpC,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;AACpC,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AAC7C,KAAK,CAAA;;AAEL,IAAI,IAAI,CAAC,WAAW,EAAE;AACtB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,8CAA8C;AAC7D,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;AAC9D,IAAI,IAAI,eAAe,CAAA;AACvB,IAAI,IAAI;AACR,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;AAC9C,KAAK,CAAC,OAAO,UAAU,EAAE;AACzB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AACpD,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,MAAM,UAAU,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAA;AAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AAC3B,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,gBAAgB,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,eAAe,GAAG,aAAa,CAAC,eAAe,CAAC,CAAA;;AAEpD,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,QAAQ,EAAE,OAAO;AACvB,MAAM,eAAe,EAAE;AACvB,QAAQ,IAAI,EAAE,eAAe,CAAC,IAAI;AAClC,QAAQ,WAAW,EAAE,eAAe,CAAC,WAAW;AAChD,QAAQ,MAAM,EAAE,eAAe,CAAC,MAAM;AACtC,QAAQ,SAAS,EAAE,eAAe,CAAC,SAAS;AAC5C,QAAQ,OAAO,EAAE,eAAe,CAAC,OAAO,IAAI,EAAE;AAC9C,QAAQ,SAAS,EAAE,eAAe,CAAC,SAAS,IAAI,EAAE;AAClD,OAAO;AACP,KAAK,CAAA;AACL,GAAG,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK;AACjB,MAAM,6DAA6D;AACnE,MAAM,KAAK;AACX,KAAK,CAAA;AACL,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;AACnD,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeiG,uBAAqB;AACpC,EAAE,GAAG;AACL,EAAE,KAAK;AACP,EAAE,cAAc,GAAG,IAAI;AACvB,EAAE,OAAO,GAAG,EAAE;AACd,EAAE;AACF,EAAE,IAAI;AACN,IAAI,IAAI,OAAO,CAAA;;AAEf,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC1B;AACA,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAA;AAChC,KAAK,MAAM;AACX;AACA,MAAM,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE;AACvE,QAAQ,KAAK,EAAE,gCAAgC;AAC/C,QAAQ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAC/D,QAAQ,UAAU,EAAE,CAAC,UAAU,CAAC;AAChC,OAAO,CAAC,CAAA;;AAER,MAAM,IAAI,QAAQ,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACvD,QAAQ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;AACjD,OAAA;;AAEA,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;AAC5B,KAAA;;AAEA;AACA,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAA;;AAEnC;AACA,IAAI,MAAM,OAAO,GAAG1E,MAAI,CAAC,IAAI,CAACM,KAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAA;AACjE,IAAI,MAAM,EAAE,kBAAkB,EAAE,GAAG7B,qBAA4B,CAAA;AAC/D,IAAI,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;;AAEpC;AACA,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;AACpC,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AAC7C,KAAK,CAAA;;AAEL,IAAI,IAAI,CAAC,WAAW,EAAE;AACtB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,8CAA8C;AAC7D,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;AAC9D,IAAI,IAAI,eAAe,CAAA;AACvB,IAAI,IAAI;AACR,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;AAC9C,KAAK,CAAC,OAAO,UAAU,EAAE;AACzB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,gBAAgB,EAAE,WAAW,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AAChF,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,MAAM,UAAU,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAA;AAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AAC3B,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,0BAA0B,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,eAAe,GAAG,aAAa,CAAC,eAAe,CAAC,CAAA;;AAEpD;AACA,IAAI,OAAO,MAAM,sBAAsB;AACvC,MAAM,GAAG;AACT,MAAM,KAAK;AACX,MAAM,eAAe;AACrB,MAAM,cAAc;AACpB,MAAM;AACN,QAAQ,IAAI,EAAE,OAAO,CAAC,IAAI;AAC1B,QAAQ,MAAM,EAAE,OAAO,CAAC,MAAM;AAC9B,QAAQ,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAClC,OAAO;AACP,KAAK,CAAA;AACL,GAAG,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK;AACjB,MAAM,wDAAwD;AAC9D,MAAM,KAAK;AACX,KAAK,CAAA;AACL,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,KAAK,CAAC,OAAO;AAC1B,KAAK,CAAA;AACL,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sBAAsB;AACrC,EAAE,GAAG;AACL,EAAE,KAAK;AACP,EAAE,eAAe;AACjB,EAAE,cAAc,GAAG,IAAI;AACvB,EAAE,OAAO,GAAG,EAAE;AACd,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAA;;AAExC;AACA,EAAE,MAAM,cAAc,GAAG;AACzB,IAAI,SAAS,EAAE,EAAE;AACjB,IAAI,gBAAgB,EAAE,EAAE;AACxB,IAAI,MAAM,EAAE,EAAE;AACd,GAAG,CAAA;;AAEH,EAAE;AACF,IAAI,cAAc;AAClB,IAAI,eAAe,CAAC,OAAO;AAC3B,IAAI,eAAe,CAAC,OAAO,CAAC,MAAA;AAC5B,IAAI;AACJ,IAAI,MAAM,gBAAgB,GAAG,cAAc,CAAC,UAAU,EAAE,CAAA;AACxD,IAAI,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;;AAE1E,IAAI,KAAK,MAAM,SAAS,IAAI,eAAe,CAAC,OAAO,EAAE;AACrD,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAA;;AAE3C,MAAM,IAAI,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;AAC9C,QAAQ,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;AACzD,QAAQ,SAAA;AACR,OAAA;;AAEA;AACA,MAAM,IAAI;AACV,QAAQ,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAA;AACzD,QAAQ,IAAI,WAAW,IAAI,WAAW,CAAC,WAAW,EAAE;AACpD,UAAU,MAAM,cAAc,CAAC,cAAc;AAC7C,YAAY,WAAW;AACvB,YAAY,WAAW,CAAC,WAAW;AACnC,YAAY,WAAW,CAAC,aAAa,IAAI,IAAI;AAC7C,WAAW,CAAA;AACX,UAAU,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;AACpD,UAAU,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;AAC5C,SAAS,MAAM;AACf,UAAU,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;AACrC,YAAY,OAAO,EAAE,WAAW;AAChC,YAAY,MAAM,EAAE,uBAAuB;AAC3C,WAAW,CAAC,CAAA;AACZ,SAAA;AACA,OAAO,CAAC,OAAO,YAAY,EAAE;AAC7B,QAAQ,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;AACnC,UAAU,OAAO,EAAE,WAAW;AAC9B,UAAU,MAAM,EAAE,YAAY,CAAC,OAAO;AACtC,SAAS,CAAC,CAAA;AACV,OAAA;AACA,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,IAAI,cAAc,GAAG,IAAI,CAAA;AAC3B,EAAE,IAAI,eAAe,CAAC,KAAK,EAAE;AAC7B,IAAI,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAA;AAC9C,IAAI,IAAI;AACR,MAAM,MAAM,WAAW,GAAGiC,iBAAe,CAAC,wBAAwB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AAC9E,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,IAAI,EAAE,CAAA;AACrD,MAAM,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAA;;AAEvC,MAAM,IAAI,YAAY,CAAC,IAAI,IAAI,QAAQ,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;AACtE;AACA,QAAQ,MAAM,SAAS,GAAG,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,CAAA;AAClD,QAAQ,IAAI,YAAY,CAAC,eAAe,EAAE;AAC1C,UAAU,SAAS,CAAC,aAAa,GAAG;AACpC,YAAY,MAAM,EAAE,kBAAkB;AACtC,YAAY,WAAW,EAAE,YAAY,CAAC,eAAe;AACrD,YAAY,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACjD,WAAW,CAAA;AACX,SAAA;AACA,QAAQA,iBAAe,CAAC,uBAAuB;AAC/C,UAAU,GAAG;AACb,UAAU,KAAK;AACf,UAAU,QAAQ;AAClB,UAAU,SAAS;AACnB,SAAS,CAAA;AACT,QAAQ,cAAc,GAAG,QAAQ,CAAA;AACjC,QAAQ,OAAO,CAAC,GAAG;AACnB,UAAU,CAAC,qDAAqD,EAAE,QAAQ,CAAC,CAAC;AAC5E,SAAS,CAAA;AACT,OAAO,MAAM;AACb,QAAQ,CAAC,YAAY,CAAC,IAAI;AAC1B,QAAQ,YAAY,CAAC,eAAe;AACpC,QAAQ,QAAQ;AAChB,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAA;AAChC,QAAQ;AACR;AACA,QAAQ,IAAI;AACZ,UAAU,MAAM;AAChB,YAAY,wBAAwB;AACpC,WAAW,GAAGhC,yBAAoC,CAAA;AAClD,UAAU,MAAM,wBAAwB;AACxC,YAAY,GAAG;AACf,YAAY,KAAK;AACjB,YAAY,YAAY,CAAC,eAAe;AACxC,WAAW,CAAA;AACX,UAAU,cAAc,GAAG,QAAQ,CAAA;AACnC,UAAU,OAAO,CAAC,GAAG;AACrB,YAAY,CAAC,2DAA2D,EAAE,YAAY,CAAC,eAAe,CAAC,CAAC;AACxG,WAAW,CAAA;AACX,SAAS,CAAC,OAAO,WAAW,EAAE;AAC9B,UAAU,OAAO,CAAC,IAAI;AACtB,YAAY,CAAC,mEAAmE,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;AACvG,WAAW,CAAA;AACX,SAAA;AACA,OAAA;AACA,KAAK,CAAC,OAAO,QAAQ,EAAE;AACvB,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,CAAC,6DAA6D,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC1F,OAAO,CAAA;AACP,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,MAAM,SAAS,GAAG,EAAE,GAAG,eAAe,CAAC,SAAS,EAAE,CAAA;;AAEpD,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACvC,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,wCAAwC;AACrD,KAAK,CAAA;AACL,GAAA;;AAEA;AACA,EAAE,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;;AAE3B;AACA,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;AACjD,EAAE,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;AACrE,EAAE,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,SAAS,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;;AAE3E;AACA,EAAE,IAAI,cAAc,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE;AACxD,IAAI,SAAS,CAAC,QAAQ,GAAG,cAAc,CAAA;AACvC,GAAA;;AAEA;AACA,EAAE,MAAM,kBAAkB,GAAG,EAAE,CAAA;AAC/B,EAAE;AACF,IAAI,eAAe,CAAC,WAAW;AAC/B,IAAI,eAAe,CAAC,WAAW,CAAC,MAAM;AACtC,IAAI,SAAS,CAAC,MAAA;AACd,IAAI;AACJ,IAAI,wBAAwB,CAAC,SAAS,CAAC,MAAM,EAAE,eAAe,CAAC,WAAW,CAAC,CAAA;AAC3E,IAAI,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,WAAW,EAAE;AACpD,MAAM,kBAAkB,CAAC,IAAI;AAC7B,QAAQ,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACvG,OAAO,CAAA;AACP,KAAA;AACA,GAAA;;AAEA;AACA,EAAE,SAAS,CAAC,gBAAgB,GAAG;AAC/B,IAAI,SAAS,EAAE,KAAK;AACpB,IAAI,MAAM;AACV,IAAI,YAAY,EAAE,eAAe,CAAC,IAAI;AACtC,IAAI,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACxC,IAAI,cAAc,EAAE,eAAe,CAAC,MAAM;AAC1C,IAAI,aAAa,EAAE,eAAe,CAAC,aAAa;AAChD,IAAI,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,IAAI;AACpD,IAAI,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,IAAI;AACtD,GAAG,CAAA;;AAEH;AACA,EAAE,MAAM,mBAAmB,GAAGC,qBAAgC,CAAA;AAC9D,EAAE,MAAM,UAAU,GAAG,mBAAmB,CAAC,2BAA2B;AACpE,IAAI,GAAG;AACP,IAAI,KAAK;AACT,IAAI,SAAS;AACb,GAAG,CAAA;;AAEH,EAAE,IAAI,UAAU,CAAC,KAAK,EAAE;AACxB,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,CAAC,0BAA0B,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AAC9D,KAAK,CAAA;AACL,GAAA;;AAEA;AACA,EAAE,MAAM,eAAe,GAAG,CAAC,eAAe,CAAC,SAAS,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM;AACxE,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI;AAChB,IAAI,aAAa,EAAE,CAAC,CAAC,aAAa;AAClC,IAAI,QAAQ,EAAE,CAAC,CAAC,QAAQ;AACxB,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM;AACpB,GAAG,CAAC,CAAC,CAAA;;AAEL,EAAE,OAAO,CAAC,GAAG;AACb,IAAI,CAAC,gDAAgD,EAAE,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AACvH,GAAG,CAAA;;AAEH,EAAE,OAAO;AACT,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,SAAS;AACb,IAAI,OAAO,EAAE;AACb,MAAM,IAAI,EAAE,eAAe,CAAC,IAAI;AAChC,MAAM,WAAW,EAAE,eAAe,CAAC,WAAW,IAAI,EAAE;AACpD,MAAM,MAAM,EAAE,eAAe,CAAC,MAAM;AACpC,MAAM,OAAO,EAAE,cAAc;AAC7B,MAAM,WAAW,EAAE,kBAAkB;AACrC,MAAM,iBAAiB,EAAE,eAAe;AACxC,MAAM,cAAc,EAAE,cAAc,IAAI,IAAI;AAC5C,KAAK;AACL,GAAG,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAegG,8BAA4B;AAC3C,EAAE,GAAG;AACL,EAAE,KAAK;AACP,EAAE,WAAW;AACb,EAAE,cAAc,GAAG,IAAI;AACvB,EAAE;AACF,EAAE,IAAI;AACN;AACA,IAAI,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAA;AACrD,IAAI,IAAI,CAAC,WAAW,EAAE;AACtB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,yCAAyC,EAAE,WAAW,CAAC,CAAC;AACxE,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;AAClC,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,uCAAuC,EAAE,WAAW,CAAC,CAAC;AACtE,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,OAAO,CAAA;AAClD,IAAI,IAAI,WAAW,GAAG,WAAW,CAAC,WAAW,CAAA;AAC7C,IAAI,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;AAC3D,IAAI,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;;AAE5D;AACA,IAAI,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAA;AAC1C,IAAI,IAAI,SAAS,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACzC,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,8CAA8C,EAAE,WAAW,CAAC,CAAC;AAC7E,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,CAAC,qDAAqD,EAAE,WAAW,CAAC,CAAC;AAC3E,KAAK,CAAA;;AAEL,IAAI,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAA;AAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AACtB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,8BAA8B,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;AACxF,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAA;AAC/C,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;;AAE/C;AACA,IAAI,MAAM,OAAO,GAAG3E,MAAI,CAAC,IAAI,CAACM,KAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,sBAAsB,CAAC,CAAA;AAC1E,IAAI,MAAM,EAAE,kBAAkB,EAAE,GAAG7B,qBAA4B,CAAA;AAC/D,IAAI,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;;AAEpC;AACA,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAA;AACpC,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AAC7C,KAAK,CAAA;;AAEL,IAAI,IAAI,CAAC,WAAW,EAAE;AACtB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,qDAAqD;AACpE,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;AAC9D,IAAI,IAAI,eAAe,CAAA;AACvB,IAAI,IAAI;AACR,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;AAC9C,KAAK,CAAC,OAAO,UAAU,EAAE;AACzB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,kCAAkC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AACxE,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,MAAM,UAAU,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAA;AAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AAC3B,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,0BAA0B,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,eAAe,GAAG,aAAa,CAAC,eAAe,CAAC,CAAA;;AAEpD;AACA,IAAI,OAAO,MAAM,sBAAsB;AACvC,MAAM,GAAG;AACT,MAAM,KAAK;AACX,MAAM,eAAe;AACrB,MAAM,cAAc;AACpB,MAAM;AACN,QAAQ,MAAM,EAAE,UAAU;AAC1B,QAAQ,eAAe,EAAE,WAAW;AACpC,QAAQ,gBAAgB,EAAE,WAAW,CAAC,OAAO,IAAI,IAAI;AACrD,OAAO;AACP,KAAK,CAAA;AACL,GAAG,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK;AACjB,MAAM,uEAAuE;AAC7E,MAAM,KAAK;AACX,KAAK,CAAA;AACL,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,KAAK,CAAC,OAAO;AAC1B,KAAK,CAAA;AACL,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAemG,oBAAkB,CAAC,gBAAgB,EAAE,cAAc,GAAG,IAAI,EAAE;AAC3E,EAAE,MAAM;AACR,IAAI,2BAA2B;AAC/B,GAAG,GAAGtG,sBAAyC,CAAA;AAC/C,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAGC,oBAA+B,CAAA;;AAEhE,EAAE,MAAM,gBAAgB,GAAG,cAAc,GAAG,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,CAAA;;AAE5E,EAAE,IAAI,gBAAgB,GAAG,EAAE,CAAA;AAC3B,EAAE,IAAI;AACN,IAAI,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAA;AAC5C,IAAI,gBAAgB,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;AAC3C,GAAG,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,OAAO,CAAC,IAAI;AAChB,MAAM,qFAAqF;AAC3F,MAAM,GAAG,CAAC,OAAO;AACjB,KAAK,CAAA;AACL,GAAA;;AAEA,EAAE,OAAO,2BAA2B;AACpC,IAAI,gBAAgB;AACpB,IAAI,gBAAgB;AACpB,IAAI,gBAAgB;AACpB,GAAG,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAesG,4BAA0B;AACzC,EAAE,GAAG;AACL,EAAE,KAAK;AACP,EAAE,WAAW;AACb,EAAE,OAAO,GAAG,EAAE;AACd,EAAE,cAAc,GAAG,IAAI;AACvB,EAAE;AACF,EAAE,IAAI;AACN,IAAI,MAAM;AACV,MAAM,wBAAwB;AAC9B,KAAK,GAAGvG,sBAAyC,CAAA;;AAEjD;AACA,IAAI,MAAM,QAAQ,GAAG0B,MAAI,CAAC,IAAI;AAC9B,MAAMM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC7B,MAAME,SAAO;AACb,MAAM,KAAK;AACX,MAAM,cAAc;AACpB,KAAK,CAAA;AACL,IAAI,MAAM,eAAe,GAAGJ,iBAAe,CAAC,QAAQ,CAAC,CAAA;AACrD,IAAI,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI;AAC1C,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,WAAW,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,WAAW,CAAC;AACjE,KAAK,CAAA;;AAEL,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC;AACpD,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI;AACJ,MAAM,SAAS,CAAC,gBAAgB;AAChC,MAAM,SAAS,CAAC,gBAAgB,CAAC,SAAS,KAAK,KAAA;AAC/C,MAAM;AACN,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK;AACb,UAAU,iGAAiG;AAC3G,OAAO,CAAA;AACP,KAAA;;AAEA,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,EAAE,CAAA;;AAEzC;AACA,IAAI,MAAM,cAAc,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;AACxD,IAAI,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;AAClD,IAAI,MAAM,OAAO,GAAG,uBAAuB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA;AAC3E,IAAI,MAAM,SAAS,GAAG,yBAAyB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA;;AAE/E,IAAI,MAAM,eAAe,GAAG,aAAa,CAAC;AAC1C,MAAM,aAAa,EAAE,sBAAsB;AAC3C,MAAM,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,IAAI,WAAW;AAC5D,MAAM,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;AAC5C,MAAM,IAAI,OAAO,CAAC,UAAA;AAClB,UAAU,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,EAAA;AAC5E,UAAU,EAAE,CAAC;AACb,MAAM,SAAS,EAAE,IAAI;AACrB,MAAM,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;AAC9B,MAAM,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,MAAM;AAClC,MAAM,SAAS,EAAE;AACjB,QAAQ,EAAE,EAAE,SAAS,CAAC,EAAE;AACxB,QAAQ,IAAI,EAAE,SAAS,CAAC,IAAI;AAC5B,QAAQ,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,WAAW;AAC3C,QAAQ,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI;AAChD,QAAQ,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,CAAC;AACvC,QAAQ,MAAM;AACd,QAAQ,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC;AACrC,OAAO;AACP,MAAM,OAAO;AACb,MAAM,SAAS;AACf,MAAM,WAAW;AACjB,KAAK,CAAC,CAAA;;AAEN;AACA,IAAI,IAAI,SAAS,CAAC,QAAQ,EAAE;AAC5B,MAAM,IAAI;AACV,QAAQ,MAAM,WAAW,GAAGM,iBAAe,CAAC,wBAAwB;AACpE,UAAU,GAAG;AACb,UAAU,KAAK;AACf,SAAS,CAAA;AACT,QAAQ,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAClE,QAAQ,IAAI,SAAS,EAAE;AACvB,UAAU,eAAe,CAAC,KAAK,GAAG;AAClC,YAAY,GAAG,EAAE,SAAS,CAAC,QAAQ;AACnC,YAAY,IAAI,EAAE,SAAS;AAC3B,WAAW,CAAA;AACX,UAAU,IAAI,SAAS,CAAC,aAAa,EAAE,WAAW,EAAE;AACpD,YAAY,eAAe,CAAC,KAAK,CAAC,eAAe;AACjD,cAAc,SAAS,CAAC,aAAa,CAAC,WAAW,CAAA;AACjD,WAAA;AACA,SAAA;AACA,OAAO,CAAC,OAAO,QAAQ,EAAE;AACzB,QAAQ,OAAO,CAAC,IAAI;AACpB,UAAU,iEAAiE;AAC3E,UAAU,QAAQ,CAAC,OAAO;AAC1B,SAAS,CAAA;AACT,OAAA;AACA,KAAA;;AAEA;AACA,IAAI,MAAM,UAAU,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAA;AAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;AAC3B,MAAM,OAAO;AACb,QAAQ,OAAO,EAAE,KAAK;AACtB,QAAQ,KAAK,EAAE,CAAC,6BAA6B,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,MAAM,EAAE,kBAAkB,EAAE,GAAGnC,oBAA+B,CAAA;AAClE,IAAI,IAAI,gBAAgB,GAAG,EAAE,CAAA;AAC7B,IAAI,IAAI,mBAAmB,GAAG,KAAK,CAAA;AACnC,IAAI,IAAI;AACR,MAAM,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAA;AAC9C,MAAM,gBAAgB,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;AAC7C,KAAK,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,CAAC,uDAAuD,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAC/E,OAAO,CAAA;AACP,MAAM,mBAAmB,GAAG,IAAI,CAAA;AAChC,KAAA;;AAEA,IAAI,IAAI,mBAAmB,GAAG,EAAE,CAAA;AAChC,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC9B,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AACxE,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM;AAC3C,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;AACpE,OAAO,CAAA;AACP,MAAM,MAAM,OAAO,GAAG,EAAE,CAAA;AACxB,MAAM,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE;AACtC,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;AACxD,QAAQ,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAA;AACzE,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACtD,UAAU,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;AAC7C,SAAA;AACA,OAAA;AACA,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG;AACvD,QAAQ,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AACxE,OAAO,CAAA;AACP,KAAA;;AAEA;AACA,IAAI,IAAI,gBAAgB,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAA;AACnD,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAC3B,MAAM,IAAI;AACV,QAAQ,MAAM,EAAE,kBAAkB,EAAE,GAAGK,wBAAmC,CAAA;AAC1E,QAAQ,MAAM,OAAO,GAAG,MAAM,kBAAkB,EAAE,CAAA;AAClD,QAAQ,gBAAgB,GAAG,OAAO,EAAE,QAAQ,IAAI,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAA;AACtE,OAAO,CAAC,MAAM;AACd,QAAQ,gBAAgB,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAA;AACjD,OAAA;AACA,KAAA;;AAEA;AACA,IAAI,MAAM,QAAQ,GAAG,wBAAwB,CAAC,eAAe,EAAE;AAC/D,MAAM,UAAU,EAAE,gBAAgB;AAClC,MAAM,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,SAAS;AAC7C,MAAM,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;AAC1C,MAAM,SAAS,EAAE,KAAK;AACtB,KAAK,CAAC,CAAA;;AAEN;AACA,IAAI,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAA;AACvC,IAAI,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE;AACpE,MAAM,KAAK,EAAE,qCAAqC;AAClD,MAAM,WAAW,EAAEoB,MAAI,CAAC,IAAI;AAC5B,QAAQM,KAAG,CAAC,OAAO,CAAC,SAAS,CAAC;AAC9B,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AAC7D,OAAO;AACP,MAAM,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAC7D,KAAK,CAAC,CAAA;;AAEN,IAAI,IAAI,QAAQ,IAAI,CAAC,QAAQ,EAAE;AAC/B,MAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;AAC/C,KAAA;;AAEA;AACA,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,EAAE,CAAA;AAC5B,IAAI,GAAG,CAAC,OAAO;AACf,MAAM,eAAe;AACrB,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC;AAC7D,KAAK,CAAA;AACL,IAAI,GAAG,CAAC,OAAO;AACf,MAAM,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC;AACvC,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC;AACpE,KAAK,CAAA;AACL,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;;AAE1B,IAAI,OAAO,CAAC,GAAG;AACf,MAAM,CAAC,sDAAsD,EAAE,QAAQ,CAAC,CAAC;AACzE,KAAK,CAAA;;AAEL;AACA,IAAI,IAAI,kBAAkB,GAAG,IAAI,CAAA;AACjC,IAAI,IAAI;AACR,MAAM,MAAM,EAAE,aAAa,EAAE,GAAG1B,wBAAmC,CAAA;AACnE,MAAM,MAAM,EAAE,iBAAiB,EAAE,GAAGC,uBAAkC,CAAA;AACtE,MAAM,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;;AAExC,MAAM,IAAI,UAAU,CAAC,aAAa,EAAE;AACpC,QAAQ,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAA;AAC5E,QAAQ,kBAAkB,GAAG,MAAM,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AACxE,QAAQ,IAAI,kBAAkB,CAAC,OAAO,EAAE;AACxC,UAAU,OAAO,CAAC,GAAG;AACrB,YAAY,CAAC,mDAAmD,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC;AAClG,WAAW,CAAA;AACX,SAAS,MAAM;AACf,UAAU,OAAO,CAAC,IAAI;AACtB,YAAY,CAAC,qDAAqD,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC9F,WAAW,CAAA;AACX,SAAA;AACA,OAAO,MAAM;AACb,QAAQ,kBAAkB,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAA;AACnE,OAAA;AACA,KAAK,CAAC,OAAO,GAAG,EAAE;AAClB,MAAM,OAAO,CAAC,IAAI;AAClB,QAAQ,CAAC,oDAAoD,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAC5E,OAAO,CAAA;AACP,MAAM,kBAAkB,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAA;AACjE,KAAA;;AAEA,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,QAAQ;AACd,MAAM,QAAQ;AACd,MAAM,MAAM,EAAE,eAAe;AAC7B,MAAM,QAAQ;AACd,QAAQ,mBAAmB,CAAC,MAAM,GAAG,CAAC,GAAG,mBAAmB,GAAG,SAAS;AACxE,MAAM,mBAAmB,EAAE,mBAAmB,IAAI,SAAS;AAC3D,MAAM,kBAAkB;AACxB,KAAK,CAAA;AACL,GAAG,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK;AACjB,MAAM,oEAAoE;AAC1E,MAAM,KAAK;AACX,KAAK,CAAA;AACL,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,KAAK,CAAC,OAAO;AAC1B,KAAK,CAAA;AACL,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAeiG,qBAAmB,CAAC,WAAW,EAAE,cAAc,GAAG,IAAI,EAAE;AACvE,EAAE,MAAM;AACR,IAAI,qBAAqB;AACzB,IAAI,2BAA2B;AAC/B,GAAG,GAAGxG,sBAAyC,CAAA;AAC/C,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,GAAGC,oBAA+B,CAAA;;AAE5E,EAAE,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAA;AAC3C,EAAE,IAAI,CAAC,GAAG,EAAE;AACZ,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,CAAC,6BAA6B,EAAE,WAAW,CAAC,CAAC;AAC1D,KAAK,CAAA;AACL,GAAA;;AAEA,EAAE,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;;AAE5C;AACA,EAAE,MAAM,gBAAgB,GAAG,cAAc,GAAG,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,CAAA;AAC5E,EAAE,IAAI,gBAAgB,GAAG,EAAE,CAAA;AAC3B,EAAE,IAAI;AACN,IAAI,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAA;AAC5C,IAAI,gBAAgB,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;AAC3C,GAAG,CAAC,OAAO,GAAG,EAAE;AAChB;AACA,GAAA;;AAEA,EAAE,MAAM,aAAa,GAAG,2BAA2B;AACnD,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE;AACrB,IAAI,gBAAgB;AACpB,IAAI,gBAAgB;AACpB,GAAG,CAAA;;AAEH,EAAE,OAAO;AACT,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,OAAO;AACX,IAAI,aAAa;AACjB,GAAG,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAewG,6BAA2B,CAAC,KAAK,EAAE;AAClD,EAAE,MAAM,EAAE,qBAAqB,EAAE,GAAGzG,sBAAyC,CAAA;AAC7E,EAAE,MAAM,EAAE,kBAAkB,EAAE,GAAGC,oBAA+B,CAAA;;AAEhE,EAAE,IAAI;AACN,IAAI,MAAM,QAAQ,GAAGyB,MAAI,CAAC,IAAI;AAC9B,MAAMM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC7B,MAAME,SAAO;AACb,MAAM,KAAK;AACX,MAAM,cAAc;AACpB,KAAK,CAAA;AACL,IAAI,MAAM,UAAU,GAAGJ,iBAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;;AAEtD,IAAI,MAAM,KAAK,GAAG,MAAM,kBAAkB,EAAE,CAAA;AAC5C,IAAI,MAAM,gBAAgB,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;;AAEjD,IAAI,MAAM,OAAO,GAAG,qBAAqB,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAA;;AAEvE,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,OAAO;AACb,MAAM,cAAc,EAAE,UAAU,CAAC,MAAM;AACvC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,eAAe;AAClD,OAAO,CAAC,MAAM;AACd,KAAK,CAAA;AACL,GAAG,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK;AACjB,MAAM,+DAA+D;AACrE,MAAM,KAAK;AACX,KAAK,CAAA;AACL,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,KAAK,CAAC,OAAO;AAC1B,MAAM,OAAO,EAAE,EAAE;AACjB,KAAK,CAAA;AACL,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS4E,0BAAwB,CAAC,KAAK,EAAE,iBAAiB,GAAG,EAAE,EAAE;AACjE,EAAE,MAAM;AACR,IAAI,0BAA0B;AAC9B,GAAG,GAAG1G,sBAAyC,CAAA;AAC/C,EAAE,MAAM,EAAE,aAAa,EAAE,GAAGQ,yBAA+B,EAAA,CAAA;;AAE3D,EAAE,IAAI,mBAAmB,GAAG,EAAE,CAAA;AAC9B,EAAE,IAAI;AACN,IAAI,mBAAmB,GAAG,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;AAC1D,GAAG,CAAC,OAAO,GAAG,EAAE;AAChB,IAAI,OAAO,CAAC,IAAI;AAChB,MAAM,uDAAuD;AAC7D,MAAM,GAAG,CAAC,OAAO;AACjB,KAAK,CAAA;AACL,GAAA;;AAEA,EAAE,OAAO,0BAA0B,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAA;AAC3E,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASmG,4BAA0B,CAAC,KAAK,EAAE,WAAW,EAAE,cAAc,GAAG,IAAI,EAAE;AAC/E,EAAE,IAAI;AACN,IAAI,MAAM,QAAQ,GAAGjF,MAAI,CAAC,IAAI;AAC9B,MAAMM,KAAG,CAAC,OAAO,CAAC,UAAU,CAAC;AAC7B,MAAME,SAAO;AACb,MAAM,KAAK;AACX,MAAM,cAAc;AACpB,KAAK,CAAA;AACL,IAAI,MAAM,eAAe,GAAGJ,iBAAe,CAAC,QAAQ,CAAC,CAAA;AACrD,IAAI,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI;AAC1C,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,WAAW,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,WAAW,CAAC;AACjE,KAAK,CAAA;;AAEL,IAAI,IAAI,CAAC,SAAS,EAAE;AACpB,MAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC,EAAE,CAAA;AAC7E,KAAA;;AAEA,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,EAAE,CAAA;AACzC,IAAI,MAAM,cAAc,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;AACxD,IAAI,MAAM,OAAO,GAAG,uBAAuB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAA;;AAE3E,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,IAAI;AACnB,MAAM,aAAa,EAAE,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,IAAI,WAAW;AACrE,MAAM,WAAW,EAAE,cAAc,CAAC,MAAM;AACxC,MAAM,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AACzE,MAAM,cAAc,EAAE,CAAC,GAAG,cAAc,CAAC;AACzC,KAAK,CAAA;AACL,GAAG,CAAC,OAAO,KAAK,EAAE;AAClB,IAAI,OAAO,CAAC,KAAK;AACjB,MAAM,4DAA4D;AAClE,MAAM,KAAK;AACX,KAAK,CAAA;AACL,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;AACnD,GAAA;AACA,CAAA;;AAEA,IAAA8E,2BAAc,GAAG;AACjB,yBAAEV,uBAAqB;AACvB,uBAAEC,qBAAmB;AACrB,yBAAEC,uBAAqB;AACvB,gCAAEC,8BAA4B;AAC9B,sBAAEC,oBAAkB;AACpB,8BAAEC,4BAA0B;AAC5B,uBAAEC,qBAAmB;AACrB,+BAAEC,6BAA2B;AAC7B,4BAAEC,0BAAwB;AAC1B,8BAAEC,4BAA0B;AAC5B,CAAC;;;;;;;;;;ACjsCD,MAAM,EAAE,YAAY,EAAE,GAAGhH,YAAmB,CAAA;AAC5C,MAAM,KAAK,GAAG,UAAyB,CAAA;;AAEvC,MAAMoF,OAAK,GAAG,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAA;;AAEvD;AACA;AACA,MAAM,oBAAoB,GAAG,MAAM,CAAA;AACnC,MAAM,cAAc,GAAG,EAAE,CAAA;AACzB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;;AAE9B;AACA;AACA,MAAM,eAAe,GAAG,KAAK,CAAA;AAC7B,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAE,CAAC;;AAEtC,SAAS,WAAW,CAAC,OAAO,EAAE;AAC9B,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;AACjF,CAAA;;AAEA,SAAS,aAAa,CAAC,QAAQ,EAAE;AACjC,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;AACxB,EAAE,IAAI,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;AAClD;AACA,EAAE,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,oBAAoB,CAAC,CAAA;AACvE,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;AACvC,EAAE,OAAO,UAAU,CAAC,MAAM,IAAI,cAAc,CAAA;AAC5C,CAAA;;AAEA,SAAS,kBAAkB,CAAC,QAAQ,EAAE;AACtC,EAAE,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;AACpD,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;AAC7B,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;AACvC,CAAA;;AAEA,SAAS,WAAW,CAAC,OAAO,EAAE;AAC9B,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;AAClC,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;AACxB,EAAE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAC/C,EAAE,IAAI,QAAQ,IAAI,GAAG,GAAG,QAAQ,GAAG,eAAe,EAAE;AACpD,IAAI,OAAO,IAAI,CAAA;AACf,GAAA;AACA,EAAE,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;AACnC,EAAE,OAAO,KAAK,CAAA;AACd,CAAA;;AAEA;AACA,WAAW,CAAC,MAAM;AAClB,EAAE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;AACxB,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,mBAAmB,EAAE;AAC/C,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,eAAe,EAAE;AACpC,MAAM,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AACrC,KAAA;AACA,GAAA;AACA,CAAC,EAAE,MAAM,CAAC,CAAA;;AAEV,MAAM8B,wBAAsB,GAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK;AAC1B,IAAI,IAAI;AACR,MAAM,MAAM;AACZ,QAAQ,UAAU;AAClB,QAAQ,QAAQ;AAChB,QAAQ,WAAW;AACnB,QAAQ,IAAI;AACZ,QAAQ,KAAK;AACb,QAAQ,IAAI;AACZ,QAAQ,IAAI;AACZ,QAAQ,MAAM;AACd,QAAQ,OAAO;AACf,OAAO,GAAG,OAAO,CAAA;;AAEjB;AACA,MAAM,MAAM,aAAa,GAAG9B,OAAK,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,CAAA;AAC5D,MAAM,IAAI,CAAC,aAAa,EAAE;AAC1B,QAAQ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAA;AACnE,OAAA;;AAEA;AACA,MAAM,MAAM,GAAG,GAAGA,OAAK,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;AAClD,MAAM,IAAI,GAAG,EAAE;AACf,QAAQ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAA;AAC3D,OAAA;;AAEA;AACA,MAAM,MAAM,SAAS,GAAGA,OAAK,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;AAClD,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAC7C,MAAM,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE;AACtD,QAAQ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAA;AAC1D,OAAA;;AAEA;AACA,MAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE;AACnC,QAAQ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;AACzD,OAAA;;AAEA;AACA,MAAM,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE;AAChC,QAAQ,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;AACtD,OAAA;;AAEA;AACA,MAAM,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC;AAC5C,QAAQ,KAAK;AACb,QAAQ,IAAI;AACZ,QAAQ,MAAM,EAAE,MAAM,IAAI,KAAK;AAC/B,QAAQ,OAAO,EAAE,OAAO,IAAI,QAAQ;AACpC,OAAO,CAAC,CAAA;;AAER,MAAM,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM;AACrC,QAAQ,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE;AACvC,UAAU,GAAG,CAAC,IAAI,EAAE,CAAA;AACpB,UAAU,GAAG,CAAC,KAAK,EAAE,CAAA;AACrB,UAAU,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,EAAE;AACvD,YAAY,UAAU;AACtB,YAAY,QAAQ;AACpB,YAAY,WAAW;AACvB,YAAY,IAAI;AAChB,YAAY,IAAI,EAAE,IAAI,IAAI,IAAI;AAC9B,WAAW,CAAC,CAAA;AACZ,SAAA;AACA,OAAO,CAAC,CAAA;;AAER,MAAM,YAAY,CAAC,IAAI,EAAE,CAAA;AACzB,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAA;;AAElC,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,CAAC,+BAA+B,EAAE,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3E,OAAO,CAAA;;AAEP,MAAM,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC9B,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,sDAAsD;AAC9D,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;AACpD,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,EAAE,MAAM;AACxB,IAAI,IAAI;AACR,MAAM,OAAO;AACb,QAAQ,aAAa,EAAEA,OAAK,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC;AACvD,QAAQ,YAAY,EAAEA,OAAK,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC;AACtD,QAAQ,SAAS,EAAEA,OAAK,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;AAC7C,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,qDAAqD;AAC7D,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,OAAO;AACb,QAAQ,KAAK,EAAE,IAAI;AACnB,QAAQ,OAAO,EAAE,KAAK,CAAC,OAAO;AAC9B,QAAQ,aAAa,EAAE,IAAI;AAC3B,QAAQ,YAAY,EAAE,KAAK;AAC3B,QAAQ,SAAS,EAAE,EAAE;AACrB,OAAO,CAAA;AACP,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAK;AACvC,IAAI,IAAI;AACR,MAAM,MAAM,SAAS,GAAGA,OAAK,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;AAClD,MAAM,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAA;AACxE,MAAMA,OAAK,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;AACvC,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,CAAC,wDAAwD,EAAE,QAAQ,CAAC,CAAC;AAC7E,OAAO,CAAA;AACP,MAAM,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC9B,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,qDAAqD;AAC7D,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;AACpD,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,EAAE,CAAC,QAAQ,KAAK;AAC3B,IAAI,IAAI;AACR,MAAM,IAAI,OAAO,QAAQ,CAAC,aAAa,KAAK,SAAS,EAAE;AACvD,QAAQA,OAAK,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;AAC1D,OAAA;AACA,MAAM,IAAI,OAAO,QAAQ,CAAC,YAAY,KAAK,SAAS,EAAE;AACtD,QAAQA,OAAK,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;AACxD,OAAA;AACA,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,mDAAmD;AAC3D,QAAQ,QAAQ;AAChB,OAAO,CAAA;AACP,MAAM,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC9B,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAA;AAC5E,MAAM,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;AACpD,KAAA;AACA,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,wBAAc,GAAG8B,wBAAsB;;;;;;;;;;;;ACxOvC,MAAMC,aAAW,GAAGnH,kBAAwB,EAAA,CAAA;;AAE5C;AACAmH,aAAW,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,WAAW,KAAK;AACxD,EAAE,MAAM,aAAa,GAAGlH,YAAwB,CAAA;AAChD,EAAE,OAAO,aAAa;AACtB,IAAI,WAAW,CAAC,KAAK;AACrB,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,GAAG;AACzC,GAAG,CAAA;AACH,CAAC,CAAC,CAAA;;AAEF;AACAkH,aAAW,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,WAAW,KAAK;AACvD,EAAE,MAAM,MAAM,GAAGjH,YAAiB,CAAA;AAClC,EAAE,OAAO,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAA;AACnD,CAAC,CAAC;;;;;;;;;;;AChBF,MAAM,WAAW,GAAG,EAAE,CAAA;;AAEtB;AACA,IAAI,KAAK,GAAG,IAAI,CAAA;AAChB,SAAS,QAAQ,GAAG;AACpB,EAAE,IAAI,CAAC,KAAK,EAAE;AACd,IAAI,MAAM,KAAK,GAAGF,UAAyB,CAAA;AAC3C,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAA;AAC/C,GAAA;AACA,EAAE,OAAO,KAAK,CAAA;AACd,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASoH,qBAAmB,GAAG;AAC/B,EAAE,IAAI;AACN,IAAI,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAA;AACxB,IAAI,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;AACxC,IAAI,OAAO,OAAA;AACX,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;AACjE,OAAO,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;AAC5B,GAAG,CAAC,MAAM;AACV,IAAI,OAAO,EAAE,CAAA;AACb,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,oBAAkB,CAAC,WAAW,EAAE,IAAI,EAAE;AAC/C,EAAE,IAAI;AACN,IAAI,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAA;AACxB,IAAI,IAAI,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;;AAEtC;AACA,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,CAAA;;AAElE;AACA,IAAI,OAAO,CAAC,OAAO,CAAC;AACpB,MAAM,WAAW;AACjB,MAAM,IAAI,EAAE,IAAI,IAAI,UAAU;AAC9B,MAAM,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACxC,KAAK,CAAC,CAAA;;AAEN;AACA,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;;AAE3C,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAC7B,IAAI,OAAO,OAAO,CAAA;AAClB,GAAG,CAAC,MAAM;AACV,IAAI,OAAO,EAAE,CAAA;AACb,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA,SAASC,uBAAqB,GAAG;AACjC,EAAE,IAAI;AACN,IAAI,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAA;AACxB,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAA;AACxB,GAAG,CAAC,MAAM;AACV;AACA,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,iBAAe,GAAG;AAC3B,EAAE,IAAI;AACN,IAAI,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAA;AACxB,IAAI,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;AAC7C,IAAI,OAAO,KAAK,IAAI,IAAI,CAAA;AACxB,GAAG,CAAC,MAAM;AACV,IAAI,OAAO,IAAI,CAAA;AACf,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,kBAAgB,CAAC,UAAU,EAAE,WAAW,EAAE;AACnD,EAAE,IAAI;AACN,IAAI,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAA;AACxB,IAAI,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAA;AACtD,GAAG,CAAC,MAAM;AACV;AACA,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA,SAASC,mBAAiB,GAAG;AAC7B,EAAE,IAAI;AACN,IAAI,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAA;AACxB,IAAI,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;AAC5B,GAAG,CAAC,MAAM;AACV;AACA,GAAA;AACA,CAAA;;AAEA,IAAA,iBAAc,GAAG;AACjB,uBAAEL,qBAAmB;AACrB,sBAAEC,oBAAkB;AACpB,yBAAEC,uBAAqB;AACvB,mBAAEC,iBAAe;AACjB,oBAAEC,kBAAgB;AAClB,qBAAEC,mBAAiB;AACnB,CAAC;;;;;;;;;AC5HD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,wBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,EAAE,EAAE;AAC1D,EAAE,IAAI,CAAC,WAAW,EAAE;AACpB,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAA;AAChE,GAAA;;AAEA,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACpC,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AACpE,IAAI,OAAO;AACX,MAAM,OAAO,EAAE,KAAK;AACpB,MAAM,KAAK,EAAE,0CAA0C;AACvD,KAAK,CAAA;AACL,GAAA;;AAEA,EAAE,MAAM,KAAK,GAAG;AAChB,IAAI,KAAK;AACT,IAAI,MAAM;AACV,MAAM,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE;AAC3E,IAAI,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AACrC,GAAG,CAAA;;AAEH,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;AACzC,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,mBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE;AAC9C,EAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AAChC,IAAI,GAAG,GAAG;AACV,IAAI,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI;AACzC,GAAG,CAAC,CAAC,CAAA;AACL,CAAA;;AAEA,IAAA,qBAAc,GAAG;AACjB,0BAAED,wBAAsB;AACxB,qBAAEC,mBAAiB;AACnB,CAAC;;;;;;;;;;AChDD,MAAM,EAAE,GAAG,EAAE,GAAG3H,YAAmB,CAAA;AACnC,MAAM,IAAI,GAAGC,YAAe,CAAA;AAC5B,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,GAAGC,IAAwB,CAAA;AACjE,MAAM;AACN,EAAE,sBAAsB;AACxB,EAAE,iBAAiB;AACnB,CAAC,GAAGC,qBAA0C,CAAA;;AAE9C,MAAM,eAAe,GAAG,wBAAwB,CAAA;AAChD,MAAM,OAAO,GAAG,WAAW,CAAA;;AAE3B;AACA;AACA;AACA,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,EAAE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC,CAAA;AAC5E,CAAA;;AAEA;AACA;AACA;AACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,EAAE,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;AACxC,EAAE,OAAO,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;AACtC,CAAA;;AAEA;AACA;AACA;AACA,SAAS,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE;AACtC,EAAE,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;AACxC,EAAE,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AACzD,CAAA;;AAEA;AACA;AACA;AACA,SAASyH,qBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,GAAG,EAAE,EAAE;AAC9D,EAAE,MAAM,MAAM,GAAG,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;AAC5D,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,MAAM,CAAA;;AAEpC,EAAE,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;AACpC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,MAAM,CAAA;AACtC,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;;AAE9B,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,CAAA;AACxD,CAAA;;AAEA;AACA;AACA;AACA,SAASC,oBAAkB,CAAC,KAAK,EAAE,WAAW,EAAE;AAChD,EAAE,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;AACpC,EAAE,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAAA;AACrC,CAAA;;AAEA;AACA;AACA;AACA,SAASC,sBAAoB,CAAC,KAAK,EAAE;AACrC,EAAE,OAAO,WAAW,CAAC,KAAK,CAAC,CAAA;AAC3B,CAAA;;AAEA;AACA;AACA;AACA,SAASC,uBAAqB,CAAC,KAAK,EAAE,WAAW,EAAE;AACnD,EAAE,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;AACpC,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AAC7B,IAAI,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAA;AACxE,GAAA;AACA,EAAE,OAAO,OAAO,CAAC,WAAW,CAAC,CAAA;AAC7B,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;AAC9B,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC1B,CAAA;;AAEA;AACA;AACA;AACA,SAASC,2BAAyB,CAAC,QAAQ,EAAE,KAAK,EAAE;AACpD,EAAE,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;AACpC,EAAE,OAAO,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;AAC7C,CAAA;;AAEA,IAAA,0BAAc,GAAG;AACjB,uBAAEJ,qBAAmB;AACrB,sBAAEC,oBAAkB;AACpB,wBAAEC,sBAAoB;AACtB,yBAAEC,uBAAqB;AACvB,6BAAEC,2BAAyB;AAC3B,CAAC;;;;;;AC/FD,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,GAAGhI,kBAA6B,CAAA;AACrE,MAAM;AACN,EAAE,qBAAqB;AACvB,EAAE,QAAQ;AACV,EAAE,OAAO;AACT,CAAC,GAAGC,uBAAkC,CAAA;AACtC,MAAM;AACN,EAAE,4BAA4B;AAC9B,EAAE,2BAA2B;AAC7B,EAAE,6BAA6B;AAC/B,CAAC,GAAGC,qBAAgC,CAAA;AACpC,MAAM;AACN,EAAE,uBAAuB;AACzB,EAAE,wBAAwB;AAC1B,EAAE,yBAAyB;AAC3B,CAAC,GAAGC,iBAA4B,CAAA;AAChC,MAAM;AACN,EAAE,oBAAoB;AACtB,EAAE,sBAAsB;AACxB,EAAE,UAAU;AACZ,EAAE,YAAY;AACd,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,iBAAiB;AACnB,EAAE,aAAa;AACf,EAAE,gBAAgB;AAClB,EAAE,eAAe;AACjB,EAAE,yBAAyB;AAC3B,CAAC,GAAGC,gBAA2B,CAAA;AAC/B,MAAM;AACN,EAAE,0BAA0B;AAC5B,EAAE,yBAAyB;AAC3B,EAAE,gBAAgB;AAClB,EAAE,gBAAgB;AAClB,EAAE,oBAAoB;AACtB,CAAC,GAAGC,oBAA+B,CAAA;AACnC,MAAM;AACN,EAAE,YAAY;AACd,EAAE,aAAa;AACf,EAAE,WAAW;AACb,EAAE,cAAc;AAChB,CAAC,GAAGC,yBAA+B,EAAA,CAAA;AACnC,MAAM;AACN,EAAE,WAAW;AACb,EAAE,iCAAiC;AACnC,EAAE,qBAAqB;AACvB,EAAE,mBAAmB;AACrB,EAAE,MAAM,EAAE,WAAW;AACrB,CAAC,GAAGC,mBAA8B,CAAA;AAClC,MAAM,EAAE,aAAa,EAAE,GAAGC,kBAA6B,CAAA;AACvD,MAAM;AACN,EAAE,0BAA0B;AAC5B,EAAE,2BAA2B;AAC7B,CAAC,GAAGC,qBAAgC,CAAA;AACpC,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAGC,kBAA6B,CAAA;AAChE,MAAM;AACN,EAAE,qBAAqB;AACvB,EAAE,mBAAmB;AACrB,EAAE,qBAAqB;AACvB,EAAE,4BAA4B;AAC9B,EAAE,kBAAkB;AACpB,EAAE,0BAA0B;AAC5B,EAAE,mBAAmB;AACrB,EAAE,2BAA2B;AAC7B,EAAE,wBAAwB;AAC1B,EAAE,0BAA0B;AAC5B,CAAC,GAAGC,2BAAsC,CAAA;AAC1C,MAAM;AACN,EAAE,kBAAkB;AACpB,EAAE,YAAY;AACd,EAAE,cAAc,EAAE,gBAAgB;AAClC,EAAE,aAAa,EAAE,qBAAqB;AACtC,EAAE,kBAAkB;AACpB,EAAE,qBAAqB;AACvB,EAAE,mBAAmB;AACrB,EAAE,qBAAqB;AACvB,EAAE,UAAU,EAAE,kBAAkB;AAChC,CAAC,GAAGC,wBAAmC,CAAA;AACvC,MAAM;AACN,EAAE,iBAAiB;AACnB,EAAE,cAAc;AAChB,CAAC,GAAGC,uBAAkC,CAAA;AACtC,MAAM;AACN,EAAE,mBAAmB;AACrB,EAAE,kBAAkB;AACpB,EAAE,qBAAqB;AACvB,EAAE,eAAe;AACjB,EAAE,gBAAgB;AAClB,EAAE,iBAAiB;AACnB,CAAC,GAAGC,iBAA8B,CAAA;AAClC,MAAM;AACN,EAAE,mBAAmB;AACrB,EAAE,kBAAkB;AACpB,EAAE,oBAAoB;AACtB,EAAE,qBAAqB;AACvB,EAAE,yBAAyB;AAC3B,CAAC,GAAGC,0BAAuC,CAAA;AAC3C,MAAMmG,wBAAsB,GAAGlG,wBAAmC,CAAA;AAClE,MAAM;AACN,EAAE,sBAAsB;AACxB,EAAE,wBAAwB;AAC1B,EAAE,sBAAsB;AACxB,CAAC,GAAGC,yBAAoC,CAAA;;AAExC,IAAA,UAAc,GAAG;AACjB,EAAE,UAAU;AACZ,EAAE,eAAe;AACjB,EAAE,qBAAqB;AACvB,EAAE,QAAQ;AACV,EAAE,OAAO;AACT,EAAE,4BAA4B;AAC9B,EAAE,2BAA2B;AAC7B,EAAE,6BAA6B;AAC/B,EAAE,uBAAuB;AACzB,EAAE,wBAAwB;AAC1B,EAAE,yBAAyB;AAC3B,EAAE,oBAAoB;AACtB,EAAE,sBAAsB;AACxB,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,iBAAiB;AACnB,EAAE,UAAU;AACZ,EAAE,YAAY;AACd,EAAE,0BAA0B;AAC5B,EAAE,yBAAyB;AAC3B,EAAE,aAAa;AACf,EAAE,gBAAgB;AAClB,EAAE,eAAe;AACjB,EAAE,yBAAyB;AAC3B,EAAE,YAAY;AACd,EAAE,aAAa;AACf,EAAE,WAAW;AACb,EAAE,cAAc;AAChB,EAAE,gBAAgB;AAClB,EAAE,gBAAgB;AAClB,EAAE,oBAAoB;AACtB,EAAE,WAAW;AACb,EAAE,iCAAiC;AACnC,EAAE,qBAAqB;AACvB,EAAE,mBAAmB;AACrB,EAAE,aAAa;AACf,EAAE,0BAA0B;AAC5B,EAAE,2BAA2B;AAC7B,EAAE,aAAa;AACf,EAAE,WAAW;AACb,EAAE,qBAAqB;AACvB,EAAE,mBAAmB;AACrB,EAAE,qBAAqB;AACvB,EAAE,4BAA4B;AAC9B,EAAE,kBAAkB;AACpB,EAAE,0BAA0B;AAC5B,EAAE,mBAAmB;AACrB,EAAE,2BAA2B;AAC7B,EAAE,wBAAwB;AAC1B,EAAE,0BAA0B;AAC5B,EAAE,mBAAmB;AACrB,EAAE,kBAAkB;AACpB,EAAE,oBAAoB;AACtB,EAAE,qBAAqB;AACvB,EAAE,yBAAyB;AAC3B,EAAE,kBAAkB;AACpB,EAAE,YAAY;AACd,EAAE,gBAAgB;AAClB,EAAE,qBAAqB;AACvB,EAAE,kBAAkB;AACpB,EAAE,qBAAqB;AACvB,EAAE,mBAAmB;AACrB,EAAE,qBAAqB;AACvB,EAAE,kBAAkB;AACpB,EAAE,iBAAiB;AACnB,EAAE,cAAc;AAChB,EAAE,mBAAmB;AACrB,EAAE,kBAAkB;AACpB,EAAE,qBAAqB;AACvB,EAAE,eAAe;AACjB,EAAE,gBAAgB;AAClB,EAAE,iBAAiB;AACnB,0BAAEiG,wBAAsB;AACxB,EAAE,sBAAsB;AACxB,EAAE,wBAAwB;AAC1B,EAAE,sBAAsB;AACxB,CAAC;;ACxLD,MAAM,eAAEe,aAAW,EAAE,GAAGjI,YAAmB,CAAA;AAC3C,MAAM;AACN,EAAE,6BAA6B;AAC/B,EAAE,qBAAqB;AACvB,EAAE,qBAAqB;AACvB,CAAC,GAAGC,QAAoB,CAAA;AACxB;AACA;AACA;AACA;AACA,MAAMiI,gBAAc,GAAG;AACvB,EAAE,qBAAqB,EAAE;AACzB,IAAID,aAAW,CAAC,MAAM,CAAC,6BAA6B,EAAE,EAAE,CAAC;AACzD,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK;AACvB,IAAIA,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAC7D,EAAE,OAAO,EAAE,CAAC,GAAG,KAAKA,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,CAAC;AACtE,CAAC,CAAA;;AAED,IAAA,gBAAc,GAAGC,gBAAc;;;;;;;;ACb/B,MAAM,eAAED,aAAW,EAAE,GAAGjI,YAAmB,CAAA;AAC3C,MAAM;AACN,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,gBAAgB;AAClB,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAMkI,cAAY,GAAG;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,4BAA4B,EAAE,CAAC,KAAK,KAAK;AAC3C,IAAI,OAAO,CAAC,GAAG,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAA;AACzE,IAAI,OAAOF,aAAW,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;AACxD,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,2BAA2B,EAAE,CAAC,KAAK,EAAE,IAAI;AAC3C,IAAIA,aAAW,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,6BAA6B,EAAE,CAAC,KAAK,EAAE,WAAW;AACpD,IAAIA,aAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AAChE,CAAC,CAAA;;AAED,IAAA,cAAc,GAAGE,cAAY;;;;;;;;ACzC7B;AACA,MAAM,eAAEF,aAAW,EAAE,GAAGjI,YAAmB,CAAA;;AAE3C,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAGC,QAAoB,CAAA;;AAEzD,MAAMmI,WAAS,GAAG;AAClB,EAAE,yBAAyB,EAAE,CAAC,KAAK;AACnC,IAAIH,aAAW,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC;AAC9C,EAAE,wBAAwB,EAAE,CAAC,KAAK,EAAE,IAAI;AACxC,IAAIA,aAAW,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACpD,CAAC,CAAA;;AAED,IAAA,WAAc,GAAGG,WAAS;;;;;;;;ACZ1B;AACA,MAAM,eAAEH,aAAW,EAAE,GAAGjI,YAAmB,CAAA;;AAE3C,MAAM;AACN,EAAE,qBAAqB;AACvB,EAAE,uBAAuB;AACzB,EAAE,mBAAmB;AACrB,EAAE,iBAAiB;AACnB,EAAE,gBAAgB;AAClB,EAAE,gBAAgB;AAClB,EAAE,UAAU;AACZ,EAAE,cAAc;AAChB,EAAE,SAAS;AACX,EAAE,aAAa;AACf,EAAE,yBAAyB;AAC3B,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAMoI,SAAO,GAAG;AAChB;AACA,EAAE,oBAAoB,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ;AACpD,IAAIJ,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAC9C,MAAM,KAAK;AACX,MAAM,UAAU;AAChB,MAAM,QAAQ;AACd,KAAK,CAAC;;AAEN;AACA,EAAE,sBAAsB,EAAE,CAAC,KAAK,EAAE,UAAU;AAC5C,IAAIA,aAAW,CAAC,MAAM,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;;AAEtE,EAAE,cAAc,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK;AAC3C,IAAIA,aAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACzC,MAAM,QAAQ;AACd,MAAM,OAAO;AACb,MAAM,KAAK;AACX,KAAK,CAAC;;AAEN,EAAE,cAAc,EAAE;AAClB,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,SAAS,GAAG,GAAG;AACnB,IAAI,WAAW,GAAG,IAAI;AACtB,IAAI,OAAO,GAAG,IAAI;AAClB,IAAI,KAAK,GAAG,IAAI;AAChB,OAAO;AACP,IAAIA,aAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACzC,MAAM,QAAQ;AACd,MAAM,OAAO;AACb,MAAM,SAAS;AACf,MAAM,WAAW;AACjB,MAAM,OAAO;AACb,MAAM,KAAK;AACX,KAAK,CAAC,CAAA;AACN,GAAG;;AAEH,EAAE,iBAAiB,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK;AAC9C,IAAIA,aAAW,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAA;AAC3D,GAAG;;AAEH,EAAE,gBAAgB,EAAE,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,KAAK;AACtD,IAAIA,aAAW,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAA;AAC5D,GAAG;;AAEH,EAAE,eAAe,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK;AACxC,IAAIA,aAAW,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAA;AAC1D,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI;AACtD,IAAIA,aAAW,CAAC,MAAM,CAAC,iBAAiB,EAAE;AAC1C,MAAM,IAAI;AACV,MAAM,QAAQ;AACd,MAAM,MAAM;AACZ,MAAM,WAAW;AACjB,KAAK,CAAC;;AAEN;AACA;AACA;AACA;AACA,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,WAAW,GAAG,EAAE;AACvC,IAAIA,aAAW,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;;AAEtE;AACA;AACA;AACA;AACA,EAAE,aAAa,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE,IAAI,KAAK;AACvE,IAAIA,aAAW,CAAC,MAAM,CAAC,cAAc,EAAE;AACvC,MAAM,QAAQ;AACd,MAAM,WAAW;AACjB,MAAM,mBAAmB;AACzB,MAAM,IAAI;AACV,KAAK,CAAC,CAAA;AACN,GAAG;;AAEH,EAAE,yBAAyB,EAAE,CAAC,GAAG,KAAK;AACtC,IAAIA,aAAW,CAAC,MAAM,CAAC,yBAAyB,EAAE;AAClD,MAAM,GAAG;AACT,KAAK,CAAC,CAAA;AACN,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,SAAc,GAAGI,SAAO;;;;;;;;AC3GxB;AACA,MAAM,eAAEJ,aAAW,EAAE,GAAGjI,YAAmB,CAAA;;AAE3C,MAAM;AACN,EAAE,YAAY;AACd,EAAE,aAAa;AACf,EAAE,qBAAqB;AACvB,EAAE,qBAAqB;AACvB,EAAE,yBAAyB;AAC3B,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAMqI,aAAW,GAAG;AACpB,EAAE,yBAAyB,EAAE,MAAML,aAAW,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC;AACvE,EAAE,0BAA0B,EAAE,CAAC,IAAI;AACnC,IAAIA,aAAW,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC;AAC/C,EAAE,gBAAgB,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,CAAC;AACvE,EAAE,gBAAgB,EAAE,CAAC,aAAa;AAClC,IAAIA,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,aAAa,EAAE,CAAC;AAChE,EAAE,oBAAoB,EAAE,CAAC,YAAY,EAAE,YAAY;AACnD,IAAIA,aAAW,CAAC,MAAM,CAAC,yBAAyB,EAAE;AAClD,MAAM,YAAY;AAClB,MAAM,YAAY;AAClB,KAAK,CAAC;AACN,CAAC,CAAA;;AAED,IAAA,aAAc,GAAGK,aAAW;;;;;;;;ACzB5B;AACA,MAAM,eAAEL,aAAW,EAAE,GAAGjI,YAAmB,CAAA;;AAE3C,MAAM,EAAE,WAAW,EAAE,GAAGC,QAAoB,CAAA;;AAE5C,MAAMsI,WAAS,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,CAAC,SAAS,GAAG,IAAI,EAAE,UAAU,GAAG,CAAC,GAAG,CAAC,KAAK;AACxD,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;AACzC,IAAI,OAAON,aAAW,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAA;AACrE,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,WAAc,GAAGM,WAAS;;;;;;;;;;;;;;;ACT1B,MAAM,eAAEN,aAAW,EAAE,GAAGjI,YAAmB,CAAA;;AAE3C,MAAMwI,WAAS,GAAG;AAClB;AACA;AACA;AACA;AACA,EAAE,IAAI,EAAE,YAAY;AACpB,IAAI,IAAI;AACR,MAAM,OAAO,MAAMP,aAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;AACpD,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAA;AAChE,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,GAAG,EAAE,OAAO,UAAU,KAAK;AAC7B,IAAI,IAAI;AACR,MAAM,OAAO,MAAMA,aAAW,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;AAC/D,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,iCAAiC,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AAC7E,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,EAAE,OAAO,UAAU,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,KAAK;AACpE,IAAI,IAAI;AACR,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,CAAC,+BAA+B,EAAE,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAC1E,OAAO,CAAA;AACP,MAAM,MAAM,MAAM,GAAG,MAAMA,aAAW,CAAC,MAAM;AAC7C,QAAQ,gBAAgB;AACxB,QAAQ,UAAU;AAClB,QAAQ,WAAW;AACnB,QAAQ,aAAa;AACrB,OAAO,CAAA;AACP,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,qBAAqB,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAA;AACjE,MAAM,OAAO,MAAM,CAAA;AACnB,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,oCAAoC,EAAE,UAAU,CAAC,CAAC,CAAC;AAC5D,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE,OAAO,UAAU,EAAE,SAAS,EAAE,cAAc,GAAG,IAAI,KAAK;AACxE,IAAI,IAAI;AACR,MAAM,OAAO,CAAC,GAAG;AACjB,QAAQ,CAAC,qCAAqC,EAAE,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC9E,OAAO,CAAA;AACP,MAAM,MAAM,MAAM,GAAG,MAAMA,aAAW,CAAC,MAAM;AAC7C,QAAQ,sBAAsB;AAC9B,QAAQ,UAAU;AAClB,QAAQ,SAAS;AACjB,QAAQ,cAAc;AACtB,OAAO,CAAA;AACP,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,2BAA2B,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAA;AACvE,MAAM,OAAO,MAAM,CAAA;AACnB,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,0CAA0C,EAAE,UAAU,CAAC,CAAC,CAAC;AAClE,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,OAAO,UAAU,KAAK;AACpC,IAAI,IAAI;AACR,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,yCAAyC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AAC3E,MAAM,MAAM,OAAO,GAAG,MAAMA,aAAW,CAAC,MAAM;AAC9C,QAAQ,oBAAoB;AAC5B,QAAQ,UAAU;AAClB,OAAO,CAAA;AACP,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,qBAAqB,EAAE,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAA;AAC/E,MAAM,OAAO,OAAO,CAAA;AACpB,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,8CAA8C,CAAC,EAAE,KAAK,CAAC,CAAA;AAC5E,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,EAAE,OAAO,UAAU,KAAK;AACnC,IAAI,IAAI;AACR,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,iCAAiC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AACnE,MAAM,MAAM,OAAO,GAAG,MAAMA,aAAW,CAAC,MAAM,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAA;AAC9E,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,qBAAqB,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAA;AACrE,OAAO,MAAM;AACb,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,mBAAmB,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAA;AAClE,OAAA;AACA,MAAM,OAAO,OAAO,CAAA;AACpB,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,sCAAsC,EAAE,UAAU,CAAC,CAAC,CAAC;AAC9D,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE,YAAY;AAC5B,IAAI,IAAI;AACR,MAAM,OAAO,MAAMA,aAAW,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAC1D,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAA;AACnE,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,EAAE,YAAY;AAC9B,IAAI,IAAI;AACR,MAAM,OAAO,MAAMA,aAAW,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAA;AAC5D,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAA;AACrE,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,EAAE,OAAO,UAAU,KAAK;AACxC,IAAI,IAAI;AACR,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,qCAAqC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AACvE,MAAM,MAAM,MAAM,GAAG,MAAMA,aAAW,CAAC,MAAM;AAC7C,QAAQ,yBAAyB;AACjC,QAAQ,UAAU;AAClB,OAAO,CAAA;AACP,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;AAC1B,QAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,uCAAuC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;AAC3E,OAAA;AACA,MAAM,OAAO,MAAM,CAAA;AACnB,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAA;AACrE,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,mBAAmB,EAAE,YAAY;AACnC,IAAI,IAAI;AACR,MAAM,OAAO,MAAMA,aAAW,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAA;AACrE,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAA;AAC1E,MAAM,OAAO,EAAE,CAAA;AACf,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,OAAO,UAAU,KAAK;AACpC,IAAI,IAAI;AACR,MAAM,OAAO,MAAMA,aAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAA;AACvE,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,qCAAqC,EAAE,UAAU,CAAC,CAAC,CAAC;AAC7D,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAA;AACrD,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,EAAE,YAAY;AAC9B,IAAI,IAAI;AACR,MAAM,OAAO,MAAMA,aAAW,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAA;AAChE,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAA;AACpE,MAAM,OAAO,EAAE,CAAA;AACf,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,EAAE,CAAC,QAAQ,KAAK;AAC7B,IAAIA,aAAW,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK;AACxD,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAA;AACpB,KAAK,CAAC,CAAA;AACN,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,EAAE,CAAC,QAAQ,KAAK;AAC1B,IAAIA,aAAW,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK;AACtD,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAA;AACpB,KAAK,CAAC,CAAA;AACN,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,uBAAuB,EAAE,CAAC,QAAQ,KAAK;AACzC,IAAIA,aAAW,CAAC,cAAc,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAA;AAC5D,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,oBAAoB,EAAE,CAAC,QAAQ,KAAK;AACtC,IAAIA,aAAW,CAAC,cAAc,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAA;AAC1D,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,WAAc,GAAGO,WAAS;;;;;;;;;ACtU1B,MAAM,eAAEP,aAAW,EAAE,GAAGjI,YAAmB,CAAA;AAC3C,MAAM;AACN,EAAE,aAAa;AACf,EAAE,aAAa;AACf,EAAE,YAAY;AACd,EAAE,eAAe;AACjB,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAMwI,aAAW,GAAG;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE;AAChB,IAAI,KAAK;AACT,IAAI,YAAY;AAChB,IAAI,YAAY;AAChB,IAAI,WAAW;AACf,IAAI,aAAa,GAAG,YAAY;AAChC,IAAI,SAAS,GAAG,IAAI;AACpB,IAAI,YAAY,GAAG,IAAI;AACvB;AACA,IAAIR,aAAW,CAAC,MAAM,CAAC,aAAa,EAAE;AACtC,MAAM,KAAK;AACX,MAAM,YAAY;AAClB,MAAM,YAAY;AAClB,MAAM,WAAW;AACjB,MAAM,aAAa;AACnB,MAAM,SAAS;AACf,MAAM,YAAY;AAClB,KAAK,CAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,EAAE,CAAC,KAAK,KAAKA,aAAW,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,EAAE,CAAC,KAAK,EAAE,YAAY;AACnC,IAAIA,aAAW,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,EAAE,CAAC,KAAK,EAAE,YAAY;AACtC,IAAIA,aAAW,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;;AAEhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,2BAA2B,EAAE,CAAC,KAAK,KAAK;AAC1C,IAAIA,aAAA;AACJ,OAAO,MAAM,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,CAAA;AACtC,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK;AACxB;AACA,QAAQA,aAAW,CAAC,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAA;AAC1D,OAAO,CAAA;AACP,OAAO,KAAK,CAAC,CAAC,KAAK,KAAK;AACxB,QAAQA,aAAW,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAChD,UAAU,KAAK,EAAE,KAAK,CAAC,OAAO;AAC9B,SAAS,CAAC,CAAA;AACV,OAAO,CAAC,CAAA;AACR,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,0BAA0B,EAAE;AAC9B,IAAI,KAAK;AACT,IAAI,YAAY;AAChB,IAAI,YAAY;AAChB,IAAI,WAAW;AACf,OAAO;AACP,IAAIA,aAAA;AACJ,OAAO,MAAM,CAAC,aAAa,EAAE;AAC7B,QAAQ,KAAK;AACb,QAAQ,YAAY;AACpB,QAAQ,YAAY;AACpB,QAAQ,WAAW;AACnB,OAAO,CAAA;AACP,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK;AACxB,QAAQA,aAAW,CAAC,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAA;AAC1D,OAAO,CAAA;AACP,OAAO,KAAK,CAAC,CAAC,KAAK,KAAK;AACxB,QAAQA,aAAW,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAChD,UAAU,KAAK,EAAE,KAAK,CAAC,OAAO;AAC9B,SAAS,CAAC,CAAA;AACV,OAAO,CAAC,CAAA;AACR,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,yBAAyB,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK;AACtD,IAAIA,aAAA;AACJ,OAAO,MAAM,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;AACnD,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK;AACxB,QAAQA,aAAW,CAAC,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAA;AACzD,OAAO,CAAA;AACP,OAAO,KAAK,CAAC,CAAC,KAAK,KAAK;AACxB,QAAQA,aAAW,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC/C,UAAU,KAAK,EAAE,KAAK,CAAC,OAAO;AAC9B,SAAS,CAAC,CAAA;AACV,OAAO,CAAC,CAAA;AACR,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,4BAA4B,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK;AACzD,IAAIA,aAAA;AACJ,OAAO,MAAM,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;AACtD,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK;AACxB,QAAQA,aAAW,CAAC,IAAI,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAA;AAC5D,OAAO,CAAA;AACP,OAAO,KAAK,CAAC,CAAC,KAAK,KAAK;AACxB,QAAQA,aAAW,CAAC,IAAI,CAAC,uBAAuB,EAAE;AAClD,UAAU,KAAK,EAAE,KAAK,CAAC,OAAO;AAC9B,SAAS,CAAC,CAAA;AACV,OAAO,CAAC,CAAA;AACR,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,aAAc,GAAGQ,aAAW;;;;;;;;;AClK5B,MAAM,eAAER,aAAW,EAAE,GAAGjI,YAAmB,CAAA;AAC3C,MAAM;AACN,EAAE,gBAAgB;AAClB,EAAE,eAAe;AACjB,EAAE,cAAc;AAChB,EAAE,aAAa;AACf,EAAE,kBAAkB;AACpB,EAAE,iBAAiB;AACnB,EAAE,iBAAiB;AACnB,EAAE,eAAe;AACjB,EAAE,YAAY;AACd,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAMyI,QAAM,GAAG;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW;AAClD,IAAIT,aAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE;AACzC,MAAM,UAAU;AAChB,MAAM,SAAS;AACf,MAAM,WAAW;AACjB,KAAK,CAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,CAAC,UAAU;AACzB,IAAIA,aAAW,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,UAAU,EAAE,CAAC;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,EAAE,CAAC,UAAU,KAAKA,aAAW,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,UAAU,EAAE,CAAC;;AAE/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI;AAC5D,IAAIA,aAAW,CAAC,MAAM,CAAC,aAAa,EAAE;AACtC,MAAM,UAAU;AAChB,MAAM,QAAQ;AACd,MAAM,IAAI;AACV,MAAM,YAAY;AAClB,KAAK,CAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,EAAE,CAAC,UAAU;AAC5B,IAAIA,aAAW,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE,UAAU,EAAE,CAAC;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE,CAAC,UAAU,EAAE,GAAG;AAChC,IAAIA,aAAW,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,eAAe,EAAE,CAAC,UAAU;AAC9B,IAAIA,aAAW,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,UAAU,EAAE,CAAC;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,eAAe,CAAC;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW;AAC/C,IAAIA,aAAW,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AAC7E,CAAC,CAAA;;AAED,IAAA,QAAc,GAAGS,QAAM;;;;;;;;;;;;;;;AChHvB,MAAM,eAAET,aAAW,EAAE,GAAGjI,YAAmB,CAAA;;AAE3C,MAAM2I,aAAW,GAAG;AACpB;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,OAAO,YAAY,GAAG,KAAK,KAAK;AAC9C,IAAI,IAAI;AACR,MAAM,OAAO,MAAMV,aAAW,CAAC,MAAM,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAA;AAC3E,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAA;AACjE,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,MAAM,EAAE,OAAO,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,KAAK;AAC9C,IAAI,IAAI;AACR,MAAM,OAAO,MAAMA,aAAW,CAAC,MAAM,CAAC,iBAAiB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;AACxE,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAA;AACrE,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,OAAO,WAAW,KAAK;AACrC,IAAI,IAAI;AACR,MAAM,OAAO,MAAMA,aAAW,CAAC,MAAM,CAAC,sBAAsB,EAAE,WAAW,CAAC,CAAA;AAC1E,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK;AACnB,QAAQ,CAAC,oCAAoC,EAAE,WAAW,CAAC,CAAC,CAAC;AAC7D,QAAQ,KAAK;AACb,OAAO,CAAA;AACP,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE,OAAO,gBAAgB,GAAG,EAAE,KAAK;AACjD,IAAI,IAAI;AACR,MAAM,OAAO,MAAMA,aAAW,CAAC,MAAM;AACrC,QAAQ,wBAAwB;AAChC,QAAQ,gBAAgB;AACxB,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAA;AACnE,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,gBAAgB,EAAE,OAAO,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,KAAK;AACxD,IAAI,IAAI;AACR,MAAM,OAAO,MAAMA,aAAW,CAAC,MAAM;AACrC,QAAQ,4BAA4B;AACpC,QAAQ,KAAK;AACb,QAAQ,OAAO;AACf,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAA;AACvE,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE,OAAO,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,KAAK;AACpD,IAAI,IAAI;AACR,MAAM,OAAO,MAAMA,aAAW,CAAC,MAAM;AACrC,QAAQ,wBAAwB;AAChC,QAAQ,KAAK;AACb,QAAQ,OAAO;AACf,OAAO,CAAA;AACP,KAAK,CAAC,OAAO,KAAK,EAAE;AACpB,MAAM,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAA;AACnE,MAAM,MAAM,KAAK,CAAA;AACjB,KAAA;AACA,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,aAAc,GAAGU,aAAW;;;;;;;;AChH5B,MAAM,eAAEV,aAAW,EAAE,GAAGjI,YAAmB,CAAA;;AAE3C,MAAM;AACN,EAAE,UAAU;AACZ,EAAE,UAAU;AACZ,EAAE,YAAY;AACd,EAAE,aAAa;AACf,EAAE,2BAA2B;AAC7B,EAAE,qBAAqB;AACvB,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAM2I,UAAQ,GAAG;AACjB,EAAE,wBAAwB,EAAE,CAAC,KAAK;AAClC,IAAIX,aAAW,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC;AAC7C,EAAE,uBAAuB,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW;AACzD,IAAIA,aAAW,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;AACrE,EAAE,yBAAyB,EAAE,CAAC,KAAK,EAAE,QAAQ;AAC7C,IAAIA,aAAW,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACzD,EAAE,YAAY,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO;AACzC,IAAIA,aAAW,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AACnE,EAAE,wBAAwB,EAAE,CAAC,KAAK,EAAE,WAAW;AAC/C,IAAIA,aAAW,CAAC,MAAM,CAAC,2BAA2B,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AAC3E,EAAE,sBAAsB,EAAE,CAAC,KAAK,EAAE,QAAQ;AAC1C,IAAIA,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAClE,CAAC,CAAA;;AAED,IAAA,UAAc,GAAGW,UAAQ;;;;;;;;AC3BzB;AACA,MAAM,eAAEX,aAAW,EAAE,GAAGjI,YAAmB,CAAA;;AAE3C,MAAM;AACN,EAAE,oBAAoB;AACtB,EAAE,2BAA2B;AAC7B,EAAE,qBAAqB;AACvB,EAAE,8BAA8B;AAChC,EAAE,oBAAoB;AACtB,EAAE,sBAAsB;AACxB,EAAE,cAAc;AAChB,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAM4I,YAAU,GAAG;AACnB,EAAE,WAAW,EAAE,CAAC,WAAW;AAC3B,IAAIZ,aAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE,WAAW,CAAC;;AAEzD,EAAE,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,KAAK;AAC/C,IAAIA,aAAW,CAAC,MAAM,CAAC,sBAAsB,EAAE;AAC/C,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,MAAM,SAAS;AACf,MAAM,GAAG;AACT,KAAK,CAAC,CAAA;AACN,GAAG;;AAEH,EAAE,YAAY,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,CAAC;;AAEnE,EAAE,oBAAoB,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK;AACtD,IAAIA,aAAW,CAAC,MAAM,CAAC,2BAA2B,EAAE;AACpD,MAAM,WAAW;AACjB,MAAM,SAAS;AACf,MAAM,KAAK;AACX,KAAK,CAAC;;AAEN,EAAE,iCAAiC,EAAE;AACrC,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,SAAS;AACb,IAAI,GAAG;AACP,IAAI,iBAAiB,GAAG,KAAK;AAC7B;AACA,IAAIA,aAAW,CAAC,MAAM,CAAC,8BAA8B,EAAE;AACvD,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,MAAM,SAAS;AACf,MAAM,GAAG;AACT,MAAM,iBAAiB;AACvB,KAAK,CAAC;;AAEN,EAAE,qBAAqB,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,KAAK;AACjE,IAAIA,aAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE;AAC7C,MAAM,QAAQ;AACd,MAAM,aAAa;AACnB,MAAM,SAAS;AACf,KAAK,CAAC,CAAA;AACN,GAAG;;AAEH,EAAE,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,GAAG,EAAE,KAAK;AAC7E,IAAIA,aAAW,CAAC,MAAM,CAAC,sBAAsB,EAAE;AAC/C,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,MAAM,SAAS;AACf,MAAM,UAAU;AAChB,MAAM,KAAK;AACX,KAAK,CAAC,CAAA;AACN,GAAG;;AAEH,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE;AAC7D,IAAIA,aAAW,CAAC,MAAM,CAAC,cAAc,EAAE;AACvC,MAAM,KAAK;AACX,MAAM,MAAM;AACZ,MAAM,SAAS;AACf,MAAM,KAAK;AACX,MAAM,OAAO;AACb,KAAK,CAAC;AACN,CAAC,CAAA;;AAED,IAAA,YAAc,GAAGY,YAAU;;;;;;AC/E3B,MAAM,eAAEZ,aAAW,EAAE,GAAGjI,YAAmB,CAAA;;AAE3C,MAAM,EAAE,qBAAqB,EAAE,GAAGC,cAAiC,CAAA;;AAEnE,MAAM6I,WAAS,GAAG;AAClB;AACA,EAAE,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,uBAAuB;AACpE,IAAIb,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC3E,CAAC,CAAA;;AAED,IAAA,WAAc,GAAGa,WAAS;;;;;;;ACV1B;AACA,MAAM,eAAEb,aAAW,EAAE,GAAGjI,YAAmB,CAAA;;AAE3C,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,GAAGC,QAAoB,CAAA;;AAEjE,MAAM8I,cAAY,GAAG;AACrB,EAAE,YAAY,EAAE,CAAC,KAAK,EAAE,QAAQ;AAChC,IAAId,aAAW,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC5D,EAAE,aAAa,EAAE,CAAC,KAAK,KAAKA,aAAW,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC;AAC1E,CAAC,CAAA;;AAED,IAAA,cAAc,GAAGc,cAAY;;;;;;;;ACV7B;AACA,MAAM,eAAEd,aAAW,EAAE,GAAGjI,YAAmB,CAAA;;AAE3C,MAAMgJ,WAAS,GAAG;AAClB,EAAE,OAAO,EAAE,CAAC,WAAW,EAAE,QAAQ;AACjC,IAAIf,aAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;AACnE,EAAE,SAAS,EAAE,CAAC,QAAQ,KAAKA,aAAW,CAAC,MAAM,CAAC,kBAAkB,EAAE,QAAQ,CAAC;AAC3E,CAAC,CAAA;;AAED,IAAA,WAAc,GAAGe,WAAS;;;;;;;;;;ACP1B,MAAM,eAAEf,aAAW,EAAE,GAAGjI,YAAmB,CAAA;AAC3C,MAAM;AACN,EAAE,gBAAgB;AAClB,EAAE,iBAAiB;AACnB,EAAE,wBAAwB;AAC1B,EAAE,uBAAuB;AACzB,EAAE,qBAAqB;AACvB,EAAE,sBAAsB;AACxB,EAAE,mBAAmB;AACrB,EAAE,gBAAgB;AAClB,EAAE,oBAAoB;AACtB,EAAE,sBAAsB;AACxB,EAAE,mBAAmB;AACrB,EAAE,gBAAgB;AAClB,CAAC,GAAGC,WAA8B,CAAA;;AAElC,IAAI,eAAe,GAAG,CAAC,CAAA;AACvB,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE,CAAA;;AAE9B,SAAS,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE;AACzC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,eAAe,CAAC,CAAA;AACtC,EAAE,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAA;AAClD,EAAEgI,aAAW,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;AAClC,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;AAC5C,EAAE,OAAO,EAAE,CAAA;AACX,CAAA;;AAEA,MAAMgB,QAAM,GAAG;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,EAAE,CAAC,SAAS,EAAE,MAAM;AACjC,IAAIhB,aAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE,CAAC,SAAS;AAC1B,IAAIA,aAAW,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,CAAC;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,kBAAkB,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,wBAAwB,CAAC;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,iBAAiB,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,uBAAuB,CAAC;;AAEtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,eAAe,EAAE,CAAC,UAAU;AAC9B,IAAIA,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,UAAU,EAAE,CAAC;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,mBAAmB,EAAE,CAAC,UAAU;AAClC,IAAIA,aAAW,CAAC,MAAM,CAAC,sBAAsB,EAAE,EAAE,UAAU,EAAE,CAAC;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,EAAE,CAAC,UAAU;AAC5B,IAAIA,aAAW,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,UAAU,EAAE,CAAC;;AAE3D;AACA;AACA;AACA;;AAEA;AACA,EAAE,aAAa,EAAE,CAAC,QAAQ,KAAK,YAAY,CAAC,gBAAgB,EAAE,QAAQ,CAAC;;AAEvE;AACA,EAAE,gBAAgB,EAAE,CAAC,QAAQ,KAAK,YAAY,CAAC,oBAAoB,EAAE,QAAQ,CAAC;;AAE9E;AACA,EAAE,kBAAkB,EAAE,CAAC,QAAQ;AAC/B,IAAI,YAAY,CAAC,sBAAsB,EAAE,QAAQ,CAAC;;AAElD;AACA,EAAE,gBAAgB,EAAE,CAAC,QAAQ,KAAK,YAAY,CAAC,mBAAmB,EAAE,QAAQ,CAAC;;AAE7E;AACA,EAAE,aAAa,EAAE,CAAC,QAAQ,KAAK,YAAY,CAAC,gBAAgB,EAAE,QAAQ,CAAC;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,oBAAoB,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK;AAC7C,IAAI,MAAM,UAAU,GAAG,EAAE,KAAK,SAAS,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;AAC1E,IAAI,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAC9C,IAAI,IAAI,KAAK,EAAE;AACf,MAAMA,aAAW,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;AAC9D,MAAM,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;AACrC,KAAA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,wBAAwB,EAAE,MAAM;AAClC,IAAI,KAAK,MAAM,GAAG,KAAK,CAAC,IAAI,YAAY,EAAE;AAC1C,MAAMA,aAAW,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;AAC9D,KAAA;AACA,IAAI,YAAY,CAAC,KAAK,EAAE,CAAA;AACxB,IAAIA,aAAW,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAA;AACpD,IAAIA,aAAW,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,CAAA;AACxD,IAAIA,aAAW,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CAAA;AAC1D,IAAIA,aAAW,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAA;AACvD,IAAIA,aAAW,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAA;AACpD,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,QAAc,GAAGgB,QAAM;;;;;;;;;;ACtJvB,MAAM,eAAEhB,aAAW,EAAE,GAAGjI,YAAmB,CAAA;AAC3C,MAAM;AACN,EAAE,uBAAuB;AACzB,EAAE,2BAA2B;AAC7B,EAAE,oBAAoB;AACtB,EAAE,oBAAoB;AACtB,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAMiJ,gBAAc,GAAG;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,CAAC,KAAK,EAAE,YAAY;AAClC,IAAIjB,aAAW,CAAC,MAAM,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;;AAExE;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,2BAA2B,CAAC;;AAEtE;AACA;AACA;AACA;AACA;AACA,EAAE,kBAAkB,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC;;AAEpE;AACA;AACA;AACA;AACA;AACA,EAAE,kBAAkB,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC;AACpE,CAAC,CAAA;;AAED,IAAA,gBAAc,GAAGiB,gBAAc;;;;;;;;;AC1C/B,MAAM,eAAEjB,aAAW,EAAE,GAAGjI,YAAmB,CAAA;AAC3C,MAAM;AACN,EAAE,uBAAuB;AACzB,EAAE,4BAA4B;AAC9B,EAAE,uBAAuB;AACzB,EAAE,wBAAwB;AAC1B,EAAE,8BAA8B;AAChC,EAAE,wBAAwB;AAC1B,EAAE,wBAAwB;AAC1B,EAAE,8BAA8B;AAChC,EAAE,+BAA+B;AACjC,EAAE,gCAAgC;AAClC,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAMkJ,oBAAkB,GAAG;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,qBAAqB,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,GAAG,EAAE;AAC1D,IAAIlB,aAAW,CAAC,MAAM,CAAC,uBAAuB,EAAE;AAChD,MAAM,KAAK;AACX,MAAM,WAAW;AACjB,MAAM,OAAO;AACb,KAAK,CAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,mBAAmB,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,4BAA4B,CAAC;;AAE7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,qBAAqB,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,EAAE;AAC7C,IAAIA,aAAW,CAAC,MAAM,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC;;AAEtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,4BAA4B,EAAE,CAAC,KAAK,EAAE,WAAW;AACnD,IAAIA,aAAW,CAAC,MAAM,CAAC,wBAAwB,EAAE;AACjD,MAAM,KAAK;AACX,MAAM,WAAW;AACjB,KAAK,CAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,2BAA2B,EAAE,CAAC,KAAK,EAAE,gBAAgB;AACvD,IAAIA,aAAW,CAAC,MAAM,CAAC,8BAA8B,EAAE;AACvD,MAAM,KAAK;AACX,MAAM,gBAAgB;AACtB,KAAK,CAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,0BAA0B,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,GAAG,EAAE;AAC/D,IAAIA,aAAW,CAAC,MAAM,CAAC,wBAAwB,EAAE;AACjD,MAAM,KAAK;AACX,MAAM,WAAW;AACjB,MAAM,OAAO;AACb,KAAK,CAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,mBAAmB,EAAE,CAAC,WAAW;AACnC,IAAIA,aAAW,CAAC,MAAM,CAAC,wBAAwB,EAAE,EAAE,WAAW,EAAE,CAAC;;AAEjE;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,qBAAqB,EAAE,CAAC,KAAK;AAC/B,IAAIA,aAAW,CAAC,MAAM,CAAC,8BAA8B,EAAE,EAAE,KAAK,EAAE,CAAC;;AAEjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,wBAAwB,EAAE,CAAC,KAAK,EAAE,iBAAiB;AACrD,IAAIA,aAAW,CAAC,MAAM,CAAC,+BAA+B,EAAE;AACxD,MAAM,KAAK;AACX,MAAM,iBAAiB;AACvB,KAAK,CAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,iBAAiB,EAAE,CAAC,KAAK,EAAE,WAAW;AACxC,IAAIA,aAAW,CAAC,MAAM,CAAC,gCAAgC,EAAE;AACzD,MAAM,KAAK;AACX,MAAM,WAAW;AACjB,KAAK,CAAC;AACN,CAAC,CAAA;;AAED,IAAA,oBAAc,GAAGkB,oBAAkB;;;;;;;;;AC/InC,MAAM,eAAElB,aAAW,EAAE,GAAGjI,YAAmB,CAAA;AAC3C,MAAM;AACN,EAAE,4BAA4B;AAC9B,EAAE,wBAAwB;AAC1B,EAAE,wBAAwB;AAC1B,EAAE,yBAAyB;AAC3B,EAAE,oBAAoB;AACtB,EAAE,qBAAqB;AACvB,EAAE,4BAA4B;AAC9B,EAAE,0BAA0B;AAC5B,EAAE,4BAA4B;AAC9B,EAAE,4BAA4B;AAC9B,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAMmJ,iBAAe,GAAG;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,EAAE,MAAMnB,aAAW,CAAC,MAAM,CAAC,4BAA4B,CAAC;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,EAAE,CAAC,UAAU;AACxB,IAAIA,aAAW,CAAC,MAAM,CAAC,wBAAwB,EAAE,EAAE,UAAU,EAAE,CAAC;;AAEhE;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,wBAAwB,CAAC;;AAE/D;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,yBAAyB,CAAC;;AAEjE;AACA;AACA;AACA,EAAE,MAAM,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ;AAC7B,IAAIA,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;;AAEpE;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,EAAE,CAAC,OAAO;AACzB,IAAIA,aAAW,CAAC,MAAM,CAAC,4BAA4B,EAAE,OAAO,CAAC;;AAE7D;AACA;AACA;AACA;AACA;AACA,EAAE,WAAW,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,0BAA0B,CAAC;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO;AACtC,IAAIA,aAAW,CAAC,MAAM,CAAC,4BAA4B,EAAE;AACrD,MAAM,KAAK;AACX,MAAM,IAAI;AACV,MAAM,OAAO;AACb,KAAK,CAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI;AAC7B,IAAIA,aAAW,CAAC,MAAM,CAAC,4BAA4B,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACrE,CAAC,CAAA;;AAED,IAAA,iBAAc,GAAGmB,iBAAe;;;;;;;;;ACvGhC,MAAM,eAAEnB,aAAW,EAAE,GAAGjI,YAAmB,CAAA;AAC3C,MAAM;AACN,EAAE,iBAAiB;AACnB,EAAE,4BAA4B;AAC9B,EAAE,4BAA4B;AAC9B,EAAE,uBAAuB;AACzB,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAMoJ,iBAAe,GAAG;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,IAAI,EAAE,CAAC,OAAO,KAAKpB,aAAW,CAAC,MAAM,CAAC,iBAAiB,EAAE,OAAO,CAAC;;AAEnE;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,4BAA4B,CAAC;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,cAAc,EAAE,CAAC,QAAQ,EAAE,KAAK;AAClC,IAAIA,aAAW,CAAC,MAAM,CAAC,4BAA4B,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;AAEzE;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,EAAE,CAAC,QAAQ;AACtB,IAAIA,aAAW,CAAC,MAAM,CAAC,uBAAuB,EAAE,QAAQ,CAAC;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,EAAE,CAAC,QAAQ,KAAK;AAC3B,IAAI,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAA;AACpD,IAAIA,aAAW,CAAC,EAAE,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAA;AACnD,IAAI,OAAO,MAAMA,aAAW,CAAC,cAAc,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAA;AAC5E,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,YAAY,EAAE,CAAC,QAAQ,KAAK;AAC9B,IAAI,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,UAAU,KAAK,QAAQ,CAAC,UAAU,CAAC,CAAA;AAChE,IAAIA,aAAW,CAAC,EAAE,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAA;AACvD,IAAI,OAAO;AACX,MAAMA,aAAW,CAAC,cAAc,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAA;AACrE,GAAG;AACH,CAAC,CAAA;;AAED,IAAA,iBAAc,GAAGoB,iBAAe;;;;;;;;ACtEhC,MAAM,eAAEpB,aAAW,EAAE,GAAGjI,YAAmB,CAAA;AAC3C,MAAM;AACN,EAAE,qBAAqB;AACvB,EAAE,oBAAoB;AACtB,EAAE,qBAAqB;AACvB,EAAE,uBAAuB;AACzB,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAMqJ,qBAAmB,GAAG;AAC5B,EAAE,mBAAmB,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM;AAClD,IAAIrB,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE;AAC9C,MAAM,KAAK;AACX,MAAM,WAAW;AACjB,MAAM,MAAM;AACZ,KAAK,CAAC;;AAEN,EAAE,kBAAkB,EAAE,CAAC,KAAK,EAAE,WAAW;AACzC,IAAIA,aAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;;AAEpE,EAAE,oBAAoB,EAAE,CAAC,KAAK;AAC9B,IAAIA,aAAW,CAAC,MAAM,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC;;AAExD,EAAE,qBAAqB,EAAE,CAAC,KAAK,EAAE,WAAW;AAC5C,IAAIA,aAAW,CAAC,MAAM,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AACvE,CAAC,CAAA;;AAED,IAAA,qBAAc,GAAGqB,qBAAmB;;;;;;;;;ACzBpC,MAAM,eAAErB,aAAW,EAAE,GAAGjI,YAAmB,CAAA;AAC3C,MAAM;AACN,EAAE,mBAAmB;AACrB,EAAE,kBAAkB;AACpB,EAAE,qBAAqB;AACvB,EAAE,iBAAiB;AACnB,EAAE,kBAAkB;AACpB,EAAE,mBAAmB;AACrB,CAAC,GAAGC,QAAoB,CAAA;;AAExB,MAAMsJ,YAAU,GAAG;AACnB;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,EAAE,MAAMtB,aAAW,CAAC,MAAM,CAAC,mBAAmB,CAAC;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,EAAE,CAAC,WAAW,EAAE,IAAI;AAC/B,IAAIA,aAAW,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;;AAEjE;AACA;AACA;AACA,EAAE,YAAY,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,qBAAqB,CAAC;;AAE/D;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,iBAAiB,CAAC;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,EAAE,CAAC,UAAU,EAAE,WAAW;AACrC,IAAIA,aAAW,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;;AAEvE;AACA;AACA;AACA,EAAE,UAAU,EAAE,MAAMA,aAAW,CAAC,MAAM,CAAC,mBAAmB,CAAC;AAC3D,CAAC,CAAA;;AAED,IAAA,YAAc,GAAGsB,YAAU;;;;;;;;;;;;;;;ACjD3B,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAGvJ,YAAmB,CAAA;AAClD,MAAMkI,gBAAc,GAAGjI,gBAA2B,CAAA;AAClD,MAAMkI,cAAY,GAAGjI,cAAyB,CAAA;AAC9C,MAAMkI,WAAS,GAAGjI,WAAsB,CAAA;AACxC,MAAMkI,SAAO,GAAGjI,SAAoB,CAAA;AACpC,MAAMkI,aAAW,GAAGjI,aAAwB,CAAA;AAC5C,MAAMkI,WAAS,GAAGjI,WAAsB,CAAA;AACxC,MAAMkI,WAAS,GAAGjI,WAAsB,CAAA;AACxC,MAAMkI,aAAW,GAAGjI,aAAwB,CAAA;AAC5C,MAAMkI,QAAM,GAAGjI,QAAmB,CAAA;AAClC,MAAMkI,aAAW,GAAGjI,aAAwB,CAAA;AAC5C,MAAMkI,UAAQ,GAAGjI,UAAqB,CAAA;AACtC,MAAMkI,YAAU,GAAGjI,YAAuB,CAAA;AAC1C,MAAMkI,WAAS,GAAGjI,WAAsB,CAAA;AACxC,MAAMkI,cAAY,GAAGjI,cAAyB,CAAA;AAC9C,MAAMkI,WAAS,GAAGjI,WAAsB,CAAA;AACxC,MAAMkI,QAAM,GAAGjI,QAAmB,CAAA;AAClC,MAAMkI,gBAAc,GAAGjI,gBAA2B,CAAA;AAClD,MAAMkI,oBAAkB,GAAGjI,oBAA+B,CAAA;AAC1D,MAAM,mBAAmB,GAAGC,qBAAgC,CAAA;AAC5D,MAAMiI,iBAAe,GAAGI,iBAA4B,CAAA;AACpD,MAAM,UAAU,GAAGC,YAAuB,CAAA;AAC1C,MAAMJ,iBAAe,GAAGK,iBAA4B,CAAA;;AAEpD;AACA,MAAMtI,QAAM,GAAGuI,QAAoB,CAAA;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,eAAa,CAAC,UAAU,GAAG,EAAE,EAAE;AACxC,EAAE,MAAM,OAAO,GAAG;AAClB;AACA,IAAI,KAAK,EAAE,IAAI;;AAEf,IAAI,QAAQ,EAAE,CAAC,KAAK,KAAK;AACzB,MAAM,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAA;AACrD,MAAM,OAAO,CAAC,KAAK,GAAG,KAAK,CAAA;AAC3B,KAAK;;AAEL;AACA,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK;AACvB,MAAM,WAAW,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AACxC,KAAK;AACL,IAAI,kBAAkB,EAAE,CAAC,IAAI,GAAG,IAAI,KAAK;AACzC;AACA,MAAM,IAAI,IAAI,EAAE,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAA;AACpD,KAAK;AACL,IAAI,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,WAAW,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;;AAEtE;AACA,IAAI,cAAc,EAAE1B,gBAAc;AAClC,IAAI,SAAS,EAAEC,cAAY;AAC3B,IAAI,MAAM,EAAEC,WAAS;AACrB,IAAI,MAAM,EAAEQ,UAAQ;AACpB,IAAI,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAGP,SAAO,EAAE;AACrC,IAAI,QAAQ,EAAEC,aAAW;AACzB,IAAI,MAAM,EAAEC,WAAS;AACrB,IAAI,OAAO,EAAEC,WAAS;AACtB,IAAI,SAAS,EAAEC,aAAW;AAC1B,IAAI,GAAG,EAAEC,QAAM;AACf,IAAI,QAAQ,EAAEC,aAAW;;AAEzB,IAAI,KAAK,EAAE;AACX,MAAM,QAAQ,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC9C,MAAM,YAAY,EAAE,CAAC,GAAG,KAAK;AAC7B,QAAQ;AACR,UAAU,OAAO,GAAG,KAAK,QAAQ;AACjC,WAAW,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AAClE,UAAU;AACV,UAAU,OAAO,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;AACxC,SAAA;AACA,OAAO;AACP,KAAK;;AAEL;AACA,IAAI,MAAM,EAAE,EAAE,GAAGvH,QAAM,EAAE;;AAEzB,IAAI,YAAY,EAAEA,QAAM,CAAC,MAAM;;AAE/B,IAAI,WAAW,EAAE,EAAE;;AAEnB;AACA,IAAI,GAAG,EAAE6H,QAAM;;AAEf;AACA,IAAI,OAAO,EAAEJ,YAAU;AACvB,IAAI,MAAM,EAAEC,WAAS;AACrB,IAAI,SAAS,EAAEC,cAAY;AAC3B,IAAI,OAAO,EAAEC,WAAS;AACtB,IAAI,WAAW,EAAEE,gBAAc;AAC/B,IAAI,eAAe,EAAEC,oBAAkB;AACvC,IAAI,gBAAgB,EAAE,mBAAmB;AACzC,IAAI,YAAY,EAAEC,iBAAe;AACjC,IAAI,OAAO,EAAE,UAAU;AACvB,IAAI,aAAa,EAAEC,iBAAe;;AAElC,IAAI,WAAW,EAAE;AACjB,MAAM,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK;AACvC,QAAQ,WAAW,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAA;AACxE,OAAO;AACP,KAAK;;AAEL;AACA,IAAI,GAAG,UAAU;AACjB,GAAG,CAAA;;AAEH,EAAE,OAAO,OAAO,CAAA;AAChB,CAAA;;AAEA;AACA;AACA;AACA;AACA,MAAMQ,gBAAc,GAAGD,eAAa,EAAE,CAAA;;AAEtC,IAAA,OAAc,GAAG,iBAAEA,eAAa,kBAAEC,gBAAc,EAAE;;;;;;;;AC7HlD;AACA,MAAM,gBAAgB,GAAG7J,kBAAwC,CAAA;AACjE,MAAM,qBAAqB,GAAGC,uBAA6C,CAAA;AAC3E,MAAM,mBAAmB,GAAGC,qBAA2C,CAAA;AACvE,MAAM,eAAe,GAAGC,iBAAuC,CAAA;AAC/D,MAAM,cAAc,GAAGC,gBAAsC,CAAA;AAC7D,MAAM,kBAAkB,GAAGC,oBAA0C,CAAA;AACrE,MAAM,kBAAkB,GAAGC,yBAA0C,EAAA,CAAA;AACrE,MAAM,gBAAgB,GAAGC,kBAAwC,CAAA;AACjE,MAAM,aAAa,GAAGC,oBAAqC,CAAA;AAC3D,MAAM,kBAAkB,GAAGC,oBAA0C,CAAA;AACrE,MAAM,iBAAiB,GAAGC,mBAAyC,CAAA;AACnE,MAAM,gBAAgB,GAAGC,kBAAwC,CAAA;AACjE,MAAM,mBAAmB,GAAGC,qBAA2C,CAAA;AACvE,MAAM,gBAAgB,GAAGC,kBAAwC,CAAA;AACjE,MAAM,aAAa,GAAGC,eAAqC,CAAA;AAC3D,MAAM,aAAa,GAAGC,eAAqC,CAAA;AAC3D,MAAM,yBAAyB,GAAGC,2BAAiD,CAAA;AACnF,MAAM,sBAAsB,GAAGC,wBAA8C,CAAA;AAC7E,MAAM,qBAAqB,GAAGC,uBAA6C,CAAA;AAC3E,MAAM,sBAAsB,GAAGC,wBAA8C,CAAA;AAC7E,MAAM,uBAAuB,GAAGqI,yBAA+C,CAAA;;AAE/E;AACA,MAAM,WAAW,GAAGC,kBAA8B,EAAA,CAAA;AACf;AACnC,MAAM,aAAa,GAAGE,eAAgC,CAAA;;AAEtD;AACA,MAAM,WAAW,GAAGG,UAAuB,CAAA;;AAE3C;AACA,MAAM,cAAc,GAAGC,gBAA+B,CAAA;AACtD,MAAM,YAAY,GAAGC,cAA6B,CAAA;AAClD,MAAM,SAAS,GAAGC,WAA0B,CAAA;AAC5C,MAAM,OAAO,GAAGC,SAAwB,CAAA;AACxC,MAAM,WAAW,GAAGC,aAA4B,CAAA;AAChD,MAAM,SAAS,GAAGC,WAA0B,CAAA;AAC5C,MAAM,SAAS,GAAGC,WAA0B,CAAA;AAC5C,MAAM,WAAW,GAAGC,aAA4B,CAAA;AAChD,MAAM,MAAM,GAAGC,QAAuB,CAAA;AACtC,MAAM,WAAW,GAAGC,aAA4B,CAAA;AAChD,MAAM,QAAQ,GAAGC,UAAyB,CAAA;AAC1C,MAAM,UAAU,GAAGC,YAA2B,CAAA;AAC9C,MAAM,SAAS,GAAGC,WAA0B,CAAA;AAC5C,MAAM,YAAY,GAAGC,cAA6B,CAAA;AAClD,MAAM,SAAS,GAAGC,WAA0B,CAAA;AAC5C,MAAM,MAAM,GAAGC,QAAuB,CAAA;AACtC,MAAM,cAAc,GAAGC,gBAA+B,CAAA;AACtD,MAAM,kBAAkB,GAAGC,oBAAmC,CAAA;AAC9D,MAAM,eAAe,GAAGC,iBAAgC,CAAA;AACxD,MAAM,eAAe,GAAGC,iBAAgC,CAAA;;AAExD;AACA,MAAM,MAAM,GAAGC,QAAmB,CAAA;;AAElC;AACA,MAAM,cAAc,GAAGC,qBAA2B,CAAA;AAClD,MAAM,cAAc,GAAGC,gBAA2B,CAAA;AAClD,MAAM,mBAAmB,GAAGC,0BAAgC,CAAA;;AAE5D;AACA,MAAM,wBAAwB,GAAGC,0BAA4C,CAAA;AAC7E,MAAM,oBAAoB,GAAGC,sBAAwC,CAAA;;AAErE;AACA,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAGC,OAAwB,CAAA;;AAElE,IAAA,QAAc,GAAG;AACjB;AACA,EAAE,gBAAgB;AAClB,EAAE,qBAAqB;AACvB,EAAE,mBAAmB;AACrB,EAAE,eAAe;AACjB,EAAE,cAAc;AAChB,EAAE,kBAAkB;AACpB,EAAE,kBAAkB;AACpB,EAAE,gBAAgB;AAClB,EAAE,aAAa;AACf,EAAE,kBAAkB;AACpB,EAAE,iBAAiB;AACnB,EAAE,gBAAgB;AAClB,EAAE,mBAAmB;AACrB,EAAE,gBAAgB;AAClB,EAAE,aAAa;AACf,EAAE,aAAa;AACf,EAAE,yBAAyB;AAC3B,EAAE,sBAAsB;AACxB,EAAE,qBAAqB;AACvB,EAAE,sBAAsB;AACxB,EAAE,uBAAuB;;AAEzB;AACA,EAAE,GAAG,WAAW;;AAEhB;AACA,EAAE,cAAc;AAChB,EAAE,YAAY;AACd,EAAE,SAAS;AACX,EAAE,OAAO;AACT,EAAE,WAAW;AACb,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,WAAW;AACb,EAAE,MAAM;AACR,EAAE,WAAW;AACb,EAAE,QAAQ;AACV,EAAE,UAAU;AACZ,EAAE,SAAS;AACX,EAAE,YAAY;AACd,EAAE,SAAS;AACX,EAAE,MAAM;AACR,EAAE,cAAc;AAChB,EAAE,kBAAkB;AACpB,EAAE,eAAe;AACjB,EAAE,eAAe;;AAEjB;AACA,EAAE,MAAM;;AAER;AACA,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,mBAAmB;;AAErB;AACA,EAAE,aAAa;AACf,EAAE,cAAc;;AAEhB;AACA,EAAE,WAAW;AACb,EAAE,aAAa;;AAEf;AACA,EAAE,wBAAwB;AAC1B,EAAE,oBAAoB;;AAEtB;AACA,EAAE,kBAAkB,EAAE,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACtE,CAAC,CAAA;;;;;;"}