From 0002fe64001a0327c037fab91fe961ea1cba284a Mon Sep 17 00:00:00 2001 From: Ahmad Saadeddin Date: Wed, 10 Dec 2025 19:04:35 +0100 Subject: [PATCH 1/3] Database-w4-Assignment --- Week4/.gitignore | 2 + Week4/homework/Ex2-Transactions/Transfer.png | Bin 0 -> 64699 bytes Week4/homework/Ex2-Transactions/index.js | 7 + .../Ex2-Transactions/package-lock.json | 179 ++++++++++++++++ Week4/homework/Ex2-Transactions/package.json | 17 ++ Week4/homework/Ex2-Transactions/setup.js | 32 +++ Week4/homework/Ex2-Transactions/transfer.js | 55 +++++ .../homework/ex1-aggregation/1-Visualize.png | Bin 0 -> 45485 bytes .../ex1-aggregation/1-importDataPopulation.js | 41 ++++ .../homework/ex1-aggregation/2-Nederlands.png | Bin 0 -> 37264 bytes .../ex1-aggregation/2-TotalPopulation.js | 34 +++ .../homework/ex1-aggregation/3-AllTheINfo.png | Bin 0 -> 37469 bytes .../ex1-aggregation/3-AllTheInformation.js | 30 +++ Week4/index.js | 22 ++ Week4/package-lock.json | 193 ++++++++++++++++++ Week4/package.json | 19 ++ 16 files changed, 631 insertions(+) create mode 100644 Week4/.gitignore create mode 100644 Week4/homework/Ex2-Transactions/Transfer.png create mode 100644 Week4/homework/Ex2-Transactions/index.js create mode 100644 Week4/homework/Ex2-Transactions/package-lock.json create mode 100644 Week4/homework/Ex2-Transactions/package.json create mode 100644 Week4/homework/Ex2-Transactions/setup.js create mode 100644 Week4/homework/Ex2-Transactions/transfer.js create mode 100644 Week4/homework/ex1-aggregation/1-Visualize.png create mode 100644 Week4/homework/ex1-aggregation/1-importDataPopulation.js create mode 100644 Week4/homework/ex1-aggregation/2-Nederlands.png create mode 100644 Week4/homework/ex1-aggregation/2-TotalPopulation.js create mode 100644 Week4/homework/ex1-aggregation/3-AllTheINfo.png create mode 100644 Week4/homework/ex1-aggregation/3-AllTheInformation.js create mode 100644 Week4/index.js create mode 100644 Week4/package-lock.json create mode 100644 Week4/package.json diff --git a/Week4/.gitignore b/Week4/.gitignore new file mode 100644 index 000000000..4290ff56a --- /dev/null +++ b/Week4/.gitignore @@ -0,0 +1,2 @@ +.env +node_modules/ \ No newline at end of file diff --git a/Week4/homework/Ex2-Transactions/Transfer.png b/Week4/homework/Ex2-Transactions/Transfer.png new file mode 100644 index 0000000000000000000000000000000000000000..357cc1bf2d398d3a2ef00b9e3a5ce98ce3c02310 GIT binary patch literal 64699 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

