From 49b2833b48f10caaebda9f372547b6773c41bb21 Mon Sep 17 00:00:00 2001 From: Ak4zh Date: Mon, 3 May 2021 18:23:05 +0530 Subject: [PATCH] Added meilisearch (#409) * added meilisearch * added more environment variables * fixed prettier errors * updated post deployment message with instructions to easily obtain public and private keys * hardcoded data dirs to default values and removed variables --- public/v4/apps/meilisearch.yml | 95 ++++++++++++++++++++++++++++++++ public/v4/logos/meilisearch.png | Bin 0 -> 16968 bytes 2 files changed, 95 insertions(+) create mode 100644 public/v4/apps/meilisearch.yml create mode 100644 public/v4/logos/meilisearch.png diff --git a/public/v4/apps/meilisearch.yml b/public/v4/apps/meilisearch.yml new file mode 100644 index 0000000..8351516 --- /dev/null +++ b/public/v4/apps/meilisearch.yml @@ -0,0 +1,95 @@ +captainVersion: 4 +services: + $$cap_appname: + image: getmeili/meilisearch:$$cap_app_version + volumes: + - $$cap_appname-data:/data.ms + - $$cap_appname-snapshot:/snapshot + - $$cap_appname-dump:/dumps + restart: always + environment: + MEILI_MASTER_KEY: $$cap_master_key + MEILI_NO_ANALYTICS: $$cap_no_analytics + MEILI_ENV: $$cap_env + MEILI_HTTP_PAYLOAD_SIZE_LIMIT: $$cap_payload_size + MEILI_MAX_MDB_SIZE: $$cap_max_mdb_size + MEILI_MAX_UDB_SIZE: $$cap_max_udb_size + MEILI_NO_SENTRY: $$cap_no_sentry + MEILI_SCHEDULE_SNAPSHOT: $$cap_schedule_snapshot + MEILI_SNAPSHOT_INTERVAL_SEC: $$cap_snapshot_interval + MEILI_DUMP_BATCH_SIZE: $$cap_dump_batchsize + caproverExtra: + containerHttpPort: '7700' +caproverOneClickApp: + variables: + - id: $$cap_app_version + label: MeiliSearch Version + description: 'Check out their Docker page for the valid tags: https://hub.docker.com/r/getmeili/meilisearch/tags' + defaultValue: 'v0.20.0' + validRegex: /^([^\s^\/])+$/ + - id: $$cap_master_key + label: MeiliSearch Master Key + description: 'The master key allowing you to do everything on the server. If no master key is provided all routes will be accessible without keys. (https://docs.meilisearch.com/reference/features/configuration.html#master-key)' + defaultValue: $$cap_gen_random_hex(64) + validRegex: /^([^\s^\/])+$/ + - id: $$cap_no_analytics + label: Disable MeiliSearch Analytics + defaultValue: 'false' + validRegex: /^(true|false)$/ + description: Analytics allow us to know how many users are using MeiliSearch and the following (https://docs.meilisearch.com/reference/features/configuration.html#analytics) + - id: $$cap_env + label: MeiliSearch Environment (development/production) + defaultValue: 'development' + validRegex: /^(production|development)$/ + description: In production mode, the web interface is disabled. (https://docs.meilisearch.com/reference/features/configuration.html#environment) + - id: $$cap_payload_size + label: Payload Limit Size + defaultValue: '104857600' + validRegex: /^\d[\d.]*$/ + description: The maximum size, in bytes, of accepted JSON payloads. + - id: $$cap_max_mdb_size + label: Max MDB Size + defaultValue: '107374182400' + validRegex: /^\d[\d.]*$/ + description: The maximum size, in bytes, of the main database. The main database stores the processed data. (https://docs.meilisearch.com/reference/features/configuration.html#max-mdb-size) + - id: $$cap_max_udb_size + label: Max UDB Size + defaultValue: '107374182400' + validRegex: /^\d[\d.]*$/ + description: The maximum size, in bytes, of the update database. The update database stores the pending updates. + - id: $$cap_no_sentry + label: Disable Sentry + defaultValue: 'true' + validRegex: /^(true|false)$/ + description: MeiliSearch use Sentry to get bug reports and diagnostics, and improve MeiliSearch experience. To deactivate Sentry, set this value to true. + - id: $$cap_schedule_snapshot + label: Schedule Snapshot Creation + defaultValue: 'false' + validRegex: /^(true|false)$/ + description: To activate scheduled snapshots, set this value to true. Disabled by default. + - id: $$cap_snapshot_interval + label: Snapshot Interval + defaultValue: '86400' + validRegex: /^\d[\d.]*$/ + description: Defines the time gap in seconds between each snapshot creation. + - id: $$cap_dump_batchsize + label: Dump Batch Size + defaultValue: '1024' + validRegex: /^\d[\d.]*$/ + description: Sets the batch size used in the dump importation process. + instructions: + start: >- + MeiliSearch is a lightning Fast, Ultra Relevant, and Typo-Tolerant Search Engine + end: >- + Your service is available at http://$$cap_appname.$$cap_root_domain + + Each instance of MeiliSearch has three keys- a master, a private, and a public. (https://docs.meilisearch.com/reference/api/keys.html#keys) + + + Get your private and public key using- + + curl -H "X-Meili-API-Key: $$cap_master_key" -X GET 'http://$$cap_appname.$$cap_root_domain/keys' + displayName: 'MeiliSearch' + isOfficial: true + description: MeiliSearch is a lightning Fast, Ultra Relevant, and Typo-Tolerant Search Engine + documentation: https://docs.meilisearch.com/ diff --git a/public/v4/logos/meilisearch.png b/public/v4/logos/meilisearch.png new file mode 100644 index 0000000000000000000000000000000000000000..ff558ea3095288ebb2017a301d4966a3229dc84a GIT binary patch literal 16968 zcmW(+1yozh77ZReI1~$3+=~@=cXx;4?ocd9A*HxW(c2EITGwM z*iueI836Eq4*-Nf0Dwo>t&l$efENbME!20RW)m{r7?cWM&fs0OAVrQsP>^E2lYrzDDywci%9bQxhAN!+CI#6@7X< zZ1dWDWG>&QLg*lf(TryDybIk>A{NvJI_Jmc=~Z4QyLX8noEn-@<3A{amEjTP!l>-P zdvs>FwfZqt2{uVGi9{b(?_PE{1lzgajTzX;(D+SV1ybfOB~+hY&D^!*c%YV5Rw79( z2uU^Pp}7Bf{vo&f(D2qB=S8DEd4j;x0m;8n#vD^{oKFE43{EcaGIF3$v2t$cC&?UerE zbXfkkb9VX0SIzmVOmEA2f4*Vm7ApIdFZt!~5z8~_;Y$wq5VVz}5K0beP|6Lka!c*o zc=f!Pk=#EyopB4Peq1P<)(tJLR{$b?_`&gdj-7CN7{S&#@78&|AWXk-e(!A-^t%qW z%rey9PW)AHAnsF%B71t7@=Q*xc?e9RIW=ufF17h&pcW5ZBnH>B%b1w9hka=|DoqKY zl#(E)Nf4=ucFT^ZGV}X#AIs6XYz(cIPF^ef&t^+=v)md@KQqxIj#*ZxX$bU~D)`OF z46;Z!AZ%-&`@WQuFJe_~UKHbWV($vk|vd`g34CDh-u?RF7VMIoMi1tp7_v4 zmS-lu!#@(!)-(vWa?a2~Qc^ym($xHDX0L*zG|8k@a^Twwn>RfZr)nc2iKmL+_;+N& zF(G1kRdIdf@&A=IW-U?_Zwjq&TlApuVEbVkVkg3Qx_A8bu3n*^1i(%o=G? z3w%f;${nsSNfOElF{(Bbrh02lkjza$6YxXvWdb$unHYH|TeOkdpJr!{jrp~I$JAx6 zx)!uQ41PH-VMi{{YG(QOttT@6^pJ;_H}~ATWAVSM3!t=q%4uZjb1vsHR`9=rOfl`N z9LbZc&!Rd_==91RIOX;-W-oCNG-*wyT0L-m@2A`rcX0vrDkin{Yzoe%qW+Sci&8sX z_X2;uL>_YDn&q!}^ONi^p9iV}I_!g*AT9Iy4(sqg+oigvhCQ-VcKmFWovL=ftvlbf zx4lJbxysQw3f@UD(h!dedr3Syl4|i&b3V|qisQ4^N9X9mJFVv zATGu}|Kw~OP*GsRis8wHc;%HQwK+JUBnL%r`~oM_n=>=XstS$eQ0&rag7ft*yrn$~ z=6=<=x){1V;yy9`Vl#~lKYryC^EQDi;W!=b`_Ap1`|wDsM|vEeIk4uOhY6BNA@yOu zY(NHDq8fyt@l4uA9(Bd#K8-jGvT`yrJ7X1BC?44^{B(O?gR?6X9m86+F8Ku$CPZ5P z-zU43$g-HNhgvKRFu8P;h6VBqy)ekShdN*lM_|=k^+e=r*fZS z9P+{obGGye$Wpz-ipfXxR$h@xre3%I{&IZs`|5EGVRAr%Xc`2M+hPELj^h^rsS?=veV1AWl_ z-aux-=>AD#d#2BvAt2K-8#&6Yb7(fMr`RrQDE;pt`cI~c%I$RTuVUIit0c9R`+k?` zG*Pv5Gn$}r!298yzDHD=1ZH_t7YGa`!IW(3(uw~y86CnE{>#QlY}xF0NUa){D-wb^ zFGu~*yM9h`;z)N|FFm~#xKwwc@tLU#%-~Z8<~WUmlXxmrU1m+?wz-V1ID9xGYlBttwRa8cmCh7*3O$x+Djf;k_d_ zIeEW8x46~(F^^Cr4JbRDT~|Bb4l;sM`GX zSIv@j;xc;^BYthM7Jid;NS<>mMP9X&6uI@HJDS7$K&G#nEK{rp%)-luBt*W$NRi$m z;FvRe;lJgr@)^B2rOR{}+C1dKPWIAfL7GCfphXVWs)QeR%>4%aFCCeN|0WfyhgrR1 z2qomr7zB+Bipy$IZ=bJXCBhP9QDG`x#0yvv`KMowIof8C{5l z{+fk|fP#@n5^AJdP$RB;3Mftqb#d#T^uz=HNW6%hraw zIOoUpf>x30nl{WjjteDmE=Y?cS-D8dP|z(VGs?b+H~&keHvjxfaNY^1HL20f!&-%F zjZrAm$N@`ZP+Q)$=$=X^$d~%iU(_3_%dnwJ;H5>1^;R;pB-suJ9{(uN?J*U2z?LBD zUeb;!St9f>ER@gDE@_rpWQbj8QnMU-Zu+e5xiD|r&!B@|nA(J^ygTTg$uW|H@zqH-Jd8%9d?&LwQ>8$qLu)q5=UhgqUhh6sZRzg>{!`ZkPhj<-L4Y`ipAcYzyfZo03=-#GJN=LY5O<7RV(TK12R;Zs4L zSK{UOVMdCh=Zp`#GnfuPE(VbLzcK$(j0MsSVlN_#(S;h0*#+>1j-SkkAx7;jD@i- z-dNa!wUR;$CD^nQiJbZBq#63PqlaQ;>G;EIZ(u3BLUq80;1f?}(#Z0x9|z;i?tR47 zxgtIndyyw@vZsWnoy{bqm^9#&5|jK8Jt1NlflsCb!G+MRwJv@M)$u4L<(8akyKry6l}cxGM4Hmj3!6!-=f$DLf+3KMe&dDvXMq4B ztsz$Td=3S(Y!C@O&{DBSuZ2dWy-wJxz8c-Ki5%$c_@ZKFne_>AKidfzYktl9Le1-^ zAk920Fx^1o;rl4EMyXYViaS`Zj7L9kwM)Z&=NK=EFkrPWEsoHw z0xmRD>#e4uEi?_OYOVtpnsP|0*Smf$iRw3^|D@d^?!Nl~(+|G-5va++??yWS_1)C)3 zD!TCnTgP~mC&%YQ?7(r;>yen3hXM8v>Xm<6!N!5CY(M7qI&{#BW6p^yyv%9=&gxS9 zP;J&+w}MEwt(0~fDf?AUqs15;<#)7YX2ynrF=s<^#wRE0CBHk%!7~9Ap~nYrLVoI` z@biEKZ%p1SI)i4CSmiB`a>3XX4TJJsyvxgJ{YdUSg3B z-XcP7>dX@JtY6e_RD|3wyj;~)Kr0wg-pJuF@hVnWr%Yz*^V60S_bK|G6_8F=5>ZRA z&C5@(+Ju`^(gNl_w1x2qavB5~9yi50D{pFc5I_j)#80fXYzn80IiUHeQEuTJxDd zb4MOvK;MNo|J#~kCnknnS4v{GXV294$SKhzT3?VY6+8+nWu#FK1|{8%7YZN+C0&P> zaJ7`@oouhzht^S=Ys~0*FAIKl{8Ir9DpYlH>>6S@ta;wp!;PP*M^~6}2j$`YAGzU7oS$lUCx5r4)J#)Q2p2J(2bZ z8%VX6X|OyaCP0ts6dLPZ#QY%rWmqgdg@K5FIAx!D^M{KVbk?}&#WBPRjH+>ZM~W_G z-E=MaAmr2mE%-YYYll*qOe3xPUC%A&Od~8m*48MVm}r3$%hC3jGubUcpl_5xs%0c8 zo06*hC9dA#{jn>DSM#^yw=J@LIi3De5AGuqAhApxRM87Zr$6{N-;^hgze=&BXTar$ z)mZTQ=b&Y=f+%e!GL;}adgh$7`NcVAWc)U^0^LS$t}G6vCMr*F4vb?t>2wvypE#@Z z^8-|>y|Q6zGS|7B@DisqJ9a~TYBB`Sxsnh0S(E8_<2XTlG)%mTDY$`JzDV#TKPLMJH~KKhnNs zwGOT%==tt4M7$o6&=7)SRYIUakhk*;u1PP9A$EmD3|e+*R_2Oa-6PvEE=(* z7c_83k4UI8vobie4H>2#8l`}0#R+5?8S`dtk)bCX8$lPw%M=NwAb9I0d-fa@$>raN zHs=M2or!x?AL*lZ*;$P&v?Qoji#qk0;DNc#F$ zOfmVJEP7Q*$#!Y>Tm?kEA*7GZSZ4vV|KqQI=YH2*kOLM2RKZq6BgZim?^a2Eu^>X{ z=;&8@qG>id4frQqq`EU~3WI+h2ZV#^&d>=;D74?vR*3Ddc>3w1PJRH511c3HpIp^C zN{0!gWX)EtQNRk1FH=TmN-8pD5~p6G=ml!_;8YlCrGTWf*@~ANd^M=ZH78qbO5=Wi zosc;0>o>$2gE};kSo6-lYw&E4VKoBW0hDX49!#!9p=v%6JkDO2-8ihKKX4!(zhD~S z?^BDjLW)t~DNlC&bNR`9A#KTlbIRM&DnG=Pq`1(CPX>Z@k~mdwYg6?}HtK-lLgBOe z7;CDc&B9mAO1xD)B$v9X=vrgo6eXInG0?;KqP3O?HqB;gV(g!@y3}HFS?xPD6x?Y> zj&ud$rZuw(mIs4>98ajw2H}PdISP)F`HVQ%b)cK^4ek_bGNl z>a5hL#s)*1_K|EgCFaUDIgPa_(4v=XT~I<31k|q)XX*}hh&Z4~dA4W@$sfmz^XeP& z7t>?Twe|rI-E}!@VQItAx(Ha&?r&me~+}i}F_h~73CMn2hsowAWMUUT7 z3Fx_x71?jNd>Qk9@%bGHa0jbYX^ppWbG>%2iAo9#z;@KYN>Z4jM9p)2BRVh(N#qXT zkZYJKnQ}pQ)cx!%`lgaVDxsdEAeK|09VxZ8Ge`2Z2Dek8q74b#$a{uM9fsU0R{_30 zn+pkC>vSY++6Ih{NtAC6-1vUXR?~$1e{VR@b1NtHvYTccuT3Z5cf9%6+R|I$7{0TN_M;0fk-@=qQ9sq}&yJo?$=(ye*+-~t ze`P~>{y_fczbZoz6G&@y0*>L^b0o3Xof+fd*WqC^0mi!@+ZuG2$EtH{m=m*DFp2(? zf*jL#G4re18M?QzgAvJZx?kwsxCE#%f9^AcK!J6g%EuHyUJ;? z(T}Gjd?E4JdoRL7851zU#BLoUXqiX=KjC7GP!ja`lq&Ib>qI&yn<;cH(9FbA7ARywu1w)tZ(F7Xb$D@J!g%*mzA0jt)ADlb5u6Wp<@vve# z33y}gSmL;JMYbX9$Klj214BF-2M)SHYGSeh*dkBM)7wv*0mRcHPv~R3W_I>q0!__Uh3U)3>h{ZzPI#}JotM0F1(h#t zMz)jedIm_6w~k|ud#qWakm;batNZzyTuBCe8Lo^$i$$YpJ5FXKjIK4Lgq)j@TC8ig z)p{eUWTF@nvp)*T(Lq4;b=ez}Q8M$?%ps5Dpa$M#JziHBZ^T{zk#Rz=H=ys&_w&?^a5Sb?;Kc zp*NYxGsgS(?`<8gpQqiL50$2Ur);rAV{dPr=W||@qhL-R=glTa?4Lf=;9RxmFi_KK zGk8ydc!(0Ae#EhvLxJbdIs9P{S^{e0VyXL(h^ECw9g1IZ9=>k|==!@&a6p1m#% z6xO}b<$Lkgm43t024eA^yv>fn77b@+>yZhVasv5H!}qiKsP8ZMQwI+iTLX%o{^FJp z;I!|`+lf+3sBY@_vrLMAI{c=P7d)Y!IuBP@7See!Ou8bvF_8yFPoYQ*JP+7Jp+aQu z38Zz{WwjodY(l-^;p7Z`I(woANtiYGnkOVz&Q_?}X$4On52yw|HjtR%KR(z5OeN8) z?p)=)Q3I*srAT;Vu~|;%c-otH}vu#z7fCi0RuSQZ~O^!5>nW$0r-nwn47>n?=xg5x6otKsw}F2_{VbXm*3WIU^^YLS)?bsHlwU*VnT9Q z1Om(8B?Y*s<_o`xJoWLP;kHW9{fP*Y)Zm0;{4seq&Rnx~f3eHmpXDAfwP+fQ0O>@bJ`bg3 zQpBnwgqN-+%SM4T?0TPRNNMw>NBMKbL)*?z=oQ~jDPwRN zvKQ&Qzw^#R{8IGoin*zMe>pS5RWDJqHa0K%7nNV==9lzef{N)pn9_O^8q`#$vU-1C z9~}io{S3a`x$z9TzyIm<>7NmxNJ~0QqW`(6<}*124!=us#qn6X2`NMj3(dLT!w!usBLmGC7`bZ~`_ae0=S{8uVFg49!lp9BxXppSGQ$ zf%i|SdtOczGt^=&OC(wI5zY1#7btgJdW-(Zs{PHyCIiL_AE|p#_FGI3((d+fu!Coj zj}XXCiRb;nNA4Yezr)M<367aQ51EF7;L|)b<;iIBV6&g_(>rhTTI&6kvHI)^roJuW z?$HhKGR&ojc0y1ToZdsRdf4nWfGg@W-up9C2!`~Yt{DBJK}C1N`IZ{{th5x0TIaIC zhKm!RnKVlw6|wQC4{-Z!f0mD+VWPYHr$LWEY-_&_BS^)2nR-Ypf=jZq2_D9!^tlA8!7Gj}<>+(XAGd+>v(y|m&6axP%aT%O298&f)fh9bk6fYv6muUdTj?dP_EDR|GU4pOo;$AsCkS5U3C-7E`Ik zIR(kuVJba8G+LT+>aSh;TH3~!XSv6e(6|v-I=7li1kyMut+FK36iPY;@4MaD90A72 zO#)A<-iCgwQV!qsym7pq^mIp!Py~>%cm5+q4DZu_3obruAK7(-CA_Trhv__>ysM7Q z0a##19_GFAz=w*-BXixRhagy)AD93E8r5tBcth)eN!QcB{^iFmFPUl?PTt7l%hq3d z0&`P?^ML7vE>$x?%!WUDLqN!&!@-oj0~1n5N8A3)CdbSRek}PSQ^@c8&)Lbt81SP@ zykl54<#jWW!IsxN_)T1jW~M;WBKza#{gln^$8VcO!UM>y*;)V9x@tO&Jtwt27>wuy z@4cwU+WD|>dLm= zG2d&7W9RG#bWaB!oD(HP`J%B!Xo~SOQxH1$7d6taN*5X3(CsX&HdN?6l6u2?RT-)- zcx{8{(_t*7_rSX1{uYIhp^(_M^5yNS%kH|vNo}eTyz~Zgr2E9l8jqxa+Ia^)1hnS= zb86z0eu%#s9q>))62a@Lt)LX?TPl?KS&xbKj@? zYJGy_c0WvVOUTug3wYRj`fMG2j72?Jz9+cwvK$0@3Gx5ld=vZq(UtOLo8O$4e;P;Z zdJ^Z0RGrgF3b+WFV$r7d3Nirv@{0EuibBD3uWI|^aJ0LBv!Q5CxQCR}_lwHzUs>E; z1pBkc48RYDD>J0J=G2G>SQ>O@sI$>!C#s_5KSOLkM!jQ~dZGd09GGnF%|!_L^Y;DiC7jZx`YHe9Z)|{a`YrafnhG>7j?nY!Xu8al zZQHQ-lRzFfIt<(JpJIZo$YGJ8o_kfCW`azGSa0i~;@5m{HbH13%&<`!sZYWHJyw=2 z5|JwI_FO8Nv=Ek_lho*2xn-s=WrNOp)8-X4!zd*qYlP?u+7O|~-4U+EbC%n%4{>gN z6{SA9!mszLXvfrTq8S8LnqBFV@}1iPJx}ZB1p5M;FzoB)I#XA+Cq_(e^>MGq)fal`&_t_&$RH@7JuS3XtBch+R1g{&E zJ0NBWE|yJvA)qkTpyS`t4`a`39@DmfjGy9DywVOW^WpJcOD!!u->Fhxn<674#YO|n z8y>-z#V7*|+=roGb*Tg_oQHhhPmG7r^4P7%mKL95exUd$if0lU&(qi5tZS)7FVW;w z)^g&#`*Aq-j?+8+=bs=VCNQQocC>!7dY8%IewuMoTS^^>R4sUl=xsB0`H+p!4?M;) zYQ{+KNN9SXkS`%*TSCMo1TVoBDSerW2y)}Spa6EFpw&d`Z{oCA&ern@PSjshSsW>L zTXvAE$G+KF1k$fE%$s8_Hqq!UW>SnngsmULQtHUJ zJcfIZca{O<@k7}iTl#!PQe zb;-mI&?D7tF!4k0w$kT9(}%v*!o`;sv*$M7(OBGUCZv3iI$ojRm%IbZHPJ<$7{GYa zP}|ZhabiUr#V+)~;0-hcse~37I6lk`=>8DGB0+vPHa5!#l9! zk>uR5E}p02W=p+EFo#6bCW-AMs9 z%LQTLrqeoNLolselc-1Hk$Akl;ybvRflBt-#ca9>rd-2h6mYC>o7D`QK)pLaU=si| z^>6u=&oSQj6Woax0Qm`Odc>)_*Zkr5gwymG%xBz5?EqXOKMB)%%7QU|Fe$AOtswRT zFr(WZ88*7tbkxeDrt#LR1H3`r)0X1GRoVxY6{;%y^8WOHrV2ZGPuEev7^BR zj=X43h)+R3*E5|rZ; zh={RA?t42)<0*pCQ{r-x<-6mlcJ-&7IWWCZK{q(r>di%%4C7g1Fq< zf5hU?Mj`s9)^pp^s<|Ao>~O^X(q&|DV>#bhg~7SfIkSctSky#P&L(i%f5(E8s|Sjl zHe=h;(*9u8JH(tyMsvc?CKThelNWjtnOJ3t6AM;0+_1)={pX^Kz5>&1DBxUejA$d* zHeV!2%ZR9D8`f^~OF%=pZU!e_dzbLk1B^_@Z8JkW!a~fji^x#h5DB%)FJ%ju1Tfsa{4sAY^gsqHHA^U=$fSEix!3RE zJZOLwk@_r#_WY^X@eveq2KpgJ23lfldiY>>#^ic56C-Nh4Ql6lHkW9El8%+#Y*WlS z_wT=8{2saa#|z{J(wj;YQhoYC4?z4-H+h*>2m>=9{y{L>$i8?Y3?97(v1XUA%jK4g z7A4+@UxI|_NDO*3EXt)DT1(if$JdHGQ0ExJVgV_HmlHur_z4GP5u515-Lpl49JL>j zS7TF^aHGfnVhMqAuKUK>!J9j|R$7Q%Kb53%^{d0}Ifjh>WF-KJQzXzHg)Niq9sf3B zmr#=B`hY@4Rf0#=j6l^4d&d+0s{>lVB0XVa1otbzOO*k*1i|k50BTf|biW5*C#T(x zD|p=h+-@008pmn5>Ts0s^n06SpAOUfrJu9Pxk>JouCJN&{Kyo-LI4U{EBp|`ArQh+ zGm$A}q9R{FWFsz+>BpzS2F9tD1ajtl1RY@zJKCBcEvrZ^v2_kL7bIxchI;iI!E?X{ zAde5kYdk~)ACU3SO{Wy0ML$cJ@N@m{bUc(wKGlHBK!Rql&4vft)F7F&x;Eq%gsa0@ zU4%^Vn3x!dC0l!8cuqq#s^#?i@Tr zG$*gcr^U{Ao7`hYi62gcqh`AVIxqtKHYr)K!3S-$qa5h&{T9_x8M+kIkoe)@;Vb!W zSeqnQVCar&(DVHvLNwMG!{S%fdR;3fgCRsq0l>B{B6zhPp#SG$9yVMGR=i(G0^Fc| zb=2t3Hx7ERdG!^k<}(FkX=<<&u>Fy<-^(KVq;GoJkdVZN)fpOS4cK911cxDyTBsaX zA&X61CB*BxVa9jCw(E;-x)MvV9IGUG=rKkSZER52oKNO_;k8(Lhn_fhi9DF2C0t0f z9f9qCLnbVX3jc&a@v-BjB@z;H!=no>6WYijN6&vqHok$f@GK@n3YZmXjObxZ;xoMu z0+3lecV2oe0uI8gD|UHDq<{wOY1QY82nLgGw^L-|-hv0c=nl}M(Bz0L0`7n_EV&feS9DGY52YWdOiP4dnJH?T8*>P5TkqBwih;D?k3;v3FF8E z$YHFd73y@ULeP|@@BOxH<07+5E(+Mg==-qWmRng(%+q*UkB#rtChL*FH!^{+MUwzb zRnZ_~o|EEXgEVpveu zfoR6WME-7+KA1p<`C(O?P>TdttFD~+I@B0jW~)1$(cEIigqA+%Ds~`Qn7P4%xkCuG zi)PPAXQLBV+4PaS<7{`7QT%QN{9)+80-$Cs{q1QSJx$jcGSXyy7GLgZCWau1U6ZTf z^OoPXovuE))6tX7aV`ltkIN%K!^AKa&qwFXCu09+Kem{F4%F2nXvYySUSR!8sz(%1 zwi*avxjyRj!xTCox79cEDu<};Vb^qa91@sV17@lXVRs``$C4RhMLVVlyPQPYr)Z!%!Kpjk z#GMt9nmVQyUd9ao;dXGozun=<$4qWc7$U$LZu?8fOop*8Je&9@0z7AUI8T=CbW}($ z-o47pbUU>TURK*v5X0KH`Cswb8a(VKie9uMAa@O zrBAZjBw>wuNT364!yV-PM(tHQbp`Rq-I-X+UcR-`wz2DLoh6(H0%53Y$Yil~DJuF` z(l~&cO$n!tD9DHgco-7Y7q3;W&b-Q)N)GF(+y~902iqJ{?{;Vl3SrNE?1M3n}MhNQev?$dtf&ny5PKOrmNjc4#T<%DQC$Z@8gQ5R}V zv!cTI%n9L(Q49vHmT2PMXkvV>JF~UFBX9dP$lHzvV=alMEKiPe#~xoNI#XyF;%RHz z81m;G!=dVRhbV63xE?OZP$Mw4A0Q+C*;i$)EG2Ls4WD_6GdbmZBP|nZ#T+2^j}x20 zCmzH8&kAe0l5Ot!>V5cJM}Qw z0X8djmBWljJio)7?Byv+X6F7uck@};S~w)S&E?q9><^k^c{pM*#fK}y+DMQ7RIl%) zvqvTy4MfaXKWe@>5jFC(dpdFd%@hAC@~B7ve?flk+$4T!dVi2ilAfsX4$ zh}3Zxjnj#&)bZCmOssk7M-KaoU8geiv*d1>F`L9^ufj&^3c6+bzA0)8p> zzhQjRQuMDz?e9Y>Ue1{e`LEUSgUIL{kAgVZX;YuyHQZk`&wZ7dlx9gOddik>KSYnn zb%-v2ulX||BaV#Yc#+rcZK=?`n*;$}N*)~hB)FS!7UOrz$X|jz$TnQr(SZc@#NX? zKL0Y{!%m&M+GF$gXI1n~{5B|XZYNkRqKKWM>ALtw{y$qrtD^z=6A>W`ohND&lTbC- z*)C@2INSgWQ*ErtT&xI8Aao=W>{TDL{@;1I*VjMj_dY|%5U?z{2Y5DgVA<(Tpg-D4L7)l;C6pDoPOBbqHA=ke;lOaq3Q?au^j5narS2w~8U6h&Vj} zP29Y88-=1#+f2PM9{?7Yp^cAqlsI>Ap&$tggRwJCQd-&nPV6>4_GGwYm`yaxqR^oy zCN&4$$2|ChrqI}HLTaEPmDC)a0%on^h=R9@l*1lV-b&*L8LswPBHsr>IUmHxZtl#K zL|pUSM61fJ8wWX8b92-y-jw=hzNuG;QZ${(OIHPe>K-}mSHsO6D4qBCcHvD_mzYr! zb(}wM^YBNqqeCf<(8#>cWR%WE?EFB5m!TNMmLy`2nm>}o2lrmpe1C5}UH{9e9QKMP zGpNv|DByjIES-GYP4)obH3vnnJYSSf=3%XB5j{j$6T!+^_Lwx2bKPt&hXbW>0k-@5 zrwMfnffXdHs;-3hS6dFSx?ugT#vY>Y~mB-eNqnuB<2c=G`#8cu@P5~VD zt9aO}&*_b)BQFOhu--smr;olw6&ijlc41`!QOuuk#cTVq7KE4C6yM=xf7m8<`_H!@ zC+Dygyv@Ya7_e63R~oyFV|TM#T)pj=~gZv_P0 z8XA?%5kM-d{uO%Y@@?Q#k)`O))MurY+hWtk<{{K`xm7;-bqdMP7j9RCLS`K#F6}S;bl5vZLh*bLQz%2}Yv0mm zzooBC2{xu$@|I5QS!-^;pGeCW={0j%ZTTqUXyl3Fs(0S z(~$XUuHRQtvIOb9_3`@AE_?Ag}dk! zLpaRhI5|jAJvL&6xRR^5xgr-eBW?04i%^Sa^c8v&{Ymu8+Q)aM0wyGIjK)0UPQb$E ztd^CIGn%WFmxX|-R&Q7tDsCeXv`#m45O_!8Ri}J0Xe^3 zsAYm;kBkOrO(!8u^+d&@x>Z_yO~U2aPnweLS3g6`pMjT!lZ(U(bUeR-(rhCObG1+J z()&wPsSi$jOuv#*e5|QoO#^;m@Moc}Q6i=)Gy2x>>si7JJ&Tugf8xW<-%nh8I~})% z7d>af{8ib)(3pLl0z!vB zG?NrV_24;zRI1jzLGK&;vhyHwwX@PF0)G`2%DeV;?tvdelKJ*Rlw?s%uK1oL=Mr4# z<1JMh2rwS!OJ`zbvR%U!x-hh!)TYp2GHn|t08hpDcBhdmI%&MO(p<~2&rjN9sk;iqJau>pHGply}JHd>uzEwD9ZIYd8FKi3L6&ms9dbNw9Av z<+L_aJCE1h(u?dI+;)Agqh;7^Dra~5&^mTZPW+)g;uA64QA&01H!@bB@2z!zX<%1u ze}tO88f=K(RxS>LnjZAsjnKh#u6wtxi>*5-iaZVhA&&T}yd)?KXbcefaqDeuiPAV&Vq zJ0)wuR)opy3I#;R==&*F0wMKF==0YX*xz_fR7lneB-_b08_s(Tokdj`!+*tBY!vs1<7Ju%zjM}Bs(A+?T4Zgx47x%@Sdaw zgCg}u7O^;vv|j}+!#9|OI%OuCoo=u#?tZE%agIb+-U1T!QtuZuEdA;}yf|axS%t<2 zeTObA+P@pRRpD->iO{ql@p~aldA%JgecY59#W433CLXcV zVP-o7mLrW@w(H|0&7X|;GblP*AAZ#4t7y5ZwWEo;e%QwJp?tp&m#vO`IK>)6Dxplj zy%Fj=Aqc3t;1fFQ+C6|eXi1c(Eb(z(t4R4Y(K0>JiTkN|r6BX@s`I%@;3h+mmC8Xi zSU;adSo;=S2(E36`m4SMEzN)zcBfevx1!=~I?v92MNSU-5;wIZpgt-qh&8s5N_``hSzwLv( z*3QZZgw{7HacdqflPYUVIiS(9>?1H{VP*q7n!!ydRlAETE)(S`&~4R$GtF=4w$>o) z5n~}f(?iTKn`v28cVv=XEgGHf^UrYi28HD1{Nf?Tp|YAx8iB6jy^CchDQ#asA?^4Z z7}p%_qb_vM}L!$o+>2pLI4=bdCiJ&P|dE z(LW!;)H4Q!`HZY(KJ{{J+!;prS4eAB^Pz8imREa~$L)HvBTUJY54)3=S2IaNJV%wk zj*|=H`$W)1LyELNNq*q8d$;V;`_fGMuVz8DsM~fECwO5d^RcS~Wgs``SeySHh<-m* zNuM`QGx=SN8)i(p3s^uqn7;Aza9O&`KT~?rvwGqR%@o&TGOyI-kg>GY{~v&qx90pV6|ZEjSC7XC6V~Jv6qYVwLIdaC(UE013Ko(5{r#c zNUmHLL_$x(6$e5~zM-twc+S z^LzSzyd)bu3y^eQ69ke29Uo~`9?yDPef~A2`)tL+vY3O6<4f?TXM}PA8M@^1N@}>| z0L9qu_rfo!=|aEAlb(8bs;_(AX+GkOJ$8gd282ci#8>v9+XkX=9+A(Pk2>B4zPrPs zwb*zq;zf^;-z4XUtt%1J$JR`aXD$3cd!3OAy}QB`;jhNH{mSUGEPP&#gAZk^%^ z>#Q%m{_=Ym&j;(_X+ECFq`ZC`Onwy{PJXTV8t{}C$B5tpWqiTgRS15Bo`bbQ&SpGo znlH|CBFnd(Vfy=VMvVvS_h!LXF<`mzS~Joa?xQk?ZA9uo{QZh<@sp6}tLE3JsT!>! zrV7~MG0#t|@33=37b|i9yR_|3q0F^J%DE|KI3c)%bA|c8 zZRrJZQxkqy{5=pFxO9JA(q#p(uII0OU)=w_@a=7FzlrI8>!0zd?7Pd=9t%8bLAAs+ zq9i4;B-JXpC>2OC7#SED>KYj78kvO{npl|_S(%z@8yHv_7)ZbWQiGx)H$NpatrE9} UtW7=#fEpM)UHx3vIVCg!09aHVDgXcg literal 0 HcmV?d00001