From 51a62a559c7a25d36716331b33ac2e56546bcc02 Mon Sep 17 00:00:00 2001 From: stair <123031771+stair-aws@users.noreply.github.com> Date: Fri, 10 Nov 2023 14:56:15 -0500 Subject: [PATCH] Added doc for leases and the lease lifecycle. (#1218) * Added doc for leases and the lease lifecycle. * Documentation: addressed comments for leases. + minor code cleanup * Documentation: language review. + decomposed shard sync UML into two separate diagrams (initialization, loop) * Documentation: language review touch-ups. --- .../amazon/kinesis/leases/ShardDetector.java | 2 +- .../exceptions/LeasePendingDeletion.java | 13 +- .../lease-shard-sync-initialization.png | Bin 0 -> 28962 bytes docs/images/lease-shard-sync-loop.png | Bin 0 -> 71638 bytes docs/images/lease-taking.png | Bin 0 -> 37431 bytes docs/images/leases-and-operations.png | Bin 0 -> 27777 bytes docs/lease-lifecycle.md | 185 ++++++++++++++++++ .../lease-shard-sync-initialization.puml | 23 +++ docs/plantuml/lease-shard-sync-loop.puml | 52 +++++ docs/plantuml/lease-taking.puml | 33 ++++ docs/plantuml/leases-and-operations.puml | 35 ++++ 11 files changed, 336 insertions(+), 7 deletions(-) create mode 100644 docs/images/lease-shard-sync-initialization.png create mode 100644 docs/images/lease-shard-sync-loop.png create mode 100644 docs/images/lease-taking.png create mode 100644 docs/images/leases-and-operations.png create mode 100644 docs/lease-lifecycle.md create mode 100644 docs/plantuml/lease-shard-sync-initialization.puml create mode 100644 docs/plantuml/lease-shard-sync-loop.puml create mode 100644 docs/plantuml/lease-taking.puml create mode 100644 docs/plantuml/leases-and-operations.puml diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ShardDetector.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ShardDetector.java index 32514eb5..81154c03 100644 --- a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ShardDetector.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ShardDetector.java @@ -59,7 +59,7 @@ public interface ShardDetector { /** * List shards with shard filter. * - * @param ShardFilter + * @param shardFilter * @return Shards */ default List listShardsWithFilter(ShardFilter shardFilter) { diff --git a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/exceptions/LeasePendingDeletion.java b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/exceptions/LeasePendingDeletion.java index 2d3d0c2f..ab81d7ce 100644 --- a/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/exceptions/LeasePendingDeletion.java +++ b/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/exceptions/LeasePendingDeletion.java @@ -32,17 +32,18 @@ import java.util.stream.Collectors; * Helper class for cleaning up leases. */ @Accessors(fluent = true) +@EqualsAndHashCode @Value -@EqualsAndHashCode(exclude = {"queueEntryTime"}) public class LeasePendingDeletion { - private final StreamIdentifier streamIdentifier; - private final Lease lease; - private final ShardInfo shardInfo; - private final ShardDetector shardDetector; + + StreamIdentifier streamIdentifier; + Lease lease; + ShardInfo shardInfo; + ShardDetector shardDetector; /** * Discovers the child shards for this lease. - * @return + * * @throws InterruptedException * @throws ExecutionException * @throws TimeoutException diff --git a/docs/images/lease-shard-sync-initialization.png b/docs/images/lease-shard-sync-initialization.png new file mode 100644 index 0000000000000000000000000000000000000000..7f524efab1b01514d11bb4352fc60adb37a2f90a GIT binary patch literal 28962 zcma&Oby$>Z*FHQJ7K#OkD5#{=CAAP`5SrT$VzAohAA z5W8{??1py`ev0bw-%E~nH60CYY~3u;#*PR{v^CoPp(EPpyn)+!Q%6VJ8%U(B`P2jx=Zt(#3u%l#(%%Yz6rY@xW|7C+2v(U1BbjL3sMH94V1D~zgM z=qF~!<5RCkh~%1cie&B;{1y1*cqMIB>G81hu05Rhg*9n5-})M!jJ#&cucR)LZRLNc z^x1+vQZm<$Dk7 z`fiR<@?^)HUE>ne6MTeqn;i zkGz2z=G>Y$i+y4^Rds|$vMQYQrA^}f(ib+-!}oJpa~IHQM`l&N?CaHt`Vpn0k;nSJa zZOzAfKVIbAdzRJwG@T#s`D4XjP8`@K zhRS$qIk)g86=hGSy9?(Xru^bV+DG|cGLrIN1aap*DHP@Ro8+C{A3~tK`17&z7|I_0 zua6sN^PT;*c( z{iJ&{-^vO;Vk(%uH}X(bUio}BHgm6Dy-G{)A`fkEl{lm#EABcik<=cky*en{973?J zd_e2`{r#h7M;Q6E@;@7RYH3ARRaN0|HfCmKyb7p{jEwxX{WMI;(fcSj+kY-UHa1qr zx~#gX$%;%OPJTgot&QeZ%$7?_R+F6@qIex#T!b}WFD4@e?&e@Fe51uGsf6BX3Au2` z)6{y=Z*T}YUnaU}t|9tS^K@pc( z9$wzaY8h;y!+5j8D?;O`NYY(${;vjPm8+|(=+^3R7qin;m;9y90hb{?|90%^=A8G? zyN93J(-hm=cEj?$-zM^IlG+s?J$lrJ(yesObAH@gVA8Pn;lqc{6-q~!W|9@zPbS=O zs-NBM@9)1o?!A>J9nQYBwS~hk_Z3-mcN`S58T?k|z5V_B10)j1r&pehsv2}(4hstl zWswxJ=*srmB-gKg@}uEkV-qy*kfOV0@cDoi!LBaQzubG zcc#NL`qKFeI#kN>q1H1#7|7F2x24F2b0}I55%6avwVqRN3^Q+k9W2PN5YCp55t28S zmX^*tU1ie3#DFB~z2w?c;XKopwcH}Q7?7QAH(ZnN6t*^_Zs{MGuhY`h5soCR{v7m} zv+64}^QAg+k%a|?S?WAY&-V&dEy;{wwJ~Xqm6knBITG9bhW!Lg1u22mI9s=@&ERpo zm`DBI#jz#<=8?wdFJ6Sc*xp*H8Xq5LME(kuWNKZGH)(wJw!0*1B7O6E6u&)e&U&Ai zn3#ZwfKw+ zrRpvmwR&@loL{kc?$CAPAnY26?cw`bgQin*iQQr=-wegj!AxQu2xAu;&8co&f?Rl9 zoYj@B7VoWsfCNE{s8|*L^9Sq4@|1#K-{zVra~P-QDz3iQn=|e_^}?v3mf8E8d&xKV zshp=zpRy~aFng`u@}S!}_r$3x*z9Kn&5i7kw=ZNg&dO&VO2*ywr!%W)t=it48*fRl znLo@h+8%UHWVWwp>f_VHlxeOE3=CA`m>8&7fphM)xzv5f@92@!mv4$=rt@lfjBQ#I zt0z0N{9nF|2=(5aLZOYa)N_Qa`d9_5zm;COdbOi;#Mz&#S4}*OkWCtnyrPk-d!H^Q zG7@d9lPVW|(S}jjS`?ORxHedJPW>f^TjTkt3Es&_4gLGGYFvz*+x0c-*Dwsz8;3-l zJ~htg>%^(&XtTK`!B%Z6z`ZxfkyMBm)w;fKtTCD;dZaO003wQ6IJ>-2@?WOm9-p*b zT}$N*?P^PtlmAj5nVI4BD=jQkRme@1kD;Td*TFWGzm(||Oz)v%M3=<(=WtxQbV+7X zC*SDBG~J~#)iH&*8+Bj0^*x$KG8`91q}>>gAHVg__Oa-B_Yn5W%5<-x*ds>=^zIiY zBV!1E85^fARC5USf3vGS*S9WPFI5yChsAQ(pxt9+!xaiV`|{DU{=HaUozys<8#lD? z8538Rs3We!D;a&$_p*-KI|>&pwy%hSEa&e`*cu&Y^YidHV8 z4Y^|p)XrN+#21z3Tp3zm8%|A4aSzu9GHT>iYX@6)=f*AfToPX!IXTLy@rH|w)u8Sw z8jbD?&8K5n`+QQ7(?&Az44X}nM1g8ITJNr*fx&+^k@R?T9NHCbtWQmf5E**^{(W{u zwqDN)kwXZ`E|a?CFojosev%I!d{>m%G`ez&c3@pu5AUv~JOs1<>ElPEWs?Lc-aDs5-4D>r)tPeRYjxv{lbek;B2=JEagE@5He7@C+o@yE&vzAvrv?mK5a z8aPqp71XEbPQ+DjzQ|CB$zeFzIM(YvbLQAea?f^{2+Ykql;1o3B7xc&yA8 zd34_v8AE!n$?l8y@n#`5yh;B#TQL_EIs|!QWyl-3$Ev@$)8pRLrB{cNk&6S?47s*s zeiU`Zh1%9(H2&u3x)($=G5e9{H}VZS-&>QzO8AveJYU;1ytOv=cDahzi%jIeiyCga zEKa8)hkZ34kc4A0$FD2CtF!jT{4GaumJUu&XG+$^H7}xD>i|lBi zii{*g*f=l@6@3i~eUrXXoeYTv7N)a&+@wI1c75#aK;lb?*7aZZGkgAOm1OQ*zY#t7 zN@TY5)7auXR|p}y>VE2}?96s7Y^O>!8|i`7`Fz(b(WKkSsj21~4_)${52t!Ae*LLv zQ}?4_YwYcvB0aasXUnSYvt{F?j{%-Wc}5jOqF2SA)2@!ay({)2FtBK?R;|z!b6?~WRGCTvrZFVZ5Q5-{raCL0 zlSj?;mu!FcrE#A9=Jw;`QHOZ;RVj% zLrTm-55_VWjbD=cmu!*-yw+#(S0F~YH1L+BD}KLRz*|>W$Inx-nXtVv4!DI+zml_B zR!S=UCfR*$6dPH%f%D$XN>7*CQnUW3>O@v1ye)U0>04M>kh!kkR{|MGnQ%bZaYD&I ztY0sC;PEBJfsj!tL_?MJ?6)#;aq%w20b5SYCB@k7)#2dC5__K4SIvIT&U#JvT$wRi zP`_6%Ik_kh!KR~e-#^XzH1l5-OW&-;?k|`qDJjXw$XHujOH04#@V>TXVvIg-SA-d)RK0H^#tTmc`Ba^cb=J!t1&s7 z2xGJ)*!#I=it@_!7nBCy&`M#WSeMFS;#JV-ma2Ko6? z@Yz-J6t2_tG9={vOs;QW7c((2E#OA-uqZFB^@yW>ZQb5miwO{W<>`Kok8>QhY)yRX zIKad7&iLDCWb?#uumoSh`syk*qtJ9W%3E;l%K`wGm8ovUwWJydOoamy_bgM>U+&p| zlv6@ZdFy=Gorm|9-%T&WLb|!TQ|;aRC3o=M!#faClmo;uWLFOl*+&U(V+^Aj<^ZtN zUK3!sjY__piL@cZLEvBOj+&uNMg&60ZNUgVE?b0sCEW{DZgC%0`|_+|Ok!;${AvMZ%6#h6L{m2)A=+gsH@&)Yr!4%_u1sTz?G1-d z&yLXZ=}w$T$sxIiy?)IVP@$)r|bTknzOlo?HMxW4&8GC+zrFGYK!XVy5MDd}j%b;6YwaQJz zZq_$H&Lhh_61-*VhlEH(r|T1bF-5!-pehu09V4@LcND$no~0Qc|SU6_lUf z^~s;|vi&t0yD;)+Q#P-k$c?t zQkpQ|PxM&i;?}91KleG5iabc$ooh9Y9&_SyIR3i~B4)jA>+V}o$2Ay+r zbNfB4WL&)>YEeJo7Zf?th=wm;zSP&(H#M>C)K=#)YF=dRjpb9)s08n=wJi`)yf<{I zxX}iQ(%~SXBaA}NpPSCFR7rTREvTbC6%@$tAK^DPUIXZIeec6$(rm;vOmkMVwaPpA z{mr48KzxOxS&9AV)e3)pEhfBReZ=CpqG>l@eM8n;9=GOL7fZg+Z;Qfr7E9HF+*j!q zlze8bB%M>%pmPt6BZI`2V!b54*QaM%)zw1@65F^?7HVTrS1-KvAGjOM6FhhZU9X<=SlC*w%yqt^v9b5<+gldh&4rrJlPoxP<|@65M9VyM zUBrVxUhc`mX_r`=iS<4`9CPRPYwl0NL*Jy>vwkJYd6_9y+>5raewi^T*$~Axmr%vIzm%_v549Q@e)cBq+d!wK5{?=5woS1!kS39!C`H(-x#@O4x zyj!?$Jv-^gJj-x;B1@F^&be*!)F-1{lZ11ty(Zo*4eNc4iE>erHi7)QO22Y$^p-iq zz;tT!d~PkOP$nw}S?hVl^%e%g*F@^yax1f5Z#h14S9lL!1VL1c(ez}*veOVI??hn` zGs3(9jO)D<^bZR~Pq}=Hl%K z6K)qAcylKAjZ;Bj&bb*0$q@Ph>QW{0WZzN{jl@|i2lBnZNnl-<{O3i zX6-f3^yqw1cZX@dDzzURXpS`8;DDeF@aVo|} ze0kC0hRbZv#ztV8qKzir{a!FrTtx5<$L9(PUS;W=7E@jOu3Y&sIlVGKUt!)!5-{Os zyVMlBR?^c`{O9W;9=&^~Q>ZwgSumEcvl7Wj4Rg9~LPA(%WRYR*(d)P2s6gQny9m3x z@Xwcz5F5sruSKb{+)BC6f`sW<8DcK++T=k4#L74)a!=Uw`vo(TzQQVV2L(^had!DL zuzaE$wk>!3)HAcb>O|B52D~?Oa{SXL9nXcjej)mwU;Cs{xg9)wZXDNHSndQVIXf4h zP2Sk>Y<7ci)8`#@9$C)tz3+#18Y8hmFsS`M$9ccm@8b*uEPdRz<*?VSwF%LEw2hva zwGiB1+0F6AE-dN_3kwS%3SnWa0~10+>7VP}B45Omjo9sePa7edN~SFeB2OWDl_H7y8)WFTk3-#uEJ5W>C}*0zqV3O_!x) zaq@^?o?${b-C%pcEnC~0ke&GjOhmlNnb~pbmx!{MdP-_YOuStiz@V?Yfe}nY`f@u( zrs58fj&Z%qEiLWOsdbt4jLCX(vz#G4k+d|0)7ib-b9oMB-Ad=?CTQ8ob?p+7(9t11 zI@%w*SoI^oKNI6a(2c)%QF~*p#kVDXAl9bmkZIV9C&&L&&RI$G6>?5&d6u$Yc zgCF3)PKwM0gsS$X%J*!no$SynHmL64)9Vwo>MPX}sCs+HV|?7EquIXpoYfhj4V#e7 z^`V3+Pq!>`Ygz(amoypl_dqK%iQg&}fPl$Eve?6!SDO6h(x zI+9Ftwx^*5mvQyo9xBo`2X++(@9*zlZf$z(r6LPiPxCg-)kn5Z^O=8q63XxYVc$Yh z@Zj?R>QEuAtvEr8fau`tew~UV6(86>jn(vRR3wfys5lX2-OhL|q?5LV<~J-wadF^!+bqQqofNs(on&dCwt> zPE#@doG5OX8V;^~@^ruep9cZLl4$Yu&H8u~qm8X#D3|;8rd?Zy#&q`8YX!#58~s)# zMNxF$m-}^WdN0y?#Ks~Qial12_DQr`e&wH{RkPWBDYK*`jqD7`go?)NT~{jZ*Dtyu zjBxkZeQcHo?9h8Pg@@^dwn^Z ze2q=d<*d@x^~LdRLHm(8KN{vY0dqZ9-0LImk2hO!@qF8uDM?^wbz2#}hXA zwcNwo!Wwpuq8OsM3kQOE`g8;+vwg?Lkk|S3+JdSBncw@NGQGh&UMk8Q>*WntES#Ur z0d{Zp(j^-wiv^NWF%SC?o-xQ{gRNNa^n7)5pKuO|h!G_8DVzmMVO=5Oa` zJk?1a#E!f_&cf6>xZYRgUB+6j9YcuXm5s9HnRlP;&_GuK)oQcEa zITg(h@V+V@qA!Wo$QY$ZgWr;#UUCFzdI6Kb|IW zjto6L%#kJbv6e|zvv5KW?@()S=j?zpQAK9Aszlh4w3uCK@+f`%BmOV*190s8kL1+z z3fjImhGnNvH{AXFGv~<_0p5aJ_j9U-&l}B1279G!HpSeqoADfb=(SbTBEDXcJQ#E? ziOs}&dsB2NJxju;z?2)Ozgg1cAAYrcX|k+AwzRCQ&Xqx3d|}Zdb91+^{k0~DjBE|> zbWfSl?JAWa^P7IPchHc4)B}-i^l@^K_vX?={_cX7qY+~_kaHFS{`?9k0ztkoq5fS! z-v2Q(n8|y-R7|0v7wpe>Y=x{H4lln;)o<`l;7D!#2pg8*&Bt* z3o!#b6N8G*!mJO~C62J|k)dg8e0HsTCck7!D9V~DmKP(|PySPT|l`F4JZE;@R7K2Cnd%JQ+MH9JI`iP2(d)a2+(-iTnZo}M2qg$nhC067 z4)%L{`%rgrU7ropB*y4IQ}~c*M?Z%l=$0+NW zQqh&E_RcXad802)ZN(7mO3^ZRsKZ$0Vvpg$A|Z^^tY?3v+b|82 zu9i00cW=`NU*?TZ%uLG6Yki4#3)Hew>FKP28;%lPkg6Qmv(_ZcEc+|6JS?GVopR$XsSh6jAK7>(rzB*;+|4$s)*PK;Y1I2{Q z$r}!1Lk5QZeR`_Wbu@N%B@#=j+XEF?{qhLRbdPt!HJsPE(FSCA%DJd6O{?%C#euKu zUkn_m&o~R{8Q}v1p;+nE5a_gNc!g91D6&Y;KBFQ`Dz1KDaz;0U`<+J<^IyJ8^|EwK z3=I6v(+DH_5_R2vfKSn>RHD&tX>k z^Tp!Pf9;vY7{5tFiIL7UMVFA$>4t?McBqy_WSw6x@ss?FeKkyKf%!u@yx zmn8bb;}^~}$qNM%X75-P*U3U<+gqheQzjYADan;7qGLr)Q&D}jl`^s`pHE_T@4>_f zS@B@@&EOt1@kARR_YnZF7p&B6@wM1WcBbb_`K>)PWnuC$%NkbQm&FMV;p~Bcu9&<^ z)0U&FsB*0B=2xItvUGHOb#?gGtt~oltF=!wk_}GfUYqV+!Q$QPU&`^F7ClXlp-V#Q zd}3|9xf(5c=L`v=oza9w)T=_9BhD3r%~wm6H6EtYj03U_TTp2Ybuye` z_1xI8mroN!T(U_@c)VCr(xZ$h6Vd9z>WLN~0=W{{VYQtnqOG z@%qU~D1`neSkGh_pthYkj|nC0fb^724$ORF%&y#XvDV2*h#tDP+(HSzuLKteI*IsN z6Gm|T{gGs3ZIE^Ix=Qj_rx`XK`Tt$S+0J}-%-SHSVJUNvNj_BH;MD(jY4U-n9!;ED zc#3MV>`SfeA|&LG#El@ggzN^VP9~F_Mg?7%V9vR2GfqwZDG58KiwuVw-5NNWHCM+Z zl1G1_H^>`Fz4qlPsi`0#7@^UlV`DcA$!%fEGFmC06FSAz++z`Mf=cp=k~YT=JhrCF z90FFAwFKyLSzhwltMfi8VR+VcndMj0CHeXMCW3<}1FQVD~H$T&1_FqiZZ?Z;-zMWp8XCFe_Qi%;=+Z9g8+(VP~ub0=JAb$T_ z2;rY!DIbFu@9)y9!f2P0k>ej}oOk)qG48zNOCX4YJnpfh#xKjo2+cfe!}9!Or%+)& zV!*MY*phM91LgR!{0KbdO@!L#+S;_XHmuRB-B`BK@%19go0&mjF;XZPvF$}sgI%fz zeF_M4X*eMBp>nl=8h8KEvtJq-xOsT8p?daYY^!U>F8jv_yHYpue1337(gYX5KlH_( z%dUG@dX8)5we%AR6Ab9;C4=r3_wLnz?4Dmxz~(bLJ}x3l&ManC&m*Z_s{KwitWuPM zJCt4G?tC7>SN=u@@jct+Es6Hz$?*S4myI8xq1ALM8c1Tn?E0Q~cxR%AznwaFZu7sn zvz#E3;KPr5qZ5cXf-+e?GaO zE)so_lhYK`fExd{82z{!gM^J#2ieK77#oUk87#4tUUF!vlL7hJ6;Ipa3F}+l2V+f- zAx?Ga*hEsw#{{HSz7bT(Fi+`0B(`<{jVm0A@v&D7pEZhmuKqexw!+pb`}o6HQ;ZEO zMtV7}kyzPuMi)=H--b%p~+j|znoveR5hF@D#tU$3_-5~&C=L>dCo+KBx8 z(`uhk0%_lSM6f18ZTI(V4vd;TSsA9ZVHzw0oe2akI(+sgU$8Y)@`CQj#~1a;#|JTE z#80TK)J588O0rB5U)8Y;gBR!vK?zTcsV>@E)^;Ljz2aoPET9g+}K%KH>?6~ z?WZ!msquxQDaeX~J+QHoaa?k!w{PFpyL2ifh+{TZ?eL$~oQPBR61#1VdM&=QZ`Yv6 ztE-=1oa|y2wCIw1=DqsEFIvFlwU(-;<|}G%GBK@hVS@MbgFjPGAv!xF2-anzbkXSE ze6(cHS+}uh6VeH+y$X7Lc}9U2@6`@M(za7qa9sK~(o(SZ#+_c?F2yP-S=qx!j~07{ zJi7y!Lg)DhckXvn$m%FAGGpTbJwkUMuMp+C7S*&`e)#bT2oLX=mDax+_;T%{gbiI0%>28)L&@|`>Drxxphw4ppq?QN>Ty|F+2VK$Fq;mMsYqWz^?GdsLqh?6{*Eg|B9XtQ zw+*Z61OAK0|GH$RmEW)WNN(7Z#-^sGN=jcrBJQ+y2bD`o>N!Pb} zV0L*4HiEk4xgiPL?>8kRsz3ugdiwHt35jjtCOw`aMVxSj{@EK&lM!%e<}2ygR86p7 z7k>I9>x*GBbg4#i__sg?YmwNlJSE7_zwn7h0tnK#O`G3GN1c9r+=pisuo1*=ROiUU|KW zTR+bAY4*;r+zSYqKYsjpzH^1(2ZQk^etyiNt|9-rZ~Ggq8@maYW**r2Y4W&?cnCGT)7gaA5o$xw$uSbJVLo& z^g+=3b&4%ROTd>A@sJ@Yci_#hqgKqNVMlpPE=I_gR9rN~ z;ppO`QDZYuUId;e0)bG!>b^ADD~EC~(8<2vnypm;SzrV9bIqc5gpyv8vxCvi!M?LQ zYp`F<&24RVpkn)%pG11_t&*O5OF19@9<46H(+vuUTz&iv*I(a>?P-kkcjn%0Id57# z0u>F6Z40=CCOLtpE~bX)nMoJ%A{~|c)`Ki=)cH`*-%0P4ZIY9H07|U(RXW6)WfkQ;N5# zSx5T{jG_(8o#%ykR&?+r`xh#v8;)Oo?!Vn+NycsEfvGMc!E@ooz$x>wcj~1u zSZvaptyx(im2)-=ru7W{B{rx(LvGJoZxgx()_Pq2aX(xJXlDh@oRp*Rh-y7Hf`L79jtVBdsA3Q zdP=Wv>J>+wK1662f2t_dzB6z*LvCB&(Fdv?ZlD^)7jgzZ32JRMP+I5JF>Yt^+ z!+1zXj|;ewNbrz#S(OZ=iaQS0;Yn?>fOc@`i7^@3Zv88RQSHO^Px|WW>Z+<8 zf!Lgv#X(PWYo|Cee>~Ut^j1+$F7~QfTVP>Ny2YQYS>1+>j^9s|b)4$50(_uQ;q=#I z?OuA0dp9~CTqy~llc=hVE z@34*-W6Y~prM5qA^L>Jit#J;&qQ-(xoYZXqeQ6S7=@bl*o z5ua`7Jo3A#Za}tg707b_b~QZbd0=4EmoG}S;7MwDbw&{d4xDqMu9xXS?j`z@)CMqr z5gCFRh52}R8oRq)z(02P?%n#;&Gi+Uv)8`1wBXFzQ^6_orKLrq28XI5KxzPy9m4cs zI-bk=&x=`{=6~LeZg}ACzfHt?gRFo1_U&)qzEP_`ED+_Nt8`oJE4G@NnK?&KUjh|% z#b`%vma)t0LAvOn@Sm{DPPE+y4*l_CZ6S&^HI;f%`ju{>_^= zH}y&b%(}9p1FjU{K;y~9Ke8oFw0{5o9bA-OenA|+;XKW`C+>z5*rbZ|)0Kww%N>b; zr?GnU3=C^vg48Be=gjTavhi=aV^+W|Vet9+b%(KZ8wuDo9n2dxykoo50Ef4U0 zPMy;V?fn=1mPc0ShewmILDa4b=ZG}DkX(EA->F#URJ5pDet96kV|QW-R&F*6Ot&(A zn)srn4i&`=e;GMB)f3GS1J+4ILtzYlbGcu+_#}q{C%Ryr`+Q8l0fy7c_*DZIIpokH z=1-4|dbp}apqGEH0RKs|x$5^jZ7GtOy~1_oN%B6I_t zTZP>)q{b@%vK}PSb3)RFGMX$o=XotcqK zpP@pBdZgYKT+(TZ2|F&Oz3zuw2M>ktMK}&mE8uv4fIoOT_ajV?K9Qd5Q+0K)SgNKeOJ>&8C>xoJAyG?#u6$M+ucwm%F-Gt%vc3@nXPr3PMfp`)0?h z7zWBj6lqz8b37f0Gs_pBifkG?nx}O#Lap(&U>2Cm`5{bQ_E@$Ie=B?Lo!h-{=P$*V zl$0DU>iK^0C?yW6$+lrh>4kBkE-o(UjjkLWfF8uDsjL8;1}>i83xWe2NcahU`BJ;U zIB@=UM3F9dzQz;0yTn_*y1F}Qt{YHk#bH0lnz2>OgGY~!2a=4=3K=)*X7MM>S z`}(S=sEndUxv_t*J9ps7!}2~b+)!e8rU*vbPZ}SZNXx)*Npci+Ut1g(C+E8fKWTc~ z&P=siw{F!OZf$lVP27*(`dRJIo>ronG{_^=kkoB)wP5hfkePGIm&W)Augp3Rl)*r` zQ@x?+&!0bwL3H>^2(vG?=vMfs2JpQtPu<$tY`k;uP#!_s{$aU`z-Dz4!^6Uoefh-9hzIxW-_MBrY|sgH(iebo zmiF%cZcD~_V3E;Js%21Z?@Ty@Ht7;#lf4Dw5d1s#)w^8- zV7}Hdd$eRw0Dxy$C!DWavdMjLOL63e zFKN4cV5`b_@$rEUs480PGbKX=iU(G|%pMJY5Gk=a^0m36|Cqmh=I}Y*chRI2jR*L+ z3=QM(T5XJlgP&&iUSHCb5;@=P-Yc!r54Mm5shPgt(g2c)vd2gJh*^_fUSZ53bN$U6+Gf54QK%~DdZxbi)j?WI4M z$h1l{Dl81Vk9__`6`yh{DxrG=3XFPW?Gri6&82q%0RdpK-gMq9Rs`QKj{rNn@nEG} zpXBbK(^o#Wv>-2DynV=WV4tFb!t(t5{h>)K|E0GjTe~{L6~!|)$WrrwkZ2f%8e8Ks zN-ofiX5V}Sf*yYN)QlXSKSs1`QYS{_b2+=JI%Sq7;*yQEt7Bu&4p$X7{u@M@D^cwB zTZekg)PB76W0H}VM@wAGF<)6}(v zDYZoSWEJ-8@NgWM<3kiuF@&(g3&L;7$ne|^ZF{3F4QvaF^>2^b3kRJQ>vLD!+>{Kq z#^Tfp5AE<1H_4e5iUXw!7Ihzju{l$hRTJ;O)>z5(2ihA^`hmh-I`7`eA}OSlCW-o{ z+?2pM9fqjFQZHf1rqs#GHqN|@!KlHFTMR5X^XK}yLI@wBlRE^c z6E_Uqzu*93!W>u+sJt}Vy64d`U4!CAp*kjl$2YH8>fVzY`iLo0wL|>P9D-#}$-CU; z(zfUFuY)Kdg5tpkL(6N2cTpo^3#zI907l@FpYU%Xj^Ug#Oc%m5h_QP%%q|{locieuC%#Fu?#v z89*{lJ0_IGep$k>+CURd2bB8mjZpQ{pFXV#5O0*y^#%Hg5rhR~<*(bSs;bc1vaz`- z;xu{HuqJ?8BUjZ-q2dFPw=qT-P@`Ah6}UQ}wPgF>eBSGai)kJZlqeJ@g`G=GOa!y( z<_{Y0kRuG@o~4IVaNx_w02u7M@&~X+GWtyYXPb5_pp2Pxz?b%OWTLUYN<9nZ7Yiny=vg-S@u`2rd;?NHA?%ib+ zYUtsoXVSW=HGVs+iIR@$b+6FS(AYwRE`2cl{@+vIxkV~6ZaUK&GPF7CQbWvw3qzqB z=3NtXuD{4a1Ah!XU;GbU5;hNXNygwqfz^R-sPutS%%bM_zZe!uSSu~n6v3X7yJz3F z`=7mq4QKiY;qLCed*u}s(82~aRUD)*hNzyTv9lFK*(?}0E9+<18sM=~;e+%@ebvEx z{|%$~r-?+fP{K$~Q@_i9_66>>#FGN!Ci8ElcF6pkwwHX{qf@;q!0g1NlK#x@64rnRBbHC8WvXh&WGwjT!JH!xajy-!d{vp8omU{a^Iv&HMAkVD&Bs=rM#@iF3Zre~+<-vW4=c z0^l>0E}m;Ut_7Hy>X!neN-~{EMywhzQEjq{`UnyNs$MDkNgN$%n`LV3Fa6 z*zn?8^6^W4u=})asvq|C+LjpYCElv&C}NZB4o7@ zw(*Flv0nMtqt&x^{0}hP0d$PIpLbD|BM2T!X1gpiG+fN0BfEc+^$JTqn&y4Ddv+&+ zc#;89!FEwt*QUMlzz$zJdh11+uys<_kv96j$!9St1V`RxOP$Pw_Mqr||9+IN$9hQQ zLun5VZ+-U#9$ul+=ivS?gG=qNKzvtiwUBR|6BhgR5i5=_7F{6M6%Dl;`1)V-(f00I z{OpFf>4Z|kUM&^Ld8jed#D_pk?uPjOhCE_3Xtrn!Oms4s6cKOQPBBYhz9*P{o8G;X zFevK+DS-Na6WSEHOXFYM^RB;jG(~da532w0=5_~mA$Bs+dCWY-(f`EB-k^vU!yYf*4>CKhovUg(3u^c7J!8!RlzC7C;@r+(mzk5x=Yzr5 z9Y&be|16Dyt$q;K2lYFUGk`)*n6{?oLX-gH{KjxPChSn15uwg4aSF z$DUk|pD#E@a_0H1tZ{>>b<>bLu4;zP+vRCJ`|-)IA)@VE=nrVAP<;mM5^-p24v(C= zeP-JB^-(xPz8W(V6Q*WgS$)tuBDA!Q-gp~DGF5VE>jsSo9d(@Lo|MCOqd?1-cY7~e zeRc;58P01=csR?Rg=Of#F>xAPCxdc#M%a2<$=~W%)1B}YLcIIrB?=ZEg-D4$FD^c4 zV9?80PkZ03KU+(HI10Y3?mn|=zRzz&=^8ZH!>I+lw>%k6Uw&|NUp)^i-V~eE%>6=2 zM1SxMvVCk>+ol@;es<&Ovu7u{eJG$}gl(Kn zIlj4)DN@ZKt69&xxBSqbxRjTd2WzNYQ&CaDJq%3X1si~e`V<&rvJr zZ?&__qn4Vyj56jOZLOKK?{M4P+$+#XEW>y8vmNF^B83ZJ;E5W~AamDALaW6A zYHCrtpHG(TE$PBY`zQ^q>2;)0BJol|EVT7JQ;fU8_6fM7K2Im;TO7@y*7TmVY|T<` z!#Yl&SAn&rYk%_O38x* zN1!<6pYAVFG{~Gjv>zVnjwg;MiRqoD+Z@xhnPkdt z6Ev*~54y7O^F#Y*0W^P~WS4vAI`#vW$EIRN2%y#)X>(;r!z7j;{gNCLdnQ2NU2))z zhMq}u<#QE9pK@oA3}fjPWB0>h!wPKN#W9vm-Sz)RCftP}X5ApzO8t*_y#DJmJ`HI| zj;h~p0rzPog%Wkz<0D%#%$EkbJFVBp3;!i=mO6?kFaoM2`p55r%t1-#hXI}be$2p| zzcL*H(P~c9YUBc?8!e# z0NJ9zq=oL(sQ@N1ZD-k)*#Sx&wUg-lj!`Or9s_9jz~$>uTAw#tp#^dfINh&bzd{rR z-8!@NB4}=a@0yzA2cxjq|HaQ5!P#KGX8R@~0o9%=zn}VaNJ0XxF-w`fJ!Zi8m7S>` zn3pT}{^Et!y9bZz1hwgvZPxf7O-DU{e!$y%8@PW(ET0~~)&stuJ9VD%yssXN zP~%}qb<~8QSsQCFucGMulchB1gT@Xx{rdg^dg8$=>0n+c_5V*agif&2*X>8(eDH?7 zn4cDE$0ki3I(ih?S*W>*AbC-NhwzbL-$2yr>gvhvy7wY;m4^B60me{-XUejbq`SCY zym%2zLO>P(p$9Z9TC5wWzmAgD)>ewY;a7%Ans$*n8XpS|hmeqCF&}Cgrzd%Wass7Xw%S3 z-k6n@KdOB~+j4NdjbH_929IV~s)QoL{<^5k>^Fd$hYuaM>~=k5QBMy6|}J)r~>q`-^>dDr|0UF%z}g###s}^6huk9 z<;N!n^DB;?yI};q!ZTL^kOu|_V~;5VsSy`9fI~^3E0g0$BodgJ{-uK%TzNHM4E;cQ zkOM%ZLc;SQNVJfnyaMT-cIXhOSy@>jlu;5Ug$@kgM+HM@q@X}R7`JiNTaYwaX<;=% zPe}%OKS?q;iq%-GceDXJngpx!f)8Zi&?b@^6kixJ3DPt?bfc%Ihn8ENa~N32fmC@$ z2z6h-Dn;L1KYvIIx18Z4WKt4MIIGv4k8bEIv6&kk?F4Ea3@3{gg`CNQ3y~&FphT{( ztx4aAbT$5G_cT)KWEj+A3QzDxolD${yxP{7m4Y>&2fqTq#GB;AEQ(r`cAm(M*ZLUj zeO9LwiQO?sw9)UxmrNlaUi;wiMR$49n{UXjo=Vz#V03^8=D*{ciahx~N{DzNZTUoS zMZ0K)&d?zifW$36%+v5>jIu)%dzMf6vG-AHq=<-=O4es)HctVCx>Hd=E&F8kE5P8D zuAMnpopF-!K|tUROIbpH0@pQvftcbnH)oaG8n0Kx8e-V8OH*0~>k_c>qB@6j`*ybO zF2r};R&M;7?+HAC@mF`aMHNn7!)j+wAP}}MCyG8NHT-n9D;hSYCpHLqz1xXzJG6m$ z)<%;ER)}b}VoVQh!E5om08mpx;|^9XQl6i0-@g@YJO=+7OKFY!bH5aJ=!`X@NDQ;K zy82DWMATlz-(wf0KAU?y;x12_8rwBWXQ1vrqCZT6tr~3ein;Bw;UJOZx*#9`f`SM| z%jGz&k(?d#k&6~3Bf0$)MU+-%XJ-TP*3r??0%6-Be5y#dXtXabCPo$#X?Fp%ahavI zx3{O<+J@&KUE?lOZdlUJ?X#b0ZfF26m(Nrv)eVq#wI|^kYzT1I)kSLOcH4JGS-AXe zqSRFcM`2+rl%&ud*#{XSHc~fZ)SXwus?3?5j;^bWR87f$yW2eB=^C;k@i8$TZrQMHMj8<`iW7H5$b4y#+2eb!$q^^&jgVg!s~l-G3{byAeBH z8VY%a-lI5x_*dy-KSLUAWS4vOHBFHjeeKE>yS8NM>60)#icu%i2$VQbStk{SKrMdo z;DNOCK@SS?0%5C}6bXXT@#A*wPV6REBvL-;0{cOEGKaGqaQxsI$%umwLiU0lO~6wi zY@7vtpWNR4=9Vu!j^yynD|kr9Q6|w>eFx!VAp~8148w*a7z>=>89CeVT#ux`SYo2h z|7Q}pk>X7Lzm&mY^?&R$OS(UP{0Ji#PKE6`#=sywvscOF-+l}vzE<73H$Mf~$|3J< z{ObtIR2&F-Af-d#odqa|zkP*(14NbJ#c+jyWf5fjTt!H{Z9OS~8cgNbD8 z$kI@Zn}&x;xD&ZWMK>ryOi<{aW59`M?FUZej~-sch3Ta>bWf0Z4k=1aNhxHZ3o`n; z8HEh_{0|v&Q!l7`H}BY)tEM5-n4OgoU+yuCb^6aH8Vw^hj3};<+BBeT8UUoMtSlP_ z!~$-XJ$v>5xX4mq$>0$a!)Iqx#4G48?~p~&In;U00qyVn7$Pkv%`#BMFC=+<{xNk$ zCu5;`N2iN`@qj1qQ1XPaF&7IUQ_4dei2shoU%?PE1%3EsFa7=Z{BOPk*Ox#r{|t2% zJdYxWy5T(#(>)vrA8p*~Dsfm=02ifipz(+DxY-#-Dyr=D?MJ!dY*Bn3dnh^yM2wwC zJ68$a)m=`WKmT84Umg$T`u?xwXp>Hh3YAmVY?E~?NhM{=F1txgcCu%gs7}@-%Mh}J z$rd8Jj24s`OWDS*6d7YT$d=#rOr6hizUTLPeZT(0v&?fp_kG>(>wUei_l%_%R-5oq30BHKkgQ^oHvbA>^k25blfFHea;ReH1%s<3{c zI@8CKGPpBCjmc~~Yy$Bhkp9Vf6wuvhj|YW6(;J*JQOGKDtD!3c-62|aLvuOFTM%wXTxD->S>YB)XNsPXL#SKT^~7a@u&fXR@y@UbA351qSmt#QGaQc@Q9F zX(n`&Vb`T=OD(-g<`4jOZTh9ayYXhMv_y3eEy*0hKeCAgs_FT!(QgMl?RnYr+fN3B zu@aGG3rLg&p%^L{o5(LE6AB>ezd{b8ocNEpqWpIEKj@0jt_h5LkH`{$0>c?$o&4 zavXLrpTB4s!5TI2Z2B)RaHu|TzT=gve~_op1@pjxGrIhn$KUr|v3MCr*d zWHK4tVIcgD(rEI~^`4%70=ov0ASK|34+!m`lN}N?ZPaGtNQ!CNz%^QPw(v6F?r?%} z>rJTF1qKEp!Xgg#c1XY3t)9ol#>N7|K%>i{wudsS&`w^0MiY=P0SZlPxC3t@Jh*dn zAUUo6BEfKn>Th830a}*yBL1o1{_KyriG*;#&&DBfDT31yomDEIuE5Gi1qaEoIsNG_{beIkyv={`B@oRY7p5hT8C?mmgZiM{~Z_)1}J8(tDAkhUm z9}$1}>AG$zFbE6htzY?r2@d1s*rIXNX7Ep|u>E*~-3XK`U}QE?FajZRTpS!!27w&P zGc1HX$LP)pPc~#(nvpj#=;ICEBFmp;Uy^C4q%@40zYse&8cp#{0Dufp#UKcB`+QAQ zjz-O1#Pf(|n^}Igy1pyvqccdhTw&KTukwhx4f6_03Q1<+CT0JYj-9sMi`;7?eCWoO zz`V5jpk+bV7`7y2H&HDR0C;$-MfN^GOVBqZeAf9bzG2NPE5{CS>ke~@WGi2*d%bE^N% zI0H!pO3#`3`S6gChxfAE;e!Cpt;q-QDgo`1(rk0A*X*y?!TwB)m$x2Vd0>FN_{%JA znwXe?7I%&;h9o~s+LZP~xh+b26k-z-Nw;AAGl7&Tv+!aBhYuK!1Yd_rfB&C3(y-?O zSyDAw*4Git@O**LE(A~oE(-2kt=FKSzTVNauK$tX zfBz?#^-lt<=Fn2}HsJF~Sq-~jm52RV@-G%akef^*S@_Q?v$wzWaR&hixM=O#zFj~- zK>LuWRicywpA|h$m=`iVsQXBE)*{R?zTNCP+SW=c;2@OR{gs|+Q*D{rY<#v3sIn|%IlMXWH#Qy zxAAJDZuEZyZ;y~pQ&S{%S7q1LUEuxPlq_Ekv&yTT(&thuf|Um@R9CvXc5`v1$iez{ z@+pXdM39>uL|F*GohxJ^AHL-MbTDWv0xj^DB6=QCMDG^#rK(qZ`uV?&}_EvR!IprC=3OWqBkOwxqWZfAy#(rx|@yS&u}4c zAky@e*tvsR699qwA!GJsl2D=1pTUM0T&E0^QEW5pJADVkhuPOc#`4Ptp(LV_kp95c z)_%SZSAWceek#De^NmA4_$M=Hktn5n1bLJU=3`a|4z+He7VF6 zm58j<4cwxl&ajs>)V~br*R-0F=Pi5 zrE2Uw(-PB?v5=`kuZCgmqjAPG1R~0GWfag& zEiG4w2E3ULkHEgjT&s~2QWX6xEj6`heePMMsz^X-pz4t=Qr4n_ujMkZ@w*R-LkAYs zK~=0o(ZKgh1iB;j*uq4QJFMLC%>+L*qH@wdno({|(|?Wtj%DaN5paP3hbXJV?e^{8 zPgoV$0xLczclwBM(g1Zv23r zmm>oSzMR)|T6P}j27veXhd+-+pv&CN|0@;{C9T!}inGWVTczX3Qg3pt-5xbg8qe6fxRQl?v4oS-m`1Y0IU zYehMr#TZQ*j5-&C<{i?&ti2Uwy17$Ox_|s3XdPJ~aa7}Hx+%i=!>7QlGSe!UiStZX zKl~QFbsG;-Y`+Hb;p}cW_R~w?v6v2fe8vXXm69)~P763!cE8%R;}i^W|K<(I?^5oB z?Vb#-LmQ;(E6fJJNwRrFQoMF>J8}Sgq~0FnteU8e!4Tzr5p!!XEnKI&Tw5VaWMEF> z`?YJ7l)?Ss=~DxpP7_msu17g)0P!K9?^U?~%4=jPLATqbisyu#Xb7UOLZ0)JQp?my zsdxD;_KXLAH=_v4`($>vElx#}qgG~aCT!sL$!h1r`7dV-4xh>Yp~tENHsExm#WJV7<1rPlYd#F*05tPYR1*JdQ&%}(J z-hGdWNl;pD=HaQ@17!j4-`pX--29*a`0>zI@|NpdX@6Y!ZaUkmv%p;LTHAwW47>~v zBU?@;Kof-)3=7Oo<$Ze91mvwjq~%H?ii?Z${UAe00_zIf{)5QKS`Y>>FO0<00hQfg&FyGB zkC>`+G~HS};jtEG-+=Yr=+7+7N}=*m=0=D@gNgTv>gNZU zKJCcv{`3&)H#L4+c!gB2MfdYib1Ex)mgys9FBf*b*z{`k*C$*Z4f4}knd?F|F*8jo z)iVb(8uu7#GsX-8)&ZCpgkAh;%AL19v!|NrEOH=YOoe8EQ2*;!lom$h5GPSIZ;H-W z{rp8r)kqsw^ElJdy36*@DEf{RN1tNt{=$OwDq#wxH`LSNWH^)AsXHszBNiU~*Fh*_>U6E* zsKaDln;Gc@)1mumL}RO(j2|zy*&(-jO})5c-@0BBFmV0uYi-aVo0^&$8X96St+IOp z_s0JFQk>Mh^(DQ*FpnAwjIOS(vGK`jlC`*N%a*HK3IBDmjdgmLyPaHe0W=|a;jOVd zNZ`_S_*~A$#5s<3mQ!9gs-lR!0g70Z`T*2$Cj=Ww%y(bgO1k~il}c!Y(&ALW0U*}o z5ukK+{m-M)g*U?|fX;v9Y0h!uic*;ZIn-CuKR&u1Sag>@l2}6ne!6&M?fW;zp`ONi zVP1X_2L_{vk7>Ip_oEAp`P$FDqBOAL)rLKyW~1qz3*%889fTb_#1#CPFI-%Nd`Qh_ z`3j(^67`75{!mA~_9(niYV1y~-#-o226Q(id{I+JR|c%u7iv1h(?^z23clap)$hLf z`QEz%Gueq@Ize35+jhn6TF|FD_Xu{0%!P%FOZ>iS+pQCCvtGtb-8k{R=i-Xn^=VOy z)3n#yrdMc~CDI@3OSQG@U8Z@NUlCDFdwaY_a!hoP!pfM!yU1xf=N~h4>hPO4hI+ae zJ-WE$70|eo>&E8!Niwd`rJ(R>xb{fi{f?uF#K(`0%gmaA>=uhn5-AiG8Q?LDCc^rE zOGz&++yl6Ca5u}uY-E7{RR?ZtHkfq0-n8jQ`5;HB)ur4vXzZ<#22EO8+8}N&v9ewY@YpepveA8VKqm;4hp)f7XVDX|#>iTJ1IT z_0`CB8i0Ji_xl7WOjfuH5#L z!bmWyU%ahq96~C~_IOHCnKWCn?+-0Y@m`#WZBB|e4Qk+3pVGsyr?XH(Cd1GluN_Y0o& zTgs~K=AiGNADR7fNzm&4vd>X9jG%hls(?XK@%C5i?eS{oUO0+t;d?5V=OWOH(bcjg z*?~*}?6yvw4Vjsiy1^p*HQnZJRHKbMO-1gRW8Xh7ExMBY6o-?O#7Ut81YTdA`zoJu z^IA&AmYCw-@lHBa4SZB@83mX^=?yu{H+;@5JR@C%=-_wX7}@Own%PCc|*}B=w{5U453_06(jgtv#r0)RDa{=&&NlX22N5?riuO<+A4eMx3dWCc{KMnZ_0VhU)$bZEk{;MPO3KKcI%%3&EF#EQJCqs@?{w1q0}i~l z(f3?48P8l5aJs_lBs_Qk|nnsi$xyU){F};(J}53 zW1oTZomNVfNsWmCp?#5>@|7IClLhzPnvr9r9A~7SqR2~}w#LQ2JF~#etej5J{lKSr zgxBgT=zmR3auX9D7@b+mi1f-go~QZDKUI;vtQF8TmEJMr(=Ep=@FkseIo~}hj*iXK za&&q&K*u`Z%w}4YB33_+>j+ZG#eD|45A&m{%&RD&-#V#RA~~1d=6R9hH`>;8@hhb6 zWF4qRjpk$>yE)gmOj5Ug;2aVcY~=LJ?0VuREe%Wo`vu8@ND{j}8YjClF_=IU-eBdg zsq|aog4x&D_!jMWli19g_p11Fmj@^p{4g8(1Jj1I>O81uM zUf*>oTb|L&3cGX1x6iyI*FY=JfBd3u+w(hjJmaK#=8}WUoQqAkBBoE5bn=%;mzkCq z#JLo-6VHfhVtTjnk-d-g_8!Ey=(Fb}k6BF0>x}qd6Qyok-3SYFD*h3ds`+GJaEHwS zN}=J9k4?Jd$nJ=r&r&n5Eh^C*$o~{Y`4zxQb4B6`W8{}6ETV}QBQ={^EEalflno1y z$@&!EczuVexUoDyxTgbUA>ZkA8&1yM1_rWs zw_P&Tv>1Ng2A`r5aIAPL3KH7a(emT*mfN-qlmpS6^8#=Wv#lDH9|NF52@~ z8Ln#T`&if&&vbXchaJ0P?w#?Z#Lg`A1+o&4v+|`&{xh!+Cb+!Us%-jet^S<2xnmOY4WF-}j6~F*!j%6; z?;O39-6v?<*;y6E{bhZldipG-heC+2vFj796=nCA|Cc zB_s3xkiR=uo{Q<=^UppB3f{D?(uGT@eN{Q0HKhhW2j>}!g1E?3?*j7($0Y3wiB7;> zEnYJq^f`GV!TrLL{ZQz*1b9w?L}qP{yi}Trnv@9RdU4!~>)MaHjoVvRlhE*uD{O9D zPuXwG(>p`&hQvi@y9EiR%Ak1Ho6#6INty2?`8_p-I$%BacDtJUHvo$s>C^@G@I$S0 zW0z$-Z2kQG4hv)^fh*uKrQ24Gnnc7X_9U6Nzzc-vZ&b{9wvU;b)?+M^kij`O>5xy@7XY?^3S|T zv12|g|EMztI%WW9f+G1}II~-e>D6|%m2}rf4A4vsuTeMN`f58#1{7;z&4IxWj^P{h%A6c=zqXMBo3jAwk?vc-?(NcYB| zAOE;V9^QrDyF6gG0mgv5=fj@uGm)X8H%AkGJ0u#L;IjTTW(~eJN63&hh6uptYy>av zBOugIVMW|Rw56qfi6;x**0A&3T=AGKFn0hAlDJcEcb;Knh2@GaTyT2T-d^s6EA3G2 zBY7;zmK+b>r%`{qlGTs3oSvRMlS>=~z+jh?<@lsLb28&iop+Sqx7@v(&C(L;c(IKc zi<5p%6WveFovQ&#*Sy5`X(PQg{*mTmfr^bEsrQ1I8!v;PQ!aq0?~}ejOI6o6a^P^c z6$3Xk-do0nDs6yiW;c)ez7uj6K_!Jxy`sUMPW-Urrg=Q=;~_^ z7ZnVDS3VxUSjuO5*?8-xJ9|6O4$r(h0v7*>uw(8Q!NHnan{@HTt62SLxUoaU&GIL< z5TdyB6kltMUTun0Qwc#<&s=w<`?QFejFPI9Qg8$Q?|4TiMMXD`N6zQHOTenijhP6j zMC#wd^NSBTO%KxFzrR)dbp;$@PR8?&+8K9t72;G`{f9$+;tHW5#8@D-g|jUlg(jT{ zd~ocXU5e>O&s|BFJImD*RzWY3&YTOP{YvENzI%Q0(N2Nr2S zR(v5Vow~onS2kW0ukNp#qEZ~UJck}SQnF(3=Fzen#Pqc_5A2S84bd^d4#oy~8>`|m zHj22a?zw=$Sb0DD75hq$<+a!L?n0)i=8qOvS`J|vE#k)IMI65H^=Qc@YZg*CS(r0E zzL(vTR-AGD{gF6>~xQk#hS^Ur=BON~kkQL+?=Vdorcb2Ha5MWPK1elSHkefpdajWT6a$N6~ z!@-oZGwbZ~{yrSOgg5MLnm&C$G;}6~&YNchStTu(LYwywbu4r&b*!cbHd+rq-u7Xy ze_4a?<#n4qcVHSF$2F%adcsB|NTv0bX0$(zFt1r*ABhoRW}QGC=a==VFe^(U`Y!Br zw9P(+IdgO7@}+jepIa?yVR_je_E;0ReRkez%!ug;n7Xqcl-ghN<2pM#8%?@8Iu5f0 z?Zcet6EYR)6IIY=WWs6O-yI_s5+T5CZD*-aTInUOV@J3}h4+)ohpxaQ1}se}s`VDF z)Gb3qva;efEb!OmeQ}a<|L|Val8d9HzQG8~u_KeVE4|fd+^fJOb#=7rpE0R!l?z$U z-6oyVLq6I56Tv0MFLb>oR2E<;*j`(UtJ2xHv479XBK9@%N!b~L1Q8Oo2evvyQO#nk2*p= zb#vG7;CL1I*1P)qH5g|zMgF|XzpSN@QSShm?V0;EOD89LF+M(f+ow<` zXFFTo=P)};eo+Pzl9Sq2+K-+7d7b10IE`C;luie9l>cJQxmIazk8r;SkH++_eZH5# zVZ{Wuehl@v^{5v)!p8l9Q;F4q0>90hIaC;O+0OYrkAsU#MX{0hooK7kf&P2;7YhbB zhX=HfD{W^DS;pegkGMbbetE3KJHzl+-F*tsc$H)zbG@$ zeSfP`Bx?PHR6)M*-1rN&PHx6z4mQ4P0wt}v8w~Pg=PE8|#Lk|p*Dw9D*k`%BDNmp#s-=Kj}-&dD1&*rc02d4&~9KLu_=h74Ue#bh1bm_0b7xXMY-e&~s zlfGefwZ?3dOP*KIbMR+P@eT}G80~`;?7&uZ#o5<;Sq?2L)FZ>HLtMLl-hC_;sy1Ko z^@&KtQ|kj#sD21@BEjRDU*c7-JDnw2;tvPz_%QS3xeQyC-dwLr3(R$Jx>$iKWWVL2 zwDeN{30>xyMkA3;ic~xX$w0lN*xZ3hO&oqi{`?#&rsn$vlE0%Ee$-) z3MUM0ekGJE9x^r2Heed<%G%rv>F_wrdpU(VQ#tfselitw>b z4tU<%wTgVDkvsc0>q74{44FP(h563;=G>Cx=F3vT9Qnm@*mEK=J1^f_hxCySx;9vR zs}}x|`B^D!q;z$>V7hYA^lR#(h#I0!YDKXnx4K8)X)7BQ79qT@aYuE6v@s>t8Iu0Y z%yRKoX@M>CtMe8)x!kO?S*hsD2o>Js>1!77i9YsQU)xVv1kNl_=Tg_h#Ih7*-n5OI zlaRb1QIfl-?KZMBe#VXJ^hAq;0r%F+iQYcVP)#e1O3I6mD^sr-$TUV7hZ#rNG(GP( zj%v_}k$v?3CG}})c^TeYmrqb|R9SwwetCxT@5@c?8hQ8mI41XfW4-4R*xOXtSnVRV z_T6WH#j3CgM(p+YhBGU%-}NB_UQ9y5luBBC^dFLBsiWW5Fei_G|M#CV$m6%mc^@78 zzyJ9ngW~AuJKWJP;-49ae91w#zCa21ro@w1UG#$HDs$ZlTo$k)?X^^tA0vV*z62t z6mMsgD6<_7kB{eG+}PPsS5aXQvK^w3KA8NZfm%tc@`UHD`%ZYSN-l5lA$ITAW(x=p z-6a%He)Bt7YBOk3<&@d9)z{ZoP*Cvx{rm9nOBA8FAR3VB+6(fPx2^dfSWJKQuebD(3;q<$O#Dw|WMp1&+t0Lq zDDs--5uQNe_jf!!J@@zblf;~r#qmqS#YJZ;ADZ)T8nw5#n|FTvk!LLKu5D>K&*(b# zMT#*FmB{}%(iB_0iZFD4c|#$%VETpR&% zQt%QLmD#Kw#QUzaG|J6yXTmdo+h()aysPNrJ@oW+3ZBZtY-+OpRTL#3A73nop9CA5 z!hVM5N@a^%$1)W2o<-L5?HMXIOLpb5$bd_jPKhf@U%YW!KlbTQ#I@Sfie`EA` zi4kD+5w=EVI7~MyU#J7dG?Ny*h_`#Qo+u1a^bchXSohs+V9wdm31gCs*6=(e6b>Mcir9dovLN_;FWM6w?RFfJLFCp!zCXrVJYK`V|M8@)gY% zX~JI5K(&09(W6ICitZu^hn~wCp3WT`EwdX1Q6NFw6}r3j3tsHKzl}K$oMX-vZn z9<0<74)=MOm>3yr&AUE*|9;?Ch+(uJ#;+Ul-k5F)E7#W-^qlZwWE6`w@m#)(eutlYMR60ADB-?=-$CUYmglL& zi#cb-(jw7@%%pI)c{|MrHdRy7pw+U=SFUsf9^mm`O<7r4`?&AjyC*L%KhV?k#8`+z zJ1F7FPDQEV4lqGZLQ{d$g61$!5n6NV0;5=K<6M&OgsBaKxQhx@$ZjO^x9>tPVu5!X z*ZJTjJ+~kC*f)?1x1J9-PN2uiD=56(@P2;xK{<5XV85+WV10kJP7gYZM&F7FEv~$y z91q)&>xpL3qgUEr%W0*GfVVVk45#24%LH zLPE@F-*l1@H%~D$C%t?34%mx9=c9W` zm~37MqQ;^p5s5@LhtPL4CKaRm)sp7$V%mQDlpv}|O61X)Z)*aV3HzOR{I%iW56Ups6r%DB#7W!D% z=&*I1+)Pk-Pu$oO#V}R~1X9^C6?Q9<0DV7hX%4(-z*C9Ih5^gtqo&^0LoW=~hBArR zf9vSznC)jJA28dLDIGfF(qZjNYFEh3Q7Y&-1I&X9BK@oL3<=1@FX-jGY4yu&^}9aZ zm6eq(w;N4M_@WrbM7>^)8`xeMw>kJ#&=grmz^|fr*XtGoaHMgZ(CTHO*xi0Th}}eu zzJfuC<(Jxx_;tryib&z4GiGC7EOWhn8rFc_5E`7HPvmRq;Si(4qSI6&@7S2X-H`W2 zpF0>KY>reqrkl7;6h8M)(LlMeN8Z2~B8^3x&-)1cRIyn*?Q`VPW84^m&+=S-ZEfwV zSFie44T6Aw>Y2ZfPq`wOK#h%Bb*A?cvAxZD=Z^Ls>n4cI5QNvTSoF|X;)b^$NZ^6} z*?Jv~2=Dy~@Hr3E)IeNcm9tHpo-3asyzKCLdC}9^6z6;Q{0MjFdXma36%==B98(Y* zc&{KxK}@aP`e~n6v_5=;S9YU1HmnSvBQrES+Voe7+<0B;zQJm!+QA!ws>)%giCMGL zjMn7nBCl7ZU&^iwE)Z%dF~@U zEDXMU8;dbB=k2gC*Yd5~uH7<(R?2UifX$@8WBJ)6xu?@HR>+b66;^F0up4Jb=#0pv{zlyUZ_pzlo%3tNdxchx+aCB~P@Oj`9 zJub^5v|d=fYK~X5IfFL$1o}469jXeA()b1SkrvKDzjAtPuCGR?SZ4HdE$VYuc(qq_ zZhUQ=bHL3Lw-Foin5hUg?^}11X`944m9E7a80Ux{u>W3s`B?IQ@9~m9(vN+I% z%Uc<*<|5QSJ4!~;aeIZeD4+dY;IkMCa)8tn_b&NkHf>yqXBoTG$eJ2$6 zNM+XsC&_9MT9|#k4)^BFSiXGuQuJ+p-m;CFCWcHn^j&!5;lZ4AM*}c-0&cL*q{6;l z1$hM^8#Ohx3xEIpzU2bFP)nj9~_7FBV)<{d8dd0EnOGQYiunUrxIChN*b{! zK!xpMC^yF-eDFBW)mpvKr=sBv-@lKP+3j}<_GB2_)|_>p+Sp?L7ovWq)A0GRTsfEM zn3?Y(TR&0^Hm*GG3h<^ zCy61CBumffGD!95i?+d800Yp(oJlnq+_a(O^|`3&N?tt#`OY8mx4ZlrTUY;^O6_Rq;7nA-qJsmbwz{17#u+PWG zM~e8UB%n%hoz5Vv2Sw2E7y#E`vyv7U7w6*(J1)hpVX7UFNrdl>AoD)z^YQTTFgG`c zLV5rAY~2h5_5eu$1_R8Z>S@E#1>KmhZ zrtt^X9pTculV)+}94wcQm*|Cs0$w#v>iyq51R5H1<+rOp(>GtA3FC5Y+ajl*;Ncwc z+FtTi2s@m99!9R2R&E!!)=b|MFNJr$SDyw$xJ%#4EFPDS9b>A!+a4c6CvP_ReYt_4Uso>nVKJwWXC|nJWbkrzCBv`)mM3r!Cd=w{f|qZ z;r1DVy}2bfPr}Y;xjS?)VjCJ>*$iw&-*a_4g5!0oWUbprg zg4Vd9aQ<+uL2q*dai^FgVl<^(ffm3OdgrpA>2(*#$%`JpOR?FB&&Wq6`h6K|Xv;5m z_^3fis`&6l`vJ!*KR@VKR?+TTs(1OIqREJS7>}LN;Dzz(@)&L3t@*haUOOJ%LzDeA zM)7Es*bQXu&h~{fnc{XM#V%LO;GSCpmTVvjxu^%>L}3UPw8ay9%huS#x3cM1F9>qp zKl6yS@}+FTe_g^ShBp`G;~Ctwck-`;?j(XPEdjTKYb{D@FkbH z4}==+kc!N#oALTs^o*x4i6DlOnIXC+RBSPml4*=f zZz!jF`{Pz>#%g_jx>L4Ai77Q=?+0Q!Bq+%JaIem&Vl5$-OvsK7zg)g)BuXWQ4!K7i zod%zHuQ!*$=kMX>wswf;$|rO^)+x=MNV7(H?&Ai+q23#9U((g=v;l%~m6wxyXHu5S zs{yeqwi~5!UY$6E`BvwLqgEt#pAe)E3jrOFM03U0cX!Q#*;nFTxIJsl-P@1zsRpCo z_qt6tSB?bG(mI+xD-Fak8BMiQBtwlUol{GkI(nq@4U0^b)78pvvN}g^g7B z@D;P>pzEg2!Zsg9|FmIcVZ1tJ`xRb3h>Z$M5I@-HsKQ|zka1jkh~X;d&5=^V z4&i}`Hx>rshz|2zi|*ZzA8{roCN$?_B|UA8jDo{@$TwE2S3`gD9^iK%(dbs=_4UGY zSJX6_(Q|tHow2a3vo+TJ!QBalq^D00WM9F3JLx(*2hM5*hxd_EtWeX@-E<|VLr%}M zosS!xo%cXrwCcTf-!msknqUXkJyVOGTu5P9Z+V0jha0e-s9Aq`nyNqK!`=3KX~yy> zM0wlobm-f9Du=DgjYhTcr*W^%?VylCpPc%v?1r{7hWuwv+0}C1wNqj^Woxf^%fa2ne267#{gXTP zhmB)gwxCc(!xvJx^9!z+UCM>ppexKVSL$@Zbz-sV*uw3RX^E z^RCr!I1UD7V@05&%~9U$>c3DM8!W=r&Nhzoz1G!xKUVe?7HLhj@Obb3IA*W4jovTb z0XU)L!!%Xq5?flnquhzwUij$_oUUIHJOATX>xWXBb9-Aq33$ge>>`SXW9TNKy@G+N z-FR`}tMaMw3Wq#~+ra*wJ-^Yfc-JaNtg>2o*Gb}fU ziwU%nxUeuuq1M^5sOPn=0yC3g1=DPV zICv#t-4e>$9=WvCBs_kZovOc!-|c#+l_UGYtu(l(;|qK!2r@nO>>ZAudxBww5CC+t@6hoq;YF& zlPt0;A8$`HYt|GMF_%1?D6{)Ph?&{N6%<@sv|zz=`@iY3<7)9hd#l{P{~X(4P>z~_ z?r*CH3#S1D_Ao}Rf3!BqYva?%`5jc!&4hf{B?Adc#iZ(zi1=}2^-Mtazss-cBdk)5 zcgCD*JsdRro}0Ll8 z(LPyfvO1YRQf{sD_*1*PEYyCgf5mWmht#EK0<(r4Ty>tek65DB-kO&#vy1CZRoa^E z+AK{99F?F#&*pt_bOPbN2=6hfi@=t_P|wiq!e%o7|7^@QuQa#bPBl64-GkI!J6l({ zJ=yd<5YqmcPT1HaTxaA$LW7WI?1=iUQlntji&u{~t@;USQFa4m>lRJYL7p2!b*&Pe$O( zJAaHr*RDTvI3pPpM>Og*Ym4{e6`ngA)hn3oURl@S_*lL*LnfLLn!9e1_cCV^{KhX^ z-{v+FQ5unjZ6a?GfoO5tkCY@xRY_^Zu4k<|7s}%b&!@4{MZ%$P-$OofJ*n5i6Ib0o zHUD_l7Jkcjf7Clgfn0--|KkVyvso4zb=~Iv>Q24lOFs2Y5z4j&^w=`U+ke4qbV!oW zvcB^f5WFz`=kQC#v55whabNegN8NJ`#^>k#tohT&eM&t46BwTNnBMp(alsB6Jn_7% z4v=4MWnRP}ZYbyd>L`fMihMxZ4sWdUl;810M`?sIJ(-0BoHtp-Mng(r{aFQfqW0d7 zL6u$SYyG<3wEm1-9`qqGK{wg;-Nb$K(`mLrB4{0*%HzB!Zz=keRA&wd9&C^5VRlYO z@~sKm(WxTKZv##dw_M&Lav2M&&ebs(aau0l@AUFRJ>x&DV{lfMd4by7L}fw3e~4$b zmz#)c(%%gXzoAqHS$)Y%AJ;z1t<24tHuVw7N3e=7 zfZuH;b;MA2JUav2IoaoKFm6^ooQ=MIW$|Tw^StE1!Qz{_1lx`sPKAFRc{VKK6`7v@ zo70()6u~{2pf^_~+ILGQW;cF^Pyy8Y(Gc8)THykdcS{kV^JmGYFn_j*QD7$2ebeOj zIL6xlJ{` zy=!9*(pi0lc9M@6kC2eSjpv~rT})UzKMA8%xD=!KgoN+mDbcy;NUu6yLi-oleW`=B zahI?xA-hXys-9&9{EmwQZvp~Tw?eZva`i~{-2j5w_Voe?BbtHHc(u64yxpc5U@0Q* zbaBm3QE%*&y*Vlj(0rHhDg>a!1FmU|@ocs}W%^YL-opClz!**ZO-0$&&09&+(-0hd zXJ{S{)q1)&yv17dFfF=MYbf%Xbc%UwIl4l5oKo`?_<7utA#Fl%k}J|8?}Kya-o!1^1#J;u1wjM00v{s!`wD9 z1MbF24Hw8_ZjAo1RqAZKHCmOM>-9Xj_@>qHQ~89)FAq%}`O7;E6cC+!Ka1I}k15sT zGeHkTH&Vt`OZQIuV5?pTY^|cYa2Ca&ch$f6wAJtG#mOs|GIMcCag{-5w2a4kROpK? z53}esP0d5A_wPFjO=xErD6h`@E)D6KUvQv}=JS=^J3}toXvPDW_C5AzJ1p&CI(Muu zf0Y>CLHX*>I+T2(b_iUbyhJad3)@FKp{iY5s+>=LZ+Nv@nVya_yfMPcAaxKcaRp1@ zmQ1^jVO9d*F#OF;b`kQwmFt!kK?EOvO) zWPQ$n=zPr#7oH(y7u#GV&$;q!?YXDUW250D&CvMxJDad(hLL49h+O*z=4EJ>i(ZF~ z*3YybBj4*)%o%fLS@MwQUvF*B;zBca4%y#n*qWg_@<6zUR+tdz= zeruB^8cAQol57`r4Z`(UUHL-DYFJ#~OsU0-;JU@Db<4+j)!qA2*|QE#zsy*LH{{p( zIBa%x*&aTA7eqlJVLt~fn1{P_tj67^BYIscO`>Vh-#_YOhB}hWUkubgTs&=$7$>e) ztXAJG=Y`%KUY5gKive2w#%Y_mhS4DH<6b3+(;yn zM3C;1Uk$C4NW*-ePY$dOjFngPTa**4?7yS6U;C}emJf#@^XVu z%JoQ+nX{x-QPDHkW4`23E*k_Myy32BIn{ezTJ8o_y`o3 zB1qbKumscb!lajDrY>PKxlX2E<@_$=c2op^W_2f)wZr9d-lQWhw9ZpMy(aOV>*~C2 zZ#XFCKUdVqR6IlW05U^@m6X(nq%pecglgd z^XJh_ok`EGg8En{3f%9}4U5c$oMyPZ;ll`juT!3;d~Jwu zNw$3+KE9sX6sb~0){+xPltRWO2Fz!$L7|QlSG6~%KqKlJpc>89)YTzp|NRu`L;t^h z3Q(?Xw%~%`_UNC4EwK*k6}6bwQD44X;fhS(_K;!_eVZ_uBV=FQ(8-v+`hnUZ|GxH? z%}KYAY55R9I4m$uWI0SYmQ)DH`uHF^W8>mHznSHDd-R=%x#_929kq0O7zVhF6-KOa z@pj&|rgR?hdVRY|7ynpsUDOS(DU&xD^Mj;obS*)2fE(!(uhE&VnWJSd1oUifA|M=U zF4-UWVP4%QaiWr0eKDfJ2<-Au27BuiN!6Lpt}@FR7c`g|d_UtZ|MfYJq*okyLEAqA zqPpbc&MW@M$NVtA3DP6F84#ua%N_eTH$_QgNO7E!5k9eXLELYI_zB6gbv^g6_gIcD zHFW0a+&$}LSrlha^s187p0p;*l10w#p6n-kLo(0yV&X(;ikO@?@qV@b{^Ncb8vggx z+SW+l%`Rcsu|kLU1}iJNDjC6@OiJW%N$hC>%iww+xjIt1xS6Ontbg=sMGj~S0eVg8 zyM;u8gzDj^)5Mo2+auqrAziT1wL60_bLX*w*G|P*_-!gnN-np=V6d>vEJ&HE0u_IB^0FQ&v`fGkee@O_1Q{ zU-J;?0g?~Uh^7SMl*^azJo)w_MKLT<%6kNbs?#qv2hxxz+8IiwdL?{&kz`LEPw*+7mRz{XoU?FoqXnvC5^JV>wY%85R~6`(`L! zpAkrol7k;GhFpPz4kde%mjD}Eb4SNR<9ACT{!AVm2cO88y&ge7jlo7(Z~Hy5LZd4tcipuY?GmxjAL2}rEfYX-6eh9pZfr^S#(|i0fBEnY zIq$W!v&SaK$$>#R{ZzfgEQOm-`T8&hsCa&X)<_f`7AV7RPTx=rjV#|KDs&tIwp>;< zqkGfUlWIM8W@lzv-;H^JjwvVa+(Uz*604tBIlLmXw>C5nG#D2Las~PT4IC?CjpU$( z6q|@~a?oZ`|$ z#KFeHWeJaSg`&kx={Src+T+}ZB~D?8*LqW5pQbZQxL_0v$@jQGMq$SM^l~}ab;AI! z_CWKV#9XO?(a}*4U*!TM^keKQY}AXFCT^#?+jY_`$!Wfq<>pPf#7~U|Z4K=va7zn} zdMOD>q$O1C78K$ED)v$`0Q<<6+-CxvveK`X_gh( zjg~c!elG6>$}Z4Qm%4UMCN_^W3v@;+hbtVWiDDUifi{dq$YP+ImY#ke$ZzQQZUSBn zng~=C`iZ{(^ZrT8+BvEEJ%Hmxevm_Q}y4=NHsK z%{mqiNxWLx>ENqtl{M`!Q;dQgEma1rrb__d9>ryjKtR_SfWbY<9~pyB2O7eDo1CI? zt;by!mV4&!ea#L$k`Y}@EX2OnH^CG{etv#1(7fGm4r7+i^XeL1F>b#ETKQ>Xk(A4| zdG9xKQT1H3fNhMRDIWLU83$ZulJ|D(fjDTePRH^@i`tFcsm%0hto7Q1PuukxnyaV; zZxGlnHI!@;rFtM_w(o?DmRLQnxfmzN^^l8)#~ZhhUYb;a;c4_jy5fAq;WO{HA5Pzg z9v*D=)Y(X>N84reX268^0R-f`cI_Ilj6)E~VWKW+6OOlBk>&f5jCN$NYONhRy0phc zFpJm^xD29-Mq$F2fQL7FR+GyUMVrLl7zi7+VJqY-S@G)FeD*oRx>tG#(SxPpo-Aft zP9R;%FiJ5w#LvdTf-TA(n}e1#kUZRsYYmL9V$;7J&_=#>V_wUpgQiBI zCujjXHySVMSkj@SrdGCp`moA*vAqI!re;0nS4eTvlI%i%Mn(p3>yA1BUM+_4SdX5j zXX0JHesyCS5Lhu5@h!g`ZO#dmtZRZ64l4>JwPGQDsAR<>&FNZahBOdjp(!@P7(|l~ z?jc_DR=Z~UX4io&h>wp?O}$wuYBRt+*tR#YI>`svd!&~7UE85v;F42$K)BGRx;MDe zIglx{$DxU_aHZdhuCyH%2nhA?HCmpY{+TQv1lrr5hWUeHO9fTpMKqcTYyQ$#x#cQN z4V;`xux5MT^M07nbXV>#gSCu~!$jxn7b`#~;2k`5kp0sL9Cp!gl{sLHQOt=S@nQ^_ zsTHN(R2qXW_Td#uK{U}3He%{pTho(#IHx!AgF7xOx`M4P98y~Z@(q|HXwprXFB(Uy z!-yNcLVS9)Fr1L*>!Vh0PcV*MJrStC0J$EYpAQ2X!J8MeVupn)9_rt>w$8eF2mNdb zXlz_F;|bOMtSuc~lLnOGh9f0bH`MELa)M8eNC=O>`uD_mqoVz~7$~SU{wvo5gn>*X#5VKsK@#!8RH9h^|91%Kg&dkk;?<_bnUb*rcTOPsK zI_qRac)O7hX0!%GT(0SA*VXNsjHR46ddu5@T>%O^AkI(*HNk9KcXxM3$8_)+003WP zK$eqzzM|)p4dtCfaX|CeCmp{1^XE^{9dvYb6fGvA#A_HsF=q@i@|G5~W?eyAx^8!O zw=IIb4bD{N%|bwoyI^wz25_um&hifb2Jd zsI+ab&96JG3RVQN76k=P!PaJptzOw*gA#ztfooNJE!JHD0Ywq$vY-{e-U7Ye=3GzM z)!X-JKt=HzBaL|FOcXyZd?pX{hTdLYTj2#RqD9f_QhSY0;zD*_xg<}RXa56-K;Y6~ zQ(jvEy4{$Vn5OSt(%yoQ$-%`VCB-!iVK7xGVupo?EaHW{cI|0nO7golfnIhP#9cMD z(BRfCK#yeiN%hCX^X=LHOjA`0z%?rsf#?Ds44`5MV%;e9FpxiZZ-6J%GJoI6EzBx^ zj04hKVjX8YD}f%`!x0<=QWx?I7Y;Gm`KD7TVN#q_0N~X+FY3~QzFK)#3q~@?1B+4W zCTw)@g(Pi=uhyh+OLKCzcM6S;dwRs>hNs*YO^b@VG+mlqT+OhU4k~o8F+dA)9|?e- z-l3Oqvn%L)O$*4=&lVRIMaBsv9~3&FRo6>oahK5Zz2>b*Fn%678_viKF+pGl}4TQBo)XVV`$jqV^>g(%A`iG4}u|M-S zGJ2eij86Sg>fjdxaR>yWJ$+ap&nt9!ZZ4gC6JSj(X!|>CZC>;yP(=V(mh5#yvP6OB zOw#S!x0NHK#6&O0Ma2O{O1N*jN^G)9@Vj^K<3J$1Gof8u4H$MQ`$-ufS+pA|xt%y1 zK+GU!a~uS+o8rpibtXt*!dA8fW^<97_vIfY;i0oUF=OiOYZE-+K9wm5?faEGhjh2$ zT6=Dg1E6tgKhIWoK7ULCKJ#F@ImFC#sxd&oVW{A#z#&Mf23{{#d(rD)FyXou-5tv( zQkX?MN1(Gq&jL%guHmTd%G1kFQ~}cDRV^*8(oJ@D_R)jC>h_3x_{VB^v&-SZ(%$mT z=3CI-GsG)Ju<0M<9s*Sp91af;51*L@peWKaNTgqMrj$o3VB9Tyi0T-i|FUC0F^MbFEwDppX3U!ksBs69n4zHFE87{J##EJ*VnCn zBsYP|s7uki)-Dl9lr^QMJ2n>Vwu{U?rA#pRGS#QJs=iwJz;_E-Q3BfMseWh(LWA<2> z^A0!TbzGKT)ZvuER407{-Jw4A@L5yT3uqtX(tJtnrAyMA6YPt2Ywk8BNqV~05aJHVgzqteuw)rU#KJV*;1qN-z7=*DZOw&yaF-A0^L=e zfgB!8r+m1f`1b8vAn3kx_pVNYR+=;xsRcBd0BFZhR$4i>ZCrGJ^7!!(m^biQpOQDj z0WT$^VB+pLfA%b}zDIyX5va|{u|3#bFDxu9dhGsL{x8BWe`auu|9SKI#gIX%(}MJ6 zz)`^^cK7yJ+1PlEDte#E>*X2k?bH!Khj$uG$J8BS^WVIA)BF>g$acKk8c7+eff~MJ z6%HVpbyTORCrM%A!`nc1_TKu$B+hI{kCBP6&6$OGE9qInF>O-+G-ISJ_Y z!Q@AnJdj+=mlUbU8MvE1NlR7s&PV55;?)E z!^MhV^*U6|yg(KQSyd<|r@Pp52O76|`SRt)#zu~5z)wfW>+{Wk=^pFe&-Z}bW@6jW zwqTsx1{9t^QA$+F#&sw?c+lF`ra`O{CIIs}yr1 z5zIagmxc1Q-HTfSF>j<1sVU2HN!WhMM@rHPSrk&Md^A44~fJCJwgx-Q^ zjOehT{jG(R!{M6L#gdW|V8Fy-3?_-k#4j90BL{llIeA)KTP$Z!jU zoNHk70TYvym)nB}55N!wFvJxw7^CJp6#%q$H*O3-Y6y4&uPPtKd2;fo`Mg7xZ(zZ1 zmUkpSd;T1(OJ?20I5*C0okJzgV z8mN;xc0+8$0~Q1jxBkVcq0*r~$x@c5ew*_}a1sXJ__+TKeCz;X2jEJM3C&~f6kTt& zm*x1s7h;z44huY*36w$Rhqm)xX4WrQ=^NhsPqaI$fvQcIsB&Fw9n@9W?m(5Kywtsi zJeHgifjpPd@SCYut2w(x_=fO?m;nsj*4Vr$H;CAoIKn-EJB-~nplom1O(Mk}BzK*( zqEvbaosTca#GM7o%{uE8sX+&adZA-N_O~e~TrBGkTi27v?kA7Sf+33!0a5Qa18~5z zh6#B;-!A?0{2&>D^Kb5EA1&*jARENMnd#NB?j*#@W@9+LSoXTOBrZ=!!$%e4D2pTJ#ii{WcHI zf6Zgn4M}m~0)lak8?Jp^9ciO7DBL)CJM>h4*HTBRm*5NZ(&Gemzt zpy1(qV+B7bq%w+S=z(i@6!Iv#0Xd`vvk585F@dh=oTY*6>F9{~3NB#*gw8LlvYDA0 z)a=dR5*->mEoBV9fU3HCSrbI->%YnQBU>0{yTu_b4Viibg|3|Vrq#O6tys!13V$6F z9Sv^=0|F$ELjITHKOU9^7L4eaQfAU-zD(>Gc!2U2kmaDReS@0&{7)2EI`w~2`zJyE z>{*`^xmDZ2+w~2EMj&#`4+cytY-6VFpR*ko&qU{2p~Id#cdntKq5q^eV3Q~*DVv&_ z{`YNBa;pZEfa6w|SeNti@&cowfL9Z9n&-C}$SEokNQZp`b7LlMzfS9aNJ@gJsC0sE zHK^B6x|T@c$J5w2Xf~cpyWXtRW#{x|^v-@^kSYHz&{ip>(6L0+?} zq@*NnBfj`iuhwIf!$3zz2kJn}-p>aIUU7!-^{J*h{4z|y(8y?P6jqlD4Va*-c3w=w z?*eI$Z)jkkW@1HG7Y7#?y|j;)t*x!8sVQJa1PTGR1^@)ft9!v?nB)Qr@!p6VYolN7 zl6!dy(D)^^tz_q~0{ySWhvnRqLy(w3F$^{Y;*O32qIr&=``AS=qqO4#`gyyzLFkWmSB_;$@9Z-8r&I}?R7)9Q=?}=C5QtP z9kjO1ug_4;v_?JwjqgH@6opJe*duN2RO1{8Wj6TVL~TAXDjK(fQKG4-DKLUeoE#Oz zfU%@Tu~9=s?|{bkiq}u?;%P2l4rZ1{fQ|zwtN;@7Ua6czhK*sFl36Lj0s;yvS&O>B zFop)PSo{hNsHX$vV1fOw@2Gt5%gl_7xvyPnyDSHCVsU5cl%uUE!5ml@OqRGjpz%fh zeWmpJ1YknHeIsU6Wfr^cYp1I~eG5iy9IG&Zg$0y@&+ae(en{3&&(?ulLvSV9OP4gK z>4t^k46kQagKSS5Ln&xuR0%f붪pt0GFkeImd+V~7#isg+SZs~lg7<>?KBQ{) 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 XdupzYH~YtyMn(RLl1#>BgD3wBoBC~% literal 0 HcmV?d00001 diff --git a/docs/images/leases-and-operations.png b/docs/images/leases-and-operations.png new file mode 100644 index 0000000000000000000000000000000000000000..178202abdeb320b09c1d3edb3dd92c5889580d9d GIT binary patch literal 27777 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

3bOfS|9XUl=W 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 CREATION -> PROCESSING -> SHARD_END -> DELETION` + +Excluding `SHARD_END`, these phases are illustrative of KCL logic and are not explicitly codified. + +1. `DISCOVERY`: KCL [shard syncing](#shard-syncing) identifies new shards. +Discovered shards may result from: + * First time starting KCL with an empty lease table. + * Stream operations (i.e., split, merge) that create child shards. + * In multi-stream mode, dynamic discovery of a new stream. +1. `CREATION`: Leases are created 1:1 for each discovered shard. + * Leases are only created if they are eligible for processing. + For example, child shards will not have leases created until its parent(s) have reached `SHARD_END`. + * Leases are initialized at the configured initial position. + * A notable exception is that child leases are initialized at `TRIM_HORIZON` to avoid processing gaps from their parent lease(s). +1. `PROCESSING`: Leases are processed, and continually updated with new checkpoints. + * In general, leases spend the majority of their life in this state. +1. `SHARD_END`: The associated shard is `SHARD_END` and all records have been processed by KCL for the shard. +1. `DELETION`: Since there are no more records to process, KCL will delete the lease from the lease table. + * Lease deletion will not occur until after its child lease(s) enter `PROCESSING`. + * This tombstone helps KCL ensure durability and convergence for all discovered leases. + * For more information, see [LeaseCleanupManager#cleanupLeaseForCompletedShard(...)][lease-cleanup-manager-cleanupleaseforcompletedshard][^fixed-commit-footnote] + * [Deletion is configurable][lease-cleanup-config], yet recommended to minimize I/O of lease table scans. + +### Shard Syncing + +Shard syncing is a complex responsibility owned by the leader host in a KCL application. +By invoking the [ListShards API][list-shards], KCL will identify the shards for the configured stream(s). +This process is scheduled at a [configurable interval][lease-auditor-config] to determine whether a shard sync should be executed to identify new shards. +A shard sync is not guaranteed to identify new shards (e.g., KCL has already discovered all existing shards). + +The following diagram is an abridged sequence diagram of key classes that initialize the shard sync workflow: +![Abridged sequence diagram of the Shard Sync initialization process. +Listed participants are the Scheduler, LeaseCoordinator, PeriodicShardSyncManager, and Lease Table (DynamoDB). +Scheduler initializes the LeaseCoordinator which, in turn, creates the lease table if it does not exist. +Finally, Scheduler starts the PeriodicShardSyncManager which schedules itself to execute every leasesRecoveryAuditorExecutionFrequencyMillis. +](images/lease-shard-sync-initialization.png) + +The following diagram outlines the key classes involved in the shard sync workflow: +![Abridged sequence diagram of the Shard Sync main processing loop. +Listed participants are the PeriodicShardSyncManager, ShardSyncTask, ShardDetector, +HierarchicalShardSyncer, LeaseRefresher, LeaseSynchronizer, and Lease Table (DynamoDB). +On each iteration, PeriodicShardSyncManager determines whether it's the leader and a shard sync is required before proceeding. +PeriodicShardSyncManager calls ShardSyncTask which calls HierarchicalShardSyncer which acquires the shard lists from ShardDetector. +HierarchicalShardSyncer then invokes LeaseRefresher to scan the lease table, and uses those returned leases to identify shards which do not have leases. +Finally, HierarchicalShardSyncer uses LeaseRefresher to create any new leases in the lease table. +](images/lease-shard-sync-loop.png) + +For more information, here are the links to KCL code: +* `Scheduler`: [implementation][scheduler] +* `LeaseCoordinator`: [interface][lease-coordinator], [implementation][lease-coordinator-impl] +* `PeriodicShardSyncManager`: [implementation][periodic-shard-sync-manager] +* `ShardSyncTask`: [interface][consumer-task], [implementation][consumer-task-impl] +* `ShardDetector`: [interface][shard-detector], [implementation][shard-detector-impl] +* `HierarchicalShardSyncer`: [implementation][hierarchical-shard-syncer] +* `LeaseRefresher`: [interface][lease-refresher], [implementation][lease-refresher-impl] +* `LeaseSynchronizer`: [implementation][non-empty-lease-table-synchronizer] + +Lease creation is a deterministic process. +This is illustrative of how KCL operates. +Assume a stream has the following shard hierarchy: +

+Shard structure (each level depicts a stream segment):
+  0 1 2 3 4   5    - shards till epoch 102
+  \ / \ / |   |
+   6   7  4   5    - shards from epoch 103 - 205
+   \  /   |  / \
+     8    4 9  10  - shards from epoch 206+ (still open)
+
+ +Then [NonEmptyLeaseTableSynchronizer][non-empty-lease-table-synchronizer] +would create leases dependent on the configured initial position. +Assuming leases `(4, 5, 7)` already exist, the leases created for an initial position would be: +* `LATEST` creates `(6)` to resolve the gap on-par with epochs 103-205 which is required to eventually reach `LATEST` +* `TRIM_HORIZON` creates `(0, 1)` to resolve the gap starting from the `TRIM_HORIZON` +* `AT_TIMESTAMP(epoch=200)` creates `(0, 1)` to resolve the gap leading into epoch 200 + +#### Avoiding a Shard Sync + +To reduce Kinesis Data Streams API calls, KCL will attempt to avoid unnecessary shard syncs. +For example, if the discovered shards cover the entire partition range then a shard sync is unlikely to yield a material difference. +For more information, see +[PeriodicShardSyncManager#checkForShardSync(...)][periodic-shard-sync-manager-checkforshardsync])[^fixed-commit-footnote]. + +## Lease Balancing + +KCL balances leases across workers at an interval configured by `leaseDuration` and `epsilonMillis`. +Lease balancing is done to protect against interruptions in processing should a worker stop updating the lease table (e.g., host failure). +This operation only accounts for lease assignments and does not factor in I/O load. +For example, leases that are equally-distributed across KCL are not guaranteed to have equal I/O distribution. + +![Sequence diagram of the KCL Lease Taking workflow. +Participants include the LeaseCoordinator, LeaseTaker, LeaseRefresher, and Lease Table (DynamoDB). +LeaseRefresher is leveraged to acquire the leases from the lease table. +LeaseTaker identifies which leases are eligible for taking/stealing. +All taken/stolen leases are passed through LeaseRefresher to update the lease table. +](images/lease-taking.png) + +For more information, here are the links to KCL code: +* `LeaseCoordinator`: [interface][lease-coordinator], [implementation][lease-coordinator-impl] +* `LeaseTaker`: [interface][lease-taker], [implementation][lease-taker-impl] +* `LeaseRefresher`: [interface][lease-refresher], [implementation][lease-refresher-impl] + +Leases are stolen if-and-only-if there were zero expired leases and the looking-to-steal-worker desires more leases. +Stolen leases are randomly selected from whichever worker has the most leases. +The maximum number of leases to steal on each loop is configured via [maxLeasesToStealAtOneTime][max-leases-to-steal-config]. + +Customers should consider the following trade-offs when configuring the lease-taking cadence: +1. `LeaseRefresher` invokes a DynamoDB `scan` against the lease table which has a cost proportional to the number of leases. +1. Frequent balancing may cause high lease turn-over which incurs DynamoDB `write` costs, and potentially redundant work for stolen leases. +1. Low `maxLeasesToStealAtOneTime` may increase the time to fully (re)assign leases after an impactful event (e.g., deployment, host failure). + +# Additional Reading + +Recommended reading: +* [Processing Amazon DynamoDB Streams Using the Amazon Kinesis Client Library](https://aws.amazon.com/blogs/big-data/processing-amazon-dynamodb-streams-using-the-amazon-kinesis-client-library/) + +[^fixed-commit-footnote]: This link is a point-in-time reference to a specific commit to guarantee static line numbers. + This code reference is not guaranteed to remain consistent with the `master` branch. + +[consumer-task]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/lifecycle/ConsumerTask.java +[consumer-task-impl]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ShardSyncTask.java +[dynamodb]: https://aws.amazon.com/dynamodb/ +[hierarchical-shard-syncer]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/HierarchicalShardSyncer.java +[kcl-concepts]: https://docs.aws.amazon.com/streams/latest/dev/shared-throughput-kcl-consumers.html#shared-throughput-kcl-consumers-concepts +[kcl-leasetable]: https://docs.aws.amazon.com/streams/latest/dev/shared-throughput-kcl-consumers.html#shared-throughput-kcl-consumers-leasetable +[lease-auditor-config]: https://github.com/awslabs/amazon-kinesis-client/blob/3d6800874cdc5e4c18df6ea0197f607f6298cab7/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseManagementConfig.java#L204-L209 +[lease-cleanup-config]: https://github.com/awslabs/amazon-kinesis-client/blob/3d6800874cdc5e4c18df6ea0197f607f6298cab7/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseManagementConfig.java#L112-L128 +[lease-cleanup-manager-cleanupleaseforcompletedshard]: https://github.com/awslabs/amazon-kinesis-client/blob/3d6800874cdc5e4c18df6ea0197f607f6298cab7/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCleanupManager.java#L263-L294 +[lease-coordinator]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseCoordinator.java +[lease-coordinator-impl]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/dynamodb/DynamoDBLeaseCoordinator.java +[lease-refresher]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseRefresher.java +[lease-refresher-impl]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/dynamodb/DynamoDBLeaseRefresher.java +[lease-taker]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseTaker.java +[lease-taker-impl]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/dynamodb/DynamoDBLeaseTaker.java +[list-shards]: https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ListShards.html +[max-leases-to-steal-config]: https://github.com/awslabs/amazon-kinesis-client/blob/3d6800874cdc5e4c18df6ea0197f607f6298cab7/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseManagementConfig.java#L142-L149 +[non-empty-lease-table-synchronizer]: https://github.com/awslabs/amazon-kinesis-client/blob/master/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/HierarchicalShardSyncer.java#L857-L910 +[periodic-shard-sync-manager]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/PeriodicShardSyncManager.java +[periodic-shard-sync-manager-checkforshardsync]: https://github.com/awslabs/amazon-kinesis-client/blob/3d6800874cdc5e4c18df6ea0197f607f6298cab7/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/PeriodicShardSyncManager.java#L267-L300 +[scheduler]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/Scheduler.java +[shard-detector]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/ShardDetector.java +[shard-detector-impl]: /amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/KinesisShardDetector.java diff --git a/docs/plantuml/lease-shard-sync-initialization.puml b/docs/plantuml/lease-shard-sync-initialization.puml new file mode 100644 index 00000000..b4aa2de3 --- /dev/null +++ b/docs/plantuml/lease-shard-sync-initialization.puml @@ -0,0 +1,23 @@ +@startuml +'https://plantuml.com/sequence-diagram + +autonumber + +title KCL Shard Syncing Initialization (Abridged) + +participant Scheduler as S +participant LeaseCoordinator as LC +participant PeriodShardSyncManager as PSS +participant "Lease Table\n(DynamoDB)" as DDB + +alt on initialization + S->S: create PeriodicShardSyncManager(\n ..., leaseRefresher, leasesRecoveryAuditorExecutionFrequencyMillis, ...) + S->LC: initialize() + opt if lease table does not exist + LC->DDB: create lease table + end + S->PSS: start() + PSS->PSS: schedule self every\n leasesRecoveryAuditorExecutionFrequencyMillis +end + +@enduml diff --git a/docs/plantuml/lease-shard-sync-loop.puml b/docs/plantuml/lease-shard-sync-loop.puml new file mode 100644 index 00000000..6c0b9a63 --- /dev/null +++ b/docs/plantuml/lease-shard-sync-loop.puml @@ -0,0 +1,52 @@ +@startuml +'https://plantuml.com/sequence-diagram + +autonumber + +title KCL Shard Syncing Main Loop (Abridged) + +participant PeriodShardSyncManager as PSS +participant ShardSyncTask as SST +participant ShardDetector as SD +participant HierarchicalShardSyncer as HSS +participant LeaseRefresher as LR +participant LeaseSynchronizer as LS +participant "Lease Table\n(DynamoDB)" as DDB + +loop every leasesRecoveryAuditorExecutionFrequencyMillis + opt if worker is not leader + PSS->PSS: go back to sleep + end + + PSS->PSS: runShardSync() + opt if not required to sync shards + PSS->PSS: go back to sleep + end + + PSS->SST: call() + SST->HSS: checkAndCreateLeasesForNewShards(\n shardDetector, initialPosition, ...) + opt if lease table is empty + HSS->HSS: getShardListAtInitialPosition(\n shardDetector, initialPosition) + HSS->SD: listShardsWithFilter(initialPositionFilter) + else lease table is non-empty + HSS->HSS: getShardList(shardDetector) + HSS->SD: listShards(...) + note over SD + ShardDetector invokes the + Kinesis Data Streams ListShards API. + end note + end + HSS->HSS: checkAndCreateLeaseForNewShards(\n shardDetector, leaseRefresher,\n initialPosition, ...) + HSS->LR: listLeases() + LR->DDB: scan(:streamName=streamName) + DDB->LR: leases from table + LR->HSS: leases from table + HSS->LS: determine leases to create + LS->HSS: leases that are eligible for processing + loop every lease to create + HSS->LR: createLeaseIfNotExists(lease) + LR->DDB: putItem(lease) + end +end + +@enduml diff --git a/docs/plantuml/lease-taking.puml b/docs/plantuml/lease-taking.puml new file mode 100644 index 00000000..a49de758 --- /dev/null +++ b/docs/plantuml/lease-taking.puml @@ -0,0 +1,33 @@ +@startuml +'https://plantuml.com/sequence-diagram + +autonumber + +title KCL Lease Taking + +participant LeaseCoordinator as LC +participant LeaseTaker as LT +participant LeaseRefresher as LR +participant "Lease Table\n(DynamoDB)" as DDB + +loop every 2*(leaseDurationMillis + epsilonMillis) + LC->LT: takeLeases() + LT->LT: updateAllLeases() + LT->LR: listLeases() + LR->DDB: scan(:streamName=streamName) + DDB->LR: leases from table + LR->LT: leases from table + LT->LT: evict from memory any lease not returned from table + LT->LT: getExpiredLeases() + note over LT + Leases are "expired" if their last scan time exceeds the max lease duration. + end note + LT->LT: calculate lease count per host + LT->LT: chooseLeasesToSteal() + loop for each lease to take/steal + LT->LR: takeLease(lease, worker) + LR->DDB: updateItem(lease) + end +end + +@enduml \ No newline at end of file diff --git a/docs/plantuml/leases-and-operations.puml b/docs/plantuml/leases-and-operations.puml new file mode 100644 index 00000000..d865fa6b --- /dev/null +++ b/docs/plantuml/leases-and-operations.puml @@ -0,0 +1,35 @@ +@startuml +'https://plantuml.com/activity-diagram-legacy + +title KCL Shard<->Lease Assignments + +[*] --> ShardNoOp +[*] --> ShardSplit +[*] --> ShardMerge +ShardNoOp --> [*] +ShardSplit --> [*] +ShardMerge --> [*] + +state ShardNoOp { + shard_0 : lease_0 +} + +state ShardSplit { + shard_1 : lease_1 + shard_4 : lease_4 + shard_5 : lease_5 + + shard_1 --> shard_4 : split + shard_1 --> shard_5 : split +} + +state ShardMerge { + shard_2 : lease_2 + shard_3 : lease_3 + shard_6 : lease_6 + + shard_2 --> shard_6 : merge + shard_3 --> shard_6 : merge +} + +@enduml \ No newline at end of file