ORysqAPaI*?vIc3EIuPd?|3 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

    Jlw1EpC6qgZAy_qgC#|7OTu%WfBlxk|rnS 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�p9RF529kiH&aAU%xcV0^t&wB$WYlo1`& zrxeM4dCy|`zLPy=Bj3|vZgwx!Or>e1-&jM)GsXK?1L~1mZEvw&@<=WlsaE{zE@7_3 zRIxiPZ)GL0Yx%XcT{l1QezE=h!e94oe6qU~3pE}w@uf#HmX^i}5x=wQmP6>^rM(rA z$wTczSPKN^{JKPi)+GVH4;UP9&40ti$j1Oa(7k)i1OS0IiHZ@=d7<7C;+iUFC3_v% zj8}IP6n2wL88wT7VqrwBU~`4I&b6X)Z=-kYWw zKm0cv@ybbZh9DYF}7b^ozNcoE4ia$jeOv9NT&U>BY9O z;n7uYO<3Yc&ob~9UaH8o=3#l4F8o5gq5UfgBu371
    ^4_M5?n#S0XTCJS<(ln5x(CaTRW-w0uqv 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 E1Ki=hlK=n! literal 0 HcmV?d00001 diff --git a/Week4/homework/Ex2-Transactions/index.js b/Week4/homework/Ex2-Transactions/index.js new file mode 100644 index 000000000..47db1512d --- /dev/null +++ b/Week4/homework/Ex2-Transactions/index.js @@ -0,0 +1,7 @@ +import { transferAmount } from "./transfer.js"; + +async function main() { +await transferAmount(101, 102, 1000); +} + +main(); diff --git a/Week4/homework/Ex2-Transactions/package-lock.json b/Week4/homework/Ex2-Transactions/package-lock.json new file mode 100644 index 000000000..7b39673f9 --- /dev/null +++ b/Week4/homework/Ex2-Transactions/package-lock.json @@ -0,0 +1,179 @@ +{ + "name": "ex2-transactions", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ex2-transactions", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "dotenv": "^17.2.3", + "mongodb": "^7.0.0" + } + }, + "node_modules/@mongodb-js/saslprep": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.4.0.tgz", + "integrity": "sha512-ZHzx7Z3rdlWL1mECydvpryWN/ETXJiCxdgQKTAH+djzIPe77HdnSizKBDi1TVDXZjXyOj2IqEG/vPw71ULF06w==", + "license": "MIT", + "dependencies": { + "sparse-bitfield": "^3.0.3" + } + }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==", + "license": "MIT" + }, + "node_modules/@types/whatwg-url": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-13.0.0.tgz", + "integrity": "sha512-N8WXpbE6Wgri7KUSvrmQcqrMllKZ9uxkYWMt+mCSGwNc0Hsw9VQTW7ApqI4XNrx6/SaM2QQJCzMPDEXE058s+Q==", + "license": "MIT", + "dependencies": { + "@types/webidl-conversions": "*" + } + }, + "node_modules/bson": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-7.0.0.tgz", + "integrity": "sha512-Kwc6Wh4lQ5OmkqqKhYGKIuELXl+EPYSCObVE6bWsp1T/cGkOCBN0I8wF/T44BiuhHyNi1mmKVPXk60d41xZ7kw==", + "license": "Apache-2.0", + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/dotenv": { + "version": "17.2.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz", + "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "license": "MIT" + }, + "node_modules/mongodb": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-7.0.0.tgz", + "integrity": "sha512-vG/A5cQrvGGvZm2mTnCSz1LUcbOPl83hfB6bxULKQ8oFZauyox/2xbZOoGNl+64m8VBrETkdGCDBdOsCr3F3jg==", + "license": "Apache-2.0", + "dependencies": { + "@mongodb-js/saslprep": "^1.3.0", + "bson": "^7.0.0", + "mongodb-connection-string-url": "^7.0.0" + }, + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.806.0", + "@mongodb-js/zstd": "^7.0.0", + "gcp-metadata": "^7.0.1", + "kerberos": "^7.0.0", + "mongodb-client-encryption": ">=7.0.0 <7.1.0", + "snappy": "^7.3.2", + "socks": "^2.8.6" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "@mongodb-js/zstd": { + "optional": true + }, + "gcp-metadata": { + "optional": true + }, + "kerberos": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + }, + "socks": { + "optional": true + } + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-7.0.0.tgz", + "integrity": "sha512-irhhjRVLE20hbkRl4zpAYLnDMM+zIZnp0IDB9akAFFUZp/3XdOfwwddc7y6cNvF2WCEtfTYRwYbIfYa2kVY0og==", + "license": "Apache-2.0", + "dependencies": { + "@types/whatwg-url": "^13.0.0", + "whatwg-url": "^14.1.0" + }, + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "license": "MIT", + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/tr46": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", + "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", + "license": "MIT", + "dependencies": { + "tr46": "^5.1.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + } + } +} diff --git a/Week4/homework/Ex2-Transactions/package.json b/Week4/homework/Ex2-Transactions/package.json new file mode 100644 index 000000000..6109824dc --- /dev/null +++ b/Week4/homework/Ex2-Transactions/package.json @@ -0,0 +1,17 @@ +{ + "name": "ex2-transactions", + "version": "1.0.0", + "description": "", + "main": "index.js", + "type": "module", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "dotenv": "^17.2.3", + "mongodb": "^7.0.0" + } +} diff --git a/Week4/homework/Ex2-Transactions/setup.js b/Week4/homework/Ex2-Transactions/setup.js new file mode 100644 index 000000000..6b07415f8 --- /dev/null +++ b/Week4/homework/Ex2-Transactions/setup.js @@ -0,0 +1,32 @@ +import { MongoClient } from "mongodb"; +import dotenv from "dotenv"; +dotenv.config(); + +const client = new MongoClient(process.env.MONGO_URI); + +export async function setup() { +try { +await client.connect(); +const db = client.db("databaseWeek4"); + +const accounts = db.collection("accounts"); +const accountChanges = db.collection("account_changes"); + +// Clear previous data +await accounts.deleteMany({}); +await accountChanges.deleteMany({}); + +// Insert sample accounts +await accounts.insertMany([ + { account_number: 101, balance: 5000 }, + { account_number: 102, balance: 3000 } +]); + +console.log("Setup done: collections created and sample data inserted."); +} catch (err) { +console.error(err); +} finally { +await client.close(); +} +} + diff --git a/Week4/homework/Ex2-Transactions/transfer.js b/Week4/homework/Ex2-Transactions/transfer.js new file mode 100644 index 000000000..d1a430b1d --- /dev/null +++ b/Week4/homework/Ex2-Transactions/transfer.js @@ -0,0 +1,55 @@ +import { MongoClient } from "mongodb"; +import dotenv from "dotenv"; +dotenv.config(); + +const client = new MongoClient(process.env.MONGO_URI); + +export async function transferAmount(fromAcc, toAcc, amount) { +const session = client.startSession(); + +try { +await client.connect(); +const db = client.db("databaseWeek4"); +const accounts = db.collection("accounts"); +const accountChanges = db.collection("account_changes"); + +await session.withTransaction(async () => { + // Deduct from sender + const fromResult = await accounts.updateOne( + { account_number: fromAcc }, + { $inc: { balance: -amount } }, + { session } + ); + + // Add to receiver + const toResult = await accounts.updateOne( + { account_number: toAcc }, + { $inc: { balance: amount } }, + { session } + ); + + // Log changes + await accountChanges.insertMany([ + { + account_number: fromAcc, + amount: -amount, + changed_date: new Date(), + remark: `Transferred ${amount} to account ${toAcc}` + }, + { + account_number: toAcc, + amount: amount, + changed_date: new Date(), + remark: `Received ${amount} from account ${fromAcc}` + } + ], { session }); +}); + +console.log(`Transaction successful: ${amount} transferred from ${fromAcc} to ${toAcc}`); +} catch (err) { +console.error("Transaction failed:", err); +} finally { +await session.endSession(); +await client.close(); +} +} diff --git a/Week4/homework/ex1-aggregation/1-Visualize.png b/Week4/homework/ex1-aggregation/1-Visualize.png new file mode 100644 index 0000000000000000000000000000000000000000..7bacb296cadb60646c3806acef3da6187e21e9c5 GIT binary patch literal 45485 zcmd?Rg;!N=*FL&IF(`{rBt%6CDJf|Lk&^B%=@i%?jkF*s7<6~1w2Fuz%?6|`YEvR5 zedYq*@AtiDoN>+{a2Vrx#2sthYu z$MB}8)PwsfPxThYU7o6#OnhE(zx8&_|KvqUT&2vD4A-wc#Jf=Xdc86w7_UWlr`DOI z&L`)a;*c*9>4TP{{Oh>B^uE$W*AgQ|aOVU$94CaMub6h-Jpb_##bh_SbG?yw=I!ma zPkT?gJd=#r37gNuB2Xxw)A?J6zo1aha1MX@bKl_T1&{NWkA9&!i98ev_5Sq#-#(HO z?u?!5-~Q5FrnU2YrSGw<(6B-oi)Vc;T>R8m2B7X4gEOvHYr?*r~7Dl1g4{t-Foi&+m zoF2`%}VkyDfr>XL$MMR_PtN^;kiq;!EG!BJ(0wr=o zvVU!;f5Y<%pORgNHjDA7Wh~26xnF$C{HhyU%5k+`lSAeY7nqz@x6WDWJ!>tsO<(`~ zdR4X70zELfGZeA*dA5j}C_}g04)dm4@F6Wc_d~?b%uf!FL@%yP4U?PeR4Yg+Y0N~q z{c7=M;>vBf_;Q4aU21zZ0-N3MxV&=tl&v1hF7@-f?sdgwbr-j!n1ukXzZ-&lS<503 zl^1VWbdB!Jul7uA&Mf5enfSMQ>^08J#k5Y(c2g>kTDn@z%y!9iuj+Lhe!4flRcR#{ z8lQyfXKVB($eZiRPCC(!K`j5W(;Q@4+=3_CeG5mYhElXB;c1a#GNlmHR zTXLOOgiR;SFuw$J|6%bX7?>yOy(5ImoG6OQ^%K+itu*Ub;ztD{x>YB3$(`Dt40!L< z2?@@2AH4Tg2HUfQ8eR_Ex(2~nDax~XIsNt6WpmzyzW4U^RhL*eff`vt`= zu*#oX=Ozt%4|l(<9nac3#GCfy**Q}q;Tt``m3-ld)#8VR3Z}1J)bF4JiK|c_G!`5WOrER&8f~BiOmCBp<3a9?dc+`jZ0*b zebk*-y~BzUmwTr-rTF$y!ZL~0+p?U=d8}AqExA>(&l6Wt1{ zd^>x1oUW7Ti-T)UDI{Ts1Ya`xg)UQ>a{`|8~9B-rnYHrWA)D8Rd&1Jb6#W%8B=Z zTib30o09%}BV}znE_|O?X9P(Q4~xb&HEXzT@XfR)=N||k>`|AJ3#hMej#lZ^L?ozg zb~kl-D@Qy;p*YzQ1pItqOx4As_CeDakJ584A=im?yIT>8W8y(ol|Q448~?t0LYccc zc~JfErb^-K^ZZW>8of5G16(Uyawm5-X6L)TM>nUw+~!@7 zEHQO5ydt?%+&De%T~w>*7O~{9Zsl3-VAk+Z`{~{;)qbWctG>eCCm|KxE-w}RgF3g` zz?+%gg`4Wq?Rq)9-b?&rQ(5Y3Z8=4%^F;oi=L;nCdND~mT|9vp3B4!sy3eURLYHXf zo;c{%R((lsY8`ev$c<9<77k$K&cZJ1-^TeDkBjQ*IRnW(?Djpa+#$j2j`gpxTT_m4 zZi|vcY?Cp2ysA9jPWGXTi^@gJbJY2Z*~F_?uAJxIRnh(KIeUKMbs_Ur!Nvslh@WGj zKUA5i?@jYZtV;Kf$VT%eq{k}>Mvz;6jV@ka`|a+uQIoxV)#k_W4ScK(?^jURuZN z2KA2Q%`MTzzyE5dzU4A&Mw1jjDV80g8sHcImq%gqfs$ z%Q0=<<|PqA!f3Ov)44UW{#OUpODE1it!;a1EJ{}}%a*d>^8pypJ_j)%kzLyZIwA_a zJ?VkqO#!<&(b%UO=-P6>*3<;tST_&NOp%%-g71a9GOGfO1sC&Js05t#G|CiKAB9fG zb{^a>5?|TOUEaBfnfl_XPp7x(MYKBDpub!fh-oG4#khV|t;O>1t#n<2jTxrs9d;iI z-ov|XqQ~Xas-#NAtTO6-bry{BJ z;ZY)b=%ZG0&P-=w&adL_2$uTNZLTezHnZMlzQ6O!iaZm^-j!mzh*x|&d??ld_j?D? zK}Efl`gTRNb7ilYY&Hnu;+A^9=U{I)=rxbIU^AE*9{W?FyYC@>w} zJ@AH|)m+cHCc|M->u*(8& z?YUjy23)PvP<==FFlzwcx{qpvHfqAglEaBnC(YFUGYX-pS{BF zt~=(pNV2!*eimQ?7g;kK;VRHwT$`^~$@Axpr*AiLJs*;#=`Plj6_VXdwlBTq8hEx+ zvSzt1FMFC1bNZJO*JsC8Kdnr2tS?q|X?{m&$5e37d&YG!Mj`%!^7MRb?~2ljj_$V| zVXhY%f5@C$oMPn)h;QDVnT`2HU0|pZFmJ|y;i*o{FBf!{&XHaCwi&x4d638Im7MV| zRKVr(w}|6hrDzvFJsY!1vvwu5RQP$ip4y1=0Kc@g=V6L!_~kP*ncdD)z1}-qbgpP7 zab$PzTb_MxQd5w+_s-59@!HmH%r859l*pxKBqycMIxMf*6z-n z-IpSNT4-l)&|AAOJXbrHGSfJ;>iIzz-MYhSrQ^HhpRJHNu^G@vt=r(E|65Wvnak~9 zb;`JF@V1Nln8q#L6bn7=owwri1=$lA3{GWdYH{>EEU%60`(Mj!Pkp^scDEJKbt1wn zPxY09+*#B#;-4n2e<2_FiBCWr(Byrt{DkNJ`WE7#pAZI5A(f+4< z!!P#}YkyUqt?kIq40=NwxAE)Z z-rq07JI;n@!UuhNyDe6~n#F4`D=%*n^7|hm8#oh@>^Ql+9_m$7ls{DEUYdKU zVyhcSU*$xyxQ3{=uJh#Ak@|(Ri6$c#u1(cO#B5D8)e8~ewW`?AOys8!LSCjS^^y#Ht&d7UTLZ z^&I+{t9b{5XOo2ODiA#L&lXaeK1ymc4)nYG?r$h(SBtwRNl-pn{tRbPKChT>%TC@I z)@+y%sZa_$rx-G0gdskcM z{*6vAXz$wf>*(?iqx)HN#k{GOYv+oWcTgyl)|rQ3ZLN0>o{ppTiGtZZ9v@pZS?}}? z9oQ4G9)IN2(MJ?uzr49plegYgvlwU3dltv9S>NjMev#e#i4bcGv+B6(U2lDgJKpOY(m;YatZb2<5C_TIgCBnVFQu#RC?c>nIjaVRW-e=pV1dd$w(Pkh4oWYQ>D!>6@RL-A*CdF?4?~U!i?9WkdukBH;;3qvMG6g z?KZ3W+?6YNIRz?4qS|zysuj&8`{h+o6#_M`uI(e`62rXi1GEfMRMDe6!`E#d!q-(4 zWN^Osa0c;F{CS^JpQaOEZKM7~s+6zFuDELD?DQ?*nbKd|D>yimk?&3ghf7(Lx|KQ}SLx%| zTKFlv@Kvxx2%6L2*@vn%CzHiCwap@3(yRUL9u%m!gwD|_hT?1b4dDw#!GG*m=N{gN zWsV&!Gn0=Z^1Z=ol?~$^7Nz#6ang$yjf99$vV&c^Z%0Zw#5~>Bl~f*QY&rRXxy_4? z)+bH1?ru=Rxu`j*#B7nE zIAzA`oK^MiKil~I`;9yvVI_%(j2JVXk68a@G^U01*@vQnJ5owJpKh))pv(trse2Vi z`&{0fJAD%Qp!nejBhi?b`nZ0JSNPEnb~dJ)Q9TQl7UNomsj2PX8oqk8FM~C-7%dr4 zlyQLt=}E-AY~KYRa`D*FC?L)EJ&!=S!HNS1ryI5nwTOjJdR4qKtV|>ukY_&xa)`qK1wUbpW7y; z!KHYsL?3pKlI8HDxSA4H4wBFA%jqSJeER(M+zFA;{#!+r4uAi41nv21;eWS>UGNdR z^o39Br5HXTK0X14@z!UL%P6gck{$&JFjW;DYa#R(xEL|{p*^1!q;v6RyiX~~3Es28 zq2x|WPs3G8$c6WBAHAQK&Xwz8VBm63#iE)?;7$j!wu~>qXJTVs#hs(M2oKy$bhwY# zu;w;cs>>=WD)gM3804M>=e2{|nHW2Q&OH~lw9u1^+EG;*WIK3@67l3303&sZAAjfD zqBE?mGYBW8r3~+MexII&kcZ^1qReftzu~vwzodPKS6*7HL5Slq$X33>6>+=}%%>Ia zcKVcDGedrhkq{w@`BjT$6oAaX$badt_!8tczcvX|q5kPB7iOY*bWWy)4`xjqOJe3V z2pNPQpK~CWAV1&z-XH#n`ge`(=og{?ua97JQ!u$SYOgK&$noO-s-`-GCL-}}ec@1u zTPL|-8QWsiJ5LZ&X`oxCA^q|9<{KpazC3)zbg| zts8KmYsVJ~Calb{@|B&6?F(;^n~E(9$MJdf>^*X+dnXkQ)zEThqQ@=htH0%r-|;w; z5^(g?#Lt)|L&9=u3s?#{E0~hsqeQ-n7@$y{W5cZ(*ac%HuCiqjv~~X=+`b3((VDC> zyezN4H}T@p`g=NvWaf$u8TQad#a>v)2kNU9D3KGvXDV})uaXI!>?s2ih;Wc!w03Or z_4Dn>#z7IKSZ4bh#Hvz^#7Y=ILOouE;^Uk#ZKkC!PjXUTpb1f&-p9`rf?u9zr5(Q@ zXJL1NpAKby#3D+Fw$lHXGZIh{2 z&5R9n{>`VV(sh{`)p_;MYrmgXOjYHlyO%(=$n3<(lnhqqv^zA64~>6-Mhu2gGSDz5 z<6|!2AUmq3e-;&SUF;5akXyq9>@>}%qSi(a z*SU0johWc`*)wXH%{@yVLC(mXIgalPh7e!Ocaf%N;i&)-=;-xM9nnYD@AV3A7Zp!ndM8rm&dY~$^5FQmS$v6Wg-XPH z`l7M+={0c;6zVkVT}&Fw%7=v*REp+}L+shTbN5qPk&T~<)(@43Nn)fMZbVo-pNGfK zpsDgkRrjZ#s>SQOs|oFl20z45o#)`mIUVC&%>FG_8r!{UXJYD@ggQQQjGs=Dk;R3P zqubUN7bQy_N{uT*g_pLpmEPSdoM}QF$Y-d(l@_jn?Eh-*1C)cn-q< zd?l3(c2Fr`T;XA(m?qwfyWpZn{SBP+w&nCSZrT26ceC#z$jQli=+Gi4|8I9JFKMD{ zbSuMg93eLT^SZ`OaepmR8WUBEfC{Dv*z{G=qx(xf2*xl7NrDR%t#C2}M{nb#hAyASF)#Ac{fw!c778Nn43RLa&7T;bjvGgS;4{NO;LbU!!s5fXhb zju(5;vOLFTtugW9-C?Z@A{@sz4jxeAVy5N(s8v~c9Uzk>yjXG`p+O%onqweJZ3^P3%)~r{GGfJ23kouv36E8qhG)| z9L`I}R}UD@$oO_G7fh$S^@0u6BcMUpoHN9k2V~ktUS7RvLgKAFjz}m;aP3TlkT;TR z6&l3-{d2vuZU1lHvA?nN3O~%1PJ;b{+W6hO(&~wq4Z*$8eUV&XUlf-9Fg9MryncIb zAil*&F{krZegKX+3b&aC-F@f0=k_ReO?rIWE6JJs9=c^Es&;099)L6FWnh7;&IMdZ z5f>_|u&)^2MoX)f#2UFNvU139S;+lS zs52#bi5GpRI5X-mI)l{&N&^1}(i0jUCv7Q|8&+yym`nXmIW5@=;iUxpJ#zbfwK=vm zWv!aejY;`MXYaes9vC@c6%D6NQT8GL>R{lM@T1%^zT99Wgt7kS>&L~JncOui{K*4f zgkb6@zwC9g5$;vhC>ig^r@uRsZ!5?wt)B26(2H14Y)~NUCg6_xTnW$Q>%@R26eaZ? zve4_IccjBB^9uTUiag+b^X;R(JawMbGIxX_6?vIV@MO>05ljHFKBqMi8(QkY8It zWR!gp)ror;v^^r%#R{<(^(!lXhEvwze}h23bOhj>k$=wTip?AFCMfBZrs_VDLG}0_ zKgi7v)8T4m(ah8r0hm61iMfbksv6n~-~}Jq>WbqF(*vl=4e--t%-mB^=|U36tz#nu1ZiMW(U7tjvVr>` zi+S*$?{t_dD&=DnFESFEOtVAQ=zq*kn677>@)!T_aiL=Z>7QBYkQ;dH$47Jo#f4q7 ziVS~bSnU27d&gm<#5%0Rmj1u%F{@`fQe?=apR{W}tZHi&0e36|!7y`Ov$NK_~!!Vb^^4 z@E?pro7M1c4+*Sjc)?g@uC;-*)b9oaC zABv(w+yt9X`1o8uavF^zr%{<>tEdh}c!eyGg2P*^N+etGSHC^Sg|Dqp68^~A4rr9# zuHt3~Zm(GiX)N#hFpWv=PP50lB;jC2sF9QCrh+2}>QC=~A%V~)`qy&wc}kLuq&6zF zWz+p>Wz_eUBP=)-H*R6>rBzep!K_X-dUCFdBOTrQ-Tprp0UpxRVKZ8u->c8>Sf=`; zB;K17CBp1mNY?UDgY>GQqGo2y+t!$qC|M*0g8XwPk4%VAO*1pK!y_9h7Wj^~{epjx z3f?I?Qn|$rbWTB;9!CJqHG`uddwBkWk!sN3eTRFQf&s)Pq-@B}A0aiTFI#*JiB&9c zm?^|l){fve?3%!*yx-ppq?9x>D>#B$jBz-bj~w(y37*uGD6$rRZB?xwm?Dosz}X4} zXVpzCzckRqr}gzI?X3^#Z*R>c$0jB+H?xtDkYupv*3SNZDX+G(@IvA72g>+W%+Ftly|Z-1>~X z=PWVt;I~p^^zSGMMtb@$9$Enb0dZVbuco^a^D|{$GlCG|T&GJGD*oij6YOMDlia-@ zCv~5+kYYzF^L_pD1Ba*zLPGHO{xqN4Uh9{yH1EA`GhVAYH8oYHRVe-F5hjvWjMEZB zpXjwc7ZMuE(WD!#qNi7s?6obW@3oal#;RA)8PAiSlLH+4i)neTSP(ICmxtk$xsKg} z>QsDAIgam?6%|u!9A_+t%S`xw_+N^Ni_`iwqfefhnYsNVh-Pint|>Py?W4zt#Qb0( zm&0#KD#s3XuKh4elyo9a{e$$BglCB2rbG}t;c`$eCj4xYmU2{*vJ3qfa+>?EG zS=MT(NY>XM25KeL3EYqnVAfpPpY@ zAJn$9=uH#fo_ejnv7^=KQPXwr7a@9SY7=HFSHVX3rM3nk}N4X+UNspnhy8u&G7;8ytJHQ|j zz`(cge&{BOSRc@vcqx2|O&xrZwP{z0!?Z)e%d0UuI(n_!dtdqGE!nj+3&uKHl$*f(~F(%tks9F9{UT7-=fsqqLgr%d4j4Uid26eR>^-oLnJl9oi zMk=J#@>R_eo&?@{^d^NtIcv7GmAd~8yD=t9_9`g}iTPlG<~BHBY;v;Q(zFk^%}55| zh_1}5JBqHZHA>3L=$S+p%k~%s#KX|jZ_OBQ-FnERR?x%0T%R6xm1p}!lBB%+P~CE4 zeoH8Men!Rv1i@@;rpRQI1T>Yi9`(YGrN5Nplj`m59Vs&jMfPJ4Hjt5lVFjCg3ouQq z!aNF$`-7BZKpg~QX&D)l>eIH*(tUk#J$DwXk=0dN4Y91w@eS9x6q7M)WyCV6$I0WM ze8fmhUq=7(HMy+xq~;~Ug&AJ3<=kjyi;0cRYoSh!n=dHm zbedHlx^nlyc%6&-lP9I{^y$019sz-YmY;$z1PQcX1E4u4yj#+^ziqYIzbBW-H`gb_ zTKL5OK74w@ZJs$ZJ9{2p88CURo24u-s0#a1u!6?sW@A5Hl2_5uNf>&$@$sXm;MVV# z2yRc=-*Xx^c|8YlGayc`oAFX!NHaG#7du*A{PWi@#Pv)}OaLThZYS9LUc7W^UZDNG zZM7Aw3qd~zM@Piw*vW(aYL=#5heU^V25DJY)d*_A7!W6^_?^vL!>O=C#mTiU%S-DS zyRZ-a;4LW-N(_)qs>d8ci)yiqiOwSy2xM_S{bR6>9gqPW<#%3Cc=#|776G1opp^|g zN`)RCUf+AKa>8R(wos!~lsHJNIq2L_%6&hq;Kyr#U6Y=hiHNUpblnqE*Le~kC%osB z+!QvCZfD3g{}M@SIaH*ZC^S@7b{7FPx2ah5wV7n^c7P#HPL)48OM`CCU{;R0{8LxlPn!SxTSZlUuycs0`)8 z9^VLtsm&Aw9a|)VJce+jqMLsxxVhD;73(p_cV=CZyLW#`$1#i#jr~ncO?}})D)I_o zOnLOnm#`&}B80){U&qGpBMA!eWnRZ=dUkfj#gR(>?|-%+mjFb5H7Yg7t)y&AAo)zEkoNO&cUskmNAg7S$! zJ^?|c$Cg8J6d|Ot?bUAKSO74!Lan)I8J6B*v*f~zjGK6Pct8snxw+Ml&8i&I%b#d) z|7uxj3D45r-v0MWSQLE8Wx`eB(yd25C(a2R!T>Br4P08iZX0<7P0hDy>FMY}O|!Xh z{-r-#bx#|M>X!J{7e}k*`Y-6rlXb*#$>ggSt9f|TYgJmB*s7%yUF9|(sj#SBZroY> z?spCg8DX$JmdR6y28FVpwf>+KPoEEU4`ZP{BggW4E2uriXdyZQu@m`SEFlY&4O>&( zvrjQHHty_vT&Xos=VC{N#wadrT2D5Pj}>%L5(fz#>^e4VO~>N{J3tK8mB=3-zm-!^ zpaMYQ>*q&GN{W8(lgd3mRIDy17Y^K{OJMa8mFw>)uJBjEVD^K($%DDz8{v`7KYHw% z_Oc){9m}=A_bh;b!GjN7F-u5&cH;E*i-Z!bLcWb}#^dRffO-uhfFTw$U5Sj$%&I#Z ziv!hm`YoR@^?mk`jW9*J{CKBN=clBI(9zN9&EJ(&($h;q=#1dbLU|m!ao}K)ZvNlD z4#nI-X=!PqKwKb)LMtmr`MiRGF&_ zy#&Z}7txmw!|z zvWA3&r~sq*@tFDP`c2|HryZ3S+f2(D7#XD@muqTjGTymUplqO^shJC?kylXgsI9Gy z?`QCh$E6w-kJ~Ob{P{@W_UFTC^ugZdd<(fg=I_*3pj`P?HlvK!uYa_{7k~Qn9m~7# zxZ|Fi9RB37HuzB21pFd-NhO!R+Tls~C3^2D; zw>$_yJ-@ff$;5Qn$yq6MfkqsK8FN{lsd=;kdl+n z`x3D9@XjPC&&-{P##CCVhf(pXZH~Jn!&QaGpZ*G?U^DQ6IvVxorF}d`h($8iSxhrP zZi)n|cykJHdwP0M>)qCRNY!;x5qg@)hrY`bm1kE{Z8up2M4{cNG{v?jW96ICo;ss%60l*8Y0Lum7=lO82do?56GS)#lr3({4VwteBzpX9tNr&gbfDB&!VxB0 zd;I-}^RjMUjt-Gdl`144e z0hndEt0@36i*4APa1<`}-rt&8-`kvI;^9$ma9i&aKG>3P3a7Ytx#+zC(EO2l*K$6m z*%Yhd2DNiS|5B(u*A&BOg!K;owF<|)d6NS?avr&>S+b|vuj_G8umkCI1Aj)U3#cm0 zA^-DXbJDStcY&~ezCdjR8dRP|jEOVDp?Z74I{)c;$YcYxXe*EahTa7}gH#0p%jNp_ z@!~{-HiUNV=7c+v9Uc3%t^}qA5Rh8}(zSPVU?Ald@h`n=Zg{E>1_rZbB6tA$K&5T| zJJU{z&bJ&AU@1P}qG({!^LhD2eF*&iXbzeOex^Rz=xI_uT;aT^1(g6o{(wNJgWxd! z;{jBKUI%+FHp6A&;QUCGfXk*27HZdJn>{u)#g=yq_2(Bi<~1GcYeRkmTmnMT2zbsC zZ*!o10us|Ku$qBa%-X<-3m`q@zI&%}1IlT*UPh5_U9E)DLd3Z3P?~sXh4t`Vcs8oOs*pg# z*$CnN9)R2ea0MbNJ{6uZd%w@&RQa&V(LEl-{*TLtV*r}LXA!&v{P;86i;u!qysPes1IW*w5cotV)|?cQOv zEv9?oL{M`ofVkzi5TOWfQ-#Fr1zqA*AKG zz4m1CcThk;jhLUH`vyG}{iD@(>RMWGzF~@d55fXTpIpYD2^Ys|lmSbX?%#j*vALPc zZOt4F1oE>ksetRLQvjCu=gtiwMNhnKtyKEMu)Z%*H_$(y-_Fx-@(OwJ0(l;!BuPuV zj+9qYQc^oqo)>_4Ba675=oB3;y#Ey84sa!8eMsT;{ky^X!mu*r(~;%=r{1SdRu5d4>dB`I(ok;(5?uxAQEWS2o9lhB4yj^21xIq}TpqBCH7b|h5_YJ<&JVQ3E+^X&|)!T24iu$^vw{m5FH&UEH zRsN^KXfulXD^19(pO@lp~aRYJGWP64(10=sO&J;mat z{aWYci9#9H1{Ls$0#PwBQn2uwH*Zb|RTj6k-A*om{3hpj`kWeYJ7_zIii%?L)me4D z_tuvZ@j-*C02Q$qeWgQ(pGx4*`x9=nsX>R_JvE5BFVSTp*K2P(x1>bDak}G45Q?b9 zsC4#?ad{zxm>>* zjuePUnF~&0H16B{D3UA3q8_`_ttlA%mbIr-Z1eZ{Rta zB2Y|nKsJOtvol`$@eb6v64b64hefyR^jpBRe!##r&{TjQcaPOeogpGZ%lkdKM+r)e z^FbGc!=bzjMIPiZKtd#&tZXftLV!R>zXsBXWD?o8cf}DgMIH)ng=DC(&b;_@K6Ip2 zQ`Lf}qV9ca!gZuA`R@!N@w554C4@_Y9w;5nQvXL(_6^&8P#mVGPshZ^&o|CZLPn$Z z-hCpt`=?p2SnB013#h&C5{d!t_akCc5RI3HUE@|3aKEw86G8xpZVRQYYrsq0!Y=1L zpZWN#=*J&Zh=sucb^XQljEQx`jhsepsu@5Uis!LY1Fj2&cgDAG-}s2+iJ=y@wgzDK zB>`Xk^yxu>KSs!om6vx|kf_O5?ZyNJ$Myl}UeLPgB?wiguko|dyVDP66 zCOP8#PfT`x2r|69l)8XOaggDPoEJytfJOErrPAXs=U25UQ~)sbp8miST$ZE85m89Hz5CHPoSqE^6Gi6#Vzy&kY1`POsgkiSA1^ zh_gWEuSCzQfla79*Lp!Y$Yu9nBOoA91~x=WOH24Ds5O`|-fW@ZTC;*OVvstXFV zSB967B$ecbWk9x8tL$+bPWI(*iyM54KhK{*2qdDz_lTXF3*(uv4-(;GfYR2~H0$r` z>UdMR)gG=$bfbRFT8Zagi9;^;;)KP%Br0Y2?732U-YRTgJV^}RH|zGChNiQQ=&Jv0}1)m8yk+i8~zf-(s?dA4D5;J`ND^c&-`)eVrH zau6w`};d~vWa}EP&CIv?T8-I z%?6CBA!l^rOGK(VL~BN15>lHA+|zR#p+yJ-6h7Dmxn2>e?|?cjpI~{KgHpQnitZIfNaz^+nXL69i7(GqW}yBQzf1K`Efw(Cy6%jHv(Y?SvFidl*1^3pAt$ zeF>@Jp$<-kKwa@6P%fMOA#|A9R%4fi`=`gR1Wj34sb&34H*$Jxbb7TFH|6

    zk<4 zveeuzN?CtjF)z{}-;EA${xURF75tzl4@4i@F);nP21}j?0jXcxt|1dbNY`VfrFMUN z9u57Rg-z2{5y&YQFJ9y{`V_p^xV^bttXXb~l>LCr{g9M0fNp6c@~``4ZzzzVq^|&x zgOrTS5=2U%|4IOv?icP4jcp$6Z#Hd1WrXx#U>9Z)mjMqQ*q zN1~iETo4#PVo=#+Azi4{N@2lHi0%qvvN~kCFrIm?=i%Yb5ena+nZn4(h`1gY_$z=n zR6k%&xB0?qsJdw^fY(!STfcc2Mga`{=H})Wh#d$!EGW3cn<&@P(t?!Q5Li&`!|oxf zHB!7nJW3$79YpWL2g79Ui^+4`IPzqX4;z-BDYj;Hg(c=Gn|4{ooS_aeL?&2a04ugS|zOXtOGS3C7 zwTlS&b1IViAww3+39e&K1maz1`*ZQISJb3kit(5&F)Y=<6zaO;o=Ca!A7ay~)u8+_ z!s@Gv76aP$YQal4=&qxX&I8oaU$~sSp|%4FpcvVT*;#X>5dwW25Q;**0L&=#kxqb- zQ5tBq%s^J4)Ra#4`1>3hW(z`kAlHi{Muo(pJzo_9=7M+`0P=jOYd?OBu+6!-IUtx# z6;D@;knS8(fv$D(Oy&S|0k+pJR*iCc{IgH~u>`G(-bwF+LZqU&%5B}Vu{erchFP~( z1wn17CeuKeS3qP_Ik`b-HKu;>JMBL1u{>NZLF4h~8IUY~o3VF_AX%zEc;LVDQ26d$ zC0bfqkSk;F-o11r4c1?YjtKGsZbCp&VAFC?$#|VtW(|6GH+)y;`wt$Xv2V* zTnJaQ0vbG0i_S;*lhd3MLUUGUx`&W#fGkM6%32XrfiA&KoiGY6Y52mV-TNmc&ps@T z*R78^cF!TgDA;5mTb>4?yZ7(k2jvqPYzO%rNobHtEuqzg+yW6%pp7yQb@EWhTaNW# z5yG{?qwL0?XJ2r1DFCV48Xai=VQ)Uw9*eLBRV}Uds*s>-hx0fWFGKgb^Z9WFLKt8Y zhzuBnQwEK+XrN7->@}^LIC1RXSR!p)1qqP$q4_reit@6ac`*)UL;gl0!ER@MmDr%|gqGQ3079IO3uUyFmG==kzlOr{b*@&6~Pi+O+8bN2IGyw3a zw42lev-BfflXvg#6?-AJg8qg!0-g|9fI?>~ZAJ&jKZD={O;u?0BE>pjdxc^1DcGei zd!EP+Mn_)+QDzRQeRCAk>$lH96goJRAz)%N%8hhin3+4rgYuJsh|>!T>l+#x9u~~a zL_D)VHz$^7aR+X&ed+EV8mn;xQjrCV3A@ZL3Sxmn@daqeU9Gg}e+bP^1RJ0QvA?@2 z-}D4GFElVuVsd&KS0_qb4ZIrWK!Ql_0GQXs0*XHg1__W@Y6;alLd^7V0CUSq0kX z(74NFA)>H?bRcAP>K!4}W58-(Bb*eG#+SGVb<(dOecSOTtyJ4XP5YU^YN#+og)&Y~ z6-b*2(FG|4-74JHW`8v1R%#U@T{NWEGwwWUb6B8&Zj_u{4Gn!H!6LnpSopWkslq+i6-p2TCo*rg}WaK#8%KEl74oak-+_apYm*r^Qt?Uo2&qFhIOYOKl)c>B@8MqF`lFdZDCR86? zUe)vYQug*GMely%BjE;)PUE>21^QSX(rXSN*F$&*kP}rz`E#8jo%;Pd2YC=so2@)Q zE-FFSn@;A{EEHRas_&j!559(lHn1{ubUet|3px?sgEl!}O>e`?`+$u|X}dl@)NRJ+ zCj(Np(7*2|_8>YzrNux17f}nkVVubo96gyKTUNOAYE zWMQ(mt!+``-iCIeUV|3G&MmSNv(m%)+O5d(Rf{8{;^Xs$_y36@RTd=X-%flmfRJ}1 z{GRBE)5I!}oUHbQPXC0?7_ee<2t;TQ^djs7DOtO25W-hDK@dT}`0UxUhw;(D-ufn< zitK1!&StsZT*&ELiPjyy!byWfFQ;Eiawk%jjwgwX=^1%A%`|gAcXz1|Ref;#PQ%XE zAV0p}0Ohqgf=4})NT+kLatKkjf(ANYTM<1w*qsr^Vsc+@arR^!jBf+{FyVG@lr17=sRxDvyRqPfD!Q(^C6J_p27L>-1NbYyE6K-&oE zSzGpJ$rdV;!yFQ^Srm+=SsTO9X=;Z+P{KL|0U>JtzCq6!MCJs|ot}YVu7tuc67T}L z)r_>Xsa>lxFu_E8I5%xhRe)cYI=)3r8iP3XXEFF9EEZ9C=Q3YYtMPOJ`#{w6Q^b^C zV4fJ|Lvb|Rmw557bi&BnuN5azVL|UxE+Eo8BFDoWt%U~Ch%U2<{A!I*KiJ=!uV;eq zz5j9ZI?OVuslJ{yi8X@3zp#+^uzZyH^^d-pzu#TcypyNbicEu39M4xh_~y$T5>b|? z`VMB)c8umHxc#*A(g(BPVL9?ei)x@cR@$S_!`?3?;R2TtIbQ<633Ocvz)KhCKp z?@ZrVO>GWTRgwCPLn7U8pdVG zgN1NX7zhsM@xp96Tk#8oJp&DyTW@)2sr6pD+vtKXGpk3v;~O`o5ke z-0YCAnyo02=A%K(xHlyR47@BF#A59X4vZYddVan*-y^}s|Cy<^9gDRU!W6(!Il7iA z#ix=vTO>YYUydf}xU0sDvQ2lD(irqf|NB_OcQ(v_&*SZ^Td$^?(qYKb2!awaoC|+; zWTPrXjwgvqW7RHiyNSQu-_uLtt03;P$(FEMdxDIo8~)eXh{Z(m&Y-y1KamRKZi6i+ zPrWz%c)SqqY+B|Cg`)h)FRCzDXdLtq8_t2ugEs$<4KC-4hlEuy@^T+eUpr92xta6! z$Jdm_To{8%)|9u&zunmvKH)R#z zUTvkSuji40?p5R{&Upw{u(-%2lA|P%H^KD`IZnd)pNmyWJumcyH*+dJ_H^kW$0JUX z9E}m4#M5TBq_R*o%D)DOvOAEWU2~1&t4(ROrWAb4g|KeF@)(tZb9{dlPzPYZdN{E! zNi^Ge3K>TZ6f=PPqc|0R(C&~4-6;=6W>Dyl?*2TF!cYO-riaY-(y30;a?8!U+^n(0k-6=4saV$yy{%=K`9wGiJWGLBMPoXGI9X+2vjKRiIYB#{_ZA{eH^KcVCxJg`1WXkvH zJ^ZS--gGFRAp7`wXKBgXFvBSF|9a47fo>HhVPhk&#Rt-$D~xWWcm6MTV#qDI8dsO4 zGt`urKd7j-=lC?kmXEF-3Bt7h6NGx#wom$G-8qkDJ@3iQ^|e|J8^`0IV*8qflCnsO z{PUZ5)ZrYP@!`?go=-3-A45r=0f!Cv9T)PPF!OI|P?RLch9xMMYAd~;S8=tS#mQ2h z7Hs<-`QGuFo;xh895f#dS;ok&=f|4in#UdIAmwtV$y^J^(6#B0MwvH9*FMn|a^`S^ ze#Q+-KP-V!3KEBvwBtnH)U?>W7kH=fEJTK=Lx@A!l5yisdSe93Mb?Hfzhm#M??+#h z-A+>gkr>@Qthn9E{sSh+iBBAsRR1$UewY#cn>DN-$L#a|)S;^m=lS2)iBYB4wpD#= zn-o?2k3O{M>V?e1BP1v6FGE6XeJTzPk@B3N^6;=&+DAxG3^#_5A$%_h19%I?`GicW z*HDeF^;9mL2uiFW250$CgmIiVeL2#Km)}Rb*yTc>{RWOi7##U_X%?BBbFSd-$!7VlW3!aCq(`N!OJQ0`9-w zvLwAJ)y~Yl_B9ZHiiCp;N5tUB&pRKy>r8`z{Sf?0bD1jL2oJrKw=&X|HW6Z^&JVAm z{;(e1{cSLD`Rpg^RKA&6d%7z8z9Nqxy??0+mzwB%(wdlJv>%zH-g_TE!}Xir(r^;3 zYY%98Ygb~i@q z^TL9W#O0pVNpj0*_X-@Vt8i@f2s}6*6O`plUf>@0wyoIrw2X19E~c>gGoY`UPGq{L zmACkU8)bjycnNn{`trU;L|{15jnNZ6_H-?$81moe&NLS5jT(sIjk4nAkRLx60de%U z)0sj4Rim}!{&Y;XAEHd?@2O_hnax-Y!fK;_DY(*o!11XqzZ|GoocI5HUhY?N7aK&z z9XIKshx9mNNKMjUkQrQXrsc~ zjSR^|{%bmC71iK;*mO0H`A;Zmz%>ugEa9ceqs-fZPQvK9jN)A6{)ElYi$*bJ4#IZ^x!;*NKQrCe z%7fU5Eq{sYLviFv%sSTos^mn(LoZ)f^ac1e$9!XybjMG0+uyk^_*e58SrMzc-t+!l zZd4F2&x;b+x7DpXTH6xg6RRsY*`pLmz!&f$oNRM=4!ubw`qs`I#FOC|C6biu2x zr5NtTs`&=}koAF(yHg}r@vAjC3(SHaQe92`peu@D^zA{Jhx{+&!GW*Q3D;haGbr3N zWe#h{jC4B3VO`0DGg|!#C&u4@^ za3SYqfyd;Z$!Fo?7FA}k$P7I#k)xY`ZIRglyR}TP{yhN~x?@?p(QbnJCwp*@%o$W_ zkdH~%Em`8@klswXR0xZMA(XYw_Pb#RIU*ch3~JElnQ~s`$Ek2Sj1Uw84{(6N>TgS- z6C4Dn3@x>^OBG}F(9bxV{M+h7t;5vo%XyRjrl`&fhp7zJ#x-)S)Ux7(=S+*a{g8s@ zoxTILR~EYq9t{mS8gsC_s&SKNQ|OLJ>i0}lf7Jt*M{lT`=(WgcuBKM8tHA@9kBnU( z=jWGq9ExEq{uKGL_moKJLj%Nj-b>g=ijQBish#hjANSUK5$Hsq8aa^WYC&3i@DjIS zTRDo`Y*&z{r?f`Dx5;SD_0g(YUH$!L5$S2e74&r)@`j^RB+EGN-c9#Ri}#*FQw*)gWC687h|S~x|r8SUfG9k zzA->Ys{toCC$yE)R?1h`w`fe-8Jydf*qSbhI3oWh9OR*ik*Gj0U>~6it*DAG~cL@ymB96$vX$L2*BmGZmbC#6LM(CbTKS&_U)RW?l9VPMv zRdLfpBV|}dCU1xvxxDi64zT`AFWjE_b7s%Qx}b}f?-86jvuP{BT+%0>d&Y~WRaPo0 zZX$Pu@E$4-@5rcL#&Ei;(58gCE+v*)K=|Pve_&3Z?QHo}X05SW5>Vtk-7R9(Z&z8l z*lxlZ?2mV|!Db_|%Sg`=kchJD^G=OVR^WSNwLX(@n8T^9^oQHl|Ha*VM>W}X`=Tfc zDgr7ZO0|H9NKtx65iuaWNl6fq8mbUVD8YszO_AO~YLG;FFN%QlmJsP8LLi|?36XwQ z^!@h!_Pux9bM9Z~?8_K1LZ0M#)|zY9-&}Jp^nIw8^Yb4U!Ok8ZQuXp{$*JjpZYxtv z)?>9N4JtDH#`4*qC=pbFk3hfUa>u=QKjs=?ca5@Y?bzq`(vNLjmhCoL>xxxOmN5ywPnS?$45It_je(H<5Il^vIJXJ;9vVN3N z_{NtX@#)OJ;{U4$G$aQ6J-YMf%{A2Fcc~Lj?7WW3#`b^12ev20!jqZvOs}QLl?LoF z=Z+mMnfr#3hQ@JbS}UoY2BkK7JZ-96AwR{lHES=_8lpcc7+bnJka;x_vU-`?W-Kl} z6~c|#SGkXr+^u*J_O!?V$RF@z5OA*Sit9H=-r5k7QoUnMWR0z{BhruWR-TC9CNk|EBl;&1eW7%mYk73yUF9`jeD$ zzmF_6g7>3BcJwh&#e%ph^4@^Ud$`=A63SJ&I1+0r72o9a*7;_%$k(jz=Rwt;i2TJK zG_3ssiQCN>02d@qz7H%#&rUm)Ucr7TsD^i}kE0*&mK0ms#v1tLWP-2MR5A_aw5dDX z)_is9AqYJRITPt5L;j7tPv+R@l1fx@^{VTkO`{e+aa~qg>l<087KOYzoZd2cmCUbB zUy@wS7k|NE`huP%PyJ7{!(*QAh&{$wvascEn&bUb_L0xsGmuX=jYkz27|l+f0{c(Q z@YEy8;OUrSj3W%>S3{p(AGyBIKk>SgS!C2aa~WvNsjbJ0qVDLr5~tH@qYj0l%F>qh z>r94J?@z$EJYu>mtJ?er8~(osy$-U;r98+Vg+TvXmCro1%r++Suwihn7q)8UxxZD_ z8h~Kf=>DuydDCo~`2&5;67BlYQCvOrO-%)}N#5@VEzj}$b`1m84u)}R`xa)oevUIE zA3HIiOfi;4t@xx#D$*#wN8z$1y}~F64zKWkyJ#nzaRHRI{HqWSRH?CVXs%tr>EHd> z9dJZ7_^+MRmHhD3Ag^Jk@Sa$&hykdip4kW_e#mt{e-W1zS@ewNCk2j-;*_q_R4_Y- zSz8M$=>n(<+%LK|xNj0q2Ic)gK8*AouPA=Wx(QYDn#yozCZ9wnxQE?(nsYu^_jzsTcd)>;Fi~$%_8Qkk6i_m(#E9ZSlcbXz-pR0|HxHhevNdBFFP!fnIKf( zj4Rg0*Btruq*L7eES!dq{aq8VDc;SWs1E4xDO6~89rY}v!)eBe#o_Khq8X8w{kd-| zT+^0a9%00oEdNDHNA{x%07-_H(YQ+CPANB+YH9mXAX!PRZ%*)JuQ7(qmnmnGd~Ux2 zy&i^>Ca}SFv<3;L5SnI83I}?g!HcDTKCn6I(f#v~OzE&Ko|9PsAsGrMTaX((ZM??b zN~^y#11=Aai|I9DG1;%i-n*f}3YrVnrDHK9g@QCJg?ap|Z-(jRx3?)wSwBrlUj zaV4di*oi&+6bvtC!KG0Kt>`$H0-T!XF|T1^f65s3#TH!S#p}*OZ_B1k56+N|MPnxW z8W>RfZJh@!8h&es~-n#aNl9s>=hM#JdWm96CqQ3;U>H*RNsGG^j0VR0Lm zi$It2mmEvkva`k8JC~a*qNk8xi?*4FajnVyM@BrXXnDILW&0HeEBp`|tu2Zkt(|Zy zLPn{FJpBL)IV(v(-FK^)Jo^KX{s#jbJx&6_lmquaOa3cw=TzP-R+tcvigWCrG#zlr2J?t~Ku1uKvette?!Wu~)kzHnB&i>CR9<AVigW|x_;N>)4l0U7z?^bd8e<#ur{#wJ4iZ)E|{uR7WVF!ikT6=XdggXRx zxdUCgZK`d07AJ7K;(YrVFJA`65MZ}5Qy%8gtZ$c9XW1j0>TA)?pFk^=vbmoz;t`OD zzU!$jvz3+ifkR*Q2d@ZbIPDx;Q_eiJXn&jhjLV!nwPq88e3TEO-3~Di(s+x&7Qw== zW^-IIu(rgqWkv^>Z0eieaTuoyYHFa$a(!gyA$0381|V_`L8C^QeGkIqD~=8^U&>nV z?{-;VpEG%BeE)CPOW=*YEekCnb+BDp->SN=gz`(#A#>$|qG`>mDO;|HM1W1|zK3<- zM^)lMIeq3afBdiCabKrmK*JfAp2u_jy~n&ZB>W{eJ8!vkln8^0XhOwJfXDZ5kv4{C zb^3_Hi5CZ-r~!=wej+{q7?`-uiZ2s>NSSE-A-Pp`1V9Bz?;0Qazu?^~Qza_an(78X z^Q9Dkyt&JE*GsB|=u4?z0&#}`m$27ht)Kk-iZgK3Z*K~OWHn#o{5G6RY%3ekoo4gu z{&=@M^w;h(~7>Tv(oT&^_o_s&`7CC;oj4+^Tr`tmxpq+F4h z*1G8TfM)>4-+ygL4)~Jt*&v#%Uo|Wi4Y;ncA0(#R=vJWT{st#{`EEQPA0|?KpJ7^m*Ai7&qeT!CSdnx_vP@xJt z+#aJAyMbOjn0zYl0sXO3h5*-ePPOc z)7ByFzi|MaB)xv-nbcu1OKeowAhEKdKmWoMK=L~-I+A%`UPhVaO921$rLssLnkN?R zCAoAkG(^9==hn>v!!T*1xhiu3T+V=s?}49T4<)H-hXAmC1@X!z z@M-Q}yq_-V?VIz!7FZABv@GVgYuUWW^Zld|>H8Ju!&YB2)0UeXhf#X9a-SJZ41C!*t#gmdSpt~>QkpID?#53ciMUy(i+x?%pzbhoJ**g(6_I{ zK3@Ii1#@?t4*BnC5TK|XgU(LUM7 z6G2g0au@8)_9&VLiHi(%;2d>yjph7l&4ZTtul>kagv7t4rA?ey;ir>4{IB`_^{?a!$F9@i-U$Z>Qs0Sn z<#|n1CHoz8GcYjEwdSyb03fx~xNIcT-TnoqBJpHoWQcYU5iYGJ2es-dUOIc3kX-b7|{`{OpbtWlv3>BzuIAA1yOFgJJELv|$XZ9#wKSj%CNzI$gwri_`o zvHJUU>SSqGZ$c~W)v&+k*fRA)GKRCtz1<)^sEg8X`Ao@*_9RVBt#KDtj!x4ee2&bd z5QLPFk{v#YiY|634|ge)vfXis&OY2II;hQhPqKdP*W;NN#P)9$=I0vsvm@IfSA|3d zncV8_T^S_vqX%xJ`VGsbBWICHTkB!4@|FHPt94`}QO=b4!#vUxCG~CR1}dt#g$;Yp z=OqS%w05>A`dqGs81Q(;51GzW^uIrG+TPBV{1i2g1~*fG{?c*Sv~)bZw*+e^44Pd= zd(C(Ioci+F4UkRt4QTGC zpFVdo)1J3lS7^M}ubz-om3_NXMRM~at1*@MqH@9z;+QCZS#X}vtD?|PQl zkY9_$?K^Iw%VCJMy#lc+at!%muOc@=F<{boTQQ1YlnyU!k&5sZC)kB)Xj6a6%{=@q zU=zDcM3RP4kFYmM3GxGEd(2|#=tsZ8YT+igkR0AZxEPlJBx!q1jK(xZJQ+QEKe!+U zjWKD+)ldGXPx3BNVDVtQUW311*4?6Cc$XMk6hE0NVEpp%vZBOrpy<^bx7JhwMxk0h zOC1LK9*`n}9|nGN4Utv7fiGhSD|AI}Ob_>zN)x%=o~QL&PIpq0j#N=DD=}UR3R9br7m|o^_V& z9A9HunykXH)(CeTQo*nLoAP~&5GD|x79 zGf9{qB0M+*AGRutsh80hoJhG~%rSdYgGwQp;xByu+-q0Ev~8-=wIOpahtT6q)-WkkyzXijg5cTF^3*DRer=iP zS7)_ZIn}>088_2`}jKQU_?UkFxxZzr%|dr91{C zZ!d|3k0F+`N_8aCHy-cKyg$uuMsZ7Xs_yZpX<9<)?1<0DGdrNIvve|6yD>$fv3345 zF`{-jkPT{NndOP8?k}83!uoXsUBAA#lP&;xwoTRV#iVv?do6vPT2h@!<7$O4Zk~&Y ziSxsI5~RwB>n}&{TuMd-tr1VXLJ|7J0b}JCS{JlA{p_0-fB<&M)W~i49(2)rP|Ec8 zX**r}w8zo4vUx7w9F&>gh4sjH2TpB(=FGoEDBBOWB(a%~FgC3f_@y^LMmJTqPxJLo znONORziiA=ogQ}$4>UYwMP|~UGQ;`fDnz$&uR<4v$#fZw+sR0nyMpyp)gspPiHHjI zvkk)V;Mdp#5_*d52cr4g_1Rh1lc3-NF<};+jVDY0evW-}!`mLN>x$tosMPpnFqmZo z#B3zpYwSEb28#ZH=){%6?Z>aLKxjM=*vlD_lFDQitvf(d#Gva^?_;}0X+F7yn&?`^z@*V6?eKUBq_ z3SC$pDa)_AO`H6qB%LYrBp+(69$3{vKp@1VWit7(%dxPqa@%bkh(X>)JIos50m6?so+!uD@77kx$n+MfNb+=F6n~Q))~nE|lrj|iBT{*v zJ6-Uhtd|T_&Rmd3=B_}FZOwP9N~h7DQ$^UvJRW2Z(aNW<+(rviG z@I^}tY`K2!!{C_i4;>w)As*R)oo;GUtwZQ`!GPbi>jv^+&h9!RH%8HIN5*Y5vwPJ0 zZnSH|>@k5dM;E7vXK%+uZ?1TFM7JGY{v_-9TaVf@xz%k!*?x_W&Q{oy8w%W+G_?Xf zh{YG%yNz3yp0OU+k#~KggK0=S2XtU9Z;-;iy~|k5xYDhMpRk>$$G7hT7iFa;!E&2= z*=Kw)A?0U7pO#Z{1{bytH@>8*D3;aD5&LJ==s9lzb)w1RTgE?6m_gx%eAUORFh_y3 z#uO`b25bc@V%J!VbSoCSe))Yg;@Ga0rhJ&h^c$Utdf^Ujj2AvzR3u8^m%m{Em9L0r z`C*Ukwg0|#?oL_)iACJ9Eqb)v__pu;2vmAakZAdC?VSgGUQ)?TO`ftv=$E0XejN~) zi_?#!^kiUbV|X=?sTPS9F#GU^*7~Y&xai0f&16Ve1$3k;FS+>|LA~a`!TLe%cXN;p z%(9CzQt^`!YyBzBQOdn)mAg1+_a1rmr<_WqE|yn$>N6K#7Y1(|zr}-u2)6*sl;}~Zak3)e z>wz`$*xTlAZSt43PZrv`zirJ6n-rsqM3YABU*%>FA7WTdfMv)lp7dlNmr+g-!56== zNzbl0nzS~uCdCr58W25ubvDhjXQy4tODmf2tB9sEQUj1I1r+WIlhLeeO;bHm56P;7 zHQu0k_ls%QfphP%{T*eL*Ws`FTJV=nfA6GZKLYMz9dB9luL^PVV;SdEnK1(*;USiL_9Snv99F4u5_Ojj zH@@es|I2c{ul(zesjsDWu2|TW4#X4LxfK1Y1rrQp)p8-gfVz{Y%8Q?y>v9>ZL^pDk zq;Eo8*y==^ETul?Zsw<14pv&KL=nY}dz+dmrM09b+AM$%W@ZK9{zp0wr9({%tqc2T5~mcV~ap* z1AlC&^~EF--}s7jILETtOers_dI5WeW?6Qp%g};Z7%ZV{cZ>&id|}jrc02SUn%9I} zT|TVPdvBxWYxoh?!ISNwOIX$+NE`EjsawN>F=2ODrSF>}pB_(7Ch3zeF|oZ|)OV|8 z-4RB3y6xG^JndAcBS}zRqb~tILtVqhdeq<@Up!>3e7^e9%k7;7%+_Mk$V`&m)TWy{ z6h00}VqE8H79q2Zk$R|@r-Yl4`1O(=T1uFil#!?K%mJN)`^GtykTu9b!=AR;&)XdbRu=Pz#siIZ&&FiJsoODi37Ef2>h_|y}n26@i7aP z3^gMVbn&c+Wr-10Wo02K{W&nHq$Q1Xcd=XKdDZPV@2!>kbd-1+O7;m=ko?bSkqOM?ws!u299u zU0UZsHl7@l>;1e%a1-EA0{9>npabcqAdVUV;nSuFUEjms?;|x0>`W@;bJ9qL8X~D% z`G%x|k>q6iASTeveh-~P(}RX;P;8qOa(s+iwfqkAaS%Zx*6LZ|-!|VWjOM;_qvU9c<-s`98T{&2U?Jvvs+&t;WWa~em7sEFTg(Cyt!mExm%_ejVlf;*}iYB|F(dG zj=3G|(FX89L9veCP?a??YUs0oR{aFIpaMDf1Dz+8s=Mv~js`IhdcQlNGScT&RZKnA zcn&A!?L7Vb4DC_A;%s5)vQ{T5X~l#bG9#2@3+svHAMZ`(iPAnOayTgx%vG@-^lj#3 zDpWZgA2XLDWADpu4xxGfj<)8;PJZWWOQ>_XE3BJEXBk(iMc94-J-lxn&(@!IH5dtr zh|Z3mOqo*NAdN0-;XPX|+w4$#TLYishmI^H_ZTAvM_$T^= zkm3gnb(MXifFS};DFI*$)Q7OUwEUh##tFMscjkG^m_EVefUsfKSZld{J{@e@MN1_% zsYdgnR`9{>H8f{@C4S!%mHJP#h?TbcSL`Y{X!Y1C9JM`t&{M*vmKJn^XqGg}nk$^+ zUuixX&W)@y>Qv#65XxzLEAQGzN70@ag3uZjc|2pNvI56Cz!oF9Bvt9RsZx}K8JWPT zElS2#-&)N_q)9D}blzE%0jI}BHT-T3TrsmW$eP@@bac%E;ZhBm(AC>O3t`7HZ-W?@ zw|ZM;yZ(*N=tq69;8$*3yoFVk>M!ICqBJWu9xjOpl|LqF_0oJA09JE_e6!V!6J;(h zD{}nBaDotyRR54IW5O#(w;sKX3GVvUjqQ=xdX3PdE6BMX6oC_*c(-E}^vk>gO2vHTRpk}zfDnk}`{sc5U$c7!deDvD=3uM#kz$Zteq zmOmdE*7yKmF~lP77^;E1e+c%t^yqrKLoOc!Kgt_X=352e+^+5oIDv_P=> zv+g0qHc7bV{HGU07wb?)UliEYF53&q>h ze%BXkhE+~u`Z8StxYY09($34ol{FTI1m$?C3a!H?ZL^GfBGxPT8g0U|#dGu0XfcL5X zZ^y>K_Tkxr1}O~C(xrvXPjF8($Z;fP6YQv-&F`dv`s6$5s7ONbTeT>a?+zcq!7V%r z8I49tSqtI)1m7aJH+{L31MncvTR@jvy*qjwQ|}zJJ)b}vyNl$}OG5Pvcc;tL-W0{-e58J9CG5v<|LTbqO zshHI9f~8NtESoccx?x_hpq@UfI-VfrWyr`I*d+K6fEwmo#A6VHbeIyZ&|il73O$mm z?H6hHCR?AFYMf^t2PTl__fuK@&h5MS3m7?B2cd)d8n))m4@RT;VsO%*#tt=IKqpZST`=!%Q-8s)j1OUY3wrnJh|*9w(tg*=0T&m#JF|Aczl_RuZjYfdbW5=Sl~;%QLB^$#+YF_FZet)cOcJq4Q0e1&rgehNf95hsxutE==t2xta zKyf_`>}t_=x~~bkAy}%nQ5%>*pl6M-Hi%Ts*=i9Cyr-zJVo3UMmRx4!!EUQSrxYU2 zn2>ZR?UE+E#@iC$r~ZM5IMxo1OSMlVPfuw2&`fw7^23=R=|QC*85Ke&x{sEhb}&ye zdXT{xf=jAS3-CK*)tl!8jupyB@Hzt|1^IJne{SUZdluPyGABZEST;s9+tLR`Sz0E> z6ld5^C$KJ?g4#T!7a5$_k?}U6Qg6NPBzEzZ%;K`PdC890nza}}Zqk@qFJJybem5^x z4L670k*FF9UKy*n?%xXoPAp9UA6;>|x9p&t|6X;?bdr;3&S-~HY&Pp9n-J6l*Orc# zhlU?99VMC1%ej0gz(yIH;tVq89Unh=f+j}#^>l-99NR^a>?&_nh0daKyq0sBdX>im zs_vwbS*lF9eVC;Ri^e~$X)OCFySi*IOXmX1II=-_xOl(%_Pgaqt!T-G-xo%TABTE> zu*_oCLOrg8mi}g>UA5TzZN?MLri47ucVDqm&r2jJ76{H#{fxY$3i)%@29po;Z0#M0 zUnF`p1w}rmS!J@?@EEsW4PSjy(TeCMAc~;h<&rWj@-E>D)Jir*x6?%1Rt?+STmxTy2gdy!hvs_-} zuL3wo2nZp*_Zv{yunK%ZV@d%Vz}EU{*RPI+ENr~Iyltsh3#0}b?(wqvFtAXMP;v_fR_NlSGw-AG(RDNL$|{RVEMkJM$T^SF`PA~Vq+K~q?4}u6#uO%`rxVnIFSp{&Q!{zt^`MR5irEk;1m?{MkkYc2WGTegG$({4XCp zL`U~OJ)P+P(??wYN&I1Ic9qwJxb2P{*CRgt^+kA)mZhWR0YU%om-PTTzgj{#Pm2K8 zgv4mcM-UjGyFNIBqC43Io;l=NXZ0G@pLg$Vv4VyFW6yFI`w#$6cjbAUy&xVuTALoA zPkyl!?@5I3#MpyY_jH#*nyXNZ*dxOihZcK2x%-m|)ZPWZ1kgS77uMpa3D;MU93%YF zYDFHV2f?}t2-}nPr$%4D4*%s8)yxDEk&0V8!pfm8AVzTwdJs*xPN%v^d(r!1i3UIe zwAz;zG|{qnqCBJUbrGKxFD{2ihZx+G-8&m4t5AH{+m!&KeeYJS6}{e(&8WSczY3;p zJCAGIMLRk*gTZc>RfC*I-9Q%@sA(R~kTOZN^Di%2gz(Uu0`qyl%w&+3VA?|zGEkS_ zAFbT!T#rPXD}ekfIU}|JgBi6h5uDM*^ngiHyqKz z8=mh1_%>-J9%kCQtU^nE0{1-^d}`1hM-R#v7THFfdf>feDtqBLM-3)Peyt_%G|#zt zyt0I_g+|2A%N}lJ9Q0CSg0eO(ok6~}h#p-Y>|E}7OlSiGD4(OMl+lt-yY25AYPPu2 zPLAwKWVIi$!LGxl7ckw}r~0fRKQ~Ky0?h?$%a0Eo()MFDuW2Q(H*pDDp_p z4Dd7k@PQ~R)5c#z{x!5Tg7tI7J(q&0XS*p%s77EI##efaY4|lb*M80ECGBh$Wy_XF zwj&HszbQZ1i`Kz0buC(YjUiQ{1MV=8;d!SZyX+o(eR>0G_g?Q(W=2}M7a&x*pp5Cc z+EOW>{!?a;^dBoMH(dY*BqWbzL;fgxm8`mJED6QEIC zk>xZZz>fm^3BVZa&D}@?farsKnP0hwKrLNgv_QEw?Hd@1P#C$O56Ja)*M0y?-h?mgHRw)Ze23qa|a!Kj^jGZQ! z{*CZ^R6;q$4bzBlG35d@sJ$cgVb}kise*CT>HOZZU@-OFz#fNlz>2uhFjjT@)Y^sFXcVgPkgwtd*dgQVL zkUn`i$~R7*;+49OhlAs;79dlLVja2aB5O(0AH%Tg)k9+?fqAv9Ni?<^0WS&pFMz2c z4J0qGJDC!;EC}A^D^vuf5!+x%%fJzSRMT)Pid%#hNDGvK^c(vbj%3|xJk|5gn#O}* zwN(H!BBo>GuloIJFYzM1pPOhy8*V?M`8hrvzJT*2;Uh*^IkVNOy9~k2W?&*kiQCn* zY*SLHJnhnjd@1}W8zbLzX&*bN3n~{Gp@LfmVx%e;yZVx<(+TqC6}ck{3qOP@>$^T+ zGe=ipQT1L0m+U>(NpH|m!SxM6{s4`*YujWbG_c<+Zype4&78v;5M!k3mjzA0eQJ~W z5{#y$=ZTTrn5lwiv5LPRQ7c|c74#CrXL}!>ZQZZ*nOxB~_Ty`7JaFj7&6wyDx7x2h z^-_O&iYX&l_}YV;CoRK|#N`y^A9-DJB`f2;qqJT>`|VE$Ukm343*3d$AAA~|$$$N5 z>b)zGiYQth{}Z&{|xH5Et&i z5!TFn|4iA-bTNV`AU<~hIRJu2EJbC+}mpPn;x(V}~L&h&J-O;&7D-Pa1|3l|%zb9+*XX4320 zz;_R6ouWH`_y00dx)`IplG*EEqc`oR>Tewz9o^qrOHjUa>%pH3be4bjozn#aKjhCl z?tk~G($R_j-PuXk^rGqSNB{TU@jt2lD`=0W7k?zfKbOt-xSqd8tNaw&0DY9u zgj6;BQjIbRLDaKd9ENZF`Gcso4F*T%I{9Pqts)lqnYaT^K2SapE!fn;P?sEE!8jri z2fmafN4#V)S@M(JZt~5`wy(*_@Cv!ccNEVZO1!rPYBcj_EIbAf$7J8@A=>%H>P&aV zeo*PXXro4*lwt3=U)F8<2b1NfhK+(X&-nZewBoUkrRimlPK;SH`}u~O6#7kNuJh5ll;dw0({~(9YusLWF1an{1A~-SEhO zM5$LZl-iN(|7D2fIjtV>N(<OVxAtK2sSo=FsZv<}) zY`~fU0c!kzzn>-EHMnC^5go$9>U$A3vR>_(k7Pdk0Y=XNpPsc6fEe1>*;LdgQK@E) zj-|uW#CN^i8tqog7g(JrHO#Y(L@`)aqNhrE!~yrmaRS&rslY8^+v(8Skq~aIsShj4 zNLNv&eW<~s(}cn;{zXdJc3P|^R~JQ4_sQ?t@_kYm={ivKT!(+^7iWxSJJ*2o!u@m zp$~Awq>Uj|%-h(aZ*xgo)MwN~$C>yY+gVjK{XTu>D7AA~S{Hg9fhhpf;S1QR_Vg{l zW%v6zCHHBHtOn__Up3MjeQq*a_&7(i!o!8lynu381P~}4Kw`YUtLJ!nR<0^ZXsPjX z5xEb3=XVB^)zw8Bm*5I)`FaORqU;L>+2b{%&!D!SiHPq~CB&|_k&T_bw7XN4)jO5b za>VSq#o;r9?_db%*O#{<357xu6W7J|>Z_}hZcOu7sFHO%TCF5KNL)R3$vCLvNK%bq z^!m?N*5(^4*CbS>_mU0Abkso;o`6`O9R*I-9oz(EufaE(suFrvkW$vGg-PO@#%uiE z4;oSOFGronb_(U#GEI~@ex-fA%e;gtluOPe27j96$-A)YX6zL~>Zweq1C6V?CT!qg z7=5TGEIpexk*1*iYrjNI9e-`a5Z6D27jPo&RUiYK#MJk!cK4*LW;#-T_b&ZB8kOwA zA?-$z)%+CB23>k}poREMS4D=LD?u0N-p6BiK z5C0BRPT7CKKi|A*Rb{7isO0x3-zpULCbqtfU6G$s1EW!@dQh;?j^b3&@WUPLG|wic zJqXmu5!jOeps!WWeGd&c!tz1|AfpC8P8Jj684pB%5`U(4U9M=*Q`?@rI-|Yjg>i|s zk$#p576c9b(NZBT2!fN?Rb7&Hnu9t`N`Jb}srr%D{M6ym zJqEBegkD(6En}^`2(F?nkMfyrr7T|h5C;wO8pXGM6_;(SA-Dvy6Y6YZ{&st;?A(}Qx-Dc(l39EIG`uHPett$lMctGb7TF7Vg@Hk zcn|3pUG+X2684gH>suDH_dEED z203)OJ^$29zh{&(zwRSjd{kl4%BB4+=s{Vzna+6Ad)=Hpv%y)4Zx2WAyAWON4Zq$t z#pYh{llXF6ZEF&pz`2QP0}mc-R$Go+mA)C^^_dAX!&q|dLg`X(hT%sIwJUH(@)>QZ zt%)ZFuwNtfhK$4$G$nPSp=4tLzong=Q^(elM$b?Pj8RwMQ3L6{EaQC(d;eabj*-*# zauw3#nqk!sQTyg`b+;BziB-6yAg<;ugmfHUtjULU-p0cd^A{C#x<=--liL|;owcGz%A6d77;VfFD4~qZKgdE2 zt|@CSxr~hCnaTtoLc}=M!+WN)2G`Yo-`tw{Z7FqWFtbkM)EVMHm?2cF@V4Lj#+oio zAp(poSo~*qH~w|G3dAq@3}+OJ1Z0=Fv$#VoGXwDtV3&GJFAb4Zv4 zRPXz0X!M6W<)yJ(jmzZ{0%p2O@|MxKr2(xn@Q;FFbh%%P%pq4tr6Sqpqb zSULCMrg@sV_Cz+6>zKh~5$_0doOsG_HR^C0_aN|0XqHjJ(${xxJctjz-RkezWm8#; zi9(Lc8G&TMh;*D(>-{ME=j=~>FJ6-RRbjEpGaW@~XVDo-WNMu_46H4#BBiKGPwPoE z4MF_;rkM3+My(at(@;70lL+Jev!A zhS3qtQUsSy$~PH>#?0Zk)wRnIgL_`u#!98Hhk3(CuJ>zd!}zU8$okzK!yZ?mWzpei z>SVMSqCT!}KklM%y6+vi;LncnzQyp=hSj)(bz2MXICq=$Ed1YvFiZMuJtFwpoH6;> zdGJFt66!WeRQKaL-IJ<3lO4%%4NeED#hzqhY?)|oN+m2Px35#=sqt8OnSUP3Y7Qn| z3=!BgY*u6;Y21@*4BjBTdP1Kvu6qCVugw5udmHf$KE({4TJHkeLAxGNx-0K)=~Hic z+)IH$o-Gk%CI#RlUpz?Ol+ZSGV2S(NknpobI*Ve1$?q=9Pab?8tB0%C<7Ug_C_jB< z!Dxtf_UI9VDeD>^1EG3WP}o&($ZiYzlf9kwIKM;dG@!AsfN12OJwx!R^i z(}#*+m7j)fZ;<9)s471e4(fH$BAF|9F10mgY=*_lCZ9YAcAV(#e$lC53j50h*|?wT zXdX5fF4hdMU$eaZ%s%6Vz}vTvr;W>g&VBK&mXG&=BL`@eysz~QdU;7oKR*R5M;@SC zt-K@x1$X}LJQR~yTIRKR)m|d_1T9j^I6MB0;zavZ`t?)dW>Kb0+>P5`WK2O+0HTNu zf75P95C_cqgMfhCA1YSZ+`VgQ=mi|mhg?3RyHRr$+k75HE39^7!0?|=|7M1*Q_ui` z1~hPpst_gCDfy7xyVX(aX*n1b5qKorLqCG8%L7Cm*Q4I`6~%k!+Fr@D5Ch?dOuYZu z$?>ZRlcg&Sqf03MNe{YPg+Z1s+FUZ`62u@Ui&iPr%BcwM{ik=B>$Mg~FMpf3q$1U7 zW^wv!5m9IiLcfP&r5lucim@5pP&*$JYF%gY0Z9Uw)AW zj<+nw(Iz49MZBrg&R1*Xj~qu@svkrwl0S<*G)cp1ml!9exLt=5z>^a9!ATCwssdhQ zTZRLla2$mm?_h@UET-Q`<~I>MSKxn1W1OX!BsFg)0)d@#f7c9nM>|!{B3&o_!&0hz z!r~>0nX)iA3Uo80?YKn)<44Z%P3>Pa(JeA>0g$QyVU+&y|`7ns7wfqZ77O;$l`P#R;6ss~bacqD^v2?$Rc@Te2tvqKr%#*@CDM%Rb9RSIq$d!p2*E z({AyzQmvbfYrx}MA0xZXyGK^`QE~#oE?ph@m1^*OH>911(SVA8o&~wgT;C!EAgQ9d zMiEZ-T7HAU9HN^hD~KOms-NHVl_ZLsIBJrSu6rP;7d+&n*+souXQynso$zJ$;EYy1 zCtF+sEuzC`zWP0z1Oi=`$zqFhX2UNqVo-U@DNd&6Tr{b^l@0VVXW(*EaBW~bd)n8I zikag>gwbA=8EzK3n-ZT1{Zy8+?x(BvfL}12KeeD(pfZ3TIM2;;{>UGC^Z^BqyHFf~ zsa@j*#IUarEOX9H!lQ*2srN>GAtN7c;Y|wTU=}gD$~n8PtmnfOoI_OGWR`w#cw3%t z-R3~WJHvH*M+2N`YGL6evqi;7>lL@wFKL0>0-Ya1aN~{`CHnBh<1g6fh=vCm?db$G z!0I1d(!bbwyzqrq0|L)tvt}~WefCPv*1_kXS16d3GZ^k`z2`25ML^L3;jvI+IDTE` zr@;h6AYag4&Qf(fcGwONpe2Am6}t?5wpQsCkcnIl_%i*yEv?KY^6WyDYB*IP9(FcL zO$*3H$0*bH=HABj+UaUzpayBm*Ttq7R59dJ-!QsN^9x~2$}XOsk~uD(vaozkb^bAp z@mBLFNjE&>hNXd`=}y@$;H@f6N8k24W^6^5qWS~T?z@i09N{Rx3yqW{y zMY8(!S-L48W}SCyoUI!S-6n(fgqSr+MSw%D0-USI8Cfjq=J^)>?lW+?95#N2&e||u z0?M=%V=7!=&pIkU@u2PSkLBHh+QId;AG%$&RGMU9JI^?gx`t;HSXK57fPgxWa%6hn zD+_|{gc|tdB~Fiw$7BPM`%2lC$i2$7EqG|;!RjMaFP$bUN~+a&E3EkBLu(RKFxy3d z4fPJ64c}#Cb!fvtorcR2OPT08vj3Xiuf6|?{eAU$?e=l{wG&uY^QxZ~A_>>an;smr zRr_~4+(k1O$8T($c%{4GJnHVz(Pc)XZMD()ZyxFhU=FT;8M~M@0X4Y(MQgBY{xkUe zqd#WmI51pAfEg=tm|Bf?0P<%q%6`P#QlIA3U~CT@9Y;C>+Efs8>FI)_p9vhLJMqsL z=`>6J4wg<6ZD_WZU`_Yu=f4f^2S)pU2m<-vea-MQ77bQVt5qt12$KCtY4gZ zUBmI(=HQW3cl7(LxPwRDx}(9lD3J`GqYs_G_hGaOVuhkUtAPf_%2zbrLrgox4}ZP} zG453~#cF0;JKgCof&@C7o*KbBn)&dTt>ivWSRjqB}zGPhBPutwi*r;PQp8 zmM-=_iG;lYEiZ38+PrLC!JdQekiZx@KR<`=_01~6z`%WtqsN2Ae@!Q)dpRbDo#tX& zTsX#MYKbfk+OsX)Sejg3I2a5zgz09)9lUbP$#K5${UHX`v)`)x!px;z7Mxjx*?VQx zx;bSA#2Q^ay$`59$$u}Xr*+`;;qtO|ygukB65iQ0@xHVdO*_`n-t=2&p|RF{Vq%XS z-B%6-F4Ek*f|-l*+?AwqS8l=*GJrd`oZsJK>NFmr-IJNuUBjI0)s82`<}VxFZ@#0H zY5hLUT{_+oH_#Z9E3f&0F2+M6lGk`fGd88$TIfbebR@6RtTRJ!fWF3JevUz;jHwJr zQXoaxw8mPzJVr|pwU48?^#O=l%5>$l)4Y|YA&8Z^MyK$qm>-xDwGx_D$qG()3tn#)~;;`%PaU#_{sDTnlr)O~d>|VlE zDTf@|9h&7}_LW6@W>#!gfrH%BAADLn&D7-TSnc`gC{ql5BEio|AD$Z*;aF69*%YGZO6l zv{~Le9LbtHp*f%;Uolwqa_Q|V3F}cxa*s3>(@7VCIQc-}f$LkH=u;n;)!(b{uIHN7+&M6dzgt6)R~ z^-2+>8UX_$NHqu|U8y1$5knDaN(*462ofWLbPypSbOJ&k6a^G1Qj$;%QEAeJ2%(0z zKYiZ!&O7h>{`&TuoRj2inVp%Pot>H8*;*3b7BnLv%BZHDJ`ys@Ko$;&7}YM0XN?)3 z1lCFHs0Nzm)%zM%gu;4$>y9iwy!Av`DRqAJO!dNo?u-$N)`9!GJ@E%|b+_nj_3MqB z9BtHz770namkmetli{SKJMb1V6k@(YA4tLysgCW|3k2ngXr`Zt3f}TzA;DH1Jn=kU z#_aw4C9eOB&ty!%$=l1$&~g}iEoWPq%si?|?!nM;6JF>=YgT)@+xPD+?(juuQ6|lG zDz~`Xa7b2#8z^x9o+SFg4Ycniv1eW^OkZLJG1x_%$$>ThK|MBQV;j_O;Ku#=vCieM z#}NQI8!@Hpg#{5SNrEFx>ApH-1Y&fCJ<_i6*XVtiBc|>X@~s6xCjPzS4U<+jAj(vj zDkTD6$yv{zYlmor>W=Plg{W3kvqrhIcZ$M=a*>h!1NinZ6i#SWO_hO#YGJ}11DV9= zwIz?eZC?-OCAKu{PC14Ip|BkCkF|_f?i<<8>Wj6R$>I}3N+wgZH8GXBN5;2D!cSNy za^XTB`qZq>bEL7*5Vt>@Y!DL<917rc zcH`6cy;AMR91e9j<^}qF^|hT7X|L#*QJ}wJ^LMwg#|LJO=y?0{yP2x*)&n*%OWm=+ zDX?Tq_!~*HeVT5L8-FX$0^7;r>aO9%p4G>zPNR{#5`;ICvN66CGldut53zi`p5~wU zMIg#bm025A(2v3HC@BMeYsk}4$3iT{Zxh;UZ;l0`omQQ3XKx5OI0px}Sueiz*a72I zgOqIDiRV)WHUI|Qw1uo~^KvuoBE)>`HDflHg; zf^*JnE}#cXcCrv-Y=m&chB^;R)u4fhAjQ}mXln|2b}VjI;E1ZTsGM z&f9>$Hd_5E%uw999|zRuv_l&gGZkia8UnYZmb#Uhsdyxa*Pa}6YHHS1*MA6~5?m;( z1?dl)=O9)C*4OLgAjkb+Qwd?&mqJ%}n>~t3jZHACP51%wTv%wO-DyclyT2WXYQilL z_w()IlY5~;8xvyY`K*0_?yHYjqI-)QkQGW;K@ofNAhzg76A_h(T>j+p047(H+8G6a zz2gcd<)jt!Tz@(HC!JyfOnFEAqwV;F;blO(XNfoC3)*EqvdxCZq7Stt-r%fLJIM!~}O)p>pa`*I~Z0k`t` z8IbAiKu2yTv#srER^UT3GTmi^L2I0)OqN!3c)tJh+uJv|XT zqAT&ZWc_fa3j#=CJZFe=Li(M$Gi~n(O>X^R7GPcs5mE8BRNfpXWd?zG!6PoZz~zE- zrNhg#7!h)SQtm5T$7Ji^H_eeQf*96Ur&K(Z;t^q^jJ`@c?u^trObg)|s5IWbKZ@7f zYeQIdU5pwXt-QHWM5)~ps_zEgx2ykKu5gE3GQJBrf5Z1e%^n+-rwf-c>XS*&Ex|_0 zxJj=y3nLYO2(>FXAg5p+{FQpmNq(BAPRYaQ)1TZIBQCSUl_E@!2Di_3^g*^Ou+h5p zBBWF#egteeU{ovjNXa?c#Xi&J)B6h!q-JIQ5FmNhJrm%MyovS`!iD_;&Aj2!38Ah- z4NS28d&DfLY$rO*$l8A_FOdffP0dfu;nPfB3}G=M{WyBwdV?wpDLy_5!bRwG{3wDTXTS@U--Gge&OmkX@rU8^6J@)HC-33S1_GtJyj`!_r|%qV3$i6SAM73IfYrH(N zt2LU`Hoje88+tdaj#?9#W^epp1p))<9!WpCClfOkI;|eKeu+}l%OHm=4*37Tha#A- z-xpP{t_`U+=B~B}Lx1MX4$TafVd{z)#we~9ks|M>j*Fn8BRLrx9JDkSu&Ay%xKc{# zRP!8yN87hZeo@gi;69iuR{hNW{xSSiebxd6T~J-Md$s~U(80YJlErPwVLlwN)I8m(RSm6nkhRwG`2y^J4ua1JU4-Hh?ncS zf-N%ZKvfgz{i+kBEzdt>JxbZ3U3|fX!1Z}VNU~jSstB7n_5hkFI4^Ky&?H}G_}wwa z8-d!@q#5RVaaO(mu-_ME(7sbD2M1DTgGRg^8T&li>5nUS{{RN}f#&@!Ro`EHUlr}R z44iLb@_9L!TEnZN{P%=;wS=v!%p^pSfxZ0)6K?s$5zKO;{yCULU8z;{ET1Wf&*D0DIX1e#v zs?O!*XuUTOC4p<7r-Y$X%UiVr=k9d|+@exJ)}D0L%`6qT-8W#!Z<^pJ`&^{R3rQ=`T*Yf16fw1NR<$Gh)-Un#!_}@!ukK} zp*}-dS;>+huoq=*c@;-$Xt7kG+y?*wER#ms8QsWJ= zp@UUA-X$f3OKp+zB*9~%jRmn$Haib*Z7cwpc+@64QFBg*QRMEPX8^Mg#?z(%R<%Vn z{Ea}!6#7HOOzRNYq-AsY4f3VYsWL+xP|@(0hxOGeLp59jG64@*py@^CSEshRTE~On zs%{CpN$8NQea!BLn;RjUBPgv1+?p~j!@Q*0JQ8FN!!d*>)KZ>ivqVzHr)5rnsoy*+ z#}k&d!$ov4_ngm>)A8|9M93XD>j%!oNm!C=To$_brV4!5|EU@tF5cAq_Lv4Mz!d?* z2}99%hd{deNmpwhe<2Z2xfEPVg6a9lOy-%#bKkY;>RJ#(W&!IQKxc+gUus(6>%L2_ zJ|)1KaBK>|eDP#%R;-#35g`wV!}f&w4FrHt8!z zZdl5OpLI8i!Bui`!*CLV{<9Z@8Ci4JMfjkx0gj=ur}8XIw(??qJ%ej1I7`U_qGzUo zWx&ksLxqPL`GzHx=)mX)7dp&fF8m}xSkxHEj;vF{!)uy$Oj)fmJhXo`KlYI3>@;tf znTxf}3xOb?-tQ^qYp1=SA@2PgqIxnfvu_Lcs4-Xm7^Lt`EE9nlmILY-GOEtEcX$!s zwLVK_^Q8qctKr|K(Ghm+#X<2AdG5eS4d9HhVAcDR+N$=`8@ZYZtVDTwszrr)2$P%dhM}jf? zmV?hg4g^p>|9Yk#_CEok@5fmv$mIb_J$MZF=a<8mufah8_s_DdbLH2Ue@w|9$Oyz>% literal 0 HcmV?d00001 diff --git a/Week4/homework/ex1-aggregation/1-importDataPopulation.js b/Week4/homework/ex1-aggregation/1-importDataPopulation.js new file mode 100644 index 000000000..3bbb7b607 --- /dev/null +++ b/Week4/homework/ex1-aggregation/1-importDataPopulation.js @@ -0,0 +1,41 @@ +import fs from "fs"; +import csv from "csv-parser"; +import { MongoClient } from "mongodb"; +import dotenv from "dotenv"; +dotenv.config(); + +const client = new MongoClient(process.env.MONGO_URI); + +async function run() { +try { +await client.connect(); +console.log("Connected to MongoDB"); + +const db = client.db("databaseWeek4"); +const collection = db.collection("population"); + +const results = []; + +fs.createReadStream("./homework/ex1-aggregation/population_pyramid_1950-2022.csv") + .pipe(csv()) + .on("data", (row) => { + results.push({ + Country: row.Country, + Year: Number(row.Year), + Age: row.Age, + M: Number(row.M), + F: Number(row.F), + }); + }) + .on("end", async () => { + const inserted = await collection.insertMany(results); + console.log("Inserted:", inserted.insertedCount, "documents"); + await client.close(); + }); + +} catch (err) { +console.error(err); +} +} + +run(); diff --git a/Week4/homework/ex1-aggregation/2-Nederlands.png b/Week4/homework/ex1-aggregation/2-Nederlands.png new file mode 100644 index 0000000000000000000000000000000000000000..51a71cc792037188d5ba5303824f87cade720a45 GIT binary patch literal 37264 zcmd432UJtr*XYYR7L+1ZP^wDrN-t6b0Rz$rp#@Y#AffjbumLIp5}Hz_mjICxN@ywq zQbJEcuhJ4}(gR6eJmUGj|9kh2H^zH++;JH|c6QcYbFDe&ntQF^nmezI40M))oME01M7d~kyH z{5GcCXV{%UtGd_+eV#}Bx3+bqEL$3$RA0yc}fvDW=aK=kah<8hQn(hun_ zeMDKwNLc*fPhc=9lEGe=0Jdl`JOfq%?H%H@B|cn#rYFpL$4Pib)O7SU?YxnPb zvOa$7g?e>|OYd6jd%$CEfd>^g#6l-w>7aP;p0veV(x;Fi-WlFv5f3i^O>5MzpRX^l zHh=v-q*L%b<#2R-HR6Bi;V+2`x<_L4H%F>hMk(_KE283wgO*S?H`&vtHwbANWsE(< zqNpId`)+PYmW;MIBK08YwO_)LlS5+Nel8>xUcx99v^2^?HX6Y{exGW{5y50B#>y`! zaK7`XJL1Mc>u)Cm7VUIj#)2{#dqBxO=?Mw%oK|s=Vko4_f2u}gloFnXLXkRTLBiyc zGYf9UfopU6B+T#(kF8q;#0n(({ zlE*}t8@3Kgt05?1)v;tF{|Vu;A$@4YtU-Wc^v5KVe`BNe>H^mLUS5fkk0q8HG?T& z#qCs8Q7I5=I5Q&{fGiEtw61o;$E4R+Ef12QE~Kiv%6_W@Nu^^b7c580=9k%zc)1h5 zdpzA;alpU5O7g~xy1KoL25*K*bO9Pv4Z@%c_)aA?xzCUF_Cr)*whj6^A|iYMtgP%P zIg={wuY7GMIjQ(?=^Vf$da%eas=DpgJ6|PeBF)FjRE6Q^FUIZsydct$Ll>L`I_WRL0`A# z7jbTq8dGEyG@4Jrh^xFtq0UzCSE%h3NU;lYFXZnuG~e|NT_C>sS>3C1SiJMqE&ReR1`r8ov7EX76$VE;u^AYjM+=xUy-|1??#E0gRQz3OZ>Z0rnV0(vlQ-bHc z8^O0I({joIJb&r6?Eu&IgIh%H7tGQw{PLhQZNKK+Nsvk&g|Vh{cuw*JFGB*1Av|33 zCwY_9<-3rCs|Hp2J*J;L=4~xHOoj*fH|nJFgjB9JQV5@s30x1d2At*0@G@44G0HD8~-oXd`Ak z0(`!yeQnDqmBLZ1CitCqt*vS`AK1gT@8|Os?Zr|D2~-PuYQOAGLs3D{K9R7vlOo_3 zMNa$GlJ zQ`;#F+G%gn=nBra++b&Vgt@l-igh_f)}TOj!u-w+j$?Y%jR*-!$0@Kh>{z`zo{ps*?2{9@YIPag|TZkaH0lb5o(-6%+!2&=1n z>1Edz+-~}c^ql_HNCP&zA_bRzgCt6YBceL|MP%qq?4(Yp#>Vi<2BGF1W0lsZfTRi7 z1GS14o{8P3->n6+HLYlT-GAYxb9NYhbzs||p;1HvK2#7HHe>p-n^7t+8yTaVDZ2@E zz%UEP?c8N9u_;|!l$vLW1HD|e0*VrIR!NE>KYljv*n@^;iFS)T?IfMd*ZdPyov`3c zV4Qhvpe(W9YTI(YzeEQ!w>Ng(j`x#H8|){hc}S%;o2?@;YMF$*PfYa>Ap_5vrmT4XW5-Az;38 zR`MbH6K!JGgk35k20Hch`9g6aCr4-50gwLZHNXgI9;}8NwuKukxN{QCljV$SNOg|> zE5Y4OWrD3m3WC2>rx5MaOmtSkA}r#|AXkSU0UUr%Y%{l zT-DwoHP}89FltlNYQv_VmgXAdCH-;2?ghG=o?0K*D%YAKQ>|{#@xHfgUoF|;2k4q% zj2rOjs^VkDhT)~`Zq?V9n^@f?V=m)xoAlwDyVfXgw}ue!x%pJ+;8JhngRGe{Amwcp z75N-Ci}L=Mm4%tK{nXc&oQwSorHp3tOP*+dJvdvp@l(YKn4kNeg>-O{x$-@Ik!b@C zff=EMMl~Zp!2+ua!)zu(p5qHy%v3r9JB${l)idc!2dsL_Kf4aOr0gAhIuLaBS#Lyl zg?;Nw*|!y6z8sP{Cu6F*{pMn5&3PmqQ92d{G`Hn8pUU%IwAbjjAf`Zu+iI*Ut@$mCF zK{GEClLxYNftX2Wfn!! zSf+%@NLp}`p*pY|6j*N-n$TO~cL{uT?{(eLP%1Aa|G6)Z5#WsEm=z$y-*iifO@SU8Bos`^9wc&ElKS4?wug{{0Z=uRO+RPgt*+)418lS^xG^nTKf%Zrw~sVq)pJ=mnGZ_l8%8 zxz1(?0ln`5(-9Wpl zc-#<`(_2uuvNE?9hS|F^lHGsp8br^*?+kO--@Cq_3Njvyi4PSoS^=cY4x_2uAeOSJ z$5(5gRR`b5bp^`lH?$OY_cqR0v!&T9?=-dxFORSJ_D>^_G9Y3xZAQH4y9Oz1JAILj zjWXpVqb$1D(DZR_Vl|&EB`lV(?fz~RRP(oNtqE|Z+4xqu)b>zw_JQmDz1w!oYh47j zm!h@0vU{U$B#}As`-RBKg-7ss>!|HeGh&3UBjA;JCQGS^Xv_O z9`k0@?F}o#?=Z)f%cCKmY}oSD`&NDho%{Dg{;rW+@^k~`RYTd#cQF+5Xx+ikaH?mR zbCKTvxqi?N z8Eb2H_)MDs6I01~3vRwUs|V&<%DQ|2*RfouJ3Fz7(mx9p+@cvyJCI{_Wgx9-msg)! zQCSdvxAM3zr0m2JX*m6{#>x0n3N$}pt3y8Q${+Q7tC>%Xo*)>~!Z@oUUy~=sZh8SMh$xM?{Djx^?(1h8Z-N8U$l74{6m0_rzrW>B6Y;4 zV|ZQb7F587N8!!Eqmd7GwwE5PO=$b@uv(z5coimpH}2tqiL5$d=cbZ#6;!wby48Fx zEtdgN?4&xG%>v5vl3a!8rW=oX%>ni1fj(iCpd_oI=BGFI0?;g#&Q(mz%-~m~XlqTp z?)&Gi6g4)U`Y+Yu3XiAo>X*UIj%A=q);&Uok=r{hvT{m`GxaItL1Y2U{%(bk^q1>*^%eg+gierm$Tg&|- zcqh28=^^8*ApHT5@yUu%3NRJXduAdGi{NJ){m!U(h&cEdu+Lou@xD(5QYj^@rDsMM z)Zr21mylRCc6Rn3l_SO2=fts80fVS8SH;J@_@%GT8{-O?ah~B8*&1`48fl1%-wyKet}>g(7-(syd@2iACZh8C)=h=587}grnXNYo6AUc z-oEkJRhRvfS8v;`QmhPnG9&?=jp90F$u}W=4`=cXQTI2b00V1nQ`i!0#fyqxm4ZqtGnC{}If6ylfxziOsorn@9AE=Pw*=rJ(F@2dnwY%8DJSsg1# z4<_&|#`x0EK&4%PaZL=`81U-VLjJp7H|j1uJN({Q`@7VbnT?>K@~K1-HLC}1kn^+! zEu-W&qm*U3+BsomuRFB5oi~~)oQqbf+y~V#Sd6)`anS*Hpb0zyo{%e%u3Y5)I3j`x ztqV8%xSC07*kfEF1tD*7Q|0(7H@Qu8y-bD``mZMZB4l*a7iU-=Xo4u=kyW3HzAbJp zZ_c_ZnHXn%{d#A6Z4l(?`B|L9fV1UBm2YtQ86LkdHQ#NY?_Xvo8=x>y}1pUW zCI(x;jHo*TMe07GUKrr$-b_1H)FRf)CLul8Vv(gXBW+S0aq<4rLc4oNh*m!Nph^|6nq@ukimJxb%N1d;R}d znHUf&8^H&&_A^>uQT}#=381t0YJcGo+fw z-dm;WHII9Zndf#I`QPT8BoZ`623jJAZpvb)=e@6v-Bqxj!Ud>9S@n62u2#4b!#2sS z5OR0f*)e?R1${X~%(*u}P0dk4%Czo?<~dNO+@9}!ChuA+D!DvfZdXe>ab@U0`HVb7MWrWUok?PgT3v6t6ec`6l6+|0O3$C@ zKEN0y@7%m1rLv>DsX3y(rt)>BCUZcNja9GOkJLJ(ww$zyQ89SnRzTU<6;b(FXBZ6O z=eLsaGJ-GI#O3zIu6^s_C9O51w_+Knt9{^lk`3X(?&uFv9K{bT{+gDl8)K-g++iQVlo1`S$jWaDhgBIyx|arxLk zs_=NonQEtf#(}KNl1pDLc?x`vIgSUz*FDJ^j0_K)P|_Ky!8&9WM!Zo^kow#zzsx76bJR}Og~)3Kq2 zPsu&Nitp6tTv>Ki^8vfuV$RRoh^Ncb#AMZr;P9WhFW_p?v(crBAI0rfApBYLT!W_W5>LE6|T zcH440C~uXaF)2@bGvmw~Uw37$j7i%uoz|iqYfV;bXpc@sNbnss>!pE=Ccr59QLrly zWH2JkoapF|y%T^Gy2uc&k!5uBVpadnyGy$Q^OoA7P_42h+a3a*^I?}-5f%kxMOkrJ zUxQLq&Fo#zX`M+otYE){w9H+kQr=gCYWYVJ$LGBCFH@n+OcFySlSP-jGw|?UmcmX! zet-1coc0OCIhDg${Fb@9M*L^8o0 zDrML?QypRH+a#wR*C0M0(I-Y=o#j?RBz|P-P_r)H98$0?rBc0TKvsvRtr0fHY=;ie zcTMfkhR3+tGrc`jscXfVgjuRJQogx3X$%7DC9Vx-h9(N@%UhiCY-f-P|U6(TWS)x$X9%rbTJH@)S?T+BH9Jh@;n_65IYT?Mr>h^@dfc? zMNqRjvt^1-F$$ty;Wz&F;?mpzRFbow%OQs3S0JWDItycE?8aM<+tH8iE`q}f z@+X4}w9^*X#+EBM^&9ba^1egix=}YWm;jytugh?;c@gEIDn;s)+EkxTb(c^3a3+Bs z;I?8TZ5l{CwmWInx|wGi=9Z^gd`k~M6;hB-k=HU#3*&(#qS_QrTG|%0adX8uK_T+ISe9=@nw#+Fb3YfUhYIAOhfW*8 zK&6LwrEEwZu~~i-vqQ23PbMrn*DQD`40MLM>5~Z8){@;k1yg4d(S>EP`j)U+z5)=(j&`lYe;Xn~7dt&)E84x;Q}Z?mOgryNab8`dT2WRQ z`KaGDlusz%VQ}PSzO1@le!;0wCUJjTuquQck+J_l+sh`GKHm_VK9WpKIag=3et1j8 z!?#$BHENuvq|c7UDmTh|Ys)<}TeMYtL&JJ3Qu{LsAmIuv}-eS><9 zL3PZ%+~Uzj;1;$MODYgEA+-_)6+0E_7dIO-A*7t9_9ST<-8r!gQP(nKyv~{B{6!HT9j%5* z_A3L6wR2xZ5d~VxswG&p&c+Ih1`%=9V(UpMK7dX-tEHF$Y>y|(CrQgrOmeU_meY)o z@LVa_ypD1hHff#_Yp8t2dI({f22qm);f3iFx06hhd{Tn|qn^{lH~%xd#eh;e4@qsh zxs#S_svWPg*aCJW z!*erW!J_;|$+)$L+X=Z`W81(F5*{@V<|6SYn)Ka}2?}B0kk?^s=KEq^;XUGgSWbnA zXrlN~i~Ll6=J)ZuU{Hv-PJ7hW*eiKLL*XK4t+q`Fc^KTYu{%iaAdh6l6DQN66YJ{lkKnY`idQ$ z#MwbE=}zpb|2%0UNYnpNsE5i^kC_dV3}Ic?t6BIe=rpl5=(`o`x@A^uILB%RDXo-U zoRj>lZkMEfbtiD6jnSH7+W;(L{P&|rRNGPCQDyLvI} zU}S@b=FW^JSm27At0eSZ1+(sy?KaLcDnZqXmS|IQhHU?Xm*yo`IGBl zab_%GCnEfH?`OA_RWUzd_m&JgJW&*>WX`HwqefUljGip zigFgkh^@U!*_4?I#Pp;Y_&%fS?()=u7$F71SQIsQ;ut5v;pWzwN`K6Stjk!dYAxNR zxjqNhD6ynFU|1876k8JtENQ(SrS~hYot;YA1oSyfhLb zch>UD4bRV=&j{3(Sh!Wy6b1uN=#KQspvu`^NEwO@yJdWHwnkHv+nDbqG-MLW54iE0 zP}M$V(S@a*@){zDQ8j+-daENjIRYh{E6(WK+aO=%iSb6e&&YM)%y}bi%L1Z?_8T@6 z#56??5tOQhW8}HIspZc#e-{Xa+w?XccR$+wYb*nzD`pH@T_$AhU{c~*oUx&t=dr8wZVmnV5e8>B!P+Gi z%XPzoT`NOZwk1ARaRViim^c;(+MayO1xlIioW_J7+01ufO^aG>{!1Hi7*y9Iydl>YBx_d)|QB+e;Uv6qMPiRqo z?Gjs%*N~PHK9u&!VH!7VISkl9eR8J0n~UQtChfUWMotwNvGu)+$0^JU#C)(8DZ6^U zzPS{ziv>1^PJ__dIbb{Y0AOqr+JJ{rf9HT-v0@e1O(hgRaxAA*cx17L^=s8ksN7vl zi8Ok%)@V6;;tUBsYB$>3404Sha@x67u#l`L;!7Nz;xYP}dtb3|ocItH}VBhlj<3}N853A+^@{S|UHb7t5lFq*)@nnyB3>Ac0^+5B)NU-1&pb|Fq3aD zey{(m+R`+ub7kb*p1Zo$w7<=D?>Zx*QmSd8)3T0al7SYg!t=LUg}=8r`c9bg+y%Si zX5UluDlsd+um0r!Qt^?vxU$c^49Me9eIpB@G2s<40Q_9QJ>{W|FW5QMoXqA-CA-Y# zv7#{y>0fwowvDq>?&7DD;nk5`TbC~0DioGUb#+;G&E0YOm00%cCk@iA`1t$zzyo|l zTcQ13*4TF1KkCkj6%IQ$=w-^Ww3tX>z9X{ z;ni^%$RC-?U((`FZVpCNpTFU1H_Zm?V+UJ|4gJYD6HHM|b_sfQu}Q9>OMQYEqMG^O zvbI^5D}S}bk&Gu!Kh5-xF&dRJ0Gx6>UD!Eok3N{L|MF|pBwEof$~x5{A^Px0ekmTBNx4;H&{x-pPsRT|*9n|G(^#iyeC7>zM>_Beix}Te?_{3SZqgt)3 zHAe~`TvoF2yhE!mI-;We0&A!4K!33=4Gp67oCl{{|JbMg>kTHZqLQ~*2ypECMQ`tT z&I_F)XS;(Mxbye~x*pV|rv53Z+%oTnsL0p#tgdCHuYd?80Pl-FFHV89j?5-Zzf7KR zOGZ6aIs3;t_a0o12#L5>GbUbuFy}_*D#^Um@XgCM~fr?xf}jtzyCk=`&tizk0BFloo4L>-eQV zt-4Ih_;bAMRX^c{hRkmSC8WI@g3P#lHQI3k=Fxg!az1|k;}`~WRD3;s#;YD^X_}{C zoi-{^@Gdp=$Gd-u(wuZOuj&EtD8-KMxOp%4KU#P7yusnu2coHj8yTs71b68)EW}u8 zcH)i2=g=BhR|oi_F+x){%_JAT9gUqQuUa1(>prZYwH~9dZ^G6|^9EWs>{*V$ES=Mn z7B^6uc$pT$fv7QJm8^FRT*tRvCam69qbR6H98V9#EX^VMU$e0YIcpS^ z%;_b{mEIFQ6QrMhr1j(HI;*p*KATo;vDBs9Bm*WgoZX_i980gEP|kPQqUt)3gqIPj zGebnK*=>yJa&f4FaZW5+#>21fHB5hrHyPJpQ52_KlCr6u5+V(k?O*KwRuDs@9pw2V z0YkhAu0>z!D6Xg6YAr40$Fq&Y-XS_nSrL8X$Suuz>aI8?R6ZKNWuKIG5{PiZMx`|E zX(q~ge|FYLmSf*&sb-Hmw?8*ww}fNQ)c5utCAiclyv1q9##SQ^Y9v(3N5cA@NQEU< zh9QrgzV*qmj|m&RHpFQ*doKNCkELu;Ja^oWTGEtry}<9KZQFKd>N}!j4Y;^x!4Kf& z*1rYVx7tSy`5MLi^dc?wO?r7tHuokIC|Xe9$6I!>js5DGti?sLe1Ov%*Agdwu*V6N z3hhXGM(4-sHjva=!SOSNYw@hebLqJ?%|2NCk*WPnj18S;A6_gBunmfbP@oR{x+2Aw!_Zastocou0 z>uWc#GGfL#cD|M`|KQ1Y9<1`&e_YTdUz)>89nOY144@`{81F7m_KS2Bz~%udd-u^H zg99>r<=U40 zDNWXTkFe{M(+l}Z?OPomm%aA4np>|Ow42v$_0$Z^`_3HQADV zm$H}RlX4?TR#mfWiB`r7aS#M*-60vr*S4Hh^7Sp_Q7}7oJs~>$%=5%#|M-f5JQX4v zbaYe%>^mn*fUFka6qXPgigS7nTy`QvQObO+p6%%nYCs)zT^y-3F&ILc`{6|!k;`eI zTLe`hfZhBHPE*>Jf}+eLm)A+VKSdTdq$~wN1WJyac;=9S=C`9j_vGcTOmz5`>&R_i zUFELvGeulyx`wFboC1;KEwGBl1EqnFNugFgZ)|OT?71cR7V!&YSO$I z94AUjI5aw=y@5`vLl^re5AY|@2l=UqvI~KilrYi1Wq<0>6bfdi!IGx@o)ko2cqB%D zAj}-%;&dvg1=C4toj?coD35xd|I)D;xgg^Huy;(XY8q>Gb7%BAMgCSA42b^7|6=#OQE`TM7jS%7fqARQ6quDpuS+v?zU+eBKTUozcsc8b^SAk% z_&fKz`ou4IC(7T{Y3VIC=_f62BLpXn-`7o@PQpPyRFrWRmi#r5@X*aAqHq;#GCD16 zMT)e+yrbm0^~%&_bdFnXnuKeweuON1mD&Gk3Y7U;EGvreIS>GShy|tEDQ7<=!q6-7 zMZPdwJCmX`fo)IXiUSsHU!yO1@6^^62zJaJNQ5T>pQ^%l5}|$45-VsSfWy8s>2a;T zdo!@~Hnf;{kigUb&Cy0=HMxXv=(EqQKlJvP1oI)(VUTqE*AVfGP8v$#_-zY=FxD2@ zMjEO5#|NdnbO*P{Vqg`dX+dJDBs<3q;Fp)?AI|+Qq@ZHp7`Rxs$_HoDc<5Xt(rBW) z7>f3tb(baFs^@c_ssON~9wB|UFS^zu?Y^VG)ODs*8((Qz8|oYQTU=-yp^F3yFEZo0 z8#uQC>+UCR>`%Nc3MXXb?60iZj^iCrkuefHVZNTS2y8Efg(Fb+_pL6iih%M! zCK~7pZT&vpmimr!!zX8Ice&qrzq^Z%`uPu}29mODEv$0S;G+lDyZO9{8+Bl>QBK{$ zgG2x-BcRHJB}~$|soa$h2pRtlX{0=V1l!#FuFjL3bj!3XP4mo3hyrjThrrvh2p=RG zX-wmYWe)yMi_eP)63EHW`L|`F<Ab*iJ3-CRM>rNZ-vulGW1vqRc=)Zv#ER%*^O+J) zbZ~#92w*ASxMrRZ*H6aI5O=F~Hb1qDO-=+o_`;jA+ws7+R!JwYhS@A~Ks-g>8E)&; zX1~cVnu%{vStQ0BcqL4Xly*uo%DA@L3O^EkV%&HLQ?^rVYnJ`=)n=YtoT>DJ1=yP* z7Rfi#>APe!xX|E8hFls&_BHM@;T<~M5=%M)bYnz(NvR2Ngc&tUkSeZpZw?mt3Et}2v1NDH9++reBWZow7X&S^P zoOLgvPKu+D2exod_5u7a=)dyQ>ELcf#K{VHi0ujzo&aHP2t$$XC+E6(K2U?0bfAicGukFqJM@J@NI{!iNj-JUBl*Kg+jj)&7s zw}r;uff0#RH`Mo~0-c{cgN-dG3FuUTrCy}i5btvnen6RjG9l3faI9@<#B-#RJqa;V z^Z2d^R#Z>TZ2k5|VV)y#WW*n`mpGDgW1xA!r&rM0jJ4v@C;q3G(84OD{hE`tULPt> z`fSi6AKTXGCY22-0d&`pP3fr$i{6pMWx;l*z3Eh$xs0dq+%G5&Yk!X8);tpjhZ^J+ zOKNbM><@W({uYzd=&fl`g3+z>t?RCU-UH|=yKQ<>*37w(n~rMvS!IolLf1>jJv~$Bu~@;El~E2=p=X#Wkoli z+P|2+Tv=oDoHcj|W>g{ISB}O1-mFc#eaeBuxY`x50~laI8k?`5_5kR9#Gm-UKi2$~ z&%tK6K;rm4j0l4l=$y)o%-TgTaR|zZH1c3*6jCE}USO?a&awA37vnvxHW(K4hlv^8GemcOu1S z4Ra`_#1d>mr0f(^dl6~vU60a@@}Ihs ze0ncE?Xb#OxnP!+wh@`I6_D6QZZAGj=bFm>lKWQnn4OPavLIwosNMv@wEV=HrI`m# z;YP+HtqjGyoIz`MN_j@#xE>`87+iQ!A#OIqr1)dW%*4MBRF=_WS18+SV7yaD$!G0V zRJ3&M_7(SB;?i$&fD1@Unnae+?g`{HoXWIa;@GHF$XdA>uqe_I?*y=pl#6k`U{S~Z zHZA*A9T%DY@q7Vv@vDpjDa52fUyU&ILKU7XXLU;%+*Du!^vMAtRY7Imtmen7FMkx4 z)*l6~nrbx5Bw`Hk`PTpgHL91ovb!t!i?lacu@KCOSEB*;9NW!&z$l&{AF^)`yv7&H zAjQzC^^=7IE%bRmOJ!*;Awt|U*$(M?`@O$!Bacu?k|F*0eY0Sv4WO4*lQ8lDq=_0M zr=ZDh<5t%|k)*d-3M*;+?oGAdfty{i@f;zBP#Nw8-ybw^C%0@k=x7+!xM$0CP=GHI zfzjb+%LI;qgfR78K1B^yRc+bDQ=O_Kb>vtn$cPCSGeWH>iEb^a$F{wEhnI0jw@3^Mnq78uy8x*~5pmT?S=4sdp<$29@ zMO&VF&G*Sw_-CSGqty4NjLnI;0pLlnS5hs|2H%fhsSeHyNR?QlWue19f(RMxXf!Ur zTkl6_LT|I6>qQuvWm#zI$JWP+&30CRrZ7MX6-X5ZT%hoy*8*Yq9$>xW0U>B=c!yt3Zj0I4Nz?s%`Rtj29VyX zJVh-$JP7OG0&<|ddiW-&+M6t01n&`+#Ouyeogw;mC}R#>*^qrDj#OjyQbWeOtP)xz z&}&oVi&%ghcJaf-fi3iQqgw}rah>D>y#Z}ZFj}3%T-=m0Iswl;vqC=DOezUAmMobl zOl0Kl*EghPQrvj8+$gVC$MCZNYWrDNKXbJEc~h~7jGHzp<1Ls&uwZ$#uT=W)PWeRV z@5D=^Ye}?qNO&)h_$tR7bH%DTV!sv!5%p<*PA}u*8@_`NA|G_Fs$?HbN#`2)MKAGD zvuvMp62gW`(||xP(yh_v?LsfAYatbT8jTYHY_P-Pv|86d&`HqK!ZF&U4KX27Jt~vy zUj_T^TTL9aK$4i-wVImesIzMdT5}Tz%Yb6Vr$n|nOQvFe%(1Myz+`4d+I`lZ_;3aJ zm*-26j3SkG2O9$`eb&OCK9JzdYxp6dYh1*@iorjl-R+*H>9t5=FOt1vynWPsQOU*k z`)%}L4^Xdn5{tz~O=P2* z@EKtexS>|};&ocGi6MNB;2ES;pK6k(734q(X>6DaM%$0y_mySIx;zzJS+(^6$&N_@ z=LF8fn|z_u&nfMDJVGkfX6l(u(U zyQp`hX(NvkA8}7pH)Um@%yvVBJ+pZAa~3)mLRLBBOD)s|TXL+0wruLc%HnAu?^YN1DURvgai9CGemZr?gN)8U*>rUOu{x;!vu1cA00I2Z3jJ^8D_OJ*sT*(l+>aJI zbOPcSW1@y-Dptgfk^XnbY3wAu_r{}2xv&e*(4e-F+3$Y!E!KZ7crfl(Lql*2ghFh1 z#m1S)w6f9vVp5lBsE~H9P6^_hjE!?Qm?>J;siN#oR$Zk=9&DYT83Lw~CipC45*Ka|N1~ z()iwa&W(z(l?p4d3JbA?vLkDH(4L*uRBd@Xwvsdm6s6(2?_YCSk#CtHH1=FvsiUH4~)?rh&j8e)T1^ zO-9zJI?%96tNzd7umVco;HJF%$jyI> z{^rds#TG~Po+`;uF|oXcz>dz|m;3P#sJ&&&^7IcDeeuyk43a#cO#{ZX2GVHsi|`7d zES6>(fwzBP;{{scal+R}wAQDlrsPT_lort*xngbS{-d`(y2yz#1#6oq^DY`sr-5dg zp=L^t_jAH&e4S^UWkraPO zTozvtIMR>f4UG|Vvuar7Ya4is8x99vz*%e*hgjEn<#WCD4Jj(Qpo{g!Jt$QqFt08A zKT&7K2i2pB2xtEXs57qd61&1wDH(PFn3P#Yh`b<+#+7DOikf9!sIOXR)r}s1fK8(x z_?{Y9@=7&UTh;dt6k=7+^1I3>M*q2DZr`~0Pe7gVJzBvsmWq;%_5;09KcO|>@8X|G zNWdx(Ht3+&a^rZ(Tzk}Ob8##o2j4ssOL+~Mu}KtAloOMJ{ab>%segOE3k%(=|;1d zB?N3g6+;W~p3T)Yv1-uvflpEfu;`;(Gu?}8G@N_pN+;UuLo?G-{zdQl+=^{cGY>P9 z$1#s%yUcMPm1XT8vC(+k8w$xY7!c!zCd`_7L#552lghS5$(qefOf|$OhH(A&>BX|d z*t`l=qkLJ}SDinEiiQfnrNi{URjaO`F>-k?JNFJe!P8kS?>z_RJjwY>6cW->At-wo zywH~avpB#vaaFR?X<@zkq4ZHSpZ?C95Pbq!cb&CilxkadvWY*s$GPCuwF42KHK)Yy zgH1pA^h0ido1C55;TAcw$KV5{gvrc`cr1b+y1{=fxJlO}LO;2yfGU1wWEa($=iihlvG&+~;*ZOHIosK$ zzE}d4`6RHMv(K(vpiX36bUq{oV^5r)_NFrb3dCb@FA?Te&VJmr| zj`7>NdIOp;ajT78-BO{=yC|&HUWFd?{M?q2`9tE)QFqTq7|F3JF`3&=>UZiU@08e; zI71OW*l2tqqAt^F<^xh(XUH+pa9*lv7R5lLVz}fJm!2A&VZM@@J>S^S8Q5^|&jdse zHTV`SM*HT8qrq~@;XmgJN2i|v^nRLYjA&o%L0iU8$>LA?^!5)Nx`d}?9>v0Gt%^de`5x68He-vT`V_RvrM|hLC za-o5<?{{PI&}T29=HzK9D* zmv(Je@kF0JO^o$c*3QUDNE@*Z-93I&H+nMoWd$k_J@fv0M^dr%&kXF!`vvZTkHsS5 zHs+-VQA~;T{H@k9*F}vbnE=L+38b-&$fQY*?AR@1m2-68qZl0-oBI>)H9>i; zCmKTvJ2BW;pov%m03Um#!R86ln7oIB#36a(Cgst+WaF%g--yzK2>BFL~IN6NeTf>g zxaaMb)0#EcYmh9drX{TmD1u#(mA?F~*s3!BM49|GVAF^*NkGt`$DN5%{oCe_Oy-^3 zAX@Cj;K%1vfj&dx9c2ldWqrru*UZd4vK|9pCDB-PvYI$B52U+1ZdhY*SgM`wn5<#$ zPap`7dSt4>l=90w$|~|*&Dz$LWvi;x85wqq2cV$Nz~{2kk~*;Sht_}H3zdHa$wDtW zIfqs&(Stf8%I^9$P;K}4Cu`b>?e)op&BiEor|*Wz5D37CQb)` zKg7?jzxA!lL2w^RpAGFchb^?FG^Hasa~fVz&<%FmrjhGegpv69w|v%hXSg7vX}cwM zr5Xp9(7PEkXt9w}I502;E$6XT+WP+rELW@bF5R?u`O+xAV<}T&b7Fr#$boD%zbFoj zt5amh^?8`Wdl6(H+@v&at>{|goXi)9Q-8C_d>9*;biXERD8uud#(?&)Chh4jsqb5N zPj4iVit~HwN;KvsZ^}G!(uG|WU4AaktvL9DUH|IuP}p;ywt+K(vf5uW*NgeTnmg~P zD4P7;gQ%zos0fl#iGqNVGYTS-;}B+u!jOaHFeC%;N|Yf2$A*amz)#1+;2~jQ< z5d6ElOP1cfNFIZrM4ICnM0BjDrC*wAMgFGb1-c(0VE5w01kX%A{TS3``U5rvtVg~S z^bQ19=Z02tTu*9}x1|poKC9)UTi!n`W}J}5^RlS$w9UhX5%gOJF_+JYUiLwL#FaAK zD-^DQ0Gv)>_;?$!;V%SR{5LV#EoC>Ub&NT5r{gI;VT-pbDD-aIk%S zn%c>1ic?~YBJ@sk7fHd%Y+4##sqtg9*d@%pnlI=qje-y`&sxB<)fbKq9A1s6l4ZNS z*BdC__F>pI2Xr~+O2aLgqPmfjRe#Zj|M!ohozq;)0W1Hl=KNc{PCXb(r&jh-n+`JX zx*B^LE*G1ZfZmT=Jg}oKv9GkM0#OybcuSBaRMywNfljq&3Pg#eLy~JHEJRL`~)i92S0 zKwQBb#!6ql#WLlkXN-)K2SGQTd`|I|UXqI4=I z6->fq{i~Vx>7_`vA^-^>+d-LrrLQaPw;T^8P;Slv`JG$*MXnvq%~xpg`dNu8QkzTU zd%jOgExe0FQWPZhmg4_J+Cw0LtD+|7@Qp+x5h+wC_bs%2LcyoIp9mlGSn$}Ypayi_ zeGKL=RymSWE!wFeVx?q2xuRq@UbT9TWXz2vTSrpZ0+ZMhq3RVs=mR&4q%X__fz==o;fI=$sB_)X%-Xqho-pROP}t>s%ltKRIsrok{? zoVEKRT?nUePt(RkV>i=~x2rl7WQ1!}x_6OwnyyP!Cgk0PK$UjESNTeO{703q*lh4t zAs;=d1`u70(4hDam+SUETJAG6)40XYtyCDcS74d$VN%iwqOuG$H)hBiR+MKLmy5n# z3EcLc>8rJEr=gte#)qY^WF@nKtXs;z z+vabyn^_v22Ibvf@K$uKi1=U$+r^vs1j;M&Ba)LfJIpsaDMU3{qwXuE#QksB!WmY{ z6e{+ww?m3l7Ne#YH3duNGE9q`7@O_3lnHIw=EG-sx987UYw>EjbaKM2vM712K2XDj zl3Xf}RCcjPDf37^i|Kfo(xYIb0ph2qPN=wgK$<7p2CrxTQ){g<)zEhE;<&|~E8T7A zj-2#Z5r^~vR4j6hGx}MvIw75hdG9LHflfD(LxzfX_4qzT^1GHUa&VzS>}n?@e^097 zlXI#DhwBr5QJSxn)eITfF~D!ql$7IkfsNPGf}3a$f$E|mrtRwLCmq&b+*<7}#s0D4 z-T6*vh&LsC_X6SD!MVWutX@^%jmj%uI#(!BTFV-F{TX*E=yh6Wdkz(#l)IJ5eSy@J z*F}7g2#F~Z^~K9WMRxYFIfR%N$?FY*9r4)6eFp9Rp`$$ic`t=mPa9#8`;*s62i?<$ zSw+`0OSUtIoklLqjGa~}W}reb&gbu&%nx-R^!1lP5!dHj-AP;_=hxD0mt<)G zBFru_$5t6U6BMdBLzL+*?)Yo~nB3qQN!P8I1o4Q0FnAbel-M`%_m&>%E8;BkALK+E z_lX-?h8Sdk5kh#%^eq{0_Z*QIe`xyJh#U8=;}4rVrW}E}y{D9quP5^2*}&y#p;_MC zJ!07&O{Wo(KC^)(%67KsO%w!=?ke>qzDo6hHGCdR{Y?iV)-h9HT>)P5JwI8XzZQPO zaY`k6PhN~+5f23J1D^Wu5u~{H36t~Te)HEp`I;_BKvTPyPZr})$Rj>d6@1FWaI$>e zSS>qGN(|>OLx-4;_vGsB0hosc>mQkHR!Cd}NvE^o@pt^Tw_W6HrhegG|-9)zTnL4XFSA24cqN zfB~7}2}3#+Z03Q_DCAv0ym^chgOncdOR-x`z5f1%0W_dq=VM$fV_ zPQg(E0YE5_+$?MR05rP!u3tV}9T0|s6p8?NDf{9}t4&F(MPAeMy!U0NBe7}SwGAaNcD>2LKlE3Vn zcW?;gAwO0%{=2+YgTR#DFJBtTdaT!kzrXK~0cLGa(&w{!HF^XEgdV`5fa{}vbkw-< z&9758cKbNe36Z}=#Gl-^pFw@IH7o;P4*|^2!Xg1E)AMJH@meilEYX#v0!S#3mG*Xp z8)PjS08V9m81q}hDG%^eKpqOD-rB|jUaDLSgjE1S4LcKXKEk7RE(6Mk9n1~^)SIO` zKtcJJoR$wxErY-$5TcU`2&i#~v>DF^@xcIg1`=~p{q&NQG`8WV_1x#FHapp|_>@Cj7C2+(l@UvOAZLm7VQq?U(_+$VrV|I3C z$@{p|dKO=E2?|je+HPmHmk}z}hPcE)jOvl=*3&I9&W{Gx((@HrK%LtDMKd4y%j0sN zvgwI@NV}Y#AHoS5F62T9m@PPbQe_(x%8u7Q%(Lh7<(E?lIc?`Y5CO_hSt=1JxubVT zz+lw}z=Q$vAxQGe4b1R3zY28sM3-rap%f~U*b>Z>v((G(YogI;ce|}nNzoiTw_)~O zO}a26!;9ri*(v73ADZlx zPRA;4o1@{i97R1(*;Sve{@ z4*cC-##!Fu?*PKJeAVJ~t{ly=FFM}nWmPA>5;?d-V1`o5U`uX#&TIRK=w506?Wj1| zu4kn>mJ^J8HNES;6nt@yr-h8RN!GrUu{ou0=aJM~O}eHOORjT|5e(_|mQR@HmpOH} zoEm$R5Zeg~Ml@4q9dtx2>Q{Y$zPtzPWqdnH7+rLBAESOwyoX%e*bd}SuOTVLFU zv$AMBhfMyx0<|KOgFN*C{FcHDCY2Z(#>hR1VnH(< z%d?l4M>N0&t8Xzf!qbA}_V2ZinniUfk?47VsG>x(CdRq>`64yzkw{1H7%6W564JO| z>lXs)WTs2Dy6@Ufn)j{$5DUbU-P}=8SmElBW-?3~$&j=i$!tFPdVXC&uJ_#+N>aLa z5jG%fmmy{MpP6Jl7Eu;S^UJ6<7vH$x0(Nq%Eq(KGAhD>G$99M;l2^EG3qQX?f5W`` zlQDZGgK?*(Ov`UgX630S6SI^oN;UZBMS;lu3(CxPk-1jnzE$CyZ58;xM4H;%`oVoV2oZ(LPKu^b_cU@+gCyhf6rL6eFDR(D&i^Gla z$HCO}OUd#SiZlMq5(wA@el0MO(9^+Ha@OUL|D~hkOL;NS9{V!~&G!Ko5;bGW_WkGC ze9`!I_GY!q$3hsR)Z(aEOFVeld_JzOv5>@RV_EI;=$N6N&HkCC0MbqB&9iR7!zaJV z=zqQm6B1HSAzZcTW8NQ~iBeOX$c~G2l6;1?%em5?5PNqRc2xSvW!$kKzdJQ;+l`qJ6^qR=$p}ng-vjElCRZq=PV({<4L{2oD6YP_Iid1T@Oy4LS{@ya1W|BDvsekzs z_zCvx^MvTB=8Wjunb)fv<-$s_j%Hh;SuI!fkb+a^XGM6VvJ5#-US0y|U#-YC&-eBB zmUllv=c3-C0Tp=agefS?3|Nu1pJer8+vw_fxkX-O;Ne#v@UfA7$j>LKj^(&#{o^M4 zfn<(}y!ZO%731lFkyeCLqfMON`**DRUWfoc@YXh@ztk8CV#9`|S+vJ$Bp>VH1^3=njo7Kz1oNgXGFM zWL34jVk;?ZdI6EAWmoJ%*PW9>QnbvD5Y4e5MaAZ#TltZ5A0co+PpO-X&orKu{Y|1B zaf3a9SCi8ljF8QZ=s_phB=ck*j-Z`k)S*Hn>Ke|M40AVd7B*+>V#Pc;{y{_iR=eY3v>e^wp%KT=}u>e#!} z$X=3{MhuXIYAhI*Nea`+gRlcj1x4~Q1m&>;VhW+yPZxy!M%0-W+4R~yJ^+(teEb)m z%oSK};cksu4R-kB4F+^E$7|YF**_bM{8}`>w!J_HF5y+AGEJMe-;g^EDjawQvm>n4 zi>{ak_hJIY)MX_2gG<>pLxWawiS(;7i;|-E%UoR+eJ_WajWPT8Pb^SRWB8P5WJ}D( z(q!BXqut7<*tB=cXO;!^T}Go*mpW`fUfLhb*|ufj9dxnC^0#Qp{?_r5jYy*i{%-wf zEYfS?nwYvMET0-~%r=-TsSvl3xP=6nRY_pSxOJi#%Ru?8N@{}_S1O8JtGe`O@2eSt zq@m-$l}2(@H1)Ii%72!XT1q*sQVb3bVw|(?&U$r^!;F%o>RLeWl5#Z%azS2Ws-!V- zsfL7vs*Jnk!}^T(`oZ2xsJ_`#?ub#oO@$h>qcr3#oYRk7_kMmVn-uWAO%)0D{3NGZ z^7#?4{1%@sOeJ1@v45lycB&>nmbm>hQrT2hm%fNecTZRE@pxd9yOE>ES|*9I;;1MsM0E}RdO;8k3}e$}_ly8L0nre1tWH~)hU z-J6wH@4jkqjv8q$H1^BJc|4LdrBmrp@#j0d`&~_7ML>@IT!ZuBl9V@=oN&#Ww>cSPC~j?M5#aV-JYW0S zT51B{Mv5L?p?WTmjHdZzAiyp@DXRRi>HAIv%xeXgm@VaF?9;Hl5#yM&pp1?ovKw1o zxq(%kIlAkiUGCJyb$iA`fw4mKHo>LSWV-yOfmIU*XrdV5l1G59G$u)E)=_;q~-`cPkh}wS0kef!s(H;;w*udN~4MPOaq`5ma za!VIwFmp6JEe+UkBerM~94;nX$E=KeGK->3Er{RarZQsK5OurrGY02qhl@$6m zP`8SY|JI)R*Hh@TiX$;ZhIo;ff`6@_W-}6*xpB*)y+AF(Gp8!6-a%1Oqp4e--Q}MM zCm;4c4K&Sc#i}C$Yzi0pXIq>)Y6GeVa8Uh?|BxWQyfggwndCHFJ=HDHqG;yT6YKK4 z;5~gfqMq1Ux%;*`Fwqu!O9$*RYG>6VAMPBvAJN6B04?Y(GJgi&L@CwhvurF?3!Jnp znSy6v680~FNh;V0n7pyKGxS-rio7 z`z>IkdY{Z<+^>k$QHFw^*{t@H*ut=wjJ-51b1BSL%VD)b256(^UqM;F_LmF##Ijny_(j2 zErQ{WM^x?N_mThKi6nm6pF~oPZ9A;*AohH42$mIFPtTeIOdEjQCv$C zIhY@1a0PpeD=$b91wV^Oa}BO+N}0qWc~_B-`j&IL1Nv=9A=Z>V!ozk}rOxjp4?;^L z3lOr3Nz(fzw4jwL!mTQy$Ajx7C#FvU$!iWgtTNFUe!0$&mCT$m47k)RhZa%^S`gH# zq8VzW`!=*^R$CA{KZZLmw7K$JL3cBm$Y~`LwqY_qMu1nRBOvQGq#KcmE<1-et8$7B)=?ULeg)S<6}&i}hrgVi{sDM28a_{S)xoUk{Z00&XM4R4$KCk9RX@^5 zt46D%sv475=s@?(C1N_<>Qh%jY#dD;1Ic+Y2y4FILu`c;qw&?y=sLEWOi5v>7?Zjy%RmsxiR zKw|)QLTj;~@u2JIKfU28WW{Tb?VrP0EfL^y753BM#hYKPQwF4r0OV^^IA&E$4a_Wn z^p8H0^!%Ao{h9%}Ux>N}uzN5Cln*z4csDKgUu9_5CADRa)s2V@FyP>36qtmTj6i{< z1AtFl=$=xKZ$W>@5UzKJs?UIh>X=ocS{VTsGT<%#jq12V+ATl;62Cy#0C)owJR-7jQN{kbD$=*$y5!Km zsv82OxCx1Ld7w_nMX{EG=I`16fpGV+HV3K>i4n^0~8t>m|cHEdWpk1Edx} zk-(HMpl(H4AR^)KNtW`q5ynFMsB$1Z*$3qyQQ zyXrH!Do;+jpoP}&f)U934>A6KZ{9t zg0D+bEF%Fu7nQnu#J^iKY%)8+GSIwFw>8YZd6aBp71Xu8N)dF5eRJRvzm6PbPep*w z++yRk_Xj!9J`1;fn$NT+Lb=;_9hGH1ZFicwH+jH11CXGNbjBeg^~)HgOD{Uw&4=qw_neGT@6aFt?_rh(-Eyk1O{Kbd@w<$V zuG87P5!dK6^|w|f^EuYcXI|6r=7p!_+Y@^9rEiNX^)IkdABw#!{bFccWTPy>_M0HO z{T~v}gMH$f!!%)Of7P#P0i**qX3RVmM*cJkp z^}I7e^2P#n8egAPzJEs`X>n+B4#j)sCzcq}`Vq_ayasu&8fp0r(lZzD97~>`D}fEs zkP%yEQ|kGG-#Z-_m2u}SFRR$?dlikv9NV!!HHr=sy+Mc|kv-j#X;F5R=1v%X~acQA5mP_&HP>}e{ zwcJ%+myLaotQ9Yl^eB#)F~Fk&Xpg+L05&;4oRn#X`M}_Se~(>;c&o^)ew?i+rH#H{ z!*ZgP10@sGE2;hVrQ+`_A3MkMx(q+9uiL0op|0_`VpVGlgP$kLzfzH7`Z3o`mAD_@Nd!4eugoKZ6fps0KK0{nO z-K1fP5&~`~;w;dZbu^*?oku}gfxQMD;YT(x&d-@xW1u#o^~dZl5I=$s@V^|-i->&) zL$ZNZxLvM(L@0OQ9nXpM#&)^81Z&(E{FoSyHzo4ok>F8w&qMF49=zb|?iKh%EVJ!h zi|Eao1xdrH(Y4jscetz(++tm1$)kCUX_m^84n(A_TUi-i0*LH_#7p;7??j;~m zoo-bEbt@ysypZ7N>})QVD3AVF-m<517VU&KD7P#LdKWEThv%{0@pm*(+S=(O{Ah_i zkmW$(qpHhU>+OoY{DOA&UPk8+oqt$tSW5G}s8A|7V0w^rN28)LO;ylos<3-gUb&C5H5Eg}yegJJD)J4n${5H2CyJ{B@E%`5!RB%}3GyhzZJ^N?qA>MWv`#Hkj2L z`%Vl&E#zLAeoI70un1wq13>FfG>saeR?%0 zk}G7h%%+37&^m~Cp^0X#fZynexBiU-zU`F9JLE)wKI#5AjxQ z&t0d_HW7ZNOfitq&J*LcfspEnU3-LPc-H_?I_R_s=)+_7%1wLQ`*6w%DNYS|lYu8k~D{TYLPch@kRp z58SjR(xE9if!M!;xd}N5f-Y=SDj>a+fc7z?xM7Cc>BRc!6OQ~P!lweEYPF{vu_?qL zc$Y$|O=~}W>OQh=aMgTycKVRxzw6I_3A1G%;{Ap1_T*mc62uP6*&@Z0$-kmX3&5ate(0Fs_;1KermLtlNKC$n-a7oEMaQbW7 z3Yz&)32ono3L{{VmYZs~sp{iXmrmwXUI+mz#I)t~w|JL;?KgYrcY#r?A)XUPfn;-5 zlWZaEaTc6muuN`CHY*L+XmjcKE!x_@1mR|gT!;i_B{u;tcG~|OFZPYxczh(!s$k~K zZg%W$fpI^34+fI+I8YQ=2Sl5sjOXS@KL;B`e|9RFLiydDj=obFqvUp?!U@mrZ6-=IV(6K_B&CqxSn?EOAD9zIB0#h7?;ykh|AUnt?eVE+%ZFbSU{ZbDtNzb)j!Vymh5otD(cknhI!B3VxO0U{x<9e( zG{iE3Z>*}cXcpqf5b6ia{KMAHN%&E|5xlrhunxs5bvHnTN4DJOxXH)4K6W{vOQqZ-D*3nuDbra>7-QK={x zD=6K2GB5c}{?V!L8s_>h`L16ppZKm33zasAzw5hBJRb_I(;DHKkKVex}aj!P_$ zeA4jcxM%eJyaM@vwC)JA%u3VL6PHy&%asa#nRzmH-B0ot%3}E&A2|DSahm5|(9|kC z;?5-VVsoPFQK=l7H-yfHvco3}-JMGVBs60*j@6z0?kRkViw&8q+)GtE=XFO~?|Lp@ z&JG~_cnlpSBwIZ^LE!vmWeNQ<4t`!i7dO!TK;WZZdUStNoJ_YPtmU!Eu`i(T@0j(Y zk+P$2h(+P?sm^%)-OGL-CR7thExPXx2MQFqck7^Zu^|s^R9GVwmUoa?Rl|3$nplM( zfsmK^FLBj>zSQKjBmniaUMo%q!@5}(^&-o7)A_7bGRX+9;WamhZfqRdDL%Kq;wmwx zT|a9y)Apuw-&1USmD#_UE_XM+GrGQD#c(<5X(C3wk>4VBb{OCJI^NxAMd(G6QAxRVeSpkZuDVHI)pMyzrtt4+x;^$!?bCwuYSt8uMqvl z9`@j+uX>#oY{jM_;3i2i?5JtyQ!%X*iN_ z>1+Pm(q&uR2lh{9JjP~Fp&N7CPZ#LW{+601p`1-BT}5=^e3T1O`NheJ>4BjDffHRG zwVxHsu(6)4NHm_&8FC@E-w!k=C!JXsO~{fau{Q0f896h=elARYF`Jh0c zd8v^&zl`~^sLIN|N<5aeZggi?UTFl0lK0L?z)n6=Vh$DUYxeX%mz@ZFu_PT^obH2@ z%1xKWAOi>fi0YKLKel}SQA{c#;BYsSdHng*9`ES>Ce@1uQV-L;H}XEW;;YN?SEmPL z`l($F@d5{{YF~Dfpq-kp*og8Ax1+hWxTe)v&5{idglOIN<;nW>9{f;!{V*?Tnw#0) z{j;y%mZjFuIgQxu;;z_Lwfc4RtX_X6*E;dmXjx@g#kA4;?SxgX)xaT|{MX?S|sF!7#)xaS;*m5W&$5(@&%VHgBUZOO-pm6qrE zL4@UZt5+(_Km5_sGa7IbKzGvg-g%ztebhb$$jRPDH%UWyP}#woJ_rRh!bG$^Bsz{V z@MrLc8$uY$_-mUX%jfE!nzWAfSe&%SvTVq6iCr$=bS@n|>C!o1h|`#{>czrVTH zgzxFJ<=9IS81{_mS%&KGj0jDf$HN7pP#<3!PFR5n=_^5?E@QZ{Z~hxdP-87XV0TK~YM{xm$Q&e)}z5a)9*tKYpI!X@5Y zSeR!DlP7OFJ1j0GB^9s!Fz5-_V@)L&8#iU3wsq$y0tG{8d{%tYDk|4W)2E-52|38U z?zz?CyyZx8#ZN?1ju6mv!_zpZC^dy_c(^ak*Yz<)r1rio@zoDm8P zByTW`Y^Pb4CMEKhVIV=*xh)bv!?SMUcEV3fA}#gGP0}#=bbJ2|zHg89#lD^98t^rL z6kPC8KD+Z~G?eA+Y8Q&@PgZ#yu)7aN=2zvyBb(Kx(_Mzwbnc{2j2Wu(V#0*A~zgHKl--@FfmmVr7 zJLdrTSXvd?zQ2$C&aEUSdRh{D+!3N7h@8)_gO47>LFKAC+ov3m7uIcr!w2i#R^wH{ zi-`I1vWOT_yNn!**}8avhT=xy_lG7v{eg&Q>};l9tTmf-)W(p(+cV9X(x){Icwilc z2!D7jdOZat#6t$9htPhp`&9TL7nlo{Vup0SdS_3QE<|M~A0`MqLBu#(1PyK%)}*_9 znks&KKq+iKoF9hrXL`}KgK`)IADlEIUw6mA zgB>{|pFD%G&9mCeLR(Wzbxh?-t*mVIc@eGrBieVzk<+XnmT zzw~v}Gb14iLY>V}R`L{GQS`@jub&zm(g6|M_}+V()Mn-4Yj8B4@4N36w}2ozyw`@^ z*w{}%KG=@HdH38FLb0)$&E(`wsu|^+2cuJ_F|ax^58>+cU!M;~J->q#nr=^_P!%}zW!Y^;H z($z&A@kI^tiFS@ekJW^XFnN9bS`k>PEteG)tZ?F z9=D{q58LCtj+r0q9siKF6?=w=d)PA%=#NXMK3g)n?krbT(k|p zwvLt2l#`rp(lsh?lbEeKENYcMC$x0&dIxzWKH#8sbZrwksIsx8-3C4ou|2|n6K<-Q z&<@`%(6*nt5Y)j=`#LqJB57c}Tv6?+z^0JxQZve{O)6Dndq)gGR(S3Gh=jp}ScdKL z2lmL3_oUXD&ME{i(I~4{)RvH{Qh8vz((-JO?~oeZcGxDs*Kz-Yr}S%K&V zSineustkYBAt<_pmi$2{`_XWJ)gAi&`kBK;{ld`UBpT?!=@a(AFF)x~-jkIk!}E=H z2S11I$LO~fhNtp~VjqluUUdUI>>t)5I%4J98N;(;c>DrJCm%LhEV+>Swy#7Ab^O{bagZ$p|9e4Z9dg%kECNKO%r$By#LF1nI|n@D*WBNakLxyT3B51)6mD9n)sa-Gk(j{TphjG%0=o@g#vL zSshfsRgubxzT?1C4OHRXh9^&n;uj<*?C;{#@DWjykBU|ujA}Uhan20bDoxd{3$#O` zKDol2mmB5QOMaSdF*!d~GHl^DE%@HhDj?cl8^U~8xe9hed5(^I2so!r-ME;yo$5&@ zJ@8agmqtmfB%zd%%DjbrmcC2;-33*dvA}bYFL5m`U|YAtlU`3dC{8Z)c=>vXC}UiBiJ7=rUh}oCVjg# zbfn6;D%+(?YLWqv)8pU?9ruOW6H$E?U6;e&j;gtEmgw=uCToFOGVzhvG-A5bHwX-#r_?&|Zzf6C@#KH31 zvmawr*7D;~=XwgAa2?lrgsbm;DjTOLh8}%wF|wU@v+?~E%^qf-dE&u7O*5Kehvo;a++)(eqQG->%ubc~_%YE{liK50P0$z7(h+VCFr|#=L2&5R) z@6^;-ZMnH!Vt2d5?b5}fZKI#}pXzUUCLS~s?>5K3^(SuG=uuoA#f$LdY>5}Y=xV(E zgZOp7Ix`j(nm4>`(K0 z5Y!(jW8?Pi+6d8x{DWT)Ynsws$)P(It1E3Zd#-b^u0bn}0nvtH{8fV%eW8W>gqFzcV3e?J<+* zJnSPX9&C^GGJ~ZCBG56IG}E6VgbeS6N_;Ovgf|u_ZV%UBfER^@>zf8DKhMwfB~|p> zj(N_W#3N$*vQxZu0;@k|`9=ld8LfsJp{d!+7_g3B&Cj7sW7_i?n(eEznh(VyUrpXV zg5G@O)52vS|B!I->Xf+e%NO_f53Jv>iC$h9Un=`>S_@)TE_knoV4-;;JDC$@T?zU8*p zj@vq9Ka6H^7(X3)i;8aONnN5*StD-k^@b$zSJE6DlNH{pGkI9UrO3>8V36pyt^F#F za}rj%Acfw({BrlbC&Hg$AZF~=8&_u=#wlW~=EO(Q%X(h78Z@@W@7`(J*{BO*u5XnV zf(VjMXKD6E#FNb2#gW}v*OvOB`21VW*F+vV9LC1VWvyRbfO(_o7i)p;!3izpaxJ&f zf&VwSa?+PoRbQwl2Ckw^GiCbziNK z&Cs>0`8LSwe(n|sk0;;x7=2o$*z7}af~dm;lSkBIxaV+ z1^bnzXIpE=uBlFqONLU@dDoiDZLlADHVNwOFK_XEay?+9209&(=2HUUwWD_6?5jkvzxdy*0xZH+!}s2XY?a-q5X0E+`fK3@_< zzRy5M2DLBK!8tUt7oJ;F{qTx!b}0)Ql&hPWE}XDw7Vn>4Dn0ouB>nB(tplEjI&1)8`ZtKkt2B1sJ0gGJeicX zxQN75?e+Ls{S$!U_=@GPqZu)jb58Qi;Zt%*YeVV17$fSF$TQSj+fc_Qo{UmuRB25=vwap6dn^&)gHsWiXQ8>IWQ+5(H$}2C%_9TWTpS@Yp>a0eb=F;2;AZ7Jo z&rS{k-0?>9`G+p8r}yeHte><4_8bGa^m0Ohoe$-OK_NMF?}!m+l!-(^C?Nx2Xl~}( zHs;6V3pf|xj6}|bRBdNb)euUUF_0EcHZXfuW{exq<1eF6EF}yeMfHd%lFR-MttaCP z_-5Aiz{dHxfE!o*$o2HXAhd;bz;ckfq8I?10X#F}Nx)_Qy7K`6EUc_8*1r?*R49Qd zQjsLIaXw`0-7_W@PIjtwq9Hx$t5Deg1}rw&5g5Td|72c5UKd5?&M?{kI4-t%gd1u? WH!Tm@$UIi{$Ve$Z$&oO4^}hhZs?O*D literal 0 HcmV?d00001 diff --git a/Week4/homework/ex1-aggregation/2-TotalPopulation.js b/Week4/homework/ex1-aggregation/2-TotalPopulation.js new file mode 100644 index 000000000..5ecffeaa0 --- /dev/null +++ b/Week4/homework/ex1-aggregation/2-TotalPopulation.js @@ -0,0 +1,34 @@ +import { MongoClient } from "mongodb"; +import dotenv from "dotenv"; +dotenv.config(); + +const client = new MongoClient(process.env.MONGO_URI); + +async function getPopulationByCountry(countryName) { +try { +await client.connect(); +const db = client.db("databaseWeek4"); +const collection = db.collection("population"); + +const result = await collection.aggregate([ + { $match: { Country: countryName } }, + { + $group: { + _id: "$Year", + countPopulation: { $sum: { $add: ["$M", "$F"] } } + } + }, + { $sort: { _id: 1 } } +]).toArray(); + +return result; + +} catch (err) { +console.error(err); +} finally { +await client.close(); +} +} + +// Example usage: +getPopulationByCountry("Netherlands").then(res => console.log(res)); diff --git a/Week4/homework/ex1-aggregation/3-AllTheINfo.png b/Week4/homework/ex1-aggregation/3-AllTheINfo.png new file mode 100644 index 0000000000000000000000000000000000000000..5ec0b90b6c77d7ff598eeea95bf85be7c79a170f GIT binary patch literal 37469 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

    1~O}N2Te%1Vr?tH(gi^qFyVqJiQe5~>r zb-xfv3vx!Pi0R@xihwYx-!c5T4kXmC;I#FL*q~<8sDZa_$yck&4Ug${k}jVq_&0a? z8n8aEP%*P#5~603*6Z5Hl-2RZ1$g1|l!;K2F4355qu8caaGD`t9xpXX~(+^ z9)(EeccW%}r;+h(p`rMi!WE+9jU6@7)HOFg%eOokkl5@Ur9*AuztQhPkvP(q*1v|k z;aw8n|1nket42#q(3;_yotS?`Ck7HC2_xvnk%J`w%tn}t;{N3*AnlBDsN;1Tf=pt) z0a5@5qtUpNO*-|Bn`cR-G?(p55(FNLyl}{=AKrHjw}WzdqWmhCT?w<*p!LIngp-}C zf;}}^*)~j#MmF?j5!vO?PsIHs$M8xTnm$I`5)_3p+aiHvSoN9UVivvppMQD`ny>ge zC%|lIltwd^cT=&LC3d@T`~y`> zoIgK}_JI&@1jAp8sySWHQ7Am9BVJHK;0?l}=f zWUR0Gp#FROlx!RJmqVsvx_~S*w?GrUE488iX(DfI4hSAi%|yRzOEn?cb$8`BhH5l{&;wU#@|7R* zo>XzYz>)=W9(l5#KazSmQ>6d9QbKNLfwm5@X!>$(`DHA#m6>jEQ((;M%d5^gO}y3q zpF;Se@96Gwx}Q(}tDU~2FjnR>%Pp3~^bnxxXeuWqc5eZXznlB~_@S$J^6|xnnE%Lg z$xBO`TD9mRr3KBNEXbFXy-cK)LRZgNO#uqLBcPR8he?`0lt$;H)zce@lfYqx5=;$` zNB)n&Yz%uhu;MZ$Di9vk$lH6ju z-!Vh%b{5~WtfH*0;sn;5CR8~yq7sxgAw8Iuz=mTQ?ZlSMm<_%T7qR6GeXj}VxgbYa zQDNipWM577P9l>*(GXxZGMuBKC#4LrBho@HY3K z)(B4bRAhIm!Bc#J=tPQow5fg~>7zW96H#>(^eb;d#4a17&os#mS~}VQAi3~v>1LF-2`X)oy;X{ex7yE&22YSmkP82CzpW{x<0i89&9WS!z)b5seEES23mswY zuH-*|synyTwMOf5kU))86&So(VP07bU+Q^NWqf{m-wlTuWddp3_nuoH#JD7yA0NBH z;5ZL}*Y!~iKXRa=a@*}^qQB+=y;F1cFJII$*b?chb>_7F6jduf z4Ah7)Q`1vEEj|&$W>)K+!_t&=*c5lsjLk4#;>7l^=qf*8wTNReJssx0wx3~r5-K`h zLIT;j3K|I;r-YG!SM~MXqMB{eyF-59CuB`E3zDivvmZa31m{dmhCd8o@gqB%&Zc99 zKhOE+g^Pst_Vx9JhW-g*cXt)ttbq6ZnO4n4dm^{;jfk0gakVvPyN@i=WL zy=7J;tM{vVE?fvPa6&rvPb1FU-Qg?xPe*)&I0H(nR$i;7tUSxI<90<| zW${=tDri2Gi&LxLxK9qCJ!cHy`@OAvt4_?!Nk&76&qUe-uRKOq`FlpzQc6ANjWB~r zwtcIk5$~={OJ{akCw0AEcNA|*_ABe6m+FzD=@QJ^{hj%WSrbvouQWrhT<8n|Q;+y~i;WJ`R$J4J7rh5EnKOS_inUSUr&?u7S3e6NEx-m=Cez;_GNCcN@w> z5Zci|aJ<#6IpXTcCJZfAZL7Tw2IPa$$GZN^Vgtw0?oc%%ZU%jvk`kaG52-iuVnwg@ GKK(zG@mLiA literal 0 HcmV?d00001 diff --git a/Week4/homework/ex1-aggregation/3-AllTheInformation.js b/Week4/homework/ex1-aggregation/3-AllTheInformation.js new file mode 100644 index 000000000..4480c75eb --- /dev/null +++ b/Week4/homework/ex1-aggregation/3-AllTheInformation.js @@ -0,0 +1,30 @@ +import { MongoClient } from "mongodb"; +import dotenv from "dotenv"; +dotenv.config(); + +const client = new MongoClient(process.env.MONGO_URI); + + +async function getContinentPopulationByYearAndAge(year, age) { +try { +await client.connect(); +const db = client.db("databaseWeek4"); +const collection = db.collection("population"); + +const result = await collection.aggregate([ + { $match: { Year: year, Age: age } }, + { $addFields: { TotalPopulation: { $add: ["$M", "$F"] } } }, + { $sort: { Country: 1 } } +]).toArray(); + +return result; + +} catch (err) { +console.error("Error:", err); +} finally { +await client.close(); +} +} + +// Example usage: +getContinentPopulationByYearAndAge(2020, "100+").then(res => console.log(res)); diff --git a/Week4/index.js b/Week4/index.js new file mode 100644 index 000000000..92d217291 --- /dev/null +++ b/Week4/index.js @@ -0,0 +1,22 @@ +import { MongoClient } from "mongodb"; +import dotenv from "dotenv"; +dotenv.config(); + +const client = new MongoClient(process.env.MONGO_URI); + +async function run() { +try { +await client.connect(); +console.log("Connected to MongoDB!"); + +const db = client.db("databaseWeek4"); +console.log("Using database:", db.databaseName); + +} catch (err) { +console.error(err); +} finally { +await client.close(); +} +} + +run(); diff --git a/Week4/package-lock.json b/Week4/package-lock.json new file mode 100644 index 000000000..50cf56ac2 --- /dev/null +++ b/Week4/package-lock.json @@ -0,0 +1,193 @@ +{ + "name": "week4", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "week4", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "csv-parser": "^3.2.0", + "dotenv": "^17.2.3", + "mongodb": "^7.0.0" + }, + "devDependencies": {} + }, + "node_modules/@mongodb-js/saslprep": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.4.0.tgz", + "integrity": "sha512-ZHzx7Z3rdlWL1mECydvpryWN/ETXJiCxdgQKTAH+djzIPe77HdnSizKBDi1TVDXZjXyOj2IqEG/vPw71ULF06w==", + "license": "MIT", + "dependencies": { + "sparse-bitfield": "^3.0.3" + } + }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==", + "license": "MIT" + }, + "node_modules/@types/whatwg-url": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-13.0.0.tgz", + "integrity": "sha512-N8WXpbE6Wgri7KUSvrmQcqrMllKZ9uxkYWMt+mCSGwNc0Hsw9VQTW7ApqI4XNrx6/SaM2QQJCzMPDEXE058s+Q==", + "license": "MIT", + "dependencies": { + "@types/webidl-conversions": "*" + } + }, + "node_modules/bson": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-7.0.0.tgz", + "integrity": "sha512-Kwc6Wh4lQ5OmkqqKhYGKIuELXl+EPYSCObVE6bWsp1T/cGkOCBN0I8wF/T44BiuhHyNi1mmKVPXk60d41xZ7kw==", + "license": "Apache-2.0", + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/csv-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/csv-parser/-/csv-parser-3.2.0.tgz", + "integrity": "sha512-fgKbp+AJbn1h2dcAHKIdKNSSjfp43BZZykXsCjzALjKy80VXQNHPFJ6T9Afwdzoj24aMkq8GwDS7KGcDPpejrA==", + "license": "MIT", + "bin": { + "csv-parser": "bin/csv-parser" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/dotenv": { + "version": "17.2.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz", + "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", + "license": "MIT" + }, + "node_modules/mongodb": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-7.0.0.tgz", + "integrity": "sha512-vG/A5cQrvGGvZm2mTnCSz1LUcbOPl83hfB6bxULKQ8oFZauyox/2xbZOoGNl+64m8VBrETkdGCDBdOsCr3F3jg==", + "license": "Apache-2.0", + "dependencies": { + "@mongodb-js/saslprep": "^1.3.0", + "bson": "^7.0.0", + "mongodb-connection-string-url": "^7.0.0" + }, + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.806.0", + "@mongodb-js/zstd": "^7.0.0", + "gcp-metadata": "^7.0.1", + "kerberos": "^7.0.0", + "mongodb-client-encryption": ">=7.0.0 <7.1.0", + "snappy": "^7.3.2", + "socks": "^2.8.6" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "@mongodb-js/zstd": { + "optional": true + }, + "gcp-metadata": { + "optional": true + }, + "kerberos": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + }, + "socks": { + "optional": true + } + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-7.0.0.tgz", + "integrity": "sha512-irhhjRVLE20hbkRl4zpAYLnDMM+zIZnp0IDB9akAFFUZp/3XdOfwwddc7y6cNvF2WCEtfTYRwYbIfYa2kVY0og==", + "license": "Apache-2.0", + "dependencies": { + "@types/whatwg-url": "^13.0.0", + "whatwg-url": "^14.1.0" + }, + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "license": "MIT", + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/tr46": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", + "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", + "license": "MIT", + "dependencies": { + "tr46": "^5.1.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + } + } +} diff --git a/Week4/package.json b/Week4/package.json new file mode 100644 index 000000000..a972278c4 --- /dev/null +++ b/Week4/package.json @@ -0,0 +1,19 @@ +{ + "type": "module", + "dependencies": { + "csv-parser": "^3.2.0", + "dotenv": "^17.2.3", + "mongodb": "^7.0.0" + }, + "name": "week4", + "version": "1.0.0", + "description": "These are the topics for week 4, all in MongoDB:", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": {} +} From ba17f1111d2d946ade84c60ee7a9bafb07f66a75 Mon Sep 17 00:00:00 2001 From: Ahmad Saadeddin Date: Tue, 16 Dec 2025 23:41:04 +0100 Subject: [PATCH 2/3] do-all-requests --- Week4/homework/Ex2-Transactions/index.js | 2 + Week4/homework/Ex2-Transactions/setup.js | 8 +-- Week4/homework/Ex2-Transactions/transfer.js | 61 +++++++++++++------ .../ex1-aggregation/1-importDataPopulation.js | 10 +-- 4 files changed, 55 insertions(+), 26 deletions(-) diff --git a/Week4/homework/Ex2-Transactions/index.js b/Week4/homework/Ex2-Transactions/index.js index 47db1512d..59de06785 100644 --- a/Week4/homework/Ex2-Transactions/index.js +++ b/Week4/homework/Ex2-Transactions/index.js @@ -1,6 +1,8 @@ +import { setup } from "./setup.js"; import { transferAmount } from "./transfer.js"; async function main() { +await setup(); await transferAmount(101, 102, 1000); } diff --git a/Week4/homework/Ex2-Transactions/setup.js b/Week4/homework/Ex2-Transactions/setup.js index 6b07415f8..eb3e2ed42 100644 --- a/Week4/homework/Ex2-Transactions/setup.js +++ b/Week4/homework/Ex2-Transactions/setup.js @@ -8,21 +8,21 @@ export async function setup() { try { await client.connect(); const db = client.db("databaseWeek4"); - const accounts = db.collection("accounts"); const accountChanges = db.collection("account_changes"); // Clear previous data await accounts.deleteMany({}); + await accountChanges.deleteMany({}); // Insert sample accounts await accounts.insertMany([ - { account_number: 101, balance: 5000 }, - { account_number: 102, balance: 3000 } + { account_number: 101, balance: 5000, account_changes: [] }, + { account_number: 102, balance: 3000, account_changes: [] } ]); -console.log("Setup done: collections created and sample data inserted."); +console.log("Setup done: accounts created with account_changes array."); } catch (err) { console.error(err); } finally { diff --git a/Week4/homework/Ex2-Transactions/transfer.js b/Week4/homework/Ex2-Transactions/transfer.js index d1a430b1d..c1438ae50 100644 --- a/Week4/homework/Ex2-Transactions/transfer.js +++ b/Week4/homework/Ex2-Transactions/transfer.js @@ -4,45 +4,72 @@ dotenv.config(); const client = new MongoClient(process.env.MONGO_URI); -export async function transferAmount(fromAcc, toAcc, amount) { +export async function transferAmount(fromAcc, toAcc, amount, remark = "") { +await client.connect(); const session = client.startSession(); try { -await client.connect(); const db = client.db("databaseWeek4"); const accounts = db.collection("accounts"); -const accountChanges = db.collection("account_changes"); await session.withTransaction(async () => { + // Get current accounts + const fromAccount = await accounts.findOne({ account_number: fromAcc }, { session }); + const toAccount = await accounts.findOne({ account_number: toAcc }, { session }); + + // Determine next change_number + const fromChangeNumber = fromAccount.account_changes.length > 0 + ? fromAccount.account_changes[fromAccount.account_changes.length - 1].change_number + : 0; + + const toChangeNumber = toAccount.account_changes.length > 0 + ? toAccount.account_changes[toAccount.account_changes.length - 1].change_number + : 0; + // Deduct from sender - const fromResult = await accounts.updateOne( + await accounts.updateOne( { account_number: fromAcc }, { $inc: { balance: -amount } }, { session } ); // Add to receiver - const toResult = await accounts.updateOne( + await accounts.updateOne( { account_number: toAcc }, { $inc: { balance: amount } }, { session } ); - // Log changes - await accountChanges.insertMany([ + // Log changes in account_changes array + await accounts.updateOne( + { account_number: fromAcc }, { - account_number: fromAcc, - amount: -amount, - changed_date: new Date(), - remark: `Transferred ${amount} to account ${toAcc}` + $push: { + account_changes: { + change_number: fromChangeNumber + 1, + amount: -amount, + changed_date: new Date(), + remark: remark || `Transferred ${amount} to account ${toAcc}` + } + } }, + { session } + ); + + await accounts.updateOne( + { account_number: toAcc }, { - account_number: toAcc, - amount: amount, - changed_date: new Date(), - remark: `Received ${amount} from account ${fromAcc}` - } - ], { session }); + $push: { + account_changes: { + change_number: toChangeNumber + 1, + amount: amount, + changed_date: new Date(), + remark: remark || `Received ${amount} from account ${fromAcc}` + } + } + }, + { session } + ); }); console.log(`Transaction successful: ${amount} transferred from ${fromAcc} to ${toAcc}`); diff --git a/Week4/homework/ex1-aggregation/1-importDataPopulation.js b/Week4/homework/ex1-aggregation/1-importDataPopulation.js index 3bbb7b607..286a16a79 100644 --- a/Week4/homework/ex1-aggregation/1-importDataPopulation.js +++ b/Week4/homework/ex1-aggregation/1-importDataPopulation.js @@ -20,11 +20,11 @@ fs.createReadStream("./homework/ex1-aggregation/population_pyramid_1950-2022.csv .pipe(csv()) .on("data", (row) => { results.push({ - Country: row.Country, - Year: Number(row.Year), - Age: row.Age, - M: Number(row.M), - F: Number(row.F), + country: row.Country, + year: Number(row.Year), + age: row.Age, + male: Number(row.M), + female: Number(row.F), }); }) .on("end", async () => { From dcbf6b36219f06c2688328584cc5cbc3af03ab49 Mon Sep 17 00:00:00 2001 From: Ahmad Saadeddin Date: Wed, 17 Dec 2025 13:14:32 +0100 Subject: [PATCH 3/3] rename-Ex2_Transactions --- .../Transfer.png | Bin .../{Ex2-Transactions => ex2-transaction}/index.js | 0 .../package-lock.json | 4 ++-- .../package.json | 2 +- .../{Ex2-Transactions => ex2-transaction}/setup.js | 0 .../transfer.js | 0 6 files changed, 3 insertions(+), 3 deletions(-) rename Week4/homework/{Ex2-Transactions => ex2-transaction}/Transfer.png (100%) rename Week4/homework/{Ex2-Transactions => ex2-transaction}/index.js (100%) rename Week4/homework/{Ex2-Transactions => ex2-transaction}/package-lock.json (98%) rename Week4/homework/{Ex2-Transactions => ex2-transaction}/package.json (90%) rename Week4/homework/{Ex2-Transactions => ex2-transaction}/setup.js (100%) rename Week4/homework/{Ex2-Transactions => ex2-transaction}/transfer.js (100%) diff --git a/Week4/homework/Ex2-Transactions/Transfer.png b/Week4/homework/ex2-transaction/Transfer.png similarity index 100% rename from Week4/homework/Ex2-Transactions/Transfer.png rename to Week4/homework/ex2-transaction/Transfer.png diff --git a/Week4/homework/Ex2-Transactions/index.js b/Week4/homework/ex2-transaction/index.js similarity index 100% rename from Week4/homework/Ex2-Transactions/index.js rename to Week4/homework/ex2-transaction/index.js diff --git a/Week4/homework/Ex2-Transactions/package-lock.json b/Week4/homework/ex2-transaction/package-lock.json similarity index 98% rename from Week4/homework/Ex2-Transactions/package-lock.json rename to Week4/homework/ex2-transaction/package-lock.json index 7b39673f9..7e83954fb 100644 --- a/Week4/homework/Ex2-Transactions/package-lock.json +++ b/Week4/homework/ex2-transaction/package-lock.json @@ -1,11 +1,11 @@ { - "name": "ex2-transactions", + "name": "ex2-transaction", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "ex2-transactions", + "name": "ex2-transaction", "version": "1.0.0", "license": "ISC", "dependencies": { diff --git a/Week4/homework/Ex2-Transactions/package.json b/Week4/homework/ex2-transaction/package.json similarity index 90% rename from Week4/homework/Ex2-Transactions/package.json rename to Week4/homework/ex2-transaction/package.json index 6109824dc..0dce03f68 100644 --- a/Week4/homework/Ex2-Transactions/package.json +++ b/Week4/homework/ex2-transaction/package.json @@ -1,5 +1,5 @@ { - "name": "ex2-transactions", + "name": "ex2-transaction", "version": "1.0.0", "description": "", "main": "index.js", diff --git a/Week4/homework/Ex2-Transactions/setup.js b/Week4/homework/ex2-transaction/setup.js similarity index 100% rename from Week4/homework/Ex2-Transactions/setup.js rename to Week4/homework/ex2-transaction/setup.js diff --git a/Week4/homework/Ex2-Transactions/transfer.js b/Week4/homework/ex2-transaction/transfer.js similarity index 100% rename from Week4/homework/Ex2-Transactions/transfer.js rename to Week4/homework/ex2-transaction/transfer.js