From d287af62e61b6bc38c4454252dacd203e6058577 Mon Sep 17 00:00:00 2001 From: Benjamin Piouffle Date: Mon, 9 Dec 2024 15:43:06 +0100 Subject: [PATCH] deps: Upgrade to PG 15 --- .github/workflows/ci.yml | 8 +-- .github/workflows/e2e.yml | 23 ++++--- docs/postgres.md | 4 +- scripts/db_restore.sh | 93 +++++++++++++++++++------- test/dbdumps/opencollective_dvl.pgsql | Bin 2930688 -> 2931712 bytes 5 files changed, 86 insertions(+), 42 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cd12b1df881..202ba48cdc3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -209,7 +209,7 @@ jobs: - 6379:6379 options: --entrypoint redis-server postgres: - image: postgres:14.15 + image: postgres:15.10 env: POSTGRES_USER: postgres POSTGRES_DB: postgres @@ -261,7 +261,7 @@ jobs: - 6379:6379 options: --entrypoint redis-server postgres: - image: postgres:14.15 + image: postgres:15.10 env: POSTGRES_USER: postgres POSTGRES_DB: postgres @@ -324,7 +324,7 @@ jobs: - 6379:6379 options: --entrypoint redis-server postgres: - image: postgres:14.15 + image: postgres:15.10 env: POSTGRES_USER: postgres POSTGRES_DB: postgres @@ -366,7 +366,7 @@ jobs: - 6379:6379 options: --entrypoint redis-server postgres: - image: postgres:14.15 + image: postgres:15.10 env: POSTGRES_USER: postgres POSTGRES_DB: postgres diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 9f0d99562e7..e9ce0a55f94 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -34,7 +34,7 @@ env: jobs: e2e: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 timeout-minutes: 30 strategy: @@ -48,9 +48,9 @@ jobs: - 6379:6379 options: --entrypoint redis-server postgres: - image: postgres:14.15 + image: postgres:15.10 env: - POSTGRES_USER: postgres + POSTGRES_USER: opencollective POSTGRES_DB: postgres POSTGRES_HOST_AUTH_METHOD: trust ports: @@ -62,14 +62,15 @@ jobs: - name: Update apt run: sudo apt-get update || exit 0 - - name: Install Cypress dependencies - run: sudo apt-get install --no-install-recommends -y libgtk2.0-0 libgtk-3-0 libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 libxtst6 xauth xvfb fonts-arphic-bkai00mp fonts-arphic-bsmi00lp fonts-arphic-gbsn00lp fonts-arphic-gkai00mp fonts-arphic-ukai fonts-arphic-uming ttf-wqy-zenhei ttf-wqy-microhei xfonts-wqy - - - name: Install postgresql-client - run: sudo apt-get install -y postgresql-client - - - name: Install graphicsmagick - run: sudo apt-get install -y graphicsmagick + - name: Install dependencies + run: | + sudo apt-get install + # Cypress dependencies - see https://docs.cypress.io/app/get-started/install-cypress#UbuntuDebian + libgtk2.0-0t64 libgtk-3-0t64 libgbm-dev libnotify-dev libnss3 libxss1 libasound2t64 libxtst6 xauth xvfb + # Postgres client + postgresql-client-16 + # GraphicsMagick (not sure if needed) + graphicsmagick - name: Install stripe-cli run: | diff --git a/docs/postgres.md b/docs/postgres.md index 6261daaada9..99095cf8909 100644 --- a/docs/postgres.md +++ b/docs/postgres.md @@ -1,6 +1,6 @@ # PostgreSQL Database -You need to have PostgreSQL > 14.x. +You need to have PostgreSQL > 15.x. In production, we're currently running 16.4. @@ -57,7 +57,7 @@ If you don't want to run a local instance of PostgreSQL in your computer, you ca Create and run the container: ``` -docker run -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust -d --name opencollective-postgres --shm-size=1g --memory=4g --cpus=2 postgres:14 +docker run -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust -d --name opencollective-postgres --shm-size=1g --memory=4g --cpus=2 postgres:15 ``` Set the necessary environment variables: diff --git a/scripts/db_restore.sh b/scripts/db_restore.sh index 62a3ebe6996..a5515a90d9f 100755 --- a/scripts/db_restore.sh +++ b/scripts/db_restore.sh @@ -1,48 +1,47 @@ #!/bin/bash usage() { - echo "Usage: db_restore.sh -d DBNAME -U DBUSER --use-postgis -f DBDUMP_FILE"; - echo "e.g."; + echo "Usage: db_restore.sh -d DBNAME -U DBUSER --use-postgis -f DBDUMP_FILE" + echo "e.g." echo "> db_restore.sh -d opencollective_dvl -U opencollective -f test/dbdumps/opencollective_dvl.pgsql" - exit 0; + exit 0 } -while [[ $# -gt 0 ]] -do -key="$1" +while [[ $# -gt 0 ]]; do + key="$1" -case $key in - -d|--dbname) + case $key in + -d | --dbname) LOCALDBNAME="$2" shift # past argument ;; - -U|--username) + -U | --username) LOCALDBUSER="$2" shift # past argument ;; - --use-postgis) + --use-postgis) USE_POSTGIS=1 ;; - -f|--file) + -f | --file) DBDUMP_FILE="$2" shift # past argument ;; - *) - # unknown option + *) + # unknown option ;; -esac -shift # past argument or value + esac + shift # past argument or value done LOCALDBUSER=${LOCALDBUSER:-"opencollective"} LOCALDBNAME=${LOCALDBNAME:-"opencollective_dvl"} -DBDUMP_FILE=${DBDUMP_FILE:-"test/dbdumps/opencollective_dvl.pgsql"} +DBDUMP_FILE=${DBDUMP_FILE:-"./test/dbdumps/opencollective_dvl.pgsql"} echo "LOCALDBUSER=$LOCALDBUSER" echo "LOCALDBNAME=$LOCALDBNAME" echo "DBDUMP_FILE=$DBDUMP_FILE" -if [ -z "$LOCALDBNAME" ]; then usage; fi; +if [ -z "$LOCALDBNAME" ]; then usage; fi # kill all connections to the postgres server # echo "Killing all connections to database '$LOCALDBNAME'" @@ -53,8 +52,15 @@ if [ -z "$LOCALDBNAME" ]; then usage; fi; # where pg_stat_activity.datname = '$LOCALDBNAME' # EOF -dropdb -U postgres -h localhost --if-exists $LOCALDBNAME; -createdb -U postgres -h localhost $LOCALDBNAME 2> /dev/null +echo "Dropping '$LOCALDBNAME'" +dropdb -U postgres -h localhost --if-exists $LOCALDBNAME + +echo "Creating '$LOCALDBNAME'" +createdb -U postgres -h localhost $LOCALDBNAME 2>/dev/null + +# Update table permissions +echo "Updating table permissions" +psql -U postgres -h localhost $LOCALDBNAME -c "GRANT ALL ON SCHEMA public TO ${LOCALDBUSER};" # When restoring old backups, you may need to enable Postgis if [ "$USE_POSTGIS" = "1" ]; then @@ -72,13 +78,50 @@ fi set -e } | tee >/dev/null -# The first time we run it, we will trigger FK constraints errors -set +e -pg_restore -U postgres -h localhost --no-acl --no-owner --role=${LOCALDBUSER} -n public -O -c -d "${LOCALDBNAME}" "${DBDUMP_FILE}" 2>/dev/null -set -e +PG_RESTORE_OPTIONS=(-U postgres -h localhost --no-acl --no-owner --role="${LOCALDBUSER}" -n public -O -d "${LOCALDBNAME}") +PG_RESTORE_COMMAND=pg_restore +if [ -n "$USE_DOCKER" ]; then + PG_RESTORE_COMMAND="sudo docker run --rm --network host -v $(dirname "$DBDUMP_FILE"):/backup postgres:14 pg_restore -h localhost -p 5432 -U opencollective" + DBDUMP_FILE="/backup/$(basename "$DBDUMP_FILE")" +fi + +# The first time we run it with the -s option (schema only) +echo "Restoring schema" +$PG_RESTORE_COMMAND "${PG_RESTORE_OPTIONS[@]}" -s "${DBDUMP_FILE}" + +# Disable triggers +echo "Disabling triggers" +psql -U postgres -h localhost "${LOCALDBNAME}" -c " +DO \$\$ +BEGIN + EXECUTE ( + SELECT string_agg( + format('ALTER TABLE %I.%I DISABLE TRIGGER ALL', schemaname, tablename), '; ' + ) + FROM pg_tables + WHERE schemaname = 'public' + ); +END \$\$; +" + +# Restore data (-a flag) +echo "Restoring data" +$PG_RESTORE_COMMAND "${PG_RESTORE_OPTIONS[@]}" -a "${DBDUMP_FILE}" -# So we run it twice :-) -pg_restore -U postgres -h localhost --no-acl --no-owner --role=${LOCALDBUSER} -n public -O -c -d "${LOCALDBNAME}" "${DBDUMP_FILE}" +# Re-enable triggers +echo "Re-enabling triggers" +psql -U postgres -h localhost "${LOCALDBNAME}" -c " +DO \$\$ +BEGIN + EXECUTE ( + SELECT string_agg( + format('ALTER TABLE %I.%I ENABLE TRIGGER ALL', schemaname, tablename), '; ' + ) + FROM pg_tables + WHERE schemaname = 'public' + ); +END \$\$; +" echo "DB restored to postgres://localhost/${LOCALDBNAME}" diff --git a/test/dbdumps/opencollective_dvl.pgsql b/test/dbdumps/opencollective_dvl.pgsql index cd2f59adde531effc042ff6a20152b0cddfa0e23..45e292a2301dc077dabb0bf957b95e99cdf781eb 100644 GIT binary patch delta 35858 zcmcJ22Y6LQ({T2jOL7y^dvBDGdjq-s-a`$&1%ebQN^jCT2nY%ADi#p%D1)FB%ZrL4 z8ucJGfC>mw>v}#JDh%Sq=-U6Ndll)Bobt zY^k(SF8*bAH}d8;Xfu4ssKMj&>4%2)MiWO48)=1-h9WbCM+VaRq^%hu&# z1b>G$!k_ltTXyZ4-?F?szoKh?2yA}Oiu?%^hmRjRVeHu9L#K|KKDX&m@$6%WX9l#!DFWkXY}2K^+J0JdrN&IJT;0k?_zROiMNhg zUF*8qKRT@zHY>L3gW>gw`biA`=u>0Of2bYe=qH!WRh<(VLDT{9?4#YLmPMUcwhFo{nZps5$)9DaO(Wx~*GHES)sxJqIDOUUWBL;H zo)iY^@`a@#D2(q_oTgUA9and!GBCHRdRBZZqFzX2U|w5T7NwY%n5AA$xT22BU{GFP zb!<`tqMpi3i$I=yzOa1tL~5FPvoK42DETw>S~hD}9AO2ty?SYigQ(@X6xWTTJD!?I z)R}qgquo{=oj#bTQwwN^ZimiSLIg=udq>4pzmrVu(~+w6QbU% z!`i(bHW>9n4##Po6G_yr_1H7yErSkp>A>O)^`YE9)T#AZyP~&u8C0B6U7fd!sPl^` zLmsECdT9an`F;cT(dDQ`vyrwoo8nseV*!gi$juXo773Q zQji(1-KP#Hxhlo72JGMK@Pwt%ZkAP%lVdXGBBikwoHH-ZY^FNcmZVlVqSS5nlccS>#z9rq>ve|}AsO}ifthe^Y;jEWDaRb5 zo-U&-dcB_NN>?3O{q%5r6av!qrMT^CZ0kb$)aQg{4W$CL^X|mzR9_rXqg%(QqxWR0 z<;pQQG+l~T2eo5le6H%d8b?XwD|K+YREDXj8=Ix6k2k#;;|W?v4Y;v*z1bc(UrUOB zyyj>&lrD@0uA!C9yGUyLinKWFTk(d`RoZgo{YH4Ix?duVko{NDJupi4;RDj7ex@lhWaaM6%T1+CK%aFTf|q_2Kz!p6U%9 z9yh7c6Vqamw%rvLjl8xVJb9R!&@u})bw^g?y2e1%wBqhy?SVAnx|YMezezD_@yS$m zZr5#+!>P`kL8a`oyWz-jl2QFY#p($4kvWW8ho{=p`-@28R%boNfLyj}_uxJzb<5-I zxl5^jd3aHjdf)bVb>en&hKEg^1J#L6VbE{&+ERw^_Q0_Pru6EviSZEz7R97L*vpkC z7?j6Zy>`a8wct3A7`4+=tShezcKyecU;X}^OVJR&UkZoSFB5Z=!VSC4=}-r6PorcM zMeqE7{oA0>?0=0Jq+6$r$?@5%*F9#EqugFypS`NGvJjVo&*u$GNAZB&fm1vFK9Zz1 zJCdz#e=-89##kel?<_XMg`Sok>f$9+pqmRPtLKlY@TFbKQOlNYf#L^H1%CGT;;XK+ z>?9iCHB3s1y}Cd}OVD*qjC$!zraIxtL+aA!V#qHByyB=H@zk4Al*h)o^4QcB&oiMb zK3LXN5lhVxap;2i(u-6_?BR&JEkkuOnerPy42U>Ell zr>mVWvvEPU{l#N&C^_nlXM3ynycDgTx}K`eSpB8??S^P|)+^McD>ipn3N(6wq*pIn z^BN%+D7TED5|&LRRiKolsx|Avt7orEC2-y=MZ*D!q(VQpQ~;wAP_fTHw_bAD)QubI zSQIq>JD;B-k>B-UD|UBv*Z<}c$z_L^BS}5z?2%H~s)Di{#6G_M0o77dm!W###4jYP zdi6`+5;b-=9j4;2tJgOaGW+x4D+xsHzb6K42_#j$vEc`G(0g?$tGG+DN&WuQ;`HjG z*PbBi=DkcPxEKm>4C;+-1=UwK4v(dJ8_~+i(#-?<$YUnCJ~i=(yFi-*}byN^)njX(Bjg`L!cMPRxu>AI^X?=9RZWn36%U`+dB$mU`jubjj;bA3Mz?=5bY9zw95LfqgM! zcgt^e(Droo#Lso826^q(-ye@7@cLiGtX?=%i+KI3%A}^9co)v($kD3#66+89Xnryq zCfr97p>G=6@TDiyVCfFD;m6ZZS?QlGs-uxj_t@#l*off!|yItX3x~jYW)I^eec6He`PDO!| z=2A}e;nSH!{rY+|oNS4d8a9`*`MUXJ6tdF)=lSZ^8%+OwHs&oYkFcaw*FD=PN*%d9 zftusW|7Qg^6#f70w=o?__=lnFTwT0w7)JVhbWt9tAe zn?xdcg9DF3aIOVgX^HBIYyZGU*N7Qjk0iC=pK_#izJ+d?)RG%ZVR;lm{Xry0^^Z3e zN|NG)U!y4-*yM&263L~W1l>R21R>uozd<6Pax)&UnsNPluT09J^R*SKotwD1oAUvuEaeq(IDn@XnhiiW`gWO&aKl2lhV<5GFHf6Fmn|yg$_dz ze|l>v3l}!(=Kd_mDY4*MX=o`@&mV0C74@+bxt>l#(Z*&FJ2H1lHo>VjBo2>{Y|b1u zms>lKMe+#o!0b_^0N9A*bI3l(v65)mTg*wgJn!U^Y@Nc|&Lj@%l<+5RI}A2U$=ZN? zvV)LxgRa{JRgu_SUPxZ#XePVO=7YsHQfNZacwl0E9M+C`BvC7`M`Qwz*>E~qK|x!o z6c*JdZ^4@9aG)#gT$CPrSOSz;NwQX1L_B_qb~~(gawYM&pt%*51YKt>$wDFtbZC#3 z)jbs@)xt`?fE)#7vd_!e_PDhcCFEPeW%77m9FeoJ-W481pk)ckfK82XKR`RJ&22*l1t#D6)4Lu=OYGA@Buj1h18`Aif6bKnAe=7 zX&;plGlHc^`l4=6Cn5u`wIustb(+yy&rev<&b1;}i2A^s7?{?RF>klIw1l?AN#MSo zDCu_=V{a=uNm##ZE$?7MHR!_hQe^kY%Xr@dsr!(3fx;|dPX+o$OQClLfsyJ!VEaVyZLTuR`BxV#wq8{f}@y$mKvklmAXf$zE^ zP16ug)8WvT^(3iMZFC*DDMs_qU>L!z+F^IN!;+w7J5#E5@out4k{k+H@8gfqO-W;q zpj&@p(mv};+RLO7l>kL_DriR-B0hBxm@t~e!pKHaDin2*>cIX1p7hgLC+oR*=^G?Ipk8;@7VDx_QuC#*Js zF5OW+f7p=O?<%BhIv;==>T2-LU|MT;+qI`hlU*`=Kb!O7R$x~*^uTc;!!zSizw_o` z=ezAl;l&AL3&hXmh#s4^a3bj=!DI6{BChGHlc@QE5okhp{11JGm!Vq&$qeToB-v={?H;c-a0Z!gf*}uc`gkrYn-i>v zkIhCs&#$&b25DoU4OOx^e9%jZCEfXA>e3@f9|LgIC4;IeiwR;Mu*9SJZV5ZLG< zq<8Dqd~-=Nxwg}%>lC{7^B(64>$Age^Kt#6A&ntW`8YDv#?8lM23t=ggSIqFJ<$wT zz(ct4R#l?%j<2#5!uSQGHOy5}2!&5@t?{9|yS$f_rv1KvND@5yB=29bY4Hz{*68c@ zMzPvGIEbn}CYZU99D^;pu<64-65VR?ETYYQm_(Xj?^r1oxl-_HKI%!=FJEKGY z#mM1>MPy5iFKDgz;tTEIV)9mu64YL%uK?V}ap|nXm95o0PRivp3}o@;L2Bab>q{9K1-UD6z;e=9KqZa2EY{U=xUNlQhd658GPjR z`N14EEo&|D5SV*Sid20oqe&C?ECvVUu!q$~Pp|caad3Dgx-&1VBNrk60~rGukhy_r zA_8geKS#XesX;jAU?DaSbm7!WULfd3qJ3fq31`S;2jE=V^Dm;^N_9CnoGWab4!0v{l3NFuRJ4~~B@GbH&Y5%v?_Qn!a88>>Hj*Uj zVNF_$d{hLU*tIsVQ+u9Xjf{W(HfJ1N!1bFbUq?onBH}QNAJltyhD&F}>10c*e8Nz8 z{YBJ?dT)|HAwwg{q!)vs;&HmdlA+XWO3?;YlYD{)u}Pbek=_9Y+}ftMNCJtn>qGGP z;PiGb2B$~+{cXB;blHl`b=;{l=hZrDwDrb5Vvh9&PfPy*S)aCcGwDhsuM>{uV2=X= zj}$F$3n?YAuC6JWl=$0SHf`=!5*twE;236F0L-p!+eQjVszaX}N3e7T1>hW7><)Cc zjg{dICO0Gi=G2DoL{X>u^zr+Gr*K#R&ZX7VP?hlM-TH#N9nRpW!0GXxdyZQ+krb`> zZfXN!k4om4;FUQl0FSY7?geh!L+k`z*o*TwCeW={%XuG1k&0;mwp^58_9g}3eA=`R zaNkQ+^z*sm4APm&0XRkbbT6?IxG-5Z!{tHf;Y{^EblbGj{pk5b>Q+MWLZ_FwD&P)1 z;zN{rZ6`*(7$fMpR2^cT3$Bi^RO)J^LF?V9%NQ7ckUX5`v~h_!ZNaS1 zV!cv{;TqE&m9meBn?PQTY>sodo_PO?k5N3x zKtn>bp#Drgp)uG9E@;$Z26~8rCSb_JZVRJ1)7BHlPai&c3aqWpb zBr(G~VsN9NdSK}FCk(IZeB;LzsT{LvWrIZC>bYHWub+Qm)7-+rndH(;zK z8=RLhlu;2aZBO-uh{?qV_fG&pfyOb?vvI-J%jt5%#xx1_)L}!(n_{J-A~fWX&DIASi2>;A4#E8`NRZ7lQ=m&eD+(x9vqf&ORXWfT}JQQ)6M=>!c- zuFGd4$H)a>n zEB5xd=w5u3FFk^r{~Y4S;6jSOJqB*33kszucF>Q2W<^p&9v4s29pJs%mO9cOq>)|s z+xSd)xuT}r9?9$0zNshmV~1*U1092FYTE5FjPo-*P$YduPs_$=^!+*G_Gt9j+(6n) zN`rS{r%8)I;QR|h1(xKe2iEfIi4 zO%NQD`_|~`?rZzF@yPG9^A+0&47$!WK&bvA9kRGRbUAWSm zp5UF*8!RmgU(v+EjMX`?)Ft(k(5g+UkUFd1Y=|L)crXDIrXOOS6drCVu_Wj_nD&ez zL-;6eY$)L5@9|11<~3u;Q2t>2PE=w#yrw?sQGY@ZTD4(Ok9>IbE_{ZPQF*R!ILE5H zKbHZPXAGCaAx(*b3K$*oN+mj&xO;v>vZ)nHC42IhCdPZ;vt#h88A(hVq(ELT{8-ikNj|;<1F`2? zSz}>Vh13eNtr+=vwHrQV!P&-bQ6FfCpG@J>!5DoG7e#FcVvlbpjp8BuzBD{%#N7Ac zm>Tpz98_BNQ6+E3*k=-@+Z2|( zVTp&@jijy+I~UK)Rs1=d0t|JgP#x`wegWw&b*5p@7&4DTV4PE9Ax@sRo9~ZGZibre zI1vl{U@Ua_8jB8+|FBjg#!V~l)c!oYR-c*azGOiR4rl}9C-zI0%; zBNu93l5^nRMcCbIuVZ&*>*Z3gjkcyki|Nwitb7X=^_H;w1L1jf1Jo3iq-gOo&^cuV zSkUQDogX^w=x{Z@UuwOxcb~Y^P;2mlsMjU*o{=wT*@s!7|aBrIpW@t|fK!vt;z7)^= z`Dk+9V39^WXq_djn`AB2ZZ43pkPpk0Aj2fbGMk`bpx_Rx4+C$=^)#G%ObcOE1ZiLh3j++=+Qkxv zifLT{u?E@|?dIcBIy%$-ME@%=0J6UVzf1Tc^y+0Jo!4xv*c;%Jbc*>tyZT1 zggdMdcGWi(Xd_li$%G!SBA|SoluhTu>BWajEco#KRjA@D)eWyc$2r539C?;bB29op z{tJ9;E_+x5mhXlQRn|0ZwuP2%Q)w&qv0f zVP#1++7Zd5{qmxO2|}8i#t<qGe`p#P65r%9#Z#+`Cs{GrSWByVRqD!fsbsWYC|GD! zLSd|0y^Rt^3t8s$&E9g7VKJQ^H(Eu~&6ESDU*uNt50*9UJw0e;V(xI?CJ7@~Ec@xx zbOsa*$j|GK``Ul15%t72DHjF}GDSeQr%Q5R^_$YOEZ0fy_YcHt*M?Tp#lcdVMfHQa z@H(|^Z_)jeB{IKxmrDdsEmz*A2zz^>R4e`C!tEmyp4}{EXcII^=9xnD3k;!q6>ZgK zDs-AbBoFz~aC>OPf}8PMn32K^AbFHMr89~f1goXKuoN}m$*t0#AxXVOe(FBVGi;L* zNXX;I1CPDh&)adf(4|`Rq)bh()2HAx(0m_^pMv>|7CR-Z^rU$_(@L4<8lAW|EUA$! zM8X5}eKl;qa4Jsi~#_p9)=}}(?2F>^O)L|4BMu27S zO9gQL09K_TbPSBzhfX9Vi@xTF%MvB$!sI3^{mgsXnhh_1D8<8!{nE)uJ;&&D!{L9} z0A0A$uvJ1DNILc?#At?{cA4xlTz2mC~n6BV8 z3GMtx(rY9W3p#mN|CZly@B^K`TRV0b_s3MdS`32?A#RE;Ocw^Pnq$I)#D%yqTVmB^ z9Wa88EO}wV$G9Car*ATw1DtP{4KF~zp--{Ov)iXqZCL$@bVJYGIBmhX#3{zCxp410 z_$g}RZNa88Fe(BJ(6UB*E8}J#h2Pdl5`lW^y7442mzsCkYT^D%j(FPsI<%QjyJ)?K$4Xa0I zzUBlTezCiT+J)~V_rG`de1M=&>;F9`_`ozQ9(}e0btPSPC9EC{{2ulB=1D0+L$X8u zo#KmrikMvP_amxBq<@@ncsi#{wF13^Cw`KekOco@LmaU0Bd&nB&TE~PPT?54_}D6S zVdNm`jP!YkP&Nd5#A2kMrO^bAZ^t#PpBymj^7ymp{qFdb`Gqd@F-oYImb_*yVbiAl zc@_;wTu3JU5Ti+z3G17gRKMS7t;c8imG*KvRK8)Y4Zm)*_Je=2U*>nO~1k=Gx?(QJDyDVIu0hc-OoOT_!{^zkNqJ^I zbfXzi=`~z-L$9JgtJ?qvI%Z5@A@ogtN1Quez{aGvV9!JdEZB61z zK0Z>uNP$Q}fW8+`2#h|0)z{vOl3SA;U76he-$7C>3=H1~Eu!UL8NnphN>v{HTzV%H z*6gw7YSUxn+9b-Ttv2NJ&3rBcOqXwom9vRofSv!NKd?hYy!?;9{mTfw-J#hNP-y-K z>5*LGGzCsOos@(J*6VHLcRcXmvz@5je9!L!+NCjvVpbZUzO?RG6bSH@F2 zJHD3qiQeqL7v$D(z1b^r)4xiiZs(n z>v*I+eyikBw0nwC{f+$`t6Up-`L^t}Y3nWWTvA`(%Wu6Q7sT89eu{X~8D1j0|L@Q~ z2%tH%uN%r4X*Fyn+YD2I+n^2B-PJQ5Ci)Hlw9kpY;y33y5eD<`aaaIO$1UM)Iq&872M0QlEbh>698wXGT2?q`l;^qqPk^q6$_Z<2)$#b?)!D)Qui zb^D_)>ODBPdM!JFQS7f`kz|u`xTdiitj0fq%j8-U`FK>|`~c&A=R)^6wc5>O6A6Ac zdlfpz)LJkuTv}Okc`+W*Ylt~VpBlV}%=W~Pdabtp^?>Kdm@*83ghXjN_|@Cz;p?}m zC7PIlE#+@{kfw70z{@V?!lqVok+!6j9A%W_V3ZVc+HrAX-NpXa@*g}LGqx|c-abY9 zsSRB!!ig}g6Fcp>@Ki*vdBcfQ==L$wF}0oi83sSjmvgFkUY*ol#<*jk#J;hgFRbrk z)@)rzT!)+Q#&v1xC}Z?OT**WHlE9;G^GO4aan?G9>&%g1a&7uCiRlbH`!b$!6j--OpEgFw9ac&Qn(&LYRO{45F7}HM z)8qT@)urL#e$#+o@j%PAv`@RrmRp2(?*Mk#cj3k3Lc9iw$1Lk_)<~^?H<<=rLXX~+ zgLGJ5SQdq4`W_Fs!~AX>r@cdT5PD2OkovG`fSjnc?;%g%ntaahXv*^C=>MQrXBU;I5 zCINgy07h>w-iwacyZ6Y+fC7!zp1McIDq=yZqsK7qbmI+-^Y_a4-tzp+Se>9J%t8s) zfx~}UqgaeW+dV+W!Ujt4HUl72bVP5MlOyI0mXoyOgX9jkbYh*VGvU()3^ACv4b2bE zGn?eLDck`f6Cv z%L8Kvb?B0OW1^h$R85KQXummL{)I&^d9rW3VQk!X zFLy~0+^$`pKph!&pQJs#K%)C{Zo4n6iB8k5RZWt|lO#-bF#Qbr4SD;SwRhVUXfQ>- z!Z?f#uIWDOm#M=B-KPc?YhN3mbW8|NohBbP&VUZg?#|-6kDCfRiP&b~No3`8`7)1z z4w}uSf~Ws2GvqU@k<2#?qub%qKD=Kp$BNA_NMs5xSH%}>1TFXl0a&+IF$?!79`yWA zpxpxx%tq<4+Y}${(#3+CmK)FSOL407s}Ns2j;mbX&+xq)+Tl64t3s2M03^jWGie;Kvoc-=AF zcqaiy*!V%W=y|R`c!)jtguD^YHhiGCiu?qxy}$|Ld9aWZJoKbImBzXZ5M4OIfsnOE zJll;Y86=$r&9h2Uph_~~n-8)~IogTkX#A3pakgOx_XjWW{@nil=B$v15!hsx!V~>o ztKPZS3stXhmGHQ<{FU;vWO+MNc%o7KZDhf5z*jR(G@k87Z~fXTc@|zN7=(aWrbIcw z5@drDIGb&vVRyHeZX7pOVaB&peo3@;;#qkto}RuS=4cwBWP?{cUTE=>7oqN3t#bbkeE^}}cMF9tI{-QkKPQ%75!BHJv3A55fcP=#TR}#;sY{DTq zN5gD)3ntxM?C3hLgUQZyE|8qE0|ko_66YaZOb*b2lf zc|J^-gWB=iQ51N?1|_Rt@n+-!|B8eC8{{F$!T5Z%=*B;m#^%a{Hjic_6tRnj89MFkSHA1?G+$<+uELAH0zIb>gIPv6phv2RETN!&G>7IA**y zZIl~o*jC>^!$Igl0{Or%5Qm~!-;@`H3K8RWYz>46aWBI`E%e}euLlj^l+(1hx8w&1 zoH$LwjZh*6x|kZ`UEH|$Sjf$T3DghYmY=``^1~!NS66E6f~%`hn~EAA7PjBd7cT!* zn!EtTpoajBxCq858}4Jv%i~hC-tWrK;Kd?*2aBQ72H{YZKEMd0gX}>%EXbPUC~2S# z+)5*H%nlhx8>FAG6qCRQ{j9hZ?cz3hCc%}?%?sx0n0OHM`bV4 zsz`?k68mAl2(bvo23>Z`MR2`Fj>c4(JRf&(9XU`)gEy8>@(#Q%t@CcVn)u~sbQB`L zqyAyy(r%6==9xL9c4F_LA zWL#~8Rh#_X~I79ixn$E?7X-B%?#Vl7Di3u z5<6hqeCYU*ye=uIQ$y2X=5MTXFFNOqIF0RxFevuVmvXv>!^il6QM;nA4y;6JdYsLU z7n5BvM=*YnkBM-cp^(1lK9Y&@mMotm(l? z4$NP}fyuu>)$^1en78U->vAPXbn?S=<-=om_v6PbcH z+Lk!EX^JZ{vh6!WW&>KM6s?|H4ocFZvD5X=x8&X%Ch_eurl; zW}bH(mmeevfjvQ&1{7VC>!9KDqV4bn@EU%P?qiLHtK-N?xh~|tf>$9f9G5K`K1e6@ zWgmbq>VmK--U4BzFCX);luTx!~4kZRif+HY1#o^E?-~-SO{w2>LQ9%}yrFoi`n`rrj z510P@%jkF|>QiZK<7i@mL~~lW`kkx>44U-Qy*pSl8;$(oD{{{u0UO~9Hyn@AF_kb6 z$2@%9(EZo1$@~2-exNKVmD)+P_38pOswpC+5*2`}UUkZRKVNDpQhGl?nglIIo zTl@}#q<O(LcrXa;S~M1;HoO1C_n`C~*_7Lk08en36hNZyF3m-!}hCOiGrH!P>OS zvAB;HSEDPAZ5i-Ox~YF+V50pB(yuR*0KN)No0owv0AX$-0Qjv}yefhi(AsJuD&Xz`jcJOy|3gdEeiesEkKd}P5@$bT7fQ|#0+!oo(Z zHpw&TXBu>ja7i%8*kXE}KuvooB1e~FVBrPn>~+6DaV;0KB2I{(soQOki%nR; z_pIdLZO7-B`omVe4dZZDQvrX_^-H-)s4Il28_FHE0IQpE{&7Ox{*uoms3|oiz#x;! z4LfWmg?>zg6DHGx^kX7)StHe@ZRH_{6I_0Vc!I`o(?15ZAxcme2koX5z5>>tLd`(J z147NAVT#dA*RvE#@3>>pX}b2f!?c}iKAzBwzPUhs(7V5h7DXs{xOmiMdY&Ze zb|gseV0i22+<`>e$f3@iin3vk4PzKuN5>i%>&h@fYqky+LdOe=Rz?tn#w(` z{bQ(^#~a4jk%$&wW_kvX^?Cr7y3t(H7z&y`j!p}rDPbK2G+5i(l)=vzU0Rto1PCCs zzBKX5==LF;0IpJn5@-lF7oy9|&iwh!O*R<+aLMynxnpTSszZNot z9!86HrVAvI_Qn>Xas2dwGQxzfpQ5kMM%zw{Z6Uj(DM@>!1KnTQ(L#S`Csw%gWn!~I zgL~-oA`%8tJDFAo>_xy3!n!Z1TZrZNbgi-)-LvJUIKVRto(juNSnf-Y@`jDZNSR-b zRbT6vsD>PKTUQfzzqN^7O}z-shM8*{4xJC3?YZAlXB#hWyR@4XxPj#w< z+eMkN$qX_6HGWcPV93p_i-4K^+3fLJjv^a7oxneZfsYD>>0tkSz=RY{tL zr@u)g$>1t@jLHnY{LortF$C?%FjHS@DH&-+ckpmT&}k+E#n-H1^kR55hCHs1Fd2cr z5hjcm2g0Islja1_biYzpN2DjL9au9COII5wkHz?ka3m=lKQdKi~xEW1@dn z>}VIO2)LtV3p5pp@+hN5-SNuU%@j@CR(q9aoAPhYudkoO!TJn0@jS{hH-Nkcf+u-i~xUVMM_~=4c-d*WwvgRG(0YjWO3PA zwBrylhepsd19Z@Y)MIqCVRK9)cvRPzR)YwxprAR*3PQ%<5NG1v*Glxw4+E3NaY-*; z#}l(Y7Mt3?YgS|}90|7ZtA`pE7Bg0{mNVEB&!ac0**}8+8*c>&x$Xz4^G)l0sJ(Qg zh|Y&B(5Z>%RKnQpf1M7#8bX0f^G#bC@r5to?7BS;f5rGajkp#FID2l7gDm%)Sl`nE_4O6KhcO`G)KqtMZb+vA{zOTQq2z9ko4f5`NF3|_wp^r+#tW1J_; z@@p;k#mvjL(SPn+zDEP2>G}M7H1LX)Ns?=^JMr|3HSUFBi%iAwLEpK7j)5O`v5C|U z=NI91;DK^W^V$x1FR=Nn8C6akLa*#MY>Ku-F3(WNSn-+*

9=62jN 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 delta 33760 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Ϛ*msLzlL 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 R93A>@`LtLlnW#PZ{{V+f^?U#T