From fe79ea40880943c259d774201f2725133f4878fd Mon Sep 17 00:00:00 2001 From: Olof Kindgren Date: Thu, 13 Aug 2020 23:32:15 +0200 Subject: [PATCH] Add initial documentation --- doc/Makefile | 19 +++++++ doc/conf.py | 53 +++++++++++++++++++ doc/index.rst | 116 ++++++++++++++++++++++++++++++++++++++++++ doc/make.bat | 35 +++++++++++++ doc/serv_alu.png | Bin 0 -> 9058 bytes doc/serv_alu_int.png | Bin 0 -> 37958 bytes doc/serv_bufreg.png | Bin 0 -> 9616 bytes doc/serv_csr.png | Bin 0 -> 11217 bytes doc/serv_ctrl.png | Bin 0 -> 11766 bytes doc/serv_dataflow.png | Bin 0 -> 33811 bytes doc/serv_decode.png | Bin 0 -> 7469 bytes doc/serv_mem_if.png | Bin 0 -> 10595 bytes doc/serv_rf_top.png | Bin 0 -> 10030 bytes 13 files changed, 223 insertions(+) create mode 100644 doc/Makefile create mode 100644 doc/conf.py create mode 100644 doc/index.rst create mode 100644 doc/make.bat create mode 100644 doc/serv_alu.png create mode 100644 doc/serv_alu_int.png create mode 100644 doc/serv_bufreg.png create mode 100644 doc/serv_csr.png create mode 100644 doc/serv_ctrl.png create mode 100644 doc/serv_dataflow.png create mode 100644 doc/serv_decode.png create mode 100644 doc/serv_mem_if.png create mode 100644 doc/serv_rf_top.png diff --git a/doc/Makefile b/doc/Makefile new file mode 100644 index 0000000..298ea9e --- /dev/null +++ b/doc/Makefile @@ -0,0 +1,19 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/doc/conf.py b/doc/conf.py new file mode 100644 index 0000000..dbd08a8 --- /dev/null +++ b/doc/conf.py @@ -0,0 +1,53 @@ +# Configuration file for the Sphinx documentation builder. +# +# This file only contains a selection of the most common options. For a full +# list see the documentation: +# http://www.sphinx-doc.org/en/master/config + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) + + +# -- Project information ----------------------------------------------------- + +project = 'SERV' +copyright = '2020, Olof Kindgren' +author = 'Olof Kindgren' + + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinxcontrib.wavedrom' +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'alabaster' + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] diff --git a/doc/index.rst b/doc/index.rst new file mode 100644 index 0000000..3a83165 --- /dev/null +++ b/doc/index.rst @@ -0,0 +1,116 @@ +.. SERV documentation master file, created by + sphinx-quickstart on Mon Feb 24 00:01:33 2020. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +SERV user manual +================================ + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + +Modules +------- + +SERV is a bit-serial CPU which means that the internal datapath is one bit wide. :ref:`dataflow` show the internal dataflow. For each instructions, data is read from the register file or the immediate fields of the instruction word and the result of the operation is stored back into the register file. Reading and writing memory is handled through the memory interface module. + +.. _dataflow: + +.. figure:: serv_dataflow.png + + SERV internal dataflow + +serv_rf_top +^^^^^^^^^^^ + +.. image:: serv_rf_top.png + +serv_rf_top is a top-level convenience wrapper that includes SERV and the default RF implementation and just exposes the timer IRQ and instruction/data wishbone buses. + +serv_top +^^^^^^^^ + +serv_top is the top-level of the SERV core without an RF + +serv_alu +^^^^^^^^ + +.. image:: serv_alu.png + +serv_alu handles alu and shift operations. For shift ops, the data to be shifted resides in bufreg. It also contains the logic for comparisons used by the slt* and conditional branch instructions + +.. image:: serv_alu_int.png + +serv_bufreg +^^^^^^^^^^^ + +.. image:: serv_bufreg.png + +For two-stage operations, serv_bufreg holds data between stages. This data can be the effective address for branches or load/stores or data to be shifted for shift ops. It has a serial output for streaming out results during stage two and a parallel output that forms the dbus address. serv_bufreg also keeps track of the two lsb when calculating adresses. This is used to check for alignment errors + +serv_csr +^^^^^^^^ + +.. image:: serv_csr.png + +serv_csr handles CSR accesses and all status related to (timer) interrupts. Out of the eight CSRs supported by SERV, only four resides in serv_csr (mstatus, mie, mcause and mip) and for those registers, SERV only implement the bits required for ecall, ebreak, misalignment and timer interrupts. The four remaining CSRs are commonly stored in the RF + +serv_ctrl +^^^^^^^^^ + +.. image:: serv_ctrl.png + +serv_ctrl keeps track of the current PC and contains the logic needed to calculate the next PC. + +serv_decode +^^^^^^^^^^^ + +.. image:: serv_decode.png + +serv_decode is responsible for decoding the operation word coming from ibus into a set of control signals that are used internally in SERV. It also assembles the 32-bit immediate used by some instructions. During the life cycle of an operation all control signals (except one) are static and the immediate is streamed out during the first run stage + +serv_mem_if +^^^^^^^^^^^ + +.. image:: serv_mem_if.png + +serv_mem_if prepares the data to be sent out on the dbus during store operations and serializes the incoming data during loads + +serv_rf_if +^^^^^^^^^^ + +serv_rf_if is the gateway between the core and an RF implementation. It transforms all control signals that affect register reads or writes and exposes two read and write ports to the RF. This allows implementors to plug in an RF implementation that is best suited for the technology to be used. + +serv_rf_ram +^^^^^^^^^^^ + +serv_rf_ram is the default RF implementation using an SRAM-like interface. Suitable for FPGA implementations + +serv_rf_ram_if +^^^^^^^^^^^^^^ + +serv_rf_ram_if converts between the SERV RF IF and the serv_rf_ram interface + +serv_state +^^^^^^^^^^ + +serv_state keeps track of the state for the core and contains all dynamic control signals during an operations life time. Also controls the accesses towards the RF and dbus + +shift_reg +^^^^^^^^^ + +shift_reg is a shift register implementation used in various places in SERV + +serv_shift +^^^^^^^^^^ + +serv_shift lives inside the ALU and contains the control logic for shift operations diff --git a/doc/make.bat b/doc/make.bat new file mode 100644 index 0000000..27f573b --- /dev/null +++ b/doc/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=. +set BUILDDIR=_build + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% + +:end +popd diff --git a/doc/serv_alu.png b/doc/serv_alu.png new file mode 100644 index 0000000000000000000000000000000000000000..7edd15bcdaca3455d6dc09460ac74e3d3d9a900b GIT binary patch literal 9058 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 DXgp|+ literal 0 HcmV?d00001 diff --git a/doc/serv_alu_int.png b/doc/serv_alu_int.png new file mode 100644 index 0000000000000000000000000000000000000000..0b49dcb01fa036e4c85b70775219ce13a31d8520 GIT binary patch literal 37958 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%0DFWU1%uB>*jC&g*|2WC?U>~SpBh2fKFm2t zWdqi=w$W0>ILCeQi(fRx{ikYfvHe&I`tgNztJ=JJ8eIkpNn1h^euV$kFeLb=q_kjM zB(ce^$`jV{y>!savcCqtr1%sf0>C!Q%V|{hIUQ~o@?}WNCt$u_Intu%O&|T-?0mg! z*~6k0mr0@VT|0Z$SDs z+2QGqCiF4gnF=5}4uR?>TN&lX^3d7f6Z_m_WLu=V5FUj#K!>iraiwV!~i zb{_9|A>+eipyVhwzE}ZPW6Ou4((|2HpAP*r@goo-0shf+h`uTElhL;~_pGBP!Am0Q zZ>;P5c&73wqZjZK9Q@Pg@UL+bZd-f?{jUK|1{}eRHB9C^b-9I#5#QR>e||`S(WS3` zOn0WFVd%(%d=LlyIxT7u+^T_w`Vw;#Sy55ZdNZdKBeNT`7o!y)vf1$DtO#(=yifi# zhnETX-l0o@fT+1LQ%p&+F4}#w?)h27f$qI0&R@&?w#t$pzF*9DS)wnzRJl35{TVmH zw(pNDAWzns9sqfA#SjqpL6jma2FySx#CY~Bb>}?A+s^8PwALSFhy5Vcen`ET(^gkn zx7x6B@!8N*Q+~eR>AP%XZ>}Zxcziy4Hi(aieV$xezRzj#65x(!tno;3J=Hi8BrXt& z4@_KSRsCho=+sReLHB+*jP9GY`oo_Qz#`}7xE~nHv%H@@SIJ7>*nmy8ZTH%}fPlJv z&&6i)QpVO_izVcO&4wb9_usbh+Lue5$GTo+_l+C~N$Bc6a+Fo7W-Sh3!v2U}CDIRv0L^szf zxpfYC4C(<%0dM_;tLndD15< zhz8W47EBVxvs?s8Lc3a}gM^xAoNs<3s|2)B&8?7EB|VEENx5#n&Isn2Pd&`}U9{FJ zu0SAf7~~`%cMIn1+2pKJ*@vFlFz7sJ1A!QD)-x^muzsGoK)1@+=?=BJF=q@UY3c8l zR*v_2j<|UCt^Z}wIPh(feSqiy(2KQ_nA#Pv$obPlhy9+Wj^>|^m=nXNKp+cN+mJ1x z|H6Ut%PM*4M`KVR3GFX7r>rh&`P*3d`HI}xMb_#3V~pqkg_pIpj?j%`}^8cJfLBt)UUHa zit_`$mja8?@dZdg{vh=ifDrW%7|5F!C;r%+V<{Hzfh2nbXdxC8)lR7L*`LG{{kvw- zChWmz518-YSU2LQBBy-eakCT_`FO!RpwVodj9726Sb*=<1WCu>jen2#af3}WSn^L? zfTkk|y;}gXITA$Qm_g9Rj>VzgzvOUW{NXl4H{KrAm6?${84*#~3)1xg06SQ(n#xi# z_Omc8t&dOay;K_WfoI|0&#GVS{<5)kI$$Fp$HCVHJX@cgIqXycn_c(0}Sjd%-6jRRndOj0eo9J{dgNTC0#CJZKT_&Ue^kmq?57~y zeY25%`hP}r4ix_S8HhLxm6n8=T>bw2m%L-wZZ6L|KN)Lbfg+`^;v481v zP}Th&?;BNfIVj#P*gB0)itirx4!9m#H@~sUwCcYAmiSW8?Q8@AW4XknqLu2#3R(&g+DFS)gEwngsFhTL+{KBnMv7CM& zX&p8v0AtP$5IefAR|7ugsPNppc;K&d8=T$xNYcznPTKL~`lN5B@mrX&H7j$Gh0 zcS1yrJQwwh6W>UuQ1a{?XIH(szDEA^l*r=op#sM`a8@4feP#KE3DD)IzntRw3>ct; z_SG+WdUciIlIiOqbIxB^69)%C?=#L_T~@3zr#mW^L4_-tF5U0il+l{%-LnC>t_eVs zJq+;OL!glt0-J&O{i$)_3w-ge?F*q}8)9emuc7`2&yJY5Xk-@T;K76JEO>Zl*?S;c zg73AEEoybDqk}_D-oo>%zN-M96Wm$5-f=&m8$YB@@rWuE+a3haq4nlw<*Q3UvsO-B zGaHM=J{r6d-+O*jZ}Y=^w?U5!Hvw$x>|Or)Il0^db$CU`;)cVsuDPa}B^0X|U+uZiPfv?a38;fn1LJ+EjTMgz4~}eSr0O2tXo! zV1>rsxvO!z3j=47RA*Pgo#`Vz3+~QH5Q16VJ2wB)NsH~;NnT%;_|w6(ecbQLSg8Sm zm%i!2wDx~N0__IyRh*gbU+{TA&g?0EyT$IO$pk=rzrm2(HZs5i_Y{9ziLruHBaCHW zA`&d5=@JVG=IOF17-+C}O6@*t+Z%{o*B?-98%>J=$;SDPt+4aFmj$yLe*XRj_6qy5 zEUAxo<_)@@3R?ELium}>AP zA-gKT^vZ!I+tUbW;G?F=Q$K*p_z`{W&2F^;~#b}4&~)D_JFLh+S&AW>`oiXbzMU@&HtC%;y+7@^n7Ns<#mHE7p^YZ zW-o7VdFNT5nfUqXX?z`!`?9gR8uCb&^y<-DC)X1;GKuf;A)eTCfI1Yp`xPxKX3#P3 z2$W@C-vSqj!W!j{jw{^kexYM6-y69d6f7t}(yd#1<&V$T^3BWnrvEqhRx3AU^t8g| z7o(4!1i60;?+JGM`>_Qe{U3Y*^q|U?ic*`s9?Ibty&l^iEv`#g+I+sTJoQ+=f`VBv?&mIgDi^T;cSc3Ab=y{xa~2dN2?(MBDj0}O5D*a%#Q+jaLJ zc31i9(m8G9eScXIz~4HrE25P%xhY$VCyZgaaXC??k$;dUR_vouHqo zprmH{9c~&rxcYq=S@?d3zxeDUEot;HM9pp>iv?T*KgQq;kCv;h2E^4{zT1iM>e;LX2D! z!l8JdJawzTfw&@-#}e-wT}twOt4BWJ;l054SKFY^{!5FPjB$T&MR{X4VU`VUR4*jN z{NF-nwG2Lt@xNPK-rh~%yabr+xscdit1A$@Q7B9i0J(FuGlyOM&!A)0{qC` zf8EF24JZlzSaj^@fU?yH;FhsVJ#NNbP-IguV;^0|^plQmy@)G%TQnYglAA506livG zX7g3V?9kVfe--$;yZ`Y-eVYFTPRjW5i?}!@v5hyf`UTYq8yg>Sd06-UjG=%`cwc#c zmqSkifW z9^W<;TWa6dL&6#ZaLgkcn}&feFuH)8QZ*{!5mdDKyElD+QWdZmN1$CqxviF#*0~cU zuyR-+^EnlM^uQUCc_7KBtfGWMNGC_D?i*OI@sNO|>VQ#+j+3*kGVYQw;dQx+`pU+i zn-B%S#=G)Y5iAB^x<)ASHqAW|#Ae&{wD8)_rb5O?+wCqzqJ{@~azcO9)?iY@IoqDW zv9R)wuKpf4Oewdh10Sf}CWPsMf+QY_w#ki|_agoN3Db!FE^RFieIf`7DK#wp?)d!Y z`iQi~2FNQHDxpS|02ENvOF+*fI-;oS-vTvwwXCC;zq}xr!<>AiQkb9l_ru!NXTX{h zum!N(1^swgD@$56w0& zh7!zwpFLfkZ(XAOs^If=GqwIW2x7z*_pjsWc1~POHNn`8f3KHHx%QGjY~9T4uLG_u zU#dfVSDTxbpgiZVtMP>~e!gYvObENWwnTVs?Ah+7wfnCxJ1MXI zMrdZghy>Pe1PA_Uk-G_RV0~m&f{;S{SMfNk`>M9?Uza6O;JYdp?5pOSK_&vkVkZ(w zyRow=AK8@+N-ygFbr^y4V7HyKW4|pBYm*>sjZF#d-mM#>kr)=cc8y9PvWzGy!-UdXVTIHHYXs$@N%*%3 z1R%skB3PJY+4Q`NoNCY9d;M$JGb6WkyJX{H`Snq4x7f{%rDA(ehF)pnX)h8b%p)Ln zM$?r>Ae%Q0fG(phE_4NrGTSSwszym&2bL6J0v3B3=+k3v`|oy2*1 zl4)pYG}xfo37Q2@gd-91F8W=@AFhxCXSd>c4yF@&4T9%`xe63=y3hAroM+~>2fdQi zK@g(lInKo9)e0y=+)F!bf`llc4?tbey96ygY!!8YE}3jpC=JWZBp_`gyCC;OuvEaw z2H~^?@Uj)R7TFN%Kzi$min&2wa<&%KD`&thgIHLwX43Wqt(7Dygt0FqM_Qo+!Q(DM zPlX^j$X*dV79gZp2zO?AGjj-&!vF3q{qxuVh1dJv_@VK3VDewD3Oep43-AUgdh9>< zEdLDzSs=hF^eG4r_Lh;oB=)2p(23Sfsew8RAV5CMEFXG1y*X%nIHN6h92RWx@I2~R zwPh9ERy%q|pbY*BYKok4PLg(0-4P(Jk2i9IcLX3KSK-?17Zg}uXotR`1FW7=pr@RD ze-DHRpa^(^cD7C4{TLADbIGlar$eNc0=YilI*5Q3uhMGbDHwS)A$!&<4h|2$L0Ew) zUl%Q4g_=di0L+QH1tmgWYdXGLf*I{u94ka$BlfpwOr`^SpovK!?% zc(foTURO>?jI&vhG(qgYTPp{Y=ccslC#7i0v(d`w4{tSR$EPUPm|^;rGtYMTu~T6@ zS>m;-pv%UT-=1`Nz`zYW4+P{4Hk5!oHvQrOYXqDrd39|L#tv$Yll-vy26*+LCIssX zK$p3_4>jB13mFHqCFH?c5Xie3Yv<~xcgBFEs}6o(4x?%8n7kx#3dHhURu4~f7aDxc zy^IstZ(M{U5`;k(bk@7$uyyBl$#*4WsD9}w%*u9~z%P0Q{zqjnc?d>roxk8YG9&l{ z<_BFEBaL4}`j|ri+fK>Fl2Xt`AL+rJkt?=p6|-!Jrv}ED(y0fLM{FXUB7^zmuYD>m zdq}ITYTcZ?Eke%uIm#2$x<4E>4(!~s!O{2fpKD$(4^BWUII1rQ@&m=StZB{*W7i2X zvKjy*3qQlrb4yDmufv*P>nXLuE6tC2K!W51ZV9jwV-Q445S4NntHOxWWsN=5O<30P zbMiR!9hc5n!I4W$Ylm=pFu6;Rz%)AO$jfg6R zx>psyTPr-#RYMc7l$T+_2N z5Ew{oK5F*~#{dBL-ufZfNceL<41CEFjorR&maz?eCjx>(SkAqy{Moy)oPcsi{W_AB z?-a~OP4Om&a^)~Io&a|T8N#ENRk}h_E}+o%2U5U? zd|S5?K^+(jAJ$Uq@cGeH32lAIO&#c2t_BoSIrvOq>$7Lnf$_x8j>2cZe!Pu3u$=gr ztRKy>FUyd%^^%&p^$vk3<{D6S0!=)3?U(nXY12MO4+)M4^-rXYdZt2^Yumxq2EoA4 z8Z^!O0MohdlV46zGbkXjWfg_a0q^^)%q${Z7B8*02qZrYPY1i_G;i0Ia0$~Wmb_1T* zp;-U)`EylRyT20EOHNdQjPT^jl%o{J0~E!Kz}`onkWV=^6E6vEQ>N8K^9;P;=pHvN{& zHLXLKY5+3No5{JD58!VHR0|D=k$OuZ`wiG7-+?Vc)aII*-Pl0|aBVu|!6VsqdB>;u8#9a6i2ZArlG#3eASh0#X zas2$#gn{FtnNkly5pN_Q+A<3^Zc$-VXJS>TGaXFkK% zg{Oa*zvkE|JJr4aZ$l{u8_CQyKOGHSvJV^IC{;3^M+;=j`zJ||NYMfH#nnj~O&%md#u zNl3uRX;jEg)d1*9%~P|pOa&vTD_nECKJNL|sqVtE4ecXO3}G3LT#4Q)K;-Vnpv-LP z3Zt?r^-oJ|V+**q1vW*?s$IiYt@PU^uwBCozDG|N-0Jht*NwgK;R?!N)xJ4!`Yl>X za=YK!)c^D6J+EBQibvbV zHc(cojkmyAugr-67Y41tpQ27ql&lip1C#dNUE>FxytoMwPs2Fyb4Bgl^pAX zCmnAcwEgj!St_9&wQmes?z)DG0Fhn8&_NeTFQhOiY z)NT_{yPPcj_eOF~u>NZ1@I%YTP77lR?c0{fQS#gSO<4XVfxvR?UXdsP?!Ad)-^Rzd zOoyUbM-yYF7syO=`SRurhk*4|%=FalE441vZp#hlHoJgSq4!o_&+y4w^Lb-EGa6K` zcwmZ@*kd5_kKYEHGH>RQ50yM|P?||T%~k|uS_2^kKqzzssG&rEn)*@J$kT1qIvN^} zIG6h#KauJEZ8{M?Iab!0WQo@BjaaHG5dWa45-wrI1{ocQriSo1o5S|{tv*Cy3JA7( zyUM#=S8u}F^jV&9){TqOI6`XPW}8`5JyhqL*Zn5sE|9Q|Qq{p^)a;Y_Aov}K43a&g zR$rmq7`fuBl?-}r1Yg59ZxY>h3is6D7cWEH2pD+mUu;JXg`J$0#aDeQYOBvH6qXH4 z0LN&K5&Ps_<9J#0D)~Oc~?kLq56$G*Jo7w|*ow@vjV*djU zW8CS5BMKV?0lDcCQl~qm0^w`L;p%wDM_36oB{LqWx$t58L>Yu?9Q;YB{DS3wa87`azr;WKV9S+hTx$;kpwABv63*Z*Uu3c9_C)=cDXZLr;#qWBC znRi()0YDH7#i^9xqdTIcte)r9+8yd9^I`m22)=GBS0}x5qI$`EHnTj*hPZ!E0LE9SNw*>dIW_j+tzkNLopg62xilD_E%D{0c#wBzdKrYT*>D zCGV|FP474#ehb*^s;2^nY%HMGCj`m6Mg&Ez!VZPX2oc5ztE#8Wkz`*#%m|uqL}@Fm zOS;Tf2`AqlcyY9OC!z1n_9*>wT}!^eKFvgdFYxZ{xPqDR)Fj*6>7~X zC+|2NEq%}9wsZ6J8rS|4q4F+ymSuk0fmF|t+bqH8x;~2Wt%Y~nL8vKiE1dpFJ9d&| zfK?I*Fv;y3L|>u|6M(tyjx%kqmFsum7+V~P3;4A2e8G(3k5q3A8I9cmtRR+2JkqB| zz*ly*S|E*6{zNRKD`Pj5BHe63e6t|y*4NuQJBLzd1Pc5Zm#53Gb#DZ?ttq?g=s$f? z>n!0U3$JQx5PPJ<=edoH`fd|Kojv&9HgjHGyY8pv{2g$FxS~rlI7MsPaG#@3kaZx6 z`7gVvk`j9j^3gMYJD(d>n-rywaKgDH-Qy9eF;9@<2XRCHb6=x+;oS97|zfrR1()eioF-f&MTjD zXOISrw6r5W7N7=E{@M-TAonedn@~Kzc4?F&!a&GBP-g? zFkcs=JeDR<;4ua3sV15N9JL1+3hO}Vvsfd{JpM#EG^>Bl(*U?ItH4=$Z)xS;Do1AZ z`3(kPI+Da)pz4Hk9mt*yTy*95Yl+IP z0gUF^lymzl&*xTXWSg)TKl6Sz#Ster+54W8(PS4j?{@Tp{n@jr{p(jUDh-K0_%TmO zaW0Si(DGZ^8mHpz6Su|PnjI0=W9#njTa5^C?6KM6*`is20JEe+r)2K=wu(U&7-{AeHdf=vS+ClUE}0}Pj0!bb(R@R@sy}E zC`d5zs+8FbG80^Xmw0??KQ|FYoch}izxe#m!%C-){6{4oz9`~7#k-jtEmX1-JQ4_J zMY)tYEfZiI83X;QQD&+jj>l>>fOl>V=$ME1pG$o}{0$UzFx?MUcJhuZEGa%jO-p#z zHWw$!^^=ny4>(%ND`nsWP4`@h#nYY+)VWsmjE#w;OhpCD6c|Fq@>v-xah8RK*Mjeg z=^iE(Y&?OEmtW(YFWcFDJS49gbafTa{^(hmXbF|-oa}TS4iA-C4WCNeG!8<( zm>qMVu%#>$3q3`U=ZarO%qLR*dK11AiM8rn|ILptxu7zR2uP6=#3**f{yE`t8yG$& z`Qm*NXRzv$+tH`KV9`(p(W?#StrT20WOFwmm(BJS%lq8z^mBhcMDK~{`wVF^lR0H# z1=C70Ki{N}gYR>?q3iNsOSB^COF8E(=Lzs|c>~71_HEZg+F<&50}HJdFg=4pL#^m~ z4OBP2+qD`F%iBWA96J17KePIq+|s2b9tck9+_>pd`-#j}cGLUiY*IW_4=G4bD7k#o zMmZMrSRjjL(u(Eq*{*)#vdI8n;5~EgP=?R>Npl3MAw@1Aqs($$caqs43>~#+v-h%*~b=Vf{ zXOda~`w5SNuWVYaB!T7akW1+Iop``yor(&tvcQHmpHGm+fO6+81e4fAj`TnJb%%B& zI`0-r(~M=H)Xa6rRCDM6c`$YvxeNZ4dCFIwxeS3R@xknEcY)|WND|l`f@FyQ=?~#i z$s~24hg&>G_DUiha{5i@n|hc;pcjO8=z*Dp831){?}Sglz6{rGhiYz@4#x*;-5GfF z14N>|OfQ)6_&RfmK*6TrF}3$M;D7C;J~SNa(WNOzY;14E2bR)N<#K(QNa zg_^ureEmc3}=1 zg#^5>;h~|rq&E=y(xH=dcWnZJB!6-k?oR&Xz!+j;!M;ve;=dZ<0jdAc3H!J_IPj#F3e2z^-*w6!?;ePvRI^3ygMW zD5iFS+k`{D7roShHd02})LQ;j=u*shS=Q{?J%pWiKJ(kd!ciZ<(~0xND|+!uq(P5i zD4dO;xC)=O67;F+l__S4j#&T-q;9Ej;=RA+@ZrOVGn_jdM@9(bDLZ0baeB}I+Fm;Vx>is!<+ z+h&(3;z3@xoUkE`k*c0DKHB?1Nh%Pv-ve*7kKc|C(7~gxq?wIm@uuiByDbvsgtyM0 zIDBMC*piVc@UZLVM@+!B6!(1!Whr9N1*=zG`s?tk`>Y4QFerI*+h6FuipOWnta30o z?z5(kw}GqYR=?(pUyhYDqQhDfe_oO4K2JXA`zm>MFidY}$tGc)mQt2|i6X73L8k~P zLPrvp&ZfIHV0N0NpY3pR8&<<6e5#@UmSK1DEa2CqpC}X2QBElF#%v^ zI{??a+O%va5ycMO(Uu+TiLE zE#a{-6I0L>y-sH}haH@DZ~0Sd?PRN+#jq0?wWOS0bH{JC#3C-vp|CeWW*40TEznr!(|VdfQC z_5JlkHsC2sQ%;-fOA}y8bz4p!Hm?YDz5(;(;p^2;J#Hu475F64pQp=CGnkD z^V>H|T$rm+m~7gcH#P5ahr%?X zz;{aeXIFkUM2Qxt7z_;=2JL-c&=7I)=+#ejs0=p(EQc3|UfQ&%)b|}IcI!iwe3eNj z(~mx_U4m8|6IcSYXfHh$3SpU0-faWjQP%{p{yP9td3h0^1v{o31_6Q8tGxIP~=}D1?v&lkIgUoC>RMvY9#?9#{mE?^1-(`M+YnM8WXZ^RX&% zVQrmVJ_yf8Z!7KJb_Z#{UfY27#+Htkox z44OSY;Jl3V{Nv9@s7&1+b{5#|Ile@?tUfGGrH<+0Qm^LlpBf~NTy>Fu`7?^^GlWRwr$Z^4M69=uAL)EjrlVh;)L7fL?4@1*e2nUc>8@|dV4YkC!BBO#?d$dCKC<#}{LH(Buaz4meUs zLOBnWdSV#W_RAjHc!VtaDSA4+8a%TQfs6`^Xgri-3e>5f+U`Xqk0D{g>k`i%L#lf5 zVrVA#JDW_Y{keu}36<%sbJ{v*|D5&;g`W}`|DT_oBJ&eb^!am|M&mi6OcvmG$@d)AI$b<6HwbMG|L>W2DoA(#dtkAzX;sWt-1?xfl4ei zcT5q{|8T_%ylBc{^j~kiWb0oDekI4g0HfyU`3I1S55OMRE=BtFGzJo~S#!P?3Ve>jZ;woj$SG*_{CejX|+}r?>O$$)P zYpiT?2icdF?la1NCgTg0w9xg!s3&)jf|HL&4Vv}0X}iv{I;?N3PGzU1rPW-8V!>C> z@M<2~lT$|kpmbgy3=t?~)Y%84gh~;U2t|U`&hy#UhCdq;e19IVPk@4z*cwWJSzxh) z;7tA$z{n=K;_a9bXyRQt1(;;hVI!V8FQ!otgF0`PfG6i6{?}=hA6FVeimoknJHH2s zU5(*g?rCax=1Mw9Lto+z;qY4?GP3MCb<42A>a<%2v@!{V{oUMSEZhfW##74<))x0Y z;MzqV4KP+mj5m)ZYGKqlLCND-0#9K0-QFJ}-^r>eqb~(`B_M1%;(;D7CgaXi74ab$ zEY&u0zJ(R@aBb{W&zASbHZX~%KihjgZ}qOZCjWJ)H)H{0*kK*w^W6YD;31nK4Xb0f zo-5(tan76_q`cMp86Z{6Fd+y z)aqv>Vr2dwe~x(|>U)piwIHjAQeUqJ6~pqD6u&knt>-*KL1 zCxAS5r15q%D^R+z0{&T{484)t@g)nUd7+R?LDXlq)$^G@J9R&LArzqDG&P=k<*@V{ zsE!Xzz|?XEH-Q6?GgOU4UG}}Xgb~5MXVUP8)`;XJljt0F^3tJ!_lfOJ9^5j5?ceB{0e#>F}M14spDqvxgm27Z5;nX%Zg8{-|Klr0Kp)$uiP7@@4toewso)F zG9Q~1@z)<<(nn%;0^AZKc8nr^us`LZ#0f&_x1| zM3CDVG^(Si`V^UHnX-4D!MG8}zpumD~>D=%#9+wbUf&&V6rSiB8OJhr+DJ0lavd zdTE=B78YX;Cq~5@GVAk=6JL+??5ob2A;uVDvv$3J-4baPqj0ki(cui7q8l)ar2(xp zzp|LnPn!ZF#Pcc^i$Ncg33!bGT)fK#tZF|%Hh4X< z2Qn#G8@3LsFK*{sAcIXq1ftxmGnfC?s-d)&Xgqt~zLOh-8 z(ogMSGov9otdsHEoOfk6ffw;URWny!jS9O7nHKS-Q=PaUC>5m%3)=}`u2gky!tOU0 zfLPFVAsTo+-(8lvh9`|PEuW#wMX02XQtW{(%DN_9z1X-9Hd>+k@(qXEJ~q5lCA7HM zVbcLM(kZR`t;YAj1h|XOT#m;xeD;pZH+XJuU_2eZJEG(8LX$K```92`>zT9WMU-?s zU%dO{pps7WZ3*A^t5H}Za3Fpt8a3ctGF^xhkq0(=`BMfv3+&zHlOHUE2+9n{%KeX5 zSN#1KsC6hhYj!&B+W+?SX{N1wgxFUCvwnWGS~MUITml0zpO*U#LA0+U?8BhO`0ed+J0LR+Wy;}fRB+cW0)Md8QC|VrVsMsSwvZ0~*qczU=!i)!N1o&*|$% zk66ASf$dta%k+7&cJ_V1duU1Uhi_PBPQYNycdv%ME?Itp`fz9&7~K0VA`SehssCu4 z-KhxaOc6|?bh=BW;XzA8=e{Tnc5I>kXcYbv73}fZ4YhJpuyX|Tt?q>u7Zk9w3js^C zuJIqyX@8=|6M6_4b;+Eo@5=%JVtC(qdjzUuAy8TGFm!`{F#%c8`)MgX^62EeQkOqZ z{p9H)h`jCBLkvxUj&#S(*s;$my!NYms*EZrro2TNPxOuKAAry?@-L10xCvgP@YJfELyd8DE=785IQPFBi3I3 zpA6`vS;-6fhJ9m~8|>;=t+4j6hoLCW-zf=Juzep}0V6)&XPZ1m@%o9fSdqu=2cy1}4hYEjW0(mYcVodeZ|Z8v&u4?ED4>*(s) z-LH&!qHF=9z$y<1V)j%xwg=*WaIW@M%5-PfFDd4JksFO{^Yf3M-$;7M6aC0^^|4H` zl?Xm4NqdPA=4AEb-ih1rY)&K`#L9ahj=ONS?tzWx2C8b9-M^kf%K4Jyx^CPjXn)jN_i}q=8H@w##$YJxd3W8L zCTah5=blxg_;k70!@E`-tXh6#fK0?C-ud`V;X#&YXv zX7uT1z#b(H1y$a1NCK#mEmj9xd{_fB?UnNeOelr|F!GON<5Py%L5sg3-#7*8)=%vF zE-)o`p5|hvUxZzUQX=j)oUm^^btHEcY&hkPs6A>?K!GxWLbp_kV9sj`xY584w~aYo zXMo1Kvd+~8w-^Ip;R^(os*UAZx4h#wq%aXJE(XBTK@01d(C#*rV3+NfkkxglR`x1n z`x#u6aR*Mi5z2VSfjC>Z->BfbE2ufzZCvNLUdlMUTZha%3v6FQtk-wDa6mEd&d+0A zFcc~u?Et&g#5Ne+VIkttvHlJTD6ViY); z%x}GPfF`j0vA+0ZzpuFcKoV@Jxw|UA*MoK(xKY_~bG7?lp%FG;Y5>+jre@){9~iX0 zgN4;QO5HDFO)2MVzv`@gwQ+4Mn(?>!exP#aRW)wAr!Es##$V4K0V} z4TGMQ=LR7s6g4p)AepqLF!HK`hui4oHH90Nv98xAPY19yzZWJp4t*d$ba`acaQA?U zYJyUM;BGK#z}jTdM#6194%-pyB2M*Q}$ip+vppW_qi zmw+PF;}A?TP+NWL(}rJ_-lY3xxNI9cE4~4Wu6*hhRONMEyoojG;v*@slYKhgd(dqy z^2yy`V+`e1gB+j(XNw*SzP9UIA_gyZL6x>~X`Dh`gqsbEUs;G^Lkad*3rC}(c}8nIGd`C!LXTcT{&NhoU`M?Kp>j zHkkH=$f&$>&*02wx!zxz=!aUU)tjsShQ_^kkrQoz`zTs8a+jAj#mS6U-xzBUR zS)ku}IjCmo=G3or@Ysh=#nI8b&JkHWbokb`3!H9ec0^o$-PmWBr5^)sH6J4ujST(a4mL|ocnwe~saWSZ>KAlLg! z8&6FlrS|xfiG^k>;3l2n*iuRI;?=IHPQeFx#sg_+L8=AY7%nYspp8+Rqjp)!@A-;T zwMW4B`NgX2sT&vD=E-TWVe>kydn{vB{OKDDaJOjF4yPbF!%|o! z-JyuaIpOcBMnsCEU9-!tH@0*r?8a%y5hGTGF+U~4R^;xf7b2Wz-zVsLq?1u&)mb1p zA(4K$7ll;C;ZAeMABr5mJOZ0X&=T>7)8wh=>WMAz_yMHf^ig<3k2E3K#>e{~e>!KOgRI>n6 z7qK-|RCZVXdBb9qratcyOftrucJ%V%caeseeJ+tAh=p7_o?#$KO?^=Ja}@*D$+}M9 zsV5T8b7TSk4F1a#5jmh>C4z{jb}BABWyI=V(EI6cLBGGgKe=>PFl<6Px-RCrf{N86 zi_?1b-y<(!)aQ;`bV=67WcErJ+yf6~P}}8n=o{=iO7_Yq=@EmwMbgi(Q#A;J@js!W zc=l;L4@o|NF_6h)R$mRppdoc%sF6NeC`2&Tz+g{yz{gKl9t>o=%kb`%wo>lQ4kQ_<` z#L2o|kK3aWndnV#@{Mn`dUo$Cr;#gDMs-4C_rj42!Kd~%{*-iFf6Kr-rdrn#mo{P} z(M=PGF6O(hWsk5&wpJDHz<%^TYSgNAH=cwZoEpzY#oWfiwuYoaWzwvlQMeZ;OK-R{|5(zDQpT8x4W7n z`^5f%!^8vGi8pfkS&b8+x2nhnPjsnt~u9L1Ks+PRJk<36Vr%tWK&EHMYj~D5_do zT4Pb#(^54Qk~yFW+z()pXcQWmv>~ITrK6>;rK_%Eh}YJE=$ilh z(17XcyKl%7sbuC)h4!pa8iPTE=pbPlT0qr7H*IZ*E&_bBqcORBaOE55d+Y0Mw6S?W zpT2>H)**1in(RwwfsQ&_+FIbP4VsWNHkrZ#y^unojlswqBK7CQkUm_5r6W!|)W#L9 zZH|H4!F@Mmcw}}kjm6v$)7H^2)X?3y!4U+KH(E(#9?h35Y}K^_Yx8pvz?ih3W;4v~ z{Iuug7dlRhW)W%$gXkavk-=nlE2IU{%9cQ|<>4%J0#RQuwxHJp!Krx@fbJOdH=|0iML8IcT8;Xq=-zL7Qsp$O<&T66vnG zXe&3gt*bS|Lf^?!8^f@r*<0DeogDp~U??jtmG9(8V4++&+OBkq5H2^^!VhVV*R`RW z>l@mFaRt_7C!Vc~zqSL)hh~pv>0;k2Viwa7h6H7;^$cV1To63fbusRI zYujMI5UiDfyA#!sht)O=3<07(LU}u9EgzJ#j*C6cAcSt=&b73*wnorhxVA1Zb3ftu z<_I$0&(_+PucONe3ih#QAS|rt_SPib5VRW_q3uoy0Bek-h2nU?&|o4s3kYH$flCXd z`Pw*BsdQ>E3Qf|{rt1bGbSNwe#>ZDTARq{Ay&sWg?P@`AbEG@_>NuG5Q4~x7frJR4 zp&U4FBtLCEAEZBp4`Uj*_~4liHd-iu2Ll6LSSWBn1WXG{g}GD6Jbe_A!mv?p zy5^z!u7MW7w~+Q^e`}7pV=$Xc4dQWOdd?&!jnA>OCO8x9?VND_a2pKA4Q-_?_#h1&1FX?*EDN6?zMY;cl?sQsyN9Cuw3&RGGl7dh zI8YsYonZl?F6K5^M~4s!-``CD7uagE@d3guAls0G;Q}0!&9U-vwbi%q19O2>(Kh}Z z9j2BGTc2fNMP2t11j4|dq!++}lWl#_Bsj*F=;Mzzup={U-SKQbgJA1J;JG-mbo?3a zh6ExOj&avQ;n_TQ{a~7|Jy7b(b|wS`S%mx;1RKC{>j%mJ&#*`26eLR9 z&z=pghVC3;;0JGWM`4f^zJ)9Cuh_aCXuQS~xyE-xrJ^l={QS=Ds~`nI>%Z}8crvL~anR*<YNMfN zbR$>zp~K0p-(OM<1%woFsV#xq4;?xrKdpL>rGl={Fbqb6Hq9W-&p$%y@>B~*WVHwlF3VHY4JBwB~=t0PDzx8OnX6M zi;9X)G<#I@>@)M$K8MudI(KS%-5eSsO^l5>biRK5n$u>y(5{vpj&LpZ%B`NRee0ew zUQBJu9-zmMwq@rxr)uJ?tgITRP9JIR4&JV#g8p?Y(49km^ZvbJ;I)uGLCo1LyAeIb z-sK}f*e{i%S-4_CI64J-zi%*W;DTnYpS^U#@LyIJ_610nNHC>gHd@NzU(6qO2DX$1 zy!Gq4=_v2h^*eW{;%kKLx`{w83p?T&X{?ej>9UfE{2v2o_-ngy?iibsKAdbi9U zC;s2BK`$Q(X2%}(cvX+Tt=yfn$$Y(6&`YpYh0G=G=+5J(5TXRJ&g)X5szB4^b*aBa zC%f%mXy%7)C88xLY*KZd+eGXEn&~TtJZtcjtO*zhlXw~-9W1Nq-c5< zmDRT;%z7(@TXY^zS)EGUrh@)+PnXKTm#fJFfuLKjdFE;Cwuy&piTcNM^sy;ZB;u&cq4JCPK6AU!PMm`9rFkCLJL z2g6LOTa4TKO19{W$!j)af0_BQWA9$mydDIxvR@Vs)UYQqx!w82=YIE z%*m*Ec051(v+iw&>k(|Rb?YUdp=*~7vd=0XBEAv0n_5ksn?DXs#xo^LB=XF+ie*Xs$7@mj=xo99%bzR_N*+`* z`{YDI#R+0PkL$kO`kSJrkdUC*)WQ66V!z0oREb1U^z`$th8LNRmcw-algO6h@G{cU zY|mRn(S`E-@~Jgkors?by8rMZg}1|HqLI@(AA>orb5W0f^pSC&221(Gj}y@7!m&@E z@L0+F6(zx&E;c5VKY2Si_4S+Rm|UYmh3t-$+DJp+zK`jLQC_C3m~v^ylYauINzOPX z=un`%9?47p9pzQL1HzI!A#8v6MMT+Xyumij?|ec}e$SL?!%>lF;TQ!41&#=`9qLBv zx9p4O4+@MQnRsayD~kwE*!=e2-dEhEzO0Cqr#3FlK2q{hF5W33^v(H2YNPU1ZMEMC zUq`PjNeze)#IWtJUJ)VTBgY;ZK^?!2au6{+(kH-4=-+MNdpA)BqdR0Y+Y@ z0)Nxmmdf|1Zv|@_F(W zWfPCsgtcd(-k&6tT_Y~eSYBC?1DdIC(FpYkk;rpDS&PQ%&5u)iF%`jCN)8s2o+N~Ctpki#SXpEAJ`AlRR{yy%j z)To1L$5woS-E)J7S}xuwCVrHG%mURX*4ngHt_@E0f9)j4b_SISn`#I4^&BFfu8nLO z-tt_}o8L&~HQu zX_7!c>CjOXG?@3vXee2lMB4$>$LD@J0c{Z@Y?3NTQjE_f0O(4GyqERJe0H=g|I;T%V~5p7S2Ug^`25ar9AAJ6QlaBMIN>g2t)}N+1b@piGaZFg!ZidH%N}eqV>0k`fbhMyk(5hNS>7l9ZBy{GX^pQqd&bt;qqv zWh*sI#@LKuV}~c0lf`*xbyd|t7%bV{-MwpWX7D+!|8evKYFpN>X#!U4Macp-Aj^n* zUSZp|g8TO!WgeKSG>?5*pj%Rp#?~$#E}7rZA-B)q`aAaOcP`xviA0(akcANjkn7OO z(SP>pM=_ZikU#!#Ad_>yBfm(OTvU4g!;bT1u=vQ|9~z3cgEff%y*V%Mz#f=CK2Fe? zXTQ0(^dfRO@O%KFWLI@{_3O!R-*`ey@csLDrDn5~SA(6!a@@(vz4FZ56Hs!@b^qCi(2e}h0iV79HnV$wbsaXNcra2}dylU+R7(?bURfdbD%k>B1OXmkn;tkiHT z)gGDG?UrXQ2Oe$_ZQTKvBkhia2uf=boviaLQV`-L7w<#_#yyzaT+$-4eBqf?qs~QE zYaDYQd`@@7tN|O|wiV11{%9x-U=%C{9H?<5EnwMPF-Tar@F?b8Hd zSNXOQ;qGrDjXQPmBjjDgz@|Mdh333k*Z1qiq{}Cu;)A!ZbVP3vN*9-0{O$k4Ne1yk zeB?`Ph$$V9mVVaJU;iP`xsXyg>=jv=a8|A^Q=f5gYgI%FB#P4a z=vbN&EOF#z(~Z{Fp4VY*rgf*CaJX9qv`c9tTnOYnl2zwfn74PYt0VGR=G^<~K3gj* z!?_&gmQSUu&V1}I-`4{78R4xH4_vyjva;;=_xb0q$HOtL3ti!jPEueK?Ha#+8E8pL zg}0`SDD}o}(`d7azZd^OR=HTi!xW3;=?g&p?Or6!*hf6V0%PdscZkM@e-avLN5 zBoujjGwi27)Lj9kBEvpLwYhJ3$EUS{$&BzVD<1~?4wDXT2FWWA^Q6)`Iepm}WmA!S z_z3lOR(Dwd{k2|p*5p+k$f?NL^oL#9*ExZ0m#m%?M=d@POD-r=MX%9QtmC>1*N!jv zJh?)i7Mk;=%KFlGOx$q3ee+4^8IZ?;0fdY10gR`cz=r!=A|fOek1b|Y_4S0kiCTGL zT~AtC8dc{!SG2tya!a?1M;iZ7`mVe<&$^BM`JG2^)x7DQ@mD!G#b%v<);fF7XOWMA zybN@vr$^awxmZGH#t_ZVt?1_Sp2gl?{emTEg0*s{O+L2HvYymbZ@UBY>C^k;zI0`` z6yN84cZYHp>etdBEb3IR;l%tkUCmDQ^6=*S&{M0XD`ah-rw+X}VW&dliV3oN=F}UV zcCGtG0@=~cAaU^zXWb!3^jl-JK4cS(m z;IBg$H2bzxuBsnTaSRPTtWNlP3ndjKl~&qow70chM%9Eo647sWEc>kKVn5$VP-32m zn2Z?UO1v#MTZ`+Xww~R&{arq(nINbxiGkLLk`7(vSGIL*y-^%D(ck&S_xS{CLVy2H z^wA>uA*6ui`B7=iGh}P2#%8k=ofA+=Roj$sT|t!mF|*w zIfPQmtG_SoygTf2*F9H59+PR5Jo56IMP_E^{objlZ_vWRLUqCfZO2%CHi(|9liq-i ziamVz@L02E-OaKx{i?ysM;qLCToniTP=O>^{6c)u++5n{E1hW&)Zngh^k{mKSIzCb z=H_PFn-cO!$l~6UFTNJ!XO-mT+g(G{{g^L)JxT8=DnNYyRNA&rb2DOAh_LE@h^>As zZ0r^$CYh3B+==agqq$xB7SKow1m^1Z`R=(NtIM>;`2CJ_WsJ;W^ct*uO0sk{*xUm8@a;GT|Bzv?$x*BCL1=_1P&maZ89pqPqCutVT9GKVxI=qrgm>A2kt^{-hskm^TVcVT$es> zU^E*c(oRTF7~cHtv=_4}0fP7Nuro9?#N+W@s(Y1az^>1w9K)JAW9-Zab}ll%dYk~Y61%? zyi&roKJELZDd_RQ*D9x#PnGuZx&8fY&wCW#my^^xs_(uH;M2r2)R~}YT0woKgsJ6T zwu^zDkrD!{ekEGZPExw)x1E=^#*=q_$WVT7z#J3e51o>4`-`Zt^c2~mrn%b^6_i6q z16x4j!1kVIoxc0YQ=1)xASs%`7b3>^+-8|jWx_d>$j`n)d;XRPN7Pdw02*6AYS!sk zxAE^e!ME4M|Jas0x62vwQrPt}KZUFZpri^q^{;1>7w#zlP_LRr-hFAk@0mYuawJH* zuU?Hyk{uEiN+*-=fSB}OgqPfELdy<+P(NPwYsC`4I5avPcj=Jnn#pt6ZQcJkXdZ*2QVKq?lpptsGJ!uKBRzO+}qrvK{@d-$s) z0bX{q9jjlTs@RU=ct0+Ygzs$BksXlA54#$^ zb&IWXh*au@T4d9(q~o(4pq3xN8AfcyWv2|9*o8=>o-�?l~AVp%@0Hel}6U2pu{2 zY~GUlqNn5QHb6Rj)LyKZof&1flN*LlkuDzvRLaD|vAsR3IoJD5exrA9FUXSpy{i7X zv+`iy^Q>m^8ru-SrEX?stlYT|%6Ou_uzSoO?`23b-_KxI`5Bh7O0nsC@258uoMYC^ zcVC?jo)%Ih+L(v$!_`Iw(BGWp zsq)S&o@| zmYjx~bIi9YG~BR=@$0y0i+6A^n*<2WHKowy?q7o0kyl*>I9h9lVK+{-&2;TpZeAV$ zuZd}W_lV-4f`9dvRTmHu`Jc=8_Ekb{c%?fJ1gME=@Swnl?oFrD4?!SjT>eAtADTUH zvCd74jZI8AmC$K4$Ij<*%K7G}q~@=Xc|3j3nowu^)YR0@5_0pM1!`*sttnw(H0dE! zPT9mxNHT|oX9`(n^M$4;&uZS(U+2$ndb{lI>3O&4ewJxemWFpNBcfY*eGzR$q-FPA zfBMw2Dsr_7rm3o$69=u_ng6CP%5>{)ou_HC2buxbS}+gS*FP+H6J6dinE{@(7|*p^ zpt^Vq$>iM=(v=&uujsuYs(w(;%sjdLEm;DLj*WH0Rulo-T#~wMF|M(nK@b6jk$v=q@ zHMJwrEmzAI^8nf126~z&sq6wS0#UyxXEN2V(-eLlU58f+Xv=F`y~Kb zE!FBadGliDmde)fV3pae4WcCySq-KZO!&Z)=KZrN#P@gq4+*_;r?BQ_k!UFhn9?)!=eVNs4>^_0jGufWrc zth~E-?_$rsGo5Xj7GLMj1#{QyWo!?jl4L&o!O=RWdG0_wDb7wv39(&b ze0+QocDB}7K0bZ|_(+QigO>SVss$gPND&i3V1`Bok*P#J6`0lLFBPZ`i5|gJfmy3S zp?+au+JR)hV1{34gf@-H1WlknlpaV9A`=5QX`nh#9W5Q078LHH3sr$xz&8Hr!nO7E zp&py`e!)cAZ-$O^4w*{zQ-Rv(YwG}3ssvqK6__RXa zwG}EjY?FpfWJHkZv`sQys5V?1w%Ngq4kK>11`^ri0OCd~3;}fWTM1xJ^6zC+EgVQX z6n6_c+&ws)MhysLIvZ{>q4|aWX5tK1t_1|$V50947DzF$)3dPyTCoZ72xMY#_H?QN z8j3c=`#W-&_#l5IJOJ*9w{s(fThMH*02wMQh#g5m*ahI&hE!CPB^2)H5@BcQ!ZhSi zEHDNEmQid#r2@6Iq_cuTtT2>F!$^xzn5|1lm<8I(0O1%6x;+AER4U!pg%hdEaiKT_ zhP&X5C^m3+WRxzG;DNw|>3G;iVuSG>NQ$3@zB>hNX@#^V*rJ_6{a|DpTMh#ep%bO= zPeQp`yE57O))xndMq7x*C;n5JF=mEK%ip?BPhZ_j}wfgMny*gMurA<2KHgk+)xCpojnJSMUnLbILt^Vn@|h}3x>G)p)8ng zh7>4*?T?ATx;p6)5jr8rkPu{$ZDcsjh(loDXu%A05Gyjo3XgTB(u2du!Bo5jJJitt zOLst!tv%@WMveh`NEjBJbsG;DCJ<*&vf>~uSb#r87p7z3XGL>20DU%=dJIdb2iDpE z>mL$f5R9gSR!b+GBa_Bv2L@uP!ES*l>mUTdl5QCoY0tEDv3Di8hHM;KsvVZ7-x2WOy&C^VeL42nXster?qvImFZ-yP6 zL$TqyG(SUXpq_`dy^&M6UUZ-fl8w-}VFl{=(cv5qY&6`$$jKdQO%BDOtaORkP+Jn! zFGvp?5n>eV0CS|V&~FLMYZw6h9ov07rHPr^nKj?h0ps zZ)S)Q%Xvcu7T^PP8O(9DkH*v8^bP2GRJKEKh^0Hzh=RjM1v|rCIVfiY0_qG0hHi;+ zi}vF<+PgV~+v0))t#oaI{Rlc(GJ_h1vkn7$iJ@>TT}gUIdM*(Zwv!_>z@DJP#Ct?X zN85&mgoF^WHuSL2P&<8$5fV)VOC#%(Lkxr5gMrCfGLd8#-AF68A0tH1kO~@X5cU?Mgglph@zMvFi*pw4(5W`Lh-xS>HHp2pI12AgJSkE7c;Q^*Vg3l`?*5^CV+ zryD?o+2iyab^P^QjDmur=_njvVhIm+vD34{y66Ym8o8q5fn|xs5S%SY zSO+@Z+Fggn)`hyev2hVpHjzNrrBK-}`qor;7S4$Tg*gFXT_SA^f%me}p*w_9;88{t zg8-&(h@ow`fx83To)ruufKIZWu7SNh6T9I$jEo#?4e>0TUO1Hz?nh_hoRR*R00zd! z5fMni+avTtkyss4IGO0^>|*CYcDHx3)Coj`fi_nD76cSDoQPrB>oM@SFn?q?jD!of zg)`B9Ff=@pMcp_81_5-qwP6q=+L@*k?yBRA4+=%1J&+_o#ls5Y1b4+o0Df?L zB-_9Oj>ZN+gWQ05kZl>dR2G8jhl^sdk%3_r_O|G7MZiAY11 zy`8PTlM7>Gk7+tkEXB#%&>;kB156yWI2*ETS?ov$Bb*h~njK>A=pPYj?H3MpL0ORO z;FiJeenfhxzrK-Q7}JmpkHq6C`Y5^slpV&=v-S4?LD3RQ^>;#ZtY}W0u#KJZgJEsK zGCB7C$S8kDdrmY4g>*9TKsj3Bs3=Q@i<4m})i5X$4jeBaGho9JcnZ^5m*dFNCk6!> zInY3Bq{T+mfo<&Dzmeuw*a6SKqcRL}HR_}|AD=RxowbEaRL-|tDQDTS>UCD(i~;|7 zUk2tM|34m16&B@tU(fvDuab0E?5iyI0-rANpk+{MwTta|eL#!GF-EkAGHR^L~sPw9M>Dyu;nZcZ7Vy5sqvdF5w^skZj1pqDvnHAInuxE}umbmn1bUDS{Mk8soJuEK-jh339pT~rU-)(37 zl%2RX`w^y0kXF5AV*dC3?!-j?KH{l8aLen+jKXWz_I3UF(#Vk3tLlAE)2-C|8z%$y z>f470wT1H#PZyWK+j~Uitf62eA~^UaO+L}m%WJRWMJTbmu2m`F=+EY0Le}W$XvyOD z@83z|op(yeCcK)2$F^{3&E!Dmm}3WFLC>$cc}FAk6TbCS`v1V&+lwQRNU1hWc};?j zW|G8l-?;OFJg%*9r3i`f{i7Yq!QqCK>5qr{^!2q>y|`s&cz#;aijCABBjx^;=_V=H zxUzmoEn^hbb2mW5t12w9v(%?_N#U{EzcXrUzMo21U&&w3guOhJ7mLja#157~8l?A` zndQl8AGJLpxmRX(e0*FD4!?Nz>{-&{WS<3gN*H?Gb{A7egvVjKoCc2wOs=!gfe&mdU(T98^^% z_^RA8d8h}6!z(CVC8x8ur`8fJ${wPCHpr(GP1KLOxhKB&BQzZIO+0^f;aIXTSBMQ( z|GAvjcO*RV;ceG{nvGl(1=|8VmINS+;sQUOmAKyvO4-er-CGgVe#LS2(~Ir1aeeM- z(Vs2`TPws)39PjlCS#^|6n7e2{4Ji|P)tK%K|yt)`>mVkJh{@o(yC!&+RPo1%a<-S z&lTZrl0H5;Gkp87kWXYMqcM=(e#K;1+e2)UJAdENCh?bGe2zUmJ;3+tkVDNABd15Oo9sfgzKN z#@EUwxuX*uvoyDev6rq}@KX(t*a&*V-fN68?U&f4enGJ-UJ%ZQz#W^KeDzmLL9f*P z`g*V416ONmJREAp&rON@{*m-<`^3v!V8XCrMxx_TUa`QxU5Ct;Qa&pVwuaoJR{Q8ykQeM9EP_J`V7-M}8dCdzNy@6eH_U{e3x;Rcn^Q&!+|WsO&bN zO3R#7+-_wonIn;UG}@%j)cbI$5}ywk<&mXb5Bp1f=vwA6q}=q_W*?soFrbR649y?x zPvyrTZF#N9{JwIca<-0rL8#o6XiiC}Hq0Alvcf%NJ9m zTvf)-!BPHcc~LndvBfh&oa_$uY@UBJpC~xIMv{wdfaKvWKJ*L(IvKxIRK?V@rJ*@ib?G7^4X zPnP$IeLXEG*rYJhnjy~^Z5-;CJHT6UecxJDu34VwYw>XUsWR;ch$V$eJCa5JjB1=+ zYqhI>0@NShB*9txxpZ4N@5-9iHX`wTg!& zI_wy}=SP%k>+y{3!p6v!VG4Jau#a0z?okf)7O-*BSenicL3l0J2 zbbQce`JHp&Rjl)ciL&iuS* zd!>t6{|7=p`H83J4t+@!QM{V%6A$mbEYJV}V&v@a{{Ed&v)CU)2BFpO!|^h)g>=LI zt3Q9nUNVh40@-Z=COUzGv^~!??yBaRB&^l_xSW+G%(Ic+lm+<;;_2$Dq9}0`i?yt- zuHLbGx4nXb!f-unyc6T?t$4?yGPS(C{PS>2T9c_b&qfXm+ZMvRVjOv@{NBByt5=Uf zVX&g&;^*^Mvc&7Et;FeVN@npnK`$<;D5l{sn0*<(7oR;trDkN@ymCeH>-hNf;bH$H z;lqDP-x63%%Q21PbdM=_KiN>JrCK+SXMwV{z53}>kZ#|=z~Mp#y7nu^3B!u4vGU>J z;af#TcA61i->U7>56L{rosZQF^Yq*eG7p@iV|w>C5A!nKP>(Xk?eOa{AIN=0QT(K6 zfp5ltON#1X!7q~=`;T57m86rj+OcEvwb{8BE_{}umi3%a;A#`r@ZbMx#9(naHFfn= zl)Zh6VY;z2bvkP0Kz^1K&FuzywbXV)0VrPQyLYcM)o{##u871d#&fSc8t&i6yWS6$ zx6lEsEVT*!iGqTH!>pJXV-*z@42v~iMpW(|3?E%6F=ehf{qQ`aOsGDP$qglwF~l=o zUS9d*4=;;z_jOyHkc@ued(pQ-3ij90G6@NZis;#(F1<(^{lopxZm2XhY=}-SkXge0 zW>6nJTlhJ`By8~5g$DMwOHmJpL3&zOqr8(#j7DG3NnDuh(Du+{Ng#((eO&upq4Cip%dQ7IBg0Awce#(#cO!wqc1$Hc3}4S$ zxVhh=jDfs`+{R?H-<(ykx4t}fMxgc7-tDvVN3V`an$&5v%WKc53TU4|Dm=ep;`v8d zEZ1@0s|CN~Wj;@ZER)6_R9sAjfWz*zOXMG<^0%g~(#1DE$Jy^L+E6J!Pq@?cx$+&~ zXp!%yw;pQsG-=Q{gGX?EM5I>uhyy!5!UtP4ZOcr&X4R~UNv5kQ1~s!X`alouj9OKw9B43ATaw&Qu^BkKVh=aICE>R%DW;XAaEiE zl2|DPGcP+k%*x5jNEO^LW2*13W&QQpyU4$6c*FEMgm#lwbOa$9`)*V2IO6w!Lm5`% zD;TO2bj(*Jpu3Ozvv`BsP#{nEdfWwm?)k0Zjct4ylE7yextH-szvu+edgkV3%iU`! z!se3T+%y$&B}D$OUB~}x!V{z17f+vF^QvXLdui$bU%27@{HlF36ira_+DFT32)+V9 z4aa=%2zo*O^^Up@W&f@Cdj8x&T|*Y~ovzI|Ku;KAbn zl2J7@%=QlmP&;tI>OtA1OS?9z4B!lP@5IKxxTIeZyTnLMOS}H&4VJUm7pbPNfBtcX z5}L(g6=n-1{&u=m5Mv`F+bvtRyzTAPEL>SxY0--qZr%bcKO!z!D0+F0JX2F%es*|d zr0C|&6U)oXx2meTDT#G;`w7HL1u>(~WS2jlLzA9g(DmO7WXD3YO>G`!T z?-<9rpf3@KD$e}vFT`BYE9z;-d=H3c`!0>mZ#W%!YDkETSOssUYHy>5B;?)5J*1DBl!))vfO_eHJ?u1=qL?_Ztmqg^mFGF9(oHd~jK zFxjh-nQP*fdF~?o+_Pup^|Z_QB?Sf8qXwmY1j-p`60v&cwzP@YR7NzS!fc>QEgupy z+$@K(k9nf+<=v3ulox+SSY)@_K0kqP9~PDT<6~CXHS244nXAh*T`%{GRx>l}wk9U5 zw_RQ4EiK|j4;CZm=1Vj3Cnw!npmnEYHQv-^m1cJI{)B;u+K6$t`AYl0%)S06nRGHn}U7}>MheQRsh8b2R- z^#P>oI#@BeoqG_2`|y9;Zl_u`&4QrYQ9?GoSP}XGW|`S5-_uiL_dJ;2beSZ^VooUg zaAOwUw+w&myiBJ}yEkAZ#V_70^@>TtVhdm2@myg(kl+e!g=naGxAMLwyY71fX?t|E zDok#4>}DG5dk#z8{Xkyd7zXmQznnNr8he?r9e@`aYVhc@PgFJ3@wYmkUYGdsSNB-n z6s$tx8A%9)RIxqA3wc1VZcEa|Fc3Pd7g5?u{;tV-JbdGtPvQWRWQWWG0>DY#Q5tX}jY}4BR z=N$L9uLkKb2t9(_jm-N08)4~xLQAFAw#L0qAYdBr_bP){MrQlUANF>rtgLM6|C2MP z3Q#28*HG*>wGTr(HZrX@LK?W3MRmfU!|$ie$5ld*uGQ zXn#|kjX?iHrZ~pa=dQnyV~!E#C&;|BC<^rps}uLyQ(3byKCv@GtMjD^vb3GMcI9W7 zF56adO=cGx*S+ph-}lsZZM|P!{$@Tyz2j%QPc`Fj)1{Bwcfo?T%F4^9?H%apL4n|x zN1%m;od#GcX`ms_zox!Ecd~Ikz9xRPhGGIx*S8%VR&jB0{(Jjh^+>k2FD@>Me=*e8 zPa!(x9zh&Hp1QHRvM5p(ld}cLy7Q@Tb-LqagLG}L8f$m)ni3o#dKSBl?*H@>0p^5K5!P@_{YFzzBM|ggu z@vjw4r8(bU{FTmImuYEf<(D?^b^2nqG68!r|KrgUNi*i>(<3m#r)Lkp#fAT;FmUEA zhYb9@1nUKO!I@pVc3Ec+dqwsk-o1NQLKC9@RbDRwvPGUs_jwJsH>dU*H%}+ek9Va- z1IQU*+4&jASBMJzTfkXSWigo~uo@fokB1NW9RE`fpo8At!kpT!*);G5rSg3DiIKtp^PLAd>{s${AuAagH zfGYs55AHIgCllQ7Qx(4TR^u{98m^?KiskM8 z9BTZhS$i;asd)J3(rk-GxW7FA$ePwS^slVnhdWOlj}1zAbHh$A;PKYi>(4${(uJHl zO};yo3Nr|)hwE|5?A@ir>gx^f6UbUk?9MOP^k~6_4~ihc%@XR%Yb7(9iD4SH+`pf z|M(qRR#s`()`YIbq~JF4^X?e6(Y!HC)6mF1ki#eM=n^Sb{2<98HddFipE zba6AUwGud6ztX%R$plbwy*{PWa4YtSHX%WyvthwI^|GEU_q?8R_ro5M;D*(_bNg&| zdOA1-$`^m3e_ouL*dF*>RC8g9^c*k5?N=3Y=9S3qEkks0fUgT_z>dE>`_*NmnmEnc zk*FX*{#7Tmj2oFL$%<^i6M**#1!cmP*Y(&I-R|GO zdrY76@lcP;YK4~E!+~#Xddiis`BkxiNRiFIS+SJ+CcXYew;3zuw~TL>;B(%H7B|HV z_WU29i~k4pN9K8A+DI*MIs(@KdaUl@>4^|@K(EXF?J1l*D5B(M+7O##LE3J|$}x$->os4vaO;Da3INdn(lk9d@}%`#hK7=l^afmH z&*2<7PO;nZ?1!6a$-`ZsCGBhrgBjU~8j^!NS|1#_xyL@RbORqM-61QRVsr5GG!0&+Z1a zrrIn&691f0iJP7o9(mj<H`7Q0Q3kwr&hS@((;jQE@nkk8lUYMTYZMicIrfnRWu&v(7Gx^lMo|Rll$xb~f zwyk$?_4Y(Sdt7^~pgZLwACG%%Ncct9eGS88i=7z&suuJXnTqURm!^E==W(w-GP7SY zy}l>5HJ0{6^xF?$TNP7%-ZNd#$D$h5S9bRCosj@2IqzoPHr9N+Z1zf1JtDDbz4h8` zm6WRoyxY8&7qX6DZ&i3Y{Y`D^KfQT*s7|Ce5uZ7G|l(;?kO_Kn7uTf5@ z2C3li(pcV2a8(yZx3Mj|=lde4l>JjF(LlQR#jV@7^DkW3sjjBB&5M6C9kI~Y*U!9g z!4_P{DQ_e_{n2B4`&c>uJDk^F!x~pTd^iJt#{=Q+?#`SUM)X1Fo$n*g)PG<4U#~;A zt`D$fi@g_?Z;Jcm4u-5TcDWbFnwJ^eC@;tUDS6|+YG?fcH{stUcfNSym#HcFj^`=c z52~7C0~J;d zv0^^R9THpUxw;l(0~xPYG@fgW$+}B=z5ht;kFpEv;4b_uz(bD;cs0hGq$|LVuT7sY zOa7wec|TF_t{)$tVAsaG0LhDB)oN=}1-si`g1z`dng>!&++4MyQJA@dPc1tgi^Vo? zx%s<>r?}HdpoE9j0ibc%n#XB6>D!kww-#BjwICr^#e_XU_&PZ$*KtKb-3;xpt+;cA zEyAr-05{T^AP*>S0};I|wj}de>|%qH))8Z4^3$^_nR$7Kq2~iyPo*q@%&j79$Wk}& zp6q1D$Vq&ugGuj$zkO;G;z8!Hf8>%L`7G&Z@1f#B{Snwc0)0GXhrl-KAB&BY^E`zq z07SM>MCFd@>|54cFYE{=o0sLcf2S`zp$YybngO<-m zkU42gRq)-(nXK0HXgb+zDe&CH`59yx`*VWZvq9EuO;j$psAkl+=I6qKCBbevoOB-4 z=1#?q88gAv+Kg%5o`5g48Kz}0aM5m5=T%$ET6d`>mY!@>&@7YRXqzi1(EV;soKN)4 z<%fvxmw7*xw+qGVsa*H60h6D(@YMfXRz38|X0P0J_u{^CH(@SI7>p%UloQ&|9c4fF zRuJt}FfUWipE=*sqZ>n1CIkaNoc!3+r`YS>ztmA+rrMy=t&s7pfbk58c$fY1_rQm8 zgYjh#Pi?qGuvm8czsK(nk4oV3>?|xzchq?D4=6aqW zA6Mwq=%%k^w3&+J0BLR%-oBmc@9%%>#trMAH!?O~-MC#;bgjABnlsH4A%A&OF!$1U ziWKkd?zHXp>vsN!AlcynY*NkC^a_W=xm8-40Z>M-+4R8tD{Ts^8#0_$l=BBw%codT zxxc^~Y%{J%?;}WufD2KOM2LcYJgo?NK)G$}7#C-va_A5aigxai literal 0 HcmV?d00001 diff --git a/doc/serv_ctrl.png b/doc/serv_ctrl.png new file mode 100644 index 0000000000000000000000000000000000000000..469b133c8d0d2751b9fba765135da15250b1aeb1 GIT binary patch literal 11766 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 literal 0 HcmV?d00001 diff --git a/doc/serv_dataflow.png b/doc/serv_dataflow.png new file mode 100644 index 0000000000000000000000000000000000000000..df802f12ddf0166bc09c94839ce51e0ff606497e GIT binary patch literal 33811 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 literal 0 HcmV?d00001 diff --git a/doc/serv_decode.png b/doc/serv_decode.png new file mode 100644 index 0000000000000000000000000000000000000000..1449e7ecf2a2010e8236e9f8b76b5c9ef98aa984 GIT binary patch literal 7469 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 N7DYr}_55S+{{RcDD|!F` literal 0 HcmV?d00001 diff --git a/doc/serv_mem_if.png b/doc/serv_mem_if.png new file mode 100644 index 0000000000000000000000000000000000000000..babcf55e0d5844e9bcef868da0d2d7efd5762308 GIT binary patch literal 10595 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 literal 0 HcmV?d00001 diff --git a/doc/serv_rf_top.png b/doc/serv_rf_top.png new file mode 100644 index 0000000000000000000000000000000000000000..9774ed270766330157b851888564aebc5fecb53e GIT binary patch literal 10030 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