From 1e1fd95f07a23ddcfa48702d0000219af4329234 Mon Sep 17 00:00:00 2001 From: Noratrieb <48135649+Noratrieb@users.noreply.github.com> Date: Thu, 1 Aug 2024 15:35:53 +0200 Subject: [PATCH] MORE --- newinfra/nix/hive.nix | 24 +++++++++++++----- newinfra/nix/modules/contabo/default.nix | 2 ++ newinfra/nix/modules/ingress/default.nix | 13 +++++++--- newinfra/nix/modules/ingress/nora/index.html | 8 +----- newinfra/nix/modules/wg-mesh/default.nix | 2 ++ .../nix/secrets/docker_registry_password.age | 9 ++++--- newinfra/nix/secrets/hugochat_db_password.age | 8 +++--- newinfra/nix/secrets/minio_env_file.age | Bin 397 -> 397 bytes newinfra/nix/secrets/secrets.nix | 2 ++ newinfra/nix/secrets/wg_private_vps1.age | Bin 257 -> 257 bytes newinfra/nix/secrets/wg_private_vps3.age | Bin 257 -> 257 bytes newinfra/nix/secrets/wg_private_vps4.age | Bin 256 -> 256 bytes newinfra/nix/secrets/wg_private_vps5.age | Bin 0 -> 256 bytes newinfra/nix/secrets/widetom_bot_token.age | Bin 272 -> 272 bytes newinfra/nix/secrets/widetom_config_toml.age | Bin 4006 -> 4006 bytes newinfra/secrets-git-crypt/wg_private_vps5 | Bin 0 -> 66 bytes 16 files changed, 42 insertions(+), 26 deletions(-) create mode 100644 newinfra/nix/secrets/wg_private_vps5.age create mode 100644 newinfra/secrets-git-crypt/wg_private_vps5 diff --git a/newinfra/nix/hive.nix b/newinfra/nix/hive.nix index 0ed67e4..ff3e1e0 100644 --- a/newinfra/nix/hive.nix +++ b/newinfra/nix/hive.nix @@ -32,16 +32,25 @@ wg = { privateIP = "10.0.0.3"; publicKey = "pdUxG1vhmYraKzIIEFxTRAMhGwGztBL/Ly5icJUV3g0="; - peers = [ "vps1" "vps4" ]; + peers = [ "vps1" "vps4" "vps5" ]; }; }; vps4 = { publicIPv4 = "195.201.147.17"; publicIPv6 = "2a01:4f8:1c1c:cb18::"; wg = { - privateIP = "10.0.0.5"; + privateIP = "10.0.0.4"; publicKey = "+n2XKKaSFdCanEGRd41cvnuwJ0URY0HsnpBl6ZrSBRs="; - peers = [ "vps1" "vps3" ]; + peers = [ "vps1" "vps3" "vps5" ]; + }; + }; + vps5 = { + publicIPv4 = "45.94.209.30"; + publicIPv6 = null; + wg = { + privateIP = "10.0.0.5"; + publicKey = "r1cwt63fcOR+FTqMTUpZdK4/MxpalkDYRHXyy7osWUk="; + peers = [ "vps1" "vps3" "vps4" ]; }; }; }; @@ -71,7 +80,7 @@ # The name and nodes parameters are supported in Colmena, # allowing you to reference configurations in other nodes. - deployment.tags = [ "dns" "us" "contabo" ]; + deployment.tags = [ "dns" "us" ]; system.stateVersion = "23.11"; }; dns2 = { name, nodes, modulesPath, lib, ... }: { @@ -132,7 +141,7 @@ age.secrets.docker_registry_password.file = ./secrets/docker_registry_password.age; - deployment.tags = [ "ingress" "eu" "apps" "wg" "contabo" ]; + deployment.tags = [ "ingress" "eu" "apps" "wg" ]; system.stateVersion = "23.11"; }; vps3 = { name, nodes, modulesPath, config, ... }: { @@ -194,14 +203,15 @@ ''; }; - /*vps5 = { name, nodes, modulesPath, config, ... }: { + vps5 = { name, nodes, modulesPath, config, ... }: { imports = [ (modulesPath + "/profiles/qemu-guest.nix") ./modules/contabo ./modules/ingress + ./modules/wg-mesh ]; deployment.tags = [ "eu" "apps" "wg" ]; system.stateVersion = "23.11"; - };*/ + }; } diff --git a/newinfra/nix/modules/contabo/default.nix b/newinfra/nix/modules/contabo/default.nix index 5b2d8c5..03ff4d4 100644 --- a/newinfra/nix/modules/contabo/default.nix +++ b/newinfra/nix/modules/contabo/default.nix @@ -4,4 +4,6 @@ boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "xen_blkfront" "vmw_pvscsi" ]; boot.initrd.kernelModules = [ "nvme" ]; fileSystems."/" = { device = "/dev/sda3"; fsType = "ext4"; }; + + deployment.tags = [ "contabo" ]; } diff --git a/newinfra/nix/modules/ingress/default.nix b/newinfra/nix/modules/ingress/default.nix index 399c802..68fed21 100644 --- a/newinfra/nix/modules/ingress/default.nix +++ b/newinfra/nix/modules/ingress/default.nix @@ -1,4 +1,4 @@ -{ pkgs, config, ... }: { +{ pkgs, config, name, ... }: { networking.firewall.allowedTCPPorts = [ 443 ]; @@ -14,9 +14,14 @@ file_server } - noratrieb.dev { - root * ${./nora} - file_server + ${ + if name == "vps1" then + '' + noratrieb.dev { + root * ${./nora} + file_server + } + '' else "" } '' ); diff --git a/newinfra/nix/modules/ingress/nora/index.html b/newinfra/nix/modules/ingress/nora/index.html index 9d4dcbe..45e10a0 100644 --- a/newinfra/nix/modules/ingress/nora/index.html +++ b/newinfra/nix/modules/ingress/nora/index.html @@ -12,13 +12,7 @@

