From 52ca417d3a21d79003d358665fbaf79f16459b2e Mon Sep 17 00:00:00 2001 From: Surma Date: Fri, 14 May 2021 16:12:39 +0100 Subject: [PATCH] Expose quality option --- codecs/basis/enc/basis_enc.cpp | 9 +- codecs/basis/enc/basis_enc.d.ts | 1 + codecs/basis/enc/basis_enc.js | 94 ++++++++-------- codecs/basis/enc/basis_enc.wasm | Bin 1435319 -> 1435479 bytes src/features/encoders/basis/client/index.tsx | 112 +++++++------------ src/features/encoders/basis/shared/meta.ts | 4 +- 6 files changed, 97 insertions(+), 123 deletions(-) diff --git a/codecs/basis/enc/basis_enc.cpp b/codecs/basis/enc/basis_enc.cpp index 6b9956c5..8bdcdf31 100644 --- a/codecs/basis/enc/basis_enc.cpp +++ b/codecs/basis/enc/basis_enc.cpp @@ -7,7 +7,9 @@ using namespace emscripten; using namespace basisu; -struct BasisOptions {}; +struct BasisOptions { + uint8_t quality; +}; thread_local const val Uint8Array = val::global("Uint8Array"); @@ -26,7 +28,7 @@ val encode(std::string image_in, int image_width, int image_height, BasisOptions params.m_uastc = true; // No printf pls params.m_status_output = false; - params.m_compression_level = 2; /* 0-4 */ + params.m_compression_level = opts.quality; params.m_source_images.push_back(img); if (!compressor.init(params)) { @@ -44,8 +46,7 @@ val encode(std::string image_in, int image_width, int image_height, BasisOptions } EMSCRIPTEN_BINDINGS(my_module) { - value_object("BasisOptions"); - // .field("quality", &MozJpegOptions::quality); + value_object("BasisOptions").field("quality", &BasisOptions::quality); function("encode", &encode); } diff --git a/codecs/basis/enc/basis_enc.d.ts b/codecs/basis/enc/basis_enc.d.ts index cdcc8f3b..bed974a3 100644 --- a/codecs/basis/enc/basis_enc.d.ts +++ b/codecs/basis/enc/basis_enc.d.ts @@ -1,4 +1,5 @@ export interface EncodeOptions { + quality: number; } export interface BasisModule extends EmscriptenWasm.Module { diff --git a/codecs/basis/enc/basis_enc.js b/codecs/basis/enc/basis_enc.js index e95036c0..7ad8cc87 100644 --- a/codecs/basis/enc/basis_enc.js +++ b/codecs/basis/enc/basis_enc.js @@ -8,53 +8,53 @@ function(Module) { var f;f||(f=typeof Module !== 'undefined' ? Module : {});var aa,ba;f.ready=new Promise(function(a,b){aa=a;ba=b});var r={},t;for(t in f)f.hasOwnProperty(t)&&(r[t]=f[t]);var u="",ca;u=self.location.href;_scriptDir&&(u=_scriptDir);0!==u.indexOf("blob:")?u=u.substr(0,u.lastIndexOf("/")+1):u="";ca=function(a){var b=new XMLHttpRequest;b.open("GET",a,!1);b.responseType="arraybuffer";b.send(null);return new Uint8Array(b.response)};var da=f.print||console.log.bind(console),v=f.printErr||console.warn.bind(console); -for(t in r)r.hasOwnProperty(t)&&(f[t]=r[t]);r=null;var ea=0,w;f.wasmBinary&&(w=f.wasmBinary);var noExitRuntime;f.noExitRuntime&&(noExitRuntime=f.noExitRuntime);"object"!==typeof WebAssembly&&x("no native wasm support detected");var B,fa=!1,ha=new TextDecoder("utf8");function C(a,b){if(!a)return"";b=a+b;for(var c=a;!(c>=b)&&D[c];)++c;return ha.decode(D.subarray(a,c))} -function ja(a,b,c){var d=D;if(0=g){var k=a.charCodeAt(++e);g=65536+((g&1023)<<10)|k&1023}if(127>=g){if(b>=c)break;d[b++]=g}else{if(2047>=g){if(b+1>=c)break;d[b++]=192|g>>6}else{if(65535>=g){if(b+2>=c)break;d[b++]=224|g>>12}else{if(b+3>=c)break;d[b++]=240|g>>18;d[b++]=128|g>>12&63}d[b++]=128|g>>6&63}d[b++]=128|g&63}}d[b]=0}}var ka=new TextDecoder("utf-16le"); -function la(a,b){var c=a>>1;for(b=c+b/2;!(c>=b)&&ma[c];)++c;return ka.decode(D.subarray(a,c<<1))}function na(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var e=0;e>1]=a.charCodeAt(e),b+=2;E[b>>1]=0;return b-d}function oa(a){return 2*a.length}function pa(a,b){for(var c=0,d="";!(c>=b/4);){var e=F[a+4*c>>2];if(0==e)break;++c;65536<=e?(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023)):d+=String.fromCharCode(e)}return d} -function qa(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e=g){var k=a.charCodeAt(++e);g=65536+((g&1023)<<10)|k&1023}F[b>>2]=g;b+=4;if(b+4>c)break}F[b>>2]=0;return b-d}function ra(a){for(var b=0,c=0;c=d&&++c;b+=4}return b}var G,I,D,E,ma,F,J,sa,ta; -function ua(a){G=a;f.HEAP8=I=new Int8Array(a);f.HEAP16=E=new Int16Array(a);f.HEAP32=F=new Int32Array(a);f.HEAPU8=D=new Uint8Array(a);f.HEAPU16=ma=new Uint16Array(a);f.HEAPU32=J=new Uint32Array(a);f.HEAPF32=sa=new Float32Array(a);f.HEAPF64=ta=new Float64Array(a)}var va=f.INITIAL_MEMORY||16777216;f.wasmMemory?B=f.wasmMemory:B=new WebAssembly.Memory({initial:va/65536,maximum:32768});B&&(G=B.buffer);va=G.byteLength;ua(G);var K,wa=[],xa=[],ya=[],za=[]; -function Aa(){var a=f.preRun.shift();wa.unshift(a)}var L=0,Ba=null,M=null;f.preloadedImages={};f.preloadedAudios={};function x(a){if(f.onAbort)f.onAbort(a);v(a);fa=!0;a=new WebAssembly.RuntimeError("abort("+a+"). Build with -s ASSERTIONS=1 for more info.");ba(a);throw a;}function Ca(){var a=N;return String.prototype.startsWith?a.startsWith("data:application/octet-stream;base64,"):0===a.indexOf("data:application/octet-stream;base64,")}var N="basis_enc.wasm"; -if(!Ca()){var Da=N;N=f.locateFile?f.locateFile(Da,u):u+Da}function Ea(){try{if(w)return new Uint8Array(w);if(ca)return ca(N);throw"both async and sync fetching of the wasm failed";}catch(a){x(a)}}function Fa(){return w||"function"!==typeof fetch?Promise.resolve().then(Ea):fetch(N,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+N+"'";return a.arrayBuffer()}).catch(function(){return Ea()})} -function Ga(a){for(;0>2]=b};this.pa=function(b){F[this.da+0>>2]=b};this.qa=function(){F[this.da+4>>2]=0};this.oa=function(){I[this.da+12>>0]=0};this.ra=function(){I[this.da+13>>0]=0};this.la=function(b,c){this.sa(b);this.pa(c);this.qa();this.oa();this.ra()}} -function Ia(){return 0>2])}var O={},P={},Oa={};function Pa(a){if(void 0===a)return"_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?"_"+a:a}function Qa(a,b){a=Pa(a);return(new Function("body","return function "+a+'() {\n "use strict"; return body.apply(this, arguments);\n};\n'))(b)} -function Ra(a){var b=Error,c=Qa(a,function(d){this.name=a;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+"\n"+d.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(b.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message};return c}var Sa=void 0; -function Ta(a,b,c){function d(h){h=c(h);if(h.length!==a.length)throw new Sa("Mismatched type converter count");for(var l=0;l>2])};case 3:return function(c){return this.fromWireType(ta[c>>3])};default:throw new TypeError("Unknown float type: "+a);}}function ab(a){var b=Function;if(!(b instanceof Function))throw new TypeError("new_ called with constructor type "+typeof b+" which is not a function");var c=Qa(b.name||"unknownFunctionName",function(){});c.prototype=b.prototype;c=new c;a=b.apply(c,a);return a instanceof Object?a:c} -function bb(a,b){var c=f;if(void 0===c[a].ba){var d=c[a];c[a]=function(){c[a].ba.hasOwnProperty(arguments.length)||S("Function '"+b+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+c[a].ba+")!");return c[a].ba[arguments.length].apply(this,arguments)};c[a].ba=[];c[a].ba[d.ha]=d}} -function cb(a,b,c){f.hasOwnProperty(a)?((void 0===c||void 0!==f[a].ba&&void 0!==f[a].ba[c])&&S("Cannot register public name '"+a+"' twice"),bb(a,a),f.hasOwnProperty(c)&&S("Cannot register multiple overloads of a function with the same number of arguments ("+c+")!"),f[a].ba[c]=b):(f[a]=b,void 0!==c&&(f[a].Aa=c))}function db(a,b){for(var c=[],d=0;d>2)+d]);return c} -function eb(a,b){0<=a.indexOf("j")||x("Assertion failed: getDynCaller should only be called with i64 sigs");var c=[];return function(){c.length=arguments.length;for(var d=0;d>1]}:function(d){return ma[d>>1]};case 2:return c?function(d){return F[d>>2]}:function(d){return J[d>>2]};default:throw new TypeError("Unknown integer type: "+a);}}var lb={};function mb(){return"object"===typeof globalThis?globalThis:Function("return this")()}function nb(a,b){var c=P[a];void 0===c&&S(b+" has unknown type "+hb(a));return c}var ob={}; -Sa=f.InternalError=Ra("InternalError");for(var pb=Array(256),qb=0;256>qb;++qb)pb[qb]=String.fromCharCode(qb);Va=pb;Wa=f.BindingError=Ra("BindingError");f.count_emval_handles=function(){for(var a=0,b=5;b>g])},ca:null})},K:function(a,b){b=R(b);Q(a,{name:b,fromWireType:function(c){var d=T[c].value;Ya(c);return d},toWireType:function(c,d){return U(d)},argPackAdvance:8,readValueFromPointer:Na, -ca:null})},v:function(a,b,c){c=Ua(c);b=R(b);Q(a,{name:b,fromWireType:function(d){return d},toWireType:function(d,e){if("number"!==typeof e&&"boolean"!==typeof e)throw new TypeError('Cannot convert "'+Za(e)+'" to '+this.name);return e},argPackAdvance:8,readValueFromPointer:$a(b,c),ca:null})},O:function(a,b,c,d,e,g){var k=db(b,c);a=R(a);e=fb(d,e);cb(a,function(){jb("Cannot call "+a+" due to unbound types",k)},b-1);Ta([],k,function(h){var l=a,m=a;h=[h[0],null].concat(h.slice(1));var n=e,q=h.length;2> -q&&S("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var y=null!==h[1]&&!1,z=!1,p=1;p>>h}}var l=-1!=b.indexOf("unsigned");Q(a,{name:b,fromWireType:g,toWireType:function(m,n){if("number"!==typeof n&&"boolean"!==typeof n)throw new TypeError('Cannot convert "'+Za(n)+'" to '+this.name);if(ne)throw new TypeError('Passing a number "'+Za(n)+'" from JS side to C/C++ side to an argument of type "'+b+'", which is outside the valid range ['+d+", "+e+"]!");return l?n>>>0:n|0},argPackAdvance:8,readValueFromPointer:kb(b,k,0!==d),ca:null})},j:function(a,b, -c){function d(g){g>>=2;var k=J;return new e(G,k[g+1],k[g])}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=R(c);Q(a,{name:c,fromWireType:d,argPackAdvance:8,readValueFromPointer:d},{ka:!0})},w:function(a,b){b=R(b);var c="std::string"===b;Q(a,{name:b,fromWireType:function(d){var e=J[d>>2];if(c)for(var g=d+4,k=0;k<=e;++k){var h=d+4+k;if(k==e||0==D[h]){g=C(g,h-g);if(void 0===l)var l=g;else l+=String.fromCharCode(0),l+=g;g=h+1}}else{l=Array(e); -for(k=0;k=q&&(q=65536+((q&1023)<<10)|e.charCodeAt(++n)&1023);127>=q?++m:m=2047>=q?m+2:65535>=q?m+3:m+4}return m}: -function(){return e.length})(),h=sb(4+k+1);J[h>>2]=k;if(c&&g)ja(e,h+4,k+1);else if(g)for(g=0;g>2],n=k(),q,y=l+4,z=0;z<=m;++z){var p=l+4+z*b;if(z==m||0==n[p>>h])y=d(y,p-y),void 0===q?q=y:(q+=String.fromCharCode(0),q+=y),y=p+b}V(l);return q},toWireType:function(l,m){"string"!==typeof m&&S("Cannot pass non-string to C++ string type "+c);var n=g(m),q=sb(4+n+b);J[q>>2]=n>>h;e(m,q+4,n+b);null!==l&&l.push(V,q);return q},argPackAdvance:8,readValueFromPointer:Na,ca:function(l){V(l)}})},Q:function(a,b,c,d,e,g){La[a]={name:R(b),ma:fb(c,d),na:fb(e,g),ia:[]}},M:function(a, -b){b=R(b);Q(a,{za:!0,name:b,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},n:Ya,z:function(a){if(0===a)return U(mb());var b=lb[a];a=void 0===b?R(a):b;return U(mb()[a])},N:function(a){4>> 2) + "+ -g+'], "parameter '+g+'");\nvar arg'+g+" = argType"+g+".readValueFromPointer(args);\nargs += argType"+g+"['argPackAdvance'];\n";e=(new Function("requireRegisteredType","Module","__emval_register",k+("var obj = new constructor("+e+");\nreturn __emval_register(obj);\n}\n")))(nb,f,U);ob[b]=e}return e(a,c,d)},y:function(a,b){a=nb(a,"_emval_take_value");a=a.readValueFromPointer(b);return U(a)},f:function(){x()},h:function(a,b){W(a,b||1);throw"longjmp";},D:function(a,b,c){D.copyWithin(a,b,b+c)},l:function(a){a>>>= -0;var b=D.length;if(2147483648=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);d=Math.max(16777216,a,d);0>>16);ua(B.buffer);var e=1;break a}catch(g){}e=void 0}if(e)return!0}return!1},u:function(){return 0},G:function(a,b,c,d){a=Ka.va(a);b=Ka.ta(a,b,c);F[d>>2]=b;return 0},B:function(){},t:function(a,b,c,d){for(var e=0,g=0;g>2],h=F[b+(8*g+4)>>2],l=0;l>2]=e;return 0},d:function(){return ea|0},i:function(a){var b=Date.now();F[a>>2]=b/1E3|0;F[a+4>>2]=b%1E3*1E3|0;return 0},m:tb,g:ub,r:vb,q:wb,o:xb,e:yb,C:zb,a:B,c:function(a){ea=a|0},F:function(a){switch(a){case 30:return 16384;case 85:return 131072;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809; -case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32; -case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"===typeof navigator?navigator.hardwareConcurrency||1:1}F[Ab()>>2]=28; -return-1}}; -(function(){function a(e){f.asm=e.exports;K=f.asm.R;L--;f.monitorRunDependencies&&f.monitorRunDependencies(L);0==L&&(null!==Ba&&(clearInterval(Ba),Ba=null),M&&(e=M,M=null,e()))}function b(e){a(e.instance)}function c(e){return Fa().then(function(g){return WebAssembly.instantiate(g,d)}).then(e,function(g){v("failed to asynchronously prepare wasm: "+g);x(g)})}var d={a:Bb};L++;f.monitorRunDependencies&&f.monitorRunDependencies(L);if(f.instantiateWasm)try{return f.instantiateWasm(d,a)}catch(e){return v("Module.instantiateWasm callback failed with error: "+e), -!1}(function(){return w||"function"!==typeof WebAssembly.instantiateStreaming||Ca()||"function"!==typeof fetch?c(b):fetch(N,{credentials:"same-origin"}).then(function(e){return WebAssembly.instantiateStreaming(e,d).then(b,function(g){v("wasm streaming compile failed: "+g);v("falling back to ArrayBuffer instantiation");return c(b)})})})().catch(ba);return{}})(); -var rb=f.___wasm_call_ctors=function(){return(rb=f.___wasm_call_ctors=f.asm.S).apply(null,arguments)},V=f._free=function(){return(V=f._free=f.asm.T).apply(null,arguments)},sb=f._malloc=function(){return(sb=f._malloc=f.asm.U).apply(null,arguments)},ib=f.___getTypeName=function(){return(ib=f.___getTypeName=f.asm.V).apply(null,arguments)};f.___embind_register_native_and_builtin_types=function(){return(f.___embind_register_native_and_builtin_types=f.asm.W).apply(null,arguments)}; -var Ab=f.___errno_location=function(){return(Ab=f.___errno_location=f.asm.X).apply(null,arguments)},X=f.stackSave=function(){return(X=f.stackSave=f.asm.Y).apply(null,arguments)},Z=f.stackRestore=function(){return(Z=f.stackRestore=f.asm.Z).apply(null,arguments)},W=f._setThrew=function(){return(W=f._setThrew=f.asm._).apply(null,arguments)};f.dynCall_jiiii=function(){return(f.dynCall_jiiii=f.asm.$).apply(null,arguments)};f.dynCall_jiji=function(){return(f.dynCall_jiji=f.asm.aa).apply(null,arguments)}; -function yb(a,b,c){var d=X();try{K.get(a)(b,c)}catch(e){Z(d);if(e!==e+0&&"longjmp"!==e)throw e;W(1,0)}}function xb(a,b){var c=X();try{K.get(a)(b)}catch(d){Z(c);if(d!==d+0&&"longjmp"!==d)throw d;W(1,0)}}function vb(a,b,c,d){var e=X();try{return K.get(a)(b,c,d)}catch(g){Z(e);if(g!==g+0&&"longjmp"!==g)throw g;W(1,0)}}function ub(a,b,c){var d=X();try{return K.get(a)(b,c)}catch(e){Z(d);if(e!==e+0&&"longjmp"!==e)throw e;W(1,0)}} -function tb(a,b){var c=X();try{return K.get(a)(b)}catch(d){Z(c);if(d!==d+0&&"longjmp"!==d)throw d;W(1,0)}}function wb(a,b,c,d,e,g){var k=X();try{return K.get(a)(b,c,d,e,g)}catch(h){Z(k);if(h!==h+0&&"longjmp"!==h)throw h;W(1,0)}}function zb(a,b,c,d,e){var g=X();try{K.get(a)(b,c,d,e)}catch(k){Z(g);if(k!==k+0&&"longjmp"!==k)throw k;W(1,0)}}var Cb;M=function Db(){Cb||Eb();Cb||(M=Db)}; -function Eb(){function a(){if(!Cb&&(Cb=!0,f.calledRun=!0,!fa)){Ga(xa);Ga(ya);aa(f);if(f.onRuntimeInitialized)f.onRuntimeInitialized();if(f.postRun)for("function"==typeof f.postRun&&(f.postRun=[f.postRun]);f.postRun.length;){var b=f.postRun.shift();za.unshift(b)}Ga(za)}}if(!(0=b)&&C[c];)++c;return ha.decode(C.subarray(a,c))} +function ja(a,b,c){var d=C;if(0=g){var k=a.charCodeAt(++e);g=65536+((g&1023)<<10)|k&1023}if(127>=g){if(b>=c)break;d[b++]=g}else{if(2047>=g){if(b+1>=c)break;d[b++]=192|g>>6}else{if(65535>=g){if(b+2>=c)break;d[b++]=224|g>>12}else{if(b+3>=c)break;d[b++]=240|g>>18;d[b++]=128|g>>12&63}d[b++]=128|g>>6&63}d[b++]=128|g&63}}d[b]=0}}var la=new TextDecoder("utf-16le"); +function ma(a,b){var c=a>>1;for(b=c+b/2;!(c>=b)&&na[c];)++c;return la.decode(C.subarray(a,c<<1))}function oa(a,b,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=b;c=c<2*a.length?c/2:a.length;for(var e=0;e>1]=a.charCodeAt(e),b+=2;D[b>>1]=0;return b-d}function pa(a){return 2*a.length}function qa(a,b){for(var c=0,d="";!(c>=b/4);){var e=E[a+4*c>>2];if(0==e)break;++c;65536<=e?(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023)):d+=String.fromCharCode(e)}return d} +function ra(a,b,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=b;c=d+c-4;for(var e=0;e=g){var k=a.charCodeAt(++e);g=65536+((g&1023)<<10)|k&1023}E[b>>2]=g;b+=4;if(b+4>c)break}E[b>>2]=0;return b-d}function sa(a){for(var b=0,c=0;c=d&&++c;b+=4}return b}var F,G,C,D,na,E,I,ta,ua; +function va(a){F=a;f.HEAP8=G=new Int8Array(a);f.HEAP16=D=new Int16Array(a);f.HEAP32=E=new Int32Array(a);f.HEAPU8=C=new Uint8Array(a);f.HEAPU16=na=new Uint16Array(a);f.HEAPU32=I=new Uint32Array(a);f.HEAPF32=ta=new Float32Array(a);f.HEAPF64=ua=new Float64Array(a)}var wa=f.INITIAL_MEMORY||16777216;f.wasmMemory?B=f.wasmMemory:B=new WebAssembly.Memory({initial:wa/65536,maximum:32768});B&&(F=B.buffer);wa=F.byteLength;va(F);var J,xa=[],ya=[],za=[],Aa=[]; +function Ba(){var a=f.preRun.shift();xa.unshift(a)}var K=0,Ca=null,L=null;f.preloadedImages={};f.preloadedAudios={};function x(a){if(f.onAbort)f.onAbort(a);v(a);fa=!0;a=new WebAssembly.RuntimeError("abort("+a+"). Build with -s ASSERTIONS=1 for more info.");ba(a);throw a;}function Da(){var a=M;return String.prototype.startsWith?a.startsWith("data:application/octet-stream;base64,"):0===a.indexOf("data:application/octet-stream;base64,")}var M="basis_enc.wasm"; +if(!Da()){var Ea=M;M=f.locateFile?f.locateFile(Ea,u):u+Ea}function Fa(){try{if(w)return new Uint8Array(w);if(ca)return ca(M);throw"both async and sync fetching of the wasm failed";}catch(a){x(a)}}function Ga(){return w||"function"!==typeof fetch?Promise.resolve().then(Fa):fetch(M,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed to load wasm binary file at '"+M+"'";return a.arrayBuffer()}).catch(function(){return Fa()})} +function Ha(a){for(;0>2]=b};this.ua=function(b){E[this.ea+0>>2]=b};this.va=function(){E[this.ea+4>>2]=0};this.ta=function(){G[this.ea+12>>0]=0};this.wa=function(){G[this.ea+13>>0]=0};this.qa=function(b,c){this.xa(b);this.ua(c);this.va();this.ta();this.wa()}} +function Ja(){return 0>2])}var N={},O={},Pa={};function Qa(a){if(void 0===a)return"_unknown";a=a.replace(/[^a-zA-Z0-9_]/g,"$");var b=a.charCodeAt(0);return 48<=b&&57>=b?"_"+a:a}function Ra(a,b){a=Qa(a);return(new Function("body","return function "+a+'() {\n "use strict"; return body.apply(this, arguments);\n};\n'))(b)} +function Sa(a){var b=Error,c=Ra(a,function(d){this.name=a;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+"\n"+d.replace(/^Error(:[^\n]*)?\n/,""))});c.prototype=Object.create(b.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message};return c}var Ta=void 0; +function Ua(a,b,c){function d(h){h=c(h);if(h.length!==a.length)throw new Ta("Mismatched type converter count");for(var l=0;l>2])};case 3:return function(c){return this.fromWireType(ua[c>>3])};default:throw new TypeError("Unknown float type: "+a);}}function bb(a){var b=Function;if(!(b instanceof Function))throw new TypeError("new_ called with constructor type "+typeof b+" which is not a function");var c=Ra(b.name||"unknownFunctionName",function(){});c.prototype=b.prototype;c=new c;a=b.apply(c,a);return a instanceof Object?a:c} +function cb(a,b){var c=f;if(void 0===c[a].ca){var d=c[a];c[a]=function(){c[a].ca.hasOwnProperty(arguments.length)||R("Function '"+b+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+c[a].ca+")!");return c[a].ca[arguments.length].apply(this,arguments)};c[a].ca=[];c[a].ca[d.ja]=d}} +function db(a,b,c){f.hasOwnProperty(a)?((void 0===c||void 0!==f[a].ca&&void 0!==f[a].ca[c])&&R("Cannot register public name '"+a+"' twice"),cb(a,a),f.hasOwnProperty(c)&&R("Cannot register multiple overloads of a function with the same number of arguments ("+c+")!"),f[a].ca[c]=b):(f[a]=b,void 0!==c&&(f[a].Ea=c))}function eb(a,b){for(var c=[],d=0;d>2)+d]);return c} +function fb(a,b){0<=a.indexOf("j")||x("Assertion failed: getDynCaller should only be called with i64 sigs");var c=[];return function(){c.length=arguments.length;for(var d=0;d>1]}:function(d){return na[d>>1]};case 2:return c?function(d){return E[d>>2]}:function(d){return I[d>>2]};default:throw new TypeError("Unknown integer type: "+a);}}var lb={};function mb(){return"object"===typeof globalThis?globalThis:Function("return this")()}function nb(a,b){var c=O[a];void 0===c&&R(b+" has unknown type "+hb(a));return c}var ob={}; +Ta=f.InternalError=Sa("InternalError");for(var pb=Array(256),qb=0;256>qb;++qb)pb[qb]=String.fromCharCode(qb);Wa=pb;Xa=f.BindingError=Sa("BindingError");f.count_emval_handles=function(){for(var a=0,b=5;b>g])},da:null})},K:function(a,b){b=Q(b);P(a,{name:b,fromWireType:function(c){var d=S[c].value;Za(c);return d},toWireType:function(c,d){return T(d)},argPackAdvance:8,readValueFromPointer:Oa, +da:null})},v:function(a,b,c){c=Va(c);b=Q(b);P(a,{name:b,fromWireType:function(d){return d},toWireType:function(d,e){if("number"!==typeof e&&"boolean"!==typeof e)throw new TypeError('Cannot convert "'+$a(e)+'" to '+this.name);return e},argPackAdvance:8,readValueFromPointer:ab(b,c),da:null})},O:function(a,b,c,d,e,g){var k=eb(b,c);a=Q(a);e=U(d,e);db(a,function(){jb("Cannot call "+a+" due to unbound types",k)},b-1);Ua([],k,function(h){var l=a,m=a;h=[h[0],null].concat(h.slice(1));var n=e,q=h.length;2> +q&&R("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var y=null!==h[1]&&!1,z=!1,p=1;p>>h}}var l=-1!=b.indexOf("unsigned");P(a,{name:b,fromWireType:g,toWireType:function(m,n){if("number"!==typeof n&&"boolean"!==typeof n)throw new TypeError('Cannot convert "'+$a(n)+'" to '+this.name);if(ne)throw new TypeError('Passing a number "'+$a(n)+'" from JS side to C/C++ side to an argument of type "'+b+'", which is outside the valid range ['+d+", "+e+"]!");return l?n>>>0:n|0},argPackAdvance:8,readValueFromPointer:kb(b,k,0!==d),da:null})},j:function(a,b, +c){function d(g){g>>=2;var k=I;return new e(F,k[g+1],k[g])}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][b];c=Q(c);P(a,{name:c,fromWireType:d,argPackAdvance:8,readValueFromPointer:d},{pa:!0})},w:function(a,b){b=Q(b);var c="std::string"===b;P(a,{name:b,fromWireType:function(d){var e=I[d>>2];if(c)for(var g=d+4,k=0;k<=e;++k){var h=d+4+k;if(k==e||0==C[h]){g=ia(g,h-g);if(void 0===l)var l=g;else l+=String.fromCharCode(0),l+=g;g=h+1}}else{l=Array(e); +for(k=0;k=q&&(q=65536+((q&1023)<<10)|e.charCodeAt(++n)&1023);127>=q?++m:m=2047>=q?m+2:65535>=q?m+3:m+4}return m}: +function(){return e.length})(),h=sb(4+k+1);I[h>>2]=k;if(c&&g)ja(e,h+4,k+1);else if(g)for(g=0;g>2],n=k(),q,y=l+4,z=0;z<=m;++z){var p=l+4+z*b;if(z==m||0==n[p>>h])y=d(y,p-y),void 0===q?q=y:(q+=String.fromCharCode(0),q+=y),y=p+b}V(l);return q},toWireType:function(l,m){"string"!==typeof m&&R("Cannot pass non-string to C++ string type "+c);var n=g(m),q=sb(4+n+b);I[q>>2]=n>>h;e(m,q+4,n+b);null!==l&&l.push(V,q);return q},argPackAdvance:8,readValueFromPointer:Oa,da:function(l){V(l)}})},R:function(a,b,c,d,e,g){Ma[a]={name:Q(b),ra:U(c,d),sa:U(e,g),ha:[]}},P:function(a, +b,c,d,e,g,k,h,l,m){Ma[a].ha.push({ka:Q(b),oa:c,ma:U(d,e),na:g,za:k,ya:U(h,l),Aa:m})},M:function(a,b){b=Q(b);P(a,{Da:!0,name:b,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},n:Za,z:function(a){if(0===a)return T(mb());var b=lb[a];a=void 0===b?Q(a):b;return T(mb()[a])},N:function(a){4>> 2) + "+g+'], "parameter '+g+'");\nvar arg'+g+" = argType"+g+".readValueFromPointer(args);\nargs += argType"+g+"['argPackAdvance'];\n";e=(new Function("requireRegisteredType","Module","__emval_register",k+("var obj = new constructor("+e+");\nreturn __emval_register(obj);\n}\n")))(nb,f,T);ob[b]=e}return e(a,c,d)},y:function(a,b){a=nb(a,"_emval_take_value");a=a.readValueFromPointer(b); +return T(a)},f:function(){x()},h:function(a,b){W(a,b||1);throw"longjmp";},D:function(a,b,c){C.copyWithin(a,b,b+c)},l:function(a){a>>>=0;var b=C.length;if(2147483648=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,a+100663296);d=Math.max(16777216,a,d);0>>16);va(B.buffer);var e=1;break a}catch(g){}e=void 0}if(e)return!0}return!1},u:function(){return 0},G:function(a,b,c,d){a=La.Ca(a);b=La.Ba(a,b,c);E[d>> +2]=b;return 0},B:function(){},t:function(a,b,c,d){for(var e=0,g=0;g>2],h=E[b+(8*g+4)>>2],l=0;l>2]=e;return 0},d:function(){return ea|0},i:function(a){var b=Date.now();E[a>>2]=b/1E3|0;E[a+4>>2]=b%1E3*1E3|0;return 0},m:tb,g:ub,r:vb,q:wb,o:xb,e:yb,C:zb,a:B,c:function(a){ea=a|0},F:function(a){switch(a){case 30:return 16384; +case 85:return 131072;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1; +case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256; +case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"===typeof navigator?navigator.hardwareConcurrency||1:1}E[Ab()>>2]=28;return-1}}; +(function(){function a(e){f.asm=e.exports;J=f.asm.S;K--;f.monitorRunDependencies&&f.monitorRunDependencies(K);0==K&&(null!==Ca&&(clearInterval(Ca),Ca=null),L&&(e=L,L=null,e()))}function b(e){a(e.instance)}function c(e){return Ga().then(function(g){return WebAssembly.instantiate(g,d)}).then(e,function(g){v("failed to asynchronously prepare wasm: "+g);x(g)})}var d={a:Bb};K++;f.monitorRunDependencies&&f.monitorRunDependencies(K);if(f.instantiateWasm)try{return f.instantiateWasm(d,a)}catch(e){return v("Module.instantiateWasm callback failed with error: "+ +e),!1}(function(){return w||"function"!==typeof WebAssembly.instantiateStreaming||Da()||"function"!==typeof fetch?c(b):fetch(M,{credentials:"same-origin"}).then(function(e){return WebAssembly.instantiateStreaming(e,d).then(b,function(g){v("wasm streaming compile failed: "+g);v("falling back to ArrayBuffer instantiation");return c(b)})})})().catch(ba);return{}})(); +var rb=f.___wasm_call_ctors=function(){return(rb=f.___wasm_call_ctors=f.asm.T).apply(null,arguments)},V=f._free=function(){return(V=f._free=f.asm.U).apply(null,arguments)},sb=f._malloc=function(){return(sb=f._malloc=f.asm.V).apply(null,arguments)},ib=f.___getTypeName=function(){return(ib=f.___getTypeName=f.asm.W).apply(null,arguments)};f.___embind_register_native_and_builtin_types=function(){return(f.___embind_register_native_and_builtin_types=f.asm.X).apply(null,arguments)}; +var Ab=f.___errno_location=function(){return(Ab=f.___errno_location=f.asm.Y).apply(null,arguments)},X=f.stackSave=function(){return(X=f.stackSave=f.asm.Z).apply(null,arguments)},Y=f.stackRestore=function(){return(Y=f.stackRestore=f.asm._).apply(null,arguments)},W=f._setThrew=function(){return(W=f._setThrew=f.asm.$).apply(null,arguments)};f.dynCall_jiiii=function(){return(f.dynCall_jiiii=f.asm.aa).apply(null,arguments)};f.dynCall_jiji=function(){return(f.dynCall_jiji=f.asm.ba).apply(null,arguments)}; +function yb(a,b,c){var d=X();try{J.get(a)(b,c)}catch(e){Y(d);if(e!==e+0&&"longjmp"!==e)throw e;W(1,0)}}function xb(a,b){var c=X();try{J.get(a)(b)}catch(d){Y(c);if(d!==d+0&&"longjmp"!==d)throw d;W(1,0)}}function vb(a,b,c,d){var e=X();try{return J.get(a)(b,c,d)}catch(g){Y(e);if(g!==g+0&&"longjmp"!==g)throw g;W(1,0)}}function ub(a,b,c){var d=X();try{return J.get(a)(b,c)}catch(e){Y(d);if(e!==e+0&&"longjmp"!==e)throw e;W(1,0)}} +function tb(a,b){var c=X();try{return J.get(a)(b)}catch(d){Y(c);if(d!==d+0&&"longjmp"!==d)throw d;W(1,0)}}function wb(a,b,c,d,e,g){var k=X();try{return J.get(a)(b,c,d,e,g)}catch(h){Y(k);if(h!==h+0&&"longjmp"!==h)throw h;W(1,0)}}function zb(a,b,c,d,e){var g=X();try{J.get(a)(b,c,d,e)}catch(k){Y(g);if(k!==k+0&&"longjmp"!==k)throw k;W(1,0)}}var Cb;L=function Db(){Cb||Eb();Cb||(L=Db)}; +function Eb(){function a(){if(!Cb&&(Cb=!0,f.calledRun=!0,!fa)){Ha(ya);Ha(za);aa(f);if(f.onRuntimeInitialized)f.onRuntimeInitialized();if(f.postRun)for("function"==typeof f.postRun&&(f.postRun=[f.postRun]);f.postRun.length;){var b=f.postRun.shift();Aa.unshift(b)}Ha(Aa)}}if(!(0M#$b9N+1;pAyip90#c+ZND%}ADj?WE5)c)n2wr7S z-~oz&^u8c16cGglMWqNBihy*mVdekM>`hZ&`Tzg}OH{!!wI({E>ss1lmQXWB$ za)sb`w9J1>LOw0OeMaU#D{FX8mRhprrs#b?)=bvcT;{ZpU$vAlt>jm&Wqup^d!Nj2 zE9-10ziKbz_q%u=D(c|!;J2fz5`H_$A$68H{S=n3fn@L72+ zL{alXYPvjO9uJyjE=5-q)b3VUq#9CLVLZgGC`=6t31LbFSBNVlNM)Kw38HAE8^EEi z(9oa|-5ur$(UBYKB5sKx#V1tl<} zVi1~VT96VJR4r7v$2>HC{fiypn=hOO2+ka|6q%>ne}NIt^#ThUvlB5Y~ci#}tpdVJLfmxmXw1 zb%k|xrLb9mYuBj^PzfDy~;lrC&eST}A2N&-JGgd<1i9 zG0)Iz{1~6Y|4=5WFRK&PAC<(AT~PR@Ge4*!M!%zxxR@gMld>^J^9|CN8o zrmOkt3+i3|C;yo5=O6NY`~$w1@8Jvi0=}HT$CvVD{Cj?z-{K#zF*o@Qeg*jY9lyjc z@(cW1ex9G@h5Q?SnxEn)`PcjeKhBTxulSez3x1>-|D1ou5A#F(Q+|-I=1cfus%0jh z!C&RmDSAdZqfF(K`6T`_A2W@Q8P8wfFYz%G_(c9954pas`DOoNt$D?Q%`wS}%cr&p zW2Vbga=k8-TYF#AeKE&2$KY)utNWzdbG9y=?(rk z_fu@Mf2O;2%zjxJK_X`IY{g}51IRZ2Eq7ebURl^Gj9Z(L=b}Pn$w)bmsZjzwp^p)B zJ|@7;_&CP@P*6@i>X6Uf3II;0<2S`1pIhTh_VftU9jZ{N1MNQ;l+FtLzXiQo zrr%3~$9Rf5#n4V#NQ27MhS#O!(NJk#6pNW`l#h*QLBsd6YH|JrA#;3%?*oh}P3S)h zvmmDspvowpTY_%z_x5b8br}7}A4;vfTptbDbcMOBJ6mJCoHwC~b@^OYP_CC#zQ;Q3 zZx*^)TY5agnDAOycb4Jr5oUU7hpL`X<}sO(>3<EBxsBE*TSao z&`eAsvzl~3Kd<^HmamHeZ!6!7&3LUs&&c1fwkXzVSC)98kFM(L_9gp;X7_mBmCdkK}woE2h)8t`{ z<_Z|&kNhws&?g$zfT%P*JrbwfPLu9zlg<9Vl`_0o zD;gm;^|rKr)EoM?X!)%D{xy{vw4Jn#pa3vKMrg3FZ;NS~R~L&n6_NY}`S_noNr0N6 zR%os@e1vsu*_X?-Cux{-w*^|g>d#IvTV2{JTV<%R(1~Kt<@z*JX&)A9Y9?zN7V5FC zZjDKExh!==n2rtMV3|)*n*il9bG;$fP5-=vta=B(j-U}Jrpq!$wGRWiF+#8%uG%qH zCQYo{V*$j$L&eH#8K#@6*NtxbLn_w|4fKS@R_JeExm_5+(w+(pMhER5rukI583NhZ7q|I}LlhrP|WbmVbR>ZFbdvF|koR)kQN&^HtOzIV{wCuNi}S zdYDb>{=FV6&#TZkMSby@u6t>8SR&waNQ*Fq+BsyVHNflzX3%sO(E{tdoKjj(#N=Q+ z0iqI^Lk&eY{dK*`c>zN0vM_C?t3x~yB;?82@>nj6?FUpLG4&=Qw3&(aSa}rr0ucu@ zDD^wKLK6oP6P)Wg{{C_(%@Wzn7o49oTTPkV#dHvdD_O!$X)UAYK{e_u1 z6l-{u)!4IU)gq48uyi z8eZc}5fO2jI`*F=B8dKlh@|-E)pXY{+67>wAXC9D!iZX_$x0=k%Th*J#ROh*V308) zjSh+TpRT#*f9v+#*rG0@?x3>0ot}CizN8Ui0cb?xqe^_lKPqjzL%^jN0lETyoQEoi ze4AQ;fOkr-BYBsHW_YuIM*4M@>d(uFV`=`kGG=S5ID{Slp;}QPnLaRJLv?vffBnq% zte<~UW)J+H$vhgj8f+aXYRFYuSqDU`HYE z`_G_%4|YI&{mKq1^Y`rFVTwQV{#Gc|I-Oy*|6(Tstl#+z+vKnG00BPnz}g5_u--dp zW)PU(`X_!tV&(8ig{7_EJ#w?gZu`eP(-Jbx?q^c)<@IN3A|Cr}ijp2DI#vl!5MS@Bj`sp(*5h7y%)02_s=F36^BxZ{4r2m^SS0Ie&RV3 z>pbJRI5f2UIr`wrb4kc4H>P3=1Pv@`vXY#Q&4{pySA+EF0eWdh3g}I;65|7pk{imBJR*|v^YiaG9VHL9a>&@c|qrsmA*dk z0NFR%f1vuZXW!%{>FZdW$CEB*sA^>1)dR#@t&b~%S|?jBV=Dt;0gAdjv5-AMk3q!o zVSOJa(wKl~t9Z{B3S)V4hJ9e~$ZshVGz(}~EuEeBtt4w&OW*U$WOGu0t z95P=qnt_z$kIRJwco&kC%Y&(hP=$Q|tqFVB!~TsgoMrXa&z?9x4CtHl+9jZ}*Y7RH zs5697_xm$YIL==izw7+>0pt%q;eX}VV}buUuXjSuE3enbcKhJ8^xg4gm~g-q}DhRi#V{+a64gb{CzL3SHE9rJM)HvZAij{@oT~xJqTo z(M)}}1!m#%cYkD{#A2;u2Bozm(QoQJtOjcV3ZHefd_0w!E%d z(*u2jxaTr5d<-MUM9Nf}f9{H5Ww9o5WhU$3Z?Uo&x-)rY27b4!q^@~a)xdAtRn^*K z9zYGvl1Ty;pd6#rL@Cw+1rr5iSI{bn0E%T6(?}=b5XT*>8m9k!B7eaF^#3 zsJkRJDxwi7{^ZrkK;2HOqwqUub>*NGqD#%O!=|k^o27ttJ16R7r6UvV7O83fiQ%G@pk*54@GXJ2=PgV{G z!Y>eda$I8gR37agwy=*`q1#1pcWDo(b4$cG)gY2Io|6EmC`VFHLI!KB5}RGCO&qo?_ge^`yBy|#Z= z$Z7?39CqaztNaW0w?jX!?O!2(+xahi^e|#AKHkeR)`uL3WNf8B@n98}>2H4U;haog zB8UdgREhX=qizaJB&<7V%o}dqaiL$q5{6n1rVYioqjFf$MS@1iu#Du6$^={B7v} z{?G};K0Vxl(w{wu-)BE-gWo-$EyVA@&j;f7z~_1RZF^)ae)k`t{M;`l;P=`W?J?d4 zUseKD>hUFMo7Q|88H{dP5tiHd$p6Wgap>WtFRKH}`090(zx&k){66trWq+NcQ}qmA zC@75I`nszB>QVaKDMKPTx|}YGxxaB@RL}S`IsTicqx?e)`j`#P!oQf^@ z>gA`AH}spz{+G^2`xkr@Ce473SIc->Xa<``Eaj?N``qu zWJtXL!!tejL-ya=_y6mf8I@w1DE8v7D*h7i=R;#ht`R=1x}F8Pa_)K>rmOsoON{0C zf4y0grLV7gs}FIq7jL%!)PdVRKwZCG3mQrD`xNA~`@SkD&&cmP`-pW|Yl=97)T|)m zKMK$44?ecqU;T&O?4tkj5ABG(6O|@S6A7a#v3GDvuy=pQAOFn0h{=F==%Jbi zT2k=t`cP&J?-0gFivs57fm#iLK{_rUH?sT_f4Uc4-1}2TUJsuNS_^)U|5(d-i6c7Soj`9Hh#j5BNs6R=QlA=k zDq;&)zjG`i1sw;=a;nmy+CgcBUmnn8{`%ZsYI;JQg92bc%sXOpuy4h&SKRET zJ=Vt}f*Fn!DQsq{&Eklyqggc|mnbBz>Bc5m;Ie*m$*Dn2b42@8Ry%ByBdLH`>&7U1 zS}IFrY?OFEjWsVf0m>Y(W@rwn+c*r*vlL)$>XefzsEg=T+sxYnJPNOqgor-3Jt*`EFt{DA^%V z%E@sV^_(K=jGRY+(qOPe1d4IX68RCWz5LSoi0}kJ9!v3ZblW3RGm+I!w9jO_S*kE< zu?&_bn$%*=F_ACUV(Art$&gJ*Pz^Udv?%HJ2esHG7LHv~-mG9&w9YPPMmu|JZMH*W zL+t13vFjY+kVdSg%7%zto!BJtX*1@wlbW(S3Q8)qV6ULWUed;aoYh`J+JJnSzHHN# zz0DvYTwovK_ux0N|87c`}T_*Wil%o>POd8{ph8u@HId(U2;&#t@KN%7VsR-K)+ zcTZxYw6Jv&>w$id+t)2=Hl6Vb3yw$R)&%VeGnE}aI!(+FU1ws&XWNZmW5=12&qeI( z>|xeNJo7rMgW#LjS+w}zbA*=vOT^wCYzA8@y6$Ap*C0zAIIbBE1(^px#OJ^ST&@1ri{EyFRP^_I-kTt_UF=EL zUp%{uz2TV^*bvN^C1Q88Zi$lE>R=0?o780uVmZ$D8Ws^*tHku(pcpH~d%KyBjT8rW zGcT(ruJ2}0S%?~Yz(vwUw>?0@3^8pFOGawb9+ahsTYH!pgE<9ms6>p>ZS<6WI557( zUIxvd7_yfo1%QkIP$&U~N}xr1v61SD&-b#XfQ|ZqIci5)3G@Z9BY^&(vNj*c$|irn z9L1xo0A*DOAQ=D!AF!B!lA%PAATE8tnqg$A`&fM3NDs~eir1y!oP|C@OYNqB8}&rL zeXMFyJ}p`HWA16vCL@st;>V2 zT-IRlSek=iRGj!BNJ%$H}ide808{CTpX(7J-koltg zP|yRw;rSE;pkGwl&uY~Q3=3m$my80#$E;wmDr{b|J}s1^EjjdY`&pc00=MVwXXoL! zA|@OFW@z^I1MC?$dr@Q`VN0z{9|VR>GlIlLH{|O~Uud?HW#aTwlrER8JMjx(AA8a6_9g49pj!JVTVFoKgsPK7bSY>XAYWsSu?}brwHZ_!3$%vXBB{2b zG+Kw@wIm%v=U&oNIq<@Bob3+j3p$Q@M-$@cakjj4dg=+by;RzM;A_w$v*ZK%Zd;I7 zH=*Cgx&+}IsTwbe_fN83r9KnpDfYy}PUmSLbYj3Dh-4H`(wZRZClEl+8pgFDhz3@a zVPq?tgG{3&qdZh1L1y{l3~}ug>sjGND4`(zfwzJrTKPCa+dWRRRSYvovxi2_^7xCu zP@@Z36<*)CYd0=ri;4MsdxpJTET<5WxBX|?GmK5PL(j9p3c}GB*l^A!iwobeZsm6> z5C+wNn28;;Q&e8XQ`uZmz7~%{&~Ft_6ss?@=`2g!yIqUMp6|Y0Yh?Scumh|D*o=$R zI;sbpW#Kwz3>U+%vDWCumTT-*)w(Vy1OJidKrhPktYcqCSjWVn>#R*k2IN#|HC)Dg z+joPVcDEh>N;JtdkpGaaSmR%lNlP0A3q1LkSOEabGiu~WALJ1$Kk$WO<(B|6WZP|j zW(96G-wwUY`f9BMA7balQB7J=-I(#%Kx0l#P+Sw23FQgQzc7v+yWTY}<#SR%VjYdfqL)`mVE2mWyy)IkdzM!@sDZ~m zQeAnEu}|!<8cM$~cG`X-Tj{B?)8eE0N*g328Yl~?cw<8azF}#0mnO zFK)ugFNUvC)bwBAi<|ume9fZnlz~sK@5*)xp2RFs!^I7xP*;m`(VbV77qJlkdQ}m$ zfY~#ZCRop>XDWlkS-M>~U+G?>DJN~6lDd5l_a~`dgZbTEG@rT;V`w@QSU1_U!~b|w?c1#@V#wHE5)hHkzD?%n&xFl ztaxUpvffyXZ3;Qn1rDNs!!5BJ6e!>D(%JA$Lw3!*${07xuooXt-eD}$zV8#I7D6%h zQ>9uL$daK=Uxvfc8l|q%9JDSc*BI>6NnU_skIP#DlBksrjjz|R@}bM{Rv>o5%nJBH zaR}sJaExFmT_ep36ovl7{^?UV>gHwo;OmlXx*aYZNl>!2SINJrN?quWLqQ0rHSnuY zSv!4U6nzmxStVbB}*KuM%7r^QvNY)omqW}`Y8z+^9 zN$C*0&@Zr%`Yvjv$xti9=oX-WNTeIx#1AKxDnWxB?zaYll#~6hJJ-$O0~uFh03C889v@33_OHyOsj=XqVp3Fw8V~aL1Rf6>#}ZcQ49$b$fQl|s52qm zxrrwiK*li;-gG&ZIywj%wZ)DzN*a1}^^9VMos`x?w>5nYGfs-wvlwBDXnIyjLGbul zB}T_Up?Vcl&noxb2Nfu4gIG)RRa~i2n{p{B4S;dvC-YC|^&%Qr2wUbIMbU*<$FoV929H`UMcyEn?pVq(+O$7nMWos_1zMjIo)0 z^O7=xL2K6kGGv-b!gmFN%4#v-iqez4EOuN0Yb_8rt|)#4FI-htutg&Cni5;F;7~-a zw>&g^;k47;HEzNT~z{TL-I9&%HN@wQ06t~6k+MecQ_C3{J%y{_Dg)UE57)|W)W4JDd26LoH2 z;aiJtH$f+QXYOr{ZC4)V^=4SzOdv!BG?kyPK53u;84%JT?GTU$M-l=ui+~DT z01|U=LWW2aM{g=M+4}-c>%9>4xux76^*-EBA+6)YPZARypsRqg?7pSsV%pPgLm=5| zzj#~OrL$e4)h|jt=m5w6f?9UlD}GV-8En6JGK52;Cr*X%o$Muho`<()>_huPDBsW6 zGO;?G#{%f1aK4>=C|)kdR|2Sx!J9CA^Hh1>m9?}Fmgjv`FpSI?-dqf?$m==r_TuM? zymnFindp-EFVQ^P$$z1!n8g-lwHGhO7J;@9f5!4mz+}Yn!I*&Aal92$g>n3jo3=R& zB;uQRUb80L0*Dk~vw^4Md~&#_!0Dr#5aXV_X1mB7cuq!1mU;|l^D z{>glU(=bT)(gZ#d%vi*mydQY*^H39O(a`3AdRhhQuw3i&8AMJaHtI`;hsQ1L8}QAl=gVIAngA z#;c%~U(9%%8*T38N4O| zXYhCglQMXH1bZ@gcLed7sJ4N~&g5-SZGI+CLuyqfuUdY)f`dk>BiMFvJ`+c{PFNof zd$+i94jRc!BrZ_>n#KD@FxQk&OBi6@IYdQi!Ya2W1EC*oeDgM=a{i%-L6 zMn7Ihgx2BZ<4Ths$53Nx#P5I`!~5~d5oOeg()r_8v9KSH731sh#%Qgej_k*kIZp9Y?C3J5f&%a=U#x{8pxBx;QIV~#CtX1q_2Ih z0e?05KYWU6oOAhp7_ddHh8RqH(W@ap&r)rx5zkav>Jpq87^yhHb&{2djJ)W35w7&0 zbUqY3&eZywa^e!(n)0S-|87%$ztJAG!pDe`CJgs;@{V$4091Dn)6QRMrsRw_#f8rEm5u| z@Gw>MXvs;v{&Y*;z{C)-N=uH7-T#hAba4ZG1RUHLNJ9)Q9+Zc)Q7%$>c+3hIHYCVmr=!1U80>c*;1yV< zPauv%#j9dhkY6^bPE~8aD;GrPp!lo{uLR0*y$i@(!a=#A0SKag_bwk{Wj=1j3?rSK z+Zbm**^SQul@aB7@(;>wRp24TixhTS#krn5GwLfkLKms%CN|)x$AY{&h%dpCwja!cu(YCE zE`Jlj&0JYW_)sFrw438ZhoM-&RPoGEe&64>^yfqQTAXty4&w=-K5QYZ#RBFFqHqy| zuFKg(Dr_yzCff517pUx^XTg!u#Mo!CFmvq#&+^fV2jdK)eE}XS+K%PPVFCIrqz32QM& zoSnq${5P6YXEJY4`|lgN7}L*`V0u|>d1o>o1w&!XEBsA`-L}_F<>Ny@@3I6Kb%E$E z_}iGOUj?79v4!?q^LR6r<%-h_!3%TkUl(HGStF754$lYFs(1L4Dw}5emh$@)gpV!b z?Kqnz-e1WdDF5|e6rEo?iq3BxF8eJhI)6#oQf$Fzq^eWs2ZssW*c`CnS1vN(&lNAO z=4oM@CFvlgv2KjEcdq6+45Ia&HN1Jb7aRjVZh}CFF(*SIpXExB=B z91B6|?g)D$Pl*Bsxjb+xT)>!<_;=#&SmN1 z?j~LX%%X+rI8HTMgRu(F;X}IMvQr%XP~L&?}I+2i0kij$4DmY04c-O zK*vbt+bS#Tzm+F74N&D!Dyu?2Fp?2TrWmAaa5Ch}D`JY2nhA}9C=)Kfm_%fX54Z9r zF|{48C+{W_*OTt|Do(43+j#BDB`3?SP(%LsgFMTR2VSYqY`e- zAi)M$Lc;=L2jWz5pv=1Kb_$_Mc-061mB|e9pkjg!&oyo;FtJJ?=iqC7P~Ia?3A+j zuRB4xQbff9oHb^O1_eAet}`0VK{L>Y`LGJk?vl>i;_(6=T?uaAxR?gP1rQyJAi5Bj zFglBcs3B_xK|s(Yh`~h=!*UJzmwj0~%39)H6uNJlos(n*xgt%28zT3?g z#*)I>R7pt`Bz3?hbK(W!ojv^J*bhq;@1uC2c&})-moLsEt+%Pr7fdRRDO9%twHJ{r6MS`6sfO}m=Q&(1xW3qR5Vg~)@&pN85o1`CneMJZ~~I)>C5q;AUgS{+7m z0VQRF`;nSKDcN8FQb^?AlnqYBtV2EE;-DOktuB9JbS{*gFxpKNEB9d|6o`HMumcLj zm3S?HNBE8Q>vS{&eyAel9#@4Rj!06Qe%j zTRh`u6+z4rIUnrACOLJGZ)T0{S)cI93^q3N5QLURV&Nek zQ{f$E1)Cw(VF(-{7Bn5k+xCG&IJC1PBIh$G3_iCfe8yj8-p>^u-MfOfP>e6itZ*OQ z)QH0;cXU#YFr%@3&k??xvBo0vD34e5T;pER;V6$5DPQs-$&1Jb68j=76x<|4o`piJ zHCnC_Xr2y7(77?u{uqz8k9-L^6E*pcf>X+BcC+)M!ZEPOdu>3BW_>`&-E?FiZjZ52 zrRWKMk3okyTN(@CHC5>Lg_;P@yP?xFi(%GK@1UoJv44Yx5Zcf+n(1}QLCwHMy(joV zc2rzH!7s3{#Ft+~eek7-JP9ShyCUZ#Uxn$pc#=2prkE~YDE2%$kgUum?}-qa{MqpL zz-$poZgz?vfkYI2n$E6v_G#WzEh}QoIm;i-c@h*dh%6cd$s;VXs zhHf!lK+29wpXY;&FM-6=E`tplqbn$QtDp;eV`AwEYg-sX#pR9ZxG6A5?vzzM=;S zFh0C^@ZZLlf0>tgXhP^$c;KZ85>GKtm>D0oEIl8gI5$^CpDTQ$DR0LrN)x5bBNJqt zb*}Wnr){RHSPuF--IOQ`dgl-(c z&0JK!&a=xyfnOdgf-Dj%6r;a*{5tmOpJMZM-jn?yD%{}JtK%Ll$vJSbR;=N;s7>7h zMU*bq3JS=@S~apn-y6Ikq|bRbcyt&l_Q)kdrEiH{H~1qlqvA*>f=qJwrN=MOo3Xiu zEgIhBl`6uw*s(em7sEknlz99m|0!m4@t4HM={UpitcI~gjJ<^~ai%HyGEj^!N877z z@dj|+5tncC_H3S=^F9BNu`9EF#7W?a$oWw!78m^(IGn>A7D}>%{Gq#O*tMsBu3h(6epk&YItQI8K4HQJ3S5WJmQ?yh zBjJq>b$K8Y6u}m4&KCDkMKD}Q$-(&mw^ML zLU+_TVpnTDV&g;Vk4iB;pzeuYT&#}-eG!%_@>R8pb`Vic(W+uB6;0e8VKG?*kDX6dwQFL1h~4n&cS)2}9h4*O zFrl0q6Wvr(t*WHa=RkJHaHm)|p<*ZLnM*XK6q)XpYHC%O?#TKF3HVD*O@aK1w~p!r z(U!uj)EA9)m8^libhRz;c&V3#dwX*d2X_{fm^waYjiHAB&z)L?%liY zwj`lDoQV?%wuFzIO`+-+@ov?d6Q~RR${>YqV+A?QQ3YUmpSoxSE#t{gF{D@y$9d&2 z4y5)dx4M`?1dk6^+puggKUj?>mnB8sNCQ>1PT~aHRZI_7lgYidOujGL=xTo)tS+Mp zMtjt?d4Gj4x`yHi#H|(ej1go{gh3LUY}<@{&JQmxS|Ri28H zm75B-4rcHN#pfnvF6J6OzfzZ-jZ8D6BaEroVKnjRBspJV^6CDEMGumoyhRugE094N zSfi=kKS~|MqDD{?c+Ci1bYk17v!^SnKGs99Xtff1O;ko;%v1qb3FO3=Y9=xcO9+ZG|F=BW-wR$vd`Dp0pgN>{3gOIj2$<$W0 zQ@5gu-1b-s%tm|lLAG36YL9J`A?~?f&58v$`MY97a+d%PfFd_Z>5zB7`VBtq(*d5V z>0*2bbpTQqI;f;jDc4bLid5&0AY{{{`lq0CCs@dCjjKw|kb z#rW=6!*sErI~FNLZ0fE)k1k~OP+PKedrS{l-%!c+Ug`trU-{l@B4BFuRtF+e^j43s zUSjCO>Q0zvQ~Ic#ks8-W{SLw4zG@nRS$);22(~%FStkhUCo|KXponz14^gX$!GqKv^h=8TuzZjjsRyXu*uiS&M(xP+84g5nASNb` z=Yybt!SijvaWZp52tqUP#C4JB*JGy8B_PtEz?6l__Y6_%lx1-3hNua7KYSHo?b{Jy zRJHPtMpy@SfH~nmmr=#o#f<`P?BvD{ZfxhqHg0U?#{1mZ!i~+`u(>rG4?k?&8DT_O zzkd{A?UJ!Yh^f|D#KW!q`y(vHx*_9NKcxIWWqd9gnN|>CBpI7{A8RXOGZm{4!3@QE zc~^w-s$wlhFkP`eMKDdVt{|AI7#q2hgmhe9z0KC{E;Wr}y{0Rhr{|y1)*W<>D zXqBth?ts}KUmzddGXs4g5s@D7GNtl?X7fC}u9=)QD2QIb>rC>xRI+l1E<2ObsBUpq zD(3Q|Ts4I(5Pz+PZ0uyPoPS2m0InQ5qsAyH9?|BEn(lzhiyy_U1_i(u3{~%CckRNV z>RO%6vR@mi4p0#OJW3s`<5o@IF>0Q|geZJoeU%A&_&6258nea3S5!P$Vjn~hjB`@t z>*}O(Y=J%R9kr)|@aK2cB_V9Dn7>9%4c{xp7)flHu~!^lqmIUw>abSLMezPw6_-dw z{5rKs#QjoCpeX_2a)^j{e4Y9V%70m>K7u{gdp&4WhM2!z?#hG>YHy^*Y>;H)#0Iq| zQdt{S@=F-FQLT&Ayp3x5-|8hQe|n=j3Oo|`z3Yof`T z(;#uzRwtv@$(z+`#4>fQLtH!jh~G-L!cU!Zr<=FB(4V$7AFN`w)kPQ zTE(}Fneao0t-APh<@iHL^I9bzyyr#zEoyyi`_Ws}iVBF()U9ehCOd4KN}e07wqfv# z#N=&i)x_Bj&rdP&Vvk9363jxD+qv#TNbt!vbuEUJw_P0yf^lWL3Mcy%;oB+cN57q_ zJDg?MLq1U}lD|~`r|L;3Xe{O&QsMjDwIHqQa!AB*TUw2f+4PeT` z?Oyx6V`^h!J(o^^6=aHLU#lNy<9;O;P@a0=abxAn1HP-N^dE#bAkF~BU}v&Co~sH} z!qQREZgx_Qg}fqqpHeM%0Kk6tl=?aUPY68ojM^xG?+7lPQS1GO-C;L43v_31+GEbC zJy?zZd2fo}&#R}{TjIpGYCL>Ye)?8zhE)9v>I(>VTu`g9x9oEl)UY6y4yPkEzZ|)w zSch4z6%0QuxT56WP_K{^>9E`2D+niiudae~si<{F{j)sOBTyQ~=K^2Cb3s7U?Iypd zZQQ;(xOa~=Riwy9zZ`!64KnKZSa`nTR^M2wZGNLb)5Q>`bzybH4yMKA)d4<8Aa78~ zr^O$JqS6u2Uf@@r5>Z!J=|p(xM7h!lqjaKt=|qLni3cM}ry@%yqDm(!mQF;MPQ;W> z#Fk2k)ruBhJ`G|nPShOq)ETGvTG0d$=Si;Bs+0ru5;U9R3@0+7C^8-qQNXo+0Q9L^ zVP(v^X2uWoX;26`cf5*W4Wo`Q@i6R=I(Suv9++eVL)W0KSBmPJQ4|5NMb9CcE)*k? zt=wtp_zO-c1pM*jT%vN9#sOf0#y&IG=}UX}IZ3*GSZGtttumF6-_2 zIQKc&E$W49D}mG(!!?+V)9izWR!0v#zyQT86E8Cy5Mj~UNbHULXe|=K8`0V_Ab*n> zZ3cqRV(4p1`NV`cEm~}j)s`TmZ=BW#K|!20h8?gQ#%l*dl5YPZZ?H<|3P}BKt0)8H zmW}~II6S9R)2hdQ9{|*Gv@D9#HI47Z&}v#kTx0E5M~g!+)(K8mlc{+%W$+0y?=8L# zTg}8soXfJ->X!mHXp{aavpVcQVFXJaKjl-j$VxZYN_Z%Cf<~FjNUPc~nC4w{GsU_o z3ae`g;^7o677(u$v+^!bl0h^&;% zUDdxYwfOg>rg$#??F7Lz?T{L*e3IQJTU$Z?XVSyr6UW2hV2SD$#!nY{IH+({Yf?|! z!`Vh#ZKR!05Poy7mPOJ?WOHo-+>=Ffjh>JtY3QeQr8nR`F@1euB~g z>L>g4&RRQiT{`msxJHWT-9^J=8RC^L8a!s~?On9G4E6rl6^>6w6lH>^C>h}(}~>Yfla2WZ~JBJKFU8N0|Gp!GyEdk0`^ zrP?V2Y0^{0Badq2Y;@;Q?Nj)?e>h0%kCm=DSW~5U8Z>3_2Ze-DFIO9!;7rvToNTbH zG*zm6Rv<*aQX_WcYHd*yD(-6c8LD+)@C#c#Oe^5X96nt0BTz?Zr_su}5!y_&GJ2%e zx@;@^M`^pEgqt#2YpC}aApNIsI{%w5sZOR=LV^;Lz`q%Ez&o=HrijF`T6Sy}iQ^ap zWEPA=8t5Q~kzL~Pv04ygJH&`_TBl&xZUQ%BKYLzYpZ)H6?PaHMJyxb_o`$yw?XGzm zE}x~^{qwaqn1OqWYPvwX#n#iccqNH6tJN069^S>f>$E3N(4fJQ4bemK%!_MtVJy zwTVZJ!?b~7hT>OW(T>6PFnEgg60T9)nBwgDC#GrRBFikAbbULb3GWqF3GgL%nJ?Ss ztJ(tAf|N3(Tr9cE?D9mwM~dDCtPDRPG-$c*i}x%GSK{;7xFq=+ou`V6j&JA-nKrON z)tOp1H)|yxnyo$Ds}tuYO%<$q&n7>Kk$BY3F0QXCa~Ns5iBTSaxv}93L7*P^FtF{**59Qxj;{Ui_9e+gCgdHm-F0lz+I* zZBN;$b?1OPw_7WSdl0A&ofrAUDZq47qea597@vvld$b|6NTA&K&y7VwF)flTw(s4m z)x&NU&wiloWFLuo`?O5l56<1Etq5ZaMD!P$7uuzIUw~$?FGS<7v>ogV`;V`{t%&9| zJ*K^+Q{w-T7WYMNl4I(jKebpmrhfOQHb#$Xtweo3f|;g{*NDUlQ*VOQH7A9~5mqLHdTaDv`XZQwaGmP+ zyY3EQk=Pe*P$qaG1JPt6%|7MTr-2_Y8JYxkUt0{Trr%-@*$-FO8>j%qYX@|5sJsI# z-b>NVJPd{p2C0|AF*gLI*0>W|>d!I^R`W@qZ;s4}dU z{x*Vg_h8Xd#kPC&c?ce?t&gcjyx}NXl=keCfrz8$m+R8Un=HL0 zf*DylT?BeBOZTCkgIW3*1g-1nbl>ICI(h^4iv4ySJ%)4xTkGnv2)?YVOFM6l9z$=_ zVV2i$Zv<{(V4~$E4CEAWUy<#*L5^OlIZY1<7`jR7Ef44^X}ZxPEg*2gy8GW`F0m#@ zPmC_{QZ2&=rJs$so1=ftdfQ*u({+XQ7H1pi4dNYlX?ifDjC0NzGP+;6WyFe34Rx!Q zBYsGqUgF%QCZ!Lc9vL{%UGk?PZ4i}#)M0VSWwEQgy}l+2{UtfEvFrQnoGl|iV;CkO9sE%mtQ6r2*sod{GwF13V1;kA~! z4QJzE0` z0zR_pf_T8zo}nGJubW}aC9knM}&2r)_ihD zos5Pl^#5`v{b_bt-0h@i!*iV+Md*4X`bs1RZbP6P>7spSJuViOyKLnutOG;} zVZhz)uQSDt&iadJu=xWN*dITDe@6I)M00Y|X|HF|*&rU}|rFyhkQIt=%{C8D6Ko{Uev>#E;t5Nzo}JExmoLqYxh zdjOZe6R-BrtGO3rG01$nt%qJ+S*(a%J@w|m^9~Q`RmA;0v3h~{wo>t$50>Q5E)~}w z(px+5!-_sDEY7MSI`;yf%M_3I(tDuz!(L!L8KQ1)y$=G>TgN-7;)WBndRXs;)S`#= zlqhL5l9Tm1F3-(|br{rMoPSuygQ}w86MAh>uHjGUABYZp^^wTh-B*X%LNx3rD}245 z-k0?iKlal*BeQjXu(JC_qtSZhFsuLxd51MJ+KCPQL3A_3t7G*T@q2%LIQse6BYMl4 ze{WqH?XU)$X$25&Q@wcR5sP=~5!vbb19UtZE8ZWVzks0eK>Z~IA2>m~M`h~Bqk29v zyA0Ah{loBRHQpa20jNSz-IuzRtlRs2WX7DimL8Jx@)2pFu$}q?n8REK=+2%1?3aH5mr!Z<~EeHd} zx=47>iqz*;windSn{OA-kVPX@NE$>O74Rmqx6oz zpZ7*d{P}&b`WczJ>7=?mtJ4QNpT#`&756-+lO=TOb9&>H6q6oP zE}ka0bqrG!WZX|vSF%vjr9%ApoIVlXm28@i#M5K-XliY&ZUuw-;oceD-aS56uT+g_ z3;9Ql0-NtDUr}`tb(hCZJgi{AlYkI0{&{^cw&29)^?s54K}$?!DBaa$B=Cdp_ZPoB zuXn7MR;ZWbvzvv_jRe54a7Zb+m)$n8jaR7VO zIK82QOYv9o^I#qkaa$^o4$Z4gthgZiTYl~T8hCh z>Apr8KuV0FBmJ}n=aE;JywdBTOWC|2O7~@5ynw;mdmBef9BbkmMG`KM8`S#u+%a6C?)QUjX;TKW^ka_si)Yn<)8$>cdG_ z*7q*zLu;5L;yzR#ox+L1;9*>G@@2h7&_ukv57>z!Y?5Asb+zkG(nqN+mP*GOG%GiY z=BdKiI6%Pxj7f+6pq{Gpe0n1sRINNRDJ}5?xr_tc*v&mtc4 z@#-}F5%(L1BjCR17r#u?9|9(Iovzb^6Jw_9|5AY#aefe*bi0LLKaK}k?8G-n4&Gt6 zpQShD(0$B!6Gx04V)>i;d$?ZM^)2v%x5UP`z+UEvyKjLGy(y~A(F;(~#X0(O2>Q*Nil`~;H2=)JUk^B^*_e~AI}b?-lZVv3FP z^{8-&aa30&&>G#qHS78Mp1*@HUjQKkomrq)a|(lj#MFExG@r0gZ%+Rt%Wre^N2AiE zlOxD084l?&%85XI`}9J6C4)JbdKhPIh|TpTnpwtNG4~z43gn|*@8E>iNeo;BO7yH) zwFr~*jQD7go{6$w7s;}Jy{orH+2wa-nYLKZL0RL)vh3_)`CZBqS=Mq1Am@qKmgomD zjeV9P^DXh*QvDMQp!IwDPy`#^14!DeWsoyFiJ8lA(nu3o%RyZJC8jS287dIBm+RdS zv{`|5OBYYCpv4vQR_MdZrFlbW%VjG|6*+{Mm3l*b-gPBL*h%nJdMk9Z?JC)oM_1tt zk|s8+l4bo@BlWCUvs#uNSgqfOvWjbD+1@o+`)5V?S}L<^ti?eTg&(cc7ogJI^*Wgi zD{RoGvQGB=4d9VTR@+2Lfn-(t*e1|PV(+@{b)528tc|H_zJllx9IaIXVueSs5^zYZ{m61>P zgQut2Lq5_U3t`*rqerj=@cnJ@CD?PiSotNE0tVWza1K}}W`6}vvQBLIN^cx1)q!yL zGK1+NAT~PC3&b15**K~v#owj}X*^b8f^mgjh6<+6LCBB*_aD_aQl-ZrVy24hV|q6F z@z^naEIN1j7^cD!-HwA3HWzb_V`VJyt&^&G0-VqiLr=)EH76icTjD}-D#Hy51u@qW z{l1nEi@yeTSmK`b5c!C$#z~jCCd(-lI<9$Wvc6GnVRLK z`kvM^+&F&7cFKPvA!J@r+f$vq&%TjuhZpM2!0 zP8r=Y1e%d95&z^IV5h)#WaKMi=XtDLck$DCy(`*k_pM%w?(?!#*OVZ~xr~l&bT|C9 zZ}sP~(#8dxL(@g(1${h}dh0Ieb#oj(O!tSJ>vUB88%Z$kcc(MoG4N(;k?K5$_s3et zJ6$u@3hzZdf;`cNUDIPlhl_eBds6hes1HKLdoM!V#5-IU!8W>!@mKWdda@QM;!)2L zcX8kLOBD{;i(g)qlNxqSk4gMr)&^tiaSex(RB`N@PQI^! zaj4EXnq8N*zHq&G96-1L4$wFzSFs{+*OwMAPyK&cIEjb9m8|tmT5F5Rhcux(z}>85 zWdr>yx_IE&gFpIr0YIb5D1032i}3B&qr=v?Ejt0&x5k}oWQ*xH^u%Hl;u$g_Zn=S( z!)VQ0Qjym27N#pzOmb42Z(%p5ir;R5e5Q#?xAo7Ex_%q%CQSr?FZE#6zsLE{$xI|| z5dM`U($hm)Z68+7G3-G{;D$$dy7=sS{R={xN~8@3U9DJR%Yx@FJ(0cZ2fenE7AF=k zcS5-+2-MtVR)%mgm6SxjA5m+t>fEV@2Y1^$`XBVpW}83ti3sq z`||iGitXR&$s}DpGs)DDJt1Kxtda?YML-lxv&tr`3oa;&3c-y4OA;ojf-y?-8jCe^2wQ>V65Ri~=X zAz|lxstQvm;-KjnV0Czk<2(a2Xc&4sv857CEe4{Yn%d{DsjJe|#&!%&^vgF2xUo#v zmWh7FuMVP1x%6l*E|#RjUWk`qJshXK=sFoD2d%;lC$dSWNIlLJLQ?Gkh+v0E>oIM_ zV}7+M=zGVnwn0Jv@T+vpdPzW5{p5h!hmWF%f}n@EBG%>|#fJg4BjTh6Wt?U~wJ;4A z(){@EC7m)*-8>|ycBhkWu$jw?FfBFnjxtSg;p~KZ&YB=vtcCGOP<@bUesr384>Yz= zyz4Q|!OQ`AMUb1E4 zka#&yZPgm}i|GUk%aKY->(KUe?w;fjiv!2%blNhLQu1OE%~!7m+4twG_rl4ok6whX zQXk!~Sln7)ZRHr<2`u8(`fBUJl$&|3p9rDeUY!nMcqGH2Zix6~Ep^BL&4i zSVNFk6G`H;(Qk#}s3Ti{m-gCQnyMG0%3f*)PE{hVJWZv!Ze%lb2HSH-GwFG>nMw+- z+%fMuO&xHYXSlgaCnSGsE^)4CPRWf;&D9YkODc}3P0DO)ap?op&W+Oy={3qh-QO$? zZL4c`rWYr9x_PXB!?ESA5f8@Dwm*yKV_@ec#<7^X8?_{Mwg8F6qNY^M5PC~w8xxne zR9}ME2d&`Mx>R}%ELBNS%+ykpTt+6%XX<@d)y@mQmWbRy*bYgq=V}#9!jcz(j_Q zIhw|UnDg( znYJnjndy#LM>;8R!rgpKktY#fBMW~Xc`nkoD;ju!*whu>WPnlBO?@>5#O~{@P9tKk z?x#j9V}835)KM1I04*FRm1VqW#*TjKc0&E^0JSl4+&(}Zo&vDr1!@zkT2{GBy9A&! zrvvWbU2d@24bH?A;;7=OZt$o(@}TwZ;8kvLi5on}g<0D2w42g;LIHNx>O%FLHt0kU zd65D<`GLbZ^sZ%?CgTCiodKIDK&-k@%|ZRVaiMyvQiwr@kRqtHmCEI?)gFsa z%zBqyq>fX56dzoqW?<;-zes%r&J!1dgMxrdRP)G{)&mJFl&}Si^QfeEZ|)`P#~3Qt zUMiO{_g$)v$ovtO_6O4eoM-)oyU38(i-OSGmC@Zg7?fR>*U4lxeCv_^9F{3)dQ)RMxn` zt!{9W8^jeaXWG>+u)@2{1$&|2#~B-nfSh2Z8@%2XILe`+(W}>}wB$&!mK?iaX|={) zU&xIed3}DG+b?eDxz@^r7AwY>k?K}&7(!Y+Y!1WDtA6ZRT<`fzoO`93t2}OuzEZv3 z=k1gy%AQis70t$~WDlTnEcii{m_1f)n^pC&)O}x+*U__vgz55PeU-6ithy>i`Bcmp zj|I&Rv3k5(l(J8WwA8)g>Xqu*B6|Xsz@5aR32Ma%3kBKJ`WUuk=$5g=3(bJ%Teep@ zXe{x3NYAzsp5*m`f-C55uWF?zB)yD^iE7g%Wv}t%WVK&1^8M*nbq$;qx2Yd>tJ-VY z!7y{N0Qu0s3PF}oaR3UeFg(pp0A>cF>UQTxX6 ztEedI@S;f3qM}+pk)p=Z#~5FsE)3uX6u(dHtCSm;-lq;oK^gw>p!z(V(GRHxoXErK z{g+nlF-sIAIvU8-rVsQ%5FI!*0UZvnqM|H^7e$H|MQZs(@S>ZNiNGxN5<80&%EFBg zUQMjH@hsp~RMfN&Lv z&JWM2WNhTFbr|PWV#PWvpR1sS5Hb$vBmMM_!h~pLItVgql zidCD{#s4Fij0d)WZDJcV>V53g_KBz7SKETy)x3}OPABoVkJSf8RsCXiB9p6`%q8Ik zu4WD=)63>+W{DEuC9mGGogs9 z;xISak3C9yq=fp&!)#Sae_Z1Gc{< z#cCGDB;;Hv8wc1KfG!I#GW|Ixz(_~>a{;y; z(EUNS9`AkRj+}ZB-A@>j${zFb{&=g4&NJ;Tv*V;`XuHx(=w8N4x zYa>d+tU>&{(*7Q#v^IVWgAfE|q_a_QZZe(SrqeZposO2dDT5UzwF&ygw<>ETHfOLi zt<5!>#1yumHO$92N#+4Yqf9mtt#^42%Mwp#vOuBtANIn155$g=*hCCjye1h?XVlf zm~bL-RIB8{WGzaH*SdJbg$-CkR54kv)L(H|@$(H>o5r=PxOV+*$MvznA{=42psM~B zVFTgpiLjd!RWdosMxR`5WVfO78`8>w>VVcM6zs$$iCBVoaYYfkpT#d;i^x+-W?TEb zk@lOlwxBf$FPAV}bZf{;GwKxUPH)J@D>37@hU^E$k5>&iQ^F112aI1DvrByCXb{N# z_oXDZ&;U2MK?wfr-8VvKxxq>|c*G$kLgWKBC|+vLa`15QljdwLYV^8djD(o6xER#I ztyjWs!n7-9v;>F860IdWAI{mO#L z($vV`5o^w7W0i|UgEDZ5cf^@xY(1zvQYKl;1(-&G;YOWJ0werRXBPnK*@du@ zX0Vu8)`c~J-{vlC^J$-2^Z!hZlqHgK)E%aAH9+K74{i-a5ZlEoU0F63)!VwVC>FNA zc4hgop?FOjRi!Pq+R>$+cv+j60jiR)3@Piz3P_&_@XF@{Ral0ItGlsjAmvCmIk#kX zXZ`S8YGikI5psIDJ4&}heA=BYQ?`qW9_()@WNJ^g5eYu*$+~f@zJLr>ViG=7G&zS| zL)T3_bUcKMhCT5rgI=C^u(l#~GJih@wBz9I9M;j9n94U)FE%K9SDl40x~Yz>TI=oB## zzD)Mt)|at9N_*q>%UF!e-9I&g(P{s-5sV(wXd~G$K%+;p%Mi9{B%_n|!z0-Y-1NO| z6uVK089$F=DGHdt?^nS0EphLa?3l92n06I=n3zcZ7$(RpMG98QxKI+Hdv>sTr$2=k zrk;R4iyoR*k6}5vi@=7lV35MrB%I@-=h35GRG3oE8qh3BwQ5T_MQJ%kHjER$#u}&y z#2w@}#kJ+EMTb#1cDKeb|5yn?M}BgNryHh2)X%*N30=xDS9;6nKLvHC101Tlt>ugk z9DXmyWFHe{V`bl(FqYAc3oy*iV&v86QrC$`uLchtB)VLK)dcRYT*JPAGxl1lOk>8i z?6DMZ^p-a;x_oi_4H#l2;vYA#w*lQai9HUda5B3j6@`z`MH$lKK2%Jb%u3o&|1f!g zIgDj_=#SSzRbm49axyCfE64WDgYu`|$XfJump_6M%l9@k#p#t^{qbjLzAG)q zt%!I%DX1s2a$v4GDPBY5Bc|QR8ep3tD{qnUj~iJ%ud+qFdNXDuXtKG5HN4F1rk6)a zt)xE9D_eC+Dmg(k^HNoMJSQFGi`T8!TdgB6caR}HT=4J*^gGQc=;@=WyI+F3kjFra zZ((KVWi_`jH3_rPf!o=4^!{}F6m}sdrB-*)q-0=H>WtoItiF>yMlWFpPm_((ZaRh< ztgKIGi)dbw_c(BZ!_0Y!9xwR#8zS`{IWOIG4>!(&tW z;r(qI|48`mXVG&$RL~jG;8UT63QCAgRQOw|p?jDU)?Xl{rv0l4>yi8AgcW^2_R%g6 zVBdpc44;V^>m#vYCd&Px*glgjR6d{?D_i{SL3SJJAn=f!wyGbpr!6_(QXz+mMi0AY z9+R<>nsJM-KJ~Diw%&c%p0;FSs*9l_dzLG)+284wla+YUEIDl*oh4_eX0zoCb;)cw zZJj(W`f5SnA6sRx~Huwd)iu9_q0`Q zMUd>W#&Ph6&XqWx6!R9c7E#G?oCQXl!*+U_x4v4Kn77gv$$6{AA`G>b;+jQr-dejz zuKXG;W{a%}YlhdFu%=_8a!y#EFUI_UUUluGvhp5%l*uQm$aA$#rr7u>BlBgckIAX2 z#ba1z7K=lVNsiodsjRjUOW6uU2`*zdff?Vuj4f$Dh@K|WlU6W}x!zv#S*xkp81n{k zc~YNAJPcfNBR%hUo&LNgE`6Mx5pa4u`nc@zS3V&Z!kJH^wUsHN<#Gw`Ue4wdleu{% z!z1&UShWiBloIjQDi(8WBE;{jScGm1pkV(Sdx$_J7AYAL@s5kq9XZ^})o|_0Snzi? zm8Re5(^AUQ`Dxa|N#mraStPN~abD`hKF0}SpW_6v&vAm-=Qu&^bDSXdITpBXHQSxs z*Q^ug*)+&a^hrs*^T-^biG`L7otap7HD3og3akvSlWnka9a{vbmmwKkxdGt?W`UaZ zXt#^R1JAPpJQw);^ODWyz5sT&&^Y}Ch=P#hx)<5aMYIx`z6J~O)%d0BGuJ5G1FzTQ zG^W3thBZoH1Ixur@?b!Jkie1+Y%NlMu>tF8Hl9f zgEX}`mOm}6inS}ptSft|BtbeLk6&YZ`!&g38@?_X>EPGpu)6zo^zN7_+Q<$m+l>j!q^vGMRwYP%mXJM9{$(NhXD${w^bl!bN(f8u_mZHyo)~ve?X2?sX^Rnr@Vmei( z^P%ail@69<_9nk3v7?vTZq#{Roi_gTvOF*9+T=@xAvDEe26TxG#L_R4&Jdrz!^WXd zeK%tlhbv!bkw{$DC~n-${)~|UA%&LISP49bml<=sN(#&^QA`FF;R+T@w_wS>M(oUiNp*87YD zThr;9uR?|_(AD)L1VhCHX(7=wXjxKh-3x?0HL&6&ib16koj$_8LlyUY#3qP7AF{kN zucAA7L0U!y%b{k1?&#qmLco59ATMNipy>se5D9J(3PT&rfcWhr@PXbUYb$FEmVDM$ zOt(yo+X{JC??4bG;9uc9g%GF!aJd@B)TAeTQgA0yyuB4Gp0=Xr$E+yz%D9?wwb zNguPFp@aIZl%kboKl0Pr!VJh$lY*FPJUP-iB>di5R;Ldn6NYp$o4k zAT7MXoEIJprj|q7f1~ZJ5f-bxwqrd%QEc7L?tqcH3wE&S&_Y|YgYCpK_YI$dn;#N8 zKE=YJqgcI@#k^B|FayrommD^YHY?G3`j0Tp40~SCckjv5f0lqEzhRhOSEA|q_oB-# z)}a@fR)&2VXU8}+*vd-QBjbva^7Uze?*yELrz8<&M82NHyOM;F3_?V?SL(7y zh^EKN`CZ2AyVx(u$|UjP7wm#OC)!dBtyCgLnspYjy$~f$5?AeI=hp9vV-+7PK}ACS zNZ>)nTRb|WPotN36qX5LBS;9jipx{3z-AS0S2?%2nAp59eX^>`?n-W~iDhkfVd zWBX>O1oNb=CUkmXH9!}-Q+nqE-yi!}^M*uNIKm_0u_y~JIr~W$7}T->qej{^VQgCT z`6ru+takmAl|zS3&;9J_VU)~|Gli})uCqJ{kOneT=|GvO6(P65c~bj$WTG!O=4X8( zZ!?4x;|3g@n0ZcAf}yJ)G00vEt&*SxyPdZ$iP#T_KM!G-eL!S?gT?%0*kfVM>P?2) zAT(%XJj&tG{|Q3Ggl}Mw2X^ZzzZPP{H&`0JB$B>mJzCQ}TN-c~&>+zce^Kp{xtUhy z6iF;eFz}`o*dQ#1S-x*s$L7#uLSvlMO(jpDITUC##EuCPC4%)08^L6P`mT-Xx(dTA ztU++0=`;0>bUj7-u%};>aaM^|-?4`5K@-|4E&&u=SS7bO@GPSW`CJglfdX!>oZg|1jfhy6Lsmj4;)NHc^C@ z?5CGy9vj5g!|XKnoe8ZL$=|bL_PGho6&=23&Dh5#v`mcto}H#uo6wAHVjco3wmzLh ztd_{k;}26CP%XhAjb8mUH6afM4)s(Dslux3VHh;>@Shco`(%t-`+riI&e0Qbr(s-C zz5FN)Ekx6kpfm<2?U9V}cwYsr?GuZ_diCQebX`1}h6t(`7JYpU%8<4qiluav*t|xX zwGaRuSx6CKmlY}-UZidHv0a&Xas`AL!$pqSv4X;7fF)vCf!EMA8gWVK0_bqJMWbx_RlK>0+~ z$WK^}e=2>b8q@xZYD_8%qG5@sS`GW3Q-m5kNs43*M$8)A9&)7Vs+jt`DB%n5lCpn|+Xos?`VobBa!B6oVm_ z7p3d+Gz2^p4>Y2zf;bldzck{3SvRU-ID7PO*6qZCU=mm=0AuGj7Leavul}Z;86d6j zYI^W$+;^P1P_kCK+oX&Kf17T>P)iD^(u5|`EtY69*jWlLaljv;5NJcY#iL&0h{-S! z2kA9Y2{lEMh02KX4=Hjg=hp#&-$J5+9biXFSJ}W<@5+MJWE*Wu#e)m6Im9v9L`?9< z)N$i=K8ZN46Ms@!1?;cGB9vtRGz|nmof9YS=ixO_Q7Tv<`b;YB)J*`uun=VD6s6`z zv9ZDm4Ih{joP=vsAV2Z@OiUT{&>73S@*+Q`1i8q^Dhr^dS7Z{1j2TtCtQ-@MUgeQB zV9qEObc*p{THdbmWa@Ouvx{up<)=zb_ssCcg?h=MX$suW90nmF4TcEhHpmIgu)z!hb8WCyF2OlAoI_x?4Q3OVWrJDy zQB}11lSL~sBU*mMpC1Y2M}qn2|B-t6k@WmXI6sn>9|`40czz@!Ka!gt$;ppo=SPr` z)TjLQ|GbmO+1^5mb3!@lq{d5H?m)#`vQE0SBbhYllBNFb2rlE(_u(Dl9G_Od;;+U< zF^!A+DzPDVwml7tC)T{@_M~C)>i${-h37Qji62YV=g}$L3hhxjRC}<{0D7d-Jy^mO@Lanl%axc$(EIyguFuioX#{=! z2p-!y{AdK-^)3Wd4!=_!7!}m1(D(meb^Y_LjO*(9e?4GNVPO3AkT8eMsSb>jz*+Iv z0|TZA?14ew@qt0#xME9ovN0_&YnIaQek_YFsLTCI@_0S->S(S$^*FyA{SMo&f+iV? zn5|dZo^ih{{f|d$Bh1&29p_hH|JQMT1^UtB{0jA-Yx`A18|X)BdqyMr56AgMb*TBT zRl1_Y1WSE{%!Cqyf$a>-B0zlhEWR330r-EeYan2xRz%#h5C&=_+Z74JG~yn67^IPW zR~*c75%-|Q_>2^|;$U<}3SBYlEm0Z}!M=Tu;tKAG5Z znTVyTZtnKua}SJRM1t1bL*H`ohq;Ho>lk9zf*Z>FsKa3u7^%SJ67;y|O)C}gu_t>R znOc-<#8j(WT9F{*nHUMuxRdRujm4q{>+&ELs`yz=5v0{B_!}l{Syg`e@Dm~`M5$bD zBJ1)Byc;ti&6-YO)FtA#ibUV4HJ#EoBd%dBX3e!NNR)dBN0H1DJ>xD>6Bkl5EE9J@Oc&ni|< zRYFLXB|g_9N@|>dbpSGTMRp|9kHL}oR@_OL+sSVn#8fh%nStfGM?Y$1w$*Rpx6oOL z?EF_t1jyea-%a?gcN%hWe=j}$JjYuF$9}!ZEP8!-MD>8G8{V8dIv0z99 zX%9o1F)4Pl{>Tj981&F?mZN(i-jC%We;@*{AjDv&0U&_x7wB)4Z7Llck`WXyQcrpE zh&wNgcJNTH40$do{E=TAXK1*%2EQCwDJB6qZA$3?h7QMYi009K_)*q$+83+M`0M6)84oMy;C+UAm1R9t&2G3OFCoZNV_Xx_|43_Xv5&Us4fVKo= zSU}lWytCh%1n(^#^2gE7Y>I?eDpdbimA?e}J@tgS(B_Y=F0Qu82+Jfm6$*W7C<3Y- zw9bGIW>Oemq|m*7cue=vvmQw<9<0;dG&Dj~Ny2ghC5&Gskar-$1xKkYFWHGk-30=>Z0&PIVw;PpoLHZT>>Kr?LqL$;LH(NM*KW;E=!H&H zWYP*6Oz0R0<;NxGl$^_2qzE{rrB;Hdr<_DFrT6lTShq9lFWhV*70Ftn!V2GtwVPxFA$Mex1J`p&_3mGzB*71h^U z0M20b)z&vEia1R%?4_5Al>x0AjtyZPvzl(-!GNlE={@jJ^v`6mUr6(VL<%@RBGO z>L}2+frj$m3g$+dD9=7(7kszfN9L#5#eEpY`I(DI-QTo6Pj zr;1z>r1KhtQ9s9VI))H60rj246B6nx7-6Qg49FG)&7LjunHj8bp`Pl_>1eowyK^F@VU;-O%!$}UqQtAr zoXm`t#8E+a7S&Tly!K9x>LpHGv*Nhs{wHM3lBlHW4OGDNIIbCPTqj4?^aNRYjj8m> zgDxU(Q2_Z?zoQ-Xqng!iD1xki{gBg(DoU?8&S&d!KAVp7*>IfCYSYK;uxsPNW{1r{ z^Ho^whnHv|*i`C{S;*Obt8u-acrlT+ERG>wIGlnzN@KS149!toTsy;67)NCsW>&X7 z!jQ7!RL9R@W>W(W??%1d4Q_FRRc>&Z1aSe$8uLd~lP)M=Qth#Hay|Tr>Y(X>jptAT z&k4H`rUJ)MIp9RJ%SKdl5{O)Qb~*7>Q|fqoft$I&3hx3J?1iQzXKZLna)Qv5B)bw? zmEK*Q3gbJP;;5uUl-ln9&Ac@>UU`r6RPfd~@otUdHGASF8|{`8kXzyC_HIVK$%)tb zBn<<4wT*Xe0&i)88@l)|Y!Nz|c(oJlvXqK=eJ)QR3MLT!#YD2qiD<67+%s(Ypfc<) zn+Y{tYl52L#EV;}R(nI)*k2+#4o{^M&*5aNz0G#nmmEi1Az$d3?VU2wo=$AVS#)lN z*FKI4+?VX=N88#aqroKaWV*yNRKvxLX9lR+k?S~I4ND9C4Fe?@<=fT~w6ZTW23;?Z~GH($}G zL*XCYo~3)5q)BL&PrrYI7@Mgz$0`xa9uFmh)STXbr0_Nt6u-QQgmmXqsvyFZPxGzk zy9%~=xX%(nr8mN=jwb08{d(Nppc^f~5RiKa+_=!MA6KOEwzRN?JgpM{Zo~;G7QYc} zvnt3J`eJFZ44VcjZ4=k6&8B~|e)pZGSa-2}btql>gV5&uvT=xQNS8ftCpe(QT~Lv2MWnK-P$ z{!{ic;cKLgLDFj*Y0&B@o@u1zDSgG3M%tzP9xqJ*C7$Wzs(Al&Mq_OdiZP?H))Hmg z&{&&*gr!Y1QYtX8iFOyDZB4WV5$wYymDoyARmy!hNepC7lKF>+n`$Ev`RAsnmKH`< zGi|v7@RieKA-Xo#T558y4kU*~D5hnLhnj0$5#y8Q+Eg=QTk$}#Mp`-c6w6vvW7?H~ zu8nD(sE3)AWX&An#h7M*;0YyKDZOj4RGXS+pePR|8CUUO1@q++&9A@~=i4oydfp3V z<=a|o1;H!m4q$KUl)QLO8|@5W>exnWhTKNB(MSvZyf)gI@cg6=D2a(b+GzB|xK&$( z;jLg>3C(Yd+I>XqZmS8zoOHV8(Ddi0{)InOPq4hO_H@ll_uq|nS}Cbe#m*n1lZemU zFOtIT-`Z)?oUab4P7iayzNZ zWQ6sl9vJv7#3wzp9{|1G6T`7Y9O$Wig&X4^o}+bFMv0tWS{vo4=-UfDf0VeYm(~K% zoL<^R$p8CZ$N~>XdTTG3P^S34H{#*NO&@Ioyx#63BmCM&Hgl}6wui#{5t&A;p9UMk zaZt=SS396gFmC9N?2vNB0F9n-R}awYgTQYFXoZ2_ys1h0QrwIK|H>MOc7UGQf!bh1 zzHgw`gq{?EORn{icn}}^Rn z0(#XTmh4W-Xb~pcrV4~25D1Xq*Auu`!3A2q3Q`7|+#vGRH{n}~3^t0`P_6#J=3vJ% z0f`al6H*ZRtbQR~{~Eu!+tT$P;5H;N2)=*DcOwk-W)y>;rvC;QrkyZ#FT<~~-ozL_ zRNFRyDhl<2sxmc`)AU84hvbZ6$V#m-YW?PwT3!KhG7{O@T3sks95S9+sqH>b8TQ;v z|LIVLWDGbKn381lO!42@Qt4%EKHWdJ1>8}i{D+t_%ouo$8Ee{g{;jRyf5~J1K@|RU zwZCgX=_7vJ>E8fn^)7OZYd-T|?}NMhbN|(Fr}f$IH~Q=kd{U2ebA#R>WTT)Z&YmRz zDGSIi`!$e*PB-+|KoxS$`&S@N+tsa*+e;-uZwcJ0i-JUz0998S>7#=0!=8z;_ln?I z6e%KtFUR2Sc|ABHkklvW6-sq5OI-ARa2Y84^Zg)ExS={YpD4WWW79pdBly{J)RrOt=Sf7pFN%i_ha0D5h^kLgZ$qNa+fs>4fhufc zteBK`ZjwX$%FM*(j|WJwV4qARaY*FnaND#Z7stCBGJ-#%Xs@ z9pSxy5X%5$X4VmGr^tH4Qp<{Czb1y$Ti6rd~MpHWW+Co|k~gJ+qxCUnY)&g!1na0P$AoT2A3Lo)MAL8Y z^3X*}XYn{eXB%&phgNx&&c=jmLdD7OUOYZjpq%~WOXEYSDE`Y8p|9b&qB7JlayH#p zn2yyDPWAW_Z!nCx)AYeYhHTFsstmOU#zs>@1HDR(G3n0GCteu9?RR%52RN?0J5)4y z%DtvyHnqg_s~1O)IP{tFko3}%ac#N8b5!~UbSt7Bm^dEy$RKpBv{L%@%0z+yyv5GD zLk}sRi)*Ka^4pwEIDQ9jVR2eX6Ex`kLJ4w`EVE!vZL&8^3-$QFMc8>_<@8YRyt8pM z+Jp;e;xF+WlS?F7kv{&pNV_MLACuIf%cw*xc>1GC5L!lw+U#1?`pU#R_k>!ByYC5Q zMF_15w81npa#pR#V#7V5TQcIYA~@!x#*3D7A^O}K$}8cM1?*zjPefzf(qh$}D+MW?;0z8bo@WGP@^?R9a% zgP~DawIN>PB%1dzPe2W9M{YB#9MWG}=`sSkLp}x{cMtsjBeqJ8xo^e$a+|}Mk5C_FNsQ-#k4-AAkD?-CC z5Pn)A2SV1$P-mJc1H_B*$A{ZkCPn^;W>GYLWvC$*&2v_UXvMK}We6$`jKZfvlhgXd zdnBWNj1HRUmUN8+$J|x~vk%iHX$d zfyduWk2&^8f!_>gBr}gRN_>aYpFF12k+{+s$xO_}hcASBdMoFNmS2Q2jnWrGlaiI2 zjVG%@6IHnNH-+YUVafTqcS1Xvw{pJm&_|)y5aG%5c7zm3I$cf;V1JJ%5U9l>4LdTc zW~NHIi+D#*rGiK(zU7nF5!As4afu+RMJpt=BMRb*i+c`tT5%#LMEqv!Cs$StWvJ7kG*(yF%#~#BnFf641S6o3Im7DOEW-BGyq< zcC}iD6khAI{BL{OtU*C<+ud(2}j%2i0UG%|PA?KTB-Q;;j)+&E`Ad?9Jxa zD;IUIWnAjvh60JCHgeyr-8m3 zn)91e;R&)Kr3j5f$g$?UDQd4#F>l)LEFFj26ZMJ-<49bE-6bakSgxN10T89Y1qU)J zsn3g76n%&(#ppZ3#fD-&&2*yTiWr}Sb34b*c^wf0Wz0uW+ zyYef&a@|Zz=C;&<+EQUk2_&JDln$-#&a)ADQ+Ga03D5G$LiqG4M?u(Fez(!SC!bEs z+NxfB%4sAdfuw8zuJXbe0tucuOX0SHHA@Yjz)AhlZxcA}S@S0H{>lQQd?LRc_VOS@ zqqO$s`RGkN=I@8aMi9zkct4}X&3sQXCbhImJ{((6nKz` zmr!j%gAHj{1$d!VTh{(*R6Fk|>1}U`ZheRcd?2dtW|rrZ_4>pd9;JGn!`me_uilvs zb_1!OzI7)af6BcaK4?=H!1LvZ2haa}o`#;le9>$kClk@v%;N=3ammQ5N7{L3c;Qwd z_EaxcxRqYgpNbU|-7x?F0oXj=0hxb2j~BwG7Kt|7d5_4u49CZ9I-j>f+@bTqYD&aC z^EugC`f@&w;7bHsz|ZV#ZX&9&eZ~=^f~}|7#@K3^ZEWG+D)GbaW`Y&~C1T0~emXE3 z3ncz87of)$i(v~fP@rjPq3jkQ<-8cSizrGps2y<`xN!nnE3ebd{@Bi zs<3_&Nfraw@odrL8J;FS{|ARQN~8VLJVY3JuIB5N*t%yxBzz}7%N6pyX$@Zo2bA0j z=kIHw`X?qTp5t%9>A8+ig|lTHpN(>jF!=EN-5B@$OIcqtAw!}Qe|h5R;d{hxgMUQp zP1Ge01~gfx*nQ)H7I78`Mok+V#z*V7&^y+WE4!$aF$c!>Q z@pmp1@Ibx?`%v<}jg_0VRTttF{(4*&ZexAMMvs)tlvnX<6TVMdz6YxKc%{F%_*H%> z6izm#{`tKX^yaH*zmek58$2qqU*oC8q~R7sS@|cR>6il(kko!F`oD%r19p90=h-Qc zvXeI8FJI%2n_i@|cIE4w6i}vb|9!l&o*&Vk(&QD`VTzc=I!B3 zc$nGCcw-OT%zT*`fz z*>H=*-_Bd6FL{+3t86Tn-cX-ak7l37`bSosF4>Gx&_=wondeuu!7dPyE3pXRaH+ZJ zIK_(-5NOk)$J8>65ZYk~NJ9XTK`R%U*2pFgQP9kLYvL#j5UfW~Kcw}BEU4lNovw^> zhodKXz)<4R=K^#lmnT<=V0rYE0GGItLw~e|OKjT0TQvm*mSoquJ|uI&JWYgECn87Q z<*ho_9l4Pi`LG>15NTn0RiY+L!o_{>@`f%`h2r4%JgpflqW|KV(6TLn&E0Hb?s*HpqLpX_Ur~{9wh!{I+=TTDe~>Hhc|$U z5ZZ}rxPgiHe>g(yCnlMpPa+g0e`^o#9mU`R)(jfZa6zUuh4|xBh|#(RV;DGdz5qv$ zi3h*n3sCG9dpYDZF_F9F5dYZE%ajqucl)u9Mb%t&0GHxo;@$&1 zZ-{Ijx5mjjyp4ZjXf^0#~noN3?6Hh$t;-qA~D1gRS1go^JDgX6_S+wW!i^SlV@Fu450$|0Jxx@q!)uY!ri5kj9O%8@{L=dZl~$x@}okpLl%k`hS5|Khh-*i`*>M?Mjf zR2Iy|+^UCqN<#*%&c)*CBvA&4uK3`P^GUqUqrdT1CtJFZqjZoWCQA3t4)|6_yerIRQUen#mZt)`X`@EySN1Fd*t>+eI!N|^<8i+@xh-wLun=U z|H<3Co8rXDY(51Z13UB7o+%Kjx0-!P_*~Gvy>=%97)l z{o*?o?t%2}wEsMPL_Dd5o3ymMXgwOZFc)KylW01chV3~*C}G+BVSl(FW~U{F4xwWm z?S5Rs>-^!||02^IvCkjw;2z-%>de_S)uJw~sn)E&iv!_2ce9-sNu0Y3Yy|_Z^&mEc zqJFQg^g!#lD&WKz>;(+SP@P@Z7Yw&_mu2Az%W@)aCB_HCooq_bi0{DiN!_hTRdOPR zB@PF}ecdfu_eegjMQ=+Dk1Mfj!nF$fH=U?7Ev%y#k53D?u5%RlYK;Q!9tFm>v~XLc z)Xuv0wD)gvM;Fd%WmlYj>Zx7emK6>+#FW=D9L~qOKPj>9Pm=5Y ztHR-D!Cdp|g~|57x%I*&iDho8bD4{V7N2K@?Pady6Vi$+&MdI@pOOwG9=yHxaE}ug z^dxZP6#Q4o&+p-CBgT`XHmgWZV6KRIQBlbbwueh(Sg4t-o{CeD5zajxmuzQZp)Oqh ze}n7RjBuM)C#K8qq>CP0(YhGZUrmPOe?Mh}%iL>(2kUHk8gk(K=FSYQ1CfAT99)ot zbcxtW54@fJb27A#B{C(JdSaAv4$n2iY}nN?aj`Mau?v(9=;-5lIpOZ^o^|*Cb$V)(<9E~3LS*HJ zv)x2Z`=20+T2T%(8ojc%%;i2f0bL-qcgnJk#H!q|hLz{K+;FWW{`6C(Ma1&LO-I=c zMy-C&DI>x74Fr-Lo#(iYS-WFn$B)xUn*oTLyl@LQKl3?xquj8^YlL_ZrH?ZcFcxS; zNZ=ZhA8z92XN0TnJwNeAN)LWUqaT%8l^^coZr~H|dH#Z*;i8pYsqxyd*|V!SxMx$l zf&Grs%&LE?s}ZXp(SmSE>tcE|kf4N`_n|tQ*If@~k_+O1!sdeBT38-92`s41uL{Cv z<;)@V$;940`eoyA?kJCqJ$#PnR2UwiJYg&;40o&$&GQ=N`hp*Gx;Il2onl|Z)Fn;y$OUEz6nDj*Eu|nl^amyQ-4NE#9N@weL zHrz7&bo{#D*A>5R_;t5_J;dfWGV^o$0_-P$`m8zW0qtCT_s4I5@yi>TX-s+5NO>$7pJ&rS{6ydFnYV<`0U{fli5RgRgA95Y+CZ$7DNqt^l9&=2Qq_H$MTOR|I#xVZD0v7ymSmz89W2{?fmLo9QP{`9}-Trw4x# zw(xy3>lLEM=b0tY(me6=%(Ikb#xtL1u23?!f93NGLEQ83J0Cx4ff{k$-puS=-`74* zKD;i#??U{h1LpW`7mE>`*VYOi>Ig1_pYLl?y*IO{DPbB2n3DaD-{sc#a=4@Mqkmhz z_KE1e%-rP50Sp)I_hmNKDE@Z*CW@=}W%iGrg)Vv#LPy|t34WL2HxfUJb`HWui*5Td zTUIo~=k@qeH2S_3KZ-`*)A1W^eb2)8aO-;sz9(4UtMEP1`d*LkG1m7+e3x6_)%d>J z`rd`_Ypm}B2YnTuD=pv%0!CTi9#jGSn+RH|4CEg#!!Uebfgh#23P1XH3F1>cBGws? zh#?}z;z#8kjd+Cf+*YNRT{iN@8;6e&zWtdUZo$)_fRYSd@Z^?w^eu1$#Yof~zt6H$ zJo-Kg0R#LIZoJE`|I|#ik=#KrHVrq8QVquM08)8;9{mUfDjxmLok-|6`}!t)s~x`a Jc_M}9{~zeiW`qC$ delta 67963 zcmb@v2YggT*FU~<=ia-UY!YrrLOSejC?TB|2>sF#kSfJOk!nB%MMXdo1O=qK$f(Ez zC<@XH^&%i$Km~yZ6r>r7hzJOlNAOYkeb3z8kO0r~zVH9@e|)lY&zU}R=A1KU&J4%C z>|q_~5$5Rk?32vlaIn9W%-Lb_iM*hofEDy*^rOg66_^4?U#(zv)5WuIydN@INoW1o z;|`~P0ZXo;;(LgL;r9uLj^BKTg5RMI7k-C1H2gm4(EVpwN;st)=?KN|a}LcPsl*mg z`q46t>7dwVXhuKQT;^>dF)d|jtz??kGH)A+Z!3Qvkob18_VzMY2l@S=gQJ{|4mW-~ z$?wkcyPv`emBK=WU*?xM4=YerT~ifBXBua^rt1|#UCga1T<5yWrG|wvN2rblgm7Ka zb*+MfDGmo$n3Ex2cr~VkyBOD1rm6|LCkELf)lfwbt?qD#yWOakITVdb=PsQ^>!HaC z*x4O2|0)nHJST~%ls=ong6N0qE1xDtG_BgE1&Zl%5|l0 zt-5QJ-}t}yul#5J3%|iXV>kIN{yV?KrmBDOLiJDnZ(gvMf690BU3@2B$QSTsd?{bT zKjhc>Py8C+%|>74S3sxV^NajDeu1Co=lEIvEkDgq@ss=n|Arsu$N1O$C_lpg$q(~G z{2>35AK?4>7yL86ihsc0r$T1&nS2JHPM^g}u`-oU;gk5QeDpLvx_lvjnZLqEkLMHk zL>_u;b&E^>?OKZpMH}N%6^Bo48_qlqkCN|oc(}RFpP>8V_HB&IZ=K*#Jv>zj^RZTH zQ*+_QICG)Do4zag(5AS2pNgzNBMHk@93B?V%*9Bt*k9ZEJX`8t?ramcQI=16@#W!2 zX0AYz75>LuarIG?jBXvy&85IPC>kjFQO@nr0`Zg`XgfP4T#D?SDp3P{&en*udy(Mw zC?54rJNLWdS&{#uE6Ziado=${J;mQ7WZ?hM{2d`<+`*PHRMtAQK}D*}>re`43~0m@ zlX=)k9~;q<#>KxdbiI$p#LJYX^dAj`99Se%M*5sG*<$|-?)5dcqXYOutXYunqdt2a z;STfC<~T3sO=+|pK8NYb_j1C!&F%ij!ZvDeeiLPk_a}t+$jI_>s?*_hdbDuv(e1(4 zO;5ggb+h8pjhbPqJB+zK%*gi74^Lq={X4>wS(^Xb@Dy20i?z;(sXQzjBh1XE9Z}XP z|34z@VywQ7Y|aY(3FUi5{{eD9yiU`G2GO9d@J}jVI|Z{RE0pu8$i~Zb_IOdcrT#PJ zCx+5|sWhKU{llW#-XSKPh{<_pk`6@eVu$>*qhmFjbXG?14GmOI?H?DDsb?m597dXd zbxa;x=>IV$ukInt1&tD;QF16vJuFpm`9P?qBnciU9rQEKqr5Nzt-x@YMgB)BG-ONt zZ&r9Ur=$eR=9=rnEos7b+*_)C4LG!v^FXM?Dmj9Ht`{}LXGB^6CrKS6S zOETKs+)OEvsBjB?(8x^O64$JtE>ixvIj&jZ!b1E{B@jtHVP;sqIedh9eA!pav}dWf zXe5k{|3IZ$ z?3AB*8r7zf8V}++u06mZ;SsKPt(MEi#7|q3KfIm zJ&9<*51z~hhfomyP>{zNT>s`#iJ-Z|m+XlLunWa zOlF`1YTHr`_b6VK*tZiL6#e|mm&=O%wNqv{NB2ECwN(}=sodiT44aNtGt7k=#@!^g zN>~-X>`YiRU_h?Q-S04^dD!Hj@&pb@m}!CQmUtb3Iu|1)`>MM+f&7(_6xY0kaT5#-kRI679BA~kBsH+$lbxfW7c9CEJ?8>J>xOZl+ z__I>;|2NG$lzRW>IY#<|&3mo-*&rivcyugE$w=^d7bB^Og|aQJA~@NZw0JPLn`yiL zcP&WphiANuY_l?AonZIiQ7-?i>ec))Ew6Th)Fj>WEm*aoQ@a@1GW0e5;7;4FXVoS4vTALO#3f&=(n zHIt(rrOyfw;>0vg4Th}xV{N^f%N3M#q4r1kol|EEemmz5WPR6KxtR+4*#BL1MGW`*) zPO?eNc2g<~L)MlEDol^>XfQ?=I$peowpgiq^ z#T2%m40K3`It=Y=@?aO#^!kHm{a;-%UFBrnT;Ad=YL~VE0*OyH7XrB zT`#8LyVi^J-RH$TmL?8aYC-}t9j3!bhejvoO_BwER3p=W;Ke4;Wx_|NL#`xY3R2i=e{x}b!Kp7uW}2T@1mCNQ@!7<{7(l%acRX}SP&U{hvgG+dipF?+ zwoY^(RTwLfqevne_?8kt9Tcjik!k?xDvfjnkYPSna3_CQ0Be*^Y6OtcrIFDAWL#-v zTmYF=8krP8dP*Zb0c2$$3rd<_Ie<+qoisIo%qWe_2q1GxBXa`C+NF`T1IT)%k@W(| zhJ+-IT8>^rXro)lKUMw|Bh?qIN*jtFKGZnnZ~XFmX&DI~hRGwL3Qe+5F`9vL3diL` zle^8@L3Cp1JsMa_GrxPnF7}xJ;DmFm-r6-27leaoyS#o0>N*Gkin5$B?f1&7E>7sqV6)MGg2*{Qy&ZL+c}f55{A5S7P%joTM?xD z#N2ciRR=Vq7#ZFO{06@LOGFn${~?^5{oq&TZ36Jgys0d}OAQj!M6@1N@>1|%;-v%T z*Fni|&##2ko8~{nGSWN|Mw%zQWjII8T-~heo-c>`e;!cs@k{cIbQIs;>Pj`l~sjO zRoG(W1edXdDwlz<#9Kn&#Fm2gH^mNWl~T?PjV9PATD)7L3`Z#xwbMrZrZHCmwa$Uo znQFd&%lp}A%9ZzjV=TjeZpkOCpMT-fiL9TPza30r$%hL|#E?C7*lq;GkQ}=H%LcO= z{x6n!(W|S=hR2>&AfQz2YC$wcK7L&J9&UW^AGy3gQXF62E9!d^40px0SW%6g^$%N- zQf=O5n*+^(db-)}gu^`QFtU6MLxe$=P=}I)rSECm3i)rCO8IRjFJ)cuUu6rtR~uq&8W>NkFRQ&b?>-BiJWyL%6Qu0 zJ^=fc+pqQEF@&eGYOCAT{FAxe6JV|?NWs1bd%MaGrKx%R3v4(t91i1o(&cH( zkpvxvCYc#4{EJt6lL-fs9ZITA0m(1a+lGi3DVF=st$qwEz3G}32{c1kMOZ+bbaZO2 z1DwWfNV%G%A)Arz-?qjCDY3Q53}Sq3tB6^LqRc~wqp+a~%Qp)B&#q0c43K6BC>Kx) zMGrNV=e(Lid`%3IjnH)-jCl=LonyEOn;W_cdcS$dk#DT@Z`#)$4RL<9LjJaY{qx@V==1q*mbJF>7tstVeBS=b zEZg6Ee{cMLvOg&iEY!T|Km$U+@Ju;%Ay{ZYW%z&HZ~3x)*uxA*TXe7H$^%bg&B)7o#>BGxAS`< zsI%TM*rd?Adek}P>uMObw6Eu&vTa|Fz;BIX%kbOh`&hr{RFq#o-b3Qr`L%{??nH=*N=g(HKAF)Fj_edZt|~C-KQyQ5ZZj2 zvIn83&fI~hIYIovHr#92v_O+NBBK>evSO@=s$en zGfMN_S^W0-eu)3Oi!aJAS_G{xQI~2QtLV?U+}_{xhc+cp4gc{U@=BmlY`Oo#%T%}b z$7Ma!JX)$U1bhg=FgqA-2gI^~B$kDMSQY}PEfhdcp`a;(O89f)59%Bi4J0%E%7H(n zT*(DFKYYa-vK;g;bNVM<8Hs9dU71>2W*_dw%%NIus0^tU5VIce6hhxqzklOZPfVJ} zgJ>`Qs^Bjfe?C-p_38-}yzg3VaI3$rWr9%Cf4an2U4QhAH0&Ij+~~u=mlpio5~;rX z*@slFUur-Jum4LrFoS-n0)92^moC76`%A_9s^t}b^|4ic^Vgm1qF?>3Jxc5R8x#e9 z{%?QBT|@_4hU3Rb3sc--nwv-x+Oog!U&*YF{~!Nqg5uBoE1UK3NBkZ)Xgq`M+c2>O z;Tcc_3fhxIma+x8N)!kMlCCl=rAF6M%0h98vQVN@+|eJ(L)$=6;M`EU(4XJy#tB$@ z-4`?#20=(H+wi%-_h9`z`Fph{**-SQy#NDyZj$oWt~>r}ez5WK5drco5^IngtJF+G)6(m<(2R(%qzFH0s$= z)R-nTZb(XK?_&OtNgsX=h?~d2UnjlI_VYTIB%MP7KarJ6XC&tHGcYiic~k z78te#HCR@8sOnHnT)t4Sd^b%&ruA(Nc8NtmW=DF;dn%acmNTQB^;IplRbxY}IeF|F zXG6q}wk+OyrxA-(fm~&>NkCe;E!k@XBa#wXMIBfgV1f9_;#xQ6wDP;Kn+jt3Kg8Z; z*jDR3*gUq#dbbCTG|T9HVtr4RS%M+bwXXGKT^05Z(d-d6DK0ZXiU62U6i>zv6I{pNEl_Bgi zlwCt89(6dqmQ8)7GS_?%|Wuzc{A`eI`NYs~74 z-wRkf1kDTCc(&B~w2)nMvXf%nWLAxxv`$TCBen3=a;1P|q2RAx^4JW<%g_2IDnAW& z@on&cN!|EW|H;3gQxHX66vfftC8*COf zkz&WY44XVr{4U$g4vP2RV>N+1{vOK&QeVs(0cx?B{eWr6dY@H`B}c2kbkfNnL_E(yT|8;Mf(VpIpjvD}m&7N~zL8ic0&k zKnXMaRvp)goreAsW3 za*G*sbs^lv~eQ2XIS+xMzVwuFdONB2pY%&$hN!iZb+0d3s}3OmR!XhZ zp#9+-LBlKnwUQ-JdrKoVbDx8vR)}3Y8O~M3#huK{>Iv5_R-a{w=DQ$AGR5#+pz|!T zWEV>Xbco{8gc}>NfN@VHc1*h-TNrRqS@Yct20$@kHw#(-jXN)!e%$`o67V{OzE zS9Y^zNSpmB^GNfejk6IguZD#m{` zJqTqFYo5D8jv7V*Gk5zoA7SP^WyTG|p*F^0gd2*p;&mw4ZlOOgbUP{FMm;fR537R4 zF51H?gkhXXWP$k^O~kG}%oi?49(z9&3e?YgSWb<4a<}N_5N+lV2w%AnZ9#^F&^~bR zd)tkt zj*x1PP7vcL8Kfc?wG*2>Icn(FIu~^;h%j=MjV_OI2N4OAh|3dMf)LI#tXKJoFg-#2 zgP_dEX0Z@kaqF2gY!$-@(&(X5PbB`L(A65ntTN9t{yNXv5 zpIv4%;_HB9X>pJ_UV58IRb4UCtl>X0mr@==#X$xi)eSkaXbm%-7O!1pZP36YSJ{m! zxkRG(l`vDu4U zF5&}~*(G@~zrj+W*l59Wy--G|*e_LO8$+=(bmc@yo2gO-HhI4B8VgH-XvSFL3rdUq z1z8Qtr2@7tI9W9~^m}YO3sH?37ibnXKZe0Sdyf*OWmB z#k13torBhixcqDe?I6?f4EYnlf$I)t1Yz{jnBjzR1~K{hIQxgRQ_Z44CavTPJU@VQ z;%nY?r3zakc1%~I)7LJEvlaK+;Bu&U1XN3NO%PeV6msp{8A^0?Nfh?O)JmjYD^h1D z{R`Hh29RfcN2;BPTIXTUAo}haYC?*M1LddIcjVd;&juI5f4A*An?;Sm_%T_`GIV*_#w>u`;X;n_+c8xND2jS|LSi+kYrQpoA1L zaGO&0)JnX*O<8NakEM&vwF5#(fsp*bdT6`yEia7@m*^I|l`&41Wo`dLd5^JdYrp}e z20}6SOQmWIG^?;?li-5yq*vMkDB1arg@>P`;$ zMnxkT4C8~nq}h6%BrRnTFe1x{l?rLth%t{iyeUYO7?5z~5r)|YIs{~(LjVJv*lIbYeW3*QbkWPj6Mi{9vOQn!BIPh)QKX8tKSg8e< z*gj;eLb1}Ma+f(p#&U`!wXX>ZQuCqUy4}KkLUDH=K?b1Gl~Ei1LoJXK|D_geQA=tO z!%irPu6>{5%mNc7W}Z+QYgNr^#wPL46Ur*~ml%Ii!8wFDep0CfVSV$YG6X@tQ%Z6a zrWMV@ZU&XnCKU!jF&h!Aj`--5(l8|x3K;qc*-+m>JEo>X&1~bL0HXqsWjrJzPAipN zgKSy%5fmyVl?@X8Pb=-CpfIQzj&`<=j44=@ZvM>cA1j7T6hP8Sw9T4m%a*gU*5hXt()RUpiYNS}JSKFSGm4mTQq($!&ZLP) z&nfAZXiIHo(BTq!Gl0A?kM`jbzERi*=adInS8?N-)*t?Eb zi)oKp|2!DkO)=)Yg41^KkMj_dsygt*4xS%}GV0wJzJ4nfAMVpJ@eH%sbML;9P zd*3Su*(vetB}l7gR_G7P2)MS0v6rE)OcD)$R7|!&jQdgP#aDj?r;;__9cOV}pFutaD{p~fQ7=98i)V_+B@_bN`xY1B2O^Ub_WuP4c8(3GsKPSN*eoEB;8OR zMeyPc<-wSb;gbqA9&S{m8i z*c&!4@v%fot*LSL3u{n;H zFG0leTEXwAIG!8)7A4;kf~W=Y!K5ukTmsJlzHI^@f^k`sz*__QBZ1#^5<8&N)LV%> zEe+O7Vi{PJkl5Hy!vD(v#GzF9R5}c_4>9p6IwbM4Ah_&gJ|<3{o6vR#3n&f&&SkJ~ z1{>d*%%6ey6?HtkAEd5;U0I8T4G5gn+^!DGH~%?{7!kf9+CHwr2ax_)u^RtWVJ}%1 zs`DfTdNj-6DX=?M$>8Y-I%l9)^~Ec8@G%AB#MKP$1JcNpNg8I#B*QcLI3Rz@^ya0g;`BD{+VE`=f9GJscksR&zJtQ70V=F7UaP?q5qwaC zw`c7|c5hx4oGzgzuL0T6z9z5khM7;A$P}ZeD6GkcBKk^A9*4l}!#$!(Eo4j+EBo*? zav5+02N zDG04|9bPfKjD1p!t;2ENFHY2v^)`N7);s)hUQs-h%j+U$dM>wZx>9h%9EDTlV7=BC zx%^`~5O}2?Pmzs7qMoD|$e%#tw$+y?@%TL61ITakc-urN3vgBq zVIYmMB-B%FVIUgS=U$d>^{LM*FtP#TQU+=#8!&t*ODYT4faf&eGgJRdX)sUO27`S# zcoyv%qR;Kc^9}h0)bL0no};q#CDTk!MuO?hcqJ%7E1Pi=S)GRR1aY0d(?xu9{-Dv` zrerV}gEpn@#S6{(=#*_x-C+7gzu{z0d={xviQZwGBFZ;za}nKw*Qkg#qK_s1ff7nB zaeNW|TkyORty_w-r7d`7r7|;juS=2mwFU2t2DWO+4@KRZ_AODp6>sAqJ33BUedQ_W z<|F<>dI2~Md@@F2SZ2544N%H~R-CNi>P^6Cb!| z(N`3yeIZ}u%C{F^aM9<`qOWZ)`uTl>i@uKN+mA>7A6Nc{e*95XanH){1|$}Jyg2iC zfa3&Leh!h0UAe{k^DJ8VH3!^T`8l*UPyC5TAA@-I&3=1x9)MV7`Qu?oDEbxf5Ac2VW$v}A z7xG=iPZ047S`6F;8n!(XA#l>IUnk-^9(!ASIT@q*w)kr@uk%0ghE7v>gIf2lyb?0K zLz87sqQurId?XGJYrV$bQrHdaz%)KS6k0?_0r_1do)P?A*a2eRoq8Gf)m(Q$}nI|oz@`UcDs3qRtS;g)0tWRBL2 zk=BWics&OFJ!&;?;drU`FEI$scX=i46$_$Uy&sp?qU2V z&*xH$z0@d{9&7RDTDj(`t|R&rU#{bG5cFTqA4<5F;nu~y0&uBI;-BkzdMyx;!wpx( z`L?TKZ@P3~`$_n)8*WeT1qCL9n}It)A=$x<79wW@uiNBz#qHk9;IT~VEMl8K7r z@~95BkKj=q;pHVY82iCCFoHOJ12Qg%6z4Ycrg1gt)Kax?rKzNs(2Yygs441i;k7DC zk5{?ZeF#qXL`lYM*kMSxGME*nZo#sBU98#yme*bE-@>!1%;fLlY7=&HVBrV&U~2I+F6Aeq|u z2~*KprZKK5pcF^z5peYjcOU`w{g{1J_$I?~0~tAJV*~q!51M+Lc8FAMr&DkQ<0tHW z70N(H2V`)_3`pQb1zwaQGs52V0H_dEQ^Sox(yU~BByN9#y+fL)vz51tpKu5+qsBF4 zDRHyH^1uPUcxx-4%zhQVZ5*x&V(&IyoBb&M+{WXQ(@;JrD$L^`in86RgI5u7dbFKa zCVz4Vj1{!XGJF_+`pCgbfj_wzzMaR#&!hyqapX*kF_@xFzA;NI+72D2v)Hno$J?o( z=TfR6!Bp6<%o5k^R3STfVxlZ-8h9X5O=H1iI5t4KCOe=Cbrz2z9h)ge?cmE;u}Im; zC$fcN=}xSYr^Ml%ylVJr823HW$i&Seq3+^~;>j}XQOWM)lGbAnv%ibP)?Iv3yj3cC z1APag*NNV{`3Lc28TTlZgGqz9huhypBKcFESn$rvv8KGBJNf0-nivR&Aye{keb9^iju7fwt08?aiu6KPxY(9*lIN+lX zC;R|#r_@Vlr8)=CC%I81&hFurA@TLS9F~7EZ7+`duTK)I_VQ=kbi9Y%FCF}e^nKiN z-rWQBQsy12TJ3pbr5+9_s>nV<2G-8bF{rg%ei{hSZ1^3K~qT6nuOExc8V7XEz8 zI{i5>M+Xj9zu+c!+W`7p-*DY_np zZQ!sq|1h7)*kO@*1Ute;R)-^eCu5C-@fG$*jYalXvaF)7cw9uFEOI@8LC*U6D?W%) zHaZ4jCR4_W@yGabc3xy2hnQ<@4LQ!ABUAgCZ{%k4?{A=YHWrmmV3B8vh9~%b_O%E( z$uF|6#PyTBF*_=8TfMB~%Qo+f&q=0|9IhaG5BUo-_Ra74!C z_O2Z6U6NfX!|Hs7_fpFTm7239I~cL`b5{fL`#D~v-ZS8EF50dRphBYWT+xVDn|kCO zEEhSqmrPtNLu2&%BOv~%MqVo?tJ}+>m^MCsagv>54_EL6Q z7SI2{Gw(DFR;4gs@C^WSq1gPx-A$W!nU{IsL3n@UffpV~#S6Uf03xTS8x;F`sTlnu zU+oea_*xyWaNLn}if&i=d`}&0W>t(oIZmp^KaO@CL6?3u?bSTR<$yJktB&yGhDoK|ZPe!Tf

0?%u38l%~iL-7Z{!`9@jK{sR4+T^5PI!G?8Nbp1`*+qV4{ z*sDU}hPV&>(8VyQhqr#?GnAK^=Nbyy-CWIJo5c;JXIDg$s-|jl_C%Sg0NGY%Tf|d@xd4nJG0Lx7#12)h z#-@oMRP`a2Cz@y~os>PM;rI-G&YBui?jbM7#KK_&1W1QtyEL^54#((x4VvF|O-%>i zOVZUkuHm%hA^ooyHZ~ClZJv1Me?D zGeuF5n4FSe9r&=fK$szNovJrBP*%7J#T7Z1lVchR5KlQFcGIkxPWZP%v&;=q+p^lC zFhq?dM<2Oa*$rLaJcWH*H}PSJno2IHW$?aOqnq_zh`NjlnB`Vi7u=n~=oSVQpPMW4 zjNx>UgM&RRmMyPD;ZTlF`4B~2g#M16!OA@zx`IlkNKQR=(uqyBFUH;++6ZpUQav#^ z(;<@`I)ejMB&FVCM6B&$Y6`3s)`f8O1RbJpE2kE#y|DDbvYcLJ$+49N#)vsC3* z#pfgoCB_-ILq(GqHMZJvG`CeaERA%j!lVa2JlUOEhJ*P95VW&0OzWi>bufz=P9<`4 zBehe0eS$A>tAgrdJw#Hhngm@s4}mcQ*B(4cv<1%aBoD($%fMLmFE-ukAEzF1VjSvv z)NOH~s^9CW<3M=N=c$z{%1a$K#b{yC()Q^|!Y!36G@@zN+C23$1qVJaHB?hW>R?VB zo*49ERYUa_3R>DoUBoi22O6u_dAT$UdpPEZ+DJZnZJVhTQOl5KYF0#T#A$Q|HiB;3 zh{es+nu)dPlkoIT44ud078+R7j$AnY-)N?GV&1eclota#020zZ9G}4emTExa@fK=R z(CK?E)cPTTI)J^{LZ#ik(NbN4UTJI{}#*=VrqM}S}e($SWh@4 z*N^CqJjRkz?6dajW(?sg9WY@SvkvORY?VufXi4iBoe#wNs$OJ$r=vOm5bLCpJt3`=+6>T>oxrd%#habf?kM)BPAV?wi3dBYbk_HB zXLYRi2N<(T8Y3?|-BpWKsf$`kh3lbQ0q@B3s)agg@7P^^0;PQ1UEPh2`%c_Q*8xOncEXbQz-NJqiR<)H{&st zRKNC*sRMyr^O$;sJtAK1t!`roggl{u@DqfofxxZH*p?r_oSj;UG2EeMx~k>ULe)M&BKz zR=*F&vrZ3E-)8#vicIv<5H+546Jm(krBOTbAcnuE(-z2hnFj_4Jdp-^CR+kj8;~44 zT^)2(>h`3|V_u9B&VDe$Ri9AnMBby!inBdKqDA2osv3Xc>nL->)+nQjc^zMyw?@HC zg#D0FSuA`)tyo}e;O1mJv+(}5C?m$a@>!I*T7J#JmumhK-x21Fheot?uas`E9O=N(-iY0f~ktJjvH&axo0P( zPc<(hM21PbWQL^(kl}L#$nYZqWLSd>9pdqPwH7@qL7p={y17O775=)Q##aLp){Y4{ z|CZN{Qk9#yD=cw!OHdg|9C=PkOJk@?hmM=hs@Zh#M)%}lV^D%Oe51ieXrRS_vuYMy z0lqtd%T6FR4^^A6zpZ}{Rafim4Qu5y>Hq~{`RCLjIuq8IF=~Or=8Av6q|Rh>t*PTw zxHt&0;58MGe^}om2x0IIo1;!H#}-%{-&1=j2+Mz)PGy2_5###y-LUQh3nP2fHtmIv+gOE`1!5%>PU!0T#&9WmRf4W z|8Ps%!*D8Vf!z!e2^-ZZs9^C%wQ3}e_t9hwJ2*B>gT{N}zqD<9)RpW&%ye*&50gCDwh=wr1$mhG&M)d~vO+LFy`A;vv* zi%O0Sk8i;^yeAfKff^-jX^$hAEouc&#HB6jY6Ne8q7G%*mcCVmdwQB^v`wz}vD;K< z1k17}9za@*&%7_yQ+Ci;Y&fXSLsXYTYJCmi^sm$%l%(S^IoJn|skjtOP;D{pIF!sR zYxi-rF$olY5}Z6+^ggM6o{O7_(yB{(1Zb{M`p7wKuR8e1L0vZn+k@kFUr}J(B*(jK ztM@5z5|lCOv}!s739Rj>)qnE;M!PG{s*Ua!A0U3g&tbIEguPU(?&m=1>`iO#d9^3I z?;1qf*zeTS$#0Q12r^89w~g)cjTu6JXo`zORVyY#y5>n7>eJw4VqcmnNo!z$N)I$l;%ac9@u&;E*T^UrS)9$+ zf;G$vejvL^ZwO+M<8=q47F6q2wiDjeJ4skAF<;XvBG{s7-O#8=U8}+Bisrgj2gnz7 zEi0rJ(WLBQk*>9DZue+Hu#B0(j|K8$dW2#WXfL68E@O-@TIzD-oN0yuj3Pb@`;VyS z)Q+(+mf_O+kZLeIRJ#bUhg<7T;Hq$~F@me%S|%<9(-n+L5n7cPN!;%)z)sGlZX(}z z#rOyPoVB-F9j4t~=Ghx6jqs#-(b2_0KUOF(d@sto3* zX$eUsw?M0S&=W8Px=jl9E3cAfSJM)@m87V8CxyA-)soAjCE4yEtKrlmoJs?GzyOjm zfCUVxVBbtn9{6sYswKN&Q_OV0e~=J}Okg%%^v>3Fc;*JsF?xjjwvcBE zOF4Jr?vV)~N{!6r>NGL|yd0Upw>>gxY5zZu%(nZDObL=kMh@7292qlRc78$nU4sIA zjE)UGjRYdAVSpsc9uPt$Tes7-4lMWF*)pRNVg?a`Q3)+Uz!-q`fP~y2p_enYlq%-~ zdGVl#8T@v^<{bRSb!d>&=b2i=JCx(OLl@LLNjU)$Ym}uW)GZ;P`;b`h4zjOQ8AJti zk$DC(=aghlDU|{*Dp87H=4v=IU;%OyX0DcE{X0wRsid6y!5#>5aI)7)01+4njEs1` zhL#?GK7hyOzzlxV<+1Z(Q;qwO2lc9;r1t+?uYzqZy_iahD%Ho*y}KXDxJ$35!!;$% zT&by5ODbL@JB=-?3k&%fGkqAXtN`I;*ZPks0(68F$=1wTT3f8HZ_3aS_)Y*(YIXg) zHVt0@FIQLK+g@Ew>fC4ei0^<49k7`Z@t7thBk+G47M#RN9%EtB50XcfJhb005A7>_ zamOl)Q$ctI<0289uO7+Mc5$}Os?vU3xV;9|ZKxIbAYSuk4~w|YT6P&*s@1i#){G^PV6jqVV;4~u5qwTUd< z+S^@|_tsnY)Kbv@p*^)Kt+A6*Fi>PWceu-X=G^PacbA)4amgXgT5+tW_6o}tkM+_z zq8TfDVK1cv!0$k>!)OL&HEv9U;=}-s#cVl4&b(&bl*`Wl2CZ7^~&t#whe}EIWB)R6ddm4Hb(a&3bLD=3?v< zF@2oYITRk2_I*)@DBK2Dnlzz}(xU<&hRwbX872I2i!lm5np@z|S zp%Qd!k!~>;SQ&6jS#V)la86mU&;~2XQwk z4)?tTd~KFiA?d>iC9!~wOOX$|xhp%ArnGecPjVUsmUp(+-N{;sQEzI!A8kc91JDZ? z*IRkZW2=e9XSDL+0yrHv5Hg|!iCf}`HyM!Sf=KdwvD4wu*Un5g4`eE<=3Ck$EVrZz zj*LbyRp}~9veGqpssi;|yWZB`^!*RRATSIoMfNt$XBBP*E#K!>w6%1b)`PP;b9ZUm zSue3;mllV^;S;;GCuqjNvGJc1GlqWCjA06mL)N3awLC0#G51q#8!nD?-=pQ=I_#u9 z+KO=8->H36^TOKH{V2ExJ0c$WTHC50q3e7#Mc=Qr1S{{DRs~L1R^Q{=t2)9rF#axK(JoYh0 zBhl$Hm=TQ7m$k=yXOVz1!r@>lj+x}G70oENv9oXwda9N9qjpn;vt{&k4d(ZTqSepZ zF4oWr{YC5GWamWBKfsZ3tMU)6E;(vm`x{&PCoI=(ZHyk%(A!o4xtIp*0PysyhMk95 zWWA~Bt*D@Hoq8h5{kK!ccCE^=`Ew@ zE9vC0i>G}SASm+a^ft;D9=$1`Ft3EFdG(d4kjomqKE4=-KW1U!pSPVI!=u5eoM2pV z$0auf0y3;Wz4~+r;w7)8K+e|`Q>*GX*u%Iwtv67S6t4%+&6-F%vDlZcdx*!$S3&|z zPOHv~xwj%+Be}xq!g{K5iQ|$vy&{0`$vA`pw~)7MC1EepO=7MyH@C1s5* zQ`GPvBqn9(b4auWt>B_+rd}_kCOt|&JqG-3aHjqshHFEnPH)?Mov9at*;`q9CYkNN z%hqkj@d(Hh51!ib&`)JLs>u{7IeLHOoRlNy!phN)0Ge7ue-}YkO-ve|+^MP0NAO}T zeN0s;I#8p7G?!C>58K%B4o>AYvl#T+QzX>Z@oesqD9q@YU>2dU4D58qE z7jGv=VJhTJ0${dtU*HH^JX}w&(c(^dWCf$=amgBvMrr}&3kOqWh3~!kmpE8YuM`_p zlkSq7(#u6u%+pV@N3B2dbX{SO3f53>;IVy)=}ih!1WLqhi5?)#zn#%ycthQ+0m3F3 zLYZbOr=jukGB^)Tf|ICc9^253x$N3X_u8+m;`Xr^3#c&? zlJjgJeX8tkP7utY$l5`uHbH^cl%aAI;t4u&vX!2Iw_RalgCz~zLC&{Khsdzjx&?dK z?$&x+h8v%4^e16i5@XxyPiMfBhI}TJk+_K~N1e8?7%>n0ba6$|Wc1J*&NXrLlqq5# z&@02{3y+r{7zkmJe5d1q2lPcK{K^A*Z8#5m+vy$IS}~#>rev*H*-lT58bd~T+@6#N z^ir0N5trKOQ(3k(vb|mh7Hex+2OT%=GpuGE^+t>>5rv)fgoth+)TIz6QRW4j^QE11 zI-&frlfDTq0UvbMUx4pw#V&eoTpo;7(w{qoxDx*06a z6}x)t=`r$jNeo8x@Z{t=9raoB6ccfO=r0GDo1^+&QNq0p5>@R!JYk-c2S;aR4^a%(a z8>qjE;DQ|t9VDTj2kC`CK08?Ne4oD3)O<5oChR*zZ+@Q?)ZmRn^tVyQe@U_Y3H=;< zSIo!s zL=Jh9<^|?+sV}7}_QVi5ilt9N#AJ&-PwI3$SnVl&M06HjvxHViZmf8f3gkxVRy?Iw zyH95*>e5qk9_^{MFtykW^l{UZn3$wlusui6NFUYAJs(5o#2d|;(Lo#@u2)W?MTM1j z9n6CcU?_4TmY)NU*rKx|^igOMCNjB-8k>2rEbWWMy6X#9xOf59vmj8c^pIJGU%V=DYJs;7FF~Z9WU#aT0x(QxnuQM zs%@-phJY2ODvRmX>dmowQaCXh^3NX$!QV}IU(%z1TG@TaT>1A^lv1|NR0ud3S;z&bEa$3r!HMd)~a7_O4PFkXM1MJ`ip2S!_hb7PrEm;fDUkJWDiMh$1N zJ16S98EYvfy{h{LXMqkO%R13d8%Q2`kp~{t0K1jNxd`l878jy41zky%Q2MmVJ85#v zu~3OIp@WzN42v;IuLUuItp{EE(a>8`lQeV+*M7t!lk`djd3aMt#?oOlrJxbB#{&xs ziUfT8Nf&YE%YVWMqg_%S<)HGgO{Vf}l_i*i%-RsCaD#>vB;UC_8dGWpWuq-U2_%IE z_urHB>aGcRF(0K&5E+y8>a3g9eX>4MZMj6c-Jn5oL22&FjEzGo_>3{>1n=sl+V7h; zB4_UcI;C3Tb~%iF+}Oe0(-=LHH9?e{4m~taq)vxK%M+`n>;0Xt9EyT=HbKPA&>sP{ zjhvy=qY!V;(Ep)=j`I9qMw!+Czy1wF*!T@ns6VlW&DEQ6*jPS#3%ip~#OH76AL7E^ z$hRRp-V#UOhCF&(RGbH1^`>Y!Pv4G$^mp{p2*$sIB$?vuJNlbOZ*qz%2Y)*fiwWrP zl=*sxa-F;(gij{LjUF=lZa#ExHeXCwpnLC|#UqX`&|@N?_fc6%;77W#P5iz<-*s>D z&lf@~L1Px_Rqe8Z$xSSr?Ei}aNYN6i$M zV6KbLhyABEo;ln6o?aRHRPlS*>2(ql7lT=i5(gGzY+ewT7V9~Pi+^9nee%BEE@_mn zswWOQN+>)H7rq{4Y9=0BHz(@wlY2o_{y?vX^pAZY)3YVAtOu6JvIZ{E+p%}V>LvPq zjO@6jK)xm3TB;vFvj=~u4@Gd~LnO%%m6kzS?IenpVH=Ynx-JJ(nlDx^2gBMXB3J0$ z5e!*@xx}5X6*S>u%L;v1xeRZp2kSOhS*pl>)m^DKMD~#@(d|ycw@Pn~e&w%{ZFyxC zHaHpL$SN5({v$x6#KDhb+~tq-2M|}MNXDHn0zHfpnX4(zYO@--P=dufRRNQ6~9mqy90ua(uX1(pCNzJ;R<#1GA60 zms9z{7I4!{k^Ttj7W@SYJZ|tro|>)*Hu5 zQzULDc|z#A92P%l4on}cEc=+Al6V8kGdnQbZ!j}Wg?d6lZBIagHWjbg(7_YX%$o}Bq>KZU z?F8F`uG~}<+PF_of;yTC<&;d(`V>}6Q!&MczB~moY$_5?%eX$LWj!C-(6!UDp6oL+ zZsZvWt+%0qGpGl97+Fuww=#vq1?ygJ&`6JTZA_U`($a#ELT0Hwp)}ttJmVx z%5{iCA8!@Qmb5%8q1Vo0Jv9|a&O-HUE-IXpagU$V8v|N&PPXKn4SCP&OWAet`FXug zOm}e8498TL{iq6@&cK-S_WTQaY#Lqk z!%huOp?~}AIJ&C`iX$<>%;U&86(@DZZ6?lKz$A7TG2iL*0>;qq^cpc#y4@ynbPKj= z^>_M9nDp$6*w*!y;#rwo={Luv&u&5FvP;tp&kTCb@v0~v*Ah6nE%ZtniAIvh6a{`-fnx1{Pzdh& zIz3N;V;y<&K|KM8&Z3{IxpTD-{e*s-t4zeQ2e)F-!xcBgKmH*Sk77m-Lx(1+&W&(g zv>NHoL~>#5<#dvkGtTKG-trHplMJp`oz5g6LtPS?=DH7Z!#zkhF(Vh&0&UeSSokU7=-OhGKf4aVeN|B=w z%6p!;;da(Xnv5`+rgfOJVgx+0Lh+wM4^89kG`||iGs%-zR?oR4f zcPCv<_Jkze&1x115caiLWe0J=4HOuj22=!GMrZ7xD4^(of)`~~QBjyNDnp^721G@P z5)}~zAqpZYjzJm44SwHqtGc=>1jTvp_kREU;M2Kv?!9&D+~u6RoqNt@Q4CS7-IJnp zbqw82wCKA5G+3$r?|{6Js&`JRJP!y%K{+2EZ5ssMQa&UolXdfz1eNgTDXo<64$34w zdaE)nM)Mj~EZ{3jN#YocLD6cBMq_LQrqNm((huFbPo6v# zWdA)+z7s*0rsyr`5>3&~iulr|ayuIn3x`qy3$JS`w;w}aGZY6BDZsDQreP~RoZi@G zdSjy1?B-%W`@X!CqR=V()I2iLlg`)Y%gtaMaCbgh)5{AB|ZE=SSWvdW}z%e<@$ADIS>2l`oiY&Mt4d%?WZJb%g)05t(>3VN*>o4T?qYa ztB)>o;Gr5EBKDcRVIRaA5^0ZUtItfs2}+js7Oly@Y9(Kcird>7!l#6Xiewt*Zf%V& zVMQKqEh4kdlF87MGw15FYo?M6KMBoNQvAMiPx6MIW4J! zXv_Q+2I;h-uHBPX>~ZyXng1@wYP*(Km7qEQ&3Bi`eWemTuN20(F^c`v2J}F#wUx=V zSFEl4BB1(qIP4f*27-(Ev@)cW@JGr}!Xkc>pkm&>T|6H_&Dx7B=eL)8<{iUaKRxU# zb){p-LN~mE7*(r--1<)cM|=50seI%Bu$!BPcKlr>SE!DN}S>O*?Uzqq9-`k+4YE$$e6H`4|?j+cXjF?B*<3_Af(g1cFQ zIc8&P4xreA1(C;-ED&A78%{|{qBROq7C19D@}AhPg5Ez3q?Esvg^J)tUvSZf`ILTW z-;wZ}43+1&rTh3@!{spfvjC303F-)}1xVA+IPt$vqES-)_;7hQ zp?+tS+yYWm7s=^hq@;`Gml3>rF+?b=&RrrKhqyGl69J>> z&$$}z@t5*@E|JMHoqmb@zJV=W@nFtIi6#8WOXUd}-{PQ|G`2D36F)C3#-LQrBjYgm z7V&4t{RZx%<77I#^^KP=!y;(Pc)1M0vhng8v2xLwRwcy;3jr>2f^(hVFJ4FHdM9|$ z3GQ}+HBPWP=7iTf!8J~BnG;;#1ZO+J9zz>llaA>0enet8C( zLVNjDlVvzO*XK-@r+M8ya{2hR@(4a?ihMz4)qTQBd^FI_g~h!md=@FESMl{z%5 zx0~x(N)y_}Rr-l3^15W{L%w!8rZ&6zj_GnV`G6E|i`({hJt_C*on~M{+=Gu^E5|07 z=*hL!`|$B1kQ-m5C^QeJPF@T|Ev5gf^C15-|Js>!0=9Ce8mLBjRi9WpUe_y%ruzT1Wpq$KEU_iBA<6@ zJdTyRnny8STe)yCq}0_iO8V~c7e!Pw8nH!Drbsl}ASN7bA!77}F?qQks#R_8l7~UH z>MwW6qmogEw-(CJA((TotRv`spM1}yRr`$+1&EG9@wO2ID-lEoj#)s5Eh-w#v_(;- zNHp9aCX5?b^cpW(Bwu2EBAGtn#D}PsX5RQG5EYHKv?D}JB-*M$OgP%i_{4!lRGVfg z{=g@UK9P7Y5-mFA6U8D%U%Xfz1-&)>&@vhB0ebLb56K%4tbLez#CJyh8SP~P*jz>F z4FEmDXm>Ns=y)bzZ~))(2$jK%6FtI?&g>Bmq}2Y=XsPWxMvpN1NCHzhYA~QabG5ve zy1@Su7jbaWD*fGc@?RM~I_jTtHG0q9D}_b~2(Ysb-WYkq=VM=r)NcNHwDpe#qi0cgZDO zJ}6(WSG+6FbVJha-znFaBuuFKn^E<45)x4s2}V={5)%0=5)x4s3HtI~@)j??ciA3! z6SP6|_sW^lsJKA)YPg&!n!yz3Nev?KO@|n#>ppQoj|ETsZT+^7QYl8c_{OmB?q6DiLLs>OQ_=mt3l&UeETx0M@9_<#n)*_3P*IHMsrCulf=-T*|wB zh3$o2{PC~k!uB8F=wGX9M}sNtW<5eCPqbCf3IpR5@i1BSvSMJ?2wD(dVZQx=o^eFZ zr*Cxl2HQou_{4AI6R@r|psl-7!5ORh=6XaH@#>>;vpi!l-`Z5v6Q}XbadcTW z6;tpNM}gxIZ}Y88cQJ1H7E9w2{jqQ5AKg;1zUtrD(!pA+^AGZhB;R~5)`YZ8awp&a zi#$kd>S1Px@sg(W>!m2^?O~HvqAMqTf0ZwyCBpI(;A+?@Jt1FVzOX=whUkSw<_k&U z1>X0h{I3BvpX`;`osHm&*tmoCE7l;i?I)lT>{TS9X>ZSrCZEe;waq`TWAJe@0?P)_ zD`~S{bJ4yAIc#%l)ljkzW4lyU8&9u?hlVhE(dp86Bc0*2)t3H<4L@xzZ=>avi(iz( zntH2U>I9yh#M*Q_hdz#d5tRibkda#QS%_Af6gS);ps^0jz-lLW&qLg- zP=smF(?vkG1`WI6=t8F5@ST3P8yNl`U>kA!NG#i_bCE{Fj1=~;TOAQ4=jqy<*Nr}v z%!lW&QtZ2qQCWNG9Daw&?nM*59AX{#un;SZKd-c&&ym{cO`3o}By~t*lMpO1f?thb zLOSb+_F0n7$fL85r!dxzf0@p@7Z}uUg#wtU`)V9;i#<7yam>*#gUv)6#;Qu z%?n}3j~yB8;SHlg<0Vqc{4RsF1=Ylv#o*Hjb~K>_cPFA9ohtDq0&vssRUw&ddrSl>oV8!N&Ura%D46GE`G zcB6w^1*VF&fn?+ky;s!BFSdAOt9OFn13MC1B?{3?4x7aOT3;8xp^!C0g$h$eFFPxA zcOmQ0qG5$LtgYQpct3~38OqJ5m~~+`8o`M$yD3ot_eavC14OYf@PWd^Y88rc zdb-2r<~yGqW%nqSmbTc#F1Jn=t<`2@JK|1FcRsNhD@$*5WB2i9Y`Rpe=Qd~GO1`_% z)3s{o^WLLpwq%!hD^UN~>_3>CSX~3$BSMJtAa2Y=L}l5xAlg z|925vf(pE+7~Q;Bf2kPMA#7L5{*1wuuWid{t6VN)=OY+bMnX%Em9Y&{`gYOEf_$uw zF`5igFXDsSvp0b)G>WD3)*T>qiuw5+Aax+=I%{(nkKfRlJpv+lURSmTJ`lEcW$<$MCO_GY^@glma4T?+>CRq6&QK4Ai>Vzs@5Qdc z3vzGvjB!^9MLp(?CL6{#>dADY`UZcuH=BZsO}+X+4!prH>ccjI)HF?qit90A0t46B z^$={Sec1(oCii7+-P_#!#rdp+ztWe{CjOUw+4i$OG>7^H3RLg3Dm373IPejh%NoTs zL2MoN9zNjv`mrp`pTFpo*)YMY;u=CVrXl>U{%npod&Rys4rj%Ou=QpRAJB0$hmZ0BY`C!mNw#lGL0n#^-;X&AQoNrs^2Wy9{=`EDoW_&QAR0mj|;8K|szB>WzHx z5JqRFe;tAWuZW*NR7Bn}R75^MlBiPv>@w^eDch4Qc-Uam6(U8|AeEDcb z{;yY#6ff@`$;yqlE=QIbqr?l3jbgh_d13Qt@BwBxqghwFu4C4)FgHofS?4vYc+5HA ztRg<^9F{}=y^vI?IAp>y3*^rsZ&)C+l@M<%Pz+?S1cydT9>WTudrSL!yco~GK6DK0 z0(P4{h7ClKwvT}f#s%MV8QmxQo|?HS`@wH5W?;nq1#|9(zqv zcVVbNTo8i-va8Ga6&FC>w9%!p?A9c3+U!dWX?`gquRO!Xv3Xb}>>7t&P|VB5lepod z$FreQCw=*NRzfc5-<-hcQ2+Z0jPB>Op2)@lnlq7&N80BT8J)EUC$afZ9$q$y-6$37 z8GmBQ5`;w4$%uW8KQWp8BE7CZ_FwEi5;EPcWSm?M0&SfPwWTx@xj z-(A7lbeR~&YJ#LbX8b!PKP=8CmAd-V0YZ{GPon*o3XGrbKJ=fG2GFSvRo!pJ!ZAbvf26hY4$*d-~bfpESdX286U-M~tPdj*5@4dxYv zj(4R(6e3;~)rp}d`9@ZNhQ)Hug-R&7k+m7-tb{O%E$;D%YN>QOA$>hqU?N5vu0OE(1q6@X0fptxklYeBbSbms}~KfJ8okS90gu>C%X&{`0JhQ zFJQ2n?h=%zMiVS%bVT9BKhx_quOkk$1+AWpu($_3JLtn?_oJj;uu7q|BWGR<2`H+sO$4L z(MvD?8!M1NbL9ezRPXXV3ouf>!+%)7mg8D7Myf2nZXx?C3S4xr7_Pp#*BY+GuuLTy z%lqBOu0o!t@55{d!s9+MI32mq8k|H{D&|<;X;CAC6X`aYV)w;GVsOe@EXJWhi^Vu} z^I|bLoqNBCoPEED+<3oZa55ygZCH7TI|ipy(ob+PIu$Nq<;FljPP-Z#o|YKH(-LEN zT4EcX9x#Td2aMtA0mtyP%ov^?G=`@Kjp1o26T{O|V|ZHX7@mw5HZL=Vr)7-~Pu14& zwA>h;mRrM9o$U+|0wZx!$)8)!+C*sJ(dbw z<$)&|F0U8!?dz~}Qo;|dVr7aW!2_99w#|*&nhju8qEV;TJW7Ccz#i9r zJG@0m;l8g3fjj*b!GDjw0yZe-+E#W%+NHO7mCYj+qm8e#_U;%}+44*=!mlxcbw==v z5xn)Zq#eNTbxB){TgNVB-(;k`Xap}A!OKQaZ3OQc!Fmy3zGiI`)Wr{_%_#XnxAqC* z=sJ6D^b|!oYAtFe=dJ^_k0!`VDl^#^a&lC+3_u!9XkP*}@4Be<@q# z^)OClh+-K46tm&{Ohh6k8G5+<@J`HIPkjs!Xq2JXGPswN(DSz z^xMsvV~TslZtVKZ;NR_Lx56vM^&hgiFe-NPL$(Kgp!a-)L18aH{t+e~UHOhZti*l7 z!++hwI+xZNE}ErC6YT&TF?-2-Gu#_%hXf#rXBQHs2sB6FAe?m>On#Fy;QO*K+W910 zJO7NVNm}^Ys3%YR0q}Q#J$YyuX+oanQTx({B{`djsBU3#A1MkPQK_@_PxrDPlBDbS zN1w6_a_wl#&>K^T7~!*-4?Tcgs_Xb22iSC5X6 zpgFJOzJr)4_T{|}V*BYj{?I`-sAFF-V}QDR+5pXktDVx>d06>bZ(@=}t5i6c!K8w; z!IOvN0bl-Stf(0g77DB3&=iyfD%C#naSwxWz^ITNPuT`W5yC_ww4WScfjVx5LeLiOZ#4Pv;kV z^=z#vDb&%u2YhP@><~xkE)Nb!0K#d!*a9n7ujk#5u=QgVAm(1}u~iHgTl! z;J;Y6qNhAUsHmg|qsBc&^Hp_sv!jBAV7Pz}wq^*bjbeG7Tw&G-fbXDU1XlEAao$Z*VnHd2PR>@x#e$G@v*XR-YT zw2C)B%8J=L1~ivnaFn%XuNu%IKIbSqOQ|-XUv}~5kQm$gR5nRUA~RRLm)d}82@Y_y z>Zhm))qwxdAgO>VthNa{WpkJMZwY+w1=m{tJ$*D4JrRlt*G5Bm;vRkz$bHBM+-aX4 z3E;^)GpcH}k0z7$Ik`%RB)f55=Pm4mcVl#*3zuH52#hm(fE8R0cAgoQr}N>P-Ptkl zUn;c03a^X$D#E@QQJ*nk^U<|-T&PTi83L#!6BnAA&Dc|d6o8~~k4ynu2FN}wsY6s~ zb$imVx+gQ2Y@8Ld$cQ(9fc$AY=>bKl20y&u1fl<(Awj4=2*QeJ6HT0$(3~l(K-$G1 zvH&Py+M>W{8)0B%m-h9BJ-8`;Jwz!0eb3h>kT*c9{koHpAbj95Eie_@th1L3kxI%= z(sT&6xh4!129kdUG?P?gB3_7O%*ZI7Qe$4+*jwc`EdJ6hWl#fax8{kA$SD4hYsCun zY9PR*Mj&C31W^*NqU*pou?=lo$pv-QY!a1hCfT)g+h7-4|A-U^yJ1E`yarU`lXbdc{DxmS3f!qF~+GVPCQ7!|IR&7{oGlmiqLXJO@@8n63RpoGMLpGK1 zNipbXZKmS!p2}@8tngE>hv%oL5>}>0GeFqh2VQYTW+L**XL~s^W+Co)O;<-;HsW48 zRPKmNL)@ZD_};aB1g0^yPah~2ak2Q9VMJ4_dbXt_V+!I<)I=O{FpsI#9BS%_gH=xL z!OCn$TnKT8A4qe=1rWF4*;IR63|)w6v)@8n*(mfO?%hLPN1TGVa6E>E87dIda{S-~ z)N}3ND9gk29L7IPP$7^mzZ$7N0x^d-K|g`GW=j2!UJei(vXVmtHnG4a1j3f1`Lar2 ziUp<+2s0ICYAS(nM`?mV0@ExojlgUR%q}B1%Yw5A%(TEv0y8WyBM*kQMxA7l7`$KR zg_XRpFE8xRL;nwl^1@B>!fIYPB`=(s7Y^oy)AGXEdEuJ9gj64iCZ=wf{#*rhoVllw;^9qFZ-dUrz0cr)xDKn9C5@~e}A^U zEiN`SN{qGbP>C&aDs&xT1pa|mjyU40hCD=k^+2VQhlsD%Kbz@zm-uSOA=ME_eD!7Q z0ly=X80+@8u$yJ$q5p(mh$GH~A!7d*IieAUIE9Ui;$#Xw{sa8-+ni!>(;wxRGr;*f z`~uGj7QfJQoL}g<5q|mpp-ha6U^EORFw>tgHIl6zJ0&hl`__t!#WQAV^;Tp&E<^j* zDRH^lkyGOGv@cJIYpNYSB`#k()G#gwaFq<6T`5d#JeTZ5aJ34ndW*2sH?!(9XRO}Dr?mQGxiW5GED{_hNT z*jDp~dp17iKmdzT3>=i67tU#X6pQ%yi0Nu}45Rm%%wV;ESpCO`B)I7a`^_PV zp2eKdtJTqSBP?dl!y`V?;V|h7$HY~Fy5}0Y$Uu*a!0Dx!ItFMsM7K0E`H4aO#GsL_P!#FOg3T{&JupBUFp=F{F_;f`q>eCE}nWHS6(S#MV zNc5a+j#`V=`XrbP-pnN}3n!yGnrf?+Py2;rJmz%^#L(+FK3 zBBXu!6C&&`{X+4#R#sM$PkN~{IRH)STS*bIaA&eOOISRWu=R-0b-NLI7MS4@GhBrb zHrHH_8?gJJ@t%7fLTw!>AZa_@w2PXg&BZB>mvBPWNV_9$(+8&G=#d&RNxK_aWCY^7vD*l9C-ID9l}f7e`Ixo4wBzQ-cKS^GCOQ+5_5CV=0N*#scM`rg{&tdf zF!6W<^Bki%{X}gE@FVks2mMxoK1G5c8{61^YzT@*T~GXI9W6oAoqwWuvSSSAPuLlT z3tsKL&PjZU{Ory&V>wyjhJCLghDV1d(^PSues000fy!tlGn-IpW>U- zHYh#7y$Y#}$@n^}7%HB;WH`oz-82aeS9HKB6!60^^hj?EbP%V*I$E~o#;!gNfC&*q z0wIRIIzJGEWgae4vSPxBzBCB?i#Yzn(Ht$;#S>1Qp}izD8*t7=ifygk*>IRlyWljZ zrc)L=a>GHFOT#kT_z=$90uVWr7ZSw}FKPlvCyPQjmlFv%Mg!G?7%fKI?agrx0q+}I z1KlO@2xWG0=AERqrmI)1LR}4Y3ay-gbQ9<^1=<~TIKj|rU^<4;`OYHBgbOWzFxP%j zI73X*mcXF^mbEY=AktS0a5hfP>L>#oG80YnMdclaGCVncM#Nk%-2f8w;?6rNg6cdX zdHRsipg>&h0OJBSoox`AdqHL)jfh);hw2He2Q@07C0uAA^8^;YnlMpAk|{s> z4Coi4Xtr4n=-JUJOSa|{%|d%XVvB_;9i{Z4ka#-iiNw&c2${J{0aS3iXmB)kz;OTx zEK7s|eL7D8^S@hX;s^eS-(`UT#`W?qB0ReD<$l}H%^G2?aY>r~Lb z3kBGGAvb?;`-@&e&RhHmH!@Nn7w#iS&8@NDZ`g8DtAti$svCSnm{!x={NLUDl+vN90 zB$66X>II*Y{a$U;Q`s19=_Nb~$wntJTFs_dnu?Z~6X3-M`;HY6 zY9zr`)GWf%3iT#%mF4MRS-|M};zJ9ZsAoID<9^47k2t|vC}R+&y>U895_E(U z_hY;eGIly@{WdzbI#F+Qg6qsLX;sb-kx+4YVy0BFl~~9TtHkT zD`v^#8MGs(#MGS9kLO(fd$FtYMQ}>&A zNSU%BbMLhys-@Qxm9)kQE^~q~zhuu0^GkLR=9ffILZc?fD=Bt{g70{;t&)z=>j|3b zEWAP|^pD8Xx|kjBPAA@N7Ty|*-ZLb3n;otF-W%Gf%0jz7IcmxOvIILh$#(3E2{7x#wGWVdX2{na_;D=Ew2UKv-$vnSEM3;J-!(x=K5u zdg}^?821hu&P1roQ-aan$uq6-)3U}zT^qNBZ1s0A$yR^6@pjDCk7}HsNnHF8UtRA^ zt+naWf|89iyA{*tO_X5J1f4yTC`&1ihIf*NUZITV4acm3ZlgJ?6(3t?p%ePsXD&}* zPR+vOSMMYL1^9z$Rg((gW2mOarR~FSsie(?5kdSnoEwp~qD5Zq#0z{uhEjxC8Kylh zdJnthq!e;(HLgpWaOEq)9|wZ%eSbpa8frHY0c3Z9IufZ zW7_(WprQuy$X+UZ(qMUOY}>%mC}pLEY1joNOPW|^t1U$kr8!%&y-kEEYAXM*sP+_Qs6WtIp+P3YBSngeE>5AlA9XP>d%y z>T#3(^KI=gLoJW5S+NN-9A9y3vnt`Vkmke7+EY6Bgq8C_&qZNn7J|KDrB%LIv;tE- zX2MvtdQhLVVy$t*cYIeKjwt!in(T$e6$(%pQOE*mT||kNLn#&I7kM|K_DfuAp{+(1 zxPfaGT}#j;nxF$ZVtIn(oubO0VG_P7s@z5&~2M41d| zLy6Lp1cgye)E6Kpxu;aoLCXuJN*RJ9r3$Wd>d9>spM*{oY6~OxZrDOE?4aZaCZUyM zL$Laz_s;I1bj1s|c2HUa_u38$8NC0rgVG(51?BiIJnfY$biet}t>c4bU+!8XK?4*>D1sT}gKh;Qny+?Wf?gm~86w0#7oBRw~UTBh_7J(TUJgWR5? zsk`@7UPZa2UJBiV%;}}{N7}ev%2Me^{!=f7j3dtPjk+t=U+%56qZU8f2OR(wSvBQS z5O|G-hA)47rKU*It$bBqWe|eHeU-)1t@HIo21Ro+Z%meh z(WgA3UcFSWWI9rxIb7*2{eC{abA)nOny$Y%Qt3e5R~-HB{1&+_Q+C;M(| zE1j)h*vYq~4Z?3H`HnE;+JBXiD`T2(XM4nd`LORCO7HoOub*EU!e{OEZ9>rNV+!=2 zKlV-YBAoiEZz{q$A0G1QA0G1WYJwK4`q58Dzu*4RPj@3f|IuF!^lN_d$BCHQ4rqtA z3AjrUj<`5LpXd1eWc{H@fgKVky>@b-2W9#P54==@@T#qW2}DEfjsVeccP$0_kaq%0 ziH1Y(8{w@V1wLMbPhECfN`%UL>+LBQH^bZe)}%xW5lY)q+6LhjwcQ6P4SAekj zbE#MQP!0FIlDf$=Bp~qxucT)3iCa@wqcYg5sdsu1-nT9F4hnN?Qu9~9n`@Vf;4Pp? zuL#n3xo~kXgMVES91!gZR-(xu_PVeO3fE`&d(0iq!6uLRL-!<;FpN(JS*5N+=~wW#A~p!ywV*A(I78kFgqe2x;M=V zc7|!NXJ!RQyQTfQcXn`>J6B}HzAy{qG|YeOj$m}m(RqetIJwmIqZ=oXI9NNnP(*1- z(7`Kp9T%~F&CICzXHK6EZ5gK3n{WEG`os%1n>3MNr4c5`p#flp;m{h*u4nX zuaF}wUJ8mvNj~B2<_5D-$RTrs1OIQ4a~|(9FE}K(7xcDTs`q2ZwAA$rO@WLG^{RDz z*}Pz0(I-*>vpypkt^!-VgR_?m~$ej+#^eR2c>)LKlCKm><={6ugd zn4tNS!ErP>QD8w^BKz)P61U{-j3y_=Fz`;3rxL#U$zU(K@9U>z{PE&U(#Ye3zNW}? z|JqAKkFSg2WQF%pWGH)LN2KLZ4d5Y?)nGy@Xp{C zWO)3*he7F5qB;qx0Ddg`!)a81Q3bpHW~JOFNRF!AT$K{(K4?eHnAC0{3^B+{v`___ zDJk7h1~V`3vnQB+WjqCX0<+^O242?9b-M(taL`wEYZmQIqO;q8R2u-Bht#}Q#uPh1 z(`l`WZ{8F9CiZ74O{uGoRzJu13TPG7BXXD(2{J_i5UE*_Fa<1VN91rT5@g>-WFxY# z6$#2kSr9qGio{y`c4-I}>^3q_OS7;NY0KD1!Sz3X9PFFquAim9_-XJicmGD~$X8KXR#|^Ud`JV-^l9H;P%7Ovm6NiG2x`SIJXys&!9)QL17X6tof^W%EkzRQeBM&X7 zh`}s7&iwr}HBv|uH{$3zYZoJ7zZp?HBVApcg;!m4z&8`qQ@9jS;d&A1O87(RYIf+9 zME+yC+D%%^%QMu;vPQFeh=hkS)Lco^H)W_0PTl#DOf?Sy%Tjyib*I4{b{=R-R_lea zGogt~BUpDnAxmwKe2cTxJqWJNR;Njw^-r@^tR{dY$3T*+HV0IitKNX%(Oh+Ku(Qj5 z1+HX4v>IrB%~dawI`gr4>SkogZK~!Kbk7xMezXe!eH-JjRvnSz!Tc}@A0E?Gy$Nr; z-4y1O+rl}!IvCJJ`RaT?pXaLsQ}78o;)WoD@&)f!pf+#uj9YvBmWoujTS6M{w%wvq zCR~3~JK#Lrg(s$V;I|d1UGkAY(*WZ?CIcdgX4WFh?gF(JK9^Ofj&IQcN1N8mo!sk; zXRnI*_0}_ATBsIhbin+SPEaK};zX$=)chNKPoesv&miP}P{bb&tCLU&Iie0nU7i%&4~x{ZK%b{ry(tBeARBA0 z;I&A(vsi6~8h!>rr|ue#Drai38P`(nVu_~`0xW5|`)O(8Ap@%9%2InUUQzVGgC*!a zm%-hJI>!hi{JRqMdQ77#O4YI^aUycXt4r~QzOGc=oB?{S?xzkxcYm&*I+?5}ga@i( zIyg|p(p5iypgK+pEyU7|NYQ2;2L)5q+w@llVebPKFk*;0>nyxgJ42<#<~K7`vXL}z zrhwMWR7Xln_2Vi#5*Ps=LR%dsNX zPs~z(!mz9Vc)R*8!8LQ#&SV71dzVV)e>&Wy_5}gg-=)5j1izSPFGLkS$fqq-n{{Yp zSrw16F|1<^rN6dNO_79K6mFS5q-9t&U-h7x0g5*~sFE-0pC457TR~yS zt%aeVKsqkfSgy@>V@_J>CIhRqn_~bay!TSI3%+*aQndj7w`jkzllvIWc^b+4&!s9k zEc|>aL`VtGTBg#R|GH&3c!v+BWoq|cm_oojORYqIVLljYHDaQH9Rgz#Vd96mCg6v| z&IBz0N_cR&+7TEBEEo8%TaG@5U8d#e>cu>Bh3E$zSEzpiv~&f8S&6=3g}R^W>i$P? zdB2#yyk0HiH?LNQ;d$F?l}y{+@u*q|n|S(TkEu6OShz;TW>qmSdIDbiD)pi#)u$k) z^gU~-4;J%D|4{cL(4JCf(vbi@YTN{=&?30paggAR}sr&d<8`bxaU3-q| zQlIdgIxD#!-JT6~a$kn_TR=N2Ztb;KXa|I*?h}nj{9OW@JCmrsR|~xv6Q{W(<}It$ zSK{VxTWIsQy2LKVkJakciP)#i*c&#h)1?vo%gySgFgDqOy4X=O>AWpykqP|f*VITC z>&sR6G8wl8aV8xJXfDR61SAaK@_kz%(2Mznuc%~(_WD;;vX9kttAM(0Rj=q#1WAOB zI@K8JM4=YBu?0(=h5D<|r$R{=xlJ>tBFh4@P+7`9-l~$L&hl3UM^AheJ+*`{epUTU znxKR3ax%hN^*Z>Y9sl?1Dp?5azD>Oc!JFIEhY(DCLnXtgPriZvg2*@2&IsIZs-Muj z*!ZYn6&K%2t^i4pHp#H#!KLk@n~uNClgaPduF{6UL)+DKsg!Tnt_~}`MD=0_a%(ld zPVPS1s?F4beWs`)8fLSa08^xe_MTbMZEMik+w%)+)V%!mwD57G-RWGy=mT^V;>PI( zZ2K;(ff8-|Kq|7(C_$478f}Uo>FIl|-G9M35Qa4pmVn?(f;wCrgh6I|>Rf>KWb`F_ z@)CgdWO2p>+-*(d;*coutyNCsRTjuEcuQ^93Iv(^tVxC{kRS^7&WO(1MCPZExm)9z zn;V(yt<3zZXHa`eG--&UK2;==lq`0R>nC*<_7)6Qs`uvQY!T1T@kvNFP#y{+an zuw%;KeOm~iE<4nGcYV;5$A+AzV>xyU!#k7tml^99<>iueN zQ_6wU&JgA36VK7#%&~gES_X>W->(+Jvj{DqaTL-Y2P^RXJ&Y&SiPTPY;Jp%lejO$e zU?KtOo9n>Bic!325ym42)NKCxr|MW_2_H~#{Gq>iK;1>cd(k0GFpBwihcFv0;n|-f zxSaR=Tfdn1QXoDMdDk!=OIsl<{#HCFtMDU5z=DQ5K_31ymky zVF95gY-y-68>GT+0VXsWW{jLSL!*y(dGzs1^wJ3Y7&i1 z7kw?pg8H-f~p!Pa6jKXgxkI z=2__C)QUpl#f@hlJgQz(vQPAn%Mzl(qrvl{IOmP?l9TNszrX*y{#&(G6F6QM8_cLT z2_N^WEBM#ns;~6M+{f5>4k86pRgY%Oh9Xc7G?Peu&P!7xT4)q6~4gr?*GOFqi>vcEeGO+HC8HEFTfmX zK#FX`hok2NzWLv)UnTHlL(Zq1S~rBnjed@9X~To&P2hR%2X*F|7S3%$f=-!0GWEFH zal96s~Ml`KZ)d-7Ig*j=wF<~i!G#EW`bU1^CA>;(QJ;&9uGo>jIM*@W6)F9sU zLw;2MI@J0k(G&zt*+i4lI8CT2V&FJJSj$8?5>z$$Nga8nR4H*JK!|go1d>%hskg)| zs(!mypAJci*hY41@c4&T(AvR(dZKQB8>OGcs;rOmM1-m2^^Wyzvtv_|+#dmbB&fom7jZ75wFs>J3HKC#Xw2V3VB* zPNe=0vA6iLP`XsM__|PMXXBmzB}>eq`kBEb$=E9|Tl`gMnzMVK9*5PvfkUz3K=;NR z*+Ko1(^Bt?_aY$incONU;rpe~z9FV5AqTRRe*~Gpm7)ZKe26#HoELjSV=&W*c|x<= z{W08-oxGiw>X{GphK2&kz1~o{vytoroU@T^Zzm;%E*psPl2&VHST1XLL?uD;62BUC zv^FVJhjRQ8TsBJHNe(^uAHS_XEr+mC>L|hKo7wi&A6TfPRLx73P(cCSMqzA|0dR7X zB^0>i6ZL(I5*pak`cMc01@phDkb7*Zh8r(xFfm9uWJ05u!n~6&)UvIGt_krkOkbF! zB$~|>D#nPy7lZ^Ut9+sS66;-JOzc=%lbXcKD1-CG6TVQ+f8(Rse1<>N#mU{v8vU|k zU`Bs22WF$ceCZG6I-BhDNKCmhx(r@sn_xmrhpw755aX+({HI4?O?^OxZ11)A1ww6| zMOl8@qMS}paVaI#)1m}z_y&w&HQtC+Bd3#9JeCp~=4{Z$nfR0j4Wx#yEwyUGF@H;R zgGT$%%c&s^3?KzV?HgqPx`=}+!#swM4pOhvCkI32QknI!h6Ca6d=Gs#yPZ{4+8=*A zho2t`r8;YARiiC-N-aGa3N^#%_C_d_hc$vHu}1KSHNy9y&@+&vPc#XUyMvFLgh~@r z;uQOoSTwD%l88mz_zc}piVqzgn&^?9Y#8Q9uxL=zLwQ5h&hGkwr!Vy%MVS3Ri0k}( zM^iF2DPoBb+^FS8Gec>a=7NaINvhHDvaL%Gs;W1E?=Ck*%_fe&WXdqMtcY`BL)LwwTFhomW71`I(66_ zBSA9|ce7940DET%5=hpb9;H}{@P3)0CK#X3&kU7ZW7WgyU$lCwMUA;$5ZwslGr8*W zsFGiGN8~_~ZB8R5eSfIYvN?|Zyu4FZDBoG-n9(NIGk>^O79=W&`1+4_B|(+yY`5G0 zlXk<|nN{JYfJumBN2i2lxNYT#9^eW4Z2kL*?9c!wJ$L-Srl$>mG$)khBx=t81X0vl zg2{+;olQ^j&01cIO5)vfLyBAm9c_0&=9}|Fnf%S{kdIHv4TXAJbx)mr?jNR&zmOYh z-T$XbJ|lnq_c<(gt(I0K#E_J7i!~V6|Y@Tiamh%h(OW_n-G?CqPZ8T z(8Q(FfxJ-5Q*kxEjX+Y7JDU>Yx0Req>6hVvY#YB_q-y^VH+->xGPoj7{2M5ns}&cB@oXVc%T z_!|pCJ+c>*$!8iPT-x|+ag-`fv|Z|AUQ-a7AT8G07KVCNrofagbZ=d*Hu&AhZ(12@ zD|z)NSB5@HR@x$}3_mZw`?1h9N;^EZr(AQA9uMKy1iv)=()FarGkz&hIv|aH<=p*R zMzf?IcIu-cr7E9 zK`CkR+ZiEWNAD4@tJQw5tMBDAuADJ)+RQ7jxq61{O4s#Qy8d+a#A_z~3CFrGr1`f5 z1IWYnd0iX7!jB)>opE!h1g|bd6#bL%+skkKFyjK>OhggZzwF~rf1HuezyB~}KoUh9 zD?D`m~QSx_iX)xxDIQluf)sj|INT15hG@SKq(SOsNqm{;BblW1sTT`!b@* zl&k3h@gd)p@x=ao72XqRQ_Zv)@w7#}KAyJ8NXwi^X;heF2keCzwm)O2DC4Mu4WbM9 zYx^@wMcTTCY56=-mr*3ryr0?MyQD5-P{ENm)BMs%mv-OwG=CDAK0N8tV13y?c=`>O zW1oL>UB*D^Y0f^$XjS@E4YCGYuuzuf&j?T*i$99^OV3Dq^eyB`b!kuYOFqfSQ}z?6 zy0ou&BRYUEX@KdqukjmYJ}*Hy7C-v8iJlQ&h~Gu{ zU5wu)_+5(MIQ+)*4-RIuQV7L1{3dbvvy73E67*Vn>oWY}Z(WXO%GQO__zjx*;y2NJz7fw?n9sBEOs`X(1^CS{pO@izrun=E&sUny>+xJ+K3C&;s`*@l z=c~-;-CucQuE{2F5DAma=XyNTze#4viMV(fsN_T-<^2Q#KEgSoUD^2Y6K}ln@(FzPp^Pp!rxBO F|377(A7=mn diff --git a/src/features/encoders/basis/client/index.tsx b/src/features/encoders/basis/client/index.tsx index 78f506ef..d3296578 100644 --- a/src/features/encoders/basis/client/index.tsx +++ b/src/features/encoders/basis/client/index.tsx @@ -1,21 +1,27 @@ -import { EncodeOptions, defaultOptions } from '../shared/meta'; +import { EncodeOptions } from '../shared/meta'; import type WorkerBridge from 'client/lazy-app/worker-bridge'; import { h, Component } from 'preact'; -import { preventDefault, shallowEqual } from 'client/lazy-app/util'; +import { + inputFieldChecked, + inputFieldValueAsNumber, + preventDefault, +} from 'client/lazy-app/util'; import * as style from 'client/lazy-app/Compress/Options/style.css'; +import linkState from 'linkstate'; +import Range from 'client/lazy-app/Compress/Options/Range'; import Checkbox from 'client/lazy-app/Compress/Options/Checkbox'; import Expander from 'client/lazy-app/Compress/Options/Expander'; import Select from 'client/lazy-app/Compress/Options/Select'; -import Range from 'client/lazy-app/Compress/Options/Range'; -import linkState from 'linkstate'; import Revealer from 'client/lazy-app/Compress/Options/Revealer'; -export const encode = ( +export function encode( signal: AbortSignal, workerBridge: WorkerBridge, imageData: ImageData, options: EncodeOptions, -) => workerBridge.basisEncode(signal, imageData, options); +) { + return workerBridge.basisEncode(signal, imageData, options); +} interface Props { options: EncodeOptions; @@ -23,89 +29,53 @@ interface Props { } interface State { - options: EncodeOptions; showAdvanced: boolean; } export class Options extends Component { - static getDerivedStateFromProps( - props: Props, - state: State, - ): Partial | null { - if (state.options && shallowEqual(state.options, props.options)) { - return null; - } - - const { options } = props; - - return { - options, - }; - } - - // The rest of the defaults are set in getDerivedStateFromProps state: State = { showAdvanced: false, - } as State; - - private _inputChangeCallbacks = new Map void>(); - - private _inputChange = ( - prop: keyof State, - type: 'number' | 'boolean' | 'string', - ) => { - // Cache the callback for performance - if (!this._inputChangeCallbacks.has(prop)) { - this._inputChangeCallbacks.set(prop, (event: Event) => { - const formEl = event.target as HTMLInputElement | HTMLSelectElement; - const newVal = - type === 'boolean' - ? 'checked' in formEl - ? formEl.checked - : !!formEl.value - : type === 'number' - ? Number(formEl.value) - : formEl.value; - - const newState: Partial = { - [prop]: newVal, - }; - - const optionState = { - ...this.state, - ...newState, - }; - - const newOptions: EncodeOptions = {}; - - // Updating options, so we don't recalculate in getDerivedStateFromProps. - newState.options = newOptions; - - this.setState( - // It isn't clear to me why I have to cast this :) - newState as State, - ); - - this.props.onChange(newOptions); - }); - } - - return this._inputChangeCallbacks.get(prop)!; }; - render(_: Props, {}: State) { + onChange = (event: Event) => { + const form = (event.currentTarget as HTMLInputElement).closest( + 'form', + ) as HTMLFormElement; + const { options } = this.props; + + const newOptions: EncodeOptions = { + // Copy over options the form doesn't currently care about, eg arithmetic + ...this.props.options, + // .value + quality: inputFieldValueAsNumber(form.quality, options.quality), + }; + this.props.onChange(newOptions); + }; + + render({ options }: Props, { showAdvanced }: State) { + // I'm rendering both lossy and lossless forms, as it becomes much easier when + // gathering the data. return (

Quality:
+ + {showAdvanced ?
Nothing here yet
: null}
); } diff --git a/src/features/encoders/basis/shared/meta.ts b/src/features/encoders/basis/shared/meta.ts index 7f640f15..b044d41a 100644 --- a/src/features/encoders/basis/shared/meta.ts +++ b/src/features/encoders/basis/shared/meta.ts @@ -17,4 +17,6 @@ export { EncodeOptions }; export const label = 'Basis'; export const mimeType = 'image/basisu'; export const extension = 'basis'; -export const defaultOptions: EncodeOptions = {}; +export const defaultOptions: EncodeOptions = { + quality: 2, +};