From 7fa78333dc3a9b599c9e0f525a8f12996a34984a Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 18 May 2019 12:33:25 +0800 Subject: [PATCH] auto commit --- docs/notes/数据库系统原理.md | 51 ++++++++---------- .../14389ea4-8d96-4e96-9f76-564ca3324c1e.png | Bin 0 -> 23406 bytes .../1d28ad05-39e5-49a2-a6a1-a6f496adba6a.png | Bin 0 -> 10467 bytes .../5bb1b38a-527e-4802-a385-267dadbd30ba.png | Bin 0 -> 14044 bytes .../ac929ea3-daca-40ec-9e95-4b2fa6678243.png | Bin 0 -> 14270 bytes .../14389ea4-8d96-4e96-9f76-564ca3324c1e.png | Bin 0 -> 23406 bytes .../1d28ad05-39e5-49a2-a6a1-a6f496adba6a.png | Bin 0 -> 10467 bytes .../5bb1b38a-527e-4802-a385-267dadbd30ba.png | Bin 0 -> 14044 bytes .../ac929ea3-daca-40ec-9e95-4b2fa6678243.png | Bin 0 -> 14270 bytes notes/数据库系统原理.md | 51 ++++++++---------- 10 files changed, 46 insertions(+), 56 deletions(-) create mode 100644 docs/pics/14389ea4-8d96-4e96-9f76-564ca3324c1e.png create mode 100644 docs/pics/1d28ad05-39e5-49a2-a6a1-a6f496adba6a.png create mode 100644 docs/pics/5bb1b38a-527e-4802-a385-267dadbd30ba.png create mode 100644 docs/pics/ac929ea3-daca-40ec-9e95-4b2fa6678243.png create mode 100644 notes/pics/14389ea4-8d96-4e96-9f76-564ca3324c1e.png create mode 100644 notes/pics/1d28ad05-39e5-49a2-a6a1-a6f496adba6a.png create mode 100644 notes/pics/5bb1b38a-527e-4802-a385-267dadbd30ba.png create mode 100644 notes/pics/ac929ea3-daca-40ec-9e95-4b2fa6678243.png diff --git a/docs/notes/数据库系统原理.md b/docs/notes/数据库系统原理.md index 9aaa6b4e..42cad107 100644 --- a/docs/notes/数据库系统原理.md +++ b/docs/notes/数据库系统原理.md @@ -130,7 +130,6 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 在选择封锁粒度时,需要在锁开销和并发程度之间做一个权衡。 -

## 封锁类型 @@ -148,8 +147,8 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 | - | X | S | | :--: | :--: | :--: | -|X|×|×| -|S|×|√| +| **X** |×|×| +| **S** |×|√| ### 2. 意向锁 @@ -168,10 +167,10 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 | - | X | IX | S | IS | | :--: | :--: | :--: | :--: | :--: | -|X |× |× |× | ×| -|IX |× |√ |× | √| -|S |× |× |√ | √| -|IS |× |√ |√ | √| +| **X** |× |× |× | ×| +| **IX** |× |√ |× | √| +| **S** |× |× |√ | √| +| **IS** |× |√ |√ | √| 解释如下: @@ -292,14 +291,16 @@ SELECT ... FOR UPDATE; 强制事务串行执行。 +需要加锁实现,而其它隔离级别通常不需要。 + ---- -| 隔离级别 | 脏读 | 不可重复读 | 幻影读 | 加锁读 | -| :---: | :---: | :---:| :---: | :---: | -| 未提交读 | √ | √ | √ | × | -| 提交读 | × | √ | √ | × | -| 可重复读 | × | × | √ | × | -| 可串行化 | × | × | × | √ | +| 隔离级别 | 脏读 | 不可重复读 | 幻影读 | +| :---: | :---: | :---:| :---: | +| 未提交读 | √ | √ | √ | +| 提交读 | × | √ | √ | +| 可重复读 | × | × | √ | +| 可串行化 | × | × | × | # 五、多版本并发控制 @@ -327,7 +328,7 @@ MVCC 使用到的快照存储在 Undo 日志中,该日志通过回滚指针把 以下实现过程针对可重复读隔离级别。 -当开始新一个事务时,该事务的版本号肯定会大于当前所有数据行快照的创建版本号,理解这一点很关键。 +当开始一个事务时,该事务的版本号肯定大于当前所有数据行快照的创建版本号,理解这一点很关键。数据行快照的创建版本号是创建数据行快照时的系统版本号,系统版本号随着创建事务而递增,因此新创建一个事务时,这个事务的系统版本号比之前的系统版本号都大,也就是比所有数据行快照的创建版本号都大。 ### 1. SELECT @@ -373,7 +374,7 @@ delete; Next-Key Locks 是 MySQL 的 InnoDB 存储引擎的一种锁实现。 -MVCC 不能解决幻读的问题,Next-Key Locks 就是为了解决这个问题而存在的。在可重复读(REPEATABLE READ)隔离级别下,使用 MVCC + Next-Key Locks 可以解决幻读问题。 +MVCC 不能解决幻影读问题,Next-Key Locks 就是为了解决这个问题而存在的。在可重复读(REPEATABLE READ)隔离级别下,使用 MVCC + Next-Key Locks 可以解决幻读问题。 ## Record Locks @@ -394,11 +395,11 @@ SELECT c FROM t WHERE c BETWEEN 10 and 20 FOR UPDATE; 它是 Record Locks 和 Gap Locks 的结合,不仅锁定一个记录上的索引,也锁定索引之间的间隙。例如一个索引包含以下值:10, 11, 13, and 20,那么就需要锁定以下区间: ```sql -(negative infinity, 10] +(-∞, 10] (10, 11] (11, 13] (13, 20] -(20, positive infinity) +(20, +∞) ``` # 七、关系数据库设计理论 @@ -415,7 +416,7 @@ SELECT c FROM t WHERE c BETWEEN 10 and 20 FOR UPDATE; ## 异常 -以下的学生课程关系的函数依赖为 Sno, Cname -> Sname, Sdept, Mname, Grade,键码为 {Sno, Cname}。也就是说,确定学生和课程之后,就能确定其它信息。 +以下的学生课程关系的函数依赖为 {Sno, Cname} -> {Sname, Sdept, Mname, Grade},键码为 {Sno, Cname}。也就是说,确定学生和课程之后,就能确定其它信息。 | Sno | Sname | Sdept | Mname | Cname | Grade | | :---: | :---: | :---: | :---: | :---: |:---:| @@ -437,8 +438,6 @@ SELECT c FROM t WHERE c BETWEEN 10 and 20 FOR UPDATE; 高级别范式的依赖于低级别的范式,1NF 是最低级别的范式。 -

- ### 1. 第一范式 (1NF) 属性不可分。 @@ -537,7 +536,7 @@ Entity-Relationship,有三个组成部分:实体、属性、联系。 下图的 Course 和 Student 是一对多的关系。 -

+

## 表示出现多次的关系 @@ -545,23 +544,19 @@ Entity-Relationship,有三个组成部分:实体、属性、联系。 下图表示一个课程的先修关系,先修关系出现两个 Course 实体,第一个是先修课程,后一个是后修课程,因此需要用两条线来表示这种关系。 -

+

## 联系的多向性 虽然老师可以开设多门课,并且可以教授多名学生,但是对于特定的学生和课程,只有一个老师教授,这就构成了一个三元联系。 -

- -一般只使用二元联系,可以把多元联系转换为二元联系。 - -

+

## 表示子类 用一个三角形和两条线来连接类和子类,与子类有关的属性和联系都连到子类上,而与父类和子类都有关的连到父类上。 -

+

# 参考资料 diff --git a/docs/pics/14389ea4-8d96-4e96-9f76-564ca3324c1e.png b/docs/pics/14389ea4-8d96-4e96-9f76-564ca3324c1e.png new file mode 100644 index 0000000000000000000000000000000000000000..71b87153a4f16f83fab541fe2b3fd68cd0dd9bb1 GIT binary patch literal 23406 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

