FbKXpUGtZlE
zSeR=tw1VOX_{9%csk_Fr@AoMHp)7~(WVoS%E`P5TJ#qKL+R-mP9uxv)99ewRe+i++
z@tkp}+pq>=pF196_?5_pa$gvtO&VVMP@(J)V9;JxEjzhXF}8SfwRrpWFRE@*%;usP
ze-XY|uNz~FKq_@~iup-~r1!?iKu(})7MeG<#$C$HsKLB0g3{!g+%%e+-ZY`AW=CG1
ze|GH~+sMoV4~JcnuX`Qf)L%re8&-G6U(_RV2DgD9aGKuT0Dj%ga^=3?eKuJQuCY&E
zmb&Y~x_DXB?313vlqsG1LR0PXzu2469hNf!g5Ddg28vxd
z=VDa-!N!C}z`FCEck<|Kjyzp+DC^Q}WmTT148-=#U{%czesd=*q0RT!lpUF>DY#R?
zZe*{-a9NYVJ|tqV?6)OiQ2OsZjdqqEUjNlSi0gj;8ew@jwYGQhO*Yv>mcgU9BoBmT
z5Rj!P@JXC@xRu~@N#2wyWU%7WtAzDei|AP4u}*MWeRoUdhk65S=#t$l4{Z)tUfjxG
z@cX@pcx`XqV2`iM(&F-+Ni5}=i4_$RnJN<3py>$s{vg?aab8@vBgNEW?1{-;|IMLo
z%k-~aS;z&vFk)lih6;9nbvkAWY${MEiK(yL7ywwJ7dq3{*6*S-U0?bncZd3c@MI>J
zwW5BKHC7$P9pV6!uY~)9Y5>q2}5VDux>@
zza`%}E)LmFF`U!qHd_pGssdLx)`We?Bh=Sd1obl%8ZoZOj6GynYQg2>CDAj!3!#-|
zx~`XhOtiX3n`+OC3#q16|3mc!-9u@iavo>-T7qQT(okYPplY#E@o5wEX*7Qc-&;$Z
ze4)H3i?;&QN(PKWSbABZ*V7E3;BHAlwFf-CoTPsj1(*1jz?YZTkA{#b3u=cKtvSEs
z8xvvd`pOEKT@ymk^fI4eJDIODG+r_U9(j;4N?TSu^c
ztUR}U;dR-SG
z!jiyF{LPCysBV!;3aQ3>tusOvHHZei`2l4fq{au;H7JJO-cy
zRbFPABd**uZ7n{yk;fujJKm#yf(X@DK94syn-2k>zAOgD4rW8iI%iR_2J@8ZL(3d_
z+giLu%RU6W+zwg|n`^5B`Uk_hdvAe6GR_pr{Nm`F3idU(q?6h%#fnXlq_bxvvlWb;
z&|deHu1>G=zx480;#gUBK3s&H#&AUAKE)-3Xav^s2JD)C|E)<
zU2D$Y^1}N=WVTh$2jJ~P8djDhud@{C-XRjpvy;l}ClmkdRSxkKe};8*tg$zJHl*zV
z?^`=_yRze!jHDUO<5yP>26M-YCKlY++jDvY^)eNr88e56efxoE8_n&?0H~gElfuvP
zYei;a(VF&BfHZoX7#Z%1H)%XcQhbKX`s&9So8&cibBY*s}_x%hCP?XU(wWdwl@IyPQscMK9M8x$m-K4|lzlcZL
zX*PTE6YEqpt+$FYJ>pvKZHvhz0ZNK%7nz98>or#?%+WEmIf{7^JvG--HFxr!8i
zIhJa2_^A$Fs`YuqTa*795=M;6
zpW@T_)w5e9`RJqXrJyrA{?O&?W4GH7{(i@|6hR5wKA(P$cs_jis#W|_^6{$Y$r!CZ
zTD%G~&*4t&sb2J$KwL>$SNm;K?x)#l@4G2^=<1rwTb0g@wv^p?!fSpcRD^l6j!#gD
zslV$=*zG?zJyfW(f6!1*P&Pt`JhH{m=~}P`gPWXOHqXc$KPR$W{M^gB59PDtMlTI)
zV8yAMC{fi15A2`j}J(Cigfb^aEIH8hZD)sU;Gq!@+)&I!e>RX7T36vXaHjV
z4{#ViUD{oQCs{=gYu@o-@h!eB}oX&1?}oVqP=8*D!W+sX>~{WEgflQ7Zr
zD|<7aaj8G-E*7*qQMQWd$&xXnr$o2qLeUBxwYGaF+s0ZfVVk_=^Ouljg$dsYSjK%9
z!e%G!`)?adiJ&n)e}z`J_T+?eU>8fKEzPu?
zvE?M}^dE7)s_X>;Y%WLltQ5bV8D(kKIUuw}t-GoI{=7f0jC`Hjs=l-;VQJ7?2m(IU
zp4_t{ziIzOHpi5WU5Hs)#1!-%P?w8a`~;F)O>W06!Ga(3Q2X70epCQ5cE%R5aY{w}
zesMFyn_(4g{-O?;fOXC=wb3k+K@2+nhvS&)O^?+8AOX+yF!Sn-(NaBv=J+G$bGJT
z*txiZbj;>k1k^nyA*;^e&F?y4b592a0PM|kPj
z`_%$fPF_s~(RhyS5M(+6J@8X%QwVviJHN)lCPcHYf4?G;-5yk`2e
zRg2PDa8_lLjU=#(a?R<%>KuJ1PTr8x^0&et+n$>HIq|Xpa1GCbX!&9T3|AfA4jfb0
zYQ47@^U(6fE{>RE?R6#6jl+X_1FNiCY3*U>>uIeqFBvda=*G=?Q0Zk+@0*@dL_WcS{fsSJ-c$lS(@onXT7Ujh^z$JK
z@H?$Fr#7mI)$lKT`F}a1f_+{1%_LP?X!#2Iak}ev+w3>>;D~)W?U%k2+^0i?
z;Tav~)NS#9##U@Y06Fwi;xCCYr#+{AfB&L!&09^TKMyee5I-?}I7_7GIdYIYjMG
zwNc5L@TbNtoVtw@@B!-Mam<|drSmzbf2`~`-o6&X-&?o^B(}K^fqR~a#y<>I|e~wB0NGjK%D{`LCZfgfN48!3p60xQ4z4N&jCbs
zHUDFU0-Da9nT06TE0VzJQO}WBqGcRqHzR0-B7i4rxDE|?s6mCW82&cZ{HmewKJcG?
zCl1KxIkh<1c25AHMhKiuJ#P?Bwj4;1F__}~;MJN@&eDunQ2eTdR{V)JvzQq8(zL35=n3ec*r)DwaV
z%!jRVb+Xto*$4FxX6V02OWfp)OaVpr(5sL%?_7)F!MDbleTOM;mr(_nT
zNiX_U;0pl9TK8liB$EYd^u@uqF=P7nIz@#LbC}}|8DQXIi!EK$W3U`b#`-dNpf@LO
zynj^`lvd9}w-todckyPp_u#2V?2eS=Jr&S@nP44Mg2xQc>)=_2FU@8&%JN{`%76et
zOaS%q8U{gyq&~D&A{3D5|E#bvE%AGwz3%@Bpb-ce3<4fOtM2|kb-jgsokG`zlPBk{
zrfL4e$ZmOak96T4`s0Cj)%|ge7*ASFf7V6p!+ZU6j85v9vCy}LW?QzTfWIs>t(L_0
zG|_c6%b3-1KmDLq!cFkWG(nP2pne1=BvJ=_TD&~_cJ$0`r^Y&nL1(A<4rOqY&YRyR%e4;}
z2^+Bnt2Fr@3eh=LP2+^T*EV5pfd$gP?+1#DqtayKD~luho=J{wFSCdNwdru#YK+?k
zB`-j)K%>p>fx$8;>M5x&hd1DIg!r_!cz@{1J9g;A3zKH>VG7Z!FKW!IxqoG9MnsWj
z*|H+^JYyb=27IfEqlYS@+a3i0>JQjTKtI{({I>N)uTaURuPDu3xQ@yENTV+v4q*M4
z!!z)%$Q$%!iL=2ozo=ei*&PSC?fpr*(zUmmu3b%Q^Vu5+m3}V=6l1YW$If|l5^vuR
z#mLSgznd7By9|aajt3LVZK%WnFkNbz#d##dn?Yw~tAa=Gy#-fXpH1S(rE)hCAXyj-
zfUwtoj;EDd8Eds7D9TR|xO`3Z8_f`aJR+F?lz@I(Q665{uj@6BFwXrunM{3zE!{rfENc%r(Gc7N+YlQ`12EI+jG6qpI|
z0Dy>tNfg~fxjX>nV4v#=MQwMO(E$Dy_S-?YeOAL`PKT;HGXI&UmSlf~20VL$3Zk!D
zMCX711#&;V>wVVm&y(0f_yeIuniq`%IM^oe$aPyK`6Fw&Vl|SP9+e+)fT-+c{o>yV
zj$lUk(!3qk9P*_*imBT%W6lVO`eg+|1$zf5mPl~>d7C%Pq=)$WZ=zk+r_VGgXU-zO
zIjnZTrq>t%D4EIRh=ZkY$tGU2_sy`Vl?sxEmK$G4e+wmqfM7K7Ue6zV*zck7ye6h!
zY{$52_U)Nx+;FIvftgRKh_+Z}!wR!Kg~1zfwSSneh|6=@u}6VZn_4QlyC*9DkUO?a
zX^e{IUv^0NPZVHFPD6gY?Aue|I%c5;*pWX5Tl@tJCV=GYXcJ%=2WV%p<-AkqhY7ES
zToocwsp`}oGyZU2J{KYbP82wam4-JRUrBuLD2xU*cjFub(Lt@RZ
zeQ&QFkxt5~E}<)MK}hzVvBAh(}Sgl3NrC?m)7U>iN_~pUI*}ae^~h?2bkfdOfFY*-ep`d8l$>Y6v#|5>K`2I0LaW
z@X%j`MiyUL2)oAPStH_*SqA~#GhhZwjJp{m+ODDi?dkwPU3IK^tQ%i)Y^539+Mv^L
z6uyOgGMds5=zj)%qjO_JAwdfAe;K|%Yi_L3dOq@s41isAe$Eo>U~~W0Ix_
za<-GyGhi)017hFa>T6ls+>uLUrO~BrqLb${HffAZcW_<#40Y!N$U6pKfF
zwVq{Nh7k67;mg*EOB9Jj2f7XRFoF6<_pTP}o1L4FaIP_E^o-fx%|+>zp#8`}A8
zQ#bSI()i<$q;+->z(?ADONYjDkM!t0tTbp7_MXc{U;rK^GoiPxA=fF;J@`XMD3m;V%25)|d@#+lS#fxr~HKmHoqDeUneW&DTo%QUu2l}g9
zC?%1D@vhzkB>S>zhjH4c%Gsv@{!pi
zm#j5j&s^tfIT=23kVZTK40emWUNX7wRAsG%{)pXToE{a3+_z=D8f_5}#0Kr8w2_h-
z>HAdU)7RQ6U6AD~k?m58nkJJRwG!$QOP>q$XnW)Z`tfrl8w`;06fdrvrT#}B@`RKIi-pLU{B^|Mq!0&Z&;W2mv3a!(qB8&@9DMvInO6mNL
zZg@F_3jC3S9^PDRu>PMz2-dMr+<*A(f&-Xya}TQc_zW9uASY5>B%K41RLOXaVPcJ3
zTnVK)=m?=Yq114_kTV)^RBZAn?nLQ6PP`9+O;Jeob~F+K=MS9{2I96cH@^{}7-2#N
zS_4fZQ|(ZQlGDJ{yv)!P`<)nU_O^zu!l5qAS_g{gw-kpf;`i>wS64Y*j?{NOKnVMz
z-*ZLj$|t;9d8`Y}pLnyA@7D~-HE1r!1|P)jg;5hq5O;mwUlu+dtfhFngQ^$JM4%vJ
z`ynSMZjcw9UXblg+TT3ReV_DBihlP^rDBdyTRPvXZRPiV7ys!;r;-Qd!jEysV?Jd>
zhncOVN|T$yz>4Eo-<-NSlJsKb)mj@}n5!K6Fd6lIFIGj+dWq3Db%)0x)ov`qcPAUw
zK_;t4DX6hU@wUl6yAg14apZqP~GQTY&%g0^eMbfdAGq2_jo4^
zumN-23Nat-hIO2U*0`+fqCf3fnSq)PuUghOH!>A}pFOvjz`dq{G0hgCdfk2!5aZ
z28;r{v^%cwf>Aqa`5G>HlF?{#TU5EO`#3x`0F=8|iEbRm%lxJkP_=W_7Qzh`1K|dd
z?|3o{hoA$=E;oQ4I)F8xli=mT@!&q3wMo>z?w$OEg9SOA1C47j(buqmTn`>(C701H
z!ew$pDqfOi6Ml1nnM4AcxY0wmihmYLAbuQ;ET?64v3@I&@yH^6{CQ8grBWRw}8
z>~nXF6@ycpP9+uG3Q_tJ#7ptIQWant9x;C3{d=dS1=$uvM-1Hd&d~i@5#o2I%Wojl
zIgl`FJ2P?Gf0H}YP(x91QY;#)=z;-Iam?>`x=={a*cRl(t`o|iz5qu4a6-fkfw}=5
z%abM;xat2Ap2@tVR}WkJtO!6f`$k8Xi9lEWcOlEjHVq|j|3|WD_P-jibsG$j;f&g`
z*E`wwaJ2%}o9!b^>nmC`ArK_3ucxPgfJOkkSzTWf*86=5jPAQJUvKR&(C;FBO&P`o=VU5Zoi
z)M}6cPR;aAvXtnT+Zcd0Tsq72-Z&Zdgwo%O2;}@sp&m8L^>!)Ia-s#U%TyNEe?Wal
zSQ_&@(cIk-=;>o{N?Zg5*9~KQz!e#OS8Ba6@;x)1vO9{wH58bc-JZdoId=h
zM_teGgXj!SfklSx=`13j`q4~sq0?aU)hChI9~jLpgb-Iur0*avyEE@>cPPX-Jn#S9Q`OUncuR
zmG(*+Iry&b7_?=(Yo%AHwkc?_$1HXnFGLwpaL#pT8U9vEbFlzFfCNtp6+$#`=+s_ZK*N;ypv1CuO3xH&$^pd*d#m
zTtfZCn}y-UPkH84-2{&V^7IXy*o%TNdMSK_=)pwd$S;ZQRW;VTZxJqs=`Vq(8?A`P9}O`x_frmLFjnu^du)
z9huOhu62^Xb(8Pgwd01u$Bq*c+}
zuSId9HLidNRUj@dKw(EegUw38G&
z)*^!SF}_nFbJ>`!o0jhh8BnJW`(K_C7@1D8%f6fHiBIa|E+d0gs{kNG?No*TYsH(N
z{7?)i7udmmvxN)##>qKfUD~4@+8UzIrSXemgTfMO0Asa<`nca{RejrU4t`=@SD|Kg
z1%6=a-P(z(N`CX4aoclh%3xYfyh=4m0H_Qc9J3!B+pZ=_Qq9jtDXI>6ci3iomXEaW
zh+E==yip)W1&U18J%+QOm9#hlJIV5W!ftPpEl2%==I`#^gI7HNdvzuyk+FxvLs?e
zfB;JXsE6ui?plv$jX!YB{^!NpVx43F(R*cp&B?ixaN;j;$TI+qrD2^oyHk3L#Q_`y
zj}E^W?1Cem8u$BFXuY`(rIl}$*W9b*Xd`|<^ttG!cm*$rQ=8xco^MXg&L8S+k5p{>
z9o6Cuas&;z4iZN;s|Jcka1>u%(>33X=#kyEyi7vyj^yc(q@B1ul?%zA_#-J_Qj>ti
z{!pr#M$??b{_~uG8(FHS?gSd!@FZoTL`9#LU?M;c@9#zcusL@67_%SLb^j{InD;*v
zp1bS*8aS0_k)Xx?Kpk8|n`C>32N`g#cvY%U&-z7XK_k!e_oI6vMFM$Vol9E^R0s8<
zTMSvqg;%y*`2*a!$Oy1GyH~ou%A`$FexCQSSoyRN#i1Y-B$7H}eVXR^_@0;*+@Z|2
zV0PCclEgE;qRVRYSIRz`Mn%L&?SJYlo5afwj0_IXR84A7)ZW*U^=|a)s_iPLkD$?^
zqRA4n{5~I#m)8R=%ytuO?YbxND=l%gTsmSYdbk=^sOllw6-QrBf@hE&pY2{b(8zzZUH$tyXC*
z@>pzg7mpJ~j^ob1jVo+w>YS+enaG5#09`_qBxVvnkWPpLd>W7v3xI($pq=p4|0=}R
zcG~WLr{mvjguo{kG43v{1q$-E)mhK8^SQ>eVYVCh2E;!EHEr3~bz~!EZ*?Vqa_Y)o
z9lbo1R^KW$qv$&mzIWpi$zH)E9ZDIYrXdHM2wP^uW4&J_fRdDVS>N`j39Q>?*6Kz|
zfr4>->r`Kn-(4!63qI=S>1J);&75V6B~AOjUs+sPoKv3`T`a(o!MKp7!4@xLexVBK
zMOPLPq{y#E@AU&`FEiMmG7y0?2BVJ{2l1dq!vOqMPz-c
zZQ?_AKV<8!(UJqdJ?uLx=pz$}Q9H}L#1j1Y?BREBMpHas(#mfiGat127RYCA&8;L7
zT@`H{R~Acbp9;gDOC&+TLMZn_%v-n~{#HP7dri(CuDGiCrk=g`4RSAhAtN^O)5Bhw
zMt1t>Qz6${{M^Eqcn=?_4|lFa4>Z-{e12nG
zS5ufa+g;w8NuaM8Ez;CjDY}E12IhrkZvOKz&<1Ib6P7nTC(+AkOxX2c+$s}WRC?=n
zt@V(gaFDWGWgj$8naG|2O%I@n3lImL?!ZQ^6DLssXb-rFD+SMy4LJ+<+v}xKByi4(E^ETvJe~e9M3|>(J
zlo-fb&QeL-AN#*u=-zJ5cB|RDP@!8D=7a!ba;@vez$|wQ0C_Vxfh#vAzqH@x*1NU5
zUm3A5SMu}Qw|)F-nMbN10w6{0Zt@fQ%5NA|4HJQZxa`@~)V*3c()
zoa{^9P{xY4P9kq2w0qO9fI_qIzNh;ABq-Mezo3wRLb?}d38>zI++wTSp`?CqF-kRL#r
znkhkezDY
zwQ|Jd+V@E>m=7fv&|ma&J^ogf?u>WHWGR3Kf2X?#6;5Ss?&WVT-y
z6N8_n`Uet@#{)00B~>3h52z)Hv6!Ay1^dkws
zvACQ7xlccf+WLP@y>(Po-4`{yFI>92yAhF(w`KEL;U$H%y1@YlWjoU`{?d+oXAoXam)*!0})y<_XL=nKwiyIoLjl*t3AehhpZ!?4>WVYE!PpH}CBBDc}FTb(LEbmyZFl13yqG
zr6-7212y{(6wp4fm*Dw*=1iQ{GOwpYZB#jNYYDL6T{se%8A&r(oN&!LgE^w30{(F3
zy)KqJF@or|4jGp)S$6WU(edxP2@KsrIN)B%QE+9u%Px$O)q4}iItfWx$YZAJ3X8pZ(rgTnFN$`op?gCLD74y~eovS5t
zj;XWsw(Tn&ADLF=xh%H216qT5Jz5B(tB6HO%iaHM1mrjmhZ?N{`zo?craY`tc^nCboy>sh*7RQ!y
z-a;N@_geT!HyPD26f4VqhzE%vT-lJbeU6_DlO9zh6%6SWycKR>Bvy$hbQ=%@3qCo*
zKVMl3f39HLjwM{Vcfashx;?flsp9jxFndv9V5DiI
zdRChV7gZhw0PQ@%4+hG0(IR#KC!!H;$apw@W{@@@)p|=UDt^tSlMe
zJpCZEL+8VpRT;~_f?KU35=#@L?UriXX{QgkXkHiIoaP@l=CUs^6
zP!@czq0(J#P5+E0P%Q#|0?__LwJCROSP#kHT53GCwbJimm^
z+!Wg~6PL7{lRxXa8s7!EIa!HtBY1fDx2c@0(_A8q3dMR;){!vEcxkS)1N@SRW`slm0-%JmP0O-H6Vfo9;agdP{AP?ilcz|BY&-l
zbeD--)^&z72BXNmS+CNdgOxQpQ?WLzjlR}t#Ivv&LP}709+zICb~3wRnxKw$`K1^BG-zs#4aF1{|C}
zIKEY|IT5>e_g<_)kcJU)LK_}f>u4oi@oNmqO#_ww`dNNwh*lM#JCjOg0tl@>LF6<0
z1VgYmc+zT^{wP9`fchh|_kH!%;cxV4EShRZg&crXK;y>GYZ-g-8W#Y`A3b#fU8mI$
z+u_epG@2v_L$=jYKgSg&cuclaRzuC`;%dW>r;#KtC(S-d1bh9kgyA>08p)cm-{&HB
zePG}o1H)JR+7eb{(Ct)N{W-x+8+Hr>DJ4*TK0Yn@DV{`4A)!fWq08&d0b>Qaw$IoM
zALwk~BOvRHW9n6(?7!8$ieCHKAVFLuDI)q#iU8Hd28OVAdcl;DK`zIVu*m2k@suAO
z9@{RmMZ5GzfZwLQ-La(o)r471F*cc;1Yopp{p>VS%i2&@kT5+hVSDWN9Qzr-3P1;+
zLvc~ae1&C%6cN8T&-Gbh<*6SJY)IL4O31ptvIzjGrvM=4XlYghdPj6K{$NyWQ1+-9
zE+LH<&SF!K7HYRqFlXU}l)G!Y&41s#k5TZz(xv0THT*XOSqeh8a`rMsSa=GfB;KPmj
z63fksnP3z!0!_Z3Fh)*<(|^p*M{Dl`W7W|C<4_q4JpK!U`T7Jm5=nzB&M18!+nnwR
z7__MzF8|DM@?(bqUon)n-MF{SN6kqwY+skt-lmSj06Ti{LW%l%=^xV0
z_fT!BMa=>}jIpXX)0FEm`9V)ZQD=13g0dAoZl+XshDhWc^Lz&i7~MRSqK*T9tP9yJ
z+wS9HJd8o7S#Gj(vw=5^eLVY>h2{(g=~>tS;Uwj%SC=~BYHYj~78tAXgNTtq1!1$b
z)58=!cI@(sHu|SQ%t40Ci#z(z1FeVo5nu4
z*{aKr{s<7H0CdsuI`TWEvHoL)dupzq8NmAzR8<{NK+v0&iV|W8Q8w*!b!rk2br93e
zEGX8Ada#q)DGkbjxoCH|uUQF$YnTDwdW8%z8T>g}s$I~^D@7X>k>+?o4M=R%{B
z4H7M2WmJDA87(6K(O?lxj3Fy((sj|NODylNfR_4Uq0?Bv)v%F+j*hX=Z@%7KA@c+l
z%P?3;R92!xgVURXe0N|j`-D`R#ciCp8WW@(5>-|pIYxC{WrTUq3rO;-4Yr#E-28YZ
zna0y1I(>%ok1^d~n3L}wJk3T?eTaqtNV)AAg_*j{^=~`S+KE0ZD0BlrV;l`c{JfFd
zxTo9EL%74$g;ZR2<>+v3$2+|#AjJi-e>*$Q9K8z}$QG!sboD5HIjyXzLACn?z9i@4NAaO@+mILr%vgSG(yT
zFwUwK7fS1Gi0q?
zEkdUSbulyl2!*d^uz?Z&jRM~qo9B6E_p-pC;*T9lb3oV&<%oL(h(qE!&l8S@WC0;R+FzZN^vLcJQ??GPsJAISb5CuFUdXIodVh#Gq
z#y1ne50X|eKOk7ZHf32|$0WPbe-#IDB^X#-=b!?m{%~_k=Te?uB`Tvl5_&o;+qN){J7PIT8hL7(wuyZWlyg0qWEIq@jYN;ux
z_Li-6!XxfA3q!`L9CqB-VCbE2{EE69VdbIxidaeX_}X1e8U=(0N*Tx{v%{mZ>97i;
z(ZA~Oj7{)dxGH?ZFo_KJ_)@joh)VNI2iA#UxrA7zJoq2$cYup{Ao?Juu-Zuv
z#($tGD=m#Jb4c3a)|Dc~u{YfkKvq}Ah24H?K+X*&``=pqzv==Vp0AT2H^OKJfL50M
zN1B4-{J`ANbZ_a~?Zx6!kah>T{$z-dZ2aA^K@c^zq|dF9Og!b22iwy02Nw@DEn~d{
z!(XF;YeQ?Vks#s_J4Iw5H5NS{J!)QxiVC;xh`7>rp#{;rFj3TojvkXtp%dOTpb<0l
zxz;HW_~;tFGc@8llNf`#Oj(oFUrh(}>+6T#r?U!%`C^+1X3#?HBu|t==
z^}bdFDkV%y?9^H&SwhKr%M^FlX&630GZJ`9!T}1wa&kZZ=_ERC1L^(#9N;sg?80r(jOm
zQI^)w9i&@WmSFi>%0`$HQil&bh@s3>?lx
zmo4{rjry&8zEOyW`Hto;({5nhD56bXtdY4LUg6Lv^JiP`Lf=Ge;rbP_s^}U7EbNk<
zP=l0BDtI6E#_}X1bqsPdfldPdpEnlIRDm~w?UeLI>
zg(Nr=`AU|0-=(e;~FLD0#6OQ@@^*i#epjTMYgs{j>HJ7EC-^h;LJ
zP+a*;a{__gcgs=-0Vn}%w=1P+s{Y-CfX{!RA2#)jSOuVi^Qar=f#f`e|6dYpLKDj(
z7yWNJN<(GHPTs3PPUMxiy~hwXXxmzgIfsB;e)#t|rnZkZFA7JP@;q$*S|EMPrU~kkJ2^HCGm8hcI4QONW<%xko
z9tx*}Q%=Rv*A33|=ZK0{ngHx%wHlqkVFrOJ*^?UYg#6)danCU?xdw2L~#fzVREW;}damva*
z`^8(qiz-{Suulqp?;D$`0l7!%>l3pQ_ndg=C^a%_0!Kcf081+1cs1d>%?^(09Qp6C9
z7h#WCKLO^%d-#m0RB&2US6a+YYcV;vl`h@;pAjBy?h$aG5g&d0Egkt|I9w5pFc=$H
zRVI8t<%@Rp$*6Pck6AxUG1mvhb!8ysn|^FrMV>jUqpB0$M@FAg`5F8q6jsz;s$e9p
zSr$Q%Q*e0&ghu)bQvnbp9wqW%@7Jz`XJezLp&k}+G=}|Qwpm%aB0SH$$r}DM`Q_c8
z6fqmq$6EP$aXlTVE}i@C7>stPZLviFx8)VHEu7PGSM!@!Sd+m0kfzEbW6=|~Y6&PC
zqX@fwuB)1?h(4+v1gB@0l^{&8>{^b|EpNAKqm@GsLI61{X;WJ+Oir*!3!M27GE
zbKct*YuZcZYC#wzWMzt1hX#y?FPBl`&hhv6RL_0g9L0Q@Q!XFo873AzUzfb4XMN=%N$N@RQ7y#vLYYj%7DsRGl
z4fnrDil6(wYnYEf9IBX~ev|;<*6sA!)ze@9*Z^t)`=6?tCzOT23$9Vz=3Z=fI2wvqSh$jG~9P7MxIcn7nra3fjY)pyA2w9
zHDS`WzFS)cjp%4rSqGRLgl+}UzcTUb==)?!LngrqLkw(?j><_2Ji0z66w$HIo?_Dr$I&7fbu{JDQ%l5e9G%blQ+LO+S1UltaL{p}NMMFbPQ56-{
z1AKaz3`Ny6bAEh!O_TQlNz;IcE+>G#FBO^uwH&XikX+
zonGpPJt2OCf-oSOq+ML~@BIhDrn33zz`_VL!Fe%%)&TBtLIQ&d=!ptJRl-lnjZY#!
z{4wCXQ-9g7(+Wd8+$H<#q4JnioTVWG6|T%ArxN;e`B(o0E-1XX(oQr4oY_Z|U?>>{
zynK2oSg03kU+R8*nx7YNI!ZFRfeyI_(aI?O{(Wrz9G7a=q%(a|g{KS)#P)(k)-$Jp
zgFGOYn5>0ArH6_%*`l-
zoqIZsbUcL{L~+6+B#pd$V);MNMX5kP9SmC=cHRrJUzZU--@JXDpHM+JE4^;V=lq)4
z%LOKf>XmJ~OkxLLUEF56cycgYw)7MQK@E`x{t3DUtSGPI8VDqQ&SSMRg<^wS*m+<=
zs#4+Ad3@-$-ziZ=2ik2B@Br(q=rC_8_@o;CD|%sSH`2*P$a~5q1seftqX1wnCee(;
z0H3*l&;9$bk%X#E-I|>ikn3NBfzx7dB{UNUFU6(+5XI6~ro_;i>iKwtpI*ZV-u)g5P!f=bECyp?79*=pYT`nWd49}tG3
z88*dkPbYKcbJm@&cYK<
zyCl_dpF(1c1ZX?q1MH0^)Ij9>wb(@j%p0EMKlgu%r&r<^MT;t-2
z{;<8NjP+y`F{!)G>Q5Q!4Qzl}wM@jw{gkzYB$g>QZ{vSuavVP<4md78L^TfLe(+We
zlrBv+b1}rK#=yo3X0LJ>NxASU`bMl@y+fSM%-j#@R$$X+Fe#Hig
za#UD!VA~4Nw2TGn#X1-jzVe>nI>jdki+s+88433ulrj1JX*mmv1z-_}ARC2qJquc9
zy~Nd!40Jio;Gov?*z2KS#?q2{@Z|90;Rq>xU>b;oS5gLB(_ztvBdq_gs&)W&L%)Lp
z-q6y5w#K^xnPB95asH#{i5Hcz%DX4I#qC9)uMB{(BESrV^dOEgv6l=b|EL`OKTLbD
z0-+T$>EN(Dch^#BM;)E-Jvlmd*7y4Po8OzF`emnzUKjwI4Zz6@Ug$hk$Sd8@q;b=M
z`7C3$wWAcq#%J88t*~5y=v$FbrE$n#p{CNV*4Wf7;_gr0e_Q_4pZQzml)^Zd;Pv2)P0&g_{p9Q$FdtG7!&rWePt
z!+7#xEhGmhi_)}tp@D%4d=isJYh~JzmA{%hC{O^>m+OeCaUw0rcKTLDg@^Ypb(FLY=`8HwRcTy`x`=D4;(0iVKEfPc8R~W!e&H4*t4gjHEo!Jj_&gD
z-Wdt;<^w-e=!NGc5ne_x(A3Ahu6)No?2G}vbcvXvYGgR38Ff3^`~#XK0aEnA@K>S(
z>&eY&i?1mOFHM`+xAXF#X%m7}ht#~9zdlzrx^_)-p(6V8te;Lxk8w?OcxR(bt|)0u
z3jpEV>-2;aWsdDR0zV>zvb(kq+`luBdXG%5@!cgpmvT_Sx*#cK9%FY
zpsUdWi{2*ZDX%wMP>~1&0kY6iTL!x3?zE>TsNgsZT?Ftv`u$m;5dy}D&Lx)|S=%^O
z|DUj$wk`)n?oKNV+Dmr`z$aI!OSbwC_s_8NnT+Rz*9xD1ja6Q})Fsdd;o~p_R|^2g
zy``sV;*$7oG{eGXwRYrgZsipmk*LSzulS_7x
zQkNLCO=dt4wysO;EPl5TC1w&ujzYJtLN}DEs2oeaj^vnIrH~gGYrZ;pVysK~=#B{0%P(?#P(7l(>EU0d>o_zr1r>)b@tJ`8tF$I4(&ZGy%
zVxLFt?0FMMrG45M{$N0jCP`O^Qu_UO@QcEjHKA)~(ND?wH)U<8N}<$XGBw6{w#WA#
zia$*{9zB|^&{6G=E+|#eG!P!w5GS-bJ;Fql_Z9PNA&mo)(sr0A>Q!?-__H=Pz$GLr
zW}!Cg!Hct-vZCMO;U1T!4CnL(6~ifg-y%o3>g+dsG^XZ-_`75zQNiuElj=XT5=1S+
z*MBXCo0QEnaD%=L*!o*1waxG7{AjVBhLEXUH
zP@0{$rc9(d_OgKRnTd+CBKz=xWHSs=snc(^yz8FqAw{5BB=AA@#VK?td!t8otd~|m
zyG!@_^NYwN==J!bX(XFTG8nyfZku`I@1GRx?e(1crhCk6@>f-%G=}}ayO=er^U-h{
z$i`lJ3IopwU~*ODZnO}&lzd4956o@h*{J6{iN9ZYRpN}**Xp&kbHC
zIa)bG>i+QHehrFBVT-o=71JecaDRY!j#gP!X*+(AW5mthh`9$d?6U8M_4*v_at(*o
zCQs(p9%Ye_W!xA*$Wk+e%e%Rh!u^e61zQ?-f|v%=6blPeKJmEO}EHC5?!J
zH$_D`em8k=OmQL1;%@z}CtC)PE{to7_STK!=$e!LW1n&9kwbGcljfw4zR6%%XB-KK
ztRwN!)9r~A)cP@rz?LOZiq~vB^8PJ9P3@ozdu1((2}^jDApMSrmE|rZ!KpLGz_CzP
zdi~XcD)yK4tHGCN5rSLP_O80*CcDIP9sIU7yv79Gnki9BqR%b`@0(oDDLHRM)<{Ws
z*Yk;A!w5$xyN&u!tM3YT2spAvf_*s<2|*5~SQ@f~Osf(|Z~b&-FQXp=+gD~L>wkyf
zB{iV`y!kq_DQm%)IuTUj;keD;Hxs;e=8Fz-S7~ctiOYYdZ}y*DS)A@G3Cc~niOjLd
z%NU=9=2p(embh`osa?7KjONkEh`X2!hEfsRpHJN-GBGfgjF;4!=XFe?@JC4XO=ECd
zl&z|S>CNIG(Qrw{)M{R3XbWB3V>G;gyLL@=E(R;79-i#N5X+6$E0i8spy>4`x4-Pj
z`{tL$EnZ0hcet0ox^;d)4-D4UzWQ`JMMo}SHpE_-cI%B2Rc|AqWExuvq#S=C|9u1L
zB|5j4Az|92L%C-Izy1DR>XD+j&o?vPO}tv#%SdJ&)4TX5sz)nA8x7fF)b%8C^}Y;L
zf$|N!+wyW%0o6`6Yv%b@L2pek$Mm#9E77~NTHW4l*bHh9uT?J0G7?>v+}3t&7r$b?
zE?>`Ycx}FW-{bNW^;pe=`sdTJX(VTtWB~2uEpOu+a#rhi*hkCKxAA*-^|9&Z6P&&+
zCfgsU3^=B_GXUscd5fUb_c%R5`wDHY8at6i`Nc|byH^1u72soQ=nOCN#cS+f4ne2CyBx|%E3>Mo`q?IgSAK#ag2h;R=9
z1uu*zCOpTYQNGG*&Ms?cF$cHA3=%%LNP4PmZuoJZtwNr7`^DYMi;PqT^&gj?`)wsl6vp-*^@`obKt}5THdVy>S2zcUN=@F3Z%wbIGrWF
zlw!}Ak5$d_)-IW^m5tY&t2Wd0VPz)&Nj1TOtaGXMchdaNSV=eIsDd*u_3vrwOn_a8
zI{(}@k+SHw$aixGItzBMM`V*S+a3zZ?oK?B3Gb%wbT98dqUw*i9o0LQ)TKg=zgkmV
zX^1)hEjVL9ui1U$M%Y3-+l<2L=$PxYe=|FYyL9EPFyqGSu+pL?cbzFhcn_2fTW
zDNl$Yu#NG;|CDUTQ>G;EZWk|`Mtae&w7p~h-qpn9+RKF__wx&iox?n<+e3->dyO-b
zW9-m8ZaVDFR8EEON)oCKNBXKyk=x$M!+^1S)W+)xbL#M)GMfZi5}V#y)WK-fDBV;K
za!EsJV=~$fD0n{f`|mJ*UAdE}phIrqLvk8Ab-axAXD#&QuN^7(`W*+^_idi#=sBAA
zp2o!c=3}j{?H@%hpX6pmy9Jq#zdcA4XfPW)Ho&DTe1p4?)r{6+R^K?f8Y6IiVsa(YvfI~n
z>ed)3Q9JmtJ9;9gW38Wif%@vXz4tnDA}Y|3djk7R4uiqtsDXJ&^z=sir&i?(JED{?
z=E*p#=I;DcJTEk`D@M>t7OzOK7n|E1p#5Fos%z+1@WC;%8bKfHw|)Yc|iQoiM9
z2R90Dwqlueds}PbjR@%Cr5C&}CxD!Vg3!-rV>+~bqvwy3h}Zszyi3z#i~g-Y0=MCE
zCmJXx`(5_O3sbXA_LezrUa(bkKKZQMPr-b_8%hq;w?e!TSNNnUMJW>5;#yC>^EFTr2DM8o%-@hsG
zle(t*Fb^=K#(}rFFcY^5SvJz>1US%KkUbfyC`PLh`V!`41ED*QjM?f#&yb0_50x@z
zLp4toTf)g|c=L+>X8?)+{4QQsuAS}4@*D_1f7I~HnGgE?=%Q~qZ)I>FeXf#ih+Db}
zKvs@_Ob_zdGB0E>X^%&qR*IAhzs``9UM5oN{djsMvZO-o`nr?0G)MjJn4_aanr`bw
zQy?}$w**bgf_nGuwk8ge9gdMK>y0{Rk`&ZfZ9ac^
z-#v7V`BQwyRah4%1Cd%sMPHBdgZh=TxrwO1m`Mg&9o2IlwDCbY`s`yhsta60h(oi)
z>!KNR`1={k%d6PugL!#V^_;QspjwE*Y@)F58`GN5v$ME7!xk
z<^Hy6!E@HTLe*Qnpi}mazGft*+yhgVT4A0!jl%17wS_QSZG|+C)wMlYu@FdI)L_;P
zw0q5=+wkFbN|ay3D2JcMkG_PH#?O%w7&pW!GxyNXQ>evBU>@U;WgA@ybAHskno>7n
ziT2btQ$IO63l1x)H^!|P+OjxpsJYYbWi>@@m{
z+f!vh?;VNPZ2=_J?-u<^AHn9gUbHt`705-Zr>me*mb7ylx^(@DD>V(rt%a7>5fE=<
z%q;MkO=FRbi4OZG#&R&G;Np0VV6uJ}3K{ejH&Ctl>%h^I17Lvzd49Q^k0JYIZdSG+
z?2Ni`lDEytw2&i(FWuzcrl+|!plO-Y$U8XyMemBz>G!Y)t^E#N5CcHH8Gfb|;-I!Y
zs0_Hhtdrxk6&DYNbI_mxGaHoZ4ExB&Z2hT(_Z-dm)%wsCA*38RW`9Udaa_{Sm$J**w
zvd0=O=oytiG~lVIUaxK8>7%+fSn&MCL=Oduy*!=CkMz@Q!E#%1H-=wKxy
z4O~Z^dL2|C_cXI4@5>*qi03UGQ9SoczJ5He8t5)r(M;$jgVyvOwn$TXbA4SxN75S9
z#3`%*rwT=|#LuRN>ipEiR8+!OlA}j!`xc}Er|Y>_|AisE#v6JY$$Nt&IPU8G;uhm8
z$nHu~6S4xNQRMcS<7LZ}d!2cySpgv`jjZruYyEJ~#}f&}mn_O5p9(Lc)hVo;<0
zX2T@~7%_`$OzbcbmfLQk-<|#7JF53`j4nv*BvRRRPOl0^He?wuD0Xv}q9!Y@gs<;y
z;Nrwxt3S7oQ0MuXWSDvVDA!2R&}q1^7BWUhp~3JV2n51m=FHSw@kSi##W}SZE%^P}2}unJOTRLZ$Gj-S
z+hL3P*4-jL>mkj;=)teo%q(hn4KZN6eP#CfgCDL7OAi$-_n0s=1AiueFuBHg&_AP*
zN5OP)c9^qO#G{8CZ{MA-G|O;#Y(CPwokJEKrtKHF;q?YW
zV<}hx^ufKiIp_3=H;;F&FYZ{7uUff&T;Cxm2Np2+iShVy#)`ZD;1U`Trf8~IaV%$h
z$i+)C$w{Wj%eAbw(H)+cQa4U&=%W}Xyen45fN@Z`b8Y8k85HL?B$mC-<)f^7d^
zGL2nt!zXw5;9Eo|q7Y`tMY(4Wan7<2;E8G@9TF!=--r!J;uH#byf`|xcaZ(TQHZ~b
zo{A&ha3POb`VczjW0Ys#kIuARwH8%Tf@e3CFL8T=`g92d{j1UBXcV}5)ZVKZ!qi;}g?
z$N?`Km4XXmh~IjmfX>*b=1#3Hq81l+&*zfCt+-R2yBy6~93Pw0M6XY*=KJ%70P#x>1An$~xt%
z9=rmC+@CF`Is9o#eI&viY^GqZZb>v&d+XPlRZvu(Ds%GavmOP@h3rh(20=L8Qa!XB
zXxDc0HdF)ak23=-Gk$HduwD3;_a_lv3lLbQq~8+DH&B)a34QojRB%IB7S&TAaAeZ6
z&(-&A+fozL+NPV2Xq$Tjh$D}rJxJviPt6{#pM86HV38L@Lv~<$C7rNw{8Q}ci@)VI
z!A}l_B@zt8ic^|GkMxRp>z&(CYuxnA%!MB?{qV0Tj6c+3g6&^Z7;R~Vsz+J(8Zn<7FymoSvS(CHn|pC4AQ~%Uu}2k)!`93}f!^+J-gTa@rFbX7>$)
z?cE51dUZ)U6k~YfhuN-j4i3N(xs;IMajVN`M3TfJW6M9uRblk#R4*(ce-
z#zt9O_xw%sX&bJKvDR64v1+eFA=hQA(3;n+Xs}EjPB0#b_S4lid8BShq$sB8k`F
z81Q83P-(Oidt?$vi1`|Vd*krkPqT?9)okw{=V!rCLN|DSVAfvfzpzA9A6Wl(A!x#gDn2E2RCf0_PVUX*X>CLK5m$lz9AAe5!Fk
zy@m=7HFr`z9Gq7l9d|!WHoRtH(7a4aB5%LJ0-;2XA0|G6U!oRQl;U%ZB$=YPTHhG7
z{UIKJi^r^W`&tax`w=|OXOFGV~im18kxe8+UOo~d|AEXjd6I<
zU%@Jia9Howg)sbNDJ_5in26aL&vxWn{|3t(ree5qLx9<)l
znJz?`+xRkWGRYEh$L>D&O`3m1MlfQfe9ZS=h7-Mi5Fg6M@z!G8>pNg<>&Enh2hW!L
zFDOZQ!wfpaE_~^wFkF&-gD=E84$@}=lj2(oTXlZD9aI6(K-c;>tBrS7e}zRgu37hK
zeB|@4UuQU~Hj+fyAD+Qf(YKQrP~c+rViq#Wx%^QMN|E`#ev;8Ej~K(8ai_KR*O)G3
zJ=JscS{@#@cEA1Yt~0gp!ZfA(s<8)llo5kGTW`mc&3LWZ^A{I+Z1T+`adcM7wHQIc
zhB%onVX%AlP(b5yAS)uEGBTni_Gn*4m9$+Db6PXt2PA+=@{}nFz
zLF$4?xMoHaGKk`BS@pB(R(E`S2Ih+eR57{vi0TDiC9ObXV%-$y+ntA+4EGApmar-$
zvH3pX+)w^K+?&+ds@cd_oLFwMp@I*BnJm2(f21rf0jv&5$&L5E^v6P>ZJ+uDeO1_87S?uj6
zmZq3H#dAR*m-r`IvyQ#x;_s*Dk0yA|3M?j>#C2%JQa|wEtNJkgeZVoQy
z2*Mu7QN{_n?EBQYU~|mUCF77;SQ)-EUY$JCpDTe#uOojERPtB!x*zSEX5`7>f~Th^
zM{lu{_)<7TUA!>AiF$bX_B__)d4l@-G+E%JhW9X`xCQNk%E+%$RuVIU017n`cgc*i
zj~HcGNSe?a43t_8)!S^^?{@8h`YerbM)49yp}OQOAzC2d}tE$d_=|qiDYZRMR)JQ
zpFgbgYikY;!*M8Je@b^<2tvWdVjcvT7zlT
zT}LqNou^+%M@K&m`m(ox4vgSgKWppiKHW}M6u==a39BL6tB+UX#aVXVC^4wN{Ou`A
zz`T-poLF%R9mEOh`q)Ng<})OL4x?$3%x1j{TK&}f%Y-$kX%w*XVH{uYC&!uGN_(PFQN|?iB8;raL5^Gsm3{
zeGn}ObAwAZ{U&ZK{h;f|Nj$KBsVQ-z=WP_JSi8CgMW+e0)sgTcu?wA3D;{1+(zy@y
z0Of;TD-N+_kk)N}azbEbU`tT8Q^ek<4_{hyUrT6dF13)b|AhzQW>EC3tpCyKWL(51
zOsSlVjc^GO!enfapj7+ZLjSHCuVOb_NVdb3k+GXw6#XJ%LE_kR2|5ouh{ZR(eW@r7
zIRvS8&`9KHihy80Cc*U^Ym$BYCmQ<(V+=xds75nitD;UUe4
z$Ae_eK@VF_BK!RV63J^q))dsNGF!J13l8OF@ppA_e5ldSwDKA%eEi%Ni*SQ?Or#!%
zvEfa^-Nzka_{tGwjI;X6JAo%&xM*UOrgNGU0e_YJmeq?)YLDD42_p8^S6J!a19&Sr
zZ`bj@nTtf+s6VLovv;B)bV(K
z&s{Vh$&fb%vs%k7IvC=QG|dPN)=mOXCM+u42`_(Jd`Q=8$Ic!`FqVTnwrHVcBiGF4Qs2^Mo6!7jz_F}!2
zu#aOXo6b^;^L>(NHl_OUq)dNoh`aAP)RR~L4V~2?)Oz1GwRcl#6|of%*O{V``S|7M7^*3Fv>mVX$ihtRLM#=%fy>r
zvPG=!XcSycgpDYvE~>X2e;$=VnlOCqh?-HlGYa7De>>6
z>Qgb)tEXt%y?GbSTz$nSAFKuHg~8~mTt>|i7&Li$cf@7uhpyeGZ+a>c|G$eHjMV;CmyHaillR
z-$Dn{cGPI%uBC6bgEP;YIglnKo$UL6-5#CFTDaW4Z`0tn!7woU4a;tJW%HOrk>#o~
z>wNY5?U%~*()8<>biXW^eGA~L6Zo(<9#SfS^sNKuwU3PTF$bLsk9^n825Zl^e(msX
zOl8VrDvtHkGnk(hxN+n2w149V>%U)5Hx*vigux#fr+FuXLd4K$EaJ!tsXn%Vhx5Q^*PMsgT4-Tg9B165jK~UXY1R8CP-n_b7vg2nsHMhrLpKT6u74EOgL_=BM~G2c6dfeMc=0F)m5nZadG9H%wuzw
z{9BQg8`bNnn+zSL8apj+6QMIeMSmWJ8;gRQ`D1wTf-VE=Rw||7(+j%2(+Cc2rP(Wt
zjGIiFfEM1kK&-wzW__wty2DW8;rm
z4UOFX;U(vHKSO>Ki5VId)Wk!AYqf~T+g)VjlL=gMyV%#hqI2ibvdzaGqa5DH`1{)1X~>b7HA_n=>HVw$jeAn6u>en$|F^mtkUL#LdvycxLC@svlZw
zhdh?~&AlFv%V&g^sdq+vr2Uf8cQSVxi#Y9{gNlw+S;eg3K2mLquf(E*G93lZwOpXa
zNak0KXk`hS+z;O$#yvo5VrZh0Vi1r<6_Ca|^p`3Ky0f$8CrSSqwD4gMTv^T!E(WcUToAM@so(uf*|)$)S%qO;yBdxxt?E3`im
zDJzppG#=@H{@PK5y1Qmz$DkdR2ZAPoezU|QY5FYGKynjJSQb}gwdOc0t6-1{6KaRY
zKCalco>-7b$`>?(nhTZ$u0<3Vv~TpY*yBWU92zejB^9a2PW0#67K(j~(5iGXR`UnZ
zI6^|Rz3rWxZphrImUk8QM}4?BE~nh=@C5}aZyCgc&@jRRBz^ {
+ app
+ .use(Router) // 使用路由
+ .use(ElementPlus) // 使用ele-plus组件
+ .use(createPinia()) // 使用pinia
+
+ // 自动引入图标
+ Object.keys(ElementPlusIconsVue).forEach((key) => {
+ app.component(key, ElementPlusIconsVue[key]);
+ });
+
+ //待路由初始化完毕后,挂载app
+ await Router.isReady()
+}
+
+//挂载app
+setupAll().then(() => {
+ app.mount('#app')
+})
\ No newline at end of file
diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts
new file mode 100644
index 0000000..1db417b
--- /dev/null
+++ b/frontend/src/router/index.ts
@@ -0,0 +1,20 @@
+import { createRouter, createWebHashHistory } from 'vue-router'
+import routerMap from './routerMap'
+
+const Router = createRouter({
+ history: createWebHashHistory(),
+ routes: routerMap,
+})
+
+
+Router.beforeEach((to, from, next) => {
+ next()
+})
+
+// 路由加载后
+Router.afterEach(() => {
+
+})
+
+
+export default Router
diff --git a/frontend/src/router/routerMap.ts b/frontend/src/router/routerMap.ts
new file mode 100644
index 0000000..45da679
--- /dev/null
+++ b/frontend/src/router/routerMap.ts
@@ -0,0 +1,15 @@
+import Login from '@/views/Login.vue'
+
+/**
+ * 基础路由
+ * @type { *[] }
+ */
+const constantRouterMap = [
+ {
+ path: '/',
+ name: 'login',
+ component: Login
+ },
+]
+
+export default constantRouterMap
\ No newline at end of file
diff --git a/frontend/src/utils/ipcRenderer.js b/frontend/src/utils/ipcRenderer.js
new file mode 100644
index 0000000..b229b36
--- /dev/null
+++ b/frontend/src/utils/ipcRenderer.js
@@ -0,0 +1,33 @@
+const Renderer = (window.require && window.require('electron')) || window.electron || {};
+
+/**
+ * ipc
+ * 官方api说明:https://www.electronjs.org/zh/docs/latest/api/ipc-renderer
+ *
+ * 属性/方法
+ * ipc.invoke(channel, param) - 发送异步消息(invoke/handle 模型)
+ * ipc.sendSync(channel, param) - 发送同步消息(send/on 模型)
+ * ipc.on(channel, listener) - 监听 channel, 当新消息到达,调用 listener
+ * ipc.once(channel, listener) - 添加一次性 listener 函数
+ * ipc.removeListener(channel, listener) - 为特定的 channel 从监听队列中删除特定的 listener 监听者
+ * ipc.removeAllListeners(channel) - 移除所有的监听器,当指定 channel 时只移除与其相关的所有监听器
+ * ipc.send(channel, ...args) - 通过channel向主进程发送异步消息
+ * ipc.postMessage(channel, message, [transfer]) - 发送消息到主进程
+ * ipc.sendTo(webContentsId, channel, ...args) - 通过 channel 发送消息到带有 webContentsId 的窗口
+ * ipc.sendToHost(channel, ...args) - 消息会被发送到 host 页面上的 元素
+ */
+
+/**
+ * ipc
+ */
+const ipc = Renderer.ipcRenderer || undefined;
+
+/**
+ * 是否为EE环境
+ */
+const isEE = ipc ? true : false;
+
+export {
+ Renderer, ipc, isEE
+};
+
diff --git a/frontend/src/views/Child.vue b/frontend/src/views/Child.vue
new file mode 100644
index 0000000..f76de52
--- /dev/null
+++ b/frontend/src/views/Child.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/frontend/src/views/Login.vue b/frontend/src/views/Login.vue
new file mode 100644
index 0000000..d164cab
--- /dev/null
+++ b/frontend/src/views/Login.vue
@@ -0,0 +1,36 @@
+
+
+
+
123
+
+
+
+
+
+
diff --git a/frontend/tailwind.config.js b/frontend/tailwind.config.js
new file mode 100644
index 0000000..6ec11f7
--- /dev/null
+++ b/frontend/tailwind.config.js
@@ -0,0 +1,9 @@
+/** @type {import('tailwindcss').Config} */
+export default {
+ content: ["index.html", "./src/**/*.{html,js,ts,jsx,tsx,vue}"],
+ theme: {
+ extend: {},
+ },
+ plugins: [],
+}
+
diff --git a/frontend/tsconfig.app.json b/frontend/tsconfig.app.json
new file mode 100644
index 0000000..db4bf17
--- /dev/null
+++ b/frontend/tsconfig.app.json
@@ -0,0 +1,13 @@
+{
+ "extends": "@vue/tsconfig/tsconfig.dom.json",
+ "include": ["env.d.ts", "src/**/*", "src/**/*.vue"],
+ "exclude": ["src/**/__tests__/*"],
+ "compilerOptions": {
+ "composite": true,
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["./src/*"]
+ }
+ }
+}
diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json
new file mode 100644
index 0000000..06df06c
--- /dev/null
+++ b/frontend/tsconfig.json
@@ -0,0 +1,16 @@
+{
+ "files": [],
+ "references": [
+ {
+ "path": "./tsconfig.node.json"
+ },
+ {
+ "path": "./tsconfig.app.json"
+ }
+ ],
+ "compilerOptions": {
+ "types": [
+ "node"
+ ]
+ }
+}
diff --git a/frontend/tsconfig.node.json b/frontend/tsconfig.node.json
new file mode 100644
index 0000000..f094063
--- /dev/null
+++ b/frontend/tsconfig.node.json
@@ -0,0 +1,19 @@
+{
+ "extends": "@tsconfig/node20/tsconfig.json",
+ "include": [
+ "vite.config.*",
+ "vitest.config.*",
+ "cypress.config.*",
+ "nightwatch.conf.*",
+ "playwright.config.*"
+ ],
+ "compilerOptions": {
+ "composite": true,
+ "noEmit": true,
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
+
+ "module": "ESNext",
+ "moduleResolution": "Bundler",
+ "types": ["node"]
+ }
+}
diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts
new file mode 100644
index 0000000..53403c4
--- /dev/null
+++ b/frontend/vite.config.ts
@@ -0,0 +1,44 @@
+import { defineConfig } from 'vite'
+import vue from '@vitejs/plugin-vue'
+import path from 'path'
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [
+ vue(),
+ ],
+ // 基础配置
+ base: './',
+ publicDir: 'public',
+ resolve: {
+ alias: {
+ '@': path.resolve(__dirname, 'src')
+ }
+ },
+ css: {
+ preprocessorOptions: {
+ less: {
+ modifyVars: {
+ '@border-color-base': '#dce3e8',
+ },
+ javascriptEnabled: true,
+ },
+ },
+ },
+ build: {
+ outDir: 'dist',
+ assetsDir: 'assets',
+ assetsInlineLimit: 4096,
+ cssCodeSplit: true,
+ brotliSize: false,
+ sourcemap: false,
+ minify: 'terser',
+ terserOptions: {
+ compress: {
+ // 生产环境去除console及debug
+ drop_console: false,
+ drop_debugger: true,
+ },
+ },
+ },
+})