From 37b529a0e6e620478b319741be5d004119ce6cbc Mon Sep 17 00:00:00 2001 From: seojun <72855681+junny97@users.noreply.github.com> Date: Fri, 23 May 2025 17:17:56 +0900 Subject: [PATCH 01/16] =?UTF-8?q?docs:=20=EB=A6=AC=EB=93=9C=EB=AF=B8=20?= =?UTF-8?q?=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 1b311c9..6d9633b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ ## Multi-Step-Form 기능 요구사항 +#### [온보딩 Swagger API](https://onboarding-server-idpj.onrender.com/docs) + ### 1. 온보딩 등록 폼 공통 요구사항 From 74327be9251c7eb2ec5386132f2172e6e3737789 Mon Sep 17 00:00:00 2001 From: seojun <72855681+junny97@users.noreply.github.com> Date: Fri, 23 May 2025 21:15:46 +0900 Subject: [PATCH 02/16] =?UTF-8?q?docs:=20=EB=A6=AC=EB=93=9C=EB=AF=B8=20?= =?UTF-8?q?=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6d9633b..4be5f68 100644 --- a/README.md +++ b/README.md @@ -29,12 +29,15 @@ - [ ] 최소 1개 이상 선택해야 다음 단계로 이동 가능 - [ ] 선택된 장르는 시각적으로 구분되어야 함 -#### 4단계: 인생 영화 입력 +#### 4단계: 좋아하는 작품 입력 - [ ] 자유 텍스트 입력 필드 구현 - [ ] 입력값이 있어야 완료 버튼 활성화 - [ ] 완료 시 전체 입력 데이터를 확인할 수 있어야 함 +#### 5단계: 온보딩 결과 페이지 +- [ ] 1 ~ 4 단계에서 사용자가 입력한 정보 데이터를 최종적으로 규합하여 확인할 수 있어야 함 + ### 3.기술적 요구사항 포인트 - [ ] 단계별 컴포넌트 분리 및 재사용 가능한 구조 From 43a9aa74d90ef4ba259e1286a705a51f8de00386 Mon Sep 17 00:00:00 2001 From: junny97 Date: Sat, 31 May 2025 20:48:51 +0900 Subject: [PATCH 03/16] =?UTF-8?q?docs:=20=EB=A6=AC=EB=93=9C=EB=AF=B8=20?= =?UTF-8?q?=EC=8B=9C=EC=97=B0=EC=98=81=EC=83=81=20=EC=97=85=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 ++++++ example-form.gif | Bin 0 -> 201720 bytes 2 files changed, 6 insertions(+) create mode 100644 example-form.gif diff --git a/README.md b/README.md index 4be5f68..692ebe4 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,12 @@ ## Multi-Step-Form 기능 요구사항 + #### [온보딩 Swagger API](https://onboarding-server-idpj.onrender.com/docs) +### 시연영상 +

+ example-form +

