From d2a3baa9a26960414a2115867598fc2b0e73ede7 Mon Sep 17 00:00:00 2001 From: Anselm Eickhoff Date: Tue, 3 Sep 2024 11:27:17 +0100 Subject: [PATCH] perf: Lazy loading for links in topic sections (#127) --- bun.lockb | Bin 393376 -> 396016 bytes package.json | 2 +- .../routes/topics/detail/TopicDetailRoute.tsx | 16 ++--- .../routes/topics/detail/partials/section.tsx | 57 +++++++++++++++++- web/hooks/use-topic-data.ts | 26 ++------ web/lib/schema/index.ts | 2 + web/package.json | 4 +- 7 files changed, 74 insertions(+), 33 deletions(-) diff --git a/bun.lockb b/bun.lockb index 1491662a0a227c246333f00c766be0263b43d2a5..202b0b478ae388c5062a80e3ef7971ed4cdccb87 100755 GIT binary patch delta 84771 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 Z50R$P7p zMQUO7;uP`Qs&*&5O4Mbf#i<8oZzM83Mb+cQPfx)fEux=7t*l}x?gC>mr_+)RTR#5! zVSKAMDCMUPP=k}ZCa=t^_|=CU0>eNlhK57sQ2a^>DqIc*7WFDx?bEwZN17U8D_b5X zT7kj1O3a!BQ)3jq6O*4o1J(8};?^^>tFgQI{0!Q}iJH$L%P+S!)r?48Ft+yGH49bc zed!WIMC5buy%Wd4XRIOaKR5fccPuZ=wT!W1XPA=B9Xh4Yt4(@sM{j5pekJy)+74A2 z*^|k()Q2JOXL0HUWIKvSFQ8-&;rZ$Ps59z$^%IdYtz^7YzjM(`K`Z|hNub}UJQQ@_@P@d&p zS{QQxDLd!+-of2woIm;(#bYOi-We=1Z&F;`P8ZS~yK%iUwVS;>#Pyu+g5GN`R&Q2Z zjGe^Q*BIt+3v2EA+}XIQTkcAiz(@Z_LtKk!p8xK{z_8sRld!KfBM0sr27DwPKIk{?hPj>G(=0rf)m$Zz$Wa+BcO2joC;ZTvij>;cd;qulnVFQDh9JP$r?f}sx_Co z9DQS^E^NJVr1;7j&5%taG}#~Y^TQhNAEQRC9}Ep)LmK1emt!kD12Rkng(DyQS;dP8 z3>?1zgE|qq7zc=T#Jok1hlvxoa}&^wUHtRy1)V0fUfD>K?2oQlF3j&Rb1cV% zN|*fhV5F9)_YU%!icUz}dSNom489|6-{*?1e0v%MaW;h_zl(a4VAe@s$O4A#ivsP| z{jo36nz2Cq#hO-vffM@iuNOnb=4LUfDnWFTgCf^^)O16XLgMxid`{q-lFs$m#1*dE zE={%JSJ4#=CWjy~>OBT_n8@@IQPK1F<^Z%h-v@JTx2lK@7%^tJTKaE8U;%BW;^Bg! zg&6aJ%>V;?uzUB;83Uai7O3{b8GtY5kX?|V3k@`4R$*%@pZul%+fq&Df{#8B1iOR6 z0OL^FW-A}Icsx+2K4F+S<Yjg&`BIlr5smSJ?23 zm<;?m^G^|#O-k*$wqd=4Fy)G7rb+P+PFd&$FtX#%mMc?sPs59;t=0L|(I`V6T&z~_K%Zh3G?I_if@=>a$yPru<-NH?pGY9S7X}O&G!>{VP zz;SEnBm5P`-|{0f`1#tJ(Aw}6Orm;=rDL!*PkrlB9fL(SJH^9zRFta*&)FsF*(rtG zj)R|*>$m*Jg|Jgfxh=qO<$_VAK&FF_s@C{mG9qMF$FL^Il(U{llS=U_o023)qom}i zrY*DwBYv4y_gH}e>d;Xq@{B)=ZjfP@?`NDBs13<0C#D}+%Buu?RGkaIwTq;DYfF`) zR#f(T7Sn9`Llr_~MWx~0oQ?8U{AbGTO|I{)JMRDHp@HU2UTLIs5u8PF5~orr?wE{T zq(UTPY#`F7MkIq1_)1FFG+Mt@Z6M00R{X%j6WRTzi?Du8~;f17^K! zwnoA`t>SF)Y@|(wt%mKXxv)nI%nS@IxuBG4Bu*Ar9PPMpBx;7G4oYN$wa+hhzr8(R zDO{5!5a1Zvq6*3!2oCnggnUyroULA=u~nvKBxhr=*i{N;-y*o#{BinH5Fa3FM#GXB#e^@w-nFIzd1m^P1Wa>}OFjZm(!h|ll?1KODN zI|kDmCmUqarJHhu2#@q?Es6U7|4PXuoo%D5DFuy^dg8y=ME5tht4*|n%*FM(x2c@z z&4~ZCAHM6rDYPkR8}k0R%PWQo9|y(R)Ff2Ya8UeA5usuT?u!fw)uzWX!|NVgJ+)Sd zx-_brCfo7ns0V2Fa*{j{D(*p)ZDGv?@jN7pb20M27sRTFt z`o1c-h1fxkP;lUgB5F#=k&;UyYF`J3zH=VXLZo*@ca3c!$~!8xOqxt5G1pPaVd~RL zG^HpcaJUqMx3InL-UGt3F*y!CTQ1r)vufoJOl(nP@*En(+-|t*f?Tx0H`iMS9 zxOh(K{@~z3_Wq|)a~I9*(NV7-j$0iREdNnso~^Gk?`GMZR?S+5i?Xhe-VYqy-^34{ zJn7w*A!*e5aYBqYGQ!2vNwD14a50*krJyODKcrk&%dLWc4tG#3$vI6daks zu`r}U*!k2$3#%M>=8RYS!o)Q<$Vw9~G9vv(ma3N@A3)2#VUMD3T3W!JtOd~Ns$BG> zb5ONTng{1y7g(#@MujI&`p~VZ>s0XivzNW{$71(P%hP)&Oc;}_DEYD`*Xv@Qx?;90#5GG;;$as(Zs}TBTiR()KT*Z z^?~E_9-_1dnR|*x9(b$f$02-@sYRUgP+ax-MW1a=zA;-^aCzwzN<|{>^CjXBW0zmi%q4PAxz0i3;D6M zfkU+w$>sNupK{nWKZB94&&ScAaJ@@!->$4B%pGsjU^?dXW{@qA4xp=`H(#n^S};`9 zL5~OSfFSP8K5dF#d@f%n9REr|=Ro1<_uN?bezRuA^|Mlv^y|NH2W#^gFD6*=dlje~ zSZSbSjrt$E$>iTeqax~tyi*k%Y2ExyTV)s5&2ehRgwtEqSru=c;d2hZi5*4Y{W49e zeu6{Uj<}?TcFPfhqi2}!a__m7z8(x5_TQT?spo!Ezh19CX8&WeXvP2IV*2rcW!Z2o zoN;rg|8Cftxg)L3)Mp%NChhnjVT!Sxh@`u28!lFrNtlpKXNQa9n6I=00`-JLo!urj z5*7?k)3f0sV@2yk#Vs}mdBUuxcb%NjlD0Cz5q~tC)285va;PQk`J|Qni{T-~NE7Hi zlH6?guT@U)5^bC7WQX&Z|9z*Ma2%L&ugmV1jgbqCO~1-E%MP=Su|#Jg|H5{%Iw?<9 zE0;apQKbL;SF51z>L%&I|LOFX+z4}*E|r4ssfVKW;iI&DM@p^Knq#>DHpX+?ioB{2 zG;*qGdi7EGO>iMQ^?$Lp$?s3mytFm;kRI{BTK(VZuDe9iF`WE_ z@&B1W{<~=G|H>lz82Pc=$gcQb-N$xt$~hsacgo4!E#;8pKOK2;Hn8d3WG9<{Ga|F{ zO6Bl=)!rvGt`Sa^@Qh7+LXc7fuRT?8NgAOiU1Q4pU^2nf zP+_dL%ba&FtWe!AljET+PW5^0(p?O#jH5y4abiYgr55&6e^*xgO>M@BoK>)pYT3>r zxC(YJVFHm;Okl^}(&5)QVn<=JWX(7R7GSVs|wq%G7*Bg07^dKW7;Ao1v<`P9};4$o5FmN+h zro+j$gGO}B3kE-i(!K`ANt#vGz0Y}Rd{pcvN23`znZfIhl*e@T4naOe?SH%Ch%$VY z(#POENvx`Y>Pt)#higC`JcRnfG;)$?ISl!rmv5~&cl-kqSZl#%^A473+LG_pvSCnb z6(|`%iJg*}ZbTOy4 zGMybfJ{;NF3vTk|B;CGxYmDm46fUOJF=7R+pCv|I8H6-PjL29Q>J*I88e7_Hc*{d| zUH{aY#B;bnof7W(Wt>A;OZ6N|`-n(|7*VG`WYmrkab1x95+lY#mZbwq&^*OIE}j?K zKO)j9t5?jFpTRgZMqDG~I55(Ajz%kK&zHD?mp5ofR_Z=UJf+Ck7%>)3Vp<*}N=G2w z5hGd#E6%|uP%;ZjULNt6@z9?6<*g-eg2H3W5hGKDZyI(BuRu$gDZ7)dxU5Zl2v+J? zuFufsh&)~1w-{cbMsuqm-QFh0Nn%JnC?zeeoA|*DG5$AXzn&o+1|!uQEt_PVDLV5s z)nTTnLu2SoGI`7t*U*b5znLO93dX54Q`^?Qtu^kM@0~n+XQvo!gK^PxrZ~xx180h+ zsK{cD)jn1*u|Q<2hEMCfQ#p%sYVeE|IqRc$f6_T7b?JRP`?T(SV2-yb5n}m=fr57d zqwKw!G|hah2+s~d3BYstaj~K^%39Wg!vh>ogBy>1khybxje|4K*;o-r>2JV+P%Uct zA2FBX>vz9m04J@bUXtP|teGBRraOS)RamxHGUSxCU~Bsy`Lz2o8Y;UO`|Nc7HRWt^NY{D>%_VKAx&4zuyv7$Z31Ds zo=G~w>Lw2`=(!kW%X+Vt=g4aKqyt>aF97c`YaQoo`5}kt@nRA23(lp!EY?1=@@Q$h z`LU;GZIH5x8{}_CcAa`6(~yz11Sp6<_>Ad**!qi7JLucD+Ac29=G1#g9qFZ|TD3al zS0^os;mQbgvY}{T>ZKwi6o*9Cm%MGOb1-&as`X|Pi`wCh&*{sBPjd*-EaGfR z=6-zBr1T%%w`}%({{N6ZrA1P4w(3G0pXd4dCu+hERJ0L^+iXfP#5|%-3&aa4uLDUZ zcyYW19?@pULDq>i>X2=EfN1DEoEx5L3D13Ch6HCwxtrFujDohi>2&FP4?A! z4b#tWTaW<>&r&f|v?aze8PgDhvKs5Z-niEEMnl!()M>u@M$xSmYQbMfcRwRm1Rpw@F;V3a*V> z7a5cWZQZO5w3#d4y~f9R8O`(avM6u>6fW&2?=@TcuKSiXpdbL}x_5E2XpVq3X!>&P zeapey>PMB@HR38b7?+{!bCh*M*@fMlF2Bh*SpB$-MrpQ1ENcVnx8EXeFx8?#XHmE< zX2Hf=MeDZcYTGbZ6%70Nb9P+S787sE%JtqR?m&idnRqc7D-H%^%DjU`&2~7yP5CAG ztJ_6XJEgrQ%rTdG5>kJM*86t%CkI7LU6CHj>5sdc?+}*uN_)2~@ft_bOlexXN3VUT zTMnv>5jQ(3*~HrRN-^86m%)n`^txTsWvtvYr+R||9v2`(Kd;xLo4@0yFy@ni+3R?* ztpl2^6;BYZ-;UZP%7%d(k!na7+M|AA!X?44H7-3g75T$4e%|lawmEASY;D*zIQ2=j z4eGP?o_j>oaP*vvzO(`3V$>o++we&^bVSEW-oN&WmL1W-b@plV-nlwe7CstxGr-!q z#{0yIj@Zwo@PP-6G1Z1HCcR0PRuILNqEBPL9AgI6ISf&J=88C|%Rb@L35_1GPt@py z{g`gygfMyd0nv@I>^33pkuH@?+7mJ^6w^B^VUp+jvAy0kG8}JrP}J%HpY3r_3r;e= zoHaVMNQV*7lshzNs)wXOQQ&YuTQ2XYIrq-ku%_VP3n6Iqcu+W_d}?j@Q1NT_NucmO z7f@^>a+BVwpxG#q6(u$d9Q?QY!Sw7vZs#yKdvDW1uo(Nkn-8_$cfv}+z}^9ixUEB3 zKFMj*ZAfsdkuw-BYR|E?&m_1wCKtkslam!U?el5cyXrwHSCs4k$HH4e4}Tmzc%8z) zMWZpucXx#kB7MUYe(lu_>FC3vc{em5<;G_f(cKUhq0g6r(US6f+5CvO0S>*VMV9VL zfTh_M&22~6P4K*2>N4IE#AK-kuhO@)!65e*$XM}xTV$GpAw(?!pgl*X#@Jq z**VKbm+~y9T3J1?Di|Yt`dLGR^~GKy*FcQpq~pz0=Zxq!P>Hf!KcfxQO6T@WyR*}ICCc$&5wVM2v0I5r z+WJ5b(9MA)M(VSz0c6fOK@G8ptvbRr;4=D5M~5(Ri-xvbWc zkb2pVY_Uqz&v?EwM)hX=_{2sZtU;eq8E5yp%TM)va-N^YR#ytFB@Sn`QT3`(h0=Ta zwp2fdubt&+eZUam`e2+D>v4qaW4%vB%OT3ImQN6p7UG-U{rqUa==9ua>(Dc>Du&j?WOUegZa>~-fYP)mVG1Z=!bEk%HUcQ7{X-k^)8(YWJ&Ty=;imscj z+Z;M49^^_&D*VWDe98>Z7;RP|8 z+=h$VOB`kPr}3REYx~(Qig<8vi=L53Q7OySId~v}NZQeZt!jNqdpKCHfOnqt z(?jtw1a>#iQT3xOd4PlO4?=mKss$Ob)8Lt5#kvja)*dr)huTJbU=Uwwm164+7sa*T z5>0K9Nspi{KV8;_P|hw+<33hwmR-|>=a8vm)Z@~iln<#>o_cksNIq!s{9S1vXYquo zR_|85QgP>Z%=Bk3PZ_SX4@&0qpPX6H?37RKqppYl+%26T@+$qJ4hV_*R%lC`0v42O=s=Tg$|(5n#|hwQJcwQQLS8D|g1N#>scgHoD>RHeD`;I3|34?4C|(bHD#F`?#10E9K*LQF0Aa{QuG&iO~(91~x4n3dA|hSy; za%8C~ax}Rqdi{YY|NASD#qE~1ov7)!$Npk&&(3r~1|>cQ zImcjaYCZ~MU*B4_x+V6HQXZI|-V&?+MEl-C0H@APPxBp|_##a>1!$90%I{hmZi_D{ zYqGyBnvO>+9B*smp!3^icHu+&^WYI5=;h&(`)yHcG&l-@gS(zVwI4@JN&TKjz4|kx zVz)&UI80|+i`X&X9NR)0r;q2(^O;%u6F=vw$5NGUi{s!7Y5-Z>Tg+?QV(^?=U3tLE zqY|to?Q}}_lJ%#T%(-m4T8lc#_qi=Bls*z1T=7M_Gx?8=UBMVm-ziMLErP*eT6tS^ z9D~qY>XY)T?IUlC)8zbkSEL$?P2wN-G`(7u{Fo|cX0NI6a)b7#bBN(%@t98iVvO3R zS@*^Bv1rYr`^Bp6=ksTaajMcBa-q?Y?#h2bOz5EV}GboLw z-HFO%iCu)Zqd4&d;(L%maRH_M#d2#J7AcO;tj|PFF68jX+(>EE>uLWcU!C@tjORfq zh#Z%vqGdGtF900me12#}5y#xA_)rPoZpIl0j|nG5D_*9CPdCO#DQm(BYguSPW}1{mms@m8iQZwwXY7J z2oFJ9q&)VgaK@+{=R;YCpg%tYh2uG?#h}cH8@}^F1+PH zVF%qDdAZl>I)~GM5`c9VLoei+C_Nb+)Ds+hY|?XE!=)=snfMJk>~@rmekQt+Vb-PHb2zr*7!%5ace9GU-1+0czwg(T=?@Wa`l-smObGu~fZ zb!}T(kv)LH^Yxur2ace$@3sEzxA~u9b|tGX1qY|?AbkA~%F>h99*Ue$vBR=_dRgd$ zvX<#+I%)};j#`p=qOG5$YEQHaiIvlpT$Vi#HG!SVOd8q!uPX;2Q2Q>A}ga1ir3R)xi%R&wn)oy9RBn z<0KR{4~D!fv`qABQ-<-!4Z6)x)40!~=}gF*`C0Ut2_2Sv7E5O0!F%pzhv?EJ+n z;$}mKY>H70`JP7|3HHkWe!6Z=_>Qk4YApb#E+MEYI60LbUNj=p1-q*9{0R1H42lyd zCxadv>l|^aVePBViYPrtasI}L3Ee$Z5j(b_l8H#cm}3q^aY}7o=SKa%>v>kt`v=1{ z!Frn&k$x_UoItuAy;OGYcMYKRtFtLlr)KAeRxY9@dP1R}H_r;rKcKp5l7oyfTYX>~iX zYA0G%-_EEmSC#u$oW6Be@jR={RYoo3(2K#0^F$iU`yEm%e zq~V5IM@M>6#^^v-hF~Wj=t(RrqU=w=k3XINf}dGr@)kj z@a7SvmjMSgd!9af$FS2MYFjyKr4r9~tKZ9I<5gnF0-U5SN+mov_8?2|rl4evuO68n zNUgPDYrlu}E>!ufov^9FtLCZdN0NR^qxGGk#OpqDs{Y9b_-ux?0@K(uV%u)^GB_Fj zJZ!bXu1v25XRQtXl19X08VJgSXY+J?bHl!)?oF}0(K!%9_`z5#>v(4LPdgSId7@L$ zY3^x7`Bi8UdPQrI+BmJ9&U$<0&`M0Qq@XxPnLZ9Ri%GB6JX^P34U%n$;iq4-{xzR65oynOWjP$+hqJKhRz^{WoZp>ggLh$!$|`gf%yM`q)>|4yP7->PQlUxu9OuYI zNH%-e3bdk2W)a5;MV8fx32nBdJj3WJiIOWdYp8nKmQSo73Iwl1YuA~zA@t|LA?eN^ zyY^9aZhV2VuR*tm=^xC%tH60Ti#EMkstoP(;DX8BI)t=gkl^qM`pOY6=B~m^Cb|U@ zb+*Z%&#*QPw#iTI9|QF8{kJzU5)BNQAEyHJI`LoTf$`IwhyWrGP;TQ z4a#&xsi7P3V1JyOQQaUOcdAxl-s_GJtPW=@GKEbXx>o0OOYZ9|wVjxHC^yuSY=rK| z&u!nbh!vYSFXYgcffZM_KF-y%uq)Kj4@(lM^J$Y(sf_&ozGS{XkO$FNIF{jMJuWHk zrd!SHJ$>2@vh;_^>&0Mxai9MEfl0o`&+?1AQQgZ_n;)^_f_p0LM2B$e0k2he3C@=G z2++B#KdBHJ5?I#}rp0=wZrIwoi-0YPUtkZ2;Fj9*E-Kx+oy&$o1fNmEQc<8}Me=v5 z`FYgHhN) z-2)`V5xPTKBJ@QlPh^#XuO53is;n6DcsoW96=Zz-0mfzY`qzTl4TAkeqGKe@c;7m8 zqNT{jJ~Bq(&R1@zOj6;%v%RguZr|&+#X5OYI9Ri zM^9~tiag~CUy3Nhr&RhOPRg^^ub$%CUL4I#)aNFrM#pX!&a;<~URarL2_6|0-iK#? z-%d)?Q6DXm_{d`k@;LjwUDUePu#4_dsvKX=adJ|ciAh4;FJ|vHv1$GOPjxNPtWBQc z);=70?e-KI_hVT*;VFFfqnQspMUDNKtiD3FCuHlBRq}zAI$0$@y(Aop$X#=S|EimR z*%9BF9pn~L9r3D{!%I$LQ>lj_Kl*lI7t3-i!aR~q@@1pyA+aI9`1#;>4s?=lQ{pM} zM*)VMT5SRn@%#|t3-uAQqwqMaDBAawIf>`Iju+()BT}&aIS+h%1|QC%H-0W8dL728 zsQz`UljF395=md}kh<@Nq_;TB=V&4%we+c!~ymFOS<+8i$RULzZ z_!$rm8;Ev13elaw!2`<)O}iF&{k{a>{Nk(081t}aue_&Cn_~rD^#B7OaYGHy zb9hROKhF!If!-46`IeP+-Hb~#t+MhCxiw$C2> zgHHLGTGY$#Ikn2^kPBMZxTHmQ;9K#>oluHr!V3o8{((h$M}&9p-Ok%@D8lEM9*$rd-N*Ow`a#z0|pf7)m7X)VV4tM3S{S=MoJLN&ngAQ z_EU)v&ulx_LNf8*~-MKdiC$tu4kJb;oW+P!e^B> z8ylTdil-K{t|~qoZ(LQ{mK9Shc71XL7Kv!rw@9nry~4bG^adnk_=?my>^wy&i=CIK zo5SudwJRdt-c#JDl&hFh06L)N0QG8PKu)`*X7bpHQto!HskCN@n>UqQS}tUy7AJGq zWlusvu@Y&d>MHlf>$&XSUr86D8Q0JYOoO$9{Gah|~`HBCrF)PoEPI8X_wIhA6%)0LT+ zl@%0}nVOl{WMw60mP4hDT9{}ySZ309-)k+1eZJoJdVhSszN>TjaIgEh*R$rm_BtCp z=co0p9$(bzq43btSKe56`l$`&$C`Ez6BlzH_~4!W%Wn?6xT96uyJNrK+kajoqprc% zwzU)5M#jO<+r{FLM}1Q}CpWl&p+&!?@3> z^!*w$f%Tz#HBSJt+|j@Q-~eJC5_7t`^VRlS*^Zkh-q*-5f+08?8%7W?AJ`h`1){h4God#F z-U-CN{2>}6HQu7}dLTQ}2*`%jwJte2=Dh$H$LYMkYR<40s?^;;=1$7WO3q3$j0kY% zo1KxB4WIELs^&NyZLUg7PfXA7PBV;M;Os_DVp=M@+Yxc7Fh59_*Fa-ta#lv_yyQG% z;Pr;l1{tD(Y*rYM70*n}%9x*S7V2h__CMG3glIox}%s33lf*%7?->(a(?qLZy z{b|XWGm^U*Ms>wo+NvH;Pt3}mgN9}%&&^_+r?gWe*zQI(;c38zSVZ}2tc`wc@}h21 z)m;T*X7dx%bJ7yClV)bkP0CEnN;ZPqtNzaRW+rB%ooV-Q6b$1p_}TC5naSy_<~z+V z0y%Ei0a>0L4CLS6(J(Lv`7Z!DG56gfVUXTp*3snpJ7?1_d zPRyPeHY+*jDHOnpcXiU^;7#|=PRz>M1V6_mwX=$Q1ITe)r~Q+=x+}~|ojZdQuuS{2vr@fNF@AsdQ2GTR zC*mX!ODF#@kj>r=Yy~W|j<{OprA4YvHI7oXrU98NNuv|UZRaQCV{4Lt)c5yN`5Q#5 zRTc+7YuOLZ{LOl+<Bn)6&DHC1xkCN3+#?4ufX5AX)?dO+$^ptGF8){(kx@{0N!1}^yg zH5%sugTUi84g|9FFpVvMEZqQd6`${?y7d*1Yvo;yqXsMf8aUU=OF#}&lOc*1funbM zHT&7rxmi;)aTQkeV?+)jMNm_9Md-pO!o?HDk76OiP|K zH!;;PR>RNy_YYTkN=9~~7v-$>SG>mvHGJwefmL501vf{)%vja4N+2s59jAIe5J>*D z_E%5b#Q@c#f$(#F>W@+jX9f^O=2y>OR`#^8B9gqQc z!_RSjLi@L1bXehd+zmKk{eT>)-N;A&IFRH00Fd*Rt#KHTjqzr0_IvQf9{cnx{>hn~50Xb#OKyF>{8Tod6y8Cko~QS(Bkw?hm@6w>2&X zvO`Ik$*I{W=TY<=|MHXP;ELy*W_xGP&IwP+x;|44-Czhf1>|=E22)3FF4+Vid)6Pw zrF)CUMnI0hFBn(mKLMovDv;%D(R?M4@iXVCDV%d1#-D+sAaLnN0E2)b8l6B^{5|H3 z1%3qN5Wfth|4|^f%eg?@wep+Zqx^S+v!Z@LHmHl{jev}+#4xg)+wa5pa|Eg{a^H*F z_oA+Sv9iI{*J$v4s=}~*HG<87?ASGwPprPCe*ouN_!!6rp3hsP=4R+(wKyVyjUiND zwExpCavVKi0mVR$*u$C+TB>^JyUTQepCi>2$o$otN}eAaTpT$lfI~bL$f1b^vZaw4 zx$-!ax2{x+btRBPS-t(0n2N6lvd4KqHgJaKu|PK9^9NPF9?GAW|HvxU^BdvdDsBwq z2-E>$UFB!2R{Eqo*}{5`H=Fb zCC(1Zm^wMdNXp2VCr}X9NB%}23&_q2OG(bkHslXnHean%8^?T0<$E27^_f3= z){L-e-b`bz+}XyGhn2qIVe4FANZwL}vDl^?RLB2XuLk%yI0xh+IQz3isD6J7 z&SD!qqQ)a>W@73rRKFQK5PrN72%DaoIO7<~W&a`{RWthAMz#NK2eQ16H_7{uU;eCh z)&mX0^X6?)YeJ0~$U z)rY>=Q6cM~9&nD1Mk?ysqGs^5F<1m_AUe$7g0(jm`{TG?#<7A)Uermmb5 z7zQqk;rmtbeSqvu^@{r%oYh63^=wv>H_V$pJ;Ugs^G(g-`xC<$^@gf`J}xMF-Uny? z?6ldbkn@bJ2>t{oI0T5pOW*86?zs4&O?KD)k3Hq;6L6` z8PgJH;jH7${2rVmbsWe6{PsOn@j-Bo)N4RCXy-xIkmLnuJziz9BHTaq1g0j>OHPOX z5%{mmLqIkY!0Jsj8QsoK&dgb*{Zl?v74HHzL%t@5R09%$oRUWHv&SQKJ`a!$yjA1Q za;4u0&Ia~4tm?~0`FYpD@gW@S**+jgA_y5-pcfffLCYg*skwlhnh$~W|MHRIXMrqu z+sA4o5_H^*qpHDo06AqtfsC8{iK=JpCzyX$G%a}=j=To$3LG%Q@E{}Sa?_{k{+FDY znUNWmykN{RRlq~*lwJYO2BjTW*Te*13-G=gPe5nK_MA|9Pn660cy|d)O7%W^a+E4? zc4kJ}?CdO~%V(XW?f-$AKK7I5dDGhcf1RnXhXkr_|`P&ibr* zNM7|dD38N%H$!&Td&FPuL9;WHvvI!9+zZb3W`3oLdj;4OJS7V!d&JfKMr~@BzE%@Z zeXjo!oc%te@iicu_ngAK{4w9@0fd7~;VW=vsD9&706%AJF_8WE`;5ZNKsNN@vr1nE z_{@6Q*Z&)y`VPhA1c*d<9&^(Kn~0cz}CR3i|Y2Y0Xzsi57-ho8OZ() zzoe?k^rmGdPB#oZDw@Z3{{}zXi+edPv1xh62py1;6(*k+zWlQqi0X4j&tKF)cxR+% zWF{L%^$oh_TFt^-!vFZMs-KA|vL2($Z))k!&Gd$)UIrrWxw6KCQ}3@a7RZ5}mYh5rcPGPN$Nha?`!kZVGrj4_)d!>n59^g4 zmYR`-hj+s2)} zZ(q}!MwO~~2RN77$KV|5SAng7S%0gkJ^~B?4>cS{9y7E>f<1W}8JhuTWX#69Ny8{c zLG({|ION=)MTH!~22O`8_{lmBS<&A>UX#yx?=cJXMi5D={-OF~>N73~ce~>y$q#z#&KE75F)1#Xwg4 zIFM^0OXp7la@9`&a>`tByb1-fM*%HW#h-(-0ojSO6Q`yo8*hQL0TWOW_krdblY<=cblCye z2L3=G^PL5zf_dHKlxRdCMzKm@b}eu1ll1yrA+svjgDfS)~j z0mvb38RC!)sSjia&I1{DEm-k$KyG9g+Hiz%{f}s?=3*C+LpZvf>gf(3=c-5}7EM-i zHlK)x;Y}2t3Bu2*X%A!rngO|JkLwB!0y&a5-mJ=50%V8g133aSferJJ7|~u8khmZ@ zED3wuULCj{$Of!H&)8y5N0qMwkVCD1d15pKXTIulvICqIpX{J|{)WcI*yewWTmlc#<+vFp8W2A|oM9n|g2 zpMwJTwqN@0w*74nm+g2cFr;_|7hLnQ%{Wht#K#oSu@+u z-0?&E{N|1@%Ny-+%(9B2J+5M05q+#QcW-}(Ve~=^>sVdaMz~_YJXYHLXxB!hMl$96 z*KH~0LLJuj=m>|$s_=N6D_qvOK5p0BE=aP<26e4Yeca~g zx~gq;t?e-pjt8yKz8>dCb*+@XZbuudsISM7Y*par(^hCdkMpy7R!Tp&qls12FVFF& z724n9{3*~%>F;(Nwu<_D9M4%5_}SVD9pG_o!rYCqO5D+AB~ruC96zfos)(>E26!CH ztq9prHwu)O%`u!`_=kX3=77=ghavk0pw98qi|WF9%u0!`kR`(6;!}Rybspfszf8|THX;Jb9igj zM5o0DuLA3*@}e{4V5(_|H0$3`-HbWW5oRy2QOH?GR{Q`Mn}G%+XE_*$Te0h~0h3{X zP{S~=o-%GuOoZzJu-;bMir)TANH<2oY#5@N;gn-C+A139F*m@+F~KOH`j5cW$f6iC z5PLDBv4#gln0JD)F)l`%+rStHZEb|(ODl9V#vEI(E(5 z<2`1*4%I7~b&Uq&p!&(NSze>DyaQmIQfvx?A{_Osq6r>HqE#`$V}6R~A9p~J3&RY( z#W04*G8nZSjN^dm<*L@Kp2gAb5^5OTps6L3@DIb(KLj>NX<*-iv2L{x+IOn%8Cw!> zc_(=s`>mo$9`jGFV2;K_`gc~7V_KKSMws`4sRFl8lM=@bE#}pQ%aOB)UQdcJQ@~i4 zVO>HSpVykd%sD%()*3K(f^oIrj|8wju4?A8x>iK`<9hD{3Ef8B8^L&KtL9$>=G>H*?#EdXQXa>1H!gRuf!(zsxG?XsEvawvO&$)zghG;u`wYo?m=5*TYoQ_uxI zhGJ(8b)kc?cGK!QIs!|gkzcIo$4{)hc6aB!g#5ujgK~aA;mVyR=cvnhFO&ZqRld-#=tMP zIkQoO8U?k9jR3n-YADO`lvR}MF{|L?Wq=&X5srJT(CHqt6b?1Yoc=aZHG2+5Yd)A7 z^RCk)96PMg86M}wC@W=#+w6(CAImnBVGgI= zsh}CqS?&g~DJnNc<1(0v#p*<>ylEbDEAATfnb!7^5oQG#$5(DvC_OaY<5*yM(><;; z{qc)bD=j_R)f>xCr7WbzN#74OsTka8#!BBqHK}ir8ZCX@(Jh=gP|6adhBM_Tw<>0P z9L=rJIUaNJV6}d5xni3WRuO#1;A4-lD$)NKG?ptKIR-?y?gi^1OL@^M%Ji7ugJWTG zbg%(-9ICDyoJ25bGr(?>t4<)L%HTNsU{z#!%yAfE)$=*qu*GM4%ro$)vJhv&5ZuE?qXqW-^18kG^$5qY_^ z82-Q3Ix4!A%Nu7H6L~;0-$aU?!a9nMa9)kGQWm()9wVz4IHn?K7TCY_N4C*C0F|c> zT&mdax{Oj2i{Zn>%mu@W;UtcZF!z9QtZ><2d;JAWT|{%nN0_0b)s}?IBt62l3T(U; zHagn;1}Sy7K?%-gW2|%cy3KT4ueZrIV=s2?1{-Ci#YCGSW7Q7PMBYlLfbr^5w~IHy z#!JR+zttV;TEl*XrgRx+7%5WQJ}S~5gfpVHs%D6pqS)97*9NeuvZ_CjV$W2r-Vfq&U840&?vDLtA-gI2Gw1UnAi*7!B4F5?TlLD;Nh{z5#LeO0YWJ?=~|qmY8WC zz;Jc#2jjJ-*e_tb7IDAD(&>D+I;qN|nz^yFKxUMd8o1t+PTav+@JlB{zp+-519Y>V8M%%8y+phjolG^==}+qrm} zb#A5G+%v6usd94;NUn}!A4Y?*5x9nMfv!xp&OP8ZKh{}rgiMMsTTEA36pI7n7)$2- zVTN_?L0mF3s~0>@OU_qjS}CjCPKVbj2HfGb&aHBrMPAiEHS1@<^fJWV_I6wzoJHAq z*AlQht&*|PuFsJgZ&i+tc6FV_MUOX(=2E7R7pn?ez)3K!O}SECol~*s<%PW%Db68g zbWDW#I#|sLb~Z_~&aH8qi_-8G7Fh!2(dkn#j)OWi2c%brZ^wcd4%SU-7%}Ix@EuZ=RK zSQW~_w)GR3S_Pbk`{$^wL(RiCU~2Vr9TwrdCDZEku-i<^Gz?rOm`#McUI&|Gg^Aw& zS=HwYmXis_twEJj2BxlAYR$51vlOsVH921en^eP^&9&tOn_Q#4W7BS!SG&GBU}~ZA zRPr3yKQ&wh!@}1si=SUTYi!vIHs)ARyGIkj#@EEX02WunuGw;q%TcRG^}Ps;JF{Z9 z-c!5GQgYBN{kMd*-K`9yDjB=n|_OxwV4V#3g1J9GZE$SU6AHt$-jE*UJZ z)ClLJi>*$NyUpWpswK|CgO*gcY|gWh{ve!B)r!x-{@JkF++V$ATsjcx55mz=8TV)j zb?=SzU#jL-Nw3squE1s76-u^xTw`j2Uxu%yC}*AJR?3rZbIfveJ*z?<0#jQETI~7` z44cNFX!EueY6MVkR;0fs^5kM32U8P`;c)d|iRrV_w)FN#f(uWU>$(btyDUl?_(1i7 z#PQj+2@KC>;IBYxSap8$_6OAh$8chkUkawm>WZ_#?_`W|#;&qbo^d;iS6Ri+xXp8` z)F9%Nm>pq;uU5}%)Z4~IU{NSt-B3OP>ko$0hVNBFm_9w z4HkfPlZ>?%gK@xvt**->%v(3$)GIaa-7COGf~ldp1U8OLbZw1y=0XjzjB`FLtl}5l z&QFDP?nSqG(<5pTHs{I2H4Chp6^7I2b4YQL>dF3I1d9ZdZ8tk^tQjZNJo-_?xC@#Z zr{}?VA*(k20>(w5w4XN_#!N75BbOr`g;vTAxB0{tH91&Bxb+h!YP z9Qe3$Vm7gE=Yw@YA(&|l>XTq<+vG%C1nXsm&5Sk|Y^~*YzP;5d-syIBdcr!l)9qUP zgq*IK(atxYuu^upoqs-I74LGpdOe9QTO~WAT?I(>W6Jr_lUB-Zx9NPU`YPuMdkh%I zM!iYc0LHPAYr!lBQ!9h-WUt#+vsulJaK(Y)d8H@XwMC}TP}k?o!6v&pJk7CBn;PxB z^J%NoOt)(T98;{c9nr3^XRsZ}mMukUl1zPx)HJGQ-m_{EtGAkaz_@_W9PFeQpS6nj zy3OpOT3e8L1WdIUtIBB>TPd%(og<2^;@8}+&BeG2Se5Ad)ncpDKDXKTId$)l3(~p# zIjeY|+tuKCZWqYqN<=E(D%lt9{Q7w-rOfS$D>01uR$5uK>i|+2OgX!kTAlX0T~Cx6 z#v&=*^nzjBZ-woTc0GeslJwPok#9%nOGPSOj>%_8&6cGP+isnE-R;`FUA~P+nSn1^ zDQ~!4IWKXL!uCbGP9lYe=R2d#&O6l8AGPWhfc>)u_kwYLG>%C*8 z)?6@dSgM3Fuz`|M^V?ay!nrRD1LH=ga=rw{oER)D&fmdU7nUk=_SjYXmb?^UFR&$c{Y|_o!DCQMZ@R!MJN-i=G)_diGTBKs+bT z1&e})yUL6R*DGLnLXE5YSEPo(k1Y{}_kOi{0r47~2R0rW-m72*e+|Zp(N1jEx9?TE zpnTF{W@&~-;gGQdte47(2lkbFt(1dq)BT#-!R3Pw^B%Cw-hDnB8mCK1!-jNfk+e~8^@zdB*4*{cNOb&aQ+nSS6xL5(4IM9|15~-!FtL% zcvt)ej5Q)B?mcbasCiF`-D(n8Z)o!Uj=2G>I~XSJOr+xttJ7h(8Th8kk5RywxWSkM zZyT}HGQoO)spdTc7F)x91ygO{6!v&awLwj278nGrnTl5hw`TsBxA zX!yMlmdndvY^{2P`x6)^R6PjpbU@XIG7&cgOwA8Vc?7IxZ2f*ZV2D|b9d7@3s&6~I zQ0@imi_%nIZhBW8a8$kbf^o^!l{cXyV0b%&2d!=1Q?;nu&IGUl$b~*)q&9(Z^kq0&5Dzb$cYR=;JMMOF_`vFP!fhUg_D{|^AJ!Tr^L;S3 zzdmbl-FOHKQG~U?nnnr_E=ES1#Yp|L=FWiCjIpazIilqo)J&w*_Qn-c2Bt1Tw)79M z7}TN0yzk-K<=qEX(>B*Buwi@?YOvk*04OVSTM}a zYxoT#7_SM8G}_VpYjbtI0~TkM4DRj!N$pIt zzy_fJwV=0y{WECi!Me+4%t^)W^{F~Kpfmj=%)7z3804M6dciB zCZHU3HtKk?dT6=pCW1vtjf1iqtY#Qom%(~kX}hD%o}X1OU~U$fVBHWSAK^Nm`pioC z&Tak<=P)>Nwd1Wr-_PZZ1@pQbDb9CudHR13jG_MWy8jc5R|1A&WQ42J7nl(q0-X!K zusWS}yPkogt5woJ+I0e{NIuweHacaUJL@)wovLm^SG>Kx4~(k?R}|PTums8YhWgBx zYDh89e8lvXI-shRnG43aX0kOOfDH!2-Y_=O|7*jzT}pGXkUD%*eS+k6RRA^yn!Jaa zUxBH0zzw^@x9R|>7H+0y>S7t{{@*F4e#JT&jH?3ov=1WdfDDm`^h-!_($yXs zenwTLD$WM$2Mu>MJa7f!Muf&=TWWAtF)@x+7C20y6wHIR3!Az++O**@0-YF5dlX!9$i zIL_))xw%5^=<=}QngoW!0ggf&kYX-GV+Z&MjAfzcSeVAS>h@vRaz>uBihpuDQ_flE zesY^zpm9y9jSS)`5;(Y(S)#+!q+4%zg|1Cn*QD8IJxEl5| z7-tzH$|1R^Zf58<9{rVEv{HU?o7ew@U)3Os>d7pyp;l!~wCiQ0Mp}G8;de>xw(8C{ z4vdqGLeRFgVB92Be-D7Mzo@QHgv4`;rvHT4$mves}} zB4__!YR}pdFg5pFzz4usGp;+_JFfgR{cffF={9Hot_DvnfmgsdK&sXsz*GQd=jJ~Y!+8@sOCOf0=mBOTYQ;-PNyD16*X z)D?PTRdqW#pOe9cNex|eodUz#csy%q{kJ;NAO=^>Qm_%#CAdz5;r--b9dDcYtwNF`w9VSAlUb(Z*E#`3x8ya^qYSiND^Qto+zn z9tP9BM+tv|jZqrT(|PsKBCF(V?>aJpVAn55;V6P)qVY#tYG`oNcP$0OoAH6suKh^4 zMWvskw?9&PSg@H4H68LugU*h_ZVooSx+3$t8paEySN)neG-(-_YA%1l@D13VG7iky ztARM@?{K?TH9#jgOsBJ2!#TKx=+p$2JlH~wJx2Lrq@#r>rZX6S@2XnO+hH=;Py}Lw#BX3q!FsCN@h2nS zwG_oo5pjDfhy0BKwrT8w?}80R9`%H4CH{ytzJ~n_HnxThyk4zSmGc2GHBHIiZTY#f-Zz%}LuR4(t1+inn@ zTB6~{;bCqJCa&Vf_^VTW5$(s}6pX6_?^JL`7=^#3og{N|P>R9&fnj1FjBwUzBZ^z0 zw0QhoExmY$jKSH`Msx~-*T5gw>QZsgnhK`Z94^%NYBcUqiS23z9`m;kthcO@2ed0S zjC0%LMu)s5sjI;I4|_M#AA}<;pG=rPf&Fvs54uTRr|Piv5SUsnyxLELaf##N!BBL; zU+AjJ`Ic}M7>5bnJsaVA2MkYT@q3E8?YS55Z-tVO()D0?_JBnpKi0#l2=iw!mW-_u z_4MqZO2(-WN7+oUkL-~8dA~3eB zk=6ACe%lHrFH_OAi34Z8(3;B(qnlU5_z?Oy7@LT<4E-X^M)>ny1~!uCc z=r|bPRkh|HF`3tQR&kBxE*1}lT^qMv(OIP2i0$zlJnFR9p^J*c`+7WS@q+O(!sA%9 zth6X_#BUxTfTKc77cuQf@{qEyJ1*4*}}{AJ+U)Aoa&I76S3l z*uozg>j9qzcLARRlE0+&e?vd$JE1enF8l#DKqh3xufod)lmXeGw{^w?+J6wp0zL#b z1%9dh-)jF^V14+1(*9q8_-FivAB_70=nrJC*wA`T)K8&49K--1D{iVYTn}V}LV$b` znXes?J?;Qx1^iqjzKG1vr*zfJ2z=I^R`SB`%JIC^VGZDht69pKhFk;y*V-&gyI ztau=h4IH9zI1vAgSo~mlaT-U`iB}#I?D075AhKtZfDE`x`-v<#L31K`B9Qr}YCn-Y zN%Mb0O35l;o-rMXCU7hOvf_n67M!nf36KTeuW>1muYW`4Tc+by0-5ze%?p4Wp>^8- zFh#CECK$M03j)Xy*(@{sJ2HQv)`@KJRv;_bru{^As2Irn&uRSytrPvZ{&yq60$v3& z<6fPiHc~Is`hJbCYkUKUf5uyyzpeQ@n!l^@J&gx}Ebl|0y#APA#fO0SXB^geMEgJ1 zcvSm8)p%UvNv(edWRJhp{;#$F8;##;{7&N;C+cs6fZyO?;GY`*2C{`t{6NyE10=7f zxe4SHHPpPZ<}HDN@V5u@MP%|8jh%rkFAT`~y7}qrzlRngfP4`-B9TD4qVdB74$yos zop=$sk;DO6;8plvi30LPWIi_#bsK%PpXd~^w>w(qvDhKn{l8&Du_`GARGKi9um|} zXyJ1byojvu3(bk-r!=0{ej@!}0_plz`-!aJ43JZHPV@5`FKB-r{}&Jo_!Y<(k;y;s zgDt(P{r?wah1Zau__vNDk~`1}qMt^W!aSp%c98|}m`g>^pZ^*SYK7SwfwUPT* zmd=+A z3O8tfZKPjlzi?sv*@I2mL1fFf0(r}L708PB0rAgxQ}Y8r7W59C8aZO`X-;I^2SEA{ zX@6~GJx8mD=%~&>#Fk+$!`ZTzPt7lTY--Nvc6HupC=RC zi>K*~M0UapWC1DKPh?=a=0xflniDy4^MQ=NPwNXc<^tKUd>}_)39ybK2K90T^5ZTH z3!Gc^qdMPXK)z}t^(VFe-;m`#t@YZ-c0L0?+y5Mp{CSNfb@fdU2`Q8U`Oa`ZkS`)< zqPp0 z*ZhA&R``d`M`YZeK>Dw0|J6JsSi#@gQ5)GXC&yhQ1N}6wjr7;i{@TdnP(%1T0DEY? zHnKr^5n3R!!d{yH8?vHkozD#<_h{^+<7y+PZm8CW0a@V)osWq4JR?>+h%7Kpb0Qlw zTKmTUIa1@bPGtTGn%72F#EHk`DB71fQ$OfF#`i~mVYpeuv zYA$O2Q$2nCBO&MJvKD^V{2Gu2IH=i^ZQ9>W`+I1Al;*vGjE~X0kH-FaIx$G& zP$2#pqw#|k@&ER-f(bwtaHqzJKsI2q=J7!0OVoU-=F@?kVt&W~F;nYV8soE(;ETu# z=V@LWS@C@MS-?Udvn<6A=3h>tk@;4D6ITN3ijqEfpGEm0oqe5_Eg)z15$%5z$QO}! zfakQo1jyn_wN7L|Ujp)-_3J>Ea{!3NVtfeXE$sx5`M&VS5@S10!@<|TAuIS2I`J!w zU+ert`o974D*hG7@-A!q1IT^OfgjB0B(Wj-Pr(lY-$AzkvVc}Vw)AEoXR@QlPC&kh z^oIf2!)`!MKqQdyy)^FwL>r7DK;|C~GRa_rE8)wV&|vI9vNk zF0T@D9-#hvqFeh(E=Pu(=knT5a_J|h|Gy`?|2@(D?};wn8uMcK?}_ezPjvr#qWj+y z-T$8G{`W)|Pepl4`2XJ%-6{GBEg$i+hyR~H(G^is9FrXmv0;j10^ovzL5Y$T0w$tb zhf&qA3dqxZ^{Y63#F5jWM*QY_u!=yP4II_imbI~*g> zl&Yz+4das}lq#q@O|k?9yA%W_OXqY2WeQqMm(Fwr?GM_HtIquW<<3rL>K7cjr`4aE%%hLiS+M@-+qXRV+q!k(1urkXd&A2? z>jpf0*RTP@*L6(pRX%oH{0&1KqMUW~m|^c#OR;E%>{aee*{ov0$r!DWI|#4VA|rxjEw z7=OQXmMW;bRI&sGyA%X2lg{Z1$`rI%E}iKL-cb;;LOSOuC|A&7rF7;hIHn-{0qI<( z;Ix9C4@zf&g0l+TtE6*-f(r@;t(MM01(y}X6-ejP3aS*0Un8BR3hF*2S%QLH3If+k z=X3>S3RRp1uVxk14N z1%n=u&O!y36~t|n&ZiYrDH#8#be1ZpyGgPH1-ldkJ|>;h6_hDxu~|CP6}+P$q){1Z;jC4*{P^O^8v(lNa;2i}aMbbG>LAins#nPFp;FyB&=cIF) zg3}6mJ};dG3eGBUmq_OZ1s4$c317E`3;Lvva-Qc1KQfe91g)iCFOX7&S1E%lbo#bV^`ioffvMf2|WvFL-)Zawc zol-5Qx_+lU_IL3$Rj0_^33cEuyLv^e-6dngcR~HlN4+Zg?w0Cls@rzkW3P!zN-fw8 zHGYqy5B^(a&AH)kLlp0E4ClS;703av+JhZp;;XXg3sm>{sD8rSE7ih1P}BC>V_jm8 zQsZ8Q8vL4FttY&%$=E8YhkR611nrY*>0YP{_t|3`h=WQ^cnxY;nOzMKIb||7a39oD zK59b|x?iegR9Ek}$2Jxxm6~1#HRg4@+ElE3UB-s&hg#{QHWyKENVS~m<~QuIEk%V= zb68~7DL~X>S?MaZ`osm#TBI%ya_e_ZM)h=6um8D-ETn+ zIAB-XiHQfKdV%UbAN3|-z9ZGbx1pxJV~=ew_9!*(0My`j?P^EieOJa-Q9b0NhKiu~ zq+0q8)P?WaV>^q3N=i6xjUByYIrXPeF z^MPHxU99{-#)iBPwbDoJA)-E%YB|--AKGIhM1@jwKY$v0$gW0-jfZ4x_=ixh`KZxi zXt`8RQ!OdC$Hs^&N-a19HU6+&^@yUwGS*!VHQ*z=+E+~cNU9g8?(kbQAdiZdVh<#LuOAf$BaVHA$FXNVV`YsA*r=W0S=mrN(^@HTaZWoguuZWNa1H zLq4ik1f7;@=@(EJp0>x%5(kx=zCEwX&7m6!NE%+8{{29BNCyLIPit*A=T3Fp)Rbj$37?yDmCE; zsA1>q>S~d5PR0gSKt1K7t`VU>O0|sY>L2Z~YsE>Wrk{fvbKb66V&!=m8}cL6N*{H- zh^mxoIn~XT_E;e*l$v`UYU~BOx>0PrAY;QTp&-U1DVvkbeE~?Wdsp-E#jrrZK?hq?~m$4z2p;r2+J4MtVQZ1*t`44;SZc(As+~1+bUa_lt z#KtQ!HvA8$*L>8yV(6bzJx#UbPkZb>aYd;GSD?mUwX6F@(N!7i{u64zUv~8kG4U^{ zUZA?qM}13}*Q8o_6>8cwd+Y(RN2zgtK@G05tM3YLm5i;TddNpTD1!c$YUwqo3;(vq zejpAiHKEGUa($T7_LT3?`W*QzEAVeVJtz%bDij8$-Y`7oPYd-4dVyH{1r>T~> z?6IfB6{Qx`ff`@eu6`+s>dIKR3u-_;yZW`5SWl`KsP6MozZIsxR151uP4ly~xOX8$b(;GmI39zfbh?M~{Hsm^}l|JfkA}Ua-``i56R5$>>}oyXZ6;%@s2=iB zO%c>ws-;b#E^Ka(Z6FRRHK7^QuoiYTK;*QLv4PE@p7K!}iqMu)Eu*@+r9HN>IH}b1 z7Eoha+0~|EWh)sQ(h_Q=kJ?;B1xdA>>gFJOY)et0)ZA83W3RWXL1N?eGB!L2>NOv= zwHVr3s;8-zw6@0viz`YkxE^Z!4R*DSD7rz$x?4jH2)3*3#Kd5!UZA?qN4-gyAyO^8 z0cu)^J+{5rqtv)ysKIUQYDeL1BV((m9`aE`MNnI*mWDuG*w!A~SsYYqLK~=I?d)op z$Z02I1KUD9<)hvzLT{968P(M{+GD$llS)l*2Q}s{--7M8| zs+(`N$3}<>rRLrQHMYH7jS?H%%h>RnpsR zddNo|DuOyowKNp!!p`>C;o_iD6FNZ+>ta`9MNStP8`v4@DIayD2n~~J8P(N3_wLc+ zq*BwnK#d8vmpoRi441JXVNff5)Nvx}R;iX#-F&M(c7mu-YHm2x*xT&tM6vNU85@2p z)N4NKU1Dfgsh*}<($yXtFRm!H;5Ml7-R$b!qNtmUb$5jtaJyYi6ccZk>IJI%eAFai zc9&{lH>hdd?Xk&Xk5c1qhZ@|&uFeqN9x}Fy>LDN1D}s7TwX{3bg+1-Dv&2EACiH+B z7GYP@L{5Z^4eSZ^l#iMrLL;SGMs;?H8!-^HG-w(<9Zw7^rC;d+buNN2zgcsKI^g>T==j zBV+M#m6%^2b)^XEE7ejD)P;TRu@8!aN=@hkHLRaqT`h9@$=JZYP*3@&YeZ;&sg_Y) z-QOO&R-9C7dOxT!1MI3LRt}J{A^o9N`l#zg)Ih10Q{6n!9xFtJQga7DjU8lHH;Rpe zWNi3AsMmbdO=9R^sh*}57ml#UJ|_+; zHDNf^uvoiVB64D7Y~To}r+m~GL};8;%c!o7v&U{1CzYBW3pHk>UELv8j+C(>aZoFL z)SV(~lvK;9ZXRWi-7PAVnmZC|>}b2XM{FD|W5Y*5z2>9t6+_2J^)%IzG4|Mf;)+rW zMnjDsYghM+qOmg8JqBvP9d`8%G4T$mUZA?qM}13}LDNXpa_~E)zWcL7f!IpejpAiHDNr|usiMQA(3;Zj18Os^^}i#ScFcL zY8lnl6Ya4_#7U*5-w8Ell3hJ2R!)+!Arqli`lz3ZsJo=N0e9Qguf@c> zrFwztJ|Fd4VNQ{1VFJ{&DfZYiVvkbe?uHtiXji`%-b5K&MfH%6S|Ng_O0{$f)P+;+ zu|JA~N=-k!=Rm#YqqY`9v!r^OYDtzoHdtIyYC$H{_-wn{MigbsSa%lGfVpYU zUAVv=+gTh`YQlV|VL5g+OyuOq*uVu)Px+{~iqLzcT1IvCJ@(kH;-pg3bD+lDYgca< zEAN%DA@@M7^ig|=sQaW^PIdEr_Sgtfq14=ap~fz>t5IU(LKz!=AJl6;YP1-dE7j9f zOLFb8G2)6+3l>6+&$Fu@QIscR-MLT$^6hG0F)?4N7pU&@QTq#XkyH!wpr$Rd#|{*G zlp2>0HF&XI9W19dC5En)>S?MaEA6rI;)+rWRzQt^z^>jciXM=$?v+pj z9<-~8V&a2Ry+C!JkD4URRZ=Z{0BYJQdu+1Uqtv(up$4zEt22amwT!KzddNrhil73i zmac-ju)rQWOB_^c!fL2tYwT*8$XO#}0}G&@@=-HH=tEL1qq_Pbd+Z!>QmN@{pvJ7V zt65^@S{WPi5Y$Q^b*_k7C)IMQo7dT6=ZgxZ=B|YrYuVKtvC)#T;p?DY^HJ{=Lm!sv zX{sd;+hZ4sD@rY}pvJGat9hbmy^M7~3^ibbU0oz5ZjkB)s{4G@CBhU^EnE*ZP1s|X ziakn=+WX;m74Gf)UZeG>S~emsEiHV z2=$bYx<-U%)tl_GYsE>WrauZb<}tf!iItDZ*pN+7D}B`UB5Jc#%c*YOY>yS9 zLaDirL5(f6s~g3}LKz#r8R|73b(0vnMXIN%mTa-dZWdRRT2Kfz{&BmyMHD?QW8GVz z25hyfTgAk!QoTTRpO5;aFrScW;p0%#o^bZD+D3bYm_koCQI z0`-0RZ}oZmPdve&cfIY#eZ_`TC|s+l@kzZ{=F zZ=!Q!JMX@5&behr{S%M+$$D2jC01?m>yu|x{jFZ~j)Ud^()g<8Y#fcR@j4HS=`1~1 z9okn1oKwKpo!aL@x~KHue~fEiU2w1T&A_L=X=gn+X6cM~!N&^yVOSjU6|eK5JBA!# zV1oA5NBTaQ3!n3=eGR}DYu^;H{c*phd5K!Wk}+af4qj8?!$0{ERZ-fPtn)R5zxreP zrt5r-;B&F9czLz2G17IlkDuSn@oNHWpnYk|mmoh?il0x+SGvxK#ckZFeHq%<9KMO# z#}9yJfh}PBIdXW-(LP+P#v9s~DYkA!AG5R+1nEiU#VcF;u1ESQ=`oDC+SeNVMeUoX zeK&x2)z#0}zF_#eY2O0v3xThL_T?yFp3w%*j@o&T&e#^dACTtjUhQj#bcOcar+qiV z*F&$gh1z!$eEf8Oj%6-v@aCCMtVg&qyI0TZTJ7UiaKHAg%hS#-aPkw>__DMw4C#Bd z?_uo=hi|o>!S&jAD|`jow*fvj`Zm}@+V_ag*A>2ndZagMUmo^bBUd|lt#j$z4&!Gy z^R-F)x+9&heUHJ1fAZR0qK?Q_HT1B|cd_^Isdu?Kbz z)(ZAKGP2@6u{-*)XA0N?%E_mcJve;cKgXW!g6iz8JmI_iNv1_|{`l zbHTsvhmY_>ef&lvV-cKO@o(siW0BsX=k87Iy92&n+V__Bje{>n``*^R@$mK0z607f z0lwDS_m1}6$xo^LQMdYC?VN~=g}TS@Y2PIHN_4)1+IJUx9_@Qy`zFKJSNlHDzIgcf zSYx`7{Q-&FVpaVYURqJ2q7 ze}a6R!jIv@KVuqsz`=5+!(P$8lkjoT%z*9FzRz{OnedI% z4g5m;yzo_jQ1~hBOM!0?Mu8)ATKjPO&NGJSq4^R{mYoWlf&_=?Tb(ftX@11;6ySH- zmyR?)@}I9W+LwVeKXg6`cvkynBYjf)zSq7v@Zl@W@WS}>M#FR_%tT@ukT)9oc<5@N zedn}~hlycmG+J-`sC{#h9-)2bwQnAL{E`56s8ajpBi$c9zAn(m#jya!kHTl`FY1gr zNOKfe*-zSc57Gm5@FnfL7d}?P{6A~oD^DST*ZnVxz+%4+yKgJ@d(4qnA0Ga9;#gQ5 zY$R+HY&2{PjGsEmLk>TMk_Vfck$)Mwz8uES8g2w@0&5Cu25Sy$0c#0s1q*^*4{Hs( z0Tv7kfwh6Pt!Iemp7(3sxC2N>*e$S7SSJziykF;uJT&o;#6wX%m_N*f)rav=bRCT6 zAf9`8&Y1+`+2(Z^&oghs4#3`ly@Gb{fxQYV6Tdz0H$0DD0WlOd3^oE53yXt|gpGoQ z!)}G$2IDz~=a$=H-C;doJhSkK(gqd?<5yj{V0B^jV1Hn|ufVRtuEDBcf5SL&UvZE7 z1_`cZE;TMK4~#d_6)+w%5@1QNQ@F}b!}uwC{I;4Iu$eF~ECn_TmI_OQrNc5{vte^! znXoKaHf%0z9&A4B1t)gR7m?TwdkMzx*O?59hwe!nVL3hi!#z^KN-&;Th$27|$jAwiSM` z_;eV*Q{pZdxA?yS!{8eZ`wZz5uxO-v!+3V#$1A77(qS2}*|0gV9;gG~qigI!dN*tj z>{Tv?y-2(U+XpLy?T5Vxy9Jp;VC`Tx!ft{sM+GZjD`EV2VSXlZV;Da}`C-@wn1JQN z7Q^Pk`1#KK`2NkXLKx3TTVYSY*7H;EBaz@CsW*%VBOZi?z=p!g(d)yojj-n6Enqwp zwS{$nb%ZsBHG!Q)9-fWP!%o6BVgz|EdII(&>?s((L?aD02gdW!3*+$PMcB)*ov>Z7 z-7p@M`oMTN;$bKq!Tk6{e%k#tR8|G!N9prp`G0}^3Of(0g#FB}!0;91Cx zIG%rQ#MIveyB^jJ%V;C;QP?KfW3X3Y{E{$!ao9vyoY?cS-%WYP5gLjn@N?=v$87U+ z?l;4>!q&jn!k&XY4=aJa0DBR(9kvU$8@31b2JB7PTd=ob@4()J9fZ9P`v`Uf_A%@z z>=W3h{9N>7NF0Zqfc*%23p3gh76SVYb{6&n>^$re>}MFyY#U)tEZM7Q^eUtaVEn=c ze4(fOf`?5=^XpOKVF|D)utZoE{MoQsuvD%Pp7nUP+XH(QwiosqjAy$yVEh`3u`r(N z?tRwSSdHQ7ho^K zw!>b6?SL&p0sP_+e*4HCL|B6&XKSE8(j6~NZPEZD;^erdyH*cGII#;BCTcqZ(D z)zA|bhmjcu3xfYEjC3?cEUyZQZ(tvQ`~|xP<3q1A@STNy5Bm(h&tW_y)`#)`danWJ zm&xR#!W`H=uzO+YunVa4BJ3yF8Q57EzyBp4HXO!J^gE1daQ2Hc%2Ciqup=;hBdGBk zGGB)M4*LZ*5XP_1nFeg9+GaFHquPVt2;*1#@d*c?XzUVOcjGC}0JMJ~jL$A^Mrb`? zV^|Z|0)*zkmcaNS?EHZF6=-u7ib{r^LOKUAeE)kI_AzWHjNidn0_%c2onW`3+9ep& z5kS5@Jq+Vp(j)wC#gCCV3gi1xzW+Q9I|1YSPQK6N+sbShKg)a=tTQTX1N(n!`wI9f zj_&O%8(ab;#BLM_5JHIKTBJbm;7)LN3Ir0MSaBUfAOtNg#XU${C>C6cltNnwPK(3$ zJi9x&$t7v~zW?{**Qc{P=ggTiXU?3F-McA{>*i2s0+i#nkh{RSP$(1#15Sa*0V)4< z4F8G?|76V1z#V{pRwf>p#VK$ZE|vqkfH0sM&>mX1156NZ06d_;pSa{EYc+&b0j(HX z;|+KKZh$}F2$+C(;C}!-1a1RA0NhaVk0tp6{7V^T9za zNblhO7_PelHG!Ex2jsCJ_cYaTT?^OTw{V|w4akanZbi8Dc#r#Mz;oa_$-e#UR;Gg|9 zZXJ9?_dVvqMn^GikGWQM8nGaNhcA1~o-sTa;z`wPfQNk#0VAs5pX$2=9K!V`q-Bx6 z0cj}GB;+|D-HLQG>A*&Si-xtp8elc>EwBn$3Csex?2H4J0*L^YqK#Gm#LRD)2gCq# zfoPxtFcKI63zwBMJSG}w1=#X_Y}vFUlJ$=;BOln ziUP#}U%(qE1b6|S03#Ojd;s$Dx`>9D)WRfE7zt#ODf3GJetPPUGzcgK1OSqc3NW8} zQlUUSuN=})AOt82lm^0paGso(!3Bo~M;y~uKoy`GP#I_m)CF1q&48vreV`st2dE0v z2EGJp0X2b2Kn7LjA`@8__Y)u1{}jmiFKrA;aXaMDz2vh zQh)MMBzY$TlYohUtu9g)QoRqXy<_5F{&}f$Qly(h8Htl#0yGpz^eBCO>&; zTw5irN<>*JX1rbuu$NeP5kPCp9%C=Y11!7{hy!Sy1%Lq9gH(V$O~q3yrlH+}$SQTW z)hDfyQ#)AeA14%(QM3TA^8vDpsVz07X7nei9mUDMvaO2zvN~!??b(t{d^1LE22DeA z*b1}S(P~EaW7G9rBf*phGMhjfeRal-5t!>0Ui$-g*f67VrgX05?Hf#lK}&5=8!G z_2q#62F9n8AoBVUQU}m^?r|B{%s;HtzDIflI12m#90Ps?jsrgdCx8opJIbF!nhcx< zP6221^epH4^SGG`ri(}~0X&vwK_0-=1gLFe&?f>^fC71*HWB%;0FSJr0UlTL2%9I+ z*TBc4ZD*hgz!T{rz*Xe8Lh1?d% zurTlvc@)Tvo)b_I;70GdQ4Bm~_KnGj>l{FKARCYsumdPpLHYnGWxNGm0e=B6fIooW z0M_{na2vP?aHRuwu`*}F%0?@HZllksC5A*25F?3$(KRghi z@30%Zkn*HaGV*aA{f+!oSeBs!(>E(3r5_YU%5LyQ%111G)WRbaT8M`Z0RTs2Nu-t&3QSX97gHWh$!Kv{rvKD*&F9OjqTQ5k6^ zfT!j?(lmk%a7X=yS|D)rR71*^R7Kha_Z-S>G1KZuzW^8lXpx$@Zi0MGh*thf%5EX|&F^zrzfNBN}jIKKt^zd6th7zTmVl$A9FB7r7AH1c_n%gWjyZ4EF`$*!R= zsR%1$jH1QT(rx1t8%tR+UGcvzKoKAc=mf|h#ELoq?1J_{JAi%5n8fkE57(sGb{FFl z^E(0zoV@Q0P!`KmdHPB>_CGbFroBMy39uzJ8y%7P{g9?@VISO6X)4KwfoWSh1oz~n zRi#DPwb8gA0Wgr#VcA%A^;ahJ|1jJP1qJ|VTP}r3K{V|^U=YBkjcJu4ujHeg;Q%XU zYb9+Y@>mZeI2BR5hniLc6NRw==LKpw8W;sob28FtY%L+3mOT9dIlqj@wQMCTl#Tit z*JFV(fNWfh)LL3#9Ej{!*##4D9}cM6BBkdq1gP*Ffbn1k(zG$*8{EeNRE%=iD0U}J zJ{jpGfJ*qFr_|xaNW|7qYic_kkQGkDHCsOwV5LsrlS+Hzo@Qn1X;M})1xVX!PI{EZ zvMeVXMkjv2_&*DTnZQ5@o~<)Wg^J*Q0WcR}WMeBifiO4;+|LK*0nC#iEe?6tkxG6} zNR&Z-4o@nSh_nX#UoKu2;d&y#MGQ?wOHfN$U@`7xD`+k9E&&pNmB0#slhkC;mg9OE zuoRd;UV!{El7J(?VSsXv>nZ7{fRlh9Ljnf?TLW!W zP0u2|08GYVS5}}ez_(R<0__35$j}JL0&q!s8N5${w=4$*spMl^KLqT+!-`BuQ;^mN z|8Gc*xHkYHbcs*EYk=MM3Mr?CdO&4d{|USVUI0nRD~$9$&=%LXkzNOCpu$^7Zvr=f zYrs|D3P3s)q*CntpMg8TJ>V`7^9%kL4*UwR6;gX@%NG0&P-7P6aE^qa2T1<_82BCm zH2)K%tc=&sktQL1hSV3J$^QaqcH%wo5%|FVe}@a2?hQZ!@0rqUW|)X8c?D@h+_P|7 zTvN%`NE-mHP*F>yEdZLAT}HoQtN9XkGoUHZ1ZW5}2H1TpTNCvgYM>AcvW4}L=?3Hm zxHid#l!9_0%?acHvg_9_NbP|N1R#y&2=X&!8D2xMDwhqT!jx%Ku}(+-lOdx* z%wrcwy6kJ_+g`IfXlhx87UQ*4j%KIA;d(yHQ+65lzwGO>xK7*0EI<=e5Fr(zFczjW zRnuv_XFj`y!f92Ok@>u4J{2ts(9*Sl7@Cq=vM^H$l?B=VnO)QQ(h8Lo(Rb)8r13f} z4=vOX;C7KIMqZ4e8Y<*iPsWZ{`nlim`4Hq-? z#%E&9PBD{k+Z<>DOavwXu>iebF4zVkWxEF=?GMP1#DUchp#IVx18`4SO#u!;NgoH$jaUhV)3qpkERZ(*RKtDR3Z?Q= zwpt&}%ob9prjh0*6gVEBMW_VLItySo%>)_)>>5r#vU}JyGmuvwpy{UpQvuEzQ;>cG zr0p&$5F`6e`Yv0@kxHdld1-*AXKOeuRR_KRaBJZEywhux{f0OZn$a}{eGC!x1%`F=G;sxN? zUt0!^JnVjNrOBuZGE5MQvnwv9-;JVScEwpd&Y`%v6-6uZf;&7)xmD)+;$^5eC?Gf> z9PTANb0{uu)xnS(3>)^he>AGb5{Lss2(@S=jK7#&jO|1p^7Q~8b^5Dgryiq*ecc*- zp#f#dhhHCo!5A&}lJB6-S8YRsd`sJ&Pg3Ot282-FV#sq#!~qzdc*owX+HP|FL(U&` zhA^zn#93AtC>}CV?;OlfMZ{)TEGA#m2{0xH=@{$-QF6cHsf21MvHCe>4mSMI7nGoI zR34Z3jzh>OZD)~mlgA!a8g@S_l!Zj(gO0}BiyS-vrQi21*Vo+!r#L+aajz#i~ zDb(a7#g##4gsJa~*|Va(tIjzOJL@kgfrc)FdiUr%7<-Gz*pZv;SHA|OOh8y^Xvf!B z^P|j@3cZIGUw$vDm@z06T@ORcA1ZdAzM{^>26IbM1*fub$3XR!N4CiCjz=x`z{TGd z6YlrSE@7(F(16e&^-U)?FwC!Vx5VKM14n}r7!Xc};yZ3^Se@6$d)qx(9$8HELeUrs zhZRvTPetjuONzw$ml)rr6DVOYNhr1hC`u-NIKBR;Ml-6GOC8g|`y_2FJ z?-&6JdWE*mk79l=|G00f4LS*hHh^S7A!YjBohO~HHvuIW<^konF3$eV zrs&-FYZtPXxdnfgOr?rp=DC~$@fz#$JsC^;XN-3>V24p!gz+r@QYKyR_1%>X|uF;A4 zlfGz>#tH*K;rQC;Z=CqJ-i|;YV~jNSWRPgowaXnB)(bzQ`Ms*#5>Tjj(+}N>zH3=! zqg91Hpm>1Nx{TAqQ`eu}u~M$+WokB>(J)`FRgJ8a7of0 zl)<3T+BNsyi)~Wu_NUcW(oB%xtg%}k=l5(|*aferNc$`V1^>kc9&5cVVg0kLR?4@? zW*}b>-LS49YpoYP;?x7gWH1CFW+OsHb??$;V2^$V&(TFLx2_yC!^emS$w+9}jiPL^ zb8FL~8y{cx^bu|kF&V0|)hH3wr*kjx85|>S-TonDWe*?G01Po;2*D_Uh_kv{VTs3z zjJcSnF>B=lAtdMtC~V5?Hq{d@g#K~J$9NMt`H+(X6EfpV$5DB9v^_Hr9r{M6*e+gt zjGo|SnV$UyckBU0w#U}ab4c;85$z)$>Z*ol0Y4C&=-b$%hCiA-pVqB}kMK-U%^;_> z3Shtxh>hBjFsHJy0s|fv9&AM4Ap-`nm5qLNSlC!8bihaSK~c6+onM0twNTU^MUUOf z8CGTMs%M~JZ4*!ii)2s`ePc&Dmw(%1Vq{lqnGT?EX;o!)Kv4X%MEH6;^akte2MUL1 zu^SamsaKH?Y)k~%=I@?97-Yl59&RnTaT{84eQHncC6IyW_wb! zK!vXx^zDL^+>|SW0wxS{+pbd7^~Vf|qi3|-GH%3Q*~XOz1^pfn6lz!s3jT}T*hS>| zFzuW-D42q=m@#ZZHfP5Hc3Fql?fC3cf{&Q;Nb`xHK+KZCh7tWb(^!U*;ddX_svdL5 zM;ru$(MMc;WS-)d1$JV$d+&4jt-<}ui6%Bq^(A`|^B5iC3Ih`71&|>7Pdj(=P?9&-gw1qG}fezh;8xpr@ z@Nta0RLo%t&pJE@_|RFbB2F{_L)bDfu-E3ccdFd!M(!G16>{Ah7HGQ&u?HoXDqtPB zn6gdqMh3*;&$eH=UU}bWuCK9r07DOPmO8|WhfmBQ1#Fi)_Qpmc=&AW~*ao;h>kg{C zqDb_(e6COq!-dN2&?#S8dL-YO)b2SbnD|LKC@MaK=;Qc{bV@-5L;AcJz>J^86eO14 zP>`OTFk$Z(t3Tvfg@RmWqBoyAilk>)6@PFP2VR+--Etx#(fEP=&cw}f8Wjf4Ab1z* za1ptmqj^Qa0OQ13Lh_d>l3aK(7~mGvp|q$924fx3`Z@L^JH-qpJH(Oa=59t+oq`^i zxKF~dF_>dZTwFfzY_IRyumY`o9nt=UImGQ0jK}$V<>bUde)X4C0z;@4jqZpIFU<9f zB}LwS*e{e98z^<9MNFSDz$gK+-~y3P>2{(>NHA1(Au%vwC5-tzChg&?{#oT86d zLcZU`Bk&o^imb29A?%C_ugnqQ8LF->_1+cIqF(2zJDT;lk?>e;l&YER$PCK{a@|F~7O4e7+-4WmES2P1B+K6R9d4rlqb?jQUbKZow-sQZ2adOI)4TWA#zmS1IP5ox zSzs_86ziA_5CaCmgJI%maqA8AGm8Rmq2DFZ@vXT;p+$b$f@cR(_RQ0xqxvtpeDXZS z!JpAJy~U=tkaI}n?F;XyCt4py(n@?lX4rjyP3aH4jhp-XRKJE&^lfOFy`<*VuiuXB zez?V4>|&pTmoeByoP7`d%YcF7qI1h5hZFK9+L?@nkb_|rTT{fm149&UbK^EB$Fqli zH60X_u>o@E$ZJJVGsPi`+B^3}z8Sby$E=HRYmN=?Gq5opwlXfdUh~zG{;E={t--*m zhXrV+OX=LI>CY9Cs)Iq_sEid2z!2684-;5*rvZg4R>_&S3>aVu_SPOyDEn-SwaK+# zF1d$IEBy{muvRRl>l>=Wn6%2BkEb>k3(dU%6b^6bViHSwp=X0b4Qc>%G4>EkAq%5*?+5gAbJ6HLtT6$) zv11$GUDa!Dr%lZ?$sy}B^ z^%H73BU&SIy9z!>@XgQZdTP!_*OzKbRnt8dGr(Z_6eiYwGDo0grHqQpJbML^X*hOnYqL{g)1{dpT;gDBA1YXb)K&J*Tr&uEQa!?xAXXWkv9o-Q!# zDcIPO8p*Aiyei*vIoR0k;V?A<3s)A$v$x&!pnb|nodSjPiBZtSEeZ^*;n$Qsu1Q`W z&T@_lV@brLEnqOFPY#M%1r$e4?S`D?wb?({+T`SN$|A;0v>Cy{a1az$>Ka&k;EqEz zIKuUXmxHKhQbLSTVvGr*kBfLFs!WG0!6+S)Rh(g#lla4=l*sN~MVp*Q2zRqm!ssnV znL$jSj2FVJbTc*gi8iyYDJtGIDgI>ka$FmL5vMGC@Ix zAHl;#;E87QPo29kw!PMJSjKQ$r-aOo8gXcG;wY2xJaRa$QpA3W=Mf_&zu1Hpux`_aoS!lm&X^W*Q%z>e->au&r~n~7cAGMt80A9NG9!0vgmw${sNcDN)cnsieq-aI(T9Q zeW!_9S)tDYF_OvGVpCQqIZYhTs?@WDMQ9^(|J0W?9i9yT!DRGs;8?# zw)I;DWm1J|cF(O1w2}XL->4L^rJ>?(yd(0V1;!lWQv)oFrsq=fyE!$~Le}TyoW$N- zN_n?=7zm8MHH+pw_OMo+w);iX=Ra}Ep zMMtRqsD{Vpjl^8YF!gODl5#7~7}-x;6pI*{SMh{L$LGZmYSCC5YDex&o!@6hNEU}w zpE)khfWef|SWM54GwKUYO8)HJgmHG&rVuT%xL~L>vRA#(J0FrbVGLACRLt5$^Oesn zASt$Is8)AXBbJM4RTI&$Ak>~FAh<+!Sx%$sxjAHRr%2JEDws8Dc%MkE3WOXjxG+amkKq)T@j+)RCuD)#!2<<&nO z3;SAAAFNhe)_XH)L3)iV{d1Sc zwbZ=xXnf%Jug7L9f)K!+7rJ3{OW{>X3ATI>4tscM>HS%E?zJ@d5ghu%ql+y?-%5&e z0o&o|pf3b+cvsO@2_CJ)Ocy2C;d4g+R${an7EWH7RA{#t*uCOSAtEVt*FoYZ`+FQ z7TkZ=RxINE*|uT_@9(u04=hTA&hIGdxhw9bQ|(0+PcX?;6Bc38Wv9=!Wpfn0JQVkE z?~d9M?D(cidpbu}poV<9gDx)t3YUk`ZIw-54H~%<6fO@D`@B1f10IUA!%1+^yl-;* zYT}CB+j@#ZFB1R6y#Fi`&oV|K4pR`IE2SR z%esnaZ$#Ry;NV*2+ZI*3U(PzlU*!m;#g29ro52x&2^?JK_gg-4VjtfIGgS__Bwjkx zDTcOBbN871;SaqmHfL|UijORtyPLKLUF|=ja!89kCY3`y#`D%GZ??=Y^4Ekq+`_>) zJZ1{(CL(;GSsidVqTZOSfltbhtD|YgotUA0HxUbt@WJ5Via7GjoD~bik|b3I4)gF> zU#GnJ;+y5G7Z2=d)hw}_IL)#2-CsO7IxeI+CQFqAn$7Mi8iFHynQqnMx1Ky7?3-}bo~^@U z(jbGay;TaHYvSR2SCN3SCbaHpVbqdg-v#p_Cpc5cxwWeZET)z4LW$36)!M`Xx}=9T zE(&i8i>SO);duqygr0(|z9?(bYqzvV>uGgwUv5oGS*j( z4&bDImJB^fYN57Wmz}XJm2+5ckyIpo+i5LRR3DMYS8E4tBdYjfSSIxmLwzxNe(EFE z`Xb)gm^f8++fLC8r@I=(hiBLsA#B}@e%darNBraFOJK;W`pNrw~6VFEAdVT}MNtCtJ8lXL|>i+ik%|Yur6b1)Ma%0|Q!2IHhU!i|k`J>u& z0ZPOcS6tJ_ER*X%kz8B}PM<3SnjY8Eg*O{ox(aM)S~<7wL$xV%(w8}+Z@Ba>fM$du z*2CK~ESx?w{oUUwl%6yFomNidDQVk&Y*O2n#1^B#2<;hL$q(y;^M7&rKH`A>TsI>@ z8Mf0D6Da}$;PY6MwX216Z={$Rg7j8)5l|j!pGa|=`R>tTGx@M=w=aio&S-J2n#X_z z?MHB8o$p-(+Z-&m6Y8K~NVJG3WxLob+&Ef&ojdmPMYp6#ap_mRlA3urt@`u}zJF1j zZU?!zl=Wykr5y4Wi}ctEvN0vH%WNAiX;UnTo(4(o)OD^blz9_u#OanWWhk!FKZ`qu z=kT2BT*kNf!riXj1-P^xz<-YsZP@8jVd(_2M!mVR=I{@Y#EEa;tCeqtUu(I6dlRkm z9b+}h`(3lvTq@EFCy$a+GFJG9+8W_sbV$0^mPqY^bmB7YfefAJUsRehW_~!j}IBm5W?bK&!nNu=pk?lydF@A;{Le1#uhQ_~W zU3%|LHK|lUR;-WQ|9A-fw?@|w8cgQ#VjuQRsi8;erJW+A1{Rx$lp47Tj29l&QCv2| zf4oTk0*smb#(mQu&o ze;XoXHTu~6Y~qnU`@goh+vLgGk|{|s{&0Ip*DKcfNnfr=-}%4x#lLN#G^|Yk$T-}j z4#>|ZCfUof-v7{d|LbMl|H@8sjM+Gt?2iAdquH3_Z-R>K2)S<6=LfgUS2q9YFqKV} zHOV$+7_R=!@GX!N%MSf5uI8d*1hxj(r)YlO@b1oCfqVC8J2))G@Iy(lJ5H264= z=Pmlf*AAjYeaP=OP1LNfL}0fvr@j(m*)vUBwC*}ys#S};r%!=jeaSb&@y@pB&yW?Q+R^#U1K91VZ5YKhfRch)rLwGd8 z!gBu%?JT8r?NOZ`Ma zEuIdCqC3e=N6bRHaEpO{PKM5sq=@$rDOb?ltQ1$C$t4X;ftsXR{1@8b-ye8LQ=*F z@eyU+>=$UK9c%xH9aQF4sUubn^|col)8YjpqM5Q#x4pCek`&%2;ma@5GJ0!_>T`M* zOS?F&4|e%Dlpnn&i7$b`!aRBF5hoIw!xV$##ElV1W8*~Pc%)O~#LY2i>;jbJ8FI4w z%P7P0?8B`kSHuag7U0|xC)!OydLT|rord&8oag{EnXbeMk6w^)9};*Jd~%kO{c_pc zcnv_-jsEX27My>^iOtbSm4)IdB|0vgKMVzZ7ixp^`o#0b<40Cju@)?|P*iFOj*Plp zdu>=MrHd9{_E22KftENy3y&B6R8MnVXH&1)BDp8-b(fMBs~oSjyI_I)5yd8bc?gx` z%#f#sb>qd%Rwy9bDO=GZUfe{!r5j4xqrDG%j+~IaT=){TWND6AtzD*J(4aLKCxbCR z7?-`dush-UwyxIp#m9>d;0WIe4!kiJ+w0Yi&`Qs%O|*(S2Z|RcbL$j6@a6S5zMO#F z7k#kRBC(NWV-{(aXty@6&ttD)4r*Eab_MUagTlAp=k^(L+9_@TA0*=~JsjnR99$&c zQ?vWv@C8TDY!!Pfe_+SMW;7raFJhz+zvkmhbp}uC1XQjtig^1tq!5%f#6aUc9$TeYaSg zL|Kb(f>!oc*vqGH@)dq!<%md_-xdrb!B7|?_J0%S5q)uw)@-~^6J|h1drd{ZT}}}7 z!D&iK5Ea^^M27tp%(r9IuXhL$5%?Elm8=0>$ra0DAFE)mI;RdOcw*2bonS31yz5h>*3O8t~I$JVV zR98^!YOj<@qivvGlzcNBQ@L}Ba~noiCpkx)Z91&DMw|wtrICKW)A{=w$;lsog(#l21(h+hTO&-Jv23xvPAvZfU%v%s z@{XPqA?%IEP&zvlu{Eh3-aLG^P9$_jv)J4&NHe(a%ltI-zq_|QTc^#OqxLn4Eq`d@ z&uXLbB5J5QeDxaAO8Ea(;$}CzT3IG-t+wsV)9v54i+1^3B63nKBka3lVIn7|^m9zG zajocg0nVZ&KS#a;ACPg*~Tk zIhCa(%*Rw{N!+ga%QDY z4pyjswp16$Bs38MyAQ}V%b3KHYA(h5s_mMimf~%DhU4=B?RvL?l6y?=dzS_0?{Jpk3 zA9BnmJmJB3tuN)`f9BvcTBo;%zNi(|hbY};!~S;7p4xM==6yeCy3VOvdgFIxD!M{f z{U-#+e-NYD$NEatav7ZVXw~%tb(jA-y?YyQa+ivw-)}#NljKal(hkqOQLiDY07UH= zIqDD3W4V%5QEGGH>xo|}&S4phJiRk={-`~DiRwSPVaG{}j_V3z)M~>!<6YZ`1jP;S zp<@ZDz23}0#fmr#J(y|>7zZ!D^WlME&xKI({kH2~57_e^s=&0ymTE)MS$zE!{7(}R ztZ$v1MG7**?jF;8{i`X1_ZLWcI}K%ZU(dYJs^U&cu)foCw1b*@>~hv5EH^i7;Y+QpApe0rg>JaXG1}vTIiKt!jzG_!mV-~pR6R=`SJQv6MJXKkz=WEuJN@;gwm15{dm@mR4J-n0L=V&Lm~ABe{>N`2YYax#!xbh$O(50RXh zR`x6G(L@8HJGXMGE!Tn_6&m#a^kCDBezPH0) zBx~cn^`^bMPw%~=E@ZWH47;-$WxjoE)sVIuYiK`12tp)qIxF6@3Te+wdQH|SyXhnZ z=7ep&{ei75Uu~>FO!8-?en5H4`t+GjkL3@U-qk9$H~b)^1P^!h;rSKPC%-g zLiC-016Btyc>>;|*VhTM19XFn921qXrY0A}^oiDXSooK&7`%#%|8eC(uQMFKdaSqc zb$wy^H$JPMFG+WmOHfOj3z|zFiNADq!tM=gtu84$D7{N?vG8_Mnl(iRVU&Gi@w%wZ zWQ)F=GBqfdT|OK#>PNTO%x<2Hy=FW(+|j!7-z>Wk?EQvEK76|t{jC0^&&AaEl5qY8 zi)r0ta=N{8Nn6(XEP4KRV7W^BSWa7g|8Yt5<&lHFto`gL6tBqe)C4uiZ7hF#t50wu zaEhW>s$SMkoO8{t5t;AnE48f0fz2$FUeko~P-Tc8wlC?vFCu-(dNn{XCOfrO`8CZ-<-OeD=Pesp;xY zNBdfT=ur$5M~Fz6)pSEtpQ|mbl!`aSNtCrT);Z1(TT-{#;lVGg9Nlitp9SHgz~BNA zK~I8C`XBmktd(ItC~lxA*Lr{T!>>zvTPa&^iux>j5*$4F{;gZ|y?3X-yr=3q4H1FPU+!Oo_19@s*>y}8S^q$}-1Q|d1#Ef`R za@aU4$26UCEY8RK=!-k8t(48TgvV?wu>O8xunfGd&AW9Sj^w!NQ>-_KH&+OO1{sm` zDMNV8!7mc^jn%H(qW>J__wX8bw2qtVyx?%ts~*}DBXw0+U#IMPT;$lCXW4pCt~UAV zFH?s%2S*MxYQ(^;$E#gki646LH@SSZwxdqT=kmR9PA+qa6m7lK>yEfF7bY7Dj$A0a zx9zEfvx}D6gF|23jlCo6=fPyt!NFzRGIb}%g;(Sk8 zulLp+ahn{^z(G%)P%~-d#E{-}c727EFA5W|@*HC}=-K5JBbLV3uH~v*@X0hA9 zYRYve_byBP;=v0{My$@&e>#T<6qp&ah`K_l7yj2ht?LrPqZ({E+HEk@z~_g!x%dPM zjr;y`9aD|S)003!m$La2?u*j`O_+OMGw!l2pK`n#ajC9aRyEM6JHoU8;R9(nQ`bMl zjiopO9=ia}6D4*oz@szW%%+ZaM3y)u!ZPWhHh2B<)c0q<(*3w;z{3c>IUfH|^o>J@ zYyt=0rhBz{ZY^``p?vu~9M5-P_U}RA^pM|J`^L+i-T0$c^=l#cWa~q*k7XTGv{Bvl zYUS^mmMnv}`d^}qH_9~EDa{5y9^UekBc4SCAg4Ge{ZmB4m5QThI6gXuEHXbmzOkf( zPnL7203XQWz6Ve3DlNqC($=T!?72{BVRZWhRz|U-EdyWWn7U(zsteqbKWb-~3(NLM z^Z0^xE#2$8kHeNx|8$lizfSQQT4(b>hdMk0;n zipwbm^+#ef%9`Z+`7z*RCw}MRS@%$ZLRrDd7oB0a`H#d&a9TEjg8{f={r3k*;HItye{;m1TLXJr8Q;`sG>AXIr^XXDrdwsGooi zto}q`TkfTuYZdgwT=wya7R@V7YP9T4``*zg!w>=c)O{wB6R-yU^O4r=Qyw$QBAgdYsC9pM(wVfkX`F#Fv^oEtp&7 z=!IP^cy`Xm2T%g`>zjl@Rd}hA-*oq-D6Wl5mbNQbdmT7vGYlb327ZPC4hH-(^GnY4K9V0jF`9azo569L zGQOIt?Mj+8I#Iu){k9(=LtlYw&$1(^SM+kY&XKob{&FQa?D|`+*6vTXJ!u>|xHwAS zN8E_khKHaOKy5jpeu(M}3QbgZQu<=Vu?mz(L@cr*^BT?w8Af0jHg8QjT{b zcm>pnN1)*DIm^B01)7>2hFT|Ar*|Tj9HZZ9!^P2gv426+sY;N+Wp`pvwN-A!)}+~0}ci#^y2<^qVFm6qU%aLx78w!v+3bm(Q_sIN&RSvli0RWvFM8= z(}i~;WhEru*Xyj{yE@3e+RUY@MAe~Rz7t-n5Oj_2MdT_tcHZ|Qc9l}jJ~NRNIHPq!j<`6yEg` z^XnA&G&!z6{iHaV2YoV#L*L@!EG{;!QJkb8{VOXLFN0AHjP8~XF|*eGmSzYRH;4{9 zV1tJ16(`D+qI3zt?hvU?<0+deE_K-6R30uP9@(%u>y@P{;oj9~R2|^y&Pg-lvfbl> zHeD9O0PPbUKi5+h4KnM^bo$IvIZYyPEiBd4ByJza1OZ`vOhz>{J&irl(9ieHLfu%< zaFR)kCbMpCO9D7KLVj93G4B<-TJjVKGB%pTNpQMj3R0H_*Tx-kE_nLcC|%a)hOze9 z6_cpHPH`^%07ZG&@u>5!fBZFRWQ4V~Z$NPZrCt5oP5x+9jHkdnpU1$I{bjK?8`b$W zuafXf`(R6~UN4-~*DR9PDZy5Yco~GpdNe9c&$*fc&BEgcWL7kbDtnPem_;I)nj_tf zG|DV4tcT+bGK$S)P3iq9!t_ZI?Kq6}uCPR)jX5D9=hc_9s84cAAo=ds)QvW5|!lDgrh`%cfa1Yvuf<{DZo4X64o;!4JEFLLW9a9rn%r z`If(QEkoI%A{u2aL&3q0O^nMC?zwv^-(jE)(B;r`GdQUC`r~O*sg=yvv{O%?wV@MX zl3u6#hDmRbWjTz-Zf&u?&2#VGjW6hm28G%TzRx9OCRxi*jfEyzqs+IBng2FliyVBr zKt@}wq@x}BUJtxt#WpPGk*{`=G>2Y;j80CnzeSbp8aHCODn+WMOEcZfB|0Q4j#&_3 zY$KkjY;Lh=7lu%pNH-t%sZ)aPQ>jBNRV&%vG`@heNM{h;ddIkRRN%hnItM(4|;6${oMSiia2>*{(@vobytgD|f*F|%O- zm#vUbB%{%pxh#T%-Un8Fk-;%18tzVSduekS@oXBL8VR-hw4I(x(&rRDbkPkUJJi~$ z5W32NJGuDMXWlcR8ResS_YqP<2f?s+IW#0A5Y8V(`{U!>Yr{)_mMTz7I!i8FwB|B zQX2EFzEC#pbr&}eW6^!w-Kg$SEw8b-Ke&Dj_7PlkW87SJ7yg*b_0Nu(9=MARM^NAc z3UGN4d3{8&5|%Q26%i+~>Pp{3Y-9m#gKoKir8Q^vt+Te6a?d<%Q0=5X4U?+`Cl68Z zC_ZQt=wUQq=Np@0C{pL#oLF|z=2MQ1&UyLN&3BLm9l5_q@ererVwTOM#h4E=*)*Vq zyUgMw%9^yLz8Xg|cK3pc8Y{S-H|c9c+ZD1&Tim6Y1mrZUM}N7l3xDjXt$3;in7a4w z_R6BQg{!B`*H!xXwN4DF%M>qdv1v$dc=SW9yLVM#>dP$pgr!Bm^jj1;eFn+7(mIOu zR)p_>Tz1~E>Icv4oKdO1t|W$8<||-5oLd~cwRObESIfE2eVw)W}=Jp1@QLv*=4UaqSrPc5A$aJ=Qyxt*C?x+K+8# zG=F%m=4B|z9WoTuyU^OEG;@EtwSZ4y;e|b;zWHKM(su&Mio6aSE zDQwa#!@$DbuKkN~_D;V2)DLxPgGQSeRJHZSidjG5vl!a^5$rw=B^e^d7{jL)sa6Na zigaX-9=ZND>0W919xKp-U@a6=v-pb?F9($s`*D1nLSG1^x0Q3I3%C$z6S*>wb5ZK* zQO+(IPK4?RlwLfnu;_UbC*cV9yH29NB8rHVljx5?eb-Q;@$MxJeMi(*wN)KaH*;nq z6fxs!%9Evue~$Y^!dS4=vE+O#0#%#({txOe+J7(Ih5dss~iLMCHT zQRy_oL*~KgCBhWrSqZ29bJ{c+{#dUZ-kP_ln0i|A%jQy4i+Eym6utxFi#tBpSa#@_ z;lAgmv+o(?@p-$-Ma4_-S84{1V&M31!db@g$GU>HnRbKZ`c+03lfFmO*Q?HMNAqf~ zn!DiZR!^s@uheq~fw-8#r(9jMk2~V+!6M>)GVE=uPWt7xb%iSG?`l%kra`cVQKL{j0MHZJ$JI0cKZvl^Q^^cTA`U#KoI1ti*Fr>c2 z=pbUx9}+D{w1RdRf4IKub*8P!vGI%a^1 zJ{RDQnSV}HeJeA>@}0ltotyn?R65+K)-=_5)KfcDb^szQhrz+PHoHx~qA%Z+P1Y;H zsD~Q4E-De>hLV~)?ks6unfJ_*=eh$zjohFxEOotkWb$|4txfZ~NXwF9`bA95>3$dD zoHO>6f^`#0oKZxt>{(pJr;AE);d=>0)Xz!P_N4Q*8JiR+RYUiQiV@S2$o9pJc{lar+(UNS_3v11}-gM-O=Igv%;&4xs zjd5z4=aWO|&6Oe!Y%%$FYc6!`oA2HqY1n9$5ANA3cL$H{Vc)s-b${F!!2QZzt*3OY zRn@Znca1*$)TZ}izxplgAnx;lKC;iH>bJWE=d^u*mkc_iRNnTDoQf@|d2aI=ts{(_fwRKK41q5_UJE+S?yG+>rQb^X=)ayZz@sZ;8lFQ>7=in zvoTcEy@o!Ion>bya@|x$?hLx6l*yV;{lgkzCHr<6Rzj#^1?!2ny&bXp>E6qCt{q5e| zaL)EgZLq;!Pjgfl5*}K~tBlBZNpW&8w7X~b)5~v)Pi>)-Cw;P`qxNy$rDr5%RIWg3 Txoif!hJt_g2H~0`%ccJZOtUxI diff --git a/package.json b/package.json index 70c25964..ce4c3e68 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "web" ], "dependencies": { - "jazz-nodejs": "^0.7.34", + "jazz-nodejs": "0.7.35-unique.2", "react-icons": "^5.3.0" }, "devDependencies": { diff --git a/web/components/routes/topics/detail/TopicDetailRoute.tsx b/web/components/routes/topics/detail/TopicDetailRoute.tsx index 6843b7c5..e4faf368 100644 --- a/web/components/routes/topics/detail/TopicDetailRoute.tsx +++ b/web/components/routes/topics/detail/TopicDetailRoute.tsx @@ -1,6 +1,6 @@ "use client" -import React from "react" +import React, { useRef } from "react" import { TopicDetailHeader } from "./Header" import { TopicSections } from "./partials/topic-sections" import { useLinkNavigation } from "./use-link-navigation" @@ -16,8 +16,10 @@ export const openPopoverForIdAtom = atom(null) export function TopicDetailRoute({ topicName }: TopicDetailRouteProps) { const { me } = useAccount({ root: { personalLinks: [] } }) - const { topic, allLinks } = useTopicData(topicName) - const { activeIndex, setActiveIndex, containerRef, linkRefs } = useLinkNavigation(allLinks) + const { topic } = useTopicData(topicName, me) + // const { activeIndex, setActiveIndex, containerRef, linkRefs } = useLinkNavigation(allLinks) + const linksRefDummy = useRef<(HTMLLIElement | null)[]>([]) + const containerRefDummy = useRef(null) if (!topic || !me) { return null @@ -29,10 +31,10 @@ export function TopicDetailRoute({ topicName }: TopicDetailRouteProps) { {}} + linkRefs={linksRefDummy} + containerRef={containerRefDummy} me={me} personalLinks={me.root.personalLinks} /> diff --git a/web/components/routes/topics/detail/partials/section.tsx b/web/components/routes/topics/detail/partials/section.tsx index 4a711d84..23dbc865 100644 --- a/web/components/routes/topics/detail/partials/section.tsx +++ b/web/components/routes/topics/detail/partials/section.tsx @@ -1,6 +1,8 @@ -import React from "react" +import React, { useCallback, useEffect, useMemo, useRef, useState } from "react" import { LinkItem } from "./link-item" import { LaAccount, PersonalLinkLists, Section as SectionSchema, Topic, UserRoot } from "@/lib/schema" +import { Skeleton } from "@/components/ui/skeleton" +import { Loader2 } from "lucide-react" interface SectionProps { topic: Topic @@ -27,6 +29,12 @@ export function Section({ me, personalLinks }: SectionProps) { + const [nLinksToLoad, setNLinksToLoad] = useState(10); + + const linksToLoad = useMemo(() => { + return section.links?.slice(0, nLinksToLoad) + }, [section.links, nLinksToLoad]) + return (
@@ -35,9 +43,9 @@ export function Section({
- {section.links?.map( + {linksToLoad?.map( (link, index) => - link?.url && ( + link?.url ? ( + ) : ( + ) )} + {section.links?.length && section.links?.length > nLinksToLoad && ( + setNLinksToLoad(n => n + 10)} /> + )}
) } + +const LoadMoreSpinner = ({ onLoadMore }: { onLoadMore: () => void }) => { + const spinnerRef = useRef(null) + + const handleIntersection = useCallback( + (entries: IntersectionObserverEntry[]) => { + const [entry] = entries + if (entry.isIntersecting) { + onLoadMore() + } + }, + [onLoadMore] + ) + + useEffect(() => { + const observer = new IntersectionObserver(handleIntersection, { + root: null, + rootMargin: "0px", + threshold: 1.0, + }) + + if (spinnerRef.current) { + observer.observe(spinnerRef.current) + } + + return () => { + if (spinnerRef.current) { + observer.unobserve(spinnerRef.current) + } + } + }, [handleIntersection]) + + return ( +
+ +
+ ) +} diff --git a/web/hooks/use-topic-data.ts b/web/hooks/use-topic-data.ts index 80b8efd9..bfdc10f2 100644 --- a/web/hooks/use-topic-data.ts +++ b/web/hooks/use-topic-data.ts @@ -1,29 +1,15 @@ import { useMemo } from "react" import { useCoState } from "@/lib/providers/jazz-provider" import { PublicGlobalGroup } from "@/lib/schema/master/public-group" -import { ID } from "jazz-tools" -import { Link } from "@/lib/schema" +import { Account, ID } from "jazz-tools" +import { Link, Topic } from "@/lib/schema" const GLOBAL_GROUP_ID = process.env.NEXT_PUBLIC_JAZZ_GLOBAL_GROUP as ID -export function useTopicData(topicName: string) { - const group = useCoState(PublicGlobalGroup, GLOBAL_GROUP_ID, { - root: { topics: [] } - }) +export function useTopicData(topicName: string, me: Account | undefined) { + const topicID = useMemo(() => me && Topic.findUnique({topicName}, GLOBAL_GROUP_ID, me), [topicName, me]) - // const topic = useCoState(Topic, "co_zS3TH4Lkj5MK9GEehinxhjjNTxB" as ID, {}) - const topic = useMemo( - () => group?.root.topics.find(topic => topic?.name === topicName), - [group?.root.topics, topicName] - ) + const topic = useCoState(Topic, topicID, {latestGlobalGuide: {sections: [{links: []}]}}) - const allLinks = useMemo(() => { - if (!topic?.latestGlobalGuide?.sections) return [] - - return topic.latestGlobalGuide.sections.flatMap( - section => section?.links?.filter((link): link is Link => !!link?.url) ?? [] - ) - }, [topic?.latestGlobalGuide?.sections]) - - return { topic, allLinks } + return { topic } } diff --git a/web/lib/schema/index.ts b/web/lib/schema/index.ts index 0528647f..c0a29f54 100644 --- a/web/lib/schema/index.ts +++ b/web/lib/schema/index.ts @@ -39,6 +39,8 @@ export class LaAccount extends Account { // so just do default profile create provided by jazz-tools super.migrate(creationProps) + console.log("In migration", this._refs.root, creationProps) + if (!this._refs.root && creationProps) { this.root = UserRoot.create( { diff --git a/web/package.json b/web/package.json index 1a786c21..3b6c7811 100644 --- a/web/package.json +++ b/web/package.json @@ -67,9 +67,9 @@ "cmdk": "^1.0.0", "date-fns": "^3.6.0", "framer-motion": "^11.3.31", - "jazz-react": "0.7.35-new-auth.1", + "jazz-react": "0.7.35-unique.2", "jazz-react-auth-clerk": "0.7.33-new-auth.1", - "jazz-tools": "0.7.35-new-auth.0", + "jazz-tools": "0.7.35-unique.2", "jotai": "^2.9.3", "lowlight": "^3.1.0", "lucide-react": "^0.429.0",