From fe6991fb0baafef99d7cdd53301be84ea977203e Mon Sep 17 00:00:00 2001 From: Ray Lyon Date: Tue, 27 Oct 2020 19:18:53 -0400 Subject: [PATCH] nextlcoud-photos post finished --- _posts/2020-10-07-systemd-automount.md | 19 +-- _posts/2020-10-23-nextcloud-photos.md | 153 ++++++++++++++++-- .../screenshots/nextcloud-photos-01.jpg | Bin 0 -> 34931 bytes 3 files changed, 149 insertions(+), 23 deletions(-) create mode 100644 assets/images/screenshots/nextcloud-photos-01.jpg diff --git a/_posts/2020-10-07-systemd-automount.md b/_posts/2020-10-07-systemd-automount.md index 6a5076e..ed12039 100644 --- a/_posts/2020-10-07-systemd-automount.md +++ b/_posts/2020-10-07-systemd-automount.md @@ -21,7 +21,7 @@ If you're not familiar with Systemd unit files and how they work, I would highly You'll need to create dedicated folders on your machine where the shares will be mounted. -``` bash +```bash $ sudo mkdir -p /mnt/smb/sambashare $ sudo mkdir -p /mnt/nfs/nfsshare ``` @@ -30,7 +30,7 @@ $ sudo mkdir -p /mnt/nfs/nfsshare If your Samba server uses authentication, you'll need to create a file with your login details that Systemd can use to connect. These should be saved in a safe location with restricted permissions. -``` bash +```bash $ sudo nano /etc/samba/smbcreds ``` @@ -39,7 +39,7 @@ username=[USERNAME] password=[PASSWORD] ``` -``` bash +```bash $ sudo chmod 600 /etc/samba/smbcreds ``` @@ -47,13 +47,13 @@ $ sudo chmod 600 /etc/samba/smbcreds #### Samba -``` bash +```bash $ sudo apt install samba cifs-utils ``` #### NFS -``` bash +```bash $ sudo apt install nfs-common ``` @@ -63,7 +63,7 @@ To make this work, we need (2) unit files for each connection: the **mount** uni The below instructions assume your samba share is located at `//example.server/sambafiles`. -``` bash +```bash $ sudo nano /etc/systemd/system/mnt-smb-sambashare.mount ``` @@ -86,13 +86,14 @@ WantedBy=multi-user.target ``` A few notes on the above file: + * `vers=2.1` - adjust this based on the version of samba running on your server * `uid=1000` - adjust this based on your local user ID to avoid permissions problems. This is usually 1000 on a desktop system. \ Next we need to create the automount file in the same location. -``` bash +```bash $ sudo nano /etc/systemd/system/mnt-smb-sambashare.automount ``` @@ -113,7 +114,7 @@ WantedBy=multi-user.target The below instructions assume your NFS share is located at `example.server:/srv/nfsfiles`. -``` bash +```bash $ sudo nano /etc/systemd/system/mnt-nfs-nfssahre.mount ``` @@ -134,7 +135,7 @@ WantedBy=multi-user.target \ Same as before, we need to create the automount file in the same location. -``` bash +```bash $ sudo nano /etc/systemd/system/mnt-smb-nfsshare.automount ``` diff --git a/_posts/2020-10-23-nextcloud-photos.md b/_posts/2020-10-23-nextcloud-photos.md index 97a76f1..766f943 100644 --- a/_posts/2020-10-23-nextcloud-photos.md +++ b/_posts/2020-10-23-nextcloud-photos.md @@ -14,19 +14,24 @@ The good news is that because Nextcloud is a wonderful piece of FOSS that we're - [Preview Generator](https://apps.nextcloud.com/apps/previewgenerator) (Nextcloud app) - [exiftool](https://exiftool.org/) (Linux app) -Let's dive in! +Both are freely available from Nextcloud and your distro's package manager, respectively. Let's dive in! # Previews and Thumbnails -First we need to fix our preview generation. By default, Nextcloud generates photo previews and thumbnails on-demand, leading to slow load times. To fix this, we're going to use the Preview Generator app for Nextcloud to pre-generate these previews on a regular basis. That way, your photos are ready to view as soon as you open the folder. +First we need to fix Nextcloud's preview generation. By default, Nextcloud generates photo previews and thumbnails on-demand, leading to slow load times. To fix this, we're going to use the Preview Generator app for Nextcloud to pre-generate previews on a regular basis. That way, your photos are ready to view as soon as you open the folder. 1. **Install the Preview Generator app for Nextcloud**. From a Nextcloud account with admin permissions, navigate to the Apps section and locate Preview Generator under the Multimedia category. Click Download and enable. -2. **Configure preview and thumbnail settings.** While the default settings work well from a performance standpoint, they cause Nextcloud to generate a huge number of previews and thumbnails for each photo. Once you add a lot of photos, you'll notice that these previews eat into your storage significantly. Fortunately, Preview Generator is highly configurable. +![preview generator](/assets/images/screenshots/nextcloud-photos-01.jpg){:class="img-responsive" .align-center} + + +2. **Configure preview and thumbnail settings.** While the default settings work well from a performance standpoint, they cause Nextcloud to generate a huge number of previews and thumbnails for each photo. Once you add a lot of photos, you'll notice that these previews eat into your storage significantly (sometimes more than the photos themselves). Fortunately, Preview Generator is highly configurable. + + SSH into your Nextcloud server and follow the instructions below. - **Note:** I've found that the below settings provide a good balance of resolution, performance, and storage usage for my environment, but you can tweak them depending on your needs. + **Note:** I've found that the below settings provide a good balance of resolution, performance, and storage usage for my environment. You can tweak them depending on your needs. - Choose default thumbnail sizes: + Set the default thumbnail sizes by using the following occ commands: ```bash sudo -u www-data php /var/www/nextcloud/occ config:app:set --value="32 256" previewgenerator squareSizes @@ -36,10 +41,10 @@ First we need to fix our preview generation. By default, Nextcloud generates pho Next, edit your config.php to specify the maximum preview size for images. This is going to effect the appearance and load time of images when you click on them. + ```bash sudo nano /var/www/nextcloud/config/config.php ``` - Find the below lines toward the end of the file. If they don't exist, add them to the block. ```php @@ -47,7 +52,7 @@ First we need to fix our preview generation. By default, Nextcloud generates pho 'preview_max_y' => '2048', 'jpeg_quality' => '60', ``` - + Save the file and restart the web server. ```bash @@ -55,8 +60,7 @@ First we need to fix our preview generation. By default, Nextcloud generates pho ``` - -3. **Generate initial previews.** Open a terminal on your Nextcloud host machine and run the following command: +3. **Generate initial previews.** Open a terminal on your Nextcloud server and run the following command: ```bash sudo -u www-data php /var/www/nextcloud/occ preview:generate-all -vvv @@ -66,7 +70,8 @@ First we need to fix our preview generation. By default, Nextcloud generates pho **NOTE:** Depending on the amount of photos you have, this could take a while to complete and use a high amount of resources. If you have users beyond yourself, it's probably best to run it during a low-activity period. -4. **Add a cron job.** To avoid problems, you should edit the crontab of the web server user: + +4. **Add a cron job.** This allows Preview Generator to run continuously generate previews as new photos are added to Nextcloud. To avoid permissions problems, we'll edit the crontab of the web server user: ```bash sudo -u www-data crontab -e @@ -75,13 +80,133 @@ First we need to fix our preview generation. By default, Nextcloud generates pho Add the following below line to the file. The below example runs the command every 10 minutes, but you can set the frequency to whatever you want. ```bash - * /10 * * * * /usr/bin/php -f /var/www/nextcloud/occ preview:pre-generate + */10 * * * * /usr/bin/php -f /var/www/nextcloud/occ preview:pre-generate ``` **NOTE:** If you have a specific version of PHP installed beyond your distro's default, you'll want to specify that version of the binary above (e.g. `php7.4` instead of `php`). - - # Photo Sorting -Sort order is a bit more difficult to tackle. Nextcloud is first and foremost a file sharing application, so it views files just as your file system would. This is great until you get to photo albums. +Nextcloud is first and foremost a file sharing application, so it views files just as your file system would. This is great until you get to photo albums, where the EXIF metadata of the photo is more relevant to sorting than the filename or modified date. To be sure that all photos in Nextcloud display in chronological order, we need to get creative. + +That's where the wonderful exiftool comes in. This powerful command-line application allows you to read and manipulate the EXIF data of a photo. The feature that solves our problem is the ability to read the original capture date of a photo and apply it to both the *last modified* attribute and the *filename*. This way, no matter how you sort the images in Nextcloud, they'll display in **chronological** order. + +To get started using exiftool, follow the instrutions below on one of your **Nextcloud clients.** + +### Write the script + +1. Install exiftool on your chosen Nextcloud client. + + ```bash + sudo apt install exiftool + ``` + +2. Create a new file with the below contents and save it as a script. + + ```shell + sudo nano photo-cleanup.sh + ``` + + ```shell + #!/bin/sh + + albumdir=$1 + + echo "Changing modified date to shot date..." + exiftool "-filemodifydate%Z22!`WwM@7c3wX6M;+&U5?W_A`JbD=8xhKp-#x75E3-E)&B^JhwCh02vv2 z00{s91b_$v4?sXj1H6cT!TKOf3xWNS4hzC;AOm#p4i*I1K^PCbyMUKvAlwg{AP`Oh zuU7Da|I=McMqY`Wotcf5nT;1L$;!^k&&JBn&O^?|%g@Qh&&~>#hGhJ#2Py+JfKowz za)q*n{DQxOIWV9^P-&p)u)m~308xZL!T5iY8Upi^4+2OJ^9w#Dgff8E0{y%FvyGs9 zLCV_&Kpa3qKtM!*M?yqIL`FtJLBm5wLq$a+#KFbHBPAlcM@mFOLQcs{Lw=v}0SO5$ z4;>>b8z(0x84aHxFS`IU2PZp}2?QA#84VSU03Drxoq~jd{l6V<+W~AO;5!6V_C5fE z4S~gm+;#(Gpq%iKAK|AeAPxfy2akY=gp7g;64YWrEd>h$2MZ4m2M6YQg82X(Hardm znVwD~ED&q%~9L7$5$S8O25)cwmQPa@U(Q|Tf^YHTVi$9W( zl#-T_RaH~h(A3h_F?nigW^Q3=_U!o!_gAm|0|JBI1V_J(iH(a-NKDGg&dJTo zFDNXks;;T6t8Zv*>g?+7>Fs;pKQJ*lH9a%?VQzkTWp!H@&byyt^rsBg!&2le&0KvA`M>Yn)v145HA7ubq>otZL? zT(+o=%E7kV?~mnVB(z}*a&j}^v!dgC?!+a_iJ(eQF~R(Vz+8YoSXKwnp`){aSX$Q9 z05vu9AgUuv3!=0c@VPlzJ{%V1nckH(Z5If0x4!WAd3b?5Sd{7!vII_=fC25h<(n)6ZHx^RIu1Km(QMH{=fy1gPU$XD|Pf`4{9*l=N|} zlm8JVv$6#Ka{41YWeI@hkSv$!M+898|M=1z6+VdCX*(gB@;;!u1$raSq`!T-K(`V; z!@C7m_2W;$&Yo~AT(f+YKQ{I6iKTwf{vuVDc#)s?zYy%@uk)6`_2y^_AYJ4QO=q;dI%ZQ&&hG2)sxCxS?ar->V^fqf_JMs zX4}EzJ4BmvX&d6^Bow*v3=Qv)c}d?X4ROpG5e_@?xQ&{72$nP)lSgISxD2F_tv@*} zUJ0YV>}JP%d#9e2`OAUiWaT8B2V=C$h_1bz^_zxRS6esBG>Lk-<~XM#mrxFKnlDKs zuZx5uD$DM3&K_K*ON>k4A8(HN<0*?EUrBwDlYvGe@F4ofrAigY`@oVa$|OuuJLNNG zVFrx03W2^hvDN)JlPyH*BFmw3Djl$bxlhqH(3YVLa%Sv4D#vweZNAbyAnB?t$zj=^>DWBCi3jdMvhO9oU zJZ{AmE{4)ROtc-&wXdz!#RX87!2A0JIp)GsHc)$+pe&(2wHZAt+uRW3OR3C3_dsB3 zM3&9T6XmtuT2@oKGN|X#<}_5Pf2F7Dw9Q?$NoK|*ae_p*Jy_n2GG&o_2Fpvbqh0qX zTWgbC5YMqFX#(Lx!GwEzQpzxjY{?^eWKcz( zw(NB{g5TBxd>N&gsj5+gEa*r%aj~IKO2hPOJ}}%Aj!^I{fTRKA*?tR`+IFuaIL)}< zNFg7?_J8~Az&1gVOB6LL^$Z0&Jr3~ z03ZrvCASKUvN-Mcx^1SoucZF!Ybr1p4(_htDhZ|d=NIgT6~mVBnZya%1+3Q3`953` z^UUgwdi>)_<>bA9HwZ6aBf5Rhf=`8OGOtPw+p1}<-XEZ3mwLZPRk{Vr&<&(-flii; zTVRZ+3%UlV*)B(*4?V5(B$IcpxEtCYxXuUrfD{9B&5GU(JB37L>8>J640Y~sHFrT) z@KJ;ov;`Dbgk^PpL_pv43D*n@Ifu}Ki=S2sEpfjyAps?cXV?1<661`w5>u3E3pdnv zQE}qf&z~tEQ+4cNNREd(hA%mBn>YDQNt(x+98+TF?XQ@Op*ZV_MW4%aT2n7ApaPCN z5wgH$&UkI3?J9a98D|B@3+E;T*igC-hIWn5uJ8AgUb;)xBn_$56&NV0WOR=#yl*#_ zfrZ;wVr!otJ}K>Ku5*G}eAMG(6o^Qk0(*Wa(p+yw{x}hH{m3z{o%deLy(t?6ye8%> zqMfh3GkjFhQkPoB)D9yhc&Tl)C@4>H+f~Ec<0YoO1~kxRmAO#@JmQ7v!UFhB9u8c6 z7(x8(4xdERJBM98iG~SIxcAZ7?3wf^bQ84r=yP}<25lpjGGJ^FZCw;ekn4USsj&#z zc+$vlIcv@bIM+tPMl5%HV=a4A%9KpeD4FUPA7!^LzekRwwfwv*boHIn3xcwUUDg-( zyi>{EhMp$}d>YNAXs%O|X$XQ>T8k&4+ww{~>Dds?n;*4?%i1vEEEkAqXl6yxi-i?r z%|XN9Ew06GswWsaM9WY7-nVq~eez?rr)2+K=O>+a>5)IO@;GsPNdl@R#OmF?LXIO% zd6vU5KIz??YO|`xrhNBOU+*=X?JAn02&Ov_7wq$KzNndNi2Q+#@l!GecQSF+F^B}7 z(w{FxK8%QBT`P8dDXwDTz+)Pb(R{@lD21*tdIcFKCW#yUyKDvDe&3p< zt{le2VrPitRJwd)T~m`Ldx?l$Yz}@d>7t5t$w9J_k%yHP96mX>s zlG_XUPLe(C#JT!{kkhhAebLL|5iH6yZS#ksHn2X5`VAKw$@enN>DQSv1-(Pf!&^L5 z8$vjLEyjOZpHl;p2zP8HUh+x`XET`P66rkXZU~0B5bN=x1 zTDX7a1r8VES3Hc3WYTVxM^y}EGr*CR-l~_zHzGx6{wLU!4Qa}B_pJOH;m++~e7aH` zYe-DW-6L+Wx8hdlG)#gP_9`f`gZhm5hD0_O53E%f67qti!*dl|vGuyx9G4^qOd;~R?57)Rf}I9I57XZF@-Y>R_sQ_mW(}X z&BG_v^U|f%V$Ue1K~uG|F3q$0vD}Vkqlasvz*?`S!13h0R&*{EoZ7UNb&H$}xzgwo z6$ZU*JG7oU+?1o-h_h)AGEC1T-k1Ha*mEd+;Fcq)9Y70yt2#AG2#jg>v>zM|cPvyy zG;lQZj&BMjnDmvq$9PQFc87PeIrLxi}_0rh4xm2`&;bX`f?f3fo9@3 zCKmTa*geue-t!Dxr3w$7iFX`$stv<{JG`Bw zQ*emweb5B0IWMfxT*-AQm-h?H{NY=mD|V1(EXQT;UMJGyVv>HEqzOQQWUcO_l$)S) zpUGo><}5tj(8!0pxlXs)%|9ISAmwSehnn)2@g5VZqDb}X zV|Kq6H&4|&MF?qtX9e#j?|zTCKC(`GuESBVEh}`a(H3t!EkiYsmK>@3Wn5Qx5as2- z`MM8HzPFAX6E_0|xp)gNum>vyE|rR>32iOj`){S@jc>q*s(12_9n|ixtda%VGlWei zw|-prU}AqrM>w^|%<9BXW-q#{UV4JW^ewZnc<=3?#Q;75p^e|Wgf%b0VyRs=@8{sd z8g)cX&-Lmp@G{AzBF3Vi$g!Sj_jpmIkWYW#$%>xrw@jg5Lg)DXW1r_CejIE)?jntb^w2Go#C5bVYez14d)?fuLx~k2;1#^KT74gNz0o7}OFg~l zcB7n}lsjenvyDZiT-Jg?EG{3)wF$#JeSB*$yM#VY)hD@Vh7bu46kfMOz-3~USEx>>1tCAblLB54G6H5hN~3zZ3IGzKr1N7d;D zE3DJea)@3Vo@297-!T79G0_3$+%Zur3-;J#ELb}u(zivNCNeh_rE2;|&tW;4ozRvxyS%C~vDe(;o#0Hyiz8oQj ziFu3V0L^HrD7=8M>~@=%bA}wDp{se4j*rr?#;9s_Ejd4Yq%t!kOo(daCL!4*b^x{j zf?fp1{^ebI-6)6Ci~(W?+pnxn`Lok^kNU)%n7T6FU&-glMm6cx^;2O5ur@$~R3KDd zdI5U4K2B^&rs;1=SeRJKu@q0OWgeM!Gt2n}E&KU4gz|3QyXMP_K(;XYY-D;YN|Q`@ zY!GnnezoXZ$(m1YOF*L97r^N{nO~u+ac5GR$`x1W830h!n>yf&06su_2AmN6c>O?# z+sL8+LzTP63x1JzQIE+|dG%HuhWW{GEJrQ#hB@;P+x)46xmBdmAcW+GP9mFx0w|UT zb-|)AV}%U$3>;0bFQCe(zM!kg#<}t(~W;j}7Uv=Y%3Z0e{CbE2{v@j&s9j$vl+DgD_o6s)b z&`&e0XXqRix~Bg6AT5xjLOM=Y2d0z|SJ+gY@Vv1-jF<0AT8-2)6UIaJI$iAbqFA_r z^$NFJ0Gn^s*d#sPYLx&FQflprzh0xMF<}=hfl2HmDf*?ORL%CV*!wxGc3fOB9`=H6 zz|pFbPxT#gOcf`Yi8Zz`mtIIQj0zxWNT((MS}w5DT3-6uY!P?AkSkKYWf#4(D6?M4 z6wBzP#DktevgY_IMLpt7vc|}jYpmjpdGfP_ZE2>4LP5+Tx+}pEZ5DqQnTbcygA5dd zE1HCtb6Xz!hMuAw?*S!5&0k9WY5e?opYh*?{|9W~S!(32_s5h^-*~rPpacg4@w+&; zfX4}*XO_XfmtR(v57p(PwvX5FWESz4pE3#xGSKP48TxOtGzx9G@XQTWT}0^<%T;OI z7nt=!mkLXZu#-l8Iuo&U({6r^sXAjhGKdx_d3!uJe+d>dNV7UbMP*$fSO9ezkMvy>UhO zb3)1>>S*$&)FmSTNoWK;?Fo|T#*08+o3w=9ha0svCk3{7mPGU2tha#1 z*aDpCPD)Dp7yZB)i@fWe?<_|G;7RF>rN{oh_r~)pFOEapYS?0kkHTX%=UX6r>>cMJ zvIdQM2Pwo)$Sa-6gXUkJ0cw65627`H2s|gemczaUgbh}2Oy_B{TDqow?~35_V>!%W z`Bk`k{r%texbgcZxl~iyJ_*lv%&bgIbA*}iSBY-NT{Ec0-yIh@HO8fgtApgE7qVYpPn;22I)@&P()g+~auz(8 z`u5P{72KdL!r4b}Hl?dA2nEJ|Q(uIt1in&A%9Bsu^3UI@V5w*rfRE$)iWpkk(Nd?# z_js!oK5{X$!x?^lNHgDlru+NikasGc65I*+DB^uPce?^pAtNqsproQGDf3tY z^f7_{p$r=nTW2^{0I;=laZ-^IBM03b!DL-D?m-5axd7;sAvcKp4-&!ssaomw+&% z6DS}Ee}JYN|AfCnVe=m_3*IA%{a1j97?fxilp8){8-@x?9Khh}E0RZzg0MvE=k!BnZ z0QG?YKrrWEaBO{l?Be@acXQ+&AZ zk@oiM2<(;!0AxD+tzyi#9$v(9UiCTWLVb14OJt8f9iJ@VJ+BuXdGv1hvydM+*6#kT z2yo6*zg$zlgI2=$m8e-QUTblDU+7ukNjeoc3Ss=)|3)q(zk6oObkPnV&ZS_E`TTBU z1Zwfc*hMby1PQX;9h95bQa{OO z*WKHH*Nh0ZOVRcr#cBZZ9{JzNk>VpANk_k!y?g(=;Sf>|VP`NtK7W(q@rxQDqdvXj zj=MI*5u;iYkaE4yEU);(2m%5-hAV;@|CIN^_3W1?#2}krMurWYO+`EDiu}d+w+4hz z-q#oJ`fiZxV)O6JMfqCp{d2FKld>?M-%atGh~R|V-`a+r+olB<`Q`;C=8{+J_@9LQ zgX~vJ0nykj6w8<86HVOztdIXiV_{HZ$@bq3^arosx+skFqn41My*Am})Blp$-_7?2 zw{6`f5 zO4V99Q`#_bsYh*PeDGxT>AjJJf1>Npy8p2+!=w7;LItDMgB`_~MQ1DyU7+oi66o&L z6)=C2#(OX?sWYWxgo}Ge-fA@N!aBesCA*xE?V)zqSLq)t`QH&5YWri)Wit|3R90Ks zy{n^n*J}vvG3W|>hMR$OZ$oEk%lNeMMoDyzM@EUdM>ujvN$2{)^%70OLXWx+*Ta?7 zzQ_?5hL!wcn8%SE$4jtYoiH?tZtLc39>DK`2WI`lyzrxX=;(YvxI9&zY*$A5@Wpql z&lC0OZY7??PCP~3)730?U?=)5z>nqaX2+`cqO`f_`?ttR>6Yf;*!1T)tueLoapWm2)yRsvp2>s8kUR|GF zKnwSoT-*(txp}thW{~|nm1dPxIL|9`MFh$lFP{l_`&UK~yQ63`eBua@R%Ag$z zb{2TlKXLwp2AnbAAOGB)0D42er5nWnfH_DH+F0~g+9o&oPY71e0epe!GnC`2pcztB z!ks9NGy!hSMD?VC)Dqsws;1U^9EoTr))gZ&l4Z#bOvTQoUe&mX0Uka-89?&cXzM$_ zyFL`WYh5v#G;p@!Ks}lr>jPT410iK*m6y*%D^A%Wjl?WbWR9pXbde@mz>#%ejxDpF znWIL54?Aw`CnLaW1kJo?Euyz_* zql^d}zTEuc18rHzn>Yd7KPrW!2WU#e0=>YIz2d;`$tN|p`LfxC$3AYhOb0)-I{%)x z-qN*jAo6<|98bmWXRY~~7Er0IneuC<9V(!i;5sbi^`+6C?eq%UB1${#v~23JHFJKA zrQHs5zJaaoux)Crrt5C0yl1VARdXPttERHH52!26REw0yysMiJXc+|TT7-6x7j!8l z6LwjwPq_3#S3VJDm~~N<8~h>^pS&fcS=u}^x6|zI?(yxCId420Bj7RY$pd|)dcXVsvBU%0__jLBEf(GeCG)oe!jqk za|a9Di?XtDDUpj{vm@T+Hl(;u$pP;CkiZ=w1Rgx55e-4_w^EU(|IQWpd~-Lq8iOx= z?RwCSdPstHru;h-g$;OWJHg#0y@3AU50J_VnyS$yql->u!x;;L*)lp|P_W=9NMpsB zS}@_3Ei)hX&p|pX&fJ2DxNKRSFesQY5%)?~2c6CW3f8@nokwS|;4J+|kja9xHe+Ju zm7ESblNo1i0uE(09%l@{ z?#*67*&lM+|5?IKBIYa2zJ2%spZjVgJkuKe2T!

