From c6653dc1c61440fdc5c180750098ca5cf55b5fd3 Mon Sep 17 00:00:00 2001 From: Axle1975 Date: Sat, 30 Mar 2024 10:42:30 +1100 Subject: [PATCH] Add 4.5 engine files --- .gitattributes | 23 + ProTA 4.4 changelog.txt | 2 +- .../crt/crt-lottes-fast-no-warp-bilinear.glsl | 701 +++++++++++++++ Shaders/cubic/catmull-rom-bilinear.glsl | 150 ++++ Shaders/interpolation/bilinear.glsl | 73 ++ Shaders/nearest-neighbor.glsl | 73 ++ Shaders/readme.txt | 7 + Shaders/scanlines/scanline.glsl | 106 +++ Shaders/shader-package.zip | 3 + Shaders/sharpen/fast-sharpen.glsl | 148 +++ .../smooth-chessboard-gray.glsl | 74 ++ Shaders/windowed/lanczos2-sharp.glsl | 205 +++++ Shaders/xbr/xbr-lv2-noblend.glsl | 300 +++++++ Shaders/xbrz/xbrz-freescale.glsl | 375 ++++++++ TADemo/3DTA.exe | 3 + TADemo/3DTAConfig.exe | 3 + TADemo/HPIUtil.dll | 3 + TADemo/MAPS.TXT | 139 +++ TADemo/PALETTE.PAL | Bin 0 -> 1024 bytes TADemo/SERVER.EXE | 3 + TADemo/bagge.fnt | 3 + TADemo/bitmaps/detailtex.jpg | 3 + TADemo/bitmaps/gran.bmp | 3 + TADemo/bitmaps/gran2.bmp | 3 + TADemo/bitmaps/ocean.jpg | 3 + TADemo/uikeys.txt | 24 + TADemo/unitid.txt | 99 ++ Viewer.exe | 3 + audiere.dll | 3 + bass.dll | Bin 139128 -> 131 bytes basscd.dll | Bin 26776 -> 130 bytes bassflac.dll | Bin 39232 -> 130 bytes bassmix.dll | Bin 32080 -> 130 bytes basswasapi.dll | Bin 14266 -> 130 bytes cnc-ddraw config.exe | 3 + ddraw.ini | 849 ++++++++++++++++++ ddraw_custom.dll | 3 + tdraw.dll | 3 + tmusi.dll | 3 + tplayx.dll | 3 + wgmus.dll | Bin 62976 -> 130 bytes 41 files changed, 3398 insertions(+), 1 deletion(-) create mode 100644 Shaders/crt/crt-lottes-fast-no-warp-bilinear.glsl create mode 100644 Shaders/cubic/catmull-rom-bilinear.glsl create mode 100644 Shaders/interpolation/bilinear.glsl create mode 100644 Shaders/nearest-neighbor.glsl create mode 100644 Shaders/readme.txt create mode 100644 Shaders/scanlines/scanline.glsl create mode 100644 Shaders/shader-package.zip create mode 100644 Shaders/sharpen/fast-sharpen.glsl create mode 100644 Shaders/smooth-chessboard-gray/smooth-chessboard-gray.glsl create mode 100644 Shaders/windowed/lanczos2-sharp.glsl create mode 100644 Shaders/xbr/xbr-lv2-noblend.glsl create mode 100644 Shaders/xbrz/xbrz-freescale.glsl create mode 100644 TADemo/3DTA.exe create mode 100644 TADemo/3DTAConfig.exe create mode 100644 TADemo/HPIUtil.dll create mode 100644 TADemo/MAPS.TXT create mode 100644 TADemo/PALETTE.PAL create mode 100644 TADemo/SERVER.EXE create mode 100644 TADemo/bagge.fnt create mode 100644 TADemo/bitmaps/detailtex.jpg create mode 100644 TADemo/bitmaps/gran.bmp create mode 100644 TADemo/bitmaps/gran2.bmp create mode 100644 TADemo/bitmaps/ocean.jpg create mode 100644 TADemo/uikeys.txt create mode 100644 TADemo/unitid.txt create mode 100644 Viewer.exe create mode 100644 audiere.dll create mode 100644 cnc-ddraw config.exe create mode 100644 ddraw.ini create mode 100644 ddraw_custom.dll create mode 100644 tdraw.dll create mode 100644 tmusi.dll create mode 100644 tplayx.dll diff --git a/.gitattributes b/.gitattributes index 5f29d3c..0253d6b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3,3 +3,26 @@ TA_Features_2013.ccx filter=lfs diff=lfs merge=lfs -text ProTA.gp3 filter=lfs diff=lfs merge=lfs -text TotalA.exe filter=lfs diff=lfs merge=lfs -text TADEMO.UFO filter=lfs diff=lfs merge=lfs -text +audiere.dll filter=lfs diff=lfs merge=lfs -text +bassflac.dll filter=lfs diff=lfs merge=lfs -text +bassmix.dll filter=lfs diff=lfs merge=lfs -text +tdraw.dll filter=lfs diff=lfs merge=lfs -text +tplayx.dll filter=lfs diff=lfs merge=lfs -text +Viewer.exe filter=lfs diff=lfs merge=lfs -text +cnc-ddraw[[:space:]]config.exe filter=lfs diff=lfs merge=lfs -text +basscd.dll filter=lfs diff=lfs merge=lfs -text +basswasapi.dll filter=lfs diff=lfs merge=lfs -text +ddraw_custom.dll filter=lfs diff=lfs merge=lfs -text +tmusi.dll filter=lfs diff=lfs merge=lfs -text +wgmus.dll filter=lfs diff=lfs merge=lfs -text +bass.dll filter=lfs diff=lfs merge=lfs -text +Shaders/shader-package.zip filter=lfs diff=lfs merge=lfs -text +TADemo/SERVER.EXE filter=lfs diff=lfs merge=lfs -text +TADemo/bitmaps/ocean.jpg filter=lfs diff=lfs merge=lfs -text +TADemo/3DTA.exe filter=lfs diff=lfs merge=lfs -text +TADemo/HPIUtil.dll filter=lfs diff=lfs merge=lfs -text +TADemo/bagge.fnt filter=lfs diff=lfs merge=lfs -text +TADemo/bitmaps/detailtex.jpg filter=lfs diff=lfs merge=lfs -text +TADemo/bitmaps/gran.bmp filter=lfs diff=lfs merge=lfs -text +TADemo/bitmaps/gran2.bmp filter=lfs diff=lfs merge=lfs -text +TADemo/3DTAConfig.exe filter=lfs diff=lfs merge=lfs -text diff --git a/ProTA 4.4 changelog.txt b/ProTA 4.4 changelog.txt index 56731fe..6c0679e 100644 --- a/ProTA 4.4 changelog.txt +++ b/ProTA 4.4 changelog.txt @@ -235,7 +235,7 @@ Arm Maverick: Arm Shooter: Reduced health (1250->960) Reduced turn rate (1216->608) - Reduced torse aiming rate (210->105) + Reduced torso aiming rate (210->105) Core Sumo: Increased build time (14268->15365) diff --git a/Shaders/crt/crt-lottes-fast-no-warp-bilinear.glsl b/Shaders/crt/crt-lottes-fast-no-warp-bilinear.glsl new file mode 100644 index 0000000..449b9be --- /dev/null +++ b/Shaders/crt/crt-lottes-fast-no-warp-bilinear.glsl @@ -0,0 +1,701 @@ +//_____________________________/\_______________________________ +//============================================================== +// +// +// [CRTS] PUBLIC DOMAIN CRT-STYLED SCALAR - 20180120b +// +// by Timothy Lottes +// https://www.shadertoy.com/view/MtSfRK +// adapted for RetroArch by hunterk +// +// +//============================================================== +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//_____________________________/\_______________________________ +//============================================================== +// +// WHAT'S NEW +// +//-------------------------------------------------------------- +// Evolution of prior shadertoy example +//-------------------------------------------------------------- +// This one is semi-optimized +// - Less texture fetches +// - Didn't get to instruction level optimization +// - Could likely use texture fetch to generate phosphor mask +//-------------------------------------------------------------- +// Added options to disable unused features +//-------------------------------------------------------------- +// Added in exposure matching +// - Given scan-line effect and mask always darkens image +// - Uses generalized tonemapper to boost mid-level +// - Note this can compress highlights +// - And won't get back peak brightness +// - But best option if one doesn't want as much darkening +//-------------------------------------------------------------- +// Includes option saturation and contrast controls +//-------------------------------------------------------------- +// Added in subtractive aperture grille +// - This is a bit brighter than prior +//-------------------------------------------------------------- +// Make sure input to this filter is already low-resolution +// - This is not designed to work on titles doing the following +// - Rendering to hi-res with nearest sampling +//-------------------------------------------------------------- +// Added a fast and more pixely option for 2 tap/pixel +//-------------------------------------------------------------- +// Improved the vignette when WARP is enabled +//-------------------------------------------------------------- +// Didn't test HLSL or CPU options +// - Will incorportate patches if they are broken +// - But out of time to try them myself +//============================================================== +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//_____________________________/\_______________________________ +//============================================================== +// +// LICENSE = UNLICENSE (aka PUBLIC DOMAIN) +// +//-------------------------------------------------------------- +// This is free and unencumbered software released into the +// public domain. +//-------------------------------------------------------------- +// Anyone is free to copy, modify, publish, use, compile, sell, +// or distribute this software, either in source code form or as +// a compiled binary, for any purpose, commercial or +// non-commercial, and by any means. +//-------------------------------------------------------------- +// In jurisdictions that recognize copyright laws, the author or +// authors of this software dedicate any and all copyright +// interest in the software to the public domain. We make this +// dedication for the benefit of the public at large and to the +// detriment of our heirs and successors. We intend this +// dedication to be an overt act of relinquishment in perpetuity +// of all present and future rights to this software under +// copyright law. +//-------------------------------------------------------------- +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +// KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +// AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT +// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +//-------------------------------------------------------------- +// For more information, please refer to +// +//============================================================== +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// + +#pragma parameter MASK "Mask Type" 1.0 0.0 3.0 1.0 +#pragma parameter MASK_INTENSITY "Mask Intensity" 0.5 0.0 1.0 0.05 +#pragma parameter SCANLINE_THINNESS "Scanline Intensity" 0.5 0.0 1.0 0.1 +#pragma parameter SCAN_BLUR "Sharpness" 2.5 1.0 3.0 0.1 +#pragma parameter CURVATURE "Curvature" 0.02 0.0 0.25 0.01 +#pragma parameter TRINITRON_CURVE "Trinitron-style Curve" 0.0 0.0 1.0 1.0 +#pragma parameter CORNER "Corner Round" 3.0 0.0 11.0 1.0 +#pragma parameter CRT_GAMMA "CRT Gamma" 2.4 0.0 51.0 0.1 + +#if defined(VERTEX) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING out +#define COMPAT_ATTRIBUTE in +#define COMPAT_TEXTURE texture +#else +#define COMPAT_VARYING varying +#define COMPAT_ATTRIBUTE attribute +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif + +COMPAT_ATTRIBUTE vec4 VertexCoord; +COMPAT_ATTRIBUTE vec4 COLOR; +COMPAT_ATTRIBUTE vec4 TexCoord; +COMPAT_VARYING vec4 COL0; +COMPAT_VARYING vec4 TEX0; + +vec4 _oPosition1; +uniform mat4 MVPMatrix; +uniform COMPAT_PRECISION int FrameDirection; +uniform COMPAT_PRECISION int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; + +// compatibility #defines +#define vTexCoord TEX0.xy +#define SourceSize vec4(TextureSize, 1.0 / TextureSize) //either TextureSize or InputSize +#define OutSize vec4(OutputSize, 1.0 / OutputSize) + +void main() +{ + gl_Position = MVPMatrix * VertexCoord; + TEX0.xy = TexCoord.xy; +} + +#elif defined(FRAGMENT) + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif + +#if __VERSION__ >= 130 +#define COMPAT_VARYING in +#define COMPAT_TEXTURE texture +out COMPAT_PRECISION vec4 FragColor; +#else +#define COMPAT_VARYING varying +#define FragColor gl_FragColor +#define COMPAT_TEXTURE texture2D +#endif + +uniform COMPAT_PRECISION int FrameDirection; +uniform COMPAT_PRECISION int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +uniform sampler2D Texture; +COMPAT_VARYING vec4 TEX0; + +// compatibility #defines +#define Source Texture +#define vTexCoord TEX0.xy + +#define SourceSize vec4(TextureSize, 1.0 / TextureSize) //either TextureSize or InputSize +#define OutSize vec4(OutputSize, 1.0 / OutputSize) + +#ifdef PARAMETER_UNIFORM +uniform COMPAT_PRECISION float CRT_GAMMA; +uniform COMPAT_PRECISION float SCANLINE_THINNESS; +uniform COMPAT_PRECISION float SCAN_BLUR; +uniform COMPAT_PRECISION float MASK_INTENSITY; +uniform COMPAT_PRECISION float CURVATURE; +uniform COMPAT_PRECISION float CORNER; +uniform COMPAT_PRECISION float MASK; +uniform COMPAT_PRECISION float TRINITRON_CURVE; +#else +#define CRT_GAMMA 2.4 +#define SCANLINE_THINNESS 0.5 +#define SCAN_BLUR 2.5 +#define MASK_INTENSITY 0.54 +#define CURVATURE 0.00 +#define CORNER 3.0 +#define MASK 1.0 +#define TRINITRON_CURVE 0.0 +#endif + +//_____________________________/\_______________________________ +//============================================================== +// +// GAMMA FUNCTIONS +// +//-------------------------------------------------------------- +//-------------------------------------------------------------- +// Since shadertoy doesn't have sRGB textures +// And we need linear input into shader +// Don't do this in your code + float FromSrgb1(float c){ + return (c<=0.04045)?c*(1.0/12.92): + pow(c*(1.0/1.055)+(0.055/1.055),CRT_GAMMA);} +//-------------------------------------------------------------- +vec3 FromSrgb(vec3 c){return vec3( + FromSrgb1(c.r),FromSrgb1(c.g),FromSrgb1(c.b));} + +// Convert from linear to sRGB +// Since shader toy output is not linear +float ToSrgb1(float c){ + return(c<0.0031308?c*12.92:1.055*pow(c,0.41666)-0.055);} +//-------------------------------------------------------------- +vec3 ToSrgb(vec3 c){return vec3( + ToSrgb1(c.r),ToSrgb1(c.g),ToSrgb1(c.b));} +//-------------------------------------------------------------- + +//_____________________________/\_______________________________ +//============================================================== +// +// DEFINES +// +//-------------------------------------------------------------- +// CRTS_CPU - CPU code +// CRTS_GPU - GPU code +//-------------------------------------------------------------- +// CRTS_GLSL - GLSL +// CRTS_HLSL - HLSL (not tested yet) +//-------------------------------------------------------------- +// CRTS_DEBUG - Define to see on/off split screen +//-------------------------------------------------------------- +// CRTS_WARP - Apply screen warp +//-------------------------------------------------------------- +// CRTS_2_TAP - Faster very pixely 2-tap filter (off is 8) +//-------------------------------------------------------------- +// CRTS_MASK_GRILLE - Aperture grille (aka Trinitron) +// CRTS_MASK_GRILLE_LITE - Brighter (subtractive channels) +// CRTS_MASK_NONE - No mask +// CRTS_MASK_SHADOW - Horizontally stretched shadow mask +//-------------------------------------------------------------- +// CRTS_TONE - Normalize mid-level and process color +// CRTS_CONTRAST - Process color - enable contrast control +// CRTS_SATURATION - Process color - enable saturation control +//-------------------------------------------------------------- +#define CRTS_STATIC +#define CrtsPow +#define CRTS_RESTRICT +//============================================================== +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// + +//============================================================== +// SETUP FOR CRTS +//-------------------------------------------------------------- +//============================================================== +//#define CRTS_DEBUG 1 +#define CRTS_GPU 1 +#define CRTS_GLSL 1 +//-------------------------------------------------------------- +//#define CRTS_2_TAP 1 +//-------------------------------------------------------------- +#define CRTS_TONE 1 +#define CRTS_CONTRAST 0 +#define CRTS_SATURATION 0 +//-------------------------------------------------------------- +#define CRTS_WARP 1 +//-------------------------------------------------------------- +// Try different masks -> moved to runtime parameters +//#define CRTS_MASK_GRILLE 1 +//#define CRTS_MASK_GRILLE_LITE 1 +//#define CRTS_MASK_NONE 1 +//#define CRTS_MASK_SHADOW 1 +//-------------------------------------------------------------- +// Scanline thinness +// 0.50 = fused scanlines +// 0.70 = recommended default +// 1.00 = thinner scanlines (too thin) +#define INPUT_THIN 0.5 + (0.5 * SCANLINE_THINNESS) +//-------------------------------------------------------------- +// Horizonal scan blur +// -3.0 = pixely +// -2.5 = default +// -2.0 = smooth +// -1.0 = too blurry +#define INPUT_BLUR -1.0 * SCAN_BLUR +//-------------------------------------------------------------- +// Shadow mask effect, ranges from, +// 0.25 = large amount of mask (not recommended, too dark) +// 0.50 = recommended default +// 1.00 = no shadow mask +#define INPUT_MASK 1.0 - MASK_INTENSITY +//-------------------------------------------------------------- +#define INPUT_X InputSize.x +#define INPUT_Y InputSize.y +//-------------------------------------------------------------- +// Setup the function which returns input image color +vec3 CrtsFetch(vec2 uv){ + // For shadertoy, scale to get native texels in the image + uv*=vec2(INPUT_X,INPUT_Y)/TextureSize.xy; + // Move towards intersting parts +// uv+=vec2(0.5,0.5); + // Non-shadertoy case would not have the color conversion + return FromSrgb(COMPAT_TEXTURE(Texture,uv.xy,-16.0).rgb);} +#endif + +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//_____________________________/\_______________________________ +//============================================================== +// +// GPU CODE +// +//============================================================== +#ifdef CRTS_GPU +//_____________________________/\_______________________________ +//============================================================== +// PORTABILITY +//============================================================== + #ifdef CRTS_GLSL + #define CrtsF1 float + #define CrtsF2 vec2 + #define CrtsF3 vec3 + #define CrtsF4 vec4 + #define CrtsFractF1 fract + #define CrtsRcpF1(x) (1.0/(x)) + #define CrtsSatF1(x) clamp((x),0.0,1.0) +//-------------------------------------------------------------- + CrtsF1 CrtsMax3F1(CrtsF1 a,CrtsF1 b,CrtsF1 c){ + return max(a,max(b,c));} + #endif +//============================================================== + #ifdef CRTS_HLSL + #define CrtsF1 float + #define CrtsF2 float2 + #define CrtsF3 float3 + #define CrtsF4 float4 + #define CrtsFractF1 frac + #define CrtsRcpF1(x) (1.0/(x)) + #define CrtsSatF1(x) saturate(x) +//-------------------------------------------------------------- + CrtsF1 CrtsMax3F1(CrtsF1 a,CrtsF1 b,CrtsF1 c){ + return max(a,max(b,c));} + #endif +//_____________________________/\_______________________________ +//============================================================== +// TONAL CONTROL CONSTANT GENERATION +//-------------------------------------------------------------- +// This is in here for rapid prototyping +// Please use the CPU code and pass in as constants +//============================================================== + CrtsF4 CrtsTone( + CrtsF1 contrast, + CrtsF1 saturation, + CrtsF1 thin, + CrtsF1 mask){ +//-------------------------------------------------------------- + if(MASK == 0.0) mask=1.0; +//-------------------------------------------------------------- + if(MASK == 1.0){ + // Normal R mask is {1.0,mask,mask} + // LITE R mask is {mask,1.0,1.0} + mask=0.5+mask*0.5; + } +//-------------------------------------------------------------- + CrtsF4 ret; + CrtsF1 midOut=0.18/((1.5-thin)*(0.5*mask+0.5)); + CrtsF1 pMidIn=pow(0.18,contrast); + ret.x=contrast; + ret.y=((-pMidIn)+midOut)/((1.0-pMidIn)*midOut); + ret.z=((-pMidIn)*midOut+pMidIn)/(midOut*(-pMidIn)+midOut); + ret.w=contrast+saturation; + return ret;} +//_____________________________/\_______________________________ +//============================================================== +// MASK +//-------------------------------------------------------------- +// Letting LCD/OLED pixel elements function like CRT phosphors +// So "phosphor" resolution scales with display resolution +//-------------------------------------------------------------- +// Not applying any warp to the mask (want high frequency) +// Real aperture grille has a mask which gets wider on ends +// Not attempting to be "real" but instead look the best +//-------------------------------------------------------------- +// Shadow mask is stretched horizontally +// RRGGBB +// GBBRRG +// RRGGBB +// This tends to look better on LCDs than vertical +// Also 2 pixel width is required to get triad centered +//-------------------------------------------------------------- +// The LITE version of the Aperture Grille is brighter +// Uses {dark,1.0,1.0} for R channel +// Non LITE version uses {1.0,dark,dark} +//-------------------------------------------------------------- +// 'pos' - This is 'fragCoord.xy' +// Pixel {0,0} should be {0.5,0.5} +// Pixel {1,1} should be {1.5,1.5} +//-------------------------------------------------------------- +// 'dark' - Exposure of of masked channel +// 0.0=fully off, 1.0=no effect +//============================================================== + CrtsF3 CrtsMask(CrtsF2 pos,CrtsF1 dark){ + if(MASK == 2.0){ + CrtsF3 m=CrtsF3(dark,dark,dark); + CrtsF1 x=CrtsFractF1(pos.x*(1.0/3.0)); + if(x<(1.0/3.0))m.r=1.0; + else if(x<(2.0/3.0))m.g=1.0; + else m.b=1.0; + return m; + } +//-------------------------------------------------------------- + if(MASK == 1.0){ + CrtsF3 m=CrtsF3(1.0,1.0,1.0); + CrtsF1 x=CrtsFractF1(pos.x*(1.0/3.0)); + if(x<(1.0/3.0))m.r=dark; + else if(x<(2.0/3.0))m.g=dark; + else m.b=dark; + return m; + } +//-------------------------------------------------------------- + if(MASK == 0.0){ + return CrtsF3(1.0,1.0,1.0); + } +//-------------------------------------------------------------- + if(MASK == 3.0){ + pos.x+=pos.y*2.9999; + CrtsF3 m=CrtsF3(dark,dark,dark); + CrtsF1 x=CrtsFractF1(pos.x*(1.0/6.0)); + if(x<(1.0/3.0))m.r=1.0; + else if(x<(2.0/3.0))m.g=1.0; + else m.b=1.0; + return m; + } + } +//_____________________________/\_______________________________ +//============================================================== +// FILTER ENTRY +//-------------------------------------------------------------- +// Input must be linear +// Output color is linear +//-------------------------------------------------------------- +// Must have fetch function setup: CrtsF3 CrtsFetch(CrtsF2 uv) +// - The 'uv' range is {0.0 to 1.0} for input texture +// - Output of this must be linear color +//-------------------------------------------------------------- +// SCANLINE MATH & AUTO-EXPOSURE NOTES +// =================================== +// Each output line has contribution from at most 2 scanlines +// Scanlines are shaped by a windowed cosine function +// This shape blends together well with only 2 lines of overlap +//-------------------------------------------------------------- +// Base scanline intensity is as follows +// which leaves output intensity range from {0 to 1.0} +// -------- +// thin := range {thick 0.5 to thin 1.0} +// off := range {0.0 to <1.0}, +// sub-pixel offset between two scanlines +// -------- +// a0=cos(min(0.5, off *thin)*2pi)*0.5+0.5; +// a1=cos(min(0.5,(1.0-off)*thin)*2pi)*0.5+0.5; +//-------------------------------------------------------------- +// This leads to a image darkening factor of roughly: +// {(1.5-thin)/1.0} +// This is further reduced by the mask: +// {1.0/2.0+mask*1.0/2.0} +// Reciprocal of combined effect is used for auto-exposure +// to scale up the mid-level in the tonemapper +//============================================================== + CrtsF3 CrtsFilter( +//-------------------------------------------------------------- + // SV_POSITION, fragCoord.xy + CrtsF2 ipos, +//-------------------------------------------------------------- + // inputSize / outputSize (in pixels) + CrtsF2 inputSizeDivOutputSize, +//-------------------------------------------------------------- + // 0.5 * inputSize (in pixels) + CrtsF2 halfInputSize, +//-------------------------------------------------------------- + // 1.0 / inputSize (in pixels) + CrtsF2 rcpInputSize, +//-------------------------------------------------------------- + // 1.0 / outputSize (in pixels) + CrtsF2 rcpOutputSize, +//-------------------------------------------------------------- + // 2.0 / outputSize (in pixels) + CrtsF2 twoDivOutputSize, +//-------------------------------------------------------------- + // inputSize.y + CrtsF1 inputHeight, +//-------------------------------------------------------------- + // Warp scanlines but not phosphor mask + // 0.0 = no warp + // 1.0/64.0 = light warping + // 1.0/32.0 = more warping + // Want x and y warping to be different (based on aspect) + CrtsF2 warp, +//-------------------------------------------------------------- + // Scanline thinness + // 0.50 = fused scanlines + // 0.70 = recommended default + // 1.00 = thinner scanlines (too thin) + // Shared with CrtsTone() function + CrtsF1 thin, +//-------------------------------------------------------------- + // Horizonal scan blur + // -3.0 = pixely + // -2.5 = default + // -2.0 = smooth + // -1.0 = too blurry + CrtsF1 blur, +//-------------------------------------------------------------- + // Shadow mask effect, ranges from, + // 0.25 = large amount of mask (not recommended, too dark) + // 0.50 = recommended default + // 1.00 = no shadow mask + // Shared with CrtsTone() function + CrtsF1 mask, +//-------------------------------------------------------------- + // Tonal curve parameters generated by CrtsTone() + CrtsF4 tone +//-------------------------------------------------------------- + ){ +//-------------------------------------------------------------- + #ifdef CRTS_DEBUG + CrtsF2 uv=ipos*rcpOutputSize; + // Show second half processed, and first half un-processed + if(uv.x<0.5){ + // Force nearest to get squares + uv*=1.0/rcpInputSize; + uv=floor(uv)+CrtsF2(0.5,0.5); + uv*=rcpInputSize; + CrtsF3 color=CrtsFetch(uv); + return color;} + #endif +//-------------------------------------------------------------- + // Optional apply warp + CrtsF2 pos; + #ifdef CRTS_WARP + // Convert to {-1 to 1} range + pos=ipos*twoDivOutputSize-CrtsF2(1.0,1.0); + // Distort pushes image outside {-1 to 1} range + pos*=CrtsF2( + 1.0+(pos.y*pos.y)*warp.x, + 1.0+(pos.x*pos.x)*warp.y); + // TODO: Vignette needs optimization + CrtsF1 vin=(1.0-( + (1.0-CrtsSatF1(pos.x*pos.x))*(1.0-CrtsSatF1(pos.y*pos.y)))) * (0.998 + (0.001 * CORNER)); + vin=CrtsSatF1((-vin)*inputHeight+inputHeight); + // Leave in {0 to inputSize} + pos=pos*halfInputSize+halfInputSize; + #else + pos=ipos*inputSizeDivOutputSize; + #endif +//-------------------------------------------------------------- + // Snap to center of first scanline + CrtsF1 y0=floor(pos.y-0.5)+0.5; + #ifdef CRTS_2_TAP + // Using Inigo's "Improved Texture Interpolation" + // http://iquilezles.org/www/articles/texture/texture.htm + pos.x+=0.5; + CrtsF1 xi=floor(pos.x); + CrtsF1 xf=pos.x-xi; + xf=xf*xf*xf*(xf*(xf*6.0-15.0)+10.0); + CrtsF1 x0=xi+xf-0.5; + CrtsF2 p=CrtsF2(x0*rcpInputSize.x,y0*rcpInputSize.y); + // Coordinate adjusted bilinear fetch from 2 nearest scanlines + CrtsF3 colA=CrtsFetch(p); + p.y+=rcpInputSize.y; + CrtsF3 colB=CrtsFetch(p); + #else + // Snap to center of one of four pixels + CrtsF1 x0=floor(pos.x-1.5)+0.5; + // Inital UV position + CrtsF2 p=CrtsF2(x0*rcpInputSize.x,y0*rcpInputSize.y); + // Fetch 4 nearest texels from 2 nearest scanlines + CrtsF3 colA0=CrtsFetch(p); + p.x+=rcpInputSize.x; + CrtsF3 colA1=CrtsFetch(p); + p.x+=rcpInputSize.x; + CrtsF3 colA2=CrtsFetch(p); + p.x+=rcpInputSize.x; + CrtsF3 colA3=CrtsFetch(p); + p.y+=rcpInputSize.y; + CrtsF3 colB3=CrtsFetch(p); + p.x-=rcpInputSize.x; + CrtsF3 colB2=CrtsFetch(p); + p.x-=rcpInputSize.x; + CrtsF3 colB1=CrtsFetch(p); + p.x-=rcpInputSize.x; + CrtsF3 colB0=CrtsFetch(p); + #endif +//-------------------------------------------------------------- + // Vertical filter + // Scanline intensity is using sine wave + // Easy filter window and integral used later in exposure + CrtsF1 off=pos.y-y0; + CrtsF1 pi2=6.28318530717958; + CrtsF1 hlf=0.5; + CrtsF1 scanA=cos(min(0.5, off *thin )*pi2)*hlf+hlf; + CrtsF1 scanB=cos(min(0.5,(-off)*thin+thin)*pi2)*hlf+hlf; +//-------------------------------------------------------------- + #ifdef CRTS_2_TAP + #ifdef CRTS_WARP + // Get rid of wrong pixels on edge + scanA*=vin; + scanB*=vin; + #endif + // Apply vertical filter + CrtsF3 color=(colA*scanA)+(colB*scanB); + #else + // Horizontal kernel is simple gaussian filter + CrtsF1 off0=pos.x-x0; + CrtsF1 off1=off0-1.0; + CrtsF1 off2=off0-2.0; + CrtsF1 off3=off0-3.0; + CrtsF1 pix0=exp2(blur*off0*off0); + CrtsF1 pix1=exp2(blur*off1*off1); + CrtsF1 pix2=exp2(blur*off2*off2); + CrtsF1 pix3=exp2(blur*off3*off3); + CrtsF1 pixT=CrtsRcpF1(pix0+pix1+pix2+pix3); + #ifdef CRTS_WARP + // Get rid of wrong pixels on edge + pixT*=vin; + #endif + scanA*=pixT; + scanB*=pixT; + // Apply horizontal and vertical filters + CrtsF3 color= + (colA0*pix0+colA1*pix1+colA2*pix2+colA3*pix3)*scanA + + (colB0*pix0+colB1*pix1+colB2*pix2+colB3*pix3)*scanB; + #endif +//-------------------------------------------------------------- + // Apply phosphor mask + color*=CrtsMask(ipos,mask); +//-------------------------------------------------------------- + // Optional color processing + #ifdef CRTS_TONE + // Tonal control, start by protecting from /0 + CrtsF1 peak=max(1.0/(256.0*65536.0), + CrtsMax3F1(color.r,color.g,color.b)); + // Compute the ratios of {R,G,B} + CrtsF3 ratio=color*CrtsRcpF1(peak); + // Apply tonal curve to peak value + #ifdef CRTS_CONTRAST + peak=pow(peak,tone.x); + #endif + peak=peak*CrtsRcpF1(peak*tone.y+tone.z); + // Apply saturation + #ifdef CRTS_SATURATION + ratio=pow(ratio,CrtsF3(tone.w,tone.w,tone.w)); + #endif + // Reconstruct color + return ratio*peak; + #else + return color; + #endif +//-------------------------------------------------------------- + } + + +void main() +{ + vec2 warp_factor; + warp_factor.x = CURVATURE; + warp_factor.y = (3.0 / 4.0) * warp_factor.x; // assume 4:3 aspect + warp_factor.x *= (1.0 - TRINITRON_CURVE); + FragColor.rgb = CrtsFilter(vTexCoord.xy * OutputSize.xy*(TextureSize.xy / InputSize.xy), + InputSize.xy / OutputSize.xy, + InputSize.xy * vec2(0.5,0.5), + 1.0/InputSize.xy, + 1.0/OutputSize.xy, + 2.0/OutputSize.xy, + InputSize.y, + warp_factor, + INPUT_THIN, + INPUT_BLUR, + INPUT_MASK, + CrtsTone(1.0,0.0,INPUT_THIN,INPUT_MASK)); + + // Shadertoy outputs non-linear color + FragColor.rgb=ToSrgb(FragColor.rgb); +} +#endif diff --git a/Shaders/cubic/catmull-rom-bilinear.glsl b/Shaders/cubic/catmull-rom-bilinear.glsl new file mode 100644 index 0000000..55fb05d --- /dev/null +++ b/Shaders/cubic/catmull-rom-bilinear.glsl @@ -0,0 +1,150 @@ +/* + Bicubic Catmull-Rom 9 taps (Fast) - ported by Hyllian - 2020 + The following code is licensed under the MIT license: https://gist.github.com/TheRealMJP/bc503b0b87b643d3505d41eab8b332ae + Ported from code: https://gist.github.com/TheRealMJP/c83b8c0f46b63f3a88a5986f4fa982b1 + Samples a texture with Catmull-Rom filtering, using 9 texture fetches instead of 16. + See http://vec3.ca/bicubic-filtering-in-fewer-taps/ for more details + ATENTION: This code only work using LINEAR filter sampling set on Retroarch! +*/ + +#if defined(VERTEX) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING out +#define COMPAT_ATTRIBUTE in +#define COMPAT_TEXTURE texture +#else +#define COMPAT_VARYING varying +#define COMPAT_ATTRIBUTE attribute +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#define COMPAT_PRECISION mediump +precision COMPAT_PRECISION float; +#else +#define COMPAT_PRECISION +#endif + +COMPAT_ATTRIBUTE vec4 VertexCoord; +COMPAT_ATTRIBUTE vec4 COLOR; +COMPAT_ATTRIBUTE vec4 TexCoord; +COMPAT_VARYING vec4 COL0; +COMPAT_VARYING vec4 TEX0; + +uniform mat4 MVPMatrix; +uniform COMPAT_PRECISION int FrameDirection; +uniform COMPAT_PRECISION int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; + +void main() +{ + gl_Position = MVPMatrix * VertexCoord; + COL0 = COLOR; + TEX0.xy = TexCoord.xy; +} + +#elif defined(FRAGMENT) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING in +#define COMPAT_TEXTURE texture +out mediump vec4 FragColor; +#else +#define COMPAT_VARYING varying +#define FragColor gl_FragColor +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif + +uniform COMPAT_PRECISION int FrameDirection; +uniform COMPAT_PRECISION int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +uniform sampler2D Texture; +COMPAT_VARYING vec4 TEX0; + +// compatibility #defines +#define Source Texture +#define vTexCoord TEX0.xy + +#define SourceSize vec4(TextureSize, 1.0 / TextureSize) //either TextureSize or InputSize +#define outsize vec4(OutputSize, 1.0 / OutputSize) + +#define mul(c,d) (d*c) + +void main() +{ + // We're going to sample a a 4x4 grid of texels surrounding the target UV coordinate. We'll do this by rounding + // down the sample location to get the exact center of our "starting" texel. The starting texel will be at + // location [1, 1] in the grid, where [0, 0] is the top left corner. + vec2 samplePos = vTexCoord * SourceSize.xy; + vec2 texPos1 = floor(samplePos - 0.5) + 0.5; + + // Compute the fractional offset from our starting texel to our original sample location, which we'll + // feed into the Catmull-Rom spline function to get our filter weights. + vec2 f = samplePos - texPos1; + + // Compute the Catmull-Rom weights using the fractional offset that we calculated earlier. + // These equations are pre-expanded based on our knowledge of where the texels will be located, + // which lets us avoid having to evaluate a piece-wise function. + vec2 w0 = f * (-0.5 + f * (1.0 - 0.5 * f)); + vec2 w1 = 1.0 + f * f * (-2.5 + 1.5 * f); + vec2 w2 = f * (0.5 + f * (2.0 - 1.5 * f)); + vec2 w3 = f * f * (-0.5 + 0.5 * f); + // vec2 w3 = 1.0 - w0 - w1 - w2; + + // Work out weighting factors and sampling offsets that will let us use bilinear filtering to + // simultaneously evaluate the middle 2 samples from the 4x4 grid. + vec2 w12 = w1 + w2; + vec2 offset12 = w2 / (w1 + w2); + + // Compute the final UV coordinates we'll use for sampling the texture + vec2 texPos0 = texPos1 - 1.; + vec2 texPos3 = texPos1 + 2.; + vec2 texPos12 = texPos1 + offset12; + + texPos0 *= SourceSize.zw; + texPos3 *= SourceSize.zw; + texPos12 *= SourceSize.zw; + + vec4 c00 = COMPAT_TEXTURE(Source, vec2(texPos0.x, texPos0.y)); + vec4 c10 = COMPAT_TEXTURE(Source, vec2(texPos12.x, texPos0.y)); + vec4 c20 = COMPAT_TEXTURE(Source, vec2(texPos3.x, texPos0.y)); + + vec4 c01 = COMPAT_TEXTURE(Source, vec2(texPos0.x, texPos12.y)); + vec4 c11 = COMPAT_TEXTURE(Source, vec2(texPos12.x, texPos12.y)); + vec4 c21 = COMPAT_TEXTURE(Source, vec2(texPos3.x, texPos12.y)); + + vec4 c02 = COMPAT_TEXTURE(Source, vec2(texPos0.x, texPos3.y)); + vec4 c12 = COMPAT_TEXTURE(Source, vec2(texPos12.x, texPos3.y)); + vec4 c22 = COMPAT_TEXTURE(Source, vec2(texPos3.x, texPos3.y)); + + // initialize some variables + vec4 c1, c2, c3, wx, wy = vec4(0.,0.,0.,0.); + // junk vec4 used only to round out the non-square 3x4 matrices + vec4 dummy = vec4(0.,0.,0.,1.); + + wx = vec4(w0.x, w12.x, w3.x, 1.0); + wy = vec4(w0.y, w12.y, w3.y, 1.0); + + c1 = vec4(mul(wx, mat4(c00, c10, c20, dummy))); + c2 = vec4(mul(wx, mat4(c01, c11, c21, dummy))); + c3 = vec4(mul(wx, mat4(c02, c12, c22, dummy))); + + FragColor = mul(wy, mat4(c1, c2, c3, dummy)); +} +#endif diff --git a/Shaders/interpolation/bilinear.glsl b/Shaders/interpolation/bilinear.glsl new file mode 100644 index 0000000..aa7bee6 --- /dev/null +++ b/Shaders/interpolation/bilinear.glsl @@ -0,0 +1,73 @@ +#if defined(VERTEX) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING out +#define COMPAT_ATTRIBUTE in +#define COMPAT_TEXTURE texture +#else +#define COMPAT_VARYING varying +#define COMPAT_ATTRIBUTE attribute +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif + +COMPAT_ATTRIBUTE vec4 VertexCoord; +COMPAT_ATTRIBUTE vec4 COLOR; +COMPAT_ATTRIBUTE vec4 TexCoord; +COMPAT_VARYING vec4 COL0; +COMPAT_VARYING vec4 TEX0; + +uniform mat4 MVPMatrix; +uniform COMPAT_PRECISION int FrameDirection; +uniform COMPAT_PRECISION int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; + +void main() +{ + gl_Position = VertexCoord.x * MVPMatrix[0] + VertexCoord.y * MVPMatrix[1] + VertexCoord.z * MVPMatrix[2] + VertexCoord.w * MVPMatrix[3]; + TEX0.xy = TexCoord.xy; +} + +#elif defined(FRAGMENT) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING in +#define COMPAT_TEXTURE texture +out vec4 FragColor; +#else +#define COMPAT_VARYING varying +#define FragColor gl_FragColor +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif + +uniform COMPAT_PRECISION int FrameDirection; +uniform COMPAT_PRECISION int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +uniform sampler2D Texture; +COMPAT_VARYING vec4 TEX0; + +void main() +{ + FragColor = COMPAT_TEXTURE(Texture, TEX0.xy); +} +#endif \ No newline at end of file diff --git a/Shaders/nearest-neighbor.glsl b/Shaders/nearest-neighbor.glsl new file mode 100644 index 0000000..aa7bee6 --- /dev/null +++ b/Shaders/nearest-neighbor.glsl @@ -0,0 +1,73 @@ +#if defined(VERTEX) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING out +#define COMPAT_ATTRIBUTE in +#define COMPAT_TEXTURE texture +#else +#define COMPAT_VARYING varying +#define COMPAT_ATTRIBUTE attribute +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif + +COMPAT_ATTRIBUTE vec4 VertexCoord; +COMPAT_ATTRIBUTE vec4 COLOR; +COMPAT_ATTRIBUTE vec4 TexCoord; +COMPAT_VARYING vec4 COL0; +COMPAT_VARYING vec4 TEX0; + +uniform mat4 MVPMatrix; +uniform COMPAT_PRECISION int FrameDirection; +uniform COMPAT_PRECISION int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; + +void main() +{ + gl_Position = VertexCoord.x * MVPMatrix[0] + VertexCoord.y * MVPMatrix[1] + VertexCoord.z * MVPMatrix[2] + VertexCoord.w * MVPMatrix[3]; + TEX0.xy = TexCoord.xy; +} + +#elif defined(FRAGMENT) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING in +#define COMPAT_TEXTURE texture +out vec4 FragColor; +#else +#define COMPAT_VARYING varying +#define FragColor gl_FragColor +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif + +uniform COMPAT_PRECISION int FrameDirection; +uniform COMPAT_PRECISION int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +uniform sampler2D Texture; +COMPAT_VARYING vec4 TEX0; + +void main() +{ + FragColor = COMPAT_TEXTURE(Texture, TEX0.xy); +} +#endif \ No newline at end of file diff --git a/Shaders/readme.txt b/Shaders/readme.txt new file mode 100644 index 0000000..c262bee --- /dev/null +++ b/Shaders/readme.txt @@ -0,0 +1,7 @@ +This is a package of pixel shaders intended for old school emulators. +Copyrights are held by the respective authors. + +https://github.com/libretro/glsl-shaders + + +Note: Filename must end with "bilinear.glsl" to enable bilinear hardware filtering (GL_LINEAR) diff --git a/Shaders/scanlines/scanline.glsl b/Shaders/scanlines/scanline.glsl new file mode 100644 index 0000000..7c8423b --- /dev/null +++ b/Shaders/scanlines/scanline.glsl @@ -0,0 +1,106 @@ +// Parameter lines go here: +#pragma parameter SCANLINE_BASE_BRIGHTNESS "Scanline Base Brightness" 0.95 0.0 1.0 0.01 +#pragma parameter SCANLINE_SINE_COMP_A "Scanline Sine Comp A" 0.0 0.0 0.10 0.01 +#pragma parameter SCANLINE_SINE_COMP_B "Scanline Sine Comp B" 0.15 0.0 1.0 0.05 + +#define pi 3.141592654 + +#if defined(VERTEX) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING out +#define COMPAT_ATTRIBUTE in +#define COMPAT_TEXTURE texture +#else +#define COMPAT_VARYING varying +#define COMPAT_ATTRIBUTE attribute +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif + +COMPAT_ATTRIBUTE vec4 VertexCoord; +COMPAT_ATTRIBUTE vec4 COLOR; +COMPAT_ATTRIBUTE vec4 TexCoord; +COMPAT_VARYING vec4 COL0; +COMPAT_VARYING vec4 TEX0; +COMPAT_VARYING vec2 omega; + +vec4 _oPosition1; +uniform mat4 MVPMatrix; +uniform COMPAT_PRECISION int FrameDirection; +uniform COMPAT_PRECISION int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; + +void main() +{ + gl_Position = MVPMatrix * VertexCoord; + COL0 = COLOR; + TEX0.xy = TexCoord.xy; + omega = vec2(pi * OutputSize.x, 2.0 * pi * TextureSize.y); +} + +#elif defined(FRAGMENT) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING in +#define COMPAT_TEXTURE texture +out vec4 FragColor; +#else +#define COMPAT_VARYING varying +#define FragColor gl_FragColor +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif + +uniform COMPAT_PRECISION int FrameDirection; +uniform COMPAT_PRECISION int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +uniform sampler2D Texture; +COMPAT_VARYING vec4 TEX0; +COMPAT_VARYING vec2 omega; + +// compatibility #defines +#define Source Texture +#define vTexCoord TEX0.xy + +#define SourceSize vec4(TextureSize, 1.0 / TextureSize) //either TextureSize or InputSize +#define OutputSize vec4(OutputSize, 1.0 / OutputSize) + +#ifdef PARAMETER_UNIFORM +// All parameter floats need to have COMPAT_PRECISION in front of them +uniform COMPAT_PRECISION float SCANLINE_BASE_BRIGHTNESS; +uniform COMPAT_PRECISION float SCANLINE_SINE_COMP_A; +uniform COMPAT_PRECISION float SCANLINE_SINE_COMP_B; +#else +#define SCANLINE_BASE_BRIGHTNESS 0.95 +#define SCANLINE_SINE_COMP_A 0.0 +#define SCANLINE_SINE_COMP_B 0.15 +#endif + +void main() +{ + vec2 sine_comp = vec2(SCANLINE_SINE_COMP_A, SCANLINE_SINE_COMP_B); + vec3 res = COMPAT_TEXTURE(Source, vTexCoord).xyz; + vec3 scanline = res * (SCANLINE_BASE_BRIGHTNESS + dot(sine_comp * sin(vTexCoord * omega), vec2(1.0, 1.0))); + FragColor = vec4(scanline.x, scanline.y, scanline.z, 1.0); +} +#endif diff --git a/Shaders/shader-package.zip b/Shaders/shader-package.zip new file mode 100644 index 0000000..c594310 --- /dev/null +++ b/Shaders/shader-package.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbf454d1f1f0aca4c38f22e1b8339b3b1402e44c299340a4f0b064563286c4e2 +size 275676 diff --git a/Shaders/sharpen/fast-sharpen.glsl b/Shaders/sharpen/fast-sharpen.glsl new file mode 100644 index 0000000..623fd6d --- /dev/null +++ b/Shaders/sharpen/fast-sharpen.glsl @@ -0,0 +1,148 @@ +/* + Fast Sharpen Shader + + Copyright (C) 2005 - 2019 guest(r) - guest.r@gmail.com + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#pragma parameter SHARPEN "Sharpen strength" 1.00 0.0 2.00 0.05 +#pragma parameter CONTR "Ammount of sharpening" 0.07 0.0 0.25 0.01 +#pragma parameter DETAILS "Details sharpened " 1.00 0.0 1.00 0.05 + +#if defined(VERTEX) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING out +#define COMPAT_ATTRIBUTE in +#define COMPAT_TEXTURE texture +#else +#define COMPAT_VARYING varying +#define COMPAT_ATTRIBUTE attribute +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif + +COMPAT_ATTRIBUTE vec4 VertexCoord; +COMPAT_ATTRIBUTE vec4 TexCoord; +COMPAT_VARYING vec4 TEX0; + +vec4 _oPosition1; +uniform mat4 MVPMatrix; +uniform COMPAT_PRECISION int FrameDirection; +uniform COMPAT_PRECISION int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +COMPAT_VARYING vec2 g10; +COMPAT_VARYING vec2 g01; +COMPAT_VARYING vec2 g12; +COMPAT_VARYING vec2 g21; + +// compatibility #defines +#define vTexCoord TEX0.xy +#define SourceSize vec4(TextureSize, 1.0 / TextureSize) //either TextureSize or InputSize +#define OutSize vec4(OutputSize, 1.0 / OutputSize) + +void main() +{ + gl_Position = MVPMatrix * VertexCoord; + TEX0.xy = TexCoord.xy * 1.00001; + g10 = vec2( 0.3333,-1.0)*SourceSize.zw; + g01 = vec2(-1.0,-0.3333)*SourceSize.zw; + g12 = vec2(-0.3333, 1.0)*SourceSize.zw; + g21 = vec2( 1.0, 0.3333)*SourceSize.zw; +} + +#elif defined(FRAGMENT) + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif + +#if __VERSION__ >= 130 +#define COMPAT_VARYING in +#define COMPAT_TEXTURE texture +out COMPAT_PRECISION vec4 FragColor; +#else +#define COMPAT_VARYING varying +#define FragColor gl_FragColor +#define COMPAT_TEXTURE texture2D +#endif + +uniform COMPAT_PRECISION int FrameDirection; +uniform COMPAT_PRECISION int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +uniform sampler2D Texture; +COMPAT_VARYING vec4 TEX0; +COMPAT_VARYING vec2 g10; +COMPAT_VARYING vec2 g01; +COMPAT_VARYING vec2 g12; +COMPAT_VARYING vec2 g21; + +// compatibility #defines +#define Source Texture +#define vTexCoord TEX0.xy + +#define SourceSize vec4(TextureSize, 1.0 / TextureSize) //either TextureSize or InputSize +#define OutSize vec4(OutputSize, 1.0 / OutputSize) + +#ifdef PARAMETER_UNIFORM +uniform COMPAT_PRECISION float SHARPEN; +uniform COMPAT_PRECISION float CONTR; +uniform COMPAT_PRECISION float DETAILS; +#else +#define SHARPEN 1.2 +#define CONTR 0.08 +#define DETAILS 1.0 +#endif + +void main() +{ + vec3 c10 = COMPAT_TEXTURE(Source, vTexCoord + g10).rgb; + vec3 c01 = COMPAT_TEXTURE(Source, vTexCoord + g01).rgb; + vec3 c21 = COMPAT_TEXTURE(Source, vTexCoord + g21).rgb; + vec3 c12 = COMPAT_TEXTURE(Source, vTexCoord + g12).rgb; + vec3 c11 = COMPAT_TEXTURE(Source, vTexCoord ).rgb; + vec3 b11 = (c10+c01+c12+c21)*0.25; + + float contrast = max(max(c11.r,c11.g),c11.b); + contrast = mix(2.0*CONTR, CONTR, contrast); + + vec3 mn1 = min(min(c10,c01),min(c12,c21)); mn1 = min(mn1,c11*(1.0-contrast)); + vec3 mx1 = max(max(c10,c01),max(c12,c21)); mx1 = max(mx1,c11*(1.0+contrast)); + + vec3 dif = pow(mx1-mn1+0.0001, vec3(0.75,0.75,0.75)); + vec3 sharpen = mix(vec3(SHARPEN*DETAILS), vec3(SHARPEN), dif); + + c11 = clamp(mix(c11,b11,-sharpen), mn1,mx1); + + FragColor = vec4(c11,1.0); +} +#endif diff --git a/Shaders/smooth-chessboard-gray/smooth-chessboard-gray.glsl b/Shaders/smooth-chessboard-gray/smooth-chessboard-gray.glsl new file mode 100644 index 0000000..0d647fd --- /dev/null +++ b/Shaders/smooth-chessboard-gray/smooth-chessboard-gray.glsl @@ -0,0 +1,74 @@ +#if defined(VERTEX) + +attribute vec4 VertexCoord; +attribute vec4 COLOR; +attribute vec4 TexCoord; +varying vec4 COL0; +varying vec4 TEX0; + +vec4 _oPosition1; +uniform mat4 MVPMatrix; +uniform int FrameDirection; +uniform int FrameCount; +uniform vec2 OutputSize; +uniform vec2 TextureSize; +uniform vec2 InputSize; + +void main() +{ + vec4 _oColor; + vec2 _otexCoord; + gl_Position = VertexCoord.x * MVPMatrix[0] + VertexCoord.y * MVPMatrix[1] + VertexCoord.z * MVPMatrix[2] + VertexCoord.w * MVPMatrix[3]; + _oPosition1 = gl_Position; + _oColor = COLOR; + _otexCoord = TexCoord.xy; + COL0 = COLOR; + TEX0.xy = TexCoord.xy; +} + +#elif defined(FRAGMENT) + +#define BRIGHTNESS 0.5 + +struct output_dummy { + vec4 _color; +}; + +uniform int FrameDirection; +uniform int FrameCount; +uniform vec2 OutputSize; +uniform vec2 TextureSize; +uniform vec2 InputSize; +uniform sampler2D Texture; +varying vec4 TEX0; +//standard texture sample looks like this: texture2D(Texture, TEX0.xy); + +void main() +{ + vec4 myColor = texture2D(Texture, TEX0.xy); + mat4 neighbours = mat4( + texture2D(Texture, vec2(TEX0.x+1./TextureSize.x, TEX0.y)), + texture2D(Texture, vec2(TEX0.x-1./TextureSize.x, TEX0.y)), + texture2D(Texture, vec2(TEX0.x, TEX0.y+1./TextureSize.y)), + texture2D(Texture, vec2(TEX0.x, TEX0.y-1./TextureSize.y)) + ); + mat4 zero = mat4( + 0.,0.,0.,0., + 0.,0.,0.,0., + 0.,0.,0.,0., + 0.,0.,0.,0. + ); + + if(length(myColor) == 0. && neighbours != zero){ + + myColor = ((neighbours[0] + neighbours[1] + neighbours[2] + neighbours[3]) / 4.) * BRIGHTNESS; + + } else if (length(myColor) != 0. && neighbours == zero) { + + myColor = myColor * BRIGHTNESS; + + } + gl_FragColor = myColor; + return; +} +#endif diff --git a/Shaders/windowed/lanczos2-sharp.glsl b/Shaders/windowed/lanczos2-sharp.glsl new file mode 100644 index 0000000..5f83af3 --- /dev/null +++ b/Shaders/windowed/lanczos2-sharp.glsl @@ -0,0 +1,205 @@ +/* + Hyllian's jinc windowed-jinc 2-lobe sharper with anti-ringing Shader + + Copyright (C) 2011-2016 Hyllian/Jararaca - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +#define JINC2_WINDOW_SINC 0.5 +#define JINC2_SINC 1.0 +#define JINC2_AR_STRENGTH 0.8 + +#define texCoord TEX0 + +#if defined(VERTEX) + +#if __VERSION__ >= 130 +#define OUT out +#define IN in +#define tex2D texture +#else +#define OUT varying +#define IN attribute +#define tex2D texture2D +#endif + +#ifdef GL_ES +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif + + +IN vec4 VertexCoord; +IN vec4 Color; +IN vec2 TexCoord; +OUT vec4 color; +OUT vec2 texCoord; + +uniform mat4 MVPMatrix; +uniform COMPAT_PRECISION int FrameDirection; +uniform COMPAT_PRECISION int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; + +void main() +{ + gl_Position = MVPMatrix * VertexCoord; + color = Color; + texCoord = TexCoord; +} + +#elif defined(FRAGMENT) + +#if __VERSION__ >= 130 +#define IN in +#define tex2D texture +out vec4 FragColor; +#else +#define IN varying +#define FragColor gl_FragColor +#define tex2D texture2D +#endif + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif + +uniform COMPAT_PRECISION int FrameDirection; +uniform COMPAT_PRECISION int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +uniform sampler2D s_p; +IN vec2 texCoord; + +const float halfpi = 1.5707963267948966192313216916398; +const float pi = 3.1415926535897932384626433832795; +const float wa = JINC2_WINDOW_SINC*pi; +const float wb = JINC2_SINC*pi; + +// Calculates the distance between two points +float d(vec2 pt1, vec2 pt2) +{ + vec2 v = pt2 - pt1; + return sqrt(dot(v,v)); +} + +vec3 min4(vec3 a, vec3 b, vec3 c, vec3 d) +{ + return min(a, min(b, min(c, d))); +} + +vec3 max4(vec3 a, vec3 b, vec3 c, vec3 d) +{ + return max(a, max(b, max(c, d))); +} + +vec4 resampler(vec4 x) +{ + vec4 res; + + res.x = (x.x==0.0) ? wa*wb : sin(x.x*wa)*sin(x.x*wb)/(x.x*x.x); + res.y = (x.y==0.0) ? wa*wb : sin(x.y*wa)*sin(x.y*wb)/(x.y*x.y); + res.z = (x.z==0.0) ? wa*wb : sin(x.z*wa)*sin(x.z*wb)/(x.z*x.z); + res.w = (x.w==0.0) ? wa*wb : sin(x.w*wa)*sin(x.w*wb)/(x.w*x.w); + + return res; +} + +void main() +{ + + vec3 color; + vec4 weights[4]; + + vec2 dx = vec2(1.0, 0.0); + vec2 dy = vec2(0.0, 1.0); + + vec2 pc = texCoord*TextureSize; + + vec2 tc = (floor(pc-vec2(0.5,0.5))+vec2(0.5,0.5)); + + weights[0] = resampler(vec4(d(pc, tc -dx -dy), d(pc, tc -dy), d(pc, tc +dx -dy), d(pc, tc+2.0*dx -dy))); + weights[1] = resampler(vec4(d(pc, tc -dx ), d(pc, tc ), d(pc, tc +dx ), d(pc, tc+2.0*dx ))); + weights[2] = resampler(vec4(d(pc, tc -dx +dy), d(pc, tc +dy), d(pc, tc +dx +dy), d(pc, tc+2.0*dx +dy))); + weights[3] = resampler(vec4(d(pc, tc -dx+2.0*dy), d(pc, tc +2.0*dy), d(pc, tc +dx+2.0*dy), d(pc, tc+2.0*dx+2.0*dy))); + + dx = dx/TextureSize; + dy = dy/TextureSize; + tc = tc/TextureSize; + + vec3 c00 = tex2D(s_p, tc -dx -dy).xyz; + vec3 c10 = tex2D(s_p, tc -dy).xyz; + vec3 c20 = tex2D(s_p, tc +dx -dy).xyz; + vec3 c30 = tex2D(s_p, tc+2.0*dx -dy).xyz; + vec3 c01 = tex2D(s_p, tc -dx ).xyz; + vec3 c11 = tex2D(s_p, tc ).xyz; + vec3 c21 = tex2D(s_p, tc +dx ).xyz; + vec3 c31 = tex2D(s_p, tc+2.0*dx ).xyz; + vec3 c02 = tex2D(s_p, tc -dx +dy).xyz; + vec3 c12 = tex2D(s_p, tc +dy).xyz; + vec3 c22 = tex2D(s_p, tc +dx +dy).xyz; + vec3 c32 = tex2D(s_p, tc+2.0*dx +dy).xyz; + vec3 c03 = tex2D(s_p, tc -dx+2.0*dy).xyz; + vec3 c13 = tex2D(s_p, tc +2.0*dy).xyz; + vec3 c23 = tex2D(s_p, tc +dx+2.0*dy).xyz; + vec3 c33 = tex2D(s_p, tc+2.0*dx+2.0*dy).xyz; + + color = tex2D(s_p, texCoord).xyz; + + // Get min/max samples + vec3 min_sample = min4(c11, c21, c12, c22); + vec3 max_sample = max4(c11, c21, c12, c22); +/* + color = mat4x3(c00, c10, c20, c30) * weights[0]; + color+= mat4x3(c01, c11, c21, c31) * weights[1]; + color+= mat4x3(c02, c12, c22, c32) * weights[2]; + color+= mat4x3(c03, c13, c23, c33) * weights[3]; + mat4 wgts = mat4(weights[0], weights[1], weights[2], weights[3]); + vec4 wsum = wgts * vec4(1.0,1.0,1.0,1.0); + color = color/(dot(wsum, vec4(1.0,1.0,1.0,1.0))); +*/ + + + color = vec3(dot(weights[0], vec4(c00.x, c10.x, c20.x, c30.x)), dot(weights[0], vec4(c00.y, c10.y, c20.y, c30.y)), dot(weights[0], vec4(c00.z, c10.z, c20.z, c30.z))); + color+= vec3(dot(weights[1], vec4(c01.x, c11.x, c21.x, c31.x)), dot(weights[1], vec4(c01.y, c11.y, c21.y, c31.y)), dot(weights[1], vec4(c01.z, c11.z, c21.z, c31.z))); + color+= vec3(dot(weights[2], vec4(c02.x, c12.x, c22.x, c32.x)), dot(weights[2], vec4(c02.y, c12.y, c22.y, c32.y)), dot(weights[2], vec4(c02.z, c12.z, c22.z, c32.z))); + color+= vec3(dot(weights[3], vec4(c03.x, c13.x, c23.x, c33.x)), dot(weights[3], vec4(c03.y, c13.y, c23.y, c33.y)), dot(weights[3], vec4(c03.z, c13.z, c23.z, c33.z))); + color = color/(dot(weights[0], vec4(1,1,1,1)) + dot(weights[1], vec4(1,1,1,1)) + dot(weights[2], vec4(1,1,1,1)) + dot(weights[3], vec4(1,1,1,1))); + + // Anti-ringing + vec3 aux = color; + color = clamp(color, min_sample, max_sample); + color = mix(aux, color, JINC2_AR_STRENGTH); + + // final sum and weight normalization + FragColor.xyz = color; +} +#endif diff --git a/Shaders/xbr/xbr-lv2-noblend.glsl b/Shaders/xbr/xbr-lv2-noblend.glsl new file mode 100644 index 0000000..bbc2aae --- /dev/null +++ b/Shaders/xbr/xbr-lv2-noblend.glsl @@ -0,0 +1,300 @@ +#version 130 + +/* + Hyllian's xBR-lv2-noblend Shader + + Copyright (C) 2011-2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + + Incorporates some of the ideas from SABR shader. Thanks to Joshua Street. +*/ + +#pragma parameter XBR_EQ_THRESHOLD "Eq Threshold" 0.6 0.0 2.0 0.1 +#pragma parameter XBR_LV2_COEFFICIENT "Lv2 Coefficient" 2.0 1.0 3.0 0.1 + +#define mul(a,b) (b*a) + +// Uncomment just one of the three params below to choose the corner detection +#define CORNER_A +//#define CORNER_B +//#define CORNER_C +//#define CORNER_D + +#define lv2_cf XBR_LV2_COEFFICIENT + +#define texCoord TEX0 +#define t1 TEX1 +#define t2 TEX2 +#define t3 TEX3 +#define t4 TEX4 +#define t5 TEX5 +#define t6 TEX6 +#define t7 TEX7 + +#if defined(VERTEX) + +#if __VERSION__ >= 130 +#define OUT out +#define IN in +#define tex2D texture +#else +#define OUT varying +#define IN attribute +#define tex2D texture2D +#endif + +#ifdef GL_ES +#define PRECISION mediump +#else +#define PRECISION +#endif + + +IN vec4 VertexCoord; +IN vec4 Color; +IN vec2 TexCoord; + +OUT vec4 color; +OUT vec2 texCoord; +OUT vec4 t1; +OUT vec4 t2; +OUT vec4 t3; +OUT vec4 t4; +OUT vec4 t5; +OUT vec4 t6; +OUT vec4 t7; + +uniform mat4 MVPMatrix; +uniform PRECISION int FrameDirection; +uniform PRECISION int FrameCount; +uniform PRECISION vec2 OutputSize; +uniform PRECISION vec2 TextureSize; +uniform PRECISION vec2 InputSize; + +void main() +{ + gl_Position = MVPMatrix * VertexCoord; + color = Color; + + float dx = (1.0/TextureSize.x); + float dy = (1.0/TextureSize.y); + + texCoord = TexCoord; + texCoord.x *= 1.00000001; + t1 = TexCoord.xxxy + vec4( -dx, 0, dx,-2.0*dy); // A1 B1 C1 + t2 = TexCoord.xxxy + vec4( -dx, 0, dx, -dy); // A B C + t3 = TexCoord.xxxy + vec4( -dx, 0, dx, 0); // D E F + t4 = TexCoord.xxxy + vec4( -dx, 0, dx, dy); // G H I + t5 = TexCoord.xxxy + vec4( -dx, 0, dx, 2.0*dy); // G5 H5 I5 + t6 = TexCoord.xyyy + vec4(-2.0*dx,-dy, 0, dy); // A0 D0 G0 + t7 = TexCoord.xyyy + vec4( 2.0*dx,-dy, 0, dy); // C4 F4 I4 +} + + +#elif defined(FRAGMENT) + +#if __VERSION__ >= 130 +#define IN in +#define tex2D texture +out vec4 FragColor; +#else +#define IN varying +#define FragColor gl_FragColor +#define tex2D texture2D +#endif + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#define PRECISION mediump +#else +#define PRECISION +#endif + +uniform PRECISION int FrameDirection; +uniform PRECISION int FrameCount; +uniform PRECISION vec2 OutputSize; +uniform PRECISION vec2 TextureSize; +uniform PRECISION vec2 InputSize; +uniform sampler2D decal; +IN vec2 texCoord; +IN vec4 t1; +IN vec4 t2; +IN vec4 t3; +IN vec4 t4; +IN vec4 t5; +IN vec4 t6; +IN vec4 t7; + +#ifdef PARAMETER_UNIFORM +uniform PRECISION float XBR_EQ_THRESHOLD; +uniform PRECISION float XBR_LV2_COEFFICIENT; +#else +#define XBR_EQ_THRESHOLD 0.6 +#define XBR_LV2_COEFFICIENT 2.0 +#endif +// END PARAMETERS // + +const vec3 Y = vec3(0.2126, 0.7152, 0.0722); + +// Difference between vector components. +vec4 df(vec4 A, vec4 B) +{ + return vec4(abs(A-B)); +} + +// Compare two vectors and return their components are different. +vec4 diff(vec4 A, vec4 B) +{ + return vec4(notEqual(A, B)); +} + +// Determine if two vector components are equal based on a threshold. +vec4 eq(vec4 A, vec4 B) +{ + return (step(df(A, B), vec4(XBR_EQ_THRESHOLD))); +} + +// Determine if two vector components are NOT equal based on a threshold. +vec4 neq(vec4 A, vec4 B) +{ + return (vec4(1.0, 1.0, 1.0, 1.0) - eq(A, B)); +} + +// Weighted distance. +vec4 wd(vec4 a, vec4 b, vec4 c, vec4 d, vec4 e, vec4 f, vec4 g, vec4 h) +{ + return (df(a,b) + df(a,c) + df(d,e) + df(d,f) + 4.0*df(g,h)); +} + +vec4 weighted_distance(vec4 a, vec4 b, vec4 c, vec4 d, vec4 e, vec4 f, vec4 g, vec4 h, vec4 i, vec4 j, vec4 k, vec4 l) +{ + return (df(a,b) + df(a,c) + df(d,e) + df(d,f) + df(i,j) + df(k,l) + 2.0*df(g,h)); +} + +float c_df(vec3 c1, vec3 c2) +{ + vec3 df = abs(c1 - c2); + return df.r + df.g + df.b; +} + +void main() +{ + vec4 edri, edr, edr_l, edr_u; // px = pixel, edr = edge detection rule + vec4 irlv1, irlv2l, irlv2u, block_3d; + bvec4 nc, px; + vec4 fx, fx_l, fx_u; // inequations of straight lines. + + vec2 fp = fract(texCoord*TextureSize); + + vec3 A1 = tex2D(decal, t1.xw ).xyz; + vec3 B1 = tex2D(decal, t1.yw ).xyz; + vec3 C1 = tex2D(decal, t1.zw ).xyz; + vec3 A = tex2D(decal, t2.xw ).xyz; + vec3 B = tex2D(decal, t2.yw ).xyz; + vec3 C = tex2D(decal, t2.zw ).xyz; + vec3 D = tex2D(decal, t3.xw ).xyz; + vec3 E = tex2D(decal, t3.yw ).xyz; + vec3 F = tex2D(decal, t3.zw ).xyz; + vec3 G = tex2D(decal, t4.xw ).xyz; + vec3 H = tex2D(decal, t4.yw ).xyz; + vec3 I = tex2D(decal, t4.zw ).xyz; + vec3 G5 = tex2D(decal, t5.xw ).xyz; + vec3 H5 = tex2D(decal, t5.yw ).xyz; + vec3 I5 = tex2D(decal, t5.zw ).xyz; + vec3 A0 = tex2D(decal, t6.xy ).xyz; + vec3 D0 = tex2D(decal, t6.xz ).xyz; + vec3 G0 = tex2D(decal, t6.xw ).xyz; + vec3 C4 = tex2D(decal, t7.xy ).xyz; + vec3 F4 = tex2D(decal, t7.xz ).xyz; + vec3 I4 = tex2D(decal, t7.xw ).xyz; + + vec4 b = mul( mat4x3(B, D, H, F), Y ); + vec4 c = mul( mat4x3(C, A, G, I), Y ); + vec4 e = mul( mat4x3(E, E, E, E), Y ); + vec4 d = b.yzwx; + vec4 f = b.wxyz; + vec4 g = c.zwxy; + vec4 h = b.zwxy; + vec4 i = c.wxyz; + + vec4 i4 = mul( mat4x3(I4, C1, A0, G5), Y ); + vec4 i5 = mul( mat4x3(I5, C4, A1, G0), Y ); + vec4 h5 = mul( mat4x3(H5, F4, B1, D0), Y ); + vec4 f4 = h5.yzwx; + + vec4 Ao = vec4( 1.0, -1.0, -1.0, 1.0 ); + vec4 Bo = vec4( 1.0, 1.0, -1.0,-1.0 ); + vec4 Co = vec4( 1.5, 0.5, -0.5, 0.5 ); + vec4 Ax = vec4( 1.0, -1.0, -1.0, 1.0 ); + vec4 Bx = vec4( 0.5, 2.0, -0.5,-2.0 ); + vec4 Cx = vec4( 1.0, 1.0, -0.5, 0.0 ); + vec4 Ay = vec4( 1.0, -1.0, -1.0, 1.0 ); + vec4 By = vec4( 2.0, 0.5, -2.0,-0.5 ); + vec4 Cy = vec4( 2.0, 0.0, -1.0, 0.5 ); + + // These inequations define the line below which interpolation occurs. + fx = vec4(greaterThan(Ao*fp.y+Bo*fp.x, Co)); + fx_l = vec4(greaterThan(Ax*fp.y+Bx*fp.x, Cx)); + fx_u = vec4(greaterThan(Ay*fp.y+By*fp.x, Cy)); + +#ifdef CORNER_A + irlv1 = diff(e,f) * diff(e,h); +#endif +#ifdef CORNER_B + irlv1 = (neq(f,b) * neq(h,d) + eq(e,i) * neq(f,i4) * neq(h,i5) + eq(e,g) + eq(e,c)); +#endif +#ifdef CORNER_D + vec4 c1 = i4.yzwx; + vec4 g0 = i5.wxyz; + irlv1 = (neq(f,b) * neq(h,d) + eq(e,i) * neq(f,i4) * neq(h,i5) + eq(e,g) + eq(e,c) ) * (diff(f,f4) * diff(f,i) + diff(h,h5) * diff(h,i) + diff(h,g) + diff(f,c) + eq(b,c1) * eq(d,g0)); +#endif +#ifdef CORNER_C + irlv1 = (neq(f,b) * neq(f,c) + neq(h,d) * neq(h,g) + eq(e,i) * (neq(f,f4) * neq(f,i4) + neq(h,h5) * neq(h,i5)) + eq(e,g) + eq(e,c)); +#endif + + irlv2l = diff(e,g) * diff(d,g); + irlv2u = diff(e,c) * diff(b,c); + + vec4 wd1 = wd( e, c, g, i, h5, f4, h, f); + vec4 wd2 = wd( h, d, i5, f, i4, b, e, i); + + edri = step(wd1, wd2) * irlv1; + edr = step(wd1 + vec4(0.1, 0.1, 0.1, 0.1), wd2) * step(vec4(0.5, 0.5, 0.5, 0.5), irlv1); + edr_l = step( lv2_cf*df(f,g), df(h,c) ) * irlv2l * edr; + edr_u = step( lv2_cf*df(h,c), df(f,g) ) * irlv2u * edr; + + nc = bvec4( edr * ( fx + edr_l * (fx_l)) + edr_u * fx_u); + + px = lessThanEqual(df(e, f), df(e, h)); + + vec3 res1 = nc.x ? px.x ? F : H : nc.y ? px.y ? B : F : nc.z ? px.z ? D : B : E; + vec3 res2 = nc.w ? px.w ? H : D : nc.z ? px.z ? D : B : nc.y ? px.y ? B : F : E; + + vec2 df12 = abs( mul( mat2x3(res1, res2), Y ) - e.xy); + + vec3 res = mix(res1, res2, step(df12.x, df12.y)); + + FragColor.xyz = res; +} +#endif diff --git a/Shaders/xbrz/xbrz-freescale.glsl b/Shaders/xbrz/xbrz-freescale.glsl new file mode 100644 index 0000000..3cc9edd --- /dev/null +++ b/Shaders/xbrz/xbrz-freescale.glsl @@ -0,0 +1,375 @@ +/* + Hyllian's xBR-vertex code and texel mapping + + Copyright (C) 2011/2016 Hyllian - sergiogdb@gmail.com + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + +// This shader also uses code and/or concepts from xBRZ as it appears +// in the Desmume source code. The license for which is as follows: + +// **************************************************************************** +// * This file is part of the HqMAME project. It is distributed under * +// * GNU General Public License: http://www.gnu.org/licenses/gpl-3.0 * +// * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved * +// * * +// * Additionally and as a special exception, the author gives permission * +// * to link the code of this program with the MAME library (or with modified * +// * versions of MAME that use the same license as MAME), and distribute * +// * linked combinations including the two. You must obey the GNU General * +// * Public License in all respects for all of the code used other than MAME. * +// * If you modify this file, you may extend this exception to your version * +// * of the file, but you are not obligated to do so. If you do not wish to * +// * do so, delete this exception statement from your version. * +// **************************************************************************** + +#if defined(VERTEX) + +#if __VERSION__ >= 130 +#define COMPAT_VARYING out +#define COMPAT_ATTRIBUTE in +#define COMPAT_TEXTURE texture +#else +#define COMPAT_VARYING varying +#define COMPAT_ATTRIBUTE attribute +#define COMPAT_TEXTURE texture2D +#endif + +#ifdef GL_ES +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif + +COMPAT_ATTRIBUTE vec4 VertexCoord; +COMPAT_ATTRIBUTE vec4 COLOR; +COMPAT_ATTRIBUTE vec4 TexCoord; +COMPAT_VARYING vec4 COL0; +COMPAT_VARYING vec4 TEX0; + +vec4 _oPosition1; +uniform mat4 MVPMatrix; +uniform COMPAT_PRECISION int FrameDirection; +uniform COMPAT_PRECISION int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; + +// compatibility #defines +#define vTexCoord TEX0.xy +#define SourceSize vec4(TextureSize, 1.0 / TextureSize) //either TextureSize or InputSize +#define OutSize vec4(OutputSize, 1.0 / OutputSize) + +#ifdef PARAMETER_UNIFORM +uniform COMPAT_PRECISION float WHATEVER; +#else +#define WHATEVER 0.0 +#endif + +void main() +{ + gl_Position = MVPMatrix * VertexCoord; + TEX0.xy = TexCoord.xy * 1.0001; +} + +#elif defined(FRAGMENT) + +#ifdef GL_ES +#ifdef GL_FRAGMENT_PRECISION_HIGH +precision highp float; +#else +precision mediump float; +#endif +#define COMPAT_PRECISION mediump +#else +#define COMPAT_PRECISION +#endif + +#if __VERSION__ >= 130 +#define COMPAT_VARYING in +#define COMPAT_TEXTURE texture +out COMPAT_PRECISION vec4 FragColor; +#else +#define COMPAT_VARYING varying +#define FragColor gl_FragColor +#define COMPAT_TEXTURE texture2D +#endif + +uniform COMPAT_PRECISION int FrameDirection; +uniform COMPAT_PRECISION int FrameCount; +uniform COMPAT_PRECISION vec2 OutputSize; +uniform COMPAT_PRECISION vec2 TextureSize; +uniform COMPAT_PRECISION vec2 InputSize; +uniform sampler2D Texture; +COMPAT_VARYING vec4 TEX0; + +// compatibility #defines +#define Source Texture +#define vTexCoord TEX0.xy + +#define SourceSize vec4(TextureSize, 1.0 / TextureSize) //either TextureSize or InputSize +#define OutSize vec4(OutputSize, 1.0 / OutputSize) + +#define BLEND_NONE 0 +#define BLEND_NORMAL 1 +#define BLEND_DOMINANT 2 +#define LUMINANCE_WEIGHT 1.0 +#define EQUAL_COLOR_TOLERANCE 30.0/255.0 +#define STEEP_DIRECTION_THRESHOLD 2.2 +#define DOMINANT_DIRECTION_THRESHOLD 3.6 + +float DistYCbCr(vec3 pixA, vec3 pixB) +{ + const vec3 w = vec3(0.2627, 0.6780, 0.0593); + const float scaleB = 0.5 / (1.0 - w.b); + const float scaleR = 0.5 / (1.0 - w.r); + vec3 diff = pixA - pixB; + float Y = dot(diff.rgb, w); + float Cb = scaleB * (diff.b - Y); + float Cr = scaleR * (diff.r - Y); + + return sqrt(((LUMINANCE_WEIGHT * Y) * (LUMINANCE_WEIGHT * Y)) + (Cb * Cb) + (Cr * Cr)); +} + +bool IsPixEqual(const vec3 pixA, const vec3 pixB) +{ + return (DistYCbCr(pixA, pixB) < EQUAL_COLOR_TOLERANCE); +} + +float get_left_ratio(vec2 center, vec2 origin, vec2 direction, vec2 scale) +{ + vec2 P0 = center - origin; + vec2 proj = direction * (dot(P0, direction) / dot(direction, direction)); + vec2 distv = P0 - proj; + vec2 orth = vec2(-direction.y, direction.x); + float side = sign(dot(P0, orth)); + float v = side * length(distv * scale); + +// return step(0, v); + return smoothstep(-sqrt(2.0)/2.0, sqrt(2.0)/2.0, v); +} + +#define eq(a,b) (a == b) +#define neq(a,b) (a != b) + +#define P(x,y) COMPAT_TEXTURE(Source, coord + SourceSize.zw * vec2(x, y)).rgb + +void main() +{ + //--------------------------------------- + // Input Pixel Mapping: -|x|x|x|- + // x|A|B|C|x + // x|D|E|F|x + // x|G|H|I|x + // -|x|x|x|- + + vec2 scale = OutputSize.xy * SourceSize.zw; + vec2 pos = fract(vTexCoord * SourceSize.xy) - vec2(0.5, 0.5); + vec2 coord = vTexCoord - pos * SourceSize.zw; + + vec3 A = P(-1.,-1.); + vec3 B = P( 0.,-1.); + vec3 C = P( 1.,-1.); + vec3 D = P(-1., 0.); + vec3 E = P( 0., 0.); + vec3 F = P( 1., 0.); + vec3 G = P(-1., 1.); + vec3 H = P( 0., 1.); + vec3 I = P( 1., 1.); + + // blendResult Mapping: x|y| + // w|z| + ivec4 blendResult = ivec4(BLEND_NONE,BLEND_NONE,BLEND_NONE,BLEND_NONE); + + // Preprocess corners + // Pixel Tap Mapping: -|-|-|-|- + // -|-|B|C|- + // -|D|E|F|x + // -|G|H|I|x + // -|-|x|x|- + if (!((eq(E,F) && eq(H,I)) || (eq(E,H) && eq(F,I)))) + { + float dist_H_F = DistYCbCr(G, E) + DistYCbCr(E, C) + DistYCbCr(P(0,2), I) + DistYCbCr(I, P(2.,0.)) + (4.0 * DistYCbCr(H, F)); + float dist_E_I = DistYCbCr(D, H) + DistYCbCr(H, P(1,2)) + DistYCbCr(B, F) + DistYCbCr(F, P(2.,1.)) + (4.0 * DistYCbCr(E, I)); + bool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_H_F) < dist_E_I; + blendResult.z = ((dist_H_F < dist_E_I) && neq(E,F) && neq(E,H)) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE; + } + + + // Pixel Tap Mapping: -|-|-|-|- + // -|A|B|-|- + // x|D|E|F|- + // x|G|H|I|- + // -|x|x|-|- + if (!((eq(D,E) && eq(G,H)) || (eq(D,G) && eq(E,H)))) + { + float dist_G_E = DistYCbCr(P(-2.,1.) , D) + DistYCbCr(D, B) + DistYCbCr(P(-1.,2.), H) + DistYCbCr(H, F) + (4.0 * DistYCbCr(G, E)); + float dist_D_H = DistYCbCr(P(-2.,0.) , G) + DistYCbCr(G, P(0.,2.)) + DistYCbCr(A, E) + DistYCbCr(E, I) + (4.0 * DistYCbCr(D, H)); + bool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_D_H) < dist_G_E; + blendResult.w = ((dist_G_E > dist_D_H) && neq(E,D) && neq(E,H)) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE; + } + + // Pixel Tap Mapping: -|-|x|x|- + // -|A|B|C|x + // -|D|E|F|x + // -|-|H|I|- + // -|-|-|-|- + if (!((eq(B,C) && eq(E,F)) || (eq(B,E) && eq(C,F)))) + { + float dist_E_C = DistYCbCr(D, B) + DistYCbCr(B, P(1.,-2.)) + DistYCbCr(H, F) + DistYCbCr(F, P(2.,-1.)) + (4.0 * DistYCbCr(E, C)); + float dist_B_F = DistYCbCr(A, E) + DistYCbCr(E, I) + DistYCbCr(P(0.,-2.), C) + DistYCbCr(C, P(2.,0.)) + (4.0 * DistYCbCr(B, F)); + bool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_B_F) < dist_E_C; + blendResult.y = ((dist_E_C > dist_B_F) && neq(E,B) && neq(E,F)) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE; + } + + // Pixel Tap Mapping: -|x|x|-|- + // x|A|B|C|- + // x|D|E|F|- + // -|G|H|-|- + // -|-|-|-|- + if (!((eq(A,B) && eq(D,E)) || (eq(A,D) && eq(B,E)))) + { + float dist_D_B = DistYCbCr(P(-2.,0.), A) + DistYCbCr(A, P(0.,-2.)) + DistYCbCr(G, E) + DistYCbCr(E, C) + (4.0 * DistYCbCr(D, B)); + float dist_A_E = DistYCbCr(P(-2.,-1.), D) + DistYCbCr(D, H) + DistYCbCr(P(-1.,-2.), B) + DistYCbCr(B, F) + (4.0 * DistYCbCr(A, E)); + bool dominantGradient = (DOMINANT_DIRECTION_THRESHOLD * dist_D_B) < dist_A_E; + blendResult.x = ((dist_D_B < dist_A_E) && neq(E,D) && neq(E,B)) ? ((dominantGradient) ? BLEND_DOMINANT : BLEND_NORMAL) : BLEND_NONE; + } + + vec3 res = E; + + // Pixel Tap Mapping: -|-|-|-|- + // -|-|B|C|- + // -|D|E|F|x + // -|G|H|I|x + // -|-|x|x|- + if(blendResult.z != BLEND_NONE) + { + float dist_F_G = DistYCbCr(F, G); + float dist_H_C = DistYCbCr(H, C); + bool doLineBlend = (blendResult.z == BLEND_DOMINANT || + !((blendResult.y != BLEND_NONE && !IsPixEqual(E, G)) || (blendResult.w != BLEND_NONE && !IsPixEqual(E, C)) || + (IsPixEqual(G, H) && IsPixEqual(H, I) && IsPixEqual(I, F) && IsPixEqual(F, C) && !IsPixEqual(E, I)))); + + vec2 origin = vec2(0.0, 1.0 / sqrt(2.0)); + vec2 direction = vec2(1.0, -1.0); + if(doLineBlend) + { + bool haveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_F_G <= dist_H_C) && neq(E,G) && neq(D,G); + bool haveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_H_C <= dist_F_G) && neq(E,C) && neq(B,C); + origin = haveShallowLine? vec2(0.0, 0.25) : vec2(0.0, 0.5); + direction.x += haveShallowLine? 1.0: 0.0; + direction.y -= haveSteepLine? 1.0: 0.0; + } + + vec3 blendPix = mix(H,F, step(DistYCbCr(E, F), DistYCbCr(E, H))); + res = mix(res, blendPix, get_left_ratio(pos, origin, direction, scale)); + } + + // Pixel Tap Mapping: -|-|-|-|- + // -|A|B|-|- + // x|D|E|F|- + // x|G|H|I|- + // -|x|x|-|- + if(blendResult.w != BLEND_NONE) + { + float dist_H_A = DistYCbCr(H, A); + float dist_D_I = DistYCbCr(D, I); + bool doLineBlend = (blendResult.w == BLEND_DOMINANT || + !((blendResult.z != BLEND_NONE && !IsPixEqual(E, A)) || (blendResult.x != BLEND_NONE && !IsPixEqual(E, I)) || + (IsPixEqual(A, D) && IsPixEqual(D, G) && IsPixEqual(G, H) && IsPixEqual(H, I) && !IsPixEqual(E, G)))); + + vec2 origin = vec2(-1.0 / sqrt(2.0), 0.0); + vec2 direction = vec2(1.0, 1.0); + if(doLineBlend) + { + bool haveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_H_A <= dist_D_I) && neq(E,A) && neq(B,A); + bool haveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_D_I <= dist_H_A) && neq(E,I) && neq(F,I); + origin = haveShallowLine? vec2(-0.25, 0.0) : vec2(-0.5, 0.0); + direction.y += haveShallowLine? 1.0: 0.0; + direction.x += haveSteepLine? 1.0: 0.0; + } + origin = origin; + direction = direction; + + vec3 blendPix = mix(H,D, step(DistYCbCr(E, D), DistYCbCr(E, H))); + res = mix(res, blendPix, get_left_ratio(pos, origin, direction, scale)); + } + + // Pixel Tap Mapping: -|-|x|x|- + // -|A|B|C|x + // -|D|E|F|x + // -|-|H|I|- + // -|-|-|-|- + if(blendResult.y != BLEND_NONE) + { + float dist_B_I = DistYCbCr(B, I); + float dist_F_A = DistYCbCr(F, A); + bool doLineBlend = (blendResult.y == BLEND_DOMINANT || + !((blendResult.x != BLEND_NONE && !IsPixEqual(E, I)) || (blendResult.z != BLEND_NONE && !IsPixEqual(E, A)) || + (IsPixEqual(I, F) && IsPixEqual(F, C) && IsPixEqual(C, B) && IsPixEqual(B, A) && !IsPixEqual(E, C)))); + + vec2 origin = vec2(1.0 / sqrt(2.0), 0.0); + vec2 direction = vec2(-1.0, -1.0); + + if(doLineBlend) + { + bool haveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_B_I <= dist_F_A) && neq(E,I) && neq(H,I); + bool haveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_F_A <= dist_B_I) && neq(E,A) && neq(D,A); + origin = haveShallowLine? vec2(0.25, 0.0) : vec2(0.5, 0.0); + direction.y -= haveShallowLine? 1.0: 0.0; + direction.x -= haveSteepLine? 1.0: 0.0; + } + + vec3 blendPix = mix(F,B, step(DistYCbCr(E, B), DistYCbCr(E, F))); + res = mix(res, blendPix, get_left_ratio(pos, origin, direction, scale)); + } + + // Pixel Tap Mapping: -|x|x|-|- + // x|A|B|C|- + // x|D|E|F|- + // -|G|H|-|- + // -|-|-|-|- + if(blendResult.x != BLEND_NONE) + { + float dist_D_C = DistYCbCr(D, C); + float dist_B_G = DistYCbCr(B, G); + bool doLineBlend = (blendResult.x == BLEND_DOMINANT || + !((blendResult.w != BLEND_NONE && !IsPixEqual(E, C)) || (blendResult.y != BLEND_NONE && !IsPixEqual(E, G)) || + (IsPixEqual(C, B) && IsPixEqual(B, A) && IsPixEqual(A, D) && IsPixEqual(D, G) && !IsPixEqual(E, A)))); + + vec2 origin = vec2(0.0, -1.0 / sqrt(2.0)); + vec2 direction = vec2(-1.0, 1.0); + if(doLineBlend) + { + bool haveShallowLine = (STEEP_DIRECTION_THRESHOLD * dist_D_C <= dist_B_G) && neq(E,C) && neq(F,C); + bool haveSteepLine = (STEEP_DIRECTION_THRESHOLD * dist_B_G <= dist_D_C) && neq(E,G) && neq(H,G); + origin = haveShallowLine? vec2(0.0, -0.25) : vec2(0.0, -0.5); + direction.x -= haveShallowLine? 1.0: 0.0; + direction.y += haveSteepLine? 1.0: 0.0; + } + + vec3 blendPix = mix(D,B, step(DistYCbCr(E, B), DistYCbCr(E, D))); + res = mix(res, blendPix, get_left_ratio(pos, origin, direction, scale)); + } + + FragColor = vec4(res, 1.0); +} +#endif diff --git a/TADemo/3DTA.exe b/TADemo/3DTA.exe new file mode 100644 index 0000000..927e22b --- /dev/null +++ b/TADemo/3DTA.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9917e96c903a92bea03b6d5661d1115e3c7ed1ac5d52f50fe776e5a3c26cfb5 +size 536627 diff --git a/TADemo/3DTAConfig.exe b/TADemo/3DTAConfig.exe new file mode 100644 index 0000000..c74ac93 --- /dev/null +++ b/TADemo/3DTAConfig.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30823823ab670e6b8f315af651579b4524bbc088c367a1ee4ca31e87c06087ba +size 32768 diff --git a/TADemo/HPIUtil.dll b/TADemo/HPIUtil.dll new file mode 100644 index 0000000..0aa4645 --- /dev/null +++ b/TADemo/HPIUtil.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bc007e99bc3f9de69b26d8ae4c10f0592110ef69a826390c6c3ec6ff21f98e7 +size 95232 diff --git a/TADemo/MAPS.TXT b/TADemo/MAPS.TXT new file mode 100644 index 0000000..3d5cd3d --- /dev/null +++ b/TADemo/MAPS.TXT @@ -0,0 +1,139 @@ +; +; Default list of maps that the Random Map Selector (tm) will chose from, with weightings. +; Thanks to Xeno for making the list of mapnames! +; +; Structure of this file (quite simple) +; +; +Group_name +; +; +; ... +; +Group_name +; ... +; +; NOTE: If you want to disable a group, just remove the + since all lines that doesn't start with either an +; integer or a + will be considered as groups to ignore. (and no +10 won't count as an integer). If you want +; to disable a specific map, just delete the line or perhaps set the weight to 0. +; +; About the weightings: They are an INTEGER, and the chance for getting a certain map is proportional to +; / . + ++ORIGINAL TA MAPS + +100 Anteer Strait +100 Ashap Plateau +100 Caldera's Rim +100 Coast to Coast +100 Dark Side +100 Etorrep Glacier +100 Evad River Confluence +100 Fox Holes +100 Full Moon +100 Gods of War +100 Great Divide +100 Greenhaven +100 Hundred Isles +100 Kill the Middle +100 King of the Hill +100 Lava & Two Hills +100 Lava Alley +100 Lava Highground +100 Lava Mania +100 Lava Run +100 Metal Heck +100 Over Crude Water +100 Painted Desert +100 Pincushion +100 Red Hot Lava +100 Red Planet +100 Red Triangle +100 Ring Atoll +100 Rock Alley +100 Seven Islands +100 Sherwood +100 Shore to Shore +100 The Cold Place +100 The Desert Triad +100 The Pass +100 Two Continents +100 Yerrot Mountains + + ++CORE CONTINGENCY MAPS + +100 Acid Foursome +100 Acid Pools +100 Acid Trip +100 Assault on Suburbia +100 Biggie Biggs +100 Block Wars +100 Brain Coral +100 Cavedog Links CC +100 Checker Ponds +100 Cluster Freak +100 Comet Catcher +100 Core Prime Industrial Area +100 Crater Islands +100 Crystal Cracked +100 Crystal Isles +100 Crystal Maze +100 Crystal Treasure Island +100 Dire Straits +100 East Indeez +100 Eastside Westside +100 Expanded Confluence +100 Flooded Glaciers +100 Gasbag Forests +100 Gasplant Plain +100 Higher Ground +100 Ice Scream +100 Icy Bergs +100 John's Pass +100 Lake Shore +100 Lusch Puppy +100 Luschaven +100 Metal Isles +100 Moon Quartet +100 Ooooweeee +100 Pillopeens +100 Plains and Passes +100 Polar Range +100 Polyp Fields +100 Red River North +100 Red River +100 Ror Shock +100 Sail Away +100 Sector 410b +100 Show Down +100 Slate Gordon +100 Slated Fate +100 Steel Jungle +100 Surface Meltdown +100 Temblorian Mist +100 The Barrier Reef +100 The Bayou +100 Town & Country +100 Trout Farm + + ++BATTLE TACTICS MAPS + +100 Aqua Verdigris +100 Brilliant Cut Lake +100 Canal Crossing +100 Coremageddon +100 Metal Gridlock +100 Wretched Ridges + + ++ONLINE CAVEDOG MAPS + +100 Ancient Issaquah +100 Evad River Delta +100 Luschie +100 Luschinfloggen +100 Mounds of Mars +100 ThundurLok Rok +100 Tropical Paradise + + diff --git a/TADemo/PALETTE.PAL b/TADemo/PALETTE.PAL new file mode 100644 index 0000000000000000000000000000000000000000..dfdf5388e5b3d876eeab3e9b4b3d7d821e141b07 GIT binary patch literal 1024 zcmZ{jA&lxu6ox-nQBhG*QBhHWsHmtwR8&+TDiFO10)ePNR3KI$Dj=yqAP@)yqBr3s z2*e5m0>MoXD-bIX2ws9fAP~G{#R^_B?`+=6dnf%TGbeNA{Qdtk07JpoH2hu+zc)h( z{QCPBKYslCb>g=}-9Na$9XT!5>_;OrFhkqdzhH4AJ5Or7gP@pifK`hH-# zSu&_f@==#gFQt<;XtzSrIG_=Fgn^6i*|?60Wg6(Z#`AgNa@nxo&snWXrqdq%ev2%N zNz;Hhb_oLE>l)a$hGl7(CKys)*OB}u_xqjm`OM*PV7uMQJuBw(Ipgt|qA1AooOZiS zk|cy-i064Yjw5#%+&>hDs}lZ-*;-M|6y1R$%^yVVD?xI?4G&oUD@JXG<`igFCIlKn zz~}m@*qv`wyLZavhJ3Oh?T?8%FZfA^TGYa=H*x$1b}hnk>X^2VVb;(Mhm+{Hy*`*9 zE|i;h^2MHXvL-4P`1uUCJ;F}BbIIElX~Q51b>cuH^fc^$ts#2)Ba9Z@b4`GwP;hI; is the same number that is saved in a unit restrictions file. Don't know +; how that is related to the unit, or if it can be found in the unit's file somewhere. So if +; you know, feel free to enlighten me. +; +; If you add stuff to the file, you could always send it to me so that future releases of TA Demo can +; recognize what 3rd-party units was used. (If there should happen to be a nice easy way to get the unit +; names from those id numbers, this file might become obsolete) +; +; Edited by Fnordia 990220 +; 991027 +; 000219 +; 010318 +; +; +; Syntax: (very simple) +; +; = +; +; +; <...> +; +; = +; +; etc.. +; +; update: only units in one of the +-groups will show. with the group furthest down takes presedence. +; however, the units before the first +-group will be tested for all groups + +; I just added one unit to CC cuz I'm lazy. Btw, it's inclusive, so if any unit in the groups list were +; enabled in the game, this group's name will be listed under used units. + +=BAI +6da73737 + +=Queller +; albatross +62cc5579 + +=Counterstrike +; fluxor +9a34465c + ++regular ta +=Core Contingency + +; it's the nixter btw. :) +848ebee6 + +=ARM Flea +371d264a + +=ARM Scarab +6b81b8be + +=CORE Hedgehog +763476f4 + +=CORE Immolator +3fcf5935 + +=ARM Fast Attack-Repair Kbot +d6d867f3 + +=CORE Necro +f4c81832 + ++uberhack 1.0 +=UberHack 1.0 TAEC +; The anemone +b9f36d39 + ++uberhack 1.1 +=Uberhack 1.1 +; the gimp +16b40f07 + +=TAEC units +; the thumper hehe +a89cec32 + ++uberhack 3.0 +=Uberhack 3.0 +;centurion +3b978743 + ++xta 0.8 +=XTA 0.8 +f804eafe + ++xta betas +=XTA pre1.0 +; fortwall +6d197dcf \ No newline at end of file diff --git a/Viewer.exe b/Viewer.exe new file mode 100644 index 0000000..ac006a8 --- /dev/null +++ b/Viewer.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3544119e60c55ba2dd6f44522b057accdc793ab0605ca423f7a2d4bf84beae4 +size 1178624 diff --git a/audiere.dll b/audiere.dll new file mode 100644 index 0000000..c72ed77 --- /dev/null +++ b/audiere.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90e59c4f60941a2838d46e20fb78ba0cf71e9cfd0782e291ca876645e3794a66 +size 512000 diff --git a/bass.dll b/bass.dll index 10114b668cfdfd2275dbc4e9280879b67c7efdc0..cb33ffa5fbdc9f56cb7eea6e712529412f7dc43b 100644 GIT binary patch literal 131 zcmWN`xe>!45CFiODrmssheO@)+!M zw=&*h9$3Vs*yxqdmbCM`N0kXMc|$R3;~@kY$)YA%Qwc=QLDnhXhfp9TWrG15tVijx Ns%-Wja%G~@!2TN8C$j(m literal 139128 zcmb5UV{~Rg^Dp{DPi))P6JuiAp4hfEv2EKnCYU&x*tV@nGI7ql@Bf^&?)h@py|rq0 zRoAZS{&jumReN{K>m&dm0002wzvt@<0O_|+E?Cl*~NsP@%oZak6tn5j|6je#=98Ara5E0=h{`b&I;sAgg z7zE%bSHk4~%(e>vCxr)t1AvhKS#H7pYliImhY;mI>VMGw)BdA_{||2Pf9U^%|GzZ* zPy3Hu1N@&5`WO7q@xO8ZNB&Rub^sC}ga80E^g{v){u7w+um3OZ{}2ca93Vvm0L;FD z0sguD|0bn><177ti3<4N>$?00_5U&de?o=+F_W{4^M4Zq`e*ou@xKeb{-2!u$LBvJ z^p73QT&-Nq0RNM-KFI%(_y4z_Apr1?|8EKg3;+Q7+zjPw%B%tY6hHS^24c|09Yccy0R%Y480K#QK$H-p-N@~5GgL6~n1>E>TqqtYe@jyCM%$HP zfNy3WoFX2%95{kh8UkSQn1`=f2 z`wc{}G<(s$M>%-`qG7rw!3pjn<}*PYUSvNJ@>5C#&A2=sRvj+H>gG@Ltg8*Ca(h;S zLh|wR(giIv84eKULLsoc;n~;%2TTOEmAw>KtY1C4y>+M+qlQ)HO48X)-u)hob{IGB zbzGPlLrwfWCMhHFNKVx;6XPulRcLJ^mLo2Rxp+hZ5`!BJ44~eAl4WlHkelCaz`uaH ziQmr(!qngrY2*bpNDUFFORBPb*K*}A=8OlM4S+WRHQmwNEHYDs9%!LZMbchK*^f}V z;psS{7M`7f?m+-IdR*eHNy+##0!^%u1d*~=G~t&nkB}j7oWNZbQyXWqIGJXOgr@+N zBHH1h(Ah#WTBRWFC7n%?I*WBs`zBM=p2G5J!s>Dm)cR1_FrqB-_ozI3AI4~`-x7#B zF^WlNzc~#-3yP#EBiK zZ$Qk1ZJaZ~1T1cG-&( z2M+2Nn?}bXx(&g$Ht}^8Zt5U-a1zM;SFf$#f)Iiyt;cPNR%s_By9CZORNn|7c}dn$ z+Ctg)wFePs9TS#U7iZeyXf3IBVgWGA%wbSKCl-fsJBf@&Nd=+~S8B${A*f|Rh>sld zJ5iJx3XCSufxQ2k%+2pSA2vvz_bp%SkwZt%pFSTN_Zm`(bupP`YDKrbpA(rHa{LvvDKa9C0KF;*>Kp>IN#3x}e~#`+NAwKw$=1 z@xqNvt1)F@l2j$OEt|9g^bcCqEKHRvbN3|ZIz(_N(aB}e+PqhZWH6Lz&MdqAvq6!W zXF)8*VZmArvk)J-KN22lytA_=N5kmD8e|C|NgHHrjhg`C+^bKV-fU3&6(l-|-Ht4bWMYS&z&^p2ZE3f zzm3Kg##_+$Y!@uj(3;WYyMELzsP`bnfk|wvN7uB<*JN&Zy5(@-@;Bjvqx}6u>c$$T zFoLv3hkaI-jIjVQw|6JT9kh{s2f7CY^hERFmSI*7IYy;*MA2__+QcF+1WT~~W5MWT z52%6Pjw^x?(1E`PMM6SgPTdLNBS=U^){yY})?m=cq=+lv!VN(|A+SZLkP##>;%7e? zNQ59^^WdMhvfEf5T?Vh9r;0|CoEMj6{ zVEu`5n#4%;QMcjTVx;OM9DaroWBpdbU4QVHgYr+|s(eczQjhdost`eiKaOUh+EL>R z#*uJEk*E!GMTXDx5!lvvb`6ARE&XRd**21#@$Y%cb!6ECaSxGur zTKTTJknfxiS(5uW||yLT$}+!h(dF*M_E)rZorK z!jULBrJ&igcU{q-BFaFJOB=+F2|{9hA>DQ9asU(X@lW1BK9xqh$08pSI7pK6nrmB- zrzv9Z&JQOY=*Nxk7(gtVRq_!ngk;S$$PnU6n9AvZ#v21g_@oPI1&caAykf{Z9djwz z=}^=!@wqZ9aHch;NZW9cC8~q56r@Y1=0NSp*(M!ns1PJHT8|<|>L}>aH4sD5-Migb z7ywO52&1yC0F4AZ3r24w>O4{^?W9XX^e3c~XazcH0+=TR<}zOCfmC$77egP)sbPMd-4i>ZulSR( zU9;?IT0TRv#&n!ezq2xZmp!h+$lx2CK6=B!I4t8}RPK6JF||0+KdcQGXKz_e;0!3WjzGGRqRsk7;iN@?oF>|4KU`-SK!SaQ5~;jL=d`J`ROxWvasm|mMLx00EB_+8G}uO8ecYB#U{?QY_aff z24x#05nwWFM23YzPQ~y^kJB82*I+st_1wuJWRHN zqq`YIbWV7MCzi`N;SUV2GtDDKELeM14zXL!LdGYg%2dR5&Ck5a-q1~*3&kr~=56e+l>uu>Ime%QxG-y7-GJr6##^SZl95dV)UM3-2Kj=qv%BK#lXt zWHM^g(=%(7k1s4h(+8_97HR^chWvNDV5cT%tcqa~$YKFC9R#UqCZU|GIbTCH+>|6x&2j)!;sI! zimH_~5fFns7Uvm!_q`tye}q+;f$1vTn8Otx=h~&lHuR`{()Ci)jzpsn{sC~JZsMcI zuGz9s)p~7%Z1aeV*UVpX=l|px3hw)@A5y5id~JI`Qr0ia&lGWHFd{~{CptoSl_~Gk zr?{<;CZ`IsCUeP9jIpVxhq$G3d%5`mJZc#d>(PpNau`!vd41^Ak(3A|gcHGVVi6`T zbvYhRT6u4m*mPLV0ikx5OKPe3W60MG2P|bndY9Ut>eWViD40l8tn8UXH>#$m&(k5^ ziSi^qq=1?SclgxS23oT3i^O4zBE4ABn+zeUWP(`M$g8O0F z@|#UfyoLpm*fBrHUTx|bsjlu?08wbvq5tml6ru2I(+pj`=d4~Nq_~4VgW?ndxz3tcpKWrSBWfU2YuotqlN~W*?5qo z6vwdXhXKb_^cnW)@RUs3N(ex+aJ7afzmvFG8wnh%2q6Ru6*@nb+TFX(ja$E8 z8(FgM<#`(oe=Zqz3{&w>N+2#4A{_<@0)S4im{`BGf0Ts;V9*154mF~IUFZ*he{$Vk zR*j7PyFHjhx7+pRSfVszE;h$0M7oOjWJ5YwkU47B&ASR8^{DS`&J8I!?C*^vBe$lu zYqQc0W~32*PF?8Lm!3#h*e(>|b;ip^sL6~~NL_|CiHZN}RJ_*wCYk6h#XZC`glN&l zhABeeSY8P`LV>V`51(zzKfP8^9iPZ-d&NRIWnzghVxNx#*@)|WdYHu$_*0w-VWXx} zDUU2&8Jt=S1p#}-(d7e#8MK2I_%OizD1}9IX93IZvs49>DPpJn17{N@f5ezLLn#C` z#%yNFqXkRCg8-u{<2v10AW-{Evj``O(Sk!&4gA}H;XZNE3=1m*gRO17Iw1vSX@A{S zrV=ogyS*UEypMD;TP^jZNwjf(I?73u{_AES8{EiJ1j)t7$JkF-O&<^f#||7)E+4p1 zNRjC7?^NVC6;>V$vEQ&(eCsnTw^Cs9mQ;j*PqCJ04uO>s3zbdJ$YOk>5*$&GviLcsf;6Uw>PkwEYl?%o#l2~1*QMZ+x(1{1TH%l--%{dd1OuL1bA68zQH zQcg1%?vKp=pkHmmla=IpXbXL2kx0x}GBv`{M#VzV1a*_ZFbknuXa=T9KuT8`{e3dg z=mr{B6ztk>T?UXjX*gwp2tU=l$iH$pnTHc?C_<}+DJDHAFPjr4B0Yce0TMleT^630 zElQN<5)a#*mnt0ARh1+!ffO7T90x-j9@S~n$iT9<4YNR`A@$>``FIN~Th!kq(BD@r zemsj7fDZ8(5jP5oJ7tN}I`B8tXM+GNG3Q^K{K`Ps+onw2voIq)uFWCMhOu9axoc=S zO<@H{rL#pe#8j`wB-Cz}q}0!8S9tPwn^a~6h&9CIr9_8@7P<%AM`PN9!9e(6dy*&m z{Aqyv&6{dR3#Qa@YBo}T-dR!F4taD!&ObGs;;*#*G?c@{zc8{c8HC!?>t{+};4sF9 zt2Nf@LVVT#2lef`L$Q|>o@vN%98Vi4;bib|_kQ@j$!&K|8S*vc(Iv$4RiE3{0oEZ2 z6iY{SLiTsDijma~aw?FrLS2wLvzwc+DTf8d+&BxjG10Hqk z^mFbdq^NDeNw7AOWd8f#aB!4xLv%da}`(n7Kp`!cFVV2oq4Dn1;JG23qdTEFl&MErSRoM|zm%l45sscR>MbQs-(64n+uI(Mx-Z_r#TeS>Ss9_E4_ zwM%cHe2aRS9z*?YK`2G1pXRxHQCBb#TO9A=5lKXa%im~nmjG-fY?NiWbXs^gm@X~P z;8;|j-@e$f=omOzpzhMDK{d-|-3WYZp@(I;1~MRp zMf%?_>7eWC)G#okD)@|YEZD#nS{0DrYUX)ryjSdEXeqL>Dg{Q6O`0p9C@H}zUxHCB z;;=jFG!2Cbe+A1Or`s$VnL~S(Y-6|ex{r6=3Zw0m?STzLxD-{LUWHWY8%@@l25uTE zV-|iUSb6~Sh%Z+xlM}i-JWo7?C{$JaU#9|X`>^G~Ag*SOlp=1EpPWSDXwE+`5NI>0 zL%P5Ml3rz<)-5JdljkeTi{s6LBn|BKBt}%EI&aXH@HUUPOCeIYHJvnvX0*vys7a zpK5pDa0$8v#@`QI9~%Sj;Ba{DgTb88ZqeWkJGj~Fv&j(=zSEi^tPsc^Jo(gsyQ)#j zAipraS!mK*+QWYumtlS2Wh`wnWglCT7l<$jCD);4k&=7B_XXtLk~kA1d>kY)`;t!U zagJQNC{A~17^57d?GjUBzMd-l8Nnyr#a_HJ57`&@67ejc=XzB;<+O-yDUjvs0*+5w zviG_gu7|D_Kn8Fb3<;5tG~~twR`p?2AV}uvJ0b`8EN{#xciMdy_duP4$DW#^0#-{d zYw3OohJB~3OB`wq4UFRff{*BL&2_B!(|^k`mhbcI=h`(DxgmaGCP>zbQS*LEIoI^b z;%~zyqv=|@LPxo1P;45xl$)9!Jr)H@9{1+`u%yM===el0{mbU7(iE2kJ>0VyD5P+N z$L(&kg7F@20*p=t^VIT7n-Q`V>L(YP*Qn|2}t7FmegQ{T#`C(cGYM~Q4WEKttP&QS3-SX?5IRpc3s4HnihMd3kML`YO!)10?rr9$ ztJi&Q;v51DIK376wsD1C85GQ))lK1}t1*ZvJo29Ogh8Z8?TDqj$HL;S?qp%C!Kh)g zSeu>7iN&~w0rFkQKU`d%Gi-zDF88C8xE&DD&_ferp?)pF;lmSF7{)7Q{hd_iPENrw z-zQ8S4Ku1#0xveoR?Z?*70%Y>Y}#6nw5i)6#XSYefS`&8G3panNN|MC7WU&f0iL5Uo;Yejzr zPTTDN#sjHc4WzJ$Pt+LUqW0_5tg9dDIxjPj)Yf&yB63@&WLD-nNP3z3gyGSa;g$BO zC48~Nb zi&Pa9kW!=5#FXax7lA;Ft}?yzMiy#@MQYuR>M9SpwflC;sSIJ-l9t!7Ps63A+2=?4 z&Bc@1)lSB?I9HmFQg}Hew1M}{Uxc2Tt-g$Kw=DfWHGR=UX{h9;3lGC&4NBU>n?3WK zB{*vP5|A;#<)j8p1RFKo_Bvtr(YXkZ@=6=Jpaz=H5+K}$F;W^OJ<`Ez1-del3Mj&{ zw`wU-nsH!8k!5{v5@xZ23j^+r_lz&L1EGtIz-xu(l$=;^E)f{$*#i5R{u(CAs^dDP z3dNAdsE07jf1vM-m>x8;e0pg`3T83cFV|Rt^r8L&Q3N z8NID2_m&M6+gUTxif+XbYyKJx+;PoYq z{-Qj=PDG#H!*aSEj9;R%uGB73$g9i0jix_8iz#_4|5bydP<(d#L-5dP<|;8>!GS8< zQqwesiMtg4B6(^|tt(RMHWq=Y|8`Ez-iP)p={d&0)V_z^`MnH5m&wAT@YXEJQR=!X zgme<9mNt3Zu=NwyiCMvKNC+EmhGS$VPYPR<%PzuxW(86elSTxm+MK{GhzSl|Okqyl zn07Zl;1qffcU+1iW)M&%pJbiU4DL9!$SssxZ&Na2AiseYpH%KdM45OOyO%Rym2iiA zN)QYNcAcOB&B(tIpVrj{JSZJ%0V~^t-8v^H$`7;EM5+sYhs#?dcZ?>{?(c+mz=aEf zX~!AVtW`tQ;-VwBJCq@xI(=ux7Eu9QT+*X34Rc>r8IBvN#;52)#m!Irmb`7KMAexc z-cH5M{7oVQ5vPluZbO8{2=b=ug$=eQo(6D`>cPr==*k4>gB}_I2^|+kITv*hnc2a~ z0ES=Ed5u*}Hb*20@o3b-i3LOZ>c9rcCD3^Bn?HXxc4xa>OK6(V(RIc!k5fETWW2Ur zZIXZp*WBA~ag+K8$|N$c(wSr$%M8BAN=#OO&Ew&f|E2XQEtk}9**S!5~LU&tfWz|yj38!Xa3ihh!GBL;L|mFZc>1cb3<1R6Kd zpdlO@v*3~N!7%>qDAA)r&5|L&S=t!2V)*0HON4?dN+;_a0LM7YMY}@VKeCpbmey(z zk`SyArAEBS^;u=@wTi}5wd-$tf#UF;x`iJZ1w^S=8c*^MC0ZYY1cn2-I3Z3iV_vfAa@cnfYT?!cV*2kz_vjVbCzg{WH7a?r)4L zp>dcB=l}uy8)d=n5=)of2DpS~hOY!TeGn%Rw7&qbq0Vb&^L(a>jl>CTNe{UL-F2_O z4EmL&G6cUYbsMCHd>-o>TmSgnkj>#sS4d(N)~ULo5Ln7l&Qfl!Q-x1E_oBS{Sh z+bzQ)@cOGmw_k0w$>P$TwF38|-Li^4(eEQOP5EpOlNzY}n%5?nuhjQ#ENH05wrQWs zt}-^oP+Aa>xty`zNn~t#+=XR&mUk>pGokDmB?#8B*kQ><@JqDmspXE+aSj5D=7vLK z&dm?`de$h3mH z(fl;@I4De`polE?x@?Z3=t4dWGJ(v#jr<9*zO5>zN9#GRhp%+}-bMpW-EE{6-4Ft! zPVpmvYcuGU|CGuH_4?KhBR zmp{%fb6|FeDjU(1{f?WV?HXv~yHn=dMlP-!(sAlmqgs9Oy$2h6yG0luaRIN**C#q* z8*!vkr8*RLiY&~!NWM717Q-w6{~!(mnj@AO6fU5N4VUB%AoSH*>O+YY3vo;hRX}jw z$XKM0j(bT>!T$Z^T*K|KmT_PhC=F$SZpe%*LYX8#pOKZwxvA=zfK67P>Y6KsexXa2 z+#y%d&2_yTTHz;uCARQfNrwPoy*r8vqZG94VWew&cQt6UCZbg?v8M2HW6<;GKxVHC z{81sV^(q#oX-EMTY{PG>;lBPDykaitBI+K>iZWuyQ%vvGYrRj`8)aX;J1udTzLHs# zP#(c*E83pQ3{xodkD2c<2eIf7sb+5igERzKD}p3k4--e71Pgml98>8LyA)L6yq#C7 zr88+;5MizZwSA?k9QxB=3GnlQpc2}bLC@%u-}zc;`k$9)a;`Jr9>;;rH`%l0eP96@ zbbT0=Lv&*7kEMi>bD_PH8|?ML2_X5Vp+`M0+=xDgoZ+AnNa};tbjL*^_4A>NbuqlL z02~<^P{H_Vux}}s`1v;vK1yzdYm_Zg*W*}|z295X33N_}>4o`?&0&{8`h|z0HiTC~ zC+Y%|notYeJ?@2;NPf6oD~tTb7Ms?}d887hdN}x}(WG>wKy@-&BVJ-$8uu;x4%|qXu)0m=e z!mI{4S{LcaDRTGglzP#atK7Xg^v$Za%G-&>5+dq7e0<&{NO`#6TvB+gnH_g)j#N!^ za8XULLXK*|{(TdrqLL~r&=f!~AP!HfjibU&*do!cy~{S(31$`2@bT@k9MMz0Qw>SD z1Popbi7MvSfQJQ4sjF=0Q6vlQ*e0)Hr8z|=rexG7RQO%#ApsdfTc4K8C%Jwbyx2yi zDrvZAkTo-~O{B(*mq}@nnHJH6r^P6^Hl8MsU(aDFsaBe=&5AoKxs(5~u-Vp-53A>_ z4o}>r!E6kux7Abw`g-io{+xeu7&ub>sy&YiIig zsyiU;5Fh;BdxSQoOSZ9xR-hiA06gM+Zkz0?Xi%ddUT^gj^`NrMAxo8) zQ~As~Mikjcv3C={O^8a{>x%sfyFwF(feI`tU7~;)!~jb^Pg{&He(}Z&j~p?|H}*TM z0MnATsO7bux3AGJ<#A`inhvPCXg>u{GYGQPFF9Y?(wQZoK8L3J=@H#XrBF*BNf=6! z3kk-zdm2HkLrsIxEiKDpCJT)dr-GRY)rt_c$MUR*?6u0&o)Uy9ANyGgCSYV`5O1x^ z9dwJ9kZT)Z=E6%Vx|^!mKtgZ3)&RpnO`oCyeVHo20H*s-vg{c#p8gaHq5f@~J__yfOa!BdUr zg^1dNC|l!*5U{`GxP?ux5vcj+T7VecL*;M1%Jn1NFi94bo^_PqRXaw9Q;P7DZtG5U zNJ0Ro6ecMUjc7 z>9xHscrhG*ZM+g=(sKJHWxacOfXT}gS;&;-&Oub90!m-M)gQrxfh*CW%5lhAYbnNK zfU?{uTBAb%2Qp7X?D!^WgP?%xx+#j%;Wvm9tZukv33W8-KO;*_3b!w@ zXU?GE{+(uwM*hNy#IXwS6ik2}hl(H?jEr^e4x5n)I__gpF*UkoOoe9C<=CLS&2^cx zG&5KyIn5+xtWV%(xAeGD?Xf;sjx?7J$LZx7cCpB`{adUVGVA2XYM{$JHPTMD;R7CM;cBh)GF%Vgm3PLY zOu!i%ST7KK4D}{_GEh8av~4y!eiK)3%aDxB9YrG~_q3JqqZ^BVOD^HqJMD_}dtQ7e z(g$ERZN4w6ZI@0&v+7zU z!7K|DQudGWT%_LIL9Jb`@K7qn`9?^PV9oIXt9Jztqi_1WrUVw4yX_jibKSY|ssCb4 zf3xI_G&Zg`|7Yz!yXD$6)aWT9o?uT4z@@@6Y#-wDf#e8NOh1;{GblD<`ibL~Q1)Zx zk6_gIy1?P9mp%DshIV?xsP5&ugY9q=_vO;TB5^r6AAxMd{Ak4fAH&KQB*lbRWu~{F zN|t9TVPF`ak(Y|2cqsK>GjV7M^0eejt2`5XxlZNK2iW-J4}7-}#viF>&Xq6_#?9&C zK?J>G=FYmjfi-AquCl3QcP-P2=iHqThu+i-*5ymsz@qQAR?{QyTy7Zp@G?keib-Y! zJm|_IbMwJNK7-KPzC(er9e6+s-wA6ojaxLl2nm(b+DXql{OhZ1+Ga*y zNzr$f9%s8H*ZT2shy%8b6}y57l_$aU_aPYEwN8iI4*Mngo!i&-Agkt(D3MS{Zd335 zeZw46YgRz;4Tn&wsR@SM&IXAnRh=%03OPz0N|Ou*G$BEn0a--1njc1IK#&vbgvPQ;bp0YY5$`JSmLxApfA z%U4uxJ4WN~4lgLap8hvE3e1gOjr%w6MNsP)`YN5=WX zv#=Wp@!9#PH3n~=3Q#PR=HEgQVqF`ON;yaHTG9o z?JUm9soOfzA^_EbAY!{H5Ux-0PfR$Lq3pQRHFxej{A4~Z%|rw^Uyqq%}+g8 zw9YDd?hhVHo}57!8YK;Kr@1@}ja{DHH}nv`Ldc5P+LQkpB>U>Z-2R#O4A;RKRp{zG_M7c1s748?y+Z%_?rUJ|102R8 z1jexf#TMwI%}V1V4WXG+m$sYE<^~tR5pkQ3viK(i7jw6(gwzPsJ=Fz9CKYkW8+=0`4Z7kriiKI>gUS zcVP@_FcmBK_(>rx(^p*6_!DAyGxm88NsksR%CjDBcjt!J{nqaNmDy4Iv&JE|@(Ta> zFUH8HNI#w@x%gGTw8@nDkdUP>B;9-qp=+Z)b$`LAvE{&8t0P2SXkwvz4jPd7mN=;S zuktsQT{*ZySU*4b#U^f$p>=$L5k`XYZ&XT5bYqI20hKM$f%JOe3qsdp1pWORPJC=y zDa%sX?buxn{NQhp$41PFcX!CntBVh&bD<=XnuNIHKS^4lQkJjDYq+Nmkuff7DI5HS`<~Jrl?p)#)O3jb_sz)1r*>zGcN&#Bgw} zr*PY;-r@q(>X!aW#se*5rll`9!#RkbW#5l818NGLqf68$AlTM16-prjTJ;e_Xcqn3 zgd}L*?9bzcEIz|7h1pC`9W?+!oFNHJ$7KpUuPzw>3R_>7x-vLCbS{}6^;HFSyp>;O z;N{&BHEEeHX>pf__9{Qo^9=%5kIpVgP`i+EqE_5npkRi^>FU5B|FTWcCyxZ=?_U~W z;E$A68@z-eaVg>e5-&#n09(h0`_5oRaZ~8%cH4D(Fhu$zQyc02{Y-Gtq;Exi386c_ zxzcY+p;#@(&>Wx4vj33sh8}&(i#TT$4;mwjq2vkIb0#2qw=i=lhh4a=C(5?WMS7>Q zXV(UHu!hpjCRk}=9%uJ}1`5OAJA@For9t#FR`6wzGPI>H1WR3oEG zzsM5+o7)R$Y{4=~Lru;d)<&3)azpO%>rE_z%B~is{_g2U?;-o>k9itxXV zW`M(+ov0z8rp`Joc4HXzx}hS6l3S-60*`V?&rH9qVAB~!wDb?k`(#|HA zKfhiF;2uMT)43W2#oZvp&1q6pY9aO+{}dp8Z?Fa!4p6?Gr_C1!j+TUyppR|DGc;`D z;3}I^Wf0S<@!4iL!B&!;$>Bi3-oYpd=WQj>(mi(Jk0hc z9hbb*Y}l%ELk+-~3YaIZ6yn8r;Uov2lycv?{ajWHQCw|iGdp*h4(ZV#Ruiw&j*ja( z9~15Sx%)Q*QC&vZEB!)YWR$|c0!!@Hp=T4PK9K5ArLP8r~$}~r*+X{lof1*iPid4_m zt1231Y8ET&%!tdPsr5))l*oOB39o|(fnp0z=z(I_AgnrPUIWfBYXyuu0l|(U$t52% zYI;+Vw^V*J!2xt=Ifpq5l6p`ueC|6Th;zRn#jqA5s5K5EzqGTp+z_f1;xWiA7CiP5K{JW;v04t$Mn?$0%5I!Ftyck;6H#}(P9ognvD_4UL z+>^-N%OmLEI?>7HTsAl(Zl2!dKZc+Spiz&>I_WSJ+7^bcgLPeqh6|PI8u71CItmLcNndu2%%{Uo~Ig&7$U$8^J zN7Qd<-o1>(XWHS@8VzxF?^!zAURM zdmUJUT{GH_zjF+Et(*FXIGZ9;>AHP;w(>msn+Kq_)91X>oO9Cu9obM#WsVP1eLm)6 z_x!M=3H*~s!~x%4sUnh=elViipN?auLyNB7L|9#cl}9RlD!jRX{ejsDo`G@93>0Ah z3hoN2wW_8i=8>%>-6^^p+u%sMRDKYV1pg{Uvt=jfg3JPTtOqvXPs%t-Jc%9f9#>I` zqKD;~t*hslcsd%1o8qI#LA#pBF1msXBN5GF%LABf>V_GCok?FTJwfziECqUR^SIuVf%kCCsJN(@?>I!)`g z$dSPw>=J{Ul9mt&eCLT+Vu-ww=-GGm=I9@lN8O$UJPrM2(p$4_xEQO+2Or+&3 z)(BcF$)yw5WJG8#%~f$GLf_s`wQ*jN(D;uD+@PeRWu?Z~RQkD2o}+Y`-@X{f56zs{ z9pNeyZ{dUmH2c2QQ|rBgk^|ekCl!C%2{kz?C-vZ?$izyH77~vT!`Mk?hd=05bvw<`_eJyJBikN{5xJ zFi%K7I^1Cz4xKk95iu7$cXOMnus9uew!v$HcP73Y1-(%XjbPf z-~K5l;=^uR`@Y?@t8O^cY6iD@UVBWrZ!&d8&g@ ztC=#HZj`ChIWzh7`S++;lg>pv26$P^1T{%rE_DiW^?>g(1D7OwBj>6_KcwhKzMiSk@&F^CNdl@kw1ewil&z~Dxw6avTw41RV=@{ z9??c|Ro_Am?Po&au;ZK}HOvg-t*mqgqqn5%#4*%DgB&Vf+AfK5x{(Mpc72GO^N0F% z!g!8WrF?05RH5pj0eH8)MX*J#>(iILo#0n?-{n5Pi*<<3)4ns-@rZJ+y$lfxCKP=0 zG;!qAZ%=k~PNjGU#iRzX;_4o{%3bgNY2hb!#qIW*Zl>idMGQ9qq? zMTMy({)gaI4s`b|L`Y~*=}1O@B0+Bvg=i8u-R;cX`o`%@^|3aoNXC$?I@LYw{<6>G zrCU~A{zU*(RM_X zaw9bqp@^s*21PXrHSDcDL@4ka`Gk>hz+6N}SmOoKmbY|Fq)Oz--yjnNA5P>Z6|8Ph zqLLI8e5B9;_$J)JhADFCYAAPf`RFS10obwNDx==AtCuT$M(Z z9mOphdl?kLXX;__^zhR)B4DPoKXyy1{CH_=s^QVn`IQJn8M}BsJG!{(#zo~Yjt>d7 zD6fHPG&FNFABxdVp~A4`&oZ4A+4jMJJpO^==22o-5GCh$ZRrXw+fQQ6>L~X>0KqQJ z|8tf7?-C#PAHZ)@Ak0-i8Ko&W=*PE5IeKQdM5(Pb_uvSTAghP@p#$ND$oXw@>nOH} z6BbHLLb|tSog3v1#620pcjFnCkfqqd6(#${oI?Xd-)_S+AMv4ae?GF&cJOK`p#o;X z3vVy*s(Z!jvLRF5#n!tT(XNJMVuzKiui-}h;hgcpx!3L8YjujCtsx5F=(r{+bOf%f zrU%RArO!1{Yd|y+1k!~zN^3+7q%zL#NTacBFI|`9cA*3;t#O8@ha$g?3BbIsp)ouK!nE_S}aSD4^DUvb#rcQHLtXDkg{Z)i;Uo^N$D z`^MB$I=hEa;GVr@IN11y;fX_Lk2Gd9omWAS(TMIH+lF&B2Hk=l=Omh1S0Z^P#k^XF z6NfK!$jdWMRV52wb9&L>R3#zluJ{seMp#~OE%;G%wLda1`FWG8ia7raK?ZAPc;uPU zNjdu{-6Rh;(=^*6K}5~CyF!n>@Jb_z<5*pcki}qdE-+=Nl*DliU>fH^C?YC@3tv5p zYpvhqM%WO>kNolRR0m?TR!b|X0$`laSf%hJPkW(<`Mwb7+m6>F%}PajCxhbIu3L#<_#U#yt)o{$%iBMGXEO z8$$~EIn_A0*VMyw%){CvLMZ02ld~AQP*(Cqos4uDx_(vm>IQWZn5y^?`xtn4-=IUp zQol@lJri4(d?HZc=Hwlsn{Fbw9^{H{7%m|AYIudWZW2}Ippm=+^iUYKZ4Bon<0-#@oHEWla$#@T z!6oh3pynB)s6&o&y!^P*uEJ01rP@TC{PC?Fto>&Lj6x-o+||&%f+nG;@j*2Zu8gqZ zwB0?OxuHcYhP0T_nn5i_)|mXDTJrXdzGYJ>3;O$0UjVJ&ft#{?Q$58P7<=SXRne*z zoO#6X`AEW`+REPyolYhrv4kM3U*GKLnCQ<7?X;hKc*yfg87N!X(rxtF7w;s;H3l_w zg#oya;u5HW@Q}4rkuva33a`3vNqe?Dg*MvD^1B}Ui|+~&x9IO$#HZcdi>B(NQSE0f z^JeJKQ<-?hKO>LGkzNhr@>B!jABU0X1qn}S-YAo*^_+)l;ZCQ^eW83REeR#0{}s$ zBQhM~ME+225PZQ`x5y&sPSAw#-?E@iQ$k)8ztn+)_Yb1I&IKy5>eYOrkx8A8{jG}F zRzDl*@4Oq@&YgEl-&RBjzEfbThi(aA{T(6`C~*B_YX>KfIJ@JCbD$mK)o+n+n(PI-~arKIwKyR0ZwL@o~ zSj!sA%4#s?2yATsjb=y1X?;0Mnp;*GM6@vrj2^e_!TOYizRWbo$9kU9NHbL(ip&0vw7gRYfK9v{1- z#8R%Fo=MNKkt0ZO4*#9}rKZ0BY_?dvNjJ|fkzaU?-8TCG=k6`I%e98-{0HMQCJ@x( zgL7n}#dJM&1KutG{$80x9O&2=jcDa<^aUYLX9)C)b5#am!A!XAWf?$ZVs;20O4s48 z*D#yZ$w&e=bI{%~A)cfVOPq5wk#)b_^9nV!S1{uSXK19{S+h&ztrI?vQo7t!0w_k_ z-J#r0zEMXKN98QiaJ1mu9LAn^^szwjujjqh5Hr3k#kuYHV`e;-g%Qr&QHc6SU%&pMV&yDzOTAjUS@L{)tlp49!Ivfe2Wnqb&9 zjkySOf&BtFv`G7RZitmz5cYim|85|6|2m|8*Po^&mhLpbKKz!YZ&&cS4DozGf|yNz ztel-3d!M?xKpZHHc#Jvb*L(-(q;Oe;?pTV7w7CCMbIb#!_L9S~gYBDiAL+2o3N7=d zuCF996r;k}@p%C=Hb=inQRA*(i7OXkhf-Vw|3?1n27O~kAUCr!T|N7-UaIHQWhF!T zO@X8=Y`9}c1j@flyFsRCU8ZAa7Sn5T0lHj_yl&2lL=Q>yI9{ruV>3%Py=9)THY)|{ zRgDb)3oAg>zf@(T?3o}l@YS!JP*p;)VpXZKHN}(cWZAFMNHSSu9GigzMfV7;4c&qC z-BxU-yvJ;KK|-v}#6f0I3f@y?^Yay}f_(+X-Ev$e~> zRxnq3yr&w0OdAH^s{B$ept+=45cDAikY<1alU6=Hm4k8*2ulq|3~mg24JZw_K>sNg z`6D-UT!DY6fg4Vny<+jd_^W|8{so`~-K?5>P>>AVd!r+-5x>KDA?rNrxG3l~=0)!v zu)|kbLzD=I3yTOv51z>MkhBIxwlI5^#VJcAYhdyEU{}IlY^Hz*VMKws z-zrA4!eh?afQsAD*WtE&VnW&iIyr6Dpasxbjc3rJP6Y2<9E4~Sn9)tYS<{Y9SF3am z%;kx}j)q3l?7^X-OsNB4QDS_^w`>y}fVy#EKLeTvZ%E;MRWg5~q3g2PBMOeoc0un% zFl})nTcv|UC1A+mnJRt*_Q>BtIDa@aZ*lbFD*AN&o(wBg(oq2((JYM%hvEtf6B$$u z^_b{-5i6-_R`TpWSq;!5i!77wkCj>J^vKMi8(N#vyzLl~toM?TCQCZpJ2`%~*a-Od zzo;0p73KL72vh|F70Ka+H>#OwWaRjq=*#iMIt*_Al_Gg}UKMq7Cs@12!0TD=b^r?=p1yLov|QlY+@#7= zo8f35ldBx`xQ6gGa6AJsb`iKFR`7ZjYD!zX#P^4vLlGQP3Z{~wN1ffKh^&vN zfhtMXL4hZ2-)y1EL@Kke^*1nZNPD)#KfFUBl56+j_E7*^f^=HLN=wRedDV!EFRVEq zU3nWZM>n5{F%LfZ?XF0T%}<|EhFTM-wy1wEd6^B|U^FXO>hS@=i$9uyx+*Fsior#V7o6pgIpl>=BcJ^G-B|hE z+oCqcXw?{8OaC^=71XXSDgpk*Yb&zdev4I;waJUSKdKZJrmjFEmjg=M6|spHKv4+& zg%n2BE8IIVTEdgI3dxgHEi@EkSr=rs_50KkrwG|UFm(tzZ!@Q#oj;!==!<0x?;Dv- z8L9kTaqgFT@-TfO&aiTcQH6#PotZOR*(*b)4l~dvC2NwO2ZORJ9@+r9BxJ4`I^ssH zEP!Gw9oRE|!M)+kDG+a(y1%x^64Im6k1BJf0Ft2f<&ok?sO*8~K~sir@MC~B*8vvY zO__qa%usB?`jD#UJ5G8TWlGC5lLq#yHauDKfP&~!%`{#*E&#Igqu7ydg~l$a)sX9)?ODopB#^fDQbKU=jG{0sbs;qWGZ1Ze{cw@^y3c8RHn^yOPj1GcK8c~Z) zB&2ctn7Aip@&cfY>b8Hh27Z@Z6jD~Z8DgcSXOpgxN+(V113}DDP$N~@HsVt#JCY5u zjHHm`H{{?vf1_CZ9ko%WcV}G&q#1z1l!FC2!i47sHA|pjT?@=D-1T6Gk5H)JZww$- zE^ylwXC(B)F7NGv2vr>&Eg1Q&P_r@M$y3MfCf^I+I`GKvSLr01*Ok80z8W1CvZoWH z8(xGO= z839##*}6oh!N>wj=2%G4nPyazW{zF5f{R_#xse%TsTC)654|haam+@pJ&ALkCt8!W zlHjNqy^nF7!YrXm!Q-(gaPaCE9?GiKoYTM%CmAk{KxBnWE=703L8DWTuQ*;>7^^Ju zIAJpI8sF@#rfG7(&fMGQCK73y4Yvtl42;dDWtE!jYApIbNuMT#T7!3G^)Wzn6d|S0>=}B&Dq*l}4 z9bnh&>-iF}sKAndIxs}UM8qHoNCHIgM6d^D9W+GN&l1$~O+rR;{20W_?>e_-Dc(&x zDhk9LI1CT42}ME?yu_%)q`=-K6vW_G6rma~qW$Kt55HFVYsO#L_W}_fL_y9{LPsj; z_cK+gVCI~K1yK+MzNc_-z!3b-m!amP*$ZDeaBeI;QDD`53yM4oS4h&V6=W>`cZ zgA6iItf+$wGRU-mybLnPAh@Kk#Ol$Ug~-{s7gC%F?USHWg;6_Lk*Di)P+uq!;d(Va z)a6%UL~s0_p$@z1A$tdF{QL$x76Fc^lM72BGe&c2jp*d8Y(V2D0gtv@(1&#!Y4u~=gXI`e900LM4l2UZ-5 z)qf0xhOlxY)^3v3Z*Clvz2;p)5Uzqzvx_qihGOVS^^Q3p+QWeOglq(ypY$4D;3SwH zEHWMGkQ$>jhwsqYFWL^3ulqt6Fq(_VP9|Ri>%==MS(9Ek>yqFvX&YG>N6U|!H5deK zfK=9`e|v3t)AF$}yBX*Xd%lBVd%40JA{Ir?NihB@YMMq+stIfL8{ZmoB@OzesV_jb zfB|EC4~XVry7T_P^Sk`%r_l{Fnq;y_Eb7*=S1zz&>oH~!hFw+GsbG&Q^?=dx+Xwz) zh=N#TfpJx-kaNu#sO2bO5wTyV={#%n?=1tVNw2fD3~{oQoKb3G7{<*GK>lFv0|Z+i zssZcYVtD6iw*;_0%W5z0|N+#|7dG$baf?&n9K)L2aU^- z7!V{6+k}9ap2(}#9Rij6-f$-TSDVVSzB0yA6dQyBV>bDrZba`N<@)iHy^mdhN^pukg^ZS87{r(Na+T|qfaCZJ~ z@>-!QRh(MAr>k5>IUFJXy!;)ZQZ!cjl>v@O(BzN|$Xq(4*9z?{kQxk+UJ)P$K1`1I zh1;M70{<4Y82o9v2CF;rD4v4 zvKCjcA%U~}<-v}lk`)xxA1+5I(Lc|26;iDutY})&^zA=C#6Ck-lLdB278VLjms@O5 zFxdpSF}T8;RvwlhNHM??riykcC^{lYkqzNAJVd@~dqE&ZMLk}ZV(n}YX4ny;aDX79 zMq%!QC;pfXnfo$sjnW9MI|dndr@o@Sh#{XWBb>{VD=Y50Qk?S-o7;G znuUSf{LN}#oxD*(t;8<5tCYYJoRIy%0a29>&G=NUix2g+mF zKSmjh14|ob3J395smIgSStkY-3W(Bo83y;^_pk)ru8l8V$#$J4)m;sP&`RjhkwHaO z+WHQ(M3wai_(dYnRyDIVs354a7B8+36Tu_(SY;f|Wt8=*<=L#&9_zn|2wO%O5=u&2 z)M5ug@j-SymXbvb4M}+DkR5UsG)cSZYl_FY%A7od$V{L^?(X}{lw-#fNp>u#<+nxN z{P6Lwrs?(mai)WK@D$^l8Eh2E9#?`z^p$cLO8~17Y_DFNOC0ICi>Y*JL5T$E2Thw| zU>()n16YlYN5owa-{l>LVyqM_Sx@lX6_l$5&n=LU1^pNXsDV+uDcRR6fE?E;q;EDY zl8MAEf%$ONf-10~zqebEdh=44tz&9=wX~(Y^ePc$qlr)M^feZZoC-Gpfa^0zi=zQZ z&$D*)ZN*)z*Q%%?Gpf;rG@u9}Bxq?Yvl&BK;`}PFC%7nF%`A_1=K7N~RrfhXeR@3! z$nTQTU&}0YX8LEhumIZf_%=eja^0{Cfhkb}O?tVjRJcm|S%(_NDv9)z;R_9e{P;ZT zsm6|`1Er+4d}wQb@w6QfM(Xlko#Ll z1}vDN?L#41ab{j}2vycP1^PIE$*5U@{H>0^LNPpf4ERaFU2AQ9lELOWFz=nCfK=se zFE(7&8S;XNTKrIYZuFfLWQ*Y9vVS#$zVnC^Ik^010B2XP)oEyIf%7Ns=!B_GB&x|} z>}p-Pzp~)!RYIYstAC*LB4YjflkR}Y2)nl4J57^p{dcD?^%WIkDH539Wg~pzKSJxA zo>|oK+akt)8Et%XeeZ9XIJf@b%spo^NH7@mVt6tM(lN$MUlZncU#m8&GtT0?za^Wb z58v-bsDLZVYjk!zwHS-7ygyT?Z-A@45lxfU;q!~q?iqpO`7jAMLYv2_%dc9%F5Fr* z(uU8T%5t+hP+L{E*3qt-+e*U8K&_FtU#Xn5T9+wkS$g3uxkU!vfTgSIP8*dFmY_pf zs?7<`umU`e`|65&FzsKoAp*o)^Sd^ctls$=b!JP7HQXK-*|)2VN|3SUUs1o@qrkb5 zxm{f|MhqXZ+bGp37YUR2659TDek>)TW@uxIiry} zTgIR(kJEK(C8JH4t0ZTZAV2vaCgJ-N*n-mN>6&f6J%?J6m-MaotA$GH&Hqsx4hI!m zOQv5XhP;rK#mb}(EaYI;`b^bYOgBbov`Q=)V#vK$zeZ)mct8LWX{$yL;TS{-csd}oxN4ytVQpf6 zX_V6aRA%4;umUD2l7F{V~coG zlp)L&Epa~7F2)K_bQJ&+6ZcJB1RCP>-d{)HsJ}Li0N|I@;DHbg8I7YbT2@!F!t4v* zkqx@E7>XDwNd`Q8O!Y}n`mmSu#+PBr+gJiPg;_zR9m6WaNOGC*>_p?1!e0;7Ru&~n zRf055&o+G}cnWy3_;HGf2aLZ&;^`Dfb-l*b9KO(k-F%=`q_4wLN)*kY^A$qk66^)2 z#li()xi`bERxk|l(rh?br`GCVuQDn;R>9LA#=Z7ypBf0x3{Wh#s>HvQAti=-Pd0yn zsC*3=dLfMR#>IGSdm+MbN}OZL4%eTGHr~@=9^rr-cBDg71)gFU9`99V!*YbavZV$A z?=B_50WmimsSJnK z^%}&r@G>9lS#HAc^@$R)cnH5G9v@?KR3LRpHH^qFpMI?`~|9VELu(EYuq}wUGv& zM<&+hCE7qhwvrvh9_YDb!(JeYc$-$cbDJPfyM+mf zFnS>u#>K!C$c@yD3$f!?A7;ie97m3D&Ml_6Fnrv9KwH`JwzdjP(lm9<@T#t!c6Pnf z{s7MV44MjXONj$|s^!>;fUJN8Z0e!N;--SyFRWE?)#;tPI29bo6ITBUh<_R8&KBCQ zdSjgfLG(oH8Z%a14enO@5~|lBD7e^ph}Grq6G`C|{9&1@OM-S*>9S$ZwyPVi5pq>j zfdSfv+!2ulX5NImgzUeV2w?k97%Lqx1-U6X^TBsR5aH1+&)C)<4C9Ze3WmKyU|U${ zOW!4eq`0JhDW>@U`|+bc@2?760-1KX8x;)_=S)hTr>c(5oc zaw|zpGBp^9e8uzk8C&U_mjQFyoeuuGR4uNVyjAml%!eScW95 zI}rpiVHDpZf4BLIiSA?3$^G3OE3R(p$8Jp6aw#JH0*ERZW+^7D_8WDq+m&L5dFE{_ zpZpmu`4@vFuZNvmpuKEfUDOh_i$Iv_lgJ(&=U;y4%tu131!-e(EThPmzt&0kOh;5& z9a@sp)1igEVz!Czcq@Uj)ptlC0KS-ZioXP4RrQ$2@^?byD%R+u#I8z!(}~C z@ToAjI;5Bk9HW7Jv!UsGHMU_6qAK)qWTFi5b>fCJ<-I;-j&@`)a`z!i!x4`zjw`|a zr}M7Dlc`nBZy9$r3GcQiWD#!AjMnT4j$sp1Lat4<*&gRi8t)e zU9jG6JG#oqnQvnPyN8MZZP2M%ZD= zr(WIWnyLa_LlQq^g&!;-M+hRG#I_)`7;WqxF+Lv{SQuC9D)85Wi zG8dfP{h^!5(SjO$(2?^kLmVqbv%I{01ftU z+0>Ux7C=eFA6ovee7;pABCctn)M!`e%R;!;96{`TR3JrP<&nc*nx){cgFs<}aXPF! z*)ZH97X_Xugf8j;&T4{6U;?Cf0X}Hauf^EmEXNEC9qdFHu%jTWkI-_2=acAeEmQ*A zSAigBX1Vbl)*zP6@9Oz4_z~2wuZG?rLC?p)C6h(Rp4ErR1M8(=yqtMB_O8{ryX0a~ zY@=vNVa7u7R8uCDhIXBVoviR%b*n0nTf~&72w_#Vf9kB-vSFXMGf35EW~w-^x}Cwe z0w(@7Xs=bf3RK+4bp_ALJZDtBuY7F59eAUucHI*&V8oB&Twd}XM)oi`hVj%97*DAQ zk-(*>ISqmFMY{-5^xKXZ4$gaf2 z@wF)kFjqfPAmuEuuXJuOc*0#o!Cq-i8EuIUBk1Siz>Ai5p}HX7AFhJd>3;)L|MIba zv-f2fW_9T8Byxzb3Q{C+)ae+c5#5PFs6&fk$i`S~?={-S!$sgu%^*`7yk)hfAW>13O^3{u%G;%;ChYk8ie~6iZ>LjxW2MZ$gVctZKaj{;US@{}j)7WiXp)<1 zMZe1wo5Z*}cXi4?C;}`U_<}-F1cn4irw1B%0qe7@6idBC)C@P^VtjG@0%X1eCb-o$Q1TssuPWAwmdR?c*~_1n%~RV9T9OKo zUY4*=0m~ZzX$)l(m@0T1+3)0nOWHx(jW!Mfj-MYZU1oEqw z&Y6?Bx*%$po7n%xBTjiV^2!(RXoCJJ7r203OEb#@Cfx4YPbeV=TU`a#EZBNJo{X(2 zlCj*YNn7y6X`OPGKFc@7)Jw_OEBg}<-Pp-eoyD5k_!Y{q z%sPd5f5s{jVeP(j2*f5~Z{ zPvlAbLEiJTb_TpCDmwVRDPb$j#B#Pn0PE_An`Q@xynpa=V5xm}HTQ7>FT-#oY%aB` zN6__pUAlNLxy2HyE2dRE2n*#d{2Xd^mqwZm!lxy0>Tb=T2pb`9pj6>1xTW4Vi`BX( zP=|5hp=s`%0TokXAfeuW+{y;8eVluz?J@bM*@_?*e9MeA`orFtgg)dDJSF=?K^?ESL*)YW~*>B zE!yO#*jkE?`~}(e|F||z*Z9@?`CtDkTDI%Qk<}3(y#c)WI~8SWSdzzATmVn?5x>-t zl8*S0s;?gm>I@QFMFrPEvl#V)z($fsrsdqXtM!>BT?H}v`oChJzTX?W@;ufRlmAUV zaHou|QuzCVOlocfC6PC&suqh;l;Ck)rVga4Ag#G8%rK_R)yvM+b?3?yG&yrIR8D_{ z>7@5^QGy3VVbIVP2&d!V=r#ue@40#kAAQ9x9~O%qsgFk-rg$aB_@YUp4vg@h575`e zAQy5c1Z++!=BVE0KciCWL|1j+>0Z%?LKL=uJrYg9ecP?-n}Mw!1XxwDFti3!uavZj z85Bm6jRL&?F?U#69rGvtDR6b!()4b1Ry4(U#qxyn=bsWqW2TA+@FW` z3hsz+e)kr?`;Ir5VC&B!H`s>Q6b4&3YJYPcjGeZBjC!izu6qkhX9Ys>i*_xA`T%`$ zR-D(MUxy-tAi9aE>j07iWFhUaG{M)&!LPE8T?AhsDKgp~5Uj2`Dcym0=dzTVxaq}A zHg7oqFL-@bI!bO)x|h=4!xiTj-pf#%BbGv&; z_&t7??4>)*P=I(jNMJ=88ponC7q&x4e5GD04eNV+bQ}1*ps4UQ;NGctAJ*-N8a2lb zd2Rn<1$0tdkk=tp|Btfz|IYoda`+jgC>%`SWCvwiE8X75+!2fhy3S^ttN5#+1`I9E zf=c%|j6=Z&N&x){{B|jrtMF~H6kI5!Dbs~xrJ`k3@wJ0)0Y}lNs@PcID1KpaW^kUC z?Q%*dMkaqmt&3sFH~)J*y*MkKW8<6zHgc?vUpQ@Mr7l;yFGrxO2&kwQ(Ytn-?TPSa zu#t3PA`A#x8mKn=PLO^iXMiBD9Kb4uIA7Qt6pBd5BaV22?nCl0(>5N@smECE^CH@% zNJFq$ncl@RPbg!`1r6lH*`eXi*fq}h(P9S^fWt;p8V^bm7aWymRF*g|KA<6<875Go zZDs%C=<*lne9)#e4DV`k7*l&Qv(nT5!1#u#uXBJdqfO@g7+v>gPtAMHTht}6= zbJ0@>GwHc;T1V*@^bdu7YQJ~hzzbohg0hc&4BESzh+wndsr_3EPr_JbwK|Z5mN%=y zctt7n?b{AOGVP)2GVf6Uh^{W4wyvCi;o-^B>yyx?beF3*?bq4tHmP*25PgD~N>>>G z0DI!kEcXf&`U|O&E*M>Jf?%PA+(UDwFA#?*P~K+ud>)i39eQD{KeH^_WsdA5-{!lELhUu@CZN zmVhzH{0tuvDdvM%5)dG^iBjlfedQ0U^JKe#>f@=$F) z5+Vqb?oR#OvLGP)^y=_K8H@Q4WeZy&P}F1=0%aS--8ZiUO}F@Pu^@=(Bn7c!CXmmC zMk4Ff{*gAE70^hm14u>~nP|+iVC>{Sgxe~(M7Jemkjd!Cr6Fb`=2+x3)6J6)q#=IJ zeup|Am>yZ=WKa`!l$?|R4J4krgU0|FrL9}lD8wB78H(1%Cf9@e%bf5cBGG1iL6B3B zrP+=B*sE$L_RfI6@0IPzVVMBq-QaE54t#>ae;63FWLCBL0@OT`n}V&W#1J)kW)d5D zBQDg7VHAM|+!KfRKp)+FZKS&2&Vq{*dJ)O}^PX$&UyTxVt7MZ0fhwNd(IcuooU3Db z8VIbVx302?;0$pH5#!s|*li#hzk!*Ao3)x7%mUeyMu4-3VRnQ^nDaZ z5fOI%@p-~RVIKOO{*@B+g#`~TGecQknLD`I==jPM%;zTN71&*g+Mej{-ZJSDNtX_k z-?`;cfYqJm(ATT5rVoeur@nv;eX8dNboBL)u_mtQd(ob|7!Flk(ty@>WXifITg}Qo zQ!!XF4$IKM@7`603VZDK#8nr1&D=_*+kI&T9n<)+j{W>Nz%N5Of2!?TP}Q&PKpNPZ z5|F1_bqiF!i#sw9#21gjVfO9vj9=UL8 zNhNimEAQg02@u&xiOe-Dh+_MtlJR_aFYo<=sW0qA4E z>oBO;IuS0wDk=0oFCZmy`i@NC9Wt{mRuJiLQ>$y1G2NV6{jUH=#=oGeR!8De3>AGB zgO9u}C%LC%I-;;inM*C(&oEXIxwY(UvF`~i3R2Ft*WV94NNeuZz5SWU;r66p-vg(yH*QbAc2 zigX$la=}oWFmmxtH^3n+EQ!WN#AJt+R-s5F9=&n!n8^a#96u%E!OwmY{sT{T7Md0hhgQiLR@?sJ?RW zF0_@q{Nvm>a#7FJx^NOUSo6a=c&@c;RV4;azE@-EO6Ln>u+9g`zbjq(((~Xw|4x@0 z0Fo8z*D+lgS&sSb=HzsCAzE;=`y#eqhJ)MGH=v3%-uuT;-AJAJYA`{21?@EZn_w2f zM?AP6i*2FmtKq4SeY!3yGnfk=hrAKATmn1|&t&bVGhNK&w{ z6e7m%2Z$MkTT>e{H&$M$8b*Ah+cgMgCltDt;-bdW}I`J>$plwju8`b=?aJg zc^mXS^EJab>8JjaboHt-^hgwSIe$H`zG%FlLZ%|-2htY-{BtV=KwS>>;BgaIQ?*v! z=qr%Kn5wNur~noWo>x-|U+GN$UX=+)z4n1vc|<14N%sdsQhKW4kI-hO`!}p{`&VEo z>>KbiO{B^iEG`emOTV_@Az*>yj;j&-M^z)E)g+3lu#P=mw>=|Ts;fF$I%Re%Bl`u6 z2lhW%ctljn>SXU7Yv{KTNin^Y>YSOrt zhuFPKj;8`;xLyCUtN6fg$KJO2IzdH8P(ua|VbfzmsGWQI6n93JUba-Ci}j|dki2@O z)@l)7fp8R&HYI5Gv^@WY0i@3eB}6i&Hf$Fr-SS6qRKs#Eu4-yy4clt|N(_r+8BquI z8Hw_#lu*1ImiW~MZA)CPU@u;>;NmT=H3Sp#9_ni>1ZeU$qibk94(}==VQsWEu4dRGh?!a0t)W7&3=*ziPTSf{Mjzvfd_|`!;fY_D zwQqHi1YFJtCvd)v`tKjS_vK-W5hU{dJ@PQOyR4FtP+x?pZAQ22v|MBnA@>~@nwt|D zMc3Y`t=bb}|AZ-WC#ssIgx2gtf9kn}LqU?tnZ62-ZiM9otT8&)(O;#E289bfuh;-& zO^b*Gs_N`AzJ*zguO3Czm&PK3HBR-QjU?>Czvxwp`zNUMuQ;A@wz>(M7a^yb2y?kD zd>j<6YE+=j3mZdO(pdVYB@Lv6FfC+b;IRh|N^c$b>+kf^S*bxTqv2OV<(dj+Mn*T!b6LQEEu^0fDv zu1a#An4x_IqATl_;P)2XwHNyuM6-=>XDFnJ7lJSHkt&50bNI1x`l`@?Gp2%5R~1Jp z;k-O7C|#kD7|a-1TBoacH{!q2m2WWpfkpm;s@LwFv3y-vqx2>BDcCtil+W6>Ez`L9 zZ{Lz+D(M;{ACc8`IR1SY*E!?m3;?GMeZ22%4k`e|OlMCF1kw8uIqTbF zXe%r|Vym?V!1qY3j8jpHqE9;mg_S%X92%I%j>mOt4qX*FbhRC}Qo32!1p^97;+6|< zxAPV03s(0})w%-LwLO<(H5^w#zO;aSoRRafg@mi!A&x<(`w!>61J}WM@fdWJ zwU8a>T9^})N|Df?$;j=hSkatEp!>MGXdm63ingIAYp-twcEDUE{O>a&_wx_rs|}J9 zWeHzX3p_JW-DS8gbcP%gg)_t&>Jvj5V&rilc^Pw9??gcv1`0WsKl=goTZUJ@KwAJ)0-dOGpDNkKd@6)?awVWigI^L#S4cwn+J`S61heB%gJR|m9CZ2 z7ix6jqSoD4hzU|RgUvuAaRfeDo0uejO>kFVu7H~HcS4GVxcA1v{UIR66)6d(a(3p=jbBMKN_4L*c+zd|)kjXfW z>lqA_@7?;~CHRYIHgq-Ko0anmN~Z6vHupjL|3%o2>@P+3$T?RbcO?n(hfyXS!{eWV z3|LrMj)lO{`-R?tBWlZlUP&$a&WKkuajuz_6-DYfXQbj(t}XwnfX-j+gGEJ#0{BkI z!!i{Bi=pViVu$we3Jb47I=HY(BV8RKSRmmjT;z9!KofA*>dH$fSCDH4*^;Vi(|ajq zmrqxLsA_97Y%nwiCQQOWXY>%zVqPyLWQC?lX38jkpN}hJ#}L#t(iH zr(7-EO?}&V{_KzO{80VkVh43xdTCf;5Q!I^JG0lh%FFe|zi3Y+sLGYzRi>Gf%uQAI zmLgM7NlYDoe02xJ@m*2+lViJ%JxHOlBEUq`ieE4DDuo^$nUFiX%g5+4<;v*cvD;RPg{Ij1C zKj>O-TqfmT*uh6E-cvbKsPdCv!n{?hr&q2i)og(04OKZPRYe3T)@ap;m%)8eQd6A& z6>?$!%t00n*9-`A3Il1RqAE+I)s^DxDh!&Vtc=lIn3>-IJWg#XyWJSswIJB9F>Zw< zatR(F*hp1f8;b41r(su16=y&<9o?>>kX-GmbB#b68CKGdF0Q~D4Dp;6U&U%EUIb^V z69oyos_NNGQHj{UM=EH$4-%Dmp&dgO!s_q4}& z0Lwn>x|6mCs%jZdD+zfj!7#C~X&_n{%#83p2TXTnsLBgRym4-&es^A~@vIzNT`yE% ziU>njO(jB}iI74&y8xK-WP4%Qv6uM4jA*|n+N zkIrNDT%%tFPykD}&GzXP0aCGA^td;vdV4KP&X7jHiz;m7BWnl*F=eXU}Rw`T63fCanE<1u%E^gj!NX?;Pt=HSJpswU>UslFA6q%!m! zr-4Ex{Lbr6zPm1fBxL0NO;L~G78Y6WsTgNn@9flW=aTJY?N{EJhWxngg$l%^N`l&O zAIaH2WEilF|HukEJ{>?Akgt2HR_P=`m$FjpA45=Qc1uGFShNp_mFsr(nJ^ip|G198 zbR~ z=fAh(|BNbZ0T=|*%kLVb1hBc+0z@?c_^X)zS5fp$zhp;UdUIwP&U!j`pvZUd)F{CC}QESmGf@aIoIr zcZOeUN4479I(94a_ADyfN*$&R@|C0tIs@y{!KntN3Tz(`4R)6w-4mz3kdY=gFV%*6 z;NVx0^SL#b7@YX>nH7Y-o4b_9u88{yVywF$i@^_#`;=$?rAXf~n>(3v zz!PF#f7S}h>YZx~Hc|jrx>&qoAECOaO77-?MeirzhP#n;EOx`blLbpt@h%Z62J}P< zAV3Fd9sUFGqF0Orj01`|>IHW3UyhHy5iNWr<$=(3z18J`RIWZ@ci5PEcDg==FpL`y; zF6*fO8{bvP?I16&ep13l5$;>v=v0Dv+)8}<=l+inW@_&k<5%*a&ne?qT?XSYXxZpW zE#9y2fBOpcWVe{WO#bSy_}sSbm;{iZU3z^^A?Ug&Q|CHVFY=4kt@5@0v48Fhqg|P- zvB=*A|CZ@Hkk`?W^|coQ+^D~807_fu4Xs~Mcvov7T)R{NL8`3*Vx&q2_USKv`j~X! zl|>m$7wO$n#mw=|`k>{}87Lb?d-1Zp0jx;}KXX{Pj%0t2GnFo7tN_eZ zt=BJw+JWA0Fqppik+Z|nY54&51 zq=uT`DV^H|JZsW0bhFjX{qw9e>LuVSPm3r?0#h`aB;90=D13b_U0n17wNN!N3p@N# z2qu+_sLI{B$;9VZ8c}W8OuL}9uU+1^Z3V~7_buv|sSkBt5lnW!5YSRk5+TOziU>!4 z51QHriU)BgMqkQx?xnl+NB8k13f${bDrAbefh6ME?|c#{J9Sc97)@cBj~Sd78@ zyz2Rx1$(_)k#;SVixuMIYty1j=&=&Iu~HgJ{Ec5R@UNQ!%vQUMuPA?^6yHUeRms}G zJbNDx4j4FlcN$nvbX#CJO4aIglj=wk3rA1+cLMV{Nbw42lwloh*~=+qVkJD9A!>B| zqp_+Y41Q}cbwJ%Vi|(wenvGzt^P^ED-ndn_p4HQ@Viu9a%BKab`&KJ;H21_0iL(Du z`iG#gQo;7z?mF*neV&7VylP)=n;B82V9BIwK!bBpxY`u>+-lKjDKqDYW}#HEe5 z%C`~2wi(0AGB8%lyT;&c)T!Ggcg5_3f8a9M{N-dt?ab;#w9$jnMdYA}$KFohtEapF z)A1h7KLvA$1GP_Z-AfRSEY?E|m&;;KV^fNo~4gI?xfZ?xgbobUtozY2sHvQ)f-gs;>ov9t0c!sx5~dok_Z<6-SX}5^u&GmtLWaJ(_c|H55e49YH`=9 zAl+I8{vG4lY@_@6zyHAU(p9BkV|B!^ZfgqM=o+4lg+37S#N`I}o`1zqL;+>0XR0I^ zWR@ICSt~TFR39)kAR%HYIS+D4Gkbjm9zg0;8nnqoSJNoAiqF5K+dM9_3aD0~Z$qu3 zq;~ZJy0Ms5Y3I?AguXdomTXRXgLWN|M2${lh*4z;21(N2ps78Z|Cn82a}_C-um?qP zT-|ZTVCGS!#Db|R7UCex@K0FTJmfr2`bA(LeBQ$eniQwqKv`G=(9&w(|8L?|iG`e? z@QSva^o*5X#el=~*lAqB0DEdiNisua99qG+@#F=ni7zHwQupg;WD_QUl$NS{+Jb9mn~I+#&n3Mc`KcByUTD97rz*m=LSSBfi=MNuH_QXAt-GP(iaKu8Is6`=gt*oZu%NsL`oC0%`{fYxBoVgnPfjQCcp|=G7~&5 z+KA4P8#JsH&Ks|c2&z23AH#^RDqXw~j4cJ|0KkR8{ebm8IoyD_2R5uWcBq053<1+T zQ{G-t7a`>7Df|zCxE|L{sYMx?6CGQ67dt?txR(k<@jYtzhPS>D#0_CktsrOYrgc_+ z;atbwZmm@}cz(SQDp%8SS_a`k(}mLc)K_`i^XfiX$Z)}Y12E11)5rdk#K%Dto+R^s z79jFoIvMa^apxq8Xrevc^#e8bXY1$AveB-{Y8T|L5fiSd{R^aVtsg!{fDRU&rT|um zzzwJ?-O|4!?Av!!{^@xI0P9g%AD}#5FQO}>;O5Zpr>k|C6#8|=8c`zU%BIb8k-psp z@~YPfE<^MB1V`J_FuMrxDMNrUfuCSM_0CDA;ZmJ*~6oZkFCMop2qH1Af5?hqb)#aZ8UMag{VC{_m~?uRqdd z6^fe-S=lUSUCP8|`pc}v&r{Le9M?&-?rwWm2xNj>_!0g}RXGIKfx)L^AKTHjYJLN@ z!uI1!BTtu<6FF+d>*i`0hM?(@@8c?#pPj7JTdvJclo%>oF;uX}#ROgyR$Vl~eeqfb z-}9_}7lba@>A^>Iw7%_>MyDtu!X+YNtrK<(S?D{1eQTTk(n?`gB;<(AdAJu z&YmjG5RI1$Q?4vf8doJ#)2E@j3*BMJVb>RK@*kr7TY^Gt-eqb^G09vx%D1j|<6>ZY znJk=nZ2_mmNO)0fQ$^5_^(};*8wyyJOYO!zAc%&1CnvRSHgmEyP?98QHOxngs%ffC zKZAu>`kP=pW?UmfJ;Xjb^PNLMgrY`i!uhGmugVe@djQJFFyt5^q%Tw=SfhRiqje4@ z^di*_!}_iYh6zTUaTb_eVT-Psp^N${(G8Qskg8YB@_4EG>bb7uN9!d|S8IzX9q)>P zS}C53iDC-A$}WVfiMURnsuib7y0zu`4lpF9q}s2G->@CZs$Yp;>N(k4KuP!2g7-y~ zxk9Nw&iwHJ=1?E&aeXvdu@-yMETOB>xLmonpu*QJAEpdXO4l&}x>}HAfel{=2UQn$ z=8<-jRVwbJ6is9nKpM*!O5n!D>i~0Bp~k16FIc9~lIG;$-<^Z5MSG-Js=+Ya;Mh^O znO5Pe_ZAEyo1w)Ijx#d&*+$!MuTQq9KCG57XOg+qR>*Ev)oy85sP-u)iE z-zY7w@T4i<2mKU1e@$wr^-bP*c~f0DLhZW8E`Z1poZ^|U7TEG%cAVwQD$~4miKQvG z;&b;A09`<$zmU`E$!8FwqvbzUffYj-Tcz&Hc@jp(i8^lw4%_br@~VQ+zSchx*j0H} zpj$;Fu^}}a7;q+A;KEAfySqE?Z>zHXjI7NsySrEcvJGHiI9Fy+=6yRu#Y{3ASu?|s zLg(lsiuQuaEBbwdcvWG*fbHs%=Y53L+hWifm%sr#k5VUZ69YeEK|w8BA+>z&6TuW5 zh}?%?Afo!Oz?jKYpdhc0efSfjuZPrb1r-R!wy}s1d|+!+!*iz8s)OZA)w%@$%e-tNx|KU%_xi&HX5HxE$^a^o@6( z{m`g7W2NR|SSxGzNQrxJ6kJ5Y7gL7<9L~tNPI|XyzlGimWN>8wVwxf=BDmgvenAK8 zo%>H>!TJaj&F(~IGHGp!k&0>V_$uP*$n+AzsH$-iE{(6UmAeU&s(j*0%BZf6{y-qw z$KK7yD{zo&U)|9U_e-iQSxEZ5_65I^vzArIf(AagCb3!HDHA$f7$tVo>~SWluS_(4 zzAw&BNbeH{;G#=NP)W;TjZ$I}Mf!RLdIC~xgj;N@#qbZph{R$x5JgpE0n;6; z$qQLpCskPCzA)@&r=BXwmwP23PCY#QEx|=xh1a6(1kL;pwIifbP*|&rZT}3MNsofQc zrg`WBck_Nd^t}QD#`sE*t2gKbGNYysl82K^+leNqE_6 z+TI$WO!ESph6SAdeLdA;vxHGjAE@48L!+9rX?urpYRm20*9yY2t zx{A|Qcyy~@JWj$+!}3_pv{bGE9D7S2{Usbmm1Ge&R3}=1HmqygOcVMk%r?9#hz0bq zW4D#TQuh)j`l%1?2fdsdg1i(Sg8nj|_rZ!zlO$tAucu=~xj_iDBKJw+gwc@kU3O`B zFpFr!5h1*x=~{JLt?2aG*uN<;ZA6VqB7CU`$EEoUOJG8yNXlQ^2+8$fpBt7Fe^UdX z(szT%-DOFQTU=cP9<qYr4F;RBT=nPjf3grjbQ@nUC$e-fyMVa_y^u~RD75h(N# zruKR+14NSBur-Pss2s2x&mqpqrX4 zHi!h@9Ug{b7A@@yu!4jG^eVItZy1cF1fH9Bij$|>pLT~4hNm%7Idcw%^G$v6g&Q$& zZ!wf8)<00QKOC_Uh}~V6&uSV?Jf<_qe+E$JVM)DoLe%`E9a!`-4!yobE%4u<+Mm2H zlxjuiuj;S-O7#S>5>=SzTlc#pi$-DOVZd~`T=Vp#?V(a>#CJntzTm-sZxsRD%~Bk%z$1zyHi zm4cCXRuAirzDEWl)<3_jSn6kRd?KS zMKmrL5;z#PpJ8aLf@7ljXA!2O-uFJlc+(T7Y0}ZEt%7AUl+H;ubMdoseALsICWLbq z`ELdWt76729rVWTYzw0v3J7usOowvQtb@_d3T6l>$`5sc2yr^{Rk=jxhUo{7I8=}A z>^%wi5I{${RG-BkeIM5^D0;6vcISxwPgVe;{GvE*L%3P3`Kl9NUO$1~QYTzVvSf^Co^>}zX zwnh3Gid0?h__sUBUm=S{wN}$lP0wp_b@~l-;+9D+BmRunzbg!6Ew@DaxNy6Ut{Ng^ z)o*<>{ebnpCg|N##OxEKE);;nRrZL}`d~T_gC}K4tA(YyYk-PliYOUt zsnw>?+h}P^d^3IS_}uO8$%HjX;*iz#21u?Hgz*kErfCxgbfw7Fg>9}xFBzO4Hl{6 z3s7B+O<0vY{>b}m2do^pp2lL^Fz~SCiG;*rp=TW%^YB#QRg-0Kzg85p+_Q?SQYy^8 zqsCX`8QevrH1XK6du~%KM+0!ekn5tgE-YlNcC=bB(y=RL{nMx;x?zB}!$T98p$%N) zN_|Oh%@m;3-2}pefid@2)xO7*q=JU7VIs~+(0_$l)Feq^jkc2#Fi}xMl8%!MVums^ zFl@e?-)K&O+vW^KQC%yM+l(no!R4oVLgj?|puN&H!>5kW&8pNCj5K_`#Vm5Q>M)Ctq_UPgPjPwVRM3?RYn0-|(j(6W zwA7E>;GLpatnq#>25&ESGr@AmKG8|Aept`w>#wpD36*382{R%EEMsIBH%C}L zOZA2Fh7F4Kuw8l{7BFcF1U@;Rxlkimg@}dPBt8Bfjlw{aWTfqX&G^1(HALNcW55dG zyEAWK(W)q(erk8aG*YiH7Yy{Ou$OIZs&R%TAt-BoL&$zwnNUGnLQ~2Y28hRm4JA$^ z!Yzwr@T{nS^KRw#M2AW>=9cK6+$4GA^UoV3K-A2|XQv_5!7JWIC^=&{3fiE^p!P^L zq%${76EE9d8r0C?+KUp!j-E&U5HUw(zAhm^bEJ6u?j*J#W?Q%qx@cuq)ujQYQ$@FOzc2Sv1i} z*&oYR14;{OYiol z%Gh2?il}y-x@e?40ZB78Il7^52w~=tRi=kYDqiv^#^pnTSG#F^=YfQzF$}MimgybR ze#nXN7*Yj}1}Vp7Kh`ZDt4gGY2QuIps6xX7rfFxfDrlOat-bs)Kt{P+v^MS<{IZ-X zgU%x8R{i0?n|aA6~s(} zx}hqk^8s#%^wsr5QSKw1RX#%t4166-cfbWC!tUEU~Yb zdJUZ7s?2V0q=i?B)@!cr_17|4Q6UDNe(~V4t5vJg+-laSbnhzqqi_z~J6HL}mI~^# z$gjnq#W3l!@O_ILfFvp=ag57N@L)hcINw`Z;6WUk>7Bl32k%$~mahZ-XFxy?3iXWv z0Re^n;pA?9rkUsQ0sBYaAG%6e6I-;j=SYk}cO(+?M@w!(x`=-3g35ITfmT+?_06ml`WPMKz*T%)$Su~ zw!h)(x=9Rte>-G0SJhGb%EC7I3N)5LzA+tW7$=ji$Sj-gF?0i=-=u+H!4UBo-PZ>sVuMWvsjNYD#{}M&*ivB)WURbdXC$_`6mN0Wr zPf4a`S0INUq!M97hUJZga#l-|iPi8`kOKOz1#`ex4GN57g)+LP$)ty`qERU-RviFq zg4qvP6L;Wgi1)$Bz^7#T4m83|E3*7RE5ESWEoihwsVAU9712n zcEE~k`_&0Tqkug{U(Tb)zk`q}__<3O5Ou36k+dQIwcd)NkkW^Yg1K1|LR`AmLv=NJ zQXXJZN%5+k)jm+)gkmGZOrFvO)iX>SBG;)!3L9Id#-HAEmAXWae}rXD_L`C{at&XkqF}>;@(W zuLT~Tpdw5kxKIsfTNo|D0CM1dzW4e2`=#c>1a6}5tEmzV4!BWDpo{8EKqiEZp98#D zA)g>dPb%p04|9qOtgEbM_;1XrRE6FeCKBC)S$UZndhlY|vFM5sVn8F}tRl`p(@>_v z_Ax;XG-#S2l1zKY4mc@l*9j8p5(YCrt7ZLq{83@h{ep>gf3e1|YIu7kf{mXMyBeep zR8P9AA*~)mL0D$R!t=h!+9pVV9X{xi8`6%&G}+ zGw15)&q!|U zszCo$Emyy^C_(5Md35!0jm85qhWP*25yke1h>bW~WxgMct_~2T!~lzydOmP5Sgc?G z*sB!@zOul)xrs!;x+I%kbM+-FNHx2|RuYKrUuO<|KuU6b#`e=JS;ff$RnNyQU&q9p zt50iJ4P-&J-ZJehm+N&x8S;*^Dw&|F`z3bMRgWAU+c}9m^SCaqJ~v&DRi&MlX2iWX zZ7}yi=vBD&u2;l?ND;XA6@lH{TLq{}z+9-r#X*ovn_h{h3TlGfzX)-WZ~qZ~WpSr^ z9pIWCzS15uixXotup)01|LBv6%Bcb_^&+=*e&b!==2?{j8h7XS(W}2;zoxLdh(Pq? z*oee-P<_nW-G>5B`_)!Y0=s4|pp#H!JIQTUJb%0liw z>Rr-Hju_+VE#HY?#9_cvzILHr2|Qa1&&7rV(yw)ntJG# zMR=}iDFza%hHm%#pC~e~J*E=6i|jF0UQ{wFkh1;6sQrZxb}$*8l2y8=!Um?@MbF$T z*WP_+u>UTo&EC60!-7V4X-DTc7VrjadUGf32DO8k~wW zrj5I@ORswC3^+#f?)fuU^nJh>A}BK}G)E8FLqJL;<@9|!2#A9~$pz8e0>fr7h$6$8 z?=oSL!e4RejyjAiZKzvWW9*5o)2+h;U-&n4PYc@&0UxnFSjYeu+-Q$a}`*o5*JLbJb42gr@+nAu)s7Tdzw3irJ4Ok#I}l0A9o>TX9YV`yl@lUb z^VC_HEt+1{_%E5690U9FSAM?AMa0dEf>C<6RrUKZ=sN2fT~gDD0gef|DH9Ne4n%xC zQ7(={8(Iw|lC6b3W_tS+Z5Aw|Y02fSk0coQUh~R35f_H!dnFTQUL?@IA}g<{sSN5X z8&HQ+5F(*nht3K~5$7+9Wv)Qp9r+QfWd4LKqp)C@6JYQ0T@e<*E8+u7jRFe7wh5eH z33)2Tj23se4n?maO>!pa{+F}iIY5fR4mv=+#iNgxP#>)B?JGf2ugKpa{ASyAbwTaI z+rZ(m!}l{Yr*|giQd1?DqcT^3o`^cU4qJ~9ce+AcM%=<`)Gr3_P{k{CRdhg}Lgy}Ts zU8gY;KZhW-;wc|pJE-(xy|Y0p+OL#M@%!qFOnnXI3a`_ByH@x}OQUXW z?kX-Tn=1f7M=i#e${EWWX)XpzFPp8v1_q_Af|l8|yG8(jk9%f}aijeUb;k;Fh@Yvz zWMGA`WaJL{?$W&?&sF1h0gl{GSzZ^Iz;<%1>kq6>7$UI1g{HLlN|E7UuG^S9CKB)3fjg#e;!wtbC15P)Z!vBEcfH>E}<{mWyTc-$~J|}kK-Ef+Dlgt1_o!` z*Bh0o9+UAMpeYldW*2A;=)F$zr9nZwuseGp^lbX5KSB^O?puDcIKpMO4Kqlf2WD!) zwbcD(_4!lR)&vcq_%S-+fI86(LTa9Oukp1nt{OZt`R=zMuw1N;I2^=EnhRbBcKE7$ zv#ojxB$$z&QR_`z=RpiV`!3+&a_~eD(;dr#g;TV%$P%@6O_{H167r2K zP@aY?hK!#PyC9k-p@%78223hp>W$BhWh1@$`k>RmS9Kr@tsbyMhWv+gD;YYYX;PK!b^l@$<1 zZthaq`^KbUV5R*FyT%`1c!egRup}6kAcE0^2QtK%+mkvdRrYVcqtbv7xkk>&G@DV~ z9HeyXzGOoLT#O?d?|L}CV7sgMWx1yA9lsStO}hfc5%3vO^(ms24^(HW zxtRoGc?{EGOn!vVL-Jt6aP6%2RsC6l@mh2Xen%H)`5`9B9Fv7J$#%$}Xx+Kd)fZP9 z^d`gnYjhS+6=fyW%8AflA# zq=lH+qQ-T@Hdtm)lyNw+q49)OU5H$o_Za*QpF<^VkTIU@ur5^)z+K5EiXp35p%zkZ z3_}OC|et-)0 zrP2(FPGfOxa}XnaY=R{2SktVCt^Rrt{nYwfg)ZCIbmk54uBmg)z8+@%GcM| z$LCGg&0o=j_umzID-%Z#3)SP&|D_-)+RuqDWwJl*tE$O(L1Y*Tz^V#@A=`=fnDH_6 z#4bwZVQXwUdS8XZyUoq3Dv=ks)QccO$xvv%!7oB7qt{0VExmbF55dq2C1nh|VDK$k zC86jf5><;ojKozXjE?lBb?iQN3s|K3^Qh_|1l;^pZbTnF4XI_}xA#qv$xstWEf9v* zPA=U`F|@SqfbFc+n={M!Mqx+;2TPlPQ>~*S)((Ja1+*sZyP(+52)~lg7%p2YEw$@a z`TV$#=GGSwYNJL8T?uOS)wa7BWFbSMTG8JltddoJeW&t(Te|8!inITmYPaY2W~s4Y zysFYfl-eT%3_=tb7#b)+LxU9shBaBQr0W#vibH>V0J7BagFWO=ACf6pTzi~D#=`Y~ zu*8a#ed06As|8;ff{db7B!a|0f9eF@YdPGMP>+#9LO9kI}$X6Y%Q446X zAiPUsV4{-Wb0FmVAohpsgGRaA$urEO|Q#n_krOD|aS zzBNRbf`c4=odflShPH@FKv!Blp8Z+LET9fx{j#k!1FmUH)0L984(gG#fmg@Y#n?!u z1#j;UQJ#!24>3dAK4)kb~gw6Yt002xAs9n$}Nli6!@*g-Q6qoNJzPP`M#f*Lz?F|D9V7avff1V)yr%BM z!0(1Q{@?I`SRnzuN^2}@z{hn8R{veuu$tvAIE~{Js}#@b%h|Wcfw~?c36SOaE1ye?YxLTtTFgq0K6~{U^c0>Fp{J{h$9g z4L*@#{bL)3GGGcIOR13G*{a>AQTt++2R*@Kg>lJ0`*~Vcm%5*97;Xl*40a6Wxq>&y z*(N#X*T{dq&qh_Rpm_7zvrJK8RPz&E?)Dv!HqJ!XyiHF@z^pn@FCm#3O*ZsIxiB-> zDs&`+`2_s&7&M>{vy5OsXLgI1w50dRl?x6yCx{>#)?G%f6@OoVBC;6aMy@m=r3iz& zXJpxcBe_0S_nA65QLk2;F=um*>DwC44xs?&Hlr8bbn#CriNAiWANmNyBD!s;|CrP|C%(s^ zrP#6~$k*XYyvZ5d?7u{S2R5T3nnJkRoAzg%c}H>jJ{aR$xf1 z7}dQAsPs;k7D(wHlGW!x(R(s>)~<^oXD0)BUkQPi*cyD5Ourj1s0zuEql16lOvX10 zRS8gAO#64f1ytbatt~eeZ)n3WjlvWn{MR{h3~6<;??8^x2YuQZKx5dTPVgm3uzh_k z++)X=6l4rqRX&#KLjDp&Fw;z*Sb(7$3nDi9kng(84iE<<9ZYPz#Kz#@!e4to^;`Mc zjeP3s%wG}bTg2o&8GuaF+&N$)Ie%5I;xzxN3RAkxTUSab&eb1cMe*6MwZ*}zFaWdj z4==Vq==_cCncY=kba{InCm>Cv`8Y9JAudAI0s{Z92)mee*54#>=q}9O3V)rRri4xy!&zLT} z>XgeM=qd^Lh&GqL0G69yl>B@gSsUE}1+;0CyJy?DQ{CbwB9Y>#hk|lzJ4{^xW_{`c z$cF)DwDJn{2Y1C|w6Jy7X0plk+CtqOfcxO4b*&xrW zqP0n9(u{b6H{FN4YOFqRDI)AFCy8*eTfG_`0ng5s?74&)w3C$Ap~MzJ9xeyRwtf=_ zF#M`#T%7xdVk)TEMH@#JHWZn7<`N2AN!M$jjH%N&jlyd(<uMw=l3U?sP&h#P2@nXe%TO zhh|`WRH#y{bJ7IRbYN?fX^pB6s1TTDH=k)VS7LpMK`Ko$l}C8i@HC1TElQ`g1ObTR zJt)f4B-R&*+fK2WmNv_Q*)JRekd5_*@BfkNh}5CajHXLP6SE>(-{h#hwvEgh(?zui zgPg8_#fxy3U`)(zkWcdJ%GFYp)VOj(Eg}0Gg>T!y>JwR0B2ZT#`=I%=5Lg9$Aaetz zx(5@OF#XYe@_!1cL_sTg5a@abx((624DWOuszTz+-t#{z zDD!%`?256n_mpL9B8mS%*KO5mv52J2PQAkA%|1(TX~Uy9?O-02HKlf+w!jLoQq&5PjpOz{-`=~{Y<7?!B z-Slx#e`?!hw`v6j?XAWkq`HR{y`t|9GiWyC~| zJLS#&*+W^*i4Lm=6ZI^K;-%8V_V-HlnFeQ@W9cuRX;WU-ZJb3g;(hrzacE16fbf~n(rg-yT#!*sLwYDTFi&$F)HY@6HW>p2zU%1Z;aWF@?v}-)u)vkb6ca>;$WOW!(x3H-FZ!jL2Ki4?(hP7m3BG~Pvo87_U_X#ZC z5Y{^57Ic?`2S91U8bM9Ykai(>eFz$j)Dw@}p;Z$%YQUf(!sQ~SHLloHBXo+2(bWIR zk(kl`BL!t?dNZX~w`W;w4*yT|TyYImIapmD|5*lnUJppuC$YD-rA9vR7N``>Acy;Q z5mOscRh2r5vNG-bbqnI4&WOL_yYrqwSq+Mj_}_J;KJodjxWRENFsUN0Fzb~(R))1k z>Q#=p!T9;7iePptweMA#@%p;C%7#%F^<_3*x8Twop#vvlc)T@n|M|xMsJ*_t&&4^d zjf+Mt9BKT!%KljU1z5vTEGtnDn>2Wf)j`42z(W-xnnwO@|EL1B+0o{~lcMe#UIk}+X$s2-oXbDeh3BM8%r)@#M;C1MrMfe&Y0NLm2 z>1iITs@LQBb;ZIVzb+c1(JlbRTTieEoQt20v*-A_zI(5JT_?<^$xIMTPRGCK8zo;V zR#mz|LBL9|N_JfrNlIg6L9t%}2@FHNbX`93q(MM1YHe|XvBhO6?CxMdMvjr3gJ%qM zm3>)LNgOWR2v9%~D7a6Ox`0RsdV6VN4_#7GR&G8e5@84Ys|%tGYHDeHzQPQu)G{CN z!gL)2{VX~kgZ$<^G-?!5A}-K>1fxZy^`oFb+znMq+Qe2+7Z4OTR55k|Kv1$UL@>72 zjArGey39}xgTRdqOEzfuxhsO)w0ub*=sv6v5AA z&^itGMRZq%*QN_Y^O~==t>m-IHj+Y#{3cSaYK(OuI!X|GjrtlKCX9XhTnY?T2gg~o zyGWh8{_m|;7f`d#y%>^c-K_mvc>uee(hZ;Q&ydCN65bf4cj*;+T&fys zrL8#$V;M)`MP2i;M|@(Os#4n}Uv9D$EM?M73~RxnU|*s!ptfsdY7b36;4Rzqv#`h2jCaKHWT731d2(iN6D*@vs}s?GDhG1zhMn(~yRk{f^gmr=kaqK3 z5H~`tR1(V3a!mv~jk-AuVb`SuAHk@SBL&Rg6UM6ni?cb)@2*OzxC0P??^5KmQ0Ith zpPn4F5!9~?84Jg7_DkiPWAP5>G`OB)(4!Dy88jh<0T#fK%&wcltZEoFfr%ZP0a#`~ z%U*@~Zgojw+AWx{QF%)xuj%PZQL4^P>_}IL#axcDPrEZWB05GbU_!B08^0*A)LtP5 zSlF>S2@@6Q;T8IjWNPYEpTx23>t=|cx(W*o3rKOR(VIieL7`pxFzp9hj?!Jv`Z})3X-<% zmAOWzC4K_x$~Gml!W9w0rj=^?&Cu-Y0LUy9+gJ(-)tPJe9`DTDEgh?V=L^XeQ~g^{ z-y!t9UH^!8M~E^pqXA8lg)YmZTwW0Wck_G(W>90W7lW*| zN-z}VTHvh}m|BkFIHpvDxG$H-si>bCDLcpPwRBclB2%J;uwGqcGiZt}!^S=nLdQN1 z-VzQLB>^8&bF5o`UnA0cis7$}kMANdVbvykZ=THHqI>CB^c~s( zce1L^hHUv=uI4q&6BK_+aTQ9qx&WOQwCgp#3j&oh|069G@sn2#>U=kuaNXe z=ev5oQ69!1j|V>Wx2^h8k|$L&tLhk0FmUA37Ur#)J)D4kgOuws_MeA(&c0I| z`imJ$m|mMQ92*~0)Ud*&!gu@Ub(KDVIJF`r`Lak$VEThFo&Ro??b^br)I$A$dxIgB z)>NNDqQF$ILU2lc$}qrUgxtBHk@x!pF3cer1YRX(aglZMY3|K_6fW)BU$$DSJrDjl zG=!maX$n28MGi@bAgt<7RSp3U>_#Icoh#vYS{?hhXSFZoU16Fy>iO=J&yKPv*nMfL zx_FfZkE$akEG}DzkF;Jhs20e-LFAexA89XPsYODzF)z5b2UC$%TV6JvgqNPm&(-Ur zI)8E?CH#AheloMKf++@0+G{2VjKa|yxnr2L1RmqifT2QD9De_riqCk2YG^@oA?DXr zX4F_mgAlIpl|qg*tn=TXbyYrWs?2grW^8Wa_zS>iVO(##Lj6$r{BBlrpIz3P}Vt}2(O z*C%MkF{VycWCdwNus*w2Y-7W=J9>Nmx~YFioSio9|T@xa7LrisUQp{DLH206<-- zaE2_m>TT>Td1Elf1x4d2)gC-rF%ZdJm1ww(hY)=0e;mwKUlc^CYB>Ct3}UKMp4q<~ z$XfJl?f(`Jl`5e;-VhmPI(e~C4ssMcU+&_z&vS}kS&su`wZzmO&s1XU4{$8?+(WTi z7}C+PsK^sWEPbciTSUmh7KH-J`u8XrO{-Rv++VizW%ptXMOpm$cMWjm`y*-OeHF6K zCAv(r#g~By-2h9zJG7C9$q1+K>wOp4CbpS`?|wLs@zp7|S1;=7#Fa5-cL?{!VkrD< zgUwG|5Ho&Lo@d~`8NQbSNng;6Toe1G<6DFFx>fCY1@K*n)#O!42nJgPG)UC~^4=KG zg5r}>HucxK?`T!%?9O0mvmZAVsiS(Xs|utDC=J5}HTh1-CHfcFS@5{6tTWU{cN`1R z5=-%n8cdf$p=0yTH1pj=!Il2?H!cH<&0*yUb*~RnZ6(sb2jdhM)B-RsLd8+EZC4e% z+j;%B_v5myR7>hwp;eW^kuAQ}-ryt4sD2`SqIs@$fqr|=fa-MuxWy=1U za>|Xsx&?#lYe_qv9;t==gOPgZ$YizWSw1j-Q@z68jd-gSxyc z8kkVbT_*{K`zqbx33W#%W}$sV26q~JU|xGETGb$f=<5#X=2~UZ*NI?W*Sd?aZuDvL zV6DSM2RREQzdDcw>HpA0wctgyQn1et%Dx)%1HCE(3@9{K?W!1J>*G&jcX^tLfGy4< zSdj|QS5l?Lp}ShG$hUq~fc{QI7K7$Ke^EtB-+>HyBn4CNr`)B{SB`vltlyzXsddw! z=xRk{8wm_|i)b!eEq1rA-hIPNfWpZK5diuH729kh_$lsQX=xn%$4Ps!8+iT}Zqe*j zw<0*~#)A2`APy4CzXrS@?jRK9;T~K=$wE(j+3KplX1p&{b#PT>{Kbi8$(b1gepYXZ zN&{$)t*SA+0fC|~T`2c(AF!d8%L#6}fhxCIQxo1m0eu|-)||Nj!)JfcR#m}WL(j-e zK|-h5AsRCI;fXH8j3<|Q1EzHY;9VZukR8N~gbEcCM`p^g;9V?uw;e?x$5aHqp(!uB z4wiu#P<0`K#f+WlTns%718U*KaK%m;c&dr20gMg{IjRCWr+auy9MWsQilqI$H3Xjt zx5hyYU`^zP%dR+u`hfX@nd_={^0lu+J(RjL1>0Y$(}nFARUdNwwaH2tYTHiV4OC{h zQfgQWLlAMPh?o|I_dwz7kwb?aiS7XhtY0Dc* zxxv0)S^qMho#@G#^=srV1m2hC-#39i`;|(A?@{PhiiD~cL;R}bwAC$qA0S$6t80G> z!Cv~h<1%;J@W_NY_FV{!NSXD{kmth+8L)OdxGK@6Ini}Jf&!>Ng%-C$ux7bLAKxD+ zF8PYW6vgSPqe#t`cP`{=?W*}vcNm>pg;%wbNrA`$9<&A_IF%rM#|2g1Wij+Q#qO$f zuT#kitJ(C+qyG!5YFa9pbqQ5CQ@`K@>H2k8RV8?N@`huzRrw_^G#}n9L!o}E;~Jo3 zsok8cnwo*j!ei`tMZNmv(YFU_=0?9 z*_k2SWe~r1m1`i9;t)|Zw%UMyv!lBAi%U5r<;H!OvOyNr{GLL_s;V2ioFIKg**Ky% z#M`zhrm}(%UiIB7Cf-#%jtT+2e%~EdekLkjHj$2ygTg%cj1C8@%ySk9IicE$NVqb{ zcq14($pupQ2W@*zSN-|{$ciM~PDqFAP$gVnZYEm#FUp*M6a+74t+v-e2b9i84+p&! zxt=4-t=mf*SMX1J_6;G2f_bYXxN^Vm#B**WX4J1EWWJdtBW2(3!p_lMDHeUf;Qswb zwf+)81RttfHdnr@05%YltALEdHcK#EWhi#NLN9pgG2w__tM)OcKkMywjE?BwoBtxI z{za4TcCdn%Lx4WwQ5D7n?yPqW0#T@?jAHn^g_EIWGyT@2D?f0znD&flZ36&kgFSl+ zZjS{^fI@78na4*|*G)7s_y6rv0(;of5)#2s3N;E`wKp)NXbMVFHB}`Qg5)Y9Y(HSF za#0Xk7Fe>M#+5IrE|M&8XRB!qW7jSqNe(sz0l6($zrROOf`K zXSxK{2G4srSmt5rM(b6uC=%ytYU`JMBdos>xo{ZE@r2XB_Czpc$AV?c{FzS|n@vJp zoTCbdvh_7i8h$-A00IW%VuC9nBAMLiMt>DzKd>8@2XlY@3ej6pcVe46Bgpx(1zPwbw_tXn7<1L795WmjDR$AaiKV^beg72 zhuiR1QJ<|TXQI$s`0Esk4R(=-`OK4#i?t+CP$V69?bZfIkmPqpE(HV^X5H6G5GqmX z#Ar%*N&GiOt_V{S#kG1pFpO+?YBamrQPQJ*;Ry*IX7~m(9G5nPEJF)KtdUBDZ2B&M z;CcCFyzpYY?QT*G2FJ`SlO?5*&R;AfP3_Q1E5L@hIr-E3SzvCcL)NgO&@9)wx_G8V z?p1@gLL69Kn8>n3u)2)Tl=Z2VHHtX5m~|hy1s`=oA=&FgeMqybmvyUfZl4O)+o*jY z*>4l%8cXQ&jC4$7A#mH05<15O1_l~wPF>}N1Wb#7je7?8w!{HshVOrV@DLCZ*Q*JF zyQZ-)g&W+rB9PcklOra`(9kx)lN15k(3$o%Yq5J?f+bCiB8LpFTd+3%QUs)mUX$k> zVHj%G4-%yW8K!|I!dx{dEjxutog^m?4_(Qpb&Pti>q@k13kDX{ zTrE2}h<2{Pi2?6rT1gHj)#8wU72)-h-MPSlkEyyqCS8aO(N~Bio<3C{4i=vp+l{iv z%U3fF!CbN`&Q^eYU8?nCjeYPHsHIP7*hEJ(OO~$RrV7DQf~(Zj|8J-o0#%i$`lA;R zMH32QTvd?9)-9kB*#Q3y=wJZ0S5@M{lJu(}=I<=t^(QdaRlmZ+i)PgerTMiyz&&!> zx}|L0CDs0=Y_`K2TrLIJRUXk-(msq*Tq`iU0KOUaM!JK;zv}5mDsbYOFP8fp)6uI_ zul}iMdcG=VSjG)OS?8+~D=?z5N|FwTu;0zp^k3y`6a`57;yYP$tIAz1p;%dV32U!L zkqhv`Pv{nY)LEoU!q5xH8(k?q*p~v|id|HkjR;dT_0vr@xY~_MRwoBt+z(`+YB=28 zM+_c}IptkR!%Iy3v)^}8r9yrz_gnydc}`4>N4iIy@)@OWPIY%y4+2l)D6+fL*7yh_ z2aBSfy6(pPrkS(>s7veqGaNsg^<0Nihc%!4d*DJ7^C=CGRAA&p0tKL9_3QWP*ZaXw zUn2aH&h<4qp}_XLkt71uhndgRdSjszbcDn%V;Zy#e|g6f6+%mLQKn%+Sored#JWsm z3#T1m*1c6Y*n^l8x1C#&;8p(gH&Ap}G)M(~FWHLe22=uy5X#n|5X>0Wsp+rJ;MU5v ze?)XvXjl-u#gGjP=%Z?^DXYf59l6UI`jp+U-&h&6SaKF{DpkJh1Y&!HQkSvsGledG zylEf@LkX+w)R8*PgY{8WW5@gwvDD+mG$rDGJ2$v>!gpno8Cef-@v1^)5Z@KFiN2#c zKye))d>OJJp)4>ha$G1LhQ^+{?*aT`T8%S8jF+%6dzVO5lZJhDafISDj`%2^q9iPc zjM)#*$ZY-G`#ZvQq_m^3MnHs5+L2+k)CFk*jJqOME?5_1UFwlLP&#-g54wWxrNMEC zslf$`0H2}Z>okd__s7FByJZv+qSF_Ug-^(_V^QKWjPfQ^M0BWHUATjDQKh)?k0#_sFA+NXsVYld-{o#M*~2xFgHZ?uIm) zMi#s9?+W+IOS1e8mylP(p`a%wN(YrR5jE7i0J9ryfrpwsY`YB$aS%;pDNUg_zwPHN z2)fwCA8EG#hfv2EDNC_|P6t?Xv%avuOP)*l_s{1+#YQea!Q@W=(MMOY#vndmCOJd{ zED+=`c$dGli@mVodE7u{%0j|ZKC^N8wZ%HHtnU^-X{0B1rU5AT{ZYK{G@*A`QIyG0U(` z{$Bt=K)$~?3~5Q(a0!*6QPWZ3dx_hvyjid>WFmGRsIv?GCEvGkXnnsXq+4*kfY!h> zJWkLofQhl10l00ZIWbY0&Bav#K%gH=tbsy<)U}n@kg?~4%Vmv5(pw#V5f0n)Vz{!0 zyuKp^&2?jH3`4$`SL;Y6+!jnKtHlepUSDKUf%~sQ5cEGV#1JCOFQpLSO6X;ro36oQ z_ydV?=hQ)m=vJD6Ro6Pl20S;R%&jF}^b(861Z$Ez1zEOCMVm3JRr4mQH=>2If+|jq z$cMpI)de0E79ja>0%xh+KgMHb|gn3m08GKhxRsi9XWSWTwW$#?!N{-rtJ0nM#I!pOnbSGt10z&J9P zJkSUth#=?&W?KB|K8PeK!_Q1+wc?m{xOw*a0%1S<3(2}93TFzd%&se88XUA$joqK1 zDLy>zqYIUhaSOPMz%^gFK7C;DV1X%v9%IrRZ&Jl2UXlTv4sc{0!01E4ERf?Ag+ghd?oN#f$5$9B$jqv6xN|BUF(12TwN>(*XB8B^-7Qj#iHo6u>J%4_VjQ$U?dli&d?_g%n2jKul!7y3r5?%qKquqMDTq*9SEQ< zS7iJ)ZdFZOIGo%m>;@a3Z%+o@n&_%44tl;gt<9n7}x6XD5QsMBY*Y)66B=_-lcEN*vsZQn{eo|Qa0G34xdv(!S=dkI|R8G)w9(=z>-d-tjNt>fMQ}WGBpzUA275Y z&=nY{FxY9QVI8u?+QTrA0M#{a95k>J>Z{liPsjOn#X#z-==Uqqa!;==0NMVm?rnpr z{*NI^{V%0zhWbWF(vYx zVsA^F;Abd`ewMY~s+Q^_B(y)cJ6&5+t7)V{XVRyibL{rau5Xn4YQP9fF-edN(1})E z6dt{k_Bz7ox*9_%K#c{MoD7|Y7Pq~whLt>sBB}yu7i2kDv`p}oKX}3dF@OLFBqCM6 zAI4K%EZ0wtt3ohDWA|i{SMQ7(P*WF}8AAm%1n-7)7V))M!XOk$b$j|K1W6Y7`I+6d z6AC0J1yvkZ`~%$+RK+STU<=?+xZuitu-3g=eSFnoOaxI>sQJ?oZxi+ zyo_=V=L|^JPBGOfxdV!NHBANkFOL<^$_#yKs*y%?B>Kb9N)3G#?6`|m2y#5DZC7OQZg%B*LryyL{UY+aO8FK3N zmY`~l%Bo7i<5^!;yS59D&8H%3^^1${Tborzl;Qcyv!To9tB+HVl>Uy2N;5(6t0=*d zH#I7Xz$B9Oma5@Erfm&7qq?Hjb;P(?)jh4lHVYmtsJ=zI{DXpsgUNj1)|eYHa8^q z%Q&R{-$5ypXuDv(tymA~eJAEwwu6qlg7H@&IMBuIdpKsyukP$^naYXdz)R(2s@h*C*v}rQo9k>H944?c6cO@;#Q}ZyBnfNn#wZb4I`l z5F`(wveKpYuc*{j0rMi}C1I!hS3w^IG4J11QEG#a6-D$Wyn;9-Ggh$s0^;7(RZwDV zz?ln2Fw$8Zoj`i~br?iW`N+S@^t}m3Y8MF;My>>!2{U!ChBkKTvo??26+sc8zeSa} zi?0BIz}SZ1k-@&=W>5USNGim&wzoNBLz%NdOJ5|kn_#5Asro^UV1=-So8`WT522%+ zy15n4j3)i;dsUU;#ZjtylY`VSgE%@Il~ukDidSEJ;l{PmrWC2Ar{$`k&(})X0-GI* zL@$Y4%-eXC!u0yoxl3{8gYPlXndYlX^uHx`I)Q?PaSuma2G;GNNC}h9lZbUY&JG@u zlYh|o1&cuM6>i8NaX6D#sX*}yKutC?YE~5ovQH;%1k47`yNd5(3m5sK#?4bvyh}u{ z6b<%>dtUo^V1dI|;%glJABi%Fzn_V&hvig`eCvzR=vvygvkDT?N3O32c8%y!o;}@L zpip`ZuQCFew6Men9P95ZDmrs?cbP_l3YVMUW1n>M~bOJ^}XT zzx2~1Imv!j_Ptlhp5V&>SR^LwWPG7w$dLXSbmz*rV*@h%L_Lpby3(2FwutfxnOzt* z=L_KRwt00xf;~-8onWxq)&k1bcW7Y(vXUffbAKF-Imb0Nk*EWB(41T<>1TD})t$l|z^M|6>!ixb zHj|Y1%{yz5bX&gYxN30gbwzyzaXD)zZd@mVyg6ud4%3+}Dbx z9c(-CzjcJWcFz!+REzfe%LyKbPLGjGZpZ;ZW_*x18pDAccVhW_Luciqq}+hPQAcEl zZsXZZ$4pKz$xcNVm&f9{7!a;^8^m1CRmecNWmC`yL6X#Zs$P8~L+?uW;Gp4N%#Iid zTUyAVn=uvO>H_d<@@Js@qznz2^V~t~1A- zBo|2Ib=&M1;z~Nt`UwCDpB?5-d(j+l&6DIqUYzCk{DA@0;*0ee4Vw91jqZU3Gl@ub zkg=Jji>nKbGAyNGWgZ&Znxh$)*sdyBpbTvp*&G_mA;g0ys*$`H)Z7`F$XM>}!qiYy zRT=k$-Pf;puJ$L#ZmGYvFk=<5k%zk6uG@;AZmfv1A)b}t53lL?T5M9)QSI=$;6i_! ztxWPswNt^#=UA5~J}m2gFF*V1d&9FF>{4!o`DJr)0wzhfr9kc;>ZgIKa;v+jincOe zX_+tYkeIrQik4_)E?(QJ0e0(;n8#er5G>Q)J?1pA1*@IAT#<6({MT&!$sD|E(%3h7 zj$bvVH_V)}4x%N%bD7>n%gUlWlE&2y=!+d4 zN}%(h`Vj_I++Ye*?`<)o_NmnKCNN;p7(fB4fM4FA?MLCqNI7b%z+Ff6s^bTL^z)!- zeMxbgoBc8=yvo3$=hk{XSwg()*Wi^jmc(mY^XX_MZ<*KE&7sUV@AZ19^kl#AU_7?> zb5RrN%WsoRUGVB3RjtzDoAX~u3T$mYxjRO=oTFf@G2NK#R4|CT$oFW3hkq+aT~J+Z zMc>s(0#H<=YX{@}cNRCj*agO){Z+6aZ?mpi(eImv5zapnK8q3d<5Ovfv)$DEF9A(g zk$bT=!ZD_iwGT~`enceS7L0`m!4K|$30^7_7nvLS<=Ft zJcO8vYD}OoG)UA3=&CA29M#!m8xFWHRvC`gUWaTd$|{gkv;0kg^6|!K{))ss&+87) zSOO?5kn8fEhH(bQxvIqp1X%=$%cks@3~*Q zwK&)15#%!0{8QgZp@tk)oNDBfyabcuwaN0Z4#2k!-JQheuM%B$MlhWiD`;O)nNnV4 zkuUAdJ)nVTdPEE-!A##3jB;K7FbRsOoER(e)*nnI%4>81c-A)_f$oAT*Htl~F`Vyv z5*Z_OiSWE#nN;NVtkU#*( zudLdz`gmOsWDWCouB&`^Rd2gHK@AfCLjhi{fBO4Fnih7semZaIt}NkgeAX$pXl}Y| zRsA_aOrO=sV#Wm5On0tsHI{aD3D;UHU}&+rX473cJqon|&o5@GN*PyEj$9SS_qu!9 zSNMBX5qKF)vMkfFsAXu+w}rzJ>)bCvWT@*uy2@6oZ~BqoxjF{KdBfPCJVh9D`g1U+ zhYK%Ir*){@zS)!90WHZuMD+^buzIp{cA3u9IJmD;;i;-M>RDwmhX6Hb7N1umRA7gV z5_vz?#)f@jzFJSc9zlaN42QZ4Wg1o4(iwQbP~bCV3 z3;Gl_(F{CKtCX%m`BHdYpnV-P%3C|D8iPvRdEjiOth<|8m|OLof0MXM8maku!=-&C zRS#q8)n@?RMOHx*Z%Qik1MfKE2FnIy7amEJuOOMbO+GfN=b7LgbHxgUV1NliMubWJ z4)$S0U`SW^h2P=fYdfKE^66r)BgcL3SC@Zgk>f&zT^?@wC?*6Q%|$pZ>0Q#jP*3ob>kGp!(u)dMNW1ocM?6^lSjXRGXK5 zD>8@RqrihKv~)+j5P2xN+E6vRwh&MqQ^h7uQUb;F;ZeZ!9^Vn8qTR*hR(U`~1MliU z2QY=6v!E7J_^T8_XKjjP2~q(=eJ80POLwW*6E&|trPE06I_19_N^|Cd z8Dm&5CT9liOHHU3mIacA&&sMY{&Yy#N`5_5eBP&w4AuQ%8HtHogRogSYzxAy>|}?6BA(&AO3~nN|iFilUAjoZHGfz zv0;79iru;@bM`1~^=QOPy$wZ%oBmZ8;9J>kkQM$NT(GtK_>c4fAkaIF@&0C8iT`Wd zy1wsoWC~Z^w4QBpL(-FQn=XqWuj=xPZoa^^NuUmAMLX8vCXuA|yxuyyn8L9ZV*`E*`a{(14ACeLxl&G-lS4Q zAJzRc<#OvQeedpToUalaWmPSM@sxoTEk3d83_LqUOIz=pS5ROwBc!Ui`-^p%MGcD@ zd^a19dT4!HQThdr-|C1`x~6i~@r#S0ExNn4$^KtpkKza~i`-gP6%g83n%{$2)pls1 zAjEalGilch(_=SNfcAtzQ^ua#fN%P%(=?HfU)N;nw7O~tI2h`y1;x1i_2_It&2EofdSkddZhu7`5OiSgbu&-QyC@bZ45cF4`@_VauCj_;lxJ zKmWDPn&F?j#?CQ7f{Gd_Ksm=D6$p+cVxy7EVEfAi`4=~mvWD+EcT@SDVYjgVJ(c1MZl>_Fip3} zRXOr^s`-Zai`02NYBm#gRoLmv(bsR|eAun3m}cRKlODU;6hqyXvIQpx{Hqo5D<1tklVAp5%Ue7%qVX}wyczUydwbye*E z@Xr!uxvSrdsevRFiNbS}$Nh=C!tmN)rbc61|CX zVw1|Ro5os}K(Tw45Azlz`i8yzIJNq`!as+im402Zu^8iO*Sdyd7o*8kd1<+%>AG^C z6+dRq>@!o=dhi%v`+vfOth;vPZ=_jauCfrdQ1hN+jVYRUFCt$zAazy~BLN6(?5>gOIrdyi^(0geKQg8G#sm&_vrY$R9xg>3yP*<$<9)zO^_e;1GIDs(_2 zD<=K-dGlrxGEC3MnDtr3t1WmH;uYRK>|;ZFUn^^?ktV*YTuZf6D0c_Ovh%W{@xP0X z@mG}>fKtDnFZ;}M#4=x?%u5VA6h!?FlE{OiUUNW_BV$CO)?A|4oY@*nh-#)RD2fO< z6img?45-ws0{*w9%pe$qjUf;b8fW|6Z$!)rR~Q&;2<~{kfJ^qW@j0gi>Eve+FzHg2 z9ho8$80g5~8a&a{AYGNw$x|gvFDMYpwPz3x{|0wW+7jh_X3`8jBV!C+M%+st5)H(n{{HXSB^aUbJ`V6?hzIl4j97mQMasvnHU(A(#6` zzXjw8h()=|x4tEG`H6O=4&Q5AZpg%Imwh}y6hHrm|Nht&_+zR67mWWy=lW+Hf*?5w z>neT>(NvKUTGEudP0g0T`l!|+37nv5_0}&R9(lU(@T&~$ucflRHY`x|X8nBmgBfDC z3T`CeywG?I4KSM#k88$8D51brHEC+}NHxTS!brr>nR^U3upQtcCq58gWc`xaS!wWT zfjQEr*OU^bZP#Mb8?MSwF!?x26~b|s4fsab1En> zxT({nPBW`&+38iKzyuG=fB5S{jOSfo{NRV_UrD6F2yK?Y2jFoBLWF+#ZF(1Mya9hJ zR=#(TOTk=2T@81De_voemX+&A4tA9VSD<;4LZPo_!I|l+lw=3flyq+@ zq8;ksZ_6qg^VqHr7RQ>n^%Wl}F+hX~VO?tf0tH^dU}$oK@~Z#(!phaQU#D_K0?U}G zoWWIHWOX6rdXL~Byo?BAVNg%OV8D!U7~G(>BNk>Xk3xg6ZrvgrEFHRbad2OBMWs88 zR-peQS+k5tMb`W74J$he07~8olh!TXVf~)iZU$@oQ<-JEEgy^<7Tk9WFq>5kos0pz z&FH53>jkrkFo)K3bL#CqN(7wMmjMH|_e-MHz}M=p_%N9$jqUYs%{?nE`N~Gf9i~4i zAQ$0>zLdO^sr~|Gx;8Ui-*MMZhARn0@JxDJ>X-iBThB!pYd={`R{6L0zbZh=9N$w5 zsPoqPkn6~Xn)v3bRxtQw51f<^FYMQ~n}hMUHtB!!E=V{P?KTvOquOhW0W>x?I*y$ol7%xT|o3G7o!R7tp`ryazE{II97|?XrUxr!s0mAkF zCG2YdhG@l~Mn(*jEb2Qg`c%t$P~K#1r&R&g8U`R0@Cg%-a~xxEMbk znW<*qM$HWE>D2(_#YFA$t3&GWkW$ebr1q7W+-y@dSKV#CHX>(qk&2RT4o~ z!b~-1L~Ve6wJEAc*_cn=>pOxVUayaoa5YmxH|%8z$y37GBMhwEh^KMRVUeuRs}>G-Q0vV6;3WDMe@Rsg$eylGd6#=HSg8a zV}-INO11qThWIj}^t*-c%B+qh`zU9?i5G~+onfP?nGbd~^}E8jU{haO)JxzqY?6HY z>WkSt>aklO68L@PXnEiaE`zDFjrto8;EM~S#CiR7j9eFwrHsH7V4`l5;;T`Wc5ZH! zj=8CGi*+`#{X#}Iw!x3U0GqOvF@utINwa}*z;-2ZD!b`uA`basa2V8ZHKDLF)l24r zkygnXDfXsmm`u-zIenMW!(vhf^<%O8&uTF}WD+rtF8zixyE*sTRUn zc{E>IDaX(flcVX;`+6(@_~#+)uroUUx;h}*9iQ?+i>d>x<($Ea%W?_qzT%CSZD!$j z;-$bUgP*(1erlByy?oeJIpWd3e^-_GG~Op?7IIfzxop(+<%xcKxp2i-Qiif^q1moSCAPpo}o1bhBe!Byf<*fOf{w*pkxwB~7sQ>8FxNdYJ~@w5R+Qe*ymf#sm)H<@>T`UsfXI9&sy~%Z6b#zZH6-n) zJSOU+4}AN^D2uN()mz!vwMPmxSuSbI#T_w;b;|X<`&X6!Benz#IB>{~PrhS^%rFRW zQypb+gK7)Hl;c+%q$sq_)osCo)q>-o$_~o#{mKFX9~roK>Y(|rBz7}#CIw=q;=ZXz zL_Ql#7G*)El2AAoexCWZbbDri;IMmyxy)b#)^t^iiWdG$p#VIy<~>@#Q2*n)CaYu~ zsAH4BqwUcCcL0i$kD8N)_>M7#P(*}2n^@Ht8zge}Jo9&_yu#cHMyE90Y)IHA=6&_= z6|2*$8cEmRMyRrb6|l#PezINTjNjAbLc6*@Svg&eDPGpULJzn)8ln5&VGzHrlC*wd zr{}sbi6E@DY!QYr8S>8V%#0FePsd;NFsm{#BFPf5#Hy~~#jjMn*hIFA!o>^RhgT#$ zdW^BNK)^l@swuc#p)XGdPL)Cq=&B)nlGW8{tyaia4P*VUHUx>nswDXMyWy%|+l}&d zA?PD)@bCWzz}gz9Ftz))%DIYb6$xMOPM_kao0340qpOlXb5D*($9--HE)7&dnLqn9|1sc3a4pFUO_$oPMn#Ezz zI0h)OBRn=Q(OnZf0i;2p0X}0I3$y`P7`V-J@xJ8no~Z63Wrl@F7$^+f(yq_Mn7jlM1`G>nxi2@YTDkuMR>2frRT?G;!Y;>6{jk_t zmVSa0peq=wV~Bj~vZ%t3chxY}Mh7wBm;$NIN>?s+FwS!XbPDd*$-@3t`v`s&k%^p> zeV?%2aQ&uxb?IQ`@IF}@oAJmsj0o2S2f6XvY~2yVkk9K3dR>u&68Q^898o;HiABz% z87r?V5Qii8L6T5;g2ae%61JxJ5=Z-sc-|$j=uT{ZQIL0duq|5TXnQDw-SfOzs6Qae zFf3qY`8C6bO;x{g(>7Qm@J#1{@joDCL-=CHXp!kX4_akg-AZC~B?EB|b2mi08mumR zQyc0xd6jml#s5zED)>JL|KPwS`CR)>p-g0ESb+Ki0Kg0)$R2^g9Q57m?E3G&$x>_- z3uW}8>oVKQwd0uRh=AtHsnsgL4eCy)ONlFLCqNzsmXm!!q2W0*xnBs~)lBt%G&3fg zCF;2dc^bw-&nW;VRJTzmp;^4^>cea66JC~EcLVsc_^O3VS8mu-*!Zf1`P*QEuB$p7 zj9-}RStme59LtjYD8kKHLATnnt!kaPAn(tI*DX*vMCHH}m1y1bH^CVC*bs6I#6GuM zBdbQx3Ij{1jLXJN5&5=rZdST`3I|@&eHATs;ZW4xY&#-A?+!2wSywy=4JP=a`*vvy zgs(4_CBj&+>a1hWENdb>w4l0ncDcSNymC{nE@%G){D%T8xLrp{-;x^bCyM1_X0C*b z(lHom#JVbQaK+*nlxrQOGkamXU?{;t<6vO8jHv>Pf>%O=w66d?U(OSh(XA%P+Qoh1 zyshiF3@9-`K|Vq90{h*wgG1uRpb*TY zRndVzLndCdrz~(ne!XW@VPRS6?E~_{jMrRTRdKi(s?h+)Koae^ZHZtX-1Ocul1Led z)dM;CxuG=k7l2?zKlKqXqrvqFR7aUYYKij|P5)(T!EQNw8JIWfAKetD9rt)l;Y#Qf z;u$;bugfiSj{&&Fpxx<5u+0UNI1e&~xWlvrFeVhl$^!KK@oB9?{iGdjEPuLU7o^^U z5fo1F{%eNdp3;f4{)hEd8I@Hasd7ERWI)W{mB)}@CUVMYQ|ZXFP7FuqS&-JrTY~`T z6kZ0!)n%ABkG-hy?vJVOK6%gCo!#5kLs6JN8ysOoDS1_Al>k81&JNFaJc^Hh{1|co zd_q*4+`puE?^|m=eqRq9o@TJaUVRmVt{nMHYOj~!fGu~V3iezc{)T=XuDuc3!IY~KHs#2O#E`CSo@2|Hm|;G$N-umy@POh{Yoqr zBuZ4RhnyYkY+YNNR$W1}+0hvm^6=i)%?V>D&F%$TwL==`yAUzV0n@=0EZ|D06g(Au z1wkc|J82km`@-ul%yqNBbTxz!Gk;RO|- zlCqSJjIlRRN(t0bme(8~Glgbn`*RB@&dpPGm1190@?jMR_u`gf1}?JHAcN1;kfBjD zns?PBI+d$X^i5>L>E&P|wv%^ep@8-LB?2e6ojwLsLgUn*wk)ieTeET4kZgrQ=z2`j zAVm=Xiy9?yp&PNO*fE7_a}+gKTvQTI*WS+B0&z3mRjMy9l7g7c+0XR|h7Q2ch^Z5U z=W>b!haw!?k9!gMr^6er>?}SM)xwoHwO^0{)tz4(t&Ef@P4fK+SINby2;+I zq})}w^F4H)DY^*=SNPp9`TVuB1PyK+n^7d(u}tO60k=nwnSSTd%dv3I<&wP?%pUxr6pdW ziO~le*QAvPGZ2X3U_-*s%CttXyH+g?DlkBA7rRT}JThbj6imS|mhqzCN(_+F3CN~|cSZi( z-gxMa3%J&>yegt8?~U-nfSRy6w!R`BLo&5G;G58*6vBw6rgEVu(EUXfP7>0ghWfg! zHi&jU69GZ$4+swWuK;!ka5Yd8bSjP%04n4v7;)udbs#|=zu3W$2vZ&Q#XfBMf&m0wF5=lGW0r?}f}8%oYN%lW(%|m+?D`l1P^dw~?4(%YH(SG7BmTVLp#CIBSFeNGIWf67 zypOy<-!S@KpsI8>bFSx3_RJ=GV)h{!9ve+I@hOV+$*)NY7;x7brJnSqK=RuGG8h03 zs=C+Q3UuVShPM7YCFaRoVX5y4nUaYsTt zA?ATaU>C3=lH$M-Ke}#rE%JKH#PH3{BM+#yU$`}BU=b2tM`{cfa2!tp?z(7KE}8FC zib!~Tn5kb{s6;i z28THexZMl$WtC@)Zpmk`&q-kDJK^$B!6YLjFY&}b;iEdDkb5Vd^<6uA149ZCS9 zQ`JPT0yK=EbvUksO|cDH!s0l6^AwB$Eo^7dGU8%UC`!QMOH=?|{Fmd7W_7x{Gh71m z_k}-%eTNM6Ff?=CJU=sg;4F|Mdl4F>(ZSL|F)~XrezKF6*3C-*4vdzSd z7UD1v#>Kblj_aX68aZe7X0P^>FXb>>spQ^c3uOwd}M2P%~)3=+% zfr%!6I0s$(xXCDHRJU8_B%p5;G*T%ym}&Xrgq(zZVV|C2RTudcd_QuJ9+iC!`%6k5 zAzkumC%9!xAo;ovUmeh(+^1&xT9gR>T>-~(>DNB602zZ@^q!p~biB60BC&W4tY)Dy z-wHQH5C|I^bKC~Xb(HFjcN!{!8245RR0lHh$1#SHc#0@%SfJ{f{;3#d7DZ`+8Qw6B zFW%GdjfPXWteJVgLf;!sBgIbas5Hn%TedA)?$tlDYPn9;DO)7Cs%oI|-k7+I^5<4p z&7+E$Mria{hr(W69VHl=wQW@H=4^VP+>Pj|=ode=;FaZpQ)BlSRy ziZGju%lVh+T%UfYv1sO??s*25qLpOLm@Jv@oKk3>cczl*UxR(H!K!$sKq*)N+z$nQZ_C6I_S2n96T5oh@}~5mT=eA z*@?~|(hLq%#n1z5wuI$%fnPc* z?#b45S$hDSjtU%Q40>ViII1scRa3XQnU!NEcjrbce$Z=-wrpQUA*(=YO$%|0H9d9? zOZmlYFNU{UvNv&UU5x!yU0f3gfY&SD-#a=FD3&spQkB|!TsqvpH)QTJ2SC%#l=ry5ir zQp%+D*8Q$%jT7k29~dA*?%Nq!JqD&1DEQVyH+)LoKJ zL$mwoqU)eS1Z82^9+kCW!uA74#ee>;1U?Q|LeB<6e70olR+!c#h2SY--+3591GX2H3^$8vFi;j06H~U< z;7IfI*QizI2)aX4BhciISXZix`iZG81ZE7Lq)&#&jBf}KDF9qHboHtjXU9SzTeg*2il z3C^u+tLqHP&}2)BuX|guP48R=jQg(a4;Q@-rN2MOn0?=WrlAp>k(hEr7d``R8~6ye zH1_31geC)3U@;hghSa3fDIlUItnX*7!(wWTPz2nf$YY!GR)MDwU}#Xl1`gwUKbU$j zc~_lG_?&Nb4TFc?Zqyr`XQ7Ov7AqnWa!7-|#EFG`f^~4Qtx6i)NKnorp-?mS{y>0a8RGX+H~S7mB^e@B zPA86w&8k*E0Vx5i9u)%THZw;Ajpe_0M|9o=gh&A<)1$i!rfVE9wn&W^lo@J^qX?#~inX?UwkF1t)1>Nto)a zf|j&f0w#~RZ~zhG9Z1Lm|6jibOZGdpN;K94Qf+wv$nxi9UXY&;03L>=cB42{^?fzg zdP`Ny0IT48ZeR#)J&aX)Cd}m}pV2>3 zb|}pX_e4f;K0@Ao4yqstGgk*C>iWv zHwJ=F)Hg2CHk^wIId*B`VvH%zKPOd)UmZl$Wnd9=E!kuS)hk^egf@cdAQnv}c>t2$ z6sGvaK@b5IP$67AZmwk~;*&htU^?q1Tb1YXa4odn*q5^DJJwk2ScGytaW^9u2e*i<+^@(rFO zT|9Ln;r=a{Y2F;3M4zn2^V#9Qbsj1<2y&hVereM03KmYMX)a+4*mc=b1bQS8DD2Ou z{(zBKtE*(A7pi|nXW1!Lt=hn35LUrw@wRhY-C~oy^YVm~jY5%<-PqO3UkM%UHQ+UB zXWwuY6WU%#uK+h-$h<7pwWDgIe-J4MD_k`xes`@Rqe_$f%$!?|^PfvxE(gX$ z$>~J*^-DKOv04IFg_f_8UPXG7pD#*OnWn34e&2}}YF>!y(8Q%3MOA!uR&1}nT>AV6 z1$2$tsgs;LNLQI2&1Ijgy9>wt!Meh?-d_|%x4?gY|D})pJ{rMI(ZKTci#Qg(AYKf3 zDOfjFF{r)QF!&{i^7>yHF!J3Ss)jvjXn_AXP}-V9Vt%eA-5Pk_Q-EnZV_e4#LRvMYO~_a~Czf&n0$C>(c~!g62$ zuixBOSfCE=K#C$T@~VZQZVAhbdY0JK6?y~Rf%I)r3O>zkE!U5MtLf0>$BWA;%a{*i zr@YBWy+zzJ@4Au*1_IPDoOfMbYc^Qy z2HLt0xbPs;E&~X{#EtKF&o#~VZq*91zrdj18jkJm|4?7rI>K5@_fB-O!W)Q=1exjx zqm|qiqMeI`fqprB<>Z~pI%KL@baG>4WS~FmYMz^!TqB4T;H;^hjf>h!I+|00;YreU z2|nVhdBezzqbVmxqyD0Kp{oEOIvR2p6o_b2m>~OfRR^2#@4$o! z12jDZzc})4_z}hb=!#25E}+i4C#FAq|_r@>;V0x!&P~x zRMM`ithEBa%Ir|Po0feBN=2d+V3L(Z3OVAG(8|{eVq|b#?I+H2upBWW63N5_Q>(Wb zvxFm>y{eOy2l%Uk62C79a0JtJmxP%rGeb&6Blcer%h5{zuF`or5>hVIuB!B?r{vPL zn`s=yO!;3?cYLsZ45lD4o$e2QfEpoCy{hFcD88$pu0GUNMI~^mejSvJFVh3mfXUW+ zp_GIZ+0~-Sxil!dJJA^|1gf$;(Ys$8L`zp;^3=fHW*tGj)J@dSneHXls0fU`Wp{qE zr|(8+rfu@uYFfB6f%!9fbs2=2$}c>Sv_S4dKy#&f^!E(3G+43QDt$bpmEn4EkXST) z0*msn0~jEJz9UY37zhJH>!pjI|GKg|Gt72m)eET4sMcJX1z!cdYzxSHTz09oFrJt{ z%+V;IyLa#4D&nnMVL~bL6uwW+jo=vsxk*PXGZ(UiiFen0842kWHfJh2w(mMnnZe)PsoPTk$F~k!-A(T7XJ>c!gK!7t=!(GP)vbdC;GVGKn+ph5vGkJHAoWH4 z{%L=0@1lA8nfAXRHdDR+VFX@Gp`T0Ky4803GY9@%{qI zTkpN{t;EUK2R)wv&;F~YL@o4l04#k50+!qsn_LJ3N|=qN>?;g_tHdqMZQuY8EJ~bW z;bsS68CR>J-ksPjl66VB=a2J~_;3X8NZ+)K4+^W*abf z7$z9Qh*K#zqAHdRU8f2HG}s3Qgm(xO4B&IRbntKr9FA!zPsG9iI0a$l?FeB$msd$8 zarIZq`cCQV>FQmGq07L^bD;Oo#<{oPN(?DR9@{#x_C=xsICvEV0Ym>{OtHkYZpIA-&15;=bkUX24iMBk1?Q}cXuZB5Ro_S}2YU2@UKrTf71TB9A ziWMNS%t*{HOBo#e%b9y$6$7mkFxo4$vjzMzxxk>o2xt`)7RBWq6B}ZcnKL{S&aM{^ z7oRf=4mz5%6V5cv*Qnt@v>b7Px!6dLI57#{l39{bMZXa|0m!C-5K(IkL&dL2Nl|OCA ztC{k2O8U>(Y)U3YBWF1T)!-Ts_AP=<85zGWa?Gg` z1@d*zF(~Mq^w{3XU<(-NfxU+vQIzZ)g!G98H*wlE&C zR0~^2v%u;#Fo>YESYS)r3xXZ9DU~Tc7E%riz?Pb86hln>xS1)qM-^Y7R1AaXI;X3; z`O8VmpZ<|2<50CAsfZTqn6ApDd!q*A0~`%-g@xi4a@7bvntWk3id|5>c>K<3N%soE-1pYsSo^<>-$_RTtjJx+A zGL_VM4@|hmt9<|#XbyxW>)EO^SbF?)EWpmn$tGeGKvpacfUg=bz$zj1MK=jiGG`+o zHksw~1vMUp>F5O0D3>ll+zE0B6nY}cuMeOOh-J?)O<23Fb^e&)QJ1_Y_~sA2COGQ-Ix|GKd5Uqv%|cYGbMR>x6yq^B#sB2m?RF$d37dtt zi?2F?9D;!nQDAH(YKc%mE5VPzz)V%b63kTENz;(EOmh3(}a| zYGq*HFeTbH`&xZfZtMQkfYCC6`7`ld3B!5^&hgMKWJ=yuT%i-RUGFd|MWpHn*T2zK zdZ}*PcGjFy1zyGF=ZKI}^3T{3Cc2bCGBU87b`=rsSJ_FqT?&|`?uD-ds(mJcuxiy+ zdJaEyNBbWW@j{a^^|Uri)sqTis%u-#N(Z*+UP3GoD}q5`6?g@hs(}+(T_gk-kGqEo z#Dt)zMEDYziVU)_lHg(48f~8n>0PUG$`Y;y#z=tXjh%xg8lunKpCskNVu_cH|CRK6 zsur-B3@jvj{rs13Y8EX7DvdwEW2Ro0>22|BAxcH*djjU{NyIC5Py5?Dyr`*e3Y40` zuT`1)4;E}4)!J>o1&E$&8)7bMDSeGI7v><^X9rne`4aXX;{ZMhG4yC9u-=0>-+?&B z_<|UH7a}xGN3FOtnefY6P#O!eB?W+5CWy=pHi*3kXf<;k(Hgd4t+Vv)8DF|G9Ct~H zrRt*yeuX?zfPPmE(6+N=4spVf*|h!;3A;urWogKo8vS-29I2KIcCsuef=Q4ObzB>64MJaoEOG{zb&3{~8ep10m7oxSqR}9k z$7KTqdav)WD}Y@*>IB6y3rO|35jV!J%Sh4e)U|eT%l07v?8VWd);;{hc{q(3G6?Xl z33NeDez4TY!;#DspELD=^1MB+7T|sl!dsjymFeQFE4y`lqvCfpGHW)^j;nqlO4W9_ z`$+6vwUyds9>}gK>{*p!5b@+ko~9KOKijC09!z$zoOHCmuDT+PT94n2sJ}EJ?XJ2wSdkj zNWt<kDR|WHT68h#k02hjquN%+7eQ5jUbn)0_< za$)h?-UfvVh$jA0d2PfioJ8D{%*H`hjb_*$PRfM#;!0^9ArH&DIP~W(5M6Kq_1Zg) zb&#doWfra%6XC4>J62ah*;jtBNI^kU(9rrAdAI zzl*OM-eGwkOH~dssK5pU$aG^DFqZU81da?m=55%E!<1kvJVqEx2OO2F8^d~{doc?? z;&RF#)>=ekAI?orHEBfmm81Us8CEUDX#^m%GT0pXT7p%+b+In|Iv_Bk!Mx>o^>s0t zghin|BqhfSnY0J-ez8Dx+L2pnjd954hclN&ot zBob*$I@mv!!G2LqlMgmO23y-ZijeftwALrGN9R{mn=Sa^ zyVrU$2G2dorvQIF-!2~xtXNB>8+~ax-;KBK0IQ10h@miumAhbF6x@i;I+&b>o%gBG z_ViVSh=|_aQIST%^EG`oqsry_2o-knk}lr71F59Z993r}HoRIOoNBCCwM&K8@-%Te z18DsDnP`&UYy<%Vl;zq(0t74l27ejRs$=0iotpSb_pDS*Px0*6)f?&QmpTU|fik~o zcin(kWddMuyXt`;n22>oowhK%cu>E8ZP8zF?h#glN4LBBvnxSE6iXGrqeSAs zn1>|(VL z!Q2=zLTOxLFgFo|M`o4mYlxx5kOKo2+%jZcHZ9nOj1^p0=uJdl7c9F7?!WgUJo)h` zEMS@fhpzrMj?VMNYRx8b629H)!pt02l&k!;*_smzb zlY;k7A=_q4@~0YF@CT=A6y=!NhwX&{Vy$ii_2BUfw0+)9+hm2LQI(7v^&#jT)&~Dr z90vF-7nm%&Itkc{7uy&W4-;>u&&XfH>NuJ{O5cS=gF0WU4J1P@(?dy=bp=R^2rPUW z`*C(>4h&FuckJ%e&`EoSj4%D|Ob30_yv+62DvdJwRo&x}QC{vd*8v$(tvqMwcYzAUqgv$|Q|g5N zQ;R>Ew?gvy-Jh4*Isq0&(Fo4Np(x@#~zvcq-PfziZ@e^29Kn+**=#t2 z{sVzcfcQ0ZL6Q}s7-6ZLhnl-FlCSF04AntdrbqpbKkY{c$JyoBeNBNAJ1~zrQ-rgz z(}GMpqt=&3MlG7SkH^rN-l{zX1lwO*MXcarH!;RehL@zOW_`sRv9%Bvmbd?5O6wsX zKuLxo-C9?RYL7Emx+yolRZ2sw39H@!92JF6eKtkqF=-6kJUth4j0j+$BWYMrRv;pS zdSWO{F)=p^2N-L2_0tg6mN}iufnlCZ362D8*GXx>oVMgo70#_E+L!J9BmuVJ$By6M z!s#o9@(swa*opvE*Myw$$Q3oSXZIM2877wqOY1Mu*pKMHtyqXbkq0JP13n8 zj8V3HfhKo%8+amfccYlDS%*5${uB2Bj)ZGHly8o=37z|o5L*kEgeI7 z_(KU8pmB^>Q5yOAc#6YU#8TofY#t@`-C$wz_j-RKOA9lJr9aq(Bd7OlWE818Lql%ZT=2UAC*ZHQcVYqJ%szZ1)Yg~Ugc^_PNMyx+l{<-WY= z@KyETd&gHu$x7x3)5@-8))skxG}j+{(E4u$R`vOPD4L-=wWgtT9|SqLJJD3%8+}zR zg^um}mlV^Ee}RZrQPA&{7m}jbWZnHsR}XdpqFBWb(~xKn6tE!HB=tqz6%Kx+71f5x z!aEF@CLnZbCWiN)R0R-TNC_rEL)C7myOw3h)QHKz^YtQB2%Mt*EiO!?_HPH#oeCl1^iW$@QHMPQ3)tZfBIkPd2`^RY+W5%gRT=O zAf@s{1_O27hj{aqh1ccDQO&9r^XGUHQo4lgs55h$3O~#H09SwI$%ppD zgz86+=JQa1)r60Yu|~!wK&p(%ZkQ%Jj07dWCmFRy)t5F_3lBY>=hTI_wLDPB8Nn7& z#zJ;@G3>u6hBUGbQs z2QBtNJ{eVEA&i%OS&UA%%~b`}C~-w8%VMgRtQ6JUo^%rNP^vGx#ik#tPS}R|#|vB} zwnJSC6=I?SHQ3#S)A>VvOJC#8Kj^8ipbzfkBB5@^04sv?0tLt1ArP5 zxC$M-M#^<(zHfjUszI|{Dob%5!(|4D|q`!dhqa11Xc=cxiek@}7tJz1{b zPWQFK@VxJKBvP$dmb()4oWf)uP@PQ5!M-vH0Dh(WXPWjY`J*W~NnkNoxFdDp11QgW zX8MsROzqevblv zui;!3GVj{vn;YbaRZNoujF_yTO!>n8`%&?YM0Q=f(MJ4CDuX+#MD_l3E^(p;3@@N6 zUtStKt>Yc7!;Lo zF%N2qI2#HgjS>#no)C^(3ofOG`=ZI!kjfY!9-V*k1CA0t^OZ^m0Sw6M690ETjc7If zhi2PL;B@`!z9@)Ls!dgBzYC%>*CW=Nh?17cAYX?>%=BrI>HA6;;D`Z?a5sIikXIAp zwqz51XH^Wp&!k^xQ$oeKBZ?z7Q+!x7dq0r#{=fJ-OOpq$nr96^!P8E-?HORC7+O3F z#p?mdKz$JpPe&JHgOh1579;K&7v#CQW5hTpCs|~XR81+>*dbxiwNo6`h{!t90~v-5 zJlZ0GaN2c}tc`7;el(e)2E3zy9g^erFK53iW|)zlOm>`74^&rQnQ>o;&wXcncqmfJ zC04E0hDtL?h#{$Toti3H6=q)D8E4Wqyr;f3P&E#XWH9fX_V}dGaQq6%2=S-7Et)c* zwk_jt4jT$cUL_}iR5R4s@VW*O91{hP|K|yg^{y`WH0YalPh;)uzSO5$Jw`;NwsNhp4CcAR?H|G>$MhhAX|v*3%m5# z8eVIc{I$d`&tnTnb8X5E7J}2*Q()A^uWd+ryml1FpTg4ckySDHUhEh6AEyLyBWAF` zYLoOmiokah84AyF7NUw`Iaad~!Z-n1fbd(I_+2&;hKpU%QO$PC?jI`QWl&S6R*wJQ zA84qdp$a%kfqXFD*LarQ-pQX8RY)~}4(}z?=wGJReG2TOv2?JBB$Q8u&|{%QA`+UCIbFoHZ&L-JzJh8hECWvKNKzCL(E)tt2(`*{7W$K$)A z=-O6*QLeNb%jNi@kU<8;URqk;aTsJK7QXK3sR*OtiSD*&!tq5@Oi1{G2r}@wfXE86 zg8b-FTrn%e*oPH!kc^VN_@W$vU~^%%=uLY8jPi&eU^SNHSfL1`)7jOk(=`4hV&jsz zfEfMGsvuDlpyuF-#bUn?V(#)ixDD<B-lfzr*UX+SDd|0PRaKd=XfN{>L3E!vb_@}tR^v$Uyh>WF9!J1AD@zrt-xRa zLQ+eGqvFOAq*Fwwx98&3`{0QC=kh0x_~GIoF=>g4O%unT05kyg@Xs|QI0*22G?AjE zZcV`D`4mh}d2Q}(zrV7}0DO)rKVXe4xKpz3UzX}G7yD)1nrJ4>YEV#Z_$C`zPQ)C9 ze3`I`V=yeiY-pkg0^lnF%>RTW-w2o~6#01}$yYH<9s2qVi8-KZWo@=uwV+-|=mQ*9 z`jTM~2~LSus_<)A?upf~{y{)>{QIdO_bE7Ch|>iztB!ff=vf;&s{rrWGXE#|DL;ig z)vUxWr0QREX_^e0a;Rc?@;Ij^y<$>wk8UcHQvs*afBUE7QZ>cJs+&^&BJFDqtda=o10BUq|SmY5i(*3~hFqxbupHC<2yyp1@g(z2`l+p{ru z(8PMCb;*aJ1OsYeUxa^6BB1L`5Fj4XY>Jy=a5nZm)LU*v+}=gqcL|_3ay$bM##_>5C<9QE*wz{d6pBrYm)^}&Dv@4e>% z3j+!eLscMb4a0&71`i`rS_U2_EiSPl#Skp%qxZ2eb)pg%w6d(?73tm=5$vn;#i}q5 z)kE|>QE_!W_ls8->TQ}}bS%2RyuU-RX7MOuQE;6CEl+mo{T0?ITUQO9ss-WElLfzk zLQ>*wcO$U-j@aV};nrQh5s7cGtR&vgzhbt`B9H_l9z=Kr7hj8VeJ*0yg7D&D(d}6v zaZ;XokN71DEb>Od*%x&t3M34&iT+t3#srCl6Zlsc>?ULr8l+;d>|@W%Qm~Q;4PjFn z&Xli;q3o;g4GM@cV6pCpmTz|}-vv^Y1oyPPCq?8q^)g)YbPX|4fg8neHTb(;XU%GS%WG`Gu*M_yV?8M0&CIM{RpjF@w7&5EQ(F>|PBkmJKP zi9bYi8%WRI(v4mTU!$2skALF&tP-pt{B6(Nsp`mA0t^uaEDA=$naybT+x@&H;@)Pf** zU%tC!?b21Ju&@a72L}5_A$hS-yn(qgp$x2xgiETax_&anJM9vygn+@WWL;JXT$xo}o{`?a426B+zC6A3+nss%B^AdGc=jFO{8vK4ajObw z5BFa7pzB?_&8h>AJ{ATlUV`Ctsqa(1qoF5S=75q~)7cYWb!~qUIGgH+9qhk)#vy@0JS3T(=#|c8|!MYh!!CtFB+0hjrJw+Vtx}nY9hP(@?!E8}f=@ zOt9CEabH!0J;Gj`Wyaq zK)x3au4%eqr`Lx%({@q*x|H|gb=4Saxdv@|W~Tb6Oi|vKG3ucE@KGa0x5(GCe`6+T zC3P`U3oo@7Tlxxi{8y_57sd@`0RtOY+%)j&PgH`R^!Osq9F7dA6I^bG6JEK%edk(43Z< zO|wGyR}UNuT`RdFSRDWVw$k`r1*Q7>Xl`rNRv;GV7v%!Wid@veY?jKNX6M=~=TNB==f zlzv@v{AY;9>cvN1^#9J-7&~NqhN3LJVnMH=Y&v#bnbfSOKbR{P zB2;~RvebE^1(Nh#8n7e`zJ#}nSM#^}@47uwLe;%%H{QQ+%>ti%0X6sN7UETEH2bT9 z(l|V{ePV1$|7_|#l_N2+y>PLysUbGevvW#tXl4*#CYo!cGARwZ&jP}Lf`57@L_l|M zy>q(C?N$DjTIb@D&^%P++7OR)Eyv-|{{l)F@d1rja+=|6h0?;=;A;VbtzvaaK2gNk z|JsajUpAHm>2oT8#-QJ6ncrk<#`V{++QAO8v`a1#fYB9IkP4fiZ5t+S3-Zcn0Kx2k5O#+JBCADb*HETn-y|m{~IW-;dWgO z7xMEN6>22D{qW?>V5#ix36WWq0_CFeU^h?%Vh7UPqNB096`R~4X-<2dBHk5SQTpxSj=Ry6l+ z$KT9Jm&a-M833hHRide@(YdXOJIUb!=jH$%v^CvR`1X1`F!J%$H7-6a`Sxs5o`&3AxWA3z8ndS# zt)5@#3?K!g9>(;ZX`^z(yD((Q3Gy9{!r9uu7{jeWHooF4`07Lhi#YlU1tgLPt*D%4!n4~gW@^Cb9HKZ|c;ZrJ}W~yGZ z!d945mIk=>9*pdBR&=ntxL4h$=)52>_q10$X{z`;HsNMX-#N$y7l93$4v0YJ3GkO~ z2Tcd6?5ZPP-IeP7LzX&^&S&B9bU@p6ggtOe-lIfID7wXPXV=+D@n+wOs9x6`jOPI( zr0Af4k^+%Wo@5}DRaG;O*nAC~Rgo|a#JXgjl`-cYVSDVjmy(!Pk;7+-NtFYf?5o9C z3(#h+eqeyuP4 z3!;_nSmk|2%10{8f`s&hyZ7kTE1qUx2pdcoy}g-&-5m*RyjiXH#Y9IH_$J#766ROs zp&@v@tA0feu(9ga4g|QE>uzAb;_%%earaBjB10Q5S(3;{7%6iAKt+z`H$*TBaQ<%c zKLPM+;ARn(aEGT{QkQ&FRuY#6#mxGt^dhJH-7z&ytV0I}XBKDJ48cms5|9=Vn4a^#j{{+Y# zRWUDQ1H%ROi3+3p-*o^;{uSV!ppK`P8&`?LCu$$Vw(+)6lFiCbP0?%!) zI4>eFaffWExMQvf9{xg#CfpUecPQ59A&y-=E+!0upc)sYZQu(PVgMCtE?Y992B^BI z4;CT4|JN2v{yNZRD@Yr;Y&(FMsVvnRoZbz}F1FU6?aBk3xsA$9=CCa471fgZG8lgt zf$6XRLszO0v2ZugwDJFn+WM0R1}3Ph;2uE+5$yPLh>-9J`G<5EGGQwj5(1ja)t(gU zy{5{+h{AC0-7zFn#by{&hoY3va7GjuLqzWY#|-p3$DjRQh;kW2G^7UlpNKhdNAy>D zE_YQ@eLVU)hLL9~TjF(#r-KB;cp>2&y*d@z3Hvn5Um$}204Vnz(TDKMFlcrQqcO&p z)$h2_YpV!)23-uOz||0^>MET2=)R(#%ZM+kH(eQ^bUb#pMpI2kB6i&{U7y1v&cPZ?CONM+kZK@Wv##A-Z3Zp9B{ zF|TepC!(>{NliTEd+WsI-KHfeUoFK>Ap#I5_!;t52%hBZXkK2N+^Ea0N-m95Bn%##UwzZ+(sFY^m$H-+U?i5F389K zm+&@(!(Ze45m+P@Zx3;(QawZoY@4m6=wAqiCbn5Uov0LhK-Xc5tj@DDC_KGK$12yo z7}OvHquU*QTO+E#Do{U7&r_&&-j$P&p!~_(^Sm(b_{snD%26Jf;^b>K#YoNH7wl8kx?W04uufw_rjaRi1z z26j)gDr4kgQAjFMIz3VXCcQ2Jei1kZ3k$x-J5m{cbvZh)REuxfcoBrdb~aXbV|@{U zB2^OCDMY;<6Zk1aXpzzkhHl$hvN|UX3Q+_tCW`-}WnkEN+LvU>e9HgacV8)sz zgqfadO%n%2Dub4miYh?SB$uzEwK4O;~=r_T&^S?Z`d;zaV}`f!Ml^1|uX((w;S* zk|GHxspPxnuvU>s0{XVauy4s zG<0xB1SbJ7*|3oN6@eXrCPSkaBNQv1!~lt)XanQS55Llh0*Zhl{hRiQ!>+LiD2M6! zn}J0#QOKm3MPFDHorjHy4eVMgyJbazqOpmeOgihGiDD$E4XE&mluezo1cd=Kc!2vi zgg$P4nA7BdX{7@>Cr#5dP0hp6-<69rP17`q_x8!jX_`pW)aT?H9RQ|jnx-2dD>lKr zCBFTezeImS+*QNxAdV8|72@k&&sVPz#jQGnFW>GyAcVsau!hdXuKFJewfe%a%VpY3 z^%7hQW>X)Fq`lJFB-`V45e}kcChl;Qy3=H?Zc7=7dPQSmyObPWg zeP4(VV&!@5^%oFp+D9SnaAH9RZ&k3mzHPa%{52bSWBuJi4z?P^*9T71+71O8<9<8$ zvhG1T&E6RO&|MBrdi55(a45DEe?bevEU}wda5V-KTYZ&cPQ<-C^|7`WRpEu4aO}3@ z0qRw7-QZ<-yN@g~ll`k5h^5JBhs?hGVE`7d7sGEA-=})*;*gW?Q-kLI`z_*7+YjNU zzg4r&+bVS#s{a(g$sUpwa;>0~9`gd;( z{MCT}(cK;}QnVgy2z){Mo5Bc3YyBbmk398XUBvo+7o)>yCT_*&wOi5xyNCbQ9df5C z!Olx3xhNkr=f?6IK6zD{?qguT6N?vzx@oD&UkL^-O}ejf_ff_B(oXw|j`Y=OdbpP7 z?&!kU;9Cv!F{gE#xbMH3y?4leSCGvAFO$BSj!{4i*8KsMJU{_J%eJ^!5w1{d7%M|$ z^3`2`z&a+>U|+*?rLT;nOMEYQog!HGC^?eq^0>-&;QI{maRo|MNrVIg;NK1ZanOz?ISR~y!y2=LLu+UyL-bJ)3M1R3B@)37jqzT^YVvw)M&oe)el_=D%pvKf8 z^O%{2S5^5#*H5m5!0VEq#D}_97lJUDpNyCOWY5(pM+C(4The0*4p!}Mz(uIn6e(Sm@W-Tu0Ui~kZb-^Gn5fUB{&s_Cuo<$%k z%)j{s4FVfxwf5?Nuat|#_;k=M4gc=%`{+GN!cGNdqlXX#SLE)PYxVM0RQ1uI#@{f!|Z(l6?>0 zN7eI#lURM%#7Kh=laz}|*s@Ut2q;4XyAE+|+E)cJm+seh-{-dVHw#{g@+4&cFhA=w z>3i+Fk9Cvmje?^b>3W1k4-4Lu3JmuP1#RRA+^Y5;x_TZ9rlsC2ar4P16@tbl@2rPT z{Z;h_pw!c+s{gJ$6!g^11LYiNq0qO>@hC z;44{}U3&*et|ES}0XKoO_wCgyKB`(~uH*CTAmnv%LZDfa7%ssT(j;kMBMKZ3bq!%|($M0~xnR`d>1^-wMUn<4_09TfSx#LP$6KM6`XH~j&`5ua`bYR1FbpjY zpM-hd_pYxR_N4wmo}{81hD8I3cjkB%Lo+x=Vz`|m2Y?N6x%%z?H*PD}EEVm=W~df6 z!jfQuA_NT{W3Xp#3}T@F6{Tcp*E5f+FMxPRY8OyGRq@XezS`;<4ugrlN<<7JMqBfR zG2D~_{%Vj>2ARlc^f~9>r1}jwrM8r&(afn`N}xc+4OnTx=tIny)fYM+oQC2F_LtQa zVUh46!m>dLmSu32N&tfl4W8`0iXt12A2FKv>&X-fQRbo8aY_magtX>8s4}vTaAs z05&txsb^oOJlt-of)R(~9JteuM@p;R)llFe>=aBsDxMfKu2aDK+a#eQ+ z?Xc=EA3}A-XxG1}5UZ#tthfV2Th}H8e|xUKWU<1z(py8V4?h=o=`X!lvZfw_!azeI zRxD;4Oenezfm;g+g8xopUM`pgt0^h2Unk2%DVQgRYmkvB3o-;ToykTsc+|h_=npF2n_y zMbi>+_W)20&PYV4wMbVV{p?z(s;j{CZe;zuDj%(v!upym^!r^@GFIzU}_&5XIcZ#6h;(gM+*A)rBuZN$Bp`S*jdpDki^=#|0?O zuivG_aac@_AQ*+h_Z8OnSNPTHg#p6X@_Wu07`Lk>I{O7>V0}`lg5b8f zc6Iv5elWUm^hi4YX$zZbbOVhSL!{P%_kGAWu=FC(k?65NJDohAgzA<@n^rFEpx(qf z8s7rotC39B-a&BoaX>Kes?BO@k{i)1JemFZqpX`&bKOi{Y8j{1gJ~6mOY%^u$5xE zKc_GUTMQspq~BM~)>Ie$>L0nw1QFb=NWIr+RKnFo(YMh4YI@=84p21gprYOa*KArf z$C1XoZh%o%<6fN4ha;L|DndXX`-5GV*FPSGIt}*bTbt28cMaQuN^P!vdcf%>w5WP? z-C*Q3RQes%LZoZQ3MCcGXJ#&6t=#VNpik0b*Q^DaV$iNNI*}-pWR{;8d9@HNhy2k> z02LBjMOb(56ZTLlvh=+#>R4(@S$+B9|B9dzr&PrkldBLV6uOH10C;sxMBG)r#LWxy zj2nmG>UvbJrAAZOWPP{v-QWRNL=#Y|b?Wq=A1fdW4Z^Y1QK^fxv7 ziBsXKEYxOWP#hn(;oOCbX#LFp0eVjapI^6(_gxsfQO%gP1j8Wzy?n_gp-IR+)i&V| zESrCX>SAcC4xZt3WJTEcjfW+!uVj>GOe1;eY$9r`5d(SmyHtWFDbBNHLX*(PqtK|l zF+(z|j+%rfg2K5)f)h+=5=xU(EbKZVn51AJaf~yncvA@3VbEztnAp2ecyL@LK_#k0 z`wF`vf6qm3Mg`hGR|!qxS6w#CB3rI9XO#tX6>cqQa3ay8B)KEfMB*tVPn|&=RV%Q4Z zjN$@@bJh^Muhdy#QmCP&!m4o1uED0rLZP#ax9`O>nzUCpRh6*3Kb`L=cIz51v44|+ zlJsyqt&)ffV z9=~caa9ZcP0;^P{mC}mozJ$32$9MM@`OX&Zr$zna62$q=BvgIH*OP)(9~fIChhx*F z?NLu7zU8YC>Y0r>ijVd>jN<_8fMAH{v(T`ppyf3<3#z3|RTtc9b+NqT+ud~0{YoQ> zYOY8EUC^&C{Dk}gW~9TFfKgX&9nrDsS9mZ0#NuOGAz$wsdIx;k*LN$LrQ9JkmmOe$ z^|(Sk7XWf-cWRj5I-yb)X+rVu4{Z<@Q>b4h9SnWz^=mKjUBZ6-03by_{Q62JP9$~( zJWbiP+=&Q4U|}K(q^q>upH{7^;SB!hyA(tT(jsW#%ITY*n9xDCijg`xH<7|lSU0rp zfs8STw9#w3RM$B(taNn@ROGVAW;O&gVkgkaYz2@NSBrT58y8tokqR>Gi=({&wW|jX zo$z%+F|tF&F}it&S*5nJ$eK!wutyLz^8?F`mA7^9JzJ z+gj5KQ@F~KadE>Nd+a49Z5XR7h5FToL}he(;|%aPx#*JWs~$SKaMxB}+q~*eGSH4k zGc!5%qm@+$L97nkZSBH_dH_GC$JcO3hsgB1@v=2yY4EK8{Pn~zkIlk^&=sGZgHMGh zE-48sWOrLt>4AgjjTCC?HhvN}!f-H8gq@$}`Wbm-lkxmJmrW52b^pi&b${fJseW1| zmMo4F-yB^^7$4p%wE(cgg2NGB#6+*W`4?KSJ+r{QJO`~%>hQ72F)ycXE`9I0dZ>d_(9SP(9KiD?$J?Y;CFe=ck?j>wk z;!LBj1f3-9r6L0GUmPEar8QlTUVF5o;W_PGTTr#sRVZCS(JLleaeR%xPfEb6tY(Gj ziY}(6MkQF8qog4&(VMVCIt2wgHwocJA>`q{?~JtM^`NUB_QLZp9om2@8LGlRU^Puf z4~84c;6<8htrZUJ^nEZ&0RodkaP;@0`}VE%Hr0*KyfUv7Cj@9eK#&uv@dut30p%P^ z`YuRNfz)?`zHt09u&4TJ#jGLdI^1vTrOPsXQhgPLTU2)))sY6=y5FCo9*lqcnTU`O z6DE$3aQgw)=~6m)11gKap;04g>(GmcQ7dmCE<0JM+Yp4)>SmDe7&SR-cNZP|U2)a$ z$YmG}f6Xb!HNzb<%uz2B9mQ?U{UA=sS?b zD`F(>1?nn}*`M}W`!I6eqUbF{xiTJiVeyHUbJ) zxUc5pdhjcb+*mf$J@&v0O;r~5>#3q6w`SC8sO8_Uv$iSa zub_+@#jkLVvC+2;@uCP_wivzp^)_>NPn^5sfxDd}jRh27b+=Y7zitaw1G%_br0eataS>5A!uvH01ued zcU@?!8y~G|P5(HiD_81NF`W-9MJS^2g7SDJpIOWj>2;0Bf>+kWX5L47Gp$$cC~ zbvI49Z!HEx3Nhn8Om$64+deoRAqbP46^TIF9Z6cXe)~0Ey*dg^X#ieYWqAG+nIa)} z*>`!-(A5(yk>9P#IaoB_ZLDvs9M<9M@}vX97-1WbU2&Z(0+aI)7W2SYxsI3uKmEyf zKdYM@F?BDWGX3N=JE;}t}6C1LOfZvItd#o&kUZn>U{C{xym{$GX zsBom}+9r{!yfD;K))7{O(KwE!CF~ggf!lW!OT`vMX?0hRobR^5CP!%ci^(7|X(U5F z=T}Mdm`=dcAB9O&)ufZlI8YN){@3)Wf@g6<&LRdH{FfmqU3gXhg#D%?SYS5R8`tXt z)=;l@&BDJnutUqskTh{n_7Biwmq{?wsprLA+c!>+tKCojg3E{$S-pF0U2NAS@X*(W z?eE(|J2c9M0cmc(XNw76x;l*8UDuLKKCV##9dL^B@223q4C;%dZ%X=UT(lq6k(|Mn zAG9l_-MjDp}&GFwkAZwZK;b{;!RPL?x`_Fr@t z=yi?q>xP^I(}9QRYT@VSfFvO4H&W} zbbG}lAUS9yP`^sbj1A)G2Wx=*rux89@wD|#fI{sr;FN-aAK22$ucIZqU`aE0y%?4ILl@I%6|z5m5RDtQqhQ5RjO&Ma!44Um%KL&f1l!qjVK~~L3lej7 zD&Y4Q;IAbYKYDSy>z2eYtTeZ{UFZ zR4pozo`1o5HUDlp*y}wElP^du05;m5D1}V0Ks{T7g1z;H;K#8$`+pl&)wz`OEtL%H zLk}RA6mCo_OFwKxkQkUajf{yAV=`HLd7dg~DBeg@7mbDLg=nx&VP_l|-~HlP^SzfE z;1vM6Psa*DG{dQM%CkC!Uo&X2v=8ngJQXn1NM0cCtRG#<^L^v63?ib%oZK2(-T#4h zO{$!V_O+Kh4DYC5H*-rIhp1L&dZAbU)l=Hk*7femh1~(KTbgiRuk-C z&4N0vW3Yoa$NwexJ44tZilRy3!m3Omk7{8Gv8MIaGYk~@S@q4EuNPPOi%A(x+*^Hk z_XY%hGg3}KO27Sp>s~calTTxbODrk{JT8gRuX7ids}&b(Ya(8Wpx1>he8!4KuWbM3LPkUaMi$5t2VOTA~-59hP!dY6}cJo$w;T=%P-3~5F1vQz)_x;LoL(# zAE^g7(e5yQS3LZ-Arnj#ki5HU#DpfdtE;k-qzX)vwXBGAsw7FJhoVI@x**HC3Q2Ll ze3Yh_^=+kRiYFvv@auNgvq|j+`V@xlD@%%UOHh@mp>`($d`#NE_hTtarvI0;QVX5y zG-JB>&H`}@Cn%``%P}lC2;wd#*Q+pvdxG_&;!T<|s=2o%4^0S+wSl-A>Xz(vNU4*m zdW)(`+s;D_iZP>hpt5x}fBmm4rVjX;URhhp^ z1V1CO36spQP_{Lu`125B|j3^4?=dex|21{{$sy0-p?u~AIwu8vZzP63B^f?ahb_M5^ld?2&g+I~P>CvJ^ z!QAbptitKOZ$-LVAK&24fS4Tqz<^uu^Cp#tScmktjv>pZwOh_T6`n9N18>!1JF@sC z6AT`A{-P^DC^mdCEU4$fPfEcSl%k*{Y6OT>1yNLYD2D1Xk!~glq~3CJ9f%R-Sz93C84hdS4UUYB=mMg=A zE-`))1%3|C=6Uh;IvLT_X)q#nXILDW<4uu#rC7s@b!86{hSbCkFtO8@jY}f43S)%7 zg!BIUXVwDgO7^S}^xebjhC$B_sjmk8vkKwWiw=aaVFW1Ng27-CY2VzxoL7}th#)w$ zOp5K>M<0A!6&60wVV4^^V?>ta$fJz`04A0~=9}~>pWK;N4PYyd5`q2NHx|gCRISeB zvijr~nSp|XKjErQ9M0}EFl@F5-v5agQ=IrnUFlfVQQW&E{y)6@9T~i9+<&k7msy|a-)dxP#yCpx{*(R@pec z7Q7U+dZc17Xk8nz8qIOSf@xK`%6#UFFTHqWZe-rC5hSK@|Mx8H$JSDh{m3e<84L|V z99K0E{F98sAF7I*^+Vl7=qe{^GlPZHjk}cKZS_yzh3V20#nG<_2}P!^)p?#CnHc8g zT}oFOM@fUF81U<=7ED0G@{1B~4TNoqM}+g=Ua?2v4d`ZcRW-TkpIm2}S5P<)1De2t zh|v$3(-m_3C2D7MJxr3a;i#mFNc@Z}FYVnuzI6B%CZbJi3_8I~?A(3(w29m0>+8_M z7TOdou>uQ56c<(@#7dETMh4Z3fVzKGtt^j`Uj%}Y@1B~Al^g`!hCO0+;R{EC_mop)x z<7Qo`fjsE12V22~=!EFR;ORlv07XE$zss!tTwfkvQomOGQQ`~6?M9_;t^J_A6L!vP z90lpu)ced9SBrIzlmxm{6NK+)XH_J+&Hpbxt^(3?vfx8>aoRB};9!aP=Y?6~FOag~ z-d()j$-u2dwzjkP1n_HWazL=rZP63Gic`)~cwk=e=ntCFnN@X^A0Q{udE{P6HV1%0beLe=xcj3BsPoLRSvqS9?4 zb$bES1sa2$UJY#r?lqgr^04l7bZ!ES8;S^^+h88I+`8~UccQHXLCoMP6k))3ti9HU z?$Sx+ArHYe?O;WAr(T>b&7-aW{z+xkRf+ZDtCcJfL!hzC z7q@`nlY+d{_gwFwc)0C>yRs-0j=uMG&_dwJ1KOorlmkZ9T{R4@G=L~_=YI+z>O3U| z*sY8w2~Vv1_!@Tq0RSl2D81#rcQ#q^%_uHHrQ)%k|DwH0OgO=z3KfK^C;}`5bZ-@T zI*!qNCVH@dW{By22LXueH|yXk10L~3{{$Fp3FYf5fXXUo;+x*wyInKQ37*Hiyx}-P07Jmf7BYCb4fDLqYs3@Qr-kmps4fQ*r(F)&_ zRRd~%p@WIae&c3UB=uL64vOA*bl10q;JS+B`FyVK6RV?PVf3#gnyeul&z2f{A6B@Y z>D~7GeX+sV_qk#l^)4Am^*Y4C2P?V&zpXl``pHf6v3Z+U$gYtYC#NMBY3q~v55rjB zM0OtDyGR7T^~HGCt=OZo5z379+Ib09qg8)p=u`?)S0FniJnfTcK0X8OPz_=`k9?;C zL&Bh6AWQ&O29vAbSgBA*(!?-COIFC8l5-j|P589@FjVI6ad2FlcU?WroU_Dn4?%S> z$nebqW#a?Rx;AmWa|<~6NW|+Z1zS*%)i)}aUu|vC@HX?f*H=I=?DE>cfvXO$yV{72 zw11^N@)=gSzf+R~eMcbT)=Vr;sssp(c5Vh#n`vLRl0LU_2tMy>hA?tD0-|AGV4I!A ze<5&>5^!OryIn_mCSW~Se`sxym##*K?;F^u-{dElwTI`NWfF4r zvqqdK8x7@G5tEXNgNaoeN~z4sga63JQnNsE$%{W$%QR|1e_?}v6>nDZ}iyZN8{Xh9XgUm=R!pISq>62~RE zHZOAsm!|w5XGu>K3&N7;9+^TLzrJfD$wk_===A$!{Z+Z@!yY^N%otM#nU-?yHEpT1 zD47$UiXBw!Uq5|*({=e_nrGY=7!qM}l2wh+nEppAXrF&Emf*~)KhDN!h2lnw^ONw5 zQ>exhUA=*WwYzQW>RwyMCg zzwb(QG@}Xn!WHvqDgCMj7AT>8yNewIKh=L``7jV@il|*x+^Jb+%kcNL(QjW%qRaie zrqLg&4Eb|pSMy?M9-+-ll6lI`*kC(sIF+A`k2&T)-_;wqd5#i@O4aUPIxC0`h&j)8 zQ@>1pA{6*{)VgOV#V)u?lGSzw`S$CY4nKIio04dYaJtsxvnjIQs&XbmIE^Np7oJgg z@EyXk?@9YWTj^>K{1_^*CIvQGFj2kAcSITO)!b_2cnk*q!AgK?xU^xNQ2$P5t zR@_~hZ8dP#*%wk@0DA;S+yLt)*yi^FHWIHk!G((a?^P;a2_-`TR`(9waIk2sqI{kl z4NeD+LJJ8}&G{}S4Qd727wu9*tnI&VVfv~inUM3p`vNc(b>CLx{#(ncE%~cP{fG5_ z-IW(u<8I(_Hv?62GUvHB?VkO<6}_Sqj6kc>v$~^KL}q~Ar-yaB5(Y)~m_rMEQjUo7 zjAD>sV9M_GkS*)GK-7^LCS9^H?@<`9=z(jADkQhV)gIk#AP!9HTw)FfJN(x>)K|q~ z3oOfWF;bKe`Xd{SFhGjza$C_0P>gB12EF{L|x6>@{*_&EVh zCPwuRx3!^a#Q14y69z#8bQZ3YTiKGS_NSBAvpzIF@=?6FMcS8e`8)r#r*jF)NphZK zQ zm2&o;dU0r$s}VG+zA{T(`qnyvfibiLM8r$iT=ig^Fv3eS*eL}fd*3;ux=a3<`sCw# z zKn<2Y<5z0$cdX(vz3U=shOuc|#mCeU-0Ynna-|NsejH^NEHBh#>NH{aja|gz&Uc2K zA(|YRUUe|A%1#iQGB8D&Z(M-gK|mVhpVK4vU?n$DB#Ih!GBxmhQ$BbONKWl`BMo~j zK_<)-|KWr0KA;N*6GjD2Z5f=URoGVL=u-Xb05bahzx1)H6@gBv*l@D}y{ZK%;W64@ z`w{-@Pd6v4Mc@b-t@{fEWCVZSB;=?r>77J<4bqVcqrbNAMR<3Jhe^khY)QHD+Mb$i^Z?QAQqFsZe)j&!^%;@zk{y)1A%7&$9**h?Ct`7 z`)CgtW&%zcG^zHte7LQ<1LF!X?{iggP#A@Yf5xuL;`9pS`PlqLY<;m( z>Q2gPWfAF>7Az0&Z!O?H_fqd^S9wnBoG=+Rde*b5AgJG;X^KstUt(#lI`WG`W(2Z&LIq*<=SeX3x5FrA z--d}7d3~zwU0JCvz5V-wlzEsvoHt8V@0vYhx^TE_m-gI+;4LI>9D4c$#gDhUn(ZqR z4j~HARUvicb*DfK?S3Ijx8P%6`;I6F3(9&vy>3MueNq@hQI;(oFtk|Ied$_D>a`;$ zUXnkE$fm2A6(^f0yq0D}c-1J%5cC@mKq9PingZH_hyc_V{&9$sxPE&@klA&N3hXKZ zQF4HwyI{oaV=yIswQi8OTwgsZ`(Az6&&7?bFaK^>T^>{mka>hu_VR5nkonb$2qPJD z$_2>W8S3Ups$)8W0C83rz=E*x@?`6}Out-oc;#Cs-OrzYH&=!uK>SK{aa;7--L z#MD87*0f9vv_;`QwMG$47SDXY@AhEfs}fUhyZ*pfcZL;m`r1CHyI2t4&5CRW0}yYN zbx;9fe)cV4eworA75Ia`I|X64ca&l1*kyzD{fE!>-a`KQnuk-l!b*3azfaCtlCF7ak<{tL_zK5pa`U zaSy9rUsMHn>#hewbn$%#^HPY9o&1OOi3P4&;27u~nZ^8i^xYU+v@%e-}}t$ zYaiXny^2cv%2`?(Spg=ys?l4_r9-QZpe9d~AvSs_NYBleYG) zjU4oonT^zh6-kQB%Xxdmr(m-1v~{ECF-X=Fg{fn0VIB1z4D|W?5*tF!8$}zCUX9bW z(i<{SNwn3tRQ`>;DJxK*1xotzGe0fbAMh2DFzGL@A5$t{Jlkzm0M_6yE5PcUTsHPD z%1QSp3j^T-+vg4407F9H8-fefBjV&F9{%78)?TzI6vFv}$GkAoaN9S`kF%jumB--M zRiZ%&CH;_twG03>#k#G7J%3-;F^I9-q{p�fir*|4#DW5-7F#;+Cb{HK2noaJWYl zep+GzR7Sg)%M@lj@xut2OaNq&Zxxns6#q5pZ|{bA<5f|%9EOoODqmJvR-{oD5pxKB zN!!oNreGyl4rBEfjk_)027_r=c5!09_OrYU99B4St9%X+-wG8)(UsI1g9Pe($pQ~- z7Fy8!JI;TpxK3nk=XIKy-mKxMi-O^~$;C8QS9@2YCWSuMxz^GubydgcTmc(BQ`LwP zy944&0;U+RHMe7(-#05=E3wnw6I5uq@tNZv7*VS3eqB!QuP-f2VqosWrXK@5A(-;~ zj>50U30q)HfqPs)fh*_dUEceKbh@gzc9kS|ZE~S%{09XpF0K;|uQ52|>o%ssfxK;q zHS+lY>jl+^fu=7qp=sEv97YwoVGzyP3>z98qd*M%%^}MC=DD7hGMD&&br@avj+bYq ztwJo}A-t;QtC?rh7ovdtCtpvJE8S9du)NWTLouqw!PPBPFH5m~?XD`n$Lbj+uap4< z%;KY5om8h<=2c8`d<4e;3Ib{1iH3q0u=G{j5jq~zHc(Kve;9r4?k8)bt{>V8l!d`x ziQM(2x=ZNWaCKT{%z|yB$9K9gRo-iVv8isa=)%0-fdKv{JY*&fdql7UB<1;ee-Z!G zZa#v^x+v#Wu@t{_Sl!F&kpk&T|czj|c3r*B zp;oF&)v?GY#=Z(Jkm^5s_^eJFg^mvcMccVb^=2t9@IAo@=W;zj;BbsBTse0gcMkOv zjSkdrDB|Bit!k?=eH27Se)BSHn5eb~RIJrS5-|)xHu(BNLSE#fCK`0gw`y1a9U3ph z-~g;T8|ix2B^}RSc=zwhN2&ic9px3wZa?L?){g`bR~Po%!t%S zMR3D`+=NHWtQ@?V;D$%0V`8E(S8F`8<}*Crbm(=JGECFtdrWG>(zscE0unH2(E&=@ z6iQazwD$+6F1!g`SH7-@T34Qo4W4>WCb{~{`P_|P5$b(4C=AF^P)C{;622>)Eu;SJ zyIB=aM@aQs0eN?-;N^lOdS!8a2Hp*dK6<(VKzqC+clE)WTm%)fOJfj8U*F`y3 z|5`}v1*dTd6Pncuz~n0V?<1^hSmj_njXCV3yc$ezBYH%xJ)j(mvl7{CZ4}g+U)2l=vY!VaJesTbc_O1yN zUV^yNvQERCiXZr08u70i?C+R|NU4iXd?r>!cWn`qj?vqfC`qi-mrUcCFDug6PyDBg3VikiBQ-H+7Q8P$}MbXC;|44ka{HkwSzh5<*t zzFfY+z)h~Ea8jqOd{u-P604&TSAw>lx>WH0dh7j-OsP_byySt&xRX*uLrv3{LIZmD z`QyI1oqK)7S&WXV?CE|i-faES$y5`<%CMrw`)d48fV_ZrzX7Gc`Sk@UE^qwA$>ZWJ z_-L4qB-Ua-$hT1G1HQeD#|DRA?_3s?XUOD&TNy>bv_e&3dl8D%4EqA1(k*HT;9teF zFV3a}4mXPBW`Y?g3oT`qrHK|Mk$)Ez%t>RGD=}%l*;3P(Gf2JZF&lZHovk~NiXv%Z zb{bAEO0Z_^hh=plJ#yPN1vF)jR{(5@`KpRcewwdjU(t&kOg;TS*QP@l#-Bq_9?k@GoQuXzVd^LyCBHecPH@O26M*e9ouqvq3urwPfJ^b|^svCwPKl9Pf%{nqM(4@{^ z#h@k$b+VVnWsz(Zo(hVt0=ZuePf#8DPjGat7@)Ngjg>F{dcgwPH)lU}s>Qi%K#BhH zT@@gLSiH&PrLvCM+honZl9x3)SFp&4Xx;Yy}wBX2_qel!{v2 zC?W~Dm5;=uKL zfYlj3J7Lx`)l`xEbxjX|=iF1+f_i}%bsI!9XrF^zu|d5jM%DWG>EgvI-mZ4~E;c4P z76tNA6cGt1ZJ4k#(OF*fdF1X4n)I;f^Q$MLgMUA#z;^ogg;192u3WO}G19QV1FOhT ztaoaq|el*;b@K*&qt<<ty+x-1I zFo#snDsZ=Uj0xriaV2069dN6|%hlj5eEti{c!lE=cxSWPPcJo3DVXMq=jOd$d+_f` z6-Olm&y7tCoGBEX5*AS?G>xMy#MaD|A^>#7sG^{)!B8(q%xeKte1en1BtoG zlB-VZ%wKoYzAw11uh?e&t@jg5G5tqb*S0GX21PsO*Hyy0s(VzscO^p(ocsT-A9@f* z23||Ow`gS)aBd~FAtyuk)6XSN!+>g_*y5(FoulG$f5(r+7-L`n$XE_`4)^-m!x(Lc z+PjK>4)$Izh-r`H1^v(`Z5J%vE|}yM8(ea1;bM=+Tm^4*$5N#erbT z^v+;Wcw+@dOrVb2Bt z>f6^>;XeQc#2MdJDyd|3%j119uzls5FlOygu_*LQ|6Z79u?D~HAnm&|f~pE7o%^FY z(s1m!jH2qvu0jq0TfYj;&?B7zUKBdbQY*n5Jl>Xm)$zqRnoiaqH@_)}plH zaE0jU^CNe{`fcAmuap|2Ccg93Ew;ML3wMP|-GtRbdsdl+f4qoV_GmN-M>hp)1qxEU zx+z};CLk&^G+&hO_Z1${t_y8)0R!4BWu6zG0qlrn$pKNn*ML9tvxGxcf@n= zHh$9_p>`~FpJLqd_cdkxhq(Kt&7-$E7dW%)dRvA^GVYkaFG#v$B>@w-xwGQmy?V{v zD>3S75osb-I_*yP%kbu*>g>+cd8-%GnQ!U>;ui|^)f64${qLw4b&yiegB*T$WsP88 z>PriK@i0dCGscRh?{kclg3;C%bS7ZMNf;Is+?_^YVLMF2P9DmjQj{_#ELHg@Q?GyF zoDMll-!hj1fntKa5erUk6O)UIj?)@>zkdofi!cUqI6|X>DbLY13us-rmHphR3<wS0i0oq1mXq zX#SN9v@h+|17Rr6iW7m?5dVF>aQSaj;7n8FeItn-EEygn#+LL48IoWU8?BH zbHJc!V7jvIx>KNnA}sxgn@eC)`s&Qw>2LS7q67?*B&)Qw2{k_4HwCIc?&<_@P0DY$ zqv^F2ujPt`_me6a1(cs4Sq$ndcUa}SXCL=lO+GsQ*>Ne{60pwwb9rTAP0DX7kfZ(m z2l?e^0I)KY>funNT?3H75i4B04bTFoP#`QgK?JJ&j z*>RYZ@-Obe*}ZLMDpAW#UC!6{i8+8@ihnHy0R5%n@h^ z!DOc)hpEAtI1vXMCzr$%|3y@dbQ+boFFI4B73bMStH@wlB-|8x!?#8_--ShPv0%$P zY2RvWR!G#ucg5tD`aP1&SIGgJDurEPGhqGUti4z~3@bKR$)+a^R9s1o90NMKMK*>p zmvFp3)g(CcRV&y~UjxLtiu6kCO28E5&gXXovL-yqLY&p8Gaj&|YoN`z434iCOw~2u zz&m8TbQ-Q8v*kGV0r3v78!ncA8m-0LyZ6P(1I$F4BES*^*smIHrX5|Q)qM-0-o_%= z&+JJ#P5fkl#1w`9j}ZO2r7256Sc`F^+LiZTsZ87A?!H9oXzaV{_)f)PS07k*-&JVV zv)XJP7-9AUn4UYE~-L(g$TG_Rys=Ia9f?- zoV>1y!LIsRfGT?YkXgu}V@wx>WAMCvi{HkU3)z&6zvEIoZX-h`TUDkWt|AG!5?-=% zA77cz0AwS2lqPR25Uevfcrrk9aD!>WO2V{$eHSB1uP=HEwoM!CX#MVP?kec~0e?7~ znB7JR+4N6Dzp5W-cQ+UzcqzyI)4{@teg@P*Qyq2EZsON5sDbO>o$|^H%#Y%WMN*wE zoH8=%qkj}Rzwh=r*M~#7N&`l1!j8_GNsFQeRgP{R1d+zkx`yd{=)P2T$#CqIb+W0% zzf&$ZWWI@c0W_;!C&j9)uG_P&Cqpb)CA^Hz1*8pVVoN@nzIj)twj zBoy_lud2)vqLVCfR@o{K7rVz6XcUx~3$Ck#*x?j?h4Ql_wZV zl_?;6fkiLkTy#%7pB~wn1Vh(+yBFM5K9}O9tx?a=zW#%B9XVn8t~Dj`Y}JicQs__2 zTuOCABUC!P3-)~S$ylF(vu~>IYI7*=cs~#+(Ei^nFxLyrUOD71K$Q50&)sjV#WBu| zZ@Q8WzJqaeMYvn&JM>FHmR7soG+M6%W?gJwvabr^;d$>~h1WHLA@%FP0iz2+eQ%a@ zVpR;e{B=!{D`c*C7za~cwH@8Z$Q6}VUC_3li8FCaw_R}@^1?t4^%Z6Y<>+A$Q?~&X zyNbafw_yD#Z5P)oG0px?Zza52uV4O9^~8Yo3`AJc_>2t2#o#jzA$qS0=2S8;*D2E_ z)(|nq>Jx6D2|mjD-qG%kxyIH6s3?uJ)yfC|_CP7xhAF}7J$+b-0CL#E!&qi>!^)XQ zN_^82boX;H)xfNL=PDlc5ZU^Rf{c*Xb9*O zx+0~PS^BX-g3L|*up+s&)-n<0utb76xZV0wWl+@s3nV>iV~Cs#R1*bxgFAPAnK-N@1~ynYnsvb# zRZg4b4yudB*?&2tAM2xyvzdY}HWLpK^Fh&M)+9bb9B&pY*MklW+0Q9_e5-8<7)WM! zUA%HrO<@W!RBnz{sg-0^?iX2ccArmNRE3;e=2!w)oV?GaDz^k%an9Zzz?^PgNg}kq zFMDgnlwxjZsxn%xSO6s~)_E10CvGTwm-hii=Gv@`5Tu5lxky4!!RD}J#8#zL1RL*@ zG19r9(>WP15j^ zR(5shIt2Q{MEECvJ$UtNMu!(7^(=f7vjdy}WtmBiR978k%7LpcnubaZB&vH02TT2R zSbQb3R-@qSHi0G{qJ+j)xIFykL71WM(EiVbNGgR>Qn#^*2^V2%fb^0cCuL}r91tvB z`wA6Br|>Eqz5mx_bw&!OP(lV!M36z~c|_-bRgq+xT)GM2&?swKWR_P3Cma)ZOcUOc zmu$}9An8Z4Y~vb8=BdePfMQyu?g|c0dysIh#gp*K8?WUM@7IuUJ^cwMMs4ws1p)I! zZ8$(U1cjvrph%K{oagq8f(VMJ2AK>h8=@g|Vg{&ih(-vBc~Ini!1Tzd@cJDRK|+!! zkZJJIkTgy6^f?IM(b78sqkP)f7FFk~zT zL9SLYhr&J#bZw6!y^lsC3C1_xHQmN_SO;STZ89nw1h&OE7NFvk=t@mW^13TRd?C41 zilMb(8aE;A1}y4g9_G?U4T6C}5z-nfY#*k@6LnX&`sQW1h6>~a&tXL5Xe|?P`#2%1 zu0YH?98GV-7f`Zt#wTAkAqGuxDWc0n@6?EuH#ONxFGp1nVQgAKbU_kY2Fr2^w%SF_ zRwp@nSzy)$F~dZmQ+RTa-`0k91kR6NtLMqNh1r8wBhGH@=}rXh_F+|ZSqFRkstQ0X>#v7p z>beaEg7aP7{*D`8V%8BcyWI@-@Iz=j2*k7^=g)-d!TRBHJwzxNCU-P0XOLu&Efp3P z^@GvsJI+Q#m_`kHI1YoY#D=#@_eBx@y*Y1Jg|%i(NA~p^kD1ITfY?5DiTMA7r%ojG zN={4m>*Q>|u-iJ*ck;unW%F5I{D|wIECkGEC2N4cx{_L*aHD|Vb?{PuU(sCNE?4Bw ziY6UJ+4NNjV)msSperKV1uNLEYP^%MP__Pcs(8N+yq1LL0bHg2k5!A4j)a$o{P(H- zFaOzJ3$PABghgHYZI@0kB75}l?*18fu~Pl^!~MyW8VSoz5X%9b^KAClTiD%G#n|$7 z<+SI&pO|vHj-d>D;>K+cDz1q8isjKft>OYbSh`o5p}HVTXoA92Y%eFvX_GG9fb5vq z)gkvUEQu-$DQQ!cR;Y?XyDmoxk4 ztC8SWrzpVs56O6|ufJ<0C?KTvcL#d^Uc9)o@724)@Ae|R70OjvV24?FP1J{#^d6T56G15C-$;hL{E`ZV#jq7_@d&i~TGzb`3Z{sSdHnMfdT0d_ z>=m2yg5__fWW5U`9oO>^w4)$6QnJo$}iFSe3p z-tkhmk49);QzhrXg6g8S@|v*aD>Bpa&x#=XJq5!maYll zXJ-Wz<_3`gGX$#!S2t60kZy7?nywASJom~vLS=bT!`tbE_)A4m!Po=b9rQ)_yMzb^ zL{{-#PL38+n3N5De#kER^MTN>tFUd^b}5WJxOML2yh1E&7}w97{(XgLSS4IQX7^RB zV;!@svef_>(P~rJkZZ_QA2#p$)L0WJw-r1x|C3=5iFYA&*)?IimG|$m zca|MPRen1W!|`bYW%6`QNX9q zY4#VX2YVnt>M*V%DhFNIuEO=hv2EeHn!*h1_rkI*PzwpgvTG5)mIDT3&~Wt*LsBIL;ndvrJt9xdVF3NczC`M-i1m)ZfXx)P zeV8x3^d)4DPylyLOajJ5Md4mORA*obi%pGr)6H*{UYeDZsusum3Z#SZ@s zzQ*fuy}-G2nA7nObr`)2>QO{YI{I2_h#+cugLR}UW@Sb z;a6a*LSBVQu%E5qSsic;1(`3%`L(?4xn-Uh?Dry>!$GHq%Kk5%ImJzVQt5v)nZ6E# z^Rx?;$-V1Y+SQWR4l#uDh-@SBO<76Y`{-~#Nhy6T&TH-cint>^S;f_GVydE?CB2|dh1naUbomV#A8T~~ea>W~R z;?64`$wz~%D&k^ZtZ8i~a&aS`(V%w!`&(aZE0YXGMptkZohK7VRjT|X$>@lYR7cEQjZo0DZe9P!g0&968aOh84@3h31beHJ5$}9^x zXRG`h>vq^*^>4o)(&5^3LGW1zj%gHGtZGAmz5EPUJKJmBD%}2GG5rmkf4emsm;PLJ z`Ctp>Nls)~^C;NIx&ys+%5bX(r|#Op{&uYn_P46BwjRaiwtR9VqiHIr^Pv82CG|xL zuTmBVlAJpr+TK6AAl9QeDnjDKIk5>Y%JW=f+IoM>04}Wa!YADPCib$@_98_eP8v_Z z99e6+!oy2pV!tbDvkXVF*tgN6UMvjPU>(~9>}rBO{3>;jp4diiVg)Y9x_ze%ZjVi! zjQKlf7UxlkZ86@Ums|XnG3EYS zjA(wjKk+rWA8?kqQ8&9b7*`Qf1+>&(tO z)6TPaxrXj8>XQ?7L|+YG6=>M+qH34<9YDI?%pv8;AY-j7iTcBQ@l)y%Pyyd9;XA1V z5n+=D4edP$Y;50U1-?;(y?6aKez;e6SPkYNxC`p?ASr3pO%-%Is7vYy*;Kc_>i6(= zh;MzGfiQ5E{}Uem{u+))q&NyNDZ|?R0!7226isf6;5{34@-JwOH(SazSv@B%33_%F zpjXA=eucq2Q8gdiuTm&NEQ8jXBA`ea_#PDkx|7tIUezL{K-U^la267liV@beOtuWu$$JgD2Ew)KXx*i6OX(#~&1X z9XdaMS?E_#2&eiF|4Jbb)gt*WkhGfse}tlcGVpb%3lDFoY_E!Kjt8-t?E$@H(`_<678Yt9Q6*eI&jrdRGZya1C1Y$p$o!~jm;b^A>gQI?%dYyTDE>x3Icby+dQr76z|{(wBaDGECVfwliv zT>`bg_582P0<(3NHtgzNFkdKTMK{%vSE~6}+`1?WOo5W#VP4!Aa~njmcGjN);q_HC zkrc<4Iywmzs~Vmzu*TKK0PnE|v+y$v=34X->R}SaT_D=ExB{wpxJp+z`n`P6km!HZT^9Ab!ie|AHbey!}uSXc@`to}-5h(e27YU~?7BP0lQs z-uS?nk{AZ#^su6@f0cq6kW_&&2bbujnavqnou!@`#u56ZouOqBg?{J@e{HoJ_v`xW zzoWyl>zoN`Fymd|b?JjYh)_z_z-*vgaYN73YTli_0u3xs|5 zWkg(wzdNl*<7|jolEjEeYl~)t5=Wqb!B!8ao2H$Z%_EA`=D(EuR_c|;wv@HChyEa{ z@4#RGTbRlq(d_*u?-Z3tnYxhP=9})c&2=>b4s*i<(O_)3JWuH1tD+P*46%2!t_Y0oNks$!yb(~k5LzJCQMs%r4pc%m*m0jmiZ z5?b=WT{pO@JTM5DAIYW()@wF@Z?eIFf!Kj!B2@Kf5@Yl{V>kcj(Dn()C?f#|0TLMs z_+poj&Cv3P(YE8cuPQ*$<`9?R@i%U@bt())2Zv92oa-0~tUQ0}t>%EyphZflU{erT zTcvDB#DKnKE>h;HJ|KrqKf6`kRo5TC&Vh-`oAxFy#AuggLY#(q1GjDE!{*NJ(KH#l zOWV}%R{+<>{|1fHUDe?E;={zgr+2oHeO*8uAWg`NcZoK2@xkr%0p!3njT_9PLll0$`3CJ`8ot`Gb(FLsv^_TClkh;t+vVBjC$9%NRy2!1KFDgHXCW;X+oq=Qk9>0PJeCg2cKcv|&M(&c5 zh>9uvJEL`frah-#z^>5nEzTE<;Ze5?ZOtFmgE+r*c_cif%rm_EJ3AF#%Zfh4Yr+u#o;}IAW zyoC0Fdu>oy_WrWy(;}u{9;|1ds*aYqBCCr}O_gSy(@JbxLqJu;!A&8$H~aaCtWQr4 zf`Z1W`Fjio&I5obfQ7F|@RVH{*`_O^j00ckN{Xx~GwCPvU+JI8suU^c zs9|8cCW%6;UhG$n)L`PSx;xV69S1`4cNc}vNUCOM=Uq1-LgTyWt9(*7{5%I}>}9HU zSzkgDU8YThv#`S{%WtV#u{+xHPXs`gCwCP|`i_ITG6uQH2__SPGP@ALeXNbO<;i1_ z8FUd1TZQUh6^8`&I9xlXX}(WlauU?Lu5lwiwO;_;Q#I$T-qP~`+-|e&^Bt)p)G6-L zGF)qix~ki&Ak^zB;YV6VSvQCHhIZ3 z0WEl2wkuLT$3Wo!GE+Wh7eX#g(N#4_gk+Mt4{6V3L(wubtS}zn#-W*RAxQ+V>=wB! zj$BnAKh@$<_=(6=IX{RE3!xIH4&5&g&C^#m_&t*^jRphYPOg z;GcNuV+==5{P!d%K|?bND4;lNk_QTCN5Pz@`_hbyiYc7Z)2s*MBPV)N>5>$!n0$!j zj2vS)(#gQ?Nr5Mm63#>W`Z^8+fnb2z?%rgy#-urGYm4mmw`a$g5i~>0KuA3Xhm>hL zOt1_SAfRq7US)nU3tCh!ei;JV&vi7}Pb-44L292xjd_1~)q$;H;I9*c(8Lf(Y$zeM ztAt_*2uPa2#LIvf0s^YFyyJ{AbdqrSd@O9JVcWunfPjF_hE0GTbf! zSrSJw;McGA%|Vgq9e#-w{#UBkb%l?v7ojd1+kk@lP|Ech9!4LCIb*rus-7t>??(Ss zj{y;3wXlZ`>w(6EC%9g_yLD~ExxK1HX1w*eD8I1q+8tP^J?N=B>&uWPFN_~D{j*vsZH$7MhrEHfFl46PsXwI=8u2nfiy=Q`bk z3^E8j=;Uo>Fl(2V+M?G^(#q^f20N<6CX>*L+|2fu&P*E~zje0oz%7o3r9SWS=RNq& z7rx9a(0y8suK#j?7&QZpZ>$Wo!O3Da`9W7nK_O z85zWk0^0nDnRr<&Jl>dE`dmywUoraP8xgX_9hT_nNuBfWzN0T(O*UV(ul~juf%~+$IM_aQ@At6c&K8D{l|a%$7%YNrmp(`=f(lDkZ0gDfrjq(OQB~S4%>l%|FMT)@zJ)^Ic0HrKe38nj@64?vxcXmihuGYz!kj(e?N5o(blz zT1JQqt7(?u0cI|`CadDVR%vc>ag5^K!Zq_8{V{+M?f(fOAla~)pnl6Ka_tZ69tQnQ zoE3h>2Yjsiell8Bn^kAs>H_0^>mCwK7B1K>7h1sYW;AdN%eYBl#{VT`%*; z?HV+3EFO^E;C9!z`29BwKX7mLhWe4?AE9h`G%5f>7q<91xu{dx16#afXOr5&rZK6J zYbKUsgM^$bJQkB0$i67DOJAerFb2=lBIMa1ha~v|YV%SlkE$ZYSx z{qGX#?f<3V*#)k}%ZSlRQYiJ>V9D=6&+kP`{Mr5gb1>BvHGh1?*Ovn7un-W#_W4Kq zio*HRRCNmy$1kf3wUgWYN<5~t2_xYbLo;s1vrGf&{e+=?6PMFzU(CSq?s(e1LL`vp zpbs-Bve1-Wj)<9d?t+;6$T3m8su5x2vcH}?qV=hd`>gH%6&OI^@$_rxV6R#avd6iT z<)C;*_4j-umvQ6^jbY~eD_=$FlDb^+W$6u}im^Kw0`t|*sI~`C#Mt6?NY(nmUywb+ z_BSsp{%JNX&W>EyTdapdSA=|QeRmBSgmu-HdaJy-lJ_L+FN8uJWW&Ew{f@}grB@d$ zY5Xn~(M1;pHZ*ZNEl`zH#dS8(;Oy6jEC2Z~U1roidX*-1CG1_n!lmY}stmf?iLJAR zh$EZOg+%szfFAWt)vl`2Z6zDUx~HlhG5B3ZclOoT`*odYU4J(@U0pTNZs&nDhDcK=v=`r@)O_n+DoxZ^Rhh~BLrv$dFHyy2 z`#@79Xf9N!z7U4GI|Y^Q?YhTqb|9WOOTLbTdmkyRUW=#7^{!1@wQ6})CZ?RNpgmFR z3RRWF*Y2*`p>@D(oU-UTEh-+y-MxiWiHYMzT~PN7gTHiV&5uIQsv-57?k?la^3L)V zULe&=++VWS#%^>)nCKQh=-IlCoFr?a;O*1sGwo5)Arsdn@6bT;vJ)ieD0< zE9(qWjfmY5Vo7-9;zd-7x}B5r@8CI)fx2MBzMUFf}$!QLTQJidW&0uf0pr z@8DGcS23+{32Y=&hk-|{MrJEw{K}(sf5MS{JOvY$fYSn2yYDf8`WWqO@Rid|is992 zO#C0dwrzg|VTxXx%df5$Vxv2F8vLtun)ry)lyw)PEja6Pjj}&d7R4v|q%AuWluH*PpAMvH#EOS~U8*$MbLOn{cdRXNSkuM+vS%-+}N%B~V2@mLhT z(!{?>T^Hy(#|~3hDPA~gE4A;S40Q=>45+4A)gq=g6TEwRW~-umimKpcUZbq4C;WSTg*bf*w1HChuBG7ryhmR>mMJd! z%9v+2$?K!aK0a0W>Q`Z|kxUukWK>r>i1o9&d^GR&)x7nW9Tr#2-j&ttg&$^DZ;48o zoA<++jgv^SIwP|sjpK1|X99d{B_9BSqA8nMk=@lFePWtk;-JqhtkvqzNRlK;(lskH zeUc1{qA({MBqyRsk_a9VpOYRvIB!dil={xsNQsiS?7~Yp9%W~DMTEYA>ly^6Z_g8E zAg1E1Nb?s35dO%!WVx#{NytC&aZ+0t6%&3Cdxka$bG*Sq((mOa-IAWw=#ZQ1g5m1Y z$E%k>#Q$4JyBeM)s)%l_P13{EZVa?eocB+8Kvp3GMZxRczW0kP;evQ28+ zDx`){`!cw-8G{dw^1bbEG$fs&R$kPa)?&nGU~hrGKtQuxBow9G{`JPX-7cwcC@f>$ zE&ly&HG?Mu6O{lNd3+ikt=%8){?V#iHw;~0@xnkMqwjxFJARk*^t4cS3m)WV@;Wqjp~<@a|MqlNvdb%83$EeB-0piho<}F_HMRHuuL@c3mg_ z74dED)rGYKYvoA90IPGN7P+I=tD%v1aQ(l@)?EM*T3Me3VgLCiOjoNy1oV$_F127V zM5_i8;&=`ykP06?1<@Xz`KhW(19zrf9b?`O9^onwF88SjINQ(aA63lMmtUw7z+J=e zPVQry_prs*73hKO#*6cUU;$@CTX#t(HSXFU7h?Tr&cCa3gYcyCk>&L9jbr`QkQDy< zhQ={+J3)M*Nn2Mvy-#Yh3B?({x?BplgdoEUqgZbLq`Y?!>wAMI{9NF!?<`d@P_FM% z(3#XkRGBTp><&>fR-g3*nN%Gw`a`%Nf>pkA1c=B5^R71#`2Tcjl)wQMTkj}GP?Op% zAPAEP*V1n{R}eShS0h~;(sqSMXc;&kwzz-NOrkUBE$GP{fWn{dsG1mv>{g(F) zCGVQN-<8EUNJwR9rM=rc)ej_?YFN7Efsdk_yp5URSVHtf1gqqIc8wgqgNla+=CCj* z4ClIvLEZ}b#Q4W$0P8B98)bH#FP^SQzudb+zY063DOQvr7F5{76p{3T`ndrLqPmJ_ zRS(sDvhV8ySkyQo0fCB}*gEm0&g6pPS5*vII7ht(7z5>AU>CFJK{;1NJ9Z$rs@1=K z0vGDzs#1Fr@t#bSQQbSCyS7ci4$P23>%Vt?5^aw(RbaCJ0@ICGB7C)Ml!yMpGd>$% z(|S-{zNWKFeY?J4PBb;Fs1^G8Xjjj`J8)Qh&>)0WC$4)pwvfJ|7l~~0uR-Khr4}6N zt7-*QKmV(!YCQ7&J1f_7FF2E?p~b0Lc;72o4)qe9jB2Fr^ysa3*&R!8nbnx(q53pj z-BsN5s_b}pr&sialTA3i z!Ufu_?(pn?h1PvYOLejEAUQbd#%H0bFzlg;Mr0@;x#|n*WUx9}*jLPs!v5yh5tSM~ z4%KrHmdR6p;Aj2EmB4_>)9kxN>VTC@?3JW?)z>x4%79i1MG{>>%Gkh``+tw6`EaDhpcdA zHNb*uv#+>g6Y>>cUW417`*PC1cPI|r$lUs#&=igWe-Gj%{Ci|-v5d4^r;-7$5@)+| zH27U0n}_ZSj41XMVkAkDq+57VeqVev`%02A5`sP71z$V{zskV-BCK=7hJ*8=Bvjk? zIx8<%gScv{*$0X?~aBn zMp`d*05~Q?_)!dzPLUBC7{O-soOb|p9baD(OD~42?m#J4ZO+Y?k7Hd2rc$eoR^o0b zP}g7!JSQLI$7Dz}^foZ{I@kg9pgQos9tkAtHip_&&Bp*J!Gq_wg!-9}@Cbez7$Vms z#24-i3tK!5w#3XJZz>`z>ujiCbIi}`02X{ic)B$J$j7(54|%d)enWjj*sH+nYJ_U0 z#0tiWY~pt3LVvV&M}|M^w+#r%npjxromZNJtZ;`Mt@2<(>^dy3eyu*QzM{EUOJbS1 zd*XwPHG~!)WfmnMZ)>+pn|zJFnjJ+R#PQ~$;fY( zNqOHl_DzA^V8Mn;Z4LtxPZk+q0jdmL&d>2tUhOy!CgzwpltrQXb*_2vhNpd=68PX@ z{BGkMGv_{nx85=`imxwFl|Mic&dQLMt;d}P&zHiD`|yR$^+$*QWhIat{Q3%jx$7b$ zzUvkI3PHuk!y}_bu!dgfV8dELH2=;R@O1)S_uW|dV#N6EGBhHx(qE=jbKRGM#=O4* zbI91Tu2DY^zy4p{Rxhem^ccRb|1I$9Ea)`GoF)~P%&;yxMtmH=wvV*GvWT#_RH&?}WAt4cpb`TTSi)aT zoIXWyM6m}(F-=H{FvfW`DI*~rVDi8@A=~lY@vHqNe|KYD9Jo4)N4e^z;#{+Uqz}pw zzyro#;&TvFVKMO46Z#hdw`5&DSdz5fS71&V*CjBXNn4n|%{N05Y{OW)WJ>U68m2-% z&g&sDcU@emS>k(SV)fM@0o}Pj7e=W*s8THYl_hg^SI|U&P-%U2@WB4ESA@M3Lni>C zTcQD>;KxuTLu@N++s#DNM2s^S7Z_G*^Nq@I!bxcJep$SY)V~`9o$RVC+WFxFGgee|vKR+<| zwM?-fAt5NQy~BGx1`sUD3MtxVH2O}l}a*UKaFnx<)z69E$`Icb`vY2VB5nYBqW zNv4%)p?UYX0j6o1rV}a4zpa-|(bqF|)U+ozpZ;)9Lfg-@&G7nk1S0 zr_IALKbod#nl%Xx6Cr7urfFYCO>22}nt`W#rB3Yzo*cicYG8-C)9qw(n4iV*31G=I zO_LL4Uq`WX8hDx}-}i&p!`zmeB|Dvda+42VAjWKf#kjnfjpGPr29t`Hg^#_7orjJ$ zcp9LtnuwE?jg5t#y|2H%n4}EEnzgpMuerv7p&0^6v7)lS(h~#p3R~E$~?8&h6>+;O`O^N;G8?Ef*LXKX!4LvOI=o zHfSpa9WGSP9ZDjG2ml5$c_Du!b|7XheAXU z5m|C?SxQP>Nnb@GfM*|HkD6!kt~9ytj`ooN01yE! zh(XC0pd})%3mTqog7H6W3&Xx^0*qU173M=k^C^gI?KJC!iGYG5J$!z#ab2H3-5dZ& zpGNC%0VW+@{<8o8A^z>%0Cg#C#xai?TR7Axpv1Ljn9h^MSE~7z zV?R*|tz&BflSrkJ(r00000^d*T!=#L@M^})wwP_q|jGMHPUmLZ=t zILbjil$;qTp8XYLWxu{ z*T^m7q?dH&?*ae-0A|-8{r|j@QzZ@^6NG<>?#2J^DN5D8M?LH!*YzOQK2Z1gtSwE# ztO5Aw0Jo+kq?iQn90S9j&s&B8KJ2}BP?Sy3FZwLIAi)3vlCuOQ34$OJl&pXX3P=z{5hQa446pjW->Gx!{&A{q-L-zsGd(>$Ju^Mi zJ+sR$8&B$!(cvqJI^pyxqmAa#d~Nw;)I(|y^9<*@ZIleF_0B|ZE3;RFNyMoyrmUrdMcYSix)8Z+qVL?6lmt0a@l@evzmC+qXC2L~>>fsSwgyHap_x z6NgJiEOBwMK3VLV{n%Id6NpwQzTHxzP;Z~0J9kf>?roBil2Wlgg@85b{e;il$qyEc zpT~ZzkYZ7iPo^S|*;Suh>L}p)lqz~nZRk=E)nn~GSv7WwI7n;PCtN3lxvNH0 zi2d5f>j=_D^-Q&)iETPWwRP4YD!J5QbNiz_U{#-r@>zFJB+wVxcgp09I#9KdaQ+-Q zW~;@nmlaM_XpBtMGgV>rJl$lpIhjdEv2d4BD5Zi{3G7YWVY)gTU?~`8756gsNN0lYzpCne0P( zddQNl*`Jwr^H(0*0f7i&yUi&F27wheUk9PoEq3_yVzH2 z7eo_gb{q}A*0`;CZ}HUQT>E+=^P*&+Qm!G`QE9EPRd5ZRy+UpXZcB~Yu(gh{F6hBu ze%Or+6$m}^Mb|lpo$~Vu68kQfSG^SK_L&J|?miZkNH(AtpUP9J`7ZN&w;lnB7F2>Q zGoLsQH|wQ(p_CqW_T;BwrTT~$=M%QXd4PV`o?e!+ZxY+s9kM4Qml5##@WEk^GEP*> zj8dd#ZMC$Q{hAsv_jB`e0aSH)&#(CmYdC3V7J)(TE}`s-o8_D-7_6?MY8X~$y^z?; zsM!!p$>`0_BvN{oJLOp>XZ*Q^^DYKr7aE*07vVPT=A&8+SkJST3eMTT@V@4gP-;KF zXECXD!TE~-p@R*WT2c82PWs%6_s(s(R@1iLV5jIlcRt|)LYaH(x|$m9HrYVb3*j$y zypqww+jUOqQJMGTohIJ4Sl#5lI3Su_E}=i9Y>hYoJI&WrluFE^Wb7vFj&eyzwb>dVsM;!7xA9FmmFfsHp({dT9yX1fr zXbK%76`;UMnL&NlRbzwV66fyf6a#ntDtX`@`Pv--Y_&)9iL0;T3Y+s2>7Zh!SG zzFRg1mX^2wY5f$A1Iguf>s9e<1Jh=BAH|s|+!!;Z@@*QJ=A)>=+E8K>^9(;(CA{2z zkvpcWKj+Z$D^<$l>P~2yKb)k96TN15YsTP-o#M6KIU%$}MR>ZgR)vh1VDJ=j3WXgI z(L%D>|3pDCI}*1|e)y>f-6^f^b)*y?iPOm{GK*@`$5E?iHupBG_|_X35!FFfrx=w) zO2<1~%^^}^x?_^;!Yq8^9|g2MP0pPP(^Pd5q%6|YcXu1jYe3qZQ(!N4gr zP}wP5?!Iz>kqyS*-utqHTwi)#cGxOd4{9x3!;d)=GiYiB zF7V@B*0}ndMdsWleK5_Mwt1-exfaPLm+r-6No11O8yp{7oAa7M%Fen6WoE8!wC1Pj-+oZKhgG*Tas8>6#rwXtr-Cpa zY+&G{`u2>IoN>3`nY(Q<5l*@WqWiP@WZE?=bPMYos^$eGiGkaZQwZI_dOt?a|8dp% z^jdo3{4Daqr7eUn?KCYOB=?FW_=MHo3Pzjc+XbB6bMdS&BvT>gE2n1uYlXLPqmf2k zZK;t?T5IQtFWtp@h!uf5$Cfe#?iyf)XgFwO50`7Z8QK~4*QD{tU%!2MXyj}C{gSVg zU*d}t;{+LV8z0nn6jHp;%_+Q_bJfFo(?Xnf1hV^dL zykFj)?yN54BsXzV3n5TJBv5uO{V%}%t4w%-MB+KjLkeZ-~w7VD^|xqNB$J^ z;!`SS25cz(!N_wB)mR?Srr$o7RaSH_rz??*4fJ_ULREXS*h>G0mi&tx(a} zYj+};&ctsghr7S|qLXlCsHN@fuax<1OAlvY>=(4JWGsK% z{}dN5NhCK~^L8_e`>V5W`o!N~m&v+HrOLl^oeDQ(hqgkD zp1YhPtQn`XE2p7u`LfX7{WyyaA<-hjeEQ4HPIa5DIlJIb$k5 zNUk4pv#*8=MIUiGzSh}M+U>+$0S3|cI^Z|1ThzFIWb zQG6Rat>5H#Oo62M)NjvH=S$*Pe7nc^s&shQ`{4skX!^j&Ugq@ zRbu+#;=IJ`!B+9m$_feo!@Ayb;pdNyF_|_V--RaDDODHVKfWf_g}tOn@Wt14GIQaj z7A{nuoZsAda+i}Lypm&525NUeg2p` z`iN~$L3VVj-Jj6j>bkj*M@0^kvB@XBYoi<@-0y-f^sE+e+8N0qjS z77kXG=G8^rEsMQ9#)Vtdc zqgX*@dM_*aKphv0xPb=aICD&=~ZG3Xqld%DgK*VE1``5R#>_W$v!+Lvrf*;%` z@^8qo^?nc8@5z$x6|EACm)*dL4S*%x$2!opXSS3lpy#Ctb|YISgyxBD16za`scwo@ zvP+l=OWQ#&)=60uPPMZ0D&%ux<3w2oE9HsQST~LXx-KFbgDc)su z>>l&GkDt@gWyQwgg;Sd^Z@+o^Y=2dSz0BC3DFd}IK6t6Q>_JPDXo{pyOH)gB^TVQs z;|$Nw)>;p@-=6sDNE4!fHNE8Tl~uFD|`LT z;wD(S;HD2N>rPg3hOWO!a_P_nBwz#H#DWER`^b0Qr%<$3{KCh^Z$gm%hL%}7NWi~& z0JesFR~GUa>wHX3QBIwtesY9qh9dTT-PVr8A>nk5Cw9c?5n5?B2XD-*gC1=8T&F&p zwy-Bao6bBu?c<#IsaaC$wVL_uIqjf1Z5b(R8L8Wj!3J`<6qEL90z3(20KjyuG&9VOX5-PK^D+h55xVqi@8aG}q_L1LHMi*$QoK z`oy}_&COLe7!88&-u0ANTq-FmF&8mW&A*qcHqcs~mXv%o*?Kp|{G0)sge$Q}>&nb%p^K>R96^lVeB1TQ5eb2dMD{ zvZ+&$E2C6IyfygTLk*=K!tf-LxsDX zRx9Ri0>`6`*&??jYMSu0v%QqO-z1&zkkq8?{<=-7W_d+M3!C2NA`Mjt=~)l8AOt&& zkF2s0v6OSmaj0vpho<{;e^PJDAQKe+bQ6b=3P0vs-Fo~|<3jqUH_K7)i>6|$M?PHN zR?On;@4wAaTOxWGu3C^czw#5ASLs>l8qv$ zLboij`k>N8R|I^s6PDcl2kuNZlo)a)T7PQyD?3w8Jakl$c!p_N=4f>iLa!!jt>3Uj z-L_z+tkfXR4E1>QDfQ*l^5=Vgr%U2%7qjEI=|Y=twoEjR4cAG0(cwsGG&}i~J=`bcD3@;8-{?gtfiueI=klxFJkKEy%qaKbpw4mIo6`pTNyT|HN?5nADv zWnMIe2T55A>!DP|{X_$K)J)M=o{jpQ8LdC?UJou*q0Tb>X2x4Q@gxu*!iDM0j=#&= z*OM;APJQIZYnvcQ^@yu;mhfhXmR{R>!uIK{_?J%vq417Jsu=ljg&0)|r9RV-#+jB| z^hE6t6!Q7f^(*36J>%NrKc)!Wa89~;=t8d5W{utca`SzLbiwg^LAe@t^ULc?uNAKq z>ZLZ9iB^bEa#M+y2J70!~Y%tV4xhG$rL@ zk5E^*!%F!Uagm$o1?d2*GMTatLc~N=mb)!Xg&c6PQri;H*LtwaQIV_HAZ?!M$d_(d zj293kbH}HvrfYL-+NDvEE0YIbJ0IkVdl_R6OhKEBR8Aj^~7oB~g!J`Z;GGAr1ctB7-HpVAJ@yQ50a)^(O z>u-f8<_|zntdui>E8*>y>r}R6X+^2~0Uv|Lxovrj6K;`T^4kLIAxFeg zJp7xd$wwfwquXhk_}iE9WLF~{Y<{jjtZ*!A)$N944(0q_-iCl-! zX4kl~qq2uW39y_ia&Y-*MQtTkm0jaUrY2Sa7HB<$PDFuMq03!{-LLK-W+;yey&d@| z{8jYkMVxp@tc8^-HqkO!Gb!kXV+yz;YrL3MmGSyK%J?JrRSX=^d=5|#V{=XJXM zJ|E^2r4+GwOBPCNH22tuXr)pG4E(SxX%k{&uwc6so3vYPOv7cQt1@4(l&Ki+u8_?e z;?MC*EyZe1Vo(zf?M#q6-3ZUn*#Vp9G<|;Nqq&9MT~;_s;!BTh8mS(J)GPWfu@ae8 zTPg1;P$`!b72FHXRmENmkqo`LY1`@g@&mS`r(?Erxld(WJ_IAl#u!EkM{LI2y2KJV z6t)(6-y0haB2%v?{`9_g(#oBTJo??3>_}}QZ)(|7DU*|DnXKF~;f+`tzsIbsGdFf+ zuX=ku?P9#tg}^+q7*^dGUiXtl`Mg4rEb+)JL0kTa8#P??>>P19vG&KVmsHD;X(+Wx zS>j<4Upure*8+`zOF7)hO2+NG*2Q{HxFfmaH9tQfvw3&L{}D1ir%-bylhu6kDr>#( z*;iIpkt0R$r_KH4y(?YuIq~atl51hgVf*5jop{n?1S=xg1@Fqf9slAHVzeG3k zFvvaJDq1ci)u*V0`Pl@f1zVMTCiX@#_Vs%f7oB#WfO%^;ocVDGakyWZgq|c^*sz(8gEH_dAaGWVsFA^+HmPL--_0(1;3h-Rsb8Ep4 z4=|{=K7timMIPJCSEpd9-;)hor8s?2F9wfw+0veQZ?3eQ-T7rsY-G`g39%Qi5y`P& z!yu?<3bTCTbU|6>5l1K3IT^{CysBSSTG#p1tQCh=zyJ$tDZiA%GYLyPd~&rcJR8H* z3<{S=$sSjo<-QhFNKrLKm4#}DDJiu<=L4Swt6a_V!}I#U;_*5@NlC|mso=bp9YX$a zi@LeYxF-2X2a)Wo+gr1xX1k$Gm2k~e;fgG(;&3OjycSqz1W(3Orxl3jt&ZV*F@jCE zyWn}8`qQ!vnKC)fT4fmlEK??(U56^%>^k=FoqY$L4)!?v&+{{j9(R?1l~tafh_P6I zH3X)q>`jvXK=+flbary}{+znDjirXSJb74Oy)3;fW2n0MkvK6FyCgF9 zYFLCrHo82x)6txksY8_^fJLG0(Dr-uFf0XDNDfg%2`+qTiH$IV9}y#nMNGc#Jys`?1E z=G(bK(qhw?Q^I%03vP^AlOB+-joEG%pTk}Y@3F5JbjJj~ci1vgdJ#+85B}tcEtqfB zK;_GNn8iN-WebjIp2X)?W!*c>9}V}5Z%U6)6H!0PTozzBzcz+`J=SgIc!d~F7!!8o z&E=dm+B*kZw|B(%!ooJwa+`LslY{tfTp8eq{}3^t9agxT=rm$OG&P;Zg=6b|rD=#F z1?=@OUT3Y4PyG~ARh+86_GV`!xktnlV8==JKC%hR&tG`UpsX_^MEvP>vphi#!M7e| z^AXD`v`cDB0D^YYU-29~AzG}0;TwK-sL>E51Qp>hGF%mkaMBY^Svf0NV)sCb`w>w) zrRM84+4+fcP{(wMuW|S+%%*N(5CuVa{n^Xf&NZJCXlmC*p$A*p(wefYtVjh#{0DY2 zDzWulluy2;R-S;6Sd7kTf_C9m*gbcyPb}XnWG%Q?7BLwc8(S07Q5*Gfi1dR(`I=2! zY%G!U_V78Z*UiK8$Q-Q8W{+|mweWSMTVpDCaAE?Jx6LIVS0dljVp*@-qraeCw(~r; zTlTUAWp}=2O_Ofd?&rzw3vL&LLTbV}Ln*c`ZR zeDU*&umEEnDVE}r=GfEnvGk6Eg*HS2azu8~oi1)nmFZaRZ>~Vf6x<;<+cCmIJ1nM}BxFw^+%7c$NjP-bwEm#@a)&@%}}1kEM|hTl0Jut}<^ zUy(#r6&UOBE#Fg@v^?EZ%s(Z1OUhTjluV%h^HyKGT1~sCMB{VW^7z|Jiz#Pk8|NN4 ztp`0AnR3R=E&6Em)|1ZSwNLt;-MSp{^kK?nqz<-ez|6B%i`60fK!*X+vZZJ1nEhfV z|F_)^OvKNR^TOY7UiH7he{c`+It~1w5mtIwbePe+r*l-c$wjpgPj_Rvh|&8`1+A`{3L6>4*Jyw z|8`>%_*-1z1pJ|C(TK+EriR$g6FFaI2$o7lI2oR-8*`!WEa`?Ctd{fk&DQM`#FQ>3 zE>Gq<%fGrwGYBEM>N9KX$uT$jqJwNlJ`iG?8mWY-D^v1os_8K)mo)ghg}5I0qC?SdLz8S%b*~jHdHx{;9^B{%^4ZeSJ#&CP4n_FN);<98Rl;eD z%0U(#Y%H|YHJ64OZT5W|uf6f8WV`!YlWo_mTVoyN#NCN$!f27KDGbglL7Jcu1I+iVeP<;PA~T&aixz04mM1YNlY$-=S~pT;R7G#4b!sUOjl0 zR{Vf0gEBcWn<%MR;C_#ZY4sP;assMP-A~8KzveQ{@mzks-ey)BB&zSS)o_rs!T0O#QY;1qP+Z&wf zlj1sf44d&Keu}z#Ydbth{`>(Zc}b-UKCSQR{u=9L#whv~r#GdcStw7&ejZt$>ypvy z9!zOQ?eNk`?PuiNbQf<-SIkV*)!V#(nWQ&t$lWxvH{aHeg`56hZf$pYHsJ+U)K~B> z2xEbIR{4vy1RuWRIL0O`HAOLm1UeddZh^V=27==9WrW~l9(;qxWcq=F8uL3d)&OPC zIA?cNZ7B8piSw>;>RO!S=jxUE+FuE>YTvTeDbkM=ry|8%kDI%V4ZYKjjEdWy+WPQq zd2emLD!L@-yiH%QSop%k7#g9F-^nV><`T8jm+O(kHCCl-aI969e)}PwnrOGw#_J6c!rB~ zdMNlrNO!Pzn75HrW_UhBmZ`peHXzCA2S~Mo4~=l1787F;JC={{m}xOhM+3fz+$j@_ z=G27_>&<3pCW!GC(sd-vnU-j$M6nxJ@V)t6 z-R{WlZ{|B;(p^9AEzGjq1akN##mJeohLre-Ly4K%!Mlz8()?VnwAd-G4KP1@{XFoA zSVWTAEzXyN$0kQ!dDYp14+}Ks-OtZ`{V1m?ui@U^du7?VB_%};5keBlS>bU|>+Rc> zmzs*pWA+=O6R(v;LJ&`M!ec4SdG|1n^GG>!i{OAT%y}PY9lv4)m{*vGlB2bqO9vKH zo8nnbEf}~e^`aM{SCt_bz>$zdot6+|7Do_E5p#;N3Xq?45Cy|VCZ;Y)AP8YIA}C2j z(;#{{9P1drARiq!3;k(M=fOm5d?RLdg5jWe8sz@`e#_@qOI=&Dg~o%|-%fY0uEc`( zi1u%;_KqcOkG1Z+sb6}0x@r93!mEyOyvUS}rM|)b8n?`+Um}Zl5IAz}&_?A$*Sfme z`i6%O?p?f;x5HAn#HhV$TNl5dTN*kX1J}0{PD#EIf!k1Zrrul_Q!ESE=^!D< z?J``!%>u(utEZ}c!Knb!nIvoVHQ<&zWoB(L`AXeD?m4}sQk-q7iA<&howe>W5n(=} zaD7oUcZ-J^cPJMz?KWdrEsJfhyv>bvI#Y*TD)KMzI&CM)n6i97) zD_-5(T=$q>^wp%yZW%$YTr|N~7)$={BY8ry`zbB&@3F>&_7E9J^USwz(UJ!@w!Aw# z`=TQ{;TDUBM9moe)?k=b52Q4&@^Lhrw)|OVE2&j{&a;iVv{5em2+o42H2V9Fr$^{C$qQ;y|-Xd>uxK{n}Y*=gN|C(1#LRxfy;2Zq22DR7+$*gXIQD*5lFl2 zw$hrYrrxXgk$HDg!|Rm0%+MxI__(a57;ctE^@_Y$nd3odI~#K>Qa%!&+1C6Q(K$Zk?6Q7`Mopjwxebv$z%7W$(Fgm?;pf#t`a4KDxu>#Er-yFvC%Qs%_U~|uctZU=NFF6WZ^!$e}tV(iL zjD8fVz~IPG$TZwT+Zaj+en>DyLF8;iu}sx0m#X6>1J#0uX;xp&uq+fBTd2jG5hLxQ zJmgO}213S8dgo^!nmK(&x@M2D7FcQTY7<(hcc~pbN2{pZRV}b&aNvVV9?-A)_v(V$fC}LC;f~jW7k>tIDH6h`+`qDZMj$6-(*_jSac~9^5)A_p?)< z3;(xIJ8+1A^2ONDTinM_Heb!;-u&`}x>Bz1+vZ4F&+x>kn{pY}^!?nV&jnTW5^@%D zkE4j{9<3LLPo~@|zf{RlUh2EGPw=9eHKn=WUQhG<=4|5YJ!zwe8HKAa!%H=8m46Ju z3YEF~#M{&M_@sazw(6;yX?(2GDcq*cG$#~D=~?|PcsdM`7mEgwanOC}Vxw^+9 z>-^t7E05HxGNXm$UTS;F`4j}{h1#o2&+!>~dZgw;DBYGbnhHvLWOjO$yjavO-u8aF zc(aCiy96C&hN@z3%mZF2SQg^wGoMB}pfy~idlB5H#Oxt_LP${bgm6)&CRG+i^=T=3 z)bV3ZiX_yqSnaE-oOOJWi4o-d%u5Sl&kT36JYNv;EzZuz;_aa}13q{;zUzBFtN~wP zXq>n{Z7_{|gRbBElqoMbtVNY|sBP{QqewY<86j^*3-uf<74*z6+d+y+}i5@pmo@g0enD(L+>E%Iw zdQW!>PoayN(deL9e5=dpS4(u8WSdN<&lL9=l+PF?UC_Om-?hxn?X#85FO_CW1(#1F zqNXBtmX?(vOvUbBJvptak70fsMaN2Y%nL^l%KT>W@FGqnmIW7)u|WjuaSEIW+8Y$! z`ysnez3%3$rwgPRbiXri5Iv7|d!e8VcOmyoCv2z>M_gR{Tj$lywzC6f8$3w?SnLBlSd694;;6}1#*_9IT1QshR zIp`2Y6gzp@t*#KXajEH+BH4Ux*>lQ!ly*01btYfGoKA!|so{RxmyL?D<01s@SlQOZ zFsn5|R1kz~in%ny9=edj?C_pJL3uWB)D}M~2OBEi!X9AL)-S=ueHmY_LL;MVfFMnT8=D>~_-DbIgsrWG-iDAfy4&t8kb=K=LMoVnj1Bz-&OH=k>{LJy9tv! z&ry;3I=_s@+UM3Clb&b7*`oE4wKO;Is*5P_Fl1k12+sz3@rC%83(@0nOUH2Be#GIEYd<8l1QY#tGlF=wQDBD2#%pK zB!7Wd;cQ5VC&Qo{sorTn2IQAkJMYx56w~-Ilh$A1_t=h2sc7q+E3-9($ZqUl$A85e zDGt2wMdvG(Wq1OCgN)7mmNi@2f*tcICTLuANa%IOOKa*exXF+PHfB`0n}zm09$DKI zPtdbGRNLK`&hfmmOC2yM{PTGEo^J3i*I+5_Ia0=o1S>01uHa`34_`|?tG0|tq3*ps zITpAE6J#O7FW-fH{OoX3x#zId0|=Hfa@?rni0s}?V0VNPk>s5Ud|p5@d`tbEi6*-< zgd#knl3$i38+Vbc+xb-8NnVPnE;1pdoP3UmV|X21$0*y^i9V7*p5p2%4jjPdz)!nF zhqi|eu7v)dzhDp@^!}_1gFwU#0g?Zr=@| z9w$)4{fJKik_X!A9X$&`xWCmg1a&Z=)<3+$kN{|301|>u9`S2KG=N_d@Hqf2U5_;P z1Uet~+yQa~?LhxQLqbJBcOgjf=pR2M4Ein%{z0HWhht|5WMO`3{?Dj^5cp`s^+D<3 z*m#2$ZT{#B1XUhR$^ZZQ|G)@50GkGx^_4N`(aHZB_3kF@@)HaCNIkX{f5@&2j>(+w*cn~n(RdLhbBqc`tIAe7pIlj z5m6&Bkl;m)Kye86`NQ|^DZA%cjuKzIdG24|)cgPv%$IghO$+VqZR3De@Cc9xIe%|YjFY?1`NL=B04E=9 zjE5ay06A5(kCunMuPa*3#@*f(eaLV~J7kczx5s>Ef()H7KE5`tfa-&`J6wc6De|ta z9)}(NnODJ}4|f(lH9fSCp^dBWkw6K!+%FV8)ZLwY zoNQdb7eN@H1|a|T%6^Q1v;ls9m4LkYU$h4xAMh8g1LVX1qP+n5*uQAwAfNOXZ3g7i z|DyfWVYL+j?E@UX2-*-39RMGI41hL(HNfG^{YM(|BTe{`rvFF_f26+NXpD%kfW50L z4J$gvXvSpvs#2o(T2Sr~+?3WIdiVUW2w40-@iV+wd%>VrmN3Z69q0jM1!@2qzy~1DnFIzk16iW} zFsKNm0|1Q_FsPmu1|fm&I5a>nV&LfjA2y)rQ^6n%c#Z(6JxKdOc{(W!%BF@v(WhWg zu>_C}p7rU0UdLci;$aHpbe@Jm22wDn2k=}0DS+r5&-NO0-^-q0+0pJ z18@fj2e<~12T%vl1Mm`H835`*Km-7c0D=Ig0nPxJ19$<116&6v0;mJ%1Q-E$3$OyP z2SC(|fM@|u07wF80+<810z?300+a!?0lWfO0N4kh=tDqk0Ac{j0A>IffJ*@B0EGaJ z0Q~@O09FCu{h%HIJAep)I)E{N9e^7^7(gmO1waSDFu*4OEU>qJ*eGOhyCIg81_oL=Q1Qj1UvV3>}A%5DWMtHa3VI z;($0IE{GdC0r5b*5Ff-3A|yfJs)RsHBLdw&&1gZk5f{0ZeM1UF~p3(wQ-#JJd(m9Gu^+DWc2pK`fkO^c8nL*}Yf3ScoL9A*G z;vZWO)!Bmx?EF#0*-m^dwRMCiYR^0C_37>gFQ+i&7?#{-s5jhO|-j%kK@0oerVVKB>ubo|EVwfe-D$ox4fN?li#0ese9|WI@vq9 zJN(g_riY!&9|Ub1;6?tVxY`8%LC{6JdHA7~^tAtjs$%>fL`^66KO6ZjK`+qV?ho!C zMj(7-5`UHa&+`mo1QDhG92-#b-}C%?!C&JHivI4|A?e@K45)u~7Eu1xQ$YKlRQq@L z!Tg~A2ZeoXFg|~dh>wTo9|QwWdmEo0GpCHfcwoTVQ1r0>K~XV2499FRHg0GiH0H-b zQ8CswZ05gf&4M{DqC@u}F@`FQ*kctrWLzlU0A8+_OF z@Y%!tyweX8{FT-A!Te%S((~|jw?Aj=d>A4AZ07gj2erOu|5;>!q%3dzx9))Y2a6%- z_phA*6dHQC`nvrXp2O(zduw2s9F8^G{(Dx-*W1bNpDrI|H9c&8l>W9@v|W82oZOY& zZERhC$ox+Er|$RsA6k7U{Uc8o?1C8kf2w@XgDSrdz+c3F`uMBhKS`dxKYI8Z8=##9 z7V*8S-|7F1#P>Xy|9>|Qi0bZt2|OCM?~?Rv+&o>;iXc}1X^`J3|8(qo9(3%-KK^^X zf2cpq^cV9#8}KjEKVAJ!`e!V^=MUBYwQc_*{as7%*J1+vB1(VQ^bzGxn+Bxc?f6&r zmmLGj?}G-i|6!ki`nw7KK7RkGb9CVOVqvf)@T zEG#nfOil_eBTddaF#>l>h?5RQ{7WksA!t9~NFBHV0*4aIKu?GSMT7$~ctqIx=l~mU zAu<%nVIG$VSIxuM+sDIQh#W&LDtcf%g+x)pha@-=FCYondAI?xJsPR! z#7I|C0qy^gpto zB4Ihd4+#t#f=9xxg6V_BV@1Lupq!$@M*&oUt8ga9Q1a8A!#(IrdhfU{WYAI#$D3g4ho=$wAb$F~(X228{PaW6K zOvquy+4{gG_xcLvv^33y^##+pM!e&LFJfo(B(sRJ8e%*L=nIWr8goJyy85*uweKxN zpD_ATaQ5xm6rY@K&9Q~g4l{TAQ8~f^SJUx**-g>hrpdT>+nff-`X9~fF`RPGU}4fz zx+7(3Ym4H>PohlACC~nfCHsc9h0ry_@k;vRyvU`Rvf(T@(X$DdX z@Cjq_IJ!^y8Z2Z>LiDE0~pxTcqnl2hD7; zFHgPNEcw(}wzf)Uz_1d}>&FK>!4OZR2aDWF!^!Y}K7BA!<*>GMYfmgszake4*gq^c z5*7nyBl{3Qt%P4z>Phn=^l_fJtM9bk@3NW>YG8VU~w$033UENhe$4$=4ZU4(+c;V={* zisz>wEEo;*p&)OdlfS?JPdS1ZwC7<2?|}(KQ67rqKoFq_epZ6RQCf$@;|LX$5=tRk zE?efGj$vGXY4d;BF^nsU=};UAf(Ahama$f168I@ff6D9rvRBg7SBiO#);|*|40eD( zz_D<{e_t$M|A0qgf%}GcUx_C6X!ox~hOK<%uja3iI+sJwFJg?UX6KL=mKhNf>~Y*4 zJ+sfFL8Y*0MrvPv^%C}DUhV?1%UaXjv}t+dsBRW`z(qM|W;eW}`!-2Lr_%=Pbde4B zZHxH!V=K?L(oSxN4-OJUv3$@(I}&`xRuxlieP5+uY;R1a1~tVzCBK_%vefC#aBnKu zWlMN7VZPM4c)V`QHnKxuIZQn|&Sw9CLG(opwGC#S`lbsCZ+Z&i8~X1@t_alI7RBo! zdZ#0Oh^?+i_J3RyZvmgeq-zdVPlj%^k>7N^U3uzEYp1I=+dgCSLq?O>LYx-OrODx! zm%r}Gs6AM@`z%$F(Zhj66W_)mfxZ7cv&dpUS zT!JVoP`xduU;bG|nQtV_Vd|lI%$DP~YSgzaY9Hs%%)@WUIJq6Puiv*VDVL2od)#@F zBOHE%Q01g(@~+i{K$;M&cl}P&da%jIfPTaKMeDm6k|wkd8t+-!QW@v7mEdkIDOwh~ zDd9Jl3`-+Mu8_obtpx>&J+c(NuU5_|)3GjYv5xfZOreLepULn=eliq{qRhihMAIG9#NlxM9Q>12TPdKG$t_(y+xA+)#^P2?uOEh+Qk-Rx8 znjKoYV$AhKs=HCI5x5)-a5<*mT@IeTh|W-#L>As(rh*FjZA1S*ay4L?1KR|yhV-Ya z@xa&|o@|ALP=bdga3b!X9!J;1!w0DdR<_f5C%Ypiq`a?><53WQ=y49+jgUA>Tv${X zB`PX%=x#)We#`z}bcB&utiKP{kqg2i1uh7S0PAphWkpeX7gu(=vGhz_4vO)4;We3< zhRK|1j1{eU9S-jlRL=9se8fzuy?DnhU@dD~hqFlf_CR%tk<5-{9K$tU!%q%9bA<0n zBojKtz9vY&=2(E0(kg@+)5uM3jc_Y5rP`xxPT7A+8}rr-4Q9h~Tk~BqkoG9%@2F_; zDYe*luG?KS4_qKsyj81L;#<7p!;b<`}|}f)WAY%^Nu7@}fN{%FQ>s;^>YOHXIa{JIiHIzW${B7S`|u zG5SL2t*C^hk=auTX2ao9wfyCStp{zVmmjmYC|MWy_l-!Wo75;S7F&n*J)RZ(ytF=y z97z*(w?MdHlMfChC*X4_EuRw;Qn}!B4BPf&-1|i~&-9rA!QpsHI+g3_S!3@ZO=+$m zR@wH=T!Z?pxtPe0%FIvPPlZ&SeOTi7?WWzxHTkBZ?=CQ62Nkh-6nimI9`452C^$&| z@QAMw__#UiL7}>O6v?S865$-g`6ejTPtO57B0Gxp|G!aPPSI$dIMh?ZYy^MTxRsSMa-B1+n*d4Aot&55J1IQI?#R($? zsjkY@jh5cUT(uks z21l{1+KtcNnsyTKWjfnq!@Pb^Q~E7*Nqxflm)_@&@CS*WZtMAB;6t_+c2!o z8{Qt>6=+Ihx$hS>cx@X;d!P#ZTFU-J8L7kaX6WQAPqUx~$J+a6&eLA~u=>I1wbOo+ z<@88G7G+~i;{}h?>S5C$df|u%Sp9}JlVSxNb6@1;N|vCT|(sK#Eh#+ z7n|)|Q@?<|#-1gd=jm%^4KJk^zA{3#=*uVam)WO-m@bNj<}i3Q=jZu!fn)%X4LFsIPGzb_TwN)VB-a9OJD zq&XqCdLGMtFDsZ6Y93EbZCUrS<)+;^VyEhzk{Pa-lR2D>mgn$29TZ#VUg>DOBS%I| zm@iWB^(DOFGHl$~+K^QqqZFKKSV84o3Lv85NRirdA2@mYeM0qyRe z8HjpCWvUair}ebOQOB=fcDbrg)N`SRXtu{4mn(&iebyB%f(s@`1xs1GKMf1zXmak* zKwsqCzCGx^;Wj8rqPsVl7;$mwX}2S7G(Oi$9Rf1?yMr`c8zW@YU8{tyW@OVZ3}lw1t^hL^EEj4&lS|}hLi{O$R>MvDEY;Pqp%e#J&UD~#1C-eEsx)2UO{Ws=cts7Co z$GBZMUWf~y^U`HKmSj6TDF58L>}jB@z!W+nzsch3q&EveRrwX&jIRY>1{I_Cvj=RJ zFqK5@TiV3;z6!Z#y$p)Uzd?L6LXsP{f0A=Hkft9UDSuyvrYCjRDln_}Aw{H0qAdMJ zagy|?Pm{bYqxP9`qJ9p-h?jg{d0yO&B;iFxl5qW+TW}B%iX@>0G|FEydU!`bf&e54 z3kDY=MiJuRTSu$G&~OA6u9E;#j{%nl$g^l4e-H4*z(1omO733_dTR2*V&X`BCpR>>6ms)Cyf-*JiJ>t_ex#~M zb|k@NR3x?ph%%8sE;fR(tA^Dbb(Fq!#|_>(cAMgNyFa|xh-m&(X<8KZccn?drKr=P zY(8)^VJ9H;kGek#kbkOs3MFw^laNw~+wKGsI6DdCPtNZmfQl*}7^KbjcryrXj|A^0 zAU)h&1BE0|;)iwNl!8C2APwBX+Z4bXx+4E~G3$?bRY(Z5cli1quY$=D77>#alQc#7 z|Jl9&w{yac;{2}Y@&E0dD9VF#_`kzd*kQN|1K}zRyz^>u+r;49?F5VkeMHWZ!CED( zOvbv}wz5VJRQ?-J38=H#v#n zYd9a|LjoCldde6cy-dBfwz}fFS$0EGAgqn+L4f3wi}#k7D`FD+uXMRB4yMP6HKo}C_EufC}<9h*VF-nt+{HTt$I zeB#>5ep9j$#{X+yVedZv`t_47sj<#aCcjo`4EN9DU$d&c7$_DWPPEyz+S*R(9O>F=mNve(;LO{ ziwO&LjQ&5_FrGFjfuC$36a;}Fiuq?A1&gNm5xap41R&b}Q1p@Mf&fnt#gF36K9S88 z&G84*_x62%nlnEJM0ZEA-GAI#;Gwt=J4ucJw|05JR)vm%d(NYULH29S^MjL_1i#2{ z7ZMeAqt9~BUcyWjG|8`>$dL#O_qF{a;;r-Fc2ZN#(xVu8yof98hdYpld+e``09@z6 zAm7DG{t?k*=EBPRB-6v^@&o?Y4(4Bfb@z_{=Y=O4JH9XP7k%cSx%OG?mqj6!il-@rvCWX|jV=82WBMM>zcLfuPd<9l%l!My1pRAVIex}(u5Foo!e>IVhoyt! zk-OLOI%n8yoiY8zO1ABsC;NlL9Vh5Nl=Jnwb4s8h$0_f_wxd51V}ic=ear6s?p3w# z^Vz@5*KdAfUcvu3_&ZnWn`5PVtI}FoW^Vt%7XI)U-?ta*Z@rlBEUU|BH*BN&Eg^bE9N{+r5W#@pEEuc=ixuFqo zAQ)EY8Ce<_8vz9%h2Fr|L%r5n+ibAfz&%3hCFYVR6jQw)Ox}Nkp^eU~|x13x068kortx_r)KctHSZBKA^ zsBu{R{N=1%>R!OJIX=3dL$=5xJk@tSla0goFL#YBCfh&NS@t9>de|m4rWwlM!4#5$X zeL;q7zEhZ8kDRk%ezTq7lap>ghHd)Lf~%xh7ufmKD+iZy;Fb%x3@y$`1hzhOONxQgiQpm(H1H&=3hHMg zkG*oB7U#gx&~jK23M^8y4KfjfyTBq9Jh%%S+XY$*8Yo7$)xa927dSSJ67Nt1FTHc~g7=epZw|VP7>{t}P zXr{;c73$uKXE*I!R#cFz|2R~$+S1MMd0i@7ME9QXu1UNcHw1Q>sr=%q{%w6ZX}{ML z(PvG!yFzmRYy3+;Uugf#nDgeMNP#bMUjI_h+`E$fI7qXU!ApDTnbWghtn~f9MLcqn zG@%FJWm|74Hd`h&#`IdWg(> zy8j---tvtzM2bXI?jIM_k!P?!>@9LEUFM7&+u{lFF(KV{kBy_7_>XRHWAZDU|1!4IS-@m}?wt+d4=}h{D zzy_rOaJ-2{;Yi83GKN|vOF!PFPwv%-9BcUbsEN_$-?!lRvD@YEC;kBSbfA43U?yq; zE=Bydsp{8*{+{@&K7SJyeliSswEF3{HC4`@rM>r0nTLK>`w@J1e>Ja%VzHO*=}Rqw z7HiY%yt_MipK;ahRakR&VN+t|>bJHl*Phkz<|zx5)A|zX|2pc-O@+9l_g{%A?p@LP z!D!vvz1K@TPS{SqzAD>xpVET%!~D9pBMMA2XKpzAIKKX1Lgwd3{c^ISgj{jitFsY9fBI4bq=uSJwBsR UA#rm0(Y@T-Qn~jZg4dt|0Ix4w-~a#s diff --git a/basscd.dll b/basscd.dll index a67d67f0bd16d6164626c9c340d98bf861f11b40..6b5c44e13d72c66b86066936d9a31c7893229d27 100644 GIT binary patch literal 130 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

j=f^29yD~kaI=Up4PoUX= z_JC$sS{Xi9I4$ch2boUSP2UpBoAo%}BVVu_{rU{tUU-Qyka+V|*oUsVbFPg6w#s{( z7$Q`8mXr}EDTtj1uq)@5eJy&|ccb{L>vZan^{D4S{`=$2j1AJQy`S(VkJ=8{9iQbN zDfnplX>)*T*sDLGmu7im;=>Gdu605Ew`#|*I6vRSs81e56G4TFcT1Fo??`x$gN(?I z@)^kxy#X6E*oHWOCXA6LxX4MzT}=;r$jk5+5d<2cGZ(9bCh>U)oQq;hT8rcfxyfg@ z0)@VoZXWIuf2-SB(=A#4u5q^xzb2=`r3A6^vKr(AD8czHF%;pek@jgtNyn+^$;F^D zwD3aJycY$6PscLLbFv*~46b#-+Ht067v*RnMuaeP%{moHkW15?Jg2m*+*<`);Ncvp zOcTpeYi8GFr&n&uE-UU#A(;NZ0{#5pwNCL`^L^lbfKKe*;Un!g94H>D8&ne@Y4gr; z*BRe6#~O}tu}8GJw9tgL$WSP*%G)aysU0h$s}>vBny8w+Fcs8>W5)E$wTyMRn`Sbu zpMamn6@(NM=5ObQ#l*zdrD&(kMZz(hv9eKbBXB!U%T20EE0}AR8(uwEu3c$mYRByP z)#cX=3T*_Xyk2|p;MKt=);5Y36al~1Fj^NMD_Ct)c{}X_YWSP%#&zyr^#d9E1T={! zj`K}SaXmIP?b0z`xfpk)n|T>^g~QVk?P1TpeZ#iCH#UDXUH49pQ#-D))F4Y0!F=mi zfQ+ipQua%>{I0t!OkNocy?O{{AAgy4rUz-57LPgw0u z?ynfnljBwQDVMMN9Gk*6n2sbn@cP(4_S}-1aWN?Tl%U=rRW&dt)8BWvbZd@lKt99r zh2I2@kz3Fs7e@ z>1|7iXu;*Y-4fy-`Q}@9+s}kc#>5fg+A>8;6nNR1$-3Z4kR`l(EX8!`%*yKP-m)Yy zJ+0bgKC0-=+asrpL+e6LY`1i>leF}FNF+2;Wr$z*Xmlx;cXv`09BKq*c1h%10`O z%;Cjh$*3s?a=1o?QPxqurOd`!!}^7EFSZx(^tLvnfJQr`J7B8M@}P9H$Hw@9HgkIz z#+|Y(u&P8z7r#y64U&`ZdBn?0$4Ds+_!>bZe%cI$W$K6@af3tXgzvXmdp~!;y`P_A}7Qn zL<_-TfnzAqcF-vVq5}nQ#Npnbp`;{BblUSNtgc*rj(o--PK@Tj4t3sxNA;YKg@R1A^ zz8t=evx<{bzEy=&U~k|dCMY5i2Xq12L7N5*;l$LTw2*cX!VZW_ z-bh|W-CM?iMp_?FUtYo%sVj-rcEM%c)+aLr;F^93ndmK19c4CA9MUhOHLNkB6+Tuz zQ88pb(%*+UmW*B;Aw+K45416j`L&s)wWVd1U9`hI5arUCx_W9yL~LLE%b+>66`LMHpw#HZl(>}o=B_u1 zU?p0&+UJ!GS&d~?DK*O-n9a`aX2xumFX3gB>TW zV>%(Dkz$ZO_n_9~J|8?dx23W0!8klQZrS~YT#3E(Wr;excd2W&hIkGiU9}&*kUS#g z=mGgto{$Wwy!^OTG<=c$l!y&KzQ-?Mu{ca`#x{>P-Bz(O2h@Dr313;BsptmjNtp^# zqOOYQVKp)V&*#1265|&Z6QYZz3QuMbXQxFK2*ZdViBH6cL&c!DAbkm9{{+i@pa235 zLx)f$8Re4ExOSSGnaGf82(BwidYyr7S4?N2EZ$a2!#H6jp>+YN_R{i~)l|?!VnpAo zB*U7Lga~eHdWK_u&%@V&L?96ABhQ$1#*pnYYWp<`8TpNhSu6CYGGtKWCGuwmExkHa z)GvvR3M9guc!O0eQXtSvg&H+PONsU=DDnVquO@W|JKkdz5)iFERzHU+-xvq-xBc&w z4~g@rNCDwaD|o6yKMsDEHikq0DOE=FVr%>nd&^Zl@B|>}KH^RY|MVR{s!^RM{!c1J zH`aSl1sMtmp8#v`d*O?w#@dF9tk%+&qsb&;90MDy!YsvLXB@@b{`VNUnE{Z&t`4=; z?}N32@?|1Q1t_4r?56DHss<7Z@4{!sA4cDYPcB8akUT|uS))YzUiv5wQzO8GBiOGI z8pq^7R&r9*!*&w0u*eq&?D1cd@J6sgu@MomL_%44g9HSGd3|~5r1-Hw;!q}GT3SD6 zS7ApBX9pEM3IiiB(q)5;MsTn@#iR>`xZ2*A@b`#mUfCxEtLSk{77xBn;66!J(9+dx zcy)#?_4FD!@dRzAHXsziMvs=rUcz$g(t;sp+nRbCG;zi^1zpbjVnIBIXgmd6yFV*G zLPxrWhK6Ej95`yAYZ_4j=_{4o{Q?FJ{#t0f)d{*`o~$R;#HCzDT5|m!&&M1zim{O* zHu@3|tx4)*(b8PNF}g@ccuu1=nKlLpHJjxJg0erxZrwp2mi711@U}E8oC=YED|W;g zSHpfM6xTep#|mHEpBJeK?yz&o%T4fQyy3~VBqK><)RTe;H+H(@GAqq6#zHfbRiww!N(O62myo$LjG;T!+#$c0yYvraE0ujMhYko z4CLnxJf7(Yas}A~xjBNILAF57t{^**8vv&Kje!8X|M9~IvVzwGqyi!a(#irD7mz#1 z62J!l+*krW;1Ny0=mQ~qATPjY3%F=Oa)9j%kTa0N{Wr=LDA(&ZRs@6&qCaHJQ= z`ZrJR0LBqW@msA0$$+E*Zgl~q8sL)sot6WH@{hCzKw3{A^}o{afVcoYxIpktx)z88 zz^VZldw^5t-`u+ce8X#R4{`v?0uD!h^Y_m%T2KwZKhN*_^MN>jyLdpn09FnlFwiTO zKn{O#|F4zY7B~0z zyI4+W4xlK&2fDt$ce>}D zCv;q4wp(Zf7}x;fqz`HmN!0!g;pBky*8ctdJ&{)U#@QAQfQP{W(l$1pe}F&+j-K8= zmd-$^x2^T>cX|H|k#=@=gID-3go39nd}Wc5*3~uFwe^;DbG37{hsWFf5dnApX&4c} zAo%;i|1{h{*u{T@i2-3m0R7X*1AfZ?2>UDk5a_KtfZzrL$cqdh4uB*8(gMf=Ah>b; z(+>aB_VKdynS zIQawqcz|*N>V60UX#*QoY=Fdozh{>KVI2T10CWNnd}P5T!SD7`P?MH5*Y)!Ty^oFeXsG|8I5>^^s5r5%hJTI1nrpz=MW`tY_^4u z;K2Q;Sg1;FK3?8#u26gkE<6MS3r$y7jaJsp(;dnO;eiJsVzC23T-I(bK(LK1t*)cJ ztD~zut+K1Pt*48vjU&+Tw6fB)I=TQsA=ISUJiHJnR1nG!5#$wk1b77iufU&Ph|NDZ zQBV_und|tM;!295~zP8S8?k={j-d?n7-Zp3HWHuV#ykWW_SRr4C&g_|reMfWaIgs3i|^MGWQ^ z=YrVL{WSc0il5^39XZju#t^2{G%?cdGO!AGA-~os$A7ihk>NKVjV51f_9R4`(4Dkb zHiqFVhmN}iGm7^9qnXBmN}{rusnz9ksc(|#35>-X$otOmspq_o#V64@UIAZajA%u0 zPKpqt?$!>vjZ`H$2C&< zf+KHvaaMF-p60qvqEBN#Bw8m{@r-C7awdP&k3~E7lYA;^8OF-8K3-{;MQ%&hba5tk zuflgOb#r;G2Y9sfSBgZX-Dg|Z)gG$g8a6#$#3=&zeCdYI(*i48)P<4_N7)}W9*zEp zG90;8wClhtIE{EKQ5CFV_XsW3Jmh(c`J1WB-M5Lu$Ca6+1CoLIJ3m?;JyS;j#y_|` z66^)^h}-YMNks?--yKMHLsTh#RASB^Ldi{5J*`Ta3r_;^ex%ro>z}{pHVuXSQ zOfF<(R4^Dx4Wa^3`pXYNh!u12_I4NH=C-!=^yc#Na)ysvZeaWZ7N@R{m8>);d=URR zhB<*T%gF~37U0x@aseqI+VG-jk$@~AXecQ55m>+!hKQkH{V|toAYep9FoXlb_E&)j zU=nJ0fnGp~etv#`7wBp0?&js_?dBN(A%thigoFjb_$v`2B19b?NQ0yRk%P#TNR>$Z zi)~M5ufKEoUt`k-)lY5m~=9z}bO8QQ-GE<42htVgzk`fuA>6V2z3zIck7cl9lFsg(D}G z$(Sm0kVNO?T72kNmohqqJqi2!Ys0Tr~9Eib-JZ zN6EU_9xe8)r_FWY%=pOF!Jz56l@oqM6Vxg+Bx2$V?dNK9&=gxWN~cBf)a&7&t7?+t zj9-j0sN6BLKglt1T$~oSO7!=c=)Slg{GMnEoq0BC)cMg*k5-~gCj_|A_PTC+CK10P z-IWgo;XCs>!RDha5hF58)L6?$!@Ls$Dr_loyDuJp#cjPfE*|f?eE6zww;8zs{a3ko zxJoRM-sAdi`ohGrH@Ay<^GU?k0=j%u$sZmp^ty_FW4-8WHd)H{S;sXDUfS+#duiuj_ZWe7mDtxw)%(y^mXrR1|Y( zn4ZMb>+jJj(*xqg6A&+t{tz!{HoV$X!$QSq|1ne`!T(si|ChuHFo}V&35XTkzr>20 zr=_r}RVc9pNQ|@B$NMn*>Nj z#El0cXhS{R=!5!2f0AqjC$Y2K^e`BsIwqnYrztJZbjpIMGwP8eB@^M8=jm=?c)=2f z{owKldhU$Z?jT+H22ZL4w@&Vmg`iFHOE(ogPqL59aaUtLW!7|RE#fw}>{SK&O%K&9 zUcWWHtCQ_&m>{&%qQRU@0RF8!9Oc&lJ_0YVCF!{VO)9sj!zS@BKLZukXNU{^><=w@ zOiBzklvz^*s!xY?$_x-`xrO}0yUtJ=rTIQQk?$%PP9USfY`?E*bdt&=Tt3iR0kwQ za^Rv|zxDD*T;xxA>UXXp!7nu4);XLPSkGigch>wN?jo)s5f{JptUrVuG6WG=l>bfM zEhC|$mYoKM=;#t;X73AyGhtU5Lm+=i4nW>9Lg*p1fB7NcSfW4Wotw3n``?lSf)5u6 zv`82bGzba`65s^=*K$Y{j-x>WG(8BUgsX%jmhCU``A<3Yrx@k*^s?lHPf}TFF6)1j zI{&4VhHIFAOC50RKj+6^Qs)%+VVrwYUfJmB?8sq?ow#u1R6N6%$euL4Xy!LlQK)mz zm=n~aQ}sU6?pw$%8p?|tP2BC{S(nGqSO^ZS zl<+L_WYZJ0p0IxHR`!;lD7r)Ig^j{hM=l>KjSrU8rmOv)3=>A0 z-*{jMwiamxiNVgxbRzlJTQ;XK+#cVhTvp7@P^oT)SfO3a&(-HCFSbNW6LFn!S>))d z=HLB_5A<$-=Cl26p?c&ahiH%*hX44Ja{-GtQDTXDA2hHX*q-3~JS5to75umxKb)mt+}w)e}_svdF^J`zwX+a%ViJ;v2Qs%XBj3ew=$ z^&yh{Mjr-x$d`-t3|!2*vtGG!lgJA3n_AJFkCj1&JXH|4N7i1r)Xq!D~U^GIo6*r-Cg^2LxL1_XMr~ zIaL5rf)oi3=gC{(Ws6NRh4jaLMmXN|j_K*TOkea$> z6@!gtRL!LQjnYlDWvn8Z&nGu61Y{(%gNi4okB7V2`I#T7ef=75GN>47mCD%Hket?r z6S2|3fvdEHlJ=YzgX?Yu)mMFa6J|?Prr_Yv`G?c%HQtb{RjoE#Hy%ib)#f<+HJo zy?%~t(K*?2FWM>T!;-=>gy`aLj*0_Gmlplxv2kZw8i~UJiNs;~yKjMw05lSZ3z2!^rs zb3}E?aCsoW)|(e10OjG~<>h$<0nQ4jOCn+`BBCG>;s36>Q9&r+>K6tfk#2yCC9svZ z{=Mn{OFN_ay{ACJBqaGeTF(5rU`0B!se9v(f_6P6+tt$$w@6 zu&ChXNo)Cs!Wn35Lkk>l(Ym=h2S9}&0`Rnmgxr56q1AVF^tA=Vp)>7&r?md5utK3g zd2sWG!U_fay!^ua!jB++|6aZSzkR|2dH4sTH2-a%$Vvm7?*Fg83Wn>eU_f65j`uo@ zi;VR(i;_KIoZg?_#&BSStEsOO8XtUIMV_-vHtH$1^+sp z@cSPFhDb4L|Cy1^KnNJhkQN-Uc?E320UP)RX&^BLmUx3$gJ{(J>;o+Gq2m?6;R12k za6yV*ab<3D5_o(fxuDoU6|RWMKvD{;vZ8`S13j2BU|SH_5;Ty5@qukYA!y?b*bW35 zodPl%oOFRLJbeRQ1MLNx3)I_GQ4~S!FNGy%-6CM~4&1oIGHk(NpaJrvAPaDaZV520 z8cG5OHNhD}0G{V{fn75TU1OvXiS^0XPA&FpEqbtgkK<>}MHcl9rAa7F-fiW-GCkbq z2Mb+2^orf6jQ!$tc1g5?062EX$WZ!fgYH!m$rvNoe|!(G_%EwCn1B7%-8=rD7oKSB z_`bYf^qGU^+Gnv}7TpX>X(=?&x+|9`o~97SHbb&Ew(!%B>3cZ;%1m@W`RGM2^Y1eg z^sjN{_!+;swq^1Op9#qxmJW(X?q195oME$d#`G5}*|u|@><zZ~reXV~o* zGAgquIr?IhodZ_3fO_fXpc)8X=owiW7#jfvAcfw**F*%1zx8}wtA5Y_b+#iEGFAO z)mipAQu%blJz?LU0w-5-N#ukkhF|>1q;q8J>Q6b!m*(^GOXjR?P0IZ1*Ltuk$Z&P^ zjguuokHd46_J`KzpJH2W@3md2EcMMBvrp5eHmd3T-92L!qs8U*st&U`gFk47w?@Rh zYV~kbY=3%h%Vo7q)egZCm3={mY`#;NU5}izVScln;gglp(JlE;-*4!e4J-bR14HUC z+UP933OWZ+StHM4X<%+(y1;mWVVgd*;3_HB1@=Dm%E6@^xa9&aLyI#KfvpeSl478A zBDe?xjXcS!f`&bj2VXf*i*w*`XgRD11s18<2APP_U0{(49^C~F?gA|Z^{~-xHL!;1 z1r9wUIWRFZ5nZW1ngfBO&BPX`W=O^9QenoG^IOkI=ZVS1TN|#bG-IfiMJZ0Pmba+0 zL*U}nZQlA1I~K(+n(1+Vg}S%m*-bl_6%{1wKMvKbwsiA*UYE)i(Y+_UYZ5QV4S`)| zD!;g@e_LNp+V3?*^jXvGu8`dS8voMI7ur8F=DfKmQs9f6*T2*=_pW3=4$>@T@X}s- z=Jf0rD}BFj5s#eYczC;g+p}*6>RoKyV#K2!FR{LwsdiPd_F+SMUDBHEetM#_p3YHT zA1(N*aHZo<-b#y=3wh6P*?7xtR@HH(qa|nWyK}Z3`7=>&1 z{-fL5nEVRozf5zrFEeaniUN+$g@OB?-2>JXV-l!FFUXO*4GVy4yQJV93}9cA7o`^g z>}@410vg9t8&!&2I!2qtWQtKXX zpTuozYhaFKI+MO3ut8}69B^V$I8t)1jG>mv(vNrPlY2EH#~OY~{J4 zi9bMH9cbqUn2DMg8ElRxKf5)@Vsgc-_Qn-KQ#bVNUw(e#17lg2MZPhmrL2#t^Va@$ zh|}_al+{&jx#`3~o;QbXYF9ekTO?K)8egHnAn(5RlcCxLnWOvX@I6c2AYHAyzer2Q zuT5oHFi%R>+$#n;ZYHN<`<>srOIt>8G#hIB@Ysy?A(R>%Z)_ z8=lYRKGIq|P3~F8+x?6-0s*&L*7gago!mO*%?$>VZN>*m)g{~CwO(TG-?v`JWYQOH ze~;k$sk1)!#7 diff --git a/bassmix.dll b/bassmix.dll index e4138235197459d518bcccd6c8a345dbf51d2990..df14384df9c1f28ab6aa530461824a55e960245e 100644 GIT binary patch literal 130 zcmWN`yAi`63;@ucDOeyz7|h4pfFuHUN$>^iBGbp!E8fN5(fUW$Igha`^=$L;Dr32= zXI`+s)i@Z{rA2QfM@{SIb}Yp(p@x_dNC%fwASwh6@ZJqaCv$q<(b|F!w%wUX< O8#poAkEK~5fcOI*@F)HN literal 32080 zcmb5VWmH^2(=Iw#a1HJnWRO501W2#|f#5O>HcW6ya2ec5kf6arAh^xI;O_1OcXt@v zgPy$acg|Yp{<-VkTD$7$s;=s;?jO~A?Ot2eAQpfD001!m@zWCkQ1=i2L(>11|L-E; zUpEm`0}-GKcbKIPO=Xxx$J)k)+0og-%Gtz@+04Y=-ocgG)PmXB&7RrDo>@*^o7v96 z+=8Ew5Rd(T53L~&0H~m00ASu{rvGQQRRB5*J{leX4f~%(_kXOIqyLcPAIJVzC;4w1 z{eSXC|CjxL^8YWb{*(Xg6U+YrX|(?a{U`1}0sqDSfv|A^!1G^F$`}CP@t^Lpe{231 z_kRcn3IHfF0sxaH006=NG5-HRl7Hh%|9|n%{O9zaytMxD|26+V?LYC-{LU`UX8%!` z|M9;Z|GQ9~fB1iq^glmG3s)Og3&8*E+35d9z5mPUU-Q#{pZ}-r*FTk1fjLz+^iQJN z&p$G`L#-ly9I+k|ww7ww8D`3>?<;+*vN5ePucRCT9^;|$|LP|Tx zDlM2gU_3!H@Qty&p@pHco-BZb#WpXyF*B(Zo{oeceMRt4+0-07lOq)H47RW1cdq;W ztvIjEv@Q2O#{VecYjT7zFUi<^M$j79KE3p;g2%CSAL<-$Lpvx{WJ^e*MjTeM>CYID zYeFWof<+rQN-gibac;pyY8&B(uMmMP93`&b?D5fDSjCU?CD{Rw20(h$j6CZ3f_>_i zndmg;B6=rpQds%;O!QdPaH@fBA5KSiQ%-;^cI`=@RXLoFSe8S@6adiINjY=_yQfhq z9hYDZhN87~EA|t*DVl_INChR53AVC|`fc%w&wE-s!xZs;waD>=l-~n#399l~f(eQ7 zzkY|P0BC_+gE=i}B|1CGd=7SY5P?rOUHkfBdT6s(TURR({vr08rzX{*WT6Wa(rA>W zKiXP)WCXm|MZ3L2s9BAY&|LLi(YVS)9C;G$*JrBqA?B60*-J(?)2BQ~%*>8=L^73+MUDBmZ7e z_ZNB(UmmkemJnvVKf^f9O3rc4PBAm(mIk9opr_OAG@6jGMcAVwzB8K7lN%s&;OjeA z)?fRUjDWZ=jPc7Kx?{>%(NTY+gaN{YgnC9V3R<@QSd$GQG z$ic}ag}y?&Hn8gbbHHC#e<$A7QX5dSbTEZs}XCnXmK(n$!1#)}IX zvWn2Yr}UI<9!|5s!NAU{){Xh>`A##|j0>?nibIrWSBj2ou~2+(caCLA)lt<_p~o%< z{23E+%1+M9ryX%-=!SMwkQIK9n5rzviJ4NC#l*!up}ZT-04bgZI`+@gw5;iSM@OO! zkx0g&&y#upu0KNH=f-GzYwm2Hd(wAB3f1c@_p@TS?r*#KGMXNRfi z(pVx(gP%i!PVlXK!+}Ambh%m=_W_N}RbOHk(lrR~FPq605!NaeLDVmYe`1w!y@S6! z!z@I|r?@l@g5iI-X`@O?mrHkm`ITre=)BN8WuKYM6?rXCq`v1DgGEL(MQhIK>*-q` zmcT61G!^sAHRvaxjh@^B!53!z_Z*7-p1yA!@oe!Ah=>G3%M>he_~dk%(JboxFqLZY z#+C~yRU;Tro1b$6F?~zMW0*hEhhpB*-1Z=86HSSr1Z9ZoX_25k`?h@JC03Zq)Ti z`VE*!G?Ti;HJ zvirQNv5D{pzw0t@8xTf5PBpUS5sxDtHnP^+*+dFI6djMhor-P#q{Tc&Rof`vaNx?Y zCJ$LYAd($Yrvtc7_TK%is(bqC-mj@u1=%%-Iump{0Ci19m69a|&y_}Ghif$A88}`X z0=UvKKFAak2^War{Ka+-7Gd+^12r;!D_h=zjm;lao`X~jGaJB|JA>pTN2Wt-)Ux-_ z-aI2%e94}B72gbW8sh6DGJx;q;FFZI6<`RATiyK{8PktTd?v=!v_?cB5JBiJako<$ zBn80e{+M&bvC(#OjAY+6*3rV__RAQO4t;ptM2iUXE<7kpa{COf&03=cJ2{JWr70$q zW%@Wi`N`wr|EzE{Rq13`VqpubRntl^qF_~;($+~%$Cj~cr($(@iSyfGD4I;9nxoFo zb0wLKCbQ*I)O|G%Z@or2{&xY+cMQ`l- z{}Rhsq2cd4gmztO{fL2NemTFVB<1W@K>t^M=oPtY=s4s#SU(c`flCErcpIG3JnAz} zt@tYu#q=s#h$roNWPG$t11b{>Z;*6g2=BGAW{9eNc%%Xvh%6VEIwv|j)kFEU6*V}% zVlFweQ@HS@)vrSn)%S7*O&fm8HPEcFc?-UTP>JAe3HS3KnZ;EB_oFK6*K5G74z2#K z)xCpPi;?P%M=u%RnS1DrR{mS-?ulBzX{grcNNgcTW$R0&3PdFLRYHTt1P58M<&KVm#d?Sx=ZWopW0z(Z zD#-TJIIgw#H~)UC6q#>d)(#a~vWdig+Lmy&v<#~SG>2{W?$Pb7n$1MTIg>Xm7R4=% zP_D3-H+J=BPAwj5xm%RJyQaglecO^&MQjMv*Mu9i@^Wzf(F+nrJgmfdXgCFl6W<+$ z2$JSrJj}OY@8mQ*&Za4-=I;J}o;Kxr{`6o?K@N`dhec5q5(V$wo7jHZIGN-BHohMh zfb1_;|8g$y;`L5IyZ=-DHUGONwI>RYUC_}P{|^$b=|^bNQU3fKu}z&6=NFL zy8{qRCwOYrzemLKC&%al0wFb$y0uw6eXPUd7+d-*+-M~D_csI28mcdD=(d?hyqJkm~B#(hNcVfr!zp( zjnR76JoV_PhqL#1%_S#eU{KLwqZs~grW9X>wc zz_r?8gbn|1cFvXa<68_tAia>ta{4^=0BlY4(7BA34ca9oHbk~hNg+G=ZW2b=C^OkQ zdILMQBT@XTz&pis7~{6?)A+?CaR``NL`RTb5^JwA{n40;dQ478p(}iAE^z~|N(U-^ zj9M5=l-d`2{B`!MVXhcCBLaR8OcjhB_{HP(*Egu`n^BP?Spe?z;(h>$U)?=LL9`Eo za+Hn`*;Rrs?<2Yj+!%X}r_ep$rYPN9%2Qym_09=l{-QvbU4)f9DodZy=H2~8u&FT} zQYb{NwY^kvrj5#^CGdm$NQ6T~aPqd|Lf(#z&~i<(H178#;4bySE@ow@+ejUX)C*eG ziavQhfe^|(8ZB4zNz#t+Bvz4@{S47ojH!n+C5{BNb31(;@>0ObkJT%oO`{S&$ z$Z2_6_&kPZ+(*eNyh=-$l=}sPzieT{{M^*Su%Cbol?kM(wg7D3nPguzPZZX4=^A-SIN2`0Oe~x+P?1=Zr^+GP3{5$Ne4+|Fmkwf=M zzbECXUL3V@zV^$#T56b|CE)^jJbgKvq0PYAr#UdIG=vy-uLS&fCZH3hBOvv}95~W6)Ecc=>guxdw<10n6RfC^io!e7;YD zMw`ZqRw%GRn){S9y;o=$?$Ug?u!i9Fn_iu)5a^nhxyT=|KjV90eG%HaPS2yE8SO-2u6tRb`1%?GHsDaD1js&;7@osd%o zGH~DS&;{py_ygw;`t>Wf%{+i8-lXJUi7tNlf_nKU+v}2JcV$&RuI!#b8%pSKLy!k^|o z<5n6eOx1+AWf97Vj)86;44!zaRsNjzd*3svg{fJiI%K9pcT@VklYrDzAI3(0m&gp4 z2lkc-U&<1mP~_R$%1{W7omNj&>iALtE=yioP`?*f{yg)y86$$|JgU^G1#mK-Tc7Ou zWO`@z@--)23fxH`RTWx;WB4LCk@;d5e#Ofz4H7Gr3#r*FXcYTcW+2BE@TH&F`=qQ4 z!k1apyy2Ted&0a^;Maq={zxXmv15>F^O=NkUz0AC&M#&%Y+psr7nPJ&wvs8C98mOL z>5ty!ga_a2mEBw4F!@B*zlMXX<0nG`{&2shAw3bzpHFRlb@hYcNcdEOZV7~|u*{q> zbtE(F*M8ScU)1a&)av{m@~b(C1D4<$!Ac%&daeFOs_0E&Y_?!3xkDz9z0lbxkW7A| zlr^8fT`oG;CC+{b3>W}SM7EWXPRek~j6(u48CWHIRtXmNhb4fkgyn39kez95?>Dt~ zQ=7NMF4n#ReS%!q(Q7~6SL68Libs`9M#K7?8tCby2DlyHFK1_FvFNli0P8GCv$zaYMi~_; zm59w{g=BfO#KAhRDVaSoyw2L=CmD=P&VPc(miF;VMiS2*!jKJ^njyRdiuuiR0qzlQt2Nu$)&i z;7#$ZGk@{eSwB%44(ard4%;KtreLdTM9(GGk#^@ycjXDbD`|RHY}=!h2fq04s1q!^A3b|mX5RUmWbEBq3iG@20ah*Imga6&R8VtXx<4u zSZOKKFABY1L~mF^omSy}+>Ig*K)5%xL<-f6n(%P6HjAh_7xPFK991CziV|2QD|wwo z>P2CZQ*I5T)4&^nCZCgcWTE};Uzn-ZCZDn3Jdm$9Hr&*dQx#>$H0xs0e^_L3_gW+!d_{I;d8cR3MMb`P463Q65&9*ALca3s74c7$Ym49Wv9tH z(bGd|Z*IyS9^KE;_-*Wlj#kxwW@Qu8NPBjMX`5{l#5Op`YyzlEds*5$r#=LXDT_t) z>c7KJT-8AsMA7sm5uo1!w7Eua9*PmIYZq|Rbu6R5+`pMHzo0gyA1 z=KX$!knCb$U7sd9Ga-4gou}>6%HWSihUDU^|E2vm{ywRWouNZ(+`MR&KufyODcZGP zSfN_9;^dLJCC)$RdjZM%k<(L)4KTm6d$*30e1+GVuR=DR z2(SOp_3<^DlV8V!wy#?9<>Q{$3)i~PP;aHKr4Sj&ibck=1kcMr;m%R5>5}hGTP=5m z9#C$CB6#&F@mI&3wNXi^ato3JP*F#OG_PWoWs`V2C`GUQo^^zZ!~yM0jjq|OkM=Gi z1avUHnvH^!^R<*%7??#yrctciGE&4U_~T7-r0vKU>?n_Y7e6Cs9R)rM;GxKW*jS~y z>dJx~4;O#V7XW`y)m>mwcAk_5bExD=3D-7>hkdVQ?^kt_0Xvr3zCGwpH2=m>a&afV zyfj_Pn7G@yzDz-S*fh#q{{+@oeG+HhGQxF}N%P@%68T8(cSu#5xKE7zNoduU#Cfl1 zt>tq`!293-s$?CAT572qlM}>6+RzHP#b5o)@lH$F-b_z_w3>2?y?ErqnCt4K%T?zXQQ^>P|yLHeFfNQ^@!lg{4eSeP%CV^`u}= z=5apwC)qwV5;Qwgu)YjS50jo(-AB5@ZI(zDoyuDsV)F0`JtHjqevawxz#Ft*Tu;qs z%1nVvGkd0J;A|M0+`H|**)I-;{v|<~*$g@OoBpJ}Utb0H;J?AqwSE@fw59V9<9YwW zPe=!AKZ9A)>U4qUZ~H+Y?#lc;n(l9ZmG5X?igj4-MPhv!6iNfKDXgSQli^xSkREmE zIH2}YLaRolm!`DB$A|&+&ZcjRKl1C}EaAm6zLjOq@#2%d=`?H_V4<|6s>WY)+2!T3 z#%t)Q`RE=aTad);7IIX@ND*XeoW9G8_33!@tLC~#Ing`4%BN6(OtV2FP}~DI_MBwZ z+XGh(RrB3?bJe5L!|&OSpktH3_&ZjXh=6`f>G|$t1u2ddhc^-NWH5cty5$U8+!`zD zT2qKBUe^p*T7Ifp%wt#WinOpo4|wR*fZ(#kPFrSLPv*#d#|!qoQ$Fr_kW~m!jIh{5 zV3;G`=obXrx8+%yKtADghiEl@^K;sbU#^Rn``%5w8oZqza!=37F89qP^eiCoBKY5% zVtq@^yDBg`7;oy^tQ|sJm_+!Fd5Gez&)()w zl!0aa8ehTy(=uFO&a=))wD9BY-A7&N7W^Y-m`r$y)NoKV`wb-E{WlD3pB1+Wh$K}y zRV>1IZ5!P+Z-H-e0^bS5yr?7NQXkD(tmXHbI#d23+`~ZqOFmjunD5dC-n-R9j>#Wu z1HFymbzh=sdg{c|Xv!hB+AR16r3@&OW}H68Ej^aeLY6 zgWEU-rbYQb0<+3qE`J`rb5d^>7<;~2aJl~y4wTzY_upo5_ywk_1@f^pmICcqiNi;z z3s+Kxou3Nz|0)yAC{o>vjpbhF@Sfq3Ix{gxn<*AQBS|S@uy=I9(0!Si67XG(=|d3{ zygVu(AfTeTOq@J`wAS}cf2%9t(gj!e`wN*e9E*YUg#b%lyf5?=c6SABw`AiNJm!6Z zF$ZR4IqvLlV78}ozJN>1O;HCOA*re4N%g60)=t$3!9|f$zDd(UHlhV)c^9JIv(8Gq^zGIqgBF!72ppSqEc=Y(>a&JURavk^-`#=TU!G! z6#Z4Y3v)F-sk}MG(l$-Je*3jNB^3@hk?Tgl-7X^HXQ*e`4=~HlnPTAtzj5lB9b#}- z2lAZC56XAVnJPCkVXR35p=vcy?-_GLQzLDj{OCj>gJ#!O$=5 z{q&>|@Il|p~-nbQQ;(6_gVG0hnOiWL9w^mk)2ZdU8uF-l@rv!6Uq7qdGH~3dhW2YOyrge3xY~y#;s0AN-8|CX{ zXYnd;vsb=8QnE{#cW%GhZJd%{WqGW{w-wI&xP36SeXyw8Crc~lP&dsOBF4>_k#WBzj6RXPI{4&N1obx(m2V3bUtTLowv~K; z;6FArX-)PQJzn951>|xoffJQ7y~8g#mM;UInm0<(Unb2Ic)NiAUF~>c6?+I`dt>qh zU`&VX8A0?#r?TxckU@uZ6vpL#6c!C;k)9MLkr7rO3NL3GtQUBmd^Z{i zOi=TyU00ab*e||RGCWm63aqmwFgOJD|ICT(;J;a4s(fjn^NyRAwy2Q?Ba_|I*v!|$ z#d5UuFUeF`0@v^CfjD2=aXeBUrT8D}vB<9t>j^&WDHu8kDrj8B;8*J+aqcJOTCS6s zYFqINIv=p6h93%>*2nGD&Qs~jf-;3y(gS+ka##vgmmXMk7Sh-?ja3?WL*j^rbk_67 zQc$3{wb$jHu@B3(=E_%+kVO*0iCMn!NJ&;LOgHaMQz%95TGr-Mpb0;D<0m=Ng!1a8 z>A|R5X#kG$Xms5EzzeanO3+Ny?ZGlE9}gB7iI;NuqalAM6JcS?g?zad)lro|xE33! zSPzeQ24;}wL19@_Ia7JL1&pa2xahqo1ZsVe>pU9dXRkZ?d}9y#T1uxj0v0jvM+y$G zffx`-S^$lxg$u_kFCHQ%6fF=kgZY`3BM_{AKy3d5UiT!ORMzi2tsTWKR~ZI0(q0ky zI+f6PNnTSHA2=#|Py#$fYyS?*D>Eizl0_*ibxPw%ec}A#3o@~w_`TI^=%lfA0$Key z95ufm$xdbe>5G2D3vvFn+S0qc{3SY_z=pJy@|iK;wbK0)J5`b0M1E;aS>d0mKxT+5Flm$d9i#~S*$eRycD}p08xrA#U4AYm3oyfrhLqXi#(Zs%AWqXOXb%BN ztGnyL$$`D9KK;vlU}uA9v2;a?R_uo+j8L5C!ybpm6~0&7*Z!BIgyLw$NWYJF?xddu zE_?4D;APl|mJ1#5&H+Q|#n+rT&m-2&?FfYKOnHs0udJqCRlYkdo1wL;RzYvmSb z0p~XPea4phvm5P5Rwj@Nw-LEK&kn+>ODRuU2@5~Jiq!n5r624hVPWvZ@+e*q2HT$e z@`vf!F(VO2J(l+AZ!wbHIbZnFQ2c3W1@S~(7T{#NxA!MT9*w8$Jgq-fn`I1t zL>#BJ2IQF(z2KaM1bo{>o2Kpi#_~#D{LLt-Y@T|q&^15l#4BHET)sP%7f}lIB8o)` z3akMGTYCla#8hK5dyg7=I!Er#oDVxvyf%+UO*{>`B8g}ISrs#Zmo+*tbW>F#H%M2D z7;kn$;)0~wD~MU2>=-^k-tgvQI})z$z{@k&*THEvN}BENHj_7>1>9vG6PkUkU|6b8 z;5u7}TKRL03p8a5R5o>GkObkkoLL=`Y(!nUCcp1&AuQd)J{IP+WI0Gn{vxPj1j3*H z)$dRP)SB<=g(L%Re{!gF*#w@|WF)`@mO0a{u0^eUlb72Hf7+gW&cD1%`4Jm;`is{uGZI*IP(e=)CLj}ev^A0iUrXymxX=V*w-6xD z3h1QK;OKfK;I0>uccZK~4AoTYeDi|tSbduNyTEbLxW5(be?fONR`R_BXH1ibot`al z=s+TJ;OA+L4lm&2U0Ipa5h}r91@3TkK)WV^D3EF>ML)W!S574n4A-AZU&e@?6huHh z&EK~*qC8b!o5t*{J^HSBRr-xXH!fkLk2Yj;hlqVYQ`cj7ivOq8TMUu&^z`^`YXJZS zFxYgxcukL+(VKJi;uy~u2pwl(bQqVi+lPN5737Fc5|P1DP$nYe@vV5HS|sb!RqWv6 z7KRzIK>6kL!%SA&75gmNYTkfs;;uzt8r&FI8;8|axL+@OY*ZdwYU;Xyf}avHW%4Wu zetsYRt(|T?L73rH<$M$h1^Q+c3rTE2e^HA&Dn>5uFB=t8tLHWKdEu3_G`mxeT%K&N zTrX|>G)$f(P*DLC9`;R{h_K<1Bb!0nyUR= zQ$aNq9$5hh8B$4t^wH+y!6 zaf`kC04MaH3>euhc?N5dN5Zl;T;*d8k2qMh8q@plh_lDpX-Y|X2wMg@-hatl9y?Jo ze%X>5P2bdyJvHa??kjTT;_p)AGR;)usPFR?@D``)S1O#LujpZNu*2J_XG>9fTk!tI z8-nB~#zJM6gdMCS_%$h-#h>z7t)J+NoOtQE`42zF0o^4TGu_X^>3q1lO7FzIlB3$e zp65RmawH>KE_@jbsQ~4AT)+txo~{_;Q=P*~|*=w#W>nADrs)!vo}Sv;Xf?$MaWOe^Qn4R^E(aQ`?uTQ}!Ts3x(eU5eG2r zQ}X6J^bSJgT%!Q%H++B9XDrdC(6xok%%Ldm_t)Bay3+CN znHh|-H)yBtSEZlS8D(MS6Koq{DXyX`f2>DqCR6j}Fo; z%8Hh!h7m@GD9m)t++EyA&nSk6zVA=qq3r+b{=F@9;fPpSy z{13^3O?e}CqkAUVi=O*$j>*E=sIOOo_&AO@f?6$2ghkp*&}1=q674CXix|gL(WE3;UNH6L?GH2QY@v>jZ1+50wDq zz2f;h@4*0c1Q0WX108R=EkEt|>v_HS@SWSb5|18yWhu@X~$}vkCC`%ZtEDIHoI}4$Nzr5$}u69S(i zWBt72G2-osch+Xf)+5=d6!eGujJ)$ypo$4g|ijy(NB?jsg zn=2gZ^y#}aY)KYTRj9md7dvPeRhJ5klwUnQ?zi};`B&H0l7qT$?9R+7rwk9Qm{SBe%hzEbhoe z%wV{<3Ms4j!c*@U!Cc_A8IMec3T-w%9V~HFpJc{d#W~G{>9!ro8sEQpr;~}!ZNf>d z67FLf(xjtFU~7+LmQo4L&m;SV$>QX6jx3@lT-+tsQHxsN=huDgI&sx2prs_cg5&wIvqy808DbrFGKXxv+#0+S&*puLc8Jw91wlt&hsa+9+-sVT@V*%tC* z{%o^s`YbygvRgy5wDDQ;-u=M`*lOGo`@?~C#*Vcm`;URJO~fl4cSyF>Vk1}1x7pq7 zwhuwqUH*~YH1FA^L_9}lVxAvbVnk$^wgBbHMC@{gW>Z7K6!>PJO2qVsHoock+i z;BZ6v^x*9ADiolS-#$MWN4dwm#ygiZp4vuxki9>TCZQ{YP@^gYo*9qngm6!fKm+Y9OEP|9YspHIr$2nOfvdPF6Y zGKZEMxax?J%KhV(xA#&JqsVtwBg%J_qs@IN8K`E1SKb{_8xGQfqQsGs+7ON^GXDAS z`HRss1uGOCT5(Ja#w`trlglf`+f8jYT3(dib=@+hZ{{J@*mL^mJ!7+=6i&kZhEB0$ zBYPJCi_7GXy^=vzd;O(H0DD?Ok4(>awU8Bcw35%cT5U-z zA7HWNRe1QXwW$DL{=<8|@gVrGn}1o#LfC*iAP@%XRx^n^dkRFwY(zm$E}Wpxf?o;= zOSRy;!-Cg5?kikG1mF`jwf_-X&MehKL-se>I{C97EmM4=Bsv|D039E%XuT{_3r*XL zuvIAytJx1a>WFLq_B%Qx^k%(gzUixLR$c-JPyDpQX^S3Jgu!Zbh!d!`b7TFMxaeDv zS~UKFj=w1e_!oo@uS{6Yne-KzA4Mg%TeCOw&0q(<)})PssV{nm6zmuuQm-U*aMtj; zkzAH=nHt~7k1jw!56s+7Bx}mZ=ep0R}U6iE2 zcuSRA^ChEpA&23X<6B|6!tgZj&uq74?^@obN9L7;RnVwL^X<^iRr_V4w!=}wrMe1K z^vSd%f_nFKG;p;8F`08rSGsg0DTFLhGA)IB8$aOED9IPIF$e8Ky5n!5xyAnBj(hUb z_%hAYB(7LbO%FftAGmY7gihVgq`SWPZ?HNlz9>|YpxuhTFU>n?G_cv=>7KdDmVVZK4auhi3p^$ilE>b-ct<%LuJMgibw9tdM;_xLAM;-Il)OQtn4LxRi@~~ zdQR1h=l6Dq0|FbStWH%svl>$>`9j%>#8F>p-0yOGdmRyLwy1l5!CR*6ueP#XjR7sO zQ+6-&T$kEKY{JPOEi@80Q9iGQc3Y6ml3_)6&-JOuM@B;Th^vyJRy7@4!@3p|n{;tb zwkE!`t17Xi8!(!QPsvtYY{Zv&tJR($_GV@)p#c{?Ntp7R-ly=oGcdGX-8)?}!>2cL z3Hg~MfO;M4U~rjC;dv9UNCg?@_Mvv(j6u8UZ6-%eVi@FH6QRV93d3u8Wc{6iq4A3$ zLh~V}RQwE@Nkx&i(EcYn!43DG+!R0oa=J4c; zZpFnsgOJLHFQ8FiUe99s3}uSrJ_WIis&?z9>H6p;<0aB9F@_7@7_BG=vZL``+fM~Y z$g7hzBc?@il8q#u;&(c)r~7w{%rdtbhK4oNj!}a60Th6`^FKO*&Fnhg^?vR?QB3N` zC67m9%jCs3MxlN-#}Wsh-7dS9OpxZ&{^bM#KtHHLaq5;nQxPH3T{Y*H3NQtOp6!~S z<@wUSHId_ZVDjD#3gY<4GC0Qe2NuUJuO(?|#y`+Wp=4*j%up!5cD`VjwQ5#_28Vj6 zvRupaU5Hf2$t1%%>*^l@z);9@g|zggk9W3)J6;-X-W_6+6uhTiBl0|v7963|&1zyj z*6Z$b3+3GeMorM7F?8cZ-Nb@fsId{@VK~`~_L%nF!*rm=SkRQIhsyKRtHV#O^pki6 ze+w+c(RCP1%w_J}oMuq2)oifk+%>3{$*4f+YcKGwT0 zEs{m1&!|YEcLgXw_&NkdkJ`ZJXCTu4$RI&d_fhsp_Y4{yq|cHEDI5+AD#Yp=yTBH$ z{?bwql^x*!{73hAZlZ*1(_=NK$fpCm+FmnXu@AMf_G2QYTJcCYh>w-qME1SPpap0w z|4x~5zf-aZx&HG~YPLBF>-{E~$dV#!oi-2i4P3Gtqi5fe(xAVEvlz8|I9Tym?Y4!S zEw0?3^+zKg&vWDVmA3r@=2T|?a5)XbIX#%CQ4cAFM`*`p>!~0O6_V1hINu$r-im8! zfxACu=GPWTy#uXEeMDjw95cm&^X6?I;iyyvsEEb!)|cz2HO9it`nUO|e;S9yFJR-* zK7Jieh~(7$u;Nj!2++41->F|2?Wh>joQv2!hy9Javlodl5HaG#@3jGS4^esU<8ay- z@3H2ouSZ0&`|&44e2pG~qO2iC(92z4`$38IwshrA#7e=6RZEPQhX7`REa*eRblmS} zK8R4M%5-&e^FlAW7Hg?jd`)@#PTr@tDxVH#f>W@6V)idi<*sNE5-!7BmeNdE_ge5r z@7$DfdO0Q&S%=&-XXo8wA3>oi5U|EIEaakN%o@f-cI5IplFY8=3*pE4AwTdCLlxbB|i`P?A=)O4CT@2Fu?Em9a$>k z@TlR&d<-OV{})MuRgU_QA&v)WsUz8QOUwuLT-2uu$4J!X9!-1Wk4Z0l3w@j05J{ff z0CePkQqr_E&qfKhw&oWUzW6Iwyasmqp3Txd^u)L`n_RE(R*$XswP%9~@CV59jA|0cc#@oq!M zHY(dnO0~BTp{#CtD+u*t z(&L`e@%w#3I}=vAWc`coxpS*7yQe;*76N;Z9Wr!l>~}^}<-Z5~n1`*HNKS7vL%e%s zWB*-|OMDO;s86VG%p7YO^EZ2hl}Vr+4r4@d3yOOuQIYf0aqyyezsY9hfIp?0(lPjU zTt>ie%$Eg`ENrm|c63(Y-1YkYV%&M_?7uHS1`{sEXqlUDJPDo4MJg*p-->>k$v$d0 z7x$T|UCR4(3Ub9C1cZMxPTmI1?k=Q0BQA=tcJyl}0QIjIo`XJy+Fi{cuia>wq!)M3 zxY<{NvWg9)rJMHJB?|Y8mp8pi25n<=IGo<>B^6FfD4-5sF`iF6Uus3IF{)1gfe(Zd zT(+GT)99t@WHC3l2ipnybEN_&m5zHhTN=>A^Es=pj=peTLE=Ah+|BHCnJ`4Y%uN)uc(*kEAhEes-{|fNPmSXkje34iC*RSPp<`5xkpXh&apDj<R9mS=@NFU}&9Bk=a>`9a<5rcPmJpF5}Ef}`@nSLb~5_zl&Wx$#xLy04jQBbC*Ykaa7 zI1i*ek9UBD)cqdXQ4VWKtU1Y1=W_iM?AWu>Sp_FGQLR7B_p!;skJ%6+aQu`p{s?z+gk!931Kl`nM4lb3C^ek+<<~De%gAA5$X_a# zk6m73w6H-otOMXT23eP66cAioqT{AEpI3T7jkj~q$~a#li)69+7>U3khuem*9?Gth zJIZC-C}e54$dA~T?q{Q?&1HVjub$Vs6bX>RhMvBi8Kg4dTxH7`vNR^ZCHU{FQ3EcwQL`p9{d%v4HAT zL=AKH2fDvSSl$fYMhw7_tZPSggt-;mcD|ZifjN$YARztI^Wky zWPw8|M$aeU?GMQLN4%iV+J!<5;#E0h*RaguV0a>u4CQ#|9T4ntZG;wbu? zu)^0Vo!}&FyFA2T!5t`vV&lkn?BI2Y0VM6%tW1*<%&=pCs}(IRlI?VE6Xrti@KEZ! zvOWF*_0qr+JePI>GnyQN-Vul0Tl22H*2hPiM!7*p(SNN@ag9AdIs`=F6HAQlpC#WfHtk#2bXMWgmk=jHz9V|4NkvF-V-B&CdarHq z^Fr+Sr<9vI#wMG?zh1o;xakZtEtqpsI+6Q+?O(~Viz?6D?t(PZ$mj-Zk24foS17T`0TiT1WfYR1+!#ZPHAUmAZI{n`K50-wKR|0akP2I=?B-GbfIL zRvyQgTQ?IAI-ejU=H#=PUZ2~me6jULW21)gJ)YGD7o(>ykNay6BRsPkK2jo*$+uN= zHBzn%_`F1vf2yT)5F0H5U9>q`tqkXk3+dv;9y;547 zA4k(}x;v3F-3a^d9^sOA2)Bl7w;M^Wmq)hRQ!_eGvOXg~NakOjYxkL)g>Y+d-jc6^ zA(6>b#D~ZR@ux`eKA0Q*LGaLw932z5rJ=~vV793>K!e;e-u!wu+i)Dzh$LV~Uzt4e zfXSaUhFqQ~CnE)zc(gTH_u&k3M=R$jUXpGn^^-@+B?KocpqmMVq+70UGGe2u}r>W=E6|Z8YAy}dF0I5SA_J;X{l8G4a%DR1e@qb4_K$({X3 z>t}zNKS{JIz`MqXnfDxii4j7VVo{Cfd3=sbBJeSRV}(C5NiQs*twsXR3H>0!Pic=2 zLMLM)8$WMc9$n9kshl#;THY^rG<_=ESl@1F&Fl4>P&7_~^pd)FXIUO12wbZl@E;^l z6nTnDfhY^UGdL_K3keU&ZP-^s?9Ug_W^_*1&1r)~w&`}JEUt|92RJ`TVm`|D#dw%} zYWXaotRl%xDJ1fDB(Kk1+HZz}Ie4<5HNa=$C67ad+25H{MR48xz--M?^nqDU!+2`j zuU~)ztzEK(R=Bh*(bnd=8Y!R5aiVhX#@1<_u$mz_{}#>3Ignn1infBy8ABOr*GJav z501`mn}Qrp^EI?hHJ<8YwP}7sUxnM?-!Q}dMD5mgb{-qD42Eqo?N^-Z)F^S`wd_=RQKr&tpIt{@|&s zO_;*hOUyg|O(&N_#EDzpR)%k|q-%bSeT{M`0wPoflX9kLYqiP~A z#MzwUhwE`&LyGMsh0OA%BBFF;Q$|@kr5xsRD9Je{o;{`Q^Lt$eE+wAtcUZfNd}^2|2zZdJ&$t^vK}gY>QvT|s zbzbhKk7w-!Par7<0sDa6Xgd3;-*IcP<6gc{nYD2srIrlB^t1cL4YBaWhdWfC3A;o7ITDqB^{NJkaK@mo%Zz zoB`4O!-niSKHaMc0>8d4=6O^dkWQgCkzQV(hD8Nw$Zl;yS9dR zgX`kjp%%}Nn}dQLz^m2fQ$LU0Dvp2Td0fk%{?42MCyTK9i?EnE`DFV0Z|krZAX2*DR!V;JQ4gNfD+3qJRX+l9Zqz z0-~r$76Cy7-dU9I)9-rk|M#y~^=`eYH&pM;>C=6t=Y;M)J#6o(yb_oEjpe%Gu(IIn zL?z0!3tW|zZjpIP1p zInj`|`-Az~3z8DaXQBzYOoxn4a~^gG6MmL;q~Bk1WRjbZ>dRZR*0JRI_9mSsD{5!7 z&uuNA;J_n}=hX}(8CF&2m)Ts_b{m2x>yF%OgtJnz}!x4pYw70cF*N1Ra=TQrdq7i{qqbhq zQgjhJP@&^0%j1jp%E>_XJFpFs!FUDIh`C!g7ziXzCgh~PvCLgC-C5LDs#`)*WCcXh z^OR3D;z!a~5TE`&TCbJ#tyNk1bYnmp9<;DM9^s-;(sXBv>#Nq3xo1gJF@275IwhS^ zmi%Q}{p%8>mI`g>d=^= z!yelBy%e|RBz3emL71^&>F$u^^7e3S`V49}MGBU*+8W0bbL(r+IE+C5X~Ofdq*o78 zBi**dt8U`svvVUbMW6G=)^ZB>c|RE!)~|jJRUO2dzkD#>ICx+1 zwZpjdT+zawY|@*;t~J8Og-~a?p{MK2m$W)n+O@+bDkT**p4`T`o0@+!7*V=CQc(G! zx6X_^Ab73f(pPGdd4{4o>v(~j6~jkrley7LJZ$%gv-2M|9(gWy(X7VC?yU_`hU>>6 z^NRBi%A7anl@{Dc>METo&E5AtR?tg38%iseIN9qZ)i`J99ll2I)U32LVeh^Ceo04m zfoRTed@9(~FgBF#NnEV3M)PKAKz3x4Bo#dOL@^b?kuzb8RB41qLb|ds-|HDJyyxtw zcP1R6HV*z~+PyVd{AkrsbrSAtGI@qs-(TNWfYK@^ch^#vDf;F^m3)!oW_h_U{SdjH z7tJ&a*F#w7KE6!#oDtwLKN{}Ih+3|+es1MbYHd!Jur}Q~)6^KXNLjhtvlsDkjv;|T z)ZDf4;oC;7giWbigI5ssm%AFtSeRnRsqK+%W^*KRn?~UJ#I{H z?H10C^OBq4l_PnRcVyXyfWN#?y1Jf>omXw9&gzN{kMjB*jIsK1D92qvcE?yksH!t4 zM9N2S)X&bin?)u_%U?-{`@tBN+F~sD;oZKY6d591$!06B(^hz%Rn6-S+87S%Iu6}k zzPikJN|!rNoZt<`Hlg{mH{mnXRYfzq7Aea?-BYj!%C;}7&*$Vb&-%bH-*cZ=EA3G$ zOuN2g`ve~(VV@jS^qwz`Ad3Vv~IR(FS&8oGmF0PN4E_`w_-JCjAYUxl$;GH#_KMok4Yal z-_+U=9$O1Gl6K_O4isf7#c=R6d%}pOY>1N{b4gpk+EzY&t1|dzp#1h-Y6Gr_&+MzRH>pZeJv3YwGMF+8!@%tJ@*GXI?Q}F3_5C{mw21 zZE`JlxzQt{*36@bdJ_r^UAvMDzPG2sg4cZtiJb_3jJ{M~T38`|eb-K7+juu)yiGk5 zp%)kWq|wTH5HAFs5^-3r<=lP4n>;z#JGv8$%P!Ons@Sie+T`CX73#Lx)p`zP{HC6dXMJ=SFa{XQ&j2u z+gu#W;9hl6dDoS6pL5X>$112N6q;f0^i5HmChkwkK8`!&>WuPb6TL$;H4B`(d{v zsq&@bm3l-VmyndNha^dn6o1xYEWR|&#nVXSVYoQdM*UD+9G!dhg$uC?u}K`94DX?H z&x823y4Kp1YgohRiL#IL0r7qd%j?v5ESXb8mIeAzJr;LV2goBN970B1jGaYcALK-I zuT&?5-jrZx7s=H<%d1!?k1y-qto|P43aZf4<5)m+q-d0E#|To=zI z#)*9W^eNjjCd8m@kcvIC{&6=~htzV_V*Nel`<7{$%XK%7$888WnW9m=9h}WOEz&6h zow9E^O0`3dUzyE^pp{zVC*p-AmTV@yyJtt+v>mZG25ju`uR3NF;)}C&eaGYI7SVXa zB$PoF8Ym+1z3}D(cZAl^6E>+K5s6-LVxCcrArX!Kji}vC(qoB-r3gvX@5NuSsAKD@ zjn-hf1~0r<=$OF~?(6VEvrPjuIypmPgU>DknDo4J9!9AOX$;LQbcmg0g7JkGdAD~> zwhy#trgA}{Y4Zc!^IyNOtiJi))7~<+y|UFDia&E@U}Fgd9TBSlw{13 zWCUz>(&YpsGLk$jFJ-P+S@q|!bGuhZdzLD@oYM`6PPS)%YkES_tlYaz?5WSHB77ip z>tRvIJ}Pz7w0Ujq5&3%+z3DYJt6p(S8_p>dN z$3w$BN|UZ@`Ktk~vES86-{tDLY+Y)$WI;eI^V^~=pTCn0QibK8DOs2`fpQXiM))WU zk~)r8+;F5-Q!_frir8fuKc-f+9>-WAgC`Q8Zuj)ad=wa?q3*epN9Zffk2X){_D`AD z70RdNJ&vzVPfnhr+Y~Oml%u-#43;rcy1Mc30qmq+SYq9y#@ynDhPpmx-Zwov_FQ>u zImK-=18+wkD(1E?KKWW{{ki4R3{`^qE#(?%Ed3dFS#Aaa&SK^sPCOp!sp~CO7pNp| z*v+1{Xx@gnP*p={}#m!;|1Cc0JhWFPb zSUsrnypi>yuB&%6GIK42)%`ua!`f>cRX>Jlq3_C{RhFd=VV^it?t*m zcmH8|1!|sUth))ibky!#|5GDJ>8dwV6(Z`X(*ujG4@lcP`W5vg`|nlvNWUiNq&8V* zo!)a{6gxtpEs&H8gWqi5@FtWhePraCtbWE*QRDoem}}SEyIh%uIO(?mn3VcJy2s?j zm*NaM&uix0@u*E#(U(n$(62LOTZMcJpTBxLU*m8ud3t+(Xqkg-D|YcwE}k(9X>eI= zvIKrpmn}UdzTopr)^1{{Tq|btsr!{m9w8fZM*6deM2xsqOjtrfoOi(OX8SOYfQz~|c+@cMi*`D~*4@JlWhjH8{R_ zd=|VBUR<;~1VPI?dkcoEi=zvyJi{+m#nO9|h9t`AiY!06-Kshyj~MP5?!4BX*r+ds zz21PDk&kVB{3tXxue7ItmCuJ5N_cwb(S!2p%JTcY9}7!$A!zN^rEA++gA{*A9^AvIKbaw{>B+c`ow`(V>?* zcu_-i8I)h~`A)V>+4t8gaW(op5PwDS{Kx3nx`gbt-jW#TQcYcC{7p=D&Wr4-P$|fS z_fpKI%!bRl{%#g_Az!Z+*c(~jC)Q{2#GbQ~5gdGOALPud^zh?ZL9AA|mcFVpO{z4W zp_aUsmxgYGs^WNI$A~PYZ+&%_a7w&Bt8B^)PglSZn09^~cMOb#zKwx~f{vDkekP1F z0%RhDau6FNvg``+gaUJS?;fW^mK@p6&uMmnppD3eo2SWVYbpjP3n;BKY0ti%7@bap zIH(c6-{K5QaxRAnTC*MdB8pw94y1x00uyZH414gWTo(IxjHeXe=fAKbipa%-?rh;b zKc=l$MnEtcdq;^zf}gytkV_7N?kSb1BP?a=hA?=oWX)PE^}OWHYBUf^pX3R@sYo9m z-kYVjOdQndOtc`?AnL@r4%+~%{YoDxTYusy$<5gT6W*F{7k!lSa6v7FtqIF|Ownk9=AaupfEOr(!mP`^YN z4;8>AoE5uSY2OjXSa_rcKFvqBxQMn>-*DnLU5Z%eSf5_jOAeHMw3`GG1SM?{JFS|!aV*R#&Bxak0 zH2-A4r9|a*SO;`a(NeIt%Q&eE(s>d&oczc?$;jV`TSYL3WTkpkvynK?B);{E0wTxaWY>AZoyS8ql~x9*`xV4*=3w zf)Yrg2@ZXL5rMow$rfCpAO&#t1>gcWJoc&FzXOYkoCSy9)QLX zaJcQ$or2_nw7P)XaX;s%07UQ$p8?>*0?xnbg&+YSg8+nqg!cKhAsRrh4(RNGq%Ql? zdjPp{Pj3%7fO|oIz@eZLAivQ5^NT|K`&UByEh+$d7#I~x(87WAfA<^&v4c^7AU#lv z>mM(0N6X)y2P7oL5&Xa7|MDJq2owgnMM5!z-rIAiz}{|ml5@Z<5{FCb5aa~yCGmkZ zd0By-slFOqB-D6<+_-U@+WKMJxcTEn>V)TD(F|BEzVGeLlQZSU(^(J3hc;; z5g0fTMvOq0k?gZvxVr9H*8P(Y;Ve6@g%&uXk9Q19WRM^t{w4qX{7oZpn6)AXeF)-c zB9^{W4z|kAF755@0nU%$gk1$D0@ASc^0KtIJ>~8%4@!Ps9#}^=Z#&$zqQ9fJHrCx5 z5P*`ht+$4|jgO11ilv*4i!F`-hri+lmp|G($N|0n z0ynQ9i1{bn1+uaafn3c10?$Fv7tl@CP7uTk^7b|W;5iRW9_ZW}3kWi_1a=S5!~t9! z=-(9pu8t6N1e7nDK@b_3yX0X0wa`M45Xdd90|2WBL8&GH=MO>Of*`0l5bP)}K+qC6 z*MjmOxbGYQ>23Mv8bvo>TNif^ zTW$A$!>Voz2>#5wU!~~(=SmGrZ>;0LtHX)?XEq>*qqn2G+kdY8<4sk)3U;rEnR^Y`#C{=eTaY7{VvCk+S7m?Bpct?Wj|)x4?Iq<{g`q;=Zvn0i=(&szcT%b z2Tbz5mX0o#RxUrA{70>>yARg--&En+|HHj>Y`tu~f5`W1WBX|EKsaUO>gfNA>e?7LsBsNd-Fu?(e@Z4niM^PYKu8#gL*& z@Iir)1W(V_-_i?1jwZ#G2}lT3+cQ9qWM+K?~tf2ohd^ z60ml61!x;vl&+(_o1>dOO4ZHV7VBzj;|RtYby^;!qYD6oW}!VSB!tEYV=!Wv6GCVc zP!vXEgv5Uq(Kf$GrhE!R1|;8?1Yh0V%?1d75ITJ~5ieU?@VfvwP2%q1YU}3h zg;MvnIUqrh{96)qI4t+qE`i}eh;Y~yFnq9BcsMK!$}K5w@}~+|K`=7~Q%H6U_t-}2 zzU91_PD?c$i=OM5;aLbs8|k>Zp*=i#rdj!B#kVI?1j)mJb$v$tBOW@+){HOu`1oqs z=h%eJ?hfyvNLqTed@pV2TkxmuY^RXG6x%(O+BTj)4KI~W3Aj~p&zD5`#?I%SuJMnw z_D{}M=rf1JQeW<8Idt5dqxqq8-nAvHBzR%4{>kJ+J>k*8XE8In61PZh)kS+eXDBut zHR6CScJ^z8YZrWq;x=3@(wzG8hEGnXn*P&g`sOI*iCG?Os*2#ZgG50 z-rqE<%Xrc)ot0TvAzRAC$_mXzlth`9N0GAzmz|_-Jmiw@kZ|Kke)xQK#qcdx5zTn) zQNPH$Lt3H>o!YC0-miJTocqq_Y0b68SOha~2%c4o8!UdW)U|vJWu%`W{iOQn)SDFk zN)`p9M(Nt%!E;u4ac{;p%a-dazO0bzGcLvQ`trfJ8DmLwVc}b8`00KF(|aRT_FuMd z?uh2=Rp!CL{DaUhyQB*%$a<}&K@H%J;eHKhdW)xBlt%4@R$F~n70m~XK zg-`NheV3qN2m}nxhvqqG2o9rR!8POsWb*U#J7`A`YwLltQSR6PG$pRd<46)T@c|P8 zf!4qwk0O=O3g}Zgayc@8KN!~KFKPaV4~BI?Gvk^gMbaRtz%tfIOsX{B^`pGzC!3I_ zx>U-uzy6uYV6Z(T5&8l4@R^e@@7DH5{E?e$C)Q`G!MrDKLY;D8EQ4Gx^!cqLA9D?qg+w_pBgWra^T%>KRdz=*Jw_>xYz1h+O?{J}!`kf%UFuH>?L4FZlNx+%H-Go-Scb`>?*? zycLyE;juD;t@+dEi(M6n9+wSEBS#WQV>-VC28cGD7rC!;he@VwUCeA9<ah_Comk5AB@|6hXWcRPk1k4Z2wgo%b}p@*Ly9Khc~n%R zw?Q|*aiE`geWxesq^3wtaQTuEXS-B)y>2})IapwFOn#UgLL1?;L!IKc2>&rv&=-DD z=>H>A1C}|Mo50kN9he$-tR>EO!(h;YxEcfr*MY^+aR)yUa~iB{M>|LBeIk^+kGF$6 z*3mlvXK`@m1|x7^bV zbPVqL#b;h$+P##&t+LU(+-%qB!S^}SfKOznZ`SDGkuA$qRb6?eT2c7!6uqA87eUh7 zJr{NK zxz?=eHPSXayoH(il^p68)sIYf%T7P8ct&Zbee}@a<-)y}q4=L$Dd57wmb70DjwT99 zI((%5>}R0HosD?)gqOoo=va>q$7opNGXdkR*!ihS`5GbJK^-tb(PIE%q>xk};U-qynw$;Bt^jS3b;etjd- zH;k)KgUleoeNWyCex6?+MvbJ2xS1iH@hAp|uErB_DlBS=Vw5g=)8kn!Tz)rq%;Uz) zbHU+QN;;)$w(pI+hSa4w1KDI-H}mvsw?0INFDSCKyPdpHrTM7L;cKS#NV0rG$qy44 zwv7(k-1ohhDRJ5u4~+n)-z?$;l87L8Jup~D_sG@MCGpVXhYO9-=mX0EEFwFa?SEj$ zC~yV=g(OB3qVe&O;1c??9g@V+9Yq4~4~@o2-j66~ZU!iQpxjfOW}(YwU?U?_s% zWj5z!jZ2Ao&rwSjr^gLXNp;>$-DvEc%acyj!tdZUjtZIgVto2uj^mBAd+)|$&yK!e zQk0y;3%tR~6vC#ECueJUYl0$JSFB&Xzd7wF;KQuhW682!AUp-nq8?jxyk=OZq$m*D zVB7fdh|Hw&UeZnSiVcH%`NQ8{d>3d)W4-SiF_`=fU;BAgC|Bt2cm)nPL zHzr}j6qemnB1(xEZOw6E!_;r$GartOml+8t){e0~T{BTu<>Q*wia#Y~2mty zl1|ES^Y5O-Cu*~_gQU#9=IVrt&eVJyB6fG)P1wqRIl_GAW3UzB=Ge>fbk*^iOY&3# z8v+(-x@R(WKgR@m*Jb;Bdh@ENyO&QgNS)Y!Amyu=#e)c`SiK(2!wx(t6h0hObEp%& z^8vKJ`u?7-Z&k&GPmIsF76g->{oUB#+e2#fvA-FS7~rtE!8|g~bG}(!Ev47YtxrU+ z6)bxGx>SHEL59OZ3Cjn&*4rZ(>29lfDMm+W?&M}Fof4t>dKSs|82`}ow~cY-8%@;- z;}I;$b%(!2f21@fNKk*Oij3_HF4N0*JqsUDpE~!!BA==%wL&Akr|nKSw-`73+wJ>C zvRPXyB1Ba5x#YGqGBWLKS4)sS>jE6Rs@q`4#eUrB#*|Kg)wy*m>kRnIoFarx7vUo&)F^j` zpyKv(w(O;s%Ct?t}cEiNiCvs?C5?)Ks2_X zm453f(QSf~cV8((g|E$3cFj(+)-tYq*`RwU=Yt^b7P(30Q$%z-oRk+GPRjY$*n*7! zCY+QO;3)qZQCy6G6bVoe9EQLgMjyf_vWQZF*&>i|Fu!;45B-cK5Rrp8LD&*9Y#tpp z3+6ulAskuMrXq}h7V(c50e)m=pE~EMGh1faKF+VQ4*Q3NufeI@yK!-}1V&T{BPwBn2H^vioUo|;un2Tm=D)K_2VkkWj!`Ah- zboIc+4RAX#TP%tnr7WBiP8^30#}fx$ChBKkBM7f*Sk>XI!q@K0gE#53j{G|BaeCe|G${yVIpW&p1Ca@90nFdx9#o)y7xyGu9LITx62oQ9jRM9_9CbkXqX{6Q zk~Iw1U>p6$KZR#rUL zj3F#{UjNHoScQ~lxzH6n=co)$NGQ!oquYk+40rvLG44kK3)c6i2V@T!ByCzTUYsu^ zcsm(#-c?R~I2r$={DlCfo}LQErqR^oFDpwfn-$k31VUOkANotQUn*E!tc*_VPv~@= z8@y3-@+gZ$R_j_u@!F;7w&xc-JMg)yWoIG|bF>B#%4lp6*9xodJ(V0@zn6JtIwqZA zz4?#6d)SwUrsM{ zR2W><=nS2wP8-+ZUCRIf`qES47K-+ueVLBzrj^oZB* z+h-U)`UvRd9}XPwu7Cpv{Cl(=4u?XTqs`FgeqYY&K;{1oXn<$|?LoA_M!+k;)!J%5 zfMM<7g+Bfl5gbj=@JBMNhb3CzfDE{Tz!5~V9F)uV{yqoOnI8+hyM5p84^az3G#Bn6DUcv)mk;JDh91N@_ZJ5FUu&Kp z?99aZg?|Z1R9e4ynx`3weN)sR|AjkOJS5b|>Nk(~f!{Yr73EvHM@F8^5eWGbJWnH_ z|A!&~;XD}RGk2GNM1S(j6^*^zJ0o)E}GD0~^oo z6t5@KDSQ4d1z|y~k+aL`N+tANHcf82DgE;Jj0Dx=S2IJcbG#<^Q;qbI!JQck#}EmT zJcE08N-V>G?mPo@r|^O99DZL}*GnLK8+HuICa>`?y7RxLTX3876Br>72tH7HLK0|U zA%OUy^#1#n=>JpwRg%V*ZoY1E4AP_ZR3>_yAQiUhP3>o&baQ7?6P|s>cjLX7jO_?J z$`!pe!5r~PmQzhw)0HN6CP6NNt+cV|5aS@h1F0GYcCJlE>{;n9q8JXslUv_TAM;W6 zAh~aT?g}9@R>ja(qY^G9_jPSTNc@`Yd%nUi#>aX>Cn+_y$h%94>0I1{4!a!S~l=wC<|h%*Hgnd z_;%`Vl)}V^Dv!%$66vmR8%7$PpNmwHXN`V8Sv|yYFGx<;C?HV>gRhZ-P;Bd$LM+rm zt0&potKHu(-;K>YP=B4Er&{;lCj3x$ILG(@l%kWv>6)WR3G@lHXpV3WCQ9(9;_~+5 z2b)g;zkMyY@44*jP%j5d;C=9Wdx2`peHDfaJTV`~?X!Q4y%PSe&OtQP??8nDmFkRk z{5!Y{RO)_k7sPhKO>u$Zf8G@>dB6)|)4vF4>1g>+Qo(-+2*T0-Q*|o#i#jc!gq7Ti z>}7PLVKJA)lm>`FLCn9Y(?9Cl-(MK*t5c=y%9V$?=DF!A1I3(YSo`ihD#UtN3%=9m z4w6vP{CLq8-zcuZF!t(U!cp=%G4^l7LEDl;R!wRt)E~mfWA$A3xOVLaJY_!!6OH8> zldrL;?b`NE4m-co;r4;lcnf-aGG|LPzE;y3UzKmIm5uta(Hx>6rDRHL@-AO;#F1l! zHF!GI{-RZRt)>8V#`~McD$h~Od6vj;9S#sLxqWz`y6TloMqnpfyLaD|GEr39_vGW? zE3cm-31=tfye-@;3Jd}dcPSXX{;;J&mHobH5_;@cb%P2^#Xi+Z!FLprZ9PNPVb9dd zf}fXUZmJh2^G^6&I9Ypb6kOBu)+akfSzk;z+ysQ@4EDF4asM?}3{D>OPeuOgt|2EZ zAIFXwd_saL_>ciua?{Ba<5A)2$?*~h^od_uhYMnWLx~3QCM2rOyWbZIhD&H3E|{6TK-Cet^)?(P zwY#CaY*u@8%5oF8)A_l#0gEUc208Rq+i|{j>Mj@Is*&=`jrPoToQjMu543u^1dLWc#I{Z@koC!Z#(=kRkqSI+)UY);2VuU~r3zWiBLU-9&1Ufy0Q zi?Ny=LzB5d(QUkIb$gAMsk^cRA1OWJ2!5r~v5+S#tvjn~YSWKbDT;U)IYd1|EKrHL zM^(!9qPX6oV&08+pd$U`p1==jpBl9tDP+wAo0ugRu%RZO5ZO^=fVfcs!YX-#%77w? NS2g=rvpiaGjqOg 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 Bm0SP- diff --git a/cnc-ddraw config.exe b/cnc-ddraw config.exe new file mode 100644 index 0000000..f4cb1ce --- /dev/null +++ b/cnc-ddraw config.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ab10bfad5f712e3f1feb72ec9e8b1425171b133aec351c931dfe64071d9e2bb +size 4155904 diff --git a/ddraw.ini b/ddraw.ini new file mode 100644 index 0000000..b450621 --- /dev/null +++ b/ddraw.ini @@ -0,0 +1,849 @@ +; cnc-ddraw - https://github.com/FunkyFr3sh/cnc-ddraw + +[ddraw] +; ### Optional settings ### +; Use the following settings to adjust the look and feel to your liking + + +; Stretch to custom resolution, 0 = defaults to the size game requests +width=0 +height=0 + +; Override the width/height settings shown above and always stretch to fullscreen +; Note: Can be combined with 'windowed=true' to get windowed-fullscreen aka borderless mode +fullscreen=true + +; Run in windowed mode rather than going fullscreen +windowed=true + +; Maintain aspect ratio +maintas=false + +; Windowboxing / Integer Scaling +boxing=false + +; Real rendering rate, -1 = screen rate, 0 = unlimited, n = cap +; Note: Does not have an impact on the game speed, to limit your game speed use 'maxgameticks=' +maxfps=-1 + +; Vertical synchronization, enable if you get tearing - (Requires 'renderer=auto/opengl/direct3d9') +; Note: vsync=true can fix tearing but it will cause input lag +vsync=true + +; Automatic mouse sensitivity scaling +; Note: Only works if stretching is enabled. Sensitivity will be adjusted according to the size of the window +adjmouse=false + +; Preliminary libretro shader support - (Requires 'renderer=opengl') https://github.com/libretro/glsl-shaders +; 2x scaling example: https://imgur.com/a/kxsM1oY - 4x scaling example: https://imgur.com/a/wjrhpFV +shader=Shaders\cubic\catmull-rom-bilinear.glsl + +; Window position, -32000 = center to screen +posX=-32000 +posY=-32000 + +; Renderer, possible values: auto, opengl, gdi, direct3d9 (auto = try direct3d9/opengl, fallback = gdi) +renderer=opengl + +; Developer mode (don't lock the cursor) +devmode=false + +; Show window borders in windowed mode +border=true + +; Save window position/size/state on game exit and restore it automatically on next game start +; Possible values: 0 = disabled, 1 = save to global 'ddraw' section, 2 = save to game specific section +savesettings=1 + +; Should the window be resizable by the user in windowed mode? +resizable=true + +; Enable linear (D3DTEXF_LINEAR) upscaling filter for the direct3d9 renderer +d3d9linear=true + +; Enable upscale hack for high resolution patches (Supports C&C1, Red Alert 1 and KKND Xtreme) +vhack=false + +; cnc-ddraw config program language, possible values: auto, english, chinese, german, spanish, russian, hungarian, french +configlang=auto + +; Where should screenshots be saved +screenshotdir=.\Screenshots\ + + + +; ### Compatibility settings ### +; Use the following settings in case there are any issues with the game + + +; Hide WM_ACTIVATEAPP and WM_NCACTIVATE messages to prevent problems on alt+tab +noactivateapp=false + +; Max game ticks per second, possible values: -1 = disabled, -2 = refresh rate, 0 = emulate 60hz vblank, 1-1000 = custom game speed +; Note: Can be used to slow down a too fast running game, fix flickering or too fast animations +; Note: Usually one of the following values will work: 60 / 30 / 25 / 20 / 15 (lower value = slower game speed) +maxgameticks=0 + +; Windows API Hooking, Possible values: 0 = disabled, 1 = IAT Hooking, 2 = Microsoft Detours, 3 = IAT+Detours Hooking (All Modules), 4 = IAT Hooking (All Modules) +; Note: Change this value if windowed mode or upscaling isn't working properly +; Note: 'hook=2' will usually work for problematic games, but 'hook=2' should be combined with renderer=gdi +hook=4 + +; Force minimum FPS, possible values: 0 = disabled, -1 = use 'maxfps=' value, -2 = same as -1 but force full redraw, 1-1000 = custom FPS +; Note: Set this to a low value such as 5 or 10 if some parts of the game are not being displayed (e.g. menus or loading screens) +minfps=0 + +; Disable fullscreen-exclusive mode for the direct3d9/opengl renderers +; Note: Can be used in case some GUI elements like buttons/textboxes/videos/etc.. are invisible +nonexclusive=false + +; Force CPU0 affinity, avoids crashes/freezing, *might* have a performance impact +singlecpu=false + +; Available resolutions, possible values: 0 = Small list, 1 = Very small list, 2 = Full list +; Note: Set this to 2 if your chosen resolution is not working, set to 1 if the game is crashing +resolutions=0 + +; Child window handling, possible values: 0 = Disabled, 1 = Display top left, 2 = Display top left + repaint, 3 = Hide +; Note: Disables upscaling if a child window was detected +fixchilds=2 + +; Set the precision for Direct3D9 floating-point calculations to the precision used by the calling thread +; Note: Enable this if there are desyncs in online games +fpupreserve=false + + +; Undocumented settings +d3d9_adapter=0 +opengl_core=false +d3d9on12=false +guard_lines=200 +max_resolutions=0 +limit_bltfast=false +game_handles_close=true +accuratetimers=false +fixpitch=true +fixwndprochook=true +novidmem=false +fixnotresponding=false +locktopleft=false +lock_surfaces=true +releasealt=false +gdilinear=false +allow_wmactivate=false +dinputhook=false +flipclear=false +fixmousehook=false +bpp=0 +rgb555=false +hook_peekmessage=false + + + +; ### Hotkeys ### +; Use the following settings to configure your hotkeys, 0x00 = disabled +; Virtual-Key Codes: https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes + + +; Switch between windowed and fullscreen mode = [Alt] + ??? +keytogglefullscreen=0x0D + +; Maximize window without frame = [Alt] + ??? +keytogglemaximize=0x22 + +; Unlock cursor 1 = [Ctrl] + ??? +keyunlockcursor1=0x09 + +; Unlock cursor 2 = [Right Alt] + ??? +keyunlockcursor2=0xA3 + +; Screenshot +keyscreenshot=0x2C + + + +; ### Game specific settings ### +; The following settings override all settings shown above, section name = executable name + + +; Atrox +[Atrox] +renderer=gdi +hook=2 +fixchilds=0 +allow_wmactivate=true + +; Atomic Bomberman +[BM] +maxgameticks=60 + +; Age of Empires +[empires] +renderer=opengl +nonexclusive=true +adjmouse=true +resolutions=2 + +; Age of Empires: The Rise of Rome +[empiresx] +renderer=opengl +nonexclusive=true +adjmouse=true +resolutions=2 + +; Age of Empires II +[EMPIRES2] +renderer=opengl +nonexclusive=true +adjmouse=true + +; Age of Empires II: The Conquerors +[age2_x1] +renderer=opengl +nonexclusive=true +adjmouse=true + +; American Conquest / Cossacks +[DMCR] +resolutions=2 +guard_lines=300 +minfps=-2 + +; Age of Wonders +[AoWSM] +windowed=true +fullscreen=false +renderer=gdi +hook=2 + +; Age of Wonders 2 +[AoW2] +windowed=true +fullscreen=false +renderer=gdi +hook=2 + +; Anstoss 3 +[anstoss3] +renderer=gdi +adjmouse=true + +; Anno 1602 +[1602] +adjmouse=true + +; Alien Nations +[AN] +adjmouse=true + +; Amerzone +[AMERZONE] +renderer=opengl + +; Atlantis +[ATLANTIS] +renderer=opengl +maxgameticks=60 + +; Airline Tycoon Deluxe +[AT] +fixchilds=0 + +; Baldur's Gate II +; Note: 'Use 3D Acceleration' must be disabled and 'Full Screen' must be enabled in BGConfig.exe +[BGMain] +resolutions=2 + +; Blade & Sword +[comeon] +maxgameticks=62 +fixchilds=3 + +; Blood II - The Chosen / Shogo - Mobile Armor Division +[Client] +checkfile=.\SOUND.REZ +noactivateapp=true + +; Carmageddon +[CARMA95] +renderer=opengl +noactivateapp=true +flipclear=true + +; Carmageddon +[CARM95] +renderer=opengl +noactivateapp=true +flipclear=true + +; Carmageddon 2 +[Carma2_SW] +renderer=opengl +noactivateapp=true + +; Captain Claw +[claw] +noactivateapp=true + +; Command & Conquer: Sole Survivor +[SOLE] +maxgameticks=120 +maxfps=60 +minfps=-1 + +; Command & Conquer Gold - CnCNet +[cnc95] +maxfps=125 + +; Command & Conquer Gold +[C&C95] +maxgameticks=120 +maxfps=60 +minfps=-1 + +; Command & Conquer: Red Alert - CnCNet +[ra95-spawn] +maxfps=125 + +; Command & Conquer: Red Alert +[ra95] +maxgameticks=120 +maxfps=60 +minfps=-1 + +; Command & Conquer: Red Alert +[ra95_Mod-Launcher] +maxgameticks=120 +maxfps=60 +minfps=-1 + +; Command & Conquer: Red Alert +[ra95p] +maxfps=60 +minfps=-1 + +; Command & Conquer: Tiberian Sun / Command & Conquer: Red Alert 2 +[game] +checkfile=.\blowfish.dll +tshack=true +noactivateapp=true +adjmouse=true +maxfps=60 +minfps=-1 +maintas=false +boxing=false + +; Command & Conquer: Tiberian Sun Demo +[SUN] +noactivateapp=true +tshack=true +adjmouse=true +maxfps=60 +minfps=-1 +maintas=false +boxing=false + +; Command & Conquer: Tiberian Sun - CnCNet +[ts-spawn] +noactivateapp=true +tshack=true +adjmouse=true +maxfps=60 +minfps=-1 +maintas=false +boxing=false + +; Command & Conquer: Red Alert 2 - XWIS +[ra2] +noactivateapp=true +tshack=true +maxfps=60 +minfps=-1 +maintas=false +boxing=false + +; Command & Conquer: Red Alert 2 - XWIS +[Red Alert 2] +noactivateapp=true +tshack=true +maxfps=60 +minfps=-1 +maintas=false +boxing=false + +; Command & Conquer: Red Alert 2: Yuri's Revenge +[gamemd] +noactivateapp=true +tshack=true +maxfps=60 +minfps=-1 +maintas=false +boxing=false + +; Command & Conquer: Red Alert 2: Yuri's Revenge - ?ModExe? +[ra2md] +noactivateapp=true +tshack=true +maxfps=60 +minfps=-1 +maintas=false +boxing=false + +; Command & Conquer: Red Alert 2: Yuri's Revenge - CnCNet +[gamemd-spawn] +noactivateapp=true +tshack=true +maxfps=60 +minfps=-1 +maintas=false +boxing=false + +; Command & Conquer: Red Alert 2: Yuri's Revenge - XWIS +[Yuri's Revenge] +noactivateapp=true +tshack=true +maxfps=60 +minfps=-1 +maintas=false +boxing=false + +; Caesar III +[c3] +renderer=opengl +nonexclusive=true +adjmouse=true + +; Chris Sawyer's Locomotion +[LOCO] +adjmouse=true + +; Cultures 2 +[Cultures2] +adjmouse=true + +; Cultures 2 MP +[Cultures2MP] +adjmouse=true + +; Close Combat 2: A Bridge Too Far +[cc2] +adjmouse=true +renderer=opengl +nonexclusive=true + +; Close Combat 3: The Russian Front +[cc3] +adjmouse=true +renderer=opengl +nonexclusive=true + +; Close Combat 4: The Battle of the Bulge +[cc4] +adjmouse=true +renderer=opengl +nonexclusive=true + +; Close Combat 5: Invasion: Normandy +[cc5] +adjmouse=true +renderer=opengl +nonexclusive=true + +; Call To Power 2 +[ctp2] +maintas=false +boxing=false + +; Corsairs Gold +[corsairs] +adjmouse=true +renderer=gdi +hook=2 + +; Divine Divinity +[div] +resolutions=2 +singlecpu=false + +; Dune 2000 +[dune2000] +fpupreserve=true + +; Dune 2000 - CnCNet +[dune2000-spawn] +fpupreserve=true + +; Dragon Throne: Battle of Red Cliffs +[AdSanguo] +maxgameticks=60 +noactivateapp=true +limit_bltfast=true + +; Dark Reign: The Future of War +[DKReign] +renderer=opengl +maxgameticks=60 + +; Dungeon Keeper 2 +[DKII] +maxgameticks=60 +noactivateapp=true + +; Deadlock 2 +[DEADLOCK] +fixchilds=0 +adjmouse=false +maintas=false +boxing=false + +; Escape Velocity Nova +[EV Nova] +renderer=opengl +devmode=true +hook_peekmessage=true +rgb555=true +keytogglefullscreen=0x46 +adjmouse=true + +; Economic War +[EcoW] +maxgameticks=60 +fixnotresponding=true + +; Fallout +[falloutw] +dinputhook=true + +; Fallout 2 +[FALLOUT2] +dinputhook=true + +; Fairy Tale About Father Frost, Ivan and Nastya +[mrazik] +guard_lines=0 + +; Future Cop - L.A.P.D. +[FCopLAPD] +renderer=opengl +nonexclusive=true +adjmouse=true + +; G-Police +[GPOLICE] +maxgameticks=60 + +; Gangsters: Organized Crime +[gangsters] +adjmouse=true +renderer=opengl +nonexclusive=true + +; Grand Theft Auto +[Grand Theft Auto] +fixwndprochook=true +singlecpu=false + +; Grand Theft Auto: London 1969 +[gta_uk] +fixwndprochook=true +singlecpu=false + +; Grand Theft Auto: London 1961 +[Gta_61] +fixwndprochook=true +singlecpu=false + +; Heroes of Might and Magic II: The Succession Wars +[HEROES2W] +adjmouse=true + +; Hard Truck: Road to Victory +[htruck] +maxgameticks=25 +renderer=opengl +noactivateapp=true + +; Invictus +[Invictus] +adjmouse=true +fixwndprochook=true +renderer=opengl + +; Interstate 76 +[i76] +adjmouse=true +renderer=opengl + +; Infantry Online +[infantry] +devmode=true +resolutions=2 +infantryhack=true +max_resolutions=90 + +; Jagged Alliance 2 +[ja2] +singlecpu=false +fixmousehook=true +noactivateapp=true +releasealt=true +novidmem=true + +; Jagged Alliance 2: Wildfire +[WF6] +singlecpu=false +fixmousehook=true +noactivateapp=true +releasealt=true +novidmem=true + +; Jagged Alliance 2 - UC mod +[JA2_UC] +singlecpu=false +fixmousehook=true +noactivateapp=true +releasealt=true +novidmem=true + +; Jagged Alliance 2 - Vengeance Reloaded mod +[JA2_Vengeance] +singlecpu=false +fixmousehook=true +noactivateapp=true +releasealt=true +novidmem=true + +; Kings Quest 8 +[Mask] +renderer=opengl + +; Konung +[konung] +fixchilds=0 + +; Konung 2 +[Konung2] +fixchilds=0 + +; KKND Xtreme (With high resolution patch) +[KKNDgame] +vhack=true + +; KKND2: Krossfire +[KKND2] +noactivateapp=true +renderer=gdi +hook=2 + +; Lionheart +[Lionheart] +locktopleft=true + +; Majesty Gold +[Majesty] +minfps=-2 + +; Majesty Gold HD +[MajestyHD] +adjmouse=true + +; Majesty Gold HD +[MajestyHD - Old] +adjmouse=true + +; Mech Warrior 3 +[Mech3] +renderer=opengl +nonexclusive=true + +; Moorhuhn +[Moorhuhn] +dinputhook=true + +; Moorhuhn 2 +[Moorhuhn2] +dinputhook=true +releasealt=true + +; New Robinson +[ROBY] +adjmouse=true +hook_peekmessage=true + +; Outlaws +[olwin] +noactivateapp=true +maxgameticks=60 +adjmouse=true +renderer=gdi + +; Pharaoh +[Pharaoh] +adjmouse=true + +; Pax Imperia +[Pax Imperia] +renderer=opengl +nonexclusive=true + +; Railroad Tycoon II +[RT2] +adjmouse=true + +; ROAD RASH +[RoadRash] +adjmouse=true +fixchilds=1 + +; Septerra Core +[septerra] +hook=2 + +; Sim Copter +[SimCopter] +renderer=opengl +nonexclusive=true + +; Settlers 3 +[s3] +renderer=opengl +nonexclusive=true + +; Star Trek - Armada +[Armada] +armadahack=true +renderer=opengl +nonexclusive=true +adjmouse=true +maintas=false +boxing=false + +; Star Wars: Galactic Battlegrounds +[battlegrounds] +renderer=opengl +nonexclusive=true +adjmouse=true + +; Star Wars: Galactic Battlegrounds: Clone Campaigns +[battlegrounds_x1] +renderer=opengl +nonexclusive=true +adjmouse=true + +; Starcraft +[StarCraft] +game_handles_close=true + +; Stronghold Crusader HD +[Stronghold Crusader] +adjmouse=true + +; Space Rangers +[Rangers] +locktopleft=true + +; Stronghold Crusader Extreme HD +[Stronghold_Crusader_Extreme] +adjmouse=true + +; Stronghold HD +[Stronghold] +adjmouse=true + +; Sim City 3000 +[SC3] +renderer=opengl +minfps=-2 + +; Shadow Watch +[sw] +adjmouse=true + +; Shadow Flare +[ShadowFlare] +renderer=opengl +nonexclusive=true +adjmouse=true +maintas=false +boxing=false + +; Theme Park World +[TP] +fixwndprochook=true + +; Total Annihilation (Unofficial Beta Patch v3.9.02) +[TotalA] +lock_surfaces=true +singlecpu=false +fixwndprochook=true + +; Total Annihilation Replay Viewer (Unofficial Beta Patch v3.9.02) +[Viewer] +lock_surfaces=true +singlecpu=false +fixwndprochook=true + +; Three Kingdoms: Fate of the Dragon +[sanguo] +maxgameticks=60 +noactivateapp=true +limit_bltfast=true + +; Twisted Metal +[TWISTED] +renderer=opengl +nonexclusive=true +maxgameticks=25 +minfps=5 + +; Twisted Metal 2 +[Tm2] +renderer=opengl +nonexclusive=true +maxgameticks=60 +adjmouse=true +fixchilds=1 +maintas=false +boxing=false + +; Tzar: The Burden of the Crown +; Note: Must set 'DIRECTXDEVICE=0' in 'Tzar.ini' +[Tzar] +adjmouse=true + +; Uprising +[uprising] +adjmouse=true + +; Uprising 2 +[Uprising 2] +renderer=opengl +adjmouse=true + +; Wizardry 8 +[Wiz8] +fixmousehook=true +noactivateapp=true +releasealt=true +novidmem=true + +; Worms Armageddon +[WA] +adjmouse=true +width=0 +height=0 +resizable=false + +; Wizards and Warriors +[deep6] +renderer=gdi +hook=2 + +; War Wind +[WW] +renderer=opengl + +; Zeus and Poseidon +[Zeus] +adjmouse=true + diff --git a/ddraw_custom.dll b/ddraw_custom.dll new file mode 100644 index 0000000..7ac213b --- /dev/null +++ b/ddraw_custom.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:518796513d85d6c79ba6aec05e5fd9ce1477d34ef11601025f4c4a5289a9d73f +size 323584 diff --git a/tdraw.dll b/tdraw.dll new file mode 100644 index 0000000..a35d655 --- /dev/null +++ b/tdraw.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:908e724c6cfcbeb4d3637cf7e0bc1ff0ff9d8718d6196a48a84b7373a01f4e75 +size 680448 diff --git a/tmusi.dll b/tmusi.dll new file mode 100644 index 0000000..b602423 --- /dev/null +++ b/tmusi.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfd96f5385984e8082db694f4d0192d65b660c1479df70f1a243a9e959beb202 +size 31744 diff --git a/tplayx.dll b/tplayx.dll new file mode 100644 index 0000000..a6d891a --- /dev/null +++ b/tplayx.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91905ddc9a782089b5034df3d9ae9ed3a24c6af673624a88bad5eeb7f009f706 +size 298496 diff --git a/wgmus.dll b/wgmus.dll index 3e2ba05938f7b87380ab35a442ba83cf63894d80..b6e8b5ee0900bd1457821863bbdc588ad2f45416 100644 GIT binary patch literal 130 zcmWN?!41P83;@7?reJ{vFakri0S6bPwnR0_qtiFiNq5z+^zl(`&OpM5@FEbDzc z%Sz*|<*1}DyNtdoX&HRjC=gI)1hy5jMIdGi(fe2&IgjIFnz94O MMf$I*013nL2j+7p1ONa4 literal 62976 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