From 852c83a0376b431263a13da41936e7d21d657164 Mon Sep 17 00:00:00 2001 From: hin6150 Date: Sun, 15 Mar 2026 14:35:21 +0900 Subject: [PATCH 01/43] =?UTF-8?q?Feat:=20=EC=84=B1=ED=96=A5=20=ED=94=8C?= =?UTF-8?q?=EB=A1=9C=EC=9A=B0=20=EA=B3=B5=ED=86=B5=20=EC=8A=A4=ED=82=A4?= =?UTF-8?q?=EB=A7=88=C2=B7=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20(MM-188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - personalityFlowSearchSchema: flow/chatId 라우트 검색 파라미터 스키마 - FlowProgressBar / FlowStepDots: 플로우 진행 상태 표시 컴포넌트 - useMemberUpdateMutation: 멤버 정보 업데이트 공통 훅 Co-Authored-By: Claude Sonnet 4.6 --- .../hooks/use-member-update-mutation.ts | 31 ++++++++++ .../features/profile/lib/personality-flow.ts | 10 +++ .../react/src/shared/ui/flow-progress-bar.tsx | 61 +++++++++++++++++++ apps/react/src/shared/ui/flow-step-dots.tsx | 25 ++++++++ 4 files changed, 127 insertions(+) create mode 100644 apps/react/src/features/profile/hooks/use-member-update-mutation.ts create mode 100644 apps/react/src/features/profile/lib/personality-flow.ts create mode 100644 apps/react/src/shared/ui/flow-progress-bar.tsx create mode 100644 apps/react/src/shared/ui/flow-step-dots.tsx diff --git a/apps/react/src/features/profile/hooks/use-member-update-mutation.ts b/apps/react/src/features/profile/hooks/use-member-update-mutation.ts new file mode 100644 index 00000000..66975733 --- /dev/null +++ b/apps/react/src/features/profile/hooks/use-member-update-mutation.ts @@ -0,0 +1,31 @@ +import { useMutation } from '@tanstack/react-query' + +import { useAuth } from '@/features/auth' +import memberService from '@/shared/services/member.service' +import { toast } from '@/shared/ui/toast' + +import type { UpdateMemberRequestDto } from '@data/user-api-axios/api' + +interface UseMemberUpdateMutationOptions { + onSuccess: () => void | Promise + errorMessage: string +} + +/** 회원 정보 업데이트 후 userInfo를 갱신하는 공통 뮤테이션 훅 */ +export function useMemberUpdateMutation({ onSuccess, errorMessage }: UseMemberUpdateMutationOptions) { + const { refreshUserInfo } = useAuth() + + return useMutation({ + mutationFn: async (body: UpdateMemberRequestDto) => { + const { data } = await memberService.updateMember({ updateMemberRequestDto: body }) + return data + }, + onSuccess: async () => { + await refreshUserInfo() + await onSuccess() + }, + onError: () => { + toast.error(errorMessage) + }, + }) +} diff --git a/apps/react/src/features/profile/lib/personality-flow.ts b/apps/react/src/features/profile/lib/personality-flow.ts new file mode 100644 index 00000000..b7e26a02 --- /dev/null +++ b/apps/react/src/features/profile/lib/personality-flow.ts @@ -0,0 +1,10 @@ +import { z } from 'zod' + +export type PersonalityFlow = 'my-personality' | 'partner-personality' | 'chat-entry' + +export const personalityFlowSearchSchema = z.object({ + flow: z.enum(['my-personality', 'partner-personality', 'chat-entry']).optional(), + chatId: z.number().optional(), +}) + +export type PersonalityFlowSearch = z.infer diff --git a/apps/react/src/shared/ui/flow-progress-bar.tsx b/apps/react/src/shared/ui/flow-progress-bar.tsx new file mode 100644 index 00000000..0d60342e --- /dev/null +++ b/apps/react/src/shared/ui/flow-progress-bar.tsx @@ -0,0 +1,61 @@ +import { Fragment } from 'react' + +import { cn } from '@/shared/lib/cn' + +interface FlowProgressBarProps { + step: number + total: number + highlightSteps?: number[] +} + +export function FlowProgressBar({ step, total, highlightSteps }: FlowProgressBarProps) { + return ( +
+
+ {Array.from({ length: total }, (_, i) => { + const isActive = i < step + const isHighlighted = highlightSteps?.includes(i + 1) + + return ( + + {i > 0 && ( +
+ )} + {isHighlighted ? ( +
+
+
+
+ ) : ( +
+ )} + + ) + })} +
+ + {step}/{total} + +
+ ) +} + +/** chat-entry flow에서 공통으로 사용하는 진행 바를 반환합니다. */ +export function getChatEntryProgressBar(isChatEntry: boolean, step: number) { + return isChatEntry ? : undefined +} diff --git a/apps/react/src/shared/ui/flow-step-dots.tsx b/apps/react/src/shared/ui/flow-step-dots.tsx new file mode 100644 index 00000000..0c374b66 --- /dev/null +++ b/apps/react/src/shared/ui/flow-step-dots.tsx @@ -0,0 +1,25 @@ +import { cn } from '@/shared/lib/cn' + +interface FlowStepDotsProps { + step: number + total: number +} + +export function FlowStepDots({ step, total }: FlowStepDotsProps) { + return ( +
+ {Array.from({ length: total }, (_, i) => ( +
+ ))} + {step}단계 +
+ ) +} + +/** my-personality / partner-personality flow에서 공통으로 사용하는 단계 dots를 반환합니다. */ +export function getPersonalityStepDots(isCurrentFlow: boolean, step: number) { + return isCurrentFlow ? : undefined +} From 89ebf832cb5d410680dc0139be9b650e0b4df090 Mon Sep 17 00:00:00 2001 From: hin6150 Date: Sun, 15 Mar 2026 14:35:34 +0900 Subject: [PATCH 02/43] =?UTF-8?q?Feat:=20=EC=84=B1=ED=96=A5=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=C2=B7=EA=B2=B0=EA=B3=BC=20=EB=AF=B8=EB=A6=AC=EB=B3=B4?= =?UTF-8?q?=EA=B8=B0=20=EC=8B=A0=EA=B7=9C=20=ED=8E=98=EC=9D=B4=EC=A7=80=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20(MM-188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - my-attachment-select: 내 애착유형 선택 페이지 - my-result-preview: 내 성향 완성 결과 미리보기 페이지 - partner-attachment-select: 상대 성향 선택 페이지 (모르겠어요 모달·flow별 버튼 분기 포함) - partner-result-preview: 상대 성향 결과 미리보기 페이지 Co-Authored-By: Claude Sonnet 4.6 --- .../src/app/my-attachment-select/page.tsx | 114 +++++++++++++ apps/react/src/app/my-result-preview/page.tsx | 79 +++++++++ .../app/partner-attachment-select/page.tsx | 150 ++++++++++++++++++ .../src/app/partner-result-preview/page.tsx | 51 ++++++ 4 files changed, 394 insertions(+) create mode 100644 apps/react/src/app/my-attachment-select/page.tsx create mode 100644 apps/react/src/app/my-result-preview/page.tsx create mode 100644 apps/react/src/app/partner-attachment-select/page.tsx create mode 100644 apps/react/src/app/partner-result-preview/page.tsx diff --git a/apps/react/src/app/my-attachment-select/page.tsx b/apps/react/src/app/my-attachment-select/page.tsx new file mode 100644 index 00000000..8cc6c5e4 --- /dev/null +++ b/apps/react/src/app/my-attachment-select/page.tsx @@ -0,0 +1,114 @@ +import { useMutation } from '@tanstack/react-query' +import { createFileRoute, useNavigate, useSearch } from '@tanstack/react-router' + +import { ATTACHMENT_OPTIONS } from '@/features/attachment' +import { useAuth } from '@/features/auth' +import { TitleSection } from '@/features/onboarding/ui/title-section' +import { personalityFlowSearchSchema } from '@/features/profile/lib/personality-flow' +import { Screen } from '@/shared/layout/screen' +import { cn } from '@/shared/lib/cn' +import memberService from '@/shared/services/member.service' +import { Button } from '@/shared/ui' +import { getChatEntryProgressBar } from '@/shared/ui/flow-progress-bar' +import { getPersonalityStepDots } from '@/shared/ui/flow-step-dots' +import { DetailHeaderBar } from '@/shared/ui/header-bar' +import { toast } from '@/shared/ui/toast' + +import type { MemberDataLoveTypeCategoryEnum } from '@data/user-api-axios/api' + +export const Route = createFileRoute('/my-attachment-select/')({ + validateSearch: personalityFlowSearchSchema, + component: MyAttachmentSelectPage, +}) + +function MyAttachmentSelectPage() { + const navigate = useNavigate() + const { flow, chatId } = useSearch({ from: Route.id }) + const { refreshUserInfo } = useAuth() + + const updateMutation = useMutation({ + mutationFn: async (type: MemberDataLoveTypeCategoryEnum) => { + const { data } = await memberService.updateMember({ + updateMemberRequestDto: { loveTypeCategory: type }, + }) + return data + }, + onSuccess: async () => { + await refreshUserInfo() + navigateToNext() + }, + onError: () => { + toast.error('저장 중 오류가 발생했습니다') + }, + }) + + const navigateToNext = () => { + if (flow === 'my-personality') { + navigate({ to: '/attachment-test/result/my', search: { from: 'my-page' } }) + } else if (flow === 'chat-entry') { + navigate({ to: '/my-result-preview', search: { flow, chatId } }) + } else { + navigate({ to: '/attachment-test/result/my' }) + } + } + + const handleSelect = (type: MemberDataLoveTypeCategoryEnum) => { + if (updateMutation.isPending) return + updateMutation.mutate(type) + } + + const handleDontKnow = () => { + navigate({ + to: '/attachment-test', + search: { flow, chatId }, + }) + } + + return ( + + + + + + + {getPersonalityStepDots(flow === 'my-personality', 2)} + + 나의 애착 유형이 +
+ 무엇인가요? + + } + /> + +
+ {ATTACHMENT_OPTIONS.map((option) => ( + + ))} + + +
+ +
+
+
+
+ ) +} diff --git a/apps/react/src/app/my-result-preview/page.tsx b/apps/react/src/app/my-result-preview/page.tsx new file mode 100644 index 00000000..1fe92305 --- /dev/null +++ b/apps/react/src/app/my-result-preview/page.tsx @@ -0,0 +1,79 @@ +import { createFileRoute, useNavigate, useSearch } from '@tanstack/react-router' +import { LucideCheck, LucideChevronRight } from 'lucide-react' + +import { getAttachmentType } from '@/features/attachment' +import { useAuth } from '@/features/auth' +import { personalityFlowSearchSchema } from '@/features/profile/lib/personality-flow' +import { Screen } from '@/shared/layout/screen' +import { Button } from '@/shared/ui' +import { FlowProgressBar } from '@/shared/ui/flow-progress-bar' +import { DetailHeaderBar } from '@/shared/ui/header-bar' + +export const Route = createFileRoute('/my-result-preview/')({ + validateSearch: personalityFlowSearchSchema, + component: MyResultPreviewPage, +}) + +function MyResultPreviewPage() { + const navigate = useNavigate() + const { flow, chatId } = useSearch({ from: Route.id }) + const { userInfo } = useAuth() + + const attachmentData = getAttachmentType(userInfo.loveTypeCategory) + + const handleContinue = () => { + if (flow !== 'chat-entry') { + navigate({ to: '/', replace: true }) + return + } + navigate({ to: '/partner-mbti', search: { flow, chatId } }) + } + + const handleViewResult = () => { + navigate({ to: '/attachment-test/result/my' }) + } + + return ( + + + : undefined} + /> + + + +
+ {/* Checkmark circle */} +
+ +
+ +

내 성향 프로필을 완성했어요!

+

연인의 프로필도 완성하러 가볼까요?

+ + {/* Result card */} + {attachmentData && ( +
+

{userInfo.nickname}님은

+

+ {userInfo.personalityType} {attachmentData.subtype} +

+

{attachmentData.description}

+ +
+ )} +
+ +
+
+
+
+ ) +} diff --git a/apps/react/src/app/partner-attachment-select/page.tsx b/apps/react/src/app/partner-attachment-select/page.tsx new file mode 100644 index 00000000..09152d07 --- /dev/null +++ b/apps/react/src/app/partner-attachment-select/page.tsx @@ -0,0 +1,150 @@ +import { useMutation } from '@tanstack/react-query' +import { createFileRoute, useNavigate, useSearch } from '@tanstack/react-router' +import { useState } from 'react' + +import { ATTACHMENT_OPTIONS } from '@/features/attachment' +import { useAuth } from '@/features/auth' +import { TitleSection } from '@/features/onboarding/ui/title-section' +import { personalityFlowSearchSchema } from '@/features/profile/lib/personality-flow' +import { Screen } from '@/shared/layout/screen' +import { cn } from '@/shared/lib/cn' +import memberService from '@/shared/services/member.service' +import { Button } from '@/shared/ui' +import { + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, +} from '@/shared/ui/alert-dialog' +import { getChatEntryProgressBar } from '@/shared/ui/flow-progress-bar' +import { getPersonalityStepDots } from '@/shared/ui/flow-step-dots' +import { DetailHeaderBar } from '@/shared/ui/header-bar' +import { toast } from '@/shared/ui/toast' + +import type { MemberDataLoveTypeCategoryEnum } from '@data/user-api-axios/api' + +export const Route = createFileRoute('/partner-attachment-select/')({ + validateSearch: personalityFlowSearchSchema, + component: PartnerAttachmentSelectPage, +}) + +function PartnerAttachmentSelectPage() { + const navigate = useNavigate() + const { flow, chatId } = useSearch({ from: Route.id }) + const { refreshUserInfo } = useAuth() + const [showDontKnowModal, setShowDontKnowModal] = useState(false) + + const updateMutation = useMutation({ + mutationFn: async (type: MemberDataLoveTypeCategoryEnum | null) => { + const { data } = await memberService.updateMember({ + updateMemberRequestDto: { otherLoveTypeCategory: type }, + }) + return data + }, + onSuccess: async (_data, type) => { + await refreshUserInfo() + navigateToNextAfterSelect(type !== null) + }, + onError: () => { + toast.error('저장 중 오류가 발생했습니다') + }, + }) + + const navigateToNextAfterSelect = (hasData: boolean) => { + if (flow === 'partner-personality') { + navigate({ to: '/attachment-test/result/partner' }) + } else if (flow === 'chat-entry') { + if (hasData) { + navigate({ to: '/partner-result-preview', search: { flow, chatId } }) + } else { + navigate({ to: '/chat', search: { chatId }, replace: true }) + } + } else { + navigate({ to: '/attachment-test/result/partner' }) + } + } + + const handleSelect = (type: MemberDataLoveTypeCategoryEnum) => { + if (updateMutation.isPending) return + updateMutation.mutate(type) + } + + const handleDontKnow = () => { + if (updateMutation.isPending) return + setShowDontKnowModal(true) + } + + const handleDontKnowConfirm = () => { + updateMutation.mutate(null) + } + + return ( + + + + + + + {getPersonalityStepDots(flow === 'partner-personality', 2)} + + 상대의 성향이 +
+ 무엇인가요? + + } + /> + +
+ {ATTACHMENT_OPTIONS.map((option) => ( + + ))} + + {flow !== 'partner-personality' && ( + + )} +
+ +
+
+
+ + + + + 상대의 성향을 모르시나요? + + 상대의 성향을 모르는 경우 AI가 대화 중 상대의 성향을 분석할 예정이에요 + + + + 취소 + 확인 + + + +
+ ) +} diff --git a/apps/react/src/app/partner-result-preview/page.tsx b/apps/react/src/app/partner-result-preview/page.tsx new file mode 100644 index 00000000..9ac8f60b --- /dev/null +++ b/apps/react/src/app/partner-result-preview/page.tsx @@ -0,0 +1,51 @@ +import { createFileRoute, useNavigate, useSearch } from '@tanstack/react-router' + +import { personalityFlowSearchSchema } from '@/features/profile/lib/personality-flow' +import { Screen } from '@/shared/layout/screen' +import { Button } from '@/shared/ui' +import { FlowProgressBar } from '@/shared/ui/flow-progress-bar' +import { DetailHeaderBar } from '@/shared/ui/header-bar' + +export const Route = createFileRoute('/partner-result-preview/')({ + validateSearch: personalityFlowSearchSchema, + component: PartnerResultPreviewPage, +}) + +function PartnerResultPreviewPage() { + const navigate = useNavigate() + const { chatId } = useSearch({ from: Route.id }) + + const handleContinue = () => { + navigate({ to: '/chat', search: { chatId }, replace: true }) + } + + const handleViewResult = () => { + navigate({ + to: '/attachment-test/result/partner', + }) + } + + return ( + + + } /> + + + +
+

+ 상대방의 성향 +
+ 결과가 준비됐어요! +

+

결과지를 확인하거나 상담을 계속 진행해 보세요

+
+ +
+
+
+
+ ) +} From 36d350828554608349bb5627d6441f4f02c145d9 Mon Sep 17 00:00:00 2001 From: hin6150 Date: Sun, 15 Mar 2026 14:35:47 +0900 Subject: [PATCH 03/43] =?UTF-8?q?Feat:=20=EA=B8=B0=EC=A1=B4=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=84=B1=ED=96=A5=20=ED=94=8C=EB=A1=9C?= =?UTF-8?q?=EC=9A=B0=20=EC=97=B0=EB=8F=99=20(MM-188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - attachment-test: flow/chatId 검색 파라미터 전달 - partner-mbti: personalityFlowSearchSchema로 전환, partner-attachment-select로 이동 - mbti-form: navCenter/contentTopSlot 슬롯 추가 - header-bar: DetailHeaderBar center 슬롯 지원 - attachment/index.ts: AttachmentTypeCards export 추가 - ATTACHMENT_OPTIONS 상수 추가 Co-Authored-By: Claude Sonnet 4.6 --- apps/react/src/app/attachment-test/page.tsx | 6 ++- .../src/app/attachment-test/question/page.tsx | 22 ++++++-- apps/react/src/app/partner-mbti/page.tsx | 54 +++++++++---------- .../src/app/relationship-status/page.tsx | 19 ++----- .../hooks/use-attachment-questions.ts | 14 +++-- apps/react/src/features/attachment/index.ts | 3 ++ .../features/attachment/models/constants.ts | 10 ++++ .../src/features/onboarding/ui/mbti-form.tsx | 11 ++-- apps/react/src/shared/ui/header-bar.tsx | 12 +++-- 9 files changed, 91 insertions(+), 60 deletions(-) diff --git a/apps/react/src/app/attachment-test/page.tsx b/apps/react/src/app/attachment-test/page.tsx index 7770fe35..8d4c6532 100644 --- a/apps/react/src/app/attachment-test/page.tsx +++ b/apps/react/src/app/attachment-test/page.tsx @@ -14,6 +14,8 @@ import { DetailHeaderBar } from '@/shared/ui/header-bar' const searchSchema = z.object({ from: z.string().optional(), + flow: z.enum(['my-personality', 'partner-personality', 'chat-entry']).optional(), + chatId: z.number().optional(), }) export const Route = createFileRoute('/attachment-test/')({ @@ -25,7 +27,7 @@ function AttachmentTestPage() { const navigate = useNavigate() const goBack = useGoBack() const { setStatusColor } = useTheme() - const { from } = useSearch({ from: Route.id }) + const { from, flow, chatId } = useSearch({ from: Route.id }) const { userInfo } = useAuth() const nickname = userInfo.nickname || '사용자' @@ -38,7 +40,7 @@ function AttachmentTestPage() { }, []) const handleStartTest = wrapWithTracking(BUTTON_NAMES.START_TEST, CATEGORIES.ATTACHMENT, () => - navigate({ to: '/attachment-test/question', search: { from }, replace: true }) + navigate({ to: '/attachment-test/question', search: { from, flow, chatId }, replace: true }) ) return ( diff --git a/apps/react/src/app/attachment-test/question/page.tsx b/apps/react/src/app/attachment-test/question/page.tsx index fd445991..0bd63240 100644 --- a/apps/react/src/app/attachment-test/question/page.tsx +++ b/apps/react/src/app/attachment-test/question/page.tsx @@ -1,4 +1,4 @@ -import { createFileRoute, useSearch } from '@tanstack/react-router' +import { createFileRoute, useNavigate, useSearch } from '@tanstack/react-router' import { useState } from 'react' import z from 'zod' @@ -19,6 +19,8 @@ import { DetailHeaderBar } from '@/shared/ui/header-bar' const searchSchema = z.object({ from: z.string().optional(), + flow: z.enum(['my-personality', 'partner-personality', 'chat-entry']).optional(), + chatId: z.number().optional(), }) export const Route = createFileRoute('/attachment-test/question/')({ @@ -28,8 +30,20 @@ export const Route = createFileRoute('/attachment-test/question/')({ function AttachmentTestQuestionPage() { const [isGuideOpen, setIsGuideOpen] = useState(true) - const { from } = useSearch({ from: Route.id }) + const { from, flow, chatId } = useSearch({ from: Route.id }) const { userInfo } = useAuth() + const navigate = useNavigate() + + const getOnComplete = () => { + if (flow === 'my-personality') { + return () => navigate({ to: '/attachment-test/result/my', replace: true }) + } + if (flow === 'chat-entry') { + return () => navigate({ to: '/my-result-preview', search: { flow, chatId }, replace: true }) + } + return undefined + } + const { loading, error, @@ -43,7 +57,7 @@ function AttachmentTestQuestionPage() { handleNext, handleSelectAnswer, setQuestionRef, - } = useAttachmentQuestions({ from }) + } = useAttachmentQuestions({ from, onComplete: getOnComplete() }) // 트래킹이 적용된 핸들러들 const handleGoBackWithTracking = wrapWithTracking(BUTTON_NAMES.BACK_TEST, CATEGORIES.ATTACHMENT, handleGoBack) @@ -56,7 +70,6 @@ function AttachmentTestQuestionPage() { const handleSelectAnswerWithTracking = wrapWithTracking( (_questionId: number, score: number) => { - // 선택한 옵션 번호에 따른 버튼 이름 결정 (1-5) const buttonNameMap = { 1: BUTTON_NAMES.SELECT_OPTION_1, 2: BUTTON_NAMES.SELECT_OPTION_2, @@ -75,7 +88,6 @@ function AttachmentTestQuestionPage() { setIsGuideOpen(false) ) - // 로딩 페이지 렌더링 if (isSubmitting) { return } diff --git a/apps/react/src/app/partner-mbti/page.tsx b/apps/react/src/app/partner-mbti/page.tsx index 78ea1680..61489cf3 100644 --- a/apps/react/src/app/partner-mbti/page.tsx +++ b/apps/react/src/app/partner-mbti/page.tsx @@ -1,47 +1,43 @@ -// @deprecated 홈 화면 필수 입력 플로우에서 제거됨. 마이페이지 MBTI 수정 연동 여부 확인 후 삭제 -import { useMutation } from '@tanstack/react-query' import { createFileRoute, useNavigate, useSearch } from '@tanstack/react-router' import { useAuth } from '@/features/auth' import { MbtiForm } from '@/features/onboarding/ui/mbti-form' -import { requiredProfileFlowSearchSchema } from '@/features/profile/lib/required-profile-flow' +import { useMemberUpdateMutation } from '@/features/profile' +import { personalityFlowSearchSchema } from '@/features/profile/lib/personality-flow' import { wrapWithTracking } from '@/shared/analytics' import { BUTTON_NAMES, CATEGORIES } from '@/shared/analytics/constants' import { useGoBack } from '@/shared/navigation/use-go-back' -import memberService from '@/shared/services/member.service' +import { getChatEntryProgressBar } from '@/shared/ui/flow-progress-bar' +import { getPersonalityStepDots } from '@/shared/ui/flow-step-dots' import { toast } from '@/shared/ui/toast' -import type { UpdateMemberRequestDto } from '@data/user-api-axios/api' - export const Route = createFileRoute('/partner-mbti/')({ - validateSearch: requiredProfileFlowSearchSchema, + validateSearch: personalityFlowSearchSchema, component: PartnerMbtiEditPage, }) function PartnerMbtiEditPage() { const navigate = useNavigate() const goBack = useGoBack() - const { userInfo, refreshUserInfo } = useAuth() - const { requiredProfileFlow } = useSearch({ from: Route.id }) - const isRequiredProfileFlow = requiredProfileFlow === true + const { userInfo } = useAuth() + const { flow, chatId } = useSearch({ from: Route.id }) - const updateMutation = useMutation({ - mutationFn: async (body: UpdateMemberRequestDto) => { - const { data } = await memberService.updateMember({ updateMemberRequestDto: body }) - return data - }, - onSuccess: async () => { - await refreshUserInfo() - if (isRequiredProfileFlow) { - navigate({ to: '/', replace: true }) + const updateMutation = useMemberUpdateMutation({ + onSuccess: () => { + if (flow === 'partner-personality') { + navigate({ to: '/partner-attachment-select', search: { flow } }) return } + + if (flow === 'chat-entry') { + navigate({ to: '/partner-attachment-select', search: { flow, chatId } }) + return + } + toast.success('상대 성향이 변경되었어요!') goBack() }, - onError: () => { - toast.error('상대 성향 변경 중 오류가 발생했습니다') - }, + errorMessage: '상대 성향 변경 중 오류가 발생했습니다', }) const trackSave = wrapWithTracking(BUTTON_NAMES.SAVE_PROFILE_PARTNER_MBTI, CATEGORIES.PROFILE) @@ -52,13 +48,13 @@ function PartnerMbtiEditPage() { updateMutation.mutate({ otherPersonalityType: mbti }) } - const handleBack = isRequiredProfileFlow - ? () => navigate({ to: '/mbti', search: { requiredProfileFlow: true }, replace: true }) - : undefined + const isFlowMode = !!flow return ( 상대방 MBTI 성향은 @@ -67,11 +63,11 @@ function PartnerMbtiEditPage() { } initialValue={userInfo.otherPersonalityType} - submitText={isRequiredProfileFlow ? '시작하기' : '변경하기'} - requireChangeForSubmit={!isRequiredProfileFlow} + submitText={isFlowMode ? '다음' : '변경하기'} + requireChangeForSubmit={!isFlowMode} isSubmitting={updateMutation.isPending} onSubmit={handleSubmit} - onBack={handleBack} + onBack={undefined} /> ) } diff --git a/apps/react/src/app/relationship-status/page.tsx b/apps/react/src/app/relationship-status/page.tsx index 175d5ded..b6b92817 100644 --- a/apps/react/src/app/relationship-status/page.tsx +++ b/apps/react/src/app/relationship-status/page.tsx @@ -1,10 +1,9 @@ import { UpdateMemberRequestDtoRelationshipStatusEnum, type UpdateMemberRequestDto } from '@data/user-api-axios/api' import { useMutation } from '@tanstack/react-query' -import { createFileRoute, useNavigate, useSearch } from '@tanstack/react-router' +import { createFileRoute } from '@tanstack/react-router' import { useAuth } from '@/features/auth' import { RelationshipStatusForm } from '@/features/onboarding/ui/relationship-status-form' -import { requiredProfileFlowSearchSchema } from '@/features/profile/lib/required-profile-flow' import { wrapWithTracking } from '@/shared/analytics' import { BUTTON_NAMES, CATEGORIES } from '@/shared/analytics/constants' import { useGoBack } from '@/shared/navigation/use-go-back' @@ -12,7 +11,6 @@ import memberService from '@/shared/services/member.service' import { toast } from '@/shared/ui/toast' export const Route = createFileRoute('/relationship-status/')({ - validateSearch: requiredProfileFlowSearchSchema, component: RelationshipStatusEditPage, }) @@ -28,11 +26,8 @@ const RELATIONSHIP_OPTIONS: { ] function RelationshipStatusEditPage() { - const navigate = useNavigate() const goBack = useGoBack() const { userInfo, refreshUserInfo } = useAuth() - const { requiredProfileFlow } = useSearch({ from: Route.id }) - const isRequiredProfileFlow = requiredProfileFlow === true const updateMutation = useMutation({ mutationFn: async (body: UpdateMemberRequestDto) => { @@ -41,10 +36,6 @@ function RelationshipStatusEditPage() { }, onSuccess: async () => { await refreshUserInfo() - if (isRequiredProfileFlow) { - navigate({ to: '/mbti', search: { requiredProfileFlow: true }, replace: true }) - return - } toast.success('연애 상태가 변경되었어요!') goBack() }, @@ -63,7 +54,7 @@ function RelationshipStatusEditPage() { return ( 현재 연애 상태를 @@ -74,10 +65,10 @@ function RelationshipStatusEditPage() { description="이후에 관계 정보가 바뀌면 변경할 수 있어요" options={RELATIONSHIP_OPTIONS} initialValue={(userInfo.relationshipStatus as RelationshipStatus | undefined) ?? null} - submitText={isRequiredProfileFlow ? '다음' : '변경하기'} - requireChangeForSubmit={!isRequiredProfileFlow} + submitText="변경하기" + requireChangeForSubmit={true} isSubmitting={updateMutation.isPending} - showBackButton={!isRequiredProfileFlow} + showBackButton={true} onSubmit={handleSubmit} /> ) diff --git a/apps/react/src/features/attachment/hooks/use-attachment-questions.ts b/apps/react/src/features/attachment/hooks/use-attachment-questions.ts index 19c06e13..2237ea58 100644 --- a/apps/react/src/features/attachment/hooks/use-attachment-questions.ts +++ b/apps/react/src/features/attachment/hooks/use-attachment-questions.ts @@ -61,9 +61,13 @@ export interface UseAttachmentQuestionsResult { interface UseAttachmentQuestionsOptions { from?: string + onComplete?: () => void } -export function useAttachmentQuestions({ from }: UseAttachmentQuestionsOptions = {}): UseAttachmentQuestionsResult { +export function useAttachmentQuestions({ + from, + onComplete, +}: UseAttachmentQuestionsOptions = {}): UseAttachmentQuestionsResult { const navigate = useNavigate() const goBack = useGoBack() const auth = useAuth() @@ -80,9 +84,13 @@ export function useAttachmentQuestions({ from }: UseAttachmentQuestionsOptions = onSuccess: async () => { await auth.refreshUserInfo() - // 2초 후 결과 페이지로 이동 + // 2초 후 다음 페이지로 이동 setTimeout(() => { - navigate({ to: '/attachment-test/result/my', search: { from }, replace: true }) + if (onComplete) { + onComplete() + } else { + navigate({ to: '/attachment-test/result/my', search: { from }, replace: true }) + } }, QUESTION_CONFIG.SUBMISSION_DELAY) }, onError: (_error: any) => { diff --git a/apps/react/src/features/attachment/index.ts b/apps/react/src/features/attachment/index.ts index 0b5dd854..87e2f34b 100644 --- a/apps/react/src/features/attachment/index.ts +++ b/apps/react/src/features/attachment/index.ts @@ -26,3 +26,6 @@ export * from './ui/result/attachment-result-content' export * from './ui/main/attachment-test-intro' export * from './ui/main/attachment-test-info-section' export * from './ui/main/attachment-types-section' + +// 홈 카드 컴포넌트 +export * from './ui/attachment-type-cards' diff --git a/apps/react/src/features/attachment/models/constants.ts b/apps/react/src/features/attachment/models/constants.ts index 4a6b8568..6f3dd4ba 100644 --- a/apps/react/src/features/attachment/models/constants.ts +++ b/apps/react/src/features/attachment/models/constants.ts @@ -1,3 +1,5 @@ +import type { MemberDataLoveTypeCategoryEnum } from '@data/user-api-axios/api' + // 질문 페이지 설정 export const QUESTION_CONFIG = { TOTAL_PAGES: 4, @@ -10,3 +12,11 @@ export const SCORE_RANGE = { MIN: 1, MAX: 5, } + +// 애착유형 선택 옵션 +export const ATTACHMENT_OPTIONS: { label: string; value: MemberDataLoveTypeCategoryEnum }[] = [ + { label: '연인을 신뢰하고 감정을 잘 표현하는 안정형', value: 'STABLE_TYPE' }, + { label: '연인과 멀어질까봐 자주 걱정하는 불안형', value: 'ANXIETY_TYPE' }, + { label: '연인과의 관계가 좁혀질수록 거리가 필요한 회피형', value: 'AVOIDANCE_TYPE' }, + { label: '연인과 가까워지고 싶지만 거리를 두게 되는 혼란형', value: 'CONFUSION_TYPE' }, +] diff --git a/apps/react/src/features/onboarding/ui/mbti-form.tsx b/apps/react/src/features/onboarding/ui/mbti-form.tsx index 7f01e904..01894295 100644 --- a/apps/react/src/features/onboarding/ui/mbti-form.tsx +++ b/apps/react/src/features/onboarding/ui/mbti-form.tsx @@ -64,6 +64,8 @@ interface MbtiFormProps { title: ReactNode description?: ReactNode headerTitle?: string + navCenter?: ReactNode + contentTopSlot?: ReactNode initialValue?: string | null submitText: string requireChangeForSubmit?: boolean @@ -76,6 +78,8 @@ export function MbtiForm({ title, description, headerTitle, + navCenter, + contentTopSlot, initialValue = null, submitText, requireChangeForSubmit = false, @@ -134,10 +138,11 @@ export function MbtiForm({ return ( - + + {contentTopSlot}
@@ -159,9 +164,7 @@ export function MbtiForm({

{option.label} diff --git a/apps/react/src/shared/ui/header-bar.tsx b/apps/react/src/shared/ui/header-bar.tsx index b2e118f9..522df12c 100644 --- a/apps/react/src/shared/ui/header-bar.tsx +++ b/apps/react/src/shared/ui/header-bar.tsx @@ -7,6 +7,7 @@ import type { ReactNode } from 'react' interface DetailHeaderBarProps { title?: string + center?: ReactNode right?: ReactNode left?: ReactNode showBackButton?: boolean @@ -16,6 +17,7 @@ interface DetailHeaderBarProps { export function DetailHeaderBar({ title, + center, right, left, onBackClick, @@ -39,7 +41,7 @@ export function DetailHeaderBar({ className )} > -

+
{showBackButton && !left && (
- {/* Title Area */} - {title &&

{title}

} + {/* Center Area (takes priority over title) */} + {center ? ( +
{center}
+ ) : ( + title &&

{title}

+ )} {/* Right Area */}
{right}
From 81c7a190f41f0170dccc9644b8e2acfc8e970113 Mon Sep 17 00:00:00 2001 From: hin6150 Date: Sun, 15 Mar 2026 14:35:58 +0900 Subject: [PATCH 04/43] =?UTF-8?q?Feat:=20=EA=B2=B0=EA=B3=BC=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20CTA=20from=20=EB=B6=84=EA=B8=B0=20=EB=B0=8F=20?= =?UTF-8?q?=EC=B9=B4=ED=94=BC=20=EC=88=98=EC=A0=95=20(MM-188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - isFromChat boolean → from: 'home' | 'chat' | 'my-page' prop으로 리팩토링 - from='my-page': "마이페이지로 가기", from='chat': "상담하러 가기", 그 외: "홈으로 가기" - "홈으로 이동하기" → "홈으로 가기" 카피 통일 Co-Authored-By: Claude Sonnet 4.6 --- apps/react/src/app/attachment-test/result/my/page.tsx | 4 ++-- .../attachment/ui/result/attachment-result-content.tsx | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/react/src/app/attachment-test/result/my/page.tsx b/apps/react/src/app/attachment-test/result/my/page.tsx index 1c229ddf..66835a31 100644 --- a/apps/react/src/app/attachment-test/result/my/page.tsx +++ b/apps/react/src/app/attachment-test/result/my/page.tsx @@ -24,7 +24,7 @@ export const Route = createFileRoute('/attachment-test/result/my/')({ function MyAttachmentResultPage() { const { userInfo } = useAuth() const { from } = Route.useSearch() - const isFromChat = from === '/chat' + const fromProp = from === '/chat' ? 'chat' : from === 'my-page' ? 'my-page' : 'home' - return + return } diff --git a/apps/react/src/features/attachment/ui/result/attachment-result-content.tsx b/apps/react/src/features/attachment/ui/result/attachment-result-content.tsx index 88db5e0e..15b74fc2 100644 --- a/apps/react/src/features/attachment/ui/result/attachment-result-content.tsx +++ b/apps/react/src/features/attachment/ui/result/attachment-result-content.tsx @@ -25,14 +25,14 @@ interface UserInfo { interface AttachmentResultContentProps { userInfo: UserInfo | null | undefined type: 'my' | 'partner' - isFromChat?: boolean + from?: 'home' | 'chat' | 'my-page' } -export function AttachmentResultContent({ userInfo, type, isFromChat = false }: AttachmentResultContentProps) { +export function AttachmentResultContent({ userInfo, type, from }: AttachmentResultContentProps) { const navigate = useNavigate() const goBack = useGoBack() const isMyResult = type === 'my' - const ctaText = isFromChat ? '상담하러 가기' : '홈으로 이동하기' + const ctaText = from === 'chat' ? '상담하러 가기' : from === 'my-page' ? '마이페이지로 가기' : '홈으로 가기' // 결과 데이터 확인 if (!userInfo?.loveTypeCategory) { From a58ec24e763e1350158fabf06582fdf1a3381945 Mon Sep 17 00:00:00 2001 From: hin6150 Date: Sun, 15 Mar 2026 14:36:37 +0900 Subject: [PATCH 05/43] =?UTF-8?q?Feat:=20=EB=A7=88=EC=9D=B4=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=84=B1=ED=96=A5=20=EC=B9=A9=20MBTI+?= =?UTF-8?q?=EC=95=A0=EC=B0=A9=EC=9C=A0=ED=98=95=20=ED=95=A9=EC=82=B0=20?= =?UTF-8?q?=ED=91=9C=EC=8B=9C=20(MM-188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - MemberData에 partnerLoveTypeCategory 필드 추가 - UpdateMemberRequestDto에 otherLoveTypeCategory 필드 추가 - UserInfo에 partnerLoveTypeCategory 추가 및 _fetchUserInfo 매핑 - 내 성향 배지: {MBTI} {애착유형} 형태로 변경 (예: "INFP 불안형") - loveTypeCategory 미입력 시 배지 미표출 ("미입력" 제거) Co-Authored-By: Claude Sonnet 4.6 --- apps/react/src/app/my-page/profile/page.tsx | 11 +++++--- .../src/features/auth/hooks/use-auth.tsx | 4 +++ .../user-api-axios/api/models/member-data.ts | 26 +++++++++++++++++ .../api/models/update-member-request-dto.ts | 28 +++++++++++++++++++ 4 files changed, 65 insertions(+), 4 deletions(-) diff --git a/apps/react/src/app/my-page/profile/page.tsx b/apps/react/src/app/my-page/profile/page.tsx index 02bd9854..e94d66a3 100644 --- a/apps/react/src/app/my-page/profile/page.tsx +++ b/apps/react/src/app/my-page/profile/page.tsx @@ -1,5 +1,6 @@ import { createFileRoute, useNavigate } from '@tanstack/react-router' +import { getAttachmentType } from '@/features/attachment' import { useAuth } from '@/features/auth' import { wrapWithTracking } from '@/shared/analytics' import { BUTTON_NAMES, CATEGORIES } from '@/shared/analytics/constants' @@ -18,9 +19,11 @@ function ProfileManagementPage() { const myMbti = userInfo.personalityType?.toUpperCase() const partnerMbti = userInfo.otherPersonalityType?.toUpperCase() + const myAttachmentSubtype = getAttachmentType(userInfo.loveTypeCategory)?.subtype + const myBadgeText = myAttachmentSubtype ? `${myMbti ? myMbti + ' ' : ''}${myAttachmentSubtype}` : undefined return ( - + @@ -35,16 +38,16 @@ function ProfileManagementPage() { /> - navigate({ to: '/mbti' }) + navigate({ to: '/mbti', search: { flow: 'my-personality' } }) )} /> - navigate({ to: '/partner-mbti' }) + navigate({ to: '/partner-mbti', search: { flow: 'partner-personality' } }) )} />
diff --git a/apps/react/src/features/auth/hooks/use-auth.tsx b/apps/react/src/features/auth/hooks/use-auth.tsx index 5a78f749..995a0031 100644 --- a/apps/react/src/features/auth/hooks/use-auth.tsx +++ b/apps/react/src/features/auth/hooks/use-auth.tsx @@ -2,6 +2,7 @@ import { SocialLoginType } from '@bridge/types' import { MemberDataMemberStateEnum, MemberDataLoveTypeCategoryEnum, + MemberDataPartnerLoveTypeCategoryEnum, MemberDataProviderEnum, MemberDataRelationshipStatusEnum, } from '@data/user-api-axios/api' @@ -21,6 +22,7 @@ export type UserInfo = { provider?: MemberDataProviderEnum nickname?: string loveTypeCategory?: MemberDataLoveTypeCategoryEnum + partnerLoveTypeCategory?: MemberDataPartnerLoveTypeCategoryEnum relationshipStatus?: MemberDataRelationshipStatusEnum personalityType?: string otherPersonalityType?: string @@ -52,6 +54,7 @@ const initialUserInfo: UserInfo = { provider: undefined, nickname: undefined, loveTypeCategory: undefined, + partnerLoveTypeCategory: undefined, relationshipStatus: undefined, personalityType: undefined, otherPersonalityType: undefined, @@ -81,6 +84,7 @@ export function AuthProvider({ children }: { children: ReactNode }) { provider: memberInfo.data.data.provider || undefined, nickname: memberInfo.data.data.nickname, loveTypeCategory: memberInfo.data.data.loveTypeCategory || undefined, + partnerLoveTypeCategory: memberInfo.data.data.partnerLoveTypeCategory || undefined, relationshipStatus: memberInfo.data.data.relationshipStatus || undefined, personalityType: memberInfo.data.data.personalityType || undefined, otherPersonalityType: memberInfo.data.data.otherPersonalityType || undefined, diff --git a/packages/data/user-api-axios/api/models/member-data.ts b/packages/data/user-api-axios/api/models/member-data.ts index 0ff636e7..555fd28f 100644 --- a/packages/data/user-api-axios/api/models/member-data.ts +++ b/packages/data/user-api-axios/api/models/member-data.ts @@ -71,6 +71,21 @@ export interface MemberData { * TODO: 백엔드 API 스키마 반영 후 코드 재생성 필요 */ otherPersonalityType?: string + /** + * 내 MBTI (신규 필드) + * TODO: 백엔드 API 스키마 반영 후 코드 재생성 필요 + */ + mbti?: string + /** + * 상대방 MBTI (신규 필드) + * TODO: 백엔드 API 스키마 반영 후 코드 재생성 필요 + */ + partnerMbti?: string + /** + * 상대방 애착 유형 (UNKNOWN = "모르겠어요" 선택됨, undefined = 미입력) + * TODO: 백엔드 API 스키마 반영 후 코드 재생성 필요 + */ + partnerLoveTypeCategory?: MemberDataPartnerLoveTypeCategoryEnum } export const MemberDataMemberStateEnum = { @@ -104,3 +119,14 @@ export const MemberDataRelationshipStatusEnum = { export type MemberDataRelationshipStatusEnum = (typeof MemberDataRelationshipStatusEnum)[keyof typeof MemberDataRelationshipStatusEnum] +// TODO: 백엔드 API 스키마 반영 후 코드 재생성 필요 +export const MemberDataPartnerLoveTypeCategoryEnum = { + StableType: 'STABLE_TYPE', + AnxietyType: 'ANXIETY_TYPE', + AvoidanceType: 'AVOIDANCE_TYPE', + ConfusionType: 'CONFUSION_TYPE', + Unknown: 'UNKNOWN', +} as const + +export type MemberDataPartnerLoveTypeCategoryEnum = + (typeof MemberDataPartnerLoveTypeCategoryEnum)[keyof typeof MemberDataPartnerLoveTypeCategoryEnum] diff --git a/packages/data/user-api-axios/api/models/update-member-request-dto.ts b/packages/data/user-api-axios/api/models/update-member-request-dto.ts index 2774ea4d..68ddab4f 100644 --- a/packages/data/user-api-axios/api/models/update-member-request-dto.ts +++ b/packages/data/user-api-axios/api/models/update-member-request-dto.ts @@ -17,8 +17,36 @@ export interface UpdateMemberRequestDto { relationshipStatus?: UpdateMemberRequestDtoRelationshipStatusEnum personalityType?: string otherPersonalityType?: string + loveTypeCategory?: UpdateMemberRequestDtoLoveTypeCategoryEnum + /** + * 상대방 애착 유형 (UNKNOWN = "모르겠어요" 선택됨) + * TODO: 백엔드 API 스키마 반영 후 코드 재생성 필요 + */ + otherLoveTypeCategory?: UpdateMemberRequestDtoOtherLoveTypeCategoryEnum | null } +export const UpdateMemberRequestDtoLoveTypeCategoryEnum = { + StableType: 'STABLE_TYPE', + AnxietyType: 'ANXIETY_TYPE', + AvoidanceType: 'AVOIDANCE_TYPE', + ConfusionType: 'CONFUSION_TYPE', +} as const + +export type UpdateMemberRequestDtoLoveTypeCategoryEnum = + (typeof UpdateMemberRequestDtoLoveTypeCategoryEnum)[keyof typeof UpdateMemberRequestDtoLoveTypeCategoryEnum] + +// TODO: 백엔드 API 스키마 반영 후 코드 재생성 필요 +export const UpdateMemberRequestDtoOtherLoveTypeCategoryEnum = { + StableType: 'STABLE_TYPE', + AnxietyType: 'ANXIETY_TYPE', + AvoidanceType: 'AVOIDANCE_TYPE', + ConfusionType: 'CONFUSION_TYPE', + Unknown: 'UNKNOWN', +} as const + +export type UpdateMemberRequestDtoOtherLoveTypeCategoryEnum = + (typeof UpdateMemberRequestDtoOtherLoveTypeCategoryEnum)[keyof typeof UpdateMemberRequestDtoOtherLoveTypeCategoryEnum] + export const UpdateMemberRequestDtoRelationshipStatusEnum = { InRelationship: 'IN_RELATIONSHIP', SeeingSomeone: 'SEEING_SOMEONE', From 3013bc4482f1d74ff7b4f25f96f820400f629c58 Mon Sep 17 00:00:00 2001 From: hin6150 Date: Sun, 15 Mar 2026 14:36:54 +0900 Subject: [PATCH 06/43] =?UTF-8?q?Feat:=20=ED=99=88=20=ED=99=94=EB=A9=B4=20?= =?UTF-8?q?=EC=84=B1=ED=96=A5=20=EB=B0=B0=EB=84=88=C2=B7=EC=B9=B4=EB=93=9C?= =?UTF-8?q?=20=ED=88=B4=ED=8C=81=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20?= =?UTF-8?q?=EB=B6=84=EA=B8=B0=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?(MM-188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AttachmentTestBanner: 카피 "아직 채우지 않은 성향 카드가 {N}건 있어요!"로 변경, onClick/count props 추가 - AttachmentTypeCards: isPartnerUnknown=true 시 AI 분석 예정 툴팁 표출, 카드 클릭 시 툴팁 해제 - 홈 화면: 미완성 성향 카드 수 계산 후 배너 조건부 렌더링, partnerLoveTypeCategory 기반 분기 로직 수정 Co-Authored-By: Claude Sonnet 4.6 --- apps/react/src/app/page.tsx | 23 ++++- .../attachment/ui/attachment-test-banner.tsx | 38 +++++---- .../attachment/ui/attachment-type-cards.tsx | 83 +++++++++++-------- 3 files changed, 92 insertions(+), 52 deletions(-) diff --git a/apps/react/src/app/page.tsx b/apps/react/src/app/page.tsx index 236a1897..d5448c6f 100644 --- a/apps/react/src/app/page.tsx +++ b/apps/react/src/app/page.tsx @@ -2,6 +2,7 @@ import { createFileRoute, useNavigate } from '@tanstack/react-router' import malmoLogo from '@/assets/images/malmo-logo-small.png' import { getAttachmentType, AttachmentTypeCards } from '@/features/attachment' +import { AttachmentTestBanner } from '@/features/attachment/ui/attachment-test-banner' import { useAuth } from '@/features/auth' import { ChatEntryCard } from '@/features/chat/ui/chat-entry-card' import { useChatHistoryQuery } from '@/features/history/hooks/use-chat-history-query' @@ -33,6 +34,20 @@ function HomePage() { const myAttachmentType = myAttachmentData?.subtype const partnerAttachmentType = partnerAttachmentData?.subtype + // 배너 - 미완성 성향 카드 수 + const missingPersonalityCount = + (!userInfo.loveTypeCategory ? 1 : 0) + + (!userInfo.partnerLoveTypeCategory || userInfo.partnerLoveTypeCategory === 'UNKNOWN' ? 1 : 0) + + const handleBannerClick = () => { + const myComplete = !!userInfo.personalityType && !!userInfo.loveTypeCategory + if (!myComplete) { + navigate({ to: '/mbti', search: { flow: 'my-personality' } }) + } else { + navigate({ to: '/partner-mbti', search: { flow: 'partner-personality' } }) + } + } + // 내 성향카드 클릭 const handleMyCardClick = () => { const myComplete = !!userInfo.personalityType && !!userInfo.loveTypeCategory @@ -49,8 +64,8 @@ function HomePage() { // 상대 성향카드 클릭 const handlePartnerCardClick = () => { - // 상대 애착유형 저장 필드가 없으므로 otherPersonalityType으로 완료 여부 판단 (TODO: BE 필드 추가 후 개선) - const partnerComplete = !!userInfo.otherPersonalityType && !!partnerAttachmentData + const partnerComplete = + !!userInfo.partnerLoveTypeCategory && userInfo.partnerLoveTypeCategory !== 'UNKNOWN' && !!partnerAttachmentData if (partnerComplete) { navigate({ to: '/attachment-test/result/partner' }) return @@ -73,6 +88,10 @@ function HomePage() { + {missingPersonalityCount > 0 && ( + + )} + void +} + +export function AttachmentTestBanner({ missingCount, onClick }: AttachmentTestBannerProps) { return ( - -
{})} - > -
- Note - {/* 텍스트와 아이콘 */} -
- 내 애착유형 테스트하러 가기 +
+
+ Note + {/* 텍스트와 아이콘 */} +
+ + 아직 채우지 않은 성향 카드가 {missingCount}건 있어요! + - {/* Chevron 아이콘 */} -
- -
+ {/* Chevron 아이콘 */} +
+
- +
) } diff --git a/apps/react/src/features/attachment/ui/attachment-type-cards.tsx b/apps/react/src/features/attachment/ui/attachment-type-cards.tsx index 40608dd8..4cdf971e 100644 --- a/apps/react/src/features/attachment/ui/attachment-type-cards.tsx +++ b/apps/react/src/features/attachment/ui/attachment-type-cards.tsx @@ -1,5 +1,5 @@ -import { Link } from '@tanstack/react-router' import { ChevronRight } from 'lucide-react' +import { useState } from 'react' import MyMysteryMomo from '@/assets/icons/my-mystery.svg' import PartnerMysteryMomo from '@/assets/icons/partner-mystery.svg' @@ -12,7 +12,9 @@ interface AttachmentTypeCardsProps { partnerAttachmentData: AttachmentTypeData | null myAttachmentType: string | undefined partnerAttachmentType: string | undefined - isPartnerConnected: boolean + isPartnerUnknown?: boolean + onMyCardClick: () => void + onPartnerCardClick: () => void } export function AttachmentTypeCards({ @@ -20,42 +22,59 @@ export function AttachmentTypeCards({ partnerAttachmentData, myAttachmentType, partnerAttachmentType, - isPartnerConnected, + isPartnerUnknown = false, + onMyCardClick, + onPartnerCardClick, }: AttachmentTypeCardsProps) { - const safePartnerAttachmentData = isPartnerConnected ? partnerAttachmentData : null - const safePartnerAttachmentType = isPartnerConnected ? partnerAttachmentType : undefined + const [showTooltip, setShowTooltip] = useState(true) + + const handlePartnerCardClick = () => { + if (showTooltip && isPartnerUnknown) { + setShowTooltip(false) + } + onPartnerCardClick() + } + + const getPartnerBadgeText = () => { + if (partnerAttachmentType) return partnerAttachmentType + if (isPartnerUnknown) return 'AI 분석 예정' + return '입력 필요' + } + + const getPartnerBadgeVariant = (): 'default' | 'required' | 'rasberry' => { + if (partnerAttachmentData) return 'default' + if (isPartnerUnknown) return 'rasberry' + return 'required' + } const cards = [ { - title: '나의 애착유형', + title: '나의 성향', attachmentData: myAttachmentData, attachmentType: myAttachmentType, - badgeText: myAttachmentType || '검사 필요', + badgeText: myAttachmentType || '입력 필요', + badgeVariant: myAttachmentData ? ('default' as const) : ('required' as const), mysteryIcon: MyMysteryMomo, - navigationTo: myAttachmentData ? '/attachment-test/result/my' : '/attachment-test', + onClick: onMyCardClick, }, { - title: '연인의 애착유형', - attachmentData: safePartnerAttachmentData, - attachmentType: safePartnerAttachmentType, - badgeText: safePartnerAttachmentType || (!isPartnerConnected ? '연동 필요' : '검사 필요'), + title: '상대의 성향', + attachmentData: partnerAttachmentData, + attachmentType: partnerAttachmentType, + badgeText: getPartnerBadgeText(), + badgeVariant: getPartnerBadgeVariant(), mysteryIcon: PartnerMysteryMomo, - navigationTo: safePartnerAttachmentData - ? '/attachment-test/result/partner' - : !isPartnerConnected - ? '/partner-status?type=not-connected' - : '/partner-status?type=not-tested', + onClick: handlePartnerCardClick, }, ] return ( -
-

애착유형 카드

+
+

연애 성향 카드

- {/* 카드 컨테이너 */}
- {cards.map((card) => { - const CardContent = ( + {cards.map((card) => ( +
{/* 카드 헤더 */}
@@ -65,9 +84,8 @@ export function AttachmentTypeCards({ {/* 카드 내용 */}
- {/* 상태 뱃지 */} - {/* 애착유형 캐릭터 이미지 */}
{card.attachmentData?.cardImage ? (
- ) - - return ( -
- {CardContent} -
- ) - })} +
+ ))}
+ + {isPartnerUnknown && showTooltip && ( +
+

AI가 대화 중 상대의 성향을 분석할 예정이에요

+
+ )}
) } From a0b21a3845b32407a687a4f61989f53a124cb2a3 Mon Sep 17 00:00:00 2001 From: hin6150 Date: Sun, 15 Mar 2026 14:37:13 +0900 Subject: [PATCH 07/43] =?UTF-8?q?Chore:=20gitignore=20.omc=20=EB=94=94?= =?UTF-8?q?=EB=A0=89=ED=86=A0=EB=A6=AC=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20?= =?UTF-8?q?=EB=AA=A8=EB=B0=94=EC=9D=BC=20URL=20=EC=A3=BC=EC=84=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20(MM-188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- .gitignore | 3 +++ apps/mobile/app/index.tsx | 1 + 2 files changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 2f89402e..b2c2a181 100644 --- a/.gitignore +++ b/.gitignore @@ -38,6 +38,9 @@ yarn-error.log* .DS_Store *.pem +# OMC +.omc/ + # Expo apps/mobile/ios/ apps/mobile/android/ diff --git a/apps/mobile/app/index.tsx b/apps/mobile/app/index.tsx index fd890b12..e4fa7ecb 100644 --- a/apps/mobile/app/index.tsx +++ b/apps/mobile/app/index.tsx @@ -28,6 +28,7 @@ export default function App() { const [isAuthReady, setIsAuthReady] = useState(false) const webviewUrl = process.env.EXPO_PUBLIC_LOCAL_URL + // const webviewUrl = process.env.EXPO_PUBLIC_WEB_VIEW_URL if (!webviewUrl) throw new Error('Webview URL is not set') useEffect(() => { From 25088f0f44b5ee8a73939740bbdaa4dade180a7d Mon Sep 17 00:00:00 2001 From: hin6150 Date: Sun, 15 Mar 2026 14:42:07 +0900 Subject: [PATCH 08/43] =?UTF-8?q?Feat:=20=EC=84=B1=ED=96=A5=20=ED=94=8C?= =?UTF-8?q?=EB=A1=9C=EC=9A=B0=20=EC=A7=84=EC=9E=85=20=EC=A0=84=201.5?= =?UTF-8?q?=EC=B4=88=20=EB=A1=9C=EB=94=A9=20=ED=99=94=EB=A9=B4=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20(MM-188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - PersonalityFlowLoadingPage: note 로티 + "성향 프로필 생성중..." 표시 후 1.5초 뒤 플로우 이동 - chat-entry-card: 새 대화 시작 후 /mbti 직접 이동 → /personality-flow-loading 경유로 변경 - 홈 배너 클릭도 /personality-flow-loading 경유로 변경 Co-Authored-By: Claude Sonnet 4.6 --- apps/react/src/app/page.tsx | 4 +- .../src/app/personality-flow-loading/page.tsx | 49 +++++++++++++++++++ .../src/features/chat/ui/chat-entry-card.tsx | 2 +- 3 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 apps/react/src/app/personality-flow-loading/page.tsx diff --git a/apps/react/src/app/page.tsx b/apps/react/src/app/page.tsx index d5448c6f..afa290a5 100644 --- a/apps/react/src/app/page.tsx +++ b/apps/react/src/app/page.tsx @@ -42,9 +42,9 @@ function HomePage() { const handleBannerClick = () => { const myComplete = !!userInfo.personalityType && !!userInfo.loveTypeCategory if (!myComplete) { - navigate({ to: '/mbti', search: { flow: 'my-personality' } }) + navigate({ to: '/personality-flow-loading', search: { flow: 'my-personality' } }) } else { - navigate({ to: '/partner-mbti', search: { flow: 'partner-personality' } }) + navigate({ to: '/personality-flow-loading', search: { flow: 'partner-personality' } }) } } diff --git a/apps/react/src/app/personality-flow-loading/page.tsx b/apps/react/src/app/personality-flow-loading/page.tsx new file mode 100644 index 00000000..696f804b --- /dev/null +++ b/apps/react/src/app/personality-flow-loading/page.tsx @@ -0,0 +1,49 @@ +import { createFileRoute, useNavigate, useSearch } from '@tanstack/react-router' +import Lottie from 'lottie-react' +import { useEffect } from 'react' + +import noteAnimation from '@/assets/lottie/note.json' +import { personalityFlowSearchSchema } from '@/features/profile/lib/personality-flow' +import { Screen } from '@/shared/layout/screen' + +export const Route = createFileRoute('/personality-flow-loading/')({ + validateSearch: personalityFlowSearchSchema, + component: PersonalityFlowLoadingPage, +}) + +function PersonalityFlowLoadingPage() { + const navigate = useNavigate() + const { flow, chatId } = useSearch({ from: Route.id }) + + useEffect(() => { + const timer = setTimeout(() => { + if (flow === 'chat-entry') { + navigate({ to: '/mbti', search: { flow, chatId }, replace: true }) + } else if (flow === 'partner-personality') { + navigate({ to: '/partner-mbti', search: { flow }, replace: true }) + } else { + navigate({ to: '/mbti', search: { flow: 'my-personality' }, replace: true }) + } + }, 1500) + + return () => clearTimeout(timer) + }, []) + + return ( + + +
+ +
+

성향 프로필 생성중...

+

+ 나와 상대의 프로필을 완성하면 +
+ 연애 상담을 진행할 수 있어요! +

+
+
+
+
+ ) +} diff --git a/apps/react/src/features/chat/ui/chat-entry-card.tsx b/apps/react/src/features/chat/ui/chat-entry-card.tsx index 7f2713f2..2a58a3e4 100644 --- a/apps/react/src/features/chat/ui/chat-entry-card.tsx +++ b/apps/react/src/features/chat/ui/chat-entry-card.tsx @@ -26,7 +26,7 @@ export function ChatEntryCard() { createdAt: new Date().toISOString(), }) - navigate({ to: '/mbti', search: { flow: 'chat-entry', chatId: createdId } }) + navigate({ to: '/personality-flow-loading', search: { flow: 'chat-entry', chatId: createdId } }) }) return ( From ac765e90a777b85be9a5dc5b4e999ca0370c68c5 Mon Sep 17 00:00:00 2001 From: hin6150 Date: Sun, 15 Mar 2026 15:04:55 +0900 Subject: [PATCH 09/43] =?UTF-8?q?Feat:=20key-message-banner=20=EA=B3=B5?= =?UTF-8?q?=ED=86=B5=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B0=8F=20=ED=99=88=20=EB=B0=B0=EB=84=88=20?= =?UTF-8?q?=EA=B5=90=EC=B2=B4=20(MM-188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - key-message-banner 컴포넌트 추가 (icon, subtitle, title, onClick) - bell-notification-icon 컴포넌트 추가 (amber 벨 + 빨간 알림 dot) - attachment-test-banner 제거 후 key-message-banner로 대체 - 홈 상담 카드 하단 여백(mb-4) 추가 Co-Authored-By: Claude Sonnet 4.6 --- apps/react/src/app/page.tsx | 9 ++++- .../attachment/ui/attachment-test-banner.tsx | 34 ----------------- .../src/features/chat/ui/chat-entry-card.tsx | 2 +- .../src/shared/ui/key-message-banner.tsx | 37 +++++++++++++++++++ 4 files changed, 45 insertions(+), 37 deletions(-) delete mode 100644 apps/react/src/features/attachment/ui/attachment-test-banner.tsx create mode 100644 apps/react/src/shared/ui/key-message-banner.tsx diff --git a/apps/react/src/app/page.tsx b/apps/react/src/app/page.tsx index afa290a5..91667d77 100644 --- a/apps/react/src/app/page.tsx +++ b/apps/react/src/app/page.tsx @@ -2,7 +2,6 @@ import { createFileRoute, useNavigate } from '@tanstack/react-router' import malmoLogo from '@/assets/images/malmo-logo-small.png' import { getAttachmentType, AttachmentTypeCards } from '@/features/attachment' -import { AttachmentTestBanner } from '@/features/attachment/ui/attachment-test-banner' import { useAuth } from '@/features/auth' import { ChatEntryCard } from '@/features/chat/ui/chat-entry-card' import { useChatHistoryQuery } from '@/features/history/hooks/use-chat-history-query' @@ -11,6 +10,7 @@ import { usePartnerInfo } from '@/features/member' import { useAppNotifications } from '@/features/notification' import { Screen } from '@/shared/layout/screen' import { BottomNavigation } from '@/shared/ui/bottom-navigation' +import { BellNotificationIcon, KeyMessageBanner } from '@/shared/ui/key-message-banner' export const Route = createFileRoute('/')({ component: HomePage, @@ -89,7 +89,12 @@ function HomePage() { {missingPersonalityCount > 0 && ( - + } + subtitle={`아직 채우지 않은 성향 카드 ${missingPersonalityCount}건`} + title="완성하러 가기" + onClick={handleBannerClick} + /> )} diff --git a/apps/react/src/features/attachment/ui/attachment-test-banner.tsx b/apps/react/src/features/attachment/ui/attachment-test-banner.tsx deleted file mode 100644 index a682b7e9..00000000 --- a/apps/react/src/features/attachment/ui/attachment-test-banner.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { ChevronRight } from 'lucide-react' - -import noteImage from '@/assets/images/note-home.png' -import { wrapWithTracking } from '@/shared/analytics' -import { BUTTON_NAMES, CATEGORIES } from '@/shared/analytics/constants' - -interface AttachmentTestBannerProps { - missingCount: number - onClick: () => void -} - -export function AttachmentTestBanner({ missingCount, onClick }: AttachmentTestBannerProps) { - return ( -
-
- Note - {/* 텍스트와 아이콘 */} -
- - 아직 채우지 않은 성향 카드가 {missingCount}건 있어요! - - - {/* Chevron 아이콘 */} -
- -
-
-
-
- ) -} diff --git a/apps/react/src/features/chat/ui/chat-entry-card.tsx b/apps/react/src/features/chat/ui/chat-entry-card.tsx index 2a58a3e4..7f69ae30 100644 --- a/apps/react/src/features/chat/ui/chat-entry-card.tsx +++ b/apps/react/src/features/chat/ui/chat-entry-card.tsx @@ -35,7 +35,7 @@ export function ChatEntryCard() {

연애 고민 상담

{/* 연애고민상담 박스 */} -
+
{/* 상단 컨텐츠 */}
diff --git a/apps/react/src/shared/ui/key-message-banner.tsx b/apps/react/src/shared/ui/key-message-banner.tsx new file mode 100644 index 00000000..4c5150dd --- /dev/null +++ b/apps/react/src/shared/ui/key-message-banner.tsx @@ -0,0 +1,37 @@ +import { Bell, ChevronRight } from 'lucide-react' + +interface KeyMessageBannerProps { + icon?: React.ReactNode + subtitle?: string + title: string + onClick: () => void +} + +export function KeyMessageBanner({ icon, subtitle, title, onClick }: KeyMessageBannerProps) { + return ( +
+ {icon &&
{icon}
} + +
+ {subtitle && {subtitle}} + {title} +
+ +
+ +
+
+ ) +} + +export function BellNotificationIcon() { + return ( +
+ + +
+ ) +} From 57a362053993875d5072727925f0d70084871994 Mon Sep 17 00:00:00 2001 From: hin6150 Date: Sun, 15 Mar 2026 15:05:09 +0900 Subject: [PATCH 10/43] =?UTF-8?q?Feat:=20my-attachment-select=20UX=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0=20(MM-188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 선택 state 추가 후 즉시 저장 → 버튼 클릭 시 저장으로 변경 - key-message-banner 상단 배치 - 건너뛰기 버튼 제거 → 프로필 완성! 버튼으로 교체 Co-Authored-By: Claude Sonnet 4.6 --- .../src/app/my-attachment-select/page.tsx | 48 +++++++++---------- apps/react/src/routeTree.gen.ts | 26 ++++++++++ 2 files changed, 49 insertions(+), 25 deletions(-) diff --git a/apps/react/src/app/my-attachment-select/page.tsx b/apps/react/src/app/my-attachment-select/page.tsx index 8cc6c5e4..a9950df5 100644 --- a/apps/react/src/app/my-attachment-select/page.tsx +++ b/apps/react/src/app/my-attachment-select/page.tsx @@ -1,17 +1,19 @@ import { useMutation } from '@tanstack/react-query' import { createFileRoute, useNavigate, useSearch } from '@tanstack/react-router' +import { useState } from 'react' import { ATTACHMENT_OPTIONS } from '@/features/attachment' import { useAuth } from '@/features/auth' import { TitleSection } from '@/features/onboarding/ui/title-section' import { personalityFlowSearchSchema } from '@/features/profile/lib/personality-flow' import { Screen } from '@/shared/layout/screen' -import { cn } from '@/shared/lib/cn' import memberService from '@/shared/services/member.service' import { Button } from '@/shared/ui' import { getChatEntryProgressBar } from '@/shared/ui/flow-progress-bar' import { getPersonalityStepDots } from '@/shared/ui/flow-step-dots' import { DetailHeaderBar } from '@/shared/ui/header-bar' +import { KeyMessageBanner } from '@/shared/ui/key-message-banner' +import { SelectableButton } from '@/shared/ui/selectable-button' import { toast } from '@/shared/ui/toast' import type { MemberDataLoveTypeCategoryEnum } from '@data/user-api-axios/api' @@ -25,6 +27,7 @@ function MyAttachmentSelectPage() { const navigate = useNavigate() const { flow, chatId } = useSearch({ from: Route.id }) const { refreshUserInfo } = useAuth() + const [selectedType, setSelectedType] = useState(null) const updateMutation = useMutation({ mutationFn: async (type: MemberDataLoveTypeCategoryEnum) => { @@ -52,9 +55,9 @@ function MyAttachmentSelectPage() { } } - const handleSelect = (type: MemberDataLoveTypeCategoryEnum) => { - if (updateMutation.isPending) return - updateMutation.mutate(type) + const handleConfirm = () => { + if (!selectedType || updateMutation.isPending) return + updateMutation.mutate(selectedType) } const handleDontKnow = () => { @@ -82,31 +85,26 @@ function MyAttachmentSelectPage() { } /> -
- {ATTACHMENT_OPTIONS.map((option) => ( - - ))} +
+ - +
+ {ATTACHMENT_OPTIONS.map((option) => ( + setSelectedType(option.value)} + disabled={updateMutation.isPending} + className="w-full text-left" + > + {option.label} + + ))} +
-
diff --git a/apps/react/src/routeTree.gen.ts b/apps/react/src/routeTree.gen.ts index 67068ee4..1eff0d88 100644 --- a/apps/react/src/routeTree.gen.ts +++ b/apps/react/src/routeTree.gen.ts @@ -16,6 +16,7 @@ import { Route as ChatLayoutImport } from './app/chat/layout' import { Route as PageImport } from './app/page' import { Route as TutorialPageImport } from './app/tutorial/page' import { Route as RelationshipStatusPageImport } from './app/relationship-status/page' +import { Route as PersonalityFlowLoadingPageImport } from './app/personality-flow-loading/page' import { Route as PartnerStatusPageImport } from './app/partner-status/page' import { Route as PartnerResultPreviewPageImport } from './app/partner-result-preview/page' import { Route as PartnerMbtiPageImport } from './app/partner-mbti/page' @@ -77,6 +78,12 @@ const RelationshipStatusPageRoute = RelationshipStatusPageImport.update({ getParentRoute: () => rootRoute, } as any) +const PersonalityFlowLoadingPageRoute = PersonalityFlowLoadingPageImport.update({ + id: '/personality-flow-loading/', + path: '/personality-flow-loading/', + getParentRoute: () => rootRoute, +} as any) + const PartnerStatusPageRoute = PartnerStatusPageImport.update({ id: '/partner-status/', path: '/partner-status/', @@ -361,6 +368,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof PartnerStatusPageImport parentRoute: typeof rootRoute } + '/personality-flow-loading/': { + id: '/personality-flow-loading/' + path: '/personality-flow-loading' + fullPath: '/personality-flow-loading' + preLoaderRoute: typeof PersonalityFlowLoadingPageImport + parentRoute: typeof rootRoute + } '/relationship-status/': { id: '/relationship-status/' path: '/relationship-status' @@ -536,6 +550,7 @@ export interface FileRoutesByFullPath { '/partner-mbti': typeof PartnerMbtiPageRoute '/partner-result-preview': typeof PartnerResultPreviewPageRoute '/partner-status': typeof PartnerStatusPageRoute + '/personality-flow-loading': typeof PersonalityFlowLoadingPageRoute '/relationship-status': typeof RelationshipStatusPageRoute '/tutorial': typeof TutorialPageRoute '/attachment-test/question': typeof AttachmentTestQuestionPageRoute @@ -571,6 +586,7 @@ export interface FileRoutesByTo { '/partner-mbti': typeof PartnerMbtiPageRoute '/partner-result-preview': typeof PartnerResultPreviewPageRoute '/partner-status': typeof PartnerStatusPageRoute + '/personality-flow-loading': typeof PersonalityFlowLoadingPageRoute '/relationship-status': typeof RelationshipStatusPageRoute '/tutorial': typeof TutorialPageRoute '/attachment-test/question': typeof AttachmentTestQuestionPageRoute @@ -608,6 +624,7 @@ export interface FileRoutesById { '/partner-mbti/': typeof PartnerMbtiPageRoute '/partner-result-preview/': typeof PartnerResultPreviewPageRoute '/partner-status/': typeof PartnerStatusPageRoute + '/personality-flow-loading/': typeof PersonalityFlowLoadingPageRoute '/relationship-status/': typeof RelationshipStatusPageRoute '/tutorial/': typeof TutorialPageRoute '/attachment-test/question/': typeof AttachmentTestQuestionPageRoute @@ -646,6 +663,7 @@ export interface FileRouteTypes { | '/partner-mbti' | '/partner-result-preview' | '/partner-status' + | '/personality-flow-loading' | '/relationship-status' | '/tutorial' | '/attachment-test/question' @@ -680,6 +698,7 @@ export interface FileRouteTypes { | '/partner-mbti' | '/partner-result-preview' | '/partner-status' + | '/personality-flow-loading' | '/relationship-status' | '/tutorial' | '/attachment-test/question' @@ -715,6 +734,7 @@ export interface FileRouteTypes { | '/partner-mbti/' | '/partner-result-preview/' | '/partner-status/' + | '/personality-flow-loading/' | '/relationship-status/' | '/tutorial/' | '/attachment-test/question/' @@ -751,6 +771,7 @@ export interface RootRouteChildren { PartnerMbtiPageRoute: typeof PartnerMbtiPageRoute PartnerResultPreviewPageRoute: typeof PartnerResultPreviewPageRoute PartnerStatusPageRoute: typeof PartnerStatusPageRoute + PersonalityFlowLoadingPageRoute: typeof PersonalityFlowLoadingPageRoute RelationshipStatusPageRoute: typeof RelationshipStatusPageRoute TutorialPageRoute: typeof TutorialPageRoute AttachmentTestQuestionPageRoute: typeof AttachmentTestQuestionPageRoute @@ -778,6 +799,7 @@ const rootRouteChildren: RootRouteChildren = { PartnerMbtiPageRoute: PartnerMbtiPageRoute, PartnerResultPreviewPageRoute: PartnerResultPreviewPageRoute, PartnerStatusPageRoute: PartnerStatusPageRoute, + PersonalityFlowLoadingPageRoute: PersonalityFlowLoadingPageRoute, RelationshipStatusPageRoute: RelationshipStatusPageRoute, TutorialPageRoute: TutorialPageRoute, AttachmentTestQuestionPageRoute: AttachmentTestQuestionPageRoute, @@ -812,6 +834,7 @@ export const routeTree = rootRoute._addFileChildren(rootRouteChildren)._addFileT "/partner-mbti/", "/partner-result-preview/", "/partner-status/", + "/personality-flow-loading/", "/relationship-status/", "/tutorial/", "/attachment-test/question/", @@ -885,6 +908,9 @@ export const routeTree = rootRoute._addFileChildren(rootRouteChildren)._addFileT "/partner-status/": { "filePath": "partner-status/page.tsx" }, + "/personality-flow-loading/": { + "filePath": "personality-flow-loading/page.tsx" + }, "/relationship-status/": { "filePath": "relationship-status/page.tsx" }, From f94cf39e9c5ad162b35137436b698154fd57c856 Mon Sep 17 00:00:00 2001 From: hin6150 Date: Sun, 15 Mar 2026 15:05:19 +0900 Subject: [PATCH 11/43] =?UTF-8?q?Feat:=20selectable-button=20=EA=B3=B5?= =?UTF-8?q?=ED=86=B5=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B0=8F=20=EC=9E=AC=EC=82=AC=EC=9A=A9=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9=20(MM-188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - selectable-button 컴포넌트 추가 (selected, onClick, children, className) - mbti-form, relationship-status-form, partner-attachment-select에 적용 Co-Authored-By: Claude Sonnet 4.6 --- .../app/partner-attachment-select/page.tsx | 12 ++++----- .../src/features/onboarding/ui/mbti-form.tsx | 23 +++++----------- .../ui/relationship-status-form.tsx | 27 ++++++++----------- .../react/src/shared/ui/selectable-button.tsx | 26 ++++++++++++++++++ 4 files changed, 48 insertions(+), 40 deletions(-) create mode 100644 apps/react/src/shared/ui/selectable-button.tsx diff --git a/apps/react/src/app/partner-attachment-select/page.tsx b/apps/react/src/app/partner-attachment-select/page.tsx index 09152d07..c8be796a 100644 --- a/apps/react/src/app/partner-attachment-select/page.tsx +++ b/apps/react/src/app/partner-attachment-select/page.tsx @@ -7,7 +7,6 @@ import { useAuth } from '@/features/auth' import { TitleSection } from '@/features/onboarding/ui/title-section' import { personalityFlowSearchSchema } from '@/features/profile/lib/personality-flow' import { Screen } from '@/shared/layout/screen' -import { cn } from '@/shared/lib/cn' import memberService from '@/shared/services/member.service' import { Button } from '@/shared/ui' import { @@ -23,6 +22,7 @@ import { import { getChatEntryProgressBar } from '@/shared/ui/flow-progress-bar' import { getPersonalityStepDots } from '@/shared/ui/flow-step-dots' import { DetailHeaderBar } from '@/shared/ui/header-bar' +import { SelectableButton } from '@/shared/ui/selectable-button' import { toast } from '@/shared/ui/toast' import type { MemberDataLoveTypeCategoryEnum } from '@data/user-api-axios/api' @@ -102,17 +102,15 @@ function PartnerAttachmentSelectPage() {
{ATTACHMENT_OPTIONS.map((option) => ( - + ))} {flow !== 'partner-personality' && ( diff --git a/apps/react/src/features/onboarding/ui/mbti-form.tsx b/apps/react/src/features/onboarding/ui/mbti-form.tsx index 01894295..3107fbca 100644 --- a/apps/react/src/features/onboarding/ui/mbti-form.tsx +++ b/apps/react/src/features/onboarding/ui/mbti-form.tsx @@ -2,9 +2,9 @@ import { ReactNode, useState } from 'react' import { TitleSection } from '@/features/onboarding/ui/title-section' import { Screen } from '@/shared/layout/screen' -import { cn } from '@/shared/lib/cn' import { Button } from '@/shared/ui' import { DetailHeaderBar } from '@/shared/ui/header-bar' +import { SelectableButton } from '@/shared/ui/selectable-button' // MBTI 차원 타입 type EnergyType = 'E' | 'I' @@ -151,25 +151,14 @@ export function MbtiForm({

{dimension.title}

{dimension.options.map((option) => ( - + {option.label} + ))}
diff --git a/apps/react/src/features/onboarding/ui/relationship-status-form.tsx b/apps/react/src/features/onboarding/ui/relationship-status-form.tsx index 93552e37..2db951ea 100644 --- a/apps/react/src/features/onboarding/ui/relationship-status-form.tsx +++ b/apps/react/src/features/onboarding/ui/relationship-status-form.tsx @@ -2,9 +2,9 @@ import { ReactNode, useState } from 'react' import { TitleSection } from '@/features/onboarding/ui/title-section' import { Screen } from '@/shared/layout/screen' -import { cn } from '@/shared/lib/cn' import { Button } from '@/shared/ui' import { DetailHeaderBar } from '@/shared/ui/header-bar' +import { SelectableButton } from '@/shared/ui/selectable-button' interface RelationshipStatusOption { value: string @@ -54,7 +54,11 @@ export function RelationshipStatusForm({ return ( - + @@ -62,23 +66,14 @@ export function RelationshipStatusForm({
{options.map((option) => ( - + {option.label} + ))}
diff --git a/apps/react/src/shared/ui/selectable-button.tsx b/apps/react/src/shared/ui/selectable-button.tsx new file mode 100644 index 00000000..f74dedf4 --- /dev/null +++ b/apps/react/src/shared/ui/selectable-button.tsx @@ -0,0 +1,26 @@ +import { cn } from '@/shared/lib/cn' + +interface SelectableButtonProps { + selected: boolean + onClick: () => void + children: React.ReactNode + className?: string + disabled?: boolean +} + +export function SelectableButton({ selected, onClick, children, className, disabled }: SelectableButtonProps) { + return ( + + ) +} From 3acec6c73436e1e10f4bcd67b4a578a5fe21de39 Mon Sep 17 00:00:00 2001 From: hin6150 Date: Sun, 15 Mar 2026 15:26:35 +0900 Subject: [PATCH 12/43] =?UTF-8?q?Feat:=20fixed-bottom=20=EA=B3=B5=ED=86=B5?= =?UTF-8?q?=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?=EB=B0=8F=20=EA=B2=B0=EA=B3=BC=20=EB=AF=B8=EB=A6=AC=EB=B3=B4?= =?UTF-8?q?=EA=B8=B0=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=A0=81=EC=9A=A9=20?= =?UTF-8?q?(MM-188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - fixed-bottom 컴포넌트 추가 (mt-auto + safe-bottom 패딩 표준화) - my-result-preview, partner-result-preview에 적용 Co-Authored-By: Claude Sonnet 4.6 --- apps/react/src/app/my-result-preview/page.tsx | 15 +++++---------- .../react/src/app/partner-result-preview/page.tsx | 9 ++++----- apps/react/src/shared/ui/fixed-bottom.tsx | 10 ++++++++++ 3 files changed, 19 insertions(+), 15 deletions(-) create mode 100644 apps/react/src/shared/ui/fixed-bottom.tsx diff --git a/apps/react/src/app/my-result-preview/page.tsx b/apps/react/src/app/my-result-preview/page.tsx index 1fe92305..abfba3a2 100644 --- a/apps/react/src/app/my-result-preview/page.tsx +++ b/apps/react/src/app/my-result-preview/page.tsx @@ -3,9 +3,10 @@ import { LucideCheck, LucideChevronRight } from 'lucide-react' import { getAttachmentType } from '@/features/attachment' import { useAuth } from '@/features/auth' -import { personalityFlowSearchSchema } from '@/features/profile/lib/personality-flow' +import { navigateAfterMyResultPreview, personalityFlowSearchSchema } from '@/features/profile/lib/personality-flow' import { Screen } from '@/shared/layout/screen' import { Button } from '@/shared/ui' +import { FixedBottom } from '@/shared/ui/fixed-bottom' import { FlowProgressBar } from '@/shared/ui/flow-progress-bar' import { DetailHeaderBar } from '@/shared/ui/header-bar' @@ -21,13 +22,7 @@ function MyResultPreviewPage() { const attachmentData = getAttachmentType(userInfo.loveTypeCategory) - const handleContinue = () => { - if (flow !== 'chat-entry') { - navigate({ to: '/', replace: true }) - return - } - navigate({ to: '/partner-mbti', search: { flow, chatId } }) - } + const handleContinue = () => navigateAfterMyResultPreview(navigate, flow, chatId) const handleViewResult = () => { navigate({ to: '/attachment-test/result/my' }) @@ -70,9 +65,9 @@ function MyResultPreviewPage() { )}
-
+
+ ) diff --git a/apps/react/src/app/partner-result-preview/page.tsx b/apps/react/src/app/partner-result-preview/page.tsx index 9ac8f60b..2837cc9b 100644 --- a/apps/react/src/app/partner-result-preview/page.tsx +++ b/apps/react/src/app/partner-result-preview/page.tsx @@ -3,6 +3,7 @@ import { createFileRoute, useNavigate, useSearch } from '@tanstack/react-router' import { personalityFlowSearchSchema } from '@/features/profile/lib/personality-flow' import { Screen } from '@/shared/layout/screen' import { Button } from '@/shared/ui' +import { FixedBottom } from '@/shared/ui/fixed-bottom' import { FlowProgressBar } from '@/shared/ui/flow-progress-bar' import { DetailHeaderBar } from '@/shared/ui/header-bar' @@ -20,9 +21,7 @@ function PartnerResultPreviewPage() { } const handleViewResult = () => { - navigate({ - to: '/attachment-test/result/partner', - }) + navigate({ to: '/attachment-test/result/partner' }) } return ( @@ -41,10 +40,10 @@ function PartnerResultPreviewPage() {

결과지를 확인하거나 상담을 계속 진행해 보세요

-
+
+ ) diff --git a/apps/react/src/shared/ui/fixed-bottom.tsx b/apps/react/src/shared/ui/fixed-bottom.tsx new file mode 100644 index 00000000..f551224e --- /dev/null +++ b/apps/react/src/shared/ui/fixed-bottom.tsx @@ -0,0 +1,10 @@ +import { cn } from '@/shared/lib/cn' + +interface FixedBottomProps { + children: React.ReactNode + className?: string +} + +export function FixedBottom({ children, className }: FixedBottomProps) { + return
{children}
+} From 385cd406f4a8677e34a4171f62cba10b3727d14c Mon Sep 17 00:00:00 2001 From: hin6150 Date: Sun, 15 Mar 2026 15:26:48 +0900 Subject: [PATCH 13/43] =?UTF-8?q?Feat:=20personality-flow=20=EB=84=A4?= =?UTF-8?q?=EB=B9=84=EA=B2=8C=EC=9D=B4=EC=85=98=20=ED=97=AC=ED=8D=BC=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EB=B0=8F=20mbti=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EC=A0=81=EC=9A=A9=20(MM-188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - flow 단계별 navigate 헬퍼 함수 추가 (personality-flow.ts) - mbti, partner-mbti 페이지에 헬퍼 적용으로 분기 로직 중앙화 Co-Authored-By: Claude Sonnet 4.6 --- apps/react/src/app/mbti/page.tsx | 17 ++-- apps/react/src/app/partner-mbti/page.tsx | 17 ++-- .../features/profile/lib/personality-flow.ts | 85 +++++++++++++++++++ 3 files changed, 95 insertions(+), 24 deletions(-) diff --git a/apps/react/src/app/mbti/page.tsx b/apps/react/src/app/mbti/page.tsx index ea45957b..18ff95fc 100644 --- a/apps/react/src/app/mbti/page.tsx +++ b/apps/react/src/app/mbti/page.tsx @@ -3,7 +3,7 @@ import { createFileRoute, useNavigate, useSearch } from '@tanstack/react-router' import { useAuth } from '@/features/auth' import { MbtiForm } from '@/features/onboarding/ui/mbti-form' import { useMemberUpdateMutation } from '@/features/profile' -import { personalityFlowSearchSchema } from '@/features/profile/lib/personality-flow' +import { navigateAfterMyMbti, personalityFlowSearchSchema } from '@/features/profile/lib/personality-flow' import { wrapWithTracking } from '@/shared/analytics' import { BUTTON_NAMES, CATEGORIES } from '@/shared/analytics/constants' import { useGoBack } from '@/shared/navigation/use-go-back' @@ -24,18 +24,11 @@ function MbtiEditPage() { const updateMutation = useMemberUpdateMutation({ onSuccess: () => { - if (flow === 'my-personality') { - navigate({ to: '/my-attachment-select', search: { flow } }) - return + const navigated = navigateAfterMyMbti(navigate, flow, chatId) + if (!navigated) { + toast.success('내 성향이 변경되었어요!') + goBack() } - - if (flow === 'chat-entry') { - navigate({ to: '/my-attachment-select', search: { flow, chatId } }) - return - } - - toast.success('내 성향이 변경되었어요!') - goBack() }, errorMessage: '내 성향 변경 중 오류가 발생했습니다', }) diff --git a/apps/react/src/app/partner-mbti/page.tsx b/apps/react/src/app/partner-mbti/page.tsx index 61489cf3..365041c5 100644 --- a/apps/react/src/app/partner-mbti/page.tsx +++ b/apps/react/src/app/partner-mbti/page.tsx @@ -3,7 +3,7 @@ import { createFileRoute, useNavigate, useSearch } from '@tanstack/react-router' import { useAuth } from '@/features/auth' import { MbtiForm } from '@/features/onboarding/ui/mbti-form' import { useMemberUpdateMutation } from '@/features/profile' -import { personalityFlowSearchSchema } from '@/features/profile/lib/personality-flow' +import { navigateAfterPartnerMbti, personalityFlowSearchSchema } from '@/features/profile/lib/personality-flow' import { wrapWithTracking } from '@/shared/analytics' import { BUTTON_NAMES, CATEGORIES } from '@/shared/analytics/constants' import { useGoBack } from '@/shared/navigation/use-go-back' @@ -24,18 +24,11 @@ function PartnerMbtiEditPage() { const updateMutation = useMemberUpdateMutation({ onSuccess: () => { - if (flow === 'partner-personality') { - navigate({ to: '/partner-attachment-select', search: { flow } }) - return + const navigated = navigateAfterPartnerMbti(navigate, flow, chatId) + if (!navigated) { + toast.success('상대 성향이 변경되었어요!') + goBack() } - - if (flow === 'chat-entry') { - navigate({ to: '/partner-attachment-select', search: { flow, chatId } }) - return - } - - toast.success('상대 성향이 변경되었어요!') - goBack() }, errorMessage: '상대 성향 변경 중 오류가 발생했습니다', }) diff --git a/apps/react/src/features/profile/lib/personality-flow.ts b/apps/react/src/features/profile/lib/personality-flow.ts index b7e26a02..594ef2a8 100644 --- a/apps/react/src/features/profile/lib/personality-flow.ts +++ b/apps/react/src/features/profile/lib/personality-flow.ts @@ -8,3 +8,88 @@ export const personalityFlowSearchSchema = z.object({ }) export type PersonalityFlowSearch = z.infer + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +type NavigateFn = (opts: any) => void + +/** 내 MBTI 저장 후 다음 단계로 이동. flow 없으면 false 반환 (fallback 처리 필요) */ +export function navigateAfterMyMbti( + navigate: NavigateFn, + flow: PersonalityFlow | undefined, + chatId: number | undefined +): boolean { + if (flow === 'my-personality') { + navigate({ to: '/my-attachment-select', search: { flow } }) + return true + } + if (flow === 'chat-entry') { + navigate({ to: '/my-attachment-select', search: { flow, chatId } }) + return true + } + return false +} + +/** 상대 MBTI 저장 후 다음 단계로 이동. flow 없으면 false 반환 */ +export function navigateAfterPartnerMbti( + navigate: NavigateFn, + flow: PersonalityFlow | undefined, + chatId: number | undefined +): boolean { + if (flow === 'partner-personality') { + navigate({ to: '/partner-attachment-select', search: { flow } }) + return true + } + if (flow === 'chat-entry') { + navigate({ to: '/partner-attachment-select', search: { flow, chatId } }) + return true + } + return false +} + +/** 내 애착유형 선택 후 다음 단계로 이동 */ +export function navigateAfterMyAttachment( + navigate: NavigateFn, + flow: PersonalityFlow | undefined, + chatId: number | undefined +) { + if (flow === 'my-personality') { + navigate({ to: '/attachment-test/result/my', search: { from: 'my-page' } }) + return + } + if (flow === 'chat-entry') { + navigate({ to: '/my-result-preview', search: { flow, chatId } }) + return + } + navigate({ to: '/attachment-test/result/my' }) +} + +/** 내 결과 미리보기에서 다음 단계로 이동 */ +export function navigateAfterMyResultPreview( + navigate: NavigateFn, + flow: PersonalityFlow | undefined, + chatId: number | undefined +) { + if (flow === 'chat-entry') { + navigate({ to: '/partner-mbti', search: { flow, chatId } }) + return + } + navigate({ to: '/', replace: true }) +} + +/** 상대 애착유형 선택 후 다음 단계로 이동 */ +export function navigateAfterPartnerAttachment( + navigate: NavigateFn, + flow: PersonalityFlow | undefined, + chatId: number | undefined, + hasData: boolean +) { + if (flow === 'chat-entry') { + if (hasData) { + navigate({ to: '/partner-result-preview', search: { flow, chatId } }) + } else { + navigate({ to: '/chat', search: { chatId }, replace: true }) + } + return + } + navigate({ to: '/attachment-test/result/partner' }) +} From aac97dff226bece8abd8280234f36a73ef41e634 Mon Sep 17 00:00:00 2001 From: hin6150 Date: Sun, 15 Mar 2026 15:26:59 +0900 Subject: [PATCH 14/43] =?UTF-8?q?Refactor:=20use-member-update-mutation=20?= =?UTF-8?q?=ED=9B=85=20=EB=B0=8F=20=EA=B3=B5=ED=86=B5=20=EC=9C=A0=ED=8B=B8?= =?UTF-8?q?=20=EC=A0=81=EC=9A=A9=EC=9C=BC=EB=A1=9C=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=A4=91=EB=B3=B5=20=EC=A0=9C=EA=B1=B0=20(MM-188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - my-attachment-select, partner-attachment-select, relationship-status에 useMemberUpdateMutation 훅 적용 - flow 네비게이션 헬퍼 및 fixed-bottom 컴포넌트 통합 적용 Co-Authored-By: Claude Sonnet 4.6 --- .../src/app/my-attachment-select/page.tsx | 49 ++++----------- .../app/partner-attachment-select/page.tsx | 62 +++++++------------ .../src/app/relationship-status/page.tsx | 20 ++---- .../react/src/shared/ui/selectable-button.tsx | 2 +- 4 files changed, 40 insertions(+), 93 deletions(-) diff --git a/apps/react/src/app/my-attachment-select/page.tsx b/apps/react/src/app/my-attachment-select/page.tsx index a9950df5..6a5fa867 100644 --- a/apps/react/src/app/my-attachment-select/page.tsx +++ b/apps/react/src/app/my-attachment-select/page.tsx @@ -1,20 +1,18 @@ -import { useMutation } from '@tanstack/react-query' import { createFileRoute, useNavigate, useSearch } from '@tanstack/react-router' import { useState } from 'react' import { ATTACHMENT_OPTIONS } from '@/features/attachment' -import { useAuth } from '@/features/auth' import { TitleSection } from '@/features/onboarding/ui/title-section' -import { personalityFlowSearchSchema } from '@/features/profile/lib/personality-flow' +import { useMemberUpdateMutation } from '@/features/profile' +import { navigateAfterMyAttachment, personalityFlowSearchSchema } from '@/features/profile/lib/personality-flow' import { Screen } from '@/shared/layout/screen' -import memberService from '@/shared/services/member.service' import { Button } from '@/shared/ui' +import { FixedBottom } from '@/shared/ui/fixed-bottom' import { getChatEntryProgressBar } from '@/shared/ui/flow-progress-bar' import { getPersonalityStepDots } from '@/shared/ui/flow-step-dots' import { DetailHeaderBar } from '@/shared/ui/header-bar' import { KeyMessageBanner } from '@/shared/ui/key-message-banner' import { SelectableButton } from '@/shared/ui/selectable-button' -import { toast } from '@/shared/ui/toast' import type { MemberDataLoveTypeCategoryEnum } from '@data/user-api-axios/api' @@ -26,45 +24,20 @@ export const Route = createFileRoute('/my-attachment-select/')({ function MyAttachmentSelectPage() { const navigate = useNavigate() const { flow, chatId } = useSearch({ from: Route.id }) - const { refreshUserInfo } = useAuth() const [selectedType, setSelectedType] = useState(null) - const updateMutation = useMutation({ - mutationFn: async (type: MemberDataLoveTypeCategoryEnum) => { - const { data } = await memberService.updateMember({ - updateMemberRequestDto: { loveTypeCategory: type }, - }) - return data - }, - onSuccess: async () => { - await refreshUserInfo() - navigateToNext() - }, - onError: () => { - toast.error('저장 중 오류가 발생했습니다') - }, + const updateMutation = useMemberUpdateMutation({ + onSuccess: () => navigateAfterMyAttachment(navigate, flow, chatId), + errorMessage: '저장 중 오류가 발생했습니다', }) - const navigateToNext = () => { - if (flow === 'my-personality') { - navigate({ to: '/attachment-test/result/my', search: { from: 'my-page' } }) - } else if (flow === 'chat-entry') { - navigate({ to: '/my-result-preview', search: { flow, chatId } }) - } else { - navigate({ to: '/attachment-test/result/my' }) - } - } - const handleConfirm = () => { if (!selectedType || updateMutation.isPending) return - updateMutation.mutate(selectedType) + updateMutation.mutate({ loveTypeCategory: selectedType }) } const handleDontKnow = () => { - navigate({ - to: '/attachment-test', - search: { flow, chatId }, - }) + navigate({ to: '/attachment-test', search: { flow, chatId } }) } return ( @@ -95,7 +68,7 @@ function MyAttachmentSelectPage() { selected={selectedType === option.value} onClick={() => setSelectedType(option.value)} disabled={updateMutation.isPending} - className="w-full text-left" + className="w-full py-5 text-left" > {option.label} @@ -103,9 +76,9 @@ function MyAttachmentSelectPage() {
-
+
+ ) diff --git a/apps/react/src/app/partner-attachment-select/page.tsx b/apps/react/src/app/partner-attachment-select/page.tsx index c8be796a..29257d38 100644 --- a/apps/react/src/app/partner-attachment-select/page.tsx +++ b/apps/react/src/app/partner-attachment-select/page.tsx @@ -1,13 +1,11 @@ -import { useMutation } from '@tanstack/react-query' import { createFileRoute, useNavigate, useSearch } from '@tanstack/react-router' -import { useState } from 'react' +import { useRef, useState } from 'react' import { ATTACHMENT_OPTIONS } from '@/features/attachment' -import { useAuth } from '@/features/auth' import { TitleSection } from '@/features/onboarding/ui/title-section' -import { personalityFlowSearchSchema } from '@/features/profile/lib/personality-flow' +import { useMemberUpdateMutation } from '@/features/profile' +import { navigateAfterPartnerAttachment, personalityFlowSearchSchema } from '@/features/profile/lib/personality-flow' import { Screen } from '@/shared/layout/screen' -import memberService from '@/shared/services/member.service' import { Button } from '@/shared/ui' import { AlertDialog, @@ -19,11 +17,11 @@ import { AlertDialogHeader, AlertDialogTitle, } from '@/shared/ui/alert-dialog' +import { FixedBottom } from '@/shared/ui/fixed-bottom' import { getChatEntryProgressBar } from '@/shared/ui/flow-progress-bar' import { getPersonalityStepDots } from '@/shared/ui/flow-step-dots' import { DetailHeaderBar } from '@/shared/ui/header-bar' import { SelectableButton } from '@/shared/ui/selectable-button' -import { toast } from '@/shared/ui/toast' import type { MemberDataLoveTypeCategoryEnum } from '@data/user-api-axios/api' @@ -35,42 +33,18 @@ export const Route = createFileRoute('/partner-attachment-select/')({ function PartnerAttachmentSelectPage() { const navigate = useNavigate() const { flow, chatId } = useSearch({ from: Route.id }) - const { refreshUserInfo } = useAuth() const [showDontKnowModal, setShowDontKnowModal] = useState(false) + const pendingHasDataRef = useRef(false) - const updateMutation = useMutation({ - mutationFn: async (type: MemberDataLoveTypeCategoryEnum | null) => { - const { data } = await memberService.updateMember({ - updateMemberRequestDto: { otherLoveTypeCategory: type }, - }) - return data - }, - onSuccess: async (_data, type) => { - await refreshUserInfo() - navigateToNextAfterSelect(type !== null) - }, - onError: () => { - toast.error('저장 중 오류가 발생했습니다') - }, + const updateMutation = useMemberUpdateMutation({ + onSuccess: () => navigateAfterPartnerAttachment(navigate, flow, chatId, pendingHasDataRef.current), + errorMessage: '저장 중 오류가 발생했습니다', }) - const navigateToNextAfterSelect = (hasData: boolean) => { - if (flow === 'partner-personality') { - navigate({ to: '/attachment-test/result/partner' }) - } else if (flow === 'chat-entry') { - if (hasData) { - navigate({ to: '/partner-result-preview', search: { flow, chatId } }) - } else { - navigate({ to: '/chat', search: { chatId }, replace: true }) - } - } else { - navigate({ to: '/attachment-test/result/partner' }) - } - } - const handleSelect = (type: MemberDataLoveTypeCategoryEnum) => { if (updateMutation.isPending) return - updateMutation.mutate(type) + pendingHasDataRef.current = true + updateMutation.mutate({ otherLoveTypeCategory: type }) } const handleDontKnow = () => { @@ -79,7 +53,8 @@ function PartnerAttachmentSelectPage() { } const handleDontKnowConfirm = () => { - updateMutation.mutate(null) + pendingHasDataRef.current = false + updateMutation.mutate({ otherLoveTypeCategory: null }) } return ( @@ -124,9 +99,16 @@ function PartnerAttachmentSelectPage() { )}
-
-
+ +
+
, + document.body ) } From 9cbb2f754ba42d0aacfcf74ec05359bf740f1e53 Mon Sep 17 00:00:00 2001 From: hin6150 Date: Sun, 15 Mar 2026 15:54:09 +0900 Subject: [PATCH 16/43] =?UTF-8?q?Feat:=20partner-attachment-select=20?= =?UTF-8?q?=EC=84=A0=ED=83=9D=20UX=20=EA=B0=9C=EC=84=A0=20(MM-188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 옵션 클릭 시 즉시 저장 → 선택 state 설정으로 변경 - 건너뛰기 버튼 제거 → 프로필 완성! 버튼으로 교체 Co-Authored-By: Claude Sonnet 4.6 --- .../app/partner-attachment-select/page.tsx | 56 +++++++++---------- .../src/app/partner-result-preview/page.tsx | 4 +- 2 files changed, 29 insertions(+), 31 deletions(-) diff --git a/apps/react/src/app/partner-attachment-select/page.tsx b/apps/react/src/app/partner-attachment-select/page.tsx index 29257d38..a7fd271e 100644 --- a/apps/react/src/app/partner-attachment-select/page.tsx +++ b/apps/react/src/app/partner-attachment-select/page.tsx @@ -33,6 +33,7 @@ export const Route = createFileRoute('/partner-attachment-select/')({ function PartnerAttachmentSelectPage() { const navigate = useNavigate() const { flow, chatId } = useSearch({ from: Route.id }) + const [selectedType, setSelectedType] = useState(null) const [showDontKnowModal, setShowDontKnowModal] = useState(false) const pendingHasDataRef = useRef(false) @@ -41,10 +42,10 @@ function PartnerAttachmentSelectPage() { errorMessage: '저장 중 오류가 발생했습니다', }) - const handleSelect = (type: MemberDataLoveTypeCategoryEnum) => { - if (updateMutation.isPending) return + const handleConfirm = () => { + if (!selectedType || updateMutation.isPending) return pendingHasDataRef.current = true - updateMutation.mutate({ otherLoveTypeCategory: type }) + updateMutation.mutate({ otherLoveTypeCategory: selectedType }) } const handleDontKnow = () => { @@ -68,9 +69,9 @@ function PartnerAttachmentSelectPage() { - 상대의 성향이 + 상대의 애착유형을
- 무엇인가요? + 선택해주세요 } /> @@ -79,49 +80,46 @@ function PartnerAttachmentSelectPage() { {ATTACHMENT_OPTIONS.map((option) => ( handleSelect(option.value)} + selected={selectedType === option.value} + onClick={() => setSelectedType(option.value)} disabled={updateMutation.isPending} - className="w-full" + className="w-full py-5 text-left" > {option.label} ))} - {flow !== 'partner-personality' && ( - - )} + + 상대의 애착유형을 모르겠어요 +
-
-
- ) -} diff --git a/apps/react/src/app/onboarding/mbti/page.tsx b/apps/react/src/app/onboarding/mbti/page.tsx deleted file mode 100644 index ea6eb7c1..00000000 --- a/apps/react/src/app/onboarding/mbti/page.tsx +++ /dev/null @@ -1,45 +0,0 @@ -// @deprecated 온보딩 플로우에서 제거됨. 사용하지 않을 시 삭제 -import { createFileRoute } from '@tanstack/react-router' - -import { useOnboarding } from '@/features/onboarding/contexts/onboarding-context' -import { useOnboardingNavigation } from '@/features/onboarding/hooks/use-onboarding-navigation' -import { MbtiForm } from '@/features/onboarding/ui/mbti-form' -import { wrapWithTracking } from '@/shared/analytics' -import { BUTTON_NAMES, CATEGORIES } from '@/shared/analytics/constants' - -export const Route = createFileRoute('/onboarding/mbti/')({ - component: MbtiPage, -}) - -function MbtiPage() { - const { goToNextStep, goToPreviousStep } = useOnboardingNavigation() - const { data, updatePersonalityType } = useOnboarding() - - const handleNext = wrapWithTracking(BUTTON_NAMES.NEXT_MBTI, CATEGORIES.ONBOARDING, (mbti: string) => { - updatePersonalityType(mbti) - goToNextStep() - }) - - const handleBack = wrapWithTracking(BUTTON_NAMES.BACK_MBTI, CATEGORIES.ONBOARDING, (mbti: string | null) => { - if (mbti) { - updatePersonalityType(mbti) - } - goToPreviousStep() - }) - - return ( - - 나의 MBTI 성향은 -
- 무엇인가요? - - } - initialValue={data.personalityType} - submitText="다음" - onSubmit={handleNext} - onBack={handleBack} - /> - ) -} diff --git a/apps/react/src/app/onboarding/partner-mbti/page.tsx b/apps/react/src/app/onboarding/partner-mbti/page.tsx deleted file mode 100644 index f3f11b58..00000000 --- a/apps/react/src/app/onboarding/partner-mbti/page.tsx +++ /dev/null @@ -1,45 +0,0 @@ -// @deprecated 온보딩 플로우에서 제거됨. 사용하지 않을 시 삭제 -import { createFileRoute } from '@tanstack/react-router' - -import { useOnboarding } from '@/features/onboarding/contexts/onboarding-context' -import { useOnboardingNavigation } from '@/features/onboarding/hooks/use-onboarding-navigation' -import { MbtiForm } from '@/features/onboarding/ui/mbti-form' -import { wrapWithTracking } from '@/shared/analytics' -import { BUTTON_NAMES, CATEGORIES } from '@/shared/analytics/constants' - -export const Route = createFileRoute('/onboarding/partner-mbti/')({ - component: PartnerMbtiPage, -}) - -function PartnerMbtiPage() { - const { goToNextStep, goToPreviousStep } = useOnboardingNavigation() - const { data, updateOtherPersonalityType } = useOnboarding() - - const handleNext = wrapWithTracking(BUTTON_NAMES.NEXT_PARTNER_MBTI, CATEGORIES.ONBOARDING, (mbti: string) => { - updateOtherPersonalityType(mbti) - goToNextStep() - }) - - const handleBack = wrapWithTracking(BUTTON_NAMES.BACK_PARTNER_MBTI, CATEGORIES.ONBOARDING, (mbti: string | null) => { - if (mbti) { - updateOtherPersonalityType(mbti) - } - goToPreviousStep() - }) - - return ( - - 상대방 MBTI 성향은 -
- 무엇인가요? - - } - initialValue={data.otherPersonalityType} - submitText="다음" - onSubmit={handleNext} - onBack={handleBack} - /> - ) -} diff --git a/apps/react/src/app/page.tsx b/apps/react/src/app/page.tsx index 91667d77..704ce85a 100644 --- a/apps/react/src/app/page.tsx +++ b/apps/react/src/app/page.tsx @@ -12,6 +12,8 @@ import { Screen } from '@/shared/layout/screen' import { BottomNavigation } from '@/shared/ui/bottom-navigation' import { BellNotificationIcon, KeyMessageBanner } from '@/shared/ui/key-message-banner' +import type { MemberDataLoveTypeCategoryEnum } from '@data/user-api-axios/api' + export const Route = createFileRoute('/')({ component: HomePage, }) @@ -30,7 +32,10 @@ function HomePage() { // 애착유형 데이터 const myAttachmentData = getAttachmentType(userInfo.loveTypeCategory) - const partnerAttachmentData = partnerInfo?.loveTypeCategory ? getAttachmentType(partnerInfo.loveTypeCategory) : null + const partnerAttachmentData = + partnerInfo?.loveTypeCategory && partnerInfo.loveTypeCategory !== 'UNKNOWN' + ? getAttachmentType(partnerInfo.loveTypeCategory as MemberDataLoveTypeCategoryEnum) + : null const myAttachmentType = myAttachmentData?.subtype const partnerAttachmentType = partnerAttachmentData?.subtype diff --git a/apps/react/src/app/partner-attachment-select/page.tsx b/apps/react/src/app/partner-attachment-select/page.tsx index a7fd271e..be1cb27e 100644 --- a/apps/react/src/app/partner-attachment-select/page.tsx +++ b/apps/react/src/app/partner-attachment-select/page.tsx @@ -3,7 +3,7 @@ import { useRef, useState } from 'react' import { ATTACHMENT_OPTIONS } from '@/features/attachment' import { TitleSection } from '@/features/onboarding/ui/title-section' -import { useMemberUpdateMutation } from '@/features/profile' +import { useUpdatePartnerProfileMutation } from '@/features/profile' import { navigateAfterPartnerAttachment, personalityFlowSearchSchema } from '@/features/profile/lib/personality-flow' import { Screen } from '@/shared/layout/screen' import { Button } from '@/shared/ui' @@ -37,7 +37,7 @@ function PartnerAttachmentSelectPage() { const [showDontKnowModal, setShowDontKnowModal] = useState(false) const pendingHasDataRef = useRef(false) - const updateMutation = useMemberUpdateMutation({ + const updateMutation = useUpdatePartnerProfileMutation({ onSuccess: () => navigateAfterPartnerAttachment(navigate, flow, chatId, pendingHasDataRef.current), errorMessage: '저장 중 오류가 발생했습니다', }) @@ -45,7 +45,7 @@ function PartnerAttachmentSelectPage() { const handleConfirm = () => { if (!selectedType || updateMutation.isPending) return pendingHasDataRef.current = true - updateMutation.mutate({ otherLoveTypeCategory: selectedType }) + updateMutation.mutate({ loveTypeCategory: selectedType }) } const handleDontKnow = () => { @@ -55,7 +55,7 @@ function PartnerAttachmentSelectPage() { const handleDontKnowConfirm = () => { pendingHasDataRef.current = false - updateMutation.mutate({ otherLoveTypeCategory: null }) + updateMutation.mutate({ loveTypeCategoryProvided: false }) } return ( diff --git a/apps/react/src/app/partner-mbti/page.tsx b/apps/react/src/app/partner-mbti/page.tsx index 365041c5..f195b7c7 100644 --- a/apps/react/src/app/partner-mbti/page.tsx +++ b/apps/react/src/app/partner-mbti/page.tsx @@ -2,7 +2,7 @@ import { createFileRoute, useNavigate, useSearch } from '@tanstack/react-router' import { useAuth } from '@/features/auth' import { MbtiForm } from '@/features/onboarding/ui/mbti-form' -import { useMemberUpdateMutation } from '@/features/profile' +import { useUpsertPartnerProfileMutation } from '@/features/profile' import { navigateAfterPartnerMbti, personalityFlowSearchSchema } from '@/features/profile/lib/personality-flow' import { wrapWithTracking } from '@/shared/analytics' import { BUTTON_NAMES, CATEGORIES } from '@/shared/analytics/constants' @@ -22,7 +22,7 @@ function PartnerMbtiEditPage() { const { userInfo } = useAuth() const { flow, chatId } = useSearch({ from: Route.id }) - const updateMutation = useMemberUpdateMutation({ + const updateMutation = useUpsertPartnerProfileMutation({ onSuccess: () => { const navigated = navigateAfterPartnerMbti(navigate, flow, chatId) if (!navigated) { @@ -38,7 +38,7 @@ function PartnerMbtiEditPage() { const handleSubmit = (mbti: string) => { if (updateMutation.isPending) return trackSave() - updateMutation.mutate({ otherPersonalityType: mbti }) + updateMutation.mutate({ personalityType: mbti }) } const isFlowMode = !!flow diff --git a/apps/react/src/features/profile/hooks/use-update-partner-profile-mutation.ts b/apps/react/src/features/profile/hooks/use-update-partner-profile-mutation.ts new file mode 100644 index 00000000..72883cbb --- /dev/null +++ b/apps/react/src/features/profile/hooks/use-update-partner-profile-mutation.ts @@ -0,0 +1,31 @@ +import { useMutation } from '@tanstack/react-query' + +import { useAuth } from '@/features/auth' +import memberService from '@/shared/services/member.service' +import { toast } from '@/shared/ui/toast' + +import type { UpdatePartnerProfileRequestDto } from '@data/user-api-axios/api' + +interface Options { + onSuccess: () => void | Promise + errorMessage?: string +} + +/** 파트너 프로필 PATCH 전용 뮤테이션 훅 */ +export function useUpdatePartnerProfileMutation({ onSuccess, errorMessage }: Options) { + const { refreshUserInfo } = useAuth() + + return useMutation({ + mutationFn: async (body: UpdatePartnerProfileRequestDto) => { + const { data } = await memberService.updatePartnerProfile({ updatePartnerProfileRequestDto: body }) + return data + }, + onSuccess: async () => { + await refreshUserInfo() + await onSuccess() + }, + onError: () => { + toast.error(errorMessage ?? '상대 프로필 수정 중 오류가 발생했습니다') + }, + }) +} diff --git a/apps/react/src/features/profile/hooks/use-upsert-partner-profile-mutation.ts b/apps/react/src/features/profile/hooks/use-upsert-partner-profile-mutation.ts new file mode 100644 index 00000000..2349118f --- /dev/null +++ b/apps/react/src/features/profile/hooks/use-upsert-partner-profile-mutation.ts @@ -0,0 +1,42 @@ +import { useMutation } from '@tanstack/react-query' + +import { useAuth } from '@/features/auth' +import memberService from '@/shared/services/member.service' +import { toast } from '@/shared/ui/toast' + +import type { CreatePartnerProfileRequestDto } from '@data/user-api-axios/api' + +interface Options { + onSuccess: () => void | Promise + errorMessage?: string +} + +/** 파트너 프로필 POST 시도 → 40017(already exists)이면 PATCH로 fallback */ +export function useUpsertPartnerProfileMutation({ onSuccess, errorMessage }: Options) { + const { refreshUserInfo } = useAuth() + + return useMutation({ + mutationFn: async (body: CreatePartnerProfileRequestDto) => { + try { + const { data } = await memberService.createPartnerProfile({ createPartnerProfileRequestDto: body }) + return data + } catch (error: any) { + const code = error?.response?.data?.code + if (code === 40017) { + const { data } = await memberService.updatePartnerProfile({ + updatePartnerProfileRequestDto: body, + }) + return data + } + throw error + } + }, + onSuccess: async () => { + await refreshUserInfo() + await onSuccess() + }, + onError: () => { + toast.error(errorMessage ?? '상대 프로필 저장 중 오류가 발생했습니다') + }, + }) +} diff --git a/apps/react/src/features/profile/index.ts b/apps/react/src/features/profile/index.ts index d28a51ab..5733f5cf 100644 --- a/apps/react/src/features/profile/index.ts +++ b/apps/react/src/features/profile/index.ts @@ -8,6 +8,8 @@ export { useProfileEdit } from './hooks/use-profile-edit' export { useNicknameInput, NICKNAME_MAX_LENGTH } from './hooks/use-nickname-input' export { useProfileModal } from './hooks/use-profile-modal' export { useMemberUpdateMutation } from './hooks/use-member-update-mutation' +export { useUpsertPartnerProfileMutation } from './hooks/use-upsert-partner-profile-mutation' +export { useUpdatePartnerProfileMutation } from './hooks/use-update-partner-profile-mutation' // UI 컴포넌트 export { ProfileSection } from './ui/profile-section' diff --git a/apps/react/src/routeTree.gen.ts b/apps/react/src/routeTree.gen.ts index 1eff0d88..2a4316c5 100644 --- a/apps/react/src/routeTree.gen.ts +++ b/apps/react/src/routeTree.gen.ts @@ -33,10 +33,7 @@ import { Route as AttachmentTestPageImport } from './app/attachment-test/page' import { Route as TermsPrivacyPolicyPageImport } from './app/terms/privacy-policy/page' import { Route as OnboardingTermsPageImport } from './app/onboarding/terms/page' import { Route as OnboardingRelationshipStatusPageImport } from './app/onboarding/relationship-status/page' -import { Route as OnboardingPartnerMbtiPageImport } from './app/onboarding/partner-mbti/page' import { Route as OnboardingNicknamePageImport } from './app/onboarding/nickname/page' -import { Route as OnboardingMbtiPageImport } from './app/onboarding/mbti/page' -import { Route as OnboardingCompletePageImport } from './app/onboarding/complete/page' import { Route as MyPageProfilePageImport } from './app/my-page/profile/page' import { Route as MyPageAccountSettingsPageImport } from './app/my-page/account-settings/page' import { Route as HistoryDeletePageImport } from './app/history/delete/page' @@ -180,30 +177,12 @@ const OnboardingRelationshipStatusPageRoute = OnboardingRelationshipStatusPageIm getParentRoute: () => OnboardingLayoutRoute, } as any) -const OnboardingPartnerMbtiPageRoute = OnboardingPartnerMbtiPageImport.update({ - id: '/partner-mbti/', - path: '/partner-mbti/', - getParentRoute: () => OnboardingLayoutRoute, -} as any) - const OnboardingNicknamePageRoute = OnboardingNicknamePageImport.update({ id: '/nickname/', path: '/nickname/', getParentRoute: () => OnboardingLayoutRoute, } as any) -const OnboardingMbtiPageRoute = OnboardingMbtiPageImport.update({ - id: '/mbti/', - path: '/mbti/', - getParentRoute: () => OnboardingLayoutRoute, -} as any) - -const OnboardingCompletePageRoute = OnboardingCompletePageImport.update({ - id: '/complete/', - path: '/complete/', - getParentRoute: () => OnboardingLayoutRoute, -} as any) - const MyPageProfilePageRoute = MyPageProfilePageImport.update({ id: '/my-page/profile/', path: '/my-page/profile/', @@ -431,20 +410,6 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof MyPageProfilePageImport parentRoute: typeof rootRoute } - '/onboarding/complete/': { - id: '/onboarding/complete/' - path: '/complete' - fullPath: '/onboarding/complete' - preLoaderRoute: typeof OnboardingCompletePageImport - parentRoute: typeof OnboardingLayoutImport - } - '/onboarding/mbti/': { - id: '/onboarding/mbti/' - path: '/mbti' - fullPath: '/onboarding/mbti' - preLoaderRoute: typeof OnboardingMbtiPageImport - parentRoute: typeof OnboardingLayoutImport - } '/onboarding/nickname/': { id: '/onboarding/nickname/' path: '/nickname' @@ -452,13 +417,6 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof OnboardingNicknamePageImport parentRoute: typeof OnboardingLayoutImport } - '/onboarding/partner-mbti/': { - id: '/onboarding/partner-mbti/' - path: '/partner-mbti' - fullPath: '/onboarding/partner-mbti' - preLoaderRoute: typeof OnboardingPartnerMbtiPageImport - parentRoute: typeof OnboardingLayoutImport - } '/onboarding/relationship-status/': { id: '/onboarding/relationship-status/' path: '/relationship-status' @@ -514,19 +472,13 @@ const ChatLayoutRouteChildren: ChatLayoutRouteChildren = { const ChatLayoutRouteWithChildren = ChatLayoutRoute._addFileChildren(ChatLayoutRouteChildren) interface OnboardingLayoutRouteChildren { - OnboardingCompletePageRoute: typeof OnboardingCompletePageRoute - OnboardingMbtiPageRoute: typeof OnboardingMbtiPageRoute OnboardingNicknamePageRoute: typeof OnboardingNicknamePageRoute - OnboardingPartnerMbtiPageRoute: typeof OnboardingPartnerMbtiPageRoute OnboardingRelationshipStatusPageRoute: typeof OnboardingRelationshipStatusPageRoute OnboardingTermsPageRoute: typeof OnboardingTermsPageRoute } const OnboardingLayoutRouteChildren: OnboardingLayoutRouteChildren = { - OnboardingCompletePageRoute: OnboardingCompletePageRoute, - OnboardingMbtiPageRoute: OnboardingMbtiPageRoute, OnboardingNicknamePageRoute: OnboardingNicknamePageRoute, - OnboardingPartnerMbtiPageRoute: OnboardingPartnerMbtiPageRoute, OnboardingRelationshipStatusPageRoute: OnboardingRelationshipStatusPageRoute, OnboardingTermsPageRoute: OnboardingTermsPageRoute, } @@ -559,10 +511,7 @@ export interface FileRoutesByFullPath { '/history/delete': typeof HistoryDeletePageRoute '/my-page/account-settings': typeof MyPageAccountSettingsPageRoute '/my-page/profile': typeof MyPageProfilePageRoute - '/onboarding/complete': typeof OnboardingCompletePageRoute - '/onboarding/mbti': typeof OnboardingMbtiPageRoute '/onboarding/nickname': typeof OnboardingNicknamePageRoute - '/onboarding/partner-mbti': typeof OnboardingPartnerMbtiPageRoute '/onboarding/relationship-status': typeof OnboardingRelationshipStatusPageRoute '/onboarding/terms': typeof OnboardingTermsPageRoute '/terms/privacy-policy': typeof TermsPrivacyPolicyPageRoute @@ -595,10 +544,7 @@ export interface FileRoutesByTo { '/history/delete': typeof HistoryDeletePageRoute '/my-page/account-settings': typeof MyPageAccountSettingsPageRoute '/my-page/profile': typeof MyPageProfilePageRoute - '/onboarding/complete': typeof OnboardingCompletePageRoute - '/onboarding/mbti': typeof OnboardingMbtiPageRoute '/onboarding/nickname': typeof OnboardingNicknamePageRoute - '/onboarding/partner-mbti': typeof OnboardingPartnerMbtiPageRoute '/onboarding/relationship-status': typeof OnboardingRelationshipStatusPageRoute '/onboarding/terms': typeof OnboardingTermsPageRoute '/terms/privacy-policy': typeof TermsPrivacyPolicyPageRoute @@ -633,10 +579,7 @@ export interface FileRoutesById { '/history/delete/': typeof HistoryDeletePageRoute '/my-page/account-settings/': typeof MyPageAccountSettingsPageRoute '/my-page/profile/': typeof MyPageProfilePageRoute - '/onboarding/complete/': typeof OnboardingCompletePageRoute - '/onboarding/mbti/': typeof OnboardingMbtiPageRoute '/onboarding/nickname/': typeof OnboardingNicknamePageRoute - '/onboarding/partner-mbti/': typeof OnboardingPartnerMbtiPageRoute '/onboarding/relationship-status/': typeof OnboardingRelationshipStatusPageRoute '/onboarding/terms/': typeof OnboardingTermsPageRoute '/terms/privacy-policy/': typeof TermsPrivacyPolicyPageRoute @@ -672,10 +615,7 @@ export interface FileRouteTypes { | '/history/delete' | '/my-page/account-settings' | '/my-page/profile' - | '/onboarding/complete' - | '/onboarding/mbti' | '/onboarding/nickname' - | '/onboarding/partner-mbti' | '/onboarding/relationship-status' | '/onboarding/terms' | '/terms/privacy-policy' @@ -707,10 +647,7 @@ export interface FileRouteTypes { | '/history/delete' | '/my-page/account-settings' | '/my-page/profile' - | '/onboarding/complete' - | '/onboarding/mbti' | '/onboarding/nickname' - | '/onboarding/partner-mbti' | '/onboarding/relationship-status' | '/onboarding/terms' | '/terms/privacy-policy' @@ -743,10 +680,7 @@ export interface FileRouteTypes { | '/history/delete/' | '/my-page/account-settings/' | '/my-page/profile/' - | '/onboarding/complete/' - | '/onboarding/mbti/' | '/onboarding/nickname/' - | '/onboarding/partner-mbti/' | '/onboarding/relationship-status/' | '/onboarding/terms/' | '/terms/privacy-policy/' @@ -860,10 +794,7 @@ export const routeTree = rootRoute._addFileChildren(rootRouteChildren)._addFileT "/onboarding": { "filePath": "onboarding/layout.tsx", "children": [ - "/onboarding/complete/", - "/onboarding/mbti/", "/onboarding/nickname/", - "/onboarding/partner-mbti/", "/onboarding/relationship-status/", "/onboarding/terms/" ] @@ -937,22 +868,10 @@ export const routeTree = rootRoute._addFileChildren(rootRouteChildren)._addFileT "/my-page/profile/": { "filePath": "my-page/profile/page.tsx" }, - "/onboarding/complete/": { - "filePath": "onboarding/complete/page.tsx", - "parent": "/onboarding" - }, - "/onboarding/mbti/": { - "filePath": "onboarding/mbti/page.tsx", - "parent": "/onboarding" - }, "/onboarding/nickname/": { "filePath": "onboarding/nickname/page.tsx", "parent": "/onboarding" }, - "/onboarding/partner-mbti/": { - "filePath": "onboarding/partner-mbti/page.tsx", - "parent": "/onboarding" - }, "/onboarding/relationship-status/": { "filePath": "onboarding/relationship-status/page.tsx", "parent": "/onboarding" diff --git a/apps/react/src/shared/services/love-type.service.ts b/apps/react/src/shared/services/love-type.service.ts index ae3c9f01..9323cd5d 100644 --- a/apps/react/src/shared/services/love-type.service.ts +++ b/apps/react/src/shared/services/love-type.service.ts @@ -19,6 +19,16 @@ class LoveTypeService extends LoveTypesApi { }, } } + + loveTypePersonalityTypeResultQuery(personalityType: string, lovetype: string) { + return { + queryKey: queryKeys.loveType.result(personalityType, lovetype), + queryFn: async () => { + const response = await this.getLoveTypePersonalityTypeResult({ personalityType, lovetype }) + return response.data + }, + } + } } export default new LoveTypeService() diff --git a/apps/react/src/shared/services/member.service.ts b/apps/react/src/shared/services/member.service.ts index 3e2304a1..f367f67d 100644 --- a/apps/react/src/shared/services/member.service.ts +++ b/apps/react/src/shared/services/member.service.ts @@ -5,6 +5,8 @@ import { UpdateMemberTermsRequestDto, UpdateStartLoveDateRequestDto, LoveTypeTestResult, + CreatePartnerProfileRequestDto, + UpdatePartnerProfileRequestDto, } from '@data/user-api-axios/api' import { queryKeys } from './query-keys' @@ -103,6 +105,30 @@ class MemberService extends MembersApi { } } + createPartnerProfileMutation() { + return { + mutationFn: async (body: CreatePartnerProfileRequestDto) => { + const { data } = await this.createPartnerProfile({ createPartnerProfileRequestDto: body }) + return data + }, + onError: () => { + toast.error('상대 프로필 등록 중 오류가 발생했습니다') + }, + } + } + + updatePartnerProfileMutation() { + return { + mutationFn: async (body: UpdatePartnerProfileRequestDto) => { + const { data } = await this.updatePartnerProfile({ updatePartnerProfileRequestDto: body }) + return data + }, + onError: () => { + toast.error('상대 프로필 수정 중 오류가 발생했습니다') + }, + } + } + submitLoveTypeTestMutation() { return { mutationFn: async (results: LoveTypeTestResult[]) => { diff --git a/apps/react/src/shared/services/query-keys.ts b/apps/react/src/shared/services/query-keys.ts index cbcdbc93..02f2457d 100644 --- a/apps/react/src/shared/services/query-keys.ts +++ b/apps/react/src/shared/services/query-keys.ts @@ -46,6 +46,8 @@ export const queryKeys = { loveType: { all: ['loveType'] as const, questions: () => [...queryKeys.loveType.all, 'questions'] as const, + result: (personalityType: string, lovetype: string) => + [...queryKeys.loveType.all, 'result', personalityType, lovetype] as const, }, // === Login 관련 === From 56231a413d7a10471467e27ec491aea58e9c4c74 Mon Sep 17 00:00:00 2001 From: hin6150 Date: Fri, 20 Mar 2026 20:29:52 +0900 Subject: [PATCH 19/43] =?UTF-8?q?Feat:=20=EB=A7=88=EC=9D=B4=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EC=A7=84=EC=9E=85=20=EC=8B=9C=20=EC=84=B1?= =?UTF-8?q?=ED=96=A5=20=ED=94=8C=EB=A1=9C=EC=9A=B0=20=EC=99=84=EB=A3=8C=20?= =?UTF-8?q?=ED=9B=84=20=EB=A7=88=EC=9D=B4=ED=8E=98=EC=9D=B4=EC=A7=80=20?= =?UTF-8?q?=EB=B3=B5=EA=B7=80=20=EB=B0=8F=2040017=20=EC=97=90=EB=9F=AC=20?= =?UTF-8?q?=EC=B6=94=EC=A0=81=20=EC=A0=9C=EC=99=B8=20(MM-188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - personalityFlowSearchSchema에 from: 'profile' 파라미터 추가 - 마이페이지/프로필에서 성향 편집 진입 시 from: 'profile' 전달 - attachment-select 완료 후 from === 'profile'이면 /my-page/profile로 복귀 - api.ts 인터셉터에서 에러코드 40017(이미 파트너 프로필 등록)은 Sentry/Amplitude 리포팅 제외 Co-Authored-By: Claude Sonnet 4.6 --- apps/react/src/app/mbti/page.tsx | 4 +- .../src/app/my-attachment-select/page.tsx | 10 ++-- apps/react/src/app/my-page/profile/page.tsx | 14 ++++- apps/react/src/app/my-result-preview/page.tsx | 34 ++++++----- apps/react/src/app/page.tsx | 14 ++--- .../app/partner-attachment-select/page.tsx | 18 +++--- apps/react/src/app/partner-mbti/page.tsx | 6 +- .../src/app/partner-result-preview/page.tsx | 56 ++++++++++++++----- .../attachment/lib/get-attachment-type.ts | 6 +- .../src/features/onboarding/ui/mbti-form.tsx | 2 +- .../features/profile/lib/personality-flow.ts | 18 ++++-- apps/react/src/router.tsx | 2 +- apps/react/src/shared/lib/api.ts | 4 +- .../src/shared/services/member.service.ts | 4 +- .../src/shared/ui/key-message-banner.tsx | 10 ++-- .../react/src/shared/ui/selectable-button.tsx | 3 +- 16 files changed, 132 insertions(+), 73 deletions(-) diff --git a/apps/react/src/app/mbti/page.tsx b/apps/react/src/app/mbti/page.tsx index 18ff95fc..56fdfa90 100644 --- a/apps/react/src/app/mbti/page.tsx +++ b/apps/react/src/app/mbti/page.tsx @@ -20,11 +20,11 @@ function MbtiEditPage() { const navigate = useNavigate() const goBack = useGoBack() const { userInfo } = useAuth() - const { flow, chatId } = useSearch({ from: Route.id }) + const { flow, chatId, from } = useSearch({ from: Route.id }) const updateMutation = useMemberUpdateMutation({ onSuccess: () => { - const navigated = navigateAfterMyMbti(navigate, flow, chatId) + const navigated = navigateAfterMyMbti(navigate, flow, chatId, from) if (!navigated) { toast.success('내 성향이 변경되었어요!') goBack() diff --git a/apps/react/src/app/my-attachment-select/page.tsx b/apps/react/src/app/my-attachment-select/page.tsx index 6a5fa867..660cc7f7 100644 --- a/apps/react/src/app/my-attachment-select/page.tsx +++ b/apps/react/src/app/my-attachment-select/page.tsx @@ -23,11 +23,11 @@ export const Route = createFileRoute('/my-attachment-select/')({ function MyAttachmentSelectPage() { const navigate = useNavigate() - const { flow, chatId } = useSearch({ from: Route.id }) + const { flow, chatId, from } = useSearch({ from: Route.id }) const [selectedType, setSelectedType] = useState(null) const updateMutation = useMemberUpdateMutation({ - onSuccess: () => navigateAfterMyAttachment(navigate, flow, chatId), + onSuccess: () => navigateAfterMyAttachment(navigate, flow, chatId, from), errorMessage: '저장 중 오류가 발생했습니다', }) @@ -51,9 +51,9 @@ function MyAttachmentSelectPage() { - 나의 애착 유형이 + 나의 애착유형을
- 무엇인가요? + 선택해주세요 } /> @@ -68,7 +68,7 @@ function MyAttachmentSelectPage() { selected={selectedType === option.value} onClick={() => setSelectedType(option.value)} disabled={updateMutation.isPending} - className="w-full py-5 text-left" + className="w-full text-left" > {option.label} diff --git a/apps/react/src/app/my-page/profile/page.tsx b/apps/react/src/app/my-page/profile/page.tsx index e94d66a3..49dc50d3 100644 --- a/apps/react/src/app/my-page/profile/page.tsx +++ b/apps/react/src/app/my-page/profile/page.tsx @@ -20,7 +20,11 @@ function ProfileManagementPage() { const myMbti = userInfo.personalityType?.toUpperCase() const partnerMbti = userInfo.otherPersonalityType?.toUpperCase() const myAttachmentSubtype = getAttachmentType(userInfo.loveTypeCategory)?.subtype + const partnerAttachmentSubtype = getAttachmentType(userInfo.partnerLoveTypeCategory)?.subtype const myBadgeText = myAttachmentSubtype ? `${myMbti ? myMbti + ' ' : ''}${myAttachmentSubtype}` : undefined + const partnerBadgeText = partnerAttachmentSubtype + ? `${partnerMbti ? partnerMbti + ' ' : ''}${partnerAttachmentSubtype}` + : undefined return ( @@ -40,14 +44,18 @@ function ProfileManagementPage() { label="내 성향" badge={myBadgeText ? { text: myBadgeText, variant: 'completed' } : undefined} onClick={wrapWithTracking(BUTTON_NAMES.OPEN_PROFILE_MBTI, CATEGORIES.PROFILE, () => - navigate({ to: '/mbti', search: { flow: 'my-personality' } }) + navigate({ to: '/mbti', search: { flow: 'my-personality', from: 'profile' } }) )} /> - navigate({ to: '/partner-mbti', search: { flow: 'partner-personality' } }) + navigate({ to: '/partner-mbti', search: { flow: 'partner-personality', from: 'profile' } }) )} />
diff --git a/apps/react/src/app/my-result-preview/page.tsx b/apps/react/src/app/my-result-preview/page.tsx index abfba3a2..c27d6002 100644 --- a/apps/react/src/app/my-result-preview/page.tsx +++ b/apps/react/src/app/my-result-preview/page.tsx @@ -3,7 +3,7 @@ import { LucideCheck, LucideChevronRight } from 'lucide-react' import { getAttachmentType } from '@/features/attachment' import { useAuth } from '@/features/auth' -import { navigateAfterMyResultPreview, personalityFlowSearchSchema } from '@/features/profile/lib/personality-flow' +import { personalityFlowSearchSchema } from '@/features/profile/lib/personality-flow' import { Screen } from '@/shared/layout/screen' import { Button } from '@/shared/ui' import { FixedBottom } from '@/shared/ui/fixed-bottom' @@ -17,46 +17,50 @@ export const Route = createFileRoute('/my-result-preview/')({ function MyResultPreviewPage() { const navigate = useNavigate() - const { flow, chatId } = useSearch({ from: Route.id }) + const { chatId } = useSearch({ from: Route.id }) const { userInfo } = useAuth() const attachmentData = getAttachmentType(userInfo.loveTypeCategory) - const handleContinue = () => navigateAfterMyResultPreview(navigate, flow, chatId) + const handleContinue = () => { + navigate({ to: '/partner-mbti', search: { flow: 'chat-entry', chatId } }) + } const handleViewResult = () => { + // TODO - 내 결과 페이지에 chat-entry에서 넘어올 때 페이지 내부에서 분기처리 navigate({ to: '/attachment-test/result/my' }) } return ( - : undefined} - /> + } />
{/* Checkmark circle */} -
+
-

내 성향 프로필을 완성했어요!

-

연인의 프로필도 완성하러 가볼까요?

+

내 성향 프로필을 완성했어요!

+

연인의 프로필도 완성하러 가볼까요?

{/* Result card */} {attachmentData && ( -
-

{userInfo.nickname}님은

-

+
+

{userInfo.nickname}님은

+

{userInfo.personalityType} {attachmentData.subtype}

-

{attachmentData.description}

+

{attachmentData.description}

- +

+ )}
- -
-
) } - const handleClose = () => { - goBack() - } - return ( + } @@ -148,7 +144,7 @@ export function AttachmentResultContent({ userInfo, type, from }: AttachmentResu
diff --git a/apps/react/src/features/chat/ui/chat-entry-card.tsx b/apps/react/src/features/chat/ui/chat-entry-card.tsx index 7f69ae30..0ba9cc1d 100644 --- a/apps/react/src/features/chat/ui/chat-entry-card.tsx +++ b/apps/react/src/features/chat/ui/chat-entry-card.tsx @@ -2,6 +2,7 @@ import { useMutation, useQueryClient } from '@tanstack/react-query' import { useNavigate } from '@tanstack/react-router' import momoIdle from '@/assets/images/momo-home-idle.png' +import { useAuth } from '@/features/auth' import { wrapWithTracking } from '@/shared/analytics' import { BUTTON_NAMES, CATEGORIES } from '@/shared/analytics/constants' import chatService from '@/shared/services/chat.service' @@ -9,11 +10,20 @@ import chatService from '@/shared/services/chat.service' export function ChatEntryCard() { const navigate = useNavigate() const queryClient = useQueryClient() + const { userInfo } = useAuth() const { mutateAsync: createChatRoom, isPending } = useMutation(chatService.createChatRoomMutation()) const handleChatClick = wrapWithTracking(BUTTON_NAMES.START_NEW_CHAT, CATEGORIES.MAIN, async () => { if (isPending) return + const hasUserPersonality = !!userInfo.personalityType && !!userInfo.loveTypeCategory + const hasPartnerPersonality = !!userInfo.otherPersonalityType && !!userInfo.partnerLoveTypeCategory + + if (!hasUserPersonality || !hasPartnerPersonality) { + navigate({ to: '/personality-flow-loading', search: { flow: 'chat-entry' } }) + return + } + const created = await createChatRoom() const createdId = created?.chatRoomId if (!createdId) { @@ -26,7 +36,7 @@ export function ChatEntryCard() { createdAt: new Date().toISOString(), }) - navigate({ to: '/personality-flow-loading', search: { flow: 'chat-entry', chatId: createdId } }) + navigate({ to: '/chat' }) }) return ( diff --git a/apps/react/src/features/profile/lib/personality-flow.ts b/apps/react/src/features/profile/lib/personality-flow.ts index 2eb5c1bd..764938bb 100644 --- a/apps/react/src/features/profile/lib/personality-flow.ts +++ b/apps/react/src/features/profile/lib/personality-flow.ts @@ -1,10 +1,10 @@ +import { useLocation, useNavigate, useSearch } from '@tanstack/react-router' import { z } from 'zod' export type PersonalityFlow = 'my-personality' | 'partner-personality' | 'chat-entry' export const personalityFlowSearchSchema = z.object({ flow: z.enum(['my-personality', 'partner-personality', 'chat-entry']).optional(), - chatId: z.number().optional(), from: z.literal('profile').optional(), }) @@ -13,91 +13,98 @@ export type PersonalityFlowSearch = z.infer // eslint-disable-next-line @typescript-eslint/no-explicit-any type NavigateFn = (opts: any) => void -/** 내 MBTI 저장 후 다음 단계로 이동. flow 없으면 false 반환 (fallback 처리 필요) */ -export function navigateAfterMyMbti( - navigate: NavigateFn, - flow: PersonalityFlow | undefined, - chatId: number | undefined, - from?: 'profile' -): boolean { - if (flow === 'my-personality') { - navigate({ to: '/my-attachment-select', search: { flow, ...(from && { from }) } }) - return true - } - if (flow === 'chat-entry') { - navigate({ to: '/my-attachment-select', search: { flow, chatId } }) - return true - } - return false +interface FlowParams { + flow: PersonalityFlow | undefined + from: string | undefined } -/** 상대 MBTI 저장 후 다음 단계로 이동. flow 없으면 false 반환 */ -export function navigateAfterPartnerMbti( - navigate: NavigateFn, - flow: PersonalityFlow | undefined, - chatId: number | undefined, - from?: 'profile' -): boolean { - if (flow === 'partner-personality') { - navigate({ to: '/partner-attachment-select', search: { flow, ...(from && { from }) } }) - return true +function navigateNext(navigate: NavigateFn, pathname: string, { flow, from }: FlowParams) { + if (pathname.startsWith('/mbti')) { + if (flow === 'chat-entry') { + navigate({ to: '/my-attachment-select', search: { flow } }) + } else if (flow === 'my-personality') { + navigate({ to: '/my-attachment-select', search: { flow, ...(from && { from }) } }) + } + return } - if (flow === 'chat-entry') { - navigate({ to: '/partner-attachment-select', search: { flow, chatId } }) - return true + + if (pathname.startsWith('/my-attachment-select')) { + if (flow === 'chat-entry') { + navigate({ to: '/my-result-preview', search: { flow } }) + } else if (from === 'profile') { + navigate({ to: '/my-page/profile', replace: true }) + } else { + navigate({ to: '/', replace: true }) + } + return } - return false -} -/** 내 애착유형 선택 후 다음 단계로 이동 */ -export function navigateAfterMyAttachment( - navigate: NavigateFn, - flow: PersonalityFlow | undefined, - chatId: number | undefined, - from?: 'profile' -) { - if (from === 'profile') { - navigate({ to: '/my-page/profile', replace: true }) + if (pathname.startsWith('/my-result-preview')) { + if (flow === 'chat-entry') { + navigate({ to: '/partner-mbti', search: { flow } }) + } return } - if (flow === 'my-personality') { - navigate({ to: '/attachment-test/result/my', search: { from: 'my-page' } }) + + if (pathname.startsWith('/partner-mbti')) { + if (flow === 'chat-entry') { + navigate({ to: '/partner-attachment-select', search: { flow } }) + } else if (flow === 'partner-personality') { + navigate({ to: '/partner-attachment-select', search: { flow, ...(from && { from }) } }) + } return } - if (flow === 'chat-entry') { - navigate({ to: '/my-result-preview', search: { flow, chatId } }) + + if (pathname.startsWith('/partner-attachment-select')) { + if (flow === 'chat-entry') { + navigate({ to: '/partner-result-preview', search: { flow }, replace: true }) + } else if (from === 'profile') { + navigate({ to: '/my-page/profile', replace: true }) + } else { + navigate({ to: '/', replace: true }) + } return } - navigate({ to: '/attachment-test/result/my' }) -} -/** 내 결과 미리보기에서 다음 단계로 이동 */ -export function navigateAfterMyResultPreview( - navigate: NavigateFn, - flow: PersonalityFlow | undefined, - chatId: number | undefined -) { - if (flow === 'chat-entry') { - navigate({ to: '/partner-mbti', search: { flow, chatId } }) + if (pathname.startsWith('/partner-result-preview')) { + navigate({ to: '/', replace: true }) return } - navigate({ to: '/', replace: true }) -} -/** 상대 애착유형 선택 후 다음 단계로 이동 */ -export function navigateAfterPartnerAttachment( - navigate: NavigateFn, - flow: PersonalityFlow | undefined, - chatId: number | undefined, - hasData: boolean -) { - if (flow === 'chat-entry') { - if (hasData) { - navigate({ to: '/partner-result-preview', search: { flow, chatId } }) - } else { - navigate({ to: '/chat', search: { chatId }, replace: true }) + if (pathname.startsWith('/attachment-test/question')) { + if (flow === 'my-personality') { + navigate({ + to: '/attachment-test/result/my', + search: { from: from === 'profile' ? 'my-page' : undefined }, + replace: true, + }) + } else if (flow === 'chat-entry') { + navigate({ to: '/my-result-preview', search: { flow }, replace: true }) } return } - navigate({ to: '/attachment-test/result/partner' }) +} + +function navigateExit(navigate: NavigateFn, { from }: Pick) { + if (from === 'profile' || from === 'my-page') { + navigate({ to: '/my-page/profile', replace: true }) + } else { + navigate({ to: '/', replace: true }) + } +} + +export function usePersonalityFlow() { + const navigate = useNavigate() + const location = useLocation() + const search = useSearch({ strict: false }) as FlowParams + + const next = () => { + navigateNext(navigate, location.pathname, search) + } + + const exit = () => { + navigateExit(navigate, { from: search.from }) + } + + return { flow: search.flow, from: search.from, next, exit } } From 403d717b21805238dd2d94619fef1e6bdc6b79ee Mon Sep 17 00:00:00 2001 From: hin6150 Date: Fri, 20 Mar 2026 22:23:59 +0900 Subject: [PATCH 21/43] =?UTF-8?q?Fix:=20=EA=B2=B0=EA=B3=BC=20=EB=AF=B8?= =?UTF-8?q?=EB=A6=AC=EB=B3=B4=EA=B8=B0=EC=97=90=EC=84=9C=20=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=20=EC=83=81=EC=84=B8=20=EC=A7=84=EC=9E=85=20=ED=9B=84?= =?UTF-8?q?=20=EB=8B=AB=EA=B8=B0=20=EC=8B=9C=20=EB=AF=B8=EB=A6=AC=EB=B3=B4?= =?UTF-8?q?=EA=B8=B0=EB=A1=9C=20=EB=B3=B5=EA=B7=80=20(MM-188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - my/partner-result-preview에서 결과 상세 진입 시 replace + from 파라미터 전달 - navigateExit에 my-result-preview, partner-result-preview 케이스 추가 Co-Authored-By: Claude Sonnet 4.6 --- apps/react/src/app/my-result-preview/page.tsx | 2 +- apps/react/src/app/partner-result-preview/page.tsx | 2 +- apps/react/src/features/profile/lib/personality-flow.ts | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/react/src/app/my-result-preview/page.tsx b/apps/react/src/app/my-result-preview/page.tsx index c3e31bf4..f47832ae 100644 --- a/apps/react/src/app/my-result-preview/page.tsx +++ b/apps/react/src/app/my-result-preview/page.tsx @@ -23,7 +23,7 @@ function MyResultPreviewPage() { const attachmentData = getAttachmentType(userInfo.loveTypeCategory) const handleViewResult = () => { - navigate({ to: '/attachment-test/result/my' }) + navigate({ to: '/attachment-test/result/my', search: { from: 'my-result-preview' }, replace: true }) } return ( diff --git a/apps/react/src/app/partner-result-preview/page.tsx b/apps/react/src/app/partner-result-preview/page.tsx index 38e90f80..9dc86c51 100644 --- a/apps/react/src/app/partner-result-preview/page.tsx +++ b/apps/react/src/app/partner-result-preview/page.tsx @@ -27,7 +27,7 @@ function PartnerResultPreviewPage() { : null const handleViewResult = () => { - navigate({ to: '/attachment-test/result/partner' }) + navigate({ to: '/attachment-test/result/partner', search: { from: 'partner-result-preview' }, replace: true }) } return ( diff --git a/apps/react/src/features/profile/lib/personality-flow.ts b/apps/react/src/features/profile/lib/personality-flow.ts index 764938bb..19a92419 100644 --- a/apps/react/src/features/profile/lib/personality-flow.ts +++ b/apps/react/src/features/profile/lib/personality-flow.ts @@ -88,6 +88,10 @@ function navigateNext(navigate: NavigateFn, pathname: string, { flow, from }: Fl function navigateExit(navigate: NavigateFn, { from }: Pick) { if (from === 'profile' || from === 'my-page') { navigate({ to: '/my-page/profile', replace: true }) + } else if (from === 'my-result-preview') { + navigate({ to: '/my-result-preview', replace: true }) + } else if (from === 'partner-result-preview') { + navigate({ to: '/partner-result-preview', replace: true }) } else { navigate({ to: '/', replace: true }) } From c53e6a379adcd05ef80c1b7d8e10a7f206565e1b Mon Sep 17 00:00:00 2001 From: LeeWxx Date: Sat, 21 Mar 2026 06:33:25 +0900 Subject: [PATCH 22/43] =?UTF-8?q?Fix:=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=84=9C=EB=B2=84=20=EC=8A=A4=EC=9B=A8=EA=B1=B0=20=EB=B0=98?= =?UTF-8?q?=EC=98=81=20(MM-189)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user-api-axios/api/apis/bookmarks-api.ts | 6 + .../user-api-axios/api/apis/chatroom-api.ts | 10 + .../user-api-axios/api/apis/couples-api.ts | 27 +- .../user-api-axios/api/apis/logins-api.ts | 4 + .../user-api-axios/api/apis/love-types-api.ts | 130 ++++++++ .../api/apis/members-alarms-api.ts | 3 + .../user-api-axios/api/apis/members-api.ts | 282 +++++++++++++++++- .../user-api-axios/api/apis/questions-api.ts | 68 +++-- .../user-api-axios/api/apis/refresh-api.ts | 1 + .../user-api-axios/api/apis/sign-ups-api.ts | 9 +- .../api/apis/sseconnection-apiapi.ts | 2 + .../data/user-api-axios/api/apis/terms-api.ts | 2 + .../data/user-api-axios/api/apis/test-api.ts | 8 + .../data/user-api-axios/api/configuration.ts | 26 +- .../api/models/couple-link-data.ts | 2 +- .../api/models/couple-link-request-dto.ts | 3 + .../models/couple-link-success-response.ts | 2 +- .../api/models/couple-unlink-data.ts | 2 +- .../models/couple-unlink-success-response.ts | 2 +- .../create-partner-profile-request-dto.ts | 29 ++ .../get-invite-code-success-response.ts | 2 +- .../data/user-api-axios/api/models/index.ts | 8 + .../api/models/invite-code-response-data.ts | 2 +- .../love-type-personality-type-block-data.ts | 27 ++ .../love-type-personality-type-result-data.ts | 80 +++++ ...ersonality-type-result-success-response.ts | 36 +++ .../api/models/love-type-text-block-data.ts | 27 ++ .../user-api-axios/api/models/member-data.ts | 22 +- .../api/models/partner-member-data.ts | 33 +- .../api/models/partner-profile-data.ts | 42 +++ .../partner-profile-success-response.ts | 36 +++ .../api/models/sign-up-request-dto.ts | 2 - .../api/models/update-member-data.ts | 30 +- .../api/models/update-member-request-dto.ts | 11 +- .../update-partner-profile-request-dto.ts | 31 ++ .../api/models/update-start-love-date-data.ts | 2 +- .../update-start-love-date-request-dto.ts | 3 + ...update-start-love-date-success-response.ts | 2 +- 38 files changed, 920 insertions(+), 94 deletions(-) create mode 100644 packages/data/user-api-axios/api/models/create-partner-profile-request-dto.ts create mode 100644 packages/data/user-api-axios/api/models/love-type-personality-type-block-data.ts create mode 100644 packages/data/user-api-axios/api/models/love-type-personality-type-result-data.ts create mode 100644 packages/data/user-api-axios/api/models/love-type-personality-type-result-success-response.ts create mode 100644 packages/data/user-api-axios/api/models/love-type-text-block-data.ts create mode 100644 packages/data/user-api-axios/api/models/partner-profile-data.ts create mode 100644 packages/data/user-api-axios/api/models/partner-profile-success-response.ts create mode 100644 packages/data/user-api-axios/api/models/update-partner-profile-request-dto.ts diff --git a/packages/data/user-api-axios/api/apis/bookmarks-api.ts b/packages/data/user-api-axios/api/apis/bookmarks-api.ts index e995c2f8..733b07da 100644 --- a/packages/data/user-api-axios/api/apis/bookmarks-api.ts +++ b/packages/data/user-api-axios/api/apis/bookmarks-api.ts @@ -89,6 +89,7 @@ export const BookmarksApiAxiosParamCreator = function (configuration?: Configura await setBearerAuthToObject(localVarHeaderParameter, configuration) localVarHeaderParameter['Content-Type'] = 'application/json' + localVarHeaderParameter['Accept'] = '*/*' setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} @@ -141,6 +142,7 @@ export const BookmarksApiAxiosParamCreator = function (configuration?: Configura await setBearerAuthToObject(localVarHeaderParameter, configuration) localVarHeaderParameter['Content-Type'] = 'application/json' + localVarHeaderParameter['Accept'] = '*/*' setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} @@ -198,6 +200,8 @@ export const BookmarksApiAxiosParamCreator = function (configuration?: Configura } } + localVarHeaderParameter['Accept'] = '*/*' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } @@ -254,6 +258,8 @@ export const BookmarksApiAxiosParamCreator = function (configuration?: Configura localVarQueryParameter['sort'] = sort } + localVarHeaderParameter['Accept'] = '*/*' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } diff --git a/packages/data/user-api-axios/api/apis/chatroom-api.ts b/packages/data/user-api-axios/api/apis/chatroom-api.ts index 705b3639..78fac723 100644 --- a/packages/data/user-api-axios/api/apis/chatroom-api.ts +++ b/packages/data/user-api-axios/api/apis/chatroom-api.ts @@ -79,6 +79,8 @@ export const ChatroomApiAxiosParamCreator = function (configuration?: Configurat // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + localVarHeaderParameter['Accept'] = '*/*' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } @@ -118,6 +120,7 @@ export const ChatroomApiAxiosParamCreator = function (configuration?: Configurat await setBearerAuthToObject(localVarHeaderParameter, configuration) localVarHeaderParameter['Content-Type'] = 'application/json' + localVarHeaderParameter['Accept'] = '*/*' setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} @@ -174,6 +177,8 @@ export const ChatroomApiAxiosParamCreator = function (configuration?: Configurat localVarQueryParameter['keyword'] = keyword } + localVarHeaderParameter['Accept'] = '*/*' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } @@ -225,6 +230,8 @@ export const ChatroomApiAxiosParamCreator = function (configuration?: Configurat } } + localVarHeaderParameter['Accept'] = '*/*' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } @@ -263,6 +270,8 @@ export const ChatroomApiAxiosParamCreator = function (configuration?: Configurat // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + localVarHeaderParameter['Accept'] = '*/*' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } @@ -309,6 +318,7 @@ export const ChatroomApiAxiosParamCreator = function (configuration?: Configurat await setBearerAuthToObject(localVarHeaderParameter, configuration) localVarHeaderParameter['Content-Type'] = 'application/json' + localVarHeaderParameter['Accept'] = '*/*' setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} diff --git a/packages/data/user-api-axios/api/apis/couples-api.ts b/packages/data/user-api-axios/api/apis/couples-api.ts index 376bf4eb..4e6975c5 100644 --- a/packages/data/user-api-axios/api/apis/couples-api.ts +++ b/packages/data/user-api-axios/api/apis/couples-api.ts @@ -45,10 +45,11 @@ import type { SwaggerErrorResponse } from '../models' export const CouplesApiAxiosParamCreator = function (configuration?: Configuration) { return { /** - * 커플 초대코드를 사용하여 커플을 연결합니다. JWT 토큰이 필요합니다. + * [Deprecated] 커플 초대코드를 사용하여 커플을 연결합니다. 커플 연동 기능은 제거 예정이며, 앞으로는 사용자가 커플 정보를 직접 입력하는 방식을 사용합니다. JWT 토큰이 필요합니다. * @summary 커플 연결 * @param {CoupleLinkRequestDto} coupleLinkRequestDto * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ linkCouple: async ( @@ -74,6 +75,7 @@ export const CouplesApiAxiosParamCreator = function (configuration?: Configurati await setBearerAuthToObject(localVarHeaderParameter, configuration) localVarHeaderParameter['Content-Type'] = 'application/json' + localVarHeaderParameter['Accept'] = '*/*' setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} @@ -86,9 +88,10 @@ export const CouplesApiAxiosParamCreator = function (configuration?: Configurati } }, /** - * 연결된 커플을 끊습니다. JWT 토큰이 필요합니다. + * [Deprecated] 연결된 커플을 끊습니다. 커플 연동 기능은 제거 예정이며, 앞으로는 사용자가 커플 정보를 직접 입력하는 방식을 사용합니다. JWT 토큰이 필요합니다. * @summary 커플 연결 끊기 * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ unlinkCouple: async (options: RawAxiosRequestConfig = {}): Promise => { @@ -108,6 +111,8 @@ export const CouplesApiAxiosParamCreator = function (configuration?: Configurati // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + localVarHeaderParameter['Accept'] = '*/*' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } @@ -127,10 +132,11 @@ export const CouplesApiFp = function (configuration?: Configuration) { const localVarAxiosParamCreator = CouplesApiAxiosParamCreator(configuration) return { /** - * 커플 초대코드를 사용하여 커플을 연결합니다. JWT 토큰이 필요합니다. + * [Deprecated] 커플 초대코드를 사용하여 커플을 연결합니다. 커플 연동 기능은 제거 예정이며, 앞으로는 사용자가 커플 정보를 직접 입력하는 방식을 사용합니다. JWT 토큰이 필요합니다. * @summary 커플 연결 * @param {CoupleLinkRequestDto} coupleLinkRequestDto * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ async linkCouple( @@ -150,9 +156,10 @@ export const CouplesApiFp = function (configuration?: Configuration) { )(axios, localVarOperationServerBasePath || basePath) }, /** - * 연결된 커플을 끊습니다. JWT 토큰이 필요합니다. + * [Deprecated] 연결된 커플을 끊습니다. 커플 연동 기능은 제거 예정이며, 앞으로는 사용자가 커플 정보를 직접 입력하는 방식을 사용합니다. JWT 토큰이 필요합니다. * @summary 커플 연결 끊기 * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ async unlinkCouple( @@ -180,10 +187,11 @@ export const CouplesApiFactory = function (configuration?: Configuration, basePa const localVarFp = CouplesApiFp(configuration) return { /** - * 커플 초대코드를 사용하여 커플을 연결합니다. JWT 토큰이 필요합니다. + * [Deprecated] 커플 초대코드를 사용하여 커플을 연결합니다. 커플 연동 기능은 제거 예정이며, 앞으로는 사용자가 커플 정보를 직접 입력하는 방식을 사용합니다. JWT 토큰이 필요합니다. * @summary 커플 연결 * @param {CouplesApiLinkCoupleRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ linkCouple( @@ -195,9 +203,10 @@ export const CouplesApiFactory = function (configuration?: Configuration, basePa .then((request) => request(axios, basePath)) }, /** - * 연결된 커플을 끊습니다. JWT 토큰이 필요합니다. + * [Deprecated] 연결된 커플을 끊습니다. 커플 연동 기능은 제거 예정이며, 앞으로는 사용자가 커플 정보를 직접 입력하는 방식을 사용합니다. JWT 토큰이 필요합니다. * @summary 커플 연결 끊기 * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ unlinkCouple(options?: RawAxiosRequestConfig): AxiosPromise { @@ -218,10 +227,11 @@ export interface CouplesApiLinkCoupleRequest { */ export class CouplesApi extends BaseAPI { /** - * 커플 초대코드를 사용하여 커플을 연결합니다. JWT 토큰이 필요합니다. + * [Deprecated] 커플 초대코드를 사용하여 커플을 연결합니다. 커플 연동 기능은 제거 예정이며, 앞으로는 사용자가 커플 정보를 직접 입력하는 방식을 사용합니다. JWT 토큰이 필요합니다. * @summary 커플 연결 * @param {CouplesApiLinkCoupleRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ public linkCouple(requestParameters: CouplesApiLinkCoupleRequest, options?: RawAxiosRequestConfig) { @@ -231,9 +241,10 @@ export class CouplesApi extends BaseAPI { } /** - * 연결된 커플을 끊습니다. JWT 토큰이 필요합니다. + * [Deprecated] 연결된 커플을 끊습니다. 커플 연동 기능은 제거 예정이며, 앞으로는 사용자가 커플 정보를 직접 입력하는 방식을 사용합니다. JWT 토큰이 필요합니다. * @summary 커플 연결 끊기 * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ public unlinkCouple(options?: RawAxiosRequestConfig) { diff --git a/packages/data/user-api-axios/api/apis/logins-api.ts b/packages/data/user-api-axios/api/apis/logins-api.ts index 50a180a4..cbde3491 100644 --- a/packages/data/user-api-axios/api/apis/logins-api.ts +++ b/packages/data/user-api-axios/api/apis/logins-api.ts @@ -76,6 +76,7 @@ export const LoginsApiAxiosParamCreator = function (configuration?: Configuratio await setBearerAuthToObject(localVarHeaderParameter, configuration) localVarHeaderParameter['Content-Type'] = 'application/json' + localVarHeaderParameter['Accept'] = '*/*' setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} @@ -117,6 +118,7 @@ export const LoginsApiAxiosParamCreator = function (configuration?: Configuratio await setBearerAuthToObject(localVarHeaderParameter, configuration) localVarHeaderParameter['Content-Type'] = 'application/json' + localVarHeaderParameter['Accept'] = '*/*' setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} @@ -151,6 +153,8 @@ export const LoginsApiAxiosParamCreator = function (configuration?: Configuratio // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + localVarHeaderParameter['Accept'] = '*/*' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } diff --git a/packages/data/user-api-axios/api/apis/love-types-api.ts b/packages/data/user-api-axios/api/apis/love-types-api.ts index c3b14058..53fdd40f 100644 --- a/packages/data/user-api-axios/api/apis/love-types-api.ts +++ b/packages/data/user-api-axios/api/apis/love-types-api.ts @@ -32,6 +32,8 @@ import { // @ts-ignore import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError, operationServerMap } from '../base' // @ts-ignore +import type { LoveTypePersonalityTypeResultSuccessResponse } from '../models' +// @ts-ignore import type { LoveTypeQuestionCalculateSuccessResponse } from '../models' // @ts-ignore import type { LoveTypeQuestionSuccessResponse } from '../models' @@ -44,6 +46,58 @@ import type { SwaggerErrorResponse } from '../models' */ export const LoveTypesApiAxiosParamCreator = function (configuration?: Configuration) { return { + /** + * MBTI와 애착 유형 조합에 해당하는 상세 결과를 조회합니다. + * @summary MBTI + 애착 유형 상세 결과 조회 + * @param {string} personalityType + * @param {string} lovetype + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getLoveTypePersonalityTypeResult: async ( + personalityType: string, + lovetype: string, + options: RawAxiosRequestConfig = {} + ): Promise => { + // verify required parameter 'personalityType' is not null or undefined + assertParamExists('getLoveTypePersonalityTypeResult', 'personalityType', personalityType) + // verify required parameter 'lovetype' is not null or undefined + assertParamExists('getLoveTypePersonalityTypeResult', 'lovetype', lovetype) + const localVarPath = `/love-types/result` + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL) + let baseOptions + if (configuration) { + baseOptions = configuration.baseOptions + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options } + const localVarHeaderParameter = {} as any + const localVarQueryParameter = {} as any + + // authentication Bearer Authentication required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + if (personalityType !== undefined) { + localVarQueryParameter['personalityType'] = personalityType + } + + if (lovetype !== undefined) { + localVarQueryParameter['lovetype'] = lovetype + } + + localVarHeaderParameter['Accept'] = '*/*' + + setSearchParams(localVarUrlObj, localVarQueryParameter) + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} + localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + } + }, /** * 애착 유형 검사의 질문을 조회합니다. * @summary 애착 유형 검사 질문 조회 @@ -67,6 +121,8 @@ export const LoveTypesApiAxiosParamCreator = function (configuration?: Configura // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + localVarHeaderParameter['Accept'] = '*/*' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } @@ -105,6 +161,8 @@ export const LoveTypesApiAxiosParamCreator = function (configuration?: Configura // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + localVarHeaderParameter['Accept'] = '*/*' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } @@ -144,6 +202,7 @@ export const LoveTypesApiAxiosParamCreator = function (configuration?: Configura await setBearerAuthToObject(localVarHeaderParameter, configuration) localVarHeaderParameter['Content-Type'] = 'application/json' + localVarHeaderParameter['Accept'] = '*/*' setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} @@ -168,6 +227,37 @@ export const LoveTypesApiAxiosParamCreator = function (configuration?: Configura export const LoveTypesApiFp = function (configuration?: Configuration) { const localVarAxiosParamCreator = LoveTypesApiAxiosParamCreator(configuration) return { + /** + * MBTI와 애착 유형 조합에 해당하는 상세 결과를 조회합니다. + * @summary MBTI + 애착 유형 상세 결과 조회 + * @param {string} personalityType + * @param {string} lovetype + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async getLoveTypePersonalityTypeResult( + personalityType: string, + lovetype: string, + options?: RawAxiosRequestConfig + ): Promise< + (axios?: AxiosInstance, basePath?: string) => AxiosPromise + > { + const localVarAxiosArgs = await localVarAxiosParamCreator.getLoveTypePersonalityTypeResult( + personalityType, + lovetype, + options + ) + const localVarOperationServerIndex = configuration?.serverIndex ?? 0 + const localVarOperationServerBasePath = + operationServerMap['LoveTypesApi.getLoveTypePersonalityTypeResult']?.[localVarOperationServerIndex]?.url + return (axios, basePath) => + createRequestFunction( + localVarAxiosArgs, + globalAxios, + BASE_PATH, + configuration + )(axios, localVarOperationServerBasePath || basePath) + }, /** * 애착 유형 검사의 질문을 조회합니다. * @summary 애착 유형 검사 질문 조회 @@ -244,6 +334,21 @@ export const LoveTypesApiFp = function (configuration?: Configuration) { export const LoveTypesApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { const localVarFp = LoveTypesApiFp(configuration) return { + /** + * MBTI와 애착 유형 조합에 해당하는 상세 결과를 조회합니다. + * @summary MBTI + 애착 유형 상세 결과 조회 + * @param {LoveTypesApiGetLoveTypePersonalityTypeResultRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + getLoveTypePersonalityTypeResult( + requestParameters: LoveTypesApiGetLoveTypePersonalityTypeResultRequest, + options?: RawAxiosRequestConfig + ): AxiosPromise { + return localVarFp + .getLoveTypePersonalityTypeResult(requestParameters.personalityType, requestParameters.lovetype, options) + .then((request) => request(axios, basePath)) + }, /** * 애착 유형 검사의 질문을 조회합니다. * @summary 애착 유형 검사 질문 조회 @@ -286,6 +391,15 @@ export const LoveTypesApiFactory = function (configuration?: Configuration, base } } +/** + * Request parameters for getLoveTypePersonalityTypeResult operation in LoveTypesApi. + */ +export interface LoveTypesApiGetLoveTypePersonalityTypeResultRequest { + readonly personalityType: string + + readonly lovetype: string +} + /** * Request parameters for getLoveTypeResult operation in LoveTypesApi. */ @@ -304,6 +418,22 @@ export interface LoveTypesApiRegisterResultRequest { * LoveTypesApi - object-oriented interface */ export class LoveTypesApi extends BaseAPI { + /** + * MBTI와 애착 유형 조합에 해당하는 상세 결과를 조회합니다. + * @summary MBTI + 애착 유형 상세 결과 조회 + * @param {LoveTypesApiGetLoveTypePersonalityTypeResultRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + public getLoveTypePersonalityTypeResult( + requestParameters: LoveTypesApiGetLoveTypePersonalityTypeResultRequest, + options?: RawAxiosRequestConfig + ) { + return LoveTypesApiFp(this.configuration) + .getLoveTypePersonalityTypeResult(requestParameters.personalityType, requestParameters.lovetype, options) + .then((request) => request(this.axios, this.basePath)) + } + /** * 애착 유형 검사의 질문을 조회합니다. * @summary 애착 유형 검사 질문 조회 diff --git a/packages/data/user-api-axios/api/apis/members-alarms-api.ts b/packages/data/user-api-axios/api/apis/members-alarms-api.ts index a282e3ec..9a4794c8 100644 --- a/packages/data/user-api-axios/api/apis/members-alarms-api.ts +++ b/packages/data/user-api-axios/api/apis/members-alarms-api.ts @@ -67,6 +67,8 @@ export const MembersAlarmsApiAxiosParamCreator = function (configuration?: Confi // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + localVarHeaderParameter['Accept'] = '*/*' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } @@ -106,6 +108,7 @@ export const MembersAlarmsApiAxiosParamCreator = function (configuration?: Confi await setBearerAuthToObject(localVarHeaderParameter, configuration) localVarHeaderParameter['Content-Type'] = 'application/json' + localVarHeaderParameter['Accept'] = '*/*' setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} diff --git a/packages/data/user-api-axios/api/apis/members-api.ts b/packages/data/user-api-axios/api/apis/members-api.ts index 2f26f121..d0525450 100644 --- a/packages/data/user-api-axios/api/apis/members-api.ts +++ b/packages/data/user-api-axios/api/apis/members-api.ts @@ -32,6 +32,8 @@ import { // @ts-ignore import { BASE_PATH, COLLECTION_FORMATS, type RequestArgs, BaseAPI, RequiredError, operationServerMap } from '../base' // @ts-ignore +import type { CreatePartnerProfileRequestDto } from '../models' +// @ts-ignore import type { DeleteMemberSuccessResponse } from '../models' // @ts-ignore import type { GetInviteCodeSuccessResponse } from '../models' @@ -40,6 +42,8 @@ import type { MemberInfoSuccessResponse } from '../models' // @ts-ignore import type { PartnerMemberInfoSuccessResponse } from '../models' // @ts-ignore +import type { PartnerProfileSuccessResponse } from '../models' +// @ts-ignore import type { RegisterLoveTypeRequestDto } from '../models' // @ts-ignore import type { RegisterLoveTypeSuccessResponse } from '../models' @@ -54,6 +58,8 @@ import type { UpdateMemberTermsRequestDto } from '../models' // @ts-ignore import type { UpdateMemberTermsSuccessResponse } from '../models' // @ts-ignore +import type { UpdatePartnerProfileRequestDto } from '../models' +// @ts-ignore import type { UpdateStartLoveDateRequestDto } from '../models' // @ts-ignore import type { UpdateStartLoveDateSuccessResponse } from '../models' @@ -62,6 +68,52 @@ import type { UpdateStartLoveDateSuccessResponse } from '../models' */ export const MembersApiAxiosParamCreator = function (configuration?: Configuration) { return { + /** + * 현재 로그인된 사용자가 상대방 MBTI와 애착 유형을 직접 입력합니다. JWT 토큰이 필요합니다. + * @summary 상대 프로필 최초 등록 + * @param {CreatePartnerProfileRequestDto} createPartnerProfileRequestDto + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createPartnerProfile: async ( + createPartnerProfileRequestDto: CreatePartnerProfileRequestDto, + options: RawAxiosRequestConfig = {} + ): Promise => { + // verify required parameter 'createPartnerProfileRequestDto' is not null or undefined + assertParamExists('createPartnerProfile', 'createPartnerProfileRequestDto', createPartnerProfileRequestDto) + const localVarPath = `/members/partners` + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL) + let baseOptions + if (configuration) { + baseOptions = configuration.baseOptions + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options } + const localVarHeaderParameter = {} as any + const localVarQueryParameter = {} as any + + // authentication Bearer Authentication required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + localVarHeaderParameter['Content-Type'] = 'application/json' + localVarHeaderParameter['Accept'] = '*/*' + + setSearchParams(localVarUrlObj, localVarQueryParameter) + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} + localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } + localVarRequestOptions.data = serializeDataIfNeeded( + createPartnerProfileRequestDto, + localVarRequestOptions, + configuration + ) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + } + }, /** * 현재 로그인된 사용자의 탈퇴를 처리합니다. JWT 토큰이 필요합니다. * @summary 사용자 탈퇴 @@ -85,6 +137,8 @@ export const MembersApiAxiosParamCreator = function (configuration?: Configurati // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + localVarHeaderParameter['Accept'] = '*/*' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } @@ -117,6 +171,8 @@ export const MembersApiAxiosParamCreator = function (configuration?: Configurati // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + localVarHeaderParameter['Accept'] = '*/*' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } @@ -127,9 +183,10 @@ export const MembersApiAxiosParamCreator = function (configuration?: Configurati } }, /** - * 현재 로그인된 사용자의 초대 코드를 조회합니다. JWT 토큰이 필요합니다. + * [Deprecated] 현재 로그인된 사용자의 초대 코드를 조회합니다. 커플 연동 기능은 제거 예정이며, 앞으로는 사용자가 커플 정보를 직접 입력하는 방식을 사용합니다. JWT 토큰이 필요합니다. * @summary 사용자 초대 코드 조회 * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ getMemberInviteCode: async (options: RawAxiosRequestConfig = {}): Promise => { @@ -149,6 +206,8 @@ export const MembersApiAxiosParamCreator = function (configuration?: Configurati // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + localVarHeaderParameter['Accept'] = '*/*' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } @@ -159,9 +218,10 @@ export const MembersApiAxiosParamCreator = function (configuration?: Configurati } }, /** - * 현재 로그인된 멤버의 파트너 정보를 조회합니다. JWT 토큰이 필요합니다. - * @summary 커플 상대 정보 조회 + * [Deprecated] 현재 로그인된 멤버가 직접 입력한 상대 프로필을 조회합니다. 신규 클라이언트는 GET /members 응답의 partner 필드를 사용하세요. JWT 토큰이 필요합니다. + * @summary 상대 프로필 조회 * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ getPartnerMemberInfo: async (options: RawAxiosRequestConfig = {}): Promise => { @@ -181,6 +241,8 @@ export const MembersApiAxiosParamCreator = function (configuration?: Configurati // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + localVarHeaderParameter['Accept'] = '*/*' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } @@ -220,6 +282,7 @@ export const MembersApiAxiosParamCreator = function (configuration?: Configurati await setBearerAuthToObject(localVarHeaderParameter, configuration) localVarHeaderParameter['Content-Type'] = 'application/json' + localVarHeaderParameter['Accept'] = '*/*' setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} @@ -265,6 +328,7 @@ export const MembersApiAxiosParamCreator = function (configuration?: Configurati await setBearerAuthToObject(localVarHeaderParameter, configuration) localVarHeaderParameter['Content-Type'] = 'application/json' + localVarHeaderParameter['Accept'] = '*/*' setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} @@ -306,6 +370,7 @@ export const MembersApiAxiosParamCreator = function (configuration?: Configurati await setBearerAuthToObject(localVarHeaderParameter, configuration) localVarHeaderParameter['Content-Type'] = 'application/json' + localVarHeaderParameter['Accept'] = '*/*' setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} @@ -322,10 +387,57 @@ export const MembersApiAxiosParamCreator = function (configuration?: Configurati } }, /** - * 커플로 연동된 사용자의 연애 시작일을 변경합니다. 커플이 아닌 사용자는 사용할 수 없습니다. JWT 토큰이 필요합니다. + * 현재 로그인된 사용자가 직접 입력한 상대 프로필을 수정합니다. JWT 토큰이 필요합니다. + * @summary 상대 프로필 수정 + * @param {UpdatePartnerProfileRequestDto} updatePartnerProfileRequestDto + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updatePartnerProfile: async ( + updatePartnerProfileRequestDto: UpdatePartnerProfileRequestDto, + options: RawAxiosRequestConfig = {} + ): Promise => { + // verify required parameter 'updatePartnerProfileRequestDto' is not null or undefined + assertParamExists('updatePartnerProfile', 'updatePartnerProfileRequestDto', updatePartnerProfileRequestDto) + const localVarPath = `/members/partners` + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL) + let baseOptions + if (configuration) { + baseOptions = configuration.baseOptions + } + + const localVarRequestOptions = { method: 'PATCH', ...baseOptions, ...options } + const localVarHeaderParameter = {} as any + const localVarQueryParameter = {} as any + + // authentication Bearer Authentication required + // http bearer authentication required + await setBearerAuthToObject(localVarHeaderParameter, configuration) + + localVarHeaderParameter['Content-Type'] = 'application/json' + localVarHeaderParameter['Accept'] = '*/*' + + setSearchParams(localVarUrlObj, localVarQueryParameter) + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} + localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } + localVarRequestOptions.data = serializeDataIfNeeded( + updatePartnerProfileRequestDto, + localVarRequestOptions, + configuration + ) + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + } + }, + /** + * [Deprecated] 커플로 연동된 사용자의 연애 시작일을 변경합니다. 커플 연동 기능은 제거 예정이며, 앞으로는 사용자가 커플 정보를 직접 입력하는 방식을 사용합니다. 커플이 아닌 사용자는 사용할 수 없습니다. JWT 토큰이 필요합니다. * @summary 연애 시작일 변경 * @param {UpdateStartLoveDateRequestDto} updateStartLoveDateRequestDto * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ updateStartLoveDate: async ( @@ -351,6 +463,7 @@ export const MembersApiAxiosParamCreator = function (configuration?: Configurati await setBearerAuthToObject(localVarHeaderParameter, configuration) localVarHeaderParameter['Content-Type'] = 'application/json' + localVarHeaderParameter['Accept'] = '*/*' setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} @@ -375,6 +488,32 @@ export const MembersApiAxiosParamCreator = function (configuration?: Configurati export const MembersApiFp = function (configuration?: Configuration) { const localVarAxiosParamCreator = MembersApiAxiosParamCreator(configuration) return { + /** + * 현재 로그인된 사용자가 상대방 MBTI와 애착 유형을 직접 입력합니다. JWT 토큰이 필요합니다. + * @summary 상대 프로필 최초 등록 + * @param {CreatePartnerProfileRequestDto} createPartnerProfileRequestDto + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async createPartnerProfile( + createPartnerProfileRequestDto: CreatePartnerProfileRequestDto, + options?: RawAxiosRequestConfig + ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.createPartnerProfile( + createPartnerProfileRequestDto, + options + ) + const localVarOperationServerIndex = configuration?.serverIndex ?? 0 + const localVarOperationServerBasePath = + operationServerMap['MembersApi.createPartnerProfile']?.[localVarOperationServerIndex]?.url + return (axios, basePath) => + createRequestFunction( + localVarAxiosArgs, + globalAxios, + BASE_PATH, + configuration + )(axios, localVarOperationServerBasePath || basePath) + }, /** * 현재 로그인된 사용자의 탈퇴를 처리합니다. JWT 토큰이 필요합니다. * @summary 사용자 탈퇴 @@ -418,9 +557,10 @@ export const MembersApiFp = function (configuration?: Configuration) { )(axios, localVarOperationServerBasePath || basePath) }, /** - * 현재 로그인된 사용자의 초대 코드를 조회합니다. JWT 토큰이 필요합니다. + * [Deprecated] 현재 로그인된 사용자의 초대 코드를 조회합니다. 커플 연동 기능은 제거 예정이며, 앞으로는 사용자가 커플 정보를 직접 입력하는 방식을 사용합니다. JWT 토큰이 필요합니다. * @summary 사용자 초대 코드 조회 * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ async getMemberInviteCode( @@ -439,9 +579,10 @@ export const MembersApiFp = function (configuration?: Configuration) { )(axios, localVarOperationServerBasePath || basePath) }, /** - * 현재 로그인된 멤버의 파트너 정보를 조회합니다. JWT 토큰이 필요합니다. - * @summary 커플 상대 정보 조회 + * [Deprecated] 현재 로그인된 멤버가 직접 입력한 상대 프로필을 조회합니다. 신규 클라이언트는 GET /members 응답의 partner 필드를 사용하세요. JWT 토큰이 필요합니다. + * @summary 상대 프로필 조회 * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ async getPartnerMemberInfo( @@ -529,10 +670,37 @@ export const MembersApiFp = function (configuration?: Configuration) { )(axios, localVarOperationServerBasePath || basePath) }, /** - * 커플로 연동된 사용자의 연애 시작일을 변경합니다. 커플이 아닌 사용자는 사용할 수 없습니다. JWT 토큰이 필요합니다. + * 현재 로그인된 사용자가 직접 입력한 상대 프로필을 수정합니다. JWT 토큰이 필요합니다. + * @summary 상대 프로필 수정 + * @param {UpdatePartnerProfileRequestDto} updatePartnerProfileRequestDto + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async updatePartnerProfile( + updatePartnerProfileRequestDto: UpdatePartnerProfileRequestDto, + options?: RawAxiosRequestConfig + ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.updatePartnerProfile( + updatePartnerProfileRequestDto, + options + ) + const localVarOperationServerIndex = configuration?.serverIndex ?? 0 + const localVarOperationServerBasePath = + operationServerMap['MembersApi.updatePartnerProfile']?.[localVarOperationServerIndex]?.url + return (axios, basePath) => + createRequestFunction( + localVarAxiosArgs, + globalAxios, + BASE_PATH, + configuration + )(axios, localVarOperationServerBasePath || basePath) + }, + /** + * [Deprecated] 커플로 연동된 사용자의 연애 시작일을 변경합니다. 커플 연동 기능은 제거 예정이며, 앞으로는 사용자가 커플 정보를 직접 입력하는 방식을 사용합니다. 커플이 아닌 사용자는 사용할 수 없습니다. JWT 토큰이 필요합니다. * @summary 연애 시작일 변경 * @param {UpdateStartLoveDateRequestDto} updateStartLoveDateRequestDto * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ async updateStartLoveDate( @@ -563,6 +731,21 @@ export const MembersApiFp = function (configuration?: Configuration) { export const MembersApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { const localVarFp = MembersApiFp(configuration) return { + /** + * 현재 로그인된 사용자가 상대방 MBTI와 애착 유형을 직접 입력합니다. JWT 토큰이 필요합니다. + * @summary 상대 프로필 최초 등록 + * @param {MembersApiCreatePartnerProfileRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + createPartnerProfile( + requestParameters: MembersApiCreatePartnerProfileRequest, + options?: RawAxiosRequestConfig + ): AxiosPromise { + return localVarFp + .createPartnerProfile(requestParameters.createPartnerProfileRequestDto, options) + .then((request) => request(axios, basePath)) + }, /** * 현재 로그인된 사용자의 탈퇴를 처리합니다. JWT 토큰이 필요합니다. * @summary 사용자 탈퇴 @@ -582,18 +765,20 @@ export const MembersApiFactory = function (configuration?: Configuration, basePa return localVarFp.getMemberInfo(options).then((request) => request(axios, basePath)) }, /** - * 현재 로그인된 사용자의 초대 코드를 조회합니다. JWT 토큰이 필요합니다. + * [Deprecated] 현재 로그인된 사용자의 초대 코드를 조회합니다. 커플 연동 기능은 제거 예정이며, 앞으로는 사용자가 커플 정보를 직접 입력하는 방식을 사용합니다. JWT 토큰이 필요합니다. * @summary 사용자 초대 코드 조회 * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ getMemberInviteCode(options?: RawAxiosRequestConfig): AxiosPromise { return localVarFp.getMemberInviteCode(options).then((request) => request(axios, basePath)) }, /** - * 현재 로그인된 멤버의 파트너 정보를 조회합니다. JWT 토큰이 필요합니다. - * @summary 커플 상대 정보 조회 + * [Deprecated] 현재 로그인된 멤버가 직접 입력한 상대 프로필을 조회합니다. 신규 클라이언트는 GET /members 응답의 partner 필드를 사용하세요. JWT 토큰이 필요합니다. + * @summary 상대 프로필 조회 * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ getPartnerMemberInfo(options?: RawAxiosRequestConfig): AxiosPromise { @@ -645,10 +830,26 @@ export const MembersApiFactory = function (configuration?: Configuration, basePa .then((request) => request(axios, basePath)) }, /** - * 커플로 연동된 사용자의 연애 시작일을 변경합니다. 커플이 아닌 사용자는 사용할 수 없습니다. JWT 토큰이 필요합니다. + * 현재 로그인된 사용자가 직접 입력한 상대 프로필을 수정합니다. JWT 토큰이 필요합니다. + * @summary 상대 프로필 수정 + * @param {MembersApiUpdatePartnerProfileRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + updatePartnerProfile( + requestParameters: MembersApiUpdatePartnerProfileRequest, + options?: RawAxiosRequestConfig + ): AxiosPromise { + return localVarFp + .updatePartnerProfile(requestParameters.updatePartnerProfileRequestDto, options) + .then((request) => request(axios, basePath)) + }, + /** + * [Deprecated] 커플로 연동된 사용자의 연애 시작일을 변경합니다. 커플 연동 기능은 제거 예정이며, 앞으로는 사용자가 커플 정보를 직접 입력하는 방식을 사용합니다. 커플이 아닌 사용자는 사용할 수 없습니다. JWT 토큰이 필요합니다. * @summary 연애 시작일 변경 * @param {MembersApiUpdateStartLoveDateRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ updateStartLoveDate( @@ -662,6 +863,13 @@ export const MembersApiFactory = function (configuration?: Configuration, basePa } } +/** + * Request parameters for createPartnerProfile operation in MembersApi. + */ +export interface MembersApiCreatePartnerProfileRequest { + readonly createPartnerProfileRequestDto: CreatePartnerProfileRequestDto +} + /** * Request parameters for registerLoveType operation in MembersApi. */ @@ -683,6 +891,13 @@ export interface MembersApiUpdateMemberTermsRequest { readonly updateMemberTermsRequestDto: UpdateMemberTermsRequestDto } +/** + * Request parameters for updatePartnerProfile operation in MembersApi. + */ +export interface MembersApiUpdatePartnerProfileRequest { + readonly updatePartnerProfileRequestDto: UpdatePartnerProfileRequestDto +} + /** * Request parameters for updateStartLoveDate operation in MembersApi. */ @@ -694,6 +909,22 @@ export interface MembersApiUpdateStartLoveDateRequest { * MembersApi - object-oriented interface */ export class MembersApi extends BaseAPI { + /** + * 현재 로그인된 사용자가 상대방 MBTI와 애착 유형을 직접 입력합니다. JWT 토큰이 필요합니다. + * @summary 상대 프로필 최초 등록 + * @param {MembersApiCreatePartnerProfileRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + public createPartnerProfile( + requestParameters: MembersApiCreatePartnerProfileRequest, + options?: RawAxiosRequestConfig + ) { + return MembersApiFp(this.configuration) + .createPartnerProfile(requestParameters.createPartnerProfileRequestDto, options) + .then((request) => request(this.axios, this.basePath)) + } + /** * 현재 로그인된 사용자의 탈퇴를 처리합니다. JWT 토큰이 필요합니다. * @summary 사용자 탈퇴 @@ -719,9 +950,10 @@ export class MembersApi extends BaseAPI { } /** - * 현재 로그인된 사용자의 초대 코드를 조회합니다. JWT 토큰이 필요합니다. + * [Deprecated] 현재 로그인된 사용자의 초대 코드를 조회합니다. 커플 연동 기능은 제거 예정이며, 앞으로는 사용자가 커플 정보를 직접 입력하는 방식을 사용합니다. JWT 토큰이 필요합니다. * @summary 사용자 초대 코드 조회 * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ public getMemberInviteCode(options?: RawAxiosRequestConfig) { @@ -731,9 +963,10 @@ export class MembersApi extends BaseAPI { } /** - * 현재 로그인된 멤버의 파트너 정보를 조회합니다. JWT 토큰이 필요합니다. - * @summary 커플 상대 정보 조회 + * [Deprecated] 현재 로그인된 멤버가 직접 입력한 상대 프로필을 조회합니다. 신규 클라이언트는 GET /members 응답의 partner 필드를 사용하세요. JWT 토큰이 필요합니다. + * @summary 상대 프로필 조회 * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ public getPartnerMemberInfo(options?: RawAxiosRequestConfig) { @@ -782,10 +1015,27 @@ export class MembersApi extends BaseAPI { } /** - * 커플로 연동된 사용자의 연애 시작일을 변경합니다. 커플이 아닌 사용자는 사용할 수 없습니다. JWT 토큰이 필요합니다. + * 현재 로그인된 사용자가 직접 입력한 상대 프로필을 수정합니다. JWT 토큰이 필요합니다. + * @summary 상대 프로필 수정 + * @param {MembersApiUpdatePartnerProfileRequest} requestParameters Request parameters. + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + public updatePartnerProfile( + requestParameters: MembersApiUpdatePartnerProfileRequest, + options?: RawAxiosRequestConfig + ) { + return MembersApiFp(this.configuration) + .updatePartnerProfile(requestParameters.updatePartnerProfileRequestDto, options) + .then((request) => request(this.axios, this.basePath)) + } + + /** + * [Deprecated] 커플로 연동된 사용자의 연애 시작일을 변경합니다. 커플 연동 기능은 제거 예정이며, 앞으로는 사용자가 커플 정보를 직접 입력하는 방식을 사용합니다. 커플이 아닌 사용자는 사용할 수 없습니다. JWT 토큰이 필요합니다. * @summary 연애 시작일 변경 * @param {MembersApiUpdateStartLoveDateRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ public updateStartLoveDate(requestParameters: MembersApiUpdateStartLoveDateRequest, options?: RawAxiosRequestConfig) { diff --git a/packages/data/user-api-axios/api/apis/questions-api.ts b/packages/data/user-api-axios/api/apis/questions-api.ts index 42bf8000..65a4f1e5 100644 --- a/packages/data/user-api-axios/api/apis/questions-api.ts +++ b/packages/data/user-api-axios/api/apis/questions-api.ts @@ -49,10 +49,11 @@ import type { SwaggerErrorResponse } from '../models' export const QuestionsApiAxiosParamCreator = function (configuration?: Configuration) { return { /** - * 커플 질문 답변을 조회합니다. JWT 토큰이 필요합니다. + * [Deprecated] 오늘의 질문 기능은 제거 예정입니다. JWT 토큰이 필요합니다. * @summary 질문 답변 조회 * @param {number} coupleQuestionId * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ getAnswers: async (coupleQuestionId: number, options: RawAxiosRequestConfig = {}): Promise => { @@ -77,6 +78,8 @@ export const QuestionsApiAxiosParamCreator = function (configuration?: Configura // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + localVarHeaderParameter['Accept'] = '*/*' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } @@ -87,10 +90,11 @@ export const QuestionsApiAxiosParamCreator = function (configuration?: Configura } }, /** - * 커플 오늘의 질문을 조회합니다. JWT 토큰이 필요합니다. + * [Deprecated] 오늘의 질문 기능은 제거 예정입니다. JWT 토큰이 필요합니다. * @summary 과거 질문 조회 * @param {number} level * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ getQuestion: async (level: number, options: RawAxiosRequestConfig = {}): Promise => { @@ -112,6 +116,8 @@ export const QuestionsApiAxiosParamCreator = function (configuration?: Configura // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + localVarHeaderParameter['Accept'] = '*/*' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } @@ -122,9 +128,10 @@ export const QuestionsApiAxiosParamCreator = function (configuration?: Configura } }, /** - * 커플 오늘의 질문을 조회합니다. JWT 토큰이 필요합니다. + * [Deprecated] 오늘의 질문 기능은 제거 예정입니다. JWT 토큰이 필요합니다. * @summary 오늘의 질문 조회 * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ getTodayQuestion: async (options: RawAxiosRequestConfig = {}): Promise => { @@ -144,6 +151,8 @@ export const QuestionsApiAxiosParamCreator = function (configuration?: Configura // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + localVarHeaderParameter['Accept'] = '*/*' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } @@ -154,10 +163,11 @@ export const QuestionsApiAxiosParamCreator = function (configuration?: Configura } }, /** - * 커플 오늘의 질문에 답변을 등록합니다. JWT 토큰이 필요합니다. + * [Deprecated] 오늘의 질문 기능은 제거 예정입니다. JWT 토큰이 필요합니다. * @summary 오늘의 질문 답변 등록 * @param {AnswerRequestDto} answerRequestDto * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ postAnswer: async ( @@ -183,6 +193,7 @@ export const QuestionsApiAxiosParamCreator = function (configuration?: Configura await setBearerAuthToObject(localVarHeaderParameter, configuration) localVarHeaderParameter['Content-Type'] = 'application/json' + localVarHeaderParameter['Accept'] = '*/*' setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} @@ -195,10 +206,11 @@ export const QuestionsApiAxiosParamCreator = function (configuration?: Configura } }, /** - * 커플 오늘의 질문에 답변을 수정합니다. JWT 토큰이 필요합니다. + * [Deprecated] 오늘의 질문 기능은 제거 예정입니다. JWT 토큰이 필요합니다. * @summary 오늘의 질문 답변 수정 * @param {AnswerRequestDto} answerRequestDto * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ updateAnswer: async ( @@ -224,6 +236,7 @@ export const QuestionsApiAxiosParamCreator = function (configuration?: Configura await setBearerAuthToObject(localVarHeaderParameter, configuration) localVarHeaderParameter['Content-Type'] = 'application/json' + localVarHeaderParameter['Accept'] = '*/*' setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} @@ -245,10 +258,11 @@ export const QuestionsApiFp = function (configuration?: Configuration) { const localVarAxiosParamCreator = QuestionsApiAxiosParamCreator(configuration) return { /** - * 커플 질문 답변을 조회합니다. JWT 토큰이 필요합니다. + * [Deprecated] 오늘의 질문 기능은 제거 예정입니다. JWT 토큰이 필요합니다. * @summary 질문 답변 조회 * @param {number} coupleQuestionId * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ async getAnswers( @@ -268,10 +282,11 @@ export const QuestionsApiFp = function (configuration?: Configuration) { )(axios, localVarOperationServerBasePath || basePath) }, /** - * 커플 오늘의 질문을 조회합니다. JWT 토큰이 필요합니다. + * [Deprecated] 오늘의 질문 기능은 제거 예정입니다. JWT 토큰이 필요합니다. * @summary 과거 질문 조회 * @param {number} level * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ async getQuestion( @@ -291,9 +306,10 @@ export const QuestionsApiFp = function (configuration?: Configuration) { )(axios, localVarOperationServerBasePath || basePath) }, /** - * 커플 오늘의 질문을 조회합니다. JWT 토큰이 필요합니다. + * [Deprecated] 오늘의 질문 기능은 제거 예정입니다. JWT 토큰이 필요합니다. * @summary 오늘의 질문 조회 * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ async getTodayQuestion( @@ -312,10 +328,11 @@ export const QuestionsApiFp = function (configuration?: Configuration) { )(axios, localVarOperationServerBasePath || basePath) }, /** - * 커플 오늘의 질문에 답변을 등록합니다. JWT 토큰이 필요합니다. + * [Deprecated] 오늘의 질문 기능은 제거 예정입니다. JWT 토큰이 필요합니다. * @summary 오늘의 질문 답변 등록 * @param {AnswerRequestDto} answerRequestDto * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ async postAnswer( @@ -335,10 +352,11 @@ export const QuestionsApiFp = function (configuration?: Configuration) { )(axios, localVarOperationServerBasePath || basePath) }, /** - * 커플 오늘의 질문에 답변을 수정합니다. JWT 토큰이 필요합니다. + * [Deprecated] 오늘의 질문 기능은 제거 예정입니다. JWT 토큰이 필요합니다. * @summary 오늘의 질문 답변 수정 * @param {AnswerRequestDto} answerRequestDto * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ async updateAnswer( @@ -367,10 +385,11 @@ export const QuestionsApiFactory = function (configuration?: Configuration, base const localVarFp = QuestionsApiFp(configuration) return { /** - * 커플 질문 답변을 조회합니다. JWT 토큰이 필요합니다. + * [Deprecated] 오늘의 질문 기능은 제거 예정입니다. JWT 토큰이 필요합니다. * @summary 질문 답변 조회 * @param {QuestionsApiGetAnswersRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ getAnswers( @@ -382,10 +401,11 @@ export const QuestionsApiFactory = function (configuration?: Configuration, base .then((request) => request(axios, basePath)) }, /** - * 커플 오늘의 질문을 조회합니다. JWT 토큰이 필요합니다. + * [Deprecated] 오늘의 질문 기능은 제거 예정입니다. JWT 토큰이 필요합니다. * @summary 과거 질문 조회 * @param {QuestionsApiGetQuestionRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ getQuestion( @@ -395,19 +415,21 @@ export const QuestionsApiFactory = function (configuration?: Configuration, base return localVarFp.getQuestion(requestParameters.level, options).then((request) => request(axios, basePath)) }, /** - * 커플 오늘의 질문을 조회합니다. JWT 토큰이 필요합니다. + * [Deprecated] 오늘의 질문 기능은 제거 예정입니다. JWT 토큰이 필요합니다. * @summary 오늘의 질문 조회 * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ getTodayQuestion(options?: RawAxiosRequestConfig): AxiosPromise { return localVarFp.getTodayQuestion(options).then((request) => request(axios, basePath)) }, /** - * 커플 오늘의 질문에 답변을 등록합니다. JWT 토큰이 필요합니다. + * [Deprecated] 오늘의 질문 기능은 제거 예정입니다. JWT 토큰이 필요합니다. * @summary 오늘의 질문 답변 등록 * @param {QuestionsApiPostAnswerRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ postAnswer( @@ -419,10 +441,11 @@ export const QuestionsApiFactory = function (configuration?: Configuration, base .then((request) => request(axios, basePath)) }, /** - * 커플 오늘의 질문에 답변을 수정합니다. JWT 토큰이 필요합니다. + * [Deprecated] 오늘의 질문 기능은 제거 예정입니다. JWT 토큰이 필요합니다. * @summary 오늘의 질문 답변 수정 * @param {QuestionsApiUpdateAnswerRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ updateAnswer( @@ -469,10 +492,11 @@ export interface QuestionsApiUpdateAnswerRequest { */ export class QuestionsApi extends BaseAPI { /** - * 커플 질문 답변을 조회합니다. JWT 토큰이 필요합니다. + * [Deprecated] 오늘의 질문 기능은 제거 예정입니다. JWT 토큰이 필요합니다. * @summary 질문 답변 조회 * @param {QuestionsApiGetAnswersRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ public getAnswers(requestParameters: QuestionsApiGetAnswersRequest, options?: RawAxiosRequestConfig) { @@ -482,10 +506,11 @@ export class QuestionsApi extends BaseAPI { } /** - * 커플 오늘의 질문을 조회합니다. JWT 토큰이 필요합니다. + * [Deprecated] 오늘의 질문 기능은 제거 예정입니다. JWT 토큰이 필요합니다. * @summary 과거 질문 조회 * @param {QuestionsApiGetQuestionRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ public getQuestion(requestParameters: QuestionsApiGetQuestionRequest, options?: RawAxiosRequestConfig) { @@ -495,9 +520,10 @@ export class QuestionsApi extends BaseAPI { } /** - * 커플 오늘의 질문을 조회합니다. JWT 토큰이 필요합니다. + * [Deprecated] 오늘의 질문 기능은 제거 예정입니다. JWT 토큰이 필요합니다. * @summary 오늘의 질문 조회 * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ public getTodayQuestion(options?: RawAxiosRequestConfig) { @@ -507,10 +533,11 @@ export class QuestionsApi extends BaseAPI { } /** - * 커플 오늘의 질문에 답변을 등록합니다. JWT 토큰이 필요합니다. + * [Deprecated] 오늘의 질문 기능은 제거 예정입니다. JWT 토큰이 필요합니다. * @summary 오늘의 질문 답변 등록 * @param {QuestionsApiPostAnswerRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ public postAnswer(requestParameters: QuestionsApiPostAnswerRequest, options?: RawAxiosRequestConfig) { @@ -520,10 +547,11 @@ export class QuestionsApi extends BaseAPI { } /** - * 커플 오늘의 질문에 답변을 수정합니다. JWT 토큰이 필요합니다. + * [Deprecated] 오늘의 질문 기능은 제거 예정입니다. JWT 토큰이 필요합니다. * @summary 오늘의 질문 답변 수정 * @param {QuestionsApiUpdateAnswerRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. + * @deprecated * @throws {RequiredError} */ public updateAnswer(requestParameters: QuestionsApiUpdateAnswerRequest, options?: RawAxiosRequestConfig) { diff --git a/packages/data/user-api-axios/api/apis/refresh-api.ts b/packages/data/user-api-axios/api/apis/refresh-api.ts index 2dbd7bf8..3535a550 100644 --- a/packages/data/user-api-axios/api/apis/refresh-api.ts +++ b/packages/data/user-api-axios/api/apis/refresh-api.ts @@ -72,6 +72,7 @@ export const RefreshApiAxiosParamCreator = function (configuration?: Configurati await setBearerAuthToObject(localVarHeaderParameter, configuration) localVarHeaderParameter['Content-Type'] = 'application/json' + localVarHeaderParameter['Accept'] = '*/*' setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} diff --git a/packages/data/user-api-axios/api/apis/sign-ups-api.ts b/packages/data/user-api-axios/api/apis/sign-ups-api.ts index f22361bb..14440922 100644 --- a/packages/data/user-api-axios/api/apis/sign-ups-api.ts +++ b/packages/data/user-api-axios/api/apis/sign-ups-api.ts @@ -43,7 +43,7 @@ import type { SwaggerErrorResponse } from '../models' export const SignUpsApiAxiosParamCreator = function (configuration?: Configuration) { return { /** - * 인증된 사용자의 추가 정보를 입력받아 회원가입을 완료합니다. 연애 시작일은 커플 연동 시 자동으로 설정됩니다. JWT 토큰이 필요합니다. + * 인증된 사용자의 추가 정보와 연애 상태를 입력받아 회원가입을 완료합니다. MBTI 관련 정보는 회원가입 이후 프로필 수정에서 관리합니다. JWT 토큰이 필요합니다. * @summary 회원가입 * @param {SignUpRequestDto} signUpRequestDto * @param {*} [options] Override http request option. @@ -69,6 +69,7 @@ export const SignUpsApiAxiosParamCreator = function (configuration?: Configurati await setBearerAuthToObject(localVarHeaderParameter, configuration) localVarHeaderParameter['Content-Type'] = 'application/json' + localVarHeaderParameter['Accept'] = '*/*' setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} @@ -90,7 +91,7 @@ export const SignUpsApiFp = function (configuration?: Configuration) { const localVarAxiosParamCreator = SignUpsApiAxiosParamCreator(configuration) return { /** - * 인증된 사용자의 추가 정보를 입력받아 회원가입을 완료합니다. 연애 시작일은 커플 연동 시 자동으로 설정됩니다. JWT 토큰이 필요합니다. + * 인증된 사용자의 추가 정보와 연애 상태를 입력받아 회원가입을 완료합니다. MBTI 관련 정보는 회원가입 이후 프로필 수정에서 관리합니다. JWT 토큰이 필요합니다. * @summary 회원가입 * @param {SignUpRequestDto} signUpRequestDto * @param {*} [options] Override http request option. @@ -122,7 +123,7 @@ export const SignUpsApiFactory = function (configuration?: Configuration, basePa const localVarFp = SignUpsApiFp(configuration) return { /** - * 인증된 사용자의 추가 정보를 입력받아 회원가입을 완료합니다. 연애 시작일은 커플 연동 시 자동으로 설정됩니다. JWT 토큰이 필요합니다. + * 인증된 사용자의 추가 정보와 연애 상태를 입력받아 회원가입을 완료합니다. MBTI 관련 정보는 회원가입 이후 프로필 수정에서 관리합니다. JWT 토큰이 필요합니다. * @summary 회원가입 * @param {SignUpsApiSignUpRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. @@ -149,7 +150,7 @@ export interface SignUpsApiSignUpRequest { */ export class SignUpsApi extends BaseAPI { /** - * 인증된 사용자의 추가 정보를 입력받아 회원가입을 완료합니다. 연애 시작일은 커플 연동 시 자동으로 설정됩니다. JWT 토큰이 필요합니다. + * 인증된 사용자의 추가 정보와 연애 상태를 입력받아 회원가입을 완료합니다. MBTI 관련 정보는 회원가입 이후 프로필 수정에서 관리합니다. JWT 토큰이 필요합니다. * @summary 회원가입 * @param {SignUpsApiSignUpRequest} requestParameters Request parameters. * @param {*} [options] Override http request option. diff --git a/packages/data/user-api-axios/api/apis/sseconnection-apiapi.ts b/packages/data/user-api-axios/api/apis/sseconnection-apiapi.ts index c28de3d8..448c28bd 100644 --- a/packages/data/user-api-axios/api/apis/sseconnection-apiapi.ts +++ b/packages/data/user-api-axios/api/apis/sseconnection-apiapi.ts @@ -61,6 +61,8 @@ export const SSEConnectionAPIApiAxiosParamCreator = function (configuration?: Co // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + localVarHeaderParameter['Accept'] = 'text/event-stream' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } diff --git a/packages/data/user-api-axios/api/apis/terms-api.ts b/packages/data/user-api-axios/api/apis/terms-api.ts index 9fd5bdcd..2495d45a 100644 --- a/packages/data/user-api-axios/api/apis/terms-api.ts +++ b/packages/data/user-api-axios/api/apis/terms-api.ts @@ -61,6 +61,8 @@ export const TermsApiAxiosParamCreator = function (configuration?: Configuration // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + localVarHeaderParameter['Accept'] = '*/*' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } diff --git a/packages/data/user-api-axios/api/apis/test-api.ts b/packages/data/user-api-axios/api/apis/test-api.ts index 8aab5a62..fbc8e902 100644 --- a/packages/data/user-api-axios/api/apis/test-api.ts +++ b/packages/data/user-api-axios/api/apis/test-api.ts @@ -61,6 +61,8 @@ export const TestApiAxiosParamCreator = function (configuration?: Configuration) // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + localVarHeaderParameter['Accept'] = 'text/plain,*/*' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } @@ -93,6 +95,8 @@ export const TestApiAxiosParamCreator = function (configuration?: Configuration) // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + localVarHeaderParameter['Accept'] = 'text/plain,*/*' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } @@ -124,6 +128,8 @@ export const TestApiAxiosParamCreator = function (configuration?: Configuration) // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + localVarHeaderParameter['Accept'] = '*/*' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } @@ -156,6 +162,8 @@ export const TestApiAxiosParamCreator = function (configuration?: Configuration) // http bearer authentication required await setBearerAuthToObject(localVarHeaderParameter, configuration) + localVarHeaderParameter['Accept'] = 'text/plain' + setSearchParams(localVarUrlObj, localVarQueryParameter) let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {} localVarRequestOptions.headers = { ...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers } diff --git a/packages/data/user-api-axios/api/configuration.ts b/packages/data/user-api-axios/api/configuration.ts index 3d2658de..ae2b5065 100644 --- a/packages/data/user-api-axios/api/configuration.ts +++ b/packages/data/user-api-axios/api/configuration.ts @@ -1,5 +1,4 @@ /* tslint:disable */ -/* eslint-disable */ /** * Malmo API Documentation * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) @@ -12,6 +11,18 @@ * Do not edit the class manually. */ +interface AWSv4Configuration { + options?: { + region?: string + service?: string + } + credentials?: { + accessKeyId?: string + secretAccessKey?: string + sessionToken?: string + } +} + export interface ConfigurationParameters { apiKey?: string | Promise | ((name: string) => string) | ((name: string) => Promise) username?: string @@ -21,6 +32,7 @@ export interface ConfigurationParameters { | Promise | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise) + awsv4?: AWSv4Configuration basePath?: string serverIndex?: number baseOptions?: any @@ -51,6 +63,17 @@ export class Configuration { | Promise | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise) + /** + * parameter for aws4 signature security + * @param {Object} AWS4Signature - AWS4 Signature security + * @param {string} options.region - aws region + * @param {string} options.service - name of the service. + * @param {string} credentials.accessKeyId - aws access key id + * @param {string} credentials.secretAccessKey - aws access key + * @param {string} credentials.sessionToken - aws session token + * @memberof Configuration + */ + awsv4?: AWSv4Configuration /** * override base path */ @@ -77,6 +100,7 @@ export class Configuration { this.username = param.username this.password = param.password this.accessToken = param.accessToken + this.awsv4 = param.awsv4 this.basePath = param.basePath this.serverIndex = param.serverIndex this.baseOptions = { diff --git a/packages/data/user-api-axios/api/models/couple-link-data.ts b/packages/data/user-api-axios/api/models/couple-link-data.ts index 4ce38162..e9e2b37f 100644 --- a/packages/data/user-api-axios/api/models/couple-link-data.ts +++ b/packages/data/user-api-axios/api/models/couple-link-data.ts @@ -13,7 +13,7 @@ */ /** - * 커플 연결 응답 데이터 + * [Deprecated] 커플 연결 응답 데이터 */ export interface CoupleLinkData { /** diff --git a/packages/data/user-api-axios/api/models/couple-link-request-dto.ts b/packages/data/user-api-axios/api/models/couple-link-request-dto.ts index 0ce873e4..0722d230 100644 --- a/packages/data/user-api-axios/api/models/couple-link-request-dto.ts +++ b/packages/data/user-api-axios/api/models/couple-link-request-dto.ts @@ -12,6 +12,9 @@ * Do not edit the class manually. */ +/** + * [Deprecated] 커플 연결 요청 DTO + */ export interface CoupleLinkRequestDto { coupleCode: string } diff --git a/packages/data/user-api-axios/api/models/couple-link-success-response.ts b/packages/data/user-api-axios/api/models/couple-link-success-response.ts index a4c2ed05..24e3f776 100644 --- a/packages/data/user-api-axios/api/models/couple-link-success-response.ts +++ b/packages/data/user-api-axios/api/models/couple-link-success-response.ts @@ -17,7 +17,7 @@ import type { CoupleLinkData } from './couple-link-data' /** - * 커플 연결 성공 응답 + * [Deprecated] 커플 연결 성공 응답 */ export interface CoupleLinkSuccessResponse { /** diff --git a/packages/data/user-api-axios/api/models/couple-unlink-data.ts b/packages/data/user-api-axios/api/models/couple-unlink-data.ts index 9c7e2ca8..51652cea 100644 --- a/packages/data/user-api-axios/api/models/couple-unlink-data.ts +++ b/packages/data/user-api-axios/api/models/couple-unlink-data.ts @@ -13,7 +13,7 @@ */ /** - * 커플 연결 끊기 응답 데이터 + * [Deprecated] 커플 연결 끊기 응답 데이터 */ export interface CoupleUnlinkData { /** diff --git a/packages/data/user-api-axios/api/models/couple-unlink-success-response.ts b/packages/data/user-api-axios/api/models/couple-unlink-success-response.ts index 602dd47c..89597a3b 100644 --- a/packages/data/user-api-axios/api/models/couple-unlink-success-response.ts +++ b/packages/data/user-api-axios/api/models/couple-unlink-success-response.ts @@ -17,7 +17,7 @@ import type { CoupleUnlinkData } from './couple-unlink-data' /** - * 커플 연결 끊기 성공 응답 + * [Deprecated] 커플 연결 끊기 성공 응답 */ export interface CoupleUnlinkSuccessResponse { /** diff --git a/packages/data/user-api-axios/api/models/create-partner-profile-request-dto.ts b/packages/data/user-api-axios/api/models/create-partner-profile-request-dto.ts new file mode 100644 index 00000000..e75841bc --- /dev/null +++ b/packages/data/user-api-axios/api/models/create-partner-profile-request-dto.ts @@ -0,0 +1,29 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Malmo API Documentation + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +export interface CreatePartnerProfileRequestDto { + personalityType: string + loveTypeCategory?: CreatePartnerProfileRequestDtoLoveTypeCategoryEnum +} + +export const CreatePartnerProfileRequestDtoLoveTypeCategoryEnum = { + StableType: 'STABLE_TYPE', + AnxietyType: 'ANXIETY_TYPE', + AvoidanceType: 'AVOIDANCE_TYPE', + ConfusionType: 'CONFUSION_TYPE', + Unknown: 'UNKNOWN', +} as const + +export type CreatePartnerProfileRequestDtoLoveTypeCategoryEnum = + (typeof CreatePartnerProfileRequestDtoLoveTypeCategoryEnum)[keyof typeof CreatePartnerProfileRequestDtoLoveTypeCategoryEnum] diff --git a/packages/data/user-api-axios/api/models/get-invite-code-success-response.ts b/packages/data/user-api-axios/api/models/get-invite-code-success-response.ts index d7b28e0b..4eed2f24 100644 --- a/packages/data/user-api-axios/api/models/get-invite-code-success-response.ts +++ b/packages/data/user-api-axios/api/models/get-invite-code-success-response.ts @@ -17,7 +17,7 @@ import type { InviteCodeResponseData } from './invite-code-response-data' /** - * 멤버 초대 코드 성공 응답 + * [Deprecated] 멤버 초대 코드 성공 응답 */ export interface GetInviteCodeSuccessResponse { /** diff --git a/packages/data/user-api-axios/api/models/index.ts b/packages/data/user-api-axios/api/models/index.ts index 34dc8b5d..b75a1dc0 100644 --- a/packages/data/user-api-axios/api/models/index.ts +++ b/packages/data/user-api-axios/api/models/index.ts @@ -29,6 +29,7 @@ export * from './create-bookmark-request-dto' export * from './create-bookmark-response' export * from './create-chat-room-data' export * from './create-chat-room-response' +export * from './create-partner-profile-request-dto' export * from './delete-bookmarks-request-dto' export * from './delete-chat-room-request-dto' export * from './delete-member-success-response' @@ -43,17 +44,23 @@ export * from './kakao-login-request-dto' export * from './login-data' export * from './login-success-response' export * from './logout-success-response' +export * from './love-type-personality-type-block-data' +export * from './love-type-personality-type-result-data' +export * from './love-type-personality-type-result-success-response' export * from './love-type-question-calculate-success-response' export * from './love-type-question-calculation-data' export * from './love-type-question-data' export * from './love-type-question-success-response' export * from './love-type-test-result' +export * from './love-type-text-block-data' export * from './member-data' export * from './member-info-success-response' export * from './message-dto' export * from './pageable' export * from './partner-member-data' export * from './partner-member-info-success-response' +export * from './partner-profile-data' +export * from './partner-profile-success-response' export * from './past-answer-data' export * from './past-answer-success-response' export * from './past-question-data' @@ -85,6 +92,7 @@ export * from './update-member-request-dto' export * from './update-member-success-response' export * from './update-member-terms-request-dto' export * from './update-member-terms-success-response' +export * from './update-partner-profile-request-dto' export * from './update-start-love-date-data' export * from './update-start-love-date-request-dto' export * from './update-start-love-date-success-response' diff --git a/packages/data/user-api-axios/api/models/invite-code-response-data.ts b/packages/data/user-api-axios/api/models/invite-code-response-data.ts index 0e029e0b..9caf011f 100644 --- a/packages/data/user-api-axios/api/models/invite-code-response-data.ts +++ b/packages/data/user-api-axios/api/models/invite-code-response-data.ts @@ -13,7 +13,7 @@ */ /** - * 초대 코드 응답 데이터 + * [Deprecated] 초대 코드 응답 데이터 */ export interface InviteCodeResponseData { coupleCode?: string diff --git a/packages/data/user-api-axios/api/models/love-type-personality-type-block-data.ts b/packages/data/user-api-axios/api/models/love-type-personality-type-block-data.ts new file mode 100644 index 00000000..afd05fae --- /dev/null +++ b/packages/data/user-api-axios/api/models/love-type-personality-type-block-data.ts @@ -0,0 +1,27 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Malmo API Documentation + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * MBTI + 설명 블록 + */ +export interface LoveTypePersonalityTypeBlockData { + /** + * personalityType + */ + personalityType?: string + /** + * 설명 + */ + description?: string +} diff --git a/packages/data/user-api-axios/api/models/love-type-personality-type-result-data.ts b/packages/data/user-api-axios/api/models/love-type-personality-type-result-data.ts new file mode 100644 index 00000000..3f58baa7 --- /dev/null +++ b/packages/data/user-api-axios/api/models/love-type-personality-type-result-data.ts @@ -0,0 +1,80 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Malmo API Documentation + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +// May contain unused imports in some cases +// @ts-ignore +import type { LoveTypePersonalityTypeBlockData } from './love-type-personality-type-block-data' +// May contain unused imports in some cases +// @ts-ignore +import type { LoveTypeTextBlockData } from './love-type-text-block-data' + +/** + * MBTI + 애착유형 상세 결과 응답 데이터 + */ +export interface LoveTypePersonalityTypeResultData { + /** + * personalityType + */ + personalityType?: string + /** + * 애착 유형 + */ + loveTypeCategory?: LoveTypePersonalityTypeResultDataLoveTypeCategoryEnum + /** + * 요약 + */ + summary?: string + /** + * 키워드 목록 + */ + keywords?: Array + /** + * 강점 목록 + */ + strengths?: Array + /** + * 약점 목록 + */ + weaknesses?: Array + /** + * 관계 패턴 목록 + */ + patterns?: Array + /** + * 애착유형 특징 목록 + */ + loveTypeFeatures?: Array + /** + * 연애 가이드 목록 + */ + datingGuides?: Array + /** + * 잘 맞는 MBTI 목록 + */ + bestMatches?: Array + /** + * 부딪히기 쉬운 MBTI 목록 + */ + worstMatches?: Array +} + +export const LoveTypePersonalityTypeResultDataLoveTypeCategoryEnum = { + StableType: 'STABLE_TYPE', + AnxietyType: 'ANXIETY_TYPE', + AvoidanceType: 'AVOIDANCE_TYPE', + ConfusionType: 'CONFUSION_TYPE', +} as const + +export type LoveTypePersonalityTypeResultDataLoveTypeCategoryEnum = + (typeof LoveTypePersonalityTypeResultDataLoveTypeCategoryEnum)[keyof typeof LoveTypePersonalityTypeResultDataLoveTypeCategoryEnum] diff --git a/packages/data/user-api-axios/api/models/love-type-personality-type-result-success-response.ts b/packages/data/user-api-axios/api/models/love-type-personality-type-result-success-response.ts new file mode 100644 index 00000000..a64a5c19 --- /dev/null +++ b/packages/data/user-api-axios/api/models/love-type-personality-type-result-success-response.ts @@ -0,0 +1,36 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Malmo API Documentation + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +// May contain unused imports in some cases +// @ts-ignore +import type { LoveTypePersonalityTypeResultData } from './love-type-personality-type-result-data' + +/** + * MBTI + 애착유형 상세 결과 조회 성공 응답 + */ +export interface LoveTypePersonalityTypeResultSuccessResponse { + /** + * 요청 ID + */ + requestId?: string + /** + * 성공 여부 + */ + success?: boolean + /** + * 응답 메시지 + */ + message?: string + data?: LoveTypePersonalityTypeResultData +} diff --git a/packages/data/user-api-axios/api/models/love-type-text-block-data.ts b/packages/data/user-api-axios/api/models/love-type-text-block-data.ts new file mode 100644 index 00000000..2018705e --- /dev/null +++ b/packages/data/user-api-axios/api/models/love-type-text-block-data.ts @@ -0,0 +1,27 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Malmo API Documentation + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * 제목 + 설명 텍스트 블록 + */ +export interface LoveTypeTextBlockData { + /** + * 제목 + */ + title?: string + /** + * 설명 + */ + description?: string +} diff --git a/packages/data/user-api-axios/api/models/member-data.ts b/packages/data/user-api-axios/api/models/member-data.ts index 0ff636e7..a14897a0 100644 --- a/packages/data/user-api-axios/api/models/member-data.ts +++ b/packages/data/user-api-axios/api/models/member-data.ts @@ -58,19 +58,20 @@ export interface MemberData { email?: string /** * 연애 상태 - * TODO: 백엔드 API 스키마 반영 후 코드 재생성 필요 */ relationshipStatus?: MemberDataRelationshipStatusEnum /** - * 내 MBTI 성향 - * TODO: 백엔드 API 스키마 반영 후 코드 재생성 필요 + * 내 MBTI */ personalityType?: string /** - * 상대방 MBTI 성향 - * TODO: 백엔드 API 스키마 반영 후 코드 재생성 필요 + * 상대방 MBTI */ otherPersonalityType?: string + /** + * 상대방 애착 유형 + */ + partnerLoveTypeCategory?: MemberDataPartnerLoveTypeCategoryEnum } export const MemberDataMemberStateEnum = { @@ -95,7 +96,6 @@ export const MemberDataLoveTypeCategoryEnum = { export type MemberDataLoveTypeCategoryEnum = (typeof MemberDataLoveTypeCategoryEnum)[keyof typeof MemberDataLoveTypeCategoryEnum] -// TODO: 백엔드 API 스키마 반영 후 코드 재생성 필요 export const MemberDataRelationshipStatusEnum = { InRelationship: 'IN_RELATIONSHIP', SeeingSomeone: 'SEEING_SOMEONE', @@ -104,3 +104,13 @@ export const MemberDataRelationshipStatusEnum = { export type MemberDataRelationshipStatusEnum = (typeof MemberDataRelationshipStatusEnum)[keyof typeof MemberDataRelationshipStatusEnum] +export const MemberDataPartnerLoveTypeCategoryEnum = { + StableType: 'STABLE_TYPE', + AnxietyType: 'ANXIETY_TYPE', + AvoidanceType: 'AVOIDANCE_TYPE', + ConfusionType: 'CONFUSION_TYPE', + Unknown: 'UNKNOWN', +} as const + +export type MemberDataPartnerLoveTypeCategoryEnum = + (typeof MemberDataPartnerLoveTypeCategoryEnum)[keyof typeof MemberDataPartnerLoveTypeCategoryEnum] diff --git a/packages/data/user-api-axios/api/models/partner-member-data.ts b/packages/data/user-api-axios/api/models/partner-member-data.ts index c0591a56..327b094f 100644 --- a/packages/data/user-api-axios/api/models/partner-member-data.ts +++ b/packages/data/user-api-axios/api/models/partner-member-data.ts @@ -13,48 +13,29 @@ */ /** - * 파트너 멤버 정보 응답 데이터 + * [Deprecated] 상대 프로필 조회 응답 데이터 */ export interface PartnerMemberData { /** - * 멤버 상태 + * 상대방 MBTI */ - memberState?: PartnerMemberDataMemberStateEnum + personalityType?: string /** - * 애착 유형 + * 상대방 애착 유형 */ loveTypeCategory?: PartnerMemberDataLoveTypeCategoryEnum /** - * 회피 비율 + * 애착 유형 설명 */ - avoidanceRate?: number - /** - * 불안 비율 - */ - anxietyRate?: number - /** - * 닉네임 - */ - nickname?: string - /** - * 디데이 변경 이력 여부 - */ - isStartLoveDateUpdated?: boolean + description?: string } -export const PartnerMemberDataMemberStateEnum = { - BeforeOnboarding: 'BEFORE_ONBOARDING', - Alive: 'ALIVE', - Deleted: 'DELETED', -} as const - -export type PartnerMemberDataMemberStateEnum = - (typeof PartnerMemberDataMemberStateEnum)[keyof typeof PartnerMemberDataMemberStateEnum] export const PartnerMemberDataLoveTypeCategoryEnum = { StableType: 'STABLE_TYPE', AnxietyType: 'ANXIETY_TYPE', AvoidanceType: 'AVOIDANCE_TYPE', ConfusionType: 'CONFUSION_TYPE', + Unknown: 'UNKNOWN', } as const export type PartnerMemberDataLoveTypeCategoryEnum = diff --git a/packages/data/user-api-axios/api/models/partner-profile-data.ts b/packages/data/user-api-axios/api/models/partner-profile-data.ts new file mode 100644 index 00000000..71fe40d1 --- /dev/null +++ b/packages/data/user-api-axios/api/models/partner-profile-data.ts @@ -0,0 +1,42 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Malmo API Documentation + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +/** + * 상대 프로필 응답 데이터 + */ +export interface PartnerProfileData { + /** + * 상대방 MBTI + */ + personalityType?: string + /** + * 상대방 애착 유형 + */ + loveTypeCategory?: PartnerProfileDataLoveTypeCategoryEnum + /** + * 애착 유형 설명 + */ + description?: string +} + +export const PartnerProfileDataLoveTypeCategoryEnum = { + StableType: 'STABLE_TYPE', + AnxietyType: 'ANXIETY_TYPE', + AvoidanceType: 'AVOIDANCE_TYPE', + ConfusionType: 'CONFUSION_TYPE', + Unknown: 'UNKNOWN', +} as const + +export type PartnerProfileDataLoveTypeCategoryEnum = + (typeof PartnerProfileDataLoveTypeCategoryEnum)[keyof typeof PartnerProfileDataLoveTypeCategoryEnum] diff --git a/packages/data/user-api-axios/api/models/partner-profile-success-response.ts b/packages/data/user-api-axios/api/models/partner-profile-success-response.ts new file mode 100644 index 00000000..a63e0dc8 --- /dev/null +++ b/packages/data/user-api-axios/api/models/partner-profile-success-response.ts @@ -0,0 +1,36 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Malmo API Documentation + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +// May contain unused imports in some cases +// @ts-ignore +import type { PartnerProfileData } from './partner-profile-data' + +/** + * 상대 프로필 등록/수정 성공 응답 + */ +export interface PartnerProfileSuccessResponse { + /** + * 요청 ID + */ + requestId?: string + /** + * 성공 여부 + */ + success?: boolean + /** + * 응답 메시지 + */ + message?: string + data?: PartnerProfileData +} diff --git a/packages/data/user-api-axios/api/models/sign-up-request-dto.ts b/packages/data/user-api-axios/api/models/sign-up-request-dto.ts index 7572a134..691b36a9 100644 --- a/packages/data/user-api-axios/api/models/sign-up-request-dto.ts +++ b/packages/data/user-api-axios/api/models/sign-up-request-dto.ts @@ -21,8 +21,6 @@ export interface SignUpRequestDto { nickname: string loveTypeId?: number relationshipStatus?: SignUpRequestDtoRelationshipStatusEnum - personalityType?: string - otherPersonalityType?: string } export const SignUpRequestDtoRelationshipStatusEnum = { diff --git a/packages/data/user-api-axios/api/models/update-member-data.ts b/packages/data/user-api-axios/api/models/update-member-data.ts index d52ad164..1f29d2bc 100644 --- a/packages/data/user-api-axios/api/models/update-member-data.ts +++ b/packages/data/user-api-axios/api/models/update-member-data.ts @@ -21,7 +21,33 @@ export interface UpdateMemberData { */ nickname?: string /** - * 이메일 + * 연애 상태 */ - email?: string + relationshipStatus?: UpdateMemberDataRelationshipStatusEnum + /** + * 내 MBTI + */ + personalityType?: string + /** + * 내 애착 유형 + */ + loveTypeCategory?: UpdateMemberDataLoveTypeCategoryEnum } + +export const UpdateMemberDataRelationshipStatusEnum = { + InRelationship: 'IN_RELATIONSHIP', + SeeingSomeone: 'SEEING_SOMEONE', + Breakup: 'BREAKUP', +} as const + +export type UpdateMemberDataRelationshipStatusEnum = + (typeof UpdateMemberDataRelationshipStatusEnum)[keyof typeof UpdateMemberDataRelationshipStatusEnum] +export const UpdateMemberDataLoveTypeCategoryEnum = { + StableType: 'STABLE_TYPE', + AnxietyType: 'ANXIETY_TYPE', + AvoidanceType: 'AVOIDANCE_TYPE', + ConfusionType: 'CONFUSION_TYPE', +} as const + +export type UpdateMemberDataLoveTypeCategoryEnum = + (typeof UpdateMemberDataLoveTypeCategoryEnum)[keyof typeof UpdateMemberDataLoveTypeCategoryEnum] diff --git a/packages/data/user-api-axios/api/models/update-member-request-dto.ts b/packages/data/user-api-axios/api/models/update-member-request-dto.ts index 2774ea4d..5a61545c 100644 --- a/packages/data/user-api-axios/api/models/update-member-request-dto.ts +++ b/packages/data/user-api-axios/api/models/update-member-request-dto.ts @@ -16,7 +16,7 @@ export interface UpdateMemberRequestDto { nickname?: string relationshipStatus?: UpdateMemberRequestDtoRelationshipStatusEnum personalityType?: string - otherPersonalityType?: string + loveTypeCategory?: UpdateMemberRequestDtoLoveTypeCategoryEnum } export const UpdateMemberRequestDtoRelationshipStatusEnum = { @@ -27,3 +27,12 @@ export const UpdateMemberRequestDtoRelationshipStatusEnum = { export type UpdateMemberRequestDtoRelationshipStatusEnum = (typeof UpdateMemberRequestDtoRelationshipStatusEnum)[keyof typeof UpdateMemberRequestDtoRelationshipStatusEnum] +export const UpdateMemberRequestDtoLoveTypeCategoryEnum = { + StableType: 'STABLE_TYPE', + AnxietyType: 'ANXIETY_TYPE', + AvoidanceType: 'AVOIDANCE_TYPE', + ConfusionType: 'CONFUSION_TYPE', +} as const + +export type UpdateMemberRequestDtoLoveTypeCategoryEnum = + (typeof UpdateMemberRequestDtoLoveTypeCategoryEnum)[keyof typeof UpdateMemberRequestDtoLoveTypeCategoryEnum] diff --git a/packages/data/user-api-axios/api/models/update-partner-profile-request-dto.ts b/packages/data/user-api-axios/api/models/update-partner-profile-request-dto.ts new file mode 100644 index 00000000..79a9c326 --- /dev/null +++ b/packages/data/user-api-axios/api/models/update-partner-profile-request-dto.ts @@ -0,0 +1,31 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Malmo API Documentation + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: v1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +export interface UpdatePartnerProfileRequestDto { + personalityType?: string + personalityTypeProvided?: boolean + loveTypeCategory?: UpdatePartnerProfileRequestDtoLoveTypeCategoryEnum + loveTypeCategoryProvided?: boolean +} + +export const UpdatePartnerProfileRequestDtoLoveTypeCategoryEnum = { + StableType: 'STABLE_TYPE', + AnxietyType: 'ANXIETY_TYPE', + AvoidanceType: 'AVOIDANCE_TYPE', + ConfusionType: 'CONFUSION_TYPE', + Unknown: 'UNKNOWN', +} as const + +export type UpdatePartnerProfileRequestDtoLoveTypeCategoryEnum = + (typeof UpdatePartnerProfileRequestDtoLoveTypeCategoryEnum)[keyof typeof UpdatePartnerProfileRequestDtoLoveTypeCategoryEnum] diff --git a/packages/data/user-api-axios/api/models/update-start-love-date-data.ts b/packages/data/user-api-axios/api/models/update-start-love-date-data.ts index 3dd9fa49..9d631f9c 100644 --- a/packages/data/user-api-axios/api/models/update-start-love-date-data.ts +++ b/packages/data/user-api-axios/api/models/update-start-love-date-data.ts @@ -13,7 +13,7 @@ */ /** - * 연애 시작일 갱신 응답 데이터 + * [Deprecated] 연애 시작일 갱신 응답 데이터 */ export interface UpdateStartLoveDateData { /** diff --git a/packages/data/user-api-axios/api/models/update-start-love-date-request-dto.ts b/packages/data/user-api-axios/api/models/update-start-love-date-request-dto.ts index b7fa5048..853e7f4a 100644 --- a/packages/data/user-api-axios/api/models/update-start-love-date-request-dto.ts +++ b/packages/data/user-api-axios/api/models/update-start-love-date-request-dto.ts @@ -12,6 +12,9 @@ * Do not edit the class manually. */ +/** + * [Deprecated] 연애 시작일 변경 요청 DTO + */ export interface UpdateStartLoveDateRequestDto { startLoveDate: string } diff --git a/packages/data/user-api-axios/api/models/update-start-love-date-success-response.ts b/packages/data/user-api-axios/api/models/update-start-love-date-success-response.ts index 9b100dda..127d11de 100644 --- a/packages/data/user-api-axios/api/models/update-start-love-date-success-response.ts +++ b/packages/data/user-api-axios/api/models/update-start-love-date-success-response.ts @@ -17,7 +17,7 @@ import type { UpdateStartLoveDateData } from './update-start-love-date-data' /** - * 연애 시작일 갱신 성공 응답 + * [Deprecated] 연애 시작일 갱신 성공 응답 */ export interface UpdateStartLoveDateSuccessResponse { /** From 2c32f3365639c884e54c9fdbfa8b64ea48d0c7ee Mon Sep 17 00:00:00 2001 From: LeeWxx Date: Sat, 21 Mar 2026 06:34:19 +0900 Subject: [PATCH 23/43] =?UTF-8?q?Fix:=20=EC=8B=A0=EA=B7=9C=20=ED=8C=8C?= =?UTF-8?q?=ED=8A=B8=EB=84=88=20=ED=94=84=EB=A1=9C=ED=95=84=20API=EC=97=90?= =?UTF-8?q?=20=EB=A7=9E=EA=B2=8C=20=EC=97=B0=EB=8F=99/=EC=98=A8=EB=B3=B4?= =?UTF-8?q?=EB=94=A9=20=EB=A1=9C=EC=A7=81=20=EC=A0=95=EB=A6=AC=20(MM-189)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/my-page/couple-management/page.tsx | 3 +-- .../couple-management/partner-code/page.tsx | 7 ++----- apps/react/src/app/partner-mbti/page.tsx | 20 +++++++++++++++---- .../contexts/onboarding-context.tsx | 18 +++++++++++++---- .../features/profile/ui/profile-section.tsx | 6 ++---- 5 files changed, 35 insertions(+), 19 deletions(-) diff --git a/apps/react/src/app/my-page/couple-management/page.tsx b/apps/react/src/app/my-page/couple-management/page.tsx index 48bc77c1..414b82fa 100644 --- a/apps/react/src/app/my-page/couple-management/page.tsx +++ b/apps/react/src/app/my-page/couple-management/page.tsx @@ -1,4 +1,3 @@ -import { PartnerMemberDataMemberStateEnum } from '@data/user-api-axios/api' import { useQuery, useQueryClient } from '@tanstack/react-query' import { createFileRoute, useNavigate } from '@tanstack/react-router' import { Copy } from 'lucide-react' @@ -33,7 +32,7 @@ function CoupleManagementPage() { // 커플 연동 상태 const { data: partnerInfo } = usePartnerInfo() - const isPartnerConnected = !!partnerInfo && partnerInfo.memberState === PartnerMemberDataMemberStateEnum.Alive + const isPartnerConnected = !!partnerInfo // 페이지 새로고침 함수 const handleRefreshPage = async () => { diff --git a/apps/react/src/app/my-page/couple-management/partner-code/page.tsx b/apps/react/src/app/my-page/couple-management/partner-code/page.tsx index 855f72bc..2bb2c0ea 100644 --- a/apps/react/src/app/my-page/couple-management/partner-code/page.tsx +++ b/apps/react/src/app/my-page/couple-management/partner-code/page.tsx @@ -4,7 +4,6 @@ import { useState } from 'react' import { useAuth } from '@/features/auth' import { PartnerCodeForm } from '@/features/couple' -import { usePartnerInfo } from '@/features/member' import { wrapWithTracking, BUTTON_NAMES, CATEGORIES } from '@/shared/analytics' import coupleService from '@/shared/services/couple.service' import { queryKeys } from '@/shared/services/query-keys' @@ -20,7 +19,6 @@ function CoupleManagementPartnerCode() { const queryClient = useQueryClient() const navigate = useNavigate() const { refreshUserInfo } = useAuth() - const { data: partnerInfo, refetch: refetchPartnerInfo } = usePartnerInfo() const handlePrevious = wrapWithTracking(BUTTON_NAMES.BACK_PARTNER_CODE, CATEGORIES.ONBOARDING, () => { navigate({ to: '/my-page/couple-management', replace: true }) @@ -37,10 +35,9 @@ function CoupleManagementPartnerCode() { toast.success('커플 연결이 완료되었어요!') - await refreshUserInfo() + const refreshedUserInfo = await refreshUserInfo() queryClient.removeQueries({ queryKey: queryKeys.member.partnerInfo() }) - const { data: updatedPartnerInfo } = await refetchPartnerInfo() - const hasAnniversary = updatedPartnerInfo?.isStartLoveDateUpdated ?? partnerInfo?.isStartLoveDateUpdated ?? false + const hasAnniversary = Boolean(refreshedUserInfo?.startLoveDate) if (hasAnniversary) { navigate({ to: '/my-page/couple-management', replace: true }) diff --git a/apps/react/src/app/partner-mbti/page.tsx b/apps/react/src/app/partner-mbti/page.tsx index c94dd23f..9eac78e7 100644 --- a/apps/react/src/app/partner-mbti/page.tsx +++ b/apps/react/src/app/partner-mbti/page.tsx @@ -10,7 +10,7 @@ import { useGoBack } from '@/shared/navigation/use-go-back' import memberService from '@/shared/services/member.service' import { toast } from '@/shared/ui/toast' -import type { UpdateMemberRequestDto } from '@data/user-api-axios/api' +import type { CreatePartnerProfileRequestDto, UpdatePartnerProfileRequestDto } from '@data/user-api-axios/api' export const Route = createFileRoute('/partner-mbti/')({ validateSearch: requiredProfileFlowSearchSchema, @@ -25,8 +25,20 @@ function PartnerMbtiEditPage() { const isRequiredProfileFlow = requiredProfileFlow === true const updateMutation = useMutation({ - mutationFn: async (body: UpdateMemberRequestDto) => { - const { data } = await memberService.updateMember({ updateMemberRequestDto: body }) + mutationFn: async (mbti: string) => { + if (userInfo.otherPersonalityType) { + const requestBody: UpdatePartnerProfileRequestDto = { + personalityType: mbti, + personalityTypeProvided: true, + } + const { data } = await memberService.updatePartnerProfile({ updatePartnerProfileRequestDto: requestBody }) + return data + } + + const requestBody: CreatePartnerProfileRequestDto = { + personalityType: mbti, + } + const { data } = await memberService.createPartnerProfile({ createPartnerProfileRequestDto: requestBody }) return data }, onSuccess: async () => { @@ -48,7 +60,7 @@ function PartnerMbtiEditPage() { const handleSubmit = (mbti: string) => { if (updateMutation.isPending) return trackSave() - updateMutation.mutate({ otherPersonalityType: mbti }) + updateMutation.mutate(mbti) } const handleBack = isRequiredProfileFlow diff --git a/apps/react/src/features/onboarding/contexts/onboarding-context.tsx b/apps/react/src/features/onboarding/contexts/onboarding-context.tsx index 70283223..e8ad9620 100644 --- a/apps/react/src/features/onboarding/contexts/onboarding-context.tsx +++ b/apps/react/src/features/onboarding/contexts/onboarding-context.tsx @@ -1,6 +1,7 @@ import { useMutation } from '@tanstack/react-query' import React, { createContext, useContext, useState, ReactNode } from 'react' +import memberService from '@/shared/services/member.service' import signUpService from '@/shared/services/sign-up.service' import type { SignUpRequestDto } from '@data/user-api-axios/api' @@ -165,16 +166,25 @@ export function OnboardingProvider({ children }: { children: ReactNode }) { requestBody.relationshipStatus = data.relationshipStatus } + // 회원가입 API 호출 + await signUpMutation.mutateAsync(requestBody) + if (data.personalityType) { - requestBody.personalityType = data.personalityType + await memberService.updateMember({ + updateMemberRequestDto: { + personalityType: data.personalityType, + }, + }) } if (data.otherPersonalityType) { - requestBody.otherPersonalityType = data.otherPersonalityType + await memberService.createPartnerProfile({ + createPartnerProfileRequestDto: { + personalityType: data.otherPersonalityType, + }, + }) } - // 회원가입 API 호출 - await signUpMutation.mutateAsync(requestBody) setIsOnboardingCompleted(true) return true diff --git a/apps/react/src/features/profile/ui/profile-section.tsx b/apps/react/src/features/profile/ui/profile-section.tsx index 2bbf47ce..25def1f1 100644 --- a/apps/react/src/features/profile/ui/profile-section.tsx +++ b/apps/react/src/features/profile/ui/profile-section.tsx @@ -1,4 +1,3 @@ -import { PartnerMemberDataMemberStateEnum } from '@data/user-api-axios/api' import { Pen } from 'lucide-react' import HeartIcon from '@/assets/icons/heart.svg' @@ -20,7 +19,7 @@ interface ProfileSectionProps { export function ProfileSection({ nickname, dDay }: ProfileSectionProps) { // 커플 연동 상태 const { data: partnerInfo } = usePartnerInfo() - const isPartnerConnected = !!partnerInfo && partnerInfo.memberState === PartnerMemberDataMemberStateEnum.Alive + const isPartnerConnected = !!partnerInfo const profileEdit = useProfileEdit() @@ -33,8 +32,7 @@ export function ProfileSection({ nickname, dDay }: ProfileSectionProps) { ) // 연인의 닉네임이 있으면 표시하고, 없으면 "연인" 표시 - const partnerName = partnerInfo?.nickname || '연인' - const partnerDisplayText = withParticle(partnerName) + const partnerDisplayText = withParticle('연인') return ( <> From 613ba8e2478aa39c989a933381c82d5ce8d746b8 Mon Sep 17 00:00:00 2001 From: LeeWxx Date: Sat, 21 Mar 2026 06:34:47 +0900 Subject: [PATCH 24/43] =?UTF-8?q?Feat:=20=EC=95=A0=EC=B0=A9=EC=9C=A0?= =?UTF-8?q?=ED=98=95=20=EA=B2=B0=EA=B3=BC=20=EB=A6=AC=EB=89=B4=EC=96=BC=20?= =?UTF-8?q?(MM-189)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/react/index.html | 1 + .../app/attachment-test/result/my/page.tsx | 11 +- apps/react/src/app/page.tsx | 9 +- .../attachment-result-anxiety.png | Bin 0 -> 134864 bytes .../attachment-result-avoidance.png | Bin 0 -> 136796 bytes .../attachment-result-confusion.png | Bin 0 -> 139693 bytes .../attachment-result-stable.png | Bin 0 -> 137392 bytes apps/react/src/features/attachment/index.ts | 5 +- .../attachment/lib/get-attachment-type.ts | 8 - .../attachment/models/attachment-data.ts | 46 --- .../attachment/models/attachment-types.ts | 155 -------- .../attachment/models/love-type-catalog.ts | 107 +++++ .../attachment/models/result-label-map.ts | 203 ++++++++++ .../src/features/attachment/models/types.ts | 25 -- .../attachment/ui/attachment-type-cards.tsx | 7 +- .../attachment/ui/attachment-type-tag.tsx | 9 +- .../ui/main/attachment-test-info-section.tsx | 3 +- .../ui/main/attachment-types-section.tsx | 3 +- .../ui/result/attachment-result-content.tsx | 277 +++++++++---- .../ui/result/attachment-result-sections.tsx | 373 ++++++++++++++++++ .../ui/result/result-detail-box.tsx | 32 -- .../src/shared/services/love-type.service.ts | 10 + apps/react/src/shared/services/query-keys.ts | 2 + apps/react/src/styles/components.css | 6 + apps/react/src/styles/globals.css | 1 + 25 files changed, 918 insertions(+), 375 deletions(-) create mode 100644 apps/react/src/assets/images/attachment-result/attachment-result-anxiety.png create mode 100644 apps/react/src/assets/images/attachment-result/attachment-result-avoidance.png create mode 100644 apps/react/src/assets/images/attachment-result/attachment-result-confusion.png create mode 100644 apps/react/src/assets/images/attachment-result/attachment-result-stable.png delete mode 100644 apps/react/src/features/attachment/lib/get-attachment-type.ts delete mode 100644 apps/react/src/features/attachment/models/attachment-data.ts delete mode 100644 apps/react/src/features/attachment/models/attachment-types.ts create mode 100644 apps/react/src/features/attachment/models/love-type-catalog.ts create mode 100644 apps/react/src/features/attachment/models/result-label-map.ts delete mode 100644 apps/react/src/features/attachment/models/types.ts create mode 100644 apps/react/src/features/attachment/ui/result/attachment-result-sections.tsx delete mode 100644 apps/react/src/features/attachment/ui/result/result-detail-box.tsx diff --git a/apps/react/index.html b/apps/react/index.html index fe536a0c..f86b7645 100644 --- a/apps/react/index.html +++ b/apps/react/index.html @@ -7,6 +7,7 @@ content="width=device-width, viewport-fit=cover, initial-scale=1, maximum-scale=1, user-scalable=0" /> React + diff --git a/apps/react/src/app/attachment-test/result/my/page.tsx b/apps/react/src/app/attachment-test/result/my/page.tsx index 1c229ddf..dbc93a1c 100644 --- a/apps/react/src/app/attachment-test/result/my/page.tsx +++ b/apps/react/src/app/attachment-test/result/my/page.tsx @@ -1,13 +1,8 @@ import { createFileRoute, redirect } from '@tanstack/react-router' -import z from 'zod' import { AttachmentResultContent } from '@/features/attachment/ui/result/attachment-result-content' import { useAuth } from '@/features/auth' -const searchSchema = z.object({ - from: z.string().optional(), -}) - export const Route = createFileRoute('/attachment-test/result/my/')({ beforeLoad: async ({ context }) => { // 인증되지 않은 경우 로그인 페이지로 리다이렉트 @@ -18,13 +13,9 @@ export const Route = createFileRoute('/attachment-test/result/my/')({ } }, component: MyAttachmentResultPage, - validateSearch: searchSchema, }) function MyAttachmentResultPage() { const { userInfo } = useAuth() - const { from } = Route.useSearch() - const isFromChat = from === '/chat' - - return + return } diff --git a/apps/react/src/app/page.tsx b/apps/react/src/app/page.tsx index f80caa67..a4c75674 100644 --- a/apps/react/src/app/page.tsx +++ b/apps/react/src/app/page.tsx @@ -1,4 +1,3 @@ -import { PartnerMemberDataMemberStateEnum } from '@data/user-api-axios/api' import { createFileRoute, useNavigate } from '@tanstack/react-router' import { useEffect } from 'react' @@ -6,7 +5,7 @@ import HeartIcon from '@/assets/icons/heart.svg' import malmoLogo from '@/assets/images/malmo-logo-small.png' import momoHomeChattingImage from '@/assets/images/onboarding-end-2.png' import { AnniversaryEditSheet } from '@/features/anniversary' -import { getAttachmentType } from '@/features/attachment' +import { getLoveTypeCatalogItem } from '@/features/attachment/models/love-type-catalog' import { AttachmentTestBanner } from '@/features/attachment/ui/attachment-test-banner' import { AttachmentTypeCards } from '@/features/attachment/ui/attachment-type-cards' import { useAuth } from '@/features/auth' @@ -54,10 +53,10 @@ function HomePage() { const requiredProfileStartPath = getRequiredProfileFlowStartPath(userInfo) // 파트너 연동 상태 확인 - const isPartnerConnected = !!partnerInfo && partnerInfo.memberState === PartnerMemberDataMemberStateEnum.Alive + const isPartnerConnected = !!partnerInfo - const myAttachmentData = getAttachmentType(userInfo.loveTypeCategory) - const partnerAttachmentData = getAttachmentType(partnerInfo?.loveTypeCategory) + const myAttachmentData = getLoveTypeCatalogItem(userInfo.loveTypeCategory) + const partnerAttachmentData = getLoveTypeCatalogItem(partnerInfo?.loveTypeCategory) const myAttachmentType = myAttachmentData?.character const partnerAttachmentType = partnerAttachmentData?.character diff --git a/apps/react/src/assets/images/attachment-result/attachment-result-anxiety.png b/apps/react/src/assets/images/attachment-result/attachment-result-anxiety.png new file mode 100644 index 0000000000000000000000000000000000000000..50cf82fcfb78afe3bfb64919e4a7e239e084294e GIT binary patch literal 134864 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 literal 0 HcmV?d00001 diff --git a/apps/react/src/assets/images/attachment-result/attachment-result-avoidance.png b/apps/react/src/assets/images/attachment-result/attachment-result-avoidance.png new file mode 100644 index 0000000000000000000000000000000000000000..f9d34825f4ec42eb72d923d35272e93f944a72dc GIT binary patch literal 136796 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%0Ae)wYC{FTvFBpvm&pE1xpjK=|Vm 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

nt5V?Sy1B8 z&9kt5YBHRcj)}*eTcf&7oT{hs4k+9rK^h~;>{H4nuyNYpi73yzg7pg8BVpYfuwm=BJBitE+I;+O{>B;?mC8eSr~0n#zYj0DKAvX6Q1M16ebK z<$;!!rJtwbqRkhehF?M?bR5p6G~eeLGDZ{}-|7P02yY@xFEjGOL9*u&VE3Y<8!b*R z$tfbme<0e_$P535|E8ZG!wVnqc-^|r8S0%^y20}bFf{g-c^^AId-bXSg`A+Y9ri3i z22`*+%W<^3>XnFJCEF#dI0M?eqi zpe41~B{a#^>V+B6WX~*IJI9>5hdk-lah`^#CU(OAsJd$cgtq7Aj}BZ9id=b#D9~-})RI zP6>gLLJBFcc1~~{-W14l4|gykEVpqbLKlzwQs(#-o%_#D)iPI+Z8+ydM+vod>mb1j zc`CdE*5tnnwPvCDp%a@wBpI@200YTN=E--glE};pH%E1Lr@5mJ06I~Tt%q8Hh?Yd(U&$h{&tVX#p+3&0H#QQeQL8g z$Awo2o9CU%b{tHGX&%3!?ArQt*)AU*;86)in1lTcF4Gz4{D*$3(_+FH!FnU%*cw`E{H}*41V1UNcq$S$eZ*p#LfG zD}*=mMXsZgx1VLd0T+e7DPlxaF|KM{eg?a~Mfv;46Q)b@RDyI>AL?>2yOatpVaR&RriNaXu`CTy_rmE(IZ zZ^hxHE6$@AY+tWItxuG{hv%j-)!d*fp?Zjw<6hT3x-@oGCDciV#2*ei=PnF7v^wK$ zFaD0Y#LgK3>MU<@5qNYIPqrTPn(sSW%+r(nOB_P7*!9KwXMW=5^z+TCORKA`rL|s- zjLJMT?0SSnzd1z;i;Wihk<*da&c$02jQMFkw{fA`!csttS^JA*Ps|+JC_cSY>I{h+ zpf|=tJaAB}01_5T&u5Ap!?tk@uAScJW9>}-z`#JSB#g(K&hewW2kDd{E`uAE>a_LD zyZ*Bdtpl^_q2*wj?d7uQPS8%v)+R;fFJ%NS6APVF$l5ZPXAq{D95KGgG-|5&SZ5dO zsZBwN#1AvV>q%)Y1_AoQ$lS+|s@3bX{b9{-c#Y!d)~X9`k}h0q8`^Dk08ZYeFXQe~ z!etZ_4sa%xLW*w2xpxpynmU04LUW|Vx`>lQ2sXS}Z|A_#Z4YNVQ!1JJL;jq?_i6H= zrQ8PUhq-NvLY>U8Mqb0|I&FKd@DjF-g8XPrq?9{Ws3Z=BI!85=L(FiZ&szY`=d}bV zFA%DePefiFf|j^EZY;Hu+e2rb_2$|i{13qH+DPl5mbyTHTp~GIlVV zC^2LOC|iRt5h>1l162VR02sha?;qI*>donr<83^UG{;S|$xhRS4k@Z&i$XTh)n%b0 z()0dLd8VCm?l9>HVlqiQ@3N(2{izOc7?K%SzTajB*UFhtpunrscvV1E>TJTWBRLjz z)wQ$YNYJy)-Fc~_RxT&+N$1d#J})&aXwB%FtxK?4ktApk+&T**t*Yj9iP#p=9h%Ep zvlZ*6z4HNDk_*vd*o2wr_+?Rw>$jN9#gRZ^$TVw(;{gKlH(6$K`Jjy;9hY0%p;{y3 zRm2`}1?6*?&#H`QYb4L9Ek?D7>|r|ad4&{p5iKPOAj+b`W$@OJVV=g6YqP?pbr7dd zC1la6Qq>5>g`d>QF3SNr|++XQ7R2FCLpMvsq{Jg;2X1ybGfPwy? zjs*%L)sF$L`J(|RJHqGdz=_7h^c*50sR6{cb;gf+Pketb+Jd)$tdss9#@;%v$u{gC zUQweajF24CBBdxGu>lHrtAwZ^IZUJx1nG?s0VxX!VSoZki?qP#QbB3y2I-Cw?>X=L z`Td^v{p;m#KHIhHIv5ryr+ug1V#@+b*l>e10^4!$DA2hG-rkA^T0HN0T<^sKycSMB^^O5>yOvRGlP< zTe5Fh4FDJ-_>#Es<#9layk+@(37UJnR$9eTD9{wAXfKkYRuU65-PLZfH|Kee7+7~j zkiNg6zUpb$1nF2%5BykrizLPx@8@SJP4kl{rrjC=A!uogyQp%PKgTb>NBE$A7M$i4c8m z9r!8Ph>=)gPaKR{HVZCOTYSr=BolZ=aAlgM`KN3D@h?un)$dGAO!6fWhQI}XGZli( zfkCd*+y>8z+#*(VtV=*`3jg_19l{9&d7x;0gqZ5JGW3%j|3RTXC4)o`Dy5XqRQ)9) z`L-i*N5r9tgKn?&T7PV;)!hk(t7Xxbam7#fX&{?+EA$c8GJ<~27HC{ zi%Sj&x&BO)<6eI5fhIRSh+NZz0e6J#Txzd%!ehnT7XT=3Q6~5Vl!t zBLYf0foC!KGLwN^fIttUwJ<~QeRFDIKt*wswb5=<8Eow}E#+h?XvK{z)!l?2ra4Zw9FY z;qbVV+L1li?koEjYfJ$zJN_4*r{=;-u9{XfO43R8JdMJO{LJJ)1Ti%|(h~-p{8#ro z*R$0|XO(sc#mssUcz0 zVVSi>wD8NPfy^@hJy7R@A0pU8&K_h%IzFxBrm~if(09Ma%OgL!Tbh_W^8`iQwKq7a z)guArYo3kdl=CzjV{?pavJ7+PKDWo{hTfwalyak~*)D428LgdwDoJOFnu*9F)KE)Tc zw4zM){<|&Gqv7Qh4{HK$&@%CW3hEiKeb#n`fAuAs(z(6d@-or_rE${z&a=z*W7LzM zaDc{&2Wi*UOp;Cx_>hU+6F&49X~_Y-c#lsW$x4XUOXWt zZqaqMrYh5$jVSYNk8h!t<6NfirdIPIri2g#Xglsp^bn&cfT@(bs(4WOdUB<~EGgML z-=vn`otZ0A_|w?((xNBtCEzU|+;}62M>8(2dVb1ElfWa%8q$=Ub^-rA958*EbIT3lNxUAQ z?*bo;+ z#5jE8UePB6+O!5WQ+TfZbNh>`%{Zas=EJb^F->laIy*r3>ZzBU$)-uCui$dAy2vBz zW>$kB)BL7acFoN6bgLj*`XwmoCUbTrn`9R#gJF%w!ctDtn5)dmsmDfWoX}vSyX%zy zGpJmWM!bIJxiEqd`t%(2`jkXA&d{a=igQs~R(==RA$gdl(FSA5gRpbH7#m_`=EsDa z#u?^N#zXxCcRT;8$9LqSjWFJy4j#$e-X>hI6UuLa&)uJRGY1E>+^no^BK0$!ZO~XN z1;u$5J%O926t$jQ9015?yQre?Ze3acZAHtw-5&Mm5|-;{spK#|OzZwt`hK5!RjA9z z1`$}RJ@(zQNg8wzIidfxiH&Dz@9h z-E)9zgGII^PY2E_&;U(VxY7h&XSs?o=pZH8O~QZxN$wchUkGqNt}0u*)Jx@~u@1K< zzI@6-{(j2Fpji~;KDc%>mMwOxlMcT6V$y)YLmIBbreI_B>H#oSz|Qg1$lP3ngZf2F zIYaN=xcCEzQvbi(+27L3c@m8cALUf?%p^EIo%Zs(BD5c&trZ8m=j*Tt|MYP)A26xo zJu(L6h)>OIa(hLrZqG%(gy>2>D;BhXdFi4$n1SOE*lUb`OzA7La2Ck4A613>1slh40V~Jud)h(FMvcc@)(*pDPgfQqavdd zN6Y8TGy+?x3dPrQs7W?zJ`{+vNZ+3GDd5nyIVWLVE;d=YY8yuF=F>E{lP~a;5P)zZQugmQ zIx1q&Wu5ZV`7p(kt|?)BCEUSnD0B7h1InmVqYA37wRMD;G14U^JCQKwg-2s7>l3x z0OA8sBi09)jqco;pG)vq&b^Gvp8)wrE>@1jua-Z4uS{|0ZxLoW<(jI32&X2NSKh(S zIbc*?WwE>5DT8^f4Z61Pj*ka^rU6QyCW0M^kigIYEdA*rO8Ri^`t3Z%eH!ZSEY3Fw zYf9P*BEM;;{y>xA3UF!nZEs1jSmZC0*&tmjEgGW7vl@Jh@?EEBE};yP1GlEo&Mk%*c?^xj%1b2(pLCCy zvt3$W4-goF@@P%h5vr6_uUXYMJT$QG-7vAgyS`d_b=s(zbecNz+~*MkqPr9L)FwOW ze*XwO2aKCL>WX8mHbTv^m zK7g6~70drbUGQoqV=M+lII<-HGs-l`7)WQy#GXLH(w~A&iZi8v9gc9JwqfKhg4w7^ znrS&`Y&M_;U=;NFR+!Gd^$qE5HpE)AhL9nKW89P9VR3(I{GgI^C8WI3QoQ0Ftn8nd z0q#k*Crf2Bw=?lBT5PlmVRCu`1{54m$tW1*M7GAr<8oj;XFxLsk$Vi5(^cXQIYeF@ZI6>Y53OCnUT*d{`*Q;F?fff+Fu%B%I7wLEcIO>2<7}^ z7m6%a?{G4VGfuYhr-><(Fgjsdp&og2jeHQxmK*?+m0zvnm3j*V#dnbUhg;^Y#q zqN9?XAP{M&We4M=w}&K}M@~~-jd86R5OaNqVKS@3BF8Yv;eGGiXQw#j3~`d7LzSp= zL~<=?1GL4s;9*n_6r%gr*)X~@T2wX6WZa&lHsCU7I{{#YQt2S#>AMDJi}D%#*yvl^ z*Ne5S^k}l*HzqA^!(8d!uhI>@q;Eynj*nk%(~@BV{G2X8>bM#H2e55NyQ=~4$l2WY|8QP*46d83D^NsgxBRgoVa`nzD2X@NC$%?>#KC8D>bW-04i zP~M9Y06gLiLO>a)0haDB^(xuQA3_Kzf59Gr_T29b9-k4z4tOkbMTVgiJTX1py}1_Q zIq(w^!d;HpaW}Ab0an2I+{dli`-}FZ!}sL@_2>xYW)5WRZ`yI!s{#@Nbbe2j5nX4X z5IIzXmCY9h>K$Ry?>phVqEx^YKM!K=?;Ufx<^6FdN*d9SW-o-=g?+VMvPa_Q(6hGl zg5eqgv?}=ojaZ9pmaJ_J_mJDXo$MbT%?1^*qQmIH(c1y=TaV)L3(&u%4B?oB-&5p1 z-{Vut{)awpjJn*>FNZlhMCsjvH$z0|-`>Frd~-d_t{k~RCJQq-pf%sPn>-aT;SLBm z2JkUu^)@dOpTyl^?l zl#cp(sK57dRHU*M5Xh&=C5uLO0bbLI!u6P-M@V1HZG59?in~8(9u66p+Po4MOt-78Obr84#S_GMX_65cYQ~J~wAOk2^ zi6oCST+Q!+ZeBJafnr+zZzTfJ320;==Pa$xbQ~VCqhs!|E!vTNpBYsL;s^R|^R_6e zMr7OhFXsiZ878lc7cGmKOOb$bm!sh}iPng7GigQV+!>Zpwa9E|LxVOpoj(-XV09&B z7)RY8fM#!Fy?3aBssJ86EGR6gNW%8sE?e6|T9Y5#VGwSeF#|@3jQx8{KKyovllq5u zZ>3cr=NFPv3H`?&iJo9bqzV8)ue|w5xq*_KaBkn50LTPAG#&l#+MsCLV331OOG`^b zt;tpu?$Q!Yz%y%CVyx?LdOZq?_^5_`KL`Jyf)UiRdF%y(^t2*GzG(}&WwMpq#16u) zoilg811iJhqmNOR&Jek?L5-1ixg#l8saHPgSM#Kn5*Bv1?O1aQOI_aNo+b5h8=?DPv|7C1>Z09`GxJVF9*xFYa{KjeqJJ)O!; zqV8=6lCyt5TD>+XgYxv#)DSAwh@8%vi1n{>>ol7ObrT4d`SVZ>JuVwdsE1^g6`EK7 z5^@$1W{Ajk5>hV;e<6q2tYtg)Solr6L|DReHMa7xJg?ENmn=Xxpc(8qJWOR0z+KnQ z3?`6kC{1=HR@LvY#uUP3B5@oP7xxU4|ID4P#}>`%{5s*gz|rCNi2nMTtb6eY<7o}j zH+taj3Jez1{hlALUyGxr>cwl~d*~r=ae#np?(7+~e0 zZo-DB{FNX&yTT}C$XmV_XK+B-4Zedgak+2oK@p|FYNxOLVg{f}axE%2-@)Q>(bd|Z zFGql|MHB7hGK4}X?yLteFxLs)eaw8;7nAUkJ2_)Cur!(O1U)s?le}r^55c; z@G{uXabUpJ@qS~?&qveWjvHrn-|iqKf<_;73LuDSve~$Alp2mWw9~p!xNRpiY)W(L zNe8erA!7;LN;Yyo$GDrP#opw_)TWRS-i~@iU~3fT`P@4KE&l zqVew?XOD!@?Zz$XN+M^n9wEPd`}XSW2523O(g|W4kJIKrC-duscXo-#cB z$(qBFn50L%;<+*h`(qLCe_fHc#dl;?S#mb-Va56Tw{hS*Gy-Yc zdWiM|G0!q{&=KIo8h%?#3;J0%BpRha@0=LJZ7}jM6dDq3`xg?}<^uI7X8@1(QW~yk z9eA@QSbO5t!MJCm3crK$Fv^o`lk3Lc`K~L3GZ54%Z}uOJC(}?KS0Gp{z|%Oz z=q``s`658~@%S|7Gik&Y7^8BVg6o_>LzE&h)Y1wVUiZqD9fg>_flY1Y;nHH&qpgMh z&%UEIbb|ILjqvX7Js*8>?DXb6NwP04lQS3))JR|^s4MM)_lOdc2(phW<5ivSBHT-t zN%uHh9*9@jdgeF#WXB$W6NFFd-_s*KvIB=!`p0pwbWD^oQ3Cjr>%HI44sTe&7iM$0xWY=giXRi~JAv zHlJM4gBGDAo?C^_7DwmC1bxaVlI0>Yz&_r?M5{q9&P59Ft%Ks4cf^sfRedq)$G^3${gJ!A?#jXvTY29VAUYhUpB(P*nq1*x zoc4S8P;z>SgYwhUe|5Y8lR@~Am2}hB;r~XV-jlZs#$Z4poozw>aE|yl40ZAV)vmT} z{#6%bDX<7>;AZTGg}@__XM?An!MpNmP`?yn+M($zGRXY>u>&~0BZ+psxtI7>S~)vh zKs9vE@7}$JHp%Gf-v67F8rB1qe`ZAD(|XGvZuSoF*KZGEO4FTRBSvVbv z-_odH2zVt}RUKc_x&36L-H^D>k`dBzwN(=EIYIS=frM2ehWeS1ZSbMarS^+U!%OO7 z8aO>@@M_l0Hx*QZx~~hGRZvuP3fdb_o9O`bqMs6BRIx;?drJ6%0i(Tr?b_O-FW9%3 zm5<9uZTjaSN~-@ZN<6oXkdoW|c%i{kmpTwlO~d@#M02rC6c6$Ol->0Cn_K2x5}0OB zraDn@d)J(}UX;;(4HlS9U8Dsi>E^{rMFvO+!~sUVJh>BNOBORT0&dPqUEA)xAY)=e zls-|#!!a3l=MDp?L#-{s7r10C-GIdD6trl;E};x|k{$k>cmdjm)(s8(fa}P?i&$gy z1P#)0m6lP88#e@1Hz$RF(Pe{bmH>Zu*m$17LRyTMzLr^Lb&m&uN6?A}Ln}HzDiJZj z<)&FCY>d+c=K1JKZOR8-{BeRKlUFh8-8A~E^eb~F``7-)vR-HYc$`xqGg`xNFgyA2 znJrETcgSBD_2=I;37IG?(P69+`s_X*q2xQd&|g>(T@BjO-VGv9#zlxRwcG+>LT>cv z@P$>Yr?z$suup|r56C0xB{+^d4BlZdIvS=wCN9LY7Ky*( zt$P=h0e5l-f18}c{I6^jyk!NFwiO+NuFgvPMMvA%@()*_E=z;TR;r0p3^uFgWCxIZp*ngPhVldw?ZOq-C$PCi#Ug@7j#Qvrm?^fR! z-KU|0)TJFQ{ZWyz@1?@G5Zsha%|mxm?j!COXCC~>?1-WOD_FBA24p~&MpFgg&nC&T zG*DN@9X(O<&1ES=I@;Zm*T z0Q$#WZ%zymeB`W@sOEi6PcZs2>89QB%_&Ymd{{ed*RCNZ$?c|_2OloSp8rk%dF${W zWU${N`~xQ1*IKt;Jl!0ia6Qn9V-eRo&TUL zd>GM=j`IIgbvWlyn&&^GG8oZo+S1_UIsV*xq{IT~3LvjvXtVF}7}0;yb|iv{6?yqJ z>oe_5caX=gQ*c5onVGB>d90UE`49b%W!0Efq_{C%7h>A@!pDcdL_f4_m^dw<_KxKvdk>_RJp7ieVw=>D zf~B^7DualEJ5_y7vjWPGTcxFC8t;H>ni!oCyo=OmP+hHOX9PM2&P6twFL|6Wwcef! zP~`=VE~~CC%J22ydT7GF2l+0!j*I4Vw1&#fNFfCvr~Ts@jd2EI@BSZ;A{We?^8u-eHwjNWDoKw^?B-C{Ll#`aK;9* z9&L;O$sj~nE0=7Iq9FqO!;K#1mHB-*ofV+env9F4&b@xy6189Oc@C0@>tkr{;)fz4 zv4pD9H)cHFMDcl@n;eRBAXzhfyGwu>+NN-Y0YF+9VJFtvZcaIwy@ljM|HA<9c12%d zX&SJpv;DWJ8!)%B8+448xz4oK`g(Zu=H=vEG{ihz6TgB+0pcL5s+f)LMKCr=f1p*H zeT)B2bO^J1wN50|Vide`17k`Cw^P$uZK^HvC?f~qSVLXmG5OOp_*7735M-*>eqY^A z6FmG_s`ifv{r)!{KcLcwK%NGe6Ky4JXK6sO1+pCruMmwg^v;SR0m^dLRS2U1sA#uQ zvs@gK_Z6n&N)G%3x514LeESwrMuVII27yZvWv=}RmOL(bH$U*bAGp0Q8No^A4A}eWF1ZBlDkr>@aKRWUeEn|nYTVkFjZ=?aPX1r;80-OCDQ}1rQF?A$ zaiwqW;8woHDTs!f6I=6d_%I$n6$C9QF20%63oADT+FZ=BU#q7(Moj5J+d{)EASda3 z_daFlLT_xtN7%yzeW7QHuRx$s0ho-Ip-QwmToN?t%3?)|A(UctnfgAdl(_anA#TD# zqjlH=kL4^3em}2zOL9BcLwyn4M_N&IxW!=&9pCdP+qqsVf3===YIi5(4Itukk#beq zXV+_MHTys16+;(+p761IE4wo=61+YQ!ZE*J+yJU@Pni3!U&lBU-tJ+3Yu0)k;bN;H zqd_Mw=2jW0^0){>NC}kw)6S?z$o)9%_RNs?@Il1$Q$QV26AkAyB%MZ|Gs)^Uw-uxZ zipbR`!zTdRc{_ZW=d#3%Z?on>rSgUYH9gqsVlGaQA~EY?e0|A)qG$wnRA$c5m!*Q_tt4lw}Ie2mH{D_a-g5YGKdJX~6OB z%g75t<)~QOJJ1e-IJK^JAz0hI&U`g5hBu+^=R2@Hx)EKvu(oyWiXBul17BcDFMn4j#`{OKR66H zyNdEPvzI({G82lndCtfnzkd}F`=XL$et*F2fLk1ol8;wBZ6`O^@%_vo1&O;~i zQGIyy*;QYsBhT1A>lXD`AEO5nYA;GmILzlSi%J=O%@yMYp6oW zNb>shu)TtRx1}I2<6fiHz25%$N$4Vs{|(LJWgvPWHy-<^zc~nc^n2uBhgDToWjzYE z2zMT&zH#z9yHUP_zI%#(o%|2}*Bj?GE|}!u=l7%L$={9jqQfa`lD(ioGoBNeM&vP^ z0$|4885$5aM%GBcjs8CFpKHbqRM}8qOqXqyX4K?*D8wK}-*?%f0ZB`?7Lq3brjeVY zh-LrB@`04cV2sfyd-Yx-^#-FtAPM~)LiZ&~9S ze%I3d7nrQcm#KCXh~3)0Z&y_P=?*v!w^ay~FzUf$cX$#)=FYr_8w(IToU7*A)@Spd zqB~OARvX!TcTZ{jSMRAt?%lJTFliwIoIZBM^%rkq*D)3-H5Conw_cIOMo5wQJqz zhk=aB_p;2puEJb23SvUH_{YENq7Cr1i^&I5`rV0?GrtgeW9WYwqs9xth3UwB>($uO zn?H~I#WQc<`9#oPXNE>*hqoO@!oazRN3OcEp7;MFM3)92j^DO_$Z%Fw6y;5xMTJ-i zp`NJZK$6&h$Jr^$1ZK@>(rU%8a9OzmUOVq+(_=;^5otb<bZq-VX23zBV3<|*`wkwFO^$aUt2G6T$APY=@jDPdw=HG9N> zmndB?H91lQqw`gdAm6|_kb8r@eXWNzqX%L40&b@`qGxLFXw?&%5vKtYap$ztMK_I^d-gZ9STPr#8cWrQ05 zYL+r+qUq9lv<8?U(*k$-WA%t`!+u%tby6x$2JznWS-RfaJD8^!-KpptAsXg4aWHwC zj&{{Q5Ee#uxTAy8-=pd}5yWsQ++WFjSSBGO6c4^lNy9o&?sQ)Dp_e^>$05MMCgf?D z(p8~aWj+O^K!g!ieqQhr_azo$bUnoCwGkfJie}7p=5a~l(bvNtiKIAQunyenPry>z z@;GFDuPomc5xTCunsBnqBTPql2@X;L5KuJ|)>e2YE^7ZhkXEw=gg|1lJ^ zBdSiawxK&br;q^a1?jJLzyXx>zL@Bnvp;7d8r*?7BX)j|^Gi|qrPhnrH*-SPBP zK2M$U1448T3%0Ouf;@F&)w*zJ4~3xBxpUmus_M_1s_9Dr4q(@PxkYp_aIn`S#>E{k zqiuBslNzV0rjX4pR;rqy613eUA%#QoF!(PN%@&T$ko( zj(BQm86Fy#bOp*yccAy%vHlz}-$DlktRpd)m32W%P~g~3T~RD(@vewja~b0K)>d$K zf+$bwjHui4YMhE7m(jSBQM`X7tkkSmQEBYSs{8I$woo#P-)b zj>xysa8-3E_c72KDZyR|5-@T+)$86zzlZt_fn~Upr4UMwlppNPX)#*u}AB zFiqsvWSb-@TYZsh^Kp|d7zHGF>Fo^T^NXM!gI{A#J0Ig9{BfklBf^lL@uRV3UZXff zO9RB=@Cp5`ujP2!kCv7%8WQZG096##!@PBo`hlY zKT5Dj+%*_G{8Z+95h{E>4dBRU~7oeB2APsz|Scf+CF`SQbquld^}vx`HX(C8Vqb5GXF-k zl!Qn#05e?QaMncQ)p`yH;ZoohaWxv{ytQyE7R0i(al8di55{|7f&|e?D6oYmKaabe zbEYok0T}7@B`Fx*p723PN0{R-@!7Hm8!I0!!JJ6~7+sgd`-ZY6eoVgsZzls>eAxsv zjB9i7r=V@HO&0LXA}S-+Rs*$v(Vfi6r{llW_cH@8M0eiNI`FfyNLFAMGmU6af4u)` z0kQ}L2FmY9p+A8kwolqCs(*sBF(~DBBxgX3WSFn4HE>A-$WNJ(Cov&`@uM$hnjw?J zinY57dHls^y?d3j{JAe1Ha;n}Lz_tILG;EheBSy~A)( zJ#uBdA>0rpSAvVYy6>9vtDH$N`}P_E47<_|!0C?Ben=JiUm@Zh5gf*)eLvX9l5zzi z^0*%mKzk^K`b;(*(S4?A31njY?>F;g*>$k~Zc2RZ~ zV*#eGwxU_=@UhBn6qtY#DSCw>_tQ{KXtf4;mezOy5x*tWQgg^Vg|R@xiEr6{|?9>L0K9vDl8;bFgW!kq`z;B^iO|=R zG-9P&?M|f#Wl&9MAmEOgT8;rmTIs{wlY93;I&U;0AhHLlj956)X`%^)+C+wiDs48e z*h5xv4sfcxWqW%;PW7@?;VkLp$o^t`xyM1vb}4qfX4&;bjpst?YuC z(R82VLiIvJEs|GEbSvS+D@687HVYRt2=#`Lx3u(aypgQFBXm0t+#%I#bNXe*Kr<0F zgWWERbX`7})-O9+7WeN4t5@~ZjsWe&vu@L9`XbYuZ|wQ8U(&afLG1joy1gm3e2l+z z?PVri7+K@Ezs?yjbs(X21lK>ld=eP@ z2*pEIZ)8Mti}FuFwL(K%*>}2+)>+m2c}O;k@L7a-z>r1n*UC^(v>Sz{qo`2I=^TPE z%V7BOZtk`){l;jV$A+Vp=b`J-FYxOWY6XgF@~QPY8)7SG8raDefxJwOvxN<0R>)4G zn*WPk$5W;kJno#%G$L0iIJzCP<;@3`nIb8{khi9`uCV1AjzSK_ghIW*m=?Tg48J7} zxO=NJ5qRlPNphUqw2%Y(JQ6^i|10n}od`X;7N=@_>T}j(Fw}Bl z-iU(R73dxcJ#8;%^)>JI9yOwUOVvnZ+$i?!>;K7UpG~**E^6}eGW3cKyz>n7OSGDx z{D$hHpHLCY3U5|`bj%P1%&_sQsJ43` zWujOrIWO%sY144=Zw9=r;H)H)ZxlW2D4ySf$k8K?m%U;xquHkueDZAxp*+e>ZKC8* zk68A1tPWBnP*+|mk+wqfzHXVK5q=9H{`4AnT-C}4*{$zPrOt;AjwXIPO^5fdJ@7G|;NhzkYI0%vH-3(on_FjI4Jdw%g;dOJu{T;<4qWPT0W zx(%#9|0heHGYEvA47qKi1D+U5z?x*SW3lSTu*-g{RA|X>w0}9G_h>$O z_qzmawk)!4g^BG%pRDUBMi0AZ)4pE4b6HReC_(FJuHtPT+4&dtZ#-hk&dK>0L0066 z_#8~iOumzjD}#=h-#;=e{DyX3iV@uPquUMz#Es(okD*H7C?8#khG4Fnv$oDuJBwCX*4BZJ<{FxX z1s=-9CSSGmZrS-Vz@I2j%k*ZWE)c1E&IXzeoXC|U``;b8{Z{V?y86#Ao0rdcGB6(v zIPDwJL7Yu?=pMZD52`-%G$k{E>y(Z2{rlR&40T0zy_!PEdIkiQ(E%A?dKg_mFbvOF zAHJE0jSw2-Qc!Ztr7qsN@bfa7ngp2@AidQi()mc)7#Pt70E%Vh z)+dVQ$;lBT^n(AEw|27X&%9uKG-sfrS18kXTnX#Q3w$!AH8!uo&TI2`k!F{PGuYue ze|mQ0-Gf5XnQY5bJP$T|>!`uUhX6(f>9(Lmr^W&Tg_pK zg*ceS7)_6Qhx{2s7NUZV{7J6QsuE_TiNNt&ZXbj-ZsUA2L}^EVfG)+w#D1_eCq~L zcH*7o!@ev={*8wDBip}5+4ow@RN!xuMp9jVa z^=aZ6mw!(`exm-EswK(XJRg_MFeS|I+TUXq6=>mRhFXbIRyzOU49SzKN!^X&gp4BY zq&!XDZ%7VrIXbz*n)+I6r5?KMe*(#fytqHS?1g;^U((3C1U1z-dacRF{l>W3CuiAi z_=tbmweEA3{MQPSpw-T=Sg)j5yj)lo6ax9DHiB2td=*g3w!F>yoZ<7f{PaL1XvqqO z_HhP$Ze04Y*+xSYK7L686waPxd@IMZtIU^LR?51q8+SWbAAe{MI!`z7rpKZTS6QNFiE&$-cx;(I&zYx3{yUoFDVT6zDfNx?k$ z>+dH&`C6#2G{RN&q#>d<>Y!-Ycc*%HpnB@*ha05is+nEm>ithy@ehVqzkrf|RoQ#X zp6R%`x%u;k0Wj_p*ir8lIK{z&3DGm#4PIvN$r}7i5{HrReKGS!%_TAnP(wjE8sT7O z?VC4mCQ|Z_ym@F(iYd6Ksz9h&)mMa(jh!bev=1$w%zJJZuRDbs!S#~W7Z06|hFBXX z>PX$&j13RIK3W_NFwI)_Vp37hA9=iyAmS|B;|)Jy(k1?k;(FL z)57>^{d``vK*<>}Z}e}B%qdbe6ORH&q~L@xz>8-cJC9yXh+AXqMCmPF(l_1)9_DG5 z=IZNQAB}c(YZW3eRUhW!qda-&PYNvzKDN$^q>}PR;bE?qTd|qFM=z7Te)t~xAH7Ri zTwA!^hl0lCEuDT5m}SsZxo>o(g`qdEm0+Z8>A zUYnFq81*c41@Fl4)DNl>lstiUUsbmyC;xW5dNe(V0@q(JJa4vHYD%|I zRHkG=^?V1pZ{xm*xk<3!f0(~ff0|FIv}vO_-E!Ww2{H)cU;j-;Ajs@(Rxe9^nfG{S zhxSiC7q&PEZ_rn5IN$uSEHakq^do~s8tN;0lyKCxUHS>T&gDM`6vv0X{`Jgtdy5fO zc`@9p52|Op0fh8i8@QEn;E#}f8=#N)_M`FIVEgy)%D`l~eRpx!MZ`Lc^I4vLF0^gm z^~Q721u3MP@2%@+f4N%R{e}iy!D{q(A!-;QKMzEVI7~g>ARCj6R)5qOM&F$r?k#!e zKM}c}m&4_sF`Txzw4o)FsJ5sngi7?=c{SgZKNg%C+lSGqqpRMAJDSKO`rEZHz}xt^ z)6b?@CBeYOMJ2)-8m+4R)S4wR@_3N1VPj}<*3D2Q#2jUC)k5`lI58C7pXy^774j*7 zmM${#+d2)?2h4PyVFxMTnBO|(@K11$-2e-ba5`V`Hv(K7ZEAAFK}%(b`C_nfcyjsh z*Afg0n~7pM9F@x5a>^^mx_t7l@gGa+{88zy;+N|`6|t6bXD>Txkpw4&4Sb2AWR01P9BLtM2upDMsNhfj;pnq>NmIPp6> z`s1xQYRR}%oa3c@0oqVFNDoj(KPB-RQOG}r(@REVpF!#VhVV$&gX<(%W{&#ZIm0qdG|M&2uW0i@t3-9wVs$uln*EH2*IBE`YVZlnzM(umP$sT~6m10o`- zJ#41~4*bhwUKj!QA#>MR5PuzZW5lMWDz>u1uLQ+VJh8h{pH@&BHcqh2$}jys-rf-x z=Z+s-AoDvrU+Y+o;X1k_#O<)8vUxbQUFyGLR=xCTx;Cz))Y!7xrG0(gjE(6>Ik97T z47(HNeQ(jWJ(gKTRAaw2Be`Ox%ut&z%x^3>r@awqyyRFe`tpH}b`sSALTpM-&2}o) zM#Csmlm@6tR54o~z$0QHyX!X0U>H46qOS zG7>raWKlV*D8g`(9Z0?dVct|GwGy)Ta5GnI+%&#WcK&|xQ{R&Fl+#rQ`r)~1ZjNY}bHS|?1j@d}$ zHdq-h@%L?y@*aDQb*o$3kM*n0xQxFpn3f@M>;yk*K@$++R5_t zohoJ$Hp?}dX>ef*R5lk>?@Wh)I3;k<+@=utV8L=I#tTKXeRlSHU?i4A1JN=2@3fLd zxXZ+EN9f37_4nrjqJOa;JWpt`l2?m^QJLn4nZ|pKdj?ti+Y#m>y3({R8-r=AF^0~G zN)oapn6~5+cHQal;z+OR`ebjpwdc`V$p%`o%JJ}dmhZ=+wLGQ>=dsnQMLB9ctd_wE z@(Z8USaaVM8RM$jxOf2yu?durL)+#6{8<_iua1|{Ct>c>X8PhmBsteW=?h0`crk~q z;4>$ieuO!gdJ=u>zo{n?MW`;Hb+>I^ah`+1KF8AOoQT_IR91jJ>ZXI;(caX}Pv!Re zO%|wG?OwaInJ`L6@t+gur#cLWtJ_`lM>3|B2WiQIuRB?>rx(n|uLo*iJFTjxz8=PH z>^fyzS?7-Xnt=F*om#FC){B76=R_Vy1B@L`l!WXfemWb03l{10P>=#kDfMXyz#_dXo!=MkQB_&OIQm+F;>G>+F%Yhkoxv#G z%n0(&aru&%CqvSM6xouWK)O-zd3^edt~4|HpZ3fA{Ti=R78Y zp96$W;~Dtev9+CvD2gVN&2XuUmLt)$z~Q95fkq%;fqML8H89!P*}!pCAU!~z?LgL~ zwYYiR__$IZ7(r|SyERMNJRLO2^DGX$cpcxnswmY~_7*z`nWW_7nI^8#ttrK zZ+tGu(v7&on&QPGq&OO!RT+qoRXyZXJasTgljf7oefFzdG28ynbVmP$n73!0`98~O zA5R9-Vd?9aFQZTm=Mu3awgcDFaY9V5TD++vhp?{5`mKQM8&(YulsP&+JoYj^1~PL# zzad7W!%o}Dfhn|A2%>K?&ly_r_YSz*gc|18tND>?pKQkJ~s9*N!_}L76whz2aD!017bz`T**sL0B)OH#4KOoz|y>6{F z>%ffV?=`Ytap=%Jk9zdeV}=@x$3~k90VBYzWYXIBqyN8SVAy=x{j)p?L|>P3ZWYdJ z5Y4z3nU>GSE%bkLJav0__+ISB^le-LE5!K(AkJ!wUUG3i>C1!&KX>+dbzDyS8J@#j z>CEp>ezH9!=Y}M%b9!ZF6E}blYsT2SYC~=LP)zaEJZ~k9e9+PZO?gfqIjdYH16H}83P=4jeuP-5c|_w#t>4ykZlvU1qVQ8{gy zEk<$GN*qcEayRk%%=ST(86(k@?xwNv1h#o;4i0i?K4qlIVPbKg3MM=gG%;WB$pJ@g zGaxIkn6*z>r8tj+RJs$bLi;uAos0!cCh_?Qmb(8++H?=xbdt1b5-#GZ?}2F_*G}bj z7Hqs(b;LW|x&Bp~GxA#f_Q_El>3V&v&!?GP{loPU(2+W&)=2eMEj+z1b0VB?dup=!lR3N)J{VLe z3*=}0+-{~}!9O@oYG38DwC_Bn&3NLK1-atB6l)Ft<@l?;gFuB<$LbAn4v3K&-Ank9 z=k$}ypT54pi_N5J?-gUlw1vURee+eNgXjcg*oe_y<&6fL8pD|HR#Aq=%ig|@-R4T2 zlrvUOK5UBw!?EkATqB`?%0bvO7^DN5O3rMSMBTrCUxcY1{xO2&LrjF#0*s%rSsuUX z&bcADmR;SGvKmaRT7(aQbP^t{4Oc88;K|tU;?p$o;Xj2@3ugvbwf-kd34?_D zZaf1WZ_@tnVc9D?MnT+;V#FdKa@WWM z)*%%df?bxRrbP!X8J{9X{lwAN-RR;c=0jq(tV&E?p|E!IS)*ryLK%Wf(h5G6Dno3v zdf&@5<`fvP z`wR#)`x^fs*|+$fZHBQFm87)T3Drv^yJV0^){-UL*vY={d~fg1IltdI{n0s{(>%}fe%_DedR&j| zIpm5pt+;j4g&YIG0R2~v6UQ!Yg@&qJMqXO^F{#zJ5;S;~@mzNC zmz&%!?tZ0=oG>Qf54$lGBI&qI*LP7J>isNx(%Ok)2m7le$gTzSXn`ADw>9~2=BV$n z*GFqdrN4jR5gJq99Mf8mWw{%5?0Zu5$WSFrq2Z9iW*R1`Am<2LXUiXek!gl) zG?8{Mz+gu1{rOWbTJo=NB=9)8NUI>Dpa!h=u6U!AJkmz}wOL4LZYI~E!lIY<&%4FK zM&|Z0GpmwJ?#d%CNx*ZawjWBPC%ZH$RNn^o&}-XKU`z}|J0a{|h|6rr`VFo&?#WEd z;)s3P`kYgvi&>E!*{@F?qW6sf5v@ zPi!N{A(Ux)TkKH0qDO8cSj1TE6mTN;w;_Q$k(eT8p#ZS{PI_{hTK z$MTZp={qh>B**s^Zp3xp&CuYVq2sIF#_h%1tq+jT53!>EWA`0<5HW^h!zD3Epz|hX z9BXLO^OweE00-{lqTU!*N_(;F*U%icV`hvTXR7cP7EgwDAM{l#CaARMt8_a*I;Lc& za>wt#g}nHl@5|qR%9cK~gP)6rH-X7C1R}12j0CFNr$1r4z!F3r91I3Uz>tf8*2kg& zxAkTFaZYsk%E|@mM-Oo}AW`+0I?okRc-rMnF~=qf)b>lyE(BdZqG(+#2f&X1Ib}RU zhtU%556a26vl6JU!Juu+m1R{%(cq85IFH8-#621_(LGT-NMit!GojD1Jf6u ztlmAN?-DRkTZN3>bZ(mS=-xGHJ3r?YzF1QFwFL@Ez_Y~Cm|-J82*z861WXW`?E^VllAt1$x4Ytd2uF!Uuj(8TkmuEk zyP0>QDhYDoD9F*SMVxFg5p4g!3Je&>g4Mk}Foy?h9N^X4o>6%g;eJwcc;y6D`WrRn z;O0tum>6PH-K$+!yzCG=aS3*qvKzo|oH}ICoj2w5x)6n;oSWQ|->XcSw53w(R$hg! z$lp)Fy%is>3f-Lnf4kZ2n1?xzB5Spry%wU?J08wBXJQ zp#4Vw%f9R#;fe!#I=WYLaQEBOf(^`ZL4{HYlfSHKLANu;C_1ScpC93Lj-(j@btdFm zO!X%2+JQW9@7r_V&7`qC4B=syOFDAZJzxQ6W&2HjXywaa)=0v`C;o!-9_ON&Aqw@F zQ!3m|D9mJQa!kZ0Fd}8ax^jWyq-%@{{APgv7z_MIM82vzV3U~PtLl?>^b)1wdbyjf zM)pfPz^IQ5+U2WPQx-}-&v6PWc@^}!BhkkW@qvP`bFSxOoNFOOlgPRHg{Tu-ZK3Zf zI;gtU|AkpnwS@Nyxplp9lFp1j2c~=ax)6xVZ+E3@$w7eUbxOPkkZ@+x!kGTYADs^@ z9tT>=e<#-NmU!7SA1Z0yrJOQhq#dg+I6F;BD;{RL1&I&2Gm=*?5) zgM0s64d5d|93b0kBb=3mLv8U|(hI>mmEaKmP`!pRmTQ5`*!(Qw2@17m;LiR~_3Uo- zX3)&1?epqP&!|9EUqSu-+vhT%Ttx#Hp^IQz?ZXO+-Ujn_hoEGW>$u*gC6h2BUmn~E zkJHa4f4dqvYj!nl8R^8St(xILT0pU3Paq=A*?NXi*B~!pyqjxVABtEZY|)mhs3Qaw zwz><_*huG;!x9pt^mSJ?fLxod`q%@U{Srz+GGy*&>t4tG9lBd+rz+Dk=qs4$()LXL zWWCpJ)Jq_BHwo5;lz?H3eQN2HbB`E3c%JG#r52oK7_4yP7$`AbMO(Yu{zj42tQ3Z- z8wAP<1`b<*X>u6I!^0d9Y#0eab<{(D-&oaOvmX*PDiU(xrpM(5Ed2SW@UM7%#6M)? z4u=C?P|Xa{6ZQCyzwiafX%(a{;RZ{>TG1(_7zio=oHsD?3#Gx3HJY4GrH05+ zHbU!4%gh4y4O6QDrgmbB8+*T8P|WU2=$6K9Yh91C*uBN&B^?sr%^4pFdqgr(KW6;oFVoo7#?Jir@!-k5I1h zbq62J{bQXSj=x3)QTohdN&f)y(>0KGmZzX_xpByrZzR}x#?PbQ!v$g}jwv`+cc6pZ7&r36c zzVdY}962UyDb|a-)d&9b;h`gHc7N>j4SFG{Uk&08n?Q;3;Kz}Em;~Q4;yc-iQX*(n z2F5g@cwo_JeF`u?k8@&mjOKuQutE(Gw|2e#XQ&+FAV(GTW)UOdwRpkc=!M)z3t7$O z)Zm$GOB!Yn1$KPT8z6(ENH|I4fP#-~>Bx0)y9n>+b^*JxbzjB#cdEcjCoB`el@gL$ z8jbI+lUx-vkle)uy%l%=wT?hBP#DCqGNiFmg7-D=(eLbs8_Am{9Z5jf`4E*%hUp$h zBkqj#ebf56X&BX1LX}SXAHm!sL}RI}m{T8Hpib3N+G)JDZNy{C^vkUnNA?{BdtAn_ zx95PQt7Gtr@lZFLR{SDJ3!&p{nk7?#1z!gOx#`aPMhorqr(f@UIM7PHy*-Y@ZhyW2 zeYaoS$B}lOm`EX%5_wUKZ^PaJv5#)B0Qm<^7O-@3!sL)rbu{0jc&zdWOp&b}xUn`VJ$YIQfCf#3(NJ(=O*K=)~koIY|I%(^q-SY#23@GGlG|Z< zQIvNRoXT+!i}Z9V|DtBMwi139g3TMjN4n~oT3R@n8$gO}h5{Cn19??lcBIaw?QV+R zVX>|z@4Q`=Bm4+<;@GIVVa$%Oaq4nt4bkJbV-@vJ?u9httRW*y0Wei=)=ql z=cf`SF!pySlIDT0{!4hL=K-%PL$HC5lqU%$nyG37_7}tzfoCSrEc#SfXs)_=cy~%y zMuzzR$;edf7~>lMpx)>@v>6q*N4PE%(+L_S3#WzUppchA8F?>4Y$@l?>E!pr!mqQk zHEnm@6wjZYsPYU=+!@n4$P<~2!Wl}Yr+4o?Ii?*Oe-2|NLn4Glvf9r%s7|Xz7IX)m zdBE_fQ?q4grbjqvQ=cC49m1CptDq&m|4IrEV3428@I-lg4zQ8N%j7OYb|$78q5k_% zE7UK#`!x|`-k<(?Z@KQKv&jyxv`gY65uo|a5eA`mEH+2vS2=5iRCgYPW5?EVaGGEU zJv6!g^OOpjZ?OvT)C^pKv)E#dV-I2WSAr(rokd;zo+}4EcN-e~ohP)phS`CMdLVebFz#SUp#VvZ(eX&>|)Q?coAALf@; zj-H+ypN?pa{%WR{;3-!ClAEC72i#~F`cs#9t3j>aFPTeOxP;YO83RCQ$SdexwurEH zwO6g#!=2R4d9BH>AKE4dPk-?)op!aan18*XzRNaN^FyUM15AOx)>&)n`$x*$C}7nwV8!ll^;6 zpvQt7A_@hB?j8~)^R3mVy_$`XD4~d}GPAf{o}rWRveowaUxhjAmTP6?0j9Q_sJRe% zBTgwYB_sMT8Y~=U1F@Ku>I2;OJIr@OEvv%X!s>4LVXvLNn>ljjHZ-%>{YCv!f4^OB z_smsJBYd1KJqczLU==LuPx0j#YlT>y)X;&x zX9uXp0|h?}Lw~w-I|O?Xrn}dCwQ4&v5|g6o`@YSeBQ<#ON9ca<*ZgV!s*umayN3B^ zU%Ds2O<&<1^s$@%2UJGQHI8Sf?~}lh_XcT~5zhHN!Lpe1W#84?P!02sMD^^yHfKuy z^yyAu(YLrs;yi~gW9#DYoYU3aALoW-V!=8!yc6|~-_P-;r`PsY*{ni=8*6VqfTdEWFb=bL`qN+eDn~EzPBmz4&T4tr z{rc&XKN8G~s>NF#)Oi`QNh@_;{X#WWz4fyGK+Nl9JbL}tNNl@`)WO}+9a#q*)UA)%|AQ4 zaS@*_XLic@jZ+2ZY<5o0YK3ovo;!HJUe{l}jO?_D@VXy%cGiyytxoj|8-?D3jb4*E z0Be>vot**Kvf{F}H5xbxu?WVFqS^oSyuxCbqZIz+=Swnm5*fUyOT9CTA|zYfz_NA5W1!3TO_qYCW+XXx?2 z>O_34-R@iXJPMPC3_t+VHIWxm7W!q;bs-}l!O0fDY+hfTQ~oQM)J$IxlFDKH*%v*c z$Hz2Zp9_nuu?Txs6YL={r8j5{(TlNs>+FKVCIU4OCs5xhzA^Irje7Co1v#_BbXXpW zzn(Auf3ALy#4r4Ru73C}iFX(|z5^wGLdsA1B9-EoB}?gvKqfwk0}uee6@DFX#R0L# zT2N)OTAkVZwXOH5jgxy_x#?xyTFZVWTU4@U`@&l0gyPtyvaV1KTJPM65|i5VUp_AV zsbij^1yT&txGjnd*&3g`3wH1={^NQ)hYrL-?#Y2A<)O@oO~tKzwr%Cd-=rL_8&h4N z1qE-cB@u-wS zL~FI|#VNbLo`0t!jAu6A+?rlJm2e!n-2r4jl17ZFx2Qh1PM+i5w9%$$6X_}sMYXU0 z5V%}&;_|P{L-)I`y16B1X5RU&sW-X2>)^cbc|&v3{YRniptIJ(iY|<(pn5XNSRYOB zefat{AGvYDESD&Iy)XY;;6z4Q2lZ{=znF5j)OjUgW8}Kg6U{@$$8yu`qWe|-U=V!I)z^B8+IWd^ zkiukyiPf0$Zhop?PwwHk!mebGA9cgi;|)T7At9b zf1k9!aQR(pcoLRGOitk<>nGR5)rc`SaQ{n-zz=ekLXKmERqskVL>hx)j}G0yYSgPUFWhHAM4fXCSEIkgRsCZ=@gq|^jUC)$e=dVLulA-hDy?VJEtEBuI`@BH*$6{i%PN6{p-RlI| zHIf|RS8lKs@h#GaWt030`rHL4=^y08&BJuQri5FaTvI%Oo#F|eVV{t*uk2)-uvwLz zc>OQ8KHbs9jVE3h3yfo+-XQ5~YTnl48Np_A0-xeOV@!Li6y_mHdd9oxbj><7;}jC$ z$r0r+e2RM9dEcEE)LEIE-|&R2lmaEI5C`$B?A(OM-wha3ji`r zX<3_usrvTyX=-$Rnw@WT^&T3oF(84Ex$5`=E`vA-KwB6;( zg@p&kjdz(Ga0fpmXr1h6{;@15+4b@H3j%bv2_B*LJNB-hu3R8ok&IRlcwUj2x-hdb zl z6y{!r3w~kScr}9KVki{K!>eff@Yj?v`leb#ZfxS$GBnAO3!#p@jfP)FNFnP8L{< zEcPTWlMdqf6eXEW-%DajxU3!Nec0wqkic zbdBX6oC8V1cUuq-$})bVe5$C1XN&r-V(2 z^OmV8a!D6WUF|j8_qVhW!tyzMX{G^=Z*y07-uKFoU9m&PrthW^!*`)9urpNGOi5Fz zplk~1$VsB_-Mc;9y}Sn{4!Vu_WrV41RND&SV1^mOm#WDaQcogcXq?}NQ5}C8eS2?1 zhR8$`2t&UENR;6)TIY!fZR(TIaYw1=PRCgjz%q_~hrO$pgBeK2$?O3hg>GP0YZv?B1oYXS~9hz9}kZekZJpDL^i@ zx0`<9EQe-hX8QeL;(+4hrrf-&p3P)MP&1NY^DT45`V;kk>z|0m(x3t=Sgp(80ZI-Z z;ELG;1Bmj1mMJ6PRv1JwfkYV{50Z`e_?CMpm7HM^@1UKosv(-i(G%SAo#nm?`=Vgh zghL8(9NmWkB#RjTKGExo?dj+IgkHg{aatjEJ13~IFM=<(@HcWC?ML6!flgvfFB?Ry zQ?2B7b^iUCysi)Xa29UC1ipC~5=#E}*a>!Uo_#U!&&qsb;1`QTh@@hNgQ(>}P{Qes zG|V3kWs7G5Q~bF+t4uzScrU>?mbk-I#A|;pGZ>P|{OQqCnsufQ{X~~ILxPjWP(g<= z-9fS)H@_|*gSrjv%kom}T<&n z?62!hj!;DD^U6+?S_G^JlU59oMO@D3Gg^;%q3y9*9}PPq9bt8>U6TUz&t6WYE0~)i z^$L<{VI(v`$jMR4hZ#c_d`!-RluM3j(vR+$Q&r4jiDv(D>&VB*XOTe!v$0m8XPyR< zh(hGl*n1v4OG3OXB$3{Fn^63~^{u3-0SH|qPCY306!m-NY9wN21U(w+r}dpXql+V( z<6G~(G~1$KT*m%togKAZoN-?`BP2?|K6UK`PGhR%mH?jSe(K$VdP~S9vS7lSjiZul zQib{Q)#5`Y+>*tz!^sERbIT(K%Ss0E=PxKqo=|ju_Ws)bBi#wZ?QGIh%pdLH7oaQf|Aw>n&K`fts<4&zDqzp1H$T1YJuwT)jTXtTh7 zbjFJ%&2y4dkLNgvltWZ`(cY$ex2Fpl4L=yw(faanb~1yjTZ|1vmNTS2O7m4NGJ1*k z+FD!poobPK+OZeXib*N0_5r~`t03Bu=fiydN^sXi)zqFLy1p^*hXprt=U%cv)xTzO zf-^}-NIVB8md#0*qD;g05%Or2k&NErX=lGFy;=$juni<|jPW7El$Wk?-c2*zWHq}| z_*P={UdNBiYG}gsXT(1GyITZWr~GqtRd`FasrOZ5*g^P^^c8){Z<#qJ;~M)*`3Zyn z3i9PcS%S{a0Yty5L!CTqL6X`jON0-x3O_1dFpJ3BikADgmsaQxi^OOIs; zetv!nE2~8L6h1rHZ8689x^l#05slX@VN844VX=!fK8Nv*86J`-fSQGuAr`&dW_?t8_G>4n4|HnYXTNh1OGfJ=gJI=Jxa`nehpZ#NxYHrH|@(4nh{cQ**3-hsn zsw_B{q0?Cp#FhP>D=WOC{Ma#U?d!L1BQnu4K;b-g(~RbV1NH)RS;`OiVeN0DJ40#X zqpw0wV3?Bd3_YH|B7692crLXNQVyk$Z4&>jVW9q9Jzw$f6mDZ-FV0*PhOERBTN?lQ zE%H7W+4Tvi>)tYL=(L^GSr|7&wi&$kAwy%zADdUB>SOKt6POWD77zQoter|;tYf#> z(+tx}%sj+tI`Q!&7sl%9T|4o>9HN`s2fuQdpO|BSW*62F6uCr|d-U>+;EAEg4|89x zKAlzeI!0aQXUezSt*z9=rzb*m!)EPB960b{GyPjV3l2@ojC&s?Zt!q=Pd+NRs!XOL zgq3u56wZ2sW%JJYAJUSF;_29qG{M~7dmVkMv`z)=naw@lzpGQ+xwl?Qm|j+J!jQr* zUcC4h4HI;NtczZRTw@;4Cu^KK6=p`mo|`(yGAQipu4i0KD-W*6K$?$;(JYS4a5G$F$bw-`+Xsf@9XTv9uyNk+5zCxS_gda;a2oz% z?DST71WORpo2l=;{djD#`ra>Vf2qO>!Q1&x>Laoy!}xSTOwI!*1T8u5H$usat4kvR z3e4|4JevM0b;+sXl<3|=58UEMXz0>9EZxE(x$B*XxO5$R+Q=DM7%i@aWORj>tbdK7 zxffKmePeCkL?EQKFLYBc%YtR?VCdecthuyj^~@TwO{#$!XOfnCBnR>rrD9yNexyR_ z9JamtZeMVgpCjF2e0nA(Oa-)yZbh8<>lkBb8A4S}Z4I=Grwn(6%UGLF&e^PuUZCP< zhboyy3P`fx3TxAOVlUSh&I&5moI&oQ0*Pm)*)A^f0rQ7u)G@9UeI9_GCn z#?bEv1oTWYUr+MiTpUi)xf6$DbpH`DcqxwVdH&yDzLAxT(2Pq(@`Fcja&8`8YhTmd zMScBq-YbK9DCj zRp6VZn&zU{jxPaGZ|-YN4QafA3s`zlFG3u{1Eg(G1vHL5Oy|E#-YlD3sN4NizZ9gW zRe?aXxVWoipA;r_sw)A3CR`d{4g;wvioCw%Bbn{I4-&WGJA4%W3!L*Lr2C+BVRNt0 z21QJ_jPlWbO3t@+BZt5KLW$ufH-2}VA^I-r>~va;sh`^+syxPQs#AF+jIDF%>F1(O zH97N+YI-T;mhv3YnUa#^LjDW)c`|x!eUM`CFJACQ(DJaO@!l`uSx`{yU!>@ z#u374io8<`Z30R!^UJPq+7?WDvodZU=st8(S8l@el;KS!57PRVs9Q-e&JdX`uLkyT zC739if;}Z}*=&v%@!mlC`7bY)3l}bY`;CfKNCOCYgx3EI!|ui07$Rd-wmx)gV!k}^ z6L3IM>9P(DVp+wrcPD?kMv*3h$lKto{*aS3WoU8VGfX?|Z@ZDwP3bm{_6zgAPx!c% zyE07;$>PT~#h|*p@AXnM6o~q-a$7kFf1uA$un|}<2=wYoVE_CcWDefQOIIO}v8W^x z)#KX-UbcN~fACINm5 zzHDX)SZ9tA)QiqEjJf*z&sX%S5s0X+l&in*uxq}Ei962Z7lLE> zAB3lVa-$R-H1$kYOBd4)R888{J#yIb9~hTJ{a++sZm*I(Sn1+%aAj7hyL-SPi6x_@ z*z~w81yqo+3JxC}7kD9FtVJayO+b<`Qh^dj`j3F#yz^9o@fT$ovxt!3qyQaB+Pg^V z9mxBL4JNkUJK~0dX;>oq-LZfD!g*OVMJRf)F02-N5!EDnm9=*=xXe-Z2CH^=eDm6D z-}8eV%iJ58mZlf)WJs}K%rQa=ja}6DBWiO5^aW$%ziA}KX(UDw8+HO(h9u`e7D?fx z9g5gAza&->8>?1OnPDWWs#l*s>P<`cN`HAA{H%H-w@R=vn$QBDkMkV6t)v}64%(IB zG|UV$d$1MoXQk<bQi&QyGVuTUzm6-rgra=2uo!xOcFTAb@M2 zNg1E&$n`sB40wUjfRz3)e|L{#9r zXr2G^F4FT#zmA_FqX`D_+siz>;04?WzYumXq!wx>5`1b~GFUH1qTzF0}MV6x3KqzqPfoQS9pR{6<|} zTr5aZzsG%z8R-~42*4_K)l%ZR$3|JbmK4~>h=01A$9nrgJ?$}nZ>o3pdJX)tJh2)= z5ObW}B(Z>RpPf=UY`>Ym@HsuK=VOCYK<1Yf`-A@!VgEXdJVe`f{Fn)1X~hv?^y6GC zun>Dt&E@A@BSCIMW5u+0h$V&)<&p3-l05p`nR_a{X?DvGVdej!KY7+%8I%9Aqj}3; z?yv;@&kWJbkEe;TgdyAPc*$sku$$gUMO93Uuk)M6`J-g?1BVy%iLiAjjs118Y;=dF zg1Y*DRfeEWtH0FR$fL01u76(T75-;&YAznaa$dLQ&1OQ~Cg%D>{tk`%zO%&53mc|e zk#GV{tZsGu=knaE&&va!C+GZ5JN?d{=El=7@jCxHk1%m^k2um9**YVl5LF z07I!|Q#c`^-=dm0 z1~hEsG%`+tGJ@;V6)u?R=;*L+Q3q`l3vlsx6(VQdUb<=f9^ zk6SlrfQ;_N3h?v$%-f#~)oW{MGrUMS0gXQVfkxHbUKw`+-sp*|=MB08J7WMgC=Pj% zn8;^?Ru4HrIL^6w3;xv?VhrsZo!6~ux{b?ycoA=kuT`f8h$eIF*R;Geq)gJDp?frm zjk@JtH@pX~wT$rVYbX)G|E^EqEkvSkIax?tfxUSo-vh8%Q{{%|g>Q&)hfdSKnZDRU z!YFM55J#hwG3(kd8I(KB*JU`H9OX}myEdk{J<(T>Hw{aEcpOSrYL1X$Ei5W5oL{=> z#o8lcR>F=UzfR7Z2-n=9u{ud~HY+`dc^v1?z_^T8^So&RZPS%&+YqdvU?JbBB-qzr zIzT~ISBvtJPQFmUz(?qzL*zIb24lWz^6>MC&GKl=8uXKVW5M=#4n3almk$A&UbM5E zz`g^#lsL5hJ^53M7m2L@n>rF|;xC49=>7d!8r|IdAZU&G>6Q+m+#tB2KRIyUm#qJ} z<^=UMAu}KfOYwDfcCN_GtP`ozuYLNI>k&V!h?9s}3~T6QoHp zTo=kXy7{JB+GcncTOpn%UVS6-=)Q%rNo&rJQaAjf=9*PxxtZ?vTN2SyPn_&vA~ddb z_vr-Pb4K1@cnMh#C=jpTgClJnt0#}S5dOLX8}{2O zlrsrdS69dKky>7U_JT;e3qc__9L1SU;Mn{DclxAdmx8Z*I&Y-?ySl^8Dsfew$1=f0&} z50gSP@>5pA;*Jx2e~FtK(!~`N6w(MBV2D&Jg&!RqJq6xF%*4~DPkW>&1teuEU9;Or zq){%rF5p1>cC~<7Fy2CRgte~zby%pRrvI7C_?a`7Pq@hEuT`C-ZN2;&bXkxkC@oWx zh`z;d`sKE4CN7}Om{9J>3cbbe-Un&Gbg_MnOi4>MVYHE zYPnDPKLLVx?y?gxi=3GomPdlwrEiGjjDA8dJ@{bq>xdg!e`&LFe_S))u^$%G48ocs zS9p~@mHzW&y`V5}`IWtNuPx6xY;+jqjl?5ZZMg~j8fShNkoZ%y8ASCzFLS{5YGc-uDQ zTAv>k1`zz2mxG!r)Es|F#LvTaL&_IhckZi}=JD@1#t_wCD>R%WH*VWqx%_l#<+FGM>&FHV zdVRc?-m}fkzF2>uTKrrtN5|+YhK#<&;^%A7n-q!XpdyC;D-e^S0Za2LizY6mS&DivGJ}vQ9%JNe*cQ61Yh8@NQM#_1#E2)SCyYzTaD49jC=*Gl;fyR_ zoA{gcyH~U|NmWMTrp`B8e9XYVN>T7}w7t}e=q{aPkAi7+8bHWw46%;q-|KpM%Kt@K zgocLpYdX*lCx0J@xv@u&78Al7dFUra*{<_$Vvt@@gJ4zsevI~U%-AKqpgzh^?!{;5 z(O}llfP-|4^Lur!A1LcvVM|K-GcKIrOw5;A|00hY)m&{&p!!THRx7Tr&*sMXg>@#T zrX7Yt^#mb>mo2{@HcmEZPn>P?WzUl`sP?i(-x4!dD>38EHM=m-e**!vp-tiq&h&(#Qu89& zsFX)C#6{EyO{3rr>MCzc&E+TBh7PwBu1L(sTUD=U{oLaWd3}tO`K)Lh2dgvMq5T&j zi^zKF@Pg<8bXIt*YMwoN=J#kFsvO@ga;_cU<%Pyu(T#8v1&r11?Gx!7;Y@qx&o59R z&V9h!$t(pp7qt#}Nv8lgbt4O|HDmYxxxM*@_l-bEM<<&~x1G zTIr7lJ)DyADXW+lsOq&dTmB0N8Zz8OJpEo4^qsZ}L-Vm@GjiGWziX7Z`%!Y#*A4w^ z0toh!qM{y{2r2yBxpPYHAd-f!3&)DDPVU5!w0t3Q(9nyT1xOXquMY>{g{1SZZMlqb zbY#i(S)jYoQM|=kdf>|qjewEqzZ2zprQpRdU4G3oYBFc)YvaqG)!qA*b+3Sf>OYiB zU>bwLYB=||`^Kw7$HK{i(eruFWd@a1Thh2bW!`RMC9H8=ffYZgjsY$V8Q}b8l@QdW zC2tjklcU4!+pQv?vA`gkKLz|Fu8YwfLdSDBiN0P<=K_$L9__gz_p1k9NUA})r{yi9 zwqUV5_-|oSkYW`<;7xdDlwSeYW&Xqn^kgs^1ssxqp)2R++>;Q~!JX+R=v$bQBE$Ng zzMt+?VQVu=`I)T8W=H41w?qJgS`UvuUaXYXR^vxVQn-Y1Qo&BGIy6-rvMX6zpvn1f zjonP)B3+8JsVd#(+0C@h_f8mGhb6k;7zslJ9Fzz!$y*E;yd}LquoGJP-xo*)QV@g{ zX(Sodp-VhPwPmbcCS+YTv+WVI;KW~qh%&c0;Q*uwBw>;uj_qLNY1f0NK_kR5Om`KI zC^WB`(Bc7CN^-$tF)cR*e^Wt4c1G~h<6xR1L3ToZxny1G-I@EUYH!6a!9(?&^P^So zn1KX3=sdq3df0-VZEm$MoI_+m=_;Sj$KQ>140i|}Qs{iqN$3)flP-=GeM6I-LNPHZ z79w|B)6>&8!<7#UImmBRL8JpnQ3{OT4QnIu$p^7=w~6d;5ON4!ueK@XC(*@iE6e-EO~k$WDt#H-s?eBnHR-rj1Iq zU}o?mS$R-8>oKWjKUUz}A>`c{sp~pb2YyNCFwZ16PmY z#I5r%yNk1%(Pbc4@r~clqLnPX1rlD?DpOR4&v9@mzT_S_YG-@`tt}nqiHr7Au%g7F z%aH49vvFTN_`aUDKm^8ODQ*UT!VKwYttai`6gd}8hY`O5h3BfkvC{puzS;X4BD-DP z5uGQ|0zva}7Q#gs3#SSaJWXLb@;2054@@%b(~hQ9R}V3w0|~N-pfF3jW|B zzByPQQ&?m^(4p@kD^>2-@c6IW4Mw!&FEJvUWT(<%daBwn<%Pg(M(K>&e4uCR9g*$h zeW-u0t16qd8ZWW1RL-eB<+(O7)XPVBmHY1Ooi{PyIZ@b?6glcPOy_G~XLxw{Ed)D^ z#$GWEx1IsD+2&ct_Ov$M_K<#DlY6%=rea(9d`%kZzbZ9i*bn&9*(IABu?CA5QK027 z)Rb(>@9Py!_V{D?WT1<`%DIIZ#wH+U^z9Q$E4f>I@n?SEXC8$1{FkK{zHR3|63-GM zvUGdQbQ-XB%xuEV4^))_s{{T%6U;DG;l|Jh=Wl`_I2(?qtSv4sRJ@U2Au=uu9eqMVGefG!`N!ndHu}{Lbq7 zBu6y{pH~teH|AH;PHxz3NX&xo`%a^r2A|P_&126H3p^PfVqvqD_F-4 zYGd!B^yhoT2#N0|j8!Q4A!H8GJwFxC|9m&Po2FSzwj5AB<5>o&?#7I1I$ETsF3* z;TSGFjEIGNjG(_>tos4K#{^5zF*Bwz96R|K9}bGu=&u%-+q@l%MgRBBb8mVq2nvJ?KjS*Vr4zE95vwn z-#kNC!pr7*Zo}^Pxf)r{Mkz(nfq@F&3dso%!M;S|Dudj z)Q=>#M{yjrS=pT}AbA%D#Dht`t62JhQ<5}SDd$TR;9Pwa%L7B_SGLnrKLDl|>mkwO z`{*!pO-?A^e5Y4QpZDlw~bR6xNgzi(ameeeuA*e?xOCvvfb>%XDjH*1WaNi}!`4R$~cVW)qho`NOl~PpQdd zecAYbe|H~T%2IDm4lP2^W$_`x1O+DwACf~vT{1cOg9iaj_)gP{*{p*Y4v!0JzG*T9 z*aVx6&#+aZ#AK`$ta__ev*Rqm0VA)mraFc|-No1n8g}8~e$?0e2sT$R5%|TH7ALD1 zrqIj{RyM!eu1v6~-`~zsl-~ThSE;q7QNAV+($4}ZKgC;s8_^#ytB>oQ+OyFHU0fl* z+UqzTFMak}F4`J90{Vng5UhB_Nhv5P@#FNeDXEqW8z#_0bC)4%g*FVvSa{d^8kymK zzZc#Fckgw3+={u+WXXEaUkgd%cx?Dp3mZ&bJy*FOJXg|qz1ZzL$|Pz6<0SDnLoi%T@D z;R&w$DzD1@RTtf##DLElQjTfhnZLB2S4;3n_Sl)@SXzhj?VuBApP6`3oR~sr(~(Qo z@^Vntx@7%V4CCdtuLu68S@dRi4y&rI8vD?|7G(Qe%kLG=oH|c|Mj;peFXz&@1~`wn z-}E+i#4G>2Wj2&_T?qP)-JDIpofmXT;Y=tLDi06($d6G`QO`Ybpg#3yl@#SAV$lFK z;)hzjL1m&pfXZ-qM_?9i*WuI7!&Soh?a4J+{Ej3ci}#Cdnze#Q+HGy<1z|>%y!r7h z@{U)|R+oLiXFjy6j&Q)m$7bP#gS|}Li6-fxXhs{F)ds@ANKUrRwhDPZt#E3v>{Z05 z==*^7{oiUVrm#25Pr}5(ym#nPpeIFllQ7bwc=BHK51h(^z9=$Y?R3_JuOV*0V z5P40duf0gMnUmCy%;32l)RTsbDA-KdsT3Dgw95a%-q^_DTc+c2UHG2CKb_iq~yXfH_(Y6TvB>@o3?*K4Sl6 zpPsL_5_eHReKHyTRjHNx_hO!$S^GQK*R~q_cQc~xq-6*pOZ{W-U#Z`TlPf6~mF1`r z;zCo}jk*ClSMp2!U+;}kofcc6wC$?7D0|O^L95>yjBw15_fTNB#^k8|J^jPVwM(11}HT)kmlF;yQD`qu$`p(VdN)%3xIukf^ zEg^n;{r7quKS2oTpB&o9+uHDT@s^YTZ=Pq+($DvJ<-0lDgTfrWF=Si3(fHGg$4rv>3N#Az*0ul`B`a!C1zN<=glf8@3=JQkP+0 z<@_aP;Gl;7W;?B*gIB>O<@wBt(h~Gy%)4X@MAXz~zzwJf&_Nr(cpofmP1`5r@9m?; zpNsnIpG}L?A+Z{&*&+U<0jrkkkK`|NA91~RNsQps{pejrezokvS}kGm@y?(giGFAN zy}N3$7yFsVBX@<(joOt8B0S)aqPY+S50Apj!7W___J!A?q1LlJ$#_Uz2p%S8<2dPo zYve|ZC^z`Z4hH_GH{DzY5$~YEhU73YOaN&$pk3)JX)51}NCF3BKakFxu>j^AbR@F(UcZ;m_xBIDxA*Jye!iZs$9gXO{1Z?d6?l*? z>+I7k@I4eM&FFxkZnv+CB5eG`uvUve9pzEVN1Hu|$A0Sj8qf3hrZPN{*lkRPWc;4E z={JgkDf~(fCpn|$IQ}lZLy`XF=lIngpP-LGpOyYL1#IZ z`mO5UrojzjS-9W+^jnkaKZt#^DZJ}vI(MiuVHv*yA5V)NKhJYvkGJ^<3~xH^H@))I z9qP!i=24XLz_Efg)wP)2hr)~H-CLQB8h*dOTeoN`@{R8%uc4;e2JQC5?cawrr6!Tv z0bY-66^pLR)}n|-Y)_yDmzZ0SpU#gARh*xv3;J~8;6PPezV6m)1D!|+VL~c-MCQ)g zY7qb@rH$O~<8TVIa@j;5Z;8Z{k@K+EkCNPy#YjUQ-A?^Vrli@q5qB03iq^;08td} z{l%H@`8hT6F=nI-_uvPts>6ub_GlK(yEQYC57NYpztv2QE-&>@o2u?oI{PZwmm;=1 zJA?|K6gR&1>9I+JKT|jflOuJQw~ur==h~{dGpdf(NpLk{f(sYGC09iXgju=)-jIMUab|K$Yf1UuGKLSNdk^OH?B=kPOwz~y@XMfjoJhG2TX z5KR!~*+~py-HKr57mq1WF3b7Urf8JALut`n+y!97BQT2{`<8xT^7kPve{NV%+8O)f-6Khd$0*)H)0oW-f1VOWbtr=xV!-4X+pK+ne%&e@UQ=x{|(Qc z1Kl4b<%akET{WS4DVq|}qK|nb)?4lq^xvg6s+}w4zNE7Rjkk%}ZoDR(3=@#IO@Fqj z)swlp)6~u+8GG$aQK%=WBQj$39P4c2T3d8+9}0IDTqp9dKQK%4@OCLXWn?k%-c^tx zO2}fp_mEyaG^$TJgOJ)aYAb7kzg5YK7qr;>vTO9DEt^^7oVShoh4U)A-Et22L`i%; z1lN|Jep2>`%e~^}UZF-?e66)J5p?QInw|3JzUA*lyFT2zuYA7{ufKno;OBZ_qNIm# z;T)h?BPd2F1O5*l_X?5&aY>hLZGW?3=DnG=HlSI@LGL46$)1>)=ok+}!)p2j{T`0Jz>Kk3o}Y1(2uqL3U`S);E9+l>Gj|J`ATXw zjOye52ie~&uKcs0`gZ+mg&-~DD`tyVX6r@e!OcCjR!ICYJ~L@SMT5@BrPef!iK`u9 z>|cq#+7;CKQ%?hs_uw&1IUaT{*Y)p~=ZWv{!2u9i;JM2$K?;tK>2(gxWTUR=LMkL8|L2v}tu-uH5IE31M6s58{r zS(24sM3ZLHa|}bVUzroFuv~K6m6p zj}%_tFXz)~sTueEjSHMtE>g9ZerxSyr{^7~EgZ;XZHj6nEFI8miDmId1Y2)H8zGmJ zLFc1IV7DtH`a#C2?}ff<(07V1{W29TyCw-UBe$y>XdSBK9K{M`g`B1_-Dd!wqpTb~ z4F@XW#)u7c4zyk^!B5#+#KwJx|v#J>7D)xX8=MeY#mF zG9IYj1#C=*#cCjiadU-`pyA+)hRyH+oflmW&5yo)l`)Zl=#YgblLNf2m5aa{OqE4} z5rDZsVP^oI6XX*vD8*UMvgXg=B6n$e_*OzVkOFsLGBPsIi`)tg5JA`=6O4Kn7P*4g zYq3kNt!H6^QLe5;vD+7st;gDU4wepZQSCF0&|3#Qj8Jp=)L$fo02>|~^Aq=&M+$|$ z0ySQ$U%lM%z!%?jn5VH=%2ep{DGIl$cmwVt+pex>O!xu@@jpIzUijiJv8Lz zu$7mW6IC|GL3Pj~(ExOOU>5cwh(S;@yq~8dk{O49g&ATI1-ZURpk^3*rY0f!e$KD{ z4Tpv=7EK2`Bm&xt?TA)JxgZ{}S8cmIdJqkYz1`hS}Ls7X92ah4u zXUagY+`@@sP(}h(uw#7kh(=<5p8f8k{#*ZBL3^MEIaNg-bm3@(dr79@5HwOrQ&SEEU-2PV?s6WV+gTd> zGRl?OrAZMht_ppr`MT%S+iR0t$faY3Axjmp&P_MnTV_0<2BaK!-s1EhxsniO$g{+hdgO+{syUJ!=po!$3aAf&$s!j zNDBtl;AW=6fbLGTJHc&zq(|UK#s2mvTLsF23^BZ*Pag61&6|WHDVjaiZ@iJ=!gYto(T9c$pCIBeuw$9Hc4Pt>VkmkNXk zVmXFcT!fYE3V((3L<@yv1|q!36=Ek1+zTy&8G7EW5VYPB;xr2SIaPSB*#SIlITWY;_|Yx zKiIK~1+RdZT=_p2M1$NdMe6SiHqTDCtbHCwh-Z9GCM*)@ ztBlQ3lDK}R3E>Sgb$Oqsu3nX7I{Lf7x!KGJk8!+z!Qi#q8}#^-Cr`Qto&caQm7*pr zB$SkLju(H#Vr_B5XrA5Y&msywbN=9Vmh~rKQT?n?_uMP5HJ%6VLkHQ!%$5=4rPlFa zf-5XWh37la&4V|d9(xNXE+BBCMG(pXK#EI(8Bd>s9QtynOO84J{_L4-m?p?N*pHx%>Q;2UnV@w(7nS9)G{u{ zH?D7`UE)2V?@J>5M!_ni^>(SCwGLpkgJ}l~uOPq`Q#0IRw^)0TL%}V{9S~8*v8SU9 z()y%m9ISN;=njM0&<@4B-S7Y!rp3o6QpaAQEfw93ph_I|1Tm?4u{jWi;?LygLIizP zz_#^nWGRu^$pA1QDjY!@is?%e-|qW30SqBUM9cH+Mx;1SA%~cyLWx+SsQF+SfZ;~n zxpOR!ZRUl(M2oOy#`UdT2Y+UCx1*H}P&6I=#Q6`EiWaGFnUs)Vm(N$QBgVV=?$dW_ z+9gEQGqFNtP*@|tmFz>+=&;OofNo`O#$13s5ck^&hk8WQNqpK~EE0DYv6ywWD*#Oc z>^R#|iE+-5!V{}@-&A<86IRBWI2d8{fHehjl@u_0$b-)#26|FS>E?5oQ^|e$Go6r3 z$y9crh~0TJiD_xL#h`A2CurkusUvTG22*SaPgx@^M8P*nHQqZG*bN~gUG5$WAz~r< zc)-zH)uyDRfQMH|S7_eum7>K$)eu%RN`$*t=j|lir3Ts5Q$W%q{GbL><1spjWVuk= zx}b=%WCC`{qmsqHWq%iZLFb}XPdiR2SW;X{UefcO&}W1IsU8?q2A+Gpvon>2&;JQ* zIRqS4%c?q1Ab$8mKIo3*+^ywJjj_ZQy++fq+?jo|DY$x>S$j-Aoi&thFU_Cg>K^gk z4LtW&u5d_t)qe$mKVo0Ft0oBLqS>iLQ6G#=C1ecp9qRY5&67w_OI{;G!|@U>Ac9l_ zZ)ej12F-*4T7$_g@tB!5mEve5Qt(=mCU;48I4oRJLMDHhFWpU)%mvG|Bf1%BJcb?} ziP1l!e{+MC%}whXvDEopdrjZZ{y2+*MJnd5)JhO&nsY(_9u`)^g}PyBd2)~*%j_Q% zG!$WjS?XBlL;=F>ICJpJ$eZSSy*CYgXQI1L-w}1PO%h77>vajDPQw8MN_vR`B~k_I zx{=^qfmY$dAoL3<$uFKhy#nfdcW>__;NRduG?YXSP-SU;$l-t53`5)d76b!*Udb6- zMII-+-yg4~83a&OL!v`S+Fh?VCXjn;{g8Q26(+6Yvp?OdD~4SYi*> zruGdV5!RvfrHr%UN=U{Ew%{7_?{>9EX;L(0gjwcsn!1Qu7%|o9=0?I%1-ty&_Xark zm<8P(6++SX>HdWtyG1+C!OG0sLZeY+?;5>0QwXZ?$xIlEU!`UZNYPa?VGE~2-Q6#R z*h93V`=cgW(#o0k?nUw5M`f{inG7)?j*i;I0uz&uB)oaJEXmpp# zUZ$So_=~HUUq!NnK>71$@D_)!I1ZPTtgb9GGh}*Hc~m$7SiB4$lOXk+z{>DxkW7d@*& z7NOgf@?l8>3p@l@7>l7j{DWkv0+7VSD%i|8S)9%Zj!F*I#@mHimRAj&(p4SpTRv8l$foO35`yp2O^` z6m8VFhA(~xT$R>hu9eMjS_B{@zbVo63tgHM&rLJonTkzqn_T)V>cVd18KL z%V8zUc2#fm)_Z&G#9n*zLS>Gj=D~i}0cmdJmlslmp!)o;e|h=Jg6~;iwiRcYaYjL% zlmi(PQ&NV`W#DN*6fV2#^B#hLYTZ$o&HNaEcU;%|e_%DTA^V10Iv(Q$af zwv@k&99%h^BgnPej%NuK$~qPGE5`DP40M@yb{(q@d-KnFNVmEYRmdWVO1%Ia@V8^3 zpzn#ka}n|}Ev9>5z~!Ek8n|Y{`WKPVMeY_x?!?6}7h#y5tz4yquveksHIO-&jX?1e z*qAukLcuta4VSB}J)?ws*7j9tk+*(PS>%3H>ns8)VPV5BejUC)CbBbiE04wX82GY`DOYLZ zTs4J{t~sZPpZt7z_q}rEi&rOT{CIDnXq3#w_utS0P+YV>Luxew_PH{PJ7DMSzla*0 z#Zg>tLdH{FkNI4%nOLo0d7anL$cBC1iyu9PD$1n}kRh2F5m=-Xwt9siy z!e;pr^zP{8+qK!is*e&tHn^3K6B~ONNA7_$mOZ16V`L29k-M!BjXe7x<|oV`G5;JI zX9fS~as1oLxAUJcQC|03p&zG?N7Iow7CENrw!XYs4!&|#R!{;S_PZg$b)X#%M%!_fNerpjZY2=*%%E&7Pp^<%xs zkbLG;*OIW!1-V4=HA51Z&!N(*>0bQu<++rkq=D%p2%b-j;pkEx@JO=wSY?s4A*nbP z%S|utEU?rJOqp_*%_}is^r*tyk9vApKor1FkegoG*D7DPaXB5K8NZ~pHz4ADL7R`t zvLte_#>VlD1r_pl)kZR_W|vJ0m3pUH#avQ-Bxg@ zk0Z-#P}*@c9*wg7&Hx+O{;P2>sG7JX?iFa9Mkpu-v=evd`h|C*YZLv{qf|E!MC z-D{4Ve(noueYogGl!(sOqp(8(Yj_A15tr)+Uz&>3I=>eJLQ~qv)wPnqZjzy#iohUR zj*TNpbNeWMW|7_E&&2@{GNd=-4BAkP8A)n&>56<-d+D&D03riQHfA)d+b+b4dEQYei zDVfrb&K1{knzyRv7Yb)OWN>`E+SrI5Y%B>@u%T))RLO{Y#sUPo;@Rwow=&d94q&Cr zHCY3n&{+0J(7(=X3(V3xxNtoD;nOpAw)ve5e1A}fOa1kVDFP24TFlmc3*pUT8$)D@UrEk5||xDYHdbO(KRFnrqn|gSOGaa)flw1~BfQj75c_zJk;6$YDDU%KUhJ z-PpTdT=1pOKX}%rrDI-?FLsu1Yxsw>@9k9&{PXbW>hLCu^0*i(Ji%MnHlPVabtH-W z4tY_4@H(OX-r_kr(C^G00Fgz_9aAa_(mKT$FY~G`QX?4{pKFg{6(Yl&f zR&s`J<5;>ROCMDxYnM>v%s47O$RHfNwJ2bY2|n@p5%i;s=5`CuJ4w@$Gjw}<<5P6= z5bqL4CaYhfmip04x;#(=a;(HGKXKP+vA;XB9hxjCev;XB`pFYMOKC7eb&zfRon9@0 z=`+Ci=TD;%;Vszqb3+i-L0}7(VZobw4}0D!mH01~2!Bh3DpmSc(Y-YWM@nkj zmvB1}Vv<0I#4tV@;P;ZPs+LsRHXCSwECj!#?oWu>mJ;yk_8|tzf889HB36FCxu&@o zYo1{sZb}*SB>FDP!BE^an}F+sjYA$O^N3AB8c9w>F?s``&c41lqV`9Gd+eMwY^?t? zkgaU(E;x%B%ei-oBoEPL#%eiW@f=k!-OD0NUZueuC5JA7dph3XBjHeilmCSC=IOva ztWaGKr5~|wuxn3BB~#*}W_CaPWtBuMR8&;nbDx#wow?I+$T``*_9aE@Sk_i64<{Fl z;5izE*9_VexgbWa+3nbUm6d*hWKISTuDfz)D5~I0B{BvQf8)amAmNq8w6rZf5ptKs z3h0RZ<2+kz%Fm}^Z#Tq!^oo<%_!}$O1XRX}!l2(Y1X3Xgfv8G=7?w@#q{X1=YO&~Q zq_&2#<)zMM+*^&HQ{d*>Fug!!pWKZ@-XMMOARg{B-?J;LPe^iao zs?XMstspnO>}(Ms^8Tz|KT!5k{MfzHZ8%U zKk)1sdv+n`#n&ZW-_d{Kc4YC+#7Xglb7wr~se7aDVDp9!jx=~qs@WQqqG|7f<`@ma zbkF~3h;($+5mNKU9^kpl+3Yj~HPK(UB|@HWvxaJry~Hf4H%UDj*fs3Zx-O|6v4OHp;Zc!cv(7>glwgbkt&zl>Pee4}zYfupePYrS zDE@47kPE%{kDE73bo1f$14viVOgLSVMjDGKYHu)KOFC*V>&%}* zF_X62&$T`nCW3xH?Ab44mnkAWp|MCPtbXt5z$b^p;@ah2kgVY3I1fbb zrJrxv^}F;sA=%MC*s$x2uFh)6P6D`v#6$b*Yir+zzdv#d1Tpsi(L=`{XUm9l7O}W5 zmFoCC(m*@<+Tz)bn8NM2xsrZpu{3fk;vjeqld3P?|6eB~9s=6MbRxDBYd+hCL0}QJ z%gK*hWnSzO++3RfI8AceZl|AFTDm=7Jy^SP=h@#E*Xp&a1r#Z4vIuyzy9D;u%b>-A zS(8{-xBMeBdam&F?Cek%(A=r!5M>hpEZi5sNGy(^B3X6{;e2D{u`n}b=g!{!i<<|x zI$WQ~kAH!UXD5t*C2hg1(d2m4J9vy44BT$S(T(P_f9UQ_tj$%uW`c#a39XzOT|Va< zCq?*vq1nrB&O*D4s<;F$1d`3dJG-xMsfUj*pTA|>adPE1e^(*tEpz$K+B`e(f$fjw zO50t^24a@(Q!KrY6^MbPdCLqD{LE8|-8G=S^3k3g(e=Z%0i| z@9>|pfS_RBjAs0pLsZolm~m1m@+pBHS=zJ+MFHQMe^O%lHlI(S za09)iWg@ot;WjjPf#FEi+xh?OV<6*JS`6@{mM8%FsDIJ+i;=KJ3dpu9ea8@JyVlE5 zwD#HvUt<90C}-J1z%B!f``cJEi;ZXE3-2rTc}ctqK_>i3&3T`WKZJNdoayo1``}Q@ z$@60BN3{r3SMF%oxFX3$nky1V$L(SQ5)-*HlycJP6Omp{BmtId^{8i~ELyYkI6#(u zN(-LS=f4a1ghbI`Z*ODJzLvNsBNMT9o9EDKKH~^0n9|v^9zrnisi>uLDLDJ2e7GQa z`=z87>(4luMRnDm-TZnCt%J#s=T+YUEOn=wnGPq;jzyhOweO3;OsxF9gF#S77u>|9 zGT4kmatfhEAHF-}8&we-6z_)@%S3O#)>3`XZ^u05rnMz3#ZwNeZH+S+I5Z=ir69E@jbrXfz0eLVo z88Ig#s7{QvyPu*)yVG~*87@Pw|3RgRP{tV$Z*CH^@OTp}^wBkUQ5hE{IeGn=v>t-~ zb(LaCS_p0SP`vrmhEd=p+(*CP#kFI-Q3zMV;LNB^?HLg(b*n_Di~r)LGrL_=@Q&q-R17+<@MX{u{K60k@`OUY zz0nS+o)%7kQ*j?>qt(?K;qO^xnlKIe+)QHYHN3CJ)oGf@I=u6^D~QP+0{i^+ji?{f`f*G~*596#x3gF+ZY8I#t*8&TAB$nN$2SoeuOaAo!M_z|>exsJ9un7!YdBM#9u+ zcVPTm=L9)#+X8%7cMEVmZ#3M|`n=-68S;LF)%MPVBul77{F=Seco_5 zF2($l$uk@cU>H@VRf3>LfQ3##fDQpNnebQ)5ks{mzM>DBs&1>7pFH(VLX0)@)OX!7 zE9_3ry^ zB;>69{ZgmgpL{k5_^Q%kyqQ1NLht$ZLN*n``fWuqJ&l~!=WpC${8Yo5HSv?V(v;y4 zD)|gpsqwt2%2NrUp^_+z$s!ATZ1~wL(Rg(5n$+r4y(Gv$Aj4jl8NPk(ja&=5JKWDB z+wb{~x@cT`3_+d^Oc>r_PP2T$?%`m2k>#M>#tJ=dVZemrvfoIk;#)pz5V6f*a+`zy zHd7Ea*~6p;0_=W{F=Hf9$d?a*2p|^3gwwO#(6;mU|H<9v%{UyfIkIuuh8N#Y@nh(J zw*KCWnj)e6~4Obk4jAfVvs_YH2?cN?9VM5}S4u%GAM)oW?8#QqmvkFayYWx`a zY!ejc-HuA<;d!}k#S(x2u{?uMxk5&g8Sm=$xrkkt-EC90xd*=48bov#*xRpxMaWQO z3ExaQhw#~z zVmG-uQcjRvV|Z{*Sets^h}Ys8dI@Ah8c=?`F}?lPl$go_e|F(G)E7(aP&gwpTjcF zfD0`6_q~~@65b$jMjmAm2U%JVvWlZ8;IH)1uN<&6KYKg6eeGplJ>dHH4ia6ll#oo`eJN=Wheu{5G(snP+H1aMT4W53cx*W$`g?$tEeg-;Gvn2X9}RBP`l5 zE#g-cb5?5$@ClF}WK(O6ADcZsV)kw~FoUquA(G*xr?Fy zYLAP%Bxqocv4bthgn(WW!8;Mz1Y$tU0XQh4xnX^Jsfq#AuT1e5B#T~BvXmCCdZ(0K zfzQP@K2CqRa&5Z~DK7A`bSB&Fm3#X`r{#ocXP$wU-Sm}ZQ@SHOzpSibHQ$Y^+(_J| za)Xs*9!hh!q&p^FeytFV*VH@2`wdRvW=cGW?sU#LwX^qE(PV__S!<`ZOeR7voPY=X zNz4-%b&BzbNsU!fLjHi+Q#Cd`rara4K8W^?vIbc9<{gs`a<{6f-7h}$!(G1nD5YGu z)_uIPcez=htypMqmKlo}>R+RGsEFO zrKwnLLP7&(m+^>O}hZj4NW^k}7j`D}LYtmj#VTS)y~@(jk| zf@SR(vUhZ4csz;y2G8&_?A7F&E zdV9_KGkdaW+oEtl3f(j=e?}0IgIe+fP^BpZ=FI?NB&-&`fBvdPmX~j;~CJa;68!7^sf}{rwm+HIJZ8beAsf$?p-J>bUS_?6|C%XetZ$ z_T}-$FKplYe#FsZ*3X4)wqCSZ6Rl})uK9f!Sv3?7%|;WaYG?nMgp7Q*mAf0QO1AOa zjGRd~iJNty9VLkl%U8eFL6=||-6HQH zWis!SU%|dczFaZ5!Arpw7Z#ZIfLA=}u&DXe7CP1OD+-6~v>dIe@%@TP7!e(!Ysw0} zFuH#{ieuzS*7Jui78aZb*crG)w#&5cRj$_2#SlB9rZ28^8AU2h2_4i#jqyyxU-yOH zhJbQew7ZkFXRtkNyZ=zIdVeFc`EdM;$RkeMy_|?BtEpL=WyaGhSqG-t> z=!|4a_@uJi#>;=r&-V{q7+2O`JiDi*Ai@#3@Xo8Pzw!kZO@7$5sccyI3tGj{#Qs7>0G4M<_T1V9K6c+e#< zgd!9;k^4(x`a!NOrD+YSm5dH%hc*{$`cCLu_-YhI>TrMn=h5GIW0AM8lG^lTC+SZw zjIVl+(ce(INq4Ob@ek9lP*cQSm1n6+7XJ4VTYR0umO_RU>MBgK1YNiP{67EmKgrw; zp@LehG5I0{8S*LT;EjWW?}*m!ZF4oMPzaH*SItvP6j&jdB;(h7uOCw-DMm5Jb2f?hmjKfPX#CMYcjtpaTuS0)H! zBVs|EQ*B;G9PiPhB~?ICFqFVr^HE5uiCLH;R;rRHJ$cU}v}3>Wg8I6CQ^~I;q5?yg zkl$@*`CHCIhWLDHld;j0DEF+vEv=8LwP+Z;P?(upd>tVO|1g}DRP*Lv&3p5$!2k_0 zdkX4BSfBOEuV&%aDq8kB_*Gvz4!OZCt@}@|<$M2wmT;E6IoecE$m!M& zi)v}#0F#N8SO1osuE+*4;hue-Ka~+BKP!{^F!jPs#(g2VYgii^1|(Fl_BVqoIlmag zkqB_a@8)Nq*&PY`?V*gM@h-`3zmeTDsj4$+#%r5Eyg=8lXf-x99@KW`xHGPkFPpqv z!AW27>F+N>tC*BF^_)GWy1+|IcIFb&w4R|5;Vgq^|KNSgk5LL^)WS#&drAGWakB0g zn|+vJeM`kS0`(E1dSjwbdiI0n+cC?Y$=kP0T)FqGI;;~T-@k!Idg5-5P4S5$g?sq$ z{14wvPVGw2>kg__KSTp60>p&@g=S8=TGAQlB`lRSQKE5;WQ@k=K?LDw_}*;H(75tp z^q$rLHY7^s@6(73S(M}AJ>jyeSc7zK#GISxGun^SxT_EkIAB)Jk}Jq(`<_}heo1RP z?Jm0%q~Y_nNNe?dUDmr7b+mTLc}-6)Ej5@m$K zy;0Mqf;1Rob%zt#&GC@HdL9H??cXuh#wRc^q_bQyXw@b?2N;_*LTD+;EC$~9C1pmi z01VsZ4?IRGjW+WKP_zhTEP@(0lK#OQ{Lhhn9jVb7Q{z(KY*Is7Bb??6y z76SRtL=9~?XTyo9@uqo@nR%rg0ZT^|^hn0l-JNs%_)DzKA_ur8J}UWTMLGG)_mKv5 zk})PbT3xz<(}WJlj7O!8u8D4=o*#6vAI(qYE4<0JYty_U_z;5_-=ruQ`~18PU>Op= ztITH1^a3sgCe0I|nI*)%tLG|0)hDPS4)&}Ur9u3#Y$eNs3l;Zn;V$xmelS$4IYvbz zB1`b~f?f>Kc2r9Nup)YK;XqOPx-?()-8A7!G}Hlu8tjvsT^P9X~f?fFa{%Kwnx)e1h` z_0wcqAg1h1XHClP?Ym`djq~)??Rqio1=YD-woh4AtVYic+~b*F-=3Aeh(JB5m0US{ z=QRfb)~UIa{!FK$f(h3a5Ats20Xv*1cIjmVkn}2pZzZC0?*KVj0)UNX_Uc}e`xLQV zf=+x4BUvEbe~A<(vgKE{&3S$In(gN#!9+OyepK6G56PPf{;ey?3J`4?t$6#cYh}>h z{PRN&3N}?RLxp1ayaZU9^x>VqaJ~*%;&UWa7T4D#TTQ(lXRNc4z=NYN$EVXry zEvlb;Gx#!QQ$D2Y-pwHGUlvyE+jrP=9}lSOqrSniqmMRp0+3=-oZ}QgAgt3pcsc8l zkjgeg4^s?6NscvfT);9qg8)_(%;ynN1V!sB)lO)|v~aoc+NN%yKU;iI=(yP2tP_(2 zf7LxGx|26H9t-Lsq^9WZ!H)zCXhOx~{@+Xl6z4Hh+5hJCgt=Ghj7^oZdK!{@f39rwqg->W?fR}#27noFFY2a2|Ys9Fn zjXixOMN=2>d3v`>?|3YuWeqzL&ZtYR7;%cGgd0s*_H=0qzHuyBKtkh>fpkLQ6eGPc z5N*phX1(XH?jbV{f@xw{UW2^1*t8fF{~7;(sco1gL!e{_)O3!(Vi$sp^;S>>olipw zr%mb7<8k>5g@T^srPD`a%3@jGi9bI9FmBoc4~LWs6D1uKU7dc(lCIxAnZa)5v9qq zV&{`B&f-ru{4qeXOnQjK|JIonzOJ0!DM9aC$<;3De|s$c`2~u~Rg&-ZqKA}JEbV&! zL+}t}pbG@kV^Z4R1_I`$>5PJvR3rCEWZY*zyk zvW%Z!B3<=O6h}O{9{og&p{$8Boh4P486$%VEmVJm?H8IB>0r0ofm;dopw5Ot)N>wmB@)AoQo92oJ{wgP7zkS^}01X z(IIkz=-9hg;)l&pr!{l>?ojEjs~%?L6pK_>1Z!g_605#{2!2S$H~dcwe;JYR?*bG2 zEY(d)gM{w3 z$b8O8c*=bC`y`y{*SwJPxGMdlOLF5UO#c-^f?oUi&+A z)OmW8zL(jG&GFvSFwJ6u6;*cBa-9US^paw6paYtFitdh~$`-pl(_gF@&xE5P?#uON z0x)0^FuSk1x;P>8;`oP_l?#KzQ8LoebLyM9*`_{ydG5@fBT6xhZ=&}3A6-!(BLSa30zoN3TgIDo6Oh#trPj4oW%?08R z4*UBv_PvQEF~G{u2zz_Z9t(`%X0IYZGFe`=CAsV-kbwPst$~%0Zs9C`EP07nJSnja zRB1eFnexsq?WF-oew8=M;yG=sv2BhQnBMNN*4N=(A`_z`@b;9d>BYrLT=b_1 zyWn6DIw1#whtJ#r**G9SbEN@jSQj}^F#7%dkc(I5;UQ7u%XG4`rOFPrA75P)nWfnc zYXVn{N@ElpF5cwPlEgxlvOeVPmf$ED03zmWB(Pj$k^+ByRR z3lJHqOkVccTdD+6j*6|k{o=hcKkF2XlO3=?JNrq5;y{@${<;jZ-a-2BihZ=Xph5#) zaKsBiQZqeL#Rl#`bO13;yFuU3731?B&*4d`)tdgy-1wuY6?4ePO8T|hSKBo6?TgtyM*0sj)H z@=#R+Udajtd0k#GgGX|G-@pM_t1{F8Nqk0FP_VIeZ~>rY^WcgC0!8y7jgUTdyAGDG zq+CfiJ-zoUHdTkB2Gl`;?m<^N7a=5@BrpfR^d`wckN!A-Y3*qxJ)#|ThOe~?ks*rj z5a3cc767T>P@$jpAFN;nendq@`_1fF%1QofcZ;<_q}0LbPacq?ny&v-7Cmw&=sk4a zdY_ApzuZ>m!sdi#&buVg*!t95?e*kG>PJ)Lu3&&u0Yn1F|O?EeQXM zf(g_KUx}hh*_ku;fUF7cCoul|^rJG9WMe zcnvcCVvK=;b_S^NHkN_f*uBdg#6_x-@m6Qz-oZuP;Jdyc8S%omb81&>w{B{Q8{!i$ zBQS7%vFtpj*rV+gBaT9l7^{%!(zW1QWBBiiS28_6uRBX*R0gh^;twBw(XjxjZpT;s zh9k+j2a0Y~3Wyghc9&y3IY?|GKd-uoC@|kzjK6){aT`I#F+4G{%Y?WfxF6{}uaf+4 zGl|>3P?s^dZ|HWt_G#u9&Iam_fz`VVuorKx6*0P4p;gsRpXR&P=qv(3@mpC~#BYiK z(Z#$T$6zy>u6V-`Dk4qkldb-q@0d@F3YwQ|(V!oPKazAemYRX)`p|yv?4v z(l1C&*X5nRaidi_#21#0GeE2M_l!v7`aA)-E8qu!)vKJbw1P4z{Rvu|@s0Yb)RJE=F%RhVBVHP2asIc7 zui#Qg%1;jHM5175I;VE);-DQj21ZyC+syQ*PnzXyx$G+c2z0lCgVo;WoY&KvD|G4_ zm7tO7l%+lTlWn(+f*zEvMQUak9D|i$Y=Lv~Q2D7=M>FU%{lalrKJi|tL8U^I`yGn}U%`3m| znzL13i=TsquAkQQ>^zM$|3d#?s<-}#eIpTA^Z#3YkPf%87GF!denrat7@kE9bdM@* zlXpUS0Bl9D(}A*(z+53-gZMvaI^ZBz8HOF1NzQ2nhZ={viKy~AF>Y-Z=ylpn>Nf=M z5NB_9s%OdA_b~oN6u3FXx{VAI*71j9y*2O&cCSs<{Q`YBiF7u#VoYuC3L`AL?h1 z;$u)Cj;oMO_{_hKvOg#sb4EZo+bA9C=7F}lux^2)7Kq5MXIyq*Hy3GUBa`3>9`IaNlc~vm z)uWn`>Nrqlsthz4Nn1T&`Dbw{;PzbSoApn=hu?m%caF8*VpH2B=BVLk;>#ZYS3AT_ zJO^cbcauz7HLquxnqHBuRY<)cAT?|v7s<*JeL!G($kNF9#kFN&h|ChjyDnz&j+WfbR zI9|QGnp-KuU$fb5spDCb4AYjQapV8lJAd5qe&0WSmgCsR$d+RivdM^W ztRh78DPI5*kBX37Jp zH0xNW1ze1iX6b8tSV|}bpxBlK^|MjkXBWjV)QeY>@+)E3`CrBJlplF+U?1WKC}}y& zVnu|4i6$)3UqdS{Dw8a6M#mrC#o)alg+nuyAWb5MOMzgB{W>ZIvW)=LGQPbC-T7xIKaV$lL`x%X>cDY)JecHv0D?wZx&S* z6^?9|9b#+{baC+bH00*e`D#CMoD?04mv{X`hQYBrsj@6N7E2!?bf86 z^^aG>DP=^IU(8KbWaeh%x@12+xdHLA0E$7(w|w&IPAs^g3Q{@gqBnb`d(A;NzAZ~D zD09<+Zb*Q51QWzn3%bGr_U=k}3ci~KWdR4Emd?m*E%r|4(m?gTu;A02H|*GDl<$60 z0^XIUEtZ?;L1G0~NPL0{bJZZ0r%vn?m-4w#Z+@wmZf1`eyjKzYm82=~GhAVu zqn!7GEKWC_nzxmx8}mxxq~HzCL0dvxP<66t26&~2mr%Uh~k4rxs{_28%ptM;M$j!uFuYtWPU^1@rDVK5RjhJa1fK6p& z%eP>GVF!7WHRw67w8)fO^pW5w4bmBrBiq}#8bCKfbNI@e?W@y;91#8Zt3&klwbm-x zb%FVr`rW&C>p><}fL8dK=;bl_ACe#3v30e|($+bv`_Qg5C0x~>(-9U!XZw+g&ll?) zlT2|RwFvAy&>BzErZt~J++r$a)KZ9&Ci)U-%dNdfo`jBN?X9Z108uhz6w9nd*s zDl?=2g8hVlM2j)Q_`jzvLnNUox4*e5ISami8jdLY7PN8RBWf-8S@Y8?1!7FbW{Yw1 zJGp_{(JsQ%s1evQpbmrIOk-s!WuZv2zUy_e|5gdP4T4`|9#EJ_W3HyakQr$FhNMcy z19JdVkdl#kL(i><3ya2}4i*mg3B50PAJg1XbLh4DvP_{>H_P0@8ig(CU7=uRGS)12 zGmiwA%UV-A(a7~le(+N|CS?&#G|aiKTu+xhGVjHw7>*bWIMDQt1SPW;(0tjBv|_)kvkY|&P5e;y zaKB%H{~8)wiJ!DcqcgVpdEvcp?eRVwyv;nzktF<%N5H*k>%wD4owsD4x{Eqbb=VhK z`^SM$D(CH6ZR5gZkd~gc{_zG_2&rcDDg&<7mir)z?K`_>bkw;_RosnJu%)g$4T|iQ zjZw3UVwVvY7mD9zh#-nY0CN?rYDc9c4{Gyw$2{A$Ik6ntd5!7>VBHP$^f~Ejn_YdRc1;LbGPU0D})tp{G@bX0R+w=i#mjIU@#CD*KF z@BeCwI}>=#hHbk`>#07-EtF@sHM{E&Wc7CZR_y#yYUrJ&yz`ml?JLi5xVCwpaIY3& zgA9sH2&A-u46+-Lfs-+`pfaAs5f1E_{4vOCRv29~1d9e}RN)L5(7#x6>u9i>HibZL z61W|PWD-^^LV5|l$S%^)jJ?WmLEoSBUzZudTcREA)M z6eI`sOuq?uI@5tY)P%lZ?=1QCtZ0cK4{Vh#SIIp~-qM`!@n1JBw3~qiL z3vWUoB%bNNpjB4Y*@%L_`Ei#JHEq!&Y;l=u8-(Wyg$5(3i$g=lVj6fzT+aXO4ZjJE zQY}$V93l_hDNS&7U5qH;*LMNS2`IU?;1YQ7Il|7B=HVY|T*zWCAKB8S%Az;N4~8!) zJW0g{yvU`Tj`52G!BfGXx7xE%V0+1nQsB?C|(K*aSl|A98G$slG@ zimOdX^@pKdn&zu|pMs&6AbCI3X`mY}F_RS*Ng5mL`S1v^TxYl8tw|`c#{z`6DMe9v zr|Nz5WdB&8nLCf53%r@3$XG>Bya`=kMa6`Pm%4qox|b}bZP&w&D!w-7ff$}0K9n=JR1NaT6RX#1|Ag9CR%mH^%G%SItAQjV3>4}(17N1WN^Dji z>aqQ&%fE$OmI1wapQWaUu=dDZk)az2reUF7Z}7ajix;4onU`|j$cH~Gj0B)56t|1h zEeJG1cWPwH&2r}%d78$8n6Rsyj)-MSbXtJo<$`9-r9eqzt)IvW-dMESzTuAq8V5Ga9*Wwg z94#iMEBi+I`G(`byacttbuuJ`R;RP+_kCS%+r#fa^h^jFb9+Nxw0w?Q17E-101k7W zMA8CPH5I~xMmSpp&kFmv(Rk#xmI3t~!!l`L+bKRhnqF?`$ddZ+#OTulC4ZaCju=JO z7-XMP(S$%**ov8@0C50-LN9+XBgHZ4D|vWc5igX?B*##BeEv(~FJ7^3c8Vkxr2W~U zYz%W~0#{ix|w?2A$F-6bD#>RdE_9*Z%63BfQg~b7?q&XR1{OIqv?8e6< zu5CAE>07uE_Y%u6L2DoXA`C_%SW4B6x1SHY%r^0b5D{obq58-FF9n$2#v7|^MdJqm zw%yOdy~q~O~jl_a8pwjL1AcrT))NmMXkOdJ9*QYdz#8!UNC}fq0^i z8OF7ie07xTm3PH(->;s0MI2CMH}wCB^JXm_yR@TD35_G4?h|G91-GB^P$5qS`Pu8D z9qAO-W>MGrH^Jd9QjI`gt_B@8Qe>0K&Pu4FG=`q@JMs$5gYq4!uICBF(=(I!0Av65 z)70LAie6FXg14Fgr!;O1?nR_({|EaVgYEc40A1x3XyX*j-RYV7yqnq1anGOvsJ!et zt4px^sK!IvpLTNO%^hv&B{d?VGD6m<_l0|3N@?A@!4WHOAR&)owz)x%XYE(dDDBg%SQYB9sNE_&zL4gM1R#9n_NI+O@}JDO%)ox?}NwJhbz0W{3`%e@0cXv>QGyL zm#)4`)#d!#y8(#>c7oEI72~0rb299x!dp_h5a(wX5I-(JZeeEYKYfx20U9DRB>{(C zkelvI6yR7`rqgnnNH`M*up6)r-l? zO8rz%cm8+qgqdKhGShqhhaE?xfEb2(HUn1M)Wo|6mj^wiu*yhCM@M^m?5s7XJZRI>HNi!U3rQELQ4DcZ^m9$Q?6Plfcft4f z(@vW>{t1@)(jk3+R50KhU>rwL{Neji+<-9gqVy6RZn6@Js z&~;ya1zIf*IJ4~BLpl-<{w2{SX2*X2`V0i|BxWZu0y163U?~vH!yS?S`(w?gk$(=n z2$VjXVoCZMEbo>2Yj-_|Y$1H6kYSeA3KoC``2fM6_Mi*Fd%79*^ImbmCFvw7`?rn3 zJtxJof7ey{DSAIR;mf48;s_;~7;dx99QFQkEO)g_=sioz1eVZyGg~v;qdWJdN{i*Z zC|1|w%wa3m2&n1CuU9ci2nUYdp^e0Dtjb|B@T>yc3vu9T$waQsl)e#O?b!dc62`J7 zJS{!xvGHk{bzbiq3k;R`D@UD3J0o2Q`gh4@hisHCjKI6u#tc<&0;oT~S8&vXF>~*# z2AfypaA$jBc*yzuVut;2A(ayK`FC0ya6aD%XK2ZzQ%a`Vy514H82^bW@#WPEx2}1V zm^NFB+-G~ztvmb$qP@cE??WC^LK-qsetptlHV)v+Mg$dzv^~8;H#sIPax@z zLqMS%O(B2gqa<$00s-oH8$3JNpE$bbdM8GPVjXO~4_S}6*%YHYmR2hXdE>AeZ9?+8 zZqd*Dgso5aY9b_Tuy=}oU7>nf4Dz~fZHUO&3qeiZ7vIs`eM1{=&QDlb8G`>;u0H=J z$XSq9%7;v*6ZbyBy6&|LaOD^QjkfJiY@e!%3b?h&$;rJ1`1sq-&d!`<^I6;&B}fqt z3=gx9!#-pls*l8S6LPP|&zNTX-e|)M+u&wfus7XH!%c7vl47RerqFv04v$E##YzYO z8q@i2WYF3SJ$+FJcqH}rG|H!4f^@Wea;-!es-2PMX<+n0DwKzc@5uvlg+)PVJT!Ec zh!3dbT9DENGTSV4O4S1dA1_Y0LH&v6+~6$^w=a0XR^+$+{V!g`pQ1A!>Qgc#Kd6Qi z4GL3JagK;GjGK-b@x{1sEs zSYJhM+{tMM0p6?BXqj>V?`xYihq3E9cmqt>VkyF<5i)qcm~Kb!2D`8xOLSkN8YV*? ztzz`~7WT=T^T6dU);05g6BbeNQUF+{a)FDH3{WwA0>V_UOa%o6`@gN?(-trQNx19Y zXg^PN`?5(6+8P%A)z@hJ5A?|>^*bt1_=o-EOce*IW!o|WJBb^r(TOCnYY3pCy=fMK zJ_FEEnr+SHynqQa?tXN?M$O5reJs%(a`|=Z|P3VP>;C3 zMB~&jbVofprzJ1ES1xBz5w4gBUKBl=Lh%jw#GU!-DZnU{FT(^A3N**5SX^&rW~S#q zT5Gb|t1~wwP|mu9KljAzDXg%(wq$**nj3my1djA+e~_Kz@D}#=$}=Fg;LLROGk=qI z^?#q^KLW<%hz<;#>veIlVS)&d?XXS>xx2bnJfLE{Tn)f28n-ZJXb(5&s-Csj>oFcA zt)TJ4h4Z?@NvH4ghBm~a5roAP*AaKWJXr+LVl$Um)xCttlkFNbL1Xu;Og7&D;6g@B zct1@6eN4lo!DRFBp*Eih*{ceJ`(Qt%0dfLN@q$_(NT52dF^ShyM|a9OlGG;ODJGO{ zTh*l1VlL!_^cByxrYPzF07)J<=oWq@3BFmL(&~uFcG3dSl@kTydRU}{1(5IJ z;^@uz(`TkwzoR&`vLFb;W&oP1#L^J*Zg`gC=QxlwNB#bDVp}?yQOnlht`b#qJTM-Of@E-6j z0)CK`had-?)Xs8*;w*nCodJ`;fr#7rN1LJs=x{#AF~IW` zjAI0LY2ls=20ZX%W=fFFCNBY(XfEU;J#hD?09Uebe?ZHfj2g!S=y07a=&592d*d-pBEzhE`kOA(HyPqB;LUII$GQfUPa%goy zX%j#&b&UOQVaZ0?;Gcb~Yj1&+p-}OY$B+ZBPQlu34UjV&_7I18s=Fcx&lYB?y=TZ} z>gfuZr%nq@o&K?2_l86gBweIJhw6Pp{YaQGN)%t$10FbBnVh;8q1I=ub}R;eT5fS= zCBg*PeF}V?>e_b+z_OD|CYquK20CcsMAtA?4E%(B8U$t0^TN+2{}@){=SEkKskbV7 zXi;+En}?V8AR0Opz$#I(lDv;vC-8tJ@g2;l+Z0nfYQT^ZtX+&luUP0;2shNPi4o3n z5uFnWDWY)T>kKS%D77jVbZYGprA~cxm|e3UB|zm{Eg8*X-pxJWr+gO$@{fWP?X3OM zxp;%x}BK;k7Ue4bh3 zeH7RAcfgf+7l@ehj73&hJc@vEQf@0Xxqw1eMXt0)F&yF5*DjKMJ^ic{)1;`jg9;{3 z^JxwzDOK$z*MyEg{l|!f`QlDeN)}pYNcun~D91i5vgBMDqvV|kC4%p&65ZFc~KhVR8_I9L-cupk@`a-@QZYV0%


ycswpZNhDTVL*V6ZI|kAzg4lsciG?x_j+S9`Q03xqVZt3^YC-u7!r{ z-EgiNTKj);5b-wi-lEAHyJGV0baD1=l@To!~F(HN%s1&TvJZE0_7p~>nN(*o^N{?XqtXZi}*<0+63M|3O#355$&Cr83y zGWj~ezrPRAM?@DT;mraN&|ex+rs!2d#|hH*bZ|bP(yW4@gcyKKR_&!n>n}g`0{n#k z#)*oasCYr}bPgLu`Ntmy&n#dPCcSF(Wr)i9S6~8lUi1Lilc{6XR!SwEkm_9ZCkAZa zFL3W&ft}(T6nSc3G8YK{72xy9Z^{{qsdh|g0YUqKawo&43BbRChoZB78qC4YUJ?gH zMfgFeS^y3(GJ>keD(rJ!6fI)FA(p*rt&X$7Nj(D7D!#cfwMl8$arZ&7rjOj#rJvn7 zHqxXeB)F-Vky%P(p=1~;cp#-*5HljK{#AMk1#zt1!-s9G+d!%jo1m^pfuSV=imsyl zNJgdzx)yOsHA$)(b!O+Zl=VPTnk)OKb3WZcg`W*RP8*t@ZBl3e13)j?U+<^t!*C=mY-E1DJed)=g%?Z^VBsn$n zIZ9Uzo!I^nyAHPe?6Ayk9-J8z{0v(7^f$8FF}qXGowWw2P{F~RPY|Atc?8a&5CC+H z7eD~weK_bq1L&DM{h{RjfHvdblV|+9EXPBajrfv-#MmYSruxJ!mMgBo+3(ZQM$0gi zf@?$+=``gH_;cqMCvC>42Narw0Ff1}q!B@*15LD> zadE?(92|7WUbb$$o3kj;62hX!#sM>}^HFaSXJUZr%iqNm*G^A~RpTAr;YXTwvu3N7 zcfSgF=HowRB@HId^11PPTpwdN!I!U22!QV>2}HGP##Oju8{p58k}|jaAb!k3+~U@T ztMi838>Km%_9C)Ne>C}N6B0#4WN#PI#08Itm$DNo_YCsNJLa2He)x9LFx)8qHM{S>q zu8bmW_;9{e4LQZ)z>VTeMtQ0tQ0~JI$Xq6z3BhQY24rW2LLd%!^T;)2Ktae^%^4!j zpj@dFSSPYu<@?m9yxkQYlYJ)i>g=eeIDncuI2v9wq}s}IoKLcDDH zBt;0vgCIu+cAw)XhM_N(I(y#rC}c<{fDV8iMCpFe+nEWyzvsDRe9wBWxZ}ADqaQeS zxe4l6y`f7%8%MdUl-z^M1ZfZ4^By|h4hQYQJiI^WZ`L;mxR-RWzSNeGyz$>~g+YH^ zkjuA-rpLy>*>1OCW9+T@@y^28mgpUfLz7#RFS>kx{b`S`RmSrdHF|chp5G3tQ@NG` z<+G*hq^s^e4yvor1UpJrP2k?LqxXVZ=v9#Y9rB>U0W5=!Geiodz`y z)1`*xG!mK4Wr_~xB4AE7k!J}5$HQr97YHV;uUxg>2`WGa?5+4xH-yAgE z&M3V^QBWj>jzQ_#Gh^RXH>!Cd22hSBo06e4->PDicz=W!scl|;3eU^O<6ksVcYMFM zlA&v5QGT@Po#wQWz$)PIZ=VC#CgCmdLo%%z~>qie14UO1nbmG$!U zG?YWCi5Jhn>2niw*FcKkU@z=sF#_w2+gSB3#)ZRUY}ECxq(d*LJxnU$K7^v+cV9}J zIhd^shDrT>=SHU{UT`~E5^ZonN+=uj+N1kfray&LMnnEWzJ#}3D6?don?Tk`b$m>n z&StLvG&$iq#(BdNS-xu_P=Wjc7h9v;*IN)*C`;u}N8W$H+Iaeo5%#0VF)QKhHBDlx{Bv?XAeg z`S;%ek%BN&cIucV2pw^78-udZ$zq z_^54ZVDF0Kxv!MwPaF30O^Y}k;>TXDV&V2y=K}@PQR=M z7O63VnC9=BJ%w2p6H$YL_>%*{m zki)|i1x2T_!9}I*vi{H`*H_9ZFJrMDx_?%+6JvI6ouc;tV`e!C3Vf3RK_I=7F?@Ml z_wL^h+#Gc-4xzY@1ozg}T|#B0d^+a@5Xb}nLg39*1~j~^coR|+k_a96brZT-H!FWy zaxDcRe81G!ojZ#A;6&9M&4+4?CB+;17j>SUq!b754AqV*hxTM#N%o_r9EY(`fIT%( zENr%}e=!GbelYsLkAUqheNbl*RAtlbtC;~@o&1GJ#t~GI8lxJGG|z<-4wb$cf^bPW zzf72%V(|sj@80ulxwDGyBTrC8MST;;2fpLZ=Jni}*(Z%GP;g@sN|CTQGy*LR^Hc}7 zh$E@#OQRKZz%TB!H8q;aTCFFo?zKDu+< zEZK@^o5M&h z1r|s6;Dc6POW87|43z0!PBYB?BTSkUuUCTOvP%AUO?X!ax6a?VxHR?edG?~i%7NsK z-Ox%j*t+(rchyb{#7=&uqMyR|I*%i)l0~h8^wT(=0-c`mk(i|9SrH>_GTJp7X7`p4 zH7%`0wlH36XKZ(c=UeUvz`_%WKcvy~pr10^B8u`zUTdlK(*-}I!y`sND?gbx>7P+m zcndCVEuO=eMSx)*=MzhN zYQAYduo@1jKJ2{?RXxI;xW7649-bm<5 zMANQS*iPi5hDDQk$0PD@X*-7ekkvjNvL}9odE&Ory#4ffNW%)Y=y&^mj%yPSGZEkU zhOc4<%@3n`#_m9Ev@{Cg7C^w#^^2AD|+Pg~6i{RCm4wmYdkxpNuQ#XJYc*^n;WQ?~>Z z?8d*BC%Eom97-18O>JatN#QLZjGH{oSh%{NiAHQz13ki#t3D525Ap_*PY=3S=bcv7G+WYgg@at7Smqc0p$d!dpyZRDxEQS=4aU7 z*SsO!D`DL(`{Y~4)6%)?8%Z_p^@ciI#KL_v>VDv(du-}sBw59MDF)$P>GM)tEGMP@ zFWSO57WH;Yk1O1ZdGx^58&D+lrbl{0_d}|!=%pb?phTM}gfk<1^%k1bxo9F!c3Px~ zK)@T%v&#%T#7}3}1Ur~mRYEX&Pc}Pdz4?&D9=S_8?GK*a!%k0wYkG@xu*o$0!6DoE zLx!|4A$;!|C~$Duv#@sZ&q8`aTFr`EM$(Fa#F^9jANPf8s8GS zWj2-g!SLBwAw+Cfv~{rRB-JJ0gaM>F5=Li^|LwTf{eH}~u33$_#;Cy#7`yb2<@8u~ zya|Q{ftHE(U1aePppw-AVdDI}@KqFTts2S$pr`HxX))!0^aM z3pzK3dTIY7EM|nf>h8U4+Ol|cRO~~2n^}=Y$-RE^)2(UeM=8N=qjR~R1NjuQEQ~e| zB-KR4Lx!SjJ+ue31r|Y>n27`>@J}MeEgPK5Sd8a6)xSRBR<(!1boA~DdSF*gJ@14C z^W4q$PYOBv&*ocv)BVcEf4@KqFV7FJ2SBb0udiLJ0{}rB7c-^T6Brtyk%Iq_e!+zo z#ea0Hdd@}Y5;e=Y%c&=JH`!4I=y%vIBcO36vC&%Negxx53b5xW*6yhDDJ{bGJ=tef z4MXNTBINfi{StVwy{CCP4`LpmFY`;z{cxm-?+M%}n~P%m+Ul9OcPA8=orfN;M_x5s1kxARwK*A}b5hi}c>W4JP%4 zyj(Gkmai0Xwc2{!En@|fr{=;_5-%$k{znE;+9gVDE5tcJOdrJgQE@tuZ}rNEIKquS zcl$}q>493%NYjB@{Ml^ES$@Ua7uyOTz=)o6H)eUKFdDY`@69tzf_fDrs^p+U_#nmN zN_=>jO3Ok*t)PnU9dh_h4@@rp@|pLlkx@UO{-dhbGwZcK1F#10YhoqKjm|uzi%x&a z&72q5J3W?#q#sKO{`Xz?HUIC*2IJrVJslQDhu@1aQtcIh%6)0dn8F*hgylAFwna@k z-C+ZJiH>&f4vofg)a@y`(mAWi{|>Yip%~;JW`tKm=!TreGEGHD47i&X()G%3wn>I= zWex)(z4Me3L_gEn3<+$h4Lk*4dD4&3%#^gFzdAVr8~hNF6`6`9r$*tn!ot+VACM-= zR7K2h>83MKKlOv(prj5%!R`78Qs@YGCNB!h!_lE1KP+l@-N|WBKCrT_?1+TSB*pnh zRipiU?;9>N5?oZD&I0d}JiFA)%#$L8#;w>{6x)|sjCpTmmw=kPr)S?_7q}=myuGVx z-dja`Ah&F<*4#52gbMD?oRGnH=vFZPIY(i%x{Hyc`(SkqI5H!vZUtO+@9&7vBADC`1Vm*+xIi+qr&~{8gh{6 zqI&m}c>qH`UEWVeIgmyz$j_Gw?>!I9+AC_dTrFVhBBK@bU+4oD-d#8NSQ>sL8%`18 zmaVqfh8HwLffoGNhY4%!9`Ul=FigtV-xIJ;?ix8ssTCEsNX7*3da2DOwSNjtj+Ps` zV1_3N7g|1r?R|N1w#T7Mt*lOZ0-aI4Th5Im+;cCV3~V4L56pYzJ*Gnbj#PqBsIr_H zz6(rD7+8tS=bOXj&Czm_qey*~3{dA$vsj zJl-a~5Xz}HBT-&FkmU3qBX)=iA0SWr`*PVD4;K}zB)+p@hzVNFrpm@@IO3meq|mh- zZPHWdSS3#0xczgbH5jJWnD~(1Q@|BOmlk5t2geI)XJ4xt_lnri!VUmm`oi{w`F9cn;?r z!CD;={w~>3F3@1jX;#vMaz>mMUsik;&AUry+h=F_TRkDG43Yg7o`6`lgLS+nN zo59&aka|rFEt{4&E$AR#o?E1NbIB@-{+L@~#(RBCm_nAqtD&Zc(}OKTMXfLE(e7ej z@;btx&{96?&J!}93znGYm_ z`<5GILGazMdCQyR$Y~py4ERc;!+-`ZUh~B06#eH4C+4y_h4VgdGgKAMQ(g3Li+Kp7LuIE_+T~P#W?Onrr%JacsQ4-j zkJhSmhZ2F68j9~1ML5>bu!r~6;eXRiAbvXmqxymG1_}HKaQRw>3 zvgr!PI3Hr!my5j(;Iu0{f?vYlsA~TS%yqHGC|+OM6ipJ=fzIIdOv-anP$E?Ay%Y;F zp&wKYLFZ%1)HF{}w&zBTP*%p;WZy{#_~|^C-t3#VazYm`zro&=7e+!t9J9i)JfDvz z3dkF+ulhIOKM2|{>0E75!`#qlxT+~y;xAd+=%J2SY~`6YLmDm2TvJ@OltkhX*3&E{ zHh2*6zHOS%uP+l!|t`57H zV`AYV+Pw5c$g0yb5*&}JdRFI|jd{z@rgw%agYu01lCXuYuo_d)+nKNz76rrwuOA zw9}^@?#4;oMqhy;CFzG<2i|#5O+)V^japkSKF)JQ)z@kAk5aoSW0>vmaR|Ev<(prKg($JZNz$ii*O;K|4)> z+p^h5t7>NVYXiw=fJmC?*~(9FJbv)-opx(}8K>0->FFQhWiz%C%l@MRrf8uc`55TQ zJ{ifLAbgHMo!d=Sx*U6-g&wLn5+bEKN^yK8bQH3=2FogWNK#%b^Fp*7Ltgw!EA|-_ z#3tHWz_put15apcZoa_Ip|UrcJb1OD-QzYsY%ctJ3CsOBojTF(X)1$Oitb?li#s(M z7;4<KdG>xHoj)xG)6FIzdUc&_e|+t497jRZ@9$7DK&>F+f?O@aImB%|idv3HdzN zVI^)hb?ihwNW>i24o?3zo$Z^sH|)9F+t~$wz;X*m%K--H2nC8 zCmee)dU{O(<+cBXg6?re8KODDd6c5m8}U9%WLlE{J4>hUcQqfjr6yGNb+j__s)TQ! zJ?)pHzMIoUY^PU0ZgqFebf}DP&#;Ah?0$%E3=VMorwImZYjGzlBM)O_zxYqoYcIy? z#f_3(xmv_BWAqj9rIY5Ce|-o$DhN9)P?+!=a}9&5Ltcj?xrC$J>fj|k_LKiUM@;hI zS^cNzc?T;x8LS@K5e?LxR@w*J zGu3x>TM{Uyy^(?-ffmrLFgZsnJXHs^+$~Lc#9<2cHdT4`En8KfEpL*;X=vTLN0BHHNouy$NmFXX6ci?HNW?n*a!35*3`Ij4M%j z`Z=fcSLnCS&ggA{^B8(;CgBG2MKuj>>?WKDz54eh+te0Rfd1;yD!5mfTHZV50=KM- z$k|n$lf>nz3oml^UIj%C2>Fl;`;KCUSH-<~PnByn&yIgB{bq|h-gZB3cmICV&~R)k z{3dOu@aZix{^3a)_++7*Q=i;AB#e1%3Y;ylPX?sQpGTY=6~)C7Tf9?F*%PeOPV3K3 zUN~`WCLhmOlbQpa!`^?4GugB<9X8G>4HQ}J@}RM8D)=`)8iGavzfD4px*<~@x8L30|4IB0QDIE6O0^5OY+ z&#~!5UYE0+A>*hoo6R_E^_b+|x1>&nqM$wYlnWj%aZSD0ZFy6qSuk&BwUzYu^v<{h zBnq;u6%A4yDR?er_NnUqaQwH*n3%gJDWk4J)L)JoG%-GH_BHTQ_tdDiu#E17>=gGy zY*O+c7L+7%?23fUB&!fg@vUZ5#|4yy$5-9eOPe(?Q_5K`^zbzE`B_FrBd6ePfy1lh z?u#MSb26v=-MqW;r(X=O2DH*#Tj#1>n@Xx%ZE1W;0gNAz>!LDgan* zUUetw0_UI6n@Od>h1u(wcJGz;3kQw}CPidD(@Zw*I;+hQAgUTY9DF84WP(>gQbE73 z00vyMUxp_pCYA@dXwwt1AfeS^O}r*(go?q-A(neO^(UNo^{CLenzC={I-Z zrcKJT5pm_9T6ahHwc!+}TSwgtI*;C8sOUNF+e>v`VFgEvw^HclKd-s4kZUODT9w+} zmyM^ce0%UnZVjEX@R>=;r4c>ANo@{1%=nn9Eh*8q@CL8nrn$*-b*0QIJ1e*5GH;=Ey3I>?q zn-_%WiODC(*S>sre_;L48gYq{*2)B8{8o$Q!>ylGprbsQ22&n}QnWk8td5@WsnhB- zUjZ*+^L~gZfthkJSiB?_=NhWB%9$&Cth$>{jGs{T+!38!J1cG|ep2zL`iJtbzugRS zf5tyV$MI?Q2HE7jkiRF4MU!OczCGbneDY8V#%~&TVf0!#3L^sLX4l=+X!m5n#3^cC zr}-JD@kEyT36_N$6RnU}FI|d8QzWoa!xAf*zd)IOU|6rHZA^G&H~PMBIy}5Rbu=H9 z@%lrjLRDSu@^SXMQo)D!HS52lch2xSs)?JwUtB4nRnR5D`d-~}0zqGC>YYzJP zpRHY`g_#0jDCQ;YSLmXeqNHo`)BRCSM{>$?`4Z#QBU(H1@WSM>K`<$U1WY@GpDQofUgGo$Vfa_SKn^hQ_^_FGO*GEkIzHT_l zx5p!sy=QFp^0E?@29;2QK)dVs*Jo@!ULsaSy);m^>pIu_R`zDPe;f3>_PkYX_MEaI$;s!{q)}M8o9rx0R9G=FJgd-xCGf`K51;Ry zKUhJTyOOT@!b^(Ji?ee` zHcwzDT9H34k(^Ja0~Q|;nhexFJE!XRI{SZYO7&l)4CV{r@@7xw($~A;kXfm1zMuYy zPKs8Qe$`pqnrn)B$U)}t8U4pc2efE?otf6~D12~1b5Ri8K?&36Zf?WJW7C`xxjc^L zs=AdN44pQ;T-z?SmrvR0vxI^p^nXsPabCrnbpC=-RMO188oS6@7J`||o1#r&HZe_E z_THx1bwA|(V_PmzyO*-4$tB|Q>p-jV73+X<%jTkbW&-zwE$^b}7{gdqSNfjo z(D21u?%ikUXHy?e&-8dthnG*nPATs&{OyX|DY%(EHD;!>$oiqIVE@NPTgh^Vv7W(& z-P?3sM3afhpdm+6?P5z%YssP1I$Ol=tH%*?XE4R|%KBal_F@3XxJ5oUQa|r6iSNu%1l|DjOW1npdF)D3+%CVgWf%V3|+fG}Wp` zj_pTOLE|buJBpTaM2|s?DdU>s*3!=5CC%M+X~g{v9Mu&A-O8ush>mb);)7BWR(dNt z;7;|mnEi*Au?j1>d%Bg)5f8n-2-5CK`_~k?Bwb;gi#=Gqx}{9$_PTb6y&mBvAvc<_3kHUT?}Wt%M;(C?ra1uzMeC- zm)e~psP^@$4d1n3yJLSdQ>jVyyk)|wWDEbYJ6mnHqBQY@pqqH&X|xb&|A53~C?&>g zr4_B;Du!2nrl~dmxY5l4BGBgv;c*eZPdaZ^$r{n}by^Xk&!~pjUT%=$*B`rU#e3)A z<6~iNjX@7&m-?m6*@l0-0q2k0I%6d=-_kDpkvD0Iu-HnsT5&J`Wf}NS$?nQp|Mg2! zP78a7NmCd_M#$b1_xMM--j@thQW92?IEAynOJ}l6XRy5dF#gQ=WJOsn%=0qVfW5zG z3%n;^tp43?I)1v&j4y+K96t4t62(ZKle&oO!T(-?appRi|2y94Db{3H_~Gr77AtO% zE{s@d{r<7H&LVu=?#a($dX^^;AraDGxbHvCn@uGR6doebpRcWidt=YLq!os|#TJC- zP4LSGq_OwDDWklsm)GvOHd=AK2Rr(uZyctQPb6&i!y6_UlEXvV`FR$6FCF_8x$`<0 zEnVdN$Y6E1`oNEE3KF18Gu>RNfTLijbl(Zx>33dgGK{Ss-@gH7Z&Z;u6}ecenp zjh8&3jM)+~Ms&_Qv3;l%JDR(8=b=)YJacM(+^_^R3(H`d#pp3FMyFUJ$9Uv-~txSlZ}g_Z)I3kyG&?vyowSDX zO6~5@y%Ui0t@N|Je5*j8^x{f;ELZ05mI+PIGgQ(JM(AZC#Uo+(^H{pnB8IQ@dl0GI zT-l>mT>GN;Z?pbF2GpRIyIYS;*_$C>Y-q^{wrv-!&M^Ek+m%^4H|KLN-FC}D^z}8Y zZz}AaL!-KsKo2n?uQc^Pz)%~Z1Zoa*`s zT8o+X1oxnZBhO|3;Ub+&m_Vv&eF$fJUd~d&^;$>UZ>`mMSN-ALYjO-haACpu`&x1E zSsbulO7FY%_Nu>p+P4Z4mp{*zP_H zpOV)cXzsaX89c?)9_NS}@?cKl>kXGA51F%!{g$SD#955vB2QRqBdT@=!}6@l8P(0~ zCv$WY7&|`3rJce5dr&s^H>~g|EH&+i-41s1@9mT@YmV=ITU%;BiP%v^qb6ar*yHkh z(EV-G2U%*4G41kPYS(z&vh^y5g?qeK#KnB=LG>wfCH`EcH=_78L7Aq9yj)4_}qSe@)S-SJtw$Sv3LMMjik5 z_fF+{7LQ~#$7X4amUCGuo#!lJ%9vU&?(&m$SpTVQNDL{Zc2UcghTtD1`7c_@R4GqU z0`8%`M-#=_efG6GT%%}^en4kKRfhvXjirig6lqkrh+l8h7ryT`39g7QqWIob5{(^|^aDIPM zPi)5R4{mSmH2{2EPRBXveWN;Fv)r-4YcX+4hw&B$pvw(ygQ2bVZ`kpp3pyz}zuu~W z0AV+>cuXcuLxc&WsE{FnngT z>$5FevtuIPh~Z|^eCQsj;EiAF(~4(0WAk6)HWdA^jxAe2wWq&SWR;C9uc2X0v}2NL>VhX)kZhxI)q*2~j-)$v%2eobkw#P0Hh>f*|&uG0(%E`W)>7)^ZpU@yqd`pxRLf>H2)`;R)!09ex z(TQ01Z|$*bmZrTD(OS#BA62?Ekf!rY&+B*{OCY142~^y-zcE^ldFQcOnTEKBV_p_Y z)hcHWJ5-v=4c}L769OSSaH$!oI;%!#%2I%tkDn>9>T(Z3JikNf_(Lkx!aqimep_L6 zO8yqx7SC}oIB||H{Z%s!%rFMqnr6=Y9A3mvV3+dwwpE zVs_Wz51$1%*o;za1Ve|4B1(u3kXl1V#(6WiTLW5? zd2s^%JT?qP=1+eYGyb9C;N|3;zo!+p@f>@=AU49Wu&a~l8nx6~?j&sHBT+f8p{MBA z5lyvgE}@oxIR)o z5yb(l&YVc@`c-K6C)ZENNI+Q{ltg;)7GS2B5}~o&Mlh?L6v8TbkiIL$(hvn?*;RP` zp!Q(vj0DD4dCn?CCPvhZWcst#&yPD!=dTXLO-|L>mZm6=(&&dcS9~(8NqBp*C-W(H z_$w#Ar;@al`MbTeWbUd;%lIq~okxyKG?Bpu}GGvjULD;U{ zqY}ROBNV%9mpI*;{2;%ZoEscqE*}< zCZ@7_N;^9HnL|^*8sD3RXh6cS%RQC+bFXx%eHH13Bo;{J%Z)X3G{hGoCsIzI8Ig}Q zw@6Lj66{TSZ&m-;kUC`L_vvKu%lW&^;49uAeJ6GRTV!UI5icw{(e9o}ceNl=fwxqS zi@v=D6H2?4wv)2cwomN4RdMyVf+pZ?wT0 zfApYNSzlql9msad=agbH$9S;nH1nTR1#f5%JbM$95`Xt{^MaYqo-8seD-o|?TEFTi zlngSQefv=`vo(2_h8VseBVF3A|A(X!@85hmOFRsRT+uZj0*ldMK^?l}rex5vLHg-~ z8=|-3t;s^kAwIs8(&D6`A4~-fP`HaEs|TUUj{oS_ym!Kn15NIO zI^LDJV2q=+uq;W67@Pv@UBPox zP&;Kmfy*!)gWA%oi5V~syH(--B7Zy^3?@{X8ZKR_2Rx>g@BUOz{-+H(>o^(} z()PJ1U!1Fbpr=v*vG>I)m`p=kD%vL2L?}YZtc+p8V{?_b@cA`*ex@>M06fpmWt;_12`n{R#W<HN`fo%)o<9XQkRlFTk#I8ATk;meNVRdmgi7zzfg!?x;xoo)puB%h3KWqby zz5BqlquY~w&M=!d_uwUy zbCp)$<~BAtSx=RlhwXSw>K+OoFG{ezL+|mAfUt(&1pCHgutaI>lYj*WhT(vsqLvDM zR!Q{9X=+H6ME`KG^cf~GTu{nT=$ZO+F~(7LybV_+h_U#@HYMrVLBjKQ@T{mE(6D8> z*gHOWx3&fc+{f1je#9;*p5OIx`{NBJ>|bJ5Ka8HN6-CVzW{)1z?1hl*xc-0?M+VJ&qbM;ND1sv z?HBf6(beC+`)efa&-iK~Gm@YAxio!{LLlAIgzXz$N1xR$06mjQQ^O949^)$<%qA_) z6^xpDnpKeDivvqHRMMSl|M{LPisOE{KcUXvE8@l-Uc=R##yO76f=uD;qA7X^T?4uS{CF+o792%Wl z47rWL(w~ao3NENVFAsJ7E-F`hdd}={(Av)%qe7Ay4()zv1CKY+SkMCksJR)QOwnvK z=xDqAgL{PwlX-qcA7%xTONGw=G>nn2pJH|U+;3Vo^r3qa$IWn`B}wF(mMXGnV=>_8 zW@}LMt!|NkqrB^>fDB+;Ygy&GA&>GIz?qePma|VlxB4e=rrmYuH=k(nuk!m7iI<2Y z(fO01I(OG$5uN;#0sB@3wt5Lgh(4z!@jf8j>5h)stz<%2Io)i_HHmMP>9>yEdL7BP zAOC|#DauX5`FjBD&6^4R8__Sn2X=Djj4xu{66NlwpI9y%S+DdIqWL8cKDL?DF0|UKrQ}EnwE;dWlTAq z*4;&lzI?W@axe2$TAP$nu##k~j5f4>oX(o-wV7}A3fX-`q9%+}U9D@?ON=`Y(p)DW zfNwyYb|HvBzb%My*;+Ikk~L7g3!42_wNOFd;n#}iDW4yP5(r5`k0@7uY%quXmg6l}{ zT+9!KG_~P@&k`OCzGwy*$hLKdnDg-38nj!TW*bQm7@DfY1DYuud=hpkXC8)+F}b<~ zf~NT2nxRdl4s9h|e3S05Eiu4u;H){&x`6E;;8(_;7Gm`rlw0($-=|N~kzoBb4cU=g z|6#Uxog^~6ZUBSU;2_sN(vbl|$u8i~W(HygPU$L0en`*J#ENcq9tFE8%_U}(3-eEf zWNbY-=IdYzkQ&39>TZ2DNi4Cj>C{#r3~PO&`i$(Zxb_(cCgs1-=`=VbdJ~Du2*OE; z-vOi<*TZxe63%GS9JSs!3q*OfSy$nN=9rYyfS@NpN>{^M&j48HrCOYnHO<)CYGmG%?00 zb*ruFf=U?~ovB%Tov(H*duoP55)^spr7U|nR|3m>{ey36tjC>_wuxe`%EmI$xU!*v2Cvlos3eTM5l6RdVK8aHY6ISe%5=t zriJAC{ncmc$3EBn;Th7zDeV9P9Rg=^kncF^?^WA11t57xY&q(vKN6~%A|cxqyXx!W z(jMtM>DKuA)}+1O`8~Q>oyILiJ#AhOG&WEqJ7nACI*Kyv{S@o&Ye+P!peh}zdUZ=Z5VLB}|0CBIb4bbdIdH;IEOeB^%k&KIk)X!T{o6yqI7 z(O!gdmEBEDxYv>(EKs9jCZHV5PG8gABhS}eA;By>`u=fL8{w-HTwE=8(6+*2jDK@r zIZW)Xbcbo?nT38?fWBwxzLoK4`&ucTJs;Hw0(TV6?eJAYji~=9Lbi(GmxXq979!Ek zGL=hH7?L}?aF_vf+|nEBl)Eey9@73Y|F(RGA8tLGV7a%+w(VhC6Gi0yZ~X>IgnV6; zx=v!9WoobU*vJ#&@68$6i9#v>-1NPttF^bE$GzFP4Ki4RlyFo8QjWbI&bwuna(c;7 zT1$&8QC&YhMlTF%IWR35*#Bb5j+xTp@|k%7+-36kz|vTkL4vdlQfIYy*%3Js84kJ_ z?7mA)zNm$0aB}Xy6F_-jeh0ycjc8_ViCu|ZH{;%wHIr@lEvv`6JItqBJc~M;WG51Z zMEwO}WA-1+tD=KgNc?^w2AW8wWKfqkDg&?@fiwwG`3#kRCMZp504x+|w~V!*||Ap^f_^)4Vt0t1Koh**S|L!0cyGSnxeL#h>5 z2~i;ufIc``!_&EVr{#`BsAi|?VUC^u8wOx28p_I6NtO7RX~h1+N~dSkd)u~ZVVeOd zR4bvi8e}Vf3p_aY^kpLL-a|wctQC7<@|7q>6y5r}I$t4dE{TQL)#sIh#y5rH`C1|? zsyb1PjaMo<`QHtW7rWfbIGUJ;Q{bhHk3Gt;z(B{~{L6lB%rP|Z{^w>7knw}&O5WF6 zuTu0lwW;LOujk@GFDT!J7O&hsUKsj~p)4))Gl+6&Y#JxruT-8*d{x(He(*jpNViun zsWuFMbF7zMTdZa69&}q~T>yT017SUmuM7O88QP%FtELGd;k4P#HI#o{E%ZLNSEW-E z$}d{e?XwY_^z-90v+R_Vk~3m`I z@6w2(Akk!WzWn`ZwX_$~yOEZGpQS|phK8lT4Rt!Y^XQFAfkLCQR2S6%OX;c>diFj6 zeYYFV>nJt~pyes99Y51a_)ew%j7M}R|9TcEEmB|e}3o9_vJ|2Ic)PA5Vh?dhk>xLZ_7`+C0D!G}%J zs&sV~R@eaaIcmQ>|JLx;JTkvY5Dd- zh7fe_8?#MQzn+kmC%>b3^*d!M#Nr~eT^JP2Eh3-w=KLaxj89w@ToX(~9ZGf?jwEIu zf{vUBr!E>y#*Iu%roty}m#oa&+w@_Xiv|t%N&-uTBNMJZ`u6^P!PK&v0R%V!LEc~s zlQ08soaVY^?c~Jh2P&YmmLR9P6rhbWu1&aC1<(g zEx^`jBFz%SgHnpMKG)hJoRzyEUA(F7ub{J?|BZyzr~13&tn{|pu0h|(Ge>oWIL2g{ zq|3jDc^|L#ml~$cVm!Z^>YdPpHS+dmjD7xvVJ48bm37kG?bT}SVWvl_!o)*b=m4P8 zF2fdOMhj+={0)OLJZ<{|{M8ddvV*Zx^RNC>?;j1{{E^|xzD5DbAs1^F(@fK&pqiO* ziVul6r-VfJR`Yq9bNva`olt_ZNc6enW^Au7qWnzsH zpEw&;Wz4V%<3bZUqp-n*nbg_))ndD=S7+dwVHd(>Hlzzyl>3p@R^g&fapCZ|^ zSaZH8Vvq2lcfP@Oal`>5YWR_W!E`nCukN*e--rKb=85uT{{!YS-!V&Ywg3W zy%@tiLn=c#rnCAgm3L81r(XLBQC_V}9d^xI(M)HLrj7AiG_fsT(byqe!shrPqMBlF zx-WBDsMCi-+noMg%$qXC5}Mm3MnbY|+Cv$4ANq$9;LYRrlve7;oU9e4;F21s0-q4J zz12=!^?3i&(4ml?hDcu~A*SMPO0ze>RPMAdJXT&d&!t;Y-eN3VxBIG2j#f4-b^Rxf z-d3>01!#NGTMSTwr$10?WjJ{UE}!*FzOyq;I_@M`)J__wL4)$KU(>$i8(qwECpjh_ z8lL~l(n%5LtwsBZOInD(qONdqa5K+v>LQk0Am{y-W9H!js-T&RkrkD=N5+H#sq1Ad zhAstB%%sP3yw`axQ`A+Z07p}`8VGz@l_F8+a=B6BUsB?`LrHmX)6xPR(Dt-*{u@yP zC@%?izwE+WfCdm8M<*AW%y+D?To=7cBf%kvI1F=a4{n6rIbh?1it{KDCU64_ns7B& z_|-RAV#MT*m{HzMbQ`?&v6W6%STxX%gHLAEFKvTMslmup+)nYJ)$WNQFrA<79pk97 zm|Z=m);#j4H{#Bz3#=SZaiTWa*=DGAbo-6{O`WfF;%T{d;NhHOP?6yAkp(RN^H_0U zT&X>(#iJq8NiH3ZLAeLnJrA#x^vpBaCEJ1PjO9A_=T!zqzYZp**Go{! zv`9q;{AYlY3`qhmmcJR=U-%H2l*y$jQN(Ey!c`Ogs41lUG2C$e0ueg={}GHN ziU)Yho)c3{W|}>BzW$CmK0hM7BGzC;7(MKsVPJT}AuARmj7UhRnRD3kZ=uVr2gb)X zg^Ks@j?1yd57kwZ?&Of!aHBvW;U(iP4Im}BccU?4sn7Vr>mXGdwR(ow0o=_YI@4QM zN*#W742f-K$8)YW2eY^K1(3$3>(Vso_6{&bNL7rH1Ff5MZf-&Y_FW2Q=!=TsXrCQi zSRaNVGg|6dL$~t!;MJ-e^-_e`nA0XTa=%}0eX^wSTtPDfC9Q1zV&BvytyCerl4E;e z`-lctI!kGGnH}f%vHSjF!mYQ%kkNLj+n)~f>2Y6_lRiivD74cf?y?uG$1Lkl3iS5m zeA=#GRoOMAabcBGd2neX=5oADD*drh)^q>qLWvBh)FQO|eFVlqH@jn0^RLytPxtA6 zh;_c&>!EOwAP(ln(NGpi6A~S$RJPtvZq>tYub7tUsTu--*D1<63$=f>8K=9V*?py8 z=!Cyfgpk=?DZQjmKAraWJS;?CbMc-;4%9_><pm*wwQA(L2jZWBK`X5LZ2ptwo644hP?KIuJ<<#ic! zbsE`anDUN4Y(w7xy#i>}VUPBk3F~cJa*NXH(nXM*o@R z0ME&JXYWw&XPR0Y<@lqOv{V7$p)VKZ(Gkfnmz44jl3z6Xnyev34sPYAj+Y-EE#5bt zGOsA;ZWlaV-5dT0;#_O*x|J6lkxS_iMf^vz<3`pQQE&c#fK&Z1AwP0K%s3!A45D!I zMOazdb2pDM;I3Xoh&15JG?Sqz^R;PEE=}BqAiul8XM!JRM@Vc!&mz!lC z^YZ5lsVS}b^7u_7Jc4Zd%p|$41y5jg)L=15bTC9fl8pe2Cx-hxOi6#{PUXJ$9~ZFJ zPvJrot2r}+3WnE*!#$SzQHmAFM%D-7`^qQ{7~1!SCg3$(G&~gun$P zVB;X@YR*tp$IKrkvsqtSW85V_i0jE~A^h}PWzh``ujwInw5=F@IecDHgzE1pmJ0SQ z$7v>(95Qs*L0K1a58_SX?(dgppgr8-j^3sk^xjD5LCjnOpD%2`Gno*%?INBe;`T$X z&l>*YY0>#m!EhyA-*r2+)Pt7r7PZA4oPztx$_CrH48Ae(60}VVNu&}sEIjy6%M;9_ z^QegJ+!Pq*?|qwUGaGR~>X8ChNrZf&o@(cZA*6*LIKTqT+ZG>%Ul0GYa%`$Oy zFSDRZ5u)15e*H-;=pTYJi{2cGlQ|i}oq*BnPRq~9D;{maALjrU-!@mxk2%o+H z7E2KYdH#AD?D5~bbLt)vv3O!_2ayhGbtn`+ttq${b~BnW8N-bCl-ZmfCQnnVCCt?}-c0w6xq=nmN!kwH#>f1&$o$ zp12Tmp(5Y{5(NId-?#U7&i}a&hXV(m`@Zh`b6wZx8qXV3V}p~&&mTW>9;qCM%85fq=HHL-1l@faWbW${1au5=KBDjL>g||Uo#AwZRs7n$J35a;S+;19)GIT= z=r<^8^J@!*ksqdyIokw8%(dTlt%Rf=c`A_a5ZnHl823cVeE+`8v?J$T4~Ac#W5vBg zN7?_KQVOP$@M zbj@FV`u*7P8ycmqL}&`bgATxtkyw2b3`TxW6@nUQ&62IL%S*>ZrZA=a|1P-;tue02 z+ubz5?2ZI{8Z|0gq3d4gXc*%;WZ7>`AAZm%FZd~?YOTk8Ba5*}&tm)c-|H+T?Z}Vo zM;d(+83w=ElKdHTmmy>Mi1CU%|C<7wFUhX%hmLALI{y8&+~qva5^b&yC3dy)x&1*H z=4UO+1r4W=#jA={JpSaDp@E&e7HyAxi9-3igK$drcc2|?@Y&V;+8zpV^(h2yi z=9HRxgqvO4pcOSQ*v?yP4Y!xo%*eFyT~KM1Y_LN5==J)BGo&f_CPotjgUhBu|2GgY z!aO74H=RH*K;K^B7^;wY=laGTIu;;e*4c?5_B)a8H*RK*3#z zsV|kyb8c8|4UQX91@4iQu)Nh^*ASG4b!A)hycsV`Fk}-4uD~;bE`WzZT=RS*xD!a! zMqY_Mif;<}Dst&F!1dh6Ky%rYvMH==Xq4e#6T=(P$P`CV1l>xXTVADO{x_fvL*>B{ z85I<|J%!Tvn+BMVdb+6_mhq8jK)NcZ{Rygglkpr$o0zK+3?8P4Gx-0Ep~FYpf{B-m z`T_og*7zvkd8T}srLR)yMGDK8kg7sURRMB+g13*sdbv1&!E2gTCH&lhjK0BU{9&yn zI$JBWS-09K@MQ6ziFX6pv2X!811_cdPJPW>1b~swR;Z+KlI%%`<7> zuAzLRZqs-t+mNV4_}l@Ac6?3MdcPgF$;saq^36Mt@z0QDA#43_Fp%4HsA{p*To%yI z6<6a6m<-;w`HfPGw^G_}m94W=Bp5i4cB^1{otqc?wfOAk(Lug(Z7#cU;~6$&CHD_E zT2K~Sh=tc0XUaD9?6Z4uR3oaToN-sppELxfgQzAnYnucE7#+^KO{fat8v_}+5ZVpf z)AEcXq=A0qQaPZu)~-Q!)?k?TQ8fU$7vqDEJJiEm=k=y_EocB6v&hee;Vw%_meUu~ z2?xK&_nyvo?cu%cHMR#;4K#Sqgn+97mYO#EXoiL_r^_KKzy&JL;Az62-^7;CA|69y znqf^0a8FE7@L>(uD+28`Fqc7c?IE^JfNfomga-PmC}CI%@#yln%yU$KVt`gJ-^f~J zt1%P*?X+PUVhb$t-$pH?8QtVtu3BMMZLNfepke+5c)RP%k>#wco!-fr6P2*sY&PqRh!ce^NSuvjGR8CbMP+POw^J#%fH0Acr z3{R*oE428FDHyXi+3AC~uKF)@DSKt6Boq`IHU?ufx1D%x4+_&@h&wy^g<6lB#Ri8F zxlJSTg%59#ahHlcE}p$rLJO92g6|Hc*n+{x{fZvxLfRrHq@Enz4jb0@6l2sicLg*`FdOw#{3l#II#vW}tkb&9rl8LY+mcSXd=<4F338bCPh3f{7OtOJD7BrUkY5t{|lHh8IN^*)F zkyF;Exmm1)9`(h0HCuUzI!{k|oi-OJX(VP}TS<^D$i>=#7#UcFIscl<+ursI5i|(@ zEH0>PhFZnB<$`ZouxmiUgQ>}(3!2R&@V5^d#hYMgb+QI*RV8l|0m@%jA#c2Vi1rS1 zk3F5DyuX@Ti))PVN_9VajjjV<6c8Q6Kw zu7xfVp9_4aikH7xd0*r41SFrjeo$yTuSViTS@2$<#JDjwJ+i;af(o)K3BL<`5k%f+ z!>!Movg!UcythN_z)?4G3GU-?d<4x;jVwMhfJFEb>oFws2d!-oWI3GbIGh#bS@M*cc(UmDOVWG$J#7gU!8r zPC4DI6>2W{F0ZV%9&8^Tsp+e^;<(`KBRK0Aoa3=g^)aYar`N)*Mo9AUUG6nmhuZRW z;{$W z{YLHV@VyPS_g$lf%OA$!|14r85MkRu0LTY245B*>)7Cn8Z$klKYK>O)_zhnz1g*g? z00G)IqZusBOOXtIE*QWGaXnwCk|=0*cqNq*AdI9{O?o#E6#=fIa);#SWJULRczE>J z=ndpHo&=DER_FrV`(7^r=UaC0du+pjYMv`EVr-i+JEf^$h<2{$#vN`7wQczL^9)qa z(9ZCh*F%DVwb@iEb>Ra#LCOGR57`A%E8ooLV?9wlCCd%SM4IT^4WB^sUY{0`lx{l5 zNA$@#ps!{(Ar5Dcl0_MVPJW8}^cgWbOqrkTb%DvZ(Y+xqHoT}~H+vP9TdpO4prTiu z|54z7#@e4I2FeM|=omyW5~%%57N^1En>@H+(kyE$`j8Vx+ZY4_g0$q}@1D~fyk_Kj zceZcrK2$!s|KsPeItdFwY-@NaZY-P#C_Oajr>E7m1aIWkDEUmnl(lHejp1{HC)c}N z$>0|#)PeNPkqHNdiU|*|!IAvA;Gg*emnxqs8F^;!DwSGSwp6_ia#!FiQS_Eu-Z=8s z`zy<=P^vf8RP^CijS|)ZJL@=lImjp}CE(Yw5xlIo7V)mqVw;sugQr$^)8>#r(xL{g zQcFsCDbI5bCUJ>;ci3sCS1k6qaLC+7iEOT{rKsydh9^p)9$HM$F=^CjAW6wf)W^Tr zUcI^Lvb*yEIh`iy+f&uSvb)`P9~z8829qM8j7Jg=di7r3=19}@0L=q)=m(zi?w z{g$KtEMSLmxIRq9Fl}XR6~jm$q!>KH!y>^YaheN|H3OsJH&(I>Eu@HXXB2W;Gq&%r z*t@EKpL1xQ(aoESM-K(A75t=&%>g`er$WAqw17|{!!h|dU^S{Z<*t?)Isx=a^DHm- zWXv1-)rT5?+|(lSh-%||9@GL%a8Gs1=2HWCI{hqezj0q}^dKT4f@Gj&&r6K?Xl0TV zKT3!t0r){9U{H*;2-&Hx zc!mS4W`fgq$Q?xOU7ZZlKo=KJi)0FaTYCjebz1bq3vd+-FnF)-U%FildC@B3(Nb#{ zB>HE_KNYb?Cnrf+Hmt#R;nH17_ExT40zg%`fWINbu}?N;hF92{DY zkZH!h&ftJbb%Uaj4ULTL7AKk4L``hc%4zGIhM^9zD@xrRi#h&se>4EWik-tsN~qyC zfxnZ<2(ar41cb6hT!;R|kgo0?TXOhwNH5dcA($|o5glftNj?qrSz~m$fP>^>dzzT| z1Te@~wN}7;5@5rNLgyvA41RQoJyK)rKwI|S(XajRskgUl#jNU>0NMvq{8eL3)f4+b zP;mTGo2=fRlDOubb=gE)%UKJp_ytYvX-7qqGUG$IGT5v5dsn-IK93~*IX3t}WH3Ndw|i}J|93B6*w6CA!U;Rr8E?m8G3Q+!Bwvmf_;Xv$`wN!flb zvrIX54bXy1wG)xjI2G)*9504 zdld(T@!xHax9sOe0qrk!1}(&u6=N?HJf9WzHM*TQ=!W?vC+6)mif|8qv z5*Pu&Q@*?rra`jjHff&-(%D(-@cS)OAH>(iX>&YnRxW$9fs6q}_d(!?y^GVdkB5Ie zP!8d1gY{l5rduu6z3eT5{VmeX3!rb&nr|_Ekt*_2vMB}g4P{d&iB8rS4@GeSa~Lyuhh_qiPDKW4xRz`=wN*-myQVa?CgVtLQn2yeS*%v( zsw!$K(jU;c^ar~`cb}_)FUJQyC&n*c#SG5ZJi>Bn>;dPo=|5NIUp=Z(SM?JuHp+Qb z)W5wpR~U!22TB~eGWH+YWDpqp?Zx9n^}CrHp?Dyrt_n-8gJmMUMb$$Wd3kwbXcje) zUN6WNx`wtJt!OXTeYHpZJETSr>w*(P5twlP{fG^03(g+hT$9}9Ln z-goKEcfOK!(C{0UaXNK*vxSwu6sur?Q1bh)COIOTyDG`7G&AayBsU$tF;PzTMted@_^V``~ z+ibkej3!k<4NzjExd66bxR5PX{}od@Z9>Q2FG;{XZy5e{(*ZtB;Z4)9L;-7ZmbI&q z7XB4sXj>C^BiDM>epBGV1bd+E2Xu-11PEvWa0U5xH<96(XR^5>a8=o>v3mU`=c@h>?*Bb%mGyWP*k6@bg3i{+3%5g)(MTwTT8oTz00aeVsFhRQ z8=QvhtG(yqC{!2>q5}P1IRh_iaBT2JK43=~&@|?pkRclA5}dWaH(oZh9rX`Vp#J|$ zc{DMouoAeZBO>WnHUDYxpwUy^>f$PA_jAq;u~BtZPevrsXWMxT5Uq~h1kJMK=#ou= zr#*jws7%FGfsc-V8jA1MJp^v3$-XSpFlbIDexFI0Tj0Azx2H`q4yZ~CZ6wd6j_v1; zm!GkfYczio_TUdmFe^blT<$A3pK~;SNbC@Lu^|*}Jp9WYAWo>WTl?np3&dN{Ae*~< zW&iy15SppXEh^!msy#u;c%m0;gAwrWxilgzbwNf$KioeuA-Sfc0vFa|n>p<5bfZ4) z^3dSz`w20)Im_UMZ%OMqSd`F4`_dyy88wSFDwRE4hxQsh!IRykGGDyM^S zH)jyzvr|Lkd!K3Fdmm|OPw{5d%WllC!X^d+iM6Ool3t1>;QAn&UG+(gC$=6oI51 z5^c*Uwlaan(sehVCw+#~X0Uq0571$Yf5TfqCk-uVJAx6Ar@5Qtg!Nf=nGd^v3aPQX zQFd%&j0R|q-=7{ZmJQ&VRviAUr@f7r9KneH6#0m|xg(!=2zQHFs@UV^?C3PTM(u5c zo1!BRmI>%T&4S>Hjn0HuqthWptsiYt($q?fj9`Q7Hi+m8#cUm}MsvZLC_<~Ep?J$qt8tTF3jtxeeSD|t zOrhE5cuCy>Efvj#TefL||$F;#%p1s!`y2Y_3 zq|x29p+>H!C4vOeNqOUN+5@dsa83Vs_(3GOTs{z8|9^R(@>TgE%sdscP)*L&o2v|Q zXgarL$FHJ z8t%4d5F3^p#o5#K)PA0{<|e}Gi8y=5RF2#uS|n;X+z3SVPb$0vtmB$N!g#M1NvA5$ ziW74x;1xBHs{J`&!90F~j(OVuJ>j0_@Obui%}{`!Oxy>IQ)#g1{Np=e4dq^H$X~&g z=+2y310-};Ea&7!zg%xyPxe2RDdt+v8r1ccRchrK*IQc&#DP~U1H_ew(7}W8;4PJg zVt;=eF%r}LRca`0#vM&Q(|o%Hk+a6PNpB9Y0$E#?HEX=aKO>l(*&?EO^sip|LJqH@ zW{>I@dVkB8cOBYN0HKL$+jL(=B_14*YMR;KYLM~?(N?$;>2`s8P(_tjGv^G?>jnc1 zgLFu&@ns}1y0g?vKUVbXX;j>jLOwa+;5yZpLYV_`V_23O@5*epyez z!fXwyc%Oo3W29MQKx|On3_SVuW{0wGuMZ3lGoA}{YpCe8_Z=4!8PW`$3&e$g47T}x z64W=bjHM>upoj<;4v?yqp&(EVriTYtj}0`p_YG0gKt3PMr2N6rw-mz@bCxbh6ozbG z7@BjjM{L!W!L1{3)`j_+oFI(T0{II^7@GJfw z^9v#TqD@K3!(;Z-CailOVjO<)FJg*1TZTf6YKn8&XGvE6JmpO#+PIrplMm5F8$T7W zf5Ib-0oCby4hW02MByrN9jb-Q0NZKZ7Y$Z%d_V6ZZBp^*!*mAr0oKzKp?GYG&kd+{ zpLg9{*B7M~wwSHQwIFlrwLbYNx?(Xg-ny#a3l9$)Y3QkoygEgB$B=OUcI!$px9!|f zds0_eNwzdn{)y?wsUz3O9*N2|xvdI8*x*NVV3!GlQM7{Qm0iJaIpKS2tr`dy=+}m+ zP(0=FT=@6$+RqP?SfJ$J4`(Jc`4PIA+B-g*)Sa~)qaZtfpH?ZamBnB5r~QvJXV^}R zmrPkA?-eLHR1)Q!r|YRVYGnt4m-e52k49HylRcALo=yceZ(^NJh2wQ<3K!xpj!%g` zSXa?Pfl5I}C&SHdF1#T_0=<2U!Cs2`2+?KoTVq|#HMNar9-+UJ^Ee3$#Fv4PEy%7B z9*6!@gb!ACSKA$-rqq5FO~1Uk-l?ZVso!2ti`RZ#bMKEiMyCAk$=Ce`NKATFNC?Rn zzHZ;ihH<^4pAn1;TeK{6^iT_7P_(~-jCdcyvqFG`g_FCf`iaRW`qL#TEB1?bF!A!n)`$rGUOZ0B8@g)NZNbp{9KNiAX{!&0%mSz)ShzQIf7%>cOmR<^ zMc4Gi_t7Q^Q+X0ium36Vh>#&2fk6yG%m8toF-W}Fk85*c3UE4z4a zR^k>~w(nZePQGl8(Rni(@G9a6Z-M0<$S;oiJyJ{7f{!s^U4^r5xt(mgd32tE`c#Hs2)hpJ9i(ez#iBD;KezGO zU>zFaJiG>lp_)U?@Oy6oJg3nLR@nKS96{SH!yoP=7)ls45kQZ$xyt+FrRGXst-4JS z=eL*r{SOe;)%-;jl@fh=37SO{{bTAhTS-xu+6ok~O}0g(1quiK1b;$*Ps0_KJBe1k z4c-EqtHJvBbp}K&FRtr3))Brsl{UBoa_Y3g%XgzHya(aM^(CM&#Q@`q>d|p@WF)a^ zoS>IE*vwJued}4Sh5<4Bc1`8EKyXgm)FyZ~E`Um#!4X9oG}f%V1xJClb9NWFqZ@(_+)Q#Y@`S&A*BB{V>d4%z4rb}~CRsxN6 zr^|b&tEMaD?2@)DzvV0)k+ZA5c)7e+{!=f4A`Cs$l@CRne^vwk(pi`TUYH_QUWXYnq{&l@&1gW07fR2FK?TsWvr&+dp6Ig zh`#+pL%^Wx4l}uO`DKB>c1}~zj9l1?6IH7jt_i_PWnvfDy8^9B!E%{<5d_`2l*vphvaTNCx0oKg=^M_N32CZ1~Zm!<-(Thhi8X0OJ|nT zh@a3S`Fmfy<#9oCZ)?-w#jDjI@0C8%7wBa8!Qnvo$9m9&V#wU&O##e<6l?0WJ#%~4 zT;G!ZEtLnDj*Xo!IK!6K8x@(-?d>~y;4iTox5;d+x0Vw=o} z0ob=JYt4wJZw{qx=~`**7??0VN7J21i2{5f78J(IitT&*4<1C7woLM7jB%csJn z*v39MpEg*d5SVovvZ&OUni2?X`(es~@{xC7roR#{vDLl7EYYkqGEjba#=Vc~`#2R< zs4^r2&+tE#-ZSe72vW?7Pyb!UOGv~wHo#|9Md<64ioFIH0>4$}tF?=!3u@h7n4R6l zVzC|Sp*=WkK4krO$0@1^&XsCGb*Omm+&sC z;&P;hKHP0^9(GL;U*6o4>Alv!6;{W)J7$;RZmnUkdn5u3)*N%LA-Pg5g@rAIZ(k3} zgRl67pl6xs3ex-pwNC#bXmFaiRXy1|21HH1c0-4_5`X4l;354sb3~#lHvHS%X7vE2 za`OPxYbT4vQd_ZY1l1KfbU~ENs3Jg6Dcn*eroT%^!h+co9WFgAx4SF-JDyiPl6yBb$cV0Xg$50Q;F1wg6G1EtsHWCQZoA7U)tWSbY-n?zorFJd1@H;1{o#?F~;{S-A16UEZWwn__6mq}{aDd~P( zFs4EC-R|KKwKB(gzxT_bs3_)HIqDMWX)$@tmX?dvka$pQ^8&>fY49;&6eDE+(Ysz| zRmO@deea$h#;8W#{oq<-T%pU-=*s9pA3DtT^LbHQ2(cg#I8VIu%e?Y-|5ZA#J!G%I zYY(!wj5r)2>4^T?*RgaHUE94CcI12iX8l)?Y0RA|?;cwt4f_)8Z}nRH*~+|n&?wFw zB8Y=LX_=J^+K{@BJ=HPTn0|6WCepML)99*{a*d`S;59w z+#HFhxF(Wq>#7e8hqX9YUO|=QVa}1YOSvUs(8D=`G(NoROg{;gMV5#u%Mac&?!8mMMNV7#3NTAd%jPZd&y7Yjmob-jwV+9 zdgd4R!Pm*xI7*Al=Eg`qq~(OL$Fg>@)N^TjuVUIYoLeJa#?k}0!w@yCmkJOA4g~o^ zRkjdwTjK&*i~O^rBkJNrnXhr1_J;_@a5jMk1uerA}W}56%yltvyzWuSMey%0I zQ3*=eZ<>JTV6{p#<{r-B7Ur90Ob+3wc({KKxGK1NFCb#|(=lX2n+K}1FU#(USHIUV zW*N(!`gPBdq_W3{4MaqJ?W)2elfrwXvOS9}#v>~0-e?Tf4&DRt42F+AR9Jm$2biJe$V4uYE zdaYn1eAg7{Pob=K5n1LkX`-$)+nF%=O7AT0n#8bwR0q~gvnTX=l_0GO+>e0LIO=?&H`TX3 zzU93&;XUznqduqrlu`b9rUblep8YC0igK4S9>f#c!0Hna6=)n!l7RMIyo_8mj8^t3 zWEcH7_VU}v_0rV1GYh4GjxP>f!E3H|UTY9nc>>MTmxe_wN>~DRgk=?FpTpq?Udo92 z-~Tp(EqdzSh*QtHBSEr~Kcub6gZBoNAmjx5!zBWJ5<#)7nM(10Cm<N@ofC4MApJU;|2o5b7(KA`Ya4Y%+=%+j$xCOy5*B3~Y; zaUw1%gHK@P!B`bKwew9^2N|rW!6b*ESR!;&lq;NN3wuWE$D>Ak-2gEiUKKT8RW#wiCm-PcXJF=wt$>=K`}+KnH7 z0oUg%6>@ANP+m1;0dUW#FAv>|PfR4vJ6#lko*8o}IZ+^kB=Dt@mL82Bd^&HMdEN^i zKac)~FEV+=Y6mwQ<#Kz?7|n$5f00FCGzbS47g+zDyi0GaTR3~0A)ob-zDhV8A{;Kd zoHBo0pbN_K8Xq)Y(at%mW`1$9`)2BF?>BbEFWNgFcFIWJ6)LG-?zz{-ILB&{{+>WB zNzsVqnhE~0zG#JK@!V&r4RcjrS;N0O+vKn--qK$C>X*L)D%I0oOOVgsAsvRwQ$GJ~ zbu?6{$8;$zgf45*DhZTIhCXIy^L!GU<3+t{*(>2<7Si#L*fxc#oVjrcUecCNak44R z#-@n)@32e9ZkSwpxmX>`p_lS@iJQPI3S(RA1K#sn@x^JYzPah${ysgv|8}OH*-?R? zRKB>V(BPq=AMx18eNFEbWHE5ZHM}UFAZ#0;|-MKbLdal#&HLUWw$RJm4#~ za+c{Xf0q0#VC0%wII;7iS&ZFXF$IgoE&zQS5{4PdMJ)ci^G7mPa1ChsE69#4y&FQI zlM(jU&$1_-=Nn`}KDiP9Joed|-CZtf{TJE#qtX^`mpBun=RGasj$YwLonGqs#5#5k zH*&$hqj5UeI4*UT%IG9V4wDZ>dH#j=kw!_` z*6mJSa4#^jR~E7=Wq+XK&()`XMqJ=>fUTYW-0rLA&|kf7^WB@Fw|{oRTn{z}5tGZ= z_lGU>it5{wa#-s|bS&(u;)P6M@!>kUUz$H=Y_QD5?49>0_;A!lScI>e{mT7C-@_!t zP7;(lkD(8>plLoTdv2V6!S3W}cAUQVTF@eKB&#nx{Yh$CJPRmVTDJB!(Uvd!$tAXj z*L8Y?{w!SC(HRF=8pXL@1v%uoKF?Fu1q8p)4m`D7@BM}o8^%AJ7|D;=e}LE@gZ?=U zS+X4E`FDaSi;KFk_LQ+q`WBS22ceT0i@bEP^Nr7bRfXw@+~v9wknhj+!+%o9)G^Y! zSPrzmdT_(3$?&TQp>Wstq(aY*x4?uklXfPF4QBgq?`FniZ??ahRh2e`Pd80|>7l*v`Mc%8b z_BrgQZs&hE76i7<(jGs?o_^mU`$dGxATQ_>Yts(5c;{Tz`w<6`VpHBSf3*S53c%>8 zk>LH6r#c)upV@whi#44e#AtPj|J_Dr4__PBmT`bM%w+7sZu786u*U9={$hVS4STmM zvkZe%Hm_MojC3!opO}!HnG{d;cC{^Wd%@0t#um3HJvjBO*8D?XzQvv#9_SC7}-ik|-d&P>dm z{jEM{>3Y60Mq2xFz!v*ug#E6Lm|U4CM%ZO;0wFS@*H+Vb_t+SAK%Q4e%a zrnykmM*02%5q6spHXK2xmuS&8$k|pmpD%81UY~7vN2=U2KduvbP@zltuHCbGrAeQA zy+7DUu<8pZHa-e2@Y14szsIZeCd1=*(M(2AR>3i~$R zyuv#)UDx)m_LsaN^=B7(lrv6hdWIlU`ig<8(bGInJVf8gXc zf~6nVzf!f==sFd`F)eUx3wQ%?7z5dUzRbr5if(=QjsLPyYo}YL;Nm?!lekfSF*lDk zej#odiyI1~q=Kp4>@!B&jW>dhm*z(&Bl{n^2GnbR5}f-u!UdCLJ0;@qi??TW@aJ35 z0h~aEn<&N@{f9ViaakCGK}9f@(Yw;`P<)Sy{jIQVMzY=`TsSOOOs=!iiC~Ga?i2W%WW*JWQY0di5n2H+@N#zVv{} zd!RvoQ9djOIZR>fAQ&eQ+b0MI%%gh(OJlvRT51>`Y5PWd%TcNs_K7tq(4k0&l?eYP zxTE+Ca^=SUji<0!kz(g=MUQCqj@NfCmuT}q`5xO;siZMhbJc+K@Bf*F9(S*4$l=%n zSsFpV@X=Fi>x9l2nYN#TT@WXyOY!UZaBg2O$D~iZPl8PO;-V+{$l8{XJ2yUeJaA#8Zp4JicoAt1DG%FuL!N?ZWmb4j90RezfJlZ@0>84 zhor8NK$03y1>+9sSp;C1l6sa0apWeZcJkt4{4v zCJp$?PR668I%(ZH`SmqPLZx4Ee&;H$gB&Dbx;XZ#1h3GTi+MaMV&|SY-~BylX`eKD z?46>R_!)cpZYIR!mn!qwmw&D(pwMs1m@VkHZ*PIzDdCw{af1GgB zqnr|+HH&N}PlFs3`_BJ~W?*{ZID}6mD+35hlNn+`&P*2!pEKQieE-zY^u3WyHg_S{ ztFro}7j9o)t)0$PN{%XRz4nOpooZEewazi!f2RqR`O}<9Pn0U-5;9k9(=%aVmrZJA zyfJ{%-lQ`~1`NSb8RJ>jKoJ&?Y-HEmt!ESY2EVJ4&wkYHKE?i3RZQ>Ev-gh6EdGc; z35Z6?+amu#DKP5J@jrF2l;tT?d{5iC1fG|Jqq(EQG-d=@4^^X10_FtNp7m2KWET^5 zV~E>RG`sqOnS#laOd5U1y#2lS0QOtw=l9R~;H%c~RTH&;*BXV1S3@7#y8KcrNn^WP zb`6knN8k5prCzo zMQOAf+2{**`F-<$aBlD3`TUZ1T#WwlK7*sD6+qhkeDpC{+Smg$r2`eI{ z76qnME`@q7wz!R@=<7$0c(!V*-P*lbAU5RwDG7CgPUWGeQEANJO@>**27KShyOqB;>|%=bvZdm{)t?&s<*$ zFqdk{`0-;*qC-2g_UI=@K(lrq2iWsP*^hfQthPM&65q(gKiqTE92)Mga2{0hpRMQF5k{{c&g$pM#2y7ns;-~N z(t^cyQ;H75AVm%d?e3FpFjuB7DXFh7dwedAStwzNu<&PZQtt{CbI}?;=s!iT1+nUx@;ZW`bvW* z`ZL@0ocs;8K{**gf1Nj{_?WfO)zb|-mB6-yYyStfb8T3(NR8(~@njGhmF+NF8h6F0#M>a{H)F_7#UZ_GebH=fb#`g!u4i1OcEPDt6^K%1vSR z|J>(I@N&08@qJd0<+yS=zCr9-TMKUmP%PFAl)rcV1);q-LM^h{pF6VZX7BLwyF8C* zCFif3Y~ePN-tE~NHx#agvp(@Nbzh6a;c!)Tbyo)M1O7@s%)E2T>i&^Ip=*~oo8KSa zdZpdXWt)8VS}^DN-u6pm^JmF^XRaK>ycXGib>(AURL-;flal7G~wUX@8nhi$5$7YFd z6+<}jPIMEIL)!+{j9+&R#gE-3vScZ)a$ZuE){QYRFaSqHs0|60v@_L$v73oFjJR{+ z-*va|J#36b(MB=M?(pM{PhXF?9DTvhP)=K`JMqjw8+*=A@n}b^Ku(k3At#EHB)XvZ z%%QS4>J59<%b03|pE`U+n^E=1fY_3fk|iOoC85*}Dw)tyn@j%BabdEUmMx};C$;Aa zv|X7aQfdLl&+-bWT@r}zc#mRyZVAysms3IbdRyD#M-|ffwhu?yI*NFer5{`~EQ)#z zNWI2V@?R7Yn!MvFJnAO;#e>cEcyu+*8b@Eh;dY7R-FE(v_2U;}vANqbZGblK^BuZI zEJ>$EQrXjW`Cf5&`sAzM?j=eST6_0iXU+pT#Zu>f!sLZ~${W(HytI4`b4wOH3#!oUx%2>7~|rcq3z+ z9z%5^3k}?!D4UJDdz4k=?MS{KgH99s#QI6qk4ZP?t=|Yt&(1an)9(Cx$WcJuYonE>CR*v*%RL9aXziH;Dv3eY0=A&Kq7Z=4E z()Xitb4Ad~982GssuIb?3@nOx|3Xe|dv?X5uk@^1CTn3u}zcvOqvSZJE2oM_5Dz+aJc@@1ml7}(B)^WGdtS%{yKFb zR$utx8)Yvv#b6Yy!fs&vQ@+P>=H@P@o~ntYQ{!b7iYVL9=N1K0RO zjPH)ah${P?7pAG3Y)gE6)jC#2*Lmafj(qx?ACePLy%&{wGNM9%TIR&nQ(~n9+5x97 zi|eBGgn)k*F@xVrCAVii zVQs5_4Q8T0p99J47=8F4@Mr~F=iw$-yD z!u7){rkD>-dCW%TqLo>nYjum~8?(F-;49EM=lj~UuhAyBe)%BzA>U zAgLxqyYY)Y+MAJ z<9B`&$|n@=A1V2J18z>It%lX3gX+YieTaojY~xTAkB5=v(90(EFwXZ?z+=m}c@~;MbQ{;PQ%W~#?EnzbF z!Df3DZs z(wBuMN*jorW^R(gP_(ji zGwWZ2=HMU@enjzAdmRU)YAPV{?1*Y?inqS6%-r_X4Yq@8k@!e1<`XqKcQ~9W+uI{w zr}M=|SwBmPCH6Xv{k38aaSTifIKYOcx}S()-`e@~!N~%w*)%v}WI~p&9LfosFX_LqAJ>=FHJQez_znbArWI z@(p+RJpf;CI}@pYowyKdt|R*R$>hg=BW}lD==SABr+FNNNj(sHx4pPovzs|8u>ONj z4|rsWovCBCSHH4lJbov4F^$#J)6?xgHs}zqU*&t0v*u&|xsVyw9u__vUh{6Wgp--< z2Tie2mipt-4$K;mdT1&&A}DAjBqZc>ar^43a}ELy7rkTI{#WC;qul0GBGay>snan$?&N7;J^QoYCj z)1QT-X%#$I%da~RWdr7N2M~;kaLbLbc`rb$KEp`tD}TcI%blUk(DSjt>4QH z_kKR#-}jHNzdNV*`!$~9F`h?ytAY(myD>H_-0h)Bub3j-%I1KdJ>D!}mLymG=ybA* zx%kw*7zKpMDOD*2__tV31v7aLh@LtkQ#x(yEOO^v!|jlLfn%>;buD1ctbBiKgtdi! z^6N7%OY&nQc5}yPI>jY>?)0Zc{iVlXIW=gOz!@9xMfoq2Lm>a3*lJZ3?BKzvuv#i3`4`q+|;Sm=wW3KdVb z@IIP0a_6pHCtp4*DpFYmWTEpWj82+N*{8ecxlh=4nn_!Crh|9kjH~POBno_AK--st zKBe7?W?7s*gYx^cK}n$v%T!J)fAmPo9+loT28yp~)6LMwG*3J+gFC-49Pyp0@q6sM zLW-uSkcf%C%*dE9gEni2hS#|Ej^9r zyAbh=l6J1(T#yH=Kz89&)|;6gO~mL7_i3K6!`{%j2H{Q1Rb)0j<9N5r0E5c{hTmrJH*1e307qi;cSv=6{_p-xoQw378tS=*x2O>x0UTP=ML{p}Kz zVtKnHpiI~F8pNJSuh^LS&a*iF`)z}VvX=-pB~RWZdDK`Ft(7p+E|B3Eq(FAOh;t_| zYXAQImP-HO?{VDR@ z6O40cqOhL(Pp7?P?N!2Fp>+@tn^`b3ox!6RYYXzYXm||7L;_%oyP@DxpOTM-9!uT~ zD+D~gg5G+2lyNI!E+9#wAEROQxtgs%A!rMn?lPF6{S6z3cNQiAr9?a8h=40!sNH&@w^|$ZG_S`9@4>s0by?tfVV`HEt zIu>^s&|D@)o46R0&dCJX%OVntEX>idq3ibI-OKv?;@#mCxfg2SAN%2Q_VQslq)%gw zSWivr3RQNg zYwokb6>#Pn&^Jyu7>&4iMer)xEs;qM}KMiiJ&sswE0At z+xqgN(1K`@qk;;c-n2JTu5}1!3vJ$wxjnbApt>_2v>JldH8pW)_`j_bs!L-;s=i5l$6Xz3OSrgB>fk}; z#SeYbK6;3($pT6pj4ksiPq0I=OXS(v^C?@=Ni@5VV0#7o;kRSoLCy~ekmIkImtOr| zEnmk&Yy)u3K`}Wt!JhXt;T)WtW7XR5jTBvk-I*aR@pos~LWt`*H^|Q#-hD0HGh&fN zkzNotuf(nHyyCH&U!Dx_3FeOv&{uvNLg%d z6TkH4*QxH?aXd60(F;SJx630*v%$#yje2J*ST2q5Ykm{gUTZil@-~_mbC#5cqe{Wy z9T%Jb&t&`jQ@rT=0KI>+is)Ze$VpRQ^NV-IlE=aF%dP&$- z5}K&616)1}`CK2=n4jk9>Xl$>-XzUJT!L@P{8aTu*ZhS1G?ybcsB0jPi8)m z1bMQw+SFbOs3(K*TlWFk5O}6yRmKY^8{asb&F)k1m=9GW)HsN<#YQ&4T zGC{{tl?N-I0*HX6DUYkOvti2yrlpAp-%7W7hlQ60&;QX@q6^FhJIB&Kv~uUcZa0Gb znB9+?%*97W9E-6|ha37^H($AOWlV=lB!LJ4%}~eI7c^3pr}{CL=K_pO$%zuL3mn}V z@2^AZM20iJ>*wGix#blxO|cF~uvWMB;9haPnglnYJzgH-qPyev7NU<`C|*R}b!K{; zUcamJo7p@$TD0}URkg-dfGC5w%Xn0XSHMr8#-ad3vMUc}6Swf~TjwPYkBQTpxzYf8 z3ne>9$~#4o-kD1YlCt1poVj{OB$H!6)rJ7@$n0;pFZG$MqN1Wro?Lso1YGzOHRO|_AnrZ_JtkE;U}Sy0e{*lyD1zt_^R=fgyipHukx+RxR_PG>RySlVv(3e8iOGiP-w52JUO;vm&6&q~FN#1kww_NFXm7jix6WCNON#!UvQ$f{h z&@AD`nY*Zo{6uWE@WEU5--&G1BJV`>auLDf(u*!|L&1cY=towTJ_E|2y zhr!TeEx04TbZzA4x)c2c>2$AH=x+n&ec!|e3~h1prrc;|<~a_JbZ?spdTTOf2gU@&SW8hF}z^?0kl5* z)H%qd_4Q(t5sZ=k{(hbW=Mj6~V)1hVyog41s9 z&qVek61_CSdFYzV-?*~ykRlw_Rvd)dv1(03rt-({-@i|Ry?MIQ|8H~YZI!3MNN&rp zOSfhZ%<{(OmKBX<@wi2x;ZNrd`Yh;Ofqly6wBv%l7yEdtDU82^7yo>~476m$Ow*fr zQC0eeeW>bLR%uG={Il1*WQ`20a)ILIF+4d$KPX>{cACYu73Z9N4f^ckM>ij~lm`#4 zsT`7j4#47;B}ks`$mY5raXBJ{$*ihBU*81ge@gN}6jl@Vfe|oPuV@Xi*`!-7J=)CU z;vIY#IXy29xQPrkHZ?UBKzidMVYrmUtzbfGqz*0YFVe;+VJhZ-7asKUoW?28-K_?MHf4-QhZOu1jFMu+86?$+@LYhb&3m_e(R%AcmUb!<=< zmYI&!EgxCFdH(ohI7Luzr1tUY-qu|?3aa-8G;KEWT9G!513Jch8HDMEUOo)y-3MO0 zFe(1)G6g>h}?5q7BX7sSKH(#uXAr~Ji z_CX2?T49)5a} zrpbKjK_r{${c*wYE=di4U*8FtfRV@VT(AH49(|Kbxw|H1!n|OtguR_p1A7^_;(G@& z{KhQaY~)YmAI9&%iHr0BJS0PmHrA*OSLT+X=?6t>!vSsf++W9UbE^$#(QH%Z-z}xE zK5g+i^ziRhj?4|WloqU1O>svR1L#@$u*Y;-kuHD}c8V3)iTCyOp++%yJ``gsQ0rkr zARh9h6WK4yV?I6Z5O0-Odt%Xghvk*b0snn|`%Zbh4?UKw`WFe#o;AA7h@&5iS4Tm&$T8B||f@QceY zl*JUNDB06EGwxglEt93`>)6=I4LzABn|hZa%ikrTU&inHZB%s}I)5mmxRPXyY|_fJ zDAuFJ!0zzf{l@XyZSK=Fj8zI@K0($LDjcQFzT#2@g?tAzT8i%C>U!<_7Uu$SI|->f z_NQ`*fHJXTJh`V0v62|Nc`=iu3AZ!Da=k9sw042q14YIX7?l8I3V?i)L^>BJfogdR z=tB8KK($9Lj40M?kPA4vyaU!>=Mo9bn(P~-8p*Jnzhb0=?BN5r$PGi{M#I}V3-nL` zrmcREAbml%Ljs&#lcvp`W}`UUF|J&LhLjE0ds$7xcUCFspc~FLoB&}{-4_@7DWk1C zcGorN8#zm}Ow!5`Q?6HXT5MYpL9d-(^~5h-G}`Zz=Xv|ElyeMw(J38B^RCkHJ%9wU z5U1kF4|t(2{9^ECAH(6Ot-k^gINLQZk-ux0+8lPYkABzPSMQ0{}TgXR&LbI3s z?Ap{~QC;rZ==^BCECmV{HtrLfnHw! zHl(3;E~xwraxUnDQ_fRM)_FkH*)p%HNb6z|#WpFe+Y ztu|x{e?UrFg1DVOe`_mR2_n}|988k6i-sf_F?)BNIzPEY$(Pi-Y?g(I8a!EAx=y;M zJRk@VThH|j@n2JTP`g-{?zE~dE0b6p%cByvi+EJc>W?CK4?fsqQMXwwVk$B<1AANL zwP5vu44MA%oA1LRzrqb@en{{n<{sng>%uu(8wBSQ;62%YU!L6Ge(CI|beO_9?01fV zLZ9CXvcCroAOUbvZFd1H*bx+L#RYS`U~R)(XiHk!D&2%fk)_Zet!R3d9p$itaI1&K zoo5RC*_c95M4l|I%q1H$ONZfHBCrJ*4GyvT%q(zn=3Fq z`AJjQ*Vh2}x95azdn_XoUJQaC|If+YHxt0n?BBJ>( zzm&Lq?V95A%fQkLCI^UI&!2_?nhVALw-ce$P>;Fh+rH~&A%mUgODx1t*&h4US|moq zOQb&nq|`zj-_8`x9j-A?9nWk!Fug*5r_)N`jI5)pgf6gKy*(oOz|w_j*g*Q2A?bJ`DGDZ*mZUy!1Sl9fP9G1PK@ z;~TXiz!SH8*?n}1SCtQyZi};L_FW$t0YHF1;CDdX^WsH_CLF)nA&}fg7Y}+MAmUyK zO6(oUC11$1Y?pO=!Hkb$7qH#8L+2xBAfAa<7fCzeSPk^CP*rBWZVuQiX3CdCrxJADCi*-Q)K1|W zx){gOr%&fsS5{73>XyJBhAP-#wc$W#AwCJjzG>TB3%0`VDI<%yLL2JR0|~0i7;@Md zWl5om6!lg#99|}8%29ohK&A5lY71Bn&_f$MC|VJtZb*GTp2bm}?(>nY z`O9u0m2-qPt{TM?I9uivEe8{^>gwv&E@6esUS5>!&Bb5~vOLasZMx@I#nr+*gs-CB zyPq%N!@GRYN9~T|7A00zS7k!597eXdzQIBEmX?-pFMF6lJ#zM)#pW0I4*|gRX^l$}T?+bir(MQgDE|ol(pjL! z4z`Q4mO^arC#txuiqjSfOFPf+F{k#1UNOTXQ+UsO$9@|^u`M0NX3VVj+1XSgR}|)X zFB^l3)1{pN%nDeB(aoN7$m528HB97aEQ>wix(xg-~ib3U{ zipdT~OVxgR@1~4AFkJhk77M*ORFTcqnyU>zr7sD}m(uT=5xhj*e^IekHKz8nweRm2 zk}w6_Q+1hQ)ZeLU51!j`>(~E$>5k6LrCA7-j)8*PbqVeVPylm4C&ohGv}|>(Xz^}2 z#`|vBn+=KluR{anT^p(v53vrF-F`r`#TBq?TDYT5^V0#4MP&P^O6Qrow2ZhhJZf_id!4ylKCPLvP**81EgRR#i84My57zZBxx?JOo6yA^SBz6O znc6xB`cs{VrqCVH#!slEI$Y3Gdx;oOl^P0KPt?^gA0RehlP0 zkZfpu2j>C2!?S-Y>>!D0gml_(&4M1jB`pdzpLI%2Wgkr&=B_p_j4TKoZUBSv=-x!7WC3fJPkX2MUgC(iKep{JSTZUu1Fs-EJEN zHuqCojqae>ntbz1UJmD4alEj?NI;BlI2TmU7a{G7t3cRosHsB!ksCaD648hKyRvNX zOBdF5WE^ja9~A3au}~&CC^Alvvbv9#)tA*G07@DF4N{vQ86ij?hJm#-0Kkfo2~qVB z8gKFp*f1nFn{NUEzBs?6cD#bs(Yn+^K>jqs>`LS3B3%yey$E#=++%pR$p#`aCKAV> z0XYX7sIiYFT4!h2j(q#3w&OXV5o5M0C$?nhNY{s(m*8-~q7GEL9&v#U$<&kY)e6@- zl}0gWB~nQ9V|r;Spu^>r;@oTudwDR8dR!t~PylZnKh^x)GOPLfRlm?W>N}fIiA(wd zHTI9>1F-wy>gQ;wV&$J`Q!K5)hAiOj)n8v7r2u4H)0_jcwDm^*(qfGl`c{dszSRYf zMKwQ~xoqy;HSa5|{6JxFmUN>@k01&=e0c!~dsb#Z5lS40u@kpWYwRAoL45b_o#ti} zMZmzNgmPhgoV*t#_0%79NggkBx>)vZ_eKb;A{<_Zs2EMPy)Obb6JBuW%FyJE_X-0X z&D54l0QYsm+5kau=`~_m%SWe0awO_Z06mY{7$!Fb__;vEHDa4U%H#qqu0WYy&p$=J z$>zO*Ni1>Jr{0Mr-`D za(uDjfbgHw6Xc6Mn0RJ$ydIwdLGZiWEHCKerxO$m?wau(%f~|^xLc#QyJd;pGra3H zX(m$Pe9U$Cxp^<-{1{-epTX6>bkaif4!l9-J?gyG(O}{PFyESiTMy`febGF4Q2cP* z7ICeAcB$%lN3Q(LI|qTw4F$TiKmL4z7ZS7Kzp3fyYXzK91M#DF7eXEi=*2RhFcc2 zj*DwyQH1|dP%*<6!3ezk=cN`P97&dP6HR?wT*6CvP(4d2>L+d$5ZyuLG8lv3B237g z_MAi`IK`?15^x&na;~7Ai~$TP-y>^V+F)QS2SvTYk`!*t`uWS372!V#(toczK*!+l z9JX=0MEZUy?c8%g2RxqNxJ2(8j62=M>~*PrUK-P+uo1x~O(OK~1zx+B9D=L@Y~1(n zPm*R}k{X+LRh8|S7{uwAH4IjB4yt<^UQq)}<#9Vqt3RIpro28S$PjU~OfO!W+QP}f zQI{yin+YX*vNai8Oo29dqFY0Uwso^wm+F2-eCAy+*S6hUu6Fw&hc*Ohsq?W zKWRbp-c=hQ8A$a+08nW&OCQ7Kv$g`_rXp|8uZyCvZH0^~sHGI&-$kH~|3r zuw6BEsyGppy1Rb;%3K?o{hDnYqae&+2|iP46UVUJ2f%VM+BP{IYNNvt=!fpMrx!fH z<#Ad&>{v?eBZx~K^s71raF-q)>dSFK`3g>ZqII)v1x|Dr!0dp9Gt=7a2bdnn>6^kZ zuxklFVNyL9DmqXLN-JOcfIQ8jU!omSz$0jv2xk4}o9K7&fhu@mLp5Hd zsJ>k~PccoB8nX>W*8ltSc>)*OT>p6lCeMzg8F{^)>G{vN(aWta_3IZ=c z%Y#8O7(i~zVmKN~KN_r{svq27iq|D{apyukH8O5BuB5kDnHu;oQLK+>Pm7O!=c(~K@I%wP>Qvqm z*?~!7-0jP;{i$Lwzn-}{4^Na~3+eU0OB&&9Kob&*jx$L)10b_1HONpQZz>{#7{q)q zL-1qkaKA!nA!g+D5(MB@9RMPX0W@0fmLSg{-QRm>b3plTgX2mn$BDA~vAT@stp^-) zNWO4T%F+VNAy82I2|qs`D#608Z6RTurlW?Yd5I7LoSeoc4`JPkak&AugkBi#+Qi&6FAfEtG;f!H_sIEO(V8E6~xVxL&y9e_sjwKq<)!+#t z4jjP{c6@|?rL6yy1sBt=uGUzXY8nMlKcJt8_U&W=%livpZF###6 z=N^N$+u2=i_5?pW^Gj1@8g^zGm}j`eVCf3~gZah`J(1L>?a6$>c&8SUFGFh%^y3&` z3KDYq)Bbe1rd9?7f14NNi(xKSb!c`)pd6cqsqNGcN>>8m(-+W6|KbROrz>#1{85&q zyfZ-AYm|EpW)*o_3IT*43+@lJS-qNoC=ms&S(&t(7hBWSxPNH|11|i$G{`)Xo-_tu zct1o~g@8cbsDD!zQdZU>e*d&2qD~wBx^BR60$_K2OJu;o3q&$T?q6!qlC;@O#Yltl zr2TGsNzKlC6AhUSa>N)ctbVZwzw-sB(ipS|jQpp9lY~o`cCDB;A+to&3{lR`&P~nf zazLsbuy4ohZOr)NNIfq=&4bQFc=NxMmyZ${&Vfv!Z}));c8QeO=uO6y>G$!tI*H>x3$+h5Ii zxmn%-2|f(?q!U3ecUv#XW^v+Q;XrlJ zL`sm+0a~Xy&^e?)xBEa$#Nn0p2|?2I>hA+;HyUF?-K%hyIS0`j%yu4hh85L(7$bMe zP7-nI0qCbe|0Ag>2pliP#oKIhBVjnF$~Zvl09eBF=ilEShYjD^tE_|Isp7uKt1uEZ zdm=D!SRBx>U!OmJ{<#;>rx6Aw5`ZP&w(-!WL?Ndao~jsVmb0FCg`31Kobj8L&P_)c ze|%j;$|~TjZkORIY&i)|N;ZeOCFR-F)4zfJuq`1V;6O@B%C->pIhOdCOjShZh7<73 zzL$%-ajIFY0ScMxttY?=Yf><$j`Htn)I>q(sdlS;8MO4 z;}vTBTkwFTSWTs(eM(FOy zP=K#V27!16xQ_`{>Uu^Zr_uY$?u9SxE=1g}niO+bsb=K6tgMSG|0ew{0BzhL-h ztlZj`Zkcl#>B-$x0qNnf28GHJTsoTeJ-m;Qa=R7#cXim%^QC*%8=yQr&fL)&~$kix+uw@?YnU~ zw+W)|MKcw*Ues>7vLbOFWqt?iV&#{gx@99?dh|vlQPE0EKFt;eaGH^~%J{aY+=f-D;CZN49lS`KapPhM4!PZj)r9V{;{;HX{MO?ADW{bLfiGr~ohNgfi$I145Sa1TUTo>UdezS9{f1 z6b_(<@RK;ne{k7xQYL5S4D8<*!Q8sq9rCNnI51gx390|sMkKtX15x$~7b&S~ynM9l z*TY-}!K#L2)}>{G3zO8z-4K~o%mTUlR-P5KF~m8!;0zF>(6gx!jZ|z=ANvJfy|U>K z`{BVIx@DoAWR_X|iefzfM9ssO3w-o01@sCj{Zc3DC$U!b8 zQQR4^Pr+m={;bpy14aUwnRCbZ-S7<~LxNZExA%a|vdpA}}csGFEY8r@Wd2W@hJ0qAc@I!)?MOy?) zJ&pWUVa)2E)W!L#KeWsJ_wBZ4OOW@6*H76S&Sh#sZM2@{Dp;4?Pe+XYeDmf_Pm9*( zcj(;8^k2ukaunXJdKw${?L{C^?xgI}XB(Y*p2MxckW(dIm$Za*2yb*_4|1kq+%njQ zAakT_A{naqCR&w#kekhUnDjh36rHIS;&=qB6QLh02Am|xYRn+PW*{lRL=pfg`RCK& z&w&*X-Lm=LvxS}dF)0}|B+t3id9Tmhbzj7@_xbspuYJ)#Mwc}T90+2tQ6{Qoej*M? z{6M|+LY~~#)~3U`y?nff`RS8HV1vkBmY+sOm7jT{!bYm7n;O$08dq6HFUN?~dtPdCGbEnNi`PU6LqzyN2P}y_03wj}&WVPZu$wUNN z4FTLSdy#$KorVj4$UhiE2Teaz_pq*QBqRmv{V;tw67>KQ#E!J@K(2M`7VEBQSadvg zXKhUl_kZ*NOFcK2n};p3xQ>RAitiqIL;2J2frjEqspTsJRNt=C90sT?>2yPu*0aDG zrmZ9G3zBq`bQm~4O_d2!n=PEg$LPxh(J6{GduradB;n+{q!hoAI*Yy4V-7EXpz@tD zEVH444C&nk(!en?xOwUt7gJ!m)95DOcfE=4`Tj0Deg8vw{;8U^KU5p$@-gw;*jgvbH98c5Cxv zDhmk@!qw7*JqNyPw+i-+qBOJlGg61}f``iUC9k0ipJCU}p2#_P2iyje zZ@SWxMnVc$Nf;2y1EqT9O)%R4kAMOlO7^W?TRG&R-Pb=rDz+B}SJBcG&hr~?eau1e zJIyEbSrK!pYapLvDDw1P#OIIWo)Nrw{U8Y=1TZXyvqcu;E-1%BO@aX@_xA+_kqvvu zK?-KM9Z;8-dhce~a_O`Z^ZAi-9*OUeX7~Fy`C_3N-&;m*5yHBkxQ@93S>uhfXXV=C zd7&Qxp87xV0#y&DuzMvdkA?M$9Wbx?e-_Rag@OYZAcJz@gQv-`Ah?9g72qB3!H)iX z`7)w-GsGnEa|<{Dyf?)HV*KF?mqCc!4iXebjs$fXT8oAsi(?q0$ImpjTS7Ea-e%i zrV(Q={=E9GFUwiKJb)9v^f1)ehf&arixdt|h5|G=4+eD7NqF+&;^N^k4C-IeDizJr zs)}Y4mLTibAGcYo_jYL5b(=Y<32pJZQEK(FJqN_iZJlHygfcm>`#gI#2vIvZ$PLT( zRs@|LTVDOfk=mr6hm)*qkty@)@In~Y;zKtjUzm1UMqzye3&T@{{0>ZYq9~c%0LwX- zu%S}ocOh5DWO5efKi^!~x7tIY@Nqne`U$}!#IP423WSInQ{T*2W8dnu)gC3M9(V`B z6#N{JkGuvbFvSi_{o1@6FfYHsA^R8Qi?ZNCg%snQ6~Dr+Do5L$d5Yp&yOSvGY)ULm z#|L6SA&`NXISriZDbSlbJ9xHOzaT>Y6zA7BfAHPR&nvPC=I_Lxq@2U<2`F!<9~?@} z+=HD)c`W=cx-bU@MwEO0x_dR`iUCldu=#=}jT0psvQ0-u6UVEPe<{d3?P4RoIX|yn zi|zj)EKk_O(XXPl&vVT0{agycZZexgTmQwv@wWTO2Mp;?N(fHd9oo| zy5(PG8k>0*Id;{(oUQI{7CK{M{v;oikDHoH7B#ZIq-~FI4mnA1TPD{?r^MN5oqLEW-C-?Zv|b z-VY9{XnS9~CM?DQPX3qwI;JAqTOSTvElba!x*k- zKn$}PT2z(w6(#Pn{a77I2NbNQE#q(Ov)Njs)|GZB`!=*H)Y$hP!S_0&) zd5pUSH--tH6Ar_PKKM^}6GRuLpJ*Buitgtn(efdK9|EI!@mlL;Xgxpngv2HPI~?Tc zH>=hm(&p~0;Ym1AD1ZjIAaB-)XV12{fY!PaEa9V}tW80pfBV(3iQD^khaAewCy77) zbfs9GDhaK7SgcEXM)A{*zCHMGAn^EuUzujyy;|tBWu*C>T?){EU|Rl)f1LRgFmYSV z5qwY* zAvR=OXtFkT(F#~+Ym#+=9Cs%dJZ3we@P1nvK5vM_>oH|nl*lj#cnOa4Wx3eMT}Y}L zyR$M}FoS=OsDUIO{8Mb(}-J22sCEpK#mlI+3S!bv{6@ zQ&}0hd8V0=`kgRAArEqbEWA;hiG9V!}$l6AKGaK>X^O__1t%9<3~+emB%JF`74* z>nw>4*j0gG*y3O1RNdj}s?2bvcxmg(J+ZKx=RQuEgYmw2F-)SO39$~7l}nmVo?;Ep zrO_OAyOQZjx|nZbY&8WqW-TMwwipVfd`A8pmJz#{TR|4+hHf8Q7gw z345FHCaxYHVrbbqZt?5J#D0L~e*wxln|#%s!~da;>B7ssg-yU;KOdijvys^(wr!1&L|US^OQLF=&Ej5zr)F{s-=7vM z>Zw)Rn&`hXMi(|IfeA;X*$TMV-Di!BdL0|It!4lSRH;yad-M-QWN%yiP`X*{6~}@a zSeM^&!3XdExu|$I5|-zJmJIjaVWB+@$$(5$);98gf`m`q-tSMgM zS%N-hzw(Ko|3M4}Gp3RWWtCK)5vbX|Ur!%-cc z)K1nLM5l(4_7m~EG7A9MxyH*rX8A%0`;b?Gu%Amh0GyW>5?DSK!y`-!m7X9&|6aqjWi`sAeeYA7? zMwCkGyrwtL!UON2wbv~tKmTdH&r4E|>iRTsJxUV44s*%GxtF%A1bSUM<*{h5xgoWZ zrhIiC=j!3JR)OfH!#fY9!^1bb57Ni9QBqzyu63+f-iT@ocTN8uH40&IsiHJK(n=_id6FxR0N(~2-7E+x9=rb(;`a04cJvg}xi9k-FIpJk9Cwa*p zg&pv;Lzigoo@Y9L{IUf^-HnioBh)K!(CEO^C7 zhzqXaEk|&!o^{E<49|mm7KN`HT#s(dvykr;1|C^aSUTtpC`5F)0qD{*GXTUmd%?qF zv%4gH?9gU1ZUDS+mv+O2+ii93S^R-hiQnr!zrMl+Rl3!5TrmLmBS{oq^xAE<6IHnf zU`$8kfb%+hQRFNM*!?}fZS56w#UqfP*{8DRp)5--4F~$Nde~4@iw7@oQ>61HNTIsE!tWcRc}FRE86Sa?s{(!^3}{7uO;6|Xlx5&q)r4KS4iVM`f9T6=#KRAlkT+tuQL;ORbC$@@6h^XA+>VLXe791up&fXTQZn*LRUZh9z=;Zd z1_Yz7hrq%5M*4Sd2ir?=8impzCr5iUZ{WcD*&BtrO%ZVlqvrz+UTFf$4gL8Ax1#LE<( zsc87QT6wxt`U3lSc-Q^{2oCiJ!wB8f&{loJ&e=L_6jOa=-W5OgBE2A56G~yFD+7 z!ulN~;iGF`zm^RHUG5l&_rL#_Rp9$KxzW;qS@F@!-Mx$6L%tnMx)x3@dJkog<~XI)4?u(WO zknUIfhL@)T&0hQ;&1F#Im2^lRZ`#9-c7b-1b&u?VM<%I2>idzyWP)2JY0!}v(WaQz z2+UR!C;+;T{)~=}#_9)wbMzaS@N&1JD_g49(|hd@2w;?F<6!ytKFe22tq-*dT&nef zLgcH-8a9-(H7dc_I+FvB00Ljtb14X68Pb1b6e}OTQO-PAhmIegZ}W9NiwpDe+~H)8 zZk!68dqgE`BQLDuK*_KnnU>%~op4exsRpLlZ5kaGzaInpQqS?>s!I)SYl@2UP{Bd3 z$>M7r7o~n&dJZgja{>7MF=NL!fn5nH67ni7KHO3y$j~Kh)z{&Bb%+IMqTyemxGbjCcqWBPD|x<15IdnE6rSd#|~{i z5niBCP)7uR^*7&svry_1^wd#VxX(09mVjk9C^$$s$^L9gIcuTip4DS%H!&fQchz=I z!`>T=9J2u0g1(`lc8=f;)cDO-7A23wC)3U$49gR6M?A20vNtPge=X^V$Sib+AiLU6 z9{>FF|7nm)g;~8wi<=j!P%U6%q}MX;ZfbKxP*6~8CP!a+Fqmrva+4qx4OhDfq^{fU z$d9xvWW@|=-=&Eh7i8y|Q+CL`6S!*IDlmb*&Z)6&71+I=gju#pYSwy#xuoB;w6(vD zqDnWcg#eEk``Wj8)PN`Crs{`I@5C#Qu6?+^uW}mt3DHoi(x!>18I9;^-)n=_Leyn) zOqrUTVwkOyG?D*-+c8sYD-OiVnUo-7Gc1q(3R{$2+grh(?{3TL`aFXvML#=kY)j)Y zU>k&l^MHEK_g*H)Q5%zI;fCnK|6Umh;l>6&(bpRF8v|9qWQP91I}?GaZA`^FDuH=R zkO+=adlVe3E{GumWf>V#;AaDQ_9DRSiLsx+%nfjp&6Y?pwEWOaEgfpBStX5aB^cbR+ywV z7zL0nhoxZ&&% z&UYv1Olb8^c+_`%$`P3+Bw$vO!E`h*cuIJK_2-+c|34bI$$Q{b*YM$Vg>78N_gn0Nj-`iWox|2$)oLJCifqfPQfj1glq@g@meT z6yHD(JF1@D_pl!_p=AE8b8<=E&jK$Lstrs_IdisB<3yBT=@SG6*dQjzz;6|S4R2H5 zV($qUyOnF*lY4q^@=ta(F@gK|;c8%FZ=mF^4+3cR8UJsFxuG~}H(B1FYJ=L42pQt!C)516r$qcM14A_s&` zA>Oz>*!|4Gz!D9VEvY-eLzx}f)cG;_AL6lPJ|;&`?ajY(b9`?Bmg7)|X*=Y5&52qa zEu^tqrhZUJ^@y#Bxa$5T1s%P~7axEBZZJk0rZs{Ypdrm#m<`waJ}cIGI7gy-X6{&(8c|KEI;tP#TguH-lF^)JWW6b}gwA`47K ztP}bFbXgKT4F8$aG8>i2*))-^FtWKINJ=7a;a=#ssixBJ`3}sJyOn0NE`8DY70GiNk51VDkuqIq|TbU&&EOj$M zA9kalJts6^R+MPVN+wc~G(21e4yjlVaaq`kB#1vycks@en3wb4%Agy(fBG_r`*5(JAV) z)khW$k;Dye_Zhi-6{>(q7%=qc2LVp8+3ADW@J2^ z8}`i_9irbWYn)A5QgQ=B1R8|T2?bM|kYnZ@Jk*aH67_|(HBA6UBuWnq3^-q%+=h9^6Jm6W>Epd+kV?)C4lG3N@8EZyl!t za&Iqx&t}*rU~)T-2M;m7a}c|n<(B#adD24vVbb1DYgeb>=zvt+4d^L~`PmH1 zDNmS`nxJqCPNx!p`qkzDVmS$jZ&O9gwvHkQTWx8Jn}D3psO}Q&_A7dGz?2Kw9`^2$ zZDZeffwGzAI|bF}v(!``+0%5HFw*`52YQysbs(#4;rVHV8MyzjJ6iCGZUmed1dDoy zvt>``p@(=+q8tCv)}a@Tl%>?CoZsaQ@XTU>VN^-oAE1Ztz&si5fA77q9g@vs2&ewb zTkP2@^Y&P{Y$i6U{f46ZUEKppLor#Y(B$WsA3dT`ng4r)i?+%3v<9{Y5g!{SU}h)} z$0cb~<6z%(cK7x4#foEaFGi8vSx*1T1{ zJa>DA*6?L6pL-bcYf-g^Ir*d1DzWbApZG>iSe=R3(Fkus-o`K&y89)dBa)121ND=? zzhFy`#AP5yb4Pdz$*}xAF$8(Tu7eY-{+E>f#olVehU^ppmXc@MnEL5ph8#Bdgn-iY zB)8z{=c2^~Zy~!=)*CY}BToXCc78Vfe}Q}c-^YrcJcNEe^pb_a!l7|#`cUPCG&H*( zCFr*P+VSFmwUO5T(PF+o#~sm)!2Irs>`r5;{6+#G)Hof?Ja9fEh1j6JH8eD&v#{Bm zK-aake;+$$5W!2w)qe#P>|*TneJ?>%aj`G9ZrS^0xF|d%8Cn*Unn?QM45mKCj{paT zHgnV35n%5O0+UqmkYMEIo2rKIO?7>4W{5jFI@q8IS5KqMq5%clvEuFUXI=v+DUQw? z2)|1Xe`0GBKzDj)WYo!f*~!UC$sWHMj{LJtPEdL!M&3XlCO#HIgfxnuZTP-2m3C3# z{iv=M(t%%P!^;b%;>i_F(KNV#2zZSXXr2y3L5Y4I-Ut}h?KYk5#-G>3d9!hnxojBj zz6PVH*8zL^;;-2+MB%6VC_!%ahoR3vBiA2TYiXWc`oUADBC+JQO{KyvB{r|ySek`{>79hm_meuLF7Z<`4 zmz`%_z?V>tG#jBT-U0r*aRMRoaYJm1lGw|RFH>jLk!u3%Rt==$>e*|9n>Cw^xwV4NL0QiSOOp<{A@H20^$hVD3wx@+Kfa3;mM5T(DU^onKyyySw`cYPeUY9oTy?|?U|e#?tDwn|lR9(=-4sRi@9j9<^Rqh}hH7*U zN>|rM9MC3Ss)-E=0Rr$S40VlLlqyTB=0F8ACfhFjON`zt+z9;k^{gJ@+ph`ibUu?w zD={n86E*+a z505g0OPb)g*Q)M!l%ow@s5Qsa9Gw^L`iVX|Nn6kaiGSyyJXOd>$<@nXzeWW7Qhu2{ zm%To55Db9qKJF*zW&zFB_rm{M6EBj@i^Dz`IWk4;JK9qQT}*`Y-4|p4zVyk|sVhU3 zJ`8)&z~_h)4}G4igbnKEGxro&0)C<2zwS*u`w1_~QPkC5;-!c9OCMnF@`VNW(fRkn z)uVR}+|es@c;35v>I_vdQYq*Ve-IBevyL6^djEcBb@k-G@-oWo^cP38pxF(=!vhz+ zU_&6}jc=M5(>u)bi+s@Ws<{Fw7xc@kqX020Nq2fvA{}-;RrQZsi>3U-5mlRv?NK)? z2>b&Zk^@bMs0($4&W{e7@AP@E?diR-P)oz>y|kL`WmHB1!CIbX4`NLgNE+MOTEDU< zx$5?JpW(Pv2coOxIljodP*DZkceGlea<}&h_iL<~i|wD}E?OJ*(z-qo9hHCjdQSj% zTu`%%lzI*)0I<@r>FKspKyE-{-z!1F_;Tq6E`=J25;`}?)v(K*gnWIfWJrw{`iTm% zYME$!aF}UW!sO^hvb^}CSz)6enDjkFNlhCUrv$W_nZU*UU+c|i?wg=POx8mYpZUAY zju$VT45H*Po$0+7E_8w~bu-ck>JFNQlLX7U_cLjV+qBNOh|F|#G%TOTVSbk90!9E; zTN50xqMyB7FasCUKBx~=c2*(;u}Z|#va(C%MZ}VqFTd_J9X$;NWr6s80aS)tMXWaI z3|e{wZKmo}vC-N7sqF80T5(`cZTEm<%a62{0rTaR`xUvHT?eH?nxdkV?s-B+t|L9aK3gD^KDo)R zY_=;La@|wo7U*PRDK9?rV^12!x|gY=_BH?>Kyyd-A9*~Wcd+j+Fb)Fn>h+~hp-frk z56>Xab~e0|$8H=?OU~P-W_J{R89B#~Og_i!cKNr8{4LCKXZQ@=E6?YEP`NjwMipm> zBkW@-G|KE8Wm%BuG|mqB^!~FUfVkxINmSo(=clL_r7+q)6L!=A<5Q%Nz;vz`dj62C zfH)vIyi7?^xobz?7x|8dfyJQJ1*^2Ss zR|Og;uNG+Wn$*|?9LyapWX+bP5p*QHiI0zO;ls4HNQ3URe`oePsk3w0NL@8&KHp_JG7DVFfTIwWWCXfd`zk zIMH}^B>6Cd%SU1~qnVIoM&;}VR)Wm3CF(NzT^(J<6v?mG=r24DdZz5gfl~D1!UD|) zP7opi2}>CeIskUd-^qs%29o3jf=2B#O$=IzcxqnbL!WB_GnSU9TVzpuuVh2*_MW^b%f7!ym98$FRv=kFU8^=;5Y41adQ0kb z%~kZA(tl?jH82VitXl#O63r_g?ER(yy_f?9L)AV zyckRf_`j(n$9ZoU&;&Yd@5ay7F}ewU_ZwNShtI)$G(I1W|2(wJDs(}(#G?JeB|sbJ zIPjJ{Igo4+CD7qxbJ6zsCH|wl_D6YjvlFu8#LoRrFg$m`J=*?goV~eWPFb>Di|7Y$ zakeulb{~ZE5jz$(_oyoYR4KL$2Z*c;$u^6cmmR z`vlbZ{$AYOP&&HJA!8!6oJVjlxpeJhw7wtAavpB$?tYi^ zZ>24jL0qAP=e)xKcoD-PalP1b@5(wd+w#^4zfq!|msYHzXQqPNCSkcu<4s9S!1t#q zW*&4R`X%xY-MqbxT3;)ntC0KNMGZ3y9sD`$9y<;1f4>ILXYz_1ef`lZM8@ppFH%gm`a+j_ zYU=8`a=h=4r991o-47%Q5_uc}<{|T`^5D0rX2gQ&8weuf7!8x&LU&CAK~TJ)jw@pfHWNN!$E`*04Y& zO(m5cW+RqDILeS$NHD4RyXO>B;g@OQ?$7GjA%T^#WCuRC;m;(a7u{=9eVId**F#LV zYfEYQo^|L+8sNmPiY3p(Wuo;Zp$9cY1W}q;FzEsP80Dqo2aAb`+4mCn@U6sio5}0L z<4SyzO&Vg2k2BY0Zk5QEf6^h5x@q%oTilhvtexkHOr)(Hq|I;R!zlwc`n$h*whp46 zM^XP?m2DG2E{?J~_vYvEbuPuqT{Guy=J`#du%XtciO}0mb*a|OoOqE=iP3BvX!Xi+ zsQ?N*Q{TQdahPpUnwntBVgLO>`~^G1+YO5fmUoVd^B}wlD#R$L(RQv}NZ*%5ZgR0m zLa-J)JTU*P$uvn0A!%8gs)bF!m6Vo_pS(vc-IEQY`zw4$e2Y7s$AUvc+@&%&#U_s> z;gzh@f?C`ci!7>anMhbe6WOf?4oC8i2T@=&yrMIc>OR7xd{KkGNSlZdNqGD2HW96m|6D`1&N;Ts{NnfnXqIx zY`sFT&C>{+Eb@5-j*AwQ&nLjv-qKeNoA*AL`_~L~5JE7|mvCFHIkqZ_&m*B>cyY@* zXu^3U)n4E&HAG_(#=xWH@R(&>=DhrgES!#^ju11#T-BLZ*7xCG3#XV0NfzgtLbC|E zLX7OiT*8ANw|XuWQ4?)E_iwaZ z+|s8wD&a~t#)^!53qo<<>86d2k1Y2YAG{%MZcP?RKpgOlWgMn9b~Z7exJPZGxi3oY zPfkv*&A~K(|Mv>>N76v=mW^xtB-+!l3tyGV)_;FG(*pC$E^o8&OP7BkZ0-BPzz{9# zZK4lI9-pySd5pQZX4AnuK<@zogRt}+i*O4Bt<^gFe~+Ow^}y)IHR5yGWQD;z)L`wtjJDv=tQAbBSUty9T`D z)q;Wo|DgPEB`e^YgkDisaZ-toW7cBy!7fj{E*ch!5-;?%5F{4lfs6(+%}bY8al{Qe@#=s+&BAT(?;#gtxI9g8Y9r6=ic5hEDeMFBJM+u!dHio*|`#b-NHP+D{yv;9@R1HL$oT5am55V~h zC>AjE!6a=Q*T1Jv@IpBKrmO6u$U{(>WIW(c?5gf=WiHo!cnVMg^V1Ba43W+{%S;883n^6v^1GjLRkbCjSc*LZ4fxtViuM z_`VB-4QnCnt7?CPk(hQusAeOm&tyA?)7M2)=Ns7(*4A4D?xU$I(n-a$i^)HhKB1FS`kT%en1ywWBnfRUEx+ z`^M)*#o9(_K)E3~H%Q5AiCJ}++z5{!nt)y|3x_Hg85w09R+)$Q$pfP9!oK0$O65x6 zT;bEe4Z_f+E9Iw+t~fcF!irL9u(~fYNI764@*wS;wwRsF@efo4>_u7G1b8`*mHq|e ztZn72gX%;I=?^NGcP_kg?lzw*ecveenj@y;n4~5r?OlMF(#&_ z7qpdq>p{lYwy!RsB@n|GTA1vkzGB_cQWY*8iSOdqZwo0fte6thCP-`z3KbFGnE!Mt zXEw>Vk^enP{*46NA&~J{2lzJN{O+Ls`!o1u!LPK27q2Oh!ipGpMB)NY`&>4sgI=E{ zd`{k>d3%jff^~%hdGA8_H}<9a6?p`ho~MN>gkL-^?x4>X2I4{KGgc-hIOo3&Lqdp0 z&u6#V#fGPhe4K{bd*Qu(tcXk3uGK+9;$I=tvDyR1?6M-(`mM|K&fmv-6v>5ijQ*lD zjLEvtSiy|6w8p>h6NK$-^7iJmQ~gw}_;yG`_ouQs#g07=eJ6sLlf#4!I*$A(#mISE zgtb{NO3~68dw(yQ+qCmk!5{&L=5;S%(C{(*_ZKP6`Z`#VYDB5W85_^9DN}+|(YjM{ zeGBI?_)6lUAuRs}Z?wE}Sp5uEa}e!+DH?=?qi0MkExkb=WdD!|qviOgi*doBogn_~ zJeTj2^my7qmr7CE;E(x>#THc`yU!++t)D9WrI;5)W=GtU>f|4b66Nxs%kvr?Z;2U; z=q>c9N)K$LU%~D#=iRu3R@eIk= zRWF&q)ut$;o@qFR5JuStK!D~Z3(o6w?c3MMd6SD@z)Q?FdTdh1`5!gI_C ztr>E@Z|G;gq0P1Xj&koY;;auxg?mL)QCJjoIyJ1A-)JS@76? zGxj|PFSgCf7|6ToyM)daNp3&Na5te8@f;h5L~0t^$zN7+?guWeo;5# zkw*3?Fvm0!#4W}+9x#UI=n!qE*64qi0wP3mfa`k`I(*EL8A{VVonFV*)8!CluZrYP zf1`VK?jhlE4a4k<5V|NnAdUST$T1E^yNGxF3ANUf7ul(hcq%auCY?v z`n!sb$gpy-dL-dnj0N=g#MJG+BdBHz(nnGK+DZ)ko<-<$I%NVwCwt_G5gOtCAQ}R_ zNk4JQZB+e#hkgr-`=v?ZX=U|I31@l}@ypSz;TY1{M)C4=%`Nte9if-=a_AkbjA-SMbC*&q93&b3YJf|q8A ziYfwhKHlE{9>cf%Mvapq%DnV}{j;ppmtDah6s@aZT4d{iO7$(Fp9r-=9q3DuCjxZk zxnS7Nbd0kRnI8Me;55Y(|AvRS#CRz5|K+{`Waxi55JV&{fI z(!UJG&yT@4PNdSq|Dh5S36~nL^5Am`Wpqix^LE`nm$Wn1u9JUh!ggMXc?wa1czP3WYW^5VU+#%06GlsZ2RgY5|>DogJt zLuK->4Dmw{eAzMmSvb=sf6Xhb%(MhUqXq2d&6^$!Wkr{3gdzm&=&AdB;zUZFRNx63 zgtst_$w6f|bof+DmH!U&4pnR_=|k>RpGranvkBwF3G^>ECtl5lZQPJb?Z743Hjr-x zN}}vG-i3eF*;l*LYVx2lJXv`TNtV^`>3$J5O8jW43pI~4Zfgj#kdLLDBowYejdc#o zF41>ekfu3NQ*S{I2|`zC1%>nf?ihoD*p#32qm~(^f{fm`rTrhZg5OS%@T*eQaOV$- zF^~G&ngXnHiSLwk>PvVcFuip2%2b(`GNIdNEm%)rzZBE`4bUKop;ANe=#K-f8Ke^e z)X%?I5zm7NC%xq(C|xhP>$GzBzGmyA<7pBCY9PUm$0DKc48@gH{b2n?mmhoWd!T4t zqX`;24n9I&_Ko|k+ts}vWc)_S@3kF0eeQMBmd>Q4-{ZT0qhY)?mE$a;hYOk3_kBG+ zp8eN^QUwE91x*xkE}lLlUQ$~-=e$f<|NO9BN&9f@1r7EknS0c$e1l$TSnHeYCl!_B zpp$gdzLE@f$)ZI3KhGsT@|r&Y_}!O?_NgC;-fnwhL)CoZi}0*nTr}c(%q|u9z%nWE zBvQ1Y@(xoK786d|W?66tNQ%pi8y(UK?>al}z(kO;zrh{FPCsd(#kJImI&56^Xm_`~ zM>L_oUqOH_NI5=C=^cdU7D+j*MLpT-lI|rptpwXSpQYp^hpDcvE*cxc(N-Yl+`Vs! zp(0#sHP3e33t%H}*pCJf3V-EimXEp?1v(8^y0D%waUD)r@j_2)mp*yR=T7TO&wavk z%#oK`@66oJQPSTdPj#(y-@m%yA7(jAnqHY~Na>jwi`CaDj}ujP?vLgEbapa;K5#sQ z@ydi1Wviu{=*!de$m34L=~vtqVFkJ~1S#LI)jt z?y6u}E4tG|^BLxq0aKhe#IF-qk7H;2G>2$CY;d)CJuzL?!>~$d>KZ*H6uG?u zQk4JTE4jQ|Yap*$8E6evj7F$uW>!5P{&dNqf#(E0;p8f0F@j&mnG}sUN!fRuc z{&yb}N~^1nx>L@IhR3`AwSh#nyzn4V22Zx_m-?T%n5S}bbH0>SrmEr&DLJSGkuPus z58n+}2tspukiT-uh&)g&lh+(>>rn)7&nIAuLd?Iuf4?5S4`kp=AJ!FJCz}r~&U?%B z#ucZV@r4;(b8;G2_6@Q5dc&C~D^Cm^t}R(KbWKL=gXB5$PdwtzO9fUtj@r7Uy?763 z3EOYH-VYd=-eOcnTsTTz4~rsb8&113H2;hf1|v>H5~|_isyKBnk$&R4izfh>eJ+=H z4EYb7V^gn8mo(a}X@u2DO`Y+~Jl#GWlLq6&V|6>$JBq?&k(4SLa})@mQ6tHBgq{ai zNg64mynlS-%(Fww{&R+`blqD`mg9#t2fhq`>gf~OOcP1Cy7ftr&@cRRQAB4wK$>Om zE40I5HTOo@snTqS=8qrm!DwIqnST54n53WR1|aGE`?qTE-w_N10#JwOVBa`3Uqpoz z9n_${^i>iEDB%T6o9!!QKdw?d$W7&tAc#+5EXQbKDElB!;@RX^u#3t#1hU#>41nX? z9XIN$N=sR1W@_WQoX0K;vhC*U{$>N$)rn~&^XTD=5*|lXzeg&l@Ama2Kg!HxY@&2_ z-f5!wcPZ==K9!O9^~fgU>n*ZPzA7vy6CzqxL6eFUK&Vkq%6&5A6QZH9I=JaA=r`89 zGm9G@&p2m%67bej*Efk30Qf;4aJ~*By;z1{ka}#j1Yak z;e6+rLsobt^1TS-L>~C}>;QXced`gb8hs<>JG@WDI+VaIGtKr%g_G9Biw!^*NK)rn z)^iwZalZddREK|Z37S&I)O^yPp7De-!4>*I*4hvDB2&rbhtGLwya6TYwg_gWjH!*! zn(II->n*OI2QL88xHC|I{_a~jp(>pBGVExw`8Q6t;Z9QR8_VMQ%E5<^CeZAUhDU$x z!Qud})6-x}mrdx@@dSt{ZE)OYSW%-~^xq`}VvW|0pz?wNW*QSZ__PpSl-NJmK9Ts< zQW8qP+|OUz3?f3Fq#yl}c>M70;c6&N_1v$|^{<}(SK5$1^x+w;3Rgo}*(G_*xTeZ` z&A(_@DmL)mfYmfCD+1?5A8AzoOH!HgMM!$|Zu|@y%DH^4HD1X87o1hh!@Mrk+f<5R zI3jdZkH8mJC97Zm=6{RWB6)I{p18o{FTE-3?+KMEYXjg;r4X8)RrBH1sILukw9}p{j1p5p&b%V;FAN_N zeNEHdvLysyi(|<4n1!RP-pmT!w1CYN+C~mWRUyHP{TZ;MQ3sy<1Bhs2c{IbJ9jtj} z%oEzHv+?yWa22d8;lCeXso~m$o_Fjh9;&W&B3-C}%KN9zKxNGWv((O(V1VPIaoB(K z-{PVnlaAF=oCB|a+T~l-T<+=T))J{CYGi3=L11W}RKeSDizas^mCv;4s; z*}(EZ#riS2WBu>B=^!{Xh`lR{H1w&mc(1OyXA!G`q~UN#!Bf>+R?de+xF!x}oE^9s zL~A>v>WTVQ7KE$Au%UVuF#)*Ho45*Q-v^3IGX=$p`!ZM8G6JlA<^3#7PCNy$BH!lz zz|MozpLKO>AwL%Dw&QorBpDD>LEPVN$OS)pN#;Hw>s&;+o5MWKuY;1+#FUU5R}^Mv zXZK4rwvllVdOC(AmY|lOJG$-zDl}mD5P~GALFt505`j-G>| zj)@hSeUHU5X;RrdR-oq!NFBRZNWg`M?o-K*Rb7YV<~dGa%~9># zHR-b{-+rH*@@k0j7AI3BzobIgFe`2~b(tz4X(sf7KTs=U&j`x^HAKDlgU z%6YN+T~$?;&PJdI8sH%1hDwrsw|8=u5zRJ(Aa@XHkUh#}njYsc5BH#(egT-fe-RG| zThz?26At*<@Uh^@+2Sv?<&XHQ3JfQb0~o0=p^?hjxS^XR|N}4L9MEhO*ilN6^>Wk;5hQ~7_vtNXM?-N zaMfM8K4UxO#=ODt2Wq3-)}yxtuM!_7gstqzkO)P@REg2V{yH;MUtgc6D)W9meqid0 z7_S6^WTcOX7Ke7QO&g6D*DVS>3aCUtC5j3n2mqAIlQ$0~q|Z-f+@w9j>jp#3*olbPc1h}kImz6 zG5B||wegn9g|AQ865<0JP4+#lU?BI{RN_Egrv*Y?;Sm~^|ExE;nCm=`=Fs}(%ERx| z(cC-(iu%C;N2~}UD>wxWx+wHn>iM@vN~)`)|5z42-!60e#Ym9n;Kr48RJ`}%6a+#T zV+T`N!lgpq+8xq&Z;(u>i&K*Zv!K=vT%RS*GOkE5$>11zmRF4D=#;V4*OGWJGeW8$ z2uH`A6a(^;Ni^_EOt9_0K-a_$9)V2HIi=;2nODrAOVRGi}m2WSDP$pbJ8llZalX`SA5}gK#O;h@wf9y zsI8MDU(bs;sArK4BWZ=WaXb*ptAwKY)5dWEJ&oeOvj$wR6<^=l;}T4;my{^e!Oa5u zRcdDzut!G|{cDFp@Pa|ci)>;l{--B{ZS6&*EOepI4kn9{IYXzhR7U4N>NnFzB(_hx zE3xlnere)HZ+o&c=Fm5iPsUn9AOfv*#)?M1Pi=cYJC?Vvk;Y&71kCT~DXtz0S<^Uq z4`2LP^{!M3agr`F_1BFpo3Hnrp{E3cGGS5LIG01R`kHuU!d7(_P=UwaxBzC}{ECP` z{t4`?OSNKlg9?`xeYSpNDVm-xil4s~5`IL8J-jdc<^}Q8g$hXsBm)=ENtrwox*!J% zar853RR~*hh~A4Eh4Aw<4BSELq_DG?>S#KCLp=L2;NqGd)xPkefY9~RpG;FIOnQ=J73 z2v+Xg3!FP=(md@{wm$JO1i~#uLzfd$YU1U>7q*qjZwENFhI%e{72eGnBwPJ(mv%0> zKJ)vn@i#ibC!qvc;dks9paUWQ4V3ZR=zvL3KJl$=Pa(f8C`@@TOen23|uYHqTLvNqdt#fR-K1QMra)PN8H(!xuI}*O^}WOH0ht??@_%d3!JGy;je_aNQ(c$HLl-Z8 zV_Djwh49O`;Kb&3`;L*zpma134puG>JacT-JB|!DLwUH9?bCvbj4=*R9$AyCt&_uB zMOlOx^6nE(SAdsSz`-cZ?z{Kn zBMRdsNw)3^VldR#7a>2lLav`>3Wz-dkhmtAazmFL`i3R?Ll0JR-vcDFxp72u+8V$t zbkKM<1nX(lDAU7xiBqho=N&-+un-NDBN~KYbFLh0FmW7484{N`suD$t*i`5bCYbO+ z*qaE??{s5TB=WUUB|4-hLAY*MU?M-^J}C`GYdz0=#PLu`Okur{4M8~!L|T6!Bw}JC z4>W)|S^@^i5Mo7zYPuD-@ufbLXhOSVAQ{(7r_s}L_e7mb3@`PXO2^@KdE1IC>yFys zdWOP!98NdqYlnYBF7J(cFHHxXXh1*=NYgI*#F9}=^7DA2cY=4BqkVF zD^C}@Bn%>ZP%x3k%uTd%M9Uw zCwb}u&h3R4S=fM*plxkq)3|3wCqkoly>)_w1t49pbbp%zh;&=(_0tgS%|K(AKBLt+ z=nLDf-M+y)p%j6WW%lTBuCL>P7ZcZezPoDXY>m7YFraM@x@>J^Vfc#k-9?>|8X*3R zxDAxO0dMx!AEf*>n~~vLI^yv=W^`+-1CqyRa~|1-LMhlQ>ZOYY)g63*@^ewK@FAXKu}Hjh5XnJGM+` z7P^upMM3v2$o+; z76xXXEQXOffr7nVA+gdQD0}}081bSrg)-BdpQJnym?Fdnj0V;#m9SwUx{0L;>ypoM zwewqoBpH0mzqVG(2dsSc&)lw1dVXb(KN8retX|hd^IB6y!E=w0>ipDqBAeilmGJS! z%hy)ZV59L6If%-SmmT>c6y?+aa%K#?@Mc$LKy)9BcsCb=P$?p+FFCdPs8Gp(Ok+SO zgeQ+(dyGod3bD^2R{eV5z$dGdLrA7M*es|PGTDCLQ_x2Lgdl@SsI4R_e133{TX*j? zWm7RcBE}R|GdN@>;VQGvJ5B?7v#CRnJ51N1&-sJ%d)p^T7P!dEo2I#5*T7IHC-JOf zNI_I{a$wbu*Ra}`8BMOqgpCj9?a>V4Jz~k>p4+6DR@H-~4A_hHtf#?|;9Yfdm5;-R zjQjz#@hUNdGIcn`&BO_Mg%Nr-G@v-J=NY@}h69sB%Uh`WE8>vTHKjF|-PMubPt-^t zq}R9Wkg(Pzu^;NFj_@^Y<=xV3a*S80jSQ2-hx2J-OD3A54R8j3B)A9!TY{V}@B?I) zkJc(tF8)lAT#e*6=p?5}^(ms|f+r}I@78+mMLEkm zpstC*?+si_z$Yj*87|Jv`8x4|Eh5qhbHLjeAhL&bc&H)Q(m#`AA#O)63DFFEcxdPi zs^W(q%}l3?>enA0TI+~^?tC!ID2FIVbB`rrtSVNcqz`&%1n9Uff_gz(+5tHf&)&Wh z>CUu5LhSX^i!!r{%twVm;-&rpCA>OR!z*tEwJJek-}?zo-~IB)KB2xI2(J_3r| zxIL$6th1{fLF(k3y{y{f$csw3{0cso?eBr~9D8O!K|r4!zJOVp_kKWD2EU=DYD;`) zqJe?PD)|34Z&(n;HsL&x}pYXxJd!MQdh2hheMuaGD#|)t4gU3=^XhLb{>)xF( z_^&!W-Nc+1L^;cr%=@6{d#mC-YQ11Sb28W+&Q|`Fl{1lf9(I6Y7aR~^UIlXn!cru# z!=umH1`*RXG+4j2%9^hX*To>RLeZO_a+o6V_wZ;$!20@vL%|uv2!^hA?~pdQ>ZR9Z z&?>||3+T;-M;18*TWyhm0~ZU3bchS=C125+OMNQ;l>jRN$7V0kqL`{@k=hw>XE4^a zcz|ji;AeuI(BN!kZg!ClAZ z8gy|-LLt}U@$E~Nl9)4dVEEzaG$M>}f%Tfbea7mYqdh9s9>{S-XlYw<#k7yohx=^M z!psm8fKle)8;d-n(}25i+02NmhEI>uw9zYXEu5o z7J`3^Ig4@=40JvyQc4rlKVx+Q^7+NjiL!XMZGX+n8*jljROlXu3}eb@GRaaUw`1av zbg*^|b@pvbM3P$8h42>w7x@YD!fbDRsI2i1lO|ue*Y1)S&SeF_h*AYWnPbF~VMN z0R<%>ZLL>8yn#bODAs~ZZCYiOhI4SrW0R*mj*k5gI#M?JpD&$aRmL6Hs6W5^@=k+q zp7TM6CQ&>fPJhnnXNxo6A_AC=E%Fp=4`UT_rPd!r{}8;&N+fhW24tsRAAYHrp&^I0 zljk-bhP8;9>FB*k-aheK>iVbm9|u3rtlAuyX3q=s8>l?QMl;tGVFCLw=28pJ9&!f@ z43^5?cahA)Y5|8_uJyu%BY&G{rU;-_sn+$8hnY-@h@78(%FEBST0kElu%BTvarnbG zo_r}ff)->VdCZYT*?-s`XG4jfyimvD9Txh>d$B;IK_pLqUWEEcV)Hl+ou}UE~z~`021^1 z9OhI;6+hVEy*-TFtsO@Lp}0Q|RS$V1as$#2(UGT3nltq<*$BAxdF>lTFBA6S%NlK< z+Fm^U9q74QccbR2o^e*|pFiBj`w7&;F$mjeTh1FjQj(H;iGnP$%wJfU$V-KeJ}JR9 zeb3D}y`BUoHc3#?g^&%acbQ$)lZ%t9H#t>lv~6%MAKv@3qC375W95G2GP@ViAx!U_ z_N=%e-1g1dQ6u=un6D(wFF;?&-K%e9;K0_p4Yr*mE5%@~P;8NUoWDAf1G#dyysBds zJqGtC6iZ;Doh4r7l6KzqC~Z9#KY+%sXg1Yn6P{{}u}G`XPOxguF{YoP-n=MD6Mi5D zXr>h(bVPx*UsFH5Ya!CMa6(4QfSt0PGeXdX@7N|=f9_yjEIVCn`jFsUmtsya&mlTG zyWAh<%7oev5!h4+(Y$VK@wE@p@M_s-oFGsC5bnrZ(tn@)3UrIz7fXnN-#h*%fs#Fp zfkUi&?warIF>2j%!@-T7JuR?B+ND>eWR<+L_?xu5wpeRBbq?3oLW;A185dhhIB(Rs zz`Fp6cIS;6slH%+lYgt!4yK%T#QG)Ml^k#853}=8t4UxNH)z=S6Y}*Q9FsrEzFjTGfJ~dBK|s{~=8txM_wOwG9z! zrb{|EYOOawzMNN%i7XCYEs%)46xl>np?U4JpUzMjfOoUbNK2O(q;q4W95~{IM!7Tz z?2Z(i`m!A~vc=W#%kiT;rt88MvBL3?ejHIMfa$O_Q}cVCFVgx2?{{&l%C^Mej7tnJ z!Tg1+OH6bycNmBPASdX$fc4Oe5EGPIM|Bd53b>$Qe1Z7g-8iwPji2LIUN_rVHIdNX zfiKUI?%UQMZc)8{-qus3%OzGJ=3>~qnt+Suyk(sRYiEnhr~MOF2qnyWO9}bGAsI(d zeBsC2KwZ5D?Z?P^rwB-=Ej?V^ntMJtC*iEG8{h(pZf?r+t#kDc<FBoZ17soF{tVhfw=^o2d0;_CM7!H#I?;xi1nQYgiDFQSs~#5u3;3Sn}PHBWJg5 z7;HYC)o(FdG}IPzpz6m;Kye&UCPzMOGAWyoE=JD1z#tMvQ~07Wl;-FB*CG!Gb2xBl zYInWR*C4hKhz^V|d`VXlvov)mgRk^S6vb#Ov*z)9xl?~e&gxrxAOo7Q`t0d>{kHTB zdF!5ZMeE}%SEQ7E-&M%m(|3hF;|9gt^M*=J?(Q%Aw7|ln; zj$^DpKf6RpJ}~gM^n5u}YQdKhqrmdX*(`EnyYQyxhk8*G88D5PCp5OWKzXnkx<^Tp zImg%V3?~l|A>VT5iCq3IaAIeeqM-A)yXKX|*Psxg14{FsJCQkTlmQQr*vfGoM?AlY zyNcfa7Er(VawNUKtueN^BA^`eL^=+rE*~QU=M#I)YQaY{V4}i? z=%LSghZ!eM7)Ljo&9h+%p1a100rmX+v-+~t*rpmzk?SyA)wr#Ss^22YEMXH#I- zCfn8}y%@c~aW?yTapT~OZ6EPaVxGc1JU6WAvdI7`f_~5_l=$r6OjOBwhbZ8j>h6U? z1T@%jLWoKinepHnE2xRPt;Td7z+8rnrGhF7b2vNGU3w&N`w)EE z6I&uM2eN6;Ep-Uronu-YhlGCJr;S-t2GXZg^4en@hI6nRu(zEitAf6~En|LiG(47| zc@r5P1$zVDsaMtq3$3AO(2ryX2o97_wBSJH6=6j zMexUEUur@I0*C;bcKbLt6|&&%VPpMG#nSz}9PvUn&wdJZgmjky_^LAS6I7gJ%{H4Ke) znaK8cVC!1C?Av(v8|*FacGjj>#JzD@(k3|!9D1obkpwjIT?o1ytLp!y$98=y^1IC zhdQ6pCg06nJ}?~(^0@1Z(T{7ZRk=JAkx}g^O3jv!Pk*oc=sg{1?}z-{@<;SY`>bM_ z9mj!P5D+_$wIlAo=5B2=7-cqLz5s-k3!ZlcpGNC#8 z4pzWXsfVap*a)E#V@`g7YDr+CAiW8f;RxrN1v-^FqE~k)_ zTAom(!6Anbx1c&MnIv92PY*8#Aie$AT{Sg@3C@JlEK3xi(K?~Idt%QDL-$@gY|!3% zU7VXQEllwcVV!cw+7FYO;k9oS#zQ;H%N_&9Im8OT%bBLhL^)*p`#Yh8#CbTNdtXHI zZ(QWfWh%2p+sY*a3=j4G2m{cejR;!R{zE4eU`zwcU*kf)cJ!Fr$UQ`P%R;kWb<7Sg zm6@AS^VrxnhVbm*L@43?=~aL6^4`+LadeOukInmQJol?#%Iol;xb6p5oysL1784V* zQ~@N3ydY3T`Hv$@(fk;!f9B7JOR~~b40XLblV~h`JIV+y%dd6d#^v=5J?;mCgW-zj zc~dhp4P~r;@d;Khc8n|0VOOr#5K4)Qx1M%|Fe>!zg349~a3+|Ktc3u+V9f`@NT8`? z6kMLO(M$00*{=CvRd9rDRC)QkCZIJ{_VTGcI&K5ZL}Lan@1- z@#18Iygwd=`0*i+z9CM8`uO5NtQG<|nYx@lQj+XFJdVTeZyyqtQ66Mw1p4{>^2BFw`-+gy*J~vjjJAkLk)CK0 zpcPzpmOo}=Z-3--0uS5+Jw4Fbslz#ihk@&Om=(TunB5$FxP=aud>;~bwFiW4rx2QWD&^PqmP_FjJZx|0-Zkk z7(vv;IaD^-l?*0U=*sIydzmi;=f*(M(mynsV*daH6nX}?gZ#70r*n(dZ751tag@8? z#n6IQwpW--)v`+He|%?bTOb#z&`z?K9H!gj6^}M613ym;#xYRbyDu9^%{cHLLpHJW zw&$lwr08AiID*k&<)qElCUo!KBR8rzM#cq$nv*)|i3{avWl{y^RZ%)iD2uaT)>Vla zA&!UOR%fin6swM&$0OWSq9jGi5t3e&Z zuT3jSh2aY>8F7N19Q{Gg@1y|jRBKTsD7k`(L5yi-UMX))xLHbU7}j?-VePag&#xKd z2JYY5=Z0vPAFS=i!{~N3)UXZE9(N47xO~|w$EElt)Y_oXQBh^hwFBDx4!Mp z-T3|L4eQYddV9soya;P>+y)ATU;RTE)}@fpnGawfi5-9~^pVF|10+>+p~DGp zj;3;`gzm|VJ8+vSoHWw^iUc7i#M(qYpk+i1a$f&gzoC5P=}%4{)Ojs+!e}0EDa!sh zf@({%^4op!YLOOHi@B^TZY@!f=bn|&_c9Kg9}qzflg&^k9QW|+6A{f2Ik@+iy@#53 z^}~o53Qk4Uw?4R0ldedXH|^eBZt*Neda1_Dd7w=S>g~~jHoNNQl%My;2W=8o>77|g z71DMkYFw@|v`E3!@vJq_ZL-JsczrJ#I=>aJ0)|Xu!a0vQ2tf-zJV-x-%c0HGXT(QZ9cGVNvAu!{t!!3PMQcj# zNjDJ%9*;Nd;CK1v`Be67m| zq-}*&UWXp&{@X;-4sf*p1c2=eI>4AZ;YZ#yE!Esx_cif2SWlO2XSh3f6jaPI)UYx} zW_o%lUs2`6hx~w~??;HwS8dpy-iAN$Km$q#eznoK5a#L*HR?ER`1a0a|et(-?x9pZxdA*EC>JZKa4d5P0tmsR3%t6CM za!HgpXqea{&cB(Obh^%+-3*D~SF;yL7|}=Rx}|S_ay`Dp27%CA3CiF;4iZ*8x@?i- zE7~01AxxCa@*)EW;Hjf5=c?I>6m7~NZCReH%dd9!$SZV(>Pq6Bt@5?P7A4QtNcA%+ z_m1dW>YQ1a^98xc2fD%bwS*B1%?q73-k4KIS7-a9B7q+Z`*Wc$oIUxW^W}zjJG5u) zw;1nD=_}Ooz%h2;@sW)e!XV`Nyt(O*ntAUu-3dq>ur z_zhQ&K#;TxD%oRE)DU5Ix_8d{rKY1JT1=ODHRy@ z$#MkLp;8Hq!oX%|UWWbZxC?>c?H_x=0*9*_I}1Dtcb$LqST=eo|5 zq+)Ec1BFFdKJeoJKc+W~h{lu`Hj!*7mK^aX#=Ex!T^F#6b1v7fzwyDtC=<;RU8Q2@ zAtz1{oknj^8^KRimUwV#U%M@XjfoWg4C4_xDgc2A!Eb*9Gbms8znVqFALEa8DPA+Z zW~>9A{*QHeA2SYfwH~U(=H}&T6{g|Qk3f}8RnzL&xv)tpXLR>iAVceNa~iGo4k4t) zaaw~UgXu}t2j;HofvEmTto_Ukjm59$^hI60LXwvLF`I>KDrk zpXkVYTWV_HW^@zb`RIkjHv`O8XN*lZNi`pB_ZsVP@TDAONX73d{WA3hY4?CZf}xx& zd(Juf%r1+)4^nwsmvi5OtX7X7;tF$AZcykxg_IFW^AsyUh|+uF26 z(=b@q_f-#Wpkt(d_w4mUo+NbpcR!qGF;23URjZw{J@-96T_ zU!h;q?-tgUj^ojQKek#Wf=t*qz^oGG`}9SrUFN9%^o57waAZE$DY}k{A-^C58Vcic zBVl6Mlc~#6(em{QTq_qYm7B_}k^$`fQa={7z}uSRqw9*6Et)$JYJ9k)65D zA==TBwt3rV9|*`yRR1PMVmL9<2o0X8`_-V8^~qKWgS**`$TTF<>KtkRPE^w8zIQ=C z56is*){Bh)V`TgFv3!E>LGSi!8>C#zqg9hy_ll2)ZJDnPN-<6OJ-i;~rmNXLqs~&M z!_jDyDE2u?)J%Ih%ZDj>M5BcJX&?x3_d_*jpzeWhl286!xX%$G_M|mBZfS`W$KE00v^LzbudU`9OsE(B@WGvV zB}ugH%8}m6qd3lZxwM_XtF>>J=looxGAhSqVvGyXJyHd7>1tr|ZC5k7BLb;8O?_$! zpdfX>j{BA`l1Y27S3i(esu|8@ znuaf!FjxOR31|4OLhO16)71~SO+$**In(beVVs_LQM`7lxJfj>=r(I=94;v z85tQk`ap%|mP&u;O?B0)r&I@G;Hr?tx_^H?ub1)dK%OKnF{Y7_Dxa`lf7lbH!S?8z zBWqCEpw-(DS=Pv|_SD`F*`zOzzlQUWFE~N z>ErG^tDon(F2>@dp%#$;#;vrbNCt1t77^06%c3}9LtqGNB_HlKaWC%D2D~1OVf07A z!z)2fK4oo2XL%`fZQd@}Fr2)ADfKAA`Y0SZ!sG1xy&cb|D2o5k^Y+F217Q)jTaTDg zQk|TBqONN^Ga=q1UEF;^PMbTA4U-eD$LtQIGptyD>;Ved<= zHQweQ31RuO3XUSd@67>%u6J(Gz{~9;$_i3+p3k$VS@f*7_}Ot2@uJdLGOtU5MK1Z9 z5f=x>XYiA9eL_|~8S}UfDtTU{7~|A$Z@17UIGL!DgdN$M$=-EG0Rsk5BwW6sU*_}X zsJeP_f<}2wjoV?b+#g^+%71i+ld*pD&v2OYpk4G%)AT&JUEC$DQP22HZIf+YM6p=X zB7UC%YWok~^xumjNf9D(dF0H8)BAly-j|&s?`a&XSj5+fx#$Zp+w znm61;n7%#Bs9O57*oeZh9SSDu%Ze=>{;(H!n^?N{=3HtT=wz=rI(|P*c)>m{pab3Y zmDfgtEQ}YZbXJ?po*7(An0Ba_m{tlEQ4JVfk@?QmmU%im6guvEMq#5e2 zft@KV0F!#h!hty`$)j{k;j*u9nYbBA7*FTX(hwRfA49vl10o*6Wg?qKDnun}IWPI` zlqE|N@Ds|Ja#ICS6qWlXA1vProJ@B66C!f>dcQ%~lKxN#w>Jo`V;@B~*&2N1qU%2f zlmU^t^k+M!K@I-@cv(I(iTRL?lQ_pT36`9O>dLY2ZgPI_Uax7h@RfE+zi){|7BmEZ z-TGpr%|!rSZLZTztPNRx5Sz6v9J$L`)PZG>bd&V(kvnkUQ?AnIS41Oc8N0!^;qRRf zA`YE8jdV`AJ{@|$yG1r8D8M-&ISA@ry9tT-VuecyRXkgNi!jxo?&F7mc0S84-%q!vXI zl`2MghN6Ra2uE}-dzwx40V~GW+tTr(4`62((@2h;rRC==Gh*7)HxMb{{ON80YQ#yC zc}q^cih$;`@E1}JrfRaV`WKE?%34DTw@X^MCTHn)L%M{;Lwm&!uR!9~3UPvuSGJPB z4V=OCLGV3)sD1~o621EBkY*Tm5Bq-P1XGdAP{tGSICB3mx?UMV zhLbmh4<5yWSnwc!CH&~a35+kj^ZbFr1k|6Qls!$OT58Qp(pDn^s2qnnYZ2Uu9xo6! zJ^Jk!PFl;ELA|?c%+Iuk%Qu(pK@KOQPgoVhTYC!u7oYGABA24m=<{G=ttY^F!T(j; zO8CiBnW1?OS5>=$dP5lb9uSG;q#FJ-gi3BtfSa4_FcZX-SfEY}g+5aKoBehVx@m%| zHKs{UuU0g!I7*y5#AJW2M6_pAya)y{h6Zv5fgq&nP+L%rapp|!>fN;k2FTkY53EQZ zEsA3%t}ss;FJh$iN#-x@Ei=TIH%!21mXm_IT9x^1cbklf<(_tSypp@=kqR(2UloQa z>EFnOcn*R!H)LqCkvp$%uBBQDeS&;I?_`}tK2DCwpOcE-b&8kK*Vl)6t$Jn#K0FZ_ z(dZDGw;V6Zm1~Elu3!yr{dCTVY%-K+ga zW{V1fL8kn@2|tn~LGgYlX&*PGnMHn+i^$0$7j(|Qe?wql;fpUJ$WW;b%!}M`|4tI} zYtA0xDa+<(KqQ;LHp*O^{YS09)Tc2v&~3(u>iN z^=R?a-3P}?sZWfEU}L>3>R=of%IOwnDP&*5_J`-u1+uJct;u7O$sN4}EouY*gN0X> zl|N5^9x5oVxy8nS5W~^yFoHLFktgkOs;B%DpLA67b`5Q~SpC^WfTJ?Ms+KY75lr@G zq@euh9R9hbxgw>m$Xj7YSSz2clE# z<)Tj7(Rd>LD|GE=_p0m0E5vq$lyrovw;PtkU|DN?bY`Y_F zSg|(V%d(!CaYwTfReI4N(rki&S zgv@PhrrD8Pieu2QhKaq#w11h}tlH0?JKA*7;eaQp$>3Y-QBz*V7BFV;pWCFu zLwm|c3=z+>@x^Zz8Oj8;mpY#PvhHX3QC_y0cMA&QZ%J=|uUGP@EgcCN`1|c~=KfF+ zYr;BRzfLux-@DwEhL<}A;q(x`lFt1Eal%r?%5Aa8u$m6s{VDPSbN0UZk64S3lrjP% zC+5;^diNB+``-g6?;Obx=8N0gL4S6L%>#x-xS@J*#KIx#OBD%h-Q zGxL|4GPYxV!p2Wn$!p%1By5NdRbatMDPJ`}&uRhj_GAfAwdprL*YPIMHhcWs78gdo z)O>gT1Yyb=6zF-#A(=fr2eGBR?$aA9SBrkN_x};#jjl2Zn>jmt!OJ+zeW@==2TFZ|fO z3$E+?cCFqux6-(nh|_k>BZ)3cu9cQ+)RV2zJ$5!W4~c}8{VX3j24OB>0$5Oqd_r4HaQF-0myNLqyU6XsN@4aCGs?pL5f{y0=dOrD zvPdQN!9NAYvIlTN;b(kfk;mNk(F-kgE!@g}cwWKT!%yzl1EPHsY=?SZ183U1w9>&Z z3ii{;IvM*r!A!`Ljs5e-ur56$FNw3_^^IQGrD4dkQ>$Gw_=&>vJ-A5SU5OIb16ZN6 z)h_jP=c>>Gj|6;vym|#z=Sk^>^OKNQn3M1JqrPgdW&nD`(FcpT@jP9Jrw?~q^hHRD z%}IYRkfF9qf|)34AJBmT99YHsCdDU_ru~s@l8yYV&QAn)RIqZr3nUg3x?|Dk(QCtjT{?7^ANA*lUX=WOb5wudPECJ{5Nv54tT6m*_K|WB3rS}| zK1`RM=Yg$GFON;zfiik5)k%16+kM|6u9T3&Gho2-k{eaVI+okM*eU)B5|oPVYK_ox z2m!kI4La8QCij#Vm3mPkbk&98*5-OtOX!FoZC!k)_*kVxf}}C^AiWjh`XRJ(_?@wp z;ZjFd)osx;-_i|efVBXE#0B==`7f+Ns)C03%t`cU!~3eVt;O`p%Akf{T#HWH`D~S&n|lzuD-}{{kjG{rlE~rk0X+Kp@d_-!%l&==pwRuy z^S}bB$&(j@L6#gjV;UN{A=(Z#-YLGh$op6EvGN-{8t};oF&?;Dr_9gLQdivis`uQ1 z&^wQgNrx0v;I~{h#)9H9`3%d|$Ig57o{8-LiCu%l&btwqu%#>U*Wc2k8WbZwkkgMf zpy~4hf|9IF+8n-V+BplYg4Yi<3h?6Q%wd)@1ri_o4{kpA-^rb02k_eL#Q(|eWKNc# zJow-&7ima*DUSuTJ@FRupZkZ5+8wv)bL}pNv*6gJnKJz(*=2$99{;OXC0)E7C@g!< z7|OVWXJEn?7OM-}lFX3&&tB!>((Px+$~zR5Sc-x0SGk(f<2m&pdWZzmJ6S{+X+Mhu zs2s)+^-fLsZ8%aX=HFWa(@@Sr=GN9MY?tRMb6%eJ2(>l#dvU_9X{fYTI>c7MtGlqn z23=2rxpDe@>nfC@f1#cwN{n>xCOouLV(EeVeL8^U`8PKqC~D3Hoh^oii>x{kMom{2 zNcjcsy%p@1IBfyl{NE;r3POHhYR?e#UMWNtwKDLzegiRTLi|y^-FTi~4E5f0jTwl5{B=-jw0nS&poe9 zlq5ejqqP4}=Zbk^;ed>gtuz-rHybgZGsw;@EHJ|p3>bF4Yhj3571mOCqGoCsNJz-T2E;%!7T??BX}4CQUb zMsc7eYY>qe%*u7}^mBEhif zcyH%J8cNBNIDXM%yn$(13r2(=Z1*IDz{5h8ea72b(_#l`FalwieG=pGJm0?0IGo{F zx>0`S;V_cJ)_A2-ow4keq8Z5|q^ISzS9(p5-HVQxqLORaT~$uTFXdj85-|JU(=9rr zi(KJD4u$B6q?aTtBH8}mkd82l-o|ac@co?c*4N)J7r|gvcupc`aYGr9;saLG-$OF4 z;LTkH&yT(z9gbUg{`<=tWET;r{6++t`JhB1tA0wB^55zDKT#W^8te)P`}Q_Fz0(D7 z_$L85gP@+Icp184I!aiLVyij&u9Y9@(6W?1-)Ae!vUW+@fwUe36!^%4+7Ic)7t`sX zr!U%UB7CpgnNp`1pK;t{1ZWPN+_snekDgcd5s~eG6pr}Ah!o@c*PfF*wA3Sn@o7@W zj!hpMUxdc=(&t}^X4IbP-R(j=-`}%+eWj`%*MU3bM^cGyomdjHWMl=y-=3(}>{DY| zHa^UHKRrI(W-4RbinH5r?;A(hdzp9)G(Y~=_af4`#Et!bTPP%9(0@@`ssE<5V@rGf%CKh~(lzI1wP*0^Z%;kY37oPiPJdT(@0U9UqAN zbYP^ozb|0%N1@f=_|{gC2mWhw^A-Fa1LNDm5wb?Y5{sA@|DsIiJKl1lVls=(h)jEy zWMetN>iNxBF$pH6s#t#!4Z_Pg%xsJ59~chon-Qx2KvjfJ(zYNjk7O%J8_igA@xbQ? z4*4YQNU$XzrMTNI5mz(t_o(Qa0ZC^l?SoW;V|k6-I{uaV%v9o zy=$MRN>;B4_gP}4{aa6XQkas+`GShPYh9{BPQhuAmSDN)p5fT4J-bnh`@ysV{wHp9Y)Af%grbKZvoQV1u}}LMI?xMpo-|^5y(HoK zF~QKqzu#OO9E6X<1Tk;QYtl$^68^|`ZGp5$QDPVI7Agh1{dS*AYkIyJ1=z)@SV``y zQWpgD#|#LBDhC`~3s{!P{U3=A%_YB#?Bb!{pN4*419Oz2;lsmA8yi(-xn!}Wvu#Vz z%X{8a?fj+SA%DEXS1J^dFGc#@ncyLP**Oed1Wffd$K69ky+qbB55fUus`XNW> zTh9G0kPW-YgFVdw31ac#424Y^&N?2Nm=9;OTZp=*#A3sK9LUp-f^?V zHmfLytQ<=(wyE-Y2KmXMJ3+cBD3H?`0VzisxW5v_Zi7-YBF=e=W?p7YJ~VJ|b(fZm zDYZs9S0IpCi6Dm8W4ZY+t5t`?&D}jFBz8-N{w+-Z^DSEHn{c}ELcg-W!O)z3tjqKf z3F54t--Xz!v%?%O&!ITc7oLz=Q?61J94L?6MWgq0V;_8qd9BbL_2CE7kjU8bT@A9U zHYbv(nJD>vkzdK1&C}KQ;!vw}#RT+Mu~1oQ>4bFY8!|i?K;jgGi2`)K;A-r35tu!kOjuEp!s)CKPmsq-C;0&q z6AM1*bIUZc=WHtljzJj={!iDwDw&*XqL~v{r@x%A4=1_oF`29>n_sO!8;P0`Q)0~V zh;dL3Slh1MFgtYGf!fG%ir1-44dD?u#umba`p54h5Q*P*jBJ_I#s~a=LXPy|`;ZC> zJwax2GtbxUp`i;Oe}7qxSPTgWIGSiiDlT|(F4(o6Vfx^)&mMU5L zzi^@~!%gq?>bGowg-_#3w;BCU!UTh;l;!by8IKn(j?>_g>t3`bfQ~NcF-4llxMxkPAs3ZZc~5z@`BHCVTaOvn#b(vb z=ArImeThOhdVq?=yrL0I2Y3T6di#}pcaCC0b1*!h%c6^t>M`MfyGxBcu}1!jtM$6G zq7PLbTt)xo)rw(qO4uRcX6}&;Wfc0E%>8wm42zF%&w3){rBjKNw(zfyu;hq}9scI+ z2|MXGx`XffM|xL-4)QRE6r(|wK)l8ygQ+>!DIjn^biJ%lK6s%0ss0XB)O6@+{F(V5 z5GjF2?X;8hNp72`2?-a$#p*ou;>f@(dpU{oBGcy1FZKUl&@GB#`7{e3i+lU+Pk4nx zhZ5EMn2@TAMS};(r;VR*4q>kQV?`U{>20{%GT*vq!>LP_o*2v zo5MC}{zOK+k;kiGqV@FG^=E!62<79a-F~qxHU;Altr0z_ollPGo8MY?iDLvl6z^Pm zwSAG64Hx2&(T%Rk#Zf^;ET5ahtkWNc6gp)ZB#>mq#5D1~QO`<-PjDH0GYIw-Dvclrujvt z?^lXX_#B;DzBwA>J;Hqx_%D^^FBdl&qLCF0yvY)oawT#GkzoV2FBLx|*#=4m-N|L^ zzFm=g%RGc|G6HdzuFN@Iv$Pn6pzQ3_?q*)Z`Tc%InOw{0o9@k^8I7tf21i98GNBQ5 zsnagFs09b5Amcw4nol<$>vOLP>ynib@`^?MhRlyYHIgx;^-5o(Q`1a8n(YhGRVI^u zCPkzoXaC6@bjmtIb^6eDuiTIo!8}UhkG~S4A^>a7$ZT>x+Z95N7^(2<3uxxA#pX-WKlzqTO=y zt{(s{GE8T0gv)+xWS7Ixk8bCM;uT<}VhxdphuI zt+?E9zuoat+Hi-P1jvJL48*BJ=WYM>Ra<1M#PbaI-&JRSw1TVO!A>}$;Xw`QXfR1s z2BX>#!i9O>#OKMfw2SYB3Z^P1LZ6xkxm=p^Us3Eb>`)-0b@0#6k}g8ZQGCXxUWo;= ze?wz*r#oX$_5I@O-VT;4r$URYoSUEl zo{=H)t&JC6A>3Hx;}xEleAV4D&WoqwX!pQJ_foFJ=6tC@Btnzu0#z7qrl*;b8~@^@otKZEu9Yj2^AGpg5WBO@Gi*iP}Tb!PD1 zeFOxU|8Z9@Y^o0SEiCD1f~-%qa!OsPFZh8+)}C_GQt>Z(qU2!?iCi{+9gh0peG2xYM)M$xBujbWf@W?WSdO+t?F@^jZ^lk8H;}oQ(ETey zl_DYzBnw9I!@FU`P8HYUa^fpPflR&BJ)Gpj^dOv^UhFzSg?Ja=UFJo0r#Sa%OdB9= zNC%@^9dQPn`N~-MK1@{n3No2=T7e8pfc*tt&j?+AO}@1=BIGgiUfqfjslKMazR1Rw z#7SwTvITVu?)jqa?|;gS1MaS}$}nC4T_@==`J>Q;=NjDFz;0BPgTuC^Qxdb?=6CRW z7OKa^Edi-|M6@I3xO&{@$eN0WQoOPHR9m)09B}xD`WK8H<3%G+YM`in=tvlL;_>5h z-x(*&UeWHjd(Awi<$L!p*)%1s(Nr^}Un9Bp`fqpr&TQM>nlK*DSiA^KX=B3n)@awb z1@0T=IQW5WYl14Jqer;R?d;gV!C!VaS%SFG_4xhqnDSqXKe99k1*;$>_KT3bC>@e%$N{NnI2XG@N7{ zvXs%wY)8B0?H(i}x8lx~f~;Mx44mDrvy;_ zEEWP&45#tSf8J&YpGGuG!^r7z#?6{P=#D1B*pfi-5|6A`lbks$oY~B%nV$Dj3ofCY z%CU91n<&HimGWAf6qExE&~UeqkQ(Xy!@(q9pR}H&Pmu4~fuBu^Bi=+0MrAP^$s<*n z^e6AGg~aU38>Cp92VC*mZF5Q&O>gP`6c3X^IPQvKaK4WKA->0%QhYy~A;;PeaG*cd zsYLstn6&uo5(Z;o-dGqLwerI9y+1cU!qvJ0!=qbp@Vg)z<}v3=V_4SWU(K>q&W++f z32`X5jf9i;`fxs!J9Hu|O_K=GdS7-kHUWf|wtxv4 zs3UDrRAua~+ENGosk|Ai9VTYlZC~*HzCKa*z}^9uc^g-ZSD)kmCv95H z3%l`#O*947+{yH-#~)+!!cC9OrWyl0!dKM%qs0>D6G~ZVUSmNY(W(g$&-`|TXnhDxGXk&Wm35*E#>1#wwWI{ zinY;(to~U#`gORP{z|#vH)~Itgv+U;G%r;o+$o)i7dBf{leor~Is})Z|Ktyu=_?%A z)7%hvH3^}hoqFb+agW z`J1gea~)9$t!$T>g9dODOi)BTHu47^$Pcs}<7F)zx+dxn2%=8_KO`Vc%#wR0V0tPe zbZ7nbnjX)<_o@sQA&EmfsafDxyworL890F)>*}?kI1X&Ro~9(ff{T3o`Q)SO%SJeP z)>bjFb&n?%$-SaDw-xW3AJ9Lnv#Dw&k~6!QA&Fmfz#_G}imr#NI9(ci+uu(UsKnN+ zSwJbO~znUj3h@`vM*V9F)H51#I=Ox_Emc6 zuw?bC1NX|SO2G1Ilr25gPdep5GQ*X+mjAM?CucVJz}RKX9E<+@`A8E ztX4TLBRppF6!6px4dcT2RI|SfspayPL2tSNOL# z=WeUWFdjI}yqZmH(n_C%JJ{N-QOU+AfI;vIsYLElGPn*f3z1>$B;dH_dbJKiq_mBs z{TIlF!pcAC5zUuGGml)ZzfUlGUdNd361t|WP0k&k;=Vw2+tG5SgMQB0XO}b@77~Lu zMr+NpT}h9&R76nj*4|CgE;Qd0F(YhjYPfPhOxGwGcP-@kQ$Kjlc2G2cD*Sbg-KJ#} zwtA?Rev};zu6d|M{gu5c^5qly_QRj(U%2)>Q{J(4uM)*EhAb;0X4gb6MD7QF*<@z5 zKa;@wPf!CdiD|xB=c?66mm)bt&t$F7xYCkk<3&jS{2RUiY*m-afvx^?x>P5LMQBHj zqT{*49iA19^;dX`xO`Wkj0ZnY`mRC`4{o-ywPgheT$j}3a_wixeA}<*>QG24Vo9Ik#^}M7>0hd6=eD-0t?cZ& ziVk95Tk|qD0U8_Si(M&r^hg5I$t#(_HK7yqH`7qhGWYQjJBti5?(e%nQLJ%WD|d5(18!{pot#5@Vru)wCgnrS?8Y9}duGt=%s zIP#n1++girhOB$xzPvtmO+P2#5`EL^9%vmd*a?h$S$D4B?2itmM<&Bjq2?w@L}C(2 zmi1Ds{s6lMNi>m>?-LJ9!uFhu&+T&KUK${mkLrDT=^0ri`Ao2??(5|i#p4P{dwF^h z73gHgG8nStUo1N>Y}@okU60E=sMb4lLDxHTC<0f`+$kuj?DQckIn-fpw3A5|18g(- zWu4Brj|!~I|- zA6VnPbdN`BC3Hq)yXBeLRM#G+wGSQJc1acTH&=Js>M{=LDH7Zt3k9))&5t}E&VA+oJ);PLBy68v=n%*kv$@c=|Es#c{@7)~p7gt>pHXduwbMdjR$MlJfVM%N zt5L}!TM}xfBj5)n;wUY9e2j$`8#gEYGf2(ro{0sg8zdk#L%me3#_$r{#{+#BeR-E}Y!k*f22 zq%U~%dY?9&S&1h!f_>Mv92tU)c9oMqM9FP${js~|JQ7?Jjm~ObBC81Bf}ul=h-dj$ zXjLAx!?^jGOFoGVdx6fpA>`lrq50M%m#UGG)HzlpIRR0x&1BJ5qRV~&)~Q@9W=apl z3GN2&{$e$skSvCh4Aq0yn`)255Xu3aR(5$5p;9T?a#H$*t+));HUD&CeU)^L``l5x z;&JY=%{}q^;i!}&V52q4=HaMb^7sszLrtv?9FX|T-s<#TJYj6X4L^!b|pfm@e3x@g^Kh=#MZ)P_U@3%Lx zA`AbbQLMvMjF7oNcBjdxY_i@l;@b z7a^T>Pg?eCo@+H5F6ggYz%1xi2utp*or_(STU*#>9hm#~m0A1VF&(J3#`Rlfd#F1_ z1)J1_;kVrj6?R@8r=@S(h00S?D4}9^uldR|FhOaOw}fX$Stw?=eBaI0^cI>v}B3c5P zjvR&Rcxdftkc48ey|c3v;GQWcxC|eo=rMvxYKPg_{k@``+cMuM;F z#lH<)+t0FPFN+8oGy5Hb2~+9V6|Zq%OS3t$sZEZcFaom?pg0N1_G#})8k2NYyL*;F=Ywcj~ zjLl9flH8Ve=Ud1;0UMa!!rwU?dgcM=T%1s`xYu!6bJMKGWjjCgdS3?J)D%6pxZdg{ z>LAOwcCO$d$gYktp}h9mM`BoHry6(e-I?$N{7Q7hN#Y%XXV+%C@B zFrHX=!Q@~M@w_>X|E2wB-NU~oam}g|QwU=G{~KhE=WqEj^*u>`E>8XUTD8WB%5y`L zk!yksm1wo)-^-XVjY5KZC;RT5c=|&Do(z+Z`-$!2=;&NFC+Cd4R|{ZGXZw7F4i}Q| z_Po#-*I0;Oc@#;LB=B%xI-K)ygyBAu&qHrTaS!Uy@;?XQ@GBvot3E5yC7G{IJJirk z4SBcZi$Z=cDV~MJ8s*=3emV9BRP6Q-j_yTzF?Bx8&?gZpdp5cL%pK``%b?jwIR1su!2e`}xJ#h8Dw~ zfw*0@OVMn()969bShU^t#CfaJ$1Dp&#RIYe3TdN@r<*%7T{%%gh?$Jr7e$bd^12hovhb@bG&!jD6bHx?Qa^;5_90{O? zy)Am2krTV5EYVdgxv}%u@GS1_&50AI2rn&e=?FYaxSZa6Xypm(Haaopg$_XIR158> zEy`{mtrPyW4+Cy*@QWQHIfQYr*zRzT?lfLJh^k4h-RbBLR@NY0h|u9*(aKo0%J7DX zqA@dSKu?d*dQOC?pjbv$R?W*m24m@R-c=9+Hw4fl`SnhNT_G30%s{GDq`Q7E^1IyK zLi9+(@)O@c>XiyB}HVXTs5$fc0AA(is{mXUJjI9`Fv5D0KX}d+&GNbRW*K);$ zmho>D-W}an$ELEHGJC+1VQ+6C?Wh>zlGR93>paiSz`!_D3n=Fhyf+BgJGWYxw_j!( zgaPcWd|SlY+}uA$rFnAnWtkF+6D#FF6Jxw&sKP)WOfQhJd#}Wr*q`S}1KVOaSwe>3 zIfpP~5=Z>J)x&lRhoFiQuWcW*m9S*m_&K&8AJif)MBBKLyTRh6Ay0)$U z%Z>om^wyi3RT(hY{4vb?GcafFZ=XsRq21okHLhGgGBQGBOtvD9z(et7)ymqgWoY{) z>_Rs851R<(#6(K7Cox*A@Jp2MxS$-fk^cwI#F$>mi;UV7wU;03C$97!fakEy$3wsTzhJCKoc? zAtgokRzNHg52~W{IBbecb=;*PyYHX+^&Z+Bk=d6n)qRNB^!bUROWlg$_X`VU`tK(X z^uEIGqe^y&F!ahjK_d+I`QrOkghPeaLPpiLO5R^)5x~YG)Yraj|7P*R<=YI%Co(U! zjL3Je1Bj+LIJza0{Va%2Kc50Pr8M9K+^BcC_aZe5S1ql9jbTOZJR>Ij= z8Y$npiheG_%IYj~^AFQ^6_b!h@P=A2>C1M;lp27$Y}wIB$?OHdgm^11mq&;>XGh{e6>`*?0>~23_ zWBsB}jz%)Am`vVltTeXIT{2{N@oJeX~l^d=6)HA zek4x#wcf!U+Qo%Fgf$4biPA8hBnzOf-}98tynEy+HPTwcqs1qfjkR$%fOzCO2~G+t z2ZJK}faf2y*`;^1M0HE984jkUwb;q#?Wa~z_VNa8h3CR%_Y4ela7Dbwqn!7wWzdA- zp`u!7GQaOc=nesz2WFu%Hb!qIX<1p=>O4cdd;Gt+1zo6NHslK|RJ<@~ZsT=m!Skb&8O8M$W;n%$fqW;H%-mg_ zu7?vQNvKAOEiJoLe$3lf9gdHcoTcgc?^l$Z};{ab0??psFpJc&<&9eW#ppqY@q5wss6 z*)>E;%T8a0*ck$1z#zK{VLBl35kf(cU$|fuD<%x8y_a-my88vvseKspj~RkORqaJ1 zT={!nGcZhg6CNe-ZW4QYinsijX9H(sx*|G6ZU3&XZs$j^=aoE;Lqgauh|u=#9?sa{ zT#iCs>^%3=Zs$>87P$w4PLBuFbAr%m;L_0~+EI1YNs3y)&n+LYnbpKumAhe^NV51# zz%oFG*iO;--n#w+Ja3m*p4}$0BkGlQW1hc9-l?Y=AiHjuIb_Er5KUewC_{MHmA`!p zXDWV3^D-aQ;kcv1fxJG$#YRtx$<;Ki z{8RKE4^LYfhw%#}{`7U+GS!cGXd&0G>HlGTzYdv#=lP$%6}j9^iA5MPqO#mK$&zd< z)mbKyk5D%ZPtkLM2zz|YWcowIk`n7JJ|aa}n&C=pY;SCfkhKMirJ*wx+m-L{VahWv=xu{K&tyalWc+^+U&r zIZEVBzv{fT9hJfGjTwh}b|mCRQrCk;7orvuBuyH6&=14`LgPDirEEyoPa|c7M|`I; zAN63?{S?8&jg(8hs2%2^@cka+>%+qnIssGew6V<{YGQ{OjmTVxZs19G+@Ov}0L|>N zAh7>aC_(D;eu97~tDcGZ`j_=Thj4MscePv*z7Tc{wJ*~cdi7*t?v=&xJJ(;mpQE2+ zCrpWtQ&WL&bnC6Sx8ETG{QD`Wb=2E3uE;{K%~Bz7>|xi>2q>>mG&r%R6^LrHpBUxC zNcE(tusJ_|@hf?>yG9k?Ga5n&jZYrMMrd0aayza$}&idVAVk?huxh_oVp_=UL`3JxzuPEzFL)8G9lukTJ#_&g$L3Mq8i0ca(({Cwpo6*8pOgIh0;V{h79U@5ozy}HPbFNLT zcjX)gDzL~eitvaqMV{z;@3pxy{o1}ZXx*zDRG%@^uv-cr`h|-T+(e-7%I_;G#aC1~ z^*iNK9Uv$WYmslCoFZXLddDj3to!=7(=Vo4M~*g>;lL$uZ_>wZkD_fV$O9lErry)a zwQD(KI0?2}7)W4t?ZwI^kyTSNGT4m5l!J+sgt|+xn%pz;dC9V#z~UE_`UQ7~>hRI+ zch$&(u9J|-FVe<^nhM!G(wnlfk!6!sdlzAeYg5iecBz|PfK%Fo_Xt0RYA0*BW_y`l z!2^2RY{xj7Vuf%R_XoNT!E1cRiPowvu&v1t*9{T*`tv}mHDsq}QvvdY*>rxM#RcX0G~ za$Yy;&HXL)t&(OL8rgd`BvfI>c$05EuWP5hFo>2HBlr2Rn+di?&8`wLyIoY5u^z@Y zTHjE-dln0StOfacAkccvRpa?br~7X>xtz~35w}G6%S8}l%!#GFG4EIGh%nM?6oB>% zcAv(Yk=9W)EYB zr9;;ShHSH$Yj<{!?u@8kpBcR3Iko!t01s^i$4-|r^3kOhpx1(7C{x1L+WPDD>({Gw zI3_9^*_|IVGwy(V9TpUK-wlfpp6lO#HQ2Bc>kNS|o@=CD1_u&~yo4~5ztC+@&#s{@ z|FS7A27cHKGt5e@LPJ1X^=5E`)(HgDq?YAJQ^wl>{b)%IyJ;m3oB zz}}kRV=j3hnlEE}QCysa+;$e$GtDJiGD6NqLY=hi$D~BsLSedFHlF_z7w?*I>>i5v zFfq8+keGnocZGTFw;gRQY4Ln*b{iP3S1SPqJ#T(Qge7GSErn`A z&XWJo6h+v4I zYr)!NT3@}?$TSF3egtqtdyBHfQte5w<=#9T`s3Y`z5_4UV=J@R1yHAtEIj@k^!Kd@ zQ%SsR_RrUPuE%tM?Z!kbFA$ zzM1eWW9_b_uZY%nmmyJL-zkjGDF>rBpd4?tp+lhDhAI-jcki#<5$Mfb5ENCimH9r^OP z^gZvvF+-OB_QgQ1nQuch?^E)53LCwrK{U0z4?25g^-55XD(%LqgJ;mj&zb8Rh0W=; zQ@xyV>ufc~$2a!eaOe8v-J(MOCqGIixC7e;hDHUrYAN{8@2!wAKU$D`&MKtlu|#MnOYFNTiSZUr;9sQtA3^1_v570w_;pHKl)t)x8+ zO8Hx2!%mSsl*H^nn(eqa`z@m7*y@kI(ZH5x?=hgk9_Y}*g2@8z2k zPIK^vWQv|+4vR$c>pOuv38i30JdnGFRUm>l6~f^PI){pm3D5aQFeE-cSqoUU7~`0E znhL=dylFFiK|9gq%Kj{=`#=Z9r@#oF6myO1trG{Ro|JxXnhJ23K@Ebj>5rG2Z)i*V zm-x^AP@mp=pGp)D*G5&c_pBdHpB~~{?*A|af~{pkR)l@&xN?5Wul}9up}^4jtuKts zu^Ab`3T1Ffd<76(gW7!7yp{ZLmq43T_Y1P zw6Tu0HmYxBy4T3xnE5h)XvlGpi!N}8)h;OYv-6x8bmwU~%d0xSt3m4d-ffre*UrYO zVF?Ia$>MT1!%M-qsSix8A=wgN*(O<)4VU^Gt!N&zp*&kh;86eY_0W2T?xmb z3!XIdG#?HonjHvxjah;te1hvESSEWIz;^J`CG5EwRawE5dOgwm%eE+1!CoUGbW?X{ zT79mQvxG)ji@(#+q$iMUZc3y%4)m{YrEA0XTKTysdt^TI4iBXzIUTi9I|D~Lsr`Q{T%mfADLT%8@{>;4&G;B z5*`wwcsPaLdXKk1ZB_Hw*;;?iYv6^|tSi13Nk^_fmaia14xF2GRd=zzFEbFGU{sE{_xYr%z`BL&&7e|LJ{)>U>ApO}#wu6a50%zSR7xAHeRslS z7Ibr;#%i6zm9eL74sZ6I#UoEEzGmXYg6UyEny5f&K1I7~k3B6Y@u-+F@_lXTQoUbpy^mU%tPZo#G zjD_6`3|uUpPyQm-`>Cqz&WDg=!RmHib_?^k#+|D=CX8Hk75rTxG2ZTf56byt1@}JO zpUx9`dwVj!emOze|EDq!ggD(*FH!83$I}OJbRhLOU+^4ukGJ>tfEvDvwzya@OUE^) zNcDVrNJj2Yy94Xnw_d7#g*e2fr8h@EY4TvDt~cZkhg+VfqWzQOjqR!N_GqNhs_Sl5 zpZCizlKUUNed}2~Qy8sxv$(3k62Yss@sI`84y|Bt3Z(r~f8p|wW@i}l#SgbtIIDA% zu8(bzfkQlQ0fB|jINh6OW~;|i4x&8XVBl#B-~!u!gTnV4&c&BJd~I<&Y0>){d##N+)HLa_%KM;M^WHHrAh*`;rHJZ#42 zjr<3M0u^2_zzcGKIC@P5(A?C8)0NrZ>nt8o!)CN^bSgf=08gL(3t2^Ju&|Y$(ESdJ z@q>@g-S`bZK5J*V*M$d-hg-KG;)M@8v|CCG0{=OMMRVF00bK zD~`l?3cV1;O6PNaJY=8r>}LDqNrsb4OTXT7T7X0${UU$YG%0c{P+>;I(CH=SIwo(r z>F}f=BJG6N=Xqc(0r7Cje+K$U>#i5n)%mx*HSh{Z%d_ji9HlvQ3b*>1Ti1N+w!Tyz ztTvys`T?-*O5L-SKs>v^)gPTfZd$)mH1(dr4u6K*tt*MEWal_v$Fjb+nArES>y^uo`l4-Z(zegdH&3-akVX(XHAC;N zoSEP({+{sm%>PU5WFyUG=$UujUc^aJY~WZ}-R@jbQh?3=+Ek_@4;M5habeLOEkg|&=?{c)?KhYDrqG*I^sO8I@Uy}*4#BKcH*f&vMI1mZf@iN4m zH7pn#0rL8wTx%%fz0 z^`JLtXwe5u+`w+mHen`pZt|6MvpT^PNk%&(FUXsA8$mrZlGXRW1K3ESa$qFezX3Yf;)IcJjrSB>YgIi2OGgXF^mFoB(EXARN&xY>-W7!olkZBS;?2 zuGAc;8-NC{61QF|E0Usv2?7){>)4o$yB}@M^Xdo-zj3-x(aH|WwKRnsY0H>zEZ=ut zUwG*9#F(zk;IL)5#S$H0wgd;khd^iWZmz5k*hsvm8{g9zeXa!~W3+2-ZjbwTJV+Y) z&o4ZN-{;RGcMnM1_t3-`NHORIHq#=*1dA;*d?3@*&$FQK?JIdgu{ zT)TtuY3xjS^zdD3Txz@^qc_g=TC;_tqh!D!{U0&_+w~{QyN*S2fLbAA^~O$2hLyt0 zw2CyS2m|>b!*P*Lwr$!H_Q1MsHO_&7X6CteOQz`OXpQ$xKzYAj8csJjI5^8uqP0u> zzs5=f|8&mG7d)QWKGy$l@o)o9HT_b={s{tnG|smA|HM?fY#3i_CG z7$VM3((1DaJ=*0ky5~;N#ZnJWiu4&|O$?$D9@j1$X&nu+6RRt3py3`$yJ9FE`>?Ra zypLe8T!az*5{RFX%~3!yi3j#6w-K0=zVW2~4BY!*W+d=lb_g#**b_H>mn%qraLsv- z#PixL_`wD$&PYKGlqR-3z0BX`)vvsz31x=|{_gzCTsiS)6yQk{tv&HqSt{1#W1La> z0-oOy2IdTtC5&G5T>johwr(s{w7X546v0;u!N(N#eOCAkYp);B!0rJ)2!KIqZ4Y{W zcny5zY-b!l$D~!MLZ zsyUr3mL&!Y+Btr@&A-D5f@q>t<+ptxJB2 zLqVcjHQltL?8M^6|A%xPPm8d>`O(}=!lH#R^W^`THO?rf&0wEg4XN zchfmnnyI9;WiFMnuoApOx?zS)OAiEpI>wofN6urF-rInOV7IvY^zmeQ8R~+Km`ms#}@{4u7Nnk8Zt2JU_b7 z@gUS}n;clNaG<{@MMbWUV(nBVT#%&(aIr@TH(or_@%f9}5-R=jk0ihU^b{6u?y zsCV9w*+ti_)KKSArbeA377|3ZXWN}K?9giW1ZownBev?vkjCl&+D*W4JdRtw+0WDS z>&@R}Fh}t!a@&&2Ffr`oAMdu!#`5gSHEP@e!@|DC0;jM9VpfI?DSNJo#Nrn^J+1z2 z{g2Ml`_9Xh;PV@Yg!9K0w(Y2H8zfr73B$g2KE>WBGX_yKG%W@tvxjnNZ3bq|M#mhQO1yxOsqQ5wKt<@(rA5vNJvgD0|b-Kr-wMsKV9eAGNcd6j4}2?Rd?3EBEStXl*-UjYoN{?27GKZn1;+ukCY zKg<)Lm7<)ix>9aP<%Ll+OE}g=M&$5}o+`%yV(D(4pv^T#G zq)FH#^(^JgXO7-G^|Mwd3?NtEwi|skJ!rYWi6Ge(Zi8#8be}+$3I((krIS5?wpphb zc4My@_*HGNrI0JwWDC9lDc$@o(%Elxb;Wfv_lN%cYwtMfdFFp~cP&tt1Dz6@5A-qU z{s5N(z!fBDO#aF{mbg+mahpNqVEM98s>8M3qd&z=r!i3rfSa#6p;t-M>s89+^zKnm z-~oe~u5bI#=&=6ECOS$&oq=U9xr<8Sv;MaclwnMN-IxaYvAJNn8{??sN(vqA`20$TRqW-q^b zuk8s`mU*DPeGVh{wS97l7&uyh%DEfm*zoNv(B|6+7W(^9prcVkgV^^%JZXrH^v!Nv zRLbzugGd3~$|DQYX{9m)Q^uiV!$|u_fsPUqd=SW9j=EIip-H4d$-`777Ex5zg1|VH zQWqv}@Qy}+w^oMD-LLX4tXWJ@k1M^VxRPzkOrjXu zO&hI#60=0Zhr?$o&+%umviO?YSCuZTq0I7}vT<1q)re;~)J7X6-H=2EPT`1cXh^ z!gB~GAnC}(ckul4P;*&iv`-wb%BTJy=hMB_&3T->vTaWyT5@1E_hBN8ABBN%#wmT# zfr02s&WaPd*!<+$^~b$UZj(0ha1T*CTie&<1{$BF5(hYDHHpP}kD|2pi89G0!HrgB z-NrA8`)c9GnlPA-+BKlx1@Or1(nv4srU36@ztCa&7kQDQ9=K~IbIs(;7cV}`QjX0@ zb@GT<1h6TKEO949e4dYaj0#@FMalWguu8K)USJW;cLo$YT<8ZbB{oQ55I<{-S&x2& z9mToMbulN^#3N7qQa*n)aLmN9Pql_wV@FlW{QsUG3vmt^rh#9nqEK&USQmT8i(?2;B=03}c!a zwrXLEIt?HIJK8#;+bT6sB#kQ;(N=SJ5|rCR8+*mLX7B@f`2Ft^xRkYjyvwX)qy1dF z%*VyiiAx2|itzvWd>!j&Dau#Q>^STSOYGk?e`)bS?X2(Z%(G&P-+w%^n~?k`an(-} z_nq!NA4^u^d0^Tcu;CF`8UcZvrW_WI)hyUvHY`;=A-={DjDDCCX=2OerIB?<=#||v z^zVghpPz}B)YmT+10(Nk`*-9kFh(~hw+>f={QGt5-xD5FSRe~<`BfC>%Z0Ctm?E%(6iu!H#q{t{qq69pI%E_d#n z<^c}W66cY9N{PSd(VZ)7UUWh+E5~XYcgd8P3z66Uufx}JrM?%!(q9MVi2(+0nhD|% z+9x|f40Q5|-8#+4h*u&HFbGav2qDhM`P2YaQSZq-1B#h@UVphnpM2%gxasyAH0;?u zGc{oH!ddVMK9@Ioezspv_T#BWYrvP)P)|!12J8BMD5{xZ;-@Y3xdjiu#i7Oc>?Ah- zwLQ=Z^gpLHieoU|KT#S#St&p!vcpwpf06Fz^SP_XQI?Z3lDYW^NIHK8|L ztX;0E-&CN}c7OfpIOLy`hSOqp$XDip48@b#1sNngRH-e$!{OH@gwBx zNyFjQmsnV!WXVJf3dxzJ|IN@?d$XaVrlXlV)qb zCOY}UCP4d5Y-1)UEog+_|IcXI3GLKv_?+7ZV;3DLJ$p(+&QSAD#T|~rA50q7lj=oN zANudz21Udxq8gaUzY`d!^z!-h1+hh8?93EVN0I_&zBwwv=yolz;@yvX1Ph6v+tS*; z4Kz*9>C+rf1N+8_@rfOg^A4(i!!weo5b4lkLCV+@UM>fJ@?v74TvpeJhZ!qpz32?M z72!S-xC)(zpWvEhrKLt3E3Am}>-*%IWnsFD$Iy(=<%)`XE^n*iT4fU3^bm2E@jzZ^ zD5W(ca=m2l0%y@RNY@n_%v zew$7_*e^1f*BkV2*upg)o&Cvzd@u{pWot<=WL7!iTDcODBy3iY+2GqY>8_>ZIRrIeN~Y)S6EObsA$SzY_E?Yi@qSmwe zk6t)MBi6_Zo+J(pDFfYtk!K3j5$0yo|7iaiN{U&$tjvwnzj^PsHOZp-O06Mjh4a+s zZ(h^;(7&R%hYUt+G^~zGDVbH6r83(rss3|}gT8me&i$VKjQe+F-~Q@ydN!95+w=VV z9mjYMi#_#~qazh+;%CH>L5?%InRvU5ReY<`gmMUNi!kr$d}}FmvLpu{6BA?Y?_Z_% zU=u3LXeI^Sr3;WgMNNUYDY(@m3g2Y1t#BCF1yT|(66zXEF?66osmkhUz#rn_^fC^^Q1W0trNcj-MWX7(n`p)fQ$J1 zcLW~$f@#Wf)CKoyYne?Don%D8J1>?orb?Duc-Lj($bPq zyP!adc~{DIi~Jh*CR9-i`j%v-2^XZJYDWyXK*nHu^cjC!%9vmpnowWx8?JkJWnxL_ zHv+a8{elSN!WnPNEFW1zTQQEpf123&#YK|Pt8E-@7t#t=b&zH z+7G8H4Q$3l~K{Iq?EaZFBsXUJEdmiCu#V)6IwYV2Icf z1(ArK-n~!VlaDS5pvm=u^hMuaAtV?AwR2!YBW?PFW&!c_(7)3Ls-7f%&(B`}P0xx>yuk0rk zHgNK&EVMJ#X4BjoJOWj>AE&dV@4Il|sn-N___OguG@;*MI*@Q3-33kgEK!GGtx2t*ixwyDijWglWYLg=;L-a1u#ZuF>BmOkl6R@WkVde5^gFk+_ zbu(nps==1}4{l#@^EDHA9sL`l9|Yz^S8woQ5zoF$^tR_xlG*I@h<*5wth~IA@huq= zd6P0QaKlPLFdi#E+0Ht=H@s1w9D8DZ@bfml4>j`4c0xApZx#n?d`tXJv74(K4}Bc6 z%?Fdpo2eZ^O}u1(cr)qF3I}*YazvM>AKOg}!q?hJ1yQ?-TV=a%n=bJ83itX7vY{?L z${UEYkf#^p8*~EEf{8s*EryUjx%pMtHZz9`wdo(Mj!gf%5KA|VK_MzNcjc_k46+j_%!z* zv2>;G2q-^2!flV-tY5>=6YCL-m%0ko0lC=*Y74GjQm<8!S&&?78L*9X+o0Y}KRP18 z%EZa+T=!Umm!+Jd@DuA^qEQGz4D8ZygZ*HLL#Um-_PRwZAJt4MMRjA+E95yahZV z_nYk^2*W7TIVJ^lm;Lt0A$yj;>X5thR3=Ln! z>4r3vompvT({A@_m>S;gt!18qT%=UrE0%#E;u%@W#0n?)CvmT&QF08AGTPd-m@{DD^r&Xgz+dL4RW>%N#|pOQ)8^;%QH{_Dz*S>{mJIC+ zU*Xr?p=+NtT(QuAaE>|kY_R?cA9~#?#!CA58LDBsZr%NYm84tb?U#HsU@AC|(7hw{ zQIfK*VU*=yb`=_#*9s~A??0`aQM*OZ6J=L_McBi8Gkwa?#qPJ>^6X+q&%6L zB;O&57^|J?6IU)W2UuUqgK*QK3F7nu1^+t_4?L2`Wvj&vEwh6C|dX^TWK$`Sp7}5&p>vyE8CnrHu(vqle(xEqA(bU>eg`})_ z8?L3)(=UruGoc7-B75Xo1Qly+Lo+1{BB(Q03$N=gfbe)16%-WIV!z77b@Jrbs%yOj z+b>8qxr$7nL;F-Z(Lay;{e4L*3yZuIhYD5~kummlWKx}kzDekgE!8JuNsCO%BqI7# z0-Yb`3C2Gd@(Eu3g9Vz(c!H5}J|qBRTNkwBHW5faWB`p}M`ZKxe^ip4I)m+g87Sh5 zceKQs@L&n_wuv+bA80Plm<3NQ6gvGw7@V-apB7HfixYL#Y$FGqv8)oWA8gC0*&6>X z&xH7OMFHD}cL+-E+?40Ylj21;8Szbk@ah$pTCV#hmrRixMCZPIC^4a>FdVElP5$(7 zpzSEC5z#jlyH$iiwp+x;#urTxSS^I9iD#vKvmAW<{IX4mwRLrmD5< zcYpEdnez%L55&Zs_<6$`j|&BpVRzh*-Ae?j!>byr+*ew<<^M~eBS587L4aP^Omk2^ z3Kk{I!^_)-rl_AgH#Oo0t%w^bg(|nWFS=VeSiuMBicrjY1oQMabHKa)G4#oYFK&sROS} zmp5XKvaxcl)0dlyO@?Ws%$2AY6V9ZJ)YjJid+>nHilgI}OxUekFe}(z!vb#A?!wT( zz%OQI=IIi31%>=CbZxR21*^S1V&7M)qAGIf<^fGdSRR9uZ=D|_fxJo>4dW2#ABlf#IZ^hUPZdjudAZYN{)U>os5Qx5y3aOM{9}inwV!{cU zDP(SBPLl_+x^5z%p@)DTpI0IF-e-eHEz_z325j6DYC>Up;2UyBX_nF9AZ=hfc?9p# z>owcs?8G!E>Z+=|9IcfmkQ}%!KO{=Xr>BFXlh>UQdZvb^YSuIY2o50f5Lx5Rl1Id05J3r6oGkeKfS@Jy_UMgQX&$OVZUAM z>?1F17%lWxG;xpa!Xt=j9M~|)pBKfcSOG^Layo4GmZzstO6xq9R#{xk z911h%@;J%EbJ=1hFA!601ry%E>9Qa;wON-j`aLNZ{mC)>hZ^7s1=LO-$1f|WB}h@A z=3)~auB)x}5mr%De3P)Xxfx(@Zy(6tOlD9*CaRG0Zuvmut28H&6@fREkS?v1N6M>L zdPu2iWCmHzA1_q|CKn_rLh8^;1}y0_y)r1bskvS=1OgSUgZfOB7zQND&5&5;YELR{ zkDig4`L_XuLV?~9v1xp8hY7`-*`%9|mQY+4;oWLFzthsO)D~i^15!>PSJy^(9+ea1 zNRqDNO@}CJ9Oc6EiWR>3 zcNHgHO06{^hF=;!#U%2a;o0qA+I`KQ^3y~1febBhmk-)fu|k_X{!NoAr@*7%fMlj0 zZ|H9xn*_hdNqZvgpq^umX$$tjT)upnx&Xh#wTe}aYUWQrrdHg1ds~?_>9d~V4nCA^ z!jdexneGPVeT=nP9sI3)OBf=h7)Vs{!+=-PDG>Hk5Ud*=8kV=sK=9RP%Teq^CZl+o z17Ds31{Q;L=Ke}or*l=*-GZ;0|%ln1vEAX-JX-*{LVp&;wF)(9j*bFKT*E|TZ ziU?X0U0=Qk)5E1twsM4%RXIapj=^{%s!pm3#LEwpx(4m}0I_$$zGlvU`@8=FY>MM3 zW7mZl)Ch=;$H&2)8yOCHV|wa^qLQJb3ony~t=GA=eK8eeA~6wDk9ZO_Y3BpkDJmw* zo!Vq{Yzzi+%cB%E+|r&~712r3sb@7=0;Q-#M2qonvK_}-oVU(j@9@6Umw82%^YcKE zERE&9=XwzSX3jp?HXuMj<EblK-l_6;cLHv3l+LR0B* zi3o8f4tXtuj71QhjWxE)tTP1cO6n5M$t0T`FGMYdOwpef z5eYu8Hd$3(zRSh$VXVXKVnavnbTI54qs2{?GURGMRZ=^|D+732n! zWaSeBZ}QcF7`#1mRtIDO>dfT4rodc0_#Vx|n;)Ym#We7ihNfV&fUN|;XrJIwg5`59 zra)$e!-rvLm^)P~sK;j|MJ>5Eo|&tvCD(~0%DMQfqP+6KeQL&aNcf%8jnBZYIBBad z3VuVd!dev8SYEb><-NeJG?q(Ke}5(y23ISiTKW5QAufk!P@<#^Drys7UeA_tAao5&W9b9TY8M&t9kF9KI+xNaeqOMyZ_+&-e|%~sQI6XXcO!zZE8Hdc>UJ;eLc&34oGl)`EYy7zJSDF zuTx^8XsXf$DV?hsj~}F-{(VFKlBrG%7T%6JG1?{rGiJBFeI)hg=y~wpubO(uP!T+% zij1GYT#e1%$nu^gNtXkAC16~cn)u=Yc!SY$r&_@iv0aH`{ZX|52MZPo2oq{y4i1P= z*x{eCx{&X}_&lm7vSyKv@~2ylheeadm!UUMA+ysfc5;eznVdm#}3*3h?rO)WNNq{DY9HG%pH*H7^f( zEsn1i^~N0TI7#d3K1sVyqHWwokXuf7f4-IW+2SL}kcpS*cwxn1E7O4&vv9%RV+r8U z!Dh0N?(v;se5bJR4Fys$2rxE(6IBDxbP3y5-^0PjM{XUgwbZUD!S-TFjb^((RZ-&muTP) zCJ7}Y!b?j_S9!SgqZCLlWyz92ac~|deV44TbYDz-`}P9P1Bdo>_q~idS+S-zb!B-|1dl$K>92Da3 zG=6+8SBCntx=D4*m2BF-vPGL8f&kn~eygALp-9hqXPxhF?~40(dYF6N@-1Hd)CJ3n z%#Qjed)FQa^O=BsVoZ^J$8O9b#J+-sduZkn_4Q*y8I!0NLLk#{EaL19uHFj2sn@E9 zLZnk0s$aXMCz-{uM6Rf|f7`p+3ZB$%5griyAtc>bGmESx;CN_&{~o-cXZ7CW8v2cc zSH(uye7x&=twmt-zUc1J(vH-i9uj!y9vrxthBX$~`&fz6IhiymZ#xEmky2L@c5hr3 z06C`Ds{w2LI7>gP^t$dW$lSTi5P+4k9plr*kZk(@ii)mqcGmf?3^*^{;F4~D`Nh)w z>knC9hq5GI$CYSDRBF6K*kPWM{ zAq4hr`LM*BIHC?&99>OB&?I=VD34Adg-Hc1DCt}8s06i7h)IHU2A;}TOBbQbUy@}4 zX(l>5I|uvuaeRWSX`^u&teB})_L5KV?9LVG5E}1VLhk2o=U|$VQ1jcSP=&cf7gDNE zNXF^Ae1g;&{RS)8GZXKa#Y()dUTlHF8Tg@ja(qg#%i ziB25zU3gNHXMSOUUXWf#N5?l0vJDb>7aaC*Unk=h<}l~_ahi7?M1`ENXAa1 z_-|cnP~!;M@^cSL!b{{fXJ&HeUNf6L)`&e}2I%@9+y&`f^BR=9-T&w~Dwyf+5r+u2 zlExi^)fEljq`Pv-?pK+wF~u`u-=8%oU_Y8I+#7VQB7UbMU?ts)e=SEkgL(|W255*&aIobBNSf+ON(FIrPw|sKfQX8jW6qy#p6{Xd z7v}Ty=q)eY)PkCZ=sv&QtBo?03}(}-MyUU`BI)w+n1}~={wG<7>=h&0k*|q$+=Ax7*}S^(mwz`Di)bqA^@Xrt0eILh)L*>mSn$Sk1r~P=LV) zI_tOZ%=QHcxyGMymon|2K?}^a2GpPdJ2(msU}U zHER}jj2Nm)qE=eacs8=R2p`2Tx%Kx~laRmY&Z*1axr`M4N^cvEnlitb*g8#3EVQ+p zoa@OH)2mar_P+J&^1&`+;SUk&wNpPZ*JDpudRTkj8lcQ|e@x+56xu?l{oP%z zio^#_KIl0g2~CzS0%u%*ge1kREb%iu0|sv2d@9JLT{0`(zqK__ek+)upkVbYeVR6_ z2>b5vkWJFP3-ee#n1)&sHTeZG%l}$i2J_82iHY%*WrjC#m?IggrA z+9xwLmEwz()2FX$4?i+Yl6H)~hDV)9|Fk>AuH{EhKF;ws`HL&QLQ_wV@7nMsoz76n z*k0Q?{E`rvSXllcH3y!10U*6?=gyypKi06qjBHXeGWeL2sNkl_#l3nZk1Sara{*!p z$$+(A#V>J`JUH5}7>lRe`t)4QwhMV6o1m8?OWoH?00ixZII&pIXmX-3-V1vOosDHq zQ|6Z14|>KM4fFl7_5-P^ZgWMvZNhjk`ufW3I;Z1*D%{1@b}`qucTZ(kcbE}ZI(Oz@ z^0EbVJPgfm7=@I4wfRU9?LfYL(snF4E(N_VM?3z6#AkK&{T@ zn1D9UB{X@5T-*v-K5hFQRfs3!V59zv-k!ln(IR*D$YU?$nJ2g;7-Pn7Jq+aufmlxp zV`CYsr3996cp)ZfXzXXh5sZjUa`%sji zi=Hd!Kt$7}!~7=vFt*1fr_|XbJJ~3SDfCZq+ixg5BbB}Jk?^Kfjz*ApOddJnj+9V+ zDslnMht5Ww`->{kBPSwKSC0N}@klv1~YozH=Tq*oYRB-1M)J)=x@ zs9aslXHjpURm+f_!KWLAcw-OCcrNIXjG=!Mgr~!clo-=0h+O%Kr_31pxcMj2Yof}h zAeR?z+$)5H(?;CtM1Lzb1`RS}P6-kpYE&lVfuiH^&j(Ze3UUJPIQnSwX@oJOwA;U~ zht@(=2cd?4p1hLRQ%Y(0Pzy^p9c1^i1v<-uLLXx4le$CGS0GSBcdwD>l3*m zP^Aw2Of^V1Y;dQRfli z9g%&^W|2Ct(u(PMOQs;ix2jzbnV1IO&NCHOc?|0em4)%;y{)n8?P#@(+m3vK(1muG zhbum_fAe?${5iVQTfr zB@JOlr&o~udC=u2T3Ea^;HP<_=`O@$8JU>c@YvMA5q~%|dmi`kCek6*hcUaUc^Zm#3MD6g!XK27WtU`SW9S}S?cTipb*|MlQWu9Axw#?`B zT9l}ZPCGJHVl4^MeCuLq+OpyFn4j%=&?Vgiqcfh6ED4+9ZD#A-nD4V>zrCHqWhV!u z_ZcqL-Jzi3&nY7nht;HGOjMRty!0%wp^hOPIpzG^1RdfFx_es7iV^d$e zh~C-WUfg#cD5UrP#GA9j}6*k4|TOZfsqL=2kuQAmPJ$3rD^c{7N`Phb6kD<$l ze{|a<4dX9eHF+O`i%eH2Ufp8Ptt_ql>M83Vxu!3EuF5r6G$pACi;|%q| zOkTKf;WZl_9=*A<^VQ&l*SME1VZDabgf8uSF;J8EVqaM$-+sGt@_3Dq_uxHFM| zW9IY>KnZTnEbj$;2y6aQxSJEuVB2}-d{3kKN)GMtbB;;vs${?AhySn|kXy74e|3qS zKcOPizCWwC^DR z;^Md4rL2fe%;e~(Wno2y+zEAP5MM0+yY0h$M^bqJ8B`)!(-oKHde6IKlI!B0OW3w7W?iFMIG^22u zH$NN6(hzs_z0qL)*0DtGZ@=U`)eYeWq zy9Npr4=qaW8kC-6F{J8-)WR+~bnuA*G%0tDa$>HeM*F)K)(=;rNlpyD*;skAY6nz! zJ`QT|Rc2Zg$tsp17yedbw{2yVh0q#4^<9EUVB|3jTPYcH-`;Wwc{FnH-OjYrGXyIc zEu&xlHS)hrX;H*QRD;eK`liva^<@q6HBM_mB;`yS$8Reut8qYrR+o{XD3A_PSrE;) zPKFcD44BaBpIMc2$|oCUS9e>UuKpZx*JO1`l-%f^vd!N2GbXh6>*T)YT#dGfw6etD zdk~?)L_njUcQiy1Ix&nmGPj8`l$yJtn5y|bxKtZi{(304*i0Lx9{V=9j9>PFNRn= zdt0*+A@?2;K|oRpkl|#cc7)#q1_ltgpVO;2G77r=WtV82M;7{bpyK~i4dYI!S3!1# ze*5b^!Bd<6-;b~}EIM4Vs@3VxpACo{1Sl?ZrLi}ojKXIDQ1l{!rz<7zNEiKx)dw5A zfjYnbWraV)<$>gdV8TN4u&=N?}SveGCZ=45Pj1Z8VZfn;4@ zDEa8}7&Em{luKNB1-!bp7Vzp&889X$rdmy+YsgDAX*IPIc0|*!z)Edz%_oUERQn6c zdXZK8g-Vvq>A`8S?gxH;8o&7d65aKkTfXl#R11(5Z^h9?oSxsuA<<%KdCcj?Q?y$e zJ*7quFNRA};QsW4|5~FF&sFFRJsLL`;=fnfVCEh60DyDH=#C7@1_FOG~7{sd~8hO@#Dv} z4iAdKU1$p2ZP{X(V`F1!CJ=fA5W36aK#YPRWrIY?uf=CU={#6(*F0)F5q5N2yz*#E%&?r+ z^Atm}ZnKK%7U9OfLHQ5F@prA!v$vEvhX*g1An^TAWu&egS&}kvg;c=(Ta0{y0>Tq; zcEB|Iex*JHA7bm{(`OQ{k*YR{Y7fyHgF3ERXX7U_#|=72z0D=7W9ilrchV8z7bu1r z(x1tBY?!W&j#5X`GvtkfpAw1gRgiCVqG*NI8%X&mIQ7YMW6nj0Gf5^y9 zGW)?`L%j}w-imJ4!PlY1TDsR+#Qy|kB)%t?LXFvI4kdMUBRW8+G!TpM;7Ov+;{XkW z0+|$BBPOsAvE(0kJ~$R>Sr&G4_=}C~{iDjME(rwZ`k2+SUDJw7csKMaNs)Htnh^CY z1MctNXqXkR1b}d|M2U+rmv2D{7rzER!Ww^-efK(n==zHLHvy11A%FykMaR*(!k}b4 znFaQpFv-lsRMYvp(n#Idh7ump8M4frH3Cyw@?G$R?eK^*5s9`BAq1_mP*-njG1wC8 zN1}JtasS}OuZ_q=Pzu50mK@)(UvM3s@%8mxFuo6(yr;3p$3AEh;?Y^$G(UtH9u594 zjn;gZsEGJ<&>9dXq`wjw4I5s@R<(J1E=x>4FPP{)kFcXU7D8N^ru4krpacg+7t6u4 z4IV#whpZ%t003k&{(DY5^Sr%ci8Y^KSgwf%LnoWIvQY+r@Dkq8pk_s=vw}S*UVK&5 z^5wUPF9S~BzzDAuf{sJhw+}_Wip$CbOs%xEp^fAfR?@Sk*SQuzAaC!}n!! z{Nv9Mt)sQa40<--i$k5wS1c+UO9U4bcVGOeerNK|q~os~0Q6+JxSh-ebGK77GTOEM z8LOMgouI+4E-g)-frd$D_Z15HSfceC|7ndKBh?3if^Fzt@yDwm&SLg}sOka@B ztWgk<9;{7FR)h9hTd9DN!WjhxpppT<;cG+l6!$8xwJ%50B@BNP@sf8KyCe)B8!%)24 zOir66DqF@%h6`zSe>}85aN)=3ndN)^_s3pnf7q*EPOczjw}f6X`lp#MHaqCk;rp_0 zuvlWjxwgo?Xgpa7BH+1#0-If6;Ow_=fR8p*f8YD%2ya#^ML`<{Zmd7W{?|PmFv%(^ z`eF)FTpZn)8+6dc@Z~?{^uI>2SO<1wA&`uuO|HG_c{^PU2qmcLP}>Jwd^<2t2`eJCm6q z#{+inl4xenJl2NST&F2$+1>XWn}g5#L|vsg7J}oj#xk})t8T;V5chD`^{eb+5aDm$ zh&2Kp>qAjnRU{r08y~-T0QdnPmY0?`3Fsl+W*iHiM_9Kkpz+`DF5mF`WkPbKGWU7z z#UWxqMs5K8u0ilC;#ut7+khb8@Ly`J%}ie?p}#G}CN;56{ot||xcm~Gm0~`PPX3N6 zKHc!{X)HTh!ObwjB_z|lU<43&8Lv1;e1#f6CgP;S$pG)!pFfqFnp%<+-Vi5vjYI^s z6_;R1HY9#z4XR$l#a#F=t!+O!o;lYKQ$0mK8tQFX?6EoV?sGiTP!cpG{gL;VQpe-I z|BYz4|D&@!EXKT90l{-Rp#nkM-MVs3HCtUY(bX@SSFc&Ew=5SgCRw>RUejeN34K^Q z24GP}9`5}6(rTc`vMg>#Jay_+xhUxO0!X9>+{TL5*wI021Wa`fd?5y;N?_<5dZ&e?nI?^-)_jTt4y^x~$>Zo|)9*qPvh<;=nvT+Q3j}u^>8X|$)`gp=tfa`J1sLp`vLKHVeJj= zWw;9D`pugQVn+y&J=n0n?;99eKmx?Ncp9kH%kRS8f4m#o{9cp7awF>UnvoWzM+eE< zTd5>&hvEjL@uYp{#sNee;7&IbZ0~&{0EQ=_5-fba3(K9V7>7O*i+8t#l#myHNk4u{ z`X*r|%GBHY*jT>22m2jqzPq2tIs>xacO%LQ{nc8Go>R{pUJWF_o8uQ*%cxg&r>)0- zNWN~Y;#d}-Detp6mvr>DnLXsTZf@E^sQ1V+l1OCiAZ;&df)T9W-%2&92R zL0&WAhnS7&#DAAy!buGsluPpj7U8LhF;DfcNKU`&I4*A*9ucXREmuF~ksI-z}RC78S8 zHb80AK?$Cx$%GsPHSN?sOFwJQ+a%kiB_SNIKI_Ut; z^{aQC7ocJJcU|f~iMM5Zc$N(*WNt_miT)+!lyy^kNEni%(#kO9CKyPn&VfH+_pV0} z281!SU$cUq2k2i}P=6$gJzeSX`C<1ftPc%M`g4_Z2K9{CPT@5|L)bTW!2)w%y73 z0l^2=bzZRvGkRa56mQdOK#hd2R2K=@Y3dA7e{i;n7(C6-zi?Mx|K`mDAU3}1&k{LV zE}TRW-zwPp)oY(Vb9xL=wvwm=D zcg%T`DdiA26m#W))ng4T0w%wcK>vB%FRtvL-gvpp>LyRZpUu*59y0j6tU%PyA!a4i zKBU5a-YLaBE$cj?pNw2(QZ;#*e|5p%?RmlhG#w@-C8f>1c1a0h2mnT{I~EqxSZ@3} zeU3_+{N>AxahRp?FBb8%*pJPwx9}V)IM0_^*n7x~vWWm^XQllt|8p6NWI=9#dAh5q zWZkQ+C)5Tq#|!0)I^AX+3a_bCI}yQI0t!qdpl~Gxjcjr%8GEM z?mlA5fO)Ye;~*Px{GSX_KAY{Y%*yO(=>K~M>wOv>+?$J$b%!LMVOy^Ya0Z3LgTn!& z_atwnFN#UE8%9uWICG7~rkU6?HKpH+Zbf;K@&SsQEWWsvCBw`zU8}nh!<$j*rhmnD zaFvo1E3iscJad*L-UR(qeT@O<*>Of>vM5}=%A(0A0=7UpjaH4=9VmIn|oKX63T>)=&G7*U2a4vUhU`(Rqc%K8`iXImIKnpy{7tl3vN(y4xW)yq`+Ky zl0FG(hx}zqiiTnZNqTh;d`IMvMtoE$X>eQ8$E!_jT-0w7OP-+X#Tbdlt=Q7ohKIBW zn-*O~SB!Bt)@9eje?V;kF;P8HceQM@qD5hEW!3apwzfKB6AS;QwsFv7=(u*M|_9pZ3QJIaj>yfhh<}J zt$du0j!qR)t_p}W^5LXh;GTkUK?-QuA8Vn;#~N(yE_&Je#I4JrBB-vziQG@18H$M* zRbBd4LJknh6mY1SCl&1??w_Ne;wqMRtyNAau>$Yg0kZEPBrdtf6;2 z1+TVlZGEz@hhM~U;x|C+sL)}IQ{c{k3FpA89Pl0I>oQ=5iGaOD!6w@tZQ`x{LOYh< z6H+8uEYGJ4z2gD+RH1B6=Tc_(^V%%KVDlAg*; zRN9Xp-BII)W?usPaTvXRP<|=^J{IV83Q7u!fLM%;BPos!vUj$3ee}z!Cc_(wK^{0E4X*y^Og?4yI<~a^NoZ)m~Fw^-V6c6OH2XN~e z9pJ&BTs#4ApNgPLBFL)7(hoDhfIEz)oO-hd_QmDPX&0l;qf1nX$+1*H&cE&+-&Y0n z(Zd5tD+d5h0WS$yd2Z23n%7Ikd-*J`SkW?gw%xO%{uo${$=WIiuP9G)i0rj ziO)ONYEi*Q2(l*B{V%S5Th{_SPB#1mDz>Z|`QYKhcKvOj{u5+xZ+3QS@5ur^9W(3< zl~;vys|HA_VPaRc{)#0SGrJ<76TT*EW2JnQN4dE~^=iV%!Kd?J7J~(ICk_`bKVFCH zoOqSn5n5YCT~2^99ak#BD4;EeGMhV=_MU5{pCiSrF92 zrCD?1Av%CZ;im&j!o$z#GtxYy8)19p(RYd)5d>g2#I!SHV`LtNP6<|{!y1DHxVb^i z>+sN~w8aY@Su-0XX+XZ#TP+V7={z`taqc~QjBn|+CpACj2K?^Ekc!3M?&C~ei8_Tr zIAOKw8Gg)&i+jT#pFbl>gxr!mgBUahKD`Qon8VP4AnEN1b{Y;Ykh(LeWyN=m3CqRx zER*2!ox%x-3kPegl8Ip%)*-A%0Y4~{BG_D&^E!J|#mLgseUB3`MrcWTzrVsf$xxG* zn^9a1bMe833+I>Zk(?0X%wH*l6 zA@Jjxq0h1$NW1c_PZi)tt)VN0Rf#0M8amK^dvq&{y6>s*B&(I0DSA-+9PPx*VN6q( zpBf1BA%yO)epQ<({5;=0>k8WAN-*D51J#%T4%J;b9eeS`GuHFeNkDtD@srzo4csc_ zxc0p>q{&5#lKBpn#2N&P}@Ztw!ZV?lIOR{zl-uxO3%DD1Fj$Ieh;*kO?~PJ;iYfNCt9ml zF@P9A*=C;>-M^qe%C)h%IQ;WM*!}-n8PPP9mz4Uz0kaAw+!g{fKF7z$^UQ0&7c~Qo z`G@Jd3oFgTkH{m9P{l~60|NhLimfpG`Aq^Di-f6ahuPe=->|CkH^J-|3r%D4QKXwf+wphdau&<2r;}sHfLKNmae>0|p&I{9|Uny4_ zW=#4Y9QWwaBNX)%AQp&cr_4ZFnLM&sk^pwm$i82-2vw<8%bH0HduYXTi?_RNejREG z>H7+H24|lry9!+Q;{-%%CqWp*BZx$UTyV2rEDwsa{=Ug6lffm-oX;`SvBhz_M2@;F zGbGt)#WBDL?{A{vEL~f3vYPmfg1pf75Pm@n0!IU`Aip){Gn_n830ypUh*zK@C-!Ht zzyWI17E8PLaKc+2kv-4ad8fo8r}?MTQAPT@>MWOVh-bRnM0FiuSb2IqD*~+Z`u5oy zAh^uPRss+>3oo9P2_}XR9rzNXnQo)T=?c9y-)PxFf;&;1nDV~tv2^2R;qnrr_J8F1 zV4Q!j&y~e%k{1Hz?Iixrl^H$$gR5Lm=5;6qi29F)o4Lf`U>)aM&x;$)`Qwg(G2$*x z)D5y57zqPN#s5IgI0QHcv9=`E127#f$9Dm%3h z>N@$|AQ4llh6D^FEe0_xU|>knvRS)3(Yq&m=Yw*^izdqgxY%sy>Pb+K`KA+FS+e48 zqgfZyq;j?U-g)!h_0U>ER!9?lZ37mUq;ipug+`r7tIP4|H!dt}J{JnU`6C03lR8kA z0Tb*aXXjrq6##n2uR~GrGXXi31-bOp2}WELB!@5W_xH@tT}9a4VNRMD*87c^KNmsL z!r6u<2vjBjZjopQXZgCqQM%xf-%Dc>t6Z_!RZQV&v-R)AlkNS~mobhfm>QEkwS+C3 zZSKD@wT=1KWAc20H^qRr*ha}`t<SE-;C@$htWxK$ylL47T`) zxUtPXF&i3+?Wwv^0kRKDT{Ez}!X&iX5b_=ZJVD3U1bC)A2%v zWFDU64$~&Z7weabT|a8b$yY`G@zU{{RzbmMA*(N(lKl^FFYaIcuA-(VfW2FJU#d4nehjNr^9LoX8@m>YHv@EABZ?U-~i>1A*6;6jzPuB zmbZGi*3R&ubEBBowhVj!^ih#@vLkq|#gOC#&^%!m={+b7Fz>Z7=_yX1H@}ySi}1_T zMIO2C@NRTGU_|cRXYeJF%lg@Qxr-$ezF)7jRHct1e0)Kay|KWgf2`w!-K&W#oHw+cN@wra5dt+xis^q0gLkUQb`Gz%7BMl zx$$_U)WJ{3_Kqr16@t^>@WkcK@K-19-C3EkzT(q%`|2x+_p9#yc(q>PPNm4tyY_LO zBbaNDRFnLuH0-V_@eOg%} zsj@G9i*pJbk`r2n>uRqq(j1Is`fBP@b+1+u7x}^y_2z3=Hz~t!F+_0F{6O`@QWe@7 z^no9a04xL|hs0=s*;y*>nKdYv4itZjqBdU;%)gE%s;7@1EHX>Fg}oDDh<`hMuBUn$ zz7wl%1?(m$9wdYtYSf=a=>BWel$--c!mWu;fv-)cCnpWMl4mWs7;2P^u-fF#3tKan zz4%#BKTsLo|Kw_7OBs(reC9sorI^NMG_hH6sx( z?Nei=}T zpI_Pc_-o=-EM)pY?|A)1vf_V%qu;9Tv)ro8gERlv`ZG;o4W!Zhx5N8_pN{Lz3qOGr zmFaQre%JCR0Hc`cHdcLtK*RX&8E656<#MaNJQAqAVC&Y-;4f}q*wqXLb>F2$QHTnO zlT*^dA}E4ag_#fW{F)N5T>OX&J@ooaNf)w{6haqLv(B_O-J?dg1Oqo-n?o?p#;p)bu zz7h*-zRl@yv69!aixTguX*~D)tmGxfxa~ZgX$qvq`CK}z>>xDovGQuuuKi(X$4dia zoy=XMB(XPZWS*Wp)2o0u4Q}du%1y0_*4~DyWD%8Q`Ta0DD1B%jF!yPpiZk&b_Ch={ zSrUN$=eW4q_YYDT;Q=29d#`fBZGYo+(JK8waW|T{V$Sb+7ZI|j!mfvvqax!hfSWuV zFF}l^Y=1OThbR}hqmu)--v9gQPT`5~ucu0-TxGeuS1n}l!VTx$sbJoXji!F+D{)7E zOa*77D!RElptn(KlB7A#xnFWQ=8gFl)slrd3&crWJIY3B?`SUU76Ujxs0>9KuiqMVPl>Z&(DKTA+*KOlOAEl zV4B!9P+KImqtez-w4;~K1fM$unbyGG-R=$jEQC)`A7>VI@bXogdWwJ{3MiZc^f%@J z^1Pi;Vxy6Q*ALfV$Z(DB3MkijBHg$h8g}W=wrN?)P~%a6@AvOxj7V*4rwN|bVJ{^v z>f-X^XxSa>S7rZngU9uB#Ce?9HHg2b_xN}hT^OS(sB?LnLmZ6R0r}!CsYKX`+62TU&@svJ{J%WtA7g`Y$FzVvJP3(9AZ0` z=kZI%>Wt2je(F-~4L_8Lk9Pykp7l-dcoS9D{;LYEJwlchFQ7*IqMs^IC zK_~E|QvLqKd{84Lr4$fGFM$?veSn|#4LoC=xqO_`uYqI-{HOfXk`Mh>th~@aAwas< z$s>jlsk`q;I7m|YT(Yn!bY>2f zMoG&omLR-a#K!oMr zX9Bls%ajk`{a63HU!IpIK(qYuADndIOpBE-jQnL4D7;QE^rV@I=D#j2d8Qak+em^0 z$equ$+0&u(Z_o$K;O8vk6Q?lDOS7vYS*a>D-!{oU02036_$M*8=ezMH*ha~|*$U_p$*fP=s8 z&I%}sI&3b3`_~7pts4#87SC}BKZOZ(zp2gc$(mg}ds^egwT2cHb*4_nlu4nKX`c`h zQw<0ZgyilK-#JM+a?^a)@%ufwh)4BIEOkGgw|JPbyyrfCA=+h>D=sr$eoM52$@uA{ zShAz_fPTPa7BgIFXyVXX=H>EcP)Fu+nNK`4Mfdnnm6u|Q^wE3Mo~(;O!)R5tYgM4! zF>SA2wn(1$SOw#Wb9SkB_;BHqZ5br zdA2oGH$o+Z$CLKAV7wB4?!i~q%xAZI50!!qR*p(ya*djc<(m%rFEc@)5bGBnfTRv@eOlclsm<0oBMNGK ze`o&@R^ew)P8-Jd5n2YP(%VFg9GbhD>e@_ zrqX@>CK1e0oungyXkRlja~3y480U>MAl?U|%{qo*CKySuDl&%u`aKoK6R3)~N>^}F zYXlSYre>moGEtzq)swauX`LFSJC>fOxgZ1zOVU z(X)I4Czdqn6`~fE2zAnq zEYZI~Nbr03SB2+uTYA~*_XF8Fq{!>|RVCaktmsz_77LPI_ZB77;S&dX9Rzcd5?M!KC9kol_CsDpsO>1;Rl!{bywKUu5gl3a%yEg_ zDm>4NA`4t}@~jbob?4YlFgNYU0UEcLyr8Lku=O?j`ua|M`mM~vjgm-J%&@YwXfnR4 zceL)Zx^xnna?C?}`kkbK!VQPpZJ#w!h0JHHO0yQ^-lrKBn-Bm`jd*}l6g zW8-A9&9E@!x+#H$Vrf$Q+hUsHRUNdt+EU9Jqm4MW9dkhob731P%L!6lqKoJ6(|S@s%IERMdaSFObF ze2&!yDMA!|*9h~fXhb;C4?Ych4#YIwmeM5|0PUABQrr&+PzV51@p(qqZi*LjNY{_k z@SFVaSkSyhS7clw+wP-;)rZ{l8+`rA1{P!pyikAVcr?J$$I?J+`~GmG!25k8p##Zw}3%Bysx7!K)2pT?03@SA;Uy(LCETAXhdaj2}*}LDC0NkzYKX{kjRu6nu`Xa z>AiMJvS3zxJs%82)&1(40J&moKLcf6^=;lzacV~;)gg4bbmo1~h+Xc{LECW1vi$s8 zhavWltAcOQ&q`q&z?13KEFtD=ps1~tU7udxifja^8T5{iq35ZIr5cI3QY@bjA1 zAbs5C8`wMYOm?TEg3rwyxklaFcAT^t)QIFx^;gn|&2M|CZ*Y04oNnptUwU|aqd9QD z&B1d$b9pf&`JYF;8kV#O8W}bB-GWS=LrWCeJUrtLaw2|@t993HVb`gfI*jDMO*LND+HZyP@pH`A7>j6?r8x zmga&WD@OGRMI{3}`_GbDbpFyr5=q z|Hls`#XX@ew&Xa-y|Z1CcG1;H(}15-uE6wk)bs%>^1is$9sP4Cxc!uhmP$qoDLHU9 z{zF%_Y+F~bw1{nZQ0+gIC|~=Qsyb zUGSRhG<>+aFsz21AFiq0Ga;VTO`&!e+IqWnSs?E^L$01Mf7nkH2616EFBq@r-V+PG zE)mvtvMwdM^opK1<-1Kil`rmTf7_Kie6SYIEA~_`x~SyIU}K<@vH2HdX_MTp#D*lc zA#jMvym#bR^+w5Gi|UKL*wurgA-&q#>@u-qIPKdIcGB**3b(|4!*vw`Zd%^wWYa0;IfnbR-3a_T`502$qP3gVe^b7Q&qOumN<8ifqnJTswCFjb&~%W`Uku=gakLMz;yy zE^eI*vDU@BRzD>iKuf+0UM_p{aEZ|%D<&(~@y~?~>V=58I;-t(?r(%X3=HVD?iGq0 z*!M^cLRl#OefZ#lCGye{6kt5Z#UJM+&t23iAgwcM@J?;gx#gy1?iw&h zmN1x~8YNZ*<+0y=zhb{<^%~21ZOvuD|JYZU6$SGSdUA2`TFNev0oQg{y3My0$6tYzU7CQXkVbCJ5%#jL!Wz zrNUa@Q};QSyZqlKU$IN4++ZdRnZ5Zr6tr2Qdu2gi0#QRgoI!>*FaMJ$8f_A{;2`Y= zimO1DI=8R3S%3NWl=ms^Rfl37G~{9EQ~knK`|VZp(U?5vM@IMX(@%JEyVeB-1@i!a z7Ai^BWP}Nz_|qNhksN9&UtHK0$K({z8&}WM+=1=TdhR*f7}lF%~_&^pWK@Z)+=*8vxA!H-ydO$@^UEkzY31;#Qd19(v@IK)l;FVnP(MF&A-7r z*QCJ`RrYG}tx~Q@((X5+THdOU?~seV^@#tR^~sf@S{&$XZ*U4-^(k}w1GphEjz9a) zV$ds=KA;!fm^{oB*`IGm&bho?wAy)?*l0S-3jg7@E~;L2l+@W6FO+=W68&IkWj$@q z#)Dk7{8m7sxZrDfh)Imx)4mR5?yd^0=|C&MTU~h){l?k`5-n>j0 z8XMz0F+!? z&33||&S1YKHLVAeSC*>c;Dbc>K6xPxoU-OZT=*&S7$5tCu(G)r;${vbBRBmIx zUEm>{NG9KH-m#?JKf6+jw0kqMwk-G>p2o*JP8^5=BY3yQL%t#P z^NOkT)!+b|LnxuVgBQ*TzpOrKM*^X3(~?Ibp?>9Hb%Pvg9l7J+w=ECrjaC@>B6HYD zWI?F!9yvfhe+bG#1e@AIV|#Xk7Iy%&@3HKUJ`!U1e(rQY;38} z08Z|py~T}R)r}guEi5kGhd&)TFKK|8`<_2qN)?5mOvbx<7;2}7s%P1sR{GT+dDIaO zc1zs=P%8TVcJLn?X`u?Ui$}9h)hwTe^`?uNVak`zFC}xDx^(-FuY4J(yy!=f z`?BG1ESO^i{gDN+A?&B0)@9i_<~8uD(i>&=tArL26%a;L{04ZSSlmRfp*RkqaI_{f z(3oCGc@-QdR!sJ$EkTmix2w!TeJVyJV7d19b&C!S~#mh6=Xo11ynu-`Dux1G3kSPEEzsuHAD3>lN;KQ z^68-R7lA~HU^8WDNCmeU`=GhsY7xvcCj_lSR%&1$=H{5{KF`oNono7b z7JX%HX%+naSxEF)e?@mXO!01iNv;H?5B1XiaLj`a&vf%%&`zH-r`zLDJc?T0_?_bY z&Aqt>;=H`Pm^)KkFF7Y%8z5!VWo{Jr>cY*WTj$o;eOBxSCod7sL;u0PFUPX;U!{8T z`1bra-~=jtmW;!gvVh{Q1iG@Do^8@ig3L;=V?q0ygQaUF*_%K6sCI=bEgh$}*wZ66^Uwwtw9wDS(zSkqcoK~4lZ6mR^zkZ6h3m4FeL=Yvs?sw<`oPJs*WS z%Z=3Am2_H^YtV~+R(9R_md33oG4bwDqi%wSg))qgpL{N!H#e=j zyBm+`YjV7C^X8Kr6#f4?S~YEkG{yWNVc%Q#kEu0&{dKmpY^lh6 z&uehJG33b?9_~lkB!p|62ZNJ^)VXMG_RdzaVou$jKBXotm*2$ga29QC&KhS^U(=U8 z-y;>agGNqQBW6hNYIAwFyBeiOKA2QdGr%r-pTuW&!mZ_BZgY50Egk>dDW01jJiVPF z%0u2*;>C+kJtZ2HCum|@MW$OW9q-MS?RCU*LTkpstX$Uqr7h1A_uCtXzD-ja)sbn| zf9Z&!|M4pCnf;Eyp~#1v{clHxPeQy#j(d&*sG{@l269UOs7=TI9$XD%w-#oBY9hcb zEl>DK`{7YXz}wYvNmVe2R2cv9W6DAwDo7+nlo41E028-zh?=yym5om zH$$el(;+2nV%7+4WLfCYizPd5nF$YVuDzC&0i|aQAY`qS12RGFTfL(b+(I?C8&&Q#;aikATH#h+z zf`_T>rQYC%fZ3a044@onhC%G@>tB$kG9#19yc_!#=VZ?x{CGS2veh}MDT_^$G5?`x z63i6|1s&%L<=)l(Qe2kxst=B)6~H-CID}1m0uX=Gxw2}V{C8mUn>QBpWK;k8`rD?xbw!#y3(C;n8+rJ6`19fG1_V^y>o3#jIbp#^a@rhZ z7KEFPK)GQkmMsg1U!WOM0P)(aL&hM(08BW=-}VcaI}C{*bBNN&R)qOgj8mf>j?Hdm z!1hnSU$K`P!u+8xy-=}=rC)eW`IL(t`ASDlg_IO8nIM7+E7P;hS|MO0%_sBKas$W{ zTfcrByFX(fS~7$S<$DFpM_l$RC$t=HdGxg(Z%^EoSkp;VI}8yId0I>TG346Th)oy{ zcHyV4Tphx_V*6XX#ma zQ5n($(WFf}Xa`$neh9dEd-FQk10mkDLz_GG?OSSUM-Q|R175l6OwDNvoE9LDFu(-g z^u?=!C5*@|_GR`ut>qJ9`UUMhiaojfz5|LdJH+4FZ8tyk#dyaM!ngL5tsKN_1e8sk zL*kBFq6`WE*}e28P+QKm3kInx*K;rR!@`mP$Bp4{aX2p@-rJ-XFD z{%nf~f`e=RF>7xyW7*jUl;Bloqn$o9?42y&BGZOGX@*XkMDug!G~O==&^vsRM5P|?$X{m)NH^9CRys%<2Vcd)6(djPAYqi%K6}uwm zcE{__c4$M-*arlZ*#IfXr2f@po7&O%%Cs|37_aXH_}}63nK$U^Y#enC4F7X%znb!d z+!%b6wsi2Zsb|p=i&;78yc#Yj%-j`rprmB+JI^iBVlSxi@EfJn!GjuH29xSgbcG=m zY#HQCJ&qJ+SU!>;Z1NO1sAkP}{7)nfjo}3#);0?`1lHcZeLIcieB|UbsQl^o=;*XA z%^DcPpGA%0vG^2_WW?n|ChmdZ10@k+hXl|r$3#<742)HbP9a|%+8dnn1!l1ukq%>I zJ~3eiVTjTv=h=F15*37RVam;HvoI>4(#`U^cBHX=y!IYb8TR=0`<_>&#-t6>_~Y75 z<64V3F;SE2le%bizQn$>s%xBsFAO=(s%RW z*a@Yf&66i0z{$F-f+bz@piaFBEzh+efw;G7!V9H@N8hUDHPCQ#0fk7YtzL*A+iy|V zWJK>d0ZGc%^VA1m&iOCMV2A?)d&P%>_|RNm6|=-Z*08DP7>w*V#?({@x%SNxF*t~g zoS8P!W4DRpC(>-h-1z9j!dT|HA*t#2!;;*R)Fsul>#e;zXe6(eY2mu<;xbLB`1-n<`=8)@X@K^R7)-8_Ws)>DnmsduvN3F$6 zr|Z2lB=t3F?ZdjNHLtc=i3A~EGPU(9f29MeYkQ7C*;}R6cSV3hhA+|GEKq_wzG@Ts z59WPhcVZ_&W^y^!7;)Q1``xQipO060!t6tBxz=c7vG#QR`12dhkgypLst1U(JIsUv z2)I_Ma?jJ=vyOsJM$>9iUXLKOMI)wS8Pul)fya9^RA-&y&`Yu8WQn#8am23=_4dQ9 zTk7a?Vb0UC-nwmLwWRMkO~ACkx?6yRVhyYbJ6`OiF!Y{7kdyCBwn{V7chXlcqZ#AHVv9y1IUuKxJ`xT zMphp`tQaL-I=T8hY$j@(nIMT%`MPvAHIT=FYKrky-#lyiG#m))AV>raugT-b4EGQ# z^XU;wqv01n(gpre=>LpH#RS)9{!oFud3?o8Hjf$jt$%XGa`ErO#12R!VeCt21MSK1 zswMA}f)e+!yygBFxWm1LiI&;d#k{v6eDK{sTM)`AL;wSVuchyrUO6@S6f$>JH%jrI z9`u!q90cd@>LJ5IL?upX0F! zg&~kC4sM|kBNXt1K6wH6HpJleL)VEpvzOSrTcf0??_jZtJ|D<)*(fzOsENHx(B!k( z7-Xlr%eP<;h$;ybMGtm|=)RgZT}_vAb{!RPc(C?h?yHlGQ=%ukb=Jx9m%Hf6r>BQ{ z8?SSF!MZH2!DBbp^#M4UN zBW(VuF%NWCL=6iYAPmuGPlE|d%>`Cmd}Y`E@*=O-yI129a5`5WQEoVX)SNsesYTph zjgRXZ=jQq*j4&%df2IKOo3xAu-_D&j-Sk_DI9&+tnmGMWd9k06Owj^y_H}btzYugZ z5@Lk?LF^rq4_?e}X(diCEV|1ozoSkUu|DokYzQZ;)xF&Nv>SSCR8eeHR5N$UDwP?( zN;za# ze@~KgjPXs=-lvBeQ(_8E6JsSO&!>qsCUEBh0;lNOh_Hcz;s0Jdn-^8WEMf4r2X(iJ zO9z1(U3E8v=)>{cyQ5wP-ajd^ocX>Jz z+Gs*a|NUPXlP1G2;dF=5_S=< zMcF7d6Ekq><&2MzZ4O=tTN4P6s-oa&tK3mdlI^3VScN#1%B|jSF_Mla}_JWsL zLmruH^+ydpW=^S@9i>f(8vXH^G&i{sXfstC&4j?eD?}>h>rJHx?;DR4MX$|XKG@Pp zU$W7n{#Dr06zKGVL)rIcP;ukU*Xoq9uN+6~Gy`3(&i{;2t%F`BI=_r&MUeUMDgy7iPoj8zr|Y=#84<&Lg6>BE|kGt<5&ml+RE1SkFn zl*i_Dhrvgyj7aGR5DRw0nm>kNqTd&1!ubrI*pmM<{dQK1Jd16EB<3f?(FQDU9v{s8 z=QJvlBFOc$mSkC;E;VugHFuUq!ge{dX)>8w}J+2g+Vu4nfmH z0upfn=J$6j^yt()Y6It^vOB0uV7b)z@(F)JO6hy{J{A{{cE*fBN3Dkw_gkMg zy*nBEB0co&tElznuTK@BLL1hH?58?bK?C?d!695XW~7vAA3m4*j0j`qXF;aF)+0CeLVi;K`>a2oX9;ByISpF6lxpk#gz6VwPW> zUDRLU^+6V6_14@UgZZCR@9AW~Y*z>lvO-JDW~_OPh>Oe=A2M_NLtZJXX2Tj`18v_2 zw4O_&6x>Z*#4yxc!-oyU{PXDHia=wGOwEP(s0PoWqT6GpGYYh#2i*Hbr^2U4O-;G0 zIeS`eaTYIC@fUE~px@|Fd1nQ4UuzOJ6!w-OTt$5vr^V2mjW7&P;B7D-^4}uqPO_f# zx2lZ6Z!?aw;L zqx}|d(0G%0CV|!O3bxVx4w?7>G5NB_WbYP`rL8N5G6Sx1ncl$bXKb)`?k#N*74ZZU z*TacZ|B-eYgS`pB={C%C(S06!nTa9)sIi(k@}3QpGg;M7lNDb4RU#IHHMm0kAuD)? z&xnRTU>W$B|Jip*KP>mOD_SDdJRNNBVuca5Pw-1Po>>?dJiQvtlj{nWXAFJs?w-#E z8xb(5rFjUb>f?8JcO!NaRc&Y}w=XRUB#2P>Fx2nOr6^%`<<(D*);Z=NF$HfarXJlT zP`zWT0->m{5>$miGPq+mPdIS_#sx56pn&KS-|7-diBidrS*gAEzi>C0#Geb8n*5s0 zM{8VR2gOpAS7+n<6?Q+}39Oeb8{k3Q3dh=9JMk1|<(IZBQ0lclmTsq^(-fy0E)$kh za1Q#a`S02gCekLEt{&d0>$X>P7DAK+WZO&WuzQL~NhOGi&Hel8Z)xi)!c1sf-NGPW znDU{oW=g zz}?6V7ZQzinPnRcD%u8|M&-9@DZ;@fA4MAO(?NFgT=t`%3_cFLR@anHo;PR^KTIt>B|h~u1H{i^`0+=3blRF|1aeYHWf?yxv?|SZ#v$OFgw`4__Eyufcmhuzm0Z_^e zUTs0YZ0=!7?-eLL%w&y2?)3-}!{i&m!bd41d`|OGWRdmt{9Dc5Ugz@fJTDql9%d7_ zHkda!9j@NwK8mKe2RVWZQ6wb8kj&8q9?#*Df(nf_m2E8Of+s>*bjdgs_hr`VW^GPb}@v9?)3svpYy68fM1Wnfyi?jdxFJs8rK61%(v3zmm z{~z3Tdv9^`XW&E}9rm{9@V`eo#35E3j$65{c8e*6cBJ7cn-r$=vTR}YcH6C9QO?hpW6a8jxaAC=k z3SC(BEbEbK^RqYH$Uh+?Q$Zh16^jZZPOTF+Um9>ZB)=gK4;7hWAYPUiIH@(4RI9Hu zhp?f8jue}BMaS7jFGNFfTV9K;?dqyVQhfGM;9^6;LG~YTw8+ch@=4PF;2@qL@WYrJ zFo=SENtU)*W|b#9%#AwOYc>|tA#PAbZcICUU3@{S06!OQ-zJ>+cju_b8wn*aKvF6H zQX`376ks0t1<>A}1m1#rVeB=t2`ux5LpQBd|J{YX{qN1|9>cZ&H0L5H(18tH(bCMu zV)>CR>s4mFIbYuVE;7V(A6NcFU=X}(jPK3XzSLA)+G}*y+aK>nG_tLyjsGP-TlEc~ zce%Q|{v~$RJV4nPgBv7pf;C3W-CJ88zo)$v0Q_<9!voLK<9C=7S0LnqbB<#j``E|ID64_2bL>@SMG?m+Dj88^o?{e}m6?oC zQiKvB93xZ;g{;i7XZHTxr_cBIPk;2N^M1eYaoyK_jpvIMO8BJQd158J_coD_c|bxe zk-<>-_n-m@R$3P+5nsoGn`1IdJE8-?-Oh1JMqjvcmtWWX)y^kR5y2RNlh51FmZXj< zzv#Iz`)GD#s)c#oW4Xkr2j(!*T$wNHSwp{Eo6g%l7Au&~wIj0?R!^TGjrs*!$LV1ywgSNIm(Gq5r98z8ze8WR+@bWUz*_h0 z<(asi2Deie`U?n_LB+t&OLh&i-$%m=o6n3b4VPnEl0z(-_$}+>o@4@1(t{jhd}db; z9W8TY7D}E1Ecdu3=g!JZn4M9VKo43oYX%;ypZFjr)l;pT0{=Emet3k@0<{P7D4B?4 z9+&eg&a=2Sph9r`HX~^MVkSu&pbKxB94dP*>bFt{Zam9P577JFZQv{g2Ps0BC}P4l z%69p_NHI4C^rK`b-o&WWeFr)woE1F6!~&wl4g>+s`0JuV=aWZfMTr;+c6y}DA!IOs zp?UK4NYJHQU$o>+uwu;C##;O*0_r-}D2`s1^q{@m*5p7SEh8QIP_5ahmUW79 zr@wirz0tV$%wf<)<%+c@-W_z~x~DSe*|c(>YVIHO@7iJD;lC-;eS_dcc_-P~*$HtV zrnUzK1y!fHU%R%FpeBF(c{8k=8$nnHH`o)%;;(k*leKbZHIpg zBN_NZ0UHf9;dojrbdg`U?X*VD$a-03?PMfE9nzqvHhHm-m`1QRk~b>7TXQVq-8r9E z7$E0qF_IHcdsLy$x37q6h?9b1V%#*X_~G%m;o;%@>j04mL^ueb8sWh;aipsk6$3L6 z?0fHBpz$-7HIixbMBV|ofB_8XqlXNQ8c=;Wnl6S!c(zG3jg3PHdUN3{#YCr|dR zTs$54+d99II{)d%adq!ACfVuSTG0S%2x3VNQfdkcPb-bE%SA4ERCbqjI5>dzsrsc;7RtLD< zzHuZbiePoYJV|4w?}WGLwvM$id=4ONM{d!dXuwC{aVM<(`vHiZh)w&D`cK#lUFe2K zp9!(M5ZWE8j&Y!JB97Ox2uA>dd0r(@C)%QJZB-Sx`}^QIL93MmksekB1knueAfOcG z5JY&{1?^1RO`5!O{%QE;_qr3Wdq80~b@fVNq~;YeNH=3?8Yl**y!_%`-sz3>8J7Md zV)@iPg7T10CBIDA_e8ldNZ|w#O8w72z`kMh5&lqBHGTH%*^6&AWtahi*JsfRNchnD zMFoV(lA|$LF%fj=uARtAiJu2$C=2#xT9DOd^ga?bmYmK^2^V%8SBq-`yX^P0HmyGa z%-v|ZoxF+f_?=Lx3-GOTKW zKM@qIk!&otINAVo+A3&}cfpz0H+?a{C7fEB1?zRj0wKsq=v5zL_FOWlK^?RObF=HG zmCvPNW^0~@;RWYgCK|RC?l52z)3;rK>?&B@*D3OyrI(zWn4=zRG5ihGqsOo!hUOsr z;`j(`Tu18c!&C>=Q+`ZzwB`WT zjX-~DpV_A^XsksK5v#lrsiRv)=cnS3gVV&noD*4Z0^pHhkwp1tmQ+5VaZqt{@c9x@ zO`OZUNDuRW1)u@`cl1$WW&A?2U-Vgxt;wefPN?ANm#7>l1iSIHzI!my;Oi~h{bjY) zB-&twpHufniD7c3KU{XeV`xbY^6w_V(2-XeeV+w*18#0^-JoTVt#k?ySHQMe(v~mH zghh%r_qMP<7K7c;m`-&GBo=j%@Mrw4{^ZUeVsT7Iz8Snf5)BV`Moxy_7vlK$F>Dai zH`{LkrVE%|ehuDqJn3}6MiDlVA&tqz#N^(qZJZE5dxL5#hB*7cm5*NRhA);tiE!^7 zjI||HDcwvYw-jrt6x*rPh2H8|ePaB#(L2;;94Fii4W+J4{b$v#lKV*s&5l`a1D(Q5 zOmr#I7fUCn%%N`^VmB0p#khgJ0Ud4-6-4P}Yil%vGrRuutJSq=RW&*=i1&&;*wJKe zQubB4Py@_D(F}Z`$8+R0!>=StsRUJ#KCNc_eO$&-raTNyWryv5+vGt}-I-iSC?uSc zF50?g6e13gvcDN-XMmP#3`;X0Yn(woqk;D0cY)GX;q2s~EY#^_+VR4r!3bZ1v;sBp ze6Vrw2~dNyeXL9r;n!?@+8(ECU~rs4UlK^Tfu*c?ZCK3QA%Y^Qij0l`S!mGUO5+az z2>N}pfDloMtlkQQPVzL5GUtz@bnHkjL7Myb;+A%@UM`g|$3=vs3AiK?wSI(+DiF%~ zmgxjki+>Iahj*)Y1jV$3(nhWD>?JwuOpv{p6M}1j-V91}SwQ5IZe0;bv4(@@P7MSs z1`EjRpkNzE)6|dw$F1XqL2b74l?rS?`cP`g9GRzSpD05ANFAYOxwX47^z0FAlDA)u z7%38bFO()Rsdb$@pM`(#XjG!nG!9(gQs4+E$UGhcIEzf!b-t9(a5y~cgjSA6@MG(G z$#6(2?C>hx&sQZ!zxogp^T^jkmW%j_=gHWF|KH)yPp`8lhz5umU9kA~dtZQmSp}LE zYgp_l+uPe>Zvk*jnpHE~DFXDeU4n;(XQVjUeEy&P)olc_XF$E2( zvzFG$vh)9Kxm95Iq8=w>LCikhv9J8vBa{Njt{H)r9`1~^w9ZzClgf&UTo>BFiN&fP ziGby^fbQl8K$xHgkvq@jnsjBfH7wVDkbdjPJ$#iYMQ_y5*4}TXn^Eg!;&Z0|J>pmv zvkJ0T=aC*s%0(Iq$_yq=GI~SHzGhzN8NUpAJC&nRl z{g>?z4VX}GzqpO;t;PZfo}&)ckG`)3qM#RcsT5sn*f05F0pj7Bpr@l=b zS69DrGVQnMD5~|zB7_ig9BgFLDkE(=XDR(lhJ~R2=@?h7eCNObAUo@5MR$>`>F|#` zeK2i9Lr;bqEg>}24g*dT)FRbgblb$E{i4QI5~WplM{#v=Hjl)QlM1;9?B4I3Ztg$K5QsRpY@q7wTb6|5JZ%VBqzxW|0W zwgIPOvHuS-AA{Wj=j}>V6#Zo!%}in706$Q7itk(_S=EHpO4r^PxE1ft9cd(K-QxS+ zAI`at%Y4ZGeWy}3+SG7U^b^NS^LYg8b;0;rqHu( zeiz4LEmBE7xvGX9*UqYFKf8$AkYKP-1An|Cjz)f31@zr!!!_IzD;5TR085wNoLo^8TyiqoitqrIYT-aT;N5= zSS?#alc0~zkPmIOwGjuK2xR*)kN-G;$7YRfJj; zoEbjKMgW?i;0taWf1!KBFKtLGxxjyM@bXe9Yy%C#XK@gqah3_g37F-QgBkV0Uc9>b zlRUjccu|}eEsFTEXR^UQ0T~nbGrZsUpxhhj#))5Vnb+{Ar~PI)P=6sxn`28olgJ#6 zG|S0Cqi^#7qe&<}^b)VwlD1Nf!ayhg1V?ltcuG@v|T95_BXj7NxjuV}{u44fFhe6} zISB{RB-(1`ynEN9e{2jOO7FW!8?^?r9K z>k*dtoqVs_|9z4-!OD0pqIj>wu7@{Do&@44S{fJ!{L7!h?^w>j%Q8VV(&oZ6nU98x z_rpj!P{I7HaG-@i&E0CE-DgF%TR5hj+E1Ic;-O>>V?w^*i9E#BAKspUx-*U_pq~;hdtoF=?xGI9hMY2S9 zN`dD4e3}qWYfM*;M#l+dIi9U8{omrGPkREx@zR(+c`d_hFat^0YY3>cz}O%RGH?0Q zH06OU7YfgX*(u-rdH&s&>&RijB|6SdT zF}?na`iy}uQ&p&0(Q+f9Jx?);>TTC@B97HUzqtc3^Uu!^7E6Eo!vcscfkVnW(d!fg3MBvPJIO zy6}{MW`abO367e7cTm8wD%Hz{G?LFAiHs)VT)6>lIu8!ml>YTkpK3amrGch}3HJdl z-a1(ClTM&%^%V#x6{{3}ydhY8d| zACQ+%@BAC~@c5JEcKGmaxFlej0X07#`n7+FUwK6?+#@F+2oR-+l^?y>q-pqO^@j?@ z3XqX5f^$(w$N(V{eWELVn-?!C)`CG7!mkQ4hC^v1jeV2!wS-G+7RoV?MFL3kc$sy( zkdV;N9&dmE;X=e~K;CKsS!A5q)Q&vwxk}HTUqHoWH;WTCKbKkoE}Xvk-u%Qlt;DCA zkB!mckSBAmQWHpb$m!wvg38tRkzo;RHk^L)v`Nk1n5ojtzxD`gAqP_RTwURSli)Rf zRFlZPk440*ktjHl9y$<>1eKzlomdsRL_NA9Wh^+_Ke~3#8TeXv$V>}t<~%w(+8+!f zJcT3PGHV%}Z7QSuDVqeiC=i0kgqV}#RU82dE91$N?vL^+bfdJ>7>EHkj*O#WbpqU_ zfVk#0ymcVaf&>Ca*3X|kPu(zZY-?cX@M1#I7hX$KELG$E$w2$H+3-`T^up`+);Vb8 zCU9$l&PjmVM52!@xRzDJ=M`FkE)|o1tby6dejUoN4+_pe(V;9I!OoUJGZjZAGTGaB zv+oFvR-2U#1@w@fZxyd%hgPndazbST#EJOnW7v3JQ zJLb&OJk?!)FO{|$v}Vcgvl)cfVbOPdF!+?t&@L!L3{nOZ5sgig2Z07F-OzQFc1TjB zYto<54?(!oxM5Qt6au4}|I^su4{+zv@VC3+9FP{-0grR_Vx5mDVCoC+nj9w8!Sda~ z9$o=3zQNzWou{QBU?Vq%Qvi@|B#rT2Bl#DM(4W%*4x9v;8t!A5s#V6PzGM#}hKil| z>;V;`fk5d>G6x;z&rlbhLfVhTe+Rr)wD3CyAVMKP5dpe@z*jWXEmPoOwCVs?*xLU7 zi#`m~y8tI;_z7_&(bJG$cq1=TtX%}NRXf9yQ3iec4ya^=Q`3ZHXM{*QkV1w|8S(|c z*Z$n!b~1DZ?8J`Wl{?Ev4~)^Jh%8wC!7>*&_oHxdM}y5tkl4_jGNTtw0T+{01L~Pa zj(xs=bITkJHRMj4fgYA+b{JT|G#wd-M+lkpmIc~4t-ImUHVoZx-}gEIt* zzI;BQt(LY4$&z3w71Y%QxV~c%r60G*r`W@BBn0%A6xj*r!jt49%b=U@p2R{`C_ ziDsT+Pg}fw1vsfdzG*--yqk$ZKZ3(x@66wz8v_P3Q$64?!Tgvpu{!VV+aKDgAZ*Fa z#if?dLbFVqw?&cR0Om^7hunV0ofF5yia%D7H;pqmirE?&=_y-#;WBc2rd_j-ZB$&J z74rvTalhRZBZZBG6c#;`q(x@C8L^0p4|eE6iTP>j_;@a8>nn~E4kFUSdyOG=P{9}^ z0N(M%^2tFnbR-E3ELti&h4eS|`V-+kMAd-BuKq?FYk zLiV=}{maO-5$VyjlmPeIR8U}XKLXf{W78Zo^;WUEzGe zvZIHQ;s|+M^A=GW1gU|zMQMS%N^B?0fyxR$`OIM5Sjcc%${fEC@QjC^EI6uqyWZU$ z&HVTS!a+<}SWNU)N!y;avC@P9Sd75Vop)5B+XE5(Yp$-HSukKlHJYJn8Y(K$=Fr-2 z8i0%ni2hAtEL&Ikt{n|_qD-kagd>5+w~Z`z6dOmwUqL%?EEwPrUK%!ZDEcIVDXL3c ziKYGUyC0>O(1n&}({pUR!>|jCpa8pRnx+~ci)F<#_Bn@wI%Is-Uw=C(5qgGs4m1Kf z$Vlo~akMikAUd{I`t}216bjH}D^B&it!lr#{dtlPk`R$?N?Ui;*XFpjW?9dVGBiW- zS(+!jJRBS}j~qF&_n+Y!wj3wRrh;v|u>G_PU!jDDgiIbC) zAAmhe&&<5d5Ug~|^O|X0lz7Z%8+^*x?1@NNR8Po{a(v7(9ZK7|E3@vDBtHLU2<&Wl2{;|-nhg7AC@3x(mp z3@uDwT~jkAM_Sss6At42)t-9%!bCu6HFll5A?M2E8JAjRiRV6Ylll!css&$ypj=|` zez8~!drxK!0;mzLatpkIXYPCpth<4@XIFqOZ!g-5+D7aES#35N;OZe#K|>y-OX2`; zeJ10h4?RA`Y!?F%S9UP!4ui5@m@w$*`@&AAHgSZE)>;*cJ`}5ONGgP02QI9uF zh)5X339;-3aOr4aXYu~M>j}LKI*Of}M-bpJPQ;0#>7l)@X7sQuHq?j3#l>>E59{p2 zO7a4mCnz66^;s5=k(9N}s@Et*2<{}wotqNmY#)<8{OInR<|7I5{@_9y`9rh|u9-6h z(5YaIF5HXd(^2tY+E5zi=V)4IRs($ePHl3$7}oFw0;=!}cCfXjoJ)WEZp<1K$K*JI zhH0qK4Xr^VQg0EIapr%?b$U`*xhr2o4B5l#&p~L-FDVa8#&Md3rBW;$NMH|=*wGLW zoId&D{ED%Lp^uhOZUzI3UUs;-HU~;B_=qHpA zZh$x2DlRT|C}VUW`T6-7uFN;HRbTOQ&gZ6c94?EIg#<50PMv0lPsR?O8r8_cGNTK% zdu^XKQ&e@2EOA~`77>eZRF%4LIX9T6+7P66z&;L7;wWmV`RJ$8Ys)ocmQPp}ewUeI zFe3E&VEMT9-@fO>W5lPyjyh3naYxO^%iD&aQBPzJPvbK1;m)+U#;8;$pioq{^78TB zJ|_GxnWk>VVZezvQwfRvh&6U)u0g^RlKRs{=tJTUN*Cx2IQA+e@QY8LIkAsFH^#dQ zjxjmK`vvFygeZh5T%{eqGh151@`jOIyS&_)*z>j!E) zd=>J1PaZ%13&Ord@}sYE34j3y5KZos2Xb}F8bIRZ_MJPkM!aR=eOhA6nd2(w`Dv;y z6Faqsec$q~|47&Z3eX!bQae7=~qIgxX>qHOqn7hVtTiOQs1y#4Ee9*`*~;@E2% z@SuA0fw1=uSz>}m$om9RebZCK9}mQ2^w1U^qWQ0{1$ddEf7aa4&^TBfmQ4ulSlAJu ztuh_V)#)$dXb8v5GrQ!kCaN6a2q=>^(u`E{P6c{&{0icSO|cLRxGCJhb_@(DIg)3VIN z`hUp}*g&ZfR>|flIvn6fQU+YH=l597B_FnQHw~CmR|Rh4u?lRN&^~{9B`rzb!c}B= zJcOgI>S<)=-O@GP)6vTte5qW&&(4L-k;4wV)Y(p_4_BVUKgTY?pN4_M;UaS}H!>75 zHBB$9>$rzN1jDYsVsHg16+o>4FJn&+uZ|wB4XE@`Ma=g)(lFL|)_7fx<+>LKRW6^# z!h1-5VpM-jT@J>vyPmfH{JF&nDT2^Qx#jCfJF49AX#8n%@p^c?h&}3Y&$5h0C_VXjDfGO@Annp!z>)7F>FiT zz2ls^)&r@7foq4u%2M~RVJ0-TlFVV;YqcyixNf-a@*Pd_$WCz<9FXSsBj05bAW)bn(?*b)^Mv{(Ir`zI1r_Q9_W1ldv5lN# zZb&?n4ifydv+FyY1vm^AAQP_>dREBw`t@j2lUX{#$S@vLUS7TxDXs%+0BgykhOS%D zy%p&;4}yLM?mtr5^x0+^`YLY_Ygd~LTN?@U`=lrMMI6&W7L@SOt#q3=8pu#^-fIMT zv3MU)t8gEp4#FL*4!RWUW0Or*#4}=Jpmcx})$9)FMU~(&l@Ld?00CO5jh|6BlEdsx zcl3T48u~FFgRT0mW4(621xoorK8jSfG6jHc3m#CSP?eE~0AIjndyCr=9FhsSn2ieH z+tR`&sUNW@;30O3=PYFaUBSmp%q%Pur37W=NQKaxauX9lEW0}P+DV6Fb9q*EQ)$v0 zLT3(hQr|4avTS{Fxn>G|45X{15iy$7dfFuvYIAUc4hXqOksET9PM@CP(Io1#$sRiv z{_!LNdcV|FFBLM5{?!^IKl(nD{7dd0KyO|UaQtgH6&ax0&>O4k$JWf^-!e}%#j!ls zNCp1FlM3z!MI*G6VD`z^k_%cZU%}cir-`lq5&$kxgt8V(83)};u`+S*t8(+q`qHX$XWf*iOc7Bamimm4TfhVh0_ul0hm#RRx1cH%-;v17p6R- zAv6vFRamGvsJF6(Cgh~i28)Q_Bi%zG@gr7qNzflWqezkJJZN1un@w987#i`n2S*Zm z26dim7_Mr9ohSjw`m0h|iL*6T1uPbOmwypkZ*c z36xeD@DM?09Wibo2;P-NfvRy2kc!ZtVe9%MP5#!?s=kZm&qFuX*LsV~j6F`ecHIm6 z`*R02uR!>K7BEc1|9Lzg0U|c%l$Uv`MuSAAYDN3*3xn)f{6Oxy76z=}TR@N-=s?_g=oW9Of)SfEG|3TZ(m+7;<6?!O1sL$5C3G5o7B={epG4exg*(^+J^V%3us z!+>I~Lyx#fW(hq22hld$^{`X*2AW_>6hV>KI@b)m&oK~kB+Njlui|C~t$0FIR5YtP zq9Yyf`KEY1}t-W z)*^~Nke(Q4{&adsXS+m}r{K*HZr*Sdc+UB+DN0^R z;P(5H32X~Hxm*1sC`T%-npW#VCY-W7Z5 z&ARbbErcd3I%4mq{Jv!~Qw$c+MXw!R)vs8;EHi$p92{on#N|cQY6*RD#h410tXu^! zALrQ0PKiwIyClT&(Vl}j&mc7N;qGcLz}+e@)?5wib;h1En8}7<|a5(_0v_n!yXg`=1+I1Vl3Izp?`2YBYOXD~ntIn=3Y; zo+lYk)(-aYDB(im8G+TDe%b$=Ca=0xVM*0v+i93pYlfC2jT66(bU#sg1EcT;=7IT<-w%9Z$A-}`9#l;TQn~D4AbuQdY00jFP!ng| z0$K=TTjYnL{5Tvsn}G%D_OK@B7k7=&yAom@DCLHI7%f$)Thg}LzO}JC`KFmkKl1(& z^w`|=%?aI-c^(1Aw6-^p8amfJZm$VHXgvBemVI;rdywRs2hEJP6*4LD(c zp}CN1v~0B`mI16t+^7I3RZa)7m_kV|F0KPWmzp}&*E&r`fJ%Afs8mh_*sIM6Y9JV$ z#^_i?jG{A;D7_a}Hv`DhT#;_!_!|Xe9zFv!bj%@0ldx7_GnaXNQ&9A>ffoOA`#H)w z?{et=TUw#jbzU8u$aicbc}|H8RumK`&hZeSzcgvpP9rhc$n=TLA+KP=*BuW8Mca04Qf}%S zyoY!tMc2nJ@y(u3T}IU{Nj&4cCw=dRmY@3tFg}x-4!^b^uf=I%BX6}sB5E#w?C=qg zTt3RlaY*B*`+C@Q(O960Qc0-8?B7ZBmOu07P%o~bNx}IZe+dD zAay%H~y`Uav(XeI$%XE z3lGOSmagt54~=Jk4y4;{%28I`yS)CR*f76V=5Em_UFxlNG6ynxXT=3@%Y&ClH94^z z{D!j2#imH>o8Qzg6VDXRy-SGd%8pc1m%U}~(RrD?*&0B!C2~mCEv*dSoGrUK*t2fs zb^k~n9lh}R80mv-zomeYfHP-!VoWHY?t{{W7Zd_C1)D7tm4pSw*=+I}uxew_dlV_c z;q`ni?D)`wDB zlJRq>^DMIX$`lP9-8!pSNZFb>wx6u|KB5{H;mH9F96nxeH!HC_yhEI}iTSy7E+CWBOt4Ci2x{+86z&zx*{lKdkoVsE0hGU^{!| z-mJ6e29LQX$dnWS55LeqmjCqMD`|`-XX!*8|5x8~o>3EwT46p0_M$9^aB}WPA9L{L z5!QIC9ddu_Ic@llI&3t|OjX6bZ+$i7uz;}h?m@uMp#s^%G%xO9 zI|r+-wGRmmj>B)B}>g+3*Zaef98*P{(uvkuE(N)iA)SR z+zdHP_?7*H@k~yaFiZtJf|>y;}!ocD%IHWP!-x-t|H$N#<^) z*B42}oxTs+UJ;THw^x3MNa!UIfznA~_T(mi(Q?TEuMZ#5uk_Wfym4lbZPZaz&q3iR z?gyCQ+s*I2r|Rw=Y){qmi-N*Z;tmmnu=wNNRaDFtbJFSQ>))mow0267?BR`M&>ga% z^+DNb&;6k+t63ya1;MT!*!8KC;!Xp?TcmY_-2RNQUH_Yx+aWI=1vschqCR|km0vie zM;pW|pyn#%099xRUYG^Pu6)b-clycz8{Bqh_g}lor|7m-1oAm~=u87G8H}Vb-n|8BX59MleNM0d2$~NJ#4Z%f z0har2s__ML{Ml}b$1#>5!>pU7+<)G;3S+2-DoErf&0Pf$x$-j(CuSBVS*?qsMeG-qStY9Nuu0r8u?QT;JQDhBBt4ZAqp=iN*$ zRfUj*gpzgu$uxnuD55d#WFOMOXLE^fq$Ddyn5I^eZ?ruSpc}lSTX+|{RB`1k8%hzm z;_*;QQSI#P%JV0m>YT+Jtf@Z;rm@ULO77b)*id$&;MI&e8XFtyC51=d_1%}uQ3UNh zL-!>?m(^5;a-*jkvFA&#DG_VvI*z^!NTKVNbDmSy=EsaV;&Ys+8txrEdgwmiR#fRf zQST?ihldAyR&r`3wF_{jIsf2S+jOTCQ;pCdj?bbY{&zZ?A%Upu>cOA`*AcJ~d%<}9 z)5%h6%sMxyE`Q?&m@sw$J?E{0=y!1f)ZSQ@(O$rd0yR;NUADfM7ycKsogSe|B=JM0>yGtz~0tMALwJauYB*veU`o9m*-`KSizHev}H1w^cr+)8y=1m zXUOLGH`yJT3>(GD-s7M;Vn7aicWx8RkioU|^z^&Ce^Tuact8h%$5~`qTsL%391^BE zAvMav$k-&Gq8S+XhE+p1Qldbh9@=xoQ^g=8~ zG@udkzG_wPD!?@?{ySNg@NW~V*W?qbVyJ`?#H>x!5{?sJ`^nrzD;-ctP=)JIIE~?X3evT9Au+C$s?CRIY zEVKvAKDBE{8q=%L<8f{?Z2hGQ{c(_2BV<83=vH73133@+Wx{Ha?JlcjHkht+_Bs-*+J9lfm+wrq1eS-kxU(yBD*CTd<}RY;}^jdZKba`!Y$N$l+FJ@w-xp3ruuZ z7(k;VY$?1v6R_6}csA7cC>RzoBn!1vdH^ub)*Jm!S#O03CF3{Q!gsGK-lm>X^-N;y zSm%Ijk%bxCzkQqCreD_#0J^6;kHTUpdH3V$t~5Po3ZN~HKVfCiJM=m%(Iefkt#GL) z3bBw2C79^z&BD+1#AJ^lTFuB4AB;WDwRXSUd7n2kQu53u|DEZ6@AvCjA!qWRiuZX8 za11?G)#WmMHGUu=QqX;Kk?f3kwaw1nP(-j=J^ElO8+$s~jQ)fTxL6sK)BM1Wt5>gf z3Xj%kfRE@#7Q#buT7LA_r6hN*Z$Yj3BLV`Qn~zR~POBj-K1pNpRd}EG`?~O!E0eAY zubnOgDEs?eZ(|>9tQ_#!AGAFp4D3E@Y3VDW&HLxcvbZi&(lhGk-5E8<4cUO?w!2FP zL)qEqjCovO2|3$==a);Y9LX2UT9;bCBRMt=EvdgAgYe>A04)3otia0OT=nmy}meJa##vr<}ySMJ3ZnAB#uY0f% zHdJTDW5Jaay!=cFL!swE)6$UL3Yc0+#brb0mA)VEB3lo1LOf`-pd zsx}hQ8ivc9Tkovu{#K34&-7r~7#p(${9lruTnYrSr6{p;x4LESwWM1Cc z@4R8ZJK&YZFka^*`=a&tShf;@P%`%$P-*3Ma;so!K z{AIgdEI-r`r1YdNFqZn*fn%&{{GG@GH_b9lD|=72x5g`iE}2?z=?J-g9m5*Fqkx9> zy^QeqB~Hp3&*-9*h7J34=N;Lwh}nGwPaNS$8`vZ>8Y~6DR4ckz-eCT*1 z4^>trd)1jb`ph4b)M$gB@<1+T6!0>sSV>C-!?G5*O7GEcgdr<#Hac>01j0ttPx`nW zng-u`yR`<6!}#dmZ)|iGFCWQ=T{BU5r2QDu4B_A86|>k$53uKaqAUrPbS~&Lsox*0 z|Mge3epR)VBneWOJ{UBDLNB(A8_l@?+Hc71J{6SH;-p+}I1irpI2v;7bwsqt&FNPn7^sj3egar=As4#CSuJagW7EYL)ESVA7$(2l(h&ougq9vU)0)%fr)f>pz7hU)s@-``EdqQOMP=9^jlW0JCPP*Lbzf<*P(D-1J4uk1Fr~fE zM}vI=@1%Ueg4w)=PmDh&YdX($ZAP*f54kj;YqzVLaQlf>iR<$Xnz0$DovNx}%+R16 z@0mu?*VW=|NT~qq^?Uqv2T)dPDTk877B%m>qk9nb2NqJveu%eD-PqfC>PyPKOcL@5C%cF0b~hG`j?UOQQyvg%C03lk^*ZG@DO~Eko5Pv$Xzft4ktZH2f4=XJh#?&& zCQDp$FzJzqtTyL4Y7~_|VICH$ZIH~4cyrG6X0TX(S?W6A~MTn@jktfk$sG90& zGl(jmBC=i^(xPs>52LsfAQzY%`B=#f?fn)Q=N<){DpD0(+h0_L{Uu-mfmN z&A%Pd=lu74t%&1l`yb2m%uI#*_Nl|L9!ayOS`nB*{=?yN&qYKDHMity*|3YZot;h?hrOBgaR<|gTY(jC=!IY zI~>nVU*DtrVm^g)rv0rO!==nsc@$@i4N{E{Dp|cArU|L6|58E0Dw$R=mj66=Z+*ls zQ(OLEo}>Q73^#$A{Q?K$tq8JKK=LEL==^1iocT1s8Yg~66Gg{zB2?zchh%d4k=~@< zTWlhyqLnn&9^!SpKaA!YyVvaZmVAhe3(cXu3z$bOX8tvg>L$ve@+e6?%hOkzNzs}% zM8@#B$Hl?^JV?&p$}pKoFZ|Hk*w1#bJt`QQ`&ZCbeWvvkV?6rJ}t_LN7 ze;Q1K{08fl?1hc8_bmU2d}|%n4TKUbvJ)ZLL##X@3+& z@az9#xA7*7|D0J)kM>m2gE#jf0dI^+fy1)+E5FO3$bMNo*#_AhX7`bmx&<}4`PJ7h z6Jg-vSc^>2J2%il;uJ5vMGBg!LWnp|w$)*zBy2F3zF?*z0=~JVGBT^Qbp#G+t4c0z zbc`&2e!IC8a^pr>;n4)z3-(Ek62tgCOB)x%EP2cpH{!5Ce;=N6NY(n^*y)Zgz(#g@ zD~FfoT?o4!b(^(IpDs{1%;HPHihG3Y!&3+8#-;pyez&oBX^hZu^6$azO_h+yaE)y{2=tDdfC^{I=`$vebC&oOF8$Gx2`bvM7cR$nU+-X|WV0?$_i&`aTj~mJ4VWRD4)I z)xy(h2ammc`sGg|?b-9#p}&H;@TI4i8f@^yjRM)}k+Fct;Z4hP4%|(1^`)x{611i1 zkP2&MuG$<92wC`UELW=_c*;N_nD`g#$^^?&@9xI}YjWCw7&`Hw0K$jzJNm(ozBwoK zP3ACntl*hT!GU^mKwxc|BR)WdQo4`^dn_M@XH>+!Y`75W424$GZ?Cc?B&16}uOH+=pB6&5^?$-pGG@)}^e!haWOfp4eD?%a_oJv5};OHHg&`!i0R(U zVhLEGc?I%mL+VQA5to@ahtIVZf`vgSmnYm3QeXa6Qnwidf{?nVcRyPWe;K5`DHF7q zLanTJ?vtiodvjC$0+Uhwbk4W{m1YusIpv@SeP2VKip(>RI?LdaRtG<%;P+A?naAWP zI?Zp)1{8D9+M>i47hF+c(#m}|%!l;Af27C73aaxi-aQIM2{{`xdq|9y;{?739cI;U z|M9*$wf7)7c`}vuUYycuw?^?{LP6)56s!2g&MRTn7t?)=MnwuaY9<@SloyB_Q9p53IANY6b;t5vi<(;IiGR;D*#6+6{$ zjX&srpx#{POd1qH-yd(E z^4=^soY=q75!iAf_|8bW%fXlAPrqIM_kC(xtCeg)fAYXmZ=9<)I2m+2lg;nv-E(6n zA+b`_GP-{sXU^z`?%O-Ca-CDP&)J^TF8)3@JvaiIPGtj{4$lnIfoWRT*=Y3iWg~7?T5~>`tX;zt%9RD@FoW~j?(o5Wg_NwV;92Kw24fZ z$;#ElyUQ)#WsGPJALXS0i}D&`KemO`m@*Gl&KDK&Q>Ewx{|*xL9lq;QWpu8s`_rAA z!~UaozRQIj)$?&bgXa^ugT{IX4;n^-mUiW)EEzzV)!>VNQ+NzDFJQ(5<2?D~^GycM z3e^3%Z=Y#1yF;!-@*lRG^;vrrV#G2WcuL)8Fy!f1kD)Wcs|IGT<2t5dhSFkyOHv+3%oFGUJXMyt{hTg|KIgZB*eKbZwFDu#!Naay(hln^t z2nyrOv9(^dp-=S42^^0Cbc(Ph_{ajb((_k6!-Z`e`)tT#2fIrw=7M)kQ65rNU_DGN zc+1~v{y}dc-{_~M>B;0U*YT0y{qfh$zYP*VWB1>;A4ayyKAAF7D7YSLb^UNe{$vh@3e^uOfweO>Zp4DV0?ER_V{swN$5VQ#H zL%XKSnF0p1bnmGvUmzh*xSSv!-X6Dqkg)M-e%(BD`~mcyW}0=;i${|REw|ejpwGkDFz<#(B4W1n}8#m;VIw0WP&^9#OG{qx#Xrf=4Sx9niGpr-?m#3LiZ7j-+E zKzJ%^P{+bbZMnl(%B?d(Kd(GSi1q2+Q1=dnGpX^`537h&ofKN*kKdR`n}SN_m_D`- zyrMzfekx_UmFH#1SDk$!nrzCC)4$i4RJAe)}Br4h}k;O&-nigF_2SdGAa5ee)IPEfUA6&E`(fA=#v zzS-ArP32)M^pt^>%TNp@jdLj8y_*k8c2e^LXUn(i1Jw=knSL#w^E}9Co`v*P?0x=hX5v3@Q z^^pUXIzZ1E*MoB`+>S)P=mXeZ_uOM42sW~&=x5oaNDNex{v+t;!l2qOwC--CEnJqu zneMzMbRb24Km|c{(ncpXJ*Q>oXk;XV$yZE?!K9Qu>2(jM1@B)1nC4Gaf%q45fiG|F zVs0ax@WMT^2Y2aN@OsrcL& zog&l&ryJSp8Rt_-oG|d5^;K)E#9>Wb zKfh$vnyn9^k$p;cZAw<8F*lqyD?n97Y%0P<>kNAL{=q5Q+(qjl{AsRsy^$UVOifAH zCpW!-4o%#N$y)1n6kq*Ww961}@XzL2wBSNU-up*^1J8p;az&3tR!0Rci^1x4JSn3$ z<$}Al{XhQZ=h*a!VNrDSy9eJK4&PrkTATIA*mc;!ha==LZp@mQDjNoU5;u-5VqDZ%o28tx zgZ7HfmzXB7;t5JBJzP<~As;W*b%^!}Pi68pTy;tWAv-2MZ*PN?Rx^1%b#kL)@Y1L8 z*3`N@{+WQyO2Xf_qqjMZe?SmKlUKjdAi+CDSY@JZ-U%i#5+1VW%Umrs0dbypuS<`iU>@V`7yp$)^ zyeEQ(g#S$qgUq~wEd+5T*~1pmkqg6fUAz-5;Aoh(A6f8q6&t3pC+KCCALl9(H7mUX z+YCpq1>z7uj`{W{Gs4}+BJgA&;$;ePZ_k7bV24gcPnVv0<0a#-elD4a)Ul3Z$y(6a zPoLSi8Z@xlAdtw#M?1i1|CIFDEgZYHkOdro<2cz#(EDIc#PVv;@q`c-GC(sx@A{AKTt1CyP)mQUzbam zP?fQ{45aCVDaL>U96w3K>1e@AVRrxfTUPxAXzY+PwLJ5Y{*Oyh>9ouE$qoL|Qj3?0 zn7w6%0Qb=fpGc9`xS_0rJ@1CdN#J)`U8g@^a$W%f>l`@n1W+gm9XBIK zzR$C@e~eRfGs{#mh$%1?2dmbEd;*O03Mn;2;?Gh3xtj#homh9(n|G}doi%R;^6=jo z7i(rPlSz~(h`B_^Z~96K`ih)PFGDG%6n?0rb`|HlS^UKElFVncDJ-7B*Sa4#di#98 z9J$b`JE=A>Z#eF4y7-Liw?E$DJ$Y&L1aA>hLGVJykoOTi!<08bMIr3PT5tT`Md*J$ zd|1)qzfiXSMDx)gMPOp=<9$JJG>nhuf;#kdx;}k6X3gxsh}r=zVy_u4yev*+Ex}VImf$*Z}riK(_&l(gQx~^|SHs zam}Vl+>ZBdM_2Hf3_n~KMdz^!+UJbPN1x>}f zWoH;8B~Ux1`+0ut`^pRB?T*tHf$V29I}=^dCbV$+&#ltLLWAh`pq#h%jndM{Cm`u! z_l(gzQddQ4{b5N703b&*?eW;_R1(MPQ2hGNh|bxz_VRu8aL`5W=#{Y#5hsm-Vb#IU zV6{^lhiPDb-bl~IoW|Ng-uh0#;;&~vo-vWAZBfzBS@GR8pEKWU9X{}_N<>rj#QJ$F z0r#j`IV=-)Ws2bD21uB`wTt9|2F2^PJ|e4zanVLYLFa=+CTdjZ+Y0YuOE^57yc=w2 zHYWyJRR@~hhJ^c6yfZW-?+xsI!BIW9w^*lB;Y}=S#ETr9tW+|C*LqG~rS}n02dI3{ zyX=uCLFM(j_YLMc?$}R%1JRe^WJk@a)F*?uS6(#84e!eQGkGz%GpeM5!1dTBL|Uo` z`DU0FYp8qzyq{XpW%NkpnS*-K5CyS1lLFT-x)5KX3YTlaEs)OKktD{QsQ>h6-6Zs4 zBy2<~2x2)=>nGny6c*WI*smG_u^TDpw^8#@gtuyxr)lo+NNV@rdh(1Joa4Sj3}}8y z!#{=LA}$*+F60J%t0863Ln##v;AG`OBV;LB`nmK8{bb*1r4ByLU<()a)b zzM=Zk8ciiOCvQM1{u(OBB7rVpLmmDt6o|Jv7^rtZd+J1qP$bl^1XoMNe^7#%y4n&2 zHsuN>&I1Y8eT-r&zaxHnneq^coHRD~O3EcymNn|{f{F1JUwzM|{{Z(}H6wG`jVp4Y zn+6oMiR3Nx-K=#qJ7->$Z_PiMD|f}G&|GE`Kp9;BU`R9ZS^XZ=*Z~h&Sj}bSspNh7JGXF_@rF?sos-%;~w57~6wm7G)TdI^k*NOL< zO3tn|!e+Ne-vq1CFXAE?;GFePv%GJp(?V3~qrOwdRH2zSESoiK*VfS_({@V;xQkgnn;dO@I(#q6QA9PH|0Zep}ZfwXfJOhs_Fw0TohiFCkmG-@)-i4}>N2YCw;uQ+Q1VT;$P0s@Q zk)}7uXSyQ@8;Qq>Hk)PrUFhpdgnN%s(Kn<>-AMt(1|c5qWp@2ifdRH~lQCPi!@@K! zN(2AtF5RCfeB+EXriU&W)3oe!aByPY3F`pC<9tD?Xu-BaSW$`VLWVf28;W}O(&C2^4p{y>No)$ zGUQ2LZi&wgV|_}PtMRz04(Z3p8yr+o7Y3cI=gCLsT}{0gaFvU8LPM(EgLlJprVU;; zD{(Ois2tQ^a?k9WT$3^&mv#n>b&hYkIS=T~8%*e9xLF5fhNWHI}Gx&$C<> zS^j-hpwH8)j>~3Pler)!DqG<6s?k7L!IyI^m_YZbs=xMys=m;sL(9jX^-J5&(9?&4 zy17>A7?D!F^xCygH)TqNgo|n8yQ}3{)w?jfpnx5|(=@@AKeyfNpUjbwgBj0iKlhE6 zy%Z`2m5tfWjBs!gjDaROtK_roE&4$`~sGncP zp^{IPtSX@*JH~8WGim~-aF=hmibMQ6Rb(ic30@`dX{=-kJ8Nr2wkmnH z61U?BC7C^8j;1dcx;Tzb%Bg$DZ`iGme1a#>8P?mK5V|8AAobb>jp!ljsSk$(V>01k zFRlO5__p4ezj`NB(A{^LmI48C_hx1@)FG4EJjr#ZOj2x*b$t&-ro?PqIL>5Lm^QK( z$dBj5i=!rHt#b2yP#akg>nstS2r-CYvp1F$1#9mkf}BQU3Ndw=CJsuiT-VCE2Ou-L zKX`A7ps*z&(F<#Gh4FE_=i4EVsimSfJ=nT<08FX(&ayTP5v4NHm^iDsRWM=ji4@m7 zJp>Z|L{POy$_m|rsciu^>t7mOOnsTbGL*;%1Hj1$U~FI0q>hdPNvljYgss-3IX5mg zq@^qU{bIcHTZpr-G$3C6H;)h)BiE_-Bb zna_^=Tv4BUkw>&2Kw!zw1-_RSz5X4bqWTIVH6zZ>z=Yzp+dLscgXA@fbHJiUd}Y=+ z%B<;$pN1bwjas3gBsnb)Qi<3Z8rm4w&JW7pi z9mkvVpd*dRa|VPqL9{A45lJ~Nf5gMBV(EK~F`G#~+U1eBAjWpJ85>l`{ln)sPo71c zldn)l`Vg@Zb^8w*NoaVL&CP2~{aCC>(R*{_ThYzAFeos}2mv17s;mMWZqGJ)qENC; z@DvHrxZX`50jGb`IjEj#P^-$AtiS5FnF{Guh;?lzfg-=OHtA+BB{V-Ipd#jc#G;fZ zBo{aB$f%3uaBJXh6fs34+sjVUh57m$Qy*oUaB_~?Gi-`;fs`l zetjyu{bOVe&RB1iT69fM`@qO%bD~~^AuLXVie8^{DIY-XA`ZHSac@apxBUkxT5#2R z*z=G;N8|Xs%T04#V&cd7hQvYv_R*)Tq2a~W&+Y<*Yvd&QJ%KLe0bLV~rqB{^hi7># ztR5}$+lp}|W5CGw{P#kJ{Z5(mtA{A=PyLZV%KzwN_Z{~GvG(c6x z_O`#h?RT<~;+$#jiQ$3T_pbH8E9*=%QAX_hFOviQ7L3LZoWBl-{}gH>g`er#O4tI0 z1;PD&);(M00+zP;V#Ct}&*k1@goY;iW_e3whm{ERU5!_i>`^5G4f#H=LYEbr1(Fqg z2kOft*5c6VsMdS=^Vi6^@^x;j|KEnA-#;%h!=K1^m2Z{j1RDfxENW!f*e>frnE3zl z>DfujUAP~oUXG21BE-Coe03c7b*|# zrv)Knr*4NCgiV?;)#Yu8lagk1T#wxPJVj(TU&P>qlSnPgoV>q}@iJbp<&*>P_Ie<0 zkhv)=*N^uj-bF%JIpJig@24C!Ry)KR#`Y{yAqAA;u-oIPF-}VtJ{r$XVp$ySmw! z1XTr9BjW5oxZ8fMzERU#Pe1nyaL3HOY)J1mB`?N!Q^hl~G(#w!eA~V%e{7OeusS+aJ*)C^^S^7Y5)%*lW)Ja#2M)^){7ZPDNKYG0O8DhNBUP3FWx(N zEwKR?BVM`3|0^?|)C3~pskD+17K55?Jo+2{BeHwfSF^hO2q%`fS^+0n2`w%_MjBrBP z+`xTb*?$a7wL|=Y(yIsedAsF2q3AAJV_$wI*9r*nV{5OKRil%+c}@?5-ciZ8fW zFdhRWC@XSaYcnWX{)Xw?H{9uNcl@h?8o)blm^+-i4)m-ZKJsN}Hq~^?efpWM7S>iZ zMNYbto`uXe$~0y!ntiDcsdQN>6cDa`J|hk%tFERq?vRV1<6wMYl)8VANr*CdbWW76 zd7XD7v{d7@Z$dn@XfP7XVSgX=E1WGehR&`GNS$IlQ*}h1^vLxv<*6Ym&@m!;@U(6; zrrXhZ&(nSCH$^{rWsS6J;Uy@iI5A}t58WE^&&e&{!W2bu5qznsmc8fph4!q=oVLhU z%~*wiJs2<~kd@h%^2bU0K8w&$3q6gbcXX#mKN76ANu=ZE#no@u;4QbH>sZ)0cbE=> zSF~|{J(}(>H$@wr`WomQq7Z?JWMMp~-THXzfhrNdD?xx*5gFd;=T>H=2E#ONWj+8p zN3;9cp8;1voU=|Ba@9c6NC>zt?2>_nPA>K9<<8eHo8i46pUPbI5SnTLSE~~znAC5F z*Hk#xo0DFcn+gld$S=V;fc5xXpq@^$5s}$T;7oje_O9t`Z{}jB&x;(F<-@(v@W*s7 z^+*5;C)obuquMy&DbRTMBS;e0+iPE6UpUFe1`7&gujLBR!il|+b#in}QoH=RB2hqzWo``_-o=3pLMHoGqTMa=@Xe|c6X7? zM>d$iPU_VF-IK6tHSVa;hSk4}ggE-`vlhI-Q42n>{XD$Zw11)lKiNI;>jtb{7Z|_X zJe+_*Z%$DiA3A6r%6nSj|o_{u2boB+}R6t?0a^=hvu`+VRlBBxef5XiPM%N zD#_>WhE@~KtY&?CyqBGI9+hMn4aZqP}nQg-g!y4P46FfF)F%n;hqnb67`)G5R z(5|A6IWe60dHGLur2q1!LgPnaLtvrG0Wx**I)YBp$wg_E_<9j#B_-paj<#^Hb`EII zb~QZXO6XLlp}dDtQ)WE0or`mF8am}mN{+JC#CE9BHiHSgy}~{hAuuxY7IyFjW7pEd zAeem7F{(ac7H#AmGe{OdH=C~y=SOGPO9tjAHo+1!>9ED=?8|tpAb({2Z_5&t*ch)r zh(5-R??k!S%)}ODqSDp}_01b4&+hSIeqidp0SI(m2Nf9&r z)PdEUMkQNRv6rDW-gC@}yDhv|?;dhbz-Wkz+v|G_K{UARdkPa8RMx$Er5s$}vWKB? z+;eIvwF%SL7`W>qv6y?nCbfu$mJ-|;{clb+dfI{J6jH~#Nx8{71la&Dq!`}ka=I2)Vh zDKsgpQ1A9qL^;C%Y^-aQNg^vu_9gS(*oPq!yn>1CkJj(bQVLyL9VUTF6HB@mWK;1H zMZ?z-PC4aB=G3T==)5e{CcDQfc8T3pEbSov8SX9WuI&bOLI!arJwL>UhlB^{GScD) zT4*S_V?Lv2SVDi#dS6QDuu0hmC(Fy;6ge}OeDEQ+YSczb{cR|nC8UAeibVbFZ zR_Z@BI~8j!>)*aBN$(()3yDDQ+y?^@(Vlo+O%_qBdK1KW5HcqUMR_d)3{blyunBe8 z?M|Rl4Y+R+RDb`g1^aC$>Ij;?|4E2lMOC*=Tfh@$fJy$kD%u}bTs0qKu49R@$_Q@94c|8{saX08pmupJl*L~qGN8tu#lD&vo&6fab zE_MKT$A06_PK)+TG35J>)!Pw z{qL~CcbOk{&6@N~%6!|RS^9ZB+7P+9yHqnk{o6irH_Yi~WMxiPwi%FdGS^sJ?m}Yq zS2Qp`QSoXKKIgc4cwQuvKE&uW4&hECsHxjHx6Ygt(kM3Ls}#;dA^pl}LY(N}uzlLU7(wbC+@F*2VXNyjWIiJYp{6Gx(18^@ zziZqR;jmNNxh2{p!@%U7rNN-q3xQhAyQvtOj65P*dbZ{UD}!}2s)X}^tlx{e?q0_j zM=9!3omEwk6s^9h!XIySRdEZiv5rUlV$WE>WZ2fq1W<%_$hFaH7+nvIDtqOKeA`{m zW_8rz>}13RGA4i<_e#Xu7v%G@8yemh5A5WR} z=*-P-MP>8e>y9=Z3+oF(xm8eRJAa<`o<`;Sa3u>wB~-o*6z6Uk>P1&f$w?{cSHjOVMh zU6mbg@dLd7RErh?yy(ZbXmx-T(}t_n_uyA6ZVz_4E(RSCs?U|kZtZsXjukP1X!Tf- zDTdi7FQIJ>5|k8WVLd`HCwtG|c@B$iVlgG5`{c~WZ=7m-xa*@#MvrAkB}}Eb8Tx7= zRR;3(gvdcefz?ur!$81Q?=+zr1(w3LA|c7)U<^uDRMVHnrmw|&DUH9Rnjy9!VBBS$ zKVKSWX*t4FPY2Wi@d;KOu6PaYT<5ZqVDFgx@O;yjqw5Vr_(*NBa$+_Ilk>TI+c&wl z8*94Ua9te^KlCg6;=W&n>7HsAKgjInho^5FJuD$$Q)=9ssxR$>6ePRHXu1|0&0DMb zEE}*DwM+f!YOHm`8DYGRo!t+K&p#^vF+iV+|J*K52i^hSb@Uw7^S)KNy)*k`IW?-y zq&(t?89?#3vy&Rjg~pI%j`EcM``1s_E#2NMl;w{q`v#%H@Q*o3TFuw*jnVlMM0>cl zJ~vzk8i)EGxqi#8oBz!Ehf{dQmCt9T!z00@c|M}NdB7-V7TGfp{;*D#>BJ}sq(=Q1 z1gFm|?zQWAk@4p|(&^svrpG9$mS>GP`IHpja?E2bFvJ=xJq=AIVwTv1fM5a8vGkXI zlLJntQ=yn5lKJPau!J|bpQTXS=3!>kZ=Z}%k!$M_JfMwT-St7A(Zw8IYK(l5~~XfEKgOb6BHC+5+&{I>WY4YyBBq& zl58R4ItFcMw$I@<9Blh>yl{W>9Ksv6| zsQ340O>#d}unG|w{I(}92s346LwESnetd%yMq+n$4Cy=d%q<%~jjIY|Pa^IJMXtp~ z<#2`?Uj|tHHF1@lOuk-S#WC^gq*fIBjD=K0nIh62Gro7GSF|rV*l@OAqcJ|JW24t{ zyk&d!r-I9(*qc>Q18oG~5j%)&PMX|w<->GDV*%%s<>V_@{)LL=L-&GKhdkFxPYmH2 zL2h3%Lk*R?Un8#^1=ieNxU$XUllC1tG}J6$`-=}R9CIzM(hFzfPS*^4FCSz(k}*P# zdx5xo?w<|o?Ro(3wa;Y-L2DXao`|}UZ%0+bkqZR)a zs^zc-v=A4XhtVa@^$uvZ_u~ZB^Rnaf^3Is!b5Z)sy0k&!`>dnGN=PW^4^#T`@J z7*<9*P!Ha;BLntE527JJZJk@QmTN@|T&%-dd!Mv{*`FYBlCst~$*jua!yJilQEPS8 zKK@a9gi^y`#xB!Z0lZ+*`~%(j+_;=r)q-TQ5|Y-elsk<&Vve~HWvD@dAQN7`U-6Y9 z>He=k1e;Yl2d&V4V&-l+eIs3b-2HYvAblMRDVt+dvH;Uaw3SVU!ewvn8o5}M*;gFh z+IW3oJ+o30`J`p`TrG~ssmA^DX^(0k85qg#tD?`8ul@&k`TLlr2XCBzBtL3{mCfG3W56y%`i5j)OXklR>gRX~nbyD=kLNI5dasYB&t zXVoMbsY5tgh=JgV-E@5sx81fR%L9etZ1wB?+-^Uq*~D+A{*Z|Ku*o;2MN2>@Er(iC zJ{HPYxaGtxPYm)iO)3n`?4Q+>QizSrz|9L{T#I_z=XFi%te}6L+Aw;9dlw! zy!UNneJ($4Q>T7cuE5)D1gYl(76akR7{u36jZ5I`dT49cDoJE~RWYs^-u{rGEuPL* z@GIQOr~!johu)|BxjT8XBL(*44LQSt_JEcZldt7G)fZ(}NDaBzbwcj>M!%7_A(|2F z4+<_3h#rwhEZf@r@ zk|Q`pup%`sd!jgg>t=OA|J@(rX?8OO>q^j`84{$E%2+dNw@XtfUEa*;+&J=))-CgD zN$C^+Lys69fTdmGASp2>Br{w$M_To(F( z%){%4;k%a4);5FR;NW-^iql82h7>gP^-R+-ItPEyj}(h;G)-0?rGf8_FOmfNynrrz za{g2i9ac!Kr7by`Z_M)U-jQd0n*R;g;5xcs**Wf=Ot7;iY;>n^C-Hq=+B~BOFNq>V z`{rA|p&uGR2h0WeK-^+RmKp>nB0>8WBkV?AZ~u*_RpI}P~c)k6jysts9g|~+ScPj%J^E6;T3+@z2$^*N(p7OZ;y?l`SxUH!b$pi zk7R1SKtwwxvQOs7I!Pz@^OKZ?qU%r(bj(C9w|e^VcK9j~k&$v#l3r199xS+*W3B0ZMzx9q-vT zXY6szDV;Ue@DiOkVnO+=1_+<-PpAJ2OUBzYHvbGU`#0?L?Y-o;bt)34#r6=@um#&w zCi{aquX&d80sYK?E_7%&`z9t@$Q_VPC^a0dCr9x3L~#E^@Q`+Fw_$3PPvY3`f&*Q( z1_m%ygcD4lHfZ5yKS9m}2B-In=-Dr!RfnAfK+@NjeU8|Rx|syU$x-l}U+?2pAqm#C zd$P^v7Dm7R)~*t4Cwb6ig}8J+AdRra0wpru-ZPhSu$d_lm)Bge1X&oPv=Ce=YVIDA{5%gF zhNy4I$v`O-HM@^lK+cdrn#itqM*MWw;8ia=1B>%M;zN9nbKZPZAC{+-sH+@?+MO7c z@InhG2_&D3pKoA13!LqYeh?);Ju|Rd)P36wY_bvXLk7{-a9^d!>`Ona>t`>#Cz$LDF(H2!@<&438S7ar$JD&0?DX~$Sv@A0Ei(^4{s zn|S$eH(kjF#)#Taf?q8mh*m}0AhNHswE2h|@x+`;lk(|j)C|)pt8sZZ4Yo}t4WS>( z6?DdzVLO79Au#td0>Bdm1+Gtyt$w~y2`;M7MQ&6~kmpv?{`Y{2NzX5k^f9hr<2~|G ze4FW9^;@|oi1~HY{hsd^#KMX^F3?I=VfCkhUk$nwq(T|-WL}xt|F+;+cbn#-6jmzu zuhN+e`{&Yb23l~MYS<&{MfR9p6iDpCIJc$S2D2bJQ00$NB>0R&(+^A4##G;a|E8>! z$4lY9AbI#ryZtV@8y4{^tMIw0OI}xfw=1wssuyv&*%jySh9lhZT#^mldqzJ7uq%hy z4tS4(BClG+A@MW+_usIX-G30$!T$MQE|i?5XaoNBF9N=O1}{w=Yu!t3Ty)qk(u|$m ZiY0wgEaA(DKzMmRzE^oyA!8Ewe*i;&F;xHn literal 0 HcmV?d00001 diff --git a/apps/react/src/assets/images/attachment-result/attachment-result-stable.png b/apps/react/src/assets/images/attachment-result/attachment-result-stable.png new file mode 100644 index 0000000000000000000000000000000000000000..01cc915f19d8f6e84d555a814febd2bfc3f9c335 GIT binary patch literal 137392 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%0DJH~%j5lP9)i0~6~ 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

CW3oAK4F7$Mhw+j1ROOAM$UF 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 Q;oW|(RJ8x8P%;nwKTpd1^#A|> literal 0 HcmV?d00001 diff --git a/apps/react/src/features/attachment/index.ts b/apps/react/src/features/attachment/index.ts index 0b5dd854..1a9e1e62 100644 --- a/apps/react/src/features/attachment/index.ts +++ b/apps/react/src/features/attachment/index.ts @@ -1,11 +1,8 @@ // 타입과 상수 -export * from './models/types' -export * from './models/attachment-types' -export * from './models/attachment-data' +export * from './models/love-type-catalog' export * from './models/constants' export { useAttachmentQuestions } from './hooks/use-attachment-questions' -export { getAttachmentType } from './lib/get-attachment-type' // 공용 컴포넌트 export * from './ui/info-box' diff --git a/apps/react/src/features/attachment/lib/get-attachment-type.ts b/apps/react/src/features/attachment/lib/get-attachment-type.ts deleted file mode 100644 index 66ebd619..00000000 --- a/apps/react/src/features/attachment/lib/get-attachment-type.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { MemberDataLoveTypeCategoryEnum } from '@data/user-api-axios/api' - -import { ATTACHMENT_TYPE_DATA } from '../models/attachment-data' - -export const getAttachmentType = (loveTypeCategory: MemberDataLoveTypeCategoryEnum | undefined) => { - if (!loveTypeCategory) return null - return ATTACHMENT_TYPE_DATA[loveTypeCategory] -} diff --git a/apps/react/src/features/attachment/models/attachment-data.ts b/apps/react/src/features/attachment/models/attachment-data.ts deleted file mode 100644 index 3813bb11..00000000 --- a/apps/react/src/features/attachment/models/attachment-data.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { STABLE_TYPE_DATA, ANXIETY_TYPE_DATA, AVOIDANCE_TYPE_DATA, CONFUSION_TYPE_DATA } from './attachment-types' -import { AttachmentType } from './types' - -// 애착유형 검사 정보 데이터 -export const ATTACHMENT_TEST_INFO = [ - '애착유형은 친밀한 관계에서의 감정과 행동 패턴을 설명해요.', - '안정형, 회피형, 불안형, 혼란형까지 총 4가지 유형이 있어요.', - '심리학 이론과 연구에 기반해 연애 관계를 이해하는 데 도움을 주어요.', - 'MBTI처럼 단순한 성격 분류가 아닌, 실제 관계 개선에 활용되는 도구예요.', -] - -// 애착유형 캐릭터 미리보기 데이터 -export const ATTACHMENT_TYPE_PREVIEW = [ - { - name: STABLE_TYPE_DATA.character, - description: `연인을 신뢰하고, 감정을 잘 표현하는 ${STABLE_TYPE_DATA.subtype}`, - bgColor: 'bg-malmo-rasberry-25', - textColor: 'text-malmo-rasberry-500', - }, - { - name: ANXIETY_TYPE_DATA.character, - description: `연인과 멀어질까봐 자주 걱정하는 ${ANXIETY_TYPE_DATA.subtype}`, - bgColor: 'bg-malmo-orange-50', - textColor: 'text-malmo-orange-500', - }, - { - name: AVOIDANCE_TYPE_DATA.character, - description: `연인과 가까워질수록 거리가 필요한 ${AVOIDANCE_TYPE_DATA.subtype}`, - bgColor: 'bg-malmo-rasberry-25', - textColor: 'text-malmo-rasberry-500', - }, - { - name: CONFUSION_TYPE_DATA.character, - description: `연인과 가까워지고 싶지만 거리를 두는 ${CONFUSION_TYPE_DATA.subtype}`, - bgColor: 'bg-malmo-orange-50', - textColor: 'text-malmo-orange-500', - }, -] - -// 애착유형별 상세 데이터 매핑 -export const ATTACHMENT_TYPE_DATA = { - [AttachmentType.STABLE]: STABLE_TYPE_DATA, - [AttachmentType.ANXIETY]: ANXIETY_TYPE_DATA, - [AttachmentType.AVOIDANCE]: AVOIDANCE_TYPE_DATA, - [AttachmentType.CONFUSION]: CONFUSION_TYPE_DATA, -} diff --git a/apps/react/src/features/attachment/models/attachment-types.ts b/apps/react/src/features/attachment/models/attachment-types.ts deleted file mode 100644 index 42ecf3ab..00000000 --- a/apps/react/src/features/attachment/models/attachment-types.ts +++ /dev/null @@ -1,155 +0,0 @@ -import AnxietyCardImage from '@/assets/images/characters/anxiety-card.png' -import AnxietyImage from '@/assets/images/characters/anxiety.png' -import AvoidanceCardImage from '@/assets/images/characters/avoidance-card.png' -import AvoidanceImage from '@/assets/images/characters/avoidance.png' -import ConfusionCardImage from '@/assets/images/characters/confusion-card.png' -import ConfusionImage from '@/assets/images/characters/confusion.png' -// 홈페이지 카드용 캐릭터 이미지 -import StableCardImage from '@/assets/images/characters/stable-card.png' -import StableImage from '@/assets/images/characters/stable.png' - -import { AttachmentType, type AttachmentTypeData } from './types' - -// 안정형 (평온이) -export const STABLE_TYPE_DATA: AttachmentTypeData = { - type: AttachmentType.STABLE, - character: '평온이', - subtype: '안정형', - characterImage: StableImage, - cardImage: StableCardImage, - color: '#EC4665', - badgeBackgroundColor: 'bg-malmo-rasberry-25', - badgeTextColor: 'text-malmo-rasberry-500', - anxietyThreshold: '2.61 미만', - avoidanceThreshold: '2.33 미만', - description: `평온이 성격을 가진 사람은 연인과 가까워질 때 안정감을 느껴요. 연애 중에도 나만의 삶과 영역을 균형 있게 유지하는 편이에요. - -연인이 고민을 털어놓을 때는 든든하게 곁을 지켜주고, 갈등이 생겨도 감정에 솔직하면서 차분히 대화로 해결하려는 태도를 보여요. - -진지한 관계를 지향하며, 상대를 존중하며 성숙하게 사랑해요. 평온이 성격을 가진 사람은 연인과 주로 안정적이고 친밀한 관계를 만들어 가는 경우가 많아요!`, - relationshipAttitudes: [ - '관계를 맺을 때 연인이 믿을 만한 사람이라고 생각하며, 서로 신뢰하는 관계를 쌓아요.', - '연인에게 의지하거나, 연인이 내게 의지할 때 편안함을 느껴요.', - '연인이 힘들 때 옆에서 도움을 주려고 노력해요.', - '스스로 버림받을까 걱정하지 않고, 사랑받을 가치가 있다고 믿어요.', - '과도한 집착이나 거리두기 없이 상황과 상대를 고려해 관계를 유지해요.', - ], - conflictSolvingAttitudes: [ - '갈등이 생겨도 내 감정에만 휘둘리기보다 연인의 감정을 이해하고 문제를 해결하려는 태도를 보여요.', - '연인이 내게 실수를 하더라도 그럴 만한 사정이 있을 것이라고 믿어요.', - '연인의 특성을 받아들이고, "어떻게 하면 연인과 더 잘 지낼 수 있을까"를 고민해요.', - ], - emotionalExpressions: [ - '애정 표현에 인색하지 않고, 감정 기복이 작아요.', - '연인과 밀당하기보다는 내 감정을 솔직하게 표현해서 신뢰감을 주어요.', - '연인의 판단이나 거부에 대한 두려움 없이 내 생각을 편안하게 공유해요.', - ], -} - -// 불안형 (걱정이) -export const ANXIETY_TYPE_DATA: AttachmentTypeData = { - type: AttachmentType.ANXIETY, - character: '걱정이', - subtype: '불안형', - characterImage: AnxietyImage, - cardImage: AnxietyCardImage, - color: '#FF8400', - badgeBackgroundColor: 'bg-malmo-orange-50', - badgeTextColor: 'text-malmo-orange-500', - anxietyThreshold: '2.61 이상', - avoidanceThreshold: '2.33 미만', - description: `걱정이 성격을 가진 사람은 상대의 반응에 쉽게 불안해져요. '사랑받고 있는 게 맞을까?'라는 의심이 자주 들고, 끊임없이 애정을 확인받고 싶어 해요. - -자신의 속마음은 잘 이야기하지만, 동시에 정서적 의존도도 높은 편이에요. 상대의 작은 필요에 과도하게 맞춰주며 애정을 얻으려 할 때가 있어요. - -하지만 그러다보면 마음의 균형을 잃고, 연애가 힘들어질 수 있어요. 사랑을 원하는 마음 자체는 소중하지만, 내 감정도 함께 돌보는 것도 중요해요!`, - relationshipAttitudes: [ - '사랑에 몰입하고, 감정적으로 밀착된 관계를 원해요.', - '연인이 내가 준 애정만큼 애정을 주지 않을 까봐 불안해요.', - '나의 단점을 알게 되면 상대가 떠나갈 것이라 생각해요.', - '혼자 있는 시간엔 관계에 대해 자주 걱정하고 의심해요.', - '때로는 "이 사람 없으면 아무도 못 만나"라는 부정적인 생각이 들 때도 있어요.', - ], - conflictSolvingAttitudes: [ - '갈등이 생겼을 때, 연인이 꾸준히 표현하고 확신을 주길 원해요.', - '갈등이 생기면 쌓아 두었다가 감정적으로 폭발하거나 자신을 탓하는 경우가 많아요.', - '연인의 작은 요구나 불평에도 과도하게 자신을 희생하는 경향이 있어요.', - ], - emotionalExpressions: [ - '정서적인 표현과 교류를 잘할 수 있어요.', - '그만큼 힘들 때 연인에게 정서적으로 의존하고 싶어 해요.', - '애정에 민감하고, 연인의 작은 말에도 쉽게 흔들려요.', - ], -} - -// 회피형 (도망이) -export const AVOIDANCE_TYPE_DATA: AttachmentTypeData = { - type: AttachmentType.AVOIDANCE, - character: '도망이', - subtype: '회피형', - characterImage: AvoidanceImage, - cardImage: AvoidanceCardImage, - color: '#EC4665', - badgeBackgroundColor: 'bg-malmo-rasberry-25', - badgeTextColor: 'text-malmo-rasberry-500', - anxietyThreshold: '2.61 미만', - avoidanceThreshold: '2.33 이상', - description: `도망이 성격을 가진 사람은 혼자만의 시간과 독립성을 무엇보다 중요하게 여겨요. 그래서 연애보다는 일이나 취미에서 더 큰 만족을 느끼는 경우도 많아요. - -나를 드러내거나 감정을 솔직하게 표현하는 게 익숙하지 않다 보니, 연인이 감정적으로 다가올 때 어떻게 받아줘야 할지 몰라서 부담을 느끼기도 해요. 그래서 자연스럽게 공감보다는 해결 중심의 대화를 하게 되는 편이에요. - -운명 같은 완벽한 사랑을 꿈꾸지만, 가까운 현실적인 사랑에는 서툴 수 있어요. 지금 중요한 건, 누군가에게 기대는 일이 약한 게 아니라는 걸 아는 거예요!`, - relationshipAttitudes: [ - '관계로부터 상처 받지 않기 위해, 가까워질수록 거리감을 두려는 경향이 있어요.', - '혼자만의 시간과 공간이 확보될 때 편안함을 느끼고, 내 영역이 침범당하면 경계심을 느껴요.', - '중요한 고민이나 결정을 연인과 의논하기보다 혼자 결정하는 편이에요.', - '나를 향한 비판을 방어적으로 반응해서, 관계에 생긴 불만의 원인을 연인에게서 먼저 찾는 편이에요.', - '관계에 대한 이상은 크지만, 현실적인 친밀감에는 부담을 느끼기도 해요.', - ], - conflictSolvingAttitudes: [ - '갈등이 생기면 대화를 회피하거나 혼자 정리하는 방식으로 반응해요.', - '연인이 힘든 일을 이야기하면, 정서적으로 풀기보다 해결책 중심으로 말하려는 경향이 있어요.', - '충돌 자체를 피하고 싶어 "상처받느니 차라리 멀어지자"는 생각을 할 때도 있어요.', - ], - emotionalExpressions: [ - '감정을 표현하는 데 익숙하지 않고, 나를 잘 드러내지 않아요.', - '애정을 느끼더라도 표현이 부족해 무관심하거나 차갑게 보일 수 있어요.', - '정서적으로 기대는 걸 약하다고 느끼거나 불편해서, 감정적인 의존을 꺼리는 편이에요.', - ], -} - -// 혼란형 (갈팡이) -export const CONFUSION_TYPE_DATA: AttachmentTypeData = { - type: AttachmentType.CONFUSION, - character: '갈팡이', - subtype: '혼란형', - characterImage: ConfusionImage, - cardImage: ConfusionCardImage, - color: '#FF8400', - badgeBackgroundColor: 'bg-malmo-orange-50', - badgeTextColor: 'text-malmo-orange-500', - anxietyThreshold: '2.61 이상', - avoidanceThreshold: '2.33 이상', - description: `갈팡이 성격을 가진 사람은 "사랑받고 싶다"는 마음과 "상처받을까봐 두렵다"는 마음이 자주 충돌해요. 그래서 연인에게 강하게 끌리다가도, 갑자기 밀어내거나 비판하는 모습을 보일 수 있어요. - -나를 온전히 드러내면 떠날까 봐 두려워, 마음을 숨기기도 해요. 스스로도 연인도 믿기 어려워서 관계를 유지하는 것이 어렵게 느껴질 수 있어요. - -감정의 소용돌이는 크지만, 그만큼 감정도 깊어요. 갈팡질팡하는 내 마음을 비난하기보다, 이해하려고 하면 더 안정적인 관계로 이어질 수 있어요!`, - relationshipAttitudes: [ - '혼자일 때는 안정감을 원하면서도, 너무 가까워지면 불편함이나 압박감을 느껴요.', - '가까운 관계를 바라면서도 거절에 대한 두려움으로 거리감을 종종 둬요.', - '관계가 안정적이어도 언제든 무너질 수 있다는 불안을 느끼며, 종종 사이가 틀어질 것 같은 기분을 느껴요.', - '그래서 연인을 믿고 싶지만, 확신이 잘 들지 않을 때도 있어요.', - '연인에게 과도하게 집중하며 큰 감정 기복이 나타날 수 있어요.', - ], - conflictSolvingAttitudes: [ - '갈등이 생기면 감정이 격해지거나 완전히 회피해요.', - '갈등 상황에서 대화보다는 연인에게 집착하거나, 반대로 관계를 끊어버릴 수 있어요.', - '충돌 상황에서 나도 상대도 믿지 못하면서, 더 큰 거리감을 만들 수 있어요.', - ], - emotionalExpressions: [ - '내 감정을 솔직하게 전하고 싶지만, 스스로 어떤 감정을 느끼는지 정리하기 어려워요.', - '감정이 안정되지 않고 애정 표현이 비일관적이어서 연인에게 혼란을 줄 수 있어요.', - '사랑받기 위해 연인을 과하게 의식하거나, 감정을 숨기는 경우도 있어요.', - ], -} diff --git a/apps/react/src/features/attachment/models/love-type-catalog.ts b/apps/react/src/features/attachment/models/love-type-catalog.ts new file mode 100644 index 00000000..5e293f86 --- /dev/null +++ b/apps/react/src/features/attachment/models/love-type-catalog.ts @@ -0,0 +1,107 @@ +import { MemberDataLoveTypeCategoryEnum } from '@data/user-api-axios/api' + +import AnxietyResultImage from '@/assets/images/attachment-result/attachment-result-anxiety.png' +import AvoidanceResultImage from '@/assets/images/attachment-result/attachment-result-avoidance.png' +import ConfusionResultImage from '@/assets/images/attachment-result/attachment-result-confusion.png' +import StableResultImage from '@/assets/images/attachment-result/attachment-result-stable.png' +import AnxietyCardImage from '@/assets/images/characters/anxiety-card.png' +import AvoidanceCardImage from '@/assets/images/characters/avoidance-card.png' +import ConfusionCardImage from '@/assets/images/characters/confusion-card.png' +import StableCardImage from '@/assets/images/characters/stable-card.png' + +export type LoveTypeCategory = MemberDataLoveTypeCategoryEnum + +export interface LoveTypeCatalogItem { + character: string + subtype: string + previewDescription: string + cardImage: string + resultImage: string + badgeBackgroundColor: string + badgeTextColor: string + isWarmType: boolean +} + +export interface AttachmentTypePreviewItem { + name: string + description: string + bgColor: string + textColor: string +} + +export const LOVE_TYPE_CATALOG: Record = { + [MemberDataLoveTypeCategoryEnum.StableType]: { + character: '평온이', + subtype: '안정형', + previewDescription: '연인을 신뢰하고, 감정을 잘 표현하는 안정형', + cardImage: StableCardImage, + resultImage: StableResultImage, + badgeBackgroundColor: 'bg-malmo-rasberry-25', + badgeTextColor: 'text-malmo-rasberry-500', + isWarmType: false, + }, + [MemberDataLoveTypeCategoryEnum.AnxietyType]: { + character: '걱정이', + subtype: '불안형', + previewDescription: '연인과 멀어질까봐 자주 걱정하는 불안형', + cardImage: AnxietyCardImage, + resultImage: AnxietyResultImage, + badgeBackgroundColor: 'bg-malmo-orange-50', + badgeTextColor: 'text-malmo-orange-500', + isWarmType: true, + }, + [MemberDataLoveTypeCategoryEnum.AvoidanceType]: { + character: '도망이', + subtype: '회피형', + previewDescription: '연인과 가까워질수록 거리가 필요한 회피형', + cardImage: AvoidanceCardImage, + resultImage: AvoidanceResultImage, + badgeBackgroundColor: 'bg-malmo-rasberry-25', + badgeTextColor: 'text-malmo-rasberry-500', + isWarmType: false, + }, + [MemberDataLoveTypeCategoryEnum.ConfusionType]: { + character: '갈팡이', + subtype: '혼란형', + previewDescription: '연인과 가까워지고 싶지만 거리를 두는 혼란형', + cardImage: ConfusionCardImage, + resultImage: ConfusionResultImage, + badgeBackgroundColor: 'bg-malmo-orange-50', + badgeTextColor: 'text-malmo-orange-500', + isWarmType: true, + }, +} + +const LOVE_TYPE_PREVIEW_ORDER: readonly LoveTypeCategory[] = [ + MemberDataLoveTypeCategoryEnum.StableType, + MemberDataLoveTypeCategoryEnum.AnxietyType, + MemberDataLoveTypeCategoryEnum.AvoidanceType, + MemberDataLoveTypeCategoryEnum.ConfusionType, +] + +function isLoveTypeCategory(value: string): value is LoveTypeCategory { + return value in LOVE_TYPE_CATALOG +} + +export function getLoveTypeCatalogItem(loveTypeCategory: string | undefined): LoveTypeCatalogItem | null { + if (!loveTypeCategory || !isLoveTypeCategory(loveTypeCategory)) return null + return LOVE_TYPE_CATALOG[loveTypeCategory] +} + +export const ATTACHMENT_TEST_INFO: readonly string[] = [ + '애착유형은 친밀한 관계에서의 감정과 행동 패턴을 설명해요.', + '안정형, 회피형, 불안형, 혼란형까지 총 4가지 유형이 있어요.', + '심리학 이론과 연구에 기반해 연애 관계를 이해하는 데 도움을 주어요.', + 'MBTI처럼 단순한 성격 분류가 아닌, 실제 관계 개선에 활용되는 도구예요.', +] + +export const ATTACHMENT_TYPE_PREVIEW: AttachmentTypePreviewItem[] = LOVE_TYPE_PREVIEW_ORDER.map((category) => { + const item = LOVE_TYPE_CATALOG[category] + + return { + name: item.character, + description: item.previewDescription, + bgColor: item.badgeBackgroundColor, + textColor: item.badgeTextColor, + } +}) diff --git a/apps/react/src/features/attachment/models/result-label-map.ts b/apps/react/src/features/attachment/models/result-label-map.ts new file mode 100644 index 00000000..f4770c58 --- /dev/null +++ b/apps/react/src/features/attachment/models/result-label-map.ts @@ -0,0 +1,203 @@ +export const ATTACHMENT_RESULT_LABEL_MAP = { + EMPATHY: '공감력', + CONSIDERATION: '배려심', + PERFECTIONISM: '완벽주의', + INDIRECT_EXPRESSION: '돌려 표현하기', + SOCIAL_EXPECTATION: '사회적 기대', + TRUST_ORIENTED: '신뢰 중시', + PRUDENCE: '신중함', + LOGICAL: '논리적', + ANALYTICAL: '분석력', + EFFICIENCY: '효율적', + GOAL_ORIENTED: '목표 지향', + CONTROL: '통제력', + INSIGHT: '통찰력', + INTELLECTUAL_CURIOSITY: '지적 호기심', + FREEDOM: '자유로움', + INDEPENDENT: '독립적', + SENSITIVITY: '감수성', + IMAGINATION: '상상력', + IDEALISM: '이상주의', + PRESENT_FOCUS: '현재 집중', + SOCIABILITY: '친화력', + HUMOR: '유머력', + SPONTANEITY: '즉흥성', + PASSIONATE: '열정적', + EXECUTION: '실행력', + WARM_CONSIDERATION: '따뜻한 배려', + QUIET_CARE: '조용한 챙김', + RELIABLE_SUPPORT: '든든한 지지', + CALM_SUPPORT: '차분한 지지', + RESPONSIBILITY: '책임감', + SERIOUS_RELATIONSHIP: '진지한 관계', + STABILITY: '안정감', + CONSISTENT_DEVOTION: '꾸준한 헌신', + TOLERANCE: '포용력', + FREQUENT_CONTACT: '자주 연락하기', + NEED_FOR_RECOGNITION: '인정욕구', + WANT_EXPRESSION: '표현 바라기', + WANT_CERTAINTY: '확답 바라기', + SEEK_CONFIRMATION_BY_ACTION: '행동으로 확인받기', + FREQUENT_AFFECTION_CONFIRMATION: '애정 자주 확인', + SELF_BLAME: '자책하기', + INNER_DOUBT: '마음 속 의심', + PRETEND_OKAY: '괜찮은 척하기', + AVOID_INTERFERENCE: '간섭 피하기', + HIDE_FEELINGS: '속마음 감추기', + WITHDRAW_INTO_SHELL: '동굴로 숨기', + JUSTIFICATION: '정당화하기', + STOP_CONVERSATION: '대화 중단', + AVOID_BURDEN: '부담 피하기', + EMOTIONAL_WALL: '딱딱한 철벽', + COLD_DISTANCE: '차갑게 거리두기', + EMOTIONAL_DISTANCE: '마음의 거리 두기', + THINK_ALONE: '혼자 고민하기', + RUMINATE_WORDS: '말을 곱씹기', + SUPPRESS_FIRST: '일단 참기', + COLD_CONFLICT_HANDLING: '냉정한 갈등 처리', + EMOTIONAL_OUTBURST: '한 번에 터지는 감정', + ACCUMULATE_AND_ENDURE: '참고 쌓아두기', + AVOID_SERIOUSNESS: '진지함 피하기', + VALUE_AUTONOMY: '자율성 중시', + APPROACH_AND_AVOID: '다가갔다 피하기', + RESPECT_PERSONAL_SPACE: '개인 공간 존중', + RESPECT_OPINIONS: '의견 존중', + SPEAK_INDIRECTLY: '돌려 말하기', + ADAPT_TO_OTHERS: '상대에게 맞추기', + IMMERSION_IN_OTHERS_EMOTION: '상대 감정에 몰입', + UNPREDICTABLE: '예측하기 어려움', + ROLE_ORIENTED: '역할 중시', + SYSTEM_ORIENTED: '체계 중시', + ROUTINE_ORIENTED: '루틴 중시', + MOOD_MAKER: '분위기 메이커', + ENERGETIC: '생기발랄', + FUN_RELATIONSHIP: '즐거운 연애', + LIGHT_RELATIONSHIP: '가벼운 관계', + LEAD_RELATIONSHIP: '관계 주도하기', + HEATED_DEBATE: '열띤 토론', + FOLLOW_FEELINGS: '기분에 따르기', + SEEK_NOVELTY: '새로움 추구', + SHOW_ONLY_BRIGHT_SIDE: '밝은 모습만 보이기', + PRIORITIZE_WORK: '일을 우선하기', + ANALYZE_RELATIONSHIP: '관계 분석하기', + EMPHASIZE_PRINCIPLES: '원칙 강조', +} as const + +type AttachmentResultLabelKey = keyof typeof ATTACHMENT_RESULT_LABEL_MAP +type AttachmentResultLabelValue = (typeof ATTACHMENT_RESULT_LABEL_MAP)[AttachmentResultLabelKey] + +const ATTACHMENT_RESULT_LABEL_TO_KEY_MAP = Object.entries(ATTACHMENT_RESULT_LABEL_MAP).reduce< + Record +>( + (acc, [key, label]) => { + acc[label as AttachmentResultLabelValue] = key as AttachmentResultLabelKey + return acc + }, + {} as Record +) + +export const ATTACHMENT_RESULT_EMOJI_MAP: Record = { + EMPATHY: '💖', + CONSIDERATION: '💖', + PERFECTIONISM: '💯', + INDIRECT_EXPRESSION: '💫', + SOCIAL_EXPECTATION: '🙏', + TRUST_ORIENTED: '💚', + PRUDENCE: '💚', + LOGICAL: '🧠', + ANALYTICAL: '🧠', + EFFICIENCY: '🤖', + GOAL_ORIENTED: '🚩', + CONTROL: '🚫', + INSIGHT: '🧐', + INTELLECTUAL_CURIOSITY: '🟦', + FREEDOM: '🌈', + INDEPENDENT: '🌲', + SENSITIVITY: '💗', + IMAGINATION: '☁️', + IDEALISM: '☁️', + PRESENT_FOCUS: '⚡', + SOCIABILITY: '🌼', + HUMOR: '🤣', + SPONTANEITY: '☄️', + PASSIONATE: '🔥', + EXECUTION: '🔥', + WARM_CONSIDERATION: '🧡', + QUIET_CARE: '🧡', + RELIABLE_SUPPORT: '👊', + CALM_SUPPORT: '👊', + RESPONSIBILITY: '👊', + SERIOUS_RELATIONSHIP: '🌲', + STABILITY: '🌲', + CONSISTENT_DEVOTION: '🙌', + TOLERANCE: '💌', + FREQUENT_CONTACT: '💌', + NEED_FOR_RECOGNITION: '💌', + WANT_EXPRESSION: '💌', + WANT_CERTAINTY: '💌', + SEEK_CONFIRMATION_BY_ACTION: '💌', + FREQUENT_AFFECTION_CONFIRMATION: '💌', + SELF_BLAME: '💦', + INNER_DOUBT: '💦', + PRETEND_OKAY: '🛡️', + AVOID_INTERFERENCE: '🛡️', + HIDE_FEELINGS: '🛡️', + WITHDRAW_INTO_SHELL: '🛡️', + JUSTIFICATION: '🛡️', + STOP_CONVERSATION: '🛡️', + AVOID_BURDEN: '🛡️', + EMOTIONAL_WALL: '🛡️', + COLD_DISTANCE: '🛡️', + EMOTIONAL_DISTANCE: '🛡️', + THINK_ALONE: '💬', + RUMINATE_WORDS: '💬', + SUPPRESS_FIRST: '😡', + COLD_CONFLICT_HANDLING: '🧊', + EMOTIONAL_OUTBURST: '😡', + ACCUMULATE_AND_ENDURE: '😡', + AVOID_SERIOUSNESS: '🌀', + VALUE_AUTONOMY: '☁️', + APPROACH_AND_AVOID: '🌀', + RESPECT_PERSONAL_SPACE: '☁️', + RESPECT_OPINIONS: '☁️', + SPEAK_INDIRECTLY: '💫', + ADAPT_TO_OTHERS: '💫', + IMMERSION_IN_OTHERS_EMOTION: '💫', + UNPREDICTABLE: '💫', + ROLE_ORIENTED: '⏰', + SYSTEM_ORIENTED: '⏰', + ROUTINE_ORIENTED: '⏰', + MOOD_MAKER: '🤡', + ENERGETIC: '🤡', + FUN_RELATIONSHIP: '🤡', + LIGHT_RELATIONSHIP: '🪶', + LEAD_RELATIONSHIP: '📢', + HEATED_DEBATE: '🔥', + FOLLOW_FEELINGS: '✨', + SEEK_NOVELTY: '✨', + SHOW_ONLY_BRIGHT_SIDE: '✨', + PRIORITIZE_WORK: '📃', + ANALYZE_RELATIONSHIP: '📃', + EMPHASIZE_PRINCIPLES: '📃', +} + +export function toAttachmentResultLabel(value?: string | null) { + if (!value) return '' + return ATTACHMENT_RESULT_LABEL_MAP[value as keyof typeof ATTACHMENT_RESULT_LABEL_MAP] ?? value +} + +export function toAttachmentResultLabelKey(value?: string | null) { + if (!value) return undefined + if (value in ATTACHMENT_RESULT_LABEL_MAP) { + return value as AttachmentResultLabelKey + } + + return ATTACHMENT_RESULT_LABEL_TO_KEY_MAP[value as AttachmentResultLabelValue] +} + +export function toAttachmentResultEmoji(value?: string | null) { + const labelKey = toAttachmentResultLabelKey(value) + if (!labelKey) return '' + + return ATTACHMENT_RESULT_EMOJI_MAP[labelKey] ?? '' +} diff --git a/apps/react/src/features/attachment/models/types.ts b/apps/react/src/features/attachment/models/types.ts deleted file mode 100644 index e8af518e..00000000 --- a/apps/react/src/features/attachment/models/types.ts +++ /dev/null @@ -1,25 +0,0 @@ -// 애착유형 enum 정의 -export enum AttachmentType { - STABLE = 'STABLE_TYPE', - ANXIETY = 'ANXIETY_TYPE', - AVOIDANCE = 'AVOIDANCE_TYPE', - CONFUSION = 'CONFUSION_TYPE', -} - -// 애착유형 데이터 타입 정의 -export interface AttachmentTypeData { - type: AttachmentType - character: string - subtype: string - characterImage: string - cardImage: string - color: string - badgeBackgroundColor: string - badgeTextColor: string - anxietyThreshold: string - avoidanceThreshold: string - description: string - relationshipAttitudes: string[] - conflictSolvingAttitudes: string[] - emotionalExpressions: string[] -} diff --git a/apps/react/src/features/attachment/ui/attachment-type-cards.tsx b/apps/react/src/features/attachment/ui/attachment-type-cards.tsx index 40608dd8..b4805248 100644 --- a/apps/react/src/features/attachment/ui/attachment-type-cards.tsx +++ b/apps/react/src/features/attachment/ui/attachment-type-cards.tsx @@ -3,13 +3,12 @@ import { ChevronRight } from 'lucide-react' import MyMysteryMomo from '@/assets/icons/my-mystery.svg' import PartnerMysteryMomo from '@/assets/icons/partner-mystery.svg' +import type { LoveTypeCatalogItem } from '@/features/attachment/models/love-type-catalog' import { Badge } from '@/shared/ui' -import type { AttachmentTypeData } from '../models/types' - interface AttachmentTypeCardsProps { - myAttachmentData: AttachmentTypeData | null - partnerAttachmentData: AttachmentTypeData | null + myAttachmentData: LoveTypeCatalogItem | null + partnerAttachmentData: LoveTypeCatalogItem | null myAttachmentType: string | undefined partnerAttachmentType: string | undefined isPartnerConnected: boolean diff --git a/apps/react/src/features/attachment/ui/attachment-type-tag.tsx b/apps/react/src/features/attachment/ui/attachment-type-tag.tsx index 92277ab3..ae5d8e8e 100644 --- a/apps/react/src/features/attachment/ui/attachment-type-tag.tsx +++ b/apps/react/src/features/attachment/ui/attachment-type-tag.tsx @@ -1,10 +1,7 @@ +import type { AttachmentTypePreviewItem } from '@/features/attachment/models/love-type-catalog' + interface AttachmentTypeTagProps { - type: { - name: string - description: string - bgColor: string - textColor: string - } + type: AttachmentTypePreviewItem } export function AttachmentTypeTag({ type }: AttachmentTypeTagProps) { diff --git a/apps/react/src/features/attachment/ui/main/attachment-test-info-section.tsx b/apps/react/src/features/attachment/ui/main/attachment-test-info-section.tsx index 2c0ecbab..11f11b4e 100644 --- a/apps/react/src/features/attachment/ui/main/attachment-test-info-section.tsx +++ b/apps/react/src/features/attachment/ui/main/attachment-test-info-section.tsx @@ -1,4 +1,5 @@ -import { ATTACHMENT_TEST_INFO } from '../../models/attachment-data' +import { ATTACHMENT_TEST_INFO } from '@/features/attachment/models/love-type-catalog' + import { InfoBox } from '../info-box' import { SectionHeader } from '../section-header' diff --git a/apps/react/src/features/attachment/ui/main/attachment-types-section.tsx b/apps/react/src/features/attachment/ui/main/attachment-types-section.tsx index 0f6148e4..82623302 100644 --- a/apps/react/src/features/attachment/ui/main/attachment-types-section.tsx +++ b/apps/react/src/features/attachment/ui/main/attachment-types-section.tsx @@ -1,4 +1,5 @@ -import { ATTACHMENT_TYPE_PREVIEW } from '../../models/attachment-data' +import { ATTACHMENT_TYPE_PREVIEW } from '@/features/attachment/models/love-type-catalog' + import { AttachmentTypeTag } from '../attachment-type-tag' import { SectionHeader } from '../section-header' diff --git a/apps/react/src/features/attachment/ui/result/attachment-result-content.tsx b/apps/react/src/features/attachment/ui/result/attachment-result-content.tsx index 88db5e0e..a04c31b5 100644 --- a/apps/react/src/features/attachment/ui/result/attachment-result-content.tsx +++ b/apps/react/src/features/attachment/ui/result/attachment-result-content.tsx @@ -1,40 +1,117 @@ +import { MemberDataLoveTypeCategoryEnum } from '@data/user-api-axios/api' +import { useQuery } from '@tanstack/react-query' import { useNavigate } from '@tanstack/react-router' -import { X } from 'lucide-react' - -import ConflictIcon from '@/assets/icons/conflict.svg' -import EmotionIcon from '@/assets/icons/emotion.svg' -import RelationshipIcon from '@/assets/icons/relationship.svg' -import { ATTACHMENT_TYPE_DATA } from '@/features/attachment/models/attachment-data' -import { ResultAttitudeSection } from '@/features/attachment/ui/result/result-attitude-section' -import { ResultDetailBox } from '@/features/attachment/ui/result/result-detail-box' -import { ResultScoreBox } from '@/features/attachment/ui/result/result-score-box' +import { Puzzle, Zap } from 'lucide-react' + +import { getLoveTypeCatalogItem } from '@/features/attachment/models/love-type-catalog' +import type { AccentPalette } from '@/features/attachment/ui/result/attachment-result-sections' +import { + ResultFeatureSection, + ResultGuideSection, + ResultKeywordSection, + ResultMatchSection, + ResultTextBlockSection, + toFeatureTabs, +} from '@/features/attachment/ui/result/attachment-result-sections' import { wrapWithTracking } from '@/shared/analytics' import { BUTTON_NAMES, CATEGORIES } from '@/shared/analytics/constants' import { Screen } from '@/shared/layout/screen' +import { cn } from '@/shared/lib/cn' import { useGoBack } from '@/shared/navigation/use-go-back' +import loveTypeService from '@/shared/services/love-type.service' import { Button } from '@/shared/ui' import { DetailHeaderBar } from '@/shared/ui/header-bar' +import type { CSSProperties } from 'react' + interface UserInfo { nickname?: string loveTypeCategory?: string - anxietyRate?: number - avoidanceRate?: number + personalityType?: string } interface AttachmentResultContentProps { userInfo: UserInfo | null | undefined type: 'my' | 'partner' - isFromChat?: boolean } -export function AttachmentResultContent({ userInfo, type, isFromChat = false }: AttachmentResultContentProps) { +interface ResultDisplayMeta { + accentPalette: AccentPalette + titleText: string + behaviorTitle: string + typeFeatureTitle: string + typeFeatureFixedEmojis: readonly string[] + typeFeatureHeaderStyle: CSSProperties + typeFeatureIconColorClass: string + matchTitle: string +} + +const STABLE_TYPE_FEATURE_EMOJIS = ['🤝', '💌', '💡', '🍀'] as const +const NON_STABLE_TYPE_FEATURE_EMOJIS = ['☠️', '💦', '🕳️', '🌀'] as const +const BEHAVIOR_PATTERN_EMOJIS = ['❤️', '🌟', '🤔', '💥'] as const +const RESULT_THEME: Record< + 'warm' | 'cool', + { + accentPalette: AccentPalette + typeFeatureHeaderStyle: CSSProperties + typeFeatureIconColorClass: string + } +> = { + warm: { + accentPalette: { + accentTextClass: 'text-malmo-orange-500', + accentSoftBgClass: 'bg-malmo-orange-50', + accentMutedBg: '#FFE2BB', + }, + typeFeatureHeaderStyle: { background: 'linear-gradient(to top, #FFF1DE 0%, #FFFFFF 100%)' }, + typeFeatureIconColorClass: 'text-malmo-orange-100', + }, + cool: { + accentPalette: { + accentTextClass: 'text-malmo-rasberry-500', + accentSoftBgClass: 'bg-malmo-rasberry-50', + accentMutedBg: '#FFC9D3', + }, + typeFeatureHeaderStyle: { background: 'linear-gradient(to top, #FFE6E6 0%, #FFFFFF 100%)' }, + typeFeatureIconColorClass: 'text-malmo-rasberry-100', + }, +} + +function getResultDisplayMeta({ + loveTypeCategory, + subtype, + personalityType, + isWarmType, +}: { + loveTypeCategory: string + subtype: string + personalityType: string + isWarmType: boolean +}): ResultDisplayMeta { + const theme = isWarmType ? RESULT_THEME.warm : RESULT_THEME.cool + const hasPersonalityType = personalityType.length > 0 + + return { + accentPalette: theme.accentPalette, + titleText: hasPersonalityType ? `${personalityType} ${subtype}` : subtype, + behaviorTitle: hasPersonalityType ? `${personalityType}의 행동패턴` : `${subtype}의 행동패턴`, + typeFeatureTitle: hasPersonalityType ? `${personalityType}가 ${subtype}일 때` : `${subtype}의 특징`, + typeFeatureFixedEmojis: + loveTypeCategory === MemberDataLoveTypeCategoryEnum.StableType + ? STABLE_TYPE_FEATURE_EMOJIS + : NON_STABLE_TYPE_FEATURE_EMOJIS, + typeFeatureHeaderStyle: theme.typeFeatureHeaderStyle, + typeFeatureIconColorClass: theme.typeFeatureIconColorClass, + matchTitle: hasPersonalityType ? `${personalityType} ${subtype}의 연애 궁합` : `${subtype}의 연애 궁합`, + } +} + +export function AttachmentResultContent({ userInfo, type }: AttachmentResultContentProps) { const navigate = useNavigate() const goBack = useGoBack() const isMyResult = type === 'my' - const ctaText = isFromChat ? '상담하러 가기' : '홈으로 이동하기' + const ctaText = '상담하러 가기' - // 결과 데이터 확인 if (!userInfo?.loveTypeCategory) { return (

@@ -53,9 +130,10 @@ export function AttachmentResultContent({ userInfo, type, isFromChat = false }: ) } - const attachmentData = ATTACHMENT_TYPE_DATA[userInfo.loveTypeCategory as keyof typeof ATTACHMENT_TYPE_DATA] + const loveTypeCategory = userInfo.loveTypeCategory + const loveTypeCatalogItem = getLoveTypeCatalogItem(loveTypeCategory) - if (!attachmentData) { + if (!loveTypeCatalogItem) { return (
@@ -69,85 +147,128 @@ export function AttachmentResultContent({ userInfo, type, isFromChat = false }: ) } + const isWarmType = loveTypeCatalogItem.isWarmType + const personalityType = userInfo.personalityType?.toUpperCase() ?? '' + const displayName = userInfo.nickname || (isMyResult ? '사용자' : '연인') + const shouldFetchDetail = personalityType.length > 0 + + const { data: detailData } = useQuery({ + ...loveTypeService.detailQuery(personalityType, loveTypeCategory), + enabled: shouldFetchDetail, + retry: false, + select: (response) => response?.data, + }) + + const resolvedPersonalityType = detailData?.personalityType ?? personalityType + const summary = detailData?.summary ?? '' + const keywords = detailData?.keywords ?? [] + const patterns = detailData?.patterns ?? [] + const loveTypeFeatures = detailData?.loveTypeFeatures ?? [] + const datingGuides = detailData?.datingGuides ?? [] + const bestMatches = detailData?.bestMatches ?? [] + const worstMatches = detailData?.worstMatches ?? [] + const featureTabs = toFeatureTabs(detailData?.strengths, detailData?.weaknesses) + const { + accentPalette, + titleText, + behaviorTitle, + typeFeatureTitle, + typeFeatureFixedEmojis, + typeFeatureHeaderStyle, + typeFeatureIconColorClass, + matchTitle, + } = getResultDisplayMeta({ + loveTypeCategory, + subtype: loveTypeCatalogItem.subtype, + personalityType: resolvedPersonalityType, + isWarmType, + }) + const handleClose = () => { goBack() } return ( - - - - - } - /> - - - -
- {/* 캐릭터 이미지 */} - {attachmentData.character} + + - {/* 애착유형 텍스트 */} -
-

- {isMyResult - ? `${userInfo.nickname || '사용자'}님의 애착유형은` - : `${userInfo.nickname || '연인'}님의 애착유형은`} -

-

- {attachmentData.character} -

-
-
+
+
+
- {/* 결과 정보 섹션 */} -
- {/* 점수 박스 */} - +
+ {`${loveTypeCatalogItem.subtype} +
+
- {/* 상세 정보 박스 */} - -
+
+

{displayName}님은

+

{titleText}

+

+ {summary} +

+
+
+
- {/* 결과 태도 섹션 */} -
- {/* 관계에 대한 태도 */} - +
+ + +
+
- {/* 갈등해결 태도 */} - + + } + headerStyle={{ background: 'linear-gradient(to top, #E5E7EB 0%, #FFFFFF 100%)' }} + items={patterns} + fixedEmojis={BEHAVIOR_PATTERN_EMOJIS} /> - {/* 정서적인 표현 */} - + } + items={loveTypeFeatures} + fixedEmojis={typeFeatureFixedEmojis} + headerStyle={typeFeatureHeaderStyle} />
- {/* 바텀 버튼 */} -
+ + + + +
diff --git a/apps/react/src/features/attachment/ui/result/attachment-result-sections.tsx b/apps/react/src/features/attachment/ui/result/attachment-result-sections.tsx new file mode 100644 index 00000000..b288a005 --- /dev/null +++ b/apps/react/src/features/attachment/ui/result/attachment-result-sections.tsx @@ -0,0 +1,373 @@ +import { Check } from 'lucide-react' +import { useState } from 'react' + +import HeartIcon from '@/assets/icons/heart.svg' +import { toAttachmentResultEmoji, toAttachmentResultLabel } from '@/features/attachment/models/result-label-map' +import { cn } from '@/shared/lib/cn' + +import type { LoveTypePersonalityTypeBlockData, LoveTypeTextBlockData } from '@data/user-api-axios/api' +import type { CSSProperties, ReactNode } from 'react' + +export interface ResultTabItem { + label: string + title: string + description: string +} + +export interface AccentPalette { + accentTextClass: string + accentSoftBgClass: string + accentMutedBg: string +} + +const FEATURE_POINT_EMOJIS = ['🤩', '😀', '😮', '😥'] as const +const FEATURE_BAR_HEIGHTS = [120, 100, 72, 20] as const +const FEATURE_CHART_GRADIENTS = [ + 'linear-gradient(180deg, #FFC9D3 0%, #FFE6EB 100%)', + 'linear-gradient(180deg, #FFE2BB 0%, #FFF0DB 100%)', + 'linear-gradient(180deg, #E1D7FF 0%, #F0EBFF 100%)', + 'linear-gradient(180deg, #B0B6BF 0%, #C8CBD0 100%)', +] as const +const FEATURE_BAR_TOP_COLORS = ['#EC4665', '#FF8400', '#7C59EA', '#3F3F46'] as const +const FEATURE_LABEL_BG_CLASSES = [ + 'bg-malmo-rasberry-500', + 'bg-malmo-orange-500', + 'bg-malmo-purple-500', + 'bg-gray-iron-700', +] as const +const BEST_MATCH_CARD_BG = '#FDEDF0' +const WORST_MATCH_CARD_BG = '#F3F4F6' +const SECOND_GUIDE_CHECK_GRADIENT = 'linear-gradient(180deg, #9DA4AE 0%, #C8CFD8 100%)' + +function pickByIndex(values: readonly T[], index: number): T { + return values[Math.min(index, values.length - 1)] as T +} + +export function toFeatureTabs( + strengths: LoveTypeTextBlockData[] | undefined, + weaknesses: LoveTypeTextBlockData[] | undefined +): ResultTabItem[] { + const strengthItems = (strengths ?? []).slice(0, 3).map((item, index) => ({ + label: `강점 ${index + 1}`, + title: item.title ?? '', + description: item.description ?? '', + })) + + const weakness = weaknesses?.[0] + if (!weakness) return strengthItems + + return [ + ...strengthItems, + { + label: '약점', + title: weakness.title ?? '', + description: weakness.description ?? '', + }, + ] +} + +export function ResultKeywordSection({ keywords }: { keywords: string[] }) { + return ( +
+

나의 키워드

+ +
+ {keywords.map((keyword, index) => { + const label = toAttachmentResultLabel(keyword) + + return ( +
+ {label} + + {toAttachmentResultEmoji(keyword)} + +
+ ) + })} +
+
+ ) +} + +export function ResultFeatureSection({ title, tabs }: { title: string; tabs: ResultTabItem[] }) { + if (!tabs.length) return null + + const [selectedIndex, setSelectedIndex] = useState(0) + const activeTab = tabs[selectedIndex] + + return ( +
+

{title}

+ +
+
+ {tabs.map((tab, index) => { + const isSelected = index === selectedIndex + + return ( + + ) + })} +
+
+ +
+
+ {tabs.map((tab, index) => { + const isSelected = index === selectedIndex + const selectedGradient = pickByIndex(FEATURE_CHART_GRADIENTS, index) + const selectedTopColor = pickByIndex(FEATURE_BAR_TOP_COLORS, index) + + return ( + + ) + })} +
+ +
+ +
+ {tabs.map((tab, index) => { + const isSelected = index === selectedIndex + const selectedLabelBgClass = pickByIndex(FEATURE_LABEL_BG_CLASSES, index) + + return ( + + ) + })} +
+
+ + {activeTab && ( +
+

+ {toAttachmentResultLabel(activeTab.description)} +

+
+ )} +
+ ) +} + +export function ResultTextBlockSection({ + title, + accentPalette, + decoration, + items, + fixedEmojis, + headerStyle, +}: { + title: string + accentPalette: AccentPalette + decoration: ReactNode + items: LoveTypeTextBlockData[] + fixedEmojis: readonly string[] + headerStyle?: CSSProperties +}) { + if (!items.length) return null + + return ( +
+
+

{title}

+ + {decoration} + +
+ +
+
+ {items.map((item, index) => ( +
+
+ + {fixedEmojis[index % fixedEmojis.length]} + +

{toAttachmentResultLabel(item.title)}

+
+

+ {toAttachmentResultLabel(item.description)} +

+
+ ))} +
+
+
+ ) +} + +export function ResultGuideSection({ + accentPalette, + isWarmType, + guides, +}: { + accentPalette: AccentPalette + isWarmType: boolean + guides: LoveTypeTextBlockData[] +}) { + if (!guides.length) return null + + const guideCheckGradient = isWarmType + ? 'linear-gradient(180deg, #FF8400 0%, #FFC17F 100%)' + : 'linear-gradient(180deg, #EC4665 0%, #F78EA2 100%)' + + return ( +
+

건강한 연애를 위한 가이드

+ +
+ {guides.slice(0, 3).map((guide, index) => { + const title = toAttachmentResultLabel(guide.title) + const description = toAttachmentResultLabel(guide.description) + + return ( +
+
+ +
+ +
+

{title}

+

{description}

+
+
+ ) + })} +
+
+ ) +} + +function MatchCard({ item, tone }: { item: LoveTypePersonalityTypeBlockData; tone: 'best' | 'worst' }) { + const matchCardBackground = tone === 'best' ? BEST_MATCH_CARD_BG : WORST_MATCH_CARD_BG + + return ( +
+ +

+ {toAttachmentResultLabel(item.personalityType)} +

+

+ {toAttachmentResultLabel(item.description)} +

+
+ ) +} + +export function ResultMatchSection({ + title, + bestMatches, + worstMatches, +}: { + title: string + bestMatches: LoveTypePersonalityTypeBlockData[] + worstMatches: LoveTypePersonalityTypeBlockData[] +}) { + if (!bestMatches.length && !worstMatches.length) return null + + return ( +
+

{title}

+ + {bestMatches.length > 0 && ( + <> +
+
+ BEST +
+
+ +
+ {bestMatches.slice(0, 2).map((item, index) => ( + + ))} +
+ + )} + + {worstMatches.length > 0 && ( + <> +
+
+ WORST +
+
+ +
+ {worstMatches.slice(0, 2).map((item, index) => ( + + ))} +
+ + )} +
+ ) +} diff --git a/apps/react/src/features/attachment/ui/result/result-detail-box.tsx b/apps/react/src/features/attachment/ui/result/result-detail-box.tsx deleted file mode 100644 index 68ac094e..00000000 --- a/apps/react/src/features/attachment/ui/result/result-detail-box.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import type { AttachmentTypeData } from '../../models/types' - -interface ResultDetailBoxProps { - attachmentData: AttachmentTypeData -} - -export function ResultDetailBox({ attachmentData }: ResultDetailBoxProps) { - return ( -
- {/* 애착유형 태그 */} -
-
- - {attachmentData.character} - {attachmentData.subtype} - -
-
- - {/* 점수 설명 */} -
- - 불안 점수 {attachmentData.anxietyThreshold} / 회피 점수 {attachmentData.avoidanceThreshold} - -
- - {/* 설명 텍스트 */} -
-

{attachmentData.description}

-
-
- ) -} diff --git a/apps/react/src/shared/services/love-type.service.ts b/apps/react/src/shared/services/love-type.service.ts index ae3c9f01..175bf75b 100644 --- a/apps/react/src/shared/services/love-type.service.ts +++ b/apps/react/src/shared/services/love-type.service.ts @@ -10,6 +10,16 @@ class LoveTypeService extends LoveTypesApi { } // === Query Options === + detailQuery(personalityType: string, lovetype: string) { + return { + queryKey: queryKeys.loveType.detail(personalityType, lovetype), + queryFn: async () => { + const response = await this.getLoveTypePersonalityTypeResult({ personalityType, lovetype }) + return response.data + }, + } + } + questionsQuery() { return { queryKey: queryKeys.loveType.questions(), diff --git a/apps/react/src/shared/services/query-keys.ts b/apps/react/src/shared/services/query-keys.ts index cbcdbc93..be555d72 100644 --- a/apps/react/src/shared/services/query-keys.ts +++ b/apps/react/src/shared/services/query-keys.ts @@ -46,6 +46,8 @@ export const queryKeys = { loveType: { all: ['loveType'] as const, questions: () => [...queryKeys.loveType.all, 'questions'] as const, + detail: (personalityType: string, loveTypeCategory: string) => + [...queryKeys.loveType.all, 'detail', personalityType, loveTypeCategory] as const, }, // === Login 관련 === diff --git a/apps/react/src/styles/components.css b/apps/react/src/styles/components.css index a0726dcf..6097f3d7 100644 --- a/apps/react/src/styles/components.css +++ b/apps/react/src/styles/components.css @@ -16,6 +16,12 @@ .has-bottom-nav { padding-bottom: calc(var(--bottom-nav-h) + var(--safe-bottom)); } + + .emoji-toss { + font-family: var(--font-emoji-toss); + line-height: 1; + } + /* Title 1 - 28px/38px */ .title1-bold { font-family: var(--font-pretendard); diff --git a/apps/react/src/styles/globals.css b/apps/react/src/styles/globals.css index 4d72f071..31b64196 100644 --- a/apps/react/src/styles/globals.css +++ b/apps/react/src/styles/globals.css @@ -87,6 +87,7 @@ --font-pretendard: 'Pretendard', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; + --font-emoji-toss: 'Tossface'; /* Font Weight */ --font-weight-regular: 400; --font-weight-medium: 500; From a4d9ee607964ccda9bd981e5f20217d7a451206c Mon Sep 17 00:00:00 2001 From: LeeWxx Date: Sat, 21 Mar 2026 06:36:00 +0900 Subject: [PATCH 25/43] =?UTF-8?q?Chore:=20openapi=20generator=20=EB=A9=94?= =?UTF-8?q?=ED=83=80=EB=8D=B0=EC=9D=B4=ED=84=B0=20(MM-189)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/data/user-api-axios/api/.openapi-generator/FILES | 8 ++++++++ .../data/user-api-axios/api/.openapi-generator/VERSION | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/data/user-api-axios/api/.openapi-generator/FILES b/packages/data/user-api-axios/api/.openapi-generator/FILES index 74ba3044..82470d81 100644 --- a/packages/data/user-api-axios/api/.openapi-generator/FILES +++ b/packages/data/user-api-axios/api/.openapi-generator/FILES @@ -52,6 +52,7 @@ models/create-bookmark-request-dto.ts models/create-bookmark-response.ts models/create-chat-room-data.ts models/create-chat-room-response.ts +models/create-partner-profile-request-dto.ts models/delete-bookmarks-request-dto.ts models/delete-chat-room-request-dto.ts models/delete-member-success-response.ts @@ -67,17 +68,23 @@ models/kakao-login-request-dto.ts models/login-data.ts models/login-success-response.ts models/logout-success-response.ts +models/love-type-personality-type-block-data.ts +models/love-type-personality-type-result-data.ts +models/love-type-personality-type-result-success-response.ts models/love-type-question-calculate-success-response.ts models/love-type-question-calculation-data.ts models/love-type-question-data.ts models/love-type-question-success-response.ts models/love-type-test-result.ts +models/love-type-text-block-data.ts models/member-data.ts models/member-info-success-response.ts models/message-dto.ts models/pageable.ts models/partner-member-data.ts models/partner-member-info-success-response.ts +models/partner-profile-data.ts +models/partner-profile-success-response.ts models/past-answer-data.ts models/past-answer-success-response.ts models/past-question-data.ts @@ -109,6 +116,7 @@ models/update-member-request-dto.ts models/update-member-success-response.ts models/update-member-terms-request-dto.ts models/update-member-terms-success-response.ts +models/update-partner-profile-request-dto.ts models/update-start-love-date-data.ts models/update-start-love-date-request-dto.ts models/update-start-love-date-success-response.ts diff --git a/packages/data/user-api-axios/api/.openapi-generator/VERSION b/packages/data/user-api-axios/api/.openapi-generator/VERSION index 971ecb25..1b2d969d 100644 --- a/packages/data/user-api-axios/api/.openapi-generator/VERSION +++ b/packages/data/user-api-axios/api/.openapi-generator/VERSION @@ -1 +1 @@ -7.16.0 +7.18.0 From 487b36699f9dab54f753a046791469b0b6b1ec43 Mon Sep 17 00:00:00 2001 From: hin6150 Date: Sat, 21 Mar 2026 09:03:12 +0900 Subject: [PATCH 26/43] =?UTF-8?q?Fix:=20fix/MM-189=20=EB=B3=91=ED=95=A9=20?= =?UTF-8?q?=EC=B6=A9=EB=8F=8C=20=ED=95=B4=EC=86=8C=20=EB=B0=8F=20=EC=82=AC?= =?UTF-8?q?=EC=9D=B4=EB=93=9C=20=EC=9D=B4=ED=8E=99=ED=8A=B8=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20(MM-188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - query-keys.ts: loveType.result → loveType.detail 로 충돌 해소 (fix/MM-189 채택) - love-type.service.ts: 미사용 loveTypePersonalityTypeResultQuery 메서드 제거 - features/attachment/index.ts: getAttachmentType alias export 추가 (getLoveTypeCatalogItem) - my-result-preview, partner-result-preview: .description → .previewDescription 수정 - attachment-test/result/my/page.tsx: validateSearch 추가로 from 파라미터 타입 오류 수정 Co-Authored-By: Claude Sonnet 4.6 --- .../app/attachment-test/result/my/page.tsx | 6 +++++ apps/react/src/app/my-result-preview/page.tsx | 2 +- .../src/app/partner-result-preview/page.tsx | 2 +- apps/react/src/features/attachment/index.ts | 3 +-- .../attachment/lib/get-attachment-type.ts | 10 ------- .../src/shared/services/love-type.service.ts | 10 ------- .../api/.openapi-generator/VERSION | 2 +- .../user-api-axios/api/apis/bookmarks-api.ts | 6 ----- .../user-api-axios/api/apis/chatroom-api.ts | 10 ------- .../user-api-axios/api/apis/couples-api.ts | 3 --- .../user-api-axios/api/apis/logins-api.ts | 4 --- .../user-api-axios/api/apis/love-types-api.ts | 7 ----- .../api/apis/members-alarms-api.ts | 3 --- .../user-api-axios/api/apis/members-api.ts | 14 ---------- .../user-api-axios/api/apis/questions-api.ts | 8 ------ .../user-api-axios/api/apis/refresh-api.ts | 1 - .../user-api-axios/api/apis/sign-ups-api.ts | 1 - .../api/apis/sseconnection-apiapi.ts | 2 -- .../data/user-api-axios/api/apis/terms-api.ts | 2 -- .../data/user-api-axios/api/apis/test-api.ts | 8 ------ .../data/user-api-axios/api/configuration.ts | 26 +------------------ 21 files changed, 11 insertions(+), 119 deletions(-) delete mode 100644 apps/react/src/features/attachment/lib/get-attachment-type.ts diff --git a/apps/react/src/app/attachment-test/result/my/page.tsx b/apps/react/src/app/attachment-test/result/my/page.tsx index 77d094ae..4e400166 100644 --- a/apps/react/src/app/attachment-test/result/my/page.tsx +++ b/apps/react/src/app/attachment-test/result/my/page.tsx @@ -1,9 +1,15 @@ import { createFileRoute, redirect } from '@tanstack/react-router' +import { z } from 'zod' import { AttachmentResultContent } from '@/features/attachment/ui/result/attachment-result-content' import { useAuth } from '@/features/auth' +const searchSchema = z.object({ + from: z.string().optional(), +}) + export const Route = createFileRoute('/attachment-test/result/my/')({ + validateSearch: searchSchema, beforeLoad: async ({ context }) => { // 인증되지 않은 경우 로그인 페이지로 리다이렉트 if (!context.auth?.authenticated) { diff --git a/apps/react/src/app/my-result-preview/page.tsx b/apps/react/src/app/my-result-preview/page.tsx index f47832ae..666548e3 100644 --- a/apps/react/src/app/my-result-preview/page.tsx +++ b/apps/react/src/app/my-result-preview/page.tsx @@ -52,7 +52,7 @@ function MyResultPreviewPage() {

{userInfo.personalityType} {attachmentData.subtype}

-

{attachmentData.description}

+

{attachmentData.previewDescription}

+ ) : undefined + } + />
@@ -271,7 +307,7 @@ export function AttachmentResultContent({ userInfo, type, from }: AttachmentResu
diff --git a/apps/react/src/features/profile/lib/personality-flow.ts b/apps/react/src/features/profile/lib/personality-flow.ts index 19a92419..6fee3e0d 100644 --- a/apps/react/src/features/profile/lib/personality-flow.ts +++ b/apps/react/src/features/profile/lib/personality-flow.ts @@ -79,17 +79,17 @@ function navigateNext(navigate: NavigateFn, pathname: string, { flow, from }: Fl replace: true, }) } else if (flow === 'chat-entry') { - navigate({ to: '/my-result-preview', search: { flow }, replace: true }) + navigate({ to: '/attachment-test/result/my', search: { from: 'my-result-preview', flow }, replace: true }) } return } } -function navigateExit(navigate: NavigateFn, { from }: Pick) { +function navigateExit(navigate: NavigateFn, { from, flow }: Pick) { if (from === 'profile' || from === 'my-page') { navigate({ to: '/my-page/profile', replace: true }) } else if (from === 'my-result-preview') { - navigate({ to: '/my-result-preview', replace: true }) + navigate({ to: '/my-result-preview', search: { ...(flow && { flow }) }, replace: true }) } else if (from === 'partner-result-preview') { navigate({ to: '/partner-result-preview', replace: true }) } else { @@ -107,7 +107,7 @@ export function usePersonalityFlow() { } const exit = () => { - navigateExit(navigate, { from: search.from }) + navigateExit(navigate, { from: search.from, flow: search.flow }) } return { flow: search.flow, from: search.from, next, exit } From 1f085ab847cb6430b5c03c1e5c1bc7764a39016a Mon Sep 17 00:00:00 2001 From: hin6150 Date: Sat, 21 Mar 2026 16:05:31 +0900 Subject: [PATCH 28/43] =?UTF-8?q?Fix:=20=EB=A7=88=EC=9D=B4=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=EC=97=90=EC=84=9C=20=EC=83=81=EB=8C=80=20?= =?UTF-8?q?=EC=84=B1=ED=96=A5=20=EC=99=84=EB=A3=8C=20=EC=8B=9C=20=EB=A7=88?= =?UTF-8?q?=EC=9D=B4=ED=8E=98=EC=9D=B4=EC=A7=80=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=ED=95=84=EB=A1=9C=20=EC=9D=B4=EB=8F=99=20(MM-188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- .../features/profile/lib/personality-flow.ts | 38 ++++++++++--------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/apps/react/src/features/profile/lib/personality-flow.ts b/apps/react/src/features/profile/lib/personality-flow.ts index 6fee3e0d..3e145c3a 100644 --- a/apps/react/src/features/profile/lib/personality-flow.ts +++ b/apps/react/src/features/profile/lib/personality-flow.ts @@ -1,10 +1,10 @@ -import { useLocation, useNavigate, useSearch } from '@tanstack/react-router' +import { useLocation, useNavigate, useRouter, useSearch } from '@tanstack/react-router' import { z } from 'zod' -export type PersonalityFlow = 'my-personality' | 'partner-personality' | 'chat-entry' +export type PersonalityFlow = 'my-personality' | 'partner-personality' | 'full-flow' export const personalityFlowSearchSchema = z.object({ - flow: z.enum(['my-personality', 'partner-personality', 'chat-entry']).optional(), + flow: z.enum(['my-personality', 'partner-personality', 'full-flow']).optional(), from: z.literal('profile').optional(), }) @@ -12,27 +12,28 @@ export type PersonalityFlowSearch = z.infer // eslint-disable-next-line @typescript-eslint/no-explicit-any type NavigateFn = (opts: any) => void +type RouterLike = { history: { back: () => void } } interface FlowParams { flow: PersonalityFlow | undefined from: string | undefined } -function navigateNext(navigate: NavigateFn, pathname: string, { flow, from }: FlowParams) { +function navigateNext(navigate: NavigateFn, router: RouterLike, pathname: string, { flow, from }: FlowParams) { if (pathname.startsWith('/mbti')) { - if (flow === 'chat-entry') { - navigate({ to: '/my-attachment-select', search: { flow } }) + if (flow === 'full-flow') { + navigate({ to: '/my-attachment-select', search: { flow }, replace: true }) } else if (flow === 'my-personality') { - navigate({ to: '/my-attachment-select', search: { flow, ...(from && { from }) } }) + navigate({ to: '/my-attachment-select', search: { flow, ...(from && { from }) }, replace: true }) } return } if (pathname.startsWith('/my-attachment-select')) { - if (flow === 'chat-entry') { + if (flow === 'full-flow') { navigate({ to: '/my-result-preview', search: { flow } }) } else if (from === 'profile') { - navigate({ to: '/my-page/profile', replace: true }) + router.history.back() } else { navigate({ to: '/', replace: true }) } @@ -40,14 +41,14 @@ function navigateNext(navigate: NavigateFn, pathname: string, { flow, from }: Fl } if (pathname.startsWith('/my-result-preview')) { - if (flow === 'chat-entry') { + if (flow === 'full-flow') { navigate({ to: '/partner-mbti', search: { flow } }) } return } if (pathname.startsWith('/partner-mbti')) { - if (flow === 'chat-entry') { + if (flow === 'full-flow') { navigate({ to: '/partner-attachment-select', search: { flow } }) } else if (flow === 'partner-personality') { navigate({ to: '/partner-attachment-select', search: { flow, ...(from && { from }) } }) @@ -56,8 +57,8 @@ function navigateNext(navigate: NavigateFn, pathname: string, { flow, from }: Fl } if (pathname.startsWith('/partner-attachment-select')) { - if (flow === 'chat-entry') { - navigate({ to: '/partner-result-preview', search: { flow }, replace: true }) + if (flow === 'full-flow') { + navigate({ to: '/partner-result-preview', search: { flow } }) } else if (from === 'profile') { navigate({ to: '/my-page/profile', replace: true }) } else { @@ -78,16 +79,16 @@ function navigateNext(navigate: NavigateFn, pathname: string, { flow, from }: Fl search: { from: from === 'profile' ? 'my-page' : undefined }, replace: true, }) - } else if (flow === 'chat-entry') { + } else if (flow === 'full-flow') { navigate({ to: '/attachment-test/result/my', search: { from: 'my-result-preview', flow }, replace: true }) } return } } -function navigateExit(navigate: NavigateFn, { from, flow }: Pick) { +function navigateExit(navigate: NavigateFn, router: RouterLike, { from, flow }: Pick) { if (from === 'profile' || from === 'my-page') { - navigate({ to: '/my-page/profile', replace: true }) + router.history.back() } else if (from === 'my-result-preview') { navigate({ to: '/my-result-preview', search: { ...(flow && { flow }) }, replace: true }) } else if (from === 'partner-result-preview') { @@ -99,15 +100,16 @@ function navigateExit(navigate: NavigateFn, { from, flow }: Pick { - navigateNext(navigate, location.pathname, search) + navigateNext(navigate, router, location.pathname, search) } const exit = () => { - navigateExit(navigate, { from: search.from, flow: search.flow }) + navigateExit(navigate, router, { from: search.from, flow: search.flow }) } return { flow: search.flow, from: search.from, next, exit } From c2ca742cb0d19d8eb797cca21947927c8d9cead8 Mon Sep 17 00:00:00 2001 From: hin6150 Date: Sat, 21 Mar 2026 16:06:03 +0900 Subject: [PATCH 29/43] =?UTF-8?q?Feat:=20=EC=84=B1=ED=96=A5=20=ED=94=8C?= =?UTF-8?q?=EB=A1=9C=EC=9A=B0=20=EC=A0=84=EB=B0=98=20=EB=A6=AC=ED=8C=A9?= =?UTF-8?q?=ED=86=A0=EB=A7=81=20-=20chat-entry=20=E2=86=92=20full-flow=20?= =?UTF-8?q?=EC=A0=84=ED=99=98=20=EB=B0=8F=20=EA=B4=80=EB=A0=A8=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20(MM-188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- apps/react/src/app/attachment-test/page.tsx | 2 +- .../src/app/attachment-test/question/page.tsx | 2 +- .../app/attachment-test/result/my/page.tsx | 2 +- .../attachment-test/result/partner/page.tsx | 11 +++++--- apps/react/src/app/chat/result/page.tsx | 1 - apps/react/src/app/mbti/page.tsx | 2 +- .../src/app/my-attachment-select/page.tsx | 4 +-- apps/react/src/app/my-page/profile/page.tsx | 9 +++---- apps/react/src/app/my-result-preview/page.tsx | 4 +-- apps/react/src/app/page.tsx | 11 ++++---- .../app/partner-attachment-select/page.tsx | 20 +++++++++++--- apps/react/src/app/partner-mbti/page.tsx | 2 +- .../src/app/partner-result-preview/page.tsx | 12 +++------ .../src/app/personality-flow-loading/page.tsx | 2 +- .../ui/result/attachment-result-content.tsx | 26 +++---------------- .../src/features/chat/ui/chat-entry-card.tsx | 2 +- .../use-update-partner-profile-mutation.ts | 9 +++++-- .../use-upsert-partner-profile-mutation.ts | 9 +++++-- apps/react/src/shared/ui/header-bar.tsx | 6 ++++- .../update-partner-profile-request-dto.ts | 2 -- 20 files changed, 70 insertions(+), 68 deletions(-) diff --git a/apps/react/src/app/attachment-test/page.tsx b/apps/react/src/app/attachment-test/page.tsx index 8d4c6532..137b925c 100644 --- a/apps/react/src/app/attachment-test/page.tsx +++ b/apps/react/src/app/attachment-test/page.tsx @@ -14,7 +14,7 @@ import { DetailHeaderBar } from '@/shared/ui/header-bar' const searchSchema = z.object({ from: z.string().optional(), - flow: z.enum(['my-personality', 'partner-personality', 'chat-entry']).optional(), + flow: z.enum(['my-personality', 'partner-personality', 'full-flow']).optional(), chatId: z.number().optional(), }) diff --git a/apps/react/src/app/attachment-test/question/page.tsx b/apps/react/src/app/attachment-test/question/page.tsx index ecfa1f8d..da812937 100644 --- a/apps/react/src/app/attachment-test/question/page.tsx +++ b/apps/react/src/app/attachment-test/question/page.tsx @@ -20,7 +20,7 @@ import { DetailHeaderBar } from '@/shared/ui/header-bar' const searchSchema = z.object({ from: z.string().optional(), - flow: z.enum(['my-personality', 'partner-personality', 'chat-entry']).optional(), + flow: z.enum(['my-personality', 'partner-personality', 'full-flow']).optional(), chatId: z.number().optional(), }) diff --git a/apps/react/src/app/attachment-test/result/my/page.tsx b/apps/react/src/app/attachment-test/result/my/page.tsx index e7c425e0..53fe4543 100644 --- a/apps/react/src/app/attachment-test/result/my/page.tsx +++ b/apps/react/src/app/attachment-test/result/my/page.tsx @@ -6,7 +6,7 @@ import { useAuth } from '@/features/auth' const searchSchema = z.object({ from: z.string().optional(), - flow: z.enum(['my-personality', 'partner-personality', 'chat-entry']).optional(), + flow: z.enum(['my-personality', 'partner-personality', 'full-flow']).optional(), }) export const Route = createFileRoute('/attachment-test/result/my/')({ diff --git a/apps/react/src/app/attachment-test/result/partner/page.tsx b/apps/react/src/app/attachment-test/result/partner/page.tsx index 3decf26e..1dff4e91 100644 --- a/apps/react/src/app/attachment-test/result/partner/page.tsx +++ b/apps/react/src/app/attachment-test/result/partner/page.tsx @@ -2,7 +2,7 @@ import { createFileRoute, redirect } from '@tanstack/react-router' import { z } from 'zod' import { AttachmentResultContent } from '@/features/attachment/ui/result/attachment-result-content' -import { usePartnerInfo } from '@/features/member' +import { useAuth } from '@/features/auth' const searchSchema = z.object({ from: z.string().optional(), @@ -22,9 +22,14 @@ export const Route = createFileRoute('/attachment-test/result/partner/')({ }) function PartnerAttachmentResultPage() { - const { data: partnerInfo } = usePartnerInfo() + const { userInfo } = useAuth() const { from } = Route.useSearch() const fromProp = from === 'partner-result-preview' ? 'partner-result-preview' : undefined - return + const partnerData = { + loveTypeCategory: userInfo.partnerLoveTypeCategory, + personalityType: userInfo.otherPersonalityType, + } + + return } diff --git a/apps/react/src/app/chat/result/page.tsx b/apps/react/src/app/chat/result/page.tsx index b9d81a95..5ca4f2d0 100644 --- a/apps/react/src/app/chat/result/page.tsx +++ b/apps/react/src/app/chat/result/page.tsx @@ -35,7 +35,6 @@ function RouteComponent() { const navigate = useNavigate() const goBack = useGoBack() const queryClient = useQueryClient() - useEffect(() => { setStatusColor('#FDEDF0') diff --git a/apps/react/src/app/mbti/page.tsx b/apps/react/src/app/mbti/page.tsx index 62f47590..94eb08cb 100644 --- a/apps/react/src/app/mbti/page.tsx +++ b/apps/react/src/app/mbti/page.tsx @@ -46,7 +46,7 @@ function MbtiEditPage() { return ( diff --git a/apps/react/src/app/my-attachment-select/page.tsx b/apps/react/src/app/my-attachment-select/page.tsx index f627fb29..c6ae691c 100644 --- a/apps/react/src/app/my-attachment-select/page.tsx +++ b/apps/react/src/app/my-attachment-select/page.tsx @@ -37,13 +37,13 @@ function MyAttachmentSelectPage() { } const handleDontKnow = () => { - navigate({ to: '/attachment-test', search: { flow, from } }) + navigate({ to: '/attachment-test', search: { flow, from }, replace: true }) } return ( - + diff --git a/apps/react/src/app/my-page/profile/page.tsx b/apps/react/src/app/my-page/profile/page.tsx index 49dc50d3..8e6b5187 100644 --- a/apps/react/src/app/my-page/profile/page.tsx +++ b/apps/react/src/app/my-page/profile/page.tsx @@ -47,13 +47,10 @@ function ProfileManagementPage() { navigate({ to: '/mbti', search: { flow: 'my-personality', from: 'profile' } }) )} /> + navigate({ to: '/partner-mbti', search: { flow: 'partner-personality', from: 'profile' } }) )} @@ -72,7 +69,7 @@ function ProfileRow({ }: { label: string value?: string - badge?: { text: string; variant: 'default' | 'completed' | 'rasberry' } + badge?: { text: string; variant: 'default' | 'completed' | 'rasberry' } | null onClick: () => void }) { return ( diff --git a/apps/react/src/app/my-result-preview/page.tsx b/apps/react/src/app/my-result-preview/page.tsx index 666548e3..3bafe4de 100644 --- a/apps/react/src/app/my-result-preview/page.tsx +++ b/apps/react/src/app/my-result-preview/page.tsx @@ -18,12 +18,12 @@ export const Route = createFileRoute('/my-result-preview/')({ function MyResultPreviewPage() { const navigate = useNavigate() const { userInfo } = useAuth() - const { next } = usePersonalityFlow() + const { flow, next } = usePersonalityFlow() const attachmentData = getAttachmentType(userInfo.loveTypeCategory) const handleViewResult = () => { - navigate({ to: '/attachment-test/result/my', search: { from: 'my-result-preview' }, replace: true }) + navigate({ to: '/attachment-test/result/my', search: { from: 'my-result-preview', flow }, replace: true }) } return ( diff --git a/apps/react/src/app/page.tsx b/apps/react/src/app/page.tsx index 3688dccc..6c3ee7ee 100644 --- a/apps/react/src/app/page.tsx +++ b/apps/react/src/app/page.tsx @@ -6,7 +6,6 @@ import { useAuth } from '@/features/auth' import { ChatEntryCard } from '@/features/chat/ui/chat-entry-card' import { useChatHistoryQuery } from '@/features/history/hooks/use-chat-history-query' import { RecentChatSection } from '@/features/history/ui/recent-chat-section' -import { usePartnerInfo } from '@/features/member' import { useAppNotifications } from '@/features/notification' import { Screen } from '@/shared/layout/screen' import { BottomNavigation } from '@/shared/ui/bottom-navigation' @@ -24,8 +23,6 @@ function HomePage() { useAppNotifications() - const { data: partnerInfo } = usePartnerInfo() - const { data: historyData } = useChatHistoryQuery({}) const histories = historyData?.pages.flatMap((page) => page?.list ?? []) ?? [] const totalHistoryCount = historyData?.pages[0]?.totalCount ?? histories.length @@ -33,8 +30,8 @@ function HomePage() { // 애착유형 데이터 const myAttachmentData = getAttachmentType(userInfo.loveTypeCategory) const partnerAttachmentData = - partnerInfo?.loveTypeCategory && partnerInfo.loveTypeCategory !== 'UNKNOWN' - ? getAttachmentType(partnerInfo.loveTypeCategory as MemberDataLoveTypeCategoryEnum) + userInfo.partnerLoveTypeCategory && userInfo.partnerLoveTypeCategory !== 'UNKNOWN' + ? getAttachmentType(userInfo.partnerLoveTypeCategory as MemberDataLoveTypeCategoryEnum) : null const myAttachmentType = myAttachmentData?.subtype const partnerAttachmentType = partnerAttachmentData?.subtype @@ -45,7 +42,9 @@ function HomePage() { (!userInfo.partnerLoveTypeCategory || userInfo.partnerLoveTypeCategory === 'UNKNOWN' ? 1 : 0) const handleBannerClick = () => { - const flow = !userInfo.loveTypeCategory ? 'my-personality' : 'partner-personality' + const myMissing = !userInfo.loveTypeCategory + const partnerMissing = !userInfo.partnerLoveTypeCategory || userInfo.partnerLoveTypeCategory === 'UNKNOWN' + const flow = myMissing && partnerMissing ? 'full-flow' : myMissing ? 'my-personality' : 'partner-personality' navigate({ to: '/personality-flow-loading', search: { flow } }) } diff --git a/apps/react/src/app/partner-attachment-select/page.tsx b/apps/react/src/app/partner-attachment-select/page.tsx index 7995f024..2c52ee48 100644 --- a/apps/react/src/app/partner-attachment-select/page.tsx +++ b/apps/react/src/app/partner-attachment-select/page.tsx @@ -1,4 +1,4 @@ -import { createFileRoute } from '@tanstack/react-router' +import { createFileRoute, useNavigate } from '@tanstack/react-router' import { useState } from 'react' import { ATTACHMENT_OPTIONS } from '@/features/attachment' @@ -32,6 +32,7 @@ export const Route = createFileRoute('/partner-attachment-select/')({ function PartnerAttachmentSelectPage() { const { flow, next } = usePersonalityFlow() + const navigate = useNavigate() const [selectedType, setSelectedType] = useState(null) const [showDontKnowModal, setShowDontKnowModal] = useState(false) @@ -40,24 +41,35 @@ function PartnerAttachmentSelectPage() { errorMessage: '저장 중 오류가 발생했습니다', }) + const dontKnowMutation = useUpdatePartnerProfileMutation({ + onSuccess: () => { + if (flow === 'full-flow') { + navigate({ to: '/', replace: true }) + } else { + next() + } + }, + errorMessage: '저장 중 오류가 발생했습니다', + }) + const handleConfirm = () => { if (!selectedType || updateMutation.isPending) return updateMutation.mutate({ loveTypeCategory: selectedType }) } const handleDontKnow = () => { - if (updateMutation.isPending) return + if (updateMutation.isPending || dontKnowMutation.isPending) return setShowDontKnowModal(true) } const handleDontKnowConfirm = () => { - updateMutation.mutate({ loveTypeCategoryProvided: false }) + dontKnowMutation.mutate({ loveTypeCategory: 'UNKNOWN' }) } return ( - + diff --git a/apps/react/src/app/partner-mbti/page.tsx b/apps/react/src/app/partner-mbti/page.tsx index 1933ada4..b1667922 100644 --- a/apps/react/src/app/partner-mbti/page.tsx +++ b/apps/react/src/app/partner-mbti/page.tsx @@ -46,7 +46,7 @@ function PartnerMbtiEditPage() { return ( diff --git a/apps/react/src/app/partner-result-preview/page.tsx b/apps/react/src/app/partner-result-preview/page.tsx index b3402a24..00535196 100644 --- a/apps/react/src/app/partner-result-preview/page.tsx +++ b/apps/react/src/app/partner-result-preview/page.tsx @@ -2,7 +2,7 @@ import { createFileRoute, useNavigate } from '@tanstack/react-router' import { LucideCheck, LucideChevronRight } from 'lucide-react' import { getAttachmentType } from '@/features/attachment' -import { usePartnerInfo } from '@/features/member' +import { useAuth } from '@/features/auth' import { personalityFlowSearchSchema, usePersonalityFlow } from '@/features/profile/lib/personality-flow' import { Screen } from '@/shared/layout/screen' import { Button } from '@/shared/ui' @@ -10,8 +10,6 @@ import { FixedBottom } from '@/shared/ui/fixed-bottom' import { FlowProgressBar } from '@/shared/ui/flow-progress-bar' import { DetailHeaderBar } from '@/shared/ui/header-bar' -import type { MemberDataLoveTypeCategoryEnum } from '@data/user-api-axios/api' - export const Route = createFileRoute('/partner-result-preview/')({ validateSearch: personalityFlowSearchSchema, component: PartnerResultPreviewPage, @@ -19,12 +17,10 @@ export const Route = createFileRoute('/partner-result-preview/')({ function PartnerResultPreviewPage() { const navigate = useNavigate() - const { data: partnerInfo } = usePartnerInfo() + const { userInfo } = useAuth() const { next } = usePersonalityFlow() - const attachmentData = partnerInfo?.loveTypeCategory - ? getAttachmentType(partnerInfo.loveTypeCategory as MemberDataLoveTypeCategoryEnum) - : null + const attachmentData = userInfo.partnerLoveTypeCategory ? getAttachmentType(userInfo.partnerLoveTypeCategory) : null const handleViewResult = () => { navigate({ to: '/attachment-test/result/partner', search: { from: 'partner-result-preview' }, replace: true }) @@ -54,7 +50,7 @@ function PartnerResultPreviewPage() {

상대는

- {partnerInfo?.personalityType} {attachmentData.subtype} + {userInfo.otherPersonalityType} {attachmentData.subtype}

{attachmentData.previewDescription}

- ) : undefined + } /> diff --git a/apps/react/src/features/chat/ui/chat-entry-card.tsx b/apps/react/src/features/chat/ui/chat-entry-card.tsx index 0ba9cc1d..e4d66009 100644 --- a/apps/react/src/features/chat/ui/chat-entry-card.tsx +++ b/apps/react/src/features/chat/ui/chat-entry-card.tsx @@ -20,7 +20,7 @@ export function ChatEntryCard() { const hasPartnerPersonality = !!userInfo.otherPersonalityType && !!userInfo.partnerLoveTypeCategory if (!hasUserPersonality || !hasPartnerPersonality) { - navigate({ to: '/personality-flow-loading', search: { flow: 'chat-entry' } }) + navigate({ to: '/personality-flow-loading', search: { flow: 'full-flow' } }) return } diff --git a/apps/react/src/features/profile/hooks/use-update-partner-profile-mutation.ts b/apps/react/src/features/profile/hooks/use-update-partner-profile-mutation.ts index 72883cbb..a1b879a3 100644 --- a/apps/react/src/features/profile/hooks/use-update-partner-profile-mutation.ts +++ b/apps/react/src/features/profile/hooks/use-update-partner-profile-mutation.ts @@ -1,7 +1,8 @@ -import { useMutation } from '@tanstack/react-query' +import { useMutation, useQueryClient } from '@tanstack/react-query' import { useAuth } from '@/features/auth' import memberService from '@/shared/services/member.service' +import { queryKeys } from '@/shared/services/query-keys' import { toast } from '@/shared/ui/toast' import type { UpdatePartnerProfileRequestDto } from '@data/user-api-axios/api' @@ -14,6 +15,7 @@ interface Options { /** 파트너 프로필 PATCH 전용 뮤테이션 훅 */ export function useUpdatePartnerProfileMutation({ onSuccess, errorMessage }: Options) { const { refreshUserInfo } = useAuth() + const queryClient = useQueryClient() return useMutation({ mutationFn: async (body: UpdatePartnerProfileRequestDto) => { @@ -21,7 +23,10 @@ export function useUpdatePartnerProfileMutation({ onSuccess, errorMessage }: Opt return data }, onSuccess: async () => { - await refreshUserInfo() + await Promise.all([ + refreshUserInfo(), + queryClient.invalidateQueries({ queryKey: queryKeys.member.partnerInfo() }), + ]) await onSuccess() }, onError: () => { diff --git a/apps/react/src/features/profile/hooks/use-upsert-partner-profile-mutation.ts b/apps/react/src/features/profile/hooks/use-upsert-partner-profile-mutation.ts index 2349118f..e5568af8 100644 --- a/apps/react/src/features/profile/hooks/use-upsert-partner-profile-mutation.ts +++ b/apps/react/src/features/profile/hooks/use-upsert-partner-profile-mutation.ts @@ -1,7 +1,8 @@ -import { useMutation } from '@tanstack/react-query' +import { useMutation, useQueryClient } from '@tanstack/react-query' import { useAuth } from '@/features/auth' import memberService from '@/shared/services/member.service' +import { queryKeys } from '@/shared/services/query-keys' import { toast } from '@/shared/ui/toast' import type { CreatePartnerProfileRequestDto } from '@data/user-api-axios/api' @@ -14,6 +15,7 @@ interface Options { /** 파트너 프로필 POST 시도 → 40017(already exists)이면 PATCH로 fallback */ export function useUpsertPartnerProfileMutation({ onSuccess, errorMessage }: Options) { const { refreshUserInfo } = useAuth() + const queryClient = useQueryClient() return useMutation({ mutationFn: async (body: CreatePartnerProfileRequestDto) => { @@ -32,7 +34,10 @@ export function useUpsertPartnerProfileMutation({ onSuccess, errorMessage }: Opt } }, onSuccess: async () => { - await refreshUserInfo() + await Promise.all([ + refreshUserInfo(), + queryClient.invalidateQueries({ queryKey: queryKeys.member.partnerInfo() }), + ]) await onSuccess() }, onError: () => { diff --git a/apps/react/src/shared/ui/header-bar.tsx b/apps/react/src/shared/ui/header-bar.tsx index 522df12c..60ee2c6f 100644 --- a/apps/react/src/shared/ui/header-bar.tsx +++ b/apps/react/src/shared/ui/header-bar.tsx @@ -54,7 +54,11 @@ export function DetailHeaderBar({ {center ? (
{center}
) : ( - title &&

{title}

+ title && ( +

+ {title} +

+ ) )} {/* Right Area */} diff --git a/packages/data/user-api-axios/api/models/update-partner-profile-request-dto.ts b/packages/data/user-api-axios/api/models/update-partner-profile-request-dto.ts index 79a9c326..d28484c7 100644 --- a/packages/data/user-api-axios/api/models/update-partner-profile-request-dto.ts +++ b/packages/data/user-api-axios/api/models/update-partner-profile-request-dto.ts @@ -14,9 +14,7 @@ export interface UpdatePartnerProfileRequestDto { personalityType?: string - personalityTypeProvided?: boolean loveTypeCategory?: UpdatePartnerProfileRequestDtoLoveTypeCategoryEnum - loveTypeCategoryProvided?: boolean } export const UpdatePartnerProfileRequestDtoLoveTypeCategoryEnum = { From 382090a2d7fda48dc5fb84eaf55e07f431226b87 Mon Sep 17 00:00:00 2001 From: hin6150 Date: Sat, 21 Mar 2026 16:23:27 +0900 Subject: [PATCH 30/43] =?UTF-8?q?Refactor:=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EB=A6=AC=EB=B7=B0=20=EB=B0=98=EC=98=81=20-=20=ED=83=80?= =?UTF-8?q?=EC=9E=85=20=EC=95=88=EC=A0=84=EC=84=B1=20=EA=B0=9C=EC=84=A0=20?= =?UTF-8?q?=EB=B0=8F=20mutation=20=EC=A4=91=EB=B3=B5=20=EC=A0=9C=EA=B1=B0?= =?UTF-8?q?=20(MM-188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - NavigateFn 타입을 any → ReturnType로 강화 - FlowParams.from을 리터럴 유니온 타입으로 정확화 - catch (error: any) → unknown + 타입 assertion 적용 - useUpdatePartnerProfileMutation onSuccess optional로 변경 - useMemberUpdateMutation errorMessage optional + fallback 기본값 - partner-attachment-select: 두 mutation 인스턴스 → 단일 partnerMutation - SelectableButton 중복 className 제거 - 인라인 gradient style → Tailwind 클래스로 교체 Co-Authored-By: Claude Sonnet 4.6 --- apps/react/src/app/my-result-preview/page.tsx | 5 +-- .../app/partner-attachment-select/page.tsx | 43 +++++++++---------- .../hooks/use-member-update-mutation.ts | 4 +- .../use-update-partner-profile-mutation.ts | 4 +- .../use-upsert-partner-profile-mutation.ts | 4 +- .../features/profile/lib/personality-flow.ts | 9 ++-- 6 files changed, 31 insertions(+), 38 deletions(-) diff --git a/apps/react/src/app/my-result-preview/page.tsx b/apps/react/src/app/my-result-preview/page.tsx index 3bafe4de..aa23e12b 100644 --- a/apps/react/src/app/my-result-preview/page.tsx +++ b/apps/react/src/app/my-result-preview/page.tsx @@ -35,10 +35,7 @@ function MyResultPreviewPage() {
{/* Checkmark circle */} -
+
diff --git a/apps/react/src/app/partner-attachment-select/page.tsx b/apps/react/src/app/partner-attachment-select/page.tsx index 2c52ee48..8e67e20f 100644 --- a/apps/react/src/app/partner-attachment-select/page.tsx +++ b/apps/react/src/app/partner-attachment-select/page.tsx @@ -36,34 +36,31 @@ function PartnerAttachmentSelectPage() { const [selectedType, setSelectedType] = useState(null) const [showDontKnowModal, setShowDontKnowModal] = useState(false) - const updateMutation = useUpdatePartnerProfileMutation({ - onSuccess: () => next(), - errorMessage: '저장 중 오류가 발생했습니다', - }) - - const dontKnowMutation = useUpdatePartnerProfileMutation({ - onSuccess: () => { - if (flow === 'full-flow') { - navigate({ to: '/', replace: true }) - } else { - next() - } - }, - errorMessage: '저장 중 오류가 발생했습니다', - }) + const partnerMutation = useUpdatePartnerProfileMutation({ errorMessage: '저장 중 오류가 발생했습니다' }) const handleConfirm = () => { - if (!selectedType || updateMutation.isPending) return - updateMutation.mutate({ loveTypeCategory: selectedType }) + if (!selectedType || partnerMutation.isPending) return + partnerMutation.mutate({ loveTypeCategory: selectedType }, { onSuccess: () => next() }) } const handleDontKnow = () => { - if (updateMutation.isPending || dontKnowMutation.isPending) return + if (partnerMutation.isPending) return setShowDontKnowModal(true) } const handleDontKnowConfirm = () => { - dontKnowMutation.mutate({ loveTypeCategory: 'UNKNOWN' }) + partnerMutation.mutate( + { loveTypeCategory: 'UNKNOWN' }, + { + onSuccess: () => { + if (flow === 'full-flow') { + navigate({ to: '/', replace: true }) + } else { + next() + } + }, + } + ) } return ( @@ -90,7 +87,7 @@ function PartnerAttachmentSelectPage() { key={option.value} selected={selectedType === option.value} onClick={() => setSelectedType(option.value)} - disabled={updateMutation.isPending} + disabled={partnerMutation.isPending} className="w-full text-left" > {option.label} @@ -99,8 +96,8 @@ function PartnerAttachmentSelectPage() { 상대의 애착유형을 모르겠어요 @@ -108,7 +105,7 @@ function PartnerAttachmentSelectPage() {
- diff --git a/apps/react/src/app/my-result-preview/page.tsx b/apps/react/src/app/my-result-preview/page.tsx index aa23e12b..b9e0ff7c 100644 --- a/apps/react/src/app/my-result-preview/page.tsx +++ b/apps/react/src/app/my-result-preview/page.tsx @@ -35,12 +35,12 @@ function MyResultPreviewPage() {
{/* Checkmark circle */} -
- +
+
-

내 성향 프로필을 완성했어요!

-

연인의 프로필도 완성하러 가볼까요?

+

내 성향 프로필을 완성했어요!

+

연인의 프로필도 완성하러 가볼까요?

{/* Result card */} {attachmentData && ( @@ -52,7 +52,7 @@ function MyResultPreviewPage() {

{attachmentData.previewDescription}

-
- - - } - /> +
@@ -230,7 +222,9 @@ export function AttachmentResultContent({ userInfo, type, from }: AttachmentResu
-

{displayName}님은

+

+ {isMyResult ? `${displayName}님은` : '상대는'} +

{titleText}

{summary} diff --git a/apps/react/src/features/couple/index.ts b/apps/react/src/features/couple/index.ts deleted file mode 100644 index 82aafe23..00000000 --- a/apps/react/src/features/couple/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './ui/couple-code-form' diff --git a/apps/react/src/features/couple/ui/couple-code-form.tsx b/apps/react/src/features/couple/ui/couple-code-form.tsx deleted file mode 100644 index b65ceee9..00000000 --- a/apps/react/src/features/couple/ui/couple-code-form.tsx +++ /dev/null @@ -1,57 +0,0 @@ -import { TitleSection } from '@/features/onboarding/ui/title-section' -import { useKeyboardSheetMotion } from '@/shared/hooks/use-keyboard-motion' -import { Screen } from '@/shared/layout/screen' -import { Input, Button } from '@/shared/ui' -import { DetailHeaderBar } from '@/shared/ui/header-bar' - -interface PartnerCodeFormProps { - partnerCode: string - onPartnerCodeChange: (code: string) => void - onBack: () => void - onSubmit: () => void - isSubmitting: boolean -} - -export function PartnerCodeForm({ - partnerCode, - onPartnerCodeChange, - onBack, - onSubmit, - isSubmitting, -}: PartnerCodeFormProps) { - const { keyboardBottom } = useKeyboardSheetMotion() - - return ( - - - - - - - - 연인의 커플 코드를 -
- 입력해 주세요 - - } - /> - -

- onPartnerCodeChange(e.target.value)} - placeholder="코드를 입력해 주세요" - maxLength={7} - /> -
- -
-
- - - ) -} diff --git a/apps/react/src/features/profile/lib/personality-flow.ts b/apps/react/src/features/profile/lib/personality-flow.ts index a559a5cf..4571e8eb 100644 --- a/apps/react/src/features/profile/lib/personality-flow.ts +++ b/apps/react/src/features/profile/lib/personality-flow.ts @@ -5,7 +5,7 @@ export type PersonalityFlow = 'my-personality' | 'partner-personality' | 'full-f export const personalityFlowSearchSchema = z.object({ flow: z.enum(['my-personality', 'partner-personality', 'full-flow']).optional(), - from: z.literal('profile').optional(), + from: z.enum(['profile', 'profile-result']).optional(), }) export type PersonalityFlowSearch = z.infer @@ -15,7 +15,7 @@ type RouterLike = { history: { back: () => void; go: (index: number) => void } } interface FlowParams { flow: PersonalityFlow | undefined - from: 'profile' | 'my-page' | 'my-result-preview' | 'partner-result-preview' | undefined + from: 'profile' | 'profile-result' | 'my-page' | 'my-result-preview' | 'partner-result-preview' | undefined } function navigateNext(navigate: NavigateFn, router: RouterLike, pathname: string, { flow, from }: FlowParams) { @@ -23,7 +23,10 @@ function navigateNext(navigate: NavigateFn, router: RouterLike, pathname: string if (flow === 'full-flow') { navigate({ to: '/my-attachment-select', search: { flow } }) } else if (flow === 'my-personality') { - navigate({ to: '/my-attachment-select', search: { flow, ...(from === 'profile' && { from }) } }) + navigate({ + to: '/my-attachment-select', + search: { flow, ...((from === 'profile' || from === 'profile-result') && { from }) }, + }) } return } @@ -31,6 +34,8 @@ function navigateNext(navigate: NavigateFn, router: RouterLike, pathname: string if (pathname.startsWith('/my-attachment-select')) { if (flow === 'full-flow') { navigate({ to: '/my-result-preview', search: { flow } }) + } else if (from === 'profile-result') { + navigate({ to: '/attachment-test/result/my', search: { from: 'my-page' }, replace: true }) } else if (from === 'profile') { router.history.go(-2) } else { @@ -75,7 +80,7 @@ function navigateNext(navigate: NavigateFn, router: RouterLike, pathname: string if (flow === 'my-personality') { navigate({ to: '/attachment-test/result/my', - search: { from: from === 'profile' ? 'my-page' : undefined }, + search: { from: from === 'profile' || from === 'profile-result' ? 'my-page' : undefined }, replace: true, }) } else if (flow === 'full-flow') { @@ -86,8 +91,10 @@ function navigateNext(navigate: NavigateFn, router: RouterLike, pathname: string } function navigateExit(navigate: NavigateFn, router: RouterLike, { from, flow }: Pick) { - if (from === 'profile' || from === 'my-page') { + if (from === 'profile' || from === 'profile-result') { router.history.back() + } else if (from === 'my-page') { + navigate({ to: '/my-page/profile', replace: true }) } else if (from === 'my-result-preview') { navigate({ to: '/my-result-preview', search: { ...(flow && { flow }) }, replace: true }) } else if (from === 'partner-result-preview') { diff --git a/apps/react/src/shared/ui/button.tsx b/apps/react/src/shared/ui/button.tsx index 6ac9745b..f37c339d 100644 --- a/apps/react/src/shared/ui/button.tsx +++ b/apps/react/src/shared/ui/button.tsx @@ -5,7 +5,7 @@ interface ButtonProps { disabled?: boolean onClick: () => void className?: string - type?: 'primary' | 'secondary' + type?: 'primary' | 'secondary' | 'ghost' } export function Button({ text, disabled = false, onClick, className = '', type = 'primary' }: ButtonProps) { @@ -18,6 +18,9 @@ export function Button({ text, disabled = false, onClick, className = '', type = { 'bg-gray-100 text-gray-iron-700': type === 'secondary', }, + { + 'bg-transparent text-gray-iron-400': type === 'ghost', + }, { 'cursor-not-allowed bg-gray-neutral-300': disabled, }, diff --git a/apps/react/src/shared/ui/flow-progress-bar.tsx b/apps/react/src/shared/ui/flow-progress-bar.tsx index 0d60342e..06c6c53f 100644 --- a/apps/react/src/shared/ui/flow-progress-bar.tsx +++ b/apps/react/src/shared/ui/flow-progress-bar.tsx @@ -49,7 +49,7 @@ export function FlowProgressBar({ step, total, highlightSteps }: FlowProgressBar })}
- {step}/{total} + {step} / {total}
) diff --git a/apps/react/src/shared/ui/flow-step-dots.tsx b/apps/react/src/shared/ui/flow-step-dots.tsx index 0c374b66..03524899 100644 --- a/apps/react/src/shared/ui/flow-step-dots.tsx +++ b/apps/react/src/shared/ui/flow-step-dots.tsx @@ -1,3 +1,4 @@ +import StepsIcon from '@/assets/icons/steps.svg' import { cn } from '@/shared/lib/cn' interface FlowStepDotsProps { @@ -7,14 +8,16 @@ interface FlowStepDotsProps { export function FlowStepDots({ step, total }: FlowStepDotsProps) { return ( -
+
{Array.from({ length: total }, (_, i) => ( -
))} - {step}단계 + {step}단계
) } diff --git a/apps/react/src/shared/ui/key-message-banner.tsx b/apps/react/src/shared/ui/key-message-banner.tsx index c2f63135..07490995 100644 --- a/apps/react/src/shared/ui/key-message-banner.tsx +++ b/apps/react/src/shared/ui/key-message-banner.tsx @@ -1,4 +1,6 @@ -import { Bell, ChevronRight } from 'lucide-react' +import { ChevronRight } from 'lucide-react' + +import BellSvg from '@/assets/icons/bell.svg' interface KeyMessageBannerProps { icon?: React.ReactNode @@ -10,14 +12,14 @@ interface KeyMessageBannerProps { export function KeyMessageBanner({ icon, subtitle, title, onClick }: KeyMessageBannerProps) { return (
- {icon &&
{icon}
} + {icon &&
{icon}
}
- {subtitle && {subtitle}} - {title} + {subtitle && {subtitle}} + {title}
- - +
) } From 11b734318fb59c7e926e09339b195f68a6ff99fe Mon Sep 17 00:00:00 2001 From: hin6150 Date: Tue, 24 Mar 2026 19:50:00 +0900 Subject: [PATCH 43/43] =?UTF-8?q?Feat:=20=ED=8C=8C=ED=8A=B8=EB=84=88=20?= =?UTF-8?q?=EA=B2=B0=EA=B3=BC=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=B0=8F=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=ED=95=84=20=ED=8E=98=EC=9D=B4=EC=A7=80?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=ED=94=8C=EB=A1=9C=EC=9A=B0=20=EB=84=A4?= =?UTF-8?q?=EB=B9=84=EA=B2=8C=EC=9D=B4=EC=85=98=20=EA=B0=9C=EC=84=A0=20(MM?= =?UTF-8?q?-188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../react/src/app/attachment-test/result/partner/page.tsx | 3 ++- apps/react/src/app/my-page/profile/page.tsx | 8 +++++++- apps/react/src/app/partner-attachment-select/page.tsx | 6 +++++- apps/react/src/app/partner-result-preview/page.tsx | 5 ++++- apps/react/src/features/profile/lib/personality-flow.ts | 4 +++- 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/apps/react/src/app/attachment-test/result/partner/page.tsx b/apps/react/src/app/attachment-test/result/partner/page.tsx index 1dff4e91..e81be9bc 100644 --- a/apps/react/src/app/attachment-test/result/partner/page.tsx +++ b/apps/react/src/app/attachment-test/result/partner/page.tsx @@ -24,7 +24,8 @@ export const Route = createFileRoute('/attachment-test/result/partner/')({ function PartnerAttachmentResultPage() { const { userInfo } = useAuth() const { from } = Route.useSearch() - const fromProp = from === 'partner-result-preview' ? 'partner-result-preview' : undefined + const fromProp = + from === 'partner-result-preview' ? 'partner-result-preview' : from === 'my-page' ? 'my-page' : undefined const partnerData = { loveTypeCategory: userInfo.partnerLoveTypeCategory, diff --git a/apps/react/src/app/my-page/profile/page.tsx b/apps/react/src/app/my-page/profile/page.tsx index 95b76aaa..cea2928b 100644 --- a/apps/react/src/app/my-page/profile/page.tsx +++ b/apps/react/src/app/my-page/profile/page.tsx @@ -55,7 +55,13 @@ function ProfileManagementPage() { label="상대 성향" badge={partnerBadgeText ? { text: partnerBadgeText, variant: 'rasberry' } : null} onClick={wrapWithTracking(BUTTON_NAMES.OPEN_PROFILE_PARTNER_MBTI, CATEGORIES.PROFILE, () => - navigate({ to: '/partner-mbti', search: { flow: 'partner-personality', from: 'profile' } }) + navigate({ + to: '/partner-mbti', + search: { + flow: 'partner-personality', + from: userInfo.partnerLoveTypeCategory ? 'profile' : 'profile-result', + }, + }) )} />
diff --git a/apps/react/src/app/partner-attachment-select/page.tsx b/apps/react/src/app/partner-attachment-select/page.tsx index 89461dac..c7c0be22 100644 --- a/apps/react/src/app/partner-attachment-select/page.tsx +++ b/apps/react/src/app/partner-attachment-select/page.tsx @@ -1,4 +1,4 @@ -import { createFileRoute, useNavigate } from '@tanstack/react-router' +import { createFileRoute, useNavigate, useRouter } from '@tanstack/react-router' import { useState } from 'react' import { ATTACHMENT_OPTIONS } from '@/features/attachment' @@ -36,6 +36,7 @@ function PartnerAttachmentSelectPage() { const { userInfo } = useAuth() const { flow, from, next } = usePersonalityFlow() const navigate = useNavigate() + const router = useRouter() const [selectedType, setSelectedType] = useState( ATTACHMENT_OPTIONS.find((o) => o.value === userInfo?.partnerLoveTypeCategory)?.value ?? null ) @@ -79,6 +80,9 @@ function PartnerAttachmentSelectPage() { } else if (from === 'profile') { toast.success('상대 성향이 변경되었어요!') next() + } else if (from === 'profile-result') { + toast.success('상대 성향이 설정되었어요!') + router.history.go(-2) } else { navigate({ to: '/', replace: true }) } diff --git a/apps/react/src/app/partner-result-preview/page.tsx b/apps/react/src/app/partner-result-preview/page.tsx index be4b08cc..d4020306 100644 --- a/apps/react/src/app/partner-result-preview/page.tsx +++ b/apps/react/src/app/partner-result-preview/page.tsx @@ -41,7 +41,10 @@ function PartnerResultPreviewPage() { }) } - navigate({ to: '/chat', replace: true }) + // 현재 히스토리 엔트리 URL을 /로 변경 (라우터에 알리지 않고 브라우저 히스토리만 수정) + // 이렇게 하면 /chat 에서 back 시 / 로 돌아감 (플로우 단계들을 건너뜀) + window.history.replaceState(window.history.state, '', '/') + navigate({ to: '/chat' }) } return ( diff --git a/apps/react/src/features/profile/lib/personality-flow.ts b/apps/react/src/features/profile/lib/personality-flow.ts index 4571e8eb..5d2114a4 100644 --- a/apps/react/src/features/profile/lib/personality-flow.ts +++ b/apps/react/src/features/profile/lib/personality-flow.ts @@ -63,6 +63,8 @@ function navigateNext(navigate: NavigateFn, router: RouterLike, pathname: string if (pathname.startsWith('/partner-attachment-select')) { if (flow === 'full-flow') { navigate({ to: '/partner-result-preview', search: { flow } }) + } else if (from === 'profile-result') { + navigate({ to: '/attachment-test/result/partner', search: { from: 'my-page' }, replace: true }) } else if (from === 'profile') { router.history.go(-2) } else { @@ -94,7 +96,7 @@ function navigateExit(navigate: NavigateFn, router: RouterLike, { from, flow }: if (from === 'profile' || from === 'profile-result') { router.history.back() } else if (from === 'my-page') { - navigate({ to: '/my-page/profile', replace: true }) + router.history.go(-2) } else if (from === 'my-result-preview') { navigate({ to: '/my-result-preview', search: { ...(flow && { flow }) }, replace: true }) } else if (from === 'partner-result-preview') {