From bfc181b8a5250f8a313eeed24bf1a4bd2779245a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Schw=C3=B6rer?= Date: Thu, 17 Sep 2015 19:46:38 +0200 Subject: [PATCH] Added Teams --- .../samdev/cannonshooter/entities/Cannon.java | 20 +++++--- .../cannonshooter/entities/CannonHearth.java | 31 ++++++----- .../cannonshooter/level/StandardLevel.java | 36 +++++++++++-- .../de/samdev/cannonshooter/teams/Team.java | 48 ++++++++++++++++++ data/cannon_sketch.pdn | Bin 36956 -> 43253 bytes 5 files changed, 112 insertions(+), 23 deletions(-) create mode 100644 core/src/de/samdev/cannonshooter/teams/Team.java diff --git a/core/src/de/samdev/cannonshooter/entities/Cannon.java b/core/src/de/samdev/cannonshooter/entities/Cannon.java index b187407..369e03a 100644 --- a/core/src/de/samdev/cannonshooter/entities/Cannon.java +++ b/core/src/de/samdev/cannonshooter/entities/Cannon.java @@ -9,20 +9,24 @@ import de.samdev.absgdx.framework.entities.colliosiondetection.geometries.Collis import de.samdev.absgdx.framework.layer.GameLayer; import de.samdev.cannonshooter.Textures; import de.samdev.cannonshooter.ZLayers; +import de.samdev.cannonshooter.teams.Team; public class Cannon extends Entity { - + public Team team; + private CannonBarrel barrel; private CannonHearth hearth; - public float power = 1f; // 1 = active | 0 = neutral + public float power; // 1 = active | 0 = neutral - public Cannon(float x, float y) { + public Cannon(float x, float y, Team t) { super(Textures.cannon_body, 2, 2); setPosition(x, y); - setZLayer(ZLayers.LAYER_CANNON_BODY); + + team = t; + power = (t.isNeutral) ? 0 : 1; } @Override @@ -38,12 +42,12 @@ public class Cannon extends Entity { public void beforeUpdate(float delta) { if (owner.owner.settings.debugEnabled.get()) { - if (isMouseOverEntity() && Gdx.input.isKeyPressed(Keys.DOWN)) + if (isMouseOverEntity() && Gdx.input.isKeyPressed(Keys.DOWN) && ! team.isNeutral) { power = Math.max(0, power - 0.01f); } - if (isMouseOverEntity() && Gdx.input.isKeyPressed(Keys.UP)) + if (isMouseOverEntity() && Gdx.input.isKeyPressed(Keys.UP) && ! team.isNeutral) { power = Math.min(1, power + 0.01f); } @@ -55,6 +59,10 @@ public class Cannon extends Entity { } } + public void setTeam(Team newteam) { + team = newteam; + } + @Override public void onActiveCollide(CollisionGeometryOwner passiveCollider, CollisionGeometry myGeo, CollisionGeometry otherGeo) { // diff --git a/core/src/de/samdev/cannonshooter/entities/CannonHearth.java b/core/src/de/samdev/cannonshooter/entities/CannonHearth.java index 296d4ee..aa01e96 100644 --- a/core/src/de/samdev/cannonshooter/entities/CannonHearth.java +++ b/core/src/de/samdev/cannonshooter/entities/CannonHearth.java @@ -10,14 +10,16 @@ import de.samdev.absgdx.framework.entities.colliosiondetection.geometries.Collis import de.samdev.absgdx.framework.layer.GameLayer; import de.samdev.cannonshooter.Textures; import de.samdev.cannonshooter.ZLayers; +import de.samdev.cannonshooter.level.StandardLevel; public class CannonHearth extends Entity { - private static final Color COLOR_NEUTRAL = new Color(0.75f, 0.75f, 0.75f, 1f); + private static final Color COLOR_HEARTLESS = new Color(0.75f, 0.75f, 0.75f, 1f); private static final float ROTATION_SPEED = 0.125f; private float rotation = 0; private Cannon cannon; + private StandardLevel level; public CannonHearth(Cannon owner) { super(Textures.cannon_hearth[0], 2, 2); @@ -30,11 +32,11 @@ public class CannonHearth extends Entity { @Override public void render(SpriteBatch sbatch, ShapeRenderer srenderer) { - sbatch.setColor(COLOR_NEUTRAL); + sbatch.setColor(COLOR_HEARTLESS); renderTexture(sbatch, Textures.cannon_hearth[63], 0, 0); - sbatch.setColor(Color.RED); + sbatch.setColor(cannon.team.teamColor); renderTexture(sbatch, Textures.cannon_hearth[(int)(cannon.power * 63)], 0, 0); @@ -43,17 +45,20 @@ public class CannonHearth extends Entity { @Override public void beforeUpdate(float delta) { - if (cannon.power < 1) - { - if (rotation != 0) - { - rotation = (rotation - delta * ROTATION_SPEED); + if (cannon.power < 1) { + if (rotation != 0 && cannon.power > 0) { + rotation = (rotation - delta * ROTATION_SPEED * cannon.team.speedMultiplier); if (rotation < 0) rotation = 0; } - } - else - { - rotation = (rotation - delta * ROTATION_SPEED); + + if (cannon.power == 0){ + if (! cannon.team.isNeutral) cannon.setTeam(level.team_neutral); + + rotation = (rotation - delta * ROTATION_SPEED * cannon.team.speedMultiplier); + if (rotation < 0) rotation += 45; + } + } else { + rotation = (rotation - delta * ROTATION_SPEED * cannon.team.speedMultiplier); if (rotation < 0) rotation += 45; } } @@ -65,7 +70,7 @@ public class CannonHearth extends Entity { @Override public void onLayerAdd(GameLayer layer) { - // + level = (StandardLevel) layer; } @Override diff --git a/core/src/de/samdev/cannonshooter/level/StandardLevel.java b/core/src/de/samdev/cannonshooter/level/StandardLevel.java index 1b1ac24..2ec2827 100644 --- a/core/src/de/samdev/cannonshooter/level/StandardLevel.java +++ b/core/src/de/samdev/cannonshooter/level/StandardLevel.java @@ -1,5 +1,9 @@ package de.samdev.cannonshooter.level; +import java.util.ArrayList; +import java.util.List; + +import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.math.Vector2; import de.samdev.absgdx.framework.AgdxGame; @@ -9,19 +13,43 @@ import de.samdev.absgdx.framework.map.background.RepeatingBackground; import de.samdev.absgdx.framework.map.mapscaleresolver.ShowCompleteMapScaleResolver; import de.samdev.cannonshooter.Textures; import de.samdev.cannonshooter.entities.Cannon; +import de.samdev.cannonshooter.teams.Team; public class StandardLevel extends GameLayer { + private List teams = new ArrayList(); + + public Team team_neutral = Team.GenerateTeamNeutral(); + public Team team_player = Team.GenerateTeamPlayer(); + + private Team team_computer1 = new Team(10, Team.COL_P2, false, true, false, Team.MULTIPLIER_AI_D0); + private Team team_computer2 = new Team(11, Team.COL_P3, false, true, false, Team.MULTIPLIER_AI_D0); + private Team team_computer3 = new Team(12, Team.COL_P4, false, true, false, Team.MULTIPLIER_AI_D0); + public StandardLevel(AgdxGame owner) { super(owner, TileMap.createEmptyMap(32, 20)); - addBackground(new RepeatingBackground(Textures.texbackground, 1/32f)); + initTeams(); + + initMap(); + } + private void initMap() { + addBackground(new RepeatingBackground(Textures.texbackground, 1/32f)); setMapScaleResolver(new ShowCompleteMapScaleResolver()); - addEntity(new Cannon(7, 13)); - addEntity(new Cannon(14, 5)); - addEntity(new Cannon(20, 13)); + addEntity(new Cannon(7, 13, team_player)); + addEntity(new Cannon(14, 5, team_computer1)); + addEntity(new Cannon(20, 13, team_neutral)); + } + + private void initTeams() { + teams.add(team_neutral); + teams.add(team_player); + + teams.add(team_computer1); + teams.add(team_computer2); + teams.add(team_computer3); } @Override diff --git a/core/src/de/samdev/cannonshooter/teams/Team.java b/core/src/de/samdev/cannonshooter/teams/Team.java new file mode 100644 index 0000000..beb079d --- /dev/null +++ b/core/src/de/samdev/cannonshooter/teams/Team.java @@ -0,0 +1,48 @@ +package de.samdev.cannonshooter.teams; + +import com.badlogic.gdx.graphics.Color; + +public class Team { + + public static final Color COL_NEUTRAL = new Color(127/255f, 127/255f, 127/255f, 1.0f); + public static final Color COL_P1 = new Color(38/255f, 127/255f, 0/255f, 1.0f); + public static final Color COL_P2 = new Color(255/255f, 0/255f, 0/255f, 1.0f); + public static final Color COL_P3 = new Color(0/255f, 0/255f, 255/255f, 1.0f); + public static final Color COL_P4 = new Color(255/255f, 216/255f, 0/255f, 1.0f); + public static final Color COL_P5 = new Color(0/255f, 255/255f, 255/255f, 1.0f); + public static final Color COL_P6 = new Color(178/255f, 0/255f, 255/255f, 1.0f); + + public static final float MULTIPLIER_PLAYER = 1; + public static final float MULTIPLIER_NEUTRAL = 0.5f; + public static final float MULTIPLIER_AI_D0 = 0.80f; + public static final float MULTIPLIER_AI_D1 = 0.875f; + public static final float MULTIPLIER_AI_D2 = 0.95f; + public static final float MULTIPLIER_AI_D3 = 1.0f; + + public final int ID; + + public final Color teamColor; + + public final boolean isUserControllable; + public final boolean isComputerControllable; + public final boolean isNeutral; //Non-Combatant + + public final float speedMultiplier; + + public Team(int id, Color col, boolean user, boolean computer, boolean neutral, float mult) { + this.ID = id; + this.teamColor = col; + this.isUserControllable = user; + this.isComputerControllable = computer; + this.isNeutral = neutral; + this.speedMultiplier = mult; + } + + public static Team GenerateTeamNeutral() { + return new Team(0, COL_NEUTRAL, false, true, true, MULTIPLIER_NEUTRAL); + } + + public static Team GenerateTeamPlayer() { + return new Team(0, COL_P1, true, false, false, MULTIPLIER_PLAYER); + } +} diff --git a/data/cannon_sketch.pdn b/data/cannon_sketch.pdn index 1584d8d9444bcb360b51450a06953e5676fcbb4f..1a96966a814b7e5dc9970b1ca11e4bd35f911e78 100644 GIT binary patch delta 17396 zcmZ8{3E13Z)%M%6iBj;BPuW|m(XNg| zgEA5=VGPdD=>#n&Q<|L2=6Hpx36>b6;F)C{Xn z3!Y)=LwH>7H~kLoOC*v<%Y=?k#zTo{cbouk=aHgH4%^i*(oP2r#k6@hPSHXtOe(Ty zxRe|y5G6=NGFKc0qf*t$af5Na!Beb~HZTGSi!sO;#fyB$BP(Wi=;9HtpQv`^^0=&e zFGSV*9VQW~o z>SZtDIx(x4!~}Dk9XV+`T8|?M9IrNpxSZA_ZYQl#6ePMCGO`3V$z;;G}@GFg{YEt>g8lNpI2B{^oN;t1s~)E1fjcyj*@AU zS=$wvT!K|-Gs$N9WUK3WHWZKI*5ag6xg_*d+E;J5WF%pioMq`9wqobi5>vUAO$|sRL$%|^G-jpml zfQ$7K4*T7tY0%Zu5J{t2cPK>5O}P{4N%dfy*Z2sj_Uq9|7m}frhk7X}VxxJQs&!*R z67k$x#i&6;M{Z}w<1`nki@k{hvr$!{Xt3EZ%j;^qO~i|_ZV!!kl43}8ft29^0$20m z08*-za;2Z~(Mqu|l;g73N4P?zIvBXgNHZ@t6gm}`^UZ`CS6P=w1qxF0L^FcL@`ZY| zrJ6CjuO=b|w%@YqI@4}r!EiEkhicRgO9?1Hk^_|z1Wsv&UPCRCgoZ?7HY`^_@1i!0$0j|B8rfJ3Mqx+r+sUFCibxU`q4G?pqA(s3)m#iU9hGJy z2~&>pOcg72aw(UN&e(?>*UdYsQ_qZu4n}!H$dTzF<)xEG8cTMfy&_A4xyh5rOSNFN!s89JIO%rsd1*4 zXmDaM;Ml$iv{C}&CI598asr1kNU4i7)2>6tl$ITZql%k5QYB)i5);J|n5s3f6YWwfK@W;{OdcTKYl9^tOsZ_x%Q*It_ zsud%JClnxz_bVZmtd*D<@%?r`y##y5h#-1f1dgZf&u+Ug8Nlx((R4H=4A5vI!i3}VzpeQ_UhCER*_H+zsx=ZI$Y^@P%d$gU8i)EunWJg`6oXBb#5;F*o7{bFw zmYC>Hk4j-RsU2XX)~gQt!#ZE|BbjX3k6`t>*sbQ`1lCGm9B=U8esPMBNkdMeZ2*^F zDtTir=EbUL+>;TqsinqIg>49-AuBmgB_RmO&@=^gYdu_dl2pFgMKH47hoE60)*As6 zI8n)XBN@Q$K(q5L9kyM`G(?5Y8h$UK^qS7tlq)ga%GZ4^iD7Po#){Y|w1?5q@oNDk z^5a@5=@E(I7)2bu1PkL_G4Dm{iE>u4^F7q}IXfSAB~3vxPQlNks*lv0R-iPx<4|EI zWlB;~qm-Jh(iOMlRMjF^%}5aqP9g}EsVeb~RLGWxW1~ZoWLm>aTMj4{8I~KW?jxOu z+SDAYTdnk~aR{n4$=m={`yCF_rJg_T$f3{>7>d&UXxXV(h6WtixzR{gdX;S5to5Q3 zCDO>z6y9e{8TOQb&M~}~@{LX_su>QH$+IJ=U&};BVLywb1;KS|h@Z{WO&D*5rVPCs`uT{hhx>GLfcW#k;9%^ESJ1KRbYBHM-K{aP$ub0FJZ!x zQC1K<5gWA!#bBs*W9dMd5U1GG5|_e94p4cR6-4%5^g2c`jDUtAsr+rr-NinaHTw8BC&j2*DF5P zDu%Gr3hFJo&v(m(A(7=`OpLD?blc1c5i_U)PZ6jLjYBF)SCa#xkw}n^GgNxS#Dpv> zVn!_?nqX4WNL3uCR%KYPQ5TC!Cq6DW%67Sy&SxTe2Z{(XgQ8X-H@#9Op%=nIL@sxu z!)mwPEw%@phM$z$<1X+-jMr5PVMj}~`Hq}Om9h=9A4{@<4pYTsJ*tiqg29!#rAc*! z$I^);nG^?Nrp=TS#UxsyeJWKNa414pNY>Cao~N3H;V@E*bs?U~_M~V$rc`Ky8V!7x z963E*@he8UPij=n%#CsxG1_s8X&C9-kjA%Df|@NP3s_DZP{~R))2Q}MUJebK$WCZ3 zmT#L1?`1lM0%u&X^M!KO32Q|po5Vwp3*4}860RXZVwUwe22FK3X)TTDWIXVUG?@^f zQNE~Qaj!elqFjy5P)3e$3dt7RN#JD8FLlci45fylT$c0Q_Aq5-vcqf)OQD%+dXnp8 z!U!K>(Re=s>=I9*zLav*b`$p!5n-GP$z;FUR)`9pqBCicQ-TbWi^M7x>uF$+WC?W% zYzS^vDdwodQG;jFZQD-=w3o~D%Q&e)22qnB+VEIS?`BYmK^)f(Dru2P5fnKISv9S& zxfF)mo>$JmT@*mo7Fyt<1YAkey;3P5R0l(tgksee8VE*g5HTYuyFfKYM9I?$4@x5i zB$o(qJW_RZ;PzcD+cqod3V^Uy6KeE?d^#tK)F|(Be!W8%BXwC+>#E!h17s5A4ax-2 zyBMa$&=V-S9O+kv)qby#rK5&PNwv6WNp_+@YEq8I`=r@a+Zt8iv6SwHM2n9R6^HT( zhi)}vQ7ZxPc7mZg$RHAkWf!sR4onywk++*UO^0bFt1_jAr&38wQJaJ41Zlzzu`;a0 zG9d&aJSo{3SJ7Udtjm;wAdFk2+vK1aCrMF)s;NY=#PgYC+NljP396Eh!#UECWWVHw z!%->`Zxu#dqN+G0LLA#zD_M2XDv=e9ZiNvsU-P?=sN!mAV03hQBpVWlKf|;`2^Fzs z6bFnURQPhPS!G(|`cOj|y3!$Qlq+hDIu7E5Orn8QI=LP~GtQ6_+6^xZYeG@CsY;9L zWZde=V=PMd`d-p@5>fyw^w{k)LSn4)7#*{KS0IF7%qAP7+?c8bg&{MkP!Lld#(-fM z;TlqseXTJN1Ksz@o=KDksHKS60^ZE04M|K0l&%b!AcNpkE=DHUwpt8{W=J}4=wNA_ zFS~^SYnfzYkc%>?4QzZ1P8V8~t94{r5eNNrx1S2~J-sV8f=n~7x)TAau?4TCt9b*{L zF`HF1VFpQ&Ljqrmz{8jh!`V1l$s0Y24-$qzWf(@F`9785`LZG^JjOKgQckD*Di)|+ zc))ezIU;NckzUvo6FQ0t@p!#G&UGT)X1c8nbCEhyZ9y_GjC@j=#4S(A&45SB2#iW8 zQB;`mu!MCjT}fnMy2g>i?l{$SBmG7`Nomcx-7S0BoMQMeS(JLEG(AI7FfG<~66Fzz zFjg;z~9>8n|q@1)9O#m=EPo{FWJCb(FDkJt1z;=u6G?nQk?NL9>7N|Hu@Ilh57n>!NR&2-TC@0otl@x2Zy^Pk( zq=3Ef?GTC!w2+Ru@tigCIwLX%0FjVN1dSji!^JpVQ@9B^EEUGx9)`#CW}Ct+CR5J2 zxHOK9QOKP!Oc|jqjzRdN5h`8bF?ZM-cfo@De2TS#1kTz)SpmK#Y+@XUwbMblLuXPW zfZ$2E0TF}%Za&*?qtQyaLuf2NgA=vkFpk&ZuIol8Fc%3T!!{cuD_wGc5p}Vj%mOgx zjTB4`dtgDmnukhAmBs~j+>b#h!MlDD%Vm<_;F%O->98bDFW^gY<2XWKD49J zDCq~7B8vR5lFgM!A)9b2jlNT`Imc}c&}t@~h)?pWFY3))paxWDK!D?jjmnruY)x%$1v%ij8rPB4}Yy@bZJ6>sMotrPeBFq+aW| zv7!(MltUHImxOk_rRA#Rz=)`Zki-a0^hvE-o;0Our>t{&Av&T|S1S4~q(>(?rlQG1 z7;a{L0EUP<6o(__WZaHhHKJFnL`|}*mnyAHyyX^?=?aJ&v>6ZA9H}ax#GH`S6GONb zqdWk{Lt|V6bV`h5##Aynpn%(I=Q8-vFO5WD!V|enHcMt>1k?}*h4N5NBwCOT5XbxFMnR0O;-1XXL0tAZ7qSXeZDd3U5QtNP(--W~|VSgb4!5@ks!AEkc^qnr0hdh9ID@A?$e=A>egj&yq=trWyw;YHE>n1fKI0f!-M8sH08V-dP*Tv~}Ud(sM1Og7Rn_yafIoXSV8wN?MhRW*Xg4}2w)~J7yku!rD-ecVe<5N9rc- zcq6n>Zn2H5R7GRXIG?Ic07ffoK9}!Mxms@+bE;+2L-A6Y8fj9&FAd7$m^4aTj!&hH zHVUB-Sp;scSE@2KPNA4CQO>1?Xw$-S`34JFQXsemAUn31GJ zMJkpk!jA;fAa2(NS-CNxaWmt$U7{NS7B$&!cRLw*z|sa%7`bJ_&&YIK#F~7xBDi?3 zqSzLQKp1nBAfl1D1)NYln+V~;*pI|XCB|5QaP1B~J%^Wb?V=C$bbSCW8r~d?Qr&U~ zDfMa&)pF7lW|vzcS+gc&-WsQdYB*vLK4*2iI%&i)7#|ptXLx|~ZNu>>36-!GV6kEq z5bb(usiL59YtW=1&*{-@chIhOy#d}6lSQwT>{?bq^NN7m5cw>}@TJD6)y?oSRT-zo ziBcc+=waB+lVywL>gL46T)sHc9o!y+$#89SsP>~UYO#oF)*!8)Eh$XWXep5q?=woE zNj1OTkH*9qn~uN@RdfS|OEuEzTuGpE!`P^h7PL~UAGj>x6_R<|gMjgka&=N0;F>^} zIfM)?wPr^T>^1xt}#G#f=ndsaV=VN zajQ;w29v8*$`0Mg+f=I+qfpzni@=~@ejHP~DR6aVIYgL*3UzV6mja;`73cA0ci=?~ zG&wNZiIL?g{Wdl++fk%OIMEK1jz&`oR_#Km5k+^4z_uBIth+EvsHs*#^dX5gp{^34 z1f`a#G^l92))!E$6H)YH4Rb49CfN~6D#6oLiy>6q^UW~{Vn44v&`KGt>$NedN}`+- z(L_3t@`g+^EKJxYjk9bO5UOUg6CF@$ZB$H;vtu`q zEkc7Ly#r|j0T{RVUdUjN{g=X&2}k{;AGtd)ZYJP z%m5QJ1_4sq!kZ8@u+wmEChX3$(s)c1W0G{KSh z29>e7Sgep7DX7wI(oi2Z!Zwogt#rD;VGSyeK~X8o#x=sE;JipO5us!FGBeJUdc_VC zk&$pRZYJ0s%d?_ui?M)ND?b(9ig*HYX&n4Jiu=?ChO(V z{-o1_gRq@eDT<9@PCSt-EW6Lciim045^28N=lPhAfX{opBB7<~^(dk39-7oF-tE@d_RfC?2qPAP;~s0mo0M zbb^i3H1L)@Uqu^*6s=K8ix+@X8p1Nx%nfX{lQY>?$k$mbf%8<#tHkR)y%T9hRnDtc zI2I6R{7{KA85dI z%JrcOAZx5jmPMY4FeC{14Ju-=A`Qh!wUx|)AOrRUKP-%?Jjeu=Why7rH5#LQ1ZG?l zVpYCEsUw7fm5j&AB0-Bm1gxSLAqt7OjRX`hY%VcMMGaa8uGzEMJON0{NjI$F>9CVD z3zp!e3yf56ND2`tMe-!a0ou?sYo&;zwFli+*(#WpFIjLukqKBWPE(kf!cnQLLOv?fS`x!p@0~Ck~Ify)zVX8>_i=_98+t^xR>I`@m9`+kW|o(7#?4?=!}E1xRgi^29b%(w&BJ|Ew=Nm3M91f zT7dNm>0YkEfw5}PP*+)*L12Xd5v}25T>+q(fEw{>K1BuTtk>#wN|}_`U_vF&qWuDc z_H%@u=c8jQ8LP={gv_v5tj>U(s!ZGMal$r-X*darGlmWbN+xYkm0-)1OJyZCEu$I0 zWC0dFS)Vajv{1Q%bLs)JT1WogAx zxu=SQ{3zER1Dr61;h~hR34P2;%MnVK+Kxl0fHCS&WV<|RVdaulWb=bqkO9#Knz1lB z)SYaF5`!KM>PgC06sj?d&1z~|hyn!aG3kO1IDwd%uE-KaxNNl>(RD$G&dZcTP zFc3uv`MQC%5JaNQel)I@T?j3JV4>ghlLZi3p>bzy$3{p@7Ga#qOXUE7;!L;ULIb=G za8cf5bzM(LF_srW6^ztXXcp+vQ4tc$T_o023Du@2Mbs)p03Rz_aS`_XhD)S4$Uv(W zLK)e3ydwEsL{@dfVmi4TPsMumggRmozSJ+JxuT=sl}b?TDP~>@NRLEEdBTk{X1U`R zAiJEvdUgbaA-pQ`4wEepK+e8c4}yT?g;r9CvB`-mT1CPDl$8}hsdkDPDkUQhE`SiT zJqsmjtx}#cn_)bM22EWXjR-uA(|ERlG?f@#h&5B12OD)OP%C9iqEjQMcS6I$VVYV7H|wqv`r?>HmJ@-icM2ku5w4_!D4P_` z6y!z2*9B=?@9TIaRRA?qZl z2aH?3RYNkdW)4RCXk2WMF_4CqMyWy|P=HXhM;KO%v_Rwl$SkBTS3n#&vvYo1DdOZH z+64yEw0aU}#$`}%LHWKF(}uj6N+%}~wmu91zY=;nRnHr~6B3ArM{&gOo0(BQt5=<% zQuVVXno8Rg*2pE#qh$gJpzmea#*w}KLM zlY~vKs-opuzo!SFB94vZO4SjX(EN#)AZ?0@_!ttQvI>nGeo%C-J5 z6A}^n`mh^nY2Rx!s%X+SQAA@w_Kl5Vy;v&AQjAfuf+ilw25dP+-?HFFJa33J$uW^6 zxQ~e1M&%+zSWyoSbA%nZC?Qjmq#uG>rEaN{;n8?qN_UY;x7_yd0awo?IRxfuUGA29 zC|tA)vK|1a*7cwf1x&MV=6SX`XqS;lC8alNRArRvLsZchoQXPV73m74)cHa=Q9{X*IHnY; zRZ2vnIk?=3H6VB#pMhVp-QjC2EQNAZmWS@xmB*gKV02x_482~VxKu7{R16w06YW+D z^>BeMDKw|>iV0T%c^~1>Nx(PEh*FYm)=+6jN-??o&;SIKmZM?@5BDv7TCFk=iE7_C)nO?wby9dm5u0S4q# zIY5Rds{x2j%Tcx1D54NHar|-AGlnFbsCN4yi^n)9;xjXGT~8Zvtdi(e=qe2h?WmH- zWwZ5oG!p}4YjMxQNpTE(#+#4yx%s$;grk4H`5sX#2Amw1DvXxdd$5DXH# z1AdrJp$gTFu=!pz%}0`xWLQIpdO#NdimywhrB1tV^H~t|2lj++v(C6KN$$An$2EKm5=WiXjH>>twka35cp5|0LM8SZHb&yI*8HKVr26h4zFN_;eXC~8`X(R}k zO=*^?b^4&(ucXctw@yB0qRi#tBZF>T(%2JSH+|S^1i9&Fky_@j*G?8cH99m ze32et1;8n?qo6TqXFxctfdW|C<;hY^G*~`c9640d8iy__$e!eT1R<|04m-9RYGA5*BY~fWKL6pMjhB$J42O?PR|Q<8ZOtp630~~ zOEqE{x5on#bz)PzQA|Z@D$DyIK}&cbGIU}lT#Voaz(^8JGgYE%RMDUlhSKVRUIlhc8o;EreR6T7>NL9(4AaaJ)0K`(3MWu3>9F;pE7Xzh% zOsPvl6t5M_v`GlVOvJ1h?Sc$<6mk?B$8*xST?SU6A1ZwS=4i1TLo-t6|LIF*$$pJ% znv+hps4;yz<Sxt!f?cha>)D}rzhIonYJB!(nAlqRE`1$oEBnstvpsSa33UKL5+*&*TFv73)l1mGX8(>dPG2oS*{l44gdysp8(JFvq5Wc(^)zv;Gsk7$9?ZX!?&4XPw2b<5+L zhDhbcWC%z#8{}MKLM;Vy`c0BzSsrly2AdW=39tseKH5aZa)mB-V_t%w`u&8>WvioD zw}!WcW-Dn^T#>abe8|q+rdA3GxCX^)F_VgE1KS)|2*^YNHXIs3tIRq&s{sDNbW94A zW5(z-s1~tIH59YznA8EEK}yUJYl9~t5)z6mrKtEA%Vn9=a4crw}ZKIghgY)&+z6N*wsy&NzKj9^BA zy{8Q+m?;CMaek%(R-$GeL<~Go=8yvqlz>H(drC8d|52X*{~NG9)(ka(HDh?92sVQn z+m&k8gM%EY`omJDk^xyXiaLm*=ybjm#NK5J^nkh=j=ay!ttBGv}{^DWcud$2hUn|fpF-aAJad_zc*`o zAqLHwzCT``z3jI17Xn|Of9~}6Q!mb*o)*Eo-R$(N>9q^*n>~G7V%_ZNAJXCMWe1{1 zO|SI+bJp~y^;vsQA5a2f8*|FO(_ij^U-2?DYnjwMclu)Ew%OBjlrQfCv>`L?fB!<| zLi@12rw=(3y!}-B*{sjsZt8%p2b9XQr={kNv!?ms?fXpsq5rd4v-h5wE}pY`_H_8u zm-kwB@chG}y{F#ZFsJ)6@wM}xI_2@xp9y~b%wz7! z55Du{kN=qZ_XS5s<&WII{PXqd_oe-h&i?MZ*1}UxIb~t?>|LMUv-zBZK<`8U`{my+ z8twR`6>eGb-e_NWH3Ay%865fTO&{EiJp9$mrq{lGz%^$!K;x)&GJWrJL38Q1Cec?e zedm9-YD>R;jq$%5*9F?rV;`P(?E2OLptm>Y=2sUlG4>6QVYa>gx1+bj_C5OM-Mgkg zd+xfs4xGB>=_hOVt_}31$KBRE=>7esjMa}(?@XP0@E3jVJSMa4=*d*;!h7LMcm8AQ ztjX{H_KWvFTXWKR&Sl?TymaBYv9~{dZO8Yb>bf(xyu9OsXAj-JbL!mXUx+OETx9gl zTbtHhvb=NO4;Rm!dh+Vq{(H$}>tjbRYW{8RD+e8Y)m002KD^_QHS2Dk8=tD?IcWQ? zjmxQr9{%})hv)hCZ+xb4^4CAO|HZvNd-$DCZocO7C6kHw)<*{oo;Z5(>C$TC{J(qz z1Rj}p|5)F&`uwXeEN@wG?~T9REiWe@p0^*E`!_pl)?d2$E%K}td%yUnMf^?I{pI-D z^&fA)WYyf_=1U%a;k=!*4mmyk(aYCAJa0>9_7lX46~@Qpm92*!oRRvpZ6EQog%8jB z@kMXG_WZ5=C+5BQ@ws>Zqc`bq^YHZ_KKhUJ4cA=WT(NuI)Wz$zpM?JB+^rN?r=#bt zy5iH$l~*iW|MK3aA9ne?#PT<9{^*v6zIKDDtw7taEWP6D3wKhxPCfE;_@kGTyY6>Z zZT>-Fmw)ds_y5-AC;alUqYgQ&slW59<-+>y=kEOe0e76aW$n_P-+$rsb^H8s=dDj~ zeV+RL)gMiMcE!v8b>8o%A6gc2%jdjx+uCcle)pxXJ(v0H&?kPi*K3C@Zf}0@^-Vv^ zZ@9F7MCIh0-utoETYJg;_{qzuJvzTPqtnxOefMnd<2Sax_viDTdGVap+@05!NARq~ z{7Y)&;^xCgZ&`Bcu2a8pI=tf{=apSM-^f0>_~gxr(@*RzF0TFCrpX5Xuu9f{`Sntd z|I5x>*L`z~bJi6L@Xz?!*WGdEA1}VVd(S&3FWmIsKm6y5S3SG(j{OkTy>a&`XWjOj z1vmYA!7;{H2d98VI(XGDTR(kf!0h!A57+KB3FI3c>SAgH}~P2$8UM_a9zr6Ig;A-3A22TGrjh;jZfWw z_0zHMJQ(}#r>Fe;t=si~Wd5}|T)C=#`CYfIy4YF$rx#XUwVwRJ&i5{uKX2*6rNSHN zJ}<1I(2e{)>xl~v1^~$@0Ej^%icyG|JK@z-+SPO2@$MY z`>N?gFR48A+>6aq;VlPHyGDi0d;RmRTkqVo*SinCaQiPl8+`T&Qm)R~{N~~#?Z5jU zzIRM-aOjg4&1aS_+_?U*?}L@PcTwZ{%wA-3(dOG%FMN==Y~lPD-=db!dwAZW>(SZU z_jIjpfbzy}!1y z<)`4F;cxNh{_2u#f8ViS_}WKTk*(7&e&nh9I%k22?L2kcC+X$?;e4=m&2PV7xaXiR z{iX21X%q3L&Rdr)Jp2GKoNqonZ{hX5ADpr6`4_j&BKpI}?;LOK@BPu6`yTVUvMBgq zzZUVGU1I!;nV*w4_IZE5sJv$LNBw)hx%=q5PTGF;=F#89lb4*h`k6h8{nmTS=0neG zmp=ZhGtY(ZU1UVh2p-0&Pi^?%=3vDm+mCwmDe^CyZkwdf8|OEF>HW3HK)>a0bAQuW zFl+atS1!Ej@O9?;#)Y@;`19HGZvU(^_b=Vpiko(Pd5`REK(-A|-Cffk-?x77z@ry# zXP3WlBzo4mad1`R!xbMqwp{>n#{RdhB?rS>9+~@_Ti485xNYv~y(b?$?xH)^|LYYy zYj3+|%cq@_SLD`A4!ZyF;}3oDxAO~27d~-4dOo-9`JZn6k4N5Kjhqg0N$2m_TV8+f za~l?a@3qJO^;qx9JK--x#nZFDp1)}6!dvFQzu#92Z;wy0`D>qf?3c&qmc4w$hIjt8 zwXkIgwar{14gNkld9icV8(;s)+3V)rbKL~(ha9S3x?u3m=zE~cn}?;IJ>58R)v~EAe^~X@Kh`bcJ~?USE@$O4pPcdR zOVWzlSN(R&^aZVbFEjRf`K|Z976m=tK5GBY@>%NZ8=l+t4zqmQ)BpYHm2Va==C_jH zUw6sQr>3UGzt@HS9ZyV6kPlbA`X5`*yK(Ecm&X3qLtj2U z{oCsYlWmf*^wC4EeeCdyzO-xszU6_vr_TTLX8+&gW0w7U`kRv%*Ui1~fTyt|U%BL( zSEturG(LLPRQ+A$N+PjgFZGG9+;G~eUoO1sN9VsK|6$3t=YPN7e@uOK-|daFzqPRU z(2~mU?bwNn9|KOaesTMS7vH;PGWXP}QxA>p5Vrm9-o&~&y)&-9;n~`DX2I{2@BNb8 z_Tks3rhZ^ zK3BW>FJIYA|L{@%_U#Sgynh||_!loujl6Q{mw$Qb;mv(-du09rY4e)Z0H7Sb;!%E1 zcNW<^>I>adOV_>n+kM0PfATxvGuXDK6MWL`IFg20I{8V3i#w(?`=3Nd-auHEZWp7MW=qt+Q5ih zod06JQ%eiC{_p{SKOVsT26}RPdWwJj#=bjteErbutNocxnt%nJT3RVV=goki>#zLV z%JbVZ6P|ki23x!3zD3`EpfA=XI)3&(pzY4m?a}A|x%&RI=FiilKcBEiPTKJFS(B|# zoHhRf^t<&h?Gbyv_$Tc7O?RWedg7Z0qz@HmK0AdAH_zGj$rA@$JN*-C|7Tu@K-2x# zZvWDGle2fRyJ!FNp2HuRL7(6ctjuisf8f#QGVOn!I<*hAX*Y4_(bN8yPWsV*?Mk%2 zb`y7kv3~0IU&YVfdBwH2Uwf(e$urkIcgWOKV> zw671&-|zsoeC5pJgY6sQKYYB?ni*&2N1LkN0l#_qk24B?anIZOY3D6k52kp_f5Epv zhpq&=&bs*CsY~7fU#Q*)pZnR2*dJg2%2{{MC|>aC?00UM`P`pA+UK6rz+k6Vd^&sM z^`Pb4-5>4q)4u~f_czX-wfe-FIY!Eh{Ih31c{;zyU$Ey#Ws!g2%#RnDMUk0_Pu=wF zAxqx)%CcFBm0vpdH=lgvsf$yuP47IH*lYR^=U+a1J`mXVu>Y}ZFTS0>^09C1bJptD zUer(AfPOmvxIe%9)SM&AH?F(%g6Nlj^K3K!*W#_&vxfB2PU#z)dU1#&J zpPt#nPu4YdY}@un`=f_{&^!IsU;OMIaNyUh9p1S3t!i$ zo_62n=ifg1h~9Ir-E-yiS#$1Io_X#tu;6dco3rEXcNVU=^W)72zp(j(Z!9i;diY*b zr(S;hir@7HuWa2id)a4|O`Cr8_>vdy`}oQuo}0WlU7niSdHAA5M~ycc-P51hb;zoJ zeS7WGS3#{aA3J5o_DqGG-uB3f{y|ey=Ul#a+mk!?1(N5i*l|tFS!Mj%y=qNI|KPog zpL2iw=6+LCl`D3>@$Q0m|Mp&M>m>g8mHJ7yTnp`3`|s)6;Dzz3^Q~7uIce2NQ&UU!yVQLHUAQbffq!dw(e_i8zj@LhR;}rs zc*gYVt?;VW%O`)J@P8-HFm`?bZr5pZ|M~RCbH4KdZY(+b_F(JT+cxfe@~+of=H!tD zJ2svJ-?pS;I=B*3PdHag%K3Ow);I2$_-GNj0|M(mCp0-_N z-n{kZb>vYCc3*bmGatP5?8cAo{=ggj{J;;7TLF&xA1+yQ+Qz{ty(MoxcJ~hc(Zd&S z{K}ov2OaRtf~(%&e`@NE(;oOa`tdVg-!OT3)vl*@ob;O;!qSIekJb107jGQ>=mulc z#xpOw_moY?R89dmq4Mal-|c9-i4U$^zx3nndu=`(c-^VW!^eJi@Y;sUE(~(px)%@U z{OIj@^JY~4{^vRAoh`dM_;coSXFdPUdq2;CGyKCPv(07T$Nh(G-}}j9XU6xf_xE49 z=#*KLsVV-IgYQSSgFX82;bYHzc}9hKd2VX+D+f)suJk4E|2=aLUz_TfRG^Ve-Y(=dZpE^qqap zKUeI&`S6##^S}JL)?a;X>%nXAPcNAJJ~Oi>kqUO)#$(5^4-Y!~mESx%^Ql#4{+`^2 z^PgP!PW1lk{%!2}{O4_luQXmi@sK@2H~2Lmboff>^>6*phRNY8k9hrsWT^|z%BdtXIKAu zrs23>%ycP$F5d5>rylYob>XXEwC@(dXpgvI&XfD~mmV`SpOe2XT=?-1p#x?bW^dnn zGSia%$;ap4IOoazKfLtdne89VC%?II&O6al;U}pBXZGf$H(oh^1mE$@)S6Rw6GzVs z_a`50 zUU$Q+Q`Wpaqx}>A->;AMOCGWETc>L`2J#=aExr1#M?W+6o;vFh(B?N0M+I`)eCl5)yKDTn*j-Ma98+eF!SD(i}wDmI{Io139 OyORr^`lUGI$o~&}3w%rf delta 10610 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 H-DmtCAZ4{f