From d5776d23c6674f2512dc65453fd88f8c7a48599b Mon Sep 17 00:00:00 2001 From: Prasanjeet-Microsoft Date: Fri, 10 Jan 2025 18:52:59 +0530 Subject: [PATCH 01/18] Downgrade msal[broker] to 1.24.0b1 and azure-mgmt-resource to 23.1.0b2 --- .../Deployment/scripts/aihub_scripts/requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ResearchAssistant/Deployment/scripts/aihub_scripts/requirements.txt b/ResearchAssistant/Deployment/scripts/aihub_scripts/requirements.txt index 0b492679..df3b71aa 100644 --- a/ResearchAssistant/Deployment/scripts/aihub_scripts/requirements.txt +++ b/ResearchAssistant/Deployment/scripts/aihub_scripts/requirements.txt @@ -2,7 +2,7 @@ azure-identity azure-keyvault-secrets azure-ai-resources azure-ai-ml==1.23.0 -msal[broker]==1.31.1 -azure-mgmt-resource +msal[broker]==1.24.0b1 +azure-mgmt-resource==23.1.0b2 azure-mgmt-cognitiveservices azure-mgmt-search \ No newline at end of file From 02f68caf27ee036dc91d75dadd235e7a88a8bf58 Mon Sep 17 00:00:00 2001 From: Prasanjeet-Microsoft Date: Mon, 13 Jan 2025 11:23:11 +0530 Subject: [PATCH 02/18] Downgrade azure-ai-ml package to version 1.17.1 to resolve package version conflicts (#283) --- .../Deployment/scripts/aihub_scripts/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ResearchAssistant/Deployment/scripts/aihub_scripts/requirements.txt b/ResearchAssistant/Deployment/scripts/aihub_scripts/requirements.txt index df3b71aa..397e2ec6 100644 --- a/ResearchAssistant/Deployment/scripts/aihub_scripts/requirements.txt +++ b/ResearchAssistant/Deployment/scripts/aihub_scripts/requirements.txt @@ -1,7 +1,7 @@ azure-identity azure-keyvault-secrets azure-ai-resources -azure-ai-ml==1.23.0 +azure-ai-ml==1.17.1 msal[broker]==1.24.0b1 azure-mgmt-resource==23.1.0b2 azure-mgmt-cognitiveservices From c39f6098e4f00ac61dce65c8320df3a5b89ea5c4 Mon Sep 17 00:00:00 2001 From: Prasanjeet-Microsoft Date: Mon, 13 Jan 2025 16:38:32 +0530 Subject: [PATCH 03/18] Upgrade azure-ai-ml package to compatible version --- .../Deployment/scripts/aihub_scripts/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ResearchAssistant/Deployment/scripts/aihub_scripts/requirements.txt b/ResearchAssistant/Deployment/scripts/aihub_scripts/requirements.txt index 397e2ec6..e5b81109 100644 --- a/ResearchAssistant/Deployment/scripts/aihub_scripts/requirements.txt +++ b/ResearchAssistant/Deployment/scripts/aihub_scripts/requirements.txt @@ -1,7 +1,7 @@ azure-identity azure-keyvault-secrets azure-ai-resources -azure-ai-ml==1.17.1 +azure-ai-ml==1.23.1 msal[broker]==1.24.0b1 azure-mgmt-resource==23.1.0b2 azure-mgmt-cognitiveservices From 94b4f4ce84d7ebcc27dd65fa7ade6aba07f8cb13 Mon Sep 17 00:00:00 2001 From: Pradheep-Microsoft Date: Mon, 13 Jan 2025 19:13:18 +0530 Subject: [PATCH 04/18] test: Research assistant backend unit test (#286) * Research assistant backend unit test * Research assistant backend unit test * Research assistant unit test pylint correction * pylint correction * research assistant .yml file * Update test_research_assistant.yml --------- Co-authored-by: Roopan-Microsoft <168007406+Roopan-Microsoft@users.noreply.github.com> --- .github/workflows/test_research_assistant.yml | 48 ++ ResearchAssistant/App/test_app.py | 575 ++++++++++++++++++ 2 files changed, 623 insertions(+) create mode 100644 .github/workflows/test_research_assistant.yml create mode 100644 ResearchAssistant/App/test_app.py diff --git a/.github/workflows/test_research_assistant.yml b/.github/workflows/test_research_assistant.yml new file mode 100644 index 00000000..1d97e92f --- /dev/null +++ b/.github/workflows/test_research_assistant.yml @@ -0,0 +1,48 @@ +name: Unit Tests - Research Assistant + +on: + push: + branches: [main, dev] + paths: + - 'ResearchAssistant/**' + pull_request: + branches: [main, dev] + types: + - opened + - ready_for_review + - reopened + - synchronize + paths: + - 'ResearchAssistant/**' + +jobs: + test_research_assistant: + name: Research Assistant Tests + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.11" + + - name: Install Backend Dependencies + run: | + cd ResearchAssistant/App + python -m pip install --upgrade pip + python -m pip install -r requirements.txt + python -m pip install coverage pytest pytest-cov pytest-asyncio + + - name: Run Backend Tests with Coverage + run: | + cd ResearchAssistant/App + python -m pytest -vv --cov=. --cov-report=xml --cov-report=html --cov-report=term-missing --cov-fail-under=80 --junitxml=coverage-junit.xml + - uses: actions/upload-artifact@v4 + with: + name: research-assistant-coverage + path: | + ResearchAssistant/App/coverage.xml + ResearchAssistant/App/coverage-junit.xml + ResearchAssistant/App/htmlcov/ diff --git a/ResearchAssistant/App/test_app.py b/ResearchAssistant/App/test_app.py new file mode 100644 index 00000000..6403b104 --- /dev/null +++ b/ResearchAssistant/App/test_app.py @@ -0,0 +1,575 @@ +import json +import os +from unittest.mock import MagicMock, Mock, patch +from flask import Flask +import pytest +import urllib + +from app import (extract_value, fetchUserGroups, + formatApiResponseNoStreaming, formatApiResponseStreaming, + generateFilterString, is_chat_model, parse_multi_columns, + prepare_body_headers_with_data, should_use_data, + stream_with_data, draft_document_generate) + +AZURE_SEARCH_SERVICE = os.environ.get("AZURE_SEARCH_SERVICE", "") +AZURE_OPENAI_KEY = os.environ.get("AZURE_OPENAI_KEY", "") +AZURE_SEARCH_PERMITTED_GROUPS_COLUMN = os.environ.get( + "AZURE_SEARCH_PERMITTED_GROUPS_COLUMN", "" +) + + +def test_parse_multi_columns(): + assert parse_multi_columns("a|b|c") == ["a", "b", "c"] + assert parse_multi_columns("a,b,c") == ["a", "b", "c"] + + +@patch("requests.get") +def test_success_single_page(mock_get): + # Mock response for a single page of groups + mock_get.return_value.status_code = 200 + mock_get.return_value.json.return_value = { + "value": [{"id": "group1"}, {"id": "group2"}] + } + + userToken = "valid_token" + result = fetchUserGroups(userToken) + expected = [{"id": "group1"}, {"id": "group2"}] + assert result == expected + + +def test_is_chat_model_with_gpt4(): + with patch("app.AZURE_OPENAI_MODEL_NAME", "gpt-4"): + assert is_chat_model() is True + + +def test_is_chat_model_with_gpt35_turbo_4k(): + with patch("app.AZURE_OPENAI_MODEL_NAME", "gpt-35-turbo-4k"): + assert is_chat_model() is True + + +def test_is_chat_model_with_gpt35_turbo_16k(): + with patch("app.AZURE_OPENAI_MODEL_NAME", "gpt-35-turbo-16k"): + assert is_chat_model() is True + + +def test_is_chat_model_with_other_model(): + with patch("app.AZURE_OPENAI_MODEL_NAME", "some-other-model"): + assert is_chat_model() is False + + +def test_should_use_data_with_service_and_key(): + with patch("app.AZURE_SEARCH_SERVICE", "my-service"): + with patch("app.AZURE_SEARCH_KEY", "my-key"): + with patch("app.DEBUG_LOGGING", False): + assert should_use_data() is True + + +def test_should_use_data_with_service_no_key(): + with patch("app.AZURE_SEARCH_SERVICE", "my-service"): + with patch("app.AZURE_SEARCH_KEY", None): + assert should_use_data() is False + + +def test_should_use_data_with_key_no_service(): + with patch("app.AZURE_SEARCH_SERVICE", None): + with patch("app.AZURE_SEARCH_KEY", "my-key"): + assert should_use_data() is False + + +def test_should_use_data_with_neither(): + with patch("app.AZURE_SEARCH_SERVICE", None): + with patch("app.AZURE_SEARCH_KEY", None): + assert should_use_data() is False + + +def test_should_use_data_with_debug_logging(): + with patch("app.AZURE_SEARCH_SERVICE", "my-service"): + with patch("app.AZURE_SEARCH_KEY", "my-key"): + with patch("app.DEBUG_LOGGING", True): + with patch("logging.debug") as mock_debug: + assert should_use_data() is True + mock_debug.assert_called_once_with("Using Azure Cognitive Search") + + +@patch("requests.get") +def test_success_multiple_pages(mock_get): + # Mock response for multiple pages of groups + mock_get.side_effect = [ + _mock_response( + 200, + { + "value": [{"id": "group1"}, {"id": "group2"}], + "@odata.nextLink": "https://next.page", + }, + ), + _mock_response(200, {"value": [{"id": "group3"}]}), + ] + + userToken = "valid_token" + result = fetchUserGroups(userToken) + expected = [{"id": "group1"}, {"id": "group2"}, {"id": "group3"}] + assert result == expected + + +@patch("requests.get") +def test_non_200_status_code(mock_get): + # Mock response with a 403 Forbidden error + mock_get.return_value.status_code = 403 + mock_get.return_value.text = "Forbidden" + + userToken = "valid_token" + result = fetchUserGroups(userToken) + expected = [] + assert result == expected + + +@patch("requests.get") +def test_exception_handling(mock_get): + # Mock an exception when making the request + mock_get.side_effect = Exception("Network error") + + userToken = "valid_token" + result = fetchUserGroups(userToken) + expected = [] + assert result == expected + + +@patch("requests.get") +def test_no_groups_found(mock_get): + # Mock response with no groups found + mock_get.return_value.status_code = 200 + mock_get.return_value.json.return_value = {"value": []} + + userToken = "valid_token" + result = fetchUserGroups(userToken) + expected = [] + assert result == expected + + +def _mock_response(status_code, json_data): + """Helper method to create a mock response object.""" + mock_resp = Mock() + mock_resp.status_code = status_code + mock_resp.json.return_value = json_data + return mock_resp + + +@patch("app.fetchUserGroups") +def test_generateFilterString(mock_fetchUserGroups): + mock_fetchUserGroups.return_value = [{"id": "1"}, {"id": "2"}] + userToken = "fake_token" + + filter_string = generateFilterString(userToken) + assert filter_string == "None/any(g:search.in(g, '1, 2'))" + + +def test_prepare_body_headers_with_data(): + # Create a mock request + mock_request = MagicMock() + mock_request.json = {"messages": ["Hello, world!"], "index_name": "grants"} + mock_request.headers = {"X-MS-TOKEN-AAD-ACCESS-TOKEN": "mock_token"} + + with patch("app.AZURE_OPENAI_TEMPERATURE", 0.7), patch( + "app.AZURE_OPENAI_MAX_TOKENS", 100 + ), patch("app.AZURE_OPENAI_TOP_P", 0.9), patch( + "app.AZURE_SEARCH_SERVICE", "my-service" + ), patch( + "app.AZURE_SEARCH_KEY", "my-key" + ), patch( + "app.DEBUG_LOGGING", True + ), patch( + "app.AZURE_SEARCH_PERMITTED_GROUPS_COLUMN", "group_column" + ), patch( + "app.AZURE_SEARCH_ENABLE_IN_DOMAIN", "true" + ), patch( + "app.AZURE_SEARCH_TOP_K", 5 + ), patch( + "app.AZURE_SEARCH_STRICTNESS", 1 + ): + + body, headers = prepare_body_headers_with_data(mock_request) + print("indexName", body["dataSources"][0]["parameters"]) + assert body["messages"] == ["Hello, world!"] + assert body["temperature"] == 0.7 + assert body["max_tokens"] == 100 + assert body["top_p"] == 0.9 + assert body["dataSources"] + assert body["dataSources"][0]["type"] == "AzureCognitiveSearch" + assert ( + body["dataSources"][0]["parameters"]["endpoint"] + == "https://my-service.search.windows.net" + ) + assert body["dataSources"][0]["parameters"]["key"] == "my-key" + assert body["dataSources"][0]["parameters"]["inScope"] is True + assert body["dataSources"][0]["parameters"]["topNDocuments"] == 5 + assert body["dataSources"][0]["parameters"]["strictness"] == 1 + + assert headers["Content-Type"] == "application/json" + assert headers["x-ms-useragent"] == "GitHubSampleWebApp/PublicAPI/3.0.0" + + +def test_invalid_datasource_type(): + mock_request = MagicMock() + mock_request.json = {"messages": ["Hello, world!"], "index_name": "grants"} + + with patch("app.DATASOURCE_TYPE", "InvalidType"): + with pytest.raises(Exception) as exc_info: + prepare_body_headers_with_data(mock_request) + assert "DATASOURCE_TYPE is not configured or unknown: InvalidType" in str( + exc_info.value + ) + + +# stream_with_data function +def mock_format_as_ndjson(data): + # Ensure data is in a JSON serializable format (like a list or dict) + if isinstance(data, set): + data = list(data) # Convert set to list + return json.dumps(data) + + +def test_stream_with_data_azure_success(): + body = { + "messages": [ + { + "id": "0e29210d-5584-38df-df76-2dfb40147ee7", + "role": "user", + "content": "influenza and its effets ", + "date": "2025-01-09T04:42:25.896Z", + }, + { + "id": "ab42add2-0fba-d6bb-47c0-5d11b7cdb83a", + "role": "user", + "content": "influenza and its effectd", + "date": "2025-01-09T10:14:11.638Z", + }, + { + "id": "1f6dc8e2-c5fe-ce77-b28c-5ec9ba80e94d", + "role": "user", + "content": "influenza and its effects", + "date": "2025-01-09T10:34:15.187Z", + }, + ], + "temperature": 0.0, + "max_tokens": 1000, + "top_p": 1.0, + "stop": "None", + "stream": True, + "dataSources": [ + { + "type": "AzureCognitiveSearch", + "parameters": { + "endpoint": "https://ututut-cs.search.windows.net", + "key": "", + "indexName": "articlesindex", + "fieldsMapping": { + "contentFields": ["content"], + "titleField": "title", + "urlField": "publicurl", + "filepathField": "chunk_id", + "vectorFields": ["titleVector", "contentVector"], + }, + "inScope": False, + "topNDocuments": "5", + "queryType": "vectorSemanticHybrid", + "semanticConfiguration": "my-semantic-config", + "roleInformation": "You are an AI assistant that helps people find information.", + "filter": "None", + "strictness": 3, + "embeddingDeploymentName": "text-embedding-ada-002", + }, + } + ], + } + headers = { + "Content-Type": "application/json", + "api-key": "", + "x-ms-useragent": "GitHubSampleWebApp/PublicAPI/3.0.0", + } + history_metadata = {} + + with patch("requests.Session.post") as mock_post: + mock_response = MagicMock() + mock_response.iter_lines.return_value = [ + b'data: {"id":"1","model":"gpt-35-turbo-16k","created":1736397875,"object":"extensions.chat.completion.chunk","choices":[{"index":0,"delta":{"context":{"messages":[{"role":"tool","content":"hello","end_turn":false}]}},"end_turn":false,"finish_reason":"None"}]}' + ] + mock_response.headers = {"apim-request-id": "test-request-id"} + mock_post.return_value.__enter__.return_value = mock_response + + with patch("app.format_as_ndjson", side_effect=mock_format_as_ndjson): + results = list( + stream_with_data( + body, headers, "https://mock-endpoint.com", history_metadata + ) + ) # Convert generator to a list + print(results, "result test case") + assert len(results) == 1 + + +# Mock constants +USE_AZURE_AI_STUDIO = "true" +AZURE_OPENAI_PREVIEW_API_VERSION = "2023-06-01-preview" +DEBUG_LOGGING = False +AZURE_SEARCH_SERVICE = os.environ.get("AZURE_SEARCH_SERVICE", "mysearchservice") + + +def test_stream_with_data_azure_error(): + body = { + "messages": [ + { + "id": "0e29210d-5584-38df-df76-2dfb40147ee7", + "role": "user", + "content": "influenza and its effets ", + "date": "2025-01-09T04:42:25.896Z", + }, + { + "id": "ab42add2-0fba-d6bb-47c0-5d11b7cdb83a", + "role": "user", + "content": "influenza and its effectd", + "date": "2025-01-09T10:14:11.638Z", + }, + { + "id": "1f6dc8e2-c5fe-ce77-b28c-5ec9ba80e94d", + "role": "user", + "content": "influenza and its effects", + "date": "2025-01-09T10:34:15.187Z", + }, + ], + "temperature": 0.0, + "max_tokens": 1000, + "top_p": 1.0, + "stop": "None", + "stream": True, + "dataSources": [ + { + "type": "AzureCognitiveSearch", + "parameters": { + "endpoint": "https://ututut-cs.search.windows.net", + "key": "", + "indexName": "articlesindex", + "fieldsMapping": { + "contentFields": ["content"], + "titleField": "title", + "urlField": "publicurl", + "filepathField": "chunk_id", + "vectorFields": ["titleVector", "contentVector"], + }, + "inScope": False, + "topNDocuments": "5", + "queryType": "vectorSemanticHybrid", + "semanticConfiguration": "my-semantic-config", + "roleInformation": "You are an AI assistant that helps people find information.", + "filter": "None", + "strictness": 3, + "embeddingDeploymentName": "text-embedding-ada-002", + }, + } + ], + } + + if USE_AZURE_AI_STUDIO.lower() == "true": + body = body + headers = { + "Content-Type": "application/json", + "api-key": "", + "x-ms-useragent": "GitHubSampleWebApp/PublicAPI/3.0.0", + } + history_metadata = {} + + with patch("requests.Session.post") as mock_post: + # if USE_AZURE_AI_STUDIO.lower() == "true": + # body = mock_body + mock_response = MagicMock() + mock_response.iter_lines.return_value = [ + b'data: {"id":"1","model":"gpt-35-turbo-16k","created":1736397875,"object":"extensions.chat.completion.chunk","choices":[{"index":0,"delta":{"context":{"messages":[{"role":"tool","content":"hello","end_turn":false}]}},"end_turn":false,"finish_reason":"None"}]}' + ] + mock_response.headers = {"apim-request-id": "test-request-id"} + mock_post.return_value.__enter__.return_value = mock_response + + with patch("app.format_as_ndjson", side_effect=mock_format_as_ndjson): + results = list( + stream_with_data( + body, headers, "https://mock-endpoint.com", history_metadata + ) + ) # Convert generator to a list + print(results, "result test case") + assert len(results) == 1 + + +def test_formatApiResponseNoStreaming(): + rawResponse = { + "id": "1", + "model": "gpt-3", + "created": 123456789, + "object": "response", + "choices": [ + { + "message": { + "context": {"messages": [{"content": "Hello from tool"}]}, + "content": "Hello from assistant", + } + } + ], + } + response = formatApiResponseNoStreaming(rawResponse) + assert "choices" in response + assert response["choices"][0]["messages"][0]["content"] == "Hello from tool" + + +def test_formatApiResponseStreaming(): + rawResponse = { + "id": "1", + "model": "gpt-3", + "created": 123456789, + "object": "response", + "choices": [{"delta": {"role": "assistant", "content": "Hello"}}], + } + + response = formatApiResponseStreaming(rawResponse) + + # Print response to debug + print(response) # Optional for debugging, remove in production + + assert "choices" in response + assert "messages" in response["choices"][0] + assert len(response["choices"][0]["messages"]) == 1 + + # Check if the content is included under the correct structure + delta_content = response["choices"][0]["messages"][0]["delta"] + assert "role" in delta_content # Check for role + assert ( + "content" not in delta_content + ) # content should not be present as per current logic + + +def test_extract_value(): + text = "'code': 'content_filter', 'status': '400'" + assert extract_value("code", text) == "content_filter" + assert extract_value("status", text) == "400" + assert extract_value("unknown", text) == "N/A" + + +app = Flask(__name__) + + +app.add_url_rule("/draft_document/generate_section", "draft_document_generate", draft_document_generate, methods=["POST"]) + + +# Helper to create a mock response +class MockResponse: + def __init__(self, json_data, status_code): + self.json_data = json_data + self.status_code = status_code + + def read(self): + return json.dumps(self.json_data).encode('utf-8') + + def getcode(self): + return self.status_code + + +@pytest.fixture +def client(): + with app.test_client() as client: + yield client + + +# Test the successful response case +@patch("urllib.request.urlopen") +@patch("os.environ.get") +def test_draft_document_generate_success(mock_os_environ, mock_urlopen, client): + mock_os_environ.side_effect = lambda key: { + "AI_STUDIO_DRAFT_FLOW_ENDPOINT": "https://fakeurl.com", + "AI_STUDIO_DRAFT_FLOW_API_KEY": "fakeapikey", + "AI_STUDIO_DRAFT_FLOW_DEPLOYMENT_NAME": "fake_deployment_name" + }.get(key) + + # Mock the successful API response + mock_urlopen.return_value = MockResponse({"reply": "Generated content for section."}, 200) + + # Sample input payload + payload = { + "grantTopic": "Artificial Intelligence", + "sectionTitle": "Introduction", + "sectionContext": "" + } + + response = client.post("/draft_document/generate_section", json=payload) + + # Assertions + assert response.status_code == 200 + response_json = response.get_json() + assert "content" in response_json + assert response_json["content"] == "Generated content for section." + + +# Test the scenario where "sectionContext" is provided +@patch("urllib.request.urlopen") +@patch("os.environ.get") +def test_draft_document_generate_with_context(mock_os_environ, mock_urlopen, client): + mock_os_environ.side_effect = lambda key: { + "AI_STUDIO_DRAFT_FLOW_ENDPOINT": "https://fakeurl.com", + "AI_STUDIO_DRAFT_FLOW_API_KEY": "fakeapikey", + "AI_STUDIO_DRAFT_FLOW_DEPLOYMENT_NAME": "fake_deployment_name" + }.get(key) + + # Mock the successful API response + mock_urlopen.return_value = MockResponse({"reply": "Generated content with context."}, 200) + + payload = { + "grantTopic": "Quantum Computing", + "sectionTitle": "Background", + "sectionContext": "The section should explain the significance of quantum computing." + } + + response = client.post("/draft_document/generate_section", json=payload) + + # Assertions + assert response.status_code == 200 + response_json = response.get_json() + assert "content" in response_json + assert response_json["content"] == "Generated content with context." + + +@pytest.fixture +def clients(): + app = Flask(__name__) + app.route('/draft_document/generate_section', methods=['POST'])(draft_document_generate) + client = app.test_client() + yield client + + +@patch("urllib.request.urlopen") +@patch("os.environ.get") +def test_draft_document_generate_http_error(mock_env_get, mock_urlopen, client): + # Mock environment variables + mock_env_get.side_effect = lambda key: { + "AI_STUDIO_DRAFT_FLOW_ENDPOINT": "http://mock_endpoint", + "AI_STUDIO_DRAFT_FLOW_API_KEY": "mock_api_key", + "AI_STUDIO_DRAFT_FLOW_DEPLOYMENT_NAME": "mock_deployment" + }.get(key) + + # Mock urllib.request.urlopen to raise an HTTPError + error_response = json.dumps({"error": {"message": "content_filter", "code": "400"}}).encode('utf-8') + mock_urlopen.side_effect = urllib.error.HTTPError( + url="http://mock_endpoint", + code=400, + msg="Bad Request", + hdrs=None, + fp=MagicMock(read=MagicMock(return_value=error_response)) + ) + + # Mock request data + request_data = { + "grantTopic": "Climate Change Research", + "sectionTitle": "Introduction", + "sectionContext": "This research focuses on reducing carbon emissions." + } + + response = client.post( + "/draft_document/generate_section", + data=json.dumps(request_data), + content_type="application/json", + ) + + assert response.status_code == 200 From b785eb64e45b13053d621ef0990d8db2dd98bdaa Mon Sep 17 00:00:00 2001 From: Pradheep-Microsoft Date: Mon, 20 Jan 2025 14:55:23 +0530 Subject: [PATCH 05/18] fix: Research Assistant Deployment Issue - Prompt Flow version update (#287) * Prompt flow version update * Add files via upload * Add files via upload * Add files via upload --------- Co-authored-by: Roopan-Microsoft <168007406+Roopan-Microsoft@users.noreply.github.com> --- .../scripts/aihub_scripts/flows/DraftFlow.zip | Bin 14389 -> 14389 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ResearchAssistant/Deployment/scripts/aihub_scripts/flows/DraftFlow.zip b/ResearchAssistant/Deployment/scripts/aihub_scripts/flows/DraftFlow.zip index 29818bd691257cea5a086a61c568a52745602f05..82e5bcf2b475be75c8778c62c165313932f4dd23 100644 GIT binary patch delta 1597 zcmZ`(T}V@582-+W)6-~8JI?Jp(>2%ZO!wpcU|VD4~EjAdQC#q>A>0I}CI(yrglH(PlSMDemqG|!|A(Kgehxe3~n20CK*QEIAr z#*gM5K0SgyIA+zr*uEo&tZQJW#uG(ZjzgUSgZct~J(1Mpe6AJVsvI=X-m2T$ghx3Z zEeQTSdx0LDt*$l{JgO5Liel1DmwpIg_eotLjk{x-WWjUZKppU^hK_Ql6cnETTI1@~ z&VF)fgWBW$uFW(SIBcMqfbLxk?(D&6aEc5QBunkA6jAml_YDtXn*hKG+{Q>2v+_^e z-$7QMVS2zULyL!t4#_`G^f_)} z)|r6RiAsQ0nW&Z9%;`^yfCAtzzAc=o@JbcRB@!jwdR|-xli0)@34qrm3cAo%qS++U z-OAtk<1P~Y>)v032AiWMk^TqsWH^_7j5pyIwiqoEEoQIFBB#1o zxjj}5EJt6bj^P>-ZbC3M(Cat!Up>|5VYHM4dv2mX{s*+Fkzvnc92n delta 1663 zcmZ`(ZAepL6n^hVyIwWhY;NAW>6|m2ZtA}LiZUZe%nFOdOrj`o5RoR45C|$3^figM zABACP^~?MrYf4cP6jWxVRG7cYUlI1B`VmD?z307mb9b$cv2pHsp7We@p0h}2q%)(b zk>iahg}g1bSNGzuut^9#C~miQbcKHkhZuhR_;4#eAO>p7_ICvfI=X^eNA*FMbLLg4 zv*G!(@~KG08-L)npG8fLLQ31aCx?v)p-l2wAs%3Kt$1Fn7EsOvCDx~Y*YTHuIMv{h z5g|T8h~aw$lm%+`80v(6qQ*kh3>jPuPop!Ln_^M@S{tWC_ZaMWpWm9g8bu%CQ>GhA z8M}GIf6ADkOt*QrFrb#1Ge2Z_8lBE@;_GG+4+nC9G@9^P>SmP$$>GF<)`IAh8~3cL z!0DV_qAEMs9}e*mH9l|KMzz6k^YhBpI?eVL5y(k2I1v6N98}|yV>_iLaeUN~Zvatb zuCbRJk4P50p=w=J9ngMqeAMwWH1(!ry>LO@WR{CGB|&u2T_c=Rqf+S^Ha&j(mofsP zy8K`W-?#qecLHVy;}t%unA6N7mZwhH&ez18a)F;x`RjGQ7=N#>h$&%MBe&wOdu6kA zTNs4GEJ7BP9qVPX41$UewjPA2H_Ehgd5BT;7Jrn z9lT8P9;i4TqM9itnUrr>5gOMg=`+rMpN3 z)6VNEWG>C5$! zPn1IQbPGPRG%~fsKH4n`_+@25(g|#goGpK;*R9d_o+4{2l9YsV91Di}Mo7JH zq^?N=v^&81ff5fKYy4{9UT41wmJTwD^E^UX8d%{v{H4legjgqExW z+?#k*aMe?z&u-l$%;6M-R%@86im}b(@WRC>GB@-_=B|(~u8}UZaw^>jxAD|siPh-; U&V)y1y=C}?r+^2^*j8=&3x|o0O8@`> From 07bac06ee1d78ec3b9ef39ca477c040f9bfdbc40 Mon Sep 17 00:00:00 2001 From: Pavan-Microsoft Date: Wed, 22 Jan 2025 16:45:44 +0530 Subject: [PATCH 06/18] Implement Consistent Versioning and Tagging for Accelerator Images (#288) --- .github/workflows/build-docker.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index 16c01da6..83298ce3 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -48,13 +48,17 @@ jobs: id: date run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT + - name: Determine Tag Name Based on Branch + id: determine_tag + run: echo "tagname=${{ github.ref_name == 'main' && 'latest' || github.ref_name == 'dev' && 'dev' || github.ref_name == 'demo' && 'demo' || github.head_ref || 'default' }}" >> $GITHUB_OUTPUT + - name: Build Docker Image and optionally push uses: docker/build-push-action@v6 with: context: . file: ${{ inputs.dockerfile }} push: ${{ inputs.push }} - cache-from: type=registry,ref=${{ inputs.registry }}/${{ inputs.app_name}}:${{ github.ref_name == 'main' && 'latest' || github.ref_name == 'dev' && 'dev' || github.ref_name == 'demo' && 'demo' || 'latest' }} + cache-from: type=registry,ref=${{ inputs.registry }}/${{ inputs.app_name}}:${{ steps.determine_tag.outputs.tagname }} tags: | - ${{ inputs.registry }}/${{ inputs.app_name}}:${{ github.ref_name == 'main' && 'latest' || github.ref_name == 'dev' && 'dev' || github.ref_name == 'demo' && 'demo' || 'latest' }} - ${{ inputs.registry }}/${{ inputs.app_name}}:${{ steps.date.outputs.date }}_${{ github.run_number }} \ No newline at end of file + ${{ inputs.registry }}/${{ inputs.app_name}}:${{ steps.determine_tag.outputs.tagname }} + ${{ inputs.registry }}/${{ inputs.app_name}}:${{ steps.determine_tag.outputs.tagname }}_${{ steps.date.outputs.date }}_${{ github.run_number }} \ No newline at end of file From 0d82faa9492fcc71001b43f09e3baf064d2f5435 Mon Sep 17 00:00:00 2001 From: Pavan-Microsoft Date: Mon, 27 Jan 2025 14:13:58 +0530 Subject: [PATCH 07/18] Dev image version check --- ClientAdvisor/App/.env.sample | 2 +- ClientAdvisor/AzureFunction/local.settings.json | 2 +- ResearchAssistant/App/.env.sample | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ClientAdvisor/App/.env.sample b/ClientAdvisor/App/.env.sample index 50f33c7e..3bdc5e61 100644 --- a/ClientAdvisor/App/.env.sample +++ b/ClientAdvisor/App/.env.sample @@ -126,4 +126,4 @@ SQLDB_DATABASE= SQLDB_USERNAME= SQLDB_PASSWORD= SQLDB_DRIVER= -VITE_POWERBI_EMBED_URL= \ No newline at end of file +VITE_POWERBI_EMBED_URL= diff --git a/ClientAdvisor/AzureFunction/local.settings.json b/ClientAdvisor/AzureFunction/local.settings.json index 19abcae3..426ff406 100644 --- a/ClientAdvisor/AzureFunction/local.settings.json +++ b/ClientAdvisor/AzureFunction/local.settings.json @@ -6,4 +6,4 @@ "AzureWebJobsStorage": "UseDevelopmentStorage=true", "PYTHON_ENABLE_INIT_INDEXING": "1" } -} \ No newline at end of file +} diff --git a/ResearchAssistant/App/.env.sample b/ResearchAssistant/App/.env.sample index 0914b488..b1feca48 100644 --- a/ResearchAssistant/App/.env.sample +++ b/ResearchAssistant/App/.env.sample @@ -39,4 +39,4 @@ AZURE_COSMOSDB_MONGO_VCORE_CONTENT_COLUMNS= AZURE_COSMOSDB_MONGO_VCORE_VECTOR_COLUMNS= AI_STUDIO_DRAFT_FLOW_API_KEY= AI_STUDIO_CHAT_FLOW_API_KEY= -AZURE_OPENAI_API_TYPE= \ No newline at end of file +AZURE_OPENAI_API_TYPE= From fb30c09270dc99e8c969168a3b123d18ab5ed04e Mon Sep 17 00:00:00 2001 From: Pavan-Microsoft Date: Mon, 27 Jan 2025 14:16:58 +0530 Subject: [PATCH 08/18] Revert "feat: Dev Image Version Check Test" --- ClientAdvisor/App/.env.sample | 2 +- ClientAdvisor/AzureFunction/local.settings.json | 2 +- ResearchAssistant/App/.env.sample | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ClientAdvisor/App/.env.sample b/ClientAdvisor/App/.env.sample index 3bdc5e61..50f33c7e 100644 --- a/ClientAdvisor/App/.env.sample +++ b/ClientAdvisor/App/.env.sample @@ -126,4 +126,4 @@ SQLDB_DATABASE= SQLDB_USERNAME= SQLDB_PASSWORD= SQLDB_DRIVER= -VITE_POWERBI_EMBED_URL= +VITE_POWERBI_EMBED_URL= \ No newline at end of file diff --git a/ClientAdvisor/AzureFunction/local.settings.json b/ClientAdvisor/AzureFunction/local.settings.json index 426ff406..19abcae3 100644 --- a/ClientAdvisor/AzureFunction/local.settings.json +++ b/ClientAdvisor/AzureFunction/local.settings.json @@ -6,4 +6,4 @@ "AzureWebJobsStorage": "UseDevelopmentStorage=true", "PYTHON_ENABLE_INIT_INDEXING": "1" } -} +} \ No newline at end of file diff --git a/ResearchAssistant/App/.env.sample b/ResearchAssistant/App/.env.sample index b1feca48..0914b488 100644 --- a/ResearchAssistant/App/.env.sample +++ b/ResearchAssistant/App/.env.sample @@ -39,4 +39,4 @@ AZURE_COSMOSDB_MONGO_VCORE_CONTENT_COLUMNS= AZURE_COSMOSDB_MONGO_VCORE_VECTOR_COLUMNS= AI_STUDIO_DRAFT_FLOW_API_KEY= AI_STUDIO_CHAT_FLOW_API_KEY= -AZURE_OPENAI_API_TYPE= +AZURE_OPENAI_API_TYPE= \ No newline at end of file From 2adf389582b93269f1916f5cf6ad9a9773e72f93 Mon Sep 17 00:00:00 2001 From: pradeepjha-microsoft Date: Thu, 30 Jan 2025 21:06:05 +0530 Subject: [PATCH 09/18] update history method changes (#295) --- ClientAdvisor/App/frontend/src/api/api.ts | 54 +++++++++++++++-------- 1 file changed, 35 insertions(+), 19 deletions(-) diff --git a/ClientAdvisor/App/frontend/src/api/api.ts b/ClientAdvisor/App/frontend/src/api/api.ts index b59dceb0..acd20736 100644 --- a/ClientAdvisor/App/frontend/src/api/api.ts +++ b/ClientAdvisor/App/frontend/src/api/api.ts @@ -201,31 +201,47 @@ export const selectUser = async (options: ClientIdRequest): Promise => return new Response(null, { status: 500, statusText: 'Internal Server Error' }); } }; - +function isLastObjectNotEmpty(arr:any) + { + if (arr.length === 0) return false; + // Handle empty array case + const lastObj = arr[arr.length - 1]; + return Object.keys(lastObj).length > 0; + } export const historyUpdate = async (messages: ChatMessage[], convId: string): Promise => { - const response = await fetch('/history/update', { - method: 'POST', - body: JSON.stringify({ - conversation_id: convId, - messages: messages - }), - headers: { - 'Content-Type': 'application/json' - } - }) - .then(async res => { - return res + if(isLastObjectNotEmpty(messages)){ + const response = await fetch('/history/update', { + method: 'POST', + body: JSON.stringify({ + conversation_id: convId, + messages: messages + }), + headers: { + 'Content-Type': 'application/json' + } }) - .catch(_err => { - console.error('There was an issue fetching your data.') + .then(async res => { + return res + }) + .catch(_err => { + console.error('There was an issue fetching your data.') + const errRes: Response = { + ...new Response(), + ok: false, + status: 500 + } + return errRes + }) + return response + } + else{ const errRes: Response = { ...new Response(), ok: false, status: 500 } - return errRes - }) - return response + return errRes + } } export const historyDelete = async (convId: string): Promise => { @@ -425,4 +441,4 @@ export const historyMessageFeedback = async (messageId: string, feedback: string // const data = await response.text(); // console.log('Response:', data); -// }; \ No newline at end of file +// }; From 951fa25a184e0d8a509a49e77a85840dec2e5353 Mon Sep 17 00:00:00 2001 From: AjitPadhi-Microsoft Date: Thu, 6 Feb 2025 20:05:38 +0530 Subject: [PATCH 10/18] fix: Fixed Asset and retirement update query (#332) * updated Asset and retirement updated code * minor fix on meeting days * fixed test case * optimized query --- ClientAdvisor/App/app.py | 80 +++++++++++++++++++++-------- ClientAdvisor/App/tests/test_app.py | 4 ++ 2 files changed, 62 insertions(+), 22 deletions(-) diff --git a/ClientAdvisor/App/app.py b/ClientAdvisor/App/app.py index e8221243..2755d75b 100644 --- a/ClientAdvisor/App/app.py +++ b/ClientAdvisor/App/app.py @@ -1588,35 +1588,72 @@ def get_users(): if len(rows) <= 6: # update ClientMeetings,Assets,Retirement tables sample data to current date cursor = conn.cursor() - cursor.execute( - """select DATEDIFF(d,CAST(max(StartTime) AS Date),CAST(GETDATE() AS Date)) + 3 as ndays from ClientMeetings""" - ) - rows = cursor.fetchall() - ndays = 0 - for row in rows: - ndays = row["ndays"] - sql_stmt1 = f"UPDATE ClientMeetings SET StartTime = dateadd(day,{ndays},StartTime), EndTime = dateadd(day,{ndays},EndTime)" - cursor.execute(sql_stmt1) - conn.commit() - nmonths = int(ndays / 30) - if nmonths > 0: - sql_stmt1 = ( - f"UPDATE Assets SET AssetDate = dateadd(MONTH,{nmonths},AssetDate)" + combined_stmt = """ + WITH MaxDates AS ( + SELECT + MAX(CAST(StartTime AS Date)) AS MaxClientMeetingDate, + MAX(AssetDate) AS MaxAssetDate, + MAX(StatusDate) AS MaxStatusDate + FROM + (SELECT StartTime, NULL AS AssetDate, NULL AS StatusDate FROM ClientMeetings + UNION ALL + SELECT NULL AS StartTime, AssetDate, NULL AS StatusDate FROM Assets + UNION ALL + SELECT NULL AS StartTime, NULL AS AssetDate, StatusDate FROM Retirement) AS Combined + ), + Today AS ( + SELECT GETDATE() AS TodayDate + ), + DaysDifference AS ( + SELECT + DATEDIFF(DAY, MaxClientMeetingDate, TodayDate) + 3 AS ClientMeetingDaysDifference, + DATEDIFF(DAY, MaxAssetDate, TodayDate) - 30 AS AssetDaysDifference, + DATEDIFF(DAY, MaxStatusDate, TodayDate) - 30 AS StatusDaysDifference + FROM MaxDates, Today ) - cursor.execute(sql_stmt1) + SELECT + ClientMeetingDaysDifference, + AssetDaysDifference / 30 AS AssetMonthsDifference, + StatusDaysDifference / 30 AS StatusMonthsDifference + FROM DaysDifference + """ + cursor.execute(combined_stmt) + date_diff_rows = cursor.fetchall() + + client_days = ( + date_diff_rows[0]["ClientMeetingDaysDifference"] + if date_diff_rows + else 0 + ) + asset_months = ( + int(date_diff_rows[0]["AssetMonthsDifference"]) if date_diff_rows else 0 + ) + status_months = ( + int(date_diff_rows[0]["StatusMonthsDifference"]) + if date_diff_rows + else 0 + ) + + # Update ClientMeetings + if client_days > 0: + client_update_stmt = f"UPDATE ClientMeetings SET StartTime = DATEADD(day, {client_days}, StartTime), EndTime = DATEADD(day, {client_days}, EndTime)" + cursor.execute(client_update_stmt) conn.commit() - sql_stmt1 = f"UPDATE Retirement SET StatusDate = dateadd(MONTH,{nmonths},StatusDate)" - cursor.execute(sql_stmt1) + # Update Assets + if asset_months > 0: + asset_update_stmt = f"UPDATE Assets SET AssetDate = DATEADD(month, {asset_months}, AssetDate)" + cursor.execute(asset_update_stmt) conn.commit() - cursor = conn.cursor() - cursor.execute(sql_stmt) - rows = cursor.fetchall() + # Update Retirement + if status_months > 0: + retire_update_stmt = f"UPDATE Retirement SET StatusDate = DATEADD(month, {status_months}, StatusDate)" + cursor.execute(retire_update_stmt) + conn.commit() users = [] for row in rows: - # print(row) user = { "ClientId": row["ClientId"], "ClientName": row["Client"], @@ -1631,7 +1668,6 @@ def get_users(): "ClientSummary": row["ClientSummary"], } users.append(user) - # print(users) return jsonify(users) diff --git a/ClientAdvisor/App/tests/test_app.py b/ClientAdvisor/App/tests/test_app.py index d456ac70..dd7f9347 100644 --- a/ClientAdvisor/App/tests/test_app.py +++ b/ClientAdvisor/App/tests/test_app.py @@ -208,6 +208,10 @@ async def test_get_users_success(client): { "ClientId": 1, "ndays": 10, + "ClientMeetingDaysDifference": 1, + "AssetMonthsDifference": 1, + "StatusMonthsDifference": 1, + "DaysDifference": 1, "Client": "Client A", "Email": "clienta@example.com", "AssetValue": "1,000,000", From 6b85ef2a702dedac6d1dad67f85825b92c0418e1 Mon Sep 17 00:00:00 2001 From: Mohan-Microsoft Date: Fri, 14 Feb 2025 13:17:32 +0530 Subject: [PATCH 11/18] fixed the UI issue in Chat history list section (#335) --- .../ChatHistory/ChatHistoryPanel.module.css | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ClientAdvisor/App/frontend/src/components/ChatHistory/ChatHistoryPanel.module.css b/ClientAdvisor/App/frontend/src/components/ChatHistory/ChatHistoryPanel.module.css index abb30159..f167b086 100644 --- a/ClientAdvisor/App/frontend/src/components/ChatHistory/ChatHistoryPanel.module.css +++ b/ClientAdvisor/App/frontend/src/components/ChatHistory/ChatHistoryPanel.module.css @@ -1,11 +1,11 @@ .container { - max-height: calc(100vh - 100px); - width: 300px; + height: calc(100vh - 100px); + width: 305px; } .listContainer { overflow: hidden auto; - max-height: calc(90vh - 105px); + height: calc(90vh - 230px); } .itemCell { @@ -79,9 +79,9 @@ } @media screen and (-ms-high-contrast: active), (forced-colors: active) { - .container{ - border: 2px solid WindowText; - background-color: Window; - color: WindowText; + .container { + border: 2px solid WindowText; + background-color: Window; + color: WindowText; } -} \ No newline at end of file +} From 24752c77a8299715d60f583844931d2aa216474f Mon Sep 17 00:00:00 2001 From: Abdul-Microsoft Date: Thu, 27 Feb 2025 00:03:55 +0530 Subject: [PATCH 12/18] Added code changes to handle null object error in history generate method (#383) --- .../App/frontend/src/pages/chat/Chat.tsx | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/ClientAdvisor/App/frontend/src/pages/chat/Chat.tsx b/ClientAdvisor/App/frontend/src/pages/chat/Chat.tsx index f7388132..b244a237 100644 --- a/ClientAdvisor/App/frontend/src/pages/chat/Chat.tsx +++ b/ClientAdvisor/App/frontend/src/pages/chat/Chat.tsx @@ -353,11 +353,30 @@ const Chat = (props: any) => { } if (response?.body) { const reader = response.body.getReader() - + let firstRead = true let runningText = '' while (true) { setProcessMessages(messageStatus.Processing) const { done, value } = await reader.read() + + // Handle Null Object (Undefined) response from History Generate Method + if (firstRead && done && value === undefined) { + let assistantMessage: ChatMessage = { + id: uuid(), + role: ASSISTANT, + content: 'There was an issue retrieving data. Please try again. If the problem persists, please contact the site administrator.', + date: new Date().toISOString() + }; + + processResultMessage(assistantMessage, userMessage, conversationId); + + result.history_metadata = { + conversation_id: uuid(), + title: question, + date: assistantMessage.date + }; + } + firstRead = false; if (done) break var text = new TextDecoder('utf-8').decode(value) From ba9eb2aa7af65c1c804fa81c6f7128cbe877c23f Mon Sep 17 00:00:00 2001 From: VishalS-Microsoft Date: Fri, 28 Feb 2025 16:17:14 +0530 Subject: [PATCH 13/18] build: validated and updated dependency for BYOC-ResearchAssistant Accelerator (#379) * build: bump @typescript-eslint/eslint-plugin (#248) Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 6.21.0 to 8.19.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.19.0/packages/eslint-plugin) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Revert "build: bump @typescript-eslint/eslint-plugin (#248)" (#340) This reverts commit 129d1fc2894d7815dcbbc4e7a6f0c3ecbe69e93e. * build: bump msw from 2.2.2 to 2.7.0 in /ClientAdvisor/App/frontend (#250) Bumps [msw](https://github.com/mswjs/msw) from 2.2.2 to 2.7.0. - [Release notes](https://github.com/mswjs/msw/releases) - [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md) - [Commits](https://github.com/mswjs/msw/compare/v2.2.2...v2.7.0) --- updated-dependencies: - dependency-name: msw dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump typescript in /ClientAdvisor/App/frontend (#251) Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.3.3 to 5.7.2. - [Release notes](https://github.com/microsoft/TypeScript/releases) - [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml) - [Commits](https://github.com/microsoft/TypeScript/compare/v5.3.3...v5.7.2) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump @types/node in /ClientAdvisor/App/frontend (#253) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.10.2 to 22.10.3. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump pymssql from 2.3.0 to 2.3.2 in /ClientAdvisor/App (#262) Bumps [pymssql](https://github.com/pymssql/pymssql) from 2.3.0 to 2.3.2. - [Release notes](https://github.com/pymssql/pymssql/releases) - [Changelog](https://github.com/pymssql/pymssql/blob/master/ChangeLog.rst) - [Commits](https://github.com/pymssql/pymssql/compare/v2.3.0...v2.3.2) --- updated-dependencies: - dependency-name: pymssql dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump quart from 0.19.9 to 0.20.0 in /ClientAdvisor/App (#263) Bumps [quart](https://github.com/pallets/quart) from 0.19.9 to 0.20.0. - [Release notes](https://github.com/pallets/quart/releases) - [Changelog](https://github.com/pallets/quart/blob/main/CHANGES.md) - [Commits](https://github.com/pallets/quart/compare/0.19.9...0.20.0) --- updated-dependencies: - dependency-name: quart dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump azure-identity from 1.15.0 to 1.19.0 in /ClientAdvisor/App (#264) Bumps [azure-identity](https://github.com/Azure/azure-sdk-for-python) from 1.15.0 to 1.19.0. - [Release notes](https://github.com/Azure/azure-sdk-for-python/releases) - [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md) - [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-identity_1.15.0...azure-identity_1.19.0) --- updated-dependencies: - dependency-name: azure-identity dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump gunicorn from 22.0.0 to 23.0.0 in /ClientAdvisor/App (#271) Bumps [gunicorn](https://github.com/benoitc/gunicorn) from 22.0.0 to 23.0.0. - [Release notes](https://github.com/benoitc/gunicorn/releases) - [Commits](https://github.com/benoitc/gunicorn/compare/22.0.0...23.0.0) --- updated-dependencies: - dependency-name: gunicorn dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump python-dotenv from 1.0.0 to 1.0.1 in /ClientAdvisor/App (#270) Bumps [python-dotenv](https://github.com/theskumar/python-dotenv) from 1.0.0 to 1.0.1. - [Release notes](https://github.com/theskumar/python-dotenv/releases) - [Changelog](https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md) - [Commits](https://github.com/theskumar/python-dotenv/compare/v1.0.0...v1.0.1) --- updated-dependencies: - dependency-name: python-dotenv dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump pytest-cov from 5.0.0 to 6.0.0 in /ClientAdvisor/App (#274) Bumps [pytest-cov](https://github.com/pytest-dev/pytest-cov) from 5.0.0 to 6.0.0. - [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-cov/compare/v5.0.0...v6.0.0) --- updated-dependencies: - dependency-name: pytest-cov dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump @testing-library/user-event in /ClientAdvisor/App/frontend (#304) Bumps [@testing-library/user-event](https://github.com/testing-library/user-event) from 14.5.2 to 14.6.1. - [Release notes](https://github.com/testing-library/user-event/releases) - [Changelog](https://github.com/testing-library/user-event/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/user-event/compare/v14.5.2...v14.6.1) --- updated-dependencies: - dependency-name: "@testing-library/user-event" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump react-router-dom in /ClientAdvisor/App/frontend (#305) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 7.1.1 to 7.1.5. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@7.1.5/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump @fluentui/react in /ClientAdvisor/App/frontend (#306) Bumps [@fluentui/react](https://github.com/microsoft/fluentui) from 8.122.3 to 8.122.9. - [Release notes](https://github.com/microsoft/fluentui/releases) - [Changelog](https://github.com/microsoft/fluentui/blob/master/azure-pipelines.release.yml) - [Commits](https://github.com/microsoft/fluentui/compare/@fluentui/react_v8.122.3...@fluentui/react_v8.122.9) --- updated-dependencies: - dependency-name: "@fluentui/react" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump react-test-renderer in /ClientAdvisor/App/frontend (#307) Bumps [react-test-renderer](https://github.com/facebook/react/tree/HEAD/packages/react-test-renderer) from 18.3.1 to 19.0.0. - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v19.0.0/packages/react-test-renderer) --- updated-dependencies: - dependency-name: react-test-renderer dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump lint-staged in /ClientAdvisor/App/frontend (#308) Bumps [lint-staged](https://github.com/lint-staged/lint-staged) from 15.3.0 to 15.4.3. - [Release notes](https://github.com/lint-staged/lint-staged/releases) - [Changelog](https://github.com/lint-staged/lint-staged/blob/master/CHANGELOG.md) - [Commits](https://github.com/lint-staged/lint-staged/compare/v15.3.0...v15.4.3) --- updated-dependencies: - dependency-name: lint-staged dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump eslint-plugin-prettier in /ClientAdvisor/App/frontend (#310) Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 5.2.1 to 5.2.3. - [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases) - [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/master/CHANGELOG.md) - [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v5.2.1...v5.2.3) --- updated-dependencies: - dependency-name: eslint-plugin-prettier dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump semantic-kernel in /ClientAdvisor/AzureFunction (#315) Bumps [semantic-kernel](https://github.com/microsoft/semantic-kernel) from 1.17.1 to 1.20.0. - [Release notes](https://github.com/microsoft/semantic-kernel/releases) - [Commits](https://github.com/microsoft/semantic-kernel/compare/dotnet-1.17.1...dotnet-1.20.0) --- updated-dependencies: - dependency-name: semantic-kernel dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump react-dom and @types/react-dom (#339) Bumps [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) and [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom). These dependencies needed to be updated together. Updates `react-dom` from 18.3.1 to 19.0.0 - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v19.0.0/packages/react-dom) Updates `@types/react-dom` from 18.3.5 to 19.0.4 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom) --- updated-dependencies: - dependency-name: react-dom dependency-type: direct:production update-type: version-update:semver-major - dependency-name: "@types/react-dom" dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump azure-search-documents in /ClientAdvisor/App (#317) Bumps [azure-search-documents](https://github.com/Azure/azure-sdk-for-python) from 11.4.0b6 to 11.6.0b9. - [Release notes](https://github.com/Azure/azure-sdk-for-python/releases) - [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/search/azure-search-documents/CHANGELOG.md) - [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-search-documents_11.4.0b6...azure-search-documents_11.6.0b9) --- updated-dependencies: - dependency-name: azure-search-documents dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump openai from 1.58.1 to 1.63.0 in /ClientAdvisor/AzureFunction (#342) Bumps [openai](https://github.com/openai/openai-python) from 1.58.1 to 1.63.0. - [Release notes](https://github.com/openai/openai-python/releases) - [Changelog](https://github.com/openai/openai-python/blob/main/CHANGELOG.md) - [Commits](https://github.com/openai/openai-python/compare/v1.58.1...v1.63.0) --- updated-dependencies: - dependency-name: openai dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump openai from 1.55.3 to 1.63.0 in /ClientAdvisor/App (#341) Bumps [openai](https://github.com/openai/openai-python) from 1.55.3 to 1.63.0. - [Release notes](https://github.com/openai/openai-python/releases) - [Changelog](https://github.com/openai/openai-python/blob/main/CHANGELOG.md) - [Commits](https://github.com/openai/openai-python/compare/v1.55.3...v1.63.0) --- updated-dependencies: - dependency-name: openai dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump pytest-asyncio from 0.24.0 to 0.25.3 in /ClientAdvisor/App (#320) Bumps [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) from 0.24.0 to 0.25.3. - [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases) - [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.24.0...v0.25.3) --- updated-dependencies: - dependency-name: pytest-asyncio dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump black from 24.8.0 to 25.1.0 in /ClientAdvisor/App (#319) Bumps [black](https://github.com/psf/black) from 24.8.0 to 25.1.0. - [Release notes](https://github.com/psf/black/releases) - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md) - [Commits](https://github.com/psf/black/compare/24.8.0...25.1.0) --- updated-dependencies: - dependency-name: black dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump azure-search-documents (#312) Bumps [azure-search-documents](https://github.com/Azure/azure-sdk-for-python) from 11.6.0b8 to 11.6.0b9. - [Release notes](https://github.com/Azure/azure-sdk-for-python/releases) - [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/search/azure-search-documents/CHANGELOG.md) - [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-search-documents_11.6.0b8...azure-search-documents_11.6.0b9) --- updated-dependencies: - dependency-name: azure-search-documents dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump azure-search-documents in /ClientAdvisor/AzureFunction (#313) Bumps [azure-search-documents](https://github.com/Azure/azure-sdk-for-python) from 11.6.0b8 to 11.6.0b9. - [Release notes](https://github.com/Azure/azure-sdk-for-python/releases) - [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/search/azure-search-documents/CHANGELOG.md) - [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-search-documents_11.6.0b8...azure-search-documents_11.6.0b9) --- updated-dependencies: - dependency-name: azure-search-documents dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump azure-storage-blob in /ClientAdvisor/App (#318) Bumps [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) from 12.17.0 to 12.24.1. - [Release notes](https://github.com/Azure/azure-sdk-for-python/releases) - [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md) - [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-storage-blob_12.17.0...azure-storage-blob_12.24.1) --- updated-dependencies: - dependency-name: azure-storage-blob dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump vite from 4.5.5 to 6.0.6 in /ClientAdvisor/App/frontend (#252) Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.5.5 to 6.0.6. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v6.0.6/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Roopan-Microsoft <168007406+Roopan-Microsoft@users.noreply.github.com> * build: bump uvicorn from 0.24.0 to 0.34.0 in /ClientAdvisor/App (#266) Bumps [uvicorn](https://github.com/encode/uvicorn) from 0.24.0 to 0.34.0. - [Release notes](https://github.com/encode/uvicorn/releases) - [Changelog](https://github.com/encode/uvicorn/blob/master/docs/release-notes.md) - [Commits](https://github.com/encode/uvicorn/compare/0.24.0...0.34.0) --- updated-dependencies: - dependency-name: uvicorn dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Roopan-Microsoft <168007406+Roopan-Microsoft@users.noreply.github.com> * build: bump httpx from 0.28.0 to 0.28.1 in /ClientAdvisor/App (#268) Bumps [httpx](https://github.com/encode/httpx) from 0.28.0 to 0.28.1. - [Release notes](https://github.com/encode/httpx/releases) - [Changelog](https://github.com/encode/httpx/blob/master/CHANGELOG.md) - [Commits](https://github.com/encode/httpx/compare/0.28.0...0.28.1) --- updated-dependencies: - dependency-name: httpx dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Roopan-Microsoft <168007406+Roopan-Microsoft@users.noreply.github.com> * build: bump aiohttp from 3.10.2 to 3.11.11 in /ClientAdvisor/App (#269) --- updated-dependencies: - dependency-name: aiohttp dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Roopan-Microsoft <168007406+Roopan-Microsoft@users.noreply.github.com> * build: bump azure-cosmos from 4.5.0 to 4.9.0 in /ClientAdvisor/App (#273) Bumps [azure-cosmos](https://github.com/Azure/azure-sdk-for-python) from 4.5.0 to 4.9.0. - [Release notes](https://github.com/Azure/azure-sdk-for-python/releases) - [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md) - [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-cosmos_4.5.0...azure-cosmos_4.9.0) --- updated-dependencies: - dependency-name: azure-cosmos dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Roopan-Microsoft <168007406+Roopan-Microsoft@users.noreply.github.com> * build: bump azure-identity from 1.19.0 to 1.20.0 in /ClientAdvisor/App (#343) Bumps [azure-identity](https://github.com/Azure/azure-sdk-for-python) from 1.19.0 to 1.20.0. - [Release notes](https://github.com/Azure/azure-sdk-for-python/releases) - [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md) - [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-identity_1.19.0...azure-identity_1.20.0) --- updated-dependencies: - dependency-name: azure-identity dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump semantic-kernel in /ClientAdvisor/AzureFunction (#344) Bumps [semantic-kernel](https://github.com/microsoft/semantic-kernel) from 1.20.0 to 1.21.1. - [Release notes](https://github.com/microsoft/semantic-kernel/releases) - [Commits](https://github.com/microsoft/semantic-kernel/compare/dotnet-1.20.0...dotnet-1.21.1) --- updated-dependencies: - dependency-name: semantic-kernel dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump aiohttp from 3.11.11 to 3.11.12 in /ClientAdvisor/App (#345) --- updated-dependencies: - dependency-name: aiohttp dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump isort from 5.13.2 to 6.0.0 in /ClientAdvisor/App (#346) Bumps [isort](https://github.com/pycqa/isort) from 5.13.2 to 6.0.0. - [Release notes](https://github.com/pycqa/isort/releases) - [Changelog](https://github.com/PyCQA/isort/blob/main/CHANGELOG.md) - [Commits](https://github.com/pycqa/isort/compare/5.13.2...6.0.0) --- updated-dependencies: - dependency-name: isort dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump flake8 from 7.1.1 to 7.1.2 in /ClientAdvisor/App (#347) Bumps [flake8](https://github.com/pycqa/flake8) from 7.1.1 to 7.1.2. - [Commits](https://github.com/pycqa/flake8/compare/7.1.1...7.1.2) --- updated-dependencies: - dependency-name: flake8 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump remark-gfm in /ClientAdvisor/App/frontend (#362) Bumps [remark-gfm](https://github.com/remarkjs/remark-gfm) from 4.0.0 to 4.0.1. - [Release notes](https://github.com/remarkjs/remark-gfm/releases) - [Commits](https://github.com/remarkjs/remark-gfm/compare/4.0.0...4.0.1) --- updated-dependencies: - dependency-name: remark-gfm dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump vite from 6.0.6 to 6.1.0 in /ClientAdvisor/App/frontend (#361) Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.0.6 to 6.1.0. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/create-vite@6.1.0/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump react-markdown in /ClientAdvisor/App/frontend (#360) Bumps [react-markdown](https://github.com/remarkjs/react-markdown) from 9.0.1 to 9.0.3. - [Release notes](https://github.com/remarkjs/react-markdown/releases) - [Changelog](https://github.com/remarkjs/react-markdown/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/react-markdown/compare/9.0.1...9.0.3) --- updated-dependencies: - dependency-name: react-markdown dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump typescript in /ClientAdvisor/App/frontend (#359) Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.7.2 to 5.7.3. - [Release notes](https://github.com/microsoft/TypeScript/releases) - [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml) - [Commits](https://github.com/microsoft/TypeScript/compare/v5.7.2...v5.7.3) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump @fluentui/react-icons in /ClientAdvisor/App/frontend (#358) Bumps [@fluentui/react-icons](https://github.com/microsoft/fluentui-system-icons) from 2.0.270 to 2.0.274. - [Changelog](https://github.com/microsoft/fluentui-system-icons/blob/main/fluentui-android-system-icons-release.yml) - [Commits](https://github.com/microsoft/fluentui-system-icons/commits) --- updated-dependencies: - dependency-name: "@fluentui/react-icons" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Roopan-Microsoft <168007406+Roopan-Microsoft@users.noreply.github.com> * build: bump @types/node in /ClientAdvisor/App/frontend (#357) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.10.3 to 22.13.4. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump eslint-plugin-react in /ClientAdvisor/App/frontend (#356) Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.37.3 to 7.37.4. - [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases) - [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md) - [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.37.3...v7.37.4) --- updated-dependencies: - dependency-name: eslint-plugin-react dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump @testing-library/react in /ClientAdvisor/App/frontend (#350) Bumps [@testing-library/react](https://github.com/testing-library/react-testing-library) from 16.1.0 to 16.2.0. - [Release notes](https://github.com/testing-library/react-testing-library/releases) - [Changelog](https://github.com/testing-library/react-testing-library/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/react-testing-library/compare/v16.1.0...v16.2.0) --- updated-dependencies: - dependency-name: "@testing-library/react" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump @eslint/js in /ClientAdvisor/App/frontend (#349) Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.17.0 to 9.20.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/commits/v9.20.0/packages/js) --- updated-dependencies: - dependency-name: "@eslint/js" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump prettier from 3.4.2 to 3.5.1 in /ClientAdvisor/App/frontend (#352) Bumps [prettier](https://github.com/prettier/prettier) from 3.4.2 to 3.5.1. - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/prettier/compare/3.4.2...3.5.1) --- updated-dependencies: - dependency-name: prettier dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump eslint-config-prettier in /ClientAdvisor/App/frontend (#348) Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 9.1.0 to 10.0.1. - [Release notes](https://github.com/prettier/eslint-config-prettier/releases) - [Changelog](https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/eslint-config-prettier/compare/v9.1.0...v10.0.1) --- updated-dependencies: - dependency-name: eslint-config-prettier dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump eslint-plugin-promise in /ClientAdvisor/App/frontend (#355) Bumps [eslint-plugin-promise](https://github.com/eslint-community/eslint-plugin-promise) from 6.6.0 to 7.2.1. - [Release notes](https://github.com/eslint-community/eslint-plugin-promise/releases) - [Changelog](https://github.com/eslint-community/eslint-plugin-promise/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint-community/eslint-plugin-promise/compare/v6.6.0...v7.2.1) --- updated-dependencies: - dependency-name: eslint-plugin-promise dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump black from 24.10.0 to 25.1.0 in /ResearchAssistant/App (#297) Bumps [black](https://github.com/psf/black) from 24.10.0 to 25.1.0. - [Release notes](https://github.com/psf/black/releases) - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md) - [Commits](https://github.com/psf/black/compare/24.10.0...25.1.0) --- updated-dependencies: - dependency-name: black dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump pytest-asyncio in /ResearchAssistant/App (#299) Bumps [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) from 0.24.0 to 0.25.3. - [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases) - [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.24.0...v0.25.3) --- updated-dependencies: - dependency-name: pytest-asyncio dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump azure-storage-blob in /ResearchAssistant/App (#301) Bumps [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) from 12.24.0 to 12.24.1. - [Release notes](https://github.com/Azure/azure-sdk-for-python/releases) - [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md) - [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-storage-blob_12.24.0...azure-storage-blob_12.24.1) --- updated-dependencies: - dependency-name: azure-storage-blob dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump pylint from 2.17.4 to 3.3.4 in /ResearchAssistant/App (#300) Bumps [pylint](https://github.com/pylint-dev/pylint) from 2.17.4 to 3.3.4. - [Release notes](https://github.com/pylint-dev/pylint/releases) - [Commits](https://github.com/pylint-dev/pylint/compare/v2.17.4...v3.3.4) --- updated-dependencies: - dependency-name: pylint dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump azure-search-documents in /ResearchAssistant/App (#303) Bumps [azure-search-documents](https://github.com/Azure/azure-sdk-for-python) from 11.6.0b8 to 11.6.0b9. - [Release notes](https://github.com/Azure/azure-sdk-for-python/releases) - [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/search/azure-search-documents/CHANGELOG.md) - [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-search-documents_11.6.0b8...azure-search-documents_11.6.0b9) --- updated-dependencies: - dependency-name: azure-search-documents dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump eslint-plugin-react in /ResearchAssistant/App/frontend (#321) Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.37.3 to 7.37.4. - [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases) - [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md) - [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.37.3...v7.37.4) --- updated-dependencies: - dependency-name: eslint-plugin-react dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump @fluentui/react in /ResearchAssistant/App/frontend (#322) Bumps [@fluentui/react](https://github.com/microsoft/fluentui) from 8.122.2 to 8.122.9. - [Release notes](https://github.com/microsoft/fluentui/releases) - [Changelog](https://github.com/microsoft/fluentui/blob/master/azure-pipelines.release.yml) - [Commits](https://github.com/microsoft/fluentui/compare/@fluentui/react_v8.122.2...@fluentui/react_v8.122.9) --- updated-dependencies: - dependency-name: "@fluentui/react" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump docx from 9.1.0 to 9.1.1 in /ResearchAssistant/App/frontend (#324) Bumps [docx](https://github.com/dolanmiu/docx) from 9.1.0 to 9.1.1. - [Release notes](https://github.com/dolanmiu/docx/releases) - [Commits](https://github.com/dolanmiu/docx/compare/9.1.0...9.1.1) --- updated-dependencies: - dependency-name: docx dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump @fluentui/react-icons in /ResearchAssistant/App/frontend (#325) Bumps [@fluentui/react-icons](https://github.com/microsoft/fluentui-system-icons) from 2.0.270 to 2.0.274. - [Changelog](https://github.com/microsoft/fluentui-system-icons/blob/main/fluentui-android-system-icons-release.yml) - [Commits](https://github.com/microsoft/fluentui-system-icons/commits) --- updated-dependencies: - dependency-name: "@fluentui/react-icons" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump isort from 5.13.2 to 6.0.0 in /ResearchAssistant/App (#298) Bumps [isort](https://github.com/pycqa/isort) from 5.13.2 to 6.0.0. - [Release notes](https://github.com/pycqa/isort/releases) - [Changelog](https://github.com/PyCQA/isort/blob/main/CHANGELOG.md) - [Commits](https://github.com/pycqa/isort/compare/5.13.2...6.0.0) --- updated-dependencies: - dependency-name: isort dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump typescript in /ResearchAssistant/App/frontend (#329) Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.7.2 to 5.7.3. - [Release notes](https://github.com/microsoft/TypeScript/releases) - [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml) - [Commits](https://github.com/microsoft/TypeScript/compare/v5.7.2...v5.7.3) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump react-markdown in /ResearchAssistant/App/frontend (#330) Bumps [react-markdown](https://github.com/remarkjs/react-markdown) from 9.0.1 to 9.0.3. - [Release notes](https://github.com/remarkjs/react-markdown/releases) - [Changelog](https://github.com/remarkjs/react-markdown/blob/main/changelog.md) - [Commits](https://github.com/remarkjs/react-markdown/compare/9.0.1...9.0.3) --- updated-dependencies: - dependency-name: react-markdown dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump @fluentui/react-components (#367) Bumps [@fluentui/react-components](https://github.com/microsoft/fluentui) from 9.56.8 to 9.58.3. - [Release notes](https://github.com/microsoft/fluentui/releases) - [Changelog](https://github.com/microsoft/fluentui/blob/master/azure-pipelines.release.yml) - [Commits](https://github.com/microsoft/fluentui/compare/@fluentui/react-components_v9.56.8...@fluentui/react-components_v9.58.3) --- updated-dependencies: - dependency-name: "@fluentui/react-components" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump @types/node in /ResearchAssistant/App/frontend (#365) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.10.2 to 22.13.4. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump openai from 1.58.1 to 1.63.2 in /ResearchAssistant/App (#364) Bumps [openai](https://github.com/openai/openai-python) from 1.58.1 to 1.63.2. - [Release notes](https://github.com/openai/openai-python/releases) - [Changelog](https://github.com/openai/openai-python/blob/main/CHANGELOG.md) - [Commits](https://github.com/openai/openai-python/compare/v1.58.1...v1.63.2) --- updated-dependencies: - dependency-name: openai dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump vite from 6.0.6 to 6.1.0 in /ResearchAssistant/App/frontend (#336) Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.0.6 to 6.1.0. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/create-vite@6.1.0/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump react-router-dom in /ResearchAssistant/App/frontend (#331) Bumps [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom) from 7.1.1 to 7.1.5. - [Release notes](https://github.com/remix-run/react-router/releases) - [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md) - [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@7.1.5/packages/react-router-dom) --- updated-dependencies: - dependency-name: react-router-dom dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump eslint in /ResearchAssistant/App/frontend (#366) Bumps [eslint](https://github.com/eslint/eslint) from 8.57.1 to 9.20.1. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.57.1...v9.20.1) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump azure-identity in /ResearchAssistant/App (#368) Bumps [azure-identity](https://github.com/Azure/azure-sdk-for-python) from 1.19.0 to 1.20.0. - [Release notes](https://github.com/Azure/azure-sdk-for-python/releases) - [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md) - [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-identity_1.19.0...azure-identity_1.20.0) --- updated-dependencies: - dependency-name: azure-identity dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build: bump flake8 from 7.1.1 to 7.1.2 in /ResearchAssistant/App (#370) Bumps [flake8](https://github.com/pycqa/flake8) from 7.1.1 to 7.1.2. - [Commits](https://github.com/pycqa/flake8/compare/7.1.1...7.1.2) --- updated-dependencies: - dependency-name: flake8 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Update build-clientadvisor.yml * Update build-clientadvisor.yml * Update build-researchassistant.yml * Update build-docker.yml * Update build-docker.yml * US-14318: Eslint package Downgraded from 9.20.1 to 8.57.0. (#373) * package-lock updated * Downgaded some package for client advisor * Modified the package version. * build: Downgraded some package for client advisor (#382) * Downgaded some package for client advisor * Modified the package version. * Removed the nodemodule * Modified package log * updated the latest msw package and commented the code in setuptest.ts file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Roopan-Microsoft <168007406+Roopan-Microsoft@users.noreply.github.com> Co-authored-by: Harmanpreet-Microsoft Co-authored-by: Roopan P M Co-authored-by: pradeepjha-microsoft --- .github/workflows/build-clientadvisor.yml | 4 +- .github/workflows/build-docker.yml | 4 +- .github/workflows/build-researchassistant.yml | 4 +- ClientAdvisor/App/frontend/package-lock.json | 1919 +++++++++----- ClientAdvisor/App/frontend/package.json | 38 +- .../App/frontend/src/test/setupTests.ts | 14 +- ClientAdvisor/App/requirements-dev.txt | 34 +- ClientAdvisor/App/requirements.txt | 34 +- ClientAdvisor/AzureFunction/requirements.txt | 4 +- .../scripts/index_scripts/requirements.txt | 2 +- .../App/frontend/package-lock.json | 2218 +++++++++-------- ResearchAssistant/App/frontend/package.json | 20 +- ResearchAssistant/App/requirements.txt | 18 +- 13 files changed, 2585 insertions(+), 1728 deletions(-) diff --git a/.github/workflows/build-clientadvisor.yml b/.github/workflows/build-clientadvisor.yml index 386690da..f323fed1 100644 --- a/.github/workflows/build-clientadvisor.yml +++ b/.github/workflows/build-clientadvisor.yml @@ -36,5 +36,5 @@ jobs: password_secret: ${{ matrix.password_secret }} app_name: ${{ matrix.app_name }} dockerfile: ${{ matrix.dockerfile }} - push: ${{ github.event_name == 'push' && github.ref_name == 'main' || github.ref_name == 'dev' || github.ref_name == 'demo' }} - secrets: inherit \ No newline at end of file + push: ${{ github.ref_name == 'main' || github.ref_name == 'dev' || github.ref_name == 'demo' || github.ref_name == 'dependabotchanges' }} + secrets: inherit diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index dd68d210..4b8b40d2 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -57,6 +57,8 @@ jobs: echo "tagname=dev" >> $GITHUB_OUTPUT elif [[ "${{ github.ref_name }}" == "demo" ]]; then echo "tagname=demo" >> $GITHUB_OUTPUT + elif [[ "${{ github.ref_name }}" == "dependabotchanges" ]]; then + echo "tagname=dependabotchanges" >> $GITHUB_OUTPUT else echo "tagname=default" >> $GITHUB_OUTPUT @@ -72,4 +74,4 @@ jobs: cache-from: type=registry,ref=${{ inputs.registry }}/${{ inputs.app_name}}:${{ steps.determine_tag.outputs.tagname }} tags: | ${{ inputs.registry }}/${{ inputs.app_name}}:${{ steps.determine_tag.outputs.tagname }} - ${{ inputs.registry }}/${{ inputs.app_name}}:${{ steps.determine_tag.outputs.tagname }}_${{ steps.date.outputs.date }}_${{ github.run_number }} \ No newline at end of file + ${{ inputs.registry }}/${{ inputs.app_name}}:${{ steps.determine_tag.outputs.tagname }}_${{ steps.date.outputs.date }}_${{ github.run_number }} diff --git a/.github/workflows/build-researchassistant.yml b/.github/workflows/build-researchassistant.yml index c984c7be..b817c646 100644 --- a/.github/workflows/build-researchassistant.yml +++ b/.github/workflows/build-researchassistant.yml @@ -33,5 +33,5 @@ jobs: password_secret: ${{ matrix.password_secret }} app_name: ${{ matrix.app_name }} dockerfile: ${{ matrix.dockerfile }} - push: ${{ github.event_name == 'push' && github.ref_name == 'main' || github.ref_name == 'dev' || github.ref_name == 'demo' }} - secrets: inherit \ No newline at end of file + push: ${{ github.ref_name == 'main' || github.ref_name == 'dev' || github.ref_name == 'demo' || github.ref_name == 'dependabotchanges' }} + secrets: inherit diff --git a/ClientAdvisor/App/frontend/package-lock.json b/ClientAdvisor/App/frontend/package-lock.json index d95af22d..426d34e1 100644 --- a/ClientAdvisor/App/frontend/package-lock.json +++ b/ClientAdvisor/App/frontend/package-lock.json @@ -9,35 +9,35 @@ "version": "0.0.0", "dependencies": { "@fluentui/font-icons-mdl2": "^8.5.57", - "@fluentui/react": "^8.122.2", + "@fluentui/react": "^8.122.9", "@fluentui/react-hooks": "^8.6.29", - "@fluentui/react-icons": "^2.0.270", + "@fluentui/react-icons": "^2.0.274", "dompurify": "^3.2.3", "lodash": "^4.17.21", "lodash-es": "^4.17.21", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router-dom": "^7.1.0", + "react-router-dom": "^7.1.5", "react-syntax-highlighter": "^15.6.1", "react-uuid": "^2.0.0", "rehype-raw": "^7.0.0", - "remark-gfm": "^4.0.0", + "remark-gfm": "^4.0.1", "remark-supersub": "^1.0.0" }, "devDependencies": { "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "^9.17.0", + "@eslint/js": "^9.20.0", "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^16.1.0", - "@testing-library/user-event": "^14.5.2", + "@testing-library/react": "^16.2.0", + "@testing-library/user-event": "^14.6.1", "@types/dompurify": "^3.2.0", "@types/eslint-config-prettier": "^6.11.3", "@types/jest": "^29.5.12", "@types/lodash-es": "^4.17.12", "@types/mocha": "^10.0.10", - "@types/node": "^22.10.2", + "@types/node": "^22.13.4", "@types/react": "^18.0.27", - "@types/react-dom": "^18.0.10", + "@types/react-dom": "^18.3.5", "@types/react-syntax-highlighter": "^15.5.13", "@types/testing-library__user-event": "^4.2.0", "@typescript-eslint/eslint-plugin": "^6.4.0", @@ -45,36 +45,36 @@ "@vitejs/plugin-react": "^4.3.4", "dotenv": "^16.4.5", "eslint": "^8.57.0", - "eslint-config-prettier": "^9.1.0", + "eslint-config-prettier": "^10.0.1", "eslint-config-standard-with-typescript": "^43.0.1", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-n": "^16.0.0", - "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-prettier": "^5.2.3", "eslint-plugin-promise": "^6.6.0", - "eslint-plugin-react": "^7.37.2", + "eslint-plugin-react": "^7.37.4", "eslint-plugin-react-hooks": "^5.1.0", "eslint-plugin-simple-import-sort": "^12.1.1", "globals": "^15.0.0", "identity-obj-proxy": "^3.0.0", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", - "lint-staged": "^15.2.11", - "msw": "2.2.2", - "prettier": "^3.2.5", - "react-markdown": "^9.0.1", + "lint-staged": "^15.4.3", + "msw": "^2.7.3", + "prettier": "^3.5.1", + "react-markdown": "^9.0.3", "react-test-renderer": "^18.2.0", "string.prototype.replaceall": "^1.0.10", "ts-jest": "^29.2.5", "ts-node": "^10.9.2", - "typescript": "^5.3.3", + "typescript": "^5.7.3", "undici": "^5.0.0", - "vite": "^4.1.5" + "vite": "^6.1.1" } }, "node_modules/@adobe/css-tools": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.1.tgz", - "integrity": "sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.2.tgz", + "integrity": "sha512-baYZExFpsdkBNuvGKTKWCwKH57HRZLVtycZS05WTQNVOiXVSeAki3nU35zlRbToeMW8aHlJfyS+1C4BOv27q0A==", "dev": true }, "node_modules/@ampproject/remapping": { @@ -105,30 +105,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz", - "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", - "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz", + "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.0", - "@babel/generator": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.9", + "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.0", - "@babel/parser": "^7.26.0", - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.26.0", + "@babel/helpers": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.9", + "@babel/types": "^7.26.9", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -153,13 +153,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", - "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz", + "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", "dev": true, "dependencies": { - "@babel/parser": "^7.26.3", - "@babel/types": "^7.26.3", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -169,12 +169,12 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", - "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.25.9", + "@babel/compat-data": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -224,9 +224,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", - "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", "dev": true, "engines": { "node": ">=6.9.0" @@ -260,25 +260,25 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", - "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.9.tgz", + "integrity": "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==", "dev": true, "dependencies": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.0" + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", - "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz", + "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", "dev": true, "dependencies": { - "@babel/types": "^7.26.3" + "@babel/types": "^7.26.9" }, "bin": { "parser": "bin/babel-parser.js" @@ -540,9 +540,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz", + "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -551,30 +551,30 @@ } }, "node_modules/@babel/template": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", + "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.26.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", - "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz", + "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.3", - "@babel/parser": "^7.26.3", - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.3", + "@babel/generator": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -592,9 +592,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", - "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz", + "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.25.9", @@ -628,6 +628,16 @@ "statuses": "^2.0.1" } }, + "node_modules/@bundled-es-modules/tough-cookie": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/tough-cookie/-/tough-cookie-0.1.6.tgz", + "integrity": "sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==", + "dev": true, + "dependencies": { + "@types/tough-cookie": "^4.0.5", + "tough-cookie": "^4.1.4" + } + }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -655,10 +665,394 @@ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==" }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", "cpu": [ "x64" ], @@ -668,7 +1062,7 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { @@ -699,9 +1093,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", - "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", + "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -734,9 +1128,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz", - "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==", + "version": "9.21.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.21.0.tgz", + "integrity": "sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -752,43 +1146,43 @@ } }, "node_modules/@fluentui/date-time-utilities": { - "version": "8.6.9", - "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.6.9.tgz", - "integrity": "sha512-dgOlVm4nXBWDLqijmvn4iAtyv1hVpQZjN6p0So74BW+7ASUTkQGe3lf8PHV/OjBiXfZa4qwONvmTQBGCheNU0w==", + "version": "8.6.10", + "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.6.10.tgz", + "integrity": "sha512-Bxq8DIMkFvkpCA1HKtCHdnFwPAnXLz3TkGp9kpi2T6VIv6VtLVSxRn95mbsUydpP9Up/DLglp/z9re5YFBGNbw==", "dependencies": { - "@fluentui/set-version": "^8.2.23", + "@fluentui/set-version": "^8.2.24", "tslib": "^2.1.0" } }, "node_modules/@fluentui/dom-utilities": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.3.9.tgz", - "integrity": "sha512-8PPzv31VXnyMvZrzK7iSGPRx8piJjas0xV+qaNQ1tzAXHuTaLXPeADJK/gEDH1XA/e9Vaakb3lPUpRVa8tal+w==", + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.3.10.tgz", + "integrity": "sha512-6WDImiLqTOpkEtfUKSStcTDpzmJfL6ZammomcjawN9xH/8u8G3Hx72CIt2MNck9giw/oUlNLJFdWRAjeP3rmPQ==", "dependencies": { - "@fluentui/set-version": "^8.2.23", + "@fluentui/set-version": "^8.2.24", "tslib": "^2.1.0" } }, "node_modules/@fluentui/font-icons-mdl2": { - "version": "8.5.57", - "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.5.57.tgz", - "integrity": "sha512-HYB+deey6wt6qHtTKdrhPhTZi7ZZVI2IwlguabK+22LzixgSdeJ0sg5Hhau5IKFwrn8ExEFOwfoaZ6KCSbcMwQ==", + "version": "8.5.58", + "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.5.58.tgz", + "integrity": "sha512-8W0C0S9qZUTJyYTTDforN2CU3GpsEJqB1tZxDXM8tNSq6W6pBJKY41eEf/xPcEkYiaH6yTwUFhdAxL/0sRPHFQ==", "dependencies": { - "@fluentui/set-version": "^8.2.23", - "@fluentui/style-utilities": "^8.11.6", - "@fluentui/utilities": "^8.15.19", + "@fluentui/set-version": "^8.2.24", + "@fluentui/style-utilities": "^8.11.7", + "@fluentui/utilities": "^8.15.20", "tslib": "^2.1.0" } }, "node_modules/@fluentui/foundation-legacy": { - "version": "8.4.23", - "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.4.23.tgz", - "integrity": "sha512-lWFouH1+vku2LgKaZUhuBNyoXJ7DByUIMXHF7Osgq/miN8ewHt5uez8LuuSHDgCytxksCY4usCMIIL2zJD0I6w==", - "dependencies": { - "@fluentui/merge-styles": "^8.6.13", - "@fluentui/set-version": "^8.2.23", - "@fluentui/style-utilities": "^8.11.6", - "@fluentui/utilities": "^8.15.19", + "version": "8.4.24", + "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.4.24.tgz", + "integrity": "sha512-lfjwKjG6H/MJ1XVeWGdZu4hlV4+qpc6gYFPJF/YgXQjh+P5M/gRiXSrN3Kcocx6gubAVFgoJAVfN1rPCm+0Lfg==", + "dependencies": { + "@fluentui/merge-styles": "^8.6.14", + "@fluentui/set-version": "^8.2.24", + "@fluentui/style-utilities": "^8.11.7", + "@fluentui/utilities": "^8.15.20", "tslib": "^2.1.0" }, "peerDependencies": { @@ -805,31 +1199,31 @@ } }, "node_modules/@fluentui/merge-styles": { - "version": "8.6.13", - "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.6.13.tgz", - "integrity": "sha512-IWgvi2CC+mcQ7/YlCvRjsmHL2+PUz7q+Pa2Rqk3a+QHN0V1uBvgIbKk5y/Y/awwDXy1yJHiqMCcDHjBNmS1d4A==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.6.14.tgz", + "integrity": "sha512-vghuHFAfQgS9WLIIs4kgDOCh/DHd5vGIddP4/bzposhlAVLZR6wUBqldm9AuCdY88r5LyCRMavVJLV+Up3xdvA==", "dependencies": { - "@fluentui/set-version": "^8.2.23", + "@fluentui/set-version": "^8.2.24", "tslib": "^2.1.0" } }, "node_modules/@fluentui/react": { - "version": "8.122.3", - "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.122.3.tgz", - "integrity": "sha512-XAffQFevT5+PI1fvhAO+2G7ozB5OLYIFEJGXzzpIIkIOPEbZwUMgDh/J93ajVdsBc3OOLaR+mEqaO8ed5Klutw==", - "dependencies": { - "@fluentui/date-time-utilities": "^8.6.9", - "@fluentui/font-icons-mdl2": "^8.5.57", - "@fluentui/foundation-legacy": "^8.4.23", - "@fluentui/merge-styles": "^8.6.13", - "@fluentui/react-focus": "^8.9.20", - "@fluentui/react-hooks": "^8.8.16", + "version": "8.122.11", + "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.122.11.tgz", + "integrity": "sha512-7vbGwsPifQPU1GdEphIldMaM0l4mXou0HK5RwIGTo1jfKvv0WccrFP27i+jCnuJzRmIAVZHsp8JvvdOTcpW/MQ==", + "dependencies": { + "@fluentui/date-time-utilities": "^8.6.10", + "@fluentui/font-icons-mdl2": "^8.5.58", + "@fluentui/foundation-legacy": "^8.4.24", + "@fluentui/merge-styles": "^8.6.14", + "@fluentui/react-focus": "^8.9.21", + "@fluentui/react-hooks": "^8.8.17", "@fluentui/react-portal-compat-context": "^9.0.13", - "@fluentui/react-window-provider": "^2.2.28", - "@fluentui/set-version": "^8.2.23", - "@fluentui/style-utilities": "^8.11.6", - "@fluentui/theme": "^2.6.64", - "@fluentui/utilities": "^8.15.19", + "@fluentui/react-window-provider": "^2.2.29", + "@fluentui/set-version": "^8.2.24", + "@fluentui/style-utilities": "^8.11.7", + "@fluentui/theme": "^2.6.65", + "@fluentui/utilities": "^8.15.20", "@microsoft/load-themed-styles": "^1.10.26", "tslib": "^2.1.0" }, @@ -841,15 +1235,15 @@ } }, "node_modules/@fluentui/react-focus": { - "version": "8.9.20", - "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.9.20.tgz", - "integrity": "sha512-eOYKohP5v82jUAeEj7Mscqy5Tt4DhgTsVwf+cejj3AGhvLfFfmUbJFmVClooqXFdMgm1vvPGdub8SHA02REVkg==", + "version": "8.9.21", + "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.9.21.tgz", + "integrity": "sha512-lL7r/KJ1KcNRmnT/v2qAY6XNA0whW4UQSR6gSQ+kaMa8ZfW3UQKuen8AHCsMpg+PSWWOa0zj3dGSsjkogNGBLQ==", "dependencies": { "@fluentui/keyboard-key": "^0.4.23", - "@fluentui/merge-styles": "^8.6.13", - "@fluentui/set-version": "^8.2.23", - "@fluentui/style-utilities": "^8.11.6", - "@fluentui/utilities": "^8.15.19", + "@fluentui/merge-styles": "^8.6.14", + "@fluentui/set-version": "^8.2.24", + "@fluentui/style-utilities": "^8.11.7", + "@fluentui/utilities": "^8.15.20", "tslib": "^2.1.0" }, "peerDependencies": { @@ -858,13 +1252,13 @@ } }, "node_modules/@fluentui/react-hooks": { - "version": "8.8.16", - "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.8.16.tgz", - "integrity": "sha512-PQ1BeOp+99mdO0g7j6QLtChfXG1LxXeHG0q5CtUeD1OUGR+vUDK84h60sw7e7qU9sSmvPmHO7jn69Lg3CS+DXw==", + "version": "8.8.17", + "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.8.17.tgz", + "integrity": "sha512-P1GFAuG8IbRJa5nRZYbHsgYjqvPctZpsGXTxRUTLelYhUy1t2b2eiG2Eom/JFjNHazAEWwDRxwCgEPesdJbY3Q==", "dependencies": { - "@fluentui/react-window-provider": "^2.2.28", - "@fluentui/set-version": "^8.2.23", - "@fluentui/utilities": "^8.15.19", + "@fluentui/react-window-provider": "^2.2.29", + "@fluentui/set-version": "^8.2.24", + "@fluentui/utilities": "^8.15.20", "tslib": "^2.1.0" }, "peerDependencies": { @@ -873,9 +1267,9 @@ } }, "node_modules/@fluentui/react-icons": { - "version": "2.0.270", - "resolved": "https://registry.npmjs.org/@fluentui/react-icons/-/react-icons-2.0.270.tgz", - "integrity": "sha512-XFAUxbOTH5gb/eTZ5UDR/841tbNskr2SNa/hshsQdojyEKMjBxNNcXo2ruesdfCGKsz/KOlmSh2sZu7NmN2N7Q==", + "version": "2.0.274", + "resolved": "https://registry.npmjs.org/@fluentui/react-icons/-/react-icons-2.0.274.tgz", + "integrity": "sha512-URmKlK8yS8f+RNsqi1pHBiL91V8RFBJlIBrPnsm8GcZsZv3vhA8k9jUinGyiMKgcsgcUulGPT/T7JUOLGEE+oQ==", "dependencies": { "@griffel/react": "^1.0.0", "tslib": "^2.1.0" @@ -897,11 +1291,11 @@ } }, "node_modules/@fluentui/react-window-provider": { - "version": "2.2.28", - "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.28.tgz", - "integrity": "sha512-YdZ74HTaoDwlvLDzoBST80/17ExIl93tLJpTxnqK5jlJOAUVQ+mxLPF2HQEJq+SZr5IMXHsQ56w/KaZVRn72YA==", + "version": "2.2.29", + "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.29.tgz", + "integrity": "sha512-4hK3UFH/TESnkuwTsE5yPTa0tgCmdoMHVynJrPQj0cBKcgZfcbb/l2lUwwtdxtAJ7K1x6yeNUC1rMLGosfeDJQ==", "dependencies": { - "@fluentui/set-version": "^8.2.23", + "@fluentui/set-version": "^8.2.24", "tslib": "^2.1.0" }, "peerDependencies": { @@ -910,34 +1304,34 @@ } }, "node_modules/@fluentui/set-version": { - "version": "8.2.23", - "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.23.tgz", - "integrity": "sha512-VPXaBsiaa3Xn/AY40nLU9bvDQ62lpMVnFzFTlQ8CbpdwrjxNlRxDUY5vRToNzp1+Zu5gD/+CgsXqIZGcry5L5w==", + "version": "8.2.24", + "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.24.tgz", + "integrity": "sha512-8uNi2ThvNgF+6d3q2luFVVdk/wZV0AbRfJ85kkvf2+oSRY+f6QVK0w13vMorNhA5puumKcZniZoAfUF02w7NSg==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@fluentui/style-utilities": { - "version": "8.11.6", - "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.11.6.tgz", - "integrity": "sha512-bVFu/ONP2+GZ/JzR6NhN7+1fuMHvi+LjOfgo21HQoDakY/KwFaitLiQBQFlRpbRUVcZXQDqe4Ur6EDFAlb2I7Q==", - "dependencies": { - "@fluentui/merge-styles": "^8.6.13", - "@fluentui/set-version": "^8.2.23", - "@fluentui/theme": "^2.6.64", - "@fluentui/utilities": "^8.15.19", + "version": "8.11.7", + "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.11.7.tgz", + "integrity": "sha512-Pyz4EViQs1zbTvkserpBSWLNiS9HFKVZ3clGuj2A0j6Wj1WUpZ2JYHCeV4Ekifx3fX54ezEC/cOCGsOr9iWHwQ==", + "dependencies": { + "@fluentui/merge-styles": "^8.6.14", + "@fluentui/set-version": "^8.2.24", + "@fluentui/theme": "^2.6.65", + "@fluentui/utilities": "^8.15.20", "@microsoft/load-themed-styles": "^1.10.26", "tslib": "^2.1.0" } }, "node_modules/@fluentui/theme": { - "version": "2.6.64", - "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.64.tgz", - "integrity": "sha512-cjzwPgq3Zsw4F6Xy7A7yN8WCeEXKTwk9lfJzEr5b00euJRuPMxkxesBbAWW43+/1l1eWVYmSm4GcEMDVD4BfXQ==", + "version": "2.6.65", + "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.65.tgz", + "integrity": "sha512-i90fReoSoq5KTqjUfac7eT26og1uSMaC+PoBsmvqVu1Oj0zXJKGb/5HJXXCAfQYr7QQkUXw0YiyfjCkdzl2R6w==", "dependencies": { - "@fluentui/merge-styles": "^8.6.13", - "@fluentui/set-version": "^8.2.23", - "@fluentui/utilities": "^8.15.19", + "@fluentui/merge-styles": "^8.6.14", + "@fluentui/set-version": "^8.2.24", + "@fluentui/utilities": "^8.15.20", "tslib": "^2.1.0" }, "peerDependencies": { @@ -946,14 +1340,14 @@ } }, "node_modules/@fluentui/utilities": { - "version": "8.15.19", - "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.15.19.tgz", - "integrity": "sha512-20WoYz0wW7pkmur+7qxTwRfvkdAnHfylLdCYSm91WLupb0cwQ1wWZWIuyo+e0cjcvem1T9TC1+NjWs0kavTWBg==", - "dependencies": { - "@fluentui/dom-utilities": "^2.3.9", - "@fluentui/merge-styles": "^8.6.13", - "@fluentui/react-window-provider": "^2.2.28", - "@fluentui/set-version": "^8.2.23", + "version": "8.15.20", + "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.15.20.tgz", + "integrity": "sha512-sG4d8t6WvN7bPWz+zbYC33hmc5kGm3wcRupSWxc9rS0HJPKbJ04e4o5jd7KnBnBE4oWsB4axvhyaZmy2IB7P4Q==", + "dependencies": { + "@fluentui/dom-utilities": "^2.3.10", + "@fluentui/merge-styles": "^8.6.14", + "@fluentui/react-window-provider": "^2.2.29", + "@fluentui/set-version": "^8.2.24", "tslib": "^2.1.0" }, "peerDependencies": { @@ -962,9 +1356,9 @@ } }, "node_modules/@griffel/core": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/@griffel/core/-/core-1.18.2.tgz", - "integrity": "sha512-odJspTMohsYZLSlO/oKsf6El6px1vg1461CpPverOzS9f0xaUKh/ZGenW+MjyyZ3aQ6adkPzcr/my6JFH/zdXQ==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@griffel/core/-/core-1.19.1.tgz", + "integrity": "sha512-ZItAAOm8YH1FW0ebzOxS3jwENqd+Dz4CGiPEdgkL4kr7D6mBpjjBbQC6VRXxnA+VqHeEQGy69Ll4M1peY8MX/g==", "dependencies": { "@emotion/hash": "^0.9.0", "@griffel/style-types": "^1.3.0", @@ -975,11 +1369,11 @@ } }, "node_modules/@griffel/react": { - "version": "1.5.27", - "resolved": "https://registry.npmjs.org/@griffel/react/-/react-1.5.27.tgz", - "integrity": "sha512-985A8iEBo++h9u96dbj3Kj5hdsBWbpkkwFpy0W8EGL0VRCzZmpb0AlWuq9pDJZACS6eZ2GAb/f9CqgVAgnTnOg==", + "version": "1.5.29", + "resolved": "https://registry.npmjs.org/@griffel/react/-/react-1.5.29.tgz", + "integrity": "sha512-xKenEIfV2PnLKVsM8yp2ZCUTknh2790937XlI88zDaO9TC8ylG10mZ3MrcgCdSecrVjKq9JKmm24tsODpkh4pw==", "dependencies": { - "@griffel/core": "^1.18.2", + "@griffel/core": "^1.19.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -1030,51 +1424,51 @@ "dev": true }, "node_modules/@inquirer/confirm": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.2.0.tgz", - "integrity": "sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.6.tgz", + "integrity": "sha512-6ZXYK3M1XmaVBZX6FCfChgtponnL0R6I7k8Nu+kaoNkT828FVZTcca1MqmWQipaW2oNREQl5AaPCUOOCVNdRMw==", "dev": true, "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3" + "@inquirer/core": "^10.1.7", + "@inquirer/type": "^3.0.4" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/core": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz", - "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==", + "version": "10.1.7", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.7.tgz", + "integrity": "sha512-AA9CQhlrt6ZgiSy6qoAigiA1izOa751ugX6ioSjqgJ+/Gd+tEN/TORk5sUYNjXuHWfW0r1n/a6ak4u/NqHHrtA==", "dev": true, "dependencies": { - "@inquirer/figures": "^1.0.6", - "@inquirer/type": "^2.0.0", - "@types/mute-stream": "^0.0.4", - "@types/node": "^22.5.5", - "@types/wrap-ansi": "^3.0.0", + "@inquirer/figures": "^1.0.10", + "@inquirer/type": "^3.0.4", "ansi-escapes": "^4.3.2", "cli-width": "^4.1.0", - "mute-stream": "^1.0.0", + "mute-stream": "^2.0.0", "signal-exit": "^4.1.0", - "strip-ansi": "^6.0.1", "wrap-ansi": "^6.2.0", "yoctocolors-cjs": "^2.1.2" }, "engines": { "node": ">=18" - } - }, - "node_modules/@inquirer/core/node_modules/@inquirer/type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz", - "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", - "dev": true, - "dependencies": { - "mute-stream": "^1.0.0" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/core/node_modules/emoji-regex": { @@ -1133,24 +1527,29 @@ } }, "node_modules/@inquirer/figures": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.9.tgz", - "integrity": "sha512-BXvGj0ehzrngHTPTDqUoDT3NXL8U0RxUk2zJm2A66RhCEIWdtU1v6GuUqNAgArW4PQ9CinqIWyHdQgdwOj06zQ==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.10.tgz", + "integrity": "sha512-Ey6176gZmeqZuY/W/nZiUyvmb1/qInjcpiZjXWi6nON+nxJpD1bxtSoBxNliGISae32n6OwbY+TSXPZ1CfS4bw==", "dev": true, "engines": { "node": ">=18" } }, "node_modules/@inquirer/type": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.5.5.tgz", - "integrity": "sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.4.tgz", + "integrity": "sha512-2MNFrDY8jkFYc9Il9DgLsHhMzuHnOYM1+CUYVWbzu9oT0hC7V7EcYvdCKeoll/Fcci04A+ERZ9wcc7cQ8lTkIA==", "dev": true, - "dependencies": { - "mute-stream": "^1.0.0" - }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@istanbuljs/load-nyc-config": { @@ -1624,26 +2023,17 @@ "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.295.tgz", "integrity": "sha512-W+IzEBw8a6LOOfRJM02dTT7BDZijxm+Z7lhtOAz1+y9vQm1Kdz9jlAO+qCEKsfxtUOmKilW8DIRqFw2aUgKeGg==" }, - "node_modules/@mswjs/cookies": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@mswjs/cookies/-/cookies-1.1.1.tgz", - "integrity": "sha512-W68qOHEjx1iD+4VjQudlx26CPIoxmIAtK4ZCexU0/UJBG6jYhcuyzKJx+Iw8uhBIGd9eba64XgWVgo20it1qwA==", - "dev": true, - "engines": { - "node": ">=18" - } - }, "node_modules/@mswjs/interceptors": { - "version": "0.25.16", - "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.25.16.tgz", - "integrity": "sha512-8QC8JyKztvoGAdPgyZy49c9vSHHAZjHagwl4RY9E8carULk8ym3iTaiawrT1YoLF/qb449h48f71XDPgkUSOUg==", + "version": "0.37.6", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.37.6.tgz", + "integrity": "sha512-wK+5pLK5XFmgtH3aQ2YVvA3HohS3xqV/OxuVOdNx9Wpnz7VE/fnC+e1A7ln6LFYeck7gOJ/dsZV6OLplOtAJ2w==", "dev": true, "dependencies": { "@open-draft/deferred-promise": "^2.2.0", "@open-draft/logger": "^0.3.0", "@open-draft/until": "^2.0.0", "is-node-process": "^1.2.0", - "outvariant": "^1.2.1", + "outvariant": "^1.4.3", "strict-event-emitter": "^0.5.1" }, "engines": { @@ -1672,52 +2062,299 @@ "node": ">= 8" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@open-draft/deferred-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", + "dev": true + }, + "node_modules/@open-draft/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "dev": true, + "dependencies": { + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" + } + }, + "node_modules/@open-draft/until": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", + "dev": true + }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz", + "integrity": "sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.8.tgz", + "integrity": "sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz", + "integrity": "sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.8.tgz", + "integrity": "sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.8.tgz", + "integrity": "sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.8.tgz", + "integrity": "sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.8.tgz", + "integrity": "sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.8.tgz", + "integrity": "sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.8.tgz", + "integrity": "sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.8.tgz", + "integrity": "sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.8.tgz", + "integrity": "sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.8.tgz", + "integrity": "sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.8.tgz", + "integrity": "sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.8.tgz", + "integrity": "sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.8.tgz", + "integrity": "sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@open-draft/deferred-promise": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", - "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", - "dev": true + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.8.tgz", + "integrity": "sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/@open-draft/logger": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", - "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.8.tgz", + "integrity": "sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "is-node-process": "^1.2.0", - "outvariant": "^1.4.0" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@open-draft/until": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", - "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", - "dev": true + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.8.tgz", + "integrity": "sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/@pkgr/core": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.8.tgz", + "integrity": "sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==", + "cpu": [ + "x64" + ], "dev": true, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } + "optional": true, + "os": [ + "win32" + ] }, "node_modules/@rtsao/scc": { "version": "1.1.0", @@ -1818,9 +2455,9 @@ "dev": true }, "node_modules/@testing-library/react": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.1.0.tgz", - "integrity": "sha512-Q2ToPvg0KsVL0ohND9A3zLJWcOXXcO8IDu3fj11KhNt0UlCWyFyvnCIBkd12tidB2lkiVRG8VFqdhcqhqnAQtg==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.2.0.tgz", + "integrity": "sha512-2cSskAvA1QNtKc8Y9VJQRv0tm3hLVgxRGDB+KYhIaPQJ1I+RHbhIXcM+zClKXzMes/wshsMVzf4B9vS4IZpqDQ==", "dev": true, "dependencies": { "@babel/runtime": "^7.12.5" @@ -1845,9 +2482,9 @@ } }, "node_modules/@testing-library/user-event": { - "version": "14.5.2", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", - "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", + "version": "14.6.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz", + "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", "dev": true, "engines": { "node": ">=12", @@ -2090,9 +2727,9 @@ "peer": true }, "node_modules/@types/lodash": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.13.tgz", - "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-w/P33JFeySuhN6JLkysYUK2gEmy9kHHFN7E8ro0tkfmlDOgxBDzWEZ/J8cWA+fHqFevpswDTFZnDx+R9lbL6xw==", "dev": true }, "node_modules/@types/lodash-es": { @@ -2119,23 +2756,14 @@ "dev": true }, "node_modules/@types/ms": { - "version": "0.7.34", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" - }, - "node_modules/@types/mute-stream": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", - "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", - "dev": true, - "dependencies": { - "@types/node": "*" - } + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" }, "node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "version": "22.13.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.5.tgz", + "integrity": "sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==", "dev": true, "dependencies": { "undici-types": "~6.20.0" @@ -2217,12 +2845,6 @@ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, - "node_modules/@types/wrap-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", - "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", - "dev": true - }, "node_modules/@types/yargs": { "version": "17.0.33", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", @@ -2453,9 +3075,9 @@ } }, "node_modules/@ungap/structured-clone": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz", - "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==" }, "node_modules/@vitejs/plugin-react": { "version": "4.3.4", @@ -2798,6 +3420,15 @@ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "dev": true }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -2994,9 +3625,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz", - "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "dev": true, "funding": [ { @@ -3092,9 +3723,9 @@ } }, "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, "dependencies": { "es-errors": "^1.3.0", @@ -3139,9 +3770,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001690", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz", - "integrity": "sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==", + "version": "1.0.30001701", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001701.tgz", + "integrity": "sha512-faRs/AW3jA9nTwmJBSO1PQ6L/EOgsB5HMQQq4iCu5zhPgVVgO/pZRHlmatwijZKetFw8/Pr4q6dEN8sJuq8qTw==", "dev": true, "funding": [ { @@ -3247,9 +3878,9 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", - "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", "dev": true }, "node_modules/cli-cursor": { @@ -3414,9 +4045,9 @@ } }, "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", "dev": true, "engines": { "node": ">=18" @@ -3607,9 +4238,9 @@ } }, "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", + "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", "dev": true }, "node_modules/decode-named-character-reference": { @@ -3788,9 +4419,9 @@ } }, "node_modules/dompurify": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.3.tgz", - "integrity": "sha512-U1U5Hzc2MO0oW3DF+G9qYN0aT7atAou4AgI0XjWz061nyBPbdxkfdhfy5uMgGn6+oLFCfn44ZGbdDqCzVmlOWA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.4.tgz", + "integrity": "sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==", "optionalDependencies": { "@types/trusted-types": "^2.0.7" } @@ -3837,9 +4468,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", - "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", + "version": "1.5.109", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.109.tgz", + "integrity": "sha512-AidaH9JETVRr9DIPGfp1kAarm/W6hRJTPuCnkF+2MqhF4KaAgRIcBc8nvjk+YMXZhwfISof/7WG29eS4iGxQLQ==", "dev": true }, "node_modules/emittery": { @@ -3893,9 +4524,9 @@ } }, "node_modules/es-abstract": { - "version": "1.23.8", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.8.tgz", - "integrity": "sha512-lfab8IzDn6EpI1ibZakcgS6WsfEBiB+43cuJo+wgylx1xKXf+Sp+YR3vFuQwC/u3sxYwV8Cxe3B0DpVUu/WiJQ==", + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.2", @@ -3909,10 +4540,11 @@ "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", + "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.2.6", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", @@ -3933,11 +4565,12 @@ "object-inspect": "^1.13.3", "object-keys": "^1.1.1", "object.assign": "^4.1.7", - "own-keys": "^1.0.0", + "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.3", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", @@ -4001,9 +4634,9 @@ } }, "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, "dependencies": { "es-errors": "^1.3.0" @@ -4013,26 +4646,30 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.4", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "dev": true, "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-to-primitive": { @@ -4053,40 +4690,43 @@ } }, "node_modules/esbuild": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", - "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", "dev": true, "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" } }, "node_modules/escalade": { @@ -4203,12 +4843,12 @@ } }, "node_modules/eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.0.2.tgz", + "integrity": "sha512-1105/17ZIMjmCOJOPNfVdbXafLCLj3hPmkmB7dLgt7XsQ/zkxSuDerE/xgO3RxoHysR1N1whmquY0lSn2O0VLg==", "dev": true, "bin": { - "eslint-config-prettier": "bin/cli.js" + "eslint-config-prettier": "build/bin/cli.js" }, "peerDependencies": { "eslint": ">=7.0.0" @@ -4494,9 +5134,9 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", - "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.3.tgz", + "integrity": "sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0", @@ -4539,9 +5179,9 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.37.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.3.tgz", - "integrity": "sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==", + "version": "7.37.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz", + "integrity": "sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==", "dev": true, "dependencies": { "array-includes": "^3.1.8", @@ -4899,16 +5539,16 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -4939,9 +5579,9 @@ "dev": true }, "node_modules/fastq": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", - "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -5053,28 +5693,35 @@ } }, "node_modules/flatted": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true }, "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, "dependencies": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/form-data": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", - "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", "dev": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" }, "engines": { @@ -5095,6 +5742,20 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -5164,21 +5825,21 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz", - "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "dunder-proto": "^1.0.0", + "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "math-intrinsics": "^1.0.0" + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -5196,6 +5857,19 @@ "node": ">=8.0.0" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", @@ -5226,9 +5900,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", - "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", + "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", "dev": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -5271,9 +5945,9 @@ } }, "node_modules/globals": { - "version": "15.14.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", - "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", "dev": true, "engines": { "node": ">=18" @@ -5445,15 +6119,15 @@ } }, "node_modules/hast-util-from-parse5": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.2.tgz", - "integrity": "sha512-SfMzfdAi/zAoZ1KkFEyyeXBn7u/ShQrfd675ZEE9M3qj+PMFX05xubzRyF76CCSJu8au9jgVxDV1+okFvgZU4A==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", + "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", "hastscript": "^9.0.0", - "property-information": "^6.0.0", + "property-information": "^7.0.0", "vfile": "^6.0.0", "vfile-location": "^5.0.0", "web-namespaces": "^2.0.0" @@ -5476,14 +6150,14 @@ } }, "node_modules/hast-util-from-parse5/node_modules/hastscript": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.0.tgz", - "integrity": "sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-parse-selector": "^4.0.0", - "property-information": "^6.0.0", + "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0" }, "funding": { @@ -5525,9 +6199,9 @@ } }, "node_modules/hast-util-to-jsx-runtime": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.2.tgz", - "integrity": "sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.5.tgz", + "integrity": "sha512-gHD+HoFxOMmmXLuq9f2dZDMQHVcplCVpMfBNRpJsF03yyLZvJGzsFORe8orVuYDX9k2w0VH0uF8oryFd1whqKQ==", "dev": true, "dependencies": { "@types/estree": "^1.0.0", @@ -5540,7 +6214,7 @@ "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", - "property-information": "^6.0.0", + "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-object": "^1.0.0", "unist-util-position": "^5.0.0", @@ -5569,6 +6243,15 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-parse5/node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/hast-util-whitespace": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", @@ -5767,9 +6450,9 @@ } }, "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "dependencies": { "parent-module": "^1.0.0", @@ -5904,12 +6587,16 @@ "dev": true }, "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -5934,12 +6621,12 @@ } }, "node_modules/is-boolean-object": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", - "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dev": true, "dependencies": { - "call-bound": "^1.0.2", + "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" }, "engines": { @@ -6080,12 +6767,15 @@ } }, "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -6303,12 +6993,12 @@ } }, "node_modules/is-weakref": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", - "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, "dependencies": { - "call-bound": "^1.0.2" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -6412,16 +7102,16 @@ } }, "node_modules/iterator.prototype": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.4.tgz", - "integrity": "sha512-x4WH0BWmrMmg4oHHl+duwubhrvczGlyuGAZu3nvrf0UXOfPu8IhZObFEr7DE/iv01YgVZrsOiRcqw2srkKEDIA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", "dev": true, "dependencies": { "define-data-property": "^1.1.4", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", "has-symbols": "^1.1.0", - "reflect.getprototypeof": "^1.0.8", "set-function-name": "^2.0.2" }, "engines": { @@ -7518,21 +8208,21 @@ "dev": true }, "node_modules/lint-staged": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.3.0.tgz", - "integrity": "sha512-vHFahytLoF2enJklgtOtCtIjZrKD/LoxlaUusd5nh7dWv/dkKQJY74ndFSzxCdv7g0ueGg1ORgTSt4Y9LPZn9A==", - "dev": true, - "dependencies": { - "chalk": "~5.4.1", - "commander": "~12.1.0", - "debug": "~4.4.0", - "execa": "~8.0.1", - "lilconfig": "~3.1.3", - "listr2": "~8.2.5", - "micromatch": "~4.0.8", - "pidtree": "~0.6.0", - "string-argv": "~0.3.2", - "yaml": "~2.6.1" + "version": "15.4.3", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.4.3.tgz", + "integrity": "sha512-FoH1vOeouNh1pw+90S+cnuoFwRfUD9ijY2GKy5h7HS3OR7JVir2N2xrsa0+Twc1B7cW72L+88geG5cW4wIhn7g==", + "dev": true, + "dependencies": { + "chalk": "^5.4.1", + "commander": "^13.1.0", + "debug": "^4.4.0", + "execa": "^8.0.1", + "lilconfig": "^3.1.3", + "listr2": "^8.2.5", + "micromatch": "^4.0.8", + "pidtree": "^0.6.0", + "string-argv": "^0.3.2", + "yaml": "^2.7.0" }, "bin": { "lint-staged": "bin/lint-staged.js" @@ -7949,9 +8639,9 @@ } }, "node_modules/mdast-util-find-and-replace": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz", - "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", @@ -7998,9 +8688,9 @@ } }, "node_modules/mdast-util-gfm": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", - "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", @@ -8032,9 +8722,9 @@ } }, "node_modules/mdast-util-gfm-footnote": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", - "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.1.0", @@ -8111,9 +8801,9 @@ } }, "node_modules/mdast-util-mdx-jsx": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz", - "integrity": "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", "dev": true, "dependencies": { "@types/estree-jsx": "^1.0.0", @@ -8233,9 +8923,9 @@ } }, "node_modules/micromark": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.1.tgz", - "integrity": "sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", "funding": [ { "type": "GitHub Sponsors", @@ -8267,9 +8957,9 @@ } }, "node_modules/micromark-core-commonmark": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz", - "integrity": "sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", "funding": [ { "type": "GitHub Sponsors", @@ -8370,9 +9060,9 @@ } }, "node_modules/micromark-extension-gfm-table": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz", - "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", @@ -8717,9 +9407,9 @@ } }, "node_modules/micromark-util-subtokenize": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.3.tgz", - "integrity": "sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", "funding": [ { "type": "GitHub Sponsors", @@ -8753,9 +9443,9 @@ ] }, "node_modules/micromark-util-types": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz", - "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", "funding": [ { "type": "GitHub Sponsors", @@ -8859,28 +9549,29 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/msw": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/msw/-/msw-2.2.2.tgz", - "integrity": "sha512-Vn3RGCmp14Oy1Lo9yGJMk4+qV/WdK8opNyHt0jdBnvzQ8OEhFvQ2AeM9EXOgQtGLvzUWzqrrwlfwmsCkFViUlg==", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.7.3.tgz", + "integrity": "sha512-+mycXv8l2fEAjFZ5sjrtjJDmm2ceKGjrNbBr1durRg6VkU9fNUE/gsmQ51hWbHqs+l35W1iM+ZsmOD9Fd6lspw==", "dev": true, "hasInstallScript": true, "dependencies": { - "@bundled-es-modules/cookie": "^2.0.0", + "@bundled-es-modules/cookie": "^2.0.1", "@bundled-es-modules/statuses": "^1.0.1", - "@inquirer/confirm": "^3.0.0", - "@mswjs/cookies": "^1.1.0", - "@mswjs/interceptors": "^0.25.16", + "@bundled-es-modules/tough-cookie": "^0.1.6", + "@inquirer/confirm": "^5.0.0", + "@mswjs/interceptors": "^0.37.0", + "@open-draft/deferred-promise": "^2.2.0", "@open-draft/until": "^2.1.0", "@types/cookie": "^0.6.0", "@types/statuses": "^2.0.4", - "chalk": "^4.1.2", "graphql": "^16.8.1", "headers-polyfill": "^4.0.2", "is-node-process": "^1.2.0", - "outvariant": "^1.4.2", - "path-to-regexp": "^6.2.0", + "outvariant": "^1.4.3", + "path-to-regexp": "^6.3.0", + "picocolors": "^1.1.1", "strict-event-emitter": "^0.5.1", - "type-fest": "^4.9.0", + "type-fest": "^4.26.1", "yargs": "^17.7.2" }, "bin": { @@ -8890,11 +9581,10 @@ "node": ">=18" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mswjs" + "url": "https://github.com/sponsors/mswjs" }, "peerDependencies": { - "typescript": ">= 4.7.x <= 5.3.x" + "typescript": ">= 4.8.x" }, "peerDependenciesMeta": { "typescript": { @@ -8903,9 +9593,9 @@ } }, "node_modules/msw/node_modules/type-fest": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.31.0.tgz", - "integrity": "sha512-yCxltHW07Nkhv/1F6wWBr8kz+5BGMfP+RbRSYFnegVb0qV/UMT0G0ElBloPVerqn4M2ZV80Ir1FtCcYv1cT6vQ==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.35.0.tgz", + "integrity": "sha512-2/AwEFQDFEy30iOLjrvHDIH7e4HEWH+f1Yl1bI5XMqzuoCUqwYCdxachgsgv0og/JdVZUhbfjcJAoHj5L1753A==", "dev": true, "engines": { "node": ">=16" @@ -8915,12 +9605,12 @@ } }, "node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", "dev": true, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/nanoid": { @@ -8996,9 +9686,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, "engines": { "node": ">= 0.4" @@ -9422,18 +10112,18 @@ } }, "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", "dev": true, "engines": { "node": ">= 0.4" } }, "node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "dev": true, "funding": [ { @@ -9450,7 +10140,7 @@ } ], "dependencies": { - "nanoid": "^3.3.7", + "nanoid": "^3.3.8", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -9468,9 +10158,9 @@ } }, "node_modules/prettier": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", - "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.2.tgz", + "integrity": "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -9561,9 +10251,9 @@ "dev": true }, "node_modules/property-information": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", - "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", + "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -9662,12 +10352,13 @@ "dev": true }, "node_modules/react-markdown": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.0.1.tgz", - "integrity": "sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.1.0.tgz", + "integrity": "sha512-xaijuJB0kzGiUdG7nc2MOMDUDBWPyGAjZtUrow9XxUeua8IqeP+VlIfAZ3bphpcLTnSZXz6z9jcVC/TCwbfgdw==", "dev": true, "dependencies": { "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "html-url-attributes": "^3.0.0", @@ -9697,9 +10388,9 @@ } }, "node_modules/react-router": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.1.1.tgz", - "integrity": "sha512-39sXJkftkKWRZ2oJtHhCxmoCrBCULr/HAH4IT5DHlgu/Q0FCPV0S4Lx+abjDTx/74xoZzNYDYbOZWlJjruyuDQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.2.0.tgz", + "integrity": "sha512-fXyqzPgCPZbqhrk7k3hPcCpYIlQ2ugIXDboHUzhJISFVy2DEPsmHgN588MyGmkIOv3jDgNfUE3kJi83L28s/LQ==", "dependencies": { "@types/cookie": "^0.6.0", "cookie": "^1.0.1", @@ -9720,11 +10411,11 @@ } }, "node_modules/react-router-dom": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.1.1.tgz", - "integrity": "sha512-vSrQHWlJ5DCfyrhgo0k6zViOe9ToK8uT5XGSmnuC2R3/g261IdIMpZVqfjD6vWSXdnf5Czs4VA/V60oVR6/jnA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.2.0.tgz", + "integrity": "sha512-cU7lTxETGtQRQbafJubvZKHEn5izNABxZhBY0Jlzdv0gqQhCPQt2J8aN5ZPjS6mQOXn5NnirWNh+FpE8TTYN0Q==", "dependencies": { - "react-router": "7.1.1" + "react-router": "7.2.0" }, "engines": { "node": ">=20.0.0" @@ -9811,18 +10502,18 @@ } }, "node_modules/reflect.getprototypeof": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.9.tgz", - "integrity": "sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "dev": true, "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "dunder-proto": "^1.0.1", - "es-abstract": "^1.23.6", + "es-abstract": "^1.23.9", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" }, "engines": { @@ -9944,14 +10635,16 @@ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/regexp.prototype.flags": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", - "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "dev": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", "set-function-name": "^2.0.2" }, "engines": { @@ -9976,9 +10669,9 @@ } }, "node_modules/remark-gfm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz", - "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", @@ -10217,9 +10910,9 @@ } }, "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, "engines": { "iojs": ">=1.0.0", @@ -10249,18 +10942,40 @@ } }, "node_modules/rollup": { - "version": "3.29.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.5.tgz", - "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.8.tgz", + "integrity": "sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==", "dev": true, + "dependencies": { + "@types/estree": "1.0.6" + }, "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=14.18.0", + "node": ">=18.0.0", "npm": ">=8.0.0" }, "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.34.8", + "@rollup/rollup-android-arm64": "4.34.8", + "@rollup/rollup-darwin-arm64": "4.34.8", + "@rollup/rollup-darwin-x64": "4.34.8", + "@rollup/rollup-freebsd-arm64": "4.34.8", + "@rollup/rollup-freebsd-x64": "4.34.8", + "@rollup/rollup-linux-arm-gnueabihf": "4.34.8", + "@rollup/rollup-linux-arm-musleabihf": "4.34.8", + "@rollup/rollup-linux-arm64-gnu": "4.34.8", + "@rollup/rollup-linux-arm64-musl": "4.34.8", + "@rollup/rollup-linux-loongarch64-gnu": "4.34.8", + "@rollup/rollup-linux-powerpc64le-gnu": "4.34.8", + "@rollup/rollup-linux-riscv64-gnu": "4.34.8", + "@rollup/rollup-linux-s390x-gnu": "4.34.8", + "@rollup/rollup-linux-x64-gnu": "4.34.8", + "@rollup/rollup-linux-x64-musl": "4.34.8", + "@rollup/rollup-win32-arm64-msvc": "4.34.8", + "@rollup/rollup-win32-ia32-msvc": "4.34.8", + "@rollup/rollup-win32-x64-msvc": "4.34.8", "fsevents": "~2.3.2" } }, @@ -10374,9 +11089,9 @@ } }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -10422,6 +11137,20 @@ "node": ">= 0.4" } }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -10922,9 +11651,9 @@ } }, "node_modules/stylis": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.4.tgz", - "integrity": "sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==" + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==" }, "node_modules/supports-color": { "version": "7.2.0", @@ -11068,9 +11797,9 @@ } }, "node_modules/ts-jest": { - "version": "29.2.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz", - "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", + "version": "29.2.6", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.6.tgz", + "integrity": "sha512-yTNZVZqc8lSixm+QGVFcPe6+yj7+TWZwIesuOWvfcn4B9bz5x4NDzVCQQjOs7Hfouu36aEqfEbo9Qpo+gq8dDg==", "dev": true, "dependencies": { "bs-logger": "^0.2.6", @@ -11080,7 +11809,7 @@ "json5": "^2.2.3", "lodash.memoize": "^4.1.2", "make-error": "^1.3.6", - "semver": "^7.6.3", + "semver": "^7.7.1", "yargs-parser": "^21.1.1" }, "bin": { @@ -11312,9 +12041,9 @@ } }, "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -11343,9 +12072,9 @@ } }, "node_modules/undici": { - "version": "5.28.4", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", - "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "version": "5.28.5", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz", + "integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==", "dev": true, "dependencies": { "@fastify/busboy": "^2.0.0" @@ -11451,9 +12180,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "dev": true, "funding": [ { @@ -11471,7 +12200,7 @@ ], "dependencies": { "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -11559,40 +12288,47 @@ } }, "node_modules/vite": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.5.tgz", - "integrity": "sha512-ifW3Lb2sMdX+WU91s3R0FyQlAyLxOzCSCP37ujw0+r5POeHPwe6udWVIElKQq8gk3t7b8rkmvqC6IHBpCff4GQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.0.tgz", + "integrity": "sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==", "dev": true, "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.27", - "rollup": "^3.27.1" + "esbuild": "^0.25.0", + "postcss": "^8.5.3", + "rollup": "^4.30.1" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" }, "optionalDependencies": { - "fsevents": "~2.3.2" + "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": ">= 14", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", + "sass-embedded": "*", "stylus": "*", "sugarss": "*", - "terser": "^5.4.0" + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, + "jiti": { + "optional": true + }, "less": { "optional": true }, @@ -11602,6 +12338,9 @@ "sass": { "optional": true }, + "sass-embedded": { + "optional": true + }, "stylus": { "optional": true }, @@ -11610,6 +12349,12 @@ }, "terser": { "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true } } }, @@ -11870,9 +12615,9 @@ } }, "node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", "dev": true, "engines": { "node": ">=10.0.0" @@ -11929,9 +12674,9 @@ "dev": true }, "node_modules/yaml": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", - "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", "dev": true, "bin": { "yaml": "bin.mjs" diff --git a/ClientAdvisor/App/frontend/package.json b/ClientAdvisor/App/frontend/package.json index f090f8dc..d64f01f7 100644 --- a/ClientAdvisor/App/frontend/package.json +++ b/ClientAdvisor/App/frontend/package.json @@ -17,35 +17,35 @@ }, "dependencies": { "@fluentui/font-icons-mdl2": "^8.5.57", - "@fluentui/react": "^8.122.2", + "@fluentui/react": "^8.122.9", "@fluentui/react-hooks": "^8.6.29", - "@fluentui/react-icons": "^2.0.270", + "@fluentui/react-icons": "^2.0.274", "dompurify": "^3.2.3", "lodash": "^4.17.21", "lodash-es": "^4.17.21", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-router-dom": "^7.1.0", + "react-router-dom": "^7.1.5", "react-syntax-highlighter": "^15.6.1", "react-uuid": "^2.0.0", "rehype-raw": "^7.0.0", - "remark-gfm": "^4.0.0", + "remark-gfm": "^4.0.1", "remark-supersub": "^1.0.0" }, "devDependencies": { "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "^9.17.0", + "@eslint/js": "^9.20.0", "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^16.1.0", - "@testing-library/user-event": "^14.5.2", + "@testing-library/react": "^16.2.0", + "@testing-library/user-event": "^14.6.1", "@types/dompurify": "^3.2.0", "@types/eslint-config-prettier": "^6.11.3", "@types/jest": "^29.5.12", "@types/lodash-es": "^4.17.12", "@types/mocha": "^10.0.10", - "@types/node": "^22.10.2", + "@types/node": "^22.13.4", "@types/react": "^18.0.27", - "@types/react-dom": "^18.0.10", + "@types/react-dom": "^18.3.5", "@types/react-syntax-highlighter": "^15.5.13", "@types/testing-library__user-event": "^4.2.0", "@typescript-eslint/eslint-plugin": "^6.4.0", @@ -53,29 +53,29 @@ "@vitejs/plugin-react": "^4.3.4", "dotenv": "^16.4.5", "eslint": "^8.57.0", - "eslint-config-prettier": "^9.1.0", + "eslint-config-prettier": "^10.0.1", "eslint-config-standard-with-typescript": "^43.0.1", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-n": "^16.0.0", - "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-prettier": "^5.2.3", "eslint-plugin-promise": "^6.6.0", - "eslint-plugin-react": "^7.37.2", + "eslint-plugin-react": "^7.37.4", "eslint-plugin-react-hooks": "^5.1.0", "eslint-plugin-simple-import-sort": "^12.1.1", "globals": "^15.0.0", "identity-obj-proxy": "^3.0.0", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", - "lint-staged": "^15.2.11", - "msw": "2.2.2", - "prettier": "^3.2.5", - "react-markdown": "^9.0.1", + "lint-staged": "^15.4.3", + "msw": "^2.7.3", + "prettier": "^3.5.1", + "react-markdown": "^9.0.3", "react-test-renderer": "^18.2.0", "string.prototype.replaceall": "^1.0.10", "ts-jest": "^29.2.5", "ts-node": "^10.9.2", - "typescript": "^5.3.3", - "vite": "^4.1.5", - "undici": "^5.0.0" + "typescript": "^5.7.3", + "undici": "^5.0.0", + "vite": "^6.1.1" } } diff --git a/ClientAdvisor/App/frontend/src/test/setupTests.ts b/ClientAdvisor/App/frontend/src/test/setupTests.ts index 3f517be7..fd32d3c5 100644 --- a/ClientAdvisor/App/frontend/src/test/setupTests.ts +++ b/ClientAdvisor/App/frontend/src/test/setupTests.ts @@ -3,16 +3,16 @@ import '@testing-library/jest-dom'; // For jest-dom matchers like toBeInTheDocum import { initializeIcons } from '@fluentui/react/lib/Icons'; initializeIcons(); -import { server } from '../mocks/server'; +// import { server } from '../mocks/server'; -// Establish API mocking before all tests -beforeAll(() => server.listen()); +// // Establish API mocking before all tests +// beforeAll(() => server.listen()); -// Reset any request handlers that are declared in a test -afterEach(() => server.resetHandlers()); +// // Reset any request handlers that are declared in a test +// afterEach(() => server.resetHandlers()); -// Clean up after the tests are finished -afterAll(() => server.close()); +// // Clean up after the tests are finished +// afterAll(() => server.close()); // Mock IntersectionObserver class IntersectionObserverMock { diff --git a/ClientAdvisor/App/requirements-dev.txt b/ClientAdvisor/App/requirements-dev.txt index 5d246093..aacba54f 100644 --- a/ClientAdvisor/App/requirements-dev.txt +++ b/ClientAdvisor/App/requirements-dev.txt @@ -1,20 +1,20 @@ -r requirements.txt -azure-identity==1.15.0 -openai==1.55.3 -azure-search-documents==11.4.0b6 -azure-storage-blob==12.17.0 -python-dotenv==1.0.0 -azure-cosmos==4.5.0 -quart==0.19.9 -uvicorn==0.24.0 -gunicorn==22.0.0 -aiohttp==3.10.2 +azure-identity==1.20.0 +openai==1.63.0 +azure-search-documents==11.6.0b9 +azure-storage-blob==12.24.1 +python-dotenv==1.0.1 +azure-cosmos==4.9.0 +quart==0.20.0 +uvicorn==0.34.0 +gunicorn==23.0.0 +aiohttp==3.11.12 quart-session==3.0.0 -pymssql==2.3.0 -httpx==0.28.0 -flake8==7.1.1 -black==24.8.0 +pymssql==2.3.2 +httpx==0.28.1 +flake8==7.1.2 +black==25.1.0 autoflake==2.3.1 -isort==5.13.2 -pytest-asyncio==0.24.0 -pytest-cov==5.0.0 \ No newline at end of file +isort==6.0.0 +pytest-asyncio==0.25.3 +pytest-cov==6.0.0 \ No newline at end of file diff --git a/ClientAdvisor/App/requirements.txt b/ClientAdvisor/App/requirements.txt index 20851cbe..3af33228 100644 --- a/ClientAdvisor/App/requirements.txt +++ b/ClientAdvisor/App/requirements.txt @@ -1,26 +1,26 @@ # Core requirements -azure-identity==1.15.0 +azure-identity==1.20.0 # Flask[async]==2.3.2 -openai==1.55.3 -azure-search-documents==11.4.0b6 -azure-storage-blob==12.17.0 -python-dotenv==1.0.0 -azure-cosmos==4.5.0 -quart==0.19.9 -uvicorn==0.24.0 -gunicorn==22.0.0 -aiohttp==3.10.2 +openai==1.63.0 +azure-search-documents==11.6.0b9 +azure-storage-blob==12.24.1 +python-dotenv==1.0.1 +azure-cosmos==4.9.0 +quart==0.20.0 +uvicorn==0.34.0 +gunicorn==23.0.0 +aiohttp==3.11.12 quart-session==3.0.0 -pymssql==2.3.0 -httpx==0.28.0 +pymssql==2.3.2 +httpx==0.28.1 # Linting and formatting tools -flake8==7.1.1 -black==24.8.0 +flake8==7.1.2 +black==25.1.0 autoflake==2.3.1 -isort==5.13.2 +isort==6.0.0 # Testing tools pytest>=8.2,<9 # Compatible version for pytest-asyncio -pytest-asyncio==0.24.0 -pytest-cov==5.0.0 \ No newline at end of file +pytest-asyncio==0.25.3 +pytest-cov==6.0.0 \ No newline at end of file diff --git a/ClientAdvisor/AzureFunction/requirements.txt b/ClientAdvisor/AzureFunction/requirements.txt index 2b03f77d..fed21c9f 100644 --- a/ClientAdvisor/AzureFunction/requirements.txt +++ b/ClientAdvisor/AzureFunction/requirements.txt @@ -4,7 +4,7 @@ azure-functions azurefunctions-extensions-http-fastapi==1.0.0b1 -openai==1.58.1 +openai==1.63.0 semantic_kernel==1.0.4 pymssql==2.3.2 -azure-search-documents==11.6.0b8 +azure-search-documents==11.6.0b9 diff --git a/ClientAdvisor/Deployment/scripts/index_scripts/requirements.txt b/ClientAdvisor/Deployment/scripts/index_scripts/requirements.txt index 8e2f9415..81244ae0 100644 --- a/ClientAdvisor/Deployment/scripts/index_scripts/requirements.txt +++ b/ClientAdvisor/Deployment/scripts/index_scripts/requirements.txt @@ -7,7 +7,7 @@ pypdf msal[broker]==1.31.1 azure-identity azure-ai-textanalytics -azure-search-documents==11.6.0b8 +azure-search-documents==11.6.0b9 azure-keyvault-secrets pandas pymssql diff --git a/ResearchAssistant/App/frontend/package-lock.json b/ResearchAssistant/App/frontend/package-lock.json index fda44845..c0ae6cf0 100644 --- a/ResearchAssistant/App/frontend/package-lock.json +++ b/ResearchAssistant/App/frontend/package-lock.json @@ -8,23 +8,23 @@ "name": "frontend", "version": "0.0.0", "dependencies": { - "@fluentui/react": "^8.122.2", - "@fluentui/react-components": "^9.56.8", + "@fluentui/react": "^8.122.9", + "@fluentui/react-components": "^9.58.3", "@fluentui/react-hooks": "^8.6.29", - "@fluentui/react-icons": "^2.0.270", + "@fluentui/react-icons": "^2.0.274", "@fluentui/react-icons-mdl2": "^1.3.82", - "@types/node": "^22.10.2", + "@types/node": "^22.13.4", "@types/react-modal": "^3.16.3", - "docx": "^9.1.0", + "docx": "^9.1.1", "file-saver": "^2.0.5", "jspdf": "^2.5.2", "lodash": "^4.17.21", "lodash-es": "^4.17.21", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-markdown": "^9.0.1", + "react-markdown": "^9.0.3", "react-modal": "^3.16.3", - "react-router-dom": "^7.1.1", + "react-router-dom": "^7.1.5", "react-uuid": "^2.0.0", "rehype-raw": "^7.0.0", "remark-gfm": "^4.0.0", @@ -42,10 +42,10 @@ "eslint-plugin-import": "^2.31.0", "eslint-plugin-n": "^16.0.0", "eslint-plugin-promise": "^6.6.0", - "eslint-plugin-react": "^7.37.3", + "eslint-plugin-react": "^7.37.4", "prettier": "^3.4.2", - "typescript": "^5.7.2", - "vite": "^6.0.6" + "typescript": "^5.7.3", + "vite": "^6.1.0" } }, "node_modules/@ampproject/remapping": { @@ -76,30 +76,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz", - "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", - "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz", + "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.0", - "@babel/generator": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.9", + "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.0", - "@babel/parser": "^7.26.0", - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.26.0", + "@babel/helpers": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.9", + "@babel/types": "^7.26.9", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -124,13 +124,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", - "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz", + "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", "dev": true, "dependencies": { - "@babel/parser": "^7.26.3", - "@babel/types": "^7.26.3", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -140,12 +140,12 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", - "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.25.9", + "@babel/compat-data": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -195,9 +195,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", - "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", "dev": true, "engines": { "node": ">=6.9.0" @@ -231,25 +231,25 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", - "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.9.tgz", + "integrity": "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==", "dev": true, "dependencies": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.0" + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", - "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz", + "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", "dev": true, "dependencies": { - "@babel/types": "^7.26.3" + "@babel/types": "^7.26.9" }, "bin": { "parser": "bin/babel-parser.js" @@ -289,9 +289,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz", + "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -300,30 +300,30 @@ } }, "node_modules/@babel/template": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", + "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.26.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", - "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz", + "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.3", - "@babel/parser": "^7.26.3", - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.3", + "@babel/generator": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -332,9 +332,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", - "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz", + "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.25.9", @@ -350,9 +350,9 @@ "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==" }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", - "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", "cpu": [ "ppc64" ], @@ -366,9 +366,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", - "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", "cpu": [ "arm" ], @@ -382,9 +382,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", - "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", "cpu": [ "arm64" ], @@ -398,9 +398,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", - "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", "cpu": [ "x64" ], @@ -414,9 +414,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", - "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", "cpu": [ "arm64" ], @@ -430,9 +430,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", - "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", "cpu": [ "x64" ], @@ -446,9 +446,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", - "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", "cpu": [ "arm64" ], @@ -462,9 +462,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", - "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", "cpu": [ "x64" ], @@ -478,9 +478,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", - "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", "cpu": [ "arm" ], @@ -494,9 +494,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", - "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", "cpu": [ "arm64" ], @@ -510,9 +510,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", - "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", "cpu": [ "ia32" ], @@ -526,9 +526,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", - "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", "cpu": [ "loong64" ], @@ -542,9 +542,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", - "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", "cpu": [ "mips64el" ], @@ -558,9 +558,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", - "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", "cpu": [ "ppc64" ], @@ -574,9 +574,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", - "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", "cpu": [ "riscv64" ], @@ -590,9 +590,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", - "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", "cpu": [ "s390x" ], @@ -606,9 +606,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", - "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", "cpu": [ "x64" ], @@ -622,9 +622,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", - "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", "cpu": [ "arm64" ], @@ -638,9 +638,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", - "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", "cpu": [ "x64" ], @@ -654,9 +654,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", - "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", "cpu": [ "arm64" ], @@ -670,9 +670,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", - "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", "cpu": [ "x64" ], @@ -686,9 +686,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", - "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", "cpu": [ "x64" ], @@ -702,9 +702,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", - "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", "cpu": [ "arm64" ], @@ -718,9 +718,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", - "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", "cpu": [ "ia32" ], @@ -734,9 +734,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", - "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", "cpu": [ "x64" ], @@ -846,11 +846,11 @@ } }, "node_modules/@floating-ui/core": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", - "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.9.tgz", + "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==", "dependencies": { - "@floating-ui/utils": "^0.2.8" + "@floating-ui/utils": "^0.2.9" } }, "node_modules/@floating-ui/devtools": { @@ -862,57 +862,57 @@ } }, "node_modules/@floating-ui/dom": { - "version": "1.6.12", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz", - "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==", + "version": "1.6.13", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.13.tgz", + "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==", "dependencies": { "@floating-ui/core": "^1.6.0", - "@floating-ui/utils": "^0.2.8" + "@floating-ui/utils": "^0.2.9" } }, "node_modules/@floating-ui/utils": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", - "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==" + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", + "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==" }, "node_modules/@fluentui/date-time-utilities": { - "version": "8.6.9", - "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.6.9.tgz", - "integrity": "sha512-dgOlVm4nXBWDLqijmvn4iAtyv1hVpQZjN6p0So74BW+7ASUTkQGe3lf8PHV/OjBiXfZa4qwONvmTQBGCheNU0w==", + "version": "8.6.10", + "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-8.6.10.tgz", + "integrity": "sha512-Bxq8DIMkFvkpCA1HKtCHdnFwPAnXLz3TkGp9kpi2T6VIv6VtLVSxRn95mbsUydpP9Up/DLglp/z9re5YFBGNbw==", "dependencies": { - "@fluentui/set-version": "^8.2.23", + "@fluentui/set-version": "^8.2.24", "tslib": "^2.1.0" } }, "node_modules/@fluentui/dom-utilities": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.3.9.tgz", - "integrity": "sha512-8PPzv31VXnyMvZrzK7iSGPRx8piJjas0xV+qaNQ1tzAXHuTaLXPeADJK/gEDH1XA/e9Vaakb3lPUpRVa8tal+w==", + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-2.3.10.tgz", + "integrity": "sha512-6WDImiLqTOpkEtfUKSStcTDpzmJfL6ZammomcjawN9xH/8u8G3Hx72CIt2MNck9giw/oUlNLJFdWRAjeP3rmPQ==", "dependencies": { - "@fluentui/set-version": "^8.2.23", + "@fluentui/set-version": "^8.2.24", "tslib": "^2.1.0" } }, "node_modules/@fluentui/font-icons-mdl2": { - "version": "8.5.57", - "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.5.57.tgz", - "integrity": "sha512-HYB+deey6wt6qHtTKdrhPhTZi7ZZVI2IwlguabK+22LzixgSdeJ0sg5Hhau5IKFwrn8ExEFOwfoaZ6KCSbcMwQ==", + "version": "8.5.58", + "resolved": "https://registry.npmjs.org/@fluentui/font-icons-mdl2/-/font-icons-mdl2-8.5.58.tgz", + "integrity": "sha512-8W0C0S9qZUTJyYTTDforN2CU3GpsEJqB1tZxDXM8tNSq6W6pBJKY41eEf/xPcEkYiaH6yTwUFhdAxL/0sRPHFQ==", "dependencies": { - "@fluentui/set-version": "^8.2.23", - "@fluentui/style-utilities": "^8.11.6", - "@fluentui/utilities": "^8.15.19", + "@fluentui/set-version": "^8.2.24", + "@fluentui/style-utilities": "^8.11.7", + "@fluentui/utilities": "^8.15.20", "tslib": "^2.1.0" } }, "node_modules/@fluentui/foundation-legacy": { - "version": "8.4.23", - "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.4.23.tgz", - "integrity": "sha512-lWFouH1+vku2LgKaZUhuBNyoXJ7DByUIMXHF7Osgq/miN8ewHt5uez8LuuSHDgCytxksCY4usCMIIL2zJD0I6w==", - "dependencies": { - "@fluentui/merge-styles": "^8.6.13", - "@fluentui/set-version": "^8.2.23", - "@fluentui/style-utilities": "^8.11.6", - "@fluentui/utilities": "^8.15.19", + "version": "8.4.24", + "resolved": "https://registry.npmjs.org/@fluentui/foundation-legacy/-/foundation-legacy-8.4.24.tgz", + "integrity": "sha512-lfjwKjG6H/MJ1XVeWGdZu4hlV4+qpc6gYFPJF/YgXQjh+P5M/gRiXSrN3Kcocx6gubAVFgoJAVfN1rPCm+0Lfg==", + "dependencies": { + "@fluentui/merge-styles": "^8.6.14", + "@fluentui/set-version": "^8.2.24", + "@fluentui/style-utilities": "^8.11.7", + "@fluentui/utilities": "^8.15.20", "tslib": "^2.1.0" }, "peerDependencies": { @@ -937,39 +937,39 @@ } }, "node_modules/@fluentui/merge-styles": { - "version": "8.6.13", - "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.6.13.tgz", - "integrity": "sha512-IWgvi2CC+mcQ7/YlCvRjsmHL2+PUz7q+Pa2Rqk3a+QHN0V1uBvgIbKk5y/Y/awwDXy1yJHiqMCcDHjBNmS1d4A==", + "version": "8.6.14", + "resolved": "https://registry.npmjs.org/@fluentui/merge-styles/-/merge-styles-8.6.14.tgz", + "integrity": "sha512-vghuHFAfQgS9WLIIs4kgDOCh/DHd5vGIddP4/bzposhlAVLZR6wUBqldm9AuCdY88r5LyCRMavVJLV+Up3xdvA==", "dependencies": { - "@fluentui/set-version": "^8.2.23", + "@fluentui/set-version": "^8.2.24", "tslib": "^2.1.0" } }, "node_modules/@fluentui/priority-overflow": { - "version": "9.1.14", - "resolved": "https://registry.npmjs.org/@fluentui/priority-overflow/-/priority-overflow-9.1.14.tgz", - "integrity": "sha512-tIH8EhvjZF4MhxSjqrWOyodrQQW+RlVZqxuNFQF5OWRdSqcIK8g+Z+UbC5fYHQooCgVsthk2mFurfGMKFtf9ug==", + "version": "9.1.15", + "resolved": "https://registry.npmjs.org/@fluentui/priority-overflow/-/priority-overflow-9.1.15.tgz", + "integrity": "sha512-/3jPBBq64hRdA416grVj+ZeMBUIaKZk2S5HiRg7CKCAV1JuyF84Do0rQI6ns8Vb9XOGuc4kurMcL/UEftoEVrg==", "dependencies": { "@swc/helpers": "^0.5.1" } }, "node_modules/@fluentui/react": { - "version": "8.122.2", - "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.122.2.tgz", - "integrity": "sha512-GiOjekP1TPUKTvh46NqBg4o4JOpVsBQf+bunhCY9CgmYfdDEQExDCxW3wAi3DAhpRLECdc+LBRlTZQhHRJU8VA==", - "dependencies": { - "@fluentui/date-time-utilities": "^8.6.9", - "@fluentui/font-icons-mdl2": "^8.5.57", - "@fluentui/foundation-legacy": "^8.4.23", - "@fluentui/merge-styles": "^8.6.13", - "@fluentui/react-focus": "^8.9.20", - "@fluentui/react-hooks": "^8.8.16", + "version": "8.122.11", + "resolved": "https://registry.npmjs.org/@fluentui/react/-/react-8.122.11.tgz", + "integrity": "sha512-7vbGwsPifQPU1GdEphIldMaM0l4mXou0HK5RwIGTo1jfKvv0WccrFP27i+jCnuJzRmIAVZHsp8JvvdOTcpW/MQ==", + "dependencies": { + "@fluentui/date-time-utilities": "^8.6.10", + "@fluentui/font-icons-mdl2": "^8.5.58", + "@fluentui/foundation-legacy": "^8.4.24", + "@fluentui/merge-styles": "^8.6.14", + "@fluentui/react-focus": "^8.9.21", + "@fluentui/react-hooks": "^8.8.17", "@fluentui/react-portal-compat-context": "^9.0.13", - "@fluentui/react-window-provider": "^2.2.28", - "@fluentui/set-version": "^8.2.23", - "@fluentui/style-utilities": "^8.11.6", - "@fluentui/theme": "^2.6.64", - "@fluentui/utilities": "^8.15.19", + "@fluentui/react-window-provider": "^2.2.29", + "@fluentui/set-version": "^8.2.24", + "@fluentui/style-utilities": "^8.11.7", + "@fluentui/theme": "^2.6.65", + "@fluentui/utilities": "^8.15.20", "@microsoft/load-themed-styles": "^1.10.26", "tslib": "^2.1.0" }, @@ -981,20 +981,20 @@ } }, "node_modules/@fluentui/react-accordion": { - "version": "9.5.12", - "resolved": "https://registry.npmjs.org/@fluentui/react-accordion/-/react-accordion-9.5.12.tgz", - "integrity": "sha512-xpY78JuTyxZF+id+GUxIMfFQG5mGkW5WvNW/H2t9kPKohYHfzQXTp7XUIkfSaqGMg/XjezqjtkJcCd+z9oKXnw==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-accordion/-/react-accordion-9.6.0.tgz", + "integrity": "sha512-k0/SH3qSwQ9C3kTaw25RQUvd1woBwA5hqTyy/5P0uVj1QKAxNT39uCSs4qmCVBPnjP2x/HJk99in6mCjngdeFQ==", "dependencies": { - "@fluentui/react-aria": "^9.13.12", - "@fluentui/react-context-selector": "^9.1.71", + "@fluentui/react-aria": "^9.14.0", + "@fluentui/react-context-selector": "^9.1.72", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-motion": "^9.6.5", - "@fluentui/react-motion-components-preview": "^0.4.1", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-motion": "^9.6.7", + "@fluentui/react-motion-components-preview": "^0.4.3", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1028,15 +1028,15 @@ } }, "node_modules/@fluentui/react-aria": { - "version": "9.13.12", - "resolved": "https://registry.npmjs.org/@fluentui/react-aria/-/react-aria-9.13.12.tgz", - "integrity": "sha512-1qNa4Yux3X3l9pQMGnANkZcNJA4rtCNnaImW5rHDAXhRzvIkQtypN0bRIsWVZqeQEc5bABh9QJaItdOo+TPelw==", + "version": "9.14.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-aria/-/react-aria-9.14.0.tgz", + "integrity": "sha512-2SF/0fHHQsUC0ok6w11k69KHxQX+FQbbJY+C/6iamkNSxCk4T65QdYzGcSyHHcxx78rN3sA2khNJnPS7Z2yqmQ==", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-jsx-runtime": "^9.0.48", + "@fluentui/react-jsx-runtime": "^9.0.50", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-tabster": "^9.24.0", + "@fluentui/react-utilities": "^9.18.20", "@swc/helpers": "^0.5.1" }, "peerDependencies": { @@ -1047,20 +1047,20 @@ } }, "node_modules/@fluentui/react-avatar": { - "version": "9.6.47", - "resolved": "https://registry.npmjs.org/@fluentui/react-avatar/-/react-avatar-9.6.47.tgz", - "integrity": "sha512-ykEF6XVd+2vB7RghJaqcMZRpqbf6ZM7UgOVKLFIEAy8qiX2Fwa2VzzA3rhTQoBB2QvaXGrFKeDzN+bTkMkXKBg==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-avatar/-/react-avatar-9.7.0.tgz", + "integrity": "sha512-JTovVU090XWh1GVfBUq2YBxawFNKqjsdduV7AxR1/TgMWYsoG4wOb396D3PwmIanFBDnXRRb2K4vb06LeCLDUA==", "dependencies": { - "@fluentui/react-badge": "^9.2.48", - "@fluentui/react-context-selector": "^9.1.71", + "@fluentui/react-badge": "^9.2.50", + "@fluentui/react-context-selector": "^9.1.72", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-popover": "^9.9.29", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-popover": "^9.10.0", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-tooltip": "^9.5.2", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-tooltip": "^9.6.0", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1072,15 +1072,15 @@ } }, "node_modules/@fluentui/react-badge": { - "version": "9.2.48", - "resolved": "https://registry.npmjs.org/@fluentui/react-badge/-/react-badge-9.2.48.tgz", - "integrity": "sha512-yVP4SaLVjr97IvicxhlfECxB92MbDLIn+nevcGWV28/H7qWypZiCC8DXfJKE/QDVyrClefozqEIeww7lhUjcJg==", + "version": "9.2.50", + "resolved": "https://registry.npmjs.org/@fluentui/react-badge/-/react-badge-9.2.50.tgz", + "integrity": "sha512-rMptIUeUWwbTvzSo917GOVDY5nKeNbcSfvtvop54zrFNrcMicAZIfrJK8fB1hFggT2cuaiI9qWdWuSTd+q1LZw==", "dependencies": { "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", + "@fluentui/react-jsx-runtime": "^9.0.50", "@fluentui/react-shared-contexts": "^9.21.2", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1092,19 +1092,19 @@ } }, "node_modules/@fluentui/react-breadcrumb": { - "version": "9.0.47", - "resolved": "https://registry.npmjs.org/@fluentui/react-breadcrumb/-/react-breadcrumb-9.0.47.tgz", - "integrity": "sha512-r+sDXZWWVuwsS4JW+0tpOoC4F3iDCEWMtD0EOtc5wpwF/WASQWIvikzUDOS1N9ACTHVoyq1gPqQmECBHWCloQw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-breadcrumb/-/react-breadcrumb-9.1.0.tgz", + "integrity": "sha512-si+E3khtKelaNOgMR3GP4VB9jJ4pDfF5gaqyH3wgfy9JMAbq0rlJ76MMdVNOLkfvnXtubbpsVu46BAQC2GO3aA==", "dependencies": { - "@fluentui/react-aria": "^9.13.12", - "@fluentui/react-button": "^9.3.98", + "@fluentui/react-aria": "^9.14.0", + "@fluentui/react-button": "^9.4.0", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-link": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-link": "^9.4.0", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1116,18 +1116,18 @@ } }, "node_modules/@fluentui/react-button": { - "version": "9.3.98", - "resolved": "https://registry.npmjs.org/@fluentui/react-button/-/react-button-9.3.98.tgz", - "integrity": "sha512-ET548xw82eXBz43tyxoswv51XnusSK2sq/mm9KrlNpSVbzjyOHxfG0ZQ88KZCIcFSqq/8ZpLG23tihlKOl/n+g==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-button/-/react-button-9.4.0.tgz", + "integrity": "sha512-VtjkyBdGRxvjbQPVKhKr5Frj5RBwn0Rxcjv+MRhosA9GS7LE5hDfIaIJkBZUug4czmhzBDZapT/2IljFN/eK3g==", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.13.12", + "@fluentui/react-aria": "^9.14.0", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", + "@fluentui/react-jsx-runtime": "^9.0.50", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1139,16 +1139,16 @@ } }, "node_modules/@fluentui/react-card": { - "version": "9.0.100", - "resolved": "https://registry.npmjs.org/@fluentui/react-card/-/react-card-9.0.100.tgz", - "integrity": "sha512-PLSWvFzNR9HvVQcMGbG1OIj2TjSlGVMV/6Nli/YaICRvGjjEX1f37NAu3yotEbxqZavJg7j8ekJ/dQqXPGv5HA==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-card/-/react-card-9.1.0.tgz", + "integrity": "sha512-9iOxgTkLPytTn6fKyGv9GwglQ+saLztYyFJtxYHxpR5uCJ6Dat62vKPr2AsJN/EvOUfi9SgEGN2qjqDm/AfvPw==", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-tabster": "^9.23.2", - "@fluentui/react-text": "^9.4.30", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-tabster": "^9.24.0", + "@fluentui/react-text": "^9.4.32", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1160,19 +1160,20 @@ } }, "node_modules/@fluentui/react-carousel": { - "version": "9.4.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-carousel/-/react-carousel-9.4.3.tgz", - "integrity": "sha512-wOd+cWV8b+2OOfITVmFY7fjouk28JtPTm5i7b3+1n0O8GMkkoI6dvpMyp+VXj4NnoYD86umrpXFGoSLX2UAqXw==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-carousel/-/react-carousel-9.6.0.tgz", + "integrity": "sha512-ek0EHTK1nvhLS2/j3axn7/x8SExn48LIGKDva9uvun/hmG2QJbkWv7X8yxVkkT60+XDPZ1Kq5YvFI13hqarULA==", "dependencies": { - "@fluentui/react-aria": "^9.13.12", - "@fluentui/react-button": "^9.3.98", - "@fluentui/react-context-selector": "^9.1.71", + "@fluentui/react-aria": "^9.14.0", + "@fluentui/react-button": "^9.4.0", + "@fluentui/react-context-selector": "^9.1.72", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", + "@fluentui/react-jsx-runtime": "^9.0.50", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-tooltip": "^9.6.0", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1", "embla-carousel": "^8.5.1", @@ -1187,18 +1188,18 @@ } }, "node_modules/@fluentui/react-checkbox": { - "version": "9.2.44", - "resolved": "https://registry.npmjs.org/@fluentui/react-checkbox/-/react-checkbox-9.2.44.tgz", - "integrity": "sha512-sVY0kKg3FMgzMMfGPbcM71dVqWYbOrkF7qtDDwwFeSCnk3km1SHxeNCR4KRIvtTriosvjkoo3u981ldLsufSWw==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-checkbox/-/react-checkbox-9.3.0.tgz", + "integrity": "sha512-aVEGhF+s9ezmp0avgZzemFUW6+xLCD0zrHVLRP7K6vAyHUOcBSN7ITEg0v7dOUKFEF98pIjNYyxJtLqQfS5ULg==", "dependencies": { - "@fluentui/react-field": "^9.1.83", + "@fluentui/react-field": "^9.2.0", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-label": "^9.1.81", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-label": "^9.1.83", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1210,22 +1211,22 @@ } }, "node_modules/@fluentui/react-combobox": { - "version": "9.13.15", - "resolved": "https://registry.npmjs.org/@fluentui/react-combobox/-/react-combobox-9.13.15.tgz", - "integrity": "sha512-v03PcpOfeylfmF48SQ+FMEctafysMcScbVXej63fTiCXBZMxrdv3sJUG2Lf8ZbvQGVdEYad6l9J+Xsk1mhjr9Q==", + "version": "9.14.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-combobox/-/react-combobox-9.14.0.tgz", + "integrity": "sha512-tbO57dPua5kYLpsXxcbvqmVXr4NbmL4IDfaKrayJ4YTPCvy5nhIEOTtHMnnz7DU6F0CN4y1uptrz/FfE7t2b8w==", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.13.12", - "@fluentui/react-context-selector": "^9.1.71", - "@fluentui/react-field": "^9.1.83", + "@fluentui/react-aria": "^9.14.0", + "@fluentui/react-context-selector": "^9.1.72", + "@fluentui/react-field": "^9.2.0", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-portal": "^9.4.40", - "@fluentui/react-positioning": "^9.16.0", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-portal": "^9.5.0", + "@fluentui/react-positioning": "^9.16.3", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1237,67 +1238,68 @@ } }, "node_modules/@fluentui/react-components": { - "version": "9.56.8", - "resolved": "https://registry.npmjs.org/@fluentui/react-components/-/react-components-9.56.8.tgz", - "integrity": "sha512-7Japh4zntMzCha2iuDYPPPCabvETpmJpxiLJptVR/iq7NdjYgpSX7RUkuIjjJOyYyvk6e1bQW9KXO6Eg3HyMPA==", + "version": "9.60.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-components/-/react-components-9.60.0.tgz", + "integrity": "sha512-rio7BAgF5oyQ0jL6/h1By5ya6pBZtf1UFj0YOto75OhLp/PdHqZy5vWpntveUnih6hwnGeZ07EQkgyPnZl5Rog==", "dependencies": { - "@fluentui/react-accordion": "^9.5.12", + "@fluentui/react-accordion": "^9.6.0", "@fluentui/react-alert": "9.0.0-beta.124", - "@fluentui/react-aria": "^9.13.12", - "@fluentui/react-avatar": "^9.6.47", - "@fluentui/react-badge": "^9.2.48", - "@fluentui/react-breadcrumb": "^9.0.47", - "@fluentui/react-button": "^9.3.98", - "@fluentui/react-card": "^9.0.100", - "@fluentui/react-carousel": "^9.4.3", - "@fluentui/react-checkbox": "^9.2.44", - "@fluentui/react-combobox": "^9.13.15", - "@fluentui/react-dialog": "^9.11.26", - "@fluentui/react-divider": "^9.2.80", - "@fluentui/react-drawer": "^9.6.6", - "@fluentui/react-field": "^9.1.83", - "@fluentui/react-image": "^9.1.78", + "@fluentui/react-aria": "^9.14.0", + "@fluentui/react-avatar": "^9.7.0", + "@fluentui/react-badge": "^9.2.50", + "@fluentui/react-breadcrumb": "^9.1.0", + "@fluentui/react-button": "^9.4.0", + "@fluentui/react-card": "^9.1.0", + "@fluentui/react-carousel": "^9.6.0", + "@fluentui/react-checkbox": "^9.3.0", + "@fluentui/react-combobox": "^9.14.0", + "@fluentui/react-dialog": "^9.12.0", + "@fluentui/react-divider": "^9.2.82", + "@fluentui/react-drawer": "^9.7.0", + "@fluentui/react-field": "^9.2.0", + "@fluentui/react-image": "^9.1.80", "@fluentui/react-infobutton": "9.0.0-beta.102", - "@fluentui/react-infolabel": "^9.0.54", - "@fluentui/react-input": "^9.4.96", - "@fluentui/react-label": "^9.1.81", - "@fluentui/react-link": "^9.3.5", - "@fluentui/react-menu": "^9.14.24", - "@fluentui/react-message-bar": "^9.2.19", - "@fluentui/react-motion": "^9.6.5", - "@fluentui/react-overflow": "^9.2.5", - "@fluentui/react-persona": "^9.2.106", - "@fluentui/react-popover": "^9.9.29", - "@fluentui/react-portal": "^9.4.40", - "@fluentui/react-positioning": "^9.16.0", - "@fluentui/react-progress": "^9.1.94", - "@fluentui/react-provider": "^9.18.2", - "@fluentui/react-radio": "^9.2.39", - "@fluentui/react-rating": "^9.0.26", - "@fluentui/react-search": "^9.0.26", - "@fluentui/react-select": "^9.1.94", + "@fluentui/react-infolabel": "^9.1.0", + "@fluentui/react-input": "^9.5.0", + "@fluentui/react-label": "^9.1.83", + "@fluentui/react-link": "^9.4.0", + "@fluentui/react-list": "^9.1.0", + "@fluentui/react-menu": "^9.16.0", + "@fluentui/react-message-bar": "^9.4.0", + "@fluentui/react-motion": "^9.6.7", + "@fluentui/react-overflow": "^9.3.0", + "@fluentui/react-persona": "^9.3.0", + "@fluentui/react-popover": "^9.10.0", + "@fluentui/react-portal": "^9.5.0", + "@fluentui/react-positioning": "^9.16.3", + "@fluentui/react-progress": "^9.2.0", + "@fluentui/react-provider": "^9.20.0", + "@fluentui/react-radio": "^9.3.0", + "@fluentui/react-rating": "^9.1.0", + "@fluentui/react-search": "^9.1.0", + "@fluentui/react-select": "^9.2.0", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-skeleton": "^9.1.23", - "@fluentui/react-slider": "^9.2.3", - "@fluentui/react-spinbutton": "^9.2.95", - "@fluentui/react-spinner": "^9.5.5", - "@fluentui/react-swatch-picker": "^9.1.17", - "@fluentui/react-switch": "^9.1.101", - "@fluentui/react-table": "^9.15.26", - "@fluentui/react-tabs": "^9.6.5", - "@fluentui/react-tabster": "^9.23.2", - "@fluentui/react-tag-picker": "^9.3.13", - "@fluentui/react-tags": "^9.3.27", - "@fluentui/react-teaching-popover": "^9.1.26", - "@fluentui/react-text": "^9.4.30", - "@fluentui/react-textarea": "^9.3.95", + "@fluentui/react-skeleton": "^9.2.0", + "@fluentui/react-slider": "^9.3.0", + "@fluentui/react-spinbutton": "^9.3.0", + "@fluentui/react-spinner": "^9.5.7", + "@fluentui/react-swatch-picker": "^9.2.0", + "@fluentui/react-switch": "^9.2.0", + "@fluentui/react-table": "^9.16.0", + "@fluentui/react-tabs": "^9.7.0", + "@fluentui/react-tabster": "^9.24.0", + "@fluentui/react-tag-picker": "^9.5.0", + "@fluentui/react-tags": "^9.4.0", + "@fluentui/react-teaching-popover": "^9.3.0", + "@fluentui/react-text": "^9.4.32", + "@fluentui/react-textarea": "^9.4.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-toast": "^9.3.63", - "@fluentui/react-toolbar": "^9.2.13", - "@fluentui/react-tooltip": "^9.5.2", - "@fluentui/react-tree": "^9.8.11", - "@fluentui/react-utilities": "^9.18.19", - "@fluentui/react-virtualizer": "9.0.0-alpha.89", + "@fluentui/react-toast": "^9.4.0", + "@fluentui/react-toolbar": "^9.3.0", + "@fluentui/react-tooltip": "^9.6.0", + "@fluentui/react-tree": "^9.10.0", + "@fluentui/react-utilities": "^9.18.20", + "@fluentui/react-virtualizer": "9.0.0-alpha.92", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1309,11 +1311,11 @@ } }, "node_modules/@fluentui/react-context-selector": { - "version": "9.1.71", - "resolved": "https://registry.npmjs.org/@fluentui/react-context-selector/-/react-context-selector-9.1.71.tgz", - "integrity": "sha512-rBm3+e/RPERRdW8xbL7+JgUHApNkoVOXoRfzva4qWF4dOudmDytPobzNNAyNXQXSbFZoeBYiCQ62OZf7wVpE5A==", + "version": "9.1.72", + "resolved": "https://registry.npmjs.org/@fluentui/react-context-selector/-/react-context-selector-9.1.72.tgz", + "integrity": "sha512-n9M7o81fuIzKuvrzdOK9Rcc+SyYg9hkr0bXhdclTHWKBYw2RgIEzXuld1qL3+gOFcSYS6AoNKpqrd9mithWYpw==", "dependencies": { - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@swc/helpers": "^0.5.1" }, "peerDependencies": { @@ -1325,22 +1327,22 @@ } }, "node_modules/@fluentui/react-dialog": { - "version": "9.11.26", - "resolved": "https://registry.npmjs.org/@fluentui/react-dialog/-/react-dialog-9.11.26.tgz", - "integrity": "sha512-I5/5zn843DQyOQ4mYuLqvgiA1UHS7wMYdwLFt5wGIQdk8oXgoCMwCJakFGU3/6JLWBl+YRxCd0RYMkCPuYdk1g==", + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-dialog/-/react-dialog-9.12.0.tgz", + "integrity": "sha512-ouZEsU7ZNaRfAYWlSwVmTwtIY5pAXL1tE41CVj5XIb2Jsx1+5qFXG9szw3mwtlaDZMHbbsQswqToqnI7T4iv5g==", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.13.12", - "@fluentui/react-context-selector": "^9.1.71", + "@fluentui/react-aria": "^9.14.0", + "@fluentui/react-context-selector": "^9.1.72", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-motion": "^9.6.5", - "@fluentui/react-motion-components-preview": "^0.4.1", - "@fluentui/react-portal": "^9.4.40", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-motion": "^9.6.7", + "@fluentui/react-motion-components-preview": "^0.4.3", + "@fluentui/react-portal": "^9.5.0", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1352,14 +1354,14 @@ } }, "node_modules/@fluentui/react-divider": { - "version": "9.2.80", - "resolved": "https://registry.npmjs.org/@fluentui/react-divider/-/react-divider-9.2.80.tgz", - "integrity": "sha512-8SahbCicYzoi75etgJwOI+YDh09/eGA9Pf0PUbpymY8c8+voH/o7OOxwiV45A8VlxZFd5K9TwA0MVtmxsiClDQ==", + "version": "9.2.82", + "resolved": "https://registry.npmjs.org/@fluentui/react-divider/-/react-divider-9.2.82.tgz", + "integrity": "sha512-U3krzGswRxpFgMkXafkl12+R7R1SeX+JdTZpw8SMnvQsBroEWgy6hq8bWhh8AFUcqCoHIbieBOrRFV68pvIvGg==", "dependencies": { - "@fluentui/react-jsx-runtime": "^9.0.48", + "@fluentui/react-jsx-runtime": "^9.0.50", "@fluentui/react-shared-contexts": "^9.21.2", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1371,18 +1373,18 @@ } }, "node_modules/@fluentui/react-drawer": { - "version": "9.6.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-drawer/-/react-drawer-9.6.6.tgz", - "integrity": "sha512-Ky9Si3u5domFfkVMa/CclebHkj4OG+NQ4ut2yY0GYGAVnON0F1B3HWlqtmBId63gQNzdarosKM5WMjsSaDRMFA==", - "dependencies": { - "@fluentui/react-dialog": "^9.11.26", - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-motion": "^9.6.5", - "@fluentui/react-portal": "^9.4.40", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-drawer/-/react-drawer-9.7.0.tgz", + "integrity": "sha512-9kL+a9KmlFWnKpJLNcNnMWOi+51XLylJN+af/K0gqU9pH+HzU6Akr4/tc74CNsmpX7aJ94oXUAqEL/Oukfeuyg==", + "dependencies": { + "@fluentui/react-dialog": "^9.12.0", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-motion": "^9.6.7", + "@fluentui/react-portal": "^9.5.0", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1394,16 +1396,16 @@ } }, "node_modules/@fluentui/react-field": { - "version": "9.1.83", - "resolved": "https://registry.npmjs.org/@fluentui/react-field/-/react-field-9.1.83.tgz", - "integrity": "sha512-+Gm6RWcr32C+t+PVpqPRTzDNDDG01IUnevPJR2t2ROcr+rDmqGA8tQ0eT7Nl6ZpWDZeOHOHXR13YtMPEjq6VPw==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-field/-/react-field-9.2.0.tgz", + "integrity": "sha512-5XfkIUcvvR/V6oTrQAO2t+5dqGFFJhHJJ7buanct9nedaT1LPYQGXYgjAc0vMUzSePRDOdgOOKZHzXQ2UT2RiA==", "dependencies": { - "@fluentui/react-context-selector": "^9.1.71", + "@fluentui/react-context-selector": "^9.1.72", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-label": "^9.1.81", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-label": "^9.1.83", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1415,15 +1417,15 @@ } }, "node_modules/@fluentui/react-focus": { - "version": "8.9.20", - "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.9.20.tgz", - "integrity": "sha512-eOYKohP5v82jUAeEj7Mscqy5Tt4DhgTsVwf+cejj3AGhvLfFfmUbJFmVClooqXFdMgm1vvPGdub8SHA02REVkg==", + "version": "8.9.21", + "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-8.9.21.tgz", + "integrity": "sha512-lL7r/KJ1KcNRmnT/v2qAY6XNA0whW4UQSR6gSQ+kaMa8ZfW3UQKuen8AHCsMpg+PSWWOa0zj3dGSsjkogNGBLQ==", "dependencies": { "@fluentui/keyboard-key": "^0.4.23", - "@fluentui/merge-styles": "^8.6.13", - "@fluentui/set-version": "^8.2.23", - "@fluentui/style-utilities": "^8.11.6", - "@fluentui/utilities": "^8.15.19", + "@fluentui/merge-styles": "^8.6.14", + "@fluentui/set-version": "^8.2.24", + "@fluentui/style-utilities": "^8.11.7", + "@fluentui/utilities": "^8.15.20", "tslib": "^2.1.0" }, "peerDependencies": { @@ -1432,13 +1434,13 @@ } }, "node_modules/@fluentui/react-hooks": { - "version": "8.8.16", - "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.8.16.tgz", - "integrity": "sha512-PQ1BeOp+99mdO0g7j6QLtChfXG1LxXeHG0q5CtUeD1OUGR+vUDK84h60sw7e7qU9sSmvPmHO7jn69Lg3CS+DXw==", + "version": "8.8.17", + "resolved": "https://registry.npmjs.org/@fluentui/react-hooks/-/react-hooks-8.8.17.tgz", + "integrity": "sha512-P1GFAuG8IbRJa5nRZYbHsgYjqvPctZpsGXTxRUTLelYhUy1t2b2eiG2Eom/JFjNHazAEWwDRxwCgEPesdJbY3Q==", "dependencies": { - "@fluentui/react-window-provider": "^2.2.28", - "@fluentui/set-version": "^8.2.23", - "@fluentui/utilities": "^8.15.19", + "@fluentui/react-window-provider": "^2.2.29", + "@fluentui/set-version": "^8.2.24", + "@fluentui/utilities": "^8.15.20", "tslib": "^2.1.0" }, "peerDependencies": { @@ -1447,12 +1449,12 @@ } }, "node_modules/@fluentui/react-icon-provider": { - "version": "1.3.78", - "resolved": "https://registry.npmjs.org/@fluentui/react-icon-provider/-/react-icon-provider-1.3.78.tgz", - "integrity": "sha512-TsIsnAn4f8MhPpw6yiWwEmf8wQWj/yBUHTINBitx8JNL9PitUV9Bq4h7trAG97z59z6bCKX/Uyn6LvoeGR9gLQ==", + "version": "1.3.79", + "resolved": "https://registry.npmjs.org/@fluentui/react-icon-provider/-/react-icon-provider-1.3.79.tgz", + "integrity": "sha512-nZLemc7HzJC7gCpXa78oF3VOHNS8O2TCBqJWyAaOlMPuCan3m1QcE1Cm8OUT2FLPZtTFKcDA/t+V1tNH/iV90w==", "dependencies": { - "@fluentui/set-version": "^8.2.23", - "@fluentui/style-utilities": "^8.11.6", + "@fluentui/set-version": "^8.2.24", + "@fluentui/style-utilities": "^8.11.7", "tslib": "^2.1.0" }, "peerDependencies": { @@ -1463,9 +1465,9 @@ } }, "node_modules/@fluentui/react-icons": { - "version": "2.0.270", - "resolved": "https://registry.npmjs.org/@fluentui/react-icons/-/react-icons-2.0.270.tgz", - "integrity": "sha512-XFAUxbOTH5gb/eTZ5UDR/841tbNskr2SNa/hshsQdojyEKMjBxNNcXo2ruesdfCGKsz/KOlmSh2sZu7NmN2N7Q==", + "version": "2.0.274", + "resolved": "https://registry.npmjs.org/@fluentui/react-icons/-/react-icons-2.0.274.tgz", + "integrity": "sha512-URmKlK8yS8f+RNsqi1pHBiL91V8RFBJlIBrPnsm8GcZsZv3vhA8k9jUinGyiMKgcsgcUulGPT/T7JUOLGEE+oQ==", "dependencies": { "@griffel/react": "^1.0.0", "tslib": "^2.1.0" @@ -1475,13 +1477,13 @@ } }, "node_modules/@fluentui/react-icons-mdl2": { - "version": "1.3.82", - "resolved": "https://registry.npmjs.org/@fluentui/react-icons-mdl2/-/react-icons-mdl2-1.3.82.tgz", - "integrity": "sha512-+CcCqwUai5g6gnC2LgWunIriZ3eJMRic8YnvB5QVoe1RI6vEesHvGZTD4EuWjzqngbxbJyDD5LQDolZH4XuMhg==", + "version": "1.3.83", + "resolved": "https://registry.npmjs.org/@fluentui/react-icons-mdl2/-/react-icons-mdl2-1.3.83.tgz", + "integrity": "sha512-Q4FY26Kn7U3jSJyZh0qHMP9PROGLa9KCuxCZBrehNUOLREItjT8WYs6GDsXdlyhwoTQON+i0GA5oc43joE7PCA==", "dependencies": { - "@fluentui/react-icon-provider": "^1.3.78", - "@fluentui/set-version": "^8.2.23", - "@fluentui/utilities": "^8.15.19", + "@fluentui/react-icon-provider": "^1.3.79", + "@fluentui/set-version": "^8.2.24", + "@fluentui/utilities": "^8.15.20", "@microsoft/load-themed-styles": "^1.10.26", "tslib": "^2.1.0" }, @@ -1490,14 +1492,14 @@ } }, "node_modules/@fluentui/react-image": { - "version": "9.1.78", - "resolved": "https://registry.npmjs.org/@fluentui/react-image/-/react-image-9.1.78.tgz", - "integrity": "sha512-/5bfyURPVgW2yJyFwsW5x+rCcS3yxZk+7vhrDPIQn/WzZ4cpO7XNQQvoeqZlpC/DbmPHJWjPzRi2kDwikuZgNg==", + "version": "9.1.80", + "resolved": "https://registry.npmjs.org/@fluentui/react-image/-/react-image-9.1.80.tgz", + "integrity": "sha512-Vw6cPJaGSGy9usjXxaK0If9Ow3wo0e2yUIsKRWpWtiX7CTwENGP7N6WYbJFw26gY4AVer/S9bfGlen/gqq3cHg==", "dependencies": { - "@fluentui/react-jsx-runtime": "^9.0.48", + "@fluentui/react-jsx-runtime": "^9.0.50", "@fluentui/react-shared-contexts": "^9.21.2", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1531,17 +1533,17 @@ } }, "node_modules/@fluentui/react-infolabel": { - "version": "9.0.54", - "resolved": "https://registry.npmjs.org/@fluentui/react-infolabel/-/react-infolabel-9.0.54.tgz", - "integrity": "sha512-DiU/mnt4TYAyrAYgfv8yFkYyrsKGsrkw09zUBl4yPXxz6fjtULQaAc1ahty8bndjuCrz3edDr8jbrHLVDB18Lg==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-infolabel/-/react-infolabel-9.1.0.tgz", + "integrity": "sha512-0Q8VcXKN+Wo90PQGH/lhhNRV5YlxEwt+ifs15kO8V0M3ZC68WWaq6T2cH61FW2kTVwM7sSIyDyNJGpckzIRo1Q==", "dependencies": { "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-label": "^9.1.81", - "@fluentui/react-popover": "^9.9.29", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-label": "^9.1.83", + "@fluentui/react-popover": "^9.10.0", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1553,15 +1555,15 @@ } }, "node_modules/@fluentui/react-input": { - "version": "9.4.96", - "resolved": "https://registry.npmjs.org/@fluentui/react-input/-/react-input-9.4.96.tgz", - "integrity": "sha512-Fry5AwRwGotZmuSEYj7WNyGI2yYR+7kSO+2tqPy1HtajUVz+JfHbn95wem1ZoSkOUnuj15fmSuXJAAN5q967ug==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-input/-/react-input-9.5.0.tgz", + "integrity": "sha512-qZQvCwL5vdQOe/6XVWwDiK/x8gua13bKH1vk4GH197bqaoDw+8F6LtTokq31Z0ut1gOMC2Sw31YzuWqXfptP7A==", "dependencies": { - "@fluentui/react-field": "^9.1.83", - "@fluentui/react-jsx-runtime": "^9.0.48", + "@fluentui/react-field": "^9.2.0", + "@fluentui/react-jsx-runtime": "^9.0.50", "@fluentui/react-shared-contexts": "^9.21.2", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1573,11 +1575,11 @@ } }, "node_modules/@fluentui/react-jsx-runtime": { - "version": "9.0.48", - "resolved": "https://registry.npmjs.org/@fluentui/react-jsx-runtime/-/react-jsx-runtime-9.0.48.tgz", - "integrity": "sha512-Awk9rsbXsANqR+yCRSHlbVySn2jjP9FU94Jn+phe+USV93Pi32qJCwjL0zymIOIEYIeqdwngGHvSa+nrAx+jRQ==", + "version": "9.0.50", + "resolved": "https://registry.npmjs.org/@fluentui/react-jsx-runtime/-/react-jsx-runtime-9.0.50.tgz", + "integrity": "sha512-dnelPmz0x591tr58B/jbIHVzgjWskMkBmWEvZJc2rlbGH1oZl+MPJqvVdOAMvLTKJzqVmNkeSDtQmkjzjccogA==", "dependencies": { - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@swc/helpers": "^0.5.1", "react-is": "^17.0.2" }, @@ -1587,14 +1589,14 @@ } }, "node_modules/@fluentui/react-label": { - "version": "9.1.81", - "resolved": "https://registry.npmjs.org/@fluentui/react-label/-/react-label-9.1.81.tgz", - "integrity": "sha512-Hv+rEbZDdLDTwrNqiDG66Yy21Qh2kpXg+etCfbqjF5ENua5J+I2iAdxDYwUUip7Hq12VckKnsqjytgdIhwyO/A==", + "version": "9.1.83", + "resolved": "https://registry.npmjs.org/@fluentui/react-label/-/react-label-9.1.83.tgz", + "integrity": "sha512-XJF78Vwn4sSRJUyWcTj/F6hJVcHlPozDBcGWipMpnFgKBljuVmE2sg581CUGKn4AOTa9/blc81DLv0AE3itNtQ==", "dependencies": { - "@fluentui/react-jsx-runtime": "^9.0.48", + "@fluentui/react-jsx-runtime": "^9.0.50", "@fluentui/react-shared-contexts": "^9.21.2", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1606,16 +1608,16 @@ } }, "node_modules/@fluentui/react-link": { - "version": "9.3.5", - "resolved": "https://registry.npmjs.org/@fluentui/react-link/-/react-link-9.3.5.tgz", - "integrity": "sha512-YAsnt0WOQvPA2esHjK9uuoxVuQVAN12nBO/DuNlqW9sv7Rpc2jHU/4de3gR608uGEWtp/K0bwyafo+oTtMzJKQ==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-link/-/react-link-9.4.0.tgz", + "integrity": "sha512-uoIOjaFoY6GmR2W1G/Ll/VZ/866KbPMFksufMN1MRYIsBHQPpbkQk9MXk9obpnThja7g2rLmz8Pr3RWm3q9I4g==", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-jsx-runtime": "^9.0.48", + "@fluentui/react-jsx-runtime": "^9.0.50", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1626,22 +1628,45 @@ "react-dom": ">=16.14.0 <19.0.0" } }, + "node_modules/@fluentui/react-list": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-list/-/react-list-9.1.0.tgz", + "integrity": "sha512-4c/oLUWBbdoQAOQ0OJDX730P06h8Z/SFvJG3F/P6QsxiYiXJlzCkjJEKzYnrmsiPmi0omqO1m2SzIcJDEAxLKw==", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.8", + "@fluentui/react-checkbox": "^9.3.0", + "@fluentui/react-context-selector": "^9.1.72", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-shared-contexts": "^9.21.2", + "@fluentui/react-tabster": "^9.24.0", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.18.20", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <19.0.0", + "@types/react-dom": ">=16.8.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.8.0 <19.0.0" + } + }, "node_modules/@fluentui/react-menu": { - "version": "9.14.24", - "resolved": "https://registry.npmjs.org/@fluentui/react-menu/-/react-menu-9.14.24.tgz", - "integrity": "sha512-IJxvGQdJ2bMIYmpIpJixpJ55OqMLJUF6eAmLGZOMlk9TJiQxFKO04v6LYIffMFAuMknhwNfW3hbt6uU+hHcItA==", + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-menu/-/react-menu-9.16.0.tgz", + "integrity": "sha512-4aMANLEiUwBTWVpBnvo3LVMf6sB1yDpTcqFsjcb1wwwTr7DssBPqGOBKWGzB7WJ+P3wEALiAUwXasotVQzIRhA==", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.13.12", - "@fluentui/react-context-selector": "^9.1.71", + "@fluentui/react-aria": "^9.14.0", + "@fluentui/react-context-selector": "^9.1.72", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-portal": "^9.4.40", - "@fluentui/react-positioning": "^9.16.0", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-portal": "^9.5.0", + "@fluentui/react-positioning": "^9.16.3", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1653,20 +1678,21 @@ } }, "node_modules/@fluentui/react-message-bar": { - "version": "9.2.19", - "resolved": "https://registry.npmjs.org/@fluentui/react-message-bar/-/react-message-bar-9.2.19.tgz", - "integrity": "sha512-wiO3kW8rCuCTscBZMUS9Lmt8e6DZiziwspjM/5ELu7DF6TQtIgPRe0CStL2UZEXvyLcGTpCCCj64LiTQ7UQhtA==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-message-bar/-/react-message-bar-9.4.0.tgz", + "integrity": "sha512-VBXa3V4M3HfsBrypDxo8lA22VoC+AirnAAPpasgYmlcLeEypdqtxC3a5BJ5D8KJ4L7P3HljVYlshOxoVqJJVlw==", "dependencies": { - "@fluentui/react-button": "^9.3.98", + "@fluentui/react-button": "^9.4.0", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-link": "^9.3.5", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-link": "^9.4.0", + "@fluentui/react-motion": "^9.6.7", + "@fluentui/react-motion-components-preview": "^0.4.3", "@fluentui/react-shared-contexts": "^9.21.2", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1", - "react-transition-group": "^4.4.1" + "@swc/helpers": "^0.5.1" }, "peerDependencies": { "@types/react": ">=16.8.0 <19.0.0", @@ -1676,12 +1702,12 @@ } }, "node_modules/@fluentui/react-motion": { - "version": "9.6.5", - "resolved": "https://registry.npmjs.org/@fluentui/react-motion/-/react-motion-9.6.5.tgz", - "integrity": "sha512-EDgB/BqqIQuFiQk5dei92RR+/W9zZ15DaeDzDMqCMYgkipnYuJ2xE18cEHyuDpUVCQL4Uw25y3oLqLxb4fI6iA==", + "version": "9.6.7", + "resolved": "https://registry.npmjs.org/@fluentui/react-motion/-/react-motion-9.6.7.tgz", + "integrity": "sha512-xvNsN8n7e7OOMnNK1ynIZcREpoYY+97WuI+qnEiqkwJWKA+WzWYN+ydvH7IFI1PV7wz7qhyXUga5L10CjFeCAA==", "dependencies": { "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@swc/helpers": "^0.5.1", "react-is": "^17.0.2" }, @@ -1693,9 +1719,9 @@ } }, "node_modules/@fluentui/react-motion-components-preview": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-motion-components-preview/-/react-motion-components-preview-0.4.1.tgz", - "integrity": "sha512-wHiwrhKpOACGHW4ozJjq8L598OKPk2IiSOT14IXOQ8XMOpKtusYO6CJ1nHukzFl3sQ/cx2ADIFoqaFJ1/1zYXg==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@fluentui/react-motion-components-preview/-/react-motion-components-preview-0.4.3.tgz", + "integrity": "sha512-g6ACukFXcZ8TFYP30WnVjkvRuQkkx2Q48jI7TowTsJBQg01FFT4w22ii5s2ABuO6L1TR02kAL3wvvo5O2KP5Ew==", "dependencies": { "@fluentui/react-motion": "*", "@swc/helpers": "^0.5.1" @@ -1708,14 +1734,14 @@ } }, "node_modules/@fluentui/react-overflow": { - "version": "9.2.5", - "resolved": "https://registry.npmjs.org/@fluentui/react-overflow/-/react-overflow-9.2.5.tgz", - "integrity": "sha512-eH4QseZFy3S9qhOEG+0t8d2o5vY/0jqeJqcjsoXyh6WZskxhCpCxEWcvufPxTe0Y3YolMzYvIzTBmSgpRNljzg==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-overflow/-/react-overflow-9.3.0.tgz", + "integrity": "sha512-7TwCjPOhInHCEf59m5tPBt2d+77R9AI9E6YXYu5TxMdkDqG/nqkmfx5B2MwOc5iYdvLcIR1VHdfA4A61qVe6MQ==", "dependencies": { - "@fluentui/priority-overflow": "^9.1.14", - "@fluentui/react-context-selector": "^9.1.71", + "@fluentui/priority-overflow": "^9.1.15", + "@fluentui/react-context-selector": "^9.1.72", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1727,16 +1753,16 @@ } }, "node_modules/@fluentui/react-persona": { - "version": "9.2.106", - "resolved": "https://registry.npmjs.org/@fluentui/react-persona/-/react-persona-9.2.106.tgz", - "integrity": "sha512-QMU4RhGG4tVF09zniSlWtsg9p9RQ0MT8XOSIOSsaypATml8I8L3bVrIluKbJjLqR5BrxVpt/TAzrB0H0qUcD1g==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-persona/-/react-persona-9.3.0.tgz", + "integrity": "sha512-HH5CKMZVo3LR0S4ZVnRl607CKskt8KT9rUslmfeZ2mU2svxaaKMMNOVsUHsBkSc6YF0yEW0HNMqX0S9sf8pl/A==", "dependencies": { - "@fluentui/react-avatar": "^9.6.47", - "@fluentui/react-badge": "^9.2.48", - "@fluentui/react-jsx-runtime": "^9.0.48", + "@fluentui/react-avatar": "^9.7.0", + "@fluentui/react-badge": "^9.2.50", + "@fluentui/react-jsx-runtime": "^9.0.50", "@fluentui/react-shared-contexts": "^9.21.2", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1748,20 +1774,20 @@ } }, "node_modules/@fluentui/react-popover": { - "version": "9.9.29", - "resolved": "https://registry.npmjs.org/@fluentui/react-popover/-/react-popover-9.9.29.tgz", - "integrity": "sha512-RAkL9rqUetCL+ie6AoChNwjKEVZweEyOGwExOIZW0U3kZ9dv87RHWFZrzl3EtiXaJ0c3BpvuMgZWpCVc+XKw2g==", + "version": "9.10.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-popover/-/react-popover-9.10.0.tgz", + "integrity": "sha512-8S5RnKewpGqUD2GPKXC26W46wKT7cE1qQRf0D64f2goAzJcyJy+FXQ8KtBW2kHn+btpirw4IYtTPE8+TKEHkrw==", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.13.12", - "@fluentui/react-context-selector": "^9.1.71", - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-portal": "^9.4.40", - "@fluentui/react-positioning": "^9.16.0", + "@fluentui/react-aria": "^9.14.0", + "@fluentui/react-context-selector": "^9.1.72", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-portal": "^9.5.0", + "@fluentui/react-positioning": "^9.16.3", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1773,13 +1799,13 @@ } }, "node_modules/@fluentui/react-portal": { - "version": "9.4.40", - "resolved": "https://registry.npmjs.org/@fluentui/react-portal/-/react-portal-9.4.40.tgz", - "integrity": "sha512-YLpazsKAsc9u6x7z9E7vAIUcn8829PTECOtWNwDXLc9iSFKtTIO1HntybGkEtptb+2TYiquJgG+Lpg9YKFkaYQ==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-portal/-/react-portal-9.5.0.tgz", + "integrity": "sha512-3nLkZ3P8iAm/uwVGRXcncgP/cYUWpcl6kP1l3W/7f092fDRv7QNy4eMZrVVYocNoJjpulemrfOn64wgIPemU6Q==", "dependencies": { "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-tabster": "^9.24.0", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1", "use-disposable": "^1.0.1" @@ -1804,15 +1830,15 @@ } }, "node_modules/@fluentui/react-positioning": { - "version": "9.16.0", - "resolved": "https://registry.npmjs.org/@fluentui/react-positioning/-/react-positioning-9.16.0.tgz", - "integrity": "sha512-tVmsiH8bv654+dJYm6bmDA5E+Oo7j9J15tzlWvl7EowE9EBPNqZah5rTAyCoODkdU23pJcq43o2QpLGjPc36XQ==", + "version": "9.16.3", + "resolved": "https://registry.npmjs.org/@fluentui/react-positioning/-/react-positioning-9.16.3.tgz", + "integrity": "sha512-z8phNPD0BhREOPsqt4iMsIvzzkBbfuA3TaXwQeLhM0imISWBnctTAaLjDZDQno/Bt/pbEd+qulPV7fagL20tWQ==", "dependencies": { "@floating-ui/devtools": "0.2.1", - "@floating-ui/dom": "^1.2.0", + "@floating-ui/dom": "^1.6.12", "@fluentui/react-shared-contexts": "^9.21.2", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1824,15 +1850,15 @@ } }, "node_modules/@fluentui/react-progress": { - "version": "9.1.94", - "resolved": "https://registry.npmjs.org/@fluentui/react-progress/-/react-progress-9.1.94.tgz", - "integrity": "sha512-Tfff8O5xMpji2oBeOuhp/yQolUqkpTQ1Ml8kIS/QS+nQ36XRAd/CSnI/OGyd/2Qsa9g93+XgXyopUemz1bUPAA==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-progress/-/react-progress-9.2.0.tgz", + "integrity": "sha512-Fclooh/8kyxo1UEyNlbI8QRjafMCokgHt3Iuk7WVNXnsUXUM5NUsgpfXPCgEJud0mEWVbzZ18IQabdFS7IJ6wQ==", "dependencies": { - "@fluentui/react-field": "^9.1.83", - "@fluentui/react-jsx-runtime": "^9.0.48", + "@fluentui/react-field": "^9.2.0", + "@fluentui/react-jsx-runtime": "^9.0.50", "@fluentui/react-shared-contexts": "^9.21.2", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1844,16 +1870,16 @@ } }, "node_modules/@fluentui/react-provider": { - "version": "9.18.2", - "resolved": "https://registry.npmjs.org/@fluentui/react-provider/-/react-provider-9.18.2.tgz", - "integrity": "sha512-OVOGSYtcgl13nsQEIDEvhdL/d9LbA0gS87r4Kb2lWIn3iK3bLSjeYbNi++WLMQspaAI38jLSLrXyEoInN1WOdg==", + "version": "9.20.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-provider/-/react-provider-9.20.0.tgz", + "integrity": "sha512-dfcdZJF5y0sk5zllQjoBK/Vehm1fVmxosivRp5tJM7qh95SM9NSjhf47TmG70JGdFeZdU5mJ9iWBPvw5ekdRVQ==", "dependencies": { "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", + "@fluentui/react-jsx-runtime": "^9.0.50", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/core": "^1.16.0", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" @@ -1866,17 +1892,17 @@ } }, "node_modules/@fluentui/react-radio": { - "version": "9.2.39", - "resolved": "https://registry.npmjs.org/@fluentui/react-radio/-/react-radio-9.2.39.tgz", - "integrity": "sha512-avEG2oM31ty69D4+OrZCakClleGgkJiqPyx6aVqyskH7Hy0/iC3TDMDpwkSY5QeLOvy+dNyhCNxY+rMuuVHAgA==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-radio/-/react-radio-9.3.0.tgz", + "integrity": "sha512-jsrVNISLRK+p/1Cwwx2oa+saHyeWr9PI5pk7GkVkWOUXOZoc3GmZRG6PbWXsQh7Ykd0JikoBX39RruUzafGt4w==", "dependencies": { - "@fluentui/react-field": "^9.1.83", - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-label": "^9.1.81", + "@fluentui/react-field": "^9.2.0", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-label": "^9.1.83", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1888,15 +1914,15 @@ } }, "node_modules/@fluentui/react-rating": { - "version": "9.0.26", - "resolved": "https://registry.npmjs.org/@fluentui/react-rating/-/react-rating-9.0.26.tgz", - "integrity": "sha512-SEL1uiiij+DMUTtvrJnawnni7xzbl1JQ3IvMN1I5PYw8uJNTL+JylF1P8/rltOd9xOCat1wsu7WsmzsahKnIUA==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-rating/-/react-rating-9.1.0.tgz", + "integrity": "sha512-9nXwWsUTpnCuwZfYmkn2SbOl+F1LV11klGcse3OxWrNld3ANYP2L8SJT75t3gp+V01/qUHVEwPjhfIAaJKhf9g==", "dependencies": { "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1908,15 +1934,15 @@ } }, "node_modules/@fluentui/react-search": { - "version": "9.0.26", - "resolved": "https://registry.npmjs.org/@fluentui/react-search/-/react-search-9.0.26.tgz", - "integrity": "sha512-pXmIG6L1bQk2eWPnnvFDczn67PcXjAuI/tT1N9tD+/iAc0SCz0sWN9S2rKTaYrrSVhDbUbM1EKyGci+MVlsW/A==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-search/-/react-search-9.1.0.tgz", + "integrity": "sha512-xqIiQEOFLyqajDrw2l+pvhPO2mXwgzNzGlAQJc3hTNS8yapYrVsCCUBqX1SXHZdT6J1ELKYuYwazUXI4bjlXWQ==", "dependencies": { "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-input": "^9.4.96", - "@fluentui/react-jsx-runtime": "^9.0.48", + "@fluentui/react-input": "^9.5.0", + "@fluentui/react-jsx-runtime": "^9.0.50", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1928,16 +1954,16 @@ } }, "node_modules/@fluentui/react-select": { - "version": "9.1.94", - "resolved": "https://registry.npmjs.org/@fluentui/react-select/-/react-select-9.1.94.tgz", - "integrity": "sha512-kb0yeBQ41BlWNQZ/pjbgl21VFwlZc9hmm8YYriR+bc6cvRSj/oLAFj5/3XtB0DhjYO/IorvxCVI5vkSZnGgrnQ==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-select/-/react-select-9.2.0.tgz", + "integrity": "sha512-vEPlDKDtBdgxOSgVcOSi9LTIGtW3eyBGs7gW2IeqcVBP3FlBRCDalG6cqjOuzRHR67fDYuPS2Hh/IaQcMZlcxw==", "dependencies": { - "@fluentui/react-field": "^9.1.83", + "@fluentui/react-field": "^9.2.0", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", + "@fluentui/react-jsx-runtime": "^9.0.50", "@fluentui/react-shared-contexts": "^9.21.2", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1962,15 +1988,15 @@ } }, "node_modules/@fluentui/react-skeleton": { - "version": "9.1.23", - "resolved": "https://registry.npmjs.org/@fluentui/react-skeleton/-/react-skeleton-9.1.23.tgz", - "integrity": "sha512-lDNP5xYnWJj6IHNd7FHVCi+p2XV7d2cIkwMJ5usKeoTTnWr/1E2T8P+pNsOyku68/r6zuozqtCOmCI2u/OLo4g==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-skeleton/-/react-skeleton-9.2.0.tgz", + "integrity": "sha512-afQb+yzCuh06rkO3Ch98w7YUf/rwVgq3upH/zzIC4byLusHAps/67AaGin1ppOGEZm6aAmWhqrZF8+DCPBRfIQ==", "dependencies": { - "@fluentui/react-field": "^9.1.83", - "@fluentui/react-jsx-runtime": "^9.0.48", + "@fluentui/react-field": "^9.2.0", + "@fluentui/react-jsx-runtime": "^9.0.50", "@fluentui/react-shared-contexts": "^9.21.2", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -1982,16 +2008,16 @@ } }, "node_modules/@fluentui/react-slider": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-slider/-/react-slider-9.2.3.tgz", - "integrity": "sha512-2vaAR6eTDwhQf5t5d7nb+oHEbzD3nKbBnkdOVAieknmQV/Xxum8P6v1KY8FmYmwFhjxKaUYIZ9j9/mT95DEo+A==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-slider/-/react-slider-9.3.0.tgz", + "integrity": "sha512-rRajn0oFxRHMIqiLfylquhCOTRaIFl1YeakUvknRByp1rXI8uUP+mmbPQXq8cFivdZtqsU1wX39agls/wSrRWA==", "dependencies": { - "@fluentui/react-field": "^9.1.83", - "@fluentui/react-jsx-runtime": "^9.0.48", + "@fluentui/react-field": "^9.2.0", + "@fluentui/react-jsx-runtime": "^9.0.50", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -2003,17 +2029,17 @@ } }, "node_modules/@fluentui/react-spinbutton": { - "version": "9.2.95", - "resolved": "https://registry.npmjs.org/@fluentui/react-spinbutton/-/react-spinbutton-9.2.95.tgz", - "integrity": "sha512-hJMXr+7X0wJhLQq0XmfQ2FLxvUxDTeUkHlEowtYjJJJDoepzuTm4chdyLz+Q4MSEV+NiKioLVMfNs750S7Z0Lw==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-spinbutton/-/react-spinbutton-9.3.0.tgz", + "integrity": "sha512-RuIkqvxuHM/Na3LACenmAhag5s0TMnNgggWh5ZYasgMg12lFhg4bx8+PXzb2lZ7gUgVn+6WrukVzDUJ7MNC7vw==", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-field": "^9.1.83", + "@fluentui/react-field": "^9.2.0", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", + "@fluentui/react-jsx-runtime": "^9.0.50", "@fluentui/react-shared-contexts": "^9.21.2", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -2025,15 +2051,15 @@ } }, "node_modules/@fluentui/react-spinner": { - "version": "9.5.5", - "resolved": "https://registry.npmjs.org/@fluentui/react-spinner/-/react-spinner-9.5.5.tgz", - "integrity": "sha512-PQSU0kJxOXBLwR/bNO996HkSqZ6mVWhDeT6Bt0gP+D+USl3Akj9cUnNtlzw5781tcdks/7U7SovqqKym3HTKoA==", + "version": "9.5.7", + "resolved": "https://registry.npmjs.org/@fluentui/react-spinner/-/react-spinner-9.5.7.tgz", + "integrity": "sha512-DdfQAbdiz50V2DqRSX1MfN6ehw+9etcLysueSeH2n1PnpZ8TVEZYrJzBW608S/bCWrR8OAEVoY/3W/nDjwf8qw==", "dependencies": { - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-label": "^9.1.81", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-label": "^9.1.83", "@fluentui/react-shared-contexts": "^9.21.2", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -2045,18 +2071,18 @@ } }, "node_modules/@fluentui/react-swatch-picker": { - "version": "9.1.17", - "resolved": "https://registry.npmjs.org/@fluentui/react-swatch-picker/-/react-swatch-picker-9.1.17.tgz", - "integrity": "sha512-VG44DspajQFOvFpe71NyB7q1fBovtB41udvJCiaD5NVsUFo7THgtjJrgGjd4EUeruuoQ4SxJEv3T7HymFL64BA==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-swatch-picker/-/react-swatch-picker-9.2.0.tgz", + "integrity": "sha512-tFwZ2e6HwJnuVtQqx6pxB+dKEXL01xFXUKKUDCNtmEeVtpm/f7SMK5T2MT0FGbIVca1QXL4PaT1wE4tuZu4CSg==", "dependencies": { - "@fluentui/react-context-selector": "^9.1.71", - "@fluentui/react-field": "^9.1.83", + "@fluentui/react-context-selector": "^9.1.72", + "@fluentui/react-field": "^9.2.0", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", + "@fluentui/react-jsx-runtime": "^9.0.50", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -2068,18 +2094,18 @@ } }, "node_modules/@fluentui/react-switch": { - "version": "9.1.101", - "resolved": "https://registry.npmjs.org/@fluentui/react-switch/-/react-switch-9.1.101.tgz", - "integrity": "sha512-7m7FiKVAyVOQbdeoiHWMbtnGxlcnSm7quhs9OySuP4fGRd0nR1DalmjOE4h/tbysyF/n0FcgGu3bD0dh5VgD7g==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-switch/-/react-switch-9.2.0.tgz", + "integrity": "sha512-tN//X+H7G+MwmcurfaKjw5EkKZLldrD9T6pyNnzqZQyPZLqkByvMuABgSRBINO0kCnEYt/VCQzirSvBHLQV+Dw==", "dependencies": { - "@fluentui/react-field": "^9.1.83", + "@fluentui/react-field": "^9.2.0", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-label": "^9.1.81", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-label": "^9.1.83", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -2091,22 +2117,22 @@ } }, "node_modules/@fluentui/react-table": { - "version": "9.15.26", - "resolved": "https://registry.npmjs.org/@fluentui/react-table/-/react-table-9.15.26.tgz", - "integrity": "sha512-EMYQXxjtVYj6moL5lVQiA5hVEqm2raDv1nphX2wUGRb6Yy8YS5gS42B5DtNMPPnc6sDPwxhrqJL7BIeIHy5ILA==", + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-table/-/react-table-9.16.0.tgz", + "integrity": "sha512-RCAJmcLLIdpciIuHJ6uK/1lMfYDz5LvAdujfRP+ywMxPmTDSslE1yVBZ/E3NyebHkjFnfgoV/maJ9D/VoQpVbw==", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.13.12", - "@fluentui/react-avatar": "^9.6.47", - "@fluentui/react-checkbox": "^9.2.44", - "@fluentui/react-context-selector": "^9.1.71", + "@fluentui/react-aria": "^9.14.0", + "@fluentui/react-avatar": "^9.7.0", + "@fluentui/react-checkbox": "^9.3.0", + "@fluentui/react-context-selector": "^9.1.72", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-radio": "^9.2.39", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-radio": "^9.3.0", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -2118,16 +2144,16 @@ } }, "node_modules/@fluentui/react-tabs": { - "version": "9.6.5", - "resolved": "https://registry.npmjs.org/@fluentui/react-tabs/-/react-tabs-9.6.5.tgz", - "integrity": "sha512-IulnVxI6gQEfmsdlVjmP33qtyzzAw2J/oBlXfSPz2JbARx6KEUMak7YNnIWm1Jv35lphQBuL6WVItDWY+9+xFg==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-tabs/-/react-tabs-9.7.0.tgz", + "integrity": "sha512-NZwC+9X437BX1TdtzaPCdEE84T4up9YpecoF2bxp2AlTIGB52265En5BPZidT+SSHz+YBvC1kukoWJxtRz1usg==", "dependencies": { - "@fluentui/react-context-selector": "^9.1.71", - "@fluentui/react-jsx-runtime": "^9.0.48", + "@fluentui/react-context-selector": "^9.1.72", + "@fluentui/react-jsx-runtime": "^9.0.50", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -2139,17 +2165,17 @@ } }, "node_modules/@fluentui/react-tabster": { - "version": "9.23.2", - "resolved": "https://registry.npmjs.org/@fluentui/react-tabster/-/react-tabster-9.23.2.tgz", - "integrity": "sha512-DG1rZy8dkD24urQQywhRPfo13qEALCHUWSBmuAYnZ9wAHkGRbDVgdGZLEEUkvP5a6PxdDsFD5AGnC4C+56gKOg==", + "version": "9.24.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-tabster/-/react-tabster-9.24.0.tgz", + "integrity": "sha512-/O0/zXGUpZwYwcF7hPu/xcV32+A2NfkBHf6UoEze3a6meBj2mC+MEnPcqCnBAOu50GzorFLtLihWHRJGGq9YVA==", "dependencies": { "@fluentui/react-shared-contexts": "^9.21.2", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1", "keyborg": "^2.6.0", - "tabster": "^8.2.0" + "tabster": "^8.5.0" }, "peerDependencies": { "@types/react": ">=16.14.0 <19.0.0", @@ -2159,24 +2185,24 @@ } }, "node_modules/@fluentui/react-tag-picker": { - "version": "9.3.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-tag-picker/-/react-tag-picker-9.3.13.tgz", - "integrity": "sha512-F4TLdVR+ikGqFZVuM6CqVdCTqNYzJm5YY6cvMXlbN/nOFM6/sW/cxrdtNQ2tfgp+k4HXIzqOvd2ohtCca9DOBQ==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-tag-picker/-/react-tag-picker-9.5.0.tgz", + "integrity": "sha512-nySVi6pxroi+nFGkcPqyT9BFIQ248B7uA/2WJQPQDIcb9jRglU+iHjcWOt3nZzCykD9DhsCiGA2nJC2Qs+xcMw==", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.13.12", - "@fluentui/react-combobox": "^9.13.15", - "@fluentui/react-context-selector": "^9.1.71", - "@fluentui/react-field": "^9.1.83", + "@fluentui/react-aria": "^9.14.0", + "@fluentui/react-combobox": "^9.14.0", + "@fluentui/react-context-selector": "^9.1.72", + "@fluentui/react-field": "^9.2.0", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-portal": "^9.4.40", - "@fluentui/react-positioning": "^9.16.0", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-portal": "^9.5.0", + "@fluentui/react-positioning": "^9.16.3", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", - "@fluentui/react-tags": "^9.3.27", + "@fluentui/react-tabster": "^9.24.0", + "@fluentui/react-tags": "^9.4.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -2188,19 +2214,19 @@ } }, "node_modules/@fluentui/react-tags": { - "version": "9.3.27", - "resolved": "https://registry.npmjs.org/@fluentui/react-tags/-/react-tags-9.3.27.tgz", - "integrity": "sha512-lJDXEI8KClPMZTnnviVegcvGIvWQXXT/fAq6cZm30EnzmM3hRLJFMDFpCLoCAWoYsK2Nyh2xyTny4Vr+/dE4Vg==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-tags/-/react-tags-9.4.0.tgz", + "integrity": "sha512-Pvvwtn11a0KwLPDRRaA00K8y5xNVsnnpPWH7ye4LKBP44F3+0jtYe2EWTkpr2cWZymVYEvxtfbIjE/a4PoXa8Q==", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.13.12", - "@fluentui/react-avatar": "^9.6.47", + "@fluentui/react-aria": "^9.14.0", + "@fluentui/react-avatar": "^9.7.0", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", + "@fluentui/react-jsx-runtime": "^9.0.50", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -2212,20 +2238,20 @@ } }, "node_modules/@fluentui/react-teaching-popover": { - "version": "9.1.26", - "resolved": "https://registry.npmjs.org/@fluentui/react-teaching-popover/-/react-teaching-popover-9.1.26.tgz", - "integrity": "sha512-AtMHNS8cQDVJoWpJsSInvNFcwUA+4bC+qXSAjxXK9CYAxztkqGmFoADqlvxSU7QufNwI/9aBR0AcmkefyM4/Ew==", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-teaching-popover/-/react-teaching-popover-9.3.0.tgz", + "integrity": "sha512-q8ZSY4aupprnX6wEU1TJ4jmtfVF01vE3d3cO/wp7Mk/8V1JBYZVsw36b/TBQox3zIwOmhJRkfvakB+VDnhWfYA==", "dependencies": { - "@fluentui/react-aria": "^9.13.12", - "@fluentui/react-button": "^9.3.98", - "@fluentui/react-context-selector": "^9.1.71", + "@fluentui/react-aria": "^9.14.0", + "@fluentui/react-button": "^9.4.0", + "@fluentui/react-context-selector": "^9.1.72", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-popover": "^9.9.29", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-popover": "^9.10.0", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1", "use-sync-external-store": "^1.2.0" @@ -2238,14 +2264,14 @@ } }, "node_modules/@fluentui/react-text": { - "version": "9.4.30", - "resolved": "https://registry.npmjs.org/@fluentui/react-text/-/react-text-9.4.30.tgz", - "integrity": "sha512-LwJL+daufTuTmelIKIYfzKjb6WdHzq4GiOD1COjElyAd8K5/hrsUB+oqKs6UxCRRDzHmuChLvInGiVIyAVunPw==", + "version": "9.4.32", + "resolved": "https://registry.npmjs.org/@fluentui/react-text/-/react-text-9.4.32.tgz", + "integrity": "sha512-unEqjCSX8MjcW7+ZavEZ2D+JYM8DEpkIlgNb8lF1ye/ACqTQINKFEc9ShAeXIk/1yVNlA02P3pjbHOWL2Vgwhg==", "dependencies": { - "@fluentui/react-jsx-runtime": "^9.0.48", + "@fluentui/react-jsx-runtime": "^9.0.50", "@fluentui/react-shared-contexts": "^9.21.2", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -2257,15 +2283,15 @@ } }, "node_modules/@fluentui/react-textarea": { - "version": "9.3.95", - "resolved": "https://registry.npmjs.org/@fluentui/react-textarea/-/react-textarea-9.3.95.tgz", - "integrity": "sha512-f9MUl9nPDnVMINmK+rnJbxP6RjSadg2DxM2YubxivCMGEapnfeOLuWnBO82RXSMs60o66Zt3FUVmsGjCZ/HJ1A==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-textarea/-/react-textarea-9.4.0.tgz", + "integrity": "sha512-Z5YVzkeYJLfvTFAWiKbI07zWT1GuIwKArrczN2yqVYt1MMgOrY1it3FVby5pljiy6lXjYHpz3o3iPR2kvMuroQ==", "dependencies": { - "@fluentui/react-field": "^9.1.83", - "@fluentui/react-jsx-runtime": "^9.0.48", + "@fluentui/react-field": "^9.2.0", + "@fluentui/react-jsx-runtime": "^9.0.50", "@fluentui/react-shared-contexts": "^9.21.2", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -2286,21 +2312,21 @@ } }, "node_modules/@fluentui/react-toast": { - "version": "9.3.63", - "resolved": "https://registry.npmjs.org/@fluentui/react-toast/-/react-toast-9.3.63.tgz", - "integrity": "sha512-jNl7pcPpkUL31C9bc/Njikojd6ozfOUqa2l9PaKdfXg4FUDC/3lMELhFyjUfyWZD8cGsRaqRTp45DgCajd7ahg==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-toast/-/react-toast-9.4.0.tgz", + "integrity": "sha512-WolR3dM8WpAOgPu7xCdN8t/RM+S8xT9sKb9x5WK3+Z/oPIkPC/C0vCTCt1bK1DOvh47Tpe9H1peIwYlUhGKhZg==", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.13.12", + "@fluentui/react-aria": "^9.14.0", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-motion": "^9.6.5", - "@fluentui/react-motion-components-preview": "^0.4.1", - "@fluentui/react-portal": "^9.4.40", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-motion": "^9.6.7", + "@fluentui/react-motion-components-preview": "^0.4.3", + "@fluentui/react-portal": "^9.5.0", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -2312,19 +2338,19 @@ } }, "node_modules/@fluentui/react-toolbar": { - "version": "9.2.13", - "resolved": "https://registry.npmjs.org/@fluentui/react-toolbar/-/react-toolbar-9.2.13.tgz", - "integrity": "sha512-6lY8YgxxstywsMh+6c66JNr1PtGE2FmPHRU5yNt0qYaZftXpOFg9UZrDcK00Um2sHTGXDZe+XlsWe4rsI1UdYQ==", - "dependencies": { - "@fluentui/react-button": "^9.3.98", - "@fluentui/react-context-selector": "^9.1.71", - "@fluentui/react-divider": "^9.2.80", - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-radio": "^9.2.39", + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-toolbar/-/react-toolbar-9.3.0.tgz", + "integrity": "sha512-nDirTIBoAGjMAD+CZ8LDLBJA71OTqf65rRsldf9OU3UFeDhj8UtPZjFw+Gv3pakNOc25amzer/06BgFj1lVM1w==", + "dependencies": { + "@fluentui/react-button": "^9.4.0", + "@fluentui/react-context-selector": "^9.1.72", + "@fluentui/react-divider": "^9.2.82", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-radio": "^9.3.0", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -2336,18 +2362,18 @@ } }, "node_modules/@fluentui/react-tooltip": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/@fluentui/react-tooltip/-/react-tooltip-9.5.2.tgz", - "integrity": "sha512-hFx63frEUB0irYg7nBbTZh/1u4Ho57BBcpmrTTV/rq5NFlVAJJGWI9jj84utk7T+nFnnA9NUfvdy8KorCoxtkQ==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-tooltip/-/react-tooltip-9.6.0.tgz", + "integrity": "sha512-NuFfh9HJ1Fwt9LhNjBPrqcqnMaKhYHLqxqUU9XzraXTXzo3wSbkUBP9W8cxm9YVUs9C3tUBbZj3vnOJx0IPaEw==", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-portal": "^9.4.40", - "@fluentui/react-positioning": "^9.16.0", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-portal": "^9.5.0", + "@fluentui/react-positioning": "^9.16.3", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -2359,25 +2385,25 @@ } }, "node_modules/@fluentui/react-tree": { - "version": "9.8.11", - "resolved": "https://registry.npmjs.org/@fluentui/react-tree/-/react-tree-9.8.11.tgz", - "integrity": "sha512-gKWzjgfjl4uVzX6fh9TAgVmil4ihBW1q84y1TIRdfB+nkLfE91KUqJRVgKqfKj3tL6mjkcvicJOZz0EKvt6iOg==", + "version": "9.10.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-tree/-/react-tree-9.10.0.tgz", + "integrity": "sha512-r7P0MxUZaAxl5IIaOpN+9CY3ucYYPFtiFREtrHuou70OxtVqoMZhgxct0OBVHP9jn+k4kS9PYn2jcu5lm2Eglg==", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.13.12", - "@fluentui/react-avatar": "^9.6.47", - "@fluentui/react-button": "^9.3.98", - "@fluentui/react-checkbox": "^9.2.44", - "@fluentui/react-context-selector": "^9.1.71", + "@fluentui/react-aria": "^9.14.0", + "@fluentui/react-avatar": "^9.7.0", + "@fluentui/react-button": "^9.4.0", + "@fluentui/react-checkbox": "^9.3.0", + "@fluentui/react-context-selector": "^9.1.72", "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.0.48", - "@fluentui/react-motion": "^9.6.5", - "@fluentui/react-motion-components-preview": "^0.4.1", - "@fluentui/react-radio": "^9.2.39", + "@fluentui/react-jsx-runtime": "^9.0.50", + "@fluentui/react-motion": "^9.6.7", + "@fluentui/react-motion-components-preview": "^0.4.3", + "@fluentui/react-radio": "^9.3.0", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-tabster": "^9.23.2", + "@fluentui/react-tabster": "^9.24.0", "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -2389,9 +2415,9 @@ } }, "node_modules/@fluentui/react-utilities": { - "version": "9.18.19", - "resolved": "https://registry.npmjs.org/@fluentui/react-utilities/-/react-utilities-9.18.19.tgz", - "integrity": "sha512-cBYq2cRc+ofVv4DTgULX5ez6IN/DiZw8IC17giA7NyxGw9ed0Y2p7nqnz/tIa655tY/ZIw5oz+bRJrEPkpzA2g==", + "version": "9.18.20", + "resolved": "https://registry.npmjs.org/@fluentui/react-utilities/-/react-utilities-9.18.20.tgz", + "integrity": "sha512-4uIgf4e4yP1HWAQapFQKNN88+L88NqbzXyQPf+NWE9lmP5xRyyMePKRX7i4PcJFdSt7lN4BYvwUxJ7DkQ/Npnw==", "dependencies": { "@fluentui/keyboard-keys": "^9.0.8", "@fluentui/react-shared-contexts": "^9.21.2", @@ -2403,13 +2429,13 @@ } }, "node_modules/@fluentui/react-virtualizer": { - "version": "9.0.0-alpha.89", - "resolved": "https://registry.npmjs.org/@fluentui/react-virtualizer/-/react-virtualizer-9.0.0-alpha.89.tgz", - "integrity": "sha512-O4nw6FxlVZHQ6B8jCqpsDo308CEyyNNCFOqqC83c7KhA43QczwX0wif8UVlkGKPjY4iwBfEB4fGRO68khN/KRQ==", + "version": "9.0.0-alpha.92", + "resolved": "https://registry.npmjs.org/@fluentui/react-virtualizer/-/react-virtualizer-9.0.0-alpha.92.tgz", + "integrity": "sha512-hT7xwMXyXco/tQRdZgPZS3O8DjJnYIKc9EnZ2qQMYrv0PEiee01WwH2NVFbhkn2utD9TZlE3Gu0j25fSYICBxQ==", "dependencies": { - "@fluentui/react-jsx-runtime": "^9.0.48", + "@fluentui/react-jsx-runtime": "^9.0.50", "@fluentui/react-shared-contexts": "^9.21.2", - "@fluentui/react-utilities": "^9.18.19", + "@fluentui/react-utilities": "^9.18.20", "@griffel/react": "^1.5.22", "@swc/helpers": "^0.5.1" }, @@ -2421,11 +2447,11 @@ } }, "node_modules/@fluentui/react-window-provider": { - "version": "2.2.28", - "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.28.tgz", - "integrity": "sha512-YdZ74HTaoDwlvLDzoBST80/17ExIl93tLJpTxnqK5jlJOAUVQ+mxLPF2HQEJq+SZr5IMXHsQ56w/KaZVRn72YA==", + "version": "2.2.29", + "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-2.2.29.tgz", + "integrity": "sha512-4hK3UFH/TESnkuwTsE5yPTa0tgCmdoMHVynJrPQj0cBKcgZfcbb/l2lUwwtdxtAJ7K1x6yeNUC1rMLGosfeDJQ==", "dependencies": { - "@fluentui/set-version": "^8.2.23", + "@fluentui/set-version": "^8.2.24", "tslib": "^2.1.0" }, "peerDependencies": { @@ -2434,34 +2460,34 @@ } }, "node_modules/@fluentui/set-version": { - "version": "8.2.23", - "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.23.tgz", - "integrity": "sha512-VPXaBsiaa3Xn/AY40nLU9bvDQ62lpMVnFzFTlQ8CbpdwrjxNlRxDUY5vRToNzp1+Zu5gD/+CgsXqIZGcry5L5w==", + "version": "8.2.24", + "resolved": "https://registry.npmjs.org/@fluentui/set-version/-/set-version-8.2.24.tgz", + "integrity": "sha512-8uNi2ThvNgF+6d3q2luFVVdk/wZV0AbRfJ85kkvf2+oSRY+f6QVK0w13vMorNhA5puumKcZniZoAfUF02w7NSg==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@fluentui/style-utilities": { - "version": "8.11.6", - "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.11.6.tgz", - "integrity": "sha512-bVFu/ONP2+GZ/JzR6NhN7+1fuMHvi+LjOfgo21HQoDakY/KwFaitLiQBQFlRpbRUVcZXQDqe4Ur6EDFAlb2I7Q==", - "dependencies": { - "@fluentui/merge-styles": "^8.6.13", - "@fluentui/set-version": "^8.2.23", - "@fluentui/theme": "^2.6.64", - "@fluentui/utilities": "^8.15.19", + "version": "8.11.7", + "resolved": "https://registry.npmjs.org/@fluentui/style-utilities/-/style-utilities-8.11.7.tgz", + "integrity": "sha512-Pyz4EViQs1zbTvkserpBSWLNiS9HFKVZ3clGuj2A0j6Wj1WUpZ2JYHCeV4Ekifx3fX54ezEC/cOCGsOr9iWHwQ==", + "dependencies": { + "@fluentui/merge-styles": "^8.6.14", + "@fluentui/set-version": "^8.2.24", + "@fluentui/theme": "^2.6.65", + "@fluentui/utilities": "^8.15.20", "@microsoft/load-themed-styles": "^1.10.26", "tslib": "^2.1.0" } }, "node_modules/@fluentui/theme": { - "version": "2.6.64", - "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.64.tgz", - "integrity": "sha512-cjzwPgq3Zsw4F6Xy7A7yN8WCeEXKTwk9lfJzEr5b00euJRuPMxkxesBbAWW43+/1l1eWVYmSm4GcEMDVD4BfXQ==", + "version": "2.6.65", + "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-2.6.65.tgz", + "integrity": "sha512-i90fReoSoq5KTqjUfac7eT26og1uSMaC+PoBsmvqVu1Oj0zXJKGb/5HJXXCAfQYr7QQkUXw0YiyfjCkdzl2R6w==", "dependencies": { - "@fluentui/merge-styles": "^8.6.13", - "@fluentui/set-version": "^8.2.23", - "@fluentui/utilities": "^8.15.19", + "@fluentui/merge-styles": "^8.6.14", + "@fluentui/set-version": "^8.2.24", + "@fluentui/utilities": "^8.15.20", "tslib": "^2.1.0" }, "peerDependencies": { @@ -2478,14 +2504,14 @@ } }, "node_modules/@fluentui/utilities": { - "version": "8.15.19", - "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.15.19.tgz", - "integrity": "sha512-20WoYz0wW7pkmur+7qxTwRfvkdAnHfylLdCYSm91WLupb0cwQ1wWZWIuyo+e0cjcvem1T9TC1+NjWs0kavTWBg==", - "dependencies": { - "@fluentui/dom-utilities": "^2.3.9", - "@fluentui/merge-styles": "^8.6.13", - "@fluentui/react-window-provider": "^2.2.28", - "@fluentui/set-version": "^8.2.23", + "version": "8.15.20", + "resolved": "https://registry.npmjs.org/@fluentui/utilities/-/utilities-8.15.20.tgz", + "integrity": "sha512-sG4d8t6WvN7bPWz+zbYC33hmc5kGm3wcRupSWxc9rS0HJPKbJ04e4o5jd7KnBnBE4oWsB4axvhyaZmy2IB7P4Q==", + "dependencies": { + "@fluentui/dom-utilities": "^2.3.10", + "@fluentui/merge-styles": "^8.6.14", + "@fluentui/react-window-provider": "^2.2.29", + "@fluentui/set-version": "^8.2.24", "tslib": "^2.1.0" }, "peerDependencies": { @@ -2494,9 +2520,9 @@ } }, "node_modules/@griffel/core": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/@griffel/core/-/core-1.18.2.tgz", - "integrity": "sha512-odJspTMohsYZLSlO/oKsf6El6px1vg1461CpPverOzS9f0xaUKh/ZGenW+MjyyZ3aQ6adkPzcr/my6JFH/zdXQ==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@griffel/core/-/core-1.19.1.tgz", + "integrity": "sha512-ZItAAOm8YH1FW0ebzOxS3jwENqd+Dz4CGiPEdgkL4kr7D6mBpjjBbQC6VRXxnA+VqHeEQGy69Ll4M1peY8MX/g==", "dependencies": { "@emotion/hash": "^0.9.0", "@griffel/style-types": "^1.3.0", @@ -2507,11 +2533,11 @@ } }, "node_modules/@griffel/react": { - "version": "1.5.27", - "resolved": "https://registry.npmjs.org/@griffel/react/-/react-1.5.27.tgz", - "integrity": "sha512-985A8iEBo++h9u96dbj3Kj5hdsBWbpkkwFpy0W8EGL0VRCzZmpb0AlWuq9pDJZACS6eZ2GAb/f9CqgVAgnTnOg==", + "version": "1.5.29", + "resolved": "https://registry.npmjs.org/@griffel/react/-/react-1.5.29.tgz", + "integrity": "sha512-xKenEIfV2PnLKVsM8yp2ZCUTknh2790937XlI88zDaO9TC8ylG10mZ3MrcgCdSecrVjKq9JKmm24tsODpkh4pw==", "dependencies": { - "@griffel/core": "^1.18.2", + "@griffel/core": "^1.19.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -2672,9 +2698,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.29.1.tgz", - "integrity": "sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz", + "integrity": "sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==", "cpu": [ "arm" ], @@ -2685,9 +2711,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.29.1.tgz", - "integrity": "sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.8.tgz", + "integrity": "sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==", "cpu": [ "arm64" ], @@ -2698,9 +2724,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.29.1.tgz", - "integrity": "sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz", + "integrity": "sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==", "cpu": [ "arm64" ], @@ -2711,9 +2737,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.29.1.tgz", - "integrity": "sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.8.tgz", + "integrity": "sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==", "cpu": [ "x64" ], @@ -2724,9 +2750,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.29.1.tgz", - "integrity": "sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.8.tgz", + "integrity": "sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==", "cpu": [ "arm64" ], @@ -2737,9 +2763,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.29.1.tgz", - "integrity": "sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.8.tgz", + "integrity": "sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==", "cpu": [ "x64" ], @@ -2750,9 +2776,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.29.1.tgz", - "integrity": "sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.8.tgz", + "integrity": "sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==", "cpu": [ "arm" ], @@ -2763,9 +2789,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.29.1.tgz", - "integrity": "sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.8.tgz", + "integrity": "sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==", "cpu": [ "arm" ], @@ -2776,9 +2802,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.29.1.tgz", - "integrity": "sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.8.tgz", + "integrity": "sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==", "cpu": [ "arm64" ], @@ -2789,9 +2815,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.29.1.tgz", - "integrity": "sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.8.tgz", + "integrity": "sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==", "cpu": [ "arm64" ], @@ -2802,9 +2828,9 @@ ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.29.1.tgz", - "integrity": "sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.8.tgz", + "integrity": "sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==", "cpu": [ "loong64" ], @@ -2815,9 +2841,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.29.1.tgz", - "integrity": "sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.8.tgz", + "integrity": "sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==", "cpu": [ "ppc64" ], @@ -2828,9 +2854,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.29.1.tgz", - "integrity": "sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.8.tgz", + "integrity": "sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==", "cpu": [ "riscv64" ], @@ -2841,9 +2867,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.29.1.tgz", - "integrity": "sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.8.tgz", + "integrity": "sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==", "cpu": [ "s390x" ], @@ -2854,9 +2880,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.29.1.tgz", - "integrity": "sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.8.tgz", + "integrity": "sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==", "cpu": [ "x64" ], @@ -2867,9 +2893,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.29.1.tgz", - "integrity": "sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.8.tgz", + "integrity": "sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==", "cpu": [ "x64" ], @@ -2880,9 +2906,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.29.1.tgz", - "integrity": "sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.8.tgz", + "integrity": "sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==", "cpu": [ "arm64" ], @@ -2893,9 +2919,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.29.1.tgz", - "integrity": "sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.8.tgz", + "integrity": "sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==", "cpu": [ "ia32" ], @@ -2906,9 +2932,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.1.tgz", - "integrity": "sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.8.tgz", + "integrity": "sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==", "cpu": [ "x64" ], @@ -3026,9 +3052,9 @@ "dev": true }, "node_modules/@types/lodash": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.13.tgz", - "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-w/P33JFeySuhN6JLkysYUK2gEmy9kHHFN7E8ro0tkfmlDOgxBDzWEZ/J8cWA+fHqFevpswDTFZnDx+R9lbL6xw==", "dev": true }, "node_modules/@types/lodash-es": { @@ -3049,14 +3075,14 @@ } }, "node_modules/@types/ms": { - "version": "0.7.34", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" }, "node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "version": "22.13.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.5.tgz", + "integrity": "sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==", "dependencies": { "undici-types": "~6.20.0" } @@ -3299,9 +3325,9 @@ } }, "node_modules/@ungap/structured-clone": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz", - "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==" }, "node_modules/@vitejs/plugin-react": { "version": "4.3.4", @@ -3547,6 +3573,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", @@ -3619,9 +3654,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz", - "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "dev": true, "funding": [ { @@ -3701,9 +3736,9 @@ } }, "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, "dependencies": { "es-errors": "^1.3.0", @@ -3739,9 +3774,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001690", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz", - "integrity": "sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==", + "version": "1.0.30001700", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz", + "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==", "dev": true, "funding": [ { @@ -3892,9 +3927,9 @@ } }, "node_modules/core-js": { - "version": "3.39.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.39.0.tgz", - "integrity": "sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==", + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.40.0.tgz", + "integrity": "sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==", "hasInstallScript": true, "optional": true, "funding": { @@ -4099,9 +4134,9 @@ } }, "node_modules/docx": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/docx/-/docx-9.1.0.tgz", - "integrity": "sha512-XOtseSTRrkKN/sV5jNBqyLazyhNpWfaUhpuKc22cs+5DavNjRQvchnohb0g0S+x/96/D06U/i0/U/Gc4E5kwuQ==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/docx/-/docx-9.2.0.tgz", + "integrity": "sha512-KNihz119m/3cqq/YE/Ci0Se7/eR5l4/8USvriQWAlhRaA+Tq0jzqtfUbSQuap+pIrXhO+lTbv0de50Be4pPmZw==", "dependencies": { "@types/node": "^22.7.5", "hash.js": "^1.1.7", @@ -4114,15 +4149,6 @@ "node": ">=10" } }, - "node_modules/dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, "node_modules/dompurify": { "version": "2.5.8", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.8.tgz", @@ -4144,30 +4170,30 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", - "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", + "version": "1.5.104", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.104.tgz", + "integrity": "sha512-Us9M2L4cO/zMBqVkJtnj353nQhMju9slHm62NprKTmdF3HH8wYOtNvDFq/JB2+ZRoGLzdvYDiATlMHs98XBM1g==", "dev": true }, "node_modules/embla-carousel": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.5.1.tgz", - "integrity": "sha512-JUb5+FOHobSiWQ2EJNaueCNT/cQU9L6XWBbWmorWPQT9bkbk+fhsuLr8wWrzXKagO3oWszBO7MSx+GfaRk4E6A==" + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.5.2.tgz", + "integrity": "sha512-xQ9oVLrun/eCG/7ru3R+I5bJ7shsD8fFwLEY7yPe27/+fDHCNj0OT5EoG5ZbFyOxOcG6yTwW8oTz/dWyFnyGpg==" }, "node_modules/embla-carousel-autoplay": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/embla-carousel-autoplay/-/embla-carousel-autoplay-8.5.1.tgz", - "integrity": "sha512-FnZklFpePfp8wbj177UwVaGFehgs+ASVcJvYLWTtHuYKURynCc3IdDn2qrn0E5Qpa3g9yeGwCS4p8QkrZmO8xg==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/embla-carousel-autoplay/-/embla-carousel-autoplay-8.5.2.tgz", + "integrity": "sha512-27emJ0px3q/c0kCHCjwRrEbYcyYUPfGO3g5IBWF1i7714TTzE6L9P81V6PHLoSMAKJ1aHoT2e7YFOsuFKCbyag==", "peerDependencies": { - "embla-carousel": "8.5.1" + "embla-carousel": "8.5.2" } }, "node_modules/embla-carousel-fade": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/embla-carousel-fade/-/embla-carousel-fade-8.5.1.tgz", - "integrity": "sha512-n7vRe2tsTW0vc0Xxtk3APoxhUSXIGh/lGRKYtBJS/SWDeXf9E3qVUst4MfHhwXaHlfu5PLqG3xIEDAr2gwbbNA==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/embla-carousel-fade/-/embla-carousel-fade-8.5.2.tgz", + "integrity": "sha512-QJ46Xy+mpijjquQeIY0d0sPSy34XduREUnz7tn1K20hcKyZYTONNIXQZu3GGNwG59cvhMqYJMw9ki92Rjd14YA==", "peerDependencies": { - "embla-carousel": "8.5.1" + "embla-carousel": "8.5.2" } }, "node_modules/entities": { @@ -4182,9 +4208,9 @@ } }, "node_modules/es-abstract": { - "version": "1.23.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.7.tgz", - "integrity": "sha512-OygGC8kIcDhXX+6yAZRGLqwi2CmEXCbLQixeGUgYeR+Qwlppqmo7DIDr8XibtEBZp+fJcoYpoatp5qwLMEdcqQ==", + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.2", @@ -4198,10 +4224,11 @@ "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", + "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.2.6", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", @@ -4222,9 +4249,12 @@ "object-inspect": "^1.13.3", "object-keys": "^1.1.1", "object.assign": "^4.1.7", + "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.3", "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", @@ -4288,9 +4318,9 @@ } }, "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, "dependencies": { "es-errors": "^1.3.0" @@ -4300,26 +4330,30 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.4", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "dev": true, "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-to-primitive": { @@ -4340,9 +4374,9 @@ } }, "node_modules/esbuild": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", - "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", "dev": true, "hasInstallScript": true, "bin": { @@ -4352,31 +4386,31 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.24.2", - "@esbuild/android-arm": "0.24.2", - "@esbuild/android-arm64": "0.24.2", - "@esbuild/android-x64": "0.24.2", - "@esbuild/darwin-arm64": "0.24.2", - "@esbuild/darwin-x64": "0.24.2", - "@esbuild/freebsd-arm64": "0.24.2", - "@esbuild/freebsd-x64": "0.24.2", - "@esbuild/linux-arm": "0.24.2", - "@esbuild/linux-arm64": "0.24.2", - "@esbuild/linux-ia32": "0.24.2", - "@esbuild/linux-loong64": "0.24.2", - "@esbuild/linux-mips64el": "0.24.2", - "@esbuild/linux-ppc64": "0.24.2", - "@esbuild/linux-riscv64": "0.24.2", - "@esbuild/linux-s390x": "0.24.2", - "@esbuild/linux-x64": "0.24.2", - "@esbuild/netbsd-arm64": "0.24.2", - "@esbuild/netbsd-x64": "0.24.2", - "@esbuild/openbsd-arm64": "0.24.2", - "@esbuild/openbsd-x64": "0.24.2", - "@esbuild/sunos-x64": "0.24.2", - "@esbuild/win32-arm64": "0.24.2", - "@esbuild/win32-ia32": "0.24.2", - "@esbuild/win32-x64": "0.24.2" + "@esbuild/aix-ppc64": "0.25.0", + "@esbuild/android-arm": "0.25.0", + "@esbuild/android-arm64": "0.25.0", + "@esbuild/android-x64": "0.25.0", + "@esbuild/darwin-arm64": "0.25.0", + "@esbuild/darwin-x64": "0.25.0", + "@esbuild/freebsd-arm64": "0.25.0", + "@esbuild/freebsd-x64": "0.25.0", + "@esbuild/linux-arm": "0.25.0", + "@esbuild/linux-arm64": "0.25.0", + "@esbuild/linux-ia32": "0.25.0", + "@esbuild/linux-loong64": "0.25.0", + "@esbuild/linux-mips64el": "0.25.0", + "@esbuild/linux-ppc64": "0.25.0", + "@esbuild/linux-riscv64": "0.25.0", + "@esbuild/linux-s390x": "0.25.0", + "@esbuild/linux-x64": "0.25.0", + "@esbuild/netbsd-arm64": "0.25.0", + "@esbuild/netbsd-x64": "0.25.0", + "@esbuild/openbsd-arm64": "0.25.0", + "@esbuild/openbsd-x64": "0.25.0", + "@esbuild/sunos-x64": "0.25.0", + "@esbuild/win32-arm64": "0.25.0", + "@esbuild/win32-ia32": "0.25.0", + "@esbuild/win32-x64": "0.25.0" } }, "node_modules/escalade": { @@ -4752,9 +4786,9 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.37.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.3.tgz", - "integrity": "sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==", + "version": "7.37.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz", + "integrity": "sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==", "dev": true, "dependencies": { "array-includes": "^3.1.8", @@ -4993,16 +5027,16 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -5033,9 +5067,9 @@ "dev": true }, "node_modules/fastq": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", - "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.0.tgz", + "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -5106,18 +5140,24 @@ } }, "node_modules/flatted": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true }, "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, "dependencies": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/fs.realpath": { @@ -5188,21 +5228,21 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.6.tgz", - "integrity": "sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "dunder-proto": "^1.0.0", + "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "math-intrinsics": "^1.0.0" + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -5211,6 +5251,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-symbol-description": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", @@ -5229,9 +5282,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", - "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", + "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", "dev": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -5455,15 +5508,15 @@ } }, "node_modules/hast-util-from-parse5": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.2.tgz", - "integrity": "sha512-SfMzfdAi/zAoZ1KkFEyyeXBn7u/ShQrfd675ZEE9M3qj+PMFX05xubzRyF76CCSJu8au9jgVxDV1+okFvgZU4A==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", + "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", "hastscript": "^9.0.0", - "property-information": "^6.0.0", + "property-information": "^7.0.0", "vfile": "^6.0.0", "vfile-location": "^5.0.0", "web-namespaces": "^2.0.0" @@ -5510,9 +5563,9 @@ } }, "node_modules/hast-util-to-jsx-runtime": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.2.tgz", - "integrity": "sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.5.tgz", + "integrity": "sha512-gHD+HoFxOMmmXLuq9f2dZDMQHVcplCVpMfBNRpJsF03yyLZvJGzsFORe8orVuYDX9k2w0VH0uF8oryFd1whqKQ==", "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", @@ -5524,7 +5577,7 @@ "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", - "property-information": "^6.0.0", + "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-object": "^1.0.0", "unist-util-position": "^5.0.0", @@ -5553,6 +5606,15 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-parse5/node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/hast-util-whitespace": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", @@ -5566,14 +5628,14 @@ } }, "node_modules/hastscript": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.0.tgz", - "integrity": "sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", + "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-parse-selector": "^4.0.0", - "property-information": "^6.0.0", + "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0" }, "funding": { @@ -5627,9 +5689,9 @@ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" }, "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "dependencies": { "parent-module": "^1.0.0", @@ -5726,12 +5788,16 @@ } }, "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -5756,12 +5822,12 @@ } }, "node_modules/is-boolean-object": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", - "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dev": true, "dependencies": { - "call-bound": "^1.0.2", + "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" }, "engines": { @@ -5880,12 +5946,15 @@ } }, "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -6078,12 +6147,12 @@ } }, "node_modules/is-weakref": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", - "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, "dependencies": { - "call-bound": "^1.0.2" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -6120,16 +6189,16 @@ "dev": true }, "node_modules/iterator.prototype": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.4.tgz", - "integrity": "sha512-x4WH0BWmrMmg4oHHl+duwubhrvczGlyuGAZu3nvrf0UXOfPu8IhZObFEr7DE/iv01YgVZrsOiRcqw2srkKEDIA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", "dev": true, "dependencies": { "define-data-property": "^1.1.4", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", "has-symbols": "^1.1.0", - "reflect.getprototypeof": "^1.0.8", "set-function-name": "^2.0.2" }, "engines": { @@ -6352,9 +6421,9 @@ } }, "node_modules/mdast-util-find-and-replace": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz", - "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", @@ -6401,9 +6470,9 @@ } }, "node_modules/mdast-util-gfm": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", - "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", @@ -6435,9 +6504,9 @@ } }, "node_modules/mdast-util-gfm-footnote": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", - "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.1.0", @@ -6513,9 +6582,9 @@ } }, "node_modules/mdast-util-mdx-jsx": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz", - "integrity": "sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", @@ -6764,9 +6833,9 @@ } }, "node_modules/micromark-extension-gfm-table": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz", - "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", @@ -7111,9 +7180,9 @@ } }, "node_modules/micromark-util-subtokenize": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.3.tgz", - "integrity": "sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.4.tgz", + "integrity": "sha512-N6hXjrin2GTJDe3MVjf5FuXpm12PGm80BrUAeub9XFXca8JZbP+oIwY4LJSVwFUCL1IPm/WwSVUN7goFHmSGGQ==", "funding": [ { "type": "GitHub Sponsors", @@ -7209,9 +7278,9 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/nanoid": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz", - "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.2.tgz", + "integrity": "sha512-b+CiXQCNMUGe0Ri64S9SXFcP9hogjAJ2Rd6GdVxhPLRm7mhGaM7VgOvCAJ1ZshfHbqVDI3uqTI5C8/GaKuLI7g==", "funding": [ { "type": "github", @@ -7246,9 +7315,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, "engines": { "node": ">= 0.4" @@ -7376,6 +7445,23 @@ "node": ">= 0.8.0" } }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -7524,18 +7610,18 @@ } }, "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", "dev": true, "engines": { "node": ">= 0.4" } }, "node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "dev": true, "funding": [ { @@ -7552,7 +7638,7 @@ } ], "dependencies": { - "nanoid": "^3.3.7", + "nanoid": "^3.3.8", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -7588,9 +7674,9 @@ } }, "node_modules/prettier": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", - "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.2.tgz", + "integrity": "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -7623,9 +7709,9 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/property-information": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", - "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", + "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -7711,11 +7797,12 @@ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, "node_modules/react-markdown": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.0.1.tgz", - "integrity": "sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-9.1.0.tgz", + "integrity": "sha512-xaijuJB0kzGiUdG7nc2MOMDUDBWPyGAjZtUrow9XxUeua8IqeP+VlIfAZ3bphpcLTnSZXz6z9jcVC/TCwbfgdw==", "dependencies": { "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "html-url-attributes": "^3.0.0", @@ -7760,9 +7847,9 @@ } }, "node_modules/react-router": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.1.1.tgz", - "integrity": "sha512-39sXJkftkKWRZ2oJtHhCxmoCrBCULr/HAH4IT5DHlgu/Q0FCPV0S4Lx+abjDTx/74xoZzNYDYbOZWlJjruyuDQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.2.0.tgz", + "integrity": "sha512-fXyqzPgCPZbqhrk7k3hPcCpYIlQ2ugIXDboHUzhJISFVy2DEPsmHgN588MyGmkIOv3jDgNfUE3kJi83L28s/LQ==", "dependencies": { "@types/cookie": "^0.6.0", "cookie": "^1.0.1", @@ -7783,11 +7870,11 @@ } }, "node_modules/react-router-dom": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.1.1.tgz", - "integrity": "sha512-vSrQHWlJ5DCfyrhgo0k6zViOe9ToK8uT5XGSmnuC2R3/g261IdIMpZVqfjD6vWSXdnf5Czs4VA/V60oVR6/jnA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.2.0.tgz", + "integrity": "sha512-cU7lTxETGtQRQbafJubvZKHEn5izNABxZhBY0Jlzdv0gqQhCPQt2J8aN5ZPjS6mQOXn5NnirWNh+FpE8TTYN0Q==", "dependencies": { - "react-router": "7.1.1" + "react-router": "7.2.0" }, "engines": { "node": ">=20.0.0" @@ -7797,21 +7884,6 @@ "react-dom": ">=18" } }, - "node_modules/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", - "dependencies": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - }, - "peerDependencies": { - "react": ">=16.6.0", - "react-dom": ">=16.6.0" - } - }, "node_modules/react-uuid": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/react-uuid/-/react-uuid-2.0.0.tgz", @@ -7833,18 +7905,18 @@ } }, "node_modules/reflect.getprototypeof": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.9.tgz", - "integrity": "sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "dev": true, "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "dunder-proto": "^1.0.1", - "es-abstract": "^1.23.6", + "es-abstract": "^1.23.9", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" }, "engines": { @@ -7860,14 +7932,16 @@ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/regexp.prototype.flags": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", - "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "dev": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", "set-function-name": "^2.0.2" }, "engines": { @@ -7892,9 +7966,9 @@ } }, "node_modules/remark-gfm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz", - "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", @@ -8079,9 +8153,9 @@ } }, "node_modules/rollup": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.29.1.tgz", - "integrity": "sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.8.tgz", + "integrity": "sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==", "dev": true, "dependencies": { "@types/estree": "1.0.6" @@ -8094,25 +8168,25 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.29.1", - "@rollup/rollup-android-arm64": "4.29.1", - "@rollup/rollup-darwin-arm64": "4.29.1", - "@rollup/rollup-darwin-x64": "4.29.1", - "@rollup/rollup-freebsd-arm64": "4.29.1", - "@rollup/rollup-freebsd-x64": "4.29.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.29.1", - "@rollup/rollup-linux-arm-musleabihf": "4.29.1", - "@rollup/rollup-linux-arm64-gnu": "4.29.1", - "@rollup/rollup-linux-arm64-musl": "4.29.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.29.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.29.1", - "@rollup/rollup-linux-riscv64-gnu": "4.29.1", - "@rollup/rollup-linux-s390x-gnu": "4.29.1", - "@rollup/rollup-linux-x64-gnu": "4.29.1", - "@rollup/rollup-linux-x64-musl": "4.29.1", - "@rollup/rollup-win32-arm64-msvc": "4.29.1", - "@rollup/rollup-win32-ia32-msvc": "4.29.1", - "@rollup/rollup-win32-x64-msvc": "4.29.1", + "@rollup/rollup-android-arm-eabi": "4.34.8", + "@rollup/rollup-android-arm64": "4.34.8", + "@rollup/rollup-darwin-arm64": "4.34.8", + "@rollup/rollup-darwin-x64": "4.34.8", + "@rollup/rollup-freebsd-arm64": "4.34.8", + "@rollup/rollup-freebsd-x64": "4.34.8", + "@rollup/rollup-linux-arm-gnueabihf": "4.34.8", + "@rollup/rollup-linux-arm-musleabihf": "4.34.8", + "@rollup/rollup-linux-arm64-gnu": "4.34.8", + "@rollup/rollup-linux-arm64-musl": "4.34.8", + "@rollup/rollup-linux-loongarch64-gnu": "4.34.8", + "@rollup/rollup-linux-powerpc64le-gnu": "4.34.8", + "@rollup/rollup-linux-riscv64-gnu": "4.34.8", + "@rollup/rollup-linux-s390x-gnu": "4.34.8", + "@rollup/rollup-linux-x64-gnu": "4.34.8", + "@rollup/rollup-linux-x64-musl": "4.34.8", + "@rollup/rollup-win32-arm64-msvc": "4.34.8", + "@rollup/rollup-win32-ia32-msvc": "4.34.8", + "@rollup/rollup-win32-x64-msvc": "4.34.8", "fsevents": "~2.3.2" } }, @@ -8177,6 +8251,28 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/safe-regex-test": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", @@ -8209,9 +8305,9 @@ } }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -8257,6 +8353,20 @@ "node": ">= 0.4" } }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -8547,9 +8657,9 @@ } }, "node_modules/stylis": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.4.tgz", - "integrity": "sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==" + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==" }, "node_modules/supports-color": { "version": "7.2.0", @@ -8585,9 +8695,9 @@ } }, "node_modules/tabster": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/tabster/-/tabster-8.2.0.tgz", - "integrity": "sha512-Gvplk/Yl/12aVFA6FPOqGcq31Qv8hbPfYO0N+6IxrRgRT6eSLsipT6gkZBYjyOwGsp6BD5XlZAuJgupfG/GHoA==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/tabster/-/tabster-8.5.0.tgz", + "integrity": "sha512-ePkJm9nycgh4MeW2yXY6QBa4btvwfb4h6+i1uYRAzRxQVf/AJMpN4mHooZKQceM4yQkCjfNibfGtC6DnPmo9vQ==", "dependencies": { "keyborg": "2.6.0", "tslib": "^2.3.1" @@ -8783,9 +8893,9 @@ } }, "node_modules/typescript": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", - "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -8900,9 +9010,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", "dev": true, "funding": [ { @@ -8920,7 +9030,7 @@ ], "dependencies": { "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -9011,14 +9121,14 @@ } }, "node_modules/vite": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.6.tgz", - "integrity": "sha512-NSjmUuckPmDU18bHz7QZ+bTYhRR0iA72cs2QAxCqDpafJ0S6qetco0LB3WW2OxlMHS0JmAv+yZ/R3uPmMyGTjQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.0.tgz", + "integrity": "sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==", "dev": true, "dependencies": { - "esbuild": "^0.24.2", - "postcss": "^8.4.49", - "rollup": "^4.23.0" + "esbuild": "^0.25.0", + "postcss": "^8.5.3", + "rollup": "^4.30.1" }, "bin": { "vite": "bin/vite.js" diff --git a/ResearchAssistant/App/frontend/package.json b/ResearchAssistant/App/frontend/package.json index c9dd093a..66836d9e 100644 --- a/ResearchAssistant/App/frontend/package.json +++ b/ResearchAssistant/App/frontend/package.json @@ -9,23 +9,23 @@ "watch": "tsc && vite build --watch" }, "dependencies": { - "@fluentui/react": "^8.122.2", - "@fluentui/react-components": "^9.56.8", + "@fluentui/react": "^8.122.9", + "@fluentui/react-components": "^9.58.3", "@fluentui/react-hooks": "^8.6.29", - "@fluentui/react-icons": "^2.0.270", + "@fluentui/react-icons": "^2.0.274", "@fluentui/react-icons-mdl2": "^1.3.82", - "@types/node": "^22.10.2", + "@types/node": "^22.13.4", "@types/react-modal": "^3.16.3", - "docx": "^9.1.0", + "docx": "^9.1.1", "file-saver": "^2.0.5", "jspdf": "^2.5.2", "lodash": "^4.17.21", "lodash-es": "^4.17.21", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-markdown": "^9.0.1", + "react-markdown": "^9.0.3", "react-modal": "^3.16.3", - "react-router-dom": "^7.1.1", + "react-router-dom": "^7.1.5", "react-uuid": "^2.0.0", "rehype-raw": "^7.0.0", "remark-gfm": "^4.0.0", @@ -43,9 +43,9 @@ "eslint-plugin-import": "^2.31.0", "eslint-plugin-n": "^16.0.0", "eslint-plugin-promise": "^6.6.0", - "eslint-plugin-react": "^7.37.3", + "eslint-plugin-react": "^7.37.4", "prettier": "^3.4.2", - "typescript": "^5.7.2", - "vite": "^6.0.6" + "typescript": "^5.7.3", + "vite": "^6.1.0" } } diff --git a/ResearchAssistant/App/requirements.txt b/ResearchAssistant/App/requirements.txt index ea4ee187..f2d87a16 100644 --- a/ResearchAssistant/App/requirements.txt +++ b/ResearchAssistant/App/requirements.txt @@ -1,17 +1,17 @@ -azure-identity==1.19.0 +azure-identity==1.20.0 Flask==3.1.0 -openai==1.58.1 -azure-search-documents==11.6.0b8 -azure-storage-blob==12.24.0 +openai==1.63.2 +azure-search-documents==11.6.0b9 +azure-storage-blob==12.24.1 python-dotenv==1.0.1 azure-cosmos==4.9.0 pytest-cov==6.0.0 -flake8==7.1.1 -black==24.10.0 +flake8==7.1.2 +black==25.1.0 autoflake==2.3.1 -isort==5.13.2 -pylint==2.17.4 +isort==6.0.0 +pylint==3.3.4 # Testing tools pytest>=8.2,<9 # Compatible version for pytest-asyncio -pytest-asyncio==0.24.0 \ No newline at end of file +pytest-asyncio==0.25.3 \ No newline at end of file From b81be424721938dbf23b3dc894703a137bad3c1b Mon Sep 17 00:00:00 2001 From: UtkarshMishra-Microsoft Date: Wed, 26 Mar 2025 12:55:18 +0530 Subject: [PATCH 14/18] Upgraded Package For AI_Hub Script (#419) --- .../scripts/aihub_scripts/flows/DraftFlow.zip | Bin 14389 -> 14388 bytes .../scripts/aihub_scripts/requirements.txt | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/ResearchAssistant/Deployment/scripts/aihub_scripts/flows/DraftFlow.zip b/ResearchAssistant/Deployment/scripts/aihub_scripts/flows/DraftFlow.zip index 82e5bcf2b475be75c8778c62c165313932f4dd23..e5da5a63b638a9efe62febd2382ea33c219ae6bd 100644 GIT binary patch literal 14388 zcmeHt1yG&ak}mEL+&#EkfB-wVyE_DTcL)jY?!n#NJ-7x7?(Ul4k}z=YWG*>#l9PG& zy{cC=ckkN!hpJuOYpq`0U-#E7BMu6N3Iz4=PK2?v zG|(5Y(sQsdu(Y?MvvzTCh6Mr!d;I+$Uy2IwK#=BzYewHc4sw!K-VAUp+sY~$Fly7H z^YA8<2)E$#mQaetjB-jMGP&h2E@f60mE);X%w6-JS$f}3A44>DK@ZTvEn9*R_&No+CTFesO|XkCjCA}gez zr4P;}rUMHopijp4K$ovJvX^XGYc;E?3y=bRY8O2c!h1xdI&Hn1?!Oa$T|U!zDcY?o zd>nkyJ2JCdYsvQ}iz|njv|*-!h#kn)nM!h(*03vDUq13zaJ{=Q zQ7=x@7R|Wn`*DM~LH#X{;Do5J4YVosUiKvYVJD^8)1&o#)IMNGD~z6y&T=1Q#37*? z=|1xC0RsV5fdB!?{M1ya52pHVr2mPHS}--O=2=e`KX^^z>%$kOAj||aIMIHBr=F^w zkvr&S1{2K0rK`*iQoyD^dAIyoBrryR)WlQq8LLC{v!%4DFV~9$!ZoK7P`K+=fs841YUw-6YBF-JfC%7gU3yRy$r}!;9#n$+k_~AVkgaB`gp}09=rwN#V8%lGbiFo z4R?Y&P1kna$g$*u0_P;{AivmKQd~-s{8_gMQ~?SRmfnCBu~&7XV{)(I@~H_mu@CTl zH+^iBY$IbRHHmpe>Wx97Vz7W|QE3S2`&B38`|~m~EyPIm7(rUg#K5zhC`$x47LHkh z1jpk{h>g+hauRQX&rJ~eHQ^vy_BbxFJNL~=i8h&cg~UkLMt^0>lpidP|a5#j1M8LkvNae*DacCyAWPs*}z8qSg6 zQ)1h202cD030`TCIqnxgf#WSzK?a_Yc+xmwAWJIc4yGO>Kx2$1I=A;S0w}ssHwQ{o zt_pLZ6uqu`6|t~<8L7*kDoZeVtT8{V^6OQmiQ3+@Y7pkjdG#t>^144ph4aLoEg76oFxWmCKahD?DTr*01lk=>CD1)oR*^zCnEl3 zxXuhcjQxEGoS3<-vxpe4oQgdf3vbWR?HNoO1Ce4!4e*ayszEn0B9d7%CbXP=YO4Dc z8gCdhdE7;I{4{od9EZHuLkq21oDPax0@|T9m?{qxH?K|9~P?CvG zk&;-5Gw2}9BE)-#usV0O%yS24MS8z*0g&THM3=H4B#&R>CCP#b3mP=- zKxq6c1sGafawOI!rfU{I{lN+5X87}unf~2FhSAi3l+QOcAjvbGF)z+n7_qd|YM-&S z*KSzQmZ_wptjz|nK%DXDVa=YAe6GVxc%7J6cS1@v-*eA-31wBW18%hV?5|@|ad0dmVu#QYWViWpw?qrwabFzP|Ggft@O& zu|(49e!bPuXX`Lsgmi#E&JOd7+E8aH0OJC`g6Fd>;|G!gtW#@&0hxQ;@5k1#>8TIv z2n(3b6HFRA=)BV1JbkfIcNl+!?kIp1k){v_f22I&UyrIKlHoVB;|Q)R`bA;Klg7|! zd=P=Z#dIg5F$eD(n7o#3WhGvZmeXai5067>yixSNu&;uW^HyZgI7%pDqZ_mXFQ9vP z(a)^`OLh3|$IXz^9e&%^t7nhUDL23eJqz)Wo?v~4&c|fs@=sX~+yivdS=(A!Slb(# zTRGAHRa%2xv}Q#4@Ogax9E5TIBFtHBoH(gv!;u9FKL;1un<*emWt!T;;Pt1*Z2B_<@?3qBp0V@O{+j zC}BVfxl1zBGq0)F?JRQb!IkV1CzBLu5u6d)oKC(NY>6MMxKfIdVpE)Cwy;#Nj83*^ zJi0A#bxMl(y`$(}_Yv?uW1}*VRX$QWL<|M~OCmD3gq)8 zUPG#)EX+gVlLY$RdOyoipIYyaGq<<0GPnD!Bi~ffv>InXbw4i4C&r&IfFlF58t)PC z1v24pCPZzxkldfF@aAqbkpIRRHeM~d?^Df38c;X$Dr}_TRYU9W>1%d4WS@9rg!ZOY zJJtcta>7!BG>d&~mc9hr1Y3BGv_<*1;lpg}=q!w=$a&*ktH_jV0#>(_(jiK* zY;&z?5c+ESbFC|GIU^TTw3KO(vBLyedo*1M&QN+?@VXhBn@c!Ex#?F-S@aO;2qKb;T4ZU#U}J^mX!QtaSo1@rL}5L7eXUQv$%^}&V@GDcN;}ZG zz>C`RT{%Rsac{8`F}QW=Bn_zzsTwd0zd5=TVs>IOKYbiqh6ljg{A>(t_v#z?{~Hq#7UqvS!RpL!`(lLD*_O9_Zo-l*d& zx0*zKCt~zTiAjsmca7h!J2t_ta2MvtF)vLacMv6h+)E(3l^7yUS72Kx^N9Gqr>A?j zUZ1NctWrA;y}#FzsyJSndNoshGLm46Ckf%ybW>L4tSzWhoqD1$42MWBTO9XV^Ya)4 zcOe83h?7J_NMRhHc%#~VtfbpK1ph-2sr5Nza<$IqJzb{VEe|QA5^N${6h75qDAAXj zJa*M38mE0*me#P);!O($W^Gxe6FK>B4GTLp9?XR${?7rogn7Slec+(8%EkzQ}QG7r0t+%BD!NTH| zYqU9j&-k^G|6F=Z6nv%jqmNlj&DP#N6c*o5f8}F;8P^<4j7=*?4HgPee^*E_`fO7-^20XhyCFlPRRBpkQV!BUu6xMWjf6uPmbm!kVE3smVga zn8$)f10L%+D&s3wibg6J*iU*^PDN3ZO~G74GfB$bz=C0{&S+6$H%LDqN#m)S$VaZe z8i^6379lT6K=5gpm{4_45%!^Uf`r0q*8=i+K!BY8Dy9Ak4>11}#m&u(wC$`MZ1oK6 z{snBH`-M~i1A7Bo3lmENQA_)W+M3SP#L`rU>F>}YMIKq;*|6famWUJpOleOs|jj^|Z)6)!Q)OWW?7vIRuN zo9lOw*mbudrh%In;yC9fBw@kWPST;oja@)fDQ@vW0$(}2GMi>33Nn1L6+F3DWepn1#1r13ZapEV%R;y68jt zo1SMLb}=n;-HLmKst%uf*So7z5!aU;%N-wTH%GcKA4Ynum|b^W_+Fa4xf>m9JJ{n@ zWr1&yQ!%g2O10FTT?+iCmGvCZ1}Ab}IEfEW3x0IBm``MTymCcGVV)TeAok^#AV&K; zmqX6L+T7(g?}mfCq}eh#jy7XdsP$_@9Q+4HF}4qf1!BJ>aQiYwiudvswciB0461n6i8mxFbrde1S7-kcdG`%8?M6)w zxun}NtOKPZejAni3B^!)6+@aFki0J81KN972jQwUhC6zAX$uzH@&v|l)gyOE;IQsO zcR7!|Iw9*5Zlnc}1dR^dSJ$UceW3DWp5wVa6`cDDX`(IliHcby4LKDu4YJWCJM8%= zuRf#2%T0D|yvFKQ;t?oQebf`Jxun`_0{*3JIew6laNvnAYOZK^OS;susK&8h>>Y16 zuZ!FfULA#q`6L%=Y)K<7xy90XUn5gWmC;kFwjA&_No!((ugx2@DHTo|N6lA|=YK(^r8Qdx~8J0n19{!1)Gf+M1>!+CXC2bAIdA!^UBu z|K*IQL)V+tfhfqJl90B`5BJ#gL2{M0DV-cRJyIRbK&0Dy!;#lWM7yrL^)n;D^O&+> zXGy~TEepWs`q(h5I|;7GTi61NQF{}301O%-M zeW3k*o(xm`;!X=X+uQ2s+5cy_`+FuaC6d>ylL5~6_#0ZdRw9p5Ej}n#(^2JMm|jc- zRZ4p#Kvf4P>)yRII)-mnr%5I5tcCpf3D zl5oSOHaUgmw9+UGv6~-oNBqX0V~7sAv9IY4i?hJjMi)hdbzBWYm+uKh`W!+8RRBht zvlUyMTNYX^KdG5h4494ynC7@8jXAe3rObxl4-sr_mR-3ESmqs#-TeViz~HH2YY&KY z@enV5ey+cY75^Y>`K>G+4Q%an>`kmJe}ksYk(ZQyINX+FWtG)WL5w8ziXfkHFzZSZ zJGLyx=CZr!2of)rZ9dt@m_U*gQc3D=Z_Xaqd@1!*@{22)bN4V&+s2w{aAk4{N`qID zdAV$?Rg&T^ES(ryH9L&Rd9TPr8%@b_bJ~44CI{SOi@+Ana}W&eA-rem2Pq?_q!*&t z5iye)lb``=VrGDe!;3uyOu-c&Hex@Yxv1|SgMu$ey9aPp^w<+=9k(gxC2kRf4l7fq z(3=kvjfFj*%D9&^;IRLAZ_`2+C17!Fg{#pE3LS3YF2uJ)olu1y$-(4^gUR@oNq`jP zlY$yO77=b8jxY^V@mP>dih+D^M`oHUt5^3Ju>#QY!hp}rz>H=+ZulpVIK*xeBs_i>x<|7@})WP7>X9b3}RFY->8zeoN zM&}Vi#Ajskd%1S7=KBf9Y(fRAsA zBz&cG6kga=!86)flGn>|!LuF3Ok>@+IXmKL)Er~nCo%5`6 zV)NL&E%J|OSLB{FiTGdx`~ONB|EdgS{tX-ayM^-qbqnQJfMsi7<6vTI@Q==yy|ew# za&w#qe&~_OSqJ$eqDMnaGd;L2(8KllMMS6h#ohUT)zhJU+SAGYp{LWGQJ^mMO~;`| zWMRY_4$ZgW2M)OyReIo8OSaM z+!sqVftEOjc%+iii_MYTVMF`J%UCM(dmXTSRdXz{M9K|SMO z;b}4lEClx1p1YqoZGs023fWcW-C4ZtpU<45Ulk$Z9a{3vCgkI71_*&EuQf;xgn{Vs zXaeub={=(ml!8%G2q9M#ix)ve?wR)>Q552Vg@)}Dw?&6nSTmtKo)a5T3Gq1I7wg#3 z6vM%PdFd9ayX2^tXr0(CQAl>L>yXHAi_yt@ai>OEkdUA|(Z<_E zCBZNhOfZtY3Wm8vj(%a&8;=fZCi)=+&9=}pe^sDRUr^kz{5?ilW_O)Nu2<(5$PPN> zRG1ojjS|dUZ!U?~vS%R?eU3-b3jB?ettCx{*Tf0()$h!Gw?TSBcVUuF_e&dHlCX{> z!AahLCWnX=br_#sOxoi%bD%pk%oiqqjkWGA#0^gYCz2L)el-Ao z^P4h8x8q7x5(Mhe*BqGTYOO>rZ)iq+pWL)B_-4kq0!p(b-S4*bttUTi^q7>F6u#he zvDIubEccI40y7l)_&|RbS;y+HM-Yg_&MS+89)IX9;3g>;`;3sy-a;4kxo zNF+AqJBvi+2DBgA+K8(|WWd}4c;DnRtMy=64BSx69m!nT^aNxGcaGT|w{APDOx^i zNK=WT0!K!Z9OqSuVlUpqu3YEDux|jhUIa2U!}Sw}Y8#xtC`-B$ zD)B$n3>cm6wBDKNzG-ZSAg#j!kf70jQgMtc?QZL_GiQloAyMKa1Kk><5p<`>&Q&_7 zM#s~qEjd@AdzCI~=ezcE5q&tnjp6MGKB6p|y05_X^_{1|GUwNFq{v7(OE`Ml=Qo6C) z4|rv2#v0g#D%ACi@Id0sqbF7R*sYFbaYmzpU6avdEvkl}z_{W?)McmFi+tb-T%_}m z7gvG<709@xu39gJ?`Q17Y^zoEjsY}DTKcL8AM|{OfGrz=R@hR-SZq7^%%h;|)DdPv zg|20rDQQB=$7azDQA0j;AxVyPdKpId#QF}G->CshnR7Bb%yE;g?^m6!YE3H^n{`RT zuyAqVAoX}C<B?GVrxXYlbi}3%g?+`-jY~fX9_@b^Rs8%pj;eACO}sG@nYFpkh&9zBfSkCK|9*!Py6E2gVA{ql zaeXzp9+$^%VQSRKmILQ=@++usVa)}xS<1GhG=tA>V3z>#V$5?7ZJb;5f3|THP^uXG z8OCdL0;-Yv(vjPZnumv*>?mq^jCgh|#=AX_oHHjS>Ffw+y%zaGk49`!1H)R#GOyN#L(v%x9{gIUwmVT4qTSJ-74m7WvGNfWt@jcpPJHV<6YwwoYm>OUVFXXR%kH1AABNeO1~ z(pJ04t$YTMCoh0iDdy_-n1W-6{US;n5!Klv+RY3kZd;Las}IR=r8z?dQElAsP0u)7 zZPNn)PMB{(TqOJAR!<9nBDHq752-gV(T>d;!~{K(#xT7+&Ub$)Thzznj(msDhrhEG zxgbJTc$$b`fRWEx572Whe^$vG%f)aQg-d)n@7to%m&qIx2#0QM?2qQv$d-O6Ie!=K zH7`;?=hb(s$m~__QBP%ySFzazlN&p3U%P(2TjU-_bQmHAvP=a(l9nz(5Yq$~iZMcc zx9@E`)#fHLC9W*w$8i|dHfc(u1b*H(VycLC=q_o#y#DO+$N-L2WQ38;%8#(W*u$wG!m>-X<-CU9fHl$_nmVP8&s&WC7+?7;8qf zQ*0d{uq28_gm>lBCyDaC;$daM^IN?hTyE2!XRq6L1AsF1KZ6b_2^~Cp_i7^?Ilj0Q zqQlN3qk9@+%&yYCQ4|QztFPXc?NcwMv?*E*jgMT=`KibgxI!1IZ zIu_eK|w`zXqmFeK=R`D3Qf1lMbyv7c=P>H zi{;f`uxz)XMqH;$&NPDUh}cE!e5$nUaWzaIj2?Op<@-x*QvGei-n^#sne>JsUrpN` zblNc;RcXX-@ zU(#ZNx5zk2i`Q#}+P=Ai7TDY$HtSy48~%R5QT^aDwC=vVWU^k-@yi#vwRj$Q zXmNICMVyKAGLg5)dTJh!M}^(H0s+y%MaF^t=?%a{J1%dsuJ-KfOhahh&}UV+tszA(9!SU9e*^g%N;5z{mBVPgDD9cG&JLkPrN4M;!_n&6m@|8`jd-;a0;>01W&A%6GC&yk0QjUKmMic8S5`lP< zwAA=2ED~3l{q~RWQJ2}Dll>4rs-T`GVt<|*eniB76Vd-0iD-oXviv_1p??$3|2p9e z41x;!&*}W9!{9hT5B1Q0zG^)m|M*V!{|?a%4g~xNKQiJ!DtJ0Fhx&tpB4D83n=t>A zmi&x9pUMY3}gO57xlxO?#~YM z|3Ykg+Ku_qibvQ#SNyk}(oeSel(nMyVVg!cKiBqK{hq(j_{fGmWvvi@&{#qY^!MD@ zgVaY(?9Yhs)Wy+%kV^0z=y&)DK!0D}{$#;V zGhp~17R*Ko^fyJ{PeeZT_8-rHmF7F7|J_8#PeecUYJ?wF%Ru*C^xu0g_yhF{1cd(Z N_Id#7WctVd{sR(Vb@c!M literal 14389 zcmeHu1yG&qk}WPlgS%UBcXtWFgA*J!wsCiYySrPE;F92k;2JzQ!7V@_NPsY#oS8f1 z%q1u1&Z}4TUfoS?3aY4X{_g&IeZ5w1ML9?)3@|v*SCbRF7TCQPDi{fvgsY>yfsvz( zjiZT;BcrXGlPdxkIMm%A{rIM)iUbBLjS*$`9Q2NAePWs!%VOEZj2h^26DE~3yAs5n z-$`ki%!n%o-@{W3p{cB3HjegXnS9V0?j`a;-bCio)o1SdeclUKS3o46h|5y7a0Z*K zwF2Jz2|v@+8_E*q;L46?UjSqS=O|iV37yKlIQ9rXEr;2} zRFs2-1BcFvS_OsR3>*wh@xkyRfx>5M1$1FFHZWs!GqARLD0X-8+XuyNSWRAGff=>+ zu(ArZmr6@mRm}!2EUdHvEk}R9LG{^ke24w!?9a+O=$THJF1kDS^??cGKbDUb&T3 z>3ewCF?kIT=I;p4K&(F2l8rXyizVAGsY;_m(GDWzHeqK#?&hi5efx=Eaz$AE<>%#W z{2AL8#LsSFKC`@}1~=eya5<;Aa;F*K{+0zn2$4Br{a!bvx%FJH^VuXhR56Gelh*9f zvX*7N22uJ~W7j$g)QT+o^oqoQ^rlk1xD7T2H388sPlVv1qtK;^PM~nL=lluZ%XiIC zrtyun>1S{Dck&+j1&;e~K58bdauy!nEuH6}=nSn@eL-~Y$FMgf`^XlW?@|o&I_FJ% zcuwU9JlX`w^CWwtPtUQGe6+YE>%w-6*dx2gym|2QJx7p|je!CQbe}0^#ATPE0-&;I zwp|1HAZC%1C2yl)w2$8&IL{v918=?6%k0Yd2M6T>UqEnBl&=h_S}V@9=UvD|?LhO} zsxv51i)QHPNXR+*n}Umuom@y>PEESy;~CM_;J7e~z&D}Esvfb468q2jrPXuZmIs{&p!0l#| zg@UQ^8Q!eW=JqX>z`#les3oBx;mQIw-WWWz;@yFqXh+l%MmzZ~mx%S3L*F6p%D*wM zzpwxT46GLJSLKfhDt}3!y|sa(7|_Pq#NNTc5dgILMGLt*26ru_P(@y$iy5)?P+enn zJdB0njT*!;K2GE7w0D~}ALa_)GZLqrE!&MdCIDb5N@?W{w>CZ=)_+Jmy|+UWbMZhRK8m^VTSl8?B7nh4?ZY^_t+zIMGNnT z!~06@S_Hu=%04%WP^sa98u) zm2R7`s}dn=m4J_`)TS|-kCI75_&S|?t8BvSICN{*N);z=eF-Gc>4k)kw)T<~U7|~= z#fs%+b;ieG@n%&O>3_+dI4vg$*L%?OI2_Tkj!f0;<78fyIpsJ$ls&Wau36j>J~gCgSY$qPHqN}j>TELH$+FV9;dF#5nIzpH z4lfia*k2njCA!FPjoE>f^NxG`{CR#P{M$*Nd>G|j8eXIj9(BSF>0XZptXTxv`V&1$Y}B6Vp-g(<H{Hl-iD?6^d}Z)DMUSr8*BD8%Q!16+A_oMky_7@h-syQ|Av%YO>%G8|Bq{Ux z64au}_HPO$+)Gxy0cc~_gRN2DqH|1t<5o`hfV|G&^ ztrY`rap35p^^x@VbfE|@zSEk?jYBctYY?iy!j*ZYPoaWh?Fc$*52FnJy;wWi15BJv zjKzUQPSzl}cKD0H-yJq5WqDu#=&)_6Yv?@Envt1D0!$%aLC@R3sg<)RKbKZChn2jU-2VQ=e!wkbPb|6qc#HK%!SQ9mOu}O zFfu$Zhl{8wJ8xrg>ZfT6}(>~5Gv+MJ8 zo{mXxirEajZN8+k^a)Vx;V}}PqTa9&V`-lYmT2s6dwuwRfy=izEgu3*D0VD*i35o% zc_hrb=2{rr@tya(+cU6iqVV|HLCs1CT(!J*{fK228C$8>je}pl`7{mLrw$R=K31s_ zYAi%okBOrA_;@Mt6c10`JTRt%ke})ZOko%ME>}&AL&9R9T-E+ES9cdGdlNe+fW65d z`Ehi0eCSf33hIWlJCSB|Gy|gyG%|zzOpWy%lWgoWYX3!LXXT5R{9BC zvIK1;_C@=lt5j%$IHjha8VaXV3(C@Y=qC-VL_?oJvTQgl^@R$-DIHp#k80hqiAO4> zy3ajLOm(laW)v z%L6%Sd^gW^2C58oa2_(wy@PdrB~g=Wl(sDw+lH_JyCA`Yb2BqA|QYLt8yJM7&f^vWwh#VRIH<}uAH_+(ZxO0qF&Nz7zQRkcaIGzZLjT1(1RdVFO&byY1N zsxicIS-(i5auP+oE=JY)+GeA&L@KMWFP}OT>^Tp43954!Za?ME)_FE``Mzrvl3&H2 zmP_996h_1~*a>dA!sCU_rET6hT6V|PQRf$QMQUKFH(3+cO$77@FItqI?p^?KDtMhdQ+n}vY z#66EK;VrPhr6X==VLrZX>Nf?Y*Vk($>tmCU%t}-_q7WaIw=7Y$bcTr&pxN^|Z8G`r z5|3rfT&4O{*Y&4&!g4PO$ja2?%enc-uIp(KUeQJsiqex{<;P<3rlqRE-K_L=W?Jf& z&n0msH2S)UOtH##R9Ll|F2CUJ62U7=X{s?jAf4Vy9p>_rM6`<2NcM$AQ(NihOq!=M zXYpr9%yCAci%o1kNNyzsDxg;wf)`m?ZdqaP8{+gRr|3FqXj9QS3zbg4O`UpLs>JBK zWkyjw4DM--mg@zG_lw9bzGfVcF91j7f>zps7}CNtab(^*^E`Cio;Tn=-8b~oH44bH z?vJ*s5JyuoE1^TQ;_sa^j3up}lX;XPRg3X;H74zO^@*}e45j8?wT>sVuCSLh7OQ_? zp5Ic>Wn0ua!C5iCkKSNO{4>2lt*Vl=@gImpe!wd9Q@`5GeD&h9LB+R5K~tR>eQWpKTHn}Ip^qm&3Hh56ug{mj9pNp<=$_+zW5 z_>k^7^$|AiX&07=Pnm~Lv@g)6tk-TcJ(_BWGTeqzj#psSqIKDzSKp&qc{M_yAW^Kt zqlr5}KqkAItVn-BV_MnQ_ZQq#$u z63p;x5*YU95bEDOIt4{Ms3wG4#xoPP-*wvJVmQT(v=+$fg6&+cnhCT!^@kauztR^vxPhcgt;PpW2TWWQ&BqA%!(3iL(N8S$ zrdX$ZoEwwWLRnYbS#i*lf?Z`vs1ODU&sxuPJItRucHu945w00-L}#0!*3A5JDt2qQ zae}noxR<<%)gZ-UCZwF?^jUpdOb21KPI0ivr5U2Szzyx24t8z$s!4F6p6a#6!WS4H z-;zoi2|X91%C{a=WUodx_6==sq@~^b%s!WJ^DCj`zD>?SuvpfOnz3b?78raR-I~FI z*(xP?`2(tz2Snj#U_kr@?tcL%2toe`_kjokPDWdMptY^z-3-t45KQ0k9(RMw!w^jH zCrdvl0V@MHppzq`g#*y$At$?D~T7}a1A z7$Xby$$Mo2@>)DbDPJ~`tVUj;_z-Wcp>?x-ko2#4C;Ph3;ptMRhGvLB>f54m%9b!m z;sfw>>Dzt}_oKvd`VWw!TAQ4v+Pe60MDOb)himZ(dt4NytHvz1p9bcFOgnD7zHidL+)nW}45J1ETsq)$HgC@Jcjftr@G z;MYf)La^PMAuQFWV(*a*+cq|q@JWhtpz;S$kR~S8JHYlVo(@coI-$bFWUeNXAiR&j zZ`CksV$4h^h{&S|Y+-~8hfX_qL!Dl1j88xr@&5HYOX#PF^^YzDT~N5wn2)yPD2jLW zRS`Np3uB!JXJNy?%H|u53+Jel?0abeLaUZY^4<(k!={J@zjvo{trgRGu|=Rf`~Aii zKA&N&pz32l#Z~L{&}&5P_EEo84V75DsQ|{9PuVdUhd4%&`_Kxetx!*qh_58U$039f z<}+Q0EXTqT2`4rcLYMjqB*)K#Ve@BKsJ(22(WL^G7}D+OjaBW}GvJ{sklu~HQ;q{zcnni0d zCC8n{E#FNTw$DB`fPoI#chH#eH`|*Nz#IUgi+`uRm2E03Dh>=P$S^#wQGNwu@2itM z88?}?Fw~+t+7dU}g7yYVv6Q}=hK;3?VhKzJl_n!qT~P~yGxs^HE;~I-F*_zbbfVvw zVxVjVCZ$AZKjmo^Elqs^4O>0^6s6Exc5HKP7VFmzgG>YR^nRLYqSV@}vDgV(F)A{| z#N#7mjHngRKjtaiPCc-fARs9G#{~D!U;*b(ZNE(7}LqEG7_1kR53jUf=)*@^@ZLrwc4 zO8nAz%&>4+^lSV{(ESnoMSO$Y_v~dic*$!Ct9h`$R&?Ap7l_NqwY=GW%x$;@GXvht zoWwUbDUSffb(8}qXYK}>MRP?25h~~;XgR||8fMC|89udJ=5O@f*aa@BlMW?^kP5ig ziKv_gc=F9{KQA>lWs%9J~h-0rWQf+b;sP+~ImS?&mM7 zQpY^ztiB45IvINmWOLy=2qmC9a$g-cOWl%q5nN;mg`{JbO@l9THmSy47|| zHJy%o*ShPnP}i27tDF&GKRPo;y<}n1OW5%;MCzq4p8IBi=YVjysxJN=b~-`dvO-VW z)vY9WM%~B>b8xbd!$odnMqVHL6?w~f zVbs<=b;RLZ{RsC_22>h9qB&t2fy8QdO9s7zQnqI2$(Y-v#u|d+ge_q6W|4ByQm)u~6NKHIIOsZMRwA#U>+DDJh>`myy0U#&^ZE%E`fN5^T|q_fck6$DXESN(XSgkfX5>oyYCJe{^#zlHIW zzl#0PAq5bs8@|Q)!kCDM=Gumm(=an#w$k|6BQ#IAETMSnptzUm?8${IGwoyhQu|aP zQP)GYCd5s-0@qe=rT*OwxH+%g0UFe0Mudis5#6OPkoT%Ts&=^pb*n8#GGK|%>40N8 z(h({R3{W_%dn4~Uo*}%VCwFq1TsdV;?+P``C)}n_D|74K)i2-4RVa2XG8CiDeX*8a z(8T^shRvYg4mI%vs~HBtnbZmP8mwYf(~x>Ftqr_!_#Aw1_f0&Rb zD_6@tudyYbXukbyu!v+tZJ_5H=kRs2?>Z#LvH7Xa{+6$0gt^qW;eak(B42k-q)1!G zr>!myNO^iPPP<8;3&lceUb~lJC!^XuMP}*Uw`)xdI2j#pl%JTqYPGhpsrr!2e8^+z3H_iw@R4yf*4zv>i!TZy?FJ^ro4{J*ZmQ2pYh{ZSIXqtM*d!oL-oe^sGj`;8p@ zP37jU@%>x5`M;>#{0g!Dj-qpyxHX6$14lf}3@hm32L=v$KMa-hzbKx+E9~4kZ^fCn znddxRe9>uv(f~Wv53?_k(u}negt-T;9oFg^lp|f&C6S~WE4v2${hTmM>i}xB)r z%DC-3zeaW}xx$0y*t10LZT{Tn6=Hwqhe{FQH>$&214}_uGSe51p_%o z!LHH!Bbi&9_?FcU97T2Erm9)Ouvr#T2~suX0#83E()d!nnu0zY4UsBJkIs?&DA`+! zinJyY+*FHO{l<-!)_*z=Zpn&(a`1)-lb>HFEgVdGmP_v<2t?N8OS{Lpn`yXTxU zge-_Hq;N$e1H3s>R?-f=xv6^r%q`LU{Jrr!Zip=scDQ)!9FR&~v8smM4m(w;Sil;S zC4^L&C_R4EGe)Hn&cV$oSwo%})BhMk6BULw?Ps`i-@m~qP(~0> zBy(cV$lIMzIlN1^kfvvCCmznV1L-=Vd=-=Yj1x7^=u*j3%+d19$ywzY}W_sP2|(JWhhbgI+|QeiLz1 zQ&+To^*$^}*IB&NbsRk#)?U7=6_Q`WKL_bL_Tq?`20Ohi!C1Uuiph(o7r<7;3X7}- zSHcFCR#UmO`Oh4Fi-mQhwseO6@5Sc|=wgvn+Q>N!UQl92tXZwv?_$Pw)*=x)&~FCQ zWtq%v7r>bSaG}-^|&hnX3C}0 zYw+0dxqnzFcP+)2eebm8opQc-AwT5NNaQ^asazFb(Mq>C@SJ(VQ>HgL6(C)w`V;dc zq^%NTju^zp)QTCBx;JS;I0)uFR{XqQ=}Y7CD~_^a-qLiuJ_*UaA|SI=*Dim4DH!{uag={x3ed54Q=qBn8kb!ONQr z&xw_P)ujKS>%`8+2tz5W<(c9STBAGSbS7yjx&&qR4J;zhFQqh^!Oet%sXMniR3kXU z(;MOLSMa`Oh!0s*NOQ7q;ZU(qML@lTmf5!edoeG%t=D8ovW1P?9{!aI0QO#9Wcn@G zN%;V68_Q^>_o3tNyb1SdhM|w{ns1&_KZ;DQINpRYz~ZUZq>*)XU+nAw1?5n_TG*K_ zjlAXT&QpaLwlC90^%weYeJ>U1*P#$3U|Z$GyyEwHGDh8wTVfrGGf28#Yddj{QhF*2 z6FUc+DcHrDDaSj+XbUz*O)6S>VQ zzYi0X-_B;%)Q|!OMUgBaT^hjkcc}2ZlOiS>h00`L=fyqQ0PN`{agr+~qI27AL@y|7 zuKGN96SH7$Q~Olkt-U;)cdcvxo@E4aa5j4dHgAghl|Oj7dTtBMMGWjHy#oV}&w$*y z-*MIhe7jO4-;+%v#Q<{A)CLQ2;C;M&7ci(8E3)!YE8wyaqGk4Gpw8qLq~%nO1e@uq z^c9VBJz+jl!^pN&$8K(O$edI14EwV3HV7*7ndvjvLO#k5!QqSVJ8L-*98IBch&`x3qzmnR z-?QbHKR&Y2AJ;ag$kTGI~@uO~;3ogZq-ymAy4WbuOnGW7hUJ?>w=f$ zu682kHmH65xTq}@Lt3+50Oc|6HtHtTMQN0OT6E8I#f&&i3E6-eDaeAplf zZ5g;|>jWU{8k2um;}l~dvFge~&kSSsf1&lQs0Kwqg}MYmqny9ncN&o!;foAeOk7uw zOg9^toPBlSl`$;yh3+gZOr3du029kdon4Orc*=Y;>LS$_j)f$mmuPRAd?Yg(rz;0O zm_&e|7qiu0(OJBRnxth_%!X#3l&>}k-Q;8qqELF?U^&b zkXQXEOF^cR%!+p5>Lq%@PJn%K?(rwLKp!{75jLKUj71MmA75a=aI}nMs z?m9C_N|-xKLU~5*LtQ}|8E;Od1I}1vs7D?VqmN!Vzlw5(r{}Qi+J9_fH-C*2V|K_Z z$Ror}_*giB-aF^xK*-JNXz;btr?{!9oav*K6M`+1Sl1WPar6<)GBbnkCA_iiD&P-1 zaL%_a>8rld;Nj(N(|8>@aO7nvsqID)y$J|ysqierGDEksCgLn6uwB9oKw(Gu z1P0`Pujk+2JVyls^}YXmHTd2A@R!^fG#L0FV)f5f?=SQs{bW@L9PBT4*dH)?e^C_k zCzFDp$ND`s>H*XD_ac#hGR*@5gTG)k9ZKC+g%{5zcnBJ$?{zp{rPhsi1#etid>_D{iLk_4=L(T7XRy$CHHlE zf_oMl{3IX$Z1FEQBp&c^U$Fc+i7lWl$-lD=@PLE+8sX26K#BEF9Q;ZJ{ga1(7IvI_ zLAn(|$Nt&FFO|nXS^uvTl-(1Y81Gqc@B{q9`af{<*9znVKJP063_tk{0xjU&Ps;r# z`iIY7V)X+q?>9-BpImAZJnZscZJzf#-OmqLMfk9{|6?7H>Zb?nBK|9v5AwYa1oM7p zWc$gN6zO04`d@U+`~29?SwtXz*zsSIaSuG^{aJ$kr^kHx3vd5Qhy7=V5$h+9J+xr| peOdjN4&D7L#LwtENPo}v?;S2^5UPTKVS&E Date: Tue, 1 Apr 2025 20:39:46 +0530 Subject: [PATCH 15/18] package and ai-script (#426) --- .../Deployment/scripts/aihub_scripts/create_ai_hub.py | 10 ++-------- .../Deployment/scripts/aihub_scripts/requirements.txt | 2 +- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/ResearchAssistant/Deployment/scripts/aihub_scripts/create_ai_hub.py b/ResearchAssistant/Deployment/scripts/aihub_scripts/create_ai_hub.py index 0ae6db69..cf0b8c3a 100644 --- a/ResearchAssistant/Deployment/scripts/aihub_scripts/create_ai_hub.py +++ b/ResearchAssistant/Deployment/scripts/aihub_scripts/create_ai_hub.py @@ -1,7 +1,6 @@ # Get Azure Key Vault Client key_vault_name = 'kv_to-be-replaced' -import time from azure.ai.ml import MLClient from azure.ai.ml.entities import ( Hub, @@ -74,10 +73,7 @@ def get_secrets_from_kv(kv_name, secret_name): # construct a hub my_hub = Hub(name=aihub_name, location=solutionLocation, display_name=aihub_name) -created_hub = ml_client.workspaces.begin_create(my_hub) - -time.sleep(60) # wait for hub to be created -created_hub = ml_client.workspaces.get(name=aihub_name) +created_hub = ml_client.workspaces.begin_create(my_hub).result() # construct the project my_project = Project( @@ -87,9 +83,7 @@ def get_secrets_from_kv(kv_name, secret_name): hub_id=created_hub.id, ) -created_project = ml_client.workspaces.begin_create(workspace=my_project) - -time.sleep(30) # wait for hub to be created +created_project = ml_client.workspaces.begin_create(workspace=my_project).result() open_ai_connection = AzureOpenAIConnection( name="Azure_OpenAI", diff --git a/ResearchAssistant/Deployment/scripts/aihub_scripts/requirements.txt b/ResearchAssistant/Deployment/scripts/aihub_scripts/requirements.txt index f1930f44..98acb23a 100644 --- a/ResearchAssistant/Deployment/scripts/aihub_scripts/requirements.txt +++ b/ResearchAssistant/Deployment/scripts/aihub_scripts/requirements.txt @@ -1,7 +1,7 @@ azure-identity azure-keyvault-secrets azure-ai-resources -azure-ai-ml==1.24.0 +azure-ai-ml==1.26.1 msal[broker]==1.24.0b1 azure-mgmt-resource==23.1.0b2 azure-mgmt-cognitiveservices From 5c271062b150b10f1b57658c26fbd8ab73a0d981 Mon Sep 17 00:00:00 2001 From: VishalS-Microsoft Date: Fri, 4 Apr 2025 13:22:42 +0530 Subject: [PATCH 16/18] resolved bug:16535 (#468) --- .../ChatHistoryListItemCell.test.tsx | 6 +++--- .../ChatHistory/ChatHistoryListItemCell.tsx | 18 ++++++++++++++---- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/ClientAdvisor/App/frontend/src/components/ChatHistory/ChatHistoryListItemCell.test.tsx b/ClientAdvisor/App/frontend/src/components/ChatHistory/ChatHistoryListItemCell.test.tsx index 9edd86b0..1f52822a 100644 --- a/ClientAdvisor/App/frontend/src/components/ChatHistory/ChatHistoryListItemCell.test.tsx +++ b/ClientAdvisor/App/frontend/src/components/ChatHistory/ChatHistoryListItemCell.test.tsx @@ -38,8 +38,8 @@ describe('ChatHistoryListItemCell', () => { test('renders the chat history item', () => { renderWithContext(, mockAppState) - const titleElement = screen.getByText(/Test Chat/i) - expect(titleElement).toBeInTheDocument() + const titleElement = screen.getAllByText(/Test Chat/i) + expect(titleElement.length).toBeGreaterThan(1) }) test('truncates long title', () => { @@ -50,7 +50,7 @@ describe('ChatHistoryListItemCell', () => { renderWithContext(, mockAppState) - const truncatedTitle = screen.getByText(/A very long title that shoul .../i) + const truncatedTitle = screen.getByText(/A very long title that s .../i) expect(truncatedTitle).toBeInTheDocument() }) diff --git a/ClientAdvisor/App/frontend/src/components/ChatHistory/ChatHistoryListItemCell.tsx b/ClientAdvisor/App/frontend/src/components/ChatHistory/ChatHistoryListItemCell.tsx index b9b2017d..e4209908 100644 --- a/ClientAdvisor/App/frontend/src/components/ChatHistory/ChatHistoryListItemCell.tsx +++ b/ClientAdvisor/App/frontend/src/components/ChatHistory/ChatHistoryListItemCell.tsx @@ -7,6 +7,7 @@ import { DialogType, IconButton, ITextField, + ITooltipHostStyles, List, PrimaryButton, Separator, @@ -14,7 +15,9 @@ import { SpinnerSize, Stack, Text, - TextField + TextField, + TooltipHost, + DirectionalHint, } from '@fluentui/react' import { useBoolean } from '@fluentui/react-hooks' @@ -107,7 +110,7 @@ export const ChatHistoryListItemCell: React.FC = ( appStateContext?.dispatch({ type: 'UPDATE_CURRENT_CHAT', payload: item }) } - const truncatedTitle = item?.title?.length > 28 ? `${item.title.substring(0, 28)} ...` : item.title + const truncatedTitle = item?.title?.length > 24 ? `${item.title.substring(0, 24)} ...` : item.title const handleSaveEdit = async (e: any) => { e.preventDefault() @@ -236,8 +239,15 @@ export const ChatHistoryListItemCell: React.FC = ( ) : ( <> - -
{truncatedTitle}
+ + + +
{truncatedTitle}
+
+
{(isSelected || isHovered) && ( Date: Wed, 9 Apr 2025 12:14:45 +0530 Subject: [PATCH 17/18] feat: SFI SQL Policy Changes (#469) * Added Sfi Sql related code changes * removing the index script module from main.bicep * Adding managed identity authentication to scripts file * Added code changes in copy_kp_files to resolved unzip issue * added chnages in copy_kb_files * update copy_kb_files * updated post deployment scripts * Added pyodbc changes in create_sql_tables.py * Created new managed identity with data reader and writer role * adding main.json changes * Adding some changes to support pyodbc connection * updating the odbc driver in db.py * removed debug related code from app.py * refactor the code and added comments * Added except block to connect using username, password for existing deployment * resolved the pylint issues * Resolved pylint issues * Updated the test_app.py and test_db.py * Resolved pylint issues for unit tests * Updated post deployment script * updated main.json --- ClientAdvisor/App/WebApp.Dockerfile | 6 +- ClientAdvisor/App/app.py | 7 +- ClientAdvisor/App/db.py | 50 ++- ClientAdvisor/App/requirements.txt | 4 +- ClientAdvisor/App/tests/test_app.py | 76 ++-- ClientAdvisor/App/tests/test_db.py | 78 +++- ClientAdvisor/AzureFunction/Dockerfile | 4 + ClientAdvisor/AzureFunction/function_app.py | 47 ++- ClientAdvisor/AzureFunction/requirements.txt | 3 + .../Deployment/bicep/deploy_app_service.bicep | 12 +- .../bicep/deploy_azure_function.bicep | 13 +- .../bicep/deploy_managed_identity.bicep | 34 ++ .../deploy_post_deployment_scripts.bicep | 93 +++++ .../Deployment/bicep/deploy_sql_db.bicep | 10 +- ClientAdvisor/Deployment/bicep/main.bicep | 61 ++- ClientAdvisor/Deployment/bicep/main.json | 386 +++++++++++++----- .../create-sql-user-and-role.ps1 | 77 ++++ .../Deployment/scripts/copy_kb_files.sh | 17 +- .../index_scripts/create_search_index.py | 5 +- .../index_scripts/create_sql_tables.py | 45 +- .../index_scripts/create_update_sql_dates.py | 5 +- .../scripts/index_scripts/requirements.txt | 4 +- .../scripts/run_create_index_scripts.sh | 3 + 23 files changed, 824 insertions(+), 216 deletions(-) create mode 100644 ClientAdvisor/Deployment/bicep/deploy_post_deployment_scripts.bicep create mode 100644 ClientAdvisor/Deployment/scripts/add_user_scripts/create-sql-user-and-role.ps1 diff --git a/ClientAdvisor/App/WebApp.Dockerfile b/ClientAdvisor/App/WebApp.Dockerfile index 48b86289..a1dd6418 100644 --- a/ClientAdvisor/App/WebApp.Dockerfile +++ b/ClientAdvisor/App/WebApp.Dockerfile @@ -18,8 +18,12 @@ RUN apk add --no-cache --virtual .build-deps \ libffi-dev \ openssl-dev \ curl \ + unixodbc-dev \ && apk add --no-cache \ - libpq + libpq \ + && curl -O https://download.microsoft.com/download/7/6/d/76de322a-d860-4894-9945-f0cc5d6a45f8/msodbcsql18_18.4.1.1-1_amd64.apk \ + && apk add --allow-untrusted msodbcsql18_18.4.1.1-1_amd64.apk \ + && rm msodbcsql18_18.4.1.1-1_amd64.apk COPY ./ClientAdvisor/App/requirements.txt /usr/src/app/ RUN pip install --no-cache-dir -r /usr/src/app/requirements.txt \ diff --git a/ClientAdvisor/App/app.py b/ClientAdvisor/App/app.py index 2755d75b..4cc9011d 100644 --- a/ClientAdvisor/App/app.py +++ b/ClientAdvisor/App/app.py @@ -24,6 +24,7 @@ format_stream_response, generateFilterString, parse_multi_columns) from db import get_connection +from db import dict_cursor bp = Blueprint("routes", __name__, static_folder="static", template_folder="static") @@ -1583,7 +1584,8 @@ def get_users(): ORDER BY NextMeeting ASC; """ cursor.execute(sql_stmt) - rows = cursor.fetchall() + # Since pyodbc returns query results as a list of tuples, using `dict_cursor` function to convert these tuples into a list of dictionaries + rows = dict_cursor(cursor) if len(rows) <= 6: # update ClientMeetings,Assets,Retirement tables sample data to current date @@ -1618,7 +1620,8 @@ def get_users(): FROM DaysDifference """ cursor.execute(combined_stmt) - date_diff_rows = cursor.fetchall() + # Since pyodbc returns query results as a list of tuples, using `dict_cursor` function to convert these tuples into a list of dictionaries + date_diff_rows = dict_cursor(cursor) client_days = ( date_diff_rows[0]["ClientMeetingDaysDifference"] diff --git a/ClientAdvisor/App/db.py b/ClientAdvisor/App/db.py index 536bb940..d0a81bec 100644 --- a/ClientAdvisor/App/db.py +++ b/ClientAdvisor/App/db.py @@ -1,20 +1,60 @@ # db.py import os -import pymssql from dotenv import load_dotenv +from azure.identity import DefaultAzureCredential +import pyodbc +import struct +import logging + load_dotenv() +driver = "{ODBC Driver 18 for SQL Server}" server = os.environ.get("SQLDB_SERVER") database = os.environ.get("SQLDB_DATABASE") username = os.environ.get("SQLDB_USERNAME") password = os.environ.get("SQLDB_PASSWORD") +mid_id = os.environ.get("SQLDB_USER_MID") + + +def dict_cursor(cursor): + """ + Converts rows fetched by the cursor into a list of dictionaries. + + Args: + cursor: A database cursor object. + + Returns: + A list of dictionaries representing rows. + """ + columns = [column[0] for column in cursor.description] + return [dict(zip(columns, row)) for row in cursor.fetchall()] def get_connection(): + try: + credential = DefaultAzureCredential(managed_identity_client_id=mid_id) + + token_bytes = credential.get_token( + "https://database.windows.net/.default" + ).token.encode("utf-16-LE") + token_struct = struct.pack(f"=8.2,<9 # Compatible version for pytest-asyncio pytest-asyncio==0.25.3 -pytest-cov==6.0.0 \ No newline at end of file +pytest-cov==6.0.0 + +pyodbc==5.2.0 \ No newline at end of file diff --git a/ClientAdvisor/App/tests/test_app.py b/ClientAdvisor/App/tests/test_app.py index dd7f9347..0740c6a9 100644 --- a/ClientAdvisor/App/tests/test_app.py +++ b/ClientAdvisor/App/tests/test_app.py @@ -200,50 +200,60 @@ async def test_ensure_cosmos_generic_exception(mock_init_cosmosdb_client, client @pytest.mark.asyncio -async def test_get_users_success(client): +@patch("app.get_connection") +@patch("app.dict_cursor") +async def test_get_users_success(mock_dict_cursor, mock_get_connection, client): + # Mock database connection and cursor mock_conn = MagicMock() mock_cursor = MagicMock() + mock_get_connection.return_value = mock_conn mock_conn.cursor.return_value = mock_cursor - mock_cursor.fetchall.return_value = [ - { - "ClientId": 1, - "ndays": 10, - "ClientMeetingDaysDifference": 1, - "AssetMonthsDifference": 1, - "StatusMonthsDifference": 1, - "DaysDifference": 1, - "Client": "Client A", - "Email": "clienta@example.com", - "AssetValue": "1,000,000", - "ClientSummary": "Summary A", - "LastMeetingDateFormatted": "Monday January 1, 2023", - "LastMeetingStartTime": "10:00 AM", - "LastMeetingEndTime": "10:30 AM", - "NextMeetingFormatted": "Monday January 8, 2023", - "NextMeetingStartTime": "11:00 AM", - "NextMeetingEndTime": "11:30 AM", - } - ] - with patch("app.get_connection", return_value=mock_conn): - response = await client.get("/api/users") - assert response.status_code == 200 - res_text = await response.get_data(as_text=True) - assert json.loads(res_text) == [ + # Mock query results + mock_dict_cursor.side_effect = [ + [ # First call (client data) { "ClientId": 1, - "ClientName": "Client A", - "ClientEmail": "clienta@example.com", + "Client": "Client A", + "Email": "clienta@example.com", "AssetValue": "1,000,000", - "NextMeeting": "Monday January 8, 2023", - "NextMeetingTime": "11:00 AM", - "NextMeetingEndTime": "11:30 AM", - "LastMeeting": "Monday January 1, 2023", + "ClientSummary": "Summary A", + "LastMeetingDateFormatted": "Monday January 1, 2023", "LastMeetingStartTime": "10:00 AM", "LastMeetingEndTime": "10:30 AM", - "ClientSummary": "Summary A", + "NextMeetingFormatted": "Monday January 8, 2023", + "NextMeetingStartTime": "11:00 AM", + "NextMeetingEndTime": "11:30 AM", + } + ], + [ # Second call (date difference query) + { + "ClientMeetingDaysDifference": 5, + "AssetMonthsDifference": 1, + "StatusMonthsDifference": 1 } ] + ] + + # Call the function + response = await client.get("/api/users") + assert response.status_code == 200 + res_text = await response.get_data(as_text=True) + assert json.loads(res_text) == [ + { + "ClientId": 1, + "ClientName": "Client A", + "ClientEmail": "clienta@example.com", + "AssetValue": "1,000,000", + "NextMeeting": "Monday January 8, 2023", + "NextMeetingTime": "11:00 AM", + "NextMeetingEndTime": "11:30 AM", + "LastMeeting": "Monday January 1, 2023", + "LastMeetingStartTime": "10:00 AM", + "LastMeetingEndTime": "10:30 AM", + "ClientSummary": "Summary A", + } + ] @pytest.mark.asyncio diff --git a/ClientAdvisor/App/tests/test_db.py b/ClientAdvisor/App/tests/test_db.py index e0ac75c2..19e0dc2e 100644 --- a/ClientAdvisor/App/tests/test_db.py +++ b/ClientAdvisor/App/tests/test_db.py @@ -1,15 +1,27 @@ +import struct from unittest.mock import MagicMock, patch import db +import pyodbc +# Mock configuration db.server = "mock_server" db.username = "mock_user" db.password = "mock_password" db.database = "mock_database" +db.driver = "mock_driver" +db.mid_id = "mock_mid_id" # Managed identity client ID if needed -@patch("db.pymssql.connect") -def test_get_connection(mock_connect): +@patch("db.pyodbc.connect") # Mock pyodbc.connect +@patch("db.DefaultAzureCredential") # Mock DefaultAzureCredential +def test_get_connection(mock_credential_class, mock_connect): + # Mock the DefaultAzureCredential and get_token method + mock_credential = MagicMock() + mock_credential_class.return_value = mock_credential + mock_token = MagicMock() + mock_token.token = "mock_token" + mock_credential.get_token.return_value = mock_token # Create a mock connection object mock_conn = MagicMock() mock_connect.return_value = mock_conn @@ -17,14 +29,64 @@ def test_get_connection(mock_connect): # Call the function conn = db.get_connection() - # Assert that pymssql.connect was called with the correct parameters + # Assert that DefaultAzureCredential and get_token were called correctly + mock_credential_class.assert_called_once_with(managed_identity_client_id=db.mid_id) + mock_credential.get_token.assert_called_once_with("https://database.windows.net/.default") + + # Assert that pyodbc.connect was called with the correct parameters, including the token + expected_attrs_before = { + 1256: struct.pack(f" + +Param( + [string] $SqlServerName, + [string] $SqlDatabaseName, + [string] $ClientId, + [string] $DisplayName, + [string] $ManagedIdentityClientId, + [string] $DatabaseRole +) + +function Resolve-Module($moduleName) { + # If module is imported; say that and do nothing + if (Get-Module | Where-Object { $_.Name -eq $moduleName }) { + Write-Debug "Module $moduleName is already imported" + } elseif (Get-Module -ListAvailable | Where-Object { $_.Name -eq $moduleName }) { + Import-Module $moduleName + } elseif (Find-Module -Name $moduleName | Where-Object { $_.Name -eq $moduleName }) { + Install-Module $moduleName -Force -Scope CurrentUser + Import-Module $moduleName + } else { + Write-Error "Module $moduleName not found" + [Environment]::exit(1) + } +} + +### +### MAIN SCRIPT +### +Resolve-Module -moduleName Az.Resources +Resolve-Module -moduleName SqlServer + +$sql = @" +DECLARE @username nvarchar(max) = N'$($DisplayName)'; +DECLARE @clientId uniqueidentifier = '$($ClientId)'; +DECLARE @sid NVARCHAR(max) = CONVERT(VARCHAR(max), CONVERT(VARBINARY(16), @clientId), 1); +DECLARE @cmd NVARCHAR(max) = N'CREATE USER [' + @username + '] WITH SID = ' + @sid + ', TYPE = E;'; +IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = @username) +BEGIN + EXEC(@cmd) +END +EXEC sp_addrolemember '$($DatabaseRole)', @username; +"@ + +Write-Output "`nSQL:`n$($sql)`n`n" + +Connect-AzAccount -Identity -AccountId $ManagedIdentityClientId +$token = (Get-AzAccessToken -ResourceUrl https://database.windows.net/).Token +Invoke-SqlCmd -ServerInstance "$SqlServerName" -Database $SqlDatabaseName -AccessToken $token -Query $sql -ErrorAction 'Stop' \ No newline at end of file diff --git a/ClientAdvisor/Deployment/scripts/copy_kb_files.sh b/ClientAdvisor/Deployment/scripts/copy_kb_files.sh index 415089b9..9e14442f 100644 --- a/ClientAdvisor/Deployment/scripts/copy_kb_files.sh +++ b/ClientAdvisor/Deployment/scripts/copy_kb_files.sh @@ -4,6 +4,7 @@ storageAccount="$1" fileSystem="$2" baseUrl="$3" +managedIdentityClientId="$4" zipFileName1="clientdata.zip" extractedFolder1="clientdata" @@ -13,18 +14,24 @@ zipFileName2="clienttranscripts.zip" extractedFolder2="clienttranscripts" zipUrl2=${baseUrl}"Deployment/data/clienttranscripts.zip" +# Create folders if they do not exist +mkdir -p "/mnt/azscripts/azscriptinput/$extractedFolder1" +mkdir -p "/mnt/azscripts/azscriptinput/$extractedFolder2" + # Download the zip file -curl --output "$zipFileName1" "$zipUrl1" -curl --output "$zipFileName2" "$zipUrl2" +curl --output /mnt/azscripts/azscriptinput/"$zipFileName1" "$zipUrl1" +curl --output /mnt/azscripts/azscriptinput/"$zipFileName2" "$zipUrl2" # Extract the zip file unzip /mnt/azscripts/azscriptinput/"$zipFileName1" -d /mnt/azscripts/azscriptinput/"$extractedFolder1" unzip /mnt/azscripts/azscriptinput/"$zipFileName2" -d /mnt/azscripts/azscriptinput/"$extractedFolder2" +echo "Script Started" + # Authenticate with Azure using managed identity -az login --identity +az login --identity --client-id ${managedIdentityClientId} # Using az storage blob upload-batch to upload files with managed identity authentication, as the az storage fs directory upload command is not working with managed identity authentication. -az storage blob upload-batch --account-name "$storageAccount" --destination data/"$extractedFolder1" --source /mnt/azscripts/azscriptinput/"$extractedFolder1" --auth-mode login --pattern '*' -az storage blob upload-batch --account-name "$storageAccount" --destination data/"$extractedFolder2" --source /mnt/azscripts/azscriptinput/"$extractedFolder2" --auth-mode login --pattern '*' +az storage blob upload-batch --account-name "$storageAccount" --destination data/"$extractedFolder1" --source /mnt/azscripts/azscriptinput/"$extractedFolder1" --auth-mode login --pattern '*' --overwrite +az storage blob upload-batch --account-name "$storageAccount" --destination data/"$extractedFolder2" --source /mnt/azscripts/azscriptinput/"$extractedFolder2" --auth-mode login --pattern '*' --overwrite # az storage fs directory upload -f "$fileSystem" --account-name "$storageAccount" -s "$extractedFolder1" --account-key "$accountKey" --recursive # az storage fs directory upload -f "$fileSystem" --account-name "$storageAccount" -s "$extractedFolder2" --account-key "$accountKey" --recursive diff --git a/ClientAdvisor/Deployment/scripts/index_scripts/create_search_index.py b/ClientAdvisor/Deployment/scripts/index_scripts/create_search_index.py index af89d88c..b363fcfb 100644 --- a/ClientAdvisor/Deployment/scripts/index_scripts/create_search_index.py +++ b/ClientAdvisor/Deployment/scripts/index_scripts/create_search_index.py @@ -1,5 +1,6 @@ #Get Azure Key Vault Client key_vault_name = 'kv_to-be-replaced' #'nc6262-kv-2fpeafsylfd2e' +managed_identity_client_id = 'mici_to-be-replaced' index_name = "transcripts_index" @@ -14,7 +15,7 @@ def get_secrets_from_kv(kv_name, secret_name): # Set the name of the Azure Key Vault key_vault_name = kv_name - credential = DefaultAzureCredential() + credential = DefaultAzureCredential(managed_identity_client_id=managed_identity_client_id) # Create a secret client object using the credential and Key Vault name secret_client = SecretClient(vault_url=f"https://{key_vault_name}.vault.azure.net/", credential=credential) @@ -179,7 +180,7 @@ def chunk_data(text): ) account_name = get_secrets_from_kv(key_vault_name, "ADLS-ACCOUNT-NAME") -credential = DefaultAzureCredential() +credential = DefaultAzureCredential(managed_identity_client_id=managed_identity_client_id) account_url = f"https://{account_name}.dfs.core.windows.net" diff --git a/ClientAdvisor/Deployment/scripts/index_scripts/create_sql_tables.py b/ClientAdvisor/Deployment/scripts/index_scripts/create_sql_tables.py index cb43e8e8..adaa95a4 100644 --- a/ClientAdvisor/Deployment/scripts/index_scripts/create_sql_tables.py +++ b/ClientAdvisor/Deployment/scripts/index_scripts/create_sql_tables.py @@ -1,4 +1,5 @@ key_vault_name = 'kv_to-be-replaced' +managed_identity_client_id = 'mici_to-be-replaced' import pandas as pd import pymssql @@ -7,10 +8,13 @@ from azure.keyvault.secrets import SecretClient from azure.identity import DefaultAzureCredential +from azure.identity import DefaultAzureCredential +import pyodbc +import struct def get_secrets_from_kv(kv_name, secret_name): key_vault_name = kv_name # Set the name of the Azure Key Vault - credential = DefaultAzureCredential() + credential = DefaultAzureCredential(managed_identity_client_id=managed_identity_client_id) secret_client = SecretClient(vault_url=f"https://{key_vault_name}.vault.azure.net/", credential=credential) # Create a secret client object using the credential and Key Vault name return(secret_client.get_secret(secret_name).value) # Retrieve the secret value @@ -18,8 +22,25 @@ def get_secrets_from_kv(kv_name, secret_name): database = get_secrets_from_kv(key_vault_name,"SQLDB-DATABASE") username = get_secrets_from_kv(key_vault_name,"SQLDB-USERNAME") password = get_secrets_from_kv(key_vault_name,"SQLDB-PASSWORD") +driver = "{ODBC Driver 18 for SQL Server}" -conn = pymssql.connect(server, username, password, database) + +#conn = pymssql.connect(server, username, password, database) +credential = DefaultAzureCredential(managed_identity_client_id=managed_identity_client_id) + +token_bytes = credential.get_token( + "https://database.windows.net/.default" + ).token.encode("utf-16-LE") +token_struct = struct.pack(f" Date: Wed, 9 Apr 2025 18:03:10 +0530 Subject: [PATCH 18/18] perf: Semantic Kernel and Prompt improvement (#415) * Semantic Kernel and Prompt improvement * update dependencies and Azure OpenAI model configurations * fix: upgrade pip and setuptools before installing requirements * update SQL query placeholder from %s to ? for compatibility * update Azure OpenAI gpt4omini deployment type to globalstandard --------- Co-authored-by: Harsh-Microsoft --- ClientAdvisor/App/WebApp.Dockerfile | 4 +- ClientAdvisor/AzureFunction/function_app.py | 416 ++++++++++-------- ClientAdvisor/AzureFunction/requirements.txt | 4 +- .../Deployment/bicep/deploy_app_service.bicep | 2 +- .../bicep/deploy_azure_function.bicep | 2 +- .../bicep/deploy_azure_open_ai.bicep | 10 +- ClientAdvisor/Deployment/bicep/main.bicep | 75 ++-- ClientAdvisor/Deployment/bicep/main.json | 84 ++-- 8 files changed, 329 insertions(+), 268 deletions(-) diff --git a/ClientAdvisor/App/WebApp.Dockerfile b/ClientAdvisor/App/WebApp.Dockerfile index a1dd6418..6d61f707 100644 --- a/ClientAdvisor/App/WebApp.Dockerfile +++ b/ClientAdvisor/App/WebApp.Dockerfile @@ -26,7 +26,9 @@ RUN apk add --no-cache --virtual .build-deps \ && rm msodbcsql18_18.4.1.1-1_amd64.apk COPY ./ClientAdvisor/App/requirements.txt /usr/src/app/ -RUN pip install --no-cache-dir -r /usr/src/app/requirements.txt \ + +RUN pip install --upgrade pip setuptools wheel \ + && pip install --no-cache-dir -r /usr/src/app/requirements.txt \ && rm -rf /root/.cache COPY ./ClientAdvisor/App/ /usr/src/app/ diff --git a/ClientAdvisor/AzureFunction/function_app.py b/ClientAdvisor/AzureFunction/function_app.py index 67b7783c..6b6481b7 100644 --- a/ClientAdvisor/AzureFunction/function_app.py +++ b/ClientAdvisor/AzureFunction/function_app.py @@ -1,20 +1,12 @@ import azure.functions as func import openai from azurefunctions.extensions.http.fastapi import Request, StreamingResponse -import asyncio import os - from typing import Annotated -from semantic_kernel.connectors.ai.function_call_behavior import FunctionCallBehavior -from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion, OpenAIChatCompletion -from semantic_kernel.connectors.ai.open_ai.prompt_execution_settings.open_ai_prompt_execution_settings import ( - OpenAIChatPromptExecutionSettings, -) -from semantic_kernel.contents.chat_history import ChatHistory -from semantic_kernel.contents.function_call_content import FunctionCallContent -from semantic_kernel.core_plugins.time_plugin import TimePlugin -from semantic_kernel.functions.kernel_arguments import KernelArguments +from semantic_kernel.agents.open_ai import AzureAssistantAgent +from semantic_kernel.contents.chat_message_content import ChatMessageContent +from semantic_kernel.contents.utils.author_role import AuthorRole from semantic_kernel.functions.kernel_function_decorator import kernel_function from semantic_kernel.kernel import Kernel from azure.identity import DefaultAzureCredential @@ -22,95 +14,130 @@ import struct import logging -# Azure Function App +# -------------------------- +# Azure Function App setup +# -------------------------- app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS) +# Retrieve required environment variables endpoint = os.environ.get("AZURE_OPEN_AI_ENDPOINT") api_key = os.environ.get("AZURE_OPEN_AI_API_KEY") api_version = os.environ.get("OPENAI_API_VERSION") deployment = os.environ.get("AZURE_OPEN_AI_DEPLOYMENT_MODEL") temperature = 0 -search_endpoint = os.environ.get("AZURE_AI_SEARCH_ENDPOINT") +search_endpoint = os.environ.get("AZURE_AI_SEARCH_ENDPOINT") search_key = os.environ.get("AZURE_AI_SEARCH_API_KEY") +# -------------------------- +# Helper function to get client name +# -------------------------- +def get_client_name_from_db(client_id: str) -> str: + """ + Connects to your SQL database and returns the client name for the given client_id. + """ + + conn = get_connection() + cursor = conn.cursor() + + sql = "SELECT Client FROM Clients WHERE ClientId = ?" + cursor.execute(sql, (client_id,)) + row = cursor.fetchone() + conn.close() + + if row: + return row[0] # The 'Client' column + else: + return "" + +# -------------------------- +# ChatWithDataPlugin Class +# -------------------------- class ChatWithDataPlugin: - @kernel_function(name="Greeting", description="Respond to any greeting or general questions") + @kernel_function(name="GreetingsResponse", description="Respond to any greeting or general questions") def greeting(self, input: Annotated[str, "the question"]) -> Annotated[str, "The output is a string"]: - query = input.split(':::')[0] - endpoint = os.environ.get("AZURE_OPEN_AI_ENDPOINT") - api_key = os.environ.get("AZURE_OPEN_AI_API_KEY") - client = openai.AzureOpenAI( - azure_endpoint=endpoint, - api_key=api_key, - api_version="2023-09-01-preview" - ) - deployment = os.environ.get("AZURE_OPEN_AI_DEPLOYMENT_MODEL") + """ + Simple greeting handler using Azure OpenAI. + """ try: + client = openai.AzureOpenAI( + azure_endpoint=endpoint, + api_key=api_key, + api_version=api_version + ) completion = client.chat.completions.create( model=deployment, messages=[ - {"role": "system", "content": "You are a helpful assistant to repond to any greeting or general questions."}, - {"role": "user", "content": query}, + { + "role": "system", + "content": "You are a helpful assistant to respond to greetings or general questions." + }, + { + "role": "user", + "content": input + }, ], temperature=0, + top_p=1, + n=1 ) answer = completion.choices[0].message.content except Exception as e: - answer = str(e) # 'Information from database could not be retrieved. Please try again later.' + answer = f"Error retrieving greeting response: {str(e)}" return answer - - @kernel_function(name="ChatWithSQLDatabase", description="Given a query about client assets, investements and meeting dates or times, get details from the database") + @kernel_function(name="ChatWithSQLDatabase", description="Generate and run a T-SQL query based on the provided question and client id") def get_SQL_Response( self, input: Annotated[str, "the question"], ClientId: Annotated[str, "the ClientId"] - ): - - # clientid = input.split(':::')[-1] - # query = input.split(':::')[0] + ' . ClientId = ' + input.split(':::')[-1] + ) -> Annotated[str, "The output is a string"]: + """ + Dynamically generates a T-SQL query using the Azure OpenAI chat endpoint + and then executes it against the SQL database. + """ clientid = ClientId query = input - endpoint = os.environ.get("AZURE_OPEN_AI_ENDPOINT") - api_key = os.environ.get("AZURE_OPEN_AI_API_KEY") + # Initialize the Azure OpenAI client client = openai.AzureOpenAI( azure_endpoint=endpoint, api_key=api_key, - api_version="2023-09-01-preview" + api_version=api_version ) - deployment = os.environ.get("AZURE_OPEN_AI_DEPLOYMENT_MODEL") + # Retrieve the SQL prompt from environment variables (if available) sql_prompt = os.environ.get("AZURE_SQL_SYSTEM_PROMPT") if sql_prompt: - sql_prompt = sql_prompt.replace("{query}", query) - sql_prompt = sql_prompt.replace("{clientid}", clientid) + sql_prompt = sql_prompt.replace("{query}", query).replace("{clientid}", clientid) else: - sql_prompt = f'''A valid T-SQL query to find {query} for tables and columns provided below: + # Fallback prompt if not set in environment + sql_prompt = f'''Generate a valid T-SQL query to find {query} for tables and columns provided below: 1. Table: Clients - Columns: ClientId,Client,Email,Occupation,MaritalStatus,Dependents + Columns: ClientId, Client, Email, Occupation, MaritalStatus, Dependents 2. Table: InvestmentGoals - Columns: ClientId,InvestmentGoal + Columns: ClientId, InvestmentGoal 3. Table: Assets - Columns: ClientId,AssetDate,Investment,ROI,Revenue,AssetType + Columns: ClientId, AssetDate, Investment, ROI, Revenue, AssetType 4. Table: ClientSummaries - Columns: ClientId,ClientSummary + Columns: ClientId, ClientSummary 5. Table: InvestmentGoalsDetails - Columns: ClientId,InvestmentGoal,TargetAmount,Contribution + Columns: ClientId, InvestmentGoal, TargetAmount, Contribution 6. Table: Retirement - Columns: ClientId,StatusDate,RetirementGoalProgress,EducationGoalProgress - 7.Table: ClientMeetings - Columns: ClientId,ConversationId,Title,StartTime,EndTime,Advisor,ClientEmail - Use Investement column from Assets table as value always. + Columns: ClientId, StatusDate, RetirementGoalProgress, EducationGoalProgress + 7. Table: ClientMeetings + Columns: ClientId, ConversationId, Title, StartTime, EndTime, Advisor, ClientEmail + Always use the Investment column from the Assets table as the value. Assets table has snapshots of values by date. Do not add numbers across different dates for total values. - Do not use client name in filter. + Do not use client name in filters. Do not include assets values unless asked for. - Always use ClientId = {clientid} in the query filter. - Always return client name in the query. - Only return the generated sql query. do not return anything else''' - try: + ALWAYS use ClientId = {clientid} in the query filter. + ALWAYS select Client Name (Column: Client) in the query. + Query filters are IMPORTANT. Add filters like AssetType, AssetDate, etc. if needed. + If the result might return more than 100 rows, include TOP 100 to limit the row count. + Only return the generated SQL query. Do not return anything else.''' + try: completion = client.chat.completions.create( model=deployment, messages=[ @@ -118,108 +145,120 @@ def get_SQL_Response( {"role": "user", "content": sql_prompt}, ], temperature=0, + top_p=1, + n=1 ) + sql_query = completion.choices[0].message.content - sql_query = sql_query.replace("```sql",'').replace("```",'') - #print(sql_query) + + # Remove any triple backticks if present + sql_query = sql_query.replace("```sql", "").replace("```", "") + + print("Generated SQL:", sql_query) conn = get_connection() # conn = pyodbc.connect(connectionString) cursor = conn.cursor() cursor.execute(sql_query) - answer = '' - for row in cursor.fetchall(): - answer += str(row) + + rows = cursor.fetchall() + if not rows: + answer = "No data found for that client." + else: + answer = "" + for row in rows: + answer += str(row) + "\n" + + conn.close() + except Exception as e: - answer = str(e) # 'Information from database could not be retrieved. Please try again later.' + answer = f"Error retrieving data from SQL: {str(e)}" return answer - #return sql_query - - @kernel_function(name="ChatWithCallTranscripts", description="given a query about meetings summary or actions or notes, get answer from search index for a given ClientId") + @kernel_function(name="ChatWithCallTranscripts", description="Retrieve answers from call transcript search for a given client") def get_answers_from_calltranscripts( self, question: Annotated[str, "the question"], ClientId: Annotated[str, "the ClientId"] - ): + ) -> Annotated[str, "The output is a string"]: + """ + Uses Azure Cognitive Search (via the Azure OpenAI extension) to find relevant call transcripts. + """ + try: + client = openai.AzureOpenAI( + azure_endpoint=endpoint, + api_key=api_key, + api_version="2024-02-01" + ) - endpoint=os.environ.get("AZURE_OPEN_AI_ENDPOINT") - deployment=os.environ.get("AZURE_OPEN_AI_DEPLOYMENT_MODEL") - apikey=os.environ.get("AZURE_OPEN_AI_API_KEY") + system_message = os.environ.get("AZURE_CALL_TRANSCRIPT_SYSTEM_PROMPT") + if not system_message: + system_message = ( + "You are an assistant who supports wealth advisors in preparing for client meetings. " + "You have access to the client’s past meeting call transcripts. " + "When answering questions, especially summary requests, provide a detailed and structured response that includes key topics, concerns, decisions, and trends. " + "If no data is available, state 'No relevant data found for previous meetings.'" + ) - search_endpoint = os.environ.get("AZURE_AI_SEARCH_ENDPOINT") - search_key = os.environ.get("AZURE_AI_SEARCH_API_KEY") - index_name = os.environ.get("AZURE_SEARCH_INDEX") + completion = client.chat.completions.create( + model=deployment, + messages=[ + {"role": "system", "content": system_message}, + {"role": "user", "content": question} + ], + seed=42, + temperature=0, + top_p=1, + n=1, + max_tokens=800, + extra_body={ + "data_sources": [ + { + "type": "azure_search", + "parameters": { + "endpoint": search_endpoint, + "index_name": os.environ.get("AZURE_SEARCH_INDEX"), + "semantic_configuration": "default", + "query_type": "vector_simple_hybrid", + "fields_mapping": { + "content_fields_separator": "\n", + "content_fields": ["content"], + "filepath_field": "chunk_id", + "title_field": "", + "url_field": "sourceurl", + "vector_fields": ["contentVector"] + }, + "semantic_configuration": 'my-semantic-config', + "in_scope": "true", + "role_information": system_message, + "filter": f"client_id eq '{ClientId}'", + "strictness": 3, + "top_n_documents": 5, + "authentication": { + "type": "api_key", + "key": search_key + }, + "embedding_dependency": { + "type": "deployment_name", + "deployment_name": "text-embedding-ada-002" + }, + } + } + ] + } + ) - client = openai.AzureOpenAI( - azure_endpoint= endpoint, #f"{endpoint}/openai/deployments/{deployment}/extensions", - api_key=apikey, - api_version="2024-02-01" - ) + if not completion.choices: + return "No data found for that client." - query = question - system_message = os.environ.get("AZURE_CALL_TRANSCRIPT_SYSTEM_PROMPT") - if not system_message: - system_message = '''You are an assistant who provides wealth advisors with helpful information to prepare for client meetings. - You have access to the client’s meeting call transcripts. - You can use this information to answer questions about the clients''' - - completion = client.chat.completions.create( - model = deployment, - messages = [ - { - "role": "system", - "content": system_message - }, - { - "role": "user", - "content": query - } - ], - seed = 42, - temperature = 0, - max_tokens = 800, - extra_body = { - "data_sources": [ - { - "type": "azure_search", - "parameters": { - "endpoint": search_endpoint, - "index_name": index_name, - "semantic_configuration": "default", - "query_type": "vector_simple_hybrid", #"vector_semantic_hybrid" - "fields_mapping": { - "content_fields_separator": "\n", - "content_fields": ["content"], - "filepath_field": "chunk_id", - "title_field": "", #null, - "url_field": "sourceurl", - "vector_fields": ["contentVector"] - }, - "semantic_configuration": 'my-semantic-config', - "in_scope": "true", - "role_information": system_message, - # "vector_filter_mode": "preFilter", #VectorFilterMode.PRE_FILTER, - "filter": f"client_id eq '{ClientId}'", #"", #null, - "strictness": 3, - "top_n_documents": 5, - "authentication": { - "type": "api_key", - "key": search_key - }, - "embedding_dependency": { - "type": "deployment_name", - "deployment_name": "text-embedding-ada-002" - }, + response_text = completion.choices[0].message.content + if not response_text.strip(): + return "No data found for that client." + return response_text - } - } - ] - } - ) + except Exception as e: + return f"Error retrieving data from call transcripts: {str(e)}" - answer = completion.choices[0].message.content - return answer def get_connection(): driver = "{ODBC Driver 18 for SQL Server}" @@ -255,69 +294,82 @@ def get_connection(): logging.info("Connected using Username & Password") return conn -# Get data from Azure Open AI + + +# -------------------------- +# Streaming Processor +# -------------------------- async def stream_processor(response): + """ + Streams the model's response back to the client in real-time. + """ async for message in response: - if str(message[0]): # Get remaining generated response if applicable - await asyncio.sleep(0.1) - yield str(message[0]) + if message.content: + yield message.content +# -------------------------- +# HTTP Trigger Function +# -------------------------- @app.route(route="stream_openai_text", methods=[func.HttpMethod.GET]) async def stream_openai_text(req: Request) -> StreamingResponse: - + """ + The main Azure Function endpoint. + Receives a query of the form: ?query=::: + Example: ?query=Give summary of previous meetings:::10001 + """ query = req.query_params.get("query", None) - if not query: - query = "please pass a query:::00000" + query = "please pass a query:::00000" # default if none provided + + #Parse user query and client id + user_query = query.split(":::")[0] + client_id = query.split(":::")[-1] + + #Dynamically get the name from the database + selected_client_name = get_client_name_from_db(client_id) + + #Prepare fallback instructions with the single-line prompt + HOST_INSTRUCTIONS = os.environ.get("AZURE_OPENAI_STREAM_TEXT_SYSTEM_PROMPT") + if not HOST_INSTRUCTIONS: + # Insert the name in the prompt: + HOST_INSTRUCTIONS = ( + "You are a helpful assistant to a Wealth Advisor." + "The currently selected client's name is '{SelectedClientName}' (in any variation: ignoring punctuation, apostrophes, and case)." + "If the user mentions no name, assume they are asking about '{SelectedClientName}'." + "If the user references a name that clearly differs from '{SelectedClientName}', respond only with: 'Please only ask questions about the selected client or select another client.' Otherwise, provide thorough answers for every question using only data from SQL or call transcripts." + "If no data is found, respond with 'No data found for that client.' Remove any client identifiers from the final response." + ) + #Create the agent using the Semantic Kernel Assistant Agent kernel = Kernel() + kernel.add_plugin(ChatWithDataPlugin(), plugin_name="ChatWithData") - service_id = "function_calling" + service_id = "agent" + HOST_NAME = "WealthAdvisor" - # Please make sure your AzureOpenAI Deployment allows for function calling - ai_service = AzureChatCompletion( + agent = await AzureAssistantAgent.create( + kernel=kernel, service_id=service_id, - endpoint=endpoint, + name=HOST_NAME, + instructions=HOST_INSTRUCTIONS, api_key=api_key, + deployment_name=deployment, + endpoint=endpoint, api_version=api_version, - deployment_name=deployment ) - kernel.add_service(ai_service) + #Create a conversation thread and add the user's message + thread_id = await agent.create_thread() + message = ChatMessageContent(role=AuthorRole.USER, content=user_query) + await agent.add_chat_message(thread_id=thread_id, message=message) - kernel.add_plugin(ChatWithDataPlugin(), plugin_name="ChatWithData") + #dditional instructions: pass the clientId + ADDITIONAL_INSTRUCTIONS = f"Always send clientId as {client_id}" - settings: OpenAIChatPromptExecutionSettings = kernel.get_prompt_execution_settings_from_service_id( - service_id=service_id - ) - settings.function_call_behavior = FunctionCallBehavior.EnableFunctions( - auto_invoke=True, filters={"included_plugins": ["ChatWithData"]} + #Invoke the streaming response + sk_response = agent.invoke_stream( + thread_id=thread_id, + additional_instructions=ADDITIONAL_INSTRUCTIONS ) - settings.seed = 42 - settings.max_tokens = 800 - settings.temperature = 0 - - system_message = os.environ.get("AZURE_OPENAI_STREAM_TEXT_SYSTEM_PROMPT") - if not system_message: - system_message = '''you are a helpful assistant to a wealth advisor. - Do not answer any questions not related to wealth advisors queries. - If the client name and client id do not match, only return - Please only ask questions about the selected client or select another client to inquire about their details. do not return any other information. - Only use the client name returned from database in the response. - If you cannot answer the question, always return - I cannot answer this question from the data available. Please rephrase or add more details. - ** Remove any client identifiers or ids or numbers or ClientId in the final response. - ''' - - user_query = query.replace('?',' ') - - user_query_prompt = f'''{user_query}. Always send clientId as {user_query.split(':::')[-1]} ''' - query_prompt = f'''{system_message}{user_query_prompt}''' - - - sk_response = kernel.invoke_prompt_stream( - function_name="prompt_test", - plugin_name="weather_test", - prompt=query_prompt, - settings=settings - ) - - return StreamingResponse(stream_processor(sk_response), media_type="text/event-stream") \ No newline at end of file + + return StreamingResponse(stream_processor(sk_response), media_type="text/event-stream") diff --git a/ClientAdvisor/AzureFunction/requirements.txt b/ClientAdvisor/AzureFunction/requirements.txt index b6e0c2ae..bfaaa5ab 100644 --- a/ClientAdvisor/AzureFunction/requirements.txt +++ b/ClientAdvisor/AzureFunction/requirements.txt @@ -4,8 +4,8 @@ azure-functions azurefunctions-extensions-http-fastapi==1.0.0b1 -openai==1.63.0 -semantic_kernel==1.0.4 +openai==1.64.0 +semantic_kernel==1.21.3 pymssql==2.3.2 azure-search-documents==11.6.0b9 diff --git a/ClientAdvisor/Deployment/bicep/deploy_app_service.bicep b/ClientAdvisor/Deployment/bicep/deploy_app_service.bicep index cd8dcce8..a4aa1886 100644 --- a/ClientAdvisor/Deployment/bicep/deploy_app_service.bicep +++ b/ClientAdvisor/Deployment/bicep/deploy_app_service.bicep @@ -67,7 +67,7 @@ param AzureOpenAIResource string param AzureOpenAIModel string @description('Azure OpenAI Model Name') -param AzureOpenAIModelName string = 'gpt-4' +param AzureOpenAIModelName string = 'gpt-4o-mini' @description('Azure Open AI Endpoint') param AzureOpenAIEndpoint string = '' diff --git a/ClientAdvisor/Deployment/bicep/deploy_azure_function.bicep b/ClientAdvisor/Deployment/bicep/deploy_azure_function.bicep index d642a37b..9a18ba14 100644 --- a/ClientAdvisor/Deployment/bicep/deploy_azure_function.bicep +++ b/ClientAdvisor/Deployment/bicep/deploy_azure_function.bicep @@ -25,7 +25,7 @@ param userassignedIdentityId string param userassignedIdentityClientId string var functionAppName = '${solutionName}fn' -var azureOpenAIDeploymentModel = 'gpt-4' +var azureOpenAIDeploymentModel = 'gpt-4o-mini' var azureOpenAIEmbeddingDeployment = 'text-embedding-ada-002' var valueOne = '1' diff --git a/ClientAdvisor/Deployment/bicep/deploy_azure_open_ai.bicep b/ClientAdvisor/Deployment/bicep/deploy_azure_open_ai.bicep index c8a710fa..a8eeeb28 100644 --- a/ClientAdvisor/Deployment/bicep/deploy_azure_open_ai.bicep +++ b/ClientAdvisor/Deployment/bicep/deploy_azure_open_ai.bicep @@ -45,16 +45,16 @@ resource accounts_byc_openai_name_resource 'Microsoft.CognitiveServices/accounts resource accounts_byc_openai_name_gpt_4 'Microsoft.CognitiveServices/accounts/deployments@2023-05-01' = { parent: accounts_byc_openai_name_resource - name: 'gpt-4' + name: 'gpt-4o-mini' sku: { - name: 'Standard' - capacity: 10 + name: 'GlobalStandard' + capacity: 45 } properties: { model: { format: 'OpenAI' - name: 'gpt-4' - version: '0125-Preview' + name: 'gpt-4o-mini' + version: '2024-07-18' } versionUpgradeOption: 'OnceCurrentVersionExpired' raiPolicyName: 'Microsoft.Default' diff --git a/ClientAdvisor/Deployment/bicep/main.bicep b/ClientAdvisor/Deployment/bicep/main.bicep index e5e941a7..7e514430 100644 --- a/ClientAdvisor/Deployment/bicep/main.bicep +++ b/ClientAdvisor/Deployment/bicep/main.bicep @@ -12,6 +12,11 @@ param cosmosLocation string // @description('Fabric Workspace Id if you have one, else leave it empty. ') // param fabricWorkspaceId string +//restricting to these regions because assistants api for gpt-4o-mini is available only in these regions +// @allowed(['eastus', 'eastus2', 'westus', 'westus3', 'swedencentral']) +// @description('Azure OpenAI Location') +// param AzureOpenAILocation string + var resourceGroupLocation = resourceGroup().location // var subscriptionId = subscription().subscriptionId @@ -19,39 +24,41 @@ var solutionLocation = resourceGroupLocation var baseUrl = 'https://raw.githubusercontent.com/microsoft/Build-your-own-copilot-Solution-Accelerator/main/ClientAdvisor/' var appversion = 'latest' -var functionAppSqlPrompt = '''A valid T-SQL query to find {query} for tables and columns provided below: - 1. Table: Clients - Columns: ClientId,Client,Email,Occupation,MaritalStatus,Dependents - 2. Table: InvestmentGoals - Columns: ClientId,InvestmentGoal - 3. Table: Assets - Columns: ClientId,AssetDate,Investment,ROI,Revenue,AssetType - 4. Table: ClientSummaries - Columns: ClientId,ClientSummary - 5. Table: InvestmentGoalsDetails - Columns: ClientId,InvestmentGoal,TargetAmount,Contribution - 6. Table: Retirement - Columns: ClientId,StatusDate,RetirementGoalProgress,EducationGoalProgress - 7.Table: ClientMeetings - Columns: ClientId,ConversationId,Title,StartTime,EndTime,Advisor,ClientEmail - Use Investement column from Assets table as value always. - Assets table has snapshots of values by date. Do not add numbers across different dates for total values. - Do not use client name in filter. - Do not include assets values unless asked for. - Always use ClientId = {clientid} in the query filter. - Always return client name in the query. - Only return the generated sql query. do not return anything else''' - -var functionAppCallTranscriptSystemPrompt = '''You are an assistant who provides wealth advisors with helpful information to prepare for client meetings. - You have access to the client’s meeting call transcripts. - You can use this information to answer questions about the clients''' +var functionAppSqlPrompt ='''Generate a valid T-SQL query to find {query} for tables and columns provided below: + 1. Table: Clients + Columns: ClientId, Client, Email, Occupation, MaritalStatus, Dependents + 2. Table: InvestmentGoals + Columns: ClientId, InvestmentGoal + 3. Table: Assets + Columns: ClientId, AssetDate, Investment, ROI, Revenue, AssetType + 4. Table: ClientSummaries + Columns: ClientId, ClientSummary + 5. Table: InvestmentGoalsDetails + Columns: ClientId, InvestmentGoal, TargetAmount, Contribution + 6. Table: Retirement + Columns: ClientId, StatusDate, RetirementGoalProgress, EducationGoalProgress + 7. Table: ClientMeetings + Columns: ClientId, ConversationId, Title, StartTime, EndTime, Advisor, ClientEmail + Always use the Investment column from the Assets table as the value. + Assets table has snapshots of values by date. Do not add numbers across different dates for total values. + Do not use client name in filters. + Do not include assets values unless asked for. + ALWAYS use ClientId = {clientid} in the query filter. + ALWAYS select Client Name (Column: Client) in the query. + Query filters are IMPORTANT. Add filters like AssetType, AssetDate, etc. if needed. + If the result might return more than 100 rows, include TOP 100 to limit the row count. + Only return the generated SQL query. Do not return anything else.''' + +var functionAppCallTranscriptSystemPrompt = '''You are an assistant who supports wealth advisors in preparing for client meetings. + You have access to the client’s past meeting call transcripts. + When answering questions, especially summary requests, provide a detailed and structured response that includes key topics, concerns, decisions, and trends. + If no data is available, state 'No relevant data found for previous meetings.''' -var functionAppStreamTextSystemPrompt = '''You are a helpful assistant to a wealth advisor. - Do not answer any questions not related to wealth advisors queries. - If the client name and client id do not match, only return - Please only ask questions about the selected client or select another client to inquire about their details. do not return any other information. - Only use the client name returned from database in the response. - If you cannot answer the question, always return - I cannot answer this question from the data available. Please rephrase or add more details. - ** Remove any client identifiers or ids or numbers or ClientId in the final response.''' +var functionAppStreamTextSystemPrompt = '''You are a helpful assistant to a Wealth Advisor. + The currently selected client's name is '{SelectedClientName}' (in any variation: ignoring punctuation, apostrophes, and case). + If the user mentions no name, assume they are asking about '{SelectedClientName}'. + If the user references a name that clearly differs from '{SelectedClientName}', respond only with: 'Please only ask questions about the selected client or select another client.' Otherwise, provide thorough answers for every question using only data from SQL or call transcripts. + If no data is found, respond with 'No data found for that client.' Remove any client identifiers from the final response.''' // ========== Managed Identity ========== // module managedIdentityModule 'deploy_managed_identity.bicep' = { @@ -262,9 +269,9 @@ module appserviceModule 'deploy_app_service.bicep' = { AzureSearchUrlColumn:'sourceurl' AzureOpenAIResource:azOpenAI.outputs.openAIOutput.openAPIEndpoint AzureOpenAIEndpoint:azOpenAI.outputs.openAIOutput.openAPIEndpoint - AzureOpenAIModel:'gpt-4' + AzureOpenAIModel:'gpt-4o-mini' AzureOpenAIKey:azOpenAI.outputs.openAIOutput.openAPIKey - AzureOpenAIModelName:'gpt-4' + AzureOpenAIModelName:'gpt-4o-mini' AzureOpenAITemperature:'0' AzureOpenAITopP:'1' AzureOpenAIMaxTokens:'1000' diff --git a/ClientAdvisor/Deployment/bicep/main.json b/ClientAdvisor/Deployment/bicep/main.json index b88a6bd5..facf9bae 100644 --- a/ClientAdvisor/Deployment/bicep/main.json +++ b/ClientAdvisor/Deployment/bicep/main.json @@ -4,8 +4,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.32.4.45862", - "templateHash": "12228597158932771123" + "version": "0.34.44.8038", + "templateHash": "6567721562027613849" } }, "parameters": { @@ -29,9 +29,9 @@ "solutionLocation": "[variables('resourceGroupLocation')]", "baseUrl": "https://raw.githubusercontent.com/microsoft/Build-your-own-copilot-Solution-Accelerator/main/ClientAdvisor/", "appversion": "latest", - "functionAppSqlPrompt": "A valid T-SQL query to find {query} for tables and columns provided below:\r\n 1. Table: Clients\r\n Columns: ClientId,Client,Email,Occupation,MaritalStatus,Dependents\r\n 2. Table: InvestmentGoals\r\n Columns: ClientId,InvestmentGoal\r\n 3. Table: Assets\r\n Columns: ClientId,AssetDate,Investment,ROI,Revenue,AssetType\r\n 4. Table: ClientSummaries\r\n Columns: ClientId,ClientSummary\r\n 5. Table: InvestmentGoalsDetails\r\n Columns: ClientId,InvestmentGoal,TargetAmount,Contribution\r\n 6. Table: Retirement\r\n Columns: ClientId,StatusDate,RetirementGoalProgress,EducationGoalProgress\r\n 7.Table: ClientMeetings\r\n Columns: ClientId,ConversationId,Title,StartTime,EndTime,Advisor,ClientEmail\r\n Use Investement column from Assets table as value always.\r\n Assets table has snapshots of values by date. Do not add numbers across different dates for total values.\r\n Do not use client name in filter.\r\n Do not include assets values unless asked for.\r\n Always use ClientId = {clientid} in the query filter.\r\n Always return client name in the query.\r\n Only return the generated sql query. do not return anything else", - "functionAppCallTranscriptSystemPrompt": "You are an assistant who provides wealth advisors with helpful information to prepare for client meetings.\r\n You have access to the client’s meeting call transcripts.\r\n You can use this information to answer questions about the clients", - "functionAppStreamTextSystemPrompt": "You are a helpful assistant to a wealth advisor.\r\n Do not answer any questions not related to wealth advisors queries.\r\n If the client name and client id do not match, only return - Please only ask questions about the selected client or select another client to inquire about their details. do not return any other information.\r\n Only use the client name returned from database in the response.\r\n If you cannot answer the question, always return - I cannot answer this question from the data available. Please rephrase or add more details.\r\n ** Remove any client identifiers or ids or numbers or ClientId in the final response." + "functionAppSqlPrompt": "Generate a valid T-SQL query to find {query} for tables and columns provided below:\r\n 1. Table: Clients\r\n Columns: ClientId, Client, Email, Occupation, MaritalStatus, Dependents\r\n 2. Table: InvestmentGoals\r\n Columns: ClientId, InvestmentGoal\r\n 3. Table: Assets\r\n Columns: ClientId, AssetDate, Investment, ROI, Revenue, AssetType\r\n 4. Table: ClientSummaries\r\n Columns: ClientId, ClientSummary\r\n 5. Table: InvestmentGoalsDetails\r\n Columns: ClientId, InvestmentGoal, TargetAmount, Contribution\r\n 6. Table: Retirement\r\n Columns: ClientId, StatusDate, RetirementGoalProgress, EducationGoalProgress\r\n 7. Table: ClientMeetings\r\n Columns: ClientId, ConversationId, Title, StartTime, EndTime, Advisor, ClientEmail\r\n Always use the Investment column from the Assets table as the value.\r\n Assets table has snapshots of values by date. Do not add numbers across different dates for total values.\r\n Do not use client name in filters.\r\n Do not include assets values unless asked for.\r\n ALWAYS use ClientId = {clientid} in the query filter.\r\n ALWAYS select Client Name (Column: Client) in the query.\r\n Query filters are IMPORTANT. Add filters like AssetType, AssetDate, etc. if needed.\r\n If the result might return more than 100 rows, include TOP 100 to limit the row count.\r\n Only return the generated SQL query. Do not return anything else.", + "functionAppCallTranscriptSystemPrompt": "You are an assistant who supports wealth advisors in preparing for client meetings. \r\n You have access to the client’s past meeting call transcripts. \r\n When answering questions, especially summary requests, provide a detailed and structured response that includes key topics, concerns, decisions, and trends. \r\n If no data is available, state 'No relevant data found for previous meetings.", + "functionAppStreamTextSystemPrompt": "You are a helpful assistant to a Wealth Advisor. \r\n The currently selected client's name is '{SelectedClientName}' (in any variation: ignoring punctuation, apostrophes, and case). \r\n If the user mentions no name, assume they are asking about '{SelectedClientName}'. \r\n If the user references a name that clearly differs from '{SelectedClientName}', respond only with: 'Please only ask questions about the selected client or select another client.' Otherwise, provide thorough answers for every question using only data from SQL or call transcripts. \r\n If no data is found, respond with 'No data found for that client.' Remove any client identifiers from the final response." }, "resources": [ { @@ -58,8 +58,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.32.4.45862", - "templateHash": "15881215835798073178" + "version": "0.34.44.8038", + "templateHash": "4201070185547993881" } }, "parameters": { @@ -186,8 +186,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.32.4.45862", - "templateHash": "12718237112242025023" + "version": "0.34.44.8038", + "templateHash": "4003838080878788531" } }, "parameters": { @@ -244,7 +244,7 @@ "resources": [ { "copy": { - "name": "list", + "name": "database::list", "count": "[length(parameters('containers'))]" }, "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", @@ -349,8 +349,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.32.4.45862", - "templateHash": "13214455762521164459" + "version": "0.34.44.8038", + "templateHash": "11698875401555850644" } }, "parameters": { @@ -511,8 +511,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.32.4.45862", - "templateHash": "2319510954446573297" + "version": "0.34.44.8038", + "templateHash": "17273043613283621136" } }, "parameters": { @@ -677,8 +677,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.32.4.45862", - "templateHash": "6507317467445174187" + "version": "0.34.44.8038", + "templateHash": "4680446175273955277" } }, "parameters": { @@ -759,8 +759,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.32.4.45862", - "templateHash": "13153152178869896502" + "version": "0.34.44.8038", + "templateHash": "4948070379347901160" } }, "parameters": { @@ -847,8 +847,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.32.4.45862", - "templateHash": "10512077094934475379" + "version": "0.34.44.8038", + "templateHash": "15880203484874305929" } }, "parameters": { @@ -891,16 +891,16 @@ { "type": "Microsoft.CognitiveServices/accounts/deployments", "apiVersion": "2023-05-01", - "name": "[format('{0}/{1}', parameters('accounts_byc_openai_name'), 'gpt-4')]", + "name": "[format('{0}/{1}', parameters('accounts_byc_openai_name'), 'gpt-4o-mini')]", "sku": { - "name": "Standard", - "capacity": 10 + "name": "GlobalStandard", + "capacity": 45 }, "properties": { "model": { "format": "OpenAI", - "name": "gpt-4", - "version": "0125-Preview" + "name": "gpt-4o-mini", + "version": "2024-07-18" }, "versionUpgradeOption": "OnceCurrentVersionExpired", "raiPolicyName": "Microsoft.Default" @@ -927,7 +927,7 @@ "raiPolicyName": "Microsoft.Default" }, "dependsOn": [ - "[resourceId('Microsoft.CognitiveServices/accounts/deployments', parameters('accounts_byc_openai_name'), 'gpt-4')]", + "[resourceId('Microsoft.CognitiveServices/accounts/deployments', parameters('accounts_byc_openai_name'), 'gpt-4o-mini')]", "[resourceId('Microsoft.CognitiveServices/accounts', parameters('accounts_byc_openai_name'))]" ] } @@ -1015,8 +1015,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.32.4.45862", - "templateHash": "15270810356586719318" + "version": "0.34.44.8038", + "templateHash": "5018000626328317665" } }, "parameters": { @@ -1247,8 +1247,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.32.4.45862", - "templateHash": "14406840646026715070" + "version": "0.34.44.8038", + "templateHash": "14133672307118323245" } }, "parameters": { @@ -1321,7 +1321,7 @@ }, "variables": { "functionAppName": "[format('{0}fn', parameters('solutionName'))]", - "azureOpenAIDeploymentModel": "gpt-4", + "azureOpenAIDeploymentModel": "gpt-4o-mini", "azureOpenAIEmbeddingDeployment": "text-embedding-ada-002", "valueOne": "1" }, @@ -1527,8 +1527,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.32.4.45862", - "templateHash": "11501780755841251697" + "version": "0.34.44.8038", + "templateHash": "12214749843316064247" } }, "parameters": { @@ -1641,8 +1641,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.32.4.45862", - "templateHash": "16538647807599840496" + "version": "0.34.44.8038", + "templateHash": "9249647694914976345" } }, "parameters": { @@ -2158,13 +2158,13 @@ "value": "[reference(resourceId('Microsoft.Resources/deployments', 'deploy_azure_open_ai'), '2022-09-01').outputs.openAIOutput.value.openAPIEndpoint]" }, "AzureOpenAIModel": { - "value": "gpt-4" + "value": "gpt-4o-mini" }, "AzureOpenAIKey": { "value": "[reference(resourceId('Microsoft.Resources/deployments', 'deploy_azure_open_ai'), '2022-09-01').outputs.openAIOutput.value.openAPIKey]" }, "AzureOpenAIModelName": { - "value": "gpt-4" + "value": "gpt-4o-mini" }, "AzureOpenAITemperature": { "value": "0" @@ -2257,8 +2257,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.32.4.45862", - "templateHash": "12568566813476349846" + "version": "0.34.44.8038", + "templateHash": "16559957349527009263" } }, "parameters": { @@ -2411,7 +2411,7 @@ }, "AzureOpenAIModelName": { "type": "string", - "defaultValue": "gpt-4", + "defaultValue": "gpt-4o-mini", "metadata": { "description": "Azure OpenAI Model Name" } @@ -2915,8 +2915,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.32.4.45862", - "templateHash": "2813064152180428298" + "version": "0.34.44.8038", + "templateHash": "14262313259972528331" }, "description": "Creates a SQL role assignment under an Azure Cosmos DB account." },