_17W%~0H5aqK89>ruUzN^gx7 zDRs_L?7HFpW%tC<#7Wt>3&%$98QO;`eJChd zOSMsfpR>>ndzF;BlU_<+QQwr#CY~D$bB!t5XIkrNMDA^4q$v>B*ttMLn6UZPneVP- zUqktHds%~Ar0%dWaV+|?L-BHeL4U()iXh#dpNFjmb?Kw9=%)_DyXM%l@82H0Wh)52bS}x(pfPoA)T*N~ z=q!uuX;#U1QC+a%Z`9b$!*EnrnT~ONSN#0pE3X^78^-zfBW(enS9lK%H7e|%bOa2! zsIb~C)J$0bij7KG?^i=co;R(o`YMiP`;!vZ^`$eN^;+D z;I8STM|}2&>0)YgDJC4zg*G4GnZu~82ajIk+^hDIa9>lfka-vR<_X;Cd~mNaPH(H- zY%GUvqk4bzNpM{*-FBP-M=1>jhcf9K4(p{@vmRZxxTNlS>KS3|JNW!5Ch<5)?z!>4 zn%H?y7@QWLsNh}33>PGpnmtUZEYoF=)#IEu`E0D2_aI$#J9nVUJ?>$rgmGec(1=Lk zD}v0fwc%2m>D*kIY%{rQxYO^JyEUT+kDC;0yblPTr`xa|8GzSQ?guiDay(BB5JygB<<)_ZaG+8vo%V`$^L#76Zc>!?h=xB>R=_`1S~lR(h6+w)WSE>S zGd$~j>g9kaBN2|33i4A6*)VCUs7!h;^0+5>P%&#|DY5%W!~(H0yJ;O!{tW<6`L3~_ z;x9yCtA`m>IIaoCN29|WTR*3(}(DG)64S( zbSXb)1|aNtBNA?v#qmQyZoSf6o8& zl$$d3h$F{bdL%0K0l%b6=oi9?A1GLl`?FiXJ1^~HD(E@=l3$fVogc-U}IeJsN2E_FN8=J-~3D zHK9&RpMiNo!4$cw3r-3pce+s3dqDtaVS(W z@!3R`9mnr;C>d3P+YNG7@D2BlWq1+eg9l=U4xNWt;!b{%RX;Wz;7OD)QJy7x~4gXwL;5`xphiUmcbw&}6 z)9R?18#@(ufASgVYa%Y?(Me1^Nu~^w9_H<0;vcDAT8mHghmX@6I4yzJRZq>oc_`S( zHY@z*+j`FD^St=FoS!+fzSA6mR?w&fqu3<@su;)cOX6<`~lnJL%mQ zN7r(^Za>(~#&2tP)tZ4kg<9HFMo5c)GQNm&*wqeiyizP@nX3QA^f{^ObGPE0+(o&N zmzo)JMu+;oOo2V_aCKz(TR0#7l*E;p_5QSM%lham&D1j~gW>|6>%FVx#@q$Om__OR z2kUE@&8=!K(hGWpqYDBP559i)KEf6EBsybKr>yh)jecfJGnYpEB z>5y;d#Z;x%tT^m==dWdW>ecgSH=lLs*oMe2ZIa%|UNY71&u&>ClnTAM1x{{(qgw!P zd?G+*=E*U)A{QjmxN1rXvOjz6@7bALe)%$XMy~$Bc2d$*rQ$2#~(TIT)}O< zuxsA-_I&>YCqmup&FBRH6aGx#r`yj@1Ms6Xxm^=>HiETggRBCGdHf$q6TYo@dTfQdKnqzm7=>Yp| z8Z|5{)5UXbe&X7y-mlPA*t>c1mBBvBE%3-!*DnOE^M#Sll$IH8$;19Tgs*onjwAxM z6sqOp^(*;$GgV_2T=O|d&LwvWXSqshh)|*&oWI_gR%k3WZ6+^7MC9+Vptml2wz(F> z#>iJ&lkNn;?}$OA1oqT$9qg!Cm1XX zqH`~}k)~{)<0Gk{2^}QZqNERY;s=dAE1E%Fv9*2aN}G!6awG5kR99*a{9Yz(b|Y~T z{aU@B=dA3t!rkWu4(X(R577I(>kwj*^mcSLk9FpQN|(MVe9>t33a*d07yB%B7lryn zaQY^)VYVq9UQ{Q0f{P*5i^0NejoCHBzjFZKRPxfpnN$iw)On`(@zKo9HpO_gd{Si7 zFt^ns@TF<7N@1K=$m`*ygK{E^8gaf2rA#c)>tjt#oBPDkW$?t&^>s1!*a8>s2n!$T z6Ys!g`@LqhuFS@+;Q|HU4ZZt3xofVeK`Ql^P9ig_-xssQUOtct zrgd0;k^T^;>5CIi#ggd|bw46yzr{GQWoaXU9bUmqG85riK)uRSq)KLM&ysSb5!mBT zA>YE5*WW-QDHjPFWjVQtjl?>A-}sXVsy*%8-P)`8RDHFA@cTeQDk?GT|n z--CbD^rY{kQs`X6kuK^notPv`R($x`xVuM$pWjUN5PvKUGm4%rI`fSt8A^s|e1IN9 z$wpR>bLJzrBLTr56(0$Mdm7Ondm30o1dQL#O@7I|?8~loWTB1*rs@RQprsyo}gKv}vrQ`|jq}#;6 zGm~w+kk#~tsfsDPfj6ala)mOW(tL&=ll$y|flhY+vxZ9Sr}mOuhBjaA|38zFeSa*B zuwdxfDkw+w^0}9W?AgIpN$lbBxi-UU*HM*bU*P)F@(9d%!}f;S?f6|m8JauQ#gM``)_>rHnxMq#*lSfa`k2p8=`Or02Tk zibl8U!Z~(#jBZZnTD@ajZ+Jhy70{a%a6kmVndJBG5vaY&PQLB}KLV+hGF2@gv9+uk zcxJGWDYO*7TZws8R(E-?hj}h<+fAd0pxF3p!8r}Db`UT%vTWg5l+_afzg|%!r4ez$ z_;8fCP4J9i7h(5O9c^3HmbIwVT3)70+Ab;7#Z!HrxJ9X@zO3!_(C3d$vrTOpnJS8) zq2^GBU6t;g3~iGZm}AR(KjJ7RTvw}7Rvbu6X@q*NqK#k&Spsjop z!A{$*-$c86r_daUm&sld?0)G(K}&qw82JLu^OQdI`9itDNOLXi*7g9 z&5?JTtGA0^?Cr@9H(J9n0jknv3|bF`y$bZ;xis-h$QCA@J+=!q;;iWAy5E*QJoRrmR{RenQ_p6J2}%EjAR{VDr967xH=P9f>e&uJp%2ja0Wol3u5 zFPz9Tn+^*vGdmbEyZPj7%n3rOu}<)$Eecgs9X2z#1q9)7MOAY0DMm%Hmn|5?qEiBe z5##)`ZUM@YF0;=;Lu2kR3T}8idRqolQA=wvss8-;jJ#E(o<(c8;jO<@yhwUM@mxiN z;(4tcb?V3Z-ULSqvGwI%2aJZgJpbplFq~R@ug}UXOi!&OG{dm6#9j?{g?>iwspVwo zX<*A5;z!MD^sS#O#MkE(e}jUUA|AS|8)9Xl84~$GB9WC8e+d2E`+}mwBs^)A8%GR| zVFCn(1o#uU;4OWQ&X=_JoS}Kc@|b%J?LHBRqGhArhruM01BnUBDV%2i$xIHKwu>R9N73aQ5Bxdj(Q8uc)-;OD(I>|%q{F-NzeBycPo;I3(T zfIt{@KPrW*VB#Q;ZlJEFtv=&^M<9WA5It^2m&XG3aBCAv2m*JFum7BB9-wp6p0P$}Y&g!^h_gI(ZN^r7fPh2QeT|PcW{i%{Y3x_$|r?Z})~wsV7QA87M`1+@6a zk{E(qVofR+pEhJ)E|~C1Ap(C7!?_%F)Qo5LSCYO5TiZ?x{%~_do4oV>>b9}a5`SRR z8AI|jGNzZ+*pI0JFv^4nXz%d^YxevS2x zM_r+3leR4Lc`16|#rPR#YegMjayRUtxb9&mi)YZ<3B2|Fh~m8P>_%9f1k&$_LVDPK zmXhc)cm|I{5W)#rx+pl%M!07;27Y(SmYe}k@_`cb>-cdNdC)#O=lGFQW^JWWy`fN@ zb-Fj1Be?sM!-Ae@!6G7}z#zdPKwl*TQSiqaz~5@XW#<(2%^ruxBfrn89EHUpqGaUg z{5G@dffzoQim_AW#EQ6KRtEy5s%!Le^}*pUe;R@?=uaab$HVWOX&_&eDl3WAmTtK; zl;e)FS0a16fX{pJg)tMLCDxXA^~)uCTYj~fWslp-DZlc(_f3l;!8p&GRU+y`0h31` zX+kZMyAQ+eK2KxI+6PIVfFvPMl4l?ZGe{xA(?FUgQrY%xdlpb z3F1AxuluOqUHazD+4ix_ehq&-fJ$$fzez$?6>GHCp4MkyOmoA3v$`%fR8qI%aGxqB z@5qij8eiOz^-{Jdj~b7?ykN!G?`0xQ&f_kB2?5s(T0%^6*Bp z3o5pg#ZMf%>EUA4G3QoYETmUt>K=>q9b5Y7&&LuB~vtVRTiyG(< zBB`JKT@BeMmNqg4G7ZaIR98Gt)c&i$$)Zto3>6+>#>`%yeMbCPWUU$sJ$so?5(SrVX`uO<$$p$7zMfmb^LcoIl&qS?KUIyw5&U*%Fmt zEXYldzF(`C@P#T81xl^R{Saxb-q-Hn8|cs$|3&%J?30P#BWm0pdTI+F&VIj_GTP#q zUHMz{pKN%p?*4A>e2#rGi?41!n^=%9HT@ruO1nk|OKWA7aAmDCaD*CwBQyj$LSKR- zlm#52J%?eq&)>1;KUv$c)}UeB{O0!19o1AZrVzEiP}b52@?@q^k*Vcv_&1-b4}~o! zu;@a1+Uk)i^T7;PYWWhc8!YtoaoVFPT>{0 zLhzFeiP}=M=JUQ~>SbK%xYRfXz0z3LE?KeCMU~uXsS-57fe=xN`rHIrg<@t@gKe75 zd$_n&N7bE9rKUt0T3M}1Z>{2_PsNYkqo5x-Z^o3(yb@O|PQzxeaiunY6@h7_Z$A;$ z@1$~y&0||f601dFF;$##chhwJT!urI3dK^}H7~zdSFPH7jwDrJ9)@~x{VuU?Hh$hj z4;p*^rs>=|=ew#^(_GUTmZrLLdBMo5xfs(vgG60L{v#{Kb@}a6q$_9UTY#Elz%RGv z29Q*2x-2p_Nu5k~e(DuosblzZNtny>Bp`Nx3DGPu%IJyr`=+A&i97-`?ZP~&ImTkz zQ-u(%ZdV1EG&TyJ0aP>=#8PrY}FL%(Ny*Q9CON4w)V4 zUy4Qbf68XCr!4b~c(!@HW3Z3;hG)+3m{Ui!6#vH6==p0-pTZE5lyx8P9`)i!;$|9V z@->AOYHuD&OACFh6Z|oU*(QZ(O%9sXe|JlEhkv>5Rth{QNRA3zZv_?w=8@htV7X29(%|Vx z>XqiGQ%Dxk?JYwTxEXU#>hjsGMCkb2g+5foP%;j!P43zg>jPaX6LXZY-1*2ZxW1%) z3pfQ&IVToT>toT*VHO-@d* zMh#E%>@f>`c^;&LfvIycu0fw3}LM&1()209%BpL+rcg+e!Fxu%{z@GH{PiIaaw+KOt_1K81);KkqZN&YHPvEpw>SH`NM zrvqbOg{F%^$6qo_Ks&$$7(BHOv2>J~Hf!h!%}R#3e4uBFv+}lR*pBsBV10%dmR89h z+Zt1mnX2c0l5Z~zQ(=XDvmSnK&;8MQ0;IaUj(58b8u54`LW@SUb$Po6ZVmKu!J^Xp zyCm|rE@1#B4t;}Z z)kG-uS=l5|g5W}Wu_aK#2kpzbPw4GJ-mVh9>g7NTHNzwry2q9vV8Z&m*YGg3<6k9{ z8kvt@WKI18IoOvqHOj@S3zoO)T+uvX?PI<6skC48-gzQsTT@K^y6fob%Z*YTPH+OP zr(2w#V8x1_v9e;BY8pp$jYO)EF2&U0_}A%fA}W*Dvawf~rkF zH$1H+f|D`8yAm~R>lXDGS;Iz#uv_lFjw1#gid{xl->wFqtn%WkAa-W{zyz`J?|_wy9-B zv!sV+%dkxoMOL1^*vT|{a)!DZ`$Cb%;2hyef0z7_oD6TiE{5NH3@xTf{h)M}BbMn# z@<5fm%~ZrXMxMSpGDa|St8wNoH3@rFp-ls0!Blc{`5SdEMl93Pr(ud34eeKG)O<7U zEt_7fJM=LM^0Vwk_lh5_3wS;m4KKgSlLF7|;~!aLS)?*!2;==8CoVVIkZ zNPia}dSl<^KHSt$tz+bAY)!{}cf@AhN>L}lBhxa*n(~fSS*7|*!x0`vtaHj~dd{}F z*K)b+-{t(ND%9j*s#^~>WHsUzn1~v(r}-bFv7ql|M;9upATNPN694A%SLfz=EA>8=>HgVBoRYdgWzTzb~rbzqVv6eS+U{3tE z{#mwr5VOX5mMn&ZrT_Y`&<75$i(_b%P0%fQpA9=G^pWucY=R&t0&Wu3Y)<6g70hiV zdn#9tgGA<{GciLQs@Ale$WxY|?wOf)2v6TL{&Q^dBjxY$huv?IBZ0JuHGb@6+Vm0? z7^=-nTD7s(CqfD-gIBVX=d;HeSf)5Y^$eYakGx0g*o9eciqlgZl@<8@rtMFk)(H9M zXQy+?@k3;0$R{!S>?Okm0!E!;;4B%hI*8TPhDh=0QN#~ro7PL@DDwtuph_wuYjImBd3?cOUu?Ft96Fig=cI0VAZFe9 z^VU_lFmAkmfVgM^AwX)Egki<@357F!@LwYo2Z2)NqF+m6bDfzRXYQhu^gQ%zy(0u% zM#PNaKDI1khTCa=pK&p$GW>t4`|7x;w)Wp)sG*1M?(Rl%=o-3_MoIx`6=&$~ZV(U< zl@KHqknTo0q@<*g5bxmeob&$P-?{O}dq1Chnf=*&?Pq?68qYqHG>+Y$5DTj4=PQxGipDXN+KM5{&pQZy~# zS>P-YGrTuzS2XXRVFL-w0LV6V}J%>ACL|euK+LFmX0iCZdBi1)sI%stV-VoGO z?iw%Hrc$3c`&bveA~iyUgL*Tqu! zh>ZR#L?&W71u>z54?qOI)bZf6Mm#w?Jff3@B4S^HtyceBfGk6g*zS!@tU!Rmhc1RP z2eAuul3D6r2|obHz$=K>?Mzr{vmoTXDT4wf^zKxB=05?8uj}XCh!m0Mx7aEwD&91e zmuBt0Y1%Cf0?`FUu@zx3C8=`N4A2Fs6h&23L^&1ZwZ4iUww&tO;&uLVl3wTWeTdYc z49Dpl1p-lgVnmyhi8v)>Dpd&yqA-T|69ZSbY7rbg8c#cM47E&UollweeJP8A1Rk_| z{si=5hW}8EX52tk>OX%YL(RufAX346l*){eimc*SjlrRdv(cl3;Yf7*6TsLk(Q%1X zeJ5*>`{XIfQ4?paQz*VpYJv1e5Hk`C5nC%ELID7{qNJQ_xLF^VYq)0Ro{DJ)gKUGC z0^4k9Dv>{+j76BYfndQ<VGN0x#OCI(}c*1m0ly}5OS?zkJY$tYMR!&CocThz{74Aj!zpQF( zXv=_!(Lak;=bxZFis{H4y^=#b1^sdH@-JApVu*e)37=XBz#0zqm)r9v=npRH;E;=^ zeZu#7FAC8h>!p;`iRy^5r+l)lVMnw=(w#L36~}rwalIw`=7DO~)%g?Eh&H=q59_9w z`HZNe8+&f-R}6hGEAQI82<|mm^ci9Qc7+ii@RiZGAG+8ppV4Y?a+kvNnM*C-k3+2{ z2irLhTUYm6;bMq?oqht8hd5$mGu#myx>KZ*-Bq#0kb?b8E1KpM>=72ot?Rc)z=-X1 z$c-iGrAPLR7C11f8hR-*^x7mMC~sz)bt%Z88?v%$>1Yuz*qjAr9B4x0S7mfFSHCaR z%+7H@Z&Fb`id0?g8CIRL&%vbqSipr^^J!Q}3MPJOG3MlsK0B~oM{1gY{bPZK@Cyu* zmjDC1)XQ70G3;pC5w9~_Vsq$3BU|A0{s5l{qgWdf)QUED>k-rr#rVk+Ey4YYx7S9H z_KX^L`T94+9O)3}H0Go*FgiuLXWN5X4feavcGuOv$PE%*ox( zH-^P9FTpAT4m;2=UTVr(cPa6MFDv+|J1`o>HyR8#FQJT$p4JPfD1bgR72;x=ReX)2 zA`l(Usud|YIw1idVh*_wMUH#AKoI0XX!5AjFaf4-AwU|=wYQh)jRfFSr@0~!Qw4j0 zWmrpR4cGkS*mK-pm{pG|eB_)iG(^b(@|O_|L6g|t(SM5s7GVG$ntUS3LN0+|b?Is^ z&{EOu7KH>;*|dF`^yD|Hq=gyN8-&ywQM8#?4{Q#CE%^z7NaPH~YIHF_;zAbS0NNER z4}G6;xmWF|gQ`|wLy$&C495betZJx};ln8#b~bvy2N7c}41u+B%V4bw93~tp1{Et{ z{Uh7EcHR`w&*)=$-(!VAM_!kO%X6lt0whsOLng#4XNNcS%F#mamy`-j7f?fdg7oNN zT4)K-!{AdOfOsE>DMyK|z0*8MLDga7j1F+`fTpNA7o;&5-)6S52$$0(;t@e)EK`^?Cu*o<~zfeS!lO5uc5o?IBy3LA)$qGQ84Ol5GtH9te@V!X;Yu_glmq2`i zMlcqpOra&Hot}bvXXObNno>b^bXa9@AueAo&`poUC)_?;Qe4G|G(lwmuO8)SfK%OG<^`w_;EO?CUR z4aG=%_vX!v_6^Ak;q1F%W*dXY1=N3xjS`NA-2bjX6e9+g`Fpx&a2xd?#IYHWLX@DF z5HY+N*-kv(VLe`jLi$0H+60qmSl3RDbJfZ{-8&xS+yPqj5D|=r0~H>n^F0ZRiZi0u02mLm?%5(y?y8(@3O%lIJ7>~5sp*f)QMgQ=FB>kHhCirB=@*UZ?Jx zKc9e*27;mTzTvPSOa}dv9n)Y6$&I|wPLS$*1GyGan`u&ka(GRcWNZk`WD$H#^~IB! z!z<|cp|M=@hpv4r3Yw=(Cl99 zCrW0ktPDa+4&3*13+}8_2RuV7*o3PrLC2ph_ZWJE0efJhOc*; z0a==&#bkGZ6Q&gp{ThtRZ1BkBn8x)B7T4G=~>-K4ig70rp~?Grysk*;Y5V zVzI++&sh{<=Plc}P5$;HvcpeL&$964)KQ#1Ovrv5N4N!P$eg}HM`p^3K=RuYQP;bk z3&zq6B7Og~X@q-9>b?H)qTYbF_Wv%aK_^qnUG~JFE;0oD@ZT8?yAf`IIAVm!`8^b` zf%MTz{n^)FCgrL9>*e#(RL>gs6Gg%S|07A@0=X-#=36=UF%U`yAD<#cr?mwzi+48T zLL(rlUC3#wP8b|L*KnofPPIylBPDb=@k#st_#(TcPyDsn5|;B-t<3-?3jh=ly32^n z)OmbnN3%vv5E|T|fg&?1$Q{ZgvqU03WltK(Z!E7ne(rtAa-9g7~{p$=@+_2Lz$qyAVW zoNNB)y4(Q(uNomC`Vf8<5w?CryaY@)griZV``rGvxG@SMh(%R|-hqM+D8dF)#LAXY zX7FzCVbCXfyV|x%eP7bPY@58zfJ{$YA%Mn3Jt(pp=l>z!eAEx z$lhl}=N@d+%kAgWm4MZG5eHY`FCc%5azp*0Qn!sdX-rneEY*NaM<*7Piq36K1m~H% zdXDg%e?>L_75W1F91&*8jd%LTz4KY0yb-T-v;7(~xB5P`pMal$i~0MnC!F?w0=_;= z>ti{8VplWkn&ei8{uA*2<9zAF;!nW%{C>LT-nlAs%`DG+{>4wgqet&8M6WNI)0ZFS z&+a9u+t>d%U;cJJcmL7V^RpVwdwD;2-_J6o%|AedUO-7wVGMAN5A|Bm9#A~{{$aj%lrp0bu9Fsz_(u`{{c+|S!|L2nBB$&O6|29vhAWi%ZEHK<) z_Xqp0vzJTr9Y(&7JMCXY$q#V-)r|iF{w+=J4yb<$ufi379{&xT$0KgX;zXmHXW{@~bAswGAwEf6x)g6}bYue&&3lsSI z^HEejsPY-%7is)eVH(0y$K$Fs50Q+OM=G;;jl|MoSF9aUwrx&Qk1su9ktJF_n1*C4 zpN(i8?36sdsQ!ZBEkBGWI?R6|E%<#+jZxyI8}~z@Nap9rH2iw2H0-O=f~P$plYU#L zVpl~k+odzF1a%N<#D5@yas7Q5+@%c^Wv+Ik@h3*bbp$U^d zrremo!-$B8eEwJ0BNsSLWQFGFsZH-(>~A~gp@z^wRZ<}x1$P79@hv;w$QtqJZ(`xIs3P`DB}gW%JY!hC{6x}0jMGpvC0GGv=Q z^ZkCHt#FYhGm9^+}x-E_a5S*OYW#opWci`{G=aph#T|DbJpdEfi#+olgji}yJX z-lkp{^GBGJ zRt0LV1V`XP1#WHO*x;}Gic-+VkgnPeRzgE`l9OT4Z-%9Pxv=1DUrQn(RW}UuSGw*G z+0GcpCnL?mD-$=8aHts>{-{B@f=`2Beoo)8*(H!#rsC2oFIY(%%er_abe(>=Cjey-5<5qMq}Sh zlz_F3(>(H;3zpG6k$31*+~nr?yYCKF6r03riO@ zm6bQT_+M4&xE6UhB1Qr}in%?rr7_%quyy!0oW|r-7%;c{j30K*d%T-eqg3dl)lE}l zk*CDWwa*KMl+@CwT%{DY2+U^tw|+$*l=wt<(*+7tj*QE}PLX_>jghxh_c)r>E6;0V zfX~;q`L(;-=Wwjprq?%fs#tKexr^ICtTi3NPP;2h7=~3&JLqax$|*bm6sz7ht&<*$ zgmaPZ%RW^NQ5RlvTb9VN#0(q1nrDb=u_wkpzs+gV3ACuCo`{{Um%4f4%!~zH(OS1gXvagDT56#@<_o^?nbiMNf_U7WU1q!FC24} zoNNd~EJ5gnVt8wL8VvLEW!9+dWpSNGOJhNqw1(omqPs|6T~ay>oi(;1*v&ayvR$5STfr-6`Qn~DDFTal_fQD1YAKA^kIBC!W_wNT1h|9g3`W{VwlqkYIWL`RS7se{!0P| z{;sZ5Bw7rE($)(~pSlGPX&0>r)HbX}=b~NNPGaY-U&(wK8rZo`lc`@TgD_%RwOb1K z5{^fXLzJ;4Jd4^^V;kn-vP@=!Grjd(rd>WyzqQXho9?yw#_ykG)ri%ch>d4hJHBbz zjdyr@vgC|pkr&P~nLs6pOGNO+YTI@?i@Y-+!y;hx1#4ISRTnlPyJosbmx%-ak9yu7 z(@!==uQDb|$T|bXW4d;SEc^|*sy8C1MT?yuo(moGW|LNHuJEqsj76O5NgKJ&#SYvf zI+pp)p`)sR^zHr{&DkyexBKffXLX;SOwU+%{Wetsz|ct#4+$G6D1c*VFSO%isLdU&}%DiBbR8C&i~|`Sx!F zS-k>zGXuT{^^+Bt)8Ir9WT7`JNfnw?nRp1lT36WSY;t9uuS$8)% z{7=E-ep5s0eu?*zURs=a&XkyM#(oc&fE(a)ea+cdP|?Az z#oQs(rDUv^+13KNRk{zbg(O8kLG?O$i1 z$;ExSwja;AFaNs$bUM0vbhWcQ;$11uX+NXN!?z}@mbD#;m9LilbUI5_w9Wke)=>#LzF{*=Z+q@_Ro)Vxhw8`iUN2lYQ@UGJ zB+9*;z!RAkn^P6kn!ZOxZX|Vdvt9NLU3=WG5z9dt8n_jLL{!@}zm_*kwXRTb6L%#I z_!DFsSE8o#R>(I(yqWQ1K520%mvKNfB87k=A@Fr4LksfGx&f|*sy$=VV)sWB+^I{* z!dMY)rfUZeH8wqviD9Uzol#mm^~6ImO&!lC#!#jk$7iD#ocgquk;Fv9miztb^`IIm z&zt#PaLJi_QI;_Sxb6kN&-&itU750_KHH zNZ*H3_)%3lC;!+_fBwI4JXJGj!Nhf*2i z0~-Ois7ugI#%(!3fGU|{RW+lQavU}s7cHeVIk6D!J;E?nYU(43_MpIm%eT&QmUC3VF4J9W#*a1aGD5L>hQfMiLWPArXkrTA! zyyc*+s?dOE+TgsDwhTBcRd_hirk^NSpNvC}8x(-r;A<1%#*CGXX_3(Tean^seP%YVLw@{K5+(75LZtMR7+lO@zgxeuWoXePcMfu_$<9=~84qq~XB-c>7JqzcwM z{8~pE+ek)}z(jFh*t(uigiBlg2RjW5PEe0cVR!YjhsiFYUEJDi@%riFlu9YiRVL9c zIq@=wX%$FDF#AfwR){r?sum4!w~bR@G$V>}4xR+8laAi(zyI#I1f`)c-cz(DeJf8@ z4W;gtbaDqYpz{ZuB+=4EDv2)#G1J*XsH#qta4v#Bhs4vUG>C;a)B^R zjAfcfUQ!&Fik_}1Nh#UMk(tCM6DFaJl#J1yNux~fu92ja)LA6&PzaafK`x&A#N4?| zUr?F_Tu)3gPJzY5VynbXY>#pK=_~3v!Jnfp_A+K(=OgV zeG(+A5+a+h%%aXxAeGYDVe66%a*L8j;(`z%wJdB|IMUZ)^g)&~4Pa`rru6cxZQK&qV5Uc#dCC3t_FEchz zaWJk>kwZ@Z;gRUd`gjUon_t2w!g9J#^3>vqe7|UEEGWVXN!}uEqAxSFJr6rIY*ei$ z)R?O1E2xq`xw>S9CAw3F5ZGd35%4Gd1X!U6C{ZR^$MAo6{{l8-v!3uNLur!&ct^DP zY%4l_`phu3oQZGq3r4sp%p{C5$vhcbv=!T)S#g?cy)Kv9nZc3lAs^x?APc3wEc$II zT|NGW>=(J=t`04J$rrE9Klq>uXklazz192Fvxl}CHC2ms7_4O1y3?oC3OIk zG_K7XwJ!CA>eyxt_hk0PC65;ppJkIW64@z~$*_IAA+{=DO22x&wAJ>Cso_t+e=;D=@hrR?quEn=JXWt-XCQuS)W_p^7m6ftSsojDQ2b>mC;qPC5YOC zdPlCEzxp+*5OR*7Cpinf8l3q@B8A zv$It;iiz7~i<|p_YE3?-C)IG}>oZe6Q4-+IXQM_5UTY(!Z)zs6FqIW} z%E9ecdN{VJM|lDaX+t}qZAq;`%w%cWFigG|#e{AdQ1*p;9iX94a5IqgfF08|DsKy+ z$-TptP_7arO0S?BB3M;McG9H{nMtI2SG7dpVy3?mhq8a7lc5kCSxo8Q7x#-{P(P~S zLR^Uuv&P}=Lq?cFV!QdJCN6`jDmscvrGusET&hA6J%9;DbF%PbgqMo^Lh2)ka)YZG z>A7&5MNqo_J^+ib+Dun00)x%$HDOk*xTXjL%lsSQ9ub&K9^xJ!jD4MVKO_{OiK4oO zsooNw@Yu&o0j2CBDDtWuX_xe~v%k=e(wZkPvA_yZ=11n-;Ay-8vI0x?PF*l?GTW*O zJ^wL6C8`$@u1h7OVIDE$b%|NUJE*K@H}DWlqs0=g<8iwQHQf)5)@*JmA zTG3KFUvcGF(+-l~ERN$fZhY6MgeLPWzW=ai9PzGSOZNxN<;N<#$g}badiENGLqr@wOc{iX z9yeq8LyL6Rd6rDS@ttAMMZJ;{?UyjJc@Tu?4+M7>Xg6-GDad3u&0k2hs5qWLRi5M^ zc*rx>0A=z7uK?5q000IlLt-&B#R?Th0$lKwc|1^6PzGHU$fV!WH2DHo_9$K=w5sZK zuF}ml!DmaDV~~4aqaiU)S=P>CW;SwyNX7919^!c_o+2|3Si(LTGNMef zD^Wxh?i0{CI5_x39DLYHw|c6R!{iBIae8uuJSCwi)*{ym&V%D{GIi;ASQQsG?V&v1 z>42-R!`xRK1ezWxI2E<3~g>P*zWfxef~Skt;sMoA-U|Zrq@*?%Nx#X8sLR0X13*LXZ%L6uX|n_W7gt zraifKKei-tj3-HQ@=%uA9I`t!=2U?QEpo$9zRF)FAZSI8-BjQ)SJ!cgmos8RVR^CZ zXv%C&KT!txXE$d?+FoX&ptcM{vJ!b$R;)$8|=z(wYlBS)pYl!ysV zSPLnz%Zy!6}LV!fxBFYt!x!a0Sk38jD(yD;x1gXbV=t5~RfD)SR|cf~L( zvrB?vCJsK?0!@|laZ;0*AShPlXd<|EPh*{)a42mL3(O?Sx1eH{u!`@1QZT&f5oPji zV!K`u_?a781%C*hP!#t>jba$y*cI*-T>`37=;GmS+JPEUvF(&_Ny{R0)ZP>EP2!IC z&BWtsRM?T@!-<9o#gd?jO}f-J-Eg$*kWIk=Z5zUJCKvblb`trv?u549W4dULST@7{ z6@uOH@hE8J=NdWG1o?fRxP_8Z0EXIV4MhlKrAY^tC|=i}-O8g#;0cI~Z)dFNc~?#_ zI3G*-6VO$)fzvBH5G({_Rr_q%nX1UFB5OlutZ$4ZhqQbD6rdl^e7_>0pt&Go6pfx8 z$7VFv3p>)T#=H(f4me&<#OGx0Lku819fOyl1%ONs7o;wYWd7=56y1)m)?Jux$XsHo z*1-9gF-G}30dkx5UIzlF%Z0Wgohlz-E=wMv!%XTk{I zf$5)29kY`#KPy5XF5F}%!f?l9YUWp;bCJy`szjC?rRVej2P*;6>DZa_tY$z!F_ch> z#P2H~n5&};=%LBbLo;LXg_M}LBH5GG^1TiUK!5{-hF*KXGrBgN1q1B*(p)xODWo+R zPopV=eg1GlySl20(V?QlBs)D6$uD(uGj63kN-9w`iTXeoX`#YG7bT}x0Y_#08APp( zfZby5q@PXjLg3lgAY{2%Py0T4@)FzP7197CmJ^P5XaJ-R6((5or^Y`zY%{vm4j-Cn zuB-!9M2GYSmNiEeF*9l9x)S~mr~rW3qFm1rupY{LRRXL;ohnAM!Bx>k1UYPFBeoK# zlTp(&zQu`mb?s$A;L=0#{CraX{ zAsNS=OQ(FUd~jLH&C4HSQ!APDtjSKT0Mj|T473x0tqWP=^(r~HTBp{Fa;<(FoUjwY zkGY$v^kju}-?nz|jQ%vbfjy8sGF-`!j)AFw)o4>v)Hc{Cb@TN}R1zdxYa^;=faK|? zk>SMgFI1VV@f`MbCP|=-&HZ~&K3A&bo>U0^oJx>}^*~m&3J8h1ON&zTIM9Epkeulg zQD31|uL2%;Egpojo=mco5XwQWVtwkoyn(B0o*a-FhT*$Db<-QCE1=rCLr0GqB$@w* z15h>jqFL>>_xXeSi{7~b!>x{%wQo&kDtD*7cO}mLjX+U{XK_38$P)&NSkOd7a|4#4 zPR&KVL_Doi|5$Bd`!}cb)`e7^F}u2op4GF43Nqxr(P~x+3=l01g=-g|`iGgp1=dnXAHVPvQso3? z4l&C{iq7-MswcZlqMBwIpRm|*McZ5I&gy1h!aWm-9j1sBBN9P1bsR560qHiFgOP}x zH4|)}eMo|!Vxu?Thf$(Es(xs(U}Iu3b-EHTdGO(*A%$eR>QgxIvuOfBrR3NKF?P|X zv}?EAgB#iBcq_V3jjTY7HA2GK;xcrA{yGwX<#k8j6W8T{<@CnlVxos>W4bt$SZEHo z_FLoW;jIBR);21i2)ax^5BIT@JE#jNBb0af^z_1neR z<14b766jKuaL@WrS(#K)(j1gdG@pKhKq(9IZuN0H9ACTjSo1o6Mvf^0Fs{3@G zo)gsk1mIooe}8L@#e0ZYt#T%iWI!ix)>rO)Gr`?vF%K{GJsrTA9~hiC(Bh02`S#FA zlLp*J1!W$v@-H)lVDOOv0ZE?%7|0#&i@@#ht!-@)1B*qde5a9Ao?4LNYJRWs#i0^5 z8J|^qFxsyRoa`)3+kq=^P7>UD@Rqar`&$Rny2N!Kr+8Jn3x|=tZyk5A-~Mio^j3Nt z!l3~Li)H|uEdSwi|85||zu`T*LHIkXw1_Fa`Z@=bf3HL=WKJ+I7Ed$lJYXpJDP;cxZ0-czg<)q z0~vflY1&#NhaYFEpLfxhM8@{=a1GJS)E0RqGGiU!d_A%(ut8Bpf^gZDZ*5cQ;EN~m zi_O6#4BrC?eI}@vvzb8eAtMW^G z5vYLxl&D-$gF_d-%Z~>dUPwBus}hi@5qwi8Us6KTw-R-CqNpKZ!3qf?@h$E%+I4SZ)0@HVfUFfW71~T{`oR@b3c6KJ>XZ@!#5^PXqjgAKtHpT;Mu>jE zfyM1Eq}X^OPQzv!fG{d59Uk5UvSvpy1<<~#>Ly*J11WP?8Noazb0i4?cf?TtajQ5Q z;kmEhJ(vBPYZ*lQTXuMOjH~d}W{UYUspM7e5a{`_V<+Wgn9;lg`+j^pP^Vb(xo-4! z(q6dQS_9JA2BswT{+vOKn(V=_v6;3;%mK(}SegtlFG2$Ia<9Id$WWJ8*GXMfKA56tYsYybcN literal 0 HcmV?d00001