nora's website

hey, I'm nora (she/her?)! i think. maybe. who knows, really

-

this website is work in progress. just like me fr.

-

all of this is very complicated.

-

it's very empty for now.

-

i hope it will be fuller in the future. worth visiting. for now, it just exists.

-

i expect to visit it quite often.

-

not that i expect anyone to want to do that, but this site is not exactly intended for sharing.

-

..for now. in the future it will be. maybe.

+

this is here because i still havent managed move over nilstrieb.dev, lol.

diff --git a/newinfra/nix/modules/wg-mesh/default.nix b/newinfra/nix/modules/wg-mesh/default.nix index c3677b9..aad75b8 100644 --- a/newinfra/nix/modules/wg-mesh/default.nix +++ b/newinfra/nix/modules/wg-mesh/default.nix @@ -44,4 +44,6 @@ in wgSettings.peers; }; }; + + deployment.tags = [ "wg-mesh" ]; } diff --git a/newinfra/nix/secrets/docker_registry_password.age b/newinfra/nix/secrets/docker_registry_password.age index 0f0beef..98217bb 100644 --- a/newinfra/nix/secrets/docker_registry_password.age +++ b/newinfra/nix/secrets/docker_registry_password.age @@ -1,5 +1,6 @@ age-encryption.org/v1 --> ssh-ed25519 qM6TYg YI3rrnP9953xk8JnzhJSZR+tKaD6C3sCXJBiX0+KCHE -CIfSlpyqhS66umh4/nv7v6qH5mqz2xh2AeDW19CGbYs ---- 889zGO43+oX2nau25zROguc37dsi38Bnyzw/shG1x5g -o]̗yNd_Ɨ+wBi sE 5 y^`[5 \ No newline at end of file +-> ssh-ed25519 qM6TYg 6TlkoQ0YMB4Cg0VqY8ec1RgRpfiRLh2YQpoc4D49uRg +BbqDPWQGmGrcDSdNNajm0GJJRlPiazgeF2/MRsyDZkw +--- OUif9tz9JRMMZEA1LTwPipE/Hezj5nVaN/qgiwoi3ws +"՝7l10I?Cjg3L +O8kI+h< \ No newline at end of file diff --git a/newinfra/nix/secrets/hugochat_db_password.age b/newinfra/nix/secrets/hugochat_db_password.age index dc61b07..855e776 100644 --- a/newinfra/nix/secrets/hugochat_db_password.age +++ b/newinfra/nix/secrets/hugochat_db_password.age @@ -1,5 +1,5 @@ age-encryption.org/v1 --> ssh-ed25519 qM6TYg vcUglH0m/mdME6tSzfZy3orW55ks1wZZAVqPe01ln0I -Pbei2lMfgS+6N148qggu3DYUTnusItfVDqXGFqD9l8g ---- qnH/lD17esiKbMH5M1wwJiq7cMmXXh4SQneeRNDiMPk -t8i~ !ެs?t/1+4:07R2wohQB4pt!9#Gd#d)3ňШZﳢHyK \ No newline at end of file +-> ssh-ed25519 qM6TYg AP0dV7U8/42OGcDtBv5eq3jSLdmXP3fMfTnd9o86EVM +e5ftZHvKL6uqhInQgFSclzvnExxwYnFu0/ANTpa9bBI +--- Zyyydt+U1p6UR2BP+s3ynm2Q2MmzWWUSrhlBn5kZdCI +W{e8,?nr4KX{'2٭h 9<fP,U_NgTD4Z$Kz & \ No newline at end of file diff --git a/newinfra/nix/secrets/minio_env_file.age b/newinfra/nix/secrets/minio_env_file.age index 13d69b4770e2d94ce886be02d8ff87b5269efc9f..0eca6a282db3b7987f745c0aafc114abfeee789b 100644 GIT binary patch delta 362 zcmeBW?q!~!Q}1h;lWY*0oF8eKZ|GYbp=}s$>En~=lO9o&nWUfSon)eKR$-c2?pGCF z&J~dB6P8$6V&r9EkXn^jkse}X6p0FkbXc*)ZRT$uE6j)`Jq;KjIZ0-|g|E&@<(wUC=@^ug5mXRSR9+VB>{uCP7#ikWs%;pa;+j>=^=_S| zwN84XO!8vezAft-s+{}#zH-L1Y4Nprn%lo(VsNiNn#UdZNA2qGx1wR@bBcd|I#s#i z(q4w{4fhH{e8k_zzHGQu@Nv}vrOoe~`HmI$u(U`=D=cU5OkC6{=%jcqjqk^?5chMh K&T}UvD+2)kpoK;N delta 362 zcmeBW?q!~!Q*Y=Q5^CX-R+1hO;*nA5ZR8mgTx1^Xo2ji`;^SLU z%oR}JQ(BNz?v$&q?;DVtY~q{mpIBg;o1UrdnG=%hl^YxpV3g(N7vW}<&!uapP+Xj$ zo0?)|YHDby5K-mm92KaL7Z_gdXzEuU;t~>&?d@7sSRZNW5gcA(=9y~{6&?}cmt$Gs z<`|*xou840mYrjKa6l$mL#S${hl_0(QFOUccnw2!&vL~g*lhnM6R Kznt^*!f^lu?}=9c diff --git a/newinfra/nix/secrets/secrets.nix b/newinfra/nix/secrets/secrets.nix index 1fad625..355ed1d 100644 --- a/newinfra/nix/secrets/secrets.nix +++ b/newinfra/nix/secrets/secrets.nix @@ -2,6 +2,7 @@ let vps1 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII4Xj3TsDPStoHquTfOlyxShbA/kgMfQskKN8jpfiY4R"; vps3 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHvupo7d9YMZw56qhjB+tZPijxiG1dKChLpkOWZN0Y7C"; vps4 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMpoLgBTWj1BcNxXVdM26jDBZl+BCtUTj20Wv4sZdCHz"; + vps5 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBWbIznvWQSqRF1E9Gv9y7JXMy3LZxMAWj6K0Nq91kyZ"; in { "widetom_bot_token.age".publicKeys = [ vps1 ]; @@ -12,4 +13,5 @@ in "wg_private_vps1.age".publicKeys = [ vps1 ]; "wg_private_vps3.age".publicKeys = [ vps3 ]; "wg_private_vps4.age".publicKeys = [ vps4 ]; + "wg_private_vps5.age".publicKeys = [ vps5 ]; } diff --git a/newinfra/nix/secrets/wg_private_vps1.age b/newinfra/nix/secrets/wg_private_vps1.age index 527a63f06b69458114736d33f6ef3c891dffe37a..44caeedeec1ba510578efdf48f70fad48b23141f 100644 GIT binary patch delta 221 zcmZoY8t4o|KhQ z&gGn!98l)xk!G4|8s+O773JX(7+&t-xuDEyW@&C6 Y%bNf9kX5)ihn{t`Z~XJtjej=)0R4_q0RR91 delta 221 zcmZo5>_Q4r~$&xYsDpO>$>f8V?H1M4rNs(*8y^{rg8eBJk%T^n{it?~WS ZIfH+T%**PIO`MvyLe(@Zl;0K{005GOScd=r diff --git a/newinfra/nix/secrets/wg_private_vps3.age b/newinfra/nix/secrets/wg_private_vps3.age index 603303ce5de8b760d6e160452cf694b43197854f..01e7b936c000c97c8847ab5a991dfcdc2046cf9d 100644 GIT binary patch delta 221 zcmZo9Hl6_}f25ak(EROspK>XjLk7oKbB=^vDu@0^xe%%!WVtKe}u%hoo~ET^?;envSefNk66qD>Z(5a?&84fWtDx_b zoD-SoSx_2bnvv=3?i*R`Xzb@45aw>?ofn>#Ug%lj5*C5lojDyTAUW;=8@$T?ClvX_}3Y*1AZZsHb@nr2yC=oju9;#d~yYLa8-?iJ;lr&ZVoXtB`H( zn(bQ_?j4z=Z>b$n7MPLgZ(wFv>||kH8WkK~RaICJ5gL`8V-}oP7|M0^h)%+ki!D>M z{n=vrAM`9~VUTppG&y_l>09MfCRcYW#_cmy6GFO X=F6Wc#V)==VfNx54Yv$6UhM(^>pD;! delta 220 zcmZo*YG9h6Qy-O+66u(qS?m}U?wOZwSX7c2l#}h7=;ULjUG8V(s~uEa5nPz!7OWp$ z&XwU<5f)^S9paJVkzo-Q7LjM@;;3B^P?Q(qmuhUJZ=R8DUgmD*6zP`Z$fc{RtB@LL z;%DX)nw*m3=4qH#oNO6b$+KPjh6Z;&eqC6iJE7sx X$~}MH?A4xUCAU6GFm3e3yca5OHDV_w#@hPN_H*u zb}BAT%(nCii}Vc1D=3HzNipzG_RJ_P@Z`EzDgSA|+PRuw&y7hE-@m@)<%yUX!Sk}{ zZPDqNP{+^@8b`gSM-)q))8sf?-Lgx1osj9n%J-)xRrB{RKFFr@S9$+;HJOVh?cb_a HYcc=;au{CJ literal 0 HcmV?d00001 diff --git a/newinfra/nix/secrets/widetom_bot_token.age b/newinfra/nix/secrets/widetom_bot_token.age index ba8eb5c48014d22ea79752fa32595d35df2dd07f..774c72a6cba8d5a557491a7df159021d9ba221c0 100644 GIT binary patch delta 236 zcmbQhG=XV?PJOs>a(QuZx}#&JnZ8A)SE`|7Nr0D=U$B`^d09b4sbiG3i%WoElD?5) zHkVtDuSJoYsY#@JXoX3cc2q%DzIR1>X+@TQPL`#ydil_xyS}FEhPF8(urvWx0KM$e<**^^x~YB?;fFTH0R$pO{&r delta 236 zcmbQhG=XV?PJNO`p^=$SrGG_%kH49Ac5Z1{uu*DiP-TRfWp-MGer8ZmfqR;{tEFq8 zBbQlHZfKQvW|ekvo~MOznL$)Wq(yjkrKh)Vs9{=mRk1~siN9-RZfa0bHkYohu7YKd zkF#@xzCmWDUrK7QpGA75VR~_dQ@EkIeq@NZS8z#%TWVOoex|8*RXNw2cTBCF8mg^M zyY|Yc$n_m>dhl(ka{9rU*Mia5r?6n6Ajbi>CW-p&6{6tg##QmhY o4W>b1X@_pdFZ*J3V~zT$FByC1JZe*oc5RHXDY4wj@tJ8p0C>M$6951J diff --git a/newinfra/nix/secrets/widetom_config_toml.age b/newinfra/nix/secrets/widetom_config_toml.age index 28adf586669b46b3edd777f7a69b1e13e2a56bed..1ef149df4620a606e3ae5d33ab677a2130e43556 100644 GIT binary patch delta 4000 zcmZ1`zf69DPQ77fN@S6Kcxi5qWt3Tlo4cn)QF&fjlt+l5<2!VUS~LU|~v5w!5QITBwV8q;F+!oH;Y@&1UG8C|H>4B4ZromiK!lPkW*LCFSG!g6SE% zXJ3xqoprREp}F_H{(5`4(#g$pz6QF~uUYU_^RMgP;wep%AvPD9cmxCwPM#mgGb!{} z=E{G+H+}hWck8qIv+^p38fCZN%+Xz?wWj{7yAj_4?i{&8``a}td&6(9RWDj-b1c1R zm9h2155j-0FmRl`CKnzQEugrw<@X<-7$No_dsk$gTi|ou)Zlgcv=2c=Z&$^)FoMeMX*{k>NG|A6D`iKi{(?qP_m+?d-tZFE?JT z%gZ%ZIkjcx$Jz7b^$Rox3Sd?m0uQ2TuOE}q@lvDNNzVX=I@iF)6&gLl5a?kF?!Q(GnVPKB{NU*)i}tkV3d z;RiWkl~*6Fy*bV#y^Q(pQW~34zmjXB*3Rw+&3{g?a|#H#8RT7dmJW2tnl(@J>$4X( z1O@+`YqS$#-lmiA^SHZ;&XSY0U+46M{(k43@Z^+s_{mJCcV!p9C{JR%a&GZwzP^wz zJjNgTYHVctuC$-pH*d#2*_pcK*Li!(d>wQXn(G3EEobkyGX7`3pfaAH*K*TWxeN7v zjW7Rwm8j3ZF~g&jinVYWnJCrS>Td705{j%3!foi5+C0yj-% zpFC;d@%=L<2gE(RXTIpu;e6)H7p(2R{rj}yLs$K+YX0$3MEIl)ok}-tp!7 z?S&Iw^|k~CY`puRcAN1Q(Q6XSEx(sbHWYb;OkJ3@U|;n!nM-#pXLtteDC;{Buwi%e zP9Ns?Y1_rvob7HoGz&61csoVk-YqTqML^_AzQd1GIZgF1v?m-$-jL{Ep_(A}OW$$j z=4C5+mc@N6ukZNJB%Az4D^O25!w&#*UhPu4fn>Qg$ruDxL|wnzFG3LQRvqe$wO`3uf_Uyt6KwtexM zul* zc~+6L7cP-oKC557O#Js0RsQaPxh+O~ZF-4$OIM%T*W2*%%zN*qKerDZ{;{=j?Wd@j z<$ALY9SAY_7IQ9oOHC&4?Tm~qr9W@fWbSLYdQ1JP^T^o6w?+5iW}EEe5~hxCE>GDf-jTE9QO>D(N(5fBM2Qzay^C zy=Npga7PI+u&_wmfsJnOASh)U7)<}ta zJE!O<=QCY)amzUv+?f{siaT}g@?G%|&Qnc5-SEi(-ua?hekG!TseLTBa zYLxWXYL@*|z5N9(Bz2E%KQ;gIX0Ly*4$hwNee313or`_<+58uoY_oym*8l69K1{ni zrA+_WtP_^zuCtaJGX$wMToAA~(DZ+>l~;0tC;xhRgmL#R z%_Px1{EuH8-^<@WkJEm8{;el-dP^Cne9Tej`TLsTiSWAFmhDFhoWt5yvd`8N7he2A zW!3W#fkK|89*eznm-!sA4Vv;z?1^u_azdr&Ui)v${f`*lO{`_jSiMJT#fcOXM}_T% z()aF}1UA>N;op+B_(YoiM;)2jCoD{vH7vF7*SMLVQE$_`%o}|q=Wn0YB>tmQa;Cfu z)N&DWuA1`apvbXHQv@pvx>!2r*<|=LZZ0aeICS>sw1so{85Ybu-N+F7|Bmppt49kY z<&4&_Y0Xu;8!fk@Z{yd~w+k!|^=<5qn3EcM-+cL} zvXA@;uOFZDKbmGw(%fhD?enZXc}6pHRDM00evC!7IFX0@AK3AoX|pqBGy(AKke*W!`<4=VkvK#6^~FK6kG0)5D$5LtJm=^mkn=-92Yz z!Dg}THh)xG?`?QDp)!%LxL)kC$dQ!uzw`gDpH!BAZqZTk1<%(sy^Z~lm(yjqD`Q&q zsdY6sE`NFybtJa_?3@2LPNvMT+jh?^Tf22}?J`(ErP!;$wX7 z#yD|>Ptgars86p^p0H$HO}82MkxXsA>veOZF8-hLNaBDVtGt)}J;hhY7JrI;E^o4h zb$k5Ud*R7e`cJs$Zjz9mkRkEMe}>qat*`ny>Sr-#Ilr)6r*|hSeCC~zYd%aW~FTKyI`ciV}CtDSF>*cEX=TaLDLUmG7F8Ik-w|l66I9GV* zy!`gbe0I!Rcx|rnn$$|~RMPEZ6Um!5ZT&ybkgtLLqFKj|)u+#>*DSiRHMd-wX=6sy z1G^{oy1iAib-%8zN!B~NpEqM)d8O(_0X6ZEO|DlzbJ$4lpM0`!HVaQ?;rX_o=TjR* zT<1M)*m-WwJ<(rxL?-^yV_3l_G-KXZJH4{Zm*R(ncmB?3Zt%}cy{fG*aG?GmP;8ywH<{g4!OP3Vs2{X0+H82#m?KP8>& z{9?4{3Jj7m2X+?iu+<7uTL$Wqwsr9)f2DzCC?v!S-zit*1apg1Z`(;%-R-i&o5Kpn!ovfu!pPomm+uaHM5T1PJdCZzX8Gg$I z%jOLJ=YOo$+|PB|bnrr%eNrEvPge+|4O7?sJM~xpDb~JzbfdV-RD|bD-@>2WKRr?s zR$O}-Tpz6di7Va8c%AnAdmPVah<_IkuCrpT=34lb=`_njmW`QipSHz3Z=CG6Nj~w* zVd*tGN0kNVue-nav-$N4iFK8#X0m1n+hhWoi#X=aY{{2C+PLN0s^9J(SDSNxRDK?<>nW^ptS2;#rCz=yjZ0fmvE_^=6!kHPKUc@f4<75o`0{ere6q{r@z76AaC0z zOJSMc=kvU!#qGcBaj$<_Wif5hbd#f9k6!yp)+pZKi|kqFduP>eyNx}6XFNUZptvje z`TOc>2k&;)2ydUgi6((d^?WB@>*;@DBKK#hYr)fH;?*zyTvvPTq5ArM-U@NACr{ft zLhN^lUf$SoH%))LdfIr;)+bBPe2i26QNO=2EB8A8 z?3^{cKk^u~s@e8?PvW_G@}TGssk()J59Y6o{nFp=ze0P5_3cw{o7i85>0Ws8XrF*_ z5mQ}Ee!ce2J28Q0wc32v@WvX=ZE?OT{%-LGnQQD-GPAyNaQ~`bvu7Ddr75FSu$5;-m}kF~ z9@ zrQ+cR)iNyq&MXkGpZmzYY;Sh^t2@yQduPA9A-Ppx;xoBTD%uG-ht+>Se!S&{$m#xk zGyhYUr+3C%nb=fjlvXdg%NqCmQHyYtR6uT@*RCdJ zQ(2cTo-N5&`EOa<{>g0LrzpI?pkOk^OPD|K=drdmLaEoksTikTsr1NtEPRzC_}#sq zuO9}PR-EAo6>W_AXR%#)x8ui#`kBW>dT!nhURxNP(t4xD>xlQ~_4_T9%UC9zu~=7n zdWzAUcXy^)+Q%|06Qqe=41S?m60zWRlRGWSm?SyXc^oo6~-Ve+E8AJ}b^ ze*9US(N~?UXWyzE^X<>nf@RfaR4SjViu+Rg%S>wL?0+E%mmM1Y zSJv^0nr~zfvRnD6uj$6d*1p-eAs^hUsi)_5YfDtURVV_0E>a#gZa3W<>u=zrN)CG}mvtPen$} z+UN0j33sUySJzUJc@96HJzwEIW4B)Y(Zr0Fdqs z&qar(%Eor5mc99ZIn@2EL2?LhxZBPrFD3Q)t{EM_E4^|y=LU|)iZ50=AI@)G`A6V@ zgZu^eg*H}#pLSOM?sRAUKOt-Gh$qYgc*N0`?}>Ot}EuZ?7S>> zB(DB{^!+N2-p;(9P5&e^4PGkf35X{FvhHT{yU#Dm78 z`#64vM#fEau@>9zGRv)^Z^;Q+FQy0G_GgSEZFrx$>L35sR%&B1?dy``OBe0frQ*7A zMhok+148CYznu9~U+lSLW63><)AcS-er*ic_Sx#F`$CuA6s0}a8NPMK?PeDV3E_8} z`_CXQ$-!gc4!)M(Rz{Y#pEalHbR7P9?2^_oj?RtyZC>6}O$fPuF@u_kLzX5g)_w^DSm3# zc^@M?g|{X-ddA|wwAWu4<}6cMeRawIr`G0sgYO?a8y=p#?fBbkH@x$6h3s#;cPwi< z#`(AO>hsRdb(gZfR4cxGc;HN@&}wG?8|yi)=836Y4*j@uLff+M-&`ub9_8!iapp^p zO80B!ll@w|J@nw=^-oowZDdT2sDBYNhjm@-u@jU2&6YLStWU8m@i*7G&yudmr7N52 z)H}V@{pj-o8Ls4dj~{9?Ldwld)Bc+Ly|8)Gu1wL*lb+N}_&?QIxYi2tC-}@f3^%Qyg6t6=g!N!b_mq(ohDn;jCOt4$_haq}mrN!e#j z6yaWTZKqD;yw~TxCfNJ*uGfft@bV<8E=G#_j z37uKoy+wb^Rog9I|3n#`4!GykZA@U{a(#RK`s61H4{vIC`&h*NyvUe5V^hN)Ws^|r z%^LR^HMTA=3#`bW?ziKT$w_hjw`q@@U$WSB_Np#&J<%jM;c?hgUvb5`vm|#ciDG$j zENVID=}Eq7^>sPc{vS$oD&PDpGuu$IDYw&fM!Q5+Re?msnpuo%II2=PIU;}8-rSY7 zXz#ko-1+u*8(XtKOIMyg?j0y#wK+50$JulCiX$?6;&(m%`aM5y^M3hfL5Kcn?@to6 z{4^u@qLjIrda-fQ?_QzQKaLU^zqoF4PQ1#bw8Q1IpZt=!VbkjwPw(Ghdo?suRZ>yK zh`opH>_2gq{3jt!cJH764cESARmgZFcGrSk65d9B`L}}43mBFLTTD6a9CPNP**u#& z50>k>*%b7Ao2xIXCaF_fc)!}2`!%cQnd+Vu4i$5Ke@@CZ{aSHzZmnw6vs(>pL0F4Ml|yQU)J3>n>X&eru$x%_ou_9*Nmwr8)~n=tNCl*-6hSr zeV0&B5zCB+EXvu|JX3jhuG5LIb&$Tu*ViYxPG|E;4oB9LeWmAp)Z6)M?rf{yl>Bp9 z5U*K7mPz`n+N#8_Q>07w^-Orm^vrJd;(GPmiTzy~4?lkYvAy@w0}a9ASoOP~Sav3T z`uq8&%<+%|H6Oc0qu)n$TgPuss{1cua=6p-wb=ok3qn=GtEa?Fe;eJL)$e*z{Ngu* zl}@}WUabGlee8(R74EURxIF62X)hyNoBBzP)>9gjZ)+SKZ4DpS%ohwpEU*67HYHS7G7`mfxZbDqD`eg8&zj++!u)4n6o z)Ar7^Q;iIgSjkq@c6C|Cg0mtI%@qO;t$y`6;l;1pWyW?X38&6>CSUi=NiVceTjAzA z%T(lX{g-tY580j)o){x~^{dB?jz#wvg*6rgn=tZs1ZJ%H@n0f8Ba(ZaU5v}_8C^Na za~0ES9bdYOC#jp~Dg|yxa1kmmjr!WPM9X~Fp5K>NoIKW3dcj|f=h=6ABekGeujF*I z((Mm>8EQry5o+k)U$X1l%Oh3m_a5B+ZeC^P5}!qL9YgEw-u)C(sYppZxm~K+^xhghv8wi_V9|ZOzo&niK9UynH7%^DEbpQ&X4h%-kKd-$dBhGIxpn^!X>R^c+9^RSreTM|wK;M;_g|~>Y0*W%udan zA1#_P@3oV0qMS3cvsnN6lGNY;7si!7AxTl&9D+)`MCK97|hi>k890nJu0_ERCY=5hxfbd+Ei9PJ=xIx zhGmkAt;=$!_x+j$SH)kQmgcaRs=ZTRcV{y5Tv_4gb{ZS^==R)h>95i|mg35NZfBgy z(|^muCkX~RE_7<=wceYtbVrXwux|O`RZ+7U<|i&@jQD!`jO~dBM$U2t&%+MAniuiI zQ|?SN*LS_kWxezLw_Q6Y7N`*B`mWKd_w>V%k0rw&~B2-i+k6qi`$>7RC$z#$j1jWta%}`c;bqc#dBiTvtPZ?=&&>8 zOnSIW>x#SKd>c*vd_CFK%G(t)ammZwjE}c2UH|Kn$M^T<1%21=$o=kTopol{-dktx zzAO0DCCQUwCb43>+@_ytk6m>{RKBx_@0vMTzDT+_>_@%L>eUnfGU+}}OyZdF-fM$e zLs4LH@}Y+xKgK`u$vOB$rYG>jmv8fVmia60%UUGw=I@mJGrWEE^o%_Vc0Zb$F7$QE z*K;?1n3o?-P_Qxf`C-jjeBaJ2G|9JLaEY;m%Yxdgea`3d<&PO|sP#Rp9Ad|B+oS$b z=y7XA%YoAcHdf0S>uXNS?p<`EVt3=l`*Z3|Bl+aRx|n54PpU6H*mzF*y+`xa1>1HB zJE^}<6Lp!sa;AfXs^jf%t-@K+zh%Kkh1v6a zF02f1j4pI3uUWXX?84vUMHj5M?!N!k^@rUt@3P_=+v&Qp+Q)*e4~1RW`q%ncXaD`b zi|m(kwgnomwD!5epIg5DUZ(T^YP+MK#e$ofesr(%- literal 0 HcmV?d00001