From 5a0ae1b5204c17ce1dcc768a8db4ed0ebedc7519 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yuseon=20Kim=28=EC=8D=AC=EB=8D=B0=EC=9D=B4=29?= <74897720+useon@users.noreply.github.com> Date: Tue, 10 Feb 2026 21:45:50 +0900 Subject: [PATCH 1/8] =?UTF-8?q?[FEAT]=20i18n=20=EA=B5=AD=EC=A0=9C=ED=99=94?= =?UTF-8?q?=20=EC=9E=90=EB=8F=99=ED=99=94=20=EC=8A=A4=ED=81=AC=EB=A6=BD?= =?UTF-8?q?=ED=8A=B8=20=EC=A0=81=EC=9A=A9=20=EB=B0=8F=20=EC=96=B8=EC=96=B4?= =?UTF-8?q?=20=EC=84=A0=ED=83=9D=20=EC=85=80=EB=A0=89=ED=8A=B8=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20(#412)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: 국제화 라이브러리 설치 * feat: i18next 초기화 및 언어 감지/HTTP 백엔드 설정 * feat: 국제화 라우팅 래퍼 생성 * feat: 중첩 라우팅 구조로 변경 및 국제화 라우팅 래퍼 적용 * chore: 필요한 바벨 설정 및 스크립트 추가 * feat: 파일 관련 유틸 생성 * feat: ATS 관련 및 국제화 훅 추가, t wrapper 유틸 생성 * feat: 한글 키를 기준으로 각 언어 JSON에 키 추가 유틸 생성 * feat: React 컴포넌트의 한글 텍스트 자동 변환 기능 구현 * fix: 테스트 파일과 스토리북 파일이 포함되는 문제 해결 * refactor: 컴포넌트 판별 로직을 분리하여 여러 형태에 대응할 수 있도록 수정 * feat: 템플릿 리터럴 자동 변환 및 키 추출 기능 구현 * refactor: 컴포넌트 내부에 있는 한글 문자열만 변환되도록 수정 * refactor: 복잡한 확장자 처리를 위한 라이브러리 사용으로 더이상 사용하지 않는 확장자 찾는 함수 삭제 * fix: ts-node 실행 오류 해결 및 tsx 기반으로 스크립트 전환 * refactor: 불필요한 주석 삭제 * feat: 언어셀렉터 추가 * refactor: 언어 라우팅 로직 분리 및 유틸 추가 * refactor: prop default 값의 한글이 번역되지 않아 컴포넌트 구조 수정 * refactor: br태그로 인해 번역키가 쪼개져 번역 어순 문제가 발생해 하나의 번역키가 되도록 \n구조로 수정 * refactor: 현재 사용하지 않는 컴포넌트와 유틸 삭제 * fix: prettier로 인해 줄바꿈이 되어 번역 키에 공백이 들어가는 문제 해결 * fix: 언어 라우팅 리다이렉트 시 쿼리스트링 유지가 안되는 문제 해결 * fix: 템플릿 리터럴에서 escape 문자가 포함된 한글 문자열 처리 오류 수정 * refactor: i18n자동화를 이용해서 컴포넌트 변환, import 및 hook 추가 * feat: i18n 자동화를 적용한 언어별 key, value 생성 * refactor: 언어 라우팅 쿼리 유지 및 경로 전환 문제 해결 * refactor: 발언 유형 관련 로직 유틸화 * feat: develop 병합으로 인한 새로운 키 추가 * refactor: Neutral오타 수정 * refactor: 에러메세지 추가 및 동사형으로 투표완료 번역 내용 수정 * fix: 한글 에러 메세지가 그대로 들어오는 경우 번역 안되는 문제 해결 * refactor: 단수, 복수 구분되도록 i18n Plurals 규칙 적용 * refactor: 투표 인원 카운트와 단위 사이에 공백 추가 및 투표 인원이 중복돼서 나오는 문제 수정 * refactor: 경로 하드코딩을 언어 경로 라우팅 buildLangPath 이용하여 정리 - 언어 경로가 깨지거나 리다이렉트가 발생하는 문제 해결 * fix: 개발환경에서도 설정한 base url이 들어갈 수 있도록 수정하여 개발환경에서 시간표 공유 오류 해결 * refactor: 줄바꿈 설정 빠진 부분 수정 * refactor: 발언자 길이 검증 로직 일관적이게 수정 * refactor: 상수라서 번역 안되던 부분 번역 * refactor: 띄어쓰기 적용 안 된 번역키 수정 * refactor: 종소리 설정 대문자 시작으로 수정 * refactor: 불필요한 코드 삭제 * refactor: 언어 선택 핸들러에 셀렉터 닫는 코드도 함께 넣도록 수정 * refactor: 종소리 라벨 번역 및 시간 표기 띄어쓰기 추가 * refactor: tailwind 오타 수정 * refactor: 루트 경로 비교 시 trailing slash 처리하는 정규화 추가 * refactor: 자유토론 편집 시 입력 무시되는 문제를 TIME_BASED를 입력값 우선으로 처리하도록 해결 * refactor: 중립 라벨 번역 추가 * fix: 국제화 코드 추가로 인한 테스트 코드 수정 * test: MSW 번역 핸들러에 실제 문자열 응답 추가 * test: i18n locale 고정, 라우트 추가 --- public/locales/en/translation.json | 252 ++++++++++++++++++ public/locales/ko/translation.json | 252 ++++++++++++++++++ scripts/utils/astUtils.ts | 4 +- setup.ts | 12 + src/apis/axiosInstance.ts | 10 +- src/components/BackActionHandler.tsx | 21 +- src/components/DropdownMenu/DropdownMenu.tsx | 6 +- src/components/ErrorBoundary/ErrorPage.tsx | 34 ++- src/components/ErrorBoundary/NotFoundPage.tsx | 31 ++- .../ErrorIndicator/ErrorIndicator.tsx | 18 +- .../GoToDebateEndButton.tsx | 15 +- src/components/GoogleButton.tsx | 46 ---- .../HeaderTableInfo/HeaderTableInfo.tsx | 4 +- src/components/HeaderTitle/HeaderTitle.tsx | 4 +- .../LoadingIndicator/LoadingIndicator.tsx | 10 +- .../NotificationBadge/NotificationBadge.tsx | 9 +- .../ProsAndConsTitle/PropsAndConsTitle.tsx | 12 +- .../RoundControlButton/RoundControlButton.tsx | 8 +- src/components/ShareModal/ShareModal.tsx | 8 +- src/components/VolumeBar/VolumeBar.tsx | 10 +- src/constants/debate_template.ts | 4 +- src/hooks/useModal.tsx | 4 +- src/hooks/useTableShare.tsx | 5 +- .../components/header/LanguageSelector.tsx | 129 +++++++++ .../header/StickyTriSectionHeader.tsx | 56 ++-- src/mocks/handlers/global.ts | 39 +++ src/page/DebateEndPage/DebateEndPage.tsx | 37 ++- .../components/GoToOverviewButton.tsx | 15 +- src/page/DebateVotePage/DebateVotePage.tsx | 44 ++- .../DebateVoteResultPage.tsx | 45 ++-- .../components/VoteBar.tsx | 7 +- .../components/VoteDetailResult.tsx | 8 +- .../components/WinnerCard.tsx | 10 +- src/page/LandingPage/components/Header.tsx | 20 +- .../LandingPage/components/MainSection.tsx | 8 +- .../LandingPage/components/ReportSection.tsx | 14 +- .../LandingPage/components/ReviewSection.tsx | 11 +- .../LandingPage/components/ScrollHint.tsx | 4 +- .../LandingPage/components/TableSection.tsx | 24 +- .../components/TemplateApplicationSection.tsx | 8 +- .../LandingPage/components/TemplateCard.tsx | 8 +- .../components/TemplateSelection.tsx | 4 +- .../components/TimeTableSection.tsx | 26 +- .../LandingPage/components/TimerSection.tsx | 46 ++-- .../hooks/useLandingPageHandlers.ts | 21 +- src/page/OAuthPage/OAuth.tsx | 13 +- .../TableCompositionPage.test.tsx | 4 + .../TableComposition/TableCompositionPage.tsx | 15 +- .../TableNameAndType/TableNameAndType.tsx | 28 +- .../components/TimeBox/TimeBox.tsx | 29 +- .../TimeBoxManageButtons.tsx | 14 +- .../components/TimeBoxStep/TimeBoxStep.tsx | 10 +- .../TimerCreationContent/TimeInputGroup.tsx | 8 +- .../TimerCreationContent.tsx | 215 ++++++++------- .../TimerCreationContentMenuItem.tsx | 4 +- .../TableComposition/hook/useTableFrom.tsx | 15 +- src/page/TableListPage/TableListPage.tsx | 4 +- src/page/TableListPage/components/Table.tsx | 19 +- .../components/TableListPageContent.tsx | 20 +- .../TableOverviewPage/TableOverviewPage.tsx | 44 ++- .../TeamSelectionModal/TeamSelectionModal.tsx | 20 +- .../TableSharingPage/TableSharingPage.tsx | 34 ++- .../components/LoggedInStoreDBModal.tsx | 8 +- src/page/TimerPage/FeedbackTimerPage.tsx | 4 +- src/page/TimerPage/TimerPage.tsx | 16 +- .../components/CompactTimeoutTimer.tsx | 12 +- .../TimerPage/components/FeedbackTimer.tsx | 20 +- .../TimerPage/components/FirstUseToolTip.tsx | 73 +++-- .../components/LoginAndStoreModal.tsx | 20 +- src/page/TimerPage/components/NormalTimer.tsx | 17 +- .../TimerPage/components/TimeBasedTimer.tsx | 8 +- .../TimerPage/components/TimerController.tsx | 6 +- src/page/TimerPage/hooks/useTimerPageModal.ts | 11 +- src/page/TimerPage/hooks/useTimerPageState.ts | 4 +- .../VoteCompletePage/VoteCompletePage.tsx | 5 +- .../VoteParticipationPage.tsx | 51 ++-- src/routes/LanguageWrapper.tsx | 39 ++- src/routes/ProtectedRoute.tsx | 13 +- src/util/arrayEncoding.ts | 7 +- src/util/languageRouting.ts | 57 ++++ src/util/speechType.ts | 29 ++ src/util/validateUserAgent.ts | 8 - 82 files changed, 1716 insertions(+), 551 deletions(-) create mode 100644 public/locales/en/translation.json create mode 100644 public/locales/ko/translation.json delete mode 100644 src/components/GoogleButton.tsx create mode 100644 src/layout/components/header/LanguageSelector.tsx create mode 100644 src/util/languageRouting.ts create mode 100644 src/util/speechType.ts delete mode 100644 src/util/validateUserAgent.ts diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json new file mode 100644 index 00000000..e91dd6aa --- /dev/null +++ b/public/locales/en/translation.json @@ -0,0 +1,252 @@ +{ + "모달 닫기": "Close modal", + "유효하지 않은 투표 링크입니다.": "Invalid vote link.", + "승패투표": "Win/Loss Vote", + "참여자 :": "Participants:", + "찬성팀": "Affirmative Team", + "반대팀": "Negative Team", + "투표완료": "Submit vote", + "다시 투표하기": "Vote again", + "제출하기": "Submit", + "투표를 제출하시겠습니까?": "Submit your vote?", + "(제출 후에는 변경이 불가능 합니다.)": "(You cannot change it after submitting.)", + "투표가 완료되었습니다.": "Your vote has been submitted.", + "테이블 이름 없음": "Unnamed table", + "주제 없음": "No Topic", + "도움말": "Help", + "전체 화면": "Fullscreen", + "테이블 ID가 올바르지 않습니다.": "Invalid table ID.", + "공유받은 테이블을 저장하지 못했어요.": "Couldn't save the shared table.", + "테이블 데이터를 확인할 수 없어요.": "Can't find the table data.", + "공유된 데이터가 비어 있어요.": "Shared data is empty.", + "공유된 토론 테이블을 DB에 저장하지 못했어요.": "Couldn't save the shared debate table to the database.", + "데이터를 처리하고 있습니다...": "Processing data...", + "공유받은 데이터 처리에 실패했어요.": "Failed to process the shared data.", + "팀 선정하기": "Select teams", + "토론하기": "Start debate", + "토론 시간표를 선택해주세요": "Please select a debate schedule", + "테이블 모드가 올바르지 않습니다.": "Invalid table mode.", + "시간표 1": "Schedule 1", + "찬성": "Affirmative", + "반대": "Negative", + "시간표 정보를 불러오지 못했어요.\n다시 시도할까요?": "Couldn't load the schedule.\nTry again?", + "무승부": "Tie", + "유효하지 않은 투표 결과 링크입니다.": "Invalid vote result link.", + "세부 결과 확인하기": "View detailed results", + "아니오": "No", + "네": "Yes", + "정말로 세부 결과를 공개할까요?": "Show detailed results?", + "토론을 모두 마치셨습니다": "You have finished the debate", + "박수": "Applause", + "피드백 타이머": "Feedback Timer", + "심사평 및 Q&A용 타이머 →": "Timer for feedback & Q&A →", + "피드백 타이머로 이동": "Go to Feedback Timer", + "승패투표 진행하기": "Start Win/Loss Vote", + "QR 코드를 통해 투표 페이지로 이동해요.": "Go to the voting page via QR code.", + "승패투표 생성 및 진행": "Create and run Win/Loss Vote", + "스캔해 주세요!": "Please scan!", + "참여자": "Participants", + "등록된 토론자가 없어요.": "No debaters registered.", + "투표 결과 보기": "View vote results", + "QR 코드를 불러오지 못했어요.\n다시 시도하시겠어요?": "Couldn't load the QR code.\nTry again?", + "링크가 클립보드에 복사됨": "Link copied to clipboard", + "링크 준비 중": "Preparing link", + "공유 링크 복사": "Copy share link", + "이전 차례": "Previous turn", + "다음 차례": "Next turn", + "토론 종료": "End debate", + "알림 개수_one": "{{displayCount}} notification", + "알림 개수_other": "{{displayCount}} notifications", + "{{team}} 팀": "{{team}} team", + "데이터를 불러오고 있습니다...": "Loading data...", + "토론 종료 화면으로 돌아가기": "Back to debate end screen", + "데이터를 불러오지 못했어요.\n다시 시도할까요?": "Couldn't load the data.\nTry again?", + "다시 시도하기": "Try again", + "페이지를 찾을 수 없어요...": "Page not found...", + "요청 URL": "Requested URL", + "오류 내용": "Error details", + "요청하신 페이지를 찾을 수 없어요.\n홈 화면으로 돌아가 처음부터 다시 시도해주세요.": "Couldn't find the page you requested.\nPlease return to Home and try again.", + "홈으로 돌아가기": "Go to Home", + "{{status}} 오류": "{{status}} Error", + "오류가 발생했어요...": "Something went wrong...", + "스택": "Stack", + "선택": "Select", + "타이머 초기화": "Reset timer", + "일시정지": "Pause", + "재생": "Play", + "A키": "A key", + "L키": "L key", + "전체 시간": "Total time", + "현재 시간": "Current time", + "팀": "Team", + "토론자": "Debater", + "작전 시간 사용": "Use Prep Time", + "토론을 끝내셨군요!\n지금까지의 시간표를 로그인하고 저장할까요?": "You've finished the debate!\nLog in to save your schedule so far?", + "자유토론 타이머 조작": "Open Debate Timer Controls", + "재생 버튼을 눌러 타이머를 시작": "Press Play to start the timer", + "타이머가 동작 중일 때, 일시정지 버튼을 눌러 타이머를 일시정지": "When the timer is running, press Pause to pause it", + "초기화 버튼을 눌러 타이머를 원래 시간으로 초기화": "Press Reset to restore the timer to its original time", + "마우스를 사용하여 타이머를 클릭 시, 진영 변경": "Click the timer with the mouse to switch Stance", + "타이머 동작 중 진영이 변경될 경우, 상대 진영의 타이머로 전환과 동시에 시작": "When Stance changes while running, switch to the other side's timer and start immediately", + "일반 토론 타이머 조작": "Standard Debate Timer Controls", + "작전 시간 사용 버튼을 눌러 별도의 작전 시간 타이머 사용 가능": "Press Use Prep Time to use a separate Prep Time timer", + "키보드 조작": "Keyboard controls", + "스페이스 바로 타이머를 시작 및 일시정지": "Use the Spacebar to start/pause the timer", + "R 키로 타이머 초기화": "Use R to reset the timer", + "좌우 방향키로 이전/다음 차례로 이동": "Use Left/Right arrows to go to the previous/next turn", + "A/L 키로 토론 진영 변경": "Use A/L to switch Stance", + "Enter 키로 상대 진영으로 변경": "Use Enter to switch to the opposing Stance", + "화면 우측 상단 헤더의 전체 화면 버튼 <0/> 으로 활성화": "Activate fullscreen with the header button <0/> in the top right", + "화면 우측 상단 헤더의 전체 화면 닫기 버튼 <0/> 또는 ESC 키를 눌러 전체 화면 비활성화": "Exit fullscreen with the header close button <0/> or press ESC", + "닫기": "Close", + "작전 시간": "Prep Time", + "-1분": "-1 min", + "-30초": "-30 sec", + "+30초": "+30 sec", + "+1분": "+1 min", + "-5분": "-5 min", + "+5분": "+5 min", + "비회원 상태로 토론하기": "Debate as guest", + "저장하기": "Save", + "공유받은 토론 시간표를 내 시간표 목록에 저장하시겠어요?": "Save the shared debate schedule to my schedules?", + "수정하기": "Edit", + "삭제하기": "Delete", + "공유하기": "Share", + "주제 | ": "Topic | ", + "취소": "Cancel", + "삭제": "Delete", + "테이블을 삭제하시겠습니까?": "Delete this table?", + "타이머 화면": "Timer screen", + "원하는 때에\n작전 시간 사용하기": "Use Prep Time\nwhenever you need it", + "토론자가 작전 시간을\n요청하면 <0/>\n버튼을 눌러 시간을 사용해요": "If a debater requests Prep Time\npress <0/>\nto use time", + "작전 시간이 나타나면\n원하는 시간을 입력하세요!": "When Prep Time appears,\nenter the time you want!", + "키보드 방향키로\n더 편리한 조작": "More convenient control\nwith arrow keys", + "시간표 설정화면": "Schedule setup screen", + "간편한 시간표 구성": "Simple schedule setup", + "시간표 추가": "Add schedule", + "시간표 추가 버튼": "Add schedule button", + "두가지 타이머": "Two timers", + "일반형과 자유토론형 타이머로\n다양한 토론 방식을 지원해요.": "Support various debate formats\nwith Standard and Open Debate timers.", + "종소리 설정": "Bell settings", + "시간에 따른 종소리를 내마음대로\n커스터마이징 할 수 있어요.": "Customize the bell by time\nhowever you like.", + "다양한 토론 템플릿을 원클릭으로 만나보세요!": "Explore various debate templates with one click!", + "{{title}} 로고": "{{title}} logo", + "{{label}} 토론하기": "Debate {{label}}", + "템플릿 신청하기": "Request a template", + "새로운 템플릿도 신청해 볼까요?": "Want to request a new template too?", + "신청하기": "Apply", + "홈 | 설정": "Home | Settings", + "토론 정보\n관리 및 기록": "Debate info\nManagement and records", + "토론 기본 정보 설정": "Set debate basics", + "시간표 이름부터 주제까지!": "From schedule name to Topic!", + "시간표 목록": "Schedule list", + "내가 만든 시간표를 저장하고 싶나요?": "Want to save the schedules you made?", + "시간표를 저장하려면,\n디베이트 타이머에 로그인해 보세요!": "To save your schedule,\nplease log in to Debate Timer!", + "3초 로그인 하기": "3-second login", + "아래로 스크롤": "Scroll down", + "이미 많은 사람들이 디베이트 타이머로\n더 나은 토론환경을 만들고 있어요.": "Many people already use Debate Timer\nto create a better debate environment.", + "비회원으로 시작하기": "Start as guest", + "버그 및 불편사항 제보": "Report bugs or issues", + "디베이트 타이머 사용 중 불편함을 느끼셨나요?": "Did you run into issues while using Debate Timer?", + "접수하기": "Submit", + "디베이트 타이머": "Debate Timer", + "개인정보처리방침": "Privacy Policy", + "서비스 이용약관": "Terms of Service", + "브라우저에서 비디오를 지원하지 않습니다.": "Your browser does not support video.", + "토론 진행을 더 쉽고 빠르게": "Run debates easier and faster", + "대시보드로 이동": "Go to Dashboard", + "3초 로그인": "3-second login", + "로그아웃": "Log out", + "왕관": "Crown", + "투표 세부 결과": "Detailed vote results", + "명_one": " person", + "명_other": " people", + "시간표로 돌아가기": "Back to schedule", + "비회원 모드": "Guest mode", + "홈으로 이동": "Go to Home", + "로그인": "Log in", + "비회원으로 사용하던 시간표가 있습니다.\n로그인 후에도 이 시간표를 계속 사용하시겠습니까?": "You have schedules created in guest mode.\nDo you want to keep using them after you log in?", + "언어 선택": "Select language", + "팀별로\n동전의 앞 / 뒷면 중\n하나를 선택해 주세요.": "For each team,\nchoose heads or tails\non the coin.", + "동전": "Coin", + "동전 던지는 중...": "Flipping coin...", + "앞": "Heads", + "뒤": "Tails", + "동전 던지기": "Flip coin", + "토론 정보 수정하기": "Edit debate info", + "토론 바로 시작하기": "Start debate now", + "입론": "Constructive", + "반론": "Rebuttal", + "최종발언": "Final Focus", + "작전시간": "Prep Time", + "교차조사": "Cross Fire", + "직접입력": "Custom", + "발언 시간은 1초 이상이어야 해요.": "Speaking Time must be at least 1 second.", + "종료 전 타종은 발언 시간보다 길 수 없어요.": "The bell before the end cannot be longer than the Speaking Time.", + "팀당 발언 시간은 1초 이상이어야 해요.": "Speaking Time per team must be at least 1 second.", + "1회당 발언 시간은 팀당 발언 시간을 초과할 수 없어요.": "Speaking Time per turn cannot exceed the team's total Speaking Time.", + "발언 유형은 최대 10자까지 입력할 수 있습니다.": "Speech Type can be up to 10 characters.", + "발언자는 최대 5자까지 입력할 수 있습니다.": "Speaker can be up to 5 characters.", + "1회당 발언 시간은 팀당 총 발언 시간보다 클 수 없습니다.": "Per-turn Speaking Time cannot exceed the total team Speaking Time.", + "발언 유형을 입력해주세요.": "Please enter a Speech Type.", + "자유토론": "Open Debate", + "중립은 발언 유형이 '직접 입력'일 경우에만 선택할 수 있습니다.": "Neutral can only be selected when Speech Type is 'Custom'.", + "중립": "Neutral", + "일반 타이머": "Standard timer", + "자유토론 타이머": "Open Debate timer", + "한 팀의 발언 시간이 세팅된 일반적인 타이머": "A standard timer with a single team's Speaking Time set", + "팀별 발언 시간과 1회당 발언 시간이 세팅된 타이머\n1회당 발언 시간이 지나면, 상대 팀으로 발언권이 넘어감": "A timer with team time and per-turn time set\nWhen a per-turn time ends, the turn passes to the other team", + "종류": "Type", + "발언자": "Speaker", + "N번 토론자": "Speaker N", + "발언 시간": "Speaking Time", + "1회당\n발언 시간": "Per-turn\nSpeaking Time", + "팀당\n발언 시간": "Per-team\nSpeaking Time", + "발언 유형": "Speech Type", + "주도권 토론 등": "e.g. Lead debate", + "입론, 반론, 작전 시간 등": "e.g. Constructive, Rebuttal, Prep Time", + "종소리 설정 접기": "Collapse bell settings", + "종소리 설정 펼치기": "Expand bell settings", + "종료 전": "Before end", + "종료 후": "After end", + "시작 후": "After start", + "분": "min", + "초": "sec", + "횟수": "Count", + "설정 완료": "Save settings", + "타이머 추가": "Add timer", + "수정 완료": "Save changes", + "추가하기": "Add", + "복사하기": "Copy", + "이 타이머를 삭제하시겠습니까?": "Delete this timer?", + "{{minutes}}분 {{seconds}}초": "{{minutes}} min {{seconds}} sec", + "팀당 {{minutes}}분 {{seconds}}초": "{{minutes}} min {{seconds}} sec per team", + "발언당 {{minutes}}분 {{seconds}}초": "{{minutes}} min {{seconds}} sec per speech", + "위/아래로 드래그": "Drag up/down", + " | {{speaker}} 토론자": " | {{speaker}} Debater", + "토론 정보를 {{val0}}해주세요": "Please {{val0}} the debate info", + "수정": "Edit", + "설정": "Settings", + "토론 시간표 이름": "Debate schedule name", + "토론 주제": "Debate Topic", + "토론 주제를 입력해주세요": "Please enter a debate Topic", + "팀명": "Team name", + "팀명은 최대 8자까지 입력할 수 있습니다.": "Team name can be up to 8 characters.", + "다음": "Next", + "볼륨 조절": "Volume control", + "투표 종료에 실패했습니다.": "Failed to end the vote.", + "마감하기": "Close voting", + "투표를 마감하시겠습니까?": "Do you want to close the vote?", + "투표를 마감하면 더이상 표를 받을 수 없습니다!": "Once you close the vote, you can no longer receive votes!", + "음소거": "Mute", + "음소거 해제": "Unmute", + "발언자는 최대 {{MAX_SPEAKER_LEN}}자까지 입력할 수 있습니다.": "Speaker can be up to {{MAX_SPEAKER_LEN}} characters.", + "400 잘못된 요청": "400 Bad Request", + "401 권한 없음": "401 Unauthorized", + "403 거부됨": "403 Forbidden", + "404 찾을 수 없음": "404 Not Found", + "500 내부 서버 오류": "500 Internal Server Error", + "502 게이트웨이 불량": "502 Bad Gateway", + "503 서비스가 일시적으로 중단됨": "503 Service Unavailable", + "504 게이트웨이 시간 초과": "504 Gateway Timeout" +} diff --git a/public/locales/ko/translation.json b/public/locales/ko/translation.json new file mode 100644 index 00000000..940eaf84 --- /dev/null +++ b/public/locales/ko/translation.json @@ -0,0 +1,252 @@ +{ + "모달 닫기": "모달 닫기", + "유효하지 않은 투표 링크입니다.": "유효하지 않은 투표 링크입니다.", + "승패투표": "승패투표", + "참여자 :": "참여자 :", + "찬성팀": "찬성팀", + "반대팀": "반대팀", + "투표완료": "투표완료", + "다시 투표하기": "다시 투표하기", + "제출하기": "제출하기", + "투표를 제출하시겠습니까?": "투표를 제출하시겠습니까?", + "(제출 후에는 변경이 불가능 합니다.)": "(제출 후에는 변경이 불가능 합니다.)", + "투표가 완료되었습니다.": "투표가 완료되었습니다.", + "테이블 이름 없음": "테이블 이름 없음", + "주제 없음": "주제 없음", + "도움말": "도움말", + "전체 화면": "전체 화면", + "테이블 ID가 올바르지 않습니다.": "테이블 ID가 올바르지 않습니다.", + "공유받은 테이블을 저장하지 못했어요.": "공유받은 테이블을 저장하지 못했어요.", + "테이블 데이터를 확인할 수 없어요.": "테이블 데이터를 확인할 수 없어요.", + "공유된 데이터가 비어 있어요.": "공유된 데이터가 비어 있어요.", + "공유된 토론 테이블을 DB에 저장하지 못했어요.": "공유된 토론 테이블을 DB에 저장하지 못했어요.", + "데이터를 처리하고 있습니다...": "데이터를 처리하고 있습니다...", + "공유받은 데이터 처리에 실패했어요.": "공유받은 데이터 처리에 실패했어요.", + "팀 선정하기": "팀 선정하기", + "토론하기": "토론하기", + "토론 시간표를 선택해주세요": "토론 시간표를 선택해주세요", + "테이블 모드가 올바르지 않습니다.": "테이블 모드가 올바르지 않습니다.", + "시간표 1": "시간표 1", + "찬성": "찬성", + "반대": "반대", + "중립": "중립", + "시간표 정보를 불러오지 못했어요.\n다시 시도할까요?": "시간표 정보를 불러오지 못했어요.\n다시 시도할까요?", + "무승부": "무승부", + "유효하지 않은 투표 결과 링크입니다.": "유효하지 않은 투표 결과 링크입니다.", + "세부 결과 확인하기": "세부 결과 확인하기", + "아니오": "아니오", + "네": "네", + "정말로 세부 결과를 공개할까요?": "정말로 세부 결과를 공개할까요?", + "토론을 모두 마치셨습니다": "토론을 모두 마치셨습니다", + "박수": "박수", + "피드백 타이머": "피드백 타이머", + "심사평 및 Q&A용 타이머 →": "심사평 및 Q&A용 타이머 →", + "피드백 타이머로 이동": "피드백 타이머로 이동", + "승패투표 진행하기": "승패투표 진행하기", + "QR 코드를 통해 투표 페이지로 이동해요.": "QR 코드를 통해 투표 페이지로 이동해요.", + "승패투표 생성 및 진행": "승패투표 생성 및 진행", + "스캔해 주세요!": "스캔해 주세요!", + "참여자": "참여자", + "등록된 토론자가 없어요.": "등록된 토론자가 없어요.", + "투표 결과 보기": "투표 결과 보기", + "QR 코드를 불러오지 못했어요.\n다시 시도하시겠어요?": "QR 코드를 불러오지 못했어요.\n다시 시도하시겠어요?", + "링크가 클립보드에 복사됨": "링크가 클립보드에 복사됨", + "링크 준비 중": "링크 준비 중", + "공유 링크 복사": "공유 링크 복사", + "이전 차례": "이전 차례", + "다음 차례": "다음 차례", + "토론 종료": "토론 종료", + "알림 개수_one": "알림 {{displayCount}}개", + "알림 개수_other": "알림 {{displayCount}}개", + "{{team}} 팀": "{{team}} 팀", + "데이터를 불러오고 있습니다...": "데이터를 불러오고 있습니다...", + "토론 종료 화면으로 돌아가기": "토론 종료 화면으로 돌아가기", + "데이터를 불러오지 못했어요.\n다시 시도할까요?": "데이터를 불러오지 못했어요.\n다시 시도할까요?", + "다시 시도하기": "다시 시도하기", + "페이지를 찾을 수 없어요...": "페이지를 찾을 수 없어요...", + "요청 URL": "요청 URL", + "오류 내용": "오류 내용", + "요청하신 페이지를 찾을 수 없어요.\n홈 화면으로 돌아가 처음부터 다시 시도해주세요.": "요청하신 페이지를 찾을 수 없어요.\n홈 화면으로 돌아가 처음부터 다시 시도해주세요.", + "홈으로 돌아가기": "홈으로 돌아가기", + "{{status}} 오류": "{{status}} 오류", + "오류가 발생했어요...": "오류가 발생했어요...", + "스택": "스택", + "선택": "선택", + "타이머 초기화": "타이머 초기화", + "일시정지": "일시정지", + "재생": "재생", + "A키": "A키", + "L키": "L키", + "전체 시간": "전체 시간", + "현재 시간": "현재 시간", + "팀": "팀", + "토론자": "토론자", + "작전 시간 사용": "작전 시간 사용", + "토론을 끝내셨군요!\n지금까지의 시간표를 로그인하고 저장할까요?": "토론을 끝내셨군요!\n지금까지의 시간표를 로그인하고 저장할까요?", + "자유토론 타이머 조작": "자유토론 타이머 조작", + "재생 버튼을 눌러 타이머를 시작": "재생 버튼을 눌러 타이머를 시작", + "타이머가 동작 중일 때, 일시정지 버튼을 눌러 타이머를 일시정지": "타이머가 동작 중일 때, 일시정지 버튼을 눌러 타이머를 일시정지", + "초기화 버튼을 눌러 타이머를 원래 시간으로 초기화": "초기화 버튼을 눌러 타이머를 원래 시간으로 초기화", + "마우스를 사용하여 타이머를 클릭 시, 진영 변경": "마우스를 사용하여 타이머를 클릭 시, 진영 변경", + "타이머 동작 중 진영이 변경될 경우, 상대 진영의 타이머로 전환과 동시에 시작": "타이머 동작 중 진영이 변경될 경우, 상대 진영의 타이머로 전환과 동시에 시작", + "일반 토론 타이머 조작": "일반 토론 타이머 조작", + "작전 시간 사용 버튼을 눌러 별도의 작전 시간 타이머 사용 가능": "작전 시간 사용 버튼을 눌러 별도의 작전 시간 타이머 사용 가능", + "키보드 조작": "키보드 조작", + "스페이스 바로 타이머를 시작 및 일시정지": "스페이스 바로 타이머를 시작 및 일시정지", + "R 키로 타이머 초기화": "R 키로 타이머 초기화", + "좌우 방향키로 이전/다음 차례로 이동": "좌우 방향키로 이전/다음 차례로 이동", + "A/L 키로 토론 진영 변경": "A/L 키로 토론 진영 변경", + "Enter 키로 상대 진영으로 변경": "Enter 키로 상대 진영으로 변경", + "화면 우측 상단 헤더의 전체 화면 버튼 <0/> 으로 활성화": "화면 우측 상단 헤더의 전체 화면 버튼 <0/> 으로 활성화", + "화면 우측 상단 헤더의 전체 화면 닫기 버튼 <0/> 또는 ESC 키를 눌러 전체 화면 비활성화": "화면 우측 상단 헤더의 전체 화면 닫기 버튼 <0/> 또는 ESC 키를 눌러 전체 화면 비활성화", + "닫기": "닫기", + "작전 시간": "작전 시간", + "-1분": "-1분", + "-30초": "-30초", + "+30초": "+30초", + "+1분": "+1분", + "-5분": "-5분", + "+5분": "+5분", + "비회원 상태로 토론하기": "비회원 상태로 토론하기", + "저장하기": "저장하기", + "공유받은 토론 시간표를 내 시간표 목록에 저장하시겠어요?": "공유받은 토론 시간표를 내 시간표 목록에 저장하시겠어요?", + "수정하기": "수정하기", + "삭제하기": "삭제하기", + "공유하기": "공유하기", + "주제 | ": "주제 | ", + "취소": "취소", + "삭제": "삭제", + "테이블을 삭제하시겠습니까?": "테이블을 삭제하시겠습니까?", + "타이머 화면": "타이머 화면", + "원하는 때에\n작전 시간 사용하기": "원하는 때에\n작전 시간 사용하기", + "토론자가 작전 시간을\n요청하면 <0/>\n버튼을 눌러 시간을 사용해요": "토론자가 작전 시간을\n요청하면 <0/>\n버튼을 눌러 시간을 사용해요", + "작전 시간이 나타나면\n원하는 시간을 입력하세요!": "작전 시간이 나타나면\n원하는 시간을 입력하세요!", + "키보드 방향키로\n더 편리한 조작": "키보드 방향키로\n더 편리한 조작", + "시간표 설정화면": "시간표 설정화면", + "간편한 시간표 구성": "간편한 시간표 구성", + "시간표 추가": "시간표 추가", + "시간표 추가 버튼": "시간표 추가 버튼", + "두가지 타이머": "두가지 타이머", + "일반형과 자유토론형 타이머로\n다양한 토론 방식을 지원해요.": "일반형과 자유토론형 타이머로\n다양한 토론 방식을 지원해요.", + "종소리 설정": "종소리 설정", + "시간에 따른 종소리를 내마음대로\n커스터마이징 할 수 있어요.": "시간에 따른 종소리를 내마음대로\n커스터마이징 할 수 있어요.", + "다양한 토론 템플릿을 원클릭으로 만나보세요!": "다양한 토론 템플릿을 원클릭으로 만나보세요!", + "{{title}} 로고": "{{title}} 로고", + "{{label}} 토론하기": "{{label}} 토론하기", + "템플릿 신청하기": "템플릿 신청하기", + "새로운 템플릿도 신청해 볼까요?": "새로운 템플릿도 신청해 볼까요?", + "신청하기": "신청하기", + "홈 | 설정": "홈 | 설정", + "토론 정보\n관리 및 기록": "토론 정보\n관리 및 기록", + "토론 기본 정보 설정": "토론 기본 정보 설정", + "시간표 이름부터 주제까지!": "시간표 이름부터 주제까지!", + "시간표 목록": "시간표 목록", + "내가 만든 시간표를 저장하고 싶나요?": "내가 만든 시간표를 저장하고 싶나요?", + "시간표를 저장하려면,\n디베이트 타이머에 로그인해 보세요!": "시간표를 저장하려면,\n디베이트 타이머에 로그인해 보세요!", + "3초 로그인 하기": "3초 로그인 하기", + "아래로 스크롤": "아래로 스크롤", + "이미 많은 사람들이 디베이트 타이머로\n더 나은 토론환경을 만들고 있어요.": "이미 많은 사람들이 디베이트 타이머로\n더 나은 토론환경을 만들고 있어요.", + "비회원으로 시작하기": "비회원으로 시작하기", + "버그 및 불편사항 제보": "버그 및 불편사항 제보", + "디베이트 타이머 사용 중 불편함을 느끼셨나요?": "디베이트 타이머 사용 중 불편함을 느끼셨나요?", + "접수하기": "접수하기", + "디베이트 타이머": "디베이트 타이머", + "개인정보처리방침": "개인정보처리방침", + "서비스 이용약관": "서비스 이용약관", + "브라우저에서 비디오를 지원하지 않습니다.": "브라우저에서 비디오를 지원하지 않습니다.", + "토론 진행을 더 쉽고 빠르게": "토론 진행을 더 쉽고 빠르게", + "대시보드로 이동": "대시보드로 이동", + "3초 로그인": "3초 로그인", + "로그아웃": "로그아웃", + "왕관": "왕관", + "투표 세부 결과": "투표 세부 결과", + "명_one": " 명", + "명_other": " 명", + "시간표로 돌아가기": "시간표로 돌아가기", + "비회원 모드": "비회원 모드", + "홈으로 이동": "홈으로 이동", + "로그인": "로그인", + "비회원으로 사용하던 시간표가 있습니다.\n로그인 후에도 이 시간표를 계속 사용하시겠습니까?": "비회원으로 사용하던 시간표가 있습니다.\n로그인 후에도 이 시간표를 계속 사용하시겠습니까?", + "언어 선택": "언어 선택", + "팀별로\n동전의 앞 / 뒷면 중\n하나를 선택해 주세요.": "팀별로\n동전의 앞 / 뒷면 중\n하나를 선택해 주세요.", + "동전": "동전", + "동전 던지는 중...": "동전 던지는 중...", + "앞": "앞", + "뒤": "뒤", + "동전 던지기": "동전 던지기", + "토론 정보 수정하기": "토론 정보 수정하기", + "토론 바로 시작하기": "토론 바로 시작하기", + "입론": "입론", + "반론": "반론", + "최종발언": "최종발언", + "작전시간": "작전시간", + "교차조사": "교차조사", + "직접입력": "직접입력", + "발언 시간은 1초 이상이어야 해요.": "발언 시간은 1초 이상이어야 해요.", + "종료 전 타종은 발언 시간보다 길 수 없어요.": "종료 전 타종은 발언 시간보다 길 수 없어요.", + "팀당 발언 시간은 1초 이상이어야 해요.": "팀당 발언 시간은 1초 이상이어야 해요.", + "1회당 발언 시간은 팀당 발언 시간을 초과할 수 없어요.": "1회당 발언 시간은 팀당 발언 시간을 초과할 수 없어요.", + "발언 유형은 최대 10자까지 입력할 수 있습니다.": "발언 유형은 최대 10자까지 입력할 수 있습니다.", + "발언자는 최대 5자까지 입력할 수 있습니다.": "발언자는 최대 5자까지 입력할 수 있습니다.", + "1회당 발언 시간은 팀당 총 발언 시간보다 클 수 없습니다.": "1회당 발언 시간은 팀당 총 발언 시간보다 클 수 없습니다.", + "발언 유형을 입력해주세요.": "발언 유형을 입력해주세요.", + "자유토론": "자유토론", + "중립은 발언 유형이 '직접 입력'일 경우에만 선택할 수 있습니다.": "중립은 발언 유형이 '직접 입력'일 경우에만 선택할 수 있습니다.", + "일반 타이머": "일반 타이머", + "자유토론 타이머": "자유토론 타이머", + "한 팀의 발언 시간이 세팅된 일반적인 타이머": "한 팀의 발언 시간이 세팅된 일반적인 타이머", + "팀별 발언 시간과 1회당 발언 시간이 세팅된 타이머\n1회당 발언 시간이 지나면, 상대 팀으로 발언권이 넘어감": "팀별 발언 시간과 1회당 발언 시간이 세팅된 타이머\n1회당 발언 시간이 지나면, 상대 팀으로 발언권이 넘어감", + "종류": "종류", + "발언자": "발언자", + "N번 토론자": "N번 토론자", + "발언 시간": "발언 시간", + "1회당\n발언 시간": "1회당\n발언 시간", + "팀당\n발언 시간": "팀당\n발언 시간", + "발언 유형": "발언 유형", + "주도권 토론 등": "주도권 토론 등", + "입론, 반론, 작전 시간 등": "입론, 반론, 작전 시간 등", + "종소리 설정 접기": "종소리 설정 접기", + "종소리 설정 펼치기": "종소리 설정 펼치기", + "종료 전": "종료 전", + "종료 후": "종료 후", + "시작 후": "시작 후", + "분": "분", + "초": "초", + "횟수": "횟수", + "설정 완료": "설정 완료", + "타이머 추가": "타이머 추가", + "수정 완료": "수정 완료", + "추가하기": "추가하기", + "복사하기": "복사하기", + "이 타이머를 삭제하시겠습니까?": "이 타이머를 삭제하시겠습니까?", + "{{minutes}}분 {{seconds}}초": "{{minutes}}분 {{seconds}}초", + "팀당 {{minutes}}분 {{seconds}}초": "팀당 {{minutes}}분 {{seconds}}초", + "발언당 {{minutes}}분 {{seconds}}초": "발언당 {{minutes}}분 {{seconds}}초", + "위/아래로 드래그": "위/아래로 드래그", + " | {{speaker}} 토론자": " | {{speaker}} 토론자", + "토론 정보를 {{val0}}해주세요": "토론 정보를 {{val0}}해주세요", + "수정": "수정", + "설정": "설정", + "토론 시간표 이름": "토론 시간표 이름", + "토론 주제": "토론 주제", + "토론 주제를 입력해주세요": "토론 주제를 입력해주세요", + "팀명": "팀명", + "팀명은 최대 8자까지 입력할 수 있습니다.": "팀명은 최대 8자까지 입력할 수 있습니다.", + "다음": "다음", + "볼륨 조절": "볼륨 조절", + "투표 종료에 실패했습니다.": "투표 종료에 실패했습니다.", + "마감하기": "마감하기", + "투표를 마감하시겠습니까?": "투표를 마감하시겠습니까?", + "투표를 마감하면 더이상 표를 받을 수 없습니다!": "투표를 마감하면 더이상 표를 받을 수 없습니다!", + "음소거": "음소거", + "음소거 해제": "음소거 해제", + "발언자는 최대 {{MAX_SPEAKER_LEN}}자까지 입력할 수 있습니다.": "발언자는 최대 {{MAX_SPEAKER_LEN}}자까지 입력할 수 있습니다.", + "400 잘못된 요청": "400 잘못된 요청", + "401 권한 없음": "401 권한 없음", + "403 거부됨": "403 거부됨", + "404 찾을 수 없음": "404 찾을 수 없음", + "500 내부 서버 오류": "500 내부 서버 오류", + "502 게이트웨이 불량": "502 게이트웨이 불량", + "503 서비스가 일시적으로 중단됨": "503 서비스가 일시적으로 중단됨", + "504 게이트웨이 시간 초과": "504 게이트웨이 시간 초과" +} diff --git a/scripts/utils/astUtils.ts b/scripts/utils/astUtils.ts index 719ca2ac..57fcdfb1 100644 --- a/scripts/utils/astUtils.ts +++ b/scripts/utils/astUtils.ts @@ -116,7 +116,7 @@ export function transformAST(ast: t.File) { }, TemplateLiteral(path) { const { quasis, expressions } = path.node; - const hasKorean = quasis.some((q) => KOREAN_REGEX.test(q.value.raw)); + const hasKorean = quasis.some((q) => KOREAN_REGEX.test(q.value.cooked)); if (!hasKorean) return; if ( @@ -134,7 +134,7 @@ export function transformAST(ast: t.File) { const objectProperties: t.ObjectProperty[] = []; for (let i = 0; i < quasis.length; i++) { - i18nKey += quasis[i].value.raw; + i18nKey += quasis[i].value.cooked; if (i < expressions.length) { const expr = expressions[i]; let placeholderName: string; diff --git a/setup.ts b/setup.ts index ce75593c..48b1c9df 100644 --- a/setup.ts +++ b/setup.ts @@ -2,6 +2,7 @@ import { cleanup } from '@testing-library/react'; import '@testing-library/jest-dom'; import { server } from './src/mocks/server'; import { vi } from 'vitest'; +import i18n from './src/i18n'; // msw 서버 시작 beforeAll(() => { @@ -16,6 +17,17 @@ afterEach(() => server.resetHandlers()); // msw 서버 종료 afterAll(() => server.close()); +i18n.options.react = { + ...(i18n.options.react ?? {}), + useSuspense: false, +}; + +// 로컬스토리에 언어 설정 +if (typeof localStorage !== 'undefined') { + localStorage.setItem('i18nextLng', 'ko'); +} +i18n.changeLanguage('ko'); + // vitest.setup.ts 또는 setupTests.ts // ResizeObserver를 전역적으로 모킹합니다. global.ResizeObserver = class ResizeObserver { diff --git a/src/apis/axiosInstance.ts b/src/apis/axiosInstance.ts index 89e9bede..d21d39ac 100644 --- a/src/apis/axiosInstance.ts +++ b/src/apis/axiosInstance.ts @@ -4,6 +4,12 @@ import { removeAccessToken, setAccessToken, } from '../util/accessToken'; +import i18n from '../i18n'; +import { + buildLangPath, + DEFAULT_LANG, + isSupportedLang, +} from '../util/languageRouting'; // Get current mode (DEV, PROD or TEST) const currentMode = import.meta.env.MODE; @@ -66,7 +72,9 @@ axiosInstance.interceptors.response.use( } catch (refreshError) { console.error('Refresh Token is invalid or expired', refreshError); // 재발급도 실패하면 -> 로그인 페이지 이동 - window.location.href = '/home'; + const currentLang = i18n.resolvedLanguage ?? i18n.language; + const lang = isSupportedLang(currentLang) ? currentLang : DEFAULT_LANG; + window.location.href = buildLangPath('/home', lang); removeAccessToken(); return Promise.reject(refreshError); } diff --git a/src/components/BackActionHandler.tsx b/src/components/BackActionHandler.tsx index e75bd923..0b3bbfe5 100644 --- a/src/components/BackActionHandler.tsx +++ b/src/components/BackActionHandler.tsx @@ -1,15 +1,30 @@ import { useCallback, useEffect } from 'react'; import { getAccessToken } from '../util/accessToken'; import { useNavigate } from 'react-router-dom'; +import { useTranslation } from 'react-i18next'; +import { + buildLangPath, + DEFAULT_LANG, + isSupportedLang, + stripDefaultLangFromPath, +} from '../util/languageRouting'; export default function BackActionHandler() { + const { i18n } = useTranslation(); const navigate = useNavigate(); const handleBackAction = useCallback(() => { - if (getAccessToken() !== null && window.location.pathname === '/') { + const currentLang = i18n.resolvedLanguage ?? i18n.language; + const lang = isSupportedLang(currentLang) ? currentLang : DEFAULT_LANG; + const rootPath = buildLangPath('/', lang); + const normalizedPathname = stripDefaultLangFromPath( + window.location.pathname, + ); + + if (getAccessToken() !== null && normalizedPathname === rootPath) { // Push the current state again to prevent going back - navigate('/'); + navigate(rootPath); } - }, [navigate]); + }, [i18n.language, i18n.resolvedLanguage, navigate]); useEffect(() => { const onPopState = () => { diff --git a/src/components/DropdownMenu/DropdownMenu.tsx b/src/components/DropdownMenu/DropdownMenu.tsx index 827674e6..6b2d9e18 100644 --- a/src/components/DropdownMenu/DropdownMenu.tsx +++ b/src/components/DropdownMenu/DropdownMenu.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { useState, useRef, useEffect } from 'react'; import DTExpand from '../icons/Expand'; import clsx from 'clsx'; @@ -20,16 +21,17 @@ export default function DropdownMenu({ options, selectedValue, onSelect, - placeholder = '선택', + placeholder, disabled, className = '', }: DropdownMenuProps) { + const { t } = useTranslation(); const [isOpen, setIsOpen] = useState(false); const dropdownRef = useRef(null); const selectedOptionLabel = options.find((option) => option.value === selectedValue)?.label || - placeholder; + (placeholder ?? t('선택')); // 드롭다운 외부 클릭 시 닫히도록 처리 useEffect(() => { diff --git a/src/components/ErrorBoundary/ErrorPage.tsx b/src/components/ErrorBoundary/ErrorPage.tsx index 51c69ccc..bc30de76 100644 --- a/src/components/ErrorBoundary/ErrorPage.tsx +++ b/src/components/ErrorBoundary/ErrorPage.tsx @@ -1,8 +1,14 @@ +import { useTranslation } from 'react-i18next'; import { IoHome } from 'react-icons/io5'; import DefaultLayout from '../../layout/defaultLayout/DefaultLayout'; import { useNavigate } from 'react-router-dom'; import { APIError } from '../../apis/primitives'; import { ERROR_STATUS_TABLE } from '../../constants/errors'; +import { + buildLangPath, + DEFAULT_LANG, + isSupportedLang, +} from '../../util/languageRouting'; interface ErrorPageProps { error: Error; @@ -11,18 +17,28 @@ interface ErrorPageProps { } export default function ErrorPage({ error, stack, onReset }: ErrorPageProps) { + const { t, i18n } = useTranslation(); const navigate = useNavigate(); + const currentLang = i18n.resolvedLanguage ?? i18n.language; + const lang = isSupportedLang(currentLang) ? currentLang : DEFAULT_LANG; + const homePath = buildLangPath('/home', lang); const goToHome = () => { onReset(); - navigate('/home', { replace: true }); + navigate(homePath, { replace: true }); }; // If error is from API request, print status code // to let user know exact reason of error. - const title = - error instanceof APIError - ? ERROR_STATUS_TABLE[error.status] || `${error.status} 오류` - : '오류가 발생했어요...'; + const title = (() => { + if (!(error instanceof APIError)) { + return t('오류가 발생했어요...'); + } + + const statusKey = ERROR_STATUS_TABLE[error.status]; + return statusKey + ? t(statusKey) + : t('{{status}} 오류', { status: error.status }); + })(); return ( @@ -40,12 +56,12 @@ export default function ErrorPage({ error, stack, onReset }: ErrorPageProps) {
-

오류 내용

+

{t('오류 내용')}

{error.message}

-

스택

+

{t('스택')}

{stack}

@@ -56,7 +72,9 @@ export default function ErrorPage({ error, stack, onReset }: ErrorPageProps) { >
-

홈으로 돌아가기

+

+ {t('홈으로 돌아가기')} +

diff --git a/src/components/ErrorBoundary/NotFoundPage.tsx b/src/components/ErrorBoundary/NotFoundPage.tsx index 88dfd0dc..b72208ce 100644 --- a/src/components/ErrorBoundary/NotFoundPage.tsx +++ b/src/components/ErrorBoundary/NotFoundPage.tsx @@ -1,9 +1,19 @@ +import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; import DefaultLayout from '../../layout/defaultLayout/DefaultLayout'; import { IoHome } from 'react-icons/io5'; +import { + buildLangPath, + DEFAULT_LANG, + isSupportedLang, +} from '../../util/languageRouting'; export default function NotFoundPage() { + const { t, i18n } = useTranslation(); const navigate = useNavigate(); + const currentLang = i18n.resolvedLanguage ?? i18n.language; + const lang = isSupportedLang(currentLang) ? currentLang : DEFAULT_LANG; + const rootPath = buildLangPath('/', lang); return ( @@ -17,32 +27,37 @@ export default function NotFoundPage() {

🤔

-

페이지를 찾을 수 없어요...

+

+ {t('페이지를 찾을 수 없어요...')} +

-

요청 URL

+

{t('요청 URL')}

{decodeURIComponent(window.location.href)}

-

오류 내용

-

- 요청하신 페이지를 찾을 수 없어요. 홈 화면으로 돌아가 처음부터 다시 - 시도해주세요. +

{t('오류 내용')}

+

+ {t( + '요청하신 페이지를 찾을 수 없어요.\n홈 화면으로 돌아가 처음부터 다시 시도해주세요.', + )}

diff --git a/src/components/ErrorIndicator/ErrorIndicator.tsx b/src/components/ErrorIndicator/ErrorIndicator.tsx index 9f0b8b59..8e7312ff 100644 --- a/src/components/ErrorIndicator/ErrorIndicator.tsx +++ b/src/components/ErrorIndicator/ErrorIndicator.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { PropsWithChildren } from 'react'; import { MdErrorOutline } from 'react-icons/md'; @@ -6,26 +7,23 @@ interface ErrorIndicatorProps extends PropsWithChildren { } export default function ErrorIndicator({ - children = ( - <> - 데이터를 불러오지 못했어요. -
- 다시 시도할까요? - - ), + children, onClickRetry, }: ErrorIndicatorProps) { + const { t } = useTranslation(); return (
-

{children}

+

+ {children ?? t('데이터를 불러오지 못했어요.\n다시 시도할까요?')} +

{onClickRetry && ( )}
diff --git a/src/components/GoToDebateEndButton/GoToDebateEndButton.tsx b/src/components/GoToDebateEndButton/GoToDebateEndButton.tsx index a94bbc4f..16b1a355 100644 --- a/src/components/GoToDebateEndButton/GoToDebateEndButton.tsx +++ b/src/components/GoToDebateEndButton/GoToDebateEndButton.tsx @@ -1,5 +1,11 @@ +import { useTranslation } from 'react-i18next'; import clsx from 'clsx'; import { useNavigate } from 'react-router-dom'; +import { + buildLangPath, + DEFAULT_LANG, + isSupportedLang, +} from '../../util/languageRouting'; interface GoToDebateEndButtonProps { tableId: number; @@ -10,22 +16,25 @@ export default function GoToDebateEndButton({ tableId, className = '', }: GoToDebateEndButtonProps) { + const { t, i18n } = useTranslation(); const navigate = useNavigate(); const handleClick = (tableId: number) => { - navigate(`/table/customize/${tableId}/end`); + const currentLang = i18n.resolvedLanguage ?? i18n.language; + const lang = isSupportedLang(currentLang) ? currentLang : DEFAULT_LANG; + navigate(buildLangPath(`/table/customize/${tableId}/end`, lang)); }; return ( ); } diff --git a/src/components/GoogleButton.tsx b/src/components/GoogleButton.tsx deleted file mode 100644 index dec5eb9c..00000000 --- a/src/components/GoogleButton.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { ButtonHTMLAttributes } from 'react'; -import { FcGoogle } from 'react-icons/fc'; -import { isEmbeddedWebView } from '../util/validateUserAgent'; -import { MdOutlineErrorOutline } from 'react-icons/md'; -export default function GoogleButton( - props: ButtonHTMLAttributes, -) { - // Check whether user-agent is acceptable and set background color - const isDisabled = isEmbeddedWebView(); - const bgColor = isDisabled ? 'bg-gray-300' : 'bg-slate-100'; - const hoverBgColor = isDisabled ? '' : 'hover:bg-slate-200'; - console.log(isDisabled); - - return ( -
- {/* Google login button */} - - - {/* Error message */} - {isDisabled && ( -
- -

- 이 브라우저에서는 로그인이 불가능해요. 다른 웹 브라우저로 - 접속해주세요. -

-
- )} -
- ); -} diff --git a/src/components/HeaderTableInfo/HeaderTableInfo.tsx b/src/components/HeaderTableInfo/HeaderTableInfo.tsx index fcd70cae..2136e1be 100644 --- a/src/components/HeaderTableInfo/HeaderTableInfo.tsx +++ b/src/components/HeaderTableInfo/HeaderTableInfo.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import Skeleton from '../Skeleton/Skeleton'; interface HeaderTitleProps { @@ -6,8 +7,9 @@ interface HeaderTitleProps { } export default function HeaderTableInfo(props: HeaderTitleProps) { + const { t } = useTranslation(); const { name, skeletonEnabled: isLoading = false } = props; - const displayName = !name?.trim() ? '테이블 이름 없음' : name.trim(); + const displayName = !name?.trim() ? t('테이블 이름 없음') : name.trim(); return ( <> diff --git a/src/components/HeaderTitle/HeaderTitle.tsx b/src/components/HeaderTitle/HeaderTitle.tsx index d3bebe59..c871daf0 100644 --- a/src/components/HeaderTitle/HeaderTitle.tsx +++ b/src/components/HeaderTitle/HeaderTitle.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import Skeleton from '../Skeleton/Skeleton'; interface HeaderTitleProps { @@ -6,8 +7,9 @@ interface HeaderTitleProps { } export default function HeaderTitle(props: HeaderTitleProps) { + const { t } = useTranslation(); const { title, skeletonEnabled: isLoading = false } = props; - const displayTitle = !title?.trim() ? '주제 없음' : title.trim(); + const displayTitle = !title?.trim() ? t('주제 없음') : title.trim(); return ( <> diff --git a/src/components/LoadingIndicator/LoadingIndicator.tsx b/src/components/LoadingIndicator/LoadingIndicator.tsx index 83457713..e9635336 100644 --- a/src/components/LoadingIndicator/LoadingIndicator.tsx +++ b/src/components/LoadingIndicator/LoadingIndicator.tsx @@ -1,13 +1,15 @@ +import { useTranslation } from 'react-i18next'; import { PropsWithChildren } from 'react'; import LoadingSpinner from '../LoadingSpinner'; -export default function LoadingIndicator({ - children = '데이터를 불러오고 있습니다...', -}: PropsWithChildren) { +export default function LoadingIndicator({ children }: PropsWithChildren) { + const { t } = useTranslation(); return (
-

{children}

+

+ {children ?? t('데이터를 불러오고 있습니다...')} +

); } diff --git a/src/components/NotificationBadge/NotificationBadge.tsx b/src/components/NotificationBadge/NotificationBadge.tsx index 3e2307fb..657b182b 100644 --- a/src/components/NotificationBadge/NotificationBadge.tsx +++ b/src/components/NotificationBadge/NotificationBadge.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import clsx from 'clsx'; interface NotificationBadgeProps { @@ -9,6 +10,7 @@ export default function NotificationBadge({ count, className = '', }: NotificationBadgeProps) { + const { t } = useTranslation(); // 음수, NaN 등 의도하지 않은 값 확인 const safeCount = Number.isFinite(count) ? Math.max(0, count) : 0; if (safeCount === 0) { @@ -17,10 +19,15 @@ export default function NotificationBadge({ const displayCount = safeCount > 99 ? '99+' : safeCount; + const ariaLabel = t('알림 개수', { + count: safeCount, + displayCount, + }); + return (
- {prosTeamName} + {prosTeamName ?? t('찬성')}
- {consTeamName} + + {consTeamName ?? t('반대')} +
diff --git a/src/components/RoundControlButton/RoundControlButton.tsx b/src/components/RoundControlButton/RoundControlButton.tsx index 69fd0052..8877f0ea 100644 --- a/src/components/RoundControlButton/RoundControlButton.tsx +++ b/src/components/RoundControlButton/RoundControlButton.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import DTLeftArrow from '../icons/LeftArrow'; import DTRightArrow from '../icons/RightArrow'; @@ -12,6 +13,7 @@ export default function RoundControlButton({ type, onClick, }: RoundControlButtonProps) { + const { t } = useTranslation(); return ( diff --git a/src/components/ShareModal/ShareModal.tsx b/src/components/ShareModal/ShareModal.tsx index 62df8790..663155b7 100644 --- a/src/components/ShareModal/ShareModal.tsx +++ b/src/components/ShareModal/ShareModal.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { QRCodeSVG } from 'qrcode.react'; import { IoLinkOutline, IoShareOutline } from 'react-icons/io5'; import LoadingSpinner from '../LoadingSpinner'; @@ -21,12 +22,13 @@ export default function ShareModal({ onRefetch, onCopyClicked, }: ShareModalProps) { + const { t } = useTranslation(); // If error, print error message and let user be able to retry if (isError) { return (
onRefetch()}> - QR 코드를 불러오지 못했어요...

다시 시도하시겠어요? + {t('QR 코드를 불러오지 못했어요.\n다시 시도하시겠어요?')}
); @@ -44,7 +46,7 @@ export default function ShareModal({

- 링크가 클립보드에 복사됨 + {t('링크가 클립보드에 복사됨')}

@@ -89,7 +91,7 @@ export default function ShareModal({ }} > -

{isLoading ? '링크 준비 중' : '공유 링크 복사'}

+

{isLoading ? t('링크 준비 중') : t('공유 링크 복사')}

); diff --git a/src/components/VolumeBar/VolumeBar.tsx b/src/components/VolumeBar/VolumeBar.tsx index 6c9a076c..1b5f912a 100644 --- a/src/components/VolumeBar/VolumeBar.tsx +++ b/src/components/VolumeBar/VolumeBar.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; // Integer 0-10, step = 1 // Mute button available import { useEffect, useState } from 'react'; @@ -20,6 +21,7 @@ export default function VolumeBar({ onVolumeChange, className = '', }: VolumeBarProps) { + const { t } = useTranslation(); // 음소거 해제 시 가장 마지막의 볼륨 값을 복원하기 위함 const [lastVolume, setLastVolume] = useState(volume > 0 ? volume : 5); @@ -61,6 +63,7 @@ export default function VolumeBar({ d="M164.025 18.1911C164.386 18.7925 165.037 19.1603 165.738 19.1603H227C228.105 19.1603 229 20.0558 229 21.1603V65.1662C229 66.2708 228.105 67.1662 227 67.1662H7.00001C5.89544 67.1662 5 66.2708 5 65.1662V21.1603C5 20.0558 5.89543 19.1603 7 19.1603H140.574C141.276 19.1603 141.926 18.7925 142.288 18.1911L151.442 2.96925C152.22 1.67692 154.093 1.67692 154.87 2.96925L164.025 18.1911Z" fill="white" /> + + @@ -91,11 +95,13 @@ export default function VolumeBar({ type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0" /> + + { + const { t } = useTranslation(); if (!isOpen) return null; return ( @@ -72,7 +74,7 @@ export function useModal(options: UseModalOptions = {}) { type="button" onClick={closeModal} className={`absolute right-4 top-4 text-3xl ${closeButtonColor}`} - aria-label="모달 닫기" + aria-label={t('모달 닫기')} > diff --git a/src/hooks/useTableShare.tsx b/src/hooks/useTableShare.tsx index 8f8f9cd4..0fd2b07a 100644 --- a/src/hooks/useTableShare.tsx +++ b/src/hooks/useTableShare.tsx @@ -8,10 +8,7 @@ export function useTableShare(tableId: number) { const { isOpen, openModal, closeModal, ModalWrapper } = useModal(); const [copyState, setCopyState] = useState(false); const [shareUrl, setShareUrl] = useState(''); - const baseUrl = - import.meta.env.MODE !== 'production' - ? undefined - : import.meta.env.VITE_SHARE_BASE_URL; + const baseUrl = import.meta.env.VITE_SHARE_BASE_URL; const handleCopy = async () => { try { await navigator.clipboard.writeText(shareUrl); diff --git a/src/layout/components/header/LanguageSelector.tsx b/src/layout/components/header/LanguageSelector.tsx new file mode 100644 index 00000000..ac370f13 --- /dev/null +++ b/src/layout/components/header/LanguageSelector.tsx @@ -0,0 +1,129 @@ +import { useTranslation } from 'react-i18next'; +import { useState, useRef, useEffect } from 'react'; +import { useNavigate, useParams, useLocation } from 'react-router-dom'; +import clsx from 'clsx'; +import { DropdownMenuItem } from '../../../components/DropdownMenu/DropdownMenu'; // DropdownMenuItem 타입 재사용 +import DTExpand from '../../../components/icons/Expand'; +import { + buildLangPath, + getSelectedLangFromRoute, + isSupportedLang, +} from '../../../util/languageRouting'; +import i18n from '../../../i18n'; + +export default function LanguageSelector() { + const { t } = useTranslation(); + const navigate = useNavigate(); + const location = useLocation(); + const { lang: currentLangParam } = useParams(); + + const LANG_OPTIONS: DropdownMenuItem[] = [ + { value: 'ko', label: 'KR' }, + { value: 'en', label: 'EN' }, + ]; + + // URL 파라미터를 기반으로 현재 선택된 언어 결정 + // 유효한 언어 파라미터가 없으면 'ko'를 기본값으로 사용 + const selectedLangValue = getSelectedLangFromRoute( + currentLangParam, + location.pathname, + ); + const selectedLangLabel = + LANG_OPTIONS.find((option) => option.value === selectedLangValue)?.label || + 'KR'; + + const handleLanguageChange = (newLang: string) => { + if (!isSupportedLang(newLang)) { + return; + } + const newPathname = buildLangPath(location.pathname, newLang); + const nextUrl = `${newPathname}${location.search}${location.hash}`; + if (i18n.language !== newLang) { + i18n.changeLanguage(newLang); + } + navigate(nextUrl); + setIsMenuOpen(false); + }; + + const [isMenuOpen, setIsMenuOpen] = useState(false); + const menuRef = useRef(null); + + useEffect(() => { + const handleClickOutside = (event: MouseEvent) => { + if (menuRef.current && !menuRef.current.contains(event.target as Node)) { + setIsMenuOpen(false); + } + }; + + document.addEventListener('mousedown', handleClickOutside); + return () => { + document.removeEventListener('mousedown', handleClickOutside); + }; + }, [menuRef]); + + const triggerButtonClasses = clsx( + 'flex h-full cursor-pointer items-center justify-center gap-[8px] px-[4px] font-semibold leading-none text-default-black', + ); + + const menuPanelClasses = clsx( + 'absolute right-0 top-full z-10 mt-[16px] flex w-[68px] origin-top transform flex-col overflow-hidden border border-default-disabled/hover bg-default-white shadow-[0_3px_5px_rgba(0,0,0,0.2)] transition-opacity transition-transform duration-200 ease-out', + { + 'opacity-100 scale-y-100 pointer-events-auto': isMenuOpen, + 'opacity-0 scale-y-95 pointer-events-none': !isMenuOpen, + }, + ); + + const menuItemClasses = (value: string) => + clsx( + 'flex cursor-pointer items-center justify-center p-[10px] text-center text-body-raw font-semibold transition-colors duration-150 last:border-b-0 md:text-subtitle-raw', + { + 'text-default-black': value === selectedLangValue, + 'text-default-neutral': value !== selectedLangValue, + }, + ); + + return ( +
+ {/* 언어 선택 트리거 버튼 */} + + + {/* 언어 선택 메뉴 패널 */} +
+ {LANG_OPTIONS.map((option) => ( + + ))} +
+
+ ); +} diff --git a/src/layout/components/header/StickyTriSectionHeader.tsx b/src/layout/components/header/StickyTriSectionHeader.tsx index caf3ece9..5e7e115d 100644 --- a/src/layout/components/header/StickyTriSectionHeader.tsx +++ b/src/layout/components/header/StickyTriSectionHeader.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { PropsWithChildren } from 'react'; import { useNavigate } from 'react-router-dom'; import useLogout from '../../../hooks/mutations/useLogout'; @@ -12,8 +13,13 @@ import DialogModal from '../../../components/DialogModal/DialogModal'; import DTHome from '../../../components/icons/Home'; import DTLogin from '../../../components/icons/Login'; import useFullscreen from '../../../hooks/useFullscreen'; +import LanguageSelector from './LanguageSelector'; +import { + buildLangPath, + DEFAULT_LANG, + isSupportedLang, +} from '../../../util/languageRouting'; -// The type of header icons will be declared here. type HeaderIcons = 'home' | 'auth'; function StickyTriSectionHeader(props: PropsWithChildren) { @@ -47,9 +53,13 @@ StickyTriSectionHeader.Center = function Center(props: PropsWithChildren) { }; StickyTriSectionHeader.Right = function Right(props: PropsWithChildren) { + const { t, i18n } = useTranslation(); const { children: buttons } = props; const navigate = useNavigate(); - const { mutate: logoutMutate } = useLogout(() => navigate('/home')); + const currentLang = i18n.resolvedLanguage ?? i18n.language; + const lang = isSupportedLang(currentLang) ? currentLang : DEFAULT_LANG; + const homePath = buildLangPath('/home', lang); + const { mutate: logoutMutate } = useLogout(() => navigate(homePath)); const { openModal, closeModal, ModalWrapper } = useModal({}); const { isFullscreen, setFullscreen } = useFullscreen(); const defaultIcons: HeaderIcons[] = ['home', 'auth']; @@ -64,29 +74,26 @@ StickyTriSectionHeader.Right = function Right(props: PropsWithChildren) { <>
{isGuestFlow() && ( - <> - {/* Guest mode indicator */} -
- 비회원 모드 -
- - {/* Vertical divider */} -
- +
+ {t('비회원 모드')} +
)} - {/* Buttons given as an argument */} + + +
+ + {/* props으로 들어오는 버튼들 */} {buttons} - {/* Normal buttons */} {defaultIcons.map((iconName, index) => { switch (iconName) { case 'home': return ( ); + case 'auth': return ( ); + default: return null; } @@ -135,18 +144,21 @@ StickyTriSectionHeader.Right = function Right(props: PropsWithChildren) { handleLoginStart(false), }} right={{ - text: '네', + text: t('네'), onClick: () => handleLoginStart(true), isBold: true, }} >
- 비회원으로 사용하던 시간표가 있습니다.
- 로그인 후에도 이 시간표를 계속 사용하시겠습니까? +

+ {t( + '비회원으로 사용하던 시간표가 있습니다.\n로그인 후에도 이 시간표를 계속 사용하시겠습니까?', + )} +

diff --git a/src/mocks/handlers/global.ts b/src/mocks/handlers/global.ts index f43ded4d..675b68a2 100644 --- a/src/mocks/handlers/global.ts +++ b/src/mocks/handlers/global.ts @@ -1,8 +1,47 @@ +import { http, HttpResponse } from 'msw'; import { customizeHandlers } from './customize'; import { memberHandlers } from './member'; import { pollHandlers } from './poll'; +const TRANSLATIONS: Record> = { + ko: { + '토론 시간표를 선택해주세요': '토론 시간표를 선택해주세요', + '토론 정보를 설정해주세요': '토론 정보를 설정해주세요', + '토론 정보를 수정해주세요': '토론 정보를 수정해주세요', + 다음: '다음', + 추가하기: '추가하기', + '타이머 추가': '타이머 추가', + '설정 완료': '설정 완료', + '주제 없음': '주제 없음', + '테이블을 삭제하시겠습니까?': '테이블을 삭제하시겠습니까?', + 취소: '취소', + 삭제하기: '삭제하기', + 수정하기: '수정하기', + }, + en: { + '토론 시간표를 선택해주세요': 'Please select a debate timetable', + '토론 정보를 설정해주세요': 'Please set the debate information', + '토론 정보를 수정해주세요': 'Please edit the debate information', + 다음: 'Next', + 추가하기: 'Add', + '타이머 추가': 'Add timer', + '설정 완료': 'Done', + '주제 없음': 'No topic', + '테이블을 삭제하시겠습니까?': 'Do you want to delete the table?', + 취소: 'Cancel', + 삭제하기: 'Delete', + 수정하기: 'Edit', + }, +}; + export const allHandlers = [ + http.get(/\/locales\/[^/]+\/translation\.json$/, ({ request }) => { + const pathname = new URL(request.url).pathname; + const match = pathname.match(/\/locales\/([^/]+)\/translation\.json$/); + const locale = match?.[1] ?? 'ko'; + const translations = TRANSLATIONS[locale] ?? TRANSLATIONS.ko; + return HttpResponse.json(translations); + }), ...memberHandlers, ...customizeHandlers, ...pollHandlers, diff --git a/src/page/DebateEndPage/DebateEndPage.tsx b/src/page/DebateEndPage/DebateEndPage.tsx index c695f400..27d7109b 100644 --- a/src/page/DebateEndPage/DebateEndPage.tsx +++ b/src/page/DebateEndPage/DebateEndPage.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { useNavigate, useParams } from 'react-router-dom'; import clapImage from '../../assets/debateEnd/clap.png'; @@ -6,17 +7,27 @@ import voteStampImage from '../../assets/debateEnd/vote_stamp.png'; import usePostPoll from '../../hooks/mutations/useCreatePoll'; import MenuCard from './components/MenuCard'; import GoToOverviewButton from './components/GoToOverviewButton'; +import { + buildLangPath, + DEFAULT_LANG, + isSupportedLang, +} from '../../util/languageRouting'; export default function DebateEndPage() { + const { t, i18n } = useTranslation(); const { id } = useParams(); const tableId = Number(id); const navigate = useNavigate(); + const currentLang = i18n.resolvedLanguage ?? i18n.language; + const lang = isSupportedLang(currentLang) ? currentLang : DEFAULT_LANG; const handleFeedbackClick = () => { - navigate(`/table/customize/${tableId}/end/feedback`); + navigate(buildLangPath(`/table/customize/${tableId}/end/feedback`, lang)); }; const handleVoteClick = (pollId: number) => { - navigate(`/table/customize/${tableId}/end/vote/${pollId}`); + navigate( + buildLangPath(`/table/customize/${tableId}/end/vote/${pollId}`, lang), + ); }; const { mutate } = usePostPoll(handleVoteClick); @@ -27,7 +38,7 @@ export default function DebateEndPage() { // 테이블 ID 검증 if (!id || isNaN(tableId)) { - throw new Error('테이블 ID가 올바르지 않습니다.'); + throw new Error(t('테이블 ID가 올바르지 않습니다.')); } return ( @@ -37,32 +48,32 @@ export default function DebateEndPage() { >

- 토론을 모두 마치셨습니다 + {t('토론을 모두 마치셨습니다')}

박수
mutate(tableId)} - ariaLabel="승패투표 생성 및 진행" + ariaLabel={t('승패투표 생성 및 진행')} />
diff --git a/src/page/DebateEndPage/components/GoToOverviewButton.tsx b/src/page/DebateEndPage/components/GoToOverviewButton.tsx index 6300edf7..e667cdd0 100644 --- a/src/page/DebateEndPage/components/GoToOverviewButton.tsx +++ b/src/page/DebateEndPage/components/GoToOverviewButton.tsx @@ -1,6 +1,12 @@ +import { useTranslation } from 'react-i18next'; import clsx from 'clsx'; import { RiCalendarScheduleLine } from 'react-icons/ri'; import { useNavigate } from 'react-router-dom'; +import { + buildLangPath, + DEFAULT_LANG, + isSupportedLang, +} from '../../../util/languageRouting'; interface GoToOverviewButtonProps { tableId: number; @@ -11,15 +17,18 @@ export default function GoToOverviewButton({ tableId, className = '', }: GoToOverviewButtonProps) { + const { t, i18n } = useTranslation(); const navigate = useNavigate(); const handleClick = (tableId: number) => { - navigate(`/overview/customize/${tableId}`); + const currentLang = i18n.resolvedLanguage ?? i18n.language; + const lang = isSupportedLang(currentLang) ? currentLang : DEFAULT_LANG; + navigate(buildLangPath(`/overview/customize/${tableId}`, lang)); }; return ( ); } diff --git a/src/page/DebateVotePage/DebateVotePage.tsx b/src/page/DebateVotePage/DebateVotePage.tsx index 90b27349..4f7924da 100644 --- a/src/page/DebateVotePage/DebateVotePage.tsx +++ b/src/page/DebateVotePage/DebateVotePage.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { useMemo } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import { QRCodeSVG } from 'qrcode.react'; @@ -7,8 +8,17 @@ import ErrorIndicator from '../../components/ErrorIndicator/ErrorIndicator'; import useFetchEndPoll from '../../hooks/mutations/useFetchEndPoll'; import { useModal } from '../../hooks/useModal'; import DialogModal from '../../components/DialogModal/DialogModal'; +import { + buildLangPath, + DEFAULT_LANG, + isSupportedLang, +} from '../../util/languageRouting'; + export default function DebateVotePage() { + const { t, i18n } = useTranslation(); const navigate = useNavigate(); + const currentLang = i18n.resolvedLanguage ?? i18n.language; + const lang = isSupportedLang(currentLang) ? currentLang : DEFAULT_LANG; const baseUrl = import.meta.env.MODE !== 'production' ? undefined @@ -27,7 +37,12 @@ export default function DebateVotePage() { }, [baseUrl, pollId]); const handleGoToResult = () => { - navigate(`/table/customize/${tableId}/end/vote/${pollId}/result`); + navigate( + buildLangPath( + `/table/customize/${tableId}/end/vote/${pollId}/result`, + lang, + ), + ); }; const { @@ -48,7 +63,7 @@ export default function DebateVotePage() { }, onError: () => { closeModal(); - alert('투표 종료에 실패했습니다.'); + alert(t('투표 종료에 실패했습니다.')); }, }); }; @@ -71,8 +86,8 @@ export default function DebateVotePage() { return ( - navigate('/')}> - 유효하지 않은 투표 링크입니다. + navigate(buildLangPath('/', lang))}> + {t('유효하지 않은 투표 링크입니다.')} @@ -85,13 +100,13 @@ export default function DebateVotePage() {

- 승패투표 + {t('승패투표')}

-

스캔해 주세요!

+

{t('스캔해 주세요!')}

@@ -101,7 +116,8 @@ export default function DebateVotePage() {

- 참여자 + {t('참여자')} + ({participants?.length ?? 0}) @@ -109,7 +125,9 @@ export default function DebateVotePage() {

{!isLoading && participants && participants.length === 0 && ( -

등록된 토론자가 없어요.

+

+ {t('등록된 토론자가 없어요.')} +

)} {!isLoading && participants && participants.length > 0 && (
    @@ -134,7 +152,7 @@ export default function DebateVotePage() { onClick={openModal} className="button enabled brand flex flex-1 flex-row rounded-full p-[24px]" > - 투표 결과 보기 + {t('투표 결과 보기')}
@@ -143,15 +161,17 @@ export default function DebateVotePage() {
-

투표를 마감하시겠습니까?

+

+ {t('투표를 마감하시겠습니까?')} +

- 투표를 마감하면 더이상 표를 받을 수 없습니다! + {t('투표를 마감하면 더이상 표를 받을 수 없습니다!')}

diff --git a/src/page/DebateVoteResultPage/DebateVoteResultPage.tsx b/src/page/DebateVoteResultPage/DebateVoteResultPage.tsx index 3cf9110a..fc095ffc 100644 --- a/src/page/DebateVoteResultPage/DebateVoteResultPage.tsx +++ b/src/page/DebateVoteResultPage/DebateVoteResultPage.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { useNavigate, useParams } from 'react-router-dom'; import DefaultLayout from '../../layout/defaultLayout/DefaultLayout'; @@ -9,7 +10,14 @@ import ErrorIndicator from '../../components/ErrorIndicator/ErrorIndicator'; import { TeamKey } from '../../type/type'; import { useCallback, useEffect, useState } from 'react'; import DialogModal from '../../components/DialogModal/DialogModal'; +import { + buildLangPath, + DEFAULT_LANG, + isSupportedLang, +} from '../../util/languageRouting'; + export default function DebateVoteResultPage() { + const { t, i18n } = useTranslation(); // 매개변수 검증 const { pollId: rawPollId, tableId: rawTableId } = useParams(); const pollId = rawPollId ? Number(rawPollId) : NaN; @@ -20,6 +28,9 @@ export default function DebateVoteResultPage() { const [isConfirmed, setIsConfirmed] = useState(false); const navigate = useNavigate(); + const currentLang = i18n.resolvedLanguage ?? i18n.language; + const lang = isSupportedLang(currentLang) ? currentLang : DEFAULT_LANG; + const rootPath = buildLangPath('/', lang); const { data, @@ -30,11 +41,13 @@ export default function DebateVoteResultPage() { isRefetchError, } = useGetPollInfo(pollId, { enabled: isArgsValid }); const handleGoHome = () => { - navigate('/'); + navigate(rootPath); }; const handleGoToEndPage = useCallback(() => { - navigate(`/table/customize/${tableId}/end`, { replace: true }); - }, [navigate, tableId]); + navigate(buildLangPath(`/table/customize/${tableId}/end`, lang), { + replace: true, + }); + }, [lang, navigate, tableId]); useEffect(() => { if (!isArgsValid) return; @@ -70,7 +83,7 @@ export default function DebateVoteResultPage() { } else { return { teamKey: null, - teamName: '무승부', + teamName: t('무승부'), }; } }; @@ -79,8 +92,8 @@ export default function DebateVoteResultPage() { return ( - navigate('/')}> - 유효하지 않은 투표 결과 링크입니다. + navigate(rootPath)}> + {t('유효하지 않은 투표 결과 링크입니다.')} @@ -96,8 +109,8 @@ export default function DebateVoteResultPage() { ); } const { teamKey, teamName } = getWinner({ - prosTeamName: data?.prosTeamName || '찬성팀', - consTeamName: data?.consTeamName || '반대팀', + prosTeamName: data?.prosTeamName || t('찬성팀'), + consTeamName: data?.consTeamName || t('반대팀'), prosCount: data?.prosCount || 0, consCount: data?.consCount || 0, }); @@ -107,7 +120,7 @@ export default function DebateVoteResultPage() {

- 승패투표 + {t('승패투표')}

@@ -123,7 +136,7 @@ export default function DebateVoteResultPage() { className="button enabled neutral flex w-full flex-1 rounded-full p-[24px]" disabled={isLoading} > - 토론 종료화면으로 + {t('토론 종료 화면으로 돌아가기')}
@@ -141,11 +154,11 @@ export default function DebateVoteResultPage() { {isConfirmed ? ( closeModal(), }} right={{ - text: '네', + text: t('네'), onClick: () => setIsConfirmed(true), isBold: true, }} >
- 정말로 세부 결과를 공개할까요? + {t('정말로 세부 결과를 공개할까요?')}
)} diff --git a/src/page/DebateVoteResultPage/components/VoteBar.tsx b/src/page/DebateVoteResultPage/components/VoteBar.tsx index 2a6c6439..d95ee397 100644 --- a/src/page/DebateVoteResultPage/components/VoteBar.tsx +++ b/src/page/DebateVoteResultPage/components/VoteBar.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { motion } from 'framer-motion'; import AnimatedCounter from './AnimatedCounter'; import { TEAM_STYLE, TeamKey } from '../../../type/type'; @@ -17,9 +18,10 @@ export default function VoteBar({ total, heightClass = 'h-20', }: VoteBarProps) { + const { t } = useTranslation(); const style = TEAM_STYLE[teamKey]; const percentage = total > 0 ? (count / total) * 100 : 0; - const sideLabel = teamKey === 'PROS' ? '찬성팀' : '반대팀'; + const sideLabel = teamKey === 'PROS' ? t('찬성팀') : t('반대팀'); // 배경 바 색상은 좀 더 투명하게 const barTone = @@ -52,7 +54,8 @@ export default function VoteBar({
- 명 + + {t('명', { count })}
diff --git a/src/page/DebateVoteResultPage/components/VoteDetailResult.tsx b/src/page/DebateVoteResultPage/components/VoteDetailResult.tsx index e22a2bcf..8198fba6 100644 --- a/src/page/DebateVoteResultPage/components/VoteDetailResult.tsx +++ b/src/page/DebateVoteResultPage/components/VoteDetailResult.tsx @@ -1,4 +1,4 @@ -// pages/VoteDetailResult.tsx +import { useTranslation } from 'react-i18next'; import { motion } from 'framer-motion'; import VoteBar from './VoteBar'; @@ -13,6 +13,7 @@ export default function VoteDetailResult({ pros, cons, }: VoteDetailResultProps) { + const { t } = useTranslation(); return (

- 투표 세부 결과 + {t('투표 세부 결과')}

@@ -34,6 +35,7 @@ export default function VoteDetailResult({ count={pros.count} total={pros.count + cons.count} /> +
- 홈으로 돌아가기 + {t('홈으로 돌아가기')}
diff --git a/src/page/DebateVoteResultPage/components/WinnerCard.tsx b/src/page/DebateVoteResultPage/components/WinnerCard.tsx index 61c72528..eb013bcc 100644 --- a/src/page/DebateVoteResultPage/components/WinnerCard.tsx +++ b/src/page/DebateVoteResultPage/components/WinnerCard.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import crown from '../../../assets/debateEnd/crown.svg'; import { TEAM_STYLE, TeamKey } from '../../../type/type'; import clsx from 'clsx'; @@ -8,9 +9,14 @@ interface WinnerCardProps { } export default function WinnerCard({ teamkey, teamName }: WinnerCardProps) { + const { t } = useTranslation(); const style = teamkey ? TEAM_STYLE[teamkey] : null; const sideLabel = - teamkey === 'PROS' ? '찬성팀' : teamkey === 'CONS' ? '반대팀' : '무승부'; + teamkey === 'PROS' + ? t('찬성팀') + : teamkey === 'CONS' + ? t('반대팀') + : t('무승부'); return (
@@ -46,7 +52,7 @@ export default function WinnerCard({ teamkey, teamName }: WinnerCardProps) { {/* 왕관 — 무승부일 때는 표시 안 함 */} {teamkey && (
- 왕관 + {t('왕관')}
)}
diff --git a/src/page/LandingPage/components/Header.tsx b/src/page/LandingPage/components/Header.tsx index df4de7d9..0d8df66f 100644 --- a/src/page/LandingPage/components/Header.tsx +++ b/src/page/LandingPage/components/Header.tsx @@ -1,11 +1,14 @@ +import { useTranslation } from 'react-i18next'; import { useState, useEffect } from 'react'; import { isLoggedIn } from '../../../util/accessToken'; +import LanguageSelector from '../../../layout/components/header/LanguageSelector'; interface HeaderProps { onLoginButtonClicked: () => void; } export default function Header({ onLoginButtonClicked }: HeaderProps) { + const { t } = useTranslation(); const [isScrolled, setIsScrolled] = useState(false); useEffect(() => { @@ -24,15 +27,18 @@ export default function Header({ onLoginButtonClicked }: HeaderProps) { }`} >
-
+

Debate Timer +

+
+ +
-
); diff --git a/src/page/LandingPage/components/MainSection.tsx b/src/page/LandingPage/components/MainSection.tsx index bd86ad77..ddd70fa5 100644 --- a/src/page/LandingPage/components/MainSection.tsx +++ b/src/page/LandingPage/components/MainSection.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import preview from '../../../assets/landing/preview.webm'; import { isLoggedIn } from '../../../util/accessToken'; @@ -10,22 +11,23 @@ export default function MainSection({ onStartWithoutLogin, onDashboardButtonClicked, }: MainSectionProps) { + const { t } = useTranslation(); return (

- 토론 진행을 더 쉽고 빠르게 + {t('토론 진행을 더 쉽고 빠르게')}

); diff --git a/src/page/LandingPage/components/ReportSection.tsx b/src/page/LandingPage/components/ReportSection.tsx index 57a20ea6..86365e78 100644 --- a/src/page/LandingPage/components/ReportSection.tsx +++ b/src/page/LandingPage/components/ReportSection.tsx @@ -1,16 +1,18 @@ +import { useTranslation } from 'react-i18next'; import section501 from '../../../assets/landing/section5-1.png'; import { LANDING_URLS } from '../../../constants/urls'; export default function ReportSection() { + const { t } = useTranslation(); return (

- 버그 및 불편사항 제보 + {t('버그 및 불편사항 제보')}

- 디베이트 타이머 사용 중 불편함을 느끼셨나요? + {t('디베이트 타이머 사용 중 불편함을 느끼셨나요?')}

section501

- 디베이트 타이머 + {t('디베이트 타이머')}

| @@ -57,7 +59,7 @@ export default function ReportSection() { } className="text-[min(max(0.75rem,1vw),1rem)] text-neutral-500 transition-colors hover:text-neutral-700" > - 서비스 이용약관 + {t('서비스 이용약관')}
diff --git a/src/page/LandingPage/components/ReviewSection.tsx b/src/page/LandingPage/components/ReviewSection.tsx index 81a0b754..d63a245d 100644 --- a/src/page/LandingPage/components/ReviewSection.tsx +++ b/src/page/LandingPage/components/ReviewSection.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import ReviewCard from './ReviewCard'; import { REVIEWS } from '../../../constants/reviews'; @@ -8,14 +9,18 @@ interface ReviewSectionProps { export default function ReviewSection({ onStartWithoutLogin, }: ReviewSectionProps) { + const { t } = useTranslation(); return (
-

이미 많은 사람들이 디베이트 타이머로

-

더 나은 토론환경을 만들고 있어요.

+

+ {t( + '이미 많은 사람들이 디베이트 타이머로\n더 나은 토론환경을 만들고 있어요.', + )} +

{REVIEWS.map((review) => ( @@ -27,7 +32,7 @@ export default function ReviewSection({ className="rounded-full border border-neutral-300 bg-brand px-20 py-2 text-[min(max(0.875rem,1.25vw),1.2rem)] font-medium text-default-black transition-all duration-100 hover:bg-semantic-table hover:text-default-white" onClick={onStartWithoutLogin} > - 비회원으로 시작하기 + {t('비회원으로 시작하기')}
diff --git a/src/page/LandingPage/components/ScrollHint.tsx b/src/page/LandingPage/components/ScrollHint.tsx index 648ce25a..0bb216b1 100644 --- a/src/page/LandingPage/components/ScrollHint.tsx +++ b/src/page/LandingPage/components/ScrollHint.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { useEffect, useState } from 'react'; import arrowDown from '../../../assets/landing/bottom_arrow.png'; type ScrollHintProps = { @@ -5,6 +6,7 @@ type ScrollHintProps = { }; export default function ScrollHint({ topThreshold = 10 }: ScrollHintProps) { + const { t } = useTranslation(); const [visible, setVisible] = useState(true); useEffect(() => { @@ -39,7 +41,7 @@ export default function ScrollHint({ topThreshold = 10 }: ScrollHintProps) { > 아래로 스크롤
diff --git a/src/page/LandingPage/components/TableSection.tsx b/src/page/LandingPage/components/TableSection.tsx index 3cab8a18..aa5aef38 100644 --- a/src/page/LandingPage/components/TableSection.tsx +++ b/src/page/LandingPage/components/TableSection.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import section301 from '../../../assets/landing/debate_info_setting.png'; import section302 from '../../../assets/landing/table_list.png'; @@ -6,25 +7,25 @@ interface TableSectionProps { } export default function TableSection({ onLogin }: TableSectionProps) { + const { t } = useTranslation(); return (
- 홈 | 설정 + {t('홈 | 설정')}
-

- 토론 정보
- 관리 및 기록 +

+ {t('토론 정보\n관리 및 기록')}

- 토론 기본 정보 설정 + {t('토론 기본 정보 설정')}

- 시간표 이름부터 주제까지! + {t('시간표 이름부터 주제까지!')}

section301 @@ -33,22 +34,23 @@ export default function TableSection({ onLogin }: TableSectionProps) { section302

- 시간표 목록 + {t('시간표 목록')}

- 내가 만든 시간표를 저장하고 싶나요? + {t('내가 만든 시간표를 저장하고 싶나요?')}

-

시간표를 저장하려면,

-

디베이트 타이머에 로그인해 보세요!

+

+ {t('시간표를 저장하려면,\n디베이트 타이머에 로그인해 보세요!')} +

diff --git a/src/page/LandingPage/components/TemplateApplicationSection.tsx b/src/page/LandingPage/components/TemplateApplicationSection.tsx index e9fb0747..43578023 100644 --- a/src/page/LandingPage/components/TemplateApplicationSection.tsx +++ b/src/page/LandingPage/components/TemplateApplicationSection.tsx @@ -1,15 +1,17 @@ +import { useTranslation } from 'react-i18next'; import section501 from '../../../assets/landing/section5-1.png'; import { LANDING_URLS } from '../../../constants/urls'; export default function TemplateApplicationSection() { + const { t } = useTranslation(); return (

- 템플릿 신청하기 + {t('템플릿 신청하기')}

- 새로운 템플릿도 신청해 볼까요? + {t('새로운 템플릿도 신청해 볼까요?')}

section501 diff --git a/src/page/LandingPage/components/TemplateCard.tsx b/src/page/LandingPage/components/TemplateCard.tsx index 0bc90367..f0ee93dd 100644 --- a/src/page/LandingPage/components/TemplateCard.tsx +++ b/src/page/LandingPage/components/TemplateCard.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { DebateTemplate } from '../../../type/type'; import clsx from 'clsx'; @@ -8,6 +9,7 @@ export default function TemplateCard({ actions, className, }: DebateTemplate) { + const { t } = useTranslation(); return (
diff --git a/src/page/LandingPage/components/TemplateSelection.tsx b/src/page/LandingPage/components/TemplateSelection.tsx index d7afa6ee..a238875f 100644 --- a/src/page/LandingPage/components/TemplateSelection.tsx +++ b/src/page/LandingPage/components/TemplateSelection.tsx @@ -1,13 +1,15 @@ +import { useTranslation } from 'react-i18next'; import { DEBATE_TEMPLATE } from '../../../constants/debate_template'; import TemplateApplicationSection from './TemplateApplicationSection'; import TemplateList from './TemplateList'; export default function TemplateSelection() { + const { t } = useTranslation(); return (

- 다양한 토론 템플릿을 원클릭으로 만나보세요! + {t('다양한 토론 템플릿을 원클릭으로 만나보세요!')}

diff --git a/src/page/LandingPage/components/TimeTableSection.tsx b/src/page/LandingPage/components/TimeTableSection.tsx index a9eb24ed..6ed9f91a 100644 --- a/src/page/LandingPage/components/TimeTableSection.tsx +++ b/src/page/LandingPage/components/TimeTableSection.tsx @@ -1,18 +1,20 @@ +import { useTranslation } from 'react-i18next'; import timeboxStep from '../../../assets/landing/timebox_step.png'; import timeboxButtons from '../../../assets/landing/timebox_step_button.png'; import bellSetting from '../../../assets/landing/bell_setting.png'; import twoTimer from '../../../assets/landing/two_timer.png'; import timeboxAddButton from '../../../assets/landing/timebox_add_button.png'; export default function TimeTableSection() { + const { t } = useTranslation(); return (
- 시간표 설정화면 + {t('시간표 설정화면')}

- 간편한 시간표 구성 + {t('간편한 시간표 구성')}

@@ -21,11 +23,11 @@ export default function TimeTableSection() {

- 시간표 추가 + {t('시간표 추가')}

시간표 추가 버튼
@@ -33,24 +35,20 @@ export default function TimeTableSection() { section302

- 두가지 타이머 + {t('두가지 타이머')}

-

- 일반형과 자유토론형 타이머로, -
- 다양한 토론 방식을 지원해요. +

+ {t('일반형과 자유토론형 타이머로\n다양한 토론 방식을 지원해요.')}

- 종소리 설정 + {t('종소리 설정')}

-

- 시간에 따른 종소리를 내마음대로 -
- 커스터마이징 할 수 있어요. +

+ {t('시간에 따른 종소리를 내마음대로\n커스터마이징 할 수 있어요.')}

section302 diff --git a/src/page/LandingPage/components/TimerSection.tsx b/src/page/LandingPage/components/TimerSection.tsx index bbcc1d01..ff8bb07b 100644 --- a/src/page/LandingPage/components/TimerSection.tsx +++ b/src/page/LandingPage/components/TimerSection.tsx @@ -1,9 +1,12 @@ +import { Trans, useTranslation } from 'react-i18next'; import timer from '../../../assets/landing/timer.png'; import timerOperationTime from '../../../assets/landing/timer_operation_time.png'; import timerTimeBased from '../../../assets/landing/timer_timebased.png'; import keyInfo from '../../../assets/landing/key_info.png'; import timeoutButton from '../../../assets/landing/timeout_button.png'; + export default function TimerSection() { + const { t } = useTranslation(); return (
- 타이머 화면 + {t('타이머 화면')}
-

- 원하는 때에
- 작전 시간 사용하기 +

+ {t('원하는 때에\n작전 시간 사용하기')}

section301
-

- 토론자가 작전 시간을 -
- 요청하면{' '} - 작전 시간 사용{' '} -
- 버튼을 눌러 시간을 사용해요 +

+ \n버튼을 눌러 시간을 사용해요' + } + components={[ + {t('작전, + ]} + />

-

- 작전 시간이 나타나면 -
원하는 시간을 입력하세요! +

+ {t('작전 시간이 나타나면\n원하는 시간을 입력하세요!')}

section302
-

- 키보드 방향키로
더 편리한 조작 +

+ {t('키보드 방향키로\n더 편리한 조작')}

diff --git a/src/page/LandingPage/hooks/useLandingPageHandlers.ts b/src/page/LandingPage/hooks/useLandingPageHandlers.ts index 80b94b0a..7f3508a4 100644 --- a/src/page/LandingPage/hooks/useLandingPageHandlers.ts +++ b/src/page/LandingPage/hooks/useLandingPageHandlers.ts @@ -5,11 +5,22 @@ import useLogout from '../../../hooks/mutations/useLogout'; import { createTableShareUrl } from '../../../util/arrayEncoding'; import { SAMPLE_TABLE_DATA } from '../../../constants/sample_table'; import { useCallback } from 'react'; +import { useTranslation } from 'react-i18next'; +import { + buildLangPath, + DEFAULT_LANG, + isSupportedLang, +} from '../../../util/languageRouting'; const useLandingPageHandlers = () => { // Prepare dependencies const navigate = useNavigate(); - const { mutate: logoutMutate } = useLogout(() => navigate('/home')); + const { i18n } = useTranslation(); + const currentLang = i18n.resolvedLanguage ?? i18n.language; + const lang = isSupportedLang(currentLang) ? currentLang : DEFAULT_LANG; + const homePath = buildLangPath('/home', lang); + const rootPath = buildLangPath('/', lang); + const { mutate: logoutMutate } = useLogout(() => navigate(homePath)); // Declare functions that represent business logics const handleStartWithoutLogin = useCallback(() => { @@ -23,12 +34,12 @@ const useLandingPageHandlers = () => { if (!isLoggedIn()) { oAuthLogin(); } else { - navigate('/'); + navigate(rootPath); } - }, [navigate]); + }, [navigate, rootPath]); const handleDashboardButtonClick = useCallback(() => { - navigate('/'); - }, [navigate]); + navigate(rootPath); + }, [navigate, rootPath]); const handleHeaderLoginButtonClick = useCallback(() => { if (!isLoggedIn()) { oAuthLogin(); diff --git a/src/page/OAuthPage/OAuth.tsx b/src/page/OAuthPage/OAuth.tsx index 0262753a..52f73a88 100644 --- a/src/page/OAuthPage/OAuth.tsx +++ b/src/page/OAuthPage/OAuth.tsx @@ -5,11 +5,20 @@ import { deleteSessionCustomizeTableData, isGuestFlow, } from '../../util/sessionStorage'; +import { useTranslation } from 'react-i18next'; +import { + buildLangPath, + DEFAULT_LANG, + isSupportedLang, +} from '../../util/languageRouting'; export default function OAuth() { + const { i18n } = useTranslation(); const navigate = useNavigate(); const [searchParams] = useSearchParams(); const hasProcessedLogin = useRef(false); + const currentLang = i18n.resolvedLanguage ?? i18n.language; + const lang = isSupportedLang(currentLang) ? currentLang : DEFAULT_LANG; const { mutate } = usePostUser(() => { const keepGuestTable = sessionStorage.getItem('keepGuestTable'); @@ -21,9 +30,9 @@ export default function OAuth() { sessionStorage.removeItem('keepGuestTable'); if (isGuestFlow()) { - navigate('/share'); + navigate(buildLangPath('/share', lang)); } else { - navigate('/'); + navigate(buildLangPath('/', lang)); } }); diff --git a/src/page/TableComposition/TableCompositionPage.test.tsx b/src/page/TableComposition/TableCompositionPage.test.tsx index 07954359..e4f076f3 100644 --- a/src/page/TableComposition/TableCompositionPage.test.tsx +++ b/src/page/TableComposition/TableCompositionPage.test.tsx @@ -26,6 +26,10 @@ function TestWrapper({ {/* 실제로 이동하고 싶은 /overview 경로 - 테스트용 컴포넌트 */} + Overview Page} + /> Overview Page} diff --git a/src/page/TableComposition/TableCompositionPage.tsx b/src/page/TableComposition/TableCompositionPage.tsx index f528cced..858c07f4 100644 --- a/src/page/TableComposition/TableCompositionPage.tsx +++ b/src/page/TableComposition/TableCompositionPage.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import DefaultLayout from '../../layout/defaultLayout/DefaultLayout'; import TableNameAndType from './components/TableNameAndType/TableNameAndType'; import useFunnel from '../../hooks/useFunnel'; @@ -14,13 +15,14 @@ export type TableCompositionStep = 'NameAndType' | 'TimeBox'; type Mode = 'edit' | 'add'; export default function TableCompositionPage() { + const { t } = useTranslation(); // URL 등으로부터 "editMode"와 "tableId"를 추출 const [searchParams] = useSearchParams(); const rawMode = searchParams.get('mode'); const rawTableId = searchParams.get('tableId'); if (rawMode !== 'edit' && rawMode !== 'add') { - throw new Error('테이블 모드가 올바르지 않습니다.'); + throw new Error(t('테이블 모드가 올바르지 않습니다.')); } const mode = rawMode as Mode; @@ -29,7 +31,7 @@ export default function TableCompositionPage() { mode === 'edit' && (rawTableId === null || isNaN(Number(rawTableId))) ) { - throw new Error('테이블 ID가 올바르지 않습니다.'); + throw new Error(t('테이블 ID가 올바르지 않습니다.')); } const tableId = rawTableId ? Number(rawTableId) : 0; @@ -78,9 +80,9 @@ export default function TableCompositionPage() { const handleButtonClick = () => { const patchedInfo = { ...formData.info, - name: formData.info.name ?? '시간표 1', - prosTeamName: formData.info.prosTeamName ?? '찬성', - consTeamName: formData.info.consTeamName ?? '반대', + name: formData.info.name ?? t('시간표 1'), + prosTeamName: formData.info.prosTeamName ?? t('찬성'), + consTeamName: formData.info.consTeamName ?? t('반대'), }; updateInfo(patchedInfo); @@ -97,7 +99,7 @@ export default function TableCompositionPage() { refetch()}> - 시간표 정보를 불러오지 못했어요...

다시 시도할까요? + {t('시간표 정보를 불러오지 못했어요.\n다시 시도할까요?')}
@@ -119,6 +121,7 @@ export default function TableCompositionPage() { onButtonClick={() => goToStep('TimeBox')} /> ), + TimeBox: ( @@ -59,29 +63,30 @@ export default function TableNameAndType(props: TableNameAndTypeProps) {
handleFieldChange('name', e.target.value)} onClear={() => clearField('name')} - placeholder="시간표 1" + placeholder={t('시간표 1')} disabled={isLoading} /> handleFieldChange('agenda', e.target.value)} onClear={() => clearField('agenda')} - placeholder="토론 주제를 입력해주세요" + placeholder={t('토론 주제를 입력해주세요')} disabled={isLoading} /> + <>
+ vs. 8 || cons.length > 8; if (isTooLong) { - alert('팀명은 최대 8자까지 입력할 수 있습니다.'); + alert(t('팀명은 최대 8자까지 입력할 수 있습니다.')); return; } const updatedInfo = { ...info, - name: info.name || '시간표 1', - prosTeamName: info.prosTeamName || '찬성', - consTeamName: info.consTeamName || '반대', + name: info.name || t('시간표 1'), + prosTeamName: info.prosTeamName || t('찬성'), + consTeamName: info.consTeamName || t('반대'), }; onInfoChange(updatedInfo); @@ -141,7 +147,7 @@ export default function TableNameAndType(props: TableNameAndTypeProps) { }} className="button enabled brand w-full rounded-full" > - 다음 + {t('다음')}
diff --git a/src/page/TableComposition/components/TimeBox/TimeBox.tsx b/src/page/TableComposition/components/TimeBox/TimeBox.tsx index d6a2074b..1dda9a3b 100644 --- a/src/page/TableComposition/components/TimeBox/TimeBox.tsx +++ b/src/page/TableComposition/components/TimeBox/TimeBox.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { HTMLAttributes } from 'react'; import TimeBoxManageButtons from '../TimeBoxManageButtons/TimeBoxManageButtons'; import { TimeBoxInfo } from '../../../../type/type'; @@ -5,6 +6,7 @@ import { Formatting } from '../../../../util/formatting'; import DTDrag from '../../../../components/icons/Drag'; import SmallIconButtonContainer from '../../../../components/SmallIconContainer/SmallIconContainer'; import clsx from 'clsx'; +import { normalizeSpeechTypeKey } from '../../../../util/speechType'; interface TimeBoxEventHandlers { onSubmitEdit?: (updatedInfo: TimeBoxInfo) => void; @@ -20,6 +22,7 @@ interface TimeBoxProps extends HTMLAttributes { } export default function TimeBox(props: TimeBoxProps) { + const { t } = useTranslation(); const { stance, speechType, @@ -35,23 +38,31 @@ export default function TimeBox(props: TimeBoxProps) { const onSubmitCopy = eventHandlers?.onSubmitCopy; const onMouseDown = eventHandlers?.onMouseDown; const isModifiable = !!eventHandlers; + + const getSpeechTypeLabel = (value: string) => { + const normalized = normalizeSpeechTypeKey(value); + return normalized ? t(normalized) : value; + }; let timeStr = ''; let timePerSpeakingStr = ''; if (boxType === 'NORMAL') { const { minutes, seconds } = Formatting.formatSecondsToMinutes(time!); - timeStr = `${minutes}분 ${seconds}초`; + timeStr = t('{{minutes}}분 {{seconds}}초', { minutes, seconds }); } else { const { minutes, seconds } = Formatting.formatSecondsToMinutes( timePerTeam!, ); - timeStr = `팀당 ${minutes}분 ${seconds}초`; + timeStr = t('팀당 {{minutes}}분 {{seconds}}초', { minutes, seconds }); } if (timePerSpeaking !== null) { const { minutes, seconds } = Formatting.formatSecondsToMinutes(timePerSpeaking); - timePerSpeakingStr = `발언당 ${minutes}분 ${seconds}초`; + timePerSpeakingStr = t('발언당 {{minutes}}분 {{seconds}}초', { + minutes, + seconds, + }); } const fullTimeStr = timePerSpeakingStr ? `${timeStr} | ${timePerSpeakingStr}` @@ -75,7 +86,7 @@ export default function TimeBox(props: TimeBoxProps) { ${isPros ? 'right-[10px]' : 'left-[10px]'} `} onMouseDown={onMouseDown} - title="위/아래로 드래그" + title={t('위/아래로 드래그')} > @@ -126,9 +137,11 @@ export default function TimeBox(props: TimeBoxProps) { })} >

- {speechType} + {getSpeechTypeLabel(speechType)} {speaker && ( - {` | ${speaker} 토론자`} + + {t(' | {{speaker}} 토론자', { speaker })} + )}

@@ -152,7 +165,7 @@ export default function TimeBox(props: TimeBoxProps) { />

- {speechType} + {getSpeechTypeLabel(speechType)}

{timeStr}

@@ -178,7 +191,7 @@ export default function TimeBox(props: TimeBoxProps) { )} - {speechType} + {getSpeechTypeLabel(speechType)} {fullTimeStr} diff --git a/src/page/TableComposition/components/TimeBoxManageButtons/TimeBoxManageButtons.tsx b/src/page/TableComposition/components/TimeBoxManageButtons/TimeBoxManageButtons.tsx index eccbfcb3..09070d90 100644 --- a/src/page/TableComposition/components/TimeBoxManageButtons/TimeBoxManageButtons.tsx +++ b/src/page/TableComposition/components/TimeBoxManageButtons/TimeBoxManageButtons.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { TimeBoxInfo } from '../../../../type/type'; import { useModal } from '../../../../hooks/useModal'; import TimerCreationContent from '../TimerCreationContent/TimerCreationContent'; @@ -19,6 +20,7 @@ interface TimeBoxManageButtonsProps { } export default function TimeBoxManageButtons(props: TimeBoxManageButtonsProps) { + const { t } = useTranslation(); const { openModal: openEditModal, closeModal: closeEditModal, @@ -38,21 +40,21 @@ export default function TimeBoxManageButtons(props: TimeBoxManageButtonsProps) { <>
{onSubmitEdit && ( - )} {onSubmitDelete && ( - )} {onSubmitCopy && ( -
@@ -287,7 +291,7 @@ export default function TimeBoxStep(props: TimeBoxStepProps) { disabled={isLoading} > - 토론 정보 수정하기 + {t('토론 정보 수정하기')}
diff --git a/src/page/TableComposition/components/TimerCreationContent/TimeInputGroup.tsx b/src/page/TableComposition/components/TimerCreationContent/TimeInputGroup.tsx index 160362b0..e962fbb2 100644 --- a/src/page/TableComposition/components/TimerCreationContent/TimeInputGroup.tsx +++ b/src/page/TableComposition/components/TimerCreationContent/TimeInputGroup.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import ClearableInput from '../../../../components/ClearableInput/ClearableInput'; import TimerCreationContentItem from './TimerCreationContentMenuItem'; @@ -16,6 +17,7 @@ export default function TimeInputGroup({ onMinutesChange, onSecondsChange, }: TimeInputGroupProps) { + const { t } = useTranslation(); const validateTime = (value: string) => value === '' ? 0 : Math.max(0, Math.min(59, Number(value))); @@ -29,7 +31,8 @@ export default function TimeInputGroup({ onChange={(e) => onMinutesChange(validateTime(e.target.value))} onClear={() => onMinutesChange(0)} /> -

+ +

{t('분')}

@@ -39,7 +42,8 @@ export default function TimeInputGroup({ onChange={(e) => onSecondsChange(validateTime(e.target.value))} onClear={() => onSecondsChange(0)} /> -

+ +

{t('초')}

diff --git a/src/page/TableComposition/components/TimerCreationContent/TimerCreationContent.tsx b/src/page/TableComposition/components/TimerCreationContent/TimerCreationContent.tsx index 1557f2b1..98974a0d 100644 --- a/src/page/TableComposition/components/TimerCreationContent/TimerCreationContent.tsx +++ b/src/page/TableComposition/components/TimerCreationContent/TimerCreationContent.tsx @@ -1,13 +1,17 @@ +import { useTranslation } from 'react-i18next'; import { useCallback, useMemo, useState } from 'react'; import { TimeBoxInfo, Stance, TimeBoxType, BellType, - BellTypeToString, BellConfig, } from '../../../../type/type'; import { Formatting } from '../../../../util/formatting'; +import { + SPEECH_TYPE_RECORD, + type SpeechTypeKey, +} from '../../../../util/speechType'; import normalTimerProsImage from '../../../../assets/timer/normal_timer_pros.jpg'; import normalTimerConsImage from '../../../../assets/timer/normal_timer_cons.jpg'; import normalTimerNeutralImage from '../../../../assets/timer/normal_timer_neutral.jpg'; @@ -38,22 +42,7 @@ type TimerCreationOption = | 'TIME_NORMAL' | 'BELL'; -type SpeechType = - | 'OPENING' - | 'REBUTTAL' - | 'TIMEOUT' - | 'CLOSING' - | 'CROSS_EXAM' - | 'CUSTOM'; - -const SPEECH_TYPE_RECORD: Record = { - OPENING: '입론', - CLOSING: '최종 발언', - CUSTOM: '직접 입력', - REBUTTAL: '반론', - CROSS_EXAM: '교차 조사', - TIMEOUT: '작전 시간', -} as const; +type SpeechType = SpeechTypeKey; const STANCE_RECORD: Record = { PROS: '찬성', @@ -61,6 +50,12 @@ const STANCE_RECORD: Record = { NEUTRAL: '중립', } as const; +const BELL_TYPE_LABEL_KEYS: Record = { + BEFORE_END: '종료 전', + AFTER_END: '종료 후', + AFTER_START: '시작 후', +} as const; + const NORMAL_OPTIONS: TimerCreationOption[] = [ 'TIMER_TYPE', 'SPEECH_TYPE_NORMAL', @@ -104,6 +99,7 @@ export default function TimerCreationContent({ onSubmit, onClose, }: TimerCreationContentProps) { + const { t } = useTranslation(); const [stance, setStance] = useState( beforeData?.stance ? beforeData?.stance === 'NEUTRAL' @@ -119,20 +115,21 @@ export default function TimerCreationContent({ // 발언 유형 초기화 const getSpeechTypeFromString = (value: string): SpeechType => { - switch (value.trim()) { - case '입론': + const normalize = (val: string) => val.replace(/\s+/g, '').trim(); + const normalized = normalize(value); + switch (normalized) { + case normalize(SPEECH_TYPE_RECORD.OPENING): return 'OPENING'; - case '반론': + case normalize(SPEECH_TYPE_RECORD.REBUTTAL): return 'REBUTTAL'; - case '최종발언': - case '최종 발언': + case normalize(SPEECH_TYPE_RECORD.CLOSING): return 'CLOSING'; - case '작전시간': - case '작전 시간': + case normalize(SPEECH_TYPE_RECORD.TIMEOUT): return 'TIMEOUT'; - case '교차조사': - case '교차 조사': + case normalize(SPEECH_TYPE_RECORD.CROSS_EXAM): return 'CROSS_EXAM'; + case normalize(SPEECH_TYPE_RECORD.OPEN_DEBATE): + return 'OPEN_DEBATE'; default: return 'CUSTOM'; } @@ -148,14 +145,20 @@ export default function TimerCreationContent({ }, []); const initSpeechType = - beforeData?.speechType ?? initData?.speechType ?? '입론'; + beforeData?.speechType ?? + initData?.speechType ?? + SPEECH_TYPE_RECORD.OPENING; + const isTimeBasedInit = + (beforeData?.boxType ?? initData?.boxType ?? 'NORMAL') === 'TIME_BASED'; const [currentSpeechType, setCurrentSpeechType] = useState( - getSpeechTypeFromString(initSpeechType), + isTimeBasedInit ? 'CUSTOM' : getSpeechTypeFromString(initSpeechType), ); const [speechTypeTextValue, setSpeechTypeTextValue] = useState( - currentSpeechType === 'CUSTOM' - ? (initData?.speechType ?? '') - : SPEECH_TYPE_RECORD[currentSpeechType], + isTimeBasedInit + ? initSpeechType + : currentSpeechType === 'CUSTOM' + ? (initData?.speechType ?? '') + : t(SPEECH_TYPE_RECORD[currentSpeechType]), ); // 종소리 영역 확장 여부 @@ -204,6 +207,7 @@ export default function TimerCreationContent({ { type: 'BEFORE_END', min: 0, sec: 30, count: 1 }, { type: 'BEFORE_END', min: 0, sec: 0, count: 2 }, ]; + const savedBellOptions: BellInputConfig[] = rawBellConfigData === null ? defaultBellConfig @@ -242,32 +246,30 @@ export default function TimerCreationContent({ const isNormalTimer = timerType === 'NORMAL'; const speechTypeOptions: DropdownMenuItem[] = [ - { value: 'OPENING', label: SPEECH_TYPE_RECORD['OPENING'] }, - { value: 'REBUTTAL', label: SPEECH_TYPE_RECORD['REBUTTAL'] }, - { value: 'TIMEOUT', label: SPEECH_TYPE_RECORD['TIMEOUT'] }, - { value: 'CROSS_EXAM', label: SPEECH_TYPE_RECORD['CROSS_EXAM'] }, - { value: 'CLOSING', label: SPEECH_TYPE_RECORD['CLOSING'] }, - { value: 'CUSTOM', label: SPEECH_TYPE_RECORD['CUSTOM'] }, + { value: 'OPENING', label: t(SPEECH_TYPE_RECORD['OPENING']) }, + { value: 'REBUTTAL', label: t(SPEECH_TYPE_RECORD['REBUTTAL']) }, + { value: 'TIMEOUT', label: t(SPEECH_TYPE_RECORD['TIMEOUT']) }, + { value: 'CROSS_EXAM', label: t(SPEECH_TYPE_RECORD['CROSS_EXAM']) }, + { value: 'CLOSING', label: t(SPEECH_TYPE_RECORD['CLOSING']) }, + { value: 'CUSTOM', label: t(SPEECH_TYPE_RECORD['CUSTOM']) }, ] as const; const stanceOptions: DropdownMenuItem[] = useMemo( () => [ { value: 'PROS', label: prosTeamName }, { value: 'CONS', label: consTeamName }, - { value: 'NEUTRAL', label: STANCE_RECORD['NEUTRAL'] }, + { value: 'NEUTRAL', label: t(STANCE_RECORD['NEUTRAL']) }, ], - [prosTeamName, consTeamName], - ); - const bellOptions: DropdownMenuItem[] = useMemo( - () => [ - { value: 'BEFORE_END', label: BellTypeToString['BEFORE_END'] }, - { value: 'AFTER_END', label: BellTypeToString['AFTER_END'] }, - { value: 'AFTER_START', label: BellTypeToString['AFTER_START'] }, - ], - [], + [prosTeamName, consTeamName, t], ); + const bellOptions: DropdownMenuItem[] = [ + { value: 'BEFORE_END', label: t(BELL_TYPE_LABEL_KEYS['BEFORE_END']) }, + { value: 'AFTER_END', label: t(BELL_TYPE_LABEL_KEYS['AFTER_END']) }, + { value: 'AFTER_START', label: t(BELL_TYPE_LABEL_KEYS['AFTER_START']) }, + ]; + const options = isNormalTimer ? NORMAL_OPTIONS : TIME_BASED_OPTIONS; const handleSubmit = useCallback(() => { @@ -280,7 +282,7 @@ export default function TimerCreationContent({ if (timerType === 'NORMAL') { if (totalTime <= 0) { - errors.push('발언 시간은 1초 이상이어야 해요.'); + errors.push(t('발언 시간은 1초 이상이어야 해요.')); } // 타종 옵션 유효성 검사 @@ -289,7 +291,7 @@ export default function TimerCreationContent({ const bellTime = item.min * 60 + item.sec; if (bellTime > totalTime) { - errors.push('종료 전 타종은 발언 시간보다 길 수 없어요.'); + errors.push(t('종료 전 타종은 발언 시간보다 길 수 없어요.')); } } }); @@ -297,25 +299,30 @@ export default function TimerCreationContent({ if (timerType === 'TIME_BASED') { if (totalTimePerTeam <= 0) { - errors.push('팀당 발언 시간은 1초 이상이어야 해요.'); + errors.push(t('팀당 발언 시간은 1초 이상이어야 해요.')); } if (totalTimePerSpeaking > totalTimePerTeam) { - errors.push('1회당 발언 시간은 팀당 발언 시간을 초과할 수 없어요.'); + errors.push(t('1회당 발언 시간은 팀당 발언 시간을 초과할 수 없어요.')); } } // SpeechType에 맞게 문자열 매핑 let speechTypeToSend: string; let stanceToSend: Stance; - if (speaker.trim().length > MAX_SPEAKER_LEN) { - errors.push(`발언자는 최대 ${MAX_SPEAKER_LEN}자까지 입력할 수 있습니다.`); + const trimmedSpeakerLength = speaker.trim().length; + if (trimmedSpeakerLength > MAX_SPEAKER_LEN) { + errors.push( + t('발언자는 최대 {{MAX_SPEAKER_LEN}}자까지 입력할 수 있습니다.', { + MAX_SPEAKER_LEN, + }), + ); } if (currentSpeechType === 'CUSTOM') { // 텍스트 길이 유효성 검사 if (speechTypeTextValue.length > 10) { - errors.push('발언 유형은 최대 10자까지 입력할 수 있습니다.'); + errors.push(t('발언 유형은 최대 10자까지 입력할 수 있습니다.')); } // 발언시간 유효성 검사 @@ -323,12 +330,14 @@ export default function TimerCreationContent({ timerType === 'TIME_BASED' && totalTimePerSpeaking > totalTimePerTeam ) { - errors.push('1회당 발언 시간은 팀당 총 발언 시간보다 클 수 없습니다.'); + errors.push( + t('1회당 발언 시간은 팀당 총 발언 시간보다 클 수 없습니다.'), + ); } // 커스텀 타이머 발언유형 유효성 검사 if (timerType === 'NORMAL' && speechTypeTextValue.trim() === '') { - errors.push('발언 유형을 입력해주세요.'); + errors.push(t('발언 유형을 입력해주세요.')); } } @@ -336,9 +345,12 @@ export default function TimerCreationContent({ alert(errors.join('\n')); return; } else { - if (currentSpeechType === 'CUSTOM') { + if (timerType === 'TIME_BASED') { + speechTypeToSend = speechTypeTextValue; + stanceToSend = 'NEUTRAL'; + } else if (currentSpeechType === 'CUSTOM') { speechTypeToSend = speechTypeTextValue; - stanceToSend = timerType === 'TIME_BASED' ? 'NEUTRAL' : stance; + stanceToSend = stance; } else { speechTypeToSend = SPEECH_TYPE_RECORD[currentSpeechType]; stanceToSend = currentSpeechType === 'TIMEOUT' ? 'NEUTRAL' : stance; @@ -362,7 +374,9 @@ export default function TimerCreationContent({ onSubmit({ stance: stanceToSend, speechType: - speechTypeToSend.trim() === '' ? '자유토론' : speechTypeToSend, + speechTypeToSend.trim() === '' + ? SPEECH_TYPE_RECORD.OPEN_DEBATE + : speechTypeToSend, boxType: timerType, time: null, timePerTeam: totalTimePerTeam, @@ -389,6 +403,7 @@ export default function TimerCreationContent({ teamSeconds, stance, speechTypeTextValue, + t, timerType, ]); @@ -438,7 +453,7 @@ export default function TimerCreationContent({ if (selectedValue === 'NEUTRAL') { if (currentSpeechType !== 'CUSTOM') { alert( - "중립은 발언 유형이 '직접 입력'일 경우에만 선택할 수 있습니다.", + t("중립은 발언 유형이 '직접 입력'일 경우에만 선택할 수 있습니다."), ); return; } @@ -446,7 +461,7 @@ export default function TimerCreationContent({ setStance(selectedValue); }, - [currentSpeechType], + [currentSpeechType, t], ); const handleBellExpandButtonClick = useCallback(() => { @@ -504,18 +519,14 @@ export default function TimerCreationContent({ {/* 제목 */}

- {timerType === 'NORMAL' ? '일반 타이머' : '자유토론 타이머'} + {timerType === 'NORMAL' ? t('일반 타이머') : t('자유토론 타이머')}

-

- {timerType === 'NORMAL' ? ( - '한 팀의 발언 시간이 세팅된 일반적인 타이머' - ) : ( - <> - {'팀별 발언 시간과 1회당 발언 시간이 세팅된 타이머'} -
- {'1회당 발언 시간이 지나면, 상대 팀으로 발언권이 넘어감'} - - )} +

+ {timerType === 'NORMAL' + ? t('한 팀의 발언 시간이 세팅된 일반적인 타이머') + : t( + '팀별 발언 시간과 1회당 발언 시간이 세팅된 타이머\n1회당 발언 시간이 지나면, 상대 팀으로 발언권이 넘어감', + )}

@@ -564,7 +575,7 @@ export default function TimerCreationContent({ case 'TIMER_TYPE': return ( @@ -572,15 +583,16 @@ export default function TimerCreationContent({ id="timer-type-normal" name="timer-type" value="NORMAL" - label="일반 타이머" + label={t('일반 타이머')} checked={isNormalTimer} onChange={handleTimerChange} /> + @@ -592,7 +604,7 @@ export default function TimerCreationContent({ case 'SPEAKER': return ( setSpeaker('')} + placeholder={t('N번 토론자')} maxLength={MAX_SPEAKER_LEN} - placeholder="N번" disabled={ stance === 'NEUTRAL' || currentSpeechType === 'TIMEOUT' } @@ -615,7 +627,7 @@ export default function TimerCreationContent({ case 'TIME_NORMAL': return ( setSpeechTypeTextValue(e.target.value)} onClear={() => setSpeechTypeTextValue('')} - placeholder="주도권 토론 등" + placeholder={t('주도권 토론 등')} /> ); @@ -671,7 +683,7 @@ export default function TimerCreationContent({ case 'SPEECH_TYPE_NORMAL': return ( @@ -682,7 +694,7 @@ export default function TimerCreationContent({ options={speechTypeOptions} selectedValue={currentSpeechType} onSelect={handleSpeechTypeChange} - placeholder="선택" + placeholder={t('선택')} /> {currentSpeechType === 'CUSTOM' && ( @@ -693,7 +705,7 @@ export default function TimerCreationContent({ setSpeechTypeTextValue(e.target.value) } onClear={() => setSpeechTypeTextValue('')} - placeholder="입론, 반론, 작전 시간 등" + placeholder={t('입론, 반론, 작전 시간 등')} /> )} @@ -704,7 +716,7 @@ export default function TimerCreationContent({ case 'TEAM': return (

- 종소리 설정 + {t('종소리 설정')}

- @@ -774,6 +785,7 @@ export default function TimerCreationContent({ })); }} /> + {/* 분, 초, 타종 횟수 */} @@ -796,9 +808,10 @@ export default function TimerCreationContent({ min: getValidateTimeValue(safeValue), })); }} - placeholder="분" + placeholder={t('분')} /> - + + {t('분')} - + + {t('초')} @@ -832,8 +846,9 @@ export default function TimerCreationContent({ className="w-[60px] rounded-[4px] border border-default-border p-[8px]" value={bellInput.count} onChange={handleBellCountChange} - placeholder="횟수" + placeholder={t('횟수')} /> +
); diff --git a/src/page/TableComposition/components/TimerCreationContent/TimerCreationContentMenuItem.tsx b/src/page/TableComposition/components/TimerCreationContent/TimerCreationContentMenuItem.tsx index b935ba27..76f604b6 100644 --- a/src/page/TableComposition/components/TimerCreationContent/TimerCreationContentMenuItem.tsx +++ b/src/page/TableComposition/components/TimerCreationContent/TimerCreationContentMenuItem.tsx @@ -18,7 +18,9 @@ export default function TimerCreationContentItem({ className, )} > -

{title}

+

+ {title} +

{children}
); diff --git a/src/page/TableComposition/hook/useTableFrom.tsx b/src/page/TableComposition/hook/useTableFrom.tsx index a82bffd5..9f3ec4ff 100644 --- a/src/page/TableComposition/hook/useTableFrom.tsx +++ b/src/page/TableComposition/hook/useTableFrom.tsx @@ -6,6 +6,12 @@ import { DebateInfo, DebateTableData, TimeBoxInfo } from '../../../type/type'; import useAddDebateTable from '../../../hooks/mutations/useAddDebateTable'; import { usePutDebateTable } from '../../../hooks/mutations/usePutDebateTable'; import { isGuestFlow } from '../../../util/sessionStorage'; +import { useTranslation } from 'react-i18next'; +import { + buildLangPath, + DEFAULT_LANG, + isSupportedLang, +} from '../../../util/languageRouting'; const useTableFrom = ( currentStep: TableCompositionStep, @@ -13,6 +19,9 @@ const useTableFrom = ( ) => { const navigationType = useNavigationType(); const navigate = useNavigate(); + const { i18n } = useTranslation(); + const currentLang = i18n.resolvedLanguage ?? i18n.language; + const lang = isSupportedLang(currentLang) ? currentLang : DEFAULT_LANG; // Set default value as CUSTOMIZE to prevent users to make PARLIAMENTARY tables const [formData, setFormData, removeValue] = @@ -79,7 +88,7 @@ const useTableFrom = ( const { mutate: onAddTable, isPending: isAddingTable } = useAddDebateTable( (tableId) => { removeValue(); - navigate(`/overview/customize/${tableId}`); + navigate(buildLangPath(`/overview/customize/${tableId}`, lang)); }, ); @@ -87,9 +96,9 @@ const useTableFrom = ( usePutDebateTable((tableId) => { removeValue(); if (isGuestFlow()) { - navigate(`/overview/customize/guest`); + navigate(buildLangPath(`/overview/customize/guest`, lang)); } else { - navigate(`/overview/customize/${tableId}`); + navigate(buildLangPath(`/overview/customize/${tableId}`, lang)); } }); diff --git a/src/page/TableListPage/TableListPage.tsx b/src/page/TableListPage/TableListPage.tsx index 6dc2bb18..98bb030f 100644 --- a/src/page/TableListPage/TableListPage.tsx +++ b/src/page/TableListPage/TableListPage.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import DefaultLayout from '../../layout/defaultLayout/DefaultLayout'; import HeaderTitle from '../../components/HeaderTitle/HeaderTitle'; import { Suspense } from 'react'; @@ -5,12 +6,13 @@ import LoadingIndicator from '../../components/LoadingIndicator/LoadingIndicator import TableListPageContent from './components/TableListPageContent'; export default function TableListPage() { + const { t } = useTranslation(); return ( - + diff --git a/src/page/TableListPage/components/Table.tsx b/src/page/TableListPage/components/Table.tsx index e50a858e..32f1cfd3 100644 --- a/src/page/TableListPage/components/Table.tsx +++ b/src/page/TableListPage/components/Table.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { useState } from 'react'; import { DebateTable } from '../../../type/type'; import { IoArrowForward } from 'react-icons/io5'; @@ -23,6 +24,7 @@ export default function Table({ onEdit, onClick, }: TableProps) { + const { t } = useTranslation(); const [isHovered, setIsHovered] = useState(false); const { openShareModal, TableShareModal } = useTableShare(id); const { openModal, closeModal, ModalWrapper } = useModal({ @@ -57,7 +59,7 @@ export default function Table({ e.stopPropagation(); onEdit(); }} - aria-label="수정하기" + aria-label={t('수정하기')} > @@ -68,7 +70,7 @@ export default function Table({ e.stopPropagation(); openModal(); }} - aria-label="삭제하기" + aria-label={t('삭제하기')} > @@ -79,7 +81,7 @@ export default function Table({ e.stopPropagation(); openShareModal(); }} - aria-label="공유하기" + aria-label={t('공유하기')} > @@ -107,16 +109,17 @@ export default function Table({

- 주제 | {agenda} + {t('주제 | ')} + {agenda}

closeModal() }} + left={{ text: t('취소'), onClick: () => closeModal() }} right={{ - text: '삭제', + text: t('삭제'), isBold: true, onClick: () => { onDelete(); @@ -125,7 +128,9 @@ export default function Table({ }} >
-

테이블을 삭제하시겠습니까?

+

+ {t('테이블을 삭제하시겠습니까?')} +

{name}

diff --git a/src/page/TableListPage/components/TableListPageContent.tsx b/src/page/TableListPage/components/TableListPageContent.tsx index 96a376a4..fd30ed68 100644 --- a/src/page/TableListPage/components/TableListPageContent.tsx +++ b/src/page/TableListPage/components/TableListPageContent.tsx @@ -1,20 +1,34 @@ import { useNavigate } from 'react-router-dom'; +import { useTranslation } from 'react-i18next'; +import { + buildLangPath, + DEFAULT_LANG, + isSupportedLang, +} from '../../../util/languageRouting'; import { useDeleteDebateTable } from '../../../hooks/mutations/useDeleteDebateTable'; import { useGetDebateTableList } from '../../../hooks/query/useGetDebateTableList'; import { DebateTable } from '../../../type/type'; import Table from './Table'; export default function TableListPageContent() { + const { i18n } = useTranslation(); const { data } = useGetDebateTableList(); const { mutate: deleteCustomizeTable } = useDeleteDebateTable(); const navigate = useNavigate(); + const currentLang = i18n.resolvedLanguage ?? i18n.language; + const lang = isSupportedLang(currentLang) ? currentLang : DEFAULT_LANG; // TODO: have to delete the query param 'type' const onEdit = (tableId: number) => { - navigate(`/composition?mode=edit&tableId=${tableId}&type=CUSTOMIZE`); + navigate( + buildLangPath( + `/composition?mode=edit&tableId=${tableId}&type=CUSTOMIZE`, + lang, + ), + ); }; // TODO: have to delete the string 'customize' from the URL const onClick = (tableId: number) => { - navigate(`/overview/customize/${tableId}`); + navigate(buildLangPath(`/overview/customize/${tableId}`, lang)); }; const onDelete = (tableId: number) => { deleteCustomizeTable({ tableId }); @@ -24,7 +38,7 @@ export default function TableListPageContent() {
{/** Button that adds new table */} )} @@ -167,10 +181,18 @@ export default function TableOverviewPage() { disabled={isLoading} onClick={() => { if (isGuestFlow()) { - navigate(`/composition?mode=edit&type=CUSTOMIZE`); + navigate( + buildLangPath( + `/composition?mode=edit&type=CUSTOMIZE`, + lang, + ), + ); } else { navigate( - `/composition?mode=edit&tableId=${tableId}&type=CUSTOMIZE`, + buildLangPath( + `/composition?mode=edit&tableId=${tableId}&type=CUSTOMIZE`, + lang, + ), ); } }} @@ -190,7 +212,7 @@ export default function TableOverviewPage() { onClick={handleStartDebate} > - 토론하기 + {t('토론하기')}
diff --git a/src/page/TableOverviewPage/components/TeamSelectionModal/TeamSelectionModal.tsx b/src/page/TableOverviewPage/components/TeamSelectionModal/TeamSelectionModal.tsx index 7d89a5cb..c680b949 100644 --- a/src/page/TableOverviewPage/components/TeamSelectionModal/TeamSelectionModal.tsx +++ b/src/page/TableOverviewPage/components/TeamSelectionModal/TeamSelectionModal.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { useState, useEffect, useMemo, useCallback, useRef } from 'react'; import Cointoss from '../../../../assets/teamSelection/cointoss.png'; import CoinFront from '../../../../assets/teamSelection/coinfront.png'; @@ -19,6 +20,7 @@ export default function TeamSelectionModal({ initialCoinState, onCoinStateChange, }: TeamSelectionModalProps) { + const { t } = useTranslation(); const [coinState, setCoinState] = useState(initialCoinState); const hasResultSoundPlayedRef = useRef(false); @@ -104,8 +106,8 @@ export default function TeamSelectionModal({
{coinState === 'initial' && (
-

- 팀별로
동전의 앞 / 뒷면 중
하나를 선택해 주세요. +

+ {t('팀별로\n동전의 앞 / 뒷면 중\n하나를 선택해 주세요.')}

)} @@ -116,14 +118,14 @@ export default function TeamSelectionModal({
동전
- 동전 던지는 중... + {t('동전 던지는 중...')}
@@ -135,12 +137,12 @@ export default function TeamSelectionModal({
동전
- {coinState === 'front' ? '앞' : '뒤'} + {coinState === 'front' ? t('앞') : t('뒤')}
@@ -154,7 +156,7 @@ export default function TeamSelectionModal({ className="sm:text-lg sm:py-4 w-full bg-brand py-3 text-[22px] font-semibold hover:bg-brand-hover md:py-5 md:text-xl lg:py-[21px] lg:text-[22px]" onClick={() => updateCoinState('tossing')} > - 동전 던지기 + {t('동전 던지기')} )} {(coinState === 'front' || coinState === 'back') && ( @@ -163,13 +165,13 @@ export default function TeamSelectionModal({ className="sm:text-lg sm:py-4 w-full border-[2px] border-default-disabled/hover bg-default-white py-3 text-lg font-semibold hover:bg-default-disabled/hover md:py-5 md:text-xl lg:py-[21px] lg:text-[22px]" onClick={handleEdit} > - 토론 정보 수정하기 + {t('토론 정보 수정하기')} )} diff --git a/src/page/TableSharingPage/TableSharingPage.tsx b/src/page/TableSharingPage/TableSharingPage.tsx index 1ebb7c7e..a02bb51c 100644 --- a/src/page/TableSharingPage/TableSharingPage.tsx +++ b/src/page/TableSharingPage/TableSharingPage.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { useEffect } from 'react'; import { useNavigate, useSearchParams } from 'react-router-dom'; import { useModal } from '../../hooks/useModal'; @@ -13,6 +14,11 @@ import { PostDebateTableResponseType, } from '../../apis/responses/debateTable'; import { isGuestFlow } from '../../util/sessionStorage'; +import { + buildLangPath, + DEFAULT_LANG, + isSupportedLang, +} from '../../util/languageRouting'; function getDecodedDataOrNull( encodedData: string | null, @@ -44,7 +50,10 @@ function getDecodedDataOrNull( * - 로그인 상태가 아닐 경우, 비회원 플로우 실행 */ export default function TableSharingPage() { + const { t, i18n } = useTranslation(); const navigate = useNavigate(); + const currentLang = i18n.resolvedLanguage ?? i18n.language; + const lang = isSupportedLang(currentLang) ? currentLang : DEFAULT_LANG; const { openModal, closeModal, ModalWrapper } = useModal({ isCloseButtonExist: false, }); @@ -66,19 +75,19 @@ export default function TableSharingPage() { (value: PostDebateTableResponseType) => { closeModal(); sessionDebateTableRepository.deleteTable(); - navigate(`/overview/customize/${value.id}`); + navigate(buildLangPath(`/overview/customize/${value.id}`, lang)); }, // 저장 실패 시 () => { closeModal(); - throw new Error('공유받은 테이블을 저장하지 못했어요.'); + throw new Error(t('공유받은 테이블을 저장하지 못했어요.')); }, ); }, () => { // 세션 저장소에서 테이블을 불러오지 못할 때 closeModal(); - throw new Error('테이블 데이터를 확인할 수 없어요.'); + throw new Error(t('테이블 데이터를 확인할 수 없어요.')); }, ); } else { @@ -90,22 +99,22 @@ export default function TableSharingPage() { } else { // On this case, getRepository() will automatically decide what data source to use if (!decodedData) { - throw new Error('공유된 데이터가 비어 있어요.'); + throw new Error(t('공유된 데이터가 비어 있어요.')); } sessionDebateTableRepository.deleteTable(); sessionDebateTableRepository.addTable(decodedData).then( () => { // On success - navigate(`/overview/customize/guest`); + navigate(buildLangPath(`/overview/customize/guest`, lang)); }, () => { // Handling error - throw new Error('공유된 토론 테이블을 DB에 저장하지 못했어요.'); + throw new Error(t('공유된 토론 테이블을 DB에 저장하지 못했어요.')); }, ); } - }, [decodedData, navigate, openModal, closeModal, encodedData]); + }, [decodedData, navigate, openModal, closeModal, encodedData, lang]); return ( <> @@ -115,7 +124,8 @@ export default function TableSharingPage() { size={'size-24'} color={'text-brand-main'} /> -

데이터를 처리하고 있습니다...

+ +

{t('데이터를 처리하고 있습니다...')}

@@ -127,11 +137,11 @@ export default function TableSharingPage() { (value) => { closeModal(); sessionDebateTableRepository.deleteTable(); - navigate(`/overview/customize/${value.id}`); + navigate(buildLangPath(`/overview/customize/${value.id}`, lang)); }, () => { closeModal(); - throw new Error('공유받은 테이블을 저장하지 못했어요.'); + throw new Error(t('공유받은 테이블을 저장하지 못했어요.')); }, ); }} @@ -139,11 +149,11 @@ export default function TableSharingPage() { sessionDebateTableRepository.addTable(decodedData).then( () => { closeModal(); - navigate('/overview/customize/guest'); + navigate(buildLangPath('/overview/customize/guest', lang)); }, () => { closeModal(); - throw new Error('공유받은 데이터 처리에 실패했어요.'); + throw new Error(t('공유받은 데이터 처리에 실패했어요.')); }, ); }} diff --git a/src/page/TableSharingPage/components/LoggedInStoreDBModal.tsx b/src/page/TableSharingPage/components/LoggedInStoreDBModal.tsx index d87250a8..68259f08 100644 --- a/src/page/TableSharingPage/components/LoggedInStoreDBModal.tsx +++ b/src/page/TableSharingPage/components/LoggedInStoreDBModal.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import DialogModal from '../../../components/DialogModal/DialogModal'; /** @@ -20,17 +21,18 @@ export default function LoggedInStoreDBModal({ onSave, onContinue, }: LoggedInStoreDBModalProps) { + const { t } = useTranslation(); return ( onContinue() }} + left={{ text: t('비회원 상태로 토론하기'), onClick: () => onContinue() }} right={{ - text: '저장하기', + text: t('저장하기'), onClick: () => onSave(), isBold: true, }} >

- 공유받은 토론 시간표를 내 시간표 목록에 저장하시겠어요? + {t('공유받은 토론 시간표를 내 시간표 목록에 저장하시겠어요?')}

); diff --git a/src/page/TimerPage/FeedbackTimerPage.tsx b/src/page/TimerPage/FeedbackTimerPage.tsx index d1f488cd..9caf9dda 100644 --- a/src/page/TimerPage/FeedbackTimerPage.tsx +++ b/src/page/TimerPage/FeedbackTimerPage.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { useFeedbackTimer } from './hooks/useFeedbackTimer'; import FeedbackTimer from './components/FeedbackTimer'; import DefaultLayout from '../../layout/defaultLayout/DefaultLayout'; @@ -5,13 +6,14 @@ import GoToDebateEndButton from '../../components/GoToDebateEndButton/GoToDebate import { useParams } from 'react-router-dom'; export default function FeedbackTimerPage() { + const { t } = useTranslation(); const feedbackTimerInstance = useFeedbackTimer(); const { id } = useParams(); const tableId = Number(id); // 테이블 ID 검증 로직 if (!id || isNaN(tableId)) { - throw new Error('테이블 ID가 올바르지 않습니다.'); + throw new Error(t('테이블 ID가 올바르지 않습니다.')); } return ( diff --git a/src/page/TimerPage/TimerPage.tsx b/src/page/TimerPage/TimerPage.tsx index c5efdfa5..17ea4cb9 100644 --- a/src/page/TimerPage/TimerPage.tsx +++ b/src/page/TimerPage/TimerPage.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { useParams } from 'react-router-dom'; import DefaultLayout from '../../layout/defaultLayout/DefaultLayout'; import HeaderTableInfo from '../../components/HeaderTableInfo/HeaderTableInfo'; @@ -19,6 +20,7 @@ import DTVolume from '../../components/icons/Volume'; import VolumeBar from '../../components/VolumeBar/VolumeBar'; export default function TimerPage() { + const { t } = useTranslation(); const pathParams = useParams(); const tableId = Number(pathParams.id); const { @@ -72,7 +74,7 @@ export default function TimerPage() { @@ -83,7 +85,7 @@ export default function TimerPage() { @@ -92,8 +94,8 @@ export default function TimerPage() { @@ -88,7 +90,7 @@ export default function CompactTimeoutTimer({ } }} > - -1분 + {t('-1분')} { @@ -97,7 +99,7 @@ export default function CompactTimeoutTimer({ } }} > - -30초 + {t('-30초')} {/* 재생 및 일시정지 버튼 */} @@ -122,12 +124,12 @@ export default function CompactTimeoutTimer({ state.setTimer((state.timer ?? 0) + 30)} > - +30초 + {t('+30초')} state.setTimer((state.timer ?? 0) + 60)} > - +1분 + {t('+1분')}
diff --git a/src/page/TimerPage/components/FeedbackTimer.tsx b/src/page/TimerPage/components/FeedbackTimer.tsx index 21981ff0..f033d1ab 100644 --- a/src/page/TimerPage/components/FeedbackTimer.tsx +++ b/src/page/TimerPage/components/FeedbackTimer.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import TimerController from './TimerController'; import { Formatting } from '../../../util/formatting'; import CircularTimer from './CircularTimer'; @@ -10,16 +11,10 @@ interface FeedbackTimerProps { feedbackTimerInstance: FeedbackTimerLogics; } -const timeAdjustments = [ - { label: '-5분', value: -300 }, - { label: '-1분', value: -60 }, - { label: '+1분', value: 60 }, - { label: '+5분', value: 300 }, -]; - export default function FeedbackTimer({ feedbackTimerInstance, }: FeedbackTimerProps) { + const { t } = useTranslation(); const { timer, isRunning, @@ -30,6 +25,13 @@ export default function FeedbackTimer({ defaultTimer, } = feedbackTimerInstance; + const timeAdjustments = [ + { label: t('-5분'), value: -300 }, + { label: t('-1분'), value: -60 }, + { label: t('+1분'), value: 60 }, + { label: t('+5분'), value: 300 }, + ]; + const totalTime = timer ?? 0; const { minutes, seconds } = Formatting.formatSecondsToMinutes(totalTime); const minute = Formatting.formatTwoDigits(minutes); @@ -55,7 +57,9 @@ export default function FeedbackTimer({ {/* 좌측 영역 */}
{/* 제목 */} -

피드백 타이머

+

+ {t('피드백 타이머')} +

{/* 시간 조절 버튼 */}
diff --git a/src/page/TimerPage/components/FirstUseToolTip.tsx b/src/page/TimerPage/components/FirstUseToolTip.tsx index 98d5c3ba..ae830a66 100644 --- a/src/page/TimerPage/components/FirstUseToolTip.tsx +++ b/src/page/TimerPage/components/FirstUseToolTip.tsx @@ -1,3 +1,4 @@ +import { Trans, useTranslation } from 'react-i18next'; import { PropsWithChildren } from 'react'; import { LuKeyboard } from 'react-icons/lu'; import { MdOutlineTimer } from 'react-icons/md'; @@ -11,6 +12,7 @@ interface FirstUseToolTipProps { } export default function FirstUseToolTip({ onClose }: FirstUseToolTipProps) { + const { t } = useTranslation(); return (
-

자유토론 타이머 조작

+

{t('자유토론 타이머 조작')}

- 재생 버튼을 눌러 타이머를 시작 + {t('재생 버튼을 눌러 타이머를 시작')} - 타이머가 동작 중일 때, 일시정지 버튼을 눌러 타이머를 일시정지 + {t('타이머가 동작 중일 때, 일시정지 버튼을 눌러 타이머를 일시정지')} - 초기화 버튼을 눌러 타이머를 원래 시간으로 초기화 - 마우스를 사용하여 타이머를 클릭 시, 진영 변경 - 타이머 동작 중 진영이 변경될 경우, 상대 진영의 타이머로 전환과 - 동시에 시작 + {t('초기화 버튼을 눌러 타이머를 원래 시간으로 초기화')} + + + {t('마우스를 사용하여 타이머를 클릭 시, 진영 변경')} + + + {t( + '타이머 동작 중 진영이 변경될 경우, 상대 진영의 타이머로 전환과 동시에 시작', + )}
@@ -39,17 +46,19 @@ export default function FirstUseToolTip({ onClose }: FirstUseToolTipProps) {
-

일반 토론 타이머 조작

+

{t('일반 토론 타이머 조작')}

- 재생 버튼을 눌러 타이머를 시작 + {t('재생 버튼을 눌러 타이머를 시작')} + + {t('타이머가 동작 중일 때, 일시정지 버튼을 눌러 타이머를 일시정지')} + - 타이머가 동작 중일 때, 일시정지 버튼을 눌러 타이머를 일시정지 + {t('초기화 버튼을 눌러 타이머를 원래 시간으로 초기화')} - 초기화 버튼을 눌러 타이머를 원래 시간으로 초기화 - 작전 시간 사용 버튼을 눌러 별도의 작전 시간 타이머 사용 가능 + {t('작전 시간 사용 버튼을 눌러 별도의 작전 시간 타이머 사용 가능')}
@@ -57,34 +66,46 @@ export default function FirstUseToolTip({ onClose }: FirstUseToolTipProps) {
-

키보드 조작

+

{t('키보드 조작')}

- 스페이스 바로 타이머를 시작 및 일시정지 - R 키로 타이머 초기화 - 좌우 방향키로 이전/다음 차례로 이동 - A/L 키로 토론 진영 변경 - Enter 키로 상대 진영으로 변경 + {t('스페이스 바로 타이머를 시작 및 일시정지')} + {t('R 키로 타이머 초기화')} + {t('좌우 방향키로 이전/다음 차례로 이동')} + {t('A/L 키로 토론 진영 변경')} + {t('Enter 키로 상대 진영으로 변경')}
-

전체 화면

+

{t('전체 화면')}

- 화면 우측 상단 헤더의 전체 화면 버튼 - - 으로 활성화 + , + ]} + /> - 화면 우측 상단 헤더의 전체 화면 닫기 버튼 - - 또는 ESC 키를 눌러 전체 화면 비활성화 + , + ]} + />
@@ -95,7 +116,7 @@ export default function FirstUseToolTip({ onClose }: FirstUseToolTipProps) { className="w-fit justify-end rounded-2xl bg-neutral-50 px-6 py-2 font-bold text-neutral-900 hover:bg-neutral-300" onClick={() => onClose()} > - 닫기 + {t('닫기')}
diff --git a/src/page/TimerPage/components/LoginAndStoreModal.tsx b/src/page/TimerPage/components/LoginAndStoreModal.tsx index 71316dde..15383678 100644 --- a/src/page/TimerPage/components/LoginAndStoreModal.tsx +++ b/src/page/TimerPage/components/LoginAndStoreModal.tsx @@ -1,7 +1,13 @@ +import { useTranslation } from 'react-i18next'; import { ComponentType, ReactNode } from 'react'; import DialogModal from '../../../components/DialogModal/DialogModal'; import { oAuthLogin } from '../../../util/googleAuth'; import { useNavigate } from 'react-router-dom'; +import { + buildLangPath, + DEFAULT_LANG, + isSupportedLang, +} from '../../../util/languageRouting'; interface LoginAndStoreModalProps { Wrapper: ComponentType<{ @@ -15,20 +21,23 @@ export function LoginAndStoreModal({ Wrapper, onClose, }: LoginAndStoreModalProps) { + const { t, i18n } = useTranslation(); const navigate = useNavigate(); + const currentLang = i18n.resolvedLanguage ?? i18n.language; + const lang = isSupportedLang(currentLang) ? currentLang : DEFAULT_LANG; return ( { onClose(); - navigate('/overview/customize/guest'); + navigate(buildLangPath('/overview/customize/guest', lang)); }, }} right={{ - text: '네', + text: t('네'), onClick: () => { onClose(); oAuthLogin(); @@ -36,9 +45,8 @@ export function LoginAndStoreModal({ isBold: true, }} > -
- 토론을 끝내셨군요!
- 지금까지의 시간표를 로그인하고 저장할까요? +
+ {t('토론을 끝내셨군요!\n지금까지의 시간표를 로그인하고 저장할까요?')}
diff --git a/src/page/TimerPage/components/NormalTimer.tsx b/src/page/TimerPage/components/NormalTimer.tsx index c74af4f2..0ea538af 100644 --- a/src/page/TimerPage/components/NormalTimer.tsx +++ b/src/page/TimerPage/components/NormalTimer.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { TimeBoxInfo } from '../../../type/type'; import TimerController from './TimerController'; import { Formatting } from '../../../util/formatting'; @@ -7,6 +8,7 @@ import DTDebate from '../../../components/icons/Debate'; import CompactTimeoutTimer from './CompactTimeoutTimer'; import useCircularTimerAnimation from '../hooks/useCircularTimerAnimation'; import useBreakpoint from '../../../hooks/useBreakpoint'; +import { normalizeSpeechTypeKey } from '../../../util/speechType'; type NormalTimerInstance = { timer: number | null; @@ -33,6 +35,11 @@ export default function NormalTimer({ item, teamName, }: NormalTimerProps) { + const { t } = useTranslation(); + const getSpeechTypeLabel = (value: string) => { + const normalized = normalizeSpeechTypeKey(value); + return normalized ? t(normalized) : value; + }; const { timer, isAdditionalTimerOn, @@ -48,7 +55,7 @@ export default function NormalTimer({ Math.floor(Math.abs(totalTime) / 60), ); const second = Formatting.formatTwoDigits(Math.abs(totalTime % 60)); - const titleText = item.speechType; + const titleText = getSpeechTypeLabel(item.speechType); const rawProgress = timer !== null && item.time ? ((item.time - timer) / item.time) * 100 : 0; const progressMotionValue = useCircularTimerAnimation(rawProgress, isRunning); @@ -76,9 +83,9 @@ export default function NormalTimer({

- {teamName && teamName + ' 팀'} - {teamName && item.speaker && ' | '} - {item.speaker && item.speaker + ' 토론자'} + {teamName && t('{{team}} 팀', { team: teamName })} + {item.speaker && + t(' | {{speaker}} 토론자', { speaker: item.speaker })}

)} @@ -108,7 +115,7 @@ export default function NormalTimer({ }, )} > - 작전 시간 사용 + {t('작전 시간 사용')} )} diff --git a/src/page/TimerPage/components/TimeBasedTimer.tsx b/src/page/TimerPage/components/TimeBasedTimer.tsx index f72ae9dd..7384a574 100644 --- a/src/page/TimerPage/components/TimeBasedTimer.tsx +++ b/src/page/TimerPage/components/TimeBasedTimer.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import TimerController from './TimerController'; import { Formatting } from '../../../util/formatting'; import KeyboardKeyA from '../../../assets/keyboard/keyboard_key_A.png'; @@ -33,6 +34,7 @@ export default function TimeBasedTimer({ teamName, item, }: TimeBasedTimerProps) { + const { t } = useTranslation(); const { totalTimer, speakingTimer, @@ -113,7 +115,7 @@ export default function TimeBasedTimer({ {prosCons @@ -138,7 +140,7 @@ export default function TimeBasedTimer({ {speakingTimer !== null && (

- 전체 시간 + {t('전체 시간')}

@@ -159,7 +161,7 @@ export default function TimeBasedTimer({ { 'bg-camp-red': prosCons === 'CONS' }, )} > - 현재 시간 + {t('현재 시간')}

diff --git a/src/page/TimerPage/components/TimerController.tsx b/src/page/TimerPage/components/TimerController.tsx index 87765264..429b6c5e 100644 --- a/src/page/TimerPage/components/TimerController.tsx +++ b/src/page/TimerPage/components/TimerController.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { GiPauseButton } from 'react-icons/gi'; import DTReset from '../../../components/icons/Reset'; import DTPlay from '../../../components/icons/Play'; @@ -21,6 +22,7 @@ export default function TimerController({ stance, boxType, }: TimerControllerProps) { + const { t } = useTranslation(); const bgClass = boxType === 'FEEDBACK' ? 'bg-brand' @@ -34,7 +36,7 @@ export default function TimerController({ {/* 초기화 버튼 */}

diff --git a/src/page/VoteParticipationPage/VoteParticipationPage.tsx b/src/page/VoteParticipationPage/VoteParticipationPage.tsx index c786aabc..5341ecde 100644 --- a/src/page/VoteParticipationPage/VoteParticipationPage.tsx +++ b/src/page/VoteParticipationPage/VoteParticipationPage.tsx @@ -1,3 +1,4 @@ +import { useTranslation } from 'react-i18next'; import { useState } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import clsx from 'clsx'; @@ -11,15 +12,18 @@ import ErrorIndicator from '../../components/ErrorIndicator/ErrorIndicator'; import LoadingIndicator from '../../components/LoadingIndicator/LoadingIndicator'; import usePostVoterPollInfo from '../../hooks/mutations/usePostVoterPollInfo'; import { TeamKey } from '../../type/type'; - -const TEAM_LABEL = { - PROS: '찬성팀', - CONS: '반대팀', -} as const; +import { + buildLangPath, + DEFAULT_LANG, + isSupportedLang, +} from '../../util/languageRouting'; export default function VoteParticipationPage() { + const { t, i18n } = useTranslation(); const { id: pollIdParam } = useParams(); const navigate = useNavigate(); + const currentLang = i18n.resolvedLanguage ?? i18n.language; + const lang = isSupportedLang(currentLang) ? currentLang : DEFAULT_LANG; // 1) pollId 파싱 + 유효성 체크 const pollId = pollIdParam ? Number(pollIdParam) : NaN; const isValidPollId = !!pollIdParam && !Number.isNaN(pollId); @@ -40,7 +44,9 @@ export default function VoteParticipationPage() { const isSubmitDisabled = participantName.trim().length === 0 || selectedTeam === null; - const { mutate } = usePostVoterPollInfo(() => navigate(`/vote/end`)); + const { mutate } = usePostVoterPollInfo(() => + navigate(buildLangPath('/vote/end', lang)), + ); const handleSubmit = () => { if (isSubmitDisabled) return; @@ -71,8 +77,10 @@ export default function VoteParticipationPage() { return ( - navigate('/')}> - 유효하지 않은 투표 링크입니다. + navigate(buildLangPath('/', lang))} + > + {t('유효하지 않은 투표 링크입니다.')} @@ -88,7 +96,7 @@ export default function VoteParticipationPage() {

- 승패투표 + {t('승패투표')}

@@ -98,7 +106,7 @@ export default function VoteParticipationPage() { htmlFor="participant-name" className="sm:text-xl whitespace-nowrap text-lg font-semibold text-default-black" > - 참여자 : + {t('참여자 :')} setSelectedTeam('PROS')} /> + - {'투표완료'} + {t('투표완료')} closeModal(), isBold: true, }} right={{ - text: '제출하기', + text: t('제출하기'), onClick: () => { handleSubmit(); closeModal(); @@ -163,8 +172,12 @@ export default function VoteParticipationPage() { }} >
-

투표를 제출하시겠습니까?

-

(제출 후에는 변경이 불가능 합니다.)

+

+ {t('투표를 제출하시겠습니까?')} +

+

+ {t('(제출 후에는 변경이 불가능 합니다.)')} +

diff --git a/src/routes/LanguageWrapper.tsx b/src/routes/LanguageWrapper.tsx index cf7dc113..ec14426d 100644 --- a/src/routes/LanguageWrapper.tsx +++ b/src/routes/LanguageWrapper.tsx @@ -1,20 +1,43 @@ import { useEffect } from 'react'; -import { Outlet, useParams } from 'react-router-dom'; +import { Outlet, useLocation, useNavigate, useParams } from 'react-router-dom'; import i18n from '../i18n'; - -const supportedLangs = ['ko', 'en']; +import { + DEFAULT_LANG, + buildLangPath, + getSelectedLangFromRoute, + isSupportedLang, + stripDefaultLangFromPath, +} from '../util/languageRouting'; export default function LanguageWrapper() { const { lang } = useParams(); + const location = useLocation(); + const navigate = useNavigate(); useEffect(() => { - // URL에 lang 파라미터가 없으면 'ko'를 기본값으로 사용 - const currentLang = lang || 'ko'; + const selectedLang = getSelectedLangFromRoute(lang, location.pathname); + const currentLang = i18n.resolvedLanguage ?? i18n.language; + + if (lang === DEFAULT_LANG) { + const nextPath = stripDefaultLangFromPath(location.pathname); + const nextUrl = `${nextPath || '/'}${location.search}${location.hash}`; + navigate(nextUrl, { replace: true }); + return; + } + + if (!lang && isSupportedLang(currentLang) && currentLang !== DEFAULT_LANG) { + const nextPath = buildLangPath(location.pathname, currentLang); + if (nextPath !== location.pathname) { + const nextUrl = `${nextPath}${location.search}${location.hash}`; + navigate(nextUrl, { replace: true }); + return; + } + } - if (supportedLangs.includes(currentLang) && i18n.language !== currentLang) { - i18n.changeLanguage(currentLang); + if (isSupportedLang(selectedLang) && i18n.language !== selectedLang) { + i18n.changeLanguage(selectedLang); } - }, [lang]); + }, [lang, location.hash, location.pathname, location.search, navigate]); return ; } diff --git a/src/routes/ProtectedRoute.tsx b/src/routes/ProtectedRoute.tsx index 4f9b08c2..e2372309 100644 --- a/src/routes/ProtectedRoute.tsx +++ b/src/routes/ProtectedRoute.tsx @@ -1,17 +1,26 @@ import { Navigate, useLocation } from 'react-router-dom'; - import { PropsWithChildren } from 'react'; +import { useTranslation } from 'react-i18next'; import { getAccessToken } from '../util/accessToken'; +import { + buildLangPath, + DEFAULT_LANG, + isSupportedLang, +} from '../util/languageRouting'; export default function ProtectedRoute(props: PropsWithChildren) { const { children } = props; + const { i18n } = useTranslation(); const isAuthenticated = getAccessToken() || false; const location = useLocation(); + const currentLang = i18n.resolvedLanguage ?? i18n.language; + const lang = isSupportedLang(currentLang) ? currentLang : DEFAULT_LANG; + const homePath = buildLangPath('/home', lang); return isAuthenticated ? ( children ) : ( - + ); } diff --git a/src/util/arrayEncoding.ts b/src/util/arrayEncoding.ts index a4fca303..515d4db1 100644 --- a/src/util/arrayEncoding.ts +++ b/src/util/arrayEncoding.ts @@ -21,11 +21,14 @@ export function decodeDebateTableData(encodedData: string): DebateTableData { } export function createTableShareUrl( - baseUrl: string, + baseUrl: string | undefined, data: DebateTableData, ): string { const encoded = encodeDebateTableData(data); - return `${baseUrl}/share?data=${encoded}`; + const resolvedBaseUrl = + baseUrl && baseUrl.trim() !== '' ? baseUrl : window.location.origin; + const normalizedBaseUrl = resolvedBaseUrl.replace(/\/+$/, ''); + return `${normalizedBaseUrl}/share?data=${encoded}`; } export function extractTableShareUrl(url: string): DebateTableData | null { diff --git a/src/util/languageRouting.ts b/src/util/languageRouting.ts new file mode 100644 index 00000000..901ce4e0 --- /dev/null +++ b/src/util/languageRouting.ts @@ -0,0 +1,57 @@ +const SUPPORTED_LANGS = ['ko', 'en'] as const; +const DEFAULT_LANG = 'ko'; + +type SupportedLang = (typeof SUPPORTED_LANGS)[number]; + +const isSupportedLang = (value?: string): value is SupportedLang => + !!value && SUPPORTED_LANGS.includes(value as SupportedLang); + +const getLangFromPath = (pathname: string): SupportedLang | undefined => { + const pathSegments = pathname.split('/'); + return isSupportedLang(pathSegments[1]) ? pathSegments[1] : undefined; +}; + +const getSelectedLang = (langParam?: string): SupportedLang => + isSupportedLang(langParam) ? langParam : DEFAULT_LANG; + +const getSelectedLangFromRoute = ( + langParam: string | undefined, + pathname: string, +): SupportedLang => getSelectedLang(langParam ?? getLangFromPath(pathname)); + +const stripDefaultLangFromPath = (pathname: string): string => { + const updated = pathname.replace(new RegExp(`^/${DEFAULT_LANG}(?=/|$)`), '/'); + return updated === '/' ? updated : updated.replace(/\/+$/, ''); +}; + +const buildLangPath = (pathname: string, lang: SupportedLang): string => { + const pathSegments = pathname.split('/'); + const hasLangSegment = + pathSegments.length > 1 && isSupportedLang(pathSegments[1]); + + if (lang === DEFAULT_LANG) { + if (hasLangSegment) { + pathSegments.splice(1, 1); + return pathSegments.join('/') || '/'; + } + return pathname; + } + + if (hasLangSegment) { + pathSegments[1] = lang; + return pathSegments.join('/'); + } + + return `/${lang}${pathname === '/' ? '' : pathname}`; +}; + +export { + SUPPORTED_LANGS, + DEFAULT_LANG, + isSupportedLang, + getLangFromPath, + getSelectedLang, + getSelectedLangFromRoute, + stripDefaultLangFromPath, + buildLangPath, +}; diff --git a/src/util/speechType.ts b/src/util/speechType.ts new file mode 100644 index 00000000..5f78f1a0 --- /dev/null +++ b/src/util/speechType.ts @@ -0,0 +1,29 @@ +export type SpeechTypeKey = + | 'OPENING' + | 'REBUTTAL' + | 'TIMEOUT' + | 'CLOSING' + | 'CROSS_EXAM' + | 'CUSTOM' + | 'OPEN_DEBATE'; + +export const SPEECH_TYPE_RECORD: Record = { + OPENING: '입론', + CLOSING: '최종발언', + CUSTOM: '직접 입력', + REBUTTAL: '반론', + CROSS_EXAM: '교차조사', + TIMEOUT: '작전시간', + OPEN_DEBATE: '자유토론', +} as const; + +const normalize = (value: string) => value.replace(/\s+/g, '').trim(); + +const SPEECH_TYPE_LABEL_BY_NORMALIZED = new Map( + Object.values(SPEECH_TYPE_RECORD).map((label) => [normalize(label), label]), +); + +export const normalizeSpeechTypeKey = (value: string): string | null => { + const compact = normalize(value); + return SPEECH_TYPE_LABEL_BY_NORMALIZED.get(compact) ?? null; +}; diff --git a/src/util/validateUserAgent.ts b/src/util/validateUserAgent.ts deleted file mode 100644 index e0d44b38..00000000 --- a/src/util/validateUserAgent.ts +++ /dev/null @@ -1,8 +0,0 @@ -export const isEmbeddedWebView = (): boolean => { - const userAgent = navigator.userAgent.toLowerCase(); - // console.log(userAgent); - - return /fban|fbav|instagram|kakaotalk|line|wechat|snapchat|twitter/i.test( - userAgent, - ); -}; From 16a9466767a68fba94deaef48a7f87a3a6d63462 Mon Sep 17 00:00:00 2001 From: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com> Date: Tue, 17 Feb 2026 17:09:07 +0900 Subject: [PATCH 2/8] =?UTF-8?q?[CHORE]=20=ED=8C=A8=ED=82=A4=EC=A7=80=20?= =?UTF-8?q?=EB=B2=84=EC=A0=84=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=20(#4?= =?UTF-8?q?14)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: 비교적 안전한 업데이트 적용 * chore: 중간 수준 위험도의 업데이트 적용 * chore: 다소 높은 수준의 위험도 적용 * chore: React 버전 불일치 수정 * chore: Storybook 마이너 업데이트 진행 --- package-lock.json | 6894 ++++++++--------- package.json | 60 +- public/mockServiceWorker.js | 168 +- .../SmallIconContainer/SmallIconContainer.tsx | 3 +- .../mutations/usePreventDuplicateMutation.ts | 4 +- 5 files changed, 3272 insertions(+), 3857 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7e082515..83a76e88 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,12 +8,12 @@ "name": "frontend", "version": "0.0.0", "dependencies": { - "@tanstack/eslint-plugin-query": "^5.62.9", - "@tanstack/react-query": "^5.62.12", - "axios": "^1.7.9", + "@tanstack/eslint-plugin-query": "^5.91.4", + "@tanstack/react-query": "^5.90.20", + "axios": "^1.13.4", "clsx": "^2.1.1", - "framer-motion": "^12.23.11", - "i18next": "^25.5.2", + "framer-motion": "^12.29.3", + "i18next": "^25.8.0", "i18next-browser-languagedetector": "^8.2.0", "i18next-http-backend": "^3.0.2", "pako": "^2.1.0", @@ -21,9 +21,9 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "react-ga4": "^2.1.0", - "react-i18next": "^15.7.3", - "react-icons": "^5.4.0", - "react-router-dom": "^7.1.0", + "react-i18next": "^16.5.4", + "react-icons": "^5.5.0", + "react-router-dom": "^7.13.0", "vite-bundle-visualizer": "^1.2.1" }, "devDependencies": { @@ -33,28 +33,28 @@ "@babel/types": "^7.28.4", "@chromatic-com/storybook": "^3.2.2", "@eslint/js": "^9.15.0", - "@storybook/addon-essentials": "^8.6.0", - "@storybook/addon-interactions": "^8.6.0", - "@storybook/addon-onboarding": "^8.6.0", - "@storybook/blocks": "^8.6.0", - "@storybook/react": "^8.6.0", - "@storybook/react-vite": "^8.6.0", - "@storybook/test": "^8.6.0", + "@storybook/addon-essentials": "^8.6.15", + "@storybook/addon-interactions": "^8.6.15", + "@storybook/addon-onboarding": "^8.6.15", + "@storybook/blocks": "^8.6.15", + "@storybook/react": "^8.6.15", + "@storybook/react-vite": "^8.6.15", + "@storybook/test": "^8.6.15", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.1.0", "@testing-library/user-event": "^14.5.2", "@types/babel__traverse": "^7.28.0", "@types/glob": "^8.1.0", - "@types/jest": "^29.5.14", - "@types/node": "^24.6.0", + "@types/jest": "^30.0.0", + "@types/node": "^25.2.0", "@types/pako": "^2.0.3", - "@types/react": "^18.3.12", - "@types/react-dom": "^18.3.1", - "@vitejs/plugin-react": "^4.3.4", + "@types/react": "^18.3.27", + "@types/react-dom": "^18.3.7", + "@vitejs/plugin-react": "^5.1.3", "autoprefixer": "^10.4.20", "chromatic": "^11.20.2", - "eslint": "^9.17.0", + "eslint": "^9.39.2", "eslint-config-prettier": "^9.1.0", "eslint-import-resolver-node": "^0.3.9", "eslint-plugin-import": "^2.31.0", @@ -65,30 +65,37 @@ "eslint-plugin-react-refresh": "^0.4.14", "eslint-plugin-storybook": "^0.11.1", "eslint-plugin-tailwindcss": "^3.17.5", - "glob": "^11.0.3", - "globals": "^15.12.0", - "jsdom": "^25.0.1", - "msw": "^2.7.0", + "glob": "^13.0.0", + "globals": "^17.3.0", + "jsdom": "^28.0.0", + "msw": "^2.12.7", "msw-storybook-addon": "^2.0.4", "postcss": "^8.4.49", - "prettier": "^3.4.2", + "prettier": "^3.8.1", "prettier-plugin-tailwindcss": "^0.6.9", - "storybook": "^8.6.0", + "storybook": "^8.6.15", "stylelint": "^16.11.0", "stylelint-config-recommended": "^14.0.1", "stylelint-config-tailwindcss": "^0.0.7", "tailwindcss": "^3.4.16", "tsx": "^4.21.0", - "typescript": "^5.7.2", + "typescript": "5.7", "typescript-eslint": "^8.15.0", - "vite": "^6.0.1", - "vitest": "^2.1.8" + "vite": "^6.4.1", + "vitest": "^4.0.18" } }, + "node_modules/@acemir/cssom": { + "version": "0.9.31", + "resolved": "https://registry.npmjs.org/@acemir/cssom/-/cssom-0.9.31.tgz", + "integrity": "sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==", + "dev": true, + "license": "MIT" + }, "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.4", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz", + "integrity": "sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==", "dev": true, "license": "MIT" }, @@ -105,28 +112,69 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "node_modules/@asamuzakjp/css-color": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-4.1.1.tgz", + "integrity": "sha512-B0Hv6G3gWGMn0xKJ0txEi/jM5iFpT3MfDxmhZFb4W047GvytCf1DHQ1D69W3zHI4yWe2aTZAA0JnbMZ7Xc8DuQ==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, + "@csstools/css-calc": "^2.1.4", + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "lru-cache": "^11.2.4" + } + }, + "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "dev": true, + "license": "BlueOak-1.0.0", "engines": { - "node": ">=6.0.0" + "node": "20 || >=22" + } + }, + "node_modules/@asamuzakjp/dom-selector": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-6.7.7.tgz", + "integrity": "sha512-8CO/UQ4tzDd7ula+/CVimJIVWez99UJlbMyIgk8xOnhAVPKLnBZmUFYVgugS441v2ZqUq5EnSh6B0Ua0liSFAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@asamuzakjp/nwsapi": "^2.3.9", + "bidi-js": "^1.0.3", + "css-tree": "^3.1.0", + "is-potential-custom-element-name": "^1.0.1", + "lru-cache": "^11.2.5" + } + }, + "node_modules/@asamuzakjp/dom-selector/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" } }, + "node_modules/@asamuzakjp/nwsapi": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/@asamuzakjp/nwsapi/-/nwsapi-2.3.9.tgz", + "integrity": "sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==", + "dev": true, + "license": "MIT" + }, "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, @@ -135,9 +183,9 @@ } }, "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.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", "dev": true, "license": "MIT", "engines": { @@ -145,22 +193,22 @@ } }, "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==", - "dev": true, - "license": "MIT", - "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/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", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -175,15 +223,25 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/generator": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", - "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.0.tgz", + "integrity": "sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.3", - "@babel/types": "^7.28.2", + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -193,14 +251,14 @@ } }, "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.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -209,6 +267,16 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/helper-globals": { "version": "7.28.0", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", @@ -220,29 +288,29 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" @@ -252,9 +320,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.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", "dev": true, "license": "MIT", "engines": { @@ -272,9 +340,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", "engines": { @@ -282,9 +350,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, "license": "MIT", "engines": { @@ -292,27 +360,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.1.tgz", - "integrity": "sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", - "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.28.4" + "@babel/types": "^7.29.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -322,13 +390,13 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", - "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -338,13 +406,13 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", - "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -354,42 +422,42 @@ } }, "node_modules/@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", - "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.4", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", "debug": "^4.3.1" }, "engines": { @@ -397,90 +465,84 @@ } }, "node_modules/@babel/types": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", - "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@bundled-es-modules/cookie": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@bundled-es-modules/cookie/-/cookie-2.0.1.tgz", - "integrity": "sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw==", + "node_modules/@cacheable/memory": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.0.7.tgz", + "integrity": "sha512-RbxnxAMf89Tp1dLhXMS7ceft/PGsDl1Ip7T20z5nZ+pwIAsQ1p2izPjVG69oCLv/jfQ7HDPHTWK0c9rcAWXN3A==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "cookie": "^0.7.2" + "@cacheable/utils": "^2.3.3", + "@keyv/bigmap": "^1.3.0", + "hookified": "^1.14.0", + "keyv": "^5.5.5" } }, - "node_modules/@bundled-es-modules/cookie/node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "node_modules/@cacheable/memory/node_modules/@keyv/bigmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@keyv/bigmap/-/bigmap-1.3.1.tgz", + "integrity": "sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@bundled-es-modules/statuses": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@bundled-es-modules/statuses/-/statuses-1.0.1.tgz", - "integrity": "sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==", - "dev": true, - "license": "ISC", "dependencies": { - "statuses": "^2.0.1" + "hashery": "^1.4.0", + "hookified": "^1.15.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "keyv": "^5.6.0" } }, - "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==", + "node_modules/@cacheable/memory/node_modules/keyv": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "@types/tough-cookie": "^4.0.5", - "tough-cookie": "^4.1.4" + "@keyv/serialize": "^1.1.1" } }, - "node_modules/@bundled-es-modules/tough-cookie/node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "node_modules/@cacheable/utils": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.3.3.tgz", + "integrity": "sha512-JsXDL70gQ+1Vc2W/KUFfkAJzgb4puKwwKehNLuB+HrNKWf91O736kGfxn4KujXCCSuh6mRRL4XEB0PkAFjWS0A==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" + "hashery": "^1.3.0", + "keyv": "^5.5.5" } }, - "node_modules/@bundled-es-modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "node_modules/@cacheable/utils/node_modules/keyv": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 4.0.0" + "dependencies": { + "@keyv/serialize": "^1.1.1" } }, "node_modules/@chromatic-com/storybook": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@chromatic-com/storybook/-/storybook-3.2.2.tgz", - "integrity": "sha512-xmXt/GW0hAPbzNTrxYuVo43Adrtjue4DeVrsoIIEeJdGaPNNeNf+DHMlJKOBdlHmCnFUoe9R/0mLM9zUp5bKWw==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@chromatic-com/storybook/-/storybook-3.2.7.tgz", + "integrity": "sha512-fCGhk4cd3VA8RNg55MZL5CScdHqljsQcL9g6Ss7YuobHpSo9yytEWNdgMd5QxAHSPBlLGFHjnSmliM3G/BeBqw==", "dev": true, "license": "MIT", "dependencies": { @@ -498,10 +560,82 @@ "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0" } }, + "node_modules/@csstools/color-helpers": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", + "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", + "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", + "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.1.0", + "@csstools/css-calc": "^2.1.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", - "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", "dev": true, "funding": [ { @@ -518,13 +652,30 @@ "node": ">=18" }, "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.3" + "@csstools/css-tokenizer": "^3.0.4" } }, + "node_modules/@csstools/css-syntax-patches-for-csstree": { + "version": "1.0.26", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.26.tgz", + "integrity": "sha512-6boXK0KkzT5u5xOgF6TKB+CLq9SOpEGmkZw0g5n9/7yg85wab3UzSxB8TxhLJ31L4SGJ6BCFRw/iftTha1CJXA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0" + }, "node_modules/@csstools/css-tokenizer": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", - "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", "dev": true, "funding": [ { @@ -542,9 +693,9 @@ } }, "node_modules/@csstools/media-query-list-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.2.tgz", - "integrity": "sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz", + "integrity": "sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ==", "dev": true, "funding": [ { @@ -561,25 +712,48 @@ "node": ">=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3" + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" } }, "node_modules/@dual-bundle/import-meta-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", - "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.2.1.tgz", + "integrity": "sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==", "dev": true, "license": "MIT", "funding": { "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/JounQin" } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", "cpu": [ "ppc64" ], @@ -594,9 +768,9 @@ } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", "cpu": [ "arm" ], @@ -611,9 +785,9 @@ } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", "cpu": [ "arm64" ], @@ -628,9 +802,9 @@ } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", "cpu": [ "x64" ], @@ -645,9 +819,9 @@ } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", "cpu": [ "arm64" ], @@ -662,9 +836,9 @@ } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", "cpu": [ "x64" ], @@ -679,9 +853,9 @@ } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", "cpu": [ "arm64" ], @@ -696,9 +870,9 @@ } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", "cpu": [ "x64" ], @@ -713,9 +887,9 @@ } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", "cpu": [ "arm" ], @@ -730,9 +904,9 @@ } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", "cpu": [ "arm64" ], @@ -747,9 +921,9 @@ } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", "cpu": [ "ia32" ], @@ -764,9 +938,9 @@ } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", "cpu": [ "loong64" ], @@ -781,9 +955,9 @@ } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", "cpu": [ "mips64el" ], @@ -798,9 +972,9 @@ } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", "cpu": [ "ppc64" ], @@ -815,9 +989,9 @@ } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", "cpu": [ "riscv64" ], @@ -832,9 +1006,9 @@ } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", "cpu": [ "s390x" ], @@ -849,9 +1023,9 @@ } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", "cpu": [ "x64" ], @@ -866,9 +1040,9 @@ } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", "cpu": [ "arm64" ], @@ -883,9 +1057,9 @@ } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", "cpu": [ "x64" ], @@ -900,9 +1074,9 @@ } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", "cpu": [ "arm64" ], @@ -917,9 +1091,9 @@ } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", "cpu": [ "x64" ], @@ -934,9 +1108,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.0.tgz", - "integrity": "sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", "cpu": [ "arm64" ], @@ -951,9 +1125,9 @@ } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", "cpu": [ "x64" ], @@ -968,9 +1142,9 @@ } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", "cpu": [ "arm64" ], @@ -985,9 +1159,9 @@ } }, "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", "cpu": [ "ia32" ], @@ -1002,9 +1176,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "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==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", "cpu": [ "x64" ], @@ -1019,9 +1193,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.4.3" @@ -1036,34 +1210,22 @@ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/config-array": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", - "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.6", + "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.2" }, @@ -1071,19 +1233,44 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/config-helpers": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz", - "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/core": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", - "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", "license": "Apache-2.0", "dependencies": { "@types/json-schema": "^7.0.15" @@ -1093,9 +1280,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", + "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", "license": "MIT", "dependencies": { "ajv": "^6.12.4", @@ -1104,7 +1291,7 @@ "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", + "js-yaml": "^4.1.1", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, @@ -1115,6 +1302,16 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", @@ -1127,10 +1324,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/js": { - "version": "9.31.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.31.0.tgz", - "integrity": "sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==", + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", + "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1140,60 +1349,65 @@ } }, "node_modules/@eslint/object-schema": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/plugin-kit": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz", - "integrity": "sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.15.1", + "@eslint/core": "^0.17.0", "levn": "^0.4.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "license": "Apache-2.0", + "node_modules/@exodus/bytes": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.11.0.tgz", + "integrity": "sha512-wO3vd8nsEHdumsXrjGO/v4p6irbg7hy9kvIeR6i2AwylZSk4HJdWgL0FNaVquW1+AweJcdvU1IEpuIWk/WaPnA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.18.0" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@noble/hashes": "^1.8.0 || ^2.0.0" + }, + "peerDependenciesMeta": { + "@noble/hashes": { + "optional": true + } } }, - "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" - }, "engines": { "node": ">=18.18.0" } }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", "license": "Apache-2.0", - "engines": { - "node": ">=18.18" + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "engines": { + "node": ">=18.18.0" } }, "node_modules/@humanwhocodes/module-importer": { @@ -1222,108 +1436,70 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@inquirer/ansi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", + "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/@inquirer/confirm": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.1.tgz", - "integrity": "sha512-vVLSbGci+IKQvDOtzpPTCOiEJCNidHcAq9JYVoWTW0svb5FiwSLotkM+JXNXejfjnzVYV9n0DTBythl9+XgTxg==", + "version": "5.1.21", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", + "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.1.2", - "@inquirer/type": "^3.0.2" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { "node": ">=18" }, "peerDependencies": { "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/core": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.2.tgz", - "integrity": "sha512-bHd96F3ezHg1mf/J0Rb4CV8ndCN0v28kUlrHqP7+ECm1C/A+paB7Xh2lbMk6x+kweQC+rZOxM/YeKikzxco8bQ==", + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", + "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/figures": "^1.0.9", - "@inquirer/type": "^3.0.2", - "ansi-escapes": "^4.3.2", + "@inquirer/ansi": "^1.0.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", "cli-width": "^4.1.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" + "yoctocolors-cjs": "^2.1.3" }, "engines": { "node": ">=18" - } - }, - "node_modules/@inquirer/core/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@inquirer/core/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@inquirer/core/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@inquirer/core/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@inquirer/core/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "peerDependencies": { + "@types/node": ">=18" }, - "engines": { - "node": ">=8" + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "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.15", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", "dev": true, "license": "MIT", "engines": { @@ -1331,9 +1507,9 @@ } }, "node_modules/@inquirer/type": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.2.tgz", - "integrity": "sha512-ZhQ4TvhwHZF+lGhQ2O/rsjo80XoZR5/5qhOY3t6FJuX5XBg5Be8YzYTvaUGJnc12AUGI2nr4QSUE4PhKSigx7g==", + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", + "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", "dev": true, "license": "MIT", "engines": { @@ -1341,6 +1517,11 @@ }, "peerDependencies": { "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@isaacs/balanced-match": { @@ -1384,48 +1565,132 @@ "node": ">=12" } }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@jest/diff-sequences": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", + "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", "dev": true, "license": "MIT", "dependencies": { - "jest-get-type": "^29.6.3" + "@types/node": "*", + "jest-regex-util": "30.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.27.8" + "@sinclair/typebox": "^0.34.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@joshwooding/vite-plugin-react-docgen-typescript": { @@ -1449,20 +1714,10 @@ } } }, - "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "dev": true, "license": "ISC", "dependencies": { @@ -1480,22 +1735,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", @@ -1516,22 +1755,6 @@ "node": ">=12" } }, - "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", @@ -1560,6 +1783,17 @@ "@jridgewell/trace-mapping": "^0.3.24" } }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", @@ -1571,9 +1805,9 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "dev": true, "license": "MIT" }, @@ -1588,10 +1822,17 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@keyv/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==", + "dev": true, + "license": "MIT" + }, "node_modules/@mdx-js/react": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.0.tgz", - "integrity": "sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.1.tgz", + "integrity": "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==", "dev": true, "license": "MIT", "dependencies": { @@ -1607,9 +1848,9 @@ } }, "node_modules/@mswjs/interceptors": { - "version": "0.37.3", - "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.37.3.tgz", - "integrity": "sha512-USvgCL/uOGFtVa6SVyRrC8kIAedzRohxIXN5LISlg5C5vLZCn7dgMFVSNhSF9cuBEFrm/O2spDWEZeMnw4ZXYg==", + "version": "0.40.0", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.40.0.tgz", + "integrity": "sha512-EFd6cVbHsgLa6wa4RljGj6Wk75qoHxUSyc5asLyyPSyuhIcdS2Q3Phw6ImS1q+CkALthJRShiYfKANcQMuMqsQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1628,6 +1869,7 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", @@ -1641,6 +1883,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -1650,6 +1893,7 @@ "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, "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", @@ -1696,22 +1940,29 @@ } }, "node_modules/@pkgr/core": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/unts" + "url": "https://opencollective.com/pkgr" } }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.2.tgz", + "integrity": "sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==", + "dev": true, + "license": "MIT" + }, "node_modules/@rollup/pluginutils": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.3.tgz", - "integrity": "sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -1731,23 +1982,10 @@ } } }, - "node_modules/@rollup/pluginutils/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.2.tgz", - "integrity": "sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", + "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==", "cpu": [ "arm" ], @@ -1759,9 +1997,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.2.tgz", - "integrity": "sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz", + "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==", "cpu": [ "arm64" ], @@ -1773,9 +2011,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.2.tgz", - "integrity": "sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz", + "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==", "cpu": [ "arm64" ], @@ -1787,9 +2025,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.2.tgz", - "integrity": "sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz", + "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==", "cpu": [ "x64" ], @@ -1801,9 +2039,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.2.tgz", - "integrity": "sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz", + "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==", "cpu": [ "arm64" ], @@ -1815,9 +2053,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.2.tgz", - "integrity": "sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz", + "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==", "cpu": [ "x64" ], @@ -1829,9 +2067,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.2.tgz", - "integrity": "sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz", + "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==", "cpu": [ "arm" ], @@ -1843,9 +2081,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.2.tgz", - "integrity": "sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz", + "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==", "cpu": [ "arm" ], @@ -1857,9 +2095,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.2.tgz", - "integrity": "sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz", + "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==", "cpu": [ "arm64" ], @@ -1871,9 +2109,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.2.tgz", - "integrity": "sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz", + "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==", "cpu": [ "arm64" ], @@ -1884,10 +2122,10 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.2.tgz", - "integrity": "sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==", + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz", + "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==", "cpu": [ "loong64" ], @@ -1898,12 +2136,12 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.2.tgz", - "integrity": "sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==", + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz", + "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==", "cpu": [ - "ppc64" + "loong64" ], "dev": true, "license": "MIT", @@ -1912,12 +2150,12 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.2.tgz", - "integrity": "sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==", + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz", + "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==", "cpu": [ - "riscv64" + "ppc64" ], "dev": true, "license": "MIT", @@ -1926,12 +2164,12 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.2.tgz", - "integrity": "sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==", + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz", + "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==", "cpu": [ - "riscv64" + "ppc64" ], "dev": true, "license": "MIT", @@ -1940,12 +2178,12 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.2.tgz", - "integrity": "sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==", + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz", + "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==", "cpu": [ - "s390x" + "riscv64" ], "dev": true, "license": "MIT", @@ -1954,12 +2192,12 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.2.tgz", - "integrity": "sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==", + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz", + "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==", "cpu": [ - "x64" + "riscv64" ], "dev": true, "license": "MIT", @@ -1968,10 +2206,38 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.2.tgz", - "integrity": "sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==", + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz", + "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", + "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz", + "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==", "cpu": [ "x64" ], @@ -1982,10 +2248,38 @@ "linux" ] }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz", + "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz", + "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.2.tgz", - "integrity": "sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz", + "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==", "cpu": [ "arm64" ], @@ -1997,9 +2291,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.2.tgz", - "integrity": "sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz", + "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==", "cpu": [ "ia32" ], @@ -2010,10 +2304,24 @@ "win32" ] }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz", + "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.2.tgz", - "integrity": "sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz", + "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==", "cpu": [ "x64" ], @@ -2032,16 +2340,23 @@ "license": "MIT" }, "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "version": "0.34.48", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", + "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", "dev": true, "license": "MIT" }, "node_modules/@storybook/addon-actions": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.6.0.tgz", - "integrity": "sha512-lI03stcI28wN8trjp7zx0PzN1NRxSpU/551slzEhSM0tghcLxcfLZR/wh4Jp0T68Obj7z//YXPttZ9PBFajs6w==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.6.15.tgz", + "integrity": "sha512-zc600PBJqP9hCyRY5escKgKf6Zt9kdNZfm+Jwb46k5/NMSO4tNVeOPGBFxW9kSsIYk8j55sNske+Yh60G+8bcw==", "dev": true, "license": "MIT", "dependencies": { @@ -2056,13 +2371,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.0" + "storybook": "^8.6.15" } }, "node_modules/@storybook/addon-backgrounds": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.6.0.tgz", - "integrity": "sha512-MbMPjuC19jJBXqQext8rENBACLKujDn+MuxIbNYMmn2ljzeYFp87tVxzlCB7XY7rV0zvkHxH8N/zDnPl7pBTcQ==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.6.15.tgz", + "integrity": "sha512-W36uEzMWPO/K3+8vV1R/GozdaFrIix0qqmxX0qoAT6/o4+zqHiloZkTF+2iuUTx/VmuztLcAoSaPDh8UPy3Q+g==", "dev": true, "license": "MIT", "dependencies": { @@ -2075,13 +2390,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.0" + "storybook": "^8.6.15" } }, "node_modules/@storybook/addon-controls": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.6.0.tgz", - "integrity": "sha512-oc+mssxmNY+D26jyJ+IZ1u8bmzveCO2wqpUl6vtLM5MruchZAHzHqa2ZIn+H9KOEqcKlYVDF5n6oEuprcnrsdg==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.6.15.tgz", + "integrity": "sha512-CgV8WqGxQrqSKs1a/Y1v4mrsBJXGFmO5u4kvdhPbftRVfln11W4Hvc1SFmgXwGvmcwekAKH79Uwwkjhj3l6gzA==", "dev": true, "license": "MIT", "dependencies": { @@ -2094,20 +2409,20 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.0" + "storybook": "^8.6.15" } }, "node_modules/@storybook/addon-docs": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.6.0.tgz", - "integrity": "sha512-ytYn5ec2Tp62t9emjXgm4Ds+eG7SiSg/vNeOwM6L1lM2UCV2/XdzntbqlUb/FHehSXIv9eRJDSe5BBzPieUUaw==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.6.15.tgz", + "integrity": "sha512-Nm5LlxwAmGQRkCUY36FhtCLz21C+5XlydF7/bkBOHsf08p2xR5MNLMSPrIhte/PY7ne9viNUCm1d3d3LiWnkKg==", "dev": true, "license": "MIT", "dependencies": { "@mdx-js/react": "^3.0.0", - "@storybook/blocks": "8.6.0", - "@storybook/csf-plugin": "8.6.0", - "@storybook/react-dom-shim": "8.6.0", + "@storybook/blocks": "8.6.15", + "@storybook/csf-plugin": "8.6.15", + "@storybook/react-dom-shim": "8.6.15", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "ts-dedent": "^2.0.0" @@ -2117,25 +2432,25 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.0" + "storybook": "^8.6.15" } }, "node_modules/@storybook/addon-essentials": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.6.0.tgz", - "integrity": "sha512-T3R9Q1hq6eJKy758gQgYEuAYxcddGZ8eGBLIyIJEgzpwsUnN5mF+rIqx8LoWxpWu/xiKzg17LqCBnJbLGkRZUA==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.6.15.tgz", + "integrity": "sha512-BIcE/7t5WXDXs4+zycm7MLNPHA2219ImkKO70IH7uxGM4cm7jDuJ5v0crkAvNeeRVsZixT2P2L9EfUfi1cFCQg==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/addon-actions": "8.6.0", - "@storybook/addon-backgrounds": "8.6.0", - "@storybook/addon-controls": "8.6.0", - "@storybook/addon-docs": "8.6.0", - "@storybook/addon-highlight": "8.6.0", - "@storybook/addon-measure": "8.6.0", - "@storybook/addon-outline": "8.6.0", - "@storybook/addon-toolbars": "8.6.0", - "@storybook/addon-viewport": "8.6.0", + "@storybook/addon-actions": "8.6.15", + "@storybook/addon-backgrounds": "8.6.15", + "@storybook/addon-controls": "8.6.15", + "@storybook/addon-docs": "8.6.15", + "@storybook/addon-highlight": "8.6.15", + "@storybook/addon-measure": "8.6.15", + "@storybook/addon-outline": "8.6.15", + "@storybook/addon-toolbars": "8.6.15", + "@storybook/addon-viewport": "8.6.15", "ts-dedent": "^2.0.0" }, "funding": { @@ -2143,13 +2458,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.0" + "storybook": "^8.6.15" } }, "node_modules/@storybook/addon-highlight": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.6.0.tgz", - "integrity": "sha512-xgSUzNV8ZpNDJ35bLz7wfg/q7/O/C5845wbZsn+PobUOWpOMOKeZwbGkO3Fh4+CWKeFuMhUpFiZSWkNgT+bV0g==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.6.15.tgz", + "integrity": "sha512-lOu44QTVw5nR8kzag0ukxWnLq48oy2MqMUDuMVFQWPBKX8ayhmgl2OiEcvAOVNsieTHrr2W4CkP7FFvF4D0vlg==", "dev": true, "license": "MIT", "dependencies": { @@ -2160,19 +2475,19 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.0" + "storybook": "^8.6.15" } }, "node_modules/@storybook/addon-interactions": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.6.0.tgz", - "integrity": "sha512-AgobFrUxmKgGHKeOismuLZdXlndP3ZDquHztiomfMiu01xOqNPxG0+xoCcegvftU7hKE+TlBRzhjCWg/bFz4LQ==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.6.15.tgz", + "integrity": "sha512-9qgu7jbPjzFm44UF57D6puK+/86maE26gY+06Thz1NpTBCjVIl2fTZ/CA00iXb5+12f3JmSF0w3XEjsqcrzd3w==", "dev": true, "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.6.0", - "@storybook/test": "8.6.0", + "@storybook/instrumenter": "8.6.15", + "@storybook/test": "8.6.15", "polished": "^4.2.2", "ts-dedent": "^2.2.0" }, @@ -2181,13 +2496,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.0" + "storybook": "^8.6.15" } }, "node_modules/@storybook/addon-measure": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.6.0.tgz", - "integrity": "sha512-ogc+VNLyXq8hGfI4Fkmh9i3JbxfiIViiINdBoldD6K0gId3yaqqrSwQ2vWhYIbfUuz+PsMxsoNS7MD4EiRXhPg==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.6.15.tgz", + "integrity": "sha512-F78fJlmuXMulTphFp9Iqx7I1GsbmNLboChnW/VqR6nRZx5o9cdGjc8IaEyXVFXZ7k1pnSvdaP5ndFmzkcPxQdg==", "dev": true, "license": "MIT", "dependencies": { @@ -2199,13 +2514,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.0" + "storybook": "^8.6.15" } }, "node_modules/@storybook/addon-onboarding": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-8.6.0.tgz", - "integrity": "sha512-UOOvYQlHKdY31YJwR+ECX7e/BNuhp4alcJmx1fuI7m6tXqTGLtioeMJEreh2jV3FDaaDqL4DL/1UfYXqNRMp+A==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-8.6.15.tgz", + "integrity": "sha512-HAsGUQxpwP4MoyaCuZcmLpSMVTXC6PSic2QY6156ZfFMiobD+W0vIaxuDw65iBNUJ2vWRmrQsR8YgmfyWMQ7qA==", "dev": true, "license": "MIT", "funding": { @@ -2213,13 +2528,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.0" + "storybook": "^8.6.15" } }, "node_modules/@storybook/addon-outline": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.6.0.tgz", - "integrity": "sha512-IWxrNNZOk5rtOdnLNyK7gpqi0g0rMGYl5ju37Glbfa7iG2J1VKofG2CbkUpVyVY0uiTXqkKkhOKlc9zELhLQSg==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.6.15.tgz", + "integrity": "sha512-rpGRLajsjBdpbggPmdNZbftF68zQwsYLosu7YiUSBaR4dm+gQ+7m5nLLI/MjZDHbt2nJRW94yXpn7dUw2CDF6g==", "dev": true, "license": "MIT", "dependencies": { @@ -2231,13 +2546,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.0" + "storybook": "^8.6.15" } }, "node_modules/@storybook/addon-toolbars": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.6.0.tgz", - "integrity": "sha512-Mg0V9RrnDt/IQe+zjggGS+4Otkv4YFqyjL/ygwnV6aKGgzL5zFpC+5rf8MeBEvNeol9+THC/XltN/Xf+jbtLEQ==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.6.15.tgz", + "integrity": "sha512-NfHAbOOu5qI9SQq6jJr2VfinaZpHrmz3bavBeUppxCxM+zfPuNudK8MlMOOuyPBPAoUqcDSoKZgNfCkOBQcyGg==", "dev": true, "license": "MIT", "funding": { @@ -2245,13 +2560,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.0" + "storybook": "^8.6.15" } }, "node_modules/@storybook/addon-viewport": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.6.0.tgz", - "integrity": "sha512-sVDF3gIjGdvfBdCM/jEBu6Nd5GlqITKBtdySiQdNDl5JI4ak77ZM+T+VQmJxB4sIqvCjWzCbQqUC45nymVObug==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.6.15.tgz", + "integrity": "sha512-ylTK4sehAeVTwcYMZyisyP3xX+m43NjJrQHKc3DAII3Z3RFqTv9l6CUMogM2/8mysTzoo8xYVtQB6hX7zB8Dew==", "dev": true, "license": "MIT", "dependencies": { @@ -2262,13 +2577,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.0" + "storybook": "^8.6.15" } }, "node_modules/@storybook/blocks": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.6.0.tgz", - "integrity": "sha512-3PNxlB5Ooj8CIhttbDxeV6kW7ui+2GEdTngtqhnsUHVjzeTKpilsk2lviOeUzqlyq5FDK+rhpZ3L3DJ9pDvioA==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.6.15.tgz", + "integrity": "sha512-nc5jQkvPo0EirteHsrmcx9on/0lGQ8F4lUNky7kN2I5WM8Frr3cPTeRoAvzjUkOwrqt/vm3g+T4zSbmDq/OEDA==", "dev": true, "license": "MIT", "dependencies": { @@ -2282,7 +2597,7 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "storybook": "^8.6.0" + "storybook": "^8.6.15" }, "peerDependenciesMeta": { "react": { @@ -2294,13 +2609,13 @@ } }, "node_modules/@storybook/builder-vite": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-8.6.0.tgz", - "integrity": "sha512-Bdc5fXLJbPdQo2eJ3dDNhfhWuQOME2KWvrixnsfo57IOhDa5B81jVcDBQIIgB9K1NQDRGyaWfYCcKZqy16yPlQ==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-8.6.15.tgz", + "integrity": "sha512-9Y05/ndZE6/eI7ZIUCD/QtH2htRIUs9j1gxE6oW0zRo9TJO1iqxfLNwgzd59KEkId7gdZxPei0l+LGTUGXYKRg==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/csf-plugin": "8.6.0", + "@storybook/csf-plugin": "8.6.15", "browser-assert": "^1.2.1", "ts-dedent": "^2.0.0" }, @@ -2309,14 +2624,14 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.0", + "storybook": "^8.6.15", "vite": "^4.0.0 || ^5.0.0 || ^6.0.0" } }, "node_modules/@storybook/components": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.6.0.tgz", - "integrity": "sha512-k5MQAuLPt5KOaa5J4QvX/WKucaiFTMJiEX5lsSaY6qON6Sx8PtnLQxVwWF7BIMW/jLpd94BUxrVjVrQKlwoLKQ==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.6.15.tgz", + "integrity": "sha512-+9GVKXPEW8Kl9zvNSTm9+VrJtx/puMZiO7gxCML63nK4aTWJXHQr4t9YUoGammSBM3AV1JglsKm6dBgJEeCoiA==", "dev": true, "license": "MIT", "funding": { @@ -2328,13 +2643,13 @@ } }, "node_modules/@storybook/core": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.0.tgz", - "integrity": "sha512-UzVo2sNz8PZuDp++/R9NBtjupSXhvxS8lptYcwtk51b6MvcM4AL/b4V3PGryOVJDru9sMwz+pzaj7Jg8RVFMJA==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.15.tgz", + "integrity": "sha512-VFpKcphNurJpSC4fpUfKL3GTXVoL53oytghGR30QIw5jKWwaT50HVbTyb41BLOUuZjmMhUQA8weiQEew6RX0gw==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/theming": "8.6.0", + "@storybook/theming": "8.6.15", "better-opn": "^3.0.2", "browser-assert": "^1.2.1", "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", @@ -2359,23 +2674,10 @@ } } }, - "node_modules/@storybook/core/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@storybook/csf": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.12.tgz", - "integrity": "sha512-9/exVhabisyIVL0VxTCxo01Tdm8wefIXKXfltAPTSr8cbLn5JAxGQ6QV3mjdecLGEOucfoVhAKtJfVHxEK1iqw==", + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.13.tgz", + "integrity": "sha512-7xOOwCLGB3ebM87eemep89MYRFTko+D8qE7EdAAq74lgdqRR5cOUtYWJLjO2dLtP94nqoOdHJo6MdLLKzg412Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2383,9 +2685,9 @@ } }, "node_modules/@storybook/csf-plugin": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.6.0.tgz", - "integrity": "sha512-Cd7LL4XQ8ccUDzJGxVyuzgsYuRYS5LVL4/ZNmAxikz9LtVrVFI/4RgFa5MvlQZc0twreoLtztFskziny8OiJUQ==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.6.15.tgz", + "integrity": "sha512-ZLz/mtOoE1Jj2lE4pK3U7MmYrv5+lot3mGtwxGb832tcABMc97j9O+reCVxZYc7DeFbBuuEdMT9rBL/O3kXYmw==", "dev": true, "license": "MIT", "dependencies": { @@ -2396,7 +2698,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.0" + "storybook": "^8.6.15" } }, "node_modules/@storybook/global": { @@ -2407,9 +2709,9 @@ "license": "MIT" }, "node_modules/@storybook/icons": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.3.2.tgz", - "integrity": "sha512-t3xcbCKkPvqyef8urBM0j/nP6sKtnlRkVgC+8JTbTAZQjaTmOjes3byEgzs89p4B/K6cJsg9wLW2k3SknLtYJw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.6.0.tgz", + "integrity": "sha512-hcFZIjW8yQz8O8//2WTIXylm5Xsgc+lW9ISLgUk1xGmptIJQRdlhVIXCpSyLrQaaRiyhQRaVg7l3BD9S216BHw==", "dev": true, "license": "MIT", "engines": { @@ -2421,9 +2723,9 @@ } }, "node_modules/@storybook/instrumenter": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.6.0.tgz", - "integrity": "sha512-eEY/Hfa3Vj5Nv4vHRHlSqjoyW6oAKNK3rKIXfL/eawQwb7rKhzijDLG5YBH44Hh7dEPIqUp0LEdgpyIY7GXezg==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.6.15.tgz", + "integrity": "sha512-TvHR/+yyIAOp/1bLulFai2kkhIBtAlBw7J6Jd9DKyInoGhTWNE1G1Y61jD5GWXX29AlwaHfzGUaX5NL1K+FJpg==", "dev": true, "license": "MIT", "dependencies": { @@ -2435,13 +2737,13 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.0" + "storybook": "^8.6.15" } }, "node_modules/@storybook/manager-api": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.6.0.tgz", - "integrity": "sha512-ddBibYrO3yQCdtZBqQYqfABjR9eS+llvt2NFDajfyQw+zmuNIZfw4BDGKH1WHE4wm/kXmlFFhPHXaHgAPTRPfQ==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.6.15.tgz", + "integrity": "sha512-ZOFtH821vFcwzECbFYFTKtSVO96Cvwwg45dMh3M/9bZIdN7klsloX7YNKw8OKvwE6XLFLsi2OvsNNcmTW6g88w==", "dev": true, "license": "MIT", "funding": { @@ -2453,9 +2755,9 @@ } }, "node_modules/@storybook/preview-api": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.6.0.tgz", - "integrity": "sha512-c/sZj4Tb+DtdCndcjoFUneUwl2XUdQckqN4nf1SuIJ/BXRbAexlD04fvPJ4wzmwUNg8EQF7BhTWVNDa1RvJz2w==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.6.15.tgz", + "integrity": "sha512-oqsp8f7QekB9RzpDqOXZQcPPRXXd/mTsnZSdAAQB/pBVqUpC9h/y5hgovbYnJ6DWXcpODbMwH+wbJHZu5lvm+w==", "dev": true, "license": "MIT", "funding": { @@ -2467,18 +2769,18 @@ } }, "node_modules/@storybook/react": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.6.0.tgz", - "integrity": "sha512-go0KhCFcOhxkTdaMCxeuJxmc/5CaiaO76+SBzIoPIMWEh9tZQmKb+vojdKcFZswHjZV3zA1uJFUzyympspRffA==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.6.15.tgz", + "integrity": "sha512-hdnhlJg+YkpPMOw2hvK7+mhdxAbguA+TFTIAzVV9CeUYoHDIZAsgeKVhRmgZGN20NGjRN5ZcwkplAMJnF9v+6w==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/components": "8.6.0", + "@storybook/components": "8.6.15", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "8.6.0", - "@storybook/preview-api": "8.6.0", - "@storybook/react-dom-shim": "8.6.0", - "@storybook/theming": "8.6.0" + "@storybook/manager-api": "8.6.15", + "@storybook/preview-api": "8.6.15", + "@storybook/react-dom-shim": "8.6.15", + "@storybook/theming": "8.6.15" }, "engines": { "node": ">=18.0.0" @@ -2488,10 +2790,10 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/test": "8.6.0", + "@storybook/test": "8.6.15", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.6.0", + "storybook": "^8.6.15", "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { @@ -2504,9 +2806,9 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.6.0.tgz", - "integrity": "sha512-5Y+vMHhcx0xnaNsLQMbkmjc3zkDn/fGBNsiLH2e4POvW3ZQvOxjoyxAsEQaKwLtFgsdCFSd2tR89F6ItYrA2JQ==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.6.15.tgz", + "integrity": "sha512-m2trBmmd4iom1qwrp1F109zjRDc0cPaHYhDQxZR4Qqdz8pYevYJTlipDbH/K4NVB6Rn687RT29OoOPfJh6vkFA==", "dev": true, "license": "MIT", "funding": { @@ -2516,20 +2818,20 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.6.0" + "storybook": "^8.6.15" } }, "node_modules/@storybook/react-vite": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-8.6.0.tgz", - "integrity": "sha512-uDQyf2u0Zki4qIavOu2jyGIlvmUOsgCpHXY+7KHr542ZIkXI3mGOi5/rwUxgNSHGD3JloYGdlt+4Md+9i5xEbA==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-8.6.15.tgz", + "integrity": "sha512-9st+2NCemzzBwmindpDrRLEqYJmwwd2RnXMoj+Wt4Y1r4MGoRe1l837ciT2tmstaqekY2mVUSYd6879NzeeMYw==", "dev": true, "license": "MIT", "dependencies": { "@joshwooding/vite-plugin-react-docgen-typescript": "0.5.0", "@rollup/pluginutils": "^5.0.2", - "@storybook/builder-vite": "8.6.0", - "@storybook/react": "8.6.0", + "@storybook/builder-vite": "8.6.15", + "@storybook/react": "8.6.15", "find-up": "^5.0.0", "magic-string": "^0.30.0", "react-docgen": "^7.0.0", @@ -2544,10 +2846,10 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/test": "8.6.0", + "@storybook/test": "8.6.15", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta", - "storybook": "^8.6.0", + "storybook": "^8.6.15", "vite": "^4.0.0 || ^5.0.0 || ^6.0.0" }, "peerDependenciesMeta": { @@ -2556,30 +2858,15 @@ } } }, - "node_modules/@storybook/react-vite/node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/@storybook/test": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.6.0.tgz", - "integrity": "sha512-qiiv4wh4FoxTb1PoiA/noo9HcLDqfTwL0svMoNpTy2Bxm6xajgg5zYmmIT4pKyQkMd9pfKKQKILok31VxAj8vw==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.6.15.tgz", + "integrity": "sha512-EwquDRUDVvWcZds3T2abmB5wSN/Vattal4YtZ6fpBlIUqONV4o/cOBX39cFfQSUCBrIXIjQ6RmapQCHK/PvBYw==", "dev": true, "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.6.0", + "@storybook/instrumenter": "8.6.15", "@testing-library/dom": "10.4.0", "@testing-library/jest-dom": "6.5.0", "@testing-library/user-event": "14.5.2", @@ -2591,7 +2878,27 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.6.0" + "storybook": "^8.6.15" + } + }, + "node_modules/@storybook/test/node_modules/@testing-library/dom": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", + "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" } }, "node_modules/@storybook/test/node_modules/@testing-library/jest-dom": { @@ -2615,7 +2922,7 @@ "yarn": ">=1" } }, - "node_modules/@storybook/test/node_modules/chalk": { + "node_modules/@storybook/test/node_modules/@testing-library/jest-dom/node_modules/chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", @@ -2629,17 +2936,31 @@ "node": ">=8" } }, - "node_modules/@storybook/test/node_modules/dom-accessibility-api": { + "node_modules/@storybook/test/node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", "dev": true, "license": "MIT" }, + "node_modules/@storybook/test/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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, "node_modules/@storybook/theming": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.0.tgz", - "integrity": "sha512-te7dl0ZXnEyKS4LW+QHc3MP7nurWhWhmClY7G2WKNW9eHenb9zvXkcAQt6c4OWhrJi01CAYoXmZNJP0jEzxRRQ==", + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.15.tgz", + "integrity": "sha512-dAbL0XOekyT6XsF49R6Etj3WxQ/LpdJDIswUUeHgVJ6/yd2opZOGbPxnwA3zlmAh1c0tvpPyhSDXxSG79u8e4Q==", "dev": true, "license": "MIT", "funding": { @@ -2651,157 +2972,31 @@ } }, "node_modules/@tanstack/eslint-plugin-query": { - "version": "5.62.9", - "resolved": "https://registry.npmjs.org/@tanstack/eslint-plugin-query/-/eslint-plugin-query-5.62.9.tgz", - "integrity": "sha512-F3onhTcpBj7zQDo0NVtZwZQKRFx8BwpSabMJybl9no3+dFHUurvNMrH5M/6KNpkdDCf3zyHWadruZL6636B8Fw==", + "version": "5.91.4", + "resolved": "https://registry.npmjs.org/@tanstack/eslint-plugin-query/-/eslint-plugin-query-5.91.4.tgz", + "integrity": "sha512-8a+GAeR7oxJ5laNyYBQ6miPK09Hi18o5Oie/jx8zioXODv/AUFLZQecKabPdpQSLmuDXEBPKFh+W5DKbWlahjQ==", "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^8.18.1" + "@typescript-eslint/utils": "^8.48.0" }, "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - } - }, - "node_modules/@tanstack/eslint-plugin-query/node_modules/@typescript-eslint/scope-manager": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.19.0.tgz", - "integrity": "sha512-hkoJiKQS3GQ13TSMEiuNmSCvhz7ujyqD1x3ShbaETATHrck+9RaDdUbt+osXaUuns9OFwrDTTrjtwsU8gJyyRA==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.19.0", - "@typescript-eslint/visitor-keys": "8.19.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@tanstack/eslint-plugin-query/node_modules/@typescript-eslint/types": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.19.0.tgz", - "integrity": "sha512-8XQ4Ss7G9WX8oaYvD4OOLCjIQYgRQxO+qCiR2V2s2GxI9AUpo7riNwo6jDhKtTcaJjT8PY54j2Yb33kWtSJsmA==", - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@tanstack/eslint-plugin-query/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.19.0.tgz", - "integrity": "sha512-WW9PpDaLIFW9LCbucMSdYUuGeFUz1OkWYS/5fwZwTA+l2RwlWFdJvReQqMUMBw4yJWJOfqd7An9uwut2Oj8sLw==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.19.0", - "@typescript-eslint/visitor-keys": "8.19.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.8.0" - } - }, - "node_modules/@tanstack/eslint-plugin-query/node_modules/@typescript-eslint/utils": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.19.0.tgz", - "integrity": "sha512-PTBG+0oEMPH9jCZlfg07LCB2nYI0I317yyvXGfxnvGvw4SHIOuRnQ3kadyyXY6tGdChusIHIbM5zfIbp4M6tCg==", - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.19.0", - "@typescript-eslint/types": "8.19.0", - "@typescript-eslint/typescript-estree": "8.19.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" - } - }, - "node_modules/@tanstack/eslint-plugin-query/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.19.0.tgz", - "integrity": "sha512-mCFtBbFBJDCNCWUl5y6sZSCHXw1DEFEk3c/M3nRK2a4XUB8StGFtmcEMizdjKuBzB6e/smJAAWYug3VrdLMr1w==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.19.0", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@tanstack/eslint-plugin-query/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@tanstack/eslint-plugin-query/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@tanstack/eslint-plugin-query/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "typescript": "^5.0.0" }, - "engines": { - "node": ">=10" + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@tanstack/query-core": { - "version": "5.62.12", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.62.12.tgz", - "integrity": "sha512-6igFeBgymHkCxVgaEk+yiLwkMf9haui/EQLmI3o9CatOyDThEoFKe8toLWvWliZC/Jf+h7NwHi/zjfyLArr1ow==", + "version": "5.90.20", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.20.tgz", + "integrity": "sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==", "license": "MIT", "funding": { "type": "github", @@ -2809,12 +3004,12 @@ } }, "node_modules/@tanstack/react-query": { - "version": "5.62.12", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.62.12.tgz", - "integrity": "sha512-yt8p7l5MlHA3QCt6xF1Cu9dw1Anf93yTK+DMDJQ64h/mshAymVAtcwj8TpsyyBrZNWAAZvza/m76bnTSR79ZtQ==", + "version": "5.90.20", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.20.tgz", + "integrity": "sha512-vXBxa+qeyveVO7OA0jX1z+DeyCA4JKnThKv411jd5SORpBKgkcVnYKCiBgECvADvniBX7tobwBmg01qq9JmMJw==", "license": "MIT", "dependencies": { - "@tanstack/query-core": "5.62.12" + "@tanstack/query-core": "5.90.20" }, "funding": { "type": "github", @@ -2825,9 +3020,9 @@ } }, "node_modules/@testing-library/dom": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", - "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", + "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", "dev": true, "license": "MIT", "dependencies": { @@ -2835,38 +3030,27 @@ "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", "aria-query": "5.3.0", - "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", + "picocolors": "1.1.1", "pretty-format": "^27.0.2" }, "engines": { "node": ">=18" } }, - "node_modules/@testing-library/dom/node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "dequal": "^2.0.3" - } - }, "node_modules/@testing-library/jest-dom": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.6.3.tgz", - "integrity": "sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz", + "integrity": "sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==", "dev": true, "license": "MIT", "dependencies": { "@adobe/css-tools": "^4.4.0", "aria-query": "^5.0.0", - "chalk": "^3.0.0", "css.escape": "^1.5.1", "dom-accessibility-api": "^0.6.3", - "lodash": "^4.17.21", + "picocolors": "^1.1.1", "redent": "^3.0.0" }, "engines": { @@ -2875,20 +3059,6 @@ "yarn": ">=1" } }, - "node_modules/@testing-library/jest-dom/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", @@ -2897,9 +3067,9 @@ "license": "MIT" }, "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.3.2", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.3.2.tgz", + "integrity": "sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==", "dev": true, "license": "MIT", "dependencies": { @@ -2925,9 +3095,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, "license": "MIT", "engines": { @@ -2960,9 +3130,9 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "dev": true, "license": "MIT", "dependencies": { @@ -2990,10 +3160,21 @@ "@babel/types": "^7.28.2" } }, - "node_modules/@types/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", "dev": true, "license": "MIT" }, @@ -3005,9 +3186,9 @@ "license": "MIT" }, "node_modules/@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "license": "MIT" }, "node_modules/@types/glob": { @@ -3049,14 +3230,14 @@ } }, "node_modules/@types/jest": { - "version": "29.5.14", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", - "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", + "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", "dev": true, "license": "MIT", "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" + "expect": "^30.0.0", + "pretty-format": "^30.0.0" } }, "node_modules/@types/jest/node_modules/ansi-styles": { @@ -3073,18 +3254,18 @@ } }, "node_modules/@types/jest/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@types/jest/node_modules/react-is": { @@ -3122,48 +3303,48 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.6.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.6.0.tgz", - "integrity": "sha512-F1CBxgqwOMc4GKJ7eY22hWhBVQuMYTtqI8L0FcszYcpYX0fzfDGpez22Xau8Mgm7O9fI+zA/TYIdq3tGWfweBA==", + "version": "25.2.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.0.tgz", + "integrity": "sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.13.0" + "undici-types": "~7.16.0" } }, "node_modules/@types/pako": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/pako/-/pako-2.0.3.tgz", - "integrity": "sha512-bq0hMV9opAcrmE0Byyo0fY3Ew4tgOevJmQ9grUhpXQhYfyLJ1Kqg3P33JT5fdbT2AjeAjR51zqqVjAL/HMkx7Q==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/pako/-/pako-2.0.4.tgz", + "integrity": "sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==", "dev": true, "license": "MIT" }, "node_modules/@types/prop-types": { - "version": "15.7.14", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", - "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", "dev": true, "license": "MIT" }, "node_modules/@types/react": { - "version": "18.3.14", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.14.tgz", - "integrity": "sha512-NzahNKvjNhVjuPBQ+2G7WlxstQ+47kXZNHlUvFakDViuIEfGY926GqhMueQFZ7woG+sPiQKlF36XfrIUVSUfFg==", + "version": "18.3.27", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.27.tgz", + "integrity": "sha512-cisd7gxkzjBKU2GgdYrTdtQx1SORymWyaAFhaxQPK9bYO9ot3Y5OikQRvY0VYQtvwjeQnizCINJAenh/V7MK2w==", "dev": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", - "csstype": "^3.0.2" + "csstype": "^3.2.2" } }, "node_modules/@types/react-dom": { - "version": "18.3.2", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.2.tgz", - "integrity": "sha512-Fqp+rcvem9wEnGr3RY8dYNvSQ8PoLqjZ9HLgaPUOjJJD120uDyOxOjc/39M4Kddp9JQCxpGQbnhVQF0C0ncYVg==", + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", "dev": true, "license": "MIT", - "dependencies": { - "@types/react": "^18" + "peerDependencies": { + "@types/react": "^18.0.0" } }, "node_modules/@types/resolve": { @@ -3181,16 +3362,9 @@ "license": "MIT" }, "node_modules/@types/statuses": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.5.tgz", - "integrity": "sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.6.tgz", + "integrity": "sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==", "dev": true, "license": "MIT" }, @@ -3202,9 +3376,9 @@ "license": "MIT" }, "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", "dev": true, "license": "MIT", "dependencies": { @@ -3219,21 +3393,20 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.17.0.tgz", - "integrity": "sha512-HU1KAdW3Tt8zQkdvNoIijfWDMvdSweFYm4hWh+KwhPstv+sCmWb89hCIP8msFm9N1R/ooh9honpSuvqKWlYy3w==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.54.0.tgz", + "integrity": "sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.17.0", - "@typescript-eslint/type-utils": "8.17.0", - "@typescript-eslint/utils": "8.17.0", - "@typescript-eslint/visitor-keys": "8.17.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.54.0", + "@typescript-eslint/type-utils": "8.54.0", + "@typescript-eslint/utils": "8.54.0", + "@typescript-eslint/visitor-keys": "8.54.0", + "ignore": "^7.0.5", "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.4.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3243,27 +3416,33 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@typescript-eslint/parser": "^8.54.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.17.0.tgz", - "integrity": "sha512-Drp39TXuUlD49F7ilHHCG7TTg8IkA+hxCuULdmzWYICxGXvDXmDmWEjJYZQYgf6l/TFfYNE167m7isnc3xlIEg==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.54.0.tgz", + "integrity": "sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.17.0", - "@typescript-eslint/types": "8.17.0", - "@typescript-eslint/typescript-estree": "8.17.0", - "@typescript-eslint/visitor-keys": "8.17.0", - "debug": "^4.3.4" + "@typescript-eslint/scope-manager": "8.54.0", + "@typescript-eslint/types": "8.54.0", + "@typescript-eslint/typescript-estree": "8.54.0", + "@typescript-eslint/visitor-keys": "8.54.0", + "debug": "^4.4.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3273,23 +3452,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.17.0.tgz", - "integrity": "sha512-/ewp4XjvnxaREtqsZjF4Mfn078RD/9GmiEAtTeLQ7yFdKnqwTOgRMSvFz4et9U5RiJQ15WTGXPLj89zGusvxBg==", - "dev": true, + "node_modules/@typescript-eslint/project-service": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.54.0.tgz", + "integrity": "sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.17.0", - "@typescript-eslint/visitor-keys": "8.17.0" + "@typescript-eslint/tsconfig-utils": "^8.54.0", + "@typescript-eslint/types": "^8.54.0", + "debug": "^4.4.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3297,19 +3472,19 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.17.0.tgz", - "integrity": "sha512-q38llWJYPd63rRnJ6wY/ZQqIzPrBCkPdpIsaCfkR3Q4t3p6sb422zougfad4TFW9+ElIFLVDzWGiGAfbb/v2qw==", - "dev": true, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.54.0.tgz", + "integrity": "sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==", "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.17.0", - "@typescript-eslint/utils": "8.17.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" + "@typescript-eslint/types": "8.54.0", + "@typescript-eslint/visitor-keys": "8.54.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3317,21 +3492,12 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } } }, - "node_modules/@typescript-eslint/types": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.17.0.tgz", - "integrity": "sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA==", - "dev": true, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.54.0.tgz", + "integrity": "sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==", "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3339,23 +3505,23 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.17.0.tgz", - "integrity": "sha512-JqkOopc1nRKZpX+opvKqnM3XUlM7LpFMD0lYxTqOTKQfCWAmxw45e3qlOCsEqEB2yuacujivudOFpCnqkBDNMw==", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.54.0.tgz", + "integrity": "sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.17.0", - "@typescript-eslint/visitor-keys": "8.17.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" + "@typescript-eslint/types": "8.54.0", + "@typescript-eslint/typescript-estree": "8.54.0", + "@typescript-eslint/utils": "8.54.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.4.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3364,62 +3530,61 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, + "node_modules/@typescript-eslint/types": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.54.0.tgz", + "integrity": "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==", "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.54.0.tgz", + "integrity": "sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "@typescript-eslint/project-service": "8.54.0", + "@typescript-eslint/tsconfig-utils": "8.54.0", + "@typescript-eslint/types": "8.54.0", + "@typescript-eslint/visitor-keys": "8.54.0", + "debug": "^4.4.3", + "minimatch": "^9.0.5", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/utils": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.17.0.tgz", - "integrity": "sha512-bQC8BnEkxqG8HBGKwG9wXlZqg37RKSMY7v/X8VEWD8JG2JuTHuNK0VFvMPMUKQcbk6B+tf05k+4AShAEtCtJ/w==", - "dev": true, + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.54.0.tgz", + "integrity": "sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==", "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.17.0", - "@typescript-eslint/types": "8.17.0", - "@typescript-eslint/typescript-estree": "8.17.0" + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.54.0", + "@typescript-eslint/types": "8.54.0", + "@typescript-eslint/typescript-estree": "8.54.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3429,23 +3594,18 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.17.0.tgz", - "integrity": "sha512-1Hm7THLpO6ww5QU6H/Qp+AusUUl+z/CAm3cNZZ0jQvon9yicgO7Rwd+/WWRpMKLYV6p2UvdbR27c86rzCPpreg==", - "dev": true, + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.54.0.tgz", + "integrity": "sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==", "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.17.0", - "eslint-visitor-keys": "^4.2.0" + "@typescript-eslint/types": "8.54.0", + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3455,24 +3615,37 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@vitejs/plugin-react": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", - "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.3.tgz", + "integrity": "sha512-NVUnA6gQCl8jfoYqKqQU5Clv0aPw14KkZYCsX6T9Lfu9slI0LOU10OTwFHS/WmptsMMpshNd/1tuWsHQ2Uk+cg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.26.0", - "@babel/plugin-transform-react-jsx-self": "^7.25.9", - "@babel/plugin-transform-react-jsx-source": "^7.25.9", + "@babel/core": "^7.29.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-rc.2", "@types/babel__core": "^7.20.5", - "react-refresh": "^0.14.2" + "react-refresh": "^0.18.0" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": "^20.19.0 || >=22.12.0" }, "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, "node_modules/@vitest/expect": { @@ -3530,6 +3703,53 @@ "@types/estree": "^1.0.0" } }, + "node_modules/@vitest/mocker": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.18.tgz", + "integrity": "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "4.0.18", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/mocker/node_modules/@vitest/spy": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz", + "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, "node_modules/@vitest/pretty-format": { "version": "2.1.9", "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz", @@ -3544,34 +3764,94 @@ } }, "node_modules/@vitest/runner": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.9.tgz", - "integrity": "sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.18.tgz", + "integrity": "sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "4.0.18", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner/node_modules/@vitest/pretty-format": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", + "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner/node_modules/@vitest/utils": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz", + "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "2.1.9", - "pathe": "^1.1.2" + "@vitest/pretty-format": "4.0.18", + "tinyrainbow": "^3.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, + "node_modules/@vitest/runner/node_modules/tinyrainbow": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz", + "integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@vitest/snapshot": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.9.tgz", - "integrity": "sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==", + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.18.tgz", + "integrity": "sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.9", - "magic-string": "^0.30.12", - "pathe": "^1.1.2" + "@vitest/pretty-format": "4.0.18", + "magic-string": "^0.30.21", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot/node_modules/@vitest/pretty-format": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", + "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^3.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, + "node_modules/@vitest/snapshot/node_modules/tinyrainbow": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz", + "integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@vitest/spy": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.0.5.tgz", @@ -3622,14 +3902,11 @@ } }, "node_modules/agent-base": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.2.tgz", - "integrity": "sha512-JVzqkCNRT+VfqzzgPWDPnwvDheSAUdiMUn3NoLXpDJF5lRqeJqyC9iGsAxIOAW+mzIdq+uP1TvcX6bMtrH0agg==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, "engines": { "node": ">= 14" } @@ -3650,46 +3927,13 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=8" } }, "node_modules/ansi-styles": { @@ -3728,6 +3972,19 @@ "node": ">= 8" } }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", @@ -3742,13 +3999,13 @@ "license": "Python-2.0" }, "node_modules/aria-query": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" + "dependencies": { + "dequal": "^2.0.3" } }, "node_modules/array-buffer-byte-length": { @@ -3769,18 +4026,20 @@ } }, "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -3821,18 +4080,19 @@ } }, "node_modules/array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", + "es-abstract": "^1.23.9", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -3842,16 +4102,16 @@ } }, "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -3958,6 +4218,16 @@ "node": ">=8" } }, + "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, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -3965,9 +4235,9 @@ "license": "MIT" }, "node_modules/autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "version": "10.4.24", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.24.tgz", + "integrity": "sha512-uHZg7N9ULTVbutaIsDRoUkoS8/h3bdsmVJYZ5l3wv8Cp/6UIIoRDm90hZ+BwxUj/hGBEzLxdHNSKuFpn8WOyZw==", "dev": true, "funding": [ { @@ -3985,11 +4255,10 @@ ], "license": "MIT", "dependencies": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001766", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -4019,9 +4288,9 @@ } }, "node_modules/axe-core": { - "version": "4.10.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.2.tgz", - "integrity": "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.1.tgz", + "integrity": "sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A==", "dev": true, "license": "MPL-2.0", "engines": { @@ -4029,13 +4298,13 @@ } }, "node_modules/axios": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", - "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.4.tgz", + "integrity": "sha512-1wVkUaAO6WyaYtCkcYCOx12ZgpGf9Zif+qXa4n+oYzK558YryKqiL6UWwd5DqiH3VRW0GYhTZQ/vlgJrCoNQlg==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", + "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, @@ -4055,6 +4324,16 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "license": "MIT" }, + "node_modules/baseline-browser-mapping": { + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, "node_modules/better-opn": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", @@ -4068,6 +4347,16 @@ "node": ">=12.0.0" } }, + "node_modules/bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "require-from-string": "^2.0.2" + } + }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -4082,19 +4371,19 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, "license": "MIT", "dependencies": { "fill-range": "^7.1.1" @@ -4110,9 +4399,9 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", "dev": true, "funding": [ { @@ -4130,10 +4419,11 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.1" + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" @@ -4151,6 +4441,30 @@ "node": ">=8" } }, + "node_modules/cacheable": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.3.2.tgz", + "integrity": "sha512-w+ZuRNmex9c1TR9RcsxbfTKCjSL0rh1WA5SABbrWprIHeNBdmyQLSYonlDy9gpD+63XT8DgZ/wNh1Smvc9WnJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cacheable/memory": "^2.0.7", + "@cacheable/utils": "^2.3.3", + "hookified": "^1.15.0", + "keyv": "^5.5.5", + "qified": "^0.6.0" + } + }, + "node_modules/cacheable/node_modules/keyv": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.1.1" + } + }, "node_modules/call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", @@ -4171,9 +4485,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==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -4184,14 +4498,14 @@ } }, "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -4220,9 +4534,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001687", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001687.tgz", - "integrity": "sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==", + "version": "1.0.30001767", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001767.tgz", + "integrity": "sha512-34+zUAMhSH+r+9eKmYG+k2Rpt8XttfE4yXAjoZvkAPs15xcYQhyBYdalJ65BzivAvGRMViEjy6oKr/S91loekQ==", "dev": true, "funding": [ { @@ -4241,9 +4555,9 @@ "license": "CC-BY-4.0" }, "node_modules/chai": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz", - "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", "dev": true, "license": "MIT", "dependencies": { @@ -4254,7 +4568,7 @@ "pathval": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/chalk": { @@ -4274,9 +4588,9 @@ } }, "node_modules/check-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", + "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==", "dev": true, "license": "MIT", "engines": { @@ -4322,9 +4636,9 @@ } }, "node_modules/chromatic": { - "version": "11.20.2", - "resolved": "https://registry.npmjs.org/chromatic/-/chromatic-11.20.2.tgz", - "integrity": "sha512-c+M3HVl5Y60c7ipGTZTyeWzWubRW70YsJ7PPDpO1D735ib8+Lu3yGF90j61pvgkXGngpkTPHZyBw83lcu2JMxA==", + "version": "11.29.0", + "resolved": "https://registry.npmjs.org/chromatic/-/chromatic-11.29.0.tgz", + "integrity": "sha512-yisBlntp9hHVj19lIQdpTlcYIXuU9H/DbFuu6tyWHmj6hWT2EtukCCcxYXL78XdQt1vm2GfIrtgtKpj/Rzmo4A==", "dev": true, "license": "MIT", "bin": { @@ -4346,9 +4660,9 @@ } }, "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", "dev": true, "funding": [ { @@ -4385,35 +4699,6 @@ "node": ">=12" } }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/cliui/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -4513,12 +4798,16 @@ "license": "MIT" }, "node_modules/cookie": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", - "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", "license": "MIT", "engines": { "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/cosmiconfig": { @@ -4616,22 +4905,35 @@ } }, "node_modules/cssstyle": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.1.0.tgz", - "integrity": "sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==", + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.7.tgz", + "integrity": "sha512-7D2EPVltRrsTkhpQmksIu+LxeWAIEk6wRDMJ1qljlv+CKHJM+cJLlfhWIzNA44eAsHXSNe3+vO6DW1yCYx8SuQ==", "dev": true, "license": "MIT", "dependencies": { - "rrweb-cssom": "^0.7.1" + "@asamuzakjp/css-color": "^4.1.1", + "@csstools/css-syntax-patches-for-csstree": "^1.0.21", + "css-tree": "^3.1.0", + "lru-cache": "^11.2.4" }, "engines": { - "node": ">=18" + "node": ">=20" + } + }, + "node_modules/cssstyle/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" } }, "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "dev": true, "license": "MIT" }, @@ -4643,17 +4945,17 @@ "license": "BSD-2-Clause" }, "node_modules/data-urls": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", - "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-7.0.0.tgz", + "integrity": "sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==", "dev": true, "license": "MIT", "dependencies": { - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0" + "whatwg-mimetype": "^5.0.0", + "whatwg-url": "^16.0.0" }, "engines": { - "node": ">=18" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, "node_modules/data-view-buffer": { @@ -4711,9 +5013,9 @@ } }, "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -4728,9 +5030,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.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", "dev": true, "license": "MIT" }, @@ -4821,16 +5123,6 @@ "dev": true, "license": "Apache-2.0" }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -4893,9 +5185,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.71", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.71.tgz", - "integrity": "sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==", + "version": "1.5.283", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.283.tgz", + "integrity": "sha512-3vifjt1HgrGW/h76UEeny+adYApveS9dH2h3p57JYzBSXJIKUJAvtmIytDKjcSCt9xHfrNCFJ7gts6vkhuq++w==", "dev": true, "license": "ISC" }, @@ -4907,9 +5199,9 @@ "license": "MIT" }, "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -4930,9 +5222,9 @@ } }, "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4940,9 +5232,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.24.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", + "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", "dev": true, "license": "MIT", "dependencies": { @@ -4950,17 +5242,18 @@ "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bound": "^1.0.3", + "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", + "es-object-atoms": "^1.1.1", + "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.3.0", + "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", @@ -4972,18 +5265,24 @@ "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", + "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.0", + "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.3", + "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", - "regexp.prototype.flags": "^1.5.3", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", @@ -4992,7 +5291,7 @@ "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.18" + "which-typed-array": "^1.1.19" }, "engines": { "node": ">= 0.4" @@ -5020,27 +5319,27 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", - "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz", + "integrity": "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", - "call-bound": "^1.0.3", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", + "es-abstract": "^1.24.1", "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", + "es-set-tostringtag": "^2.1.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.6", + "get-intrinsic": "^1.3.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.4", + "iterator.prototype": "^1.1.5", "safe-array-concat": "^1.1.3" }, "engines": { @@ -5048,16 +5347,16 @@ } }, "node_modules/es-module-lexer": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", - "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", "dev": true, "license": "MIT" }, "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==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -5082,13 +5381,16 @@ } }, "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, "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-to-primitive": { @@ -5110,9 +5412,9 @@ } }, "node_modules/esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -5123,31 +5425,32 @@ "node": ">=18" }, "optionalDependencies": { - "@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" + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" } }, "node_modules/esbuild-register": { @@ -5185,24 +5488,23 @@ } }, "node_modules/eslint": { - "version": "9.31.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.31.0.tgz", - "integrity": "sha512-QldCVh/ztyKJJZLr4jXNUByx3gR+TDYZCRXEktiZoUR3PGy4qCmSbkxcIle8GEwGpb5JBZazlaJ/CxLidXdEbQ==", + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", + "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.0", - "@eslint/config-helpers": "^0.3.0", - "@eslint/core": "^0.15.0", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.31.0", - "@eslint/plugin-kit": "^0.3.1", + "@eslint/js": "9.39.2", + "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", @@ -5245,9 +5547,9 @@ } }, "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": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.2.tgz", + "integrity": "sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==", "dev": true, "license": "MIT", "bin": { @@ -5280,9 +5582,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", - "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", "dev": true, "license": "MIT", "dependencies": { @@ -5308,30 +5610,30 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", - "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", "dependencies": { "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.0", + "eslint-module-utils": "^2.12.1", "hasown": "^2.0.2", - "is-core-module": "^2.15.1", + "is-core-module": "^2.16.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "object.groupby": "^1.0.3", - "object.values": "^1.2.0", + "object.values": "^1.2.1", "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.8", + "string.prototype.trimend": "^1.0.9", "tsconfig-paths": "^3.15.0" }, "engines": { @@ -5341,6 +5643,17 @@ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -5351,6 +5664,55 @@ "ms": "^2.1.1" } }, + "node_modules/eslint-plugin-import/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, "node_modules/eslint-plugin-jsx-a11y": { "version": "6.10.2", "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", @@ -5381,15 +5743,49 @@ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "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.5.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", + "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", "dev": true, "license": "MIT", "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.9.1" + "prettier-linter-helpers": "^1.0.1", + "synckit": "^0.11.12" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -5400,7 +5796,7 @@ "peerDependencies": { "@types/eslint": ">=8.0.0", "eslint": ">=8.0.0", - "eslint-config-prettier": "*", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", "prettier": ">=3.0.0" }, "peerDependenciesMeta": { @@ -5413,9 +5809,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.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", "dev": true, "license": "MIT", "dependencies": { @@ -5429,7 +5825,7 @@ "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.8", + "object.entries": "^1.1.9", "object.fromentries": "^2.0.8", "object.values": "^1.2.1", "prop-types": "^15.8.1", @@ -5446,9 +5842,9 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz", - "integrity": "sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", "dev": true, "license": "MIT", "engines": { @@ -5459,15 +5855,39 @@ } }, "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.16.tgz", - "integrity": "sha512-slterMlxAhov/DZO8NScf6mEeMBBXodFUolijDvrtTxyezyLoTQaa73FyYus/VbTdftd8wBgBxPMRk3poleXNQ==", + "version": "0.4.26", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.26.tgz", + "integrity": "sha512-1RETEylht2O6FM/MvgnyvT+8K21wLqDNg4qD51Zj3guhjt433XbnnkVttHMyaVyAFD03QSV4LPS5iE3VQmO7XQ==", "dev": true, "license": "MIT", "peerDependencies": { "eslint": ">=8.40" } }, + "node_modules/eslint-plugin-react/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-react/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint-plugin-react/node_modules/resolve": { "version": "2.0.0-next.5", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", @@ -5486,12 +5906,22 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-storybook": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.11.1.tgz", - "integrity": "sha512-yGKpAYkBm/Q2hZg476vRUAvd9lAccjjSvzU5nYy3BSQbKTPy7uopx7JEpwk2vSuw4weTMZzWF64z9/gp/K5RCg==", - "dev": true, - "license": "MIT", + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-storybook": { + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.11.6.tgz", + "integrity": "sha512-3WodYD6Bs9ACqnB+TP2TuLh774c/nacAjxSKOP9bHJ2c8rf+nrhocxjjeAWNmO9IPkFIzTKlcl0vNXI2yYpVOw==", + "dev": true, + "license": "MIT", "dependencies": { "@storybook/csf": "^0.1.11", "@typescript-eslint/utils": "^8.8.1", @@ -5501,13 +5931,13 @@ "node": ">= 18" }, "peerDependencies": { - "eslint": ">=6" + "eslint": ">=8" } }, "node_modules/eslint-plugin-tailwindcss": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-tailwindcss/-/eslint-plugin-tailwindcss-3.17.5.tgz", - "integrity": "sha512-8Mi7p7dm+mO1dHgRHHFdPu4RDTBk69Cn4P0B40vRQR+MrguUpwmKwhZy1kqYe3Km8/4nb+cyrCF+5SodOEmaow==", + "version": "3.18.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-tailwindcss/-/eslint-plugin-tailwindcss-3.18.2.tgz", + "integrity": "sha512-QbkMLDC/OkkjFQ1iz/5jkMdHfiMu/uwujUHLAJK5iwNHD8RTxVTlsUezE0toTZ6VhybNBsk+gYGPDq2agfeRNA==", "dev": true, "license": "MIT", "dependencies": { @@ -5538,6 +5968,28 @@ } }, "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", @@ -5549,6 +6001,18 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/espree": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", @@ -5566,6 +6030,18 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -5581,9 +6057,9 @@ } }, "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" @@ -5630,26 +6106,27 @@ } }, "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/expect-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.1.0.tgz", - "integrity": "sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", + "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -5670,16 +6147,17 @@ "license": "Apache-2.0" }, "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, "license": "MIT", "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" @@ -5689,6 +6167,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -5710,10 +6189,20 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", - "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], "license": "BSD-3-Clause" }, "node_modules/fastest-levenshtein": { @@ -5727,14 +6216,32 @@ } }, "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -5761,6 +6268,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -5799,15 +6307,15 @@ } }, "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==", "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "funding": [ { "type": "individual", @@ -5825,13 +6333,19 @@ } }, "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, "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/foreground-child": { @@ -5852,9 +6366,9 @@ } }, "node_modules/form-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", - "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", @@ -5868,27 +6382,27 @@ } }, "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", "dev": true, "license": "MIT", "engines": { "node": "*" }, "funding": { - "type": "patreon", + "type": "github", "url": "https://github.com/sponsors/rawify" } }, "node_modules/framer-motion": { - "version": "12.23.11", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.23.11.tgz", - "integrity": "sha512-VzNi+exyI3bn7Pzvz1Fjap1VO9gQu8mxrsSsNamMidsZ8AA8W2kQsR+YQOciEUbMtkKAWIbPHPttfn5e9jqqJQ==", + "version": "12.29.3", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.29.3.tgz", + "integrity": "sha512-naVvtFA7IiRTU5n7w7Nj51QFVWu955bU0p9H0gGC4AbhHDQR0TcohoEYwdOZXWEkXrEYNTl95EDOxsjDqn1AvQ==", "license": "MIT", "dependencies": { - "motion-dom": "^12.23.9", - "motion-utils": "^12.23.6", + "motion-dom": "^12.29.2", + "motion-utils": "^12.29.2", "tslib": "^2.4.0" }, "peerDependencies": { @@ -5963,6 +6477,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -5983,21 +6507,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==", "license": "MIT", "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" @@ -6006,6 +6530,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==", + "license": "MIT", + "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", @@ -6025,9 +6562,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz", - "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==", + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.1.tgz", + "integrity": "sha512-EoY1N2xCn44xU6750Sx7OjOIT59FkmstNc3X6y5xpz7D5cBtZRe/3pSlTkDJgqsOk3WwZPkWfonhhUJfttQo3w==", "dev": true, "license": "MIT", "dependencies": { @@ -6038,22 +6575,16 @@ } }, "node_modules/glob": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", - "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", - "minimatch": "^10.0.3", + "minimatch": "^10.1.1", "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, "engines": { "node": "20 || >=22" }, @@ -6074,11 +6605,11 @@ } }, "node_modules/glob/node_modules/minimatch": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", - "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/brace-expansion": "^5.0.0" }, @@ -6131,9 +6662,9 @@ } }, "node_modules/globals": { - "version": "15.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.13.0.tgz", - "integrity": "sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g==", + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.3.0.tgz", + "integrity": "sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw==", "dev": true, "license": "MIT", "engines": { @@ -6207,17 +6738,10 @@ "dev": true, "license": "ISC" }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, "node_modules/graphql": { - "version": "16.10.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.10.0.tgz", - "integrity": "sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==", + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.12.0.tgz", + "integrity": "sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==", "dev": true, "license": "MIT", "engines": { @@ -6225,11 +6749,14 @@ } }, "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "dev": true, "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6299,6 +6826,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hashery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/hashery/-/hashery-1.4.0.tgz", + "integrity": "sha512-Wn2i1In6XFxl8Az55kkgnFRiAlIAushzh26PTjL2AKtQcEfXrcLa7Hn5QOWGZEf3LU057P9TwwZjFyxfS1VuvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hookified": "^1.14.0" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -6318,17 +6858,24 @@ "dev": true, "license": "MIT" }, + "node_modules/hookified": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.15.1.tgz", + "integrity": "sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==", + "dev": true, + "license": "MIT" + }, "node_modules/html-encoding-sniffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", - "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-6.0.0.tgz", + "integrity": "sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==", "dev": true, "license": "MIT", "dependencies": { - "whatwg-encoding": "^3.1.1" + "@exodus/bytes": "^1.6.0" }, "engines": { - "node": ">=18" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, "node_modules/html-parse-stringify": { @@ -6382,9 +6929,9 @@ } }, "node_modules/i18next": { - "version": "25.5.2", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.5.2.tgz", - "integrity": "sha512-lW8Zeh37i/o0zVr+NoCHfNnfvVw+M6FQbRp36ZZ/NyHDJ3NJVpp2HhAUyU9WafL5AssymNoOjMRB48mmx2P6Hw==", + "version": "25.8.0", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.8.0.tgz", + "integrity": "sha512-urrg4HMFFMQZ2bbKRK7IZ8/CTE7D8H4JRlAwqA2ZwDRFfdd0K/4cdbNNLgfn9mo+I/h9wJu61qJzH7jCFAhUZQ==", "funding": [ { "type": "individual", @@ -6401,7 +6948,7 @@ ], "license": "MIT", "dependencies": { - "@babel/runtime": "^7.27.6" + "@babel/runtime": "^7.28.4" }, "peerDependencies": { "typescript": "^5" @@ -6430,19 +6977,6 @@ "cross-fetch": "4.0.0" } }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -6453,9 +6987,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==", "license": "MIT", "dependencies": { "parent-module": "^1.0.0", @@ -6482,9 +7016,9 @@ } }, "node_modules/import-meta-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", - "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", "license": "MIT", "funding": { "type": "github", @@ -6582,13 +7116,17 @@ "license": "MIT" }, "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, "license": "MIT", "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" @@ -6627,13 +7165,13 @@ } }, "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, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", + "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" }, "engines": { @@ -6657,9 +7195,9 @@ } }, "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, "license": "MIT", "dependencies": { @@ -6757,13 +7295,17 @@ } }, "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.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -6797,6 +7339,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-node-process": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", @@ -6808,6 +7363,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -6960,13 +7516,13 @@ } }, "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, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -7018,17 +7574,17 @@ "license": "ISC" }, "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, "license": "MIT", "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": { @@ -7036,35 +7592,35 @@ } }, "node_modules/jackspeak": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", - "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": "20 || >=22" - }, "funding": { "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", + "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-diff/node_modules/ansi-styles": { @@ -7081,18 +7637,18 @@ } }, "node_modules/jest-diff/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-diff/node_modules/react-is": { @@ -7102,30 +7658,20 @@ "dev": true, "license": "MIT" }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", + "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.2.0", + "pretty-format": "30.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-matcher-utils/node_modules/ansi-styles": { @@ -7142,18 +7688,18 @@ } }, "node_modules/jest-matcher-utils/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-matcher-utils/node_modules/react-is": { @@ -7164,24 +7710,24 @@ "license": "MIT" }, "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", + "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.2.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.2.0", "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "stack-utils": "^2.0.6" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-message-util/node_modules/ansi-styles": { @@ -7198,18 +7744,18 @@ } }, "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-message-util/node_modules/react-is": { @@ -7219,28 +7765,53 @@ "dev": true, "license": "MIT" }, + "node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", + "@jest/types": "30.2.0", "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jiti": { - "version": "1.21.6", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", - "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "devOptional": true, "license": "MIT", "bin": { @@ -7254,9 +7825,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -7266,9 +7837,9 @@ } }, "node_modules/jsdoc-type-pratt-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz", - "integrity": "sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.8.0.tgz", + "integrity": "sha512-iZ8Bdb84lWRuGHamRXFyML07r21pcwBrLkHEuHgEY5UbCouBwv7ECknDRKzsQIXMiqpPymqtIf8TC/shYKB5rw==", "dev": true, "license": "MIT", "engines": { @@ -7276,39 +7847,38 @@ } }, "node_modules/jsdom": { - "version": "25.0.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-25.0.1.tgz", - "integrity": "sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==", + "version": "28.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-28.0.0.tgz", + "integrity": "sha512-KDYJgZ6T2TKdU8yBfYueq5EPG/EylMsBvCaenWMJb2OXmjgczzwveRCoJ+Hgj1lXPDyasvrgneSn4GBuR1hYyA==", "dev": true, "license": "MIT", "dependencies": { - "cssstyle": "^4.1.0", - "data-urls": "^5.0.0", - "decimal.js": "^10.4.3", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^4.0.0", + "@acemir/cssom": "^0.9.31", + "@asamuzakjp/dom-selector": "^6.7.6", + "@exodus/bytes": "^1.11.0", + "cssstyle": "^5.3.7", + "data-urls": "^7.0.0", + "decimal.js": "^10.6.0", + "html-encoding-sniffer": "^6.0.0", "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", + "https-proxy-agent": "^7.0.6", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.12", - "parse5": "^7.1.2", - "rrweb-cssom": "^0.7.1", + "parse5": "^8.0.0", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", - "tough-cookie": "^5.0.0", + "tough-cookie": "^6.0.0", + "undici": "^7.20.0", "w3c-xmlserializer": "^5.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^3.1.1", - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.0.0", - "ws": "^8.18.0", + "webidl-conversions": "^8.0.1", + "whatwg-mimetype": "^5.0.0", + "whatwg-url": "^16.0.0", "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=18" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "canvas": "^2.11.2" + "canvas": "^3.0.0" }, "peerDependenciesMeta": { "canvas": { @@ -7317,9 +7887,9 @@ } }, "node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, "license": "MIT", "bin": { @@ -7368,9 +7938,9 @@ } }, "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", "dev": true, "license": "MIT", "dependencies": { @@ -7416,9 +7986,9 @@ } }, "node_modules/known-css-properties": { - "version": "0.35.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz", - "integrity": "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==", + "version": "0.37.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.37.0.tgz", + "integrity": "sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==", "dev": true, "license": "MIT" }, @@ -7491,9 +8061,9 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", "dev": true, "license": "MIT" }, @@ -7523,9 +8093,9 @@ } }, "node_modules/loupe": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz", - "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", "dev": true, "license": "MIT" }, @@ -7550,13 +8120,13 @@ } }, "node_modules/magic-string": { - "version": "0.30.14", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.14.tgz", - "integrity": "sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==", + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" + "@jridgewell/sourcemap-codec": "^1.5.5" } }, "node_modules/map-or-similar": { @@ -7620,6 +8190,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -7629,6 +8200,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, "license": "MIT", "dependencies": { "braces": "^3.0.3", @@ -7638,6 +8210,19 @@ "node": ">=8.6" } }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -7670,16 +8255,19 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" - } + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/minimist": { "version": "1.2.8", @@ -7702,18 +8290,18 @@ } }, "node_modules/motion-dom": { - "version": "12.23.9", - "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.23.9.tgz", - "integrity": "sha512-6Sv++iWS8XMFCgU1qwKj9l4xuC47Hp4+2jvPfyTXkqDg2tTzSgX6nWKD4kNFXk0k7llO59LZTPuJigza4A2K1A==", + "version": "12.29.2", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.29.2.tgz", + "integrity": "sha512-/k+NuycVV8pykxyiTCoFzIVLA95Nb1BFIVvfSu9L50/6K6qNeAYtkxXILy/LRutt7AzaYDc2myj0wkCVVYAPPA==", "license": "MIT", "dependencies": { - "motion-utils": "^12.23.6" + "motion-utils": "^12.29.2" } }, "node_modules/motion-utils": { - "version": "12.23.6", - "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.23.6.tgz", - "integrity": "sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==", + "version": "12.29.2", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.29.2.tgz", + "integrity": "sha512-G3kc34H2cX2gI63RqU+cZq+zWRRPSsNIOjpdl9TN4AQwC4sgwYPl/Q/Obf/d53nOm569T0fYK+tcoSV50BWx8A==", "license": "MIT" }, "node_modules/ms": { @@ -7723,30 +8311,30 @@ "license": "MIT" }, "node_modules/msw": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/msw/-/msw-2.7.0.tgz", - "integrity": "sha512-BIodwZ19RWfCbYTxWTUfTXc+sg4OwjCAgxU1ZsgmggX/7S3LdUifsbUPJs61j0rWb19CZRGY5if77duhc0uXzw==", + "version": "2.12.7", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.12.7.tgz", + "integrity": "sha512-retd5i3xCZDVWMYjHEVuKTmhqY8lSsxujjVrZiGbbdoxxIBg5S7rCuYy/YQpfrTYIxpd/o0Kyb/3H+1udBMoYg==", "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { - "@bundled-es-modules/cookie": "^2.0.1", - "@bundled-es-modules/statuses": "^1.0.1", - "@bundled-es-modules/tough-cookie": "^0.1.6", "@inquirer/confirm": "^5.0.0", - "@mswjs/interceptors": "^0.37.0", + "@mswjs/interceptors": "^0.40.0", "@open-draft/deferred-promise": "^2.2.0", - "@open-draft/until": "^2.1.0", - "@types/cookie": "^0.6.0", - "@types/statuses": "^2.0.4", - "graphql": "^16.8.1", + "@types/statuses": "^2.0.6", + "cookie": "^1.0.2", + "graphql": "^16.12.0", "headers-polyfill": "^4.0.2", "is-node-process": "^1.2.0", "outvariant": "^1.4.3", "path-to-regexp": "^6.3.0", "picocolors": "^1.1.1", + "rettime": "^0.7.0", + "statuses": "^2.0.2", "strict-event-emitter": "^0.5.1", - "type-fest": "^4.26.1", + "tough-cookie": "^6.0.0", + "type-fest": "^5.2.0", + "until-async": "^3.0.2", "yargs": "^17.7.2" }, "bin": { @@ -7768,9 +8356,9 @@ } }, "node_modules/msw-storybook-addon": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/msw-storybook-addon/-/msw-storybook-addon-2.0.4.tgz", - "integrity": "sha512-rstO8+r01sRMg6PPP7OxM8LG5/6r4+wmp2uapHeHvm9TQQRHvpPXOU/Y9/Somysz8Oi4Ea1aummXH3JlnP2LIA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/msw-storybook-addon/-/msw-storybook-addon-2.0.6.tgz", + "integrity": "sha512-ExCwDbcJoM2V3iQU+fZNp+axVfNc7DWMRh4lyTXebDO8IbpUNYKGFUrA8UqaeWiRGKVuS7+fU+KXEa9b0OP6uA==", "dev": true, "license": "MIT", "dependencies": { @@ -7781,13 +8369,16 @@ } }, "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": "5.4.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.4.3.tgz", + "integrity": "sha512-AXSAQJu79WGc79/3e9/CR77I/KQgeY1AhNvcShIH4PTcGYyC4xv6H4R4AUOwkPS5799KlVDAu8zExeCrkGquiA==", "dev": true, "license": "(MIT OR CC0-1.0)", + "dependencies": { + "tagged-tag": "^1.0.0" + }, "engines": { - "node": ">=16" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7816,9 +8407,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -7883,9 +8474,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", "dev": true, "license": "MIT" }, @@ -7899,23 +8490,6 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nwsapi": { - "version": "2.2.16", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.16.tgz", - "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==", - "dev": true, - "license": "MIT" - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -7937,9 +8511,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, "license": "MIT", "engines": { @@ -7981,15 +8555,16 @@ } }, "node_modules/object.entries": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "es-object-atoms": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -8048,6 +8623,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, "node_modules/open": { "version": "8.4.2", "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", @@ -8089,6 +8675,24 @@ "dev": true, "license": "MIT" }, + "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, + "license": "MIT", + "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", @@ -8164,13 +8768,13 @@ } }, "node_modules/parse5": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", - "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.0.tgz", + "integrity": "sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==", "dev": true, "license": "MIT", "dependencies": { - "entities": "^4.5.0" + "entities": "^6.0.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" @@ -8202,9 +8806,9 @@ "license": "MIT" }, "node_modules/path-scurry": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", - "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -8219,11 +8823,11 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", - "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } @@ -8246,16 +8850,16 @@ } }, "node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", "dev": true, "license": "MIT" }, "node_modules/pathval": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", - "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", "dev": true, "license": "MIT", "engines": { @@ -8270,12 +8874,12 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -8292,9 +8896,9 @@ } }, "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "dev": true, "license": "MIT", "engines": { @@ -8315,9 +8919,9 @@ } }, "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, "license": "MIT", "engines": { @@ -8325,9 +8929,9 @@ } }, "node_modules/postcss": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, "funding": [ { @@ -8345,7 +8949,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.8", + "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -8372,10 +8976,20 @@ } }, "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", + "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { "camelcase-css": "^2.0.1" @@ -8383,18 +8997,14 @@ "engines": { "node": "^12 || ^14 || >= 16" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, "peerDependencies": { "postcss": "^8.4.21" } }, "node_modules/postcss-load-config": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", - "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz", + "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==", "dev": true, "funding": [ { @@ -8408,21 +9018,28 @@ ], "license": "MIT", "dependencies": { - "lilconfig": "^3.0.0", - "yaml": "^2.3.4" + "lilconfig": "^3.1.1" }, "engines": { - "node": ">= 14" + "node": ">= 18" }, "peerDependencies": { + "jiti": ">=1.21.0", "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" + "tsx": "^4.8.1", + "yaml": "^2.4.2" }, "peerDependenciesMeta": { + "jiti": { + "optional": true + }, "postcss": { "optional": true }, - "ts-node": { + "tsx": { + "optional": true + }, + "yaml": { "optional": true } } @@ -8453,6 +9070,20 @@ "postcss": "^8.2.14" } }, + "node_modules/postcss-nested/node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/postcss-resolve-nested-selector": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", @@ -8488,9 +9119,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "dev": true, "license": "MIT", "dependencies": { @@ -8518,9 +9149,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.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", "dev": true, "license": "MIT", "bin": { @@ -8534,9 +9165,9 @@ } }, "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", + "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", "dev": true, "license": "MIT", "dependencies": { @@ -8547,9 +9178,9 @@ } }, "node_modules/prettier-plugin-tailwindcss": { - "version": "0.6.9", - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.9.tgz", - "integrity": "sha512-r0i3uhaZAXYP0At5xGfJH876W3HHGHDp+LCRUJrs57PBeQ6mYHMwr25KH8NPX44F2yGTvdnH7OqCshlQx183Eg==", + "version": "0.6.14", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.14.tgz", + "integrity": "sha512-pi2e/+ZygeIqntN+vC573BcW5Cve8zUB0SSAGxqpB4f96boZF4M3phPVoOFCeypwkpRYdi7+jQ5YJJUwrkGUAg==", "dev": true, "license": "MIT", "engines": { @@ -8557,10 +9188,12 @@ }, "peerDependencies": { "@ianvs/prettier-plugin-sort-imports": "*", + "@prettier/plugin-hermes": "*", + "@prettier/plugin-oxc": "*", "@prettier/plugin-pug": "*", "@shopify/prettier-plugin-liquid": "*", "@trivago/prettier-plugin-sort-imports": "*", - "@zackad/prettier-plugin-twig-melody": "*", + "@zackad/prettier-plugin-twig": "*", "prettier": "^3.0", "prettier-plugin-astro": "*", "prettier-plugin-css-order": "*", @@ -8578,6 +9211,12 @@ "@ianvs/prettier-plugin-sort-imports": { "optional": true }, + "@prettier/plugin-hermes": { + "optional": true + }, + "@prettier/plugin-oxc": { + "optional": true + }, "@prettier/plugin-pug": { "optional": true }, @@ -8587,7 +9226,7 @@ "@trivago/prettier-plugin-sort-imports": { "optional": true }, - "@zackad/prettier-plugin-twig-melody": { + "@zackad/prettier-plugin-twig": { "optional": true }, "prettier-plugin-astro": { @@ -8640,16 +9279,6 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/pretty-format/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", @@ -8663,13 +9292,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/pretty-format/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true, - "license": "MIT" - }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -8692,25 +9314,19 @@ "react-is": "^16.13.1" } }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT" + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "license": "MIT" }, - "node_modules/psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/lupomontero" - } - }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -8720,6 +9336,19 @@ "node": ">=6" } }, + "node_modules/qified": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/qified/-/qified-0.6.0.tgz", + "integrity": "sha512-tsSGN1x3h569ZSU1u6diwhltLyfUWDp3YbFHedapTmpBl0B3P6U3+Qptg7xu+v+1io1EwhdPyyRHYbEw0KN2FA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hookified": "^1.14.0" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/qrcode.react": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/qrcode.react/-/qrcode.react-4.2.0.tgz", @@ -8729,17 +9358,11 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true, - "license": "MIT" - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, "funding": [ { "type": "github", @@ -8769,25 +9392,25 @@ } }, "node_modules/react-confetti": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/react-confetti/-/react-confetti-6.1.0.tgz", - "integrity": "sha512-7Ypx4vz0+g8ECVxr88W9zhcQpbeujJAVqL14ZnXJ3I23mOI9/oBVTQ3dkJhUmB0D6XOtCZEM6N0Gm9PMngkORw==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/react-confetti/-/react-confetti-6.4.0.tgz", + "integrity": "sha512-5MdGUcqxrTU26I2EU7ltkWPwxvucQTuqMm8dUz72z2YMqTD6s9vMcDUysk7n9jnC+lXuCPeJJ7Knf98VEYE9Rg==", "dev": true, "license": "MIT", "dependencies": { "tween-functions": "^1.2.0" }, "engines": { - "node": ">=10.18" + "node": ">=16" }, "peerDependencies": { - "react": "^16.3.0 || ^17.0.1 || ^18.0.0" + "react": "^16.3.0 || ^17.0.1 || ^18.0.0 || ^19.0.0" } }, "node_modules/react-docgen": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.1.0.tgz", - "integrity": "sha512-APPU8HB2uZnpl6Vt/+0AFoVYgSRtfiP6FLrZgPPTDmqSb2R4qZRbgd0A3VzIFxDt5e+Fozjx79WjLWnF69DK8g==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.1.1.tgz", + "integrity": "sha512-hlSJDQ2synMPKFZOsKo9Hi8WWZTC7POR8EmWvTSjow+VDgKzkmjQvFm2fk0tmRw+f0vTOIYKlarR0iL4996pdg==", "dev": true, "license": "MIT", "dependencies": { @@ -8807,9 +9430,9 @@ } }, "node_modules/react-docgen-typescript": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz", - "integrity": "sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.4.0.tgz", + "integrity": "sha512-ZtAp5XTO5HRzQctjPU0ybY0RRCQO19X/8fxn3w7y2VVTUbGHDKULPTL4ky3vB05euSgG5NpALhEhDPvQ56wvXg==", "dev": true, "license": "MIT", "peerDependencies": { @@ -8849,16 +9472,17 @@ "license": "MIT" }, "node_modules/react-i18next": { - "version": "15.7.3", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-15.7.3.tgz", - "integrity": "sha512-AANws4tOE+QSq/IeMF/ncoHlMNZaVLxpa5uUGW1wjike68elVYr0018L9xYoqBr1OFO7G7boDPrbn0HpMCJxTw==", + "version": "16.5.4", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-16.5.4.tgz", + "integrity": "sha512-6yj+dcfMncEC21QPhOTsW8mOSO+pzFmT6uvU7XXdvM/Cp38zJkmTeMeKmTrmCMD5ToT79FmiE/mRWiYWcJYW4g==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.27.6", - "html-parse-stringify": "^3.0.1" + "@babel/runtime": "^7.28.4", + "html-parse-stringify": "^3.0.1", + "use-sync-external-store": "^1.6.0" }, "peerDependencies": { - "i18next": ">= 25.4.1", + "i18next": ">= 25.6.2", "react": ">= 16.8.0", "typescript": "^5" }, @@ -8875,25 +9499,25 @@ } }, "node_modules/react-icons": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.4.0.tgz", - "integrity": "sha512-7eltJxgVt7X64oHh6wSWNwwbKTCtMfK35hcjvJS0yxEAhPM8oUKdS3+kqaW1vicIltw+kR2unHaa12S9pPALoQ==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.5.0.tgz", + "integrity": "sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==", "license": "MIT", "peerDependencies": { "react": "*" } }, "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true, "license": "MIT" }, "node_modules/react-refresh": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", - "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", + "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", "dev": true, "license": "MIT", "engines": { @@ -8901,9 +9525,9 @@ } }, "node_modules/react-router": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.0.tgz", - "integrity": "sha512-GGufuHIVCJDbnIAXP3P9Sxzq3UUsddG3rrI3ut1q6m0FI6vxVBF3JoPQ38+W/blslLH4a5Yutp8drkEpXoddGQ==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.13.0.tgz", + "integrity": "sha512-PZgus8ETambRT17BUm/LL8lX3Of+oiLaPuVTRH3l1eLvSPpKO3AvhAEb5N7ihAFZQrYDqkvvWfFh9p0z9VsjLw==", "license": "MIT", "dependencies": { "cookie": "^1.0.1", @@ -8923,12 +9547,12 @@ } }, "node_modules/react-router-dom": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.6.0.tgz", - "integrity": "sha512-DYgm6RDEuKdopSyGOWZGtDfSm7Aofb8CCzgkliTjtu/eDuB0gcsv6qdFhhi8HdtmA+KHkt5MfZ5K2PdzjugYsA==", + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.13.0.tgz", + "integrity": "sha512-5CO/l5Yahi2SKC6rGZ+HDEjpjkGaG/ncEP7eWFTvFxbHP8yeeI0PxTDjimtpXYlR3b3i9/WIL4VJttPrESIf2g==", "license": "MIT", "dependencies": { - "react-router": "7.6.0" + "react-router": "7.13.0" }, "engines": { "node": ">=20.0.0" @@ -8961,10 +9585,23 @@ "node": ">=8.10.0" } }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/recast": { - "version": "0.23.9", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz", - "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==", + "version": "0.23.11", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz", + "integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==", "dev": true, "license": "MIT", "dependencies": { @@ -9006,19 +9643,19 @@ } }, "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, "license": "MIT", "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": { @@ -9029,15 +9666,17 @@ } }, "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, "license": "MIT", "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": { @@ -9066,27 +9705,23 @@ "node": ">=0.10.0" } }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true, - "license": "MIT" - }, "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9110,10 +9745,18 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, + "node_modules/rettime": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rettime/-/rettime-0.7.0.tgz", + "integrity": "sha512-LPRKoHnLKd/r3dVxcwO7vhCW+orkOGj9ViueosEBK6ie89CijnfRlhaDhHq/3Hxu4CkWQtxwlBG0mzTQY6uQjw==", + "dev": true, + "license": "MIT" + }, "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, "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -9121,13 +9764,13 @@ } }, "node_modules/rollup": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.2.tgz", - "integrity": "sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz", + "integrity": "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==", "devOptional": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.7" + "@types/estree": "1.0.8" }, "bin": { "rollup": "dist/bin/rollup" @@ -9137,26 +9780,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.40.2", - "@rollup/rollup-android-arm64": "4.40.2", - "@rollup/rollup-darwin-arm64": "4.40.2", - "@rollup/rollup-darwin-x64": "4.40.2", - "@rollup/rollup-freebsd-arm64": "4.40.2", - "@rollup/rollup-freebsd-x64": "4.40.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.40.2", - "@rollup/rollup-linux-arm-musleabihf": "4.40.2", - "@rollup/rollup-linux-arm64-gnu": "4.40.2", - "@rollup/rollup-linux-arm64-musl": "4.40.2", - "@rollup/rollup-linux-loongarch64-gnu": "4.40.2", - "@rollup/rollup-linux-powerpc64le-gnu": "4.40.2", - "@rollup/rollup-linux-riscv64-gnu": "4.40.2", - "@rollup/rollup-linux-riscv64-musl": "4.40.2", - "@rollup/rollup-linux-s390x-gnu": "4.40.2", - "@rollup/rollup-linux-x64-gnu": "4.40.2", - "@rollup/rollup-linux-x64-musl": "4.40.2", - "@rollup/rollup-win32-arm64-msvc": "4.40.2", - "@rollup/rollup-win32-ia32-msvc": "4.40.2", - "@rollup/rollup-win32-x64-msvc": "4.40.2", + "@rollup/rollup-android-arm-eabi": "4.57.1", + "@rollup/rollup-android-arm64": "4.57.1", + "@rollup/rollup-darwin-arm64": "4.57.1", + "@rollup/rollup-darwin-x64": "4.57.1", + "@rollup/rollup-freebsd-arm64": "4.57.1", + "@rollup/rollup-freebsd-x64": "4.57.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.57.1", + "@rollup/rollup-linux-arm-musleabihf": "4.57.1", + "@rollup/rollup-linux-arm64-gnu": "4.57.1", + "@rollup/rollup-linux-arm64-musl": "4.57.1", + "@rollup/rollup-linux-loong64-gnu": "4.57.1", + "@rollup/rollup-linux-loong64-musl": "4.57.1", + "@rollup/rollup-linux-ppc64-gnu": "4.57.1", + "@rollup/rollup-linux-ppc64-musl": "4.57.1", + "@rollup/rollup-linux-riscv64-gnu": "4.57.1", + "@rollup/rollup-linux-riscv64-musl": "4.57.1", + "@rollup/rollup-linux-s390x-gnu": "4.57.1", + "@rollup/rollup-linux-x64-gnu": "4.57.1", + "@rollup/rollup-linux-x64-musl": "4.57.1", + "@rollup/rollup-openbsd-x64": "4.57.1", + "@rollup/rollup-openharmony-arm64": "4.57.1", + "@rollup/rollup-win32-arm64-msvc": "4.57.1", + "@rollup/rollup-win32-ia32-msvc": "4.57.1", + "@rollup/rollup-win32-x64-gnu": "4.57.1", + "@rollup/rollup-win32-x64-msvc": "4.57.1", "fsevents": "~2.3.2" } }, @@ -9190,38 +9838,20 @@ } } }, - "node_modules/rollup-plugin-visualizer/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/rollup-plugin-visualizer/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", "license": "BSD-3-Clause", "engines": { - "node": ">= 8" + "node": ">= 12" } }, - "node_modules/rrweb-cssom": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", - "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==", - "dev": true, - "license": "MIT" - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, "funding": [ { "type": "github", @@ -9261,6 +9891,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "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, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-regex-test": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", @@ -9279,13 +9926,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "license": "MIT" - }, "node_modules/saxes": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", @@ -9309,19 +9949,21 @@ } }, "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "license": "ISC", "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/set-cookie-parser": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", - "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", "license": "MIT" }, "node_modules/set-function-length": { @@ -9358,6 +10000,21 @@ "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, + "license": "MIT", + "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", @@ -9554,9 +10211,9 @@ "license": "MIT" }, "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "dev": true, "license": "MIT", "engines": { @@ -9564,20 +10221,34 @@ } }, "node_modules/std-env": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz", - "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", "dev": true, "license": "MIT" }, - "node_modules/storybook": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.6.0.tgz", - "integrity": "sha512-NEHCK2nXogw7WxAkJfMwPnc5Cmh/KqVNrdaFeXBAKhC2Zr1FTZIiCR5nSUT85run44Wkpmo7qvUoKvII9GOWbA==", + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core": "8.6.0" + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/storybook": { + "version": "8.6.15", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.6.15.tgz", + "integrity": "sha512-Ob7DMlwWx8s7dMvcQ3xPc02TvUeralb+xX3oaPRk9wY9Hc6M1IBC/7cEoITkSmRS2v38DHubC+mtEKNc1u2gQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/core": "8.6.15" }, "bin": { "getstorybook": "bin/index.cjs", @@ -9605,21 +10276,17 @@ "license": "MIT" }, "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/string-width-cjs": { @@ -9638,28 +10305,36 @@ "node": ">=8" } }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { "node": ">=8" } }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { + "node_modules/string-width/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, "license": "MIT" }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { + "node_modules/string-width/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -9782,9 +10457,9 @@ } }, "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "dev": true, "license": "MIT", "dependencies": { @@ -9811,14 +10486,17 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/strip-bom": { @@ -9832,14 +10510,11 @@ } }, "node_modules/strip-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", - "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.1.1.tgz", + "integrity": "sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==", "dev": true, "license": "MIT", - "dependencies": { - "min-indent": "^1.0.1" - }, "engines": { "node": ">=12" }, @@ -9860,9 +10535,9 @@ } }, "node_modules/stylelint": { - "version": "16.11.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.11.0.tgz", - "integrity": "sha512-zrl4IrKmjJQ+h9FoMp69UMCq5SxeHk0URhxUBj4d3ISzo/DplOFBJZc7t7Dr6otB+1bfbbKNLOmCDpzKSlW+Nw==", + "version": "16.26.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.26.1.tgz", + "integrity": "sha512-v20V59/crfc8sVTAtge0mdafI3AdnzQ2KsWe6v523L4OA1bJO02S7MO2oyXDCS6iWb9ckIPnqAFVItqSBQr7jw==", "dev": true, "funding": [ { @@ -9876,43 +10551,44 @@ ], "license": "MIT", "dependencies": { - "@csstools/css-parser-algorithms": "^3.0.4", - "@csstools/css-tokenizer": "^3.0.3", - "@csstools/media-query-list-parser": "^4.0.2", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-syntax-patches-for-csstree": "^1.0.19", + "@csstools/css-tokenizer": "^3.0.4", + "@csstools/media-query-list-parser": "^4.0.3", "@csstools/selector-specificity": "^5.0.0", - "@dual-bundle/import-meta-resolve": "^4.1.0", + "@dual-bundle/import-meta-resolve": "^4.2.1", "balanced-match": "^2.0.0", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", "css-functions-list": "^3.2.3", - "css-tree": "^3.0.1", - "debug": "^4.3.7", - "fast-glob": "^3.3.2", + "css-tree": "^3.1.0", + "debug": "^4.4.3", + "fast-glob": "^3.3.3", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^9.1.0", + "file-entry-cache": "^11.1.1", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", "html-tags": "^3.3.1", - "ignore": "^6.0.2", + "ignore": "^7.0.5", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.35.0", + "known-css-properties": "^0.37.0", "mathml-tag-names": "^2.1.3", "meow": "^13.2.0", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "picocolors": "^1.1.1", - "postcss": "^8.4.49", + "postcss": "^8.5.6", "postcss-resolve-nested-selector": "^0.1.6", "postcss-safe-parser": "^7.0.1", - "postcss-selector-parser": "^7.0.0", + "postcss-selector-parser": "^7.1.0", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", - "supports-hyperlinks": "^3.1.0", + "supports-hyperlinks": "^3.2.0", "svg-tags": "^1.0.0", - "table": "^6.8.2", + "table": "^6.9.0", "write-file-atomic": "^5.0.1" }, "bin": { @@ -9956,39 +10632,6 @@ "tailwindcss": ">=2.2.16" } }, - "node_modules/stylelint/node_modules/@csstools/selector-specificity": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", - "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT-0", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "postcss-selector-parser": "^7.0.0" - } - }, - "node_modules/stylelint/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/stylelint/node_modules/balanced-match": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", @@ -9996,64 +10639,38 @@ "dev": true, "license": "MIT" }, - "node_modules/stylelint/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, "node_modules/stylelint/node_modules/file-entry-cache": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz", - "integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==", + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-11.1.2.tgz", + "integrity": "sha512-N2WFfK12gmrK1c1GXOqiAJ1tc5YE+R53zvQ+t5P8S5XhnmKYVB5eZEiLNZKDSmoG8wqqbF9EXYBBW/nef19log==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^5.0.0" - }, - "engines": { - "node": ">=18" + "flat-cache": "^6.1.20" } }, "node_modules/stylelint/node_modules/flat-cache": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", - "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", + "version": "6.1.20", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.20.tgz", + "integrity": "sha512-AhHYqwvN62NVLp4lObVXGVluiABTHapoB57EyegZVmazN+hhGhLTn3uZbOofoTw4DSDvVCadzzyChXhOAvy8uQ==", "dev": true, "license": "MIT", "dependencies": { - "flatted": "^3.3.1", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=18" + "cacheable": "^2.3.2", + "flatted": "^3.3.3", + "hookified": "^1.15.0" } }, "node_modules/stylelint/node_modules/ignore": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz", - "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, "license": "MIT", "engines": { "node": ">= 4" } }, - "node_modules/stylelint/node_modules/postcss-selector-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", - "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/stylelint/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -10064,47 +10681,19 @@ "node": ">=8" } }, - "node_modules/stylelint/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/stylelint/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/sucrase": { - "version": "3.35.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", - "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", - "glob": "^10.3.10", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", "ts-interface-checker": "^0.1.9" }, "bin": { @@ -10115,93 +10704,6 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/sucrase/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/sucrase/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sucrase/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/sucrase/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/sucrase/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sucrase/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10215,9 +10717,9 @@ } }, "node_modules/supports-hyperlinks": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", - "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", + "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", "dev": true, "license": "MIT", "dependencies": { @@ -10228,7 +10730,7 @@ "node": ">=14.18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" } }, "node_modules/supports-preserve-symlinks-flag": { @@ -10258,20 +10760,19 @@ "license": "MIT" }, "node_modules/synckit": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", - "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==", + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", "dev": true, "license": "MIT", "dependencies": { - "@pkgr/core": "^0.1.0", - "tslib": "^2.6.2" + "@pkgr/core": "^0.2.9" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/unts" + "url": "https://opencollective.com/synckit" } }, "node_modules/table": { @@ -10308,23 +10809,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/table/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, "node_modules/table/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -10332,38 +10816,36 @@ "dev": true, "license": "MIT" }, - "node_modules/table/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/table/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/table/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/tagged-tag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz", + "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/tailwindcss": { - "version": "3.4.17", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", - "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", + "version": "3.4.19", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz", + "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10375,7 +10857,7 @@ "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "jiti": "^1.21.6", + "jiti": "^1.21.7", "lilconfig": "^3.1.3", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", @@ -10384,7 +10866,7 @@ "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.2", + "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", "postcss-nested": "^6.2.0", "postcss-selector-parser": "^6.1.2", "resolve": "^1.22.8", @@ -10398,6 +10880,20 @@ "node": ">=14.0.0" } }, + "node_modules/tailwindcss/node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", @@ -10436,21 +10932,23 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.1.tgz", - "integrity": "sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/tinyglobby": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", - "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", - "dev": true, + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "license": "MIT", "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" + "fdir": "^6.5.0", + "picomatch": "^4.0.3" }, "engines": { "node": ">=12.0.0" @@ -10459,44 +10957,6 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", - "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/tinypool": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz", - "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.0.0 || >=20.0.0" - } - }, "node_modules/tinyrainbow": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", @@ -10518,29 +10978,29 @@ } }, "node_modules/tldts": { - "version": "6.1.66", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.66.tgz", - "integrity": "sha512-l3ciXsYFel/jSRfESbyKYud1nOw7WfhrBEF9I3UiarYk/qEaOOwu3qXNECHw4fHGHGTEOuhf/VdKgoDX5M/dhQ==", + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.21.tgz", + "integrity": "sha512-Plu6V8fF/XU6d2k8jPtlQf5F4Xx2hAin4r2C2ca7wR8NK5MbRTo9huLUWRe28f3Uk8bYZfg74tit/dSjc18xnw==", "dev": true, "license": "MIT", "dependencies": { - "tldts-core": "^6.1.66" + "tldts-core": "^7.0.21" }, "bin": { "tldts": "bin/cli.js" } }, "node_modules/tldts-core": { - "version": "6.1.66", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.66.tgz", - "integrity": "sha512-s07jJruSwndD2X8bVjwioPfqpIc1pDTzszPe9pL1Skbh4bjytL85KNQ3tolqLbCvpQHawIsGfFi9dgerWjqW4g==", + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.21.tgz", + "integrity": "sha512-oVOMdHvgjqyzUZH1rOESgJP1uNe2bVrfK0jUHHmiM2rpEiRbf3j4BrsIc6JigJRbHGanQwuZv/R+LTcHsw+bLA==", "dev": true, "license": "MIT" }, "node_modules/tmp": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", - "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", + "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", "license": "MIT", "engines": { "node": ">=14.14" @@ -10550,6 +11010,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -10559,41 +11020,41 @@ } }, "node_modules/tough-cookie": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.0.0.tgz", - "integrity": "sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.0.tgz", + "integrity": "sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "tldts": "^6.1.32" + "tldts": "^7.0.5" }, "engines": { "node": ">=16" } }, "node_modules/tr46": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", - "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz", + "integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==", "dev": true, "license": "MIT", "dependencies": { "punycode": "^2.3.1" }, "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", + "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18.12" }, "peerDependencies": { - "typescript": ">=4.2.0" + "typescript": ">=4.8.4" } }, "node_modules/ts-dedent": { @@ -10614,29 +11075,18 @@ "license": "Apache-2.0" }, "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", "dev": true, "license": "MIT", "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", + "json5": "^2.2.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" }, - "bin": { - "json5": "lib/cli.js" + "engines": { + "node": ">=6" } }, "node_modules/tslib": { @@ -10666,9 +11116,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.0.tgz", - "integrity": "sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", + "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", "cpu": [ "ppc64" ], @@ -10683,9 +11133,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/android-arm": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.0.tgz", - "integrity": "sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", + "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", "cpu": [ "arm" ], @@ -10700,9 +11150,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/android-arm64": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.0.tgz", - "integrity": "sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", + "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", "cpu": [ "arm64" ], @@ -10717,9 +11167,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/android-x64": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.0.tgz", - "integrity": "sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", + "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", "cpu": [ "x64" ], @@ -10734,9 +11184,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.0.tgz", - "integrity": "sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", + "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", "cpu": [ "arm64" ], @@ -10751,9 +11201,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/darwin-x64": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.0.tgz", - "integrity": "sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", + "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", "cpu": [ "x64" ], @@ -10768,9 +11218,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.0.tgz", - "integrity": "sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", + "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", "cpu": [ "arm64" ], @@ -10785,9 +11235,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.0.tgz", - "integrity": "sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", + "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", "cpu": [ "x64" ], @@ -10802,9 +11252,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/linux-arm": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.0.tgz", - "integrity": "sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", + "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", "cpu": [ "arm" ], @@ -10819,9 +11269,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/linux-arm64": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.0.tgz", - "integrity": "sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", + "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", "cpu": [ "arm64" ], @@ -10836,9 +11286,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/linux-ia32": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.0.tgz", - "integrity": "sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", + "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", "cpu": [ "ia32" ], @@ -10853,9 +11303,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/linux-loong64": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.0.tgz", - "integrity": "sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", + "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", "cpu": [ "loong64" ], @@ -10870,9 +11320,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.0.tgz", - "integrity": "sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", + "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", "cpu": [ "mips64el" ], @@ -10887,9 +11337,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.0.tgz", - "integrity": "sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", + "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", "cpu": [ "ppc64" ], @@ -10904,9 +11354,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.0.tgz", - "integrity": "sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", + "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", "cpu": [ "riscv64" ], @@ -10921,9 +11371,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/linux-s390x": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.0.tgz", - "integrity": "sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", + "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", "cpu": [ "s390x" ], @@ -10938,9 +11388,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/linux-x64": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.0.tgz", - "integrity": "sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", + "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", "cpu": [ "x64" ], @@ -10955,9 +11405,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.0.tgz", - "integrity": "sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", + "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", "cpu": [ "arm64" ], @@ -10972,9 +11422,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.0.tgz", - "integrity": "sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", + "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", "cpu": [ "x64" ], @@ -10989,9 +11439,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.0.tgz", - "integrity": "sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", + "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", "cpu": [ "arm64" ], @@ -11006,9 +11456,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.0.tgz", - "integrity": "sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", + "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", "cpu": [ "x64" ], @@ -11022,10 +11472,27 @@ "node": ">=18" } }, + "node_modules/tsx/node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", + "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/tsx/node_modules/@esbuild/sunos-x64": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.0.tgz", - "integrity": "sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", + "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", "cpu": [ "x64" ], @@ -11040,9 +11507,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/win32-arm64": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.0.tgz", - "integrity": "sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", + "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", "cpu": [ "arm64" ], @@ -11057,9 +11524,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/win32-ia32": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.0.tgz", - "integrity": "sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", + "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", "cpu": [ "ia32" ], @@ -11074,9 +11541,9 @@ } }, "node_modules/tsx/node_modules/@esbuild/win32-x64": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.0.tgz", - "integrity": "sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", + "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", "cpu": [ "x64" ], @@ -11091,9 +11558,9 @@ } }, "node_modules/tsx/node_modules/esbuild": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.0.tgz", - "integrity": "sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", + "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -11104,32 +11571,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.0", - "@esbuild/android-arm": "0.27.0", - "@esbuild/android-arm64": "0.27.0", - "@esbuild/android-x64": "0.27.0", - "@esbuild/darwin-arm64": "0.27.0", - "@esbuild/darwin-x64": "0.27.0", - "@esbuild/freebsd-arm64": "0.27.0", - "@esbuild/freebsd-x64": "0.27.0", - "@esbuild/linux-arm": "0.27.0", - "@esbuild/linux-arm64": "0.27.0", - "@esbuild/linux-ia32": "0.27.0", - "@esbuild/linux-loong64": "0.27.0", - "@esbuild/linux-mips64el": "0.27.0", - "@esbuild/linux-ppc64": "0.27.0", - "@esbuild/linux-riscv64": "0.27.0", - "@esbuild/linux-s390x": "0.27.0", - "@esbuild/linux-x64": "0.27.0", - "@esbuild/netbsd-arm64": "0.27.0", - "@esbuild/netbsd-x64": "0.27.0", - "@esbuild/openbsd-arm64": "0.27.0", - "@esbuild/openbsd-x64": "0.27.0", - "@esbuild/openharmony-arm64": "0.27.0", - "@esbuild/sunos-x64": "0.27.0", - "@esbuild/win32-arm64": "0.27.0", - "@esbuild/win32-ia32": "0.27.0", - "@esbuild/win32-x64": "0.27.0" + "@esbuild/aix-ppc64": "0.27.2", + "@esbuild/android-arm": "0.27.2", + "@esbuild/android-arm64": "0.27.2", + "@esbuild/android-x64": "0.27.2", + "@esbuild/darwin-arm64": "0.27.2", + "@esbuild/darwin-x64": "0.27.2", + "@esbuild/freebsd-arm64": "0.27.2", + "@esbuild/freebsd-x64": "0.27.2", + "@esbuild/linux-arm": "0.27.2", + "@esbuild/linux-arm64": "0.27.2", + "@esbuild/linux-ia32": "0.27.2", + "@esbuild/linux-loong64": "0.27.2", + "@esbuild/linux-mips64el": "0.27.2", + "@esbuild/linux-ppc64": "0.27.2", + "@esbuild/linux-riscv64": "0.27.2", + "@esbuild/linux-s390x": "0.27.2", + "@esbuild/linux-x64": "0.27.2", + "@esbuild/netbsd-arm64": "0.27.2", + "@esbuild/netbsd-x64": "0.27.2", + "@esbuild/openbsd-arm64": "0.27.2", + "@esbuild/openbsd-x64": "0.27.2", + "@esbuild/openharmony-arm64": "0.27.2", + "@esbuild/sunos-x64": "0.27.2", + "@esbuild/win32-arm64": "0.27.2", + "@esbuild/win32-ia32": "0.27.2", + "@esbuild/win32-x64": "0.27.2" } }, "node_modules/tween-functions": { @@ -11243,9 +11710,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==", "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -11256,15 +11723,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.17.0.tgz", - "integrity": "sha512-409VXvFd/f1br1DCbuKNFqQpXICoTB+V51afcwG1pn1a3Cp92MqAUges3YjwEdQ0cMUoCIodjVDAYzyD8h3SYA==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.54.0.tgz", + "integrity": "sha512-CKsJ+g53QpsNPqbzUsfKVgd3Lny4yKZ1pP4qN3jdMOg/sisIDLGyDMezycquXLE5JsEU0wp3dGNdzig0/fmSVQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.17.0", - "@typescript-eslint/parser": "8.17.0", - "@typescript-eslint/utils": "8.17.0" + "@typescript-eslint/eslint-plugin": "8.54.0", + "@typescript-eslint/parser": "8.54.0", + "@typescript-eslint/typescript-estree": "8.54.0", + "@typescript-eslint/utils": "8.54.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11274,12 +11742,8 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/unbox-primitive": { @@ -11301,10 +11765,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.20.0.tgz", + "integrity": "sha512-MJZrkjyd7DeC+uPZh+5/YaMDxFiiEEaDgbUSVMXayofAkDWF1088CDo+2RPg7B1BuS1qf1vgNE7xqwPxE0DuSQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, "node_modules/undici-types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.13.0.tgz", - "integrity": "sha512-Ov2Rr9Sx+fRgagJ5AX0qvItZG/JKKoBRAVITs1zk7IqZGTJUwgUr7qoYBpWwakpWilTZFM98rG/AFRocu10iIQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "dev": true, "license": "MIT" }, @@ -11332,10 +11806,20 @@ "node": ">=14.0.0" } }, + "node_modules/until-async": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/until-async/-/until-async-3.0.2.tgz", + "integrity": "sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/kettanaito" + } + }, "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.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "dev": true, "funding": [ { @@ -11354,7 +11838,7 @@ "license": "MIT", "dependencies": { "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -11372,15 +11856,13 @@ "punycode": "^2.1.0" } }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", "license": "MIT", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/util": { @@ -11419,9 +11901,9 @@ } }, "node_modules/vite": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", - "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", + "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "dev": true, "license": "MIT", "dependencies": { @@ -11511,1167 +11993,157 @@ "node": "^18.19.0 || >=20.6.0" } }, - "node_modules/vite-node": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.9.tgz", - "integrity": "sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.3.7", - "es-module-lexer": "^1.5.4", - "pathe": "^1.1.2", - "vite": "^5.0.0" + "node_modules/vitest": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.18.tgz", + "integrity": "sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "4.0.18", + "@vitest/mocker": "4.0.18", + "@vitest/pretty-format": "4.0.18", + "@vitest/runner": "4.0.18", + "@vitest/snapshot": "4.0.18", + "@vitest/spy": "4.0.18", + "@vitest/utils": "4.0.18", + "es-module-lexer": "^1.7.0", + "expect-type": "^1.2.2", + "magic-string": "^0.30.21", + "obug": "^2.1.1", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "std-env": "^3.10.0", + "tinybench": "^2.9.0", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.0.3", + "vite": "^6.0.0 || ^7.0.0", + "why-is-node-running": "^2.3.0" }, "bin": { - "vite-node": "vite-node.mjs" + "vitest": "vitest.mjs" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" }, "funding": { "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.0.18", + "@vitest/browser-preview": "4.0.18", + "@vitest/browser-webdriverio": "4.0.18", + "@vitest/ui": "4.0.18", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } } }, - "node_modules/vite-node/node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], + "node_modules/vitest/node_modules/@vitest/expect": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz", + "integrity": "sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.0.18", + "@vitest/utils": "4.0.18", + "chai": "^6.2.1", + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/vite-node/node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "cpu": [ - "arm" - ], + "node_modules/vitest/node_modules/@vitest/pretty-format": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", + "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" + "dependencies": { + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/vite-node/node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "cpu": [ - "arm64" - ], + "node_modules/vitest/node_modules/@vitest/spy": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz", + "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/vite-node/node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "cpu": [ - "x64" - ], + "node_modules/vitest/node_modules/@vitest/utils": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz", + "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@vitest/pretty-format": "4.0.18", + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/vite-node/node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", - "cpu": [ - "arm64" - ], + "node_modules/vitest/node_modules/chai": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/vite-node/node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite-node/node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite-node/node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite-node/node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite-node/node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite-node/node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite-node/node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite-node/node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite-node/node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite-node/node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite-node/node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite-node/node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite-node/node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite-node/node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite-node/node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite-node/node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite-node/node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite-node/node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vite-node/node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" - } - }, - "node_modules/vite-node/node_modules/vite": { - "version": "5.4.19", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz", - "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/fdir": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", - "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/vitest": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.9.tgz", - "integrity": "sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/expect": "2.1.9", - "@vitest/mocker": "2.1.9", - "@vitest/pretty-format": "^2.1.9", - "@vitest/runner": "2.1.9", - "@vitest/snapshot": "2.1.9", - "@vitest/spy": "2.1.9", - "@vitest/utils": "2.1.9", - "chai": "^5.1.2", - "debug": "^4.3.7", - "expect-type": "^1.1.0", - "magic-string": "^0.30.12", - "pathe": "^1.1.2", - "std-env": "^3.8.0", - "tinybench": "^2.9.0", - "tinyexec": "^0.3.1", - "tinypool": "^1.0.1", - "tinyrainbow": "^1.2.0", - "vite": "^5.0.0", - "vite-node": "2.1.9", - "why-is-node-running": "^2.3.0" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "2.1.9", - "@vitest/ui": "2.1.9", - "happy-dom": "*", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@types/node": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - } - } - }, - "node_modules/vitest/node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/vitest/node_modules/@vitest/expect": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.9.tgz", - "integrity": "sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "2.1.9", - "@vitest/utils": "2.1.9", - "chai": "^5.1.2", - "tinyrainbow": "^1.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/vitest/node_modules/@vitest/mocker": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.9.tgz", - "integrity": "sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "2.1.9", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.12" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "msw": "^2.4.9", - "vite": "^5.0.0" - }, - "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, - "node_modules/vitest/node_modules/@vitest/spy": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.9.tgz", - "integrity": "sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyspy": "^3.0.2" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/vitest/node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" - } - }, - "node_modules/vitest/node_modules/estree-walker": { + "node_modules/vitest/node_modules/tinyrainbow": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/vitest/node_modules/vite": { - "version": "5.4.19", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz", - "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz", + "integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==", "dev": true, "license": "MIT", - "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" - }, - "bin": { - "vite": "bin/vite.js" - }, "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } + "node": ">=14.0.0" } }, "node_modules/void-elements": { @@ -12697,13 +12169,13 @@ } }, "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.1.tgz", + "integrity": "sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==", "dev": true, "license": "BSD-2-Clause", "engines": { - "node": ">=12" + "node": ">=20" } }, "node_modules/webpack-virtual-modules": { @@ -12713,41 +12185,29 @@ "dev": true, "license": "MIT" }, - "node_modules/whatwg-encoding": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-5.0.0.tgz", + "integrity": "sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/whatwg-url": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.1.0.tgz", - "integrity": "sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-16.0.0.tgz", + "integrity": "sha512-9CcxtEKsf53UFwkSUZjG+9vydAsFO4lFHBpJUtjBcoJOCJpKnSJNwCw813zrYJHpCJ7sgfbtOe0V5Ku7Pa1XMQ==", "dev": true, "license": "MIT", "dependencies": { - "tr46": "^5.0.0", - "webidl-conversions": "^7.0.0" + "@exodus/bytes": "^1.11.0", + "tr46": "^6.0.0", + "webidl-conversions": "^8.0.1" }, "engines": { - "node": ">=18" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, "node_modules/which": { @@ -12833,16 +12293,17 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.18", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", - "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "for-each": "^0.3.3", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, @@ -12880,21 +12341,18 @@ } }, "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=8" } }, "node_modules/wrap-ansi-cjs": { @@ -12916,39 +12374,20 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "node_modules/wrap-ansi/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", @@ -12961,19 +12400,6 @@ "node": ">=8" } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/write-file-atomic": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", @@ -12989,9 +12415,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.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", "dev": true, "license": "MIT", "engines": { @@ -13043,19 +12469,6 @@ "dev": true, "license": "ISC" }, - "node_modules/yaml": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", - "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", - "dev": true, - "license": "ISC", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -13083,47 +12496,6 @@ "node": ">=12" } }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -13137,9 +12509,9 @@ } }, "node_modules/yoctocolors-cjs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", - "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", + "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index 417f1bf5..da998cb2 100644 --- a/package.json +++ b/package.json @@ -19,12 +19,12 @@ "i18n:transform": "tsx scripts/i18nTransform.ts" }, "dependencies": { - "@tanstack/eslint-plugin-query": "^5.62.9", - "@tanstack/react-query": "^5.62.12", - "axios": "^1.7.9", + "@tanstack/eslint-plugin-query": "^5.91.4", + "@tanstack/react-query": "^5.90.20", + "axios": "^1.13.4", "clsx": "^2.1.1", - "framer-motion": "^12.23.11", - "i18next": "^25.5.2", + "framer-motion": "^12.29.3", + "i18next": "^25.8.0", "i18next-browser-languagedetector": "^8.2.0", "i18next-http-backend": "^3.0.2", "pako": "^2.1.0", @@ -32,9 +32,9 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "react-ga4": "^2.1.0", - "react-i18next": "^15.7.3", - "react-icons": "^5.4.0", - "react-router-dom": "^7.1.0", + "react-i18next": "^16.5.4", + "react-icons": "^5.5.0", + "react-router-dom": "^7.13.0", "vite-bundle-visualizer": "^1.2.1" }, "devDependencies": { @@ -44,28 +44,28 @@ "@babel/types": "^7.28.4", "@chromatic-com/storybook": "^3.2.2", "@eslint/js": "^9.15.0", - "@storybook/addon-essentials": "^8.6.0", - "@storybook/addon-interactions": "^8.6.0", - "@storybook/addon-onboarding": "^8.6.0", - "@storybook/blocks": "^8.6.0", - "@storybook/react": "^8.6.0", - "@storybook/react-vite": "^8.6.0", - "@storybook/test": "^8.6.0", + "@storybook/addon-essentials": "^8.6.15", + "@storybook/addon-interactions": "^8.6.15", + "@storybook/addon-onboarding": "^8.6.15", + "@storybook/blocks": "^8.6.15", + "@storybook/react": "^8.6.15", + "@storybook/react-vite": "^8.6.15", + "@storybook/test": "^8.6.15", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.1.0", "@testing-library/user-event": "^14.5.2", "@types/babel__traverse": "^7.28.0", "@types/glob": "^8.1.0", - "@types/jest": "^29.5.14", - "@types/node": "^24.6.0", + "@types/jest": "^30.0.0", + "@types/node": "^25.2.0", "@types/pako": "^2.0.3", - "@types/react": "^18.3.12", - "@types/react-dom": "^18.3.1", - "@vitejs/plugin-react": "^4.3.4", + "@types/react": "^18.3.27", + "@types/react-dom": "^18.3.7", + "@vitejs/plugin-react": "^5.1.3", "autoprefixer": "^10.4.20", "chromatic": "^11.20.2", - "eslint": "^9.17.0", + "eslint": "^9.39.2", "eslint-config-prettier": "^9.1.0", "eslint-import-resolver-node": "^0.3.9", "eslint-plugin-import": "^2.31.0", @@ -76,24 +76,24 @@ "eslint-plugin-react-refresh": "^0.4.14", "eslint-plugin-storybook": "^0.11.1", "eslint-plugin-tailwindcss": "^3.17.5", - "glob": "^11.0.3", - "globals": "^15.12.0", - "jsdom": "^25.0.1", - "msw": "^2.7.0", + "glob": "^13.0.0", + "globals": "^17.3.0", + "jsdom": "^28.0.0", + "msw": "^2.12.7", "msw-storybook-addon": "^2.0.4", "postcss": "^8.4.49", - "prettier": "^3.4.2", + "prettier": "^3.8.1", "prettier-plugin-tailwindcss": "^0.6.9", - "storybook": "^8.6.0", + "storybook": "^8.6.15", "stylelint": "^16.11.0", "stylelint-config-recommended": "^14.0.1", "stylelint-config-tailwindcss": "^0.0.7", "tailwindcss": "^3.4.16", "tsx": "^4.21.0", - "typescript": "^5.7.2", + "typescript": "5.7", "typescript-eslint": "^8.15.0", - "vite": "^6.0.1", - "vitest": "^2.1.8" + "vite": "^6.4.1", + "vitest": "^4.0.18" }, "eslintConfig": { "extends": [ diff --git a/public/mockServiceWorker.js b/public/mockServiceWorker.js index ec47a9a5..461e2600 100644 --- a/public/mockServiceWorker.js +++ b/public/mockServiceWorker.js @@ -5,24 +5,23 @@ * Mock Service Worker. * @see https://github.com/mswjs/msw * - Please do NOT modify this file. - * - Please do NOT serve this file on production. */ -const PACKAGE_VERSION = '2.7.0' -const INTEGRITY_CHECKSUM = '00729d72e3b82faf54ca8b9621dbb96f' +const PACKAGE_VERSION = '2.12.7' +const INTEGRITY_CHECKSUM = '4db4a41e972cec1b64cc569c66952d82' const IS_MOCKED_RESPONSE = Symbol('isMockedResponse') const activeClientIds = new Set() -self.addEventListener('install', function () { +addEventListener('install', function () { self.skipWaiting() }) -self.addEventListener('activate', function (event) { +addEventListener('activate', function (event) { event.waitUntil(self.clients.claim()) }) -self.addEventListener('message', async function (event) { - const clientId = event.source.id +addEventListener('message', async function (event) { + const clientId = Reflect.get(event.source || {}, 'id') if (!clientId || !self.clients) { return @@ -72,11 +71,6 @@ self.addEventListener('message', async function (event) { break } - case 'MOCK_DEACTIVATE': { - activeClientIds.delete(clientId) - break - } - case 'CLIENT_CLOSED': { activeClientIds.delete(clientId) @@ -94,69 +88,92 @@ self.addEventListener('message', async function (event) { } }) -self.addEventListener('fetch', function (event) { - const { request } = event +addEventListener('fetch', function (event) { + const requestInterceptedAt = Date.now() // Bypass navigation requests. - if (request.mode === 'navigate') { + if (event.request.mode === 'navigate') { return } // Opening the DevTools triggers the "only-if-cached" request // that cannot be handled by the worker. Bypass such requests. - if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { + if ( + event.request.cache === 'only-if-cached' && + event.request.mode !== 'same-origin' + ) { return } // Bypass all requests when there are no active clients. // Prevents the self-unregistered worked from handling requests - // after it's been deleted (still remains active until the next reload). + // after it's been terminated (still remains active until the next reload). if (activeClientIds.size === 0) { return } - // Generate unique request ID. const requestId = crypto.randomUUID() - event.respondWith(handleRequest(event, requestId)) + event.respondWith(handleRequest(event, requestId, requestInterceptedAt)) }) -async function handleRequest(event, requestId) { +/** + * @param {FetchEvent} event + * @param {string} requestId + * @param {number} requestInterceptedAt + */ +async function handleRequest(event, requestId, requestInterceptedAt) { const client = await resolveMainClient(event) - const response = await getResponse(event, client, requestId) + const requestCloneForEvents = event.request.clone() + const response = await getResponse( + event, + client, + requestId, + requestInterceptedAt, + ) // Send back the response clone for the "response:*" life-cycle events. // Ensure MSW is active and ready to handle the message, otherwise // this message will pend indefinitely. if (client && activeClientIds.has(client.id)) { - ;(async function () { - const responseClone = response.clone() - - sendToClient( - client, - { - type: 'RESPONSE', - payload: { - requestId, - isMockedResponse: IS_MOCKED_RESPONSE in response, + const serializedRequest = await serializeRequest(requestCloneForEvents) + + // Clone the response so both the client and the library could consume it. + const responseClone = response.clone() + + sendToClient( + client, + { + type: 'RESPONSE', + payload: { + isMockedResponse: IS_MOCKED_RESPONSE in response, + request: { + id: requestId, + ...serializedRequest, + }, + response: { type: responseClone.type, status: responseClone.status, statusText: responseClone.statusText, - body: responseClone.body, headers: Object.fromEntries(responseClone.headers.entries()), + body: responseClone.body, }, }, - [responseClone.body], - ) - })() + }, + responseClone.body ? [serializedRequest.body, responseClone.body] : [], + ) } return response } -// Resolve the main client for the given event. -// Client that issues a request doesn't necessarily equal the client -// that registered the worker. It's with the latter the worker should -// communicate with during the response resolving phase. +/** + * Resolve the main client for the given event. + * Client that issues a request doesn't necessarily equal the client + * that registered the worker. It's with the latter the worker should + * communicate with during the response resolving phase. + * @param {FetchEvent} event + * @returns {Promise} + */ async function resolveMainClient(event) { const client = await self.clients.get(event.clientId) @@ -184,12 +201,17 @@ async function resolveMainClient(event) { }) } -async function getResponse(event, client, requestId) { - const { request } = event - +/** + * @param {FetchEvent} event + * @param {Client | undefined} client + * @param {string} requestId + * @param {number} requestInterceptedAt + * @returns {Promise} + */ +async function getResponse(event, client, requestId, requestInterceptedAt) { // Clone the request because it might've been already used // (i.e. its body has been read and sent to the client). - const requestClone = request.clone() + const requestClone = event.request.clone() function passthrough() { // Cast the request headers to a new Headers instance @@ -230,29 +252,18 @@ async function getResponse(event, client, requestId) { } // Notify the client that a request has been intercepted. - const requestBuffer = await request.arrayBuffer() + const serializedRequest = await serializeRequest(event.request) const clientMessage = await sendToClient( client, { type: 'REQUEST', payload: { id: requestId, - url: request.url, - mode: request.mode, - method: request.method, - headers: Object.fromEntries(request.headers.entries()), - cache: request.cache, - credentials: request.credentials, - destination: request.destination, - integrity: request.integrity, - redirect: request.redirect, - referrer: request.referrer, - referrerPolicy: request.referrerPolicy, - body: requestBuffer, - keepalive: request.keepalive, + interceptedAt: requestInterceptedAt, + ...serializedRequest, }, }, - [requestBuffer], + [serializedRequest.body], ) switch (clientMessage.type) { @@ -268,6 +279,12 @@ async function getResponse(event, client, requestId) { return passthrough() } +/** + * @param {Client} client + * @param {any} message + * @param {Array} transferrables + * @returns {Promise} + */ function sendToClient(client, message, transferrables = []) { return new Promise((resolve, reject) => { const channel = new MessageChannel() @@ -280,14 +297,18 @@ function sendToClient(client, message, transferrables = []) { resolve(event.data) } - client.postMessage( - message, - [channel.port2].concat(transferrables.filter(Boolean)), - ) + client.postMessage(message, [ + channel.port2, + ...transferrables.filter(Boolean), + ]) }) } -async function respondWithMock(response) { +/** + * @param {Response} response + * @returns {Response} + */ +function respondWithMock(response) { // Setting response status code to 0 is a no-op. // However, when responding with a "Response.error()", the produced Response // instance will have status code set to 0. Since it's not possible to create @@ -305,3 +326,24 @@ async function respondWithMock(response) { return mockedResponse } + +/** + * @param {Request} request + */ +async function serializeRequest(request) { + return { + url: request.url, + mode: request.mode, + method: request.method, + headers: Object.fromEntries(request.headers.entries()), + cache: request.cache, + credentials: request.credentials, + destination: request.destination, + integrity: request.integrity, + redirect: request.redirect, + referrer: request.referrer, + referrerPolicy: request.referrerPolicy, + body: await request.arrayBuffer(), + keepalive: request.keepalive, + } +} diff --git a/src/components/SmallIconContainer/SmallIconContainer.tsx b/src/components/SmallIconContainer/SmallIconContainer.tsx index cd7b00cf..75ab1c8f 100644 --- a/src/components/SmallIconContainer/SmallIconContainer.tsx +++ b/src/components/SmallIconContainer/SmallIconContainer.tsx @@ -2,7 +2,8 @@ import clsx from 'clsx'; import { ButtonHTMLAttributes, PropsWithChildren } from 'react'; interface SmallIconContainerProps - extends PropsWithChildren, + extends + PropsWithChildren, Omit, 'className'> { background?: string; className?: string; diff --git a/src/hooks/mutations/usePreventDuplicateMutation.ts b/src/hooks/mutations/usePreventDuplicateMutation.ts index d0c2ae9c..5c84cbc1 100644 --- a/src/hooks/mutations/usePreventDuplicateMutation.ts +++ b/src/hooks/mutations/usePreventDuplicateMutation.ts @@ -23,9 +23,9 @@ export function usePreventDuplicateMutation< TError, TVariables, TContext - >['onSettled'] = (data, error, variables, context) => { + >['onSettled'] = (...args) => { isMutatingRef.current = false; - options.onSettled?.(data, error, variables, context); + options.onSettled?.(...args); }; const mutation = useMutation({ ...options, onSettled }); From 1ea28fa7058f0b1800db1a17c3eb5d040fc3b45d Mon Sep 17 00:00:00 2001 From: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com> Date: Sun, 22 Feb 2026 16:20:07 +0900 Subject: [PATCH 3/8] =?UTF-8?q?[FEAT]=20=EC=8B=A0=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=86=8C=EA=B0=9C=20=ED=8C=9D=EC=97=85=20=EA=B5=AC=ED=98=84=20?= =?UTF-8?q?(#411)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 에셋 추가 및 구현 * feat: 패치노트 데이터 타입 정의 * feat: 패치노트 UI 구현 * feat: 라우터에 패치노트 추가 * refactor: 자세히 보기 버튼 로직 위치 변경 * refactor: PatchNoteData 인터페이스 변수 타입 변경 * chore: 자동 PR 세팅 스크립트에서 치코 제거 * chore: 자동 PR 세팅 스크립트 제거 * chore: 주석에 이미지가 필수임을 명시 * test: Story 변수 값 수정 * refactor: 불필요한 화살표 함수 제거 * refactor: 로깅 함수 제거 * feat: 모달 표시 여부를 따질 때 버전도 함께 확인 * fix: isChecked가 최신 값으로 유지되지 못하는 문제 수정 * design: 써니 피드백 반영 * feat: 단일 이미지만 표시하는 패치 노트 타입 추가 * feat: UI에 ImageOnlyPatchNoteData 변경 사항 반영 * test: Story에 확장된 타입 명시 * refactor: 체크박스에 속성 추가 * refactor: 패치 노트 데이터 타입 다듬기 * test: 누락된 매개변수 Story에 추가 * refactor: 텍스트 클릭 시 체크박스도 터치되도록 개선 * refactor: 체크박스 클릭 시 함수 별도로 분리 * refactor: 매직 넘버 분리 * feat: 디스플레이 크기에 따라 UI 크기도 바뀌도록 개선 * feat: '자세히 보기' 버튼 클릭 시 모달 닫히도록 개선 * fix: 파일 경로 수정 * refactor: 필요 없는 타입 캐스팅 제거 --- .github/workflows/Auto_PR_Setting.yml | 60 --- src/assets/patchNote/0001.png | Bin 0 -> 129860 bytes src/components/UpdateModal/MegaphoneAsset.tsx | 376 ++++++++++++++++++ src/components/UpdateModal/NoticeAsset.tsx | 21 + .../UpdateModal/UpdateModal.stories.tsx | 30 ++ src/components/UpdateModal/UpdateModal.tsx | 123 ++++++ .../UpdateModal/UpdateModalWrapper.tsx | 110 +++++ src/constants/patch_note.ts | 53 +++ src/routes/routes.tsx | 2 + 9 files changed, 715 insertions(+), 60 deletions(-) delete mode 100644 .github/workflows/Auto_PR_Setting.yml create mode 100644 src/assets/patchNote/0001.png create mode 100644 src/components/UpdateModal/MegaphoneAsset.tsx create mode 100644 src/components/UpdateModal/NoticeAsset.tsx create mode 100644 src/components/UpdateModal/UpdateModal.stories.tsx create mode 100644 src/components/UpdateModal/UpdateModal.tsx create mode 100644 src/components/UpdateModal/UpdateModalWrapper.tsx create mode 100644 src/constants/patch_note.ts diff --git a/.github/workflows/Auto_PR_Setting.yml b/.github/workflows/Auto_PR_Setting.yml deleted file mode 100644 index f2382397..00000000 --- a/.github/workflows/Auto_PR_Setting.yml +++ /dev/null @@ -1,60 +0,0 @@ -name: Auto PR Setting - -on: - pull_request: - types: [opened] - -jobs: - assign-issue: - # Works only if target branch name is not 'main' - if: github.base_ref != 'main' - runs-on: ubuntu-latest - - steps: - - name: Checkout Code - uses: actions/checkout@v4 - - - name: Set Auth Token - run: echo "GH_TOKEN=${{ secrets.PERSONAL_ACCESS_TOKEN }}" >> $GITHUB_ENV - # Personal Access Token을 환경 변수에 설정하여 gh CLI에서 인증에 사용. - - - name: Get Issue Number - id: get_issue - run: | - # PR 정보를 가져와 브랜치 이름 확인. - PR_DATA=$(gh pr view ${{ github.event.pull_request.number }} --json headRefName) - echo "PR_DATA=${PR_DATA}" >> $GITHUB_ENV - # 브랜치 이름에서 이슈 번호 추출. - BRANCH_NAME=$(echo "${PR_DATA}" | jq -r '.headRefName') - echo "BRANCH_NAME=${BRANCH_NAME}" >> $GITHUB_ENV - ISSUE_NUMBER=$(echo "${BRANCH_NAME}" | awk -F'#' '{print $2}' | grep -Eo '^[0-9]+') - echo "ISSUE_NUMBER=${ISSUE_NUMBER}" >> $GITHUB_ENV - - - name: Get Issue Details - id: get_issue_details - run: | - # 이슈 정보를 가져와 할당된 사람, 레이블, 프로젝트 항목 정보를 추출. - ISSUE_DATA=$(gh issue view "${ISSUE_NUMBER}" --json assignees,labels,projectItems --jq '{assignees: [.assignees[].login], labels: [.labels[].name], projects: [.projectItems[].title]}') - echo "ISSUE_DATA=${ISSUE_DATA}" >> $GITHUB_ENV - - - name: Setting PR - id: setting_pr - run: | - # 이슈 데이터에서 할당된 사람, 레이블, 프로젝트 정보를 환경 변수로 설정. - ASSIGNEES=$(echo "${ISSUE_DATA}" | jq -r '.assignees | join(",")') - LABELS=$(echo "${ISSUE_DATA}" | jq -r '.labels | join(",")') - - # 팀 멤버 목록을 정의하고, 할당되지 않은 멤버를 리뷰어로 추가. - # 단, 현재 활동하지 않는 멤버는 제외. (현재 비활성 멤버 = 엘, 케이티) - TEAM_MEMBERS=("jaeml06" "i-meant-to-be" "useon") - IFS=', ' read -r -a ASSIGNEE_ARRAY <<< "${ASSIGNEES}" - REVIEWERS=() - for MEMBER in "${TEAM_MEMBERS[@]}"; do - if [[ ! " ${ASSIGNEE_ARRAY[@]} " =~ " ${MEMBER} " ]]; then - REVIEWERS+=("${MEMBER}") - fi - done - REVIEWER_LIST=$(IFS=', '; echo "${REVIEWERS[*]}") - - # PR에 할당된 사람, 레이블, 리뷰어, 프로젝트를 추가. - gh pr edit ${{ github.event.pull_request.number }} --add-assignee "${ASSIGNEES}" --add-label "${LABELS}" --add-reviewer "${REVIEWER_LIST}" diff --git a/src/assets/patchNote/0001.png b/src/assets/patchNote/0001.png new file mode 100644 index 0000000000000000000000000000000000000000..aa007b833a6174605488a7c1bb66630269f649ab GIT binary patch literal 129860 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

;M$X2YQ@40|RmZHbiAXWY-F^WLip zJ#z(k5=~=H-Qlr+mYm+n`~2Y{kGfnVkJ@A=+o9|&Sp9+CYrM-x5JuDA| z83ms{k9tNgnv>IG@l!5sbpAIy*o@3?Bm>fW7w=)eLXw@{1b!tdK^NklreT?dQR5Ji zQwku~k{d4x1oJCva~BUGY012|7bq&S*h2yl(ljSRqLlK?aKzyXo$P=*VmJu7qpRjm zRFB?jG-2NQ21mS!wCYHU%4SR5Z|xnx=KBs2smG8W#6=>*R=(0_`W&KM0NtcD=51M( zh~q@VF@<=D{)WM^s0`?{GFf9aVkoPk9-aC-c~_l<690EHZN1x;X0(eChY@FFrML4CCKKxoMZlxm#~9eWVhNK zNM+n#L#9foPu&7|lwDr=xN^1w4W)GJ85j7+8jg>OXFn}_KFM4UtFl+%SLF}SDC}r} zb!uV%?A^8nX$>c>tT+n<8p=|Mfzeq)7@c%jF}h-%YP@AvKhbhrv&}Wm)U5ME>LME` zWZVqVc}%W;59?K@z?RCcP|Xn*7QIfWkl<-wTHFmgP=DmwcW%c4b22IXdPqYG`?5Zg zV#WfwflzPwt{>ssemhIVEktEX?N9Z zx-;Mq5Mt|@@OySW&Fw{9@V@c$Ra|t%$KO`1iqLB z9xiBORG;DiAIn4qoOy#>#r?t=65C%~r_5FB?$yg+p=MDC`Xy^6F-Qq(Nz)<8W|ceI zT+1jTF(^e=#?tIH)6>m~-s~F=qbu-w3(S_IB?I@b)nGqY%@{F^!RqnM&@nVK?dp~! zuRn41y-C5trz=y16Vf83GehUtF2D#x zg*D44=qJyHUO}s2og1RXeB;x^Dacok04TPbzg^kvx}{q7 zmIGaMvMm}96Y07@7g63pNi>nvRlx+?S5J2D3gTiAyzTXLdt$yX^b7-)B;R|mnaR<_{Jf}c18B#UlV)NwZl_dg%|K6b2#u);7FQvr<-+w*d0P#1FYw2!*SrZsX2C zsGK49JKt)HM$T}M@K}EdEu7F^5zNF7*UQNiQe@Ro+qFQR#Nt$-o+_vDNpB)&!-W6q zxp*~;hhUEr8b9fBRe~h{5be zL1GO|Sk{) z?T~tWDP=)S&O%qpnmh6rLtY+V`vL>?*BhstB*sa6iB7mXS&a{CxVZpP31KOu?(-H6 z3Z#m+9e#%&9_bPcC!^kvno_h(xkXf(_pqm!I0TgqvsVc)?U#6^lj9lhY6!p0W)0ps z_A}r>CizIKW8d5_0(_0u9wC0)s0`k>`Lba~%-|rNat@caJNE^xq+Pe?yL)23JeGXc zOyga7f7PWsMpcu(>Y1wM?gPm{8b1>fS_Mj))Ak>T8PTycHIrJnYCIKEho562xNAP zC-OuHFue_zy({agt~^E@;*?7tCISn;&)7I9w)Ir>F$5T$3M|1xD_j}vwzdKpt zQqWS$>J50=UJCrZ5u((Nn7cY|TvZ<^^9h;$uaa-OK@G`q$~nz1)egGa>0EV45c=(% z`}R6fPU?G)n`y1MC@A0C;u9_|z-=@z2u%b~Kr}h3vFChdZDC`hkHmxgI8F~V4qc$v zDn6JhUJNXqC)LJ-);Vvh-?uGu*F{(||0;^|Xo=*_Dj>ipwa4!*ph(CuO$ev{87wq2 zvWKHFBAu5S%F{P6^>4jfQQqC%Ol0sBUF2mP{$t^DmM0gv z5Qif#t@Lu5p`;i)8lXsVm(S70+$%s6u4d3P`E_`tMM2sc=y82L_xy`_oGXs8t*1=f zN{+)+NKlYrc)0Y^91prutA!R17px^)`6M(eNEB+4=_p4-#O*5iV6OjYe;G09$n4#e ziazvj^7$BQjNG1Ef9Ts2eRG` zk2PBhbk$%{Hug64Yp+~aT%DkCMTDf{LbT-k}j5Ia|luoj}A+BC zXTIX3OISY^l=pToSENJ?_4j`VDZjVPfisPSg14T2Bj@&C=kUDk#GAg#bMxUwL=3X4 z3bnCt6osMw6z1XJC>0XEndF$Bgut*?AGuyd^j6Hw7=Neoo`s*|KpT5;dkq=qKWouS zM?By|pgWOkoQ3AJ{7yd-Uy&&b`yZKAtm$V-xxT*=ya6I{0c zAeCNq5y`kk5(=Lj$S2q=!NIV#xuiAOZoV03eK`{Gdu{LcP1Y(n6EF%6AkVn~+S#36 zWpqTIlVosJxVi`lP+q*FB*>TI`^ze&A>+c6xt=D!c_yZSsy;mA0f?^1nPH-gO-l-cDLd8T49Xj!xfnInP=Dy-@}TZ*1V- zysX`$O!zhxA7 zNgP*cR&bgRagbvjqu3MBO0$MeB&baG`708qc-RvsxywR4$i^CX3nWn8Erh7+;?^!0 zJ!%mL6G}zCU&g;_bD+jXc`3{!>GrqIqdCBTvaP>(mfFLe*knD5o*}C%F#D?iJ}kNX zbrh!gGT5^4a(e14*;n7$`JAHb={Rtm#Q^F|*!TPP-MePW^J@5T#~0kH+=cyOM%`s5 zsxLp`(_otm6~dLOE%)Hys^BcQ$4la ze_WmsjNkIZ>?$UaeRC#nc!8HroTxg<_?P4sI~$;6CBv zkdFG2h)Th;{DO|C^-e6Nj>AInY{+c_W^Mnxq@Iqt&+f}`t1_{$yrosu1jAute@nhG zY#Rr2l%$$4seDI(>;dq|vg_tn$$#mr7U}rzmz?7h7dw)rl!bbL@tvyRWwk>(qx@3c zvxL3U#G?PKwYj&YMZ)k)L51n;ed<;udua~0g+>Q{GGMXnWZr&eSAc$w)znM;HL}un z1c9iFgMPlP!ngQjZ`Wk4=1GVNG)c`*YOzf_9kWe3@#0Z?>C9_-fPGPBU)Qb0xpH7> zo{gS$!`|=Tyz4$TDa!e7Mr<>w9%yIezO|Kb7N{8q?5{je?&kK{oT`6z1pS^YJC7yO zlzeq@6$WQK5)R8k;#eO zoSD~T!|7k^vPM0UJ6ve*Hd zXy!DYVdQ;`|p6=QH0d# zBML!e!VT)xbpa!7B{)rq>UL{uC$p;4W-zwZqzV(pRv~4x4V=u$Q-_I z&jNpR8ddtaI(qpV3R)296Z`2u3R-}t8#)N3Hc^22?A_N-#s|Zay$tD0hedKV(*W=p z6vD97(#fhTS{K0DyVM;Qc-8taojqZPw&F>_d{LE$<64Qzh1&vXMqSQ9xek#xdB%^a zI-{@RX4E4!N&x{Ho;^wgD3n&bJ-!KRE$QTUH-G@A?FIR@y(Zb(t2u9jAmQg1pwZ9X z>5GYiE@cTUz`TtWuGj6~m|+ZHqwS402KK?KStWrRps9|&Sz!jJ+ zCCP3~mNJTC%(@RQl3XY0AB7VcUB4{N-pTb^qd-$qwqhD*wH%kRj0f zUt5**qhp%%V{80gOftcv{(95Z`C{8N#&;G9E5%ZUA~@7J4ntEj&E&W#u?a?r%b>kre`d zhANnOxIY%_-}ZcU(<$43Hdiy!)zeP1Us^CWQ_d2e7v%r?Az8@CDScupJ8SdMZApGo z%=Zqg5c6lOnOL;118N`Nl=WZOBMH8B^tNtz5ZUYa+1a7jhMePU;2sMu)a$03QjIJw zPOSaH%6Qrw8h&W(I{HJaM3Iwn^IbHao|OO1ko%0s`XX_BV$BQdb^yBXcZHFSg5r|3 zUF5!?-poyuuF*HJTeb$Y@`u=r{3bW;NNY;aP{WzME~HaWtIlUvSs2r-Wn2d?^DD*^f@)4fY8Lr$x7`A!|Cw-snh5c7b^Ofwg^~mkIh-9_JD>$7OM{i z7CfY!^h=-=1$Or&4{B^oV{`EFmR36aTD?%^)2fi{IQ_V{3GE0A-L0!}oa|u3TnM)3 z9(-jRaBM7Jt(1OFTk7hJO)Pz+YK#$DLFiN!2gV!}WFy;m+pA|_5}0h46^B)%O=6=S zxsdIZS_H@Rqk=wsftJa zh@V)G)ME@FtK{~zV8IDF&^Iqftcxk-_0CBJU$#HMD&~xXhwJa@ZZtJpea+uFx%=141j3SK zdVlNXE(KnfjlWB4CvF`z7VHovXk%|7o0_sHWfP0~GAx*>&|UOli6H?@2EL2by;(#R za3X4KitRsFJAY#5;9{qcFcSveaOY!U+ zlWL*9Xu0SI;Yt#Dz5PXY$KxJVHRDH%R?n|4X)N-X)qZKxhrgI91^3WNYIw3Rl&$b| z0q+S$M$623aPFefIM1V^&0V)GZ{TL--W2D|y$&7vpeeRFZUh}%YMT5 zdPNVE*}F_5=6cZ`@f3MWf&ML|r5wvcAstadZ$3Svkn^7ekzxJ^oT{$au7SwgipW9r zMhErVeCCx3%id=GO42JO+!rFFzZFBizU)ons?{P8->9 zt5fY&hA@aSC%;j$wJ!GRRESg^ld`CE)XxMybBuXoWd5wo2UxQhs+*YEB!!5pYNIA5 zi5MhiBH!0V(`V?=Z1>C4#$KqhA-80+81Z@Q8Wi z67Hej&Pab!Il+qz1Sb%1-#Ii}XeQInlTzaRa@v!f2!mW{7lE@^k?@sYVgwTZ~476+Kiyh8pEDP z(in7tIi?q~n+-Y9rGwk<6TC+KOiYZGTN46$u1E?Gp%>O>ca}u{tVQS0}!o76f|9ra8mg;CBJ!HP}SqEa6$YNit#>yiDeTvOg$#SW&L&$&4t>*B-Ka^;sxR>7E&<7^Qz+vdxHMiWR}_i^_pBdoSg@B~yqfK5&|6iS9huqJ`*jN+6eNhh}scDL)aw z>DNbyKf_y1Uux^Z(jiGjTXEj(!eSzZE8~KlHP8E*6Y@wG_Cg4lIYOweMWGL5;7;cx z??SPu``|fmb7+A8D<lGD9pi-njVZAzrplL! z(Jp5MHhb*V&WkpVW|n9N8*t^wQkD09K&DZ=l zDy#v6xZ&R=G!KDKo+{7RCu={EWmH@bq=m{AVs-=ih{J$ZZXEB>PFWb_99Qfw%0S7o zS7VAoYPDSTgc1FU@dIoy@_~NTXK(Nd?{pjnbg(~tlKu>w!dQBsfgMHDVQ!f0{4%@N zJ(5K&zIQCn9^%VEKuHKo5gJ96m#87)iNKQBzW)8pYX|j`&T3+6+*w%)0^r)pF>@=2?oU^2b|z*A60vSx2WCL;*zrJy!Qs2wzMhp$7R;EIQ} zJ$4^rO*dObC;!%cUr&y;`8`(Hh}BA*sXA>X+e>inpu33+#L0b;5%23jY=C^ESpZ%S zKRh^i_}u9elPJ;M9`sBY1dk3(>%!*Y@e;E|kmX(CsTw20x2x2SB-lMDESL$ze$k8k zD<{K-x0ta)X@#99TqkXt_SvBfGLINPIDC}=O)i!!GrV>kq8yDl#NvcY^ZDX?6<3tK zwyaI;S50`EWxKKQi38rBzAztzj*EzH|K75RRqvao>*H`68yZ49=7jP0_i;QH^?P6WxDVmX1EXJFH=0m?GLYbaZ(bN3~4 zlhI7&jJfm6SI>IUTngW>K#asqW<7kZxQwge9A}j5poA?+Bi}Gl(#D5AL*Q=%Gu<3d zK;tJ&wi=ZsR~{|H4vb}L95{QCAY+G>DIQk5UR064+0?T`_{D zcpO8v1Ysk1^XFxlT_{UGf>eJxIm5liZw9n?bx!(>j4(ZPLX+{U!I%+Ac^`G$v6R)c z9}WD~Uh7E3wHQ|fsE&yipLu>7Y1tGAp%-5o+~z!-SNOX+#@prsJs26ErNrAGmubb?HdwF| zG0sU6;8f0b_1k~@=gg8%hC*7uMIjtR&!K#7?#8f2p3OK#q&%S2-S&Lbk9kSP>(}Ou zZ3vsHqkbLL8jMA(RECnIag;j0f%#?(Lpw>DM3cDl#p?KeuaV60YbC50VLD+rf`kr5 zUPfa?ESVr!L+sAq4MYM13LdZ0J)|N@t)mlgOlVj%L!2Yr!5?e~!x7la`{#CzX zQ;iwOV#6j5FD%68ZZlhu)fL5d+jJ9t<*Ijv5vM3uRZvkPv)`uDZ!18OWJ9&r7o?9^ z0y(|wRA8p0qRG`5#mX2vBdpe#hxKsU$)}nJdJ`|yi6IwIarsUEld5<~@XH_|nq2+Z zIW)h849e-7Arbir+h%a195o~T-G${VZ0Y8O7ka2N@n#ddPA1(Vp)(!4;e^#oCPm~6t-R)b5o8rmg^l4?- z-n&>a;l`i_e!Bb7e8Gd=5!b{DNw89(W;$+U0Z^YtZI;sOx0_lDI<$@z4gIyiywaZv zwe+1~)W5c-1(Q5wZurSrus%2$z6S)EkEx9tvB`U1EQrcyzJb%lB)eDy(uo2{oFF51 z62{cdNC#|u@%5UG^qJl?pHs>RH6rc_I*veWA0n3cKQ{0e<`)Iw)L|b|M0T7~G9UbI z;eX1+7Uu5roW6B>MD^(~p{HM~=yg zD{av)c5uFaFAJ}JqD!=fGvPJHt4x=&1vjUM8knurU#9ux#=c8sQ}khfSCi)37(X{G z>x@&t!l_2Dwa?(ALsYbxlFmQei)R#$7I1a&kxG-uAX%?L5tQ$6!pRZQb2aQIDl@xp z5Unqhf6T?Em}1VD>FxgoC1%LK@;Ws|?E(O+u~83Y-iDm9?D=l^F&%x9N;A7VkG^~> zIfF1p|9TmRxJaUj5+)%5lRtn#=&?yjFTYnK00Rifb0wVC@t>QZ|HNB18TDOcP+`Zr z+nK8+C#u0sX*arm+45XG{dvwkm70HvOBb`SigBz#4oBut(&Crwk;Tr3(y9$fX6@F^ z_<2H(Qsx;p(oumHz#yN;1;>N7TN#3=f+X}QB)P9yFi&bGBCcQ=dv`Y>MqaLcyVWBn zwT@R3;eiv^$U-?2uEAdU7lh@0c3~2w~!V?a-0v2 zSeWaMOg#Xk`O+qd_itk9kz|$vUc!ljMZBCo@gWaZmjW-}`F^bPn557CyJ+D>3~ zuB4uX2U&6N%k(N`Uq6je;XXtI=ilE7+zPo$iTsFhQ5AQVZyqEl>XPo4nW%s=I+__Y zSqXNAC(FrgNFJ-%9TKgqRK4XEHtleY*SOncBL(Hq9Cs5<2e+JnzZM7UJ6AaZTXs3a zg`}Ee9T-F&bIdc>GTu2Rr;M9ivobzvkoQ^b1^RM0Yf=dpvO^u*1nnW6qU=IE9ns8xw}VN2=ig@m;ADw2 zcXCI;{d}%l@xwst{YKv89+|3HHVmD@9)KR>5Zhjauxa?i7N*%7Z&X_>3jdUFgsUCd z7PnQJVizA&T2(Qk1($u-*4`dCBShh8a*X|)Wv-xVX_42D_XbBCv*%SQmiA%5HBw5I%cqfny zuf_UIV@e}O?@h(Z7jlxPmehZg7#LK|mtSx@gtja!q0`8%~OjZV{je1*l3 zlW~c^(elkgQjtD+NUMb7T@sB0fVd3989GXk-^l^L+NxFCUwa&MlZos?iP%i$@Woo{%cMvf=G6Q5%dz=hzg$Pw)e3R3mm9yEvdIiZ$nV9w9glZCBg}-te z#q=^#oqVQH?c{Kz>9xb!%JSI?YhZ0#7N}4D6 zhQ~KDlvmMK<@)Nb8pg?NE;2vOz6NAEq4_X)2gTZNRUm!?Bmie?KMAoe+t#oW*{dL< z-FP(2VeCH>|6qZOet)o&gbhF9l>1K-wnBG(buCAt2z5Z#hVoEARw~Z}LlWQOTUrx_ zOm1%sN9K~{w^SY8nWLb7xMB)fo_uQ1yee@n;0H`G_5?G1FMUkA zk=@vR&OaBmw;RK2kPZvP#K3CNm>L#PwWLyGdjQ@KTuZJWwXNog_9~`#&Lp-zI&U2u z)ENgOq;bO+ciuLyiWDjtnFS2VrkJY#L|)u7a_|P&lDg z#@=FrAWZrPK;5; z06EwWOJ;a-Nfr+6O-oV1n2RuRQ~q7laLRTacRy|qjGyY!2F+W7@6=(VGkNP<1(r2@ z?PgmkeD^TIEFPAtB2oV2_?9Bn%6P|J|Fp7;K#b4@G&XG^IDQtd#}0hQzIeJDV>77ZNqSZ%znaZjv}cVpaoTE!9x9Rgns@ulL}!rY9D)RD3z>Zj zMO(ocGm&GQ^?0HJi6#zQF!Twcw@S!>=&>*Sl1aIp<6#C+-d6yN(!8&#B|_?U%@tPKnXKHEwf}OsgfoDu8|RM z$ex9`rami5km}{}&9zilycEhg-n{xjCnwV<7bBCi>2DFW9J@-B9fjQdsW6X((s78@ zs~Uo32)NhQZJ4e7Qml!UAjt*Iwlu>*2$&8d&#u32hVX%(|o;P~5E zHZ2|9{XE{q)1##?%#+0sfx|GnReiKF&K$4g$pEcnrDv?mN3n6+e9XnZio2+7rs5-6 zTcsN>^B9!2oi}jR_!YyLc($y$?BYw1i5~+8GIxy5(V=E)>>wF~Wzfz*FSX*X^g&|O z6<{)(^0EVBM!o)K>2-RXiH_X}eWwXyNoDkGVP(yK`o$ju>vrW&ycg2(Pr0#gbYIc? z1t^WqC3qgB295XvDczq_AKNXX3Y|zSaV$(IdVnCGV0uFRF>c1Uv8F7Jv#7W|jf9jE z`OgVr%jW>F`&b8zx}b2z+(mU%Um>gpkx%3Rx`a+P9gTod2fgVb6vhS=2QTfcTG$Fz zMLSTrVhFRFMy5{NT?YqAE83=IbSf-eoH;L3yGDeWh^}EGHH#WdXDM|6ZU3Dj@yrw- zuR@|QUgKVZ3kxJ1$xE%7O5)8_O!SdOY+%uoq{mM$5D7TW1I@VLFC-#IB8LGLDC{t! zfhUV0f@+7}N%Yv$R2t>-CpSMR1MVol=i73VDV|BsPnO3?xj!7sLy<%4ZL_rqD=kO! z)-+>#FrKN8NmxRXM&%AsyAa;Lc5V@{K!Fm<=!?O=H z<)z;B*sNr5#%b~_YR1opw(JI2s$vk**d~+P+(zz-H_ke}6vypblFW)06M_Lnt`!#q zTM3lU2=}tWZ&~~%C<6#h$cUpRnwkgQH`gwe;$BMJlH2paOJsT8GE|w0S2Fu88jydk zl5SoIKe|IXGVH%k#ru4YaCV8KLFKES)FtbO<{K4j~7 zM_Rq@%NNOW3=$%ueqH>s-&bfes>I(5sK4IJoL6%7b{kszD=4 z)+;}F+%L2~B+bAZG}&4mNn!%+53aALKQq2Rz+iEypm#;;0NtbZ8>zyj^Xk`x=Fk&G z?teONk_!)?h7%%OVMSu4;k3n|Mf@tj@$ZXqO2L2Y@fPeAAS|TA>@|9d@RVSL34i$^ zOt}rF+gvTh$tUShh(>gWUPz=~cfYf@@dAUPLXr9l5tQ@wZme%wpQ!svzQ7c&E7@d? zcbJtKuMgV-zv+86kv}zWlv;yhVqMtQBEHZzKM}8OX}$HseL-%F-Ua8&%d zo0|b%3SG}Mx+VOVFQZfXq@vNT_di(O{87tF6xB6^WB_!=c+X`TJl^pIFAzaBQeyIS zOU!|r8(R$#9;*3-CdCq>lsZK_J#Is%VR4sOYpEn@JTdj3NyJ)KQY%TVX^N+M$!HL1 zWZwM<%lHoq4A!-HAxZL-l0A~pEngwmV-G?R%^E6q^s2G6vyeIg0O7?t{3Mrln zOz`czh#jQ=1+IlU#qs;rPE22jaA@N3OtOv{a`-XxKTL^RX~trI)LumhGkL@SG>}>+ zZ;chK=G?x9pbrYqgfBn8c}Cc38y{&C=_Q4LYcTpHT%YD$EYcOvdhi&mFyjyr<9n|; zA#OOv+{F+onC)v%je}uv?t`@9Z&4ag#Im;JZxqOff6Y&#T=|) zP9m+>fs|6No`fd21rTH{a2wWvvJ}?$htPZOQ+G1E!en2~gl9^pwReh`Q{pY?=jK@Y z>fg%_aWl-aT8}jsWN+m-6{n|~ezC5VjAE5Rlpp?VqGHsQhFy$$j1L3xJ`P|eOl)`> z7vj4HlZ280(|;5!Ivb<=Y$c`U%r-7Z`5uPuFX(dlu+a+vvWy^~R-Jt?-CYFes36K7 z&_t6hl=QIYH4`0^60qO^XLdunQJe@w33&xu!LI)6tx1{pjaf%yZ*z)3bZB>;``VHm z|8qJ(s~nd~@;Vni(1JM6$z+N|baJUHDDDXqmyIG}pjJGN{5TVV1SPELfb}4D_!A-P zHqgwV?btyh;a_Y*f^~w)xhfh;sr}3%Ux5a9DrcNPZSfI$y4t9iO(?Sf1ODqB_XlE3 zfy;>m$x~nW`xc-S__lpUjfxQ;o4L;*Y>_iy)Z>pwEY%54-Ite#n&Xx`a}2Mx72`AFh+200!ig@67(l09TQen&l9t|%qQuxeSRYByB44f zgoC1!q?0XBGvZ{~El^<7JD|opB1yy+Xe>KgM<1f#c^ZDbQBIZgBzWL@f}sJm0a+!X zxunz9d=~+}BN`$mc260a2D(WQ4L=nfFUxR`_zLz+&Q$%D?($S-S= z3#@9@z8jRf>Vo0znjsPLwE3Qv;Ow5aZzdz+0W`er7?ks3Pb=nkOkmHmX(qx@HctLH zP%F=J=Ud0nryU%o^!RgAkC>V~oLC2Q=+|(lgM`6xt3*w+Jl6JE>l9G>=`{t*rTNO6^wiuovs$#!qxkBO8D&B5vk!hYG&e{Py_VTXRRB(M zhG;Tg70e;V#X+t$mH6cnPqwKmfFSldZV*l7ouMH)=zgWK02q0$Du=fyUC)29FFfd5Z4%I;z#f)16zX3Jnb5@a8TOOR_vRebQEr8Jma6+sJ9b z?Gb>C$_VIBNpX-Mv7Jg9QnwMwbhLi6bZ4zCYHB%3NAYfzhBIyo@oRQ^@|;T z|Eha43+K1U%NVwZftg?@&r>ZMGR|UHkL@mUbaNOo?&|#gh=mhq{a4v!-0lUkx^Bh0 z+Ch_{U-Cx*0LE)tkYoch%oJhrQYs#?pqnY8&lf~;O<5^991JXuuiyEzHLVn|U*Z3N zECZE?o#XTDJTA=2oZPN1V`4~4_ips16FUC(sKqek-!t38eM(8jLbZi zU)*PlAo5432pF(Bqdw+QsSUGq!Ns>l7?4rv|Y+@zh4L{)mMOV!z$cqnl)6-IiO@ zc=cMiqAp;JAEN&o`C(ZI8>C)&R1k_Z(&{sJDfOScqk=1iOJ)o4skD$mblLP8xN@5! zw3lOx)cz0wJAFZ)Puu7uZp2}>K(;;st`y0M*xJgFZYyiVLIqr8kDsU$ z_EyL9NQnx`Rh>9~*zOs8hH12YqE;=s{J(Y)LML;?RdFTm1*oT7`2X%nfzv(Rly|e3 zE^mLDEq-a_Y&lw>%`cZCym8=uH@EzeZ89fCC2%`gRb`S-lM3?qSLN zG8VRZ(%u%}V~hY%L6fa*&I-!G>u69ZFu zI(@T~6;cL;1FKR#Ku)InqCNviSmZ+douhsN`AQ_Ov6=GF#IpwH^}%m5@>SUKcKO|M z1Pzh4Covz-s>Kv~g=tCo#IkGJuI;6v&IK)fzvb=b=DQVU?g7@4n5*V~ZP0DA(dJKP z>mP#Pfw>f9WN2JT%xOMATL54heGL4{&Xl{aI>yFxomMw^Y7}N@Tb(Ug-l3ePZ@bQPj*s;n|V0O zy()&7mPp`sb=Icx+^xJt_B0WopK7c19(%uvjH*!g0>^NMsT-#?qoY5ue2AlRhkD%O z3DWbIRg?rJD2UEIEjqLt*0=gBZf7+Ta&oB)&6`0&9_!V;(J5hRIiS47k}P5rz2%^+ z=Q-7(`%!APA@QOxG|nqr9mm@c&u?c@I6e-;_^;F7D-FTWbslkDUYU{WCqw0hb|)&= zeL2`QY08i34kvfZo~rQr9Cb5y7nV5LlSJnZ!HNimYJ4o@V#6(Q58ZMw{SRJD>GQxz zg4h%9L|t`xL9c0s2Z^pGRvsq@dc06^3Ysif&hIg6J~#`H7`yZPaK4MjqxJq_6W?K! zaqx2RlauYNB#%a-aSgr~xMKVn03h4!b$ zRc8yf!Hm>Y0^pMP0svmjecqQ#dLOR`E1tNTfkD`7O-QYzo=Sm2zNlijh&u9nn&{7X z18IAVgb0`VABcH^X>62%CrSeL&y<~zD8qGL7J*Q$WSN?2&N(0lOf~x#%4E0KH>qw` z+I}}DqWaz1bME13#5;+H`s2)3<&|Ak?U}Lzfpf&LM5#do<$E!9n$Zgc+*)o_MLAtP z)qhwpTvLHgIVdb->84)^h~`_!pkXNCL+`Um3G)AfUsa>nf63oc z?HNq#!<;h_5`Ah#`LyxmDg4y#O%)2&SKJ#-tCUNTMCqW2l17Lk7SEW9wdrheacPHY zk1?XkR$4NOrQGHZMbw!3(7*6IAjdwV=Zbbi?*`s%>fw&WB~}bxxb0s_hO`}Co;8bf z`XzQ>UExb`zc9>jlHZ{|3YTTF=_PL=kUyWV$%slL-ACgYc>u#9AN>?_=ict4B+m{QTRl z+9Z`I(rff&94^^eY%Sc%o#@A2oWJHJ7BzOog#%?Q^{n~|UHkuVLGdE;yE^>szfQdx zI%%WLXA>o7s81d@IN=bZzCH~dHy+>Kp81*-%UJ0~-nNF#0r`13Fm~b$#BW zO1&(jvso#ZbhGSGJfdKFxm%Y-BfQG;XD#KGEU{777;Ha!x*SqC~XAJblcg3b`y?`y{0r-GVx!bmaD|Xi4Qg zd(4Xs<52tkIKd{*mkj#!1GhqV1Jtk?1PD{XhcXz_+Q0_f5;H1OO)%MT>|QY_e6oV( z7v_ZdV`9)h?_wHZ*e0Gs1oOEvNxy-~oa&OWNVdWJFtlytrxsL(gy*Y1~eslkMG5AzuyJVb;p2ujt&=WwiN z)V?O1N;-pT?Xd3`W4Bt~qWT8iYJ#}t5dn=JT#oA%HOOwY3$vx(h$|Q|*iW@7E@3!X z3?`5)#4jadFg?>Gf_ipBZ;Ltwhhi2uHeD2eDe=#}YxT724-M#IAfKku*xL>Z*c5`j zhGNLe)*qa29mPEfOUAK4lkx$Q5?5$w>5N%ajT8UCTd-P1_Z`FtuOO&YW))*%zhI18 zIH_A3cT~HxT(N8o~!wVHLR3~CAvc~VaDq0aSW-6h&Rk<9jOVTZZKwUgED z-xD4Xv5BbLN^5qI@lo~)W%K0if1s>zH&ZIAU%qkwUs#>AFt^^*Ad7lHqb}nZkYJ&G z;4*k$C~iSdlOtEhaV;vO`%2dL`Yj`5J{8;%jN~$%_eaqp8rW~rnUap|aa`z>-bOHy zSWt~*GooKFM_NrbSi*m;@`ut;nea+D-StKgLJM>eqH6fYzpV6NB%5fZkcm~0`(%~w zYyY#7)`6U0g|zYzHD`0y?C=xlSH@OuNVPBqC9s*o{D6TX-QH3ongqKoGl?Hz4}+fE zA)VZPaYLZ9L*ojfw>^6{sUazxhf5`)ywR76)QQ; zKb&U^24FeszhK|E;+!B(@ibxh$7$`eHnzL&Q&#H-AJterQ7B6rY(lWq^kVsjKy_Qb|(7;}N5s&HrUhQSEFvx}Dazn`1R6849kj?(D8c zaz5Z8)sCtdn`PKOm5p##ymAOWpnmBvxWx!8z57nhfy*gEEOg|m|t0{hHG^ud* z6&Ta2n;}G71ojw9z5BSPm)WFWct$O+b-^6Ocoza1vXHgT?F)#Dazc#n>IAFr0QmF1{1CA7)1PPkUUk`(G) z_{dF7?6CN;XE+b{m|4}OM+o0~OnS=HnKRoo{pv|OV`xHuJAx@_qQ@QL9`>^RRlB|D zb~S}o645zSu30)^@t6L^($^>ux4^lThvu!?*jRD1YMt8_o3JCys{oXV$wXl5@p6+K z`3r(4@4knXu>;`vqZkkRy%JKY#TSq$85fP6Ln**g+5#kGL8(9F)@Hpg9;aA=L zVS#G9AwFTX6`J9&GW36))32VtIlL5o$jtdYx<7EJa@Di} zA^vasPbh+J8OCl3D$}0l-(a&B34Z8=_~NV1oCBV{C5Oa(S~fDWUtE<)mS(IdluC>@ z)ck-+<$0tlqYITxxYOiOn7A$2U4N4v7|^GL2~xExJnRVW9#;jB0L9G>_#W1BxV)}m z4?S?EiJ}rS^NWmnnKPX?jgwASgdc6wnP6Q%n^=a2FkTme?MmWjU!tNIgRyy47S;&sE*Ov*-ULAdaqj|E(yFT#LMo(e8 zR%W$ip=K>m#s)ZdYM)I80gAVnrmHh*^r6rm+VOjhqzH?Yaf6bRakeQFXfr#VySfa^ zGf2zFW|I`+euUg;0Sg0B2G(UT5imf=^rnV}_`hMag$p2Zwv&Zkz#VyWu;6dm`04Ne zh5M)|-wIb4KCa!p61I|E&>ACjZQPY(Z9V$c34Hi(2K{7#q`1TA!#rw$L25x7YC58GPV~uA)2)r$yyUo zFnIw8djghKDh_M{oJTqH!w&Y-tzM>OW;~?`;#jUMrVVWmZ}FEIri&+(AMV}*P|!?- zWS)f)x7~~qiN3L>cHO+vA>Zn#0s_i}cOVB5nANBr;{o*j79K9s7HSf!Tm-`WX#58> zC@&YApIkCtF$(^W^|Y=AI+N|~b1imqk3sRlTGkAl>WP8s$H;9FhhS#Og_~Y67Fbo=`WRcD;uq%U!!+7O~M^BC=p{ z!+MDOu9^9YF-L2g>VZ_*a5?4sF_p_c>e#rVc^4 zexWKV+v(A0V4be~gd}J$2tQ}NUK7FuVNzexksOin(ELQ92nI1)Dx&TA*JY|+96Ag1 zziF+_4dYyab<>=5^Aa5e2OyuEU1KN)VKBM&y)U&Ne=c(qB~NVSv{@m~@VcGnbs_wW zfbMj#0!F%96EB@7q*C0dTJuNpQEtnu>vTtPzWX!Rv z>!4MODhM*Sf^xk6ozKQ#tn_l+GOq0ZM<(nN`rl{Sx|Q17#6+gVCy@CumLx*y|2GxhFXG(ag;s$@POno^5L>nONEgb3q(7)Hbx*4_5ppsuGrD8Yz z(4_6L6yJe8RU#nvlI03V)a9C)s^v4yMeQR-_CC!2zt9xYW(I@Qe00p7V;utt4XVJS z4EGzIwI>^}Q4!E6I8Bs!bI9{)u z2j}N7>i}CQ+O$E=vBhPFxx7&^r8(Vo2ReNs_+i@~~ zk?U3&YI%9ugQ`(!1!=)C-DHQkQSaus`S@DIJq&*#hKsysQpyN>TcCTrc?cxKi) zjZSWlVwycB*zTh7((IRE3lgfC8*&Rz38;tbK75pvcO?!7p)aaO_smdG9@YJS1o(7E z+WRKjHmsUBHh`7?M3DQaF*~fv)5Ddtc{`iut!1du1m_W$6sg)Hep_nO=NG=b7Ul7~ zp{eGVsg+=ngr^_x;tIg>yqkNS`Q9l@84D3g1@7bRqsVqcH(ii~#}_>QmT@9RmKrtL z4=+(mNG1$eOIZ0h5*xN%|GyZaCX^V8CJ#+Hx|TGzguA2R?@D5GG&#&=las##Q1rEb zBDkVR*9WVrgE5yW_4|8fJCxzL01PRrxAHQ19d>C+Pc~A?@`=3A-9g@zXI6g&2w^u^ zhhQ&1J)dK3VR26m$5YH2wGwpDobr0j{t^_>>xEZLcO+6BO%`#GuPi;!h(q~A_Vv(V z1->r^Y1Q!&k8*PIAgP1IHL`go5C*UHPebb1o7V1r^S2|$VJ?Dm!Mxfy) z-6{odo_Sw^k4xg!qaZS`obPdAKgH&@TDtzxI-wytn{LSBL_Nvb40%9~P>)Q!aE8df zHZ>@mY3tjP5o1+43O&XtJHI+!vt0c=k@yVaMvqb<6?$)>R7$X(9Y9wh+1CwyV$S*s zPkSN-9i?w&D?Gm5UXu9l?FGC_{|)C>)6J|Tnxz%p_SJUPQX6AtMGO_aHfU5yy;{9V z_q%?@#(?}bm6oqTbMAj}d8x;i`(&zu&&5uq#?Mdmq z;K;iCdb|Bw^imauQHW|wbxz3A3lTP!7%*fgr|D2LRM-|w12pM$<};};D}Ti9%V+Ai zcwYB9abRx)T~F=)7Ie6Uf{NYAFo6;Inc;EE3=JtD4+QjZLFkwu0Wd^=Js_;lFW4NK z#RP$5-9KgojxxA7Vd&hk5APUih5`_0!tqhvUqqzpkonprMEvd#?+cZP6LpPN(ElaB zp>I>8&vv93B3ue(yKH>t%ufu0zrr`0dl%o)j%m1;aO$zHt(L5TD*7=dclkk5g=#s0 zL4_dcwR@{*Sv@N?0VCo-E7yDi$0xEn-L#-IyqQuY4|88%BjG0DaE&K~JviJG-NX;o z!b`}UXhq*ltx&=b+T&;zET~J+w{4>7Qr@d4r5gFK^+43{_&VtrJo&;>fqDYEE~8VI#4@6QVMY zH({PulR%yH3%5Xn0V3XlN<+zqEGSjxnYdV1P?K}yM=jv{Q-+`XevPiKa1Ql%)d?Q- zz85Ef3|^^m?Xu2l*b<3BqLGpfX&PHmbh#R=(<$td+J=cICK56^hd?w@jU$I`Pd@~L zOQw}COFeAZUyi=$R_XRZ_+l91Z04s&aFTgL$0Qnn!Rn2vFe6rRe zlgmdSYjPoM8_PyWl<^-QH`X$cqy&FJr9gAU=zYa7lwWHu12G2HvVnW{>uEQvtd+Wl z+38RSKaz0CLU%kaH4OTrXasow!&4q1$s2+L9FdvT-4?Hq zY@g^?8un%vF)et;DK?su#y}Zq@Ye0$^G^;p9k14{xl zJ6huc0j&Ul(9L0|0>Ozmai6S(u{}bSUfsNOX^sJVA4O$R0E%>nCz?*A+D7I;_~=mvLE3hJRrhZO=Yn(K*@{1=ppQ5d852Me^0d!`OHs18+;r$ILV?TVFy;TY zI+aN6DmP+S6PjSfv&ZCjsF{c<3fVec8`t^dyz!H1*o2%!z?~5O83Cw(9P>&OO%Z$} z(m>5Vy&|rR-C9mh6PAd0ftI3ZP|nWHU9pj^VQ<{-hvNJ*h#>ClQU+0m&v>*fCAAe` zNu$1!X4LEZ(kiTZ6uE5?S@`Qe4E3kNQ{kUIP;%&KijsQcS^L=4%Ri|69Cd_lKWCS( z8nu;`(f%4LD;5F0)z{|yrgl<*se(nE*REJ!ru&iFH2_=aW=rTWit@#5`$s`dP{~vm zlqHd1G!+i8*^l1WK*E{$$Aof@Sp0&>SjB6bZz-+L1hmej5e^;tD7Ph({}qs#g++4M zDRbH$;$4oBUE@WnhIy`&+%EUA8F#j~$C=W%=XL+N%ORSPF;fJ-KM_zjJf1sX!d-40q%|#475qwoez1!#umYP=3^j1uI zotLOqQq(R83QhXD?o=yj6^-p+!!hb}8KtOzkn$_=i5vCnR%3}H6(UNLi)j%cP@%gP;LVpOK(Or!`3HE0f@l@4ISp!Iq8{-o?&il^ z{_isNg*AuN1>ILEqWlG3tvHy5pDxz*E0I4>)lQ)&;nzR?t^;NKf_wZ_Lg5&6%!3*0 zgGVvo&fVjm;%ehZnx<>$dNWK{AgP)tk1x;8LolAfslc(u<@TjaJ-GMF$1nq+#B*h` z8e`3f&!G!sRt^q#s{HHET{5ti5@JHzCrse|LFSCK@gN9SL6SON7DiLwfd9c=SiL06sp3dg-K@oc3s&dz^yP3~OZBtKgudc`9J}_fdiwei zlmCW)1(;D!fk-CRd$j)bgDFEz|L(w2gp!=Qm?Yf?E6kH$+nRZOe}G*m?R^K}#y0bg z0dSxlQ&%8=S+zjYFw9ueD+Gy=+fv@G-6OHmjLxIzQ-QSwrFo z&A#O>vx*NIgK<{9=9^=S?if#F-$gRxTxY@2cJJjr>l1c;wx)}y7CB9LJ*LqQ{Q1-gE+qC z0sl4)X^0Yt3{Zi4MUiYimN~@LsdSJY5+Adfm94*{0H(ohgzKzy}E?QQE*vJpE zGxPIT^F8N8Q&m-sNo2s()Lhu6PxV>R_G#m0PH7_yrzpmvo-5IDHSXY7ag-9$QbVOD z|L~odi60bXfoppE2l^?)FtP!i-b2sYLVC)OsC6WRB^LZUR;=>HCSC=i%)u=7k6cAzCa+S{K4IQ z=Tp#aHLY-K`mO%nB~5ewvOS{RoM2I?RoCyh*T!ntl+mCJd8bV%RH$gdKhHsvoNXgO z)qX2}FXSr?ZC&wBksdkq>~ljWVCdRPus(IHGgCz?Jjvu*H~hu z+4feK@j#okO3(1WA`}M9N8l2xg1YWPl7_D|#(+6r{Mq6lUm#=iUUp+Z+z_yR`QAj% zE^qc=b$xqcfx!9FDm{lR>-k6g>o4Tf`oR?Vite$jFtc~WrqAptO$->rwQcF2?QB1Y zIMj2(gD}(6zz@uIQd z#UH`c<;st0l;zGIm}$&AlKO=Q0M@yzc|c7~vtRshU1fgYZ&UUvWcRM*!`J~@Y=qsd z4CH?l8O#$)`154blg%mmexy4$;4{sV7AMvb-SwnYEidR+JX|DS3^&8qqaGGn2i`zk zgbW>{4U@Zp>RDO0s=Ec7s{%?xV&}9+^wkfCFoAHYi6|iKbSQc1T z7`MW&`y^Y!;P$U8nNJ(xxF*Jphm{62XvLi_)p5M*VJ8cDt^7RS^KX=ORoDv#8kIn- z0L$b@H{A5+5Su(A84V=W3`q{x!)nq3N-Sy32LMejsFERw-&aP*A3a4@o$>EL{U@jy z#FIBR1F8z$qRIxmN^IuTlZtVJVx9kv#hST?Ra?>JyK7-CiHMG8WMO>Fq= zGPx@Y$gmnXBH$75u;$#$@p4pp5!<$aYup}+xGo^1mPJ=v+YkOc8T_2EiSZ)B0!;Iv zWX9EuH3p1Rd#9}Q57b<*m?8DgWrbG1JDOz^D6M!6rEdPly;_p&DTHrXDZm}>{rSxm zLcp5fb%+bDpZF5fhXfv0AS5S`3~yjC%1d*+-R(>*!7{R^7t*fAmGDDrf!!*UF8?xZR>Q|6kq}jlMctCZMB%E!r=84m1b_DhnXsjESiiaWvrAr=$F!Gf} zgpV%=)}D+`=Ezg#N;lo5LIC0$U6S)Uw}^l zN`G@@6CpCG1XmArhmK14>1m{*_BoOA5a(TQsE}Y>!D46A$o?VMXovwhzd6sDwNTpz zmEK;<%wl^ZYVKTj;sc^i{EAJ2C+Kc&qJIlB*HA;JlBP1lkw?0mvpy?@>2%5Qcy8`W z^3xaGzK`(x0>ARf_wCthiE-n;)~7H2{V3l5aKrzU@r~Ho7kl=bC^7 z$)nfoueUC(rD)9sBD2l9SAVZ@>NRbD`8mmv4BQ3%LrmH9QnW+(L{QuN24x3lR|iDj zFoh5`@DQE?cmMQa3j8b@&-s1S+e^6wl}wmfRxD}=iE^tmlg3DZFI|wXNa-kJOU+Fb zs=*75a%}Y6izMXxm>y9)Z9n?^OVd1v;l1(5y-y%ZqBv>SU?5^89pOHr1mxvK``PgN zxlq;cx+raxL6Hl~U;FyMH>{=;WJK!{0MRR^{=mkh`PK58l0 zDX|CWqfexv^I~tD%`WSqxw3~sn_&=-OHhB8SYN8k1vE^ucBhzu9QxAvf%Y4rI&?a%x&-)@-Z)B z&!fo*FkMD??vAJG&axA(*UO`qywaX}1Jrtf(_t#%;^vnqD}<`zvxb(JCWa+UNB#T~ zJiQ^g?k%qFc8bR&eadVNX|{KC919q$UHOaUijx($W>;6p8z?Q6G%spZYg~9m5aBlX zw)=6!Jt7$14+?N|1IYjV{j<(t2lej?;~#rEU;{(lH#YaKjQMBV?S_0bCVJ4$A8Llz zcTzrrb%h<`1}@Bv;9gZ#7`n96c}v_(Y;N|E11v-EJi8$pFhBNK&XQOPOJ*d>7-_r5 zF94R$f;B%`_6e0m6E`9P*rZ-%nM?`R<63=2Fo#p*jVrjpwLna~Ef%+k%r?#oYwW@-EpCY{o zv_<_U^;3&Ov{d-)@1eVE1{8%J#m`oOm9>TEXA(-f_+j=*VH$v;*Z$| zNLUxp&6|lEx>Q0#UW7Ph%t|%Id)j@^Zly{1b9c;a1Y1bfo}Oj0i-XmI2{2M-C*Kro zlxBEQY}kIRe;Zjm`ZmKzCge@5CJN_DLhn2Z^YLeJ)J!rX?7y37|Bzdpem0^{9jRE) z`-tji)><(vgg>hLl3!f<0^&@<4^;yRMDOBUAd!>7Xu$_PUuo*jYk~Xtdn}$+1wEno z&4(^s_0$O@6OO5<8ygho#d<~{1n3p9_RB+2*63}9C8Ve)gyNv@OC;_DRhqhS6PXex zC!0RDTi%3UaObF6q4`R|LRu4Fj@CUsAy=lyj@#>hoN+++bV#?z;tBZcxO2$woY9jy zbaDxxzqb7IoL$lgJUqM>N#9JCs{aw@8)-zFz7s;Ktm_I~d`6D4)4S7}c$b{I6IMw} z`Yr1V|F@CqSn+Ihwkou!0RWQ*O$WUiS!#alDQ^-mJg&lA!X9~Xfl2&w+u$O_j%_^Osj_vI z!I-nH=~q|q$OU#wea^}#;?f+iOA?C?$!0hh|B4>bJ37LMRy zh>kJxP+kZ92Uu>Y#jG0rt-rSZm@}@O`9Hx@%&Hg`f;QX(j{?-WtW}KTM^vdyICVMy zv)YEju2*`6MYnY`#Y4y%mXWCJjA(5ZxJD1B-wmw7Vs1?9Y8|=br}6kUeA`b& z4G5_GltSFcOD61#la}@%RoPf_gNqCclN1MxGpL*^lxTo|v9!o`i~nx|&j3PxCq0jU zI^Oas(wrg96C=bK@cUpDc}U?K9E-CP!ups*nt#u!KDgBBCvuu>J}j*jE!0NgH7w@K5H0~ z8G(&;mU5DW3{zWIS0#R9AOGPHM(5QnVAzjuc}U{t_C!qLjUtxE)&;6l9s*Bt4Y(Ddqk_L zp;*$slYXw{(zmcMvFn?-3-WKi{8M}1vjdCTOqqCArChpz#gP{Vo_kmgR`tj5p`|2W z4;B8KE7Liq=bSS=$ zVD;K2j?yewM&sgI(H`3avo13-k9+qHaHIOc((OC=`Wgsx3C1vKP02vH6Z^mZ?d}Y| z0={W)e3?7p6^LcfwI^$-NiqJnv!n7c>JBpAQb;<#l_=}lRy1Al*sTiw_5fHR_zh_G z{m5*r`>h$%Am z~f4FpS8A?i||fxxnC``$M8( z%E@mbdICQ9Y8#nhE~bkO411tfc|`*%c@rt<=1Lqtbf?%DP7E5U&oii!|058a0e8GT zyvT(+zS=w#vhe-5qThuj|0`Y_aq*kL)HDCrO=?{`@TNz+koL$*f=nLC68V|@z5i=S zPs|bA-E@REZn+p0j@}rNyvSJTA-e}D3=72oAqXoQB)=;OK*q){8DERNW81+B$sMIw zRQjdUbq)>ATPR9WE2P)1XY~RNG#RM$`WqgwpWe0bU~2DI-10K_vZMZJD&IflB&YY%LFR|g*WqO}l9c)5Rp8RGUdH%B$s`a=oG(EO@IgXu#cp{HBQGAupp zP~lX~gO+Nq(aX+p`*zqATSMqH5%c!&bLk8i%B zIpP_erbmn}lZ@;m3!@(~*FjG5gON@)+uK{dm9BRjdR|hlwexmYQ`_=E+~JjYrl;IIY5O4&?0R8ZKTKvR4-gHw#LsSG){uLD-2 zO4^@!B962XfKjM@RT=N769d9UKYU@Dlx!hA>r_WS@^W%;n-r<|S>k2;mNW9GZBU+@ zc+qH_fQbIf-2+-E;hh!y0_D&(I#ln(A4Ay010NsUmKYMeuRqJOakd*{%k#VaAD+G{ zEXwYCn;5#gq*EHCJBCKOJ5;(`dPqS!q`N~vy1ToPM(OU3|Kt1nu5X{r!EnILGkdSS z?pjo6bG1ZvR5HzNk{6l?Wax4PH*^(m#K2TdE3rS#kL>(>3`v4qQRSr@)j}2yJvG$AW#UmgZkKJ?d3hT@pLJ~WofZBt zg8Uuyu&1;?3z*F0(#r9@J1|KD9_k%sN;a!yTR;@dkl<0|YSqV?>bRR}0pRvh#~S8V zio;w{88HIg_1f{``Lv5YSB5geb^Xgnvrsx#QIa5ZfCeK2zwSg?#u?MHO{#ohi4U^s zQo@Pm`}uoah(ONsdx7`dkZLZB-cMFv9ibU=d`cxI%sx?mrV7-QgZexj;wJ75N@rOs zv?M0Ry4V!o&7I6_g1JL>7OB;D3J(cdLd-yoSO4Kn8R)Y?$shLHT1Wz$&;w>T*LUgx zT?n&o-ADyg?Pdpkisxx53O=SQP?#SG3OGAqT`c&PEki3xh$QLUOZH^q&Tr&i2f%Pwscr=!Y_qC5(cV9(exhKKqh;$B*3=E`vyfA?t;7iN8Km0hE~%^LP!A z>!C_{C5|}GlwOE+=U5$l<|Sr?+C?~FaJmY05Ut)|Jiu=}xG2mZ$BF%Mw-P>$Bx|u> zNXdfd5J0}Kcow4I_S@)iQ9~Bh&RsX?s^1Axqi!nUf|OcWqK)7UtB_bJ4?!`eg#z`) z)1bxeIqTb|{Q^8TI_a_y77eCp{(Xu5+U(%P>s=>#$JNh8YP)C9b)_7Eu`kP-+FC?l{$YNpi~old;@JjkM8$&SRaJ zp0deZFXMO(-vw7cuPhUsk^+^H5sV%~ZP^~0=8i1n|0*;#q4Z}7CdX)>ERJzNx5R)6 zIWNgWfg-d#Qi+;ju`%}}y17p9=9h#XvW2AHSrDLTA>*=Z`i6Mli|DI%Cy8&yL;Cdri4cJzd#TlP1Q>a zjsM$YZ9J%>!|CzC>joyZ!EOQzi`i#8U*&mdkm~(0T*n*66 zIyPHkK`d#rMjH@P9k~S)m>mOr2_Q{=;JCgj-xC|hBdwORXhpI2iXf~m`9nB`6O`3x zuLGqsa{2WKE?}l9k~{V%_!gd*B=2Q}CA49|Y)JST@^0t5)CIQO$!&%rC~MOc2jEn|3nqxxSzD!%>zQ|->arvz0pt{o0a@wDr*g@!Wfys$1P4s>q64qFQ^``kCuouWugn`lyBc+Qlm!vkbizW zgj&({&ftZt>vx=a^=U>wvv>^`s9t}xjDl1kPdRD&pu(JGI%2?#L!|K^8dRrzZWO+0 zzfNw+ae3^$RlnGQ4CIXpF7tXWrPwSl1++V|MSq#d5=0REwq5#HP#Uz-cq(?HP<1vW z(q%6jeezw`wr_$`RK$cXiPKI#USmm|J}-YoDTRG&SJf5wYFOD1d$&+4_!ilIP#1OQ z?YdYL4NE@^FZaq_vHwLX9X8dE=k36O5vK9)=eOSkbLIE5*#Uq2S&+86CXU_wD`M}G z!U$~}C-f%}Wpk@h>;}|p=b#z;O^PAg?9$dqHAV*nuqT>wmlQy|5|Eer9-{~|9LwX1!)$YTQQo6Rbln@%RTAV_zD33CKEpgGk*X)}?8de(smT|f`nz%vc9jZQjf7A*^i(7z z$rN#1JPG9ulyW6#e6{z0=qBGMqi-Sk=~UZqM|%z!W}f{f^bA0PU+ljwquf7VO-lCN zn$F{lY{d!&rD_n~qv6Go3B>MJJ+S#Y8*WBcCW80Xc;Kn@c>#8jY5niG3K75D#{^*u;9F~$sKZ<0s#aIaKC{b z>cpg0h{0;pP?pyb6G@2j{pRNqVBG5m-d&R+&q&IrshobIs$AK#y>F=U3w-u!7)Gf$ zBNR!tDoKz{x_3gJmG*#@iF$)hD>uMEPa5 z^@TO13EWd*Cde{DO)O%@6#fK#M!HO(N-U%D1ou&s!Sc1xl*V?MK@VH@N&79Vb5#>X zcDw5SLv|wQoL>rtMYa{;J0hLvecm#PJ;xDxV7~`037Nc6~#FRbx)E$42gR2)RUjl-an4 zmV@^mEbz8Dm}>a8nO`jvE2h^_oGk+9(BTEwfa3gkc~j+Y*nWy2OX7KZJdqZn7h6;* ze7Boi2LWot;#n1ZEVVVP2iq7A*3=AYK-F&0HF4NZfZ~!VR>{~!{`(S~X6jj$2zpsI zPP`L%WbO;4Qo~$FtU6xD4^ObA&y#+)wdc)~zUa}Ug7BU9k)2J&cX$FYL)%}jZ*z(W zGWi}XnX)`k+hr-Nj^sPftr!TM8}U?(s6wvuex(EFW<0K+NW#yDNq>^yjLA9=$H`u= z-~;H^fG>NEvdXm*ZP)$r&rGR$#fI9mojK3d6_TCL{D!TqjLSRX8Z}g>L!EfI+swNs zHjCRmJY8+iJ_p$0H5|GF?BQ54Fl))H-=$S_!w#dr{}a8Sj|Vhya?&fwaeAJgGcNoz z#JLgCG`{2uxrSohsGiTL@x_3gtu zqN#>W;0D)5iPiRl9XqCnOgs|fwQECdHy2G$WF_Q&Y0&@ODSd?6%EI$3Tem$>h)U2_ z+Z{!py59A<8g}C8#mY?)=%%z@eMADcVuByTq5QT`jF;kz&IC6eqQ9z&aI*LU3<_TJ z(JtX(_DijQ(F}G88CAlkh{u{3J3|wHpRVu1A&yt7NAyiN=(VEUT%Xs2_N8FtV098{ z9O-W_u--Gj1sMk>&oRW$rc{dv$b^5wgyO-GOhQOH+hGq4yhT`$tuwW`vMUX?(cGD2 zI@zQYf~GWNAuoaNXaa=adhWW7-{$=xYw*^KN^o&! z@XJg(o|CDhcN8r+6xf9Ifvp4v)I-!#h*+okriT(gCVtx2+DK=4YA8y+{{)JwW%Ij; zOtmRE$S1IR*(Yk)j=seFMh(Nq%Uf&&5|E*ZF(QB2mvKSbI;yfTd{93Y*IzUW;(kI+ zq{%_bexX@<758i7osI%wUoa^@w^+cms8gJnh$pYy7k8#|5YTdlUp_3=e#s+j^H4A$ z_1JS;Vb41T9H03pVtD}9hWF@>Qt?Trs1x^D;orjG8J#lmFl)R znQJgSO*jSUrhrq@P=6N_s2G)ktYRqQx_@suaR7oi3lq@hDl_vO5CFB;zXs%598qvX z;z98}IpSlknlH#YC**cjRt;0n-;XEo9>c?BpjUCZFu<5^kKXMc(L24L2-}|a^{erK zBUcX`%g%YpT*1uNdwfh%tuH2imhJ!gdW?pu`rPH6>jI?Lyc;~`3eNzHN8vJ{F7MifI{D&`d4*(4>kL+cJ`h^f(`p3A(uhwx2`lz82)J9K)bvNzO2+>GI%H z#)(t;Zc8QFJh={$7zY$T`ak^eC-S@V@b?&$91~)!_I`T@X72}ZFXWk1j=8rmNYFk&D2Q~Z|wkf~#PQBNzC$DDoS`3&*Tmbk6E(3U*xmQk1q<09MXxz{{?P2s= zmFh;4v_u)C#p59ht*E7VlRb{4D!`yKUC?PII5BkE-(}NsZavQvFR%2vG!o^ErW^>gXbWIgjZM0w44fxJTWh zVVr1hbNx}3;Js3*WWntb-P@^cRU(7NmhC&@_4~`4NH-BLMisCPmuQ3wZ^oqOL*)Rz zeckDN{xLF^V1qvVcmM2V{j9kT%-LH1ZD>;oRPUb{JMq49N3w`wt9z&N_!yt*mI1@| zwfijaKKg9_N<3C9`f}r?aBN)?*dN)?_1@8j_p-f8b5S$w_Zy|Fe#Mb6{ly6@l0Wh-_i(#aV+b9@0DZNm^qN| z4?1kuni`yob!0Osw52u%3jn2EGq&i=V*N>*U8D3yQTsj5)>^N&cTqD9H$=ZbzfP1L zbTa6@^eI-BqW-U6dT=NOw$9^<==IbvMVy$mOy6nPc_O=yTzY~;d(6~_o9o8Zu6(m{ z3#1=w#WIuo8&BT;4ucZnK=k*QT>OIfG!nA83}4|Y8vC5sa`)Ut%Wb9K=8Qtn&L_lo zb18ijM?ehHQBnBU0%K4LcfO`uW4m?kGEz#hC zo;+#dMEwcmP+mRVdw3|ZQ$`_^4V7z%npXVITGJ9py^Zyxq1 zniDcFj5TDkdSS@BI*2sQccE`0sF+B;gfvrsOcTU8;WTf4kbkVaTnGK?1X0IQ+)Fgo zjt6BVIsD!AC$IsrAk}$4%DTwxrU0D>J*QRw^_>hHYZ(XDO|GbX|RxJG%w3 z`FO6`YM=E!K^-l3CNoI>)rW^!PrNBtJO0;xxWQA-8Wa|c?+%}6RidT0kgHKD5k-q?~I(-tn$eC9sMrO%Dwt6_%d4(odtt4qgk?G;Ptb=!`S1kz*R zyvJcH7ygQYz1?0XyIUFu65*8nYYa{8_Xx|oGHVrw#QI#Ed4hNBYSIW96X!>wVKHf< zk3r07IxmMJc*6>3dgE;(h`svJCh*m?>I7>}05MVcsmTHqfDsp(tle*Z3Dz#kV^nKc7!As}e$@cLK=F zZ@W1w7PS&Htu^WL&auY7WUB!1Z6ebhAs}EhGgq+;&-Q(dBuRs~_abB;lH#0J7FMRp zi;NJ9qdU)C4qv>MOTv$}jM>V9c6t57BCE3}326>CwL!aGHj?$yb1Nt_mbDp#3ff{zQ6 z(hsumJ^frymrBWAoh)^T@!&hNh{cPI{|WRON+m z&oc|%p&oPL{!ZMkdiL-`jW=)Yl~e9ppx~70k%L8C6JCM)`RTg#mLXsLm`Xy{`|NnV z&A_a|9jUMJ_0Bm&&<2@N>of{+S-}5g(SNNLH;3YKfgi0s9BO90M;K26raAdHW4fJ? z{E<*78xJDy;%&SdyEe&vT#PVR!W1TMQ&vzN#0z?#+!&Z%`0niJ_QhiFNeiEIY1uh< zx|mZwB)!D-*gS_DGLFB=&fHYz@Anzp#emh!fhS@%!$Vmu^U-xhYT|H&Z^hhmVIOvH z%id}UAcPQ3%71R=O1_kF^l7Znb}7l7;T*dX6MmGWrs6?xKD-33{(*K0;t@v`9 zvnhj8B!qvCf4f9uu9trxqDoALieGSQw1jRA$jR7wt4GQ-O9yN$2JAIJ^c*a*r7>yFF&yP!@9$O&r9qh*+2Db z^=Jz5U}_!x7|BtxFsmOmSV4Wyv8tdK>WA03F^$O{rZE9#jE zO6S*97BMC~cE#vAjH=NsG=`su^)!oeZ@|S%jmkD4g??(P!azV%GKLwK&a+47xr1&b z_E2}|1bjiZwu%4}ZBvhr&d4aM*A1s*khnbf_sP`G7iqzU)7Ny|)~KS?#4^Vt@3@myd)I|(Ig*1jU_g6;ybd@5x$EAKOE*ZqJdeKjpqKdHz_$2XxL-;WV z2sd7sKVEBipikgu5NB?BpjMd}nBh{3)yBl1mXVYTV_5IkORrJ&EWpwMV9H;uYIm^_ zxi34~?dCI}^_ZNCJIMCSq*vhX!H3ka(1}lE%GK?&Fqt1JuLapN+a*HehB>-D$YN() z1>|&3a5PLGA_A`QR_zzrt?p1tDgrst+nETGtPyf_o4@UR-WNmK{PnDzB;Q8#;1JFQ zQJ+n1(7|`QM`p1eJXecB*g`8@3auNgidDuBo3s{uEJ(()z~GBq11 z=AA|o)zYY@Y!wbVb&uL`4?wt+3^W?Z{Z0ibw;`j{NR!l?kDM?jbFqY`akDp3eu_pv z<{`x47Wv48dHKiu1fKIAXgDW)cZvBWls{4^dmL@RlDz;7y9!A-6!wsTn=+1gJ@3>6 z$F3eVJI1`+bOwR`uQKm<6h{7Qf=Yh-QcHFWe%t1$Q}~&S#_HaPONJz zG*Ac1t3NrGd*6J8OW6SM-a#w>O)arcF^VE`D;CDC&wTM+LYTj)olENccBRrfWnu0x zV>?lbvP{v1LA+kSypdgK)56fH3>Fj^tYDhu7~)#TW5q&}GC4449T7O@I-+{ygl;jZ z*ro6fcobYnhpc8J_kFWYkZ$oKq4Gqi;e&AX+#9=Pi3#~k4;&&N1`Cno-5~Jy3 zaBy&l+zO~5JjuZtosq-Cau>(nghc*=>o*(KyU-uK>#7_LmgTUPfg4-&!^uPPF-4 zYFibr_eb@#XQ9xAk<{88FR(Beq%D=b!`ZQi%>tVvBf1(QqQ$exSc51l`wn!Rm7eC- z@?C_RA*ne zq~F7rSaFGb{vvEzWW6x)aaOmL3gMc(>Z8!RRQcZBUKm7CW-<}f$!)F;`T)`dFgSvX zuW?8(M8J-`lE^%nOF-K44v(%n{k(;vl=>qDFjFp`CsvHc@dUeT>dAy&EZThNIHNAG z3gL^tH=ex!2j_lQ42$Zg@}>MN+s zro5^Yrc6*A>BLnr>d%TTF@obT5d9X00lRJp5@(g4hbt`sLZwf5NYzh{R2VBs&UgTT zMG%_v;5pmaAF0Fb@9@XMGdy`nIPD1~s;@{m-?H6mQ^fTalJ__!5=A z%IzmFa?S7pCp0vw zzk7>O6JmEi;c-g%?5&UUah!i`{lNuUmk-e`7z)+ITf5pRZKB1|$i3f}T1duC74IMp zVSF&}Hshoi;+b>)CF#BwbNSgr&-Y!u6V#v`h4>!fSp67aL`>oGFD@F`O8wl$yRY() z1&nctDH(gZI}5W;f0MT?#{WcYZQOD!O%noq)&PGtxn<){FMD+>USxJaoQ{>-O=Epa z$A^L26BC2FMaOcqNfEgAXJYykji&9M%H^l{a{I~gLu;)Y6~iH~*y=qm1?w|oxWltU zn@vWBUQY`_;IrX^Z4OTjwzSvaxZ5QIDAL5E3ZmlGPvc8~w|Oj7bzHScxD9vmTVO zQj=bpra_yYwocB5fDfZklRbzP1{rX6p7Pd4?J`rIXn2JUT{ky))4Vw(I%k&H8MulY zd9^9w;iSFB#`E5=BKNKic`|z9mwYYSq@DkW99a7*n0Ah$T!Ry1g4mVP6bS3IivcN!F4kz(%XH{%nwx&`at zmo;@PL8PObT7Z8+1lR`$+=$WxA8VYEpSwQVp-iN*O2<$FQK8Q3YsUeA`@@*1dZCoc zRTjDtX8e^>XvzrQ2I2OW`@v$LtE+$1(dw;&5N3F5V9+#PXh6|=W70=7Z;hJad$~no zuw;?mSsvhsavGUL^*j@6n}!RH8hL zKCU??36Q8*zA(iv#ht+=4-=S?x$h&| z+aJKiI@tPe#5Y~-0HtA}%z)_a7rK!0cGVAcBC6a_MCU(^7Tl0ke#P?%-Q39bFRu}X zb(@ZzaU5`l?VVrx1m)n*eh?kmhwS)f{dOL3hJ+jpkGVnfueT<8SsGe{5;_EMX^0Zr zRA}sQM(X^%bXRkyd@IxWd~m@Z881S^^zR3v;wBX0ds&p!#npd`_f(YV$mH@w zo0Q=tW*2WuMNnI&J6FIrG0w+EQN|`Qcm3f^4IKf-RL%Ya0l_2!DwW7OKhXLL(A|dL z7+*fy{_O8h2OL1~aot~A5y`&}^0pS0^5(C+0V3L{07E6GFnD5tXp&!1h6W$@f8136 zMGU&@s$wjy$7ZGGkO!pbkF_aaYd7(d%M+|A*QE;Pu=BC!c=HvQ6rzPUY ztsBVCp@UEmaQPH=U0+!EqGAp3a1tR01F<8&G|F;lAWOEIAUF%9JS#xw=G%R=s3e)M z3BkyIO7qAvgNvs--(42@XWrO{1K;ADj3NZuNE?IYesr>^u|%Q0zAWVey~&YiYkn@x ztq@FQ_J^!|c3LHUv#0~xoQHNvP(qsu)^_mD*b6u9Iyw>VqOYA`$5m!EZ})f6c`E6W z!!IU9lLvQIv`P{uSj-AV(nYy$rHKlz?Be?x3+$8#=XGRLH6d&8r7Q(gz7Q^mi!t2A z+^a4JCznD)CObgL7HF4CW7ipYp%r>?(i)Ow4s=QXqJ*@1>uYAS?Lop`IXjow2MM1J@(A=OY*!h<>dh`h-OCsDy$_ zMAMV9W0^wrJ?Dj69p zIJUU~%{T1fb9J*wwWDT+u!oiuAdPIOSM2HoeE@TB%w}1YcoF$-6P6f*>s)P-tCqR*F)>>^cU= z#jP;1R_Hz1z~^LvNpsVv8w7lOO@e=Wgb@o`i!S$a@U)tfiS7uA3ZO0_ahJa&LQHf+NZu}UpoqXH76 ziim%5_@Gw(b9B8pChjx8yVlK2i;1oTWf6cwX(a-K*bE<84IWQD=Dqt~puXWrpe*Os z)6b5@3c9ca-lLoOXp`}r^sZ44W!A)MD=C1S_I)uNI^}P^KP}Ctj+03qKEqMC!Tx1q zb&UKxhPWIf8h0S8XXi~7wnt**{) z1%srd^k^J7@%F*jR5?w??vu4d2M$R_pv6I-RQc)rZ6~e>WL++7O05P|%1;x1TY6M_ z`|DlrKd(AACiHV4h98v3OXn-x{T4<$E@1YfhE8id^O|hk>b$>*DQ{MYB*YT@=Guz* z<@Tk}iu3Y21Z$)$}9!-No2ty|n?Gnac^n>4A8#1|dNEmCM-*-MpZaUJ9i7U(a%_Wsd{ zOOcq}s;|HFCg$*{JVNrj-52Mh((J0MSs9ZU@!x~V3tUVdPVH(mMCc|nr?$3}upOj3 ziULz84q)klkrI~Kt-j+6n0m~NbC9wc=DR9a?E?L7Pz~Ap4M0|bk zkQ)z+9~sr2-x(9W6heW0@8P#wJa5z$9zF48zh*HLGGD@$KmiU&wMZklZy}PSOf?UG(kQXg(t#opqmo@qEL@VvcOpMdN-* zrrq3m!nv~!5~OjYU45}E_I>zlpHH`((%Mue;ISg}lKrGOz{>>jJ@$ z9K%>YHbE-3oL&9>Qf`WeLuSxm{nW5SVfni3{7=MLbz*gT|0Y-bF{O;}3LnJ##QKYu00z(B6pojKJp z3(<7s^M)vIY^6A6H5NHB2%eFZG5e_*N?TzsN~bVQQ+`L*?^_C{s7rW~z@$*QjNqtmka<403zqs7r=T ziktTE?EslFo~#Qtus#1q>}7kSPh@x@fNjYSCOc&bfaDJGTc*>Y%uOnOoYhJfP=Fzp z#GikbwhtIDt9v4QhP|_IVFml(P4%Up@?2A0%A z;KR$-sSs~KAm3JQeMucgGE9op&6yK8af1^sT9uW@F*5NKc^lL+4KVwQGZ4x;7-uVA zc+arTj#LE!5)Ew*+k>9&R)itAGMLrY8TeX^%kv(!RwpW>aj1aQ1r$55Eqvz33n)-0 z?xz&k27IgTf)ihIUHr)aNA$FN7D+uj^)Y|>^lvy~ajL+7gv6W$=iqi4-^VFG^iy69 zQbm$`@6J2#39l%-6(i}AovSg)kRhD%-dG!NcyP5uyi`%@I6&|@icUwNhSJ1VYu~|} zO%$KfV6Pc7b?LGt18;985kIb;0<@n+l;cx{EcPaN?WJ))ROX#bVCjbLw;78f`wC%@YRg#)+5J1DIl+0Riw-^AP^E(|X_Z?v>9EQ-{q!D$e8zf!ijg#AGz zbB5kQTDA0a|Ej0>D=m?ulLMiKSiH_5VRyy*D{-*9p!FT1ktXyGv_0fERS7^USK_GK z5tprHl=bL;#sb8>SQun=yzHT2;Y&<}Udjg7OCn8{Cu}ms3VqAATsNnPis}pyXD;_3 z>DaD%z>)5M#p@eLr2NWz7lO)&O=$Vf|76i`9BW$H|8dq^#1;hPK}qHj5KmBUTf*HD zhFd1l`w6=k#dW`Jy{3P2k3`dXPF0rJD$WmGq0Cr9r;>%}p2<$MWxeuTk9uO*@jTAy zUgAj>}ifN&L^NKjqM_MAF_gR#_{Qi&N&pb5`a4+WChjUTj`$Cn!sR`;4H+?<~n$ zgehukafmn(CIl@HxpBw69^b_et$j0o?l*QN0~-VS*UwqQ;-A=82OI5h;klYoWhv%| zg+pdu`w^E~Bm^We!GL$Kuv-d?Qp~b2h$DC~W)H2FM4Pp8ac&UH;$$F0YLZlTf{60sB)UYf%;)fk& zG*X(F*noOU?GB>$Sy54)Rf#|oA42^AQi0>;Huqd;6ve8+R5nU{YQyLJip8nuIUu7q zC3y~60=PEA_Qz4nP*9n%nOa(6QZ=BnX6NWL3{Z&Ygk7|anEcFKx932szrQhlbDIRu zt+2_)_MvS&z1`kk*%3*e!TLU zKzA2B!}e^pD-_ptqx_a}x!bHBTuoaa1!jNmZi+}1nDlnh$hlkQjh45=Nj3yf7Go6%L&{R|Y>3Nl zQaGajnQjIhX&_kMsCC-xW=CQ&&)>mHE7Gx5)-Ee_ppAO3AMLEIn3T{@CmXLP-@mBv z$9kQ;$sjkrwWD*?5XJ7PQUy#t<8-;a(MZw&6d{#-Fjrb|(dMN?mhS%P0=K9^EIw-t zDmFs{d0gWOw!{pST86|W>hd!n?a+s}qN7Hd>uS@rzE$r{A@Di;X2&itj^eA<@(>$WuDvUG7OXufVc4hwT{QczS8UCLJ? zPRz|oVnIakCk~?p2Y0{&AaK>8ciYxn@`wcvfZ+T=0)W6EiU<*(wy&bVwbo-|Kw(Q_ z)Nxq&m-7#Js>O2*qKk4@pdV1gj)#=t^0Q27*s%t<5)ZzB^O9rhgH(3s561Y$tTnkEnw#V7 z|CiUVHzXqGvee!tk2p7Oo)_h`vw?|hnbGX2D}@NIfJtCpd_`5yas7k zUj`J^e*|5oUN6fpUj&8kNM^FSX8fNNFva&dNu(NeS9^uySIR0o!`}OVo0npXndDJ) z-rt$RE|}WceT-*$%!1BwI4j!@EDWSJGlWY-aC#sq-jeq3Bn;L~6cE&0+TI4KFpJ*^ zM~xVws*0-CRmu);f@s4+;5u)#cRF*A2De8R+b)P1nJQJ@b>lH7(?Wx0ke4?C1T;qC z`+5FBEdN%GzBs2ux6hZN?7p|)`B`>DG%TsWZnEz0hO<9I*3xBwT4uA|pD;ws?=XD4 zLJhHy+rk&?KC*iNQ3ZD1=y&4DnV?^z&dyZ1Wlbye9&djNudYsO-X(wTa3)SbpmMkS z`ZB%eT;;$63USuD!tnbXGl+~@)BU}EBR@Rrz~c0d_KET4qvX+{f9)^U9LbAE>qF*# zr>eOyOmt?+T6gs)r)GF|pFf;h7*J$B$O0$?u1H`QdRh#js&agH%E_<)%rW9L>>(G# zU!9cTVt_2-enZ{iKY#LojW=Z^$?}+Ev^Zgw_OZQ!0c_9&+`NIc)SkornYEzWmq|;U zVd-Hrzx@>aVEBiljwJm2<@D_J=ZEQnYV-oy=O_QSGbRhpm42J5_M(v-V89&BrHq>t z_7dq3YE->e^HV&eaT~Kx0YPDEr1IVe}a*1;kzq2`!J!}s`a7XU(dM%2G9 z&|4w?!=A`^_Mdq%=PN&eYDX$(PMkSqX<`wHJ>FeC9#xeS7n z>W}e3MHapK)c1x)zVmUR0+WUq{IUPBa z`O)Kei9-hQVEOQ{j65SNkSm%)X>+$rE@#a=?GT}RA0fnJZ6}hr`)74<>@C{Ndglay zGh`~bkO)Lm{*uWOvtpw>5&pj1`BBVvbAdree>81wMe?U{2HmDWjUAFxP^{bVuM%(A0Y}qsdplj zlyj-)ECj3vgn^6QztxI2K|FWzxtr_&CMvh%4~`Ti6d4u_AtWq?B0>49FJOIl3fyGj zr^%DCI=Gqe=ul6M0j65HZ?#5X9Xm8_#$Lz+(V#4nR?pv)*#g5e#Y?tEAA82r!grxw zr0Tgebzc*Z8$?Pik7DyG>E3Qed2xewG%as2fDV{*wSxueFQu3q2<`+cLln+)7rCnk zGu(;sOMD|o$UGu4!L#Ney2apN90VhJ#6J@7766WZP28Pab2)P-BUDl7;pMOLFe`Ps zH7ZGrqr__aKt{v@NsICcp^C_VJKF3=uO%p{QRPeeC%^9LD|dopw_)9DKaIM;HL(f9 zyr3Tl(4YR)o=1D8;U@D);}h0Ab#)?V+OM2Gz}h)ZuPG~Lk+qGf9aj77IFlon!rN*> zr`rvqEhZOAs}y^d`6x2?2pJ@2mpkIKYVP%68dA{lNjOnj#%w;IS81{!65^oawL8w# z1^38|0q9@^0;6_8ov7n|i3T$3jP73^T==9XHM5eauh}K#?plghqbiL3|Np7r&|nf) z21;oPNNi`Ux##3xbA>S5_!ZDW~&Ct23JsP|n+uP!TX7Hg|`J zx;+eEw4;K~5G?S=M85FAEbiwg7=1jH<&S{@I2@X8(TAusH*NWU0oG4MR8> z|F`_U-aj_=-*Ts}AjTA$%w~N}GNHk`e-&>Sl=?I&d`R3KjsSg~*$D;DYR2rNE*Mt~ z0eqDun6{L?9QKF$m)!1;F<=;`-z<|quU*H#&0Oz z{$!uElh@($HbgukNFt^ZiPRVsq{?P=6K0IawtL`GSbuk!Gb*2GwM%iNKnAA#g={-_ zYqVg?C8r~IE9Zr>-mjBK1Z$8JbvFHLe_jA0iE&P`d7pDz|_77Um%?f9v)GS3h0$1X*IqG!ldX`30SNzIr5+8$xs!n(r&{D2&3$nL2vKWS-q+ zb@^pnj`X;9;R8xZHk#613MM}F%=sb`lVTs%@r|4~byL&>B+@53eSOY@`? zT=`z`My9C$I?2Nda)h43rssAnW4Qlo~+|k^KH+~o8&c#Ceff86hv^ z*29k4eBaU&(WcPQPz&DEqV)-mqGZ71d&yp*)@kn_C+pVK)1w*}QWka)4*ew(t0d}V zQ0c@i6HSpLL=-~Ntvl8Rk#=OKfI;H25QmaU1irQZ))QXf`5zE*(y_yI;D8E$xA5Gb z6lMJJ52qN@H09A>#`6_nKHRcNM44o6N^RWA*x~D=?<<~&k0U?jv2ee0x=le^CiGib z0V6b62EGXny^)Hzr6{kP5jWBOs1l*Oo4WJ;t4ay z6RC7eV)5X3i=S4R{p>vWR-Cl+)^-YkFCF|*nAoXMUq1a?La5<9MSVPS^PDxvBGR%* z{kOJAX-;ob-JN2#&qUU6Zt+yq=5ONM#9mroF1fQ(#y*q8sKANJNEEgtV^ReNH!mFB z;MtkFkhwyRTz4W$KvpN3&nPQXOqWlWg&)#bGYVaJa)kUD^)dF?i^9KlW#g^%6&AW& zzWBs$?v9fX8(bllgZjB#og_2*W$zI=vChJJvn=7lsCl6tO2>!(t)&?Dqb^6peAtt0 zTCaI3k7KyWjEF*FJUZYloSCJ7uRjuVU#Dz}KXBe6K<-Rnb}Cp_pHv^NcN@KH4lVP7 z#2N$xtMDiT2l!l5n`mzv zFHjq~YGWzv(Fk9FIN7Fm2kd+oL$SDs#n1S0jU;nBjwjp&b$|bFy&%>ypsIEu zy$436?-Ob0qo}S`B*}4qBO>w+n7!vmS~@~(CsP?8NiEhN@axLj+hVrh40K`jK30li z{5wLKdXD9C$#=cUU$-=axW$`A?{?2V+m+u4rnY?fI@1GVwXmX@^phP=sI$%1lA-fH zb8l)$7xgErOCGtPhf;TzYuv;#j4gA7_Wji%z`*M3BOpG()+l3=5StPsk8ggO*=dpX z8mIf;_95>%MdcuWcVt4YMJu5bXz;!>t+M@`tmtBASM-I*I}n2c>y>lx)m9d%*2{9B zL*n!M8WifeJ4Ug^#Nc~Z9RKu6GZ{5XA8=K$v||GN%8*xz{n{UtLB$rPXRnL?*@`Ja zoNXg43yy4>!ErthjFs$SX~%ZOPD9v14B^ARc&B}#-OyTPG^>-{P_s4`*pt~k#l^K;2ZJB z`S1AVyyeI!cdjkSMEtWL@*b~O*sB5sFbAi6l>BfD(@4U;@T|InIba+!F5#9TME$o? z@8wPx%^69%(%E0#qdE96GIg^NLLMG4<0rtaRX!hS! z!Y$or?W4PQ`x)i ziZ6oa)WXEtuM@^r?AsEQBZpkY+XekW97=zP^F*icF(bZ z!s8vbeoso}!*lUqIO1uZn~FNqqm4uQ3R{5R5nAH$os*1w4l%vLjHw)nxkA*5dfd_o zAsW$yb_@4bF?kFqPPr8o5PrPu7#A?aU3x%2$|T11V=JkBiPnHxo>kmfh>EJIqWCZY z<80_9n^|M8lVVIWe$Vg^MVKe?vhMJ?z$`BT))^wbZT~Ii-I+oZwO_vN+EJD=Cyted zv@Ndo-~6*xCtaXz=u|6b)Qi@CN}ZLQTgUR|52T!3zOG*M9JkWp{X z4>f9b8^^E7nO0n+WYX}UCXgX)$(L>8Q1wv<_)nFhkPRVoFfoR zvFHD2dh4(@zUTeBKydfs!6{JO-K{tj*WyqdiW6LlLn)Nv?oyoM4#nNwU4ti2-oMZH z+5h*-X7)N~=gi#qYw*E_f}G?%2P&D8gr(-MomJ{a4`2FOgBfXQWw;#hIvP|JXp$DG ztclX=)XX}9%2yQC-c|6#)yNPEd};D+Gd9Uu3R%3Y!@`M|IwUF;?<%uZ`n$zyY|xfF z-X#8UBd?BLos56l^$~@~4AI%ym7woyqT*J}t21=PophU)F88&LS4VtfXDkv&cuFkV zaEA#A_Yzkg2W~$Y*Ym@Fc?`bx(3_j@bo?P0ItFGi}ML^$1QqderEaCG93LZo2T%ZdiZykP-+r zr4Ob=ctq5>Z!`-&dXOc(9|eB!ulF!V5ejO4ze4Ujiq*quK89}K+bJ9RZ^5zj3|B;& z%8bh!6;13bPOJl$=P(Ij*YsqTaEYxWp>}e%5IEEK_?CT|x7z=jr!3TvA$88(#sPqcFK|LfNf=RM4oX+5NTZeU?c5RSmXFellEfSsXyZ(G=qt?Yl&!a#x? zaS$ZiPGfSuLia&iY&6^qLJZw8EtE%?$13aJE@^y_47+i1YK ztxE`~tYgLbOKjpTSUhO#n(U!O4HFjM68q6dPk^Rin7Xq z8Lm@H!7tV4&Sd@#wcLqZugvF#5dC8g>P{vtbyC0P|+_GX0vjuTBYTc zNskd@KGFOus%f9$`AEW<8%&uX$CITRc1JLOQb#YG@c!^g>7APh>G^QFr;zcJ$Qh0e z2QYZ{~;L(LQTsCc# z99onr9DC_AITXqAt6+|oc(3+?nd%mcIYh3=Q=GuxD z0yO!98gOcZ^+`$7Z(AD@k{1Rp;XEj%ci)2SNY&7(#Lb+7Vgv39s0eAm!Px#12cic^ z2Pw4XKu@ZtVR=g|3#=WV)_@mqwN=3yLyHe`E_tE!@)Q$%DV6);+eB>)QKF+(%)v=& z`q!~D}qrLFX?* z-#bC3N1eIj*}}=1M}9Au|DbU=v(g~))oCSjZ_-%MfCgXXDlyZpnMh#L`g1^y4NnMb zr<<#wzf6R@?7M%cje4{5PBw#H>|3%kO)C<{s&=&DMsmt-;zP z^rPnGo9zOInC4X&`+;L!ZWY3Ie|o}>4DNo6?Jij7vcJUYR86D)ue($^`o#zU+Xg~ANmkcbKEZJ%J?qlEo@C32XTArcxSvYf}6+GO2zf<>$96s zq}l06q&_m%r1hM{)VfKIHp%A)h>hmuv)_;F(rzC_$En(|_{*8pvtdc8a#4Q^-VhxB zEHHd8i^9xe;Q8YBAaZ+lDIVPF4)_&pU1xk?*m=>{29k5n6|qG9^!xGAm|L7NsyXW6 zzK}T%p1D^ID63yt1(|T8#{ockk_hoIvid9M3&nj z=6!idUiX}SajOy-CB9rV1cegjf>uTi+sR^a@xoXMOH^=Ijycqq6L|` z5VL2_9x^lLe%@ahN00|J(gqJ!V5rrm5@O18e=1Q)sZRRf^#*qEJ+`YC#~~xY-K4Bm z-fnGJUES`yBgim3VM{}yN#_ko5SFV%WG%5+_|o`cmj!v4DvTB9bi)X`4GdL=&r=ya z$W3_12a3E)gOHRpLz{nGUlp(s_)5|fG>vy!2`VXM6T4A{XBkdt;}?5jP5qGwQdLo< z0D4DSVp&d}Z-&-h3^R|SJlywGI_vyWaakd?1ycQ(yU;B?F>RLTUDw>V&11MvKLO-b zZT$0J9+$y)M_H6kv0}9xTM*k3)t1gY9SG^C6$p&k>gezKcj@reBI5#)PA@y;He86{&>ePMTn!ESb|v zLhZaob)F{Pxjx)uskqnzJBF|y*GuqpE zKnF#xWW0E8Uh+t6-WzYqCg4eFmf$I++n3YAKc*|DZNCnPO}jwC_RtU4c}rBV9-1R= zaotZ$tcO%n;;={2A7=Ae=i(*{zIOVnh4H0LhwsIflO;_s|1&jjH1(pBr55TlN}F@x znCy2p+)ajcfFk25tvD+t`>%vHcL!KJc1bkTOzHbUX(|B~c=9d-FGhb{wrTrS=j2E# z%dz65oHqo@h;v$W%(!=wXs1v%;#T4Y8&?XOoBiyo#eeK)Ouq+V$R*@J#H8Q3PbtH1 z>IrZOEaq%BU#!rpzgFdx#LA;TpUB?^_Q=Bv34Y6?k+PFPRJF3E{TAj| zrpf;*fb1Cci94p{+?w?JtEz+?X?mzo6>WUit}vJ~gMRJuz7)9jz<=6~H74EhQ+?XP zmV%iMBabRGO|=_W{Lmj|$f@pK80IY!!?4OhRtpiHKpOu&FyjI10?C4u>iF@8XMgIL z7S!Y}=4(>H`# z7t5eNTo*>HW>?3w3f?VOxC=dT`e;T!iL&Vd)c)B}W3oh{r*CIyBC37Yn2jCgJR#Q3 zJrM+ZA>ljSW+wv1RSYhx#;7vDGSau z=0w1={IfaXQv4s=u?48M$TI@LYmF6U6gWF|hdA-Vi4#e^`fq>{k7Dlxh7A9(!9%-6 z_XOfh;#H4ncz48uvByD?g|><0-`SXjn2Oo6z_zzCI|^^Ut9Cf2c-l&|gVI?&afPFw z@^FD8QvXcEZN|tuu|GcsV$Mfh#G+vns0g_vH39Y?6Iy^GU+_u z5L<+L#iN24UFb*Lka3%;EoqD{A;*^N>V}~0;?z+G+awguA7`F*fBMPFFvAj$cZvla z$vg9?Q7J06yno)NH;9x>hb|P3{AG%=)_ROm$B*I@(3&ddN(86mycVLI$;Xo?y=kk! zyU%7<@u;p9gfUQa!hG5=2~2`Jx#Sr27!@mn$n6-n8x}fRdXBS)(TM(}-1i~&T>rw7 z;tbc)-H;@G*~h96274%q8JS)0tdGqzYUi+Yb~$)aow+s7{$`1NOXORSA`^U6DUAcdCaYP( zmN&d^$NHNU4O)KU^-+i}og{d^uH$#J)fvA)O&;^XH(WG){0f6=Hu%{hm!8XUPRw@@f=Z2rq<2zBH&% zlKDu6G^Ai6iYIENKz@GtV8}jJGrJPk=W*5ju>*X9_wjDgwo3ll$8Znb5`L7Oy@q4R zQ0H*6#x~U+&{zJ8<-}dG!lZR&KGdQF&G&^+h;yeYHb;B6$D!@0*4{hRGwd95L29hx zyr=1r_uM1b{p|W->H^oFysCxDS%T~_H6kjg46eZtrm6K~vT(MoMj06{XZVp83TAqEByp@5+vy zPl6eBVE(5esoG;M*IL;_K3jP&{EswqW1R!G9_Nq)^z^jF+3QFmN4uuJ7@15&{!u7% zfZS)E!2M#4UY6xw25-p98U9^r_{5jJuxXU+`g!0%KRqX=71wD0MGGmW6VP8K_zJgS zxDk^my;P_GcXvh`jBE}6s0Z(d&^2QSJ?(;=-jQ`(lexXZv{IvtyBpoyBG#W@1M9Hn zv6Dj6FP|?#Db*&M#Wy?14vP|PV$U^Q62xp9g)F9&+J|bQ>m@aQi;~Zs;xF;PEYBF( z+oi;>psg~S&~2@|0IEQ~HgFZ_UbiLIr|ng1Q^~If8@lRnm!=~oOC=2T{9?WnuNJUs zs0`o-4TT|&9OPlsYuh57#DA{!D)P;$u+PaIMo;CND%@nBFwbpt*}yPWGjm>e^L+|i zIEZ6{29B;jq}O59Rh(re)#c!*%()yy5aDSj3}jfNZvGveX0ipyqpTPFD`O0GS!=cG zlYdWM9CzPja@j724)}+XU-UHlOoQJdyG+|c+CU$ut2^-}3?q3SC6LMgcMikzE4@&w zjK@P6nTN~2@C27d{tvPx(y6do+z@)o$Ri7y6;5(@C^B~E2fvNln*09}Njl)Q$=6l! z+h3Ezfg*+2*P|>oQ)_ER+JiNalbRVVHBnEsJb)Dq1pqGHx6ta6a0*S80e^*f>5*au z+j|HZly@x>wZ;xf5wCUFU@_e&c7D79S#k;F)!Ss}UW&XBP?+#U5Olq@{=J)~dJFM~ zJbxKWQ?ZZKZv@s-lZ<4l97Epe_S%+i~~BHT`PWHfFbM%75ti$~BDSB1wY&ZZsDpFDVM z9W_OK;v)v#oqoM~JdfD07W=;{8X8ZOC`Y+!uL7>KI z(yr}btX>32cSw7{g?moLzIfoPz}vMrWazj)=j|)4{!1Oz3#VWtu*W>dWdfBUUPh?> zW&M)q=J7v}ZK6LgWGV6{R|aSD+M`V^YU|)~Ch%R<()NIATq(tl`$I4GYbbGee?VsR zh8GWxXkwF1*ZJWwbmZ9RN&H63G@lAm=J0vl?V_ZMj#PFFL78b1I`7515ZR`!4knxc zdF@i`Y4|B92XR~XDDD@%>punQ;r4qv(oHdAeAWxjftThd4VOnf6%P4q zMlYB%Z{G#7>1%K++k-#b-jOnUB--uDLMBPLjsJd&Gg|f(CBHoeoKWS?%HK3gi({sGX z2s;wI%`Sdahr$3f#EQsVD408@&{L3c)Yd7Y$dFYlHbltDwD=8x(*p{GY-~)}KM`T* zhgsL6Uc8p!r$z(t$Jjb{?QRW|s68TyUt7IIL|1>@?n1Z7Dt1$;p2@3TQzkzTO-WoB zezl=_yrP*J5NO^{t%sKt%LII`SWHd4m?&{ml^YBIPGzA;fk^Cx^1t$B)Ik%MWWCw* zCgwWb{#IUmmbiD4o#A6;{RFaG;XTOfa5L0YDIv4Z>VC_`6)A5!$13SG*AgE(X-_-K zF=~-GJd5wzw^;GlGqHi722L9jfav9_Dzx4+JwG<*y*m=U&FhAU6O!2 zM2{}%Zb?irpbs!)7#6q1?O_D?#Y?h0Funy!|?VgV$~<# ziae^MMBIO%`}Mot0mFQf*P{fJVjI=57{w1fUM>spaa7=^HxP92_A{j|Qr0(|m*-s6 zFg{nG2qG7DmoS&jFCL*>lsb4nUredQ-YF|xSB4emeaLLWS&>_eT=eT2 z>YPGR5{ z6@UslEs;+AU%!5xVt<=qKaWPqADaT);(Yx*g8zpgiUbiJMH4v$c_zvtk&oOW!3+gQ z1SZ0@K_eCSH~ap*JPBDGLdyfA) zXY*$C*ycs`U4gnGqMOmgJ3R2pIkS2n5!Yky!f@lEN{UbN-F7-sw!*bwdt^uK3w+Dr zy2X!c7s)abu-ANoIwL-LML)HaOCgm@jKttBG9krhO?S`C3#z&CU))?9Ql$s(J)`0F zO86PE499S<{66^xJdO$%&!H7E=f>W zyAnQ2Z2Z+}pd}KkQo_Lxu>VWg3v0Y3H;*u^XLdzV(@T#Jw1cYYZs=g|9_pbn!Z66= z(VvOk25aT7B7R?(5{MZwr{l7Ix5AMg6fz~s1eSt_!>LZZldMM$A}_YYu^dm5@ZXw3 zj5oV_+JIrW25-#yzW>Sf0ZgMe`cEqN=!ty^EAV$JqZZi|NXdMcRrD`5AhO%x&#O*7;~y-x zFbDf!#&y93BvpnTkGaTrvk-pr_i;c4^S_=7o2~A;6CH0j$E%qK1jcz)6@{kfrawd~ z26baiO!%tlSV?|RO;h&V9!?Uou(0_0c>XdG_^Vm#U;R_L2u~izZkxAZ-A2Vq7QkN- zp@Mn*IpqWN*i0ptS>EV|2`cNY3_Or{NZL3@mQkjYN7@88HAlA|n%rLU4g!ZWxvv4{ zeH-GL4!!&Vv;5J=rS5bHvubDbnfr5ybXfau(c;&PVK^Zi5yx2zHK;8Se8ydYStjhI zZ?($Li4GAGgPm8ieleHCJ5y54LJ^_FTf~qNszT?t4X85c__ZW#tB4ahXIWapJ3X)0 za?XcxJ#BcUI}(rD`PNWt29sqJkb;f6QMsth5KQtAtz@Q37d0ms>qUd#wmdn!#C}!Y zj{LJPq$522V2KKLqvof=Xv*qIGkpTm@-ZB7!*m?07ov%0l?(SyQW-p;{T{$Ld zL2J}!eb{eP*wIKhw-kB6j4kl1BsU5dil%@A6;*o}&3ZIGW7rh6D35{|5UQ<=pUcKfPA<7X;xvLr$bTWj7eexbiAL_KZb*hLYxtCjnKmy3cY)?xeI(u+X!jA|KTELc>{^i@| zYrT*7-OpPfyFPG?I|OEh?iw=Vvl` zAHW~mhCb|?hi|6m<7vprp0UdUvkj?>g;E+rNc?2z@7h{^WSoTn28#2U(`|&-KBXts zO>Q-*>#m3z(}o?CtU9X@2(R93t~;g8htS%eW=jz~ak_I-hwk*6#XM0q9roA~Kv0~f zXE^hF?(seBuZ7mVBj)PSiR~O=A`{YtJQkUxlJ_@o`$fEmRj2AM;?aV*VerC#JTwEI zE_khrhdf8Za5}k!ZjIKu&u{_#A_V1Qc%mm7f62=O@K%I&RYEkeiIgGZG@(-%8?af_ z4-677$SIR^XYM*(RBAaS|KI8sEuoc2QS2-m<%IZTg-nomOFi{@#`QI}sjZbm^wVB*;c7omOU z=PN|w`{6fXNR^uw`<2lB(zBkCU#ji#lxM&`n){yzG5Iw1u0rBE6`V|`fkh&N5Fy1r zM7+X%Ld}vV_!3XBEs-uJ>jt)t>EZTP1tbj)^^!;@Qyq3I?{MIrjR38x9%;5D5Y9R$I;$I2L5B}A}+OU zVk7e7inEC6&-? ze7D078!_ivh>UA5+y;kNm+IG~qn0>-FXeVG=_?|)fW)pON44|En;eB#m5(<;$( zZ}GgR@3;~vYm|KfN=|#3kZSs1AkxHb-TYZrK*<#SbYe_qbHvAtf2)pviZ)^4G>iL` zMl_QA8DF~mbK+oUPix4W3lA4V!T$@2PKAm^=fgng2c+;j!Es<_&(^IR!isQW+Z@SQ zrD)(o=z8W@m^bug)3g!M50i>uYM2OH=&^>MsOve2I%FHt+l(fU)nvuK!>!Cv(=L)5 z5I&#`p!!z&{i;hDYtem=kap@ICeyVrM2Xk)uxuiUi zgm~Yxr&$cZ*USZK}v&p4fvOa3t+aiVN6?>hQ(ZWK-BRiL$_FnEl}S z_eFxt7VcwGF;!6{+rZfOwOvuG$%#FC(*kw!zwR8p6O z#3UVuMNQO!%2r(y7YU|9u4{kNq0V5Sbp9=R)$wPowyE743`d%c<{h@VR{*Mvgb%*F zi^+rUYWbSp9J*Td>{G4ZeZY2j$L7&-NwzSG%?e+|9Rq8e)(X=@C* zk1V1cCzP$+;2T0t42l5UrqY_v{Z69HXe>J@6BPE`a)q#_KwYRUqW(vtpY&Gkg74KB zUX;j=aPk@Ihf*lqT=<-d)tKh?7PfV(7)UWcL1k z8a})Ayr?!vlt->aNkDtGm|Yv$B_W>?cJ>&HUq$rRNyO};``79UzIEyqF{C93n2041L@;!FRuRQMB~*MIo-^iVxT9C(R7 z-P#Hvf6EhpMc#WXfu2J(XmvNQ;!M>_x}HVnTiHQRgwLtaI~F(pQ!vHz?dGk`bhUZPQ;ZT|1xwAs0(XYQRH5glFHx_Zk7PN8!p$8I*Q@^iJN;UBk&p^;oW|3% zmU!J3wylKMI_GVV<|3>H!ux>dfk_3?|9(!lqHnu7a98Ut{GTfbn@Y5IKdT5fkm1U^ zf3dK`|82QONH&2rlf?Z`S6hV3MnyWIj$8qnVU+>~pHL-kKU)u0N>2|_VW*EykK?DS zP6)xs<&?LSeTTHKWIAyA)2k0mWy3xb&g>gzk^~J!5m%CD2Edk$zOwYHdY(_hkli;yI&sLiMEz%1^Xzwgdi0b<6EDtsIzz#r|M>a{1*bIfwY$BguC%s3Ex}P75Grhe z`tF0GAia~2FP@lt*kMyiD&z$eD(_&&LecxPvXfgZh(eY>gej%d^r^@+)j3hC;e2?y zLwM@%w{y~fGYhJMNHj?lNqj!w)rqdz(|UjAN9) zo!@ph@$NB)Y#$O|+)i4xG;O@!Ku><+Oc?}sgu6FAmyaoxajjCO_iMuC-`3DiPfuSa za1Bc_Jw}u4u@EgeGF=HwHf>rSf9K#;Wg|r4qEKJ`gC6UK`+r{SJfVo|M|pTNeH%^~ z_3wSdDhnGU%*Ib25+}xyK^DQzJ9I5Pog6T!QWFUX`PZWUkw@gd3194Ox=$k@G>f_f zr1X3@3k5?9u>)UnqDFhafMy-LZ||_OYuv#v3stLb&V7fMCf!DF(K(N(D@#k>#=Cr7 zbyt^aRnot7*SQU6$r{vY*R8lp{b-p>M2mH=C{{}Tke7Y(fB!3jG<=II>#v7mRdw~ua=p#{K^=Ny zocwRHF=a2!dUf18PX{dPyaSBR@0GazXTd)6my@3oA4e>EN%xT-7@k`YD$Zu@Mphm+ zAU8O^>y-=pf5e5Kf(G|6Ezx`L z5*vX~Yz9AQ7uBmNElt$(OQkv72Tumjkw61&Xz=ufM4~gEH;iI0O8A7xwsDu&0{kKE z2iS(1>f@2ZTcG0wd*r;1BgZ&AFG5yKQ_>q>6idJPS`#LBN<0}296JryQ@KW5Zu%j7 zG>a0yi`-;4==;PTC^t-aFg&p(!=sz4fz&f368sJ4cIzK|S8v#u0~Y9Y(?1h33VKMg z-`Mq$>g;RE)V__|^q$C6WVkVB3)n7VpPE&Mmz=8=*nQ_noy}SJk|zE|N+R#$2UL-< z!t2?ohRvJXN0i0=Y--y<4Sph}DaH|ZORrgVRvrK6S(5@tQi6XNSUcAu9w?s2IQ?9@WaAz#2!Vrvee ze=Dzq%cSqetu(Ohlh>oqb&8Dh^aK3jKdHAV^IjZ8^nCd|^LsLvdJ5HqR!FX4N-Q5% zx0u_|FT~{HWN7Q?B*kbMsG@ih4jznoc2goDffq>p@DD3aUOL;M$QHdm!o``%9LeCP z6y!<@#5Cjx(N{y_rd0JvNbz0VEQpoI9Tf=BP<<&;NssC^xFx z)~TM^rZd7x@gh%IA49IXzhb_#6Y1R>vRiwHl7VA#8O3*5Wc1eB}ZlzpA8bcA@l zzUCSO!&JJBB7Djnyigjb_V5_;n20yiH}jLaBJGaEpXH%ZfnXa@(>F?n{Pg2;!70l7+*P2$!{B#S zcd-1@W7@7h)0!JT;;>Ri(D3)WO4#8S zFK(mwo(El(8|5Q>peezQO%xDdj8chXCfQJ1f_nJe&I&=6{pUtsPD_`TX3CW@REzcQ z@Y%hN0XL-ljNKBBI4gJyB1sgMHyz|dwZgDMcCj-7jz@XHX#<_|kDG`#U*aC**gDt} z9X;dP1G>g!h~9+WcrS6?H5t1%iK<40`!lOiO$U6`ClU-b1<_&iYxBEayr51VSPwXd zs@WonptFQGPG5(-c7{awb0FfXHiC^D^OtD*OXeef)RweIfvPH6n|GOwLBNPZYjZYE zbI8pWA$5FuTKbDX#KKa#aVPCWA5>Eywih&!%_?_Co<1|9I{$U$eSssgTFE#b0cotZ%2Fx0(l0 zR1A%Q&PoQi;Rn2o^f8N)&vW1oH2N)q_VPWeHoSIwiM~8jBoeg+!uE(>bLEFUQU^@6 zshRQ9?`4y%Jmv+AqmP6Ib**jlJ z@6!{%rN6rXDoMojv(9~h)~eNN>4zPNhLCs$t-WVt6#e8|{O7W2Ow|ei45T2#g9*)s zA~)6SAq9ov56w5(J&^!BhMhgr5xOf}8Cy~V#N--50fo(fqqgXwspoR^<_Ni>p*Unh zg27ipYjh@iC0Sd}Gj%pt49*mjD z4o%fixI7QDa0macUQcOT2ojN#h8SRv61{Gz0I2xolQ!F3@Osj2)j;6UQvuGwM1z9%z15ZR-3&iQQ17$I)coV)w$i&3> z{K}9QF5%_~Kw2}A8oR$#1 z5t1MNEwCJGh#d~X-BRv`9X2Yaq{B~q$?b_?cD_aLARBBgdtOZ;&j`Jf6L5Q z1UnGA`_d>ig)qE1@>=hFc1pQ;7;7i3BdT5Ps$O(T4)lcJ1>Ej)`#N6Jd^8pq;(bl0 zPG5o-=wqC6Bz337JnSSEXjekqUYCz3Q~bZ-fr06zNdfB zuL36TwCqn%JcHh_#ntb(FQHu^^(bK2W!AQ8ksX{qLfMP^=I+BxugK&%Z+|B%%5xX- z9j52s0K@Gifo{RLK9h&fy~}b6FnboJt?mY_uQ6?iZ7evaZm`%8l6`jEJy*T5Df5B~ zytr(U*8|}2jLqYu6XzAsYW?Ko#FW-pYYhmC2LLAF+uJ>D!noE1$}Bw3VlgbjwFFC7U(1!B+*AaLUUo{ zA*hh+Av!Ml&M^l8pqegKY;B=pZK>)G-iaB^11RXuibP+H+ zbs&RJ@CUo7zK3l`S0V`j^gjv6OBg_tmCisVx9J3}0!)jhyq7qb&M2PQyZ?*ifiIk! za~=Iz3ea`YdFpa65H-j-Wd`aC_;Gtj+2Dr_kJA$w0}%R{n^Bjr(uyC)8}1}2Gv-@x z`}n?MRFf66Y#0}Zu-w&v4$IwkVqr0VEIUzL?s zE2lmbXRM@rkYrq%0ap6I4pccmvNs_6@3BLyMu&$VN3Tsmi(WTWFD1u$z2iBw9bhe) z)wB=0AK{h7CEuB&wO#SvactXwE{Kn~bDl7)-us_LLZN<24=EMmV>j}j#-`T;_uxTe zhG6p8#4E$GxpCx0;Gg#&&CEMxqcnaXjCKXO#5)}v99Wy=csh1joHzcS`?ZnVhg?ka z{$D4P{2iFXEAisN$>X^7a6^TJ#F@~Nl9*P=zc%NqN7W@RkL?U;@$LF6WejKpPY1|bf= zW*eHml^Ge(bhH`xz`195*WhZ;y8(0W1?|?EKmHNAUWO|}c;$4Wh`&8V`pBAma)&hy zo-j7Sq+K7{3?t&y;sqfqeYO5dGM<}lIs2c7QWRF@83pVm+^k-59Se6UH9Y;5A?uPR zapsVKZ1qR-*0&)0P;KoZ*5G0&i=ICT2>da;X85ktndLS8ng;P4>QLC|Q-YU{V(~-! zrY^WGkgUW4ihvkoyO6wKCK+>!ZV{~0r`(f%pTeCj)7WZkBIfnP?bzm6Z}W`Ax_7P( zjK51|fprOWx6AI6BNDRa=dI2ggOws3KC|UqG_Bs-{s7r_oWdi znAJ!>gB|ltpw$8~`g*`mBMG+JRr--)J@}Q%QAw?mq)x~^O$3% zhQG5JfO7TzR(7P?$_@K~X<&P7*nIYAS3kDFWV`gM0GhDbYQ$hJ};qNm8<7h;rHJvHG!_>hZBEVTN-`ZJJxwU|(N@_f`A} zW_rSPtJZ7lwW_rXaWvh@px^>>b#;HLK0#xId)sV9g|FRlh*%#T4!GzILO3#Y?lx!< zrSF=KPnEpKftl(c+91NC#Zl?WMY2D{`#-PvrWF5cQ?d^*Q`Z(4W}w9f9q|sp)r($W z+i#4F4L~@DerCS0_3N6|9vBshVe>RI*H3gJ6ecaslSm+RRiBA-rcJrNYO{_jt~R3f zoj5RQGefhGHNDUN>3m96TzY~9Gd({dVXpZfBzJsE7H5oVN#5R4RrFXa=4+EmkD$r* z*S}x_{7B2afq7d0yRhLhMQux;XM;ylO!vVjzpp0!6@3^L21C1_77}-n>MiD7ek9dx zZeg4uNL$-y*5?WNsnv|(RxJ2J7Kisp|IlEO_Ne}Q?evWKV6pns`}OJkL9xo>wT`Q?j%5p_NXV%KQ~3@ezf7 zqWJ2RRIuIbziX*kJ#UuSeUOd#@9l-bV-Il+a-VzfTh*U&lfgGBShejg_o zW2Drw>WmVdD7a_KW#<5GR{AC=-5NG2N``DPGcbM(DkbnD3+nn>6@B;Td(*A z2|<8UW4W{}r;__o~s+YPv{O#-LQpptL z{&-sAMte)$`k+ltWRh{W`lm|B0zdi=O0TkZH7E2WifAf5f{h|HX41jq`ugD2xa{?vVH<(OHKVv;SfW>4;Ch!lnFu!_LQ!h2#$VBYBHva?=<8 zBcgDDu{~x33H7UVf_-c=%F4)j|E|Txl1xR%7|5Et_^4qh8zpzT){(addQ4udb?p-4B$ObsMZ`+H3kmv^;>DXL&-vSGRBEH#6O2Cc0$fYO}A2o*wNVd zp$_o!Mj^IX;G?7UlR}f0t%AGgfANeBh#!5(8eUeFUIMlhatSo>hr9l`XzsL>6t!S4 zRblvqbW1+!9c4z~XbmnWSu|dXI(d$LI{&eUWvqjYB?mA;tjSB^)WnFwBF`N^CZeD# z@Cc1Qf_DHAtKt}&Qy7Ch6gzyQMrEf_*iNlXZM3Cvc{qD#@a(1}(j&k%+t0jh*WWRj zsEXEP3;|K}dIZv#;alEov&R4bI;l}l@*13q3_=@|`mG%#qX85cCGCktmWG8Uyne#p zkCg^=-aZLZ+%bv7AumI)OHvmbcC;+XjwGGu%XuMwXs`w%=-&^ z8=I;$;-uK869l)0d>m!Ux}Dhr!sBSdr-w}ciA+HY)!thSf)F(dn>b(@Z6#j2LxH?m z0#IbJ+ky!Of2hTkKJkdK*Yvop|39pQ^EQQNf4p!8Pl(VX39F-_=6e!3D@WBqO7%tL zg~_r}9v)f?ap@=7hASiAy-de&bKlYrF`SqmKi2eu+}#;WgkS3#aEB-|x_nZ0k2KOQ z!}@XCSLg%wZb&-Zf_aps&B;$-Nas@zb8<<+4pt{C9Xl8&(74?@$)s==PwdM%zv}fp zS;K~88!f{k5@fmX*yEFV0&qC@mQ;v5$ph$z`F~uLoGG}vddOKw1r9EOY<>t@c-BWq!jrL%tyzH5+GrkT#VIsMq4W~L1(Qb7FUoDew#<$q!_qKrTJS*(B@bO>3W z5zZd}FwlWlX$IJx-xFTOSKY74^^Mqn#^`?M| zjk;H!)x>gsm%B57E&DZzwlj|{VxYm}SQ#ZcgoSBUAkBF2|DMm8iHt4e%kf_~4;&Me z8yWE`);#SE+VnaWxdP7nHZeMx_7r9w&G?!~E%$2ahWdKx|7EfdLT>G+!t9wXal{$* zv2qd8J)@eoxmgzji5@j-_Cm($p^j{+K3i3WC```PIYI*~y==$-(lmDUg@&LXce|{X zF`Ry0!=OYRIVx^a0~kh zo&G>yY5(5~?jJrWm@~}m1ZV2P+IinGIswkdu7C0po1P0;(ye;dKu^MgQ98-2Mf`p6y5o<$yjV<@sC|rGW zw*ssej}v4q6)}U5vKXvGz|la4`{~cr1~#^Bgi(QO_bqzXfY|3R*B$X1Av-EURpR$> zm{mqW)>dU45JzEE9yS{vfv_lE3(C;RINAN*XA&+^yBstEMXIV$0W;alfG9e$Z#_)~ zqT<4@G3=I${Yz<=AvVVs$2RXXwsUYD=~!yZ2yWg`OZ$=m(8v=0YwR7rkpJ)Gij^D9 zMD97S%W;l-bImry|A29=#yB#h^2PNYv8mlEE<#*}KpP4zII~l;{p&1pEY?KYr`W1Z zpFUaoQD=gTE6e; zDadImI8LjmtX|@FoVH{9{fex7SDOt%r2aMf1r{9i+zEA{_|U~_gISL&?7GHRGae))0Df^ zqP0p9lmr&vl5%~7Rr<2R5;aO{(=eo`z#>fYUOyMDUbvR?l6MTLFwXWo`KCB-$!wsRf5Og3wnbI+<_+AU z-D?_UEa-O}s^%7iRF-l2eo{tI`)AwT_A237vbv+Jfi*l>WP>6wR1OK(mKwi$4t66FBz!FVV>2&rBYHVa%KoDaiWuCHtQAxw>g7-+O-8)GkU5xjt;4#V0^~`1C?i0qz)J`(lsRlN8=xHnlm$2i(iXc z?QW0+d42Csq|5OwoJ!e9UQDVF%sTn+LGLwob`GLqQ1}O!>af2OnKf5eO@D(nDSbB{ zqj@I1V+93choACdxW`Gxm8z4J%9~=AC&X9M*=nzILI@5i3@mXd%x<1UVe7(M`P&+w zTWuQ`b&hkB=HF!CA_~6&p%ZrMw@tu{k}>2wtK0E|cAZ4~a5YbgXO+r_@Y8Q5n({Gw zf7;oQo+40{{Q#zMBz{6Oc?Ushi(^UDXBH>H!(4+7d**EV@h+>xaNv{$yWqf)`7hRg z6YJ5{5iLHapDDM8xl1in5cym^IR61Mir(p)Z8mG+E6)1{r! z9#bRFMYvcK`MIrYf@~*^rRcH?1PBT~+j*wgU99&3=4_AjU;As}FQj zs1t-EbRT*B+U;-dyu|1t>R5U;nNeu8fqwDEZ(s8p2-a`Wl+9!B4MV|q^v?x8J~(*u zkTUxTe9LdYV8s>a8O-d{tXZhua7S++eshgJOr{vtZHr^c3bxSt)%|(ItXIJ6niflp za2&49dmC#6uFr(|tQpVUH< z)GlR{;(AwQ`tFpKg4mNCvWa@WjC>W%q;)6H$a;(7S|hw$dirw;JaN4+6#RjEIyOoo z80rUa1&tK@C}Y^>plCX=BfFp5gsr>{5q*%Gq4sq_bNV!|DjsjqJi8ygXI*ZVzKr~2G$VkZ0~|D4=Fejv7k zn_saq^^KxBfDfrsKK#OJ=%j<+x?i1m&?R;2_yzi;((oO<+wDM3bTXFVRQAo~fehgn zVKpg@YQXjkW&ACgjyI(Ao`6~kEt`$R>0*82<0+@t*-MYG`*n>alJPK9LFUM0jiOMq zv=m4g?TZ~%>0ec+D$vgdBsf80N^7!v4!j0QhjQJaY@!%xoFQR+!cB|hlPhWkT1{}o z;1;k02u(~VLv)-d(U+n9D6{qY+~j@QKf~&N4zwAtUVhY9g#)zxUPR(+JKEr~V!Y1_ zK?(#f67h-N?I2-j5&gYu`mJSQgwuRIlw&n>Lp+;G6|Q|m zrur}UvjK!1oloW+9i`<9Ic4qbyuj8CfjGqRQ7gz})+#x-FZ>+ecS=jhojJa*JUuj6 zBcQ7k6;+GF6P+L=o({{IJzDA0JxODM$|jsf?birJ2}FDbv?q_#&BF3^&)e?C9nanD z;vXm?Z_%PGXFy9!D9KbmgAppR#l=zS=}$694NTaqzEL>H>_ajk$?$$JXtgIUF!;;m z>V>~(m(jmV6Z%)uYKaZm6!kz<#FqCzl^Hj#M?&{x|J}y+GZ*;LE#93e`G>L*VHzaC z_7&~g!;MR!yqt}ZBX*5eS_{y=vggCsUebLY7-W7>`h2}BbNHjs^{a;-VlgIc_#$_` z$hyMsmyN=hE5jTF1g>YDQ*Ywa%}*rCKugnkRO|2k(B4EF-DGxpW!2UNWoH#Isejcs zQy;m))&yybbqoO>IX+&pi5k}ZPQN=hG(_R@1j@lO@cgt@l$%>}Oy(;U2|VoX%*KuP z)(+j>*V4LH$=Q#B0>_vcs4K?;%i*c&lC`S_HQWUz)7F)iOTV6hO1P-7bq@DSX&>zw zCb1ACRhdj}{Z{7z#^REa*GU$ntNUItxz%I1 z%Dqd0@GtMq6$jvDBikr<=%Wr|+x&w_>K|hD*Wm{z*K@u@VEluWatgtsDmgRXt_fd! zR$?%zDO`ji$q(x# zk$vLvbu+!}%I-Xk6s=~C&I{Wj#pb?rMqHF_;ER<%U8#0V^tj*BM!ZnOH4_K3dI?6A zUyqO!-gt$e2m7(i>dA1J6aWSbSlrnmMHqN&595#-KMC? zr8M`zp(Lf1@xrT1RtQy7Me{PP%4x}ZZQepQrBl+}3~;?G?Ed|l_B+pp!)w2T&*M+%tqvB)JJ|m z9}-(~=HT4RuMxp5Re~{{FRl3_gvKpMk;|4Y`pbUK#|WaGB_5NqssD&k4C= z%RH&^*B(()`pGN5mDh;adz$7fp3{xmi|!vJIEvU`Yl5M}M{PRwcniL8Svd>18AquP ztkq#{??sk&7p?y(2JDW8h{8UJ0Ixh6z9VO$F%X@WZY((z;?=La65bHH1XZXz+*~te zesLGzyBO|Vzgdl+5nH*AD*S@3^(3*BS!(I2>Ut%8olS4p3EgM)r@9;BNKGj3EDx9t zABm2ma=aBEZTanP0Il5t+9iG&B?=*mqc*}}UTt6tbZwLU-PZB9fF|X1=3&8c{oczD zxv;isKrSwH`?OouIH$WYTg!M;?izVGD*7#+&iX8x+C?SI9C<8Jvv%!49(@yU1H=(- zW#x(9*S_^t4e?o52i`8PVISVw0%0uW&udbZFZ~=YJe$jk@@G|Mmip>!oA`bQ!#YQD)#H6@JUb+ z4h^bb7;{c!lit#TSkm|bvUJxNaCt}mdhDo9icw+bE>20t`t>!1k0b;Yy=X3$3H$iT z0k!pXxw<&h{cXVcM1v8<g)>t$eip~(}-6IAjc5VwB)$acNyvzGf8kaCo_Wc3(P3i9$_=EZ+8iXx8 z)HI5C7#kdnDWmr7Okq-jzPRvb%iocHY6+=N{v(8Bpn`hN^wOYSiWP#Z4xf7FcP`-NHbe8&Q-J$jGt`gvPK zd9Y_v*3km2Em&jxihUzEuD(+cI@UZ~@{l=F+CsPPTMLo{%-C2Y^*-E9g3gA32j7kX z1!F}{=ABG$x40>1rLuCl031qZ4tY#9UhbW(Rc9bjjgQEbFbG$j7Xn(yqj6wgO@aJyg6pSWhoOoULr>WlQT0TFBF$1!UV}o zdB16fmG|)A%2sCH#C+4EpW z2jnnTkp9;vegSL-u;O3I;z3QIh|ncqx2byUAT7BY@G69Mi^dG5Ux;%8fP|iApN5eO zxi?`09mtnRCI(BMYo{QkWLf<1Da3PEbZ+NIxy)LQYv z(b}Dy^o|qjaW-j*Cyd-f;iGD2ZIpr)ocb~Xrl1o*e{`sO8VfRW$^GX9)73R+xrToH z$h;BR>3s{Y+eNMMyMjez>H*C zwa{9nD~74rebK{DcA&*`t*A48Ej^0Gi+RIygucT!e&^f32lsZWFp_-?dyw%wBx3W- z8TVm2@@M+kT+BlzAyoy~5fM6#_(%=J`iPj(tK^vHVtQsA9OOYODDE|OUig47n-8KG zs~4F&IsZ{Ix`zJ2ecvN~O?$KfqdYQDEd-i`)8QC^W(vC(aP%01hrbZwk;ohy+>~M+ z)Scp073R5?f_D6jes=0p2l+lc5 z)e?3{8Jyvkpggs}*8YBi&F>OFXibcv;Bfo61a#51dEg`oFs5~s0cjAOyYZ~?lejh9TYR~GVRfFE!4|aSR z19E1U&cC`|Uzq#@POdDSW`A=-O7i8<@?<@kP&@Dj&{7EIW`s+QjYovDo_2dqqvol~ zXwLvm^u+tUVZ{#_Fyz zu<$}?aE~|FlU#0qXu9p*$^%(7kt8@H9%)^~e48d1K=5Y)%Tk=BFWyrYV-qUXet1-- z`19@S3Mj+h38FlnS81`D)zo}$`s<&g@R6K@%Olgi+4SihH3~Q`UzC8lMesS+PS`0l zKHKF>qjNwp)zNW3$W!pclh;<(mxU+rPHf^uIbXPBb+;s?EcWXwSuY;%Y-#v&5EqN< zV^Dy-fcwSCV8wZkXj8cKP`8au1uN)Iv4TvU7DJTq6sO2iM9>Vu<*&T~7gL9*>uoaM zLg$=iui`&Na*=PAkMkjxoMS|NScMO&j@BL4=U8N?RD{yIY=)f_X-ueKdZ_m??~|fe z1om}0PoUh0{J}1#OBME#SzSTs0hHJEuTRc1M+oed% zllRGbFa6$9gdM2EzlH-aq0XBEKNfD|GdsUnpm1t7+L{J3Sb8=+&nMdHI&ZMlS5T+) z?RihBi;VZc4aBEjK;p&EJGm_ecJOl)G48RS`mJkMCAx)pirrVbd2@5@<`P=bP+93F znTut&7^8Pa)pUXlI$AtB`sA#vdr&5yti5gWz3bZaR+DGJQv7!hB;QxM3cHc$!Tyyb zzo&Z%9e!^W#yMUj%AN7Z_R=6v3~Ok?X*4#Yu-&Ul=CdhFY5hOwh|y&c%fI#haA6FV zU6X}(UDxR}Y;7gB-K|pdaJPzy9sB=oD(%Z61#8HLkfnuddK}~jtf5Y#?XT_{g|ap3 zuB_X#IQ2#v@Cl@lkf(n1a*04QDk>>!h8|F^w_W-Dp-d+oy>T>|=1Z*AFdhkK(CT!J zW(8kBmD5@Lpo;#i9St|Oh_Aou8b`FfmUV!hD&e-JVHvQTk%G9hnQ}3gbBp-z#^L?o zL^39$aPUj`{vAq1;2x9$G?ld4QbywZ?1SYbky9up`)e+m=pB3B+B(!4ht-z&@sA@y>3uZML*J1`#>m4y0v4>}hVeG8lZh_B zmR~+)e8X;PZ>KyL)Qar4p-Fa4zwG@9H zJ=vnBIIaIsD1&i>Uj$yRP(QLfHsv9;!tw-k{=~tE*RiVwOVMc{|Dl)O?Z-$J()0DZ z;rSsWA>c-4VJ3&gDhL@aX9i<_gvHkbW#GBwPy*IWgxVG{bAO|hw&5Kqr%U~~*SJ7@ zdy^5+?_gS%9?B+zp&%aolDvIO)tkX4%~1mwTV8kStaR@k=`@|^}^XtsY= z?tX~$@r263(Gh&v*`~`Q16^&%ZQ`#fhCCQ9Wom9Mew*W&`+6@u$F6{c5+Y0NqpA5Z zB&yI(8~#hJyx`g;3}M>jS9|21u>Bl1BLl;tlh9po1*WWk7m<|Z7|rip7Ahwhv+>em z%L(-%0t$@q_@$rwzQ=f5ZH{2vuAIxCmKgGI;lL(gFoipU+{y{5Vuu(nm3OT>>t6{R z*Pbx@Ob2r|+XSM8Pa%K=8}7FbeXTL#1QMK7&^Ih>f>C!`-g3mrW>N42IknkErnGh~ zy8s5lDP1a_DeD7~tu+(J@rKIS)Rl9!rV9QgHD)nAm5~bkmZP@~o?_OrXI#~SD%O(U z-~McBee3p8;Lbq$A};)P(}YU02Zc$$%%Q7D;{r#Fi>()T6E_<|3^tKT&+biJFEdlA z0SjTJ4d!EYyTZ0vv&sSXv?D+4J2~DY5}7I}m%nOaNx7LDSk{0YO*e{5+|HI6I6HHy zClD*knXLhl7Bd0geYSj4Rk+^9wdwO6aiKvSN=0odCe6Fjqz0!o*=o7sR*19DAhV7O z6`6;hP?d{~*tw?Xx?ZwQpJ28My*TLk{f$t~t5wd++Df*~XKlF+m_5Y6{3k6-*O?x; z#KeqpJ3ylt@torZk$0Zjo~>5-)!1BpE{ zSv{pyV*l^1)$zN!Wl>-0svW4*IaKMEhw1UrDamB7ee_~$QZ##0ftv#w93{2-6-2s( z%xp{Ni1hb2|LBv)oHqrI#C`+p+`7+NJC4N^nubxndUij-AW)bHUDY0p@sfHc~l zrI>dCK-vk08r}|2yKCcLaV8yW{{0PHLN>TX3dSn19Wt3RY;Vi7Dx zh^14wZW&T4z}Q!ofNc23T1z5Ezl>CPmdH+6Po~TZETxAA9&;r`Hg&DJw;EXZ44*8| z;p)rbIR*Xx3<;*^u(Tab%dXBUP-P+8BZFBx87a+S&GX$}GhO!3A37m-vcp02`5u(H z_>~Q7(m5{`MC)1m%(>;Bl30<^IILGYh2O0kW4xAJg;&01Kn(B&a5nEDjRXc}Smck71wK|OnsSJ==>m8htGj&(!@02}4zK>^=N1+v zf~&7w&FuNg}{<88pu3Ai`8=gucOr7FA(@rZ%9;w$98<_9dK>YLt z0UhymS$+09J?kCEmsRYB74p#covN?1?3qdBiC`~CwK5EN^N&3rsNC(Q z@N)d5;!86hE5G4lG+K;#t&x%`J`qO{CH;2j5X2VnHF?vR5%e;-ql~Pl%e5 z3BR`Bj6fzL-=KbJz~*!~BR^!NW=ylTv3QTu<@28kAq-&;Bv&L{q>KvL#Xm$(9r|<= z`WAlwjjdp73xrnK(NQiCx>h#J#gIDvn&f=JbAPKMbfNIi=ohIiC=GM$F*}vdj@*G; z9A+L#Jnq7#c;VZch`639M=bGz3_VJ{^Wr9+)|#}#1*-mPZW&ul8_V>HE3Vw!56>Mu zBnsou4_)chfznW?AAAJOeCi%GGFr$pXK$W_Sm+GwTI{0cf6|K|7KW{7d;}9h>jGLA zUqgWc8VSHONXj%`IKsD6{Xc|pa!+RMcDz*VL8!}J4qs?9pS42c>^ZnAQ!oME!IoF> zRpXV@uqZ~-BwN;mt%7F?x9n}Ke7r0FV6EqYyxc90kn-lsyB8g*TsgRob58EnoQX2G zj)!f4XY(8wJ3rKe;ZBVfAlJIF}@FKsw{CH?CJ=gxugzfn~FW+Oa_npsVZ2KMWMzT+WWh`dayx! zCFIZh@QOe-+{}ISDY`~a7mJ)bQ@argN^y9p2)T6DP}wQJWU?uM1D)PK6%Cxx?fkuR z++xmG>qEEhE=8D2;d*bK%e1l;_CETY?-~l`oK5tEdBe!u&5TqD)^m;PJPB8Bt0p7z z4rNl{k^8w{1{YcCLAII`)u7-KjN)A57!sdupPxT&!&CAbjJj#>@glRjeLlO`rcI_3 z#FH%_Ynv(WtbFtsLu|KJNs7=orcERVcwa+Tlv}0#wL=3>v509qHmWGolP$=RIPKJQ z$(SljPr2AJ7n4%zkRoN$=D}E#Rm&&+W4)jv@zp>z}EDWWTQhNQq$$(9V7nwV``-f2x{D7iwExxI#ysi$8@vENKzgkD;y zwZOV;)P$-zUrE~G8(&q|d}!nn+sk&M%M$S9RX-4T7*aM=mQ9?l5)k-Gz0S}esj#wG z1^tv&=w=<=SZei+evN#TW}@JH3e5)Ey-7T-%oF%fiEE&P9Jw;f4;_)~1dEi=H5cL>j@gpn?58#0-S2W7i79Av(Vpv6_o)9G?` zWq@kxn$AH#6nHF6 z_s)PqSDr>hU3X*+x@xUFH5b*ePzVIh--J4}jKl?Z8j_~TEhCh3VUzA5p7b+OC2gD1 zayDsC{je{&TE4rHgkIl0rUniVRwd5R@q1W^u@O;*$=Zs;I9G~z)6{OymCsbPoc)9Q z)>=2cQ$>0Ck}Y}b75|qE3^T2}*DF~lGsXkbA$H>5ab&z_Ba{|6?N3U8-4<>J??ntv08@82G;-)(G)%cxdMa?=LY78u7aIwKUntluueTF6L61 z(Zbs*o$%I;iebUhL+~z%1?%{jKo`|ORDukLE4v~_ZSlzjy9Dk2OrMV}axi@P@$*y*<=4wvP zAJ(>VL2BnXe8dWb4FJkqe0Sqb(^C-TT=Cgs) z>+(-QAcGbl4L1+&iPFOBHh-aV#sFoNqLeTE#LE%%P^R;GqFiBmHq0Rfm8zn>IJ?d! z$t2e!XEn23E6AO0Qo7F<`6lK*WAL9TuZ=|+8v#;s&=&L6SeBv})i!@66>Pr?IltE4t*m z8S3zZhK@9Mo$SMLI@7S%MKKd2} z^-#yCDVUd<9xGOQEj4%bRg}_R8i_T<8RN+c`9RBy>0^e)JQa>R9gWjEVw*;bF{4)J zM$sYf%v3af<7L?+pH5&$xH5dW!i~*SHz02#-6OA)a@hMNyqO6$Ym?BY<&Pfw@95HM zuYcqzbpzjyuDkb89w;I{4}g_bwGEaeu0GoZM- zKt885YYsaF8x0*@6K2SyAW0>nOFA22S@Ggq(#cQ7au!=X&2`w78Y(s&{cO*nZEnIA z9Tghq&I6VZdnM__L>BCnsnQ%`@qkx{k61eI9+g<+FC5W*rw0$5J0opBfFxAv)@EW7 zF`M{XdIqb-9@wGo)TDT^1iFP_+Ve(~L$vyX^PKqml(TA?;c){2|2 zn{;~R35nh>t8((?uimQ1u=S)f-MicLnHH!=$KZQ$@%t3__95(Z`Fp7v;4ie0#YwL8 z8@1w*sQ>F?9<3ymYb$>ls!-tx8GBXMMHH-|nz8WfNoBTW#(ecW+rHE)j_+@)<|LwT zWo+|JfTwOtRMz-A#bwxSR$WLmWk2VGawfiEY^-UMbw=VXqF9sTH!)74mq)WgS50%a z|0NmUjhBPE-?0!LKC^M4)dGgEq~}%e0KtLEB!uXmsac8QlWDbwsOP@_T|r=q2$T_08B_jm7bnvrU6vb*}T+ zk?h5-6jz1B{!&@0#4_;FG@?PzgLidmBI{LY>hyHXJAmm39XEehW;a)oC4Rd-AGR{9DdQg-r>U9XJfu-f zR^oEWnT)~k(8pVe_P!|r1||qlGkTf0i1w`T7vo@0&BGBaH3b=kI(&nYVl{Pi=i?y! zcQ|i!wamd~C=r=HUcB;^4y{crAgoGRp}q)nzEeXgfr>;6Nonwg#5Ug-Zk{_)IFGer z{16e#p#GSRit)*y(gP+B?{K-8xDzd+PSF)5Lxs~t0dSCyk2u@RFeTbxGjyqI@h7=l zSJZP|Au%3bqnL>jX>m0gFRxM&=3S)hh4G3)rQGAuR(6A{$SKbv4c}y;QU~|WQQG38 zYnHWrMTA)2PiopBT?k>Rw;opGMVB%q%uKQKq2u#g=$K){@;~u<3 zRWCiJI|glmC@}^j(<8nzv9omL>Kx z5H2LFJTm;4%3xQcjz)hh-=$(^db5yzSFOP10#8~MAe07mfa6>}Mr!<|xL13*bqrbQ zeN)Anb(oCWgduCu@iQ7{s}RCByD<@P-zw2De)%|u(O`K@ZrviMIQkjm3v|adDHjvD zfTpLdEs4Fgkfx`!jw+)DM-?#b9@N4aBi&$G%bEh@(MU$`^^gPsnSQ@kpJz7w6b6{_ zlR6pub`)TJW+3IVW4+L`(Id;#W_j!EENEsaTpzD@>}za68B=fmqLfe{WH*=!HxO~` zzWb1lu=J6ktgtw&)M^BdddKyE>hv9Ro;cujUd zexX3@ny!V8h{ZtcB!n8 zLGc8mO33-M4ddPcE@h8P*$ms|BUK*vj{=t3M88GogGKo{_*qiWj*Su*o27`Y70SSg;#0O{LUL2u#UHF7MfDSYnMfc{k3thkkj zrdfCqb2jsnbK<#5FlvqG{vteg^DMFT&ZYW2h1dDyY8<$zP2J7jp@P*==b&SFoj1oE ze=Ce57T;8p3uP^`w{b|6eN;{wF7JOJscZOWUgp*Jww*fVLD>`(N(ovc=V`{rF(v~0 zfpyRP8zMXwz-FzL!5H-88mitZR}~;={v~lVy|+VdO2|qq0>QgS8P`T4Ch4McJm?)L zgbVrFWmQ-U!|gdZmEwS`jPF2~#K|YMneloXIh!HMcGrP;@qurs4da8ZD55_E{6Ksw z;;1)(L>nn-*>39!1a%ib0~s5Ds(*TuhWG6Ds^ZcM&0;VmFCa6m-xGwckj-e{x=nr5 zCMCm7Ei+y^x)$Nz;i7Eeb0B!sAeEY(@u#+^LvV)!YF)atQblDhM7wkyu!O{jU;{X7 zKQ*W@A`(x5)@vh`mvL2E;5+E3JaB-ha6}%OZOlE(fZO0K61?^+rn{%}*Q-$CEHsJb z$R6U!h55zN^e`w2e&4JGNI7!}05-KuXgMsU1&{lbWEamEr3DsIMn86uF?$$GIqB&W z6aUl8#eQuXM0NcD z2aG?_;Bp4iwN^pFljHQJB9dCQYPeVkPR-xnx78cagEJ2)71UP>D-N^HMg2=8@7KRA z)pZc1?bQx$X#|7~E5p^cQZBl{BznJZEv88C+C@fb67QUL+~;bF1?ZKzR@P-HAQkHH zyUwHkweL=Op&2iA5@(o;mlUU<2#Rze3n@Efsi~a4?Ke(ex?-vQ%U!~t@C5UaF50(^ z0r8U82|-sgJe zfHNSuhAbHqkyl^(=Q2`xPM8X56>-x6m9p4D!)YgWn73&~qVTZH2}Wa~yMn-d=5DLH zCRHD!)|X|K6goK!!A@YE0ZnR_=G0E5wVSFMYhgBl@e~p)$lDa1R0jH~)5vGJEFB!3 z&%>Js%^%Qx`ylAMxOfq!m9g@5mv%6(rq^Ga(6 zQ|h1sPiAfz0r2~0jb|3FqU}jLXCn7v+_|%BrR{e<>15Dq32fdop_ddYmkUZ5Dr1Rk=Rh;|On4JWd%h52l@GYwP!B#543 zbILR%I(Nq7t81*u&;BMEKuaMws~d{C%O;44ZCpp2ySTfk$rk$!2c0~^nhu)#@@zF~ znxJ)>iC*KQj_S7x>#BC97;t0B54TX(-Uefopk_Q6$B?Ao@LOw+vHr>v*TJ9>gB$L z&WO>S&Xn4WSI!h-(k)R;XIs+oRow83^yd~I5Hq_$$3!fY%}A-Y$f*)n+}Z&w`a1=5 zpVso<3%aYCw<$H9rn-gu<<<=|BW`hPu5Y5XD*`(#Qnl;-K~z#a_INvCL;!}q-0$23 ziA2cKt*}`g_PpsR&c9n?d$sQf5 zSy2M=d6v(;5|^Dpx(_77e0O(@{*UttVyIa+8QpAzn4pIDdptm%*Lmj{${2eBa|t zmK+vXy!)k5Nz7?sH1L~|NC0&0)@@ymLTtR-@>$~R2!7a%K=WabvuyK3QA(u+BbL3L z6|2WVN7vhMjaxjt%+Q9=_*xV#30`W7ItFi0QN}-R1y}@EXYCXJ`_?6?z*Fy?wTVq*$X(#fpP|gpUw1dhhs@D z;GLd}oRy}vWREl}Q?YwH`z)h-etwHMqgw9bdOYj&P+$&t>*v4MAFO~XaY<>KuV~5| zUDX=pIjFdi*Hm#EPK9a(^z-jDvLUD`z-I<{$E!jT?x}Z$h}}}3PJMg}5Wdd@g&b&q zuHa`aI+#G4C%m*R$ShEKnwiG#s$5{Nur7q3ngA{7l_rUW@n0Eo4O#;A9C*aS-W z<-zd&hooBMMrg~|@2KAtb*RcU&5c_SV{S^Z!h?r;-o<#^>j6(m{pM?AI3bavH>v(V%M1SeHrx@ahzIwMoy;sz7rbadp zN1Hsnzeb-ta77us*3Uqs0=8F7D4(Jm)3^|32^PeQ^9IlUb?Sd>iKY3U80z0YDmNX? zj+)|1dA7d8)s0-7VU`yKsu;Fd;`x(Jon#hbP>YqJElEO>)#RAl@k}#DkVtuSFuCM~ zhWbSVzy8V| z#W|CJ#R#aG?q5*$TOAVULj8~`#M9~efhvp^)%}c!Fybt>;B+IMe6YYHw&u=XoICwX zW==R9G3%;Oc}!zE;}~pp{utB>7q}-?g*5r!7_!=04lU4meDl1Z9w>t*cTP8T8Y@P1 z94wdCBtv71`b?jpr@~+lk}dDDlu9fGIKA1OjXi$H#7nt~%FHO)CVnw=Sw<+P!%Zx2 z2d0{4=KFFQb11AaMDtUME#}hYAW#f=%&OCT<8M)^9sQjKw|BTljmhBqI`Q8DHYjaqJbJLaof_TXOseri5 z0u<7q^G5!6Vcw&W1@CGKJ;rR}0ON@p|U7Bs})rFMNYV*gE5-61^&)8W!B>H9DynVywGF_s#ld90~*g9t{bPqmM0X-Y+x^G8& zpZu{ISJ?|+wcL#EUIci=vTtj2pd5iuS$xX6LuwS5+=>~Iq{Ix5=o=UQ! zd}C8wsO2p4+{sor$(3Gtc5SCdg6d{a@1*A&JZPJ^!8Y~TsYAmCo%W-cP=JangRyMt zfIZ=$g%QfN-EZG4?m;2&nas1Y`HvQz`E?k+yBg)oQ0m#Rn!?6=X9cry1{d+$EO6pm zC#&nny{+@hdKu!xU^a`bd(iH5YcqbW_JK}w)PmyWjRw74*d*~J1b>g6Z0P}3OGyVc z!0_GI<)pvf!Pe3C*}NI+I-?Tt<)4@N7hKyDC!M8&egJJ?pRb?CIX2-aPf58|x{1>&JNm@Fg#B2ipkO`hK6(OCJeb zEg@oQ$3mGeRJ}Z&S0;M*P&FG`BUX1eXKg>4J0{C!nK6`eAMVfz%XX+d^|&+G7=P(b z-XiahA@=xu@Cmk$u4qMs{ev!tle=_c1%Mo4cCMVxTUiIXkuNCs2Agd~F)=dUwMP}A zU79xTZA8Q_An|#aDMTzNpTgpBTRA&pa7%NsC{FO=M(;U{n$=ZCMgSUs;KrO$t$)}5 zj!0&GpMTm5w7wmE`J@MBt6B~RUN?HSvXXXqrl>Znp?@$+_D7R{{x9YcE8na+dk9(>C|6GKU`aS zEidd3rT+;DRE7k$c)U<#ZQFh#f%ao-&AbOLzzaby?esNkMd z<27khoZhBI9k$QXW+q*39OCgcM8MIMwvb^8tzmUKju84Q!YgAqDczX6c|*Y*bLBWe z-?z<-uNz1I9N4)E)sQ9suD>R)ztxe4TbIdF4Kh`1-_>ma?dn zyk*!Y9gsRV*QLEvcdsVFT;^k0?U@Ak$n@QiKz{CmXCgoUh6JJ?(v~S=uD4|Y!QbyO zwV32}@FK=%G&V$1jdaJVmRUQh?Q7P04Lu}-^a-LXS5Dc47wO3N zUN&5BMJS%OK4GdYrY?@4vfrFe>r3a(skODWis23hrxZ*>FWo$$*KdOZIEI>w#fGYxE!9tm3 zJ}f7QAd38=Nfcqq2y~(qvt&b7|0ivKj0T97VSw$U6B2rB;u zaWH-Nd8QphV4PMA-)b5Y2B+09f+CkyIDxS(1WE+VsqH`dW{HSP;{{Mx_M{Rtr&bu9 z1_CN_RqeB7dxF=N{7x`++9z|~NtP3G#4sd~5Jp`+=%*nB=KhTM{;-y*lySB7xwLMa zjX>`28Chm%?&m}Zh}1hV^^NR(aDsR>_d4#L8`7du!qv8m2qWLOm+odbRm09&6(4whoE_iL3 zJFjeez2R#sO-`sbj!FS`^>G=C6`vAv$T$tx|9gn*h>CbXk z-%a zLL1m(VTZ3lSTm+piiuy@o|}lkSy*9E1VE>`VIgPY%+}iNN)T~EwZh7`XcpQEnna@! zF=lmTK2WF2)^C~P=sSHU^0Q0ioYw9IMW{VOFQk6 zjK47#6noE}(Vkg>Q%;rBHntZ@S(aS+V-f*d#?FueE6|Ui*=j3CD$r(c&go4Er$)mj zWYdlSM?7XF6CORb?VQ>% zVx5yb$8A@xdFEtZ*#6_#+%w;9t{csi_FGeMqpc*P&6euLbT>c$o&Zkd2T!OH!>_vX zAYwYp*ojpJrc{r+0ZU8WEz2&KF&!BfoC+Gj9U2aBZJyhD!dLamC^hO~y0QnL`&?HFx>xJ0+Y zIgYy>vr;}9@=87n>YcVZ-?3(UtbHtT4xg4K356v){+O!cVlt^#@~ym2t?5MaIjxci zi_XNX?KN!D?kQE88X>yY)UF&FtwxL6iFQDE(?izMb*Li4Eb~-mce0nVm{cZ$U8g;P z^_m^Og1m;xw9jh|oi;_<%9;k`as8vV>kGqNt3 zZ$8RuuS&kx9Z5IQrjHZ3H!U~kEvfX{v9|Az?!*W`e^2e>o?LAfoWrgg zozIRC0P!BcAFu2%CL<#wBO~L%u(`Rh=S9_aYj9Q36y~2SqfO!bMaUq&C(|h$Skjaw zu(=-VuK0QZ$1uv6kQU;sLWIG}T&x90F-CZ1p@)T02(vrZtWZJeW3?v}5fY)K(5*Sv z9!(4>!Rov=`>PZLLj1PExG_5`;VBO?Mq7Eoy>Unl0C+P}nRW%0S5Mnzo2~qccHWCA1_(C5TU~VB6+4OknTDeU(0oXTd_2 z|Jww?cw)RfYFA(AT*Zu$(T0&7Pn>UcSeBd`EeOU%G%vdYXqE(fHQ3ad#K4U^T_qh7RC z#&crkVKJU~=PdSqx%;9zAhgm~n0WveyP1vBXrhW4zg59}DV%>6W-% z$0EOWA{$40sZ#3n?KIBqO&?8LY#HK|r!XNLbvYKJL1{n6 zQqE1yIiwNcxMk9^Ery1O)qBL#iF++Mp`cRkvQ=u+y>}-Ec8_^cr zGt=g_^vktVoAaVuzdy^kyh%qnW%%)?@ZOL>Okss=9D}hTprsVRFjH{Np zk2bX3{4{e6W}}!75a7p74e7_N)iQwuT5Us&F!$x2DY8yKO6!cNO>SH<$8a5t75z1B zK)FRVx8%BZ_sGq~b~G>1-jc~M;kiLy+;gPen7F-jX3VwCC-Y5L&zRJ$>{wz+sA!q_ zYwICz+FQsx%+J4@A8o6ChN)?3G_kBC?X-ER0LB#{P+U$+$$M8?KUT7^z|*S7{CHYU zFh}fvaI4dYjuehjHWTZnlooo#~d|Y#*irTX*zr9=BfaEd9*Sd=HoTf<_#{ z7hZTF`di?ZVzhG@V{nev)>hTV1}TXn2(O{Tlj;>#H=a5|Vj9|GR@~_=@`~aHuO@CI zu!q=DW59+Z86IZL*yYINj!WXc{3a**M!E;S_{A^M^QXU>GBPqUGBPsm50@^zxTkc5 z8h;T2DPpOC6pThOT^A}yTSg4swxUdOiBVL8?DC1QT&L_mdj5CR| z-v0D-pq=rN+oxn5WXS#}cTKg7`4t4NPS@^Hv-{tSpcd@gGFmgv+W}z}VYX;__w`jI z2B#Tlnf_TXe)27=_~e{Gm>f<+qguw?a=g=FZN%6)m9XuFw?eZgi~9|eKil>gB2bdq z2Ur?ysnjuTiTNz4DgZ>=Xa|gTCuqGH3#F*)zqBhTAN$=}R>S5r4yJ4p6^GdyW=%tt zZ?DPE8ZSdAs!=PFen3;@+G*M{2}U@C8P9g*a@K2@%s989v69~-?n^tk56p%zSICWz zX>Vmt?Dw|0IaG*7C?02FXa25B+wDE~Z3Y!%N!#pIwRvH3Iln55mGY{NWt_g*qJi__p$3aYTRX8tAXofZ~|EQ^<&Fy&XN@of> z34WV-rDRS|0wcrldRRt&{>AJXx3OzA=97+=#kJ{Jyo9!=;}ZRvsIe}cHgMW4$E}g> zur?6<6+FvwTz(&KiH3QweNgv%>w0s8wSvscx;Jl#HdK7OFo8RB`3!xIF0e*$Nu558 zwydO0_D_#{LYDc%Y2i7PBz*kfg1ueW==c4;6S}u~UHAI8sk1}0O&iz@soGYr81EA# z@fTAVCe43fb}o!2^YiR~B6+e{H6D!;*D{EEG*k(Xf4N#aaqqI7HY@NlPL>a1+TZGiY`n6yClbj*^30n8!U5m%>Fq}*WpUg z58?|Y*NuHsXu1)+$5xo< z_r`|27%2)(5~Ypyc`)}}>QoxLuf`oSM{!TY1e1w`He=Aivn6xM5JcD}V&0fJ)ls-E z#8DeER|IpUf`!OrC(sKXI0lh4hm{QP&VS*Qtt0S!0bCy+hv zSGzkFv)5@M^GFEar0DAIl(lMO{vUpCIz1`|tPt()@co+CldWx{qg>D()AytN-^d0M zJjwrUGH1Jdne^h~Ma#=pU35Te9_rBwjztN5mcNnq`R6aG?Vq`#4lJEkqr+?Jh(1M! zyHm9@>hn|FD>f%PP;aZr)*@>LJNzeL%%3^_vvn=DX#F}O?9elEAo2|69@nPdr#`v;RfmeRDj zRvJ4(W4dM{KTlknA$*#0P?s~oqz*dRkvfc7n<=Xr4{mRp2cj&;Qa{d>t(I;{8aSHZ zb|6iAETp`}0xZV2uw&mcmX4-=KBtWLMKgx>o``o(DVNVln@c(FSS_5k?NFr<2XhZ6 zFkLK5qfsuguT)|$AYGU5ZE4L1`4;kTY=j*1f&sK^W(>M5BNX#Mal1?L5{bQoZoHU! zlrXK6dq>6$(B5|;0O+^0*Y>U38Z#;5wn&@Id=isBxrVlJ{bcsBVg6f_)e`4AGDg8X zG>%YYUhv|Gj62FI3$w4%I94+45e+)|xry|=c4FGg^P*LjQGI@#%x~4|NS|fy6yg9= z#&aCjq0N3WGY?AtEMROf_EJ7y<1s+~Lgo&r51ato=g*kAnrEamX{7AZJa3rBxc8!Q z)0jKl=WfT&xsL9M^+3x^+KHK)Wvjzu$24tf<{~DIGtm`d3B!Q={F}C7IRZLoSWgzR zUlioom^62obYi|vVQtYZC*vu+HEY&x^X=>LkYf>USdL5aP^xzZT~@A*^-wSJJlo(! zxWm*vcw6=uPev#7o%ycrbnejB7U^Ekyzk%lGt2ty@(Yw$g$hz4sLt}|nDrXEeeA4y z->EHix4TB&?K^7y5U(_DZx`L(j)HTTP8Vw%BeOq{N#XWjQcTMU_6I64d{;2J?iQ*j zREsI(#%Sq%Om&~8dtfjah{Kq?S1=;;`-=RY2u|MClnQeCuL z*gP{;vbBj9ys;^)U`hwaF)*Kk$ixDaIGyMevRci5_WAmR|GLANj)kOxh0yU>_R4^W zh#(5B1%&(p4roePkTF^5=n>NaoHN4Q*b20)b?mojIx5{BE^ZOL(6tOH;(XZOCi~Fr z2Rx&t#N9qg9d2J*TLeN8zuO=~F1>Nkz=9Zdr6#X_~1vX$br zfGHh@1KlM%k&BR_Ox$5enY68*zw1hYY}5hJKl!ufrMaOz)e^SB73aN81mSS zj1cek72;lWl^Ju46^^k96@4oqTo-1)7f4jQhrW-izR8#tX1qZ-y4a%|^k%g)gjx3?wzYbgW>DXV*4DoeoZ zoPud52sOqQ?a&DQ!DY$4Bebbw$eWlamWGHSe>->%lu3tYX{yaR{FZqmUO+qYe3Wiq zsNDaKdA{2A9u#i8`P=@+oWPoo_*SXzxgnU-U>>S!ZkE+E>dKU{%Fn;_r<}??trmJ% z3(4=+j_ezi{Nr}n<{LJ_SQJwej~&|07C#}y)a|z|Cp<^y`(wRL3uU*%lzlqVbKO3d zvqQIv-cTQ9!S)eD=q^zF_W>h-SE2e{&uD=%m!fld>s!oLS9JzmE5GWHpecn(D@ z!7m-7;`o5nYYQie&C8Rbzc?*={aXbcrq=K#6~obiV&R}}?F@Bmz8JLl4+XZwwqfdA z;Fs#i_l=FWy>DxB^oM8<01^C-Z~snOSXiWtjEszojErW$Q|RiC|Ja_>AL(8HyGQ0; zy~KLIlF3@BMf)->#Zey1W1Y4LAuN5cTqCAqEEBN?a6B@<`R}>7avu$q2_exjdv36* z4%4U!Gsd>{HYpfa|5(epPI#fRrkgy$5}ewaI?}kQH*r}b@_7L%Q(M!^ zj{RpG)axoAhvoU}qp=Bvmxb4 z#-JU(9^ZzBvZQZ*tjyRW?Kl_$lTSPtI?s!ppp3CEtNLwCO)*a0U??XOb8o{ja>r7> z8!ODENyqkY9FKpeUayqP_gCsm`y6!G%nP4+qI{j$D>&pi7S1_s%`0Wx!Z}m5rDMm% z^vTul+ZoQQjz8~AYis3E<2-8mEp69Hm^W8u_$&qE;@W^cXp*<74NY}dbF35G3tx{P zSB%@(IC=@^z0^bWI6wbxK4I)7^aztYewUKM0?njrz3PtOJk^BN0J)s>_#MkyK=BC# z%Tz+>4QL#voBV-hu-9dc_K?c?IVy((Dt8W0d1&Kgxw&?&T=;s@msd%D@GR*|OXu|I z)2mv%hKjo)^RG6xtvU)H;Z82ovN9VA&+_L2lQGUTz@)oQOUIU|+rLFy1J>N#5br}Y z*GEA4dFsPYtVNH^WHm!L5*y$r=dWDcUO#f3Yq{qJK$y3D;wOKC=1at=Fp(m$6v-M# z8uN%0ovv89f@DvPqF(gLMPZgarc)b^()a@w+X!CCpf3M)>OvKdh>*sC6UiRT!uZ9t z-jS$KW>+SFMU_%~6-}kM4zI8XvsJL8pGv#7cXn*(ix&0fdT>7rMKzxv$ubtoL-{au zIPkz0foE8iO4HKX2UOpP@7j?zJJ(i|Qnr#3VmK*S z>SEJ}4HcqF>pm$MUj>g;JVpx#=CRL{?rv;x-a-gCjIbwsa#$LhjKaDpn(~-U?T%}N zoBX^zul6>TK< zw4|M#0pbRUS{ZgnFbD5oSw@+AL$Wt}BKM%(DkP7Dh=GNE(UD+FJG^v)HlvNaIzw=n zC3Y?;%2&#dW@$qY=RJn%VI7twVNwixQ>*# z_u}46%N$T*52B5|1eT)6pKrlSgN&Ei8QpI4eBwDU-#+XLf~$<9l(Wi&z1QfrDK zy)eBI_q|G0PkeRX-7J8F$N5mc@iE8uvc1kf#z%?^zbIIVQmxOanlMzwu+ zkj!IoSw`l@v|6Su&K*E$Ju=7>WW5qpo))D{C28%gGJTfpWz|K~d{dvvtL(eU-V1j~ zWo? z1tpRmO*^HLeyorxPWr|r_AQMebXnUY5uA7I{-y4?;xJ?D45MJF3r<1Wyc+LVB=+ZQ z?3lVbE$nI%^EVOV$Cae!*-4v!j|wAD;%te%Nbtaiw565UT2=-u0~xO6MZl4bgN$?V zfl#%D%Wh+jk&&)7d?iR9x~5$;GW*t?mQpwYP3nlt|gMYsfY9QTVC2PxjwwU#w{~0 z@=EKPvU`QJOS`r@NLo9tE(Thkr!da9M@D;R%Hc9hU6KZMccymiT4em@@31CJ>cdOf zr0qx>&6rI1p7zVJ8V8IE*ULiYiU_kMRrgh6T&i*IVjo#Jr%YNs>ac2uNdh#B{Bvhy z_K?{$EUaTwm$_#U+O-v=Ez}WV4$Id%@?_k!*%t4!en?9f}@#{M>%p*5W`T3U{rF*!}{T?FbB1}i8);ydY+Pith6p z5HV58i4jaHilntAHO}?5AvhwSLKUpEkgE=#Z(Bdj2y}@DT=C2pvp_KzYzZk5GR3n8 zZQdG;M9@LmVwc?>(-Ti0qRu>sT#wc_d8SN^z#=4;3QMS_GOVTgs9}^F~5j zAfO8oni@eGLXy~_gBU{ynvxY}P1s=c9fHPUpZ_d%xexq%#DZGKy8c2G87u`4c|wD@ zDJyVJu$N$B1T_#JsNy>kSh%oc)q5h7G*(I~OCwaHf4E<`H^|d&DRGB9;YSq2v79<0 z)}o!kw%q4lw?_~roRB91X@O1KJ=z%!MBo(BW?}_8gv3&|J%zTyrxqfDu^jUK!WiK` zbwGlY8E^AISRq$YMb6MaSyYg_X@q!XY*UEU@n*ba*E04_Ohw2mj9CcJjfwQ74YGs0 z+7L;3)-a#=p#b?X(y1)Z@B`B}WK9+=+H`>L(PT7)Ej{0-(hK(JGoA(RC+?rjdrQ*L zf4MK1Cq)(b#}Fwyq2yWOv1wa!tttXSmcSdLpez}5rD!`Bg!+_*NVW?jgb#=25985; z^IUgHn}Z?0P^Z$)IV@$_#ftu1hx^sz_vM7PheHWdgLTBIC2ZJWRQ<)poCPV?)k2jE zBxOjKkkn8jw{0g~rI%t0GjGJh8SW8$G?yl#GYBo791xD4EHEjW3`?;mAxG*g(SRT? z&&=2m#};<~+dUCR$ZwPLgokl6`#H=Ug+MH2z*MI+WKuTuXmjt$E(VzSVV_-?4`E}& zRFU(=rFFnIY`3*t;BfP!vi()zW68Q+rx; zus={d#!RuoBf`o&3n~1kYJ1ozTl}i-cSOi9vCgO9L;=ne3aoZ_Xu!XngOgU#Eg{vK z)l+y%_odk*X{7^$gX7OGHi^^>Y>*jt_Rib-ks9^2Om+i}suNyBN6E)H} zMz{-?wyj4Zz$t|l`*7c-iI42cF|V1f?s6LRc@nR^!PL^06Q>WEU^Nz^WiV`TQl;;5 z`cd^d^JP$UF3jsSEG7+pPE=RB@iODm75#=^u(#K^J~JL>JSSFTfj)O^drclU?p@oK zky1(DkrwaOPRFFf8CR!{JY2f5GHJ$gpSl|NAWR$Hdt8(D1#`oVRd|p5ef6_19YZ(g z%rW<`ng=cyFI4lt!|Klx7P|dhG2;f&pv%wGsPO&rb(*%vbIJ9`UBf&G$K3QOmeV^` zpX2ArwJ)3xp`uDTEn=)V^x9=IbKSIM6yF!C*>d&DbA$V6`{Tyl-yc7|VLS8lZvbzg zuFRt7^80cm`vJ}Go^FkY_!BXOHn7v4V?wx7ve;3w$N{VB626@ln8Iw!zHMW{0fKmB z;Y2ywyk6eulU}$=dhM7gb7_h6>gqDre_n?R$;zyV#{uQtD1tb`yUf|MXZgei(eoF@ zfha2k>CjP9EdQ!Ickb{XDXdQNbvi)poh|GWHy(XhBQ}`~&A>CY9v3G52|VT;?|$y5 zULJn!2TR@h2HFG4_MB{FZVk7L9AIac?83xfuG0Lm@Af((2$v!l!$8<*#oV28U!^5X zj?T{60 z`~nxsP@iG~{>DIEgl}Wr>U-1H7Uwf}&`3TTW1S8bYe>tJ$nvSeM*N z2pu^him@4E0b*$8iX~u1Bh;4hk$Wz6x8!_j1Ne|~bkk^kwIy9Fo}%}?gO~m!u-6Dk21RQt_Enr7?J7WYe#@?8z8p<9b zU9>uShhNctn7=x#lmA-ShiarCL^**G^_cxnaBgUXw~^(?NQd+|?ub}o8ieaz(H5~7H*|s- zi9kLYxwaai)cN2s8Y4p%%Cf7v2$KaN(6+&)!OphAl7$X=GJ*2S=_r^yBNG~6imRN8 z7qlUnm9~Do6FYV&oTdUE1`2tfs7M%Iz9K z7QP$Zcwj8txOMG4oD?G%RH<&&CeuC}09(1Sb$!G7y74SOGUMJgf+yRLlTGajamU73%C5gR1? z&d8L%(+vsD$kk{q!R$Ay1+gaG>ALx0?=$KfdTnFn&&g_>%$&FL6=|lfObN}QFrRUM z@Y~+*O8Hm1dxv7At9EWDW2@a=8QNaJEvjgTJ;^c8rM!ArBgG`i_T4`xw*B^5F>~LH zMyDFbcuZsr^Ybrt7IXX?_q1iso3&vkfzWnNdn{4%B+)}SO%kz56#T;-cpTOIXF|vx zg2)$>#d5v1L46j zY%2*ebQXg@WNL*OAoD*34tVwI6?OOS_2SquqAzcsQitHDl>fGE51yp0?H&)n4zHdp zs?lu>ZoA-BRVCY#J5yL4G6$HlSk#rE@=A3I1dPNBWUTwI@aKcHN5K9RL5f;>T$$&| zpIa^+Lfn*RbGyevD1X{mZP!K+H-trrfH9Rfh7suGxsyNk+6tTISv4!iDxmI0P|;SH zD3tMl)3QE?+ji%zn75J9`eDUe2G*LqLDL3ds3k;2i*Q)5mP@lh+V3xjATwaC;Z&(g zb70K3ERnDpKj8mr?`?i8Ns|09^Z0u2oY&z zS46n%XXX~+5$|Pn_s-1D>`eGf*NgCQH#ajkPd9UOH?M+bA|8!I+e$JukgDKq5u=o) zHVp?m#JEk8M!AE+3w>=_EmdK{ihEdv2Yr*#SdD3XPi<>p*s=$23TO+8Ej(P^Sh!Bbd=?W&1f)~O~I zj1i5@rHcgOaR_~#ggye?vMhs_tQI3T4cjEuo0F(QSlgCAjerEtr5XrJ+_EfQJ@o)2 z;w6-AvTB`39ih8cZ$px*aUl1$I(0t)Zy3DTj)>nRZ2dz!+nd{T4$o*=2c9e=e2k+E8nca2rnR$Fsv4pZhu==Dz|gQ>gNB!`zd9@Hk#Turft)fF2p2_!52g; zk~7PS-U7~bFs_`00RxY7!C9$Mc^1cZodkJmjV&4fVVf-E0%JgS5QOcRpatGf7%K3h z!^l(CsEI%4zv3AGX^>rPnZ;rQj7fOcMNTulj|*G0kq0AC{)Q!~deKtdF<|{?e=Bsm za%&9Q-?DZKDmBb$^6YO7QEM26lq6}uJ6ghwj6n0g*;Y*#j4u0@gugWu#;SO6Yh9$1 zg)Z`qrw$7NdWYRyXe}!lDD1Vj2iw!opQ zl8#*P@;RO1T`Tiy*ay5w7kMBP*ybZV2#j-K`>yR0Am1*UHXgr_hd)>2oEQ3X-8BMv zubVB+zFD|{H!wpa@Ze4S;MykT&K5kv_E^~>n~S^x-}AFMy?T8L7o6;H_{niXZ)fzq z(v8U%f44}Nrzzt5@hr`7eW}-4)ee8maGRLJP1|*aKnv{I=e3N4P2d#kBRmbKbuN($ z(>kfK=_{+xXQL94=~$*~IdfR1JiW15y_D-H>NMrw8Xf?>5V@MOQkz$P&NF%f#hGLc z!jHnT0)_P^l-FGrqKMTJtWfInjFnfiaiB=5rVhSI0EoJfGd9UM^%>KMKl5lWO$!fP z=4>vFB=}*4EwF50umQ}a#;3^Vn2TH8b$O*tkCve4dLORuU{_ zp|*&~rO5^Q&$EoDwyQEu_4jP6D1O{^&CO1#aYEo}@BHGLs!K+#y4S^w}`} zAs4_*gKKS4uIX_3V)IGX-^*Jx1zM;2VwZyK+<+y7ND!@VMt?Ckk@dHGW9v+sO!JeFvDI-*=WR8`pSrQ5Ku z_c6Kp&R<|ik;+ii;pi^U0Ks)u^ zRAEJ0wml`PKB;l&WxE^^g)M`s0B39f!W%f9E@?Th#2~4I@gW9d<9(=u0g;e-A@R4- zrRoKw;9+b$q@EhjPLis@n#v87YRCz_vW-)>FX0>`@W&Q6F|3#_Y>ivmxwCL)hvXbz zrbdu?KLjH)zNk@5b)``~q42<%*T6SAd+U9ZZG~AH6w2U5$rACdn&(Tl*^<&_TSI+h z5R1|2O*z$kGe~r+naKpUfvF*^TTR=uf>8QwdzlMLqAWPnRpSjv#kf*$Cyaa4mwtg4 zQ*Im8;iQHHH8@t-JLOx?WD?}ii6Nikw4|)|gVnNq*r_KQ3jpFBgKSW=Wzak<X{;*m;oDXG zf=5ZWTMC~O5la``z@j|$!h^|VEZfefb6zMY!@1(6 z#H*97yVy=E$91GL%!?V(B=dn9d$rdE67Q+uQ?tNEVL?R7=^~0(B%8%6SpY0`%x2=& zRm0wUJ7XC0!5A3k2bQOu%WTwfHJlHx>>RqIX1`(A zawPTZn&~Mr<`u)l^vSjUrxl#nmLzcg|ESh5>$8sp1KEF4Jvt_yef)11(XwMLra( z${TEK1l#1k;r_+)HUC?Nyr(J}W2`i9LnT!R9J3rrW}tUgx*)>UEh zVQhJ%)+OVUahqe=JtEO5SS&_dmc2Sb29&=nG1z$o+5@i>Zj%i?kyTzNsZAD|HrS9% zLf_V*-&LMTQxHR7?#ZE)MOC2qVZ#qfoS9nJ;Te!S^7H3CvEEv;jCXt@6TxM_U z*F^k7ueZsco&CUXKmI-c<(;SW2j}LCc6Rn*O`oY0X zTi|Btaz%1}bY5QnkGZ+;9u^dBurVmByh~NSnU(Afy>Qha|zi7 zbJ#GM7;CC1huN82<55sQLbLtMltH4#gJN5Hg4vYSrG_L?*l#9=kmJRcSRQprD$!G#4c`oHe7QqX5>yTO!I%8az#q`fzp+ zO1~LMW(>A`R)f=mK*%=SV5I5yNZgS0u{h4$3LScYx8q=#Tr^~|YkBx2ObnZvr$vyi0tr{Ub6^mbwj zdpKnttZ3UdO!C?WPHAM+MP9K$i)$7v)KCCVaJHx^N5Q*ehMXz8<^mGgZqKlpH_5yl z`rWqcwFfH5+xBcT&U}NnZmV6248gO41q6h`a*g4x{V!*GD^>Jyb`IMw%Wy^vo?`I3 z3W~g=_7Fpww12Y9v(p+F;Y=TO4HK2D@I`Fb;4chk^mO+CYE?~86y<-_cqL_Fp&1t> zfleeqO!!-&fp;Vxn4a-vdKQbiIe(_@I5k4O4+}}QHMP>MpA@z;>aqYyyeqFBP+4gX zI~(*osLF5Fc+Is>&DinO-4<_rvi^<#hM7G0=x<*_w$+%3qJ@aYNTk*XGB32zW9`?r zU}N$W#*ui}!`~eVxWx-m*p>qxU@<|;1*2B(|B|hANw0CnxWEyCLbly6<-+Q$ zSroD0WcVM?`Sc-s0THz8WV)cM+hYleQR4824;!(=Lgs8f3qhzHeLbz|Eo});zE5K5 z`}#*$e)``c>Xz=}mx%%QW5EE#)*UEwWuBI77?u?;a@BBm*(qx26$FOB1$suGJ`hBFHhH9q9PEx3GfO0syn1eYXVJj?)A?exOL^lS;zSqrBid zs&rjKwy1F@v!W==S~#yNM~g_5zFfA@S5j|Lj_S0SOIaw)_?9u-y?FRo*=EDW7l2=h zVhBF6Q&@~P7&w5<>W&zAsIy#*#Cr=27ua4F>hX*43H9V&@6_omnZlkDGQBI%)vl`)3y=q`7{0Rn4R!QGrP$Y{?l=3tfk_$0_fZJT!7v5smpR~oa z%fW0C`H}v_asCWE(*96yB+0u=E1dp8&=A2pVVdQ_3Xvt8aAjmhZ0s-}#gkpBqK`gC z2nq4l&BOp^-Yaa-Ach3P$S1NT)Z^NXL=^c<42N89CWox4p}mFUGK;wyQX?2Wqoy3_ zVi#$UahAV)j=hmS3+mPkhIXNKq<}wyPoL8617ZX4vv!rABE^l?7=qXy`iE>X9v$t|C!c)g;1#_6g6Q4P$rYRLoIgFI z#WkM4&StKFO?HO)4*@Th2;|8sRw;J~@+uT(SFCeaE-xxs9$&(VQp++3le**z%l~6m zUH(rA@tD3(Lc~mVoq`UW_knJRNNVa~$mJ|zxv1q?MwCU0B;Ob{t?|*!l+AV~3r>N3 zt}-Pzww-!7R1q{|CT!IsRbEnO=U#M+;35Pk5u=0D3zlq*f}!FhpoyG^GcQ=P+OCFx zc$7#zCD_KP+pe;9dsT?QDQD8)LBqK+Sm(`(yl<4j88)d0rAeZlhTuDC2yi1xcGwv2 z8jpl7SD{UfKB~%4Rq0mMs!>3L5)Z>C%S@Jns3pxRejTmU2VWwYJeu)?^Nyf5OR@&0 z^pDesjWBos1D;fzzd;>rw=_?KZh3TJ6~7MKIn#Cp-;tb0lLH1W5s#=uI}HXRnn{Bv zB@Ns1Y+I-Fkq=5?*jk2n?!m_RGDTDjV%D(I5S26uMjCKJAdAY|Xw+ad6uh~0IA^L} zqdY{#Y&|p0`MzM?7#=lQ9Y!vavS7f;B8nI9d>R%bu$36mekIan2wI{BRuXRGRs2#}p{{9!vU2xU zt?+E|$Ge7izJF}Xt8r)B5!L8$vU366LAE zLal2T0&3r}S||=QqgiH@CXo^4+DqQ|~eiLBy(l{;sB{?|4zc<@9|MOWD`g$4~z&SD(Mb z4c!u0HI-Y=u=2qx)uQcHMG7})R+V%1OO>v~REFyTu}TSNEEF4u{fhX@ny_lkZ%bY^ zhay+9A~j+q@oeF$4K7!(Qp(y>B}%rsv*mws_62;K2Ia|*eY)V4dsc+15^(J@2 z>2%CPVlEyGwtZPomLS7w3`kJuv6p)dMNu33IV)-vJWc$E8Or>O;U>7tf)%e+3@}_2 zU25BMOrG0KN>w<4UpnUJQVl0~9avfO=cOvIP#71LD4C|@;k;zdZ8>bgo3XLPMg(Ye zsK;0*jGHTQik$82V07{H%VoywLBQ?l^M)rm$}#OJObGVW=FEec!@$|*XcJjVKQHG-YxE11c~`8i(`Mv z-axwll`yRwfPS^e#b8ME6eoV*HJAP~Nl$RwL z>h>|cdBY8G!>7DLnJ1?<&~zZp=H{XCvuVK-%0d_CtK8wP5zM`t>AUB%?A`x3U0(jX z^nDYQhVdq^z~Ul~1sn9Ida{y{n9nhpns=bpAkd63ZIrnu5^)gKdN@t4S^17#LRK$-s6)L|FAc7#B)^6$NxK#STF|(y&z( zh6=X7iOP+DJl-|uZ*b^S_`zj2*kxYHnHYu)Pf)E9NMlV*`DQx{rQuXv{G*l;7ikO!Gcnh!7 zP}Zpu31iO5UyMw6sS#*(ODoBiV%_4XA?)i&5p6vb8ue8TXWb^LUgRuE8*fS7oDizX z;tPsGiuMxM1OQ2bGO6BTtqViG39sLr1EYo~BI2ofEp<;&D!i_nXs-$=2@17bf#KDQ zybRkp)5HvE-xwBVSo)y6Qc#+`{F}&GI5UFl5Iq+%L1t70?~8az@k)3eu*eGB@8eMyPT!uEHHnm%f-)}dhh z2Kr4ty!A_9njGh?LSJI>B=O6>p5J`5j1Hj+hIZH`JxWnNOk-`PG0ff+&9xDJ$t8TZvVV#lD_$Sll1L#{K*gp zV2V;RO(y6c+@Muy%Z9{Grg+Omqvw zcN+dFM#?X|6qhHCX8589P19t;JenF~B<6_1oCUb7<`#i|;l)JY*z=To8c0v%`;2)i zUJ6!gNuD>xEq+pWtbNJ2I>A+Bg83tOIykHv{E6jZ9O}x@)!VNc-12OK;DsJ?R%H{n zkxZL1ZJ%>0RQ`kqj3|z1&!@`AyjDEOXvWnjQ9upQ1iZN)oyK}|(x;RtJ`|17$=H#` zXK{k_WIW+wQ?J}nnFRdl*~~*`Q-fh`ZOstlM&uhjo-*GHIl()_N*U_Q*aA)p6Y@^f zz!KS2x^!IVI74qEwg<|D?hu(5-c58|K_176>-KZO0|B_;m*sYPrsH`c z^opO4-qba#xbI$nkcE`$%yFji0qw}EJn#J z4aXr8r#3`d*{(ai?oY0hD3UDs^6iiRi>06Z=k$vv30SgZZ{UJlxUb=G3&|<&ev?0T zx}_;+MQD8K5))norA4<=`hdTg0n${hfmmSdSrC#$;Od~q&mJW~>qJx#?^2Nv3$a!|;y zrO7;Rx&ogx3R>e(3fr*23)?a(9>1y<<3NM*)Qwl93@h_#2x=jCuz@Ba&q5Fn4WLuY z#AF6K=!L z`V2;Z)4ulR!67whC18#Z!GAI}AkAf(Iy-0P8?Uq7r)FoIeARY)&{G9ZAGxH|GpI(1 z^m$|$*u9GSrruWRk05U_ie-VK*0XCcQefPf_t1r{*EWu#E|sJKPDqSNz=kJpA@@}! z;alsuc45&$BPZ$~56FPXQ)GCUb>iYbUoH~=(2r&iV26e*V1#YUs%X~|e5p{O4 z1pa9_!6Gq~X~D|6Lm=-L}KZ z-y_!=Rz_PK497fMjp626?${aLernIlwR|*#+!nojjISB~RwP`o?KiDwTF?-^4jbHUg(r z-L^?Sj6b3_s46d-6$xFNWURc*>4g7u6=_X7m$0vIN$gdlS2Gf0@)u2$^xfaPzVYOL z$=!%KK1a}r8bMvsgpIzWte5q;E|M7n5mZ^0gXP}wDh%w>EG=XmDoYpjydG7P;Ne-y zwx_XpA)th@0j!1vuNTde4ZpFWZ7*i$Lctj!u6X;4g!K;E!0p2uY!IJIUMADv27f!3 z4&7ituV3+k@y5B7pC_^{%4K1?Eb9%_p)6MQH#b@uwf;uH`CM=sjn7@nj|f(j zXSAL%`lGSYtvFtk&iMOg;8WXn@6Q8+C{OLX!c%@3uUp=h5ieKZMD?lZpAF{6ISGyR z`3mov-ws^xrtMqBeS`XatMs97n77hr+;`l@MY7Vz5pW@I=Z3HRoXaorAVvx1PWI{lEQ7F$RY;q#+GyNJIJ^PowngAN*kR z$v?pPF--hCG1o3Dd3MigJ?>go4u=(arDeIutMO=A<6`L3$}Prj!3Ig;my1Q2VXIv> zswa!N-f5N1!WKPU*)Es7X3fftC{X!ky~$e58GYU0k+Skrja84(Z)Z(De#iXnH z4v6Yho`HYL_~Jd4vz42UHqR7~s;g6_DVGa$p^39orB}WMts%4j9)g-8hJ`_O31gi|EP=<620FcyHbEYzG*Bl{iPwT|^8z{^-<*^Y5Cd@OJ6nByPx z&1T#V4dcH*{zYCn!9i%{rVIzcQg9ic7=Tyx+w#Sgny$QorxG4txlH~oyu+I8Xgc?3NJQI`aa!JV&nlhcom z-1J|PD?Vm}kBvC?#^M;Bcm(qWcAage)A?CC!FX6`1bbSHcrka*24IntxM&lh$ErM$ zi!F;~DvQt+!bcK)b^34r?M1aY7=uF^(vXHUq#^w|(>Q`(F;8-R;NR`UvNognB(J*nqqxeOaMDqq88SkxO6IMEk%eNJ_@F{+Eo)zdRqrJGZU zWQP^?bo<V}4xw)TC(cxC}lYs;STPnK$Xf=g2X{5VlORx$1Lt9&~-X_{~F z59K;Ftk`y&x4p&nSs4YMQ^uvm*V?3Bd$c~c!>?}13HRspoOy*lobdDXwCT6FPy3Kj zFJt+Mb4~egN{4=H=-b|oAf2pWuDF~wa?!#e>gGjq8h#;uGX&N(l_Xt856qWyCk!+bqjBle4)`U3#9v8@RDaiCgNi ztC9^tT4IOKLSk~%K9|@4xGl!jx)r@nvgGCYkN(5+5@!b877b}gLmJYMhBTz_lz8Gk zyEHofZ?24=|8plH=Mg4iOHG+WEk{Y|2W`=uGycpP#++8<9fD zY7YO8)1`NK(f3RGMa!!KMD&*QmuO@2E!V$9@7}!=<#=QBQUfn%_-~~Q^4@V7RiH12 z@A8e?KM#4!@C-%M%DwIJ4zPf?Dzd;2xLso0;8A(oDTg-C&o1}!+0N#?w>`*)$415V zF1-u1lF(UJZ=LYr-6c>VTv|?(dOCR{R|LmAY-o{o$iIxfWf5(tlc$&c+lCV@&f))D zUU3J`MhEI!`^&924&Q*+dD`}+^6--2j6MKgL&r*=_vw~Se)mq=R63=o@Idjs?3=z0 zZLPwfrhgS*HKU}F_yWrOiK z@5$~k{#9o4Ym9gJoM%`3vV7z0nFyZ0tN!!^?Y$z~4vHjOLAR);=lpVu{kx}xGuUz_ z@N>@k-~&BT1_MwkJYr8E?egB@Hc^3_SQm2RZdg=eqeRE$CK3c696R&(|U%3bOy zj(s39cbUrZ9aklJQq4Wi%sXF~?v!?Z@MiXJ{SV$Jw`fR18q$!4G^8QDH#w^R^|j*Z zf4x0A`P$bNVjoFRHe42N-ah9_?{OW0&#QDat?PMSFKepuY$?aIaW1gP7C7Wx;VOX{ zdjRuoHvBemDYL6HTx`yUAdJ7shL@H6$^4|A+}w75_9m^aG}ye6e@{^Os>Om_Dz^Q*pRL9h{iF)ATAozjkllT%jvh-ZV5BOs#*F^IkW33j2zKvWL3X zHfULv-YMT&TCMH)y~7v5Bjyt|d>0N~rG~fQ0on$v7{@-I)@P?DZ+zgGaBeC1UTONa z<=+)T***>{Jd-+CLm$4Tt)47wZe4L_KYJs*M!U#-fL(5Z0)zQ#q?f%-9Xa(7#{hCr=i~f7jN1>Xzz948TEK})oXe5f0w3?3gY0{w>e=G3UjWt?gHmSFn-y>eaQt+gD7-4L1C~@o!%--X9X(`!UnWM&MO81|M_Y9{=}~a4ryKf;Z5ty=Gfz93Uo6@7Wrv-w`mz&I#^( zP02AEgL5_n*#((gUXXizf^DFelN%qr4ckL0ozB$@i0JO(4J-)}R5KWY7C=UVa;6$M z20>#QuOOF6$C;~_rTgmq-}zgMdgE`=kcKp*Aq{CrLt2}POzC`}-T=8}aY&@%L|D zz7K8}{`MtuuUefKbig;cK-%VSC-Q9-uJzCMrCQ3wWkKuHFK&2)BiP6Mis=b_*uL})*YEeY@n4Qttj1Y;c>Qq8jt@7?AX0BtmL-1cd5OE}>LOp3b&bo5muw?$)ihgF zzFt%{F1OBIwVBNPTbh*la*Bweb+*0fm$D`F6qgs*^XV1#9y;+Dow9M5XNgzEW`}=| z2>}i0EB^RlK=i8^YhL62@I~|XB7D0U$~Ip(|MImR(NW$O#|^xj)Rx0)IesrMYWKEa z9KO=pxa+v!6?MRT5w{&y*k6Qlir-DH|H2v0X!Gr>V;|%C0M7(I-bza- z|CO%vFRrtW_0`RWDyh%y+>FX!zVSzvzH(%te7?=3Ax8_F6DG0z%Vi0c@=T2uICS7g|i7oB!*avANf7g3p} zPrkA|#oc&7p+BYGS8ZM_4=*CwLp_v7N%R3l;{^^F>;W9VJ@&>MfH(_i?MZadL-M<9pRpxaAB2267if{PV=rKA2%3lR;xmFF zJ$Ued4Z=qfFy`YE_5iXGczjOD)^$oiqzGk3DI$pGqwT~^Pty5vGfA>KE!;F)W_lGI zyn-V(1Q9vD3fHcU*Z{b?>vRktMbm@Tvi)@V=xGZG^8O7X-L1z zDM^<9Y%_oLKVKRDn}04>{b&MtFjS)+BZhNw6_=uWY-4)IhTjfBu{`!g ze#>JO`(?q3%+Gk0{I5Q9lb5R=9H=^NQbZB`f_x&g9}Z+U_6WG@9|_&R8y&pamM@g08iTEKAL_JaC*VK`QbDE4qCZAq2pQL59cv% z*CRf4cz-);IQn*#>;0Udkb(zVC@My`BiOflFb!wJ^VzfZTeshtN7tVP-nFR2zg@mp zfrqyRn=bGB^29v2&840hH%-Qr5Atky%I|GI4gHEVxy$*}TkiB?fCwZzsGpQOpe=Z^Ql91OZTmg4EA|VJ$jA6cpMpB6vbmZs_%F15Iud$|J-?sy9fn`FTdRNpM+pA zciH~3?VvCM;RR&-%D|iEaxM=RZe}69W2ugl@pWyK$a))%EaHrr0A5ik< z4JF%Wl)%D0onA{ulUK4WbiQCCG1aZ1xJp92f&4qhJ%dS+rnp!h1|WL{lki;16%u(; zE^+DgG7)1CS5p;gBvKjhVgvE*`R%`YR$cy^RXzF}G^8O7X-GpF((gp_r&%)lUnlwL zKe;q|{!fu3kwDqlTd*ORW+ktt;%bOeJcEfChj^Y)H7!eA7LQBfMe)EzrfdYB(Wpcu z!uf1ojf!zKt!Gu5T=TP+vvQQ3*SK> z*f1PkvQh@vVyH}8-2$uGH*e$p4(mHlHE(i{%REt~lgr<{dB?r@$GGtG31RCKqLV`@ zvV`#Hh);mp$bRuGD0{cn;J~wfzr*c4^;2fc}`I{^>P zf7*J%m`;>~JR!iLeEX@&%bgxQla6dfGTO-49qD)J*FX>dpC-Sr^&s&m|{&Yr-ftJ&)I zS&qARQ=+BZRh|0GrD-WfVI7RaG|e0?y)75TrPs?J{0BU({ngrMf7Sc+LmJYMhBTxh z4e7Tg)u(x~{68n@oBwSyfBmnE(fKLNKipZL$#-_|vGIo|Yzc+uFUd368VV!Oxm@m? zS}v9q&ITq4Pp!3+^MFe>0+TWMyqec1vnyp?&8s5g`diMAcuGF4wkzC&hF~zqQ>u4v zT=nzm>l$ZfewZEm*Ez8fc#D4WFP_&>a80TC`fIB1nlkhW|Mxl3=||*jWxLJar4K(^ zxUaUJ_|Fmgj&|uIe#iM2dFA&{J~@*5R_DXhd+w_*3;!W2N?%FDyxs8WsDTM3YAbyE z2+v!LTfhPNEiM3k)U@-(7kmD%eegD6Rg{%64arUc50v{vegi5oUPK+5(EgX)&L@J~ zQSZA}`y_h)NbuSfrL5ad+x|y^rc>6FwhE=eA_m6bE!lU9aQN_}d%|n*@c;Vy3HQ;i zLwg@Z{IIeOURyzt{5-}#^b^DC@}S$+KVlw&Pp90TooQ-u+ZFzz`ed@_@7{eZ@}m7~ zWdpoV!f&779eU9Q_ZhbbS^AGc`^uN2K#$_l@WR8ERQiM4fiuOr>B9}Y{rqzs zN0Z4B_rjah5Okrjr+YtP=ILb-x(zh?rEj}FBL3#~3Fid&8J~j$+d~mO6qfS* z3AycE_V%4=dLjF~3bZ72`Oc{|ZJQKcA*a{UUeg|9X#UDp5gmeqMwKp>^%*gn!d|S-T?l@cv<2Xvxzq8;0EQ zf(^q_h3g@x9#^;*kk}izwYA~TD_32bBMHlf6BMw>`2o@bJdv9zWhA3yeUA_gO(YB!f#a9BvPK3hF(6yzT#Z@6bICxNJYZ z@2wt%vbca5ik3v*+d~~Iy%$=S4~h$aGx*eeecbe?)c~bG5qes>`{^;`^2d88Lhs{H zTj>N|_nBvht_wGQQmABadlc#!uZr@b+tMEDB47IDkO=&vh`YkqsDI;jv|skLA3Gdx z`5Hs|3D<3L3jOiNEC-Lncb1)#y~9XOh(7+9%Rg?pVDfWva^m9tXzASx)IMI}+)o;O zAFtuh;}uTz`HXzjX>g199hapD+BVblaiFO$yY09M;vUm!^3#DA+TyZ5`3cwkcu#m^ zd>zLBw~zn5Fs5QWB>Ly!1Alz~k!!Al2x)hB-@_U^IA}b8NIu-~5F3V}uWYMm$4j_U z?0tryC5JmGj*bo_dg$RHkfG!wUYUYhR=k4SI|(8#;c|KN3L=82OE=gn=#xb`ZK8$Z zj9`+E5?m*N?W1yy1phaIF<7fHh;5=`tk%l}re47%@e6|wlcISCNtQ&_IK*~Rd$!+Y zm}T`_AjVnboQr60jm?WwT&8WaLTGM=iyWD_aWzI&>I5F)0UVZ0i>>I!xcNY%!o^b= zp4v9suPr`k8}Rj8w`|OVlDb^FDB;YB_odWP+!Zeb94Je}tP2B}x(*&K-c_$3`tSWV zJAB1Cm$Y;(kJk0wYC9;aa-;98^)zs-T+5G4wpkGw&lH!e!595mx|ZT{Ee&yA%Qu5c z9eS*OWo zofpHBIWDC}=D}ZF{g8$40-O1Y{4uGq$HrU&`WB0_&a)tU%d8Su{Jdm8pK~l_Z0^AT z)axS(HU<$Hluf{VB-cgc<-9&C$93XenIz6rd0wTLxBT+uDSHH|oQ$s3*REZolXp-2 zZ1ZM)a`d9cSsHpvm9G5nx~qSE;zfBDg-{iGq@5jBW{!{D&fy^|HF2Nar?w2^^{CsE z#|TV!xTA{DAxT~R<@}vPji6_d%()FLjVt{7B;OxBAgc?|_e1?%{yhrq3Cy5m8LUtF zzs~}0_=bG@)s^`c|4%vNvxde;+BWEfPQ~R^k!xvZy~*FdZ#d(!=Ld`zA`u=obOT3v zfc;*G$pBh+xZESj!h6$Z;7QC+v;+DM_}e}LM{wCAy;NFukQu#rzu&_rP7S{sx-3t5 zzsq=hCM6G7@Bqz^821O35%9LM!0)s0XJ%)x=*pZt?zg8ai1yw?l*E8k4NK;!9{-@#rz+}|92k$ z4Idt8$WQ$4KHBvM;(}woK6v0D4E<{%)Xei?Vzl{jH7e-0rR1Uy;hZ4+hir8okTLy_ z|9H>At@$MmlRmpAH{6elW4ZNyKE*vmtmMou$#0pT*Yo*Qkim*$nvOjJmnF&EFL?TtS^J|3T4u|m-MoBJw&oT}64}RmhZOiIp z{NBaGMLf(%LzveAcQY37P5ZP}qN+fX(F^6x$_6!yV)_+#rFq1w<;GJ}%G+{LzX^=Y zTYu$&CJKFs{)uTwz2Q&>{$@Ug-S(^UqiWhHLme#(R1FX7gDlV-!)WgQ3iYbMC&L~6 zV7y0J<6jl%Py@4-A(QPszQ+GNYKsDoQ!&o6roT}Z2B^s@#$DyQ;~|gwv`>30k7bYE zjPg)Nc~LfHvdGkk<;g`fm7y29y$@rIm%un-M5qOPtqJ z`hcq$fl@x#wrVb4%b3ojEXJ0STG9e@+x zGD;PEd_2eUe=q`Pn4jgYK&sEr=4?Q^dRkqre8G-JHUdXEg2HUoM$x)$M=(Hl1Ff8ez+^qJ8|q2Q?PE@7}#zzkYqUh9U+fNEMq$q8veC zWJRck{(yXx(f1%o5qL)xzmXW)Mn+6O%O z&h-HIQ&L#;;1O9~ptIo%FQkhhAiR<`6)wtxXG-6Wha#wY;lAK?5S7z5ss1#y4f>80 zAI9y_9|YX--q0&a>3I& zq(&#`P=2r<<4}2s|MrP|EECdSXmiJCI}CmBX)Q(*r%ylKmprL+NTI)|R@@JT7Ng7h z|G@)QvQZvzw7weLJ7O5BUc2+)Fvw;w!XC6|umBhDM~BJ>ZEL@Cfp;s*3hyw;obsxL z{dbrj56tr6#y|b^)7tve_)VeD4W7~&+7mjsua8s)QQ$D})nv}-GdZ?;`1Wa#p+=U2 zOg3`b>ofK{HU0f5a0vX>{z$xBZVtN(+ z@vzw1x!wh1u{E1Q_|PW)i~U-<(CZNPk2c@cD|qB!;bW@-wuZthh(nOyh*yx2J0$zHxpRyETkL=VN~^6(BODLjHp*%sPr`U zQu?diz-__sy56GbL?>2^5o&d1MZ8U@QzTg;#xE2?cuoLl^P>a<{R+}&SWcR6^y*D5jkd9v(UEk6)JYJT6&|CN<907hxhNL&dahHkZFPheiNrO1n|EO}0%18}3;Ox#J8(6}tK zSzVnlta4gi+TQVHaa{A_YqgwTuIJ;Vo=#uan(u z`1`(#wo8%1-=`Q>r!2NuwI##vL0m7U!?ooOj22my-^Z_HHxNDbbSqZg9h5nt_dpS zGrGY;3LXn%OWR*9eJy9b7y3ej_I}XfAGbl;M^^VBQf!6YF7DNkBHZjqljZLReyD7L z2mENV$9Ql)9ke({{kgy2a9A-3yf@0M4ERJ543jnMgNRLrZWtfRM+(aOKKG5`vX2`3 z2Lbj&!I{OmkW5svTiREilLH$HnIMj*}$S_DyS5zVepk}mafd7Kr*7Ev|$)DW!aYyk2zd;ikqQd&u~ zY$;ns)0&OHEO#&r>u8epVJl5)TSQAU3Xxg`!6szcMi(>|eTw7W!M>$i0t-i*Y2PHGQ!T zPwMZXyAbB8y!7Ry3;!ZK`&$=@-Y1Lefr(THXlV@Qy@~Fx{Y^5C&;EMQTwcgJ>)t;E0gyYMr)A70T-lY z?__~qZ*q1~3-+yTuFH`YA61k^`)aKkw+;ulTDgH85WIMJNSzffG@b;BCZV+TQN0)( zb?HFAJ@gNI3T+46YB#iSG_av+p+xIQ@$?=7gTYZNpb#sAe6vNvQTz8u|It2D8E_Xi zWQw+rBrYz$%874Bx+_QVd#i=Ve2eafYu?>jafn2rDc6jU_FaAzYtZ!&+XG&?k`niw zT_rL7mvCSp^j0fEY`wEWYTn74z5hYcq6D!soMLgDt zdUzYmhQF5ASE_L@R+c$il`lI+Kr0{F8s#oN8`K3G6wy+`vOD{wEEokVhDlF(42usj zDJnbN6`mE3lE{sD>1b^et$g(Gzd(Tne~J-%l7eFCGaWaLft6)pEM+tgbY+3gc_a(5 zij4jhIMRP=IJn@+>6guVw3#^*i;-5!1XswSjkjhjhVLrB?Kw3HxLB(R%bf9e-I$1Z zH;jK8#{Vxe{saB+9;0;gH=)5f@C#)^a5LdyZ~jRH7SB^lEt6o&bqRy7Az12}SJ@0j zU-MMxsgm6@*aDj5HP%sav?5Kg1+-v~;G(Y5QH^M!BR{X^=i`bOU27W6stHYKj@z3U z)VMgU%jKo|^i5VyPttnl1NK+)bo{f$q(aDaL{OA%phU8zX%}19Lb!5`Oh=|K7;)W| z>ei|tYQvUy^kuvK*qKJ!rbzvbRm`=@uIsgrUhqAA$Se(0fP)51u}0)BwouY;$-U1wKVlf5~J`g|i}SWt2=z$<92t<}+CXzZtm@_aBvI(m6) zws|rf8)IwzrPf4i`Z^-E!%pQ68*j94Gb7h{QzEf# zZJ#b5t(A5C*f-!J8R;M$<44VNWWn`~$qok^9=5QXzUE&u9U7b^4<+3NOKoPTQyYG= zL(4G!d-V*akI3$goi3ieu^8b^biw#vm!di=@H&OQ4M@CA6nm-@J6ws#I|zNs@5#>m zw)YD;7J=3DFdllNyueV$DB>h z48%CuM2~Odu_{9~F1EL`8l6U)b;lSCE_ z&yW$rt>I0!ZVO`fxegvH;R(DI=<{e{#ri?`$YqpHm9N>X^o<+_e#Cr<`=Ci>fEmh} zJfUnKhd#b4Pli|KyW?SXEDqy;82`WM_^*S968uzo$)bAtj_=@`OLQS7ac%IUDHbk* zVc2>tZP7uEMrYANWjk=r&t42bQvwhb)UyG|6QHk>rH27HLmbdip@CwuQ9V6B;VE#$ zx$`Q|#`P&X81vk*;dfqNFK*T+)p@m?pVS-Ut2M5N809-`7~b+XF2AZ@Z)P5MkRhCU zYzX4l0vDL)$BdT9fa#>xC|RqJtW|h@qp5Y2V+!BaDoU#g@rpvXk{j2F;kNpJXrQBO zTAOQeYc#bLvqXWZeL>XF*296U5Yc*tuf=mceQWCkBj+N8aFzBIrTzWzy9U_>b$SYT ztC&0bmW!`1YOhbvMMhDi%PJz>vaS^$=VRF4!N_WjzE;jD)HghR|M?;q?@6(|1$n0x zZ(Gz4{lx@|<)zzhC!d;u_Z@G9`8lWo0QkkajRQk~%JpF2y{GnnP)vQ4yRuOBbr zr)4?kJm$d?cM4)lTH$cnJZmv>r(hj<2eUM1Z{m{Rv_@G`{+7^WmSPCT3)K3qYtPtL zV=LOaf?IY}jx6@zL=hQRk1O>znnhlcu#G9!Z|(GztS-B5^gfh=tibSf&1!jXIh=Ic znQYe@aotk$%>#k$QgI}|zA9x3gRIK2g2a68;U0OPvYwZL%e#WBvhgjyf_uBVjxA{5 zYfLL^m}CaHq`ZZv%+M!f8MyChfe3Vi8&p@_!50vus}fquLyiB>q`Q$t7F zbMcv3m0Rs&>KR8XvJc)(BECXCk{|=dZ_pxr(Dolbtn<;BXQ*T&$Q)=$u92%QeVwrx z%a_SQ=zr@g8UIFg$LqId3=iXf82{gA{A25GaOH~JWbOIIj)$}Htm`5Wj6@fVci5k9 z&c{%l&6Ij@fppxd_G@ z1IQ5R!~4z#L7PW@ts=UrtW(eUaO?8>ieL0?Eza*x-(QKO$e{T)zFt)KedX8C-5?p| zuj_}%*!ga>xC=Zk?q);<#@$a0>blAFhk4v4^JVW zOwMyFuZD6N7>9Y#d~2`g<5g);<)y1&>$3#Vkd;~WE>@9}9~+g;eDUe};4#KycYznN=@*@LL-f^zy?{LL;nH{ng(;JTM?_F~0xKAY%Mly9 z^J-%Q<=_dN)kQX`>v~#^3W8x+FXtNRdt=Im=r&dC@1yC-aV_TptLGKAgnluZcw7zf z`t@UpzW3#YBMPx`r8q$!4^y^LTJC?CO@J6*Ppq?pTQWsku1w^#1O>&f(g%~WA+Td$=O~xt!Q%%b z5Z*v4^K>cRK?KoWI@~v?MxSm4k}_Fz9+16+K9n;;65CGWEwUUNmt5Jll-csXY;y{A z+AVcC+?meKZluu`r5Luo+ZMJZ#nJq7Z$_-use9jYYPVkD+zVyx*1i^2Cff>CY0&LR zf^W1vt_lhRiE?3ZS(z?bIm}h%s6%jz?)I$iHapu+%S*^i&$4swGHF(Ef&vo^?<%ZT zw{8KvsbOA~PT=U4!i*Z+L+V7(Y}&%sOXm|rY3Dwba#@RecUvIJWPt}|CyHRZeT|~t zja!d-Wpbn5mu?Esj-WcnaP#A%e;5l$U(z_yY;~FQN7k6y|^pK>BlepN2G~ zAq{CrziH_^c?6MSui$>Dcfh}T87HqJ?y4b(NTORiYz!`*xzi~nOE&y|@Iy*)tpq%R z1wEZ*K$Csj#!*sIrP~InfpiN9sFZ+ocXy2(DM(8rCEcCU-7-pQ!03i;j2tlDJ@@@Q z@AY|Ku514|<2ZkZ==mVIp%mv<>vtTv=M#jzG!<*O=6%kiU5QCCy|&r2!cCE**A(Bt zCw=BW@));F5-NhjYb^7*);~>iWyFC$?DvmH>bKe_1*;{6FAqcpW^+DAa0rO>s1R_-U%gjtWN05N>)fhU>tP?t zR|KokF|a-ra?|01bXGY2dWk88Ccb5llASnD>5NXQ0n+RGee`1_!AJ&6^FE2^7vIfk zEgWUoyXkq3(J09ojoVdZ-r%C-u1#z^rygZXO^qXmZFN3*_ranmmo(@oJ@W$xt<+MV ztC@sW_f9pfExyr}yR)~@U5(gCqbCbit#w_k1nBt-4T4jY;d0);k9;bF^N5z8wYh)* zshsZEg)Qv2o?@~s9GC-@ExQtPm%JV5LDjNvy6Ba;1NL7SYOm}>1{u=h{j((QEn-1^ zJoSj2v~b?;(o^Fj{xSAe18riZWOm?He0Xa=dx>NJAiXcvZ|b$&3X^AJDy)JBz;2LDorQ4*0K)dh|clR5Kp{EP6`MnZuhc9 z(el2AE1CX;ytOvD>x-8ZBrKw`oN=?j z=n($?^O3cSnS{AY0f?Yoesz0gc_MGfX!<&Zt4_IgO1Xpk8Ykd=W%wAzp{Tm-L5{q0 z%2{Vp(eFOCCf0U~FF5qCeHgQzKtK_G)ny~2iV*nrsIR+kI|A-Y|&4*LNc4M#H?YGi{^6LR8C zuJDxdvTy)yW?0=FVQ${ol}eoiQdv>PNDRXH)p!fgX z)}VB?3-M8baOyw&tn++KOtUQ?TUx5`*eM2CS6l*$=zwM>->B^lfAX$TJI-PG+Yma4G$tbT6U&7>C|9Zi3 zN~YJd+9wvfJZR#_WFB8yvvDqzUjJ>}QnWXP7}+0*&jYlE;TF!NrK#1`N%>^K4E?v| z$wP!j78Kc!igF!AM>=;o+7$j6McON@IQmwy&X;Pcu-nV()k&v|p3gO`l2f?<9cND;Il;}pbNLl z6o<@gX9I{fyV%vo-G(g_xX25`Z~wF0?j1IB@WYw~a5Z0+`&1k8qGM8tt!lsKS2xL0 z1P^^_PrzBT7aQY$s>9YZwT9Sy3tT4$1epkdg1WFIO8*k{YfcuVAx~L-u}yF+$&G4R z;w_@3dI`kN6Q9sWIaST_`N$yOg8vZT%l){r0*oM&lop<%wo}FAnZ++!xV1z27!r=K zH|{q(BiwqnMS(~Ef0!}PF zdRBX6xo5A0jXoBrR>{K|dWp2dM#PEqFiyQH!7kyYz}jJ(L`sTft%zgZ(%aKl`to{U zx;n@sF)Q3;sxnP&aa9hg)?<8&SAa6W_N#?IY+no58tfw96EZwhRCiR0v0fs8l-fsC z_yLw;rS+ChP_78CKJh`(yp{p215O!bE)Qau#V>Lzp|@~6hb3Fj_T;LnHV73xDy=zk zUTv-4orswx_OxbOww^N@@lHawi{mBk7<}e7jp>h;j#_&l(%g&|#ZJ~hqkl4ll_>3h zaBj^cG=KU*d@d3;ZPVomiMyWLpg|TL&$lpVxOwC%cTRInwMsacr>3yK!?@J1nA_%p zXWVv__+m|08$DbjEewXn>q78>J)4|w#|pvoG^#OTgdCe*tj)t22z+ZA02^~|m^FuO z&d!E`R1O`iFs{B(@4|;`(2VAuC#CP|z6nu{498_Z95v=eV`ruf6?)@@m{`Lz&Ekye z;<0#SyO|%<*B+DWy-(!X^pGekcjwZ3KZ6UhQZXS6sqNKye_H>QO8+(Mc)>4}SmvY5 z*cp^aU#3HVdQRqYm3+Qcz-ja=={;)l0TWRmHX^$Gg)zQ_xuhB2J(=9vzY~nFRrW96 zGT3)lAzD-%?|JjGUgiN{%U=0Y>aBMh@@HH2NAmf*BX6p=Bn=!SLbH!ic;KaM_X%yDd1NUb(i52R)rEa4~3rb zmFY%!YbS?YdKU)S)GAKEqr_x%x+(~>`N$nj_t)8_W}Pak=HRk53I(P}9;sK(*|X(k zgH+5H(X&tM=)sRp;M=#On-%i0+uE6*)n5;t3c2aLN$=#9r1-oXSHd>J5q3-mA^XS9;^9H67FhV!L!Vc`FDZ%%Qcdv zHuA~uF$k4d|7M%PrO#`Hh^8{Npu?9;2bW9iWNuE-NhadNOsxs2jI}1t_ikF!jhm_T%eravG3?K@t_A@2J-~92)V^7NgyMdSJ;OTt? z!|e3#v{O`5^a$NjNw8lawMJmh-eU2$`$$Q1`F6Sj|8oBzH+gF!hd@5+Ua+1xGpfoK zICEOkQ>m72$dLroi2qddJ7^ zX{^=Ql14DwAYWdvrtG^*!@O`c@l^(1vUHSdJ{PrO|A#?rQIi391vwB4P}^LSi7~r$ z16^D!8(n+_%foI%W4bEUX@Y#CQEsiisRw`l;5Xdt4d1KCi`+q>P%qF`IB1~+`+t+* z3OSwC^6)&L(|~)4*V9U{P?~*xS$)-R zN#n}ACERJlV!kZN1C6ib*8TbFifm$V*lUiJRs}y3ceR(F4>y4RUSU%{beGLRc2BZ$ zH$=-gQCHLBrt!F~Dd5J@A%i3NfeP4tP;?|Em#mT@3>|GDeXUDSt;jW*D(&_a41Y?y zS@`(K&bcoU0`AwjrJ2OHVl1H&`GD!tF; zJdjXcocz)#zus@T<+~%lyZY@gUT+7q43rRluBagqR`ks^#V+yUo@g%0;z?5o6STZJ zk|mhvMd*f?)o##-M}_jQq)eH<5!L4L(FFgaiayhe?*!BKyz%b9efo(s+AMehnz~DO zN%Uft?<84hJ-Va%@)o=*p&aWyxVS!IHR@*BVihm&`27wpJG)+M2jRE1go%S?b=PlW zn{L@pcejRK&e9?ecENlkQ)lsff`bw!bp5RuIC}Mc$zJSKoVrhz-P*D68cEYyF zXEukn!lG$fBce{l8l6N zr;LiCBGBS@?>Nf?&*xKH&U?@vKn8x;*X*#7v=L!|MqxhQ@^=Y9@ayv9w|=whr=)~o zbFak{@NUJI*m0T_J8JXXBXoCVdnWrGXbsw(S0;C47G(<^*0si(%2XbRu~eq$WYik$ zFY?~9ShO2{j?ivxZqMo9j<($6&)0v?!sh)G8~59G zU=tw-l`>-hohV2O@gi`e0!l5bpg?G$kIhH0;;n70U6c3rHiC+(0fwDJ6`3;0da2 zbYC$;V`7dp&0MQa0$_YY?l`M;)824^{0Jq3SpbDB_fisC#L&!!%IqwI6*4C4W>_Bd zWbk|9gUJ`QCh`0;D;#wj$8?STA#~Gy((oadyM5cV)Tbc7mQlvMt1l)cejuXk;>o}Ma5%7lX| z|JR2#|9+TT0JAKVvIzGjmVFX?jCrj`ATm~VneAz zxm1+Mv|Km!)k`v9BcYET%OG#STl?TT#w=8KAoCac?@UdBV8n+v&)^S|X> z*j52tGp;6sh=Wg<)5@w zbcfH~t?YbSL6bor{oNY9h>XoUA5;A=t8(hg6J;C?cQez!9L|QI|0EWemN=e@DEsfE zmrp{uI9~8bKYNjp6K{+~2v##(%4Am@R~Z{vaIzogR`LEBUCL_pl%h!6akhT(H@In$ zfT6V1<`VmuiY+p)hLx)MVZuqdG0;rxQ4)qI)MN{$B3xdtS`P z_0;g(0c@=0b^ZT_g;YgGn8+VDJsotZ7K0epSp-4G-Qb2 zq|+jsk;q#5I4i!4kyro^g@f%xh>Os!lOE)ym(RP)lN%DY(Fln($15CJBDT_kEL5GCo!W|zC4p#40~M#Qtfj~|HmbVJuazQ zySra>>s7MxXET9YOHASI?_T2qUgUM`wN5dw8g_h6aVap>;)dk}f4sgKeHMBpT3R87%R855#@W2*7pMyX$@7Cu?iJivEG; z&`moTpu$Lc;A5-ZccCmqB$K`Oh_;)f`jBMa5Z3nV9!7zK?1UBmmMh*xHa1mRL=J5z z{Q_I7lo0ve8zISIymg4rjK<&eKHAu)hEmxSEPOqG$?X}GU6_85h<`RF*6m%CMhmj0 zqjCx7rN4UQ;G1c(`Khe$u{;=tTZ+q)UK292w|MioeJRTw2V0rZ#aQJUYSDH#{n}Q8 znv_UCu^x+-Db*=N|?Xvu{nnOja+E(uWln!$8g40x2}`a~97rd?NH z{;Ph}em}mJ4g`M~Gn;%4ja(!gPb(U%XBfpQT&zeA;W~1J80h+H6J}CDHGH)8_okr% zIpG5_60zm&$GcJ|i;0P>=-LX8u__Q=&WEX(!9J0nZE|6~HL~ganfn_w-iXZrT}kD^ z0P#PBAE|vbhtxp~1{_xZO5j1a#h3=rY#8Xy<(ntskJ!%^0wyC2H_t(NUDo{C#LPkA zp@K3S z1WBKULuN4{0>}s0%n(aB-FwR(ytQLd(m~ARbyEhW>O63sadNs5hLd1J+{>29yk*{F zUIvG@EV*xQRR}M{iRF>-lODPS3`!-H-aea*e#UPWQv0*@Ytx^##i+V`7@mxl(Q&#~ z!pMo#Q4uW9uTrbZ?CMx>3#@tiBh_;Al_70aS?wCh@@i++RbEGS1}oTiW{8;O`253K~VG% zHyXsh33{g*;>`BfJ>X&6vkX_QZN71x0=ZJd`MFOzseNggBkmn=nAy%pR?NHBtzm?)sLp}l8tO^}i7 z`GnY3e)FR&d-Z@7mSUlg!!}X(soNMcTUwQrZ5#{1N7*to;oQU;;mLbse01Kbo{8p5 z2#EzZqw6S2V}1XiM}}hy{VU3A$8MS7K8YWB(g+#aN?IN4{0&~&hbiGgHCl$L$yoYw z1g^X5HNLggl!gN;8|I5`-lYqOS+CQJCw3RxsMu)I@JQ+zeiM z%>$k{Gj;-$Xs+B_v+X$ zW)I;poC(y^iZx5$yZF9Q%LTTEsS|k1q@$bDie4?kTUqNr--t}OBMi3n#^yf-nmJUD z?xJe>Y?g$@^SQHI`GTN*S1fdcAjkwj1f7_jxo(X;DCl56d3M{5_)t`@q>^Fft|K0r zofS^n)k4Ir)Lb~;c-F5{uYkTi%Ifk<-`l<4i7aM!vJSTXwMcS*(umaaiW~Tn*=`Pg zP9La}+^lvVZUp-)xu^+v7To&De6ohpJxBNDWUL=?>LA%aR39fVlm%Vz;hOM=ghk28 zw>uG)y_=izO6ggQ=d;h_$CU&KEXwyDayw3$UNfjJE*F*?ggo9pUV7vm@Q2W5K|*AE z#8oXzh#zN>l|s}d>hr~|LyyC-+(tx41aiL!aL5~e%)elnFEPN29u&%SAau+Sd)`-a zRP+b#E2muVheci7l@Nv}u45kQ$yPm>0r=Rqo*AYCDsYbqG;AjJ5>W~D$wx0R31(4V2g zNf-U_#4=odw4P-CwD6d>PwK|MKB$&-h(nkNs&#|cE~p|Or8h>TzIMcTW*(-}AlX{e z>Zh}9w=BrXl@Z;wVFg8$^Hrx-YIBivU1gwcp#!(y7z#^~R#w!Pzt2-o11LQe^it(E z&Bl2vt=>WWPc|8m29TArZ=k3l%aSO>T6?VgKzMa61kJCpGh=*m;xX)nGH= zA9Zv3l|=emhZ3DfhIPi{YxTVyKN`?3hQG5vLXWteYP35$Sz!m=p-8?Vl?>Y3xBn0U zea5r2$lx2AJREZww7N4Kp&h~wDd<%K%*Mt9dBrp`8BJ~%k6TIfHYe8=Dibx@}cz3pe zp9IUI1buvA*!ZaZdVqQmOlW9-w(h$0m-d(zW3 zlX7T>%0FHaqCMWr(P`bz&)$@nbov&Rsjz+ND3Q7@?a0;QAUcVG-)5RM9*Uke4VQdtQ_SlB+_=?dw=akJPkH3C>T12VN54x7 zFBTm;q=6vB$bO?PIrOn!Hl&W-b^$Z2Y}7^`9}&|5S@##kby1qn`u)~N~h;n_2 zIOHQ1mT<>7WQ_sE)ELI9EStt%Pp{q_DTIV(jwfPJX;t;lfyllLKD}ATPBBjac7?(= zKYqTmj^Vlhl+R&LQ_YYU+P+m2gBN7woboX7yikFY3$|*Ir;xh(;HhMy7(juaiD&UM z#mv#udmpqo!qQq93_#$(7~j~36kCkYD|TntvvMRgi*={r3>b8&;(vQfr74f-kAzzc z-dE0`Y>#YxyXmjG@)Za>d%}hz{O2d>K-dOy*n4;}k4|%$W zoHc=Kn{6c(Jq6u2@F;1@Wx9y*O*dleEDh?`nE;&5t zIlIfr^yR%&)M>$X;gl1c*vbx2W#zwo5gl+COO`Kx2oX{jYszT#-f16USxug=`1LN3 zD&IpWzB#~Qe-Dv21p80Sd=GHFeVLV`$_vn0rKR`R0y6m`@f0$htatG~ov8#}e-jf$ z@2%LKiZVa$@R#kpdUDM?$?0=<`dcy}U}z?*xBPAI1(V-jO#*0tyuQCqAqNKnO?V_GIds8SagvsU6|26j~r4Q>$-r5c<)Wm zTx2!Yvq3*FdVg3=He97!CEdKg1M^^{_4l?zlEm%hTIXYj^R}~QCwW@jC`Vu`g2ce8 z8p?V<$P7~Yy1WB3LICJNLigc57_k_%xL_A+v2B0fEgO~>$W4F~@|)`Wao5jzOGYX) zzyeB`Ch*@Pn`lx%AwCv2_~T0lb5$0}8?r1B0kc!xOJET#Ko5CBp#jM_;%pk!I)ECva`~L#_bNCLF=iK+eOVC zljT-C$^&C_Ml;!X__Myz|L@)6%)BAAHtcWPeA>2fR(r?bwSG3TSpmMo-?$o8zVV<| zz@bnV(*7;~nf-DnAy6O5<9MhZ1&TJht%S%anB~khDNXw*ngyJ;uFtdye#a-<^!Z{w zdO&aG2Ru(G?Obj0eFD&1s-8YO^YGt~+_;JzGfMDVp|UUE;;GPR!K;U)vRiEP?g6)_ zR(;aSxzBDiiWNvkhqQV$?(#*oXou$QlFICISIe77c3AkNa2i9y^==OThTYYsd}D=e zabA1et$;v(jm_?Q?|ybT?n#&|%tvUNlM=D9sGP4X?fb0juBItAzXNiznFzT-t?8^&o7?_#%SJKW6YS-kciKS6kTY$W;{IY@ zrBhxN&;_^*R%0+p*QcpzPX^-mL=TbMsmG$e5AN=65W?N~4Q=I2?**_n>jU4h$OoBN z3z7fZtnAX;2W(V#wh4iZm@Zz&E4n}O|Hxwhc&SOXeJt$EJ+5eGTHN=7!iq8BiAsd1 zJ%hvzEx1^)Z7^5t1$=ztx6G^Qyp|DiDA9F;_K{E(_?S_UVEyI=kd`RhojU5gWe6In zC3v@O2ViL0*SC~8OCy=QxKS?2bvSYkae}^y#8!bv+08b*#_cU|s?mWVE3jIFL6Ex7 zeHL6ZrmJ+FoB_5Jn`3%|E-uHiaa7BI!qLGOwldyd+O%$!mK=>6-Os%9ub{7HWzzAe z?x({A)47T+W&E66Cf|t?-vh(I-PcAu6U@OXPb5YB$o#MzTUdxH+B`W=L<^0aZz3VF zoi_JFd_&Ijm$)dMQ%S$)-qlxkx_#=Z&`?o>RqnW#sL34WfC!eIPu+~?Xv))1E)>~1 zm>!Mmn24;up8#h!!F^ITvzZD!aI2NX^MtbQLes`d1qhl05;<4(-dc zM@sw;z^ep$J_cH0f2~PA@np0|s)^`{BA$1pRLLdT#xK!nkf+x{>|Vqk(m;SXZWd!w zJRn-2XATG7QvHS~5jETRbhxHjumGHHFi<0aQ2`qD$4U*h9R)#OkmY>(q}Yz(Ky-8x zK=U5y5PtA{qiLPthYqxM&^0>z@>NC4?Z=HG($NM8Bh_!XoL*{seKpOAhTjS|awjnb zx!tAsUZ4K%VtT8_isVRY8HL`T70SgY(n)TD(kCD!S%ff==5uVvo!w<+MRJPxeUF_! zq(r5|!|22L5n7ds><#&>R>_t^E1mf2U0t=obDjEa!6K7nub>=7a^p^OL&0-L*{t42 zH6Skk%JXPuYpt96MYen4O^cp)wbD*RZ6WfZdi4&%v$$Cxx=V#U8945lA=zEEvEEh5 zC312;W|?1%Sd4@_$E`yzW@DJ!@ofh<*j^g~2r>0xA1+>B-E|rFy;+?E5s7JBM{FCR zB!>6LA_V6EcrTe$5{CGsCW7V-yybJ`q6EQaO{@-Q`Zv4Pa3MM9#)|bxoYDY06M6jR zKX;{|+byJ}0Mfj_SZ~#0*lR|baVtR|K#)C{ znSvG~nAUX(ic|Z@Il80T{X?GocPnr11Nt9FCmKjID=DT$C$tc&SU9F$+)agGhu`44 z%&Q)~{eZeMbB$w$J$chN?{y8?h10CgxP^U`{058PdxYK=>*!|Mf7@f;-q&@XrlswD z^7pnl(`&bsE`fqJIcryR>ShLyx?)zDmXzzL1A_}vTz1%|NoWeW6uqPkDOSOqi~0i9 zZ6hC*G`L|ZEGE2+^GdQ_;^j>@xsnC_NnL*QGk$`?=^GG!71k6btcJIylF7+wDE=ry(fhBoU z4>z8_L_Y7$eQEGQ=nyz{cael*utxmKe)Z(M2DCI1J;IAMTk_Q+ z+B=Y?5l!l&B^}!BP%H2JKY5v#m@w-6b$Y}&cY~PuTI-{6i=Iyl_VkSk`?aT!`o6r8 z@oR~D&+AKCp8p>tk*2~Ej+>Je1A)ihl;?>Cy?~|^$8`?eiy1#hJtdw8FjU+^8!NQr zoNr^Ls%c^49dkf~vkJktqMvC(sfZsvU*m~=sA-T$F3Cf}s>Tr4;s;ctG!i)qr3Md4 z@#^pGi0kT~<$Q4FWOe{eI7{|M@&+G;dP z*ebfW^VOwuh(qin2z`kq4X$f#ivzizITY~a*%)Pk6PHHWFH|hXcLehOFAI#E8Ndl1k4v)IgL4KW6vLwEz!rxr!fE!l8-|bZQ zT)$dFYFHN+S_vkJ9E{+rHiJu|a)ymlj1v$3%|qfj?%s?OunR3vQnUw;46ey^b=^;ngq_KgWon0zRcv9~0!q46 z7MMap>%)$5%65rCr&pc-A;mmT_$kXG>%$?>et~HPn6dnrYgryy{T?E-m7j zLUYXaCZYv3uoYp#W|%^kxvkapV33Iy|H>aRfa&9&Z~A-;yjzG^QZGB&=HcZY+>8nw zGVFuEn})WFT#R5(;mi3=igv^7SxcI}jS+qkKz#x>sEnSMgE--0@V;m$I^$qMemY-tednRJbd&10-pnoTgh`I@+W0G{-U$MKH zS<3B}Npw4|9$NQ`Yu&{67e}~cdkdY&)j^sVQR=9K!(&~^6YmBZq{865dona;obEoZ z#lCy~p!p8t+k}aV4~FiU_=(rABX)DeZFgQmHoS*ZvT=QSOp9^-YO{ELI$ywkK%rzk zMkRJvI&@VbH2=cI{q;~vx^zctPpeG_EiR62ByZh*1z7^~lH8uyzLv0M>(~2S`_tzh z?Qeyb-{}PjTL)fp{cS6`-1o-=wW#5(w?J5nNzU-zXxhdxi@S=FosAFP-3;aaxlvub zIYSJwoUllGABpCOv?N54EIZyMpMIgxRoVAH;QRf#oT?^y=UnL7(N!(EwkzJip5x)r z)u{?Agzeoo`X-**gnDUm<2tpM%><#neAR@f%zWTZa^#D2prV9e82sw>*0^TV$awnmx&5vPPsCE<`ef*={)oRen7 zse3^WrRxu%jEX9H`on}d)n(6?i4(LxOS|ao8w?*Upj>RPnR1M%BfO}O2v|$1mE31? zOJ9Nc&TnEs;+rhEA*rw@zSrDi$76EfJ0@@ZrU7*p1zk5%XKwU=6`C-mu20{LGf_Z( zyyp|bVt!X&nwsH}CG}sd5t?clJP7pr=zjlf?YK;~zZjL%@xN^{;JW!@MX$g)3RgFg zd|TJ7A;)y{YmQ6&J?nCz^(Vw)km)SLg(Tr1XI_^$(0T2}vWUZ@n0_d;J4EAkRO?wq zF@JD#BH6$B%vbw4bbrF- zo!)oh@NUK^YvW@3e7z?K1TGM#3HTqFJUKv}q{m~#`Ml%i5riV;gUPegTb*zbrCfhu znQHuf2=RC$e&=_6x@pxf{ibm0-S1DQ6_+0-=3J7wi#OYVml}?o<2Iy1^z`2Z&tvCq zw^>M-yxu{|$N7C7G;4dT^jND2cRT0#&%T8QW}lCs8m7rk zTbNHtw>lNzLt9uqR~P%aht+ef`5;=z3fK_eWB$6oKRn7QN51F}{S=L$cF7Z9<})k(BOV#eY=`g86J_wS z%kE}nmG7P0m!m^%$E8jTbBY^1Uu-mVMdlYqyrFvI^tW-Bwe_M$LcY!Nzw1v1b*#dT z#d95IL`^K6!F?<|F$DU)y)K#UPTmVRmHB;FqNq*=HW2y)3S6Jxs^kY_ zY16Va@P_jHi5~L{VHqlJwn8P)cFulAi;cjl_2TudKEeHrsDtWF4IDC$o4e^C>g4nF z74sldvCgnqN{0Efn65zi&UravyDY^4zqm1h>qyao7QvP?=scV!g&x|+2yGwv94A+5 zccuRfAGW#T^}`~+G%oHuqwBpPN~|b?88bOyay#R6as^^uX}bEP3SH9we?a&hX|eXT z&1(K5wE#dG_X=(e>i&GaLUE5;an_M>SLq675257rMmv5%Au@*3-=+b^xr0%_35A>1g+yQUZr1^m?^ zwk~)x4KMO0fDv@t%)02$kbipUTm+N87okBvl=)?JpXY*PT=Ig}a-y=G>6gO)gSUan z3^mi*!f5Y9ehB`Xq|i+peT}3j)h<0yIbbK$1jJcuEanMGs_~h=4%{=vEzB=D8?8+0 zdjC8>ilWoQV{Q_<{-Bag(*IWE-0Za#Bie2cw%f+_460e+rKO&&d9-`^5jlk^lE9|NBAL>e)SZuR)s` U1)H%U7UuaRtNfu#+Bo?C0Mu5ZZvX%Q literal 0 HcmV?d00001 diff --git a/src/components/UpdateModal/MegaphoneAsset.tsx b/src/components/UpdateModal/MegaphoneAsset.tsx new file mode 100644 index 00000000..6d2d6cf2 --- /dev/null +++ b/src/components/UpdateModal/MegaphoneAsset.tsx @@ -0,0 +1,376 @@ +interface MegaphoneProps { + className?: string; +} + +export default function MegaphoneAsset({ className = '' }: MegaphoneProps) { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/src/components/UpdateModal/NoticeAsset.tsx b/src/components/UpdateModal/NoticeAsset.tsx new file mode 100644 index 00000000..f9ff24a3 --- /dev/null +++ b/src/components/UpdateModal/NoticeAsset.tsx @@ -0,0 +1,21 @@ +interface NoticeAssetProps { + className?: string; +} + +export default function NoticeAsset({ className = '' }: NoticeAssetProps) { + return ( + + + + ); +} diff --git a/src/components/UpdateModal/UpdateModal.stories.tsx b/src/components/UpdateModal/UpdateModal.stories.tsx new file mode 100644 index 00000000..5fa857b5 --- /dev/null +++ b/src/components/UpdateModal/UpdateModal.stories.tsx @@ -0,0 +1,30 @@ +import { Meta, StoryObj } from '@storybook/react'; +import UpdateModal from './UpdateModal'; // 이미지 임포트는 아래와 같이 +import PatchNoteImage from '../../assets/patchNote/0001.png'; +import { PredefinedPatchNoteData } from '../../constants/patch_note'; + +const meta: Meta = { + title: 'components/UpdateModal', + component: UpdateModal, + tags: ['autodocs'], +}; + +export default meta; + +type Story = StoryObj; + +export const Default: Story = { + args: { + data: { + version: '0000', + title: '피드백 & 투표', + description: + '토론 종료 후 피드백 & 투표 기능으로\n다양한 서비스를 이용하세요!', + link: 'https://notion.so/', + image: PatchNoteImage, + mode: 'predefined', + } as PredefinedPatchNoteData, + isChecked: false, + onChecked: () => {}, + }, +}; diff --git a/src/components/UpdateModal/UpdateModal.tsx b/src/components/UpdateModal/UpdateModal.tsx new file mode 100644 index 00000000..e0169921 --- /dev/null +++ b/src/components/UpdateModal/UpdateModal.tsx @@ -0,0 +1,123 @@ +import MegaphoneAsset from './MegaphoneAsset'; +import NoticeAsset from './NoticeAsset'; +import { + ImageOnlyPatchNoteData, + isPredefinedPatchNote, + PatchNoteData, +} from '../../constants/patch_note'; + +interface UpdateModalProps { + data: PatchNoteData; + isChecked: boolean; + onChecked: (value: boolean) => void; + onClickDetailButton: () => void; +} + +export default function UpdateModal({ + data, + isChecked, + onChecked, + onClickDetailButton, +}: UpdateModalProps) { + return ( +

+ {isPredefinedPatchNote(data) ? ( + <> + {/* 메인 컨텐츠 */} +
+
+
+ +
+ +
+

+ 디베이트 타이머에 새로운 기능이 생겼어요! +

+ +
+ +
+
+
+ +
+ {data.image && ( + 업데이트 이미지 + )} +
+
+ + {/* 텍스트 컨텐츠 */} +
+ {/* 타이틀 및 내용 */} +
+

+ {data.title} +

+
+

+ {data.description} +

+
+ + {/* '일주일 간 보지 않기' 체크박스 */} + +
+ + ) : ( +
+ {/* 이미지 컨텐츠 */} + {(data as ImageOnlyPatchNoteData).image && ( + 업데이트 이미지 + )} + + {/* '일주일 간 보지 않기' 체크박스 */} + +
+ )} + + {/* 버튼 영역 */} + +
+ ); +} diff --git a/src/components/UpdateModal/UpdateModalWrapper.tsx b/src/components/UpdateModal/UpdateModalWrapper.tsx new file mode 100644 index 00000000..62bfc9fe --- /dev/null +++ b/src/components/UpdateModal/UpdateModalWrapper.tsx @@ -0,0 +1,110 @@ +import { useEffect, useRef, useState } from 'react'; +import { useModal } from '../../hooks/useModal'; +import UpdateModal from './UpdateModal'; +import { LATEST_PATCH_NOTE } from '../../constants/patch_note'; + +const STORAGE_KEY = 'update_notification_status'; +const DISMISS_DURATION_DAYS = 7; +const MILLIS_IN_A_DAY = 1000 * 3600 * 24; + +// 로컬 스토리지에 저장될 패치 노트의 데이터 타입 정의 +interface StoredStatus { + version: string; // 패치 노트 버전 + dismissedAt: string; // 일주일 간 무시하기 체크 시 기록되는 시간 +} + +export default function UpdateModalWrapper() { + // 상태 관리, 환경 변수 및 기타 변수 선언 + const [isChecked, setIsChecked] = useState(false); + const isCheckedRef = useRef(isChecked); + + // 모달 훅 사용 + const { openModal, closeModal, ModalWrapper } = useModal({ + onClose: () => { + // 모달 닫을 때 '일주일 간 보지 않기'가 체크되어 있으면, 현재 시간과 패치 노트 버전을 로컬 저장소에 기록 + if (isCheckedRef.current) { + const status: StoredStatus = { + version: LATEST_PATCH_NOTE.version, + dismissedAt: new Date().toISOString(), + }; + localStorage.setItem(STORAGE_KEY, JSON.stringify(status)); + } + }, + }); + + const handleCheckedChange = (checked: boolean) => { + setIsChecked(checked); + isCheckedRef.current = checked; + }; + + const handleClickDetailButton = () => { + const link = LATEST_PATCH_NOTE.link; + + if (link) { + window.open(link, '_blank', 'noopener,noreferrer'); + } else { + alert('패치 노트 링크를 읽는 중 오류가 발생했습니다.'); + } + + closeModal(); + }; + + // 모달이 열리는 조건 확인 + useEffect(() => { + // 로컬 저장소에 저장된 날짜가 있다면, 검증을 거쳐 안전히 불러오기 + const rawData = localStorage.getItem(STORAGE_KEY); + + // 데이터가 없는 경우(= 처음 접속한 경우), 모달 표시 + if (!rawData) { + openModal(); + return; + } + + try { + // 값 불러오기 + const status: StoredStatus = JSON.parse(rawData); + const dismissDate = new Date(status.dismissedAt); + + // 값 검증 실패 시, 모달 표시 + if (!status.version || isNaN(dismissDate.getTime())) { + openModal(); + return; + } + + // 패치 노트 버전이 다를 시, 모달 표시 + if (status.version !== LATEST_PATCH_NOTE.version) { + openModal(); + return; + } + + // 버전이 동일하다면, 7일이 지났는지 확인 + const now = new Date(); + const timeDiff = now.getTime() - dismissDate.getTime(); + const daysDiff = Math.floor(timeDiff / MILLIS_IN_A_DAY); + + if (daysDiff >= DISMISS_DURATION_DAYS) { + openModal(); + return; + } + } catch { + // 기타 오류나 예외 발생 시, 모달 표시 + openModal(); + return; + } + + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); // 페이지 열릴 때 최초 1회만 실행되도록 의존성 배열을 비웠음 + + return ( + <> + + + + + ); +} diff --git a/src/constants/patch_note.ts b/src/constants/patch_note.ts new file mode 100644 index 00000000..e9339237 --- /dev/null +++ b/src/constants/patch_note.ts @@ -0,0 +1,53 @@ +// 이미지 임포트는 아래와 같이 +import PatchNoteImage from '../assets/patchNote/0001.png'; + +// 기본적인 패치 노트 인터페이스 +interface BasePatchNoteData { + version: string; // 로컬 스토리지 키 관리를 위한 버전 (이 버전을 바꾸면 사용자의 '다시 보지 않기'가 초기화됨) + link: string; + image: string; +} + +// 사전 정의된 패치 노트 인터페이스 +export interface PredefinedPatchNoteData extends BasePatchNoteData { + mode: 'predefined'; + title: string; + description: string; +} + +// 이미지만 존재하는 패치 노트 인터페이스 +export interface ImageOnlyPatchNoteData extends BasePatchNoteData { + mode: 'image-only'; +} + +// 패치 노트 데이터 타입 (두 가지 인터페이스의 유니언 타입) +export type PatchNoteData = PredefinedPatchNoteData | ImageOnlyPatchNoteData; + +// PatchNoteData 타입이 PredefinedPatchNoteData인지 ImagePatchNoteData인지 구별하는 함수 +export function isPredefinedPatchNote( + data: PatchNoteData, +): data is PredefinedPatchNoteData { + // 'mode'가 'predefined'인지 확인 + return data.mode === 'predefined'; +} + +// 현재 활성화된 업데이트 데이터 (이 부분만 수정해서 배포하면 됨) +export const LATEST_PATCH_NOTE: PredefinedPatchNoteData = { + mode: 'predefined', + version: '0001', + title: '피드백 & 투표', + description: + '토론 종료 후 피드백 & 투표 기능으로 다양한 서비스를 이용하세요!', + image: PatchNoteImage, + link: 'https://bustling-bathtub-b3a.notion.site/2f41550c60cf80f69227e3145f6e19cc?pvs=143', +}; + +// ImageOnlyPatchNoteData의 예시 +/* +export const TEST_PATCH_NOTE: ImageOnlyPatchNoteData = { + mode: 'image-only', + version: '0001', + image: PatchNoteImage, + link: 'https://bustling-bathtub-b3a.notion.site/2f41550c60cf80f69227e3145f6e19cc?pvs=143', +}; +*/ diff --git a/src/routes/routes.tsx b/src/routes/routes.tsx index e19ae4ee..c8e6d17a 100644 --- a/src/routes/routes.tsx +++ b/src/routes/routes.tsx @@ -18,6 +18,7 @@ import VoteParticipationPage from '../page/VoteParticipationPage/VoteParticipati import VoteCompletePage from '../page/VoteCompletePage/VoteCompletePage'; import DebateVoteResultPage from '../page/DebateVoteResultPage/DebateVoteResultPage'; import LanguageWrapper from './LanguageWrapper'; +import UpdateModalWrapper from '../components/UpdateModal/UpdateModalWrapper'; const appRoutes = [ { @@ -108,6 +109,7 @@ const router = createBrowserRouter([ <> + ), children: [ From c0255d3207d578821af8a8bd4633660d37629e1e Mon Sep 17 00:00:00 2001 From: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com> Date: Mon, 23 Feb 2026 19:00:29 +0900 Subject: [PATCH 4/8] =?UTF-8?q?[DESIGN]=20=EC=83=88=20=ED=8C=8C=EB=B9=84?= =?UTF-8?q?=EC=BD=98=20=EB=8F=84=EC=9E=85=20(#420)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: 파비콘 파일 추가 * chore: Android 및 Chrome 대응을 위한 manifest.json 추가 * design: 새 파비콘 반영 * chore: 사용하지 않는 로고 삭제 * fix: 잘못된 파일 이름 정정 --- index.html | 7 +++++-- public/debate_logo.jpg | Bin 71929 -> 0 bytes public/favicons/favicon.ico | Bin 0 -> 5601 bytes public/favicons/favicon.svg | 20 ++++++++++++++++++++ public/favicons/favicon192.png | Bin 0 -> 4007 bytes public/favicons/favicon512.png | Bin 0 -> 11637 bytes public/manifest.json | 27 +++++++++++++++++++++++++++ 7 files changed, 52 insertions(+), 2 deletions(-) delete mode 100644 public/debate_logo.jpg create mode 100644 public/favicons/favicon.ico create mode 100644 public/favicons/favicon.svg create mode 100644 public/favicons/favicon192.png create mode 100644 public/favicons/favicon512.png create mode 100644 public/manifest.json diff --git a/index.html b/index.html index c9b6706c..076433ca 100644 --- a/index.html +++ b/index.html @@ -2,7 +2,10 @@ - + + + + - + Debate Timer diff --git a/public/debate_logo.jpg b/public/debate_logo.jpg deleted file mode 100644 index c2954e349bd9ce109c9caa884deb41291fe9258b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71929 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 W|Hi-l|3Ckq=L7wJxmP@Y`u`V--$Vca diff --git a/public/favicons/favicon.ico b/public/favicons/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..91acaeba8c45098cf8dfd44e6e2e4a8558e177ad GIT binary patch literal 5601 zcmcI|i9b|t^#7eP!`L!}$~u-pC|U?%(ug)hMV3U7tq2i)G@}pMmncNCq>*f88ySp` z?E6l3*^RZyGG_bU>G%5+zTZ2q`?}A4&Uw!EKF_&l9sq!VKlTLyP(Zr~0EmL)2s0BS zejYI%aL9kz7-P<+vTp<@_^|cCW~~1ptxI%a{u{pN+1i+xQL+zN>R3 z-nOLmz3*?W7DVsd5iEF8cy)PA-W*>1~p-ihcTM@G7m<`=MsImwrA2xREs$Vi~PKU7ZaEFpc3(jBNQI#jm-bNJ*mT z(dC*4dyobrYPLKfBMgF+=7>tT2s_V*L)>}uUjCN@2orz?02~_v0DuAj3;+-SfCT>6 z35hMjGNJ#Fe0g9<-cQP^mLf7cPbIBVX|Y(Z#txDVD~2|4wVU*cVd?zsTvh|qj=K*H z1e-H(#$!a;HCkj`#ct!k<8SFt?yPHLsj9N7#oct`8cF@(i$~O$+$Y48#4#29?c%)s zFvl0xd!+fBShD*7a?=uuJ*WtOyO6>@5F($Nl zrL~}IjP2hB#eR~NWGVOU&CAdV7yvO{?=1Ib zoM*bQzE(O$Vm~&@_r*%Kpbx#-v2CcbyS~OK28o11(SVXj-JIEl2W7)1a$=a#$%7WV zZ_+h9HZ3?sMFjz)#0iUadeY5IbbdWf#HB(f@r@Ahjwvhyii^f0)SwS;kHzMNQv_goPRHY zF@UnC)1ly^?1Q+9Z!)iA;~FJuB)L%l4Ecy$C}i)Jr5G$h;u1(B+DdB^nff*y<@!fpQKW-D%yd$#s^@q&Nj=Vz+@2TY}NyCQPdRvEl zqJ1Ny`Kz?NZ(cTdY6`j+F9cBx)4UpQ6zC9wisk3voK+xhv>Dy+8Y|NNlFhBq6 zpaJB6Lz%U^!dF3W<#FvP+RsYbAD!Gz&-Tk#u2bU3{pZ%C?<}4$n zHN+Ha+AeXh=8Ja@)bJC=6z^HA9N-0G9nW&fT+w?y*|vGKr$qDnBLoD5NljBwg4kb^ zn>l87)w|W0^Y7e4?wjL}r!4POLe=ie#uWcW^MpOrKl~3&1;Vg3zj>N%0rVP|hA@kg zQ53Tikr&XSVDJ~u6BbYfsqL_6gZJEJwQo}!(J&mqBL{RA=upPgx&@bX|22AS-1zWc zaD&Xqn^iOo&hQq+@K^mX`-^vgr0Iz#XL)S15_(2|`lmqI7P7h>zo#tdhxk9vB%BiI z2Q#q@IHiQdG)XEYF{|qQI073aSWh;I5CqB?A|K`AG(~yd=Xx&3d*AXuLkQkM2i!bX zE|9&()BW_+3?1b{YzbD>>)aQ2$UH&bD4fGhQrd=kSF#L-L>oiBBpY9~OG;l?>Txyd zD#aeCj$AWWzfPu7tJguWX7EznG$%Fm+5tZPa#-1co{cz! z92jYT$kLKMYxPt6BiB!puk81F&kS@M<{#iHMX1T*XBI(MRic5MnNROdFP3?MwJ`X0 z$)NB|bA8)^fh!l-)E43C5rNg}(g0DP{?kmM_@3I7*{EQS?HRK(Cv&P#m%^H|l*9j;;-EP?kBhx3tC5Zcj;#x-TmU!d6trbem(^rRzh!rt8EtM) z(9hBKOSSS@`R;{>{E*Zb4MdHEpkPQxDO_wqpmMjz$_4?8w7T-`?X7vciu>j866Cp+ z?2-uOL3Vy&k7W)`k-GfWgG%>bUTJrCm`99gmH)XFR(hmo@9GeMtTW(2MZjXmQGIsW zlx{I`A)kE`N7aP$J7SE&VaSM!$^cXbfwF?gzs3!XkPA}{`>w>LROQxFqfKg1>)u^v z<}W!q>oLFuUQo;zjR-!CF8b*(>&5{+Te|&CyRv~@;WmRzT0zl80FjA=ZiWwyh(FGt zE*=;d>w4-BAr+LKt1p0_3#6@1n%?k$4{_Qk9fss!fK)k@m`2=A7rpd(+uDEw1B!J> zY`=KblFEw_P$4#K5LoLiRbHY{qpDSM4L1li=*O&R_S~PYpP^lL8Dlrd`|!O!=Pqf7 zA$k0cfUP9Df74v{rR$312r03M6eI1vv>PnmS7O4T-zK1wkJn{?*LwJb zy^p2jTKRbL+TlR-<-p^Zru|aCW1JHPQ;h;Aj&hqmoH}q3xXHqC1o&lTt&POT@tyhC zjOG5r#uBpo$3)%8lep>eGU{B>F6FuE?Ne!nEvrM+pN+YYR2zF%$7)|X?+5NPU?Fw| zt3jkOFe`!WSz|3u+pH6aCXXq1JX`6LXKGjdM2>ZCEcR6iTsw)YQh4aUls66iT5^8d zhrP-SSVwGW=(jCCXe2fdZ+TA6CdM5bJXRguLmi0f&)^yOY#@gO8Ig7WOcqOi6DKTs zok@R4eXLpd8JUOeD%QQG8LGwnsCEKr2>SFHuJ$6NlDb<#5%Dr9487*tRm_V$!F8|o z&qntrj;TYJG*D19(5Q+lm=n9+aA)MGH`YIRK|%tnrj&8(6w$E5jjam(IML^ev{gz# zxwG6#_RPB}YTtuY_pjIkTJXQ+%+~VvH+}K|g{te6OXjmy>}N{({296$Mm_xj0e;i~ z$lOif*W+KE&Gg#-d7+fi!pnhM3DiN^_g1h~gTM4^fNJsL&eIh{;c$YhLr34Ogi`US z361FrTm{4)6oEPgaY?#6>qqKb`tobRyGAw>gHrvDckKs-3)cW98!6PBX^DiFInF*W z+G4}r@T?x-V1Sh$2Z%z>o_$uPuUY&g^FqgKafu}jG4Du!Peo#e&o>yOu?QQOcgm|kPkI{H3w(RO<`g8p#(|@_} zLau+MTQz=7S6$UJ@=W#W3Z3dhdlyPe7}i(FvgLR7)t#F@wa$qFWOz`-uZxaxAIAFy zuagF19oRr04zKUveZ+u(;`MTH73AvxH50P0RhOl2!zVd z9s;=1pg*A=+n)x&*n&p%9>JNJK-~JX6@u^bz5>H7_(G$-p=_1knYq!HN(}k@|9YPQ z1z@?{Ije(JUd~in>Slu`%fm`Mb?>`&Vao12OAuQq2IeRNr8$PhQwO~+VRd0S{tBQ$ zU{_H$b5=I!>OmIwdlXTSzS+WKhUR#wPBH2yLd zlM062Og;*mR$s~GRUPx5@)Y2>4uF}M8Lk&6A`2ENw?D%rZUOmWU|WYi5AEq?O?q`P z<1}^E-@ROn1LqtTnSq-MWxZ2;L>=C~&7W+6BfX@BtYzNU!tVWIxOvULZNh?0jIlC5 zeApJA`SuzFj7my(mbB|XN8gv&|D0j9D)5-e!$G6V9?^c9X;%(e-v7a}0lCmXvgE$> z_ud*3%BG#n>@c{ZCjh!D>esu`b)jkreX}Eh5`Mw(GV3-+QQV<(*}Lt7*bCugTw!}-r3Gh#_*?8bRz(9PwHb( zlS0EAyAAXEpD3qa_ujpHOI+M|zD*wrI>_m8Q&a-bn!2ZDNCEmHCONfXFNi$=f=1ZuW>VfS|LOsP%x z4RsOn$8|aa#R;htqx(nkmG>+wXtM;zs2kz66glw!#@7+aUlGUSu=v-kk#ye|Fk}=^ zB*zspTc6a5;Tw_!VG>rCMX1!(fE(QjI2_I9o7-w842Z zAeEU9Kkw-Aks+(n_H!3ioYd)0 z{|`K4=!yem@50_RCC}!qoE}xiZ(p}>(kZbB0{61*d3fdQk8_t8wQl~C|Ao=nHr4Vesn2+ur%b4_EBU*eB# zyHpkrMjzQ0tQ&`at^X8?w**pwvbL%I5lK0!;O2b7%Hu_RZ?OAH$sRV#HI4bB{k`NF-G(r0+qWYwe>CL z1zhVb)XG`zy+8E*)Gn?39ex5lV%V|?TwRpIRog~6k!-zpu;z-mXaN?D41G5iM|E%M zs$DBS=CcuSr*G@XmLPgk@k#T=iR6>lp*@4Fs@ydf?VID2{oqSu%Pf_JISu<%^0arw zZzLLWjvCTp?0*Fo|3s5kHTF-G+Z*W}-UK@=VTK{4em0H4t!o)c3{jJY2zwpR)Pihx zNAjg#4+eZ6&2qJ-W8qg?2ZQ!|rTqJ2eVKz38Xj)a--_M;CHej1s2;Z|1rd&dmAQ3o zaT!(#?D3U4x>(n`bwRC;_t8h|oqo9{W!=@t))JAF{@Kg8C4NJ9IWpc&tVC39i$ZOb z($1iOFURH3XQ zXXJ7@r3MZBA0K2vr!V~fb1`HhAT@shXi&x(JwpOF9B%^R>}OvA)XH^v#sR=I8y&|f zs~9~y4D@bQ@=WI^NrH!NpIrzAW)Q`8)x~FuK=0;4r+jLe&={_wxB56C! z-b56xPl(>?0nF7Gv3k$vG6tw8Wg+w8Nu8Ht>ktBhsFuQ7%>+29*tUdXDi?h6ScCyt zm8deG1d&ofKUvsu4=i@xb4`d_r;u+?z0uRnBeC?on9ZV2TXxz5E}{ C6$jD) literal 0 HcmV?d00001 diff --git a/public/favicons/favicon.svg b/public/favicons/favicon.svg new file mode 100644 index 00000000..6304d5ff --- /dev/null +++ b/public/favicons/favicon.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/public/favicons/favicon192.png b/public/favicons/favicon192.png new file mode 100644 index 0000000000000000000000000000000000000000..c8f91b5fa234c42d0185af91001b415ea39f37ca GIT binary patch literal 4007 zcmcIn`9GB1`yb0#MwZl2maI_?vP?~y#tcS-8e|_mw#b$y`^Y+>tl1((_AH@93x*n% zj4cd`C&rR6#K=-v#?1Hb`QiH?e15pjd0qGQI@f)j^E&VM`#Q;17C2Fe365>qR1 zutDJcP@FmMCFuQ})1{dBA%ROq7>Uo1FOqD^eE3SUFd3Mith(JapBG_hCf1j~xnZ2Llpp=5s z6Q0u4ZpeNuI+qZuM^31Jc5S35rI7c^i%#KoF<#^DFuy(U`3;!iaTd!~KnGgoi z9N+0_DABcpaleanyLi4%nBQq)1?$=eR_M2q!^q9=~`?#d` zwMr6xgBs@ryRsuoLiuc8wY>PGV^0o(j$nrW?TVAlw6j#~rGi(e($J4lU64%Zt16X^ zXNLBu!+TynJ9vrRA5C07f{Nj0fqVC8CUoldYZ0aDFz>5(po+aU<5}CIDz!!A-xqWV z{4nyZ6gAJu&s{wP)9)XJk+-WUdYN+aPqUy_m4V*2Cz(DsWLH(G%0DLt4;f1C}t|9tTC^u3wW4slbfiUBunvPNPf z{lVJz9HsviW%h~cy9Vl?9tRN?ENx!S@#{``2?~s(7-}6kuT3Ga&Vl^m;Zr)p>+!HUO z>L3EeTYZL{3NH1tfD}JJw$tw%uo+5H4D`R8)BV7lN9{!Qov#(N(>zGorG8VI)1%U8 z=9kN5ci&3(y*4qU1PDbmwF`2|Z+}5I@7B`aSQ^Jrk$Qxh1*7qg#C%hGGW@WC&~9uJ zvE>Nkm&Cr6U~knskJfjs=*-S!53s3<=*(a*^GgA+(1dzCTg@T$rR#j<--w=OJI9-T zy~&6hMjD}h5h*L!;eWxK6aVfFbDY#($_>D=AvIZFM2Y#wfcvq3p6)yq*B={(WBctD zVyPGp@G)3Q*g4_CfmS|_E!=QJodMUW16?&m7A3Iq7-O=&`cro$KR~SRABtNlpB*yp@Cwb~i1DDAUB-N;)HyV-|4!NscYyj}|K@2|PW8QiIV`BpY#lnSmhV)jCjxb(0(+NIGcgQ)X=_Zf|M(@V@1s z;W4uhGKlqlh!sQ+eOqH!0A9$a`6F|f19xvd0n1NV6iay5xdxlp&7rTZD2?4IR;_m9vaHnH!cYVdigwobjAZ6(TNr7$a-y>1~T(V{cVlMJ}asSQR442F3k7aq85_n;-ha}j0r?{a#F zMI@s2Qd`Z}^4UDe_YfVV>R29Fh%dd|quWI|YjpZsg6$DQo3Gb|!-a zm0$H{nz;UM9UW+AG40HYYn&JzvKg@luAb;CA770x6`#m5-Ei`pd_|N|(A;vBwbk#% zw>9uyOnmPivirsZ9q8LC^i?ZlSTf5;@96=}bF%BsAnqR{8iA*>ciJU{=9<=m%PdSx{vyT?HXxSGe%G&4Sh}x01ynO_b><}k5`hvG( zCO$SH9vwJrdQ~rIo|I|Qgp=Ou+bEf1SMRGWN=jEa%VFB``fxNo|J|c6uDmdaUbm|% z-@9}CH^rjG{a=-#AtnpcRI0IFx@}M z=9pNsS)1fb%S@=EmJ^mViEfd$@w3Fuy9$1;YE~)lC6z`N8#PS|eMp?3>)hz`@R;KF zwrx;gaDLHG_EmX zUnP2X!7;k!PapmI0GT#s946`pe&k`Y_fviegwPPBq*|nh|66oi8YN^x97Yz;eZlZ# zuNV5z4lw6y2h(XZm!Lr9x0W3c)Kq+$8~CR?B$XcW;}gB{#}z6P9@8T8-{EaO=iSn7 zrr|r)sj+>dC)GRtAR0;+XwOv~dCm(0=0hspKOr^S% zSZN{mTjf1vb*C%)`Q)$V)(P5!6kaB=BEpT3h-Pd#H*l^g zh09f?Qgl>?;V895<(>nIhW~cT*_GcS4%%K-PBofpJ1o`)`uNsWVR(iq^6Yw($?VYs zTT>5}rsmWpP5;y0DD*ZX>byJV&!H^rC3{sNg`jS{R`p!n9okE=Tz@c?&aTeFOG2z#rPWPk_uWj$PI zxzv^t9VYH}?qOgJR~-{Qeke5cP(~f-u#%>9^QGlYrY!M$AyiT1giM)ALDWX{>37F~ zpyE?$lgsKm@Cng9;_gUB&4h>?}8RzFYbG>^kp=P%#nNiyXv8wcZmsc`BX1`eE>mZEah3UXB z`e)~K(W~ZZm8+VEOecqnXMxO>dy)V&iA#5nY&jsz4+1~Wlxv(80JNNygx`a z_^L8YAyGfiII|5Uy1D1gR_M?X1J*ooj#yrPUX{5$TC}C%R=h)Me-{e~MI*23!|x@W zKIWm3+*n!pv{A~DpjWIu{!1@s8?f?mfy(w|Re(V&asf0Rbv3rXfxVBCK#ihfI5&nu z_dKs8hK75|df;u3BRaF?;8AkEj-sKxWvOUGT$07u&v#5VFDb7zq491*l%Ih#Vf#$u zri%}if61X@_ZyD>=WStrD)$V4o|Qc1s%R)co>`k;x$KSsLkkcLGa+NIvXTA5wp2Bu zscg3>Y}ocWZ-<6cO(ywhPlfITR323H^F|cy3OLDT#n-BJ1V0Ru!!~hmZoa)?PT=`A z68^g2ah}wm{2yaLe^u@3KswovpN>A%5G_|J0>}hsO@l~O<%5aY1~TU}kgc&xe|s54 zEy>5+hAOf0)*}hVi;fF=N9@VXwy$s(gp7V*K1)=T3&8aPZJd^G1b@WV zsm)K9dzQRN8usKfBYlY}UI=_qlsaWrmiZffVZ{B*a5qFka7taT=wgF3V;4^Ob)LEX z5b5+~=rZ{VwLtYgJm&q~?9wrjRW6FM4N#h~&;~25G4Crcvt0{eURfd|W8eD3b=%_Q ztZ>N2E9S1O%^%4N$17fgYgbE@D>= z!dBu>ND`g6mdZg-kn{(Q<>%Ck!)J8&!$A^;6%FCwvH?o)-Q%#HV7Qc)v?0&;(awW( zye!eW*)rjw3N6h{&yHfUNz@14k?F4NX7CxUs8DB>TxcH5A47;Aj5|-&Ofv&#NiZeD pQTu*|2sCHIp?oLXo9W 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 literal 0 HcmV?d00001 diff --git a/public/manifest.json b/public/manifest.json new file mode 100644 index 00000000..429a772a --- /dev/null +++ b/public/manifest.json @@ -0,0 +1,27 @@ +{ + "short_name": "디베이트 타이머", + "name": "디베이트 타이머 - Debate Timer", + "icons": [ + { + "src": "/favicons/favicon.ico", + "type": "image/x-icon", + "sizes": "64x64 32x32 24x24 16x16" + }, + { + "src": "/favicons/favicon192.png", + "type": "image/png", + "sizes": "192x192", + "purpose": "any maskable" + }, + { + "src": "/favicons/favicon512.png", + "type": "image/png", + "sizes": "512x512", + "purpose": "any maskable" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#ffffff", + "background_color": "#FECD4C" +} From 39a484c7daa6596bc0bc643b6aedad021a555eb4 Mon Sep 17 00:00:00 2001 From: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com> Date: Tue, 24 Feb 2026 22:35:47 +0900 Subject: [PATCH 5/8] =?UTF-8?q?[DESIGN]=20=EC=8B=A0=20=EA=B8=B0=EB=8A=A5?= =?UTF-8?q?=20=ED=99=8D=EB=B3=B4=20=EB=AA=A8=EB=8B=AC=20=EC=82=AC=EC=9D=B4?= =?UTF-8?q?=EC=A6=88=20=EB=B3=80=EA=B2=BD=20(#424)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * design: 메인 컨테이너 크기 변경 * design: 내부 텍스트 및 컨텐츠 크기 변경 * design: 체크박스 크기 변경 * design: 추가 요구사항 반영 --- src/components/UpdateModal/UpdateModal.tsx | 28 ++++++++++++---------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/components/UpdateModal/UpdateModal.tsx b/src/components/UpdateModal/UpdateModal.tsx index e0169921..9179ea3b 100644 --- a/src/components/UpdateModal/UpdateModal.tsx +++ b/src/components/UpdateModal/UpdateModal.tsx @@ -20,18 +20,18 @@ export default function UpdateModal({ onClickDetailButton, }: UpdateModalProps) { return ( -
+
{isPredefinedPatchNote(data) ? ( <> {/* 메인 컨텐츠 */}
-
-
- +
+
+
-
-

+

+

디베이트 타이머에 새로운 기능이 생겼어요!

@@ -56,11 +56,11 @@ export default function UpdateModal({
{/* 타이틀 및 내용 */}
-

+

{data.title}

-

+

{data.description}

@@ -73,11 +73,13 @@ export default function UpdateModal({ onChecked(e.target.checked)} /> -

일주일 간 보지 않기

+

+ 일주일 간 보지 않기 +

@@ -100,11 +102,13 @@ export default function UpdateModal({ onChecked(e.target.checked)} /> -

일주일 간 보지 않기

+

+ 일주일 간 보지 않기 +

)} From d25b2d5a417362bd04ad8128fb70f03e3d83297f Mon Sep 17 00:00:00 2001 From: SANGHUN OH <121424793+unifolio0@users.noreply.github.com> Date: Wed, 25 Feb 2026 14:00:21 +0900 Subject: [PATCH 6/8] =?UTF-8?q?[CHORE]=20=ED=94=84=EB=A6=AC=EB=B7=B0=20?= =?UTF-8?q?=EB=B0=B0=ED=8F=AC=20(#422)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: 프리뷰 배포 기능 * chore: 프리뷰에서 언어 변환이 적용되도록 수정 * chore: state 검증 추가 * chore: 클라우드 프론트 캐시 초기화 추가 --- .github/workflows/cleanup-preview.yml | 42 +++++++ .github/workflows/deploy-preview.yml | 123 +++++++++++++++++++++ src/constants/debate_template.ts | 4 +- src/i18n.ts | 2 +- src/page/DebateVotePage/DebateVotePage.tsx | 4 +- src/routes/routes.tsx | 47 ++++---- src/util/arrayEncoding.ts | 4 +- src/util/googleAuth.ts | 8 +- src/vite-env.d.ts | 1 + vite.config.ts | 1 + 10 files changed, 210 insertions(+), 26 deletions(-) create mode 100644 .github/workflows/cleanup-preview.yml create mode 100644 .github/workflows/deploy-preview.yml diff --git a/.github/workflows/cleanup-preview.yml b/.github/workflows/cleanup-preview.yml new file mode 100644 index 00000000..c8b620d2 --- /dev/null +++ b/.github/workflows/cleanup-preview.yml @@ -0,0 +1,42 @@ +name: Cleanup-Preview + +on: + pull_request: + types: [closed] + branches: ['develop'] + +jobs: + cleanup: + runs-on: ubuntu-latest + environment: PREVIEW_ENV + permissions: + pull-requests: write + + steps: + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ secrets.AWS_PREVIEW_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_PREVIEW_SECRET_ACCESS_KEY }} + aws-region: ap-northeast-2 + + - name: Delete Preview from S3 + run: | + aws s3 rm s3://${{ secrets.AWS_PREVIEW_BUCKET_NAME }}/pr-${{ github.event.pull_request.number }}/ --recursive + + - name: Invalidate CloudFront Cache + run: | + aws cloudfront create-invalidation \ + --distribution-id ${{ secrets.AWS_PREVIEW_CLOUDFRONT_ID }} \ + --paths "/pr-${{ github.event.pull_request.number }}/*" + + - name: Comment Cleanup Notice + uses: actions/github-script@v7 + with: + script: | + await github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.payload.pull_request.number, + body: '🧹 Preview 배포가 정리되었습니다.' + }); diff --git a/.github/workflows/deploy-preview.yml b/.github/workflows/deploy-preview.yml new file mode 100644 index 00000000..5d03441d --- /dev/null +++ b/.github/workflows/deploy-preview.yml @@ -0,0 +1,123 @@ +name: Deploy-Preview + +on: + pull_request: + types: [opened, synchronize, reopened] + branches: ['develop'] + +concurrency: + group: preview-${{ github.event.pull_request.number }} + cancel-in-progress: true + +jobs: + deploy-preview: + runs-on: ubuntu-latest + environment: PREVIEW_ENV + permissions: + pull-requests: write + contents: read + + steps: + - name: Setup NodeJS + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Checkout Code + uses: actions/checkout@v4 + + - name: Setup .env + run: | + echo "${{ vars.ENV }}" > .env + echo "${{ secrets.ENV }}" >> .env + echo "VITE_BASE_PATH=/pr-${{ github.event.pull_request.number }}" >> .env + + - name: Install Dependencies + run: npm ci + + - name: Build Preview + run: npm run build + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ secrets.AWS_PREVIEW_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_PREVIEW_SECRET_ACCESS_KEY }} + aws-region: ap-northeast-2 + + - name: Deploy to S3 Preview Bucket + run: | + aws s3 sync ./dist s3://${{ secrets.AWS_PREVIEW_BUCKET_NAME }}/pr-${{ github.event.pull_request.number }}/ --delete + + - name: Deploy OAuth Redirect Handler + run: | + cat > /tmp/oauth-handler.html << 'OAUTH_EOF' + + + Redirecting... + + + + + OAUTH_EOF + aws s3 cp /tmp/oauth-handler.html s3://${{ secrets.AWS_PREVIEW_BUCKET_NAME }}/oauth --content-type "text/html" + + - name: Invalidate CloudFront Cache + run: | + aws cloudfront create-invalidation \ + --distribution-id ${{ secrets.AWS_PREVIEW_CLOUDFRONT_ID }} \ + --paths "/pr-${{ github.event.pull_request.number }}/*" "/oauth" + + - name: Comment Preview URL on PR + uses: actions/github-script@v7 + with: + script: | + const prNumber = context.payload.pull_request.number; + const url = `https://preview.debate-timer.com/pr-${prNumber}/`; + + const body = `## 🚀 Preview 배포 완료! + + | 환경 | URL | + |-----|-----| + | Preview | [열기](${url}) | + | API | Dev 환경 | + + > PR이 닫히면 자동으로 정리됩니다.`; + + const { data: comments } = await github.rest.issues.listComments({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: prNumber, + }); + + const existing = comments.find(c => + c.user.login === 'github-actions[bot]' && + c.body.includes('Preview 배포 완료') + ); + + if (existing) { + await github.rest.issues.updateComment({ + owner: context.repo.owner, + repo: context.repo.repo, + comment_id: existing.id, + body + }); + } else { + await github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: prNumber, + body + }); + } diff --git a/src/constants/debate_template.ts b/src/constants/debate_template.ts index bac13ddf..961c0bce 100644 --- a/src/constants/debate_template.ts +++ b/src/constants/debate_template.ts @@ -16,7 +16,9 @@ import { DebateTemplate } from '../type/type'; function createTableShareUrl(encodeData: string): string { const baseUrl = import.meta.env.VITE_SHARE_BASE_URL || window.location.origin; const normalizedBaseUrl = baseUrl.replace(/\/+$/, ''); - return `${normalizedBaseUrl}/share?data=${encodeData}`; + const basePath = import.meta.env.VITE_BASE_PATH; + const pathPrefix = basePath && basePath !== '/' ? basePath : ''; + return `${normalizedBaseUrl}${pathPrefix}/share?data=${encodeData}`; } interface DebateTemplateList { ONE: DebateTemplate[]; diff --git a/src/i18n.ts b/src/i18n.ts index a7da32f7..a11585d5 100644 --- a/src/i18n.ts +++ b/src/i18n.ts @@ -19,7 +19,7 @@ i18n // 번역 파일을 불러올 위치 backend: { - loadPath: '/locales/{{lng}}/translation.json', + loadPath: `${import.meta.env.VITE_BASE_PATH || ''}/locales/{{lng}}/translation.json`, }, // React와 함께 사용할 때의 옵션 diff --git a/src/page/DebateVotePage/DebateVotePage.tsx b/src/page/DebateVotePage/DebateVotePage.tsx index 4f7924da..d1deff7f 100644 --- a/src/page/DebateVotePage/DebateVotePage.tsx +++ b/src/page/DebateVotePage/DebateVotePage.tsx @@ -33,7 +33,9 @@ export default function DebateVotePage() { const isArgsValid = isPollIdValid && isTableIdValid; const voteUrl = useMemo(() => { - return `${baseUrl}/vote/${pollId}`; + const basePath = import.meta.env.VITE_BASE_PATH; + const pathPrefix = basePath && basePath !== '/' ? basePath : ''; + return `${baseUrl}${pathPrefix}/vote/${pollId}`; }, [baseUrl, pollId]); const handleGoToResult = () => { diff --git a/src/routes/routes.tsx b/src/routes/routes.tsx index c8e6d17a..0c4dfbfc 100644 --- a/src/routes/routes.tsx +++ b/src/routes/routes.tsx @@ -103,29 +103,34 @@ const protectedAppRoutes = appRoutes.map((route) => ({ ), })); -const router = createBrowserRouter([ +const router = createBrowserRouter( + [ + { + element: ( + <> + + + + + ), + children: [ + { + path: '/', + element: , + children: protectedAppRoutes, // 기본 언어(ko) 라우트 + }, + { + path: ':lang', // 다른 언어 라우트 + element: , + children: protectedAppRoutes, + }, + ], + }, + ], { - element: ( - <> - - - - - ), - children: [ - { - path: '/', - element: , - children: protectedAppRoutes, // 기본 언어(ko) 라우트 - }, - { - path: ':lang', // 다른 언어 라우트 - element: , - children: protectedAppRoutes, - }, - ], + basename: import.meta.env.VITE_BASE_PATH || '/', }, -]); +); // 라우트 변경 시 Google Analytics 이벤트 전송 router.subscribe(({ location }) => { diff --git a/src/util/arrayEncoding.ts b/src/util/arrayEncoding.ts index 515d4db1..a96c30bc 100644 --- a/src/util/arrayEncoding.ts +++ b/src/util/arrayEncoding.ts @@ -28,7 +28,9 @@ export function createTableShareUrl( const resolvedBaseUrl = baseUrl && baseUrl.trim() !== '' ? baseUrl : window.location.origin; const normalizedBaseUrl = resolvedBaseUrl.replace(/\/+$/, ''); - return `${normalizedBaseUrl}/share?data=${encoded}`; + const basePath = import.meta.env.VITE_BASE_PATH; + const pathPrefix = basePath && basePath !== '/' ? basePath : ''; + return `${normalizedBaseUrl}${pathPrefix}/share?data=${encoded}`; } export function extractTableShareUrl(url: string): DebateTableData | null { diff --git a/src/util/googleAuth.ts b/src/util/googleAuth.ts index 1d4104c9..5d3ee844 100644 --- a/src/util/googleAuth.ts +++ b/src/util/googleAuth.ts @@ -7,12 +7,18 @@ export const oAuthLogin = () => { throw new Error('OAuth 정보가 없습니다.'); } - const params = { + const params: Record = { client_id: import.meta.env.VITE_GOOGLE_O_AUTH_CLIENT_ID, redirect_uri: import.meta.env.VITE_GOOGLE_O_AUTH_REDIRECT_URI, response_type: 'code', scope: 'openid profile email', }; + + const basePath = import.meta.env.VITE_BASE_PATH; + if (basePath && basePath !== '/') { + params.state = basePath; + } + const queryString = new URLSearchParams(params).toString(); const googleOAuthUrl = `${import.meta.env.VITE_GOOGLE_O_AUTH_REQUEST_URL}?${queryString}`; diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts index bd3d95eb..17433776 100644 --- a/src/vite-env.d.ts +++ b/src/vite-env.d.ts @@ -2,6 +2,7 @@ interface ImportMetaEnv { readonly VITE_MOCK_API: string; + readonly VITE_BASE_PATH: string; } interface ImportMeta { diff --git a/vite.config.ts b/vite.config.ts index ce11360d..4489551d 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -6,6 +6,7 @@ const viteConfig = defineViteConfig(({ mode }) => { const env = loadEnv(mode, process.cwd(), ''); return { + base: env.VITE_BASE_PATH || '/', plugins: [react()], server: { proxy: { From 63ea82d8c8cc6b2ee81dfbf33e16ec32759835b5 Mon Sep 17 00:00:00 2001 From: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com> Date: Sun, 1 Mar 2026 23:02:00 +0900 Subject: [PATCH 7/8] =?UTF-8?q?[CHORE]=20=EC=82=AC=EC=86=8C=ED=95=9C=20?= =?UTF-8?q?=EC=9E=91=EC=97=85=EB=93=A4=20=EC=B2=98=EB=A6=AC=20(#428)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: 취약점 해결을 위한 패키지 버전 업데이트 * design: 써니의 패치 노트 피드백 추가 반영 * feat: 패치노트 모달이 랜딩 페이지, 시간표 목록 화면에만 표시되도록 수정 * refactor: 린팅 경고 해결 * fix: 빌드 오류 해결 --- package-lock.json | 325 +++++++++--------- src/assets/patchNote/0001.png | Bin 129860 -> 0 bytes src/assets/patchNote/0002.png | Bin 0 -> 99069 bytes src/components/UpdateModal/UpdateModal.tsx | 2 +- src/constants/patch_note.ts | 4 +- src/page/DebateVotePage/DebateVotePage.tsx | 4 +- src/page/LandingPage/LandingPage.tsx | 79 +++-- src/page/TableListPage/TableListPage.tsx | 3 + .../TableSharingPage/TableSharingPage.tsx | 8 +- src/routes/routes.tsx | 2 - 10 files changed, 214 insertions(+), 213 deletions(-) delete mode 100644 src/assets/patchNote/0001.png create mode 100644 src/assets/patchNote/0002.png diff --git a/package-lock.json b/package-lock.json index 83a76e88..88150579 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1244,9 +1244,9 @@ } }, "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -1325,9 +1325,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -1524,29 +1524,6 @@ } } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -1983,9 +1960,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", - "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", "cpu": [ "arm" ], @@ -1997,9 +1974,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz", - "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", "cpu": [ "arm64" ], @@ -2011,9 +1988,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz", - "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", + "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", "cpu": [ "arm64" ], @@ -2025,9 +2002,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz", - "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", "cpu": [ "x64" ], @@ -2039,9 +2016,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz", - "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", "cpu": [ "arm64" ], @@ -2053,9 +2030,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz", - "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", "cpu": [ "x64" ], @@ -2067,9 +2044,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz", - "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", "cpu": [ "arm" ], @@ -2081,9 +2058,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz", - "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", "cpu": [ "arm" ], @@ -2095,9 +2072,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz", - "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", "cpu": [ "arm64" ], @@ -2109,9 +2086,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz", - "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", "cpu": [ "arm64" ], @@ -2123,9 +2100,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz", - "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", "cpu": [ "loong64" ], @@ -2137,9 +2114,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz", - "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", "cpu": [ "loong64" ], @@ -2151,9 +2128,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz", - "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", "cpu": [ "ppc64" ], @@ -2165,9 +2142,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz", - "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", "cpu": [ "ppc64" ], @@ -2179,9 +2156,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz", - "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", "cpu": [ "riscv64" ], @@ -2193,9 +2170,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz", - "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", "cpu": [ "riscv64" ], @@ -2207,9 +2184,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz", - "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", "cpu": [ "s390x" ], @@ -2221,9 +2198,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", - "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", "cpu": [ "x64" ], @@ -2235,9 +2212,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz", - "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", "cpu": [ "x64" ], @@ -2249,9 +2226,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz", - "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", "cpu": [ "x64" ], @@ -2263,9 +2240,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz", - "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", "cpu": [ "arm64" ], @@ -2277,9 +2254,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz", - "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", "cpu": [ "arm64" ], @@ -2291,9 +2268,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz", - "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", "cpu": [ "ia32" ], @@ -2305,9 +2282,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz", - "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", "cpu": [ "x64" ], @@ -2319,9 +2296,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz", - "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", "cpu": [ "x64" ], @@ -3912,9 +3889,9 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -4298,13 +4275,13 @@ } }, "node_modules/axios": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.4.tgz", - "integrity": "sha512-1wVkUaAO6WyaYtCkcYCOx12ZgpGf9Zif+qXa4n+oYzK558YryKqiL6UWwd5DqiH3VRW0GYhTZQ/vlgJrCoNQlg==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", + "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", "proxy-from-env": "^1.1.0" } }, @@ -4371,12 +4348,24 @@ } }, "node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/brace-expansion/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/braces": { @@ -5678,9 +5667,9 @@ } }, "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -5765,9 +5754,9 @@ } }, "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -5876,9 +5865,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -6002,9 +5991,9 @@ } }, "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -6605,16 +6594,16 @@ } }, "node_modules/glob/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -8255,12 +8244,12 @@ } }, "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.8.tgz", + "integrity": "sha512-reYkDYtj/b19TeqbNZCV4q9t+Yxylf/rYBsLb42SXJatTv4/ylq5lEiAmhA/IToxO7NI2UzNMghHoHuaqDkAjw==", "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -9764,9 +9753,9 @@ } }, "node_modules/rollup": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz", - "integrity": "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", + "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", "devOptional": true, "license": "MIT", "dependencies": { @@ -9780,31 +9769,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.57.1", - "@rollup/rollup-android-arm64": "4.57.1", - "@rollup/rollup-darwin-arm64": "4.57.1", - "@rollup/rollup-darwin-x64": "4.57.1", - "@rollup/rollup-freebsd-arm64": "4.57.1", - "@rollup/rollup-freebsd-x64": "4.57.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.57.1", - "@rollup/rollup-linux-arm-musleabihf": "4.57.1", - "@rollup/rollup-linux-arm64-gnu": "4.57.1", - "@rollup/rollup-linux-arm64-musl": "4.57.1", - "@rollup/rollup-linux-loong64-gnu": "4.57.1", - "@rollup/rollup-linux-loong64-musl": "4.57.1", - "@rollup/rollup-linux-ppc64-gnu": "4.57.1", - "@rollup/rollup-linux-ppc64-musl": "4.57.1", - "@rollup/rollup-linux-riscv64-gnu": "4.57.1", - "@rollup/rollup-linux-riscv64-musl": "4.57.1", - "@rollup/rollup-linux-s390x-gnu": "4.57.1", - "@rollup/rollup-linux-x64-gnu": "4.57.1", - "@rollup/rollup-linux-x64-musl": "4.57.1", - "@rollup/rollup-openbsd-x64": "4.57.1", - "@rollup/rollup-openharmony-arm64": "4.57.1", - "@rollup/rollup-win32-arm64-msvc": "4.57.1", - "@rollup/rollup-win32-ia32-msvc": "4.57.1", - "@rollup/rollup-win32-x64-gnu": "4.57.1", - "@rollup/rollup-win32-x64-msvc": "4.57.1", + "@rollup/rollup-android-arm-eabi": "4.59.0", + "@rollup/rollup-android-arm64": "4.59.0", + "@rollup/rollup-darwin-arm64": "4.59.0", + "@rollup/rollup-darwin-x64": "4.59.0", + "@rollup/rollup-freebsd-arm64": "4.59.0", + "@rollup/rollup-freebsd-x64": "4.59.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", + "@rollup/rollup-linux-arm-musleabihf": "4.59.0", + "@rollup/rollup-linux-arm64-gnu": "4.59.0", + "@rollup/rollup-linux-arm64-musl": "4.59.0", + "@rollup/rollup-linux-loong64-gnu": "4.59.0", + "@rollup/rollup-linux-loong64-musl": "4.59.0", + "@rollup/rollup-linux-ppc64-gnu": "4.59.0", + "@rollup/rollup-linux-ppc64-musl": "4.59.0", + "@rollup/rollup-linux-riscv64-gnu": "4.59.0", + "@rollup/rollup-linux-riscv64-musl": "4.59.0", + "@rollup/rollup-linux-s390x-gnu": "4.59.0", + "@rollup/rollup-linux-x64-gnu": "4.59.0", + "@rollup/rollup-linux-x64-musl": "4.59.0", + "@rollup/rollup-openbsd-x64": "4.59.0", + "@rollup/rollup-openharmony-arm64": "4.59.0", + "@rollup/rollup-win32-arm64-msvc": "4.59.0", + "@rollup/rollup-win32-ia32-msvc": "4.59.0", + "@rollup/rollup-win32-x64-gnu": "4.59.0", + "@rollup/rollup-win32-x64-msvc": "4.59.0", "fsevents": "~2.3.2" } }, @@ -10793,9 +10782,9 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "dependencies": { diff --git a/src/assets/patchNote/0001.png b/src/assets/patchNote/0001.png deleted file mode 100644 index aa007b833a6174605488a7c1bb66630269f649ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129860 zcmY&;bx>T*6D{se2<{ewySqEVU4py2I|=S?!QBaN!EJ%Xogj<5E&9m!d+(1oRa>|2 zt=fBgdV0Fg^f^CNl%!FS2#_EkAW&sxBvc_FphF-aAoUR7KAr@XvDAHB5S?UnTp=Kk zvH$%bA+mDtJ|054s!EGN)J_u}ecZrUiYkgiKs3Z7znH*6Kt8R=N{Fg^L7u+)x*4o^ zlOhCcwKMArJi?J`R8vSMQX^7VRHDeo8BpWe=_KxXJYyo-tnHG3BN&+E^x_YY?m&{6;2Sl$&0APW<@k304A5>%7g zY_FLoZvE5Mkw%ykNdn?d9yt+bLEFHH%jNqmO0o$zSw-K~BdXJWc0NaPnwW1ikqf;Y zPZ?plVjJg1n9OujVY}9`(VOF8cAzxfCay%vQjYFhV!7{5n60?=XNs&$xyxbC)M5nE zXWcUj&|4L66c2b`%zyu%NgHvB$ojqr9tsjpL}Gmh!^(Cl7G8oEO<3PCX1lXpq0WNy zr#lC)JCeoZ8P8|thqnHB_?YkCvDVr5^IotY!XdckEPc*~|KsDEx>XXJknB<9+m*@Y zmCbIgNXnjWjJ-Pq5cg5OUOhR+)m&A)xqMJ~vP)KjT#lp8{cYa_BJUO+owGPFRf4S- zO>%PR@DttGI4E7R3}AY(YYKO7xPiC=N9J6+KI7#FItozyH#`Kfyaq9==OXgK?M~F% z-883oGn|2(__Q=MNr<`1ZWZaIKvLiBvKy^tcBoLsykq1!B-c$uccs2UHyvx~47EJJ z(Q6m-Eq)lI3};i!0VLgd8m=#+Cp+#duBGT9>82B^Y`I2h#|G(*;W%in$6=Q_V-UO; zA=WxBOdatrxrvl~^$%GGm~iHv)B-UAhy=Kc$|kTLe5@u8$@cNNCk)D!`w)&O*LlI~ zw~*=`Hx>?fCj5-*TkK2%Mcwf9&Ud{RNuNn#a?hHL?Mponxb8EwT08RYV*&A# zvGr%ATvb91Aa0@eD{$`!XiKo_^nvb$cp%5kSg4Z;(k`!9O5)!TXf=i^kUmHu>krTm zcZ8A(srY;-GujAl2}=86*GW@xtztbWe9HYj^Kzt3FMIcfH2)p`>ZP;!?Pe=gX*zm6eb{y-|U_v=OnET&&zGQJUIeU}O(<{ChS_89m%PPipUjuZdMNmlT6(+t(xI0JtaM15`Of3{n3k+5 z*@ORFIlrXftF6_!eJY*5LO4-dK5$ZZBX#TEX#-?Eb4{H8X{+8Uy_?v37>H>Z`(ruc zHN#}{`l&PW$Sc0{*%%Z#T?7DauF*M};x3v_D6I)Qtmd|69(>&|WexaKoSAg7yXlvk z@L;UD3GJV6w>EIE;QcV#N@?f&)_r}m?8_Es@mYj#@h#)|A>o0US#Xa?JiXQY!rsuw zGvMdjn)6RUpx>J(;6}OEDES&*?lrDr@cy?#o^YVykvu>?wo-u->c$c_F$;|JzeKPM z<$;6Q{4C*}VK>;Rp&o)q07dNWa9}y(tr`$N1^^Bmc>bE0 zZxdn{+P|L2xdt}#<>hIL)zAq}6#>ikmwns=#<`ge3C!>6Vj){7?PwQ@*7%tKM}BUx zo6=Ilm#JE%2BbitBfnO(=gifXdY1hsQS)QdTyDE6C24ySE^wKCcB(OVV^CAmyoF$d zHL1J*%KcGK*)F2tn*Bvf{anX*&?WMKuy?q4T z&9<7@#ayFSdG~|h9rJUgcX-#d3~?{&@bMi_Z-9#8Udncar$h*#_-;}l&}aSDe`-4T z@nr-Q_*>{b>BbsLi2po_+eGy>RUQpH`Pi6kncq5z4*TW?1n``^u%rtAFRHT#94JB- zZ->?{m5UwOHp+tacPurdgOT~3;By0VWW6#X_RafdXTP;w@{5NA+~n)z4I_&;c3F?J z!%Y+cd2GhBA@4BI&`gb@i<@?k1Z=bfTBsZ5f3x4i)i_JZ%x$_WV+5u%qr@W8CooT3U9YiL z5}NQ?ugUudO0^yhBy6=Jvzz|SoHfru9Cna$x0+9}I!U)DO|myy+(qo?namI^a5?qP z{XFLjWUM2kA~?x(6VPZk{mWhiJQgbV$nur5mpz$%u(q<0x`&_1r*GXjx=Hcenrm3v zKWuoYo7L9GBf#=l2Rb*qQg=II-2Rv|TT4qOIqf!mg%vc4SZ^ZF$I;Z})4CNjh_K$f zVbO!XbCxM-vY*+{1dS4@W!oEc=)C3BKUj?x@47$k{&Ll?cNGz&Ww%k9d(8wB^O0cP zzLf0`frN$L(GS2{H-3|b#AGF1MQb4D7E6~w#kb5I2)qWqU#ZwDR7 zL)IrHNoVpA2N7-KB`ma?lJONuUmtbJ6GfoTG7~YwEG>8DsQup*rY=AwU!yLGM#ky- z=(R)y))*mUMwhC61I6E3thW+CO1W7>qM7fH6-_+wt|IwB0f9hIl}+JZ)z7UAmAff+ zTDqUh*)-RA^_beYa<6Me6Vl3-ym_v#Z(0p{*+#|%>48)GNW>m?FAXvy8LO9erKCPY z6^dnMJ@k#Imit#f@uO2C6!c12XT3Y`F6OGc0F*&Hcr_dZY`qS34y3u+l05L0{ztD5 z7eHt4w~qF@*7qHK=d(2X`Tay|Q1y}!KaKTs)6EzDh@1`|8J4yWLNmC}+1QbIY&pipY?7qH!I`}Ot$en$Z-u-aTKx{VUAi&6l8T@I{`j&L3EC1eyL~pLyUbigQO#!3uw>r_AzW~LNiC<28s1C4CqbG( zSpe*X`3cv_6fzEECcu#>QT|u#KaqUKoOIuJAnvbtC8MmUh~a{zVBF$(C9zSkJqyzF zPL;2_ExHIOo{DFB^#W9UvedbAH8izp0czJ6em-IyHO0VXhRWejCkdsOK1g5MUSDbM zioU*S=S?Tw=1|ET*#k{n>u2TvHlI%QpTq!8u#uME&gV5vMn= z{W}<24aa>omxWecK#H5q%8dXmb7GJiahZAdjaD=T;{yW`|Kb1`JYfI>Kfa`DKChJZ zR(XB9U^=3-yFbxN8qj0f*rQb!!sE$AEdTY-y>h(lDm(E{I1Q&FjB0x>!ul}#@Ex5>=XCs8Vrc#sME5X@oeKM8|U-ay|>I8 zFLH?vIfuN<9F9;uzCr|%wB0W|d*p+)@n*X7Jza+Ze?~g#6*5PZR(bt2TW*@|US6t> zx=YN22i;az?K2CS^QLuSV!<1@iU;c&Z zWaX~?+BZ&W{|cmsO>u0+P%=sj`SGb*k+E;@^8e+qcj+X}}MA8d|RdEx^XO&v__of1W(CjQ_MA z>ynkHl3G4buGLNmAf`5HNp>sw-xCzg&3FmiY+{f7t+A!3GlbQVTCKeu59x{w4NX}0 zQJn5AbE`pK+Upi}#=@<&Cii+AH18Te=0D=(?}j%qvO=-n{0TngHY)A)SvZNFrUfm) z?{#&Ik5D2LoXCCKEL${J_h%ovx;MX&=A%`D8}Z0dC(Um>gI;2~TS~KBt$i*9?e6?> zsonYo;^_izVBCTw9xh1M40F$^Lb#840Wkpt3OKa=Li?>G1h||NfBzvagQpi}20RxJ z{3tc?HW_ik^H6(0%PG`rEAiEGX(*+Qr2aw$m}Gz&ZYZ}fQot=(TyTbS7)8cOcv z>rm>T#pZC1pv51M{pVLjuZ)({F$KE3#4rtwE}vWO_c*#5Rs#!wbb&H7!qhC@N^g_h zMsIUx@UMIj|Gf&clThoBI*{aIG=HoPN9AQitnjYI=8jNaNK^oM`qRS-CXbi3=F4=9 z3&UWJtaa0@I(>%jk1X_Q0$RSbA0Mz~x%11wYvl86;loFLRhy(*eJdN?s&*DtM(d0a3RxJ4+p7!C9 zWX6Vjpj~sRY2NrM?h1Z>qa- z6(arte^$k1G&!63zxC|Qr%?Gu+$kQae5w@dB!>RWZ29r>!MwrH83aBG9ut9}IrPLH zj*0)b_*z=HDg1>dgWKVAqzbXv zznKl@_4|{Da1AH2Lz~|zC_t<(2Xfu7;3@1}B2e||qoNUo?=||>0U){Jxgc>PP%&JZy34FQ^;wZ~s0d zArP_bOp);xXZ7VQpH-avvkWtaKVC%}$jNCIgvmK@{HP0wk?Xp|p7A*lsi3skEea;C{V&m|%;27;Y~k;F zQE7#kWw$}(NqzqVy%@?su_I3c!29`A;X_ZTz}lSS7yVpDBEgOnB7=~y0Mm47>4gi% zq0JV2>p-DbvHaf_{0G0+f|^6oS2Okh89oR-tQ0s4zdswY>rKU2unAud-FH%RR)MSX zf$%t==e|-!r#=LhFVH1@zO??|N23lA!O%|@4Kpt*Mbf=*Pc?dEUlqj5LpFtxosO^& zY?jHg@zHA7+B z76KAMq%o~tzA8;-_zw?%3Pt{^(q{11W0XX7sZ93&rmHCWb}Y1Em)>)Ge+PQ^{YlO1 zg@>hUT(YJA)NKI%x}CX-P#JVvfNNnLoc8@8>x^*PI>wJ~CCD1#zhX=xzK)IA92S2; zU!V+XiMGMU#&9x`vw<@2*dYWWfGe7O7lR+Z zN+XxJj<4-UelI)5ppvf|nHQ@<68q9X5$HR{N*HcMagqb@J4i}`oMZ|hTw1b*f_9z# z&t)Sh4>kmq0W8&_8Hj2mujMiECw-Sd;O=)jJGmh^eGXqp+pQF;OPKAXm%`O8ykQ?# z$SvK#9WDN#UZnqJ8q9|<7{2%P!d2V%Vttrz0R$3vX*8bn@CEE%urT2n1+SsV(xTpY z#3Ur?OJyn8nPb(mR%ZVdt9bHOMVMILa(3zlssy0~8Ydf@@iW9?Qo^4|&T@%;z$6$$ zO{#iF4O=SD5SX+H93Hnrj2xZ-v2I}Wbn1lphyBY0x<+8Q=3Z}W;L)?u8$`+$jz6E| zsS-zzKkT9*c)S#do9~PJY41d|aMr4Ce7w=Grmtr0_x97>$+bJ`InGZMwC;Q5h<#AW z8reO1PD=4bB}J%P?mgNZiP$Q4x!})6!B7w&nedwiS~MpfqRGFgGz~k$>Q@k=2w6p5 z`84z;1mI`E(SFI#J}?ZgufrSt39rXMNHe2X2tD>QS!S)iV>cNh*_&s*B2oI_#XPWV z`*g)M@m5mel#IaWks=DLmn|2)kA?D<&Mdxj3HdQ4MXRk2=!yL2his*MB4MbK-dFL< zdeObhDek&H!Y0SQv$bqrw3`H~Gb8`Tmqo`dgD$#pTG0f`Om=e&dgPgQ)y1ry^e+(I ze!{L&*b)?BY7z**f*TCzY3UE^1p?Y=DXi?ou%9@{18EpAi~WNE0_;DdquC!L)L}^k zefaQejig)}BOw3Nm+RR+|cW?6wZ8m${ODW!%rqOmbEsq3Y4iD4Gx_p$#fL!5{xl4FVQz zTCoK_WvB<^H+Y9Uk~YHI__9x$5X^=G$jm5pv@OFL6_7+q$BMyIn($i5MP-@O3_e{?#huo+aiafn`8*g)I72S& zkZzG`p^_xZVuqoBvfXC+FN^+l9!%?wSnUp8PtI6`31LHApmLH(>@(#Qk%U4w(#Y!j zUB@Vc<%LbZpwzfp{^qGi9bEiM_`X+0ffy6zB|=u%b}7zm$LDW3gs?S{jom{@aSq=q z2Zb1pYqY#Tl^~)=CiK=o8Yv!$=152Sx>&nAYgD7|NZX9D#_dLBO(YZ%nGavRr0DfS zEyz*|Vnmwk+hz~$od0_P^rRm8FABKq_>UdrB~Y(HVI?lP?R{gio**)SX9Xy@9IpO} z+omi0qZl!zm}O-NrW#EwDdiq_Q`i3q#2+M#uGiN@d7&X3JcrqK{;efTGusfm?&G@9hq=|F)jwnt_}5F7&t!9|-ZW7$j&v z0p0vb{ZR(-_Q`$lhvaT$m(ZjyddI(=>8(7U-gR76-bj{2Y~Vzb`~L)e?4Q@mF|(b+ ztRzGW1s_7E01uD3VZ0b;*nioYgwoDO2QY}F&Qu%=&q`%a7XAZ|ID9YW2d0em#d>g< zCjJq8gqQ>dqFpPRafJ&l_`K%f)lVW1eFyN-t`XhNhpw}=5;H++eH%oyd zf}xn`NNa5H{vb6KzpL3de{farn=%Xk^YBL!s|WY;FFxG88&x2DFY!{jUHZ(QI#(a$ zQ=+(}g?8)Se1j)k9d<`yBN&zSFpBh_jV5-wlvX{DKMv`dW}Nqlq(+d4%#W;$wq?Pa zRyJ5NRdLANkn(r@vaXo*&?SLwD}2_>##F%{`xl;yW4B@ILb)+Z)MbYh)4A7JT*59K zMl~Z!Iu`~@hP@5vVukqIQ)CGeRm)S4S$#{?Eun!U)Aro4#{PVbW_EIPhvk)my~GgY zqAzTjvDg}f^Rvnw+<(O)o`H)hB<*GPcnf?3N`#uy1+m;hvkD5*2**NML)*3hEsP4N zg2l67lDM3VG3r;)AGx|7K<2E<{WL5*JjDUqAKv%Cl@q=e?F)V8%H2%rKiL0GPVv2L z*2hADx1GVS z7AvdsQ>bPJc*1SE>#}yafSsNP!^v6s1sI1%MizSd6B996d3ne1$Qt^qc}%*ab+J`D zha`GKC$LK=a@2-AakZ8gQyKfS+9US&QkSaYx?J?ve4A63EP;-#%--H@+)HO^IIW2f z-)OHcW~Kc1M!a`B``hmA-Xm@-pzX~4ynOA!8|Oxwcd<{2+$6lahf_^mFWsvXb&;U! z@%1lLQc-~SqN^9ja?HJ4N?KMmHEf$+2y5scFmqsfEvdbBpi`SO)EHH>H>y*8N!=Yf zgGmK>Qfd!-8Mi#t*d+Bo;Ix5^<9b%a?69&Sgm`ws-h_eaT&Mk>y&?mJKN@{lswe^5 z)AoU<>o*IAbbp?88d<}gTtE1d90W7?Y+svapd zQ`UA|M6<5b0 zSIb+hI$b-~byY?yy}iz4g3Xmf+3O-PFWoWRp&t;wB#vb{fxLF`fZct=RpC4Z>3t{$ zMF!k7uDye}7Rux*+Jd*l*}h|}Gy32n907p

;M$X2YQ@40|RmZHbiAXWY-F^WLip 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 U1)H%U7UuaRtNfu#+Bo?C0Mu5ZZvX%Q diff --git a/src/assets/patchNote/0002.png b/src/assets/patchNote/0002.png new file mode 100644 index 0000000000000000000000000000000000000000..23fdcb7c57a6a8858b72fcb2b231d2903362842d GIT binary patch literal 99069 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

XF#RT97o%pUZ4GnGoC}BA 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 W2@7vfYb+b {/* 메인 컨텐츠 */} -
+
diff --git a/src/constants/patch_note.ts b/src/constants/patch_note.ts index e9339237..59adb4e0 100644 --- a/src/constants/patch_note.ts +++ b/src/constants/patch_note.ts @@ -1,5 +1,5 @@ // 이미지 임포트는 아래와 같이 -import PatchNoteImage from '../assets/patchNote/0001.png'; +import PatchNoteImage from '../assets/patchNote/0002.png'; // 기본적인 패치 노트 인터페이스 interface BasePatchNoteData { @@ -34,7 +34,7 @@ export function isPredefinedPatchNote( // 현재 활성화된 업데이트 데이터 (이 부분만 수정해서 배포하면 됨) export const LATEST_PATCH_NOTE: PredefinedPatchNoteData = { mode: 'predefined', - version: '0001', + version: '0002', title: '피드백 & 투표', description: '토론 종료 후 피드백 & 투표 기능으로 다양한 서비스를 이용하세요!', diff --git a/src/page/DebateVotePage/DebateVotePage.tsx b/src/page/DebateVotePage/DebateVotePage.tsx index d1deff7f..7a3ac3a3 100644 --- a/src/page/DebateVotePage/DebateVotePage.tsx +++ b/src/page/DebateVotePage/DebateVotePage.tsx @@ -88,7 +88,9 @@ export default function DebateVotePage() { return ( - navigate(buildLangPath('/', lang))}> + navigate(buildLangPath('/', lang))} + > {t('유효하지 않은 투표 링크입니다.')} diff --git a/src/page/LandingPage/LandingPage.tsx b/src/page/LandingPage/LandingPage.tsx index 9b6a599e..a6e891c9 100644 --- a/src/page/LandingPage/LandingPage.tsx +++ b/src/page/LandingPage/LandingPage.tsx @@ -8,6 +8,7 @@ import ReportSection from './components/ReportSection'; import useLandingPageHandlers from './hooks/useLandingPageHandlers'; import TemplateSelection from './components/TemplateSelection'; import ScrollHint from './components/ScrollHint'; +import UpdateModalWrapper from '../../components/UpdateModal/UpdateModalWrapper'; export default function LandingPage() { const { handleStartWithoutLogin, @@ -17,46 +18,50 @@ export default function LandingPage() { } = useLandingPageHandlers(); return ( -
- {/* 헤더 */} -
+ <> +
+ {/* 헤더 */} +
-
- {/* 흰색 배경 */} -
- {/* 메인 화면 */} - - - {/*템플릿 선택 화면 */} - +
+ {/* 흰색 배경 */} +
+ {/* 메인 화면 */} + + + {/*템플릿 선택 화면 */} + - {/* 시간표 설정화면 */} - -
+ {/* 시간표 설정화면 */} + +
- {/* 회색 배경 */} -
- {/* 타이머 화면 */} - -
+ {/* 회색 배경 */} +
+ {/* 타이머 화면 */} + +
- {/* 흰색 배경 */} -
- {/* 홈 설정 */} - -
-
- {/* 리뷰 */} - -
-
- {/* 버그 및 불편사항 제보 */} - -
-
-
+ {/* 흰색 배경 */} +
+ {/* 홈 설정 */} + +
+
+ {/* 리뷰 */} + +
+
+ {/* 버그 및 불편사항 제보 */} + +
+ +
+ + + ); } diff --git a/src/page/TableListPage/TableListPage.tsx b/src/page/TableListPage/TableListPage.tsx index 98bb030f..512789bf 100644 --- a/src/page/TableListPage/TableListPage.tsx +++ b/src/page/TableListPage/TableListPage.tsx @@ -4,6 +4,7 @@ import HeaderTitle from '../../components/HeaderTitle/HeaderTitle'; import { Suspense } from 'react'; import LoadingIndicator from '../../components/LoadingIndicator/LoadingIndicator'; import TableListPageContent from './components/TableListPageContent'; +import UpdateModalWrapper from '../../components/UpdateModal/UpdateModalWrapper'; export default function TableListPage() { const { t } = useTranslation(); @@ -20,6 +21,8 @@ export default function TableListPage() { }> + +
diff --git a/src/page/TableSharingPage/TableSharingPage.tsx b/src/page/TableSharingPage/TableSharingPage.tsx index a02bb51c..e0642b8e 100644 --- a/src/page/TableSharingPage/TableSharingPage.tsx +++ b/src/page/TableSharingPage/TableSharingPage.tsx @@ -75,7 +75,9 @@ export default function TableSharingPage() { (value: PostDebateTableResponseType) => { closeModal(); sessionDebateTableRepository.deleteTable(); - navigate(buildLangPath(`/overview/customize/${value.id}`, lang)); + navigate( + buildLangPath(`/overview/customize/${value.id}`, lang), + ); }, // 저장 실패 시 () => { @@ -137,7 +139,9 @@ export default function TableSharingPage() { (value) => { closeModal(); sessionDebateTableRepository.deleteTable(); - navigate(buildLangPath(`/overview/customize/${value.id}`, lang)); + navigate( + buildLangPath(`/overview/customize/${value.id}`, lang), + ); }, () => { closeModal(); diff --git a/src/routes/routes.tsx b/src/routes/routes.tsx index 0c4dfbfc..d6c9a899 100644 --- a/src/routes/routes.tsx +++ b/src/routes/routes.tsx @@ -18,7 +18,6 @@ import VoteParticipationPage from '../page/VoteParticipationPage/VoteParticipati import VoteCompletePage from '../page/VoteCompletePage/VoteCompletePage'; import DebateVoteResultPage from '../page/DebateVoteResultPage/DebateVoteResultPage'; import LanguageWrapper from './LanguageWrapper'; -import UpdateModalWrapper from '../components/UpdateModal/UpdateModalWrapper'; const appRoutes = [ { @@ -110,7 +109,6 @@ const router = createBrowserRouter( <> - ), children: [ From 3fe83d117ea709bd6b3fd76b046489bb994998cd Mon Sep 17 00:00:00 2001 From: Shawn Kang <77564014+i-meant-to-be@users.noreply.github.com> Date: Mon, 9 Mar 2026 15:59:28 +0900 Subject: [PATCH 8/8] =?UTF-8?q?[REFACTOR]=20=ED=85=9C=ED=94=8C=EB=A6=BF=20?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=84=B0=EB=A5=BC=20API=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=ED=8C=A8=EC=B9=AD=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20(#426)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor: API 기반 코드 준비 * refactor: UI가 데이터를 API에서 패칭하도록 수정 * chore: 이제 사용하지 않는 상수 삭제 * chore: 다국어 번역 테이블에 항목 추가 * fix: 병합 과정에서 누락된 프리뷰 관련 코드 추가 * fix: 코드 리뷰 반영 * feat: 패치 노트가 랜딩 페이지와 시간표 목록 페이지에만 표시되도록 수정 * Revert "feat: 패치 노트가 랜딩 페이지와 시간표 목록 페이지에만 표시되도록 수정" This reverts commit b606b6c5df2655a6ebeb011218de7105c9c999c8. * chore: 더 이상 필요하지 않은 에셋 삭제 * test: msw가 정적 이미지 에셋 요청도 가로채도록 개선 * refactor: 시간표 공유 관련 함수 한 파일로 통합 및 이름 변경 * refactor: 조금 더 탄탄한 파싱 방식 적용 * test: 테스트 함수 추가 --- public/locales/en/translation.json | 2 + public/locales/ko/translation.json | 4 +- src/apis/apis/organization.ts | 16 + src/apis/endpoints.ts | 1 + src/apis/responses/organization.ts | 5 + src/assets/template_logo/han_alm.png | Bin 7459 -> 0 bytes src/assets/template_logo/hantomak.png | Bin 14343 -> 0 bytes src/assets/template_logo/igam.png | Bin 12206 -> 0 bytes src/assets/template_logo/jungseonto.png | Bin 2215 -> 0 bytes src/assets/template_logo/kogito.png | Bin 8524 -> 0 bytes src/assets/template_logo/kondae_time.png | Bin 16223 -> 0 bytes src/assets/template_logo/mcu.png | Bin 14474 -> 0 bytes src/assets/template_logo/nogotte.png | Bin 12773 -> 0 bytes src/assets/template_logo/osansi.png | Bin 6361 -> 0 bytes src/assets/template_logo/seobangjeongto.png | Bin 11185 -> 0 bytes src/assets/template_logo/todallae.png | Bin 9787 -> 0 bytes src/assets/template_logo/visual.png | Bin 10904 -> 0 bytes src/assets/template_logo/yuppm_law_track.png | Bin 27378 -> 0 bytes .../ShareModal/ShareModal.stories.tsx | 4 +- src/constants/debate_template.ts | 307 ------------------ .../query/useGetOrganizationTemplates.ts | 12 + src/hooks/useTableShare.tsx | 4 +- src/main.tsx | 2 +- src/mocks/handlers/global.ts | 4 + src/mocks/handlers/organization.ts | 42 +++ src/mocks/handlers/static_asset.ts | 31 ++ .../LandingPage/components/TemplateCard.tsx | 39 ++- .../LandingPage/components/TemplateList.tsx | 14 +- .../components/TemplateSelection.tsx | 52 ++- .../hooks/useLandingPageHandlers.ts | 4 +- src/type/type.ts | 17 +- src/util/arrayEncoding.test.ts | 22 +- src/util/arrayEncoding.ts | 12 +- 33 files changed, 237 insertions(+), 357 deletions(-) create mode 100644 src/apis/apis/organization.ts create mode 100644 src/apis/responses/organization.ts delete mode 100644 src/assets/template_logo/han_alm.png delete mode 100644 src/assets/template_logo/hantomak.png delete mode 100644 src/assets/template_logo/igam.png delete mode 100644 src/assets/template_logo/jungseonto.png delete mode 100644 src/assets/template_logo/kogito.png delete mode 100644 src/assets/template_logo/kondae_time.png delete mode 100644 src/assets/template_logo/mcu.png delete mode 100644 src/assets/template_logo/nogotte.png delete mode 100644 src/assets/template_logo/osansi.png delete mode 100644 src/assets/template_logo/seobangjeongto.png delete mode 100644 src/assets/template_logo/todallae.png delete mode 100644 src/assets/template_logo/visual.png delete mode 100644 src/assets/template_logo/yuppm_law_track.png delete mode 100644 src/constants/debate_template.ts create mode 100644 src/hooks/query/useGetOrganizationTemplates.ts create mode 100644 src/mocks/handlers/organization.ts create mode 100644 src/mocks/handlers/static_asset.ts diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json index e91dd6aa..72bc24d0 100644 --- a/public/locales/en/translation.json +++ b/public/locales/en/translation.json @@ -241,6 +241,8 @@ "음소거": "Mute", "음소거 해제": "Unmute", "발언자는 최대 {{MAX_SPEAKER_LEN}}자까지 입력할 수 있습니다.": "Speaker can be up to {{MAX_SPEAKER_LEN}} characters.", + "템플릿을 불러오는 중입니다...": "Loading templates...", + "템플릿을 불러오지 못했습니다. 잠시 후 다시 시도해주세요.": "Failed to load templates. Please try again later.", "400 잘못된 요청": "400 Bad Request", "401 권한 없음": "401 Unauthorized", "403 거부됨": "403 Forbidden", diff --git a/public/locales/ko/translation.json b/public/locales/ko/translation.json index 940eaf84..2413d96e 100644 --- a/public/locales/ko/translation.json +++ b/public/locales/ko/translation.json @@ -56,7 +56,7 @@ "이전 차례": "이전 차례", "다음 차례": "다음 차례", "토론 종료": "토론 종료", - "알림 개수_one": "알림 {{displayCount}}개", + "알림 개수_one": "알림 {{displayCount}}개", "알림 개수_other": "알림 {{displayCount}}개", "{{team}} 팀": "{{team}} 팀", "데이터를 불러오고 있습니다...": "데이터를 불러오고 있습니다...", @@ -241,6 +241,8 @@ "음소거": "음소거", "음소거 해제": "음소거 해제", "발언자는 최대 {{MAX_SPEAKER_LEN}}자까지 입력할 수 있습니다.": "발언자는 최대 {{MAX_SPEAKER_LEN}}자까지 입력할 수 있습니다.", + "템플릿을 불러오는 중입니다...": "템플릿을 불러오는 중입니다...", + "템플릿을 불러오지 못했습니다. 잠시 후 다시 시도해주세요.": "템플릿을 불러오지 못했습니다. 잠시 후 다시 시도해주세요.", "400 잘못된 요청": "400 잘못된 요청", "401 권한 없음": "401 권한 없음", "403 거부됨": "403 거부됨", diff --git a/src/apis/apis/organization.ts b/src/apis/apis/organization.ts new file mode 100644 index 00000000..dc12cdb9 --- /dev/null +++ b/src/apis/apis/organization.ts @@ -0,0 +1,16 @@ +import { ApiUrl } from '../endpoints'; +import { request } from '../primitives'; +import { GetOrganizationTemplatesResponseType } from '../responses/organization'; + +// GET /api/organizations/templates +export async function getOrganizationTemplates(): Promise { + const requestUrl: string = ApiUrl.organization + '/templates'; + const response = await request( + 'GET', + requestUrl, + null, + null, + ); + + return response.data; +} diff --git a/src/apis/endpoints.ts b/src/apis/endpoints.ts index 7589d94c..5469c3d1 100644 --- a/src/apis/endpoints.ts +++ b/src/apis/endpoints.ts @@ -11,4 +11,5 @@ export const ApiUrl = { parliamentary: makeUrl('/table/parliamentary'), customize: makeUrl('/table/customize'), poll: makeUrl('/polls'), + organization: makeUrl('/organizations'), }; diff --git a/src/apis/responses/organization.ts b/src/apis/responses/organization.ts new file mode 100644 index 00000000..afb22afb --- /dev/null +++ b/src/apis/responses/organization.ts @@ -0,0 +1,5 @@ +import { Organization } from '../../type/type'; + +export interface GetOrganizationTemplatesResponseType { + organizations: Organization[]; +} diff --git a/src/assets/template_logo/han_alm.png b/src/assets/template_logo/han_alm.png deleted file mode 100644 index 1167f15da080c818d76f715e17c32f700c846e97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7459 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

U1O-QuFqOAw^^-a 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

- -
{/* 구분선 */} - -
- + {isError ? ( +
+ + {t('템플릿을 불러오지 못했습니다. 잠시 후 다시 시도해주세요.')} + +
+ ) : data ? ( + <> + orgs.templates.length == 1, + )} + /> +
+ orgs.templates.length == 2, + )} + /> +
+ orgs.templates.length >= 3, + )} + /> + + ) : ( +
+ +

+ {t('템플릿을 불러오는 중입니다...')} +

+
+ )} ); diff --git a/src/page/LandingPage/hooks/useLandingPageHandlers.ts b/src/page/LandingPage/hooks/useLandingPageHandlers.ts index 7f3508a4..576fdb80 100644 --- a/src/page/LandingPage/hooks/useLandingPageHandlers.ts +++ b/src/page/LandingPage/hooks/useLandingPageHandlers.ts @@ -2,7 +2,7 @@ import { useNavigate } from 'react-router-dom'; import { isLoggedIn } from '../../../util/accessToken'; import { oAuthLogin } from '../../../util/googleAuth'; import useLogout from '../../../hooks/mutations/useLogout'; -import { createTableShareUrl } from '../../../util/arrayEncoding'; +import { createTableShareUrlFromTable } from '../../../util/arrayEncoding'; import { SAMPLE_TABLE_DATA } from '../../../constants/sample_table'; import { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; @@ -25,7 +25,7 @@ const useLandingPageHandlers = () => { // Declare functions that represent business logics const handleStartWithoutLogin = useCallback(() => { // window.location.href = LANDING_URLS.START_WITHOUT_LOGIN_URL; - window.location.href = createTableShareUrl( + window.location.href = createTableShareUrlFromTable( import.meta.env.VITE_SHARE_BASE_URL, SAMPLE_TABLE_DATA, ); diff --git a/src/type/type.ts b/src/type/type.ts index f96e5f7e..0d2d9ef4 100644 --- a/src/type/type.ts +++ b/src/type/type.ts @@ -91,17 +91,16 @@ export const bgColorMap: Record = { expired: 'bg-default-timeout', // 0초 이하 }; -type Action = { - label: string; // 좌측에 표시할 토론 형식 이름 (예: "CEDA 토론") - href: string; // 우측 "토론하기" 버튼의 이동 링크 +export type DebateTemplate = { + name: string; // 템플릿 이름 + data: string; // 인코딩된 템플릿 데이터 }; -export type DebateTemplate = { - title: string; // 제목 (예: "서방정토") - subtitle?: string; // 서브 제목 (예: "서강대") - logoSrc?: string; // 로고 이미지 - actions: Action[]; - className?: string; // 카드의 추가 className이 필요하면 사용 +export type Organization = { + organization: string; // 소분류 (e.g., 한앎) + affiliation: string; // 대분류 (e.g., 한양대) + iconPath: string; + templates: DebateTemplate[]; }; type TeamStyleConfig = { diff --git a/src/util/arrayEncoding.test.ts b/src/util/arrayEncoding.test.ts index cdb4e985..1e0527cf 100644 --- a/src/util/arrayEncoding.test.ts +++ b/src/util/arrayEncoding.test.ts @@ -1,6 +1,7 @@ import { DebateTableData } from '../type/type'; import { - createTableShareUrl, + createTableShareUrlFromEncodedData, + createTableShareUrlFromTable, decodeDebateTableData, encodeDebateTableData, extractTableShareUrl, @@ -99,9 +100,9 @@ describe('토론 테이블 인코딩 유틸리티', () => { expect(() => decodeURIComponent(encoded)).not.toThrow(); }); - test('createEncodedURL 함수는 data 쿼리 파라미터가 포함된 올바른 URL을 생성해야 한다', () => { + test('createTableShareUrlFromTable 함수는 data 쿼리 파라미터가 포함된 올바른 URL을 생성해야 한다', () => { const baseUrl = 'https://example.com/'; - const url = createTableShareUrl(baseUrl, sampleData); + const url = createTableShareUrlFromTable(baseUrl, sampleData); const parsed = new URL(url); const encodedData = parsed.searchParams.get('data'); expect(encodedData).toBeTruthy(); @@ -109,8 +110,21 @@ describe('토론 테이블 인코딩 유틸리티', () => { expect(decoded).toEqual(sampleData); }); + test('createTableShareUrlFromEncodedData 함수도 data 쿼리 파라미터가 포함된 올바른 URL을 생성해야 한다', () => { + const encodedData = encodeDebateTableData(sampleData); + const url = createTableShareUrlFromEncodedData(encodedData); + const parsed = new URL(url); + const decodedData = parsed.searchParams.get('data'); + expect(decodedData).toBeTruthy(); + const decoded = decodeDebateTableData(decodedData!); + expect(decoded).toEqual(sampleData); + }); + test('정상적인 URL에서 데이터를 추출하고 디코드할 수 있어야 한다', () => { - const url = createTableShareUrl('https://example.com/', sampleData); + const url = createTableShareUrlFromTable( + 'https://example.com/', + sampleData, + ); const result = extractTableShareUrl(url); expect(result).toEqual(sampleData); }); diff --git a/src/util/arrayEncoding.ts b/src/util/arrayEncoding.ts index a96c30bc..02b5544d 100644 --- a/src/util/arrayEncoding.ts +++ b/src/util/arrayEncoding.ts @@ -20,7 +20,7 @@ export function decodeDebateTableData(encodedData: string): DebateTableData { } } -export function createTableShareUrl( +export function createTableShareUrlFromTable( baseUrl: string | undefined, data: DebateTableData, ): string { @@ -33,6 +33,16 @@ export function createTableShareUrl( return `${normalizedBaseUrl}${pathPrefix}/share?data=${encoded}`; } +export function createTableShareUrlFromEncodedData(encodeData: string): string { + const baseUrl = import.meta.env.VITE_SHARE_BASE_URL || window.location.origin; + const resolvedBaseUrl = + baseUrl && baseUrl.trim() !== '' ? baseUrl : window.location.origin; + const normalizedBaseUrl = resolvedBaseUrl.replace(/\/+$/, ''); + const basePath = import.meta.env.VITE_BASE_PATH; + const pathPrefix = basePath && basePath !== '/' ? basePath : ''; + return `${normalizedBaseUrl}${pathPrefix}/share?data=${encodeData}`; +} + export function extractTableShareUrl(url: string): DebateTableData | null { try { const parsed = new URL(url);