### 1. 온보딩 등록 폼 공통 요구사항 - [ ] 4단계로 구성된 프로필 등록 폼 구현 (닉네임 → 성별 → 선호 장르 → 인생 영화 혹은 드라마) @@ -36,6 +41,7 @@ - [ ] 완료 시 전체 입력 데이터를 확인할 수 있어야 함 #### 5단계: 온보딩 결과 페이지 + - [ ] 1 ~ 4 단계에서 사용자가 입력한 정보 데이터를 최종적으로 규합하여 확인할 수 있어야 함 ### 3.기술적 요구사항 포인트 diff --git a/example-form.gif b/example-form.gif new file mode 100644 index 0000000000000000000000000000000000000000..ffe22a5dd4ee2083f34ea9f3504764c908a001d9 GIT binary patch literal 201720 zcmY(qcRbbaA3yv)gEMi=NI3Sfg^xXsJ(H19QAS1)$H+^?1D2^YwbZo~Gs|>T2$AXesm;@V^6P!g4aPFrofk zE@liLiiI1+%Fn`i3d<$T!OhQcLWGT1l#@?@^Q0K}DQP|dv6I3wr-a1?#g&A`WyEEa zB;_<^lr)r7wUyKjm31w(^o;ZL^au1!v<)mp4U_bZt&Ggi7+KnzpRw;hYp-gPS!`ox zY3pcZf5Fb-!Wl<*TSpIv^R6-H&l4}^oV)1B?Rx0odiA`kr_ANq!OI@uHgKh={-*62nz8(@I68b|S^pj2~%{ugHP*}7?CTHLNo||XP z{h-ait9!*5c}0J=aQtfF-Q3%cNADIF-@jjdzqtE;?d{U1jSrhk%S($N*S>ySpIQ0w z{?q5>PoMsNS{+|y^sh0#uhSoHFcvlrKW%(I+SvK9`F(wJ>v;Y%xXWG=>nFIn%=bg&NjG?KYH-4i}Y#io@H0_ z`<{rOpWlx=ebkPMQ$A+FPTzA67eQc{7rR!TgsU+BRgNQCj9%SyNlw`DF@g`QNpq7XsV2kMVEzQ#jjqsK<*hrR-KS17~TK ziK|b^EzdXsW?tu%nafXHmIpH!9~{Q{^y8%30vVZ#8q9mc3w~uUNo9I?de3;)nRoAx z0IsT^Z?sc|CEmv)9XF;VB^Sw1x#M%|XXS)TTlB?W{0Q{3+pB9`#A{EIH zt@}HL%lW872_%4o)6IkX@;Lw~Fp*P^g)0)p^!N8>04P!n?*k1|q7#9HjpF7VpWU3nK4j|BAE(VEyw^M>NB6R5M>D$$bqo{kqAKMJn9+_G)Jxhv=suM zEVH_sOj{0X*knIaXrlSv2=0%2(Ds582Q#xaz7~eXQ%0|_`;8<(u;<9vE3-9m^?DyP z$y7LB$Jb!y6D@60J@@T?H|wQi@%p!V7E8WQMSVL0ph~oz5&n>a<*(HJZ+!jrrOE4T z(%hV&LAWnEeSk&QOt|&R%*00!(y3aGe8!5S4@g)39)v<Oz5QwAN%(w>g6P91_;G;D{7vEa}KwzV@H=swA^O89Q zrA;G!n$y}oEApr85_O;Hl$+%2anUvaM@G;WUv4||>qDGsy*0P%r|wKLGh@NXw+Na( z|Mh$upevKycH;UHkJ@#XsVnad_@LWEA_E;hk@q!IpCDJ+tlZ?I7VFEHKeZ|RaR11W z9Wf-{(n6%)wYG)>`R*c|x7o2&4>p@q!EO71rZ$wF(!wUldO`!S2^iciKcmW^lj4CY zDS%+c0*Ut_J`txyjD}FW@kQ}357s#$mPEL2N56bqbt02n$rWE=O-_$2NPiT7?32h; zPyzi>1R$&FlS(i}B9OlhWChr7k6u~#KBkX|7Ly^&ivu=&GWZv18xJ^4f`sFL&cXZW z%rYtix)q}ze9B1kO0zkzG;w?bQ>jX(?(m!kKo?<M{9L|-DRAOftDk6yY&^2A`=oy zcJbj+RR$vUO3+ilt&a1_?Oa!1rYBS@s#jiw~r&pK^1?Tu|(N`MJ9VqUddN~L2-?dRY2`CVVj|_!=W;R-1I*G z>8ha{@#}JX51k&1FcX*K2Ts0fIpGWMSL$wbBg&;=UYaPxe8e2lYEBi^4T)R#pSN{c zX{Rt<7bga#+vSOH7J^31nDkRqTz6_w|K)jMVd~P1LxQrnl!3L z1y}9>m?UpMQ8bM2!-P9bgb0!R`8nH4#em&oaY~*}MCxDhQ@T}3eLd&EdW9;&9*84z zX7gRVWD?xPbd?iI(NzENHeC96)I>4C7CUbDg&Fd0#V00&S)K(jIC>oal*7hl=t?30 zkZKb80PtTiGVP5np%l}SL>8$A-1y7DtM(<6rA&cESrY}{9h7lQJk!n=S4?>FZ5Dq# zOpU%38{WjV!3scGTbwN3tJWa63P~YIBAf$AyU+sVvB^@BwWA6{{6_e>TXL|g8*0y{ zCmmSHe8J8n5J|*@ucptILh)nbr{)*|{}qFGDFsT01#w8&pTBbyY!Qw}?so#myyou5mx=!fG32Kmw z9N)A(E(C6i6X!a%64}&c=hOfwd!bwM>Cv4|j>_9cQ&Ch{!VL)95P$&{nRR}+RG$U( z(XgG)z6_{;{tHyB!Kvbz!MV%IOt znfdnaYnUoXe93U*_2hfQpuKx7V)VTvRs?_nw47gOe%|A92@=@&?;|<(+iK(pq9{@Q zx_mDP9dZ+lwme*d5BX-emlQp}rQo{v=@J!Nvxb*W$PGl?IyL|2i-uGLCww}!t>o|5 zSn6OQs~yRvNR*$H9j*FwCjlzhzMYvc%jVfQ=j?)?yl}XiC&O(#1E+3y=TX3vi|7{ zwMf7QK$0U^KML-8K%%@|K6Qa|IU#NOavO@_acc2goAz80@tlN6CT9$pgt|*5aIy34bFnlQHlR!%3#n+fquTUH1s5+V}o4e;;;cImW4-Gf9TZ<2v}l96+g zNko!aQIZt_QWtA%9i z0}eJbHm#KtFaP6RBk7XoQoikgOSY`_{epATK?9}G?P0!@(=U2Bop8_AvYJX)4`s(we_Fa;YzygjslNT8_S z6iH79;7qoxvCqSAI_b+UUmkj;))$ZVogO}0acnX4x$LY<{7(#g9GQGKr{W{4B#2xh1*-u_XAtUi zK6j1I>_ad0X@Pj>vPj}hhG~dfGz1>clu1KWoI`1#_-7b+bQ1+B0wSAi&_g@LJxWE; z6+THf`~7(AU0RW_SpLE*34S6n?k7r+BDLEBk8M#u21_Xw{D zu&aJoNAPIg#)H~7_@Faw29HV5m={ofQGBK%G$9iDOrspHSW+y^vUl}l;1-!B18*Iyu`6g{JJtRyR9HmAou0N0K;^QyEmG!N{U=8ADh-{i* z$uSLa^cXX~jJZ#T63G=*zJzTMim_nR1(9Egtl1zmYMt*Z2z4!FAt;*Wo@NVw!biqe zM{crpEkl$zSqkYWN3!RJIy9+;Kb=8AzWxsycixrX?Y;;c?I)FfiwcdLha>nXAQ3l1 z#`KUey^80iZ7^LRbS4<%NM~YCzv)b8TC%xwyWdiuUVkGJiaE*G3skUsWahG0OCFZM z9z$eX9S}fXwLxXlBJ21r8@Ir- zX?2-slpQgn?;Lz`lP!T%ef}h04*-2rZAqZlpLDLdaSPhY!AAs z;^QleqXf_3%Pkqy{I^mtSv-tDX3pmAT~U4!1RE9Ak0n0jx7U}#UH05!i?HcF zzQ#FVj_3f<)g0uDzj7P3RP=pq=CCJ3wTGJYYvir=o213t}S-xjL z1zjH6e}cr$Sw2TamslomyD{m$X*H(z7A`|jU-)~-kmFnyfm=}PFD@c#I#h`S&7}7~d5172hpqxu<2G1n zqUKf$e8U_mNM`OhjWEUj!@QA>I6fZ>P0e}4v;%gFhM5G=4h(+bJqz)`&z;+pBEc4T z=`K_cTMzG!8(PBMxDpv?^s zs7?MED%7z>ChP**e?bBr)h*XH)FXnF=#*I{GtX2Y&EaQGzAFf|X>%q+p69a0(yyn{ zr+~jxzLs)JRCE*YU>87rkUdZb8p($PknN~^lJ$B}Wowcm1 z{QUrw0x~5JG-hbCDdFYLarB?#cruj3BFj*m-iN4nwZH}O7HP{<5EdGUM~cc-iIC9J z%N^BLPo;>6g84_*7?d!T^-WC%d zG7elLGPa9&egwy2C%_kq zHz~(F9mhj)KbRuyPd#7nr*1-Y5}P7JU=4m)K@iaqgz3}#moJ5Lc2Mqev+!xmXWn*r zyhX=H?0uHEcd0QQwitc}S&~98$|mW z4=a}UsfVrNMg;K-?EbBNc{Hc3JEtiFG>a+%O|kv7a4daR=K+K)m7dTNju;dzUnE8* zB0_Piq2Nu^%7rEB$~Xq$!)A72P2Dv6<^)Z#4|nY#SFhh2QEX#m&dIRYisYm zTTVugGfwi=Ql`>c;BagHK>AV+WS%#2g~d8~v;}TSV%BYeD3F*1B>eZ|Hxr2BqthRA z*w}laFZ)^11=^<62S{Ohz5*5M zD+T>?(oE7EIdj}42=<*Che`o(^%LdrAlA_q>^P34<}IbZ1AANPvl^a--9xB@;yn7Y zkW9Q|s*Ffq?%X0Nx~_X6eil?KejV%^yvn-e1KM>2p^7;+m~C0bOwaeVU_oN8+yI(L zhg#y5$@rM_*KfqNPMPgbPk2hih0WNyzk(_477Xq5tf9&EQPJie9j9xlqj!PINh zcKU;EzLZe=TN`_Ar70NNT8@;YpYWmIAp&{Z{BYBUurqjkdP~!XlY1Xjb*T4{YAsln z&lG)<%-u~s1^g(x2X^h92)hOU{pI}P-_WXeIWk$-+|9FY_pN1UKvnXDCpf@?#IQKgA%#rRke>>n}}!kR2~sjP=$YpfjG*S|5=)(P-zQ62Wf|SDlo&Ju|q?9u=f-=^x&!2L7bWAHK zN!vUB9Xm}rp2Q!0NyGK+l*gdVX|CACCz$;>M$a;4Q5yek9KFDX>w<4rIMJ5-6Sx1c z&&0PZYo{Gc-*emePBBhSw?3$x9s1B_b>HYFhd7$6?kq)~yS<3^;S_#16#v5%bFSXL z)*^lEeA}FMpjr#fZ;Q5RTVp9LQI zdaWkh9v-J3*6GLfv@}K7sx@A$INse}Yb@N96wr^^#Gg`UzSnY$FQ>5&24MxH1$&Lt zc!pOyJU>*mF1%L0TpbWz?G`yF*TA);8z=EZn&dv9AL{mkQ95^BM9A!Q4OL6kSt>3f zrFq|9MP4RKpNsvwrHX4{!*uo8+Dq>b_ZlXn^t(12cV{9eCvBTuCi(1ox7uz=7UNc; z4{$6asSmXTwEp~lGp`#p&KKGJ^aZn4+{}52dsS$ck$Z`ojo*b4YkujnS2<*T?!x89 zyophZx9B>%vcV~*I&|T!I$!P11sU^Pd^)Lc{HK^K#b=mwy5XckTWfc9unH@2Yu|3n zv;o8hnTZOGS!(`H3*9j%ROSU+NH=!;u#jz^3$~Q++5KUuILH-Zr8KVc(@JIbT*w*K zccDLDO5RBdvDW<3@zYxS=Um8H-J{)~XNfTGP#Xixf4epeBTk1edjB89Kz0fm)zJt?^~H4cHvrM=l%u%_W7`j0X=*B7fFNM;V!}B z|NU|a&G8Cw4SRRvmutj_GvSxGV}8zuU%q*?_v^_5O2GlK+fKk!HnBXy)u0O#O!i6=bGzMjHw=0j*@TF+IcO|NS-JfHnJ0ku@tln|D89D!v@;>ZCW#P@J&y8JWs}zBF z5A1r+ujA3*k#zQqm%PoSA>~^)E&oz)TCi z5put%jve)%m`yz9iW^MefQU4)N#Lw2wR z7D|Zj=8kbaFyI}rNl~tHXSp6>cxqr!aIX$Az+2GB)qoQ+6!T!uj4%?Du)Sq@#e?(S zflG{S6TJtQm8@NL9jeYgY6G$EC3xo;WiYH_>ohgLlZ(=zjVrY%>u34fMMAI%l zpyS`Dk2OvVZeM!o3ZL%5q;W#g>{aF;Tz7v<*?ig(tCVo4xAeMZfA8>Ioryz(ef2em z2T=}9-VTiy*RDDB9y+w7I5c^R`<;Io<=9c<@W9W@@8bJI$Ly6!&*$iFO{6aBR)+^7j-ta%PO0IJRBSbn=pmK0o2@*j}>c@1t{c zo|fX+Q7L}C=f}AVb2W~gjb7LNT#qg+jJ)c&k$e66_2`R>>yBMLYYzn9SCN;Pow^6b z1A;OyzAMZ%mwoOP5OVLxWm8wp{W>%t^g*=iS8t~tO0sY9qV4-{DNav6i7SNZbkuw= zaO(Zy6&M|O!!hfM*WXO|dAIvdV5IVb2?RR;v?s>oGA>t z44$59hqB^{0DuD_cn~UUquS%vn#5K5kN>>2ym*PD^_%!tCY~bR7iPXMPvHIeIbx&` zN+xnFSGcrSAPdIwUs>SEfo^b7p?IVLDVRMkW>v7opl1;R0o*`ADS!%z+TjZade~wq zohoI27kxdYX6XsTkJPB88dwmJn$O@?Y=JmO)Ud%60YckH05$|FjJov$Us*ti8+A5H z3c-Z4fruQzc($9nVAAw36ppwB!NEfoA@GL?;&)gbRqpRJ62?neizg90dSE4CM<~PHFF0rNE3M+5y;+L<9sKf10abYEavYLKnH!IAW8h^JQTL; zK!`Rmn;(aV_H8mUv<^WC({28*XflyKcqe3?`LBgx-0QdOHUTSQv0KrPA${?)g&J@W zprkSPc3OvF;Q+)Zjtapk0^x_1UlB#bw`z(2;tG+yPu)~=vK4FllnOx+!FIiNI6wkn zbbu=jgsTIHmbz#5no?Q`nkneZ3rMz9bk7WJZl3$51@j(`gksbKC^fL1YzX(f5Tcg zHzr~?0LOw_Nd_Nt2c*jf!deGlL`c=UfnK_SV&0R}Uv;4eeQkySg4ZB}cL=7Qp>EZ~ zjx=EFhWj8}f%c6mBj2Map60md-U1!Ah zHBnq078;$XMoCl#66_8V&Ysh!`LXuaF(K8d2m-(mAYoPx;4nN`5RxVMr++cgxB{09 zp$rpOGeUUdcl>nRup_{D>(zI%o<{Lc53pOG47{<1;RM98Mxu|b;gwtfcA)=^o~q0X zLW{706ky-7=K`f`HUq>g09ZGRZy121!@T;-qo+h>gnG{o`MF^z5k>}(>Xso!K*d~! z1kr$P5uC}eJbP`_=4-DJ31q?p|FVEMSNsKhmJ#ni4}$a^j5@9AR74~Kb;B#Z{ctl7 zL4Q`D-CoGmRx~FoBMWSP(YfFA!t2j~qDulZsD(fRO1DjVN16ZmA&R#hAq$LN9IN@7 z;f72=I}bd(IDy2)-?)%zq^{4v)xDrvffyAdqutbIPAbfKa%vo;Zzg+n$7k*mrRV^A zL_9Bb@&qm(ON6IbfgbeaCoxr*@Nn$HQviU3sVBn;z|Wp|6C(5PF-q(z&I zHSp_z4t}~_TxHsxIQ(K&&b^AmV^@tS!qjFo$;2#4wc z-+!j!NKYlGqec`HM3MNLJi{sV)QjD4VIBpNkB-)P@g)}$B0DxQOsE@z;-n0i7aBdQgiMIdV4pS3#r|} z4@`W*ytD)v81+;v&||7SF}az@ne==L&_<*I7iDbTYtp35X*XI25WZ7U?P|R+03Lz* zHfT=c(jnsD#?JAu1zooHm~;Q^GXaX&ykJ6t%9(>Zq!j*ch!D~N?+le9LuJ(GC2&|< zht8W{Fxt3hP|An`7GS5EMaqKxhStwLnWl;m-9|d#*V`dv>)wl20(D5v+eB2%Xiei| z1Tx_w{k9!%JVIUnMJNJG1baPQ9ME~su4ID z`&#FLRpdRTN$FH8^@}#@OcxfIcBp1?EeY3QGZ@#oHyGALx-nJs*0IomOt1KV)hH_CUxSK~C7oq+ zNnuv+d3Gfkx%?`mC4p0AR2-{wbu{I>bZSP=`;4Qzp=4%}!5+q6OAvXG9jQ1G^ew}r z1)SA#j4?FeQkQ6XDW{vyq4&P&f_kC~C3(sSsG86C`mQh0_)LU;y$RB$gphns{lh&V zdDJV*gE~Ac zqxZpPX6}~jiK~ic0@hs`n;!*vk~FAGkBz}|nux1FXE52`eE1zt2UI{eQ9yO{o+!L) zFV#&)M|N^$ZXDp-$MR9Tc9k#1$PAe(Ro&1}W+<2?3jcw_sTRsHT^}{Et#8=}$=nN=v-{ih1mC-dZ zmYk7k8LgG*rSh-Z0a#ym6aY9Y_s;&YneI`W|9NGWzn#k$Jjw(v_IX|8p}xCVxTp*m zckB5e*KdDGoE7!#-AvZNCFQ@@(5Aq&BfRx()`g8yn9V>GE;+J0>EUfKlH|%2YL-nw zSotQI5;lSzld{f$3Lrd0-p6Q@Y5wn1c0Ae!dmv-(7S8QMr_@+u1O9%P|zxGdpch|iRw1DbykNzsP*8SA86ad=| zj5U89%K|O1ZW+!As;WB72ha-QHIhVDBoME&?@;U=k8wlw)xnpGz$TNLvqUCmYU0i~ zXirSG1OM5dq&=E>`CQ#ftM`Mpu$=b3CTDTrk$2YWBfmcC7bxuux0eO?dZ2HHD1V;aQn# zc{Xo`SYa7>Hm?dtK861S7uq0o&`DnugH}+&3#^4^JeLBUCDZd*(})Z zGn?+f*dl-=(U&N$@3;2Evlc}`#enN#M&EDbKz{`kinq*F73}oVzQdOTBg%E4-M!>L z?*fm;W{tt;tIu}$pFMX0NOI~Z$pAE)a+|B%R;6!MPnT8ExjrIOzypAb7|+T3lhX{s z@YC61-+0BYUXAw+Q8RVnqdwZ^S;GL3fqeki4W`cptx$rX5rHcJ6*d~Qj*Ex60YY&n z!pR`8yt0zde4#Emwt>mw1TvnoYw@ABHY->v`?Zz#gTSNdF!LmIH|RiOh9N=j&5Y@z z#f%4CaNhPW*1ZP9&H&zOo$^?J*qI%h5OKO6P&cn?1hB-E3w3ID#IwH0gWOKL>~%oz z`Xanr!&j7H(!T%kB&bj|-2u9M6l3 zr$}U(5PpT8{UyPYsFEnS=ZmlmLWTr;=-T$G|P9iJ(W;_Ywc@cK!a^yFI-`uv51=+thgCn`)Bkw-@ zy~-J>E*e?-J#wewH&<)qeW57W{BNyKkrij7Hla~paZ%NAhYKEuUr14P4-c(VTXSk7 z8b3s>puS$&M?fe#r}AC5-~F~iTA2D7vJFULF!jA@978GRo8La27=Va&_Rh2w?j zu@8S9eg9K;5JS_8o=!#2DEw{F`&(-kJO3f-RXF-}+~0=mzcod%Z{wmE?|jgUQ-7;I z#L`D&K75E-W@Gs%bUdbT^PT$5)ypw!rs%QSZ}X$w{=P|$?=oDdN$YV-8)_`;mkY&d z$9)SRznKx?S1MNo>;e+FIG!w`*qIQW$h>f~<=f3lToeje`-gnvmq1r0WSr>aVlesT zhgv{t$!x)9@5Si-K!cSmI8_DQwiubVrfqht}&T-mEX#K!WZo!VB@CIzgblze8I zuKtvmEYAv(Vz< z)OY*wPuaH}8qrUV?zS1+&oIf6e!o}4maNu^`=dfmTVaxQdd?y5&p1$A8A?BKR`!dv z-0G;$nsy3ARCC9-6Es#x_LhaPS6Eb z*_14SAVailL_|uQaJst4txx^CMWED*5#FK>nJ}7>M)(1;amvL*kfKkC<7n=Yjk9tP zSqM@f6ej|86qkN1cIQkMoRV%kHss+b3x-W2uR5#S%Hv!Z>Nz4E8X6LJy`)jqdD3=o zW|04Rz@a={c#^vuY$69GMvfUU$n`$_ElF7_zgq+PwS^9H@Rf65<+!z1&z?r6C~j2| zX`Ftgod)UC!G9=w2+b(}E!XJF0swLMsb`taLimpSCT-VD>84s*y!nEWc-@S?1 zPJi2cj#X)t>!1;Wd(!?&glwIk>2W^$R4QTfc|%VdjC)dw)F&DLL0U>S6g(?c@8;avaO- z80+be$y)OMpYY;Y+bf*L$Li~Cm$s)@mmRa**UJsJ|4R=`%}_Hh$>@u!Y0x_A+}e7S zpZlfhU4ZwulQ*)yZ9M*PtaYc)vqP(+7Zw-urRw?3!>)aT`vXIE6`dy4A2G8uk(U1CZB_99SjoGkBZ7qnLkRMcn zw2vraDZqi;M&)Qv0uRq4#W!fc$r(_MOmcAatTUj%1?<)i-(*3x~G)iyl5uHsGb{hn#ql7bXk)1s~>kZkt%#r zC9W`kZsan@osh2E_Y^X2jk(nj?v8PZD`Wnf@UgoS{aodqa--C9UlYILw^b5qdTTEO zrIkz9UPx&4`%XG$D&KqNvJptzvX&Z{b^KN;src}!TI9-X+Fl-3?+7&%H!_h4{VSnA z6*85WrBpt8fndn8MXT0VsR$|cU68&ut>U3_k@@}R?Bd7gZsd+C2^}d5`-YkP;tqG& zEy6op^h|kvF}bVt-7JJ`Rrcu z2kN1@_O)}(gB6XgupYb1-4fTMy}T~}Jt-Sl>d=y}Ddpt~352huw$|86;6ZhSrYW3RpALBaLA zpY3zEJx)l7H=QnUzr8B&`QWi!)74tdS04(bx@F}?g4_MDxho$rNv?jU!*WnY%MiA- z?jgC`JFc~#3&a$?F1gf?%YCVtJ266F62|3R=4~C|4JAX}cb=eS;U6)^A|y`h*7rRI zCmuaDZVFr*mp!b=dyr1kKdDrjqChBObw-jDH*rZ04BtZTGiHNPC2yA`lezt8^GSCI z*f(CO^hS>Msi%GwqE{wEs(av59Jgq(P z$_ieNs?q(gArZLcW%ZcGViP=RGA6sVm|tW z751jh8`jTgNv5=(C1>A+E-97((G32QRe80$*RI=r^FFcEZw3>nC?_TR7~%klAANGM z{*8b6m#sMt?nf7Y0*(yc-a0-I-@X^nFFaWvAX6MaY;a(MGS*747}#n^8P@z{5ixYe09t;f@z$-9TF7uy}OmC7o63` zg!hJUKfETX`40BIHl(hU{`h)hqUXJc;ZKu0*BEwX;PE)N?-lTPgE<-VfJQ)sk+sJ_=^-n4Ko<3!0lt&ISus@goPk; zRH6!L(36V)Kua_;PgKh@L`30{hs#U_h8PP*qOxqcklbxfU12VhaxQCOZpU)&OTs+f zj#BIB=m!)a7P>?mk0#@@1x1x4DwX6#l~pU1bwyQ7DpjmS|8uPT?~{cEHU$fD)TZi zi<&A6K{4Y+BVyDQh2|=&NwG7ps?IElS+B1e42YfGuR41yX2V=_kYL`iI*H_i9OX8Q-t1oSfU*502d@Sz9T;s+n;m%XzE-2w4QR5*m;i+2V zsVi~Cq~?mXgqLHD*Ch#W?;7s_37;@Vjn7R9-;^5PEQzZHHCM|duGQ3BYnJePRO8nt z;XhL2KPhqjRn7G!iGcN*fNhDu{hGjI2@>jjVjcS&RepDOXCmAzR8#5^x z`>Hl}N%H1;?agh;xc%C=V@Z(tpO%CW&r=sKNJx;VOOPids@5gy5|T{nlB@~Ij&;eG z2r1rmDFKAku)5TngtU~pv@F7{g1TE}g!G!a^kzcFqq>Yf!tIf|+mnRMS9O_7gskFIK387qj%xiKU8y{i`aEl?e8>9yOHu{i^#uV^ zg<HYF>Wi|Z?iSSFEt4v)sV{DpDtT02(kE3qQeQeLb?;UEy(Ou#_4=}Hsr&o& z_m8D0%ncM)>2jWiazW_|iG~V!=}OgxN?qwHlZGm5>1xM@>Pyl!-VHSY(zRg?wKt{f zQX1;Ar0WYB>dT}XY8o1vr5hhLH14KuyNjr zz?J_`DX6Z&N>8Iy>fM8)u<##j>w5RpV(I>LHg4Mgs}yXY-FuGWHVSqrAdBkPie;Q^ z`kh^QA>Qoq|CE9OgI!Dl*wsyL_jou{Ag|Fol|X$XA5O+>Nx*7yJn#P7dsdHwT?JV8 zIBsi^^6lc21ndOTik78n6%A9Zo=4$(Y70Ea%X)u;REQxYq#EbuhK|2_{E^!^fO73l z{RxALmroyuB*H7=tm}@1kn!H!!K&(iKJX_LNnjabv=Zq4Cw#k)9oH=Wz)YJc~mP#nj0C0__sm@>!1x&<9WSD=V6Gg8yN;{ zTmW7__OD@93ZbU1!gTy^yOk>A6rCChV!YY|1NS&O-*!8Bt zuSj(W>MNb%!kQiF{GLr_#OUK>jKa3O5)fi(I(csL>AjYASQ2H}}?);~3*_Aw_t@ZkbNFK8HT7dqBiqW*F z!VSw&y}%GDvV*|ijSrx_s93u`p2RROBEYh!HhIu*vFw7@exXo<3S5V}*XgGe+{dpD zyR_^g0i)k-SK+3qX6j4b)5PpMq4$WCb6G#m=IS|3=sjd48W{eL%~LlJI=+L#yq1ol zp==DfeD$l<57=r8*ydKsVmjrF4eZ%gt&$PShmF)BU&`MhUsR>lLdoMIhObCyUT z^+S$vW5h#cBgIa6+E1jpJVS2~y_@#^KubE@@RU1BpGz2-xM+<}xMlVYIiQzT&ZYv5 zhp$<;_U3F}Gc7kXYvIU!lHeRDoD!0D+Jkc-ZjRL!s-dr`dXT;GUwtS?|2sVsig-fP zN~rYd3w6P*kOVqw09?b>h_U$kPBGn@WGQThYdY7T6w_>b)gD<1_a#e6u!vlyd@v}c z%kiS&@VhM+jpiiDEWXnOq(+H;nmSp+P9mKhK}?m zy(EB0mnKbAnhJ=Dic&;LsG*16I|9W-((9^}gpy*BjdAI~^BC_sRVjDmG1a#+6?Y8w=p zB=%3_D}H}%6j5YWp!>ea`g@V(P?33E|NAoU@5Q#@V#^-g$;y=PB~Av#)>HkHwT<6P z-G+2+R9U7PXP=h1w-n!ODC#8`WW=0~KAS`RgG4c(Dg1^)FUNNUb}A;6Xn49Byylwe zxBgL?#K5E~H83;m{i7-iT}2DQn(~NJ*SmTjX7RH>YU_te zA9xIWm_PYZ*9tCk3)Y)kVm++yH7I+WI54-Sc-Vl8D045+`?zI&*f>2@_N;E;rq8V_4`Bi{I|>wP+zJ$!pK^ycN^z^C(*!*>8kIf`6= zftc;66=YcM$27P=rgYQ>jVuok&|jpye$>u9Tpq;X7fJH-ssdPfhlt}bnvD9kXhpIU z(%YB{Jw49FW4o+Tc5DHHqB1KLL4{&D`hjWn_wh%Pnk5n_cDl}+q{av;HtrQ)iE*y0 z=fUt%-CX~|QTTfW0FmM>))wpFZ@k2S-0si^Vyxh`(b$`=X22JGdH8-&_EzHjG$^lt zqne%=hWw03-w)_qqV={nWcvtqOF@&bLJ5<~)ZRX;$&17H0yK7>-06WVsB^9L#WUr^ za8EzxBJtcqU@K91+Zf}!?jYimqQ=T^rd(Y}5HQZ2KLkg`-K;^2TG`+aGx?LhK@9hNhE{ssZ!p-WF*8Qm6 z;UTG!G1tG*h%g6uAKLWZU2w|v)5gpLD|CD4D)SvWBDr{;)7+EEx`y3i=k?}49?bb< z6L-^k5l!{+n)<;v{tTn6x#u^$)axyA=<+7G=G|UO$ZYIYrabjxXjDL&ShN8Z@D+*V z!7V01_XvzTod430j?8`h}IJKY|$S*IPab zy}t_v{n=bVOk_wzOvuFpKx70ya>fMxZ}*Wb01ikZXs`b1;( zg{Xs@gl>hZ{Gn9&Kf4tuIsWWcFk46E|A*ZQm*gM*({6<(seCm*N%E7^CK-uO9S&eB zUiNDht(7DkJQ?~7mA1t(8l=q!^jWC#zJE<%Jqzy-0zk zI~3DtYurkfrXanzWl(L=ZrfR^PV4yr9%^dh0SixP_8wcquOZ2@6`f%S;B5>(Q|W{E z^lfWoU0@tnrC0G7#hR98`7`5f@|l)T59tGuG>IDs++#HbQ>-9~7Xs`1u!|q$YY}1& zeQ3fWKcfJZWng|8&!TxH2)^Y`>`oFL`w?*jj6_wO(Z55YyTc6*wk_m5@cQW4FuIS}2-mV;!{k&a;(-QttJz;+DOU?A1;xDyx&pv;t zTL>aBrj>+y1jdwKywkW{`+28nw_EsY^TFi3uPsMw#eXuU-Buuz>uwuJ;4h46uan-w zb+3#0ZpmIZyT|rk4?I}pTQ6^->$g6^f|5!tqLSt@f9jfTDRpK@Tq-emQMpQkN&?t6 zj36(i2dFb~#L<8`Y^$|^BBfZ$5_!?@6J{3ozrVMqUl?1;D*bgcvH=Azr+V8n}zoXNxq|r<&)3lJz}TZ)l&~nztpdn zo$fRr?wo#YB^N*2?PPj*wpUZNgO$lVBhq4V)D-`DFk$iV=lAKmZ+`xm^Z5Gna3NUy z{AeZd;ra1K!JC&qo`(}hs2`x(fiyaCcKDx1>u>PqXNO-2MJd!-0CMeCV%A+0NI#31 zskfC(aTg8HCx*pHgnB!Y!8G9{7mFUzJcobvhf`;Ru4uQ@rtAg?@^UH{At^6SEI_|Y zfCMqnV3+#Hrw6^+5Rcvt&Xe6>1a%G+AFSQU&ANxt*3Y3$?Cs=N+zT-Z&!G>*(71Hk zfl_-H5jkxEQq$#}N4T5`_YE4CEH29T65#@#2+FCDQ5OaFE*fo^7W#}R!gel2tvotF z-O>ndYt*5#Re$MOoE`NKP&ms3R-4l}f-~5aSA}s#y9`Mittdmn&!JGG^I$ACevVa8 zx+GvUSr+W zpQL|uU6(5+c%5^eWPB)DSAZ?y4c&5L(hqqH`Ue&C&PjxvQ7+&lKQpKIYcL&A2r;EI?`zx{SA?py1b=QJ z5yxJ3kI62aUhXIPr5r?%jLXo46@Uh98B*K3w*orB9R8k+2dn@^({u8IR3XMBQsI8A zd)nE5GNyYfOGJ^zC^RT~7k-t(gvJEX1~Ni)oc!pYdVBKy4GLUhORhJ4a5t$ngiW)RFTR#;W zTzS`)xRVS*o%JV%={zRtBvSVO8-^)ekkJhKTR)IWUshIl2q^z|KafT4`P;wt1IY@i z1hCMLIsfhll0zs)g zv=Z~c<2D@%(v4 z<*5C2QmkI4YR!)}is>rTPs1t#P_!6LC|;|#tm$}PlLEwhB@*s%u)7=_r(7=koJ&zpDP*4M@!*yJ4egdD`LkhaTX7bSCj6R z9j~Q%>>RIW1&f_*$e)tztChD_)@~Mvb9HUyGaYoZm1n9x|57<#Ci|H*J^T4=Go4IN ze^V~8rUY@kG&$MLuaScQI0&doA~0Cfq*e$3=!gN*xO)euPI)eqFy!rCWp$p&FeD{s z-XCGv48~Is13h1m?X{koMiQGW5E0r8S})A%_xO?JEni?@M$^BPYrRShrz5r_C4~Yo z?;Ch{fEDUz-|i}rWr%u`MEfzgUBOO7?*s_yXH#1Awlg;F21?m0 zrA}RvKK0>Z{Jc!on%eX)L~tY4yyfp8l}OrT+|0i@9BBN}}{ zJ93$%kra41;QmSsQ8k#Vyk@&lyNcU5qgFHetp067!rRd(kVzbPwsZrL4<) ze6=0G@zkq=GZ&-!l@17h7I&Bu}dJO07ABKe#YlK zEb>mb#Vr-EVXUTf{FWq;Ih}rvdUZJKPzQKL5X%9ednGia4r4PO^>gB;3ETBI`shY& z;Mf+t)B6fp+1l$oXG{LY%#R(}Xdpi`kwijtm-ey_R&#EVnct{e>E%VN$2L5se7a5E z2jj0z8vwha&5e|(@aF+7mdUtvi9gGV@N4xWX;s$d)?Wy97V#qyH{iCsQK1nwk1WfV zK|*|y(@{%+Y~o`=rrnGD_BIX}&Q1a;cB2kHS6ot0gQGGFnFo}HNelc zfjyr3v%PE!;VF4qlFEmn3ROWBDe1kn6*!DXqnVw!sOf4j97z|=sOua zpOUCwY9pczudF0x*-;BU{e(uvWj&O-$IRG<(VS>|<$-#D!Y_u31fYRad~M8CZovD^ zJelHw0*^!3gPJJYz?WpTg{{vtj}5(IUU~*Yd3~_FCvL3lm^_-gW>7=fA|4b5D!cr_ zMpFyK)xfXq0DmR{ro{oW@6~r$v%tu{Hu{m>YjJ^dUcXBlz(rlkSM6~f>F?`UAGeJ9 z0{!Z;$#bUO6d<~)=BV%RoxcP40Fajk;s{daRi`WU?8&Xuy^Ee>Y_d-4hB-llZoM@v zU6$__54eA`WlR0dD<5(mXcGozu&?$wJKz@oBla)}G;M|_Rs?6u`nc5pdGx7+ z2;EA~Jl}zu;O7~a^%D^HuzJ!Jn~h833+>_5n%QBVG$NoOPe-;Bju$?uJO#PmUh>AX&x{PhQ%*7&lJs>U5h)fzQzqTO1&-rt6yJT4M~( z2~U$Kyk~t~k6-mnqb*67JP2NEn1jCk^}Uj{V#d0mv;~w{%*Iz@9`=#&xG&r?Hy7T} zN->2WiMmF8q|{nLPQliJ71!G+j-@;dC-8MYoEL(4+b`9X;qK#m;?KX@HxZ4h+W4o4 zszRUU8Pb8*o^vjI`i2%{>QOD-PQG-bQ)AudfV2(7fgni<@=UC`!|z7EHboS2+xum$ zo8g_Osz5gxfKKoG=bArI4{#P+cc5KeptLNC6abYu^lF~tE%P<95q@CjHMC&xZB(6r zhtb13-C9W5m(Q>1mMvTd@Y^;?lHW5TuX{@VdFA#vz_6E|jD3O3154hkY2+JtTk4SN zDOo7pQ5xsNC^ zQ51&b&|?|Mcosz%G&FmIJf|K6j38xKQIvzM zEEvM91Pp*&7M;K_nSAOHIfw_;f>FT2mpRPS9OD@ST6BC=CwRXvo^(1X!iw-$ky060 zlB1!KPs^{~H1q$QZ%!TUnjsHH%inejFs9-Hb6tX#Vo8JJf~|s}x(iPvwR{M+hm&FumVmzCG; zXPP~$o)pH>ZSpa}QZdYZG4|OpvdCyzv)I%QMR|O3tYSl~@=UBMixT;Mthz#+WDoM6C`_*f^N*fjCJSE46HqIW~$lbOVq&WS{HNxlk%@~0#_uOw}q z#L&KY)J&4vO#BWUtltK0b4yN2PR65@lV_3>`=A3x5Zhz%d{an^TT06URZ&Aq$!k`! ziWK}pO6g2Wg+gl83{@|J#<5TQBvzLRot(OvoUsY5Z%92|qUl{or5{ahyO@@#llB!R zv9SOfp`eu`kyypST6LfwX40U>)FiR#viLsnQ5LyX3b}PJ`d%K1&0|>YW(rM32GKIO zzX4i%5!zHv1tWNhBhq?z3987d{~R|C5sBsTjR zE45BhO4}}(0fLIko5}!1%9--&)>f`%fBxI@S2v2Xiz)IgcQZMyDGi`NXA}t2nui2X zvi9dEI=|XK&bMMMut~|jhxbnQ!~tKj77UkD5qh95QG%FR!QDpG0khc`X2sPSb3+vi z?rmjzwidXTQzn)dWnn3bQz%Lsi%N{BBZP8-tg|peMUVRnllpR88mW_^Km&=APU{jR zfMUR?c-X5LPg_(gRM3=_%h5>n7MsVhMRlx@Izv#9PF}Ah7mq0BxueJlNe!tJ5GpJG z9wq1&igf3sOs2o|<5qsa7F9QZ@{%q&3Jwb0B|N^;qGM8nT@dhkxg`$xt+8ajQGB>R zpQi&EAai+G>V$5bg&RbLaz52UR5 zUQ~V5UakGSX5agjWmApmhYFk1nu~fhhxRqLO*QIluyGw|+#^W0muS9Kt=sii3$J14 z*jn<@+Q}G*CR?2)TLGJK9g+v?8dmrIakURs?OPltlbxb-7;+yA^Vh2%e++s4yk7Kk zUD!Z9@nStTEcVk9SdFbQN2xKliP~}*DnCgP{s4tDE*3b#@=w^EC=o)*7d_|QtL+(ys-mL|LvX4A&n+{SLxOiJCx z!QRfT+#cZ7#uV4ao7OJW+^*}~PBGXn!QLU2)^s7fP1>hJp1MOUyj@|gLv^rK>8wLt zxf5a2A)w!>oz{88)~P$!X=w9yb+--ghBQ9wH23M6{0uQpd&`^#u{`UtRc_uW?@D$@ zZW?vjrFFZoCt0UKn1HMx8_4_uGvx$p{cblOq{Ftp$5{_*J1*7=vftFR0&$H>z_vtT8>o02V zFPZBvJL@lJAE;CwsJ0oX^%npVOHb=NrIMci3~>n@QU&v*+(4YCl1OnN~aMH-Wy|U;Sf;zTMF2qNIFF9=a>Y?xRlDcjK_^} z*%#yT>EntmC!Uk`f>8X&q+6qsmCf)?l<1&Qox?3 zPkFaY`Fxyu`Ev@D{+d(24WCV z4OA8KT>F%mitwilw0v#bl}+fE=9qp$=$Gac2irWxLMDnWd2$f-x|)-3Y#C0fLU%Q% ztDL}h^r8v<(&!p8VlTbAFP-^M_lX0mp>O8jp-8BH=|_tl7&_sbgTM46ERSA>{xAI~ zN%|f^KdM?E$b`zz^{2XE*i6um zdSiue4L3LJuj6v{G7VcAzki;ty7y_grRnhNuYTzZSKl@t?{AD3-x_(_a!PQG3}jw? z_x9)M(f;R8Bk%sLe#Bq6;72XHvEUE=Kdm3-`|Zf&j9rnguz--R)301j`~0e^&DgCm z5klre>0XeDnhh!N_9YV<&)(#75zO8kbYIWaGhU@jg>n}9d#4Cw zrPy0vEP~%}bjkB8!k;*21Cv8HGNNidB7sjQg|@u*Wu&6t-23YcL?mE*W2|3%7E`k+ zEyZUB5&6o#GAx5{eXOruODi*^^sc&c<4u^DnOFs=CDo;PyIXgs38qp-2Dt*_0#ewa z?m9BN+##49bs8~G zsbGahI|qK8N~E;fqz6*E65RzMURST=KVPB!1`9jdhwy|*(1OVAB#0mP6Z4q_>u)U( z`ZYK_L{hY=o=&HCfwyY)zUCL@&#pIS)2fIsuQGnAFM(Z@#L~*JcO1y~Y(qVf@@|jU zm6Vbo18VxggVp?3>MJp9y!z6^0x7LIeLLmb5|9syPukIJ*!3GdoAPJNWP9gMW9{`} zV)n%Cu@^YDmVVs4rJNSa_S5Nm*&Uf-4yA3|nvILgA^yS-PCIJViVJLlDOT~h2TElV zs*pY}z%YhCh0ZVQTrxr;3GSYCXuntM0BrFvSPDHXdO9uoN%Q&Ke_$BZp@Q0 z^=J)vNdznub5^hmw0rZdaP*Y>(f;rZ5Mf^gnVb4`fz(O%8@MCNp(|=JYoS_V?F`Fq zffTJ>omXO7X=3tjeCW;&ad35EO*10X&PS8bxv8_ggCm)5OGR?9qv;}D?Z>t1yO&rZ z9)F>9TM}vKCoz|ui^kb}wk9(0 zq(qagpY(8O@4m4cvt|FNe@)o8;`M~60h?WKrdWd9YY$B~BfI)J*29Jo#TcW+x`|C| z-w+rdJCWO!77gZ=hStllcskUL8=R3i!#biz&PS;$#J)s2zV5K%``5G7;GWvq8G41w zMtn*v(ZLdK@Dx)%G+R4mb;=##vVt#go8>Jbxp{hSI9o5|tabWU)%0ZT3yxlv8;`ED z-xQ6Ab;!}Ai0L*z+Ii8+w?K5ezwl8>tY@iZfcwt{@=e3UVgY*A-0IX))jgAf4=-}l zYdv6C>K{=XUzXwIQed@nNh&L&_6_JaDt5t%n*;^r=0{m)^kkA`8b4qj?>~1mbV`I;xLyga zu5V`?7PT}wqiuZ53;*95tmptP5|IGt39w89`1z+XQiS=x5?6HzxZ3hharMI3>H43z zn%f%k2d?I|djZD@Y>2S8A!77zxEfvqyeX8lc5CDpu0E}gU1<1?t4F_Zm0cL@`q=Fk zu5x7{dMSV5D&1IBsL?N6rSjGw;OcdB9odPep4@L-osBEn4f}t%`X71=SolTCC+Y$i z_PzE;*dDefYG1&cVME|Avk!InA`m&+;`nlGyBbuvUBG(>0Y!q~Ht={FxidN<-hcxy zPGA6GWKW%-UMc7eRyM(bvu-LDdF_}jAnC*r_!tZj1cYrBt=0$;bC{S_4hnH^Kwa`T z?wG!NzXKn!MOr~;f zjAO~8Za-W0#FW2!3)r*NmYt*{)hJt}e+ith=}3^ z-UIb={amO>4{t#DTe6l|J>gPzhkYqCfjGSh5J$R<*12s?CqxG41{9F6cp*y>28z?8 zT0S$aR$KKkF&-uUh=1`!a_2x~Xdysv`6^@hQLZ$u!FEh<#7VW!g+?&qLoUG zx#g>K24#Ax?fv-4E}jpFm!UpVLY{v5s7Kj<*VC z$o(`pM0pLBA+h^&VJr9Fv|-j#B-&WrvH}`g9LUR{n6qzg{)*I&4f<>bUTgTS?+0_s$xP7JC~!X}S#-(5k^& zZ|^jVvKqzPwh`5imOF(=poQ}*KoDMuyFErrgXa}NN)sgy&wB$YUJ^<3&A)k0%#|bT zZGQRo;2^M&jiB^nr9tP*OgGO0=}4ElA7$-bn3X`zF%z}nz?yU(ZX`4x7lLlNErDd7 zlS4AJp?sb9SxwTCha%A=rOp8`Z}&j{pQvtO$O_B&G74HK7m0IT=C~X-3)9BFc#iu3i$A63Q@be=4(axXQ0ZQ!O>ruSpB zS;XtyILT$$T3J#%!}N>Pw$gls5=$SOSEpn@W@S%WRa1bpZTcOl(%=_3_XgD`(FF?dGP*5zx38TIQGoPivI2fW$4@G6xk*=_8t%p$mu}d zFIXtN<7SyArhe~I2Xan!uA6RakK>mL?_xgV8@^n{_1@XrSq}SXt}W)VgXT-7w)f@| z+%!Qi1OzH)DGjTc`j{6BmngSdd<*>zQY6;6zhTKYNTc7x*+^)FF}6yon&G2{UR->{ zpr@hbjv{k=CJHgxp7V8j59ZLeb+{@tYnm{1C-D{0-0rM{8r>|oj&4=jd1(WA;-KoOHTp4%_sR$J7p0opVei2@zz4$5Hwmjp=xUs5)SNe(^Ihy=peywk zXjRST#HvW39wb63IQo6(;qP0pj({R!Ru)(Am^yg6)HRD$QfF-h`T2U3^}Ipb3Al&)RpI1hgG zPG>og*!eQ!aQ9AukS0aAa_%U>{aJEQdk;h!bt6%d`Eme9gt+2X$Pe!p6y=KU1sh7CL;{QqrWg#HIxp zIbe|p39dE@1T%Md))lNhtM9?trcdl+_+^eJBcw>rXfA>gB4jo#(SGAX2tBCriQK~s zgjwdZpFCL@oLai=&vX(L`FfhI=a>)p134n-$-R+6zG=)hDRlE$(RT~Tdr&3b@0um9 zCp}({_!I%C)Xy?hXFzEq&%Q>)X<>md+PK0owtkQXo(hF4-ar$|t8%14g%%t zCyM;%Rvag{`FHO0e_7S_hZTqZXZBxKb&Yc%Q)T{PCuLGREs*;As;-!X)+?kVXQ%De zzgKnLDK&%U5-1;GRo6Weq2H^zYP_8nV*K4Fe+O{%=s^}C<-e>r@1Q@sE_)LHl2VB7 z>P7#OQtsUY1Bri0DHftBUB9H17%bz1bN&BOQp*38cG8LyQ#17)8T-*@MsYKOMAUmd zQi(%&Wti+{O)7!Z+QPN_C?fok{i`ocba=3WV*_d;5?Vx@5>)hl+`w$<{f58M+ty$7 z)|3dxgx8=U&Sf!>Zh%6UXjB+am;I>;Qo$u;1E72gVV(P-mB;S7k3aQ!61Yl<*%j5w z=6V5tzf6h26W2+F<>e+Kj+?m=C&MPVFvJ5G$>I*=$AgI& zM0g1PQrA{p*_WxO&*sj7$l8yat`e;*@)Y#cR7A~0>b>jg01spP5yPkAV{rOGDK@~Z zG9|F>gDxK4I8bFzSMDyH@Frvp2W8=ph~o*=bl5C_4&+Eg~=P| z&`lTBleVsrY&FRI#WZ`sQBV}N)fe$YGM608ubusR$W`_reIa~Vi7&-C^1L@<*|ktd zMfa+QiFD>`>UB}JWFwy#vjkG`hC#H|aMG|@dhWz4RdE;7e8@p$o6JSNCnu&!W737{ zU+!MJA9~HcY%E2Z!zm(d)|fN@AQ#{HT9>Y2EHCAIsoko8@@1?3{Dk)<;tT>}mm7zY zVro)8Io^{rPBGJNk1r#;U2u!VTQ6>>FfSs$SWB{Rv~@DB5M-dOC#rPKKzBc*c4gZz zd4}Q67u8YM6uRk$dP?%3HTcf}j<`qEhKMtY80J6i|Ca!cH@Rep9oE9C z4ole110`2I`ZIuomxDMaX)5pBE4hiXqw&G{{~5s94SWv`@s{wkJOBi+aF;C7rXF=N zY59w)iikK=b3p_nE5h~IDQVa~GoGebM0$uUs!uOl%JWM`1&1$P_{2=D&R-cL?Yd%5 z>eXjdE5Uw%bF^1c=(n8gh$~hu5x&dPf1OM!CSG|}{9bauz2Ub=upNf7V-Y{(_HsYG z!^iQ`UFKnj!g7f+q@6syAN?C>ki<=7sQR>3hx@Z{Ne0y9I)lVa*r00O19-R#wtjTV z>B=PxlG+88%Ni{&6GV4^^>QLJqzZR%$@~SOr)PGIuFReHXyB8!5y_+=|IV zW$4eJ;;&v;1Y4StOgkY+E>IeSU0UU*oXYk?jBi9Bfgh$HA^Zb0kYG>fG6VVnxxCii zw)2(iqdCv2-jtT!b(>yd2t@g_9+ijKxy>@>G6R{b!S}_e1_oNno;C1^gkPoNq0fVN z@ykkv1}XW_zX8=W{NxZpee(LKo>3`LC<&6ms*h)MlgVpwMn-oy(4XN|zc=Wm@2I|E z>ps79(0z!zr9op4_3iZso z)5`*{*=%TaR+~YnwtM5Ix07sr&w1z_|MXGePc!TLDknfyg!u9*Wi`E zAPu%J$v!84s7LFG#h(OHeHjJaZr+16Sj5nJBjEs2e27KNRc;r zOogu2quCZACKxFF%0&z90M_h4Q$gsaQDEM;z$-~G>kWp>NE*iMz7;c3aUaJ^> zuNcAP7@>w3k(n5=;}{8+SSf{A8LQX>45S-BtqK){!V05zVj&2YxL;Nrt2iyMUsfF5 zhB$qK73Vn4h$Y@cA>Pa?-rOtRGCAJbDqeLnQi&ppW&^U1i+8k2xZ{;T@Zq=+d^j@+ z1RstY!H1)e=x&wxjNrpbPV~HpR@Ol~yiP>1B>541I95qPUP+kbq)_JslD0%9XY^iu zQj9`!oK+yIx+1yIg2GFMoX_3d#gjdp6QLRzO)TDMnPZ*p3{b4q(d+VF82jwO9eA$@!%ZNe*k zIyrr|A$`sYJvo!Uz>=|4ppdb0G4+#G#zu0+Rzt?BSH|{n#x6_dH>R?k=(|*#N>A*e;HsWXluAzz*Sb?^HANXWm!^ z-V*vBI|lx5e|IT+#3QHwH6`4%*7L9PGV~jh$u7zK?nx=2RI&xDctsNwgCZSHr#;ZO; z`s!pE0<_$&q!f0_H5e_V1M$j|GG)QrLGI&UB9x5%bh(jj2Mw!F4k~t1Qv?Ef*M7$c@_t9*3d&BlO6qq0eH3oWY~&wN zIOSc`P3~Y8$E?M(ecYAbQMf2Fmf+qo0Xoe%<3J{}fPX~cOczP%HK>V4u6nGs16j<% zCAFCTjKZC;`NNJ-1zxypYO`tL^Rm|8Q8;LL7EoXsan{xbdV{)^o@5j#W`m~sOB9Ze zzJr1Ck-#-*HsuA)-!TH(n?w-Sv{9TXDr5tq%rAQE3uZU?f1<52WqXR4_vKimWw~JL01-RP!GreHe;*N|Cx)JWc-T)w% z$Kb*Y-H1W^y@8h|%Of7;EK%=kYYX`7vVLLiAio9*HUcfPPC+r8^wSy$!@USWvqd#G zB-D<1iE^qwn6Lwr9vVapXucb*LQQNMUVNBDOj-KQLxHv+rYCq4O+v( zAe9L>HCdbG_-opC7>;adJPX_WjRO3kuPpWSGoXnDa~cetb%By*xtvb*x0v4ckqaUg zDYS5eHJfNMQFpGC@xdiVV~oM`Z9CBQ-u0gWR(Mh#L6gLztRRViy&>#{n8WX5ux&Is#lI0 zmv*ytbwC016c;-gbtyYzO{%gdoB8w(7f3U1E~Yv%`-y!qrty*g{@UynQZ&GoZf&Vvt|mlo`z z-kvaUP9QoMs{vQz8jWA6#|PLHKLXpie!HN}A;LCmhx2PCNu!KgWq30?$@-v;>SiJF zX%HarAtht}7XUepORM!HElJvr$oAC_D>%9h7p~0X?JY)qVXOZ0Wd;`d-rFBu<7!xC zu}D&Tyr*7&vMPh;kpwx*gv;DaXkCOTQzPm_ zo6BPDgy`2t;vtqihB5&bN4KbNhh398kqb#v`Rd!(Yc$L6(W))7`;;c!mM3PSxwrJ8 zKL@+50w1!SZYP@(yr=uQvXA;E&Nb*cX21&6+2P9Sr+Ha^$Df8 ze`_tFos! z!IroT<-w0N+6)-IK?st_oflt$Wwwf$k;=KB(Nr=HilqY{6g5by3npC=O8dS`;S?Os z^jJ%@{N816P(<_F>(TqIqGAJX;ib4k!~jT*rlcpWp;f3uZy+CYXF;X-)-82&!DNBG z(CerxnlCZRRo1}{j7!(wSt`25XzDCC=hPRTMp`_JGJme7I(UA5nF((A39KEDzQSc0 zYj}F`2zm=*@4;#TQ{`n;_crS_M*R6;jR>sb7J%yCu?p>|`SxHaA)NR}z@9GyQRt8r z$y7jlGN4`QsBR9__`_V5DB;jwB4}^-IzpPDh$dIWv_~uZtBd6ChU0R{9?`o0c*tpz z7?7cxu3Ph45&a!bocgVZ>ec?!fcNEhj56zJ5E9Q2Po?gWlrN{KZHo+$gLw@u6My-NxukW4&@{k93rFi+y?=k zP%GSq-O^snPrWrb{>sYpOe0GA1+!6`6hNJ}m8`g)WI+JR8<3aiNHClM?t;8+B}4$Y zo-Cp?A`oZN(r6Ex0Kb>H_?RYzt@!*|Qac4fye}$Z!+g6M>KyV?XiI(5(>g(EJ*{K4 ztSM)IB!FU8can{O{cVJRebWFflPjvN3a8$LB*i?q?T8$}RSwjW-fz-Ve5Fj>SHBW- zy^n{fyeg-JhbR?W?ogq`%l`s2*3)t{uh+|7p27DfiU9y81nj9?QH|&4RB(Pj_!6O# zh$^SI<_0P7&sXvmK$wW}w;5#Zcc`}<-u9S`Lie+DL3W42Lu`YdJd^=NuZMCXY!2r} zT7v0Ig)YbN3i;CE1GPa^L>PJj`+VkT?i;$HCFj|X%}baoGrN=_C6^cdMsu0rKHogh z+$tXPdACz_FQqC4kUWR!8xwVqQrot1wiu!9%dS;F8&%|UVGynV6}r!H~VfX z>sBq<`F{rMVTTx|3rF9{na`gUrx(%$&9qY8Nr@1wf8=)%^PKvBuaM&wA?lm~p!s)S z)ZTI~b#KVuzo?M)q3a-6?jQ7j+IXQm^jxdRrtcd(BZ2Tm1#Y4z-^Bv2`nU^7khaB1 z6H>%Z;|oFPOm#)J{1vq>s7TJ|+S47iftSS`Ex!*8;4uY(@)r-+dc?{xIjj2Sxh)c|^ev-hbLCPN4a=d->T9j;#HG_`9{Zi(3{|R0%H2DhD%t?mwn6#WtarLp zLS_im`r142Wqr!Q!0}HFCa?02_h$vhmHkXY=FhmNKBsDee^RLQ9DY*pVDrO>Zaf@D zQPR_z79vn(tr)x^{LF*QU;6HVlpfFKdm)t;sMDw)U*lvT_dyY3NdOlR1Z9&AXvOu~ zWqzoCMD@7$Iv1B_fG7E1j?I5D_WTzg$pW~DtO4wQCsubK{@Y4I0{%;KsrVlW5y}aS z7rG+hzs==;7VPN7pWDj@kbYk6PdaC{uCS-e*AIF)e{e7(v0)U;m2h_2fZG_2(M=X| zKQUXu6e@h0(ATbU(eR)&rEYGN5%5zr4fKuxQK4GX$W!BfS|E*PYiK1Ej5Zv^NSkcl zFWsmgux$wNlUO{vLiFW|{|$1BGz}-oKrIhGwK#PyyH806f?1w~!air@vrlQGXGXh7 z5&6yIU96q|7cjHzndy-CVsnsXSlP~fiSgF7Tf7t2Z+)18D&3e~J~CjpyFkHIdAA2) zH*6F1B*@~D9A-ST$!lYLBzOIdO%B0ae&{SiJaXi}y1za`nnf^|pU-$)@H*LCzsZf^ zEzI%@U3jGT7bf*D9x@srM3}PE5gu~f?|0E{A;u4c*U`h^IDlp^2wk<`*K9h7asWD= zKwCSc2T0fX?C>>G*7pJ!6KDC&u|J-dL0dxym);+p={UwN|CL`a9sle{z%hkiQ~GM& zjB+3y0Lv|+ZtH|?=O45|_|YHxt&bMDYFv>zV=`Y-^LAQ)oqjm-5nu%Cp)4sEjxrqWzr_C)djG}W;734Z$nUC+qCdV*a|q{h5agg|37jGQ1b$?CH1df;m}cE5 zsStN7RGjA2DC^27k2Z!)?P#|Fy-!?my+C@Wl;Ft zvx|K4S1$@VK8!i(Fe4%f@-;7|^p4eX&Lm1kgfLLOwoH*BJ~i7YJkU4teL{v2;wvgE zyxKC{3_GIGzz|li`L|{r>RT(npcU>O$K*H!25{4vV6<)j^51z$I1ac0jDLI23Duhm zYQE>xtO2BY*&S%m1&9szTGl}s`YEpwx!5cAOGNb5Jz%N~J?oOj@a`Yz)UflvJewp-U zd>fI1?Q9p%U+``4d|`iM+r^#s`OWtGII=J^cr`k5wti-VyZSlf!!~Zh$aQ1i!`9N7 zqA%rpaP3}eEq*O8dKS*n_IM0rI_$FhTK6>oMQ=y6l<7yGW2NosaGS!K5}UW{vs`5> z21kbawCy`xtM!Uy=))1^Q7|se_-*firM@9nqVySMhOXO^VaQ2OZBhlsKUsKhY!0Qa z8x~-EZ-{Epe}xe9egT#O`t((@J==!kmT9E?c-28%WSmL8EanI)VouVZhZl?hW`q(B z2K9P#Puj7|aBe~g2RFCpoc-vp5)Paf8!P>PrCs-5yqo{&A7Ke^3-o`n_ugSmwQZm7 zN+E!cfsfhRjt@8gEgW3G+xo`o%19;<#FfEgkHCdLK^)odc->5`V4lZJC^(!KR-L z@`QRMnnq9)8mpHssww{$WF~*oml;Hv9nApM0M> z%=`&d5r(zH)Tv37^Q3OZP7d{XwikCR}J&56h{*cR%f4l`FNX4&l* zZ9W`(>FkY(I9@4D9cFgKFl7$NkehvI)}*|kRZ~wBD!8v1?ObqfOL1&~Cq_%$><*F{ z@ZMvuaqF>@yx{PV%IkhxAn@2>Omj$0Ao zSeEXU7VO~OQ3U6aK|DDk@yPaAJcDZdJv#^+bAlDxSpKb=wZ7hAFT|u?TcDkXFpl-> z=^#FRN`R8nX-vP!he+JPdJ79q%N?3&CZyhS$6Yw0FUsp(hLG66>8%tM$i&fTUy~u7 znQR;W440eG9UX*Nm{zgPDa*Uh-lvW~cYzo#KbiY%8r8RWBX+*M4huNawV?j?=H59MPw&{pT42*!R& z!d=Snbiu!CyZcyAPd>bOD^)Xo&G61eo97J$wRalTIZx?#;kjQBq=Ifq z%AW-Jypk>E>0=oBg_hl-*HtiQ)anvAyHffWT2^K+njdSTi!*^V=Kl>!dsT&Hx6tqT z2}=9kA^B{nx&zz?`48t0AXy*;IQ_e=+0WO-ks5*_$X^FL&Hp%m_k9f&x&D?HLWS0K*zy;h$#O3GXj3@V=bzl(w zuvG0aguGU2_yOyA^PxnskB@nWBMLon(He)`r|KCd(J7-Z8BXsdg8IrET!J8{mRx+f zNHH}8xP!9XfLfq7GSGj+a4{Ps=qm^?TOFbVoTr{{_(a4^-Q2C6zOtSj*SC7KWA zL&cwhhjAsErpjeyH7^#c(9#IG-4cyKPRsV^hz+C*!8V=>vvL4vxReAjP;&mdP~8$ zL0DxwSQ}LNOc6eS6GEJ*#&ybS@>W;Mg>pZ{s)&NQ(pv9SD8A*yHipZ~3hl;D+?#4gWLU2Z(x;x6$(h{j+AO8)CD2!@ zuX3_((o)cmh&d~QueP2ZJ@&O08$rLmDSYMVx|}=H8;NHcKF2KsCPSPK9+x|bLZe!P zW_Nn#?#kqpscSlYdNJ?)c-Nz-y652ZY_Dp|R%hpIz2b5&jBN_*GVZv&&dA@Wp!YqMkoxW&Sk`D!^&q@rzyNasK-6$uxo+dna%63yv4WGxqGR!n7=-E7Tu8P(ORU#8t;RXP5(hq3yJDoXg^qXt3X`nAyGH=OuIZL;Dv*NYNkOxY>I! z54Nj`ur3y3<5a~x&ZU}oiaFeByX@$Q-yt>?hPzT5X{m_2MaABQYo_Oi8;%#3*ym9e z*}W?h#4enz`M_O9da*h3;i0ehE*UmBd(iayhj6S!0%E6D5b;f=Y%m3nU z>c;UzM6)@M|0I^LwlJMC`orH$8-DYPzv&l@O#a2+d^KE0Ei2zUW#34ybshWYwf0VF zu6(VVnv7ZN!O}{t_iAx?ulMPRJY4TLI=;LAi zGC^dg!zk%^x0AwqXXj?ERKszqW2beE$im_BXy^LXk5Os!`Ej-{bPhr5Jr@-psrCth z`&5binXeg7C09#K2W#SEs3cD5&4V5W$UZ;wVoSce=}J86^B%E7X1!wyEFi=|6gwdj(R%R0=XbsCQ<1iUwr=W8H49UkTzJ-=@)L7YP-r9{v{}&iUsVT zi;t=E(cB9He{T1D)s487$fo1wk3Cg(J*ZES3b!Kp3_lb>BEQ0JN_0Mz(s84-yvR1R zIo$OkXt-m43vhhzDx*N$ZgPcE*lvWC*tnQ^vvSGhcte&{gnHQ=I=1)+=Q zznbxQAu|c3WBYEm=0cL{MZv5j*^MusBf>LCKyoUIE>_Ib63#( zxSeLs7>HakTI$)}nx4Ab-dfBRORN3~wK`7db*z}+k$mj=I%4WIdi7v?t;`@i5fgu! zwMnC>meayTexnwhoYlD9BL>OF97znw#ZPEEAZl9F_fLpupwWz$bm}i{OL|l36%}~3 zFR|Aoz}xoHU;#{GF%Ph384H@VqmI@89Bb!P;pew!_Xt(P{lm z?cy4m2uk`qHeP9CUTsl<`GUq16KE+mLu0NJ+qQ0omI%_}NX;C&eB_+EB5ZS9jUe12 z8CVdqXfKoJ{-2H8{q+?2fA@C(AHePEEpK&MGXTe&X>V;ltGmi%*^(mfhIZG`w!7yi z8znE+`v}4`x%NOv_kw=`J(I)HDae8lT8dIG59%`KE@;4JmGPeMX$$22M@P&@J;Cn) z1^u6#;OAJmAL3D-E zf0*hFS8F?rQaPaCnvQueZ|YA!lRbBij)}*iE7R*pgeYT<=nP8npS4t9 zhh5L77~Z8KbONV1(0-A}x#)-UVFt+9CcnvO?rel4G=~q~Bx@gC znn>k1jLp$SVdQr(+qGU#BhzUTC>W*skTwen`p&u62cC`7Cp6(MENof1SvL1i&Ms%VjL5%GW z%i7S3P1B2+QL+BaNb4V#waKYij;8eyuR^Oy=k%>EWl_Sn)nP`0OTu+HzK88a2Vir7v{SQG10X75|mKAd{^arD)LbvarUTd(owBy`>WbyU_) zR08YLwq_!#vywX06IJaOb;c)uhWe(yVFtyXC&ajS-{+$rWQ^2vm}V?vyP-q6#x_Dv zHcKsh?o%Cpyhg24(kw}hDCyX$X1+Jj!ZVS0u1KvFkc*RfHr=17Rz__4G&^x4peu^c zwmo`nsYoQ;G7o-^8hX3ELK7mIcZq%V?#KS#SG#gVlLbB6Q$wkYS1KPxX*tHxs_BWC zxOj7&lx;IiZ);LdNQeYJa1;yP85^D8SI_w`*{JC&n8U2y(n_ z*E#t;m6%i@B%=S;;LP`%nO#)B;@h_-A>Y$T427b)`W@zXzo(1pt0U^0&?fH$Xe8%b z)#uHU%q=yTk{h7nxBE(>2#ZJhYeDq4D>WnZAS}t-_X!t?_hK**Dy-;DVEk~0sX_sJ z=5~jO2@(9%l0`6AUa&}2E|PV<5#x`JCwSeAL>7=wfp@?#MM8pcApk%)Q?VU#6smx} z0RRD5089YrqOrcl_w7Ge5!8NSaf%*LIUMw7vw$ zK?Lw@w;2Ht8ldyOiC)n-?lJ!c2$+P82`sH-EN;NxV^0cyq=*H{dIh8KR5-ge2;?5A zX1;==#Ry+0N4o>A5@2I>FsUdR3pyst5>9GHnCo3)DUb!x$~J&)-N6a>2r&Uz8*VrN zz%Yv`JW!yv=?L}`ZFO`wX9EE3{RW2PrvU(zcaVH>PU%TBh?jJNBC0E<+K9ja0WTGw ze*vQjgzw@FAe!1}I6MKM+Da&}Ambloq*N0qJ69=HYoL#|5UBPU}} zC$IpqK~1?Aeg>M)o(yjU@dJS5x`JO{>*FycHZVjP1G0bHno36is4vdCzLKzDULpZ1 z*)ZbXt)=K$MbE^G0oC-SpNBBS<7=lzr`lV2geuQ9Y6n{+Z_9z1ms5@q$WRQh9`RWg z0Kbah>sDHLk6*P#^@1P^W36hcAgIKvi3uN)CU-(_ypA*X6B=wey@J&ZBqs(0*Tces zO4RWNWPqQ7+eoR)jYkgX3icDQkb~8}c2HttCXA>0m}b-aR3>Hf=O#?PCl=!Y(YWTz7C zB{dO7v5GW-NYij2VmJe%aS{uO4EkhvP)6`j13;8}5DNM( zDT)?)CYvIw213XNqUO5+`b;eB#=g6@7b#0VDB{433=)%61@3+bN)b8H696u91DNm( zeMFFv4j_nuKd)rH8;SVb=Jt{Z&#VMddVyggyg-C06X$^ORn3+M)2^UWDw%QxLu-!P z&&YxupMY$!fcBL$=m`6fjQ~0TBuD^@`hwZW0Nj_(kIC=zoI}toJ!u6VPlBgl5N!=k zYR;zmir#QCXj~TEM!2$g44~IPf{ECx z9%Kf=K>TqMpa(lE)4)Z+GMZO9LuCONp5u5N-FJ3|a|BZXN(PWG;w%fIe>n?e%!)OV z9B6zIm2>{z6cxV`=x)-2KsdSsQWy#c@DupK69I}K$HF5xu)^7lN`^8lJ^zY#ixbW9 z-o)bo^!s5NQDGWm98|S8QMCbl9T2a74>0*6*nMO9(F}LZ@pBv)$O=kYL1`RI{~Vx4 z%3e9B1VaIkJ<|yvf(=9);Kwmg&_26tpdebNJ5*eDEI3{>vK|dBp#eyMy)Op{h^K{M zQr>^?j8b%dw&l&$fXD{Z^I%;$h^H=YT_{jgyk2SBE$kMR4*?MY&3AoRXxdp+G(h*|apb*8BnhAsw`IH%<0?o* zHsTm87l3K9CsduDcEuY`Wmd`3T31>lFlPg%m>Pw>%%>Qsb%T-QaYPr+1e^eUM?K;U zU0-3$)kLkKHNG|=GKh2tCmIVoD*);XE+g15Z-Vs|&1*9vJINqAEKma=c-WyCD*%NEVxB)D-W#TSlVoJ29X9U zy^MRbu?ROTZ4g?Ch(SD&Mb(gQ)!zoI#c~c~K~Mtt-c7o}XL*oYku1bZM+G2A@@Xb4 zNJku`=UKptE6`p9?qk^u0Cc>g?I_Sx?p~v2_eWn*ip(+VG&EDJ#KS*Y9)e zoV*97x9&Az^98YyL0BTZpRCaPo?h{KP*i!7-2F_fj10jN=n6j2Bd`GNrZxNpiL;l) zU=aLu8?|yBAjqPgH-tb*(S>XT>@KR92u~qa($Uk25&#+!B%>FO_yJF-M6{DHb#o#Q z@C-~u073@IJ_j0S{IVw*nXxz_w{#Yl2Y1eAww+XLE6NlRrEce7Kw^2$cf%4qW`3@V5!_`@)xNWB}gXp^h>C}nNhb69O`+?}tpy^7nesrOoN9G*2 zOHUMo!N*+l`B=`%)Z;p*WAttk4R3z726hK&FD-&H?>)a`=*_rNlcSLX!=+nYW}L%2 zK_?im5@<_bz9=`OWs~(zsLB}-!NFI+Hf!)Co67Aw3Q_Dp^3ig-7+T~?ismi)BDRpz zFB}=G6^aRn`xtN33LM^qNWgltVGv~m1l7|T6Kv&_MvtUa0!$4&uvHp|At;Sm{yRkw zl>^Fx11<4@P~zy7%dvKyPnI%(oKIrY`T*}vwc4E6%8t7hJsn{M{;X2WHSyAF!u@mD ztI25(oG!ba#Du8NV)F3uy0-y_1|T@t8P?lKx6%lb%^dr3U5~~8K2lFSkalP{?A1^4O;QpN=q;p_$n_Z z^Fo>yDqVfP^yC^8Xc{lK8I$Wc zk_hTjG)Jt``Ig@P;sV-mq5-irRxX{h#sw~rEI|#Hs0gzxORS^s++(5oNZv;V;XwP#;%U|hw@KlJ+;^iK{b-%v2$QImC}a6If1aVVi~ zC~0iy#{LkIZ}_IlaJv2Q?W@C?*~7_ov}pkH$OL0QfuWsTTwp));Oa&X%A+6!lHhGX%0GX2T$!C&rl!7;p0l}lN$Q6Kb_Uib2_V{Am_|n+;*ZuJozR%xP zKCjz<-h4Mc0iXtb;c}$0wx^CT01jL@$mH;$iOzV~Tx7 z5s?g|`>YwVbi3Z;@~YEX4%0fUxuv%8rFS=$5KK#AH}>sOe-H~+kEC31_K*CvNnCP9>MGB>`_ zG=94jxpGSV8}txLM3tczH_50r*(=Kc4PT1NS^QzfsLR*dn!9qcafNaX@d`i54Zv1q zS0-c`a`3AY0OKlvV4*b7&-$(&xwrxaeZMxb+NK2>7eX%r^vWoDRt&N~cTG;<`vxO& zEe6G;Hp$%!-A1nrp;4toposW=0=-7(ORwOwcKF5`Bx3!FI-Io^I9&NyiJc#uN)I8j zUC0HTP1*flGaK}LH8Q2$?nMgmZ>*wMt-=vB07C5C#_bir0k!FB7*RE z#$Gfke#L8@O8O>&)-tve4o#kyL6;t4XCn(dbpZ$%NC4X#D2PsK1BIre?gfC@Rh}%r zJyA;I?qtr^I-ap862({n5?_HAVI~EM06U(c*|))%uzgN#ul4@!A=LiSRPf14`Z9pd z7KNtF@BcUsj)?JJ;C9)a#B-^~GaWH0uz!sVHjHm*sVxL`s`<}OMu_s2Hgi2i0B3r-ob_uLIwaqE?Ncz(b3);EtqO4E%awL;KFf5e~xgaRh@ zskw22op<9p96iaQ8!)xykIwGXZ<|-;KSJ_Ofr1+?x0plFE6^$Onj5cNV< zOXAxY8V^fWbHR<+L3kr`S^!;E$OwikDykp~Bn6Sw>C&4>VOR*Rt5HW^_Vh_JiNncV zP(VVpgbWUZcL=|Z$2S6C2E|Mkh;_%YYCRPx4S6GMV`JP6x~wm=ofN9UA?jsXP%t*; z?2FWOb~b)l7|zI)`)HkNOterG+?f-{O+!9a7QvB~nv&z<;M;J|#A5oW_4R|UWBOjO zYz%+cPzmj!FjkjiITi_E@#gRZl_NQ4n@3smPkS6OsgKVRvm%9i(&0I-`_W-IJm``X z?atn_!u2X5fN4}9Ul>_#4t@_{vbtzSlS)UF=jd{i;XZD+si&}U=!znVbQ4cppkYBM zlGyR_7Lr%aeQ&rvmnxdCCB(0laiIxJRCo2#N?=?1m=}H+X2K1J9q4k4i4*TcA`04d zT(ao0YMqZ9vC=QT7(3yTc~O4)c}tpv!HKzn+n3_<{0mORc~DA=jx5yXr)-u_m3JE6 z%_}Tp5A~|L@^#m%M*T-fUgg`sAKrcyCZQK!(4M`gSG)G%tjpssn?JslKGHyq)X^V* z)l(0$dG+<>Vb34F?T4R9thP$1y}T69pAqKYEtfay*K61|+S+Y+JiDw%(`NreAEj?E zVCabH)ypG0Y`m>Q{vTCTpI_Lz`uW4T&sT$EF5Ba)LuNt~yoSrlAwKMz&%8}f7GHjEU#TDIO6EYO`_5P!go5q9ZUSB=PPjI`b zCpvSuzm{wNg-9~S49V?Ef+=l&RD;(;x$(uZfWqXB^PH8T?Ujcp1AB7U)r(UuFbN45 z)U%?rj3#XaQe%%E(^G-&=6fDAyumP1Q4s04IMM60N-&UG7=wv~blAj7!2}bRxpD0F z5R^+%AjuJ{nP5?Hp6y|fwxp|B;@Ro*9Ch2;vax1KR;+iAG|1A0Le1j2Q+4EC^)(6x zcJt{P;h9xL(IGfUv>(~&(EheA7G_S25^@$m2J2}Fo2Mo^J7Xw#I?rCsme!nyrLo0rs|+(&{I{P>b>i?DT7qKlUk-#uFj_^JG(AM34$VH5GMU9BJA z+xUXf=@YJE+pNkz;_bmBG5ofkg)6?nOUUlWnV~l8r;iK0z1>3N%^KM7{>Qw1uKuv~ zAd5a(hMHdR4z-&W-g??neAhkvhuyp@N-|^RXYF^~cj+ zez%awdeNrt%jIR^SDnXv;%({+r7D6O7ZTO+8FfFbE~*r>f8K%BR&6|ykzXx4cOYE* z^dP2!z*lYy=BSOQwf2qi=p<)>wi{7YfwF?0BYoWV6VA3fvBxFJjG>v=FzlD&^~>d1 z5}%dlXIJ@Hluv%Is%>SvcB$pO*9dpod#*;JPT25^B>Wy_vrTC>=f;&RayV~|sT%+C ziB}UzURjzi76{Q$T<#2)ZdCcI@f#j-a@)A{owtMj)gi~L=!WZe-UY=x4hdzD6F;@d zTdt=LmB+y4)dbbnY-4B{lEF+tWH4d-4F?9t;8zg*?of9{;LP6a<|NxwAO0A7DY*nQ zOzmsRviFI=D&do(1RxTldy;>GU|u=J?vWYA#z_KW!yMTtLCug}uQLj!cZ0kiEf>o1 zT{n*2ed0eZQLLRjdI}=hlVtpc3tfo_Awp<4WZRS-t|BCK=h*2;&1%(`60Cp-F!6Rx zBTL zxqo=Ft{5l=Qg1kLQrZ8qur~`|R(Ye8p9`jVSBsd<>5<ri`=!fwvR7Guh-C;a?vpJZ>{Qirg4V6V$hGM;- z66l2BI6Nk?j&(c`3zcrX;a;GET;B%wJ-K1~yk|e)a?0cPTPi+jTVn&+U$NgoL;mIB5wle7vIFO=1ciek@6^5QG)OJm5MDPNx5&uHugK6x~k-( zqo4c-&x5(JT1;?kob}u&Pc*yw^5d-JfG`kf>8sMpoi{tiK9QgO7!}@EUGT%b`8+J4 zR_D=UhInj4M#f#<7&h(Y}`9uXMSS2>4mL+}HlFqW1d9NE-WNZ=%ai1PzRzQ67 z8Zu!K=Dk!ex5k*G21l626pKn}eiLQxi3nx|SCyAEr%%V}~9 zR=nD!eZ|~TDp5!CvSH;rOyZPeGon&uTC;hzStLqPOIdCwL`!d!M?XvJQ+1T&_)}yc3!&K`A5nD>#5XH%MkE6c}rwB1DP?BX(T5eGG%AmZ<;Nhsjqb{C_$oO(mTBXH~Kvs#wdF|?BY605@k?jcq z=*}9+PCwBK+ncDWko?+XI#rRKq8AKb+I22;80ux^`(bH+lo&<^8~PAo7k%SmS-TYS z<4%ZIKUeO0$_u~Z8~04IoZS!Rrj%!eFz(|u?w2$kP&OVkGJbDo{K3okW0>(!lJRhs z@kqJxr&q?KUGGM;Fg<%+exhBJF4lP4rmil#&L}O+w2{e-oyn}1$y}Jpe3HpRmdRqd z$(L6qOI;?*qb6UMOup@ztT33a@-}=v)FpE}3AWJ=jH1(3KOUOk_U;>ZEC;guw}4kMT`?UWD>o{Xc*#vvZ!s5k|NcR1u2 zj&T`>+Q*@hW=wo$%u;47DrT(SrU9}zSnJ{S0O3eS9G8?j_d_$DIy2sPW_)92{L5yC z_RTOza{)ecK`HaYD&|7Q=11(!g}wWQZuPMn<2dV#IJ0R*>&zwJnM;kCOD~(t?3>FX zE#&wt>z_Le%{mbzC5W!Xrc3GwOWmWFkfM(-?*$1F{jElu|=aY!q(eM>K~ zK{FLAOJgf5dn;>iE1RqDZ3^MG*;Z#BTAi)4vU_J`A5&((Y;|tm3XimQbg@d}w02Ul zb~d(lL4HWGwRXE|?VfDyVXXfs)A~Z4wbwgq$6Hp(z1BYa*1kv^Bbw{~OyobJPP6cV z%>Uyw3thh2FKYJr6c=FsloBfuD?v^%Ldfoc>1B9Qv1%^`2Ognk&f)MA5N>A zK~&IM>Qo%f!$7LlR#HJq{bV$Y1Y^Sd{k&G<;S2`B=hZHmu`>UeI2zPq#V;$#>vOM9 z|}AQu!1CMnHQ<(bDug7R-*{TgFgV%F!U@an>EV_3Z4n#RexhzD)I z&Ft3ff<~uAbi_E7f1BBFcu*%i_T~!ll!>WdX7-|c9;MG`|F<`@{|}Ff-Rf`dzV^$^ zzV$GHK@g8-YW>^Ht~lb}Ud>!mR7-9`DRlkJqy90o*Iz*@5F-RjDo0hKkpHsU64m4& z+#6lX3(7_-l}a;I9L>pTldhG7+3fF=P3WX8^4~Zblb6U4XZ})=Bb67UmVcVrmlTy8 zQ;J_{_U*289XC~GUcsD;{QmlsPu-d#Rz_vx;}x~A&AxA{``^bi!e4Gq`uiO0RzG)zR^{7sQBg;wc%k>_`ZLZZ0TzB2N#(?us=j6NHz$( z#|n~BI>pI)p8at{4E$0qEe{;RKNuCkKVpXRMMrUx8)%go<)VN*AHviWX$g--gj!C; zsYyoDQOt&v9EYM%YMhbGeRz~-F)D~_eGnEw8-*KvMw?ti-<3?K6qoYL+dWR|M z`gT(>EJ8G5+t{R_qyf73gg5+RqB!4xRsWM-pQY~I>HH*j!}lnLcS3ghl#pc<_mORa z&INp;^yK3#78N(`>u+jbU#iLe%~c z)giq|lZ7_}MyqQ@DFYC0jAyi{=xV9Kt6B4n1bd~4!k;i%AwfOZK(M+>dFfU z+o?y_qvKEB4%Q zn%Unyym+Pa(S5%45!u)!@uiC z!B)@xh6q}EZlmAzgNHfkH+bal;E(2+EUMMLJq>O~ ze$@|4_q=dj8$L_%^`bUY?fe&ZH#JJFZn$-0SqtV%KUQEu)fr$CNuPfJL5*1?QeG0AD0ZvI-7u%`%*3G4a!+#Rvf;-8i2-F@O@QQL#8 zz{QfH82Erm)}2Y(U(=AKr5iP+&LvxQl!TsN(~#vGU5GD_UTrRZsrWMud0~kP9w}R@ z?o#}+^k*8<`oi*)A=k3yr=x-YyNnuBmbX3=Xr=$JThadyII{;w8=KKJA20q`uAQUi z37$}nB3g3NaT-X?4BuNw6s_Z)y6mxUf8os3D5&oRl3|@I6w7b>TV%t}b(14v674StRTtQ%r17YLMWb?xSJ>qUU@^^k+@SMoT4)6HikGT7uZV zGiopx?H{H)w2j$b*OOH}=@TFBOv3tRqRq9=Gc)#S!ph#XN1UjRyf#|E5nibi+Lgdx zBm`I0t8PCQ;+u@;Ente(>fmCy31?`WLDdd*>^ZI;+9o+E6gzh4GYSZ-RO*)9rbBtI zRA(HpoadvYYQ+zc_)J*aC7#lyc;%#~Jz5`Uer~IKbQ5oR-Dp}(6~o{I?#m#D#&e+j zx@}y(9V&pwaen4XFFMffI(fnFkNH*(`$m`>=(bR(X#w%X^A-rez&Wb>k z@;MF2)82ENsgc~sBGA?|Gs5M70@h^_1CVWhcy>TxuwABzBArFzBU8t=vV{Y3ZzcCS zwrC~o9Ni(9CGsGu2o>sK=7_Bl=^~fll1nX%4BnTXVJp??6_OMP9LN>bPr^dJsDZ)% zBJqp>cxnh5O^t)3{m%STL-Q~e@nd>EKcDfDyZ7{}CbeQ#siERbCI^)mcZ~#IuA4?# zX0z>V1x?gF`nE%?7x-f`K7+bP&+=+&+t%I%KZo-fq`PN`6p$k%Y-_|gC_=6P-8144C zeH5%uFDocM^SKwS#C=o=imdV-JGjiHU)`CeG1zeF^xK=Adelqc^Lp-Q)D?d0dHf~w zc~=t=ujs0(sJLY&_Yt?rPTmqT-@{U>u{0mtQo zR3|E@R4-`r;C-h%wJ}WK+Bx9+|81$a+01ITNfB-=Y?O zQpvMqZ3E~p$-6lsUdm8C=gH5I9q5@>{^hCx@ln}}ghO(?6K5PwwU|SD9---8I;hZ; zB%paIyb`I^6EWPWQha8KIj8B6YbYg}Te7K7KhG#==F@x2Bh>Sa%y9xtsb8|6z?n*M zI+X{_Wg6cTu1K@es;J|bk<0gRuP4Sd`_Sztqh+tW7iwA3C?J~mHGg~WTUD{?ZBDEi z@KesAhJKTXc$ge-Mf+i0gAeLDtXYzs%c)_+ceDdp7nsk9E6Tg=r@GEc@MfhSGwbZnpDv@Js4gCUryN5)clT`7*GxM@93GZ zz8yjtWqE_P6xxnv0b7CCIKZoN(M+bCxo^}~Ed_Y(=Cs{zhdkc%C$k8(eHe>Aqr}vK zZGsPEV>JU-51j+$ZB2x1E`hX7)vVS`6C3yQVPY**g@e8O8a)9i}6jGJQZh#)fV=%#ko2P z8|fe#Hm72B9WK03sVJw5(mY!-{=*6O`0<^g8`!6CEf_1#?0R9;nPQk&whxn1uR_zS z$W8&(n^ky@!*%nK@6~Qdb9p$Nt%N#VVcZlZ(kl$g;!?T0-L2z-?bRo9!Y(#`iA0Bp ze5twnVT--`5;DfM0)2ib<%EmvDUpB>WFhS#T+kC5E~}a^U$qyw%eYEzo&epl*_3|C zb3MhObJ|(0g#A`9#nn~Tc8K50*X43diEmwsg5*MTjP_niGpkM5kSwR$s|*&7eis-k zzoDzReKSL!#oMS74nHl{5aGY#vY)!}r7@b%2yRpaqFgly#AcqagCtK-n{k`~Q zm}%q%)_l5NOaIEZ{p{$(3>gb_b;<1Mc7BV$!lU=G{y9rv-SZhFs;78ASbMU+2p6Hq z$4TAzv$Sa(#&(Yheyq@|i{$%cAvyfmt}Aa}M7SvPsnvVo{g02`hr=x%z_XY$O3mw- zi^hLk(Jsb1#?h#r7=yi*m-xG5k+PHk=;nC8Kzq zxMtKoLy}ikQ$@cVN);HIYdTQ&O~HN?aEnni*b3Pvjf@?gJ%!#6yRMT};1GhH+3H~z zNTqIl&-a~TwOo~hNSCopZ_)zSc64G~D8pL#m@jNw=Y+tyRWa;d42t)!vqo+^;wY9v zy=YCWS)Pj*yhYR99lkY^i1okt?!m?CU;%LGUV%XOEdk31rbXd z&gwfHQ4Y8A!yr|uqLyYl&WF#X2p4AX=Pu;_>gX1VNU`GLMFRia0{@q@c>bUKhjbtq zr~x?nSN?gsg7Ytm&cB{rG(!ID-~Wtgo;pZ#?aljxJFvj0xOIB|TEeC=-7we>{Tgci z8F5ySntv91=VkJ9|4!w9UuK(sX8)N2HUF&oERe?VsiaX^YujD>&P{>3^B$i%vddPy z?Op^ej9A@!CNo@j4U$14S?g=v6w6|$U0%Ct-ge_KON`|6?Ajg8g zbg@Z)?jWIHDz-OBR+bb$&)KEglm>L2G@}+a@tDR)?3?QE%9X4(5tXp=$q}~GZsbM^ zh)L8KlZXH(JMDd(KZJ?kRK!!RsD3);F$HlM^|Lie^|?2Dv{}#uE#7$an@rm?WwkA9 zH2Bs)1J;llU-sf)o#P3JIpJpKDR1|EOf7FO4Stm}?V4qNTh4t531!kihvYL^I$q=7 zbzu{xEqvVT%Q!tZd`yES^i)E2%+>+QKnD!(wu{@(0EL#onVCO zU!+)mcSw+@MwS9?z+451w0#ygj?QFRbKN%K*X6$JAwBPM&-eBR=d1wg5{~m3=PJk! z(P?wLpS(}!em;`%jBRc#EY>~ms#J%lgHOrM{4H>y;zD7jYiWrk??umH&m33SqB^e7 zdGU8dvlKBXrcn_K8?i2@K>vYdq65)_UIR*hEsf0X?Eh+MhU}Oy8CHqYk^<$M?R< zeW3L6ZjaZSC)8eOY?ys<_<7J;)59OuRQ@J@XPkx_jW?&h6rjHE2%@UPj`L{dFr1d3 z>AWuGG`?qZbgsu=C5r!{^|6HkN8|h(4F0pqcOTj`2cEJG>?&S&7`SlHdj)$3T)6O* z&qBc?WxY#~XZs9BBGXlYS;izZWHmw%f8f7qYWbk5UUi7VgqoVuS+2|er^`RrpW zchG%~_XKPd&%^vVyDOM2RT+2ypu2ct3k3(?Dmr($#k-|jO?1zqQw$u;VGjofKTeGt zSdKfbTdqV-wC4{#jt0Hli)uUp?)#34L&}SuwPdUrY{8C8lCzI$@8!qqWCU#G1s4a$ z4`at&jy0*>TAwgG64tZRkl-SfKGniri9Hnu(m`-oV)$tsGrb9k*Lz1*a?b{0;S* z9fOZts$CFX2(u5Sax(aXT#nrRFf3G(`OZVD5o=Kx<2fC?hG`b`#RW%og;r&kx|J&I z&vN@UbR(9kQoR$Fs#Ul;B_DU6+$}HdFuAboRqRlY44mZFW9SgUTK7jl&>_w?pY1$(AW#D zwy@fGt+ujhp2Yow(eiILNF{&f8qUg`BgI3}HZG6jdgCBA3y*X)rm*ihB z>3(9fB~Zz`@shR`e^bH!ELv(WrWGaS4>!0`6fs!+U(=m0?(2G`zfbNA+2`4M^l0p5 z(Apw3a!y^ezv<4tZSVpo5lh<)hbA?P(I{{^B{@H>rEE@#Wndoz_#OyS%>S|H9sT z1~u8X``&3lNCHXdod`&mE=5}CRR}gvQK?E%K?Fo8CV+G#AOg~)gLDK1M362`2u%?L z=}me^f$ZpApY_~pt#|h9dH4RXJ~PZ@!o_(V=kYH;{u(lmY2DlVk0zye+;)2ucPQFb0iH}IDw#LWpzkc#p8e{Nke?q9=p9vH=4&Q?yoP7Ho|mpQ zi@F=4!MH7B;*E-<)VBzqQ81U?EJ!yr&0@G4Wi$QRr{R2mE=!Q zZe?#Z6{6hVv(yOtT><^z)S8uYKc>-pDrqj#Tr}y*%Qm{$FDfgp-=eU?@^fMZgO^64 zOTp;N;@hd>kQIz2GOLr>xBZx zOU)~S=eFD8jCo#1`>+;V`3zb(iV}v;@O21fL-?zjTfCEBRqdegv;tS2ICB@+nZG62 zH6GgyWrG;*M$s||;7!kbdT(X-D(RWleZ?O%lGOh7L-wZEcN+j&4`?LeIaBsf5N1E( zMv>zq1g~3C>JO`3HL(xH1cn;ZRWkGpJP0arO*k{X{JRzn0W%p2>77u&up4zb!WAR5eu(w>%=5AUNG>5#>B$$x42s;p1ni^T@)hN+z>t~&1(N{5r@K0Xm z^&Oz6cFvKw%hpHaQV9WGYksWMhxSun%BXdnD+;o=W&gZq!^$1sFm!nX>#Br@EhmIxjxyMy@Np)5tomXLjajy`w9$pJZ7eQweddyHV zN(OBX@=)WFSFmyeZq3Aq8^kqc!yiDfsCier)2P&>Z6MWzH-y4_>SH_3xV=`Th z`7Vm)!<94@1$0Qpj-mxWT=kCS?9(`Uy~%g_AjsdA$9>lMQH1nWXSRDu`I(SeTBV2# z9*)p(Io+)D#wq;LV$N;6A3Hw2ezRTV8d+dDXZY#O@OH7+hk~oSFmr9M3jWSD+H=%K zLya6er6DH^&tWFtK2Y2#BSse52^oFvxU};!;X~ndh0f324?JIj&Fn88=lGk#rbtoP zo&XvC)uHhlGodM%{!ruhYX83!HqT_CpVfN*e)#`3vCJ9WW7gT{GWc)VN zDgCPUkHwYz`{AE|#aSw_Uhn4APuS`2hrf3(m~!~P%cx?m`UyK_6ua=ugEFxY`Tza! z59c}kKd{r^7IAoL(fPDM7N`025W)QUj0pL~KNoRMzlPc0`$j1DvBf+}wchW;Y~kz0 z#e&k-pVfL5ADzT>kEZkgL1BY0>3x;^CxuOHS(&anz*wp-)_J9RKBr*i%@U<=q-L#E zZ1wHd$C?$H1&2U{pod*_)8D(heoib11xnut_-lHo4DEhEmqd4#)*pQ%!QvZj0`b4P zyC{7lnB1u@iOy-KXhCO(47k)kc6aR-h6`SF02OQ0GHFG<{CycwN&3lmd3SUtV$dW`9=tl!%r*tC+t+nqJihSR0u92qa-K0Wy26D4jVAk=Okb73PUP2h?k(yh%TaU<+GB3pD{ z-Y_6`BlaEt#IhZ2=WzC!rv$_W3G?=X3oO%5Um$8t54C0bu^rOnC1^680E;(Xr8v6 zUF9D3YE{%#BtO2QQt!C#9VEDQzv`aDB(P@u`bm3M6Qgc0$an3%iq|88B*w+58Vfi< z3WY&1;FN;oTeXMqh`b^`o=r8_tnTDQqMCNk zRk_8-`a~%Ts_o9hDVq;Hx(2SbdT zw5DQ2K`m_aLmrM>7lO(FknXULpSEM8)#;p+%!#xY=A9tWJsPF%^blhojZ#dDJ!eam zfj8ODmQ}*{z3iB@Kl6bW(^IN%->|L#xcC&iKR%GDE5EOZ`>rwHKr?}7T>D^bTM-U4A zt5dcMFZH(>-Md*2M2BFhWTZeMic=tqyd=3W0A6p;mYo%f6+AG5<)*U6F8EHFd@eY% zM{mb|?NCpO&3W*OMLmG%r6&mB8lQv3@bs;l8O-)~@LKNA90!r)WY9mutjaHNaF1PO{Fb%Vy5?si2VLq`>Ju{<)Yz1cNPLs>R z5%SHiz&vI>N8c8;CypE>PC<2jtxr9^)~xW7oPb43)w*T|?1lOz1uMj9Jm%&#V}9Y}J&TWd4A zdM8R5%B7p2@g#j{?@`(o+7 zy7yNyPkuxE;#%nQ2UEP)Udxg_C!U%5%&GG>x2ub9pLaR@cKOWiNUk4wxAxl5lBD_p z=RLmt=SaV;O}~S0rd9j3D}E~@YDbmN^>&yYR=@YCJyglE$qRT`m8;epk6LLmJ&J#@ zp9#OeCfA9ggM@f@qZ9+mp|C2v&yBM-R1zt&C*u?dc+XQbA*c=_SU!u8^8R$oU7KtC z{+YoD7B*F8In5`z{!aoGce9};j0#66L@UZ)Do=L{hiIs`MXuA|ccrnD^;Lu#?Zwg{ z_Z%R1tZPto98EHpsvcPmJ-WL0$WjrxfT5FmqQSUMA5H{^r@<5YgKqByxv~Yju?5%E z%k^tLIzNwGC`B}o;C_3-c(xFK#gIUYkRY#+kc5!1s*s4GkjJKqAq{xR8XI&+8m&hu zbwWaDVpVAJP-yC2Xc}8shGJNj#V^?DP^gEL^o9qDK{_x#7rk09|2yn-kIpn8xELD# zMbzKLUM0$m8S|gbm~;#OK4ZGY3jdcgX2*SI^?#W$7j*7Hcz?~9=l_!#QyCXn zulp}ErqP|BGiGgS-XAk&>zk_onKA!6vG@PPjG5S{JY*1nkZIZaCl?odskqPXsTtoz z;b=?xd%^;zrF*|mEmw{QiLF#k$NhcAtXgpmh>&9wvAK13mm@Gj_DFFqs+grngD4MS zz4`lA?AMI>s~?t0$QVce6(tZUOZMutd`H&TTGb94IEIq?;K+}AUG*lQtCF-I5K%#Q z=qA|#I{!yMtlHdxX5EIYJef1-!rtJz4b>a%t6X@oo}?EKUDNI1?kLZM`QE zQjcON4FF@hhM6!#@Tr!-u_x*KWJFAv%MvIE9GZ@8HPi6#C5k#vaZx|;lCwbInYqF2 z$af&^M?O&x8O<^@5{Iz;Esw>Hhycuy1~Orv9|DPnT0+*57JD-wvV|^<(U7Vn4DC&O zUkirP)C&+FkNWIAdG5OoH1I8esY0qvsSn6XnC}ffyZ6Dg$jzNq+;C32dsg?z!))?v}s~jhE6b zkL|%wGCo{3aUW^E7!x%Eo`Tti6cF6|F*z#sRA-+VWJYIU9tpG!`CgbHDx?z3PY@0oB&y& zLJi$>j6!oyOT+ZjPoa-t4q6pTJ1)%7$rXVeoAuzJmxbs2Q^@trM%js{ZB2;9fmwJ( zs>SmaqAkHRCsJ*g#aLdQc~#tdIR(qKh?0q0fB3l8Z~{9Ubyt6iD{E%*9Q@4r9;fXh z=$+*&O&J3ua*oFxSgqTSce~MK zjLcoS=Nsw4vs~Oc8lt06Rh51FZq2vLB&U0Rmd8sTsD~S`FniXn*_W8LSB~xt@76Rv zE5_zKUz?j$Q2b6A>3Vv=jvVa?abpa|REW9!<*EF|{J=P@4R>r;C( zlKAt1P2Ip&j+dC$Tlbr|SHoV${(@3gci^6}x)$w3F{*>vI-unV?~P|=lJ>hCOv)2K zbhC%`l~s=nOcT6pO+IFtXQ~zC4FeT`|gS?e?60DQSOxT zxqR`R`(;XREgZe1o?zFXe>|LJdAQOw<#nV{<%(%S%a`HN&U=$@ZSMbo@qAfxv1$xq zd`?wpUS?Yp#HpToAWu=gTq(*|SDf@*kM+p_p2Kr;3qf1O66bt}w-yFaXUo-mNhfc8 z9P5&CpSvaRFp{>=d+L(=LQ?q!@>AR6L>}XFWY6zo2%o#A_rPUBLc-@Upi39R`N$3? z-s{$Vs@6Lib-rn52-Fu+Ji-fA7Zwxx^(`(I(%3*^$ff=bSnAWk?0)gtyOc7y zB4Vg7+3W0MKIoafq#Gp^H-L0ONM9Q})!`FrjT@*^BWiLoKgz4sVUIl^b~|fCquUbm z=zJg3Ix?u!a;@h$IrdD3e|+yyn%rl7K`=r6D8Rr?b^FY8^o+>GOe_)G*A^8DJr{m{ z#jgL0M0N;Yj+u;G&WzpA#4!}q9mWI*y)8XguTHZf!W(1Yrk`}#uzmKbIr(j=vF-|{ zsZsqp=+x(=D92n9>y2$lCjc6$l#>-@wrG*8?iV_tP6w5XinP46AB88Eru7SY_aX0NHJ}#1R~mgUPNCB)fFGff!p4~iS4L|X^>&*4# z@^QYcTUFE4mshIMk>M+)i^WOVW(sguzCYa!aqh* z#e3UU(kieG7ScTwd}{Pg*Cz?9r+V|weI=1tI$hC6zwMD^+O5nAi5;A0TQ{)(I+*^8 zT)Wrvk8&;KujOahZ@^gYIeSZaV(Q<(1%Jr3iQtRZ4}K~6l;x*~2<~`8Hid_iV(5|6 znooIXM<3ixt9fYo^PzoZW%QCF*DilQKTdgQ2NOLwDa+5oyA5Nbo#u{Xb$IZP12GCM zJuwg|rk3ngW?LW0YxJ7){>zzHPbHmslJ4I%uf3uQz6HM|XZ-YnQU8zN@5it7ODlV; z!8gBF_f=3CCebL%FN_(J8yGl}(`p7e4ElpkjBK<{g6}Iwnv@PX&%X0UM!4?myA!BO zKx7xS`)Lru!tAS*BYP|UNaobXJ>6V(VR2+lA4pwdo#WaZdP`Ri3=P!K{rEzV<9>{< zzyKDDa!{6mc1Tg0t6S3|HZS2_tX^SykijNDbPs^b2)ouHOG>MuMzlH<| ztY6>@%6WCX;m)SdCnk+n*8~%PDT%fz|6`}`85t@Iw%h5hhHj%G3p=(o zUht55P}Hz$_Sf<=?3+3Ax_fVFGt19-0Z+l-X*BH{c6CzaN$+baSHIQ=z6eXCqo3{LdNvMp#yNGEroJu6;a^df z`B8o@Y&A8u2m#A;XEu>Fv)9{HZw_ppfvX!zhW`>RA|^#F3or7n&pD=NycQLGfq6zwTr5m3UR*3n zZ|sOJtk@aOE2^Rn&nxC!U;I|)1`=C(>BUeGUDl?{ne(#iLQQr#yN1~EYqc}Z%awXI zM#R@&;+!)o$2VplyHW!yS6m8nz9m(Gqn(RAzXryy*3PRs%;j$E?3liNYu}XNl3eCA zPy^i6Ey3>G9!c};QE?nq=e4F0ddKm@$f2pW*B{Y9&gxC|8!MbV9j^P7K|`91?;2?$ zYjYLdV!OQiK~hP^;*JL!a*O``r}Q5uRCOorymVo;I!01ip?Eda3lGXy)Uyv5jk{#} zZ*G=>H83R7>KbBBx#9raNkYI*Z?*6kiAwe{Kx4aI$cnX>2hKky+bDdbs~6u?x$4p- zso_%CC#&&s;y^&-CgZJ&SNi14iou01+}qfvj9FDQtPZDL-#ohP<23?0VY?4wm!6N} z;|%3idjG^c+#P~P7?V`Ug|4(>-$OAt`7w-JXn#Wl{p|%8<=Y?hWJr7+*rjw6l)&wG zSCq>ujn;ca(qao=(NIYn)Sn>RVIO19BUKbPwMSluPmxO%ND4q^vq! zbx(;46Il@gXlfKx*+xF=VTcU?lZAmxKhn6{yUNW^1PYKPgiu`8E?hia+T@BGnlrve z&S1h7KBi+K6(5>}O$#0gW6i>>vTpff0(co!6Qa@d+LYGkuR94(<^1tj43PBowqj=0 zLrV-8yw3TEL$H;BAq!;de1#+rAkZB&5smEl04WwH#C6AS%T9k#pPr|Gpx6ZTY?_4g zpy+fj6hv_~Jwv$d(4&S;Jua2EDi&%GeGQ63WtwdChZ+=K*axye@;I76)P}={Q}=I* z+0#%pzN@I6N+9oLEEra`Sukj$Nr5Tgt=1$U%#O8Xs0G_SVQ_uBFMbGp{jhM?m|)TL zwC<*0o1F*>Rkaye>itO_CxU_E?1LIsLU+7=4J$s+hRRf}Q z)nq%KFM4pc@H%rArK`rU_WR)O{+7Qm^SATymoDT4oiB2-bG{t<{X$jUnUuR8-!8Ha zn$|SN7T$kqe&z6iWIeU#eeW6TOSIp5H1-?0(5m894tAL_7NKPtR58Q|U}T$NoEx`j zsNk6ji>~h*vMWjxH|%F0AEh-LW}m!O4SAXHefY46t$KaQ>5fj+)tlFY`Jzp(*(;Br z{H|l_T#aiylO(zXSgQmG%howYql=f!rRe*D1UIBewb%fzXYdlQ_eNtIiMwy-PnSIS z)Hy~e%C22IS)#D>l08nG4;hXNlHck4dh~tw9e}wxA*Lt;`y=no>W^*3^tzTLk30Yn!JpO@0xxrx8II?{8IPtsi6PSmAh+ec31y+ z-R*DA_ZM92sr!}u|KoMH`R!}ZI|?!uKrQ?$`TyJN?l)5rN>_Lykm z`;6GI51KX7yOsWy=eR6ujD@^;PHBJ z4JX@vtmjN1LPoc8`RC5>!}72pGPWIKs;9d1NAjOccT(l3uY6Mr+*$NfS3Ww?3en-G z85oC9c76#ritm3KNHF^_L08=$KJ_!XIa%v)5Oq9rx_1AkuI&A3yjiwgFiln;R2!mL&X8Ns zecA8ZOO@9iNHN@5J>2`LD=W@C|4RJ6vb*~5%i74*-MV}4Kpaw@`&wT$_I4?{vXlcb zmKTWBZ-9X$2tO`=1uL{^+|qHyvmnx;?}Idgq)G#Xjjb!x6yKpKy7EP_2~Cr{Mh-RN zBgVjV`fI{kk4U5->=G|M`JTQuPogP-dfyrq?@)V;Wj&N-$yzhEty%PYcPOsQ2AG|o zMt5mFytXNW<-MYsgaj$v$~beXS-(|Yv?szqJCkEhSb>7Hcnnpsp#AU-foHFtaeBtpCfGm!7-wR{!Gvw87y!br>B3o<#<}_Qlv;1A z;OY0Qj*C9SN4;p#Vy0DW5onU`gnY3{itozCdhWMqL+v0OvD6?#=^{%+8cV+>6=>*n z*B)UlW;6jHm#suTNhd|%9wlB zpg@rmmkw;1*U#0 z`S?Z2?BNkX++VNs^3uvWVuE9QxJ9bxr z9KHIgQHY}4yK9SaeoJN%ms&%r*#bapR*!^DeT*dftwBJ#ya74vbsf$rplFqjLTNAE z)x2@uRz-VLPL&p#hiC>$&7HcBSY#yVBk!049uX&ve9&e4Qy`Y!hkg;CoFZA#Ia{10 z1;)~Em6P|JRE{)ow_2a}UzxV6SUYv%M#A?eub}l3e%~i7AsE((4{qr-mH_O*1oDI* zw&bECy@P`lCi~H7-m^U5>8+wO&sn`eFMf)`;fBz_&lWkW$L;q+q=MPe zEUG-aomA8uuY*VH$&Ak~i*Pky*I&`w;RsK}#=ec}F<+IZ@@6RJ9yA|(K z7H;M$^DO)Arq5kjy*=&y^~BM=`X^><0p^|)bR{~?LTV$R8!8{U$$R*bhO!v-Q!`?w z?*T`)sMb!Efe+FVb4uE?$#Zr)vDZUStDN4_i+V5YDzr_|=bwIInzeQnPA7|-@+!UI zu&QqEO$d?L4K?Q0&?QukKT+X{O3+sAnbQn!#=)CvR9E>I%I+M zTD*IWA4mVS%7^2&jCY100-p@Y-$%$tdp+-tc6-Q2KPYnm8y=)c>E?r{VrcquW#@8@ zRG-lGXZmRb%9&q41=-36U})G92pm-et|0=?9)V&#;8XM$u<#f3@)sT=gjmrI5XFLQ z(V!-mTB!gzivW4A0L6rWQ&j;fLjh`g0a&&`O~pWk5NT|>FB8;ak0fq96lk&+h+}(% z%fm}1piynwloWGN`R}^26jMhlC&}ub^2%AQ=50+=J0T^nc-eX#JNV=u-Gk@FG_5j!<{kcY4=z_(|I9m>4uF1-@m6-_|Btf!-^O_V z4=B5J?cLb*e{>HfiTOQDK-0M0S&|ObYh$wgr+$vxuiM1k4LIZE6liPMnWwlE7C0aw z8spOit91vzfYN`FKZUwhvB6f;#_oMg?zDU$v(2bRwi|^%fzn^ru>rWkMxwKpuTkVjwXMBelAKL z>zp9_qQ15PQfQ^fjByVABSHrjIHPPrLJWLZTeo}ev)(SbdVbTR% zSOpt&6*@^5IM5>w&N85;ZG=xB@aS@d(2TQ>${2kd$_U#$Q^>-=)-J_1p?p;N% z--x^XStmleIt7mG(_B8BVgY}iKzxR>a@LJoA7R?n4fmK88>hXOgs0TU?-6IvcYJ&b zA0NBMr$+!pVn+J;d1yd%s>QvI&ITD8`5~cj|Lho=b*?4x`bLrtgOl?@5DG5SdHW_R zCe65$nXXaUF}W$oq6La9Sx;GxbLqak zqr7%f0Z_=f>ND4!;-F-Y&Fe$OwkCsVca@fnKPd0+AeHQjp7k2AlEw)RhO?+!sIZ%D z46pioW{fp&%t=4+QYAJVeIyTr8vBjhcANs zcIx$|q0dadS-#{SJQZ(z!>~Vbcq>OnCur0ww=nhlRxXw<9~W?n$WttY`F~FN``=rK z|A!EK+wHX9lX6nWUg}xIXg~X-*(rI?rKj<%iq`>~P1Ya2^S0j<^5kasSN>)ZLSrkO} z$V3p{H?g8``RNLtd z&+}uXU0 z@>d*RDG~bG9rK$Z?7K*I-L!6)Q%1~6Wb!L#$qaA`fhC-$n*S?H4$3zMjE+H;z;)Y-2& zZ{D|ei1+bPv)1;#!=c@gX6=9Pda8WPP`~JC}mx+qm|7U>6lF|qKwCnyd+Ar9KVLA*-WLh+r0 zs|!%7l>NZ(Z;l@@$ke|Gf4@C_qJM}ndy;>OF%ug8C>lN+O}mhmKT_x|!VbDRO!MtJ zp&Tc#|5?FMT(}<9rT*}Ux>0o9HYoCs$eURPnS@15HqP}@#2CKg9-Ci_7|4E&LmjUu z5nc*qm1+b`tzmlH=P^Z$IdPHGBtIi%;&t(rGJA4Er_yfm*LU{OONXC!B|q`l(*=J} zt}2~;@AX061kNr!T@tZ>rf!M(j!loJEaO<$$MS`G{Wr6RmFF=L&9`)vdEhlCojDs{ z9wAhucHaqI9PJRKFsXS$N-WF+=FV9u`;bG>j20!Nh~emMr<|JC@743k`H#ph=K3$s zmV?YPw9g{H?61UB#`CZppE2a53SMH#bGQ29_2wzdSBEdXJEp?h+Uq^Odo5Z|=%kor zaBh&nG-jV+v?8znHtorj6BlVAE!Y8QEaZX|He|w%isgO!S?oTwnE*sdru`l~KY=@( zQ!tOkoazues!pQQHq~a8kRQJp&TV1J@aFRxgsHi?|A{FMYtS5L$*`_vXb|&C;Lhn7 z|0s7d&bCLLiN5!X{=$AB_jTLXLs{7VGTN(8Zy!N&vEL~r`98Nlr}1b5R(5-6A~c!u z@a!^5adeW*SxNVF{C7s*i?WM6bEczeVsl6iPyp+xW{b|| zdmd5QhMBfp5VFG_|5#8`<#v6^`W=t+&Fe?{`Gwc)rGG{rT0e;w3|tViFnMd0bjyMA z2=-tNEO(1+#?Z9Aw{u_pND2YTkfUbhEuO)&Yn1sT%WvP%m0bPr`mq*8VxL{J28tQ5*qP|pFW(7__;NO z@&1fru028i{p;bTv<7tmk-UfXB> zidT1q=H&LIdh0$K`9rVQG0c9^pL0IwCM@{Y3rg~yqSqT%gnufz`rZpIA6r1Fn(EI# z-I-l9B5^Z<=>O>!MY^OURk;^F7O@GX4_g=1RQ?PrE$>|M(P2B;82U4;#6CCq`fRd( zzHX%DOi!9tcurnUg(IaK=?=BRn^)gHWlprG()}!l+Owi0Rewm;eSLRlm*+1H^=O330;FNnqK+4C%#6Z$nqL#V1_44ff&$OY843{~A{MYpE>v>E`B# ze+(-L6>aqyD=hzRB>f|-^w(0E(i#;1M_B1*WiyhOq-J9q;2&j^sv24cahS~%gz(nl&a1unTn8$JoS+2VpY{xrb0{9$Pkf31o zCaqxU0lyARO)BrDTX!$%D=A$|EE- z07X2e(Kp@Kx%1^7xo2nPU>SKVA`OHn)BEUq?1E}6!;D8_>(z)XGf(aMGArZ>kS{HO+~F3O)F z3>(Pz1;E4MkDvlzsJ7C^K$grWEaWnfp=}UxhRQMp02T;^W}wKN0Q~W?3?Q`yVQ-^S zowqHDiW*xl3iXdxJCF*YZsTJ)j!mP()C2ExwlPox2-FGd5!b~tK?385b&awJ`jAX6 z?zI*Qk=8Hz$#dqN-8z-;w)9{OU^MnT5G*`SggIaVV>ccFF?g14S1f}pWsix&fG7yx z^;QKuG+dB8wH#Nz8^nk&hOOMtcK?D;xUeXalyq~Xrq6es57Q<6I6 zbGcWAC`(uYXi7H#P-wkI849l_kqLz0_;l$N0p~$jG|{F3z~lPZI94tL>#u_@Bn1ju zY0x0N>VdemM}qo5xDGy0qY#Q`hS{+*3>{Zhq0kS#u47v2v3g)vz}Bk`0N4VsC>0cO zp5)JLW#1x^i0Y7YfB?zZ1_ntG1ca#vn+gCFUwEPId@`6S_8Ng)Yk0lF45r<0GeEZS zaQ`hn#^(SX8;yn`(~wC9W_>JVnC;#1a{w@FTj6zCWda03p;E>^*Db{Ms9lBV-}Rao zCQJ8%RRBztYeFad*O6jmcX!rlSFFBlU$~(Z3)8bbW}%CTv>@!c3RW}($cF`RO9`OC zQh1D4-~jM#TKs9>#R7RLz$t1VQw_9LbW959z%YJ>vs0fJ#NK?j zCf%mXm6zoU0jQ(_3fn@g7}r4J;>Yey23qpSj$i7~HKFGAt%nF2PtaZ-2cE_XyNOZY zyLc>rE!zaGL_L1$ z$dr`Az1voJ2&sX!vaKRV_B8yOgGEIj1#Rs9K*Zv$TQ!QgP5Yg&9u$KAaAs{)E4~n9 zk6wRTMUCYMLrqUIDCq+l!5|hKfJqS#T+2S8IhNKT2Nix{K8B5Z1rNkE=9z4Z=wyol z3c~mKslbX@d_2i|vdE@nPdxwS0U-kBgKnpi64TvMF;}}rAyr#!JmdwwqpR8hakOE_ zcJ@e??_MS&UDtH%h=VlR;}fW;JxEwDsWv;VgvvEdE(`||@v`bdpZ`czXMvC5#g3Md zJ+V|0YhN$*Pf=so2nf4UP+}AYOk8VF=c%VRdpmGvrmckwR*eU=)${7u*hffDARN(w zUm(Jb>QaPIH7p*`o4SLwBXw}!DPYA8ysUi3-2!j{5YDRXmhqwh*a2p6As3JjRR4t! z8b9_uTTBo|0??!Z+G$+R6doMnZ_+`C3<+2&mY%(qYcD~t-C!h&B5Gi*9w!6?T9%ii zEMw8n$;;Q6&$DlQ+dR9JPkLM0lf4w>m3jf zbCJCiP&x0ZW?@5J?|Ezv*)2tri?IyYM7E?sKgpt=lCIp;gMP*#a;@z9S&hA$0S`UF zH`b_i@W4@K0FMs>HgDUclnL}IKNv3f%HfVo&_TQ@Mk6_^GPi9QSC#HwsbfuQb2 ze%eU!G(%yM5OxyjKMq)xMY6e?LK4);L;xQNVnmAO`5aAQA`5RL^8kS3+sORD800oi zbRXAxQkXqm9fb$bkiu9AR1h)_U^N|{bXekrwU> zV3R`1l-~8nP*E|PZDQysB*+DvV#wxGHVgVbB7q<0*y|2_I*Ayo0$#L05p_+eSOElg zz^Sw=%uS%uiWrG@Cq5i3=A1M57@a>!oHGupLxLDTvpO256E6++pG7v1geZ(s6bfkF z96a5OrH(h0%tFts(LO#7%eZfpc`-4g-GY8zaRmhe5P{XZ#CkViJkCGMTqg(w^-qJw zm%`lQsQ2CBeMB>_94J@{z`sEGz?QwP;3FMmF4i=20M6uUz<@V+<)t<&n=;T&(A-7_ zqHgo8fvCuXkaN_xzB-^jW1*)2Am-9g{xzz?H0kF!$h9?Ud>a275m@0kywA!HW(B|- zpyo&pkV|Qiy3jxjl#rRg9!;N63gO2CnTbG7BIp{Cc1{ZEF^LSt1BJHIG2hd9tS(T^ zpFQK6Asm)L;b!0dgae@w{#bt>a1wqijFVbq!~#LLM;lM{=Hk!~!J|b;=RUiF#dPTF zSj=kE;va~dHg-Cr?56$31J;TIkRQ>Umj_tr`$B+lAy@F3k3pwJz`~>yjwkeWBUz1;@LKm)fLxb?#PORZ(^ZxFMw^;XHM8#qCMy%Nzf=% zL0LW&E#>46pnb_v5MqURhSSr)pzgj8)Nus@OS2o~JbsjW2Un_hx1M0iR42Pq>xZBV z#|`Vwq8hBi(L~^v;i4~>?$Z+Qd7nk-Z|Ml*sVLl+(*RH}6M&s`D|AvXEz=6rOZoHi z?}e3w;i*nNy5Sjy#^ABQk2qfniCgLl#9HS>bxeued47}t%F|>e&a8PVpt&V~gF~Hp z?S`iTN)iR2A_9k>QWsUj7%{##+q1z0*u|{^um;quRa$UJo!X3^NcsOSa|?5{MBxI$tTuJ8(=^B z@l3yIdPJ23M>O08Pvcbc+8GYjs0UE3<$&(cQ#v*vRH` zon*b+T%)0_&Buotm@;%*G|Y37Al?N%-8n81hT6J>dW8p2 zrGeTCpmAMWS}HTmxZ)mPRkdoL@@kbEI#_QE4^YvjPw)TICf&SZm0XWF?Aj01iV zlYZd=F!~85RvpnIu(Q2U4v)(?Sux4+1h58R!N7dK(TBO-hpgGp)DvFU)N3>c7HlK= z@pjrVC3}WYJno@~7OJrm5QRf*b*gSAskD@z5C{c8>fb&Wt5w#kEv!-aRCD(;96dHt zWrPCc2y6G9tLd!(P@|r*KDmU%-`Dg3T$4v-d;_5IAYoS!1&+MIR{Z>>LLUye8wg+@ z2Xj+M$2dnI24uUT{;Jf`Mx|9&5rtj?T+pPs+4 zb6S7+HtZRs4>bDD-bSOEkOYKr708IZZFJacYK_1pQMZ?!w@^0@bbI7;F}D3;b45^# zaQoSCxBVUVe?>~~}Kx+N5Mk;3;SdX8a~*Eun`bssmO z&!xOie6&yEuuqD+Uq-cGj(nwG-nU;drTNyouJ3?;%79_* zfbr;n$>G3cZ^s$c!E;vzFZd2xqzqoF9rTKjvpgKM;{Ir(`q8e|n%nGmII?{t%gw`& zuH2v8Zhd6z9UQRvWG?;bLG33W)sG&vy`!Kv7QLSWuM7p99%KOyjqwc`^>)12|H$Sr zNQr(tIWcIbJoxlh?X#3Y6!a6aVQ3XJtba@?kO&PVJ@0A*-M(3yT`+hT06%gCvx#5I zzKjsZ-jNT1m0qM52aL4M(AQu!Sl4OA*N7-6VPPCOXGMk18fF6$I67{-V3B#aFRW$w zp=G-ENK4K4=|*IX`WB9Uj5K`d@N<}|M20UDn+Eh6k@^~n&f_F#_qe)@)QCbNJc0B) zKY%uEpSF4&$uHF@ES0nofVcoq&cLIO3Ep5^r^R3sW~4xC!ImvjpaRt|{HS9yu3$;h z1Rn;r007kx>G)jXtOS^h5GW8w=~kc@<~gePf#|k1 zYH!c=cxPc`6KuD#T7A(E*IIxgN*IGKy9t{=8qy4+nSMQ>$OMz$7 zu!mbz7}DJ3<=)-CY56wdU;nfd5&eIT?o2A%8#;Yp%K6BW^s|MxXQ?Wj81$U zcw!ORNt%asgRod+rBud9tpZ{mSy;N^9YD*6rQccuonC|TVK={Cf6@^HDyrJ-@CEB& z=}*-QJ@5k+4Got9KvAWj$0BPSsUY!p345t@^(*sXR#fqx|BJf!3~KUg`*uSJ9qGM> z-g_tkgb-TjMVf&0F4Coml7x;_DbhrGM?$Y6MU-AeKoRLpP`V&UcK-MMJnwVQJA2RU z*&p_vJ(G`QW^t`wu612&o#%1z^B6x_{7E?^NhC@IY+0wAIU?W&fRe$>7Jk5`G{O!J zd*AO@Higv5lDqa|Kf+Uw`>?Npo>b)ANCK47r9J$cF9y#Y^Q{|3*Al)nSx`>47V>lsBQYsntWS26R8%{CSc$6k&gV7Sa;S*jr z&Ln~_?arK5cnp>o-fwmLyDghFMf=Yiaaw#o>T%K8ZoEdtSPUJ**DDI zf*hrOr#UK8RW>;dU}14~>ek$JuFD-XMl6a*x^sH}S$rom?qS)oxlM+|z;fed@g1=T zP|v02m)&-697|cFi>__TGxyZ34eWNSIyEjVF0B_P>utW@KE1g*uPuLvRoPHss&R>m zMdu3S)0*uka8Q90rnsz90^{4JAcLdLb$_PU+R9BGc3NoBd(}Cn(vGe#J$9|?1YC6Y z_6mYRHzY-Z#S>x+v`dbOvS?MzCZKe)P*+f7k0UCE(JE~X!GB)?FEs^L^`4U*4W8<$ zVAB<#wfE`d%h8<-^Ba%dKK-Q+nKPSvcl$Y_w$jLMRj}E~bT%<&iX(}tF<^TUToo&N zAZiqsO^x>)YX@F((2Ycs%y79UDyYSAqeJlq>&vd3atozN9JM&?saka}(0vC5jCnXT|c?yw#k+L3EuL9=h@?dMSoJ zZE9@%^#jwsaZYz*rbTCWPV|L!LEz`BiC2x96_jwgP7s|jckl-$I;tp;GiM%y8o@=7 zN8TK^&S42DE%ijV|66FYuE4hl)&KzzoRtPOQ)#EWOth*#TZ)d=l3W&HYcZ@Z8+q{sas=dXP=cSBg+OC#Nxo=kH?sOza|(@&CY zT8mG@AR-e%rCto{z+jYigg+s(MIsD!NUc^>`a%nQ{FYkNZ=og!)Lt_b6==-d?{j}d zbO=9^xY0Ck+-T1>@W)-oA?6{*9ixDw!Bn{boJI=o=g*-OBRWHSEB0O|+u-;@JujN` z7>M0x-MsI;N7zWw9DWrq_3!FE{kf)PNVnI<;M}r)X1FNV({IiNm!hF+*J;1}onL&w z7Vuj&d%qvP|1*tnVsR}waQYzX`gGL-QI*BmcE|?0U)(Glug1206uVmMNcr?q9ZYBv z@A9RXA~{r}!DHHA-NlLa)uo0Y19ieFZEk(oG!oTzOa{1H|)3Y{{E zQc20zPORT9wYc7xBs(9ksE+2mhphOgd>;g}{Ub-FNl$(9p26}UM_a=#JuPF-3Cw=8Mx;3Vz;pE8Of+Kgck6+m4k}=6tkC25oCC8bSv#LS0@0y+@#eUil z8Yvlm)rylNAFPSYGmV*MkGKu$mx_%nBJ3#Avqo-8B!&b>T@z{2>mY9T{jk+CZa6ve zk^i<#l#cEnv!=WtjcvJ!>Iokw6O~WzHxxgHjT;o+D;&|URD2Zs!H=dn`&WxIbf;S1 z^Y)(qc?3Um%*bT$iHzti9Zrs{Gp#c@n@M`;uFM`jgP?d(@>!pkUnqQ{z|pKMGTKAK z_x^Y?n$DfawOT~B%OvNscKL#rr-AC#Y|eJ3J436dQC7meSA_IcTdc)ON&m=^>8owb z{v}5)tuc-_E*Ca`Se0Gl)>`c|TVq;kK5r%s5qZ$MZ#EKcQKowybq0HA^G&M1xr4s` zHvOULUL$8)p=^XqxkbeO{wL1c)_NG7sI?Fxdtm=uCBfjw)06$r*pmcv?<9kVcZ8l; zjM=r-dOhB;gw)P=&u%s5)f+jglR+Dw$yL*uiQR|(SorMK>gJG8Z?R!&6EYpsmGI03;0&@#rBU( z=iuYv;9_f;QLuIAeg=%lFE1UY1pP*>~LO zaV5AXwmNk~H36G)r+(TJWvC=whnz8iLTxb>DN1fEgUZ0fsK*m0GZzPRKUqMWym0y* zhE&<9t;gDAmZoGOnP~c{3G(}aqFa%E9c()ekfh!ZiRKu3(KEzH)$xMOrl7|h`P*j+ z`2~9dALrj2#!6PoCwqDp2Q`?L$H`2Bqa^%(fpV-g2_{k7N#m%o_T0gfS+-4vA03R{ zyPA#3Vs}b)c^Jp+AABOXiGt6nl#G}=4C``ucXU`Dkdw9=Pc;U+%x9=C$lM-~z zN*Fsk`k+2wf=CA|sV^74nC8Sp>!e^ooM4z#85tLLgQHNWU231GaFLp1Ix%Lc43cEt zn3<@Xv#4~SD140lIeP#!-sf84Y#+Si#MtIr2x{d$(x2nQw;7ZA;D3nP8&5kfslUuJMK4q6phZAdbW%5p+5>BzT%LSfM_}p7(Ky}X)%!= zAbbGG`G|lWhIF_j;$*@@ILGud$yAbdm_3Jj>GWz{X5xcTdc;7=e>M{1N_Fu-Fmfrp z{<6V$@}*5d3Pb@%vEK27)J0LTIrvxxraR#W#)s;xFM7U~4pexRy8 zK3xZLYd4DHI8H_o?NkL|uL8)j4YpgO$*TavRZZLv`-s2xkW~TJ@-YD&NN7>aJqH5! z-NZXV{Xt+N>Il@EBe<@^IZKtCM@YqjHFoy3V_*RV|lME>ENuad;0=7>xexr?Gu%D8>#X*dv<9A4G*@P__kxnh^Z^`D3*MY!2U+3i2Oq& z6$msO-LRJ!Rz$=J?wF3!l3NlWKao?bLQ+=&GNaios5F8-q6s@d;nOIx(CENRAPuiF z%3IizDki>@!1;*K7s+ntjB@Y!cs}+Ky8My3yEW2GiQcrE=?W+^ok-cJD2l)*CkEPg z0Kz?hqDOJAR3LHy%4wJ!x0A>y7(hoeaW1ol?2 zYHI^d7@(jIK2C5+WAKqGZt z@j*-|)Nw4S0)bryUK|21!dsP_nOfOJw%$)a@)Av)hUQM2Bo##u4ackkq9JJsKICYi z#vRQ|7LwCACt@@|Y(Q7JwB`jNLm$3bCMMF4P;?ptaZdxsQd+l;?FKQr-P>@E4DJ&FUBPY(zPaC%zPE9<=c%)_VWR^FG$RZRUO9unc zF%5B70hpPxypc1Mv^7F{Di#&66o(ziCeL*(5tQfa^Pg?vsPL~*kWkjI*MxrAf-mNVI zs4+V10JOeUEXm)Y81uzQ1&S%fxJaZ@xI&z(F(~*FU83A4^Xjg^T#cf#FmEOy&oY~} z0v>uSmK>>lhj>oD@3VzQP4J;4X9qwO2GZ=qXWli`IZd=1M(Y01%_x6c*#um>H$dj0 zR(%E67_)4KsbN;Nm`1E9!DPX!z2&aTdKswa-6-Os1lA)w<}@_NmQ?U%oM|7@MrM)X zAkhh?)T(4tr5GpE*9|5H62VaXq08V!f)S-Jv=R6WRW_4vQFMYa8jpt_J#M)DvD~GJ z((Mqz{Fvsp0&@C|1z8a~`^9>LiP*M!yzA#)9AY9DW3Yrr1Q<+aq+l$c$Afb}B-jeQ zo&{Xux&MY8K@9v18xawE+J67$8JG5~B_96kD;Tp%ps9`NcZu~*_m(|LX zSXu=O zD37zd1P-PFw;oNNfBUjyE?g{1Mlon&hH=6wCJVb90g(D|q1csXm`wO(w2Cabh!s$I z*t!|%SpL*`=G(^cHzX|;idt|p<#8 z&PGev?zWNkA;ihfvNBOK|Bi#axLUyByu*iucxPONlhu&$mibRf&QmF?i>+^m828VO z_77bwe70;T+#Y?{>Y80>E|GdAEBioyM~Pr3@R^jIoRjN?TkspVhy3nWi8}x#Ve0E0 z|84ibraSwjyHj6wJSg6@Qthf->_qx_VB;pmqA%(bSHxmgHjV?{Bos=Z#Csc!yZ3>6 zI!Yc1x1uj5J${|+0E>f?alX|HSly7?<_9s3}{_NfrOIB|o-1o-ok9Ed? zO6{QG^Pyld*|39BFYk{Ox}zN4A7^=#$~2dAmoS zeI6~u^7^jxE)*Whn(*;@@qL**{5#Eu<*AXJux@Bq@siE;K-$r+i~Hn!^5K#5co%KIn^LL2d zN?qPg)pud(zVpL+*I{`(>=yEYRuYR%IVO(6)R@14tb7l7d!n)}{-k$@D?RVH0GG z$%LOnW?&YZqZyK*EwLe}59G2a`(#VnWtech@$?O%%U6Ve>F}fUb+nAT<&@&NQ^&$Z za?PH2oE_8Mv8NK^%`#dNdqGvvb_<(Wa1ckhv{}xDCnJGp5dmq=T#!|a(e8y$2$4$> zatIM;ozrGp6yteH^kv%KC+nM7UBw1tI2lCY>@VtyW)`Pe>wBZ1s0js}d zh#ye+o|NSUXVnvs`^AM^6JZ^-gYvooJYqyH9ic9ZA^wk)zBsHsA-P~I^)9~NAgEMZ9@mlZ z@JCD}jL`SjgA-NTKcAui; zT|5RvoY5j6nDbZN3p{e^y` zki6qsx*Hkf@i`K3EoU)uhbm^R4tWQFBDDfOvy3(hr4Lu=rq20-xQ_c^0LglVPbDb~ zmsI3jH9rsdUFw9wk};vGYJX4I_ZR_K;7qq#RRHUoIQb&L)~l|-qIWoTL!<|q6o78p zIcs(fw^&?$UJLLzkNu97-MjE38*Oqj?g?YczCQ%m9(y~p2nmP9wrDqVyi&FHxc~U& zHSFUtwPg)0@|iY%d=QYJt5p7%eH&Tp?MUcpY9Vg(c~YmlFR^$q@TXkB!R}Aa;WVzh z;rhRSWq_QQgw05U*KDa1-ilwAEHo|?nqZ|L4QojxCq+uoxzhL_eIN_R&W0-d{*{y( z3B*nuV;X5V=oELUc}Gmj5DmQQ#3eh2w$P9rIpm8!$Ho0YTZRB&7(cGs&bQOi|^W@uC71eaR&EO8LSkH%sp#2mD1W7d#96pDg^0rJf znowuLf!+FNlpH#b`98bNbj!p@n+T<$QwbKmf=%`EsJg_ z?#eW56pC1)2MK366Ai?pa#z?$Q7s`y#;fj#E-c4p3-PfB2`ZQ5>Lf(>!AS+pj$Tpn z^q7p%pc^x$HDh{B5^bEm4=4(ORE}<#u3U7~w#LwymM#cI?Hw@%B3V^e$ znw#e_5{yjE@CR1<$N^%G2on-AiQx+)F`*6-bpje4i_LHopU=F#SK^)$@BSLTOp)h6 zzL-!g0R`$39$YrFf?I9^b;VAP1PM4E{=wG(af6jA1E&pyUl`0K7vT%0nFUDm)Kps`@KRsSQifFbZ?7<@J6Z zP4-xn6b3zQQNIU4_wk+W`t|edL~s?S)2;92H7=OPW>5s4!L1xmG3rJk?U>UkR$9o6 z1_)U;w~(Z_>o6|f&U8a+%v?HN40_q<@~h&MM#4xtwOWAW(ppK7&se9LAbzSfr@h9#bPq>n`tfx z*r`gMZhjG!0cw)F@pAmpmNWzd2?|$1f=H8`$r&sSjy@gZvdJ^O>P0BV zDu);eFgVfYRcTZs-jJBCNdnZWpV@m!hd{ial(}b>Q;2GMrEV3^cYKgYaFNxFYMtD- zfSa9Y$%aL%=`H0r${rI9E zfzR`{5k;0ZjL!`Kib+qCZ5RWnY#R*-Be)U;fRe~;M{*VBX6jzeq5?r!zwnuK4%FKL z#7%`q+#9InLGdFdxFm`|6iE>NX&rd5>ma4Y3#97-5QkP}8+vfzZ%%j!YC6WDj4@rI z9K0|1uRw%7jV<>R(Nwy%0#>3BIV#a30!6EszFQNj;jmTkH>nTmZ9G859tl=tycX>R zuQ;`f!(;9a%@9~eB59G&W9ws0V`g0%M$_iH@=kthu}v%m^(TG^P$;&=TTtN3m6PM! zA|j>5^pxLMJhTSY_aK2@l@7~A7-@wAM_({LXXqg7uwSe#C3h4Q;aaiNaj@dEO4S%1 zeRodko|H!d>iNnzE3}ChF`15sctH62EL4prkw&z;aX|0a6J4`{bqy7ghjkZcy3SK* z(P}Ck;jW3kI}g^$$`7*$K;z^g!CYdV!)IQJ&^Vc<{5t^$=B>(up1b41D|1EjdGB*6 zh>ekP@|c&YbqGWH*MT`7g|wAetM%>oMn(*+wODd5C6M^!q&rL+uL&Ic-E3;7BEgH% zcmCE}5;t2~8zWmN7!X;#*IBg0@lsiM39}xLRli~30LrI*Q3*TKM9F}u=B4*LS~X^6 zFWrjRh!0G@&okGdYF0J}<)>{H_?_hMV5#nHd_Ht6UFP(+eU`r#-!50oL}Du& zPe-w;Z`8mXxju0qzwYW8}Q>iH1x!0~Ov!p90o{SP)PJ*BT$c6Xh8TLq`X6iH^@o}k0xc8B%CUu(bGGGrv%O?-AvlbF87T_7fW-64fChw}DBivu_$Ee-G<%9Ep9p znK4QYC#&u`EyOCn(9bxV$yl+=CA!+WYW+j}GUWHyH{Cy!h^_^M_AbaP?|N#uM?BrJ zyXy75-Om2?cy~eZ(tt%Jv#x>nAn@Jw3RdM3TKV^B45#b{r@_@+!|i!9_FyN(^m;=A zdxbltT#Z!ybJ&3MhQGt!8qwUQFJSM0@feEma3wALML=;dzFZN$3K*nS1Tq8@SQHW1 zfeGD;2z|gr!9_&Rz{Igd#3^8s>>?7~Ri&gsg&uqaSY15xrDD>cYTp0^qXq2)lKBwc zsraCT+dO>pfr49yG-VJ%w+8VTq}0VGP_})Lx=|Oo8F2fwD$xRer$4Bqk1twK#4!0? zYPF9d4Jm@u;BirN1FJL0eMLlQ@_g!7JpjJp#<_H`uxjXH(y zpg;sr9;pFs0nnvr@bJQU9N^q;T%3Qny3K(6`rLfIV1x&df(`GEcL`NmA2qL|6*2q{ zIvUafqt(Ud;dhe2l|uHYGi>4^c-48v*R_`WAd*1l+bDispoBEH1pfdVjgwTg215&6 zvr2pu+Pzc~D{(EutSqzP_%syr${^ye^C7&jEW-wr}rfC4TqT3vV~bq;Px>ZElWsvusv0XV57kcW3b;s!`@GswP- zhft2MW% zh__S)@puFWl@L)RbsO9{NYbB3M52ZWF+ZXwibfQz?L{a6<|FeOpb$lKnpJRi;5mCa z>)-Nm3}Au$*_#wM15%J;ajI?V%YJe%plE0X|0dkykDB4i8V-#@g)A|gN?8nVdG*ol4BTwv7$dnTj@iU-T(0s~OJ1Y+^z8QZ`lD z`nktfDMHJfegYK#I5Ok_?yyBYtSHjV>yt{tcX#_h?FaC3a}KZBAm7FdHr!#K?h|MN z^W*?rt=(KX@PoX7L>(yci&ERkA`-TK>ga6=4G*HC3VvSR$nAb9Lwv*7_e!EbB0so5 z7n+=(?{3X1wI5pKph8@@AK}JB7K`UaQJJj8%rm`BnZjjR7)|0g014%`LdR$ux~JY^ z2ZL@0kpY{*+ioHq?o5)qQeOB7mwswNe3IyXQt@q4!@-DW8wwtS5s4Zc2LOSfK5mx{ zC+;=XI#jMWuwbA%;e@|{#ltnF1fj1^CJM|$N59-hht{l;a%?CN<3-&@Njp@sT9uMq z_ET?eLO$V9qyYq?t2u)Jcglnii{;{McqBnEtyv^F2Y+EoSuT7%xuRw_Nu4R$O`t-E z2UfwKRx09B8iaPPj*U*=cJLM7aWNIP670{ItjbKOlwR(m__Qi@0ORP1%I(^bk5vob zFMY|d4ROJvh<3DHK{W>eGh^M|T%5T#`(3+GorMpX$Tw9nE`}UC>`775%2+|s9Dv1} z-B6Yq&Ac6xSwJ=^-W|3Y{vNLQE;Pao^_0f3A^`pTRz0_=O2lt~0#sFF=uPidBGS=6 z_{P1?t(4!ahE^Jg=onz%6h_qHJ>HJVULn;dRm*4-(r;RIQ7mrsg458fg@iw(xEui6nv%^eNvYws;XdLc3)rGh!EQ?+i`|TWmUiK# z1(f@%hzYa|P}7{xU9OrXTI@v| zkYyN?2figgI@`kko+IK{s5ph zp}Uu@i^xHPNPHDNI;Po_%Q9t<{p>(V5}sLD%No>I{KrQi04*H^I4TsgsuQ$w>F*u| zpUM3iXyfW=1Ku(FMf_**eC7G>CY+&8jeQx#x{Sxu0X?=9gmbx>bW zTiu<9Uq0fZY0-Yqpy4MH+%>!XI))xt2~}H`IQmI`@_e*DJ20`~foQ!&(hihX`)Fl={2*@r)vX@^u9+oXh+%=F;CeZ9CFCI? z&$~f^?>>S&N9lIbguz-A?}h^PK{E*y^xE4jXHxO8*jnx=P3h@3lFeG;f@(AYa0bDC z3c-GsPy0g8-z!8{IR6Y(#Re+Z#_|sz2f5+l|5%UJasgL86pHfhP}$>-E=9PY_}sOm zILnm;DioZhq4})wPooRUnq~RU6nUE7mN_7zs@w)z5T_2Db3t~(Nn}yZ~-(~G~TGxvQEj?PTcV!)j+8ik59G?@~ z=bzg$wmC`2Im-uIVh0_^&h3@tTrJyN?c45aVlQ-zf=dshW9Xe6rwT0-Heh(d-R z!cVg!+DIYBvIF?kA;c0e!*v9%%4Gj!T-ELwuDGo2IqLZI`71T=&5O1NSg0`2hZ=}58c z%(B12{dFoM7>~L{d}qPbRl;v{;xGB< zlkC#D%?xyc9<;#&>r~iAG7;Mo4#d6`U&BUSE^qMWnpO z@7ErL0>Tx|;Gm*`k*OyTaD-ghAgdWnD!wOq;mIJaeDCW}DVLt9hbEG%cTx zU|=HG0N*lP%1`GE} z3^16K_ucG`h)L|lM|$X5Q1Zh!{*9+m|v_*guzIWUws9xNaXk0D`1r;i0wJ8LEH-8??Kq;^51 z^XOzl!f0G|vqbK<1zpj&>F093JtqyObvG>N&Av+-FqR`x+>4&+cM|o$m>Qsa)S}}J z)4)Y9_FKX;u)F#}KRa%(wt21cQy^a=tx-m$@~gux-gpXj*h?Qx84LZBO$Y1F zu2a&_udH%iNFHj`X4l&grEbphwU0&NTU(L#NL@%6toFCcuspkA3lG|xtL8~52zQ@) zZJw}B@*;M!MsGvSmF0EyO{m3?xbu{7;KPLm$B)ue2#fb50l}4>FCrfVamAb^2{Z=EQt^7(o)WFUof4;7 zubgTr2e8DA2xNBTWLPoU2?X)ru!wLV;PT}-aV^|T45NaRNJY?$3YI4ss{d~JI>b~L ze9Wgo@pQ>`tT-BYuj)>S^_||&cBQ^;EE0;9*~HSYGGgE^Sl|^N<)~YsIUFpVAK0X` zLk3E`|7Jvp{z2x9mU&InkSpB`ib8o8f&U!Lfd_gn9fh|^CaS@HPNrzJJgu4IU>o>B z?i+ba=BjWg5B%;AT_PHg22?xGyX-hNOS`~vRz-mQF2jxpb_c$r|@mY`CO7mmTEYzJNGG5GL>Dk}E zzoA$+c?}#RyY3EQj|ZKF0xPUX_Ei7#W>mdx&PB}hFwyDRFAD?(qL{cENem=r-wmI) zLYmv&yHKjGf(q?NWwq8u3pR++`g0d^B=WIygBr&-YWcRQd3K@&0rCG zBJC#i%aHz{a0&AApy^Y^;o-nWMgH*zsg`S>3-HfB!hH`&zq(tJxr_T3F@~_6O;@+< z{dBwgZSU-DZCelDI8l4(>Ed0+R~KK(qk7JkCtP0fE!gncUaVfVzPeoJ;(73UGjQiA zANIS*v+BUL80_-pemy5i$X08r!bF07oZX)zvhKp06TQ)APY!b}N3I%&7+;5>5cf3Wrd83R zn`w%jnq=tDqE+JOmhZ?oj8Uuyuk~+<1{Q}>qotCpp%F9Bd%sb|K|ifggq@@gwopp_ z6pWLPx6KHz#p5~AbuMa3)Eqsrr`uo}A$}p2 zO`Ys{u+BWcs3lL6mh79k!IsRZt++y+n%wNnakcm{>u@F&MORh|fFjg6Xw+jgHnH5y z%gDiqCijHSg={y_n6ccHtE^U&85|X0sYM zouMDjDc?++W_P-jQFX3U5|*gH?1%6wdI-TA7H8S_`pPA9b8&j+(w85jC#W4*`fySxOl~8BxY6w}IJh!7OWu6z*+*vYmPirppQmnMJ z-k@-z@GlfH-_yPS#q?z_U4>NEp1!B`z5ErrO6dHaVc3^@uW#w9)adt(clP#@12UV- zKAL&yoQHklV#!J{$=Wxowl=S|qp!U`zi-j`#k}DeeVrry537+pjY^LB!d5e3>C>>; z=3e?Y{#ie4_pB|uSLhqU=6~2-eX)FZOOHX(A2^WMSPgP~uHHq|Mttu2^g?>xEolN?)-rp^y~epXACXH^oJfgHr8{646W7X^&S~li!V}I8b1aRdE469d|hE^ z@0>sM3Hyqxu4m}zr~m1fU}L+%!Pq%s{xcwk)n?~KX6H=S&!B3X2S4l>yO-vF1_%B~ z-+9K^wM_pjbi~H)w2<-b-j-Ns)_z|&y&C&(XcN0$ zo3}g3Mbg?$vUHgB?3bBQ3`Y59j(-TU!Eu^jbld2O~>gs80d|1C^J|0&SEnoFF1`2ibl6S$J!@{g7?2~%sE?%s{JQY zTz`k}<5c9y?d|^{#n**C%tZd3*#N5{r7owQQF53uYcMkGrbbgtl!D=G+#bfU?r$x* zGNIC2&)x`kJSv=Dfo@l#gl6%r9otDpY-*cJ}|0$3rm1xi7 zr9?m5Cq8xWN4&&vFpd`kdyOFh3%i?|aXq)^Fw+ym+L{`(U>)*UtaFmU)5SnMZeu>6 ze@;a_YjMmdx=M(UPZKVTr4#XBb~W`-i%!x?s{+YhQ9pMa5P-kHCRJDoC8IM9b@GH; zTpys`NK=t+lLuweV-B~5TaOTNfO~@Ks5t4NSqrNT`|2{ z4%MfzdIAF6#)N`yrdAI~OlkTt@b440>N~HFht-&=luaQteAoQMLpOmR+!h}3JsJQJ zh)$>D>!5bvQKUg$og1#oROQ&d>Jn{b;pH@1t5e#ni`RwHN3TtDvpq zF1?;n=1eKU_rFxfti0w1C#iwdN`z6omen938lbwhD(}e$(bM@c*w~RGmDmjZ-l4{W zK(Ug^`^EEhuS}@1bdQ~LZw6DQfaen?IlC-$@-@a zC`=^_qN3Y({y~cGRaL(EvtQT#^UwdOs=ALz;^yc*qwmcz4k>gAAMe}Av)y$-(IeA%!N8J*v7`{!V4YwG&wBTiL)+TQR$`EsWLdwcWSJ~c2N z^Bpz~>jSbJA&Hg2%;$XW6h)3tjH3Mr`3%mcI)3UgRxar74t{Zf|sDk4*}C>BXxo=2-{ z9~HkGr-Z&Qy}NHh88K`k|LlDnm`G&6X7}gh zWgmHkWSq{p6U%ANuzrQ~%aL(6#nasBqzXu-&V-lsY2M;^g-5!8Ql;{a&Q$o9)56Q~N|oOu*r{iKPG1A=RKbXJr_n5DMZ^YG zaK_Q;SjDqqs^lsS0bP?hH6+))>MAYD#C(oNkYc<`q7eSPmT1IUsh~l%uI1=#cGp?C zWODU?!zL9bstrR%=l&Zu8K?WHgyp;nVNhfGa`aP$;(4`ka*bJ~?tG2)d5zUXjYa$D z{G0IeT8BHeRv&dgH|3qzc^K4MFN}U}>pHLZORmNBP%m_SIe!y6QET^mbfNdpc?0rJ zodeFP5tQ+kt3d$Ij)K48{Dl><`DO~mNw&B-b#gEZ#2u8 zjRgD;CX)(J5&*$rg8;->z~8^D3dRm<;UHRJ+hNSV#Y;)?ekDWCvCHN+@~J%i0Zi&D zH<`zr!s&t}O^6X`F48y&n?8r5wD6KsiOkJY-ReU>m_OanNkG%tY;{<(1&D0 z`V>JqjI(C6aVd^8`CqI*+_F*kFKF2RCSJlp!@iBRH&{j@|0Q0MT+KYD5y34RjT@my z`^6gSolRR~IWqV7Y27oS0Zi5L90px2dvj%R-oOPhmzN6|=dnVA>vJaIfq~ZE;qrfr zmwtWQA`uE*m87trTyFmdN5*Hl(i46pG*D&m+T(5aFCjx-^U+dtMWZo@^^o+6LpXuG`e;#MFrV3%gd9`x< zrzHcI=uDY)n#y#9)u*Y*77QF-zQjEh8~}H8xct^Y0ZSvzl}6$c^Je&!r&auME zUYW@maNS&v#{*hSvL#+kxapOB$mMwGcN?Ys&-A(+&evMbtgA-g5Y)-I%_i9YBu@g5 z3Lpz``tJu8K}o#+$TNz6lD7sU!suFG^uFrM~b$#ZVKzvl9va`RVW?DHIJ0zaCMk! z@+Ht4)=%Ocfj?Hhxsua6u6fIB!T(Wy*>)*&5m4HiZBBQ_`_t6CI$fJ7HKNu!44*w1 zu2g7AH%qqesPvk}IZ*5wWs(AMEHHP1oZ??7UC6!E2`EjkBmG zg=sRi7O6WL`g2#a$R=ZPZTpJmltPuOR0Cf}vufXlpC4&z#5dF}VMy?S|C1^=JO|uR zsBnP~0$@qlc76Y0L}Kanhb4>O#gX0lkdHX#?2Yn}E?JThW`jnV!A*~)U1$}&3A?Kf zfFGY@{O~)6H)mreXibm0h6;o}=u`zS29XwwY$Zy1!4v*9nATL>V9ZP7GVl4}uX)C} zH`u*>PAIWH_

