From 05c71ed4e50c258450705f18e6b12ea0cd0cebb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20Jos=C3=A9=20Pereira?= Date: Mon, 12 Aug 2024 10:33:29 -0700 Subject: [PATCH] core: frontend: Add sentry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Patrick José Pereira --- core/frontend/bun.lockb | Bin 350876 -> 354839 bytes core/frontend/package.json | 1 + core/frontend/src/main.ts | 24 +++ core/frontend/vite.config.js | 302 ++++++++++++++++++----------------- 4 files changed, 178 insertions(+), 149 deletions(-) diff --git a/core/frontend/bun.lockb b/core/frontend/bun.lockb index 6e157fedb1a095cec1864572ad7515c29970f5fc..62705370eb24a448b0ddae7cbd7c507d0ea4629f 100755 GIT binary patch delta 69566 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%0D*cljbgeZGF?6Y?hn?~*GgNRKMOiX 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 delta 67268 zcmeFacX(9QyY@dbVIZ51D2PY^Q8Z{!ECdKlXo9pTf(R(V00~SWp@gbJf(1nd%T~60 z73^qG5JW{(u%oD8FQ_0kG$<$*6czk^?zPrnCa>?g&Ut^=`Omp>&%K`KUVX1Ndy<{t z-6L*)?1&rMrvJ9R>yDRmTkKo4Bl5`3mrrGj<8U+zg~}#R89i}Keke36Z_3yb;yhI?6snDXC|nax zB^M8#)viOavUu3(_c$I_-Nw7aad)^e@iXCCaG-c65x9)N5%6TV0Xzz>2N%SP$7D>K z6#699CV0zl89u)B49ZrqGht=(99##kkD+Q!Djr*?>K;Wd((A+W&&VG&DR1=n(6vNX z?w7&JrwOchwcxsN5v6b)NtXFwE3VsSE zVOd*P)k?)sZGNO^RexMwNk+khysCDKN41CU7w0$Y=Lh(z8R*jWvk$06c|nd z)wDOPiewyT?Q{K#l;$1NTia1PX=2IL(Iq9J-?0_DIInnOd`u|xxU;8E%byxAm=)^9 z^dh6O!G5=D%}d{*M!Ib6@TzgsrYTJ*bUe0t>quC=dwUz(>$_p4F3F#eKYD5?v;$kE zjlmw9H#NT|@s(fah)w_6NmehJKDMo<#Rg|P|1o6`;!vZOI^jmgb75W1aeg@3xb*Fl zZ6gPqVykmEtWh;~;v`eurtNGoGhhu4Mxj~}Ds=vWiBmH2^G1&wb*fF*lk|$$7S=U< zk^EKdhhcTYJ#cL}UOX;;N_=YflBwgS|OdttS^B)@37W@&<_pJ6kel{aBR zyku(VbK=z_-fRBWX!FwNT(7*6X^U&x!483EuvMK^uwpNR)%$_73ybngCgn{XSBBjf z|8%FXBtLcDs!nzc$4fHelc;5{EZfWnVdc9Arg?43ZX-}1$Mvw9@k(bKAwDT%O8(gV znen2$vH2N=CBA=G_2#9Q#%yt)X4{dR+tpTY5Uk$s1FM={VC6P-#>9-0X+@zD(y7>C zu-1(JusZ9E9yY%#y4(B?U@P6-u$ui>7wbO?yJ;v?T9$~|@l4xae~?g9tF0?wW-r^E zPhe&ArsHpjr+#@8)>L~KX7-gWg0(bW0;__(``BT18mu*-C9El18$KeG!d~G&SEKQ; z<`k#;HGnlr-tT9V6%xcBMRhfz_vCE7zg0YIoU%w)DJ`S;eEr$ES|<_j=7s&vvmA+wZ%BY^(=i zUDAm~W5>n|LZMCADrG&aQj5prO_`E6E3|8*EoBF+w%-P;jnj(blU4T|;%n;lqW_dG zu}c=^jc5Ogmy(GU3QHyyvj~K`jj{!eirbZM47xI$G=41cr-WjoZGm|+;}c7WzYAMa zGq1QLK9W;MI|@=oTfs`Vn}trD-=1YiTo3=@a0ITytSI|AY$JXRE5b*PpM@Lv(`vOU z{cEgE@-(ch?}xS8{b!sVTZ>$Z+2d_aPZ!!Im0+7O1nUa)aC|PTzCGR9wVnM6>Ew^I zuj_R;HtRrXSsD>Eh<~(>vX5ZR&k|UjdyTWFX|W^W)cm4Jv*5K1Z8fPnmqKk`iLD_a zU7dNKv-3%>zB&(9UmjZCN-`#nDl83!?wMluXm^+@`-+~gNyH9QZH=c+IlaAVd?L0A zJe`bG;FO6ICU8wc1ts=ek~lk6J^c)wW@qE*ad{JHYbfbdRLZd^dxp*M|8{yjFx}R? zE6r95)8J#^6R3!W-Pj2eO`jHDY~xKV9<6ODG-FEMBz09jex)08iM>>>z-r)=aH+Z` zUR*FCK6c#H;Y6&3T~LydKXdAoygIZ09=-)}4rZMMMIkPT?LZL6XGO9qfU)`;WjDcL#oTi$-+bgpyFf;!vnHb|1JI+!j`~ZgBDH zV7J6R66YFmA=D6wt`>6s`x{9*zwW@T@`NOxE6ebJ~-r;Oq&{~Wv?t}izLEz z53{hqIjd}s{0SeA{V}Wp+CE|zrxaN6-o#%EPPFtnY!!SjtOEZ7>jIqut0DJL&T;TG zxGiI)EQf#!NOwXAPRIVF+|JnzuoCWD8w#BY--LY`xGw>_@2lv}_16{g%u}{O_68jYRGVEjEocrnj(+Ql2LoG;wPk=vOX88$N{&}!k zelD!|Kim}xwS!N^ZUNVYRgpLF>k?JmXS?_{SUtBC&VW0jtD+OJ)g!OGM*nvp&<96r zxDgRlU@K?;b+66%BltM{55sEt4X{RW0jvzaztgrnhOGuPfffJTdu)$A2Pd`x1)c8 zHpEaUblX-tSg#J-Su<+PN7gYWe>5Mw@nm-(WO)@AVqH5ap6Wg-Ju*Sq! zAKOcEK6)eUl5zPHCUB6Ql0SOfM9xifw%cW>%Xa^o!`qhT?XcysI-9+*=^NME` zJHzpDaDAO=8ahV=Rzcr?X_woNU@a#vIer*cdv167wXot}0+UhMc*jFvrRxc+z*AtY zs?A}=uj%yPsPJK0WN%i5N%h}iYHB&Ha1?o^?PiFd0Ap3O6*V9BY5}| z8&6`xxg39O{Ku1#MnEH2Ey^#M5HFs})&JT0n>+pxRz(?N8eyR=&i|m}$KcW?L>QBw zKPe+#61w6?TjPcZDrnD7cI+3HWX#Gdnh@ef;-oz8s_nq9YyKXrF%chIJaI~XDD*nE zDxTPq635K5+}KIn5PU1urkj*8!9Ouvr_I^FTl;C!tHL|5)xat7qA7U=q0spJS<}^k zYyR*H8>f|)6Rja~$)C2k#2v20*>KFn(Nm|yi}RNfPt}_-ESyYGpS|h*n_s2 zzrxzcby&`zj56YVZU0j>A?3AFWAz4cWmsRDn!bTWLD15%DI8mGSwt!=~%G2N|Cl&o3D>vB>P@EAi{f z-U%!I33V(#OuClXW9r%puY%RXH{myD16Vz{vtBslU(w{G(qj*^Eq=IxEofZ*uvz!F z5J6|Xm2eA~bcS0TZY!J$OaHc^t@sRdwe+bY!e-TY2(E`cpUI`3ON_Ny*s72@!A_b~ z8mbyWtKHOiamjo#Xhp;lSgT4d1*qolHVK;+W>&X@a^z9AC&uJYo|ZQu6nYL_mm+bB z+|$(R+&36KmC52g;rtiS&%8kyx2UbRpq}gj+zqzf*#jq|-sD*9G zC|H+bsAD#OlKiQfB^gD!6;eTbUGooN4bt1lPxiIsf8+oH4^m^buvsfxkqNN6HqpYG z*s92%$Jh$y&CJi>R(t*)XWvA6^~@E=t+}}A#+qxcZhcYx@EpIQeRlX0KRq)$e4HQW z{bj$L_Xd7NX0|sV8VYqHNz`9`RtG=cAv?MjPuHNRX1H@W>hJ0h^G4IZorzN2U)>?o zD|Z$Nu)e|?f|lY>?v&|e)v!Bqs;uZNtge1hr>yWgKi(@dpl%?clhbq+2j<@&h~~eR(hg@{K=V_;U#_rN;^NjYj!yB<6W~O`|J73 zyT-z2_!YQH{Pb?w;kAC8_g#KD?|u9V-e2|8yJvgN7*2g{A#~ALzr1^PbR)iA{_d_> zUTv=ZIjGhBcB?w1VyMOuzg<>lc$Ht?Biq}9ud7K;i^Ki>^q$$_>->1nZ0|RgmeWz_ z;mpkFN$lqIY3D3&3?XG{>h3*?bzve;uRcT3ws{PNz};W2&%?|1p>XJvaIGQhi=)YREK zis3uT#BRrRxD-pZPVuF!!cyy^rqq<9>@})pv}`P0d27vbTGVKdVW}NqpFAUf9OW1G zjd?v;qWT*r7d(7}U(q)^e2kyoFWbB3=tCEuA-xexjpMSn&x{;A+TYbL7VhS!_sn5*^dv*4tMg)2WCg7A7{$Q%<^6(bc$)>>fV`=-;eVP&y9JVTHDJ;ySrva zCt>ySi_Xmozu>12$`04?}NK zv37T;b|T}#Oo<{w-EoKg)dMoUhq2tnV*Y=PrBRC3J2QNuA0NtSJITgR(drdFDnt2X z49*JY`02y4y&JHV8!J@TOz&;19ITMf`1e}0O=yz`b*LsoZS(FWbe2h?3Ves9<-p_^bnw$J$PRzu$1lkCE~K~ZfYhS70_*Rk=UXgY3@Xh8IH8>_6st$3SB9lQ zZnY<|D9)A@{YEkU-R-lYZCKSh_$#_+g^T?15!ulPu{)`cy{`xjHYxUY$_#h(nc?<+JWoqgd0w{n29Y$$&D0I2`01mvy^fioP#1ij zzj|g`t3NP~0$50No zu1&~qN1n&|0-en-Vsf3T0i%%Jlw3 z>uD@q#;$A_8VDh?I$e#W;c7eUEi7AErK?5DG)m3R6Yk;1$1>O{M9UGW8Ebp7Gzf@6 z9a?5v%dGU?KrEZO-H=RgKGxp@ZZDQy)HGa*sKB9N7F~lC^NW^uP9;En)LN>Y(alyg z?C%}cAr(WH%u4rQsn*uohIOH_n1HDa3yloBMfdMPCCqGCO-L1>s`;5wkKSP`c&KwV z0=@i<{4DQ!Lav6)zmKtU{fv=WUhgxlpG()JLp6+^eoBZU6aSW~;v)VjPXsBP*xpOrxN1<|$&LlM4U$MS(Dgk>T)b^o$ z>~3r3Q}k}Eb5xf1BO%+0$%8T@vA%v`r3xo6duny}Oz+5kb_kPE zw@j};)}em)Zo;CO?#h0RMN-$N?I^_!{gIjBd_O)VJAA)i&ih`!g7@S7^pb3E!hpne z*qhZM6+=C5E=u$ptj^|el;NjO&GzCshpNTExdTf>#T7fj!3)#75T!N)ujrfy;4yhQL=w=dzYx?Okvcnhp@fq3P zg9B~bSzR+TBfkvvcg=`3X-%KjCVJva!c(z1F_iW3yUje_8;hlG=IGfwGr9z;v%i}I z{&>M5DgjaZ${V2Lp4?Zs8sa)Ox4K8a6b+O7=mV%e(Gwb9xm$VbbrmqSRS zn>BDyX81C{{IcxuQ+@^S-}&j6XM3%4?MiDe$xtliX;;A8u`~tQE?6hN!8*fVk(=c; z8=0uG2I~b_b|KK&vfQt@B0KsMzD{PX$+#%dY)$q!maX$@F6s&_4F|iGZo|@;<%GyN z^VmF_YpSg1d|5gpc$)~RozyogGa4Rc{H$F=2%U~4`hWq#@!)qX z)qxyXyL*qegS(np^JinJpG}SUfKYLDcI5Zbew+ERXpb>O^jGxA@@5gznC3(=k^?c8 zc1eye*0Hfd#=gT-p5Yd~#Yc3KU;UC+#Dq=4jp(HEUl39y%G2WCCJ z*e|~}JNg8^9-3>BKMMT9g)y()Si8S*a$;|ph1HfMO!+C~i>011Rd*I-MH+hJG3RPfsIwu5T;tMBiSiqVx^tyFJv$cAGy_O4V6 zmH`*B;*do5N4rg8plA*7N)#fNS%0E0Vwuxq^r*?&gLGytB*c+@Ojh(hLiQZJjZi18 zztP51=qIxhUqFaWO+$*IyAjI{B3_0~{eSG&8!UmnD~?{RiE)z!(Q z?^N469N7kCdW*3Bo+BHvx)YN@a(SkgI?W!L=&N{#@HD^8;+VGrpB)7nd0)90_V{?+%=56*2aAsD{zQFZxfG*JqaP9aE*q<+J=(e$fS4-rIy!3zlux zu)3G(l4;pJmyjAmu6dc>HCUP>tfe<~NOcnPn41 z%=QLt9GMxpqRd}@cPzRIXJ0eg2F%~a~%N~1J zJfc5i@ju?8mds_>G}Th2V!2`YwY4;`Xf3Ri}O*JEblr(uDx9P_p#b*E%j<&o0vqayJSXl zu-Ig2=rx1}n@Vmcq#{$|d46R3qFk2wir)zZ_b1y}xTk%=_&6 z#K6_=)8q!*%}gB5`h&3ew8iOpF`-k*k8O>!%WKYJeJalM$30ZrpIUmlS9D{dT^cJN zV(Ef$!lGS=-IN#;tH*Z;-{cpr;_!{{d}7qn<`Ze@`@3*n@AKi{P{n`o{Wc|RQ#Xe~ zXPUhBG7Y9<*`c6;zsgx=pYwKM^&+NOIU}ds;xB(B7A?NTj3<`ZF9~(@ci)~B*}BLt zToa2l3jF13V%}MSJsg^Q1ktHjbSQUxo+Xr}_|X$?l~0TKR6^X^d7*PP0^KBf*Dbbv zNJ}oujJ&wmU;bFkJM}+_y=L#KOm88UE(mMTs?6w4tZshBjI8MKw}nDu{ESyRS0m8F z&)C>Gm4LdMj_a8j@ox9q%!ozLx;+%iGiAL<=25dMbv zFS$3ne(Y3lR z#ws+c>%d3s&S*d7JcBhy{z&gNewz(3@5(ia&01U0TC8kU(42hsVR3LPt7#VOVUL;# zU78iWg%HzgOXq3?CioefI;TEHw!}17HL~q7zs<8TFXwU8gwuNxYw97Z?ONNPCV_V= zR_-C~geO9wd55f(SQj6%PFQDKV~5Wothk@?Y?gQUlk_67xIXhUy|Gw_%8Gpaq`&L= zn0MV%(#_#zHYfR~`6VuOV{|W};eOG&EU(}C%9*djy2Nz!=^H|!Nr@^%@5LHxQr3DV z6q;sYlo8T^;KcS+W^^}JslWUAEN{ZIl#=j!Utnnv*~$-iE>VLQ2~G5iUhZ7&d1a`C z4-hK035&S+FN8w#@pn!oz)ob#@mjoS*9hB*^RQTpZSG$Em-x$$gcY5MRicce-&aKa`#NKDhcYq1Vp z^XRWwW|l>Vyc!D4Hu2vf#OcX3;jGsP9;#;O^-#$7cQeQdOf=CWo9XRC(c@UQTeNz7 zfK}+Pc(!x3Ep)%R5Gx7IJd|JSH?&&lB40&lhF|nb=TrjrT27vw=@q}p_wk3K@4&Lz z40x;3c#gh?#oT+VbNFq)@Qqk>@7w$_jbHReR+~ok}ux1?@~&F)Z`> zKGNtTfB8F{EO>TC2=#u& zQvE2LuQty3)Nk`a%)9ebdxqtc+K9}^o1gm2an|2qD@MEc_&f1$i#+eg>Par zEbi8`lb`sRtv*{FyTe#4#j^K7p2q5HESlz3|2)x8+Vgv2oo@4^M=!%tC-9k$-Tiee zo1L-9fgkmF2YhbQ8HD%-C2CJ;_Uk&mc}UE!5QS3eTU{z z7ixuNdqC-yVyScNB;JmtCC_~9i{$?5x5vSZ4uSY9tIn~|o`9IW%m z$y~jZcm4|b-|p?=b>%dvYLS8y=*3tAZJZvNDX)dX{`j3;yiho7Mgb#rS%*{%+bU(c z!b$WZw^^$5TS#`e=*slM>YgajyAjJ4#I=aL7V!&zj(H7J!sg2ZI-1c|hSi@0wi{l@ z(kSIKKf|dJzp!*Z7E40E%;+Up_NKumLh5qc;saPJ#IDTTj5O`HpUNj<#nEc&j#}hH zeuraUEOJ;4zs;{PZvwx)p_c5J?frK@M_)2cCDqi?9Z@r3MxvX{Yd7nai4Sf63BP0s6_dZcYAs|Ua0 zf>BHyJ1XA8(!6e9u5K58)k&5)IYfWK;@2d&v$}v^0?Wo<)9e7RW7#XKX`9OLS!oV2 zRJkynn+D6PhhvfBjt+Lg-Y9+ztP5&AfAY`Vlsq~ptbzAOyxsA#4YLfK-ptn8^qO}C zmNcdXE!v1>CyAy^O@6ma8jD-E%t-&VU{`857JU(Ke{++nHNOKk*re4Sc^#HUuFa`_ zi^OnJ&riTo8_fP0eL$AkhQ1`^TEqB0vSlSJ+8>K6&Yh*Z3H3E==6CX$G8j?O?#G06 zYl7Ql{~@HBaBp!iH$eFnGux)UtR7di3YOQV7q;Qm7-PX7kQr@ytgcqk+$=9n$j(3A z5?F!7o$8V`X&;*mEL z28^*#HP8>#0@Obg0Yiaa{}rd8UjUTPg+Q2WzhY&0BM|#8eq~kz z7CFCI4G0|H>ilBGyUqD;r+ibBJDuY$Sg-#ME2DdX3c3&I_1|H|UuI&%L3)F5(^9qR z0p}7cO1ZNuv*JDI{9<+D!$4Je1nBkOVdcLD=whrhzq@P$42sNQrLVJuV9&JN%NZ@mTslZRx9jeSK=x65_%l-w_0Dn50 zGog8jmET_=987B%KE99q)s)7uI*#*&=|Fa4lO6l8d5INd<2CJJi!(2AIM~)O+`OA| zXMZs-v4ZR=hS@_*>FfmN^-mlQx*X1$pcpLW=Jh{ej}#}6PD#^U`u_)}6~Pkf(NfJh ziF|bRPj>m9;_@{dM2}#!HbL&|++ro`@9fGf*8tu$7zR51pIGS!IsKowCi)0;#TyxB z2~pgOTmrF#QO*|29^<&c`Ni^&b6g0kokcJ|p<>4qVa1#5xWxIVI(vGU*{Wf42@bs~ zvs{-tzgQW~arQs4^fIUacUV#91~)beHw+$a6h1Ot4Y<;!uguE#D*TeJ)?09(k=uLb zJNGq?ua(T}f5J*~9d9aTA*?-ivCBt%IQ9x>ixpg{3#SCDobdm`YVR7-Yv4caGG6cU z6D$8`oL!madNv#!c4YXlQiY%AO`~!ntUNc#`F~;M`I^(kioXSx>ka4sAFu|qOBhT$ zGJL$5bZ?W7%6Zr2SDD!&jtn=>tB(9JvWnjhE9R%p{#*vHe`3Y|%EjO5;)xaf+S!JK z5l!4uRN>tJe^{;gmV8wF9#~m^@A4JP|D*H&ESYpm+j(Z>trIKt8<98*qrJ7dT4`QV#VtXD}%ny?g#S|8sPlrIR8L7c~xem z*F!YKgPa~!ASF0(RJeHq^{5`Yp_e!u3~0&-k>?`kuFP_ca(=P;t-#r01;;tNGArH$ z=daB2Pr|RcJ_}YeFOBE`X#>WQ=&v%DfmjhQcRbJWe5Z@0Uk4u#uYpz2T3G%3G_3wu z?|6gbXJCFp&m~64^Rjq}mElXUGI$kMhFhHfEywRV{=o4^j<>=5gg)g>>AsNRSoYW0 zs?ax%D@_06sKB9uzjMNFn4i%1yeZ*Nu=IVfGWgZmzr#8#g%JscQef%T6xp%tD7NzP zoUZ2~$zNK_1!}{}pf0SJSiuIoDd7>$|4*z69PQ#ackwE-3Tol}Rk+j$iqMh>>hjib zJ@^clKrFqzvn#V)9i6{2YgO*y{9>i=>G(`o4ebr5X#DjhpqE%J&2hF^!GXMK@|+JV zqoIz6!K!esvq!>u{S&LeJale1h8}V8*T5Qop~ncQfTv)+DzjW0cvHomcf8TX6DzpM z`8UJL=N&m6tKj#XU76L8_wk$gr+{8!2_HCHEc-)Pu8$pWhn4XT$Dcd?((z81pHKyF zO25nbzjM3?<|njQ{jUf=I^kznUAo`df55tyQJSwF@OV@FnvQG1L{A?{>ilOo?f|R8U0{Af-JHKCtbBVp zyN|Q`IUeBr=af3fxiCMWAG`S&FM>>eW&BQ9pCGCnd1jw z8d4f6C%{i=g%k9+MA>WfR)uvk-GE;ec@9=jJn!OF<~sP_z%S_?-gK?E!bc39ovSa!tOV%aIq7R#>YI4aistL_{% zV7|76;)YuS$o$H9|aM6s^@bZ3iIv6-+6n&tfe6IQy5 zUAjYDTGdg>R)R~MEtY*LtcuKWw$jUA=6EiwmstMGU=8LgojuR-Rj^*AiGWxMu7;K1 zS{Feq|8=kmUg-Q{`LBl+|0ZYqP8UnR+1dZZqzh&o7jBlPL*ZR6qF4pp<7}}qy4Ts2 zS@D)RzgU-YB`p6c=QkXj*P1&Whv9w^w}!+kPOi)3bzQR)#-2{TJsK%l{j!ehV{BRiTK+ zt78RIc~g=)unuU4S7)rNV;Z@LVg-+OwpbZ8b9QA`y5`O=mfaGr4QDvNSQTmytKckH z7o-QQe0!F<2m@eca5k)$SS>o&*R>6w*D6I64OZ=Nl zlN>5&EfK^|I9>-U;|;KC{D$+t3G4Mwtn_a=y)w)7f%A*aXRWOSlt8au4zha#)x00j zUiZK96$`&)@LzuSqAvUQD;7IM|NV;P->+DbzG~6r`1dOo?ppo(6^q?m2Dx?opIE!% zzhAMG(L?H_f4^d}2eW^_V)^$g7Pb*hiGROh`S&Xph5@fKMua{S{reTmzhALb{%S>I zL$=07<*!!cm#rhlzhANFs}`NiD}S}39+ItfR^OVujW%2J3vIWhZ*NQOWQ5AA8worE$y@vyTCXXS=wW%*M-Kp)Y3jnIU|g7nWcl4hU6OO zN=wy88Y|b*Wt`J3ZL!pPv~kX{^uDFGV~lg2rR|p5 z=NsojOFJ#a3XF4+r9GBsqS>+EU>h}QllBhS!`*erL>vGIo;A0 zORZ-a=NwD#TWWi;an7@}-BSBYjB}x-ot9#k8s{QQdo1;uZJbLj?X#3K$2gZ+I%sJ~ zsd28fRK3htxt1QcRClg%7FgO~snKP|S!`*erL@b9bGoH1mRet7oO3L_Z>jB-#yQW@ zc1!K&8RtSvJ1xboGR{So_E_q5wQ(-Bw9it`eB)eZ>7b<{*BIwYOVzJ6R<5PTE!Dlw zI14Oou+(UQaTZ(JXen)>aZb0i#Zv3*jdPBr_bs)(!8qqx+HR@+jmEjq(oRdUn~Zaj zr9GB<`Np}_(mqQ$Hyh_NO9w3txy3kFTB^RtSh-+HR@+?Z&y#(oRdUCC0hP(jH5_mKx_$OZzP4++m!{ zEFH8o%zyxTU&x8)t!~4VD_+W1Pj7Hd;!%*EpwJ+G45oea1P*()*U$ zE;G(~mbP1Jf4^}qw6xPw>;dCkWNDA3UggHQ)Y3jnIm?Z6nWcl4hCFDTD=k%j$XL0S z9=B9?g>e>G+F+^CO5-fHw9!)9!^Sz?(iTgtR~hFVOYd81yV^MCS=w%?{UgS?(9%vz zu{FlI$kHB5y&g5rrIz+t%6ZH@wP4Ous4F%ktHXl*R&Dz< z>WF8O)eD01XH44dQtLdMtd0nVJ!{m3>rvNNQAY;eb4HDAKrMPMIc;9B&Z>K)HhVr< z9Ua7Q@S)CRve#NBSBK1HObwuy2q@>a5XeK7wmlXipD-Br{ZgN|<-wfGIxC2uFE^@9qlroD+e;GJak zmSFKaChZof2dbz+(C1yF&Up)U#k3`UL0w-(y(92GFly{w)S?fP)7}-Vv+5qH%|1+4?+M}`nzT#bL)~0Oy)S68)u=h| zqt4!%oc8`;lT{B&&G;x;Ee~dWWYVtu0Cigx^}!(hW25GNh`Qk8;2?U}tjL&B0cy*8LK-%h$>38^QdqP1+4ocUMv0 z3Oasc)Z(vDmwc0)_MM=@s%bk>2UH}h?*)r1Oxi6{4^&Y<2>R?Y>YT4pSL{koyEWKv z)wbWDj`%iN{WvK9)}-Aowa$0R>b79mcSc=Ufx5nm`f1?pHfn4aYSHfGw4Vj*thz^P zvpvb`7eRcFNxSr0)Xi1YuYxAu8#U)U)Y;!Br~NwEWYvRGGk!=`D}q@+n6xW*qi(CB zejB9kHEQl2)CGH!)9wzoTD9)?s9kSvieJ~_-B)Li_`cKOM7vL|*Yrvb;YW{BGs8KOv9U zmn{Dg4wmmTskck6^J}tvARG+;)yNBfMqXb<{wo~R{LRR*UyzG_ORji0SofQ$_#Uav z_9v?;L43bam+nK|Tt$rrO@23O&abGme@{+ZBiLlsgHkj8NLIaI)*mMA%HL48RZ(jN z>3g2jKCv|FSesG>H$rBB41qz{A}-?Ac-bj)sY%YLJ^JxIb4;bgICP#!kw zcByqD$!fD;Sj4Cc|3Y0~MQt8#Vp3v01fbu~iVSX7XJcM%`RR zJuYYxHEK=-b#^p4?eW1Ts~(h^Q9W5r4`x+2X;-G8ZmXi67^K%QYHl^u1vQe>W&~TU zS~rT?B{f++Ihdbn(r%EtyNcQ_=;#@>xH{?*FFEaLL4{S*YM>6NnXH}>EUszNZjpMR zikcbpsb$nTsi-SzC8zBe?6+!L4|PQCWHl=&uWiz9ms+Pzvf3pWR>!CdYoe~NqGktP zU8BZop%&FmPTMV5XVpDYo7GEJdj#=%ChgMNsGF;(X9i8`8#Sj6>g@W-X?q8ota?yt zMuTLvPcW;2NxQNx>b5FszaafEqvqB_U2s@(+5y2h3D) zz@X#dMlEiDy5#WWw1a{QtEL@>I^c+8^}Jy55hm>xsRyd4=LdZn8FfxW)D?}A(+&&v zTea=ss3RIDs}}_2jZNC^QtKR{NoHj35XVpDY zn;n&`jt=5SnY2qAqi(LE<_Arh8a3xg)Y(mw(~b=`S@odQjH8p)crfc|lXhhj)NNJN z@j-esqvjrkx}aHd+M-~qRqHlI?UI(PP7LO!nY0_E?yjOv4mvhBYVpyiOPVLAEeR^D zn$`?;K#OE`TCli|j_cqb_WLy1t598hFPVHP#Zf=-A}6bAxqO-6OTxamniCLHszAcIh#wo2#f- z22ENUHK!Ho?AFO?uL?F<^`O*@&_cb|ub&U~45$3p@*hcIk;!_RoB;59a^viPR^~4Z&xBd-U&XLpKH;+aywz z8P83@jfXtuzZ!@9pyH6Hnu&9B(Cx%Ts)+I25-dLC38gCMMZw-fo>UVj2>P6qNL9^L z@z&t3L!MBo{^o9Ru>X*!n)%DF{{#aw5~)I|)rfOjP=3gR&HakogK*owGno)C4L0xcKvbrMJYSp^! zP`jL-tUesfKi#C=Aa!>Yb#>7345JpGin`>Ce`?WPngv4{B%?v9G-M|TNmuNYTGkVM|4P5p9;!5n6%ra*6En6t`CNFH0r|ksOzh! z&jem4qsB5(i#jEzeJ)sM)jd+1WhJXG1o14Bc4-IH%~jNwf+n4fn$r<=cIV`@F9(~f zdQfUcmt=KQFsqA6yRsANwkqmtL3+%nxml}2(gV1BkqyFu#i zD(YK7$F4>#?t;3cYjWCmf(omq>8LxPTeA9Iu(+E^yG81OD(VM8pYBGTla0Efdve;X z!G5c@?TR|0N3!~HP~O9&-7d9G&t!F5Fs!Fh7j{EkUq$^i@Xj=9tUGGanaOEC3)We6 zkJM(plGQJQcrTN7X%E!RRn)J7CcTZC(-U=e@8q;!2b-*VP-@0m$!bL~>nxLY<(a74 zs;J)v>3xiv+Y5C;pX9W=gRNGr+Z(k@-(>asV18edc7xR2Rn)yf$9_gFJ_~h8zvQ$( z1r=6J>w`L=f3o^Zu(-cTyG7~&)TGbXk)ZE@i1~co7kR~iWO;ui_}$8F`yr3WNtXYJ z1j}g|&2oSiHmhy=sWHuA#$$m^@fe?@|t=NLIQ0J-R#H^8qBaOR4l!!+Ak-y8lG8Q}Dy*6|7f!gJw zWcB1={zWG32C2KNsO^G|c}6YHMO~7Yoc6S!!m4Q_Q3s4lR?i3)k1}buNIg(R%?$dC zHtL*K>`h#wM#hg7{dIcIg<@%~jMhgC^sQnv;(@dt7qb-oYlT9+a99PgeT` zv*IT0$^z7FRn&e#dZAHs$D%GMOinu>*lN|f<50VdPgc(k=8rdNH%Q%GMI9J)oM6=A zIO>uK$!P}#6;@3vL>*9+tezJvE;4DiNIg(RJwNDEY}7g9QCAd4y83suKhfXOzFKhf z#7Ju7?Uc23XGi)*dVDAn%$^*X5k0;he>4-!og5it;-51mk{Vsf3Ex}W zV0PqdljMl!YllMol#QMcZ(CSm|Fop`+7Z(t4@VmGIo>>cqKp%F=vu-@1f+Y=#~t}+j(DC@GOQa&a5C8NpcP~2au2a_(2jImvDXJkU;mQUAqx+~Hq9KH4n zS4O{-;L-acr$>MIQ5`{{pPJZjE~CtIex;{Xk&|sj>OTuhP!JB|*AYOl?k78xH|`^qDct@qS?;_MW4 zL#V}&V9d~zF3k@9Wnc0ggQP27QwFbNg6D>&G%P*Nxs~t;BiIM$savZ7F0Xl=;NnHG zV$PTDeATggI$s-nN?QXQD}mQZE}lM5>QO6tWmsRSdC`EepDoarJq zAgm{L>D9sc4kLUT@zhfN4V&UO1bQTxUY(rpaKeeliDltaeD(6X7qJn}wayuH zzQ*_xk3h|Kz9aGdqSAPEb-pHqe|5fY&UX~P-<+?z^EJh{-}&?hcdAV3(Y*ccoM$>` zGkkyG!!!>!l$-`?C#vHXgI>-##6@g_PtR!5;5pyvJz6`>e9eNFi)#A2- z^IhoToviWq2-jWLdW3VHLU^u=nCpD)@IB;wBc1P5e45p|{ujY2V@_oaMx+9^RbABE^xka&es9oNzNB{K33z<6+oA((D^zM z?hEu9?|fN=^_V7Ih6#zMHg?9)6KeG;auK@_?vGF1Ta1q%v+$_v)V-5kylldHWT0MC zoUbe4GUqFCzHa#RykoU|s`GVM`v>4qO{Y0$55ngHy{0=~Pr`$#j4C<^IhV6z46sh0$!Io-&uq&1l`pCvz@b#b9RU4IG?&tg{T6FwW1$k6(V1m zi`Sp9p5d!XY3%6gs9|ps*6T9o%OUI$R;4b7&Ewk7#>fS#)fFz{InJj_UFm!S39ArQ zYF;9qrVFnLW7h7bJs$PkA}L3h7uSChJy>hg-;*6b5rIN@-lWpP=@PKfs^h0MHZG9sz5>qu?>{B-j9+0ndWx!I_{J=mWHMoCIfp zcHmTSIyeJl0zDLRH~1d>0Db}ARAXT7BB1?bJJ25T0(cR;1U7<~!7E@Bcon<`UI&|j z9(nmFcnoN-(bl4^L|ex`pzT82gSG>${(pi4K)-AD7f8|LWUFzhqo6v_(w_=EP!rSw zwLu+F7t{mwK?86YXb27mM}S5^j||t-#D8I^>;oK(Lcf9iKwHQkKu;fk4`}=Nur_bk zfd!x)AC*!@H)uofM34@egO)*^(J4)bH6y5h-4F%UK@Gsal+x}J`V{N|-+&6R3w#aY zpb(4)6F?D|2quBapae_{=8}EsY=YWgLl9);Cb)@ zcoDn=HiB2cCNKdMgNa}&m=0!vo5Ta+QoIw)y}PR?1`XM2UTs`I&+>1^z_${fSv~XK6n$n1=^$O$fzTt zo+ztl@b3V63hgSe8ff>;2ikD8!D>U*2C5BH8zdW|+5fcPO$3utI5lXa(|9pm|Bohzf}JZq9wjYpfP9yCeU$(K#y}D1MgFFw+!)Lqo6@|U{$<5w;0iDolz};* z6pRCLa4DD#^fasUg11Ok+MnP_AOo}oCxA526nLN(s11H#OzZ`Gk~9Au=PCGU@Emvn zya-+bFM~(H<6td#0z3#F0xQ5ua38oFu+f&9ja8eb9+cS_GzDML_MJe_nAFo5^+?F; z!A-yiH-kkW0Jj1?YO)lRf$5~10cL`8uQPs7Brq zP2uaQ%>tlPo=*D%fllcTcc6@CQuwok8-T<9f%R$QAut-80`4In zoyqm5(}PJr0OSCj<#S2@8b~2eeJ~J)DstsWI(wf3bb!xA6B0iC!;bgx*90T+3-aBn zJx8yyfb;n=!_-q+%7=pUfwna5ed;|8Lp7up_>J(d;4yFs&@k0ZzZmGhZcGJ}z<7{L z!#C%us$~q1H*x4m3*=l)_?lYp-_j+2&|=FTjodLUT_z<6X^5e z?eI-N>*|egV(Gtxux77j@gy)&|0kx1Krzr>a1j^_G}Sfb3qT>r2f8X_fTnyN7ztES zr4ghj!jH6Ysh|YtpGr*u7Xz(BT8}OT+Ss(g zX+zT|Y>i!QewTyR*y;&wi2B&y9hlFP8suFu7Q$D7Yk_w0tHFG59asQv0Mf4qw}JnF zyGgeQz8U!777&2N;8q~Ne0P9W#9az6agbfwnYVjz+zoV}KnrjW@D{iaEWx(|*76k) zz6Cr?SQF&|unZ`UwEGD^2$q9#AfK=Z$WG*?bc%R;Nw5xR;nrfW3Ozwsg=ryQ3mylL0Tr?)*fukzarlYgmzgO&(i8obXt(;XYFJHr zF36k3C)gJ%$tpm#RP+QCRjp9A^2x58ow{8u-wbP0xY@-~FDa~^tsGzJ)m!Qz{H4Zt z8{=KD6?_QZ0~%oOgAafP)=?zXp#2zVoM=>U2iw3W&X)Ey*a^M@UxFP#alZhcgU^5} zrWvqhLkVJkF8lw$X zcV+&=P zC--(B9b5!-c+?^CLNE*r1?Phyfc>r1{PQU7L5V#|8=dwu9Rm9R9o~9_GeJ+#9drX- zK{n7~PKP=j?({K2A0c$O(~f>RI2Gt4#L1v7H~}0FjswT)4n`{iEkO&=9HfC};Aqek z)CIMHy0jKt6I2ILpzc(6t9xr;E1c*}jg3@%8i4XkR~m)Y>#~P=Jy@?hol8bPt0;)tJV^u1VsaWYX=&JfP7_0hJ zo_x9l2Q~kdfkv(dNY%(1)m42O?NxoUD|fHfj6?-B=M#2fdM4~YHUE`3;i#IirdL&8 z!q)UlgvAC zP}lE;e*ljI>3hI8;A`+D_yVXAnZ(s`XB**fwG@3q;A8L+_z-*m-UoGn&dhJZuYp&= zE8u0Y5xfM{voC_@!E@kA@GMwF0jl5=peA{&g`Wl+z{Dd<%916{PM~nyS60PlUQG(tid&fqg)>J_+lSa;m;%tWF>T zbT>u!j>14kMI9a03o1B-?=Qj!fwrsturfLT{se!3-yK&z_f`&9JwvO^6n)FAfC|%y zR996_q}w~HOjTc1yK3gL^(jH$2Gj?-^PxK+`er~kB@({+x;>mQB&sXqJ9* ziJnl4e*=f(OWZ8bsDBhZ2BhnLa0{UO!OBZM+0C7O6s%s=r8!bz-85DPy48O)P@%f+ zn&(Zin*n8@Yn{kQQ%eOM2aW|QC^0KqVJ9-z-3(Pg)3FN$4kTXX3UcGM^w1ztjT4!v zW=hx&J_Tr8sO9UBq6Z27_Jf z-6#S^G{y>|jEDur4g&TX#Ezoa5{=lfM@2Dc?8^V0d+v47uu1;^fA8%(+&kaQnKNh3 zoH^wt__5tsc2%VTer#u;xJ4(c6vIkf^D>$3@pn;Y%?96c$Y&0E3V(-h#{U&vR5t^| z5lJ`$Eyb@n-m#T@Q9-hRZ$QfejV(Ld;cvDiZHqDi&xi5%ar}ZBVwx zua!z6C|c4lbFiT)H-?QkCR+fWSyi@TH~ifdzb^Q7#;+58Y-BQP2IBYGqWGH`kQuKd z{$@SV13$J2z$`A)ST9e-k4-z6fyxwmM1YF_bTjPf|Fdej(7pmD(4VZY|5_<3{)wOr zGUz?@n8|Y>rz|MdI-UHZ`hkM!f|9L^OXCe&12anWr)6Vq2B$m)k2iRH5&tN7zDlDM zXc`J_dDLnHod1$G+53ck1e_OeSR7WNREG1UQ}b0`%0~2&6|Kl~0bX{Y_6zXTm%>q0 zS^^oY&MNyd%l)|V!#knWU^>1)<*Hms4;QF9XxR*lsUu?glZ!pZZm)Yx)Za_*>4_bP zjtf;ov}{7F48V&aHkVe-E|CI&r`}iZ32&nd3sqh^=EL53`sjUFX|Hwcz;?Ht1rrZ(#54HyUNM0IojotLC(o;l8EA8ns5bnr^eF3-q29*QvEu zU5A>*s2a-kia0wpI@w6um?Bds3xzgOQsm|zRivDA( zHf~y`e0`~HXtgzTW9GZiYs>kzFIV3elwq)j-W$VXJ(V*Qb@?9TQ$_S zC5!++r_OjI6k5@Ur7DB646VkaQ3HLM-RieH{mc;WFh!JL(EB08gW?EE!?|m(8(iNW z78?W4#Qp+31*#qBMXs@^JeV5B!X-x1XgnEz1e}e84|6sy z{ylrFtq8}sL-qbq}2@zNXgUeHWbQd_K&%m)mKT6CWtKDwd%dS?I>`eUzuY0 zRDKz725NW@g;>(RM$tu{J-AjPvM+5ri7M7(h_fnOuhk2x z5#;(1RT#PR=&4ynjYjrfDDy@<#rziQi^&uk4w z7T%!SJxYy3i>}c}hI?SgTb@#OH?Vlb6Vk>*heGLbkNxrM=g)t- zC+XnnrLdxo@i6;j%1TgaDt+y=*2)=_8jp}Tgf2jiGK}(9pjb%geMsPd5;AD+JJ9@gBL@@cb4R5Tp| zPOGSb3=MUK&Reyh%LnHJCVl>w;H$9+bJ{uyjyLR zMo_wo(<=57Xe-)Jwj0dK z!a~E&jq+aAnt*79F7jZ5^%8llQN=4)(781bkxQzzD4vopD;m-8wJ_DtI`B6z9~$V_ zXQ00Ik7D>=s9+0>78#SN8yqWAQa!te-$)eGTs$JT|dfd^iU(B?wTz#}r(gCqLm71)BVUAJZ zuPQqyFkS?-0<`Is+_%7WM3-Mhs2G^^q&x>`3)=Rp%8PQ=VMuqN;0<`SmZI0I?9{M_ zmJa`pzaS@sZmq}2@4Ftb$>e-qhG~?XqU{ej3m|2#zFgXCcbTzLMW0!fqAVL1vAt%r zLQWy6AZn%I3VA6f(b5g*fk||V6%q826-1sJp~VJjk3yS<+=xZ!?pv3IY;bR|#yV>Cg>^e04gy6=*FtF}lf4*A8wLpb-SP6p1szqQDx$^W>B1(2xD*Kxu;y~- zqsgEC0)Wi~h>m;6c{4mDgGO$KpwqxHCrs#8wfg4ouf|I_=x~MBY=)rQ05HEG*BSSM z+h-z27F&TFtAO$$K`3lYVOv%9+6w->HTSbl$ zkjr2_Lu1*i0GfwF`z=`6)X-v5%D^FQr%yI1F`f=FTqs@L0{g~L*(9ibi~1yit8r8A z+-1`mWc$W`@RPXE9c^h50Lrd(gW-aJV?FNGKcq*$(@SDZ(nWxmavD`gmi4oxrpYR` zGLq_T#j9BA2Z}MZxwt(Pac7;jj+iFBtA1)!2&yYpcD*8Uf=KMlc}hS_FVn>^Y4xo{oY`o7<1~ z@SLMBd#`o8(oXC-QJcq9VIKekgSn4*I5geW@AnuM8JG*ecgNA~l4=c2*{5g;CbWvxJ-$@hPNqnA zAlOL!lob3|sg|w{fso?d@}YD+9nojw5PAiqaXId;Ay1D8D(hCg$EfVch36j*%bh=2f&6^u>%eigJS0}NrU;hn-OJnWkm2(2f}m^zEE`|lQCg!smYXncb-w}~ zcvv69Zi7O|a99-}j1QrR!zz29xj?en;E#*Jvxawd4i%KXlJBksh0Snd=6Nj4>2FcT zL^&8jE=R$e2?UFeZEiX^*SGabF(Gm!sc)P$y>+QUOHGu55Yin%qpgP1bI1^!hEpdz z`*;uMlgXC*83UtjlLQmTHxebMoOQ{qL;gfsAZyrVIIUv510_Vo)@@@}tSN_aFC)f- zVhIiFjJO-ydCt*QCd%~Tln35_@E@s_f>i3v>+v=6UoEFIZ#l^>|4^IM>i?jZgrvF0 zR1PxSY$-W}O#gQUiWj?n3>`bJGWev7;d8*@iVgqj7qB=B9*8-L4c$GUFdx0x^S3*< z3Zj;P!bU87(_$>uIRT$Y97nBAKt?esr4(52kLUebL35n!&)2_f8WXiAPzrd3`V;65 zN^P%+eCW2@RhWCTZ!U{=7`h(V`zb~BusNWtL~TzZQ1PvT|FWPjJgM>$K29R(ZrT&7B+`}^J$ zVmq4=6;3~p`V>N3(;v7g|JXFQ{N>9QV<3rbn8IMar&5U(znwZnG>r*2C+fHQL%H9D;d&?=_$&T#j=X0fy6`+g>bh7wO>_p2-b zY)<`vnWSa6>^T5Py=9)Fp)y&pEZ;;?-lHaX5}Jll?=00|U2hyEFoChV+b5RtJ@y&` zk(RPqdT==9daG^K*iPU}Bq1l9tk1w9o`h4vWkg0T1?NDpxQ5gCyn-a=NVU7{TivPp z)V7lDu&^qEhx#hvt!llivagnH@m8;# zi0P6clr_e7;S|?TSI^#*ss*6ZY^rk!)#_$*gOs_`@NxT?Xg)AlW~8V)o4yA^;Qe9i zgmKvz;L;G65NGM*yl*~RHnE;SurqDTNSh?Z?3HK)uAsfNuOsaQu`S`EZp(H$#XTHx zqe$KaD(=!RQ}f^Bo~OdUP3EbQ~$~KuJ$u#4?(51$$2>iRoA1 zz`PIsVbDvGzAShoU?(WN{j50)e}}lw^@>r*R9Ddm>tjBO6+0xwGn8cuDCjEu%S`XW zS)|V7J8pFNDr~}E2~tEV()6P0NU>6o!h+WPpy$oe`C|aFeUp*P54uJNryqfXu}vrp z&$^4~UXCgPQ)R3N#xrKjh-+9%55x?~7`{F9ti+0&PiumKO>bZ@KX*={v)8aFC_wlT zr-Y*e2Ar+&VjNhJSuoFU8_n0}N3XQVoAGd3RZ$C((mR}V*H!MN`vOq`)%K>2*O3G4 zz$2Tv=R$P@5Y}k^laOh%OE>Vrz5(0UK%Ql69!nWFq3VEG`u?5D&e7BF zM_^gMw7xT+VQ%e%gk5?~48*-A>k2X((b?}EDUdYs@YCehQo*bVyPe6a*vRF)vSR`O~}cy5vy za$>c3K_%kPQ@aMV&>zc`d%@FKDFK%!(1ttvrtSZ${|1(KN^Uv<6b$ExeeO#g^Y<=6 z&vnKdoJ>WmM_CPJOpWm1?#}|>h&=V#+4SiIYI+~_<|mL|iEQ3(4d)15yu6FssmsX{ z60@h@8cO(x{9ynP)gi0r)95*>uAAcI`i+X8B}z!C#={aHmk2RYQrFOR)S^2Fge!P^ z^`6;duW}c=%HgZ8&*tXmYsmTm^l)8E<=&#~yq4y_K{O!tAB9 ztJVKz?wKOqa5$0l55fBc2t5$4_e%fqzwUN9;&>$pYhmt43n#^{F4Cb<{<*HI{V zb%TL$2k(JC%@!YyN<^%b5S~%%D2+)^1)??(E$@sn%)eokBqNN997%es{i(0(zc_qW zrg$0)*U=}&TV*}(g^fKc)s_)PMY#>!-fhoz?%el9g)TD1)6=kl zvKem|AmCULuRDKdA9k(O9TQ?UC>X&JuRDFW@^QDBCuE9Iv3CRM9znBfK(Hg*&R2so ze9st7ni*9asS^-BwKsDAO#L*$u1AGoRwfyNps;!e>cU2B+TQaU6XnN^w2JYr0|KrV zF|egWpW`{YAu__#^9m@nKv|GgZtso~H$L|>&eJwg9@ETy6L0qiMcplL^IGG`llP`k z5x9w59z%L45KKnLw|>tOuez~o7Sgy}4~iQow+jcYnw>s%t%-7S6OCfL&wyZ-xxDG& zFMG~LP5q4UblJ?MUOEx3n38V$P^O@tH`77z>P7%j9lRyJ$?}-7`s^YTV)15r&ZMUU zfkX8OWALI`{V%VuHzBTrQWcadWlP#Vh}*>D0^%Xk=q=>`1iZDja8F2&zVt)CZVAyQ z-at@lfY-76?mY+EpPDRFJUu3Eq50s|B}%-l;}>-4`2NOEGQz0H+(H=)Q6`B`%5x?j ztR}Q6iHl7I;L$*;6u4cIs9YY@XbhkuUT3UyE*#!IoOP}T4;;NgVIgHv>DC?S)k{y2 zf@=-<9y5tjo~rC=LLSoIF!B`C8lAa7?defJnLYrm3k&AU-<@xra-t$u?X^}0C3BT{ zsJ6q_ffTIC{VA5$_mZjAQ!EzEGfJWbNuhs0@>zjZ!Fdcm=A|ZMhG1K#(+_ryXn6Ri z8=`f^9UDxs1D|1Q>+ihBQ+OsZKb1$GIlnX>bA4D`D^t%%O_S$6kF?l)MBTtNa>z$+ z#%DvH;!wQdpP9`ieo~^NH9uKM zz5!i}t42zgiYSwT{He&JsIrt^6?t8ZEQzZ7FC#$g1+0ra-v7HRO|Eu zpCKP~nyTv1J&x^XiF2nBOF3~+Nh>e4r%~=IDPfmeQoIUZj{%uk$~I+Yye`IAMX1bn zTJy-|qFv-Q`pA~uA>#GuGPA^w#v`Hz?Cu}4r<&GeEvbDn zt2Bv9Z?)!g`{En$rL_O#4*w7VwdU7^QuR`3k(WeYg&08!B$8G|0*bU|TY60Wd7l3d zQI0QoU@Ew#Yo>)p#ClxA`4ftinc8-1u^XtL?yC>kzHqVSK#kPro;Y))u z3;g>ylkLKJZAxJ7_u^U=p@_juiq=~5nYY}z>{ME^0)#Nta9yI01!n8`t2D_%Jy__S zLpLqd2JOHcp8gH5@JskY-LP9QzYpIgk}fW^D5(VjQmj$E6!)+3ygx(VYToc0?>op8qoVS43M-|y_i1{a zuZT`QY4>se)f;@B30{Mu*mbSA^3|-PGvL(~yS@|=IqPDvi1sOVt`PynE*V4$oGXy= zn&0Rf3YBePjPQQjI&2I%xE2{SyVZgGjdy_!rIl8zrIg3Ug5_^t&9{7xWF(`4M+5e^ z@0a}Y&cOOjG=jU_=iq}!c_TsgnZ`HinI(EG>?ZXnqYmI*q)|$pihCv%S$91yqjnKO zZ;_Q1B;amDbt|<&z$t!jE48~Y>(-vxR%%Nnb||CEqI-p0N-wK!plg%MU1rtn1K(`= zSPrR=c;5)waMxV2DF+F`xzwhdIzX2Z%{NE8f1g+QE-LsHx|{7mBKLK@O=;y&XVPst z%{Zpqp-*`BNx#GQ8P&ZE-OgHUISvkX6%riQceyP0dTl0?tMx{jC&qqczZ=>B4B zV~5g;?7I{JgwGwwutQHJwHo%_xF$7LsBtyX6L+QRE8c)o5tJRP7u;O;A?vw`VtJ3U z8L#s_zPmgjK-VTXrpyi#!UGf=@OsyYec!m==GP`li+iNAhGsp0U>M;{4+nWN4S=a~b`U`vwni&S{N}dUk&S17tVV zwown!ng2TEYCfgdsO`1pk5I%fG~|zKiaX?B8{w#m8_B(Dvp@OH^56o#DKh?G_oNh| zJloLm#u^q;DzbpWU`|~O5T#)xkMS3db^X-+Ef8!Sim|t%fVSfVQ?~<%3P5NJwrW~W z@5VNx{P>-&V+FBxYWJ#_0bpzNVk;959}F)j&<=go{sniQL1B+3kNfsE>nm270snX? zP%I(CuEe*FfsQjz2}*3-injs=y`UA~)kOfo_IDb1w(sUJ<5n_wrIQ`*Gy%e@7vxkK zp3!77ji?NcLR?E=HxuIHs-|~{+4vG1$hTQ-n_o~uW%Xd)0gPbgA)3tS(l=(MvAs$5 zoejM2;0toIhu6Uiojld{G|FD>Ae?zYbJ@$^UQjwKb6-#aE1$if>Ka(8(o0_9sJDJ^ zI)rp#DXTZ;1XL)Ul}Sd|Is?dB>oTcb+Blnb8320VLnzeCzwQ!hy`<|J7AarSD<*jt z7}$o<-lnUw+ba&@<`x<+UWv$lNi7`I2A|)7VB>PizQ24+G-%73!hFI9*HNX)cAN@d z+!@z8d;N)@DVM;{yS965$2<9|- zZ~EWpSE-aY5YiQ)Iru=7jg%)=E}AkwRx_B?L96_o)$Sz*sg$_B@wANEk$s&u-h=#&euXI?ju?Xo7qAbtAdg0H zKWkUDw=NuTEfg3uzf!}+Sv&dz&W?+4>tVSCeea4^N~evK>J-;{4GCEK|Y2l{w`S5*F7$3MPKIsL?Hll`Fx@Wp;LS z)W(gN2u57OVQGq-hz%@9`kJT;eb}ZZa=5f|lvWce>?oj5HPu0%qijlfrNRZ0MmfDW z^xN-M@!^9}?;}Rp?D7;*3lbibr{%TOEiC2nCBGkPO@h1ngk`$5lKrD^BT_5SMR#}t zG_a_R8mm^MQMJJ@$5|b{p>Z$R5RlHb8z~Y*X>Cq?&{HdjvgK6 z=83T+YhB8Q{OdpqIk>vm(1tqdDOF_c&Ce?0U1|1_bDz4{^fq6&)E?afSgtDc-|ToJ z^SA9Sk(kOlV6+~qt8P(MuG2hH(w2hs7?9&_m0}Kd%ksd)5TAf3Hh%ei*`IAGMGsSk zTTrGRjZ3zr5A6AXE!ovm2MKO=G^w82MfZc9QjFSu>WYc`EFZILJkrOwKikpvdI)j7 zVt8(x7&2+%51;xtijE^*m=?$PU=~t`dY}q0tnh%p;Q29o<}+7Br(`I}=D1c4d)AM8 zlb&p?bk}fSJOBzy#}+OrTpZeO(FiPIuz+FlbukcZy4jF#NNI2(ik-(GV`ikU8I}d zV3$FKwt^iTNLsrW`eIYbnSZqRwLc ziZ>)HkBRBq^@nFBO+R_ z+pIyI2a2-Aeh~kyE}#fk#zs&x13RH)M-b?tBprnsVT8ZmXr185oA~vO&*DS#XY0x{ zj&x1WXuiSmPD=6C!kp@*6{)MLuo;piVo=Idg-d<(_!EBDRKEKteF7+jUY&O&&w&hu zyBz~d%-t`EK`8y-UUl5=M0vPd`42Y=VGE{_JSXt$V1l(Xjlx^4CW0rpX=QRoPMNj) z5;S3{6A~m-gNn{Tk{BQJEtu-86c?76Ee@UAv&cVCY@3)@mW(8SKWM@)ZRvgokmc6X zUKi9o+;0OsRID1d#8t5Q0BRor!S0CYm$}w@+{{fcnF%>UDjo7udkLYD^wLjlFq*$$ zsBqyPacRSvZk@acxwY6~Xx~NZ(?H$9*b4xbjwYNQV*PZ#nq6I%4A5VqeEM!t&nFjK zT`^I(X<&*Xci`lEdECDLZGzSn``w3uZG`l5pbrh?f5gg@;}( yh>P@X6Lk}ZOMmj$k@bydlvB!m8so*QRrlVry@~pva?iSE>K=pk2wT*)8UF+M`4;g2 diff --git a/core/frontend/package.json b/core/frontend/package.json index c6d91bf071..c74dd58817 100644 --- a/core/frontend/package.json +++ b/core/frontend/package.json @@ -16,6 +16,7 @@ "dependencies": { "@google/model-viewer": "^3.0.0", "@mdi/font": "^7.1.96", + "@sentry/vue": "^8.25.0", "@types/file-saver": "^2.0.5", "@types/lodash": "^4.14.175", "@types/marked": "^4.0.7", diff --git a/core/frontend/src/main.ts b/core/frontend/src/main.ts index 9255fa005f..fd913b9e44 100644 --- a/core/frontend/src/main.ts +++ b/core/frontend/src/main.ts @@ -1,3 +1,4 @@ +/// import './cosmos' import '@/style/css/vuetify-global.css' import '@/style/css/animations.css' @@ -9,6 +10,7 @@ import JsonViewer from 'vue-json-viewer' import VueTooltipDirective from 'vue-tooltip-directive' import VueDraggable from 'vuedraggable' import Vuetify from 'vuetify/lib' +import * as Sentry from "@sentry/vue"; import App from './App.vue' import DefaultTooltip from './components/common/DefaultTooltip.vue' @@ -33,6 +35,28 @@ Vue.component('VTour', VTour) Vue.component('VStep', VStep) Vue.prototype.$tours = {} +const project = 'BlueOS' +// Avoid logging local development +const version = import.meta.env.VITE_APP_GIT_DESCRIBE +const release = `${project}@${version}` +console.info(`Running: ${release}`) +if (version) { + Sentry.init({ + Vue, + release: release, + dsn: "https://d87285a04a74f71aac13445f60506708@o4507696465707008.ingest.us.sentry.io/4507765318615040", + integrations: [ + Sentry.browserTracingIntegration({ router }), + Sentry.replayIntegration(), + ], + tracesSampleRate: 1.0, + tracePropagationTargets: [], + replaysSessionSampleRate: 0.1, + replaysOnErrorSampleRate: 1.0, + transport: Sentry.makeBrowserOfflineTransport(Sentry.makeFetchTransport), + }) +} + new Vue({ router, store, diff --git a/core/frontend/vite.config.js b/core/frontend/vite.config.js index 3070a41d4a..47f6ab73e5 100644 --- a/core/frontend/vite.config.js +++ b/core/frontend/vite.config.js @@ -1,7 +1,7 @@ import vue from '@vitejs/plugin-vue2' import { VuetifyResolver } from 'unplugin-vue-components/resolvers' import Components from 'unplugin-vue-components/vite' -import { defineConfig } from 'vite' +import { defineConfig, loadEnv } from 'vite' import { VitePWA } from 'vite-plugin-pwa' const { name } = require('./package.json') @@ -16,160 +16,164 @@ const assert = require('assert'); // TODO: check if it works with https once we have something that does assert.ok(SERVER_ADDRESS.startsWith('http://'), 'SERVER_ADDRESS must start with http://'); -export default defineConfig({ - plugins: [ - vue(), - VitePWA({ - registerType: 'autoUpdate', - devOptions: { - enabled: true, +export default defineConfig(({ command, mode }) => { + const env = loadEnv(mode, process.cwd(), '') + return { + plugins: [ + vue(), + VitePWA({ + registerType: 'autoUpdate', + devOptions: { + enabled: true, + }, + includeAssets: ['favicon.ico', 'apple-touch-icon.png', 'masked-icon.svg'], + }), + Components({ + // generate `components.d.ts` global declarations + // https://github.com/antfu/unplugin-vue-components#typescript + dts: true, + // auto import for directives + directives: false, + // resolvers for custom components + resolvers: [ + // Vuetify + VuetifyResolver(), + ], + // https://github.com/antfu/unplugin-vue-components#types-for-global-registered-components + types: [ + { + from: 'vue-router', + names: ['RouterLink', 'RouterView'], + }, + ], + // Vue version of project. + version: 2.7, + }), + ], + assetsInclude: ['**/*.gif', '**/*.glb', '**/*.png', '**/*.svg', '**/assets/ArduPilot-Parameter-Repository**.json'], + resolve: { + extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'], + alias: { + '@': path.resolve(__dirname, './src'), }, - includeAssets: ['favicon.ico', 'apple-touch-icon.png', 'masked-icon.svg'], - }), - Components({ - // generate `components.d.ts` global declarations - // https://github.com/antfu/unplugin-vue-components#typescript - dts: true, - // auto import for directives - directives: false, - // resolvers for custom components - resolvers: [ - // Vuetify - VuetifyResolver(), - ], - // https://github.com/antfu/unplugin-vue-components#types-for-global-registered-components - types: [ - { - from: 'vue-router', - names: ['RouterLink', 'RouterView'], - }, - ], - // Vue version of project. - version: 2.7, - }), - ], - assetsInclude: ['**/*.gif', '**/*.glb', '**/*.png', '**/*.svg', '**/assets/ArduPilot-Parameter-Repository**.json'], - resolve: { - extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'], - alias: { - '@': path.resolve(__dirname, './src'), }, - }, - build: { - rollupOptions: { - input: { - main: path.resolve(__dirname, 'index.html'), + build: { + rollupOptions: { + input: { + main: path.resolve(__dirname, 'index.html'), + }, }, }, - }, - define: { - 'process.env': {}, - }, - server: { - port: 8080, - proxy: { - '^/status': { - target: SERVER_ADDRESS, - }, - '^/ardupilot-manager': { - target: SERVER_ADDRESS, - }, - '^/bag': { - target: SERVER_ADDRESS, - }, - '^/beacon': { - target: SERVER_ADDRESS, - }, - '^/bridget': { - target: SERVER_ADDRESS, - }, - '^/cable-guy': { - target: SERVER_ADDRESS, - }, - '^/commander': { - target: SERVER_ADDRESS, - }, - '^/docker': { - target: SERVER_ADDRESS, - }, - '^/file-browser': { - target: SERVER_ADDRESS, - }, - '^/helper': { - target: SERVER_ADDRESS, - }, - '^/upload': { - target: SERVER_ADDRESS, - }, - '^/kraken': { - target: SERVER_ADDRESS, - onProxyRes: (proxyRes, request, response) => { - proxyRes.on('data', (data) => { - response.write(data) - }) - proxyRes.on('end', () => { - response.end() - }) + define: { + 'process.env': {}, + __APP_ENV__: env.APP_ENV, + }, + server: { + port: 8080, + proxy: { + '^/status': { + target: SERVER_ADDRESS, }, - }, - '^/nmea-injector': { - target: SERVER_ADDRESS, - }, - '^/logviewer': { - target: SERVER_ADDRESS, - }, - '^/mavlink': { - target: SERVER_ADDRESS, - changeOrigin: true, - ws: true, - }, - '^/mavlink2rest': { - target: SERVER_ADDRESS, - changeOrigin: true, - ws: true, - }, - '^/mavlink-camera-manager': { - target: SERVER_ADDRESS, - }, - '^/network-test': { - target: SERVER_ADDRESS, - changeOrigin: true, - ws: true, - }, - '^/ping': { - target: SERVER_ADDRESS, - }, - '^/system-information': { - target: SERVER_ADDRESS, - changeOrigin: true, - ws: true, - }, - '^/terminal': { - target: SERVER_ADDRESS, - changeOrigin: true, - ws: true, - }, - '^/userdata': { - target: SERVER_ADDRESS, - changeOrigin: true, - }, - '^/vehicles': { - target: SERVER_ADDRESS, - }, - '^/version-chooser': { - target: SERVER_ADDRESS, - onProxyRes: (proxyRes, request, response) => { - proxyRes.on('data', (data) => { - response.write(data) - }) - proxyRes.on('end', () => { - response.end() - }) + '^/ardupilot-manager': { + target: SERVER_ADDRESS, + }, + '^/bag': { + target: SERVER_ADDRESS, + }, + '^/beacon': { + target: SERVER_ADDRESS, + }, + '^/bridget': { + target: SERVER_ADDRESS, + }, + '^/cable-guy': { + target: SERVER_ADDRESS, + }, + '^/commander': { + target: SERVER_ADDRESS, + }, + '^/docker': { + target: SERVER_ADDRESS, + }, + '^/file-browser': { + target: SERVER_ADDRESS, + }, + '^/helper': { + target: SERVER_ADDRESS, + }, + '^/upload': { + target: SERVER_ADDRESS, + }, + '^/kraken': { + target: SERVER_ADDRESS, + onProxyRes: (proxyRes, request, response) => { + proxyRes.on('data', (data) => { + response.write(data) + }) + proxyRes.on('end', () => { + response.end() + }) + }, + }, + '^/nmea-injector': { + target: SERVER_ADDRESS, + }, + '^/logviewer': { + target: SERVER_ADDRESS, + }, + '^/mavlink': { + target: SERVER_ADDRESS, + changeOrigin: true, + ws: true, + }, + '^/mavlink2rest': { + target: SERVER_ADDRESS, + changeOrigin: true, + ws: true, + }, + '^/mavlink-camera-manager': { + target: SERVER_ADDRESS, + }, + '^/network-test': { + target: SERVER_ADDRESS, + changeOrigin: true, + ws: true, + }, + '^/ping': { + target: SERVER_ADDRESS, + }, + '^/system-information': { + target: SERVER_ADDRESS, + changeOrigin: true, + ws: true, + }, + '^/terminal': { + target: SERVER_ADDRESS, + changeOrigin: true, + ws: true, + }, + '^/userdata': { + target: SERVER_ADDRESS, + changeOrigin: true, + }, + '^/vehicles': { + target: SERVER_ADDRESS, + }, + '^/version-chooser': { + target: SERVER_ADDRESS, + onProxyRes: (proxyRes, request, response) => { + proxyRes.on('data', (data) => { + response.write(data) + }) + proxyRes.on('end', () => { + response.end() + }) + }, + }, + '^/wifi-manager': { + target: SERVER_ADDRESS, }, - }, - '^/wifi-manager': { - target: SERVER_ADDRESS, }, }, - }, + } })