From 3101dd1fe62eded7b5532fccccbc17e4b3497701 Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Sat, 30 May 2020 10:31:46 -0700 Subject: [PATCH] lots of new features. --- resources/sushi-confidential.jpg | Bin 0 -> 47390 bytes src/clj/auto_ap/datomic/ledger.clj | 7 ++++++ src/clj/auto_ap/datomic/migrate.clj | 23 +++++++++++++++++- src/clj/auto_ap/graphql.clj | 2 ++ src/clj/auto_ap/graphql/clients.clj | 1 + src/clj/auto_ap/graphql/ledger.clj | 4 +-- src/clj/auto_ap/graphql/transactions.clj | 2 +- src/cljs/auto_ap/events.cljs | 4 +-- .../auto_ap/views/components/layouts.cljs | 7 +++--- .../auto_ap/views/pages/admin/clients.cljs | 14 +++++++++-- .../auto_ap/views/pages/transactions.cljs | 20 +++++++-------- 11 files changed, 61 insertions(+), 23 deletions(-) create mode 100644 resources/sushi-confidential.jpg diff --git a/resources/sushi-confidential.jpg b/resources/sushi-confidential.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bfd80851b52835ff98a563fe64600b9e6386dfd6 GIT binary patch literal 47390 zcmb6AWmFtp6E+GD?k*vCa2PBJ?rsV0&OitR_rYC)y96gdaCdhI!QI_$aF={T?&rMk zcYdB?tsYkQ^zPlYYhQJh%-{LH>i}#yDOo813=9AO1N{U1T>^*$;9y_n^#}(QctrSD zK}JMGKtw@CMMXhIK|w{wLPtfzL_ zy)K6hfIb=ab;5862#5#>FfgzHI2?Ec#CJ&Vk#R*)ltFk@e)jkuVsi*osKu(f;yx1k z(-=EcPrTs}H~C4cdM4o*-@OsA2_1_V=6~}4JPE2JSUBiV&}%$6uk(O`2f!i1Bf!HT zK)(V5iv#x_{vEEUG6M7&_8(%a&iryF@Vf}85kHD;oD%XwNE-PG)z7WghTqM(hV!%R`qB=8V7tfAy|N`^j0+#{cV!p__e2n4=p(zY+C*?Ku`)Bk z**U0)=F+IBAQz*df+a;0#?Q|$@YnULnk>F)sNH*^6&BG2`G;xNAoJfVw_>zIP&=X0 zBUf^~9~eIzj0p-p;8&dpvJ+$4Por_P$u)zH5O_i!6}BG4xmxav&k54Q@$-Ge)&Z2D zc6PI~+sZ}BSAyJJDL z@WtiIRXQ&MsosN0QzI?pihCY-XaVS)P6$j)Jz$uB(}Es?^EsX5aMrs$f=S}5>@4D3 zFe5{M?R3Gm>BCk?VaI97VOm$IRKWHa!|W0<0JhgNvLRex<4J$NE?ms*W`>GzWED$| zf7XRgcWsm}ucd+aBVQ*>Qov&Sr$;jY*NgZLpL%*`#J`Y>bWsV0=5!>mAcR}o;&ia^ zSKuRiCP6NMV4ko++!*HEjW`u4yXcxFr`l3})f_**O-COUKr#`CiWG0I@t^gOK0yke(i~-JtL(T~OqzqkWB8!}k@ao8*Z!LaOuuPqjl4uwnGCM6Tm{Y@dTwOHr zBc!IoGnd>)dc#l zsCaUbDN2^Z?09W(C|gp9cmwemEsB0dIV2N7*}HC)JoL6BnxY~ZJxJC*A8of8WJpsq z5!*UAE%q0>ii$V{GBDS~Yf!|Hjqc;e?0UY$xmA{9h~(_<*RGbM_UL3j@SlDMbvx$xQY# zx{tYydc2JZ@!$$96ssyH1 z&SSgr{Cl;|?#llVjh%hEFraZ^oaqXk$&I}n4nu_$XqV`JCWMH6S_4@6idxx%F&2R21YgVDMoTZ!cKh0o{{^*I_%%p{{KI8 z695)5PwK6ay{(G|SN(srvntDftHDrHq&kLC{@s$JV!3`PX~by+LV*cHy#|XV0(OJo z$v;!7>x#u8ap5)5)^gsuW1gbg=#68^O^m<7=S+|hhykd9anwOCadK}( z*R2ttJfVk(h!X_Yd&g^zr>gnozkPw@-!c&d!oZwyQdqlBGckh+r1LNTo_bfg&N;>Au#~_C)1xx5NVuuFC6ZjR`{}cKDJzz#s zNC-0wiU_FdLB8yD)bS_{kwj=PYu%AKT0~NB=Aq9{0BKoBXD>H1Ng^Ht{c(}F2wqVz zaJx&XECah>!jCdQrF&eX6dtY$1Xc1s!JbTO2Fx9=1CS{Hy+4A?>8+5 z6bXZrCjM~QiK!dtvS-hALH8wMW+?*yF_8u~U2sl4)TxHUA=zEO?hB|qRI+=hcRDcv zrCtYzHD~GuV>*FF)b|&$EB=|xq&s;jePeH~tWj<_F!y0jZXG&vNMazJFT*^8yD-x?Ccnthe8?y5 zJKLnwn_eiQ^ok38W7R(`ZHel5w5MwgUtUhIg&5x3U3VoMs-k)IyihYT&89GP;M~=s z(!DIlU#fP=@>4W|)50N;L6_Y%?!o^tivRp~;H^1jemCjYU)(2;XeVz5Z%s&uK$CFP&9e9O(+aw9z)SGI6WL0Pu;qW z#GOKzyU>o$czo?p??#xw`Y&LnwMl~USxwy5i*n2Gt-x=0X$ef^>Q*{ ze0m>(RO&0Xa?-aK@>idnHj(gJ_pjAAQl|o2Kh_OMs!+H7kv*q{>rClWee94TOKkgk z#Lckz(r}4&IAx%x&w3j6rg6SJe!j%h{D}`&(EpqCT1eGR^IiVP%*7$A(9w`K%Ur_j z{gHG0Id;6Goxl2Mwwlc|?~N*2%Z6b6!-G#gd2XG$dhiBeUaB7x-6wVFs-64&y$W)Q z;+`Q0dGJFS@c1vFE8-OFD$Q`8b=v`ETej>AN!}Q}GMzz86{Goc=BOl_`QMl0L=j!}?05qQ!Ov?9m71W#8i4wJ1nLgjMqov;Q5i!ZT)5r9bOy&mWR~iWt!ULMy>lsi&8N z`?-#MIxsIaHKX3;le_3mrbJGKU$Y%S;>va1Ls*gB}IO%QyEjBlcxno;qT(Mu1Ba_O|X?Yc!?x(*HKzyM-VS zH~rUK3%`ck(LnlG%-^*7uf`h)(vrW2T|)Jku5{qYMG${w?~+08X7h)n-`+LtGEUARmzUeS3EDXF@~fxJeG7{| zhi7&rpvxAzyLoCjmLEX8yWB(T#ZX6BMe}#J5Pbjb9fOqIVcd$#Lmowfm-w}vi$}{J z>$K#-9&7Om_rOCqX3ey*!whX_#)__p-?eHFQeiaS(fgxQq-I$-(H19}cy3nLl6@r8 zbk;arY1LYCa~>(BC@A!)D#Zj@#7GsbC;WPB?YbQpZqFm8@u{tJ7uFl~xI}C`b>+5~ z4O!?l~(xLPV zqxPW)@x25f_L$+aND@umTtnwKS#K)X8nPSGH|-9Tv3PQtk5tV+chlt$dy*+HQ>Ij= z&fGFN9XTbv7#QW4wi_s>01DxrE8=jO1>7i^KP$qUDoef<4s52h3ZltMhA=z}c+LFq z8GOv|i&DU}rw@OIamKfAPFjR?ae=?pj~PF9_6JpF3(= zKuWLG{{kLmolK^Z4{H0q7u;J5VN=AVN4wI`RxAue?fxk3bOQD>kCF0OPCkq&51u~~jY zsk~b7#%*dlnYK_&&D^(0rYD5!yxtfKAd{r@;lsJ|zo5P8#5O-<)N1_yKV2W1q#(#yxf9MkA8Ps#%sX$t|A~u=RcN+qA`E(o~CxtMiQFFU-GeDE5fT;Zo9E1 zK`O!TcJB)O*0H^DWXj#nFsj|=iF`bMW&KVusA-lLSu7@P(ii~vqeewQSl_KQHd0R=f8mtbRpTSt*Sx7W+!O0-B3_@* zi!Vkud&CTkt2B!tym}Q^KT*negG=c5AM{#mR=ovUpMJWP`<#Ug9t9E`p1H9CEz+J9 z-3Z>WMqe>3td$N+^4rLr{C)}eOR%P%eTmM)0i|bTtQZ<}d&DLUGn9sDK&6=>T=_js> z4h9=`1Is8_L%T42kF}^kR z#6t7K7j4bEj{GRTxT<;sf#hqlx?6<0uPGGx%O;Lg8}VQFwqB|d(MKMmO+>o`+EK!AY{ID6Nebf1O6`|DF6jpO!y>FeCkdFpme z%u7}yojbl!Z?KNa2U*IFKiDe{JTqy$duT+`#KbkCJA>#ziCgzM&rfs5SciOB+BMFDlheg>jP#*^tiR!(gCb_*ku zJ~*l#CIpL!>@lJE091%PLC1IZo@-aR^|?4Ni1>5PCZ-^&^m=68hfe+aDw4h|qx ziVt0de#7@G)Rub* zl{e-QO60OF@t>iKT4)|Z$=jCjXxs{gzmlwvsgrRqxR^2w_84bE^ry@2UN206;9{3h z)V~x#k2+af2C4ofo66KgRI>`9idbnAxzVx|!}Wl3=3f9uDfyYEK*syNGU`G?5&0;C zMHQLCr>&P;$R7_Aj^4u?Lw}IHHA1)BCt?kuoTp=biirs>klQhl&3eMhs|})BSnQWW z^FKryc(#OqSNpA#IdfD)Jjl&J%-R26t^+$YwUz|_E}4b+0hN#Sa5c@HcN|vmlNG9B zfE5`u0>zC$|1ZkNP(#TldlT=AA*rQ7!Ove<$!9`Ar>necb)KXgR_swE@r^=d%H;^B zGb;aS@yat(v%m%fB#6!7%9$0!DGFE&U-yO?b_aFz-i)2x|)#=jj41_YFeL zxrGt^gqD~TW|p{$0A%_Yk$D)%O9zGNKu<^q{r5eGhTN14AveLp^y>9d`$r{eEOW6h z3T&j6O*5M+b+Ho9h4+_UiVd5o>jU7uGdjZSF98A1{B~eJEhl3h>z}3Xduix&>!jY; zzo%GK8NGf~eu~;^-i4IkJG^8eX-5p?R&&$kbqFQo0-&)G5s`uw={_%?6Mc1hlg+c>D)(Dq;VUyj^~u=b4uUeKsCAeYQHGyj zTWl)?1k%@_9}y8X_}>REG-CrL2B63+zKl;~6_{6C33w{H#|g<<=nVdO{r;&_z3QNc zM}fMg^3v_iXxS&009B{tY0R?5${1POXn%f>nAE?3pAz}hPhOe#Yz_3g3ehz?SjEO& z&N8K+V+sBO-gYnR=FMj0F(OtJfTPaOFG9n)W${;A*G9@pU_e}DiUD5!@uC_yln}-6 zT1~_j4ZnGOfZ8R-ww(HSL4Xoz%73t!-ai_}eE;Kfiu;E-7)gRy7a6kttQQH-w$-~| zmoJGxSPf0I>Sq57YRN7tTG?A!cpt|HgO&lUst&dOR7 z9kX{P9k(U-Zd(T#eG~JEJDLbGNGYI7fCESm8*dYu#F&vQc&90e__Or?a{6veqkxg- zaL7M2=(;r`Z;zA!S%{mfrG}&d7>FlUP}DUdvz3KTV8)?Jebp;+MR<-P5&#tyisbJ& z2tdW#a@1;Zj0|EhDzmu~d6-|4+L18a^Da5pZ(%2#f7J?19I@zKS!1W##8NcAe(-9BkVY|ymDc9aORvctRE`f2TcIK z21Vy32!dK_m$ZLSX&$+P3eTy{;2Qa}3zdo%TD!_;2*8E&bKTLxDScTP6a+H+}h5M!3c7t>~WNrJO2cn{fV>f#ioF-mw2wAP7oe2=I;I9j>6tFB0rk zjn6gqN{5;{ta%T5y94opTe+aol{*a`DIyI+tB$uFFhHu(hMw{+oA=la<42n#`!2E-i5w zgIZLNVa=7pP%?gp=~rhDfNKoJs1?-hL)`_m7A3-{lUj!tTZlPErP4CZ2NU3}w%fHK zh4J)B^p*RH*I-h+{rbXUx|T6IrcH8~%n7h!vvu|DU%;nZVk`Vn1>0VejGE-eLb zPLQY!ey*QRYO)b~CJB3j#`L=hNs;A7K)~R5_PIj4HOtic8Wy^&zJ_MwGS?DPy}l-IbWEE9R?E(V6S4kFf;7eg2#0f z5Z20r^)e3O=YUG2-HG?YE4fd90gh|8WOEUx(Fx82DB(>(3VV)_r?_u9|I$&fdl
!GMO*Z(h!>I=M4sQ`=YEADq-5V%YL7D0Mi!N%$e5>7?G$nrZd!MbA zwXmXBQA*zNu=cTxZ}aev_Ir)+q&?Lggu3*1QZd^3(gU6F)6a&}oBj5n2L9cewH`r~ zu#HULPIGi-S;$A%vUMz6Dh`@Ekmpjt4yDVawEL%tQJ%lfqP!_FwV6r7gQP2V2C+`;zD^q?E~Vx zGH1T-@1>XJO(KDGsE{x+54~W(4qM9)-b3Cdn)pBY&h} zdAz!#vYY!ig*RDph7JXi#GGFE*}&?OuqZ1Q+VcSJ>?bCk_Y%}}h9hP9`!2pC_g-*prpe8wQ5aKrrD=d(lPx!l z$K*464nq_>ZXk^^BU}v3Q_0?llhyx;df3_1f~+j|l`%{q_`c5dUU(mr zutXSqD$G!g`0O&5G(h2Zmsa$R<}EF3nu83|a(l)coltx<#V*~)%|ATbPZ$yCuF&XmB z^)ROnNlfnbWl~svrAh))wp2o|0KC)g$16((VJpT%1QAC`0ylLZs6_a~;?EyT9+0jp z*C+_9@2h6pzE|CR8_-(Z+EQ1xM16-eO-tz$aIbMXWCe2_6xF`bp_}@1b4AwQoD-h= ztOz9=MozZk*l@CYD~n)lzVC3%CH7AQB%$Z4UtxQt|2l=iHrxx_o_2|eZ7G!2V7Rff z&q$C3RKsO=HSOw(S#_y!k+bAziM*~-dH_z;DesCpLNt<7R06wPQ8ll#0u9`@oKis5 z?ZU(3XYSUr`;Upvn#m2wU*|Fi?5nXh?DWY*Xlm*e&8`WUalnz!NZxCjb6N3vDWe%a z%_agoHREPDSSWnu6ZZmvf9mTquU%Vu<3%Kj7+?%f6JDYV=!BLHiul?B)Kq>F`lG5b zA)ouuzmZt$+t9x8w}}Vi&|n_?)Hq77`v#cPPI6t4Dy! zge)e@swM;#oWr|?l53ylbV`5(FJ9(<0Rdf0G6eQa-{%W`Ktj9Gzeu$m*2r*I*iWYw zwU=EF_ml?$)skI!+_vwybilY8$}Eb12op}JqLvR|_Dru@5^vgRpd9U8v)V=4Omp>T z@4Bs(!7fnZ0-xP);d3y`-qJgY7z!Mn_T@Fz^vW(G?5FdcG5{Qyh#CnV>>S$8f{PPe^-f5xxa|gDgrc&CpgmIsCk$C&=fi5MD zt1nonvpvPcjWt|LY<&*1F=X~HK*gA}_V!IOZ_8H9$SQ&6*^QsNI?9ej)O57bOL^sb z&yw)ovEz~U^LQ#y@$5)?(@7|)TJjeghDErpYy5gbl-Y7eY$iA!m}K}ycH=fv)X%>Z zt}$wp3shkb&6SITDwqGUI&_3!vZuYPvg>4Gj-+xm=`%NUwhfi$<1Z2=G~R*2J|>ww zJM?`KyIV;@DsS&=1ev5wY2pe^KHPHcpK`)*h-Tk-J}!GXX2oqy3@>LYQUnd?n_kRS z>1b>B7D4C}MH!+v!ipp^MF3B!^@kj1nE2OkyM(w_R<{~WDyr^VT76!OkwZU+5>VwZ z0b-TFB!XsrnRts=+znqI1z?ygISx6@S8LFTDxv{CtS3~F9&@5*vm_s^4=*NGq;9p} zLTl$V-n<1lt~?nMSi6Uzx?tyrd5`Vi%$kOjnXs0YUzrrM)rEW(5FFXAkX-pwIW9?) zjiVA6cxp(N6`pDtchKO}3R4jP4L1R~ul+e>QOlXxE_XpzyS=bKTT@qHmMoeX7|);e zeqsYJPBrGeZlDcNP_KFc3a{Wt?<7p;o7xmrX@X40fb;QFI}FV{53lOdoB4D902RO3 zXE2S}Cj_Edwc8wecpa_bh~Yi2w}P8MNsd$7jaMf0r7T2I2-nWV%xB}jc&r>5h8OxX z;u2VV2pGv%vF5rG$1v9Rc1O;&SJu6o>Nm}hu96z-8BhKgXD5o%Wi!*znml!Oq@`bt z_Gen_H0EOXi@43_sVTAhDmfY{6`Iq3dla;i3&wic?|dyb0~FSq%yXy*z+5a0F8M?l z-)c}68CzP2{{n8vpj{aYzF01=g{6l|SLNVNnhUoJAadSxL&S&aJ>8z1QVO!gUouTBEks$?iJI4a=?BNVTIZTkqi43x|^RzGch% zsF^*9FyS^2Z?=Lh-j?u+gu6Mia)JxR!S3-?5_N$d-o}$|A6nmS0O?cSOV#!V(<8RSgPp$ zUaTYGp+zAOSTa_dGjosb`!Qm|0in7SOl^yr?4dv{XQhu7q2r)Yi__I@4uB)GzGf@r zYu}1v=7?i0=eQ313+QpW_GkKh$aHeomfL6MW6_b*71-}1sMTOq;)FM;!S;)sP@*+K zHciulVXNiOGAkb|Y95Y_Agrg?;nVXN_v)JVBy*~RPc5A0?vk7g>5>>lid82J>5!EV zFjT&-b!xH$latj~(~jxnf?Ye~67}#S#&qIrb+VoT+gp=Fu999xSbkHTUt*cv0gW8z zWrj7g+DB&J$E0kp4DxHB#YMD|W5DOPCCF@BGMdhKRIt7k(cIgA+;{BnIUc1G4J2d> zSL$-Kh@j<2bl3aQZ@QK*s0aEQEMevE-2&e9!hQKE;n#8ac(b7AMjM(eaRHhxYG3a! zn_LNLd7JWvv*10Go6nihUw~55-iM-SX|P*@#qn(P0h+cx2)}Tz4O?55N>s2)mPw_f zPDSRSLl{1pvy|h?t8b_s^%^CQGr>)Le%@P%UoWofUfrS&P?@t;b8Q;+tDuj1esXpb zZOPo0W&3liBJmfoNelcqCS)J(;j^iSo8WmEk!ejNQqLYv$=QSh3Il`1cR>A_7TVe$-YC+8?PL{=g3)XM=6@m$`4*PQ<6)N4o|mSsK#We^rVsrU?4= z&hyY|*(Lq+_(RbL=E2y$5sSQpr)-IAQKa6dokxECn)n~>TFo&Q zJAtW@5oI-A<$U7j3{3AUs9{2zK$QxeK&PW2Jghtexo1?%SX~4ZqQ3 zuBGwvj_p)^4QGw2<@p?{*&nPet5~G%ZDZx-I5~hSu;*%NAGJvsx9L?ErfQj3tsXi2 zTN3zzaS`9kLp1mLM)L`eHR{v7jJ+|2?Ua8l=gi@o*ooUoT~8`+pC0Dh9J9q@r3WFh zHF7P}6K^_h8(VBi@b=TAxxzLDV(n{Z7CZZR)QaEkF+QvtR!IvifHXY~FZsQuyKjYW zi4zHpYjT=oHk7uZqjPFrgcxB<3$DEO@vx^sdt8Z>#mCYTlo%{E8S;HoF+Xz_hX^Sg zq7tm@it#~jphoS+?J03RpAJEOaF`kp>|IetNT|+B`-Ja#`-bUP7X!&;JDuMty2IG; zzV5HLeECPY5nei9sV5uvA@7OJwr;dH><^XoC+I>y+(7C)T!pI^o`o)U?mVTLYruOl z-fC_q8qC*oN^2xIp_*TA?qm}G0`MF%eP*aHU>P?RYfgu*S%n5(gjQ`C&+in^WrK!B zOh1Y5lacjU^IPU~aAnr?7?)w=k+s!|!hwdTe%$&XC8xzVj;$p@T4d>^V}y*A2>;9S zKpXG0{^1Mv83;v)ww81r06$TfJ$^C>UG;p6%bXla*n9?BN?bJ;0Dl|0%ze7^!nd;R zv;qkBS2_)*NmJ><57?=65Yb9McpDY&iZZXPiu(22meQqyqzy(r zT!92sfsPA>*MmnN74*K@6f}m0WzOqHZ>fGFMxqR|p(yr#yOBCNAft)gd=MS%@N-`Q zuYfsr8G%tIj^8_>VB&1&+1aFF72k-?zZ5X7?hh@^qVweJy5->%H%rdo!Msbxp?R~9 zLa+ctP`}Cc*c#Gy1%|ZCrS`e#iO%Ve<|FXxIlbwO^Y9CjQ|S2%xbkkl(5w7m81hgP z9=B?f`s*{6+)>X@$%4BZoz)ppfdp)Cx|cQJ#hGGXT`47H%IptZuq?b6#mrdrS<}fe z_joj6>0Q?pYxJn(d;L|u5uz5z)}^Pbh%7W0peQ8Nbh>*)>QCC>De4!3^t5vQIfXS@ zIH1oi0mzx;j~fQ5&71xU@VIihB(0wLG%?dI$M^M<*V|qUwc4kK7q=VUmtl$c_=<#G71}Nxprj=~ zI%8x+RSHBIc`X_QbZ{-7jOrF2wOZu}rj+W};wYU;QZmmS8a6caySv_NIG9G~VF;2Z zA0&sQ1nST&$oBL$VaEu62<2RYP^6_U4Z76i7I{wGnK}0=BwWnZGpHr==|Gs9v4v}6 zFW9c+1|I}(7Tg`YP1B;#+=S2NoUbPkst;*egB)sxFbET`9qFXAXUY;x2u zc80el2#(_dm!;I0-bisLl60S|jAC``#Qx-NkIjCIVlOxG&yMq3^Zm=Afe=AnEuBLz zO^o*Z*$b(}AxD94dW4^T9R$(1`n)f?@+QAMY;qiH-pFk9abG2}9C5hJ;=VAk_^-s( zHD=Tkd9&hSM|@fcH`P}6d{|S|tnUvQrsX4f!ynRyCc!tF%kUfI zl4#T5%9I*yo@B#Lshn0BYN(G5XgaI#^Nzwq8#Mjow1t!$B6iQ3UH8GYthYorg+qaL zTb`m%7Kw$2lM((>L^$Pc=F#o`{fS-5)=VhZh*w=*TSlu!lASa>Hl;Maavm*%3_bv+ z5^LwVZsJ)qdx2GpLFwHHg1nnmcZ|&Zgnwr1JW&3b$f#t*Oaz*@Qg_q4UMUT&ny#-h zSR9uAQ`4w~v}8N;aCe;~B=mV!_NkilIja5u_*qxd@tpMxEse}6RkbqT;+SG5cW>F` zt14T%)(&{#Oc|OL5AdqrUB{N@nm>BU=9qf~bv`@)QpKe)5QlR^2N~zK_LfgQw1K=F z5d=g`1`v6v@jH)M!?3E6W|tUA8zUjXpo?V2~)(R%OU&R&L8LDW(RF||x+ zXWS_x?MAdk!Y@wL=i<8?0Ux*29cQBJo~wpK9bQj~{v?!Z<;5pO7rwq&PlF~SJivyjspv6Qa7E`ta?fH-3ps;8| zie}@af*3a9$cC8bm?k&J3TEIln$0+bg6 zf4;w_)P%e=VDfFvZTIVIFKx7AuF2co${Sf*o|RT^zJ8RCE$;GSWj^34WYjCfgTDt;egR97;PxSG?1KyzHt59B6s%v2BiR2=|TJ z3T3=4S}y=J8cx0ZQ24P?o)$nsoGWHiUZf34h`rC#jQ;r0F$(tD9kJRdfr(lRAou`_|milYFXg35D^({kU%G&*?(NL|!h3lP??^fG5eC^53rS zc?cKpR)#Od(0ISYNXh>es}ualMKoL zL(#Lp0PtGFn5L{@)}V>@g1+6JuDPl**fcik4z}FBh*Ax!$sO{(W_0p{+|$S_n?;A= zL!q9068}uX?DjO5oG5pfH z>gipxJJ9z>nD<2dNji*=f-syH51+?*naM6J%wguh-V1i(^&0rb9A1( zGR;SYAmi<@$7)s;_&A0N>oxB+7Sjn}Q06E1Tzc!i4AZ<^%6S9OlpAFMBOa9s*1lmy zTMtQeN8kIe0O8E>eI<8xDSl_Sok^D)mcg<=+`WgZzjcDhb$qLCNJt4&aroln9Mxof-@wO< zqIAa~b8S>c#6-l@b;V48P9e>O&jgRH3k`NCb&YU4U-)8|LB4weHg8S2%hrmX$dy{A-(U^=P96Vx)#r5H~z#?MlF@}Ux`&AWb@gs zcsHO*{IX9l`Cv?>5C4_XZmo8o05lXS$7?Z}oGu8`OqDRAQUoFEqkDFXCRpG?PE3V0 zvdGF%RlOBG85~k`I0sp4U1!9%eCL;VW9Op}d%>i%t<8P=Dfoq~zeG=x8M1!@l^dhS zT|0^vZZwmQ$jjYK3zD1=cG{eKg*)v-qIhHxSsPrsQC0Lk3;>sT-xu7owQ|?OEi^uil;{KCU zzp!i@^EqA_IdFORBbZwpIW5<%@T21`#do=46S-*4k{hf;uU)bVin>dmaN;Hnmqwp# zjx2PJU~X~q^v^uUQcUn&@bB|beHoW?H*<&Mn`ocXFI$^DOlKzL1wyywTjk*p6xk+% zS6aV28bcGd?_}u8ss^ywN8W*GhuuU8z?$Nv}kHG zj7hZswU}B2EANUOQ$dHShDkdjqk$1yhSo97@JlPK51VtZMz1+iDd&ut(aMdk8gy`etA=woU{lrr^tqR z#4FdK9rW!nyf@swOno7l9(j2$@fUC@fIk5cRLSo63kdaoIrQlh&Lz73+K@E1$Hj*Z z4>!zC4AX*v0)Kq`X1*DnZkT|)l$@FLCI=*@=1IDYIdg}2<9{Q&zd9}%KrFYdq7vIg zGmdx@(0l!>Zn80wEiK7QFC-pKOIl2ef#bX&(r&AvhF3rlcE4C z54@bgb9#N2EMV3b*})-{!{>d7r||7_2wJ26hXpHw>8elW%%;)Jw1H30M>0F@Gu|(A zl@JfXouQE64@0D_a(C@|ZO;1!skOlc69V#YQJ8IPOxpT>O$uGEiUo!W!FB-mURJVv zMtJTj(k=y`&63$K$gKqhv_J}KMx4ak+IfWi4Bb1oPfJ*B6yqINJ|0m9O{QU9H-h@k zP!g24nWQ#v2mbg0J67^-Z1vzgG0-|K{w02|hc~2sXoN)9ty^1GFqMA2T!!w8Oi`d? z5DPq3oG-b=WSw`#OW4j|z=g!)Y1JmLA-6ZZq-o4hZXg#Sp^SF$^k@@*MAkx?Bvz0# zSI1QW1^ybHPt|S1_R|krj+dN*;iYeF?|MqPG!8!@LuliOz6yqGeq2=j4Y*Uxc6piI zvl`g#aEtHf^hrfhclS|VqC@|RqcK$b*&kv423&}hoet5Hn4=|)P67Q z9P*<>!@W>3viE?L<^vs8?qp_yA6RRy z4McpPUt}mkTOJ0(C3JZ$+HXnLIDC z^BW0&OqlQT$M`9LIJ1T-9o-)av!Zn(amyI*?2Aw2R7MnclsOfr(hj_T%-fGFaG&je zuD=WMd)pM^zd=tBCn`dy|h=)-738CyCyV24(Kq0jN~c)HvedLd?KMturh?yp3aSau(=2@NM@NBJCYso;!7Tgkm3TjNbH3u2#e{3}j ztMQmFn7Q>cbQXSn0<}lRlm84oV!a5vtIBdc(&S7hQ8|az{K0dZ%|(KMHgx-gi4q zCAHVr{#n0frQ=Orq8%Q8XWtDRzQN7C!s4#l&R{zi%xyi>ce=_cJg+jf;u#EyVvIJI z?^62!2TAl5-+D1jUYb<|Hl9R&>?K1gEz4<{OdY~Xj9Q1oscnlAtH|c`tR7(YQ6ra> zvocUGLdxPc#j|e$gQN(8;|59X%Vobn8$8tN@I(^)R6e1zx^?snAy4vmwdFQ#>hnw>l9Xdr2(Z!&MnynTCpI zJSO4)N7Y+LHT{PF{{y5Iq>-8^-Jo=%NO$K{K)Pe(D3Ko0-Q7|$ast9=q`MoWdkp;T z{rP-9Be(=9LgW??z9%g-uo2f7TE|4+sP zorTW)@mnM7F{in1qvYE(i6T7CFD8MxD7I6c0671^TWoc>^y#i{U_3!8#l7B6J^K>p zi(!m?>N89NdsJvM3dmco6z4O*I^y!cGg)}{whDb+VGc;cD1Eg+OX>qS7qOp3nA3nu zx!?HYztuy5v)&DK%@dHwzh(#{zB1UWaAT-#rlKDmDL(BTQ==DkRj5|y>94#$ysJu; z-tffn-D3aDM5ZkcT}HTIA*JTLZjbAb>C5Y^c$dH@9`exO^=nElh`cfaKRb(eZm<8sUe%c#G4xjw^M=y@^c_g{7JFmll3^-a&r z0~~2l?1vY|_@V4&DC~7S@%GP}P%JD0K(YEU9+|m+#yI@tIp6B8cu7&+rdP_;26>4@ z3GEsf<1U%Bx%RFHNuMHKmzDK$1|>6{izPZ5W6Bd+ z^0SVwP&zW!KDFEEb)NJJx-|?6t*{&jmt7c@^qhbO4VPH;!(3NGj6hO*x)%Qcw{YOw z8L*@H-8sfcc@Q`_1Z?2UTK8rsRiz}-c#z8}qt{}M zfMjw09gQFK5|3_mXlP{7x$IoRJz~yAkSKV{P$k&#gg=#p6BTwySXE5@=6t^+Rqd*! zsQR<<+mgoWac!Ap$Qe*bppj|szw_ji&S(M^#GjT|OL0F6@Na)H6y&|eqX+8(>5R1%^& zZ}tsYn$RgVviO*4mc~*?yL*d8cPmf+a@grJl^x)OP|83hg-@@&$^Z$CrGR1KCPIz_ z*X3;uD%Vt;Xj8O>boX_wASly7842;|3C|VHtPqbnIwH^}E>;7nLQ==Fnq7HZ*Ni}- zPSo;G8`f`ivRfhvk5m)XlQ1PUhU%^%^Or=nEJn-9V=D-=Gu+X{H?A>I9%`5R1+;x_ zGcJC$;-!;$rgKrPYmUF20*+PB3sI{kzN_USV@$Le(r8(hS8CG3HGaKt0q$H4}8r32bQ}~By0qYuqYGatBt9kQ+X>atX1BA&SeU_^^>Uw7` zbUtx3t8S-XsRn3Kksn9>hB}B`%a_ez2&_NQ%In~J4>#5p>z{y*D^J9 z3vZI~j7{?;9Bpf9Io+%^+&v`SG}v?#Vdod6lW5ji9H&04LDG7+Ysvrx&7G&tvVNXe zSKcjtsdjpMwL&jOO1QW`@jd!H{b|aYcOKK%lVifOfOqih8HNN~%lM6ydY+X7(I>KY za$SElcVxHT-7e8JM<*@_`Xh2>V>Wo|$2b`y{unfqDwh5F*;MzvPxML9Gh4IV)eU5) zDcI+(O4YxOO8qpqqT^jwxZ?gXnboJ(W?&@cL7!I?k+OEuGavMEcGY0Fd&Q(0;;0HX zH~PN+uEt*|UsT?uhx2ydf|JZ-k=aIBn^P@OgGd(wk*;;S7&A!`05w$`F{mZ&foqPO z3oP5Fya5gllec^P=hTy~Z=-3)@f9VfO2(3qH6rKsC)WK}gNXk1e*hVJM?3%FfoP4@ z{YmB))#m1A9D+PI8F66Yx!Z%bX;TV>7Zf#YXDQJrHj(mPjVE1goHQ+=cC-lLgTCKB^!IjVTlo1ZP zb&KopKq+T9?+o)Bu#YM6wPM&yi4;4cdku4-5x}{*8DI1B0WcGW3(q{8^`2 zP($~%g@=ZB9Q)+d9~7dSCzuR2{W)b4s>8&USTd&`|wzs zjgn77wuA(+TKOtkrGv70SgY0|kEMv1i!k_f0AVdNl#ZkS)nwFNquC9?027-w`{sGj zGe~U~GUX)8A7WkPe<;nY_BLyfX}}eFZK|!)&TsT}SmWXScii#Iv4ccW=Dyo|?T^U2 zT;>`oHRkxPGX-%+8dB^v7*zCW`0s)suLrwrWKsPi@v*NorO5zDPU#t+zuDm8(5m@i zre(jl?O;ge#WL)%^blDGZ(R}|KZ{H7j0E!1PJ{fN(GutGebVh_VBiC5;jPM6TIa>7 z$o6wJA;LbIS=8}AK&!@Ac+1``B}92)8=Qa$=tb#z6~Ld_)@x~ZaERwR-0TNjAmDvOh7PgE1EZr0d$}Ci*nVGKeY~XA5{9zDRU`!qaZcL-eEnlsM*gIKO-4v_Z#Y6~O7tA|=yt z=csTnme_oj!Y}CtIif9wt%lE}APum2+||CUX(!Y0@Gv*1+9~^$Db3M%OSyB2TCX9z zGU^f-lD#KqXF`T-m*4b`GHeN&$Bn3G8oHgoH{dP^MCOvb#b($F0F8}>#wBu5QgkH(eHI1t3v-0DBO>Y zFP^QaqWqt`75vf-AU)7luBIXE#f?Y)6ricqW%z&8 zR}MCGoa`y+Zsv1By9QCiXKXUMS;{_T2aG3watm()qz+R+O)*H()IZlwtC}8_J&X6A z)iM?kd`>+z%_j8e)g7+4*>1Mu_75OMMJ&=beM>`4Et(AAmyT`K0^Wrl8?hl_Ih$31s`&Gwj17)O)9zRHSPiF~j@x}2G-wlcSV{s$;M z&V~)mz$sW;^?J9b-YlW~kMr7?6~maOLHs*~YgovIo+h;2@zE5uZM3k~jPq6jB zedTMPf}_GyQ#@a1_76-HqpK)3ujIr9L(+z zTxlvca3I@!(*>87$ibQ? zM%&iU*4dNi)hO|mHM}_%c=du5_XgfHV%0O0b#U$Q=TyzUkdLzA&j1n6G+`-6L;@jd z$M@&lU&L&-Q25Wz^=~m70A)B?%wQ$0@zFd7c>}2G)6J37#e~)PR;Rky_=}occQJK` zxL#P-7lYF^j&kS=(qsn-TvweAv=~Tz>3()cLGGumx5v>lyU+j3arV;1e4)Stbog6= zN%=0JC^9Jjik$dJi4}YL(PQ@?AaRa}9B(}qAMhj(fE$K&TN6jQ(bw6yZvD)YmxQGW?!#IkP68AfRC97R~V+%VE zC)va=cA#2TJ=xNjQ}L%$<+`1d8@7vW=bH=bXR&?~_M*FlQ=`fgDh^-Xs9WfFY8Nba zDBbJF=`{73?Ol6QDh%IOqP})po?+4&vo_ZgY9{4E{8tMZ7NciNlUmH$RWvNE|p2Ke)HXlw(kTE^blLmJnvq7;s+zPEqW&L{B4Y ze=@Xe`HIsF4ZzFsJITRf2*pJN8$seDhsAvJt0#V`Jr6_AK)rz$6YbIXTg|<;iHuWp z+LJTAoS6J}>C6@WO2^7Jrf@yPijh-Xo6ii@fDXm2NA|nE7r*z@l4)duzk=&&tXw>qY%E?T-|? z!AtimvojL2s+W$FM9F=Km_8S4bsn}Y0c=xa7QGvwwnAGf{Mc!?BfQF|6F0P-ePTna z6b24LpgxkZuK(4{Srav|9+HAMDOJ@sc~UbTriP8Xa8|@BMfEI}(7xa$NkjCJEPTzk zJI2TQ^ZYT@Id$dJZRHE^szr~Mn$vcpHHPTf8KIxW;9HoMn-+mQ&ujVws5zl>?(lBk z`hbP&Lbu37&1K)$%DWI5-tTi$7tD<%sQWbGZS7z3KCR>*^U(3V|FiNgKLG&KKiL^x zXJT`XWjYYE&^$>T)>;l$lQh;uroKBcG|t`OE@RdkY`SkL6V%l#H#=yKsGQ0pT`Ao8 z^0p*til2k-I12${mMNCA_o&E=MKSyslM+7)n+7(#i0xaiyS~kmPZCPeFUR|a_nkCi zaxZ@EBFD%&c}ToXJ#H#rIis;4fS%&3RIL9~Mc1MC_Rf4YO&4?$lk- zx0`skhsrX#6#$6Ub0w)_6l6D-=P;AUv{U%{o}NFaL4(_$;=hei*?A=B2a~4OpZ|aX zG!=PMZe9fB#7jRA%~>;oq^GQk+xYZ<4uD^A>%P5vB%WL_b9)@#9$#WGyhv{q9nTw1 zm!hdjlpO)i8s$I!15{o;*z-b;w;?*WZxBe+ia_>1AJKAU&}wcdHYCa3LxgY#dxtr8 zZANN0%%6IA(frUPDea`TpeTOx`G-r1n9TFj0GPLvzEy%riHNVoJ|cqtqpO$ri{pAy zW78#$L-DL^j_)5bLMp2M>f8SaG#}+zj6UJb*xltU@ez^lI>PvML}r^W;u#uF4{cIB zVb{3gVJbOStg+L&38YF*mGXaR@JQ4Ue1ZWN9_@7q2n``Rn95E=lOX?)hnNC#chK0! ztp5U?IL|A6aXt7+c2)8%>o%lfHlA3f)q7vf4ZQzL8Ad96l?Q>Y*1!uacdS#?>tNH% zuWX%rO&?$ROC(yP6jXdCtyv>386>8=I2*e7>Q;BA6_WJv?WGH;%+8bpo1Ls%@Y_>I z2N(O13-z9q{SdnPBdY`leLMW;jRapYlS4sH8gT5Z!Ko@?mp<`wSbXv4x)>#ws*$u< z)_8+HH7q1*ehkFpUO8WinXVIxVDb3c&&^1P_3N4-{M7Bx%+%(B^N+soVNtcAbu7y! z-m8IyvVVZj@2i+{&&%H(+`CvECK%xRrwS%Rg`;SCJ}hZ)IJr|#X*k8Uky{Ar1?&N9 z+fz0L9?PS7Pj(vb7817gjlt~RiSMwJ&O`qJl<~m~4Hi!x$bM(*%=Xb7Aj#GBa@*S^ zmx5J`LZrs_FO0mubk4Bq`+|lX*HBLDza>o8h0525>rrpA`!sB64%O$$Lr5Xhg{uta zXq!ubCs>(Y)|Or)apK0GeF{uw;S@+z?pVc?A~=;ZkzDj#7PC#dTC})N8By(-qN4HT z>_z0;YXb^T+r)36VCJH6^1*aY^@&87;HmG7sD@3Bb@)e%)=vk-Tyc?cYdclx0D~5h zmU3lm_oK^~4<D24l^JXBAs8!)i`{$Ey zDA^y1X4m1Pi(xcaEK<6&S1KnyEX_I^F;(VD!kqPbVZUI}7rm!(zL3o{zd@y#L6p{A zi!PAZpvsA#eYtH$BJJ=&|2THgAi{jl~qrQkahCvAn2KCZMXQYj1O#2 z9Pg+O2`@F3Y$RY7=J+j3sIx4RYlt6MX5WdMz%l1!9xLNHO*MEv zV_4Ex`$!k89nx45K54y)*f&G4JoxX|dY?RFoCazjuaRRE#kUQm$0zmp1V5Wlb|hTM z6nRR5=-yJU6auz^SmomBbo5iOnS|+amKA#mLO=xBrT6H@p*C(?eGn4?fp{MMF9%cV z(~ImWrG_>1;|F1EkBsTU^6cVe3N+#S7vV>Li&{()MLhyFSm?;TvdE`fHtk5bk8R#F zpBd{=FJAe#RUbRL?)7^D)0Lz2g1_-d?0Xy8-%3*S-g8>Ma*kwqg_ON3DkF%##0MQb zEJO8|-=r#}+zGjcnEnG02~yz+yh&Cmb&{sFB(G~E%}v7?yC_Q)|0|eUZ{aT>sO*5^ zhN9b@|IY%vJV#UEj;j@SPJTJ69jx&YxIcaJ$AKE7>=T8uUfz`MIkDXL4?D4S9Fm6m zBq1?8e`(R<-OD=15nH=gCER-@yRrr}3FA{QVQTOY~8HaPzIdyM}vKze+qD-pXh| zR{f=;LJxOPIPV4m-EG@C{@Zey`vmbKx?vBm@PY#%yR$csPG0`s`aaowNaneROZ3R< z3&((ocCZe&k{Q%(#U_YuN-jYb$=2D?G5gAD{Gq+@WUGDOu#2f&vvFkU{ddtKuY6tU zN+ifQW2YN+W*t|UNxb0`RD^}T4BF)CPuf)O*{DSjr zPF$go2-m0EMpO`}Zuns0NT7TUG^edj(=*n02nyj1U^5|T15@xfksDFGjNWscOXY9abQ zVieT(DdxAVtel_iVA4Fwckk3ma=+2;nD9_d3?{|b-o4E9dg?0$@e*z)?<@|L#E*;U z2{X%&b;9_uug=AXu+v40WeEVpzERToW0k$v=+GZor3Bs2K zm&FMS-IDHS` zfWxQ!5bVkh&AtLfrlb%xQSrK|2-u%tqzv zAJ{i!)p}ct7!}!Hh1z+0OBbdxkKtQ?5Zun{_qE#(jS`{zPzA!fJescgFd(cy!9uiv z;NW~n>>PxsjEx|i#O<{<4b08V7?$NFtV3aYog(?B_J-O4lbyZjH&A+P$GO56VfaNN z-`8+p+sRF6R;-|#HY&-u%RinD?PB28RAVR&$jZ11udHbzPUs8DIo=82?XAjABFO(4 zay;^e{JSuLp|&0VHF@O;;)=^PagkU$!&hub&xg;IT^KJ_=?q9HK#8AB_Pgw!INWJB zbARNDfvdhb+6}VL=b>&tL{*7WJKC%O(}Q!SY0hj_0$U!*rfA z3Dv2Y)a>$z7f$5b&!71z>q^Q%Bm|D?`!)w8ngU7{7#n#rd9`SSNnrvlwDfwOF3F@- z$+fo4pm4i{{G}Wdor8O~YsomNT440KhCTgu4^WKIq_W?^ySj(C=T{!)iEFClloacF zncEp^Yy=W1Dt%-L_o=CI+dHmmb({TRtWqjc7n%+Zk?J=Pwv5#7l_MwWGM^5V<}C$# zt0Zr>#ts+Xwy6&>#twWifc7se=h0Be3RqGgsn*-FEmT!}rtO-{>>uz8yLCyRh$SzJU(h_0vdjE2FC+e~OzyqpSThbJ{n6IH?)7$lujgr8 zMHY`V6NDnC__*7w*o5R&#cSZ>u02w67P#W7S_(R~pxsryDAT+MWDt9u_rFH<|M~2G z@@M)dCmw~444N8^M(L8~usaXiVS~YW9Yyy-y@Hs*UBco9m%e|31((i=K$thg+m6oy zvT6T|@1R$>7tM8!-u!Yb+HLwg2+Z?eVE=#DhDOE*zAZ8F={FH=BeA_jOBD)Ne=;6V znw@LgGgVu~ZU#Dac}vyaQNy%TvK5#uSS{m1saUTb+rYWR{{Umi8Ie{4DPXsU@(;c6 z^VZhp`kyJ+=NsaF-p?&ljL6Xec!C6_Il$trY*Z~DP@r*#all0<=!GE5h+gyH0X3y| zamM$ue5o945IWz4qTD_*8ibvU3(L_gR!AylE0wRe{ob=zdXn1mLR-6S(ikOT-x|46 zu_Xzr%}gX(1xh-1r3;OqcUy08k%(U5*#gzOPx*c8XYqLX-`)o4soQCtX^AKJBs{A7 zn4bJpk7Lqe$<*ox=uY7@YJXQVoy)`M=i?*M`T!8ZY)?aDw_Rj1Xr`B=dVYBqBcP-% zAPOmiNSfUj5vnBVs-&tEVnGylpDDCzzm1_&(C3h}l>G^ju{Wd8dhqq!?QJ}lN(-om zFcm2FJn@~LyBKl3+z`B$sF5-`HN@3t$&ULgugRDbKwT~BtUL*MjH zN=`4-?l$WEA(vRfdiUe0Fn~zo<*%Nq*36z->B+~A-;CN}rk{8Kw}F|T%-{;Mp$H~U zfEl+Dgtu&k-e|z_EO^R`(Y0K#jEtp;cz=5ns&ww2Z9X9L1Ugj&5CVAPo-G42nH}km z#g0cms=9YE*<<}?X9AvhnP~-?KL;uG)WBV}*0qaX(R)=sPi84ySMt!zht~zFe>&<7 z=%lqS_QRNILmoexsFxmeo>9^ZpHc3+Q@43MtPxu8X>tV&w`bR*%96IcPS2JvZ|ry94kkV5YTUx}`7RNv&O`H9 z#q0&J{mO3w@7Rn#q#{c4W?czniMxit1IczCUUk(%-ugvMnpCo&G{9tDa;=opEiKW> z4&&~xN1X*@Q+AG)rf+(zAB*!yX~%wf<}~fQmyW(%RC2BmQ7SopT5+sfRtFVTI+NU| z2;kq@LTqHX8bmW_WD(E!M7U*1P5E#GX^J>nf6AcV+o=itC6MMh8Aq)6Ldx%%5l(N; zzyrH6NG*Xa5tDK*L9+^sS1UTFJaLEbAt&=aSNOcqwIe*Vt|0NQ<9u(V5$_#`N8Nf3Ci|x(b&M)ZPT4wL1SmMDu6HnQiyjih@g^878LXp3pqvo_Q*w3W4 z;N0s7s8Ps?LyJe|Oq?35Cf7T#w1H-02qVzemXgw5yilHHhY3)eq5Fg_L=L(LmzJIs zPY>8ysuaj@JHfB;=qy&!&zeeWFMgg*&UL(*R?HgD$TU&AyZy}@Qf^@e(l}}8hQ?Zb z2%!y!s9q!c+ox}f70Z41$Y0z2XewoF$RI<^ zwc=#P9&F8_4Gw6;`+sqV|KAFix!V0|?pIXv$}m5mSmbideBn`vwD#0*W6)xNTV=ct z#C%vOf0}Bvz_LdB)oP-tcez#DLjIZ58ochx&uw!ZZjlQ#?(eyU=IIF)W&nW(2M_%D zZy$E5W?rH%AaDqx0pA^Q?*N9b0m`6YhoW`9`Q4q^V`DvB$ed+a?G{} z6hS+<@MsB4?bR?#RL+8I5H5W?gRA(l>T)KvcX87-g#^#>C{ITDdHj&`Ss*P}jgOzz zPODTJIY5NGrZ>p(|4@|CXz-RF1)W?JpZaQG$gZBt+@41Bg+)YQrF*dEdesa>_q&uW z`gG3`*d9I^9e2VzhwfMKFuRJIx`Opr4;=$@S_ZcTNYgD%DJt{>=H8~s`NjUPGcc3+@A;ZVG6i@K^a%E(J=^Up{!Il65$4QC_B=szg=bWZ|Mh5|tA$6;E#6jx^ek{zg_Q46lVNCFbmN z`#$~U>8eFEMJXev0q{(J{cMaKvXl>0MLaK;Yxcd?^<8CGg0=m&1y?asN!jvywA^`A3*x-x$KanXLTGOrg?5@0Tgl4f zJYWlUHxlbJ*#JBGBdoRbSz=_$=`Q37DM4e4Cx;{OGU*TFTQMyQoW%B#=08W zsj?}jN}dckgJ}Y{O9v}_y{6!lAmxqi)f)4r+V;Bd3}l|0lepB!mo>*5|Tu`yxHpL5t~Nw-)o^;hRj5gg4pNk3LJb+8 z1Y`%@DZA5Iek3*=*=01vJJ%lWiymcM zOKG|pz^>ZU_|_`}@3@k1>xd&VSa*0FA0nPM(h`>*Yi-AkU2^)91z3Mni158b(_<62+`K@pyYmD?*YGk^xq>=1*53U)c`A-zYyoxYl+3S>jo_9OYr4zLL)253 zyZTydYx__36tS_5`qzK{OL@Nh-;`&+bi5O4R^j?+A+`>K(d_>oA@QHC%-&&$k9MyH z5hVWIrpCIU-eg{-^39scPG{%g7jv@u?C|>K*S^ed=n) zh^FQ+$#?{P0YEtbXRP-m`?hftsJmiHM{|HVcrRYce`>2{@yc%l-WbF3q6q5~2QHtF zK~FZ&oM&S_km`Md1G{V7SFzdPR&Di+IzGXpiu=Oq;ZZ^L9*wC1;@cE;KYr>~J)L?o3&NgM! zmg$p8UrIExPZ|dzs1`i%K3qvjgkn$c=&(dQRd{W0>%sZZ zIX98Bex(FdxNLJ4vD0_^0tyx--e{*8Pshxwjr;afPqy|NH~RGav2`*JHQ`3}QQ4r? z9W8DiC78#&C}B<;&L?0~0+c-qmO437{qklgQ6NW+1}YJb(L{+x>Q43UD7V~lk)lzI z5<_>bqcI`UVllL{^TEME1bj&=)pdr{)ZW%Ft};Zx-Hv88R1R&yVZTk6QA`BMUU?ak zuIncQ{M0;qoT?+gA$5&WGjS;rN%NweW(nWP(Hs1w`_L?*VYc}%9eIjw3i7i8!|6J? z3GxJ~UR2Aq(B=&dl4QRbI!I+)`Cj4Eci^KJyWE0RKtC;91L!$~xPG)PHzn9yP3&y_ zWoo+PO;-MC%;In<#_{adfDJfE0Rt_KBX8U0opYZqnUZV}6X$Q{R+?LIQuD- zM@U07TJ@!LE_wGxeSAGEX4N;=sM3fv+p%*7hiEHGN7uOV33|4QIU|ZD@;L`$N^d<*fC3qY_2PnZGAbLhV9$B$COXv#i%m<|V-j7b?A*$*2*>~|kepoO3D z$z9YZj(Y|1@3L+qHBtjQ=%1q}Y-#QupU8IL7WOCO>59|`qEf*FMTom1(g%`7d-oC;vzN&T=?Q&*fjCAmoG=qUG2TWS{`aN{39 zl)uHp>tkC5L+NeobTg@5${>VUWEJ|d`x7IxQZVbbB0ezP?o9j`G<_uQ%wT#x5Ff`I z$5Z9})WK1tt8ZAZ`mv-vlFY)@fFuk7Ra#=V6@NjrYCYC*y!%i?J6X+-*fhewrVD4i zV45uS^@E|kJ6}sj{%BgI*vgFX%>2fIGtSI;e||I?4wGkWy0*pn{ z4`bU_yBvGxxKA`$<3IJR3P>e8z^=O5Mhr^%lroL?ZKge~nb$~~oO8HJiQ=2AB8GnnTagO96ko-p+hgY8o18ovv_`WgakI9=S_81`dc9Q+a@ z8YlWZnZA4&^AY@E@kcrBy{P=FWX93|Y9)_B+pXE|#|k(xGj912&uHN+gARIGLq>1f*!K>>^=@l`~aVzugOz^$yY}#=Cf?(akS^A_3?Bh)3XN=PeyXJ zG0R(uv~C|vkDJ}E;baUk5pa%NeH`k;i~PO;UL22aO8DPPp3cif0NJWkb{>{)s1T!Tf|#jL+jMbpUpN+_L|(cPPv^AW5&HE1YtWW}Xa?5w_Y zk7rIw@6J(}E&W3U3%*n#j0Wg({K6_c%Lz^K$vrPxcP6O=_Id-K(uixCgmIp3E9+IS zi;v4BE(Ea4wq2gy7(9godwB%v!VnDc-dB@T=M0Q{(XhIGO=UOzp3Q}fsDFU6sGL8s6ALRc}n=_5L?E|`yrZezM_nfyWQkLlGK%C)PhK0S)E}v2|`@S z<%Rc4=lD8s;(54Dzd5dS=(I?t|4!zR@mAf9BI!GK zN45mPqNpg6hSTLuPh-f%F%4GUe}}^VSzWRtUymt@O=Q%l?UclG#}DNa@XB}h) zb;0&W%W!&F*6(Frca{B50si<&!tg(~9E0%hN|MC&mGU2Gme{TRZ+$eZXj})jeVEi= zrRO8Fv}AaNRqHZfJp5r$=7*>rY0X#oAF#oRR5BFwI4bhkdJYnstW5RmSt}#H7p4PC z)-$u@MoMO~&1PeiPNSeRD&Xr@%ROf<&e7acl-mdAnDk6P)#Ubo)&Qz9V3^+E&tq+9 zmmHk81GsPuJGlcru8wp-eBBXOKGqDQ$R1Xw%q-6>DorlTbjI)8Z%>z`hYvRW+oa*2 z&E{(USB}I0JWx{u@(R)4o>|7Ik*;f^ulv9{BCW%wDTXB2I?%v4nuHDY*8518XHDxg zXp}M;61RWm=I4t3z4vw2sXv?|`+HKyVRThwB{s)rDU&SkGs3{{6G6-Wi8pnn3rJWY zUSqK>o3>m+p6n9`*;5yf8QQ|pEVOJw65neo{M0q2HIlT(V>C(cmArn%k+=bP=EC|* z*|GI7JBUFY+jgVpqaDXNdd%sr$nm%LP%8pp!w=sLS4#+SCB4c@hCjC}zvjKUbg_iR z=3ncLYmSLZ!ihO6s4`+P{vY6|81=VxCRcCkbLHqnKjA3dmW;x1bcFh<(6qz@u%RJg zS2{NoeUbtXZVI&5DjGYH*_FwM{l3mu)`Kt;Xt-R`p8K~HrE74CiP?{)9O17^MKyB7 z@ThiAVMz013c6iGa)x-#Hl^4T2mLeibOYY(u;@zWl4+001CNM9DNjf&QnNYl&|6L@RG)9GF%>NbQQBBtb7uMs{i6j5^hJ%{;27Pg(dT4t_3% z$>Hc=aoNbVR4WQ_?wezt#>O?5E&ZBJMS=DA5_y551e7lxj+< zLIMNw(4z!BR9<%IKHm^~3$Assk|u$2@DttVc6e9*2s-58p}68@d~ubtv+Kaf?)jm% zgR4!}hnn$G`3xG?{WYZP+5KGy$<{Kv=bI9-qIJ*CjxL!@&bicE{}k~JaLo)z&PGW5 z&%H1ULn=ZZED-kYH#sKG->3Wmy9PBpANy>i7#6nxQ9dmFri&OYn85_nnxNXoZj&}C z>8`9+3HU&`g7K!ec%@+OdQxUppPtZ;{IjG8xpIvQ(PirteU-_9=vNwpf6zsv=WP2F z7AyOShf_SJso!Xror#Jc|9Sp3H+Rm*-#6(RGBg_BkiHP~cm#Ux;vm>Rz^-AV|F{gr zpdo@U$CG%rXN>po%Sc^OQu6bpq68lRaIz0Mf}#c!WBJx^rfRe(^1NmE*%{R>n$U9Q zUNzt-rVW-$@WDD#=;4v@flR0LY21?R9CkCjT-|J(C36AOD7*$QlGZ*AF_Dh)TKYqd z2{}Ow%+EU)+ga{!W*R9>+6s zAM`xTkDty3JyXxP*)#eg$>VxAYd#)p@Gp~wDIEMgv!YHqFK#qvt;}|g)UA*XZ|?kh zQ`HWe5f0Q{8aGG*>{)q)GGKqA-3T+q&HWsvw2)y#LlOxEu#fopgrf^ zSRe4dDW9I{qZSL35DF4Y#XGvnUlP>LAQY|$Q zXJGH@tVV|J?=q=J&7@wRVaD@_p}qWu`=^%)!7?rq{ zec0yDY*_c!L{Pe$7apncU`4QY`~|Dy2sYNao0s8sD#`$4WoLEao)~WGx3)@A{i^kk zgnYLZgdKygV4p25as6~!9x^tNi_42n)R$ZN+|>E&qS5*2g=TsFPvs3I=yc9vZJ#ic zF+L+A)Qj<|u9LmZ^M^CM#0+0`gTyT^Znt}kszZG2&IVUwvfr*(9hb@u@AE!t_(w%0 z6?!M(ig}SoAwzC2HV;#qM=X+yWu8ld=sAMrRIo7Ke!TzTBr1a09#n~~L|#eojJOiR zSUaKVds2~Zf(_ux#q)zfg*x`<+r)@8~5R4dI8j1`;*0t!D8#aY&vZ} z<$|a_=dZe(_b+^`ZEejDk5W8fkzuzC)>Ivzc}qW6Q}N%}nl-k&N2Ngo6qWl6YL}|5 zqJ-OewzuZrT?B5}K@sgO312ZZGLjhDb2C$XqUqo}**E@=92m;eWnfI&cX?uGll69x zgxl~KsBT}8McA}12RrFRz4R@}T>LPr5GbXBj4(U{8|+7NL;RtyL?>C#zfu5KYNwY+ zJnvuhrb$7zZ;d~dj#_AyG9t1?OE=QkEciZYGXV#i`U@X^O9$G9uV16)hqiVCH5PFE z5h>F(u|I=exV0K@74uak6xjJ>I5%9J8;L@Cv#BS}7p8LmS{oweI9KDTw3iK)@iC)x zRRDn*akB%v(IAUAl~SdjAtyV1ej?fIKYj!dsXl!wCDbqh%XTexYgG`nr|*RtPpBAK7~A1#+emvMIAhag z4|97VzypR1k&EvWK7NL*t&=a_kC8HAXf1V9Erlo)B#8RK%ir8|BU>)3zHhZstx=iK zQFOT`hS=4O`=&D5o0J{t`~%=s=4tf4FVonPoEF4vWW4)v%u8uJP$`6n1Bxkag4Kq?-5k_ZMOEIvaI{i9I{_y4Txi|%?W8-6@#h-fFY{bA^)aMgko*HQwCHWWU8=-6 z!3Q(y5>hM`H2pPz`QM3@3TLHQ)jn$7Xx1 ztn&9iVrY^701rQZ1^N+md;cJnz{!$%X>sw*D6!3>?gfj9xC1#23aK!#gaS9|CNTd4861$_eH*NEc~ zJ7MKXSxwvsiB&F`NK5-6$U)eG^+D{a{MTr)L&1mGDc8AO0`cN*5SM~S=;p#R@n2WO zy(0_fE@Ms&J5z07M8m~fv8T-Tn$#d)(I5X?;9cE^O-fr}_miFKtN3v!^@2&|NA4JW z)DRo)#_N?bj>Re5$!KZSgpoR{?VBki60~XkYuY|#RdsiYza?!}>((kvOCWxIp$5|R zK;$GkglIW?ojS2j1(JIkkAqGz0vHuNXiZzGnRX+Y0m5%nP6Td&$yKHfG6Vn>s!x1`!lMb9Bh zPH8CzCc|S;3HO9U?BZI3LXY23nrhWi`>q_K#F4zx=i?7VJhOC0EfV0NL_(p;L);H) z-}^?ADQ5}WGUSul`n08|wL2ouuE4E{Pd(%M5ko!5YFKk>|I{MMNWet(ZR(oIb_mXU@ANp~BH{Y}A_To7Kx+=KvZd zwQpbWDdp^C3gXAQkba=qq7M4Nt@12kI;mNtf1gYPyctGtDow&k{tvM3cfvPgqUtMF zIGU=vx_qV~zyE^lc|%>Vl1GTNsBv;fph4#>ey#m=x`9x8!$)0u+P#l3RXbxIN;`JY zAuo7m=jZOWMN;VY@_DCTlZ~*u9D^V3$HUG7e(f(Xidt7!W0rmQHD0;T2F$<^w3*=Q zL`a_=RUt?*gH<{7)bs}D_4gmG^~UU)%JP_?hL+BY`51`mcKDiO2wFi$eKjJgxuA@f z({59tRn)gP-}tOld;FMd&$|p7h-t0An%v1%7cUtBmdd;gY_R!yUD}A+lVWIt=Vq^X z{p|9JNEi#Fx7gfhj{^04^lV;FN+-7K)^VSQw;?H4TTcGcf-6N=7_Q!g&UIyozWRO+y z^k9{ho~Zx(@6x`)Qo_b}X|q4#0|kVV=t2w88}hr@I#|C3D9oN<*G%-fm?`(zsrel` z!yJwLzp8r6u&BB=YQh?ftx8 ztsnDqj+wpIzSb3Igcva2P?b8No@q~7N(>Ps{so!J{r;i!8~NJ)iu<$!R@Fix?+_KH|jn)jPPPPk-g_eii8xAtKGgQ>mM=Dt!23DFTIV*HM zfZ%#qAE|}2rg4w?X}MEjQ|PE=9QE7WNVL;*Cid}Z6z#$9hYRBlaz8@H%~q>8iWX85 zgS%~yDXSkHIzpzl)d_d!QWy(m>0G>VbH=yLtq#a5Vq357f#8rdh)Lpr9F$(K&sKdw z_!`M_A~*~pTc9q87i^<)@bT8WQ{T)=nbDk9WnIN}sn9tzUPAZ55!(yRlzP+nIi)ElE)qkqEDWKkfErbj++5UyY+ z(XUk}H!mb&km#M`j0XmQpBNCeWV|M>MLX9N1#2Q2Gjv(@*JdpJXYq)FoB_a}|JgqN z8y}R3_$*%&{5aer@L_^flsSBu_ZwK%UoV0qiEom`saZ{VB;n1O^WeRhi>UyHcnP%TKNSUSyC->?N?c4*F+|K_lBC6 zMyqozV!A&yPnQ9mBxWJc_lyGPuL5RV7Hz=@`Xcr}*yli``1X{Y0Cx+bz19g59u32rX+Q8b zE1iO?3N9S-a!JM`iBJz-P2&pQMo@X}x~0D1wxeuMhNg+#j!uAj*JP}-5kjl<*>a6r zbN`xF_LSN6KIA5^X-a%r4qBm5p|EQUk$v=Ds={3M`MH?acvjx{_4GMT0(D zv<~%zNrf4tYpd{_z~%JJ4&M*^ntY;SP9N2wNLNuC!!n3OG)#ZIOvB3w`R zvu4#gY`HrWot}QBM{VngqtxU@E8dg4E1|pO+#MILs{OW@3)EBX_l04-^XP_-QdAo{ zJxUlb9>cnfg&a)q1gpDx;a6VtOeS=5-**Y(HHUP44-bN7&U51r^PQLs9y!H(KEy{e zc37&PZokS#{K$#Q+OU27Rr^71W^kJNS&oZ8Ap3^WpI=y5tA`QW z)km3v_1%qZ>~{Wwq|_#(l&|j-aDtwv*OEm%hM2o}CZO6+GH1$EaclR!80-iT^yEwDYQCao^*-&;vVL!n@fI zS9OMwRSl_NHMvW4yCkYR4zSvqRP{hmf)pN^rvdW}?oo(&-B)1ELvPw*I_NsMF2P=ppT& z#p9puPyOEe@_Md655ieBsh52(nJS2L#=eGO6|yZidUQ6#yX#xzD5ifXF&Q>MI>e;V zUZqvv*!iNcfUBDEovvBbZ(TNLdUs?=fY{Z}(P!P6->+iQs0w|~pl80$AX59wpxkT6 z97LH*aM_v92X9BYuh;ArGq#y6i&<*+cjO6%&X!YRE^Llo-ITKZrM`QQSM50=-p6k% zepfUWhlzryLFCivHnlZjMn*t`2>}6|QN{&%tGQ{{I9xa~;k3ssu7NZ9`HlG_Zki`PN-&RjBp^Eof$*MQ9SX#)oRiP{4BhqG$BZr*Oj;?p$ zd-^NW##o69{d>YFGRS}Yu{`i_fvJYG@YFx_OTQXBJQ&bT_V+cu!|;6l(S8Nt$BeHH z-)pmFd?@Xh66@~UKg=@9B9{1f_YK3hBnjjR(K!+Cuk+N2M5bj==2bgRPKjM(rFfWt zZ@<7b-f4dd<)@0^clBYaxn4-NBD61 z4{(Y5)uye{;h`GL;Jy%K7|Iw*eI}r0`0G?4^8EuxqGQ3>RkgsW32u*)x5fm_yQtB* z*OZmI{ESNaFG$Q%a31vgibA;S+=h>%6XxS9vYomSH0*ssJzu;NdJ!ozjEI_LNTRuw zkuXWupT{MlxdniGXW9X&QKe2o66bB)=1_yCzC-sSv1DCX)0lBM!z(oE(ufM5pu2O1 znB9Ysp&tTZ8UeX+)763)`gA@M^ayE|z#rw&VO(o$(TbS2#^N74oQl_t-b-CZfo zrPAwvhnBYI)7^k({)j48vQ z;zLMU5%y1R-2T7>g}%fexkaHIWbD+_PCB)`^$CyQY~a?<2P zMHo~yBCv(Z{WMR{pnpNJw{4=HAtmB&&lChuC$W8Rv@iU%uMMquMGoXG7ArPPpL zL3JSwW_>mSWbs?Hv2%5D(6?qGO;T=lHdX|5c9?dPS+`@0*r3d z=U#-k>U}?sxBglh`3@f+!l08tQPPF;l7iQ;vn0tDaSPXPI1)eb+q3{(mer;p6)}Py z{)d|%&!oG}@y$??u9a{5`^8z5oxmr(;syP&d@qTgV$@GF&&;;9&uKtOPSE<+CbFSf zLf}hFIDBR)Hp0Us`_?{99xHpNOP`gg4h>!!Oj&A>WP#dQ2Kkz8Va3X`CxMUec&{K! z(Wzh(+mFcBtp3yOoVuALH)^uDf=}49q44(jXlp}3q6dZs-ee4|`^qFj}9fN-sSD_t6s$e9mnLYzf@c**98SYDp((!nmiJ z2QS&cz_6o>XtlIE*kDp}Z%IXcP*|aNd5D64BTewW-@G9aK z0mQMk6A3HrcAQ^I=iGei2Po*ZC}1;{?uD1Wu}=vWGdW~&p4oFgpD)T+bie${&}*u( zss1w3s)6p$OX0@=5sHMG#a1X@(9QJXLjP-#3Rm}uwDRLDS3!{gKU1V`%*eA%yMumq zyPwU&3$m`nZS(Na<{z~v6%=6^Cf`8*9<|@WlLrH;=C^=T&OhxQak$^L0bBz7Joe&0 z+?+*G1V~e@H|LWa;btVf^>9PVksS{lb2nUZY_>Nm5mKK*3f^RXnoslLh3r|xEBHsd zd3X_v2D3JW+YblU{8E2D8xJvC-jC4)MlE{vJ>ed9Aoc4q~1G#azbqR!(F1 z*PI@>c`$Kfr(tL>^rMRQ$i0&#R>lH7O6;wuy7|+F^pJT#g&P79n!Od(h?F0uK{;g!r)!^a$Bau6(bH)&t% z$K&ARL1hfoGoqe7tlorM5RYitVYgH_y}Rd6M`^8Ix#vZpqF?A91Y~4u_7%k9)C3BA zg0AhMK#8m1Trz8i`}E3lkLco zZAv|-oI_fK8GMK7A}(z6oX{4!94whq(Zn>G@k*)PV&e}eh}@$y2V&iQ$Dv+u76%J> z2!z;Sj1q~cfF?lL+$M~-%HkRrxT@3{2X1id^LKGBK$Pe+KHI*(b!~ga)ZT*?o6@o3 z{Q2Pdxod;``WtIy%Y}f!PzAsCT>2?*uvLOA%)^w<;T?t0%HzBUnftMjPZfLCoaFnB za3O1p!M%d?Gp04Ij)h;avD3_-sKObx&mLwD!`inE{9WJsKNGykRbham@C3myH~_c+ z;Q-1F9sC7Mq9yw4v7BjqxU>j;piYScU^p88WWRUpoV2+vx2heuuWkqLCNG`v_rc$?Z zpg33e=>@E*S5}O-b*9vRXT87PNt}4Ff$}nWSclm*iD^jo-rkipQqpH>V$D?r5X6BR-clxCE(ADyakqU3!BhNw5W(BOwzHu%dj+)uM zBc3SZ6}LJ_yp8Z&xNmD{5z)P{b$1OV`ydgrQ-XQ}M!za(emz-U5bnz{!7JV~fw0e7 zy>L8IefU}^Ot+4oS<&U_Bn+u z$^od8=ulZna}*`-qSFhRw#9a>c!2O0bh>54kFmbBY!O+*GowPt2eWj1n__UsA+CCZ z*bF-&;vH?1wg9fp1n5zQmXmN6Q}Tghz|sA*3?eC{DxOJ?-g@zU0U+}$k)%I$cKf0( zq;Vzak3$!e^ePT^u_KCy)*|3VEBxbBIvNdhReA;PYtdrNfVQ!q-~>OodHd_TyI2yI z5n7?o(cec?>cYA3FR0aif&jEMd27Y_z^K`c9M4cJ;{DtpSp-i8EZ#8RX-iX zw-+T+w*_%z6cMq?&n*#-CXP{Z#V-7^$4VhSDu=o*zfEoG(wk9we{Pxmp#4;du|yz} zhP(hfxxeghmuq=v)kTI>_@gRAmtgD4=nx-V#^v25VLo9WDiE5_>ChhwTWi~+M0k=B z7UuTN#?-BmO&Y9WCM%%ZY$2<1_SM)znQLFO7+G^mM>)fsVfIRLEjiK6z_^y4Dx*LP zQrY}?In6?{hM>%2jH+qZfr1Sd!MAw;5&v?u2`HhMgHYwy1}1S^zGhLXNQakM?V$Zm z8}&NZRHY3=a+;za5q=pr^ip%eoNRajr_5Ln3F`-<9EkgWHhbb0|E$uCj2Tf2(E7>b zIW(8ZH=W(m$kAL#s|wB4XB|=i#SYL|o^vC%QuwJf?k)KInMikNRM`E`b7lk7gfTAe zooWvvHPa3F>Z}}281uy7$ok{7ik5iQ0iv#WkctlAQWc8pJ>aQRf5aAem-0K30I7O* zhV_ZiUKM^fnj(#o@%mkHcCK)yUUm{&GJj{yxKxf27^L_}^ySXOl+Ap)AnEA1%JNq)^@Y`Fz`_A$v zBptHZSJ(!OTuY0&-5zdyX52;duEJTDTL(`H%ac}MG?tpdy-ziil&!$H`$4T*t$O{; zU`OCGB-3YSDPaVoA+-ZGjlj8-%3S}Bsb$!pa?*xzNQQJDqTqp%z3D1csr5ttLFp z_pR~r*b@?O`BZ*WI8hxu?Ee|{sp|=Ss%c2+qHxeugO-#`G7LtWcbGvqu~_AT?8v_` z;^orkVEB6rR13Pd*?w@=h6p4*%o`aMV7Bal6+20GhPgkS(V0iSt{JH5Z{zqrjq8_W zq$XsXt>sM6b7V5c8>SX5^tKdJ@8~&Ge}4Q%!{$Ym|zSDGi{Bp)Cn+^OQya7A|qTqa{WWZ%W#D$|#}>MT?dII}u| zk-)rDCa;K-CPVjCeifkQOdxk8dY-v#M8)DRgub!aZj;}ZZ%n{NsAUow5|IU%2A3_w z&x8%*0;Jse()Y-@aSSrbeY%>B^S+w<(^KlDCna$Y^{&Hrq%Ni?l^3iWh7MBnH@|1v zjQeaWKF5ukzH5qAIzq3Bw$H5|1m`${s(8u3M-JbdMh2lXF-ecDh(sSE7co=Yy3%-2 z$1La9f419D+;3oaJkCr&8!&uLuM7tJP(@M1MP)@nU=aC4wEw*NuL|U~UI-~c##Q;& zwd-S!IFuhHS>4NmmDUCBvQV=6`uxb3@|nD%c^XJo=3v@mf`36ptXu=&WXbBz$+bws z+b@e(_&E6=SH(+HhgV|kvfW?!iee}|bj?pfs*g65c8$_xVo?!?Zu*CJV?%P0=euDk z^RQc!E_vS3+U)HJGg&KJ|rO4j<{y*&yf zI^)h&^D&&NYcQpt(4RGgDPh<-;dUE;Xg7?ceJi22*?!bf*AC#QN4Zb-h77}rdqx=; zHW7U2+P`X57*zd=;h^PVzSa(HX2v@Wv35;U2Zh6lgqZ1B)iRH!O)LF z9Hy-)$ar*HRryXo6z=^~7gns>{IXQQiRtHeUYQT0H7}nPZ)2!G5*Y__NfCi$mE%Nz z@PWwLnsfu2&{c-ls~<_XV%0x*u$^xy(rN4Jra~W5B`~C@$B_4xLSWhV4{W4zdm+Lc z&NlPBuP%9cmODcE_?YuDwuXMxM?$eC(qZMKN$o|doJclMigqZ;Ti7i zF}w*Z)0ZGtc>sV7r7+KeUgtkVuiBe~&Eb|*-sD}PHhjG=o0ymcoT&FHgqd7aO}wJ; z@^REQ8%Kh^=L-YV4&ADgb?V_0$7IBo&Zf0@Z6ru;xIE)xYMlLz*-~-fwak%to0zCr z=RU|&(g?8)(|icmhHivp)M=EFY`~^jtmRXjDoikw=y0pdb(9VK;j|x<@yqGu z)I{xkL%7btg2q*$_S8mW=Y1`guZtOi_jXh8t=TukE&0Zdpg({Bhs$jfgdy`Py`Apt zKs{)%UtvZ0vY5&_7$6{l_vJTs;d(6F$mV!H`;wOBbM(&(k06Dklu$0$@|Ub zu*=t$2SP~56@3>2Xn1@_m<+O&|5xuLpoj|KOW2EwabX4p0$9(`gx9hjwI9=GpVjO) z48>4j?>QEKw&;Y8nMLebQe7+ixgGE+b!GYq0i0r1!?)HoTh+l3a&q@z8gVb_!qQ#K zABF?dq-JIh?LF??xbE;wbr`=aWkUu#N>Nu}Ish;TiD;a}NwW2;sGgOK?5qa^wQ}G9 z(u?Uci=Ol8Ff|lGVtL%As7W4jIqBf0I(ya>N4k!yIU#(0aGNz!6=gR!QoT zB)bb?u42=S`~7hHoCB+zZ!fmpW|2B}Z20dtH#a`+4L9wIl_Y!Y57xA@-aNXb4&Qui z8*rNEBtO5y<2hvzSa^E5x>(__E2-0zT;?DD=scOr&ci;5{W(0wrTB|i;G%4_)p*8* z)3+2_uki|}fwm29@LFIVkVou{o7vcFb*!$7i;-3ZccySM&7jDrJO{~i# z=j=>)h+VU-XzdVMz zdOK@$N{>Q?>p}b{dBdG?)OE9W&rHTb7Fm2fGTq!au$?;55B1<+E>(*MOFp0f8m3vz z7dT}ARiJ7SkP-$CpaVX!6E+p&_$a?>x-yOE=Y+?#ZdH@gVSWARJ*z_Ka!Ey&5RU?b z4hPR2Z(ZIe6}dO1bS6{Zmku7B_7jIkFFB&1*>-@h(<@J4bh71^K@L`|KeRm;!tVbz zdpEN|{YEGEr0x;9o8`$}b}&0&XJI{RlN{>tL&_5f2_d|E(*M#d!Uk3nH;N809OD4Ziv zv4?Yv@II77mwdtpOMN2Ooi5?jVJVt+HTN=c^Zk9~2&#KdQnM_Sh?bL4U`YIIkv_t! zI8R9smJ|BvYi&+;$-CNHN)4^^#hD)v(_Hk$u}8ui1izFEz~u>;#}66 zeINhjRJ`r}EdRxi^(}_$j*xT}KpsP{g;OR|z)sO4`vkig zG3w44RTSHR01#Mp$m2eoX7D4<@n6uItf(@Zh}ur4&^|5iepCOM?CIDK7?Fi|pOYvr z_x1k@B$qpqR?^(Zz^xnLh~2z!^Wte*&=UH;6jjbYm_^-VnV%7^vTpXVk+;GPtw((r zx?m~%*@v4ovR#|DqE<$q&0dpuhbi@gf$iA!d2nglskOmo2H@B1{uX*Ql|n^~<1jCzfUS-0@aZ7-mAoT-V;t%O;} z`v=BHyS%3y@Oe`MlwazG3-#fcX5gkj`3a2H=5SPsxhP&0G2oz*`3qvCqLdn!mZ}Ts z15ANXvi65*^Ig> z4#r_^iUzPMp`RT6UQcQw5Qc(V`F%Xzlc*ancmy>YKCarM<1#grdyZag5}jKgLRXRt9K6zF04av5(5dTw=+=xyFsZtV??0CpEq zJG24Vw|A~gjlX7&iH}`{tlr-rNAYM};kpscaA#hMHdb*dGpG>9BHw(tgtqU0OV;sD z=9)as0pE0&W)GWh_WYE3#aZed|Eh=^^@*s5&CQL*3Qv|iIyWK$Un&Ti@tt2O#+z^4 zeoj}nT<@zYKQ6_LgR}_atTzhVXExndc7Y*-(Ds0>CG7KS#1!!RhtwHoliIGvpmwIz z@CO{+trq?sUqbnktLNVfUq$jTvml2ZB{0R52~nzfzK<|Dj^@KO?*idNB}=7Nw$aJN zaTb$VZmKwnw_S!ThqCj^Jl|ghh?4%wO_<=TLJ`vcr^NI9RdkTK%56b9mbEKu&|R zN5BfMu8IsT)<%lV^Z0R$9%@3CCDtj_wxCPYn^V5{);rSnAS`vh=Te+tTP6ZdQbse z88JJxGCz|)04(tBp7?MMK`cCLik0EN?Vll?)&Ap$m5aMf1nBuX9ryWom;qvOkz-Uk zYezuO^LlN!T&M9?L%QG<8ZCE(Kj2qcvRF7SENsC)y*Yv(Ucwh@7t0H^UBfAKw_d>k z@qPFgQD0+%W6Q2>6BnCB2Dp7Qh9Nd^XILA$w5CBi^N0wFN?Lo#`0i`q5-Tek6C2#D ztWJB~l{^j!91GM>=F+*cfLo~`$uT7M9|jFr5)uRes1wK-zGc{qQ5^C>xK|0H{&<f`@{2&%`b1yW~aWqru*tLv90z95fls_!+rX|}6Q zEip%;IL0f*bjw$qeww+Zza{tGEzaJ0dJw_Ks~HVn$l;uL-k69k;Q@a|LKX`Jb*|r& zrfsvK)apsjHMiiqdGbKirfps^#>us$V(!6ma}tL|G!IVekE39-*UmW!n|BzQPPx;PwG6@NR9Y9zx8 z!!qXUeg;Jy7v13Y&Zr4s92R8s5+f5u!iX zaU3S9IO^8e*9*dNQ!U3%uWGl^^_ir->t+j#BA)vS(o~w1tjADa1(&*t)pBE^E;H%y z44&>k3Dk*8#q#pdS&+q?$hI?~N|1>)r{^0V@dLNB>)3GWq|`#_QMb+B9c!m-=hOOR@w>a%HObjZWSI6%^?h&l1nCh7pWkvCvuz5y(XQFALm)c60L>i?aS-hq8f zL4{^7CDV(RI4NfQ#rVE=)VQ+og+Ii|qC29KU)w%N?!!*_d~FnwpN-2yVFNGv-b*{b~F0K53!jr+>Wk|8DSq{I35N-+%uHkA&{Z zVP;7urAV6-?+#6z3!;Pm@B?#P1})OBGT?S|Y{xo>AnDh-Ok0O(O<22+8%Ov&%URqT z&568PYH-1l@Xg$|q?%!xtc{dZBvgvc#DA-~WWtP&eOY_EnkHGS#ZnwYu61$`xkghy z#Ui$B66{9wI$Wb5EI|LK>eOFQ$KwhBN4Nvrmt&LaMBJb|1^S1wUbT(?cnTJRSbF^( zUa2PO49J!{asSaXPPF_;eAx)YgDzS#ZHl6}&+c7+6;m%QhJ$z^B60`_h`a#c3yi(A zO0!jhlh+s&=E+2utq_%iw*hrTJw4;8Z4R*}+ay$T}`m{TagC7gCz`+fYO)hFHVi z(|zd7)ritvJX!7d5`!e_qxp_v(ZOA*mCwich7NhH@ivaM6*L@1E%*q{%WPA$#D!;a zneo_+t>~kMo&Idr12V2dVp5BNlbdGA;YUikFVsj{N)Z|n3)Jec7e&F=nrem4sfZU< zXkBa#H(3?C4pZ zT9Y!qgF!(z16|P2nPU%v?0-XVigD|1!8A9@Ky@T5q+b;wf^sB=SJ#& z4JTR~Au#isj{N{r-H2{2z+dgsCJ3$nv#m9c=$|nLTudbd9nF=6<1g%$#G3X?#&rVh zf!)midMc>O9)PCFYf5!N(*NcE|E^Tw2?l8>tF?d+hVGXn<=GgSe>yk+@8WYZLh1-1 z`ksEic?x8^0Gi#Y)ZWBuVmh}n6pN;HXCE2*W;8VrSEiH$szM9lqI))_8*(NNn944C z^s<$Up4Dz+ZXBm3Rd4e@yAv4PVc4d`R2?+jhvnTc3DWb6woUN z_B(53rjZGypsoNz0R{O6*kj&T>L^vNuJC?r{M<*c&c_o(&xE7%1bxpUP^5F$rn$sE zt0HvZfV}k@>2s|nn_n?yPi~6I^79~-twC4``z&RpoH7j7+?UQlcDapD~R$)i&n#k898bO4-RwDs-+ZDWWkP52{FC29ANMs2DoMr{Wg8`=f9e_c z9bemZKdEczPO_h*FmuW^%S;a3wf>os!HUJ`rAMaER^XI(W?81LKV13SWsnAJBQ%34 zD*e8xif@J!COpU|HaTbqYe1wh16kF^Zzc6=?Iu2t)p|sTvs29{suP zRR_Qf1mG_87(^)9X3KC=ejVn@aNLwN{>nIxE<`y}dERh#VeIVS38CfaQofm8OEvS8 zz}Z~&KKvFsqu-bIej=c2Uic*NyIOV-g7wD<_DUR*-=Z?qp8wvc|JJ+kQn){_oC$=4 zPe0LiKI?As?m{K~lQg=)`k+f^wL;ZyR+Z1&IzX2b3(VdpcCbQ}ZR#!nA`++ySLnSl I{`=?u0=eTT`Tzg` literal 0 HcmV?d00001 diff --git a/src/clj/auto_ap/datomic/ledger.clj b/src/clj/auto_ap/datomic/ledger.clj index 7064ec35..fe483f68 100644 --- a/src/clj/auto_ap/datomic/ledger.clj +++ b/src/clj/auto_ap/datomic/ledger.clj @@ -96,6 +96,13 @@ {:bank-account/type [*]}]}]}] ids) (map #(update % :journal-entry/date c/from-date)) + (filter (fn [je] + (every? + (fn [jel] + (let [include-in-reports (-> jel :journal-entry-line/account :bank-account/include-in-reports)] + (or (nil? include-in-reports) + (true? include-in-reports)))) + (:journal-entry/line-items je)))) (group-by :db/id))] (->> ids (map results) diff --git a/src/clj/auto_ap/datomic/migrate.clj b/src/clj/auto_ap/datomic/migrate.clj index ee85eeab..65697c84 100644 --- a/src/clj/auto_ap/datomic/migrate.clj +++ b/src/clj/auto_ap/datomic/migrate.clj @@ -71,6 +71,21 @@ (seq vs) (conj {:db/id e a vs})))})}]]) +(defn add-include-in-reports [conn] + (let [existing-accounts (->> (d/query {:query {:find ['?e] + :in ['$] + :where ['[?e :bank-account/name]]} + :args [(d/db conn)]}) + + (transduce + (comp + (map first) + (map (fn [bank-account] + {:db/id bank-account :bank-account/include-in-reports true}))) + conj + []))] + [existing-accounts])) + (defn -main [& args] (println "Creating database ..." uri) (doto (d/create-database uri) println) @@ -257,7 +272,13 @@ :db/doc "An identifier for this forcasted transaction, e.g., 'RENT'" :db/valueType :db.type/string :db/cardinality :db.cardinality/one}]]} - :auto-ap/add-manager-schema {:txes [[{:db/ident :user-role/manager}]]}} + :auto-ap/add-manager-schema {:txes [[{:db/ident :user-role/manager}]]} + :auto-ap/add-include-in-reports1 {:txes [[{:db/ident :bank-account/include-in-reports + :db/doc "Whether to include this bank account in balance sheet, etc." + :db/valueType :db.type/boolean + :db/cardinality :db.cardinality/one}]] + :depends-on [:auto-ap/add-manager-schema]} + :auto-ap/migrate-include-in-reports {:txes-fn `add-include-in-reports :depends-on [:auto-ap/add-include-in-reports1] }} ] (println "Conforming database...") (c/ensure-conforms conn norms-map) diff --git a/src/clj/auto_ap/graphql.clj b/src/clj/auto_ap/graphql.clj index a89e85af..ad5b8bff 100644 --- a/src/clj/auto_ap/graphql.clj +++ b/src/clj/auto_ap/graphql.clj @@ -85,6 +85,7 @@ :number {:type 'String} :sort_order {:type 'Int} :visible {:type 'Boolean} + :include_in_reports {:type 'Boolean} :routing {:type 'String} :code {:type 'String} :check_number {:type 'Int} @@ -531,6 +532,7 @@ :number {:type 'String} :check_number {:type 'Int} :visible {:type 'Boolean} + :include_in_reports {:type 'Boolean} :sort_order {:type 'Int} :name {:type 'String} :bank_code {:type 'String} diff --git a/src/clj/auto_ap/graphql/clients.clj b/src/clj/auto_ap/graphql/clients.clj index 7e4366b2..6e53ec0e 100644 --- a/src/clj/auto_ap/graphql/clients.clj +++ b/src/clj/auto_ap/graphql/clients.clj @@ -51,6 +51,7 @@ :bank-account/bank-name (:bank_name %) :bank-account/bank-code (:bank_code %) :bank-account/routing (:routing %) + :bank-account/include-in-reports (:include_in_reports %) :bank-account/name (:name %) :bank-account/visible (:visible %) diff --git a/src/clj/auto_ap/graphql/ledger.clj b/src/clj/auto_ap/graphql/ledger.clj index 0d7c3aed..1949d3f3 100644 --- a/src/clj/auto_ap/graphql/ledger.clj +++ b/src/clj/auto_ap/graphql/ledger.clj @@ -68,9 +68,9 @@ :id (str (:db/id account) "-" location) :numeric-code (or (:account/numeric-code account) (and (#{:bank-account-type/check} (:db/ident (:bank-account/type account))) - 1100) + 11100) (and (#{:bank-account-type/credit} (:db/ident (:bank-account/type account))) - 2800)) + 28000)) :account-type (or (:db/ident (:account/type account)) ({:bank-account-type/check :asset :bank-account-type/credit :liability} diff --git a/src/clj/auto_ap/graphql/transactions.clj b/src/clj/auto_ap/graphql/transactions.clj index 18f8d498..aded1ddd 100644 --- a/src/clj/auto_ap/graphql/transactions.clj +++ b/src/clj/auto_ap/graphql/transactions.clj @@ -131,7 +131,7 @@ (->> (g-tr/run-transaction-rule context {:transaction_rule_id transaction_rule_id :count Integer/MAX_VALUE} nil) - (filter #(not (:transaction/payment %))) + (filter #(not (:payment %))) (map :id )) diff --git a/src/cljs/auto_ap/events.cljs b/src/cljs/auto_ap/events.cljs index 7235050b..b85e0a3b 100644 --- a/src/cljs/auto_ap/events.cljs +++ b/src/cljs/auto_ap/events.cljs @@ -44,7 +44,7 @@ :graphql {:token token :query-obj {:venia/queries [[:client - [:id :name :code :email :matches :locations [:location-matches [:location :match]] [:bank-accounts [:id :code :number :bank-name :bank-code :check-number :name :routing :type :sort-order :visible :yodlee-account-id :locations] ] + [:id :name :code :email :matches :locations [:location-matches [:location :match]] [:bank-accounts [:id :code :number :bank-name :bank-code :check-number :name :routing :type :sort-order :visible :yodlee-account-id :locations :include-in-reports] ] [:address [:street1 :street2 :city :state :zip]]]] [:vendor [:id :name :hidden [:default-account [:name :id :location]] [:primary-contact [:name :phone :email :id]] [:secondary-contact [:id :name :phone :email]] :print-as :invoice-reminder-schedule :code @@ -71,7 +71,7 @@ (fn [{:keys [db]} [_ token user]] {:graphql {:token token :query-obj {:venia/queries [[:client - [:id :name :code :matches :locations [:location-matches [:location :match]] [:address [:street1 :street2 :city :state :zip]] [:bank-accounts [:id :code :number :bank-name :bank-code :check-number :name :routing :type :sort-order :visible :yodlee-account-id :locations] ]]] + [:id :name :code :matches :locations [:location-matches [:location :match]] [:address [:street1 :street2 :city :state :zip]] [:bank-accounts [:id :code :number :bank-name :bank-code :check-number :name :routing :type :sort-order :visible :yodlee-account-id :locations :include-in-reports] ]]] [:vendor [:id :name :hidden [:default-account [:name :id :location]] [:primary-contact [:name :phone :email :id]] [:secondary-contact [:id :name :phone :email]] :print-as :invoice-reminder-schedule :code]] [:accounts [:numeric-code :name :location :type :account_set :applicability :id [:client-overrides [:name [:client [:name :id]]]]]]]} diff --git a/src/cljs/auto_ap/views/components/layouts.cljs b/src/cljs/auto_ap/views/components/layouts.cljs index eff197c2..e4c88b25 100644 --- a/src/cljs/auto_ap/views/components/layouts.cljs +++ b/src/cljs/auto_ap/views/components/layouts.cljs @@ -75,10 +75,9 @@ [:a.navbar-item {:class [(active-when ap = :payments)] :href (bidi/path-for routes/routes :payments)} "Payments" ] - (when (not= "manager" (:user/role @user)) - [:a.navbar-item {:class [(active-when ap = :transactions)] - :href (bidi/path-for routes/routes :transactions)} - "Transactions" ]) + [:a.navbar-item {:class [(active-when ap = :transactions)] + :href (bidi/path-for routes/routes :transactions)} + "Transactions" ] (when (not= "manager" (:user/role @user)) [:a.navbar-item {:class [(active-when ap = :ledger)] diff --git a/src/cljs/auto_ap/views/pages/admin/clients.cljs b/src/cljs/auto_ap/views/pages/admin/clients.cljs index 3d32df45..fae3ac11 100644 --- a/src/cljs/auto_ap/views/pages/admin/clients.cljs +++ b/src/cljs/auto_ap/views/pages/admin/clients.cljs @@ -50,10 +50,11 @@ :city (:city (:address new-client-data)) :state (:state (:address new-client-data)) :zip (:zip (:address new-client-data))} - :bank-accounts (map (fn [{:keys [number name check-number type id code bank-name routing bank-code new? sort-order visible yodlee-account-id locations]}] + :bank-accounts (map (fn [{:keys [number name check-number include-in-reports type id code bank-name routing bank-code new? sort-order visible yodlee-account-id locations]}] {:number number :name name :check-number check-number + :include-in-reports include-in-reports :type type :id id :sort-order sort-order @@ -415,7 +416,16 @@ [:ul (for [location locations] ^{:key location} [:li location ])] - [:i "This account applies to all locations"])]]) + [:i "This account applies to all locations"])] + [:div.field + [:label.checkbox + [bind-field + [:input {:type "checkbox" + :field [:bank-accounts sort-order :include-in-reports] + :event change-event + :subscription new-client}]] + " Include in reports"] + ]]) (when active? [:footer.card-footer diff --git a/src/cljs/auto_ap/views/pages/transactions.cljs b/src/cljs/auto_ap/views/pages/transactions.cljs index e5ba2215..b2395540 100644 --- a/src/cljs/auto_ap/views/pages/transactions.cljs +++ b/src/cljs/auto_ap/views/pages/transactions.cljs @@ -162,15 +162,13 @@ params @(re-frame/subscribe [::params]) ;; Keep to make sure it doens'nt get disposed ap @(re-frame/subscribe [::subs/active-page]) user (re-frame/subscribe [::subs/user])] - (if (not= "manager" (:user/role @user)) - [side-bar-layout - {:side-bar [side-bar/side-bar] - :main [:div ^{:key approval-status} - [content]] - :bottom [:div - [manual/modal {:import-completed [::manual-import-completed ]}]] - :right-side-bar [appearing-side-bar - {:visible? transaction-bar-active?} - [edit/form {:edit-completed [::edit-completed]}]]}] - [:div "Not authorized"])))})) + [side-bar-layout + {:side-bar [side-bar/side-bar] + :main [:div ^{:key approval-status} + [content]] + :bottom [:div + [manual/modal {:import-completed [::manual-import-completed ]}]] + :right-side-bar [appearing-side-bar + {:visible? transaction-bar-active?} + [edit/form {:edit-completed [::edit-completed]}]]}]))}))