rKjQ82zXsxp8_13JzXn3WZ#(Q)q#Ai=ZQePaZ~}K#XiSUOU56|D z7O8@n_cX1vqHMLAq~N4>?NPR-iX`(CU-dF=-w>Au-*XuM=O$IEHCe=hs~^5Y5JJVF z{7*pi;wAP!q5g9|yzyKC!~infB`^eFhX#N9uDpxF4zsZYi?a?y8V^&E{Z30xhp%@1 z-5A(P%$AxT@LUchFhoRq7toPbr;n*B4BR@-RaK;6g0aKw(eA(O@1luNz`usVz{c2g`IhZdP zN7r2YmdunXE3CVeu9!%XAzN7jpV0CTeB~pFt%{O+#d5 z;fGBAs|cLJRX9kyLF8`8&g@h4x%7k2O|Pvq>AhMv-k4XdfB3ubV;O3NmE8Ng>Amt! z0y|0{rO9L==1GL7s@#rwq|JbDRN$9O+mIxWO}Wh%O`Cr=hV6Mwr*I+&4qq{?bt`z& zs^re3{O(fwmtc0-O7>ry^Iw`QpGx<#ZbPhFv;ua5p17g3SCb{qCUw4wVZypn?Dby5 z&U_0O4t^5<#o9=vWlvFide9e(J(Zt>lzdh!_;Os(r=QHBhWnFDl=AN#rQWRd+r+VYpwd$MHZ#K zQ1vMql~7uJiCV#?G1YgT+j?R>$J?xaZ2snX4-ou&Gt59&%#vz3==dwtR~bQdSKY8G z-AMC-d+;T}2p|_S3%ZviGaH(bVw6*zJ(0hXCX-73&hv`Oll9dGIsePEy~@|QReRjd zoC(>y#mccC(w~NUoqZ2U)6!m34HQ)5EYH^6$}wFE9n8^s^{k8fo{+G4N>vJle41Yc zjb;sOp%pTk;ifp!m7!Vpg>o#|K@Aa< z-b}-mp7lR|JN^K1JRN}X{|b^{QFqW5&A*?xqW6~RaqC{mP~=aV@UOdv#UE4IlyrL# zCr+IyocC(H6`IQQl2|QAGndj=^j-+K@7s1ZZcU(}A*2R-6FXCpYH`9(tzT_RsAW%EnkVzb-C((d+))%}`2qLbfN=T>wUx1amLEkERCwz0T}seyfEw)WF8Ma~wWs&)w(C zy({{y(`Jqd8ySTzu%ZsSEe|f-eQnjX6aIHFC4X(}&wY8f=iA=7jgh`dFM&#%1%dGJ zA2V}yD7GPa`w$m)cbaD;t{IcU+&8#fv3OvL!3X1~A5?cdWPxZbh6o7V3@XctI1Bqk zX9#Y*&=IP`tUs5TyqQD9`<59yK?Q1FmY~7AL^yDOTxPNfUG*mu#naH!DdDp-V$v+% z9vEfTC+58ZZtm#aN#(QYzy}%Rckj=-+)pUqQtmCA#+fveI!1+RZ=$%LSZ2Q<;dO`6 zj7QNGg0?jL#Dgdtmt2fTl?hZ7jd%vCF$1bEMPG7z5$qW!NW_l{7HfJ7yKsr%zlEhy zU?Et%YPre6J{Gt9 z)=PSCN2-4H5=Lp%VdQ1^=Z*2dYZzfDr^>SKF`Gx2n8mrktZjKFIV?@&id3NMV zM3&ML8XYp> zzZU;6*?;}Mwnp2AGudtPmzb-01&5@oQu)nf&o>uFUUQ{ayLrzKDfSAxc}T@>jdi;A zO8QFL*W9zdk%>Z^;9pdSB(ui?UPqu4A(p8*6w;l%uOpzAua7BrY!>X=$nne524J3s zW@D=Io)>Q##{0be>HXK0&v486+G}1fab>P8-seBL)Sciy+n?sV|A7Pn^rPFI$fsU1 zL!aFCxhJwmA+&`D%lqSa9GuAe8Sp@jO}?SLEFB=|9E^85!gYGdB6~O(E(CY}Iw2vV zGP3nZD^$~mBE27AgZ)gw$+C&my;hFEGIVLcyOkz-d}M^f?AljjIE9Xk7!29C!e#fb z1d(v8FEsX+@x1!zAD3w*S+*#^Uwjbv9V?$G&>3ir5<(m&oC4#pjy0~14!F0b#Ss{8 zbd6$nW0;u&YdAjwUB9Gp8-_^UPIs|9b#~Rl9>ftegi>m}WPrOq4g5VCPKz0g609P? zFE+sZPvb0XlI575!Y}HiA(O};4u%NPIo>baIaq`gAHpLn;=k!I zvaTTVE;NKv6}^dJ&D!DWZLTytehFT(5P~(1+s6~S=!!6J3d5HdRh8M?4kcpf4t#l_&{r#o_)@3!f-Z3?eKJGWl3*E1!CxrX^D{T|Az}-SLsJl%PaCo6PI} z@TRU*)qyXH!gPedLH3PGVdI?PRF2kr0}&-LgA>PjCo_rgPogdx25(`)@5c2ea*Tqh zW__N0)ZJK$+dKU_Zv4W!rDLx>^-zF6tEuDQC)Y1Kr(-3DGnD09`En4a(Ev8O^*|^Y;M-t~uqhHzuQQo+Vt38C=x40SwMC zDkf#SiD1#Yq4>2f!li6m_GXUSouFM$I+*?h-=*sQXe=?IfvLqtD^eQ_IZ?y)`Uhum z%bDjTywaNZ$I~1e9UMk;qxhOfX0A7PeR0Z#H%wDpgJfq3^eBmS_+IPJh38&j3tp%P zkKQG#3DRftO*&QI_4SJHHHRQkqfI171~jxhPVl0u3Y}6_7$1!H-tzH^W+}mU-$;b< zpH4D_UhHohx!;AQurRzxS2bkM1K}~AUpHclWnk9_LlOXtj}(si_qIjKt3e^yC>@|a ztS}!URTY?UVe;c?GC82w*^z6{8`@0t84EQa3Wj8+KR>*XZz2_Hgl-sUFRvrHuO|8_ z$jH?1$!o2Hf-S{Ct(X^SO)31N%^F1I%Imu~#3fvb00P;j%T`T8mbKk-^%G*|qv~Ws zcaB_4XJZ^bOh=0vbw-ulq|HS1x5agFgowYsLVJ%d4dDinR|F|2{2y zAP6FgAW*@NtmbDr zFu6wyW&s>4p3Vn^0M#OegQ}+?xdL=g86tu=GQ(*KP%AT^ZcN8vNN||4Xj@Vc?VzoT zvk2JBhO(kNLe3M`KE)a1c;YDX9QJ-7_*laZ(6?L*c=3(P-LrbXo1dJ7pq1xjrl%d_ z`+XY=U$KxY5v=&`YTshxJ*N38PxB3}dB_sQOq&26Z*LMIx}IK6YmIDUsH$|ViCbl_ zaV_uRIyHZV%;)xp=4qj?Tf@m>I_(BTi-3XWwqufP{4Dv#qJYp(p=7y_LL`6L?pqq7zy4iyx-N(= z#gbB5p!1`0pI((2P6;>2=G>i#5&rT=v-fra1dVkEDnsG`Z}w(-zmudQc(9ZFyV*NM zN6%q5)!=utw~6P$ZaSPb`z6CB?f;Jwta-=7%0FA=zaD<*Mq@wvvqhe%{HS(J@OO`d z+<&S%Wk3G2%H&=7f2unD--t?|Ln8sF(!;Ax+u~}(b`|PkdA;{4uYOmZK3CztP|S{h z+;hDZv)+EfHwLddJ-*(KV$Ky3+2V{H+Z+_Hy7`hV{Q`Rz)6UxaOHTTW);&^+_OZ

