From 4266ea830085bd24f2a022b5beaf7859402706a5 Mon Sep 17 00:00:00 2001 From: boris Date: Thu, 18 Apr 2024 15:44:37 +0100 Subject: [PATCH] vault backup: 2024-04-18 15:44:37 --- .obsidian/app.json | 4 +- .obsidian/workspace.json | 29 ++++---------- .../Trimester 2 Assignment.md | 37 +++++++++++------- images/Pasted image 20240417140243.png | Bin 0 -> 19843 bytes images/Pasted image 20240417140336.png | Bin 0 -> 20418 bytes 5 files changed, 32 insertions(+), 38 deletions(-) create mode 100644 images/Pasted image 20240417140243.png create mode 100644 images/Pasted image 20240417140336.png diff --git a/.obsidian/app.json b/.obsidian/app.json index 4b1d320..1a00668 100644 --- a/.obsidian/app.json +++ b/.obsidian/app.json @@ -7,8 +7,8 @@ "pdfExportSettings": { "pageSize": "A4", "landscape": false, - "margin": "2", - "downscalePercent": 100 + "margin": "0", + "downscalePercent": 78 }, "readableLineLength": false, "alwaysUpdateLinks": true, diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 52b766c..655364a 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -25,7 +25,7 @@ "state": { "type": "markdown", "state": { - "file": "Semester 2/Database Systems/Week 11/Week 11 Database Systems.md", + "file": "Semester 2/Database Systems/Trimester 2 Assignment.md", "mode": "source", "source": false } @@ -33,22 +33,6 @@ } ], "currentTab": 1 - }, - { - "id": "6e12dd6a998cfc12", - "type": "tabs", - "children": [ - { - "id": "ec2850de42a22f4a", - "type": "leaf", - "state": { - "type": "pdf", - "state": { - "file": "Semester 2/Database Systems/Exercise Booklet.pdf" - } - } - } - ] } ], "direction": "vertical" @@ -115,7 +99,7 @@ "state": { "type": "backlink", "state": { - "file": "Semester 2/Database Systems/Week 11/Week 11 Database Systems.md", + "file": "Semester 2/Database Systems/Trimester 2 Assignment.md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -132,7 +116,7 @@ "state": { "type": "outgoing-link", "state": { - "file": "Semester 2/Database Systems/Week 11/Week 11 Database Systems.md", + "file": "Semester 2/Database Systems/Trimester 2 Assignment.md", "linksCollapsed": false, "unlinkedCollapsed": true } @@ -155,7 +139,7 @@ "state": { "type": "outline", "state": { - "file": "Semester 2/Database Systems/Week 11/Week 11 Database Systems.md" + "file": "Semester 2/Database Systems/Trimester 2 Assignment.md" } } }, @@ -197,8 +181,10 @@ }, "active": "3ed058b7ba32ddc0", "lastOpenFiles": [ - "Semester 2/Database Systems/Trimester 2 Assignment.md", + "images/Pasted image 20240417140336.png", + "images/Pasted image 20240417140243.png", "Semester 2/Database Systems/Week 11/Week 11 Database Systems.md", + "Semester 2/Database Systems/Trimester 2 Assignment.md", "Semester 2/Database Systems/Exercise Booklet.pdf", "Semester 2/Database Systems/Week 11", "Semester 2/Untitled", @@ -228,7 +214,6 @@ "Semester 2/Programming 2/Week 10 Revision/Q4.md", "images/Pasted image 20240319224232.png", "Semester 2/Programming 2/Week 10 Revision/Q3.md", - "images/Pasted image 20240319163053.png", "Semester 2/Programming 2/Week 10 Revision/Q1.md", "Semester 2/Database Systems/Week 2/Week 2 Database Systems.md", "Semester 2/Database Systems/Week 1/Week 1 Database Systems.md", diff --git a/Semester 2/Database Systems/Trimester 2 Assignment.md b/Semester 2/Database Systems/Trimester 2 Assignment.md index 57fac1b..8b53f6c 100644 --- a/Semester 2/Database Systems/Trimester 2 Assignment.md +++ b/Semester 2/Database Systems/Trimester 2 Assignment.md @@ -1,3 +1,7 @@ +| User ID | CHC119 | +| ----------- | -------- | +| Roll Number | 00677611 | + # Q1 ### a) @@ -23,8 +27,8 @@ If the "street" attribute is unneeded, less IO operations are needed to retrieve #### i) -![](Pasted%20image%2020240415135455.png) -# Add Projections +- ![](Pasted%20image%2020240417140336.png) + #### ii) Root Node: $\pi$ ( factory.name ) @@ -36,8 +40,9 @@ Line-by-line: 1. This is the final attribute we want to obtain. Placing this here ensures only the necessary data is output; reduces IO operations and memory usage, as only the required data is given. 2. Exists to join the 2 tables together based on the condition that the order's factory ID = factory's ID, allowing the projection root node to have the necessary data from the factory table to obtain the factory's name. -3. There is an argument for this being above or below the theta join, however I have placed this here due to the heuristic principles of query optimisation, moving selection operations down the tree. This exists to "filter" the result on the condition that the order is urgent. By placing this selection after the theta join, we can "filter" more selectively and reduce the dataset size to optimise memory usage, similar to the adjacent selection operation. -4. This exists to "filter" the dataset on the condition that the quantity is larger than 20 units. By placing this at the start, we ensure filtering is executed earlier, as to not waste compute resources. This reduces the dataset size, allowing the following operations to be more optimised, as there is less data to be processed. +3. These projections are necessary to optimise the dataset by reducing the size of the total data when the tables are joined by removing irrelevant columns we would not need for the output of the query. This would decrease the amount of memory and disk space used by the query, and reduce the CPU cycle cost for the theta join. +4. There is an argument for this being above or below the theta join, however I have placed this here due to the heuristic principles of query optimisation, moving selection operations down the tree. This exists to "filter" the result on the condition that the order is urgent. By placing this selection after the theta join, we can "filter" more selectively and reduce the dataset size to optimise memory usage, similar to the adjacent selection operation. +5. This exists to "filter" the dataset on the condition that the quantity is larger than 20 units. By placing this at the start, we ensure filtering is executed earlier, as to not waste compute resources. This reduces the dataset size, allowing the following operations to be more optimised, as there is less data to be processed. # Q2 @@ -54,7 +59,7 @@ To guarantee consistency, a DBMS handles the enforcement of atomicity, consisten Ideal SQL Transfer of crates: -```sql +``` UPDATE warehouse SET crates = crates - 3 WHERE wname = 'warehouse1' @@ -65,6 +70,7 @@ WHERE wname = 'warehouse2'; ``` If the second query is not run, it is not the fault of the DBMS. A DBMS can only enforce ACID rules and ensure consistency, not transaction logic. + ### c) By allowing concurrent execution of transactions, system resources are allocated more efficiently due to multiple operations occurring simultaneously. This has an effect of being more performant, since more transactions can be processed per second. @@ -112,8 +118,12 @@ Deadlock does not occur, since there are no cycles in the graph ### d) #### i) -# TO DO -The recovery manager would first identify in-progress transactions at the time of failure + +T1 starts and commits before the checkpoint, the recovery manager would recognise this and take no action, since the data is consistent in the database: the transaction is safe. T2 also starts and commits before the checkpoint; the recovery manager would take the same action as with T1, as the data is consistent: transaction is safe. T3 commits after the checkpoint, so must be active during the checkpoint; for this reason, the recovery manager must redo the transaction to maintain consistency in the database. T4 is active at the point of failure - since the transaction never completed, it must be undone as the database is no longer consistent; values may have been made durable before the transaction had committed. + +#### ii) + +Using the immediate update protocol, the recovery manager would first analyse the recovery log, working backwards to identify in-progress transactions at the time of failure, and determine the last record of a checkpoint. Following this, the recovery manager creates 2 lists: undo, and redo. Then by compensating for changes made until , recorded in the recovery log, changes are undone for transactions running at the time of failure. Finally, the recovery manager reapplies changes recorded in the log for committed transactions before the time of failure, the recovery manager redoes the necessary transactions ensuring the database is consistent with updates prior to the failure. # Q4 @@ -121,7 +131,7 @@ The recovery manager would first identify in-progress transactions at the time o #### i) -```sql +``` SELECT partName FROM part WHERE partPrice > 100; @@ -129,7 +139,7 @@ WHERE partPrice > 100; #### ii) -```sql +``` SELECT carModel FROM car JOIN carPart ON car.carId = carPart.carId @@ -137,7 +147,6 @@ GROUP BY car.carModel HAVING COUNT(carPart.partID) > 4; ``` - ### b) If the DBA revoked auth from U2 -> U1, U4, and U5 would also have auth revoked due to cascading revokes. There is no path from U1, U4 or U5 to the DBA if U2's authorisation is revoked. U3 and U6 still have a path to the DBA, as they do not depend on U2 for authorisation, authorisation is still valid. @@ -146,7 +155,7 @@ If the DBA revoked auth from U2 -> U1, U4, and U5 would also have auth revoked d #### i) -```sql +``` GRANT ALL PRIVILEGES ON * TO Isavella CREATE VIEW employeeView AS @@ -158,7 +167,7 @@ GRANT SELECT, UPDATE ON employeeView TO Laura, Naser; #### ii) -```sql +``` CREATE VIEW projectsView AS SELECT * FROM project @@ -169,6 +178,6 @@ GRANT SELECT ON projectsView TO Jane; #### iii) -```SQL +``` REVOKE ALL PRIVILEGES ON * FROM Naser; -``` \ No newline at end of file +``` diff --git a/images/Pasted image 20240417140243.png b/images/Pasted image 20240417140243.png new file mode 100644 index 0000000000000000000000000000000000000000..cce64cfd4de4b8e109f99909f533c8b48f6d5aec GIT binary patch literal 19843 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

S1&mDk>{wr#q;LvK4)!Jyj~I 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 X&&GbkQ8Ro&8lkFmL@`sr?DGEs34dER literal 0 HcmV?d00001 diff --git a/images/Pasted image 20240417140336.png b/images/Pasted image 20240417140336.png new file mode 100644 index 0000000000000000000000000000000000000000..7e7c315e5704ebb28cef7479c570385bec1f34f3 GIT binary patch literal 20418 zcmeIacQ}^+|37?5MKV%K8A%!_vy|)*4W$s0J#)#*OhSdsG{`6;vdc)KWQU4UcE}9b zME1BJXT8_&^Z9(g-~0Iee#iaS-Enlh-x=3+p0D%udOjcPdHJ3`rASA^LPH{v=#Cwg zS0RxoRPncqdNsas_N%~S{AZ<|>@hWJ{Bfl=_QAim*dNifSG6{^cQUwSLNc?mwlv|h zGrDAAVr6&1+J2O>Pzpc9OZ<@BB@+XCb8D+@YUY+EBn=beZ9)gP9k#i&O;}KP|2Coh zVuJg`_U+pytE$%7=;}fuZ6h6%Kdk2baOmq5O|_n8=`jICMwL4^d?Ui&mCGfWmmlUk zqC$PTN+Lg^zkCNnfMG9Z88_e4qpi0uoL4H7n~T`Zv{C+$C-;tBmt{Yn+_e5B)e*+S zx5L{x7EJR4_7xTF4WlTC9vtuscStw;nq~T7SZiN()>cX?Dyl=Inb}!`%KLmtzJY;s zBpKe2hRtS{mUJX;ZtitEZ_Nrx_f{-SN=kPxFHIMcJSu`XzP=no7Pt@Fn57)$8H#OI9JEt==fy`zxXerMa>y-&)^nT#|nSb4TNvQ5-V6%GwuY-(v~WKleM zZ`Y`RGzZ-S4uOgPaA*H|HHRa6J!XMO=rBzUx3VJ zZEUm67gdnMRCKNGih&6?tDi$_`ga5Y#96`T1=NIUW+lvH!xlg~df7m&prNk>boxwX#bF>Qil}hR$i{+EBD#oo279 zsv?nwo3l%u+OOW6=&SC2dxy(;@n_?BIjgmP^Kyz_2^nD*A zOAD^fcMJ{Dl0xox$03M@qM%E zs3Z3F`(3YItslwz{{4bdq}ayt^75Zo^Nv<%DkW?AZ{m}6bUc8|yY)!!rs4NbkGOex zQ>HGp)Yfib=GQ)bc_~!S?Xa=&4!61f-50U+y1KgGTXF>2+~zH5Sr5?ayt2QRmnTlz zCMvr5^5x4mwzk9%AFyim*=P1~8!s;nZlmOdWlP84;M#)+56;ZZl~hzv@$>UT1R1r9}#o+)etjGJodrj$+FAh1K+IK2=ppxw*O9goGH^ZrV%o zV3}CSTUfJM$Z)09?6(b1G&5IBk9;j1>nt6gZg)2tYRV*eT%PDH#(68f$)G4BL)s*u z8{oD$mpl}=TR95noaUuUZ7Ft+t-bx5(ZXe23+;;+_a-QXU!R{IjXU|^05>0BnO(Ic z6&Dwmv$Hdf25nDIkErX6;Po3f3=9oppBLP`NwuAei!ipDU{!p$12R2zYKTj4?_F9~u?tXV~ z_tE3WuWR#HVB4QLbLLubFq8dA>lTurY1QV7ZLhb)$H(Vhoj-6YQf!s7vU2wP&fU8e zEg!`vJUYb{bMfNE{bV%_E~c<(t8?ehaUMLF(;&KU-@Yfh`7G(Lf6!R97w|C&u(GmB zxGiiB+A6u;Fo^9??6U%tyB|M(cvd)#v>v`m&+b{_zPy+-<|He-LTYhR)ziz%pee&( zW*{|Pt-12Uhm8rbN%$k8>~)iYgJ$rpv2bUm(k@EU=FOWsaAYc&^;|h6s7T}EA6biN6>xtkjr8nQRlty;SY%WwF`hmm{Fp3(>r3la&B?uM7wDx9Fx zT3R%uv5AS&Ym`*M4WY;5GqSQaY;_uHI+M)hP+#IO-gTtu%NK*m@1JuoPb4(cH(q-A z`qX9easJS5tex}n;M=S>d7`Ke(N zuX_~*uR!7A!oux`4{5`dyw7Es8eq$kb9UZ)cRM)P6T8-EqW1%dw07;<$)PW*!_#>Y z-_9}H+S<;1j|&>>PmGSm=5ER|W7xD;(_>-5HKfVv>#I&|T?cX@?^UU#$;F9c#?y~A z?%uuI(a~|*LR(&brG%v99lUms)EqSuxl>O8g$FJd$K{S2G9BW-_we^Z{5b#}`MB_&Th{;sYr5=qi!vM5UO zidupH(-TnhoLA_qTAZ2tOAb*R z{p`$&TkNI5JgWL+vfs03!to~OUtDBdDscIkQp2Di(-WjXgKn#0F3!hCmzI`R((N$V zVDR;o1F!ACk36T*t!cXXysnG4!^3&1zJ*6d2A+viSd)3^(4ny(KT<@hQ&i0=jfIIN zbaw41qUcQZMI-3!4w6=X*MIKg$B&|Ry#ZtSdqgB9_U-(vrlzKk+Bh~f)!@Lp0{dSn zN@C0IQx88m@QOqT8mvGqN*dgMbS-}NOxc?^F&gQ*uTIHjSTyqETxbp_?Y;WUq;gYh zp}StA`Rz@bO2^bLy=21=p;KH(L+BS<6{!94(ve1<+xMNrmH+JO``=P?XDSMls+8HU zvQiv*6<=KuUEnVD=55g5O&sWfyfisGQ#)Nv^?%mHNhRNm0yhGBRHqMo2uQw6!@!Vk zdx&Vt(YBhJn@MQlGUHAT|7_sWB$vqOuz6*nMPI}B8?II=w@-6Sr0QLHU6p8R_T$^T z%~GzSQZpTtI*GD;)c!mo;@CEV2M+XVu+}A^F`SznD`oI1?74Kvv^wf(>BXd-2149$=S_wR62|3X-YV&wh)1Y!hSdPwQ#b5!{k+WJ>a@(*BkI+5}8 zfddCvL{d^2X{yp)_=Kc065{CLmR4Xf zFan8JJokXXz|wx1~^2LMCd3eD5z;@ zQW{?Y!riXyx&6*qt4H6^@H)zF=lEoQt&r=CjfC@9jP5Yq7U9RI#uE|}&@56LUqoe- z>v@M-Uv2<;Apl6hY%eQ%5Fp0!;Hl*CdUJa2lYMH8;`I7%&2P@;SRFomZLF!Pigxwt z)!aNhXMEZJf^=u^Z((6E1jgKa(29-Jf$}>u)nd(w8jb>LQhC2Kt6J(tP!NO5f_<=@`j z6SC`7dUSh5(e+hp(e3@PIbt(1)>$+>DF#3k)Gs0t*aKHj@&M-CQW+{x@#I`q$MA3< zal-?3$wc!za%9!(*RQwTd$*2}5lDev|5ME2rfdu5?c29|8n)+H>oINIXs|FdPQa?H ztbIyoc#X`=%o^=EvINq9Zrxtcz_7nx;13$25fT~6Zq@eMS6OOyrEoayyUeLXJ_YTjOL}C-Or+)eJrAR@7?}pu7BVY3_)TeAD#Q<=U zJaXFISaG&ys@<0;Nt!P%ZfSmDnflx+T{j=>XWKW|v5vzt^Yf*+pq)E+atjDlFi0_v`fywfK$x=y9c^$Ln_^GaKWkIw(#+} z*Za!KQbmrdo^gsn1o5zFOgkbk@7b)0b4KQD=w{u7@FYI%f9tqUYyPDnHgyq*fe?FBjNhO)d(b2J_8(W-rvGOUmtkY=Q5r6`( zzLpo3dmgSi5wG&5tjqw11}H9LpfNrA(?XK%{ zwI@X5Q~U|$hoZKz&5dJ2gU*igiOSIm&d#D}T*1wsz3<)IFw$O_eyQQ!g9rWqFuu>| z$eLK+Rd?SR+t}F=xVE<{{07L#n$U%T)>jT|0f1EV_JRVS*JeC_E{}^7vS`?w-Oh;} zzKN(2K8#!h3QJZ^EGa4?k#2{DQG+5)j<$2`+O-RHmztJV&AhavWCgZ9Q-kV-_5#WG z@85%`8eF(QEiEnGDgGfhR}?HO7Ecv#@y2iCo=?fDyA5{!{7V|`O;SE+U3qW709v(mS3k6OB_sH}JSIS}vo1vP*m z;$0x`Bo8jdTh#56>Sxu|Jh3VUJ?}#_^Ib%`y1Vb(y}N=mGnihOaq)}r6P>(GFJ8RJ zb)6Ny&##kGqX6!b0TPVvpqT7m6Uchd=KCkkHx(6J($XAwb44pFe*B;x$o%&G`N=jXs+6&xXZ^gyQNwH?l8s6&a@O_Fi;`{cgCf{=}bX)W+)Of1p zbv9LfO^`cyb$nr}lzQV7o`H}-$;yzhCr|b|U%s3y;SP2o78!DDtEASjWAd!NP`nl{ z;SaRCslfkYGM?k77nbJ(w(MKImYIL$>C4Gm+1Rv)#UM-QsKR8u%+OZw$U(b)^ZI*P|PqTLI;A=M&Nz;!Hd0ccs zbc?;#GJDQ57#kaRyzGm*q0O&&`SPJ>&z`MYzdqLSnFs>|!*i>zEL03znIzNaKJ|4g zw@Y&veyiB0N@hYSxfv9soKM4Zx=>uAKGcx55GT%YsOcJZKr9Y8FNl>bHuJ+zi6L4C zHmQ zBknjo z1`r6|_FOVHF){e~@KF7&rAsz8GM6qryMN^f+h4K(@vgGbBV*tC`gSkqsHr`+-<@JM zYJc_t+SgcH>`D)=7@Ir4o=SNRimY@+6*^~WM{n?xc-M|NX;F~g3{j&Q~@ZO z=ID6VQo?1D8nktNz79D8Z}34~uD!E=YPf~2;lMAV_}}ZZ(62PD%0 zlQE%cEDr#|=wn{D?z9E1h-GJIrwD&vU!1|jKKiw5DNi3#4C)#k;4V*VIG`dk1pW4^ z8);HZT4=hR&>+6%IdwnHX-gS@;ryY0(Zualbx`PR-4Hg+YLumK-*=GJK$(U_4;`W) zt!CKzq+97X#WEReczQf2$Fe2ifqYUKLArXr@I1Qgcs$UnEI1<2toryyXZ+(D{y|rE zF4=G^ciA%WUE&K~3{o>BJbp-kai`VT+1SRwnPvGyjT)Yu6Z?2OB2VlCMSTB5Uc(BC zD&+^FF|&P6sH6ZUM|nO%FT)MWnoXIt^etID6pb+HkHK?(^8by=KFI)Sv&s zi0aH&1_uTPDg+LYJy%Sm>Yk`le!_TArn1%Du#AF_OWG(f2j8m{DD;eri%YVco1OJ- zj%s>SHTpSD@#x8u8=p$Xm<$)52<0zsZ`XT1rL}@!Pp5_!(3cFXt@Vs(`#KEV=tA_! zuUA6na*{~vK071(a zW+%=@jRG;DLHHFF6}e;&qNij1EFMH@0Z!UDIZ=^bFE7pK+IFu-(Y0BebJ($SXJ@Ul z^pRBcr!2-Tbb)2TNxuKDB=otEyG>1+&}25y)6<6?uw)@LX7s!?UCVy0zvz3C$%S_n zdPk2^1Ei0E83l)iQj((Fmo7s?qJkc);rkz?b%To+0|+E5EW936g-~{h5?xoPwpZ&p zHDKX|#x(YVnXa{>;^N)ug-azVXH)foRm^J>Cq0L8 zU=-f_eCNHZrRHg+q@5z6^yF?()rdUn6q*jTba&L1Qxq|be}hZ!<( zS7NkVi8mc9L=G<~^x`kmL4V$~bP5bxdTE^D zxkV$rb^gyy^c+&!>5Zm9F$Afx(9!8Kkvg+MO}&NGS7T zdMb#S4OX!}Rb%jVT3YsZLoJ=g^_KFAiWUxXw7&A!zkM^-)Y59OSOju#u|Cgk`RW~_++ zwptuBSd+yyHR~-~UX-C>tOI`?o`S8gZu4dzJ-69aWo2cclto3?C=K-WPg|r#iaROb z%n>>nNAzmi%^u*>zo5f93ROWZAiXaqXhKM#>R%tY0rj~5~85|)`$Qc`E8KrIq?jGj$cAf!)m ziVT2bianwln-5*u!LL^kkgAd1Rl(sdudBONYVJFi!DTfyCfv*Eiu^d%553~5nXm4X zWWbol;X0H8i!p4KfZ7r^cC{w!>*0UbYKCi29}LO^wm@YPwe4C-=tTe~|C>_HO)#QO z{MtT*W`W&uKF8_^F0WvD>B|48*1(nGU>CD5B6jk(-riU!;e<4XM?@lByLL@*-#)?$ zA-DErJDB+1x>XJk>PdJ*{k4e^h2ea4S%s|(Y@!*>O;|~T_rW}ZA|gl5oeQsd#&`Y& zwYy%v%SN2pCgV?asKgbjW_L<71-#wASR$0 z=KFhI-M}_BDD|cz)GdIPfRYl~&Y~^C#?*v=h%!@JQ9*@kuK*wMJg`eSDj4D2n!I|Ct3KZP=w$WRae~8swlVLS!v? z&6_>xuUELcyF*+qs;pcKod#Bjs7(iHH64qmPM#xnrY!dqw40LN4-bg_vB$yu%0EhI}!lgNj{PZVLKTFmMbU@XMeO~`5 z;-t{iJ&KBo3rq8(TpX9jdp+IS+FH)gO55J5ErdAm^n8v2EN`OZ zLTx+Sef6BG#{Gv6*(L`YmAhXYwG$E&!k(*vqjAK4lL4eOLh(FeVFz35xb&s|tUn3h z=LEqO@vqW$60Zjw8uH4O=-a@nOk4Ndhg!m$eMVh<*WRqGtkRgnH-bO1rMx)zb98`q zi||TR2BHXDx^&6256s9%+-Zb5s5(kA_1Q?4juun8+?mM~t3r5z%mTWesi}Ji8x9Yq zp`VnNyyv%Zc=CkU(i=#WKL<2MvBrk5)L)&7YkMxa6!F0+!6E*;){l#a`FMB^o161M z+SYr=mBFzV$8etBKSRN;ik9Zsqmd>LKa(i1gfQ?X5}FPnZlWdK zzJ1#R?U+VK2G*P4m8pvl#hvJtqa+SrxWJ9Fc{?)lX`MGj3zw-OU+i}o{?N76Io9o4 zA+X*)9xn)WEIK;c<|PL!t3OUu7l5BLE`GcxRIh7sx}CW}L`0+vD+aO91C~`M8Uu_p zS+F6S*&imIDuuj94sM~OyrH#QUG018%YEu;+R1exJ?EfD)#gq(V%byfqJ~d@bwbMF zyUW!^6g6MG(E%CLSAD<<07Tu`esl%s?xCCJBh63hoFD+1#B{42yf|8juSACj0F&F9 zhFuI3v^4gJzYTULJX=m^j3k?d8Cy1KH#T_eijcaYqYJpgv*oo^YjpSqy;#)#`#K0g zwqTIpj_|UX0sYJH9Bh!ufYxI~FmeWlik`|)3biPMC@}{bbk4ASX7syGJ^a-ap}rSA zJY=WlHhUJ)3hC3Dnm*7PaU|99+R20Oe>@?)R&3{b{@shC^ob{aiwD}-I;oS#{39dl z-oB+KvI@`5Yg70H`944e$hbUV8d&aXQS#->7QmeuU_*;Q%jB$kX?lfQqoShTzI&IP zDb99!wzM0Pw!VSEwV4@b!hJU|Fn|D93Y~&HMBkWYrc9(1wrttr+#Pt3K&z-6hJc_X zl7@!HUftJ(04Zywnt00V#tllK%p0)#J5d&?>FE{R+@w%n>Uzzst%GjgUI%N0L_mKW z&~=+OdBahU!S6L?8c{*YTS+2PCyY!?D`EN*y%_=bo2?Und$B$Pc+c5)&AC7{}XqzN~^Wi9ffO^5> zP?5gih4jgzXfuQ(blqlqi0p~`LO@W^O(pFHW zCl?nbDZ{emz>eL!A=k?0t__h@?bmIL^-nHv;QJhc%GU+$A~vT*P3-*Oy@*$(JTBIx zq7M%ao^5!VEZz!zl87_J>#{*UBw+tmDOVq~@NDVr>R(OkM{80mv9fO;%?O=6le-a` zXI7RRL@dS)8{#G-sy=);>t~Km`|Z-9-^q%UyKw~a_jlNLBeyTG>L-%kfzm84U zn>C#;@!k|EU&jf(bZpEfI5?O)TlH-H)?E?bl6jKV{Lt2j-7C|hadL6)r|SIG$Kl~y zV5`XIlgZS4Q{t-Iud1p#A)xc0ROhc|d8LGM-_mmaJALBEzeQ&1_R!{*mOVcs(=4JQ zj>Duu`eJT+lwre$4M%s}CGRG={??u1UStg3TfK#1=hV@Sken>!;G~tJ z{IE;E;ai$ua&j_VjfmHzoTKB5nn=I8&hgy^MMW|YIJM$NEM5^QgT3dTJ#Ls*Wd*@U z17Ygt*y~$>Sl_H{Ba|Kd8_;56U|%Q%l+~O2j?TFD84(m8IBa9BoX$>Z>XQ#){{6o zA5;?3KiWh9mc zZkDN4yW+@|v|oCu9X1w_Bs4aYD!oZna>KfH+gdL)65#@>x+MHQ2Yx@pG5!A5ZfzZ%Gb$?AV`8>JJf|Q%jEqDn^u(c| z-72A3u|>tMyj%H-Lj>jV+Cz44Zc#?Ky8&$>40+lwD?9rLbfmF`tYN!lkyC8QA9RmH z&O>Bm`}$v``X5<+2b7239_vPgZaS9G1vX5T&>~8R3j4>IJ&P0YGoFhou zB)jJifsIHf{Z4@XR-L$Fe0(NX{?}pB-w%;ac*XIdJG3&DRmysbG5bRnHCTH!?AU?| zUs;C!ok97(8zi-~g>$t%{-~PtFEO-n(s}ipWmlgqjq7Id$9B0sQ<8Geo;`<1NP@u3 zt#1l593oqCt-5Gwc_$)*=E{|MmTn)Gny^* zB)mg^FKC34kO&yp+|R)ymUiGd=xHfQmMOLAdeTtkV?GXAetEVE42O~gLC5dm*_~*m zU?Hi8o74P(osq(zAPJ%+HZ?VI^G%P96`|rd++n$+fESL0DrRVCIFMfeDW&017^t;H zBoHU3sA%q~!SJv!!YzXw?)`w>YG4fhli?>kB|ZsP4Y|4j!z4^`ULTTB!d(g0g^WCKGgw5S{9x*0YVTQGa|HR4oz`!@dc!P@H>hiwGdb-NJs^| zffB;^)@1YU&xOe52?WfFZ;=<*L^ z1UzEkIHC`Ee=5he9w)>c5PG<_o^aj{Tx{|Hx!ic-{@%loRtXjl!760f%-Fc7v@}jP z{a(_e{wHCtUcTf+3K`kqA~<-NZi_CjXL}!z1-c1C88PKl%RXWgB67>G^U4#kpC3}p{m8|6}k}`1Ck1N9zG1fbEF^Ox6^xd>lWG-dHj!`FM^8{=3Ad^2)O%o^gm?owLO@6$<~<>s z1q1|8oJ0B$Mz`&H>Ek6PCMLWJhlhp)FMQet)SvorX3RQr|OTHW81E2}lTpZX3JE-$9r^iq)s5rLqf zfYl+0YIKpE0@QeqfFXNT+`oSxr1lLqIfV@O1$en$+1Vn5=ns@bA`uh_7C2N>7=)#j zl_xGF;ztPW7<<5ryq1S#KTx;kpmiJ5lDhr(r&jFAYBZ=}owmrNhKNx#KIilDXBH>{ z&&L@k2d1uf+I>slc&0|a`eToil3b-zwmwFz z_~RiS!Uu(1>AdVS>HASZ28s?5KlO(AlBWHV5XBxp-hn-m`lb!B4wRRaW=9|-FXSHx zqDuHJD<~;#e|$R@5<3YS#Mso72%HfqEbLfs$P>hqoB?--p5lG%-mXsfXjF#Mgy zg$E0thlo-&y}q2)+%)$vTng?eI4n^{iPMi#lp2_agatBcf{5G^wovr)LSn{V?0O{0 z%3s>`jeUE!!PDCtNq0)ZpeiU(f2viVyHLigCx7bHt@2gp+7;gJHzs_tQvnP1j;3>P zu?^nc-AQOm1|W4ru|SARgY^muBiX%d5x1Lpspt5@px&}9x}43@!sU35m=vvN#%mhV zbo^1;iG+&u!WgB;`+aFdLgeQ_JuxS7CptO^|4feb62$2zE)Sy(v@t*C^D)tYe$oxy z_zfzs*V5eqHVNl-0tGYMp*_=(L@#~wIW9oqK#&`>$6|0t@V%qp8|mo+*phYSjeS-2 zh`4CJvgbh!I0HW(FP{>)M?l~vQq=(AM39Y8T8}KvjCX%;c*;68+RlKKF*J#8l(Te) z7Q*T$C~MV&gAC}&WFu(jNQi4EHp zp2fMRG2c@j+w^^8e?8rHg`5Mk{g-?s5gif|Z$G>Ieos0#pR`Sf$9w(jW{ofL$l5OV zv6Di)u0Xxf%(2pWI;%dcv^?~TsP9N^WG`u+Wd^xZ$zvetcNASKX-9;Tm_S+Tb6=wJ z^710|_K(rh3^6~1rO<|;r1Dy>T)C24lAe~9Y3Ua7oDTXW1Q{`Yw?0sh;fxVkIC2Uc zmc`_`iYno|VWBM+6r_5si;Og8YF<1l1mDOHc{%3sc zzS>v0s7r1OO$B;?()D3ov3gOV0qZdoXLu}<}&_wNci6nrC%nuAat1flpbh-H8nM4+5;d= zq->`c_X8iRtCb%!`3~%ska%6*6S1}0V_ccg<>zv^i525Qjt(DVArs) zss`vhwS4T+WXs3*4?aas3~g|5n=4oji=JvZ3E=^9Ok3}6(}$YKbHYSt--A zH%3ByCz(Z4>F3eNH#PnxiTmB@;KRN1u3T(@ZB-gT? zj`*0o-H{+me}%PU3!}Sc{|XTFHa6MGi2PjqO>_2tXFEN2K=FheF^u-tfZIokBl3@T z|4)w~sg{}>?Jtm}zMk5v_r9J{kc_$2yz&#I6nZPVmCsquj#m*wacmea`^&h;px*yZ zD1iI_lTd)x`G=5nkMgXqSH_T0V5Nv;6va5QPvs)=pjc?94i|st14!WNXy76T5;o^) zwH&1YPJNt^P}0^`P%awleK#^vXK*~Rf1K85d3N2tG|nHj-zF*-69YnL|NE%Iubh0$ zDLWZ+vBcv#y}F!a?m)?#cbcLZbowe5HFBnYMb@vcj->QE8aiotE5@71!j##9S^bf+ zxNfSUgqjlw>)pTE)ZX6yUaq-+e!e8et!PQ#8`C-H*+gT0xXKZ+P8waNSo+JAT;!lL9+*~f19Ut_c_iOU2rVhzik@{P2zV_TyTG#TWDBV*oChOSD#z9 zY{D?rDiV>X1RvwA_WuA=h;V@1MX_gDS;SJuomMcYFhO)(jrZ)i27o)_>M=

q#P4PhdXF!Vb{M(AUH?6rfjg4)lH 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 literal 0 HcmV?d00001