From d1fc89e155fd3ffcb1495c201733468352128196 Mon Sep 17 00:00:00 2001 From: iwgeric Date: Sun, 8 May 2016 23:13:49 -0400 Subject: [PATCH] Android-Examples: Add new test case for testing Mouse, Touch, and Key Events. --- .../src/main/assets/mouse.xcf | Bin 0 -> 137838 bytes .../jme3test/android/TestAndroidTouch.java | 354 ++++++++++++++++++ .../src/main/res/drawable/mouse_disabled.png | Bin 0 -> 3197 bytes .../src/main/res/drawable/mouse_left.png | Bin 0 -> 2819 bytes .../src/main/res/drawable/mouse_none.png | Bin 0 -> 36357 bytes .../src/main/res/drawable/phone_landscape.png | Bin 0 -> 1960 bytes 6 files changed, 354 insertions(+) create mode 100644 jme3-android-examples/src/main/assets/mouse.xcf create mode 100644 jme3-android-examples/src/main/java/jme3test/android/TestAndroidTouch.java create mode 100644 jme3-android-examples/src/main/res/drawable/mouse_disabled.png create mode 100644 jme3-android-examples/src/main/res/drawable/mouse_left.png create mode 100644 jme3-android-examples/src/main/res/drawable/mouse_none.png create mode 100644 jme3-android-examples/src/main/res/drawable/phone_landscape.png diff --git a/jme3-android-examples/src/main/assets/mouse.xcf b/jme3-android-examples/src/main/assets/mouse.xcf new file mode 100644 index 0000000000000000000000000000000000000000..12441e7f5a1e0f5cd95f13221fde0bd3e251ddd0 GIT binary patch literal 137838 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 oZvW(uvU&I_hga7~l literal 0 HcmV?d00001 diff --git a/jme3-android-examples/src/main/java/jme3test/android/TestAndroidTouch.java b/jme3-android-examples/src/main/java/jme3test/android/TestAndroidTouch.java new file mode 100644 index 000000000..22788147e --- /dev/null +++ b/jme3-android-examples/src/main/java/jme3test/android/TestAndroidTouch.java @@ -0,0 +1,354 @@ +package jme3test.android; + +import com.jme3.app.SimpleApplication; +import com.jme3.font.BitmapFont; +import com.jme3.font.BitmapText; +import com.jme3.font.Rectangle; +import com.jme3.input.*; +import com.jme3.input.controls.*; +import com.jme3.input.event.*; +import com.jme3.math.ColorRGBA; +import com.jme3.ui.Picture; + +import java.text.NumberFormat; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Test for Android Touch Input integration into jME3. + * + * @author iwgeric + */ +public class TestAndroidTouch extends SimpleApplication { + private static final Logger logger = Logger.getLogger(TestAndroidTouch.class.getSimpleName()); + + private Picture picMouseBackground; + private Picture picMouseLeftButton; + private Picture picMouseDisabled; + private BitmapText textMouseAnalog; + private BitmapText textMouseLabel; + private BitmapText textMouseLocation; + private BitmapText textCursorLocation; + private BitmapText textKeyPressed; + private BitmapText textPhoneLabel; + private BitmapText textPhoneLocation; + + private Picture picPhone; + + private String touchMapping = "touch"; + + private String mappingKeyPrefix = "key-"; + private String mappingMouseLeft = "mouse left"; + private String mappingMouseXNeg = "mouse x neg"; + private String mappingMouseXPos = "mouse x pos"; + private String mappingMouseYNeg = "mouse y neg"; + private String mappingMouseYPos = "mouse y pos"; + + private TouchListener touchListener = new MyTouchListener(); + private ActionListener actionListener = new MyActionListener(); + private AnalogListener analogListener = new MyAnalogListener(); + private RawInputListener rawInputListener = new MyRawInputListener(); + + private NumberFormat analogFormat = NumberFormat.getNumberInstance(); + private NumberFormat locationFormat = NumberFormat.getNumberInstance(); + + @Override + public void simpleInitApp() { + + getViewPort().setBackgroundColor(ColorRGBA.White); + + analogFormat.setMaximumFractionDigits(3); + analogFormat.setMinimumFractionDigits(3); + locationFormat.setMaximumFractionDigits(0); + locationFormat.setMinimumFractionDigits(0); + + // Setup list of triggers based on different keyboard key codes. For Android, the soft keyboard key events + // are translated into jme key events. + int[] keyCodes = new int[] { + KeyInput.KEY_0, KeyInput.KEY_1, KeyInput.KEY_2, KeyInput.KEY_3, KeyInput.KEY_4, KeyInput.KEY_5, + KeyInput.KEY_6, KeyInput.KEY_7, KeyInput.KEY_8, KeyInput.KEY_9, KeyInput.KEY_DECIMAL, KeyInput.KEY_PERIOD, + KeyInput.KEY_A, KeyInput.KEY_B, KeyInput.KEY_C, KeyInput.KEY_D, KeyInput.KEY_E, KeyInput.KEY_F, + KeyInput.KEY_G, KeyInput.KEY_H, KeyInput.KEY_I, KeyInput.KEY_J, KeyInput.KEY_K, KeyInput.KEY_L, + KeyInput.KEY_M, KeyInput.KEY_N, KeyInput.KEY_O, KeyInput.KEY_P, KeyInput.KEY_Q, KeyInput.KEY_R, + KeyInput.KEY_S, KeyInput.KEY_T, KeyInput.KEY_U, KeyInput.KEY_V, KeyInput.KEY_W, KeyInput.KEY_X, + KeyInput.KEY_Y, KeyInput.KEY_Z, KeyInput.KEY_CAPITAL, KeyInput.KEY_LSHIFT, KeyInput.KEY_RSHIFT, + KeyInput.KEY_UP, KeyInput.KEY_DOWN, KeyInput.KEY_LEFT, KeyInput.KEY_RIGHT + }; + + for (int idx=0; idx= settings.getHeight())? settings.getHeight()/2f: settings.getWidth()/2f; + + picMouseBackground = new Picture("Mouse Background"); + picMouseBackground.setImage(assetManager, "mouse_none.png", true); + picMouseBackground.setWidth(mouseSize); + picMouseBackground.setHeight(mouseSize); + picMouseBackground.setLocalTranslation(settings.getWidth()-mouseSize, 0f, 0f); + + picMouseLeftButton = new Picture("Mouse Button Left"); + picMouseLeftButton.setImage(assetManager, "mouse_left.png", true); + picMouseLeftButton.setWidth(mouseSize); + picMouseLeftButton.setHeight(mouseSize); + picMouseLeftButton.setLocalTranslation(settings.getWidth()-mouseSize, 0f, 1f); + + picMouseDisabled = new Picture("Mouse Disabled"); + picMouseDisabled.setImage(assetManager, "mouse_disabled.png", true); + picMouseDisabled.setWidth(mouseSize); + picMouseDisabled.setHeight(mouseSize); + picMouseDisabled.setLocalTranslation(settings.getWidth()-mouseSize, 0f, 1f); + + float phoneSize = (settings.getWidth() >= settings.getHeight())? settings.getHeight()/2f: settings.getWidth()/2f; + + // preload images to send data to gpu to avoid hesitations during run time the first time the image is displayed + renderManager.preloadScene(picMouseBackground); + renderManager.preloadScene(picMouseLeftButton); + renderManager.preloadScene(picMouseDisabled); + + guiNode.attachChild(picMouseBackground); + if (inputManager.isSimulateMouse()) { + picMouseDisabled.removeFromParent(); + } else { + guiNode.attachChild(picMouseDisabled); + } + + textMouseLabel = new BitmapText(guiFont, false); + textMouseLabel.setSize(mouseSize/10f); + textMouseLabel.setColor(ColorRGBA.Blue); + textMouseLabel.setBox(new Rectangle(0f, 0f, mouseSize, mouseSize/5f)); + textMouseLabel.setAlignment(BitmapFont.Align.Center); + textMouseLabel.setVerticalAlignment(BitmapFont.VAlign.Bottom); + textMouseLabel.setText("Mouse Analog\nand Position"); + textMouseLabel.setLocalTranslation(settings.getWidth()-mouseSize, mouseSize*1.25f, 1f); + guiNode.attachChild(textMouseLabel); + + textMouseAnalog = new BitmapText(guiFont, false); + textMouseAnalog.setSize(mouseSize/10f); + textMouseAnalog.setColor(ColorRGBA.Blue); + textMouseAnalog.setBox(new Rectangle(0f, 0f, mouseSize, mouseSize/10f)); + textMouseAnalog.setAlignment(BitmapFont.Align.Center); + textMouseAnalog.setVerticalAlignment(BitmapFont.VAlign.Center); + textMouseAnalog.setText("0.000, 0.000"); + textMouseAnalog.setLocalTranslation(settings.getWidth()-mouseSize, mouseSize/2f, 2f); + guiNode.attachChild(textMouseAnalog); + + textMouseLocation = new BitmapText(guiFont, false); + textMouseLocation.setSize(mouseSize/10f); + textMouseLocation.setColor(ColorRGBA.Blue); + textMouseLocation.setBox(new Rectangle(0f, 0f, mouseSize, mouseSize/10f)); + textMouseLocation.setAlignment(BitmapFont.Align.Center); + textMouseLocation.setVerticalAlignment(BitmapFont.VAlign.Center); + textMouseLocation.setText("0, 0"); + textMouseLocation.setLocalTranslation(settings.getWidth()-mouseSize, mouseSize/2f-mouseSize/10f, 2f); + guiNode.attachChild(textMouseLocation); + + textCursorLocation = new BitmapText(guiFont, false); + textCursorLocation.setSize(mouseSize/10f); + textCursorLocation.setColor(ColorRGBA.Blue); + textCursorLocation.setBox(new Rectangle(0f, 0f, mouseSize, mouseSize/10f)); + textCursorLocation.setAlignment(BitmapFont.Align.Center); + textCursorLocation.setVerticalAlignment(BitmapFont.VAlign.Center); + textCursorLocation.setText("0, 0"); + textCursorLocation.setLocalTranslation(settings.getWidth()-mouseSize, mouseSize/2f-mouseSize/10f*2f, 2f); + guiNode.attachChild(textCursorLocation); + + textKeyPressed = new BitmapText(guiFont, false); + textKeyPressed.setSize(mouseSize/10f); + textKeyPressed.setColor(ColorRGBA.Blue); + textKeyPressed.setBox(new Rectangle(0f, 0f, settings.getWidth(), mouseSize/10f)); + textKeyPressed.setAlignment(BitmapFont.Align.Center); + textKeyPressed.setVerticalAlignment(BitmapFont.VAlign.Top); + textKeyPressed.setText("Last Key Pressed: None"); + textKeyPressed.setLocalTranslation(0f, settings.getHeight()-mouseSize/10f, 2f); + guiNode.attachChild(textKeyPressed); + + picPhone = new Picture("Phone"); + picPhone.setImage(assetManager, "phone_landscape.png", true); + picPhone.setWidth(phoneSize); + picPhone.setHeight(phoneSize); + picPhone.setLocalTranslation(picMouseBackground.getLocalTranslation().x - phoneSize, 0f, 1f); + guiNode.attachChild(picPhone); + + textPhoneLocation = new BitmapText(guiFont, false); + textPhoneLocation.setSize(phoneSize/10f); + textPhoneLocation.setColor(ColorRGBA.White); + textPhoneLocation.setBox(new Rectangle(0f, 0f, phoneSize, phoneSize/10f)); + textPhoneLocation.setAlignment(BitmapFont.Align.Center); + textPhoneLocation.setVerticalAlignment(BitmapFont.VAlign.Center); + textPhoneLocation.setText("0, 0"); + textPhoneLocation.setLocalTranslation(picMouseBackground.getLocalTranslation().x - phoneSize, phoneSize*0.5f, 2f); + guiNode.attachChild(textPhoneLocation); + + textPhoneLabel = new BitmapText(guiFont, false); + textPhoneLabel.setSize(phoneSize/10f); + textPhoneLabel.setColor(ColorRGBA.Blue); + textPhoneLabel.setBox(new Rectangle(0f, 0f, phoneSize, phoneSize/10f)); + textPhoneLabel.setAlignment(BitmapFont.Align.Center); + textPhoneLabel.setVerticalAlignment(BitmapFont.VAlign.Bottom); + textPhoneLabel.setText("Touch Location"); + textPhoneLabel.setLocalTranslation(picMouseBackground.getLocalTranslation().x - phoneSize, picPhone.getLocalTranslation().y + phoneSize*0.75f, 1f); + guiNode.attachChild(textPhoneLabel); + + renderManager.preloadScene(picPhone); + } + + private class MyTouchListener implements TouchListener { + + @Override + public void onTouch(String name, TouchEvent event, float tpf) { + String touchEvent = event.toString(); + + logger.log(Level.INFO, "TouchListenerEvent: {0}", touchEvent); + + switch (event.getType()) { + case DOWN: + case UP: + case MOVE: + case SCROLL: + textPhoneLocation.setText( + String.valueOf(locationFormat.format(event.getX())) + ", " + + String.valueOf(locationFormat.format(event.getY()))); + break; + default: + } + + } + } + + protected class MyActionListener implements ActionListener { + + @Override + public void onAction(String name, boolean isPressed, float tpf) { + logger.log(Level.INFO, "ActionListenerEvent[name:{0}, pressed: {1}, tpf: {2}", + new Object[]{name, isPressed, tpf}); + + if (name.equalsIgnoreCase(mappingMouseLeft)) { + if (isPressed) { + guiNode.attachChild(picMouseLeftButton); + } else { + picMouseLeftButton.removeFromParent(); + } + textCursorLocation.setText( + String.valueOf(locationFormat.format(inputManager.getCursorPosition().getX())) + ", " + + String.valueOf(locationFormat.format(inputManager.getCursorPosition().getY()))); + } else if (name.startsWith(mappingKeyPrefix)) { + logger.log(Level.INFO, "key event name: {0}, pressed: {1}", new Object[]{name, isPressed}); + if (isPressed) { + textKeyPressed.setText("Last Key Pressed: " + name.substring(mappingKeyPrefix.length(), name.length())); + } else { +// textKeyPressed.setText("Key Pressed: None"); + } + } + } + + } + + + protected class MyAnalogListener implements AnalogListener { + float lastValueX = 0; + float lastValueY = 0; + + @Override + public void onAnalog(String name, float value, float tpf) { + logger.log(Level.INFO, "AnalogListenerEvent[name:{0}, value: {1}, tpf: {2}", + new Object[]{name, value, tpf}); + if (name.equalsIgnoreCase(mappingMouseXPos)) { + setValueX(value); + } else if (name.equalsIgnoreCase(mappingMouseXNeg)) { + setValueX(-value); + } else if (name.equalsIgnoreCase(mappingMouseYPos)) { + setValueY(value); + } else if (name.equalsIgnoreCase(mappingMouseYNeg)) { + setValueY(-value); + } + } + + public void setValueX(float x) { + lastValueX = x; + textMouseAnalog.setText( + String.valueOf(analogFormat.format(lastValueX)) + ", " + String.valueOf(analogFormat.format(lastValueY))); + textCursorLocation.setText( + String.valueOf(locationFormat.format(inputManager.getCursorPosition().getX())) + ", " + + String.valueOf(locationFormat.format(inputManager.getCursorPosition().getY()))); + } + public void setValueY(float y) { + lastValueY = y; + textMouseAnalog.setText( + String.valueOf(analogFormat.format(lastValueX)) + ", " + String.valueOf(analogFormat.format(lastValueY))); + textCursorLocation.setText( + String.valueOf(locationFormat.format(inputManager.getCursorPosition().getX())) + ", " + + String.valueOf(locationFormat.format(inputManager.getCursorPosition().getY()))); + } + } + + protected class MyRawInputListener implements RawInputListener { + + @Override + public void beginInput() { +// logger.log(Level.INFO, "RawInputListenerEvent: BeginInput"); + } + + @Override + public void endInput() { +// logger.log(Level.INFO, "RawInputListenerEvent: EndInput"); + } + + @Override + public void onJoyAxisEvent(JoyAxisEvent event) { + logger.log(Level.INFO, "RawInputListenerEvent: {0}", event); + } + + @Override + public void onJoyButtonEvent(JoyButtonEvent event) { + logger.log(Level.INFO, "RawInputListenerEvent: {0}", event); + } + + @Override + public void onMouseMotionEvent(MouseMotionEvent event) { + logger.log(Level.INFO, "RawInputListenerEvent: {0}", event); + textMouseLocation.setText( + String.valueOf(locationFormat.format(event.getX())) + ", " + String.valueOf(locationFormat.format(event.getY()))); + } + + @Override + public void onMouseButtonEvent(MouseButtonEvent event) { + logger.log(Level.INFO, "RawInputListenerEvent: {0}", event); + textMouseLocation.setText( + String.valueOf(locationFormat.format(event.getX())) + ", " + String.valueOf(locationFormat.format(event.getY()))); + } + + @Override + public void onKeyEvent(KeyInputEvent event) { + logger.log(Level.INFO, "RawInputListenerEvent: {0}", event); + } + + @Override + public void onTouchEvent(TouchEvent event) { + logger.log(Level.INFO, "RawInputListenerEvent: {0}", event); + } + } +} diff --git a/jme3-android-examples/src/main/res/drawable/mouse_disabled.png b/jme3-android-examples/src/main/res/drawable/mouse_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..5c9802ddf4eee808dd00447f38f0a35edfd2c550 GIT binary patch literal 3197 zcmd6qdsGv57RP6XKmv#)AR-7GKqwV?h&%<#!vh6H(Ong^qDiffT1tr^4ON<%!L^74 zk&=$^CZ?0^E3gqLY^86=Q2N^#mgysUd+0W|HhjQP;M ziCgQsK8Kl@$7!>?TpsqSxP{ESgmdFDCG{PhdV~tm9fL;98gX(u$36jmQdL1oW!ai@<666Bf80LscyTPl&7t29T?6;#xZ( z9&>^t4XT3-8br-}2PcDk@G$xK3|+y>5`*@1Cded?x2~cFEf8K?ty*)Qpy&!){4={jiR=UUxcOWqr-gd=)p|6 zDufZ7$Rkf6j>w6XxGj={-CmtNjJ80{{QxE8~S zMer8_+FTbb;e;=}p}GHB&~?1r4%B>3)GsfB^LptN^Di?O!Y;SS_Iv0eR?zQE2cFF_I(tzNLSMCJ{t1AwFaw)BpbUc_iT zMwq+tq4RGLgSQJ4m>;nm*7YA&cfT{nVyOQ#d{{YDA_C&;jCk6Z=FlYc_IY|Fi)1=J zux07MKL0%iM?k#Zl3z5i|^>kY&{5_kEz7rM@Y03vNHss}QVGbi0r>Aq258%(b zOU=STJ}Snyrb)g{PGS0ss9{u^ zVp&o+auHC?mMokBK?wswI<_8I5p$x5wS3XCr;AwsPd3&@TG8*M0@{*zKdt}m@p$k& zT8M@)2h(WeeV{!74*XRQAMm7-S&xE8x(=j2nVnjLhh@!({BhwrCbfkPZeS_c(9=t6 zD~N{tCS(e|i>$%|nXPC7I5Uu_qEy@8_OJr$-60&j}Y4E=sMa1TeYGrFI}^zX?&=0|r$nWj1ygd~#s) z9yOOOt()`3JYC_8Y;QoV$|E}x>B6ng-tEwfxNE&2NcY^8Hew~fRqK!WTC$?`mhaHAJf|3TcWSoS~?GF^#XwSdwPrSsY6kUJ=GErl&P>h98OWA#f5 zdE`aX=T-w&H{*4Ssi%%y~6M3bY{>V4K zsyW0QJy~)$k;CY}L|H(N8R31mdQK&(l1;82Za`xp9>ymc`;0;P*AN~LDdxjwsC90% zFg_MYuOku|Yx=Y7&~?1YqPBFIiqY-iKJ_$t&JE|zB%Tp*IBv&Ddn{DUZ4TH^GFg@x zv{pC1N+Qo`_fKs8JDblXwW@u{2)ndZk(n*-sxSK-u?g%R4=+Z5csVUr(yD(P-F+7n znPt7NJrJ~+4RTKpzu`$WU}4xEFX}byLee5!3||t^5A5hQSO!)vFgSwXX%~9bjxO9u z=$LR7-$8H1UB2K*9i-0-+ z^58E64ATGBwt{G!O^`!A)8SKkH`7{)oACJe8p(}(-JPp#fHgeRPR&kMD>}tWS8Z66M%6;Sm-63lB*r85h zmr7`##b115gl6}lJ?{a>9MA(~pPw=dHF!NQ%AOpKDZuWR8NS-S80pR)Ft?_(VRRS` z6nmRuMf@c7)KIQq#ZRV#>l@!2{QUMXn&NRzu2misR5pzkM=w6Nu}l5^S;gYw*mW|a z{{Pf{~PA9wBNbqM;)fh%U4jOU9xN(nb;QZ$ZrL6W8j4rsnvjmJ~%PJj_*K536I zQQLVRPjtpab=-NGbVT|wfiB!si$`kqa(-NgZ}qdIO&94Jt3wN-(R8UGX^otYGDS=N z_^$bawytI}xKb@~oV!Okrt#@acx#Svs3gt}gncyB-7>|jB3NeJ?{*G}d0$}^iDa2% z-!mclj&2iF8-SMv46V}@Fj^U$7C`%g?ycpuOFu)4vBa^&`4X*C=Fz+~@5Pezr?73l zm5cdVCsoePxVl55an#Ps^FLb>pA31nL1caBRER2PVS_kU_D|}a>5~hV1i^LA*k7q^ Tf8Cn-TLElLNQrOUATIbFV?opq literal 0 HcmV?d00001 diff --git a/jme3-android-examples/src/main/res/drawable/mouse_left.png b/jme3-android-examples/src/main/res/drawable/mouse_left.png new file mode 100644 index 0000000000000000000000000000000000000000..e7c3468c026ec127b18e2b955fad610ebbb2f694 GIT binary patch literal 2819 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 literal 0 HcmV?d00001 diff --git a/jme3-android-examples/src/main/res/drawable/mouse_none.png b/jme3-android-examples/src/main/res/drawable/mouse_none.png new file mode 100644 index 0000000000000000000000000000000000000000..1bfd27ebf2516949614868c4e47a7b0189510f4b GIT binary patch literal 36357 zcmXtgWmJ`G*Y#$T(j_gW(o!NV-O>_*bP0$wNT-wth)6d`A4CyEx?4&_O1itH;afcK z_|Dj4AAfib_kCR}=9+UZBGgso@vy0|5eNjHqJoSj0)Ya5L_uI-z`qQf3#||cdW52k zq?X6TX1&e(doSGh&nzr0wRQe9xIdUOtpDly(%q)*OZXBA*1cdJgOJi)uf3>qLwO&f z(PLuM8UL&H_M|Tnj$?CQq?cPUXfP-vpU~r?$zc%^XGxmLQ7PsQ{Zx4Ta_7m`a~Q#GB9%hkN)_ADU} zIf$_C?d_fT`!_9NV8!sslP41|%j)x&oP|oK>|Z8WR@+vleA6irdS03^f8@pU=uwDH z3A*7Z5q{W^9lu7Y&X6@<77I3?O7P@Xs3`>&8gk1~&>*VaY{Y_BPqAS5HbNV5TUO)e zTsj3+z}#2wRQ+n#wGRuM~y;2o{eNm;d-t_}BM%YCBgxM$Uj! zSAFzIqGV)$#aYO|-iQE!rNtKC)Y2lArCEf=(Tk11`n}=SXp=(QTdvj0{hu;ZFg#ho zaD)Us0#P_(Yt2XXg#)L!SZbJ0cGRtx8+Vxd-Tj!(hdX;7%a2r29jYb|D)qP4FD@?T z1sYHLqD;8QRPPbP)7yo#&bhP2+p4IlexEsRIM#ccQxW$1-yiX`)+dfnXs)cjCEHg` z-c7KKdY14ADRJ?pb#C$WU?um(K*q>}Ugy=C&w@1g@|=k-KMXkA;T-u?TndZVzi{+s z7Z=Yv3erT$waz&Tl2%RPg|!C4%kxp;!HclG4Km>l*C`3Ht$eFr8tPsfYNz%vf)@LKdNmVu0eT@>gvN^zch=r*zQYbtFsVdozUQi>1vQV)K2~TKKZK5 zQg7P5cIy>?s$9v4RP7Xe2f>XN7qgIJJJwDO^5MPBkB}FxIHWlfuaC)Lf%mkonp7u6=S;*&$$zA+{Q$|LpP*gAQG&=q zWLc+JF=P&up+1Y0VPsEMwwn7~yPe{HG8b0%X?Sg9&K6=t7OHjME~%{#}^+S+gfAA2nq4?F{Lo+Y@c zkV>RxUJsrQzTi()G3D!0hyRgWE=pMIS6hmXpn;WIJBkijSq;vQN_oAJk&(Soa=C-{ zRZl`qNySgQ)e^)m<_O3`i&_T}e|0*0xf=iT+j?p20zYCU_O86t-Me=mj@Y^_pX@Do zt7V7^JuMr3p*)=CDo9h)yA+heV$Gk5KtP6Jp~=vGwn^beBv`uHaUfc_3yZN4^N--s zOLcIf5ngbwHEz7VIya7KH!Cx2 z@Hy>CY&gv8IXtXzJ6zS+c)a7OcAiUjY5jbd@8yq)P>QC~<*jsbP6I(Q?2zfBi-Uog zLyKZ2UGo@i^ofQZT+lK3``wzLS(U8#?Un02m(Gc!%eAKR?x zW>IFYfKX~J=RiZEaBy+8@~J=)L1wfqIKe&6^`-VP$;rz*o$Q+a?C;NkpwnWL9CfQZ zNZ*lRA#I7|Y6!2c7Wy$|?@@1*lpk?)B!OfAy#TnY9OaD!7iEX$F57?XGwVG3){QbLd zG-^C^9$)5T`44XGTf3Rl&g!c5pN%7{mz5J9VwuN(Hr(L!;Yr~;Hh4I6kvgR1#r_G} zpaxc%4V9~5m?;J0XhD<$?KGbXTw_cpYSm;^R21HS|NR#}=;!QA97aIbFTUk zeuEd@r>cRZMA9-0x{%6B<_-~xBh~{YOhz`2KJ%yc#gD*0UiA$hl=8^%?+Ei9H=z>L zxzG3>r_(0f4a1m~dvg+7=6|^{_wB`ioSWeQQ(Sj$NlD4EQML1uwOD3M&6NGgrJr>Q zQ;Pw1Z#U{el-d9TS6MMzoe|ex`>NfOl>Fu;=jMgIrj-LosaE)2*rTV4!p04t9p=Le zHKixTo)f=55Qmt&Kth{=;!GfRLLW{07`v7GOGU+D$rlHgVWLp@;~V3Pd2&JDGrqU& zj8;}wyMY8g2#A`R&roViU%kSE@PX6G)4Y{$lcQgnqgj-tUy7aEglABxe|rrdlX8v5 zfHM)n$10rD_>}Z1XQBoRX_gI@oSa-wk=D8^H^qf4XQD_$UEM`~>)bOxC_AHco{O<= zvKpZ_E!^m1r+WqdX9YdyGuM7$IV`zcjTifvwv`i?&@QHQ%Z$<+T-S)xRGCF-2|7AD z5QrnMJMCsfeOB;%ts6%&CegI&T=mY=dH3}SE4f0O}y8gE~m1@D-~+7 zb*&tn^vztTP=pQYlxbM! zu@@F2esvO);rnmAcgJ(Uo67iVKXEV2|0GPB+ld0jj=fBv;iR2Q?68&YYIjsuM<@E! zry(idrors%>Vw2ywvc(6|8fZ%;V^Vc;B%|2(1uDXn-FrC=kepHq9WFNaf&jz8W2%L zH6rP%d(uMuTr1-!_O5)XD)0&h4L+3r`-v?$T=Zm-b0nE3XiUt^b4Ol7_Ej2e@g{l+ zSbg0h-lDWnBQDMxuSNRPgn}z8AIUHh`CJ`j$_vuSWvd5_ZiGP3_15GZ2owhx@OBWg zhJy@pXVA7%oh|+*)Or)S7UtU{e|R0S@$>Vmm+GJ(0woZkrcF!EZXc=FCZGWjnGSji z(nNo6onxueFExYii4;s#%JbXnx*H>UzS~N0?V7}hizm^TDt1!ke_n;@f7)w2U0+k< z1&@Bmj*kkHJznVtl>EiLQk^Gua?sUNnAqa6siH8nv}NH*;Uh{b4`IShAp_r{wB#{E zW;<@X&NP^REMnAHJK=^Kpw!J46=bxGl<4w2d>AZ#8Ydn&yhb{J65w3T(XTz~Rx$a? z6jwD(Ffj9Cky+4foz&H^GxPd1b76O`b>78CjE+>6D03i+bl@oOWu(=&2tXN{MQ?n> zV&K^RD=jsJNQ5|stlHSvnBOzt472*C_){j39jY3UlT%i#BUZt%&6!U_q*&(8#s2>O zsZPm}7k}#GqnPWH80OoutoXWT+~~77Pp@wdVVA&fH#l~{XZhjr=h9N&FFGYt#+-?9 z(7KGu$ZJ015XeoB@~I@{kE8tZ6s3j!3g`#ILRm${bZ5FgDJ@Ngn_^R<&*tf1$HEfN z#44$wBUi7qqY-b!=$m{t#gFa$pJD2!>ldahYL)I6o zad7Uh#rI=l(ro#t4*ZXF{o_Tv4z1mO9L=;~G?jB4!H>QYDs&L5Z>+eu^%*N?`yHCv+G)KV9T@!?k0X`xf@-&GaGpMWij1RwU#eLI_`pMy zc1|c=wSe0qLIxQZ7xzq04_ZW%n*Z5Tn#W$G-v2g<0@6Ach*k#hJ}P79tcLFr?@zbs zX7L4a$GHkey>2|8;#MJ9a;5~lBk28)<0jt(W_+HS;2;QbF=W}K*Kq5Z5zX%oz3PW- zE6<(-8on&G`gW?s7JqgHXMawoCU&|wAbyxlFcLO-{U8Ae!$;k}iI+QmhePt$=S#hb zGgc{9Jqvqi0Q=&4oIb`3TYW+|EY+EFuI3gIiCkN=f!1$kW`=~~1u+C4+L!{=|0WNm z>i$hhu4`y(U-Y-yWE{W7DJmH$W?2Kkm?r8;e0`{Pjn-Sf3+-;!obH@reos)8Hpasb zdWF%)2D-8h5gPn7As37R@oP~d-y>~Eg*k$&S%O_i?A9%JoWl%8@_vd>(pKD>73L{c zm_^|k@-vx?IA{IPhT@fEP1s<3`r&h09!^R|MyAd}ia>~Es{Iw9Ez(&0V&juissF&Z zR7aNvzcXZQZH;c~^^EV#SsSyMla)1M`yy)R;^zyogYN*(k4J1Pj{$u8R~!6G&1bFS z^CXb!VnsXh5bd)1MnO&8IyOd8KK`G?dT?{rE9-$FyM4I|Zq~nvchOX9^NwTJD&JhC z=11h^-M=|i!0gWq4cpnv>VguDylz2a)17w7?|L^LdyjrO={ncEAM_1-&EViv)bDIK zb6)&vL44M|cJK4+dYsPaJ5YkcEcKA1S$uD#TzW>kn|6ccF+{cB52Fb)v$;55Vy+S&4m>$N_-IDFJcuYw?7{#Os(6-7?y8j$Rd` zTxcKzDn@_~0pZ;vzC|PILAc{RbG|zpOfY|SzSFt5c+c!>Qelh>SD#HqaWQro>q?K0 z=`coiMIb*C<@x^0bX8`hJYr6xx*M1Xh0@@MBML<5?T(jLRv4K0G=!((@iPXTT9@L~8ycU53k)Hpxztogyt94_L6*L`-!FLI z{C#GVf)Udh>>(Nrp-Lm{iuLW=H-&;>xQTg#RTn|7Kz^~jyQv)vIwd2~2#-Wdy@|xe zi=}k{lJ@rYpRbD4d~L%~{@&^wZTMFy{qp6@>r3d%jW6|dw1)ZG%y_ieZbM@X2Y`}?J!RYV+(}qgcgi)C;1p>k7 zUl1i()OK+p%4t~h2I?T-?3?0cc3NjTJZ-1O8VB*EV{8E}rMHu0`{~2z2UqIqH9Tebyn+u$SuBC=PR8j?V#cxQx-} z{!*_3Q=G?cGp5t#7!Pz1hFFF02?4H4CobmeF3-BO$zDTWUN24utmH>n2q^wzV`GH0 zahkU$1ou2>hO8@spET9;4NQ6-5XegWR{yAQ@BP3^`*MB{X8i4g(>lW2*&ptRzd$Z` zCGAaPT>0<+L*vl2XhMc%S$wB3Be)%QeKXP zGVLgcn>jFwqAyH?f8x_%qpf}2DSpu^F1p(b7-x++!(;w{?)s#Y3m>oPl{?g*(}uH= zva6jyiCKcg#Kaf9OS~{e%_cuxt*xoSmet@E5{d}MBrqGucr56=h=orl_IGZNJ^tbWf$^{Q&JYsndIqh*+x_?8S~ z?8|;dF=KlJ>xYk0RUpP7XDxUsfA;ldYZhVEl$lZleXaWb9V2sqnV+pw6DxZqvw1S& zbm!0?U*SVlLKMXg$Kp(6i#M+Uv=zjc7X!4LQ?=v}RUQjb0*hpxpHt5u?J5r zB&g$?l=?qzlHqBLyitn$_`$K`ehirfEkf4W;0GE4kOq`sg;XPtIrNK*74gos;R4xA z9|F>|9G*lK0_BzdBVTpx6f*%ABE!oUwT zfiWoC9w0VL-FHAN@Uhg(>3b%oi|xHev$SKH!US`VIu0ZKXPuG=Jf$M!9Cpp;*J=j*t*?wBX)mxW7dV3x)`|kvSih9Xg9OT>Jb!9C@S34?m#gw8 zSI3P6+S;)S_Xx4j-u!DhJ3IT@c+uNJ3aq^vS+{hvKnbR4}c_LW-}kqF*x7vcAr?ek5%6 zmBR1%wLdxC#VjVevno!3eyLGzyL@U4OLLoIfxghpkHzZE!-GxH4^u8D9kbMlS4O2e zFnkHyE;=8ln^J_gn*|l9&2eE~FZLiky+6~oUE`r4kvv?a*g^Wrr$ReEi!-qf&KXpW zt<1(E$@kjsA~~Zva+B@l0>omrDMzl|3>!mjeQ#>EvhwT`<1=Evf8R1AY*8ZHJ^;#W zJilp)cbZD1Q5_>`0iIoa1Du+yocX+LYrVoxQ7Uv?W)TsNH zoEb>5Q6$2cD{xMQRxQJP;sRq?zg6%QeGLg4_{}3foeNOU2F$wd5gnfRjRK08cIBiqeJy`4_e+x1H+_QbdQff z@o|KVW}%WKvheS!x?AU#``y&OdEm!bU@U1kuHRuu?PDaw$^w2gv9}tizSBm?n-vJJ zKR++E5#~2FzhM2SX8qt)Sk#$=tQAvi7X^y1#%H#8C1hQWtfVPZpzom|`Ru3tgeiuw z3*N-W=V(n)h=D1gyd>L8K)`@Mvlio(@`A&qQ&T-qLQP#MSVRb;uQSzs&o0zi(8@;H z`6&eu5HB#%@~MzwqoW}MqoY`deU=m?I;61bKGF5_F0v9at2?P+AQ&}!R}K*LxIw*3 z#GlySrma>&ccBpsINxccyBUOfmdbzh0}C^5=VkVFEck{Y7?-E@Tr7Ya!nsq{a8~TM z)D!=@VseW}|057K?Ck8}GK?Mo)gt%yoW3fub}qA3$xz?VKrnRI{cOwoZ*#HclyPNx z<}*gWz`Yd|^{f7YQpgznQuo1-HJHToJ5Q-X85#)UmwptiSlm?&ioJ{9B3Ia#jEkDi zE-U<-Z^W8UMt>ygn%>_bS(X(wq1HReF)x+9JJWDJwbOuMVvVrRTS%R`$nWIqJ4XgeykRM%jlqOLI4M27 zz3g(L?3NA{%JYw-zhr3klX#`01QxnX($in;VC;^+@=>*$vu@l>cdkyuT6zoMraj{*fw+H0*n0a-Md+7x--HIzcZWv zK7V%CvI6=?6Q&TD9`dFXO|ll;uaV5EX^xFB2*@9t`hUOWF3UgPO>VhkB2j=%AdQrTD8Io8+3JPC1^tf>Su4K3G_9wMOyn1KxHmuLQ-@6- zHt1X(gC*@_-u2XH@hyU&)$*>y4ts$-@7*%p(*r9?w70klquG#JgjiUQUYuP)Jrv6% z*a1lFxcyfMDmT_<)0TVdl5;yut~(9AYpxC0Sv>C$_E&iBJLBJ80QnV$#lw_0{`D&l zJc@4Cx~TjL9%ofcQ04Gd?!i52dJ^N!9~fy>68E|7NwKmP6eUdMCcm(9!=d8t~(?sfB#^Z*xPfi z?RnsbNHL)N(JIk~Y=m=YMqSAW$lp_69gwU~wLxIv%nEVxj0&F0eU3XI4InWIM{Ae% z@k%pCpanUZk?u&YlA-MG)96ypUm~jB61}(S_1j?H*PD6T&42&(l)`m0lj{bJry;h#le7FD8Jf>S1{DHg1A2FF+=D zc{Jl)ds`bCuzRv=aXldkma@|a8OJoBc~O`l1Ws>Q_5{~z19>2dgY7F?=OozTr5Ixg znujgw1>HDXjHYe|D(XY9fU1f)`ke2$3nBJ17PGdySQVqXclKkXs+d|~k z&$n3CID(5Xd^*w9MtiSl9~yiyT^(eOoJ~}d*t7_xv!h!786^228DIM+g;RpF4w9JxSBZ8XDJYB zC>8_*Hs4)KEz%@9n0}NKsG)Ru_mowSV@O0tW1SX+hiFO)zpnWVd}@SDj&z~LL%gTt zeYLn4vtTKq!976 zGnY`}^)nWvSzEi`{ZY~-4iaduV>;4f`_q}4PwMgSRe z;>bMjGhX2V|HN^hatbW}zp9u4@s2kINEKmeZs5S$OnGfL@1coI~8Sa|e%O&KLV_PL=^DhzwEs z3Ad@>lG=4ni~Ip)p?&4ndi7kV)|&`#4yVgw8au3Z#S57>_>RxRgl^ieHRV8&>j zqyXm#h=>0hA?_O z&)rpoYwJ%uRDvGL{(mn3%T#Icpju^M;?-tY@k=w!~iZCFgO)Kk33Xpil_go{Ls(EGK{eHdGbII99Lf=UXLrw_!XyMd{&{wX`Pt z!&hdEvbV9(ZvbSBn&$&dG|TvVA7pcB^he$H{P7VJM=XEs4BEFF#wtx*gez!HPkh9n z(7fG{97@Qyfw<@wJNo^!6>FC1uhuaRSDmA7$q07bqdy>Z{jvI{7r496M49}FaV6{0 zi&t;A6+fbC5^E~M{CIq-j(w-;srGH7vZ@84-z`cw$!Ka=yZ7G5R-w5B;(Pj#$66Fd zB{=&a+fE*>{wZ`V2?(6p7AgC%dwT2l{Um_z_+ekaejWPi=Un~wS*3nDEmZ)ukI(t! z%s;6Ae_!b(#IyoE2u&r{t zh*V(&P4DUnEq;rJqqa8s$%=Dzn=%4FttS@8fxIC;D&QT7`b@}_vXtTIjfOE?pcbjv zpE~*{o294FQqM?MqX%G6aP&%scRxtFJKs6jB|NzUz2+P#Ky^y7;j6o&fQQx-je-4N&jIoWKEeh^y)opSS{F!jC_a;q zkmYkZFC|+T+HjYCFW2rgP{T}iLpwI5@?*ZkF!q=W@lCKy*Cfs3;X??_dK``DPH`q~ zOzV`~zBe1$axKG%0yDgnt`PbxBFW%-nsabe&0_}7XI&dRE<(Urm%7{f^wN((Pc>ZJ z(l!b>5m=-|5;XDm;=56gur^H(G{JBREyuLNT+%>XIonl zvG#hJnt@vRE#nQRmM~R;|9Tk9$boRsUW%wwE*w?zzGchvlLM-#&;p~f9Rb`{ms(&= z*pMgF#|;7>dY7!Ev){K=AH2<>kL#wV!8g8}BYApf>HEDx#Y1h+KgQy}M@mJXRLTC? zs`t!LTTu%j^?WAQ@lK7MmYNzE-vSMtJ3G>ul3K=8;oY}gZN5FVi7D&?3?FnMg`}*Y z+_a(^Jo@ccZ~k4fY-9YT#j~o$?i~i|*VT=IsD-?oEvX?`PjZ&I8K1xU;CDj={rve8 z>plZpq?c$$)79m9Cr7U{^bR+%XgcwXI@h&dehBO-JKKqHxm+lrqi;TmCdL(9^n4g| zPpz8V3HGS>8%7t_MT~|A>@!eWbOBuXwZ_L78$LEx(OpeTPjIpx4ImGpYEG; zr17}e>m-4!O^=Br=VDq}S$P37M;OWtH#D<@84zuCyZ^&C)T>Rhc6W)qbSjkEAv1Rg z`he&?UC^LVy zt#R?97=k6dP+}F(fO5>ObsVN(KlQoFSm=x?2%~^=nb>kK*DPAq`cOQ&0Rw1KMn>r9 z26{j=&_&BVMp=_)TVd^^56WhW4@XOsOv3OS^Y0MUR-=H;267WCL<&xk8&|r^V92_} zk3W}#z5n_Mpg%ZM-0py~U>;CRvpgA(<={^FWhR&+y4_6UP|Pv*J-7y>fF4V-dVWJ zC!!(vk}CM~DT>jDw=#^t#Lm}SGaT47U0!t6BS234`V5zZgk&_0gl@8LIDYb!p5sk# z+0%+oHdG+R{93D6jT_^LD~?xMa?Bl4Aby z1z=jcuVhA(w773lRZBFh>GWH=`J9cTSBjpnDdVxXdfBK*M-J*>Q1k2$OTDu}gh9c= zium=Za*>wOL8{bJvIQ@zv%le}$ZwO=w&y~Bw?q4TPdytwFLdbVvzk8shx{qac`Mt2 zKNZOGX7F&dV>yV;l+Dly5ohs^L8As#42rYx^7>HqUUlf6-oxFzJQI*s#%k%`XffK_?rzA7)iuO|vWOI%zD z9JYEJYhrIsU1u#;Rf~vy0an0n6i^xY*u#&Q-PXFh6`O16kqH3M^E8uB_G0|&=$ayc z#>5Y^N%2-5eiygm04#}IuGtxZZqL$%JLd<6UV~ml!qoB(`i0wh{p5jneZM`gdQ~t# zW2RM{!o3^e4pQr_X~rcl-P*TRw>K!Dj3}7k)bVxPZ~np0aCz;{hjvjjTwz`9oUfl-3Tl$@@-0&AkToAMf5#-GLD<5GuCa<&{WKBhnpUX}SfjWfKlW9bC5W^w7g}DJd1rJp*fPMAp<`72`$eZu?uJ|t<0p0x z@K(UYl$7ro)rB2{uy{9bWk0_~yYKO^){0GKcy`a@eV|tXDUgq$ zm1QAaM-+Lmz864sx`SvKW3`2Bg$yT~6MvyRLCGui4E1 zdbn0xmpMqL&l2uGi?d(>a|=l7pqW9uZPy|lW5RZp_s%@UMTV3- zck?fNkb-W8VV^fz-q*oc-?6#*U(zcz%i;L=+b~dr`2%jW`8K^J1CkJwles;Q8`(Gf zOXhFCB3zctIG@j#Mv;39p(g}4=2nKd|JC$LrvKG< z8~mE3y8*V9#UeD((r&z+#8 z=A7>yz5_}NP?}&4nClam*_8NtON2pMQd+ZU2u!J_=H{qC+k#*O)TMDJw>qaBV_e3n zkf_;s6ycTJ0%p0WNG3zmIXz4=S;hxiU3`7Bc~26jr|tM1s8JnzT9*xCjBt z0B~;rdGRhL=CvIbr|DEL4xVP_%&nwR2fv9Zbe1?fj|nLsUwcsnvaP{v>9IzCaaTh) zap`a4GJI4alUp5UXTm_GyBd-o+L%=)=SRE-kBP_i`3#p>=Ab_t*Dv#OcUpnE{lQ<7 z0@v=TpWRU^|2&Rhq-^_wyFIu1Z3&O-CD&%?u2R`czsGop zvX6sFZX(O8P1V1-?Du8wA+_Y3yU!*t*OTTh!PEg_;+{T%z(mZ+E8xJF7V9=Zb^Qv?_B z-fuoUzq{do+4fIUXtO5sX5r${q()uFdo3eYr>B<;TC+(nMj9p zBtV4hKY?0C;JYdfvkdvFIDxiHby}%&l)?A)*WVm05nhy`MyU;nKMD=`=+!V2a?vqZR< z6t!*z-(=$hx!gc?mK%c*XjoLB#8H?e_J-(}e&-PoIGzAa+`|S7xjp;Cbxjjo8$Y2S z&PDL4+_)4#t$endW+RW$tXg3vvQ_V1wvoVectBG-+I64fv-x0&R(Gd%a{jm^VL1m5 z;Gr1NeJn7CH5`>X+_;b+v|zkfX9@o`2O__b=*4d9u2=n?NaO8KpZpMdq*`P|c`O#p z@c|p%eO!5WQ;!kxGA5H)8NbFUL>G#}`pO z*Qd=qh|kOn!2y8D39+EoB7ucs#0HzSQtr@L2}=+36e;ZYJSqM<1SFe zDq}l!v)jLxSjp;pFv)uE_Vg-Nl23$)#ONq%g&3hw_{fk8H8Acu}Jsla1k4M=kV;xTWi`{Jn;+Jb0`sx-@k5r`jQ*XC&v&d*`YpVy= zhP!u|N3M2^?)AuuL_HUuKJ@yu39QC9<-`lZ}Azn0O4;gwHe@eXMZL? z1kEx8M$vs!KHWj^yuxSW=&jX*+6{{r9!nZVbuEK9tCe@}yRi>A$D2$`*{9^Q#9{8NoPEE`GHaLjW(sAKiC$p%B8rkjm+Fi46GQsE zuQU3G%X=D1CgQ2sI5RWkA#>qd%S-E@31&X9d`V>ofH@eKYH9eRu5HSnZ0nmMTI0gb zy6wpG4i*bQvLV`b;lZQQP@Ngra*y0wz9+1dhQDt7eh;u?mig_DWV2CK(VJ22f0>Fz%8K>!p4V-m@9lJ|2dyDjJM zrTc!0iyC&04Rc)!PYe6K2|QS%`Tf9&oLXnVnX6y=)-=_?J<@jNleAi7q-F*H28doB z)Lk8Jh)PYW@`eUZ{vUsBy6Qz`ZAhCn_`slfZ!7{FEQfT1=Z-v@r_;SQZT5#~UBX0v zS@!q_LF-HHyK#eS7BwyG5stI{vgZ4zpODA?R+E}403}+U&R6TYN4J4Dx7hZLD3kyx z4l)vCmO(>`3{6+=zGyX_quM`Gn($mam2knmmF|}$gR;1?*b(3$aIU^_0`@F9hgC6i zsSV+|Eow}w(Pq|Aw)Z(tUre^QzNprGuapNA6v_p8eG;|EnRw^pt|anEStuQ7!IJO+ znvCZxof~f&`3jSB8-sosU{d}Z zo4y>7c0Ng2;+LCZf4vf{+ie~DRUAw(s+nR@IOLp7+_-!CF`WzEmq(*Bpd6E(dv&%?oQ>(;uIluvk2=O0-XOs% zTdxN;`vR~fWBUjkP^P$rcLYH6Q4vqskzXm?s7ZRNMjJA4>qj!C4KE?S1kroZfDpf9 z57FKK(b9J=&cHA6PBKrk`RuHQ#q@&{3_xZ#&voOT6?{(sm2M(aw zE*;y4~-aN27Gj1lIY23!Z~)Lp|M|k7^tC5x8Jk z3MGw>D&UH;k`X5hq^EDzKBq<{dDF^?5U5@VmW8x6U6h6 zalfQK5x#fugIVqP9LgjQFK>_xBLlw(WrAETLr-|x#1k9j0~WD@jOok({+>XG5Nrfy zGuZneMTC3I52siSv!aD-zM}>8#1a@{wsI3j$iTeHju^SIF+O-;>gPubcK_RXdcXL= zH4mmvN4!F_UuAq=0)+3M{wzYad8@BFbXyRQ+mWpdWbP3+Z?Sh z43o$OK;Fra3-1PH!QTOfQD7&5CRn3*D@m)*wAy9VgU>yWIr9ZJkunEfFBUHPTF*z1 zZpeZKTq9y&WrJcx#Re_?t^);+%F}o3RZlnag5ROj>4LlkrrX+lT!FK!-8706Fb7+| zdw2V~-+f8*Eb%kle}Zpw|G9?@(LtQkQqU?C;$2=F5I zk`0;ixO;J$W-hhRW`lc2<%Lqg@C|(|vYp+zpy6sLesVahc1_$go{h5V!V$b?X53mrxq9g-_}PQi2o-@?ycRajF;VX(!&-FoL`)Uj@vcH;S6{{bX9(Ymu*?enlS`-;&)O#~AQHb~@u{(Pyac?*Lul&BkaM_AQjcGmD*s3ON{g5%TUI7=f*Y42G!UGT7QEv; zZ&Mwtc$NMJgQ^c|#8c5Xy40Ie8pOhLGm*;-6Cs1Orik$83>$=9xFT%T&hKL!>{Sbv zW+YVyx>(d7;!zUY5Ql&a1c`~is z!eDNp`oM$pR>tD-8)*FMEWd{cL62)EwN!Gko=VOyg8z~R+;240W{BrBFr}Cm7jNgL zDwFXiE5H3`3{BzS^i4bX#O~C&V7EqiDM^ql{b^GHdIz>lZkm$y!&i$yb!xGNfcx8; zZzAwSQ>%$Q=BGz)$SdZ*L+m@7D-Lbwv!Al2sQT^`Fvf@QcnEUH^8_!BxN8vX$j=tm z+Ijr77m&(Umlw3Bz~D{Bg^{+99`5GGR`25C0>;|l&l_M4fJy@v)H@$7jnH$#KZIRW zkg*o$juJhLt@C3cl>*O#C}BQ3cXl!GFLrLfH;$ZChVdQU=)hO`*!y48&hhInE7pPU z+isUFkeEku@CRDkS5fENn8C5#`1}oxoJALLuHQhy8G$h~Y2}kXAgAsK@>fT%thQrSCXwslZ z&B`Yyg`bkJRw#A&j3X4>zQCF;z)1N6ykg5ME3wK*f0aobc4LX0Es@8{HxbdFzqV``)8J(p3;gHdsf9S(qZ_Q3B|=b1vt8#iD0bQ zZoKxp;nKMzPaR=T5BR3Y#Fab?KA4Ef$jP17e%;sTe~60;{!1|Yk9~U)qfVVe6a5Z% z?{vwg#vPH79yE}Js!(%BbR|IuWikrwWKb*GXR?S`yF?p|n9+Y;daAQ@5`Q;aIii{{ z9W{`Z3l~@>ocvJoK+nU7S&)`~CRaEHQt z2vQjA<3)4=#SSFuhkTnATA$tKCu*X5ZQRKBP2%@s72ZAmH)dX>l*h>704ol|Yi$j_ z=Q4WHWXuH8tfUJM(htk>Z2*_tl&ELVnqc2$Vv8R}La-+!{kL&^E-R+XK_YyQV^Wk{HYgq(w!Bzj5(-9M6ZwR-HBFsy?p9 zL|hqO=cus?S0mVo{e*)?`itrQpgVW~l9G~|z!MG240qEItas6oD9wUPL-#33`fm~r z=yY6@yq9WGk`@%J=dX0|Ix+yINrSspoH8HrYY!AJR{XF9`(eI^t_z--p8Tn>ZWN^X zL?E8TvMV_D(Wu)Ua9+V*Ps+?BR}uuI0Hb4WZZ4RGVW4Hqg9C+ZyEEmvpN2xYmQXun z5p_K!#)1YOC?v&#VbJ6wgnMX&BgXVAy;7a_m4Cb@^|W-Zn~6T^;R8Fjc1XdaZN^JX z=bfN%??!OB*_{Ea?Tu3ltf*lm%&M?|2OF*t<(wKnSn=-r6oKh9bKouoF7SR>`E0VZ zAYp)M27IM=Zo@9nN6)pqM0~O9ivwv~2{Aa6g+aH=tm0yu{^gwg)PWU}O2-cs`GobF zMd4ABl`nEO?d|Ml*GEd=H9&E@*-%(rEo>rT5x@I^;DIt#MEj5pF9+{e3-+m+sr?I4 zWL6Jqw_0rWhudLiD(E$=c*ByW{6iU*WgOne_Sub7$6HK2zg}%p#kdQiywhb2uaKqy zh$h3CNOEum1W-^j{lD!gSQrk3x@b`ErH!k>Fhr~$d3d?@ErMDqI!qJCOn@m)k;q2# zHhW^PtN=g%_Su@6|M~j|$ zA67xTgcVD0$Mf{%!N8)7h>@y zF{=Ps9NgI5qrgdT1puGx=nUX7Y}6^Mso`)0^gNQ0vf-l&vXKwMJ$%X*4^Y7g%qOvl zBesvSXO-|+K1J?;C&S~3mbn;l3R#7+#aGmlA4D6k8IE6~v5e;Jrlq_-!zJ_luOVk5y8?r5k(N}ofgF_Xv9Y8d0cbVqsVpm9T%4R{mX@-=&*(g6Z@iK~ z4168xw%)~{{YAZ~jq0fp7nYl{t7GjYKJ71ZU!oef%f-bueyaVP5%&Q~jwtdQ&iEF~ zSg?%1^FFmj>I`{$A2uHH7unggbvrpw!ahc~oVT~j-n1ylRseS1$J@6bV?qk&Gy;JW z&dcIUW~1?IBD*0#f}Z}5TApTh<@#g)tBc352;=E)jo^*vX38bnio9se?H$~)zvM@&8z;KSuKnH zdi%LAC-a1Qzgk9SuZ7FwHlxS5!CkK7l{5d8;=FtbL|Px{@^60XDl$-JMJ-YxsSa1e z)zQ|bP%y&ybly_b`Mak+f{qfT)2z`AJm5)}!Ra3ajnQ6P+pQsqBmxcS$FYy17aWPb zH!D!kOJKDQ?BBnCe@t@qUjNMsJK~b36_bURp~aW@oE1h9%=|*GK`R^$-fl)3Gb89 z$3!bMaK?3G(F8c&tC~ztNlLm=GySy@Qb%5wUxwFQ53a5NE8HWFh)$J5%mK3v@D*?o zeBd%5&*7%BirIdxxnict0j{@Qt3t8lA-v#O!3e?>{{D|v|f$OwNj+Z(a4;}Q#IyyUvutVC=KR)+G z30IX!dDn~1xA<>%YWG4!5z`BgatdFHYjj>Ht6hXd$Y08SZ)vOXBX#ei3!}QLtpwil zqy1oo+AWKNgI&WvsI$^0)+&2GnOGJyF5`<=ccES8^RwMwuZae;`OV5jmCWl|l}CsH z(Sx5BMOqUB(t70|VCV}q%^I=}_lYb_glZ?vnHUV7X{vqL1&1Lo!Sa?-V;T~dcRAHN z%joF5lnK)T-RqSA@=IzUb0SwY%Ez$i{p0!DNJ@))4xPDSeoq5R>;CCbyR+|zV|8Xd zmkmtREozZr{a}ZC5?XMavl>7{XebWkJ1{TMLBKT(OQ7supK(ls?WEkn6O~&)KmgVx z|2YN4K*t29uOLlmz770dgPeb`hprT&^?K=)GsNYM(ecK3ZT9#Sl|P0eiaXW*q;JL@ za^ox7-@JBJ$(u?a_GeXV(;7#YXB4ryS;Ph%J`I+AoyAq!Khq-0sg&J_e2Mx&Bdbs4 zWy~M&!rd;n;V9*GHKeQL=ym!=87QD_@OjEUMj*BCaownawl=_#2o#*UNAbtk2dT|@ zbv8=x(`8QRvsdY-%}Y=|*89z{h^G+yKEZ zhB1c_6Xwv4ZKuyX-T$wqvw*5H?cV-5fOLtJgrtBPea^4%IaNT_}qyA-}2kj13cc?D{-9#+vXCEaxI{% z2!(NTO6ge!NaUrOwW_vLLu$%9JrtCa(!Q^~eCxLvkF3HZwL9GL=?e<*a0-;KMr2%g zv$0lu>25X2%l3A5*6bV_6dz-y%;o`qBlLtWec?%L_we-#lgo){mY^QPyaJpvu=|6W z21+VWCbY>dWN=--Z=pUUlWp;i@&TU6=#)iW+XNBacY=(%{f5JFa{bt7>=fhS669R! zFS`Z7LkHJ-jHh@1T0U>8I4G)jDtXw*u#u7GHHkhY9{Qm?ox-u|-3J9ir?0<0jPODs8=8yT3JIf)!wMkg{|z;j!h)OjJkINTGHwfpD=y z#8JU6BFCgeb8!59BR^uSvJc3;SZ;raXr0 zw1<$7>%XbfbFUJsj`WqYbfX3at{!`OkIrK2B_n4m2}ZDWlUyfjST1FW&` z3vE;{_L^QvHD4(VT0nYHRZw6jlL@AAwe6cQbre5q_PzgIpkZgMC7TzUxB2W2(b^_WFn5LarIYm?Qlp|P!4+!7V2exg;`-yYOL~8Mwq}< zP!^H&kO*A*JxAV+NBZpum^=kuT@e2Gx`YxaeQ*ssYGwZ!BRwmyUL>=fvOQAu0mJ#( zx6K4yca|Z)%~^``;GTx!SCXS0cAD2cr*70O@3qdAiamas6IXY~@)j#PDSa*jT6-vd zTM;^9x4WOlt#$vXv>@%=@xiS5A6)Xhph6b*^h6oD!N>U$Fu+36vXWykq4F{-P4I=s z{r!S(=p6UZDUYp#!9o$sI`MO{d~yRGaX+KO!WYT83<2!*Yy@bJ{6urI7$pHm_G)Ch z5z@&iNlDi2?be&LB*gX*Jv~wNSIuiYBKmhVm* z6+8Nfd=`CqfoA9GP8{S{F~A}_h8q+vc7Xpux7Kroh!=JaHy6z9a{KGk2Au0gf@o`` zD<>F-``@^-Sgo+9jQ7=SQl>Kb5;J77G@NAe#XHF3M zF>GH&CyGm2J+f4mWp*egVH4xfNGmv`y3E$`#llwmYHrAlrIqg$BjZ~fOrz5w?CyG$$ z9OUR0ET>&NA*Ins3rlv{oD|uQuGQqoKR?O7;J?eU1hcp4I9ZzIifi37o`$`lQNI3% z^VMcVe#5JD&&hAM)fE!9Hvjw?SeohlE=)slPSW0BEYiU<_u+n$;%393$Hl&P$<*vW zG`7@O|LM-Y;!B2UafPRaaNYhVxQq*53fSaujgtr}V8XfZyy;}*(ag!8s;!5ZrDK;2 zV6RXt=6_NY3pbXaj``KnVse?-o`k8My7fEq-{>)VBDepb#4<;T=02v_T%_3SNo)CI zx2P?kVvw_U?i8tNApV*Pz9a>A>*wvBXS1FSsou~Hh)NcA{M#=Z{i*w=dc9Ph@jRIX3Mmm^|;c8V0)k^=5o^}8(-}C+-o~ia(_0c{%{yuvc_T&|Z+J#sfl*ZMxpQR-mkadocM-4f2 zX(cyk#OxEJ1P$q*FYnQqf3IoWhY5Kd3Wf5;H9n3CLqKw zq`?RScIy9>jriii$!(8y3ZyA4-K;l}^z48F_jIP{$j6N;Fy>)fQZOeOsC=CfT{vhWpK^0@zTCpaEG;da1!wMu@J!)V z<`@ktUh47&-DJ-45&0=DtJSA_yRK!O_KT5C6O&<^#@Oc%-R`BfXj`^0rb%{Q;_WZT z0yxh!-WcZRXH-9k1z8rZxCN$XQM?GSntKpb?+5uHQNgr$c7k$y#`Qm$QYavvLmX9wx6TCcdykNaDzrEA6m&XF*|c8 zdMr)yw%59UKEBeW;Yo?n7Df8gY27ZoL-LL83t{yqzt=+LZZU%krSHG;3#X>ZVL5>0OZU8-O#@*wRu_SX^Zo%A4HEIJbKY3Ulh8sNfXj$_Vvu)&2AtbnPd{ z%q7MW6al!pZZU=kK6n5;!vKIpY8T!Pm98yj7Yvdi2+uUAy5=%z z3xrcBa>HnEWV6PJW`JaN6z#V0T2HMB2RZW+;ZBuayqa1vNDX)t$3x!gB= zjyYf>_^3$xo-(dQgAs7u;I#JNe@vw}%)j6ya;5pJIVc;6zaLQ4?nqR2f3x}Lgh=^} zT~>GG_S%%+h!5MzxCx>RCmy}8{VCqZqP5|o9cOIY_qd%6&->rMBt{Vsv;U9(^YiS9 zocbQX_VO}0q9*Re2STpV}?1HKd|=E(ZD?zrSj! zqWwcs+fqgF(C)Fh_dT`Jv^Q&u{3mad|9E^KBd_q$orxoujx#QPrRxb2e$48(L?EeV zLYNfH)J@p|fNpT_(ITlS?l0{ceV^$_62_SgJCSp3QNM}%7(&+Hr@v~N=4Lfk;_u?@ z>`gs%YnpCkX!f|bkvDNlimPx!ncOckbj14UaXVnK8lb7+m~zhrH3GM38V&N>vb2-H zUZY0%v{c`cs!FP&Fn+zPaw@%jO0-&qe`)W=JP`R5^W;vit-w$n?T?xDi+wY9Yyq38 zzMxwCuv@6zhgN*`lB88NbY#5zhUT7o^1A+fQTbT`p^(mZH zFLl{Gh`F-g6C)UMy|73hex-66`Gp$iVlpBKwaIoW)$>C73sW{#oOsR}WOb~k)KO@t zW$gw2!Qalw?Y!)GD)pY2vKnKkvr~Z@@!;MNa{FPLv99*dhk5E)vnt4f#a-u{rHL6Q zUFS)+F$9ztw7qzw3bFqR{lI6Q*$kPcm6fRfkGMr1Mb!Eh3uCq8`ceA;LssxL@AtH~ zZf#-vty27lQOZf1!2|oB~R%e zHBZU(wYvxVZhA@67rls$)=PVC-@re-GHjzMhdN(v$#njuL_#8s(^B@;Ix&X`L9cH? zzsoshQ)!RH$;&&$L?BOj(Jj*WMl3ak)*-<-!m#V#i7-DzJs3e+JIo{gk`xTB^4$gpoc;&VqAMXgU2nfjl~p1dtF(%E7W=9SqJQxV$7ce_z>2_ zo8b*nP7+$^a=8>yAU|{5E+5kHW0WEC;i!-7V;~>16{>9-XKm3lX&lkVl>SoVzj9QS zq_oj-=l2cF{qNfA4LJ0mO^|0tyF6y`^K3UlV~pJJ{#upfh9PJF@q1MOUNxO&;CR=T zHNSm7&*wjP8>*(=@HD0gP0ysWLa=ArxIQT@g*zigtkR6$MO!VFn1|hslsRK;z>IwF zD{z2O{$XLbr)GSN#Q%v9z1DKHuKy zVN+=e8P{wrY&z2wy+`B!SS~pnlcx5mAiRtFnlbcl>IIcO>RO5_;>!)&hCqzp1ERaPYlwgG^z6s*^rn1j(zllt+Gc5fdng&Q2T(kLjgY$p+~=@NNdTFj45BTuNWjlWVZ1T(szq}iXX;GCS_@sX44Yxguj#?|R#ze`!r{u?fdh1!* zze4GK7M=bpHFcDUv7K1(&aw2*v0S*Hx-1>X`hB>s$&8rsR&*2SydNX{oU#5gSS2pW zam9WncIUAxq8(M}Y>ggxT*T3=YTIP!pZ?_L-ztp>``fl_zmH1I=?qC_E@5wjBh2BBYRf_p-2Dk=11a<1f`8!O&#=Pb=RP# zJKEzuSG)FH5NZYB<)~HibTeX*L9K(wcUd={YxiNl$t7PD&JC=0ek{&nF9lwH?CUxw z^GtNaAK8AFo>pN%AIR`ek^SGkJcmyf`k5+rz50UM`kOU5nvrDHii$xCWnBTBC6zZj zA+89`YdsEzLQSUkft5eZ&u)lH$$X7zl_($ML;l2>F82pgb7Hfwf*5D@8p$~2WDo0q zu1mjCdR8a$Z%_x;%^i-To^U1J_mQO5;4@{6TxmAK(N@{-SV!a${halX=y06;^&Ua_ z-jx_(P8~ef!%K)nsN)441n)@=SY=a}2o<*-?6&^frQJFmo0|AG&jZfL6b{etCQS^a zDD=x2b2fxf#AE(&hc%Z=EzH_MK%0XlfYffG!-6wXy7Kl<$jRZ0G0QR!Bl_@6d?c z=eL{f5+1t#|FrIQK_c*V zma<-d(T$fQ_g_6mjPPT`(l2J?p5mnxTA~JxOj;e)3Nb{=LeduDUOuacjwIq&pa(^7|ybF9g6?6XjT=yPX6JaYs+6!weoA6K|F-Nxb_bZ!O3}8 zVnDhLDEuMLD}$*!6tfQ|NT+Yz6O+(?Uh?xF@^*9B{VSwE%qs-^EI8D$UKCBCa6s zoVX`=4S|4XXc;wMR>sLr9c;qcjUlHF$g)_$7vs{56mg9Mxa8QYNhEO*Li!RmW)&~T z6#QMR7OG|rIjIPnqrdM&xH-^0-sYr1IMd;1YTZs^Dt?22JLu3AW$kfBz$0nOHe_Bw z0j|G;HhEj20g8fm<2m^?n~7pxyZBeqq*y~Y)U5T?Nb^fvsef6`U7o((H0{B%aNg1m z74~tnY`UYUwpMyLxq_%K0jnb@@{!m(J8+32Z0+GA%yRLJEKRw%S}26A@9T=Khef=( z6EF=?_msT$NY(jIJjXYEYCG1r`s5?Ns#CAANAG>Obh}HjefsvS^VRA71M`@3PXO(b z-|jSy(v~RvZw4vBiTo>T<4t$Xscg(9h&Oazn6dkx4JT!i(R-E5`RjmCdQKfILVyrt zJ|W15`cRIVj_&K|qHg>(#W>stN(mPQpXSasct?KwS&7dm;C|7*S^7!jUCP#dTp4q` z+N_f>R{zp{z5jLxR?ypGws{mLLslrjqQ7IrrHHkuF~HW+0y_g)GC|h7gYd&Y!^3

Gl&Hpln6tY!6oXTd4DPNN*hBnXdbMvi>4=tu&JI}^ zmZ&gwp5BrAt|KMJk4%y~)t}?}?NzVK_}_&P6tcK})4yQ>%4A3h$~hx4)K)fviD=<_ za(;Miw9c)BEK_1wuoDu+xAl} zjPW_)#Q)lsmwm8Cc1ir7^FKlpiLQ?JTRXUw_mMqap|`)7uF zp;lo2?Cc9~(Opa&3X*IRz4nOddfwhPYzDLdfb90A$Z%=wDvPOv{CzS z+$J46dI}UEjs@nN%feAf&W48%;$MkG%>xb@@C+F6FRyHEVYl+a=7fQ0pLZM*UlF*F zXC|s}I+j0@x|et9M29~VMV?N-(ddfz{={*%*BB8w6mB)c&}O5C!bp2GM0?k;&Gdd* z-5WZbGR^=KY5<3txVpv*U%y+S1+~p>8Bo=K&*UJ}HU^y_@O~o# z$<*)Twz5Ud$Iw#8 zt_pEja}L#+NZezdU=yi)O$^1j&cj&`qh;Z(m{+<~l~HK!)BPxCh@QAOKrWV zb$$O+#?Hyj1$@|FIdw@xa=E{T>dIIZm;ozgr-q2gFU?jrJ?i|L7s-)dWp`pc>nhV! zT6xT8>1_hqBiE^XJEkP)h@l|_Ggp=vbq8HW9I2=AsLQzhit99t8IEL5oAc4 ziOSx_zv1_MmTR{-Q-tyh@bfkC!Oz`wejRsCI0`^FjDIOKa1%*RdeMnK)qQv&n{CK(T4WT1~N!R4m@6t>`*ovp8rw`wQ2W1w- z#_G&|z@qncKp1aCU#vtg-KUZ%$>qQY%|T0ZGXmFNZIGHNoEe@K=!7y;YOWKMUYA$1 zpR2Hr+g1ugoGqYJXtuBa9thC9;m<*Q+=3_w^ZM;X2EQ8zdBKXcw7>>%f@KggWHIx? zZ~=C;uvlp*@!2oT)}lai8c^qe%ABZ`BSePDbTY^C2RH$B;^lsL^&EmX!a-QM8soEB z#dq01ce{(}l^eCEC!V&?nkIYQzx*SgHnLK8+#+Xj7M|+(uEJN@en%if4Hxw2u#lNQ zt_u^7Ru(Pn9?v(OZ`!|!s8QUG*q0`3t#+ICc-`qp7nO@1ulrIl#nD^K^u30gzk5l96#|!D~WPd(}Fecx~K~=b~p}9 zO{s7@6~$@Zo6kFQ4ihNEBYnxlBS0{q%HaKdu3;ucEVSNSuwzM&c9wC1kvEKU z2$=3LY692_yB}jb5#W3~9n|ZqjXoKl;EV-S08;-yuP1G1`tRdR>SDZ_o(fphl&F8o z)ODV*XMHz&EB@4Gf-O%H!|!w1U$)m1g0O+fc+U$H6ShhfcRQk7`Z?taI=K#Trd?2m zGA~}tv>R|&P4V}VavitrK7{v#nudmX7MG@hvm1d(w;Y!fp~m3kS51${KGnFXTPM}r zMy>kisYA(FUO~L0(1YJrW%E9n&5TWE4GbhbJJ+QBfMX0>k4*bhaybYD0z;aKw|DZa zKEcT)2;$Ocsj1yBI%8Rusl2AXMV!Bb5CGq#t1ODNUi0tZKE#EO3C43BPHfl}B#ve= z2lyjvNg=$u#>V_hI(NgdeZ1ZDaoaePWla=ceK4c8_ zR3&ZZ@7(q2+XQuvMRnMV|9Cw=<4h?8>wMw}XY6*m_Tt*94$KTq%*})AU6Gg$y74LS zKXDLOmLg$UmQY;av>~iS zD81<-sY&3NhWsBlH=)%R(lRj|;ecT$$$gsQ4_OLBJGG^K5mQrB{heiJlV0eC1buw{ zmkEC#Ngmepi(K6mQz3#XtDI8wLQGH)8?@<~TEL0EXO;i3KY+8FQIX8@`%ee_AgX$^ zp8>KM(oQq3eM8o+*oN$M(tP_4O(q@<7Hk%u8Dt;w<6;kR45go*JGSD7w1Vj1F0M3P z2h=sZe0-ST^>`WCUH1N&-%^#`)Jf0z;Y?cKZPBCbqXF?&)z#HWzMGGA zysHGKBe?vHsj+M8>R_|_@fBh)SQVLt9u4#V_?DCZ(}=V*<-v?k4jB&eARgb{CWLP< zBB1<(<*4$MWatO$1)Y^L20Mj0htKKf7Aw^mDzIB-s4-f*&w0n2P-i{tXQ*9_*MFZ~ z3rOU*ysf+k;4_Q1ov!x)E4~&-E}-4e^}EEZAG#ub-0i6Vu29gkJjya|t*N*7o%R=p z7-n&JEDm;Q<_IGt#5!lxNOJQIsHYmIhleqtyWvBLRSM?Ot2Hi~f{k*4?*@vCt6R#e zvBT5T(@R??r=j564@a}lwkPcBHn(eC){R+pt4A`s!3 z&451O2$w0qhQUYKSGU8BvE8pZmVLL^5!g65GwAhoulewM#SWy(Edz$6SfGmwgt#^B zz~Q5ZqDU;w0VLzw>eO;Kv2K$m*Nb@;kHu~ajw`P_eJ6XdKXAdA*6T>O`mCkHp+KO+ z5yB2;fz^%G+5YR(ys+gk{|xxA8z1ccex_QJ@D&zd4nHri!`?iAZY@zRwuY##-W4=D zWOup06~bjgxnOhD=PJqyMual(tWc zfkQNsfX~<5Z~Mi84r_s6+>e5F`SCmfhQx{Gi44xWI+3E2CsmpAHr=q7y?y%@HiMwM zF|3LMC=?F6YHA=Dcw*oD)hp*DAPf5`)U*?6Uw^cc6+QmM)^|h07a+Yu6IJ$?BU;Z5 zUGnPcCZzszsAmFr#NHl1usj}p(_v)}@1%wE3%Jw@C-6fez}9E(SvIlEyel#X8ve=7O&+S1a}>}1WG zn5Vg6Wh4GO>x8Xz3mz9Kpz?VuB8%8?IwB)%Rb~)&m}TE_KjR2zWBlAv#tD9RbmJ*E zY?Rv0&*vgr@&Ku<)yX@o=ieLLaF2*(g`aI8+&%ZjygfFiMaTIM`c&f8hDYKeQ32D_ zMl#10oDmPBzBU2bsugTkb0;jJMFnew{ky85xanGS@*P|JCs*8fvX*;W(essq11X$p zYxy9YgTMt?`2e^Gk;y=SlZI81F`St?7zybWaFD`Cuo;;8p*NZfqy$7QiUv^q#J8{p zjV!7CX71GZbX)p7LpH56rLEt3sgNgBA(fSl!sj}t#}7&`EF_Rs{~AhDs+rRD(il7n zAm9x$1;&;jg`5W(#PMgo0CeEwPVnmIN#Oaxt9%SXPMkEat(r{`b-4liMrIWv-eS5J zXCeLz&bqlPT)IyDwO|ucBY`N&1lHBe$);N-xs;!(;sZyO=qaYRrl$M*=vehE;)zC; zX-I#H3O4+lpk%mCZA`>xl_X7`GdwZTcM1P|b ztQlk#ITX0+jqGa3a3w2B=l9TY)}5v@&PV(-MGk}<4%WJq zuKt^m~*}iOuy6@c29kEMc|ID6ejz3pVqE=4#u}%j4wba1@#01 zaRn)B4I#PVPf8;^#52DmY)N~djk)5$y`o?t`KtJn@a@hLsbB_jaojt((=PVT=lWB} z)*_6eiC><{Zb-+nhNWNN9wEJj&xI1YTWa1cGybO>XN8czhS<(Ap)L_WnhgkAbiJ%u zJP1nl{-tZV9OKfU;@ zBR^RE#?y&FHBBxdD`_r-oJ=Fz?XMNZV_iG+kFwaE5b{&ctm1z^$S!yqnyFxpF;qSS zJRM<=f2=nT-t}i|+<9$mJlk|RmUceYa+Rsn?o@|9b2^nFZ2erkeyeW1xDLYEYL@>3 z-^nogCBcFo+y{=P&^|bTCjt&wm<6t&IrPRZK=IzC@-JM(bWg4K4wfyQUQ|}g_@~P% zW;{yGYL?Dr)Dx|<9Jc)>tf3DDt#iC4$wOSrwZ%~4`vWx_D%8NQl~N~zuXHbpY$uu; zcKgJ3yLTGl|4*RGtSLS%fy#OMYr$GdXO2vlgC9v7MKrw_Hee?!Z71Y|Iag|ZV!6d4 zsRlmi`BOj6O7RhSieneTw@r|E;z-&n9I4kYM9}`{jkytf)b2Ty_t4VH#0K^jF7~W2 zak9i)8n`$@qS+(ZH;axwY@pGXuY*n4;@2C@6V|EBsF#X1C#o(xfTOkqv6gZQ(O=U3 z`|qav>1Gw=^9?a4_nODrc??Fob>vcMRM1t8lXf!J^(YZuo^PG?_88*oJs`@wF^XH5 zkrFRN@l~Gwae+vYxO5Y$j1%VLSG5d86+xb(A_3)}k8Qj?bHM6Zp;8s!*L19z_OcV< z>4EsM5M9XkeAxfO_uqmdKnxhWA9Q_-iMOQ229YU9X#}YU}kK$7y;0mGsrXy@+obvfh<3N}2 zQuko&|K*BQPol+}lAGvSdASkEzxg*W!HtP?-w=fckKX#OAO^5rVUuMi?{$Cp^anq` z5#0|z0fS^26=o`Jkwjyaw$Rgsd_*uSO4S$y!SXv z?l`fUk1nk%m`Y>^O0>dCT=@u+T(I0F2lEGXNF_qd*5NXxkdRiqo?c)jx0lfM@~Scc z@hx6$@du@rA4{{<#a^`~CFsY|;6%;;wa*6L8mMO8204KYD1dTIHvf=2tb7820M>Y z_wLyO_+f9YuC0kyX>5sA#Zj(8@NC0Ni8M(P#9uJ~3TkORqU)$B(H&u?m3* z2<{+53?}hlTe9k{wxf%}ynIW7-F{Cvu7AU!HGCxbwOJ3Ho3<wnG{Ao8iHG;ZrWJPhG;)XETd=?m1d zwBs$erlkKqe_r`7C1on80Yl*$aY!q)=C9hAtYq(GnWf7|xw@H6nQ*sF@IwADZ~F)E zJ7}`2)Vy@PH2=5lYCK2Q#srZ876IqiwYE_35%Kt%I(<@5*sHM_~aPB_HBq9hiTDTj% zB}iWPCBK8n5eB$xDr&-V>m03x0OYC}pHmV@XuLdH27FfMSt6#+&-p84QxDh#$oqF2 z!ZU672_H2(y=PTKY-jMA-Tj0y%n#Gj2cC3P4~RXQ+oat{nB5gVJT8c&d(rDIRWZdE zy2BIy%Yo~)^z%2RzgWVV9TB0k!}-XA49NnI(mj0zP(ci;`{T>Ei2TT>eQ807*^Za*jY=gEALj4ePh>I3&UAUxaqs1MB8;pX{ucYe7eUhv@I^%_*IB^MfK=@JJLb&mBV^b z)sH_#`cSX=uh0Zb%Zm@EyvWuF>*4rvdYxCJxh&32_>MNcMeeNO=c9nW>|r3BqiwTq zSL?pkh)mp6=~}rUuE#Mtf9!qhS&IcfK3v0L;VC9?L>>MhD=l8Xx*0&unqX^11|sITeSBAOOrvDYikiD&NdL`S4IO!B;46R7gu9oN3u0ptp@#W zz$wJAh7nq?Y;FcMHcE7wOD6ZcXG$$zfBCri9kI@XpLa2c$ngE83h=AdcoXv|xdt*U z#nl{Z<`6}VRX6YO*#DCL;1tuf+JIv*IZDoki?Mfb0Azm1+rpCwTtys2!KD)R>ureP zysEvgDrtD@nLc!BD(5zWc+a=-&2pdpj8ivPe~ELQt^lzy^2X<+w6wHR&U;X6a|@~P zJq>Zo>(jgY34m_t+O%KwtB9d+RvGTxkVY^@;J$lANM+fTXC+21j~6QNn?_T^HfPQ$ z6p`417=Lv%;*%@+A;%g;w$tpz-TeSk(7-y+h>KA(y?0*0NdP4?OhX{)!Ve&y*IhXd zPUk9cbAlUj-L}@&x)sduHAu*astG(tD)N#&&6M!UjSls zvrep>D&xesxD$@?upe3lSFaHiAFyS^2}e5k_&o*;tOh8XOUbUA8Ax#usqiRx9+sen zr=uL+ek(+7DkEt`lB}ABJ;Z`9Kie_w5a@d9+?0{NiFM-82%_1ST)^g(h93(Xkhuoj ztTH)dR8^xzgoTgRIy*bfpg=%d!=HE_9xr_8X*is&%cL-U&Q&$yGPV7@@!uz}C_0gU zGn!h4X$q|F8#f1BQpzdTYl;0Co8etChOA6zmcm3Rilf04Q-Om#Q(#)5m%2+XPgM3f zSv^GnqsKvZC=v@vYq=c0O8w`6B^DR??!H#@Z^ZgpLqmh?v%f&84CH&=hk&*#3iWtp z;qwIq*@?MsxSL#FoX=cB%GIUs^A9Osjhw^~qm}fRkZyIpa|Nj|%h#+8*LG~9>?K3iR zM5V8~DWMJO5A$c(Y%)1ue4S6~{tc1*D%28rvF?H}nt##bFpcuh%Zyb>E7a3_)?a;| z++R4b;DTZFTJc#$L%V9iAumyDl*9%e95g|IhH8PEJAAJhYN3b-IPtu}m(_1SRlC0o zp_<3Xxf1*NGw>#T)J}T4T{wm0CCoxLf4^eAML_ML(Vr&it1p_umWUCa8Pj$f`4fR4 zN>-GW2F6T>Bi!1dy?8ac0oM>#rTvVNG_^Eu%+fW+y7!bp(1V2;lN^(sfEHbe^Rb2* zqDaFzKsZBB!^Wt-h2YCyQfiowc?KW0L*q2Mpul17$2G8XV8ONC--LQ$dZ<-`^0VJO zbTFE(XaWq7bKI?pKzOg~&zN4Um0Vb9sRZfnUq`%!Yz6bvxz-SdlLX)61TRE-!m`Kn zVg6vsfM!y)VSZ>;K$jB(_R-sfBqY!|{Nk#7c*9)_R2N7?R2XLZCH+snHD_1jJ)u?Py$&^sogh6E57Mk+3fC%HOpEp->xSTVl{J?`#W*Y& zQn0i~e2#EisGAoKL|wrjuX6U_5cIQ5WHn9y224y6f5wlM(9N{*^}TErnsOd~LMvp) zS?ror{e>A}#k6x3GIRhbdQ-*|2a#autI~_V9hRwJ(G1l9%2tW;|)5S6 z%yN@KrMAdsp%TnIl>Ee9mT%*%*`C*t!RvdUxy~|l-x>+tK6jgQfgeXvKBLTr3A_bh z5*R~6UHJMLRmm=fvBi>84avdg#9>p@aj(5ZD{s$6_Djr!a?Er>#*+s0Tl6mM{zo4m zNPN~Tj`e=tf&VYwQK6^}UfF23&GBnsx1)#V01Sk#>Oh)Ee@0x^+uN02w1=siLlO7z zsKBq65%lrfq^3^O`=WEr2UlS7Rd0{fvEG;2cao6ZkPrajk->>m(j z8ChBT_98jyu9kilpn4M4Ykj7Ucb6}{&CQqYg7BiQj+QJ8izzTYZbB zK#YyzQpe!DF%gRP41B zHc8#cfl5nMayqa~nbBH5sC?oWJQ3YCi`}qEX-6@wf_yAMn{KY zTh;T~DoKJVO&?LGiI{ntxWQMk?W#>shos#j$EQW6KPSb)BcceCz$F!pdgSDhx@^)N z&sF;N)OA)kN;$qQk+1i5^AtW&hTc@2c3%{_1NWUPxpUqWE-s-4S6;hr-XiY6x7lc_ z-&ra2aW148xpjAM1~c98w4Dfsaj>x479D)$Fp$38Z?+IH_0HXvGFe}QGNRXJvU+DR zgu&-X?EL&3U0n1}0B4|74=$fIb1Q>cRZT~KBhn;*;N1bXjI2S9!I(#T44;BHyP01y zPE=mCHQ}qiDvYqPv9BsDR>cAb4CfI)?8cQboK7()4r@6Kw@rzrQ)*)ehc{}mQS+H6 z9^&j$&p9nRu>%jPJ>zw!?qwh*T0`W;8JyVdN>s@{)u zU+nf5jnSKFBhVQt8Zu(m0>R5>)v@<2c#bc>>q1o%IQZBXJF*BW?V&`Xd=mwgjhdT zPHNo_OSEsHd!{6VJR&w=9U}|{FPdxZ@XrRQfU!exy__$l&0S} zyA7Ir&Yuig?8&wA5(Bfj2IfzK`;hScnlk5c5xq6Bv1K$UlYGaw4<_uRb>b_AU8cH` z#vkT|6UHhVx*U@wYA>P)Zbc@f>PNTxi|`Ibsh{A7=%dkiu9{) zH6AY|&0PGTYIHEMttb-ld*$oBEH*Rd39#dJ*szNQRNnBk@~(TNQVB~XlVEr5ai)O^k6KUZ%e3iL$EsX6Z_(w$1LlEf z4?OkJdY0}7R{J%TwzTj^)ch!22L-gwrfFb$ZwCcG&y{#!*!o_9I8Ku*9_8|Y%iGDa zuWx`Ls5C`i7qC|c@o8L#hNbrS_(EX^WC|5APq$sck%c)O( z>NS7-@A%AaqOuClzd1ZpNBY5!nL?ynMb4`Gi)SiP-TK&H*-Ydarlr~UYAnl0Qo4tK zvfaIQ*MaV^m{qYuIO;TAhx4h5ib^)joFiZ^r!@xwMla`{rJZP|noz&79r-Har}Y*P zFnmd%0(xOf&%iKaPTjubAY5PE)YJsJx_$k4f%J9Hw0YtC_8}$}C!+Gi<5SN#vY?h}5%@WbnHH1A$?B181;Jd|7$?pslT3UVs~BGGBoU-u%v(!0}1 z`gl)t^EA~j17-R-`-d*W#GFl6x?C#6kyA}iO>s9S0>*UxyAM^nBQi!Uixkqw?a&^5 zhQi!rtkPz=|AldOKLCj!UB{=J!QX5rxW%H(_z0gZ3HN~pZ8>XjWo~~R)l}<-p01KO zUsa7Ro|+RNG~Ud6gX_;rjJOeO^03>H&aIoPidE2d+*zc5cS2K(zHfP#_D#)Xu#I5d z{e*7A91bPI+rJ$D#k%Q)QN`@8AV&$Z`Kb{2gsmS}BQfgMx09U(z!A(>#z~vWVU8vJ znflhP)Q#2E{}w!a!k3T3c6N5Y^E4ir`kbHazlxgwW$ot1g`p#sC=4=DB%_45IQ=aK zhG-CU1p&w42fTmRyUS`{>Tcl$$?QP=jcC@1e|0lBg9qX8YNAqQqS6+|!n}l2yoA;* zNMVGUIW_hpM1%=72$4!L{L&c;cHy8~U=^No7>!}gF9%%S;;(xpoQAGruWlnaxRmYm z#QxAVj}MyQv|viv%w0S{7$f}}x1Bvqp1%Yvvg=+0sx=)@R?EEK`jM(L75^ zZ`5csWX&>T$u{vrdRc}szpRDnH^1MX@Vn>Sd(XM&o^$W#e(pUt{lYnCC5RRT0HB0+ zar6}X`2VWhFJjwjd$k7u*&Ap_`%6UL^5hMdOQG7b!WHW%9PDO;XJpOa32=qB`y)$E zXst8-nHy#D4A-7MIj^yG_rJY1a0`Skr#OsbkKTS>Ly&G^nE@o)tFT*@ywm~7Kbd10 zvVdE?^#><*!zrgX%hLDd1i$w?X?mJMu}s~euGny6ZK6tm-v1%Kw#iV{>O9f|?)W^1 zdWszy9K3axKoE5KLmlD!BlsUkBL7c!I2#}Sbp!-Qx$QK%d}B3q-Dbzo(o49qLS+0V zfPoHh;u7ZID<9*W)2YhLMLwS<;4%2Ko}DoR=Wmioq8kbjh{(*^nmIGunM;5E{Lenz zX)mwB0KXRO>WzGCEa~zPqL;%7A`&&u(`-|QLsH5Ns^I8*2Vk(BK5v=8p2DM3sSc%N zYisLZJicY7HFZ3oGA(nz>1Q4zbW1oRbyojkcu2@%(d_K39VrI5y1I(?$VtCrM*aiY z5KJCe<*m+f&5s>x|JC$#0tzq~jMZFI|2Od*&beziTu@|WeMofl8ZA@sgvpF`N25Ow z@%X3kOtJ2Fjg-R=@TIZEq~wzZz%Z?Y&iZoBxU2MZ%Qpn(l5} zSrI0R&EWdvbRCA8=f#Uj4GmUeP!C<*+QxbvUF3*)^Ow^T_IY{mK;kig5*#NpZgpxhb(Hpw3%OO)c%)w@8U**pQ^0 zZZC<=u4ga`bczrK1qCT$bge6!<#amzus+xnOm1_6UUp$Hn3_vkpM3mrjWhIfj=+UBMa7K^RPQ&!uz&*46N&t8z)D)FeVV{smZ z!KmA4=fd{J2b!g+8+kP^M1P)cNut-*rhHn)F$VMca7m+lDqD^YXeRnT#`_S*j?IkJ z`sKmp39k?2>e%7h2g4D0^D6fDjeEjRQi~7l(}O9$@?CICR{?iyb$FjXl^Q^Lah5zD z&!=+ju&GO8C4Q{w_Hl<&Xis@3Jny-NCitNSbfr%}u~YQ}NS(WA*9jR#C8g5F#)qd- zO(oJeEY==_G01q|Jx^CC{+Z)_^{Q@MT%3<~Q;uXZl=xGG>?t2L5jQRS!nd}#qy&fc z^mlfag`*RVdtQu(p>y$P!LLR}5$lVXFJHgbCmPn&)u|jg_c$IZ`LOb8bhMhLrly;0 zbI{8trKJh#XCwaLJpN5sOL#UUPvgEO0zJtDP+j~!fK8$XFR45m(v&}AfCo!4r_RxA zmEKNrTq{lU5y14yySA<_xsHwwAN{6mNj>-Wwl?V%Mc27pHuS?=kks;`Mv(N3_D10X zM!mhg{Q{-{JBZ#doN}xM6^#C}*5;X+nPNj17w01hU=H-(1(8uvv3m3(;BxHd8UkTd$%U5L@JL=ZZ$!1CAv5q9Pliz#LLriPgW*gMrrkMxz6>4NQ-_y1ZWA& z8Xs6Jv~F~Q@EYon7JkB5%wkGa)nk2=?8@}ac|Lz{=;-rZ=#*ryrH0~kbi_#=8K@LW z5txHEkY_8|Y;WfW2C?9TlcFE6`gu|%J|EkE3lL|n%t@F@Oz%fU>xn$siYN=pSz%mL zO^!0__NFq0LU}m{ysFj7WU@H4wz2X4n#K2Wsc9no(tFEuFPj%O4H8wUrwM>>yviCxy^!D}! z&T*&)1_r1@(BPXVV7mi#rf;Cpf(homNmgvsGvl85<>kv}tzV|657}s|7`;`Lk(9XP z?aj3#t$tOCSsF_yE7PM_#g((!KS$jJj&iy*z^9ZM@GEt|H9&MXAlTP zTCLyfjEoG3hp+FC&TE~g7AmIQicAhRM$C5HBD}smyS9c{TwJ{1;gKL-fv3lHL~6u7 zJ#!4k+}u1tJgu?in6WUcWCz`6LknRv3Wd4VE|Et3_T|IzBj-zYR)s?0Vpdj`={xL_ zrLs?%5(3Q74?nnu9I)a|tQ>aQ&G|R~%C?q>yDfUS5)=#)w-8M4Yx10