=YkqqgFO7V1JSP8H_~b6F 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 z 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 Date: Sat, 31 May 2025 20:49:20 +0900 Subject: [PATCH 04/16] =?UTF-8?q?docs:=20=EB=A6=AC=EB=93=9C=EB=AF=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 692ebe4..d6630d6 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@

example-form

+ ### 1. 온보딩 등록 폼 공통 요구사항 - [ ] 4단계로 구성된 프로필 등록 폼 구현 (닉네임 → 성별 → 선호 장르 → 인생 영화 혹은 드라마) From ca63d649deaed75bc01e619aa816d3e1825bb1be Mon Sep 17 00:00:00 2001 From: junny97 Date: Wed, 4 Jun 2025 15:27:10 +0900 Subject: [PATCH 05/16] =?UTF-8?q?chore:=20=20=ED=94=84=EB=A1=9C=EC=A0=9D?= =?UTF-8?q?=ED=8A=B8=20=ED=95=84=EC=9A=94=20=ED=8C=A8=ED=82=A4=EC=A7=80=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 14 +- pnpm-lock.yaml | 1070 ++++++++++++++++++++++++++++++++-- src/App.tsx | 11 +- src/index.css | 1 + src/main.tsx | 29 +- src/pages/OnboardingPage.tsx | 3 + tsconfig.app.json | 5 + tsconfig.node.json | 1 - vite.config.ts | 14 +- 9 files changed, 1089 insertions(+), 59 deletions(-) create mode 100644 src/pages/OnboardingPage.tsx diff --git a/package.json b/package.json index 8368353..c99ef6a 100644 --- a/package.json +++ b/package.json @@ -10,13 +10,25 @@ "preview": "vite preview" }, "dependencies": { + "@hookform/resolvers": "^5.0.1", + "@tailwindcss/vite": "^4.1.8", + "@tanstack/react-query": "^5.80.2", + "axios": "^1.9.0", "react": "^19.1.0", - "react-dom": "^19.1.0" + "react-dom": "^19.1.0", + "react-hook-form": "^7.57.0", + "react-router-dom": "^7.6.2", + "tailwindcss": "^4.1.8", + "zod": "^3.25.50" }, "devDependencies": { "@eslint/js": "^9.25.0", + "@hookform/devtools": "^4.4.0", + "@tanstack/react-query-devtools": "^5.80.2", + "@types/node": "^22.15.29", "@types/react": "^19.1.2", "@types/react-dom": "^19.1.2", + "@types/react-router-dom": "^5.3.3", "@vitejs/plugin-react": "^4.4.1", "eslint": "^9.25.0", "eslint-plugin-react-hooks": "^5.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8f55bd8..97655e7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,34 +8,70 @@ importers: .: dependencies: + '@hookform/resolvers': + specifier: ^5.0.1 + version: 5.0.1(react-hook-form@7.57.0(react@19.1.0)) + '@tailwindcss/vite': + specifier: ^4.1.8 + version: 4.1.8(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)) + '@tanstack/react-query': + specifier: ^5.80.2 + version: 5.80.2(react@19.1.0) + axios: + specifier: ^1.9.0 + version: 1.9.0 react: specifier: ^19.1.0 version: 19.1.0 react-dom: specifier: ^19.1.0 version: 19.1.0(react@19.1.0) + react-hook-form: + specifier: ^7.57.0 + version: 7.57.0(react@19.1.0) + react-router-dom: + specifier: ^7.6.2 + version: 7.6.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + tailwindcss: + specifier: ^4.1.8 + version: 4.1.8 + zod: + specifier: ^3.25.50 + version: 3.25.50 devDependencies: '@eslint/js': specifier: ^9.25.0 version: 9.26.0 + '@hookform/devtools': + specifier: ^4.4.0 + version: 4.4.0(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@tanstack/react-query-devtools': + specifier: ^5.80.2 + version: 5.80.2(@tanstack/react-query@5.80.2(react@19.1.0))(react@19.1.0) + '@types/node': + specifier: ^22.15.29 + version: 22.15.29 '@types/react': specifier: ^19.1.2 version: 19.1.4 '@types/react-dom': specifier: ^19.1.2 version: 19.1.4(@types/react@19.1.4) + '@types/react-router-dom': + specifier: ^5.3.3 + version: 5.3.3 '@vitejs/plugin-react': specifier: ^4.4.1 - version: 4.4.1(vite@6.3.5) + version: 4.4.1(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1)) eslint: specifier: ^9.25.0 - version: 9.26.0 + version: 9.26.0(jiti@2.4.2) eslint-plugin-react-hooks: specifier: ^5.2.0 - version: 5.2.0(eslint@9.26.0) + version: 5.2.0(eslint@9.26.0(jiti@2.4.2)) eslint-plugin-react-refresh: specifier: ^0.4.19 - version: 0.4.20(eslint@9.26.0) + version: 0.4.20(eslint@9.26.0(jiti@2.4.2)) globals: specifier: ^16.0.0 version: 16.1.0 @@ -44,10 +80,10 @@ importers: version: 5.8.3 typescript-eslint: specifier: ^8.30.1 - version: 8.32.1(eslint@9.26.0)(typescript@5.8.3) + version: 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) vite: specifier: ^6.3.5 - version: 6.3.5 + version: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1) packages: @@ -122,6 +158,10 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/runtime@7.27.4': + resolution: {integrity: sha512-t3yaEOuGu9NlIZ+hIeGbBjFtZT7j2cb2tg0fuaJKeGotchRjjLfrBA9Kwf8quhpP1EUuxModQg04q/mBwyg8uA==} + engines: {node: '>=6.9.0'} + '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} @@ -134,6 +174,60 @@ packages: resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} engines: {node: '>=6.9.0'} + '@emotion/babel-plugin@11.13.5': + resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} + + '@emotion/cache@11.14.0': + resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@emotion/is-prop-valid@1.3.1': + resolution: {integrity: sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==} + + '@emotion/memoize@0.9.0': + resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} + + '@emotion/react@11.14.0': + resolution: {integrity: sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==} + peerDependencies: + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/serialize@1.3.3': + resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} + + '@emotion/sheet@1.4.0': + resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} + + '@emotion/styled@11.14.0': + resolution: {integrity: sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA==} + peerDependencies: + '@emotion/react': ^11.0.0-rc.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/unitless@0.10.0': + resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} + + '@emotion/use-insertion-effect-with-fallbacks@1.2.0': + resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==} + peerDependencies: + react: '>=16.8.0' + + '@emotion/utils@1.4.2': + resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} + + '@emotion/weak-memoize@0.4.0': + resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} + '@esbuild/aix-ppc64@0.25.4': resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} engines: {node: '>=18'} @@ -322,6 +416,17 @@ packages: resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@hookform/devtools@4.4.0': + resolution: {integrity: sha512-Mtlic+uigoYBPXlfvPBfiYYUZuyMrD3pTjDpVIhL6eCZTvQkHsKBSKeZCvXWUZr8fqrkzDg27N+ZuazLKq6Vmg==} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 || ^19 + react-dom: ^16.8.0 || ^17 || ^18 || ^19 + + '@hookform/resolvers@5.0.1': + resolution: {integrity: sha512-u/+Jp83luQNx9AdyW2fIPGY6Y7NG68eN2ZW8FOJYL+M0i4s49+refdJdOp/A9n9HFQtQs3HIDHQvX3ZET2o7YA==} + peerDependencies: + react-hook-form: ^7.55.0 + '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -342,6 +447,10 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + '@jridgewell/gen-mapping@0.3.8': resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} @@ -476,6 +585,116 @@ packages: cpu: [x64] os: [win32] + '@standard-schema/utils@0.3.0': + resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==} + + '@tailwindcss/node@4.1.8': + resolution: {integrity: sha512-OWwBsbC9BFAJelmnNcrKuf+bka2ZxCE2A4Ft53Tkg4uoiE67r/PMEYwCsourC26E+kmxfwE0hVzMdxqeW+xu7Q==} + + '@tailwindcss/oxide-android-arm64@4.1.8': + resolution: {integrity: sha512-Fbz7qni62uKYceWYvUjRqhGfZKwhZDQhlrJKGtnZfuNtHFqa8wmr+Wn74CTWERiW2hn3mN5gTpOoxWKk0jRxjg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.8': + resolution: {integrity: sha512-RdRvedGsT0vwVVDztvyXhKpsU2ark/BjgG0huo4+2BluxdXo8NDgzl77qh0T1nUxmM11eXwR8jA39ibvSTbi7A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.8': + resolution: {integrity: sha512-t6PgxjEMLp5Ovf7uMb2OFmb3kqzVTPPakWpBIFzppk4JE4ix0yEtbtSjPbU8+PZETpaYMtXvss2Sdkx8Vs4XRw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.8': + resolution: {integrity: sha512-g8C8eGEyhHTqwPStSwZNSrOlyx0bhK/V/+zX0Y+n7DoRUzyS8eMbVshVOLJTDDC+Qn9IJnilYbIKzpB9n4aBsg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.8': + resolution: {integrity: sha512-Jmzr3FA4S2tHhaC6yCjac3rGf7hG9R6Gf2z9i9JFcuyy0u79HfQsh/thifbYTF2ic82KJovKKkIB6Z9TdNhCXQ==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.8': + resolution: {integrity: sha512-qq7jXtO1+UEtCmCeBBIRDrPFIVI4ilEQ97qgBGdwXAARrUqSn/L9fUrkb1XP/mvVtoVeR2bt/0L77xx53bPZ/Q==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.8': + resolution: {integrity: sha512-O6b8QesPbJCRshsNApsOIpzKt3ztG35gfX9tEf4arD7mwNinsoCKxkj8TgEE0YRjmjtO3r9FlJnT/ENd9EVefQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.8': + resolution: {integrity: sha512-32iEXX/pXwikshNOGnERAFwFSfiltmijMIAbUhnNyjFr3tmWmMJWQKU2vNcFX0DACSXJ3ZWcSkzNbaKTdngH6g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.1.8': + resolution: {integrity: sha512-s+VSSD+TfZeMEsCaFaHTaY5YNj3Dri8rST09gMvYQKwPphacRG7wbuQ5ZJMIJXN/puxPcg/nU+ucvWguPpvBDg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.1.8': + resolution: {integrity: sha512-CXBPVFkpDjM67sS1psWohZ6g/2/cd+cq56vPxK4JeawelxwK4YECgl9Y9TjkE2qfF+9/s1tHHJqrC4SS6cVvSg==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.8': + resolution: {integrity: sha512-7GmYk1n28teDHUjPlIx4Z6Z4hHEgvP5ZW2QS9ygnDAdI/myh3HTHjDqtSqgu1BpRoI4OiLx+fThAyA1JePoENA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.8': + resolution: {integrity: sha512-fou+U20j+Jl0EHwK92spoWISON2OBnCazIc038Xj2TdweYV33ZRkS9nwqiUi2d/Wba5xg5UoHfvynnb/UB49cQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.8': + resolution: {integrity: sha512-d7qvv9PsM5N3VNKhwVUhpK6r4h9wtLkJ6lz9ZY9aeZgrUWk1Z8VPyqyDT9MZlem7GTGseRQHkeB1j3tC7W1P+A==} + engines: {node: '>= 10'} + + '@tailwindcss/vite@4.1.8': + resolution: {integrity: sha512-CQ+I8yxNV5/6uGaJjiuymgw0kEQiNKRinYbZXPdx1fk5WgiyReG0VaUx/Xq6aVNSUNJFzxm6o8FNKS5aMaim5A==} + peerDependencies: + vite: ^5.2.0 || ^6 + + '@tanstack/query-core@5.80.2': + resolution: {integrity: sha512-g2Es97uwFk7omkWiH9JmtLWSA8lTUFVseIyzqbjqJEEx7qN+Hg6jbBdDvelqtakamppaJtGORQ64hEJ5S6ojSg==} + + '@tanstack/query-devtools@5.80.0': + resolution: {integrity: sha512-D6gH4asyjaoXrCOt5vG5Og/YSj0D/TxwNQgtLJIgWbhbWCC/emu2E92EFoVHh4ppVWg1qT2gKHvKyQBEFZhCuA==} + + '@tanstack/react-query-devtools@5.80.2': + resolution: {integrity: sha512-nGeCXBkSoYHKkQQO6pBr+DE8ML/EGd79MvFCkBPRcAA8u65OMNOJPXB0sg2AGgXX2+enTEQLHWZwjzukNB9gIA==} + peerDependencies: + '@tanstack/react-query': ^5.80.2 + react: ^18 || ^19 + + '@tanstack/react-query@5.80.2': + resolution: {integrity: sha512-LfA0SVheJBOqC8RfJw/JbOW3yh2zuONQeWU5Prjm7yjUGUONeOedky1Bj39Cfj8MRdXrZV+DxNT7/DN/M907lQ==} + peerDependencies: + react: ^18 || ^19 + '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -491,14 +710,32 @@ packages: '@types/estree@1.0.7': resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/history@4.7.11': + resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/lodash@4.17.17': + resolution: {integrity: sha512-RRVJ+J3J+WmyOTqnz3PiBLA501eKwXl2noseKOrNo/6+XEHjTAxO4xHvxQB6QuNm+s4WRbn6rSiap8+EA+ykFQ==} + + '@types/node@22.15.29': + resolution: {integrity: sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + '@types/react-dom@19.1.4': resolution: {integrity: sha512-WxYAszDYgsMV31OVyoG4jbAgJI1Gw0Xq9V19zwhy6+hUUJlJIdZ3r/cbdmTqFv++SktQkZ/X+46yGFxp5XJBEg==} peerDependencies: '@types/react': ^19.0.0 + '@types/react-router-dom@5.3.3': + resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} + + '@types/react-router@5.1.20': + resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} + '@types/react@19.1.4': resolution: {integrity: sha512-EB1yiiYdvySuIITtD5lhW4yPyJ31RkJkkDw794LaQYrxCSaQV/47y5o1FMC4zF9ZyjUjzJMZwbovEnT5yHTW6g==} @@ -579,6 +816,16 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + axios@1.9.0: + resolution: {integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==} + + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -624,6 +871,10 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -631,6 +882,10 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -642,6 +897,9 @@ packages: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -653,10 +911,18 @@ packages: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} + cookie@1.0.2: + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + engines: {node: '>=18'} + cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -676,10 +942,22 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-libc@2.0.4: + resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + engines: {node: '>=8'} + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -694,6 +972,13 @@ packages: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -706,6 +991,10 @@ packages: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + esbuild@0.25.4: resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} engines: {node: '>=18'} @@ -833,6 +1122,9 @@ packages: resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} engines: {node: '>= 0.8'} + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -844,6 +1136,19 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + form-data@4.0.2: + resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} + engines: {node: '>= 6'} + forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -896,6 +1201,9 @@ packages: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} @@ -907,10 +1215,17 @@ packages: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -942,6 +1257,13 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -960,6 +1282,10 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -975,6 +1301,9 @@ packages: json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -993,6 +1322,78 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lightningcss-darwin-arm64@1.30.1: + resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.30.1: + resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.30.1: + resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.30.1: + resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.30.1: + resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.30.1: + resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.30.1: + resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.30.1: + resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.30.1: + resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.30.1: + resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.30.1: + resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} + engines: {node: '>= 12.0.0'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + little-state-machine@4.8.1: + resolution: {integrity: sha512-liPHqaWMQ7rzZryQUDnbZ1Gclnnai3dIyaJ0nAgwZRXMzqbYrydrlCI0NDojRUbE5VYh5vu6hygEUZiH77nQkQ==} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 || ^19 + locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -1000,9 +1401,15 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -1023,10 +1430,18 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + mime-db@1.54.0: resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} engines: {node: '>= 0.6'} + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + mime-types@3.0.1: resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} engines: {node: '>= 0.6'} @@ -1038,6 +1453,19 @@ packages: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@3.0.2: + resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + engines: {node: '>= 18'} + + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -1087,6 +1515,10 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} @@ -1099,10 +1531,17 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-to-regexp@8.2.0: resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} engines: {node: '>=16'} + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -1130,6 +1569,9 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -1154,10 +1596,41 @@ packages: peerDependencies: react: ^19.1.0 + react-hook-form@7.57.0: + resolution: {integrity: sha512-RbEks3+cbvTP84l/VXGUZ+JMrKOS8ykQCRYdm5aYsxnDquL0vspsyNhGRO7pcH6hsZqWlPOjLye7rJqdtdAmlg==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 || ^19 + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react-refresh@0.17.0: resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} engines: {node: '>=0.10.0'} + react-router-dom@7.6.2: + resolution: {integrity: sha512-Q8zb6VlTbdYKK5JJBLQEN06oTUa/RAbG/oQS1auK1I0TbJOXktqm+QENEVJU6QvWynlXPRBXI3fiOQcSEA78rA==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + + react-router@7.6.2: + resolution: {integrity: sha512-U7Nv3y+bMimgWjhlT5CRdzHPu2/KVmqPwKUCChW8en5P3znxUqwlYFlbmyj8Rgp1SF6zs5X4+77kBVknkg6a0w==} + engines: {node: '>=20.0.0'} + peerDependencies: + react: '>=18' + react-dom: '>=18' + peerDependenciesMeta: + react-dom: + optional: true + + react-simple-animate@3.5.3: + resolution: {integrity: sha512-Ob+SmB5J1tXDEZyOe2Hf950K4M8VaWBBmQ3cS2BUnTORqHjhK0iKG8fB+bo47ZL15t8d3g/Y0roiqH05UBjG7A==} + peerDependencies: + react-dom: ^16.8.0 || ^17 || ^18 || ^19 + react@19.1.0: resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} engines: {node: '>=0.10.0'} @@ -1166,6 +1639,11 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -1208,6 +1686,9 @@ packages: resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} engines: {node: '>= 18'} + set-cookie-parser@2.7.1: + resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} + setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -1239,6 +1720,10 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} @@ -1247,10 +1732,28 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tailwindcss@4.1.8: + resolution: {integrity: sha512-kjeW8gjdxasbmFKpVGrGd5T4i40mV5J2Rasw48QARfYeQ8YS9x02ON9SFWax3Qf616rt4Cp3nVNIj6Hd1mP3og==} + + tapable@2.2.2: + resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} + engines: {node: '>=6'} + + tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} + tinyglobby@0.2.13: resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} engines: {node: '>=12.0.0'} @@ -1289,6 +1792,9 @@ packages: engines: {node: '>=14.17'} hasBin: true + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} @@ -1302,6 +1808,16 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + use-deep-compare-effect@1.8.1: + resolution: {integrity: sha512-kbeNVZ9Zkc0RFGpfMN3MNfaKNvcLNyxOAAd9O4CBZ+kCBXXscn9s/4I+8ytUER4RDpEYs5+O6Rs4PqiZ+rHr5Q==} + engines: {node: '>=10', npm: '>=6'} + peerDependencies: + react: '>=16.13' + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -1361,6 +1877,14 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -1370,8 +1894,8 @@ packages: peerDependencies: zod: ^3.24.1 - zod@3.24.4: - resolution: {integrity: sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==} + zod@3.25.50: + resolution: {integrity: sha512-VstOnRxf4tlSq0raIwbn0n+LA34SxVoZ8r3pkwSUM0jqNiA/HCMQEVjTuS5FZmHsge+9MDGTiAuHyml5T0um6A==} snapshots: @@ -1467,6 +1991,8 @@ snapshots: '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 + '@babel/runtime@7.27.4': {} + '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 @@ -1490,6 +2016,89 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@emotion/babel-plugin@11.13.5': + dependencies: + '@babel/helper-module-imports': 7.27.1 + '@babel/runtime': 7.27.4 + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/serialize': 1.3.3 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + transitivePeerDependencies: + - supports-color + + '@emotion/cache@11.14.0': + dependencies: + '@emotion/memoize': 0.9.0 + '@emotion/sheet': 1.4.0 + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + stylis: 4.2.0 + + '@emotion/hash@0.9.2': {} + + '@emotion/is-prop-valid@1.3.1': + dependencies: + '@emotion/memoize': 0.9.0 + + '@emotion/memoize@0.9.0': {} + + '@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0)': + dependencies: + '@babel/runtime': 7.27.4 + '@emotion/babel-plugin': 11.13.5 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.1.0) + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + hoist-non-react-statics: 3.3.2 + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.4 + transitivePeerDependencies: + - supports-color + + '@emotion/serialize@1.3.3': + dependencies: + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/unitless': 0.10.0 + '@emotion/utils': 1.4.2 + csstype: 3.1.3 + + '@emotion/sheet@1.4.0': {} + + '@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0)': + dependencies: + '@babel/runtime': 7.27.4 + '@emotion/babel-plugin': 11.13.5 + '@emotion/is-prop-valid': 1.3.1 + '@emotion/react': 11.14.0(@types/react@19.1.4)(react@19.1.0) + '@emotion/serialize': 1.3.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.1.0) + '@emotion/utils': 1.4.2 + react: 19.1.0 + optionalDependencies: + '@types/react': 19.1.4 + transitivePeerDependencies: + - supports-color + + '@emotion/unitless@0.10.0': {} + + '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.1.0)': + dependencies: + react: 19.1.0 + + '@emotion/utils@1.4.2': {} + + '@emotion/weak-memoize@0.4.0': {} + '@esbuild/aix-ppc64@0.25.4': optional: true @@ -1565,9 +2174,9 @@ snapshots: '@esbuild/win32-x64@0.25.4': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.26.0)': + '@eslint-community/eslint-utils@4.7.0(eslint@9.26.0(jiti@2.4.2))': dependencies: - eslint: 9.26.0 + eslint: 9.26.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -1609,6 +2218,27 @@ snapshots: '@eslint/core': 0.13.0 levn: 0.4.1 + '@hookform/devtools@4.4.0(@types/react@19.1.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + dependencies: + '@emotion/react': 11.14.0(@types/react@19.1.4)(react@19.1.0) + '@emotion/styled': 11.14.0(@emotion/react@11.14.0(@types/react@19.1.4)(react@19.1.0))(@types/react@19.1.4)(react@19.1.0) + '@types/lodash': 4.17.17 + little-state-machine: 4.8.1(react@19.1.0) + lodash: 4.17.21 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-simple-animate: 3.5.3(react-dom@19.1.0(react@19.1.0)) + use-deep-compare-effect: 1.8.1(react@19.1.0) + uuid: 8.3.2 + transitivePeerDependencies: + - '@types/react' + - supports-color + + '@hookform/resolvers@5.0.1(react-hook-form@7.57.0(react@19.1.0))': + dependencies: + '@standard-schema/utils': 0.3.0 + react-hook-form: 7.57.0(react@19.1.0) + '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.6': @@ -1622,6 +2252,10 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + '@jridgewell/gen-mapping@0.3.8': dependencies: '@jridgewell/set-array': 1.2.1 @@ -1649,8 +2283,8 @@ snapshots: express-rate-limit: 7.5.0(express@5.1.0) pkce-challenge: 5.0.0 raw-body: 3.0.0 - zod: 3.24.4 - zod-to-json-schema: 3.24.5(zod@3.24.4) + zod: 3.25.50 + zod-to-json-schema: 3.24.5(zod@3.25.50) transitivePeerDependencies: - supports-color @@ -1726,6 +2360,94 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.40.2': optional: true + '@standard-schema/utils@0.3.0': {} + + '@tailwindcss/node@4.1.8': + dependencies: + '@ampproject/remapping': 2.3.0 + enhanced-resolve: 5.18.1 + jiti: 2.4.2 + lightningcss: 1.30.1 + magic-string: 0.30.17 + source-map-js: 1.2.1 + tailwindcss: 4.1.8 + + '@tailwindcss/oxide-android-arm64@4.1.8': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.8': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.8': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.8': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.8': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.8': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.8': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.8': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.8': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.8': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.8': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.8': + optional: true + + '@tailwindcss/oxide@4.1.8': + dependencies: + detect-libc: 2.0.4 + tar: 7.4.3 + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.8 + '@tailwindcss/oxide-darwin-arm64': 4.1.8 + '@tailwindcss/oxide-darwin-x64': 4.1.8 + '@tailwindcss/oxide-freebsd-x64': 4.1.8 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.8 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.8 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.8 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.8 + '@tailwindcss/oxide-linux-x64-musl': 4.1.8 + '@tailwindcss/oxide-wasm32-wasi': 4.1.8 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.8 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.8 + + '@tailwindcss/vite@4.1.8(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1))': + dependencies: + '@tailwindcss/node': 4.1.8 + '@tailwindcss/oxide': 4.1.8 + tailwindcss: 4.1.8 + vite: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1) + + '@tanstack/query-core@5.80.2': {} + + '@tanstack/query-devtools@5.80.0': {} + + '@tanstack/react-query-devtools@5.80.2(@tanstack/react-query@5.80.2(react@19.1.0))(react@19.1.0)': + dependencies: + '@tanstack/query-devtools': 5.80.0 + '@tanstack/react-query': 5.80.2(react@19.1.0) + react: 19.1.0 + + '@tanstack/react-query@5.80.2(react@19.1.0)': + dependencies: + '@tanstack/query-core': 5.80.2 + react: 19.1.0 + '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.27.2 @@ -1749,25 +2471,46 @@ snapshots: '@types/estree@1.0.7': {} + '@types/history@4.7.11': {} + '@types/json-schema@7.0.15': {} + '@types/lodash@4.17.17': {} + + '@types/node@22.15.29': + dependencies: + undici-types: 6.21.0 + + '@types/parse-json@4.0.2': {} + '@types/react-dom@19.1.4(@types/react@19.1.4)': dependencies: '@types/react': 19.1.4 + '@types/react-router-dom@5.3.3': + dependencies: + '@types/history': 4.7.11 + '@types/react': 19.1.4 + '@types/react-router': 5.1.20 + + '@types/react-router@5.1.20': + dependencies: + '@types/history': 4.7.11 + '@types/react': 19.1.4 + '@types/react@19.1.4': dependencies: csstype: 3.1.3 - '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.26.0)(typescript@5.8.3))(eslint@9.26.0)(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.32.1(eslint@9.26.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) '@typescript-eslint/scope-manager': 8.32.1 - '@typescript-eslint/type-utils': 8.32.1(eslint@9.26.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.26.0)(typescript@5.8.3) + '@typescript-eslint/type-utils': 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.32.1 - eslint: 9.26.0 + eslint: 9.26.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 7.0.4 natural-compare: 1.4.0 @@ -1776,14 +2519,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.32.1(eslint@9.26.0)(typescript@5.8.3)': + '@typescript-eslint/parser@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@typescript-eslint/scope-manager': 8.32.1 '@typescript-eslint/types': 8.32.1 '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) '@typescript-eslint/visitor-keys': 8.32.1 debug: 4.4.0 - eslint: 9.26.0 + eslint: 9.26.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -1793,12 +2536,12 @@ snapshots: '@typescript-eslint/types': 8.32.1 '@typescript-eslint/visitor-keys': 8.32.1 - '@typescript-eslint/type-utils@8.32.1(eslint@9.26.0)(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.26.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) debug: 4.4.0 - eslint: 9.26.0 + eslint: 9.26.0(jiti@2.4.2) ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: @@ -1820,13 +2563,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.32.1(eslint@9.26.0)(typescript@5.8.3)': + '@typescript-eslint/utils@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) '@typescript-eslint/scope-manager': 8.32.1 '@typescript-eslint/types': 8.32.1 '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) - eslint: 9.26.0 + eslint: 9.26.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -1836,14 +2579,14 @@ snapshots: '@typescript-eslint/types': 8.32.1 eslint-visitor-keys: 4.2.0 - '@vitejs/plugin-react@4.4.1(vite@6.3.5)': + '@vitejs/plugin-react@4.4.1(vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1))': dependencies: '@babel/core': 7.27.1 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.27.1) '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.27.1) '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.3.5 + vite: 6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1) transitivePeerDependencies: - supports-color @@ -1871,6 +2614,22 @@ snapshots: argparse@2.0.1: {} + asynckit@0.4.0: {} + + axios@1.9.0: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.2 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + babel-plugin-macros@3.1.0: + dependencies: + '@babel/runtime': 7.27.4 + cosmiconfig: 7.1.0 + resolve: 1.22.10 + balanced-match@1.0.2: {} body-parser@2.2.0: @@ -1928,12 +2687,18 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chownr@3.0.0: {} + color-convert@2.0.1: dependencies: color-name: 1.1.4 color-name@1.1.4: {} + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + concat-map@0.0.1: {} content-disposition@1.0.0: @@ -1942,17 +2707,29 @@ snapshots: content-type@1.0.5: {} + convert-source-map@1.9.0: {} + convert-source-map@2.0.0: {} cookie-signature@1.2.2: {} cookie@0.7.2: {} + cookie@1.0.2: {} + cors@2.8.5: dependencies: object-assign: 4.1.1 vary: 1.1.2 + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -1967,8 +2744,14 @@ snapshots: deep-is@0.1.4: {} + delayed-stream@1.0.0: {} + depd@2.0.0: {} + dequal@2.0.3: {} + + detect-libc@2.0.4: {} + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -1981,6 +2764,15 @@ snapshots: encodeurl@2.0.0: {} + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.2 + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -1989,6 +2781,13 @@ snapshots: dependencies: es-errors: 1.3.0 + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + esbuild@0.25.4: optionalDependencies: '@esbuild/aix-ppc64': 0.25.4 @@ -2023,13 +2822,13 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-plugin-react-hooks@5.2.0(eslint@9.26.0): + eslint-plugin-react-hooks@5.2.0(eslint@9.26.0(jiti@2.4.2)): dependencies: - eslint: 9.26.0 + eslint: 9.26.0(jiti@2.4.2) - eslint-plugin-react-refresh@0.4.20(eslint@9.26.0): + eslint-plugin-react-refresh@0.4.20(eslint@9.26.0(jiti@2.4.2)): dependencies: - eslint: 9.26.0 + eslint: 9.26.0(jiti@2.4.2) eslint-scope@8.3.0: dependencies: @@ -2040,9 +2839,9 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.26.0: + eslint@9.26.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.20.0 '@eslint/config-helpers': 0.2.2 @@ -2078,7 +2877,9 @@ snapshots: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 - zod: 3.24.4 + zod: 3.25.50 + optionalDependencies: + jiti: 2.4.2 transitivePeerDependencies: - supports-color @@ -2185,6 +2986,8 @@ snapshots: transitivePeerDependencies: - supports-color + find-root@1.1.0: {} + find-up@5.0.0: dependencies: locate-path: 6.0.0 @@ -2197,6 +3000,15 @@ snapshots: flatted@3.3.3: {} + follow-redirects@1.15.9: {} + + form-data@4.0.2: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + mime-types: 2.1.35 + forwarded@0.2.0: {} fresh@2.0.0: {} @@ -2242,16 +3054,26 @@ snapshots: gopd@1.2.0: {} + graceful-fs@4.2.11: {} + graphemer@1.4.0: {} has-flag@4.0.0: {} has-symbols@1.1.0: {} + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + hasown@2.0.2: dependencies: function-bind: 1.1.2 + hoist-non-react-statics@3.3.2: + dependencies: + react-is: 16.13.1 + http-errors@2.0.0: dependencies: depd: 2.0.0 @@ -2279,6 +3101,12 @@ snapshots: ipaddr.js@1.9.1: {} + is-arrayish@0.2.1: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + is-extglob@2.1.1: {} is-glob@4.0.3: @@ -2291,6 +3119,8 @@ snapshots: isexe@2.0.0: {} + jiti@2.4.2: {} + js-tokens@4.0.0: {} js-yaml@4.1.0: @@ -2301,6 +3131,8 @@ snapshots: json-buffer@3.0.1: {} + json-parse-even-better-errors@2.3.1: {} + json-schema-traverse@0.4.1: {} json-stable-stringify-without-jsonify@1.0.1: {} @@ -2316,16 +3148,73 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lightningcss-darwin-arm64@1.30.1: + optional: true + + lightningcss-darwin-x64@1.30.1: + optional: true + + lightningcss-freebsd-x64@1.30.1: + optional: true + + lightningcss-linux-arm-gnueabihf@1.30.1: + optional: true + + lightningcss-linux-arm64-gnu@1.30.1: + optional: true + + lightningcss-linux-arm64-musl@1.30.1: + optional: true + + lightningcss-linux-x64-gnu@1.30.1: + optional: true + + lightningcss-linux-x64-musl@1.30.1: + optional: true + + lightningcss-win32-arm64-msvc@1.30.1: + optional: true + + lightningcss-win32-x64-msvc@1.30.1: + optional: true + + lightningcss@1.30.1: + dependencies: + detect-libc: 2.0.4 + optionalDependencies: + lightningcss-darwin-arm64: 1.30.1 + lightningcss-darwin-x64: 1.30.1 + lightningcss-freebsd-x64: 1.30.1 + lightningcss-linux-arm-gnueabihf: 1.30.1 + lightningcss-linux-arm64-gnu: 1.30.1 + lightningcss-linux-arm64-musl: 1.30.1 + lightningcss-linux-x64-gnu: 1.30.1 + lightningcss-linux-x64-musl: 1.30.1 + lightningcss-win32-arm64-msvc: 1.30.1 + lightningcss-win32-x64-msvc: 1.30.1 + + lines-and-columns@1.2.4: {} + + little-state-machine@4.8.1(react@19.1.0): + dependencies: + react: 19.1.0 + locate-path@6.0.0: dependencies: p-locate: 5.0.0 lodash.merge@4.6.2: {} + lodash@4.17.21: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + math-intrinsics@1.1.0: {} media-typer@1.1.0: {} @@ -2339,8 +3228,14 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 + mime-db@1.52.0: {} + mime-db@1.54.0: {} + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + mime-types@3.0.1: dependencies: mime-db: 1.54.0 @@ -2353,6 +3248,14 @@ snapshots: dependencies: brace-expansion: 2.0.1 + minipass@7.1.2: {} + + minizlib@3.0.2: + dependencies: + minipass: 7.1.2 + + mkdirp@3.0.1: {} + ms@2.1.3: {} nanoid@3.3.11: {} @@ -2396,14 +3299,25 @@ snapshots: dependencies: callsites: 3.1.0 + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + parseurl@1.3.3: {} path-exists@4.0.0: {} path-key@3.1.1: {} + path-parse@1.0.7: {} + path-to-regexp@8.2.0: {} + path-type@4.0.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -2425,6 +3339,8 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 + proxy-from-env@1.1.0: {} + punycode@2.3.1: {} qs@6.14.0: @@ -2447,12 +3363,42 @@ snapshots: react: 19.1.0 scheduler: 0.26.0 + react-hook-form@7.57.0(react@19.1.0): + dependencies: + react: 19.1.0 + + react-is@16.13.1: {} + react-refresh@0.17.0: {} + react-router-dom@7.6.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-router: 7.6.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + + react-router@7.6.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + cookie: 1.0.2 + react: 19.1.0 + set-cookie-parser: 2.7.1 + optionalDependencies: + react-dom: 19.1.0(react@19.1.0) + + react-simple-animate@3.5.3(react-dom@19.1.0(react@19.1.0)): + dependencies: + react-dom: 19.1.0(react@19.1.0) + react@19.1.0: {} resolve-from@4.0.0: {} + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + reusify@1.1.0: {} rollup@4.40.2: @@ -2530,6 +3476,8 @@ snapshots: transitivePeerDependencies: - supports-color + set-cookie-parser@2.7.1: {} + setprototypeof@1.2.0: {} shebang-command@2.0.0: @@ -2568,14 +3516,33 @@ snapshots: source-map-js@1.2.1: {} + source-map@0.5.7: {} + statuses@2.0.1: {} strip-json-comments@3.1.1: {} + stylis@4.2.0: {} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 + supports-preserve-symlinks-flag@1.0.0: {} + + tailwindcss@4.1.8: {} + + tapable@2.2.2: {} + + tar@7.4.3: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.2 + mkdirp: 3.0.1 + yallist: 5.0.0 + tinyglobby@0.2.13: dependencies: fdir: 6.4.4(picomatch@4.0.2) @@ -2601,18 +3568,20 @@ snapshots: media-typer: 1.1.0 mime-types: 3.0.1 - typescript-eslint@8.32.1(eslint@9.26.0)(typescript@5.8.3): + typescript-eslint@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.26.0)(typescript@5.8.3))(eslint@9.26.0)(typescript@5.8.3) - '@typescript-eslint/parser': 8.32.1(eslint@9.26.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@9.26.0)(typescript@5.8.3) - eslint: 9.26.0 + '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.26.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.26.0(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color typescript@5.8.3: {} + undici-types@6.21.0: {} + unpipe@1.0.0: {} update-browserslist-db@1.1.3(browserslist@4.24.5): @@ -2625,9 +3594,17 @@ snapshots: dependencies: punycode: 2.3.1 + use-deep-compare-effect@1.8.1(react@19.1.0): + dependencies: + '@babel/runtime': 7.27.4 + dequal: 2.0.3 + react: 19.1.0 + + uuid@8.3.2: {} + vary@1.1.2: {} - vite@6.3.5: + vite@6.3.5(@types/node@22.15.29)(jiti@2.4.2)(lightningcss@1.30.1): dependencies: esbuild: 0.25.4 fdir: 6.4.4(picomatch@4.0.2) @@ -2636,7 +3613,10 @@ snapshots: rollup: 4.40.2 tinyglobby: 0.2.13 optionalDependencies: + '@types/node': 22.15.29 fsevents: 2.3.3 + jiti: 2.4.2 + lightningcss: 1.30.1 which@2.0.2: dependencies: @@ -2648,10 +3628,14 @@ snapshots: yallist@3.1.1: {} + yallist@5.0.0: {} + + yaml@1.10.2: {} + yocto-queue@0.1.0: {} - zod-to-json-schema@3.24.5(zod@3.24.4): + zod-to-json-schema@3.24.5(zod@3.25.50): dependencies: - zod: 3.24.4 + zod: 3.25.50 - zod@3.24.4: {} + zod@3.25.50: {} diff --git a/src/App.tsx b/src/App.tsx index 56325b8..4c1cc8e 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,8 +1,13 @@ +import { Routes, Route } from 'react-router-dom'; +import OnboardingPage from '@/pages/OnboardingPage'; + function App() { return ( - <> -

