From 620c4417a243c15784e66afeaac31f67bb82bfcf Mon Sep 17 00:00:00 2001 From: calintje Date: Wed, 6 Nov 2024 15:49:08 +0100 Subject: [PATCH 1/4] Add overview of Orca SDK suite --- docs/whirlpool/docs/01-Welcome.mdx | 40 ++++++++++++------ .../img/01-Welcome/orca-sdks-overview.png | Bin 0 -> 53987 bytes 2 files changed, 26 insertions(+), 14 deletions(-) create mode 100644 docs/whirlpool/static/img/01-Welcome/orca-sdks-overview.png diff --git a/docs/whirlpool/docs/01-Welcome.mdx b/docs/whirlpool/docs/01-Welcome.mdx index f3ec94d9..810a5603 100644 --- a/docs/whirlpool/docs/01-Welcome.mdx +++ b/docs/whirlpool/docs/01-Welcome.mdx @@ -6,7 +6,7 @@ import DocCard from '@theme/DocCard'; # Welcome -Whirlpools is an open-sourced concentrated liquidity automated market maker (CLAMM) program built for the Solana ecosystem. +On both the Solana and Eclipse networks, the Whirlpools Program runs as an open-sourced concentrated liquidity automated market maker (CLAMM). The program enables advanced DeFi operations such as creating liquidity pools and swapping. -## Introduction to Solana. +## Overview of Orca Whirlpools SDK suite -On Solana, all data is stored in accounts, which operate like a key-value store. Each account has an address (the key) and holds specific data (the value). Some accounts store only data, like token accounts for holding tokens. Other accounts store programs that define the logic for interacting with the network. For example, the Token Program manages token accounts and facilitates transfers, so each time you send a token, you're actually sending a transaction to the Token Program, which then updates the balances involved. +Orca provides a range of SDKs that cater to different levels of development needs for interacting with the Whirlpool Program on Solana and Eclipse. Whether you are managing liquidity, building applications that require pool infrastructure, or building automation tools that interact with the program, our SDKs cover a spectrum of functionality from low-level granular control to high-level abstractions. -Similarly, the Whirlpools Program is a program that enables more advanced features like concentrated liquidity pools and swapping. It creates specific data accounts on your behalf, such as Whirlpool and Position accounts, which are essential for managing liquidity. While the Whirlpools Program "owns" these accounts, meaning it controls the logic governing them, you still have authority over specific aspects, like managing liquidity in a position through a corresponding Position NFT. +What follows is a brief overview of our SDK suite, distinguishing between the Whirlpools SDKs and the Legacy SDK, and explaining their intended purposes and relationships. -With the Whirlpools SDK, you can interact with these accounts, perform swaps, and manage positions with ease. And since Solana network transaction costs are low, you can execute these operations efficiently. +### Whirlpools SDKs -## Whirlpools SDK +![Overview of Orca Whirlpools SDK suite](../static/img/01-Welcome/orca-sdks-overview.png) -The Whirlpools SDK is an open-source library that allows developers to interact with the Whirlpools Program and is intended to be used in conjunction with the Solana SDK. Simply put, you use the Whirlpools SDK to create instructions, and the Solana SDK to send them to the network. +The Whirlpools SDKs are our primary set of SDKs designed to provide enhanced, modular interaction with the Whirlpool Program. This offering is divided into three main components: -Some of the main features are: -- Create instructions to set up a new pool, open positions, add or remove liquidity, and swap tokens. -- Get quotes for swaps. -- Query the state of pools to retrieve information about asset prices, liquidity, and fees. +#### 1. High-Level SDK +- **TypeScript**: [@orca-so/whirlpools](https://www.npmjs.com/package/@orca-so/whirlpools) (Requires Solana Web3.js SDK ≥v2.0) +- **Rust**: orca_whirlpools (in development) +- **Description**: The High-Level SDK is our top recommendation for anyone who wants to integrate with the Whirlpools Program. It builds upon the Low-Level and Core SDKs to provide an easy-to-use interface for interacting with the Whirlpool Program. This SDK abstracts many of the underlying complexities, such as tick array management, and makes managing pools and positions, and executing swaps much simpler. It is suitable for developers who need efficient, high-level functionalities and want to minimize manual configuration and management. + +#### 2. Core SDK +- **TypeScript**: [@orca-so/whirlpools-core](https://www.npmjs.com/package/@orca-so/whirlpools-core) +- **Rust**: [orca_whirlpools_core](https://crates.io/crates/orca_whirlpools_core) +- **Description**: The Core SDK provides essential utilities for math operations and quotes, required for working with liquidity pools. This library focuses on calculations such as determining position status, price conversions, and computing quotes on adjusting liquidity and swaps. It is written in Rust but has been compiled to WebAssembly (Wasm) for easy integration into TypeScript projects. + +#### 3. Low-Level SDK +- **TypeScript**: [@orca-so/whirlpools-client](https://www.npmjs.com/package/@orca-so/whirlpools-client) (Requires Solana Web3.js SDK ≥v2.0) +- **Rust**: [orca_whirlpools_client](https://crates.io/crates/orca_whirlpools_client) (Requires Solana SDK v1.18) +- **Description**: The Low-Level SDKs are autogenerated from our Interface Description Language (IDL) using Codama. This SDK provides direct program interactions and is designed for developers who need complete, low-level control over Whirlpool operations. It covers direct access to Solana accounts, instructions, and transactions. + +### Legacy SDK +- **TypeScript**: [@orca-so/whirlpools-sdk](https://www.npmjs.com/package/@orca-so/whirlpools-sdk) (Requires Solana Web3.js SDK \d+$XBX;PG40#X8mj?@sEND-t% z2oO5b5_<36gYWx(_xlU(TKC@HUW+6r?6c3_GqazWdFGr%yi!vjxkY;m1OkyLDavVr zK-Ynf*Z6M|0&m8p)xN+Rk+b4!HxP)J;_43%l$JpQe2M3#sUQO?>!)7>4hXDXsJ;M! zDr1SyO@Z@=y_Mu%XnW(WUj$XqTQ$svHA%V!;xRe5+9}j3d*NxKzm@tCtvkXrH8!t# zA-*wT2*#Abm5bNMAiJ@01dbWZoS$!&zzp~_?tbOyH`9TbBo^IMLS1{Rr}TQ5T3@fb zPNpneM=7!BX|jnKs|7VtiKF9sVWY^gM_|9r(a~CQ|77uhBo_RiDE^-^nBEXNd`JKNY^2Mgtk?Om+vfIXo&(9Ci%GxD<-XYI z`5(rvUFs6(qw|e7S;%6&Sx<#nsl}KFe)*rgc1MXf=f1PvDErf1HBgVKb3$w@@AjcpgsKIW`TQ>78Thq`lnSyw=@@0?7h|l6j1(EwI)tYkOketKF+&X@`}6 zdOKb=DqO8SSRp$w`r3yf!B!Nf6UO7?phxE#KhKd7zjpa`Y2Hbk5!?GY;ZOZ=8AU<+9#JSB@a2-W}*sZ$Gu?Hokl(?z4N{>#}bPIWd91w0pW< z9b_H?iSPQfWv+V68WYqfRj!;o>-kqv7!qhP*8gx_Gz=sHg3e}%Uc5KbTWv5od>-g9 zSI*y`d66l8HjQrhMSUjpv5ZkI>qPC z*?r{QWv7BP&QERg8N+cXy~88n)XjTDL?L!BZXCr1UPg6_%g4=<#2*)2xa0I%JhP_G zpZ+=7=ck}$Za)>b)e(3%gGf)3_ANa;>DHR9MQ3;)+I=4oY@dRP!;ZZ!+vKDE0WR@m zH!I^>J1OWaZZgLgnr%m9^x@d9nZs%zpnOG4_Lp(Px$fOPN`9W(zxvdrHt+taEgr%L zdGeS)0)fxtb;OyrPw<;E(QabAdOO$VbEkAhz8meN4;ryYs3Y$a1)r7(z;zk?CWF%a zYsh$vPrtW{_?EUCAdZ;mv2J8UVID;bS&#zcm2UunD%^$+rVemhZyHMbw{YnDdNUUh z7l8*@aeVWWYNJ$fcL#C`Qrz+FC+*Up@%~S$6mg5J&3Eq|C*0ylVBtuZH0a<7IzJYE z@8W@88Klm1zH!KUxRsg=S*N(~(Y5w-MEy`AzaiL4t;L$6^K(I#s{*O?61Qe8KKVxE@PoVDqv*kGh2iCVNAm&6nJQS=O6s571>k26ir5XC|npQ1mQA_R?ZIS z*2xk5O{cDi^RISzMpmf0rK#fb{fw$JT;Zu;#>%)}^V?@>gPsu+6BBcLqs zLkE%6r0JTW7pKgZL`{S{WT0A3b1nQq@olDKooRnCF*n^ydWi&8?v`~QC^dmBX)Cc) zqa(%FVL3sfLY7QTH9?ybq8F=MzR-q7mN~BUJBc|ZG^*S$7;`x_mnag(;Nt3TZf>yf zHPO9cVoz3O%qDTKtq)Obq+YplHjzOk?pK!BNuzks{MnF9?exWG^wtRO;v4zQ{;3^W znr1a;bk875jYS4$OMW9g?znish*hFez}^9Qs1tw8I&0Km zROlR^x`|~Ss)<;Ltr_Z~?kjOam!8*rAIdeZ!QFuJ%r>4VziH+e)v>e2`6CUR z>yrwNiBs;Rav4ukbtFELS=qSEZ%Gru`pTf+9vEQ7gwb~XV8`1i$|JOGfqDzQJ$XHq zM!&JFEn`RFCiNCA0cgDJQ#7cMsGtPjn>$G5##@Gprg2zzk9bGpU>;Jn@*X7U;n6QJ zNV7>)^%aWdnLiX^s-;?U-j{yEcZ~fzIOe%(5_!XUdlAtyChHRi?Y>*8g@M<4SqEct zf8qL*4z))7b`Q=*H^y_(zuOjgZrlnssFPxJNDt9ys)fgIRU8kfZSgRHeCIW{YS#L* z)HTXBgXTxt?}D!OqKSA8?g4ZQ+mIi~UF_yG9i03q+m~y|-QiV1Z&8sEX4N0kFC{ox z2q8XB#~!%rw{XqenJb@{>ATTXZShDbfSgKnW=+60RIHpJ~!n6;0Y+v)c$wLN{9%<*pprG{s~?c$6=Aw??uE ztkaoku?+aK-l%|XKTa&8!=lN> z{-Djt*CZYy1xUCv~sg|a$Tss*)@msqN z<#)bFzGQaXNjK>g_&6GcwU)sYi@!ywH7`sd^mYY81l#Rx%W^gj4g-`$t=Sfe9fq2} zGs_P+#ssMUfs}h6)5tr+=nvRXVT~5T63d%wqC_#V;EckWAC^z-KT-Q3A%84*X2ee5 z8`Qk>%V0X ze|l6-Fw6GoQKp!$p zl|bUD3-{~zMGZ74J1zV`zoB#R;Dg-o@&+)hSf?6jG=wRk?LKxBr}f_Ab=}g9(fVb@e!mqE!--&!2~(qmOMHWaRIG`7-8exv$UAv2Kg_|%j|3ne?sAW+JgpjOPl0B(bpiW@TGorrpZbQKH7NVakUN*hKlFwiCqSV*g)+!$;3VH zATEs-_Ob-@t4|1oG4c-iEcS6uZHKWFDr;mH{HSc~jG|dPzJH(wnrld5{hBBt8^>na zM_7gXYWhn`DPupTOJg|BLo(+md*8a}241V@+qUTYVima7;%*j8I&?@ucZa$FhDcS7 zJi9tt#%uYv^N1f@O^W;*Q;O26c2AWT+(z@@x=rzxY7kDcD@o7cQ@(q!f164V#WkX0 zNN_LGziBybusP`hf=jk8aM;^ahFY&ma%2v><5qY0d71|IQrhLFq5C%7xp^*juDZFg zZdNt1&9?nLhV3d~)?BBXk3VZ*sL130#$rOW(7i4KSk-Jmsr%8Izu`*|bOpQI((mMv zS-ROGR$fZW=bjZ9xZD*zXl3ps|0dC-|hO3#lG9oIp zkg7p#M5tJMpfBC4XMfUkTae&Dipl--i2J-ot#HxBezxeWVkWEqB24gpc;m$Uo5Kf8 z*G?1cfGyEBP88fs`n6<{+)L&dsf>Z0C{U{MVKsGB;i!-|S-?0oB`iL;ZJnoC>hL4z0jqoP~$GbC0G|6 z=&~N0?i_%a<**6|m*NFyYX%&u|w5zNIYn1 zXJz7mZW#y^JTU!=O8$Cf?e-8EHMCl3tDMsHFQy4pOgJOMx0^aPW4fgqE z!F8xP!ydKt`%L#Q7Na>njJ=+%^W;ix3i4otDC3hGlkslFokxoQS>Bdm0kyu2pF*U6 znX4zMXrP>!W)~d46Zm+Sz0+)$9SFjj zx8){UUHH+&pbE@$&=iaH@Sca*Kf?;)BS0PukAD+Pt>f;tINBcIf$X3DZ{9-X*FPBp z(7kp1{r|gpi>qXpbX}eP@6zo_yf*Vm$H>Z@K%h3>*%Ai&;D1B{yqfpwi-08AzW@Cq z{f1gibSRDv6imOIu5jbV!~eSd|A)uHgcR$|)Mjx25Z?m@QcB5Kqsw`Duf6zKhW`-; zuZqYx`SRwJOVth1gdk&)KMlx$v%U4YcBsUGgV%gCdfn+_>UdSwYk!>oa6FW_9GR<- z<$?}8eQ`30sgv@$K_&?>fhJaNCP53Hd{?>wfoi3Dg+U-B8GZ1Z;Ecd9QYq8-ne~Ai zO)}?ho4sq)Q-~^_^uZNTw^MnqWf*l&m*dp&U{Z3p_a-WN`tuL7FC>eB;g61KRq=C-K`v%i){eaST@vSha{ET2An>1v33<2WKe_J;cxfa9o zbf~g>rg39TEA6^`EO~$ECz|nXAz12C;6oI8x7F!VG%X5k_vY^V{(}`?|mIpz9 z{{!d$E)5z5O@Xu*)#3Hi_hu|Z4a}foe~LcNu3zGBj&`qwr_IqLAgfm%1O;W^{KGHLo@OkOMkj z(IJ8D-#@4~aBf}Z6+HNgB?J>RI$s``kbK9XXX_YaBR>D%V1gvo3>FS<_^PMyex@cX z&_u=#+oZyK7dd;m4D$3C2Lm@=pt%CQ^Ma1cFUH5IwHcTXG!A(*v;SlIw$4=*h491 ztFqjG!uB{cPHXEtbjwNc1L@YiQ88?9-?R&BW{G`F{Qx>cx4s zq`PfH+Q{+v(uv?nCrA!WSGLE(+6Ljj6~ zNbI6f>(!rY!1UfHJOz#0#C@rG7I$sx_9BVN(Um&mt~II^<~lWLbiK@}h9FM+GXjSg zd`{WD4tg+>1Dq(4F%tqH@&Bip90lWV-~IecO;vi-|A{)@jM#q+Q%?(u2FUuEsdPns z_luVwN(3$-zWM>)pq7ySJ|LCW&y~;SK=vPZ2rJG^ntj~wfEe+J>;T6Qf>AR>UcN)z zl`OjMJ%5h-Zm~pg{(EEqz({+t`iJG<|Hk2k%z+G_kdI^4BqD6dM@KD= zP7jVYDi7AbalX^AX;jUSIB_`BBb9@la4a1GsC7lE_SSA$1z<{AtjOs9XVda#4qiXL z8&~hSxz720h3TA~LBC9L;OjjT6gEoqoas_Yd*AWLo$Rt^u!ht@-^z#bctvl3I~@1L z1DW6^xQ*@ys7_+(^L^xEcJle|xm)0m2Mi{%QV! zU~O^V{nTa)Vb>f~9vleG1~`gt6m~M{00=}B{TwizyScp-MfcCxxZR9Qx@#cv9;P09 z90FlJzdc*FJ8>3!#T*%Nc2^g@t~jn_#g}(u;apLgYD#E8UZe9Om9*Bn&F6C z?Oit1QEt|s#~hatgLzy>3jnt(4v0^%q`~vz!#g+qO9@s8Kn)0`0KT}Ekf2r2b$vB? z8t@TEuSYD*XYEJh@+O1d>bnc89pI@;oC)3loC39RZB9&@!fSkZ4}ETnjusW*JhcA~ zK$;d@@;SGw8CwQ9Y24b$H=v{o4UzEJPb7Bcx|a9!7`ReZ9R5Y80^^}%nYl0OpwvRf zaSQ9O(?Wwh{}B}+jA;CEG51{-a6q19R}N?q@7f$K!u`Y{Jw;ou9R93}ZTv0uoyB|7 z0&8Q*qDNTH&EeP?tdHU5a}@jS>}AH4+4IZ%f~WYP)?A9Bh__5i1J_fR!vOX?qI0Nm zM9cp|S12n3=j5E&<%0o`YxDgHA;?7HImn+tV15ExR-Ba_D;Y^ssH7q9DXVC${Unw} zKqFIXj{%prG&EfeFzwfqrG2oNa3BUnX82x=uZBJVcFB`gKm!#uuKs{z{nUi0q&15ttludJr= z&*Gc2UKB!R0j_oZWXK%lK`O)E0+6m2t&qbN|yg= zYGPz-Hh`!&ygd?7>)3lx{Y!1Dt;qv2`!?E_DRhL!<>jYZl-t$)rpWV7?4?gkmUsX3 zDXM%!l6L}#lpWm{dyrj{X>_C8;Jpm&2%jD>yWGFC^LPl7dYtx^5V1Z+91( zu2TjHz;O4*NL(ZcHWn4w!s$b8g@E-++`776Ix%p)ui~0l+_$Pq5xnlcS7CLGo%BU3 zOM6W-WXyL0TLYx#phv$4UzM^LW$4gp67@Z)=L2kB(xe%vgV3|kOOSWPN?S=U0A#ZL zbZODg(xagPG`iXGnbUcWODaO#YpOEWcvD$@thT708;}m~F>#f8jHFh-#p%)NP+pr&IIV0tw{kvkxC1R#qjDX+!Ou+5+I1*Z>; zW2;SxV#&`wc3`O>4Xgc`etm#MN)mlbSpXZ24!)9T0N{qj9z9c!k-E^{($~?zCqr%R zvHz$n)61PR3Og8A#jqAU1bVOhhC2yMm5b&})lCBgGJp`ge$w+8Hv<;9gMg%^8DHNP5{g8}Tie@xp)msVAh>p$e8 zQRbRhJZPAcuImaFt~6RU1&vG8VtkJ4D~8Sz0kL?}_6o<6UYld#{RFC?vF6jA2BNuf z(UPv~6S{3g_ggnV5Pyp{WxW~vhUk9V&O+`7nFX?Gy1wH{Dv1uA!22)FWP z&HNqgGuRPCv{k)Ai^yrCIYYnj2GwB z%f~?ZhQN`Ck?^#zaM~?;Q#NQlIqMGhkr(K15|MrV0o^1 zkKn!#Ae|p)t8boY{#Te+a-cDH2F0{yB&;Xu)SWsH!IT-22|_jmkf}*3s`YQT5|ml^ z0tC;*`!18~@w_JP6<1-!_LTd%*gR=JZLnaEO-I&iA|x~Q_0MYJ8&FR@ z8!8sQpei0`snr_VZMmzjS6flq{JC{7XnXkQy2H`8(gLy$8>`AAm4>%sbgq;2rcPp( zm^4cly{fFY%-^Or?6)k>@&x&1)&>5&HZrW;P^%gcJod5G>wSAB9tEv7II&7)`ffCY zoSu06i<29*f@nhWI(ssD%>Wo^V)q@655isVU)UfcZPgg`?k5NtYrdZ>A>=@P9uQ?s+7}X!Lhhx~ zRN7zD{X)7UKlnIRaV*fEB}&=>2X9fSj91xy-IUys^qk_ZDAOxg=;^DEKWl3e9ja=l zRS&yrEtol`-#8bOQ8^$f#n&*3=qk0S_%(r26>Xc1*+oN^+Xo%G87d~qTRaB#L@JKs zZqd5jMb(sk`3y6gDsf6x^-y~Z^KYe+`!vQb--dX0N^6|dSrSwmsws~p#3zCtJhjNO zsx?j$H+tkXs4&?RYJy?)W8Da-Zyw;s{0xh{7;G16nKokYIk@SpbU+>PcEYpn@!}vv z%J`EkQI+I-*B|{umf(`UPSf4`PE&IFFvrUHt@x8;k#&+c1UrkoQBa|nA3hY5MzZU9 zmkPD9%=EQK11YZ_oKKdzcX?0lRK`2^Vj~ZHz$G;`t_%_c z5@IB1{j7+Tk!2yQwmMoid;UsQJR>lBQB zId>YFHs$2taybcRWbEL?EGsJY_oEM81QJtNTna|+h?hEeJp$KQrpv(vs9~F2`;nS9 zLF3h|p4{NXMP3%LMVnn$?2oiLN;&b7sNC1^DsQ+^}5G=fV+U{)J>)eYYb?zyitX}OB@~M^Tfy{y^1VCV1KuzrS*=`VvJ0m zt|?D#c$9TlvSznyO6rLr=7uT6DPVl_KQ$#2W8fQ(Ix~JjfzEeDs9_1sHZq0}qer7O zirZa78c{$lWp?UvJ`wUP8Zgkbm`Jv89RU+>1b zsd*1xv!UF4bEL~IYcDh>M5R2$DQHGI9&^>Rh$Z$9^%oI2k^eO0TqC3NB_`)({AH%T z%wDtxoB6+8UB=fK!Xnfa`a_16pFL2lD*falYCu^K z^r^sNeJrzVHHlDno?=7wTZWWHTD8I#G}9V<%-VD!aoQ^~@1I ze8GNpLK4hOu^KNq(jlTkXj=}-Qv>+!7e%Z<$goL>x2?fO@Fg!XN^{wEuMB}TgHGwx zH4Jy#rKiqOYV$Vy@y&kmUa#1p2CJE+X&B9=A#0Wr@+5*stLeSof^UEVRYRev9%ZAU zV#4q&F=7s7+`{uX?l`fBB&9>GK=-Mnun|dkuIqZLh?vce(J-gxVR+EeFHKAk_`74` zwPjmld*#Hn^%L!)w&ZgD*;<=*^BGOhvMmgC;6eo~1;7DC-Sh7=i;C_HLf zn0hu-BO`MIsz=J$U<0m|BhsWgvXxaC7cJ)RO`E4>*QsHqcJylZFkIg`1v(kIsoRRn zXOlgpM?O~OjBj{inx$txqo43mwb`*^w#Yr0v8khaMEB{VC(4xHIJm{+6D#|yH~48~ zm4@gA2p|2fd9WA2_mg>TxAO6PO(R|fEzM%8NW-_dAfeOyp7j6T=~wdPW-#s@bt6kY zGA8#cTVjMb=N|Wg*>fbzW_t*pXroF(8XK*2385TZMx~07sVSxj%o#WQL8svw#z(Ab z&yhtm>2xZ1!gH3Bp!gf2`;N?4s(4WH1|3RPWkv6_4kHI|V_)jfpr%&xz5Q+^l#SAc zV~7)c(#d{zzUENW`ZcVuOqbs8k%p~KS&a<6s{guFA7?3nr-hhXgT4)i26YTmV^56` ze`0_Xf-O;wPi^m~{JN)VLgXh|I?iS##Sd(#Dmww)2Rw2{8+&o)<%P4X8t6miSP_Gm zhRcKMCe9kuPt*rz`wVudjNB&DZpg~pO)zRj`g3d|EHRwU`I*-(-}xHBUa9WDf%ac- zAJcIXPvEG{7FNHALfl-c1@%orjL6g&K>9q+R6u?e48-#W;YP`8=S9}%4}~=fYg0LG z(_i=1Svyo+QtJ1Zv(Q%`_349`ZA%=}LUIvdK3*7G)!J$=Ssc8^M=K)LTZ?FDWGXLQ zwD5ZbHB9@4QxMAoRXOda5t{N^L~a%^RXiiT9hwYNqC{)E(>H;Mk zm=Y=QP@^jBOnxz}bD5>)V!CHUk(r?36-TApwAhy;s!|{MiutJGrqQm7`nD!wHyB?apvTxCh+%4w~n$Az!0 zXlH46zlv0+YlVEFA z2{p8OHvdx&eqxUl58P|hKGJ&xe*NPXDuLMH$d()Iv8gQw&yOxc;FZEdh!oz*Q!3cx zJ#wk8?LP2G*|x1*WbmR846NU);G`!p-`ID2?lINZK7=CFD9T-CAxrw`RGl5lvU?gZ z=}Dnro})c9#l#fD63}wb`cv^&lh>=IRB9d zDE<1ixtj?&+D4{@`5#ZidR+ue%j(`b4Xp`0Z2ehjB{RJM{!kyk@0ARVV@vdUqRM)W zF}M5!>-S>k^@Du7m%l%OY2ieW_|F@V^%OQ3t^W{rk>nX%|9M%13cbyMWzMMfTclni z8*|qT*7#9&M5D-d}Gr`U{(5` zwU~y5k7jyu?6WSyG6sa)DNjStDQrs}L&#kBsXo2WD%u&j8eKDyZ{VMPn3^MP*CWD_ zRl_F;$X*4jZWgl2VxbTwARLkF>Lq1ZeUWvWpOmYXA8&9fxB>5uf&KNXq~faCKe!qE z#3VuDz#2vF;6N|4~3eq#XQ$vOwF2?A24jjJR+O_cM>^kNIG(#s~>{)Rc;bMo}S& zNMR>r(kP;x%C7(Gq-D~}w0&Y;gPDTQQu;UTy-fK1SE$+$ z(!hRyE^Kln*wI4EDMf;0aPhMJH0xvC$5%a|RX#hGgrlHc8c(0rs@F7kd=3LkvrPrh zCoJYQJKb^_#Txhbk9)Bn`xM3Gb$SnZh+STE|4BaesL{k&(k*J;b0a`b!r$Y8_fM??6tN5$^z zg5nCQ^w2jIYHhNj*vNpq&0g~RMsMj^n!D9tfyVK1kQ4RVEWq`!>-ZuHgiPWoL`o$x zi}Lb2!5y#<5u# zxzJ^3%Da6m)8bfoS!`~TCoen;Pca`@f~x7XI5Gd;z9l-pJI)egS!pEe7C-7W)h7qf z>(WRO+RTv9F~}KxD-o?Nc$fe|N{s6yYnvCt+nXE5%&W!s&cAs)<_<+S@be`&K4qC4 zqeO2+iztM`_>UrUn>yH@I6Yt7-ic(Rbj9cP+^yteyrYm#Xg&cIWn7$h8SfU~6w2d2 zB2bOYvX`!oa-m^ZoSBAK^5qrUB`mCdB6_dt!K6x$@;tivZkkf3#u3-xU@qaL`@{v{ zZLgY16|gVf71Deyt9SM8z{Z9O&>-*%nrQC0pp*=MhENxi=;!&8V#1%>h3Q}xZ^|}1tMH2rbA5-_Zo^S%WK?eP(S^wR zCnoO+k%Z#@so-~Wv}m$hF4b5tLv@Q_Cv%Ktn;jp83(Papec5l%qGxAt(YYsfr@Nw9 zZI(JBmzFd4(~fQ$arxPvK`b}Zu-z0FRkRjW(IW5t#>no*J^p`I-fH;{Byx=ftlF-n zt!nKp^0gB}X)L_)OfWFz7BcmoRkt`S>EmW3PD{IV1fHS!OjwHr{2Kqunez9tdX0O2 z>JP*tL=Sa2azL z-cge><_lhB6Wyzv(U}T1od!HXU4MLX>apm6UdMGqdL1uI>N~s?(xjzIin4lBgJP4V zZ6q{|i;@f0Rw2(er-R8A@cW0_3ry2R8b(=TI`!hI%p0BYU)o9P(wCE{%6#c@N-8Q7 z`{H+NUNEV@QL|oiiz{iZS1G79P-OR?Fte4V&0_T?;LZewB`Y2CY|!i|R&Nq2SYvv( z{D@-IxU49wLGZ%0KwDPN&~2S-Wud>VM-i&Vb-0Mo;&32`{oYP?67 z$OV_!i9#AUNNC6*TuH+f%rR0Wk+~O@XEQNd%Qz%|mmE6$U@14L zYfMt4{TkQ-z)P-Ur;yU|72^gg(d*!UQAq$tj_dN2De>+@zj#cjcMx0>6~dB-X^(Ml#_r`B}RXDOTxbP0+Wy{#LKj1 z^j}Zut_WUB3ZS)t?Z`5rs`TEj=ko*6N0O^y>4C`YP?0q8Lzcyy(H|W%giJrIU&4Us z{{uCy{!MA6@VeDn$4~&moM#oRYQ!FsA0^wM8DNjVCQzO0i_{k9@t60L87q7fC*7+) zb$`6DnP6US?f8Y1Ge%5r%vWIEgKr8t0W5pvalmjytn7b^1@0y&J#Mf`9ZyW5jkYAFvnwAWo5jB6RXTA3nOU&At=UNLL{&SNRHy zRSk5T_uwc$pdp9p60fW_8E%6WT-JRwzzkljPaK~Um4~t|y}a8fpnG_`=m{bX{oU_Q z`I8B8$nHh_>3DS6D5|ZJnjFH(Q-~pWqcn6PIy2Q?z<*Sa7dF8|8^%v@A{8+Wsu=&3 z=(1{_OYrZ8T?VSwg#flJw|&tnVz`6f$mZdsUyu-#jcdST96&A{HkG)8Lp8O}lFKi- zG>V#dyw+jQGok+E~kP^`$Mgy{5HW*OcH%F9nQ^O9maYyoUaN9^*157gwZCEp2cjlDnH5`2BAMtWj4#veiV~GrrkzTR;qWNes8U}yLqjUZqUc2x?s<3vP$s| z>hsjfNW~B1@0tm|uapuWBv9FVFcE8jr{9~`;OU)<7}7up?t!glFdp~~`V2}P&B@U_ z)ghR ziPGdO`cNleCTvWhaAbi01(m{96BnI`2;=7JG6lAV!?!yg%rUiXi?3pu`loXiH*F;~ zzeHKp2){+DIku`a+NZ}oxW9<)&v2*{RZuQ4?c;d;2dvWtkedP)Ei{Wqr&=&S=F|2A zfk~T{g~HCrPVd#9lavZ8oPF>9kq1cV0YR&VVwivPQsk+5YWUr&_{@Aj4!(q%Zx>+n z6QjOA?Jk#Kz$FKNG_5jCy{ra5wAU&aF-*Xw&{be9i$=Yo+-Kt0P(m6Ux-A19^6bh_ zNJ5HeXyUQvp&|yi${%Tf+loUPLILXG^(KoKo=l>D-6wt$d{f(0z-9@t!Gtt#W&X*!UfpZMoA+I4I+FW?~^CqKmp zBlz-oG2r=fyara_?#mNh-^S-%R+0S4YrQt)k@v>gtUQa zS4HCnE}kuqLG=Ml-xU78)vAiuKu+IUL=7_=6}(AAQuOX<+z`zPVD>ao& zdMV~`(6^ulR}o3$)YMjhi;o{Vwn`37S|aFpoj5)pq8L8ewg z!SeUAUB-XYdmy$?y=SJF(savRj-5l6SvqLc{l)g)P9p+RMUSNz2NW5NkF6~g>6OJ*(8k2uv0p6m|{*$;ORMH zyq?+N%!rXeENL1Y@4`4>3Tfs%9LBn(9$H)!3W+(i?qHi|6bg*)^6+YQ`^k$R^nT5q z5Ebvfj-l#;Kx08mT5pZR5jC#b2=Vwz?X@$|Tv$O;bE)w4UqCKlS*@Sn8 zF6`f(kPcK9+42zSHYho`M6>|hBO>~32^Bn(U%tqyy|O@H7@;zLpNalte1_dp4PM4Z zxe@6ny!CQ&Jpo%82pB%>x&rQKsiseNG{bcD9x4x)ke0|MIP?@eZL}(ssQ6^(R?qV7 z$bh*@Yq2Uhd7|K=t`zRB>EP*>D8{TDTX-f(+vllZuLm#1HaXNZKjM^vbQmOf!17o{ zFnymq902^xqxtDzdA&7vzG0@fm5M(CX%t1vLR4|ceCHUB=7`+NXP3CJ`ThZ$fy~uS zYDP@wJcME_EhBfVBtOY@3Ta|-)^vwW&ld288M<4Mbf9cProkNs0L3Kr#BC zHf{|-WN?J0>-y{HCdjjgPj67g8bsO-9Y4a3$Fl*xn!9UQvA9jC{y0vFh(Vvkb*m~Z#(3aG1u}! z*-(?x&l4K5&|AvM=0+~~$J#cyNb$R+2i7r7wxwNZP5kwQ6bhIVnphD961qh)Bs6QI zCQv~^TAz-QeCU_hm+WVm5&PuPej`|;+4o8Z7st<<%fIx~PZG?Y_%xG?f2~A5K#Z3-nrP&rW6ne3emgoPq`_n4P?by%W6%8ifg7ct_K|58HWi77Az|>M z-kY?Ptn_2h55P=o>P_M0jDkP+`v+y~ZFB62{<3b8dGkvgW(lx!04(}ivw%xamst)r zqBPt)9HeI+f|YtxjlT`>8yReD7}Cvhoh*VA56c=-=w8K0MrcNnto2g9KnGPTJpwb6 zLs-9j&9}`Ny)Y>4swV%|e5>WXD}8^;bIQ^KZysu1qb?Fw6W^|xnMOo}sDf-1*UDP& zwD#I&OpN73k085Vk?7$+^(PyrQ8CC$cS}@r)dnf7FloP>&4IeCfiGI1Vt^TJ6Xd5+bm_zL zd7HeEsnOD09(S{gdpMOjhT8+kZpc&p%vTmG1mCoi#<*B{Y&Uo?J;9psdScoI5Sm6` zl@z@`Nte`X$}*~KMCph?9Ox~x;8GZ=>L4zQpk~EHwM8?dgU?u+0lCvx@psNHy@ls~ zbo7t}Gu>%nxn)U$zdJ?g@2;R@FPr{I_V5)ozj=pNTktkI8t89&wWEmBO3iT)9&hkca=6xOaRw@(!QB?o1qXk@xch?@iO5cYA>(x;*sY^&5k!iLAs0oJiympAf= zC>DPBtYGxgw0+3F~WBrImVtRC2o$o3Dt zT0b%S#8W~bk2duJe$wObYJJ~>L^wiUCEtr?{L&Q9l9E>`Fx*CxQbszjwpUr;zYY&i zXXhGGOc#f;1XLO!b#A8k5r%6Le_v)ndD}<^BJU_L#)jw0M;3W>Kp8av-b*>*i?{Hcte=00;U&cb(GFgpiC8pts|z|nydiV11nw`l+XQaIBda+_ z=oxzgx2SDm6YIhZ0!NSEygP)~?i_9mFo0UsLJ+1G6YOpuW|Jpp^1DDl97PKsyQ!SN zdurajxHI~^_=DAZw5#DwMSMXr-PN`=xaK}ikCzH@;?kDP60K+{{92p z-?>g2Fi(WMIT(8>wKp7<5nT2JUEX5#=Yizur#EB*!Zu|HAGi9b3Jso+m%vYPOx5pX zJ3P7eu=TWUs=|j?xI|jq!tv^XY0N%NaEddp7-eOFoLTUcd+N`xqtbO#-P6{TPowuC zEQD|0Lq%_}8Z3U~k2JieS@@NImfYd6g;afUSD-N?d`oPin( zq?(n{4Nf0KEZ<;3c~RO)=BrMA@XcWe_f+N;Z;vsLLf%ZSrrpxxgmC>>Xq0ATldVlX zmvX#^>D`~G2S=66wiY?5?MbJ0OkfY)2fr%|i0jNX$ujoymroNGRlHTLs;7xhtk8PB zTtUy-yU0^_MdXj$5By`Uo*e?7LQcJqI-|R>yYlVAI>$jh?6(=kZz|NHOiP_#%_&o@ z)}*|ip{SEdp4rztCSmpwg; z#UPW*1;+54{ZW%-CA!ljtz(OBF;v91vg(3ssFWi(i4MXj&XTv{*y`@W&d6DO;rUwh zaQB&%g}H>UUtWV-_4I_F3R8}9cuUK@`->AI27xI-Li}1Wh9)%Bz_U`7;=RB#6s>*0 zqdTnX0T>3UUFfdQ|3%YzhqKwg?_aB}M-?qvYE)Y-RYld_Pm9_?%$g-i?HyaRR&8pJ zP$TweY=X44_a;UtF)CKA7?Jqi&*yji{>|YJM{?iS`?}uOdA?5UEIMc>(EAuazq{JU z47}oKmw}&iV{)>7+xHvwvtft%|1m`t{zJ0>g5Y#EG0ycH6fA&hzCJ-j#{3Jo9B6Ct zM;i*6x@uOzq2by$of#6K{Zc*?0`TnKuDW0o)vA_Z>{;vXLQZMs?-V@)9mdwW^p+L1 zAK4al5~Td(YlGJtjXObe{LD@aE6?AgEAqB+&x@nUxJ!ZPwiTO`W6%M?Tu2XB0nbl#46&D>#aoH<8!v7}_r0CqlGxbsiP+@Rh%I z6VbPC>DFr)@$dGT@Ydx-*~{820oGTILJR6I1;)9ZI$jqIM~hc*qe)I7lFB^X8ZSW# z;uKNq+GFaGCgOO+T4~zT!Tv!qxk&+=S9U7!-i##r7yn{+p0Nt z{+s=pAv{4dvirq^=B3jlf9zPbHIlqL-=-<^HDFv@v(>$g7<~*#R26x*m@ZCZOlU7MIxez*pWUal~`< zp-WSU7RjSQGa@&rtPyH~yx50rW#lxK4Y{8FO`0X5SINUum$lMIYfGLM7x;x5Zvuz81Nyf*y-%kooc`n;F{GxA~lzA?HtsNdz9U(XU4G~|^ji@~)sZY%InGSHk z2pP-K3`92xllu`~QEr$Ff1}9~$D2lHaR!R#MrC!8IqnGiioqGY3IT@oZ#1zxjw1Oa z8gPEA2lSA$P|9u3VR+!Iz?^_tkaWN&!{yad=7st#PRs%GqEFkNuSc|X&yal-CbHKJ zHz}T5yRix#MFXzIWx(9~K@)kD-o;`yYgt-tQtFIkRW>H5KuxQwP^Cd%wbBj+=)0!2 z1T9)HjoW}vtuH5wZ(TBeWov(HW^v1ZXw7lB${7Vd!V}+Yjc=9PnUIBfPizSp*;2=? z(aR8{DDVf^<`N)Q9&a3)axx4+2P)T`HQ2#6Ngw6)1cOjAw5f6Bh6a8fyLY2*Et*MR zvaM`BaQE_W*;J79xov#23wZ?nA@08p1HJX1)r}6b(M~kJuS1pkA3y5w`M2|O6X@e_ zDE}Qw|5^;q?yoG^MB7>8l4}Hv_{IMi<}qx3xO;hACVhww8pED%qx-Dd%nK8x7;oIQ zNSe=Bg3V(4=sp`(w?nq3{EpJWUrcnBqVTN^sP%ve=l*Ne#g}XHIDsYdC(${H6nMZX z?erD1`7EsuawXrs7Kw z8V+V@f}|gcwTu=pIYum9OGpG=vy|#1A3I;h%N$as|!tLCG9DQ~$>n|H{8cjg$KDWQL z7}*_uAa{URw1mXID?0RCcN`3qWn^|Cr-@_x&;k8{Pow$sbcl-8Xg3_Q8IN@mmv-HS z#EXUC|5|ppy&H}Z+2N{tGbNsspiJD96j(4EjHt!nS4|49pCGpV?V)Ds8L1(z`79A? z<<&jTOfRl9$V<^}HWfsRBcQ&XS1WPFal%yeaw#0j?Uu}x#kG*UI1VYB%~Kx&YKag2 zKq^lbdNd&0!_j8GY5AYUhdE-Zj$6Ju8{h_UXo*zo>BhAlDpvpJNgOkRGGtd8j_`#q z(43R-Dc;-r@nt>bkN#s1HCP}nS0rN=F`3E~a0heC!Yjd_< zbuRTw7exJ5z=P)xn_BY{@;O`=9GE#hCA;jP@eQY54ggSWQtHSLv9XB+NLe(7OP5nL zRF~KOd{RmB!WHB;tIPZG zHMJ64Bn|Ho4RhPTQ<^GhP0SjoghgYixC?~Db2E3xCA^NA4upj-n|dt2D=yCqKCdh?E@ znBAf|oBZcC8mmK^72S&g=JVV5B_c8s)^qub`UJ<>mL-@KDX>BIhGF5S>ad^OE*!~m z`rOt+(!@~I*=B@neBk-)<$Nd5F0N2}uN|P)aK#oEfsBcZ7x9-x{+seXeH^FEWaZsl zawE)oMAh_&%Hh%2-rqf$4^$x1u5R3+-X@e+ZR&bD?(&@aggA@lByCfAA7m{Jhs|`( zD&|pE(j{a*A@%*>>B3ep&VHJW2Db|=B`$47rL9lUVdOVN;X42dB@hFh2bpw$lM}uP2PQj+3ga8F@U1z*re|bzKZwFV^=M3%s znlq~tk7kO|m>ie$<(==b2qbu8_b#W>7UWyW@eAAS@7N+TTk9^)#K~G2{}9zA?>W|- zVFhi8cwcYf`Ds87EV@iyzTBbLyhvg>@3w%|+UEWdCauYnd3MDwyOsvgj2+sOdr5rt zS>bR3>hCJ1b}m?V-EX^glpBfRSMPx8@-_E1v6dV^yCP2{7y5f7wrkjeI*{stX3jr) zYTZ7*Ik$3Uzq+lbH?Mlc9v@A^&LIvsg8Jj~T2yYg^o~XrfnvO}$EoY&RS6sfe5sWm zSrKYF(Y3&n8#L{aU$!=qvjwMrVF0zNj{bV?5rvSxFg~eYX{vJ49R&Duc** zDsZr}qCjCQ+va!z_5%&_A!GU+z6k}BTD&_WHM7p)t-zsBP+qfsD???HuYzSzYnrwm&!(z!4KD?s1Ib@a&| znJD{s^ryVVbllSvgtF)%AJ+nxali@6XgG4hA8nC_9@PHNt|7%mWS|I8hl>< zDJYY%Gt%hz)$qA1*!hImFjTC?Ohf}SlNQYIX_pbUlG})W`fpKv;K4v{AU^K08Rr`->(x~`bK-C= z09-IsWVwh`wzJ?;JlDH_=wHzS{+}LU#{FbmM13-;rI*E67d)BxqTBK%lmh#R2Js#M z+dMpKtDP7?lFk{_2?xHr+I5j%n zIKrfO!&X2+Tk~rWsmN)uX{|S;Nb~|D*D`vsp7PUlCF*pFh97oCX9?6MD0%ZJXRFji z%2$kMaNp&~*##M2PVBWv-uzWeZnBzz{KId8ekc(nvn1XDwPRnqIwELcQM`yIC>)#q zioWUYJ}DS5a?hhdAVyX$g-?%u0QGt@`&%S{6FM=K@UJojD2H#HiotCx6SmskB#Mgb z>){lGw1c!EUt(hMERL)lA>bX-{$dql?S6a83g_X_bO=S$4ULaJMw6Pg=a7znK2_bO zys4vhOq{zS^sn=evo+IXW79r}x5WeH&uNkfn+n}(nyH^jYFx#W*obK#tK=Oq@%P+n zqzlfam!DKVgIpXp=q~vp_`{~IDj-mObir@8JlNl21QRD%N_XqeoP_w?B?F_{WezS?dCU&KA712>g0UyzIXW zB#dy5=psbvp8lu!BJMZ8a$X{894veN?c>=2O=U4JxuP#;%-v_me=`vjC*MXqg1Q<| za@}l5H%x;Y#xJ11+vl%3GClsT`b2|UdMEC<6I8)hV;VZGgo@*gVAveMU^noO{H>U) z^dgU(%kE;IEbD4{ZqVPk-M|MmY;l*FRISH4mcT;|bbrYB!BZ4n&#*2W#cu|vVFxDY z-hU94&uns@6Jp=LFuPScZ_PoyJ4e?>WoA@rlNfIp2x}M9A{C#vA90<0!E?Qn(k}_u zA_SGk#Y>U*TatcAi=Uf4Xe0JAhsgUL%oB1*z~Xyr@3^%{?PCz1?!H(FNZXO~k8s5< zjAX9q;!*E3iJKD24=nDn+UrZbEIj+A&%EZhRJK#-CiL+Pu1K-60Kemm$kzxCFPTi3bc9h z6zK#-A0~XX7VS0&!Kw_=rc;Oa<=CZZ+`74aQyKi#+iXZN9K;PaBDMR8kKc_1t508_ zZaM27&!D+E)T_ulRhGo^hoG_QHDSLp#Qe$j zrH9-5bGd!8K;G$yvmF)P7Ug$nRmmzM)xk(+C= z;mB|X;2fQ=27Yb$^+p%Jc-d7R$fe8ob#nr7n^6l>?ajH^xW96;1)xi?JLZYMr-YXM zE+It!mFdKPO8RuYu1;;QV$t4RL7fxmKny%+S%VuNRE}z8ueNv29|_dbfw)~=0 zp!-}zrcpn2Kd#qk3jBiI_u(QURog64nJGnl}M6hP5O(L^xWHPki z`bn6ej9r{kGwX(Vx`+HFkN5%`4EKiHhrh)ZO>k-P*uCq)dhR5%f4pIu{CG{muF-w@ zS<#0N#ImGF^U5nLAD=a_8ers5Gq4&i9sAwOlacKc647?&P)=Lp-=A?G?AAj6i08Og zY9xaVH)V|Yp+a;pQqQH+$QA^mwAssWWoOt5YN!EENr}23!glH;1@v*q82CEUFtC6Y z=uhm}{b&mK%t{S%tHtQlYnr&<+J5$OD3a^ubIISm@dAv%9w_GAG^<`RT%<7Sz1H!j zkUkLh2F7fL*m|k@%lTLCLwff+r_v-TUQWe#&-_)CKMS_*L{AwC29oqF|A+eLww1c_x!UtT4hXzxjci*FjT<3Zuq?Gn}C|Tx?Kg<7id zepWwwN}K$0tE~5IDzhVOrxmM6E7oC(B&E z%I6qc+*Vx50JEJ%-dbhfOl)rKWS6ivq}5S$@Z!3cD6LcR4;e}}S`P)`LD~)^+r|xf zu?lmWvG<)b(%W&%@gdbt?)++<(@?c*dbd(o>=|y&(5z?e02YO3Dz`9=z>Zm))IL7s zSzU5R%sN&!(id={Q7bELw@}~!1ruG)_yY&zgh)+(l&+e*^Q*|4>Gz0atEOhvOe*OV z4n@yVnal1i1fZeQ{pv(qL;KI()2EDCoRRc6%t$J$!P-Viv)(HYZ<%=@d5}yjzPyyL zX|bzC@3Rqnup~nHh&)h7lrLXe^tjJeddw(3ojTl7;*e>kp(n3D@;)75=VkUMjO4oR znFsRZzC<5PnI@}sFhGn+)$RJ`-%@bj*REEzIKIoh(ZV{nI~tKJ_>dW!b=jBI99{9a zsB}F?g3R3RjB~Yc=nh;Pc~IL|a$@}$nZ$9oYwF2{v{<=U8+TtWnR#ZRIG2HF?+@UStzw(PghtR?lBx$OzlXELV!8RC+3DxCDHNH!D%ZeSVf`;5<0FjEx!yUo z`gk>ZU?zIc<>_3}d009D);673J>vDqwf&orZT&A0bjf2@N#uL0;8hE=_Bf8T+`w+Q z|8YwDMnFak{0sVJ<%n>ZQxT|Aj@GFF@AvZ*C{*+w9e=h{n_uIQZjS6Faj`D*8)hyI z??`f@mY^Ty^2or)cU%kN4}ms`85k9xGAil8G&bwG!PcLZEJ$+AR}Al&6;B}RI%*o; zB{3wdE*+<~EZe++m;<<_Zs5{oAV;^qklICwBp3OmbPN9|@RVt)FEujB03x_^_w^uc zy6nt5UMmwRkHly1u90lSgv|QrWHQsY<8*bj4Mnf(L4F@y;sHp+CEVp$I`62F-Cw<& zo1*X027m9dk<|Ci;1bo*-Cx#%q;oW>mADBb=QisK22Q|(_G7ZJ;#`iRY4e$vyWHMs_&a1@4A+ zLTZ=JoEzQL#OMS`m7LAhxdGGgi}gdBof&ciV>IVF&sFBdR*Z*s`$fUF^TuA#Y~WTG zYz9u|yUZiPZki5i*F1+(iM5(#_il_OF<8~`LMHzBwp z5Yu2BKj0hNKFR{qj@g$zGup&1CDI!}WK6^|(ud{BQ%v7i#=BK+ExYHqn|6Z^xVhH_ zV`A83Q~BpJF%VkM{u^BSHGv67h1*1TiXoG@Q!42@l2o2T`O)GWNfqVqq2m=t3|^zU z#;K+c-6j99R7**wPP>x=*>L*BpHdSC6nF}w@-_}=zFkNlHX=yofID`06?t$}Xn10%AY zpG*Q>jLq$wg3j<84J)leBQxN#%3I1cK<-UoX*EjYWm@G?PFn?-N^)xZFQ`_Qn}v&n49SqrABjn$betHP>J$u2Rg7b^ew96R9-SO z8mxYIxxNN6VI_JT=p3)5o;){EDZjyd$Y`3E*1cp*;T%y|j-#_r26 zd3mSe-ooRAbu@5YQM9%=oTFIj$5(uf%|;fIr8c>mY*l^i!9=G<6)YWI zoil4at%QUN+&<gV;~~uLdf3_$qiP)DCc=73FvQ+< z5wrIM_RFhVg!y-Z7aV>g?H;&qRx4*=*sa$*Uj(8&b?&P(&OblO5fLjR4iqm=3FeEm z>k<2hnWIQgMeZpO-{#^ZVL>{xXjWK93~y}w=tjZFJ^)EX0VTR=GL|QH$~3(RLhKip zDc3T9E<0_|ng4rgF9wzO{BHq$Zt2Vd$G#HxG0bVO#US(C^hk0a@3)OuUi&xigUizS zV1pU&q`vZ|A48VQ(Sr)%#^xY@VIux8wtFqbd&%Q_`xEcoZg*vGy7q?-0J7-qZ`=s> zaG!(@lNDeT97HnTrtI%};>F$=Nu|VbIYL6f444M^s6!GG6 zSWzI7g~7!biBYmgG+%L`#*UMCya>TDVd@$lAFxA#m}V_GEoYZZC86lh##;PeHcVp;;T+TA=awX0 zVKlea(au$3n+0?5s!H#_7*Fc)mJbm?sv&b*~0s6pZ_rA8kqiY=p5LV zyt$~NVEK3D4fn3+gBPoG-)@(&m4sg}!%ky1MR<-&5mmS2^m4VFe~i{J2)s(n+u8bc z*X+wcUAN5pOR0KnM)0g}(|a?`f)x;VYaM4+-;x5uG$VX#AZBQ#dOcR>YU%izRa9kM z`3@kqv)_Ir(SPj$rwOgBGZWowg-1L*6?FN^qI;|k;mIo>x!(&^Sg(B4_~H1j7z6fk z8a46%o1YAhl6G^OTnG+xT~+FyeQ@O^y9v?QEDnMj1)Os)iMo0rxsWwg>R@gk(Z~Yf z4zHBy#Nx@4yC$ONHG5hb?DawdZhCM0P*$pyE`>BkmWJ+$i^n2YO8JXG1LtIo)y)OF zJA5L;1NzF{mh_2i6y_91JQ7oVLg;d$Wjt4bpP|l5nfKt87{vLz#^R0 zUEXFLC}5fn7g#rH1_ac{8tuF-lp4#b9|AV+2Me5mpvs2HLceu_P%-NkNyEGO|eG^dM1EgxVyf&^c26q`iZdhyxtR{oYY&V8m)d`^Ws+LEcI*j^H zzRJqMXEc)2Q>m5lE9JTECm-`C3!O$@A^{)r^3B?!JA9v*ra+4lPno@n{lR){hKWv} zozxq!9Fh~M=O{rFLsRPFcDhAHzHe1f4!bFgnxwPVu4u8P`4&>XLAUH^+@0{i)(@SnlEnW{X!%Ja30-?Wzq08RrSLf2;c)(Om9qUtp;x%N(0-qB(}3%j!`H~H52S(3KKGaz=<7?$u#lJ4*yi*ekbfiJJ8=JgE22G1 z!r1q)#bb-7r%cmaRLyF&^v03^$Ngi$#=YGxRZ&L~x#PDyAC&3PW}X`I)?QAln1(qC zrM5J;7L{3zgSx_4)v-_52(9v4L((0s4WN1)LSQh!NeqL1DefpUNc$b@n|$_mM#{_Z zLtuNK!^Z;-mb>i1T%EZnLr*D|P%(&IFq^g|Av7B-o748nbZrw*pWQ(?-r;}o)4>IX zt$S;mDT$B@dsaX9JGuW_QJZj>Za-~=)rVhStWXIO_$b-|#pKS;F@vTObA@ei@Lm2meX3xZ7grs#w7Gw!X*t|mY$X5V#kT{}T^i(pd$i8n!+o}}n0{d;kI*B_F*otLI>6`BKcUAc z-ug|<5twno6O6H-4sAz4HPwroH($OIyhp2YqX-a^ymYI(jj-~XU~(R@7T0g#F`^86 zhVXOQRIBLD;p6c4TCSJ0m|Dx946#{$CaPoK(rl^pjBwlQ$5n)6R+$QzAPlHEBns-_1 zkTnd@?X$Gr>n%Jkp}HKnHMz(gc3E?Ns@rEWxu?3sZ9~|CAJd)haq^!Io{?@ScMrb@ z3IavJZMB_Gv0P9)O&LzmkvN;=u`+TB=^UToD1`|-} znZ`9!BfF9%LlN8F&Qi~RoO%{Ryw%Q_rqW$SGMKz3<|s3T^(sE!lXh`_r48)(gf~_| zYsZ@T-;T21Bu7aRi~$2c338^_{*l^{;M=f*Iu%ZXjk!;v1jnt3Ukvyb!12A>Q6ZsB zG%HOM*|SpeCAHsh(-YLkpDr%C{joP;>!hg$T=#33LwIfkcIh7K_9pWRtxB?7HWMV^ z<0EXm8|upK2N7Bq2GtbLrVr^d&|3nJ5~QuAsRVi{-nZFFReh||-ajj+K>&prLw6XfMyFz3$OKN;39tm{6yBVf7@HwszizXy(fnQ_Z;KD4 zeDFS5;ihVSvlnXj{1-$2G4$$w+Lq^M4ypRy+K@5z%ON5qK9yB`a4759I)q1cMKp@+ zguI?DI;@S0S48rB1uNry{mY!7g7dpn>N-67qEK+B*dz7Fvw*e#PRP@1!g;Lco*kd^TjG{u;PRhZ8@}3ij?n;bDs?N4hm(kbW^`dmF4hmOG5;e{rty z%@0GekQGAh3EnObM7qmeic?V5^R>d$txq`Kq*u(%wgopDFe!Ndz}qpkC_quRuz#zB!zJvRKB>hmg_&vte8W4Vs8nz;_Vw$zyH~Xk(L%}VNYF+qROP| z3|bP!eA3-p*<9OyB8w#^d^@7Z-SkyLJK6#-5IcZ_GQoeav$vJ{^{Y(|bA=LysCr{n zomdIP0jT(x)xVy$$_4Gc{f>F6iS4Dg<=xWp%6F$)VX3a zDC@DaWLLFMu~TIZYsi6aUP=ysto)IrF)N|pev+1Dr)j=!KG4z0+nT*7Y}8IZh5Hc+ zG&2|RzG@Og_7&>{yyDnk7;CpD0Pjc zivGi^i-2$4ZTQ-2p7vJ?ZMC0NB$Pw##Z|1v43NYg#dY^ACsQADQCFWk+u*dZ4G>M50#d&vp~8q*cNvnpYG?E)4|GGcMvoBQ<1lvYxcIk z{kYtSJIX&)YKEvh^|Tau@Nk!%ze^{!BR^>Ar2@ipN;W3mjrfPhA3|Sm0eDDh)8Tl*9Y(4S{kzoCSEH;95p-C%+?g&7aeWGfR-QpD1_x4y1qN?V+JGh|GOxjQT$Y+azIvKkGU9 zW6X%`V3#WzP1Ut`KSDS)=)r>s;M5oRz40bcUdAIxPvfBJ>m(_ygjIfA}Q zc|5bgY~@>KGp~Iu?_MDFuZBbeV7_#Gc*33Ea!6iGa!s`Y5n*4JH?nA$&AkEX=+F)n zc))%r#%z9Pd2bhYl6F(*8-CpWD`NZ&z>W(o=zH&RgRvDr7hV%|xOkcUY_0WKJ^Bj= zBOxrk1Lt%vw$_dm+i_g2Z6ZfP+K1%P0oG22PlC3 z!6`5=r{%;Rexk0=rZIqVa`-nt*|!TsiDZmCI*9_Tq8K~=h9z?%%Jp}q%B2y&3zO(( zKHSs7XKm{hba!rAn#P&@C`}qc4Wz+-gV--wA3p@RSS&495TAG6Fxx7}%i<^~D5kUU z0Un3CnL3GAW!_vg``ejwIl4(Q*F7ELM7K7niHh z25=|ukgdt_@1meLxbF-Vi_=`35q!Q<9-TY3rQ^cBwVCa6!J36tj?N6_I(Cgu11P_$ z^&@#&Sf@DjHa-G}<1+W7C?{GKKV1S>)|@78CXH);F|IwUjF!dSh1=KBfdM>SqG49? z^3QgAtgLh8^{MMX`bPbM3*v*DPD69T*Xuylhk~BAo%QvklBK2nf4mkfq@er(3OTbO z0#aYSfQ_j@|LlQK2}UM-)x+kN2QSv0f2@Jxop{s1^NgsSxmwM*HW6<%EPpmwb2Hr> z&KHz+dvY8WxZqWlQ6dLys;vckp_10 z*S|MB_OR3k>rvVjhO?V{C={v9OjvO8fe{LJg>!|7Ur3&@vRY$dA4H-)!uPx!k+|E( z;s40H*q$hx!1i6G!`uttdTm&Wj_6nZA}N)5cBW*eI{yG=xI1rOri{ zk8Q^>;13ZJHxr3r5$wNm>Skmp*eEISA6Z=(KuD_xGDB?5{q8UW+~5knyfYhdAQ2|? zbe*CCEP>ENy@)JyCrBc~MHAk!+5-YLe&uogHi#B-UIAKloS!wW%_$%TT^NFcbtzdB zt~uJfZx1oYwHYPdMsV+ydUkQ#=rX`XMEFvzrT?{yla*}cp6^gykQ=tQUs<)+^+Y}Cd70_eiF4pWu0ZkHbC)nmrixvTy(Nv}xg zZEMJw27dooI`Gr&*&UZ6C-@ia%OOq2-qk9pr6KWmaoetJI7Tsp@CUdqsRNvu0j@Uab#WZ!V>(Pxz3F-K;I z1Ut~v9%58`fMCHHr8&T-vIk|9py2#e=c-nJvgZX@a7hE{x`0M%y%iW9cap(vuRW%A zXi?u^3k^!@$ggld!Y zRJKh8?zVjsU+?8e%2}wE=p+V(w$3e{+ADXm)+0VQEoGzL`s*?ZzV&1lX^sQY9D zV{|Ll&BI#&nDHJ6=!doz9xU||_y`bTgLonMEfkn>=?4#^7WVs)W&`#Ao~zn1b`R1y z@ocYAzW4z@P}Tm)H1Vw6JXniHRSEqA1Ofc^y5(?@5Xr^x>T|xH@g2mjAl(wL5shjD z*pabyZY&N3GIQG#G}1&ZD|IixKduaWqLBLv8@nCOx{>(9hKx^CG&=o+K8+_z`kx0v z0K6A=dU0v3tY&9X_+LQ#uz&!KBJOJR5U#Gb-}k^FDpksg6-!ar@Vm_&FG`k*5UJd5Oe`!&0*%LrTX92|85Cj2#v7av7 z#fE-6r$%{_g8fmD1?`X9L5V4GTP4nO2llN&OP-6dlcHW+{9p@z@^I(1t+#X9^A*)> zo8PThLKSaH&aa3P=2924(&xu`(A*)0NnN|WQ`1HeK|lkjskpki$N?rlmDN99d;#_8 zI6PXm^KjCK%y_#kaYd!=Y=O9YyR7DISt^e)=y1I5H2fXpsR6n=1@&(^@Z~->XqZpI zjf#3M=&QLCk&m`c^czeB(8HvBK4;IEa=OJB$#)Q}Ysg3TG9k5!@;WigGL;Uq2^Ndz z-98ehW!Jo8QzD^e)J~X_S>f_XuYL2O&Qk+Vb{o|BzU=M~d3j6NUg(^(VRb8zpdB<8 z)YzgSPYRB%q5Yhx0raoioyP7!+W5Je4iFhsTP`qO0>pMm$GT;>bl+zWF8D6B>b{N{ zFf-akZu+p6N)jGqe$@A-EHY15d4pv1h_65Ca>#loKHePB0Z3%W1+u|Jwgrs=c7cf<5 z$|qTi9T`S#=;WtLt(Zie0eOtfL0>BtnjjO}MtC|>r@8e?>2S#Y1izVJGNMIqjPh*+g z%h_kfoO{~X(5_h;GG8gwZrd{N=ADiSiymW7KODkoZ%$Tj_W5l8Hc}m;PQO>rzNIC< zZ$jK&f_rXoD0g>LSJSlqEAtlWN@Y-PwhImLS;F_R z{xF5EI7!4HZHbhR8ry@ihIh!|YfTz|lRNkT8cLHdOentXt5|BnR-mQ*ipjiHkMyqE z$J+D20iY3lomV_}=4t9T5=lt0;iLq~15+7U*--IO)G_+_t&@2A7_ z7ixWW8%m{~Pj}8_I_AwTOgvK_JX6D3JX0(+g7^7ZHSl#?J^&!Uvn(?btrlMj?g&+m z#M-X>DU3}4%z(|?yMk+w)<479O){EN9N%3IFv4S=Hf#}xO00xmYT7FC-8uHm$PP{D z*T?!TjtmT6%-WwH{V8|lvceHcL~}CTBdwTAX&)ezs#aedC@#6zoYw% zSK`Tw!T{v9(NRi7%a4C5x65BXOyC7J-eFS@{@!J>nLSGcUXM0Pg2KX@CbH^$g1A!T^DPDSixTy{)Y2 zvvX_g^{l)F2Tpj%`Nx#K_qt_wRC|{28PEyfTzNhLZx)3Z<&e;ZV8Bw)jM6NyO0;DUK*_0H5J z;Z)vqJnYG_qR$%MzFu8g_%8V%P8R3@tG|HrinzTD;h_bA!b-Z42BQEj0dP2IER;HX zGyG#53kRMRjhyEk8n(loW6jrz8Uul^27~N201*WCz8mFpXc^!{ecmROoxVPya&iw@ zP&yvwp=V`Q{9KLJNOe;!wpiGt9ez)aun|Nnxx&xBLQVq+Q5;C8B%KkBquRE_( z-hp8yYkP7GdJhs%F9e@GHa;0d&eRCB3H9W}?stJ6nBV~7vqHePAa>)jqnP==|5uIQ zcnog}3!(t;TC|yA1rU%W7LR?oGSL9FM7gK-yzcEd!;Hb7-=f$W@#+_;Ne&|g<(ovspt7CQi z_iLsC2w8lHsr*5B`pNqnRYh|jSm0J=xRR{sL*%)W{qtqBkXUJyPmrif_6qB`;$abk z?s{^x7xvNqCiJ{jk5y}3V(y$V57;gh1i>?cEWDN-xR>U;)$?gk6G}zs;Ipt|%CN;Zzi0ZAsnaPn5 zf`4y&N->0+QCLT(AAiy}^kly?8Y~dm`lOtPgY(xe0cnF7$iNV9&*E23z8wIs z*CrcTKWl`n8mAcu#AX0A+S?LkRN`@Cn{=#;T2XK%Ozon}c%tbKR#bB>|M$@LPzh zhKXFb1NxpuR{>y%<1bU-8wPy8B;b;CV3$w{piF?umVaimV1MN?MO+l39<*vETX0OQ zxs-XK$QyYjpXutBo?h%P-l@69nM~npkO7Wo%f0v${*%bZsvS_1GOI`ImEHKFuuQdE z<3e?V)?*8b`FhgqKp=!aedQHZFOAT)P!9P0MjK-@R2IY%fg?%?RisDf2hhDq-R<<+Mjnx4bUT4B6eQGb2k9yp;}^#+0FEwaJN5OCy102bNrt?ct+~5&i}Rd z-d{~MZP@6hSWp39QIRGp3JMAc(wmBk0)mQwNC`;qB?P2|V1q|#D!oRe*H8q600B{u z7LXQ-At)t4C`w2|2uaQk&-;Gs`xDMO>+nm~B9qxOciS^_-E&{i!pz3{d2FnDtg$68V4p<4v+9q|ss?_|H5jGNg zfV1{2#;VPNgYMb6pz!3!#|q+%3&+jCD6d9X`sdH%SbYrx{Dz`q^ZucpF2k^(wi6Bh>I7K)t@?)6 z144GAN%PeuTl_$rzR(c!ge2nfVFPee>~#e^>U3n=VW_Rluq6ZEMh+?9*Q?<2o$^ta z5PJ~BqX%1FuD?0EFm9$cw72MC%?F=+LG+VI;iwE7u<|vSZh@b6DN5plnRiW}YW6$J zWd@^4|Bi3j^qF4z>lq508pAf)*p9g$!|t5RaeH@Di@Q+7$R;$inKvw4j{ zhLQXZPX#-1Jo2Dj+{dJ>D0ntf&d`lHaPq$F@4Yr)HP0^^8Ji_=`N6YigHM(Q<-L9o zCiSK4cvxD@1CNx;iUsu>ok;;+zunBbY+vW4|IvIZKK6C(Ot!{fpSHIWf&S-&m%}aH ziBU!x@?Y=2j&1i(8xs#}f4KAyv+lO5kCi6041A5g#2r&>HVWAHe0Lr3BC*J>s;O4Z zC*19v%)_YbP;e;)E+mk?oqIAOW3L_wyT^a@;nYPThjRJH#T@2~^b=Lu@6=rXQ8`c? z<5lsKzc|BP;{)pS(A#nGRnw3~wiG@XJY0!K1#<2n@00A3Uru^DAzAecTL$ z7dv)y%}$&O7G{(jE;##io?k9yW1wgY`1D=%LU{$2?|5Z2z_ z0g|Lx` zKdL6(z|<4*5M*e{^89K^%mbdm!pgvpACm|^LS|Hfwa?ZGmt=D4waywQ$CUWwJrVvm za>~0XHha}osKB`G&_&0OcD+CSk37G%F;Z&zwd30d^~XNf-+9=*dC+k$->d6JiO}MyqQ)pO)*-LhVB_+bIDgCixFdM-<(#H_ z!wIeZ!s*{-402u$o>J|US=G9-4DKDSoQ7)*-7r|!5R$SEbM=ZHh`%oub~l#8mdEF*&spvX907FhXx~0B z@a;+hcF%r1=CpCzfgm;WnyA{xs7}Z|kXCj}pC60>Pn|f7nb{b>AIq1`!B-K;so7Z? z#EBVt51(I$zFk&{v&P-xL<(Tv%whY>dw@q`y9bah_fzTMZevm$I*)JumGpCQ`3CBW z{fR?3kcspKU%#4`hz9^NKt`SZyUrmKOEYs9@PE*3vJ+*P<~Nhf>Y*;!;4N&3wDa__y%J1UV>MO#C3Ph zF_>T>Fq#fnM6K%N74V7wc@PQG7~9^6h zZg*tlGPJ>Nj?P{oaH#ttVO+aW^0>#gKUk9IhLMrY(^-|^xuv3&D3B?k?Xk!e!pd22 z0}r${J(HUK@nK8|X!9$c^=%=CCyS{?xKLcpn{Bg~!SlwkFCXYGGS7HG*6gu=H@Xt{ zm{$JuA;B~#0083Lr$7ims!1ydBscw$L@4EiA^W_y2W`pkPDFpo(gztk)7v_43YwxS#eBj(>3f-!0S7VO?Ma9XUD+-=HDpDLrC@?+%vIijkFe$eR&;hey{_pHkHlC z5iFNqF8DmL*O~)mq@53$hN%jWPm{Is_rWWKoLBMrLs|r{;D1H)-`;Hh;h&Y&i`da% z;BJ7=j{J{EQ0v6nzYqMVENb+D~cIL>Cxhd>(Q-j-+C!^ zAiAv~b1!EHQyr%hA6wS}vM7svQ^%@#UW4{E)}mHIyEH%=WUr%~OD?-zuI+Xi=Ts4= zeMODKdyEGwFo3cJUYscEysr)z0O!Pjv4d;PwC7TJ!V6*`-Bu^8wK0_9ovFrQHr9eK z%)hfUBGTnSy5TB2MS>TC!vt!Nf8;48xc+_SBY4al^$VoL263*)IG3yiv0aD64@xNE znH(llv16P~zzI&Bo(T*GeI0x5^T@VkL$$vM06x4k0OutHCOH9BKL3vN*2nCKz}dw= zzZ4ql{1!G3P7K71g@a4IQ(r^DN%8HPw%V>~-^x2!ZK})cix_)@Eb{rel@40b{_2zD z{vd8J^#B;#^Y5XPw&Bu0c?QU8gnuO%0Z(-nJp9kD_73i9ugGufd+N`>LIcivgfhR^G0lEu1lH=?3{G1Lx@WImcz!R)8;a#jg zb~gM4=gX5KyAS{Ivz5|_j$pzW@QVIIQ0jXxSCaV!u5x1Vf9KG6D@&X5T^%2{fx=Z# zebPE1up8D4xOcR;QsM-H zm7u`OLBF?fD>QJGX^)Somek!i$KV1Y@%^_3)TX$0O;P&a8ACbM9KprF-F&gGn9HEg zom`2cOE*H*?&1ZAZLF`X{^^*h{i>R}z>03rw!gF5&(l)}Kz?@nmWgg+cZO%YctlSG zdv16jXw;^I!ViEKRl)R15S<3vzHezcb(v~MZ-Jpg>`S}8X;UrHt`|XQYg_;eM&iLO z|0j*Rpfy&Z$IIz1WgLFn$akQn!WNGi4uc_Y{5)qPHsuzmZ$zG4dB(#L6*{RO>|c~) zcPIEbN>w!3YV`8)!GZ#fmAk?PPV(IkiJG`pqXh{Oa8(I11ltFnN~MFZu<5~DX0Qz` z8H?X}i6w(wy{h1JwJVHEoXn~!^dJ7hK%VdCWR?AYc<&9UhkyaU;4m1+X8SGr)vR|d z<;4EoNaO}qNST)J1Y4(Oj307w75tni1Gx&$VEmldXn5`DuJ&*JD`I7};4aqaxA8h; zg#E|e-BWEQF>?-!zXH?B0x4}7YGDdKQsawTKotYTVUsyoJDhi9=2^XMy29u4Q&<0$ zw>z=BNzpOq*EYz^d=m6NNse!y`ZqG32g?vHg?W`Nh`@66{;nvmfdLJCRIKond+UTD zCq|rlBYmrpwKi400a61 zxVrpnuZ2~!=CcI{+BPUrVRW^Yn$ooUYRk~ zd0jcxG5S5W;OGUX{K3(4Ogi#k>whjL2_Gjn#IL#zcr))7%1#!7v4mqdMzy^cbW($no#e;W=+Y<-dho`Avd5o9xa=rwT_0$&^B={L>r zOv=$aM6`oXNQ@&7!B-?zSQa1PrQZ1hi&%Z4A*YHK%!V9t&L5~!DW~o5W+p6r+1@!B z>ZSH2Tv>a6q+-e(_YA4yQkFWp>csr->k==c;xRYVfTt9RefOfZoX`ieH;qncQj-eT>?dk$MGJEP}1-^>x~*nCXlY^cMRM5PUK^A-r4u zs|hk>f-H8gH z$-WUt#~G=Q@X}9|ir+h#!uW~xRu`BymueDVS|Q7?B<>%!6m|-5 zbkjmLGjd-18VtTAV5)(}LO!2p6$%}ifCd;0 z>Zoqt^9Bl7?iyu$9G4nwm-$(p2U&}OftLnFPxP+MwfvpDN0Rv3SgT;2wau3{PjyWw zGjo^V<9!TqL$9g`~P#$A$+X6M#yPVl4il}Ll-#qnbq#G{Y|&(^Y8;u(yNVM5vZLBvXV;pX;0 z{!iqDYrygdSw1SkVW~ZtS%4U5**1JA{-fTKsN3IgmqEIp@N3e5LV2}7bGXpuH6MPB zp}rYWr%(qeV@Pj?>__&k2MY+U9O?|sc~4_LMndQFGTwnt4sv;=A& zaiBJxY?kaW(EqKfD+JMB7?K|vKD@!wF(>%0Y^^3B-&pG0+ID8bzI^cfc)!we8M;sf zojkS7XuJSA;keDnODvmNH)7(PMa-<=-8Yk#`=WehQ?t!;=qLy=JN`})a5CiISTqV` zP%A!ure4Z?S@t|qAW2xh*{9@2E062Nl&>NZb9Hubkz-Q|WdsBIa}PMDKA-@VrL&(| zvHIy?UaxO*f~PfS6AkWZY#MVT1KRJN@PxigVGt)6H z>PkVv)E4Yo>~dJ)C)tF~SMkWn)c+OyBS7Ggz?H$^J9SRjhz8Oj35xnW25qQ}`#c=n zkP$Dcz02P78X{R=Bc>u&upL0g~sh_8xl4FPpF42QVipU9VMAN!j-M;GJ-HW4Vk&z zHLN-RS4|7+;X@&foOtV3kP$u#JAg1ABhJl|;GPKg_@>RghUdM}@xLhaQ!hJfQbt>; z@hRgwx`(9qJ24C%5>R7i!6)gBj~FGb<_ z_?DtX8H_i%cZO8EvsFT5{vA^&gSkx|)1N}kn(0O@Y`1pZ#mOD{Sms!*>$=?HF~tn4 zTL_dYd|*k`X0tZwQDFU6<&dRsxj151;`Ee>A!FK`+@Io4^vPJ;M6P&`517PZ?DSIQ zG0s!zcTd6xB)}riI;nTh%sWm9%QS_nhU`IdE_W48r2fbmUJqSK%tRJUv@6EY9usON zo=uMF^e_fVNA(!*Y1);r#Uhq&r4947P9co|$3W`3mZvtmi;xql7fgIt^xcCZSFEsz zwe6PHxQQD-)TDPda$z3u$0&m9@mZ&nvpXP&?kx_Z7t-?Kg*ewlV>VSHbcj0pxYOE8 z(lcu$wE|J-DUw-DyB}wc_no4+>LkcD_|RGjE6>NDkf4LaS|Mte%W4_^j~%o6W9Z68 z!cy9Y^<2Fai&S!#U7RGlX}Aa@q_g%i-m}^f6@krR+Ra|h)3jVX@nMTH`+&w^XTPJq zUMLy7e4B)oFArTv7_aUhKu~Bah)*pP#}uSoX)jxF6|a*hKH8%9XY5i}%2TeCQw@so z{LZ&8nTuS{w|3Ux(NMgRlJ)3p6e7^yer~0Q>*wITS6PpbHvOG%Z+y4IeYKg3Nec@d z@bdMgX|G^cu+#`$bL+>eRB9k?Gb7(c2hzw&bV=EjU>3Q(!265yJ=(<-Sr3pEe^*7%#RjeFQ7(IQoRHSbKYL3cCoBp zp%dG{NH4}gW%f7uPJPOZn$)I1RUdYZ4a^U=_7Gv;sKev9j{)bpQo>H*G?8?cYd#Ae zf@i+YArluWjp)9y8@b8-Zu_4=~Ga(&H{HovHFCiz>kfn(#$0XfApKi74uw zL0>^H4DC~iPQyln);fNiO6i_#zOugkb#sSK-p7h4dLr5PAxp;e38|V&OAVXrC+q|T zC5(_ygg!P~?{Cty!VOXzqgG{2F%tNQW&LO5mlu&gG2 z-U}oi506V0!LgvI72{5i_-cs!Xn?NimgNJXW~AyqJFN*({KaPNWJyhImgVx-_pm{+ zvCILd?(2;kz059jSR5L6em;=l#J1cQVW)%*WBlVag^CG!?mSO$CXJh0e(j~xAhjkE zZ@pg1rcb^Lx`rt)nKxaIDNPyB_fF2Z_I@QgBuATGZ&Su1!MA>N&9m%oX2R(GGxP;l zjlv9gB26P*tr4=Feq};>-E2~ZNjtk9%(h!|xz4{@=5n<{nb9a9Lo$*8Sq+=P`^OMH zQlmhL*+$5-jt6@D>bct`^+nO!mo$izx(QYqdiPodlF6eck*)+bsWCs6l+r-gh3GSD zBOn(EMPQj-g4Yy2v>J^JS@(_@TSxZCw**7#XsZQ3945$zMlI=xHM)hvqUurZ4f>egftoY8w-1%vs|shlG396jJ-m4`z#knf4fmuLsrzK_y9OSF>F zshmnh3I-mULSh~t7|NK|J^O4@+`2w&XYqbx=e&;Y*FPUsby%4^$9zY9KVO3SO4sS~ zw^io0nO8dSaSQ(JrPyVD3HOJcH?D+6J$EW7ONaJf+@qTlj$tcXyjV25TmaP&fTbal z_s$P?ybvv4Tvl!K)KD4wXC>8abdXp-!iVkYVyZzo zfmo~@L_~G!B*TxMiu>*vr*n8Ib>6%sp1IMm;z}G}Rw;!(E)+^8C1GtMQXNYKuSMB~ z6|dO9p6-+ia(5OceXk?!1;}=X_%D^A(jC{QrO1=QFufSfM~xV>RA+$#r5#TqOGI