djr3CK56y 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 B)Oi2^ literal 0 HcmV?d00001 diff --git a/docs/pics/ac929ea3-daca-40ec-9e95-4b2fa6678243.png b/docs/pics/ac929ea3-daca-40ec-9e95-4b2fa6678243.png new file mode 100644 index 0000000000000000000000000000000000000000..a9361a1eeca55697da5e599c58b6676b77ea17eb GIT binary patch literal 14270 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 MqOA;9d>i_|0Cn2rGXMYp literal 0 HcmV?d00001 diff --git a/notes/pics/14389ea4-8d96-4e96-9f76-564ca3324c1e.png b/notes/pics/14389ea4-8d96-4e96-9f76-564ca3324c1e.png new file mode 100644 index 0000000000000000000000000000000000000000..71b87153a4f16f83fab541fe2b3fd68cd0dd9bb1 GIT binary patch literal 23406 zcmcfp`9G9z*anVIgd$OjkfqJORJPCHAMp91msjSV`@XL0zOM5;&f_>vuODfvGBa{9LLd-kb+!9? z5C{zk0y%d71U>kTnea08gJWKLs&^s9-4~a@e~#PV(YgbHltnXcO{!CW-P?|GW`P+#NCGl1F1eac(f)a>^ zRhkungrC|Arq0vOMTb3L1P~iB8W{Ky(|Q679imKsWrG&{#PIeEPQT~ z&3m8Y>Zjis%_<#YyFT9dHWjcU9(b^nyT*68ry9QCzxhjW4P07<>r8AQ_MdRLhh+fo zAR`qTI3(*f;ef{+HZyHK!BQ4rhmQEht#{&UpANz^{(ZP77Lov(6Vs)2bDW?-KeM&7)WieF!@wZOOV%-6kHalvr$N zpRaMB_O(6+FEX|LAgEKV%In|OG{wLd)Em$4I^7IK2OOTHZi@&F=za!@Qio1qq1_6^ zH`$xjxK(K;O6+I#g=&NiJl4H(&82jaQAJBD3U=A+%-%5wq_;I48ffmQZF7C9DX?Zm zzUO$Zc3SzHH*a=dz14`7F2>G&kEBHWzDu3)^9uj1`Q7(v9G1^ohl(wnjf&0x)z}Fz zvr;y`v5a%e+1lFr&bFOIIot75-?@!^*Nd$IeVw`%bb4@C@&{KWaZOIH%l_60lZsSArI~R6~#JTN7L8aDR%v>2-tDrzVY-W(R{uq1J6#;us@CjPZ!HlDKkhc zQAW$J84kU8CvABLN;!DT8@PJIXg#j@XbDYhzP)0W^dKU(8hY&?U{Af&H{cSAFAA3L1G3 z&Fczo=@qH{31!g9C!5SJZu*yyqeMM#%Jk!PUb#$pk{D8Xn!MK!{C8yoIJ~}Ro4Qqo zhTs@EpQ9zd8MnN1{^6i#(WpJEqG`m#3|C!U-HsANW$K##R0an^BBnb@svUo)kPH@b zcQGq^OjEKcu20|ZEcF%L{GDipT>46xsPiK8wnYv}Jo_7~y1FxLr89~aI$D`iZHA*xh(T5uX7x&TvxuE`K7JDzdj&Y-aF3!PI5Dx%gGVI2-Y2q$8mLc zZG3lcF1jJ+^?=90w&O5_2&PR=|9ccEzLXW2)zo|Vua4ZnFyt%a43lpx4dm-1bv9Y4 zi_vH7=~>1t^kzU$Uw@A4DcIaqE5jwkre8<%QPUR}7nd+V{`<~>)OjPX=XMW)5VKdS zlbQHOEN@Fw^g9YQzdi^Gl9!o|#;P?qG*sV$`upBWLp8%rz=n@)+dLSFH)TlZ!z z_gNVlB}}961OeXv=A@N+>yIUh>~p9u;#jsU7qr%lY&5nFyQ9We{*yd#XC>rjCzBhu zboK87-(i!T_fI=9l0BQRd`^+N%pzSLX&2+7OG=l=6wu>b(q~^S(6?fG3-qk(i4v!I zZ!gkdhSVRK^h9yXk;GrCP&bj1pG7}uv%y=_kcf+ofw`?6 z;eUptw zOC`sv-r4-4%IDLM$Vqm%c3a#m@}3)C`UX-P{P5Lmg4%m#XCtX8Ge)4;yl$4=TQ4G2%Klvw zalK)8Hd6AyO#dams)y5%vu*c;Q9+Sf({602pG6EGTh-NErO&T0{=rW?QeOo7nSCTr2zUB|n~S4u(H^gr)hLAZ|9%Ovl7N!lrY3h61yF>4o=e zm|WX;=N=g!Z?SSPzN6qM=h%=*bKAdT0(tnvpZ>xo_q zcN%=_`xv)xrO~e~FPv_lbVM+R-pLXz>i3w6yKeXU0yXE3(ZZnAl;e;q%%d93yGBF) z5yefODwfvo0eK0F(kRZO^-^@??oF{)F&j@lUR0GWE3_w{nowb9_!>8z=v=3SZD`?h zFtu7NKK=K!WLXEcw!SDHt^oHUESQXj46N)Q?k{9aVkQesD#mD0!NG`E>}=Esp!a)u z5N%-`MA=_hTl|xSboXZBkf;pjLyovj>LvQ$l&LDp8~0!C>i&Fc%5}=jP37BVj;R9t zqdqnSlXn=CJML6@V_7zQFeZ70;Itl0=5`ya{1q15)yHP?E?(^@o}T*@mZYJnY4Hfa z2)mNILHF)`gO<>I;e&}U{Qf)8*#3gvST$kG0i3>6jLd(pU07LPR*AS;A<^jUo7mj@ zrlH<_%yIO|cQBcMLqCxuW&QE57GW!jYdUO$gM;hS|0;TvR#^9B1g>x%Z5wqeRN-Ki z`Kcc%volB`6N!V5)SB7HZzv5T);nuvuMN5hWF+s{%Fa_Rc5=e)cH~G;9RC93Q7xDe z)Cbmn_|hthFzH8$Xgh+2SATV-$W1;s3)|t8vKs-QV99++F`fpx`SXhJK7z4WdGLc` z7rZ9#=O$mTclw=P46Nskosrp_g!$?I_t!KhFu6{9S7*J6kZ0qqDcS3VIu#I=5@0A$v1kAQyKpA zNguTbFBGrV+jVha7+xdD2R;ORe!jt#&}O>@`Jla0n27v;-#`#|T}4Gjy*`;=yT$mr zYPyknPO6;(Z^@0;kltm|E$A74K<-RfF;3D4$!ch|0O`rjeZ^2XryHGBFz&J zKBiM{p~yRlOldu^!^S{nvuc-rHIFlo!joeEfB^DGi&QCn8N;!T>F7?1dvlrG)U$6*>0wM92WGui3@p6fOwP>QvcCbu%z8!6QjI>y(*FhB-tM<)ggl>;nF8aLliQT+6qW@C`wh^I1wcTLQi0(=rP zOT^DJXdIotr&th5sL;JZIq&gDjU!OUN9xPgoHPtK2#U&o2;EgtQCatjtj>eiW-k~1 zcchMuRlBB;=lBjwQIxHWUGQLHQ@)DNLb8nALU)=h$g>=lhSNPk8* zyZ2r~Mn*>UwHq7~<{naeLX{#dPBVG2S5)gW(I&yvN+9}okbQS*nMx#kU6S86#jphP z^!po$OE3hwq@)JaReP#xu1BFqX^((8T)X>e87pZ~50GYVik$lxxRb(hldhXz3rGClUd<2T-FA6gpUf?;j#f}~`;K0BCI=E!O1t~3 z)a**Iqc1vvZv7EE1Gm+1Z`w(K?qNgMp_q-YOw}%<<&~!omt%(m`_E<15c{0kOm7f6 zB{8cTlq)sY7o8s$bEz-AqNWoMmImLo^2Wy7)M{<=p$TABY9(Ww z!k(_ThIvt%Lwab-xKz+7DIwv8B6C$d($hoql&4)^LT+9|diYzP!eV=3UTAooz z{untg$5+W9SdH$kj`m-JpgGJd&Ms+$bHScGA98_J*mad_rO4JjFG3{Q^g>Ld@_Pel zMSA=J93HdEV(&~=@L7i5Yp(v8nXxP-xkG<+#NPnu$qhp`GDRk%pxpT(74Fl`r!U+~1Y$37efhK%P&Sx?Ayd6s-H^!8E4-A$e~Fgjhi)J#2$ z+;Z0gwjG8)o^W1QbWb*Mn5gxXm_YwlgYJp6zS%tp7+YRmo`{dKu}F&$JbL8I?~xo0 z{Q2@DJ!y&ygu4doS>>GKeLf`{e0BNZ7Dlv6`+wOuItKY4;W5RTLW`K~K23>AXPlKQ z<3U(hn8Y^vSmx$Mab)%s3E-C6W8Xn>;x>qN=ouc@GUCxrzwJ0&Y_WyEE_GDc&?F}+ zrGD16y%kbv5)pA?H}k?=@^|Xt5wBJNrB4!*5k8PBhVx>c9Q3jm>T5 z+74G1zEYzo;4qpG<`zg;UprgL_J?(mbn(Cs3b2&fd6SBhlXYJ0n6cHP%F{$ksy@%i z%4cqQU&UpS@p-@>AKYIMhKf(A`D}9Wo#E`ra%EhPHLJ9~EY~IEjcqw5Hv&I=Rlk`@ ze`1UZs+8eCtGMUFf%GU5Qv zs;9Nc!1LaRu!4r+%f?Q|nMXBfjE}UjS6jpxw|Ne6F*=)@)HVMp(wQLc)pU^DU;%Ac z&Y>oV=Y^SfQj!_iD;&FH(M-@SnQq$&6mFcGQe24Iyvv*)W1s4v1158jO|*jOC9a&8lg z1R7TAt<{_XY2$l`in?m3`JxGO7mQE2gbK7=Ts+6Yk(}$PoNDl#d!?13G#N%tlCmEI zwHiqra+$gvnm#8lg5+FY_B}}dG2R(V1;tQ+h}N6I=^+FjyH90Jw%^bkf^>^R(L9~| zog@`}nzS-hE5WtsRVW%s+3T7ON`WC|XQ zigoV{%M+|s+0!sGC?(w@=YPgt*`4s}sj~(uQapaU>N`NdCV^Lz0-WNj)vNS z?6whj#(C+sxc$~A5z#>LY5M6zYkB!rUsQTjlJOHC4)U>2isD11&21v5_cN?BLAkV% zY757s-qj`0qm%W{VA`XlXke@;Fd4_SOIs6_A z^p{|S5E{{R`JVZ%40~HPrm?Sw!TYj!Wq_hQ$~qWBtvjFA);c%Rq9(Y{d4gSiH2flJ zAxEWuoLyWh0pHeuEp_;F872BuSe*8-NI{hOMKHAx^=`*ARSlSo#_(@P7gP#hB3m+^ z9Y^w0z&q+ofX^8`$}2A34g3u#%avU~4;(-v;ww*)lv+57-FFogoXlh0WLT&C_B|B0diQNHw*ccNxiY`1ly47+&e zxK8@tdF;-#rL@7)$;3rRshu>0%fee>fD{>j=OnLdKPa`crvlgIzP<1|u<6$T*kVV^ zzc$h6-=7X3Be$Y&;be30IKF9Rq|91ExpAvo5y|rOl7;i0S#+FP2zOzMbEqnZ*=T_i zTCvZjC`~iys)o9bJ1y$l=SvA*R-X*3h8gJG_R2p+%q7FmA8(I0)yj35s?Qxjcrg}k za*+ShqO^0{8}!|610>Ht_a~d0y#fF8-ynXc%J`e=n+5(@<-2D4u`Hw>_#}@Nc8@$)@ZxYQ5bTz9P+s#FxlA>VhJ}KNO@vO0ii`WS7qs({ z{cs)U$7?;aqAtq!r3Y=QW8|VH9jg+oxC#T*%W&wLAY;}9_r380p1qYKv05w2n+F8_ zF9~bkE#9p>@|$+-Oe?w4Ku?rS;@$&r$RF^yJRy7$v^22im7ail=Qst5A}A);9?)HY zYj|w^{Ed9ewU8J!@Y;Oy@7*%yn$VAH|roVecG+-F~|e(h3HYQMCBHptb)VivGt zt4yR&dgk(p33EC6++4IDWwhJ%b+FUc2@~Uh6SnyH@rL!Q>Cp7WEfG=C z3IO{EbJcLi#^igohU1gL6 zK@xEPlSVk@MU87ZrVWn=@^sg|xRiowQ>H4Lo2_3yY`@b`RK;~7#oE8$xv;L2e-iF& zo>O|ets{ERLYD?*rmo#~OQEOTV^3pdYDmw7bjYXgCt7yv7~Z{!A^^`ixFU1aKgtISug>~MCaMI*KXIQD(rg> zprcwDp?3$EBpb0xX5yBz!3W;s7534v&*<&c?A*a+d(jAnOY$fB>DW3aG#a+-*v(pL zmp?_PGD`K9e|r-eeD8;mX;el+MR0xB6BYO$rOA1I(V#m0-qYWLiPFjO@Xt$fI}?B2 zb#mHRvm4fEb;@I0Z?{g;eGTB-`$n(+?+sR7%Eh$1zFr~artO;sipr)M6RJhN zk`}qRxcM;+(O_{*@F&r*wZ^jVaNY46+UStp(l5RA4UV^&icFahj`-IiqCC(M3vmZ4 zQiu4!V7`4*c56Wnd*!4R^V@tw_+0U2Z-w;-S%y8$4IA)v+I@Isp2V!keLO8@(xLQC z;<%+*cjsW*JDp%C9VO=ABh3<+D$J5em}(XtU7MEqRs%+5qy#qYk(NC20CTP7#H^sPrT_XR)a96#O*BkrzwVXV1sb2%S04WIiU;`!@p6Hm~% z)p2CoJrpf!5wI1zU>Y@t7U`fSrlu;h*wb-|aVc>baanP>ap<^`xQef+@n)9}p96^j zLepkCB4aZHk-7P}`qxNH347+U-cGxAVu_5gb)o6(n`591o2(z4Of6KS$MNGX;V$E@;I5Jb!%`4&n{kNv&3Ht@W&$E{GZFD| zy~I2xC?_?iF=rx&lyfoncCLADP;P2&W9|gU{_T#ij_{7x_0b4xfzFRDC9nXlx4Ymi z`0c3?v$!rB{8gGL(7*4-_p zJX@3>NQrZ!SNNa78`DwL0xr@$fUaMOzCBBszj@CHA+#WbUz}Fn7bJD}4Y6HfYj+ige916Z_RgkVOIYs zc^=FH99lf&GFV`^j>u|$z8zrbm#3)(*q>Yi--*TdXr$cs^fRi2GU@fb;P18cudOw) z`sa52{%5}e9`4ehpR<_eo?_PZ+^NTHiJNZ`QOzZBUfZLh1ffGA24NOqj%-GpN?Kq? zbVuyW{^y|l)cnSz^*)IW^!MzLpqUfFX=b=uVSAURu|F)35i2DOsn>f|E8`>i2 zdP*D4{%fT+s-b;A>P+#Ja`w)FoK4_z(8s6KbJ8R|41q5+EZ<_&qW!u(@mlE0^1Fa2 z1(s%zkG1k)BGd!=nHHrM3f)o6Ss2;{fnsFlTR6F>mIL?xCqfv`d@Y_Ved*axoSk?8*mM#wC`fUC@Je|yQ zIaW&Ms`LN6;a`lTOI>Tl*Fm4m`KojCnCqw*+(qp|;Iyb5l} zAOR6#6*==#T#$LUx8+mSy*sM~Zd zkXZhB6FiUq<&JK$hG@Se(@yyE&w=+t_S+-Y(b-+LS2G1o%~ck>M1B`!AG1Fo_f2$_ zC1`}Y6C*(dq88u6mtS05d@m~q)F4B>y;%1yr4H_c^db9C7vBrd30kYy$)qyE{bdK) z2^z0kO2Td!loYf|ah;D!U)r?3rBf#%Xgl}D^Cy+YOj3;AQB^Vw0#g3EjAKY*h{oXm zY|k%Gu`Ekfj$v?%umNW=2?^gwMO!9ZWT}fv-MxKUsQx>{bi-o9X07w;%p_1-R^;pF z*0ZTYtqwSwawUIINxs2Z16t-UY-HVGd^6=^4%gsDLAsIt{*Ix-ssGu6@nA3L?>Twq zc?du)KIwB>Uba7{DUD;qG2z}CEXS!cbX3edx5G^s{H#$2s^ZC#x{^Vsq1jW5e1ijF zQ35+xX_k~_%96io>Ca_fW}X;?STg6VMLC4J3u>o+EdSs23UA?4kMfI>?{glyxK`lo z?&7jtV@HoW*#yHe{W!Iou~~#D-gGOsf3Bf{9nMC8Gre~gvv{GlqeFv`)C@|ep|P=L z0!_YpWYS^~)PM8K^oIa%6L^Vkh2Q-T-T(WPnijsk$~Zn0$&-l3z+;Pwigs#p1aSB zeW8fZ&CsdP&Erp1{pAXOsKG5zcWE)~Rew?jCFN%CF}=Qhu$Z;mrzz>ld0JRCQF@2x zy4U}F(SG-q~K^LmuKg&n5==?!Az%JuyB5B5%R3tH4wiybC=Cn~F0 z*w{D`wW99R!PLRr!P0RiBD&Nw<*f=Y8~dJNXMtQk?0tk}*GaS_7xV4EB8+-r0S%QR zGgM(G;8(xOh}s`pw~6e>KYp-Bi>HBX4Hya@_@_bXs8}OL{nv;Wn=cTw&V1jkY6}_> zo|ms(-EhtiYLef1bLqzEi?^^!TaNuX`%q;>816>XI#l72oxHp}+_&X0_5Ksi_moK4 zKQFkr&BUr7g7Dt8o$bFOqaMk-`zXEwD38OSG&5| z-3*R)NZ$omYYdQ!<26NFab9{Z*R!q#cMv#go?|JWOz+K z?nD($EC=-8@vZ9?5qMYDNDL*aOcBa4O^MRD^yYqp6ebAmCqrkMwG#IIe!`o8AV0vy zyGOyqPv@Pzay5FhjIst`BA(EuGeLu)$1O!S2JFR}FKhLl{QlKkt#X4=9|KQXJGW;R zni2l@uW4(X2D-SYqQ2-nT>9Zm)4*~-GI{+$RQyz;b=|kfqNmOtm@zJNvXzZLBjsC1 z(abwoaiTO`?v(y#2J>S-A96{f9p5l9F-`hK+O_sMP1YA&kenHV{{HzPsN4=Fe>}^{>A?pgJ^o`H_`85wiu^c@AXYMS$^LkgXkd2FJ#f*z(zyRjJdNR4W4_AT4k_09 z_`xgy?}%xyxQ=5H9O8R5KwGVWWH!4?^Xl}|9s4A21w(Egdg~u95$PNL|0W2 zMTcn5B({_!K`Wj-YFOWFVpnG=|+!- z8JiHjNW|7w4~%c?Z1JPtv?xu@NX4XWRTyXTFvkIGl`vvQc%n}FA119YD5n&#wJDB!JHZh|1STO;`msfU4L^_UA04lbV|wQNj3cK9O#p+^I(N?Wd+a;a%5~u; z!rXKyd(R(bMXlj{yb>fru83|E%)bF|>Uxk;%-I$&_d!RgjH;gFLhd81OA&}74==fj zDvQGMuUKNONAT16FFGnu?2`&?=n-_eiZ@tDGnGE3a0O1&(*|RW`&;X7Y=(psYdW?o zyN=_d;jL)O{flbX)y^;TJfq5?vjX)7C)zrI<}p#1oj)bL()Qfv1W5}HRqCN{(w)39 zGVNITCKi-|c4#h+i7Ee5_uhz-q+~^Gi{wo9$o;PDQxL??vY}ZWA{)9hpueuD*7S{A z)}<79gfglh_IrphTs1YrvQ!fpixf;b1wy8Ac4Wl@U20W_k@J1ZyO$_wwQgBTzn=4Q zYWwVzCOsVmNQE^g`Tz-gp)~Yk-|UTpN$QRurypD1ZWwQ@>qU4W#8IT%=rId>p9Zwc zl(T>94S!kuBf>Q(bH?&VEK*;j=!edN$!(_?+!UY7jf1A*f&v5{YGNdN%tnr^g#vZZ z1R;hV<)mSwCBdq0bajVdCC~o{xEM-t4^}cSZ8S_2qA&nQjIB>LSR>C1%!gP3XHcS~ z?KbP)cn7MZ(92UNoJ^tk)kMsh0mf)|vK1Bj>b%M5(1QkUXb^sOl?!cU@HlkhhAsR< zo9H3c1|%3qe=PWrOh8IrzYYXN?}fp!Dra)~g^10D@yZ6V&%Ur>`e=!&f>(j0yOWO9 z^(wKLT%w@Bx(?o6U>Nl zv}cRNHxf+-O>t;*(W$AWKt(64d)1Gk*y()=F)-MsyP)Q#ALfCxxs?;$dZ5zY_(r*v zaas11h-IhOzUTtwg*L&pzweQ4b{1Y@(fE4V=bp%$Ki<$AI3JTWd}7`>5-pz<$hy@6 z^PIg;c&h(Hnf5UL0h&p>mV~|WCc*Jf`j6^_r6}xGuSm){^G>52scG zP%=l)ED-(#R`@CYvJ?LanJA5LV#16V~n?9DZf#H zCJl~ih;kO`{r*XR&kW0VQ|!bJ((^m8XTUwIHZIO-6xtYj9I6bua&}pq>8|POWc*l@1`9+-bgD)^%k$VRc@)hECy-$*u;WrQ-_ZbTO(A`C;NWaXrU$N?<^Q25qa00drRl_lPo6Kn+3eUafMI~V*SVH>;Pz(p7FubMb&pmn zO*8Ow!uI_+FT+5}W(dkIjVL^jF!#fIInEXMze26Q{rGB$`_>9C*BIpHsd*!(&^&ct z7de#7#7G)@Dhy6nq-2dmJz_t}8aw=s)|Rx6tAa#sZ`tKhq-I)2u=C)d2OR z^WjyyYjq+wy(R|}<`|0#?r}Eu*ic5Qt+(sz$3a+Xts*7Qn{55dRl!=7J`RBb2^5S( z8H;~RKG<33Kmz%2-A3;uO|KCbDLaW@Z`sL`v5rdL?T%O%Pn?A4g>*>#7eVTeBVUWH zy*|5_Qk`hr+~F6Ozur?pidBKvf0@vbIq&tG2DM=QUUT1s=Yivyz4KRn?phrA#>xZf zDVaW_j^|v-LClOx!W+{KU+mwaxiy|N~0^pCyO(RC1bCIN6lSdOld zPb$y!?y`hT7Xv|rY|SEy(3h{$YM1`WXf^cutmo6}%C2FkO(XmIQajkkXZL`?#NO{_ zSF#M6Y*SEz-&|qv)--zQefp2{WT4Yy7Cxm3lswRCBDbt8?2$1ep>D)y<;)i_&7yb-y;=aw!U!|J@De4nP`#sY9_YX|Bl;3mmUnF zf&zcJFD6cd38>;l?#=Kf`e}bmr$J@zv`x}+Aow;SZ`Km;r++LOD!nh5to<|M&P84J zDUs>PbGq{%OhaIZUDhm`IL&x%ob*$yLd+dG4j-nsbk7V&Y567VV0|U z(IK#2*#%@f7v*PA4qe%%m1s?JzxdF`QVe!M5AAiv>v4!xG66opb1GHp=jM;yr+3;f z=v%_w-W5*kM7B%=?5HhN)cktjQz^SicUBaa%XR|$P#<0~c4>O9cz8Zaa{z93hCF-Eunu63RC=e%Ous~q!wds9P09EjetVg2;_b{}tdw6iGfWfB8f?WE$jET~^L*pPN+uoR984aBIsF8qjy{M-;t(f0kRpJ5NSd z0Fhu1SyXf05)$;FllvDJxg!T>`lMnf?Mk)qtA5v>pv5#2rUKWsbfwabpX3>rJyl8k zpsp`QGb!&i|F%IPSM**))BL=h+;sVmL5OnsMFsDlxZ^mwtM4{T5oI~f?|$3;yHLoj zp@wyLb@f4wc#pnF$F)6*)D`T1LC2(!`fyCzRiyU=!2bQ|&t^~741g+Kzc{Q(5fUQ? z?0T~eLLqUX@!?nOajz$44c*dWS|m+_9wbKb0yArEm1VEp`b6D&VohOTVdv{FF|DUA zE&j^QKrVM5wRYg|G#=496;ox_;h?^GO*jI$mvIbj(VHcR(#;LvpC7%Jm8KLt#>W|W zl8K~eX6CE|BUhSfJ=EO3vir5J8ECBEBn01A15eH%-%0N(`yO6DO5Vb!tzF=j&s~-E zT{W&zX%IhSR@sA=90y|f54^zhFZ;m8X5rRLz#xu4)u}VuHnr9jg z*hAnOpWyE2Q%f`WA77tz%e~07C9gDSpl>*v@WciFh;)a5>qR-^{#28a*(Z5JIl6h! zo-!VB=E~=(bcykoC)r4t!Om9c*JGL$o6wOKZ8v7u8i%+ zX_)Ei#^UDZ>p5FLPo`^gJ10QY1mdkkRfTkfjD)NnKmNL;6CaorjCbxopYTlc8J45z zM$;Yf-`Om8n#|gx`3N4L|Y9EO{V2UG z_Qs0G=1a2?r^aXhK4au!>ZH+8&Bn(d|FY5@dqvHS#1-5Q z#Sm6QwKNLq{DoUtxdUI(Ml{4mA|Aa&_*_uXfjjY*Yb7SVMSDR|L-aV36@mHz4 zW+oK^u*VPDXV&2af~Dc$fc(R<7JB=xrV>CTMO)r^dIC`i%}hq^(LwV zUipNBXcXyNSJ?REs^XX)?mo>~b*tj&+nW)@v}2H~KR^$`8sN`ed-yv9JA^w#JH$IA zJ8mTHO%_h%1Jb>KP+(pV#D!#^bPYevQx5D&L{;_lIKVa*DNv8J-(If)+s=@g`)DYO z(xQ@!)_35w`agGMoEC6Liny3ANsN_u&al%5?|2u)9=Bn#up9#2ZqJTEUT5cremmCm zgk9HC*G(7shfuNk@YZ=-1tZ?YU=biPyuxeBSLSk&J^CS*hQ(jr0P6qJjyc*_Z1bMM ziYJJ4)K-Lg6vWk(|8AAO!oD=lUPNEbXwuBn)04Pjv}UBP{tMda`_)P!9$(7HTOQl& zu%qY&)I|V8VjKWP?Gz3e){!wo zTy@iTtnWynP>Ak_dHI)cv>1o0d%%V40zAh{o2>k>(CCSk)ZPIb5FxR(u!G zDz|=Ia|m~hInz*7XY1ukd143a*Wo-BanMl}&=XT4esi&cORzk?S=mS45UL7!{#Sp& zx)NKWwf{g~(7a7E1rf6ugNWVKEf?U@J<`DpEKk|L9>}?!Z=N4Cs$Zq@H%CuU3!PdJ zDVU>zjs9{_=5Z&pTQH#-@YH@LOF+hPEvaCXvvBIGROd1;2mW$m4~jCE5DS04j?Z%( zv|SQ;`J$HI)1fSEW1lZ@wQP5R7o*qaohbqvUU|6VsL?O65kByFz#x5wfmfX5OtpiUN#BLO z0J=&&QMJ3Xb7g~t$1T|m9;ulZpW7){(zKiGJmc6OTy?*ExfZmZt!ck2op0XCIWum0 zN=>jzf+;_&!FjkiucRcmsJOV>V)XIj%e@aUiOHNakeK9imFJ)1t4tff+QuT@Z@x$9 z-;%Ok(DK);)7;mTf9U_PPVBcshw}k36R4yd#U=y(`ap~v2##lpXNhOaYHD^cvl$xb z_?B;Zmsi*oC>G)(7N`4gUjoApe`<+qRn1b(qkiQ}e3nJc|K{2o*cP%AEfInl+7fA3 z75*>+R#QFagJxn@<%uxUP$qUU51;SJmmi_&RRf!++?>LIMBO*|<5;aG^JB7vUH^6? zB&M6%9$CZc@b{`1p~Im=w?n_fu*0asq{FPkqQk1=NryEf#dHv!vYCuX*-SyCZl)sA zHq#L4o0e9hqF==~cbtCk7$#qJmLP|y5rOzIV!JrC$Gjcb2Fhfhw(9Ny5D;=u1 zyhb}o?Oh7kG%4mqS!X)E2R&ukwm+le zbVD#wMUaAcdHvV1TwEfb z;I+fk2@mnly9!#S*(?hF-~_5}RV^lJL(;sLUmMLS3x>^G@!Wn^%56~`?3Cmr;UUBC z{eJo7pUcMiN_yOCf(K1{BSwo15E~8)=10|i(=@i?hHgTE`BH{PsBdrC-40AfwK$9O z^MA$9k$}W5F_*m@m-HGGx>t54(7C7|Z#j`H&!6dWMk5!tzn_Ls9Y@nFT+m`j`Llmd zF$~I$4w=RDt2B`3luH`~eSiNtCbH=#X5}CUMs0GsV<9sHvdBks2zdzf-LNxS#~Ar{ zD}N@i>w}&kvMQDj!n{3rnT47JxUbUi`$`*Ca1EG>f%fffz7W)N>3cm??``0E-NMJ4 ztPz)r-shb!mbnMoR2N}1s8bG?#CPs%CrkgrAG^+)jL^d9o0{@KAg4}+z#agb!xBx0 zDqrwl0%Wno<544fA@~|FRz`oK=JJ^GpnU`wy_I8?N>rq5)AuYmP>3q z8(KnwIf}hJk2)H`J&%XLP7COyuhMh^oJZz`G|7OTs+8+bUL2kTpPmDs7F%K5=6*y~ z09kefz&^4igmBdE*m)ocntYjQP^q9X=?5>6-~yMj6V0`5J`dFIX$}DHQ{`3Gy*UTa zfmU3D0RCaH-s^dGRv5{G8Q}XZ14EW7I$OY6;W2X;j2O6#R4cYTR8B#tzEHvE>@0eV zR@AbBmcNgx{UTMR50$_J#c5D4@(6k%c7*jwaK}d@LPLxVppUlt1nHzS@E1{w3?5LM z;E!#9h8Qy>vN=8>;Q$J*NB~!CgG@Xs)pOgL%D9O>fjq9Z?PMQru(ATG3+U=K22UOV z;baZCORA|&EITeVqwC)}tSW&s^pFiaUWNvB7IZYU?>KaW-faA_azIw35iNkTkc##p zPor8gt|mL1-?9HU`yI&=6ATP2=C8TI7x};!9U1S2QGg==2q?R^e3s)B52+>->Vtv9 zRdBS@vEO_#A4r&i&sVR5erq}B!7Arr5-$Y8%5t1?l?d?rk#9isEj4`M>29XnZT{MP z7ucmEBxz8L)V^*&jU1K(Rq@@FwoMo{McJau%KiYr1NnCst8)e*48$=9;BEy&tCN0Y zMC%LQ66wsI{!h?&Zn1bsCGvUsx4<4xTS$Hn=G(>>0{iap<80U`&~8qID%<_JY-Z}h z1c6+o4}sBjr6~@FQGmCV`U&vO@=eqM#c%CsLRU6&^FU``!(;Ca>>Uh)8VVG$pfSar zDhExCw&NTypM7n?_^iM& z3=vVFn8l`t9L{&8xOvuaswDQ(XLL31VgVdP@?r%v(lBqE0j>q_#NjtGpd8@E zjP@uh?t?BgOfKlFnZ0I;oi4YHRGeO3S()tl?-`s}aH`9Vtbzxb-`%Fl`{QT8yw8en zU;sG^H!%21;R8402!Y)*uk~mRE2c{2)b2LI6tM9$dY>kNHkWntad7TnG~hzE5LhUc z2%swhh15RO518X5fzGY2{u;Xf_X7nEdK+AhQ%+TQEogJB!a)BWCKvSI|2xZhq{(zw zfU|-U1+PPv21RcQ^c^M(MypS?43tPi_{R^{^19U%44baMk6N9hqpJRYzVZ*nqXj?c z@WH+p844{6D>g?5Tcxg9*z>pAXqmTY0nxC5DE}k`Wl+|Y z0xS6jmo00dU#cc*7OlU6DJ77+5_vXYf)*rN6nPcl>+3eL@Q?u2AQg4v&q*5cNf z|5djo4!Bw3d_*pZRP5Tk=MGgQ~rwgfkhC6cTeYNC=%ZKKkP^=gOZTw)aMdh_(g{|pQWZ}<&EBC0WiTr~-k z!I*&GPkIw!w)cCGfo^6c=3Q<&9?TQh#@RxOf z)MhlYoliia(z~{z&li2keex%!_>P>*aiG!2!^<1yRve5I+(X0TO`5pQubCFP)lY?E z-gr=(>b+eu)mAKJ^e)39r|2p4=nL{An=djH8xSobR0s4dl4(5AN=_*Co^Y0|9@zTp_kk|thl z9aQRWlkJngyL(B&-YH74+A%($ajVb<=!QOW*cweNe(yqT^3c1Jyd_>(3~{TelE=zP z#_2?Av9}Ss2EiMdz;8pS2!|=4%-e`dXZI}f`>bwmLfpv&M^=xJeCvvi9?l8a z1#Qtotem}y3`m&eokNidHV)8r%%O25siH}1%(a{RD4G=xp`Ejl=FhB@AH$cz;;8TP%V`}_az@%a7o`*V*yK6`w2 zUDxOOys!7`^?Z$+I7^F5RWuPqHLDT7{#%EONulk?mhYD)96OnC&FplNaLIQg31VF( zuP--=WJCP7`sjb3jLB){dQnlvfZtn|%r;^VBR!NkjoXk5wF z=D1kTGqP)H=6FNdu_=?+?}}|2qy-_BrX75;p5mzhothOE;K0gh4^Jk!kVO=^>Z3O;Z5Ll6KSf!tHDlgw(P=(Zkyw zYoo(<2=Dmio>Le^^zk#tOB<+^;&8v18HBZsUbJJJ!Cu{WER-u9*L~Og%Wvpe)F#A( zKeUme(w-UyvjHtuyY{L|z`VSVjekDYZ8 zQmE_?+)QI{Tej_tgunv`@tW3l;hXFu{rTfsm9^K%aB%k7FBQeSG}6AKPie{aF%WW& z*bSH7QO2|nYoUupNq$w+Ox<2fRTC$Uf!uWclU!*_n#jE49EYc52m}9KrYm5)zPf581ius z3HBewya^c)0wN)~tfXLh}p^v3nT>o!hMrpCS zx_(pEad`#Q7cUy6E;X-#Ef6=JeSy@ zd#D({0?X`Kv>7|HEequ(>3Rd2z|jxFQD%SzDwMt`xoMxq7?~=->aht8ARj`KdgU`% z8*F#|de`WkS49WDfv&8`^TNsXA+G2Ex|=HqF8aEIDF_5{Kyqt4k6iU{TqPR}`HK-^ zOvb}Zz26_7$)9(_cI$%Rm&NuTLM=WA+Dv-&s#jpVR@ReYaK_2{o{V!!ha2~_uT#S; z#Wm>ixVg%3&RB5DivqWcRAJJHy|6!4Bml_2FnC-zJXn)3J23q=Ff>5|*FK8hw%^EG zVvS*zsU=!OW5!MBd9Ev*@lRD$N}CXB08Uv*sp>YBqwvX%!64V-%(rgK z#qo*OMF)Ow_NMmohz~nB^uU5lKU_t_8KjnCi)FT{nb|G1mO>^(1cwu)kH+RXuB{PzrCLs?}GP{HTox#I7pe z{x3$dD4}pTa`I#G@*h8MoCqXs2`#|!T5_Wo2{GvHc&;}ep9(zEDGU+CLi1R;e8II~ zj%cpl%{?!#>Q<{tT^Q&W5JW5vBTy6~sww%LZ;|DFYKYM80ZZCzlnwUQ5kavKLzYLi zC+AqdyxY7mvRf4rVQn^!2#1ODNdx+4IvZC-K8p|b=p)0t>9g`NV+-Oy&(;bQPy~(S z9>>sCHfVyxq~$-4=^tKt#ynB8N7wg!JLx3$FD=${9<3;?mtTK5B+Gjr&~3XB(T@uFa*tG%l_?rmcC5fA%eBCJk#(V*@(~82v1;s- zj`Il1ClSQOh=IGW;wfW^y9jJD?pFxA(XQfh#t;#Q^{3C=TFTlPH*H~(W9KKPrfI*< zT9zLo4OgMjocm+VgRBHg(Ay-(sdB1b=jg!swR4w2;EjqBoQwB%{n|-FWczFVkP7UPR=ZRcmk3>eq)amB8*}gdJ&S{N6O)n zNwA}WJ@T;Ut2b(pMJ&m-edtMsNf?F}@tUr@$u)&iSYW)h>$#fn?u*Mlo%P|`Wtz{R zeAG<*+`fpnk;$}qjV;&tcD+>45jQM3o#SSEq*8bD^7IF^&hodBAKPRR((znYBjKLb zXkSApm4n&7DS#!0zU9K=C_B9S${OiIR#*5nTsun8oKNc?O1wGu(PyW%zfj?7j@7~2 zR*Yp3o1Kqa?MWW;GMl?VjuQX~D;uO&NY2KR$NglwpBQK+_Z(M=HAN=Y`!`Ky6&}U7 zYgWcYLE@xKxhq%s>7jGIqtcb;1SZD??a0MXu?|r$HR+hRjf&JeG?~!9F9m;xcfolY zi0hG&x62;Bbak%tOoE=Ump9jdMag0 zQF$&b(Ix5Qowl{_i3HVJX@%o_F1+#C(^I_ecsUOHWQV4e+XeDta^tti*B^f-pdEy_ zgIezoLa%%^usDZIStq?zUuE@_YCnJ`83lc~^R-FlL?(w?R^s#NJ(*%a#|dznPfs+m z-dV~^FGWX+X3i@NOp+FoIwV) zl3U8=!Iuvpt$>FJXEsHjLP7@OsnNGp#@La<&YZiQxu7MOOkWQeY&i<}jpYs?YZ_ zZ}U$KA$-{t?j71}nQ2JlD1{=UY@_W)>4uwm$$4i{)|P8smPU6FGKeaWEs|eyBL`h( z=U0cH*Kw}z9Xdo+3rvv{q^X!sm!dNnu(fGqOH#tN*ON9++r}q6s&yXY76s{g{3Yi7 zokYL(XbjWpuf1oJhF-)p;1`2u(m$G`VXS{1x2}D0*IV1VPxHMV`M4__q1pFi@xYnLItQXf7)P!5_F6)3`DFC$Xq?WWL6dxZYth9ex^Tw=Vs@PxGZ z@J4Dy$hf)k67ocqPLnz{Aic~a*B|BAQ?mGdPmyt02ZHF#2XR)4g$;^tl%|o}&bgc7 zr0%I~fUn@&h7WqoZdnbOc#u(aS=jw%*vc{*WAg}Scugh}dE!R@i#>!Ocau5G*f>$l z`p$Pzds8l2bL?)kQ=_C8P3du&e+ON?n0U5G*?~T>OeHditF@daPEd(H&!#9*dgiJ6 zK%2aD*zFOvw2N%*vAoVP=%~@m=-j8K>&5Zx5+rAgayC6^KeM{9ubmEtgX`oFjP`M_Hcx)9KEpBL>q{8Bd5&9`QeBvG4b^ zRyG8Tn~SC)s?&vYDlt*TkW6wC6@n#i#2ktg3D~}O_ohtgiI<^aPRazGo#VoqPQ>@p zHmA-)Z%T@^jKwpRRX2a!>r%C#7O4fa`r3#FLy3N9oHw?tWP0Y%UNyW?YyOK%_dN!- zQ1`_(sSs1PW}YGR%+aqPwx!Htah)xiTL)!`t&A7Tk-+x=@8X-sIMMMeq_l@jl5#k0 z#O3GC1^{)9O6%S71R+Ua;#euf3Y<$HLphYJAG0yb_jew3+R_fXY_n=qAZ+o_ehu$8 z$3p}hlJFmIP2Omvbw=7!Ds`|orWT8H%6I4+ znI@s>zdwgc}LM zWx5a3zeCDxFkf?1vdy0%U_r79K0Z@il80qGegSjzR}ZYimdyB5u%6IXajz-T-i!LC z0aPr?Mi(oE|C&muE_JBP=j;h#Y-tLw!KSHfmZWKHKquv?iBIq$-HvW)C$N+F-`MqH zgwlsq#M3Yt<_=5+E1l)fMK(Spg_*Z(NLOkvn-WYHY7|-Td4QWf<7G(bVfCh^{#j$v zqzue1qzJ^m9;pFP7X+i_7=?xYXt{-b8l`tm@&8QeD|&L20}jRS>R-}Lw%1!a-?GwS z%tCI#v~%rHGmB8ab4G3uZiG(JJ;sMhehn5q7qKE%X#`8WMJotVMEUX0^74!t-KJ3z zfEd)XiP$IzHh4ESL^CF8Zz>r(!UI;6{*7W!lPI!X&kL7HiCIA~n-ERvt8k}yI#(Cz zD!_H~pX;d>!R9siAg<_RSkuKSZ5i_2@kX!v5oc4B zioWGSyWwk@#tB(JXR!s42Ve1HtTR+AszX?lTA+-eECEwZm6Hw)MXi8tF^>$BAvz;E z#;_cfxV{tocKCUp+xIO(^_-_>LG!-FuES?I1|;~_?qb3}xg0E_INx$=j9@SFcyoED zkT}J^k;4s?BZX{K#J2dUV91WfUW1~`48n|5*`qX5?`)au47({r5__x3r!?(gvb>;; z`&Wf}j%K0PcB+{M&tbdXql1`OiWOEpz>MlH_(Mti3pcp1^Mymq4fb$ana>-WaCS7j2HWb@B-+4@P_1A^r4~>&+*CZy3<_S1d@)*3KS3N+1tD8YbYBAEcp|D zwJ<|{2i3IUGB(2lHhp&Joba?0W)3FHMVW3p`S9hX4&!RiP4eYpc@Uf?m{4i(bOq$D1J7hrWh0yZZFxyVil7N#~B^jRX}C#pSSW z@e_2WQSHxz)Bzcfl$p;!YDpRTR}NI|LSNMQW}O)x+K3U^a;O%u`1ULm7q|Qt7MH(# zqj&Dg+g$3xfTV0c1}sI#v~0Q59jZa=;g~JIrKgbq$4!|fe*f};vhOlE3OFnV^nLoj zV6r~Y8Rn_i|zs7>fW#y|@L66)3JPUff-ZLn-c3AUFXE z6e;{+fBWq3zdTpx;#?#%d9v2ZoMR4s$Ba}}mLm6G ze+dAJPy@P)nk*EpV(jrQ>I;^YgpvdrTGdB_TN7;5cRWWq9Tzk-Dwc;Ay1W`Q5)F;b zQ(j6!-P7Y)b-cfjFJgtObH6urH>+o%6)s~b5S<(nNODBV?0<^!O5vg zIN(m7yT$jannSl%j+^%7`_wXn7EO9l-=Y-M^=uChH+ie0!=Ct5=_l0eV6Lj#YMkEd z{;sWVD*Ls^(ZJBB=jY9pWn~;T*4CBDWY7pP3UEkV9OFHv7vlhKV9}rTaE5}syl&kE zzVh<&YLgzEtA4S&+y)gDl@u4mn2sVIQ!hauY8_~sK8(khR}4VX0bD_sZFpVnWvkzf zru)$n`{3Z9cfh+ZZ{o>Wm9k@9!}<*#6S=8CE4_oN+>CL_F2@gS#(8U)fddd!g9Jd{T#;5 zWX>o7fexVIT+yOtHXVfKMK^FPo+ZoQSE&*4n-sQ(){`zX~-qoRr)8n2B#?6u{+AlY=G&MC{XBhtx69pfw|Hze; zSf%0jpb0ycO)rWjZ8d*sza-~U?03>fO#$YzyubS^q=Grlbow%`gVdq(dC*H7ZoDya zLvl|Qxm!#~w?}IW(dz04Qt%%QnI*iwh#PVG@AY4>!Q|t*ZfXZGKdhTdzV$=z*%t!nSuRkJLhxFvLE9_ z9Is#N*)KJkaI&ncqAWq|@9)I+0JHwsPa-}S12>n)<%I=eC?N_w2vHR-6|R`VB`+fr z=5Kg+ciEvRAra{BFSjaj7=qf0eIFs`O*wWhu4Ke`ww|JVfH-8so=qkKmII39_^Ohf zTwBZkH^cXQTC3V^U-Rnkt}H$8px?*4C~Mv0k-#q<)M0sII~_#{cA4 zaKE#&6Sv&rG2C%?&iz;aO_s0@N~)HeEE5|ItNxSZA%D-Z@26IKG6Y=;zI^$vtKg0K zzneFEx}q0WuKuEwUrkRB#>rB(fqD}926AU2e@2ar_+Rcsr*c2x!t5e%!7rvY)Y7t_$^)MUs}&@HS$#rGnSGIr>A3|){#S+X7ix}PE#)u-I|T&7(_s%njd7!j)bb+FmJ%X#s&fp~E9 z(6Ld#Ukg97w4%s(cNQEOZBt+8FPmEk_TeOT#ZI%%`TTAPO+) zS4rFIuo9Uxw)r{~JSro>uz9XB$tC)6)MsU8E&gCIl2_YqUt?{4!=_f? zPLn;eD0yo}FMu{9JH4Z{pq)|Y*Z~>wzBq`>TN51GUKu|-stxMhTA5LO_Sr044r9#X z2T(psgX0ARFsug0LVOgv`;pg^#BhJo&rrv;-ml!XNhJ z+|jPk<${8yuG-;8Hszd2N#m{b$xLQ^g;U)2^GY|^j)5LG8Egyb1^i|ihx*^;Ep>8U zw;|l^4Sy>AR8M9fyv}Hw)zpR^eRONT_HCV61)oJYJen!%p|RzrI?#vUcnnu;~8$tA6df03?ID+a~+E2^k_7QNl$T2 zH8ocaBBW1er4I=o+ABQFwEeM1ZPz{L%FZ6XxD4*wD?Cy^FW)NOlm3WQt6G?G=Yjw@ z-@^Z#ZS)b)`9sKSM$=xD-ZQMx_sJzD`Iaxt{(zng+D+HvPsoVUvCdm)l-L!&OnI$L z5GFOv)mA=in*t_daZ*hvI9A=yWczebwc?)TF*q@nd8oy?+o)dDlM&pnH;z}&K%(Up zhmgVx6L#U!8N3e7Y|Sr451$=t%j{Hj8w-{#l!s)|uGW0!V7cy>3gZ=@D3wuuyWxW6YbJL}1F4dXYFJJTyK6#d+)3QGR^NY7HpCbtKCsgb~6zsS7? z>_-=t_|n!ha!;DTZBD`~vb?pUBHm z?DVl&iBXNSYja%u=8t#|$=teMvFGf$JD`tKMNsRYgcRi!ALh7=ou8{3RuUHH^{mpw zhqCFU`jvEe*HzPb!&#qo=tnX{vfSUlYb5bgc_+kgJ9Iz&3|pxGta;PcRN;?iisc4c zL;qmn+9h7SHJmcs8%gf=I;>o`PJv`Th7H|bFP!Mn6L#tIml8iX3RjEA`w{Ym`J+=w zR*DG=-)|BKCb%fKw{|A{6e7;k6fH6qW*cu6?#8((RKM# zge;G7Lh=l^@3gZQv-+%~NqfF^+&!E8qBMDkS!d4k=xb3Co3)Q~q6D0f_T|XzMa(=l zz7XV=)(K)d;r>-Yfme-X5P!CdOjHpM;C8727jMNqFVV|oT)kMYH&TTEA#e%3x(zz_ z7&wdOK)KZKz0^Gy@SQNyCuP58twmMgY<5ekn{Ju=xbp0`PBl?|E_E;YrvxLwED2jiPl`|xJ|{b={>fsvQAI4CiJYKNbnT`= zXxpBHiNTIf{YC=|h8Vkmm6I=!F^@NMj#BO#YVnI|ZLr%o*C%NTTw$sIITTiP^~Ads zrZUA^i97DNH*6qa=3ZPJ?KgElS+8~I_^WwO%L&<#^(p1oNaryL+8b!mAM>LGueg6^ z*FZNR`*yh$AW}Q2YFW36Heo`F^eX!AG8a|72WXn!J^2-<9u6w72TcIMRL5zBxl0{) zkxm5Onu7R(F{2_UFSPL)w(et^aJIJ5CnJg2P^`Xi2ce@Hzfx68pqujF0 z8&_@_48yYAo%fTO(ko>ZQZpe8ZMi>?i(W-Af?Hu-)6Mh!Sv57aC#WD-XO9a6!)D6j zudlsr>|%aTgAeFQ#^<0YqC4JQmO}V26uLyJA zpLbh#NI+$Ea_A-<1XF<4eiIuWQ@_NJBA5t(U zC+Bsci0>cAzinn%l--c+dGROD@1$Ap{+yV>o?iwb3rHEo%ICRW5S($;sh_fk>a{5=VMV?7?06lXr|# z@x*i~ue}wF>E6C?+gvPg4!fq!2fg2So3eyKCKEw6qH$mRnZ86JLeB%GC!h8%mdAER zHQ;6`)~q1bswT=gB_JEv`D~A9Y5gv{KtpZm>uruYW)J)GD_D`*S7RB%tl+LxEuq35kJgvlGPAqYO8f1rz zx8l{(QJ*sJ)<}K((JUp!3*Yo%zb1 z5R~FUVk)JZgdYxg^l9eBCPYkwVOAhb#^jNIcabam1VZh}XY?M{d{j;=<~WhR^Qnp9 z`%JmsR}p6GV_&@2#1P0vN7eP2X3g~&T@tB+3Pi_g?!pNm)EEhKvYOj4-(B1kPP z0mw))c@mH^tpeOtgmtbR*z;Z`Nnr)fJZ)$Px$!{hq|4iV^CRSTo2Pq$Vzp>W1=;d? z-PwO4pC>4hMK4n;fbg*Gzg1?y*8%EotZ)kp3-r~tNnmpeDus7-U+`h~2!w^1WMvsY z=>^tJ@IRF*Zg-hV9h{=nK4YGoYB@m(ZZU|aIz2;UkGA@?XNb4QVmEi^B3Db;fj55h z=`F_We(v8eP8p6Wew?0o!PXcMWv6jB6^;eF6N_<=kQiqk3Nq$Ks9*Sx@yxY!o8g>Dxi^+X{n^gU7@TT9oGwX$L|- zTw<=SqLOHfi9Bf`f$lqz#nBKeTU*=Tug4D=M?!=_`tMX&*7Kjri0cJ=CUw#a4AoMX z#^9#IIJEVU&+)D6ZmbMd!p?Mhgdy!}XU&~iwr6|y==b&4dRGB@ES8?B{UbWYJllWhZ_9dXB0lO;CWPa;Cq)}Y%IdJ%{wedd$Mv%k|I1~MgzW5N*zxi_D)QdEB;An3`dUjpm{NH+~L~P4D&YP-o`VGG16BdP$U!Mb+ z`ZpiyPR#-Vb#?Ut60zHy<6jT#M@L7;`S;G-jvG4xFqBKbkx?Z}xatDx9rP~<&_Tj; zM6r*`cY&9Oi>xT3mPiVg*+Jl5GSo51UFN8ZLAg^c9$gZBa)Jz3+q86zEV;b#okKiv z!vy_Xp}UG_;!l-!ioB#__Fv}Ksg_DeNcim%qB>S()?daMf!+g)j*fN<ZeZ6+1P$i z8jD%R=>-q&IgUm~M)C&S`ObF)bgcT}S$cMvUMvM3$wy)Rt0#ZZ+_+Say9F_G#Y~N08UD&&v9n?+z+%f1!wAodZ;xU8$r}C<66^ ziEZ+(nQtU&1iyYF6m>tL93+VOb=nOa#k3^+2&V=+FU`g|2S-OgZEl(yeT^N;Kfzz2 z1kw!zbX`4R!0B-tt#h>!uwROs{br=+^JJozOD3pI%=*L*QyKna$qpqUG{aD1u%oIW zeNW(tK`bgaL458VuG9qJZ8oLWhuu3Ca7U#QHnz42v9ZK36=o_B1nSa21b_s2 z19a*dI;J?Q9NL%mF!d5P=|M2OBm=yc_nqy1JVv+IZcX{vW8Z zxEa9;Ja`Nn{bt|c6C3E{V@#|$4U8n%S8SFuCY!|+l$2L(zo9yklEJOs=R*tROq*t* zrXj!$OgBNE+30r^#u!5H90_}ZA(x6OV68Zhpj-0yn39J0r|&Xu+#j9FRUV@9&2kY^ zsHpn`OGnR9#vK}X9omg@M=0>lBu&-D5Rd9GuP(RFp?#*$f^)$6eLW3Bc#mtq@bdL%hF8= zz;uF*;_wAp#@l*RSCs?=gwxW7k))6R6Ls7My`caI3XMXqvG)9Oj&QNUNLiL?6ei8? z2%rF`2gZKIsCtjdw~0f}2xMoIzTY0Dh1o#?cp)fZ{p8M}k6^cqNI3I2UYTau!DA|5 zeOS?7{QY1c)cXPdhXA3b`2SywagBxL3`PEV?H2eyL(Ib7WQ!V9S63I5lqjGGv|0Jq77BO8 zU0k?7aNcuX08I}n)!Y2NJNdxgFHPP*VCut#7cfpT#RqAH^s*2U5iJCxucJXsu?A5@ z)_i}a{GqxK^hD;MuGaB+JyT)u97RZzgMu&)&*$o3DG%+4i-URa?(VMtO`ybPhKSFM z(4$BelwzPvAOU4wLnuSSl)}1GR#cqKGe=pZuKJryA&q<39Z63!N+>h?uP)Jhgjkg` zDr2cckDS71uB+Hgh~Z~dI3<;^&sV&2Gl<2 zE5#fv)hpqjofQ^Us$LweaHf26408OVy3!HA9V6f{l#7XL9=veLy$8~ZirVa*$UiM= z(z$bvppOWB-QX}BSj{`Hs>-M*V4pO}sxoxUZKMlx4YZ@Bef0aP!l*@aru6(WC3z@j zfA-udv(@tiYFk=raaf|^{2OWF^$jZ_(Z}OR?&|LEwdmTMl}h$ZZuQE4dWpeOlIpDEH@CKjoX-umI1D*_E)OPFl2*hY8l%iyU2%p!7_fjxt(!bfom)l3a&i z^!9$b_HLU0k<&&l11eLcyYru(?@>JcJxG4IuHEdItL`cM)ALu@#lmg1cO4bar*IM& zDF!1~<>6_eV%=I`Txa`wVAlnZ7x;3`{$1i`>Aub@t60(PAVyOx`aGrmnL#zT3giO6 zm@k`${c?iR{wxflUVbFuAVu@wCE^+}Gj~j;KbvYh@IWSv!lbk}Rb2b^SUB9@&p#nh zN5CDigqgo2;v&`g^;@1|dwJ=;5r4%P-tEbqky(8;l2sbWLn4J9A~*V(&;Nx+B^Q+8 zCJ7LTi?tF?yXTqmNn4`7muMb09wb3CanyZc*2=DyO0U z$7SKW{*jiJX6gfkoj)R|U$Vb&lPu4Uk0-4rd!8UTF%Q-DOv@ga=k{XbrPHw6!swoKYT@J%4x?S#pT95g~nk;yP#=t8T{;*+}YBBmEMgI zJ4-n#%XPOc&sqB|w1LopkkTn9#~2_BGQxP-fQ3b^kpFu?u<}WgNUS#gLvlxC!}N zCN!BY;GipeiJKdSVpA|wVmYy5EQJGQmO04zH9kCe5-KI`XOO9kWzgo^M11_4G6EAo zyqU?!kL85HsLCkgII{X4{GRX<6BH_&0D=zKTlx@}RDYKS~w@o8a4)m09B=$(s<_#eO2bA29R0Z#M4m=47 ztUM?r(|YxC41JdFKsz_*KLJ=v*!%Z@0|n7upmEUa55#1Kq;GPxiiKPOF{;MqfW3(K ztL+A;LLpBYU;ML|r_RAmctc+nmMvoQa;r(OfItsbY!}eLlZpqw@cOsS{-ii#NZhNaR^k@6?h~Fp>>xa_8N9#G*jWaM zcA6e|;{S)4>g~5PK zaW>F5z|&DokVSAwSy2`~Df&klHqwc?xuPCk)RBgXo6_RqiR>Q5pbQGI%o>dZh?PR_ zT536lWv`Kqn5s;dJ%mKa-gU3&wJDh?DMnX4pey5D5bm(zr#RkjfN?<9-cTs;B}(Z1L7RAO{rt7=r$gZb@Y=iv<2YvYVZ z`K7wBL4wx10R|HAsp1>Uj(cEukspSGssr@Jf2|EblDLQt35q=a0l|P*2Ld3&JT!(y z@jM;R){XJMNVFcPcWh5wnHnLJKoE@Fp9Uv#k>&YAbq!*rI0duOl zs9pmBQg-5b=jWYoW;j=`c_`E{MXT~F$g^lX#VR>xLQ}B&`~00^GWYl}w=*QH@lCOE zpS?SxU(}!ztN4b8n7ZDKylmWi)sBo=V69-%|F6-?T}WY+$QyHNW`4uNX2hc;U!{Qr z&3grh+9F|pQRg!jo}2a#d{IiTmBkolREL8k{D*oNB@GXa*0RWe@P zlI{B`LuyZTU{IhHCPKrUrv61}|5|QfKgNxCE-y#V9g~!!A+lu7MVJxEQ$Q104g|}o zNn3xXc;%CaHA>~ib@7);9m@pkm_#b_Ow<+kAEUwl>-q3=?Z>4*#jsP$Pxp5mb7l`%CB|=$<;h+;wVH1xm zK!9oB`q_rDVvB#j=BNPZ%1t_lWHiq2A6Oba!V zT&Suv{*%eSUQ-eW;N)R~VLU2C{>#CO3WSVUE;?>Mx)S7xv>EoH@8@RQ@`O}EEZ1I0 zh$P*wz70YV6@u4Io|4^#ZLw*aO4sF~9|t0eCSn1OIU{ctS2A zCYt5Cg+1&*5~OqIVqhiF=_6<)nQyE<8Hh}uLD)0LMGoHBG6rXSPs^PkfU2jJnb-JX%FIaa;ijw{L zY=%!V^n`n;Hy^1}AW4aA%vsakTJLc_7$6m_2$4%9Q~Q7BMG}I!tq~X@emCHqq%%JB z6MH!BW}P2E!Xc>)ka}ZdQ+yG^_$GKlXad6-H?J3jNBp1-K&`;Xzz}QIkDG&utll9? zJUzT+!AwoLVfP7tK0G8P04B&o_5J^5l-j&UKZ0>Fr8N-{o-hILPf?!%e|tqQ z$AJr?ho+n)Lgna-J>Ub9orH=60zyqZ#=QkH@EOfj-oOI^;W<70g{YuOcZz`U+D$=P zLfgmmXa%OFW%pD3^yG2VWmtg!TA*(9l5%k+<+roV3fq!%!B4h|3T?gml{_K|dQBqj z@o0M@4f2on)x|m((Ybjykun+@<*&u+wT-k7clzn<2JUpQi{9vW*_Tnthqpy&Zw|#0VN+E%kymod0X*CeF>sRM+ z_xw)?8*uVZkCem;;o-u8P5z5sJ#x@mi}PNr^Ft8Hh^VTRqMuB-a#|Y8gZxs$`M85- z?a`b`X2oxo#J*yYi6w2iw*<8Xg&5)n)HagS8&?fcI90v6R`@43efa;DRx_ONNTaEK zCPm=^vy4ghi{}9Q<#m+>shj*>a>m z&Kb3mgPxCd58N4EcWnVz;s>d2m`pD1XW{P_>!aYd+Gl(oPT1CIy0_=><&93Kb*`>u zbn7?q`o>rRNPU#r3WuX((ZfJx5q03V0N8DUbV|MZp&;ky&=wYmat5!$YxQIP#Q|(WEc}e#qufP_Y=D)7INY*R}eV z{zVtV*xOa}c05gGaB^zu^ODli#4o143agzCGt4a?E(#m?@$e=tlv+WPOP@!J3FzvY zH6))34gOZ#VK83fft+V~X?+IaJ6F~mJ>?Sm{$AIn6r3+S+8E`c_z3gtH@NcYOnq=G zZ0cnsC16z2NTSr*ECE^GLY6!H^q5&#u3jfMIL;})ntmk01;m!de|>$aXvEYV(pp`H z01{m-vddy)8TfKYtWID_^}Foy1?Z!fQQtDz+xqaAa^cU_29oxFjQ{c+_)1EIt^6_y zle9A72_|2k2cVZ^>!vnRw-jio2WFM6BD5m{NyANn>WCI8g}+?w^fwwD8lttZf!$uY zKR)<7vH)71(mR2Z)jeVfM+T#nv%^1u1ZmAmGxMQa*NT2Rl?{Drl}MZebLK>o9c;c>8fb#%Z}VAH8(BV zw8t>1mO|5miedeI>eRi>ZX4m{`Zba#cVD3QGNol@TU{Y2v$`}iG&`DA8?3RBQy@#@ z4qu&*V&Kj(ma29dqsDg$KY#B26b3x#8QjJ8U@^(c$wd$n6Cd2EeihPbbXjFr1B*2@ z;^X1<_JbtjKJ!9Ih}n%nGBMBh`oFCPt)4VB0t?;S2mDXOMV?C)EXD>7xGf1_9X4(A zJ~4H~z{ArB1bp@n`!K@%h6bJOk<2109!5sF-$zS!PSi9s=x`S-D-0p&kEi+~=&`-q zAF%V)dvmQTWcE4Ww7uYC^?|V^B?@Bqr&6#NJa(hWv~qF!Mu2nIfeUR#q4^me3;a$x zioh%!9BOeC!nVNFdD=aIRCLS`lDq4ZFQh!SyE|FJ-j${-K)BPykU|$s+yz-8Jwg0% zP|C?UK(uP3r?(gkRer%m10ZTVASNSEXqOGd(@MPH9N7 zc`hL#AxLwxend)%R?#4^*;{*4MQ~emCl4n~#UtVfC*0@`!#H2C1MgJ_k1hv5R~Lau z=*-Pd9rgnYFr$jQg_q^+XMNq7-^T`|PZ4I=@RcHVcqU)Vi#S!M7`x5s2?Y zXB+)CqgjGNA-+N<~HGd_96{zna@)TUpS3GZMay_<(^}L1bu41nl%zC z|9F4a|390FMFyT^vDo3)WNl}6P+j|fF&J3_Df9`{qvaN@LY2(I9z_d_T;q113An!b zLDXTpg8x@j!DdnV!k+TiUuzBJ%f)-T_I&p#C@65>o1_OsnD_xiwb6WJBe_old#klRg%HZJO<$<(8t+j%+N|9M0OsCO#h3qZ%-8J-)EjBjR zmmDua3rNGP5E?L2Qc@ByZZh~B=?Kvcj5+}AJQ8Lg8h{r>so-0zvx{$s{a*52^8P@qGANq{_6o*ozy0LXB=qbu(2#(lz z|HF2s%b=c_KYcuvcw-~>>h)?Mm4W{)a1v6n$Y0Z`uo2+JvIAR%)arXxnw*?0%{~se z!HIm!<-)2ewf+5lnxwgo$A`Pg@o{q}3W}qnquO^1+_0NhEP9p6z)K$pqkw(%$;ipc zLCpH6OSHVE`lpK2Dk?U1cEEwN`N^)z0*xOowqyTf$Q0X1g1-`*ebf-&fxC#|bROUc zDB1vOZ0rKo@0-TXJ{tIVx7vGhZDfQ$ge74i@&q5RgW@2O^gFDKl3wNL&>rXa;z*r){9EsmLInD5)-mC$R+T^cSB{ebKYZqGl`hLJf zS^m%Y5Ql+?At16QZus43I*%L};pc}P3PGRKoQADGK3*iJ7ubOe-rUs4Jg<|kUuLac z^QWrx03x!_PEXTO1>EF{;pHrB{79gkOdqj{Ba9#eUH|k` z1LLX_{DMfmpHIHuq`+kQX)B5D@Y*d-lIPqW*!*)4?CyH#Gbs;EZhk>Q@8bDz zy!bm8NU6DiBsyZq%geywYlO zl;GR>XFF4VibPiaXt804h+qqDPk*1~=6}87oq+eo{y0t0qtI^lsbVN_@)QFCIs*c0 zYiloE2h0Ng^e!qoe*^t;0#=3>A;XuGm6S2!@ecYJqkR8+bASNGaTP)E7C71gP*dMM zdV{w26`tPSMn-Q%xF9~jhT^>yh?<+79XzOlR;r=b*^Q+FwTh9^K-B2y=nuu|SNgkW z@Cc$yhVxIT@{HLgjOfwXFKAL2F%RN^MN#ohp>;FI4XJ1eUyRF z3fDfF=8#r{6XFAS@fT6t*oU-*4-eN+B^4DcIptXDa6%Vg=M>$43yQkCyI;05W=&b$ ze--(l`JCOjIFKXD&-M@)3+ShTzYm-he&PLcgSyQn7idFcVkYFAwKM9!HB;Ce{VEKb zP5(0%_(0%s^fk9WMHPfbVEN^5PQ&~1NOX3TaCVON$O~Chw7b_(>#ZncXJ&DcncwAS zeE^wpp5&l8nAC5e0>j{19;6EnFf}W?s_O^5A$?GpUe#}-8t=Wy0{8W9WXFTkFtz3n znkz4o&7t_9jP4f-{b=5b1@+ek-Y*l30tP6;VkEe$SViH!rYQ5r_83^)n!q4WQt`SA zD7*r7qit=A$JE0&pI<{e3i-PBvZ-z4fnB%SJY1;LG&X*L#t1wx^A5*0BUB8L4Cq}7i{8HBcm2My z7DnxeG5N}y{)5)=x#d3#1fIfadBd6=}$nS=3b=LXYYhEEb7 zB{Krbvld5BU$2yF(k(QbtcV|ly&I^CZiV7Ilq9#8jK$GA>J}j7bCCE`qv>ucY}2*> zL`xK-SNnMN)iU06JtkJIBQ8gKbP$t@$J8j-Oo+-**nl|L&IWYtjO6M*Iy5u|Jvlsl zx6tX|cK>j9GCMmRigs}tkQTgt38WmYslB7I)HXlH(2Ai=`+o!zpd&w4T`vP}$SViq zA3tzX7ql3WDS6nOON*GcTK9b{&lNY?z8If3WLgk-ef8&xFV^G;7jTFXhpSLCv75E0 zuw2+2^npGA8mK%wMam4hd`+~Mq#w{zm!wrJre^YOiq6rw0co698(vG|aZX1qD);26 zrI98I(yL6`Y45|H=rGf*g$nSzO!$$1t&~(Bm9DA2R7_bWi*4K$4nndmD(fHCWE}hC z9E@H};F&6PRycC0)a1o|q;ox{em!QYPav4u&Ll8FtZ=H~L-k>rAw{55LGV|Z*4V`I ztA|NfEnVBUMs&rYYJ=(fX;bt?(;Tslu*v9CUM_YAc%yK}N5T4Xf&sfJET! zUeWFKBjBco!m-Hd2o+taP>8#%L-kqEP9m7>pLH*bi$C7i{p@$5?w#1#w8$r1cky-T z)SlZoQGku4M2IuOG7Rood&LQYEZ0_TZCkGR--RXDN9`r-yenrL2dAS|&Hbn&P0aFd z?5Ce^NslURLJ5ABPUMK~5 zb-D2Jp~VN^LNYoAN{={ig$lO4mU@@7IGq?p-|Q-AF?QzJvXJTD*~o~Ry72rSO5Mjk zc($P!YrS+_6(88@iw#RE$TzH=ZtAR^Jr!GNSXiIKO=0NnPh{gWSqJwpZlNW%)jfuK zI~6nw%>T^ivOkV0>gX^@Wixu-!kOQ)F_^;QOJqA77!n-7mKK6+v()J1yKO``-F-M; zBSrifp-1Kga-h{KFE6iJ$2oQrPGbrc)mLdBj{!eBi%c+;yN6~2RA;T`#ePy!A?!DI zBCczn*impOr)h`OT@$)Kx4n{!dokhBmyx6L4-s3!W!(}4Ff@@_YRXcVl8!wOHI#yw;R36hj8%(fn%~agm)cH{0`})|*WcUh=$7wCBy-MZdOS8Vo3TR70hBTq*|Z zN#}J*EnI6f$=`qyqS;Mqw%mZAMCBWu{|*0)VtY<-Fd5_hK{V*sr3ZfegR!+jY^9Di zc*=eHTk+lelShQ@IzrJO9Q!=mmvuxJUhp76^QDJ>8c4Ow0@aJuz?IPT-&a`gb$tWY zL6%f21fcyEgZ<3Z*3&uf>pR(J+eRu~b9BK*r)IsSo!zH6p&3^2EdWA!2N=ntk#`KHjL0eT)gllNA*eZ8g`mwIgd)%+*PFk{Gh503aQU!l7C20llQ`KxOnhD|`86Y|dU)>AHUWMaB$C199oglkP*_O)agk2QB8=QP}JJIN#f*WP#|f zVxth8G+;H0N&vVH9gtf(~P}mI}o!U zs!0O?=w{cc=Ad|S=>!YzwGSsm0kid2StJAT^#f|>*F26O(ts#}%f$xAEB>hoLa18w zUa=kfZ;L|OBal?$RTP&L^HK#E3y5k~9SzjmQ4M-z7;eTgllDST?0%T+nN9KCnCMH< zNhZFj>Bpj(;zz7eHfm&liE2*jfRo4j9dWNfjI8>63p~<@OI3 zpS(cJgqm3as*5a~{fd>^;Dc3*!R6Ka*j}e&K@)~Oj?K`_uoq#3J76}z5cg4Lu8Ya! zb|gN^Pwe47<`F;)IB^Rg5NYq?7g%mm=$>UUHRyx{g~txY7${I-17-BAzrUn0v2iN% zs!{!1-2J+T`YF-V2w0zJjjV(FG>mvwp7z+xh)&SH44fA?w@*jD7-QAtksL+U?>^6A zQ#Y=i!emoaVfSI4LF}_;_vr{aX3KZZF&`;*iqPcjr-@Z@f>!Kt2Yt(Z#0I z?lGF;zXN#J$BUkUiJzVX4jPPFJPJe%pEES*0`6$Ux4-)|o0L{WO>kOhYnZfM&O;6Q zgli)l6lkbZKrF#^{ApHiyeT9=jfv|^he#~HSo$h29;BZ zW)LT-J@H}p7h_i^IB;yi7nLm_K7{BVE63w)sq$&KYJ;k9d>b3&8wi|)n1s14ui=y# zdK?o4{RLEkPuUHd$Ja9%#Fp)8zKIZ5 za_Zm6TR1s6)!I+c!0x(-OY}+bJyN9~P4h9fiMoEI)ufGc7<|@~&zMc}Bpx!-E_BhP7jGgtz1Mo1DL9LuuAYGwN!^*rCG?kco5v)?G;v_!% z-*6d=6)*sn<2367V3;AiI*MASdc29qUPxuU$<0;3V$s>~_XB{q&AKtMDXj%LD6}x` zQ{-K)0=9|=@9qDDu-Nx1XLW>r%F9{(4u>$+Z~;)~)~?)L33jv!6|Ys~E37hWe3x!| z%5e+h?F}X1?Z`!o>wEsM_Dcw-zpqJTzlF?ml)`b05pe;H95@I(c9TBH`GJhV$nRo= z|H|(isD+iT#cQB06TlQ%o)eq0QC$~4a2?+RAIRls~cJ`9_XTAS)WI{(olKB34Q{s(;x&%oS$_Rx% zgZOQpv92zIOUG4ez>Dd2^B)yoIL6u7*b)}$Jjwd3z4aknw_b8z090_#keD|;LHNHy z7rjgKL7)Gb3h&KY{+i`yL%brT)t(R(oJ}C~KV_c;>cTmm(qC>9FX{m#PEBPe?#g34 zIb`E;Y4u^YDxF1_t3gq~EpEtAo|o>w&%r$_T(*wY^I5E0|VWml%?aGh|r}zL+zFrv$3C!~U^pTo-wP2>^$+eEuplXj! zdkvsD7U{iyVStq@RnBt#23JX zu<Jk?Zc56d4*B*>nXX-+tia zGLeu7Is|f^Z)eiPye7G5j;wJ}aLc>~XoG~9Tw2n_d5xzQ4oKC%*q@hpw84?m#ib>b zEKl6};rhF(j^7!_p2B22b$QRMe;+Q~x=m1_oDgigMFj+CDLdh0l#bI$4@6M+-T}+` zBh0l+28>OhJideEujaabO@}`Wg4+ zzhh!!JGvHuA7)+^H$<7dX@KnDeL@lzG9gfm{0*5n-;>i2CI5XQ;`6

djr3CK56y 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 B)Oi2^ literal 0 HcmV?d00001 diff --git a/notes/pics/ac929ea3-daca-40ec-9e95-4b2fa6678243.png b/notes/pics/ac929ea3-daca-40ec-9e95-4b2fa6678243.png new file mode 100644 index 0000000000000000000000000000000000000000..a9361a1eeca55697da5e599c58b6676b77ea17eb GIT binary patch literal 14270 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 MqOA;9d>i_|0Cn2rGXMYp literal 0 HcmV?d00001 diff --git a/notes/数据库系统原理.md b/notes/数据库系统原理.md index 8349c645..b02b078c 100644 --- a/notes/数据库系统原理.md +++ b/notes/数据库系统原理.md @@ -130,7 +130,6 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 在选择封锁粒度时,需要在锁开销和并发程度之间做一个权衡。 -


## 封锁类型 @@ -148,8 +147,8 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 | - | X | S | | :--: | :--: | :--: | -|X|×|×| -|S|×|√| +| **X** |×|×| +| **S** |×|√| ### 2. 意向锁 @@ -168,10 +167,10 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 | - | X | IX | S | IS | | :--: | :--: | :--: | :--: | :--: | -|X |× |× |× | ×| -|IX |× |√ |× | √| -|S |× |× |√ | √| -|IS |× |√ |√ | √| +| **X** |× |× |× | ×| +| **IX** |× |√ |× | √| +| **S** |× |× |√ | √| +| **IS** |× |√ |√ | √| 解释如下: @@ -292,14 +291,16 @@ SELECT ... FOR UPDATE; 强制事务串行执行。 +需要加锁实现,而其它隔离级别通常不需要。 + ---- -| 隔离级别 | 脏读 | 不可重复读 | 幻影读 | 加锁读 | -| :---: | :---: | :---:| :---: | :---: | -| 未提交读 | √ | √ | √ | × | -| 提交读 | × | √ | √ | × | -| 可重复读 | × | × | √ | × | -| 可串行化 | × | × | × | √ | +| 隔离级别 | 脏读 | 不可重复读 | 幻影读 | +| :---: | :---: | :---:| :---: | +| 未提交读 | √ | √ | √ | +| 提交读 | × | √ | √ | +| 可重复读 | × | × | √ | +| 可串行化 | × | × | × | # 五、多版本并发控制 @@ -327,7 +328,7 @@ MVCC 使用到的快照存储在 Undo 日志中,该日志通过回滚指针把 以下实现过程针对可重复读隔离级别。 -当开始新一个事务时,该事务的版本号肯定会大于当前所有数据行快照的创建版本号,理解这一点很关键。 +当开始一个事务时,该事务的版本号肯定大于当前所有数据行快照的创建版本号,理解这一点很关键。数据行快照的创建版本号是创建数据行快照时的系统版本号,系统版本号随着创建事务而递增,因此新创建一个事务时,这个事务的系统版本号比之前的系统版本号都大,也就是比所有数据行快照的创建版本号都大。 ### 1. SELECT @@ -373,7 +374,7 @@ delete; Next-Key Locks 是 MySQL 的 InnoDB 存储引擎的一种锁实现。 -MVCC 不能解决幻读的问题,Next-Key Locks 就是为了解决这个问题而存在的。在可重复读(REPEATABLE READ)隔离级别下,使用 MVCC + Next-Key Locks 可以解决幻读问题。 +MVCC 不能解决幻影读问题,Next-Key Locks 就是为了解决这个问题而存在的。在可重复读(REPEATABLE READ)隔离级别下,使用 MVCC + Next-Key Locks 可以解决幻读问题。 ## Record Locks @@ -394,11 +395,11 @@ SELECT c FROM t WHERE c BETWEEN 10 and 20 FOR UPDATE; 它是 Record Locks 和 Gap Locks 的结合,不仅锁定一个记录上的索引,也锁定索引之间的间隙。例如一个索引包含以下值:10, 11, 13, and 20,那么就需要锁定以下区间: ```sql -(negative infinity, 10] +(-∞, 10] (10, 11] (11, 13] (13, 20] -(20, positive infinity) +(20, +∞) ``` # 七、关系数据库设计理论 @@ -415,7 +416,7 @@ SELECT c FROM t WHERE c BETWEEN 10 and 20 FOR UPDATE; ## 异常 -以下的学生课程关系的函数依赖为 Sno, Cname -> Sname, Sdept, Mname, Grade,键码为 {Sno, Cname}。也就是说,确定学生和课程之后,就能确定其它信息。 +以下的学生课程关系的函数依赖为 {Sno, Cname} -> {Sname, Sdept, Mname, Grade},键码为 {Sno, Cname}。也就是说,确定学生和课程之后,就能确定其它信息。 | Sno | Sname | Sdept | Mname | Cname | Grade | | :---: | :---: | :---: | :---: | :---: |:---:| @@ -437,8 +438,6 @@ SELECT c FROM t WHERE c BETWEEN 10 and 20 FOR UPDATE; 高级别范式的依赖于低级别的范式,1NF 是最低级别的范式。 -

- ### 1. 第一范式 (1NF) 属性不可分。 @@ -537,7 +536,7 @@ Entity-Relationship,有三个组成部分:实体、属性、联系。 下图的 Course 和 Student 是一对多的关系。 -

+

## 表示出现多次的关系 @@ -545,23 +544,19 @@ Entity-Relationship,有三个组成部分:实体、属性、联系。 下图表示一个课程的先修关系,先修关系出现两个 Course 实体,第一个是先修课程,后一个是后修课程,因此需要用两条线来表示这种关系。 -

+

## 联系的多向性 虽然老师可以开设多门课,并且可以教授多名学生,但是对于特定的学生和课程,只有一个老师教授,这就构成了一个三元联系。 -

- -一般只使用二元联系,可以把多元联系转换为二元联系。 - -

+

## 表示子类 用一个三角形和两条线来连接类和子类,与子类有关的属性和联系都连到子类上,而与父类和子类都有关的连到父类上。 -

+

# 参考资料