multi-step-form

- +
+ + } /> + +
); } diff --git a/src/index.css b/src/index.css index e69de29..d4b5078 100644 --- a/src/index.css +++ b/src/index.css @@ -0,0 +1 @@ +@import 'tailwindcss'; diff --git a/src/main.tsx b/src/main.tsx index bef5202..1219e76 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,10 +1,25 @@ -import { StrictMode } from 'react' -import { createRoot } from 'react-dom/client' -import './index.css' -import App from './App.tsx' +import { StrictMode } from 'react'; +import { createRoot } from 'react-dom/client'; +import { BrowserRouter } from 'react-router-dom'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import './index.css'; +import App from './App.tsx'; + +const queryClient = new QueryClient({ + defaultOptions: { + queries: { + retry: 1, + refetchOnWindowFocus: false, + }, + }, +}); createRoot(document.getElementById('root')!).render( - - , -) + + + + + + +); diff --git a/src/pages/OnboardingPage.tsx b/src/pages/OnboardingPage.tsx new file mode 100644 index 0000000..890f402 --- /dev/null +++ b/src/pages/OnboardingPage.tsx @@ -0,0 +1,3 @@ +export default function OnboardingPage() { + return
OnboardingPage
; +} diff --git a/tsconfig.app.json b/tsconfig.app.json index 9c8a3c4..390bda2 100644 --- a/tsconfig.app.json +++ b/tsconfig.app.json @@ -15,6 +15,11 @@ "noEmit": true, "jsx": "react-jsx", + "baseUrl": ".", + "paths": { + "@/*": ["src/*"] + }, + /* Linting */ "strict": true, "noUnusedLocals": true, diff --git a/tsconfig.node.json b/tsconfig.node.json index 9728af2..d9aa8a8 100644 --- a/tsconfig.node.json +++ b/tsconfig.node.json @@ -17,7 +17,6 @@ "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, - "erasableSyntaxOnly": true, "noFallthroughCasesInSwitch": true, "noUncheckedSideEffectImports": true }, diff --git a/vite.config.ts b/vite.config.ts index 8b0f57b..69347ed 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,7 +1,13 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import tailwindcss from '@tailwindcss/vite'; // https://vite.dev/config/ export default defineConfig({ - plugins: [react()], -}) + plugins: [react(), tailwindcss()], + resolve: { + alias: { + '@': '/src', + }, + }, +}); From 1d38dd2678f0496fbf546e3c844748864a21c06b Mon Sep 17 00:00:00 2001 From: junny97 Date: Wed, 4 Jun 2025 17:02:19 +0900 Subject: [PATCH 06/16] =?UTF-8?q?style:=20Tailwind=20CSS=20=EA=B8=80?= =?UTF-8?q?=EB=A1=9C=EB=B2=8C=20=EC=8A=A4=ED=83=80=EC=9D=BC=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/index.css | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/src/index.css b/src/index.css index d4b5078..fcf5a11 100644 --- a/src/index.css +++ b/src/index.css @@ -1 +1,50 @@ @import 'tailwindcss'; + +@layer base { + body { + @apply bg-gray-50 text-gray-900 min-h-screen; + } + + #root { + @apply max-w-5xl mx-auto px-8 text-center; + } +} + +@layer components { + .btn { + @apply px-4 py-2 rounded-md font-medium transition-colors; + } + + .btn-primary { + @apply bg-blue-500 text-white hover:bg-blue-600; + } + + .btn-secondary { + @apply bg-gray-200 text-gray-800 hover:bg-gray-300; + } + + .btn-disabled { + @apply bg-gray-300 text-gray-500 cursor-not-allowed; + } + + .input-field { + @apply w-full px-4 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent; + } +} + +@layer utilities { + @keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } + } + + @media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } + } +} From 1511102600ba6d8ae6f94f737431935f9b41be25 Mon Sep 17 00:00:00 2001 From: junny97 Date: Wed, 4 Jun 2025 17:21:55 +0900 Subject: [PATCH 07/16] =?UTF-8?q?feat:=20=EC=98=A8=EB=B3=B4=EB=94=A9=20API?= =?UTF-8?q?=20=EB=B0=8F=20=EC=83=81=EC=88=98=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/features/onboarding/onboarding.api.ts | 27 +++++++++++++++ .../onboarding/onboarding.constant.ts | 33 +++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 src/features/onboarding/onboarding.api.ts create mode 100644 src/features/onboarding/onboarding.constant.ts diff --git a/src/features/onboarding/onboarding.api.ts b/src/features/onboarding/onboarding.api.ts new file mode 100644 index 0000000..e9ca50c --- /dev/null +++ b/src/features/onboarding/onboarding.api.ts @@ -0,0 +1,27 @@ +import axios from 'axios'; +import type { OnboardingData, OnboardingUserResponse } from './onboarding.type'; + +const axiosInstance = axios.create({ + baseURL: 'https://onboarding-server-idpj.onrender.com/api', +}); + +export const postOnboardingData = async ( + data: OnboardingData +): Promise => { + const response = await axiosInstance.post( + '/users/onboarding', + data + ); + + return response.data; +}; + +export const getOnboardingUserById = async ( + userId: number +): Promise => { + const response = await axiosInstance.get( + `/users/${userId}` + ); + + return response.data; +}; diff --git a/src/features/onboarding/onboarding.constant.ts b/src/features/onboarding/onboarding.constant.ts new file mode 100644 index 0000000..2cc9e31 --- /dev/null +++ b/src/features/onboarding/onboarding.constant.ts @@ -0,0 +1,33 @@ +export const ONBOARDING_ERROR_MESSAGES = { + NICKNAME: { + MIN: '닉네임은 최소 2자 이상이어야 합니다', + MAX: '닉네임은 최대 10자까지 가능합니다', + PATTERN: '닉네임은 한글, 영문, 숫자만 가능합니다', + }, + GENRE: { + MIN: '최소 1개 이상의 장르를 선택해주세요', + MAX: '최대 5개까지 선택 가능합니다', + }, + FAVORITE: { + REQUIRED: '작품 제목을 입력해주세요', + MAX: '작품 제목은 최대 50자까지 가능합니다', + }, + GENDER: { + REQUIRED: '성별을 선택해주세요', + }, +} as const; + +export const STEPS = ['nickname', 'gender', 'genres', 'favorite'] as const; + +export const AVAILABLE_GENRES = [ + '액션', + '코미디', + '로맨스', + '스릴러', + '공포', + 'SF', + '판타지', + '드라마', + '애니메이션', + '다큐멘터리', +] as const; From 1b87c3621eec6a4f8be8e4f0a7136baafde593e9 Mon Sep 17 00:00:00 2001 From: junny97 Date: Wed, 4 Jun 2025 17:22:06 +0900 Subject: [PATCH 08/16] =?UTF-8?q?feat:=20zod=EB=A5=BC=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=ED=95=9C=20=EC=98=A8=EB=B3=B4=EB=94=A9=20=EB=8B=A8=EA=B3=84=20?= =?UTF-8?q?=20=EC=9C=A0=ED=9A=A8=EC=84=B1=20=EA=B2=80=EC=82=AC=20/=20?= =?UTF-8?q?=EC=8A=A4=ED=82=A4=EB=A7=88=20=EC=A0=95=EC=9D=98=EB=A1=9C=20?= =?UTF-8?q?=ED=83=80=EC=9E=85=20=EC=B6=94=EB=A1=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/features/onboarding/onboarding.type.ts | 53 ++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/features/onboarding/onboarding.type.ts diff --git a/src/features/onboarding/onboarding.type.ts b/src/features/onboarding/onboarding.type.ts new file mode 100644 index 0000000..ce59849 --- /dev/null +++ b/src/features/onboarding/onboarding.type.ts @@ -0,0 +1,53 @@ +import { z } from 'zod'; +import { ONBOARDING_ERROR_MESSAGES } from './onboarding.constant'; + +export type OnboardingStep = 'nickname' | 'gender' | 'genres' | 'favorite'; + +export const GenderSchema = z.enum(['남성', '여성']); +export type Gender = z.infer; + +export const NicknameStepSchema = z.object({ + nickname: z + .string() + .min(2, ONBOARDING_ERROR_MESSAGES.NICKNAME.MIN) + .max(10, ONBOARDING_ERROR_MESSAGES.NICKNAME.MAX) + .regex(/^[가-힣a-zA-Z0-9]+$/, ONBOARDING_ERROR_MESSAGES.NICKNAME.PATTERN), +}); + +export const GenderStepSchema = z.object({ + gender: GenderSchema, +}); + +export const GenresStepSchema = z.object({ + genre: z + .array(z.string()) + .min(1, ONBOARDING_ERROR_MESSAGES.GENRE.MIN) + .max(5, ONBOARDING_ERROR_MESSAGES.GENRE.MAX), +}); + +export const FavoriteStepSchema = z.object({ + favorite_movie: z + .string() + .min(1, ONBOARDING_ERROR_MESSAGES.FAVORITE.REQUIRED) + .max(50, ONBOARDING_ERROR_MESSAGES.FAVORITE.MAX), +}); + +export const OnboardingDataSchema = z.object({ + nickname: NicknameStepSchema.shape.nickname, + gender: GenderStepSchema.shape.gender, + genre: GenresStepSchema.shape.genre, + favorite_movie: FavoriteStepSchema.shape.favorite_movie, +}); + +export const OnboardingUserResponseSchema = OnboardingDataSchema.extend({ + id: z.number(), +}); + +export type OnboardingData = z.infer; +export type OnboardingUserResponse = z.infer< + typeof OnboardingUserResponseSchema +>; +export type NicknameFormData = z.infer; +export type GenderFormData = z.infer; +export type GenresFormData = z.infer; +export type FavoriteFormData = z.infer; From cbec9aa7060126dfb40241f8edbeb161a6ca564f Mon Sep 17 00:00:00 2001 From: junny97 Date: Thu, 5 Jun 2025 15:00:32 +0900 Subject: [PATCH 09/16] =?UTF-8?q?config:=20ESLint=20=EC=84=A4=EC=A0=95=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0=20=EB=B0=8F=20=EC=BD=94=EB=93=9C=20=ED=92=88?= =?UTF-8?q?=EC=A7=88=20=EA=B7=9C=EC=B9=99=20=EC=B5=9C=EC=A0=81=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eslint.config.js | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index 092408a..c8d0fb4 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,8 +1,8 @@ -import js from '@eslint/js' -import globals from 'globals' -import reactHooks from 'eslint-plugin-react-hooks' -import reactRefresh from 'eslint-plugin-react-refresh' -import tseslint from 'typescript-eslint' +import js from '@eslint/js'; +import globals from 'globals'; +import reactHooks from 'eslint-plugin-react-hooks'; +import reactRefresh from 'eslint-plugin-react-refresh'; +import tseslint from 'typescript-eslint'; export default tseslint.config( { ignores: ['dist'] }, @@ -19,10 +19,7 @@ export default tseslint.config( }, rules: { ...reactHooks.configs.recommended.rules, - 'react-refresh/only-export-components': [ - 'warn', - { allowConstantExport: true }, - ], + 'react-refresh/only-export-components': 'off', }, - }, -) + } +); From eb26e1d8d0c0787757f5a4792cbf9930d48aca70 Mon Sep 17 00:00:00 2001 From: junny97 Date: Thu, 5 Jun 2025 15:12:05 +0900 Subject: [PATCH 10/16] =?UTF-8?q?feat:=20Compound=20Component=20=ED=8C=A8?= =?UTF-8?q?=ED=84=B4=20=EA=B8=B0=EB=B0=98=20Funnel=20=EC=8B=9C=EC=8A=A4?= =?UTF-8?q?=ED=85=9C=20=EA=B5=AC=ED=98=84=20(Context=20API=20+=20URL=20STE?= =?UTF-8?q?P=20=EC=83=81=ED=83=9C=EA=B4=80=EB=A6=AC)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/features/funnel/Funnel.tsx | 18 +++++++ src/features/funnel/Step.tsx | 15 ++++++ src/features/funnel/use-funnel.ts | 78 +++++++++++++++++++++++++++++++ 3 files changed, 111 insertions(+) create mode 100644 src/features/funnel/Funnel.tsx create mode 100644 src/features/funnel/Step.tsx create mode 100644 src/features/funnel/use-funnel.ts diff --git a/src/features/funnel/Funnel.tsx b/src/features/funnel/Funnel.tsx new file mode 100644 index 0000000..605ef5e --- /dev/null +++ b/src/features/funnel/Funnel.tsx @@ -0,0 +1,18 @@ +import { createContext } from 'react'; +import React from 'react'; +import { Step } from './Step'; + +export const FunnelContext = createContext<{ step?: string }>({}); + +interface FunnelProps { + children: React.ReactNode; + step: string; +} + +function Funnel({ children, step }: FunnelProps) { + return ( + {children} + ); +} + +export default Object.assign(Funnel, { Step }); diff --git a/src/features/funnel/Step.tsx b/src/features/funnel/Step.tsx new file mode 100644 index 0000000..6f5dd41 --- /dev/null +++ b/src/features/funnel/Step.tsx @@ -0,0 +1,15 @@ +import { useContext } from 'react'; +import { FunnelContext } from './Funnel'; + +interface StepProps { + children: React.ReactNode; + name: string; +} + +export function Step({ children, name }: StepProps) { + const context = useContext(FunnelContext); + if (context?.step === name) { + return <>{children}; + } + return null; +} diff --git a/src/features/funnel/use-funnel.ts b/src/features/funnel/use-funnel.ts new file mode 100644 index 0000000..c296f1c --- /dev/null +++ b/src/features/funnel/use-funnel.ts @@ -0,0 +1,78 @@ +import { useSearchParams, useNavigate } from 'react-router-dom'; + +interface UseFunnelProps { + steps: T; +} + +interface UseFunnelReturn { + currentStep: T[number]; + goToStep: (step: T[number]) => void; + goToNextStep: () => void; + goToPrevStep: () => void; + stepIndex: number; + totalSteps: number; +} + +export function useFunnel({ + steps, +}: UseFunnelProps): UseFunnelReturn { + const [searchParams] = useSearchParams(); + const navigate = useNavigate(); + + // URL에서 현재 스텝 추출 및 초기화 + const getCurrentStep = (): T[number] => { + const urlStep = searchParams.get('step'); + + if (urlStep && steps.includes(urlStep)) { + return urlStep; + } + + // URL에 유효한 step이 없으면 첫 번째 step으로 설정 + const firstStep = steps[0]; + const newParams = new URLSearchParams(searchParams); + newParams.set('step', firstStep); + navigate(`?${newParams.toString()}`, { replace: true }); + + return firstStep; + }; + + const currentStep = getCurrentStep(); + const stepIndex = steps.indexOf(currentStep); + const totalSteps = steps.length; + + // STEP URL 업데이트 함수 + const updateUrl = (step: string) => { + const newParams = new URLSearchParams(searchParams); + newParams.set('step', step); + navigate(`?${newParams.toString()}`, { replace: false }); + }; + + const goToStep = (step: T[number]) => { + if (steps.includes(step)) { + updateUrl(step); + } + }; + + const goToNextStep = () => { + const canGoNext = stepIndex < totalSteps - 1; + if (canGoNext) { + goToStep(steps[stepIndex + 1]); + } + }; + + const goToPrevStep = () => { + const canGoPrev = stepIndex > 0; + if (canGoPrev) { + goToStep(steps[stepIndex - 1]); + } + }; + + return { + currentStep, + goToStep, + goToNextStep, + goToPrevStep, + stepIndex, + totalSteps, + }; +} From a3133fb4175924d6cccc0202f0885345a7d8d1f1 Mon Sep 17 00:00:00 2001 From: junny97 Date: Thu, 5 Jun 2025 15:44:21 +0900 Subject: [PATCH 11/16] =?UTF-8?q?feat:=20=EC=98=A8=EB=B3=B4=EB=94=A9=20?= =?UTF-8?q?=EB=8B=A8=EA=B3=84=EB=B3=84=20=ED=8F=BC=20=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../onboarding/components/FavoriteStep.tsx | 96 +++++++++++++++++ .../onboarding/components/GenderStep.tsx | 94 ++++++++++++++++ .../onboarding/components/GenresStep.tsx | 100 ++++++++++++++++++ .../onboarding/components/NicknameStep.tsx | 65 ++++++++++++ 4 files changed, 355 insertions(+) create mode 100644 src/features/onboarding/components/FavoriteStep.tsx create mode 100644 src/features/onboarding/components/GenderStep.tsx create mode 100644 src/features/onboarding/components/GenresStep.tsx create mode 100644 src/features/onboarding/components/NicknameStep.tsx diff --git a/src/features/onboarding/components/FavoriteStep.tsx b/src/features/onboarding/components/FavoriteStep.tsx new file mode 100644 index 0000000..a6ed320 --- /dev/null +++ b/src/features/onboarding/components/FavoriteStep.tsx @@ -0,0 +1,96 @@ +import { useForm } from 'react-hook-form'; +import { zodResolver } from '@hookform/resolvers/zod'; +import { + FavoriteStepSchema, + type FavoriteFormData, + type OnboardingData, +} from '../onboarding.type'; + +interface FavoriteStepProps { + data: OnboardingData; + onPrev: () => void; + onComplete: (finalData: OnboardingData) => void; + isSubmitting?: boolean; +} + +export default function FavoriteStep({ + data, + onPrev, + onComplete, + isSubmitting = false, +}: FavoriteStepProps) { + const { + register, + handleSubmit, + formState: { errors, isValid }, + } = useForm({ + resolver: zodResolver(FavoriteStepSchema), + defaultValues: { + favorite_movie: data.favorite_movie || '', + }, + mode: 'onChange', + }); + + const onSubmit = async (formData: FavoriteFormData) => { + const finalData: OnboardingData = { + nickname: data.nickname, + gender: data.gender, + genre: data.genre, + favorite_movie: formData.favorite_movie, + }; + + // OnboardingPage의 handleFinalSubmit로 최종 데이터 전달 + onComplete(finalData); + }; + + return ( +
+

