From defca3a2c12b61e1f05afec72fede455bf309fe3 Mon Sep 17 00:00:00 2001 From: Astoria Date: Mon, 8 Apr 2024 11:08:13 -0500 Subject: [PATCH] Some progress --- .gitmodules | 3 + J65el02 | 1 + build.gradle | 3 + settings.gradle | 4 +- .../redcontrol/blockentities/CpuEntity.java | 127 +++++++++++++++++- .../redcontrol/driver/MonitorBlockDriver.java | 25 ++++ .../redcontrol/driver/RCMonitor.java | 20 +++ .../redcontrol/driver/RCMonitorDriver.java | 36 +++++ .../redcontrol/gui/C64ProMonoMonitor.ttf | Bin 0 -> 50288 bytes .../assets/redcontrol/gui/display.png | Bin 0 -> 16613 bytes .../assets/redcontrol/image/rpcboot.bin | Bin 0 -> 256 bytes .../assets/redcontrol/image/slideshow.img | Bin 0 -> 4864 bytes 12 files changed, 217 insertions(+), 2 deletions(-) create mode 100644 .gitmodules create mode 160000 J65el02 create mode 100644 src/main/java/net/brokenmoon/redcontrol/driver/MonitorBlockDriver.java create mode 100644 src/main/java/net/brokenmoon/redcontrol/driver/RCMonitor.java create mode 100644 src/main/java/net/brokenmoon/redcontrol/driver/RCMonitorDriver.java create mode 100644 src/main/resources/assets/redcontrol/gui/C64ProMonoMonitor.ttf create mode 100644 src/main/resources/assets/redcontrol/gui/display.png create mode 100644 src/main/resources/assets/redcontrol/image/rpcboot.bin create mode 100644 src/main/resources/assets/redcontrol/image/slideshow.img diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..bff4449 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "J65el02"] + path = J65el02 + url = git@github.com:simon816/J65el02.git diff --git a/J65el02 b/J65el02 new file mode 160000 index 0000000..c6de658 --- /dev/null +++ b/J65el02 @@ -0,0 +1 @@ +Subproject commit c6de658396d537fd0c1fc0046d5222c2dc44de3d diff --git a/build.gradle b/build.gradle index fb9fffa..060ef0c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,7 @@ plugins { id 'fabric-loom' version '1.6-SNAPSHOT' id 'maven-publish' + id 'com.github.johnrengelman.shadow' version '8.1.1' } version = project.mod_version @@ -38,6 +39,8 @@ dependencies { // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + + shadow(implementation(project(":J65el02"))) } diff --git a/settings.gradle b/settings.gradle index 75c4d72..0f7a9fc 100644 --- a/settings.gradle +++ b/settings.gradle @@ -7,4 +7,6 @@ pluginManagement { mavenCentral() gradlePluginPortal() } -} \ No newline at end of file +} + +include ':J65el02' \ No newline at end of file diff --git a/src/main/java/net/brokenmoon/redcontrol/blockentities/CpuEntity.java b/src/main/java/net/brokenmoon/redcontrol/blockentities/CpuEntity.java index e3f8d0f..33ee5ec 100644 --- a/src/main/java/net/brokenmoon/redcontrol/blockentities/CpuEntity.java +++ b/src/main/java/net/brokenmoon/redcontrol/blockentities/CpuEntity.java @@ -1,12 +1,137 @@ package net.brokenmoon.redcontrol.blockentities; +import com.simon816.j65el02.Bus; +import com.simon816.j65el02.Cpu; +import com.simon816.j65el02.device.*; import net.brokenmoon.redcontrol.RedControl; import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntity; import net.minecraft.util.math.BlockPos; -public class CpuEntity extends BlockEntity { +import java.io.IOException; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Timer; +import java.util.TimerTask; +import java.util.concurrent.Semaphore; + +public class CpuEntity extends BlockEntity implements Runnable{ + + static long interruptTimer = 50L; + //Adjust as needed to match original clock speed + + TimerTask cpuTask = new TimerTask(){ + public void run(){ + for(int i = 0; i < 50; i++) + step(); + } + }; + + static Timer timer = new Timer(); + + private boolean running = false; + private Semaphore waiInterrupt = new Semaphore(2); + private final Bus bus; + private final Cpu cpu; + private final RedBus redBus; + private Path bootloader; + + { + bootloader = Paths.get("/home/astoria/code/java/mods/RedControl/src/main/resources/assets/redcontrol/image/rpcboot.bin"); + } + + private int defaultMonitorId = 1; + private int defaultDriveId = 2; public CpuEntity(BlockPos pos, BlockState state) { super(RedControl.CPU_BLOCK_ENTITY, pos, state); + RedControl.LOGGER.info("Making CpuEntity"); + this.cpu = new Cpu(); + this.redBus = new RedBus(); + this.bus = new Bus(this.redBus); + this.cpu.setBus(this.bus); + + Memory ram = new Memory(0x0000, 0x2000); + try { + ram.loadFromFile(bootloader, 0x400, 0x100); + } catch (IOException e) { + throw new RuntimeException(e); + } + this.bus.addDevice(ram); + reset(); + } + + public Bus getBus() { + return this.bus; + } + + public void setPeripheral(int id, RedBus.Peripheral peripheral) { + this.redBus.setPeripheral(id, peripheral); + } + + public int getDefaultDriveId() { + return this.defaultDriveId; + } + + public void setDefaultDriveId(int id) { + this.defaultDriveId = id; } + + public int getDefaultMonitorId() { + return this.defaultMonitorId; + } + + public void setDefaultMonitorId(int id) { + this.defaultMonitorId = id; + } + + public void signal() { + if (this.waiInterrupt.availablePermits() < 2) { + this.waiInterrupt.release(); + } + } + + public boolean isRunning() { + return this.running; + } + + public void run() { + this.running = true; + do { + step(); + } while (this.running); + } + + public void stop() { + this.running = false; + while (this.waiInterrupt.availablePermits() <= 0) { + this.waiInterrupt.release(); + } + this.waiInterrupt.drainPermits(); + this.waiInterrupt.release(2); + } + + public void reset() { + stop(); + this.cpu.reset(); + this.bus.write(0, this.defaultDriveId); + this.bus.write(1, this.defaultMonitorId); + } + + public void step() { + this.waiInterrupt.acquireUninterruptibly(); + this.cpu.step(); + this.bus.update(); + if (this.cpu.isStopped()) { + this.stop(); + return; + } + if (this.cpu.isWaitingForInterrupt()) { + this.waiInterrupt.acquireUninterruptibly(); + this.cpu.assertIrq(); + } + if (this.waiInterrupt.availablePermits() < 2) { + this.waiInterrupt.release(); + } + } + } diff --git a/src/main/java/net/brokenmoon/redcontrol/driver/MonitorBlockDriver.java b/src/main/java/net/brokenmoon/redcontrol/driver/MonitorBlockDriver.java new file mode 100644 index 0000000..5f61b1c --- /dev/null +++ b/src/main/java/net/brokenmoon/redcontrol/driver/MonitorBlockDriver.java @@ -0,0 +1,25 @@ +package net.brokenmoon.redcontrol.driver; + +import com.simon816.j65el02.device.RPMonitor; + +public class MonitorBlockDriver implements RCMonitorDriver{ + @Override + public void setMonitor(RPMonitor monitor) { + + } + + @Override + public void setMonitor(RCMonitor monitor) { + + } + + @Override + public void updateCursor(int cursorX, int cursorY, int cursorMode) { + + } + + @Override + public void update(byte[][] windowData) { + + } +} diff --git a/src/main/java/net/brokenmoon/redcontrol/driver/RCMonitor.java b/src/main/java/net/brokenmoon/redcontrol/driver/RCMonitor.java new file mode 100644 index 0000000..e2292f4 --- /dev/null +++ b/src/main/java/net/brokenmoon/redcontrol/driver/RCMonitor.java @@ -0,0 +1,20 @@ +package net.brokenmoon.redcontrol.driver; + +import com.simon816.j65el02.device.RedBus; + +public class RCMonitor implements RedBus.Peripheral { + @Override + public void write(int address, int data) { + + } + + @Override + public int read(int address) { + return 0; + } + + @Override + public void update() { + + } +} diff --git a/src/main/java/net/brokenmoon/redcontrol/driver/RCMonitorDriver.java b/src/main/java/net/brokenmoon/redcontrol/driver/RCMonitorDriver.java new file mode 100644 index 0000000..5e15bb6 --- /dev/null +++ b/src/main/java/net/brokenmoon/redcontrol/driver/RCMonitorDriver.java @@ -0,0 +1,36 @@ +package net.brokenmoon.redcontrol.driver; + +import com.simon816.j65el02.device.MonitorDriver; +import com.simon816.j65el02.device.RPMonitor; + +public interface RCMonitorDriver extends MonitorDriver { + /** + * Called when the {@link RPMonitor} is constructed in order to associate the monitor with the + * driver. + * + * @param monitor The monitor + */ + public void setMonitor(RCMonitor monitor); + + /** + * Called when the cursor data is changed. + * + * @param cursorX + * @param cursorY + * @param cursorMode + */ + public void updateCursor(int cursorX, int cursorY, int cursorMode); + + /** + * Called when the display data has changed. The array is a 2D array of size + * [{@link RPMonitor#HEIGHT}][{@link RPMonitor#WIDTH}]. + * + * The display data is character data (not pixels). The lower 7 bits is the character while the + * MSB is a flag whether the color should be inverted (i.e. foreground and background color + * should be switched). Mapping for the 7 bit value to character is defined by a charset, which + * must be agreed upon by the display driver and programs written for the device. + * + * @param windowData The character data + */ + public void update(byte[][] windowData); +} diff --git a/src/main/resources/assets/redcontrol/gui/C64ProMonoMonitor.ttf b/src/main/resources/assets/redcontrol/gui/C64ProMonoMonitor.ttf new file mode 100644 index 0000000000000000000000000000000000000000..de231bc2be5ce81dcaca456f56bcaab01166df1e GIT binary patch literal 50288 zcmeHw34C2ux$pW`=1xh|QablEZ935*^U#*kB+ZeT$|N8HX_B^qG>J*tQdB?+f`|x+ zh=5E2A|fCn&R7uv5djeqk&6|%TvRU3P-#it|G&PqviHeEh5LRy@5|ZE*?aB1_BT&! z?X^#h7-PnovrU>=n@k>k*e8mP_<%7F9F4Qn-?OGZX{%%u+C^y3J>sZkCC5E^`^Cn{ zacG~?xT&GzFQ*-`)0oUEWAZNA(9qS<+iL*vfd#mpy`gp6`mb-e`lH57TWQSsuWW2? zXv&wvI&tke{8enkiQLf{6@WJp?YSE_b)SCU<9FbieAAfpGh5pm8)mLqz0{aV51@Ve zriRly>|y47Tn9drXlvNi{6^u|dW`u3@Qv;6Xz%K-{q(sTjk)U@VNNG5EiOC?0bX*a9bI%*oO!g=%nK_x(W{aF{%=SF9>l9pc zpQDyml$q7W?CMn-vT#QN0M5qM44}g&VI-g=M?8);1NbCI&!mAAvL*N?=BQu%h`r+N z)Z^i%Sa-~Vs2sX7}@bAw$Q-e>*=P6>#A)77EIor4x#YPv}uw;ua-W;KLa z0AbEBXPGaUd(4l_Z_Mw^Kht(3#wTVZ3T9tgFlEl7!nDHag>wrR7nT*SEIg#JtMKx| z>k1z%e7x{ig)bHUY2Nzz6XqW}ziIyOi*kPR_|CI-_Wt&)-}b(6)(gGAJL`A7f9l=U zi;Tn1WRo!0o4d{T&96L;yu@VSxCA&B7Mj8_g>wq`D=aNs0UVnO&n~75?>T$E&DPH2 zjd^|@kD|}7=l?p_m}g&qb``#N;O|yre)Wl8RXlTD)F<^QX9Xm;&a~m|7W3iQwJqj! zw9a;a=a>u3t>!j!ySc;lxZQm}f$yjBhpg#7FPIn2OZLUI8`Dq8n3?fh=2cn8Wlzd} z%3afd$MBW`t+-Tz5!zIl<@C5==%n9BP{DCbF;a{d=b+566Et`Na!n&(VgZl z^Ho^H*I;>HH}{%vm~WbInQxo#nD3hJnfqWVJIoKv{pN?}0a)gP<{|U2`LTJ#{KPzJ zerg^wkDDjV&&-qN=jJK%3&{AF<{8-5v*y>3^?#V>Vaq$sZ_Nv^winHRnwQLfnU~G) z%^%Dk%`4`=&8y~5=FjFY=C9^&=I`bo<~8%W*=7D|-Y~n(9`mN@F}=uwB39BQT{0w7 zvLst_WR#4SF)~)hNv`C{c*&OuGEw%CNwTj@mMJn-rpa`fAv0x`BxJS}$Q+p~g)&d( z%K}*_i)24pEK6jmER!NBmJ%tIGAWk|sgx?ImgTZSR?7aeN)C|KQX{oeCu^i$lJXuo zP!5uV2w5xdl_TXSIa-d9W95BvoE$GF$ou6)`GA}xC(9|)AnT-2nxt9Q z%LdsfEpn=yCatnb+N51NFUD7R^Ws7W;(`B2SAs>CYhkmaV4Gu5 zy^b@vu-5S=-%KzQ%|5W+eGw0)n5kwOqR|X9)67D2n2lI8$ION8%!BnTFbmBhv!7XP zmYAhxnJF^Gro@z*GE;6UOr@zZ)n>U_VOE;`%_?&MVp$C;y*jhTw3sCPAsfDs319f2 zTqoDd4RWJ=!F&X9?o7GKeAJvRH_I*NL-IwFCbz<)&w&+Z$d_QfopKxQIs(pb z@_#$}bMlw3%H0FyFJF5r`I~D~m#>=5a*upn?v-!IH|1OMZTXITSH36r$@gW4 z{6OxPAIbyrBY99Bl85ET@`(II9+jWUWAeB>AwQER<>&I0{6e0VU&=G`D|uFaEzik+ z$n)|W*(tx37vy*HqWq`4B>yEZ%kSk6@<(|^{##y^KgplvFY;IUoBUn=f$!Jkb=f8V zls9Cz?2$L6M|x55i?!xTn`YB(hRw8D=5sdN=Gakov>hY=uwxP1HzVqAGw0iJHW%Dn zVDk|1FR z*qL^gP1xDCz|OIAZK0iK=i3E#pK(H)BN!+$NzWgzwg+7-(~-Y{@+>tc<1_m7vsOVRDS-> z;>Z7h{@+di|BT7Bn3;65IjQ3so(cosuxH2U6Ce5T>^rrDw_8cpqmq0N>c4~DmL)f# zj$Cgxn2o3eIj5?hE#Uw)=39S06zkH0W45>XbEn0w^*>C7t>eJdJ~^mjJ7T9ejtpbU z*y(axJqi-7h!05+DzdB~(nB2Ckx%nmeYw{1zKQ4cL{u%k_=3ktDW&SPscjbRO z|Ka?n^Iyz=HGkKH^abIdSL2SNEB^ z&%ygN?Q_LG5AXBmNs}h6nbb7t%1IASdT!FLeHZOpwQudd9s6Fh@BRD!VRGK&s>w%A z-Z=S^$+t~@VDgJoCQVr|N!&{ntI>V=ckRDHgnpd zX=T&aPwSX=@wB_AJvr@_X}hM+oW5#$)ATc^Uo-ui)1ROI+KkCFmd;o^qix0+GcK8N z?~JEs?3`(4&YOAM%n#4JapuD_pPspMmYr2Ft7O)ySqINLZdTK*&RJ*Ax@gu_iBXA3 ziIPNZ;)Fy~qBC)J;^M?LiCYr)B<@c3{!li|$7G7KU z?ZW5gO`KOWZ{@s>dDqT+bl#r%3+5j?f6M&K=I@yQ!UDTs!Gd)Q&RB5Mf=3tpec|MV z$%SVuynErJ3twF{Y0>IMXDqsL(Nl|F-LGK3rTZPd-%0zOv)>*2J-y$q#p#Pn7N4;A z+{L#nesuAxOQtVbxuj{yIZJL^^4OARm+V?PZ|UJnTbEwGbjQ*+md#yu;I=bkjqK!qJMOPNxSoC1g6GhJ!yt-d6cw<=?9&RaI1-San6!9aYa%o9YGChgP3a zeMj|6%gyqFy8KH`cv|K@P%C7N@7uIGZN3 z$Io_uIP(UQP&y`h!V#u=(3cZwn42)@IOvAic(*Zu>0fB`i3z7y`FO1t(?@z9AS1Zb zhK5UQ5$yQWmpJ@zUeASZ;7C_KL3AxCqLgKDwY! z-rr9}+0drq)4S3gOFRw`jpcN>dq$`B018M2*{4W2dC93iQc2rM2d$84Utc05G;VwX z^``p+NLR%;+nI)$tUlTIBar+~QTtOX39yKde?b93dP>rW%QVI7BsK(xyr$YCB$XqrhOIPrMvXlK=jidIg!tpsu_ugPsC~!p=v0|fV!V_0 zq*|mAD&9@h$2=~s3-#&fejagCn1ra20#7Y4C!?_PMw{{Ee+S6mzih^@x70IbN*Yzx z+*8A}sDP7ul~LfHZTh+Z8*mKZJA?_spxg+PmP5W(Z@96~{)UIXI=X3PB>bW zlVGd#B$c1q6|wZdpZGkI=XVoBpDzL-H|H zi2`$S-u^vd|4cJb^6&;~Z)_8vJB}~bm6q6!G z3bjZcE4?mb#_t~@_5}$9izLhdOXDzU(mF@4gl}q(!@d${)3yCW+M@x0G&2a6HTv(udn0u|(&{7@2_GjuHGS8hf843&FQs8Wfl zj0rW+7wMhemJ%=C!gkaSnZpS?co02XajBK6rSeROOewmAnFL#8R>^dKgzyICJ*2+{ z+}zXi-*A7-DY1L{X<03l{Azu~Bg!@dp2t77Lr$X2A}3YkV80^{6Eaa-4^*e_)$Y_s z7z=n5Fw&oR%xFdpP%_-~_+O)&QVwHf#?=(Qhp0qIsbb_eD?Ft}D~{+&ppsV!w=aIh zbVVB^2jo{{j^=WXFY@ZlWG=1RVOHZiWem2)=XmJV>b%ff$TOl!j{?QqM>VdVRcWid zaR$Wq0teP;r(wMbA^|>Wq`Pmf!pCFilQTIqU?%(EY?0wQF@*SmI4~BgZu+cN^&dr$ zkjEq64U{v|BL;ZC#n>>7F@$%50>5c>N67|1qJPmVGzWqQ=M$NXNBwe;`T|EXY8{k> z*6N|oa=JN$GEv6~Ev;~4!Wk{)qtjgjd*Rn0rdD4X&gV9ieApjbUD!~;s5cxl-@;+%!b88G_QV#G=r z^PWA>8#1`Jd-UDw{7ZSO4byV)iEPB_sE^B(OcyMJ@lE~4NgrbkwJ*e{<6}OsS3Hp4 zFjwkq6#DAJ?tPb1W8JD$?@qB+wR6>$T7Hln><#|XAC}JFX>O&*XslN2Cw%bY$4(em zjW+M29(Tm`F@z8H&wWu2(O6G?I-3~69;x{#Z>fCgQH;I3!kIxH;SGtd&EO0Zd#A?I9tzH)o|O!;iPDChD@!6lP+6KN zNLdiQ?n5x@g(3poRIxLNkn>Ty6=20FGQZqLa`Zgq2w&+SZ#(+VrSse-J;(WKUzZ?E zkuaTa;n@sl+msK&kk&3xagYx+!e0F2H#`-xWc}gbw?*)I4ma{%FB83wzMbuGaNMdm zbdHz7jjw4jZz_Hd!)F>&sgzQ!9(&(WkEewkfd4wKU(YnF87)8~?aR@)-E88FwZZw- z_{Ik`csvNbN(0-wV%KmXcFje3e;;T4!!_Ew-q+i!$Dkw4Y;}g>N*E-LY4+h*CBz>!4fXVREu1+Z|A%|ku%b~_iY!K(GlRY;gACF%K-R?VBQYqU z-_eOw?_Sp1%|}vYN_ng8z~(*@w?oJOcJon2EaSC9IrQn^E$ZYDl{5~82p!}ScOj)y z`;mtjjybC5U{6Es361xMh@}vDR-^r+}s+%Kq~ z-MAEBAs?n$yjdCd71%)xR+bwJXn)SjpntCG?O`}SNwZTNMlT;X1?yp`&(IGP21h}# z-R7u&rnBb=r-rJ~pHDf_|6(_*0r=_@0FHkGPv$$59FrkaK|cBfP5aX~0-wOS-CUMx zFR^O{SW)k>;I7Dy;8LzwLPTLE$yI#B{mcd_GmiF?|kG_e9XLK?(81H;v;O zXA!H1oim8XlL#uUG(e2fGHJ(YNXOS9K6j+%ufg*J@1rc$7br7Q9_5wc{VH{=ukuUv z&6rI4)d!59-o~4OogWx_A1%59#Ca#5!O=>%XAar}D^T9pVszs-|MWY+fsCi%jhk}3 zRpa19wh%jt*J{yeV8W)~JmR1#Y(W9K4`-tyJ%s9i;*QWKx+gUm#P4FC0F4uaZ1=#$ zLZWkO?(H2!Zm6MDmN5Q4PNTXcs&R&ndwWxdsVXS{wOqiDINYzM zOtm>k4DuK%e^8a)?k+@V#)oh-!a3wbXN`c7?#{8PexYk+aD(@m!SZF02Xlqolo~_y zT52w0eKuIEAG~%PHaDf_pOG~}kgGbB)<2O81}D=!lo_q37+E9K7j85Fg^=`i$Jjbo zsZcoHVh~FiM$ipCT4 z@sTw`x^`};Ia1mYBVX{z;L#&%gmkt-=UhhC2w^@0BTkJmj5R79W=cv(Tfv4#)(GjC z0pm0sqmQf+f+S+&F_a0Rt{qt;6eOX0OlQv4`if68Sdosb5sFKQ^M;H+`sg=2UDLS4 zCu{gb>p$EYEJ+zdQNA2Eab(YkHnK)2RM{HUBR|FX9_w`?>5Z%rqP4*{N7e|zYjh@p zkt+D3u90J#Hl(=^v(-baZ{eL`#K&V+5F=}Zf-kBJ`9$+yf5(wh)vBH{m3*&BQI;3Y{s_Ui392H|c>b}?X`-}|^^*8Z`Ezuky+ zT0QqpS#3x)K6sYc^HBDoSu3#Cav6SGuSPM(v)@}CN70%+*`nTqk21nXkLH4{1ut}0 z5AC@}&%3jSzJ3oX{fDGF^}cXM;o*Bl&yNB$t$Lt1#o`=YL&uy^hgH$HH ze_Cy7Fk3{)_Ixq>xU5PXxi{0ob8w{}QDO0(r_zo?pG#ivNIQPd7c-7etK9Qruwr_y z&R(5$2n^dj@4}Pd)w_4#++DlBzWZu8f$3?>Zp~VY>&RpZRbghd?zudz6<1$)3(5p*>&AzUTEr>DN7<%DyYBD_l!68F%5# zi?2^tep1(|z&BRH{=R_qFLice?;|~?F1ebB1;1Z>L-xrqLGYOdyE!@gzMdO0PJZJC z`o@p&{Ie_jZurJ|y-%c#s$E;#rL^*`3iw}|^u*W3xM!7vtPzQ1GR&Hk?KXd)FL|Ho zTPqUN)ppZwZHcps?b+Q~jeR=n?%AHb^YsMyq)puEY%SH&;4bdz^Koz7>gLw(%)Vgv zkJBq(KOMjG>Esh==NhkIpSTJ7fIO@@pcWaK;6|!(XFyiT%mC8e)Bfi(T!8)7c z4~-G5mH9>ouW`*qeCvw^KqI>T53=sV=edq!=zpx0IctCjZYtEUW*fgf4~n8*@u#KM zt>*!1J|GYH`Q8H8nSu(5$yzD!XQEXV{8{;34uOi1OX4ZkAcU~*@j{@0NsKPw(&3u+ zA^Ez1E0Voml@#Y*muiGtBH1eU@wJpNDXhVX+g}_`G>aG2Wjs<{>9b72)aM@2+BD~{ zb@H9qx}->Vx%>r+{un8<_(qLzPDpJ{wWGF58`M<@#H?1yw}Aq!T0J@;ML2a;ats0S z(LdF?3I9!SMStKQ#lHt_a1_b8pPzCKTbQ-dRa$zV#sqJtZUF{)r7dP-1t8xUvWfV#D-W%9roUXnY_~I?B$ZW?by`v`)Z^ z??EL(x$8!nNCCf_ z%ALZew1VyVSQqIb%|-e_;*4rRgNu5+&Xe-}aN^b9z@Z(h9gq^*Is3-=8OHxPuMwwT z=Z{GLo7hy>!TSfqX!i>ULs_XnQj}77;><{_QX}muA+;U#NcPkqO3qSj$FHaCuLH`H zkW}Bn_Nh&t(;p`}qwO{)(9Muu!5%sFq5Y&}=+7|!fdesc8StrGQ_fl5O%;X^Q zxF9RV7Bs?{m0doc15dX&<5JOh79t>dBn9y}NE%Y~ zv=@G(F+h;6{yG13h3jE0M08TJ-T$Bb{?hX^D`b&lF!DXV2UfK{XpE+Tmyl4yh9;KI9B(H(7 zfEssDNJog@`b!k#E(0{WdGxoG3-8xw#~j5{F7XN?#@`SzpR&-5suiiqh%k6WtE2Vx zs~x5cR*wd41zT1b^P6zge<>N|RyCp5csAO0p}x@bDRz-E4<1=WWDA&6ireT|{%%Y^ zOYj~RDC3^*R;U-#G8j!cT+o4pN&ubEcI&prawc^!m;oZS!MjPnS{h|b8aXhb<)qN) z)`6wMQ|a;k!E#n=ZK&_lq|k@A3{v6Imq?xJSz~LUO{wmS8xfzw#yq7>$B2|r1d}yF z&@}Tc-?a1Z1Vpfh&k3Gd%1Uj3M{ykdosfV-dueQ?hvO6Z%Ul?oF9!J05OEoHtVrkX7ZhoU!)@x*0g_5D(8|oM zp02e3bwZ6(zTEWqoydiGh~q5gr$OWIAmh3?H`JL*AdHWcvY`KPO~*!oY8O|Bw4v}^ zo))LsGaidEpQiI`o-)oD4z^`?cL(HZ%7HMQki&m=8sQu0I$owtkpfnmI(AUeDA*LZeNVU}xS-Kh zZ+l$!q-9YGI$Odc^(3xnA_jaSUm50|Ioc;9tlE^;!5Y_DE5vnWXU23Dmq8X~KqipQlYLhICxfIg&^|DRd9Hra8GetpZIRlE!Em`c zqNWdwgQ<3=woJ*>_S6#9H&q9un7@NIh%NGWZvZl~Z1&+B_PmGuhMH4zzw_NFHVml1 z0*{(mbv&jtsJAKHkgb&77_aWPL?T`tWw@-`qdo9VMxCd4L%E6crt|;({oer_{yoy* zVXh*Nbmy#KV68>H>mAg8h#^`x@K<=%CR2QMam-gE_NCXbGwS zbqF4i=pJmvV#jv*%fRQfd@q#0t$_b`1wgew-$})L@9rF2&%xktYrEe!KtK8c->+j# z=d)zf>^uYK7~}Q%vS}tXd?J78d*-jdd&D>j8Q@msneVa={cK%s(r4@J&-%}L`Z$i$ z^<6CeNQ)cU;T+==f3Jq;$OS%5zWyEc*t_3ezSv>PoP+%E&7q`D-=uy6)S&N3d;KAe z^wpsR%Cr&od-HC&(oQ=7?Qiq_;Z(T})O(P5|8+1i8~k7RUVF^e?oO2nH0|vWVvmi^ z8H4F+I#;XJ5HpL$KNvz}-?6)JQ*6eLvZkx@&&3bKmp(rqS!d914vMl%-KYab$tX+2 za~eaPKJlSU>8K%Zqz+(5))`PzQ9k4mD{HN^RH8c0qK(Gl$H+PZjpu!%0Vd$+2^Yuv z_(bu8u|L*VM|PAoV}{E_QOtOYd7`L}q@J`!r50I9sO}!mJ&S!xQBY9|zXy;Tg!tI)l_a9knz+X z@eWrb#ph!BDzY#l4iPwt!kn9M^Fh&gVq~2GY?*Q&S!cj%oRN>Vr}7BLI+*5gS}kv6 zoq^6Og;`a~ha(qGGK{PP6R?pl7@e{J*#sL1Po< zt_PW0_ty&KPW)!CHRsY4Vzw}0u+{&x3rd7r;ET4v*=()mSicZ5xeZdHJoL%09;M9R zY?r^K&UMCQQ^4Qm#w;^t^#L`KSpolV70`ShNsgT#Ew4rM@O`|$HYEJ*@>=SgevJPd z{=!Y*RXGkng34$9s#|hPo@oE%Tj%>jPRJWAy9c3XcR!qXCzQ`GkV7!4AVxlc(End3 zM$cI4BbA=i7P$-?*H@9Q!8bnH2rHia9g%FeOK*R9skievjDW$2NB(~>`mSDd&OH|x zEw3xzG|AqKFm&+d7KnM|+IOLz~XM?c&t^+Uj2jK?!J zn&MZ43`E>iE!=Yoi6BV`ulAEiKYNSfz2le95(nD?4Z+V<>fu}MChqIrk{qYxo)s52 z_xw1Dy?xJ~!ZS?bCN6!B5&lO5eaA~zowLIC)qP}7{C|wFb_GzPr;p@B!!#FIYr3Pz zd88ZNmK#4&9Wvy)FaE!7MYo6i%qY>HUfcLiJ zJoe2kq)LfdS0Tk@6X|u}`^lhG@7UcZ%NPy)-%s|jh#KM(Z(XMu>yLM8Q*A2c8dhac z9IM~<`^ida6c6zZvgej~{QqT;#^?`GIav<(-f;i-e|b}%UiwyMr8q&~N*dxFSx3jU zUL))1w9*|}N9X?kIL2&-B)2i5jjW?Xyb2j92!>L^-^e;TCSX>{nv%mBBUTKo>2!XR zS-CGRkF2Bfp7sCXI=ZMkS;Rk^k+oHFHZ#=guuFo7-PnWSTG-5iZSJr*f zV*D-fN7c}E!W?C~%{KgRY|UmVS_{lZw7X4*Sq?i`X1e;WR+uvMXg8f^1E84&jSCYc zMa4x+@KwDyaa8xV*5;*&1sl7&JC-k7*2QK;+0ypT4d`2Ecyq$6#m(*5ABOKX{F%Cn zvc%fX_QYZBZD<_{8a9~CprrvF&5_L;Hn%q5V5r-d!w#C!v&*zNfC+H76ucFu0$zS> zb7xmedt0J-X$ddw9Wg_JUV$IY>HyLfkV%B)PKYYnYGdNKR@8KKwzMXS%NJ8pxTvUA z3UL`g1S)|@7sd(Hn0lbu3S_547qP4Lty^18U*`J+P+cIb0lIEBO(3lulI+IaEf94x zWW+P;@!bs#H)9{<(1F#njUH`)%)W$w3|cL?ryVWA+k`6} z*obcf`mew_9yfx9&8`n=Sd05=2I-vuZM3a~nQzwMzD~d-J-nkHUUd}cJqX);oKZU1 z^Ch7w+8SFoHvz)h zV`}1=N7POPmz`lz~t4w|0;jKut-8atbt+X!S?9S|LP#9{M6(%$%) z8R$;N9Pd<1FRHvGhn39A1z0wYa@l<`bErgmGrF$E)yumtlU zy^(P=;jXQK(u#e9Gt2c3(k8&9nUK=0z`hQ9h6x%t!(6HiDLZwP({R)cSP4_GR|;AN z?it&b;I2+ck8ZOK+%)6yCz&MbXVCa;SI$)$-YAHyE5^RP8 zuERH7b1?0xb5R1sxD-7}L*z_LAt!2wA!3WuTZ@yR_78NcwRAvQ4NkVSt)V5IfJ7*D zYB_<~pFr;t9BH6RIH{?9kPG%7-u_e$-GJJN{w*%-Y`{I_D#&XK+6*4bGXvIO_CL6s z8XP1BQr;DUW&@78oP4?=Ctf3!8g5TRn-nCx|0Lj#hnqv4Z?-sjcA*C?dv9O_uhp>D z>ZF|N9jam4D8n9GDmB_t+_o8zY5xt-7HL;cWh~H8ulEJ(W0Kf_UX*MDzR3@{UH~rJ zaX2%{KJkjJ|==kemoplSe!?>Afrj^lChX zk+OfqH#PPtze_+>D0K>$6pnA-oH(rJ_{8By9K9TYzqJ+lprs3eysf)0$S><`Zffc3 z?rd4Nxw|>KjvRp4zRmSbG`6?4BI>im=xpAAoYC6c<p+WIZx&qH{Cku>$A& z$qzJiw=^bNHZ^QOE+t)CAVolK=#1naqp6`Q(Sb|M+YO1X_VwLc8#P=@>`yg{o})9_lEJnZ{rSY#g4W<>ARpKA!kZ#2ea^@KkLwMrc#< z{Bk;er)?&lu_f^Iy#T+SI2X_0=b>g>fPk{d?1$od30!rV8@ZI2Ql#2)B-~0q*AJ+T9(TS zStZVKsiVbmP6!FIZO_hBV;XpAM{8$N{*IeY z`K(+ipOdTPYPm)}FW1U-a=qLjH_8|AF5Jy>i+oXTl`qL{@@2VQz9M(XopP6aRqmFr z$vyIQxmUg+-;{63x8*zXUHP8eC*PMH@&mbFekc#fkK{plNFJ6S%Omm=c~pKXkICcm zg#1jNl%LB}@(X!deksq$ujE~vzsO(ZZ}NBf2cGS}F1zHP@`mh|J@TgX2;K^W30s?H(`|;$v{^RW=Gako zv>ju|+Hp45=GpN!-%hX-?LKyr-PcaGQ|web%}%#7>`Xh$ChTlmVCUGmw$RSA^X&q= z&@Qt3*~NB=U22!vB3o=rY^g1?<+j3B+A3RZm)jL~rQP4IvIp4Jw#L@lI=jZ!+oXMu zJH&R-)~Q}AFwCclkF+C!LGB7 zw#hcz^>%~ZXj|;5_B7jSH`zAZZaeG;ZKv(B-FCCxVz=7U?KXRc{gC~z{fIr&o@LLr zAGPP$?e<)Ip8c3T-(FxpZZEW-uou}++KcU{>?QV6dzt;Tz1)7rUSU6Lue6`DSJ|uW zHTLuNT6>+n-rituv|q3{*_-Vx_KWsb`z3pu{j$B?e#PEl@3eQ>uiCrq*X%v^>-Jvz z4f{>|E&FZz9s6DTJ$s-1zTIJeVDGm-v=7)H*$3@I_F?;D`-uICeboNcK4u@cPuQQ? zC+*MeQ}!43Y5U8Jjm<~`Sxqeso7&r&(lHWSmw}O8Q*%~BXJ`A?%^f*z-`c#sJ8N@W zOHol}GNWrFu4f;WEUGTThX2Ylv4&J(U+?!x-B%X*eX-w{_)Tg056%@*wWe9+MLtUwq@OB z6hhrR(sTQ+YejZ$ZQt75+1auIr3=f44Xw?SqVv>K>gmlL9nGEb(+b6%PJxosxUsqM zv`r12r;)TZ^=q66v3DZG-iZu*Co=3E>)1QdVedqMy%PcUP6XIH5n%5`fV~p|_D%%Y zI}u>-M1Z|h;hOq-kH6mIulM-tJ^p%+zux1o_xM$1xZmTi_xS5Q{(6tU-s7+L`0G9X zdXGQp@h3h0q{pB1_>&%g(&JYXSyP|%{3kvBq{pB1_>&%g(&JBh{7H{LsrZvcia%MT z_>)D7AI|3VlPpsF$s)y{EK>fHMT$RJr1;^bzQ5v67AgK@k>XDlDgI=U;!hTN{KX!B zvBzKR@fUmi#U6jL$6xI67km809)GdNU+nQ0d;G;7f3e43?C}?S{3RZLiN{~!@t1h~ zB_4l?$6w;{mw5ao9)F3)U*hqXc>EhYI){AC`0na5w|@t1l0WgdT-$6x00mwEhU9)Fp~ zU*_?bdHiJ_f0@T$=JA(#{N)~hxyN7b@t1r29)G#VU+(djd;H}d zf4RqB?(vs<{1qO5g~wmv@mF~K6&`EO}zow8iNlhWx zd;FS0)+8%E{z{L((&Ml6_$xjBN{_$N7kH6C6uk`pUJ^z)S|4NU)%JX04 z@oUOjlhl-jy~khW@mG2LRUUtp$6w{~S9$zZ9)Fd`U*+*@N&{SvzuM!k_V}wk|J9y< zO?_*U)gHg5K(sx6O@U~8{M8Fb< z{~C|K#`9m}@z;3#H6DMB$6w>|*LeBYc>J{+#om{Iwo`t;b*M@z;9%wH|-1 z$6xF5*LwW59)GRJU+eMLdi-@Bf1Sr)=keEh{B<6GoyTA2@z;6$bsm46$6x31*LnPP z9)F$3U+3}HIsEnY8egz?@UeIBv3KyXckr=yaIp9HY22u<*LZ=wqZ4~a2ll?d`e}W= z`Y9?c4`2NUZ4Y1lroLGHqduwep+2d8U0<*EfxVLt_D(+7d%S8NXnXi-A832{Y9DAj z`C#wlgT1Fy?E`HmAM8D!Y9ICWY9H8p{AwR)d;Dr2XnXu>A8330Y9DBO{AwR)d;Dr2 zXnXu>A1H5}ePHkG1AC8O;{)0rzs3i&J${W3XnXt`AJF#rH9ny2@oRiQ+vC^xP+za{ z0eg>M;{)1W{u&?9_V%Ok0c~$T8XwU1cA@bBZ7+X~4`@64#NOlA_)uT3{(-&6ul|9y z=Ue>(ZO^y*1=^l(^$WB;-|81=d%o2#(DrzPUua!i@9SagJ-=EHqwV?CdKhhwPwQZ` zJwC02(f0VX{>6~P)30?c+Wvm6ThaFN(0UbZZ;x89qUq(K^(xw)KCM&H_VU(x6m5l< z^mdf=cI5L+z0Wh)D_==(M@er-NpD9GKTQDj%O`&{p{-bsSNj)cU_Zsr&+Mk~3{w=jvwR#$Z1ke_XS? l5u2Fn76D=I1xE5O6y|}x(7k77e2=34p_u^2bEm|lLBzV!_6o&v!(cly)e$)5& zefR#8Cppha_C9;B*|TQNOy0lMQpUw1#{vKVxT-1&x&Q!@CF1=q1{&hEc<8tdaUsq{ zUjD7BygaS9ua~2Xy8{5gnh~BMsWK=-Ib=1jruc?FkRV|6ZSm2kPpPd~ieCs^;|-}a zxE^DeaaBJgRcx7hpV>7XZvCpOjjg4{h=>vq7h&sEdH<}A#c3-kax&5tn${H*^_H7| z66*&*6Evw$&*j)$YkT$z33WD&3RNc&3&_uj zeH0e_$4U68Yl}c4ZaZ(>pjo{<+4DxZ9a?^jm4FBMq7e2U|9S8!QSZA$<22tZK-+P zvIkgSXZ2qXjiqa@$Q9v@&1xsdrG@tQh z3Od!G0QAH@qqZb>q2quCD!j zryG!&ugdr9lAa#Ok~LxP$j1*`60z8`&+LC^eP;KA1d`^xj%Pt!6quh+VIiB5nNtnrjB7jsxm;Ex?qC)58m!AQ= zCSP{t)!q-;BGJX_aluOa&0-J0B9UbG~16io4rE1;ipGRYc}y`=hUo2S=UhD_s&!dm_`)q(k1*rf-EOfC5w61k$44 zrB}1POP+i`r(0)4Nj<`B~dW`(*+hKZeb*Jjf z)y~UfUBs)>-}DYSZuX@OZMx$dZPD~0`K(H;&ECi~U{~VeuneIN^e+bLlxUo4d%n8n zTZNf|KGE1M92}eij5m5S3R}stDj5`^OXJ179BN0&Rrl1&H!&@qmZhNI&m~($v6oN2 zy8-TBH&Ob2T4XxDgK-+xG7ZQq_88G>?$XiP>1Q%d!o||7yE}RZd7OW%y2<5!UEdl* zxlx863Ld%$t!Z_8=(w%To7(ki6P{ihbJ8p50H$iWxrRkZ?QZ#hknwYWAiToq%UzN% zOB@g7!rO?fpTwTMN-!5qY$^2Ho8GAhs$Or#ikT9%7|wKVp2Yy_bD-`e-#sWVpRc5! zN4%a6Xd4X=$`NWarLaMDx=M)x&soHRMBeuwaM2_S}_ z!$FPNl6basLndK+4Phd+!-y@LokF^#*ZuHqjpgtDPFB4z)FkyGWN{`TIxZWjK#y-o zH1W{h{oYx;1f%=L$_-ajhVt~ADd&Z6?iwyB!EQ0grL?r?`fF>#VxMEzV2H_Y57yx_ z$a?Efqf%2hG?|F!4Pn<-(`N$j2DIUJ0zMu|N<2D|xGi_G7wIvuD;75nxhxmWIF9*X z{CLu6!tZ0GK?<}l_$FyDVu)WIK*bbLs{~sXt*z5D*Fc~N3S+5CCrUX|6jv-*$V|1b z#c4;#AZz1;uR~YMM(nRAA#N1IuL_sNW4#0ty%Dz}n)c@G_SABDscsK;U#ylSe_u(o z2~J#e>~;!S$vnNR-Rlku(^)zR)k{u zmz~NUc5RK?;y4A=EkVGXKOwxoWd)V!Wlwl*aUc%*kXrSTbIe%`-Npd~^DMApb5SX+>KcMw_v3O-ddA6kX<|{OH z&5E`yeAuim7yAi^zTL>wn_mz*2KE=(9wDL1-dLfjsi3a9#1SMKrY~f z<1Oj^@y|r8$vUM;_A7fUayeffUoIS6wqQ@|iOJbpNc{H)MSBXLgQ0Q(zN&OK{&j04 zl+Ug(IG?A(U>;3U4Pj7sT^&=J$47~L!q`hy_Ig5{nm%r3#Lu=g+ zQM_n%c}e304Nn9jFkPJ4=po-|M%8~nw&eD(0IVJ3L3WUJq#m3w*oW&@gbp2CYyEC+ znV~kV$-eUV0M!CItU)l&38hiPVbbem&l>_=>yG3;^-YoyLuJc_ye!cZSe|z9X)Ei% zHi-$u;#B1Gqo0#Z4l|?62Mz<{#u}xskBWw*yln9YGdwUXj+4k|b&yK#3iTJ6f@%OM zU)5QQsnEEF{mHZxZ`OMq(%%f2H{nZ=aSNwb^N(Xjef~JHC+{cils`0dFO(V#lQQt( z8;er8z==_Zi)Ps=EZ91(Hawd)KC9#mOQ~isVyQV0$dSVw6V*%))VOENHKHzEQ38dt z{9t_PF|qGrn@opdw;rHZSX)IX6QpSzlkQ$rw~S?EV#K(FI0P{r!9s5C=D)7{=i&qm zRQTubKghXEHKBEz&#JlE=kp!-mVAbf@6AE7o4H@W)9iMUyp^UmP&CD8V&v6$94)Pa zscl00n0?9w-T;sk98ojgyy$P|y#2sV1k~|9z!ZT zvsaHb#@8V#Rs0xpb|j zw@~KksdkE*iUJ{dE;C%8D-+kiKdv`lbt+!+%w?xZ-x4dtDYDYN7};yIS{Bw#c)nS< zQJE(`=MqFqB%b@J@qwpgHR+Xv#0C;PT+Tn?p4&VWB5r!y#*_hvNvMz$xj(~)R*&o#Fm2%tGU$ZFC~cQX@3F+aaK7@g zZM$Jw^df&pKz$ODzS3)eRec{yF>&2~k)Wk`ubzWARBT$!qu9lr=w7U&RI18nDYamf z9i7fBytn4blSa$(h)GBO^vApKGyt0A)gm6M1%<^0Z?~}7c80v0vRXe9y)K^LTr+P> zhAUwql{6RVxZb@(%CfW;S0^SXiKm!Njb2Gj+``d@8+g83O9mYa+P0eh-ZMNlzJZLB zMbuBK59M@(w=6o0c3B9mYGHMS9)$fkVcJwaasB(aSW4ktJ z`mO1o~}Z5EZ!`rw?G?xe5yqp8cB@ES1gPY(*+uB@nk2 z9E^RV_*F`$W;*u`TdMFLYrPBr6^1cLP{a#E|J^4%ttutKLJ&w}%l}os=hU9L>TuI- z?rkN(8Bt4Z0O>dFo82MUL(k$j7tLiB%*762Z-tMyaE)GG2haT} zI>%CYOO^r{#dV7~!da^!eyN?rfA-1eYHHzc-sbaE>IvD? z0-XC|I`VPh`32$jX2h-6*;tZx`kVI--voS({!mz9eoVaS^4hd%HKo(k3%iGgjgg*# zHyEH^O)DN}Ns+fNo}Q$i7lPFf5Hw$S*y?eqcSKwI`KwRT*(=%_E}gPfvTs_Les6Of zfvGpZXYf#99xar4lrP?*c|aL?Q^Kw!^6i?%2nmW0|2A^2_N< zNh2GXj#3s$g1eFU$B9aB3(3mtm^ppS#J98Ofs=S`24%?_O!%hbk!%z~+qee>JO@A4 z4&K~c%TYsG*9K9qPQ?ryk%PlxJZzAvw z6TcsIO-O^u^4z7dqe`wRF1(ybyhl3dRWe_?(-e-Krk9MTb^Xg}PDX~gzq=c!m#{Yt zXnPo*M6O1u^HC9X%HyyO>Gd$BH9x7vyR&E zfqB&#P$H<`oC8ka$<`QU7Qr1KHD1#RO|a_c%=4=iTc2yEVE;Y>J2x+Sn-D1YHK~nN zBb^hv4GZuI)TG5BdXs`7M5|?L!pVe;qsI@FD7hW18HBCOFwqp|Q&iTue}ToQ`Oq~P zb6id{0m9B>x#{9sco{Vn8X3pFZL%P!?V5$IYO+sMQZCkkE%U3NW0;U2NzV2CiEEt+ z8##|T#-y=w1}!P*~+XKR3eWdO&Z;4 z777HcPi5ba-Yapk6xT2uuMK*1)+Sff7bSlA?ah4iOxj_x*_qMv=MU1cVQ}n(*XAqa zc)USu)H(NF4lCcV%XQm1^nDh5?JY`89oTd=CtMfQzGuegmdT04 zqY=SGzw2}AX&PxKTeW7v2)S2c(E~N=txhb1+hyzuuqsw~z*=rfv~{lu1zdh^Dk8RL zOq5yc5LKh6)M!nRYxT$EknvM5#3FFjc205JdpvH1*ki;ZQpHq3CYPY@q>%94S;5)^NjI?PZunxKl zEQ1s92T8DAw13BJ&MELXECys!rEmzi$>cmZc^Hs0_ z>{)?)YA!?v=c!{7C3jVFZfM_DlRTQ5K0Qwvf}QKDN)rbF2;0 z)kUtplRl3x%LSuC_JT%uco09Z!GIN)k+lMEBeevLRryf|{XSFj2m8G@2;uZ(tu=zv zQ3Y5{mq!-A$!9p)t8{Q?mcZ}ST+z`WN(-_*kp+cfQ?1EsJZAQiXmx^aW_Tn-uhv8t z{B*CW?eh(i1%KPyx6v)Gj*cWpf>^NS!{u+v*1E6Ik8!Si-B10s%tDYvI&>2_AM5A& z2}-|3R0q-|?+|OA3VyZkXe_2-Exe?5_Smt9f37Y{mQk6Fei}ew1PivWEIwdt5KAISmnX# zW0qGs#wJR;R(jNFBYt9Bq#=}E1-^V}3AE|yx&ybsu78W~5ET)0%@xm%Kd5~&KQWxb zQ`B`dvU1;N3`$+v4)ofq_vNGLOkM&Fx~n^XNxhll{H^iS+-3XWOC+buZ!<*;`AD;| z(T{^%;+NvxE$6Sv_c(~Vouc2B6+$TQruOkO?WpNtu&M@^eQK)H)~kjrHM-N51r3Wj zw?KO28>h2pm?(h|Hb=j~_?OJ78tLZZaTMDaLmGJvQW z>Pzi?kg8Pdj^_goZ+khVyyiS#Io!v)0#}W-PRXl5QL6a9a77&(=GQ}>B&nytY+!U9+6m>ww?>rhKH$k?!aZ=4Y$3v@026fan#@`&UeTPo zwozJ%gx9>(acpq)kM*J>oy-fp&d7V?8@_ZB356ePO2qyXg9hum*OmWn1yQ5 zSlDq8)-aqz!cFH8l$;&?eU`$!h@m>U|A%RKew**tqTV5rauZ{=!Zt9u(!{& zbPlaa>d#1<G>frqoC3=FnNcEE+wW zG4(Gu90?8Vc4OX=ik2FjfG_5YXE#(tBgQyX&}5 z`f`fSO>kGwNpFsy@s#Z_;0h|=-kcjW?zGO!!%H8-ELXsMtJ+b!4F_3m<3C-cCGX3_uG5J#h%%!Pb`*#9V6*dB|62ccqQFoa(^y$p3n(3Jpr?36`xt_gK3%`@+4Fe)g@0CFhq(Af1 z7B8L-+s3~NhErV4>x_S;FzF`eT6h=g4_1)LbX;Z`euGU?+rL}y3M4~;;qc+_&*&is zc7T@HLZC{c{U|QUI!61ztV#MRs>>i*E7tpIs*vovl@Dk83w5I} zv`!2V6|R00z3jI)>#q~?kPt#W7r7}^>_1-EFc@YjD^EvHC|^E$i6e)F8V#^p zpX$r6=(Kl0crMrhi&aOPshyQchoe(=kz4t)%krPF7bL)|3xkrG?tNf50mXC`nV>>% zbCS(#$Z&mVxyRIQO;g`-6&b}ZB4f_-Q$ziV zLwM&?|Lwuqc?{VO^4?^hNYS~W#j2_pblokI4E{)(<($XGXmKY5#Fe#XH+Z3UD7&h)gb8|03Rz3&w+RCZ7Cmj?~+&c?R^M~lTrFer2oFO zA>Hvz0CpArjzMhE<-W*!F78{+3$FU~mqmW8RZXT`Aw*)TBM_{#Ine~%v~5FHXDaHu z^5-KFk>tjW@9LdCjytwr{2W7hhXfNt0AipZ^v(_Jfa;lZE&42bd9p~w3>RACJD|>ee`c`fnK-+unuCe zjy%JMsBcr!ToV(?TmcX3%+(_lBW6*oGz@{)K*(W2>K`Q|rM2c>9e=Lp#cO07XWFy!tp^OTXSL+>Y)c_JRLZ3bj{hD4n!Ra_UmR zc2|O+-3D%uV4T#%to(rZ*UxIVUf(qAvZeDr@?3KzkUQM_SHdqz@nr_jsQEfmo5Y|E zXey}R8XogQ%W^kQ5)b06K@uH{2G}6}*czaaSn$HyeL>bY}1%2)7=)`vh4(Wfz9<1LhdN2|ovY;-zY4ZA zbn=*XwZyLDqFB&*coDjOJvO6$SvnOAE4QrnOoN+&aO=A)aQxgDVB_lrp{|XwY%U8g ztqQm}PxglZ^RLQ<7f%TAT=tJ^1nFhI*3Ctvr7n2SfM&}#m@Fix8)ZH#3#eWpZUGxa{rdFtySwSz5HWqSnts$t`LptQXJ{0Uzf1`9e5dTk01{We&sr} zD25OWlL9%H_|x9|*L`fVz7mM-n1659ibkNqj>HMmeYfghj(>M9o+JNeQ z?`Y^oBIclc=|(EoC2<4GkywQ8AvlYV8Ap9=|? z@rGwHikRhL@OML;)0rV6oW=dNvEnZx)xL6WQ{z_CUoy;Nu&;oVRm|E+C&}hp+MzHqa$mIM zeIbB%&DHpJLe(5M%jE-$#t{b&B@GVifFMK+`}jn3e-0&x$};b})|WM=8Yz=gXz$=2 zO{8b4-7YE-YB>5-4GW0e5~NKaGgDdKQWG{!TK1~1Ztx>{V@$NxV^@*6coy>wFCmjG z06;_VuNHt*t6>up;>&*%62mwBsSdwkp``}Lnf!PM~t=f+@+Ta3aZ^urrY{!L3l{e>fT%E*vFfUrc^EPaD&{+~tx zLxgZH)#)xNtRHBr0M?=4-uq*(Gj!<()uBFS7c{mPa~gs#vj}CTlt7a|Q_cHMCht6W zCVjVpeJ{R+IXd*T7nXm1Ac3eC8iFRWA+hQW37+^-SLdEV7*$ckFOzm&%6K5X$Uw8^ z@Fi7o7ZT@qjdU%zrcQ1>a3_2rSHf&s@LUOD;I{x2-SXD2Ud=gp{*Ks6IycvcM4~aB zN1=w=MFuf>D-;tD`hT}FoqBJ<2aX!&14lkfim+b+A!PHbnp`|}OW4kH_1H|LD5R&X zKL~9PRt^OvHQl{4=n^-6N>YjH!nJ-)I7p>G^w%yq-HllG?!`@AXqz*QFz!tlyIqek zJEw@izb0Q~ZrAG?OLq53X(9>Wa3hpeXZBY~1Aqbnp$NW7Sceo5MPr3nj~`86c6*>< zt$IQ<$g6j%*X;{=vbJqntHsbTsoQA@kxapA9xf>RuTVm9iRY?dH^|58^ZagGsc*SM zZz7l8;p{@*u;E9ItZ)%|J$T>9A&{jzP|}3FCS6z@r#JYLEW%UTh17C5>dM!~%l!Uh zrcVVdfPUL@?{loM~7)-xh;9VqY{G( zk)l)*zk}g^q6NI=2PgBYux;mB`YSr$h*_pNO|4I{p9}0-OkKzc0JfNh6erJ+i;OC< z{J8(cd=r^EX3sd$*f7ubDonR&JH8d3n*oN^S#jvEWqqJTa>i6 zUnIR2l;-0UmJdPM^+}?^HH;YEI+e}8RH*3Im&6|nzwJ2shzuHe^-NQk@Bz++H zQRYOLNj?A!-$7P0V2}tThcZsObEs~Z^G&Ep-%8(Ht95ZcNbcJVpkLcwt$QgR)1mwS z*|9uR4K67I6B(LV=?eTVV z3oTwE&HNTOF)CkK3U)UdjHWw|yIa4=nKIq$9!q6Ey;>cP6NAd%ZLkxcrl;O~8Ea+5 zAwYX+>c-f4M+F10nHhQk8)Z~!-j4`^UJxBB;%lkQ&b*p;vbPRyl+l*hLu?T=jEvKkMe5gc zCI@Q=FAyHQ%R$LAi;jShl>MRWgrAPF=Wl-=AY?$Ub17=k5e9Mmg^*^F^e8%Y9+%8q zOFqx=#ZejmS*!o-<4~e3`g!&|Rs2fMq566>CAB$H_#aJB(8-S6BzisP4*aU0z^Kap zJ_NCj&a;Y8V=rs+)R{zRnB>NXK+wd2nB|+ye3Gf55wo6VB~j?fH`9DvCXv0ISPC0D zO&m){LkH&pW~gw?Zy;480=X@)qkY#_fYUL3ydjNOLG?^Qx;+`f*WK^^eR+$}T1&e6 zFo}{0Jx!snsl1v<9uTr}I*yI8f$%6sV6DCR$O2F8_D=_wpSLKBLtBAC$_S?8(6a*$ z()AV8mjK{wC9mN!b-M6^4bhrRSE<-UfRnaFD?qSag`oC?1Tz7bVlVRr@8K^Ii+zu! zNzT06+{*|6e54)@L?Oco8EdH_H^)(pk_EBGk=4ygE+K!24v?Zq`BmleKK0T&fR|os zYvbo+pQWA8e)4#j*G&@A%)&~e5w}%7)N?J_Eaml}oBpjryx8-{Vy!gWU2f5T(T2P? zQs3wprRecyp#vXGynSG_ZAo29Dy`^{7)()rKZGh7$rK5Ph`X$vY42`me^yRPBOG@o7OH4b z)DT*1BxzoAY+3$8Qp{30Z}x>4t`}P>Bim26NjOlFI_-0z(2ZRF)V}?Rf+i(}mowth z9_z$~P0EI6USuGT7@6Hj2k%B9LWAI9)Yg3SBgVx>~^fvii%EzsBWRJ;C$Y;_{YXv1uwXb)cDx?*t=Px)fWPYJl) zR4@gOJYjiL+#-2_+mCbVS_f2&5@nYA-3`A8b14>OT1J=MMMMt8{u!^pBgXmWpSKLs zDh$@(C)#uDNWQ2L5teqqmt9zpkpZun3CA8U1d{32Jg(hcF__paUYH4|8A;o<8wo@F z#Wqgny;?mzG5u)X*J#0mHhTx*B#m^aiNwfSREtUs9QI8Hia|uY5h>Llo}0XaHQ`0i zjls)yOY;P#e@cUNyomPw#WTAfJ3E+sd)=E3xTC@gY(d%?oUba=yQ6)52O)g~sB>s? zr)@t0W&D@_CR!4+5rN;FY0fYyNt~9~e@Bmp4n**AYVEA}4JeDM#&nC@{MLsWS+|%) z@+q~Tv7vTW&YZ6Eu`#>r~p|{P$ncIiI-k($tkoMszn3QIk%{-;d3jz~-v2P-Xo%YXPk3n@L zCy^E(oz~c=x-Da6cG;uWMAR0x{%r(q?E`<^S$FG7YeF<$qUDz_D_+yKK=qK3DRV>$rZ2yxt5yB4 z({BNDWxpd&aR(|d(Rz7kZ0zjV>e>1KpncJk;{lCLa9#??m~4CfB#8($CG4z|cMj1& zA)0P6T%5d~8xHNOik|1%3RPU!`3c%LAoHJ>@67E>R;6iTMd&|x2rs6ocS;J_@4Q8B z)<7g~?MlgKy~<&&;-FV%h99|n*AhG{r@z7^g=EITe|k!k_Z~Vo#CncF{D)dC(}y5A z1!n&Nq(Qgc2@J2zh~mgh3h2Te=KCBORN1$v!2R|!MSn2jVd=ya8y)^kq(bV7&OCaj zmTR0zcCQ(y0YbkOo#fBZnyuSB9yR-QS+D_hj)B>(mV)Yd+`ex zJBs!CjTCgjRTOys!(R+q5)If%^p9M+JD;$mED_%W`vfLljC%C?qKkP9#s%;XSnp+d zcrHYAZMHN$)?%3*hLo#zn-TuJP7HQbjI!R8tOecxA2NmV} zXxHSM^2$u#*OMKE%h4q1PyNpH$Njn6h8@t?8McDPB9LbeIPE! z(&Zc7FKMNS2#%UxKpcM7?+5zR){0J56RK7A+jai}Ku~^0`K9g`o{J!O$k!%@IaQN$ zdp-cnnMEk?M0XkaQ1MH2f)w|&mrLPrTmbHV#{nDQX(d>zw%Z+Km8 zi=#HRM+}EM!~pl?qm3AJZpXEp=3(Zv^r%ZET;p=s+z9lgQqKIzrqBkHi00}eSLoeT0;r+0Jflj zh!Q^dGhj^zBiKa47@LlLqo|L;6sT0@vZz>#sxecgiE_yC<dgiT<6A)5aQU!q9?}H*RZpEGwrI<-Z*_CsfshckC@kLTUUvNxhEYESXqIE-^{??#c`1`X?I+( z50NE9YD~PENLgtaLpcZHE3&xdXYrE@kg1?XqwawPM`Qnq$epa8vRVVoDI_h25!P6_ zMT`70M?fDp3L)`R^V4(&Q)3unO@>!^oR+16&Q9?@Xd%=(kn&4H5kc`G#6**_|8%ym z?4ERBpOjru&79}n)E}j2E$-IS0xG{Y2{!$g!qz5oQij|cBJZbaDaD211Ba8X@&sgE z;x!y@$?Xt8I&ZP|_%gRDruVVf*sb%0T0&kKU%Y?;K}?@0x(qEYtAXIsf2t^T!E35h zDa|Hr-5-TipIA|yaAXN6&(2?#y-#;B!1^%Q*N*#9uc!Lom?g^9@*`bq%)lmEL?kFt zpXV(F6^q|?065`fCS^t<6PU|j{rtEy-4XS0IeOq9Ihh`u ztA@1->3f%~&GHpt{;P99`hzNGq$cl%TUF3R{vRqN1Q3x^g9vM~4~EIdwajgYTc`|| zZAf)X3X_TEkN!^YG+=&VDofB$9~y)7uq9>>p)iRIt56Z{7ty1LY*4i|{` z6#EA3Lv8KEQ5iFy-`~x<{@+^hEH=PW z=-o(a+s;LyLb%+3I9Wh{uw72UKRl@s^K!B)$VTyGW1!?uC*|Y48Sy2I){ohIycPzi zB^bHH-*K20X0`vt`)^B6(oycs-|m!-yG#k1U6aQ}D_{)-ejmfn`Cq9+>GPI4!K;36 zEEkhY(?VKaNNv+~oMW z(&1H#muKT-rKwGisNM3ho(dbC0~}fSAL{()x=&5n3{e_YMo8^|rrfd$81_*J7W|4u zvGw<?Y5<}dUG~g=D|JiPF!gz0oeq3H&$ho!CBk`8& z+X#$I&B%HP#k_xlK(L;|fCT&ZVLCx z^BWe$c(`?qO>~eVP~x)UJZ!$@z7zZ zG8hSj&hg+wSovJ2eU(UDvt)c1e|#r5vAWoz%tmWR=6{c>a$qCW(=qro6206Q2R#-t zYIIcgaK;RYp%Jo7uES_EPC?57lXwajVXjV;=1T_EtOrKsI{d#Hb17z>OrUI|G^aOQ zz2-KK%N7aw)-t9z&)+rZH2KqovRpk$u)cR`Z#N%f4)hVkA-yB4{58`l!nQ`JfI(1E zOIiZI=1Y1x-3=1IhE8-#l`?+^4I+Pw#dcQ78*?G2XKOG4l zQPpvZ&&u#wF=MR z&&G=C67}?m+QZj6Q9E)mApcWw3tR_HFVZ+*N635WyIARg>8G{Gk;K39d$}^`bPNK4 z3bNh-!to>g>S86YzU$|dWy{sfjXyv*`$Uy#HPXJ}4r~0)|EjNtsP})B$&p{zP?D>C zivq(7MmL{Ep}$Edz|Nt71@8>lNR~J+05KI z1~8iZddc-sN!$OHWG~u{f0(x2c|v`HFi0BH@zd(YNRLzeyD}A7w-m*8kwX)AnC>** z_v!nsW|-rM~5J#rk3uiN&5zIBq+A`@tIl^CSagM zU-2O$A<7t+Sr|gVZN%?D;&plIDqOT3ee}k^Uj%hqvdE%**ctXH?ed#wlS3WO-^lQb zn{D+>XXJG&?@?BrsSeT*kI$uG%t5zPC(6?%Q^lP7uo%MFQe~cfbxL7Hm_RA3virBsT)VJO^_kBCr z+^owL?UT*%bWSlYzwQd5(o%J=cIF(vagQ)_Ew>TkKt!}BVKEveVc5_TBp|CUQq_Ts z7W(?WnRBR>Ha)~tf3p{GtFk62qJV8(lfQ{P!D_*Hak%k1D7HYj)ilGDD3e36z~v|q zQ!3;ZbqXluK5Ht^6Fupfc;%~e+fWdAxte$pF0vd7LON9MdJJ7L#Y2lBe#vcBmr;oj zQ(m+mZ+8q^HHvGJm*bSbFXMaRLD7|t3}(Ct#Ba_IYjrt0l;5KEuhRDs}Q8Is$eY( zini%Om(a<3$5mh3R0rlSB=2(8iL10|QA89BYW&JL$p>p?SK~%Fm(Z<`(~n72#|YKt zAv;Ceh-Mjp(tKfM&BE3aE_Z&2D}IDlT!IfRUnthAe%gr?m*@2>B|tsgS! z;8kICZQvm;6=US7fLr@**7p>rF5zrzct*AH9#)Ft{tT-hbS6Vv>wNKr&+#A*aT`*t z6_m6%C_KZLfyzQw4b+LPio&jZSKHJE^~Je&C7n2rVJEF6_ z5Gtf9S%l09YV=eQtIQD>@y9V$99`@r-vxpiAD|_h^qa{@wGQWU-ohD8zg88CU!k=< z$mCY63adF8QG5R4tR$W(pcScgH>_zvlX+{(5anEn#D}kt>zE!LM?AUR849T6pnhHD z5B*{xPQN7HTIx5||B>H(^3V896XfkeSxFeWrX48b0uPgAB zh+pS5n(TRHOL9aFXz=z=ilr3Jpi+KuzX=xuqf5eZU|Q=2_bgRGHCfyiB790>{Ze^~ z^U)^&)mo6j$PKkDDXB=iN8$Iq(g23pffw z_l%e3h~Wc90gRF$CpSU!TG`VUcbUjWhTrDrv3sqj(PGfX@%j>v9xh;}XWG%QyfaKv z3P&1tUTac2V0sH?B#RoN{~@JH_?c}H5>F=hzL`DlLP!JkC<`ZwH_GOCr`eqAA|u;n zZ<6G~mu%O&&E;_B{-Jl*)>F7B@=q72RTV$v(-*eZ?_JsF5#1 zis9u@_j${^KX?e~=@iMfs>jS9Cm1oSJ4$cx(sjq-O4H?Wo}?4`9#G~- zW1dU4Xt=Er*VAgX3b$w}h~ElF;Bs~^e4jOcR$NKU9#tCzM7rS#DJypO4B*jQ**X?2AR zD0}-Hz4>`FGjE1G^8jKfthJ*HEzCzZnD2;to}VOD8f7{~l-yE|x%%(%c>!BHNv~8A z4N5&TW6pQORb;J4%YKpr1|5m)zHcz7w&pX?(L%#U2fX`Xz)LrP^purH+ruUlYaEtOgBJZ?;j#~VvEGPybUOYT))*&!u9#}P8T;I5c6q-6+T0z~+hx85gguP0hdo}i zhh6Xbh20!?U9@9lr(sNpD)x)m)3Vo~X~r$MrXaG6!-c}7J69(s$}m5IML5ar?QOWL z8;!_}b%xeTka;p`YWsel8#S03iG25k zLfM@2cW*&NQ{Lt?)cx<--4#3B(H{M>e@o0^7o{FEX+cc-dSl6o$%eG)`4aN{2=Bdx zNI%N|yz~0Q5_wJ1Yg)f3-4Y(0wkIjGJJnZb~ODEplx_4fev_e_rrmNLF)nDhVt+W-GQFz5XFKZlWd4iocAre0>|l?sat`xuxP z_|Ftz?hyEOO5oEX28EL>OBvoXfb_GrvZOH0X<&Y2u##m}Zxi#`Cguxlr%wrdZ!lWh z#B30}!2XcIA_nFdr%5cASS~m{WBFhQ#8w>w@18L&W$JBUKFPxHLFz2XfDd~Yu>(zB z#1A5DfM)#hkzsjcu!wo@GnTtGtQY2;68PG{|Hxo%12b%u literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/redcontrol/image/slideshow.img b/src/main/resources/assets/redcontrol/image/slideshow.img new file mode 100644 index 0000000000000000000000000000000000000000..d87d40805d7e487e2f3794d3f67e994ab46dd3a8 GIT binary patch literal 4864 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 L{AnZktN;EFcu5CY literal 0 HcmV?d00001