From 32b8f85a4fa7ad55ff9328e54117652f37599c13 Mon Sep 17 00:00:00 2001 From: Zack Buhman Date: Fri, 13 Sep 2024 05:35:43 -0500 Subject: [PATCH] example: add cube_vq_rectangular --- example/cube_vq.cpp | 2 +- example/cube_vq_rectangular.cpp | 235 +++++++++++++++++++++++++++ example/example.mk | 13 ++ model/prism.h | 124 ++++++++++++++ model/prism.mtl | 12 ++ texture/panda/panda.vq | Bin 67584 -> 67584 bytes texture/panda/panda_rectangular.vq | Bin 0 -> 51200 bytes texture/panda/panda_rectangular.vq.h | 5 + twiddle.hpp | 86 +++++++--- 9 files changed, 454 insertions(+), 23 deletions(-) create mode 100644 example/cube_vq_rectangular.cpp create mode 100644 model/prism.h create mode 100644 model/prism.mtl create mode 100644 texture/panda/panda_rectangular.vq create mode 100644 texture/panda/panda_rectangular.vq.h diff --git a/example/cube_vq.cpp b/example/cube_vq.cpp index 6483418..9c58518 100644 --- a/example/cube_vq.cpp +++ b/example/cube_vq.cpp @@ -231,6 +231,6 @@ void main() tile_width, tile_height); transfer_scene(theta); - //theta += degree; + theta += degree; } } diff --git a/example/cube_vq_rectangular.cpp b/example/cube_vq_rectangular.cpp new file mode 100644 index 0000000..a063b53 --- /dev/null +++ b/example/cube_vq_rectangular.cpp @@ -0,0 +1,235 @@ +#include + +#include "holly/isp_tsp.hpp" +#include "holly/ta_parameter.hpp" +#include "holly/ta_global_parameter.hpp" +#include "holly/ta_vertex_parameter.hpp" +#include "holly/ta_bits.hpp" +#include "holly/ta_fifo_polygon_converter.hpp" +#include "holly/holly.hpp" +#include "holly/core_bits.hpp" +#include "holly/core.hpp" +#include "holly/region_array.hpp" +#include "holly/background.hpp" +#include "holly/video_output.hpp" +#include "holly/texture_memory_alloc2.hpp" +#include "sh7091/store_queue.hpp" +#include "sh7091/serial.hpp" + +#include "twiddle.hpp" + +#include "math/vec2.hpp" + +#include "texture/panda/panda_rectangular.vq.h" + +enum material { + Material, +}; + +#include "model/prism.h" + +void transfer_scene(float theta) +{ + const uint32_t parameter_control_word = para_control::para_type::polygon_or_modifier_volume + | para_control::list_type::opaque + | obj_control::col_type::intensity_mode_1 + | obj_control::texture + | obj_control::gouraud; + + const uint32_t isp_tsp_instruction_word = isp_tsp_instruction_word::depth_compare_mode::greater + | isp_tsp_instruction_word::culling_mode::cull_if_positive; + + const uint32_t tsp_instruction_word = tsp_instruction_word::src_alpha_instr::one + | tsp_instruction_word::dst_alpha_instr::zero + | tsp_instruction_word::fog_control::no_fog + | tsp_instruction_word::texture_shading_instruction::modulate + | tsp_instruction_word::texture_u_size::from_int(512) + | tsp_instruction_word::texture_v_size::from_int(256); + + const uint32_t texture_address = texture_memory_alloc::texture.start; + const uint32_t texture_control_word = texture_control_word::vq_compressed + | texture_control_word::pixel_format::_565 + | texture_control_word::scan_order::twiddled + | texture_control_word::texture_address(texture_address / 8); + + for (int j = 0; j < prism_model.object_count; j++) { + *reinterpret_cast(store_queue) = + ta_global_parameter::polygon_type_1(parameter_control_word, + isp_tsp_instruction_word, + tsp_instruction_word, + texture_control_word, // texture_control_word + 1.0, // face color alpha + 1.0, // face color r + 1.0, // face color g + 1.0 // face color b + ); + sq_transfer_32byte(ta_fifo_polygon_converter); + + struct object * object = prism_model.object[j]; + for (int i = 0; i < object->triangle_count; i++) { + for (int k = 0; k < 3; k++) { + int position_ix = object->triangle[i].v[k].position; + float x0 = prism_model.position[position_ix].x; + float y0 = prism_model.position[position_ix].y; + float z0 = prism_model.position[position_ix].z; + + float x1 = x0 * cos(theta) - z0 * sin(theta); + float y1 = y0; + float z1 = x0 * sin(theta) + z0 * cos(theta); + + float x = x1; + float y = y1 * cos(theta) - z1 * sin(theta); + float z = y1 * sin(theta) + z1 * cos(theta); + + z += 2.0; + + x /= z; + y /= z; + + // do rotation + x = x * 240 + 320; + y = y * 240 + 240; + + z = 1/z; + + bool end_of_strip = k == 2; + + int texture_ix = object->triangle[i].v[k].texture; + float u = 1.0 - prism_model.texture[texture_ix].u; + float v = prism_model.texture[texture_ix].v; + + *reinterpret_cast(store_queue) = + ta_vertex_parameter::polygon_type_7(polygon_vertex_parameter_control_word(end_of_strip), + x, y, z, + u, v, + 1.0, // base intensity + 1.0 // offset intensity + ); + sq_transfer_32byte(ta_fifo_polygon_converter); + } + } + } + + *reinterpret_cast(store_queue) = + ta_global_parameter::end_of_list(para_control::para_type::end_of_list); + sq_transfer_32byte(ta_fifo_polygon_converter); +} + +template +inline void copy(T * dst, const T * src, const int32_t n) noexcept +{ + int32_t n_t = n / (sizeof (T)); + while (n_t > 0) { + *dst++ = *src++; + n_t--; + } +} + +void texture_init() +{ + uint32_t offset = texture_memory_alloc::texture.start; + copy(&texture_memory64[offset / 4], + reinterpret_cast(&_binary_texture_panda_panda_rectangular_vq_start), + reinterpret_cast(&_binary_texture_panda_panda_rectangular_vq_size)); +} + +void main() +{ + serial::init(4); + constexpr uint32_t ta_alloc = ta_alloc_ctrl::pt_opb::no_list + | ta_alloc_ctrl::tm_opb::no_list + | ta_alloc_ctrl::t_opb::no_list + | ta_alloc_ctrl::om_opb::no_list + | ta_alloc_ctrl::o_opb::_16x4byte; + + constexpr int render_passes = 1; + constexpr struct opb_size opb_size[render_passes] = { + { + .opaque = 16 * 4, + .opaque_modifier = 0, + .translucent = 0, + .translucent_modifier = 0, + .punch_through = 0, + } + }; + + holly.SOFTRESET = softreset::pipeline_soft_reset + | softreset::ta_soft_reset; + holly.SOFTRESET = 0; + + core_init(); + + video_output::set_mode_vga(); + + constexpr int framebuffer_width = 640; + constexpr int framebuffer_height = 480; + constexpr int tile_width = framebuffer_width / 32; + constexpr int tile_height = framebuffer_height / 32; + + region_array_multipass(tile_width, + tile_height, + opb_size, + render_passes, + texture_memory_alloc::region_array[0].start, + texture_memory_alloc::object_list[0].start); + region_array_multipass(tile_width, + tile_height, + opb_size, + render_passes, + texture_memory_alloc::region_array[1].start, + texture_memory_alloc::object_list[1].start); + + background_parameter2(texture_memory_alloc::background[0].start, + 0xff220033); + background_parameter2(texture_memory_alloc::background[1].start, + 0xff220033); + + texture_init(); + + const float degree = 0.017453292519943295; + float theta = 0; + int ta = -1; + int core = -2; + while (1) { + if (core >= 0) { + // core = 0 ; core = 1 + // ta = 1 ; ta = 0 + core_wait_end_of_render_video(); + while (!spg_status::vsync(holly.SPG_STATUS)); + holly.FB_R_SOF1 = texture_memory_alloc::framebuffer[core].start; + while (spg_status::vsync(holly.SPG_STATUS)); + } + + // core = -2 ; core = 1 ; core = 0 + // ta = -1 ; ta = 0 ; ta = 1 + core += 1; + ta += 1; + if (core > 1) core = 0; + if (ta > 1) ta = 0; + + if (core >= 0) { + // core = 1 ; core = 0 + // ta = 0 ; ta = 1 + ta_wait_opaque_list(); + core_start_render2(texture_memory_alloc::region_array[core].start, + texture_memory_alloc::isp_tsp_parameters[core].start, + texture_memory_alloc::background[core].start, + texture_memory_alloc::framebuffer[core].start, + framebuffer_width); + } + + + // core = -1 ; core = 1 ; core = 0 + // ta = 0 ; ta = 0 ; ta = 1 + ta_polygon_converter_init2(texture_memory_alloc::isp_tsp_parameters[ta].start, + texture_memory_alloc::isp_tsp_parameters[ta].end, + texture_memory_alloc::object_list[ta].start, + texture_memory_alloc::object_list[ta].end, + opb_size[0].total(), + ta_alloc, + tile_width, + tile_height); + transfer_scene(theta); + theta += degree; + } +} diff --git a/example/example.mk b/example/example.mk index ea74607..fcf269d 100644 --- a/example/example.mk +++ b/example/example.mk @@ -582,6 +582,19 @@ CUBE_VQ_OBJ = \ example/cube_vq.elf: LDSCRIPT = $(LIB)/alt.lds example/cube_vq.elf: $(START_OBJ) $(CUBE_VQ_OBJ) +CUBE_VQ_RECTANGULAR_OBJ = \ + example/cube_vq_rectangular.o \ + holly/core.o \ + holly/region_array.o \ + holly/background.o \ + holly/ta_fifo_polygon_converter.o \ + holly/video_output.o \ + sh7091/serial.o \ + texture/panda/panda_rectangular.vq.o + +example/cube_vq_rectangular.elf: LDSCRIPT = $(LIB)/alt.lds +example/cube_vq_rectangular.elf: $(START_OBJ) $(CUBE_VQ_RECTANGULAR_OBJ) + SHEIK_OBJ = \ example/sheik.o \ holly/core.o \ diff --git a/model/prism.h b/model/prism.h new file mode 100644 index 0000000..c4a9774 --- /dev/null +++ b/model/prism.h @@ -0,0 +1,124 @@ +#include + +#include "model.h" + +// floating-point +vertex_position prism_position[] = { + {1.0, 0.5, -0.5}, + {1.0, -0.5, -0.5}, + {1.0, 0.5, 0.5}, + {1.0, -0.5, 0.5}, + {-1.0, 0.5, -0.5}, + {-1.0, -0.5, -0.5}, + {-1.0, 0.5, 0.5}, + {-1.0, -0.5, 0.5}, +}; + +// floating-point +vertex_texture prism_texture[] = { + {0.0, 1.0}, + {1.0, 0.0}, + {1.0, 1.0}, + {0.0, 0.0}, + {1.0, 1.0}, + {0.0, 1.0}, + {0.75, 0.0}, + {0.25, 1.0}, + {0.25, 0.0}, + {0.0, 0.0}, + {0.75, 1.0}, +}; + +// floating-point +vertex_normal prism_normal[] = { + {0.0, 1.0, 0.0}, + {0.0, 0.0, 1.0}, + {-1.0, 0.0, 0.0}, + {0.0, -1.0, 0.0}, + {1.0, 0.0, 0.0}, + {0.0, 0.0, -1.0}, +}; + +union triangle prism_Cube_triangle[] = { + { .v = { + {4, 0, 0}, + {2, 1, 0}, + {0, 2, 0}, + }}, + { .v = { + {2, 3, 1}, + {7, 4, 1}, + {3, 5, 1}, + }}, + { .v = { + {6, 6, 2}, + {5, 7, 2}, + {7, 8, 2}, + }}, + { .v = { + {1, 0, 3}, + {7, 1, 3}, + {5, 2, 3}, + }}, + { .v = { + {0, 6, 4}, + {3, 7, 4}, + {1, 8, 4}, + }}, + { .v = { + {4, 3, 5}, + {1, 4, 5}, + {5, 5, 5}, + }}, + { .v = { + {4, 0, 0}, + {6, 9, 0}, + {2, 1, 0}, + }}, + { .v = { + {2, 3, 1}, + {6, 1, 1}, + {7, 4, 1}, + }}, + { .v = { + {6, 6, 2}, + {4, 10, 2}, + {5, 7, 2}, + }}, + { .v = { + {1, 0, 3}, + {3, 9, 3}, + {7, 1, 3}, + }}, + { .v = { + {0, 6, 4}, + {2, 10, 4}, + {3, 7, 4}, + }}, + { .v = { + {4, 3, 5}, + {0, 1, 5}, + {1, 4, 5}, + }}, +}; + +struct object prism_Cube = { + .triangle = &prism_Cube_triangle[0], + .quadrilateral = NULL, + .triangle_count = 12, + .quadrilateral_count = 0, + .material = Material, +}; + +struct object * prism_object_list[] = { + &prism_Cube, +}; + +struct model prism_model = { + .position = &prism_position[0], + .texture = &prism_texture[0], + .normal = &prism_normal[0], + .object = &prism_object_list[0], + .object_count = 1, +}; + diff --git a/model/prism.mtl b/model/prism.mtl new file mode 100644 index 0000000..4d490e8 --- /dev/null +++ b/model/prism.mtl @@ -0,0 +1,12 @@ +# Blender 4.1.1 MTL File: 'None' +# www.blender.org + +newmtl Material +Ns 250.000000 +Ka 1.000000 1.000000 1.000000 +Kd 0.800000 0.800000 0.800000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.450000 +d 1.000000 +illum 2 diff --git a/texture/panda/panda.vq b/texture/panda/panda.vq index 0362f189d3090ead9bd386617476d14c9f87e74a..84bdee01656645e2ae10c769321dc92c3a86a7f4 100644 GIT binary patch literal 67584 zcmeFZdstJ)+BY1;X4`tG5L;_X+)$0uG}{s{eRC)WNvp3xsYNRV57a1fX)zK+ts9CY zL=@cES~lcrYq6fPl_F7O8y}E^+C-^PZ1E6rf_3-p`|aoZ zp7(mb?~i9@t(jT(%-nO&J@?!*Yu3zqx8}6%-I^lX>pRFU+OcafYv(EFMbRw`5(Yhk zdx`DaO-pJ{e>eVm%yXtsG z?y}s~=YxNy|A{d#5mQ`I}2{FZY%B zN~YjG1RflG>Cj8R`Qz@xmrF10_Q_#w%x!UX>Vr)W?*4^Y@MVV|7z?)0Y>ko2FTWmT9%~YOOD^c9@Rml5LU4 zR_~At)5$)w>7Cn}YVn`fA71xC?xx&L$2KW9N5TeeK4HD~;DdeF9t2ugyIu(!wLWV4 z=II-7Z+=tqKNqi&|IfvJWql^xWyAbB&~%Qm4cV-H^zhNc@z*8SBlob@pti0*vi?D; zK3E+{_kzu=oiqMIVC48ifhB87)_lF@aSvp~sbhCi`rCi5GTky&7FU|Ye~!65{(5w^|6TvPFWjAQcXrPUu-6_8*FSQU8g}*g zb<6e`zB5c;JiUmub6!%v6p4HN;k?7Xn|wEYamQ|}y7Qy${ztma=W$2>`DnJQ^iSC@ z^!R<(|KNq5vVEFA?%B8Sk8NeF4MDqJE{(1ZTESY~WTiOlN+y(TshM$P+>zH|*S^Zy z^K)KNou8vry?a{w<-4cfDSZC+^S7I>HC@wGkH3BuJU(sP49&2)=1}0sSA!Ry`tqfV zKi1Iw>Y7*AbSxXS{7(|r{^bs97ZrZHdQoBSvK!we${&AciZo=*E&RriQ`lU1s*qPa z!Q{&C%J16Iwd2rBbH?j&e>Je*{gr#aTdz>V>J_7tM<<&ibL3l2%bS*#$(n}wdp@u& z_#p1*3x9v-oiF2WtlyV9VuqQKLa zen|G;JY)Im%cK9ClrFh`Y4>osd(t#%eMg?(;a5ApmhSVigCPfTcf^lc-4Wjre}4J- zH3yfUU%r0zjqe7oM`z3#A2@2x_&MW4uCL!W{(3{HdV@NV?hDWvZ@oI@Rb|ZmIdmJw zv$p*B-;S5V4wt7MpFKVj8uNtp>VqrRiU<0aOp*G)-zjrBVTgb|MZd?|I=>; z!M^&|tA~|`qYSu{GfEB5rbT5agUG%av@`vRRk-Pd^|dvl*UMoMpZ`r@_DkOcetw6wqy9KIefQzD+4t7?Z1718+K?Ez12!>oS<|wnblg*3 zZ41niUyN+Z|BkUu8Q*2#P7_y;seb2n$nD{J{LjS;(n^+so zh*?l*f47{=)+*caM{8_cn-N=pl zcJ%|*x2u0RQdslpmz!%Gsh4&;QjhK~FZ?uLoBwIyNfT?w{MosCkJa4hDm6n2qpS7f zSsRJ5z&A)eK6oGD(^Nlt(0KTTp11!TIi9R<(Btc)GhV#&TE>Oo*U~No?=i#_ZmF@@ zj5Tc%vKJ)rknJ;&an-)Lo08J!rVsNwQ9k9>3xNk;T3GFFjINHk?TnlQeAzEa@>2`H zLEre@f7UGd-S3v*9yUupS+eAlPnLZ0yI;VE*4SFVBfuG-+S-9efN&RA2Sib_g;JLz1QA* zZzAI#+jnf=y)pOh9osh*0ZKcDk|5=ni4)(OIB^&+p{H_K{Gg(}yXwz4qRNi4&P>5Y?y>syA^W*!}FYW1bx|hTIu5 z9=vwr*=L`9?O6a}K7iS?>Vs9}lVPDu6zj0y5151qdwE`u7DmIiPi+Tpryir$n!1k+ z+8;u3{U*sW$p|DvfmpOZJ;=r`W z)MIFsd!(yK2A~xgeZJ>1k z10$!X7o_=SF4ERBaHJuh|KoVs|=2ebE}oIMX$0lW&4FjJ>4X6#fLBzxG^wYZr4g8Icb z|0{LPf0y;&9QYR;cxpssW=?G9XEeaD0}ylltQT0EtfD{|IG7}ChNr{BD4z2F1wH?T z(M)}RS^uXfeJaRSodNtzAY~;S!)7?h;vLTYRMwyK4<{uIG>?VuB@V*9K8)>&kF?%- z4HEut2{R}|uMYcO1xp&1)Xh|8T!Hpw#u0Yz!070D1&!Z|sZa0@2Z$Dw%{&hK!*Rp@ zQ}hyzG-p_HeF+9I8j~=g@W(G#9GRxmn-E;BRklZO<8`enB{{gJy5P z{shx!Toi-q!q7Z*c&<7;GyN6+^Upuuvj_Jo#3B4S!mIY|*|Tc)=kL%X83s-*0 zDj4_-kmfuTNj?nFAR8(s@DhfGyKzo!?3V*vjgEJhta3+BF3ai#544BIF{HfH!lY^O$Y{K`^FwSHh1pWwJ*PXp5g4=m*+D6 zv8f8pv9%zS(nD{IojY~x%P${1s93A8j$J#|3StyF_0aJ!Ij|s}?t10{pd1h>&tXXA zaO4~V184>9c;FZ~l}v33hoTioZ;`fT*m?$1d66QN(0|8oIMW6&cg zcnW&{{JZC2UOfNe&%pn0LqrZ4P=T8Xz6b)J+%Nub45cN?+01O1tqB8um&pb^!^Vr# z3px1WzvTM)gG`dO=dFpu6ow?~ z8EerSAgQf6Q(F~d53U^xv(~y+u@;?B-r8#Dnw3*ItFi*NvQpP7pT$w+$PJa8t_r!K ztCG^c_~O`u*0qDywPUSoUwrZ4K|;J1kb^I-9XklT3adfUI?GTwOWtL$uC-d%;wG5Y znj>e3_&?_yd=d6(<3-KTMB$&~*x=7agYNTBlCfYg3#?ds@Zee)1(DwVB2(Xks2!>c z_|N&D3K13T#UcbF2nV5|JPbbT+FU&5GFluOmC?4OQxzJ8Vo)x(YM>#ZW@x5B`txQx z#aT%k88`(TIkX3wgHs8WO34fwIg}H03?kS_L~{&XPI+Yk(sg&WRCZUiRfgyc6_wqU z-Q5kk5TCXXXG4CjwcVRZ;2eYOCxHIndB{pzDB7U0YsPNL$c>yzs80&aRfaey7vf-<22A z-`(BR9UgM+Ku}xL)uy)awl=6hsuL*hE+G2xj9PVdRaRs|-gF%2oq>Klhv;-6-JFoF z?uN|jii$3$v!VMyh;zVMS!w73Ls(r3gOx&Bm@v@lDnmGxE%_mpUCs&} zFt=6s=*YCSwK==;yM5Z~nhrRxHWlRMHRV<4+Pa-h)7rZ8b@@#Pn(D6Vn(_{G)-5{l z>DA7rHq^~o*O1p1bhWMR)3!ELd>}-3Ro5NT4fY~$cSr?HTS!|2r{ZczNP{lFqRyu- zMAv;FuP*OsLv_%!10g;k;a9JAHZ;`L(V7{xAB~mdV~j9#UFD$FI4xby$_h4~_|J}- zs4AM1lPRy1>riw>|JDAs{aI z_#AC(IM7yy`YmefZUZSJ#?{r;wGm#neF;BIrQA>fz7Q>yA(a(gy5vL$n*ie0#i@X_ z893l>MFXb|?bzhZJ6ahsA}=qfv#u%cQ=iU|5n)XYb#37x_jT(-@}8-7rdRklt3!^4 zJ#O+v%OA}P^6^<8*fg!F>0FyLyzKyl5upa3ro5|lA0BP;sXHDv^V7OB;az#UqgR~= zbp2OD!t3%5cS^auHF?sdH#nnRlYN0#$W5~oEcL!vvYghtx;kvr~{-U=01Npl3-FX$6nLd@eN*%;Ky#fvyh%iEse^@{>DO?ef3AswY znpu&mqckA^BbY(cM>gv>r>dd<8>Y%3T zx@w}Lq6_#dGP^(%6ai~1IaGjJo!$k)L4z*!YF6w|$na!lXte9p| z*Oj+&I0|bHqi6wmN!cX)ZH2W!&g}NCbCQQI)#(J8Y zyA)l(3gaJDk#?awHF8{Hrd`?WN(_py8~Mr(Wv|;4;jr6{y}i8=9sBVta`Sq7 zqs-=FDSx5#d{r`X*QN~Ot$tm@2Wv)SE@^g_EE&tw40jPf+Q&33m9 z#3)5d2hWeEbWu3P-5lZOiFhIr-%)FC=cBoZ_(Ylt!0J`KHTZv$<_H ziNq{1+l48TC|Qa-B}FMRIZXCmn`j(AqgJUj+C?^HPlhYQ#uu7BJ&t~xO6gK5c`DwU zDjv_q~6cz(ZMsR{7gOj10n_4#@fi?bwR8)V6}!Zw6ZdMExCUE zt+zh;o-0*FSmd`X@_p{YMP5!olLFb-3YDD7fbKn%iW)U$f}BHEWK1 zPi0V$~er=vU`qZ~ z_^$zJot0f{Wn=LOGfeHj_J2JogA;4El%Mdi>&V0FuAea9SD%zZ45HqPZ|#&8;ZFc! ziXQfVNyjjJ*#AZRaOPn!Ju|4ur_z`RCNro&%&`6?I7(?5QxKUq9fh!-=}l+nyA7N}duKEhDg)H7JT=y%)E3rK(&89s7k z`>rELCSTh=xvGl980I9~K}dFgLik&@!*~UIc-%ma?ThLr`>t6tYZl!{x_x(kpTDAk z5KO+ZlEFmSd|#O4`@+t%JF6yDO}gSc=?c-x(#x=o2{VjgA5jC4i!sGJE`dL+3PsIm z+XDOGUdZo3=?1E%Y9b6;hTcl*PiSMOi$^!Q`V&70lKO;HEHXZQ}Gb7-(`P-)k0oH#IzW(o>53t1{t<2HVNUUVs7W( zUUOj4nxk*sz6s5H`}U%12NqG0vyQG=6TT?_0QDz|qrO66nl2El2u2KG=$;HJuZ1&o zvUMOOi27{5wkyAGP5z=qN9)$K-o8ESXzQ$Nln!wR!t;GlR(Ms_q)C%lLK$I0@ShYW zMLjW$#;mC#Nvx@=slnsQlk|jV1c%MZ;lR`W$x&5axYtAaQAn^IyeItN3d0Y!c+lW| z^wwwBajRyV#-`4CGX;`~nvhjBpJ|WfId6?==iw)Oq`)UEASqXT+TJ z7poo^{e=+?x`5^Pu%7UWI3xZf`ol8K^kVS#=3Cd%AaA`jD}T+b?uJ?Uw_EFPx6aCG zC2@nOVNQqUgOF01+c|I5Ln_}Q_n&(o+qsy2#r7BIASOUE&U^r1JT}OTuM|WXjO;Vt z4hUNR7JYXhdB+zz#!zWL8^kjYSZ6=5sJj8uuqeN~b+ONZ{BDvB;&b?-hB}fds>9;^ z*4BC~($mU$zR#?D%F{Zll?fv$lb#V;2rji3D}4mVT){US0=H<Feg=H%S2ulHU#D2d9XZvZ6ggd=Avr9XLQ@3#lP@X)XgADac+`l)`HOegAz*T!VXM%`i1={*@~yAE{dO{hA|d zswS_j!Z?IE85jnGcM;MwYpQ??aVP@;m_^@jzeaOLOwCqKey(aerDe4-n~(G?>1{?& zL+HHkAHX&l?;l5w04Jr#NQh}C@H0rCI4rYj*rJ#cz05<38YUH@m^#o?4Qv$v+d(@M z3E*=_sr7lJ2o6O7Et8ayF6<1ju!C)HGu$7HFZF=W@b)Z?JO z;gV{rs-Y1H-KYxv2eL{x$!a)cm+3bQ6nzPBq-D@mL8H|mUlmjOO0QVftR%W=++oHC zxTI-GVz)D8k^Za!BiKv~gYaBa!wL)w#v=nm%^06~1`8PFc|* z27RDra?OVV+A`;v{EDksZsQn`{$~9r?KwGvIiFw$ zPkp@xG~_Vry!1U(jt@PUDSrYjoku)0x-g98st9 zsqU-`?`o?EX*iIXS>4puwDW3pNP3-5L$&j$&$N*0yq(Urs|`MF4ePtEhP63;bRkC# z{vpna{0e_vS3cII@gbvf0N)Al`Khn6tFpzP)=cFUSc5YJ(8{S3E3jSnbyzdK-xU&4 z(dFZ$bxeGXaB@&JxqJX&&L9FUas}1`VYH}mrA*4u5DEtShaq$HS zmqO0C6qYk%J>g;vp=BOe-wQ`94fEs@giV1A2;XeIUjMyS$02$vGY6Zkat@VXNV7Jp z74ldaCdPvrwIOzi=98NSL2iIVz~$=2v3jnIFOccEdVKzY@Q`@I;mDJ;9J!Vg3I>NJ zNx?IjTr1bgWL%jX7M?zqT&`ZP7wE-&m?S(Wa`kp#6saj7Y=csL_tPOOW3o)bF=<@QtDfPlR3Mi0Dxo`8<)G*K2aPv7pL-(`I)& zj5fDYWURIKdK~Uvkwa`2x{bo-UbD&MQ1#d%>~=BMZ9PUK&nOm4J$9q8S1L@4^`z9A zBOJYs#BCP4$z~Jr93nfv_MEAs*JF+oyDUaC$i_M^&;Dkw2dl3}do(}669+ze%(kRj zwIrp(NhV|J)T|Fj;C(I#{L{&@31>W zf)2Eg$u3Az%Vb5h+sslyv|8O4ohgw-aP544kHaXoH;RnH4ii6Cyx+q!HHxB*CXvh| zF(yVdOVqV}9kCv*SsI-v7W4@mqDD)fv0oUF*b(h^B)S94wVwULfB`>z4J!CJB>-9!G#VRA}Tv&t*$RdP_irC06V4Gz!EXBT{n{O%d7-eUE3GRG8>7 z3i;+fsWH|fl$bnxi@+n1xTE_mVqqWGI8L-%&v%G>wGyMvVm7LqV~yF-GNV=$%8Tt4 z>iax0z9_n{Haf+lm5sCXSfVY7#?)Fh*JJ5(NF$^kwb>%|B!U_0Xj!wxV$>=FY*Le8 zNNDRbN2IugDKdM&xaeMs-6$409Ofi6Dwgu2`UHKR2veWQEbQ0X1@?ZlZil$fZBeVE z1;T!zpw=Ra=yQwh+;JYeR46rj%tDW)(PA-cE$$SzNusq&qnbU@QD%?3*5ctBn|nRN zK1s98(i@r*ZLwIAY)LkwFw*$s)#<7A16CQcFIM#8#LQ>edFvqFru?z{3){QeujdZ> z4_?pxzBjm5q!d6En*!`GtwiuqibOw8q{aR;rr8W~s1y%Q=EBVG&z)~L52j?0xo za|X;>)7{O^y2bM$^onnc}~nAR5{h;Bx8lRAVc z0ylJ#P~r)Q*1jQKFY5?MjF#EOq3EK5(4;h>ELN}AHYR1KsR7s~6Gv=2E=v-{ieqI) zeG+(vO3Gy01Ojd>ze6Sqi1x$^(qxhd_Zx4>#7YbqX^kdh^!^LtMz=sHwDfH=3PY26 zV%>to3yrb}Foo~VP856i*|Ci>k60X#m=-Gt4T$gv!~%h!ga74+N@G(*GxyUCofqCf zR~94+F%rq7GMOM$78)R!P`#nLCo(;4MEa-c7aE~FFaTmE5eub*G-y$oRuUU4;D&}u zLz6-=Vu~%X*+~K#%`nK)I7{TmHgYk@akB*$nM@Ce7Ov0|nv|q{^FrtPM%e=6ijEhm z_eZ(2DYZ-nY)M?qSH!ZND|V)*3p}#F7?*XV;r9?!J`f0GNf44G8a2ToF_)leGI1=| z(kP2fjOC_flXyS?^#XWFTz#laE0#ebvH=tGEi!#Jw=s&}$PI=3q{WIO8XL14Aq3)B zfd{fH5T{{~6Lz3IAf-u-s6{|*qd*T;#ND=yD-+Xb%#BDBrU?_pd|6{!RI}xc#zu_w zX^m+@i9Su35*;fNrbY7`BN7|=qBOfcg0B~(rRXEf%7`AmIMJ@$&oc_51!54Zj@8FD zf>XF;0)DLCa)BR>`NRdjq$e$n&lQV-*`27*7U)4X->vWIkR?X(^cNyJE^OoXM(`W; z7tok#QH>WGJ^Bc}HX?!>`;7R49vLP49xgvZ60t2ppC*=N8`ILD0o_^=8bl_IP1EwZ zS|b`MRAl0Z?hnvfBD4aoSi4OhE8)f_+V$o)Li?kW(!@!Pz$Q$~)^m*kvEl$*gaiXk zs7(+n>62ymxkCkRsl_ehngx8jQLExg_|a0kq|Xr{@;G99q7x-Tts7ru^_C93M?fEb z&3rRo&|z-mOQ0LHv5AS|q@+;v$pER$5-ko8#)?Ifeh68jCsYtC)=R*|*haD0?Jxxx z#fjXA>^_g%VMz-x3nXrShltCUNE&5&quG=s>=lbJYw$#yM0R7e#0Y3#U#!u+Kh_v2 z6zXfy75Qe7#lh_m>x~$16C+G~zRVM=7ukfpdK=$l>az#%xgMd?W7iv{wI*Q_Un%18 z1&!h~rN>q4mh^O39G)KIxCoojW7G=y0s1s)uT&t6GP$L_p?xN;$I`1chgzg!X=5$7 zuiw&dl!k>`Jh9D@p%%z>K%c13qV0o;PKxA4_qr1KMw7=b5Gz3x*VJQfw8ff2&1n{i zSsK+JjTxgcS`ZN-vq>ZRn`0CEQK`OXG@1V9mTgvPfsmWn%thbRa;z=V!TZJjeb%H% zVPt?cG*{av?c*2a%5w*DuNM^O=4xQC=O*P2iaWH=3=V2ER*8Ht(I`-MY{Mv?t>?R? zX`wc*Ia=&ydNo%-3Pq&V_9R70v-J|QR_2j~LT!r0;BUhA`C>DA; zIxu$=dpa=qG+I3T9znDbV$T+(jQZ9Cz2-I)b)kzVJx!A&oq5+HvPUm3}^O~(oSA7Pi+)t_7DHxI?Psd+D81Vsi;^&O51Z8+`n*W`zY-o zrp=??Fq6Vd7nA4dt;-Z9Lo~wum*!WAV)7Ca!oip)NdE&U|7Dp^C-7o_nx%+ls>QPW z>BRrMi`g4bX_?^g^HZ7sdDAoT@0W(Qs}gT%Un;gkKiLnBO}k7|X20t2rdIg0nV0ZT z9vBuKQ$FqZJ&%3BUV4}(Zvsl_eWpxaLz`j8dhwGt_8|7U5)HtODC|?kGcN4cC8554 z9oKaVW4{#>rd5BWJ$U{+G9!ZGm<_YY0?EIbOQ!>{8H?H7N*@ByBj7Mc5a`$duKJ&O z$I$u|gP0(IpyyrMnL8GHX~8S1KU0B&W6uM|JUxNoiNY|H#LFkjhy36jLn}oPR)E1n zsvvedgIt`Fz}7I@=}UWltybE1OXn(Zdk-7XsQ?PrV?Cw5KF2Va!|5VEjU9VzEI`;W ztx!;V5}jkmP8|z|j%Aiyrdp5Pu@=+Wv8ZE6%NP$|Fm|kaA1hv7sfIAJy@nNfa+&z2 zg#M|RpMy__=;#ZMqcBHc=58AEbQBY&c$^Gp;^DL9|Fip~-#%6D|4u*rjNjW;hmYQP z{b9W`?4w-fY!3MppmQ{IqK|yI?D-p~2{7dX|DMaMm~&M=J|F?+GWiWY4XarAZ1}4{#AU!QH^7jOcps(%GujuS zm(hQ{hU6EItU!~`8m7}jY{_RfoU?lN?YAlMa9hwhr?)q~JQv>FpUuIagKUTZ2U#p6 zv1G=MeGxGB0pg2iT#V7{g;5@NFMsUVeJtRfkbF0rkMsx&CM3goSje!8tYgzC6L;)b zJs;RQ5`~t;VZP$%Cw^bR8ZUp*4Et6QsetaA>qWC~-&j^gye_4sHbB~a!)-x)^)`kN zj)*entB{;Ip9V<);~^K9A68t36nN1xosv!w;usNfki!~1Xgqd|R%?5kEoz|~FSr)V zG0(ABp`h7vOiE`CnRAE3=^u7KtmyWs=*Bi!4qV+Z96pxyIci!~CPQodSca}7wFtG! zC`U$7(mDX6B(dY4&MaZFKzmkcZPz-ekkg!k_N_8Yz4%hV93rH2bZ$wZ;Iv~k9~ugW zkLcKv0qgHr1*Sr=V2xd@*tgwg+0zOvk{WcG&6PR> zHezPlvAdNv#nM(-W}l`yO4@5qw=0EM{!38~@vzY{U5E{!?$lIXs*=ZxSgLfT4ylH) z1=7#Oi&H7F^^&JjscbxzQWd9ix%^Z%l`76pb32|}Ajmre6 zNyx}R02Ni)Tp7v?p3>m}9+c^dOHhe2R6LgoiBxK}$Ac}a*b$3;x!7N-R1Nv@cn+7J zAJ64-s7$@RN*Mc)$kk)(aYdMHu9Os8&k!GbPXGC*rAkRVp4f%EmctaXg;V z25u{{wu|O)*&V$+1YNy6mxHe|`Z@T#ULaQT0Jb@79=B2%%`=Gtl(jC0B(2fWg9Tkj zqua=D7F*0VNubNYGdHG0ci26VMvpPc9br-S_3u^-BmwDtLZey2bC^t#rrJL7Grbm9 ztkJld7wJkd*G4N{{eiB?IFlpI?dl&FYLdCMkx6Q^RBH;*X7mR&M~8+;D~$f8UKhl} z55i%SIM6U}^3X_VDnIZOtjKWmxy*i8tae2Cnfx5Jy}f>pK-G9&O0CJYJFa$IW{Jy@ zpyb7&1s#5<6pxSG3DgqGxS=@J>V)1vQ%Y2?K&0NiJF~yTm{{wwuQq4!ANM+pJ-w0? zlhPDuG`nkSQ$&`2ZEcFAx?klVX&GOXem|thzqom@Ho7QP+PBm{vj2XV+`6r(izCm= zwf1YQ{ke)FOzVpx`xaDqGP@E3P5VRSx*~(x-EZtQriAr-D*FR#SJ!4{;)Fd z$k}i3zu(edP%*A{eSh)5pnO{Y(f$;>orkvf*m{)?rBG@2jP>yK9Z~K?VbqY)DC$+A zQ4@_R_PEuqxFK*v#2d2lQqamS$Q>_1g|8q{iTIq+;ZZ76zyP~jY3}HiVDq(dNGXZn zIe6eEFV3|TA{wVkh~p`TROmV+@Ck4dAg?NwAFL~32t9&?8R`50bs>O9KUaB1Mi$Qx zZiXvPgkA!vRc&|^@}A*R4N;N|I0*?9pfm{?5bU^&a@^=g=mdz2LvNs*ekg%bA_Yn< zM@~0CBFfz>F+y60@Es$aYgQ&&vfa&+4($6rCJ9IpxkS7aY^J6@Iuz#;Me-!6QP4CU zyp)s_kxF(9OS~MhI;lA-B2(yzf|_dPRH`d1+)NL2lUmZ89=RbR6thsc56OG*%2&d5qY_JpkRxVWtHET|czRDmsY5tICCZO~AGlGU}n zwT?s;3RSJPJ0y@}CQZZk0CWL>`X|QuBd22NX5XNuwwrrMRbd%MUfkp>y#UE+e7+8x{D0O?WvUw{e$fV z?V9}D0vyQArF}CB_^UZZ6{&Kcmit|;1wKUutpgR$6nDwPS`;mcoMK%;f5D)py+t!i zL#9YktkAUP0SLxmo{Z3_?47rWR)){8H$N3DKE(?Pbet?vrDqF zMwgVFiFd6(H$ST+qdaVW#krvJS0AsT}RxuD5 zGyhynSLc1FZgp5*R>{|&l^j1FJU{YW;5VbgJ}c@r?OE@OupDy;7fZ&Xr~8lGoXzkgbUjcd@0WexD1@OAh7ALJi&jU;Q)hwCxaL#nZkF1 zh7k>3IDDK|J3z6xc8S}{60}!> z*>uD>Y>?_edty*8)aS~ilV2d&7c1eidn#x@P1T4GMCQbb zeE!bG8>NJ*=E@f_%wCNVlSaJo`3uY5nZD;QJ1_5aUS4r|1@VUXN3@b*%OMwF@RH#l z69aO+#+#aQU17G?jF^OcFxbz!!nxDu@`{EPI~#T`JFsHe3c>+ojG?_BBUbnVx(qJs z6Mw_aLfrdP$bQDT- zc+2*3i(%K5@DUIewD->NY9^kEq>V9v`9f;R5|1g3m%XeYSPwnFxyUa`lPF zHo*$toy)-BD?7pJWjil3{AXeqrv`20i?;W{E}cm`8+@z1Wj;Yd&&WeXkGOK>5?jb* zBE`4Ucf^9FS0?z*zch2g1O%5Z=uBOT#wF2Zni%3a0fIVd^3F-VNV8y4%!CCKE-hGq zYbj1=WiHLkR4-VNPGKCCCKfe6#g9m`Vd$+Xk$BPesyo;^aXZP+sdv_-`WuLvf z_wKFIDW#>)mfo0xf=UnFnzHkS6)&83%dNZ9_ufUi>3d(Gz?3Zu zOAj6Tacg1e)~&a;{`=h@3k&1p3x6z}l3ZA`cgn;Eo9=GCHD~MH&2y&AnKNhe<~f`9 z?wxXX%e#MgcMiZ0UcNh#)_>@gm)?Wn68TJJygsx3Nox;pzk3m3BtZ4(J(tqLeVciI z#LFZ2fEV?-bMY2QuZ&L&!I1`rS$4n+F&jVp%Z@+1&5!_&cn#6RU}p+r%V(k(5<$qz z_~ppP2QR<(^2Ck!72)uD21^V`$6GfQPUVsR_RE`4yYnwkeEYSDFQ3P2I&jZreole+ zd&HA2AhV1Ng~8{$x9;A8KYjYGyLT@y>%P2f1>A0I>AKwAy<+-`>37ip%U1X_Oy9fW z>>Tivy>87pu^GX;bMEf_!;e40zxCsfd-vX&v-j5K6Q!H?LS9NsFK(PuI%nanDTf}Q zZEsy%c%gxG#? z)7*>C9vpjbAHy3)_J~b$=9DhneDM$WwmjHeI%o66g>yFF1)sL=y|s7Ft<9Tn-G!)5 zhlG~iEk#ebduz^J@D5xBi$N@9pM!LBkPZ?JgEWw83cNUwHgVwOwUGjSx6T8d0mX1ZFv4KRvIY;HydAYQsO!bS7z1izsK zm2zmcGBpvfrK+K&BE0Bgj+>yO$$xoP)`YAq)th+jz#JH}V!SM5WTa+_csNao39w3q z7g0=pm-3e4JSx2;JD}+>b;gSZCc)+96Ed>0GE@sDB;fvfLPo*_GD{bvrl&5&p<_nC z)XhuNGd-E<47J{qoHz}Nqqk2WYzU9U9@3*8ie_twI3Xp6As07cO(hKkaXgRNY>O?nn6j2&(waqnRu-nN8Su&{lxI!2bo}r~ zzlkp|i4V@&@zFQ&7mhFgO?*l6@xRBvUjiLFDt>f)d~!VEvp&kYbo?J*eFI={Ny&tt z{_*LA!=L^mE4VzkB>1Nb@h~MZqkjJ=IQjUFufDnT(~jeR2ae!Tg(bnk@gFCDQ*sH& z9+i9@A9Lxm!uaH$3Ja6tAN~F}@xTB5H($MaYRBW?u%M5B|L8Z)z`T}o$JhVu_@f=) zeDqCn{5Q$T$??g_uOEN3Jif4G`J?1V>;Jyv)3W6#4iWK>{+=Aa9}uf1LbT^2gsUPyX`vS(lc6cInbjzYpH=Rmp{alw7)W=_By< z(&WRJf`jpJsW2D}2rdi;+CmWg(N7Hgrwc#r`0CN|SC+s2^<=Pf7kIk;+sW5PPW}kT z{BU@3{!Jg;OuGQ5o+V$m^%SU~L z`h4_{XE%1Vd35w2qfdT3s_gxb3(Jzrl9L~y0GiVH|Cqe}r*Er%n)k)YkCVT6{n5#jC+CeEIeFKvc_Zf`FmK+eldqqy znpd{&blK^3WL`hD?$pVVr{J!8e%`#(>mZ+yQR?HFsSs(%DnhKZvhvBuBqLRjt*^uJ zNOA@t>|{hK^_}V;7M?h?u=L8!9`{ZxYvPvUb}|#qa$fgIChA`C&rD0 zPyA&bnEFv9b6un3!Qku*xPF-Y0``y3+kST56=Y%3%>yfNgDvo`%!{Eg{7KNOP@tRV zY}veV%OU7ks8LdyaG^<|qc?7OZ42T~V61&@M%f>?sFP^=4cFMww3ol;WauM^jEo3%s+_DiVwrpH@ z@x)f(IC1D~>DeEqym0nLY3U)~vy;wlUHFHKK(lr0kJCq=C_Oa&?D8w8CQYxJ{)dY{ z{7~gPa^4Fs5N|GgLwx-^aS4)1A_LBx0;9kxiXo1ZNPWg~orH?mNC}Ygls7r$fmz3R z+fRK#4-{sg6kf*w2=a8MQ=j4t_m?jgUi}mz zFlEx&g(tQis*0Jna__CGNyK?@vUF?dk3Vj`Tk{hke0?Pnqr*@YUjO3MJX};SD(Y0} z*}FfD2B&_cDi7C=A%b~e=|hmo%wz*oS@sc+fe}~Icd)pA09!)}=wEmB`1g)nUNm6nZ&7IE{sq=M zcQn>+LrZ1rpr$}EYj8lL87wNmr<0tnoLP!HniiZP8!VocGeBkF+ynmGhQDZQ>g%x| z1fNhe?OmFd`u3c5EMC=P<9u#?Q9EcFYzG4O6q*7cD#*>rY0oKcsmBS6!TS1woSZIAD|Y1L?~ode!oNPp8lb(8 z7UbLyb32rM*xjpcY1SB8a8Lp562RdYG4~Ge7!xIE5^bMJY&Sq(kEqwHgHcL%*H$OYc93W2V zwKX=oEVZkfd()+1)}j>w8N>ea!M}f~=_4pH(0(Fto zAF&4g75C*Ft;tf_gjy&MZi@%kF zgCB;L3Qn`Jk|Ru&8}8$9N@jCKb819pifu@)c1PV$YsTM2u&8ZQ#knIKHg^QRr`Qtk zr6#UilweXO_+@1DI(j<%;v85($LeH)DV!IfsYhOm6MxOuc_BykC6u3p4#hkfB}E-YDcbudi+5QSm+Ol#q?)Y z#Nd~SbcPWJO7M+Plha<@UaZN{3_?iJGc^So^hGS~4#F$Ok&_&VdHZ02LPLMN%|&0p z6Lv;GW(pJ>TE`s(LpA7b_-^QrLhCgew4MSoH^?c#A(LVxxud`jb_QEC1|;(y5yE*R z`qxi^wWvkjf-fRCl%uOKw`vOf3v!B!2kHx23fhZiS>gDHwC2|r;jj#j@8GX$I4h;&0FM*@ z2uEEt^^l-VuYL-D%4I$ zH+}^r;;GY{RTUxTlytMhY)%Z%yr6_tODH)yRhqpkys!+tMB?$sGfPS^k;e^FlAQd0d@$Z0Qq3U zjjJus%m7U#f#t7cJkB~7Sn^6q$+?mSyk`JWN&J~n=N<#csJ5`c{>;kiz_`_`!`gmd z@zu70GrR9BNI5qUvODE*(S+UehaM;B{=Pf7^P8~cfrazW-HG2l>eB9W6M(WLY(jr$ zQ_1|2_`HvIFE7EXOyKfB5S1K%Ci&d7-Fbn@=RUrgH~QS^QLmgC9sjrY*-o5+r--+Hc%g-&pI{NYG$8E2K zEq@gF`0ruMi;~YF-}}4c14oCC4_yAr<5A;Zng6kxD-Z@GsrzDOLTR(V&i{f@IuKf< zkr#1_v5QgOVv&kueO9&HEbX(XLvduys*vKZYZ%6*&I+|oSgg}XbI#f(4l=c?%Y(CS1agt>`ylsmdH~x&nVw(lwhq)F!-$s~w&VBAeaZArKEq`o`6+HW{Nt3z{9h=_ZlU9^r8D zQdOcj)hh|{5X}sHTS-n{_i@>8e_QtGW*W!Y0)L#_m#AALT=hedodOo$7PKYjYrgtCt@ z)%xwDlcx`tm&X^DX9UN+|Nh}?CriGKN1`nH4hM0e<%k47C~IDpUxuHbDgiiL^bxWg zUxZb0m#`TjPJ}*#Pm%Zp2?t#up)C1iaN)-@gTJ1M*U(E@S!J)rCtq86dRlONNy(#s zJNfbW;Nav-Ss#x&`Q=ZaemV2gOIg8q3q2LT?ovr`;rpoT>oMbh!WVwmwC(4Xf9Oi4 zJpuTBg^yUUw1eQ^MlB!tx+_^ZYTm!SK8p9)rgYg{wz#1LCLW@$xo?#>x+^ig@&8^? zFxcMgmL%F#=1e*M{8yQ-dBzI$J^&>PH48lq?F@~cQ^}l9Crw@dX1UET_=}mzcAitD zDqoQL?`2<V+Ju3QMm(w~hfZrLWE}bxK!pxa*6RL;OhiLt! zz22GwjK$bx0)>qq*ZQ~T%xWFX!4bX+!~JHDRl(6JUwfPQPCn8yx(4VPSA#;px}^R`z<~y3=TlpFS>IH|nQNu8QtE_4jiIT5}3oa~7y8D=rM+kmA67?1I5*Q2Nm?rcn5+sbUZV>A*lv z&VWC&=Y~eu`hooV*6-W#k+T&8G!4wR;nugeVmHrC_!P#?n4EefBgI(mm!K-ii1#a} z@0KN5qe=Ba3s1-@$%-$*1{0`ld^}dg!9!F=%$fKzqZ7(i^f`G#$)ysk;9#i-Dtc6T zi65g|gX1qjNq!idHUCW3E1l!xSI2j@1v>lVV`j$0oLMk){)b2SnUs`hXTv3|=T_qu7L7XYUwK{TrpFtC+i!5j}=oB19L5>dF zjCB1iEln}ikNaC%^N%*^d>VA!l|D_*ru>$!7H5+)e^yaWK}c7ZvlSnEi=CK%V+NkD z)4?q&fII8)^2hJT$G>0r`2CpC?>`>h7B+g|C!bMyk6V^I&-9<$9X4V7gx#-Hcb=QM zJE(8Lxt(EQXTl!$hxLaQfw=y#kfJ+}`p*n3?|;AlvGd&SR|03A8x?luK=RQ?MQ3y| zyO#$h7lq{)1;%{%xW8z(;lsx<=lUP-ZVUX|EAhMAc3*v^aCB3hrhBlnt*I-&V4$d> zsK2PFt!P|JQOjV_fr5sXg4V(OqV8EOPXE?!{1ifiHZ906ZbkRN3jmrC{V!0{)Djcc z31W2pO-26~WA6jh)V1{u3$!Un-_jPCD@+0voAO7-2!lfq3KH(?V9*hqF%<$ve3%Rp zEbvk#rG*Qzp!8w}9m*h8%7Bj7dP7kru|kv%SH(z%e|m`u4=PtB2oi`~MJDlnzqJGQ z-sk;hzHdYJ*=PSd`|Q2WKKrb-_HRv8eD74{3h|WUp+hZYX9*HTCm{@0UrvCHlW2-L6m}pAf2NuTiyZR z8|tVy1&B8Rc_RnfP;n368boZMx`_z%>cnV7HNJQ7i9$IU%^~kyf(oZ<7)7!GX^%0S zdR8ZLe@ro~z|FCzH~&Z>2gQO^t1E5}&?7_X6v-Ne);Nl=*092?sW(UQNB?(k0tX*O zKbtL>-i+8kif6In9@T(nt~%m)#K7^0 zjb+u-6HbIFat{+Dp4W)=P#PUAt3LH=^d2gR7_El99*2nOYJB8H{PeHU<39}`G1p zt%vJRZ@#^qt(AWJljf&4vx>?2Pn>14OB#Q?mf`$0{@MN%c-A{MKJnQPi|wyY0ZOte zPg$i;3ebDOPfD5$7!SG!sYB9rNGmD`TEU!i9NEEm%)jbE~OYI6BEOG!r#1k`JMC=wd=mG1LoB- z8Ca^{XW@K4;9c|i-(Jdj_DTP25bvq%P8#}65(exzvjy+j6o z%_kZ)Rfmqr_Mf8&{GloqhiFHyIWjonk{2bU$%}%5imIIZyk7QHxhIZK zRwV|xc*(r}6dqLM)su3e2V;hpI1Arit~6+l^5V~dkiT(J>mHEr1W_8 zxc4YN=?Ne{z85(7wLLv}F)f_4xua5PDoErzMKN_LLS_&S2@ohC zQ4L?AkZQEZjZ~S&ol!9c1HH(64F#D;9qou)8bvy#pd&LoqdahG8QA)l)IADKtwQl3 znEv>qv6pJ3IL>QQwI`*Q6anf_E(HXjk(WT(0jrR~Rq#gYuTjrYLp?mGMa;2=IBG@% zvT-v+I?GgqBc%}mBW^z1U(L9Sn+0GqYPH!~@CJ#w>TnMB!hf#y)`QZ#iNIU;bR!^@z%%Rc;0tVgzBZq{e> zor``R?;MWZ-qar$n?Cp;Ij}3O_g32AhQaymhhw2ilD0j)D=m$bvY$f(yE*wQ7%pjU zhP?XX#g2yTiw)X-pM#wZ+5KRS;y!T!^bro(9uUPoSjcw2c(CTdg1dSaEM@c+(vWc$ zc^i-w*;rO8i6mB(0>ooQ95G|5&}`eq&25`0GcjP{h^g#av+$s17Ais{2VQ{CcdlWf zv+YVv4T2CvKmhSpzPlvZg|y;4`1^Er9*I|cY8EnP7Z&c{Z~p2*&8AISk1K5+?=;-0 zS=e;2e=;!r{8u+_KzjUTGb9UOZ2$5Lr1XL5HSYWx0-AyIpL3- zN0G+$PSc$xjjO-(PM2Toa=g+$JQ_&-;*hjM1z^*r<{cY$ z+)5is8`*(@rz123So;o=kmsx4TjD5%k|YcwJqG;9vGe5jErBR1f`-9G=xY2A}GXC3_Hc;Sv|`> zUB;n@LHRKN$ca3TFi{l6fq-sM%#9o8Z%ALN`#wokr>gg90_HVym>D&S+BYvr(D)Kj zYF989G!1Q-V3RCOY?hKGt95 z5|C*4TS`^mWZ!pAz*-MBIE^~p>zV+dT-gs!6Vk`n~V^T3p*~ zGTXeOe*TTSD}MDUDPOzJtF@YXS+E8#^9KL=lsm3(65qVH@9Rq`+Be!anz=bmhSWf_ zy|fnW6^*+><6f_UjQPzQnnE${Vh(1ngf=h<>hVs%WUQW(&S$LB)KdGA1)1=8ACS*+HYZg`6^Pa-Fmc+xdI5ei|o&OPdRO;M2|NTFzx z^+2p`(4h33T85sMDQeZ16!W#<9|cU}-PhOSmEw{pQ@Fccny;@9N}1dj?(Wid{24xp zoT@KZN1TEcf@!C-XPaWXz7DUdjs;Txcl#1yw*i`;|x;8baR?s2qxD9l7=k#8eas6kNiItVdD#K%)4J~i#CtFh9xU{tis$BXi zD^I%g>-$}t7o7VIE`H7};r#}menEx+gQA#kQ_l-(wOYY^L))A{psuY&Ps!S9Z8i-q zkRh`P3>_H_23td|K-wTvw9V1?K9t1fNvhu#6y6hHa4~rGBo_5cds3WTl7N{%ndsaU z>pYpHuNtpv(gbM~DPBdB4YRTasb51;lD<+;>X5Pe$x5is_U?0bZh|&!Uu=`UDRy69 zUsqRRZ(^c*z;C_l&z7zpk8Ns#-emj4G?v}dq>FX`ejqz%ap)iR_QaZCURw&uRTMY-~6=Ro~vXZ@lSibwJztE~jHB-Rpy%RfAuFd8ryCUAF#q z@9oK^rtt8}@LqkNQ@XyXOR5ge2-YaH^YgB1b@m*V-?-TPyxL>l^^F>fEt?>`B^bIy zE?@Wc)w{o^u2-x5wX^fV{_|hIsYg4!z5DyUM_jxGJ|5bB?~MKt=$JmZ9~kI8(iu21 zIFgLo{Ixa+(X;0%`dNH=w#{R`dy(3YMKIMt4tKH? zWO49tN->UTk6D2So&{PNvuF>;S0O7(3sXm4cFJ;~6lHYOPa$CYkON%he?{Qmf$z-l zF9)Xo>%ZuYfEf&``Q!k>NE+azG0wu|5r!rG{wu<1IwE3vdg&ajl4&P8M_%M2ZE}Z4 zVW!egv8>jA^JrqE>Y1Yx_K(2-n*-fA^u<{{q{qJ0Itn@p5N$1oDD(gAZvFRvj{?0G z>=m@t(f*22cDi)V?iY2icH!u_>aq{)qKJs<0SA3z`lSmxE=iaA_bXz)CrA5(k%Fzl zY=bD84(N1I9j*6|xv^6!y z5sN*l8(?Q|PmUYK<>a`1kwYfK*REabXzqVB6;1g6>9C2|am#P>qrGg4F>Nn~J9-r7 zu=q#@AmRP)U~Lfwv)$aDye;YI1*(pfM9u8z=>I0{O^9U_vlM@{H?1ix?P!{#)|{g` zRR10vm+#AQcWb|3Rw@xomxc*L+_@XL(abM^>tf z+KGR1tiRA?^xE%^U5_lXFGa!VJuJrme>m88M-Ebhqa#jODOjES;t$Iu>15e48}Tp? zPZr{r9hsdZx11kWC9{>NYaLY8mgFW;9}d<=kJ1s{{>05~-7wwX+9zw*F*~ElCz6Lx z3=bzK4=1A~Y&rrtq&Ib?v%M>*`mIY#PfkzoN{>yZBSP3Ugf!Y&!m`E^HY{OqL)j2O zu@o-t@VQb7WNg63`W)`ZEf8Kfv=9le*@3~0SeH9@XyXX>4>@+%5S}U_sxs#t*cpgG zU|@1!;8JX$OQ*MYXCS4lIT)CH@ZcK!L052?`h$L~!PFb_ zpb{HhmVT8Z-Xq>{fpFgVgF~GM&!0cPbt}B)8#kJpM=1V$;Q5h}k-@<8gE#Q$cY_jc zz(F_gmnHfkiX^gen1W44&kk=L#OrTl9ke(}A0E1hTcLkQZ#h&&l??{cwMVF5(VpbW z5%|=%`fbJ?zkLw-tOW+zV>51?{ffkQ>`#UJ4kg7;zqn(I{R4{ zVh7alAjJm;A_q$k>_=B)&kJ&}Bl@?rA3*i}0Q6_Lz8wJM^~rz_2mcCA$oT*~7YCq0 zFa2R(7CGu?YVgwLA?jQ2O57j%)_Y_maL~mW1MLmXRTn?N=JsP0y#uik?Rn+VZYIfB2S$D3~)*!s(PN`%rT`&x&`G&u2*@6+D_y6Nx4mbr!g znuQur&iys0_rV%$V!$zD;R@DwSTrmhX{~s0)0!JtHiA8LpN8`Wse;mYqIT$nvWu|l zp%c0egUsTap@iyi$nu2LM&U5DM1HYd(!&|0hy{DBVRjb(j=@(DFSc`WI z%l|$~&<|zZzQBxzI?2O(iKaS7i)p?)nsb7#14sRN^eFBFH~204nZv< zwHg+H_cj9yP$mpdMn^-&Y=d@Ii*Tt=2D7V?aiyWb2N>8WLY2>EFO|&30A@JGGMj3q zXfS(O9(GAYuoFiNQYkQpA2}*Qtkl_y%QZTx1tGBXB_g4Wvki_5qd2Y&4OmA7L`};f zL}^{T`&~d2-ah@B%E_`dvEVk7W4FHu&^s_#kg~!xfL&{!X8M%;dSJ=rCk9~>S*?le8`xAnyKrvwP?yP&AY?HZkS*P2l3kKr1>?la|FjuA2-Ag z<3k8$zi~`XMtorBLgxZ~Cw2CFcLL#^J-z@R$8qT?W&wn;P4-GhKPKQS84IY3_Nr1Q z96%XxXfHY{IT`Pnr6YPC4%a|$j*J8@#XGu~D46oHJgnc52W_dr)Oe+{CXnuU0oU;H zK>$BCZ{np3u=CCu3}qnlV8ociS92%!9pbCZCxhklL0hn04by84HXfd*`S;*K@JAPF z`YCn|-tF)o&|4dC*7I8_4eIy@FyoV&{yKzcQl)n&Ex^{U`@_0**z&k`>w&FM(#MOH za?vaH3tF2wUbf_SV)p>miM^HBXLHSRp(h>;0j+Zv}ZBivf@ym|#&_V@tmkheY>vPST z8~8v*zoP?c9t;kihjgfUa1CP44;~C$Sjf17VO^k!pXL;z=?56n1q?d;PI{K$@aP2& z5>24xXuo5w15KsjQbaMy^vvRUt^^6u49d1Tl8*tWg&3}eg_&dVbpFPHW~`GAVt_ZD z4_rfwDy*RBL54##2w=_mz=Le9br9@))|rm|8Z^jXeu*D-E&GAfeuFsqo3J18#xI-b zU5pg+F}}b2aszapOw>-zN*=-1a5%ai#o-!(tg-**Q64-Of#9X3(=*~|^L=c8g=FI( z_Eci8C8}+P$OYmpVm%OFX$?3Us2AHJ*I@6-rcDR2R|Ok+QD~$%`7gqlP+@X$^3g1g zP7Y9206PkWnK3c>0F4(W=bX>6#{4K5{4wX@kH#O%f$>TxuLOclV7d~3=yK!|iBevk zUv9E<;CNzTxmjoo^(|BZ*%k<~z~%KV1gXxzFc0GZy|u& zc@i!!gkK)XM`fX0K+O7z%gY~^8w*1vrfyR=fGBw?3!sEU!$RzQ;8+&U08$ljmH>AI zKrvl~8b;9XJZfI3QREp~4(MDsBgc-O6as-5$g^RU7lkH1;}%_Kk_g> z6(gJC4NW{y!PJaFL2lN?LV zUksi^9g_HxNRAv3r$Sw5sFDvXX$+tdE!TxAImU9kQBtlH@=#T| z-0mw;0!Ua1nlp2B9AKu~f$dz*;oFtILS7t4$CXRseO3H&y9C&#mQWo?Hxww)))`Zl zk;7BT<;Kv^@+^#UjJ(_==M!aExuHt2DNHBo<^hVjkPrCd@^VpOd84_U%j3maIs7ak zM{JKYDtYB+W(ZDKMUMqqCF+)lm6AARXkItJTnw7ZiVI1wT0=tPRjQdrCC`X^6n5vA zcMAblo1d@B0*Y>9R;V#loG-7FC_}S`va+JHA|-aoyQqm- zEV)q?VmIb)6J{9;C9NuB-8N%nA;4(!g+tv!v~!z85>pz&OcP$VXDwv%gmN&$v+D15~U=vQ5XiGb!&H=HA`&S6&)8hlMvUK z4w8bj6l()_l#+R!^dw)`u$D1YH zJYS`9Mm|F@;F3Zypt?i5CFLfNP)M|IE-yM^rtz^A6)O3SysYl98F{`^+zq&FyNUp9 zXLzP^W&9a)v|Sgf0tPy#P$?SXsY1&+Mp0Iz(p;|W)|r)dmAO3L@~%=9$>WH*96r}B z5sEqHnNUu*nOh!~<-4~r&#ElXGKZOsd0{i(c6aB+H8$?**2SB<3lpLXm6i}=oJlz& z%2h@$TEu^~hc#w(Z!1w5ExH%H_!)_^+tL^T^c+AW?jdGfQA-O-H_iP;$4C=QFx zo#~!2W+}4@qeYE{7S&!npIqNYtFJOT+AOvg8Zi-Bg_1}4uO+HXRqLzJQ{rfToLCHC zfBEHh-nJDVn|-5AzR``*p^{fonZ7GB$F4ov2-DQpVA%TOv8Yo=P5}_?#7($6RT_JWNyOAKqWL?)|?!`El*qFW0^Q8WUxmUfwBN)Djo}$l4{R22B;rCzVIkqNt4vnR$x6)HGeXRog(glpKaAmq zt70%41Atytj%7qvq*0`jj?1w! z;;4*5C2;cjFs35Z*@e6;fc5j_IxZ$EozSSvD;LJ_Xt9Hi#`K1!l$YDPRbn$13A!v5 zUQ>LDRVTE^b9voDrCbjC0o>LsNxUl5s1kCy;%#zC{UC`K$TZHblD48GR+;XgMYO#T2L zB=}glzxUt>ZiB4{g>vlQgUK8|Y&Kx+=%AjMd~TtzI8!2zj4?)vFriCyG#EIA4|@S9 z+T7esOYQSms-EA3wKci>;C*4q`rzQ79~{I+YFgH^wJoqcNU%(fzRBqGt;Q-Gdls5#*D(9$#kpPg75rV#S zJbol>s>DQ6w}N)_b+B?_Vas{yZZ5ha6Hf^*5>_ViCAvuN3mBA<`^G2>bLA4uzq(MY zTDf*wc;ppETlaE&Ii9B6En!@HBTug4Drv!E{znQ#7mTWhs1e*we0Sm*{h7(D-vJLdMpx&w{W7b$K}PxSxt|# z;`fSRkOp=Ywq>G27R8cn+amch=6L&FG=)1e!x0O8mbUHKY7#Z@%(H-tPFuR(WAJ*30>!rg-aBVd2avWlYR9;3{HgDt4(xtvDizH!CBt zrB?FSm^$;3XGgA$9XWN1VM+sp`qXP+z(+v`oWS)7YnmXX@x$bbBk7d`zZqfD5+@{h zAjDT3sb;$6*N)sBdph>&h%!?okGvMiGjTy=N^ai%BTCeA*$`^WO*FQ0n!`q80(UVC+I;vOyvODtoj0R8`WVEm7bo%;K=r~9wHyKyXj z4BJ>g+yD31Pw&1uGIs6A@xLFrcO-KEibv)sCD;5at2KVxs~3^xtHyj?d5l>Xqx`25 z^M(jBg>RlUzECIkH7m=f?4kA-5?x-X{Ds}F;_5&oDwrJ!iXtn~Ubemnr zx7M}lIAR_UPqX&My%HOqKn!j#OR zhcAzRy-pqq8%}n)u63xj74uD`$-F+E6C%d5VXAu^Z!NcqtiB?v$YRd3=2?9g?Z4## z%F}KQwU{_(&gd+WyjGL%lh{Zo9klYGnHtf9hvf96rLgWDA=IHL zk8?2K86SQ*+cG2dZ8=0ZN->|9i!7^y+q#sS@m`las*R$-B_t1q4(Uf>hl5!~#6liN z|B%d)eC`g}Z|uk*i^C4Pj($sZpvV&Mk!t+if!m0Bm+L{fh6bD>FIiNC-$9K88+D02 zOx*z0T|{Z&fusHQ?%uMEDZhh5&C;|4u0Yz#tP+$b<>0q>4h}AL=d1wSan>+!cX4sB zU>W}t%u3b?l(h7lonPuOx(6z=bX&NGj<+Y2S>U*H>huN}l|&4V8H5E#oXoe5qBC$c zs)mkB3E-$f+*H%wNitZH-$DikNlNUpeN7fau@1!z65To+1%Ma%*0FIRkL)U=6dM=V z?IhVR`6O#))@Z3591{v6AIV=?{M(vH3cajtf#Z_m1||3Q>fuuhfD5>kLgy5wbV^#v zPBLr44P-G6e>r8jB#tb%qX^jpB`PBsFUfzI{bUDylv0?ig-1c2lN&RP>Ki6Y zXJg{uje3V1L~h$%AS0%GgseE$#brB#5ZsPfKo~-5K~h-~qLN&AWRPJZLVigI zi6qAa6BNQ*a7&p#xD`?c{4*+I6mkW$M6wXv6{yMQ3LU|(2hJo8{R^EW?snW+CpfAk zLF`&}B_C|-qm&6@=mNkEpKycV8t%(=kY|9q{$wp zpvA#-AfN{Vg@UzfNm2;*Dm+%h3Gh{kUCb^5pYfEzN5(&sfHwtc93hSrG(m`nAM8hC`4< z2IP=VhcC$|?lO|rQ5JkV5$+Eh_{!kuQviYitfxsY{3~n__zJm^1AkyhQ$|uSC&z*~ zQlFy_(^>DPfw>Iz3z8&~j1g{6Cq@E&lLqn02)c&ipj@kIoV7V?*(e`PJ~{{vKKl5? z(G92=I<%&ceshv(>S>hb@Pz)pdbwT@M>_JEsXW59C#OI7B4nL`@?zuY+T&EcJ0$o{}=3=eER8M{_?*c{-1|{ z&wTjse?KIIOQ3GPPt-^{Z)6dJNRa8jK>?0pi1wCDI^X~^8u%d}3~Z3S53=^~{zJ#C z`u250x`o?%(c@5%5yA zM@ct}#)GE0VbsfxYlqjO5_)ETcTlpz9QfpfL;qkcti(`P{-6H^;8Gm^;P^3RhA&8C z4A7?Ulb#$IA$cEV=;6jcW+FEdEpA0BWkDWjm%Wewx6ToCsJ5+L3o_pd{{YK}ylWkD z&~*=U9%5F`IkCra%z+eu#EOuell1(=FzlS{LFx&5UNP0M`#XVIn8}MVQ)3FgvGqVR z{9#B;w>CrN4OnXj(DR7KoJVg1q&1WJ5RD7vMA|Q;c7*J|FghS=AO|1){E!TPuz1kQ z@;%Y~3+=oolm}^0-uMDaAa0~jN$rAu2u~fkx1_pY6OeNL`X-PJ5kRK{9`Cd z1FD(C=1{m|FWrOZ2iF8bEKjGZErrIvn>y7pLo^Ui{-# zfR8f7#cuwWGI&b zSr7@p`J*Mq{TpM^b2+00o*r%=bcBZNaL-U#tiEg_;3_P zexz+hITSoF47>7we~RC-!};Bt&!27tZQi}R@o5F(8J%JeKe#EQJJ_+JV#mf$pKthd z$A%49NwBJSxINFo^M+wuOOO08^RaH*fpvx(W|Iw=0ZHS@4QmXVJ7|6(nLF#I2L~UZ z&D7QC9Og(JgV>7;xS#V7lm|A`ni+aB51`-x-I0YrESNe0(hc;-B~~PlcOF$S~?W)oxk z(!NZ3rj{Ms^@tS=#ZuVOhzH(K+aVy%5$~PeK=e&2@lMhM2CJYL6|Ff4)eWfD99$E4 za3oznqAv!7*2wL&-hzVL1>hBPVKW;Nib#kXW8{#eMhYRlC6TdE#|J}|xYRL`L%bob zGDZiJxN@!z;sc11Ibaz>_95i)%DLOXfdxYzBC1g9kWmgUixGfI`SwVzFC<+&JC7sc zn{<3wIJIvxN9s8LjER@?g)=$;ueO&!mZBT7mkcSh3JSPfu%5vTvvUe0G2Bccpjel1 zSQ#ep&z9l>kuEYaADi}D#gTR)__Q28jygU>+dQEz-&X=gl10ZC`HJJsWS<`Q0ZDue zN7-7gvdbZ}RO#xtB2KxS-)d4>mpYeiIbHfPpeVL(L?o>j9cx`AvK22)cZg@pQ>X^e zZsdc>gK1w4el<9lHkj61>~x#(V@asK#RX13x*rm-aVcJ+-rUCt&}ZdUtm1 zq+w)3N&9j!SYI{c>c4z7xQX!J@s)}wMslD%Mw{62v<9j;=|rZT>7C=Ko7I}^1VD1E z(y%z|>Po_10bFBeY|_uzPmE0{B?V3;)9t`n26`<}YyqcCM}R87MNeKrTuv&0;To~h z8ZWZ$v}Ou*CLrGu+${i?ksB^4E@`L5>KTWqpOZvMQ}N&_a=^M5+h@oQJG4HAAnWG~ zb@(H(K_LNX+e&XT;y;#)bsu!9&ZtkHHAm<-`8CSR%K|<-Xh(9Ioy~yy(RcC)3V*Q9jgak`LwQ z>*Tt+NYfAm8+`sy76?!discG<+r;Iqe2YCavQ-#opE3LLtmVAD0Q3IdRCh+yYByQU zd17B*z7-)mpIZ*S4A|u6n(guYJg$`!V!DnT{J0lfZcM9@s~Xx?5_vs7GEx#3+FA#x zG)HX7=SOE*!}wxbH>Z*V)B!ro4aVJvI-SwzOW~He|xZ>r7#f`FR#@D<`bg^3Sk3 zh!7!;(Q!{TmFz-_aaiK3c(PF zEN6VfbmeC(XRg_YYO%M*!P>5Q z+f3ezI2azXn{{z39rG!?RUF{IA& z!5K@QDSoPM7aHhmnu3im%ud!R>qlU8TQSm8M2*+vAV_jBR;i=MLU)ZDg%i1OKWx>4 zU=e==@Q(XW0gvMG5J$^NfMq1(s7U*o5@|U7`G6m1;fIuGoq?>2!{@+C-mcam0Nm})+me@O8LEpnnJwI~R+wZC$>Zh?(Yy+k zO1#zCiicj*lg`!SrxyBLUOmIyfp;<3#5J^D?CYGExY>8}IQx#Mpf3shuef||e@Q`R zCd^D@PPulic;}FDXG!J?mGIg|LV$(2RW=dPa*hI+fM|w#>yjq|Co2B<-*-n|H66zn z3e`>PJ@%s#6MsAo;HbMmXZisb{v(A^mWk7th>g;yGKc@R+J6gBHgdoo1xP62h>|@+ zK#PKwHXa&U5pxR7{*N{-H5r#dg2S;RqfyH1_-&*RT^v}i4mzc2b;Y4W8*w;9SZ%On z2)eztk%*c8_isEzwhZyN;xYnc+K_C%Qaz{!0C;4r^(Lctc!VR1dYS3PLmQ)xUyg!} z!lV^ZdX<2(&JMc~0(GD0kENj1a`5r7i zP!e1_t`CccC=@kteEY!IA5T|I9`os#94H;X`}B{1`~uJ);bFmn3!Kq0-hut-aDE*f z5l;so&Aj>a^g!w9<2Qj}M^+!vP~ZZ>-xyT^RMw4$Rsaf;>`Sh=jI2*tDga(79CfGy zor638-lBMjWI9MjLws`bJ0?3iPCqMM*+FrLp}kpfNM%0Df;}P`*d{`fos7|&-=bo71CyJ{?!csuBc2;L~SZaoOJQGCttk1uixW@%Z$w zXlLDmwvvrX)_pWQ7#}iAiJPHOgjvd{(Tx>R0QG{kNM90)e?{})K?7XG-_D;mY9INt9 z=YH@01$=UJF5rfVxsM)T;6qrLsMqb!IXg&9R1k2=n}0G2<2w@qd>(Uq_=0%CkdVPqxb zUUb@Vc&N1mcAcD16|+Nfxdf|6hd~ltiCr0)SSe~%6k3F~T_zGjALFT@V#r87IZDOV zo*{tR$*$;Sl%s-_A3qdyI2s=S@2;?{$jr2?7-A1&=EsMy(#XU6)soq|BGb}pd4Wn8 zA>jUw)2$uiMn&N>_c9X?~<`Av0A3go-4D$uePUI*KGuG3nYlmQa zwSs1^n>1O0hQ?q8?`aeOS%pJULcA4^Y=r89X$bELSXmKfqIoOiWQd+QCd4}JRd>FB4x5U+T8c`OY`J85OfN0Y&s zKLMm2e3e25f^T9**G~a*R{_+XPj79&#Cm*V)QTNt&qoHIKd1di#Mg&PKm9Y^c`WM( z&x79qAq9RAwFF{U2|lOsK@EpbY_>xHLF^!)-T8Ps2zq7`{B*6|C+Bbm@_vPor2W9)QNsxAZ;4>Ep36R4fPuY%JM|ZqV-T*wP;lZQl z&u=W-@%;7viHZ&5gMsOZr;0F zaeShp3UHLi@v<6)&d1Zc)5q73R~#w3S>}|sZ{p+0&nv4sC;j$)xO#eJ)#~XVw#U93 z`$2H&caQ9pA8TaW=1h47fgU*8wh;2lb)$}79y6QnEwge0h zeo;5m*w~m*7ni#`E_avtdYESdluARpp}e^$TCAJ-RuqyY5-o~zbF;dKaua648b!ID z36C4?3AtNDbz*C`DdcgZC@ZVLnA@%N>@I99EGfw~g;S*-XA?v{Cig7%j3#$2A%~^Wt)ii^iESQFOf0J`)$sZxm-0cZ*?U zw~?wg8GS>-Ou5FHLQ}Np@tKfcMdItQ^qG*`ZHW#M$Hkc%Enz%fX1BO7tXM4OTDD~x zhuXW}ZGW`wvAHlVG^}x|5LQV;pi}wC>?wa$a7|S5?oQPT9Zde>T^02#qFr+6^2etx z-+WzhoMz~|0NE$V%BPoCJc@dR={gFCqgXhQZVnV~j<9zlP2@PC1O4HMqJ)AuKr=f2 zfij8*l^n~1Ii+g9mgY&${lqr)lP>MuQxt|LeX6u zUSGQl{Bcv4MY%7q|@16Bms%CVwBJ+2g-nV ziG=DVr_-;hk?r(oZ*+7nb_DQ4EWpMEK5l}s@w#X3mfXkY+>c=YbNB9qExsYSKn)Io zY2N7EkOa?!nS?F5-@yFpV#4CoF3Xk~Q$kqdW3x2@D7IkGi-ydlhl^>{%y*3XOPG0q}f`5dnb0mLXt0BgUqW54@^A zJMrky`W3ISvRF~we*D$OjiaLg7{v%faSU@R8c-53FkM~oY5*{p6OUfCuNZy$=ruK< z;&sF*;PO#B+JJfq+?QHGh@b-l0E?|Sg;Eg%lov@@Q4pcL9s>j_5JAU)5)3&35S$+Y z$P`GX0BaoulJFQP3+520Kn4EC##TNXeT1A9H_yHvh^QD?@APzRpm+W0l`EZ^POrpa zCG!1r^X7Xe*F!gA`{|Y2$NsgwsYQ0ocDiLd*^<$&T)BPa%F|7sA?xX;(@pQJeCNY9 z0>9gS5$0L|3izt58WlC2KE1N(bT1Cftz6mHyYh7PX{XcEREWhjjpMMgsrsjg_fDV1 zU-jwFPH#U;#ZEVUc-rsu>4C)e-rP1EW(H<9Z*C(~G_Zwoc3;&y?*$*e_|CpTJzemeqLC2N;(hjXaD`+sdUO|2| zo`ES+PGH|;YcuL+HQIR(?HsU1Pp|ClUD>p(53E0L^y#zav&6Glq0~@5*U5v{gWQs7FU5@0~kG0gaa>Q-*Qvl70;wauPv@Q1alJ98`FnbmC8ehdn|b9(eF)dM)~ zij`-Z-dk;G$&NTXT5&QvqB?t409`Nb?3_cJi#i*^bz5>5|u=;C*@9(OK! zyyMR(n1+QM^u-8=lOT|Q2|GtPw+#(#0$H{O8fDt-1^{e&0N8SSLqo%yp<_1KRFeqP zNDNr4P0&(nGYIAyW`8}rI=tR5c5+pQpUX+?+V60#OzAk;))zbe+3Lz;kZVtmH}&;8 z)vs>ql1;|;LvG!rU+p~k@xarKk2Y4ks)#@zN8lUh^2S4DC70U=22NofiKxaTfRv3- ztMQqNFS+A*lRO=r9{cI(*y!cyuCln>jV1boT}juc&o6p}e8T8NU zCvCP48+!Ry`g$X%XLMA=D8Q;tF>1zF85RLVv(shACaTBADkjH2IXh83zW*8M@KnWE z_1H9~>*F7fNd>?;gLMI*3D#;fhPhw^u;+tHQ#4YV8^Om0%6H-3f{Tc>>Zo<4z-SMfqYom`IO?qC!%h7XJ zu&0&`0xa%M+Wn{TA1>&3{|RvJUKcK0`{A=|9~W#aDA-?I1~c02#f$Bp-&|PiX)m}u zvBhg~cl<@4&m86| zjr%{o{?-66yWjzB(cgkj8ocI`!ZrSL9>w7$&hF}@Hh9yn4Qwol>VP;-hai<&qcdEx@!1jP}50$(D~`pb{2$dcN^u z2Hs)I2S?A3aD<7IZ!Q2%ABG?Ivwa z5W9eEURHrqx-jB!?P>tTQ;@2QK$Ax+?h$@mZ`t@LU=i0(I9;wjK0ST>W<*7M^?IPH z16jQqKxF`!E9)(zDRr8l(t+!UC>()BTRl-mLBeJ~J%LK9oe1b``dI{_g;fKay|>z_ z2{4b<)6ejl#1&$ln)EKDr;1wiy-ffv#e&ZXFs9E4#jAQfQ0#i0ZaYA}de1slPvCRl z8CGo!s2x*q!~mv<(TeGaGWfV9h9pn-gr44rULCzhud<4J_@jA;F#NIDgz+I1t;RnZ zM>j;E@$E=J6^KP?gvgZvO%K^|*C-ZIJ#pdKxeNM3f4Y6{ocp;y75}N{^N8_w+}X3M zWl2@zw}1OB0P*C=4>~6c@(K^S@WHFZs&gslQc_ZiQpzq@PXmJz_qKk0Z~JWoCe}Mu zlgtg>GBG|r?v#iH()wQK&u&-g6Zl&1L0gs`g z7AA4d6-}N?DuSh+3jyaYos*p-sBbcT16Ks&qsad9+|RHwRVe`}NlA&R zKuN6)cMkCCOPQ3qd!-gl!kA6~6%0;I!6Tlk2!hek+EnQ!cNk_MYdYU6zK?j;{tRS< z;X|9BIgNuRU=^aedi`Y#D4!=A*|MTv=(0nWAIuCgAlqLkl0|KRh_4WFl^d|vzc=PBc>U4h~1n&R4XNrS(h zo`Bkk)QP5)Dyiag#mn#AzyIV?S^eil^{c7^eiNj8();}f0X?-vmBA@jq|y&li&iPZ z=V}eo^(~*vfIAD5K#8AxqL{2zzf6_Blm@Q?RITEek4xgoem|FEV3NAD_!wlf27^Y^ z)@Bm~*#rVxZMaKIy|YcNu5ZBdSq$if)kEl9t!C+K9o9`ay(7w+si928XA5tOky zeCN+W83DGPu)zz-YXK7&Ll|5D?qtEqXC(y_I}6CPQHHJKaL0S#O&e^7WgWJT*vZmk zy-q-?PLbW2>?=)_l@@&1mLY8@`>efSRm09z^NE56!QqV3*-MIy?WGO2pJ9ubM9k<5 z1b$AUYrz03YA0L3I}2Dpk@a7+nZ&~oMxzywVIwac+mRVX$QCg>uF6i-y86w|ex%tc z)w-&KVM}<)vFZwv6gy=NZL;j0>YeIY0X_i;P&FH9s{Sy50|a9@=^REDpw3bP%GGFX z4Fr8}z+x6ywF-eOmBj;k7aa-*T6pWwp9oX8V#Jw`ex?{ULd&B=14HA(?&t8FPm98K zvcb>2#o%LTo13e})luiFpkP~&K_Cb}c`{re@R?h10XDF~`Hihs<1bTaL3M35jmCyS zr0da=Qef-(xuu2Z3kH)RvTtd@XnKK8vVq}S1UpNvvvX+5WTigIQ}6kKK1ilNR>a!E ztSghC9bpO#L3_E$DDft+H9^N`o`R( zq+>-bZ6I*hjG!bR_l!2s&tXGK%i#utwCbd0^;`x%wBEVoKI=N0fdyoSpR^+da+B~Y zeunVv?tXXL3>_VtV;k;F-r3$)S~MB!0_Z!}%GI=iV*2*&@uuF1c1%~3`zD+w^#Gs5 z%zYN>u6n(blRn+0-}P9RKBcez+dC)!s*eq?tkg3V|FimimHOLB`p>#<>sQzJYpW8| zE9>XOV{L?!iqF$k9`0mcz#~1qJ1sr2GAWu=mt4FJ_3nu_t%tzh<{vJg@7ESXMoWLC z&F8SIdqa_JHp2zlPtbfCX$uD&6BLlz)Y{nG)};c7aQrW4Un;c}Nq6<{McAn$ZRtv^I^qXpG-PY$+B5{;72JR|{9J={p?0CA z4LI89)_HY?>#VJ<|B9f)U`R0>bM41=lg>))Cjn3%p#2sA#@z;^-HDrNHv^6PO9uXHJDb1}?$l(LpJ%+IOkz*h-3oSX!^B)xL=U*?0o^15;`TpqQdk5RD3AyHq?lqL8MP#jjvc)W&dZDPF>FR^&qNJ zyemBX4KmylKE}H$d%IQ#pDfik>FetS$J|?_G64{PFAC<`U<{jelcUdBtCqTn!b`D; zVJXA_SPnXR_W$--MsQ+?S3qIVHv%X{M8M)$r7V&>M};iOQDW%=%eftqRMOvn&R_7h zv5pEE3uvic%HgOE5yb3Sj$lVRV==5TtVtA4&VxWK>)XOxR=ZTLuJmzn$&mWNlDI+< z9PBK!wFzcd>u<-d?(eGn%&Dp=cC~(A_^}ULPRpbtut^2*WMB`Uw4))s zp(7(D#d$K;hjv?~SL!?NxWwxF^i7kM&b{Lx%q~zWX}Ph@0ti&<`#`PO!3J8!gvwGV z6^?T1XXh1{+QR#t6-5Rh+&k0USEshs^A6cv5L;tO+w+mH#fafCdSHiZNblJC%7@iUy6yWUFkLoAAyuy22io#b1 zg$LDE_fAw|aa)hv-&cYNK6I}v^4G{bg2O*F82pRooy+=vb9VXA+2z;%+V5RH@N)_7 zUnN_mx#Z{KE-(bUw)koM@A$(Si+@qJzq_Vr4(RN&v(j1xUV`%(3c!Ptb)+|%26t^Z zmX-cmsZ^lGGH;GN7+SyrRpB1|Ay%YC8uhAR*_>c5SR-vy)P5qnB%t-koccpWFqR^d zilRBJBVYAy=f4&f_|+ zuJc6-SE)h(gVx9%3# z0~uh~0^cg2NqnzN1B2Z`l=x2T@^ONZgUSyp{V0ksyx{{o7qcno9Ar0lY_cbHb=$9V zF3tvZxSs$kx6)uuu*`pzKx=qs)trBu)?a|9E!f@WHy7-o1;@%=JIDCY#4GjJVwJ$A zq{%9mNf0D#Ho4mZYI|(q?mb1d0X@>xRjvZtDucj173>jrjiLxlFg)96w9H0hEDcs* z9>*=rxoiDrL8<<2ZCZMvWY3~vnykTB$2=$q)@WCGFi3V7I>4ppC>4`Rf^fZG@N`xI@j}aw+|Np4Q(Wi)7id{~1ocJ#TxM>R|VT18yptEVv<# z!t97JAot%;)KWIOI=doyj!23@h|Vd%oFmCmj#3&%85_t=2lrl=$)0_^D!3@sK?a#+|QEg>0F+ zzE>pr=rL@MdxF2}>A81muV}H@8utIRbv-amW%;`L=&l4)OK*+rWN@dVh-CsuFf(+= zg{^tS+L9F$hj!QnJ0Tm8DaacsyDio3R#Zd?G?fgDxTX_>KtTQkht770*|7!GINHwA zS0wVvpD7d&L>(xR<$b?fXZB_D4)pZibI(2J+;h*pz4v#%-}fz-{AFff&9J5hIMn}f zQt!tG9jDiY_h*jZ%u%PNiqjgV01(Ko zrT~>{R;fByc}Pae?EB@0Qbumjb$3I%y%kg8b0tuCXCecFN)5->Y$FYG4M~6pIJTs~ z3deRC;0X>UxFkb&o4pW_3 zm%!Q$F=n$Z$!Ht11ujEk+{}UKWQxQK#1w3z9Mpta2nomRJ=OW%z#_;r)UG|BWHvNB zdtv&(_teG-e8Bne16x(F6ELM~X#fhpwfMZKKw_D^sXj9> zyzc_&ydHh3;m_;Q>ka$YGykG~|J0tT+sk0O`NMnre|Boma%QGF^Y;FR<$US;oww8S z-}~8-cflhB2>OGWQ=T+KeuK;8?c{hC#rr!mqn9BGZwrtdwLtv=)Zl$D(tr(DuRnP2 z57F=CyEywh-^);&`oqqE_hQewM!Fdg~xto0^bFXRTMRQP)>IRlk04sT=Ce?h`w=x8j z8-OPSYXh3=uG{wNRB(l((b#+|>foZut1(~1jGP%I!#b}C0{sE4QW)HE3~1X$O82>K z0*!fP1t@GE8{Qwd|x^`;t9jebL~O*M1&Y?O*u)U9_YyJK@P^?^3!v|23PJUuQ)y_E4wBXb?H z-WxWX-BD^d8!H!mrsQ2?T6}u{nkG1O+X1ZpW7AS-UP3-Fb)4tu5+DPw@G()DxF} zxKqUMI9vqfcm8u6b?mGD{vy>SRsZwWOFtCti&EWbEsx^I{?N*8Jy?#e>AsUYcu8er z<&#whRX?ErTUGm7&*rwulzu*M;F(-EBQI>3>4uJZ_nCM89_5-2D%8k!Ic^t&96w1SyBl+r`cdI z_L@0nf!B5=paT-qP-;v9G?bv9HlNuxHnw7hWVp#ZhJuVHNq{h*mEIs`h|DQKtpGSf zlS`OKqLEoS77Rk_7#h5oD8eO10aMPJpbuFwtN~hq{w~34g1{a&V^Uv3R~M+51oS;- z28f2{OrSlC4}rNtzyS?Zvmw%pNv$Ex7_Le}x?tU4HxT4>liLV{D{Q;5H*9XH{gp0Y z^xJ%PBbVd1T{hZGK2EP07}$Upw`ZGe#T3B3lbugtLAX--~1y#PL%nwktWP&vIvEm-L@9Y7NyMlFPj5??-A+1RHkRWWNJ=4 z*I+1F1Y_U39@zk+9vEP5Fg)=Z<0x?)aWIU-Ggq?gS!}>0r&6kC)?^Mw$uP@{>*9t} zZ>#@UGUZUJ-yLY!zh52w{;7O5??Gon=coA|sZ7i)dzKkEGw7ra>C_(avg^hEJ&RJ; za)W0EP7hOR*YctZ_*+Tp9<`UV>{xd(i_0#x+VlsVy4ObVS2%k#U%dMd7A3FI5Mm37 z0Km~lXINKzq%IF!t4wO0Z5{kcaFLLfcnqB!w8h0@e$^(RWbf`yy?JxmXxqIz)dnts zn_G9>{Cw+H_|mC4hEGoc1pMLRsm}FilUnS)=vq-9xt+O~e{FeYeNp=7_2uY4iyPib zTNmfA=jZQnEqbEWw`UrpX*V2_mSA&lsvw~DrR_;g%j61x;1$?#2?cf0%`KU!p7jS) z;{47d(a)rvw;!y#_BX5#boNdyPKiN9C1qp{iw!Q%TZ_v&SFhUT={1NK#Zvg6NW~tP z&V^6Fc9ZbUfzMCu$gWvbR2y7Ij@kf#Jtnq+&o(W;m6rC_{3C;mm48|2XO#o&;A0s8c((#1(^5S?MJsCh5tP5mVGjQ zgt!K>w{HjSJSYpMw~{bJ_6}k%Aoc*tL*d6lLn~Aza-nP}b;ff>ILT3ysp~ADdAgyMW!u9i7$?orI4xv89tZRPa1hdJmtAm`l-Vt7_cw8#Gb-K4L3A+-1$C8 z^Y~uxnBXbR>f=@p*g)k|FHkfR!6Ta{C1~^y_!g&(g)XiDSV}LRJYR8nr5ty_J*RZc z%}JTLYRB}njHy;mP05&e4w2!ih5*dsyZ*u2mCXvHSrOw8H>RZmTVd3VdBpxctZnj-#BTh*dg^uOHZzamoUfM zO2teX?I4wx$c0iy?x1S`V;LWcL9KuWu~#0;1W}Ajh^-&l=yIfX;u=6+YB#o)h1*Z^ z?L+Z)ftZ&StHV>Ktj!@-TxSaz!@A_u?;Jj27l+NI(T z!gL!adi}$&YOu96t6a#ZC;P*~ta4RrRBQR!vyt81BB4+uw9B{8Zby6`it3oHZ&f7^ zCJP5u!tNqiKFK(lXBj-3SKFEgA@*5evQYSK*5TFdn}zbT<(AfnyyRq6YXsnDhqFZ8 z{d)ac)eCjTU6eFnx62=H#+E8r zyivdC+lj1iHz&_NoZXz9Tt53*#4i4SY%b5r**u#!o0Suhx0w$Cdi&sJInRE6*Q_Wj zYPSC~)UVpb6Iw(?5wT=H1=xT-t#NpKN2q0uqqQ)(!t90DoiE8kX897Gq*B3dOE$3D zmt+xZ!oK*ToMbJ-CUzGj3glV<|ra6=vvX!wmBeKsGKp-9; z>_b_|7z9IF0qkk?zs>IR*;^XiTm#n~Yj=Noqs7jhtEvjS{_v%0S<(7>}o$-}_-j?L|UHAFtlUfRm6E;|! zCv=dtwO19|&)@eMxq|x>zJNR6OLDjPdG)>uk^Hk*?yv51Co49`Rq^e-eLlXWs(fPj zysDMY<@XmRMs09wCsjr7d^sCCI~cVqE=$$b5*Jm!<=2x7dBd~UA3of4`8uhLgCcA) zDzU%sdF*q72_;VAMA8UARMD3+NiovN$llSV;#R0SuENM!)X_il5-|{rFjlfAY2?SC ze~v$#5B8McBp{&oEBXpH`idqiYJ2+ndN%t0)X@_Kpm)>r$%=C=SNk?LayBXwHztd^ z`X@!3E3W=pw5bKPR-nG&-`yJ?zSlB;@7Mx3pP+6I!ZlDi5vLV6o$$db9I+~{7Zv?= z1Ne;Lk3Q-u`rY<#&=wf|(VV)~qQuozmRIUY&G<<=Bo-7<>{a zY}-a{KqksZ5dh-Y+|yIggB;|!kijm|eh3*oi5Wc^VYGs68StzK>*=`=Mk`&E7YhY_ zaCpFSsD_M0+O43c3z=!3FziCPkci3(Xdk5a!1hgD#2y3Moyc}J9WHg+bKlURqQ`I;C^@4KbyKqde5d1p zLqK>_BPH;QT#0dLNM%=O0goTZAZO?jAGi)-q79apy+Gy1o0 z$73K}V+Bjk_~7sp`|#^uZD0To0_!8cn$cChZ{HX7U12*fgoS|%)>eM5{_5ZVN=P%p_uz*mgy#t*0EX|z6raKg|)CVhe56r2XGs5u)T^SqdsNNKn7e-*n?-ge7Fl=Uxl5CJ98#%=NT;1 znV<^KpqQ}Vp8NaNs_)u%w$--@>yHzTiAAUl9=|#`con~!)Lh`$*tm_b^ZynITot!7 z1hS&|t22XfUxme4kV;rA79K@0;8uEoo%C;#0h-dEjf>NF&%1BTcv~i_V9##ZWDguj zDr~TGzf7JvB!6;G{?UO2JFi~kHqQFj+VpMmdlSd*Ezq+IJ-LKJ+x3=(O;}u@blg!9 zffVut*a5+~1d63M#EeAgNVhJ~J5p!_qZ|9xIB0Lv(f;zw6u$|`j3xH|-1}o1eY2@- zIVVsHN~>ukv0GxeLyT2Wv4PqNQ4Onfhi@bi{~F>(EKmlDS+Yt<8B!|<{#`c;KCnOb*?tKhKt-3nIAW}f&90w=Pt+G+4mZ;{+ zz+VGB$8k#k=Y$GHoizr;V+t$Vz3h3T{(aM{M;lMmnL65jG@VVQ^AS2D#}3pi z9B8zjbRIjg&^Q8Cy2hH*k84hhOsAiYNk3h7`qqg9;G+ZIUBdJ&upC17ie(ygqQ%ru zkn>UNL4tP6nhw8LMFLxY=*&`lU}5CI2<uov_vrsaYAj=>V!daBF1Y1Snjc;k3JR z1YL;(Z!e}7Z4ml_H;s;`%<4o6dWNOuy1ZOr&M zIu$KKd+?Qj-X(!91R|7!t1Wtt*yFGfCnesghz}>nTl6N}b$2CdwTVmULgEM0A{)-P zRYARq(~=JQ!O_z(b*pef)qgCT)8Hi0UAd1~$BKZO2~h)z>jzFpeopc(C>1jeue-H1@X;_+Xv=o`6@;)2fSzo_%vcA48ZfE(RaCngax}Kjn_{HnNuDx+N zU&l2)ULE<{ncrKQYWr(zqnZFkhTtR)vqLTy4&u``Jp8&zD709Fa-oo65Yr7%_;n0v zO@e(JUK}{|rll>Gy4CRNctw0&aSYK9I@uTLe?>AOmg&QKnaU!osjUdGccR_ZOn5b3 zj7O?L1Bf@#ctt{)GPgQBH@P}y+8Pcb!h{|AnCfh2O!oBjbn%YqvKQU!474^!BWPVj#4wrt#J}$7EN>%d4wlo5_aV1{V#konq^Bdl@LuU>z#UE}m9k zc(bCuit+aFIwxL$i`$8t(OFCbRFObRgvA(&R%?Q_EPFcM3O%*SM{)HK@!F_$bu_Owv14gGkGg0Z{31y=lZF(%XTE%n$#=YSc5J~|eA%(O z`uJsC4CHzh?bWypP+vOvxAmj}OgUl=)%x1UHl=RW@^l_>W=Tgg_EV?b>55FL|gP{Eg z?J+nAQVSeKGqD2>gvfc&)VjJ+`U?@FQH&6UW2Gl~D_DBcV~DJf{wac7qtp6$sV@C- eopZdt;|n+>{<5QX+v_g~MO%RT0$n}@OaBYMRXafd literal 67584 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 C=lr$+ diff --git a/texture/panda/panda_rectangular.vq b/texture/panda/panda_rectangular.vq new file mode 100644 index 0000000000000000000000000000000000000000..5602e26b10ec7677b7a9c334a84480c9a216a524 GIT binary patch literal 51200 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%0D?Bp`+@9U!?i~K|h4IT@ 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 C{Xr%G literal 0 HcmV?d00001 diff --git a/texture/panda/panda_rectangular.vq.h b/texture/panda/panda_rectangular.vq.h new file mode 100644 index 0000000..22d0e39 --- /dev/null +++ b/texture/panda/panda_rectangular.vq.h @@ -0,0 +1,5 @@ +#pragma once +#include +extern uint32_t _binary_texture_panda_panda_rectangular_vq_start __asm("_binary_texture_panda_panda_rectangular_vq_start"); +extern uint32_t _binary_texture_panda_panda_rectangular_vq_end __asm("_binary_texture_panda_panda_rectangular_vq_end"); +extern uint32_t _binary_texture_panda_panda_rectangular_vq_size __asm("_binary_texture_panda_panda_rectangular_vq_size"); diff --git a/twiddle.hpp b/twiddle.hpp index 7c521aa..170c7c9 100644 --- a/twiddle.hpp +++ b/twiddle.hpp @@ -26,37 +26,75 @@ alternately, in verilog syntax: assign t = {x[2], y[2], x[1], y[1], x[0], y[0]}; */ -constexpr inline uint32_t from_xy(uint32_t x, uint32_t y) +constexpr inline int log2(uint32_t n) +{ + switch (n) { + default: + case 8: return 3; + case 16: return 4; + case 32: return 5; + case 64: return 6; + case 128: return 7; + case 256: return 8; + case 512: return 9; + case 1024: return 10; + } +} + +constexpr inline uint32_t from_xy(uint32_t x, uint32_t y, uint32_t width, uint32_t height) { // maximum texture size : 1024x1024 // maximum 1-dimensional index: 0xfffff // bits : 19-0 + // y bits: 0, 2, 4, 6, 8, 10, 12, 14, 16, 18 + // x bits: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19 + + int width_max = log2(width); + int height_max = log2(height); + uint32_t twiddle_ix = 0; - for (int i = 0; i <= (20 / 2); i++) { - twiddle_ix |= ((y >> i) & 1) << (i * 2 + 0); - twiddle_ix |= ((x >> i) & 1) << (i * 2 + 1); + for (int i = 0; i < (20 / 2); i++) { + if (i < width_max && i < height_max) { + twiddle_ix |= ((y >> i) & 1) << (i * 2 + 0); + twiddle_ix |= ((x >> i) & 1) << (i * 2 + 1); + } else if (i < width_max) { + twiddle_ix |= ((x >> i) & 1) << (i + height_max); + } else if (i < height_max) { + twiddle_ix |= ((y >> i) & 1) << (i + width_max); + } else { + break; + } } return twiddle_ix; } -static_assert(from_xy(0b000, 0b000) == 0); -static_assert(from_xy(0b001, 0b000) == 2); -static_assert(from_xy(0b010, 0b000) == 8); -static_assert(from_xy(0b011, 0b000) == 10); -static_assert(from_xy(0b100, 0b000) == 32); -static_assert(from_xy(0b101, 0b000) == 34); -static_assert(from_xy(0b110, 0b000) == 40); -static_assert(from_xy(0b111, 0b000) == 42); +static_assert(from_xy(0b000, 0b000, 8, 8) == 0); +static_assert(from_xy(0b001, 0b000, 8, 8) == 2); +static_assert(from_xy(0b010, 0b000, 8, 8) == 8); +static_assert(from_xy(0b011, 0b000, 8, 8) == 10); +static_assert(from_xy(0b100, 0b000, 8, 8) == 32); +static_assert(from_xy(0b101, 0b000, 8, 8) == 34); +static_assert(from_xy(0b110, 0b000, 8, 8) == 40); +static_assert(from_xy(0b111, 0b000, 8, 8) == 42); -static_assert(from_xy(0b000, 0b001) == 1); -static_assert(from_xy(0b000, 0b010) == 4); -static_assert(from_xy(0b000, 0b011) == 5); -static_assert(from_xy(0b000, 0b100) == 16); -static_assert(from_xy(0b000, 0b101) == 17); -static_assert(from_xy(0b000, 0b110) == 20); -static_assert(from_xy(0b000, 0b111) == 21); +static_assert(from_xy(0b000, 0b001, 8, 8) == 1); +static_assert(from_xy(0b000, 0b010, 8, 8) == 4); +static_assert(from_xy(0b000, 0b011, 8, 8) == 5); +static_assert(from_xy(0b000, 0b100, 8, 8) == 16); +static_assert(from_xy(0b000, 0b101, 8, 8) == 17); +static_assert(from_xy(0b000, 0b110, 8, 8) == 20); +static_assert(from_xy(0b000, 0b111, 8, 8) == 21); + +// 1 0 0 0 +// x bits: 19, 17, 15, 13, 11, 9, 7, 5, 3, 1 +// y bits: 18, 16, 14, 12, 10, 8, 6, 4, 2, 0 +static_assert(from_xy(0b1000, 0b001, 16, 8) == 65); +static_assert(from_xy(0b1010, 0b001, 16, 8) == 73); + +static_assert(from_xy(0b000, 0b1001, 8, 16) == 65); +static_assert(from_xy(0b010, 0b1001, 8, 16) == 73); /* constexpr inline std::array @@ -73,7 +111,6 @@ from_ix(uint32_t curve_ix) return x_y; } -*/ constexpr inline std::tuple from_ix(uint32_t curve_ix) @@ -110,13 +147,14 @@ static_assert(from_ix(16) == xy_type{0b000, 0b100}); static_assert(from_ix(17) == xy_type{0b000, 0b101}); static_assert(from_ix(20) == xy_type{0b000, 0b110}); static_assert(from_ix(21) == xy_type{0b000, 0b111}); +*/ template void texture(volatile T * dst, const T * src, const uint32_t width, const uint32_t height) { for (uint32_t y = 0; y < height; y++) { for (uint32_t x = 0; x < width; x++) { - uint32_t twiddle_ix = from_xy(x, y); + uint32_t twiddle_ix = from_xy(x, y, width, height); T value = src[y * width + x]; dst[twiddle_ix] = value; } @@ -128,7 +166,7 @@ void texture_4bpp(volatile T * dst, const T * src, const uint32_t width, const u { for (uint32_t y = 0; y < height; y++) { for (uint32_t x = 0; x < width; x++) { - uint32_t twiddle_ix = from_xy(x, y); + uint32_t twiddle_ix = from_xy(x, y, width, height); T value = src[y * width + x]; uint32_t shift = (4 * (twiddle_ix & 1)); dst[twiddle_ix / 2] &= ~(0b1111 << shift); @@ -137,6 +175,9 @@ void texture_4bpp(volatile T * dst, const T * src, const uint32_t width, const u } } +/* + the following code is not correct + template void texture2(volatile T * dst, const U * src, const uint32_t src_stride, @@ -206,5 +247,6 @@ void texture3(volatile T * dst, const U * src, } } } +*/ }