좋아하는 작품을 알려주세요

+
+
+ + + {errors.favorite_movie && ( +

+ {errors.favorite_movie.message} +

+ )} +
+ +
+ + +
+
+
+ ); +} diff --git a/src/features/onboarding/components/GenderStep.tsx b/src/features/onboarding/components/GenderStep.tsx new file mode 100644 index 0000000..7bdb341 --- /dev/null +++ b/src/features/onboarding/components/GenderStep.tsx @@ -0,0 +1,94 @@ +import { useForm } from 'react-hook-form'; +import { zodResolver } from '@hookform/resolvers/zod'; +import { + GenderStepSchema, + type GenderFormData, + type OnboardingData, +} from '../onboarding.type'; + +interface GenderStepProps { + data: OnboardingData; + onNext: (data: Partial) => void; + onPrev: () => void; +} + +export default function GenderStep({ data, onNext, onPrev }: GenderStepProps) { + const { + register, + handleSubmit, + formState: { isValid, errors }, + watch, + } = useForm({ + resolver: zodResolver(GenderStepSchema), + defaultValues: { + gender: data.gender, + }, + mode: 'onChange', + }); + + const selectedGender = watch('gender'); + + const onSubmit = (formData: GenderFormData) => { + onNext({ gender: formData.gender }); + }; + + return ( +
+

성별을 선택해주세요

+ +
+
+
+ + + +
+ {errors.gender && ( +

{errors.gender.message}

+ )} +
+ +
+ + +
+
+
+ ); +} diff --git a/src/features/onboarding/components/GenresStep.tsx b/src/features/onboarding/components/GenresStep.tsx new file mode 100644 index 0000000..e3ac99c --- /dev/null +++ b/src/features/onboarding/components/GenresStep.tsx @@ -0,0 +1,100 @@ +import React, { useState } from 'react'; +import { useForm } from 'react-hook-form'; +import { zodResolver } from '@hookform/resolvers/zod'; +import { + GenresStepSchema, + type GenresFormData, + type OnboardingData, +} from '../onboarding.type'; +import { AVAILABLE_GENRES } from '../onboarding.constant'; + +interface GenresStepProps { + data: OnboardingData; + onNext: (data: Partial) => void; + onPrev: () => void; +} + +export default function GenresStep({ data, onNext, onPrev }: GenresStepProps) { + const [selectedGenres, setSelectedGenres] = useState( + data.genre || [] + ); + + const { + handleSubmit, + setValue, + formState: { errors }, + } = useForm({ + resolver: zodResolver(GenresStepSchema), + defaultValues: { + genre: data.genre || [], + }, + mode: 'onChange', + }); + + // 폼 초기화 시 유효성 검사 실행 + React.useEffect(() => { + setValue('genre', selectedGenres, { shouldValidate: true }); + }, [selectedGenres, setValue]); + + const toggleGenre = (genre: string) => { + setSelectedGenres((prev) => { + if (prev.includes(genre)) { + return prev.filter((g) => g !== genre); + } else { + return [...prev, genre]; + } + }); + }; + + const onSubmit = (formData: GenresFormData) => { + onNext({ genre: formData.genre }); + }; + + return ( +
+

관심 장르를 선택해주세요

+

1개 이상 5개 이하로 선택해주세요

+ +
+
+
+ {AVAILABLE_GENRES.map((genre) => ( + + ))} +
+ {errors.genre && ( +

{errors.genre.message}

+ )} +
+ +
+ + +
+
+
+ ); +} diff --git a/src/features/onboarding/components/NicknameStep.tsx b/src/features/onboarding/components/NicknameStep.tsx new file mode 100644 index 0000000..52b7146 --- /dev/null +++ b/src/features/onboarding/components/NicknameStep.tsx @@ -0,0 +1,65 @@ +import { useForm } from 'react-hook-form'; +import { zodResolver } from '@hookform/resolvers/zod'; +import { + NicknameStepSchema, + type NicknameFormData, + type OnboardingData, +} from '../onboarding.type'; + +interface NicknameStepProps { + data: OnboardingData; + onNext: (data: Partial) => void; +} + +export default function NicknameStep({ data, onNext }: NicknameStepProps) { + const { + register, + handleSubmit, + formState: { errors, isValid }, + } = useForm({ + resolver: zodResolver(NicknameStepSchema), + defaultValues: { + nickname: data.nickname || '', + }, + mode: 'onChange', + }); + + const onSubmit = (formData: NicknameFormData) => { + onNext({ nickname: formData.nickname }); + }; + + return ( +
+

닉네임을 입력해주세요

+ +
+
+ + + {errors.nickname && ( +

+ {errors.nickname.message} +

+ )} +
+ +
+ +
+
+
+ ); +} From 7d4e7a659afec63253be1f7691bc5e8be0fedffd Mon Sep 17 00:00:00 2001 From: junny97 Date: Thu, 5 Jun 2025 20:09:42 +0900 Subject: [PATCH 12/16] =?UTF-8?q?=EC=98=A8=EB=B3=B4=EB=94=A9=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8&=20=20=EB=B9=84=EC=A6=88=EB=8B=88?= =?UTF-8?q?=EC=8A=A4=20=EB=A1=9C=EC=A7=81=20=EC=A4=91=EC=95=99=ED=99=94=20?= =?UTF-8?q?=EB=B0=8F=20=EC=B5=9C=EC=A2=85=20form=20=EC=A0=9C=EC=B6=9C=20mu?= =?UTF-8?q?atation=20hook=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mutations/use-post-onboarding-data.ts | 24 ++++ src/pages/OnboardingPage.tsx | 106 +++++++++++++++++- 2 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 src/features/onboarding/hooks/mutations/use-post-onboarding-data.ts diff --git a/src/features/onboarding/hooks/mutations/use-post-onboarding-data.ts b/src/features/onboarding/hooks/mutations/use-post-onboarding-data.ts new file mode 100644 index 0000000..9273c9d --- /dev/null +++ b/src/features/onboarding/hooks/mutations/use-post-onboarding-data.ts @@ -0,0 +1,24 @@ +import { postOnboardingData } from '@/features/onboarding/onboarding.api'; +import { + OnboardingDataSchema, + type OnboardingData, + type OnboardingUserResponse, +} from '@/features/onboarding/onboarding.type'; +import { useMutation } from '@tanstack/react-query'; + +export const usePostOnboardingData = () => { + return useMutation({ + mutationFn: async (data: OnboardingData) => { + const result = OnboardingDataSchema.safeParse(data); + + if (!result.success) { + const errorResult = result.error.issues[0]; + const message = + errorResult?.message || '입력 데이터가 올바르지 않습니다.'; + throw new Error(message); + } + + return await postOnboardingData(result.data); + }, + }); +}; diff --git a/src/pages/OnboardingPage.tsx b/src/pages/OnboardingPage.tsx index 890f402..31dcc4a 100644 --- a/src/pages/OnboardingPage.tsx +++ b/src/pages/OnboardingPage.tsx @@ -1,3 +1,107 @@ +import Funnel from '@/features/funnel/Funnel'; +import { useFunnel } from '@/features/funnel/use-funnel'; +import FavoriteStep from '@/features/onboarding/components/FavoriteStep'; +import GenderStep from '@/features/onboarding/components/GenderStep'; +import GenresStep from '@/features/onboarding/components/GenresStep'; +import NicknameStep from '@/features/onboarding/components/NicknameStep'; +import { usePostOnboardingData } from '@/features/onboarding/hooks/mutations/use-post-onboarding-data'; +import { STEPS } from '@/features/onboarding/onboarding.constant'; +import type { + OnboardingData, + OnboardingUserResponse, +} from '@/features/onboarding/onboarding.type'; +import { useState } from 'react'; +import { useNavigate } from 'react-router-dom'; + export default function OnboardingPage() { - return
OnboardingPage
; + const navigate = useNavigate(); + const onboardingMutation = usePostOnboardingData(); + + const [onboardingData, setOnboardingData] = useState({ + nickname: '', + gender: '남성', + genre: [], + favorite_movie: '', + }); + + const { currentStep, stepIndex, totalSteps, goToNextStep, goToPrevStep } = + useFunnel({ + steps: STEPS, + }); + + const progressPercentage = Math.round(((stepIndex + 1) / totalSteps) * 100); + + const handleStepComplete = (newData: Partial) => { + setOnboardingData((prevData) => ({ + ...prevData, + ...newData, + })); + goToNextStep(); + }; + + // 최종 제출 처리 + const handleFinalSubmit = (finalData: OnboardingData) => { + onboardingMutation.mutate(finalData, { + onSuccess: (user: OnboardingUserResponse) => { + navigate('/onboarding/result', { + state: { userId: user.id }, + replace: true, + }); + }, + onError: (error: Error) => { + console.error('온보딩 제출 에러:', error); + }, + }); + }; + + return ( +
+ {/* 프로그레스 바 */} +
+
+ + {stepIndex + 1} / {totalSteps} + + {progressPercentage}% +
+
+
+
+
+ + + + + + + + + + + + + + + + + + +
+ ); } From 159d313d2f62e2217aeb39a0c8cc9ca74a73d38c Mon Sep 17 00:00:00 2001 From: junny97 Date: Thu, 5 Jun 2025 21:09:32 +0900 Subject: [PATCH 13/16] =?UTF-8?q?feat:=20useId=20=EA=B8=B0=EB=B0=98=20?= =?UTF-8?q?=EC=98=A8=EB=B3=B4=EB=94=A9=20=EA=B2=B0=EA=B3=BC=20=20=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=20=EC=A1=B0=ED=9A=8C=20=EC=BB=A4=EC=8A=A4?= =?UTF-8?q?=ED=85=80=20=ED=9B=85=20&=20=EA=B2=B0=EA=B3=BC=20=EC=A7=80?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../queries/use-get-onboarding-user-data.ts | 13 ++ src/pages/OnboardingResult.tsx | 171 ++++++++++++++++++ src/shared/constants.ts | 1 + 3 files changed, 185 insertions(+) create mode 100644 src/features/onboarding/hooks/queries/use-get-onboarding-user-data.ts create mode 100644 src/pages/OnboardingResult.tsx create mode 100644 src/shared/constants.ts diff --git a/src/features/onboarding/hooks/queries/use-get-onboarding-user-data.ts b/src/features/onboarding/hooks/queries/use-get-onboarding-user-data.ts new file mode 100644 index 0000000..6b5084a --- /dev/null +++ b/src/features/onboarding/hooks/queries/use-get-onboarding-user-data.ts @@ -0,0 +1,13 @@ +import type { OnboardingUserResponse } from '../../onboarding.type'; +import { getOnboardingUserById } from '../../onboarding.api'; +import { useQuery } from '@tanstack/react-query'; +import { DEFAULT_STALE_TIME } from '@/shared/constants'; + +export const useGetOnboardingUserData = (userId: number) => { + return useQuery({ + queryKey: ['user', userId], + queryFn: () => getOnboardingUserById(userId), + enabled: !!userId, + staleTime: DEFAULT_STALE_TIME, + }); +}; diff --git a/src/pages/OnboardingResult.tsx b/src/pages/OnboardingResult.tsx new file mode 100644 index 0000000..0c786da --- /dev/null +++ b/src/pages/OnboardingResult.tsx @@ -0,0 +1,171 @@ +import { useGetOnboardingUserData } from '@/features/onboarding/hooks/queries/use-get-onboarding-user-data'; +import { useLocation, Link } from 'react-router-dom'; + +export default function OnboardingResultPage() { + const location = useLocation(); + + const state = location.state; + const userId = state?.userId; + + const { + data: user, + isLoading, + isError, + + refetch, + } = useGetOnboardingUserData(userId!); + + if (isLoading) { + return ( +
+
+
+

사용자 정보를 불러오는 중...

+
+
+ ); + } + + if (isError) { + return ( +
+
+
+ + + +

오류 발생

+

+ '사용자 정보를 불러오는데 실패했습니다.' +

+
+ + + 온보딩으로 돌아가기 + +
+
+
+
+ ); + } + + if (user) { + return ( +
+
+ {/* 성공 아이콘 */} +
+
+ + + +
+

+ 온보딩 완료! +

+

환영합니다, {user.nickname}님!

+
+ +
+

입력하신 정보

+ +
+
+ + 사용자 ID + + #{user.id} +
+ +
+ + 닉네임 + + {user.nickname} +
+ +
+ 성별 + {user.gender} +
+ +
+
+ + 관심 장르 + + + {user.genre.length}개 선택 + +
+
+ {user.genre.map((genre, index) => ( + + {genre} + + ))} +
+
+ +
+ + 좋아하는 작품 + + + {user.favorite_movie} + +
+
+
+ +
+ + 다시 시작하기 + +
+ +
+

+ 입력하신 정보는 언제든지 프로필 설정에서 수정하실 수 있습니다. +

+
+
+
+ ); + } + + return null; +} diff --git a/src/shared/constants.ts b/src/shared/constants.ts new file mode 100644 index 0000000..10a5b8d --- /dev/null +++ b/src/shared/constants.ts @@ -0,0 +1 @@ +export const DEFAULT_STALE_TIME = 5 * 60 * 1000; From 82dbaff322a12b7af69e732f942e3e73fd06a21f Mon Sep 17 00:00:00 2001 From: junny97 Date: Thu, 5 Jun 2025 21:10:30 +0900 Subject: [PATCH 14/16] =?UTF-8?q?feat:=20=ED=94=84=EB=9D=BC=EC=9D=B4?= =?UTF-8?q?=EB=B9=97=20=EB=9D=BC=EC=9A=B0=ED=84=B0=20&=20=EC=98=A8?= =?UTF-8?q?=EB=B3=B4=EB=94=A9=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=9D=BC?= =?UTF-8?q?=EC=9A=B0=ED=8C=85=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.tsx | 7 ++----- src/routers/Router.tsx | 21 +++++++++++++++++++++ src/shared/guards/OnboardingResultGuard.tsx | 21 +++++++++++++++++++++ 3 files changed, 44 insertions(+), 5 deletions(-) create mode 100644 src/routers/Router.tsx create mode 100644 src/shared/guards/OnboardingResultGuard.tsx diff --git a/src/App.tsx b/src/App.tsx index 4c1cc8e..10d1f55 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,12 +1,9 @@ -import { Routes, Route } from 'react-router-dom'; -import OnboardingPage from '@/pages/OnboardingPage'; +import Router from './routers/Router'; function App() { return (
- - } /> - +
); } diff --git a/src/routers/Router.tsx b/src/routers/Router.tsx new file mode 100644 index 0000000..7e0d587 --- /dev/null +++ b/src/routers/Router.tsx @@ -0,0 +1,21 @@ +import OnboardingPage from '@/pages/OnboardingPage'; +import OnboardingResultPage from '@/pages/OnboardingResult'; +import OnboardingResultGuard from '@/shared/guards/OnboardingResultGuard'; +import { Navigate, Route, Routes } from 'react-router-dom'; + +export default function Router() { + return ( + + } /> + } /> + + + + } + /> + + ); +} diff --git a/src/shared/guards/OnboardingResultGuard.tsx b/src/shared/guards/OnboardingResultGuard.tsx new file mode 100644 index 0000000..638f19d --- /dev/null +++ b/src/shared/guards/OnboardingResultGuard.tsx @@ -0,0 +1,21 @@ +import { type ReactNode } from 'react'; +import { useLocation, Navigate } from 'react-router-dom'; + +interface OnboardingResultGuardProps { + children: ReactNode; + fallbackPath?: string; +} + +export default function OnboardingResultGuard({ + children, + fallbackPath, +}: OnboardingResultGuardProps) { + const location = useLocation(); + const userId = location.state?.userId; + + return !userId ? ( + + ) : ( + <>{children} + ); +} From c625a9eb11ae12fde4a6fc114e0145bf3277447d Mon Sep 17 00:00:00 2001 From: junny97 Date: Thu, 5 Jun 2025 22:11:21 +0900 Subject: [PATCH 15/16] =?UTF-8?q?refactor:=20=EC=98=A8=EB=B3=B4=EB=94=A9?= =?UTF-8?q?=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EA=B3=B5=ED=86=B5=20UI=20=EC=9A=94=EC=86=8C(Button,=20Header,?= =?UTF-8?q?=20Input)=20=EA=B3=B5=ED=86=B5=20=EC=BB=B4=ED=8F=AC=EB=84=8C?= =?UTF-8?q?=ED=8A=B8=EB=A1=9C=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../onboarding/components/FavoriteStep.tsx | 42 +++++++------------ .../onboarding/components/GenderStep.tsx | 17 ++++---- .../onboarding/components/GenresStep.tsx | 23 +++++----- .../onboarding/components/NicknameStep.tsx | 24 +++++------ src/pages/OnboardingPage.tsx | 18 +------- src/shared/components/Button.tsx | 36 ++++++++++++++++ src/shared/components/ErrorMessage.tsx | 13 ++++++ src/shared/components/Header.tsx | 10 +++++ src/shared/components/Input.tsx | 36 ++++++++++++++++ src/shared/components/ProgressBar.tsx | 31 ++++++++++++++ 10 files changed, 176 insertions(+), 74 deletions(-) create mode 100644 src/shared/components/Button.tsx create mode 100644 src/shared/components/ErrorMessage.tsx create mode 100644 src/shared/components/Header.tsx create mode 100644 src/shared/components/Input.tsx create mode 100644 src/shared/components/ProgressBar.tsx diff --git a/src/features/onboarding/components/FavoriteStep.tsx b/src/features/onboarding/components/FavoriteStep.tsx index a6ed320..437cdb7 100644 --- a/src/features/onboarding/components/FavoriteStep.tsx +++ b/src/features/onboarding/components/FavoriteStep.tsx @@ -5,6 +5,9 @@ import { type FavoriteFormData, type OnboardingData, } from '../onboarding.type'; +import Button from '@/shared/components/Button'; +import Header from '@/shared/components/Header'; +import Input from '@/shared/components/Input'; interface FavoriteStepProps { data: OnboardingData; @@ -45,50 +48,35 @@ export default function FavoriteStep({ return (
-

좋아하는 작품을 알려주세요

+
좋아하는 작품을 알려주세요
- - - {errors.favorite_movie && ( -

- {errors.favorite_movie.message} -

- )}
- - + 완료 +
diff --git a/src/features/onboarding/components/GenderStep.tsx b/src/features/onboarding/components/GenderStep.tsx index 7bdb341..824e840 100644 --- a/src/features/onboarding/components/GenderStep.tsx +++ b/src/features/onboarding/components/GenderStep.tsx @@ -5,6 +5,9 @@ import { type GenderFormData, type OnboardingData, } from '../onboarding.type'; +import Button from '@/shared/components/Button'; +import Header from '@/shared/components/Header'; +import ErrorMessage from '@/shared/components/ErrorMessage'; interface GenderStepProps { data: OnboardingData; @@ -34,7 +37,7 @@ export default function GenderStep({ data, onNext, onPrev }: GenderStepProps) { return (
-

성별을 선택해주세요

+
성별을 선택해주세요
@@ -72,21 +75,21 @@ export default function GenderStep({ data, onNext, onPrev }: GenderStepProps) {
{errors.gender && ( -

{errors.gender.message}

+ )}
- - +
diff --git a/src/features/onboarding/components/GenresStep.tsx b/src/features/onboarding/components/GenresStep.tsx index e3ac99c..9b64b76 100644 --- a/src/features/onboarding/components/GenresStep.tsx +++ b/src/features/onboarding/components/GenresStep.tsx @@ -7,6 +7,9 @@ import { type OnboardingData, } from '../onboarding.type'; import { AVAILABLE_GENRES } from '../onboarding.constant'; +import Button from '@/shared/components/Button'; +import Header from '@/shared/components/Header'; +import ErrorMessage from '@/shared/components/ErrorMessage'; interface GenresStepProps { data: OnboardingData; @@ -52,7 +55,7 @@ export default function GenresStep({ data, onNext, onPrev }: GenresStepProps) { return (
-

관심 장르를 선택해주세요

+
관심 장르를 선택해주세요

1개 이상 5개 이하로 선택해주세요

@@ -74,25 +77,25 @@ export default function GenresStep({ data, onNext, onPrev }: GenresStepProps) { ))}
{errors.genre && ( -

{errors.genre.message}

+ )}
- - +
diff --git a/src/features/onboarding/components/NicknameStep.tsx b/src/features/onboarding/components/NicknameStep.tsx index 52b7146..7b24857 100644 --- a/src/features/onboarding/components/NicknameStep.tsx +++ b/src/features/onboarding/components/NicknameStep.tsx @@ -5,6 +5,9 @@ import { type NicknameFormData, type OnboardingData, } from '../onboarding.type'; +import Button from '@/shared/components/Button'; +import Header from '@/shared/components/Header'; +import Input from '@/shared/components/Input'; interface NicknameStepProps { data: OnboardingData; @@ -30,34 +33,27 @@ export default function NicknameStep({ data, onNext }: NicknameStepProps) { return (
-

닉네임을 입력해주세요

+
닉네임을 입력해주세요
- - - {errors.nickname && ( -

- {errors.nickname.message} -

- )}
- +
diff --git a/src/pages/OnboardingPage.tsx b/src/pages/OnboardingPage.tsx index 31dcc4a..525f1de 100644 --- a/src/pages/OnboardingPage.tsx +++ b/src/pages/OnboardingPage.tsx @@ -10,6 +10,7 @@ import type { OnboardingData, OnboardingUserResponse, } from '@/features/onboarding/onboarding.type'; +import ProgressBar from '@/shared/components/ProgressBar'; import { useState } from 'react'; import { useNavigate } from 'react-router-dom'; @@ -29,8 +30,6 @@ export default function OnboardingPage() { steps: STEPS, }); - const progressPercentage = Math.round(((stepIndex + 1) / totalSteps) * 100); - const handleStepComplete = (newData: Partial) => { setOnboardingData((prevData) => ({ ...prevData, @@ -57,20 +56,7 @@ export default function OnboardingPage() { return (
{/* 프로그레스 바 */} -
-
- - {stepIndex + 1} / {totalSteps} - - {progressPercentage}% -
-
-
-
-
+ diff --git a/src/shared/components/Button.tsx b/src/shared/components/Button.tsx new file mode 100644 index 0000000..abc2eb1 --- /dev/null +++ b/src/shared/components/Button.tsx @@ -0,0 +1,36 @@ +import type { ButtonHTMLAttributes, ReactNode } from 'react'; + +type ButtonVariant = 'primary' | 'secondary' | 'disabled'; + +interface ButtonProps extends ButtonHTMLAttributes { + variant?: ButtonVariant; + children: ReactNode; + isLoading?: boolean; +} + +export default function Button({ + variant = 'primary', + children, + isLoading = false, + disabled, + className = '', + ...props +}: ButtonProps) { + const isDisabled = disabled || isLoading || variant === 'disabled'; + + const getButtonClass = () => { + if (isDisabled) return 'btn btn-disabled'; + if (variant === 'secondary') return 'btn btn-secondary'; + return 'btn btn-primary'; + }; + + return ( + + ); +} diff --git a/src/shared/components/ErrorMessage.tsx b/src/shared/components/ErrorMessage.tsx new file mode 100644 index 0000000..595a6fa --- /dev/null +++ b/src/shared/components/ErrorMessage.tsx @@ -0,0 +1,13 @@ +interface ErrorMessageProps { + message: string; + className?: string; +} + +export default function ErrorMessage({ + message, + className = '3', +}: ErrorMessageProps) { + if (!message) return null; + + return

{message}

; +} diff --git a/src/shared/components/Header.tsx b/src/shared/components/Header.tsx new file mode 100644 index 0000000..f3506eb --- /dev/null +++ b/src/shared/components/Header.tsx @@ -0,0 +1,10 @@ +import type { ReactNode } from 'react'; + +interface HeaderProps { + children: ReactNode; + className?: string; +} + +export default function Header({ children, className = '' }: HeaderProps) { + return

{children}

; +} diff --git a/src/shared/components/Input.tsx b/src/shared/components/Input.tsx new file mode 100644 index 0000000..579b670 --- /dev/null +++ b/src/shared/components/Input.tsx @@ -0,0 +1,36 @@ +import type { InputHTMLAttributes } from 'react'; +import { forwardRef } from 'react'; + +interface InputProps extends InputHTMLAttributes { + label: string; + error?: string; + id: string; +} + +const Input = forwardRef( + ({ label, error, className = '', id, ...props }, ref) => { + return ( +
+ + + + + {error &&

{error}

} +
+ ); + } +); + +export default Input; diff --git a/src/shared/components/ProgressBar.tsx b/src/shared/components/ProgressBar.tsx new file mode 100644 index 0000000..dde5b5e --- /dev/null +++ b/src/shared/components/ProgressBar.tsx @@ -0,0 +1,31 @@ +interface ProgressBarProps { + currentStep: number; + totalSteps: number; + className?: string; +} + +export default function ProgressBar({ + currentStep, + totalSteps, + className, +}: ProgressBarProps) { + const progressPercentage = Math.round((currentStep / totalSteps) * 100); + + return ( +
+
+ + {currentStep} / {totalSteps} + + {progressPercentage}% +
+ +
+
+
+
+ ); +} From 4bc27dee0d971322cfd6624645cd8f3223a76ec5 Mon Sep 17 00:00:00 2001 From: junny97 Date: Thu, 5 Jun 2025 23:27:23 +0900 Subject: [PATCH 16/16] =?UTF-8?q?refactor:=20useFunnel=20=ED=9B=85=20?= =?UTF-8?q?=EB=82=B4=EB=B6=80=EC=97=90=EC=84=9C=20=EC=9C=A0=ED=9A=A8?= =?UTF-8?q?=ED=95=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20url=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=20=EB=B0=A9=EC=A7=80=20=EB=A1=9C=EC=A7=81=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/features/funnel/use-funnel.ts | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/features/funnel/use-funnel.ts b/src/features/funnel/use-funnel.ts index c296f1c..ef5088b 100644 --- a/src/features/funnel/use-funnel.ts +++ b/src/features/funnel/use-funnel.ts @@ -1,4 +1,5 @@ import { useSearchParams, useNavigate } from 'react-router-dom'; +import { useEffect } from 'react'; interface UseFunnelProps { steps: T; @@ -19,28 +20,27 @@ export function useFunnel({ const [searchParams] = useSearchParams(); const navigate = useNavigate(); - // URL에서 현재 스텝 추출 및 초기화 - const getCurrentStep = (): T[number] => { + // step 파라미터에 없는 값일 경우 첫 번째 스텝으로 초기 url 설정 + useEffect(() => { const urlStep = searchParams.get('step'); - - if (urlStep && steps.includes(urlStep)) { - return urlStep; + if (!urlStep) { + const newParams = new URLSearchParams(searchParams); + newParams.set('step', steps[0]); + navigate(`?${newParams.toString()}`, { replace: true }); } + }, [searchParams, steps, navigate]); - // URL에 유효한 step이 없으면 첫 번째 step으로 설정 - const firstStep = steps[0]; - const newParams = new URLSearchParams(searchParams); - newParams.set('step', firstStep); - navigate(`?${newParams.toString()}`, { replace: true }); - - return firstStep; + // 현재 스텝 가져오기 + const getCurrentStep = (): T[number] => { + const urlStep = searchParams.get('step'); + return urlStep && steps.includes(urlStep) ? urlStep : steps[0]; }; const currentStep = getCurrentStep(); const stepIndex = steps.indexOf(currentStep); const totalSteps = steps.length; - // STEP URL 업데이트 함수 + // step url 업데이트 함수 const updateUrl = (step: string) => { const newParams = new URLSearchParams(searchParams); newParams.set('step', step);