From 33d14918b096949c94ea4443ca71819bbc2a418e Mon Sep 17 00:00:00 2001 From: Scott Erickson Date: Sat, 1 Nov 2014 14:15:57 -0700 Subject: [PATCH] Implementation of Heald's design of the PlayItemsModal. Added purchasing logic to the server to support it. Refactored header font from Bangers to Open Sans Condensed. --- .../modal/play-items-modal-background.png | Bin 0 -> 110189 bytes .../pages/play/modal/play-items-modal-hr.png | Bin 0 -> 1552 bytes .../play-items-modal-item-background.png | Bin 0 -> 3993 bytes ...y-items-modal-selected-item-background.png | Bin 0 -> 3910 bytes .../modal/play-items-modal-selected-tab.png | Bin 0 -> 2524 bytes .../play-items-modal-tab-icon-accessories.png | Bin 0 -> 3537 bytes .../modal/play-items-modal-tab-icon-armor.png | Bin 0 -> 4773 bytes .../modal/play-items-modal-tab-icon-books.png | Bin 0 -> 4047 bytes .../modal/play-items-modal-tab-icon-misc.png | Bin 0 -> 5585 bytes .../play-items-modal-tab-icon-primary.png | Bin 0 -> 3425 bytes .../play-items-modal-tab-icon-secondary.png | Bin 0 -> 4411 bytes .../pages/play/modal/play-items-modal-tab.png | Bin 0 -> 2235 bytes app/lib/surface/CountdownScreen.coffee | 2 +- app/lib/surface/WaitingScreen.coffee | 2 +- app/locale/en.coffee | 13 +- app/models/Purchase.coffee | 16 + app/models/ThangType.coffee | 24 +- app/models/User.coffee | 15 +- app/schemas/models/purchase.schema.coffee | 21 ++ app/schemas/models/user.coffee | 3 +- app/styles/achievements.sass | 2 +- app/styles/base.sass | 2 +- app/styles/bootstrap/_bootswatch.scss | 1 - app/styles/bootstrap/_variables.scss | 4 +- app/styles/common/top_nav.sass | 2 +- app/styles/home.sass | 4 +- app/styles/play/ladder_home.sass | 2 +- app/styles/play/level/modal/victory.sass | 2 +- app/styles/play/modal/play-items-modal.sass | 351 +++++++++++++++++- .../play/modal/item-details-view.jade | 29 ++ .../play/modal/play-items-modal.jade | 65 +++- app/views/HomeView.coffee | 8 + app/views/game-menu/ChooseHeroView.coffee | 4 +- app/views/kinds/CocoView.coffee | 7 + app/views/play/WorldMapView.coffee | 2 +- app/views/play/modal/PlayItemsModal.coffee | 234 ++++++++++-- server/commons/mapping.coffee | 1 + .../components/level_component_handler.coffee | 27 ++ server/purchases/Purchase.coffee | 9 + server/purchases/purchase_handler.coffee | 86 +++++ server/users/User.coffee | 6 + 41 files changed, 856 insertions(+), 88 deletions(-) create mode 100644 app/assets/images/pages/play/modal/play-items-modal-background.png create mode 100644 app/assets/images/pages/play/modal/play-items-modal-hr.png create mode 100644 app/assets/images/pages/play/modal/play-items-modal-item-background.png create mode 100644 app/assets/images/pages/play/modal/play-items-modal-selected-item-background.png create mode 100644 app/assets/images/pages/play/modal/play-items-modal-selected-tab.png create mode 100644 app/assets/images/pages/play/modal/play-items-modal-tab-icon-accessories.png create mode 100644 app/assets/images/pages/play/modal/play-items-modal-tab-icon-armor.png create mode 100644 app/assets/images/pages/play/modal/play-items-modal-tab-icon-books.png create mode 100644 app/assets/images/pages/play/modal/play-items-modal-tab-icon-misc.png create mode 100644 app/assets/images/pages/play/modal/play-items-modal-tab-icon-primary.png create mode 100644 app/assets/images/pages/play/modal/play-items-modal-tab-icon-secondary.png create mode 100644 app/assets/images/pages/play/modal/play-items-modal-tab.png create mode 100644 app/models/Purchase.coffee create mode 100644 app/schemas/models/purchase.schema.coffee create mode 100644 app/templates/play/modal/item-details-view.jade create mode 100644 server/purchases/Purchase.coffee create mode 100644 server/purchases/purchase_handler.coffee diff --git a/app/assets/images/pages/play/modal/play-items-modal-background.png b/app/assets/images/pages/play/modal/play-items-modal-background.png new file mode 100644 index 0000000000000000000000000000000000000000..991b1eaa210d198aa4cc8e14bb55a9ab8a434542 GIT binary patch literal 110189 zcmeFZby!u)_diZ45{gQSq_lLWAT3BEbvU5JImDs6K@pWkx{>bo&?PBS($dY5E-9(s zMsIMh-jDC+_k919#~Alsvu5^d&5BvGMqecb>8qH;m`F%SS7jbZs30Msbs!<33|+Yl zJki|6n*jd8uzH|ni-d%Qd;S|4DK?%635h@3?rghMkW^b?rc=o-=Q!uymv=~Tb@ncN*rQr^1#IgqUxgX$iM|=z;Ad* zL>N=ZNdRDA4zbgta56WuuoZB+cjp^l0ib>UnDq|DHxfJ8y*r}k15#+pD^ZAB+CV6{ zS-6=E*f`iJc==h_xw(0HIhZIo*x0#P+1OdxIhon{1-Q5b*w`rk__-sD3ABW4450!l z5>kH*2mI^a9b-E?D*;wkM@L5%M@|+?8zWYBetv#dHV#$}4rYLY+1A;@PS1(i!j|eg zlRx=LKx_?cOswooEG;O``ReIg+S}c`bLV`ZzkdGsE^{k+`M-v;u>Au)07q6QJu6mr z7B*IMbJm~rw6#-#{5{E^_OyNEYz1Lef!JEw+ZaFqa;l#*l5_xO_s7@%4~!%oAQpB% zWd+FW|7P^F@eK|B>SJYZWA+VbLjzWb8N?hI#}>eV{igs}8C%*}+8SH_$B=)${s!XD z2DUSS{s(~PZ~n6z#L478x}CrI-tF6(`YviA02Fz70Yw`VVEOBrNmv@#pMRH(gfQ@e z#n8l1fR}?`T$GE4osEZ^Uy_TRou7-FO+uWVhmW0IoQI8zUx@WTS^T}C{ut&b>^Y=( zxjDFaB)LVo+1S}7xy1OmxcPZ_Ma4O}IK{*z`Tk^oq3aK9Wh`v%^ehY@f6Uqhm^G9` zpNC7I2f}Q~!_Lpl1=TlX=HmbqgB=3p)8paM&OY?8a zVx?ze3pro7_wM|;a{tnW2cV*y%$$aL2FzRrTpY~$JRDGFD3ptv zo1cT%kj)T4^M~$#&j}bn==*EK|37m2q3hqA|AgYg=l-}z9+=qLS=u;XcyT_Va}%Np zvHs`NKVO)c{Ew*pg&m;n0(u7L#!1*#4?zALkPFZLp7Qq|=L3Bw_!;2;(<1nx`+tw& zXbiCsKDXA)?Ci{J?2p*_1UT3P*g2TlcmbRJ=TyH@{WlX^OQ@Zro()9Q2v9WP@9shA zPisLTF8<9OP|(Zk8JJj{n-GRS`Tn!xe-B__tY={aF%)L~v*Vu+{@q20^;~#nCjXS( z_ox39>7VQ4$0cyC*#hD=5ItaNJhHSj``QlP2jI&M_3ZTiCoUIhFYqxm5P(|RnCsaIo0#hv zL0GLUjD%SKet3cMFP|VFZfRy|1567d%qhhBv&R>DoqL0G`wc86y>Dv6F2wr7vwzcT zo*OSS`)~BT9BjZ3EBpDMe{{Y0`rlo({_n0AU;n%7-#yhVOzea?{uu3Fk1zB(cUj-T zPzAy?h%gT~Hz&6c>%SlWyN8mA6U0nY!UXVSw&#X~or41~_TPH_`_)goYW>}nmxJeG z&kJw<==oh+F2q#dl|apUh#`hU#$BD>#%TtwrS?cZ?y z5~7O)zu~%w#xL8y;rb;+7YTmDbrFqUwtvI*ONcHK{D$iy8ozA+hU=FQT_pGo*F`jb z+5QdJFCn@}@Efj+X#BGM8?IkMbdlgUTo=*!W&1Z=zl7)_!Ed-OqVdc2Z@7L5(M5va za9u>>m+jwh{Su;!1i#_Bh{iA5zv22NL>CEu!*vmjU$%e4^-G8@68whiA{xJJ|AymnMzZ2zBdVg7yp5@G>dx^x6?SMtL11Av>E6b27etRBJFQ9WkNimek|`#~IAEqs+Y(X$l3X!62v=VfDI!nD8`7lBq^;gas^EI}R2==| z2g;}pb|E2&_*Nw0O-I{Gu!58pz!vy5E8|Odsra_&^=1+CYiHE@BbaVWr#(-4`F&K7 zWEn`-KKg;EWl-*?4o#0&+Ex_!Zya@Yb*0X^SM68d%S^|m|Mboy}^2c3!NjJ2X(<8(A2T4PRE^h{i13CS@widDq zt1wf%zVRc*aZMsJ&=E|$FcTmB3diPIzRTQGM3hOaR$H@@w6t_rp1mpP4zkzw>rlPD6!>b7Z*He@J1G*a>>Y_REaf0Qj zQ__O5p!^pbN1ExySt48VI~y*vZuPXzg{c*s^8F&}S;}6}QkmSr#?dlL6LbS?!vr$w zlb=Zc=DGCmDzQye-V@-#CPUOU5(KSC;L1{~7Z~na_Qbxjx65cipuHqNewsuY6FJ$j@@@%Fl6~W3$WBnsiK! ziHT(c!Sdj3NF>AQy`3dEq-~Tk{Xs4+A3j|FaT&>fXPIH0CmM*9W+I#YNZ-yaV27}K zj!yvrarP=2NgFg<4FuirQNb9te|+is3rcGey#Pvi)lfcB1|J_6(|Il$07Br`R$6n| zvrmB(S7wuV{5?Zcf*9E#SS^$tZ&dj#tydGYDrcwVPY z40lqwUVQ^i^td0orC5S(dkLkD0U4d*A#NvPN0W)OzchNlPIst_^X*Wd?#nU!JMbYq z8|P=>`=!0j_7mMOBOMw#hI5U-j^;~8lZe-B0W{CvY8{8Yf-pYG&+pfTtvHhnfnL0L zQL&YA+dBTVxyFrBQ8;OXNOa#i9Zx2fgM&vFuPx2Q4~1lPjz#M7f2|?Rd8~9izH3VK zc+rWmt)Px~;^pQ}Z#E}MXE%th>Wx|7tVuM7&yFxj^+KQ6VJZm%;d9ReoPW$ZgiFTClTRmAkt_!ENNO@vb7ytjdhbs*-}``S5w$ z9Vx4(tHY(P`(!VqUosH*yB#t;7?OceDK=9&G%Ae*9$sKQJ!U-^ zM+gry-$&Q7u98g`yN*U}A{J_R=Egd`XEYVW9l3wfe&nJy^cbn=y^QRS=9u7{ImUYk zX_T5{+SE%Qpg}UgZcE~ybPt3R;0bN;J90d_bw?hzkE_L+Bvvo1yB*-8j*uI46gMyAjmZn~4z12vQ2On6m zpWJcXnCXn+oCp`6e%PROOXtV+128m<%umD$nmcYwmOYfoCk^FWhq+>gP-9fLw(=M4 zBY|LVhXBXsTWZv^S1^{3%o;v}_oJTloa>1!cv!M+w|Y5nvr?Rj3Og_;nH2qf9~KT7 zpBMXO7_+(-C|`Zw9m@&HDJCH6`+8{(yQzq&&-;wxmFKA2sZ4VTe$mjZ3z-F%JKNBq zNWk2yktK#kC@u^eNhVh5ZiKR|UO+OKiFs5(I4N_)45bF|Ky_N+KRygljA?Y_;R!q3 z*DNP2ote1n#J8!gpdf+UAj1cICb6Nc^ILA@Q~SuDYF&9P-I{J67HqiDpkE_-ga1Of zi2R^w@9}rQ{^4c6*;&kSt1r+{>UVGIQg<|klMsSHba6zSj#urtw)oNhW##&dmFz(n z;CUNfQ@tFicEmXpdrIgwhD9IQL1e(SX*Nv;%cn|Z`axxQUV7dvHoFwtMQcRv`dRAD zxby1RdX+!5%$26=URn6cdExXLADrr5&YAXcU23q_`5=z}b|}1qW^Z+LVrh>Jvj)Tv z@!`Myx3)z+YC4};dlgrj$%n*yuJ0FYCI~VUH`uv2p08BVr*DGmwTsr5G7}f4-=QAV zDOPGi-P{7`g9PF{{Sim}w;(?*ApUQ<1B4k**32@Kv*-Anf}~?Jbg1Yf91YRSwwmpW^$Vw;5O}OW92cdkIGY%Xwcl+_tWnUR(`nPk}+pLEK20>R3I6izc zAOG;Zw%>ej1IS-_-PRmCICX{{jEX;=oA(WKo4Y+V?Ms*VxlV+ep@+ot zg?_S^16PaKQ!(Kw_D~|@|G*arV>(nHWT>s;*-5j*@2)Jf2@78~EN^0)uRB_wD-`)M zJaF4yHeF@^1O!_i6zCxlQAh`TML#!L`Xe1F%^&Rt*%@^Vgz=-5be`zO+ISDT^V_}w zn0+4H>rPaMYT>XlX!jP>uZs_X-k68fedCnpfLTG{vc4lGWL{Dpwwcnnee`onZIsG~ZzMY|y!o zdr=eY$rV3o?|fqA@p z`iO#9!NueO^97s3>T7Ev2c8+3v^IgDHJUCdR0HfpgkHcqlsW|N3(8hd98u*PAox8W z;h(|AxrTzA4r@}dwM?I|M5Ssn=@%Ji#zi}#Z{EmrpBb1pEEeG1->G!-xMRj+iDWFv zynQG%1Zsqafod;%!7H*2MgB81lAZ2EF1(z3`u37GlBTy8he z%i_AXb{^YL?Yj;yg;HaPcGJCI08BUEHOx(}B$f9xq(7R9@3G4Ck*F$zJpn~jhcyt= ze~92f4<>0Gb%v`ZUpe*?E509sRf5;dQ|%C_N|xgV?^MgBmU(vRE!>Edx%&Q(N&+}p zGMh_sv1MM0$j#QB(x;15@glB?VRVY2=TS!DhF-oTOg>w4`EEul(d1?oZxO7AMOGZr z9WU%N$A|P}&fOataE{^aKyW!lzDq>L;p~HZHT3VEq_PW^5_W zQffSLG7Mi{?c|>h_9{dL_IWadjz*vAEk(p5DD$|943uPNDz14RrPnVYPM3Oi>$s2; zBYW|GbmJZ0!rfBN{)D}ZvoX+-$JGAO&@_rBtR1n#6?@f!-z8ie{o3mc23ZD$B;hXC zv(L5eKC50E=wkovgFo_kF-0gXd8#r+0M1F%pnAzimf;!28%_FIK9&WWOZnWg5SR@i z(fz9j()SglG=3B^%eSo!u)0D|a~e4WIps;Dv4exdSn;ZQ$OW9Tv?~-~gWQSh_hDBx zL#Y{%3sFuZ;4n zZV?lwDA5-=P6^NQEoG2RI*jGld{rw<0W*|(P6=OI9h(}F!*EKNt17|yak{jCU@0`F zGYra;Wv7jW0;F`lGIIv+ z&Q-T=f`he#Cgmz0b(f{v_nC2-{=fP6l6TXOPR96IbjDxwynq;k)`e=k5&kzTTO;htgB;MKC{Ux1HAV{2;Zu$_| zN;<@MFUGC8Q_$W0(OhDjM^?EMYU{<_YZRNkK^Y-Ej!FCONiWG3f0AUw=V;VKnD!_LC2bo4*6ay|}YY64%v6aU*~{=DZs ztv8*3G(-#@7G;pclhlk$2^VAFW=LiH(fb8|lZRh>xMlB49Inm;Ok&0jWIH>p&!cS&)N@ z5R_878wEt96q_>geyODAsev`LMCIJw96mp$HJ{2lgesGvjv74GgeR_|;2~z#f zn=uy*#j;^DM97lV9?~lc?>?G>bu4h0#NL#=AropBMGu0>$bZ;;e}zsl{*JsVNxpT_ zV^k_{CfvIGW{syNBkqmY^ylwl5=)QPO`E1Xjk0LqGY{XS0t*+SC*mA)Z4z>jeB0lB z-{FCXfwb2fC8qL5sWpb_R+a4L)lR0MIjhefMc>4UULlZ@l72Azd}Kr`fPKP+0!X+v zQ2{xI^g$MVgmGZ56Q881hYoTsetcrbG6&j_K(?J%)O(93k#Z8K(a3c}btl+X`tM+w zuDXn1!GcI6u9~1R9oE-~N<*P%2FxY>x2{XMAB(XZd(F9`y~l00(gFx8rhmb4@0SI)&~nAc5ZkES8WIR0plZ<6)rIM zrhI2Ju$-^mnQ)@mHV|_^Pij#BC32**fnIck~<9i}u4LO43Z&^*c>I zmsNT_qHSr<18Jgu9oHiTr0SEtq@+v7kEhj($waU7prqqHMa=RM8!%PU1aBoY!z<_WR zsfU&F`?VRSl>P9?RSLcS8CMqZbd*VsJCf2uoUI{ylM3=lMP&p*d#`9<3ttQap^RF} z*!*m|cQziMsD6n!j*N)TdvUx}8*FWN#wK#oiYPevT7S50t-H1Ay|P!WYEa45Z#Zm4 zCf$<+Q&b$N;ObwU6e-EZxu%$ypf$K3h%0_CfS*%&uBsN_kAK6j-j;|at+mWD zGn%ZJ7r{U8M%bfsRPsD-568CuRB!U^kj|tmRFw75;(jy7-_V$!=cg-2ZiTB{J}`e$ zIP?|0kBfBK&g!!g6CTDhFRGU~{l+{MPBS-$Ku{wi=N?a2oG{!ltgF+rJR}7oi^LcZ z@8=m(J!zzG`W9WN>`Nev1vRkd%Vzw}iSKG}wxC?LYvZRlS#d5by0 zoJ@0$hqa5Vx^2TOwMB{Y$*@&oQ*{TPTU5KLzbmp>=-8s!zmG0E=efkCP z2j^g*sj^AGDDwjYrYvGxXVuxF3H$||2NV2z80-E4W0oHBLx6f@{?bVtd64Ov8uB0EAS zGAm+7CnxY#B~;>GfNxlfSV1a2|5SSP&U@!;pjX|LGh=HRQB%W9qNZoYdR;M>mGuu6+q3K1f=EdwL*xRx zq{4}y%gn7GD(hDLq{2U%r3XZKcT75Lc+@^k_i5bsSZ1$tw(;YwnRd~2854dxbbz%d z38-DI6H0k*d8guww;)aR&bwtYzOrjB)}5gZxD36V3eW zM9-75_X*}UyyUU>#vM*lw-Q3^&+gER7-(|pbr2jIFdwrHzk@K^l9rac&5StkDIag~ zJlPy}UL6QWbN(Ys37j@aFjc$d!4E_mc6mwNOYkM@t%rAq&lZ4)@oVz(IQU(eb`qI@ zT?nZW-t7x;YZ+vay(a3Ydo8xV)qk!E(Y-eJiPF=C`aZ|F+1E`i7)mqE?=_{m?abrx zuI4`(JF=ardw;kd8n(=s&YAs1$7p0qwev7O?gMSJ^j`R_YV6|GS-CL(QhAGUZLKJ| zv_Uc~z+^*Hb8QDTu1C4hog`RqFzH~;G3}HRIiZ$XxdcC+>REoR7I&kIKAC_P9B*z> z5%w?;l0n9<8XW1KfH1{;`jBR$*odzuaYpD!8q4kL%uak_Ua9Nb#*w9vvy+(2%V=cN z0>m1OVClKa5%Zp2K83wuTdsmsf*OSxQ~A^gwy{@{c!ey%>OJhU_9t3&JFJLml1Vi( zC$rk=$Xa)YksBwA#LAvS1JuAu86yM7D!XXy3F*Lk&1hE1896}h?ApOZcfU@UGo)X( z7)E)zah><-`8QQfg1!ih?KpBzG0S2r>qov#AH5r#1pj1Y6lWW_U~Z>GJKD(j?)D9B znTrRa%jfw4A7r#jlHn=4aP@)N@$x!ho9*^Sx`-A1F?)+puH;8dso{-8;+0@sJhZ!J zgDI!%Y-na}+$Qb}%v9-KjYUXHzESPzMoK1?=8u zt50KG1~hVMWU;MHqhS*9HQ|u!<29c2+M}~Za6Qwm=sCj0k63>93waY3xPsKR$|QRn zgG246RpJwGfT=-Wpy}~R7D_m{DSVI|fuw9@SnGgxdkS`qkKv`Fd)xO?bOoN6gd>a{ za2AeeJFWFM!CmGrrJu^(PslFMD!+NRMebGKy`$pN`5dy=38pBUcSaRNc65%lx7cbQ zzEv^!8tK78Gw)Q8(U%xbNMP8!dYgIL*k>+_#;1f{Mn<(d?K+RP|07-+cd=Z=GAF*cSPQDSl#b@WYD|!_)DW8znd{R zE^a?KHh#7*oq?9t=+&H4Q-WSR5j5=8h)Z*}ubf+#b9YW8E-0>6#DaV*%3o!Ax$M)T zp%_Tx3C!OD>r(k)+tE~MxOq61a70bd=1oEgK;1??;Ww|U3-f70*Q*)@fefhK5S?ijP=eh6@lT9fO4X77CxX&{~(TWv7z1N=X+FsW3%FC&V@F z)Ch~q1~Lc+?YK6$H`JqKl5;3IWJl~`Xbi7qD`A5@4g`ac*@j=4 zv@+<8YYtk*WW%eTeQ?3J6=q8r_FU(NNr}Md~0=xPw$l76!)1;YGPN(y7vcjNSY^Kqu|^1F&J*3ejEx`F6YfA-o2LW~SQwB9tfjgHaJ*Oq64(DN(Z)Mz695El7PWJg z@lIctTHjnE37RW%?9p}Dm=aG{nQ5m>>I`VI=5yMl$XE9VHb%?4U)K^5YgDsRo_F+W~;1%VyrDYO;Q%T%X)1T1YJ+dIuMI!sC58M*4c&brqq z>G2(A_d38k_wFfu+L_1~%wFmmmsJVF7pnK`Feg}_YOf5LEx1`;UfMCsRhyGk54~Y< z3)zS=pN~f7s*EY0hhF3o=s~w*_DlAkE7{VH5G8cl2E7=BfC zi{-EZk{3UhZ9BH2za{oMPn_dEHp4tR79Ld-zSIlGai^vk2pV?Nz<`;?{c0-{8{H>y zooHpg?YE$a9Kmg&XkQB}{uqn>dv3|DuCG52b%Q%1V;vGzfmNi*plR*i+SyW9;Bm#EPQnl}DlPaUAWu$b5 z-MM2-zgjLxaBEU)<`O+(IFOJTjXFt>AdcoA)MnxjP<`Q^L{*LMxZH7gZFqyhGOoCm zi*QyTRwp8m5&YO(YGNTe#wt7%tA?51<0*pe5%#Ouw~X`8mHX=MmK5(g$|+**$REAT ze%T(hb;G+=AgW_ex>U=^#iq_T2ys}E7)*}lr0cbDRP+WPexA#?(b^^*c`{D#SINcR z(mc;a$O`A|XOXw(9LmUmR$5s850dJb0?jHMV<;RGh8)}(={oXEL1(v3;y-bRHAfOKA8S2LGz-{S^#1CDf} z_2$Yu6|srIMj#t8(l?%~6vc$Iin3RJwtjgJ#npw3+;Xa({D5iG^}aXhi@z!~$|Ap~ z@lI;0vv`TqKDfJDP9H{YxMOXcb?l?Qd8==1c%{v{NE7T>_e3Y8qu6pvH)oKTweG0J z?Q3b$JCMK1GM$$q(*6hf$NaFR&!1hj$ z4*UT)*NJtcEf4myUb0ue*yc)oo(ce4K1*uQw&cZ>ZMX&+Unr)}T1Vp89_8As?E$)~2LsIHMG9sqd$Q5k&hi$WV;3F~EI_x#1rju9RK zhzaMThJ9KY+1lPW>M*5T-mKv`E@JuRz*S3l?7hh&&DzN{P_AkrF911LET!J3(e0zk zURkGUUySWKaZZr7x^|(}qCgI!tW{Y{M@(bIA>n~|Jkeg@3*+>np_H+Wo$)-6bahOF zwaD$qGNup0PNgs~tqO%yT|_o_4B@gHpr)g`>XQw+r%6b{cP}1N<$l9E2TtsH)Qhv) z$UwIIrM_w|ND#;uRTGqRJkqlRVwPMW^9zL5NKJZRYc-X+odepdqzu>7FT*7x$<^YN%ZW}S zIM@k8_Y~BKK0ouZrM28>WI{w(Y`R(v}O?}IVc zE%68r@d(BaW8i2}ipsD6)PYtGwbgaX<&DW5IwFS|ifO}#KG$VT8uyv$9;JE1F(IUJ zGD8Pts$q9ZGi+9@A8NDdJ- zbx8-S6b@D;kfgB9ep%{YohnbFAhcSZ&t6w~2~<;T`?>1A`!axi=$4o~L#dF!FFB1) zws}&wafYchW--SD!sKb$=i^qMQtzNI=SWa^p-st2C3BU~D0Y>+KX>_a)ogp(Exmy9 z0)4H_AyB67hzpPCC$oy6jQIWPj+M)U!FLI;yc*LOu%fgIlCJ2P_)z9sIU~1QgIgWf znyhsuzn&Cs;C6Uy=3B0M)R$%^-J)nUCTV+TtwYk*Wg*A{60BHj3)j^OuqKJJsg$S$ zSLIE)Oc~X8Zk+WV9S()jRRz0`C6sSfY1Bp+zosPaqJ<|im4gIR^L2YlW|!CUDqMmo z%1NUwddCZNcQy<#e2n-9P8n%mi9KaT_LrR}z<#)W+b_DO{JlA-j?`Vr({t8(zCO zHQk`8r|O1-4D2p}{KV?VPvb|;_IT)R{%aQY9iGD@F8(%?k9knnJ~|aM-z?bJ2nu^1 zHC3GSu(ZqE5>frqR;Qk$0;*NOOrHjZ@eie85cVYLPrX}l9$Mqw$s4m=oU!!qM?KoN z>gmwE($L&e>Rq47o#sm^Utp$Xp7c4Rv>sIM!`t@GzLrL^9LIg0^Y}wyy;1L+=g~*1 z<2CW%&5pBU(wZ4=R_z_f9QBo$S7j6(`JnuAa@a@X=W=oiJ6nn#79FF@b4H6ud{vh2 zECX&^#XIpy1-8~u)hj`BD;4=G5i00;aHET7`Ouy7<1ndh<#j9pT;*?vHLDZ#!AHV7 zCZW`nK?dt*ohNPw;^egQs@pym8a%K-wev$8r}fe#aZ{BK3pPFR?^iEjt~Q93-)@2H zUZd&^BL-rNJD={foS<6TKU6nbzR?o@QdcUa62#q=;xP9-;n8@#!9%R}g_AsJ40n-M zDB;-DT>jLV;{jp)F|)_?(b+WxS6>&B@`C04x6ykl&2V1}LRNW4pAxa;_l)b#_`Ia| zT2UX@B%#+GXd!tl3{Q!Zlsh%SbcgV#)Ws`R(!g5I7{{r>_qdgqTz4I7pSuZ5!$EX@ z`k?$*rp(o(FY@cghGW}$I;{;gw*0z92{UewpLLZ^R}hpw|@~gvc^ia0%Wo7s)YEaM@e;SNaQ8^R5paYWE=xm8N2e^?(on|46`nTI7m}V-P7U3C7?Rp- zhrbN>jDoulxlC8P=tSNwP%lD$pT7+c8mj1qE8~{Q)|SAn4EN#Mi?^jPTH+tx8|QC1 z(X-Mi5vxnkip+>xbX5QgbsVgpjPGm{+H~};I5(}VBR_F)(eDphJDT)l1;N5qY7Uu2 z-ec(==pzM@-D?FP<=!}5dz?CAwkcS@Z#3>?957KWrA}`3*1yWM&D`Its&-&t4R?Y? z7nGNEysCJ1@7!uU-ZdIrz6xNswO$f2!o zH74va>aW9+a2DSJ=W}@_68QwgSRXvPQly_+`*(ZSB9X|4&bI{3WrfixYbqY46v;rDUHtqZ9)xG;CY=V0uB7j~PhFK?nEZyNMo>rOqEWPPiUX$g? zA}fSc@TpX-Ls$J=Q?PJTQ!uH~{sCK0)vk*}FpjF_bGPNwmsLw!q{(?BW+6R8mJJ%?mixcBajLZ)+YK@8(WU2^Eibv^r-as zSmAy?yCRDLCcJW2d{bVz)XH#TJAWz8JWQB!x153{3GuecF-v6cO{$NmTpI2Lys=!j zkDQvgR0nc|SVQ8>;fCw7iv5I7i63ecOTgQ+Yy51pdm=oujaEl{Ry{i#ZkJC#tDNnf z?z~R-DS@KwqAlL3NY<${$0*J#Qaz6Rcks5n{>t9`Z6W7vd$|8f#oI;#>rkLH{>hm@ z)X*tzR(%rRWGcoxx_r2=$_EWupu*fF-V0$gLAe-}$2E5JWGo>IrAIGo+H$G=Kvrj0 zooXmworr7bCQV%VEoGuY#j+ryQaKSXDVR~4(MoTOT^ZTy9a88rBdcH>Ok$!~QKbpI zv#gtUi+Q2og9AFLt%f+B7HfBcaCe>eFguUHcy0ZyiqrSP9&3)Lyt`7g@7>xSZp`m# z2iYZwSWR2)@A1~1URPDctvSY@YUxdF<8%2!q$spS^!Rw2s^~J{OT3ypB8?U0{anl~?8i)p4f_Q;bXVg2OQ9IV=?Ke0$?^e^DhnY))Ddnr`UW`PYIj>-s_5OV2e~&k)o;RC=yF-vBdKdSC|NtG`wtR3q_~@ELRaCs;V7PA zhH*66lxs_9ORmHQ%>0%Rjl|nFQR7g3Y-{~2o}(yRp48{ifsK?5*Akro_(0QhQ`@T~4apGP^&?z2)pU z-3qP`B=;DLL(1w_=+ElPcR4P2E85t1dOwwvPFo>|i)yYKna|qBI?$z1IzdHtrqZvi zM~;=jBD2+IStUX>DhKabOWR6$BG${{nRRn5Gqhdoa6$t{ZNrr<){MzmOl z=L}po56X0`bdb)hc#kK2Zrld?ntiNQZA`(cOYmHlr*cWc3d&*Cx!D)oigo_3xp;LoW6D6?v?IF)r471tbT9+&fQ^3 zvdQ7Gk7U~^9z(k2d8_pm3!g-$UCtk@8Xy=8@wUgsbb=8Sx>@sUG~Ybpt#1$I%k7FD zML{-CA->6c-IfkrNZq`(!_U&&4VoMh7X{*3+9GM|%{a1%qJ>tK3*NcaKJ7tdap(1Io`w~swkw7yIRbD;?LT{*CJ42oJlEr`RV3_wg1;ut<;_cU`9L7 z=W&6e19=7?#Noj0tH4oz&|F9-;Tz!u;!@@|<~S$wpvq*EVP25tqH)RSoee?Q2R___ zY0bWyA!~R*+-Fl)zp_-<%NU276qkdlWSK7HP&VpW!ZHu}$m%_2S(~UhdG;}-&2#gm zN4VnDK6~Al282@=Y-+&$xZ!Ej@qpk|%h`eVlq77TPQT*RZU44zyW`}}oj1(kYDPRK znu&s*CcOq&f_l0#S4+H4k2yXlCRWy%%V}mZhBFT?ec2DgtoVWfeH{0ELny@8zTOV$ zbSrUn%fD;T-NKB*Dh(QQ(Ioek#6@LV2*H%`-}~W4G2*{yld7R|)yR-(SW$4IDM17B%{przI(!upSHAZ}_ zVk1%lw<}#3z{p2Z{y;vL0}QIUmLJj+203_N4?nIxIxJUaVk%(XKbQ+< zeK{t1$SLql%hPdo_fQx&svFgBqXsdCENO2M39@&17_i{uj~hi3>ArOBpuJYB_+&vd zcp+*-(SMED;+myL2hR5Busg4GFxlLi$QOg-M%Gj9?L)cpuVHDO&)3ex6w4pBob)}- zBOq?z%~0R3)Dv9SNr7rPXCAQqBb5pi%d(kcwcN-;Z34ks+uE`p-EFq+gP~D1h%}DY z3kq`DO7HYqdZcUKC0FeK(%mi8xHG!slRs25YMQ4|e#n1U;p)@6vWKWxPX&uk{fn&W z?>~gb6kSVOdZQ3sc^C`PhvsHH>a^b1Dc@@E5&BeKvwPyXCA?m z?szwKb~0HjHa_aejD~GIdYWMeM`s5jf65jo>A2I|d`ns{9|Cppa~0X`U56#Q&9Vc( zizPiyUQiu5_3D)8uk8EI5%jAPmcMwsQ`$NI5I4-fB+Ffc)l_O)z(u(<+%y&vvA|tp zE_Ag2=!&Nk#-uAocUi|isg}1kf1duNxs>rICM9=YQ!A_;u?bUw1do<^uhZ_-o;+ph zmG%C;kMrn-kWcLBg%>p?6cWw&t)|ACNxlfo;{9x7gujnkhZOS4v0Q3?mI+{aao|u@57gg>#ML3tuE#O~p?kQE*jYL23EnW9T7>A2%nz*2BI4mb8aR7-vo-AK zXY1EV>T!kbuqXLYq{nh0nd-gdZ@gyIawcofw6v#j`jTk`6DGG-1rH}2&n_zpAM%}h zK_o6EA=9BuInhjHTaTB+Oko$}gHWyishWq=BoCfO3vn`h4g}3W4QJ30->1T-ctbTq zM6j5=G9pHF6%AN|HA&#yDz>~XV~ZyLn?XN9=HzX#QCmRMAXE=}?S68!^pKveu%+9Y zzw@b(v9TOiON$z=57ZhCdLy|U4aLdXhvcy+k&Xkn;z2UUrUy|Th73Q^E?t;w#= z>WsO`swf)&i|2&ZUSZRg8q`64nh8@$&pbha94=gbQ)i3M-ZWCp!RcSCx3nCe96^+1gHT=J@HQik znN?c^rKt#c4AYTW6})Q0LGCI+rN_C?h^n8Ba9euXvwLsSWSotgdxWq)58e8R7titE zp9@^$d>%L&qOy#4|9edmm4ZIVT0&rI6t8EWt#!KMnvZ_6VEcp6=fkyM;Q>Lxp{xYa zx!p5WECgaeK~mOQJr+mHr;n!o7;zSjbH)Wzs=5P}ausfP)6OHEpH~eNMqFTHr$h7# z8iTuo58ATr^+K|Am<%V_pQ+~v{D@%jyTpp-h}M66bjv?;+hue!9r?jZhkX+ z>W?a9bpIn^Y_~1yY%t!sNEC+Aev)>r(&bGdd=(-qNr$xrg<(Y|#??(o^gj}0k$MGb zw5C6lIavzJ0!O6V%P?tn?pCYSNNu9q3-}_n!Q;M`SgF0A&NM$ZQJZi^^gG(L-VyzM#5ATui-_Eiiic^7`3~ zN>ScDGqq4^QcV#UCFZ7^M&uQgemKD{n-s%khpTIbQ&(^HEyl8U(NhKxV(GW+adZxt z-78*IH3A)vigRaxpk51Kf|`yG7Yph1l2V<;t)8ON^(eF8JMEeCvU9jCEF{(KKzioB zQXL)a*YDCz5JRR8OAx+WEKTzRo%$l5!AG`7jw^SQEJ}#s(R=A4SL2&d=l<=kLn$E^!pZPIsl{#&; z>Zi+%3YnL%=kDqZEPY9@YG-v;)o4M-Lysp5R}oCH_=ogEJ4^7R;}S#}AYN0K_e}FW zDdhW;eZr;yhjSf`gx@V%s`On8R#edthoE4G>*<(lbbR!x`{83$!t%4v`ApBWu&m>! zT?@F1$1Xb+K&vCQcv}lxMj*rQsuacwB(Glv>KU-{PiRiW*{#OlsB8C=*QT9b@09i; z73Tp-AzE!HlgC1b?eXB2)hRC@*d=PuS2%6PImYzWg~SNKIGVy_hE+-SpzMXU^}Nqs;uJ0K`$f77Koz zI~2Me#AiBFp}UW1OGiz1i%f57y;kV-)0`$OCNXjSp*WfXish$0bVaJgPD6viLPwH7 zTYM;%mUQd87=^mr-h1e!h~+wrhto1T+>}kxd2FFQ0b5$vp; z7?w3}9Q&|#Z*TSQJRIK(4t_mVnuMXTBQZ`vq`WG?CRtHLB9t&TCzD8`+g&Y5IUFV0rnCC@9Ugm0N7I4!IdbJlwS!#%))+hN3oA11-WkQ*4 z8-SYILo^-{Aitnm6xACKfta%T4ZK7`U(Ir$XB)@sATVQTD( zZR}3}wf%br&M77jWC;X$f(q7JgzRgMPOI#zXovjtsU;l^J__V^eKM8giq$)_mCgS; ztJoG>xTq_br|-1@H@Xve|Q!| zoh%^eJy-Q4yzV2Ly^o}bIu&vwkubJE zs;zl|DD=yRsD_sIV>I{V_XJW5aJF^m%?i*Q-$^4#*eZLzGytcqx1#Ts^+UbRg%PD# z&|BlIsIGbN1OAQO!xy4$w#6aR$UO4AaIV7w*3NV3H~MkvE(Vp?MQUGLeP>JZk);}3 zq2R4Ba{vy@_I=oFaqWY6)@$X^7@aTIL=Eltc{AgV_butbZKBAwwu6#A%rxOwa}3nY zlN6ri#=k!n!rxAHd9fcO%iFY?;1Y|$!{hDZ8x$>h@rL%u_shi{h|1H?T|%dUg(nsp zb1$!v%>&mXf%33_6?t&z8J^X-kGt>t7qxCyvbvq$WU8tJTM%v@HQ*r8mCaSCZIhw5 z4h`Lyv`xq@!L#Kjzyyv4Wn7=X29EqMwFJW5Q?!Pq++KpK1$Ka94Sj4l+nU2#TsB0D zS}*>()JYPeI`*}SMK6!^L*%+)kzAnI^T6V)8QNo|d#&&4n|>LK{Iu3Ls_?ZqGBES9 z`HdPHjxQ9^CG*s z>};Wb&!oz>hN(mEue?U^AAyZ|i(1C`7D;ZNe}ZeznmRj`DoOqyogGjP&3Pi&0o!k7 zaf&Og#X1M8|42QG=yZanu9pxi{MWcDx~mj^9XZ0uV+I8jbdl~hLET3Jx%d`x%D%+&3~Hu{8~S9CxCd|3F9Z@-2Cvh4L%Zp1FarYx63s7ntjSEXSF zB&IC~GanN_HppTnTx878{6Vm}AV9*`g7e7R!6RAs?6xkujLVc$mHB!gS@@5|2-sUz zZH!j~49GcI`opVEY)VmX)6^KG~eeacTS8(H^u`~eAq`PWL3KE6QpT*5zVDP&qhv*Lb}M z`QkJZ;~TEqrv}p*U8oAXD0bUfIgZ1qY#!7+TiT`{Po;w@-C#EuU$Z<6@PHyN8!#_4 zoL}V2Fue$+R#flq?mj}wvpq`G)Cl|5D7EuoU6@x_7J=(7o@vssD*Z%*F9`ea`LFP0 z?>=s(k1%}|ZuYCjD;w&roBb84<`)F=CvY?I<}Ae>YZKy<9mp&H>SV%Zw+UDQmvQIG zzyqE}G98QsiKxGqgTK!Wmv&kesu9NY#+DN=9g}ACo#NvQONTm%HBtu8$^Quuu{F)@ z37RsEylA798!bDQ-mJ;{HS{*Ye4(v!tZa2lYIRT0d!$uY)|X79qD+HV;)9P3Jm7AHy+DKRmezj&AH*Uj4IHVfwBXWH!^hvKMiR4n`T6!n<=W*d}#k)E$TyR7^;a52LC48 z6S&BZQ+u&*rC?Kx{e_r}EPui#7iwYQUI@n69L!op1YDbkF-na8=C*HKmVSFbSzkP1 z^HYN}!nF6v)_ZREu}Pm9t1FJFa!1{WDlo2(=9P$i2wNjygN#eq&oUwS7u{wF(!v-OL2mfngOmuTLymsQ z7dH;tM{8!wV?WXE<+J{nEi&oU*vc^d`49L3vk^*R!dtg-60O#7%Rh}sF@Wz2YI$8# z#6Fs``+i$NFVU1WeKd2{CR#ly!g6PAZHk|~%t?7mb|TkSR?|xT91TcHj@X*au1MfZ z1L?H%+v_vDH8iCxp^1TV%$u(=lwOHMEn8A__r_uPbG1y7&mlJ&;TT_Zz|BrqiK$sYH}x8vGoz6}6PZu-2cPjx3J7QL z;4I(4eW?#a{bX!oON9Bok7|W`@<*I6dz4x%uFT<*~l#3F%o9 z_LxQ*RD`*w;B|rL54eZ36<46_aT2w&kP^+20<%Tqi@q<>iGE>@bUFjue=R3fxsb+< zI%}d*%t+#Dr?=WQwqh1((BPWF-Tm7w2NyqP=n`Eq_T+$vW4pslMC3N-`4l|Fgkt7BO~W@;=w&bgh)UG6Op zHvdpwu>n8~I#;n9uaAHn@6_Fs8_D% zf~oGo_?PvM?`L`H>(b2ywK(FC-|UT_u|7QI)4$#G69u07Dui%+nm$VmTvV5%NJgat z;Y}ik#F~0A2E6Pg1WIVi)K_Q~@4&D}A8J>Jk{M)#eEZ7qbacWr+CiI|vyOtM1n@H18gEEzCM;@gi4cmS%WuEyXtG$OnNN+{ zNp_!*y&B9JyRCY$ona8e$$gYPAS%?`fDdumO1?(czxS@nHjr%r;>Fkg zWV$?VdSMkGIczq%U++xVXt!;!kH6k~lP;hsWdJ zzYs8zj(C4mSB@Y_)zKW>n4xKLkNJJKvway|Es=y<6iXhWpFbT22h+@DBAi+VR|_M3 zv3>MD&y|^MJ7#YB{^loxXNKeLye0peM9dy(xxuuFC$%FXfc#pd%sFf8D3VS%(t!M?f=mTW;|` zx~+frBvAf+0|))eoGbd`2#|Tgzv)2AN5hGO+muWab{Sf|Owt`h>xvGKfw)?gvsgT7 zaw*+-IBs;H+MxOG$q&(L&e?y;bID(c2zQ_y=8}@4tPPi@+`+qF&j6fiBcC<2Od%&(i3cZ3sJ-H7b~5xAtFw}3dE{n ze6A%gY@id&M@0LyMyyO}HcvNa+Jb2$2-BOm2z{}QKA5TCXzo-|$MMvt2x|#$p=wud zZg{v;y3pSN@=*+}hK@6oe$zSP{>-HN(v%sF#-`-m6b$xWS8$BNVJ@6*L+# z0tH>6L94!}GTD2a-h^(?SVSM%oMiv8>%?9@psYAz7wYSLUhyIo6?N*}XuokVB{+S;@GGmHwqh1@Su3GzLeGv`~GyLnwd z@#puIG<1PKa5CZJ5^3veU62FZ9aYZm#~v_S`l&R^0MqO9fH|dfN1(#+u$IL1kvaKg zapzW^FB@Y`t6-*2if4MH_bedI>xW&1?RN-k)dwU#(zy7K9;!cUFwHaVer&=A%ZvY8q5qhv&*xI!Z*`ZdAqmfTX(lw z)mXEhT40sd@qu!o-6Km@0|(1O9>uDyP9}1L;19|ABJB1*HR_ZA5~HsuqmpIPex2|W zgGY0gkQNtjn@AA!>ZRy&i+oKms~DrbD&1Pu)ZBR*Q)E`sZ6 zK9UV?)Ao!!@|pc()Zi){+_mI|yIDy}Q)b9C_RSt*q8NmTEv>PKdH}gPywS{TMk-KA zYr?!UNnlz{t9wrxcWM3RT#LxUyvZ?drgBczx${Erwh zp5E`{^dBE8h!Lu%OM%bdx}hJ8vgC^`kY+2X3E9E8pV?>PhS0;D#S*nLUog|Qd1ZFr z=B&1_k-twbv8Y?)PzmEDVsWaO5)(|{6uu_*agXc6^a*yX4My8JEl4(+EmxWBWf+sg zX=Zy}|H{qMa*7H0=0T```1WnS^gbH){PCwr?sk!zy&?94W0rfEym(@2`Oyzjd0_>* zbzzW`+;nW(>PLj6O*iH#oAHq2+o=)2a~^*_Z_a5=m>uQAIw*}OV>;GXWR7-nO)kNs z4U=Zv#-kvIT!{#B6E03*WYfqpH+^&ND#<0K(N4Xr>2lPG)YtE=n$D<|9B)30{>_QXaQHbA6ukyRLXmc1b_&*=M-}uZg8|AbYh#( zWtE;~f!HWgxs~8}ire$p7g;xT#YD6gOAOJj z?U4xRM7xaly?i}CayHs#Yt$Hp&j3tU%0iiGB_j zH-?ZD;G@UQ|M4pH!Dz@0iW?JIEG!vFx7F|9uOsZ{%Eth222|(-S58||DpO>+c1A8-T_QJ2csdQCgQZCiirA<5^s$7x4ki1hwe(2S>2x6dlpd!F@8Kka zSd?SQx>thFD5hmvztbAhz3yT6S3YM4Z-#~$bmXeBBp}vFC@9xgsEB-|-cMzWGf2yYz#7d}UnF+96IYzxxBA*^yMcGV(^7y2F%6k( zmHtYoeIben)2`Eu6Gizlxt@^Kxpe9gzK8H3&)GgnNfkTw&&X9RBKYabUt@@AtUwPaRl^cD<(##7R@iMq~%nz+TN{_ z@CAvE(6jQ=CL%SW!MOM??EY-hkKF@2dtntKR&eV@5%NTC!ftCVCg&;b!$zt>60q!; ztxoy*;fmB_%wk=UdtyJNwy z7a}0@z>cJF^DIV^?o@Ml)oCYj6f9afjc9zXoVeDpnvbrKSUan9iPh&spDv6Uf11#u z&TVu&Wp+}|r>MRTB;&io<)|H1Y|)#J^9!pRVtO)THz7RZmhJe@*T#oF)uE!9&d~-- zp=D*(_S#1GF!djcsT=uxO>>e|;38c3*8>V32f>>_mcdEDedPFikiO$?Mg<=aRYaK-W25znZ- zr%}yzNlub?iSNZ{xVxOHhpkm;6`r88J|adC7K5jy-E40heY4OlK3@<))4^z8#^$ zbqk>~eaE9SslF*5K#N{+?ib@dTO*7-zidJ7Mk`hbty?UY;s_`o(z0a594urczE}3$t!6q`SIq9W zy{VJU-({x0aA%5v&m)_odUa*LGtaBVM})WGGqQ!uzP3N01X*~-qb?uZYo+U-6r6t0 zW>B~J+CKTlK7QOaYSTk91L`Wb?>Dc8XD~GIBG9{>W>bKXM-#Bg(rkd%e80_0z~1uP z?FSmrl2vMb?`LIa$vRvdXpF)g9WO(S&P+VFPC*WLOvA;U-sd2ce(yip0YR1*CR|SK za|Ang%bP+~x#A=-H=T}sr3Qn=2&=Wb$z9jINrY~38TWp0(5v!ZlA z;Cc0=^X!lbC;L^(|GG_(yXmY{*E3AvZBmOhS!Ii;DyGKD5`3@$HM=9Z)}>(0WzSB% z?yJ=Ueq#t);(i49Duf>W=Vucn?V4+{@nDopq-OlfIqCZ|CQh8O`m%8r-2A<~bNzyu z&ZmQas!eVoUGXUV2}iJnhi*YtU&k2+tdBHNQ56ww$ylYpi`y4C*tPw*XFbUxc|YVq z{a_?1X6Ig_YF9PI{x3Jufo0I%n?NfY|EuY&F+U6~QLey#*$~2A(Y%?ox6qWq7t7~# zlcqGEH_qUvH?t38T9wl`W*k(rPRY>r;IQ(3Lsn`WCi_*df?)1sLs z#-k79`aS0p|CNBEfKIM9>r)-Y7Cu)Dz)c$ABWreWy|yXX+%m_q@<2|Nl5y%_; zxt=eNY2#$lXl*lN2|j6+Uof;qK!LEVe7>7GiR$ERnKZ8O>Kq|`3LaUL_$nGZ#G@CS z`75eiJXE!M<1nQ*YTmuO-NUU;*<0Ykirdh%{Ls@TU`RUgWMJ$zP3X^`jQnxcg)GY5 zzrTDLM}6J$y0810lm%G&n7@Yk&aNaVy>-p50A#x<31@@H4#e?k0s|ER5jW#p)Bz!= z8t4H}z)#N~$d)&M5FR`(hG@td>F1FjBX%$gs-ORvB;Rt&Q4SM%KI&r^lcq{=0}AWA~TY$9|6J zDlF5_^PW;p61<(H9xPPMR{FpY`kgh)dcNrM7qIv@FCT#pMKmE$=<`;Dc$ zd1sT>Zs1Xy+=+QCo*w@gWE~G7iZVBIL)1aFX^wwYX6<$B7Gg+o_jN_k>9gi*Fh18T zje5NIBIl>3XH03w7eXydqKoKIi{Ihqn6;G)XfeC5*U&adXP)f*fAdi@dktDFKqy7P z9(K(3DByG|XAdt%9ZPEQab{~lS(a%-;i}y>5Mn|OCuqo(aJbePWL@hnHR1R9T$L2@ z-}N82_O|XeHgAP`pdhq4M&90y`dvfL*3M`{=YUc2X3*hQsR#?BUH1`oJWt!4EVI4x zO_G}5b|0hCD3U}mi>I56y5F@6rsUr7nZ5m-i^w7!y)~a2JHfsv$CaYGcg4(K_^NYq zT%R3omi9R~2qz!{Dz=b^{m$=6kH#d$s2f*#6FWDG0t}W zWJIjX!Dz!<-7Uxc;Fs#w8gUoh!G=$Z!b^L4i&)aX|K)ivn+ko>y7P3Lov+U*m@~6j zu}aYTH8ua>)P^5CBMNVBd+IUV#a^^;Irw_5t1_*t`Z0nn1>{sN*}H{@cv`u?`+p{f zIt&(BHl%qtgmIIm+eZQm-u*SX z7Z(v+PeQtRV1){mufE0*Y0aU?Z#$v%&v_NFS3_6eiPH7|{*b76L@w+dtu=?TS-3^E zN!QFQb!|u8?6BTr2Ob^=zVgcxJ^N~ZK6!U(!&9H|aBgcUcv*$-?CnVvj0d2*GZq|x zrq6gdrQzB7J`JARxMO4L`qUGEi4B!DbVM6)LyP}nK1`Y2(OITgf47#zC(W%X8Y)=@ z+Xmr3{)W-m^9H-{r#NWxpj<}Fe~~am^opBu!-SuH>hxTB+_(J4tvrpPhoVR zTG#J-C8;6PbuN^<%lnYk_Ih5INkkT#26}Nf;U>|oJ^F7)hO=C=VfOtYzs6sVr!|DD zvWpSF2@3S0)%y73fGcrKZQJ4Uv_@n0wM7okj=r+z8#{<1JW3sfE^3^);X zvxtHVWqE59sJ$r=V^plt*cvPq2#VkISwm~H^qJY$V`)b{9eVG7oN~{Z(|8yaW$HGy zOnGyZaT%Mk7;|XJUHjsayja1kiBRYQ+H=u2B{I}1yef3hUtjHT$TtBBZoAvM)qh+` zmB^ieb8`8>jNj;4IOc4=t`CT@fpkzdpR;-aAsr4Ce6lWY{dOegCig?8g+~y{Ui`{< zVBg?-6QeE9Ha7;C`O|9^h!zZ>l8$~{|5w5ZEJZ0%FY*Kqkca8b7dwg9JmNLTuV|Ow zdZIEji-9l0_N=c1Jjw;|8b-#~R=m~WjxGs1Zh!PqsirKWI17?!KPq6+LZSi8bs6v} zYj;Pz%DX)_Q?Sq6GMmK%X=5uCQzRky@b&`YhL1p27f8FzucuG2(I}{$y<}z%`Es&g zZl1&}@bvFaT!G!lo(&5@&7{F(st3kE0Y=Ry`9vA%FkU#jqaWP#J^mDvHe9XpoFP^uZXjCDSt!N)Z{wmh~n~yxUFJPXfgEW~W?h34-bU2HZ2-RhT zPLM0Axyp0tiv}?LYLlvliG}RLAG>er1=19C)6&v*@_J$yTtf`+;5jQ>iZbOV&74t| zV;_4-4Svy2mxZWkO8<2iY$&qsyl`y4zeB~TIG8ytc{H!V=G+lC9zy?rF}HKSGlbCQ z8QHUbsXbg5eEtf+k7n=>qd}9uO_PrB`1Y$eL~b&G9Uxh&G2zR`hnQ4_tD)w}Z+}*F zD-&F}EeQrTVjqpVV&vEA8wtxPdbGHKlY*i*%|Zv|y(E?dFcv20*#f+)MJgGGJ9}!? zuz%MjlgcwHSwo|`DyY@VsOadQ_+NKzF>Q%$>l@$J4YqE*#lotd5zw*MnaZ>6*Q$xz z5aeX=^|(8&k$*zcq601u-lg-M(&2Dni^S!T*xIm>qCQmZg8@3&j5~7^AA3KyDZ^z) zplrbsv$I_4V zZS=k(#E(KQ+5(?;UCKPMDf_;C(hEZKB>Donq!)fw_Qa<>4KFg>PLV4(3=B!Q_uEqe zfmI{Rbqy1P+Gs*U)G1h9$@{)|VO)w=_VqajFuQAevV=OjK_ldG68m;u=jrt;gIDe2 zGC-)((;fwQEKyHrb? zAUvZ^(ebxTLRveM^fRYwA=Mhb%RxNF3)U2?Bq=QKEOkcq5LIzT10C{RGefUfo2j3D zFG>ZxS8b}E*xy^OYx`T5+Ox8cdm9w%(*2|swkv~b&X)B8G*U3eHeVhSr0MPc~u-Cx6!qK{F&*n#A7#H{MhjcfA2oRQP{BWdtGMW1rVe7N( z?*g3;oShz7tqG2HVox`QRi0=FHZ*pdbd|>9^YJw1+@mCulymGI^BT|g8m9;f8#wapyhM(d zMbVZdC@-l`Q3R9Kn^HyQ`q%~PTz>)Z$G=wu@j$}j=sB7hZ=fPYn6vj3b_jexswB1`LW z=OLF4PdrX?!J@B2-U!v9J(^7vorUF%Apzfs{XG zS#z9O-^}6d91?X1>18W;t4scb^YlB`DRE-wudpJEe0Ox*25qntn8d!6?lVJl>{}CG zSI=Gn^3Dz8@7fl7&BS{Gjk@WY?4Gh-rq2k!u^bNn7iK{A+N+sfuMi_d!QbWgQMe!i1c+xYF~fAOp>gYx>> z;-bDLsA7PFmlH}KuvimIv8;YBTDx^jd6P@IK6dUG%_@AvZ-AQRJ)K@L_TR}mTnV`8 zI0X34#1b_mEcB5$CyWomyRAO)JTz(tW_h-fc;<07;gXFaFJliep3W|&)?gs$TgL?! zxA>msR=9t;)Qz3*6s~Ca)*FH8zE8T@-in?n81V8Zc5}yRv$E|u`yT!bfG>2i(P|07 z-AGY=x-VO^XkcGI%knlW!OPOxlu=0*c^-paXkJo}8yV;`Az7o;^4pu(gLCWY?O^la zl8@4PeK~K-z+=rk50cF!mgPMt`dCe3IaNBpw+I2RtQtNOgJhdy+Ir`;Dv&p(+A;1| zfJiaQ@d)XH6|X-iHA&r{a*KdzfjJ2WGCCf=0AJN)*v5@^OzBT#D;@%E*^Ya)>NS{? zy>=|Z?RzmF2S=jcH#1by9tna!dVThjVoBG&@KB4I5(F7^1sLWDyK7hAJ&M9|Y1XW5 z3)_kR2Js)R_qv36Z2RX>z5@ZDJKXzAk9(p=m%f1>cYCbPM@E{#+gl^1(J}igegRja zm6Ioe_lK0In!}3)sItX8W88V|DiayX(?HD2Dx~fF>~NzqRQ?A33|I_;U|l?Q5lx1} ztmPPOBS#FV1ZL!%$Whn#hi&Vzmh*Fd2LJ<@OzqE=v)3}pq2Qtj<%SRty1SqPBE>*R zg5<5wKVy3V?=s!Za;ntZ-TTcP^Byxkx^Ci|j0v9ehbR6WFL_I-L#EG;gDV!d|Ccbk@3c<4hghBVV|P$yjhiDet-5xE|uF^GyyB^Av4 z8bu1J%|G#wiXLp0jfR6AOd%f(0SGTosUVMoAbq2Zm@ZChDgEZHLWm8uMuvrYqb~F9S*H zl`d@H$fp1r@v8#UQZouten@4ECNVAs|BYUDz?t&hd*D0}@j4{BC=x}TH|ZP@4Q9n_ zuaS=GNM{UfHj3-y8<+wJk1XoE(<1G^sLsvBzM_MGVuw4_U7IJR$HJu@dB6s}$Z2n! zbCY06 z3R7mH%}yyDv%p=I7kbXS+N^f3jT1Tag7jaYZttUS9MQam7 zN7;;AG1Md-5;Cq$F2k-lrx&V`p(@ux;8D}-4KFUG-=WUxezPACTwNm&lzM292SJL6 zXw?nH@LLG#gs5`7tFiSIsZr=uH_o@lraKZu!n}JoR@5^Bh(C_C8;duk9?k%#%4@!~dOal}Wl)~H8j~;JiZ6CG9zj$* zwZQ|EoE*|^+sr;tQz)p88s!{QpSv!Jb2mf*7sxU2<96r~Qmtz*&jHV9sB_ZKlvQ5_CvZfZVdwskXvOG-6 z-W$@ns=tD;ugaAO4NtH9sa>;eQ%@CftcYQ&!{uLmzbROYD*+|3M07AIOo0He1C>-j zZy75%rEIueL3jtR59q1Y7XFZqFd+@ zPRVWISCb{RK3GO)ce<(^XCDXgGjj*GYT~H`r48-6eitWUuAzxFy=OhD7lVC)2Nv&l zyJssHJhKr;js+CoX_5a-%Ejeg+X1-%=F?Baz6Vj|Roa@a%b!V;!r68$8BCnoE^6AEi6CxG zSjF3e!I7claFc8-qN1yX^RTJb=zx>BfN-srJDI1_KhRBasUHSaZYv|-D7zW_bS*~# zxdsF#HLfY$5STT#caK#o37Jd>wM;6qV(f)t5shD55L+te~k^&T{6|Y z!cDBhz3l*EfF|}AZK8#XbcfBrXOyde2@}{}!>4r4=MeVh@D7>-tR#fXk3AAPpQ*3( z8G3AU+MNfRnjq|R?|U#@5j6bUA|g-{nc_qTT>72vk7dBj>vF(pJCV(R(LWN{0+^>e((j&~2! zi=TBvB#tq3P}Ht*4%(!epR$va%d84S>NPE7uqX2=%~Cb7pG_jUKGzPOb6$>(UsD*gP)Y?r<@4<+iYM=Qcw-S!A zS@oNX}Xi`|+?Pe{Wd(@kA_~~-fEp(1t=G2YOt@eQa z&LJWpk*mdfH?xdKweZkQd|q|j9B z!Vt-Pv&MOpC86T{bMMnB19!^4)q>!c|8w^wq<>;x88w%GDBMk4UGJK+K4L1191|N) zn=Q7YKU95D3tCKT4cFz!uIC{Xa2%PlW6ncQ&bBMvfW|G)ixsW6>oSXXjh7Aievchg zbi%2*^`N)6W8NQ3W^9z6_q9M>1fToX=3@qVz2Qzl93TC8m7gfS+ZuFeh;g74A3_%i z0E4U`$9iqx^L=~?V@{>W#Jo%odW@HxF{x~FX?9&9PO}j6It}!%&4+9nN2zvZHL;cY z5`80S;a{F-;*^%I^OLex(AU2@=NrKI=^9#AnK>m2(~T3q2hpQ>Y%lI_tv4|ic2{Q4 zrdB2MRn4bscWdX3#}`@{vEP_yl?)~eKg~Xf3{PQx2@lhZKQo88)fw7EIU;q)bwBfo z{hX`!IIp{bz)w^JkF0?jdp*E${zvef_a2R}sLXWY)%?^=^YF_R(inJPNxmj12zGG^ zP6D5m{n$Hfsc~cpiyQ3BkXepZy|@W2btSKVwc5Azx8}nGFtc;ADg%Ijgt|B)Jw!|Q z!H|c=pUPg#^Q`c5-@$C*fj_STl4x^0qjxLXFu}~Pg#Xq1C0KrKI&6$FdC&Uv-5%e8 z|DD}Ue_UJI{T(gkfko==sHm5Z&t<_*ge*r@8UH&PoflB_oBuwF-_d=8+I-k-LPBVS zW!(EpFJC}3%E)_k9e-aCACqT3|r4$9qiBc zmJ2_7+B!rU%ue5(de(+-I(oJmHvUoDl-&Z=&yE#Z<~rtce=!8}w2lYTi7rS8?;8w$ zP;R*S)Q#^FAKjCIji2VJWO%9NmpIu0GCFz-;k3QPz?I7*zh#x^3|{C@$-y7+l) z5U5p5s3t6*_w7bRk@CrDh45bh)is<45kmDRJp7;zw=o|rUbQR+)~4dSGb{ph4X0bT z>x+rSt1*R->NBQ(PTwYfzLQ(|+vG4u4q0JckQPOZpIY`Ar4Bg~*u z9Uk->SBg!u(KYE>S}JQoj@&-qTr@H;p={d-j@@vwmX9T$bPxx*ccj3IN>XWh<3#Z+ zTmGyJH>^|PmJ)$5doI9Il*OGyET2BxY9C=NLmpM3_s9v_>BQAKc3FBn$GE#STjDVp zsh-EBJ2}JHinHFrco%I)n~XD^^6cfFu4U_sKrL>ot7jcrwl}wtVg7-dFaX(PlUP<1xT~n&CIZ>1P^~Cp_2MZ$rQ7 z;C_ydWZaNt_GK%5)4$j+h7kM7*-_?2KqxG^FY!Tiy2au8-;dnGUQ^;gp+)ds*HDy;OVZpk9JM)ApJGbK zWb@%OSk$2w_10l)_+WN!Zxiu{3SK$lX^k&6Pgr7|eg^%@Jt@sWVIcZ@AjE>PU`7t8 z>9;|W&@{!yvp7P>EJm_Z=Y@h)msGnhE)e~ur8t9EoXOy}dkYs<$dUMx%5!p11hAnX z?enCBX2S2bgxt;FWp&d*=|%@%$Il^sKS3JS=_>$5(}d(KT2WKR_SPabJ0r$v5OJoz zB%m`7Wz^f4)>$Db0E9?MYnphsoyyDd!ae@zQaUcNc(ll>pdh_+v2>b!m)_0WEz+UY2e;2r@La z5xx-Q`p;WWI}0pHTr#|0Q9eqzKZ+6hck1xC(sJtgi;Hif*OX0*QsI>KnB=9M{Vg}vmju(y4h%Rnk96}W%sFytLX9l1aCI#?!?q&qc!=G%P^IFeuPp*2vQ z6=*gLUOmUn+G7KDNzmev>bIO>R~4K|C8i%tjI!}qJ<0kr>wyorA6w;}C@>nbKASLw zK8|4rfbrV(Ln?9r{Q?=J8*5S}Ry9pH;mqH+{sG8e8#p2?>w!sYf!Ytf?-5Sx&Jn(? zEiv5VI;wKHnR~7`^@f+E=l)k%^P5W90)nF3#nELTUry^$g2~Z?eKU1l%;!PAyhiC+ zr5pkr3L=KTU=cP@H+c0G(C}=ho0p{9vhTX4A&W#^@w|B%G8~< z`@0earqYX}pi*tzN{$PBo#Y3)fHBt0!0*MvuS^N+{Pl~|e*a$GO&PxW7YBfAa&Bc7 zWlHFveHg~n0%_(0pPt-JtsW))=gN6nk)4h{h{h`z3v8z7b|MdI@6is{Bwf1xdRSw2 zsu0iT)iKxKkJX6xNc7zli|b}XdL_w9BMW_hp_<7`Bv1-m#1_t#zo}!}r8=VM%r3C^ z6PE$xIn(aGj&*)|VOF4M)P-&$aCxcqVeeo<8uszHQ%!F8Ld8lJ*84 zMU}1C07uI|4JYoo7Ry!tZ%^)=1GUd`x61@AmhO39!RFvOW zvn7}feHlC3wY%S?%4n&xuSV7cD{j~P2f(mpZ-NEY`yV6XRG8Kp;RwN-gn)m3bB<;? zd!C=ParPtBZ2D(ob(=(f&nWRdTwbG+db=+wu>k3XT}U8$G|~nt{jhd)n0J|@+ckLm zz-;!MKBW&M^eeD5TxbZ9Jg*J*H8=ZS@l`XELpKgsR&?1;qMcw{y!7LoLeJ8PMz!wd zppSEaJj-p6X;YsRl4y~MX&Ks{o9LpY$3xPP-kx=+oi?%5m%Oio6~XS8#aOT2tz+4{ zEq>Bk^OLM-j8;z{FW_C8vA!yk60nQpxv7iJyu?)BLA4Aq*^29~!t>qJ?sn{7P?ge& zOUt&SLqg$$YY_>FG{?y|!wgAk=k7AvWN&}>i;8L(h^#6)d3_*b!krY*v9(UGOus6- z^nLR;vgz(F;9ebot|O3(XD#5w44!tw?L7wj{1NgkL~?}rv+QT-G*MqHKv6RQM+N|$yld=!Z83O0fr);h2TmG}tQ0+^X+y&SzTy1Do14migg+qX7 zhAYv@&Gf6b?54JT_nGaW%GuN|Co%dwIs=Zg*AE)Y7x)7wcOJ?LwTYqn7Uzg!=0$ZS zDF2J%_#^R4R*pFAqwJ_6v(i}El8d=j_($O%1kLI%v}T_D@)}8s)F7Qw#ke~ON;$O2 z`^eZg&sYqL?R1+wXWJSe#>xi(MR0BTB^&2Ez z(#CHE53@*oT|fw_HkG4?t1N(#d+QMq;5Yu~aT{JMzQJkIb6P$2v;Zq4g+8c!|QlJ1+>yw1WPS>e;f)@|x$`j=oF>G08osPA2lkH_xP&a#i_nSla=?@DrQZr3V zOd zoZab|C-LL)se2|mHcXnA=!R*`U3+bN$NH=RA^=Ut`dz8<8Ee47w}$1v{xi!#l}~H? zIUxJc2enJD zC9P@`_J5Id-QjHg-(S@#wP(#Lidt2BrbQ{OU881EHDXq65qs3C)~LO!{SZ4rk=SV| zF)H@nn;JnR`K90A^W6J9_~SnAneThfdA*KcqVCGYjPe-lQlSUkS?s@L9Wor>_8{26 z;7@P;?-Tze;s0+sh7qBIoK`!n+A8uSM1&D>wBKR0?@vhClU5ro70K9&NRvxS{VI#O&18|4e`2^pvG$*RkY#hVpkt{@0r4 zPWk6A@T)?74Iy8My?_L!c-zeU+jDZ-y$wJ^>8bq6#5rZjzI_}1!vuF8{-LJ6CXYL^ zNkxsG4#Sqov4V2t0eF9lZl5maujwAS$FP5VN65WB?tH7+(B~D7){0e4u`rXOEi@xq zoe(QUB<`35EeapvxEC>5lLW#v_C)bj!w-WCLcX8luZr{kLWvt9yrkYcDag{2jy2qp z^`erbQvdcaxinhl#MI>v(mDV5jt)=uD{l6}JM2d}Pk91)p89glG4$OaGyVw0z(JEU z?~)Q4uki^#t8MNzKB{^oCL;#$wtG4`G%)b{Lvpg>Ci7;P;T4A%5NDqUef5#8k}z?+ z#`fsvjAy31HxCppH#ox?iUJL=70!L<32i+$U79CZSkK1>z=Wp@%P(iWNexT6LwKML zyQ8jYzDQ4nl|1~f>|_1=%B359KedO+RfWi-^5YU~-vA#!D@_Yru#7q3>}lwk>C-si zCZdxL zXzp7szq>F%A-*ah`lt2|wKetDlT#2OH(E`nlA$iw)?i|%h00 z1TEOQ99!@qRFfj7`ECSBM^KMVK+bRcX{-g2+={RzVT|A;qMo6MPqGkZ@ zGhlw9>r#j0b+FKpmN+{|wqewHun*r?rD?z1ZJxvB@l`$g_MoeJu*s>^8@ZUw(s<%! zEgz!ODqmT&Bd!G`*m1@8DsSzbpSo;g`iBkUt$-o+=-eO`3CA8fZ_3`a zg|d@Gd1!4Qr4E*F(x3ln3ymnUf(a*LhXk+w+MeMOUAg&c_vY-XCQrCzHJfyU>{QAn zQ1jycgA&cB`%i4zPX)6Eo{MA;d^G7kQMG9c8Tt8s_y%3e=J-MXB518=YI-^j&8a79 z2|WHOkhY`{zOQgZ3L+j%E7I@QT*n_y? zQ$K%trgyq=n+oc;IsDqsiMDX_tm&Q_AYzm9aXmqaxV&TyF5F5xot61w!eMr-O ziEYbdaRMPWe7Sy?Zs>jON^l{(wQY{}*}wbd`HLT%Rx)pPTjpE7zi=Zmi!kFIi%pJ?QpE*we{LorD}VhZOS2(~$n%B=`{;Bjy#$(7SJ!m+(J7~v zsM2dBptDV=#RkO`+k)>)7;JJs$kaoct&61AwKb~*Apzuvx@z(*a6VsT>G3EVT(~{~ zS$$6az_rdnLs^JCgM}GfIR5i9X(5Y%L|rjNQ$Rie>N(*({t6;L57XN=*>d<^TxYBA z<0e&jvG_^;56pLeMjnqZE7}W1+@%^zcXJ_H{BJfGOy1}C*I)<6bo=<1b5)a7wmPz+ z;A+Y2O=U5gKKM9cJVe|j^b?yu;#bmAQfyOlL?hil)d6PGZdUHM%j*rjOcm#fl%~j* zR7*4ozU4AJ7h&a0??X4NG#9c=`bjX-gqm)9ht3Z6S+>vj=46e%eS+u2v)ci{?&flJBAQUz!rXEkNvj4lW3rLG?U(xLuObmmOllt5J$yKMc+f~S1 z6@l5$y|}mS@93Tn-CIn86;m>%8CI^g_t%LdpWFRqy6#bc`!0b30s@YD2*-dfWlB$3 zqOUP%baF&zX0mcPSwW2k)*q=8Sc~F`^SiMv@3yHWZTD;#_ZIOZ7!>w?8xM(B+rGT& z>4+vt#9*7h%>u;F<({&rnOD?T$E6YuZeH#hsd%T*VJ?LMO|?xo%r9Zg{l6`w5mMt) zl$}cHICdX~X)rw;;Fe;!dXxUE{~so&dV9l*C*`kP4dEU!*;OBF;*`Y-Z@u=6N<-XS zLXlkS94M4wG-oVw0H;e5mdi!1k5bC;Mc=ioT_;s!gp8RA4ZyW*^!crSz2BZ*oFb8P z?%?||7si`&6AlNziSJD$FEO^W;+(r9mU*}0#pXJ7;@R1ICG2{p^WNS;H)j0#h9PLj z^!RHni241eB_}?-$cmzRO5UD)v5a`xu^1Wk=H&A^h9Ow?o3g4|=1F&M>8SUAem|UD z4si}M?E?h+rl~Bwfbx-NWEhz|evkty3fC1aZkX-wvP=>q?z*&PerMDZ^uo&%#`?DN zL4=FMv(Ucd_g2v>t&nLS=sp@w=KRi_u@-z736fIoC2i}@J z50`z}3AI(a4nK2MtxbIU*^h39!}VrFbbIQ=!>_GghGWZi86cb=2_p4<)AU{G2+WOd z`75}uck(eEr9Q#6qozr|AphXUZOOiOM%QLkRcli?X-O_DNbCe+F4Bfu;q1@f%86Se zw=8g8Pvv=h$e46)=dUPgcVrpJ{7LK|=zl<5nwC-dy5Q+2K_YXD%B+gc^o@qr zAqKA@-{GF#FCY*%fL8jm`b&bP&NlID!?*b8o@m2^wChlE`<3pTXfY=fUOVdn<#Gq z(r!j|Y(^5^tAweV59AOMZ)4uh%zk@UPER6o_G8>Dzv%?s6~(|72R~t1^lN{RoP?DN zkLo%fOH-4$tL|mZW^(u?S>-!MM#chV55wV81e z5pk?9iT%yupSBNKkn=DNvjjbZTtV;&a1+W2MVbZ7R1BRq-h?AtB*y zkA(GS9$DEJRfpv>pNj&8MUIJlMvv2ArXS^At;zSM zg(W>`6b6C85ziW36IB++Q%-45-d1^ddU?Eaq7^-59j<;Mnb*-^p_9Sk<$ABw)Ukr) zHI!xPuh-@=?za_VEHixUhZSA@BLN4^EwOy-f&=LA`NI{Zz{0-4gSN}5<^F6{f+!Vk zTk4Z(nrt}(l^@&QWh~-{s?7c`L-4>IS;y!+`N8-&=g+SpTtDV3^sR0Vn!a19J=>5O z44ThbZ>1fYqUSGln9<=KqY>Iq8f3lcz1FwETa%0i7xt}wt`$7!aOMfjx9->BTjbej zu_rsS|AErRkY0%S$WE7dwXU=E`X=9{dJXAoTR4+!UkzNiAu1I0@F(XjHih~3<3H0t z1XC2PKSD-~JjQA7HW@tM)zW`PHQdu@e-in_d?tx0r7DzCZh*JVd|6vCSEeWKVM=dj zzyv^knpRIQCNgTrFCCX9Gsql@bFn}o9{Dt$DCr;Ke?D!;3b0!f!Y^gK)JG@Fp-&y@ z7LMG=m>V~?p&V&;kk=I~OXQe*zUM8{!56Zzd^yQ8@O#q=&?ES=!;!PPo&^y#1f>{?)($ul+Nm&cUgOIdh zJPuzo96OojDQou7qX}o?Q^OcIs#iGCf+4*$?FNIeTCA6PH^-qS7(4O3Q2kP z1`n~l>u8azgW_s6k>kvmz+P>~d=6J9MqrZm307Ueh19;wl!+X$zZI%ypqj6^2j$u| z5dYbRLF@lh_c1xD)!(rQg{(2Z@*?OaG<88?asCnpcjJDOd>t*^Gf$Jx$47QK4XnPnNL+aHSRTrY^Gnmf!k zZPwn@55RRM6TX=OY&q$dyWa1aJlf<7C&iv!PoC|mz_e!;6fka-2a}%*H-jGK z7T`8S#J+LuM%2_*+ek`_3FMYDs@wM~a;zFfYR}1knlvSaznB&2SGJrCzixg;`2Kd| zqRBSJ8W~RV@gD7sJa8KKU(3c;?iKRDq8=!Y3XEGa`%`)ie;1mxT}g7A((ic+o6S?Mnp}G>T+SnMHQKN}H-$xv@A0psDR?+*9v2reX=`qUGCX)(W{ix- zA81xv$p8K|q2#*Cz+1oiF1R^0PW~vPyLE!}Wsy1XB)qDRp-KpRzxnCb_tXeaAT%OP z6*j(e4MLB5_3Dj!&r+&UwYEUgbR-Wk+*2^~4^vhWN6{0=wn%eJm4l?FyLcqt|svwLA1c~52> zYQHaTs-pDso(CP+ZXW4?Po}i&L(3)R@(&fXWC>06BNVPnb$;J-b5>2O^^xEcDt;^f z>GH>hDX`RYr{bf%%KWZ2^)P7y_a_`CfTVT{b2o6VE(#UCF{D-o+qh(~Njf#EMcCD1 zaMNmmi_!G>AxdM&qyr!5_NKgfy}fs_)$>|q^%J-Y?>5x7R$GLOQt9n+g2fwX{j&zT zS62?txQeW1&2@$?^Ww~2l_^P(ZgpilE~UzuMBfMgmbWLu))hC64mtPNzBi2?=-xnm zrc%4bKTg>2=iaIBhq}v*%8Ohu?JA}G?VW;QpIVAuLMB;+DbTH{o@3V^W8uG`E48^o?-tfEZ^JYH@$h zGT+c^ch=01+oI&d-Whc-Z*QD)1RX;1G`+?0K=NxD-P4NFkjaOq_)Id?yw?labKj{x9ZgF-6mg*bc zeN+9E7@?Ww$Cm-aRFxY|-_AX!RO15EHb!1ijfDYXp6xnwpI`er)>$Wo;O~oS0kJh1 zQK^{y?dfMEk)zo4f|NXBqrOi6#Q=X z=gOD?4_e7XlHKUGs)(p>03^Zc&0R7hx{eb29@&}C$$BAx&7P(L`q@IXvg>CGyC0r{ zaRb_lBBCX42>Z3#irEI0e2=c)|7oYuT7P$o+e%wjw+sxQ<3Q0ihS>QH`^OPwREK`? z#%nh)o*l5St-5=@%^F|rLMtlevL3fero1m_edXW%UuKtF1$vTKe3>)|6!u?NLs z1Eew0t41y^pp0(#KF@{Y60MxG+jowo?pKLc0wCKeXYk5%VT%U(L@1p_0M}8u)^dVr zE*%#uzYdjbwf{Fcraz5FZ#rxg-%}5aOL?5eaHd!`la_8|K*A4=Wdzerno>*lv04lD zccn&hgi01w$iHJ1O%AWP%l*NEVHL_zi$v&-$4P{!_W&$w)+^-=3>a!c1CZl#ga)dRDbJZzBCsqq7D&>I+(j=k0* zt$k!zH$HhES$Dpg^@(Y)Z}dFH4Ju3-yk}LxN;>xO&`BWDA7|k+?(+=mvaKHOT$>Ja zCZ;zn3hy*n7m4SoJ`~5ZO(e>f%-BWXX9&gZCUBEGcb3+18M5W9ZMm< zwbkX@g_HLiJn7qdATHT;wrZ*^=_|!fo7GRt$D_g3o>iX@L=#JEjU>xcR@>8+ea#1p zdAa_SmdPcw@4XwIz)>(c8Q*4+&!&FXP&KO`I`PeOt*cA-KP#RCcfv;hef)Z0m~i-| z1(=*TbwSTd#*I;9wm;9EEd0RgI=1gL8`ZS^i)K8FMxDuNJasZ+`5Mw=p%7)K2Z{EzWJ+LV#cExvwk-$;ji z9g877;c8y7y!!&tA4(>vU&cPx`8j$!eW#u`c$QdnKEHR?tN*V=ppY2!Hf%kl&`COhMJ6>|#CS8YAaYf;~_sttaD$m|r;AFQs zW4}S7t=g-rHCvaQK%(3nGuFE!33C4#D^Ebx-q=fCDmI1~WgjX&nU>Aa0MKYhRCJG$ zR=n~uEVP#BGA$G07*^VQ>2y)pYtm)kf{IZZqjDK%Ru>h$8x#F2>Jk5lw2dP#mOnV} z>&vxL2d&R*`LPU4u@AYI1IK2LbPA-Qu1dd3TnOO;{;8Y+dt6Dlz5iazJUq(K63|Nm z%}D>Qo$PmP&T9JVDl`KNNDkl{Q69J=vGPmSlr6kn2}010Iy?@G~CT#A&n*7 zs2%43Cbghk#L#TB6W`=2PJ=yZ)MdGBKIbz1ml7@C$QrYz&#G*GcT7I2oULMcJ%wxC zT!cO3KWLCfH7)0Hmu!h+@m*(+E1hs)=H4&>ZT4Tr7-%gX4-@fgyMOe9bsjsJ{N2_N_PKY>&jbHkCBqmI3q5-A~5p zeb0-{9lIPNY6=c$YcB+cvqH7Ii#@a}_-9Y;k!N~;IQ6Si`mRhA{bt<}S+AjQLbL%D zRpxXEFb#hlbikOQ6`Afq_SabZk+%hx$d%nWwy}&Cxc3&ycD;A+S9w9)`I{}#{8tj^ z`8sa(=XpfzjzbQVZoM>HrJ?#~y0ez5`cNq1xC!sDzUQu=!4U&@*AM2p^v$~8#!Re> zCl)nHfB5wNB|phri*fEOqDMJiER;6i{_vX1(UZR+m4_$g6I0$G`ODo~83RRnpHejn z2vr+rmQIi=Iz2z?jf#EFz__O>>h3ZoA|vWi6M4(&=9A}KiU{L_X^gP*l(BA1>UUV9 zAZ@w6vOhjXG9o|gd`;Ex#-Rn!BWw0$W6NTbeO)G`;bsR$ERz~yeLVwuPD7pTQ+Byw>&L}P7lZ7#I zaaf-K@$_ zec$?<$M;zw-)m3YixBm;5FTr5uBoZ^8x~T4;S|5yL&bZ`I=sl?VadYa#qqk}jqC5z zHN#3&B=E&qbCpER>EAp>Hp+5gUpOx$XT#Agk)Eru^n*;Rb=D~(-UFFAk4sT;w6yb6 zessjM5zz>>hF0)+FKoBW8o3>j%3J z4g3HQEzWe`g!exj-#a!uexc&(cXaqfZk^O{US-TQ%SN?!8+SR z)k^qf_~Y&^TRLz1JGUCpP-o&%zVIO(SnxK8iP=^x`%W_9qr*v$Bb; zqN+O?pe=8}hr^3(K*ZuTwE2lBxhQM(`c^}k<)UIXtZj!jY_J(5^+{`$J^WlkgpJ1X z)qLl|!I`OV`%RYahd%+u5+ldII0M&W?@{8=-SN)oACWwtItu3N0h?U#m9we&`92*0 zUizQSTudPW{Q{h4Q0pY)2SEwUJyy;)pXC^oQMGT!CiXpk!j-ggTSAf%7;O?Dy`*HQ zbQ3c40-_hlDR_TBU+!k@24dAi>x;ab$k!ClT_Ztcn7ssVyN&H{)Q>H?`CPep?l41` z`({(T|Il|!2=N?=@ZOpXAAC0oOj!#(ddG^TowsroI`r4gQIGrm)n7Dc;eKpH_Ppd9 z&d2gafDQoNL6JU<(cdNcTrkn8evE&y^YA%nQPV;aifyhOUwUZ~YNyd8RsX=}0z@J*5zMz< z;kgJt@dlF>UBBdnx343v6~cBE2u@@UxAao%5WhLpfW%?xBFHO6btRRcAM3ufj9CT5 zsXh(+r8%n`hUz(hz{{QWD(2vYi3u~+!`7n6O*M?nkvDh?%kG{xzLhI*Z_I!hlQxHH z5T0f8S6s;?->fs$@A*~6B7IQ(S&{3|)M^c&28U#T_FmpQ(2PHz+@flK7yZyPed_II z^6Z}AtIc--%cpT~epcnD^VZn?TJLz@*Q-%X2Z?@L5G}{y#yadEr?W09+F%?rjd{dl zyyaYy?@F_-9No4TI?c91tK=?)@gCy*I*$N5OZA6qIw1->Etn#OmqWLo-X?bN+0|mE z$y2nf|E!F&&$Ypf?`GoEu7@b`oFqpV0%-ytu(c%ilG#K6XfVlRs8tsw;3AxeXz2-B zOOL-Bqs0-YR?zowkGsp`a|rV1?=)53b@U1osZl9LUa6OAbOSyCvc^DFg~+m!77}AR zhLv1B4c2o!m2n?O*Llw6<0`?6sd1&dgL_N7Zy?B6h! zBoG5E%i!@;8NE?M2A7xi7qr(4hXmc-Ma0o_0u6opX>8DNV^QSUkY8mbJxiRX zu;QvmqXG8fO^VuI*9L?9xZoy(w;ib=9mBLwOe^(g>Q6RpRGLUJDI0O>kgbD6@mL~9VF_KkhZz_QOa2>5ur{ryW@L{ZUwdeBPQ#lj)JCS6&z*`|e-NMWYqH&fmNc|8Y@ z-y3?&3}X?g&QP8EVU|1P(vv@SZ|md_eZ3Oj=2?o|(WUZ{!_y zsivvF~9XkVpdj*g1-6B@)3^PMicI_Q1cIn0V|uqWpc!MKcpu# zgvV+Z1{y52+E&F+a4~)=Z&Yh*o_yuFHgo2A{WA>#1p@pp4i2#n*OSe7AFqPiNZ$`6 zS=rfd->F=|n|+YNWfF6@Z0;%5OK|O$DSXKHb2@AnRMUip0v_VV#?nC7PERrNF{E{Dy9?7eyZq;k{Ox>uWZCPzyy z*f~4f)e}>!ZHkGXOTXrqXC;ts^o0S&EbA1`C)I3Re;lK6Ke{@a z#nYP0JjJWkI-olFq&x$RP%^idoG_B z4T)`X!?B^^9N;ss`be+`Wa4-baWxxs&{%Y1m)J3PpTx59r~c?J#SOc~>gE?OY^lmy zR6$cwzkM9chEEjk_1Zd2gj-k=n=hQknG2X(A=k*aW6i z0VUK=1Nr)#($sE|1Wi9zXSOF8E)o~kkA@1ttoY_y{5!)fZYq9o?DgGr|BlUcN7ms4 zbw{?`BP{-tYk}b&>dNk<)KCOL=$t%|!7%fxK)DOfk(nkO&)3bvFR;u^p?sCLSSv`X zRY#;^s>^|#fkvQ_w(JbP>^M=ls>MN$dk0S(THQ^n*uSlk9RK2dF9CM3rK9vQ#`iJQ#G%!^Zo>X{-3Rg=e8Y4V&aGQ{NM{;ORwK2 zYimKjhPbMq0_QygOU0?z;Nd!B5 zNvUPK-;V|gkp1!1zNJJHVWm@_swjN=y!Hp*+@{px$>hZ<0Az>+EgZ4hM=8LUCprqM zwPO@N7=K5Py?$h1^!=rEK`9RRfY?`L>6@y3$%x!OA!@JJI4Yzp(jA&gM0eCG7(pf& zk-CP(&tz-Qxo%}etu{M-s%QC&svPoYVyv8|zvIuPcxu;l0;1n+sN1VE2t0Artg!MV z*Y#xyO#b#CdgtNH-O*b+XQvu3{AO%BMk5Slo20+V@l~0``o9uk?Q_dX*{gS-;7qRP z5h(gmdBiv*W3T*@>-d7#h>h4A$at~DA+gQ~%!07!c>fX0NsY)+X`|%A4`hn9ygxQ6 zQt)Ia&K7l73}(mi+FfK7U4V~YNrg!tg!Y3v(wZmp1{Uhfe}nQjUN(KEicj|A5g@sL ztm=03X>saKz>np75=`>L#lMx~fo3UIzqcQ1bqMPx66IY@R0YsaEsr$#2sblBJ?!E6 zPcuZ1IqH9CWhN~BNl^Qf;ImI0%DN%uwh!0_Ef-azE#NB^LA$8ydo^~m{U?Q?e8eqN zyB4GB*=AIujgK-i{;RxOxATBgykf5vRjuzU%BI0WQ^5Y$+~U5e&RUZF*}Lmb1mV{8 z#w;Ol7lsNMby-W@mSEM$pyo%LXCv{-J7*N79%R;KqmNmHzP$t{a59$W8%YjmwCYuS z5HVnIF0o+|a(z=`lM(w)$5<0>EFS=Ok;b{hqD}>3}U4F>!UQ1>f;>!6BeFE84 zn@}oK{j7x{>kD4?FO1&} zLkDEIXZY^;oS}WFpH_2G}beQtM8?9{Sb92Ifu9va2F+Z_Tv0JG^oLd*CL>e&t z*?lFFsn6<>`s1GR_oJVRkx#z}3X?PZ_X}4tuC7k&C(c*lEzu|4-SAZ6e)#%8W}(=a zK0V;C589HWCh}5&?}}^h;9!L~xVGQ&{*p<3bG>Lh_}=_HkJ~0d&$F%!&74QJ8KKk6 z^-cEoNL6~uZl~{7aQM%MdL){x4_F;r`oiLat519ODBuC24V$WK#~mB8CPY-2- zeTS|Rq(%Dy%`qZ;m)_dq00`}CeIS_`wP*KeVV4&7!{Ww?YHg*=WaFPO>!2;l z8|4`n!`@h7k<1SlvGySJnFE|GkrU|(6LgU- ztjv1|wZFP-@fl3{cXt#V4Ne~6>92W6mS*AWLqXdv^QdUkucHY^X^7>vqjUt}%`S|+ z@*gt$x}JM$w;Bk&)Od^=gaHEzX0Y zId%f)I`J7K#bm`XgW($=EpM!nIHkc-Tv|5;8xj6dlLwSJvCh1K`;6mt_P#8@=QBGc9@9(6x_ z%s^)ON>YG|G{zwUab1NtxK*rbxSS2fOSBwcPsh%fOI98MPflR=zr2s+cirC4&Y}?D z3X`FZPYC<(8!+w%w&ZVSy#tka(%qq1Dj)*UJ%cbriVtvv5mkMCecVurTs4IF2{_>~ zifL5TPfnot5~?hn?d^0qhIs z%z(OwN$A_V|K4CV5AW@9xVL;w>vGJ6xV9ggEedNFW?*B0uwK$BKksN>kL})nIx(w4 zv&w6h%bqn4dqonXiD5{ac=u5y%8p99UNk#60C;QREIp|eU~Ny$2pn%VpYdhm{BgOF z=kgX1wpWkT#urRfFb(v56}_Q=U?GePFTL@56W)2RhaxIZl{Llr95@_*BO zYc|I}^Rm!;&t9h*E@&jcpTDX-Ey$JUldDOVzF3jMB3s_AE0Zj_VdfIO@%;)=(gqEF z?m<66UuANW-S<~z=wFEe!`jB*_Z)}@KxCJ+KQXhe6ExiV__U>*DAD>()f?uB1 zc`p03+Vo<;sOBa1@XP&+W5PAyXh#Y^hen-a0<0E`ltKlr?{*dh&QX(GRN7;%%#Hes z75rC+nwN>Qz1K?^5EmSu2j@bC9&}}}Kt3n7W6J(Rb6yMuw$l)>sD-pa3z&8DqVI0- z93j7QImzz$UdHp-)Q^`fZ?`Q~-FY^L)}xgH*fYH8qpI|NacC;NSWlzP?JIxOgd)*=j!{1ISH7# z5Ld`b&A?P60P$fM)=;i#_h<5gUs9+ZecEi+sDAf7!Lf*;3e-C(TYy*=4_}d3Od?zX z!fCy6gz#G?)L|1`2o@3s9a@`?ziZv?U^l8SV39-K#E}K1VKx5SE#L*Jk8o5~`?XlI zK&lCm;KHmn=nkHU^s6F?umE-44C?QQXQ!PQ`e8r)vvvbhDcae3yfJH)M80=mvl{6U z1*^4>l;(UsSS6C31erCUagt5G@o^2ezx}N^Wynv2B?*E+fB-BSOJew1sowDeICCI) z#*~C)vL*m6^L_HcQ8caUdMZuOf{Q9M3Un?*Lc-1mj#07P7+6nI^gCBAJo_Dbq`!D^ zzgj%odb8=35k!tiqIg(&^gTXQ#}>4+oOJQ0hy6GYf!(}tvBx-Hj7i5iS3X5Ve7|fI ze(TDU*5+*o_|UmGY`N@#3fkUCcE;q68#aiv1-vxxPomlmuFf-a)`Vd-$yCS>rMGT>ma04K| zN@IV_1piK4_xG&dUTY0RR{ZA^)ztM zIt0RMS`*q3U$JiX$31h7q3tr17sxD2#!{*U41>3UDl>g_OqXDO=tX9MA~3Oq$U z5W~>2{nh&DgH(_l(d9^MY!M$Y*Xu>gYT(NnG>$Mtk0)FF%{XtFY&fwfK*kW1+>;O# zwzKycWj#B=bw(evLZ_)SNj)$#N63-t#uZ&UdU$y(*CTnmRKhnWkBKmaZl(A%(2B$L zDHz8Zb~1@L{)rNGCgd6_HnBiO>2N^GL{4>e4CKV{E9()Z%Q{ z-+>2NSr*3Ai+%V7$sowz)5}r|(0P}1uN54rCG)KTp>TA4L=>5(D1EG>bX6k~&8O2nLDR2yz#421bcb!TBYMCYJrw!y=>v-+NAqT{7U@kV+) zKgK3UYW06E+vSNK=Xi} zG~6>7r+Wp3=@GVxBGI+bb+=gm+7^2s2e?L?s#1YRFEv99H=;taKydhwuKl zf8twmi=Oh&z>CCTqi-rAzz1y4gMK{+P$KX^LZiR)**{?(LkUY}Iw1>9U&kLl8QCtf z^CPAf4ZTS4(Urw&D1sotBlkAptv*wwX&Pt|sITk3psl5a#4Hgf<75DsS(1oZseI)4 zA)E&T*mQ#s1%}1ftadNzE7-e&z_=?j4-XIGyx+g~ps~AjC(@r2h@-OTXT^6%{8|fm z980HnE1mr}#$Jol_T+Y10-#eR@{yBcys-6&R_0&_>q%6bh48*5$-OqiV!?Z!jBfEi z6`$P@;lJC6)#JbGJd5#cmYL!zU?9~<$g%ZRr|)TycI~B@6l2Uvx{;MMS00@Fyz;d? zs7uU#o;d@m@MDI{NrUS8-#;lJ9*V-MCnK;}%Ht&gH`)}14t!<{t~=OkOOpuOxszw@ zavWTQBO26f_zl#+*Vpnp{$AXkNbP2u~ri_E!z4KE93)0;3nF3~WI1$4sDU>%%Bj+%bNSO^X2EKV!(e0Kj z+k-S`YY@Jd`{kclgN~MyAT%E*tZo8M{17SsqSZ(LB^$3-iH`L#7T|4*B?-X!q0gpm zQ5*`~$4;bEUWU7dpNmG%kKcTX0lE0Z7-O4$m3x+dS>E*Y$iJEF=jl7^GYfOd$R!ICT_Wk7#&e5| zQvdoJ9;m*cp-_)JWn~bFTwi*l9<*R=?|$VV^N_+wPvch~Pm(1Si`SgU@i*zmW9Z3_ z!yJ@$y`@HnUC$wW6}-&MM-YMIxeyY~6xxmH6ePr8gy+~v8Jth|Caec}% zLQ)^ozlYQQb5-WWlljHC+A!SY5*%ANPCYmmp_E;iQRmZsS3|A(IVHd4ED`sO|LssK zoris4Sa)9wDf~Df*1zD%GmEkM1vQ}runDk7EIx6Yf1desskraP#J56+VND+oQRf|7R}B= zs24I2*BM=~kFA+zvL~c0rWOV7S|25*ftv)xZ;o~DiP;n6E`r->y+e1?Fu&=1G&EYS zeae(fpUQ4-{?>GvRQ`F3j>%`ZBzKYA_UJ#dR{>R_ZmWQ(e{&C;V*bhUd+8B%$_g zAOa3;F!2Kbr)eRTMI`p~chhzY z!`BTVUgv~2pp+b+u2*PCwTRX zvFvsdz5m*-4>8aRi}tZw>#TB64v8Kw)~Ish*;9)lK7_NS&7`p$UV|{lQ^6-QdwH*Eo-m`xZ&X=RK_%e@BX608;`H zSi_@#vN-s$>-F!LqWle%KHgGR=3qqhD=m_vc9+F*1#vO9=Lw}0$SrUy)C z$Fh*tQ;dj%J#W~`wffgrC5!mO6W^Y&eyY}P?r)tRxT6;?gb^j{mh z@MnP_nS&oPJe?*Gw6%kCg;n&gRAXY#vj6L%!cF75Jc(NkGMX}T?}r_{Yd`UL(>}<2 zpnjd629*>f+1`5O$vt8VX5g6JT1=FjcTJAHako4|SV&XGU9P+^kU(?7#bWh8Y0m{N zHaa9fVUfE+KLW}h5CJm@TU!U<;qjw?X9gY`5xEWw;hJ1tp?L{=1C2)4H~R4)j&~6e zsLMGE2Y+a@KpVV1xSHmjUZQBK-VUK!k2xb$ z40$&NdvRFQn-s`+x_G_o9lOXjgWmBc@=c6SQ$&b-7;&u{Z9~|5?pIm?Ush3y^)wsa z@!;zqdn1s)5{;amt$N`v`{r;{XJsSLOO>kkpoO)0F@S~$Y9$>m0w}CC*--)=EkAeW z3I-~F|4VJ8w<1(@7B&|isw}5c)`a4fcnO?j(~$S}*x%LoY3@FYKQVtM{$_S@ znsA7_0$)vB><3=+A6z!IHDHu)rtK7N|}kX8Huy`;ICWL@vvxPpj*OueHxev zaJB0Fl&JM)@GgNKeB}a81YC|I9=F(1vi2$pMeI8DYZVb40MWkM_=T5G|3Jk?GDsjKtoWsiLi_y*)PY9)W?B;3KTJPQ7LC%nZeU6V&*Xd18$cUxfJC0d9TSi9>-n zH?d5_AjLzZ!6E({%(-ysa)`PrC}kyiS;g9ZQhl0-2#V4z z4eFj5KX;$qXZPp6KVTT<-Z}R@Z`YaV8Jd~u(*Q-S?l_JVH)m%*KE>4 z?h@GNV6)@ZJh!DHB|hUhco*W}=%7Lm5uiv+dITLK6qMdfmt8Z1j)SQ+K9?PcT^lq z(L-N$oTB+&p>PlS{C-Ee)+y}C?DPD(vGMh1MaYTb@p}wOe4iCB;fC23|1&2sR|uBZQ~9qWaM-}w+2<7j;4oq zdH`ieo(dm=hL4S3PI=4Y` z@$E$5c+cq$eZ+gu4~E?fsm*qZEi5FZ_r8r+EJvGO7f3C%O@v$>)ApOTZw66!`Si8& zU+%r^BGdkqHUH%kx9pXC`!TL*^hL)XxvC{~W6D3g4Gp}FUG?OdXjkG$1iQyHqqxQg z53lXwUK|%xrW0vB#ke|cibyLXu!GF`@kw;_7!^`6r2XzV^T+M_xzzRL0t%+(C`MHJ zK^%mZ7b(5qNc9YaI}UAnQlX}|XFkZ%@09-3>WsD>>fOJLweP#vBbg{;K(p)m)*(RR zXzJd#n?L(L7C>v5i~JtA^ZVo6FS)=y%Yxn!lk7~-I+pOHxAn(E*f3GAns+u#I%|BDLlJfSyfj`zQQ+%t9C7fUw{Ri^maTp||J z(v(=(5M0bLF6J-=b7!GUA<+xyEwp*KPV;czZu@O7%Nv<1=G+foaU>5tOtKGt3T0hy z@GDb);L2#h)`iw-BJ{V0^Z?>(}T|v*I;b z)I7g*7xJ$K1-Zc8k<+q5!2Bg)C)`z&uJ69F#!%#difEc%`QlqtOFvG-zx5HqT-(DN!1 zU(BGHwiNm(vg;u6bIET4RL`z6Izq+<=lJuzF`T>36mItwC8IPYPN9miELNK-JM~7p zm%S4q^hOPE8nx7YaQ6t;B^bAJ_Xht-y<@?Ph1-k1WRqT>;Ga^%9j<=s>U}i{o5qGC zA4NGwWzAS@E|;$;$G=5!`+hP0^Hl0=wqOANb~1UrH!5fPV%DB1v7=5>(PPKdM!kB# zFzjbNtuL>0hv3TKG~Op$S#s%pvB@X>ugO&e_2|6E$3Ht{+z%BzeiO)@ZNAXhPJ5l- zzcAx^tNHfX5L=O7Sz^=}`G$R^+y#U5tmsxXhx}k`YD9Z?8fH7h;Rjv7gLuP0SF{ou zyRAJYN6@+>hB;%ON^Z}7kWq|ZGm$>2U8sfAA$j<&+nzTh#Lk)ZD<|p{b5ii-Y7nc* zya)R$ulY7610A$C2KX!cPX+M8p!888iC?fg1c zBYN_aY&CR#ju5AI2j+-FGyGIL>)_J5~Vh^YFK^I+a_&Y_Du5L|gnoF2AA@Qs!$0Nneeu|=V>#nDduDk#+Z0AR0dh&A z%M4!TgXNqwUns*tW^6gXaUDg6MeuMUd}W z5RLC~{V{xD2TX`Xo|g-^6X8p`6XHt-)~%ldvJ?rh#tpei1<{(mdx~wbb_q{&uQC}= zeR8JXZDbK37hJS*JI!!VZhneSf9^0xAF1NdK?v(t-ye3YiqORw8C1t|t9&f@vpn9r zW@lr;g{2By%Ss(Adwpry2Mb`0`#IOPH=C++N7v z`V@}c`iF;&QH*!2)^Wcd|LrWY$_e!=UJ%+^J6m$PR^6?mj�x6shDxyDY!EyO#w9 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 i@EYgbTgH9i|33h1;5NEx#Wy|x0000-L1;Fyx1 zl&avFo0y&&l$w}QS$HzlhJk@uBQqqTB*NFnDmgz_FA=0huOhbqsGEVo#=fE;F*!T6 zL?J0PJu}Z%>HY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b_zBXRzL%C zQ%e#RDspr3imfVamB8j&0ofp7eI*63l9Fs&C5WRUd;=7m^NUgyO!Z84lMRdv70fO5 z3{6eV&5d*vj0_A-^bHL44UKgTEv-yUtPBhkpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pF zzr4I$uiRKKzbIYb(9+UU-@r)U$VeBcLbtdwuOzWTH?LS3W`avKTB%1XJkii(hGOE?jkSNl+@ny;uz{ z4yi0i)elN7&Mz%W21Z<(GRUd|E9aur#FG4?ko^1{SSSW$0+w{G)FHpGsVi)#n{ow$kfQx(Ztoz(AC7r!o<|l z%-qr0*u>b$+0_E3*Cju>G&eP`1g19yq1PCvUQmL_Edbi=l3J8mmYU*Ll%J~r_PA9h zZnqfVG!Lpb1-Dxaaq86vIz}H9y-3jw69T3o5EGtwfgE`9Pt60S`66KA*7bj?%fP@? z=jq}YQgQ3eEXVv?1|kj2GrO1?bp^Fp^e$`lzFt!JCh>p2{b7Dj)pcucgqU?QIzGL? z(H?RjPG!Nd(vHbhDhGZqS$^bTokNSgt#wVngvlv;$W0U9EEs`lDhet(}Cc`bNjM9svR!k>Od{=c{Q;)}(PEv8x| zhpnFK&T(_~y=9kQ`c-uwJ@mS4clhIvKZ-AG%Z+ZVl%4ubaMAYFYkvK$6Xn}J@A=9P zj9U*TB>1UK-n+Et^{!tvcGvG`%oLEd3+Ps!VbqiPaEsf7(??BwXXk~lzFO^j`OX8I z`RDZ)zBQTcyZriV+j6V9_oXdu)neJ$u1?@8+}g=7w^CQ{?S$97Pd^;{czuC~_Y7%A zfx?_+woi1#D{Cu$C;e07DCJ3#OqbN)4z0W^zKC_(R4LtETRMf39K0R681Jj@*Kca^ zt(cYG(av({Vd4Ih-{YoD>8bH@Th}vt(ls_~|FkV{HmPjWQP4V<{IpU(%qR2y+zlZq zJtu`)CS3~JHer*-YKsexge=_!R4nz1Qy2UXmOw?umQDqr`807 zJ&%0q+WGdvJlS{8Pp1A};{C+RUoY{o;1p3I#`R1++82Y@CLQvqHI}SAZO_QYP(J;* UlfhHrDo`2i>FVdQ&MBb@09iOpJ^%m! literal 0 HcmV?d00001 diff --git a/app/assets/images/pages/play/modal/play-items-modal-item-background.png b/app/assets/images/pages/play/modal/play-items-modal-item-background.png new file mode 100644 index 0000000000000000000000000000000000000000..11ea27c2cb63a5a47ebebff10cd42a9ccc29483e GIT binary patch literal 3993 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 C(g=b8 literal 0 HcmV?d00001 diff --git a/app/assets/images/pages/play/modal/play-items-modal-selected-item-background.png b/app/assets/images/pages/play/modal/play-items-modal-selected-item-background.png new file mode 100644 index 0000000000000000000000000000000000000000..4525a8505a69ad75b0ee34302a1f0e4dd4e542ab GIT binary patch literal 3910 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 literal 0 HcmV?d00001 diff --git a/app/assets/images/pages/play/modal/play-items-modal-selected-tab.png b/app/assets/images/pages/play/modal/play-items-modal-selected-tab.png new file mode 100644 index 0000000000000000000000000000000000000000..fbef3068543e87d74f09ec5668e6d233371ccec9 GIT binary patch literal 2524 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 FzW^?XD@6bR literal 0 HcmV?d00001 diff --git a/app/assets/images/pages/play/modal/play-items-modal-tab-icon-misc.png b/app/assets/images/pages/play/modal/play-items-modal-tab-icon-misc.png new file mode 100644 index 0000000000000000000000000000000000000000..4a1240b832655d5019ca747a4259ce5f35b6c23e GIT binary patch literal 5585 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 literal 0 HcmV?d00001 diff --git a/app/lib/surface/CountdownScreen.coffee b/app/lib/surface/CountdownScreen.coffee index 1f0b6925d..23e35e83b 100644 --- a/app/lib/surface/CountdownScreen.coffee +++ b/app/lib/surface/CountdownScreen.coffee @@ -34,7 +34,7 @@ module.exports = class CountdownScreen extends CocoClass makeCountdownText: -> size = Math.ceil @camera.canvasHeight / 2 - text = new createjs.Text '3...', "#{size}px Bangers", '#F7B42C' + text = new createjs.Text '3...', "#{size}px Open Sans Condensed", '#F7B42C' text.shadow = new createjs.Shadow '#000', Math.ceil(@camera.canvasHeight / 300), Math.ceil(@camera.canvasHeight / 300), Math.ceil(@camera.canvasHeight / 120) text.textAlign = 'center' text.textBaseline = 'middle' diff --git a/app/lib/surface/WaitingScreen.coffee b/app/lib/surface/WaitingScreen.coffee index cc54906f3..25c2081f4 100644 --- a/app/lib/surface/WaitingScreen.coffee +++ b/app/lib/surface/WaitingScreen.coffee @@ -34,7 +34,7 @@ module.exports = class WaitingScreen extends CocoClass makeWaitingText: -> size = Math.ceil @camera.canvasHeight / 8 - text = new createjs.Text @waitingText, "#{size}px Bangers", '#F7B42C' + text = new createjs.Text @waitingText, "#{size}px Open Sans Condensed", '#F7B42C' text.shadow = new createjs.Shadow '#000', Math.ceil(@camera.canvasHeight / 300), Math.ceil(@camera.canvasHeight / 300), Math.ceil(@camera.canvasHeight / 120) text.textAlign = 'center' text.textBaseline = 'middle' diff --git a/app/locale/en.coffee b/app/locale/en.coffee index 6b779508a..ea0c083f9 100644 --- a/app/locale/en.coffee +++ b/app/locale/en.coffee @@ -51,6 +51,11 @@ players: "players" # Hover over a level on /play hours_played: "hours played" # Hover over a level on /play items: "Items" # Tooltip on item shop button from /play + unlock: "Unlock" # For purchasing items and heroes + confirm: "Confirm" + owned: "Owned" # For items you own + locked: "Locked" + skills_granted: "Skills Granted" # Property documentation details heroes: "Heroes" # Tooltip on hero shop button from /play achievements: "Achievements" # Tooltip on achievement list button from /play account: "Account" # Tooltip on account button from /play @@ -104,11 +109,12 @@ recovery_sent: "Recovery email sent." items: + primary: "Primary" + secondary: "Secondary" armor: "Armor" - hands: "Hands" accessories: "Accessories" - minions: "Minions" misc: "Misc" + books: "Books" common: loading: "Loading..." @@ -306,6 +312,9 @@ attack: "Damage" # Can also translate as "Attack" health: "Health" speed: "Speed" + regeneration: "Regeneration" + range: "Range" # As in "attack or visual range" + blocks: "Blocks" # As in "this shield blocks this much damage" skills: "Skills" save_load: diff --git a/app/models/Purchase.coffee b/app/models/Purchase.coffee new file mode 100644 index 000000000..c2b9614b5 --- /dev/null +++ b/app/models/Purchase.coffee @@ -0,0 +1,16 @@ +CocoModel = require('./CocoModel') + +module.exports = class Purchase extends CocoModel + @className: "Purchase" + urlRoot: "/db/purchase" + @schema: require 'schemas/models/purchase.schema' + + @makeFor: (toPurchase) -> + purchase = new Purchase({ + recipient: me.id + purchaser: me.id + purchased: { + original: toPurchase.get('original') + collection: _.string.underscored toPurchase.constructor.className + } + }) \ No newline at end of file diff --git a/app/models/ThangType.coffee b/app/models/ThangType.coffee index 4a31875c0..1b8509a95 100644 --- a/app/models/ThangType.coffee +++ b/app/models/ThangType.coffee @@ -2,6 +2,8 @@ CocoModel = require './CocoModel' SpriteBuilder = require 'lib/sprites/SpriteBuilder' LevelComponent = require './LevelComponent' +utils = require 'lib/utils' + buildQueue = [] module.exports = class ThangType extends CocoModel @@ -328,14 +330,30 @@ module.exports = class ThangType extends CocoModel props: props, stats: stats formatStatDisplay: (name, modifiers) -> - name = {maxHealth: 'Health', maxSpeed: 'Speed', healthReplenishRate: 'Regeneration'}[name] ? name - name = _.string.humanize name + i18nKey = { + maxHealth: 'health' + maxSpeed: 'speed' + healthReplenishRate: 'regeneration' + attackDamage: 'attack' + attackRange: 'range' + shieldDefenseFactor: 'blocks' + visualRange: 'range' + }[name] + + if i18nKey + name = $.i18n.t 'choose_hero.' + i18nKey + else + name = _.string.humanize name + format = '' - format = 'm' if /(range|radius|distance)$/i.test name + format = 'm' if /(range|radius|distance|vision)$/i.test name format ||= 's' if /cooldown$/i.test name format ||= 'm/s' if /speed$/i.test name format ||= '/s' if /(regeneration| rate)$/i.test name value = modifiers.setTo + if /(blocks)$/i.test name + format ||= '%' + value = (value*100).toFixed(1) value = value.join ', ' if _.isArray value display = [] display.push "#{value}#{format}" if value? diff --git a/app/models/User.coffee b/app/models/User.coffee index e7899b292..4f51bff84 100644 --- a/app/models/User.coffee +++ b/app/models/User.coffee @@ -67,15 +67,16 @@ module.exports = class User extends CocoModel gems: -> gemsEarned = @get('earned')?.gems ? 0 - purchased = @get('purchased') ? {} - gemsPurchased = purchased.gems ? 0 - sum = (arr) -> arr?.reduce((a, b) -> a + b) ? 0 - gemsSpent = sum(purchased.heroes) + sum(purchased.items) + sum(purchased.levels) + gemsPurchased = @get('purchased')?.gems ? 0 + gemsSpent = @get('spent') ? 0 gemsEarned + gemsPurchased - gemsSpent - earnedHero: (heroOriginal) -> heroOriginal in (me.get('earned')?.heroes ? []) - earnedItem: (itemOriginal) -> itemOriginal in (me.get('earned')?.items ? []) - earnedLevel: (levelOriginal) -> levelOriginal in (me.get('earned')?.levels ? []) + heroes: -> (me.get('earned')?.heroes ? []).concat(me.get('purchased')?.heroes ? []) + items: -> (me.get('earned')?.items ? []).concat(me.get('purchased')?.items ? []) + levels: -> (me.get('earned')?.levels ? []).concat(me.get('purchased')?.levels ? []) + ownsHero: (heroOriginal) -> heroOriginal in @heroes() + ownsItem: (itemOriginal) -> itemOriginal in @items() + ownsLevel: (levelOriginal) -> levelOriginal in @levels() getBranchingGroup: -> return @branchingGroup if @branchingGroup diff --git a/app/schemas/models/purchase.schema.coffee b/app/schemas/models/purchase.schema.coffee new file mode 100644 index 000000000..9808725b1 --- /dev/null +++ b/app/schemas/models/purchase.schema.coffee @@ -0,0 +1,21 @@ +c = require './../schemas' + +purchaseables = ['level', 'thang_type'] + +PurchaseSchema = c.object({title: 'Purchase', required: ['purchaser', 'recipient', 'purchased']}, { + purchaser: c.objectId(links: [ + {rel: 'extra', href: '/db/user/{($)}'} + ]) # in case of gifts + recipient: c.objectId(links: [ + {rel: 'extra', href: '/db/user/{($)}'} + ]) + purchased: c.object({title: 'Target', required: ['collection', 'original']}, { + collection: {enum: purchaseables} + original: c.objectId(title: 'Target Original') + }) + created: c.date({title: 'Created', readOnly: true}) +}) + +c.extendBasicProperties(PurchaseSchema, 'patch') + +module.exports = PurchaseSchema \ No newline at end of file diff --git a/app/schemas/models/user.coffee b/app/schemas/models/user.coffee index 11e9c9716..aff178469 100644 --- a/app/schemas/models/user.coffee +++ b/app/schemas/models/user.coffee @@ -268,7 +268,8 @@ _.extend UserSchema.properties, thangTypeMiscPatches: c.int() earned: c.RewardSchema 'earned by achievements' - purchased: c.RewardSchema 'purchased with gems' + purchased: c.RewardSchema 'purchased with gems or money' + spent: {type: 'number'} c.extendBasicProperties UserSchema, 'user' diff --git a/app/styles/achievements.sass b/app/styles/achievements.sass index 4b3c95e3b..3ad9b4dc2 100644 --- a/app/styles/achievements.sass +++ b/app/styles/achievements.sass @@ -126,7 +126,7 @@ $user-achievements-scale: 0.8 padding: $overall-scale * 24px $overall-scale * 30px $overall-scale * 20px $overall-scale * 60px .achievement-title - font-family: Bangers + font-family: Open Sans Condensed font-size: $overall-scale * 28px padding-left: $overall-scale * -50px diff --git a/app/styles/base.sass b/app/styles/base.sass index 10bef6efb..e91fe640b 100644 --- a/app/styles/base.sass +++ b/app/styles/base.sass @@ -64,7 +64,7 @@ h1 h2 h3 h4 margin: 10px 10px 0px .footer-link-text a - font-family: 'Bangers', cursive + font-family: 'Open Sans Condensed', cursive font-weight: normal font-size: 25px letter-spacing: 1px diff --git a/app/styles/bootstrap/_bootswatch.scss b/app/styles/bootstrap/_bootswatch.scss index 263da36b2..dcb68f657 100644 --- a/app/styles/bootstrap/_bootswatch.scss +++ b/app/styles/bootstrap/_bootswatch.scss @@ -6,7 +6,6 @@ // TYPOGRAPHY // ----------------------------------------------------- -@import url(//fonts.googleapis.com/css?family=Bangers); @import url(//fonts.googleapis.com/css?family=Open+Sans+Condensed:700&subset=latin,latin-ext,cyrillic-ext,greek-ext,greek,vietnamese,cyrillic); // SCAFFOLDING diff --git a/app/styles/bootstrap/_variables.scss b/app/styles/bootstrap/_variables.scss index e35c82986..edb181e32 100644 --- a/app/styles/bootstrap/_variables.scss +++ b/app/styles/bootstrap/_variables.scss @@ -75,8 +75,8 @@ $font-size-h6: ceil($font-size-base * 0.85) !default; // ~12px $line-height-base: 1.428571429 !default; // 20/14 $line-height-computed: floor($font-size-base * $line-height-base) !default; // ~20px -$headings-font-family: 'Bangers', cursive; // empty to use BS default, $baseFontFamily; -$headings-font-weight: 500 !default; +$headings-font-family: 'Open Sans Condensed', cursive; // empty to use BS default, $baseFontFamily; +$headings-font-weight: 700 !default; $headings-line-height: 1.1 !default; $headings-color: #317EAC; diff --git a/app/styles/common/top_nav.sass b/app/styles/common/top_nav.sass index f659ee897..af657327a 100644 --- a/app/styles/common/top_nav.sass +++ b/app/styles/common/top_nav.sass @@ -74,7 +74,7 @@ a.disabled width: 280px padding: 0px border-radius: 0px - font-family: Bangers + font-family: Open Sans Condensed > .user-dropdown-header position: relative diff --git a/app/styles/home.sass b/app/styles/home.sass index e660b2af3..f1d9d0982 100644 --- a/app/styles/home.sass +++ b/app/styles/home.sass @@ -41,7 +41,7 @@ bottom: -25px color: $yellow font-size: 90px - font-family: Bangers + font-family: Open Sans Condensed @include transition(color .25s ease-in-out) &:hover div, &.hovered div @@ -79,7 +79,7 @@ bottom: -15px color: $yellow font-size: 50px - font-family: Bangers + font-family: Open Sans Condensed @include transition(color .10s linear) h1 diff --git a/app/styles/play/ladder_home.sass b/app/styles/play/ladder_home.sass index 48678ad59..b17a4ea50 100644 --- a/app/styles/play/ladder_home.sass +++ b/app/styles/play/ladder_home.sass @@ -21,7 +21,7 @@ .overlay-text color: $yellow - font-family: Bangers + font-family: Open Sans Condensed @include transition(color .10s linear) .level-difficulty diff --git a/app/styles/play/level/modal/victory.sass b/app/styles/play/level/modal/victory.sass index b393e2d76..9a343b3ce 100644 --- a/app/styles/play/level/modal/victory.sass +++ b/app/styles/play/level/modal/victory.sass @@ -55,4 +55,4 @@ body.ipad #level-victory-modal .modal-body font-size: 30px - font-family: Bangers + font-family: Open Sans Condensed diff --git a/app/styles/play/modal/play-items-modal.sass b/app/styles/play/modal/play-items-modal.sass index 71c03ee4e..c3c7f7ae3 100644 --- a/app/styles/play/modal/play-items-modal.sass +++ b/app/styles/play/modal/play-items-modal.sass @@ -1,8 +1,347 @@ +@import "app/styles/mixins" + #play-items-modal - .item-view - width: 420px - float: left - background-color: white - border-radius: 6px - margin: 5px + .big-font + text-transform: uppercase + font-family: "Open Sans Condensed" + font-weight: bold + + .one-line + white-space: nowrap + overflow: hidden + text-overflow: ellipsis + + //- Clear modal defaults + .modal-dialog + padding: 0 + + + //- Background + #play-items-modal-bg + position: absolute + top: -69px + left: -8px + + + //- Header + + h1 + position: absolute + left: 200px + top: 25px + color: rgb(254,195,70) + font-size: 38px + text-shadow: black 4px 4px 0, black -4px -4px 0, black 4px -4px 0, black -4px 4px 0, black 4px 0px 0, black 0px -4px 0, black -4px 0px 0, black 0px 4px 0 + margin: 0 + + + //- Gems count + + #gems-count-container + position: absolute + left: 425px + top: 10px + width: 160px + height: 66px + + #gems-count + position: absolute + left: 75px + top: 17px + font-size: 25px + color: rgb(1,64,91) + + + //- Close modal button + + #close-modal + position: absolute + left: 602px + top: 23px + width: 60px + height: 60px + color: white + text-align: center + font-size: 30px + padding-top: 7px + cursor: pointer + + &:hover + color: yellow + + + //- Nav bar + + .nav + position: absolute + top: 125px + left: -31px + width: 178px + + li + background: url(/images/pages/play/modal/play-items-modal-tab.png) + padding: 5px + margin: -5px 0 + height: 80px + padding: 0 + + a + font-size: 18px + line-height: 50px + background: none + color: rgb(195,153,124) + font-weight: bold + padding: 10px 7px + + //img + + + li.active + background: url(/images/pages/play/modal/play-items-modal-selected-tab.png) + width: 197px + + a + color: white + + + //- Item List + + .tab-content + position: absolute + top: 116px + left: 148px + width: 669px + height: 507px + overflow: hidden + + .tab-pane + height: 100% + + .nano-content + padding: 26px 51px 26px 26px + + + //- Item box + + .item + cursor: pointer + width: 187px + padding: 10px + height: 195px + float: left + background: url(/images/pages/play/modal/play-items-modal-item-background.png) + margin: 4px + text-align: center + position: relative + + strong + position: absolute + top: 7px + padding: 2px + left: 0 + right: 0 + font-size: 18px + z-index: 2 + line-height: 18px + color: rgb(22,16,5) + + img + width: 90px + height: 90px + &.item-img + top: 45px + &.item-shadow + top: 55px + &.item-silhouette + top: 25px + width: 110px + height: 110px + + .glyphicon-lock + font-size: 60px + position: absolute + top: 50px + color: rgb(149,141,123) + z-index: 1 + left: 0 + right: 0 + margin-left: auto + margin-right: auto + + &.bolder + font-weight: bolder + color: rgb(211,200,175) + + .unlock-button + right: 1px + bottom: 0 + width: 93px + height: 41px + font-size: 16px + + .cost + position: absolute + height: 41px + left: 0 + bottom: 0 + width: 95px + line-height: 38px + font-size: 16px + color: rgb(22,61,73) + font-weight: bold + + img + width: 22px + height: 22px + margin-right: 8px + position: relative + top: -2px + + .owned, .locked + position: absolute + left: 0 + right: 0 + bottom: 0 + height: 41px + color: rgb(22,61,73) + line-height: 38px + font-size: 16px + + &.selected + background: url(/images/pages/play/modal/play-items-modal-selected-item-background.png) + + + //- Item list scrollbar + + .nano-pane + width: 16px + background: black + border: 3px solid rgb(97,76,58) + + .nano-slider + background: rgb(244,170,66) + border: 3px solid black + border-radius: 10px + margin-left: -3px + margin-right: -3px + + // color: red + + + //- Item details + + #item-title + position: absolute + width: 228px + height: 50px + left: 910px + top: 60px + z-index: 2 + + h2 + font-size: 20px + margin: 12px 20px + text-align: center + color: rgb(53,40,25) + + #item-details-body + position: absolute + left: 860px + top: 126px + width: 330px + height: 453px + //background: rgba(100,100,100,0.5) + overflow: scroll + + #item-container + height: 163px + width: 100% + + .item-img, .item-shadow + width: 130px + height: 130px + + .item-img + top: 15px + + .item-shadow + top: 25px + + img.hr + width: 80% + margin: 0 10% -3px + + &.faded + opacity: 0.4 + + .stat-row + height: 24px + position: relative + font-size: 20px + font-weight: bold + + .stat-label + position: absolute + left: 54px + color: rgb(93,73,52) + + .stat + position: absolute + left: 150px + color: rgb(42,38,28) + + #skills + margin: 25px + + h3 + color: rgb(41,35,25) + + strong + color: rgb(50,50,30) + + #selected-item-unlock-button + left: 856px + top: 594px + width: 337px + height: 41px + font-size: 16px + + + //- Item icons w/shadows (both in list and details areas) + + .item-img, .item-shadow, .item-silhouette + position: absolute + margin-left: auto + margin-right: auto + left: 0 + right: 0 + bottom: 0 + + .item-img + z-index: 1 + + .item-shadow + left: 5px + @include filter(contrast(0%) brightness(0%)) + opacity: 0.2 + + .item-silhouette + @include filter(contrast(0%) brightness(0%)) + opacity: 0.3 + + + //- Unlock buttons (both in list and details areas) + + .unlock-button + position: absolute + border: 3px solid rgb(7,65,83) + background: rgb(0,119,168) + color: white + font-size: 16px + border-radius: 0 + + &:disabled + background: rgb(72, 106, 113) + opacity: 1 + color: rgba(255,255,255, 0.4) diff --git a/app/templates/play/modal/item-details-view.jade b/app/templates/play/modal/item-details-view.jade new file mode 100644 index 000000000..dbe18d04a --- /dev/null +++ b/app/templates/play/modal/item-details-view.jade @@ -0,0 +1,29 @@ + +#item-title + h2.one-line.big-font= item ? item.name : '' + +#item-details-body + if item + #item-container + img.item-img(src=item.getPortraitURL()) + img.item-shadow(src=item.getPortraitURL()) + + img.hr(src="/images/pages/play/modal/play-items-modal-hr.png") + + for stat in stats + div.stat-row.big-font + div.stat-label= stat.name + div.stat= stat.display + img.hr(src="/images/pages/play/modal/play-items-modal-hr.png" class=stat.isLast ? "" : "faded") + + if props.length + #skills + h3.big-font(data-i18n="play.skills-granted") + for prop in props + p + strong.big-font= prop.name + span.spr : + span!= prop.description + +if item && !item.owned + button#selected-item-unlock-button.btn.big-font.unlock-button(disabled=!item.affordable, data-item-id=item.id, data-i18n="play.unlock") Unlock \ No newline at end of file diff --git a/app/templates/play/modal/play-items-modal.jade b/app/templates/play/modal/play-items-modal.jade index 172c500bc..266481d7e 100644 --- a/app/templates/play/modal/play-items-modal.jade +++ b/app/templates/play/modal/play-items-modal.jade @@ -1,17 +1,48 @@ -extends /templates/modal/modal_base - -block modal-header-content - h3(data-i18n="play.items") Items - -block modal-body-content - ul.nav.nav-tabs - for slotGroup, index in slotGroupsArray - li(class=index ? "" : "active") - a(href="#slot-group-" + slotGroup, data-toggle="tab") - span= slotGroupsNames[index] - .tab-content - for slotGroup, index in slotGroupsArray - .tab-pane(id="slot-group-" + slotGroup, class=index ? "" : "active") - h3 buy some #{slotGroupsNames[index]} yo: - for item in slotGroups[slotGroup] - .replace-me(data-item-id=item.id) +.modal-dialog + .modal-content + img(src="/images/pages/play/modal/play-items-modal-background.png")#play-items-modal-bg + + h1.big-font(data-i18n="play.items") + + div#gems-count-container + span#gems-count.big-font= gems + + div#close-modal + span.glyphicon.glyphicon-remove + + ul.nav.nav-pills.nav-stacked + for category, index in itemCategories + li(class=index ? "" : "active") + a.one-line(href="#item-category-" + category, data-toggle="tab") + img.tab-icon(src="/images/pages/play/modal/play-items-modal-tab-icon-"+category+".png") + span.big-font= itemCategoryNames[index] + + + .tab-content + for category, index in itemCategories + .tab-pane(id="item-category-" + category, class=index ? "" : "active") + .nano + .nano-content + for item in itemCategoryCollections[category].models + .item(data-item-id=item.id) + if item.silhouetted && !item.owned + span.glyphicon.glyphicon-lock.bolder + span.glyphicon.glyphicon-lock + img.item-silhouette(src=item.getPortraitURL()) + else + strong.big-font= item.name + img.item-img(src=item.getPortraitURL()) + img.item-shadow(src=item.getPortraitURL()) + + if item.owned + span.big-font.owned(data-i18n="play.owned") + else if item.silhouetted + span.big-font.locked(data-i18n="play.locked") + else + span.cost + img(src="/images/common/gem.png") + span.big-font= item.get('gems') + button.btn.unlock-button.big-font(data-i18n="play.unlock", disabled=!item.affordable, data-item-id=item.id) + .clearfix + + #item-details-view diff --git a/app/views/HomeView.coffee b/app/views/HomeView.coffee index 0370212c3..e7582e8ce 100644 --- a/app/views/HomeView.coffee +++ b/app/views/HomeView.coffee @@ -3,6 +3,9 @@ template = require 'templates/home' WizardLank = require 'lib/surface/WizardLank' ThangType = require 'models/ThangType' Simulator = require 'lib/simulator/Simulator' + +PlayItemsModal = require 'views/play/modal/PlayItemsModal' # TEST + {me} = require '/lib/auth' module.exports = class HomeView extends RootView @@ -34,3 +37,8 @@ module.exports = class HomeView extends RootView e.stopImmediatePropagation() window.tracker?.trackEvent 'Homepage', Action: 'Play' window.open '/play', '_blank' + + # TEST + afterInsert: -> + super() + @openModalView new PlayItemsModal() diff --git a/app/views/game-menu/ChooseHeroView.coffee b/app/views/game-menu/ChooseHeroView.coffee index 217869dd1..b322d3ed8 100644 --- a/app/views/game-menu/ChooseHeroView.coffee +++ b/app/views/game-menu/ChooseHeroView.coffee @@ -36,7 +36,7 @@ module.exports = class ChooseHeroView extends CocoView getRenderData: (context={}) -> context = super(context) context.heroes = @heroes.models - hero.locked = temporaryHeroInfo[hero.get('slug')].status is 'Locked' and not me.earnedHero hero.get('original') for hero in context.heroes + hero.locked = temporaryHeroInfo[hero.get('slug')].status is 'Locked' and not me.ownsHero hero.get('original') for hero in context.heroes context.level = @options.level context.codeLanguages = [ {id: 'python', name: 'Python (Default)'} @@ -79,7 +79,7 @@ module.exports = class ChooseHeroView extends CocoView size = 100 - (50 / 3) * distance $(@).css width: size, height: size, top: -(100 - size) / 2 heroInfo = temporaryHeroInfo[hero.get('slug')] - locked = heroInfo.status is 'Locked' and not me.earnedHero ThangType.heroes[hero.get('slug')] + locked = heroInfo.status is 'Locked' and not me.ownsHero ThangType.heroes[hero.get('slug')] hero = @loadHero hero, heroIndex @preloadHero heroIndex + 1 @preloadHero heroIndex - 1 diff --git a/app/views/kinds/CocoView.coffee b/app/views/kinds/CocoView.coffee index 115614be1..5d62f4ba3 100644 --- a/app/views/kinds/CocoView.coffee +++ b/app/views/kinds/CocoView.coffee @@ -93,6 +93,13 @@ module.exports = class CocoView extends Backbone.View # View Rendering + renderSelectors: (selectors...) -> + newTemplate = $(@template(@getRenderData())) + for selector in selectors + @$el.find(selector).replaceWith(newTemplate.find(selector)) + @delegateEvents() + @$el.i18n() + render: -> return @ unless me view.destroy() for id, view of @subviews diff --git a/app/views/play/WorldMapView.coffee b/app/views/play/WorldMapView.coffee index 4a9198c1c..d1751f5db 100644 --- a/app/views/play/WorldMapView.coffee +++ b/app/views/play/WorldMapView.coffee @@ -83,7 +83,7 @@ module.exports = class WorldMapView extends RootView for level, index in context.campaign.levels level.x ?= 10 + 80 * Math.random() level.y ?= 10 + 80 * Math.random() - level.locked = index > 0 and not me.earnedLevel level.original + level.locked = index > 0 and not me.ownsLevel level.original window.levelUnlocksNotWorking = true if level.locked and level.id is @nextLevel # Temporary level.locked = false if window.levelUnlocksNotWorking # Temporary; also possible in HeroVictoryModal level.color = 'rgb(255, 80, 60)' diff --git a/app/views/play/modal/PlayItemsModal.coffee b/app/views/play/modal/PlayItemsModal.coffee index 3fc55c74c..463d08aab 100644 --- a/app/views/play/modal/PlayItemsModal.coffee +++ b/app/views/play/modal/PlayItemsModal.coffee @@ -1,65 +1,225 @@ ModalView = require 'views/kinds/ModalView' +CocoView = require 'views/kinds/CocoView' + template = require 'templates/play/modal/play-items-modal' +itemDetailsTemplate = require 'templates/play/modal/item-details-view' + CocoCollection = require 'collections/CocoCollection' ThangType = require 'models/ThangType' -ItemView = require 'views/game-menu/ItemView' +LevelComponent = require 'models/LevelComponent' +Purchase = require 'models/Purchase' + +utils = require 'lib/utils' + +PAGE_SIZE = 200 + +slotToCategory = { + 'right-hand': 'primary' + + 'left-hand': 'secondary' + + 'head': 'armor' + 'torso': 'armor' + 'gloves': 'armor' + 'feet': 'armor' + + 'eyes': 'accessories' + 'neck': 'accessories' + 'wrists': 'accessories' + 'left-ring': 'accessories' + 'right-ring': 'accessories' + 'waist': 'accessories' + + 'pet': 'misc' + 'minion': 'misc' + 'flag': 'misc' + 'misc-0': 'misc' + 'misc-1': 'misc' + + 'programming-book': 'books' +} module.exports = class PlayItemsModal extends ModalView className: 'modal fade play-modal' template: template - modalWidthPercent: 90 id: 'play-items-modal' - #instant: true - slotGroups: - armor: ['torso', 'head', 'gloves', 'feet'] - hands: ['right-hand', 'left-hand'] - accessories: ['eyes', 'neck', 'left-ring', 'right-ring', 'waist'] - minions: ['minion', 'pet'] - misc: ['programming-book', 'flag', 'misc-0', 'misc-1'] - #events: - # 'change input.select': 'onSelectionChanged' + events: + 'click .item': 'onItemClicked' + 'shown.bs.tab': 'onTabClicked' + 'click .unlock-button': 'onUnlockButtonClicked' + 'click #close-modal': 'hide' constructor: (options) -> super options - @items = new CocoCollection([], {model: ThangType}) - @items.url = '/db/thang.type?view=items&project=name,description,components,original,rasterIcon' - @supermodel.loadCollection(@items, 'items') + me.set('spent', 0) + @items = new Backbone.Collection() + @itemCategoryCollections = {} + + project = [ + 'name' + 'components.config' + 'components.original' + 'slug' + 'original' + 'rasterIcon' + 'gems' + 'i18n' + ] + + itemFetcher = new CocoCollection([], { url: '/db/thang.type?view=items', project: project, model: ThangType }) + itemFetcher.skip = 0 + itemFetcher.fetch({data: {skip: 0, limit: PAGE_SIZE}}) + @listenTo itemFetcher, 'sync', @onItemsFetched + @supermodel.loadCollection(itemFetcher, 'items') + @idToItem = {} - groupItems: -> - groups = {} - for item in @items.models - itemSlots = item.getAllowedSlots() - for group, groupSlots of @slotGroups - if _.find itemSlots, ((slot) -> slot in groupSlots) - groups[group] ?= [] - groups[group].push item - groups + onItemsFetched: (itemFetcher) -> + gemsOwned = me.gems() + needMore = itemFetcher.models.length is PAGE_SIZE + for model in itemFetcher.models + continue unless cost = model.get('gems') + category = slotToCategory[model.getAllowedSlots()[0]] or 'misc' + @itemCategoryCollections[category] ?= new Backbone.Collection() + collection = @itemCategoryCollections[category] + collection.comparator = 'gems' + collection.add(model) + model.name = utils.i18n model.attributes, 'name' + model.affordable = cost <= gemsOwned + model.owned = me.ownsItem model.get('original') + model.silhouetted = model.isSilhouettedItem() + @idToItem[model.id] = model + if needMore + itemFetcher.skip += PAGE_SIZE + itemFetcher.fetch({data: {skip: itemFetcher.skip, limit: PAGE_SIZE}}) + getRenderData: (context={}) -> context = super(context) - context.slotGroups = @groupItems() - context.slotGroupsArray = _.keys context.slotGroups - context.slotGroupsNames = ($.i18n.t "items.#{slotGroup}" for slotGroup in context.slotGroupsArray) + context.itemCategoryCollections = @itemCategoryCollections + context.itemCategories = _.keys @itemCategoryCollections + context.itemCategoryNames = ($.i18n.t "items.#{category}" for category in context.itemCategories) + context.gems = me.gems() context afterRender: -> super() return unless @supermodel.finished() Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'game-menu-open', volume: 1 - @addItemViews() + @$el.find('.modal-dialog').css({width: "1230px", height: "660px", background: 'none'}) + @$el.find('.background-wrapper').css({'background', 'none'}) + @$el.find('.nano:visible').nanoScroller({alwaysVisible: true}) + @itemDetailsView = new ItemDetailsView() + @insertSubView(@itemDetailsView) onHidden: -> super() Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'game-menu-close', volume: 1 - addItemViews: -> - keys = (item.id for item in @items.models) - itemMap = _.zipObject keys, @items.models - for itemStub in @$el.find('.replace-me') - itemID = $(itemStub).data('item-id') - item = itemMap[itemID] - itemView = new ItemView({item: item, includes: {name: true, stats: true, props: true}}) - itemView.render() - $(itemStub).replaceWith(itemView.$el) - @registerSubView(itemView) + + #- Click events + + onItemClicked: (e) -> + return if $(e.target).closest('.unlock-button').length + itemEl = $(e.target).closest('.item') + wasSelected = itemEl.hasClass('selected') + @$el.find('.item.selected').removeClass('selected') + if wasSelected + item = null + else + item = @idToItem[itemEl.data('item-id')] + if item.silhouetted + item = null + else + itemEl.addClass('selected') unless wasSelected + @itemDetailsView.setItem(item) + + onTabClicked: (e) -> + $($(e.target).attr('href')).find('.nano').nanoScroller({alwaysVisible: true}) + + onUnlockButtonClicked: (e) -> + button = $(e.target) + if button.hasClass('confirm') + item = @idToItem[$(e.target).data('item-id')] + purchase = Purchase.makeFor(item) + purchase.save() + + #- set local changes to mimic what should happen on the server... + purchased = me.get('purchased') ? {} + purchased.items ?= [] + purchased.items.push(item.get('original')) + item.owned = true + me.set('purchased', purchased) + me.set('spent', (me.get('spent') ? 0) + item.get('gems')) + + #- ...then rerender key bits + @renderSelectors(".item[data-item-id='#{item.id}']", "#gems-count") + @itemDetailsView.render() + else + button.addClass('confirm').text($.i18n.t('play.confirm')) + @$el.one 'click', (e) -> + button.removeClass('confirm').text($.i18n.t('play.unlock')) if e.target isnt button[0] + +class ItemDetailsView extends CocoView + id: "item-details-view" + template: itemDetailsTemplate + + constructor: -> + super(arguments...) + @propDocs = {} + + setItem: (@item) -> + @render() + + if @item + stats = @item.getFrontFacingStats() + props = (p for p in stats.props when not @propDocs[p]) + return if props.length is 0 + + docs = new CocoCollection([], { + url: '/db/level.component?view=prop-doc-lookup' + model: LevelComponent + project: [ + 'propertyDocumentation.name' + 'propertyDocumentation.description' + 'propertyDocumentation.i18n' + ] + }) + + docs.fetch({ data: { + componentOriginals: [c.original for c in @item.get('components')].join(',') + propertyNames: props.join(',') + }}) + @listenToOnce docs, 'sync', @onDocsLoaded + + onDocsLoaded: (levelComponents) -> + for component in levelComponents.models + for propDoc in component.get('propertyDocumentation') + @propDocs[propDoc.name] = propDoc + @render() + + getRenderData: -> + c = super() + c.item = @item + if @item + stats = @item.getFrontFacingStats() + c.stats = _.values(stats.stats) + _.last(c.stats).isLast = true if c.stats.length + c.props = [] + progLang = (me.get('aceConfig') ? {}).language or 'python' + for prop in stats.props + description = utils.i18n @propDocs[prop] ? {}, 'description' + + if _.isObject description + description = description[progLang] or _.values(description)[0] + if _.isString description + description = description.replace(/#{spriteName}/g, 'hero') + if fact = stats.stats.shieldDefenseFactor + description = description.replace(/#{shieldDefensePercent}%/g, fact.display) + description = $(marked(description)).html() + + c.props.push { + name: prop + description: description or '...' + } + c \ No newline at end of file diff --git a/server/commons/mapping.coffee b/server/commons/mapping.coffee index 08a65f319..2afb265d9 100644 --- a/server/commons/mapping.coffee +++ b/server/commons/mapping.coffee @@ -6,6 +6,7 @@ module.exports.handlers = 'level_session': 'levels/sessions/level_session_handler' 'level_system': 'levels/systems/level_system_handler' 'patch': 'patches/patch_handler' + 'purchase': 'purchases/purchase_handler' 'thang_type': 'levels/thangs/thang_type_handler' 'user': 'users/user_handler' 'user_code_problem': 'user_code_problems/user_code_problem_handler' diff --git a/server/levels/components/level_component_handler.coffee b/server/levels/components/level_component_handler.coffee index 41207680a..d35d5c5b7 100644 --- a/server/levels/components/level_component_handler.coffee +++ b/server/levels/components/level_component_handler.coffee @@ -1,5 +1,6 @@ LevelComponent = require './LevelComponent' Handler = require '../../commons/Handler' +mongoose = require 'mongoose' LevelComponentHandler = class LevelComponentHandler extends Handler modelClass: LevelComponent @@ -22,4 +23,30 @@ LevelComponentHandler = class LevelComponentHandler extends Handler props.push('official') if req.user?.isAdmin() props + get: (req, res) -> + if req.query.view is 'prop-doc-lookup' + projection = {} + if req.query.project + projection[field] = 1 for field in req.query.project.split(',') + + query = slug: {$exists: true} + + try + components = req.query.componentOriginals.split(',') + components = (mongoose.Types.ObjectId(c) for c in components) + properties = req.query.propertyNames.split(',') + catch e + return @sendBadInputError(res, 'Could not parse componentOriginals or propertyNames.') + + query['original'] = {$in: components} + query['propertyDocumentation.name'] = {$in: properties} + + q = LevelComponent.find(query, projection) + q.exec (err, documents) => + return @sendDatabaseError(res, err) if err + documents = (@formatEntity(req, doc) for doc in documents) + @sendSuccess(res, documents) + else + super(arguments...) + module.exports = new LevelComponentHandler() diff --git a/server/purchases/Purchase.coffee b/server/purchases/Purchase.coffee new file mode 100644 index 000000000..b1f34459a --- /dev/null +++ b/server/purchases/Purchase.coffee @@ -0,0 +1,9 @@ +mongoose = require('mongoose') +deltas = require '../../app/lib/deltas' +log = require 'winston' +{handlers} = require '../commons/mapping' + +PurchaseSchema = new mongoose.Schema({status: String}, {strict: false}) +PurchaseSchema.index({recipient: 1, 'purchase.original': 1}, {unique: true, name: 'unique purchase'}) + +module.exports = mongoose.model('purchase', PurchaseSchema) diff --git a/server/purchases/purchase_handler.coffee b/server/purchases/purchase_handler.coffee new file mode 100644 index 000000000..72a943edf --- /dev/null +++ b/server/purchases/purchase_handler.coffee @@ -0,0 +1,86 @@ +Purchase = require './Purchase' +User = require '../users/User' +Handler = require '../commons/Handler' +{handlers} = require '../commons/mapping' +mongoose = require 'mongoose' +log = require 'winston' +sendwithus = require '../sendwithus' +hipchat = require '../hipchat' + +PurchaseHandler = class PurchaseHandler extends Handler + modelClass: Purchase + editableProperties: [] + postEditableProperties: ['purchased'] + jsonSchema: require '../../app/schemas/models/purchase.schema' + + makeNewInstance: (req) -> + purchase = super(req) + purchase.set 'purchaser', req.user._id + purchase.set 'recipient', req.user._id + purchase.set 'created', new Date().toISOString() + purchase + + post: (req, res) -> + purchased = req.body.purchased + purchaser = req.user._id + purchasedOriginal = purchased?.original + + Handler = require '../commons/Handler' + return @sendBadInputError(res) if not Handler.isID(purchasedOriginal) + + collection = purchased?.collection + return @sendBadInputError(res) if not collection in @jsonSchema.properties.purchased.properties.collection.enum + + handler = require('../' + handlers[collection]) + criteria = { 'original': mongoose.Types.ObjectId(purchasedOriginal) } + sort = { 'version.major': -1, 'version.minor': -1 } + + handler.modelClass.findOne(criteria).sort(sort).exec (err, purchasedItem) => + gemsOwned = req.user.get('earned')?.gems or 0 + return @sendDatabaseError(res, err) if err + return @sendNotFoundError(res) unless purchasedItem + return @sendBadInputError(res, 'This cannot be purchased.') if not cost = purchasedItem.get('gems') + return @sendForbiddenError(res, 'Not enough gems.') if cost > req.user.get('gems') + req.purchasedItem = purchasedItem # for safekeeping + + criteria = { + 'purchased.original': purchased?.original + 'recipient': purchaser + } + Purchase.findOne criteria, (err, purchase) => + if purchase + @addPurchaseToUser(req, res) + return @sendSuccess(res, @formatEntity(req, purchase)) + + else + super(req, res) + + onPostSuccess: (req) -> + @addPurchaseToUser(req) + + addPurchaseToUser: (req) -> + user = req.user + purchased = user.get('purchased') or {} + purchased = _.clone purchased + item = req.purchasedItem + + group = switch item.get('kind') + when 'Item' then 'items' + when 'Hero' then 'heroes' + else 'levels' + + original = item.get('original') + purchased[group] ?= [] + unless original in purchased[group] + #- add the purchase to the list of purchases + purchased[group].push(original) + user.set('purchased', purchased) + + #- deduct the gems from the user + spent = hadSpent = user.get('spent') ? 0 + spent += item.get('gems') + user.set('spent', spent) + + user.save() + +module.exports = new PurchaseHandler() diff --git a/server/users/User.coffee b/server/users/User.coffee index fa4ee0612..365b8176b 100644 --- a/server/users/User.coffee +++ b/server/users/User.coffee @@ -59,6 +59,12 @@ UserSchema.methods.setEmailSubscription = (newName, enabled) -> newSubs[newName].enabled = enabled @set('emails', newSubs) @newsSubsChanged = true if newName in mail.NEWS_GROUPS + +UserSchema.methods.gems = -> + gemsEarned = @get('earned')?.gems ? 0 + gemsPurchased = @get('purchased')?.gems ? 0 + gemsSpent = @get('spent') ? 0 + gemsEarned + gemsPurchased - gemsSpent UserSchema.methods.isEmailSubscriptionEnabled = (newName) -> emails = @get 'emails'