H^;DgHLvHnT4%`%1Km0z{d(xwI{AM5B?PEX~=&o+&2HyXnNmL_;m z6R6BzRU@WhCQT8KM^x8S9O_neEPQCa^ojLb#~+D=O1}S~_z)>kuv50W7(%;aZGdPT zA=T4n^1xEE8nZ~TpTQ?>aA7jEaPHc4NVR~DWGQrEG$AHxBj^QUN?Y3k4&C4dWSs8H ze1N$16L1Y$l0C!>XXlzBP05ZGO1z@)-HOj&no_;>EcnI_1WoJQ%ek`p@Rs{O`S0$FiI%tpFgu@z=u_j_LxxicR`b&r zxvI07aVo_oncIQos=Q?p77#Vy5%O*F#dmV3ob5w;V<^Ui7ts~&Y@g|x8FD;Xi?W{D z9aNkcpb&;i*^{93m&P=uN_5?O(WoW)L;C{z{kK7vte>9C8gss$^oFW(eE)Tk$N8l} zzqhA~c-}@@iPqs?kCQy-Ts5M#$3-W*?pSTw&9|0HY=lhNMMSV~N8VhG3FH=bR;h<( zbhJy z8-$z#7stNC91tW=CMB zjBEM(kebRcWn8|1X&NoGC|kxUD=9)lg{na~m~~OUXqhM1xi>b`cY545@^`1#mS=_K zw!Y!e1*=cM1C6MdffT-K^28l_>a74o4M++cuU)>VHfUxLH>$6a*OJnRhq@P`xAJ*6 zrufzy7!DRAHO)C4bn-wS9MWasl;xUk;;#9SUb^nQmKvA^g^XR`NoiCQFoTrOZj}YS zry{{LE1sNLSemL_mjUw%p_DQ#oA+srKUlDts0g%h-&_c7=la%pa9&=9g?GQhOtX_|4bA%mCHpE#&8(s3lFNo4LWsUX_I((>i$O)pk@8$^eBEZn zM^CIX|IVB(hg~197BGbL^NLMc4oxF5J3pT}C^Ns5s?G_PnapK)VS>KkTHZLT3fnIk zOF(j4zJp3wny!Od%57;5{Az`-JZyqJi<`Wbb}6=IcyZAZXvD%8A=zDlJ~j4VpB(_R zpsP`5(q-L0P~_6Y*+vSiPmQ6@zPGzH*ZUh8+fXe`r-SsObJ#poUd}OusWI{(r>Ge# z^sChNcH!#75pSapd3|@c1L%nC00%n_^PWNzKi3@1A~U@~rH3v_q0aW3w{>Tu-_0Ue zT>~dqR!72v`HFhvGvtVUDf@H;%35uOc$|9q`9B z3L{$Hk_ZA5VIkC7O@rxs=~-d&jPHs?9(Ih6dk34QX!E-LJkO>uVT`tQEZdJ_Z?)V% z*}aDJjh9)?7X5Hnrc7XI&DFi{d8$!s0t_7hIph@Hyjd%pK|=YOUfsG_ygKO}QmlP* zx#)#SX@nuW#M_jh@dup+?P+~1UHKU6o49EiH9fUR8&Ew>^Vyb$ola&_3AbUNX`t@T zh@4JVy2zx2OuWppjRH(>ABcOu9Y$kP-3LZhKfLEwNPJ#+{ZUX(!^5Km4wF-sRAiJN z)m-fMg)2g7O{{Itg0~e1uQ)j)*Iu@il|s+fp)eSG6Td1|f%*%MXR==$x+Z(gmPxJRt7zS zC|Fc{h6;Y_5b{Z)p>x&;|8B1Li+uy2cUlScAS~NMSVwr=@FR$-Z@^GzbaQ-eflmb zPwqP@sisEQqO@-Ou6i~Tbb^^UG`^mSV7{L7oUo97%U9!4Q+jUg< z@r{$068|$TAj4j_!aq>HlY0cnO1r`At(nx?b2Ix!J=U~p`OQ`LuZ7P=CM_G3Jdn3^ zWKC6GY1#JgS*&Ov^ZzhC@!3^mR3$&l^l# z4tM=Uz3{bmeeFP%vu<+&t6uSNMvvCiyf6Bo+X&9O?sp~m?xxJ8lT(nje(ktrUvy7UUDQTv`2*#kiCW0CI!$G z)Cswwg%amm7xw99KwRcN`w}z}_SZL)r1*x)ORXdhu;F=5nK6)HJd=0oFQWJ|gf) zS1ksswwf>?d9pl)Og3e2BqUFsb%yXzwjFdK*n56SMOh!()J9uYvUL z>Y;mA_oz%IRWkyM1+R=idWcetM?sodUdX1ZO?nXbD0$&7aYciMr!D}7eqj00b^)$uj1L}H z3dd9Klm{TnYgW&YcETy{GDs6MIAO$e7K}2F>n`e4c(0pp%VkC|Z{mCsVPB+6eCv_G z%<&a=xtq*Ygko^!!+X70T($Q$SKIJ;=*_@dwWyIIxOiN^tJ9=r1)o;`yhHunZ&Q`Z z-JBerhp$;$1wPYRHQUChCa{>^%Ey?%sUl?1#?qB}+Fj{o3pfw zvCW<7VSg3%yK&yj>zUi`wS|xLs+l8dQv)DIq)2$8VbLkfRN<>6 zlT1zFOMcsR`kImwkN7kC@9BA`Z1bHs1MK%4LJAA2H+lDdSC5;FABn55%}rQ+VCkHy z^2N%G2VwO(Wi~g0TOC}>RY_|aRYfQ%%{=WE{Z&4B5NKj^rAc#L1?p2`4*~J|H4x>w z5guEh&=5ErS#eH^Cvx^}sC3MIpzR?az+F}61ZEZh;@Q9{z}o26UN9x#2h#uqU;UzN zw|^-28|g9Jc>uF>0ElB{SwRq#SECDDY1;qmUe&vPW@OJn6D~zt?nuDvoQMb@9*x4V zKJJ9kH%vu=G})L)peh-BhM#!N@0~i5nsy+!{SYs}HEyV+1gOhf!E_;jqWS-R3}QnL z0^rasYA(y$h1YXM-VNEv-gg%;MuOu5{G^@RON@k(?v)sp2RJHeV1Jv%`*&Pzg*p*C zcNzVSP=3HToih^ya3)>9es%1dCkR7!LjK!!>>b$Fzxd!?+X&XHy+ENcM&^zbFVc0K@@d<70r6C5CjJRAJC5eNms!G8mh%EVtp!HlkiR(D|L;$aXy031hw2Le_5i18 z)UKXNz#FEGjREti{6N+oJvYGK==*nIM*Zv-Z3!z3WF1oiha~#%kWBZ2Q`Fy8);1qd zIrBwuKn19BUlxl5S0qGQCRqC7ie+W%W2J!sB?^Dr#OYn_@tNj?<9@a>gXpZXR6AWV z_-L#ESKGO88gqDWWdHkjxvgB|pQ4d^=h-ejuVaLf-dI`AucbgKzfR;x?lXI-YaSAF zm&{OH8>fS|NRd{zM*UAb!5)A zh&^e8B3-)&h@8!nXceiHYm4almd8lg3kvy*?)D!$=#s&}mGzdeBCg2V+W?5cr+wlD zYJWGsDg@NaKrN_W1|>26iKB#*x;y0>2-fpP7cTYMi`?98uQ^)YwFpq8;Y;&JczGjh zzn?h;Wc}mhq>Z3A4v8?p;5KxDNBxzFnU=O-mWh#V9)hO|8Sr<}37pp%&b+clRDdjJ z&d~qiWxc1Tf;s|IZ@M_$oabop3)583$EWo#Nok%J$bx|lfwsAy%o*lFUc#D+pro!F zFjFoB@XkEy2J6BMpNwGH%lx5DcvV^f>Lkt#EOuwWpy|o8?a&cFs91vK#8MnKzNt^dXRSCTn$?6oW-9?+K)ygj2K z2Dw#2C5_J$DN%I_zjN5fNIFlmWKifsPl8QvM z|CR(4ukM{Wp#7R>Y`)wn^zJ38+0VtkkuVK83TMfoikxOg8$*E;peeR>at!yFhsN2b40fyg4V+J_`kpT*%$(ISG%I+h<5!;&?rqJ_zMFD$`vdfdf24k1n zF|_HhqQ;2TIxvxk6GIKofZ^nB6X=CTe-z%k3jpONVEoYMxKE)Di7T_!`%iOp4I z0fyn5P>QgE8por-kjW8hF2~HW*AUzOP)d(ne@8Sjd7Ueg0>&r%3mi+!Pta|)Jf3W* zLtf}_$neDZf-?;Ty}0TvI1$xLEw6NI)nQ|>L&szGz=Gke&VDt7ZEGrL>|hAX zrSBlvsGWmAdFr97zyikzq_rb9??Pz<>+6j48A-q^>VID}o%;g{W<80{0x{N8XmLQ* z7>rpAju;bt*lQIF)YS&p82H&?aqwQNNF>n5`DS=}r{B7t$v`H#pW|f%Gf% z6Ev&Q2Bf(>n6xsb4;;4tXjo4mp@M3dR3)XF!RUAqptoo9KlDjjtqC)LM9r>wt_@UW zgQh4gEh3T{v1yz>YYMu5G-d0DTK_7cWz>fGt+&4*W+3Up*``Wc%w+~^Y*p`(&Pkv? zO#|REsm_S=XMM3N0*#;Ea{!~zx>e)QT6L}a)7^Va(D%jE<2V*kqI^=1RXB2CorS^b z=RrY@ts!05t79tjZ0-oa&*M8VH)2#j9JW4fsYmTo`n7JoFKp-fN`5kZ1g{rih(?9);_s^{lzmAoa{j7%4ajR_Mvoni^O zSO@QUc2G~dA&`z)W|@AuClT;|o8mdi+g;VlL^os(OVbQnw;x3R3@78XaLjCYd+TjK z2A;+$8@a$)rKRg~1M1mMK)`Z=1MAN(SLe0#S3#34WkIrF^mCuHl-wWS+p85bp@d6})O?Or?rb6&)~>oo4{GnDsd>1h9v*x1=7tQV5^UI07a z<|1vtXNI{kFWiHxBVlBbrt$I={c;jHg(f%e+JkMfANaVc*2qpAMCqG6#za(zjA>wJ z-$#0{)yY}f+4eG0X4iF37^c5{GynUW(Tnu*1qx53JGgQ*zTRgzW!rzLZZXTU!<>A#g89ybZ{H#R zFra~c>a+6Gj6FZC@zG{D@lau*&1VWjtLt%n4y?rN$XP9{XHK*$Y5z|uDSi0`ng#}^ zZC+rYI5(sN`^H)6fRb@fxCzPe$LnuSPJTx(3@aa1dGkh{DWUkAK7`P+l_EVgn<&&gF+H(xeVc?z z!HH>B2KeZO7K)oKWcB(}oio=Wl+Vhdl0B0=-(nD~4JdR#W{Nm2biR+3(kMV_8lCO6 zWT`SvOzD!fU=0I}3Eqeiu;x4~!1U7lS*!}F42N1%W>1ID;`YT?PYd!r8le@V;WSnW zZF{yWp{IJDL1h!JOo4t+U*6~N{@vepJX>CWAhBW(IbR#xNYVN~-h}jszoW5#xEy2t z&E~;C3Rb?mYGI6|Z7QsN2oa2XjOEmQ2A66-vL`R(buC~>IM0yP5X#j{43E9`RBO`v z){zQ*m@O5FEQ%$OQebpZSuxL$R9a2xdiP4GOU@t(rQ%5K>GP%9qBIBa<3B4js6Nb8 z&ERRuiVW!YoYeL!2O z6Oi+SPr$j@Qd1I^=D1L5nvgNjRP}Wog zxaRLs6^T!^chsE4J2=4z_*F8qV?a-i(M^qs;u`h(V1pBeY==y^#w#G$^bWSQMo0A; z%GQcXteqVgU~~~I*D;miru^4srY_MOvDMkbf3JzC+N}SWV4{V}-3ChVy2Qj^v2vweJ}7Bvk7~ zC?HM#vq9FoJSPUIALVK@lZ_kUWe-&^Ren$L$}Ph@bspQly3ZL4d0I$cUKgY?FY^EL zA`mP^M_>?N)&qmR84ezh+M`l^~gs zI@@!(@Wmki)6rvx8B;{p30;YonyJ6u)^|(mBf*i5K3W#RqG>fvh9R_Cs}~UG z)31yMl9f(#0&OFZCI5!&pnzjBfWS`4SXRr(F##bg0J%4SV$HNSv3vrrHWfq z)5~#dJUL1GF327Er|0seGO?q~59Gra7+8(D&mMyn=(i8q>d`&q(!Gb!N8F4Di?s4F z^2gt?1xI1}F}8CVh2+d$$VijVIm03gjqH-lH(R)W$_ z_C;7Wh%KKFREG3auU%Oleq8m)!A6^jX?X2KeVLjtU<`{t3N|c z^E+^AN!{;hpI4yY!UPM?aJ}_8e8JhY=PhsF`#VWW7v_Ty(>38K?^l2Ff0$eM&=@vH zjJf=QgRr~)v%)4+b-?T-Vl5fT7ch5%;cRw^lxWrPK4T7VO+JOn_WI&;xL|K;)Nv+1gF!l7F99nWd%_4=u!SVA5^!vhM!INd}e2s^fKzoFh zIX`@_QA-tBr5=>ER7W5=I3%v-d#8`i82qhS^b3KKvaE&X4fEQQT|I5hx9mJua&Kd_ zQOhvxG_G-%I-KW2;RAQx%Hl4xcfN;zhFFnmk=33fEg5$juwHz%N2 zI!^utURKn7h1}JF@7ZXyuY(+?{>i$(^gsa9DCD4cuQ%oWmDw!;VnQ>m)uH z6)11cxny3tAAMkS#y6l;FzNO~@&10WHznk7*uk)iW~S0r!-Dn&Iih7T9u{Gjg3-hwlaRl6y61d|?)bHR zkMEPRLIu)ge5VqvVa*P9wRDV zE>TkLa6`snWgC}k47=?Qm+ZN>z*YO}HoBu^8AM_yL^(+8y9WzAQ>$kyjuiJ(s@(wLO7N-GOlS?2Ex|FlZrh*4T?8KyKSFJWZU)|^RmS$LcYdNWnH?7!UDC>?Z z;ZWmVUAMBDo}m6%@iLHa9^95n15XXl>7R*PqOrEH&j_R4JzbhI@Y+$yebnUBRs)cT zwYInE5&EsFzd?}HC&vqOB?&FjH(?W5AVnd&SjXD3HF=AJRy>HcSmpni4*MPXg7Z=6a#kts|{+g}X0CFm`ERaQ)v zDHNI(Jn4e$mTuu}`tlyDDDoBEM+npZ)>aGgJNbQdNy-Gxbm9PF&jEhp`6 zWkahZ-9%*74DlPAGrCIiUmfPQknF#0Sze}EC@>jRY(A7Cy!}s8+D$dbro9ggi1zr3 z4nw-dg6V%j(vN5U4@ipVfTR}?{{=~zsUS%DImmk*gt0F#i&x=S83D-nQ9dH#bLhQG zFjszV+JIVDqN*wXpuDF~rWaAvWz_Q^csoa?|L}~NtV9a0!mQO{ZqP#h6 zFRg~$T;Kq)uw7l1W0*>*GfGU^!+s|A%iyl3-@@r`o~qmyOePUxo-J7dXEL9GNyeUC zu*{lsN`2=$5)55ki~b^^ro>!Z+dtUW*w^K3J%qxn%UO8>Q^uE)rm-HFpbXj zfheC}rp8$4l;e~T5KGN+lrUM-T0cOqPM`QMlv&fIe72(*8qUW(0xf5F$;=}vG~PHl zo!#;y$3apxN+vb(?L#;0^DiFyBs6Z+_|PH?Pmgu2982mKsmVOl9=`X;T61Y zL(=h66^Mw1;j?ftCC`Cj9++X^jS!-6v3G7DOh9TYL9j6q~E;oOHr_ zJ{@U%U;EkEYTT1J-K{cRNIeYrY3>KNNa>!^aqWSN%e+MI4l4G6P=2tpo117y40Y7S zP+L~040orM6hs3_jdFP+S6dP0ny$>gZ-IszqAJQh)+4!tOFx59R?kD2A=y3Q;pmuv zPuX9BkNY5VJtl&)|1`69IzTM4>K77gRNqSok~xP$HF$K@%F7NR@3E^GFA7AqLsxgp2z|s)Yjfky1&CQh{rn2UInAYYeP1Wq z+5Guw`kRh$dC$go#v5x-Zs^b7iU%{!$@`A4+}24w)nB?SUVK4cIQdyjPs5r9&Kxd0 zTJ3F1!P=iHsVqf%rLg?FHRh)m?NFK*(USJP%;b>&puMBMx2OktZ|KI?T~28%3P2oc z(F>6zWwnFOskZ>F?W4;(7E8cJ;1(KVD^gvVsGkttz266!j&GKcemi0Y47Y8Yj7Alv@@~M8pdeV zq&;A-Cw4cuE&BW)Nbx!`gWJQg>$AXwFGz?!K@E77=syl-E1dMfPhPM@Ad0M_^HOx8 zCoE5%8EqUf`512Xuyr&*xjn}_^c3u9U8{)|MEM-)4W_qwJ-UP~FlA@u8dfxUgIU|7 zVr9+@FRvlgPMhon9&<-pSFta6$mnt4!oVC0376VSyKo^{7FK&SD*r|GvPb(xgT^m! z^L`4e5kB9Ky5aKKTZF2qG^dDU<{dK7?ln}MjYfE%WHP2)WVgAl78+=Y0Q>bLC;m}F z&0OGL%Ra^jqzMZa<_YwA2`hbWKzo2NVchlO)91;Bcy_**Rsk^P?-5-ddLF!byaWO% zfY7@>OwIP1&+(uIuZn9Jr{MYE1p%#Q^JqJ;MZF^L(}UE3B{N~I%QkO19#krRg}3`p zjfFh0l3aBHPB{TzPA{J4QruG`$^~Gf*lyr)J`mY`go8l=k$fQ9@c)TV#5Xe+Nkb literal 0 HcmV?d00001 From 171d90a8ce822096a5605515228238d134dfaa47 Mon Sep 17 00:00:00 2001 From: calintje Date: Thu, 7 Nov 2024 00:39:07 +0100 Subject: [PATCH 2/4] Resolve comments. Add README for Rust and TS. Add images. --- docs/rust/README.md | 15 ++++++++++++++- docs/ts/README.md | 15 ++++++++++++++- docs/whirlpool/docs/01-Welcome.mdx | 6 +++--- .../01-Welcome/orca-sdks-overview-rustdocs.png | Bin 0 -> 35666 bytes .../01-Welcome/orca-sdks-overview-typedocs.png | Bin 0 -> 12433 bytes 5 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 docs/whirlpool/static/img/01-Welcome/orca-sdks-overview-rustdocs.png create mode 100644 docs/whirlpool/static/img/01-Welcome/orca-sdks-overview-typedocs.png diff --git a/docs/rust/README.md b/docs/rust/README.md index 5aefaed8..7922c5ce 100644 --- a/docs/rust/README.md +++ b/docs/rust/README.md @@ -1 +1,14 @@ -Rust +# Orca Whirlpools SDKs + +![Overview of Orca Whirlpools SDK suite](https://raw.githubusercontent.com/orca-so/whirlpools/refs/heads/main/docs/whirlpool/static/img/01-Welcome/orca-sdks-overview-rustdocs.png) + +The Whirlpools SDKs are our primary set of SDKs designed to provide enhanced, modular interaction with the Whirlpool Program on Solana and Eclipse. Whether you are managing liquidity, building applications that require pool infrastructure, or building automation tools that interact with the program, our SDKs cover a spectrum of functionality from low-level granular control to high-level abstractions. This offering is divided into three main components: + +### 1. High-Level SDK (in development) +The High-Level SDK is our top recommendation for anyone who wants to integrate with the Whirlpool Program. It builds upon the Low-Level and Core SDKs to provide an easy-to-use interface for interacting with the Whirlpool Program. This SDK abstracts many of the underlying complexities, such as tick array management, and makes managing pools and positions, and executing swaps much simpler. It is suitable for developers who need efficient, high-level functionalities and want to minimize manual configuration and management. + +### 2. Core SDK +The Core SDK provides essential utilities for math operations and quotes, required for working with liquidity pools. This library focuses on calculations such as determining position status, price conversions, and computing quotes on adjusting liquidity and swaps. It is written in Rust but has been compiled to WebAssembly (Wasm) for easy integration into TypeScript projects. + +### 3. Low-Level SDK +The Low-Level SDKs are autogenerated from our Interface Description Language (IDL) using Codama. This SDK provides direct program interactions and is designed for developers who need complete, low-level control over Whirlpool operations. It covers direct access to Solana accounts, instructions, and transactions. \ No newline at end of file diff --git a/docs/ts/README.md b/docs/ts/README.md index 6857d3c7..e4808b83 100644 --- a/docs/ts/README.md +++ b/docs/ts/README.md @@ -1 +1,14 @@ -Typescript +# Orca Whirlpools SDKs + +![Overview of Orca Whirlpools SDK suite](../whirlpool/static/img/01-Welcome/orca-sdks-overview-typedocs.png) + +The Whirlpools SDKs are our primary set of SDKs designed to provide enhanced, modular interaction with the Whirlpool Program on Solana and Eclipse. Whether you are managing liquidity, building applications that require pool infrastructure, or building automation tools that interact with the program, our SDKs cover a spectrum of functionality from low-level granular control to high-level abstractions. This offering is divided into three main components: + +### 1. High-Level SDK +The High-Level SDK is our top recommendation for anyone who wants to integrate with the Whirlpool Program. It builds upon the Low-Level and Core SDKs to provide an easy-to-use interface for interacting with the Whirlpool Program. This SDK abstracts many of the underlying complexities, such as tick array management, and makes managing pools and positions, and executing swaps much simpler. It is suitable for developers who need efficient, high-level functionalities and want to minimize manual configuration and management. + +### 2. Core SDK +The Core SDK provides essential utilities for math operations and quotes, required for working with liquidity pools. This library focuses on calculations such as determining position status, price conversions, and computing quotes on adjusting liquidity and swaps. It is written in Rust but has been compiled to WebAssembly (Wasm) for easy integration into TypeScript projects. + +### 3. Low-Level SDK +The Low-Level SDKs are autogenerated from our Interface Description Language (IDL) using Codama. This SDK provides direct program interactions and is designed for developers who need complete, low-level control over Whirlpool operations. It covers direct access to Solana accounts, instructions, and transactions. \ No newline at end of file diff --git a/docs/whirlpool/docs/01-Welcome.mdx b/docs/whirlpool/docs/01-Welcome.mdx index 810a5603..6c55bac3 100644 --- a/docs/whirlpool/docs/01-Welcome.mdx +++ b/docs/whirlpool/docs/01-Welcome.mdx @@ -6,7 +6,7 @@ import DocCard from '@theme/DocCard'; # Welcome -On both the Solana and Eclipse networks, the Whirlpools Program runs as an open-sourced concentrated liquidity automated market maker (CLAMM). The program enables advanced DeFi operations such as creating liquidity pools and swapping. +On both the Solana and Eclipse networks, the Whirlpool Program runs as an open-sourced concentrated liquidity automated market maker (CLAMM). The program enables advanced DeFi operations such as creating liquidity pools and swapping. Pm@4SD$XC{-gXZAUJuYK13t>0REttc%GWvUzZZvX%Q zDwS6+bO3;Bgj=F}*U1Qf-Jp;4gg*+mS8qH3080A5e?)-v%)5Vg@z7Cz4yYJp+9Whc z?VhPW0|20LloytS=cCtEUOdzFA=<$Q{xCUCn{ zu?cB5i&s*03A9=-CNrF_bKg2dR#3dF&f}4}^FW3JgnAkBI^*_gG{Cp4?nNW%4;>r9 zlAEo%QWaWE&&}X<4ji|7IpImr>kgds$cl#ob6CgYo>Tdj1DU|H-?&V9D$&-Mm?7oH z&Yk-8OnLmw!Tt{JK(?nAW4}e1@xLw$;}Q2i_kbVH&j6%S7z()lr|~29{|@uNwP-VsOeC+;@rhEq zCCJ(MVg(7$c^IyFtD@=ZHTj>#{Y6IF8W*+dh>CE@k-~qGalhbAyMEHxg5Qt9cF-ue zr3hYin+D;Oy8??f0%xfglO0LsYXknKdaa?O_Rox7K9{g1`KS+m%`ZA%&-=77qpy4((*2_?i7FMQny<-^ldOm2mjz7E za`8bYyCT@$q?|j%7RJ;p0loZ!=GCa^gyQBTeAC9CsRMc!08KRAo8YC>%D)O5S%Z9P zeYQsm>m9mU@Z|E#N4P7s-$F1z=!pU3G1phppB{GRUjIBR3BZw%%O4s({KYJL@|JTB zA#)_A94EIvn0?-iuXy%=?&9Y|=#!5hBI9J22hDv(|7de-2NiYedF#kXeizQUQvn)$ zRjgWR?r@l1#pY&jA4l?MfK>Mjt`n-?FH`cFbWWaZcT4>vl?oE;T!D}!6OvoqoE9nV~ z*6rV=uYSQ#j%2V)h2XrQq}Q5po4$*%amxpd<{#$H6|Tb7ub2(?W6o**`@w}pQt}14 zr_{}g@>~A(7<3km9hSeFrxr{`sT1OMH$u;j`H(=xJnK_>FBcWPUhf z`19I2h3g@&U#zwmR9uYBy0WkJoEqFFj+4d1;)VBt9J(+t*oqE znn8V87i%$H&QxUa+$Ag_HUv!^VG5%ovBnah`(GDY{sCa_8r{TE;J$W!QiIPXGkEvc z>n`U*Vp)%~!VQmArhu#U7Pmj$e*{|I*fo8?kX3Z%!ZDb2KKN^grZPzDe5Sk(`=`&7 zKsSKKdr+mE`uQvzoCCw^et=)K+C`VZ@BcLtMs?JkZH{a}#Z;APF3rEk$HDRE3dSFkfR9K2iUK{;$5(_CFK+fhTAZHOzC5 z-vh-gbpd-0NPKYj`lH$KgG#u)<)gWHK~V*}dF!ryL6hA+YMa(Gu&?iAP>QuSCTQVx zT*lphfPI>tDFpnHw62t1GcTP~OnnmJxf$s_FIv0}w9vihO0OIjGEa0zk%S4`VVfk9)+_I=FjA7XBOmMfXpFnNId}yYM0>r6)siEPq?fK zyFr3x1O)!GjYD=Qi5Hkb8w>Q<{4J@fc~Np(F0 z+})3(0i?BoB}8AI>DKaJ zSNr}7pk+zF-%{Ws|9RF%P3+Ud$G_bxsO5?lS&Pk2j{*hX{7qT@zCzBC1U*p-JY?@T zZPoLrd}LU{>JxKTvUWjcAt|x<4-> z_>$G}b%j3{ll*=-bcirp8Ei)x>t7i6%@G>L9Kl<=X61r^1_`+MMY2l`+rQMDEqOh9 zdr0(|kG;M9M)Rnh*+5u}-8PtCwL^aD2N>5pH8L-pyKRUk|1+S)`7@eUnHPaa0%m^5 z-oQAy^OxY&Ud`Fryr95wmFCrHqoNn>;-f*xs9?I=92bvS{*38l&P~*;x{~S0)~!ww z<&{1ob6Y3!BK)Gl1&`kq^VSu%in`*QuwUc@2VW6{WFWQa_S?30gV>%{Q-Eo$JAj zU%3+W-&pg1uxIYcHJ@mvvu%2|j;AXV{y3xp42M5Tt~B+Cq?Q-b$qx9vL4eugX562V z78U_SZoqClcx87zFOFdN64hst?iRDcNI9;v$Q@;7kTDFl*b0d~=p+kgI{Bo|sh`ur z<9C72x%xo#;Ll5FCr0u>+7L4cJ{>ltbXRY;X6Dii7v>MH-6sZF6KRY*7NuuJfI;bSY@L7gSnUfHe-}p zh4s&ES_w9~K_+l*nsa8B3Yi`FGcyuIe7EPS_v86d&D(i-X8<1WabI+e#-B%j;ByJ4^g(@=NeJP4+u)DbFJkEz z{2Xf)=ReD{ut-d_EB{Lg zkSR`g@i*`I2PYyK344j8uP^9nWM&{}Z8pY|DcbipIz_dwY30JH=Klm6R(e=J5k z%D@J8ocEW(YKPqr!nRK`Xvq<~F)S$ar*FtT@?$275St^`6Hjfr@5tvvtt!^NZ+sRn zFy6*;q~V=igbnmR+=!Tb0U1IT`0Cr=JR!~S*crS(Rv(S@yqd%X27gmCJWk4CTiH)o z)~rOe(n|dg(Jy^M`ZneVE+KBJh3=Y|)XB`G!R&vnsqO^ttz80jnTc997lPsl%;O*B zZ8STyLXCS#*|?HGHxH!)FVv4(5N$?v#!Yhn~|@I<_3?poXl9%Q6Huk#QND zPDn5Bewr?g$UE^60WI)h^;M+Ce^1K*L^^t`Z3V;@!*YMPsTEiP_aI^>a$ z%Q275dWW#9KFs#2kTJx8Ha2i)95IvTB}0n-c@w@5hZNV1TvJ5*I(~a6^EzfwNzK(d zyTC>sdGATMMfw_6mxe}eAAIkGgb&q)lfM>Hg;sodNZ?7ivtaHBGv1I!5z&~%E(pAqc`5{P2N^jR)J3R%C)9d=vr8nVxCJN%S0Edu5PDlGI6<@(;H4< z4IeN|j>OdZz9Y81Grey4db`*AhE%hTAY^KEodYt+U=A4TBKZ2qjB-k13rb0M;t>0e zplep2830e53BrGR4?u$zdsD*l7s$4eS*{xG!;o;bo3D(nzvmb(o^OB5Au-C9)*vE6 zf2%3r`z_bk4}rex8D;Lk!pXDrRB;rusVk)(+oM`9;5BWYG%ZP^p-%0nPwIJzVZ-6# zd1F7mNSQHtaYE7!QO}u}8!KbEIo3A@Pv3Lj&Ndh!Qf^N<`0*@J*kE=r{JwVSntGUQ zlc^vieOG#P5GwJUQNkiVQiT70RT9XoVl3%!jS0ue>4}2tu(8_Gnu)mUJ_@X6d;$hj zQ&bK<1jtK10Mv!ha{*Gtw+$YU`4Ry}Bk(sm?}7lyJ=f@>q&b4fET!`@tD5J;jd342b99klvh*f3jdPf z!G_I+c;r7MHRuKjC`isqqbQ844vHyNSBEBkP+ktzD4o$Ukp{5Xm)RXVtv&5@8!3?mn?(Z4za@ zSeQ6J%p03g>x3F4ndpcR-N80KPc)K{&>wruu@)Jb(PP%^RNG$l}b0@7VZT#TYqgtE!{DqpUz-u9cN)ej%q3(F%t*57e0F*)~lR`GfT zszJyXYhSZEyp^KcG^pM|7|l~Z;0G24LImBLCinlnPTvA#Bt~f6Y5JmB!EB&(f5%z8 zF~ou=0mKC@ONsKzYDB+`Lrl(4q1(&3&dd_O&`Jh1^lU#cW4u+(YT{LPI2uqMY;Kk} z^)p;=N=;n%IR?#d%GhR?Lh@Wcs2`%uw&s&QOqwMdq5_3yxX;s2_FpT zL}oDSr+(_Fl9-N}s95TrzJ>675>lX~hEet5U-dc2QMcFeo~L=BJ=FP=sh-8(BYe5` z`?9n__2I#0KR&~;HsM34_0W252Dd>Xo7}2T>^H|?%$Y2B5MIb}6*;tLi}?UR6KiAw zET(>#zrVY34WPzmn`3n=py(s&a8%gwQa>}kXO#c#CW`?DdpH(yBjcO(vS z7rp$89_$TFOplG0sh#Hb|7wVncGt~#(_Z$X1WLjSq*Oz2kN3SO(a7Q+?|E6m?EJFi z%WIHgo-U`4^AYAiYv~;)sfM(>!P2`at-)<(e~}7!HG5N?N~bJxAZcm=ebDY$g0klG zR=ZWhG~d5(^GVXd=1}A^klpzzD4@r^r6g`eZ7IlRp6y8HKZ5il!OO`aK{jWhoB3|r zJyh?ko|;|W=V#+rmoBFVJA_f;+NXAxG`4Lxfde#5{`|c{RG9e`nI>_}i^nO)>KV=t znUZ$=24i&6+!DW|xMetjs|cd$L|`P9K%uQ#9HNH3i4**&X>Kqa#i{KeBq-%wk@fWs z5MmHe**Jw>W$||g>W;Rx+=06{s8~_=c+-Pb_dE^2f>+Wpj@<1 z4p@@pk&d0(tB23+-Fite&Mr?q3Xk$MeSf38CtC;xSit$}=D*031!KIK`CjP5($&CQ z+7BqMpr9FFl&O)Y0KM}F+C$_$KLWOOCZRu|t%n)8fmsabDUkXiJe&{rZ+lTJ3aWK@ zJ~AMN;zepW>Ni%&9=c<&bC$%fOr4~b&L+LJeJf$tlqcl)e&}YV$z10@f=oJPj2S)_ z87>9~j)yfFZr4;bhrd*PG+A+tK76FR#yCU$VH*&GNT+e`36w8kq>v8qC|YieMtID< zD8JidG-Rb(v+w>|qS2D)cop`@z4D+tFRFdGX==mHx51$T-Z=MOWjmsC%E_ObW^__R zeVebWN;YcEN9`5Wo=h`SJ=|_s9%TptuM9R7%9=p!Co7Z=ctG$(-sEK?TzJ~aeBA1Z zUotOm5>usd#8r+Ua$w)>abJfM-df59<}TCMu{vGrdzYif8aG(iGw8$8K0!`yL3y(F z*Z%_f&&>jUpG$0;du-cBJ4}Y_iH#+>M$Vse6zj$^{#ung;>=bmb=wLp))|6wlu~Jw zL~Cnash>q936<5SKI;TgMRV_rB8uCar*G@^gqfETw z_|#+*U*;489mU)wO5!O-VEeizD2Pd`FoX4|8~wdQZvpW}q8Oi~Y5e#X#wVOul}`bk zmGz`k?E3n~2?{S=TL+3{6L}A*K>>=d3mG{Tz)cot+kKD45%qnEYJz2xNCy@k%!NSZ zzfetgo(ZM%dTCX~k+@+(|1B`^0Pe#&imR=2ACZlf016{Rxod~Z1P>G4YD5?cjmC0s zs}5KhM{RA{BDnR`x~Mpi_M7TrUl(ukItHcV47GXW2f**pia~L5C942BW1O!b)0^)F z;eLt9RuWMqKaqZZ9L|zd?QB)7xY{pArD5OSamVH`U-gF75KVVD#OB`YJ&jUwK|!QoO#X&%xE z+Ovh((wu0=(a3S~$}J{lMwtOFh4U{<1-1xh>4Wwaxud^~ZMxK@vIl+F-(@ff&Ou1~ z%!X(tC%<_>ID=?4CXDp+iIE2yPm}bGp>V9FJULbV8dMX248}b^><|AUdNph7``y*Bq_~XVPGcXmMhj08mA>l&@<*5@mU@st zj60d(L>bm(313OA1Cza$zHR0tM^+EKcDL^1=ENR39Q<(GuJtUWwu)TjbT=qHJj~d+ zNmi_;bBDA|3<*4c0*6XByXzv zP{VOX?T)`j-k1|y-p5AUfsLVX;^#-5t-c8~dF9dqZ>Khevbx+683Z9p!O>=|TloO^ z_axBOdOa^5J0HA#CFzj+EyR zyOZAqgU9VA?Zr-Ee@(-zmRzztYG{=?NRxZFF!d)-r8FcCm|RmY_~HlUhweNI)Gn8R>H~K3>6o_e2`IZz>7T6YtYC8GY0V#My!@g`ID2 z-ZDKTW5Olg->hYr2~kH3*wXQq@ASuQX6OgL+yP)y;%CjV4}8L1zJmAAJDf# zMdxR~?@sk2IyjPa_Y`1IPOyFWgt>XtN)^q_3rw<#n`93{ko%^JCy7M%)Pfh#qkgE> z+|^zycodusy2@mF4~236nF2(u`MhOI>Kabp?3YKX7LFtw`I*eV8|;8Jy$!CIMkmw# zCvmJ_0RCD-W2Regq)?buxJY(5xdByd-aY>EQSFz?fv}E*rE4{GD&8s*)Nh2$wi-J5 z(r;v7Y7zqdVi6^S2r6g%l_D~vA%2pZlj1jLR3GfvRdX5ua^|9$(MjFU(+#{=A~nBe z*Hk7Td|QGC5TRpFQJIUfR!h|J>z`=@e0ks#d#li?v?fYNWT(FVhwKcuiPtbXH+UW` z|K)a@p-by8<*ND5%laTDdNba=2$PbMoQAT)iUCFQK_`WTHA?{qkoG%c@0S(WlEXgj ze-e^_v1Dg3H&6fa++cG7Apc;!+xR4}i8dvCvG3Jr?A!~D$E*)IuO*)s9g>d*oQvfp zs#j#OcDk?$*Ljm9M`Wly^0|gIdwtKI)~uXsI;i-#HukJ;U)BhIwSs`c9~69krQScWSG%`-&80|MVxd6e zam>!e=g-rp3z2AE9*)wN3b4gj9UWA^L!xvL1aE;IxJvRDXpy_AN&7lq=kU0ilc)Q7 zhIrS^cZw%2->n73vbva}oIAC<61p3#UG^6_C+l9hsz`46yB9}iOQgt9*@4EtmAfTU zc!n?NaasI4dnNATB;i(A;bY)nWB`&Kt%zH>z6G_Dxehs+u zCJs@w$jSL+5Xt0EbuTUAG7uB1=soix=VC^~XCQ^%q=bs&Jg7m%tZM$=_08)c#;pI= zYUC4J#P;>gsL7$=CGT&G6~2#RAd!|?R~7h9hDzn7-~chr8aWDR4}_&uSjF9L0`~Q1 z>C8b`9VCB`Ul64{Q!ky}6rLtmb5 z9~#U7jD;2#&QTdAGR>E8>y<*hD++QVKx>C&gm@JO0)sAXd`xi?VSwlxYjioo5sKU6 zYm1!trWds$_D)ecj?H`xqwK(*w29A=!z0Fvs;zRS3i;QvgB0FXI99c9D-<$vahJnHPXz$*+SRJeI?)09@;Fk8FMx0 z7+m~FKSPU{sb#oX)viVZ9T}PZb2EKymzYvErd+q!>=7)AZx9*Zb)_4K99sZxSOb=6 zn-&j3ELUxR_P-qy@O)FWp`umN(X%bhTdH3ot+)i7>4vL# z9VoJAXDKscZjB^zt(UD}I?#K+m=M$;rdVRE6K#;6+teK!f3s(D8vaVV%Ra410;&66y!< zS=JJbYAsooinw{#q6(;xna0EgES$hb)A-fB0b)lRq|3$q*x4a^3P{^ef z6kkmloZ(o=Bp4q28|4OY@uCG7w?@(bEA|oE1o)TOe-SU>=6?huxW!y6%C`ze8&;ms zl6)UK@K$uK?mWh+ribNAYg^~9cV*pQ>^7@gxTYr2Q!q-P7~eXT0=Ju~9`tl(xn!UV zU#4=`y5t#^bKj20=wI2gu@3hX_!O{! z3D_ulQ$k4FVeU9SvmjIIV}2QC?Zoabn zUH7A9P0DgEzN74(*Qf_&+Ye)e`1xgUY-x~N%6JAqRzrUM**#J(6xrvS!9*c|hQnOa zzw`9~fQ5%jtNuJ}JEq4U4BxEWO(Ib}Hj3K%lw=M3sA|2MYVUyG`~Jx@pWvzTCsh=M z!u3E+{*h6v_FQInw)MqLU46SqADBbZ^s_(fC*QULn{XN92H8BC$3|m+V!xO0ozzKX zFL59@H_Em08hPodS@#M@yf~2hc|4JC(jgUFzl>6dJ(~=tCu>uqKDrP8Okt`-KaCl7 zURvtA!BHx+?ldcg&aGQ9QJhJK<&O*oAU%trvPc*;O{FK;`U!xY&&)D)vBjB zAPgk#1Lt4k`qjyx{77(8Z<=+Pg;cXuyVEWBzMZ_`3t?K@fvg6LJq(Dcj^$61AB{{& z-}%BRi@$x>umP7fIxyFDs^ZieF`#s|kQ5eP`pEi&!JM^go$>Va_h9P*nUV;rICOUe z3Z9_pnp3$s#>ISfkTy^Ju5`i+ zF+KW17kxjuqQcMPFT<|=<=bFEtmj;bWGp)!GeK#zin@#Tgd0TVXEjWEu^mEVE(1fU zOzZFR*5gikx@HUg7WG`3Mf+S=eNBAIPqp}wb_Yy3d-%I$m5JXRp$2U2jyv^4@-*uN z)uJ=A#3)j@QF3Sf_ul#Ez~eJR@I_3)p6AhLf?4M3A%n@-<%ath)hJ?SuJ>Zuf$6ELyD?y zhwhBw1&rzEEE@)3T!y%y;pL z0rG)6sl|rP-j6aDIk!Wgc(4qR5NFc_rE=W>N}Lj9;>;qj=8G=HS!^E6Y^=JpaJq}) z*e0FfZ3i!%jshx?>9RGoT33C{2lQ8XLkPptyA>&zqyyAW#yWh%GG0E$`H{6^r7}gO z3lzWxgoK=%d!Q1cWF7P~A@vAr!Lw2q zESgudE7pM_NybCFbn@}-TZQ*)x^mHUh3r1gqA@z*ZYw7Kd#|9i2(gd?+gBff&zuo< z0goL=CiLnb6IJ`}AAIJ%jb*%{Q~kqCzyflsux3DpWBr|CXWOHsR%3n2 z6$fIOfDyriq&*gyvR=GO(c*fD&}PbF9Nepea*U|H!imW!tBbnCNB&3B8xHWXeqi`l z;d|@eSL%`uGPfldh(-s@Sl|Y1K#sLiMukn$wNeaCSiX|BL&c6D#z&Pr=LaDumEA1ATo=EUTeQ7yfz*X5Ce zdU%e~C`~%KK?LT)dG(%uRqu*zkO|#wd=j+eB33sO!YN!ap&8_@ZzSVb(U`~Hz^NI* z>~DYR>mr_L2}T$j1PaTj!1ac#9lO;Vg_V59*QIbCO-;S4^Z)TwCxW!~!&tL4MRZdd61=4kzi(XE*s z0;w%pg&r(Y%X`Oi+u-l6JNj*pBVArAr4J7HtQ(I(QMA)c{*IIDlO6))^vW{&MwqUe zw*lEJl?NIfbroaSw=gT0)&VC3iV@Tl%PU4FGcX(C%i7~7VWHwfg_ELl>D+6~rrgXB zE5!9WCNUX9G&wE&kQgOGgvv?;r+Sp&5`g$yI5naO@@&d=a}PU>7W5X3)ePUtd@{Ct zRNWL%KJG}!e<}02h>Ia)%hvAvxZQ9u7w6<3c(O>|6{wsYY2W6^jjkj-Kj;PFJXZ1{PiTZX46k0>{sSB3f5>-ncFDMnH_WU7&W%?H)>1! z_60#8XF3zRcr?~KHF}ycO@Q%vY*P+9?p85cW{Dm=Fz(~XHqFUf;riO$G^TM(w$3C7 z&R|mIAwVA~%|>s*f8;>O44_iv%6k>!&z>_VOAn^y+-fO4Y(^{&UM-wsfAayk{MtR?)waj{RfYd@%gOtk3n!^LUUe&9fHPkk2l7|aE0{VD_+*wvD{O59Bvf9qpTSQ)(cycWIcZ#M*- zD%T;}#V5pDK&y7%=Y;I&#`9|o1pqgN)Rnt$8Pu3U0TwY|5`$FMgcsi#aFWRi8}RyY zI3i4Tr@k=|k90r3q3zH%qcx2BPOj}R8zaaO%YCQL=gD>DXj3kqYm40Umc4_uXjet3 zhkH$R%{y#0r*>%yMS&Ofk7unTm06vB4PGhtNh{R_A&@vzUsm5uZwX`9!^@bT;_jXU zS;6>o?|zk$x83m!#<~p^XRE9M8(qWhe;-icvB9Tn3#rM;60O|>vNZ6cH(Mg=Y!&Jr zrR6TE-yGW=x0GfaRZK$_S92$fp>UEnEB=*PUal9j2QbO0zH61}vCUq;l!P&0Jp*5m zDNCbT7&b$)@eaeN15<{Eh*Xsq7RVHvR8tIlmD5#6#DNI1u3#rfLGBVO>7a=@jFD9{ zUVZ4qVawF2*m+5k- zw%TpoEoP8c2&4<==kAx>x1jf@V|1ct1(W<58?LYL97m$*YK4c@tW*!h=nDNZ>I1e< z4dW028SJ;?p_p)#=Q9jqO95WfD1QkF;>5msyYIfgn^a|MYG6u%tTCTlX6>uXkE&~% z)SnXo#cT!T&ci#*3JP5E!-(#K3T&;?aPtOHvwh(P873JNs9VG3Ot6g>y9(W$Wqlrg zl*zTezKq_EYzCyQOsI24vV@0T*6-(jU|VJRkhg)NNDuchE64o<6YwhlzkXA?3}=DA zghgW=)}v6tA%&39zkZTRB)=M)f2i+U`@)lAPXgr#lI_cnoj!F-kU}-i+?Cg-1+eNQ zSDudK7s}DhU;8M~`ZHI!9C7|rfo5vhHiM+Kg9Q22R+20*K(-%7K_jKofroLA54|kW zaIIk($<(1EVHfQLx+Q$9p?^`L7NTlr*OYq4owr911#e#Za&5lM#c&r0jQMum%x`KC zrgpub5Ox)d5#a%L~Wxa>31sfj%pQj$u_nRd+XT)7@1P@xdHWr$8oKyJ=ru~|j z-u81By#wb-CfgC1j+nhy4(2R+d3MY(GRzLNS<*1z$Pk&eV&vj@%x|Q`<6dJd2)sw9 zED}FBVVsxf(ecQZC1As_5V?ZRc=MZt7o@$_q0q2(6l68O;B^myDI=^ysiaZDM?GyG z`iKOx7l~iEr{P(eLD`ISP0`((Kg5k1bl{XQz+LmmPOD189OWe1xE-pyUtU7w0+nE& zvz?Cem)@0*c&-xicOpSeo35`}&+|Y5KM!3hCLerZ=WGHpW##O_gav3w?z2By-{}8D z@e@iUe{}DyZ^OM8e&~HI;)@UuEWEOjB*(A+{^{2GFT0$N$#T6^h3h2>8E4R)>GN+g zp1V=;hLQ5;X;7#qC}3@s!I&S+RIJf#;a-aPJa+KvI7jj_DIUe-e{|2-%n7lLASA>a za~&E=i;P&eALsKTle|p(M#M+Ne_?30gPZp78>dEK(}Krl89TIf#)b;`joN7K;|oG{ zh~>tqAI@v2WqNhiUUqd%vSx0|R!>xbq`nlh1JRm&V)M)(+8J_{5VYi>n>Y(Ws8h?}NE~1+DN{5iFkg2of zTqo}q63*fzM4uU#<)`gnAL*g5bU!9brZCwc!iuJR|65i$flI=x(K2fUo_#c?wtI#x zyGonBVvL)7K!Rtw7~q;YWo^=r-59hzCzaE5c7uCF^pe<6gOW`tLGc`HI?=q6Bd4)RgQbM_|XaCRfQg?7&EX6GAsgTd$7Ct>Hm6LLTdx;n;Yu2fu5 z;q7t0BWvu6#D$Rh-d0^pe2k97OuEcLPL6k6;2J%4*nHYXK^Y?NY-PR3q&L)Q@_XD{ z{?x#{JFHuI2hV*ueDxKi*2e|Ncs`;Mac1t|pLsgihuyufHt%I_T+`%X*J90JysD!=CADi2Mc2qYA6vgDRa=BH$gekra{d?Ef;g}JIX^TJIxdbvkz%? z7(zn7ky?3<+11=?j@q^W#a>M|IgR|A?=9HMir}Qr!8SGWi;plHP(fq)ExD~cAeSx= zBeja(FZ71yI+j$3aJM{V!@U8FIjr?DxAIT-W!ZSoAp-0Hb_SM(EFzW{x<`^*=&}ioBHuSoR#qW?afi-U8;waIh$LhsaVpW;b+DH=K|{^GO!62c zk&u+tJD`g}W8k`vB6_L8i8CQ8UI^vckfV#H7kV0%`+hlREdd>VEzB3yku%j-8G>o~ z*x0Kj*K@p5-IYwzj>PlMAM=vs_@9F0=dsvq<~Q4V;I*WdMYGckK{&o8s5Nl;%BR=t z;OEuB2bsO#lW6!^%>0lQA~7Xinx3pfXs6S_+znNQuk|a92>gV7O#$VcCB$5M*SZTV zC@SqaeFC@4PergZk@L`JjK~^XpMlRt>KYJP;{;2&EW1eMB*c-m2BYTXU2^*NDl@q! z%n|3m=(xMrB!F12XG3Qo#HAQ@`F!P&zD2@ zIWh49N%RZ4tQiL`@5}a#E3Q8UoTWA@a<1M6l+1U$43iS8Iw>A%GBRPhQJylP zO z#Jy6K>{Z7;H>ctv4{Ui>>>1~9pf6_=mS^RmM z>nFoo4oK*)sIS7=u;lap9SRckrW*L1%SM^~l*Ba-9naqGw$Hsxlm zk2<-6^Y7>HeoP_cennqSEY8av_SfCK9V z$7ivXS7P8T1-t@7-WXI+&Mxn3T}#k>){bNCSi-5$PCxId5D$HAje7P_-Cly`RnhsD zs{$?vH=^LC3Qy*vsb#IVp6a`*R|~`Y#Zz)NU9Qnj)}7_S_vaxjqfHB9%R#u7({s*C zm79U5l`Xc7)2w^=XQj-!J2=r3LKsPsYGrX``m+n!_LT*&N0vP==w^2c!Tl9*Yj zu#-gn=F6WBPIv(#h4XV2uupt5x1Gi^lrqrNrB%5~R`g*Ye|qGPT0-#!QCD#2a)ib! zl4A3{<1WtqB+V5PIwLEn=W||zaYB_s3wPW|n<5u}HB{H9qFFu7v$u>wJZ*t~F78*? zSMP442$mE^KH6*skBn=@22UBZBdbY_rbje!jXwSA&z;g57j_|usOWPqtpk^&%2-)* z+-URrzWEG<`1$r$cIA2dOMB);tG9&Gqm@IP`RU6s#7G!*lcj0dULqT^+I6**!&5y` zVR=hjqW)Dfy>#0*9WUGKfj{pY$ZOms^Fc4({XO=I5AuwJfYe$(tmEs^pEJ%zz5%yS zry~3Wp-s#UMCKj<8fnnOQ~Lr8e{tWM)icf~USjUx;{d#_NrnlA3;UBZVnU!dLgejI zCsyryS(Z|IS2NU>gm=bv%H*e^H_!`ItSf)}cx1liEe+x#hq{wFMW)c~5>vcWl-Z)E z(Fw6%zYy9(j3;tFR~vE;!Rs^i)D(`g?> zyM*{`$gK9tk*YgX9QPL6SRt=#tf_Coni-j~9=emS69VUz|kXm~?M=ls-MOrzzOW!~}N`k3UuWfhghtgBGuK<5;lTS}c^ZQ~3dVSH|8 zfSF)PGPygZDEND8txT1;XU?G43~?ZdC$O@>t_6LC%c&feoeD?=5EsE|S zRHb;iVn_WZcM_R{#Y-E>&_iM4NjJRJefxTDDVLj-dQXbSp5O5wh1Gh|yGAf6>(~>B z!}cj?`E+uEkXqTQmUyeu2bJ`2$h$R1# zftGY{e#)sSH@Wv{#nM$QhsQKJD>z7H){miL?4ClFZ|MC6aw5`J@bGVSXvN?97MS64MWhhHEWk}g&$lY_!AYN^(vB70M zcFAq`Vl{UiMPY0yZ26ixY{V$ZtAr533lj*c!EXr^Slyfm&dIp*(6)coAdrQawRIxY z`q#v&r2?6{h{U0lt#HDlJ09eyv`eIRDUlPUr>=LRs5?+I;b_Y^J#r*j1J+L zPSdu1Oz>(~5rty6I^DRfn)#Wa!FBw}_y@zm~kvW49`*|l{HA=#SuVW58 zp;7QOwBwC8Ex1VF3qoAZl7wST95G!9?CwxYoDyq!2aaVLwURrononT~91B7OofoaD zqAOJ4$2TWr=wr?${5b*GIha4U%k8KT>7o+NuMt^Id*H$8xRbF;92l7+6Cc%ReqYuc zVn8J^yxyF8jAm38fRx%5F?gW}#TmcX(itYfgA9S}jua{t#r!^PqbAMio+fx%bsy8d zFcekGTs0N3?Mw8yM}nz5&EKa*yCl)xFC4Z^BQ;jIZfT@jCB++K#!4!uC5(CC+K(q{ zF(paA)way8Z@is>znrVhs%%cXF&L`FSwLA;#cR#0RXB*a)Q+-^pT49tv) z$G@BO%#2QIBawa8*?atD0S$*PojI;X44pyKWBCad>VXacXW=ORZWicZx`Yh50v0%9t~R6MiDX= z)sv3ec%TQe7aMVxJ-;v*Evc#(tu$8)Y=UIA$Qq1~pQ)!$kH3e8kUKEqGO}?l{ytd=hbNOlpxhtl;Z zpt77*xY%VlwPU&>3Mr>RevM;=Jj-@~sEJ4%V*_Wb>`%Rrk4?6AzmA$3Jt@|$xiaMR zA)MsWk(>!sDBVP~UnLN-ksWvVR1$Trnm^JuY|g6DF+O*#W><+=PUQBy?jbT@=!D6* z14~!;n+$ewZ6M^2WOy4DbCLZn{IVnAVsh{SmCd~NVdPw^r=Sdhy-*Qg^{No6ao~(mTt=JsCh{?)mFlp41;Io{w#c)X8!i@Q`IvckAn6hEyHGX#011*KcUHyx8xF z#Y50?I@|?`k;X77aWlNO2W}GpKo-Gp^ZK~H+~q#y>Ze-^V}71}M{~;?kX2FglDR&- zzwWdv;XTQ&PhNMC{c6dh(zEj&w${H#a_0QJ&ko*MfHAX1BbgP2*S9ArEls$EVfyM8 zQ_!wXi*k5j{-gwc^yBH0lwniI41aSp1mOTd>}QiB%zX_WBTkCGkUw#{pM#T$`^Ufx zwg}iB2>L&pn<+MDLS=1*^~4BZUaopoNQ#%OX&Y^yJUx>gw7%Bvl0m5o|BSdJVx9`t~1c0&U>o=c@6lQKgf;cYD6u<(dw#pz2+F$F6#ct| z(I>I^*Tz4ISWjDm;ojR>r&Xldj=XEy;RV+n%W-ZaMVs!9uziw*W z@VX1Sx2D6Q=E=R$oY~lFw(b0&X zfj!tVs-9{xF@1}cj@Gb`oLF{ARq)SQ@C08a!z%S~55@=1PqZvk`JR$J!O(aRP}$p&9-0vuY4g1#6Ic$LI< z>qf|6v{u1k~O<^Si+w-{FZa>cF{#JH%GqiFNZ0|cOSJQ`Z2|m2Et16 z?_-C|H@D`6Xg%-WzFNKsv0qmT@kq8$ z>pyFs^_eo{pb{-vH~xP5#BIE6YT?TDwjiZ|c*Kiy!RBWF-q87E;d(e57g`0M98m~N zvR?}=Gt@j&{%HjAOo9%}c`Pmju(RQT`#L=bn|t;94BoSwvb_s+x#|oZY2dbc40!He zoAlXT=x^}Sr5fx1`DycKBL#L)CBVs*dD}6NP>m}f&yCS^KCN+myP0)obzNT|INPOw zhM^_({iljoS9_rb2B$`z4o1x|71R;`@fTgqiGe|QXE~=XC&j_W{h9Qh@BRJ#;`{}# zV6m0$k;TFZX7A|w(iDi@u5X62=7w&x-_Ohhqb;0v`n@T7N;c9Dy6)R_>32P>e&^|Y zQ*_h0$9XqeRF?woy=MBq7ya$6q`|4TE?8eS+UgjxJU!bvoKfm2Gn{Vh{0>J$>zelG zK$W0wvPd{2Zi-sJ0K`E{yE?}$44q}`G;fZ*u=~vgJZlnHG{<*6y5yem9*W5H>V1gd ztYvYxHZf+qo}tGer;o7m71e`So}q{cGl)20BatzIi=U69_mT^+4G8W_OAC`CT<_gP z8X+TYm_WNhR6^UgoIMWVhTc~vzi5WRQnI_YilpgZdJ2d@yvnNLa%2t+Rj1K<^}HIRG`ZJ%DbED@@Z$=A@I zo1WH;boU*QQu7TLB35F2B`p4kC|=9XV>jW&*}_QhlBzMvFP(fG<0}TD(jLm&&!VsX z7#m4S(ot6ARNI5xP5~*YhJQ^QkFVKp#&<}P93D1r1ZSzPH!)G@HpqB08xp}pH5s2v zFAARafs2A8t;T&#=HOti1-Cfc-|Pb&FL0GujIP%r^qUj|Rd;O42ql_UL(H9LPE!?%x&$D&zCw4!aQ%`EK^U_G<=N&ZCZ|)gH-X1gb4gy3`?%9m?|s z)fM3fn$yK*jj>xCRoCm((AStWfBb1t+;k(izE0wlyj0_PI?biYo!M|xuwd7DpS~h8 z5Ji|>x>bd_O1Bz+S^GQxcCn-c5eyj65d>w7I&GH|eg_+YNDZso}Te?3I^@kV>itnmVHN z4UxX&If1e88>*8&j}1k8&Rf&zKQGVul76TBb^hbHL3JbKXhcuza8wk;l8Qc5 zIU{IUSLwM&&C+{xcy3OSFw&J?j11S+z_(Yp1U0Q@UiD7Q@cg3$x#1 zH#bu8lNQ#^Kf|Q5I?7bz>+N0Qi=ba3N`JAX$#C1-NVSK$jN}9*#i+#-6%S+goDuD> zU;p%sYI0N+GPb*};uI&=6|=0NFFW1q?VEO3G9Xh4#N#QacHPY7x9PM#&%2*Zad3BH z#t1YsX*@1d(A9vnfpId3_bBjU29}oTeKus&)I*s~5j+{jrj$ zpSsAan0BMn#5{0CdX=nm7rW-Zl`+0hG&vzqIuoN|!DCN#a@1#Ze&_Ao!GD)^|E}u% zu=6(Q^tAWxjjNzwrV-+=kh#zmhIdtgbplwP-kmqGGGG3yta%E8V@eEA6jE3DoM6bFX{gs$T zIu=*047l69}BIGmrav=rb?trz8*~fs=|CGN+0$7 ze5*sz9%-#r5&K09s3~%>wA#Mgz2bYT*p1vfgfq6W{=rQF@fVt|ENJ2fKD-wrB`Y#Y zI9<*1bff3aYpY$c$1X4(XSj}9+T4*^r~OIYrkES&TjbwIZ)G*d7Y2T?tjisLDB)wl z*NF%a8TI(5q*VxFi9jo-V8pBK(b9e>|i zjMgXE-i0YTH`a*0!}nHh-Hwl{tp!EH2GTMKhui$vkoyF_-VHnRYg)^kmD11HMWaUl{4vR zFoSJ&h>*8hURQ2PJ$@@EYB{p__|#3iarY_?d-Lkup#h`d%;ENJmxn`cc>@#ff!l<- zj3rUnrC@8UI%xb zRI*)%{JgT|vb-g*Pw)%>dp--|$l{8B)xv*eNFCzqYg&?fpnB*+H%00sk41if$^+6Y z0fmt*5=SG>Uu40d^Zg)aoowYfvgQ$IzC2x5JbgA9L1gP?Y{04PZPkWCCt3cDXQ5V? zRpwQ2!?SzUOU&EGlW8ZkCp@iEmY(b@%T2HUu- zn*ss=UWqz^Y2+EPk_sIjjKWc&;E>CkM55J?Jo6>A&*Tdg;Rf8D0YCg5<^I5Uec}g> zhrC^5ZoB^*I{@WshlF?e^x%wT_KfbO^|qNYJl3%_Ot+lXFv3D4q#<=;B9N_y&ZvaQ zZRZp&6W;YV5qia3v2WOvpZfOR^#qETe+>yfnKj0|%Eb%?`;MPZ`T_ySoTX5uY#{WNbP>{xNk(Ud&^>?wrP#Cdpb$}4rQq#C*%_iGk!$M zjI~WrQqW1>DZCeEPU9L}g+DA3JVO9EW$;9_#R_$`$N>7}j0G#+~Hzy24TWxftTCs_||2lqdsQS4-Sds_@--&Sz|zu=-S`0aX^Ju|IMQ z_qAz1$`h;zI2Q_7DEpSDKWQ;i{^Z7p*xGVON)Rob3&Mc+g3LpX=vYuA9D`(Tt;3Dc ziDrCneyJzU!XPX4$J_XTu!;c^PYz2X`k(?nnXMz%_IbJvQoXg;OS14kuxI0I7v{+U zV!>H$LR+z*B)_{26rB~G=3A=Y-fA0?stJ6K3k_&o<*I$jFs06Yyj#Im!e~PqImYsO z@*vy+M<1sW`F~2`>2Wght28uB>DrV08E>pNN~$Kwp+>@OeKK6NH3GAbi)2IzBNy>R z>9+;dCT8-nL2-K{RmnR!h8AiAri(^1oGgR1NR*Up?P~0d;mIfK`o~eyN0Tpc^k+WV zRf=;#Wh1w=cAy~*vGHo`NYm{fz`0Owu$*mBpdy+>7-mETs2H^5#R;|nU{$#_4_T(> zneV~YRz{%#8{p;uH4y|7*SZJcba;#za?*_3(7Re~;@zF(q5+YP#^j)M3ak;KMTbv9 zm;Bu#+a(j^^$b`xYp!%LhQQ(;!H)S76$|OGC=oLU4jmVWiYq4!PjMxW_;#+memJ^j zTY0#*oo5qM*5hxJ;&YBvG|ASG=@8%@2z|j>#8=??H!;rtAg#sF4)zxay*{da>8uZY z%yaUf0y3QYg-XbhVf?JeXlV-cCnu2!f@FJ-!IPxSp z%y>BR6q-s?`_8G8` zWr&$~u9vGOX!(VeoypL8lgAmuh0m+9*Mrfka@xn3yoMuJ;^+kIavb78%1^?`khDLJ zJg%G}s()y~I65G{Qb)a%<&bUY?ZVfZq3~PN!C}t^0DLW2_X2Uf7U_Qk6jmVq>Jg*g zw&Kvksqdb+cSH<4zU@>S|AXlz=~PLO@%@P|8U`#GumJRTRw7Wn0SJA~M+HZ%Uf3C1 z*O?e7g1yxxZ4ATVrWpx1EJR}T`vycO`;4!~wiJC^u!uNLIX2$~DwVBqSP(NPJ|TK5 zNAx~C=J`SaovO~aK&7e%_cD&N*?iCB4mT_`N9zmmYL;(GRpYWMd3|j)d|1bKo>od7 zopSaq7G=7lNhHB@=5y9y=f@vi5lQ!Lolp<%N!nfpD$K+UOUyED~37Y|Yu=BMI}X)2n7s6&IABU~uQ zp({#U-F%NY={>Sa@C-7%mQTimR5Q3!+tJ$8DnRVr?d>PK5pCk1jYjb5z>_z3QFye5 zrz5X}YQ_HA83qq%2G-tRODzjYGwp)89Q$u`$*Hs-sX4=nkZJuY+Zm~H$4U(!^~!qC zuxMhi$;QrjF%lZD<7VV2ViY@mT+mXIwOO`CzWpQmjd};pI#f!?8%2=^L9vrQc(_i7dLw~k=MH)r( zD=wCUR|Q6#t@Gmw(;QX~F2|UE%P*o3Tc*us#247edndeW%^Ns;!Lo(V&!DV6LHPW? z!MY74A2cd3QSYE!-TM}-$QXp27ZiU&olP}%aE^uhW z=~OkEL%DEBEhwQmqK-pBy!s94CArApF95td!&^_QK&}L~kyH0L8Cj;C2!tM$@6md?zytp0tJyN%9p(1%6uO>An_| zY=@PIZtYCdE-l@}8A_y~yuq|(l}<qIGS@~~NTshS{`5M;PjP3X{C zbw!cj)UTl+M3}bg!xXy>CZeHr9?N@vuGy0bjh(usQz7fAqCH;=WnWoS*W*|8N-1h4 zSdLoS_8h+Gi5lllW@%e@Ikt^ZF*>Ep7#7H~IBizSDW?&vtJRLnlkqBizybc}l}rmk zA!(DR1QAjE@O%56uYswTo&}+2CUQBMsW^e$^*r`vAj(0faw&i#_D%xssi8?l1SV%u zXk_W>{0~MduLF_2$d~GxysV>B9M-R)Ml&91^FG4M{RI_lt$@)A#++iv{zo`EhWLDR zq!=(<^#vsK%FwvD+BwWsx<~j-jVVM=p&bL(la2@SzPDWHVMAPdWegY~@+MM{X|o&n8Oq z@y8cv1aWj@0O#E2uC7yuGZwy;ac9UmVfmt>RT0#;89ANqH$B?~!%lv*$*vE4;y$4KJnrr&_L(e7;^vg|TC(K@sM z;DOLm)>ETgI9K%rgXZS!K)E_vdc)3}U767T4pBNq{1|URF2(k=ElA0t57(I*g|Czg zn{E2Zi`#Ip-b*Hi{Kjjb3*{f0OIww{DQ!0OCY2j;=?9G$?&3W2`Ie=uic45mBy=iN+PRQ0DC zVP@6k?&xjo6%}IcgdxrEx_HtkG14_X2-AP1Wiy3Co<2AF4LJGI_4Xs<&qpMQ#BySd zOEq9)V;#wLNQ%%{BHKQ{@GDYx5R3Sd4SQ6CtF_6xZJA9@8nQT#_4SWN8e-anE~^nK zcDE0?vIIMAy%OJ3thdxUw;m5tI(spG=JrF{d@0o_ZPfO@(f?bRqe@JROO7Nn#ZcX4<#YG9(PM#Ib6K0SE|CyU=DhvCAn~>3I?quV^N=o8v@u>uzC;lO&T`xBwRw+u zPtRZEAM*tq4Sj%N#lYw{hIOWpO&PZPhe-Rv)Osh8{;DW|m|_l|4+F`F`B-)(uyVhS zTQ|R|6c|uo(4pN!R)oTfl3Ju!f_XSy+MyZL!QiPoY$IyWpej0z^Ndp*X7SaGistLW zIf*rg%Ea}La9IJDUJ*s71+jZaWsY6;bZDrSMMa^CdtY#kQ$$Kn539QQKt|OTtsrCP zEqS74f-|GF=K7YHZcm%G%iPAqlh}~EY3A#gmA-MK@aWKgu*Z;M*$w!Y$?Pu0+H|HT zl1Sa{ReQr<&@|0N6GKhI=e6HdMW8nzDXTNyWx(N|zCfMLhH5Ndn5|x}mG+2cJizvO zw=$#fKTEfYvoBOk#zPaFwhX|1Z0YQmhA`RCQKnXOTat;nhBj*6_2rV&yLW8Pt{udl zg;bjFpwv&O!z|S+=R@6s+&A-8TBL-(O& zon&kUanTI36m?}{{*;@vPf?E@TwgCG3!X}};X&yd^^}Dcn1Uqul3YrFqz4wwn}1WO zlk$W|$wYShm2WKutPybIBJs=>ZV!BV)w*?+{VjVz{dls49&Vnfq-yLzR^>nw)RYT= zJ^QW;^L<#-G^d=mNP&uI>{%vV~UaLweW~iBa(W=pJ zRrMr+g`JYd4rYuf)1~Q%gZN%1w{=s?qcYL#ox8?vYpbJU8Ihe~l;O@a3Icrhxu6uY zj?X#TVR_{->q{OwWc9yaHgp|2%<<~3a3{mNuf7L%uT9#+VQbS*2Lw9Xg9>rP%bHrs zc~EIrFO2csDV&jj(!Q_bzXo4T@SFl-==3cz6vYP$WfL#32BFU5rQjzlBH zs8&}`4ND6b>ZA336ZwCU0Ql8kY@FLnHnCqz{@(s%;M`7#G?%Qk%!bO?zr- znv~G5lZ~Q|{V~K<&vbiA)H%)F`7>*-<&5TOKJpMaEC1QsJ_VRI@NY1_Z|Oj2z`P&2ZanHOOvpZ&L&>td5D0fPI>mXadNu!+iYk6Zt^S>4h-UZBQEADtsPAu^*xGa>rbth}N`wQU}>_fC1La%{T+4gG-eevW7v#JyO%94=o4TW$|MMBcbdm=vF{-M_>(#} z>H@ZtW62p;E?U9-@tsq20E6OBxPEw@(ltXtl<7OE!rlvkZ%H~DJ5&C|>ZIm$G89)d zE7JA6UXn5sN5wRqoX32TF4NoczzB99evKy{nDfy*cPLvBP(P`vSv+RV`71K%wg~db z3yFyTi#%)$;R6i@bt4Dc+r8HBZjHV4QFU=IGnX|3mnn}=nez$PB4IVkxh*BMsp5Mj zHByO6W&$b(KZsayqrSs>sl0VmCjpo5l!`W*NJIS6)45qyTIcC+hD9yqOOOD)~DN;(#U zMEg;A|4`DgFKmqi+1VtvpBT5N-LjKcmzLBzJRVYXAq$dSyb{tgd4gM$M6OPI#1&+? zep-bd$t&)6Up4Cf{$KKZWO@y%EFcDp$1->iDALlY;H~XC3n7JidUrhgU(*#88A#{$ z#=J+<_s6eH7s`E>`_|#H1)@2_>>OX{#zN!@PmO-h)qCriWG5GXXrem8{1S`rhBO}i z#<`)|Fk@JXzS!b}*?Ld0s&!(ZM4>g0JzbPFeK3AdR9E%#BNo6EWPW??57=UBo3g6) zn7cw5D>8;Pb~@@EoQMAo2)S6rez$PN!P6xg?@x?`86hsIcF9hT8p_w;Kr>7< z*IeihqYqv}Gp-Mbt5_gRP8Ab|BJ9Rkum7uGf$Cavqd0I%75essLt0g{ri=<@GRf@D zy@7C0Jd!zdK;^-MG?nmIl zB&D}ntb9*ktPmsw_)3(W=*09wk`}Y-`18r_Dr{Z*k~*Pf(pi<@BCFN@p|{C}Ul}V_ zQHW^?d7I{SU35T7EAXVdC6&(-v#~trzp~&_K;|XUvs3^CSn;XXhu#jzkT5nOR|X8^ zE=3&$$Z&A{{FS<YZ(4x+EAXS& zD(o&U7#+bP&%w)}+UX5>aTCe{XwmG!)d1ip)Q9)wQQUP(V&iwSCi}XOcGBU&D5L-JL7v^=4m?hN76G z(m!w~_MQ41SE~NEMrY`$bwOSKWTV+@!x&2oHE~dLRiUhs5oAgy0hp{icTg{oPsTRY4$o9g7MOZ+RxzBVLzyg=) zzx`Qq?DfNX_<@>jY9R#Wi)aeYk%A{x9T$Y`Q|#Eklvxf~DN{fF;q~Nk9FaUN#}MqR zayGPbV6Z-P7kf8Ul86Hn7avSRS8OOWY&g z2EUhPuP_#u?WsMXjx#6U%?BPRO|C=PBur48cF#Qba976X;dVx!!J0aA;Z^#KSbt|+ zhM0X)Mg^{O+2n-vbxt)n=Re5M1UtU#I}dZ6*dIrA&5M()CZ^fTjM@!l{M8YmlPaNe z=Y5;}56a?hG2PpsRhh}DG`gd)(f|qieRwMjFMBpifnlzHyr#^erM-GXYjkzpvVl6e zcG6+ZKslze2Ci?gtV=tyw&?+gJcukf;FA^c&lAz>TuG|7I?4W>az@gC2=G&2#9{kF$p02%Tcr48izbLI zwVE4_N>?SHL>Kkxi=y5ab!;SPaE+!8Ig4s!@d}m8*mtD_-Rw7t-4z54RK!xv9-mse z6%0$@{?gP2*}qHc3;!-kja7v~>%)_eB}v^Y#UqCyVKS3!EqR=uxo|{t=Fr#TgMyT5 zeBuJrH;t!t-9eeJHH*u;?@F8#{(ch_RR$WOJzU;*@0^!fxA&Tx?ux1xxX*d5U2oMq z8m?>T96jF+^V+(gC42NRVy(jz%_V*w=Bv1~!XcWR^dWww!O}mTGN8$v`;4OhX_+%`Se-dg@9S)~H7tJg$LM*JzS?RD6dH zNm-$(x2|QIA*y^8390fKM*H6k@AL@4`VD(1HEf8MVa)tIEXR&rE!gf|18tpNQD_;qZ*^|VP9)W=wjo_lQG=7X- zcv*(hW`C@UkqScrY1E4Uj;VW0_ZB_E{MCQtcQK`gpinjEui`qpuZZRhnKi2R>2El( zUFa78VAkM-n4nL)0q;7BFa68s82phPd-P}Geb=MX1nc>HQx!?o37yu|&_1{bb!|jP z^g-^a_45p>`e{h`?{a?4c4ibo%RlZrfc*cdmnrrOYGhKcEBgl(p~>C!0k0{~6^pD{ z+WS@7>A-ZW?Ps#YR`gJ_gvnKt30>5u%NyNphQV5ZOs}GZ##LZiVW)P0{A9nbK@&v2 zfL@RnMEuMot8OD(K|kw5R>fu8M0*Z3z~Iol{S%0-dAgBPOlW+9i^vsGADZX?JnHEr~;B- zKqRGkj&;w){$NqrdcU#r;eEMAqf?(w&5`mox7YI5)Xsl|$Lc-$t`HmVkM+19lRQ9% zQRW2+s^j2DhdQ}-HX6y(^ZomB-upjVARbzj3na055CC)rDpY56!JGhly4mlw{|@LG zv0?=C-Ksdj-PvXz;mA<3XrS%Ojv;eMQ@F}KFf_CE#C9g3t|Cu)2CCnv2 z&xzmu;()+k*Lm$E=&VTB_u_H!X)^+jb{4W1fG|oZ@xe5(E9S z&DwBDH-y?6e|u2!%aZe&^P0HjnOErnlADW5@b=?@8gv3(7V8v&vE-AV}Cw>RedZWJ9F`!rm zAPVHi6z`XD>1~NTeZ&Sf_C~z$ z1U|xxXSsTqKUaEtSZd#x=o%b6ZpMH7PeW%vr-lGdZ{g2onoJ?at?t?=XZ>qE0<){k z!YeKa7;tW^?Fe5^Iq%iAKWxfZxN$emNaV;5h)#a_}I*Rmp;Zte!F`aB>o7GsE53Xqt+F1Sx-nfW1i3 z-0fACvO=p%=qf`?aD}3{{L2dnK~Cr}q4~fpH|$*T8>_Nl{N0n2)xUiJYT4KfSFxFA^EK+Vw5Q^esY zHK@ou1zYwRujA3S)ABQ7A~y^$8dS)gDWU?Nm*wXXAsGB#OE(r%Z0nBKIs{GTGy}jk zk$w{1MpC>pSedO+x3U%gwR46G1mXZ#Vr37>$LtGGVs(O1REZ}UiiB*hiV2Pdu?70K zLb1yX~|UDkqE&0VK;g( zq-UPDNKuY1RC6?q?HCh}hAqWOFdOO*`sB!)CM zJZQ=8eSeds$Iu-hcKT&!)>*Ib?Co9qV|}18yBDdzlfTjz#VBY`z|!#MM$X^L2=1(=TdatMUSBUOpa*0yU7Ob)j$YKkP z%+lCG6N**jfC!f7SzzjBojIcd^DzeEulw*TsRRSL7c3CIu7^UZJ)*G)nws0y<^zIH zg59KKcbV_FID`dhlU!7@egnhzgHnbxShkMf>I<}!Y9CptsE9UzH0C{BRY=P0C1J3m z&uf1_0Y#?+bJ)dK^df?)0b@a)7$)5^zMG6PH?^1{ZU!q0$VcAKU=@-v*2WIYU-~g& z6Z>ARsR_mxtKmc7n4@1ctI0u4N;R&-(^_W=#WcqoJriq^*V zlik3_eE^75#&H!jHDC$Wn-|W5T}eke;b|ny(&W=m9}^Q3Bt$Z%q}whCnY0GyXmhj} zt+9GpibAC-|Fb%W&DYLbs}sAtCFupQBjN*cJ+rt#xp<7#-F9>+}f$-)U3M#9CE=W`l>*h^4T3C3=8@(R5I02 z>D0v@Sl+Mh3Y}$T3)gppcCzrGYLq2?5m%Pa0}T8}$pc28<@F!|EN-{EOHFyOdjUnf zi(t~z0>jo-8;DN;3G#c0%f}%p9Xhmesl{(12g_P_2}|gAXH)hIWP7)*kAT9S%;%#+ zxVYILxGFNb%i@r0bmOm6>RPhcP+bA6hzkP$eN;3@ zBZOkj??p{N+10F@PDF5LRsU$=&G#VjgENJ`8B+Wc&4?1Fv(c`M_;Je44#>jx7Cdun z+V~x@X$>|M3t9tW4>8~+6M+XkNDK}hN{&cUqcXpKJ!JvRw^*=xF*WLKEcMBzN%iA} z$I&wg@Pli?`;NhtwFBvf$*l0XqZ2DtSR$aMS*{d413)(i(5lJ9tcvuc4hXQVwrA_w zehmzH>+l%j<1T9p-CQ^-H<*ite4yd=CacxKLxqzg$D*X}XLzk{L|hPOKk?uR7_L!y zU*isZCs(w+#;{Zy94v6%vTop}9pT(_2rAWcF4D%=xz-KAetm*S4&fW!SXH7;j$iy> zjiS@AI4rfD6Bc0R9Q3yErsyV^) zK|}|oHi2|5KE|A*f!3XxW(XP36?H1jv&o>w9<~6sL;$lJF_n%N)$wVBByM(Xer^aE zkb`x;`&spU2FHI?N#s?Cmu-iQ>|R z+Fm!4if|<*)GnM9Lp^_J>^Q93^TJ?n%)CNuW2u)Q9|Aci_4k2*9tE0CJ^QfNMzT_`u!4+10%?<6}iI3g#XZJ)) zx`Bs>hl}EiRL~xW_u95@5H)Dw{`u@w<;O|Mc5NYkiRlA0XBfHzt9D>r7)9s3o6z=2Yjg@PZ z5NXJ3LF>-jaL7h@^})-*(z8AHS*Wc@Q3Lzd)P#xvqfjYEs-OBRUGC)enNoQofiLbLq`m9vQ*$cs zAjRtBxjxEQ!qL1%nEjooz@s(*uNG4LwZyFT63w%QZv#+r5yo$2-ATjQiMi4H_$ATUfMZuF zcI!ud@KxYT2?ZnY@vX;@8APH7C7J|)VaG*&5Ak^%dL$|kg>7N}u?B1K!OM|Z9+A4g zezLMBtOX}Nd9@hYiR&a?<%Ks@glH@8(3-v;6gxVuyvkp zqzMr`t);8J>Inh#8NLb;gm7eqO|08T;E)#}6~45NjnuZjPQAwT*g9OU44&D)y`b&b zW%YcaP6oUHByhNWBuWqZvZW%%{TPeHBdwYQ7xe+#Lx-F8<6$uN(DZu0=CnBJi7n>w z(&Txl7YJZqfzRcHz;L>tqRAlzeqLV9A$T03iY%;SSr5Y9rwzIUY_)`-13t#9wVcj+ z^YMo5Q7I($o<$3uXBjg?=>rdsVCD;)2Z+c9qL?+(DSjkjc2F4LXrd=2+u|(0A5jzV zxM@d!h>i6{`L7)6RlMinaHH$t{8{Jo<}A`4XYAYcL8GRJujEKqXuuA$M7`|MY`7BxB*xXJFQ@Dm|1CS3ww7wpZV|tdT z?t!wTDU;cMyo;U|=M#`dw(>lz@VM2q(-zr40$Zr-2NKx$NWDwW2RUKas+dgcdbUuN z6w1RQDe}>6D&{R=b2BUgMc}oNyw&HdKJ50i%tK5eWkL7g$$SlngQj&isvRy4-iX*y z69UKH63~BxN6kgnXQjb>q9d8)(C_y24{|GrvF+FUy|TVhXNg@dLkVnAeIXERkxo=a z0lBWY!WF2gjy`6i=Kx-a^wX!emv6tN^O(g5fEc})4pKE9Y7oG5a^CEKocTd`2 zK@+*3wqZ2qrssVS7Otdx7`fsM zI=%8oRe!Jp?@qQdVDEQ_7+Iba>cZ5IVcdqmU<`72xfFsj1FI=DbJfLnZ@u?&DNuU8~$xT|I-RkOT5`&xM+@ zqWET7Hu>e*--s!?WGJ?yQCncGG&el#Z^$p|)FF>p1#LXk8Es?&%+?*Ys1^!r#O7Nd zL4V-qxSJpc90>!ms`8WU2eoQ?(xSbYaxCR*zoTtn35L$hP(8pSYCV`P;37U_PA&+$ z9mCpbJW?@~E#-q- zhp*2@M~l1(!G-)&kcm1*{6r^&;>D?Ag??m;w`W%av~hb5=AU2tXDk*4aFAQu0we+gB*|6&7Blx2v|mhDm_Fst404Tm%Iie+ zG?K(02emtbgPQz->UD`#ln!~4#}voVdKdV#*l-TdG`9SZEd( zd?LkrrEhs(fa9aD6PP&24ADP>^;%TfEQ$F7zEy&=Qvb|5PT@>Fxm`mXNlq^5#?4L( z_s4)9NF!dj3mzGH)v$g@f@$v(p+MR;Y}(HsH>f?WM+J4x_cIOg{C8nM^f|=;Zd^Xe zLtk={_il_}$A%Rss;|&oZ8ygHWVz7XjmZpH!DxZ8X+C@WFzt&7>2g$&A2_KdRYl*U zJ?@nEcuhcFsPV$?MIi1Plf(YB75A6!Ltx?TZWu3lcFH9>r=KI9{=tyVpBQKL*Kisok(|B1^$G?L1J8UiS;C;iIs{K z`kslGsBhD61v}G^xKPa1b6%u~DPA?;(}qpz4X5qiPF~IXJ;l9fJ(i{ZBWL;9ug+Id zHtr@LbC8>U-2I~ozlZl=fgm4$B<#?Ce)a7+4o|Km6G+Bt{?+H&xkHDC2=PTOesCm= ze$)w3#`xzqraajJB z+{dSqgY-qd#6OH;J~?(lH5Osktoch`O1c4CM?JUOUz7{#@7%oMIODm^xi}j9q?u#p zGf`C`$kl*6y6Vn(`6Ny~0J&BE*{a<+o*4dS2Qk0VwKJZHT%R?P>#h(<>b- zu}JbFoUMx({+~b>o1OmI9gsbAp$|FsFVx%#)zAKEyp3+t zYmU=q^nRXa_UYy@r)v3uJf1BoI_O|QPmvvU<;fsevp%~(h!}K)5Bsew7anky(L}Fu z(x)Se8BnEc8CaSa-fucheOB}I)L48{wa;lZq33w1f4k+UiIyu7Lfx^;^O?E6bL$L^ zdR4z>3?6dr@yD}q*Zth ouMYk5?*9WN@Bjb)%yAQhx+v8&VpA*i;bEo3776* z0ck=&6r_d_B=nHb36M4ie={%U|2*^lKQk}#>{GJ$*=L`<*Z!{0T9FTRHMmY*JP7~* z7wo~m1^{pzJY?ZN!44K*J>Mb0g46whsTTm8;ywDY03Wh09R0=1K;v(q;+xeB)p4h2Pr>@K60m>O4gFb2I32G)$0wnT#fma18ta$NnOT1qeF^M4_@w3iX`>#c zyr4f?-Y3UwN_>?}y7$nx!w5cK06Vue)~G#J{a26xjWwFazCVb3E0^UMBb?CndH29j zr{l9jpnYKA;cDAApKpqrJL3*R7r`z7xoM0dmZO6}E!MNYOYQ&9%QXcq?A?Q@$i*u` zhs4^W4;n^*9Tzebvf#L zt`@610{7&=K@NVPS!)7Y&W01#Ch+z$=FaESR2}UdWLythIJn6Q7&yI-&UaMhq(xZK z^xW|7;>?tSnFRA$BhB>K(e>Ns!X8~ud0k8+25#*a?cu#Sa})zScaR+1ZU1?c1WV(P z@p|wN<$W?E0$n8FhP!SHip##4-}F%pcV+%#?wX@= z^oTx{qw|SVob8uCWu9dNkHfO#fh+@X44}SHi&t`&Wsm-_7Qr@~9JsSgsyv0vLqCQBB!Muvtl1`05vJ`}}&cjSFYql9Pk{ezDImK=_Z+QY7}@ z*#m`d@}+*RZp#;g$+Y#U8^0URm0G*K926Pn1533s27&;z*+`*BJAi`(2XbTkuzh9 z!%TW;4P9Hy*UQ*j{=v<4bnj2JW4dN7pR_#E*i|7)YaHv^#@*J8R}R=}B<%&Q{>+e9 zoX}yE)98y6>0w6|L|N_>EH2KtFm-BVkWEdLhG1IWTf71WgOESE{cz;Czoz&K@=-CZ z`4%N;6n=EkIhS=KUO9kfQyaLnw;YPvab4J=Q3u!7lm@2@C?C9*LdR$NPos%?2zk96 z+D~PFceH7G#J?B;`hjMN^uN=*VJm(Fe-vceEhXRfUKrIdiu>Nml2AeHM z^hXZxTDyM1|0g!=f7vSbSy5&BuIaHi{>KFW+>H3}yRZ)|27a#t;YTcur*2NRhyK|5 zX51xUjee)#e6NLNFUntzZunnD@xPAh|GVeITK}2zv`5E)w=fz@u3p#eWo}NjK#2M( zxWqFdQ0C9Iw`?s70^^w)+-Up{LK-8uToK$E?03JBgj7P2MEJQHoo!)+@u4hg9uL0tjMbDIuK9Wxrs9o?>aI;3Lr8fXR*Y2Uqo=8Ziwmrs{CYNkEm zzw)@T3u|%p_06QCWtvHk58vL3(aY3`^F9B-H%JywI<$HN8fN6WM+r|@sZ}(&5;W;< z0f@KaknvVX^%4p>o8H$qwR*YOl zKZai30!+9JM;#Z<@Mz9JpogdT*S7aO)+`!U*4{)7mUtX zZ=f#0--Ab_wM@5%=Xyyt>ml^PHuln%xOBxyCUB>WmFioi19h`Z5qsU>mDQHiSz{%Y z^qpgF=oc@1BGOwA<2JDO7WY3J&pWlj^5jX&7<-PHBoe|=ta&Y+Tpl7Y_V?dI{n=uTYPr#2mKZfejb z2VCd$8tfXJT3sYUMD*u6SDEnUkm&<2hs>0eOdF!6Nl$j!saQD=mzy3s=Ha-9EdFYq zYW)}NIMuG|$#|aq8mGkZ;Ze~yd9Sn?7w+dKd=>S$6MW!C-+WG*v5=(iWW|bU$+be7qwayAE z%VUeF6V91yTDxr-E*ZNHR+7|^NsWHg7Oe)?@Ptp$WNylK?n5Jc^WKr@o^EL4l7AG0 z9rRjUf<8xVZ=j*B``Fp`4QF@jVEH?_(PI|El>H^EDQdU~V>!U2lCg4tca3empOfTs z`pg5;c0Zn@qbP(1$}+BXCy&jfNK8#dnM3@5|K>!2-qbGMl>TC^Iy`K+!p2>8dQ?7O zf4O%r;9w0mF3k4E0cp%oJTzlKS3(xO&YX!BQ1xnBpr3g)yYJ@_(1;`UF4Zo$nd(vK zb=Y5Dy15Vv#0vCKATB`L4;OwaLMQ}cN8eqNA*Szq2nRNTEfCHV4U_UXl7X-lx_9dX z&LssqJsqTUs2xz=f+iEWbk*dYN3y4DD#}&e=$UtXR(B@+l9#-ZeNptCsfh9Z&>0*= zo*LU9h(Z*v8+$mebd;mDNzyWG~&&*_O$JQz{u7|T@p#{A(HjYZ zLH<2^_lGaoIdZuOsRcey;R^16401O}Sjs#c5`` znXpbdkgq`MKPicjvKDdP4;sT+Xv|mRJg%^F?C#;Szul_0NPANe%pf~0ZaXOD8-4y7 z_BCPbv+JqHV+rVj<8@aSmXmsRu1G!Mw+@gb647n&| zgww6lS0&`TFh1Fl_X;uZf35G=@h{xD*@fWj64`X%ZH|N<QT}D4L`8@213)-luyOU6_LW zBQE*gavAw-3FMca2K?S*ir4+%esd^KwV`NJi>r_!>Q{#c?q3^E*@f&bNfOR^yX`LZ zOD*8|2_IEfa%30psk*5S*>fVcD0kB}bWzx$P38FWI2S|qI-xqj21HYfWpXjOxudCt zS)uRuN+>6H-S_O=V1s&FXCQTn=@S`BxxGC@3=zXh$KlrG>?Z9AZ~s)R{<`#S|IbMo z`5>C^Ud+~vM97S9DzYQA2@6x*;@>{--1?Do#TdC2hzofRImXpl#|!U5z`77=anOb8 zBx!q_oyNCVtCrY?zFPZ#qF=~JAhMrB^Vme+Ie`nd_eMnr<|g|ri)PfLgkybcZ}58l z0~z*`3qa!}ONBBVQhs0j%G!=~29UzyCujUOT~$Iz*~>cf=gqMc5AWfUo6b$mxa6Vu zrPS0ClB$>EAd&qoTN}^m<~ThyO^oi7lSCF5jMKc^!D;@Hr^9zGQ%G&4YbFa__NBe{ z(Wtu*3sP2ouGE^fkOvyd-5mS0w{0>UrM4_<%H4wZ4wmU_w)iXRe#n=>k_XZJ>z4_R z?H-^-5@W2z?$`c!&b-rfz|gPsf)M-L9`E%I&LDcOo*kF?W8Alh+k?w86?9duLAOXx z{QOhC*F>l5{`W* z&jV>)x)im{u_Bn1c0y|QuvC%2cTelV+={D8B4-3!nmxBnK5F|}sdf$w5Y0j>dCk}m zuB{?#Vvm>DE+e-r?BRW!5B4xw$z9+#3qScn@!$bpbZ4l=o&GLF`O$h0ZDC%b&ab`k zledu8?ZEJkH%L?nWjC_RXz|S+yP0LWyt&M%IycXV=+$|_b-~v{u)$Nj(bmFIJtM!& z3nCZ4*go>DW@qDVB*tsDg!{STa{g@y;mo`>mTBBn$Pm%QlbL@x42Dx7GiVkBjfcpWm5+2%h z@XP-F#wCu|p6=3dE_$~(IO1-`YM+@}c#BtYhg8`D!+W__La!SP*gunnf!Ydfb;Qcg zsJ;B{$sV6F8r{B@FMzp(zf*eyP${)^+fl7NU1X20->mP?E#38A7N2!%5b}IDq6(lJ^(*+WGx#f7#nG6P!|UlO~-&IHNyr;;U0&F5dVCiD;yY9y;vMfYjoj& zg7vYT+z@3Tm*mDR@E(3i%JO!TojzPz--$k>wWsUFr^AzGPG2`myc!Uv*nx|x3%1pc zNiIk;P49Q&#{9HOez&Cdfp^V0t*$JEk`eyg5>3t6ZdqERuF4-XHxa0btv_rU*=D&yF$5#1FaK@YpL;zVP;b;`h7d)N*kkQg|N6JmJ&MY%axLjHp8 zXFXg55TYi9e~9SfLcL6EB@S=`R%h$;MR0u{OtW zTa_D~`Qy^-wMtc_{2_CD#FT5*^i%gk?`M~;a_q773~J)6Qi2QD1a|kX;W$t)MX4q| z>t6{(mhM^^-6{D4VXsRMp`reNd536F4fo<;c)hk>^Pg+R{6%8u%$iztse@9~G&a!@HQM9@+N8>+!`9N^@p(UP#t2!62#oMHyM>Cp%|?m z7C{Fg>WD}ufk>xjzpS~7&Wl|mRtOcR2?PFgpQ>`-?YbZ8)}WfQ-;^28q(3Y)#>ere z_@XLq4$|#MKCa*6hdhNK@>+%lEujVLjw*WAnT0pE(-MGq-fR#ddHnojVqZAbN68_d zuv=>;^>CLU*DZSl0w zo22=7ifOo@&yLGODqKj7z4e`9Gulwjb|L=^p@3g`k}fN*{a>(KYdR>w!gVIbTSNKV zlrd6Wa)f|@J05-#_`EE_k_g-LLZ5}7$=UDJ7oCyq)1Q{o8>)A%igxGlsuLF=^A5_P2Rg0Fb5k9>ybvfUO8BzmLyxjxzKd*0c%(_Q9aexyo6l6gh$u*u6!>>$x zwsH}ICh1+F9iZ4w<{yvH|@Ke!iRW zgnJYCOi5=RA>C6Z zQ0McihYyj~>CYfJjKek4&Q#qt-%l)ePK4XI|DOTS3F;N`b^gpSkIm@m2Uae=5E&Phip=2hEkd4EfyC0k7^seTUo+dHCtfXS5x?_J&E?U zb^9JvCQW6t5F2tTjNk+=xxv*{zC5ZzDpVwjH&QB6BvPjSG&CV2tafc?93R~+Y<>4L z@cN$y)9xPH0`~_Fe27xngukVMm6&=uda3CMumV-tuuTa*Tc0=96jt39mStoht&IbZ zbF=yT+TQz&BnWmQz68CayV~;#RxM66Z`*XFGR01bGp+9y1Fx?>lK#3HRpY8PojqDP zWz7Wy-7bEA*+xmle}lBlXsvex(R5&b1zVi?qxq>%5B~Za>G50%18<$VE(3ot$DQtZ z4S3qG{o+O@6A$_&=F|~d05K(7}t9my3)fsYTfLB z%;oCKxPktGL|oJl^RJdUaQL0(dC|rEzYB5#c)~uOazl>_YegB1@+n5lJZ7}0^y>W+ z_4Gnmb|UcFCYQ9Q)M#PR*znX8Z0=S1ytQjBUz-crh_l_$*|zEB49kRWVrUar^XnKV zn?7sP5&-;eDPgdS4d-4(lmLMh+TZmV7Un3`F;RoWKt-l5AsDHCkHA^Q#}np0FlZ52 zDWo6<5oy|Ajpa==?Mgilb=6bW?7p9K3~1KB#z>skB8(K{bNJ2LKyoj-2vQy>ADUm= zvV|qK=H`z2Pc8vTNd;`A+LuFEGeez`5Lz(^tH$jEPd!KC4O#{YTq$|9QIdE%W2DB+t++_MOBD%%&7!=bWOO zs?Q;I?{O;o9{FHbU2mF2P)~w|#a9d>+a!uPZW8hex&(KhugKpbQ&M`g^&^BrtJkB z`>b7xtyPFHHhWjOujO>{BeAQEHCxCZVnL{F))6(XAX@t!sebah|aDk1Mf$2FRTI zNb0}ypVoe^$Z-K{Mk}gWjY;owZrZyf^pqH$y`Kus7Ua<`1!$OMyiq_iwd?c|Z!P_) z<<*mZa%F0`L8KV)Hsgg{KzXq}$49hx`VV`7HPtFVowxJHY zml@?9QcH<>OJ#8icO3>+pM2BjGCQ^t$tJp?x$x{7^6+)pm2=^aO@mT$WuxHw;8^^- z+&rG8-BOG_G>G7yFjmpC#*p7X{00SkIoLWR`ts{ul!}uvz&>h zbxf?62sxn+aidA!x{F7OI3^Fam~sN&F1uaFI|H%2;KNo^-oLNN`dZN4FmO1LlKSgt zV`-cXeB>tu?3HDgz1W+J=(0*!?GU?=nEya~wI}mUsmcA(@JI(FV{@pwF_j!u!mj9A zgNJmC@9p@jE_!9pY8`WTTo#%UVOoq5DEAaP6rfPSyM+TZF866L!lPlVyQ-Nso5kk( z`D}}y-^9(9yDf011q8tc-8jo?E%I~odE%p@A^D|H3z3)`6DganNo@SFM*gU#%}E{3 zQ?V^s4h1iLC+<;-Mt*U5j+<6=2Qh%SHDh|oE_d7N#no`Z`1bVMZV@9Ig7khF z<<_7i*`jL?jgGa?JOEgG$3T^Jv9xR1(mjP=glqXsySikG!2vR-{0=1vDC7Eu?3 zzAhGhO@G+aIv{l}1g6S|W3&49(No&U7T+pM9ov>}EK<-uOr3vv4Zt)#PIXws1=5c! z$?czKC>~2TK#(}g2|*{trh!NYd-pPqaI&TQLjDdY8SZSd&3+e`7=@)*i}lMJ8H?wL zv&gMI3odNhjl?K3rZTBh>do`I z=L5^E(P!S*`X*;3BE(^jyi3bam?bc#OAZe3^M*!#JYAe1rsrBRSM;c@=&Ro&1!HOY z!PIsLVbdCVP@vO3O3=!I6SSMl9&9yQh6booha>e_75kQ8F&|;tOFpX}`w~W#zCmWm zH?nS5u?i|Dg#p^}ygyKvs)RGI_N$Sb>^>!sj~iiAh`%V($-o_V@f+hpX0nO#uuXppBF1}|4?Ge0j6X~((V z0NfvIQt%aGCqz^)`tp+{-hLXGej*X@;8M}pnLK^*+z-4E(6Bf;`StR=Gfjmxz4!h@ zr#mDd4#)PaSnc|-&Mi(%U;u?qc1WxiyRTpdw?vB>Z@W?G;xES~zUH8Zv=jAB`lN!r z3tS#tuS|eRukshj3464LEHTiOp0?h*lkzKGcrZryB4Q;b#WzX|am(x~7VZ6u^zETV zBD@o({H+d=7aBw2c?SpzbE<`@TpK;V`$khA)sd{(F?nh|T59OHdJpa@?yb>D){PRK z)rgG8#*j7C)cf{IG{5)>2TP@zU_V{a2^#yCDsvS7tp^ zrFH{t<)|TvznXXpPPrxe?;a+$l=D`RsKqn?Si)=PZvrFtSkKM^^K4D#qVscwL7q8D zD|P!z=W(YJZ(g8G++zi_Gf0WhV*66bDG4c=>IxTSqBkc=zRt(0G=yFE=J zxY7$=c$Waizoh z3%6>uf9hi$U;PngG9)GnRH~^^-6bwI1@7wE@IBzyb6gn1=fn|r?1OH$jUN9KP&2{3 zQCJefy?%zeAR`qz&46;YWyLwCxUkkOe_+#0^LLaf5knNtDe2qYSAIF7* zG03rrvQU0_F*zcs|4T#QL%wIga(Of)i_MB(!+lsxvb5Byu9b6`OEFTFunX!V&{5WS zsB+l~b=G05Jy0g zRp5DZ&>K1iSb%M)BuBk8zcv5rFTUe(aE6_8z_k-{yf)WZhIf1SUjZ90lF7|>h4X!r79?3Tjd1T~N*AEW^vCoa;nu8cIa^Y;Vgdbvp8Tp-!Er6gr zryAgEN1DOe|5|;U$Ik(71{`8TTjr-1<|J@g!*(!*XFzO;7{x%*N&=*!A-mr%7H?p- zF4^piVle(KiJ?G?CfJoV7*AN!EWa^pTjO`w?kpI{*PzG=`~pMbdDLQ2?UdIy*jdug z@BS<3I8o9&)eNe?5B2r%7;@1oH^x@V5Bja(a^|7;pW|YOK>B^OBVf%vbrL-pCBVob zw-?hSQ+RN_Vh2d0SF%G|o;Uam_&X?JmWVwVQjIj^}cN+sz$AGjWc*Xraf~ zSepCVKoK&f8RMCdx~h(Q#}ZrV-JxR_km2a(v656hN#Zr>KivY`@o8R`i2a$e41CuB z2TMEU@Kd>=Q?%j@8bt2eVyZ{li!_FNb@m$%d;7xj#l}PUxV)hk;O=d^HZiJ%)JP$0 zr$H}hO{Cm#v>DzHTKSflS$zQ9`3CkS{YjGa7`Y5gQ5x*F{UowsT_8@w@#wP(O9 zK?C?$Zy}(V%|rjh#*2bECC)Z6%5arj(68)jHY*0GGw=B@Hz&5SlgoNJf;wM*EL`9Q zKqZ^|R?}0KF9pYjKXPb|P4|D36PaLdyL3@yXiNOSn}R5fuvX0JW`4ZSoe?rOY4bK= zNMTP^vYH904t6gC6BQ`&(Qz`YZ zuW13T%n!P`*f`%L>^kTLyZxj~VfdJytt=D8!(0k|jZZF$MEoOKhQu_FVz6BBcs8qI zXK4jsc3Jk6EU=a&MmkDNL0UfyE~pEBGP&E70asJ|Msuc5h;sl;^h{E?+ZpK% z{KfT8H1G7V>lX1Z8CPOX+6j)h?rwnTcF}{eSe;or+xJ=roXX-9E(W zeX#CyX9K<;Su5Fl4XaPmPB9F3>nx%X++9|ZIL2zm9jA<0TgOep5Bh+0u)}UC9|qkF zU0b9m-^=xTqd|qX5UR-ho#%%9)GDwV$+_RUHyW{fr#cb z;NCgGbn8;y3?fN%L$*<(*6u8*oe}7_Bcv^qnKkM*r0=l_zfbR9;dv!yAJaA!iTGbf zyt33iDtg@%vay9NN%Mmvz&sPKROWX^1FEm{>jsP24G9sT>KtfVmy2Cl|LSWLSaNec z+`oDMX+~GR*$qR;^;OM+OPpU81Q4-g$mC=6%xX3^?_}q%E%0@E#Lg1?dm4se-G5QV z&Q;`*cZYhvmnPZcU^lnSKEscJ4!x>gJhvUb9D(SvXlCYQnZNNP)DFE(d1=H)dlJeG z034vc0G_)j)H?9|DGp2cSHmPx+=MU3_*?{G6kb5JfeB0enkbho<9!FJs%WDN5-dqr zaF&N-wKLm`d!@8qLC(EfkejFfv=K}tXY{CK=`K(s*Cb(&$0O^+;xVBL#jI{1CnQm< z_A0&IDk+s~N=IoaxFNqePGl`??r>lI3ij zmQR|0ns`M#vi9TOn+NIP;+%Dp*ZXv~FTH%MwdH_eo9iExN`rJHn^l{>s($cyQ7Ct@ zby=xcb5hw)&Wgf-8>XF4OYr|tc8Qxr&4MR%#`eLgbQzA#3H8-JAfsF!TQQ>wYcHQU z_$0)XcD;@l)cP(ZW#N>@m(gzTOyzC}X;mf)XEx4t`LkAHyXE5$ii+C8dL`|cd;z;T zt|VIk2)PU{Yr*%4k0;CetCS+1n!rR;*^H21WGP8MC1JVbEd#mV(&b$+J4$!T>rkp zS#-GD%=vk`Qt~@$sFK%wf$_Aol!2F0QanHe=xt>;Xg44E#}Bk%mHWxUALoB1U}7q+w{&@j34zA Nc2D=;iodO2{ST@(kx>8u literal 0 HcmV?d00001 From fd0b252ae622438365f48d18a65c875a2b804589 Mon Sep 17 00:00:00 2001 From: Wilhelm Thieme Date: Wed, 6 Nov 2024 21:10:11 -0500 Subject: [PATCH 3/4] Fix rustdoc README.md image? --- docs/rust/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/rust/README.md b/docs/rust/README.md index 7922c5ce..31c1741f 100644 --- a/docs/rust/README.md +++ b/docs/rust/README.md @@ -1,6 +1,6 @@ # Orca Whirlpools SDKs -![Overview of Orca Whirlpools SDK suite](https://raw.githubusercontent.com/orca-so/whirlpools/refs/heads/main/docs/whirlpool/static/img/01-Welcome/orca-sdks-overview-rustdocs.png) +![Overview of Orca Whirlpools SDK suite](/../whirlpools/img/01-Welcome/orca-sdks-overview-rustdocs.png) The Whirlpools SDKs are our primary set of SDKs designed to provide enhanced, modular interaction with the Whirlpool Program on Solana and Eclipse. Whether you are managing liquidity, building applications that require pool infrastructure, or building automation tools that interact with the program, our SDKs cover a spectrum of functionality from low-level granular control to high-level abstractions. This offering is divided into three main components: From 79e0a8f9d8a5a3af50adcd2a83d4e28314eb1388 Mon Sep 17 00:00:00 2001 From: calintje Date: Thu, 7 Nov 2024 08:43:06 +0100 Subject: [PATCH 4/4] Fix typos. Resolve comment. --- docs/rust/README.md | 8 ++++---- docs/ts/README.md | 8 ++++---- docs/whirlpool/docs/01-Welcome.mdx | 6 +++--- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/rust/README.md b/docs/rust/README.md index 31c1741f..a1947ab8 100644 --- a/docs/rust/README.md +++ b/docs/rust/README.md @@ -2,13 +2,13 @@ ![Overview of Orca Whirlpools SDK suite](/../whirlpools/img/01-Welcome/orca-sdks-overview-rustdocs.png) -The Whirlpools SDKs are our primary set of SDKs designed to provide enhanced, modular interaction with the Whirlpool Program on Solana and Eclipse. Whether you are managing liquidity, building applications that require pool infrastructure, or building automation tools that interact with the program, our SDKs cover a spectrum of functionality from low-level granular control to high-level abstractions. This offering is divided into three main components: +The Whirlpools SDKs are Orca's primary set of SDKs designed to provide enhanced, modular interaction with the Whirlpool Program on Solana and Eclipse. Whether you are managing liquidity, building applications that require pool infrastructure, or building automation tools that interact with the program, our SDKs cover a spectrum of functionality from low-level granular control to high-level abstractions. This offering is divided into three main components: -### 1. High-Level SDK (in development) +### 1. High-Level SDK (in development, requires Solana SDK v1.18) The High-Level SDK is our top recommendation for anyone who wants to integrate with the Whirlpool Program. It builds upon the Low-Level and Core SDKs to provide an easy-to-use interface for interacting with the Whirlpool Program. This SDK abstracts many of the underlying complexities, such as tick array management, and makes managing pools and positions, and executing swaps much simpler. It is suitable for developers who need efficient, high-level functionalities and want to minimize manual configuration and management. ### 2. Core SDK The Core SDK provides essential utilities for math operations and quotes, required for working with liquidity pools. This library focuses on calculations such as determining position status, price conversions, and computing quotes on adjusting liquidity and swaps. It is written in Rust but has been compiled to WebAssembly (Wasm) for easy integration into TypeScript projects. -### 3. Low-Level SDK -The Low-Level SDKs are autogenerated from our Interface Description Language (IDL) using Codama. This SDK provides direct program interactions and is designed for developers who need complete, low-level control over Whirlpool operations. It covers direct access to Solana accounts, instructions, and transactions. \ No newline at end of file +### 3. Low-Level SDK (requires Solana SDK \