From 02076e7f0ef71595c568c1da591d65b186ee0eec Mon Sep 17 00:00:00 2001 From: chenxu Date: Sun, 21 Mar 2021 22:50:46 +0800 Subject: [PATCH] =?UTF-8?q?Android=20=E7=89=88=E6=9C=AC=E6=89=93=E6=A1=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 6 + GGELUA/Release64/Test/lua/main.lua | 439 +++ GGELUA/Release64/Test/pvf.script | Bin 0 -> 296032 bytes GGELUA/Release64/build.lua | 67 +- GGELUA/Release64/ggelua.lua | 276 +- GGELUA/Release64/lua.exe | Bin 136192 -> 133120 bytes .../lua/GUI/\350\276\223\345\205\245.lua" | 22 +- GGELUA/Release64/lua/HPS/PullClient.lua | 133 + GGELUA/Release64/lua/LIB/MONGO.lua | 170 ++ .../lua/LUA/GGE\345\260\201\345\214\205.lua" | 86 + GGELUA/Release64/lua/SDL/SDL.lua | 4 + .../lua/SDL/\345\233\276\345\203\217.lua" | 2 + .../lua/SDL/\346\226\207\345\255\227.lua" | 30 +- .../lua/SDL/\346\270\262\346\237\223.lua" | 3 +- .../lua/SDL/\347\252\227\345\217\243.lua" | 38 +- .../lua/SDL/\347\272\271\347\220\206.lua" | 2 + GGELUA/Release64/main.lua | 30 +- dependent/fmod/api/inc/fmod.h | 2473 +++++++++++++++++ dependent/fmod/api/inc/fmod.hpp | 609 ++++ dependent/fmod/api/inc/fmod_codec.h | 159 ++ dependent/fmod/api/inc/fmod_dsp.h | 746 +++++ dependent/fmod/api/inc/fmod_errors.h | 123 + dependent/fmod/api/inc/fmod_memoryinfo.h | 201 ++ dependent/fmod/api/inc/fmod_output.h | 93 + dependent/fmod/api/lib/android/Android.mk | 16 + .../fmod/api/lib/android/arm64-v8a/libfmod.so | Bin 0 -> 1190720 bytes .../api/lib/android/arm64-v8a/libfmodL.so | Bin 0 -> 1540056 bytes .../api/lib/android/armeabi-v7a/libfmod.so | Bin 0 -> 989564 bytes .../api/lib/android/armeabi-v7a/libfmodL.so | Bin 0 -> 1194876 bytes .../fmod/api/lib/android/armeabi/libfmod.so | Bin 0 -> 1300652 bytes .../fmod/api/lib/android/armeabi/libfmodL.so | Bin 0 -> 1551020 bytes dependent/fmod/api/lib/android/fmod.jar | Bin 0 -> 9946 bytes dependent/fmod/api/lib/android/x86/libfmod.so | Bin 0 -> 1321052 bytes .../fmod/api/lib/android/x86/libfmodL.so | Bin 0 -> 1661532 bytes .../fmod/api/lib/android/x86_64/libfmod.so | Bin 0 -> 1220040 bytes .../fmod/api/lib/android/x86_64/libfmodL.so | Bin 0 -> 1601992 bytes dependent/fmod/api/lib/fmodex_vc.lib | Bin 0 -> 251496 bytes project/android/app/build.gradle | 123 + project/android/app/jni/Android.mk | 15 + project/android/app/jni/Application.mk | 13 + project/android/app/jni/sqlite3mc/Android.mk | 20 + project/android/app/jni/src/Android.mk | 57 + project/android/app/jni/src/init.c | 173 ++ project/android/app/jni/src/init.h | 10 + project/android/app/jni/src/main.c | 130 + project/android/app/jni/src/platform.h | 65 + project/android/app/jni/zlib/Android.mk | 29 + project/android/app/libs/fmod.jar | Bin 0 -> 9946 bytes project/android/app/proguard-rules.pro | 17 + .../android/app/src/main/AndroidManifest.xml | 97 + .../main/java/org/libsdl/app/HIDDevice.java | 22 + .../app/HIDDeviceBLESteamController.java | 650 +++++ .../java/org/libsdl/app/HIDDeviceManager.java | 678 +++++ .../java/org/libsdl/app/HIDDeviceUSB.java | 309 ++ .../app/src/main/java/org/libsdl/app/SDL.java | 85 + .../main/java/org/libsdl/app/SDLActivity.java | 2353 ++++++++++++++++ .../java/org/libsdl/app/SDLAudioManager.java | 390 +++ .../org/libsdl/app/SDLControllerManager.java | 792 ++++++ .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 8441 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 4483 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 13318 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 26048 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 42590 bytes .../app/src/main/res/values/colors.xml | 6 + .../app/src/main/res/values/strings.xml | 3 + .../app/src/main/res/values/styles.xml | 8 + project/android/build.gradle | 25 + project/android/gradle.properties | 17 + .../android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53636 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + project/android/gradlew | 160 ++ project/android/gradlew.bat | 90 + project/android/local.properties | 8 + project/android/settings.gradle | 1 + source/app/ggelua/main.c | 104 +- source/app/ggelua/platform.h | 65 + source/app/lua/lua.c | 717 ++--- source/lib/cjson/Android.mk | 29 + source/lib/gastar/Android.mk | 26 + source/lib/gastar/Astart.cpp | 267 +- source/lib/gastar/Astart.h | 72 +- source/lib/gastar/DLinkList.h | 268 ++ source/lib/gastar/lua.cpp | 138 +- source/lib/ggelua/Android.mk | 31 + source/lib/ggelua/hash.c | 2 +- source/lib/ggelua/lfs.c | 1378 ++++----- source/lib/ggelua/lua_zlib.c | 2083 +++++++------- source/lib/ggelua/luuid.c | 22 +- source/lib/ggelua/main.c | 213 +- source/lib/ggelua/md5.c | 422 +-- source/lib/ghpsocket/Android.mk | 43 + source/lib/ghpsocket/HP_Buffer.cpp | 286 ++ source/lib/ghpsocket/HP_Buffer.h | 44 + source/lib/ghpsocket/HP_HttpClient.cpp | 315 +-- source/lib/ghpsocket/HP_PackAgent.cpp | 393 +-- source/lib/ghpsocket/HP_PackClient.cpp | 97 +- source/lib/ghpsocket/HP_PackServer.cpp | 403 +-- source/lib/ghpsocket/HP_PullAgent.cpp | 561 ++++ source/lib/ghpsocket/HP_PullAgent.h | 26 +- source/lib/ghpsocket/HP_PullClient.cpp | 421 +++ source/lib/ghpsocket/HP_PullClient.h | 26 +- source/lib/ghpsocket/HP_PushClient.cpp | 190 +- source/lib/ghpsocket/HP_PushClient.h | 42 +- source/lib/ghpsocket/common.cpp | 90 +- source/lib/ghpsocket/common.h | 70 +- source/lib/gip/Android.mk | 28 + source/lib/gsdl2/Android.mk | 78 + source/lib/gsdl2/gge.c | 522 ++-- source/lib/gsdl2/sdl_ttf.c | 843 +++--- source/lib/gsdl2/syswm.c | 2 + source/lib/lsqlite3/Android.mk | 28 + source/lua/Android.mk | 55 + source/lua/luaconf.h | 14 +- 113 files changed, 18160 insertions(+), 4334 deletions(-) create mode 100644 GGELUA/Release64/Test/lua/main.lua create mode 100644 GGELUA/Release64/Test/pvf.script create mode 100644 GGELUA/Release64/lua/HPS/PullClient.lua create mode 100644 GGELUA/Release64/lua/LIB/MONGO.lua create mode 100644 "GGELUA/Release64/lua/LUA/GGE\345\260\201\345\214\205.lua" create mode 100644 dependent/fmod/api/inc/fmod.h create mode 100644 dependent/fmod/api/inc/fmod.hpp create mode 100644 dependent/fmod/api/inc/fmod_codec.h create mode 100644 dependent/fmod/api/inc/fmod_dsp.h create mode 100644 dependent/fmod/api/inc/fmod_errors.h create mode 100644 dependent/fmod/api/inc/fmod_memoryinfo.h create mode 100644 dependent/fmod/api/inc/fmod_output.h create mode 100644 dependent/fmod/api/lib/android/Android.mk create mode 100644 dependent/fmod/api/lib/android/arm64-v8a/libfmod.so create mode 100644 dependent/fmod/api/lib/android/arm64-v8a/libfmodL.so create mode 100644 dependent/fmod/api/lib/android/armeabi-v7a/libfmod.so create mode 100644 dependent/fmod/api/lib/android/armeabi-v7a/libfmodL.so create mode 100644 dependent/fmod/api/lib/android/armeabi/libfmod.so create mode 100644 dependent/fmod/api/lib/android/armeabi/libfmodL.so create mode 100644 dependent/fmod/api/lib/android/fmod.jar create mode 100644 dependent/fmod/api/lib/android/x86/libfmod.so create mode 100644 dependent/fmod/api/lib/android/x86/libfmodL.so create mode 100644 dependent/fmod/api/lib/android/x86_64/libfmod.so create mode 100644 dependent/fmod/api/lib/android/x86_64/libfmodL.so create mode 100644 dependent/fmod/api/lib/fmodex_vc.lib create mode 100644 project/android/app/build.gradle create mode 100644 project/android/app/jni/Android.mk create mode 100644 project/android/app/jni/Application.mk create mode 100644 project/android/app/jni/sqlite3mc/Android.mk create mode 100644 project/android/app/jni/src/Android.mk create mode 100644 project/android/app/jni/src/init.c create mode 100644 project/android/app/jni/src/init.h create mode 100644 project/android/app/jni/src/main.c create mode 100644 project/android/app/jni/src/platform.h create mode 100644 project/android/app/jni/zlib/Android.mk create mode 100644 project/android/app/libs/fmod.jar create mode 100644 project/android/app/proguard-rules.pro create mode 100644 project/android/app/src/main/AndroidManifest.xml create mode 100644 project/android/app/src/main/java/org/libsdl/app/HIDDevice.java create mode 100644 project/android/app/src/main/java/org/libsdl/app/HIDDeviceBLESteamController.java create mode 100644 project/android/app/src/main/java/org/libsdl/app/HIDDeviceManager.java create mode 100644 project/android/app/src/main/java/org/libsdl/app/HIDDeviceUSB.java create mode 100644 project/android/app/src/main/java/org/libsdl/app/SDL.java create mode 100644 project/android/app/src/main/java/org/libsdl/app/SDLActivity.java create mode 100644 project/android/app/src/main/java/org/libsdl/app/SDLAudioManager.java create mode 100644 project/android/app/src/main/java/org/libsdl/app/SDLControllerManager.java create mode 100644 project/android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 project/android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 project/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 project/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 project/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 project/android/app/src/main/res/values/colors.xml create mode 100644 project/android/app/src/main/res/values/strings.xml create mode 100644 project/android/app/src/main/res/values/styles.xml create mode 100644 project/android/build.gradle create mode 100644 project/android/gradle.properties create mode 100644 project/android/gradle/wrapper/gradle-wrapper.jar create mode 100644 project/android/gradle/wrapper/gradle-wrapper.properties create mode 100644 project/android/gradlew create mode 100644 project/android/gradlew.bat create mode 100644 project/android/local.properties create mode 100644 project/android/settings.gradle create mode 100644 source/app/ggelua/platform.h create mode 100644 source/lib/cjson/Android.mk create mode 100644 source/lib/gastar/Android.mk create mode 100644 source/lib/gastar/DLinkList.h create mode 100644 source/lib/ggelua/Android.mk create mode 100644 source/lib/ghpsocket/Android.mk create mode 100644 source/lib/ghpsocket/HP_Buffer.cpp create mode 100644 source/lib/ghpsocket/HP_Buffer.h create mode 100644 source/lib/ghpsocket/HP_PullAgent.cpp create mode 100644 source/lib/ghpsocket/HP_PullClient.cpp create mode 100644 source/lib/gip/Android.mk create mode 100644 source/lib/gsdl2/Android.mk create mode 100644 source/lib/lsqlite3/Android.mk create mode 100644 source/lua/Android.mk diff --git a/.gitignore b/.gitignore index b58a8c8..78efac2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,8 @@ dependent/library .vs +.gradle +.idea +.externalNativeBuild +build +Obj +Bin \ No newline at end of file diff --git a/GGELUA/Release64/Test/lua/main.lua b/GGELUA/Release64/Test/lua/main.lua new file mode 100644 index 0000000..a23770f --- /dev/null +++ b/GGELUA/Release64/Test/lua/main.lua @@ -0,0 +1,439 @@ +--[[ + @Author : baidwwy + @Date : 2021-02-08 15:51:24 + @LastEditTime : 2021-03-19 07:58:00 +--]] + +require("GGE") +local SDL = require("SDL") +引擎 = require"SDL.窗口"{ + 标题 = _VERSION.."|".._GGEVERSION, + 宽度 = 1136, + 高度 = 640, + 帧率 = 60, +} + +--jpg = require("SDL.精灵")("实例/测试/test.jpg") +--bmp = require("SDL.精灵")("实例/测试/test.bmp") +--png = require("SDL.精灵")("实例/测试/test.png") +--print(jpg) +--print(bmp) +--print(png) +function 引擎:启动事件(webp1,webp2) + local base64 = require("base64") + local data = base64.decode(webp1) + spr1 = require("SDL.纹理")(data,#data):到精灵():置过滤(1) + data = base64.decode(webp2) + spr2 = require("SDL.纹理")(data,#data):到精灵() +end +local 度数 = 0 +function 引擎:更新事件(dt,x,y) + 度数 = 度数+0.1 + if 度数>360 then + 度数=0 + end + spr1:置旋转(度数,310,317) +end + +--==================屏幕自适应===================-- +SDL.Log(string.format("w:%d, h:%d", 引擎.宽度, 引擎.高度)) +local tg = 引擎:创建纹理(引擎.宽度, 引擎.高度) +local pos = require("GGE.坐标")((引擎.宽度 - 600) / 2, (引擎.高度 - 600) / 2):floor() +--==================屏幕自适应==================-- + +function 引擎:渲染事件(dt,x,y) + self:置渲染区(tg) + self:渲染清除(255,255,255) + spr1:显示(pos.x,pos.y) + spr2:显示(pos.x,pos.y) + self:渲染结束() +end + +function 引擎:窗口事件(消息) + if 消息==SDL.窗口_关闭 then + 引擎:关闭() + end +end + +local webp1 = [[ +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 +nw== +]]; +local webp2 = [[ +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 ++H/4f/h/+P+ntAA= +]]; + +引擎:启动(webp1,webp2) \ No newline at end of file diff --git a/GGELUA/Release64/Test/pvf.script b/GGELUA/Release64/Test/pvf.script new file mode 100644 index 0000000000000000000000000000000000000000..aab4f9d7aeb64ce94245eef172e9033663c6443d GIT binary patch literal 296032 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

ZIeN&+bq!*zkb3 zXQcb#F9m~*3+vcZ(z}f}F?k^t9ohZNxxT|x6uTF+A05wygZ-mhLrOq-a4X=Yqv`?+ zq%s_lnd=uf;4*a5IMwuA@8+|6_V8V5aYmC*pAjL(Sm!gz?IVLv%0$m3#F;G#eL>dJ zb3waLVQJKJy0N4K*Z59ILv^d^b~x*~2IAv;LeNRClv+DNTrLksLB-~Q!cl4+QS5;u zsqOPfY8}!V!U{2#5L={s!5j8tLoGe%Q^F-f8Puye(xrr{Z$OPj#=@*hx0R0>o zc%<)njux!O1}#F{caKcScDF_l40~?KGWMes_|K2?3+te<1nN($xtp{0mI~1yYpmc3 zZ`?I*ydSa+$6F&yHxspBt;nWu3qr#|$}q6m^q1p0Mh-gWo7Wj8iVTX($UEsxIfw!D(kX^zp`^4=S=?2~Bu_S&Vv z`gJ(0+qC_od$FV~Y(CS;2L^5gzwf9PH9CbvH}bp-3H8iP&M(y98URIMbm zi>Sde4pJY-h$>BC=txnRXXs=NFYnL^gK!)aBRf)gr46A_JSat#&oe|)ZjsEfj?W%M zyF|R{3au~I!zz-!IEjc5UptBJ7<9S=y6zi6O}NwHH8{)hLv#dFOkZH0umdPa2}JO4 zv}gO;$^UDMtE1449Q4DK00J1Ydo~3P`ix_Y{aP9UkDG zT59O&1?wQ6)9#32ib}Z=WML4aTo1Vn_UVCZ1Epo34V2A13PP`!suG#DTB`U?$#_du zOm&4Gj}Yk5*`IEE)gN98iY9<*fw~>SxD(rCf0$8+vZ@b9rHZh7^r<1++;O-~FJ#6P z<<-{$K0D%FLOJ6-??&8rBMvFXw0{GqKID@MzGz5==S3m@U?t&VYhX6YR*o<2T=^Rf zP14|>Cva9P5`>n{7U&cJE+|9^+z2r!j}n5$u2cj{C}20MYMD$&t*XtQM=!#oBQ&vD!v_EYgBC1xGm)aiYjfZ|R~ zM|7rEXe3f>rDegEI~&%Bgsjl5aB?UTAd+fd)hrURMpjL_<#@!}iQY}HcPV{`ATNux zsYD4D+$o+S?w>UnD>*`K`ap)K}me{ zd=Wv{dUhFVX&`fgr2&`%`zX}1NAL(qzrI$=Yj6<+MyG6=zBV0dKscGfP(hf?A1Z1y z?4e0n`ggflyGnS)x`ebgK7=7AHX>>Hks<$(DgjETr@=;dq;2$!w2fwte$DziYTaI_ z*2f@OG9}mhKJOqmJ9q_+Vi_F5)$V56?#UELFYAZ}-Nn@MlahkT<#ycq##D1t5{b!W z_buzhRI@XZkI7~DZ3{ZfskNq&uuLw)f3pbHlODK$d{nkR^+R=fA27!Ln#eIM9|s2P68z>Aq7XXxrJ&F(A4vzH#+QFok0J>!fC|G*;T zFAC_aL?&h0MkRr-tgh2gtpdK0 zPFo{I3eXMIRdym#Ie!f>lEoOc&J{@|iS|)~yF%6Yne~ez?|0nN>8-jJyMNTG7PVZB)-nJzaO$s?J;;_21jTmMre5#sQ4St{#m z8rA@4P^dI-`$I(%>P12;o2u)Z*9M!$Ny#7aqshh{sH~Un;xX#wj{~tXej*tp;!1TT zSC!vB{*)i6p>Ye-iF7>s*aB&E!Rd;xBsLpk*^r3rv*pz6LpqA>5h4aYhO37r5-~Ze z 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 GzW)VexO*u8 literal 0 HcmV?d00001 diff --git a/GGELUA/Release64/build.lua b/GGELUA/Release64/build.lua index aa59e75..25244b7 100644 --- a/GGELUA/Release64/build.lua +++ b/GGELUA/Release64/build.lua @@ -13,6 +13,7 @@ local runpath = getrunpath() local curpath = getcurpath()--arg[1] local luafolder = arg[2] or 'lua' local exetype = arg[3] or 'ggelua.exe' +local buildtype = arg[4] or 'win' print(runpath,curpath,luafolder,exetype) package.cpath = ("?.dll;lib/?.dll;!/?.dll;!/lib/?.dll"):gsub('!',runpath) local lfs = require("lfs") @@ -127,34 +128,46 @@ print('-------------------------------------------------------------') data = cmsgpack.pack(data) -复制文件(runpath.."/lua54.dll","lua54.dll") -复制文件(runpath.."/ggelua.dll","ggelua.dll") - -if not 复制文件(runpath.."/"..exetype,"ggelua.exe") then - error('写出失败!') -end ---print(string.packsize(" = io.open("ggelua.exe","r+b") -if file then - if file:seek('end',-12) then - local glue = file:read(12) - if glue and #glue==12 then - local sig,s1,s2 = string.unpack(" = io.open("ggelua.exe","r+b") + if file then + if file:seek('end',-12) then + local glue = file:read(12) + if glue and #glue==12 then + local sig,s1,s2 = string.unpack(" = io.open(exetype,"w+b") + if file then + file:write(core) + file:write(data) + file:write(string.pack(" = io.open(path,"rb") - if file then + local 读取文件,是否存在 + if gge.isdebug then + function 是否存在(path) + local file = io.open(path,"rb") + if file then return true + end end - end - function 读取文件(path) - local file = io.open(path,'rb'); - if file then + function 读取文件(path) + local file = io.open(path,'rb'); + if file then return file:read('a') + end end - end - function package.dir(path,...) - if select("#", ...)>0 then - path = path:format(...) - end - local lfs = require("lfs") - local dir,u = lfs.dir(path) - local pt = {} - return function () - repeat - local file = dir(u) - if file then - local f = path..'/'..file - local attr = lfs.attributes (f) - if attr and attr.mode == "directory" then - if file ~= "." and file ~= ".." then - table.insert(pt, f) + function package.dir(path,...) + if select("#", ...)>0 then + path = path:format(...) + end + local lfs = require("lfs") + local dir,u = lfs.dir(path) + local pt = {} + return function () + repeat + local file = dir(u) + if file then + local f = path..'/'..file + local attr = lfs.attributes (f) + if attr and attr.mode == "directory" then + if file ~= "." and file ~= ".." then + table.insert(pt, f) + end + file = "." + else + return f end + elseif pt[1] then + path = table.remove(pt, 1) + dir,u = lfs.dir(path) file = "." - else - return f end - elseif pt[1] then - path = table.remove(pt, 1) - dir,u = lfs.dir(path) - file = "." - end - until file ~= "." + until file ~= "." + end + end + else + function 是否存在(file) + return data[file]~=nil end - end -else - function 是否存在(file) - return data[file]~=nil - end - - function 读取文件(file) - return data[file] - end - function package.dir(path,...) - if select("#", ...)>0 then - path = path:format(...) + function 读取文件(file) + return data[file] end - local k,v - return function () - repeat - k,v = next(data, k) - if k and k:find(path) then - return k,v - end - until not k + + function package.dir(path,...) + if select("#", ...)>0 then + path = path:format(...) + end + local k,v + return function () + repeat + k,v = next(data, k) + if k and k:find(path) then + return k,v + end + until not k + end end end -end -local function 搜索路径(path) - for _,v in ipairs(lpath_) do - local file = v:gsub('?',path) - if 是否存在(file) then - return file + local function 搜索路径(path) + for _,v in ipairs(lpath_) do + local file = v:gsub('?',path) + if 是否存在(file) then + return file + end end end -end -table.insert(package.searchers, 1, function (path) - path = 处理路径(path) - path = 搜索路径(path) - if path then - local r,err = load(读取文件(path),path) - return r or error(err,2) - end -end) + table.insert(package.searchers, 1, function (path) + path = 处理路径(path) + path = 搜索路径(path) + if path then + local r,err = load(读取文件(path),path) + return r or error(err,2) + end + end) -function import(path,env,...) - path = path:gsub('\\','/'):lower() - local data = 读取文件(path) - if data then - return assert(load(data,path,"bt",env))(...) + function import(path,env,...) + path = path:gsub('\\','/'):lower() + local data = 读取文件(path) + if data then + return assert(load(data,path,"bt",env))(...) + end end + end require(entry) \ No newline at end of file diff --git a/GGELUA/Release64/lua.exe b/GGELUA/Release64/lua.exe index e2269c996ce74067175f01c50d9cdd9448f9f386..1a84c054b9565208f1cc34ff40cfe8d1bccd87bb 100644 GIT binary patch delta 56100 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

6yP2fBW|Z@Pv5!QbuJ#6hUA|fN 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%0Ah=j&1gZ+sUcAht`Uxb``^chT4C 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⪻-_|VbXSEreF+4Ii+0uf!~lg!w}i7NvAAFa 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 and c<=57 then return self._模式&self.数字模式==self.数字模式 elseif c>=65 and c<=90 then--大字字母 @@ -209,6 +215,7 @@ function GUI输入:_显示(...) self._选中精灵:显示(_x+self._显示偏移,_y) self._文本精灵:显示(_x+self._显示偏移,_y) 窗口:置区域() + if self._光标可见 then _x = _x+self._光标偏移 self._光标精灵:显示(_x,_y) @@ -297,6 +304,7 @@ function GUI输入:置数值(v) end function GUI输入:插入文本(str,p,光标) + if type(str)=='string' then --检查输入 local t = {} @@ -375,7 +383,7 @@ function GUI输入:置焦点(v) if self._输入焦点 ~= v then self._输入焦点 = v if v then - if _当前输入焦点 then + if _当前输入焦点 and _当前输入焦点 ~= self then _当前输入焦点:置焦点(false) end self._光标可见 = true @@ -386,6 +394,16 @@ function GUI输入:置焦点(v) self:取消选中() --self:_子消息事件('失去输入焦点') end + + local platform = SDL.GetPlatform() + if platform == 'Android' or platform == 'iOS' then + if v then + SDL.StartTextInput() + else + SDL.StopTextInput() + end + end + end return self end @@ -478,6 +496,8 @@ function GUI输入:_消息事件(msg) if v.clicks==2 then--双击全选 self:选中全部() end + else + self:置焦点(false) end end elseif v.type==SDL.鼠标_移动 then--拖选 diff --git a/GGELUA/Release64/lua/HPS/PullClient.lua b/GGELUA/Release64/lua/HPS/PullClient.lua new file mode 100644 index 0000000..54675c3 --- /dev/null +++ b/GGELUA/Release64/lua/HPS/PullClient.lua @@ -0,0 +1,133 @@ +-- @作者: baidwwy +-- @邮箱: 313738139@qq.com +-- @创建时间: 2015-11-13 10:12:10 +-- @最后修改来自: baidwwy +-- @Last Modified time: 2019-07-19 20:14:10 +--========================================================================================== + +local PushClient = package.loaded.PushClient or require("HPS/PushClient") +local PullClient = class("PullClient",PushClient) +PullClient._hp = false +PullClient._数据事件 = false +PullClient._准备事件 = false +PullClient._连接事件 = false +PullClient._发送事件 = false +PullClient._断开事件 = false +PullClient.数据事件 = false +PullClient.准备事件 = false +PullClient.连接事件 = false +PullClient.发送事件 = false +PullClient.断开事件 = false + +local hp_buffer = require "ghpsocket.buffer" + +function PullClient:PullClient() + self._hp = require "ghpsocket.pullclient"(self) + self._sendbuf = hp_buffer(14138, 1024 * 1024, 9527) + self._recbuf = hp_buffer(14138, 1024 * 1024, 9527) + local psd = {77,11,22,33,44,55,66,77,88,99,00,69} + self._sendbuf:SetCode(psd) + self._recbuf:SetCode(psd) +end + +function PullClient:连接(lpszRemoteAddress,usPort,bAsyncConnect,lpszBindAddress,usLocalPort)--地址,端口,异步 + self._info = { + ishead = true, + len = self._recbuf:GetHeaderLen() + } + return self._hp:Start(lpszRemoteAddress,usPort,bAsyncConnect,lpszBindAddress,usLocalPort) +end + +function PullClient:发送(...) + --添加数据 + self._sendbuf:Reset() + local arg = {...} + for i,v in ipairs(arg) do + if type(v) == 'number' then + self._sendbuf:AddNumber(v) + else + self._sendbuf:AddString(tostring(v)) + end + end + self._sendbuf:Finish() + + self._hp:Send(self._sendbuf) +end + +function PullClient:取连接ID() + return self._hp:GetConnectionID() +end + +--准备连接通知 +function PullClient:OnPrepareConnect(dwConnID,socket) + if self._准备事件 then + ggexpcall(self._准备事件,self,dwConnID,socket) + elseif self.准备事件 then + ggexpcall(self.准备事件,self,dwConnID,socket) + end + return 0 +end + +function PullClient:OnConnect(dwConnID) + if self._连接事件 then + ggexpcall(self._连接事件,self,dwConnID) + elseif self.连接事件 then + ggexpcall(self.连接事件,self,dwConnID) + end + return 0 +end + +--已发送数据通知 +function PullClient:OnSend(dwConnID,iLength) + if self._发送事件 then + ggexpcall(self._发送事件,self,dwConnID,iLength) + elseif self.发送事件 then + ggexpcall(self.发送事件,self,dwConnID,iLength) + end + return 1 +end + +function PullClient:OnReceivePull(dwConnID, iLength) + local required = self._info.len + local remain = iLength + while remain >= required do + remain = remain -required --剩余数据长度 + local FR_OK = self._hp:Fetch(self._recbuf,required) + if FR_OK == 0 then + if self._info.ishead then--是否是包头 + required = self._recbuf:CheckHeader() --获取包体长度 + if required == 0 then --非法数据 + self:断开() + break + end + else + if self.数据事件 then + ggexpcall(self.数据事件,self, dwConnID, unpack(self._recbuf:GetData())) + elseif self._数据事件 and self._数据事件 then + ggexpcall(self._数据事件, dwConnID, unpack(self._recbuf:GetData())) + end + required = self._recbuf:GetHeaderLen()--获取包头长度 + end + self._info.ishead = not self._info.ishead + self._info.len = required + else + break + end + end + return 0 +end + +function PullClient:OnReceivePack(dwConnID, Data) + print("PACK:",#Data) +end + +function PullClient:OnClose(dwConnID,enOperation,iErrorCode) + if self._断开事件 then + ggexpcall(self._断开事件 ,self ,dwConnID,enOperation ,iErrorCode) + elseif self.断开事件 then + ggexpcall(self.断开事件 ,self ,dwConnID,enOperation ,iErrorCode) + end + return 0 +end + +return PullClient \ No newline at end of file diff --git a/GGELUA/Release64/lua/LIB/MONGO.lua b/GGELUA/Release64/lua/LIB/MONGO.lua new file mode 100644 index 0000000..98d502a --- /dev/null +++ b/GGELUA/Release64/lua/LIB/MONGO.lua @@ -0,0 +1,170 @@ +--[[ + @Author : GGELUA + @Date : 2021-02-25 13:34:40 + @LastEditTime : 2021-02-28 10:02:24 +--]] + +local MG集合 = class('MG集合') + +function MG集合:MG集合(col) + self._col = col +end + +function MG集合:统计(query,options,prefs) + return assert(self._col:count(query,options,prefs)) +end + +function MG集合:清空(opt) + return self._col:drop(opt) +end + +function MG集合:查找(query,options,prefs) + local t = {} + for v in self._col:find(query,options,prefs):iterator() do + table.insert( t,v ) + end + return t +end + +function MG集合:遍历(query,options,prefs) + return self._col:find(query,options,prefs):iterator() +end + +function MG集合:查找一条(query,options,prefs) + return assert(self._col:findOne(query, options,prefs)) +end + +function MG集合:插入(document,fao) + if type(fao)=='number' then + return assert(self._col:insert(document,fao)) + end + return assert(self._col:insertOne(document,fao)) +end +--TODO insertMany + +function MG集合:删除(query,flags) + return assert(self._col:remove(query,flags)) +end + +function MG集合:删除全部(query,options) + return assert(self._col:removeMany(query,options)) +end + +function MG集合:删除一条(query,options) + return assert(self._col:removeOne(query,options)) +end + +function MG集合:重命名(dbname, collname, force, options) + return self._col:rename(query,flags) +end + +function MG集合:替换(query, document, options) + return assert(self._col:replaceOne(query, document, options)) +end + +function MG集合:更新(query, document, flags) + return assert(self._col:update(query, document, flags)) +end + +function MG集合:更新全部(query, document, options) + return assert(self._col:updateMany(query, document, options)) +end + +function MG集合:更新一条(query, document, options) + return assert(self._col:updateOne(query, document, options)) +end + +function MG集合:取名称(query,options) + return self._col:getName() +end + +--TODO aggregate +--TODO createBulkOperation +--TODO findAndModify +--TODO getReadPrefs +--TODO setReadPrefs +local MG数据库 = class('MG数据库') + +function MG数据库:MG数据库(db) + self._db = db +end + +function MG数据库:创建集合(name,opt) + return MG集合(assert(self._db:createCollection(name,opt))) +end + +function MG数据库:取集合(name) + return MG集合(assert(self._db:getCollection(name))) +end + +function MG数据库:检查集合(name) + return self._db:hasCollection(name) +end + +function MG数据库:清空(opt) + return assert(self._db:drop(opt)) +end + +function MG数据库:取集合列表(opt) + return assert(self._db:getCollectionNames(opt)) +end + +function MG数据库:取名称() + return self._db:getName() +end +--TODO getReadPrefs setReadPrefs + + +local mongodb = require("mongo") + +local MONGO = class('MONGO') + +MONGO.Binary = mongodb.Binary +MONGO.BSON = mongodb.BSON +MONGO.DateTime = mongodb.DateTime +MONGO.Decimal128 = mongodb.Decimal128 +MONGO.Double = mongodb.Double +MONGO.Int32 = mongodb.Int32 +MONGO.Int64 = mongodb.Int64 +MONGO.Javascript = mongodb.Javascript +MONGO.ObjectID = mongodb.ObjectID +MONGO.ReadPrefs = mongodb.ReadPrefs +MONGO.Regex = mongodb.Regex +MONGO.Timestamp = mongodb.Timestamp + +function MONGO:初始化(host, port, user, password) + local uri = host + if user then + uri = string.format("mongodb://%s:%s@%s:%s", user, password, host, port) + elseif port then + uri = string.format("mongodb://%s:%s", host, port) + end + self._clt = assert(mongodb.Client(uri)) +end + +function MONGO:取数据库列表(options) + return assert(self._clt:getDatabaseNames(options)) +end + +function MONGO:取默认数据库() + return assert(self._clt:getDefaultDatabase()) +end + +function MONGO:取数据库(dbname) + local db = assert(self._clt:getDatabase(dbname)) + return MG数据库(db) +end + +function MONGO:取集合(dbname,colname) + local col = assert(self._clt:getCollection(dbname,colname)) + return MG集合(col) +end + +function MONGO:命令(dbname,command,options,prefs) + return self._clt:command(dbname,command,options,prefs) +end + +--TODO: getGridFS +--TODO: getReadPrefs +--TODO: setReadPrefs +return MONGO \ No newline at end of file diff --git "a/GGELUA/Release64/lua/LUA/GGE\345\260\201\345\214\205.lua" "b/GGELUA/Release64/lua/LUA/GGE\345\260\201\345\214\205.lua" new file mode 100644 index 0000000..3b3ed7b --- /dev/null +++ "b/GGELUA/Release64/lua/LUA/GGE\345\260\201\345\214\205.lua" @@ -0,0 +1,86 @@ +-- GGELUA +-- @Author: baidwwy +-- @Date: 2020-04-03 03:47:33 +-- @Last Modified by: baidwwy +-- @Last Modified time: 2020-08-05 10:08:21 +local mp_pack = require "cmsgpack".pack +local mp_unpack = require "cmsgpack".unpack + +local function _en(nt,t) + local r = {} + for i,k in ipairs(nt) do + if type(k) == 'table' then + r[i] = _en(k,t[k.名称] or t) + elseif type(k) == 'function' then + r[i] = k(t) + else + r[i] = t[k] + end + end + return r +end + +local function _de(nt,t) + local r = t + for i,v in ipairs(nt) do + if t[i]~=nil then + if type(v) == 'table' then + r[v.名称] = _de(v,t[i]) + elseif type(v)=='function' then + local vk,vv = v(t[i]) + r[vk] = vv + else + r[v] = t[i] + end + end + end + return r +end + +local meta = {__index={ + 打包 = function (self,t) + assert(type(t)=='table', 'table') + local r = _en(self,t) + return mp_pack(r) + end, + 解包 = function (self,d) + assert(type(d)=='string', 'string') + local t = mp_unpack(d) + return _de(self,t) + end, + 打包列表 = function (self,t) + assert(type(t)=='table', 'table') + local r = {} + for k,v in pairs(t) do + r[k] = _en(self,v) + end + return mp_pack(r) + end, + 解包列表 = function (self,d) + assert(type(d)=='string', 'string') + local t = mp_unpack(d) + local r = {} + for k,v in pairs(t) do + r[k] = _de(self,v) + end + return r + end, +}} + +return function (t) + assert(type(t)=='table', 'table') + for _,v in pairs(t) do + assert(type(v)=='table', 'table') + setmetatable(v, meta) + end + return t +end +--[[ + local r = require"GGE封包"{ + 登录属性 = {'气血','最大气血','上限气血','魔法','最大魔法','经验','升级经验','愤怒','最大愤怒', + '名称','x','y','地图','方向','原形','外形','染色','称谓','性别','头像', + '武器','rid','名称颜色','快捷键','GM'}; + } + local pack = r.登录属性:打包(对象) + local data = r.登录属性:解包(pack) +]] \ No newline at end of file diff --git a/GGELUA/Release64/lua/SDL/SDL.lua b/GGELUA/Release64/lua/SDL/SDL.lua index 9eaba67..74ab791 100644 --- a/GGELUA/Release64/lua/SDL/SDL.lua +++ b/GGELUA/Release64/lua/SDL/SDL.lua @@ -717,6 +717,10 @@ function main() local t = GetEvent(e) local win = _wins[t.windowID] if win then + if t.type==0x400 or t.type==0x401 or t.type==0x402 or t.type==0x403 then--鼠标事件 + t.x = t.x / win.scale + t.y = t.y / win.scale + end win:_Event(e,t) if win:_Event(t.type,unpack(t)) then return true diff --git "a/GGELUA/Release64/lua/SDL/\345\233\276\345\203\217.lua" "b/GGELUA/Release64/lua/SDL/\345\233\276\345\203\217.lua" index af17aa8..f5861f1 100644 --- "a/GGELUA/Release64/lua/SDL/\345\233\276\345\203\217.lua" +++ "b/GGELUA/Release64/lua/SDL/\345\233\276\345\203\217.lua" @@ -25,6 +25,8 @@ function SDL图像:SDL图像(a,b,c,d) end elseif ggetype(a) == 'SDL_Surface' then self._sf = a + elseif ggetype(a) == 'SDL_RWops' then + self._sf = assert(IMG.LoadARGB8888_RW(a), GetError(),2) -- elseif ggetype(a) == 'SDL_PixelFormat' then end if self._sf then diff --git "a/GGELUA/Release64/lua/SDL/\346\226\207\345\255\227.lua" "b/GGELUA/Release64/lua/SDL/\346\226\207\345\255\227.lua" index 5832753..5499865 100644 --- "a/GGELUA/Release64/lua/SDL/\346\226\207\345\255\227.lua" +++ "b/GGELUA/Release64/lua/SDL/\346\226\207\345\255\227.lua" @@ -14,10 +14,18 @@ function SDL文字:SDL文字(file,size,aliasing,w) self._anti = aliasing ~=false --抗锯齿 self._w = w --折行宽度 self._size = size or 14 - if GetPlatform()=='Windows' then - local rp = os.getenv("SystemRoot")..'/Fonts/' - self._font = assert(TTF.OpenFontIndex(file and rp..file or rp..'simsun.ttc', self._size), GetError(),2) - end + + --Windows Mac OS X Linux iOS Android + -- local platform = GetPlatform() + -- if platform =='Windows' then + -- local rp = os.getenv("SystemRoot")..'/Fonts/' + -- self._font = assert(TTF.OpenFontIndex(file and rp..file or rp..'simsun.ttc', self._size), GetError(),2) + -- elseif platform == 'Android' then + -- self._font = assert(TTF.OpenFontIndex(file or 'simsun.ttc', self._size), GetError(),2) + -- end + + self._font = assert(TTF.OpenFontIndex(file or 'simsun.ttc', self._size), GetError(),2) + if self._font then _ttfs[self] = self._font self:置颜色(255,255,255) @@ -149,11 +157,15 @@ function SDL文字:取标志() end function SDL文字:置颜色(r,g,b,a) - self._t = nil - self._a = a - self._r = r - self._g = g - self._b = b + + if self._r ~= r or self._g ~= g or self._b ~= b or self._a ~= a then + self._t = nil + self._a = a + self._r = r + self._g = g + self._b = b + end + return self end diff --git "a/GGELUA/Release64/lua/SDL/\346\270\262\346\237\223.lua" "b/GGELUA/Release64/lua/SDL/\346\270\262\346\237\223.lua" index 3f07d04..3eb4942 100644 --- "a/GGELUA/Release64/lua/SDL/\346\270\262\346\237\223.lua" +++ "b/GGELUA/Release64/lua/SDL/\346\270\262\346\237\223.lua" @@ -98,8 +98,9 @@ end function SDL渲染:渲染结束() if self._rd then if self._tg then - self._tg = nil self._rd:SetRenderTarget() + self._rd:RenderCopy(self._tg:取对象()); + self._tg = nil end self._rd:RenderPresent() else diff --git "a/GGELUA/Release64/lua/SDL/\347\252\227\345\217\243.lua" "b/GGELUA/Release64/lua/SDL/\347\252\227\345\217\243.lua" index 9fbcd54..766a230 100644 --- "a/GGELUA/Release64/lua/SDL/\347\252\227\345\217\243.lua" +++ "b/GGELUA/Release64/lua/SDL/\347\252\227\345\217\243.lua" @@ -10,6 +10,32 @@ local SDL = require("SDL") local SDL窗口 = class('SDL窗口',"SDL渲染") +--移动平台设置设计分辨率 +function set_design_resolution_size(win_w, win_h) + local mode = SDL.GetCurrentDisplayMode(0) + if nil == mode then + print("获取窗口模式失败") + return + end + + --计算缩放比 + local rate = mode.w / mode.h + local drate = win_w / win_h + + local scale = 1 + + if rate > drate then + win_w = math.floor(win_h * mode.w / mode.h) + scale = drate + else + win_h = math.floor(win_w * mode.h / mode.w) + scale = rate + end + + return win_w, win_h, scale +end + + function SDL窗口:SDL窗口(t) for k,v in pairs(t) do if not self[k] then @@ -17,16 +43,24 @@ function SDL窗口:SDL窗口(t) end end + --Windows Mac OS X Linux iOS Android + local platform = SDL.GetPlatform() + if platform == 'Android' or platform == 'iOS' then + t.全屏 = true + t.宽度, t.高度, t.scale = set_design_resolution_size(t.宽度, t.高度) + end + self.标题 = t.标题 or "GGELUA Game Engine" self.原始标题 = self.标题 self.宽度 = t.宽度 or 800 self.高度 = t.高度 or 600 self.帧率 = t.帧率 or 60 self.是否全屏 = t.全屏 - self.宽度2 = self.宽度//2 - self.高度2 = self.高度//2 + self.宽度2 = self.宽度/2 + self.高度2 = self.高度/2 self.x = 0 self.y = 0 + self.scale = t.scale or 1 --SetHint('SDL_RENDER_DRIVER',"opengl") --SetHint("SDL_RENDER_DIRECT3D_THREADSAFE","1")--线程安全 diff --git "a/GGELUA/Release64/lua/SDL/\347\272\271\347\220\206.lua" "b/GGELUA/Release64/lua/SDL/\347\272\271\347\220\206.lua" index 9c56aa5..52bd908 100644 --- "a/GGELUA/Release64/lua/SDL/\347\272\271\347\220\206.lua" +++ "b/GGELUA/Release64/lua/SDL/\347\272\271\347\220\206.lua" @@ -24,6 +24,8 @@ local function _载入纹理(rd,a,b,c,d,e) return assert(rd:CreateTextureFromSurface(a,b or TEXTUREACCESS_STREAMING), GetError(),2) elseif ggetype(a) == 'SDL图像' and a:取对象() then return assert(rd:CreateTextureFromSurface(a:取对象(),b or TEXTUREACCESS_STREAMING), GetError(),2) + elseif ggetype(a) == 'SDL_RWops' then + return assert(rd:LoadTexture_RW(a, c or TEXTUREACCESS_STREAMING), GetError(),2) elseif a~= nil then error('未知模式',3) end diff --git a/GGELUA/Release64/main.lua b/GGELUA/Release64/main.lua index f795f5a..a23770f 100644 --- a/GGELUA/Release64/main.lua +++ b/GGELUA/Release64/main.lua @@ -3,26 +3,27 @@ @Date : 2021-02-08 15:51:24 @LastEditTime : 2021-03-19 07:58:00 --]] + require("GGE") local SDL = require("SDL") 引擎 = require"SDL.窗口"{ 标题 = _VERSION.."|".._GGEVERSION, - 宽度 = 800, - 高度 = 600, + 宽度 = 1136, + 高度 = 640, 帧率 = 60, } -jpg = require("SDL.精灵")("实例/测试/test.jpg") -bmp = require("SDL.精灵")("实例/测试/test.bmp") -png = require("SDL.精灵")("实例/测试/test.png") -print(jpg) -print(bmp) -print(png) +--jpg = require("SDL.精灵")("实例/测试/test.jpg") +--bmp = require("SDL.精灵")("实例/测试/test.bmp") +--png = require("SDL.精灵")("实例/测试/test.png") +--print(jpg) +--print(bmp) +--print(png) function 引擎:启动事件(webp1,webp2) local base64 = require("base64") local data = base64.decode(webp1) spr1 = require("SDL.纹理")(data,#data):到精灵():置过滤(1) - local data = base64.decode(webp2) + data = base64.decode(webp2) spr2 = require("SDL.纹理")(data,#data):到精灵() end local 度数 = 0 @@ -34,10 +35,17 @@ function 引擎:更新事件(dt,x,y) spr1:置旋转(度数,310,317) end +--==================屏幕自适应===================-- +SDL.Log(string.format("w:%d, h:%d", 引擎.宽度, 引擎.高度)) +local tg = 引擎:创建纹理(引擎.宽度, 引擎.高度) +local pos = require("GGE.坐标")((引擎.宽度 - 600) / 2, (引擎.高度 - 600) / 2):floor() +--==================屏幕自适应==================-- + function 引擎:渲染事件(dt,x,y) + self:置渲染区(tg) self:渲染清除(255,255,255) - spr1:显示(100,0) - spr2:显示(100,0) + spr1:显示(pos.x,pos.y) + spr2:显示(pos.x,pos.y) self:渲染结束() end diff --git a/dependent/fmod/api/inc/fmod.h b/dependent/fmod/api/inc/fmod.h new file mode 100644 index 0000000..1e5b492 --- /dev/null +++ b/dependent/fmod/api/inc/fmod.h @@ -0,0 +1,2473 @@ + +/* ============================================================================================ */ +/* FMOD Ex - Main C/C++ header file. Copyright (c), Firelight Technologies Pty, Ltd. 2004-2016. */ +/* */ +/* This header is the base header for all other FMOD headers. If you are programming in C */ +/* use this exclusively, or if you are programming C++ use this in conjunction with FMOD.HPP */ +/* */ +/* ============================================================================================ */ + +#ifndef _FMOD_H +#define _FMOD_H + +/* + FMOD version number. Check this against FMOD::System::getVersion. + 0xaaaabbcc -> aaaa = major version number. bb = minor version number. cc = development version number. +*/ + +#define FMOD_VERSION 0x00044461 + +/* + Compiler specific settings. +*/ + +#if defined(__CYGWIN32__) + #define F_CDECL __cdecl + #define F_STDCALL __stdcall + #define F_DECLSPEC __declspec + #define F_DLLEXPORT ( dllexport ) +#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(_WIN64) + #define F_CDECL _cdecl + #define F_STDCALL _stdcall + #define F_DECLSPEC __declspec + #define F_DLLEXPORT ( dllexport ) +#elif defined(__MACH__) || defined(__ANDROID__) || defined(__linux__) || defined(__QNX__) + #define F_CDECL + #define F_STDCALL + #define F_DECLSPEC + #define F_DLLEXPORT __attribute__ ((visibility("default"))) +#else + #define F_CDECL + #define F_STDCALL + #define F_DECLSPEC + #define F_DLLEXPORT +#endif + +#ifdef DLL_EXPORTS + #if defined(__MACH__) || defined(__ANDROID__) || defined(__linux__) || defined(__QNX__) + #define F_API __attribute__ ((visibility("default"))) + #else + #define F_API __declspec(dllexport) F_STDCALL + #endif +#else + #define F_API F_STDCALL +#endif + +#define F_CALLBACK F_STDCALL + +/* + FMOD types. +*/ + +typedef int FMOD_BOOL; +typedef struct FMOD_SYSTEM FMOD_SYSTEM; +typedef struct FMOD_SOUND FMOD_SOUND; +typedef struct FMOD_CHANNEL FMOD_CHANNEL; +typedef struct FMOD_CHANNELGROUP FMOD_CHANNELGROUP; +typedef struct FMOD_SOUNDGROUP FMOD_SOUNDGROUP; +typedef struct FMOD_REVERB FMOD_REVERB; +typedef struct FMOD_DSP FMOD_DSP; +typedef struct FMOD_DSPCONNECTION FMOD_DSPCONNECTION; +typedef struct FMOD_POLYGON FMOD_POLYGON; +typedef struct FMOD_GEOMETRY FMOD_GEOMETRY; +typedef struct FMOD_SYNCPOINT FMOD_SYNCPOINT; +typedef struct FMOD_ASYNCREADINFO FMOD_ASYNCREADINFO; +typedef unsigned int FMOD_MODE; +typedef unsigned int FMOD_TIMEUNIT; +typedef unsigned int FMOD_INITFLAGS; +typedef unsigned int FMOD_CAPS; +typedef unsigned int FMOD_DEBUGLEVEL; +typedef unsigned int FMOD_MEMORY_TYPE; + +/* +[ENUM] +[ + [DESCRIPTION] + error codes. Returned from every function. + + [REMARKS] + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] +] +*/ +typedef enum +{ + FMOD_OK, /* No errors. */ + FMOD_ERR_ALREADYLOCKED, /* Tried to call lock a second time before unlock was called. */ + FMOD_ERR_BADCOMMAND, /* Tried to call a function on a data type that does not allow this type of functionality (ie calling Sound::lock on a streaming sound). */ + FMOD_ERR_CDDA_DRIVERS, /* Neither NTSCSI nor ASPI could be initialised. */ + FMOD_ERR_CDDA_INIT, /* An error occurred while initialising the CDDA subsystem. */ + FMOD_ERR_CDDA_INVALID_DEVICE, /* Couldn't find the specified device. */ + FMOD_ERR_CDDA_NOAUDIO, /* No audio tracks on the specified disc. */ + FMOD_ERR_CDDA_NODEVICES, /* No CD/DVD devices were found. */ + FMOD_ERR_CDDA_NODISC, /* No disc present in the specified drive. */ + FMOD_ERR_CDDA_READ, /* A CDDA read error occurred. */ + FMOD_ERR_CHANNEL_ALLOC, /* Error trying to allocate a channel. */ + FMOD_ERR_CHANNEL_STOLEN, /* The specified channel has been reused to play another sound. */ + FMOD_ERR_COM, /* A Win32 COM related error occured. COM failed to initialize or a QueryInterface failed meaning a Windows codec or driver was not installed properly. */ + FMOD_ERR_DMA, /* DMA Failure. See debug output for more information. */ + FMOD_ERR_DSP_CONNECTION, /* DSP connection error. Connection possibly caused a cyclic dependancy. Or tried to connect a tree too many units deep (more than 128). */ + FMOD_ERR_DSP_FORMAT, /* DSP Format error. A DSP unit may have attempted to connect to this network with the wrong format. */ + FMOD_ERR_DSP_NOTFOUND, /* DSP connection error. Couldn't find the DSP unit specified. */ + FMOD_ERR_DSP_RUNNING, /* DSP error. Cannot perform this operation while the network is in the middle of running. This will most likely happen if a connection or disconnection is attempted in a DSP callback. */ + FMOD_ERR_DSP_TOOMANYCONNECTIONS,/* DSP connection error. The unit being connected to or disconnected should only have 1 input or output. */ + FMOD_ERR_FILE_BAD, /* Error loading file. */ + FMOD_ERR_FILE_COULDNOTSEEK, /* Couldn't perform seek operation. This is a limitation of the medium (ie netstreams) or the file format. */ + FMOD_ERR_FILE_DISKEJECTED, /* Media was ejected while reading. */ + FMOD_ERR_FILE_EOF, /* End of file unexpectedly reached while trying to read essential data (truncated data?). */ + FMOD_ERR_FILE_NOTFOUND, /* File not found. */ + FMOD_ERR_FILE_UNWANTED, /* Unwanted file access occured. */ + FMOD_ERR_FORMAT, /* Unsupported file or audio format. */ + FMOD_ERR_HTTP, /* A HTTP error occurred. This is a catch-all for HTTP errors not listed elsewhere. */ + FMOD_ERR_HTTP_ACCESS, /* The specified resource requires authentication or is forbidden. */ + FMOD_ERR_HTTP_PROXY_AUTH, /* Proxy authentication is required to access the specified resource. */ + FMOD_ERR_HTTP_SERVER_ERROR, /* A HTTP server error occurred. */ + FMOD_ERR_HTTP_TIMEOUT, /* The HTTP request timed out. */ + FMOD_ERR_INITIALIZATION, /* FMOD was not initialized correctly to support this function. */ + FMOD_ERR_INITIALIZED, /* Cannot call this command after System::init. */ + FMOD_ERR_INTERNAL, /* An error occured that wasn't supposed to. Contact support. */ + FMOD_ERR_INVALID_ADDRESS, /* On Xbox 360, this memory address passed to FMOD must be physical, (ie allocated with XPhysicalAlloc.) */ + FMOD_ERR_INVALID_FLOAT, /* Value passed in was a NaN, Inf or denormalized float. */ + FMOD_ERR_INVALID_HANDLE, /* An invalid object handle was used. */ + FMOD_ERR_INVALID_PARAM, /* An invalid parameter was passed to this function. */ + FMOD_ERR_INVALID_POSITION, /* An invalid seek position was passed to this function. */ + FMOD_ERR_INVALID_SPEAKER, /* An invalid speaker was passed to this function based on the current speaker mode. */ + FMOD_ERR_INVALID_SYNCPOINT, /* The syncpoint did not come from this sound handle. */ + FMOD_ERR_INVALID_VECTOR, /* The vectors passed in are not unit length, or perpendicular. */ + FMOD_ERR_MAXAUDIBLE, /* Reached maximum audible playback count for this sound's soundgroup. */ + FMOD_ERR_MEMORY, /* Not enough memory or resources. */ + FMOD_ERR_MEMORY_CANTPOINT, /* Can't use FMOD_OPENMEMORY_POINT on non PCM source data, or non mp3/xma/adpcm data if FMOD_CREATECOMPRESSEDSAMPLE was used. */ + FMOD_ERR_MEMORY_SRAM, /* Not enough memory or resources on console sound ram. */ + FMOD_ERR_NEEDS2D, /* Tried to call a command on a 3d sound when the command was meant for 2d sound. */ + FMOD_ERR_NEEDS3D, /* Tried to call a command on a 2d sound when the command was meant for 3d sound. */ + FMOD_ERR_NEEDSHARDWARE, /* Tried to use a feature that requires hardware support. (ie trying to play a GCADPCM compressed sound in software on Wii). */ + FMOD_ERR_NEEDSSOFTWARE, /* Tried to use a feature that requires the software engine. Software engine has either been turned off, or command was executed on a hardware channel which does not support this feature. */ + FMOD_ERR_NET_CONNECT, /* Couldn't connect to the specified host. */ + FMOD_ERR_NET_SOCKET_ERROR, /* A socket error occurred. This is a catch-all for socket-related errors not listed elsewhere. */ + FMOD_ERR_NET_URL, /* The specified URL couldn't be resolved. */ + FMOD_ERR_NET_WOULD_BLOCK, /* Operation on a non-blocking socket could not complete immediately. */ + FMOD_ERR_NOTREADY, /* Operation could not be performed because specified sound/DSP connection is not ready. */ + FMOD_ERR_OUTPUT_ALLOCATED, /* Error initializing output device, but more specifically, the output device is already in use and cannot be reused. */ + FMOD_ERR_OUTPUT_CREATEBUFFER, /* Error creating hardware sound buffer. */ + FMOD_ERR_OUTPUT_DRIVERCALL, /* A call to a standard soundcard driver failed, which could possibly mean a bug in the driver or resources were missing or exhausted. */ + FMOD_ERR_OUTPUT_ENUMERATION, /* Error enumerating the available driver list. List may be inconsistent due to a recent device addition or removal. */ + FMOD_ERR_OUTPUT_FORMAT, /* Soundcard does not support the minimum features needed for this soundsystem (16bit stereo output). */ + FMOD_ERR_OUTPUT_INIT, /* Error initializing output device. */ + FMOD_ERR_OUTPUT_NOHARDWARE, /* FMOD_HARDWARE was specified but the sound card does not have the resources necessary to play it. */ + FMOD_ERR_OUTPUT_NOSOFTWARE, /* Attempted to create a software sound but no software channels were specified in System::init. */ + FMOD_ERR_PAN, /* Panning only works with mono or stereo sound sources. */ + FMOD_ERR_PLUGIN, /* An unspecified error has been returned from a 3rd party plugin. */ + FMOD_ERR_PLUGIN_INSTANCES, /* The number of allowed instances of a plugin has been exceeded. */ + FMOD_ERR_PLUGIN_MISSING, /* A requested output, dsp unit type or codec was not available. */ + FMOD_ERR_PLUGIN_RESOURCE, /* A resource that the plugin requires cannot be found. (ie the DLS file for MIDI playback or other DLLs that it needs to load) */ + FMOD_ERR_PRELOADED, /* The specified sound is still in use by the event system, call EventSystem::unloadFSB before trying to release it. */ + FMOD_ERR_PROGRAMMERSOUND, /* The specified sound is still in use by the event system, wait for the event which is using it finish with it. */ + FMOD_ERR_RECORD, /* An error occured trying to initialize the recording device. */ + FMOD_ERR_REVERB_INSTANCE, /* Specified instance in FMOD_REVERB_PROPERTIES couldn't be set. Most likely because it is an invalid instance number or the reverb doesnt exist. */ + FMOD_ERR_SUBSOUND_ALLOCATED, /* This subsound is already being used by another sound, you cannot have more than one parent to a sound. Null out the other parent's entry first. */ + FMOD_ERR_SUBSOUND_CANTMOVE, /* Shared subsounds cannot be replaced or moved from their parent stream, such as when the parent stream is an FSB file. */ + FMOD_ERR_SUBSOUND_MODE, /* The subsound's mode bits do not match with the parent sound's mode bits. See documentation for function that it was called with. */ + FMOD_ERR_SUBSOUNDS, /* The error occured because the sound referenced contains subsounds when it shouldn't have, or it doesn't contain subsounds when it should have. The operation may also not be able to be performed on a parent sound, or a parent sound was played without setting up a sentence first. */ + FMOD_ERR_TAGNOTFOUND, /* The specified tag could not be found or there are no tags. */ + FMOD_ERR_TOOMANYCHANNELS, /* The sound created exceeds the allowable input channel count. This can be increased using the maxinputchannels parameter in System::setSoftwareFormat. */ + FMOD_ERR_UNIMPLEMENTED, /* Something in FMOD hasn't been implemented when it should be! contact support! */ + FMOD_ERR_UNINITIALIZED, /* This command failed because System::init or System::setDriver was not called. */ + FMOD_ERR_UNSUPPORTED, /* A command issued was not supported by this object. Possibly a plugin without certain callbacks specified. */ + FMOD_ERR_UPDATE, /* An error caused by System::update occured. */ + FMOD_ERR_VERSION, /* The version number of this file format is not supported. */ + + FMOD_ERR_EVENT_FAILED, /* An Event failed to be retrieved, most likely due to 'just fail' being specified as the max playbacks behavior. */ + FMOD_ERR_EVENT_INFOONLY, /* Can't execute this command on an EVENT_INFOONLY event. */ + FMOD_ERR_EVENT_INTERNAL, /* An error occured that wasn't supposed to. See debug log for reason. */ + FMOD_ERR_EVENT_MAXSTREAMS, /* Event failed because 'Max streams' was hit when FMOD_EVENT_INIT_FAIL_ON_MAXSTREAMS was specified. */ + FMOD_ERR_EVENT_MISMATCH, /* FSB mismatches the FEV it was compiled with, the stream/sample mode it was meant to be created with was different, or the FEV was built for a different platform. */ + FMOD_ERR_EVENT_NAMECONFLICT, /* A category with the same name already exists. */ + FMOD_ERR_EVENT_NOTFOUND, /* The requested event, event group, event category or event property could not be found. */ + FMOD_ERR_EVENT_NEEDSSIMPLE, /* Tried to call a function on a complex event that's only supported by simple events. */ + FMOD_ERR_EVENT_GUIDCONFLICT, /* An event with the same GUID already exists. */ + FMOD_ERR_EVENT_ALREADY_LOADED, /* The specified project or bank has already been loaded. Having multiple copies of the same project loaded simultaneously is forbidden. */ + + FMOD_ERR_MUSIC_UNINITIALIZED, /* Music system is not initialized probably because no music data is loaded. */ + FMOD_ERR_MUSIC_NOTFOUND, /* The requested music entity could not be found. */ + FMOD_ERR_MUSIC_NOCALLBACK, /* The music callback is required, but it has not been set. */ + + FMOD_RESULT_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ +} FMOD_RESULT; + + +/* +[STRUCTURE] +[ + [DESCRIPTION] + Structure describing a point in 3D space. + + [REMARKS] + FMOD uses a left handed co-ordinate system by default. + To use a right handed co-ordinate system specify FMOD_INIT_3D_RIGHTHANDED from FMOD_INITFLAGS in System::init. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + System::set3DListenerAttributes + System::get3DListenerAttributes + Channel::set3DAttributes + Channel::get3DAttributes + Channel::set3DCustomRolloff + Channel::get3DCustomRolloff + Sound::set3DCustomRolloff + Sound::get3DCustomRolloff + Geometry::addPolygon + Geometry::setPolygonVertex + Geometry::getPolygonVertex + Geometry::setRotation + Geometry::getRotation + Geometry::setPosition + Geometry::getPosition + Geometry::setScale + Geometry::getScale + FMOD_INITFLAGS +] +*/ +typedef struct +{ + float x; /* X co-ordinate in 3D space. */ + float y; /* Y co-ordinate in 3D space. */ + float z; /* Z co-ordinate in 3D space. */ +} FMOD_VECTOR; + +/* +[STRUCTURE] +[ + [DESCRIPTION] + Structure describing a globally unique identifier. + + [REMARKS] + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + System::getDriverInfo +] +*/ +typedef struct +{ + unsigned int Data1; /* Specifies the first 8 hexadecimal digits of the GUID */ + unsigned short Data2; /* Specifies the first group of 4 hexadecimal digits. */ + unsigned short Data3; /* Specifies the second group of 4 hexadecimal digits. */ + unsigned char Data4[8]; /* Array of 8 bytes. The first 2 bytes contain the third group of 4 hexadecimal digits. The remaining 6 bytes contain the final 12 hexadecimal digits. */ +} FMOD_GUID; + +/* +[STRUCTURE] +[ + [DESCRIPTION] + Structure that is passed into FMOD_FILE_ASYNCREADCALLBACK. Use the information in this structure to perform + + [REMARKS] + Members marked with [r] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value. + Members marked with [w] mean the variable can be written to. The user can set the value. + + Instructions: write to 'buffer', and 'bytesread' BEFORE setting 'result'. + As soon as result is set, FMOD will asynchronously continue internally using the data provided in this structure. + + Set 'result' to the result expected from a normal file read callback. + If the read was successful, set it to FMOD_OK. + If it read some data but hit the end of the file, set it to FMOD_ERR_FILE_EOF. + If a bad error occurred, return FMOD_ERR_FILE_BAD + If a disk was ejected, return FMOD_ERR_FILE_DISKEJECTED. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + FMOD_FILE_ASYNCREADCALLBACK + FMOD_FILE_ASYNCCANCELCALLBACK +] +*/ +struct FMOD_ASYNCREADINFO +{ + void *handle; /* [r] The file handle that was filled out in the open callback. */ + unsigned int offset; /* [r] Seek position, make sure you read from this file offset. */ + unsigned int sizebytes; /* [r] how many bytes requested for read. */ + int priority; /* [r] 0 = low importance. 100 = extremely important (ie 'must read now or stuttering may occur') */ + + void *buffer; /* [w] Buffer to read file data into. */ + unsigned int bytesread; /* [w] Fill this in before setting result code to tell FMOD how many bytes were read. */ + FMOD_RESULT result; /* [r/w] Result code, FMOD_OK tells the system it is ready to consume the data. Set this last! Default value = FMOD_ERR_NOTREADY. */ + + void *userdata; /* [r] User data pointer. */ + + const void (*done)(FMOD_ASYNCREADINFO *info, FMOD_RESULT result); /* FMOD file system wake up function. Use instead of 'result' with FMOD_INIT_ASYNCREAD_FAST to get semaphore based performance improvement. Call this when user file read is finished. Pass result of file read as a parameter. */ +}; + + +/* +[ENUM] +[ + [DESCRIPTION] + These output types are used with System::setOutput / System::getOutput, to choose which output method to use. + + [REMARKS] + To pass information to the driver when initializing fmod use the extradriverdata parameter in System::init for the following reasons. + - FMOD_OUTPUTTYPE_WAVWRITER - extradriverdata is a pointer to a char * filename that the wav writer will output to. + - FMOD_OUTPUTTYPE_WAVWRITER_NRT - extradriverdata is a pointer to a char * filename that the wav writer will output to. + - FMOD_OUTPUTTYPE_DSOUND - extradriverdata is a pointer to a HWND so that FMOD can set the focus on the audio for a particular window. + - FMOD_OUTPUTTYPE_PS3 - extradriverdata is a pointer to a FMOD_PS3_EXTRADRIVERDATA struct. This can be found in fmodps3.h. + - FMOD_OUTPUTTYPE_GC - extradriverdata is a pointer to a FMOD_GC_INFO struct. This can be found in fmodgc.h. + - FMOD_OUTPUTTYPE_WII - extradriverdata is a pointer to a FMOD_WII_INFO struct. This can be found in fmodwii.h. + - FMOD_OUTPUTTYPE_ALSA - extradriverdata is a pointer to a FMOD_LINUX_EXTRADRIVERDATA struct. This can be found in fmodlinux.h. + - FMOD_OUTPUTTYPE_PULSEAUDIO - extradriverdata is a const char * representing the name of the application to appear in PulseAudio mixer GUIs. + + Currently these are the only FMOD drivers that take extra information. Other unknown plugins may have different requirements. + + Note! If FMOD_OUTPUTTYPE_WAVWRITER_NRT or FMOD_OUTPUTTYPE_NOSOUND_NRT are used, and if the System::update function is being called + very quickly (ie for a non realtime decode) it may be being called too quickly for the FMOD streamer thread to respond to. + The result will be a skipping/stuttering output in the captured audio. + + To remedy this, disable the FMOD Ex streamer thread, and use FMOD_INIT_STREAM_FROM_UPDATE to avoid skipping in the output stream, + as it will lock the mixer and the streamer together in the same thread. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + System::setOutput + System::getOutput + System::setSoftwareFormat + System::getSoftwareFormat + System::init + System::update + FMOD_INITFLAGS +] +*/ +typedef enum +{ + FMOD_OUTPUTTYPE_AUTODETECT, /* Picks the best output mode for the platform. This is the default. */ + + FMOD_OUTPUTTYPE_UNKNOWN, /* All - 3rd party plugin, unknown. This is for use with System::getOutput only. */ + FMOD_OUTPUTTYPE_NOSOUND, /* All - All calls in this mode succeed but make no sound. */ + FMOD_OUTPUTTYPE_WAVWRITER, /* All - Writes output to fmodoutput.wav by default. Use the 'extradriverdata' parameter in System::init, by simply passing the filename as a string, to set the wav filename. */ + FMOD_OUTPUTTYPE_NOSOUND_NRT, /* All - Non-realtime version of FMOD_OUTPUTTYPE_NOSOUND. User can drive mixer with System::update at whatever rate they want. */ + FMOD_OUTPUTTYPE_WAVWRITER_NRT, /* All - Non-realtime version of FMOD_OUTPUTTYPE_WAVWRITER. User can drive mixer with System::update at whatever rate they want. */ + + FMOD_OUTPUTTYPE_DSOUND, /* Win32/Win64 - DirectSound output. (Default on Windows XP and below) */ + FMOD_OUTPUTTYPE_WINMM, /* Win32/Win64 - Windows Multimedia output. */ + FMOD_OUTPUTTYPE_WASAPI, /* Win32 - Windows Audio Session API. (Default on Windows Vista and above) */ + FMOD_OUTPUTTYPE_ASIO, /* Win32 - Low latency ASIO 2.0 driver. */ + FMOD_OUTPUTTYPE_OSS, /* Linux/Linux64 - Open Sound System output. (Default on Linux, third preference) */ + FMOD_OUTPUTTYPE_ALSA, /* Linux/Linux64 - Advanced Linux Sound Architecture output. (Default on Linux, second preference if available) */ + FMOD_OUTPUTTYPE_ESD, /* Linux/Linux64 - Enlightment Sound Daemon output. */ + FMOD_OUTPUTTYPE_PULSEAUDIO, /* Linux/Linux64 - PulseAudio output. (Default on Linux, first preference if available) */ + FMOD_OUTPUTTYPE_COREAUDIO, /* Mac - Macintosh CoreAudio output. (Default on Mac) */ + FMOD_OUTPUTTYPE_XBOX360, /* Xbox 360 - Native Xbox360 output. (Default on Xbox 360) */ + FMOD_OUTPUTTYPE_PSP, /* PSP - Native PSP output. (Default on PSP) */ + FMOD_OUTPUTTYPE_PS3, /* PS3 - Native PS3 output. (Default on PS3) */ + FMOD_OUTPUTTYPE_NGP, /* NGP - Native NGP output. (Default on NGP) */ + FMOD_OUTPUTTYPE_WII, /* Wii - Native Wii output. (Default on Wii) */ + FMOD_OUTPUTTYPE_3DS, /* 3DS - Native 3DS output (Default on 3DS) */ + FMOD_OUTPUTTYPE_AUDIOTRACK, /* Android - Java Audio Track output. (Default on Android 2.2 and below) */ + FMOD_OUTPUTTYPE_OPENSL, /* Android - OpenSL ES output. (Default on Android 2.3 and above) */ + FMOD_OUTPUTTYPE_NACL, /* Native Client - Native Client output. (Default on Native Client) */ + FMOD_OUTPUTTYPE_WIIU, /* Wii U - Native Wii U output. (Default on Wii U) */ + FMOD_OUTPUTTYPE_ASOUND, /* BlackBerry - Native BlackBerry asound output. (Default on BlackBerry) */ + FMOD_OUTPUTTYPE_AUDIOOUT, /* Orbis - Audio Out output. (Default on Orbis) */ + FMOD_OUTPUTTYPE_XAUDIO, /* Durango - XAudio2 output. */ + + FMOD_OUTPUTTYPE_MAX, /* Maximum number of output types supported. */ + FMOD_OUTPUTTYPE_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ +} FMOD_OUTPUTTYPE; + + +/* +[DEFINE] +[ + [NAME] + FMOD_CAPS + + [DESCRIPTION] + Bit fields to use with System::getDriverCaps to determine the capabilities of a card / output device. + + [REMARKS] + It is important to check FMOD_CAPS_HARDWARE_EMULATED on windows machines, to then adjust System::setDSPBufferSize to (1024, 10) to compensate for the higher latency. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + System::getDriverCaps + System::setDSPBufferSize +] +*/ +#define FMOD_CAPS_NONE 0x00000000 /* Device has no special capabilities. */ +#define FMOD_CAPS_HARDWARE 0x00000001 /* Device supports hardware mixing. */ +#define FMOD_CAPS_HARDWARE_EMULATED 0x00000002 /* User has device set to 'Hardware acceleration = off' in control panel, and now extra 200ms latency is incurred. */ +#define FMOD_CAPS_OUTPUT_MULTICHANNEL 0x00000004 /* Device can do multichannel output, ie greater than 2 channels. */ +#define FMOD_CAPS_OUTPUT_FORMAT_PCM8 0x00000008 /* Device can output to 8bit integer PCM. */ +#define FMOD_CAPS_OUTPUT_FORMAT_PCM16 0x00000010 /* Device can output to 16bit integer PCM. */ +#define FMOD_CAPS_OUTPUT_FORMAT_PCM24 0x00000020 /* Device can output to 24bit integer PCM. */ +#define FMOD_CAPS_OUTPUT_FORMAT_PCM32 0x00000040 /* Device can output to 32bit integer PCM. */ +#define FMOD_CAPS_OUTPUT_FORMAT_PCMFLOAT 0x00000080 /* Device can output to 32bit floating point PCM. */ +#define FMOD_CAPS_REVERB_LIMITED 0x00002000 /* Device supports some form of limited hardware reverb, maybe parameterless and only selectable by environment. */ +#define FMOD_CAPS_LOOPBACK 0x00004000 /* Device is a loopback recording device */ +/* [DEFINE_END] */ + +/* +[DEFINE] +[ + [NAME] + FMOD_DEBUGLEVEL + + [DESCRIPTION] + Bit fields to use with FMOD::Debug_SetLevel / FMOD::Debug_GetLevel to control the level of tty debug output with logging versions of FMOD (fmodL). + + [REMARKS] + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + Debug_SetLevel + Debug_GetLevel +] +*/ +#define FMOD_DEBUG_LEVEL_NONE 0x00000000 +#define FMOD_DEBUG_LEVEL_LOG 0x00000001 /* Will display generic logging messages. */ +#define FMOD_DEBUG_LEVEL_ERROR 0x00000002 /* Will display errors. */ +#define FMOD_DEBUG_LEVEL_WARNING 0x00000004 /* Will display warnings that are not fatal. */ +#define FMOD_DEBUG_LEVEL_HINT 0x00000008 /* Will hint to you if there is something possibly better you could be doing. */ +#define FMOD_DEBUG_LEVEL_ALL 0x000000FF +#define FMOD_DEBUG_TYPE_MEMORY 0x00000100 /* Show FMOD memory related logging messages. */ +#define FMOD_DEBUG_TYPE_THREAD 0x00000200 /* Show FMOD thread related logging messages. */ +#define FMOD_DEBUG_TYPE_FILE 0x00000400 /* Show FMOD file system related logging messages. */ +#define FMOD_DEBUG_TYPE_NET 0x00000800 /* Show FMOD network related logging messages. */ +#define FMOD_DEBUG_TYPE_EVENT 0x00001000 /* Show FMOD Event related logging messages. */ +#define FMOD_DEBUG_TYPE_ALL 0x0000FFFF +#define FMOD_DEBUG_DISPLAY_TIMESTAMPS 0x01000000 /* Display the timestamp of the log entry in milliseconds. */ +#define FMOD_DEBUG_DISPLAY_LINENUMBERS 0x02000000 /* Display the FMOD Ex source code line numbers, for debugging purposes. */ +#define FMOD_DEBUG_DISPLAY_COMPRESS 0x04000000 /* If a message is repeated more than 5 times it will stop displaying it and instead display the number of times the message was logged. */ +#define FMOD_DEBUG_DISPLAY_THREAD 0x08000000 /* Display the thread ID of the calling function that caused this log entry to appear. */ +#define FMOD_DEBUG_DISPLAY_ALL 0x0F000000 +#define FMOD_DEBUG_ALL 0xFFFFFFFF +/* [DEFINE_END] */ + + +/* +[DEFINE] +[ + [NAME] + FMOD_MEMORY_TYPE + + [DESCRIPTION] + Bit fields for memory allocation type being passed into FMOD memory callbacks. + + [REMARKS] + Remember this is a bitfield. You may get more than 1 bit set (ie physical + persistent) so do not simply switch on the types! You must check each bit individually or clear out the bits that you do not want within the callback. + Bits can be excluded if you want during Memory_Initialize so that you never get them. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + FMOD_MEMORY_ALLOCCALLBACK + FMOD_MEMORY_REALLOCCALLBACK + FMOD_MEMORY_FREECALLBACK + Memory_Initialize + +] +*/ +#define FMOD_MEMORY_NORMAL 0x00000000 /* Standard memory. */ +#define FMOD_MEMORY_STREAM_FILE 0x00000001 /* Stream file buffer, size controllable with System::setStreamBufferSize. */ +#define FMOD_MEMORY_STREAM_DECODE 0x00000002 /* Stream decode buffer, size controllable with FMOD_CREATESOUNDEXINFO::decodebuffersize. */ +#define FMOD_MEMORY_SAMPLEDATA 0x00000004 /* Sample data buffer. Raw audio data, usually PCM/MPEG/ADPCM/XMA data. */ +#define FMOD_MEMORY_DSP_OUTPUTBUFFER 0x00000008 /* DSP memory block allocated when more than 1 output exists on a DSP node. */ +#define FMOD_MEMORY_XBOX360_PHYSICAL 0x00100000 /* Requires XPhysicalAlloc / XPhysicalFree. */ +#define FMOD_MEMORY_PERSISTENT 0x00200000 /* Persistent memory. Memory will be freed when System::release is called. */ +#define FMOD_MEMORY_SECONDARY 0x00400000 /* Secondary memory. Allocation should be in secondary memory. For example RSX on the PS3. */ +#define FMOD_MEMORY_ALL 0xFFFFFFFF +/* [DEFINE_END] */ + + +/* +[ENUM] +[ + [DESCRIPTION] + These are speaker types defined for use with the System::setSpeakerMode or System::getSpeakerMode command. + + [REMARKS] + These are important notes on speaker modes in regards to sounds created with FMOD_SOFTWARE. + Note below the phrase 'sound channels' is used. These are the subchannels inside a sound, they are not related and + have nothing to do with the FMOD class "Channel". + For example a mono sound has 1 sound channel, a stereo sound has 2 sound channels, and an AC3 or 6 channel wav file have 6 "sound channels". + + FMOD_SPEAKERMODE_RAW + --------------------- + This mode is for output devices that are not specifically mono/stereo/quad/surround/5.1 or 7.1, but are multichannel. + Use System::setSoftwareFormat to specify the number of speakers you want to address, otherwise it will default to 2 (stereo). + Sound channels map to speakers sequentially, so a mono sound maps to output speaker 0, stereo sound maps to output speaker 0 & 1. + The user assumes knowledge of the speaker order. FMOD_SPEAKER enumerations may not apply, so raw channel indices should be used. + Multichannel sounds map input channels to output channels 1:1. + Channel::setPan and Channel::setSpeakerMix do not work. + Speaker levels must be manually set with Channel::setSpeakerLevels. + + FMOD_SPEAKERMODE_MONO + --------------------- + This mode is for a 1 speaker arrangement. + Panning does not work in this speaker mode. + Mono, stereo and multichannel sounds have each sound channel played on the one speaker unity. + Mix behavior for multichannel sounds can be set with Channel::setSpeakerLevels. + Channel::setSpeakerMix does not work. + + FMOD_SPEAKERMODE_STEREO + ----------------------- + This mode is for 2 speaker arrangements that have a left and right speaker. + - Mono sounds default to an even distribution between left and right. They can be panned with Channel::setPan. + - Stereo sounds default to the middle, or full left in the left speaker and full right in the right speaker. + - They can be cross faded with Channel::setPan. + - Multichannel sounds have each sound channel played on each speaker at unity. + - Mix behavior for multichannel sounds can be set with Channel::setSpeakerLevels. + - Channel::setSpeakerMix works but only front left and right parameters are used, the rest are ignored. + + FMOD_SPEAKERMODE_QUAD + ------------------------ + This mode is for 4 speaker arrangements that have a front left, front right, rear left and a rear right speaker. + - Mono sounds default to an even distribution between front left and front right. They can be panned with Channel::setPan. + - Stereo sounds default to the left sound channel played on the front left, and the right sound channel played on the front right. + - They can be cross faded with Channel::setPan. + - Multichannel sounds default to all of their sound channels being played on each speaker in order of input. + - Mix behavior for multichannel sounds can be set with Channel::setSpeakerLevels. + - Channel::setSpeakerMix works but side left, side right, center and lfe are ignored. + + FMOD_SPEAKERMODE_SURROUND + ------------------------ + This mode is for 5 speaker arrangements that have a left/right/center/rear left/rear right. + - Mono sounds default to the center speaker. They can be panned with Channel::setPan. + - Stereo sounds default to the left sound channel played on the front left, and the right sound channel played on the front right. + - They can be cross faded with Channel::setPan. + - Multichannel sounds default to all of their sound channels being played on each speaker in order of input. + - Mix behavior for multichannel sounds can be set with Channel::setSpeakerLevels. + - Channel::setSpeakerMix works but side left / side right are ignored. + + FMOD_SPEAKERMODE_5POINT1 + ------------------------ + This mode is for 5.1 speaker arrangements that have a left/right/center/rear left/rear right and a subwoofer speaker. + - Mono sounds default to the center speaker. They can be panned with Channel::setPan. + - Stereo sounds default to the left sound channel played on the front left, and the right sound channel played on the front right. + - They can be cross faded with Channel::setPan. + - Multichannel sounds default to all of their sound channels being played on each speaker in order of input. + - Mix behavior for multichannel sounds can be set with Channel::setSpeakerLevels. + - Channel::setSpeakerMix works but side left / side right are ignored. + + FMOD_SPEAKERMODE_7POINT1 + ------------------------ + This mode is for 7.1 speaker arrangements that have a left/right/center/rear left/rear right/side left/side right + and a subwoofer speaker. + - Mono sounds default to the center speaker. They can be panned with Channel::setPan. + - Stereo sounds default to the left sound channel played on the front left, and the right sound channel played on the front right. + - They can be cross faded with Channel::setPan. + - Multichannel sounds default to all of their sound channels being played on each speaker in order of input. + - Mix behavior for multichannel sounds can be set with Channel::setSpeakerLevels. + - Channel::setSpeakerMix works and every parameter is used to set the balance of a sound in any speaker. + + FMOD_SPEAKERMODE_SRS5_1_MATRIX + ------------------------------------------------------ + This mode is for mono, stereo, 5.1 and 6.1 speaker arrangements, as it is backwards and forwards compatible with + stereo, but to get a surround effect a SRS 5.1, Prologic or Prologic 2 hardware decoder / amplifier is needed or + a compatible SRS equipped device (e.g., laptop, TV, etc.) or accessory (e.g., headphone). + Pan behavior is the same as FMOD_SPEAKERMODE_5POINT1. + + If this function is called the numoutputchannels setting in System::setSoftwareFormat is overwritten. + + Output rate must be 44100, 48000 or 96000 for this to work otherwise FMOD_ERR_OUTPUT_INIT will be returned. + + FMOD_SPEAKERMODE_DOLBY5_1_MATRIX + ------------------------------------------------------ + This mode is for 5.1 speaker arrangements using a stereo signal, to get a surround effect a Dolby Pro Logic II + hardware decoder / amplifier is needed. + Pan behavior is the same as FMOD_SPEAKERMODE_5POINT1. + + If this function is called the numoutputchannels setting in System::setSoftwareFormat is overwritten. + + Output rate must be 32000, 44100 or 48000 for this to work otherwise FMOD_ERR_OUTPUT_INIT will be returned. + + FMOD_SPEAKERMODE_MYEARS + ------------------------------------------------------ + This mode is for headphones. This will attempt to load a MyEars profile (see myears.net.au) and use it to generate + surround sound on headphones using a personalized HRTF algorithm, for realistic 3d sound. + Pan behavior is the same as FMOD_SPEAKERMODE_7POINT1. + MyEars speaker mode will automatically be set if the speakermode is FMOD_SPEAKERMODE_STEREO and the MyEars profile exists. + If this mode is set explicitly, FMOD_INIT_DISABLE_MYEARS_AUTODETECT has no effect. + If this mode is set explicitly and the MyEars profile does not exist, FMOD_ERR_OUTPUT_DRIVERCALL will be returned. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + System::setSpeakerMode + System::getSpeakerMode + System::getDriverCaps + System::setSoftwareFormat + Channel::setSpeakerLevels +] +*/ +typedef enum +{ + FMOD_SPEAKERMODE_RAW, /* There is no specific speakermode. Sound channels are mapped in order of input to output. Use System::setSoftwareFormat to specify speaker count. See remarks for more information. */ + FMOD_SPEAKERMODE_MONO, /* The speakers are monaural. */ + FMOD_SPEAKERMODE_STEREO, /* The speakers are stereo (DEFAULT). */ + FMOD_SPEAKERMODE_QUAD, /* 4 speaker setup. This includes front left, front right, rear left, rear right. */ + FMOD_SPEAKERMODE_SURROUND, /* 5 speaker setup. This includes front left, front right, center, rear left, rear right. */ + FMOD_SPEAKERMODE_5POINT1, /* 5.1 speaker setup. This includes front left, front right, center, rear left, rear right and a subwoofer. */ + FMOD_SPEAKERMODE_7POINT1, /* 7.1 speaker setup. This includes front left, front right, center, rear left, rear right, side left, side right and a subwoofer. */ + + FMOD_SPEAKERMODE_SRS5_1_MATRIX, /* Stereo compatible output, embedded with surround information. SRS 5.1/Prologic/Prologic2 decoders will split the signal into a 5.1 speaker set-up or SRS virtual surround will decode into a 2-speaker/headphone setup. See remarks about limitations.*/ + FMOD_SPEAKERMODE_DOLBY5_1_MATRIX, /* Stereo compatible output, embedded with surround information. Dolby Pro Logic II decoders will split the signal into a 5.1 speaker set-up. */ + FMOD_SPEAKERMODE_MYEARS, /* Stereo output, but data is encoded using personalized HRTF algorithms. See myears.net.au */ + + FMOD_SPEAKERMODE_MAX, /* Maximum number of speaker modes supported. */ + FMOD_SPEAKERMODE_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ +} FMOD_SPEAKERMODE; + + +/* +[ENUM] +[ + [DESCRIPTION] + These are speaker types defined for use with the Channel::setSpeakerLevels command. + It can also be used for speaker placement in the System::set3DSpeakerPosition command. + + [REMARKS] + If you are using FMOD_SPEAKERMODE_RAW and speaker assignments are meaningless, just cast a raw integer value to this type. + For example (FMOD_SPEAKER)7 would use the 7th speaker (also the same as FMOD_SPEAKER_SIDE_RIGHT). + Values higher than this can be used if an output system has more than 8 speaker types / output channels. 15 is the current maximum. + + NOTE: On Playstation 3 in 7.1, the extra 2 speakers are not side left/side right, they are 'surround back left'/'surround back right' which + locate the speakers behind the listener instead of to the sides like on PC. FMOD_SPEAKER_SBL/FMOD_SPEAKER_SBR are provided to make it + clearer what speaker is being addressed on that platform. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + FMOD_SPEAKERMODE + Channel::setSpeakerLevels + Channel::getSpeakerLevels + System::set3DSpeakerPosition + System::get3DSpeakerPosition +] +*/ +typedef enum +{ + FMOD_SPEAKER_FRONT_LEFT, + FMOD_SPEAKER_FRONT_RIGHT, + FMOD_SPEAKER_FRONT_CENTER, + FMOD_SPEAKER_LOW_FREQUENCY, + FMOD_SPEAKER_BACK_LEFT, + FMOD_SPEAKER_BACK_RIGHT, + FMOD_SPEAKER_SIDE_LEFT, + FMOD_SPEAKER_SIDE_RIGHT, + + FMOD_SPEAKER_MAX, /* Maximum number of speaker types supported. */ + FMOD_SPEAKER_MONO = FMOD_SPEAKER_FRONT_LEFT, /* For use with FMOD_SPEAKERMODE_MONO and Channel::SetSpeakerLevels. Mapped to same value as FMOD_SPEAKER_FRONT_LEFT. */ + FMOD_SPEAKER_NULL = 65535, /* A non speaker. Use this with ASIO mapping to ignore a speaker. */ + FMOD_SPEAKER_SBL = FMOD_SPEAKER_SIDE_LEFT, /* For use with FMOD_SPEAKERMODE_7POINT1 on PS3 where the extra speakers are surround back inside of side speakers. */ + FMOD_SPEAKER_SBR = FMOD_SPEAKER_SIDE_RIGHT, /* For use with FMOD_SPEAKERMODE_7POINT1 on PS3 where the extra speakers are surround back inside of side speakers. */ + FMOD_SPEAKER_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ +} FMOD_SPEAKER; + + +/* +[ENUM] +[ + [DESCRIPTION] + These are plugin types defined for use with the System::getNumPlugins, + System::getPluginInfo and System::unloadPlugin functions. + + [REMARKS] + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + System::getNumPlugins + System::getPluginInfo + System::unloadPlugin +] +*/ +typedef enum +{ + FMOD_PLUGINTYPE_OUTPUT, /* The plugin type is an output module. FMOD mixed audio will play through one of these devices */ + FMOD_PLUGINTYPE_CODEC, /* The plugin type is a file format codec. FMOD will use these codecs to load file formats for playback. */ + FMOD_PLUGINTYPE_DSP, /* The plugin type is a DSP unit. FMOD will use these plugins as part of its DSP network to apply effects to output or generate sound in realtime. */ + + FMOD_PLUGINTYPE_MAX, /* Maximum number of plugin types supported. */ + FMOD_PLUGINTYPE_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ +} FMOD_PLUGINTYPE; + + +/* +[DEFINE] +[ + [NAME] + FMOD_INITFLAGS + + [DESCRIPTION] + Initialization flags. Use them with System::init in the flags parameter to change various behavior. + + [REMARKS] + Use System::setAdvancedSettings to adjust settings for some of the features that are enabled by these flags. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + System::init + System::update + System::setAdvancedSettings + Channel::set3DOcclusion +] +*/ +#define FMOD_INIT_NORMAL 0x00000000 /* All platforms - Initialize normally */ +#define FMOD_INIT_STREAM_FROM_UPDATE 0x00000001 /* All platforms - No stream thread is created internally. Streams are driven from System::update. Mainly used with non-realtime outputs. */ +#define FMOD_INIT_3D_RIGHTHANDED 0x00000002 /* All platforms - FMOD will treat +X as right, +Y as up and +Z as backwards (towards you). */ +#define FMOD_INIT_SOFTWARE_DISABLE 0x00000004 /* All platforms - Disable software mixer to save memory. Anything created with FMOD_SOFTWARE will fail and DSP will not work. */ +#define FMOD_INIT_OCCLUSION_LOWPASS 0x00000008 /* All platforms - All FMOD_SOFTWARE (and FMOD_HARDWARE on 3DS and NGP) with FMOD_3D based voices will add a software lowpass filter effect into the DSP chain which is automatically used when Channel::set3DOcclusion is used or the geometry API. */ +#define FMOD_INIT_HRTF_LOWPASS 0x00000010 /* All platforms - All FMOD_SOFTWARE (and FMOD_HARDWARE on 3DS and NGP) with FMOD_3D based voices will add a software lowpass filter effect into the DSP chain which causes sounds to sound duller when the sound goes behind the listener. Use System::setAdvancedSettings to adjust cutoff frequency. */ +#define FMOD_INIT_DISTANCE_FILTERING 0x00000200 /* All platforms - All FMOD_SOFTWARE with FMOD_3D based voices will add a software lowpass and highpass filter effect into the DSP chain which will act as a distance-automated bandpass filter. Use System::setAdvancedSettings to adjust the center frequency. */ +#define FMOD_INIT_REVERB_PREALLOCBUFFERS 0x00000040 /* All platforms - FMOD Software reverb will preallocate enough buffers for reverb per channel, rather than allocating them and freeing them at runtime. */ +#define FMOD_INIT_ENABLE_PROFILE 0x00000020 /* All platforms - Enable TCP/IP based host which allows FMOD Designer or FMOD Profiler to connect to it, and view memory, CPU and the DSP network graph in real-time. */ +#define FMOD_INIT_VOL0_BECOMES_VIRTUAL 0x00000080 /* All platforms - Any sounds that are 0 volume will go virtual and not be processed except for having their positions updated virtually. Use System::setAdvancedSettings to adjust what volume besides zero to switch to virtual at. */ +#define FMOD_INIT_WASAPI_EXCLUSIVE 0x00000100 /* Win32 Vista only - for WASAPI output - Enable exclusive access to hardware, lower latency at the expense of excluding other applications from accessing the audio hardware. */ +#define FMOD_INIT_PS3_PREFERDTS 0x00800000 /* PS3 only - Prefer DTS over Dolby Digital if both are supported. Note: 8 and 6 channel LPCM is always preferred over both DTS and Dolby Digital. */ +#define FMOD_INIT_PS3_FORCE2CHLPCM 0x01000000 /* PS3 only - Force PS3 system output mode to 2 channel LPCM. */ +#define FMOD_INIT_DISABLEDOLBY 0x00100000 /* Wii / 3DS - Disable Dolby Pro Logic surround. Speakermode will be set to STEREO even if user has selected surround in the system settings. */ +#define FMOD_INIT_SYSTEM_MUSICMUTENOTPAUSE 0x00200000 /* Xbox 360 / PS3 - The "music" channelgroup which by default pauses when custom 360 dashboard / PS3 BGM music is played, can be changed to mute (therefore continues playing) instead of pausing, by using this flag. */ +#define FMOD_INIT_SYNCMIXERWITHUPDATE 0x00400000 /* Win32/Wii/PS3/Xbox/Xbox 360 - FMOD Mixer thread is woken up to do a mix when System::update is called rather than waking periodically on its own timer. */ +#define FMOD_INIT_GEOMETRY_USECLOSEST 0x04000000 /* All platforms - With the geometry engine, only process the closest polygon rather than accumulating all polygons the sound to listener line intersects. */ +#define FMOD_INIT_DISABLE_MYEARS_AUTODETECT 0x08000000 /* Win32 - Disables automatic setting of FMOD_SPEAKERMODE_STEREO to FMOD_SPEAKERMODE_MYEARS if the MyEars profile exists on the PC. MyEars is HRTF 7.1 downmixing through headphones. */ +#define FMOD_INIT_PS3_DISABLEDTS 0x10000000 /* PS3 only - Disable DTS output mode selection */ +#define FMOD_INIT_PS3_DISABLEDOLBYDIGITAL 0x20000000 /* PS3 only - Disable Dolby Digital output mode selection */ +#define FMOD_INIT_7POINT1_DOLBYMAPPING 0x40000000 /* PS3/PS4 only - FMOD uses the WAVEFORMATEX Microsoft 7.1 speaker mapping where the last 2 pairs of speakers are 'rears' then 'sides', but on PS3/PS4 these are mapped to 'surrounds' and 'backs'. Use this flag to swap fmod's last 2 pair of speakers on PS3/PS4 to avoid needing to do a special case for these platforms. */ +#define FMOD_INIT_ASYNCREAD_FAST 0x80000000 /* All platforms - Rather than setting FMOD_ASYNCREADINFO::result, call FMOD_ASYNCREADINFO::done to enable a semaphore based wait inside fmod, rather than the older method which can incur up to 10ms delay per read. */ +/* [DEFINE_END] */ + + +/* +[ENUM] +[ + [DESCRIPTION] + These definitions describe the type of song being played. + + [REMARKS] + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + Sound::getFormat +] +*/ +typedef enum +{ + FMOD_SOUND_TYPE_UNKNOWN, /* 3rd party / unknown plugin format. */ + FMOD_SOUND_TYPE_AIFF, /* AIFF. */ + FMOD_SOUND_TYPE_ASF, /* Microsoft Advanced Systems Format (ie WMA/ASF/WMV). */ + FMOD_SOUND_TYPE_AT3, /* Sony ATRAC 3 format */ + FMOD_SOUND_TYPE_CDDA, /* Digital CD audio. */ + FMOD_SOUND_TYPE_DLS, /* Sound font / downloadable sound bank. */ + FMOD_SOUND_TYPE_FLAC, /* FLAC lossless codec. */ + FMOD_SOUND_TYPE_FSB, /* FMOD Sample Bank. */ + FMOD_SOUND_TYPE_GCADPCM, /* Nintendo GameCube/Wii ADPCM */ + FMOD_SOUND_TYPE_IT, /* Impulse Tracker. */ + FMOD_SOUND_TYPE_MIDI, /* MIDI. extracodecdata is a pointer to an FMOD_MIDI_EXTRACODECDATA structure. */ + FMOD_SOUND_TYPE_MOD, /* Protracker / Fasttracker MOD. */ + FMOD_SOUND_TYPE_MPEG, /* MP2/MP3 MPEG. */ + FMOD_SOUND_TYPE_OGGVORBIS, /* Ogg vorbis. */ + FMOD_SOUND_TYPE_PLAYLIST, /* Information only from ASX/PLS/M3U/WAX playlists */ + FMOD_SOUND_TYPE_RAW, /* Raw PCM data. */ + FMOD_SOUND_TYPE_S3M, /* ScreamTracker 3. */ + FMOD_SOUND_TYPE_SF2, /* Sound font 2 format. */ + FMOD_SOUND_TYPE_USER, /* User created sound. */ + FMOD_SOUND_TYPE_WAV, /* Microsoft WAV. */ + FMOD_SOUND_TYPE_XM, /* FastTracker 2 XM. */ + FMOD_SOUND_TYPE_XMA, /* Xbox360 XMA */ + FMOD_SOUND_TYPE_VAG, /* PlayStation Portable ADPCM VAG format. */ + FMOD_SOUND_TYPE_AUDIOQUEUE, /* iPhone hardware decoder, supports AAC, ALAC and MP3. extracodecdata is a pointer to an FMOD_AUDIOQUEUE_EXTRACODECDATA structure. */ + FMOD_SOUND_TYPE_XWMA, /* Xbox360 XWMA */ + FMOD_SOUND_TYPE_BCWAV, /* 3DS BCWAV container format for DSP ADPCM and PCM */ + FMOD_SOUND_TYPE_AT9, /* NGP ATRAC 9 format */ + FMOD_SOUND_TYPE_VORBIS, /* Raw vorbis */ + FMOD_SOUND_TYPE_MEDIA_FOUNDATION,/* Microsoft Media Foundation wrappers, supports ASF/WMA */ + + FMOD_SOUND_TYPE_MAX, /* Maximum number of sound types supported. */ + FMOD_SOUND_TYPE_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ +} FMOD_SOUND_TYPE; + + +/* +[ENUM] +[ + [DESCRIPTION] + These definitions describe the native format of the hardware or software buffer that will be used. + + [REMARKS] + This is the format the native hardware or software buffer will be or is created in. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + System::createSound + Sound::getFormat +] +*/ +typedef enum +{ + FMOD_SOUND_FORMAT_NONE, /* Unitialized / unknown. */ + FMOD_SOUND_FORMAT_PCM8, /* 8bit integer PCM data. */ + FMOD_SOUND_FORMAT_PCM16, /* 16bit integer PCM data. */ + FMOD_SOUND_FORMAT_PCM24, /* 24bit integer PCM data. */ + FMOD_SOUND_FORMAT_PCM32, /* 32bit integer PCM data. */ + FMOD_SOUND_FORMAT_PCMFLOAT, /* 32bit floating point PCM data. */ + FMOD_SOUND_FORMAT_GCADPCM, /* Compressed Nintendo 3DS/Wii DSP data. */ + FMOD_SOUND_FORMAT_IMAADPCM, /* Compressed IMA ADPCM data. */ + FMOD_SOUND_FORMAT_VAG, /* Compressed PlayStation Portable ADPCM data. */ + FMOD_SOUND_FORMAT_HEVAG, /* Compressed PSVita ADPCM data. */ + FMOD_SOUND_FORMAT_XMA, /* Compressed Xbox360 XMA data. */ + FMOD_SOUND_FORMAT_MPEG, /* Compressed MPEG layer 2 or 3 data. */ + FMOD_SOUND_FORMAT_CELT, /* Compressed CELT data. */ + FMOD_SOUND_FORMAT_AT9, /* Compressed PSVita ATRAC9 data. */ + FMOD_SOUND_FORMAT_XWMA, /* Compressed Xbox360 xWMA data. */ + FMOD_SOUND_FORMAT_VORBIS, /* Compressed Vorbis data. */ + + FMOD_SOUND_FORMAT_MAX, /* Maximum number of sound formats supported. */ + FMOD_SOUND_FORMAT_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ +} FMOD_SOUND_FORMAT; + + +/* +[DEFINE] +[ + [NAME] + FMOD_MODE + + [DESCRIPTION] + Sound description bitfields, bitwise OR them together for loading and describing sounds. + + [REMARKS] + By default a sound will open as a static sound that is decompressed fully into memory to PCM. (ie equivalent of FMOD_CREATESAMPLE) + To have a sound stream instead, use FMOD_CREATESTREAM, or use the wrapper function System::createStream. + Some opening modes (ie FMOD_OPENUSER, FMOD_OPENMEMORY, FMOD_OPENMEMORY_POINT, FMOD_OPENRAW) will need extra information. + This can be provided using the FMOD_CREATESOUNDEXINFO structure. + + Specifying FMOD_OPENMEMORY_POINT will POINT to your memory rather allocating its own sound buffers and duplicating it internally. + This means you cannot free the memory while FMOD is using it, until after Sound::release is called. + With FMOD_OPENMEMORY_POINT, for PCM formats, only WAV, FSB, and RAW are supported. For compressed formats, only those formats supported by FMOD_CREATECOMPRESSEDSAMPLE are supported. + With FMOD_OPENMEMORY_POINT and FMOD_OPENRAW or PCM, if using them together, note that you must pad the data on each side by 16 bytes. This is so fmod can modify the ends of the data for looping/interpolation/mixing purposes. If a wav file, you will need to insert silence, and then reset loop points to stop the playback from playing that silence. + With FMOD_OPENMEMORY_POINT, For Wii/PSP FMOD_HARDWARE supports this flag for the GCADPCM/VAG formats. On other platforms FMOD_SOFTWARE must be used. + + Xbox 360 memory On Xbox 360 Specifying FMOD_OPENMEMORY_POINT to a virtual memory address will cause FMOD_ERR_INVALID_ADDRESS + to be returned. Use physical memory only for this functionality. + + FMOD_LOWMEM is used on a sound if you want to minimize the memory overhead, by having FMOD not allocate memory for certain + features that are not likely to be used in a game environment. These are : + 1. Sound::getName functionality is removed. 256 bytes per sound is saved. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + System::createSound + System::createStream + Sound::setMode + Sound::getMode + Channel::setMode + Channel::getMode + Sound::set3DCustomRolloff + Channel::set3DCustomRolloff + Sound::getOpenState +] +*/ +#define FMOD_DEFAULT 0x00000000 /* Default for all modes listed below. FMOD_LOOP_OFF, FMOD_2D, FMOD_HARDWARE */ +#define FMOD_LOOP_OFF 0x00000001 /* For non looping sounds. (DEFAULT). Overrides FMOD_LOOP_NORMAL / FMOD_LOOP_BIDI. */ +#define FMOD_LOOP_NORMAL 0x00000002 /* For forward looping sounds. */ +#define FMOD_LOOP_BIDI 0x00000004 /* For bidirectional looping sounds. (only works on software mixed static sounds). */ +#define FMOD_2D 0x00000008 /* Ignores any 3d processing. (DEFAULT). */ +#define FMOD_3D 0x00000010 /* Makes the sound positionable in 3D. Overrides FMOD_2D. */ +#define FMOD_HARDWARE 0x00000020 /* Attempts to make sounds use hardware acceleration. (DEFAULT). Note on platforms that don't support FMOD_HARDWARE (only 3DS, PS Vita, PSP, Wii and Wii U support FMOD_HARDWARE), this will be internally treated as FMOD_SOFTWARE. */ +#define FMOD_SOFTWARE 0x00000040 /* Makes the sound be mixed by the FMOD CPU based software mixer. Overrides FMOD_HARDWARE. Use this for FFT, DSP, compressed sample support, 2D multi-speaker support and other software related features. */ +#define FMOD_CREATESTREAM 0x00000080 /* Decompress at runtime, streaming from the source provided (ie from disk). Overrides FMOD_CREATESAMPLE and FMOD_CREATECOMPRESSEDSAMPLE. Note a stream can only be played once at a time due to a stream only having 1 stream buffer and file handle. Open multiple streams to have them play concurrently. */ +#define FMOD_CREATESAMPLE 0x00000100 /* Decompress at loadtime, decompressing or decoding whole file into memory as the target sample format (ie PCM). Fastest for FMOD_SOFTWARE based playback and most flexible. */ +#define FMOD_CREATECOMPRESSEDSAMPLE 0x00000200 /* Load MP2/MP3/IMAADPCM/CELT/Vorbis/AT9 or XMA into memory and leave it compressed. CELT/Vorbis/AT9 encoding only supported in the FSB file format. During playback the FMOD software mixer will decode it in realtime as a 'compressed sample'. Can only be used in combination with FMOD_SOFTWARE. Overrides FMOD_CREATESAMPLE. If the sound data is not one of the supported formats, it will behave as if it was created with FMOD_CREATESAMPLE and decode the sound into PCM. */ +#define FMOD_OPENUSER 0x00000400 /* Opens a user created static sample or stream. Use FMOD_CREATESOUNDEXINFO to specify format and/or read callbacks. If a user created 'sample' is created with no read callback, the sample will be empty. Use Sound::lock and Sound::unlock to place sound data into the sound if this is the case. */ +#define FMOD_OPENMEMORY 0x00000800 /* "name_or_data" will be interpreted as a pointer to memory instead of filename for creating sounds. Use FMOD_CREATESOUNDEXINFO to specify length. If used with FMOD_CREATESAMPLE or FMOD_CREATECOMPRESSEDSAMPLE, FMOD duplicates the memory into its own buffers. Your own buffer can be freed after open. If used with FMOD_CREATESTREAM, FMOD will stream out of the buffer whose pointer you passed in. In this case, your own buffer should not be freed until you have finished with and released the stream.*/ +#define FMOD_OPENMEMORY_POINT 0x10000000 /* "name_or_data" will be interpreted as a pointer to memory instead of filename for creating sounds. Use FMOD_CREATESOUNDEXINFO to specify length. This differs to FMOD_OPENMEMORY in that it uses the memory as is, without duplicating the memory into its own buffers. For Wii/PSP FMOD_HARDWARE supports this flag for the GCADPCM/VAG formats. On other platforms FMOD_SOFTWARE must be used, as sound hardware on the other platforms (ie PC) cannot access main ram. Cannot be freed after open, only after Sound::release. Will not work if the data is compressed and FMOD_CREATECOMPRESSEDSAMPLE is not used. */ +#define FMOD_OPENRAW 0x00001000 /* Will ignore file format and treat as raw pcm. Use FMOD_CREATESOUNDEXINFO to specify format. Requires at least defaultfrequency, numchannels and format to be specified before it will open. Must be little endian data. */ +#define FMOD_OPENONLY 0x00002000 /* Just open the file, dont prebuffer or read. Good for fast opens for info, or when sound::readData is to be used. */ +#define FMOD_ACCURATETIME 0x00004000 /* For System::createSound - for accurate Sound::getLength/Channel::setPosition on VBR MP3, and MOD/S3M/XM/IT/MIDI files. Scans file first, so takes longer to open. FMOD_OPENONLY does not affect this. */ +#define FMOD_MPEGSEARCH 0x00008000 /* For corrupted / bad MP3 files. This will search all the way through the file until it hits a valid MPEG header. Normally only searches for 4k. */ +#define FMOD_NONBLOCKING 0x00010000 /* For opening sounds and getting streamed subsounds (seeking) asyncronously. Use Sound::getOpenState to poll the state of the sound as it opens or retrieves the subsound in the background. */ +#define FMOD_UNIQUE 0x00020000 /* Unique sound, can only be played one at a time */ +#define FMOD_3D_HEADRELATIVE 0x00040000 /* Make the sound's position, velocity and orientation relative to the listener. */ +#define FMOD_3D_WORLDRELATIVE 0x00080000 /* Make the sound's position, velocity and orientation absolute (relative to the world). (DEFAULT) */ +#define FMOD_3D_INVERSEROLLOFF 0x00100000 /* This sound will follow the inverse rolloff model where mindistance = full volume, maxdistance = where sound stops attenuating, and rolloff is fixed according to the global rolloff factor. (DEFAULT) */ +#define FMOD_3D_LINEARROLLOFF 0x00200000 /* This sound will follow a linear rolloff model where mindistance = full volume, maxdistance = silence. Rolloffscale is ignored. */ +#define FMOD_3D_LINEARSQUAREROLLOFF 0x00400000 /* This sound will follow a linear-square rolloff model where mindistance = full volume, maxdistance = silence. Rolloffscale is ignored. */ +#define FMOD_3D_CUSTOMROLLOFF 0x04000000 /* This sound will follow a rolloff model defined by Sound::set3DCustomRolloff / Channel::set3DCustomRolloff. */ +#define FMOD_3D_IGNOREGEOMETRY 0x40000000 /* Is not affect by geometry occlusion. If not specified in Sound::setMode, or Channel::setMode, the flag is cleared and it is affected by geometry again. */ +#define FMOD_UNICODE 0x01000000 /* Filename is double-byte unicode. */ +#define FMOD_IGNORETAGS 0x02000000 /* Skips id3v2/asf/etc tag checks when opening a sound, to reduce seek/read overhead when opening files (helps with CD performance). */ +#define FMOD_LOWMEM 0x08000000 /* Removes some features from samples to give a lower memory overhead, like Sound::getName. See remarks. */ +#define FMOD_LOADSECONDARYRAM 0x20000000 /* Load sound into the secondary RAM of supported platform. On PS3, sounds will be loaded into RSX/VRAM. */ +#define FMOD_VIRTUAL_PLAYFROMSTART 0x80000000 /* For sounds that start virtual (due to being quiet or low importance), instead of swapping back to audible, and playing at the correct offset according to time, this flag makes the sound play from the start. */ + +/* [DEFINE_END] */ + + +/* +[ENUM] +[ + [DESCRIPTION] + These values describe what state a sound is in after FMOD_NONBLOCKING has been used to open it. + + [REMARKS] + With streams, if you are using FMOD_NONBLOCKING, note that if the user calls Sound::getSubSound, a stream will go into FMOD_OPENSTATE_SEEKING state and sound related commands will return FMOD_ERR_NOTREADY. + With streams, if you are using FMOD_NONBLOCKING, note that if the user calls Channel::getPosition, a stream will go into FMOD_OPENSTATE_SETPOSITION state and sound related commands will return FMOD_ERR_NOTREADY. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + Sound::getOpenState + FMOD_MODE +] +*/ +typedef enum +{ + FMOD_OPENSTATE_READY = 0, /* Opened and ready to play. */ + FMOD_OPENSTATE_LOADING, /* Initial load in progress. */ + FMOD_OPENSTATE_ERROR, /* Failed to open - file not found, out of memory etc. See return value of Sound::getOpenState for what happened. */ + FMOD_OPENSTATE_CONNECTING, /* Connecting to remote host (internet sounds only). */ + FMOD_OPENSTATE_BUFFERING, /* Buffering data. */ + FMOD_OPENSTATE_SEEKING, /* Seeking to subsound and re-flushing stream buffer. */ + FMOD_OPENSTATE_PLAYING, /* Ready and playing, but not possible to release at this time without stalling the main thread. */ + FMOD_OPENSTATE_SETPOSITION, /* Seeking within a stream to a different position. */ + + FMOD_OPENSTATE_MAX, /* Maximum number of open state types. */ + FMOD_OPENSTATE_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ +} FMOD_OPENSTATE; + + +/* +[ENUM] +[ + [DESCRIPTION] + These flags are used with SoundGroup::setMaxAudibleBehavior to determine what happens when more sounds + are played than are specified with SoundGroup::setMaxAudible. + + [REMARKS] + When using FMOD_SOUNDGROUP_BEHAVIOR_MUTE, SoundGroup::setMuteFadeSpeed can be used to stop a sudden transition. + Instead, the time specified will be used to cross fade between the sounds that go silent and the ones that become audible. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + SoundGroup::setMaxAudibleBehavior + SoundGroup::getMaxAudibleBehavior + SoundGroup::setMaxAudible + SoundGroup::getMaxAudible + SoundGroup::setMuteFadeSpeed + SoundGroup::getMuteFadeSpeed +] +*/ +typedef enum +{ + FMOD_SOUNDGROUP_BEHAVIOR_FAIL, /* Any sound played that puts the sound count over the SoundGroup::setMaxAudible setting, will simply fail during System::playSound. */ + FMOD_SOUNDGROUP_BEHAVIOR_MUTE, /* Any sound played that puts the sound count over the SoundGroup::setMaxAudible setting, will be silent, then if another sound in the group stops the sound that was silent before becomes audible again. */ + FMOD_SOUNDGROUP_BEHAVIOR_STEALLOWEST, /* Any sound played that puts the sound count over the SoundGroup::setMaxAudible setting, will steal the quietest / least important sound playing in the group. */ + + FMOD_SOUNDGROUP_BEHAVIOR_MAX, /* Maximum number of open state types. */ + FMOD_SOUNDGROUP_BEHAVIOR_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ +} FMOD_SOUNDGROUP_BEHAVIOR; + + +/* +[ENUM] +[ + [DESCRIPTION] + These callback types are used with Channel::setCallback. + + [REMARKS] + Each callback has commanddata parameters passed as int unique to the type of callback. + See reference to FMOD_CHANNEL_CALLBACK to determine what they might mean for each type of callback. + + Note! Currently the user must call System::update for these callbacks to trigger! + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + Channel::setCallback + FMOD_CHANNEL_CALLBACK + System::update +] +*/ +typedef enum +{ + FMOD_CHANNEL_CALLBACKTYPE_END, /* Called when a sound ends. */ + FMOD_CHANNEL_CALLBACKTYPE_VIRTUALVOICE, /* Called when a voice is swapped out or swapped in. */ + FMOD_CHANNEL_CALLBACKTYPE_SYNCPOINT, /* Called when a syncpoint is encountered. Can be from wav file markers. */ + FMOD_CHANNEL_CALLBACKTYPE_OCCLUSION, /* Called when the channel has its geometry occlusion value calculated. Can be used to clamp or change the value. */ + + FMOD_CHANNEL_CALLBACKTYPE_MAX, /* Maximum number of callback types supported. */ + FMOD_CHANNEL_CALLBACKTYPE_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ +} FMOD_CHANNEL_CALLBACKTYPE; + + +/* +[ENUM] +[ + [DESCRIPTION] + These callback types are used with System::setCallback. + + [REMARKS] + Each callback has commanddata parameters passed as void* unique to the type of callback. + See reference to FMOD_SYSTEM_CALLBACK to determine what they might mean for each type of callback. + + Note! Using FMOD_SYSTEM_CALLBACKTYPE_DEVICELISTCHANGED (on Mac only) requires the application to be running an event loop which will allow external changes to device list to be detected by FMOD. + + Note! The 'system' object pointer will be null for FMOD_SYSTEM_CALLBACKTYPE_MEMORYALLOCATIONFAILED callback. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + System::setCallback + FMOD_SYSTEM_CALLBACK + System::update + DSP::addInput +] +*/ +typedef enum +{ + FMOD_SYSTEM_CALLBACKTYPE_DEVICELISTCHANGED, /* Called from System::update when the enumerated list of devices has changed. */ + FMOD_SYSTEM_CALLBACKTYPE_DEVICELOST, /* Called from System::update when an output device has been lost due to control panel parameter changes and FMOD cannot automatically recover. */ + FMOD_SYSTEM_CALLBACKTYPE_MEMORYALLOCATIONFAILED, /* Called directly when a memory allocation fails somewhere in FMOD. (NOTE - 'system' will be NULL in this callback type.)*/ + FMOD_SYSTEM_CALLBACKTYPE_THREADCREATED, /* Called directly when a thread is created. */ + FMOD_SYSTEM_CALLBACKTYPE_BADDSPCONNECTION, /* Called when a bad connection was made with DSP::addInput. Usually called from mixer thread because that is where the connections are made. */ + FMOD_SYSTEM_CALLBACKTYPE_BADDSPLEVEL, /* Called when too many effects were added exceeding the maximum tree depth of 128. This is most likely caused by accidentally adding too many DSP effects. Usually called from mixer thread because that is where the connections are made. */ + FMOD_SYSTEM_CALLBACKTYPE_THREADDESTROYED, /* Called directly when a thread is destroyed. */ + + FMOD_SYSTEM_CALLBACKTYPE_MAX, /* Maximum number of callback types supported. */ + FMOD_SYSTEM_CALLBACKTYPE_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ +} FMOD_SYSTEM_CALLBACKTYPE; + + +/* + FMOD Callbacks +*/ +typedef FMOD_RESULT (F_CALLBACK *FMOD_SYSTEM_CALLBACK) (FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACKTYPE type, void *commanddata1, void *commanddata2); + +typedef FMOD_RESULT (F_CALLBACK *FMOD_CHANNEL_CALLBACK) (FMOD_CHANNEL *channel, FMOD_CHANNEL_CALLBACKTYPE type, void *commanddata1, void *commanddata2); + +typedef FMOD_RESULT (F_CALLBACK *FMOD_SOUND_NONBLOCKCALLBACK)(FMOD_SOUND *sound, FMOD_RESULT result); +typedef FMOD_RESULT (F_CALLBACK *FMOD_SOUND_PCMREADCALLBACK)(FMOD_SOUND *sound, void *data, unsigned int datalen); +typedef FMOD_RESULT (F_CALLBACK *FMOD_SOUND_PCMSETPOSCALLBACK)(FMOD_SOUND *sound, int subsound, unsigned int position, FMOD_TIMEUNIT postype); + +typedef FMOD_RESULT (F_CALLBACK *FMOD_FILE_OPENCALLBACK) (const char *name, int unicode, unsigned int *filesize, void **handle, void **userdata); +typedef FMOD_RESULT (F_CALLBACK *FMOD_FILE_CLOSECALLBACK) (void *handle, void *userdata); +typedef FMOD_RESULT (F_CALLBACK *FMOD_FILE_READCALLBACK) (void *handle, void *buffer, unsigned int sizebytes, unsigned int *bytesread, void *userdata); +typedef FMOD_RESULT (F_CALLBACK *FMOD_FILE_SEEKCALLBACK) (void *handle, unsigned int pos, void *userdata); +typedef FMOD_RESULT (F_CALLBACK *FMOD_FILE_ASYNCREADCALLBACK)(FMOD_ASYNCREADINFO *info, void *userdata); +typedef FMOD_RESULT (F_CALLBACK *FMOD_FILE_ASYNCCANCELCALLBACK)(void *handle, void *userdata); + +typedef void * (F_CALLBACK *FMOD_MEMORY_ALLOCCALLBACK) (unsigned int size, FMOD_MEMORY_TYPE type, const char *sourcestr); +typedef void * (F_CALLBACK *FMOD_MEMORY_REALLOCCALLBACK)(void *ptr, unsigned int size, FMOD_MEMORY_TYPE type, const char *sourcestr); +typedef void (F_CALLBACK *FMOD_MEMORY_FREECALLBACK) (void *ptr, FMOD_MEMORY_TYPE type, const char *sourcestr); + +typedef float (F_CALLBACK *FMOD_3D_ROLLOFFCALLBACK) (FMOD_CHANNEL *channel, float distance); + + +/* +[ENUM] +[ + [DESCRIPTION] + List of windowing methods used in spectrum analysis to reduce leakage / transient signals intefering with the analysis. + This is a problem with analysis of continuous signals that only have a small portion of the signal sample (the fft window size). + Windowing the signal with a curve or triangle tapers the sides of the fft window to help alleviate this problem. + + [REMARKS] + Cyclic signals such as a sine wave that repeat their cycle in a multiple of the window size do not need windowing. + I.e. If the sine wave repeats every 1024, 512, 256 etc samples and the FMOD fft window is 1024, then the signal would not need windowing. + Not windowing is the same as FMOD_DSP_FFT_WINDOW_RECT, which is the default. + If the cycle of the signal (ie the sine wave) is not a multiple of the window size, it will cause frequency abnormalities, so a different windowing method is needed. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + System::getSpectrum + Channel::getSpectrum +] +*/ +typedef enum +{ + FMOD_DSP_FFT_WINDOW_RECT, /* w[n] = 1.0 */ + FMOD_DSP_FFT_WINDOW_TRIANGLE, /* w[n] = TRI(2n/N) */ + FMOD_DSP_FFT_WINDOW_HAMMING, /* w[n] = 0.54 - (0.46 * COS(n/N) ) */ + FMOD_DSP_FFT_WINDOW_HANNING, /* w[n] = 0.5 * (1.0 - COS(n/N) ) */ + FMOD_DSP_FFT_WINDOW_BLACKMAN, /* w[n] = 0.42 - (0.5 * COS(n/N) ) + (0.08 * COS(2.0 * n/N) ) */ + FMOD_DSP_FFT_WINDOW_BLACKMANHARRIS, /* w[n] = 0.35875 - (0.48829 * COS(1.0 * n/N)) + (0.14128 * COS(2.0 * n/N)) - (0.01168 * COS(3.0 * n/N)) */ + + FMOD_DSP_FFT_WINDOW_MAX, /* Maximum number of FFT window types supported. */ + FMOD_DSP_FFT_WINDOW_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ +} FMOD_DSP_FFT_WINDOW; + + +/* +[ENUM] +[ + [DESCRIPTION] + List of interpolation types that the FMOD Ex software mixer supports. + + [REMARKS] + The default resampler type is FMOD_DSP_RESAMPLER_LINEAR. + Use System::setSoftwareFormat to tell FMOD the resampling quality you require for FMOD_SOFTWARE based sounds. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + System::setSoftwareFormat + System::getSoftwareFormat +] +*/ +typedef enum +{ + FMOD_DSP_RESAMPLER_NOINTERP, /* No interpolation. High frequency aliasing hiss will be audible depending on the sample rate of the sound. */ + FMOD_DSP_RESAMPLER_LINEAR, /* Linear interpolation (default method). Fast and good quality, causes very slight lowpass effect on low frequency sounds. */ + FMOD_DSP_RESAMPLER_CUBIC, /* Cubic interpolation. Slower than linear interpolation but better quality. */ + FMOD_DSP_RESAMPLER_SPLINE, /* 5 point spline interpolation. Slowest resampling method but best quality. */ + + FMOD_DSP_RESAMPLER_MAX, /* Maximum number of resample methods supported. */ + FMOD_DSP_RESAMPLER_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ +} FMOD_DSP_RESAMPLER; + + +/* +[ENUM] +[ + [DESCRIPTION] + List of tag types that could be stored within a sound. These include id3 tags, metadata from netstreams and vorbis/asf data. + + [REMARKS] + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + Sound::getTag +] +*/ +typedef enum +{ + FMOD_TAGTYPE_UNKNOWN = 0, + FMOD_TAGTYPE_ID3V1, + FMOD_TAGTYPE_ID3V2, + FMOD_TAGTYPE_VORBISCOMMENT, + FMOD_TAGTYPE_SHOUTCAST, + FMOD_TAGTYPE_ICECAST, + FMOD_TAGTYPE_ASF, + FMOD_TAGTYPE_MIDI, + FMOD_TAGTYPE_PLAYLIST, + FMOD_TAGTYPE_FMOD, + FMOD_TAGTYPE_USER, + + FMOD_TAGTYPE_MAX, /* Maximum number of tag types supported. */ + FMOD_TAGTYPE_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ +} FMOD_TAGTYPE; + + +/* +[ENUM] +[ + [DESCRIPTION] + List of data types that can be returned by Sound::getTag + + [REMARKS] + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + Sound::getTag +] +*/ +typedef enum +{ + FMOD_TAGDATATYPE_BINARY = 0, + FMOD_TAGDATATYPE_INT, + FMOD_TAGDATATYPE_FLOAT, + FMOD_TAGDATATYPE_STRING, + FMOD_TAGDATATYPE_STRING_UTF16, + FMOD_TAGDATATYPE_STRING_UTF16BE, + FMOD_TAGDATATYPE_STRING_UTF8, + FMOD_TAGDATATYPE_CDTOC, + + FMOD_TAGDATATYPE_MAX, /* Maximum number of tag datatypes supported. */ + FMOD_TAGDATATYPE_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ +} FMOD_TAGDATATYPE; + + +/* +[ENUM] +[ + [DESCRIPTION] + Types of delay that can be used with Channel::setDelay / Channel::getDelay. + + [REMARKS] + If you haven't called Channel::setDelay yet, if you call Channel::getDelay with FMOD_DELAYTYPE_DSPCLOCK_START it will return the + equivalent global DSP clock value to determine when a channel started, so that you can use it for other channels to sync against. + + Use System::getDSPClock to also get the current dspclock time, a base for future calls to Channel::setDelay. + + Use FMOD_64BIT_ADD or FMOD_64BIT_SUB to add a hi/lo combination together and cope with wraparound. + + If FMOD_DELAYTYPE_END_MS is specified, the value is not treated as a 64 bit number, just the delayhi value is used and it is treated as milliseconds. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + Channel::setDelay + Channel::getDelay + System::getDSPClock +] +*/ +typedef enum +{ + FMOD_DELAYTYPE_END_MS, /* Delay at the end of the sound in milliseconds. Use delayhi only. Channel::isPlaying will remain true until this delay has passed even though the sound itself has stopped playing.*/ + FMOD_DELAYTYPE_DSPCLOCK_START, /* Time the sound started if Channel::getDelay is used, or if Channel::setDelay is used, the sound will delay playing until this exact tick. */ + FMOD_DELAYTYPE_DSPCLOCK_END, /* Time the sound should end. If this is non-zero, the channel will go silent at this exact tick. */ + FMOD_DELAYTYPE_DSPCLOCK_PAUSE, /* Time the sound should pause. If this is non-zero, the channel will pause at this exact tick. */ + + FMOD_DELAYTYPE_MAX, /* Maximum number of tag datatypes supported. */ + FMOD_DELAYTYPE_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ +} FMOD_DELAYTYPE; + + +#define FMOD_64BIT_ADD(_hi1, _lo1, _hi2, _lo2) _hi1 += ((_hi2) + ((((_lo1) + (_lo2)) < (_lo1)) ? 1 : 0)); (_lo1) += (_lo2); +#define FMOD_64BIT_SUB(_hi1, _lo1, _hi2, _lo2) _hi1 -= ((_hi2) + ((((_lo1) - (_lo2)) > (_lo1)) ? 1 : 0)); (_lo1) -= (_lo2); + + +/* +[STRUCTURE] +[ + [DESCRIPTION] + Structure describing a piece of tag data. + + [REMARKS] + Members marked with [r] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value. + Members marked with [w] mean the variable can be written to. The user can set the value. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + Sound::getTag + FMOD_TAGTYPE + FMOD_TAGDATATYPE +] +*/ +typedef struct FMOD_TAG +{ + FMOD_TAGTYPE type; /* [r] The type of this tag. */ + FMOD_TAGDATATYPE datatype; /* [r] The type of data that this tag contains */ + char *name; /* [r] The name of this tag i.e. "TITLE", "ARTIST" etc. */ + void *data; /* [r] Pointer to the tag data - its format is determined by the datatype member */ + unsigned int datalen; /* [r] Length of the data contained in this tag */ + FMOD_BOOL updated; /* [r] True if this tag has been updated since last being accessed with Sound::getTag */ +} FMOD_TAG; + + +/* +[STRUCTURE] +[ + [DESCRIPTION] + Structure describing a CD/DVD table of contents + + [REMARKS] + Members marked with [r] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value. + Members marked with [w] mean the variable can be written to. The user can set the value. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + Sound::getTag +] +*/ +typedef struct FMOD_CDTOC +{ + int numtracks; /* [r] The number of tracks on the CD */ + int min[100]; /* [r] The start offset of each track in minutes */ + int sec[100]; /* [r] The start offset of each track in seconds */ + int frame[100]; /* [r] The start offset of each track in frames */ +} FMOD_CDTOC; + + +/* +[DEFINE] +[ + [NAME] + FMOD_TIMEUNIT + + [DESCRIPTION] + List of time types that can be returned by Sound::getLength and used with Channel::setPosition or Channel::getPosition. + + [REMARKS] + FMOD_TIMEUNIT_SENTENCE_MS, FMOD_TIMEUNIT_SENTENCE_PCM, FMOD_TIMEUNIT_SENTENCE_PCMBYTES, FMOD_TIMEUNIT_SENTENCE and FMOD_TIMEUNIT_SENTENCE_SUBSOUND are only supported by Channel functions. + Do not combine flags except FMOD_TIMEUNIT_BUFFERED. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + Sound::getLength + Channel::setPosition + Channel::getPosition +] +*/ +#define FMOD_TIMEUNIT_MS 0x00000001 /* Milliseconds. */ +#define FMOD_TIMEUNIT_PCM 0x00000002 /* PCM samples, related to milliseconds * samplerate / 1000. */ +#define FMOD_TIMEUNIT_PCMBYTES 0x00000004 /* Bytes, related to PCM samples * channels * datawidth (ie 16bit = 2 bytes). */ +#define FMOD_TIMEUNIT_RAWBYTES 0x00000008 /* Raw file bytes of (compressed) sound data (does not include headers). Only used by Sound::getLength and Channel::getPosition. */ +#define FMOD_TIMEUNIT_PCMFRACTION 0x00000010 /* Fractions of 1 PCM sample. Unsigned int range 0 to 0xFFFFFFFF. Used for sub-sample granularity for DSP purposes. */ +#define FMOD_TIMEUNIT_MODORDER 0x00000100 /* MOD/S3M/XM/IT. Order in a sequenced module format. Use Sound::getFormat to determine the PCM format being decoded to. */ +#define FMOD_TIMEUNIT_MODROW 0x00000200 /* MOD/S3M/XM/IT. Current row in a sequenced module format. Sound::getLength will return the number of rows in the currently playing or seeked to pattern. */ +#define FMOD_TIMEUNIT_MODPATTERN 0x00000400 /* MOD/S3M/XM/IT. Current pattern in a sequenced module format. Sound::getLength will return the number of patterns in the song and Channel::getPosition will return the currently playing pattern. */ +#define FMOD_TIMEUNIT_SENTENCE_MS 0x00010000 /* Currently playing subsound in a sentence time in milliseconds. */ +#define FMOD_TIMEUNIT_SENTENCE_PCM 0x00020000 /* Currently playing subsound in a sentence time in PCM Samples, related to milliseconds * samplerate / 1000. */ +#define FMOD_TIMEUNIT_SENTENCE_PCMBYTES 0x00040000 /* Currently playing subsound in a sentence time in bytes, related to PCM samples * channels * datawidth (ie 16bit = 2 bytes). */ +#define FMOD_TIMEUNIT_SENTENCE 0x00080000 /* Currently playing sentence index according to the channel. */ +#define FMOD_TIMEUNIT_SENTENCE_SUBSOUND 0x00100000 /* Currently playing subsound index in a sentence. */ +#define FMOD_TIMEUNIT_BUFFERED 0x10000000 /* Time value as seen by buffered stream. This is always ahead of audible time, and is only used for processing. */ +/* [DEFINE_END] */ + + +/* +[ENUM] +[ + [DESCRIPTION] + When creating a multichannel sound, FMOD will pan them to their default speaker locations, for example a 6 channel sound will default to one channel per 5.1 output speaker. + Another example is a stereo sound. It will default to left = front left, right = front right. + + This is for sounds that are not 'default'. For example you might have a sound that is 6 channels but actually made up of 3 stereo pairs, that should all be located in front left, front right only. + + [REMARKS] + For full flexibility of speaker assignments, use Channel::setSpeakerLevels. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + FMOD_CREATESOUNDEXINFO + Channel::setSpeakerLevels +] +*/ +typedef enum +{ + FMOD_SPEAKERMAPTYPE_DEFAULT, /* This is the default, and just means FMOD decides which speakers it puts the source channels. */ + FMOD_SPEAKERMAPTYPE_ALLMONO, /* This means the sound is made up of all mono sounds. All voices will be panned to the front center by default in this case. */ + FMOD_SPEAKERMAPTYPE_ALLSTEREO, /* This means the sound is made up of all stereo sounds. All voices will be panned to front left and front right alternating every second channel. */ + FMOD_SPEAKERMAPTYPE_51_PROTOOLS /* Map a 5.1 sound to use protools L C R Ls Rs LFE mapping. Will return an error if not a 6 channel sound. */ +} FMOD_SPEAKERMAPTYPE; + + +/* +[STRUCTURE] +[ + [DESCRIPTION] + Use this structure with System::createSound when more control is needed over loading. + The possible reasons to use this with System::createSound are: + - Loading a file from memory. + - Loading a file from within another larger (possibly wad/pak) file, by giving the loader an offset and length. + - To create a user created / non file based sound. + - To specify a starting subsound to seek to within a multi-sample sounds (ie FSB/DLS/SF2) when created as a stream. + - To specify which subsounds to load for multi-sample sounds (ie FSB/DLS/SF2) so that memory is saved and only a subset is actually loaded/read from disk. + - To specify 'piggyback' read and seek callbacks for capture of sound data as fmod reads and decodes it. Useful for ripping decoded PCM data from sounds as they are loaded / played. + - To specify a MIDI DLS/SF2 sample set file to load when opening a MIDI file. + See below on what members to fill for each of the above types of sound you want to create. + + [REMARKS] + This structure is optional! Specify 0 or NULL in System::createSound if you don't need it! + + Loading a file from memory. + - Create the sound using the FMOD_OPENMEMORY flag. + - Mandatory. Specify 'length' for the size of the memory block in bytes. + - Other flags are optional. + + + Loading a file from within another larger (possibly wad/pak) file, by giving the loader an offset and length. + - Mandatory. Specify 'fileoffset' and 'length'. + - Other flags are optional. + + + To create a user created / non file based sound. + - Create the sound using the FMOD_OPENUSER flag. + - Mandatory. Specify 'defaultfrequency, 'numchannels' and 'format'. + - Other flags are optional. + + + To specify a starting subsound to seek to and flush with, within a multi-sample stream (ie FSB/DLS/SF2). + + - Mandatory. Specify 'initialsubsound'. + + + To specify which subsounds to load for multi-sample sounds (ie FSB/DLS/SF2) so that memory is saved and only a subset is actually loaded/read from disk. + + - Mandatory. Specify 'inclusionlist' and 'inclusionlistnum'. + + + To specify 'piggyback' read and seek callbacks for capture of sound data as fmod reads and decodes it. Useful for ripping decoded PCM data from sounds as they are loaded / played. + + - Mandatory. Specify 'pcmreadcallback' and 'pcmseekcallback'. + + + To specify a MIDI DLS/SF2 sample set file to load when opening a MIDI file. + + - Mandatory. Specify 'dlsname'. + + + Setting the 'decodebuffersize' is for cpu intensive codecs that may be causing stuttering, not file intensive codecs (ie those from CD or netstreams) which are normally + altered with System::setStreamBufferSize. As an example of cpu intensive codecs, an mp3 file will take more cpu to decode than a PCM wav file. + If you have a stuttering effect, then it is using more cpu than the decode buffer playback rate can keep up with. Increasing the decode buffersize will most likely solve this problem. + + + FSB codec. If inclusionlist and numsubsounds are used together, this will trigger a special mode where subsounds are shuffled down to save memory. (useful for large FSB + files where you only want to load 1 sound). There will be no gaps, ie no null subsounds. As an example, if there are 10,000 subsounds and there is an inclusionlist with only 1 entry, + and numsubsounds = 1, then subsound 0 will be that entry, and there will only be the memory allocated for 1 subsound. Previously there would still be 10,000 subsound pointers and other + associated codec entries allocated along with it multiplied by 10,000. + + Members marked with [r] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value. + Members marked with [w] mean the variable can be written to. The user can set the value. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + System::createSound + System::setStreamBufferSize + FMOD_MODE + FMOD_SOUND_FORMAT + FMOD_SOUND_TYPE + FMOD_SPEAKERMAPTYPE +] +*/ +typedef struct FMOD_CREATESOUNDEXINFO +{ + int cbsize; /* [w] Size of this structure. This is used so the structure can be expanded in the future and still work on older versions of FMOD Ex. */ + unsigned int length; /* [w] Optional. Specify 0 to ignore. Size in bytes of file to load, or sound to create (in this case only if FMOD_OPENUSER is used). Required if loading from memory. If 0 is specified, then it will use the size of the file (unless loading from memory then an error will be returned). */ + unsigned int fileoffset; /* [w] Optional. Specify 0 to ignore. Offset from start of the file to start loading from. This is useful for loading files from inside big data files. */ + int numchannels; /* [w] Optional. Specify 0 to ignore. Number of channels in a sound mandatory if FMOD_OPENUSER or FMOD_OPENRAW is used. */ + int defaultfrequency; /* [w] Optional. Specify 0 to ignore. Default frequency of sound in a sound mandatory if FMOD_OPENUSER or FMOD_OPENRAW is used. Other formats use the frequency determined by the file format. */ + FMOD_SOUND_FORMAT format; /* [w] Optional. Specify 0 or FMOD_SOUND_FORMAT_NONE to ignore. Format of the sound mandatory if FMOD_OPENUSER or FMOD_OPENRAW is used. Other formats use the format determined by the file format. */ + unsigned int decodebuffersize; /* [w] Optional. Specify 0 to ignore. For streams. This determines the size of the double buffer (in PCM samples) that a stream uses. Use this for user created streams if you want to determine the size of the callback buffer passed to you. Specify 0 to use FMOD's default size which is currently equivalent to 400ms of the sound format created/loaded. */ + int initialsubsound; /* [w] Optional. Specify 0 to ignore. In a multi-sample file format such as .FSB/.DLS/.SF2, specify the initial subsound to seek to, only if FMOD_CREATESTREAM is used. */ + int numsubsounds; /* [w] Optional. Specify 0 to ignore or have no subsounds. In a sound created with FMOD_OPENUSER, specify the number of subsounds that are accessable with Sound::getSubSound. If not created with FMOD_OPENUSER, this will limit the number of subsounds loaded within a multi-subsound file. If using FSB, then if FMOD_CREATESOUNDEXINFO::inclusionlist is used, this will shuffle subsounds down so that there are not any gaps. It will mean that the indices of the sounds will be different. */ + int *inclusionlist; /* [w] Optional. Specify 0 to ignore. In a multi-sample format such as .FSB/.DLS/.SF2 it may be desirable to specify only a subset of sounds to be loaded out of the whole file. This is an array of subsound indices to load into memory when created. */ + int inclusionlistnum; /* [w] Optional. Specify 0 to ignore. This is the number of integers contained within the inclusionlist array. */ + FMOD_SOUND_PCMREADCALLBACK pcmreadcallback; /* [w] Optional. Specify 0 to ignore. Callback to 'piggyback' on FMOD's read functions and accept or even write PCM data while FMOD is opening the sound. Used for user sounds created with FMOD_OPENUSER or for capturing decoded data as FMOD reads it. */ + FMOD_SOUND_PCMSETPOSCALLBACK pcmsetposcallback; /* [w] Optional. Specify 0 to ignore. Callback for when the user calls a seeking function such as Channel::setTime or Channel::setPosition within a multi-sample sound, and for when it is opened.*/ + FMOD_SOUND_NONBLOCKCALLBACK nonblockcallback; /* [w] Optional. Specify 0 to ignore. Callback for successful completion, or error while loading a sound that used the FMOD_NONBLOCKING flag. Also called duing seeking, when setPosition is called or a stream is restarted. */ + const char *dlsname; /* [w] Optional. Specify 0 to ignore. Filename for a DLS or SF2 sample set when loading a MIDI file. If not specified, on Windows it will attempt to open /windows/system32/drivers/gm.dls or /windows/system32/drivers/etc/gm.dls, on Mac it will attempt to load /System/Library/Components/CoreAudio.component/Contents/Resources/gs_instruments.dls, otherwise the MIDI will fail to open. Current DLS support is for level 1 of the specification. */ + const char *encryptionkey; /* [w] Optional. Specify 0 to ignore. Key for encrypted FSB file. Without this key an encrypted FSB file will not load. */ + int maxpolyphony; /* [w] Optional. Specify 0 to ignore. For sequenced formats with dynamic channel allocation such as .MID and .IT, this specifies the maximum voice count allowed while playing. .IT defaults to 64. .MID defaults to 32. */ + void *userdata; /* [w] Optional. Specify 0 to ignore. This is user data to be attached to the sound during creation. Access via Sound::getUserData. Note: This is not passed to FMOD_FILE_OPENCALLBACK, that is a different userdata that is file specific. */ + FMOD_SOUND_TYPE suggestedsoundtype; /* [w] Optional. Specify 0 or FMOD_SOUND_TYPE_UNKNOWN to ignore. Instead of scanning all codec types, use this to speed up loading by making it jump straight to this codec. */ + FMOD_FILE_OPENCALLBACK useropen; /* [w] Optional. Specify 0 to ignore. Callback for opening this file. */ + FMOD_FILE_CLOSECALLBACK userclose; /* [w] Optional. Specify 0 to ignore. Callback for closing this file. */ + FMOD_FILE_READCALLBACK userread; /* [w] Optional. Specify 0 to ignore. Callback for reading from this file. */ + FMOD_FILE_SEEKCALLBACK userseek; /* [w] Optional. Specify 0 to ignore. Callback for seeking within this file. */ + FMOD_FILE_ASYNCREADCALLBACK userasyncread; /* [w] Optional. Specify 0 to ignore. Callback for seeking within this file. */ + FMOD_FILE_ASYNCCANCELCALLBACK userasynccancel; /* [w] Optional. Specify 0 to ignore. Callback for seeking within this file. */ + FMOD_SPEAKERMAPTYPE speakermap; /* [w] Optional. Specify 0 to ignore. Use this to differ the way fmod maps multichannel sounds to speakers. See FMOD_SPEAKERMAPTYPE for more. */ + FMOD_SOUNDGROUP *initialsoundgroup; /* [w] Optional. Specify 0 to ignore. Specify a sound group if required, to put sound in as it is created. */ + unsigned int initialseekposition;/* [w] Optional. Specify 0 to ignore. For streams. Specify an initial position to seek the stream to. */ + FMOD_TIMEUNIT initialseekpostype; /* [w] Optional. Specify 0 to ignore. For streams. Specify the time unit for the position set in initialseekposition. */ + int ignoresetfilesystem;/* [w] Optional. Specify 0 to ignore. Set to 1 to use fmod's built in file system. Ignores setFileSystem callbacks and also FMOD_CREATESOUNEXINFO file callbacks. Useful for specific cases where you don't want to use your own file system but want to use fmod's file system (ie net streaming). */ + int cddaforceaspi; /* [w] Optional. Specify 0 to ignore. For CDDA sounds only - if non-zero use ASPI instead of NTSCSI to access the specified CD/DVD device. */ + unsigned int audioqueuepolicy; /* [w] Optional. Specify 0 or FMOD_AUDIOQUEUE_CODECPOLICY_DEFAULT to ignore. Policy used to determine whether hardware or software is used for decoding, see FMOD_AUDIOQUEUE_CODECPOLICY for options (iOS >= 3.0 required, otherwise only hardware is available) */ + unsigned int minmidigranularity; /* [w] Optional. Specify 0 to ignore. Allows you to set a minimum desired MIDI mixer granularity. Values smaller than 512 give greater than default accuracy at the cost of more CPU and vice versa. Specify 0 for default (512 samples). */ + int nonblockthreadid; /* [w] Optional. Specify 0 to ignore. Specifies a thread index to execute non blocking load on. Allows for up to 5 threads to be used for loading at once. This is to avoid one load blocking another. Maximum value = 4. */ +} FMOD_CREATESOUNDEXINFO; + + +/* +[STRUCTURE] +[ + [DESCRIPTION] + Structure defining a reverb environment. + + [REMARKS] + Note the default reverb properties are the same as the FMOD_PRESET_GENERIC preset. + Note that integer values that typically range from -10,000 to 1000 are represented in + decibels, and are of a logarithmic scale, not linear, wheras float values are always linear. + + The numerical values listed below are the maximum, minimum and default values for each variable respectively. + + SUPPORTED next to each parameter means the platform the parameter can be set on. Some platforms support all parameters and some don't. + WII means Nintendo Wii hardware reverb (must use FMOD_HARDWARE). + PSP means Playstation Portable hardware reverb (must use FMOD_HARDWARE). + SFX means FMOD SFX software reverb. This works on any platform that uses FMOD_SOFTWARE for loading sounds. + --- means unsupported/deprecated. Will either be removed or supported by SFX in the future. + + Nintendo Wii Notes: + This structure supports only limited parameters, and maps them to the Wii hardware reverb as follows. + DecayTime = 'time' + ReverbDelay = 'predelay' + ModulationDepth = 'damping' + Reflections = 'coloration' + EnvDiffusion = 'crosstalk' + Room = 'mix' + + Members marked with [r] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value. + Members marked with [w] mean the variable can be written to. The user can set the value. + Members marked with [r/w] are either read or write depending on if you are using System::setReverbProperties (w) or System::getReverbProperties (r). + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + System::setReverbProperties + System::getReverbProperties + FMOD_REVERB_PRESETS + FMOD_REVERB_FLAGS +] +*/ +typedef struct FMOD_REVERB_PROPERTIES +{ /* MIN MAX DEFAULT DESCRIPTION */ + int Instance; /* [w] 0 3 0 Environment Instance. (SUPPORTED:SFX(4 instances) and Wii (3 instances)) */ + int Environment; /* [r/w] -1 25 -1 Sets all listener properties. -1 = OFF. (SUPPORTED:SFX(-1 only)/PSP) */ + float EnvDiffusion; /* [r/w] 0.0 1.0 1.0 Environment diffusion (SUPPORTED:WII) */ + int Room; /* [r/w] -10000 0 -1000 Room effect level (at mid frequencies) (SUPPORTED:SFX/WII/PSP) */ + int RoomHF; /* [r/w] -10000 0 -100 Relative room effect level at high frequencies (SUPPORTED:SFX) */ + int RoomLF; /* [r/w] -10000 0 0 Relative room effect level at low frequencies (SUPPORTED:SFX) */ + float DecayTime; /* [r/w] 0.1 20.0 1.49 Reverberation decay time at mid frequencies (SUPPORTED:SFX/WII) */ + float DecayHFRatio; /* [r/w] 0.1 2.0 0.83 High-frequency to mid-frequency decay time ratio (SUPPORTED:SFX) */ + float DecayLFRatio; /* [r/w] 0.1 2.0 1.0 Low-frequency to mid-frequency decay time ratio (SUPPORTED:---) */ + int Reflections; /* [r/w] -10000 1000 -2602 Early reflections level relative to room effect (SUPPORTED:SFX/WII) */ + float ReflectionsDelay; /* [r/w] 0.0 0.3 0.007 Initial reflection delay time (SUPPORTED:SFX) */ + int Reverb; /* [r/w] -10000 2000 200 Late reverberation level relative to room effect (SUPPORTED:SFX) */ + float ReverbDelay; /* [r/w] 0.0 0.1 0.011 Late reverberation delay time relative to initial reflection (SUPPORTED:SFX/WII) */ + float ModulationTime; /* [r/w] 0.04 4.0 0.25 Modulation time (SUPPORTED:---) */ + float ModulationDepth; /* [r/w] 0.0 1.0 0.0 Modulation depth (SUPPORTED:WII) */ + float HFReference; /* [r/w] 20.0 20000.0 5000.0 Reference high frequency (hz) (SUPPORTED:SFX) */ + float LFReference; /* [r/w] 20.0 1000.0 250.0 Reference low frequency (hz) (SUPPORTED:SFX) */ + float Diffusion; /* [r/w] 0.0 100.0 100.0 Value that controls the echo density in the late reverberation decay. (SUPPORTED:SFX) */ + float Density; /* [r/w] 0.0 100.0 100.0 Value that controls the modal density in the late reverberation decay (SUPPORTED:SFX) */ + unsigned int Flags; /* [r/w] FMOD_REVERB_FLAGS - modifies the behavior of above properties (SUPPORTED:WII) */ +} FMOD_REVERB_PROPERTIES; + + +/* +[DEFINE] +[ + [NAME] + FMOD_REVERB_FLAGS + + [DESCRIPTION] + Values for the Flags member of the FMOD_REVERB_PROPERTIES structure. + + [REMARKS] + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + FMOD_REVERB_PROPERTIES +] +*/ +#define FMOD_REVERB_FLAGS_HIGHQUALITYREVERB 0x00000400 /* Wii. Use high quality reverb */ +#define FMOD_REVERB_FLAGS_HIGHQUALITYDPL2REVERB 0x00000800 /* Wii. Use high quality DPL2 reverb */ +#define FMOD_REVERB_FLAGS_HARDWAREONLY 0x00001000 /* Don't create an SFX reverb for FMOD_SOFTWARE channels, hardware reverb only */ +#define FMOD_REVERB_FLAGS_DEFAULT 0x00000000 +/* [DEFINE_END] */ + + +/* +[DEFINE] +[ + [NAME] + FMOD_REVERB_PRESETS + + [DESCRIPTION] + A set of predefined environment PARAMETERS. + These are used to initialize an FMOD_REVERB_PROPERTIES structure statically. + i.e. + FMOD_REVERB_PROPERTIES prop = FMOD_PRESET_GENERIC; + + [REMARKS] + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + System::setReverbProperties +] +*/ +/* Inst Env Diffus Room RoomHF RmLF DecTm DecHF DecLF Refl RefDel Revb RevDel ModTm ModDp HFRef LFRef Diffus Densty FLAGS */ +#define FMOD_PRESET_OFF { 0, -1, 1.00f, -10000, -10000, 0, 1.00f, 1.00f, 1.0f, -2602, 0.007f, 200, 0.011f, 0.25f, 0.000f, 5000.0f, 250.0f, 0.0f, 0.0f, 0x33f } +#define FMOD_PRESET_GENERIC { 0, 0, 1.00f, -1000, -100, 0, 1.49f, 0.83f, 1.0f, -2602, 0.007f, 200, 0.011f, 0.25f, 0.000f, 5000.0f, 250.0f, 100.0f, 100.0f, 0x3f } +#define FMOD_PRESET_PADDEDCELL { 0, 1, 1.00f, -1000, -6000, 0, 0.17f, 0.10f, 1.0f, -1204, 0.001f, 207, 0.002f, 0.25f, 0.000f, 5000.0f, 250.0f, 100.0f, 100.0f, 0x3f } +#define FMOD_PRESET_ROOM { 0, 2, 1.00f, -1000, -454, 0, 0.40f, 0.83f, 1.0f, -1646, 0.002f, 53, 0.003f, 0.25f, 0.000f, 5000.0f, 250.0f, 100.0f, 100.0f, 0x3f } +#define FMOD_PRESET_BATHROOM { 0, 3, 1.00f, -1000, -1200, 0, 1.49f, 0.54f, 1.0f, -370, 0.007f, 1030, 0.011f, 0.25f, 0.000f, 5000.0f, 250.0f, 100.0f, 60.0f, 0x3f } +#define FMOD_PRESET_LIVINGROOM { 0, 4, 1.00f, -1000, -6000, 0, 0.50f, 0.10f, 1.0f, -1376, 0.003f, -1104, 0.004f, 0.25f, 0.000f, 5000.0f, 250.0f, 100.0f, 100.0f, 0x3f } +#define FMOD_PRESET_STONEROOM { 0, 5, 1.00f, -1000, -300, 0, 2.31f, 0.64f, 1.0f, -711, 0.012f, 83, 0.017f, 0.25f, 0.000f, 5000.0f, 250.0f, 100.0f, 100.0f, 0x3f } +#define FMOD_PRESET_AUDITORIUM { 0, 6, 1.00f, -1000, -476, 0, 4.32f, 0.59f, 1.0f, -789, 0.020f, -289, 0.030f, 0.25f, 0.000f, 5000.0f, 250.0f, 100.0f, 100.0f, 0x3f } +#define FMOD_PRESET_CONCERTHALL { 0, 7, 1.00f, -1000, -500, 0, 3.92f, 0.70f, 1.0f, -1230, 0.020f, -2, 0.029f, 0.25f, 0.000f, 5000.0f, 250.0f, 100.0f, 100.0f, 0x3f } +#define FMOD_PRESET_CAVE { 0, 8, 1.00f, -1000, 0, 0, 2.91f, 1.30f, 1.0f, -602, 0.015f, -302, 0.022f, 0.25f, 0.000f, 5000.0f, 250.0f, 100.0f, 100.0f, 0x1f } +#define FMOD_PRESET_ARENA { 0, 9, 1.00f, -1000, -698, 0, 7.24f, 0.33f, 1.0f, -1166, 0.020f, 16, 0.030f, 0.25f, 0.000f, 5000.0f, 250.0f, 100.0f, 100.0f, 0x3f } +#define FMOD_PRESET_HANGAR { 0, 10, 1.00f, -1000, -1000, 0, 10.05f, 0.23f, 1.0f, -602, 0.020f, 198, 0.030f, 0.25f, 0.000f, 5000.0f, 250.0f, 100.0f, 100.0f, 0x3f } +#define FMOD_PRESET_CARPETTEDHALLWAY { 0, 11, 1.00f, -1000, -4000, 0, 0.30f, 0.10f, 1.0f, -1831, 0.002f, -1630, 0.030f, 0.25f, 0.000f, 5000.0f, 250.0f, 100.0f, 100.0f, 0x3f } +#define FMOD_PRESET_HALLWAY { 0, 12, 1.00f, -1000, -300, 0, 1.49f, 0.59f, 1.0f, -1219, 0.007f, 441, 0.011f, 0.25f, 0.000f, 5000.0f, 250.0f, 100.0f, 100.0f, 0x3f } +#define FMOD_PRESET_STONECORRIDOR { 0, 13, 1.00f, -1000, -237, 0, 2.70f, 0.79f, 1.0f, -1214, 0.013f, 395, 0.020f, 0.25f, 0.000f, 5000.0f, 250.0f, 100.0f, 100.0f, 0x3f } +#define FMOD_PRESET_ALLEY { 0, 14, 0.30f, -1000, -270, 0, 1.49f, 0.86f, 1.0f, -1204, 0.007f, -4, 0.011f, 0.25f, 0.000f, 5000.0f, 250.0f, 100.0f, 100.0f, 0x3f } +#define FMOD_PRESET_FOREST { 0, 15, 0.30f, -1000, -3300, 0, 1.49f, 0.54f, 1.0f, -2560, 0.162f, -229, 0.088f, 0.25f, 0.000f, 5000.0f, 250.0f, 79.0f, 100.0f, 0x3f } +#define FMOD_PRESET_CITY { 0, 16, 0.50f, -1000, -800, 0, 1.49f, 0.67f, 1.0f, -2273, 0.007f, -1691, 0.011f, 0.25f, 0.000f, 5000.0f, 250.0f, 50.0f, 100.0f, 0x3f } +#define FMOD_PRESET_MOUNTAINS { 0, 17, 0.27f, -1000, -2500, 0, 1.49f, 0.21f, 1.0f, -2780, 0.300f, -1434, 0.100f, 0.25f, 0.000f, 5000.0f, 250.0f, 27.0f, 100.0f, 0x1f } +#define FMOD_PRESET_QUARRY { 0, 18, 1.00f, -1000, -1000, 0, 1.49f, 0.83f, 1.0f, -10000, 0.061f, 500, 0.025f, 0.25f, 0.000f, 5000.0f, 250.0f, 100.0f, 100.0f, 0x3f } +#define FMOD_PRESET_PLAIN { 0, 19, 0.21f, -1000, -2000, 0, 1.49f, 0.50f, 1.0f, -2466, 0.179f, -1926, 0.100f, 0.25f, 0.000f, 5000.0f, 250.0f, 21.0f, 100.0f, 0x3f } +#define FMOD_PRESET_PARKINGLOT { 0, 20, 1.00f, -1000, 0, 0, 1.65f, 1.50f, 1.0f, -1363, 0.008f, -1153, 0.012f, 0.25f, 0.000f, 5000.0f, 250.0f, 100.0f, 100.0f, 0x1f } +#define FMOD_PRESET_SEWERPIPE { 0, 21, 0.80f, -1000, -1000, 0, 2.81f, 0.14f, 1.0f, 429, 0.014f, 1023, 0.021f, 0.25f, 0.000f, 5000.0f, 250.0f, 80.0f, 60.0f, 0x3f } +#define FMOD_PRESET_UNDERWATER { 0, 22, 1.00f, -1000, -4000, 0, 1.49f, 0.10f, 1.0f, -449, 0.007f, 1700, 0.011f, 1.18f, 0.348f, 5000.0f, 250.0f, 100.0f, 100.0f, 0x3f } + +/* PlayStation Portable Only presets */ +#define FMOD_PRESET_PSP_ROOM { 0, 1, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, 0, 0.000f, 0.00f, 0.000f, 0000.0f, 0.0f, 0.0f, 0.0f, 0x31f } +#define FMOD_PRESET_PSP_STUDIO_A { 0, 2, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, 0, 0.000f, 0.00f, 0.000f, 0000.0f, 0.0f, 0.0f, 0.0f, 0x31f } +#define FMOD_PRESET_PSP_STUDIO_B { 0, 3, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, 0, 0.000f, 0.00f, 0.000f, 0000.0f, 0.0f, 0.0f, 0.0f, 0x31f } +#define FMOD_PRESET_PSP_STUDIO_C { 0, 4, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, 0, 0.000f, 0.00f, 0.000f, 0000.0f, 0.0f, 0.0f, 0.0f, 0x31f } +#define FMOD_PRESET_PSP_HALL { 0, 5, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, 0, 0.000f, 0.00f, 0.000f, 0000.0f, 0.0f, 0.0f, 0.0f, 0x31f } +#define FMOD_PRESET_PSP_SPACE { 0, 6, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, 0, 0.000f, 0.00f, 0.000f, 0000.0f, 0.0f, 0.0f, 0.0f, 0x31f } +#define FMOD_PRESET_PSP_ECHO { 0, 7, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, 0, 0.000f, 0.00f, 0.000f, 0000.0f, 0.0f, 0.0f, 0.0f, 0x31f } +#define FMOD_PRESET_PSP_DELAY { 0, 8, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, 0, 0.000f, 0.00f, 0.000f, 0000.0f, 0.0f, 0.0f, 0.0f, 0x31f } +#define FMOD_PRESET_PSP_PIPE { 0, 9, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0, 0.000f, 0, 0.000f, 0.00f, 0.000f, 0000.0f, 0.0f, 0.0f, 0.0f, 0x31f } +/* [DEFINE_END] */ + + +/* +[STRUCTURE] +[ + [DESCRIPTION] + Structure defining the properties for a reverb source, related to a FMOD channel. + + Note the default reverb properties are the same as the FMOD_PRESET_GENERIC preset. + Note that integer values that typically range from -10,000 to 1000 are represented in + decibels, and are of a logarithmic scale, not linear, wheras float values are typically linear. + PORTABILITY: Each member has the platform it supports in braces ie (win32/wii). + + The numerical values listed below are the maximum, minimum and default values for each variable respectively. + + [REMARKS] + SUPPORTED next to each parameter means the platform the parameter can be set on. Some platforms support all parameters and some don't. + WII means Nintendo Wii hardware reverb (must use FMOD_HARDWARE). + PSP means Playstation Portable hardware reverb (must use FMOD_HARDWARE). + SFX means FMOD SFX software reverb. This works on any platform that uses FMOD_SOFTWARE for loading sounds. + --- means unsupported/deprecated. Will either be removed or supported by SFX in the future. + + + 'ConnectionPoint' Parameter. This parameter is for the FMOD software reverb only (known as SFX in the list above). + By default the dsp network connection for a channel and its reverb is between the 'SFX Reverb' unit, and the channel's wavetable/resampler/dspcodec/oscillator unit (the unit below the channel DSP head). NULL can be used for this parameter to make it use this default behaviour. + This parameter allows the user to connect the SFX reverb to somewhere else internally, for example the channel DSP head, or a related channelgroup. The event system uses this so that it can have the output of an event going to the reverb, instead of just the output of the event's channels (thereby ignoring event effects/submixes etc). + Do not use if you are unaware of DSP network connection issues. Leave it at the default of NULL instead. + + Members marked with [r] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value. + Members marked with [w] mean the variable can be written to. The user can set the value. + Members marked with [r/w] are either read or write depending on if you are using Channel::setReverbProperties (w) or Channel::getReverbProperties (r). + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + Channel::setReverbProperties + Channel::getReverbProperties + FMOD_REVERB_CHANNELFLAGS +] +*/ +typedef struct FMOD_REVERB_CHANNELPROPERTIES +{ /* MIN MAX DEFAULT DESCRIPTION */ + int Direct; /* [r/w] -10000 1000 0 Direct path level (SUPPORTED:SFX) */ + int Room; /* [r/w] -10000 1000 0 Room effect level (SUPPORTED:SFX) */ + unsigned int Flags; /* [r/w] FMOD_REVERB_CHANNELFLAGS - modifies the behavior of properties (SUPPORTED:SFX) */ + FMOD_DSP *ConnectionPoint; /* [r/w] See remarks. DSP network location to connect reverb for this channel. (SUPPORTED:SFX).*/ +} FMOD_REVERB_CHANNELPROPERTIES; + + +/* +[DEFINE] +[ + [NAME] + FMOD_REVERB_CHANNELFLAGS + + [DESCRIPTION] + Values for the Flags member of the FMOD_REVERB_CHANNELPROPERTIES structure. + + [REMARKS] + For SFX Reverb, there is support for multiple reverb environments. + Use FMOD_REVERB_CHANNELFLAGS_ENVIRONMENT0 to FMOD_REVERB_CHANNELFLAGS_ENVIRONMENT3 in the flags member + of FMOD_REVERB_CHANNELPROPERTIES to specify which environment instance(s) to target. + - If you do not specify any instance the first reverb instance will be used. + - If you specify more than one instance with getReverbProperties, the first instance will be used. + - If you specify more than one instance with setReverbProperties, it will set more than 1 instance at once. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + FMOD_REVERB_CHANNELPROPERTIES +] +*/ +#define FMOD_REVERB_CHANNELFLAGS_INSTANCE0 0x00000010 /* SFX/Wii. Specify channel to target reverb instance 0. Default target. */ +#define FMOD_REVERB_CHANNELFLAGS_INSTANCE1 0x00000020 /* SFX/Wii. Specify channel to target reverb instance 1. */ +#define FMOD_REVERB_CHANNELFLAGS_INSTANCE2 0x00000040 /* SFX/Wii. Specify channel to target reverb instance 2. */ +#define FMOD_REVERB_CHANNELFLAGS_INSTANCE3 0x00000080 /* SFX. Specify channel to target reverb instance 3. */ + +#define FMOD_REVERB_CHANNELFLAGS_DEFAULT FMOD_REVERB_CHANNELFLAGS_INSTANCE0 +/* [DEFINE_END] */ + + +/* +[STRUCTURE] +[ + [DESCRIPTION] + Settings for advanced features like configuring memory and cpu usage for the FMOD_CREATECOMPRESSEDSAMPLE feature. + + [REMARKS] + maxMPEGcodecs / maxADPCMcodecs / maxXMAcodecs will determine the maximum cpu usage of playing realtime samples. Use this to lower potential excess cpu usage and also control memory usage. + + maxPCMcodecs is for use with PS3 only. It will determine the maximum number of PCM voices that can be played at once. This includes streams of any format and all sounds created + *without* the FMOD_CREATECOMPRESSEDSAMPLE flag. + + Memory will be allocated for codecs 'up front' (during System::init) if these values are specified as non zero. If any are zero, it allocates memory for the codec whenever a file of the type in question is loaded. So if maxMPEGcodecs is 0 for example, it will allocate memory for the mpeg codecs the first time an mp3 is loaded or an mp3 based .FSB file is loaded. + + Due to inefficient encoding techniques on certain .wav based ADPCM files, FMOD can can need an extra 29720 bytes per codec. This means for lowest memory consumption. Use FSB as it uses an optimal/small ADPCM block size. + + Members marked with [r] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value. + Members marked with [w] mean the variable can be written to. The user can set the value. + Members marked with [r/w] are either read or write depending on if you are using System::setAdvancedSettings (w) or System::getAdvancedSettings (r). + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + System::setAdvancedSettings + System::getAdvancedSettings + System::init + FMOD_MODE +] +*/ +typedef struct FMOD_ADVANCEDSETTINGS +{ + int cbsize; /* [w] Size of this structure. Use sizeof(FMOD_ADVANCEDSETTINGS) NOTE: This must be set before calling System::getAdvancedSettings! */ + int maxMPEGcodecs; /* [r/w] Optional. Specify 0 to ignore. For use with FMOD_CREATECOMPRESSEDSAMPLE only. Mpeg codecs consume 21,684 bytes per instance and this number will determine how many mpeg channels can be played simultaneously. Default = 32. */ + int maxADPCMcodecs; /* [r/w] Optional. Specify 0 to ignore. For use with FMOD_CREATECOMPRESSEDSAMPLE only. ADPCM codecs consume 2,136 bytes per instance and this number will determine how many ADPCM channels can be played simultaneously. Default = 32. */ + int maxXMAcodecs; /* [r/w] Optional. Specify 0 to ignore. For use with FMOD_CREATECOMPRESSEDSAMPLE only. XMA codecs consume 14,836 bytes per instance and this number will determine how many XMA channels can be played simultaneously. Default = 32. */ + int maxCELTcodecs; /* [r/w] Optional. Specify 0 to ignore. For use with FMOD_CREATECOMPRESSEDSAMPLE only. CELT codecs consume 11,500 bytes per instance and this number will determine how many CELT channels can be played simultaneously. Default = 32. */ + int maxVORBIScodecs; /* [r/w] Optional. Specify 0 to ignore. For use with FMOD_CREATECOMPRESSEDSAMPLE only. Vorbis codecs consume 12,000 bytes per instance and this number will determine how many Vorbis channels can be played simultaneously. Default = 32. */ + int maxAT9Codecs; /* [r/w] Optional. Specify 0 to ignore. For use with FMOD_CREATECOMPRESSEDSAMPLE only. AT9 codecs consume 8,720 bytes per instance and this number will determine how many AT9 channels can be played simultaneously. Default = 32. */ + int maxPCMcodecs; /* [r/w] Optional. Specify 0 to ignore. For use with PS3 only. PCM codecs consume 12,672 bytes per instance and this number will determine how many streams and PCM voices can be played simultaneously. Default = 16. */ + int ASIONumChannels; /* [r/w] Optional. Specify 0 to ignore. Number of channels available on the ASIO device. */ + char **ASIOChannelList; /* [r/w] Optional. Specify 0 to ignore. Pointer to an array of strings (number of entries defined by ASIONumChannels) with ASIO channel names. */ + FMOD_SPEAKER *ASIOSpeakerList; /* [r/w] Optional. Specify 0 to ignore. Pointer to a list of speakers that the ASIO channels map to. This can be called after System::init to remap ASIO output. */ + int max3DReverbDSPs; /* [r/w] Optional. Specify 0 to ignore. The max number of 3d reverb DSP's in the system. (NOTE: CURRENTLY DISABLED / UNUSED) */ + float HRTFMinAngle; /* [r/w] Optional. For use with FMOD_INIT_HRTF_LOWPASS. The angle range (0-360) of a 3D sound in relation to the listener, at which the HRTF function begins to have an effect. 0 = in front of the listener. 180 = from 90 degrees to the left of the listener to 90 degrees to the right. 360 = behind the listener. Default = 180.0. */ + float HRTFMaxAngle; /* [r/w] Optional. For use with FMOD_INIT_HRTF_LOWPASS. The angle range (0-360) of a 3D sound in relation to the listener, at which the HRTF function has maximum effect. 0 = front of the listener. 180 = from 90 degrees to the left of the listener to 90 degrees to the right. 360 = behind the listener. Default = 360.0. */ + float HRTFFreq; /* [r/w] Optional. Specify 0 to ignore. For use with FMOD_INIT_HRTF_LOWPASS. The cutoff frequency of the HRTF's lowpass filter function when at maximum effect. (i.e. at HRTFMaxAngle). Default = 4000.0. */ + float vol0virtualvol; /* [r/w] Optional. Specify 0 to ignore. For use with FMOD_INIT_VOL0_BECOMES_VIRTUAL. If this flag is used, and the volume is 0.0, then the sound will become virtual. Use this value to raise the threshold to a different point where a sound goes virtual. */ + int eventqueuesize; /* [r/w] Optional. Specify 0 to ignore. For use with FMOD Event system only. Specifies the number of slots available for simultaneous non blocking loads, across all threads. Default = 32. */ + unsigned int defaultDecodeBufferSize; /* [r/w] Optional. Specify 0 to ignore. For streams. This determines the default size of the double buffer (in milliseconds) that a stream uses. Default = 400ms */ + char *debugLogFilename; /* [r/w] Optional. Specify 0 to ignore. Gives fmod's logging system a path/filename. Normally the log is placed in the same directory as the executable and called fmod.log. When using System::getAdvancedSettings, provide at least 256 bytes of memory to copy into. */ + unsigned short profileport; /* [r/w] Optional. Specify 0 to ignore. For use with FMOD_INIT_ENABLE_PROFILE. Specify the port to listen on for connections by the profiler application. */ + unsigned int geometryMaxFadeTime; /* [r/w] Optional. Specify 0 to ignore. The maximum time in miliseconds it takes for a channel to fade to the new level when its occlusion changes. */ + unsigned int maxSpectrumWaveDataBuffers; /* [r/w] Optional. Specify 0 to ignore. Tells System::init to allocate a pool of wavedata/spectrum buffers to prevent memory fragmentation, any additional buffers will be allocated normally. */ + unsigned int musicSystemCacheDelay; /* [r/w] Optional. Specify 0 to ignore. The delay the music system should allow for loading a sample from disk (in milliseconds). Default = 400 ms. */ + float distanceFilterCenterFreq; /* [r/w] Optional. Specify 0 to ignore. For use with FMOD_INIT_DISTANCE_FILTERING. The default center frequency in Hz for the distance filtering effect. Default = 1500.0. */ + unsigned int stackSizeStream; /* [r/w] Optional. Specify 0 to ignore. Specify the stack size for the FMOD Stream thread in bytes. Useful for custom codecs that use excess stack. Default 49,152 (48kb) */ + unsigned int stackSizeNonBlocking; /* [r/w] Optional. Specify 0 to ignore. Specify the stack size for the FMOD_NONBLOCKING loading thread. Useful for custom codecs that use excess stack. Default 65,536 (64kb) */ + unsigned int stackSizeMixer; /* [r/w] Optional. Specify 0 to ignore. Specify the stack size for the FMOD mixer thread. Useful for custom dsps that use excess stack. Default 49,152 (48kb) */ +} FMOD_ADVANCEDSETTINGS; + + +/* +[ENUM] +[ + [DESCRIPTION] + Special channel index values for FMOD functions. + + [REMARKS] + To get 'all' of the channels, use System::getMasterChannelGroup. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + System::playSound + System::playDSP + System::getChannel + System::getMasterChannelGroup +] +*/ +typedef enum +{ + FMOD_CHANNEL_FREE = -1, /* For a channel index, FMOD chooses a free voice using the priority system. */ + FMOD_CHANNEL_REUSE = -2 /* For a channel index, re-use the channel handle that was passed in. */ +} FMOD_CHANNELINDEX; + +#include "fmod_codec.h" +#include "fmod_dsp.h" +#include "fmod_memoryinfo.h" + +/* ========================================================================================== */ +/* FUNCTION PROTOTYPES */ +/* ========================================================================================== */ + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* + FMOD global system functions (optional). +*/ + +FMOD_RESULT F_API FMOD_Memory_Initialize (void *poolmem, int poollen, FMOD_MEMORY_ALLOCCALLBACK useralloc, FMOD_MEMORY_REALLOCCALLBACK userrealloc, FMOD_MEMORY_FREECALLBACK userfree, FMOD_MEMORY_TYPE memtypeflags); +FMOD_RESULT F_API FMOD_Memory_GetStats (int *currentalloced, int *maxalloced, FMOD_BOOL blocking); +FMOD_RESULT F_API FMOD_Debug_SetLevel (FMOD_DEBUGLEVEL level); +FMOD_RESULT F_API FMOD_Debug_GetLevel (FMOD_DEBUGLEVEL *level); +FMOD_RESULT F_API FMOD_File_SetDiskBusy (int busy); +FMOD_RESULT F_API FMOD_File_GetDiskBusy (int *busy); + +/* + FMOD System factory functions. Use this to create an FMOD System Instance. below you will see FMOD_System_Init/Close to get started. +*/ + +FMOD_RESULT F_API FMOD_System_Create (FMOD_SYSTEM **system); +FMOD_RESULT F_API FMOD_System_Release (FMOD_SYSTEM *system); + + +/* + 'System' API +*/ + +/* + Pre-init functions. +*/ + +FMOD_RESULT F_API FMOD_System_SetOutput (FMOD_SYSTEM *system, FMOD_OUTPUTTYPE output); +FMOD_RESULT F_API FMOD_System_GetOutput (FMOD_SYSTEM *system, FMOD_OUTPUTTYPE *output); +FMOD_RESULT F_API FMOD_System_GetNumDrivers (FMOD_SYSTEM *system, int *numdrivers); +FMOD_RESULT F_API FMOD_System_GetDriverInfo (FMOD_SYSTEM *system, int id, char *name, int namelen, FMOD_GUID *guid); +FMOD_RESULT F_API FMOD_System_GetDriverInfoW (FMOD_SYSTEM *system, int id, short *name, int namelen, FMOD_GUID *guid); +FMOD_RESULT F_API FMOD_System_GetDriverCaps (FMOD_SYSTEM *system, int id, FMOD_CAPS *caps, int *controlpaneloutputrate, FMOD_SPEAKERMODE *controlpanelspeakermode); +FMOD_RESULT F_API FMOD_System_SetDriver (FMOD_SYSTEM *system, int driver); +FMOD_RESULT F_API FMOD_System_GetDriver (FMOD_SYSTEM *system, int *driver); +FMOD_RESULT F_API FMOD_System_SetHardwareChannels (FMOD_SYSTEM *system, int numhardwarechannels); +FMOD_RESULT F_API FMOD_System_SetSoftwareChannels (FMOD_SYSTEM *system, int numsoftwarechannels); +FMOD_RESULT F_API FMOD_System_GetSoftwareChannels (FMOD_SYSTEM *system, int *numsoftwarechannels); +FMOD_RESULT F_API FMOD_System_SetSoftwareFormat (FMOD_SYSTEM *system, int samplerate, FMOD_SOUND_FORMAT format, int numoutputchannels, int maxinputchannels, FMOD_DSP_RESAMPLER resamplemethod); +FMOD_RESULT F_API FMOD_System_GetSoftwareFormat (FMOD_SYSTEM *system, int *samplerate, FMOD_SOUND_FORMAT *format, int *numoutputchannels, int *maxinputchannels, FMOD_DSP_RESAMPLER *resamplemethod, int *bits); +FMOD_RESULT F_API FMOD_System_SetDSPBufferSize (FMOD_SYSTEM *system, unsigned int bufferlength, int numbuffers); +FMOD_RESULT F_API FMOD_System_GetDSPBufferSize (FMOD_SYSTEM *system, unsigned int *bufferlength, int *numbuffers); +FMOD_RESULT F_API FMOD_System_SetFileSystem (FMOD_SYSTEM *system, FMOD_FILE_OPENCALLBACK useropen, FMOD_FILE_CLOSECALLBACK userclose, FMOD_FILE_READCALLBACK userread, FMOD_FILE_SEEKCALLBACK userseek, FMOD_FILE_ASYNCREADCALLBACK userasyncread, FMOD_FILE_ASYNCCANCELCALLBACK userasynccancel, int blockalign); +FMOD_RESULT F_API FMOD_System_AttachFileSystem (FMOD_SYSTEM *system, FMOD_FILE_OPENCALLBACK useropen, FMOD_FILE_CLOSECALLBACK userclose, FMOD_FILE_READCALLBACK userread, FMOD_FILE_SEEKCALLBACK userseek); +FMOD_RESULT F_API FMOD_System_SetAdvancedSettings (FMOD_SYSTEM *system, FMOD_ADVANCEDSETTINGS *settings); +FMOD_RESULT F_API FMOD_System_GetAdvancedSettings (FMOD_SYSTEM *system, FMOD_ADVANCEDSETTINGS *settings); +FMOD_RESULT F_API FMOD_System_SetSpeakerMode (FMOD_SYSTEM *system, FMOD_SPEAKERMODE speakermode); +FMOD_RESULT F_API FMOD_System_GetSpeakerMode (FMOD_SYSTEM *system, FMOD_SPEAKERMODE *speakermode); +FMOD_RESULT F_API FMOD_System_SetCallback (FMOD_SYSTEM *system, FMOD_SYSTEM_CALLBACK callback); + +/* + Plug-in support +*/ + +FMOD_RESULT F_API FMOD_System_SetPluginPath (FMOD_SYSTEM *system, const char *path); +FMOD_RESULT F_API FMOD_System_LoadPlugin (FMOD_SYSTEM *system, const char *filename, unsigned int *handle, unsigned int priority); +FMOD_RESULT F_API FMOD_System_UnloadPlugin (FMOD_SYSTEM *system, unsigned int handle); +FMOD_RESULT F_API FMOD_System_GetNumPlugins (FMOD_SYSTEM *system, FMOD_PLUGINTYPE plugintype, int *numplugins); +FMOD_RESULT F_API FMOD_System_GetPluginHandle (FMOD_SYSTEM *system, FMOD_PLUGINTYPE plugintype, int index, unsigned int *handle); +FMOD_RESULT F_API FMOD_System_GetPluginInfo (FMOD_SYSTEM *system, unsigned int handle, FMOD_PLUGINTYPE *plugintype, char *name, int namelen, unsigned int *version); +FMOD_RESULT F_API FMOD_System_SetOutputByPlugin (FMOD_SYSTEM *system, unsigned int handle); +FMOD_RESULT F_API FMOD_System_GetOutputByPlugin (FMOD_SYSTEM *system, unsigned int *handle); +FMOD_RESULT F_API FMOD_System_CreateDSPByPlugin (FMOD_SYSTEM *system, unsigned int handle, FMOD_DSP **dsp); +FMOD_RESULT F_API FMOD_System_RegisterCodec (FMOD_SYSTEM *system, FMOD_CODEC_DESCRIPTION *description, unsigned int *handle, unsigned int priority); +FMOD_RESULT F_API FMOD_System_RegisterDSP (FMOD_SYSTEM *system, FMOD_DSP_DESCRIPTION *description, unsigned int *handle); + +/* + Init/Close +*/ + +FMOD_RESULT F_API FMOD_System_Init (FMOD_SYSTEM *system, int maxchannels, FMOD_INITFLAGS flags, void *extradriverdata); +FMOD_RESULT F_API FMOD_System_Close (FMOD_SYSTEM *system); + +/* + General post-init system functions +*/ + +FMOD_RESULT F_API FMOD_System_Update (FMOD_SYSTEM *system); + +FMOD_RESULT F_API FMOD_System_Set3DSettings (FMOD_SYSTEM *system, float dopplerscale, float distancefactor, float rolloffscale); +FMOD_RESULT F_API FMOD_System_Get3DSettings (FMOD_SYSTEM *system, float *dopplerscale, float *distancefactor, float *rolloffscale); +FMOD_RESULT F_API FMOD_System_Set3DNumListeners (FMOD_SYSTEM *system, int numlisteners); +FMOD_RESULT F_API FMOD_System_Get3DNumListeners (FMOD_SYSTEM *system, int *numlisteners); +FMOD_RESULT F_API FMOD_System_Set3DListenerAttributes(FMOD_SYSTEM *system, int listener, const FMOD_VECTOR *pos, const FMOD_VECTOR *vel, const FMOD_VECTOR *forward, const FMOD_VECTOR *up); +FMOD_RESULT F_API FMOD_System_Get3DListenerAttributes(FMOD_SYSTEM *system, int listener, FMOD_VECTOR *pos, FMOD_VECTOR *vel, FMOD_VECTOR *forward, FMOD_VECTOR *up); +FMOD_RESULT F_API FMOD_System_Set3DRolloffCallback (FMOD_SYSTEM *system, FMOD_3D_ROLLOFFCALLBACK callback); +FMOD_RESULT F_API FMOD_System_Set3DSpeakerPosition (FMOD_SYSTEM *system, FMOD_SPEAKER speaker, float x, float y, FMOD_BOOL active); +FMOD_RESULT F_API FMOD_System_Get3DSpeakerPosition (FMOD_SYSTEM *system, FMOD_SPEAKER speaker, float *x, float *y, FMOD_BOOL *active); + +FMOD_RESULT F_API FMOD_System_SetStreamBufferSize (FMOD_SYSTEM *system, unsigned int filebuffersize, FMOD_TIMEUNIT filebuffersizetype); +FMOD_RESULT F_API FMOD_System_GetStreamBufferSize (FMOD_SYSTEM *system, unsigned int *filebuffersize, FMOD_TIMEUNIT *filebuffersizetype); + +/* + System information functions. +*/ + +FMOD_RESULT F_API FMOD_System_GetVersion (FMOD_SYSTEM *system, unsigned int *version); +FMOD_RESULT F_API FMOD_System_GetOutputHandle (FMOD_SYSTEM *system, void **handle); +FMOD_RESULT F_API FMOD_System_GetChannelsPlaying (FMOD_SYSTEM *system, int *channels); +FMOD_RESULT F_API FMOD_System_GetHardwareChannels (FMOD_SYSTEM *system, int *numhardwarechannels); +FMOD_RESULT F_API FMOD_System_GetCPUUsage (FMOD_SYSTEM *system, float *dsp, float *stream, float *geometry, float *update, float *total); +FMOD_RESULT F_API FMOD_System_GetSoundRAM (FMOD_SYSTEM *system, int *currentalloced, int *maxalloced, int *total); +FMOD_RESULT F_API FMOD_System_GetNumCDROMDrives (FMOD_SYSTEM *system, int *numdrives); +FMOD_RESULT F_API FMOD_System_GetCDROMDriveName (FMOD_SYSTEM *system, int drive, char *drivename, int drivenamelen, char *scsiname, int scsinamelen, char *devicename, int devicenamelen); +FMOD_RESULT F_API FMOD_System_GetSpectrum (FMOD_SYSTEM *system, float *spectrumarray, int numvalues, int channeloffset, FMOD_DSP_FFT_WINDOW windowtype); +FMOD_RESULT F_API FMOD_System_GetWaveData (FMOD_SYSTEM *system, float *wavearray, int numvalues, int channeloffset); + +/* + Sound/DSP/Channel/FX creation and retrieval. +*/ + +FMOD_RESULT F_API FMOD_System_CreateSound (FMOD_SYSTEM *system, const char *name_or_data, FMOD_MODE mode, FMOD_CREATESOUNDEXINFO *exinfo, FMOD_SOUND **sound); +FMOD_RESULT F_API FMOD_System_CreateStream (FMOD_SYSTEM *system, const char *name_or_data, FMOD_MODE mode, FMOD_CREATESOUNDEXINFO *exinfo, FMOD_SOUND **sound); +FMOD_RESULT F_API FMOD_System_CreateDSP (FMOD_SYSTEM *system, FMOD_DSP_DESCRIPTION *description, FMOD_DSP **dsp); +FMOD_RESULT F_API FMOD_System_CreateDSPByType (FMOD_SYSTEM *system, FMOD_DSP_TYPE type, FMOD_DSP **dsp); +FMOD_RESULT F_API FMOD_System_CreateChannelGroup (FMOD_SYSTEM *system, const char *name, FMOD_CHANNELGROUP **channelgroup); +FMOD_RESULT F_API FMOD_System_CreateSoundGroup (FMOD_SYSTEM *system, const char *name, FMOD_SOUNDGROUP **soundgroup); +FMOD_RESULT F_API FMOD_System_CreateReverb (FMOD_SYSTEM *system, FMOD_REVERB **reverb); + +FMOD_RESULT F_API FMOD_System_PlaySound (FMOD_SYSTEM *system, FMOD_CHANNELINDEX channelid, FMOD_SOUND *sound, FMOD_BOOL paused, FMOD_CHANNEL **channel); +FMOD_RESULT F_API FMOD_System_PlayDSP (FMOD_SYSTEM *system, FMOD_CHANNELINDEX channelid, FMOD_DSP *dsp, FMOD_BOOL paused, FMOD_CHANNEL **channel); +FMOD_RESULT F_API FMOD_System_GetChannel (FMOD_SYSTEM *system, int channelid, FMOD_CHANNEL **channel); +FMOD_RESULT F_API FMOD_System_GetMasterChannelGroup (FMOD_SYSTEM *system, FMOD_CHANNELGROUP **channelgroup); +FMOD_RESULT F_API FMOD_System_GetMasterSoundGroup (FMOD_SYSTEM *system, FMOD_SOUNDGROUP **soundgroup); + +/* + Reverb API +*/ + +FMOD_RESULT F_API FMOD_System_SetReverbProperties (FMOD_SYSTEM *system, const FMOD_REVERB_PROPERTIES *prop); +FMOD_RESULT F_API FMOD_System_GetReverbProperties (FMOD_SYSTEM *system, FMOD_REVERB_PROPERTIES *prop); +FMOD_RESULT F_API FMOD_System_SetReverbAmbientProperties(FMOD_SYSTEM *system, FMOD_REVERB_PROPERTIES *prop); +FMOD_RESULT F_API FMOD_System_GetReverbAmbientProperties(FMOD_SYSTEM *system, FMOD_REVERB_PROPERTIES *prop); + +/* + System level DSP access. +*/ + +FMOD_RESULT F_API FMOD_System_GetDSPHead (FMOD_SYSTEM *system, FMOD_DSP **dsp); +FMOD_RESULT F_API FMOD_System_AddDSP (FMOD_SYSTEM *system, FMOD_DSP *dsp, FMOD_DSPCONNECTION **connection); +FMOD_RESULT F_API FMOD_System_LockDSP (FMOD_SYSTEM *system); +FMOD_RESULT F_API FMOD_System_UnlockDSP (FMOD_SYSTEM *system); +FMOD_RESULT F_API FMOD_System_GetDSPClock (FMOD_SYSTEM *system, unsigned int *hi, unsigned int *lo); + +/* + Recording API. +*/ + +FMOD_RESULT F_API FMOD_System_GetRecordNumDrivers (FMOD_SYSTEM *system, int *numdrivers); +FMOD_RESULT F_API FMOD_System_GetRecordDriverInfo (FMOD_SYSTEM *system, int id, char *name, int namelen, FMOD_GUID *guid); +FMOD_RESULT F_API FMOD_System_GetRecordDriverInfoW (FMOD_SYSTEM *system, int id, short *name, int namelen, FMOD_GUID *guid); +FMOD_RESULT F_API FMOD_System_GetRecordDriverCaps (FMOD_SYSTEM *system, int id, FMOD_CAPS *caps, int *minfrequency, int *maxfrequency); +FMOD_RESULT F_API FMOD_System_GetRecordPosition (FMOD_SYSTEM *system, int id, unsigned int *position); + +FMOD_RESULT F_API FMOD_System_RecordStart (FMOD_SYSTEM *system, int id, FMOD_SOUND *sound, FMOD_BOOL loop); +FMOD_RESULT F_API FMOD_System_RecordStop (FMOD_SYSTEM *system, int id); +FMOD_RESULT F_API FMOD_System_IsRecording (FMOD_SYSTEM *system, int id, FMOD_BOOL *recording); + +/* + Geometry API. +*/ + +FMOD_RESULT F_API FMOD_System_CreateGeometry (FMOD_SYSTEM *system, int maxpolygons, int maxvertices, FMOD_GEOMETRY **geometry); +FMOD_RESULT F_API FMOD_System_SetGeometrySettings (FMOD_SYSTEM *system, float maxworldsize); +FMOD_RESULT F_API FMOD_System_GetGeometrySettings (FMOD_SYSTEM *system, float *maxworldsize); +FMOD_RESULT F_API FMOD_System_LoadGeometry (FMOD_SYSTEM *system, const void *data, int datasize, FMOD_GEOMETRY **geometry); +FMOD_RESULT F_API FMOD_System_GetGeometryOcclusion (FMOD_SYSTEM *system, const FMOD_VECTOR *listener, const FMOD_VECTOR *source, float *direct, float *reverb); + +/* + Network functions. +*/ + +FMOD_RESULT F_API FMOD_System_SetNetworkProxy (FMOD_SYSTEM *system, const char *proxy); +FMOD_RESULT F_API FMOD_System_GetNetworkProxy (FMOD_SYSTEM *system, char *proxy, int proxylen); +FMOD_RESULT F_API FMOD_System_SetNetworkTimeout (FMOD_SYSTEM *system, int timeout); +FMOD_RESULT F_API FMOD_System_GetNetworkTimeout (FMOD_SYSTEM *system, int *timeout); + +/* + Userdata set/get. +*/ + +FMOD_RESULT F_API FMOD_System_SetUserData (FMOD_SYSTEM *system, void *userdata); +FMOD_RESULT F_API FMOD_System_GetUserData (FMOD_SYSTEM *system, void **userdata); + +FMOD_RESULT F_API FMOD_System_GetMemoryInfo (FMOD_SYSTEM *system, unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, FMOD_MEMORY_USAGE_DETAILS *memoryused_details); + +/* + 'Sound' API +*/ + +FMOD_RESULT F_API FMOD_Sound_Release (FMOD_SOUND *sound); +FMOD_RESULT F_API FMOD_Sound_GetSystemObject (FMOD_SOUND *sound, FMOD_SYSTEM **system); + +/* + Standard sound manipulation functions. +*/ + +FMOD_RESULT F_API FMOD_Sound_Lock (FMOD_SOUND *sound, unsigned int offset, unsigned int length, void **ptr1, void **ptr2, unsigned int *len1, unsigned int *len2); +FMOD_RESULT F_API FMOD_Sound_Unlock (FMOD_SOUND *sound, void *ptr1, void *ptr2, unsigned int len1, unsigned int len2); +FMOD_RESULT F_API FMOD_Sound_SetDefaults (FMOD_SOUND *sound, float frequency, float volume, float pan, int priority); +FMOD_RESULT F_API FMOD_Sound_GetDefaults (FMOD_SOUND *sound, float *frequency, float *volume, float *pan, int *priority); +FMOD_RESULT F_API FMOD_Sound_SetVariations (FMOD_SOUND *sound, float frequencyvar, float volumevar, float panvar); +FMOD_RESULT F_API FMOD_Sound_GetVariations (FMOD_SOUND *sound, float *frequencyvar, float *volumevar, float *panvar); +FMOD_RESULT F_API FMOD_Sound_Set3DMinMaxDistance (FMOD_SOUND *sound, float min, float max); +FMOD_RESULT F_API FMOD_Sound_Get3DMinMaxDistance (FMOD_SOUND *sound, float *min, float *max); +FMOD_RESULT F_API FMOD_Sound_Set3DConeSettings (FMOD_SOUND *sound, float insideconeangle, float outsideconeangle, float outsidevolume); +FMOD_RESULT F_API FMOD_Sound_Get3DConeSettings (FMOD_SOUND *sound, float *insideconeangle, float *outsideconeangle, float *outsidevolume); +FMOD_RESULT F_API FMOD_Sound_Set3DCustomRolloff (FMOD_SOUND *sound, FMOD_VECTOR *points, int numpoints); +FMOD_RESULT F_API FMOD_Sound_Get3DCustomRolloff (FMOD_SOUND *sound, FMOD_VECTOR **points, int *numpoints); +FMOD_RESULT F_API FMOD_Sound_SetSubSound (FMOD_SOUND *sound, int index, FMOD_SOUND *subsound); +FMOD_RESULT F_API FMOD_Sound_GetSubSound (FMOD_SOUND *sound, int index, FMOD_SOUND **subsound); +FMOD_RESULT F_API FMOD_Sound_GetSubSoundParent (FMOD_SOUND *sound, FMOD_SOUND **parentsound); +FMOD_RESULT F_API FMOD_Sound_SetSubSoundSentence (FMOD_SOUND *sound, int *subsoundlist, int numsubsounds); +FMOD_RESULT F_API FMOD_Sound_GetName (FMOD_SOUND *sound, char *name, int namelen); +FMOD_RESULT F_API FMOD_Sound_GetLength (FMOD_SOUND *sound, unsigned int *length, FMOD_TIMEUNIT lengthtype); +FMOD_RESULT F_API FMOD_Sound_GetFormat (FMOD_SOUND *sound, FMOD_SOUND_TYPE *type, FMOD_SOUND_FORMAT *format, int *channels, int *bits); +FMOD_RESULT F_API FMOD_Sound_GetNumSubSounds (FMOD_SOUND *sound, int *numsubsounds); +FMOD_RESULT F_API FMOD_Sound_GetNumTags (FMOD_SOUND *sound, int *numtags, int *numtagsupdated); +FMOD_RESULT F_API FMOD_Sound_GetTag (FMOD_SOUND *sound, const char *name, int index, FMOD_TAG *tag); +FMOD_RESULT F_API FMOD_Sound_GetOpenState (FMOD_SOUND *sound, FMOD_OPENSTATE *openstate, unsigned int *percentbuffered, FMOD_BOOL *starving, FMOD_BOOL *diskbusy); +FMOD_RESULT F_API FMOD_Sound_ReadData (FMOD_SOUND *sound, void *buffer, unsigned int lenbytes, unsigned int *read); +FMOD_RESULT F_API FMOD_Sound_SeekData (FMOD_SOUND *sound, unsigned int pcm); + +FMOD_RESULT F_API FMOD_Sound_SetSoundGroup (FMOD_SOUND *sound, FMOD_SOUNDGROUP *soundgroup); +FMOD_RESULT F_API FMOD_Sound_GetSoundGroup (FMOD_SOUND *sound, FMOD_SOUNDGROUP **soundgroup); + +/* + Synchronization point API. These points can come from markers embedded in wav files, and can also generate channel callbacks. +*/ + +FMOD_RESULT F_API FMOD_Sound_GetNumSyncPoints (FMOD_SOUND *sound, int *numsyncpoints); +FMOD_RESULT F_API FMOD_Sound_GetSyncPoint (FMOD_SOUND *sound, int index, FMOD_SYNCPOINT **point); +FMOD_RESULT F_API FMOD_Sound_GetSyncPointInfo (FMOD_SOUND *sound, FMOD_SYNCPOINT *point, char *name, int namelen, unsigned int *offset, FMOD_TIMEUNIT offsettype); +FMOD_RESULT F_API FMOD_Sound_AddSyncPoint (FMOD_SOUND *sound, unsigned int offset, FMOD_TIMEUNIT offsettype, const char *name, FMOD_SYNCPOINT **point); +FMOD_RESULT F_API FMOD_Sound_DeleteSyncPoint (FMOD_SOUND *sound, FMOD_SYNCPOINT *point); + +/* + Functions also in Channel class but here they are the 'default' to save having to change it in Channel all the time. +*/ + +FMOD_RESULT F_API FMOD_Sound_SetMode (FMOD_SOUND *sound, FMOD_MODE mode); +FMOD_RESULT F_API FMOD_Sound_GetMode (FMOD_SOUND *sound, FMOD_MODE *mode); +FMOD_RESULT F_API FMOD_Sound_SetLoopCount (FMOD_SOUND *sound, int loopcount); +FMOD_RESULT F_API FMOD_Sound_GetLoopCount (FMOD_SOUND *sound, int *loopcount); +FMOD_RESULT F_API FMOD_Sound_SetLoopPoints (FMOD_SOUND *sound, unsigned int loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int loopend, FMOD_TIMEUNIT loopendtype); +FMOD_RESULT F_API FMOD_Sound_GetLoopPoints (FMOD_SOUND *sound, unsigned int *loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int *loopend, FMOD_TIMEUNIT loopendtype); + +/* + For MOD/S3M/XM/IT/MID sequenced formats only. +*/ + +FMOD_RESULT F_API FMOD_Sound_GetMusicNumChannels (FMOD_SOUND *sound, int *numchannels); +FMOD_RESULT F_API FMOD_Sound_SetMusicChannelVolume (FMOD_SOUND *sound, int channel, float volume); +FMOD_RESULT F_API FMOD_Sound_GetMusicChannelVolume (FMOD_SOUND *sound, int channel, float *volume); +FMOD_RESULT F_API FMOD_Sound_SetMusicSpeed (FMOD_SOUND *sound, float speed); +FMOD_RESULT F_API FMOD_Sound_GetMusicSpeed (FMOD_SOUND *sound, float *speed); + +/* + Userdata set/get. +*/ + +FMOD_RESULT F_API FMOD_Sound_SetUserData (FMOD_SOUND *sound, void *userdata); +FMOD_RESULT F_API FMOD_Sound_GetUserData (FMOD_SOUND *sound, void **userdata); + +FMOD_RESULT F_API FMOD_Sound_GetMemoryInfo (FMOD_SOUND *sound, unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, FMOD_MEMORY_USAGE_DETAILS *memoryused_details); + +/* + 'Channel' API +*/ + +FMOD_RESULT F_API FMOD_Channel_GetSystemObject (FMOD_CHANNEL *channel, FMOD_SYSTEM **system); + +FMOD_RESULT F_API FMOD_Channel_Stop (FMOD_CHANNEL *channel); +FMOD_RESULT F_API FMOD_Channel_SetPaused (FMOD_CHANNEL *channel, FMOD_BOOL paused); +FMOD_RESULT F_API FMOD_Channel_GetPaused (FMOD_CHANNEL *channel, FMOD_BOOL *paused); +FMOD_RESULT F_API FMOD_Channel_SetVolume (FMOD_CHANNEL *channel, float volume); +FMOD_RESULT F_API FMOD_Channel_GetVolume (FMOD_CHANNEL *channel, float *volume); +FMOD_RESULT F_API FMOD_Channel_SetFrequency (FMOD_CHANNEL *channel, float frequency); +FMOD_RESULT F_API FMOD_Channel_GetFrequency (FMOD_CHANNEL *channel, float *frequency); +FMOD_RESULT F_API FMOD_Channel_SetPan (FMOD_CHANNEL *channel, float pan); +FMOD_RESULT F_API FMOD_Channel_GetPan (FMOD_CHANNEL *channel, float *pan); +FMOD_RESULT F_API FMOD_Channel_SetDelay (FMOD_CHANNEL *channel, FMOD_DELAYTYPE delaytype, unsigned int delayhi, unsigned int delaylo); +FMOD_RESULT F_API FMOD_Channel_GetDelay (FMOD_CHANNEL *channel, FMOD_DELAYTYPE delaytype, unsigned int *delayhi, unsigned int *delaylo); +FMOD_RESULT F_API FMOD_Channel_SetSpeakerMix (FMOD_CHANNEL *channel, float frontleft, float frontright, float center, float lfe, float backleft, float backright, float sideleft, float sideright); +FMOD_RESULT F_API FMOD_Channel_GetSpeakerMix (FMOD_CHANNEL *channel, float *frontleft, float *frontright, float *center, float *lfe, float *backleft, float *backright, float *sideleft, float *sideright); +FMOD_RESULT F_API FMOD_Channel_SetSpeakerLevels (FMOD_CHANNEL *channel, FMOD_SPEAKER speaker, float *levels, int numlevels); +FMOD_RESULT F_API FMOD_Channel_GetSpeakerLevels (FMOD_CHANNEL *channel, FMOD_SPEAKER speaker, float *levels, int numlevels); +FMOD_RESULT F_API FMOD_Channel_SetInputChannelMix (FMOD_CHANNEL *channel, float *levels, int numlevels); +FMOD_RESULT F_API FMOD_Channel_GetInputChannelMix (FMOD_CHANNEL *channel, float *levels, int numlevels); +FMOD_RESULT F_API FMOD_Channel_SetMute (FMOD_CHANNEL *channel, FMOD_BOOL mute); +FMOD_RESULT F_API FMOD_Channel_GetMute (FMOD_CHANNEL *channel, FMOD_BOOL *mute); +FMOD_RESULT F_API FMOD_Channel_SetPriority (FMOD_CHANNEL *channel, int priority); +FMOD_RESULT F_API FMOD_Channel_GetPriority (FMOD_CHANNEL *channel, int *priority); +FMOD_RESULT F_API FMOD_Channel_SetPosition (FMOD_CHANNEL *channel, unsigned int position, FMOD_TIMEUNIT postype); +FMOD_RESULT F_API FMOD_Channel_GetPosition (FMOD_CHANNEL *channel, unsigned int *position, FMOD_TIMEUNIT postype); +FMOD_RESULT F_API FMOD_Channel_SetReverbProperties (FMOD_CHANNEL *channel, const FMOD_REVERB_CHANNELPROPERTIES *prop); +FMOD_RESULT F_API FMOD_Channel_GetReverbProperties (FMOD_CHANNEL *channel, FMOD_REVERB_CHANNELPROPERTIES *prop); +FMOD_RESULT F_API FMOD_Channel_SetLowPassGain (FMOD_CHANNEL *channel, float gain); +FMOD_RESULT F_API FMOD_Channel_GetLowPassGain (FMOD_CHANNEL *channel, float *gain); + +FMOD_RESULT F_API FMOD_Channel_SetChannelGroup (FMOD_CHANNEL *channel, FMOD_CHANNELGROUP *channelgroup); +FMOD_RESULT F_API FMOD_Channel_GetChannelGroup (FMOD_CHANNEL *channel, FMOD_CHANNELGROUP **channelgroup); +FMOD_RESULT F_API FMOD_Channel_SetCallback (FMOD_CHANNEL *channel, FMOD_CHANNEL_CALLBACK callback); + +/* + 3D functionality. +*/ + +FMOD_RESULT F_API FMOD_Channel_Set3DAttributes (FMOD_CHANNEL *channel, const FMOD_VECTOR *pos, const FMOD_VECTOR *vel); +FMOD_RESULT F_API FMOD_Channel_Get3DAttributes (FMOD_CHANNEL *channel, FMOD_VECTOR *pos, FMOD_VECTOR *vel); +FMOD_RESULT F_API FMOD_Channel_Set3DMinMaxDistance (FMOD_CHANNEL *channel, float mindistance, float maxdistance); +FMOD_RESULT F_API FMOD_Channel_Get3DMinMaxDistance (FMOD_CHANNEL *channel, float *mindistance, float *maxdistance); +FMOD_RESULT F_API FMOD_Channel_Set3DConeSettings (FMOD_CHANNEL *channel, float insideconeangle, float outsideconeangle, float outsidevolume); +FMOD_RESULT F_API FMOD_Channel_Get3DConeSettings (FMOD_CHANNEL *channel, float *insideconeangle, float *outsideconeangle, float *outsidevolume); +FMOD_RESULT F_API FMOD_Channel_Set3DConeOrientation (FMOD_CHANNEL *channel, FMOD_VECTOR *orientation); +FMOD_RESULT F_API FMOD_Channel_Get3DConeOrientation (FMOD_CHANNEL *channel, FMOD_VECTOR *orientation); +FMOD_RESULT F_API FMOD_Channel_Set3DCustomRolloff (FMOD_CHANNEL *channel, FMOD_VECTOR *points, int numpoints); +FMOD_RESULT F_API FMOD_Channel_Get3DCustomRolloff (FMOD_CHANNEL *channel, FMOD_VECTOR **points, int *numpoints); +FMOD_RESULT F_API FMOD_Channel_Set3DOcclusion (FMOD_CHANNEL *channel, float directocclusion, float reverbocclusion); +FMOD_RESULT F_API FMOD_Channel_Get3DOcclusion (FMOD_CHANNEL *channel, float *directocclusion, float *reverbocclusion); +FMOD_RESULT F_API FMOD_Channel_Set3DSpread (FMOD_CHANNEL *channel, float angle); +FMOD_RESULT F_API FMOD_Channel_Get3DSpread (FMOD_CHANNEL *channel, float *angle); +FMOD_RESULT F_API FMOD_Channel_Set3DPanLevel (FMOD_CHANNEL *channel, float level); +FMOD_RESULT F_API FMOD_Channel_Get3DPanLevel (FMOD_CHANNEL *channel, float *level); +FMOD_RESULT F_API FMOD_Channel_Set3DDopplerLevel (FMOD_CHANNEL *channel, float level); +FMOD_RESULT F_API FMOD_Channel_Get3DDopplerLevel (FMOD_CHANNEL *channel, float *level); +FMOD_RESULT F_API FMOD_Channel_Set3DDistanceFilter (FMOD_CHANNEL *channel, FMOD_BOOL custom, float customLevel, float centerFreq); +FMOD_RESULT F_API FMOD_Channel_Get3DDistanceFilter (FMOD_CHANNEL *channel, FMOD_BOOL *custom, float *customLevel, float *centerFreq); + +/* + DSP functionality only for channels playing sounds created with FMOD_SOFTWARE. +*/ + +FMOD_RESULT F_API FMOD_Channel_GetDSPHead (FMOD_CHANNEL *channel, FMOD_DSP **dsp); +FMOD_RESULT F_API FMOD_Channel_AddDSP (FMOD_CHANNEL *channel, FMOD_DSP *dsp, FMOD_DSPCONNECTION **connection); + +/* + Information only functions. +*/ + +FMOD_RESULT F_API FMOD_Channel_IsPlaying (FMOD_CHANNEL *channel, FMOD_BOOL *isplaying); +FMOD_RESULT F_API FMOD_Channel_IsVirtual (FMOD_CHANNEL *channel, FMOD_BOOL *isvirtual); +FMOD_RESULT F_API FMOD_Channel_GetAudibility (FMOD_CHANNEL *channel, float *audibility); +FMOD_RESULT F_API FMOD_Channel_GetCurrentSound (FMOD_CHANNEL *channel, FMOD_SOUND **sound); +FMOD_RESULT F_API FMOD_Channel_GetSpectrum (FMOD_CHANNEL *channel, float *spectrumarray, int numvalues, int channeloffset, FMOD_DSP_FFT_WINDOW windowtype); +FMOD_RESULT F_API FMOD_Channel_GetWaveData (FMOD_CHANNEL *channel, float *wavearray, int numvalues, int channeloffset); +FMOD_RESULT F_API FMOD_Channel_GetIndex (FMOD_CHANNEL *channel, int *index); + +/* + Functions also found in Sound class but here they can be set per channel. +*/ + +FMOD_RESULT F_API FMOD_Channel_SetMode (FMOD_CHANNEL *channel, FMOD_MODE mode); +FMOD_RESULT F_API FMOD_Channel_GetMode (FMOD_CHANNEL *channel, FMOD_MODE *mode); +FMOD_RESULT F_API FMOD_Channel_SetLoopCount (FMOD_CHANNEL *channel, int loopcount); +FMOD_RESULT F_API FMOD_Channel_GetLoopCount (FMOD_CHANNEL *channel, int *loopcount); +FMOD_RESULT F_API FMOD_Channel_SetLoopPoints (FMOD_CHANNEL *channel, unsigned int loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int loopend, FMOD_TIMEUNIT loopendtype); +FMOD_RESULT F_API FMOD_Channel_GetLoopPoints (FMOD_CHANNEL *channel, unsigned int *loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int *loopend, FMOD_TIMEUNIT loopendtype); + +/* + Userdata set/get. +*/ + +FMOD_RESULT F_API FMOD_Channel_SetUserData (FMOD_CHANNEL *channel, void *userdata); +FMOD_RESULT F_API FMOD_Channel_GetUserData (FMOD_CHANNEL *channel, void **userdata); + +FMOD_RESULT F_API FMOD_Channel_GetMemoryInfo (FMOD_CHANNEL *channel, unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, FMOD_MEMORY_USAGE_DETAILS *memoryused_details); + +/* + 'ChannelGroup' API +*/ + +FMOD_RESULT F_API FMOD_ChannelGroup_Release (FMOD_CHANNELGROUP *channelgroup); +FMOD_RESULT F_API FMOD_ChannelGroup_GetSystemObject (FMOD_CHANNELGROUP *channelgroup, FMOD_SYSTEM **system); + +/* + Channelgroup scale values. (changes attributes relative to the channels, doesn't overwrite them) +*/ + +FMOD_RESULT F_API FMOD_ChannelGroup_SetVolume (FMOD_CHANNELGROUP *channelgroup, float volume); +FMOD_RESULT F_API FMOD_ChannelGroup_GetVolume (FMOD_CHANNELGROUP *channelgroup, float *volume); +FMOD_RESULT F_API FMOD_ChannelGroup_SetPitch (FMOD_CHANNELGROUP *channelgroup, float pitch); +FMOD_RESULT F_API FMOD_ChannelGroup_GetPitch (FMOD_CHANNELGROUP *channelgroup, float *pitch); +FMOD_RESULT F_API FMOD_ChannelGroup_Set3DOcclusion (FMOD_CHANNELGROUP *channelgroup, float directocclusion, float reverbocclusion); +FMOD_RESULT F_API FMOD_ChannelGroup_Get3DOcclusion (FMOD_CHANNELGROUP *channelgroup, float *directocclusion, float *reverbocclusion); +FMOD_RESULT F_API FMOD_ChannelGroup_SetPaused (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL paused); +FMOD_RESULT F_API FMOD_ChannelGroup_GetPaused (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL *paused); +FMOD_RESULT F_API FMOD_ChannelGroup_SetMute (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL mute); +FMOD_RESULT F_API FMOD_ChannelGroup_GetMute (FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL *mute); + +/* + Channelgroup override values. (recursively overwrites whatever settings the channels had) +*/ + +FMOD_RESULT F_API FMOD_ChannelGroup_Stop (FMOD_CHANNELGROUP *channelgroup); +FMOD_RESULT F_API FMOD_ChannelGroup_OverrideVolume (FMOD_CHANNELGROUP *channelgroup, float volume); +FMOD_RESULT F_API FMOD_ChannelGroup_OverrideFrequency(FMOD_CHANNELGROUP *channelgroup, float frequency); +FMOD_RESULT F_API FMOD_ChannelGroup_OverridePan (FMOD_CHANNELGROUP *channelgroup, float pan); +FMOD_RESULT F_API FMOD_ChannelGroup_OverrideReverbProperties(FMOD_CHANNELGROUP *channelgroup, const FMOD_REVERB_CHANNELPROPERTIES *prop); +FMOD_RESULT F_API FMOD_ChannelGroup_Override3DAttributes(FMOD_CHANNELGROUP *channelgroup, const FMOD_VECTOR *pos, const FMOD_VECTOR *vel); +FMOD_RESULT F_API FMOD_ChannelGroup_OverrideSpeakerMix(FMOD_CHANNELGROUP *channelgroup, float frontleft, float frontright, float center, float lfe, float backleft, float backright, float sideleft, float sideright); + +/* + Nested channel groups. +*/ + +FMOD_RESULT F_API FMOD_ChannelGroup_AddGroup (FMOD_CHANNELGROUP *channelgroup, FMOD_CHANNELGROUP *group); +FMOD_RESULT F_API FMOD_ChannelGroup_GetNumGroups (FMOD_CHANNELGROUP *channelgroup, int *numgroups); +FMOD_RESULT F_API FMOD_ChannelGroup_GetGroup (FMOD_CHANNELGROUP *channelgroup, int index, FMOD_CHANNELGROUP **group); +FMOD_RESULT F_API FMOD_ChannelGroup_GetParentGroup (FMOD_CHANNELGROUP *channelgroup, FMOD_CHANNELGROUP **group); + +/* + DSP functionality only for channel groups playing sounds created with FMOD_SOFTWARE. +*/ + +FMOD_RESULT F_API FMOD_ChannelGroup_GetDSPHead (FMOD_CHANNELGROUP *channelgroup, FMOD_DSP **dsp); +FMOD_RESULT F_API FMOD_ChannelGroup_AddDSP (FMOD_CHANNELGROUP *channelgroup, FMOD_DSP *dsp, FMOD_DSPCONNECTION **connection); + +/* + Information only functions. +*/ + +FMOD_RESULT F_API FMOD_ChannelGroup_GetName (FMOD_CHANNELGROUP *channelgroup, char *name, int namelen); +FMOD_RESULT F_API FMOD_ChannelGroup_GetNumChannels (FMOD_CHANNELGROUP *channelgroup, int *numchannels); +FMOD_RESULT F_API FMOD_ChannelGroup_GetChannel (FMOD_CHANNELGROUP *channelgroup, int index, FMOD_CHANNEL **channel); +FMOD_RESULT F_API FMOD_ChannelGroup_GetSpectrum (FMOD_CHANNELGROUP *channelgroup, float *spectrumarray, int numvalues, int channeloffset, FMOD_DSP_FFT_WINDOW windowtype); +FMOD_RESULT F_API FMOD_ChannelGroup_GetWaveData (FMOD_CHANNELGROUP *channelgroup, float *wavearray, int numvalues, int channeloffset); + +/* + Userdata set/get. +*/ + +FMOD_RESULT F_API FMOD_ChannelGroup_SetUserData (FMOD_CHANNELGROUP *channelgroup, void *userdata); +FMOD_RESULT F_API FMOD_ChannelGroup_GetUserData (FMOD_CHANNELGROUP *channelgroup, void **userdata); + +FMOD_RESULT F_API FMOD_ChannelGroup_GetMemoryInfo (FMOD_CHANNELGROUP *channelgroup, unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, FMOD_MEMORY_USAGE_DETAILS *memoryused_details); + +/* + 'SoundGroup' API +*/ + +FMOD_RESULT F_API FMOD_SoundGroup_Release (FMOD_SOUNDGROUP *soundgroup); +FMOD_RESULT F_API FMOD_SoundGroup_GetSystemObject (FMOD_SOUNDGROUP *soundgroup, FMOD_SYSTEM **system); + +/* + SoundGroup control functions. +*/ + +FMOD_RESULT F_API FMOD_SoundGroup_SetMaxAudible (FMOD_SOUNDGROUP *soundgroup, int maxaudible); +FMOD_RESULT F_API FMOD_SoundGroup_GetMaxAudible (FMOD_SOUNDGROUP *soundgroup, int *maxaudible); +FMOD_RESULT F_API FMOD_SoundGroup_SetMaxAudibleBehavior(FMOD_SOUNDGROUP *soundgroup, FMOD_SOUNDGROUP_BEHAVIOR behavior); +FMOD_RESULT F_API FMOD_SoundGroup_GetMaxAudibleBehavior(FMOD_SOUNDGROUP *soundgroup, FMOD_SOUNDGROUP_BEHAVIOR *behavior); +FMOD_RESULT F_API FMOD_SoundGroup_SetMuteFadeSpeed (FMOD_SOUNDGROUP *soundgroup, float speed); +FMOD_RESULT F_API FMOD_SoundGroup_GetMuteFadeSpeed (FMOD_SOUNDGROUP *soundgroup, float *speed); +FMOD_RESULT F_API FMOD_SoundGroup_SetVolume (FMOD_SOUNDGROUP *soundgroup, float volume); +FMOD_RESULT F_API FMOD_SoundGroup_GetVolume (FMOD_SOUNDGROUP *soundgroup, float *volume); +FMOD_RESULT F_API FMOD_SoundGroup_Stop (FMOD_SOUNDGROUP *soundgroup); + +/* + Information only functions. +*/ + +FMOD_RESULT F_API FMOD_SoundGroup_GetName (FMOD_SOUNDGROUP *soundgroup, char *name, int namelen); +FMOD_RESULT F_API FMOD_SoundGroup_GetNumSounds (FMOD_SOUNDGROUP *soundgroup, int *numsounds); +FMOD_RESULT F_API FMOD_SoundGroup_GetSound (FMOD_SOUNDGROUP *soundgroup, int index, FMOD_SOUND **sound); +FMOD_RESULT F_API FMOD_SoundGroup_GetNumPlaying (FMOD_SOUNDGROUP *soundgroup, int *numplaying); + +/* + Userdata set/get. +*/ + +FMOD_RESULT F_API FMOD_SoundGroup_SetUserData (FMOD_SOUNDGROUP *soundgroup, void *userdata); +FMOD_RESULT F_API FMOD_SoundGroup_GetUserData (FMOD_SOUNDGROUP *soundgroup, void **userdata); + +FMOD_RESULT F_API FMOD_SoundGroup_GetMemoryInfo (FMOD_SOUNDGROUP *soundgroup, unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, FMOD_MEMORY_USAGE_DETAILS *memoryused_details); + +/* + 'DSP' API +*/ + +FMOD_RESULT F_API FMOD_DSP_Release (FMOD_DSP *dsp); +FMOD_RESULT F_API FMOD_DSP_GetSystemObject (FMOD_DSP *dsp, FMOD_SYSTEM **system); + +/* + Connection / disconnection / input and output enumeration. +*/ + +FMOD_RESULT F_API FMOD_DSP_AddInput (FMOD_DSP *dsp, FMOD_DSP *target, FMOD_DSPCONNECTION **connection); +FMOD_RESULT F_API FMOD_DSP_DisconnectFrom (FMOD_DSP *dsp, FMOD_DSP *target); +FMOD_RESULT F_API FMOD_DSP_DisconnectAll (FMOD_DSP *dsp, FMOD_BOOL inputs, FMOD_BOOL outputs); +FMOD_RESULT F_API FMOD_DSP_Remove (FMOD_DSP *dsp); +FMOD_RESULT F_API FMOD_DSP_GetNumInputs (FMOD_DSP *dsp, int *numinputs); +FMOD_RESULT F_API FMOD_DSP_GetNumOutputs (FMOD_DSP *dsp, int *numoutputs); +FMOD_RESULT F_API FMOD_DSP_GetInput (FMOD_DSP *dsp, int index, FMOD_DSP **input, FMOD_DSPCONNECTION **inputconnection); +FMOD_RESULT F_API FMOD_DSP_GetOutput (FMOD_DSP *dsp, int index, FMOD_DSP **output, FMOD_DSPCONNECTION **outputconnection); + +/* + DSP unit control. +*/ + +FMOD_RESULT F_API FMOD_DSP_SetActive (FMOD_DSP *dsp, FMOD_BOOL active); +FMOD_RESULT F_API FMOD_DSP_GetActive (FMOD_DSP *dsp, FMOD_BOOL *active); +FMOD_RESULT F_API FMOD_DSP_SetBypass (FMOD_DSP *dsp, FMOD_BOOL bypass); +FMOD_RESULT F_API FMOD_DSP_GetBypass (FMOD_DSP *dsp, FMOD_BOOL *bypass); +FMOD_RESULT F_API FMOD_DSP_SetSpeakerActive (FMOD_DSP *dsp, FMOD_SPEAKER speaker, FMOD_BOOL active); +FMOD_RESULT F_API FMOD_DSP_GetSpeakerActive (FMOD_DSP *dsp, FMOD_SPEAKER speaker, FMOD_BOOL *active); +FMOD_RESULT F_API FMOD_DSP_Reset (FMOD_DSP *dsp); + +/* + DSP parameter control. +*/ + +FMOD_RESULT F_API FMOD_DSP_SetParameter (FMOD_DSP *dsp, int index, float value); +FMOD_RESULT F_API FMOD_DSP_GetParameter (FMOD_DSP *dsp, int index, float *value, char *valuestr, int valuestrlen); +FMOD_RESULT F_API FMOD_DSP_GetNumParameters (FMOD_DSP *dsp, int *numparams); +FMOD_RESULT F_API FMOD_DSP_GetParameterInfo (FMOD_DSP *dsp, int index, char *name, char *label, char *description, int descriptionlen, float *min, float *max); +FMOD_RESULT F_API FMOD_DSP_ShowConfigDialog (FMOD_DSP *dsp, void *hwnd, FMOD_BOOL show); + +/* + DSP attributes. +*/ + +FMOD_RESULT F_API FMOD_DSP_GetInfo (FMOD_DSP *dsp, char *name, unsigned int *version, int *channels, int *configwidth, int *configheight); +FMOD_RESULT F_API FMOD_DSP_GetType (FMOD_DSP *dsp, FMOD_DSP_TYPE *type); +FMOD_RESULT F_API FMOD_DSP_SetDefaults (FMOD_DSP *dsp, float frequency, float volume, float pan, int priority); +FMOD_RESULT F_API FMOD_DSP_GetDefaults (FMOD_DSP *dsp, float *frequency, float *volume, float *pan, int *priority); + +/* + Userdata set/get. +*/ + +FMOD_RESULT F_API FMOD_DSP_SetUserData (FMOD_DSP *dsp, void *userdata); +FMOD_RESULT F_API FMOD_DSP_GetUserData (FMOD_DSP *dsp, void **userdata); + +FMOD_RESULT F_API FMOD_DSP_GetMemoryInfo (FMOD_DSP *dsp, unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, FMOD_MEMORY_USAGE_DETAILS *memoryused_details); + +/* + 'DSPConnection' API +*/ + +FMOD_RESULT F_API FMOD_DSPConnection_GetInput (FMOD_DSPCONNECTION *dspconnection, FMOD_DSP **input); +FMOD_RESULT F_API FMOD_DSPConnection_GetOutput (FMOD_DSPCONNECTION *dspconnection, FMOD_DSP **output); +FMOD_RESULT F_API FMOD_DSPConnection_SetMix (FMOD_DSPCONNECTION *dspconnection, float volume); +FMOD_RESULT F_API FMOD_DSPConnection_GetMix (FMOD_DSPCONNECTION *dspconnection, float *volume); +FMOD_RESULT F_API FMOD_DSPConnection_SetLevels (FMOD_DSPCONNECTION *dspconnection, FMOD_SPEAKER speaker, float *levels, int numlevels); +FMOD_RESULT F_API FMOD_DSPConnection_GetLevels (FMOD_DSPCONNECTION *dspconnection, FMOD_SPEAKER speaker, float *levels, int numlevels); + +/* + Userdata set/get. +*/ + +FMOD_RESULT F_API FMOD_DSPConnection_SetUserData (FMOD_DSPCONNECTION *dspconnection, void *userdata); +FMOD_RESULT F_API FMOD_DSPConnection_GetUserData (FMOD_DSPCONNECTION *dspconnection, void **userdata); + +FMOD_RESULT F_API FMOD_DSPConnection_GetMemoryInfo (FMOD_DSPCONNECTION *dspconnection, unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, FMOD_MEMORY_USAGE_DETAILS *memoryused_details); + +/* + 'Geometry' API +*/ + +FMOD_RESULT F_API FMOD_Geometry_Release (FMOD_GEOMETRY *geometry); + +/* + Polygon manipulation. +*/ + +FMOD_RESULT F_API FMOD_Geometry_AddPolygon (FMOD_GEOMETRY *geometry, float directocclusion, float reverbocclusion, FMOD_BOOL doublesided, int numvertices, const FMOD_VECTOR *vertices, int *polygonindex); +FMOD_RESULT F_API FMOD_Geometry_GetNumPolygons (FMOD_GEOMETRY *geometry, int *numpolygons); +FMOD_RESULT F_API FMOD_Geometry_GetMaxPolygons (FMOD_GEOMETRY *geometry, int *maxpolygons, int *maxvertices); +FMOD_RESULT F_API FMOD_Geometry_GetPolygonNumVertices(FMOD_GEOMETRY *geometry, int index, int *numvertices); +FMOD_RESULT F_API FMOD_Geometry_SetPolygonVertex (FMOD_GEOMETRY *geometry, int index, int vertexindex, const FMOD_VECTOR *vertex); +FMOD_RESULT F_API FMOD_Geometry_GetPolygonVertex (FMOD_GEOMETRY *geometry, int index, int vertexindex, FMOD_VECTOR *vertex); +FMOD_RESULT F_API FMOD_Geometry_SetPolygonAttributes (FMOD_GEOMETRY *geometry, int index, float directocclusion, float reverbocclusion, FMOD_BOOL doublesided); +FMOD_RESULT F_API FMOD_Geometry_GetPolygonAttributes (FMOD_GEOMETRY *geometry, int index, float *directocclusion, float *reverbocclusion, FMOD_BOOL *doublesided); + +/* + Object manipulation. +*/ + +FMOD_RESULT F_API FMOD_Geometry_SetActive (FMOD_GEOMETRY *geometry, FMOD_BOOL active); +FMOD_RESULT F_API FMOD_Geometry_GetActive (FMOD_GEOMETRY *geometry, FMOD_BOOL *active); +FMOD_RESULT F_API FMOD_Geometry_SetRotation (FMOD_GEOMETRY *geometry, const FMOD_VECTOR *forward, const FMOD_VECTOR *up); +FMOD_RESULT F_API FMOD_Geometry_GetRotation (FMOD_GEOMETRY *geometry, FMOD_VECTOR *forward, FMOD_VECTOR *up); +FMOD_RESULT F_API FMOD_Geometry_SetPosition (FMOD_GEOMETRY *geometry, const FMOD_VECTOR *position); +FMOD_RESULT F_API FMOD_Geometry_GetPosition (FMOD_GEOMETRY *geometry, FMOD_VECTOR *position); +FMOD_RESULT F_API FMOD_Geometry_SetScale (FMOD_GEOMETRY *geometry, const FMOD_VECTOR *scale); +FMOD_RESULT F_API FMOD_Geometry_GetScale (FMOD_GEOMETRY *geometry, FMOD_VECTOR *scale); +FMOD_RESULT F_API FMOD_Geometry_Save (FMOD_GEOMETRY *geometry, void *data, int *datasize); + +/* + Userdata set/get. +*/ + +FMOD_RESULT F_API FMOD_Geometry_SetUserData (FMOD_GEOMETRY *geometry, void *userdata); +FMOD_RESULT F_API FMOD_Geometry_GetUserData (FMOD_GEOMETRY *geometry, void **userdata); + +FMOD_RESULT F_API FMOD_Geometry_GetMemoryInfo (FMOD_GEOMETRY *geometry, unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, FMOD_MEMORY_USAGE_DETAILS *memoryused_details); + +/* + 'Reverb' API +*/ + +FMOD_RESULT F_API FMOD_Reverb_Release (FMOD_REVERB *reverb); + +/* + Reverb manipulation. +*/ + +FMOD_RESULT F_API FMOD_Reverb_Set3DAttributes (FMOD_REVERB *reverb, const FMOD_VECTOR *position, float mindistance, float maxdistance); +FMOD_RESULT F_API FMOD_Reverb_Get3DAttributes (FMOD_REVERB *reverb, FMOD_VECTOR *position, float *mindistance, float *maxdistance); +FMOD_RESULT F_API FMOD_Reverb_SetProperties (FMOD_REVERB *reverb, const FMOD_REVERB_PROPERTIES *properties); +FMOD_RESULT F_API FMOD_Reverb_GetProperties (FMOD_REVERB *reverb, FMOD_REVERB_PROPERTIES *properties); +FMOD_RESULT F_API FMOD_Reverb_SetActive (FMOD_REVERB *reverb, FMOD_BOOL active); +FMOD_RESULT F_API FMOD_Reverb_GetActive (FMOD_REVERB *reverb, FMOD_BOOL *active); + +/* + Userdata set/get. +*/ + +FMOD_RESULT F_API FMOD_Reverb_SetUserData (FMOD_REVERB *reverb, void *userdata); +FMOD_RESULT F_API FMOD_Reverb_GetUserData (FMOD_REVERB *reverb, void **userdata); + +FMOD_RESULT F_API FMOD_Reverb_GetMemoryInfo (FMOD_REVERB *reverb, unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, FMOD_MEMORY_USAGE_DETAILS *memoryused_details); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/dependent/fmod/api/inc/fmod.hpp b/dependent/fmod/api/inc/fmod.hpp new file mode 100644 index 0000000..df19647 --- /dev/null +++ b/dependent/fmod/api/inc/fmod.hpp @@ -0,0 +1,609 @@ +/* ========================================================================================== */ +/* FMOD Ex - C++ header file. Copyright (c), Firelight Technologies Pty, Ltd. 2004-2016. */ +/* */ +/* Use this header in conjunction with fmod.h (which contains all the constants / callbacks) */ +/* to develop using C++ classes. */ +/* ========================================================================================== */ + +#ifndef _FMOD_HPP +#define _FMOD_HPP + +#include "fmod.h" + +/* + Constant and defines +*/ + +/* + FMOD Namespace +*/ +namespace FMOD +{ + class System; + class Sound; + class Channel; + class ChannelGroup; + class SoundGroup; + class Reverb; + class DSP; + class DSPConnection; + class Geometry; + + /* + FMOD global system functions (optional). + */ + inline FMOD_RESULT Memory_Initialize(void *poolmem, int poollen, FMOD_MEMORY_ALLOCCALLBACK useralloc, FMOD_MEMORY_REALLOCCALLBACK userrealloc, FMOD_MEMORY_FREECALLBACK userfree, FMOD_MEMORY_TYPE memtypeflags = FMOD_MEMORY_ALL) { return FMOD_Memory_Initialize(poolmem, poollen, useralloc, userrealloc, userfree, memtypeflags); } + inline FMOD_RESULT Memory_GetStats (int *currentalloced, int *maxalloced, bool blocking = true) { return FMOD_Memory_GetStats(currentalloced, maxalloced, blocking); } + inline FMOD_RESULT Debug_SetLevel(FMOD_DEBUGLEVEL level) { return FMOD_Debug_SetLevel(level); } + inline FMOD_RESULT Debug_GetLevel(FMOD_DEBUGLEVEL *level) { return FMOD_Debug_GetLevel(level); } + inline FMOD_RESULT File_SetDiskBusy(int busy) { return FMOD_File_SetDiskBusy(busy); } + inline FMOD_RESULT File_GetDiskBusy(int *busy) { return FMOD_File_GetDiskBusy(busy); } + + /* + FMOD System factory functions. + */ + inline FMOD_RESULT System_Create(System **system) { return FMOD_System_Create((FMOD_SYSTEM **)system); } + + /* + 'System' API + */ + + class System + { + private: + + System(); /* Constructor made private so user cannot statically instance a System class. + System_Create must be used. */ + public: + + FMOD_RESULT F_API release (); + + // Pre-init functions. + FMOD_RESULT F_API setOutput (FMOD_OUTPUTTYPE output); + FMOD_RESULT F_API getOutput (FMOD_OUTPUTTYPE *output); + FMOD_RESULT F_API getNumDrivers (int *numdrivers); + FMOD_RESULT F_API getDriverInfo (int id, char *name, int namelen, FMOD_GUID *guid); + FMOD_RESULT F_API getDriverInfoW (int id, short *name, int namelen, FMOD_GUID *guid); + FMOD_RESULT F_API getDriverCaps (int id, FMOD_CAPS *caps, int *controlpaneloutputrate, FMOD_SPEAKERMODE *controlpanelspeakermode); + FMOD_RESULT F_API setDriver (int driver); + FMOD_RESULT F_API getDriver (int *driver); + FMOD_RESULT F_API setHardwareChannels (int numhardwarechannels); + FMOD_RESULT F_API setSoftwareChannels (int numsoftwarechannels); + FMOD_RESULT F_API getSoftwareChannels (int *numsoftwarechannels); + FMOD_RESULT F_API setSoftwareFormat (int samplerate, FMOD_SOUND_FORMAT format, int numoutputchannels, int maxinputchannels, FMOD_DSP_RESAMPLER resamplemethod); + FMOD_RESULT F_API getSoftwareFormat (int *samplerate, FMOD_SOUND_FORMAT *format, int *numoutputchannels, int *maxinputchannels, FMOD_DSP_RESAMPLER *resamplemethod, int *bits); + FMOD_RESULT F_API setDSPBufferSize (unsigned int bufferlength, int numbuffers); + FMOD_RESULT F_API getDSPBufferSize (unsigned int *bufferlength, int *numbuffers); + FMOD_RESULT F_API setFileSystem (FMOD_FILE_OPENCALLBACK useropen, FMOD_FILE_CLOSECALLBACK userclose, FMOD_FILE_READCALLBACK userread, FMOD_FILE_SEEKCALLBACK userseek, FMOD_FILE_ASYNCREADCALLBACK userasyncread, FMOD_FILE_ASYNCCANCELCALLBACK userasynccancel, int blockalign); + FMOD_RESULT F_API attachFileSystem (FMOD_FILE_OPENCALLBACK useropen, FMOD_FILE_CLOSECALLBACK userclose, FMOD_FILE_READCALLBACK userread, FMOD_FILE_SEEKCALLBACK userseek); + FMOD_RESULT F_API setAdvancedSettings (FMOD_ADVANCEDSETTINGS *settings); + FMOD_RESULT F_API getAdvancedSettings (FMOD_ADVANCEDSETTINGS *settings); + FMOD_RESULT F_API setSpeakerMode (FMOD_SPEAKERMODE speakermode); + FMOD_RESULT F_API getSpeakerMode (FMOD_SPEAKERMODE *speakermode); + FMOD_RESULT F_API setCallback (FMOD_SYSTEM_CALLBACK callback); + + // Plug-in support + FMOD_RESULT F_API setPluginPath (const char *path); + FMOD_RESULT F_API loadPlugin (const char *filename, unsigned int *handle, unsigned int priority = 0); + FMOD_RESULT F_API unloadPlugin (unsigned int handle); + FMOD_RESULT F_API getNumPlugins (FMOD_PLUGINTYPE plugintype, int *numplugins); + FMOD_RESULT F_API getPluginHandle (FMOD_PLUGINTYPE plugintype, int index, unsigned int *handle); + FMOD_RESULT F_API getPluginInfo (unsigned int handle, FMOD_PLUGINTYPE *plugintype, char *name, int namelen, unsigned int *version); + FMOD_RESULT F_API setOutputByPlugin (unsigned int handle); + FMOD_RESULT F_API getOutputByPlugin (unsigned int *handle); + FMOD_RESULT F_API createDSPByPlugin (unsigned int handle, DSP **dsp); + FMOD_RESULT F_API registerCodec (FMOD_CODEC_DESCRIPTION *description, unsigned int *handle, unsigned int priority = 0); + FMOD_RESULT F_API registerDSP (FMOD_DSP_DESCRIPTION *description, unsigned int *handle); + + // Init/Close + FMOD_RESULT F_API init (int maxchannels, FMOD_INITFLAGS flags, void *extradriverdata); + FMOD_RESULT F_API close (); + + // General post-init system functions + FMOD_RESULT F_API update (); /* IMPORTANT! CALL THIS ONCE PER FRAME! */ + + FMOD_RESULT F_API set3DSettings (float dopplerscale, float distancefactor, float rolloffscale); + FMOD_RESULT F_API get3DSettings (float *dopplerscale, float *distancefactor, float *rolloffscale); + FMOD_RESULT F_API set3DNumListeners (int numlisteners); + FMOD_RESULT F_API get3DNumListeners (int *numlisteners); + FMOD_RESULT F_API set3DListenerAttributes(int listener, const FMOD_VECTOR *pos, const FMOD_VECTOR *vel, const FMOD_VECTOR *forward, const FMOD_VECTOR *up); + FMOD_RESULT F_API get3DListenerAttributes(int listener, FMOD_VECTOR *pos, FMOD_VECTOR *vel, FMOD_VECTOR *forward, FMOD_VECTOR *up); + FMOD_RESULT F_API set3DRolloffCallback (FMOD_3D_ROLLOFFCALLBACK callback); + FMOD_RESULT F_API set3DSpeakerPosition (FMOD_SPEAKER speaker, float x, float y, bool active); + FMOD_RESULT F_API get3DSpeakerPosition (FMOD_SPEAKER speaker, float *x, float *y, bool *active); + + FMOD_RESULT F_API setStreamBufferSize (unsigned int filebuffersize, FMOD_TIMEUNIT filebuffersizetype); + FMOD_RESULT F_API getStreamBufferSize (unsigned int *filebuffersize, FMOD_TIMEUNIT *filebuffersizetype); + + // System information functions. + FMOD_RESULT F_API getVersion (unsigned int *version); + FMOD_RESULT F_API getOutputHandle (void **handle); + FMOD_RESULT F_API getChannelsPlaying (int *channels); + FMOD_RESULT F_API getHardwareChannels (int *numhardwarechannels); + FMOD_RESULT F_API getCPUUsage (float *dsp, float *stream, float *geometry, float *update, float *total); + FMOD_RESULT F_API getSoundRAM (int *currentalloced, int *maxalloced, int *total); + FMOD_RESULT F_API getNumCDROMDrives (int *numdrives); + FMOD_RESULT F_API getCDROMDriveName (int drive, char *drivename, int drivenamelen, char *scsiname, int scsinamelen, char *devicename, int devicenamelen); + FMOD_RESULT F_API getSpectrum (float *spectrumarray, int numvalues, int channeloffset, FMOD_DSP_FFT_WINDOW windowtype); + FMOD_RESULT F_API getWaveData (float *wavearray, int numvalues, int channeloffset); + + // Sound/DSP/Channel/FX creation and retrieval. + FMOD_RESULT F_API createSound (const char *name_or_data, FMOD_MODE mode, FMOD_CREATESOUNDEXINFO *exinfo, Sound **sound); + FMOD_RESULT F_API createStream (const char *name_or_data, FMOD_MODE mode, FMOD_CREATESOUNDEXINFO *exinfo, Sound **sound); + FMOD_RESULT F_API createDSP (FMOD_DSP_DESCRIPTION *description, DSP **dsp); + FMOD_RESULT F_API createDSPByType (FMOD_DSP_TYPE type, DSP **dsp); + FMOD_RESULT F_API createChannelGroup (const char *name, ChannelGroup **channelgroup); + FMOD_RESULT F_API createSoundGroup (const char *name, SoundGroup **soundgroup); + FMOD_RESULT F_API createReverb (Reverb **reverb); + + FMOD_RESULT F_API playSound (FMOD_CHANNELINDEX channelid, Sound *sound, bool paused, Channel **channel); + FMOD_RESULT F_API playDSP (FMOD_CHANNELINDEX channelid, DSP *dsp, bool paused, Channel **channel); + FMOD_RESULT F_API getChannel (int channelid, Channel **channel); + FMOD_RESULT F_API getMasterChannelGroup (ChannelGroup **channelgroup); + FMOD_RESULT F_API getMasterSoundGroup (SoundGroup **soundgroup); + + // Reverb API + FMOD_RESULT F_API setReverbProperties (const FMOD_REVERB_PROPERTIES *prop); + FMOD_RESULT F_API getReverbProperties (FMOD_REVERB_PROPERTIES *prop); + FMOD_RESULT F_API setReverbAmbientProperties(FMOD_REVERB_PROPERTIES *prop); + FMOD_RESULT F_API getReverbAmbientProperties(FMOD_REVERB_PROPERTIES *prop); + + // System level DSP access. + FMOD_RESULT F_API getDSPHead (DSP **dsp); + FMOD_RESULT F_API addDSP (DSP *dsp, DSPConnection **connection); + FMOD_RESULT F_API lockDSP (); + FMOD_RESULT F_API unlockDSP (); + FMOD_RESULT F_API getDSPClock (unsigned int *hi, unsigned int *lo); + + // Recording API. + FMOD_RESULT F_API getRecordNumDrivers (int *numdrivers); + FMOD_RESULT F_API getRecordDriverInfo (int id, char *name, int namelen, FMOD_GUID *guid); + FMOD_RESULT F_API getRecordDriverInfoW (int id, short *name, int namelen, FMOD_GUID *guid); + FMOD_RESULT F_API getRecordDriverCaps (int id, FMOD_CAPS *caps, int *minfrequency, int *maxfrequency); + FMOD_RESULT F_API getRecordPosition (int id, unsigned int *position); + + FMOD_RESULT F_API recordStart (int id, Sound *sound, bool loop); + FMOD_RESULT F_API recordStop (int id); + FMOD_RESULT F_API isRecording (int id, bool *recording); + + // Geometry API. + FMOD_RESULT F_API createGeometry (int maxpolygons, int maxvertices, Geometry **geometry); + FMOD_RESULT F_API setGeometrySettings (float maxworldsize); + FMOD_RESULT F_API getGeometrySettings (float *maxworldsize); + FMOD_RESULT F_API loadGeometry (const void *data, int datasize, Geometry **geometry); + FMOD_RESULT F_API getGeometryOcclusion (const FMOD_VECTOR *listener, const FMOD_VECTOR *source, float *direct, float *reverb); + + // Network functions. + FMOD_RESULT F_API setNetworkProxy (const char *proxy); + FMOD_RESULT F_API getNetworkProxy (char *proxy, int proxylen); + FMOD_RESULT F_API setNetworkTimeout (int timeout); + FMOD_RESULT F_API getNetworkTimeout (int *timeout); + + // Userdata set/get. + FMOD_RESULT F_API setUserData (void *userdata); + FMOD_RESULT F_API getUserData (void **userdata); + + FMOD_RESULT F_API getMemoryInfo (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, FMOD_MEMORY_USAGE_DETAILS *memoryused_details); + }; + + /* + 'Sound' API + */ + class Sound + { + private: + + Sound(); /* Constructor made private so user cannot statically instance a Sound class. + Appropriate Sound creation or retrieval function must be used. */ + public: + + FMOD_RESULT F_API release (); + FMOD_RESULT F_API getSystemObject (System **system); + + // Standard sound manipulation functions. + FMOD_RESULT F_API lock (unsigned int offset, unsigned int length, void **ptr1, void **ptr2, unsigned int *len1, unsigned int *len2); + FMOD_RESULT F_API unlock (void *ptr1, void *ptr2, unsigned int len1, unsigned int len2); + FMOD_RESULT F_API setDefaults (float frequency, float volume, float pan, int priority); + FMOD_RESULT F_API getDefaults (float *frequency, float *volume, float *pan, int *priority); + FMOD_RESULT F_API setVariations (float frequencyvar, float volumevar, float panvar); + FMOD_RESULT F_API getVariations (float *frequencyvar, float *volumevar, float *panvar); + FMOD_RESULT F_API set3DMinMaxDistance (float min, float max); + FMOD_RESULT F_API get3DMinMaxDistance (float *min, float *max); + FMOD_RESULT F_API set3DConeSettings (float insideconeangle, float outsideconeangle, float outsidevolume); + FMOD_RESULT F_API get3DConeSettings (float *insideconeangle, float *outsideconeangle, float *outsidevolume); + FMOD_RESULT F_API set3DCustomRolloff (FMOD_VECTOR *points, int numpoints); + FMOD_RESULT F_API get3DCustomRolloff (FMOD_VECTOR **points, int *numpoints); + FMOD_RESULT F_API setSubSound (int index, Sound *subsound); + FMOD_RESULT F_API getSubSound (int index, Sound **subsound); + FMOD_RESULT F_API getSubSoundParent (Sound **parentsound); + FMOD_RESULT F_API setSubSoundSentence (int *subsoundlist, int numsubsounds); + FMOD_RESULT F_API getName (char *name, int namelen); + FMOD_RESULT F_API getLength (unsigned int *length, FMOD_TIMEUNIT lengthtype); + FMOD_RESULT F_API getFormat (FMOD_SOUND_TYPE *type, FMOD_SOUND_FORMAT *format, int *channels, int *bits); + FMOD_RESULT F_API getNumSubSounds (int *numsubsounds); + FMOD_RESULT F_API getNumTags (int *numtags, int *numtagsupdated); + FMOD_RESULT F_API getTag (const char *name, int index, FMOD_TAG *tag); + FMOD_RESULT F_API getOpenState (FMOD_OPENSTATE *openstate, unsigned int *percentbuffered, bool *starving, bool *diskbusy); + FMOD_RESULT F_API readData (void *buffer, unsigned int lenbytes, unsigned int *read); + FMOD_RESULT F_API seekData (unsigned int pcm); + + FMOD_RESULT F_API setSoundGroup (SoundGroup *soundgroup); + FMOD_RESULT F_API getSoundGroup (SoundGroup **soundgroup); + + // Synchronization point API. These points can come from markers embedded in wav files, and can also generate channel callbacks. + FMOD_RESULT F_API getNumSyncPoints (int *numsyncpoints); + FMOD_RESULT F_API getSyncPoint (int index, FMOD_SYNCPOINT **point); + FMOD_RESULT F_API getSyncPointInfo (FMOD_SYNCPOINT *point, char *name, int namelen, unsigned int *offset, FMOD_TIMEUNIT offsettype); + FMOD_RESULT F_API addSyncPoint (unsigned int offset, FMOD_TIMEUNIT offsettype, const char *name, FMOD_SYNCPOINT **point); + FMOD_RESULT F_API deleteSyncPoint (FMOD_SYNCPOINT *point); + + // Functions also in Channel class but here they are the 'default' to save having to change it in Channel all the time. + FMOD_RESULT F_API setMode (FMOD_MODE mode); + FMOD_RESULT F_API getMode (FMOD_MODE *mode); + FMOD_RESULT F_API setLoopCount (int loopcount); + FMOD_RESULT F_API getLoopCount (int *loopcount); + FMOD_RESULT F_API setLoopPoints (unsigned int loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int loopend, FMOD_TIMEUNIT loopendtype); + FMOD_RESULT F_API getLoopPoints (unsigned int *loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int *loopend, FMOD_TIMEUNIT loopendtype); + + // For MOD/S3M/XM/IT/MID sequenced formats only. + FMOD_RESULT F_API getMusicNumChannels (int *numchannels); + FMOD_RESULT F_API setMusicChannelVolume (int channel, float volume); + FMOD_RESULT F_API getMusicChannelVolume (int channel, float *volume); + FMOD_RESULT F_API setMusicSpeed (float speed); + FMOD_RESULT F_API getMusicSpeed (float *speed); + + // Userdata set/get. + FMOD_RESULT F_API setUserData (void *userdata); + FMOD_RESULT F_API getUserData (void **userdata); + + FMOD_RESULT F_API getMemoryInfo (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, FMOD_MEMORY_USAGE_DETAILS *memoryused_details); + }; + + /* + 'Channel' API. + */ + class Channel + { + private: + + Channel(); /* Constructor made private so user cannot statically instance a Channel class. + Appropriate Channel creation or retrieval function must be used. */ + public: + + FMOD_RESULT F_API getSystemObject (System **system); + + FMOD_RESULT F_API stop (); + FMOD_RESULT F_API setPaused (bool paused); + FMOD_RESULT F_API getPaused (bool *paused); + FMOD_RESULT F_API setVolume (float volume); + FMOD_RESULT F_API getVolume (float *volume); + FMOD_RESULT F_API setFrequency (float frequency); + FMOD_RESULT F_API getFrequency (float *frequency); + FMOD_RESULT F_API setPan (float pan); + FMOD_RESULT F_API getPan (float *pan); + FMOD_RESULT F_API setDelay (FMOD_DELAYTYPE delaytype, unsigned int delayhi, unsigned int delaylo); + FMOD_RESULT F_API getDelay (FMOD_DELAYTYPE delaytype, unsigned int *delayhi, unsigned int *delaylo); + FMOD_RESULT F_API setSpeakerMix (float frontleft, float frontright, float center, float lfe, float backleft, float backright, float sideleft, float sideright); + FMOD_RESULT F_API getSpeakerMix (float *frontleft, float *frontright, float *center, float *lfe, float *backleft, float *backright, float *sideleft, float *sideright); + FMOD_RESULT F_API setSpeakerLevels (FMOD_SPEAKER speaker, float *levels, int numlevels); + FMOD_RESULT F_API getSpeakerLevels (FMOD_SPEAKER speaker, float *levels, int numlevels); + FMOD_RESULT F_API setInputChannelMix (float *levels, int numlevels); + FMOD_RESULT F_API getInputChannelMix (float *levels, int numlevels); + FMOD_RESULT F_API setMute (bool mute); + FMOD_RESULT F_API getMute (bool *mute); + FMOD_RESULT F_API setPriority (int priority); + FMOD_RESULT F_API getPriority (int *priority); + FMOD_RESULT F_API setPosition (unsigned int position, FMOD_TIMEUNIT postype); + FMOD_RESULT F_API getPosition (unsigned int *position, FMOD_TIMEUNIT postype); + FMOD_RESULT F_API setReverbProperties (const FMOD_REVERB_CHANNELPROPERTIES *prop); + FMOD_RESULT F_API getReverbProperties (FMOD_REVERB_CHANNELPROPERTIES *prop); + FMOD_RESULT F_API setLowPassGain (float gain); + FMOD_RESULT F_API getLowPassGain (float *gain); + + FMOD_RESULT F_API setChannelGroup (ChannelGroup *channelgroup); + FMOD_RESULT F_API getChannelGroup (ChannelGroup **channelgroup); + FMOD_RESULT F_API setCallback (FMOD_CHANNEL_CALLBACK callback); + + // 3D functionality. + FMOD_RESULT F_API set3DAttributes (const FMOD_VECTOR *pos, const FMOD_VECTOR *vel); + FMOD_RESULT F_API get3DAttributes (FMOD_VECTOR *pos, FMOD_VECTOR *vel); + FMOD_RESULT F_API set3DMinMaxDistance (float mindistance, float maxdistance); + FMOD_RESULT F_API get3DMinMaxDistance (float *mindistance, float *maxdistance); + FMOD_RESULT F_API set3DConeSettings (float insideconeangle, float outsideconeangle, float outsidevolume); + FMOD_RESULT F_API get3DConeSettings (float *insideconeangle, float *outsideconeangle, float *outsidevolume); + FMOD_RESULT F_API set3DConeOrientation (FMOD_VECTOR *orientation); + FMOD_RESULT F_API get3DConeOrientation (FMOD_VECTOR *orientation); + FMOD_RESULT F_API set3DCustomRolloff (FMOD_VECTOR *points, int numpoints); + FMOD_RESULT F_API get3DCustomRolloff (FMOD_VECTOR **points, int *numpoints); + FMOD_RESULT F_API set3DOcclusion (float directocclusion, float reverbocclusion); + FMOD_RESULT F_API get3DOcclusion (float *directocclusion, float *reverbocclusion); + FMOD_RESULT F_API set3DSpread (float angle); + FMOD_RESULT F_API get3DSpread (float *angle); + FMOD_RESULT F_API set3DPanLevel (float level); + FMOD_RESULT F_API get3DPanLevel (float *level); + FMOD_RESULT F_API set3DDopplerLevel (float level); + FMOD_RESULT F_API get3DDopplerLevel (float *level); + FMOD_RESULT F_API set3DDistanceFilter (bool custom, float customLevel, float centerFreq); + FMOD_RESULT F_API get3DDistanceFilter (bool *custom, float *customLevel, float *centerFreq); + + // DSP functionality only for channels playing sounds created with FMOD_SOFTWARE. + FMOD_RESULT F_API getDSPHead (DSP **dsp); + FMOD_RESULT F_API addDSP (DSP *dsp, DSPConnection **connection); + + // Information only functions. + FMOD_RESULT F_API isPlaying (bool *isplaying); + FMOD_RESULT F_API isVirtual (bool *isvirtual); + FMOD_RESULT F_API getAudibility (float *audibility); + FMOD_RESULT F_API getCurrentSound (Sound **sound); + FMOD_RESULT F_API getSpectrum (float *spectrumarray, int numvalues, int channeloffset, FMOD_DSP_FFT_WINDOW windowtype); + FMOD_RESULT F_API getWaveData (float *wavearray, int numvalues, int channeloffset); + FMOD_RESULT F_API getIndex (int *index); + + // Functions also found in Sound class but here they can be set per channel. + FMOD_RESULT F_API setMode (FMOD_MODE mode); + FMOD_RESULT F_API getMode (FMOD_MODE *mode); + FMOD_RESULT F_API setLoopCount (int loopcount); + FMOD_RESULT F_API getLoopCount (int *loopcount); + FMOD_RESULT F_API setLoopPoints (unsigned int loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int loopend, FMOD_TIMEUNIT loopendtype); + FMOD_RESULT F_API getLoopPoints (unsigned int *loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int *loopend, FMOD_TIMEUNIT loopendtype); + + // Userdata set/get. + FMOD_RESULT F_API setUserData (void *userdata); + FMOD_RESULT F_API getUserData (void **userdata); + + FMOD_RESULT F_API getMemoryInfo (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, FMOD_MEMORY_USAGE_DETAILS *memoryused_details); + }; + + /* + 'ChannelGroup' API + */ + class ChannelGroup + { + private: + + ChannelGroup(); /* Constructor made private so user cannot statically instance a ChannelGroup class. + Appropriate ChannelGroup creation or retrieval function must be used. */ + public: + + FMOD_RESULT F_API release (); + FMOD_RESULT F_API getSystemObject (System **system); + + // Channelgroup scale values. (changes attributes relative to the channels, doesn't overwrite them) + FMOD_RESULT F_API setVolume (float volume); + FMOD_RESULT F_API getVolume (float *volume); + FMOD_RESULT F_API setPitch (float pitch); + FMOD_RESULT F_API getPitch (float *pitch); + FMOD_RESULT F_API set3DOcclusion (float directocclusion, float reverbocclusion); + FMOD_RESULT F_API get3DOcclusion (float *directocclusion, float *reverbocclusion); + FMOD_RESULT F_API setPaused (bool paused); + FMOD_RESULT F_API getPaused (bool *paused); + FMOD_RESULT F_API setMute (bool mute); + FMOD_RESULT F_API getMute (bool *mute); + + // Channelgroup override values. (recursively overwrites whatever settings the channels had) + FMOD_RESULT F_API stop (); + FMOD_RESULT F_API overrideVolume (float volume); + FMOD_RESULT F_API overrideFrequency (float frequency); + FMOD_RESULT F_API overridePan (float pan); + FMOD_RESULT F_API overrideReverbProperties(const FMOD_REVERB_CHANNELPROPERTIES *prop); + FMOD_RESULT F_API override3DAttributes (const FMOD_VECTOR *pos, const FMOD_VECTOR *vel); + FMOD_RESULT F_API overrideSpeakerMix (float frontleft, float frontright, float center, float lfe, float backleft, float backright, float sideleft, float sideright); + + // Nested channel groups. + FMOD_RESULT F_API addGroup (ChannelGroup *group); + FMOD_RESULT F_API getNumGroups (int *numgroups); + FMOD_RESULT F_API getGroup (int index, ChannelGroup **group); + FMOD_RESULT F_API getParentGroup (ChannelGroup **group); + + // DSP functionality only for channel groups playing sounds created with FMOD_SOFTWARE. + FMOD_RESULT F_API getDSPHead (DSP **dsp); + FMOD_RESULT F_API addDSP (DSP *dsp, DSPConnection **connection); + + // Information only functions. + FMOD_RESULT F_API getName (char *name, int namelen); + FMOD_RESULT F_API getNumChannels (int *numchannels); + FMOD_RESULT F_API getChannel (int index, Channel **channel); + FMOD_RESULT F_API getSpectrum (float *spectrumarray, int numvalues, int channeloffset, FMOD_DSP_FFT_WINDOW windowtype); + FMOD_RESULT F_API getWaveData (float *wavearray, int numvalues, int channeloffset); + + // Userdata set/get. + FMOD_RESULT F_API setUserData (void *userdata); + FMOD_RESULT F_API getUserData (void **userdata); + + FMOD_RESULT F_API getMemoryInfo (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, FMOD_MEMORY_USAGE_DETAILS *memoryused_details); + }; + + /* + 'SoundGroup' API + */ + class SoundGroup + { + private: + + SoundGroup(); /* Constructor made private so user cannot statically instance a SoundGroup class. + Appropriate SoundGroup creation or retrieval function must be used. */ + public: + + FMOD_RESULT F_API release (); + FMOD_RESULT F_API getSystemObject (System **system); + + // SoundGroup control functions. + FMOD_RESULT F_API setMaxAudible (int maxaudible); + FMOD_RESULT F_API getMaxAudible (int *maxaudible); + FMOD_RESULT F_API setMaxAudibleBehavior (FMOD_SOUNDGROUP_BEHAVIOR behavior); + FMOD_RESULT F_API getMaxAudibleBehavior (FMOD_SOUNDGROUP_BEHAVIOR *behavior); + FMOD_RESULT F_API setMuteFadeSpeed (float speed); + FMOD_RESULT F_API getMuteFadeSpeed (float *speed); + FMOD_RESULT F_API setVolume (float volume); + FMOD_RESULT F_API getVolume (float *volume); + FMOD_RESULT F_API stop (); + + // Information only functions. + FMOD_RESULT F_API getName (char *name, int namelen); + FMOD_RESULT F_API getNumSounds (int *numsounds); + FMOD_RESULT F_API getSound (int index, Sound **sound); + FMOD_RESULT F_API getNumPlaying (int *numplaying); + + // Userdata set/get. + FMOD_RESULT F_API setUserData (void *userdata); + FMOD_RESULT F_API getUserData (void **userdata); + + FMOD_RESULT F_API getMemoryInfo (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, FMOD_MEMORY_USAGE_DETAILS *memoryused_details); + }; + + /* + 'DSP' API + */ + class DSP + { + private: + + DSP(); /* Constructor made private so user cannot statically instance a DSP class. + Appropriate DSP creation or retrieval function must be used. */ + public: + + FMOD_RESULT F_API release (); + FMOD_RESULT F_API getSystemObject (System **system); + + // Connection / disconnection / input and output enumeration. + FMOD_RESULT F_API addInput (DSP *target, DSPConnection **connection); + FMOD_RESULT F_API disconnectFrom (DSP *target); + FMOD_RESULT F_API disconnectAll (bool inputs, bool outputs); + FMOD_RESULT F_API remove (); + FMOD_RESULT F_API getNumInputs (int *numinputs); + FMOD_RESULT F_API getNumOutputs (int *numoutputs); + FMOD_RESULT F_API getInput (int index, DSP **input, DSPConnection **inputconnection); + FMOD_RESULT F_API getOutput (int index, DSP **output, DSPConnection **outputconnection); + + // DSP unit control. + FMOD_RESULT F_API setActive (bool active); + FMOD_RESULT F_API getActive (bool *active); + FMOD_RESULT F_API setBypass (bool bypass); + FMOD_RESULT F_API getBypass (bool *bypass); + FMOD_RESULT F_API setSpeakerActive (FMOD_SPEAKER speaker, bool active); + FMOD_RESULT F_API getSpeakerActive (FMOD_SPEAKER speaker, bool *active); + FMOD_RESULT F_API reset (); + + + // DSP parameter control. + FMOD_RESULT F_API setParameter (int index, float value); + FMOD_RESULT F_API getParameter (int index, float *value, char *valuestr, int valuestrlen); + FMOD_RESULT F_API getNumParameters (int *numparams); + FMOD_RESULT F_API getParameterInfo (int index, char *name, char *label, char *description, int descriptionlen, float *min, float *max); + FMOD_RESULT F_API showConfigDialog (void *hwnd, bool show); + + // DSP attributes. + FMOD_RESULT F_API getInfo (char *name, unsigned int *version, int *channels, int *configwidth, int *configheight); + FMOD_RESULT F_API getType (FMOD_DSP_TYPE *type); + FMOD_RESULT F_API setDefaults (float frequency, float volume, float pan, int priority); + FMOD_RESULT F_API getDefaults (float *frequency, float *volume, float *pan, int *priority); + + // Userdata set/get. + FMOD_RESULT F_API setUserData (void *userdata); + FMOD_RESULT F_API getUserData (void **userdata); + + FMOD_RESULT F_API getMemoryInfo (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, FMOD_MEMORY_USAGE_DETAILS *memoryused_details); + }; + + + /* + 'DSPConnection' API + */ + class DSPConnection + { + private: + + DSPConnection(); /* Constructor made private so user cannot statically instance a DSPConnection class. + Appropriate DSPConnection creation or retrieval function must be used. */ + + public: + + FMOD_RESULT F_API getInput (DSP **input); + FMOD_RESULT F_API getOutput (DSP **output); + FMOD_RESULT F_API setMix (float volume); + FMOD_RESULT F_API getMix (float *volume); + FMOD_RESULT F_API setLevels (FMOD_SPEAKER speaker, float *levels, int numlevels); + FMOD_RESULT F_API getLevels (FMOD_SPEAKER speaker, float *levels, int numlevels); + + // Userdata set/get. + FMOD_RESULT F_API setUserData (void *userdata); + FMOD_RESULT F_API getUserData (void **userdata); + + FMOD_RESULT F_API getMemoryInfo (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, FMOD_MEMORY_USAGE_DETAILS *memoryused_details); + }; + + + /* + 'Geometry' API + */ + class Geometry + { + private: + + Geometry(); /* Constructor made private so user cannot statically instance a Geometry class. + Appropriate Geometry creation or retrieval function must be used. */ + + public: + + FMOD_RESULT F_API release (); + + // Polygon manipulation. + FMOD_RESULT F_API addPolygon (float directocclusion, float reverbocclusion, bool doublesided, int numvertices, const FMOD_VECTOR *vertices, int *polygonindex); + FMOD_RESULT F_API getNumPolygons (int *numpolygons); + FMOD_RESULT F_API getMaxPolygons (int *maxpolygons, int *maxvertices); + FMOD_RESULT F_API getPolygonNumVertices (int index, int *numvertices); + FMOD_RESULT F_API setPolygonVertex (int index, int vertexindex, const FMOD_VECTOR *vertex); + FMOD_RESULT F_API getPolygonVertex (int index, int vertexindex, FMOD_VECTOR *vertex); + FMOD_RESULT F_API setPolygonAttributes (int index, float directocclusion, float reverbocclusion, bool doublesided); + FMOD_RESULT F_API getPolygonAttributes (int index, float *directocclusion, float *reverbocclusion, bool *doublesided); + + // Object manipulation. + FMOD_RESULT F_API setActive (bool active); + FMOD_RESULT F_API getActive (bool *active); + FMOD_RESULT F_API setRotation (const FMOD_VECTOR *forward, const FMOD_VECTOR *up); + FMOD_RESULT F_API getRotation (FMOD_VECTOR *forward, FMOD_VECTOR *up); + FMOD_RESULT F_API setPosition (const FMOD_VECTOR *position); + FMOD_RESULT F_API getPosition (FMOD_VECTOR *position); + FMOD_RESULT F_API setScale (const FMOD_VECTOR *scale); + FMOD_RESULT F_API getScale (FMOD_VECTOR *scale); + FMOD_RESULT F_API save (void *data, int *datasize); + + // Userdata set/get. + FMOD_RESULT F_API setUserData (void *userdata); + FMOD_RESULT F_API getUserData (void **userdata); + + FMOD_RESULT F_API getMemoryInfo (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, FMOD_MEMORY_USAGE_DETAILS *memoryused_details); + }; + + + /* + 'Reverb' API + */ + class Reverb + { + private: + + Reverb(); /* Constructor made private so user cannot statically instance a Reverb class. + Appropriate Reverb creation or retrieval function must be used. */ + + public: + + FMOD_RESULT F_API release (); + + // Reverb manipulation. + FMOD_RESULT F_API set3DAttributes (const FMOD_VECTOR *position, float mindistance, float maxdistance); + FMOD_RESULT F_API get3DAttributes (FMOD_VECTOR *position, float *mindistance,float *maxdistance); + FMOD_RESULT F_API setProperties (const FMOD_REVERB_PROPERTIES *properties); + FMOD_RESULT F_API getProperties (FMOD_REVERB_PROPERTIES *properties); + FMOD_RESULT F_API setActive (bool active); + FMOD_RESULT F_API getActive (bool *active); + + // Userdata set/get. + FMOD_RESULT F_API setUserData (void *userdata); + FMOD_RESULT F_API getUserData (void **userdata); + + FMOD_RESULT F_API getMemoryInfo (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, FMOD_MEMORY_USAGE_DETAILS *memoryused_details); + }; +} + +#endif diff --git a/dependent/fmod/api/inc/fmod_codec.h b/dependent/fmod/api/inc/fmod_codec.h new file mode 100644 index 0000000..7f1759a --- /dev/null +++ b/dependent/fmod/api/inc/fmod_codec.h @@ -0,0 +1,159 @@ +/* ==================================================================================================== */ +/* FMOD Ex - codec development header file. Copyright (c), Firelight Technologies Pty, Ltd. 2004-2016. */ +/* */ +/* Use this header if you are wanting to develop your own file format plugin to use with */ +/* FMOD's codec system. With this header you can make your own fileformat plugin that FMOD */ +/* can register and use. See the documentation and examples on how to make a working plugin. */ +/* */ +/* ==================================================================================================== */ + +#ifndef _FMOD_CODEC_H +#define _FMOD_CODEC_H + +typedef struct FMOD_CODEC_STATE FMOD_CODEC_STATE; +typedef struct FMOD_CODEC_WAVEFORMAT FMOD_CODEC_WAVEFORMAT; + +/* + Codec callbacks +*/ +typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_OPENCALLBACK) (FMOD_CODEC_STATE *codec_state, FMOD_MODE usermode, FMOD_CREATESOUNDEXINFO *userexinfo); +typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_CLOSECALLBACK) (FMOD_CODEC_STATE *codec_state); +typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_READCALLBACK) (FMOD_CODEC_STATE *codec_state, void *buffer, unsigned int sizebytes, unsigned int *bytesread); +typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_GETLENGTHCALLBACK) (FMOD_CODEC_STATE *codec_state, unsigned int *length, FMOD_TIMEUNIT lengthtype); +typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_SETPOSITIONCALLBACK) (FMOD_CODEC_STATE *codec_state, int subsound, unsigned int position, FMOD_TIMEUNIT postype); +typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_GETPOSITIONCALLBACK) (FMOD_CODEC_STATE *codec_state, unsigned int *position, FMOD_TIMEUNIT postype); +typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_SOUNDCREATECALLBACK) (FMOD_CODEC_STATE *codec_state, int subsound, FMOD_SOUND *sound); +typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_METADATACALLBACK) (FMOD_CODEC_STATE *codec_state, FMOD_TAGTYPE tagtype, char *name, void *data, unsigned int datalen, FMOD_TAGDATATYPE datatype, int unique); +typedef FMOD_RESULT (F_CALLBACK *FMOD_CODEC_GETWAVEFORMAT) (FMOD_CODEC_STATE *codec_state, int index, FMOD_CODEC_WAVEFORMAT *waveformat); + + +/* +[STRUCTURE] +[ + [DESCRIPTION] + When creating a codec, declare one of these and provide the relevant callbacks and name for FMOD to use when it opens and reads a file. + + [REMARKS] + Members marked with [in] mean the variable can be written to. The user can set the value. + Members marked with [out] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + FMOD_CODEC_STATE +] +*/ +typedef struct FMOD_CODEC_DESCRIPTION +{ + const char *name; /* [in] Name of the codec. */ + unsigned int version; /* [in] Plugin writer's version number. */ + int defaultasstream; /* [in] Tells FMOD to open the file as a stream when calling System::createSound, and not a static sample. Should normally be 0 (FALSE), because generally the user wants to decode the file into memory when using System::createSound. Mainly used for formats that decode for a very long time, or could use large amounts of memory when decoded. Usually sequenced formats such as mod/s3m/xm/it/midi fall into this category. It is mainly to stop users that don't know what they're doing from getting FMOD_ERR_MEMORY returned from createSound when they should have in fact called System::createStream or used FMOD_CREATESTREAM in System::createSound. */ + FMOD_TIMEUNIT timeunits; /* [in] When setposition codec is called, only these time formats will be passed to the codec. Use bitwise OR to accumulate different types. */ + FMOD_CODEC_OPENCALLBACK open; /* [in] Open callback for the codec for when FMOD tries to open a sound using this codec. */ + FMOD_CODEC_CLOSECALLBACK close; /* [in] Close callback for the codec for when FMOD tries to close a sound using this codec. */ + FMOD_CODEC_READCALLBACK read; /* [in] Read callback for the codec for when FMOD tries to read some data from the file to the destination format (specified in the open callback). */ + FMOD_CODEC_GETLENGTHCALLBACK getlength; /* [in] Callback to return the length of the song in whatever format required when Sound::getLength is called. */ + FMOD_CODEC_SETPOSITIONCALLBACK setposition; /* [in] Seek callback for the codec for when FMOD tries to seek within the file with Channel::setPosition. */ + FMOD_CODEC_GETPOSITIONCALLBACK getposition; /* [in] Tell callback for the codec for when FMOD tries to get the current position within the with Channel::getPosition. */ + FMOD_CODEC_SOUNDCREATECALLBACK soundcreate; /* [in] Sound creation callback for the codec when FMOD finishes creating the sound. (So the codec can set more parameters for the related created sound, ie loop points/mode or 3D attributes etc). */ + FMOD_CODEC_GETWAVEFORMAT getwaveformat; /* [in] Callback to tell FMOD about the waveformat of a particular subsound. This is to save memory, rather than saving 1000 FMOD_CODEC_WAVEFORMAT structures in the codec, the codec might have a more optimal way of storing this information. */ +} FMOD_CODEC_DESCRIPTION; + + +/* +[STRUCTURE] +[ + [DESCRIPTION] + Set these values marked 'in' to tell fmod what sort of sound to create. + The format, channels and frequency tell FMOD what sort of hardware buffer to create when you initialize your code. So if you wrote an MP3 codec that decoded to stereo 16bit integer PCM, you would specify FMOD_SOUND_FORMAT_PCM16, and channels would be equal to 2. + Members marked as 'out' are set by fmod. Do not modify these. Simply specify 0 for these values when declaring the structure, FMOD will fill in the values for you after creation with the correct function pointers. + + [REMARKS] + Members marked with [in] mean the variable can be written to. The user can set the value. + Members marked with [out] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value. + + An FMOD file might be from disk, memory or network, however the file may be opened by the user. + + 'numsubsounds' should be 0 if the file is a normal single sound stream or sound. Examples of this would be .WAV, .WMA, .MP3, .AIFF. + 'numsubsounds' should be 1+ if the file is a container format, and does not contain wav data itself. Examples of these types would be CDDA (multiple CD tracks), FSB (contains multiple sounds), MIDI/MOD/S3M/XM/IT (contain instruments). + The arrays of format, channel, frequency, length and blockalign should point to arrays of information based on how many subsounds are in the format. If the number of subsounds is 0 then it should point to 1 of each attribute, the same as if the number of subsounds was 1. If subsounds was 100 for example, each pointer should point to an array of 100 of each attribute. + When a sound has 1 or more subsounds, you must play the individual sounds specified by first obtaining the subsound with Sound::getSubSound. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + FMOD_SOUND_FORMAT + FMOD_FILE_READCALLBACK + FMOD_FILE_SEEKCALLBACK + FMOD_CODEC_METADATACALLBACK + Sound::getSubSound + Sound::getNumSubSounds +] +*/ +struct FMOD_CODEC_WAVEFORMAT +{ + char name[256]; /* [in] Name of sound.*/ + FMOD_SOUND_FORMAT format; /* [in] Format for (decompressed) codec output, ie FMOD_SOUND_FORMAT_PCM8, FMOD_SOUND_FORMAT_PCM16.*/ + int channels; /* [in] Number of channels used by codec, ie mono = 1, stereo = 2. */ + int frequency; /* [in] Default frequency in hz of the codec, ie 44100. */ + unsigned int lengthbytes; /* [in] Length in bytes of the source data. */ + unsigned int lengthpcm; /* [in] Length in decompressed, PCM samples of the file, ie length in seconds * frequency. Used for Sound::getLength and for memory allocation of static decompressed sample data. */ + int blockalign; /* [in] Blockalign in decompressed, PCM samples of the optimal decode chunk size for this format. The codec read callback will be called in multiples of this value. */ + int loopstart; /* [in] Loopstart in decompressed, PCM samples of file. */ + int loopend; /* [in] Loopend in decompressed, PCM samples of file. */ + FMOD_MODE mode; /* [in] Mode to determine whether the sound should by default load as looping, non looping, 2d or 3d. */ + unsigned int channelmask; /* [in] Microsoft speaker channel mask, as defined for WAVEFORMATEXTENSIBLE and is found in ksmedia.h. Leave at 0 to play in natural speaker order. */ +}; + + +/* +[STRUCTURE] +[ + [DESCRIPTION] + Codec plugin structure that is passed into each callback. + + Set these numsubsounds and waveformat members when called in FMOD_CODEC_OPENCALLBACK to tell fmod what sort of sound to create. + + The format, channels and frequency tell FMOD what sort of hardware buffer to create when you initialize your code. So if you wrote an MP3 codec that decoded to stereo 16bit integer PCM, you would specify FMOD_SOUND_FORMAT_PCM16, and channels would be equal to 2. + + [REMARKS] + Members marked with [in] mean the variable can be written to. The user can set the value. + Members marked with [out] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value. + + An FMOD file might be from disk, memory or internet, however the file may be opened by the user. + + 'numsubsounds' should be 0 if the file is a normal single sound stream or sound. Examples of this would be .WAV, .WMA, .MP3, .AIFF. + 'numsubsounds' should be 1+ if the file is a container format, and does not contain wav data itself. Examples of these types would be CDDA (multiple CD tracks), FSB (contains multiple sounds), DLS (contain instruments). + The arrays of format, channel, frequency, length and blockalign should point to arrays of information based on how many subsounds are in the format. If the number of subsounds is 0 then it should point to 1 of each attribute, the same as if the number of subsounds was 1. If subsounds was 100 for example, each pointer should point to an array of 100 of each attribute. + When a sound has 1 or more subsounds, you must play the individual sounds specified by first obtaining the subsound with Sound::getSubSound. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + FMOD_SOUND_FORMAT + FMOD_FILE_READCALLBACK + FMOD_FILE_SEEKCALLBACK + FMOD_CODEC_METADATACALLBACK + Sound::getSubSound + Sound::getNumSubSounds +] +*/ +struct FMOD_CODEC_STATE +{ + int numsubsounds; /* [in] Number of 'subsounds' in this sound. Anything other than 0 makes it a 'container' format (ie CDDA/DLS/FSB etc which contain 1 or more su bsounds). For most normal, single sound codec such as WAV/AIFF/MP3, this should be 0 as they are not a container for subsounds, they are the sound by itself. */ + FMOD_CODEC_WAVEFORMAT *waveformat; /* [in] Pointer to an array of format structures containing information about each sample. Can be 0 or NULL if FMOD_CODEC_GETWAVEFORMAT callback is preferred. The number of entries here must equal the number of subsounds defined in the subsound parameter. If numsubsounds = 0 then there should be 1 instance of this structure. */ + void *plugindata; /* [in] Plugin writer created data the codec author wants to attach to this object. */ + + void *filehandle; /* [out] This will return an internal FMOD file handle to use with the callbacks provided. */ + unsigned int filesize; /* [out] This will contain the size of the file in bytes. */ + FMOD_FILE_READCALLBACK fileread; /* [out] This will return a callable FMOD file function to use from codec. */ + FMOD_FILE_SEEKCALLBACK fileseek; /* [out] This will return a callable FMOD file function to use from codec. */ + FMOD_CODEC_METADATACALLBACK metadata; /* [out] This will return a callable FMOD metadata function to use from codec. */ +}; + +#endif + + diff --git a/dependent/fmod/api/inc/fmod_dsp.h b/dependent/fmod/api/inc/fmod_dsp.h new file mode 100644 index 0000000..b8df653 --- /dev/null +++ b/dependent/fmod/api/inc/fmod_dsp.h @@ -0,0 +1,746 @@ +/* ========================================================================================== */ +/* FMOD Ex - DSP header file. Copyright (c), Firelight Technologies Pty, Ltd. 2004-2016. */ +/* */ +/* Use this header if you are interested in delving deeper into the FMOD software mixing / */ +/* DSP engine. In this header you can find parameter structures for FMOD system reigstered */ +/* DSP effects and generators. */ +/* Also use this header if you are wanting to develop your own DSP plugin to use with FMOD's */ +/* dsp system. With this header you can make your own DSP plugin that FMOD can */ +/* register and use. See the documentation and examples on how to make a working plugin. */ +/* */ +/* ========================================================================================== */ + +#ifndef _FMOD_DSP_H +#define _FMOD_DSP_H + +typedef struct FMOD_DSP_STATE FMOD_DSP_STATE; + +/* + DSP callbacks +*/ +typedef FMOD_RESULT (F_CALLBACK *FMOD_DSP_CREATECALLBACK) (FMOD_DSP_STATE *dsp_state); +typedef FMOD_RESULT (F_CALLBACK *FMOD_DSP_RELEASECALLBACK) (FMOD_DSP_STATE *dsp_state); +typedef FMOD_RESULT (F_CALLBACK *FMOD_DSP_RESETCALLBACK) (FMOD_DSP_STATE *dsp_state); +typedef FMOD_RESULT (F_CALLBACK *FMOD_DSP_READCALLBACK) (FMOD_DSP_STATE *dsp_state, float *inbuffer, float *outbuffer, unsigned int length, int inchannels, int outchannels); +typedef FMOD_RESULT (F_CALLBACK *FMOD_DSP_SETPOSITIONCALLBACK)(FMOD_DSP_STATE *dsp_state, unsigned int pos); +typedef FMOD_RESULT (F_CALLBACK *FMOD_DSP_SETPARAMCALLBACK) (FMOD_DSP_STATE *dsp_state, int index, float value); +typedef FMOD_RESULT (F_CALLBACK *FMOD_DSP_GETPARAMCALLBACK) (FMOD_DSP_STATE *dsp_state, int index, float *value, char *valuestr); +typedef FMOD_RESULT (F_CALLBACK *FMOD_DSP_DIALOGCALLBACK) (FMOD_DSP_STATE *dsp_state, void *hwnd, int show); + +/* +[ENUM] +[ + [DESCRIPTION] + These definitions can be used for creating FMOD defined special effects or DSP units. + + [REMARKS] + To get them to be active, first create the unit, then add it somewhere into the DSP network, either at the front of the network near the soundcard unit to affect the global output (by using System::getDSPHead), or on a single channel (using Channel::getDSPHead). + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + System::createDSPByType +] +*/ +typedef enum +{ + FMOD_DSP_TYPE_UNKNOWN, /* This unit was created via a non FMOD plugin so has an unknown purpose. */ + FMOD_DSP_TYPE_MIXER, /* This unit does nothing but take inputs and mix them together then feed the result to the soundcard unit. */ + FMOD_DSP_TYPE_OSCILLATOR, /* This unit generates sine/square/saw/triangle or noise tones. */ + FMOD_DSP_TYPE_LOWPASS, /* This unit filters sound using a high quality, resonant lowpass filter algorithm but consumes more CPU time. */ + FMOD_DSP_TYPE_ITLOWPASS, /* This unit filters sound using a resonant lowpass filter algorithm that is used in Impulse Tracker, but with limited cutoff range (0 to 8060hz). */ + FMOD_DSP_TYPE_HIGHPASS, /* This unit filters sound using a resonant highpass filter algorithm. */ + FMOD_DSP_TYPE_ECHO, /* This unit produces an echo on the sound and fades out at the desired rate. */ + FMOD_DSP_TYPE_FLANGE, /* This unit produces a flange effect on the sound. */ + FMOD_DSP_TYPE_DISTORTION, /* This unit distorts the sound. */ + FMOD_DSP_TYPE_NORMALIZE, /* This unit normalizes or amplifies the sound to a certain level. */ + FMOD_DSP_TYPE_PARAMEQ, /* This unit attenuates or amplifies a selected frequency range. */ + FMOD_DSP_TYPE_PITCHSHIFT, /* This unit bends the pitch of a sound without changing the speed of playback. */ + FMOD_DSP_TYPE_CHORUS, /* This unit produces a chorus effect on the sound. */ + FMOD_DSP_TYPE_VSTPLUGIN, /* This unit allows the use of Steinberg VST plugins */ + FMOD_DSP_TYPE_WINAMPPLUGIN, /* This unit allows the use of Nullsoft Winamp plugins */ + FMOD_DSP_TYPE_ITECHO, /* This unit produces an echo on the sound and fades out at the desired rate as is used in Impulse Tracker. */ + FMOD_DSP_TYPE_COMPRESSOR, /* This unit implements dynamic compression (linked multichannel, wideband) */ + FMOD_DSP_TYPE_SFXREVERB, /* This unit implements SFX reverb */ + FMOD_DSP_TYPE_LOWPASS_SIMPLE, /* This unit filters sound using a simple lowpass with no resonance, but has flexible cutoff and is fast. */ + FMOD_DSP_TYPE_DELAY, /* This unit produces different delays on individual channels of the sound. */ + FMOD_DSP_TYPE_TREMOLO, /* This unit produces a tremolo / chopper effect on the sound. */ + FMOD_DSP_TYPE_LADSPAPLUGIN, /* This unit allows the use of LADSPA standard plugins. */ + FMOD_DSP_TYPE_HIGHPASS_SIMPLE, /* This unit filters sound using a simple highpass with no resonance, but has flexible cutoff and is fast. */ + FMOD_DSP_TYPE_HARDWARE = 1000, /* Offset that platform specific FMOD_HARDWARE DSPs will start at. */ + FMOD_DSP_TYPE_FORCEINT = 65536 /* Makes sure this enum is signed 32bit. */ +} FMOD_DSP_TYPE; + + +/* +[STRUCTURE] +[ + [DESCRIPTION] + Structure to define a parameter for a DSP unit. + + [REMARKS] + Members marked with [r] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value. + Members marked with [w] mean the variable can be written to. The user can set the value. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + System::createDSP + DSP::setParameter +] +*/ +typedef struct FMOD_DSP_PARAMETERDESC +{ + float min; /* [w] Minimum value of the parameter (ie 100.0). */ + float max; /* [w] Maximum value of the parameter (ie 22050.0). */ + float defaultval; /* [w] Default value of parameter. */ + char name[16]; /* [w] Name of the parameter to be displayed (ie "Cutoff frequency"). */ + char label[16]; /* [w] Short string to be put next to value to denote the unit type (ie "hz"). */ + const char *description; /* [w] Description of the parameter to be displayed as a help item / tooltip for this parameter. */ +} FMOD_DSP_PARAMETERDESC; + + +/* +[STRUCTURE] +[ + [DESCRIPTION] + When creating a DSP unit, declare one of these and provide the relevant callbacks and name for FMOD to use when it creates and uses a DSP unit of this type. + + [REMARKS] + + Members marked with [r] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value. + Members marked with [w] mean the variable can be written to. The user can set the value. + + IMPORTANT: The 'paramdesc' member should point to static memory, as FMOD references the data internally using the pointer provided. Do not store these parameter description structures on the stack, or in heap memory that is freed while FMOD is using it. + + There are 2 different ways to change a parameter in this architecture. + One is to use DSP::setParameter / DSP::getParameter. This is platform independant and is dynamic, so new unknown plugins can have their parameters enumerated and used. + The other is to use DSP::showConfigDialog. This is platform specific and requires a GUI, and will display a dialog box to configure the plugin. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + System::createDSP + FMOD_DSP_STATE +] +*/ +typedef struct FMOD_DSP_DESCRIPTION +{ + char name[32]; /* [w] Name of the unit to be displayed in the network. */ + unsigned int version; /* [w] Plugin writer's version number. */ + int channels; /* [w] Number of channels. Use 0 to process whatever number of channels is currently in the network. >0 would be mostly used if the unit is a unit that only generates sound. */ + FMOD_DSP_CREATECALLBACK create; /* [w] Create callback. This is called when DSP unit is created. Can be null. */ + FMOD_DSP_RELEASECALLBACK release; /* [w] Release callback. This is called just before the unit is freed so the user can do any cleanup needed for the unit. Can be null. */ + FMOD_DSP_RESETCALLBACK reset; /* [w] Reset callback. This is called by the user to reset any history buffers that may need resetting for a filter, when it is to be used or re-used for the first time to its initial clean state. Use to avoid clicks or artifacts. */ + FMOD_DSP_READCALLBACK read; /* [w] Read callback. Processing is done here. Can be null. */ + FMOD_DSP_SETPOSITIONCALLBACK setposition; /* [w] Set position callback. This is called if the unit wants to update its position info but not process data, or reset a cursor position internally if it is reading data from a certain source. Can be null. */ + + int numparameters; /* [w] Number of parameters used in this filter. The user finds this with DSP::getNumParameters */ + FMOD_DSP_PARAMETERDESC *paramdesc; /* [w] Variable number of parameter structures. */ + FMOD_DSP_SETPARAMCALLBACK setparameter; /* [w] This is called when the user calls DSP::setParameter. Can be null. */ + FMOD_DSP_GETPARAMCALLBACK getparameter; /* [w] This is called when the user calls DSP::getParameter. Can be null. */ + FMOD_DSP_DIALOGCALLBACK config; /* [w] This is called when the user calls DSP::showConfigDialog. Can be used to display a dialog to configure the filter. Can be null. */ + int configwidth; /* [w] Width of config dialog graphic if there is one. 0 otherwise.*/ + int configheight; /* [w] Height of config dialog graphic if there is one. 0 otherwise.*/ + void *userdata; /* [w] Optional. Specify 0 to ignore. This is user data to be attached to the DSP unit during creation. Access via DSP::getUserData. */ +} FMOD_DSP_DESCRIPTION; + + +/* +[STRUCTURE] +[ + [DESCRIPTION] + DSP plugin structure that is passed into each callback. + + [REMARKS] + Members marked with [r] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value. + Members marked with [w] mean the variable can be written to. The user can set the value. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + FMOD_DSP_DESCRIPTION +] +*/ +struct FMOD_DSP_STATE +{ + FMOD_DSP *instance; /* [r] Handle to the DSP hand the user created. Not to be modified. C++ users cast to FMOD::DSP to use. */ + void *plugindata; /* [w] Plugin writer created data the output author wants to attach to this object. */ + unsigned short speakermask; /* [w] Specifies which speakers the DSP effect is active on */ +}; + + +/* + =================================================================================================== + + FMOD built in effect parameters. + Use DSP::setParameter with these enums for the 'index' parameter. + + =================================================================================================== +*/ + +/* +[ENUM] +[ + [DESCRIPTION] + Parameter types for the FMOD_DSP_TYPE_OSCILLATOR filter. + + [REMARKS] + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + DSP::setParameter + DSP::getParameter + FMOD_DSP_TYPE +] +*/ +typedef enum +{ + FMOD_DSP_OSCILLATOR_TYPE, /* Waveform type. 0 = sine. 1 = square. 2 = sawup. 3 = sawdown. 4 = triangle. 5 = noise. */ + FMOD_DSP_OSCILLATOR_RATE /* Frequency of the sinewave in hz. 1.0 to 22000.0. Default = 220.0. */ +} FMOD_DSP_OSCILLATOR; + + +/* +[ENUM] +[ + [DESCRIPTION] + Parameter types for the FMOD_DSP_TYPE_LOWPASS filter. + + [REMARKS] + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + DSP::setParameter + DSP::getParameter + FMOD_DSP_TYPE +] +*/ +typedef enum +{ + FMOD_DSP_LOWPASS_CUTOFF, /* Lowpass cutoff frequency in hz. 10.0 to 22000.0. Default = 5000.0. */ + FMOD_DSP_LOWPASS_RESONANCE /* Lowpass resonance Q value. 1.0 to 10.0. Default = 1.0. */ +} FMOD_DSP_LOWPASS; + + +/* +[ENUM] +[ + [DESCRIPTION] + Parameter types for the FMOD_DSP_TYPE_ITLOWPASS filter. + This is different to the default FMOD_DSP_TYPE_ITLOWPASS filter in that it uses a different quality algorithm and is + the filter used to produce the correct sounding playback in .IT files. + FMOD Ex's .IT playback uses this filter. + + [REMARKS] + Note! This filter actually has a limited cutoff frequency below the specified maximum, due to its limited design, + so for a more open range filter use FMOD_DSP_LOWPASS or if you don't mind not having resonance, + FMOD_DSP_LOWPASS_SIMPLE. + The effective maximum cutoff is about 8060hz. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + DSP::setParameter + DSP::getParameter + FMOD_DSP_TYPE +] +*/ +typedef enum +{ + FMOD_DSP_ITLOWPASS_CUTOFF, /* Lowpass cutoff frequency in hz. 1.0 to 22000.0. Default = 5000.0/ */ + FMOD_DSP_ITLOWPASS_RESONANCE /* Lowpass resonance Q value. 0.0 to 127.0. Default = 1.0. */ +} FMOD_DSP_ITLOWPASS; + + +/* +[ENUM] +[ + [DESCRIPTION] + Parameter types for the FMOD_DSP_TYPE_HIGHPASS filter. + + [REMARKS] + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + DSP::setParameter + DSP::getParameter + FMOD_DSP_TYPE +] +*/ +typedef enum +{ + FMOD_DSP_HIGHPASS_CUTOFF, /* Highpass cutoff frequency in hz. 1.0 to output 22000.0. Default = 5000.0. */ + FMOD_DSP_HIGHPASS_RESONANCE /* Highpass resonance Q value. 1.0 to 10.0. Default = 1.0. */ +} FMOD_DSP_HIGHPASS; + + +/* +[ENUM] +[ + [DESCRIPTION] + Parameter types for the FMOD_DSP_TYPE_ECHO filter. + + [REMARKS] + Note. Every time the delay is changed, the plugin re-allocates the echo buffer. This means the echo will dissapear at that time while it refills its new buffer. + Larger echo delays result in larger amounts of memory allocated. + + 'maxchannels' also dictates the amount of memory allocated. By default, the maxchannels value is 0. If FMOD is set to stereo, the echo unit will allocate enough memory for 2 channels. If it is 5.1, it will allocate enough memory for a 6 channel echo, etc. + If the echo effect is only ever applied to the global mix (ie it was added with System::addDSP), then 0 is the value to set as it will be enough to handle all speaker modes. + When the echo is added to a channel (ie Channel::addDSP) then the channel count that comes in could be anything from 1 to 8 possibly. It is only in this case where you might want to increase the channel count above the output's channel count. + If a channel echo is set to a lower number than the sound's channel count that is coming in, it will not echo the sound. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + DSP::setParameter + DSP::getParameter + FMOD_DSP_TYPE +] +*/ +typedef enum +{ + FMOD_DSP_ECHO_DELAY, /* Echo delay in ms. 10 to 5000. Default = 500. */ + FMOD_DSP_ECHO_DECAYRATIO, /* Echo decay per delay. 0 to 1. 1.0 = No decay, 0.0 = total decay (ie simple 1 line delay). Default = 0.5. */ + FMOD_DSP_ECHO_MAXCHANNELS, /* Maximum channels supported. 0 to 16. 0 = same as fmod's default output polyphony, 1 = mono, 2 = stereo etc. See remarks for more. Default = 0. It is suggested to leave at 0! */ + FMOD_DSP_ECHO_DRYMIX, /* Volume of original signal to pass to output. 0.0 to 1.0. Default = 1.0. */ + FMOD_DSP_ECHO_WETMIX /* Volume of echo signal to pass to output. 0.0 to 1.0. Default = 1.0. */ +} FMOD_DSP_ECHO; + + +/* +[ENUM] +[ + [DESCRIPTION] + Parameter types for the FMOD_DSP_TYPE_DELAY filter. + + [REMARKS] + Note. Every time MaxDelay is changed, the plugin re-allocates the delay buffer. This means the delay will dissapear at that time while it refills its new buffer. + A larger MaxDelay results in larger amounts of memory allocated. + Channel delays above MaxDelay will be clipped to MaxDelay and the delay buffer will not be resized. + + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + DSP::setParameter + DSP::getParameter + FMOD_DSP_TYPE +] +*/ +typedef enum +{ + FMOD_DSP_DELAY_CH0, /* Channel #0 Delay in ms. 0 to 10000. Default = 0. */ + FMOD_DSP_DELAY_CH1, /* Channel #1 Delay in ms. 0 to 10000. Default = 0. */ + FMOD_DSP_DELAY_CH2, /* Channel #2 Delay in ms. 0 to 10000. Default = 0. */ + FMOD_DSP_DELAY_CH3, /* Channel #3 Delay in ms. 0 to 10000. Default = 0. */ + FMOD_DSP_DELAY_CH4, /* Channel #4 Delay in ms. 0 to 10000. Default = 0. */ + FMOD_DSP_DELAY_CH5, /* Channel #5 Delay in ms. 0 to 10000. Default = 0. */ + FMOD_DSP_DELAY_CH6, /* Channel #6 Delay in ms. 0 to 10000. Default = 0. */ + FMOD_DSP_DELAY_CH7, /* Channel #7 Delay in ms. 0 to 10000. Default = 0. */ + FMOD_DSP_DELAY_CH8, /* Channel #8 Delay in ms. 0 to 10000. Default = 0. */ + FMOD_DSP_DELAY_CH9, /* Channel #9 Delay in ms. 0 to 10000. Default = 0. */ + FMOD_DSP_DELAY_CH10, /* Channel #10 Delay in ms. 0 to 10000. Default = 0. */ + FMOD_DSP_DELAY_CH11, /* Channel #11 Delay in ms. 0 to 10000. Default = 0. */ + FMOD_DSP_DELAY_CH12, /* Channel #12 Delay in ms. 0 to 10000. Default = 0. */ + FMOD_DSP_DELAY_CH13, /* Channel #13 Delay in ms. 0 to 10000. Default = 0. */ + FMOD_DSP_DELAY_CH14, /* Channel #14 Delay in ms. 0 to 10000. Default = 0. */ + FMOD_DSP_DELAY_CH15, /* Channel #15 Delay in ms. 0 to 10000. Default = 0. */ + FMOD_DSP_DELAY_MAXDELAY /* Maximum delay in ms. 0 to 10000. Default = 10. */ +} FMOD_DSP_DELAY; + + +/* +[ENUM] +[ + [DESCRIPTION] + Parameter types for the FMOD_DSP_TYPE_FLANGE filter. + + [REMARKS] + Flange is an effect where the signal is played twice at the same time, and one copy slides back and forth creating a whooshing or flanging effect. + As there are 2 copies of the same signal, by default each signal is given 50% mix, so that the total is not louder than the original unaffected signal. + + Flange depth is a percentage of a 10ms shift from the original signal. Anything above 10ms is not considered flange because to the ear it begins to 'echo' so 10ms is the highest value possible. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + DSP::setParameter + DSP::getParameter + FMOD_DSP_TYPE +] +*/ +typedef enum +{ + FMOD_DSP_FLANGE_DRYMIX, /* Volume of original signal to pass to output. 0.0 to 1.0. Default = 0.45. */ + FMOD_DSP_FLANGE_WETMIX, /* Volume of flange signal to pass to output. 0.0 to 1.0. Default = 0.55. */ + FMOD_DSP_FLANGE_DEPTH, /* Flange depth (percentage of 40ms delay). 0.01 to 1.0. Default = 1.0. */ + FMOD_DSP_FLANGE_RATE /* Flange speed in hz. 0.0 to 20.0. Default = 0.1. */ +} FMOD_DSP_FLANGE; + + +/* +[ENUM] +[ + [DESCRIPTION] + Parameter types for the FMOD_DSP_TYPE_TREMOLO filter. + + [REMARKS] + The tremolo effect varies the amplitude of a sound. Depending on the settings, this unit can produce a tremolo, chopper or auto-pan effect. + + The shape of the LFO (low freq. oscillator) can morphed between sine, triangle and sawtooth waves using the FMOD_DSP_TREMOLO_SHAPE and FMOD_DSP_TREMOLO_SKEW parameters. + FMOD_DSP_TREMOLO_DUTY and FMOD_DSP_TREMOLO_SQUARE are useful for a chopper-type effect where the first controls the on-time duration and second controls the flatness of the envelope. + FMOD_DSP_TREMOLO_SPREAD varies the LFO phase between channels to get an auto-pan effect. This works best with a sine shape LFO. + The LFO can be synchronized using the FMOD_DSP_TREMOLO_PHASE parameter which sets its instantaneous phase. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + DSP::setParameter + DSP::getParameter + FMOD_DSP_TYPE +] +*/ +typedef enum +{ + FMOD_DSP_TREMOLO_FREQUENCY, /* LFO frequency in Hz. 0.1 to 20. Default = 4. */ + FMOD_DSP_TREMOLO_DEPTH, /* Tremolo depth. 0 to 1. Default = 0. */ + FMOD_DSP_TREMOLO_SHAPE, /* LFO shape morph between triangle and sine. 0 to 1. Default = 0. */ + FMOD_DSP_TREMOLO_SKEW, /* Time-skewing of LFO cycle. -1 to 1. Default = 0. */ + FMOD_DSP_TREMOLO_DUTY, /* LFO on-time. 0 to 1. Default = 0.5. */ + FMOD_DSP_TREMOLO_SQUARE, /* Flatness of the LFO shape. 0 to 1. Default = 0. */ + FMOD_DSP_TREMOLO_PHASE, /* Instantaneous LFO phase. 0 to 1. Default = 0. */ + FMOD_DSP_TREMOLO_SPREAD /* Rotation / auto-pan effect. -1 to 1. Default = 0. */ +} FMOD_DSP_TREMOLO; + + +/* +[ENUM] +[ + [DESCRIPTION] + Parameter types for the FMOD_DSP_TYPE_DISTORTION filter. + + [REMARKS] + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + DSP::setParameter + DSP::getParameter + FMOD_DSP_TYPE +] +*/ +typedef enum +{ + FMOD_DSP_DISTORTION_LEVEL /* Distortion value. 0.0 to 1.0. Default = 0.5. */ +} FMOD_DSP_DISTORTION; + + +/* +[ENUM] +[ + [DESCRIPTION] + Parameter types for the FMOD_DSP_TYPE_NORMALIZE filter. + + [REMARKS] + Normalize amplifies the sound based on the maximum peaks within the signal. + For example if the maximum peaks in the signal were 50% of the bandwidth, it would scale the whole sound by 2. + The lower threshold value makes the normalizer ignores peaks below a certain point, to avoid over-amplification if a loud signal suddenly came in, and also to avoid amplifying to maximum things like background hiss. + + Because FMOD is a realtime audio processor, it doesn't have the luxury of knowing the peak for the whole sound (ie it can't see into the future), so it has to process data as it comes in. + To avoid very sudden changes in volume level based on small samples of new data, fmod fades towards the desired amplification which makes for smooth gain control. The fadetime parameter can control this. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + DSP::setParameter + DSP::getParameter + FMOD_DSP_TYPE +] +*/ +typedef enum +{ + FMOD_DSP_NORMALIZE_FADETIME, /* Time to ramp the silence to full in ms. 0.0 to 20000.0. Default = 5000.0. */ + FMOD_DSP_NORMALIZE_THRESHHOLD, /* Lower volume range threshold to ignore. 0.0 to 1.0. Default = 0.1. Raise higher to stop amplification of very quiet signals. */ + FMOD_DSP_NORMALIZE_MAXAMP /* Maximum amplification allowed. 1.0 to 100000.0. Default = 20.0. 1.0 = no amplifaction, higher values allow more boost. */ +} FMOD_DSP_NORMALIZE; + + +/* +[ENUM] +[ + [DESCRIPTION] + Parameter types for the FMOD_DSP_TYPE_PARAMEQ filter. + + [REMARKS] + Parametric EQ is a bandpass filter that attenuates or amplifies a selected frequency and its neighbouring frequencies. + + To create a multi-band EQ create multiple FMOD_DSP_TYPE_PARAMEQ units and set each unit to different frequencies, for example 1000hz, 2000hz, 4000hz, 8000hz, 16000hz with a range of 1 octave each. + + When a frequency has its gain set to 1.0, the sound will be unaffected and represents the original signal exactly. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + DSP::setParameter + DSP::getParameter + FMOD_DSP_TYPE +] +*/ +typedef enum +{ + FMOD_DSP_PARAMEQ_CENTER, /* Frequency center. 20.0 to 22000.0. Default = 8000.0. */ + FMOD_DSP_PARAMEQ_BANDWIDTH, /* Octave range around the center frequency to filter. 0.2 to 5.0. Default = 1.0. */ + FMOD_DSP_PARAMEQ_GAIN /* Frequency Gain. 0.05 to 3.0. Default = 1.0. */ +} FMOD_DSP_PARAMEQ; + + + +/* +[ENUM] +[ + [DESCRIPTION] + Parameter types for the FMOD_DSP_TYPE_PITCHSHIFT filter. + + [REMARKS] + This pitch shifting unit can be used to change the pitch of a sound without speeding it up or slowing it down. + It can also be used for time stretching or scaling, for example if the pitch was doubled, and the frequency of the sound was halved, the pitch of the sound would sound correct but it would be twice as slow. + + Warning! This filter is very computationally expensive! Similar to a vocoder, it requires several overlapping FFT and IFFT's to produce smooth output, and can require around 440mhz for 1 stereo 48khz signal using the default settings. + Reducing the signal to mono will half the cpu usage. + Reducing this will lower audio quality, but what settings to use are largely dependant on the sound being played. A noisy polyphonic signal will need higher fft size compared to a speaking voice for example. + + This pitch shifter is based on the pitch shifter code at http://www.dspdimension.com, written by Stephan M. Bernsee. + The original code is COPYRIGHT 1999-2003 Stephan M. Bernsee . + + 'maxchannels' dictates the amount of memory allocated. By default, the maxchannels value is 0. If FMOD is set to stereo, the pitch shift unit will allocate enough memory for 2 channels. If it is 5.1, it will allocate enough memory for a 6 channel pitch shift, etc. + If the pitch shift effect is only ever applied to the global mix (ie it was added with System::addDSP), then 0 is the value to set as it will be enough to handle all speaker modes. + When the pitch shift is added to a channel (ie Channel::addDSP) then the channel count that comes in could be anything from 1 to 8 possibly. It is only in this case where you might want to increase the channel count above the output's channel count. + If a channel pitch shift is set to a lower number than the sound's channel count that is coming in, it will not pitch shift the sound. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + DSP::setParameter + DSP::getParameter + FMOD_DSP_TYPE +] +*/ +typedef enum +{ + FMOD_DSP_PITCHSHIFT_PITCH, /* Pitch value. 0.5 to 2.0. Default = 1.0. 0.5 = one octave down, 2.0 = one octave up. 1.0 does not change the pitch. */ + FMOD_DSP_PITCHSHIFT_FFTSIZE, /* FFT window size. 256, 512, 1024, 2048, 4096. Default = 1024. Increase this to reduce 'smearing'. This effect is a warbling sound similar to when an mp3 is encoded at very low bitrates. */ + FMOD_DSP_PITCHSHIFT_OVERLAP, /* Removed. Do not use. FMOD now uses 4 overlaps and cannot be changed. */ + FMOD_DSP_PITCHSHIFT_MAXCHANNELS /* Maximum channels supported. 0 to 16. 0 = same as fmod's default output polyphony, 1 = mono, 2 = stereo etc. See remarks for more. Default = 0. It is suggested to leave at 0! */ +} FMOD_DSP_PITCHSHIFT; + + + +/* +[ENUM] +[ + [DESCRIPTION] + Parameter types for the FMOD_DSP_TYPE_CHORUS filter. + + [REMARKS] + Chrous is an effect where the sound is more 'spacious' due to 1 to 3 versions of the sound being played along side the original signal but with the pitch of each copy modulating on a sine wave. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + DSP::setParameter + DSP::getParameter + FMOD_DSP_TYPE +] +*/ +typedef enum +{ + FMOD_DSP_CHORUS_DRYMIX, /* Volume of original signal to pass to output. 0.0 to 1.0. Default = 0.5. */ + FMOD_DSP_CHORUS_WETMIX1, /* Volume of 1st chorus tap. 0.0 to 1.0. Default = 0.5. */ + FMOD_DSP_CHORUS_WETMIX2, /* Volume of 2nd chorus tap. This tap is 90 degrees out of phase of the first tap. 0.0 to 1.0. Default = 0.5. */ + FMOD_DSP_CHORUS_WETMIX3, /* Volume of 3rd chorus tap. This tap is 90 degrees out of phase of the second tap. 0.0 to 1.0. Default = 0.5. */ + FMOD_DSP_CHORUS_DELAY, /* Chorus delay in ms. 0.1 to 100.0. Default = 40.0 ms. */ + FMOD_DSP_CHORUS_RATE, /* Chorus modulation rate in hz. 0.0 to 20.0. Default = 0.8 hz. */ + FMOD_DSP_CHORUS_DEPTH /* Chorus modulation depth. 0.0 to 1.0. Default = 0.03. */ +} FMOD_DSP_CHORUS; + + +/* +[ENUM] +[ + [DESCRIPTION] + Parameter types for the FMOD_DSP_TYPE_ITECHO filter. + This is effectively a software based echo filter that emulates the DirectX DMO echo effect. Impulse tracker files can support this, and FMOD will produce the effect on ANY platform, not just those that support DirectX effects! + + [REMARKS] + Note. Every time the delay is changed, the plugin re-allocates the echo buffer. This means the echo will dissapear at that time while it refills its new buffer. + Larger echo delays result in larger amounts of memory allocated. + + As this is a stereo filter made mainly for IT playback, it is targeted for stereo signals. + With mono signals only the FMOD_DSP_ITECHO_LEFTDELAY is used. + For multichannel signals (>2) there will be no echo on those channels. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + DSP::SetParameter + DSP::GetParameter + FMOD_DSP_TYPE + System::addDSP +] +*/ +typedef enum +{ + FMOD_DSP_ITECHO_WETDRYMIX, /* Ratio of wet (processed) signal to dry (unprocessed) signal. Must be in the range from 0.0 through 100.0 (all wet). The default value is 50. */ + FMOD_DSP_ITECHO_FEEDBACK, /* Percentage of output fed back into input, in the range from 0.0 through 100.0. The default value is 50. */ + FMOD_DSP_ITECHO_LEFTDELAY, /* Delay for left channel, in milliseconds, in the range from 1.0 through 2000.0. The default value is 500 ms. */ + FMOD_DSP_ITECHO_RIGHTDELAY, /* Delay for right channel, in milliseconds, in the range from 1.0 through 2000.0. The default value is 500 ms. */ + FMOD_DSP_ITECHO_PANDELAY /* Value that specifies whether to swap left and right delays with each successive echo. The default value is zero, meaning no swap. Possible values are defined as 0.0 (equivalent to FALSE) and 1.0 (equivalent to TRUE). CURRENTLY NOT SUPPORTED. */ +} FMOD_DSP_ITECHO; + +/* +[ENUM] +[ + [DESCRIPTION] + Parameter types for the FMOD_DSP_TYPE_COMPRESSOR unit. + This is a simple linked multichannel software limiter that is uniform across the whole spectrum. + + [REMARKS] + The limiter is not guaranteed to catch every peak above the threshold level, + because it cannot apply gain reduction instantaneously - the time delay is + determined by the attack time. However setting the attack time too short will + distort the sound, so it is a compromise. High level peaks can be avoided by + using a short attack time - but not too short, and setting the threshold a few + decibels below the critical level. + + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + DSP::SetParameter + DSP::GetParameter + FMOD_DSP_TYPE + System::addDSP +] +*/ +typedef enum +{ + FMOD_DSP_COMPRESSOR_THRESHOLD, /* Threshold level (dB) in the range from -60 through 0. The default value is 0. */ + FMOD_DSP_COMPRESSOR_ATTACK, /* Gain reduction attack time (milliseconds), in the range from 10 through 200. The default value is 50. */ + FMOD_DSP_COMPRESSOR_RELEASE, /* Gain reduction release time (milliseconds), in the range from 20 through 1000. The default value is 50. */ + FMOD_DSP_COMPRESSOR_GAINMAKEUP /* Make-up gain (dB) applied after limiting, in the range from 0 through 30. The default value is 0. */ +} FMOD_DSP_COMPRESSOR; + +/* +[ENUM] +[ + [DESCRIPTION] + Parameter types for the FMOD_DSP_TYPE_SFXREVERB unit. + + [REMARKS] + This is a high quality I3DL2 based reverb. + On top of the I3DL2 property set, "Dry Level" is also included to allow the dry mix to be changed. + + These properties can be set with presets in FMOD_REVERB_PRESETS. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + DSP::SetParameter + DSP::GetParameter + FMOD_DSP_TYPE + System::addDSP + FMOD_REVERB_PRESETS +] +*/ +typedef enum +{ + FMOD_DSP_SFXREVERB_DRYLEVEL, /* Dry Level : Mix level of dry signal in output in mB. Ranges from -10000.0 to 0.0. Default is 0. */ + FMOD_DSP_SFXREVERB_ROOM, /* Room : Room effect level at low frequencies in mB. Ranges from -10000.0 to 0.0. Default is -10000.0. */ + FMOD_DSP_SFXREVERB_ROOMHF, /* Room HF : Room effect high-frequency level re. low frequency level in mB. Ranges from -10000.0 to 0.0. Default is 0.0. */ + FMOD_DSP_SFXREVERB_DECAYTIME, /* Decay Time : Reverberation decay time at low-frequencies in seconds. Ranges from 0.1 to 20.0. Default is 1.0. */ + FMOD_DSP_SFXREVERB_DECAYHFRATIO, /* Decay HF Ratio : High-frequency to low-frequency decay time ratio. Ranges from 0.1 to 2.0. Default is 0.5. */ + FMOD_DSP_SFXREVERB_REFLECTIONSLEVEL, /* Reflections : Early reflections level relative to room effect in mB. Ranges from -10000.0 to 1000.0. Default is -10000.0. */ + FMOD_DSP_SFXREVERB_REFLECTIONSDELAY, /* Reflect Delay : Delay time of first reflection in seconds. Ranges from 0.0 to 0.3. Default is 0.02. */ + FMOD_DSP_SFXREVERB_REVERBLEVEL, /* Reverb : Late reverberation level relative to room effect in mB. Ranges from -10000.0 to 2000.0. Default is 0.0. */ + FMOD_DSP_SFXREVERB_REVERBDELAY, /* Reverb Delay : Late reverberation delay time relative to first reflection in seconds. Ranges from 0.0 to 0.1. Default is 0.04. */ + FMOD_DSP_SFXREVERB_DIFFUSION, /* Diffusion : Reverberation diffusion (echo density) in percent. Ranges from 0.0 to 100.0. Default is 100.0. */ + FMOD_DSP_SFXREVERB_DENSITY, /* Density : Reverberation density (modal density) in percent. Ranges from 0.0 to 100.0. Default is 100.0. */ + FMOD_DSP_SFXREVERB_HFREFERENCE, /* HF Reference : Reference high frequency in Hz. Ranges from 20.0 to 20000.0. Default is 5000.0. */ + FMOD_DSP_SFXREVERB_ROOMLF, /* Room LF : Room effect low-frequency level in mB. Ranges from -10000.0 to 0.0. Default is 0.0. */ + FMOD_DSP_SFXREVERB_LFREFERENCE /* LF Reference : Reference low-frequency in Hz. Ranges from 20.0 to 1000.0. Default is 250.0. */ +} FMOD_DSP_SFXREVERB; + +/* +[ENUM] +[ + [DESCRIPTION] + Parameter types for the FMOD_DSP_TYPE_LOWPASS_SIMPLE filter. + This is a very simple low pass filter, based on two single-pole RC time-constant modules. + The emphasis is on speed rather than accuracy, so this should not be used for task requiring critical filtering. + + [REMARKS] + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + DSP::setParameter + DSP::getParameter + FMOD_DSP_TYPE +] +*/ +typedef enum +{ + FMOD_DSP_LOWPASS_SIMPLE_CUTOFF /* Lowpass cutoff frequency in hz. 10.0 to 22000.0. Default = 5000.0 */ +} FMOD_DSP_LOWPASS_SIMPLE; + +/* +[ENUM] +[ + [DESCRIPTION] + Parameter types for the FMOD_DSP_TYPE_HIGHPASS_SIMPLE filter. + This is a very simple single-order high pass filter. + The emphasis is on speed rather than accuracy, so this should not be used for task requiring critical filtering. + + [REMARKS] + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + DSP::setParameter + DSP::getParameter + FMOD_DSP_TYPE +] +*/ +typedef enum +{ + FMOD_DSP_HIGHPASS_SIMPLE_CUTOFF /* Highpass cutoff frequency in hz. 10.0 to 22000.0. Default = 1000.0 */ +} FMOD_DSP_HIGHPASS_SIMPLE; + +#endif + diff --git a/dependent/fmod/api/inc/fmod_errors.h b/dependent/fmod/api/inc/fmod_errors.h new file mode 100644 index 0000000..20cf9e8 --- /dev/null +++ b/dependent/fmod/api/inc/fmod_errors.h @@ -0,0 +1,123 @@ + +/* ============================================================================================== */ +/* FMOD Ex - Error string header file. Copyright (c), Firelight Technologies Pty, Ltd. 2004-2016. */ +/* */ +/* Use this header if you want to store or display a string version / english explanation of */ +/* the FMOD error codes. */ +/* */ +/* ============================================================================================== */ + +#ifndef _FMOD_ERRORS_H +#define _FMOD_ERRORS_H + +#include "fmod.h" + +#ifdef __GNUC__ +static const char *FMOD_ErrorString(FMOD_RESULT errcode) __attribute__((unused)); +#endif + +static const char *FMOD_ErrorString(FMOD_RESULT errcode) +{ + switch (errcode) + { + case FMOD_ERR_ALREADYLOCKED: return "Tried to call lock a second time before unlock was called. "; + case FMOD_ERR_BADCOMMAND: return "Tried to call a function on a data type that does not allow this type of functionality (ie calling Sound::lock on a streaming sound). "; + case FMOD_ERR_CDDA_DRIVERS: return "Neither NTSCSI nor ASPI could be initialised. "; + case FMOD_ERR_CDDA_INIT: return "An error occurred while initialising the CDDA subsystem. "; + case FMOD_ERR_CDDA_INVALID_DEVICE: return "Couldn't find the specified device. "; + case FMOD_ERR_CDDA_NOAUDIO: return "No audio tracks on the specified disc. "; + case FMOD_ERR_CDDA_NODEVICES: return "No CD/DVD devices were found. "; + case FMOD_ERR_CDDA_NODISC: return "No disc present in the specified drive. "; + case FMOD_ERR_CDDA_READ: return "A CDDA read error occurred. "; + case FMOD_ERR_CHANNEL_ALLOC: return "Error trying to allocate a channel. "; + case FMOD_ERR_CHANNEL_STOLEN: return "The specified channel has been reused to play another sound. "; + case FMOD_ERR_COM: return "A Win32 COM related error occured. COM failed to initialize or a QueryInterface failed meaning a Windows codec or driver was not installed properly. "; + case FMOD_ERR_DMA: return "DMA Failure. See debug output for more information. "; + case FMOD_ERR_DSP_CONNECTION: return "DSP connection error. Connection possibly caused a cyclic dependancy. Or tried to connect a tree too many units deep (more than 128). "; + case FMOD_ERR_DSP_FORMAT: return "DSP Format error. A DSP unit may have attempted to connect to this network with the wrong format. "; + case FMOD_ERR_DSP_NOTFOUND: return "DSP connection error. Couldn't find the DSP unit specified. "; + case FMOD_ERR_DSP_RUNNING: return "DSP error. Cannot perform this operation while the network is in the middle of running. This will most likely happen if a connection or disconnection is attempted in a DSP callback. "; + case FMOD_ERR_DSP_TOOMANYCONNECTIONS: return "DSP connection error. The unit being connected to or disconnected should only have 1 input or output. "; + case FMOD_ERR_EVENT_ALREADY_LOADED: return "The specified project or bank has already been loaded. Having multiple copies of the same project loaded simultaneously is forbidden. "; + case FMOD_ERR_EVENT_FAILED: return "An Event failed to be retrieved, most likely due to 'just fail' being specified as the max playbacks behavior. "; + case FMOD_ERR_EVENT_GUIDCONFLICT: return "An event with the same GUID already exists. "; + case FMOD_ERR_EVENT_INFOONLY: return "Can't execute this command on an EVENT_INFOONLY event. "; + case FMOD_ERR_EVENT_INTERNAL: return "An error occured that wasn't supposed to. See debug log for reason. "; + case FMOD_ERR_EVENT_MAXSTREAMS: return "Event failed because 'Max streams' was hit when FMOD_EVENT_INIT_FAIL_ON_MAXSTREAMS was specified. "; + case FMOD_ERR_EVENT_MISMATCH: return "FSB mismatches the FEV it was compiled with, the stream/sample mode it was meant to be created with was different, or the FEV was built for a different platform. "; + case FMOD_ERR_EVENT_NAMECONFLICT: return "A category with the same name already exists. "; + case FMOD_ERR_EVENT_NEEDSSIMPLE: return "Tried to call a function on a complex event that's only supported by simple events. "; + case FMOD_ERR_EVENT_NOTFOUND: return "The requested event, event group, event category or event property could not be found. "; + case FMOD_ERR_FILE_BAD: return "Error loading file. "; + case FMOD_ERR_FILE_COULDNOTSEEK: return "Couldn't perform seek operation. This is a limitation of the medium (ie netstreams) or the file format. "; + case FMOD_ERR_FILE_DISKEJECTED: return "Media was ejected while reading. "; + case FMOD_ERR_FILE_EOF: return "End of file unexpectedly reached while trying to read essential data (truncated data?). "; + case FMOD_ERR_FILE_NOTFOUND: return "File not found. "; + case FMOD_ERR_FILE_UNWANTED: return "Unwanted file access occured. "; + case FMOD_ERR_FORMAT: return "Unsupported file or audio format. "; + case FMOD_ERR_HTTP: return "A HTTP error occurred. This is a catch-all for HTTP errors not listed elsewhere. "; + case FMOD_ERR_HTTP_ACCESS: return "The specified resource requires authentication or is forbidden. "; + case FMOD_ERR_HTTP_PROXY_AUTH: return "Proxy authentication is required to access the specified resource. "; + case FMOD_ERR_HTTP_SERVER_ERROR: return "A HTTP server error occurred. "; + case FMOD_ERR_HTTP_TIMEOUT: return "The HTTP request timed out. "; + case FMOD_ERR_INITIALIZATION: return "FMOD was not initialized correctly to support this function. "; + case FMOD_ERR_INITIALIZED: return "Cannot call this command after System::init. "; + case FMOD_ERR_INTERNAL: return "An error occured that wasn't supposed to. Contact support. "; + case FMOD_ERR_INVALID_ADDRESS: return "On Xbox 360, this memory address passed to FMOD must be physical, (ie allocated with XPhysicalAlloc.) "; + case FMOD_ERR_INVALID_FLOAT: return "Value passed in was a NaN, Inf or denormalized float. "; + case FMOD_ERR_INVALID_HANDLE: return "An invalid object handle was used. "; + case FMOD_ERR_INVALID_PARAM: return "An invalid parameter was passed to this function. "; + case FMOD_ERR_INVALID_POSITION: return "An invalid seek position was passed to this function. "; + case FMOD_ERR_INVALID_SPEAKER: return "An invalid speaker was passed to this function based on the current speaker mode. "; + case FMOD_ERR_INVALID_SYNCPOINT: return "The syncpoint did not come from this sound handle. "; + case FMOD_ERR_INVALID_VECTOR: return "The vectors passed in are not unit length, or perpendicular. "; + case FMOD_ERR_MAXAUDIBLE: return "Reached maximum audible playback count for this sound's soundgroup. "; + case FMOD_ERR_MEMORY: return "Not enough memory or resources. "; + case FMOD_ERR_MEMORY_CANTPOINT: return "Can't use FMOD_OPENMEMORY_POINT on non PCM source data, or non mp3/xma/adpcm data if FMOD_CREATECOMPRESSEDSAMPLE was used. "; + case FMOD_ERR_MEMORY_SRAM: return "Not enough memory or resources on console sound ram. "; + case FMOD_ERR_MUSIC_NOCALLBACK: return "The music callback is required, but it has not been set. "; + case FMOD_ERR_MUSIC_NOTFOUND: return "The requested music entity could not be found. "; + case FMOD_ERR_MUSIC_UNINITIALIZED: return "Music system is not initialized probably because no music data is loaded. "; + case FMOD_ERR_NEEDS2D: return "Tried to call a command on a 3d sound when the command was meant for 2d sound. "; + case FMOD_ERR_NEEDS3D: return "Tried to call a command on a 2d sound when the command was meant for 3d sound. "; + case FMOD_ERR_NEEDSHARDWARE: return "Tried to use a feature that requires hardware support. (ie trying to play a GCADPCM compressed sound in software on Wii). "; + case FMOD_ERR_NEEDSSOFTWARE: return "Tried to use a feature that requires the software engine. Software engine has either been turned off, or command was executed on a hardware channel which does not support this feature. "; + case FMOD_ERR_NET_CONNECT: return "Couldn't connect to the specified host. "; + case FMOD_ERR_NET_SOCKET_ERROR: return "A socket error occurred. This is a catch-all for socket-related errors not listed elsewhere. "; + case FMOD_ERR_NET_URL: return "The specified URL couldn't be resolved. "; + case FMOD_ERR_NET_WOULD_BLOCK: return "Operation on a non-blocking socket could not complete immediately. "; + case FMOD_ERR_NOTREADY: return "Operation could not be performed because specified sound/DSP connection is not ready. "; + case FMOD_ERR_OUTPUT_ALLOCATED: return "Error initializing output device, but more specifically, the output device is already in use and cannot be reused. "; + case FMOD_ERR_OUTPUT_CREATEBUFFER: return "Error creating hardware sound buffer. "; + case FMOD_ERR_OUTPUT_DRIVERCALL: return "A call to a standard soundcard driver failed, which could possibly mean a bug in the driver or resources were missing or exhausted. "; + case FMOD_ERR_OUTPUT_ENUMERATION: return "Error enumerating the available driver list. List may be inconsistent due to a recent device addition or removal. "; + case FMOD_ERR_OUTPUT_FORMAT: return "Soundcard does not support the minimum features needed for this soundsystem (16bit stereo output). "; + case FMOD_ERR_OUTPUT_INIT: return "Error initializing output device. "; + case FMOD_ERR_OUTPUT_NOHARDWARE: return "FMOD_HARDWARE was specified but the sound card does not have the resources necessary to play it. "; + case FMOD_ERR_OUTPUT_NOSOFTWARE: return "Attempted to create a software sound but no software channels were specified in System::init. "; + case FMOD_ERR_PAN: return "Panning only works with mono or stereo sound sources. "; + case FMOD_ERR_PLUGIN: return "An unspecified error has been returned from a 3rd party plugin. "; + case FMOD_ERR_PLUGIN_INSTANCES: return "The number of allowed instances of a plugin has been exceeded. "; + case FMOD_ERR_PLUGIN_MISSING: return "A requested output, dsp unit type or codec was not available. "; + case FMOD_ERR_PLUGIN_RESOURCE: return "A resource that the plugin requires cannot be found. (ie the DLS file for MIDI playback or other DLLs that it needs to load) "; + case FMOD_ERR_PRELOADED: return "The specified sound is still in use by the event system, call EventSystem::unloadFSB before trying to release it. "; + case FMOD_ERR_PROGRAMMERSOUND: return "The specified sound is still in use by the event system, wait for the event which is using it finish with it. "; + case FMOD_ERR_RECORD: return "An error occured trying to initialize the recording device. "; + case FMOD_ERR_REVERB_INSTANCE: return "Specified instance in FMOD_REVERB_PROPERTIES couldn't be set. Most likely because it is an invalid instance number or the reverb doesnt exist. "; + case FMOD_ERR_SUBSOUNDS: return "The error occured because the sound referenced contains subsounds when it shouldn't have, or it doesn't contain subsounds when it should have. The operation may also not be able to be performed on a parent sound, or a parent sound was played without setting up a sentence first. "; + case FMOD_ERR_SUBSOUND_ALLOCATED: return "This subsound is already being used by another sound, you cannot have more than one parent to a sound. Null out the other parent's entry first. "; + case FMOD_ERR_SUBSOUND_CANTMOVE: return "Shared subsounds cannot be replaced or moved from their parent stream, such as when the parent stream is an FSB file. "; + case FMOD_ERR_SUBSOUND_MODE: return "The subsound's mode bits do not match with the parent sound's mode bits. See documentation for function that it was called with. "; + case FMOD_ERR_TAGNOTFOUND: return "The specified tag could not be found or there are no tags. "; + case FMOD_ERR_TOOMANYCHANNELS: return "The sound created exceeds the allowable input channel count. This can be increased using the maxinputchannels parameter in System::setSoftwareFormat. "; + case FMOD_ERR_UNIMPLEMENTED: return "Something in FMOD hasn't been implemented when it should be! contact support! "; + case FMOD_ERR_UNINITIALIZED: return "This command failed because System::init or System::setDriver was not called. "; + case FMOD_ERR_UNSUPPORTED: return "A command issued was not supported by this object. Possibly a plugin without certain callbacks specified. "; + case FMOD_ERR_UPDATE: return "An error caused by System::update occured. "; + case FMOD_ERR_VERSION: return "The version number of this file format is not supported. "; + case FMOD_OK: return "No errors."; + default : return "Unknown error."; + }; +} + +#endif diff --git a/dependent/fmod/api/inc/fmod_memoryinfo.h b/dependent/fmod/api/inc/fmod_memoryinfo.h new file mode 100644 index 0000000..7b7eea9 --- /dev/null +++ b/dependent/fmod/api/inc/fmod_memoryinfo.h @@ -0,0 +1,201 @@ +/* ============================================================================================= */ +/* FMOD Ex - Memory info header file. Copyright (c), Firelight Technologies Pty, Ltd. 2008-2016. */ +/* */ +/* Use this header if you are interested in getting detailed information on FMOD's memory */ +/* usage. See the documentation for more details. */ +/* */ +/* ============================================================================================= */ + +#ifndef _FMOD_MEMORYINFO_H +#define _FMOD_MEMORYINFO_H + +/* +[STRUCTURE] +[ + [DESCRIPTION] + Structure to be filled with detailed memory usage information of an FMOD object + + [REMARKS] + Every public FMOD class has a getMemoryInfo function which can be used to get detailed information on what memory resources are associated with the object in question. + On return from getMemoryInfo, each member of this structure will hold the amount of memory used for its type in bytes. + + Members marked with [in] mean the user sets the value before passing it to the function. + Members marked with [out] mean FMOD sets the value to be used after the function exits. + + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + System::getMemoryInfo + EventSystem::getMemoryInfo + FMOD_MEMBITS + FMOD_EVENT_MEMBITS +] +*/ +typedef struct FMOD_MEMORY_USAGE_DETAILS +{ + unsigned int other; /* [out] Memory not accounted for by other types */ + unsigned int string; /* [out] String data */ + unsigned int system; /* [out] System object and various internals */ + unsigned int plugins; /* [out] Plugin objects and internals */ + unsigned int output; /* [out] Output module object and internals */ + unsigned int channel; /* [out] Channel related memory */ + unsigned int channelgroup; /* [out] ChannelGroup objects and internals */ + unsigned int codec; /* [out] Codecs allocated for streaming */ + unsigned int file; /* [out] File buffers and structures */ + unsigned int sound; /* [out] Sound objects and internals */ + unsigned int secondaryram; /* [out] Sound data stored in secondary RAM */ + unsigned int soundgroup; /* [out] SoundGroup objects and internals */ + unsigned int streambuffer; /* [out] Stream buffer memory */ + unsigned int dspconnection; /* [out] DSPConnection objects and internals */ + unsigned int dsp; /* [out] DSP implementation objects */ + unsigned int dspcodec; /* [out] Realtime file format decoding DSP objects */ + unsigned int profile; /* [out] Profiler memory footprint. */ + unsigned int recordbuffer; /* [out] Buffer used to store recorded data from microphone */ + unsigned int reverb; /* [out] Reverb implementation objects */ + unsigned int reverbchannelprops; /* [out] Reverb channel properties structs */ + unsigned int geometry; /* [out] Geometry objects and internals */ + unsigned int syncpoint; /* [out] Sync point memory. */ + unsigned int eventsystem; /* [out] EventSystem and various internals */ + unsigned int musicsystem; /* [out] MusicSystem and various internals */ + unsigned int fev; /* [out] Definition of objects contained in all loaded projects e.g. events, groups, categories */ + unsigned int memoryfsb; /* [out] Data loaded with preloadFSB */ + unsigned int eventproject; /* [out] EventProject objects and internals */ + unsigned int eventgroupi; /* [out] EventGroup objects and internals */ + unsigned int soundbankclass; /* [out] Objects used to manage wave banks */ + unsigned int soundbanklist; /* [out] Data used to manage lists of wave bank usage */ + unsigned int streaminstance; /* [out] Stream objects and internals */ + unsigned int sounddefclass; /* [out] Sound definition objects */ + unsigned int sounddefdefclass; /* [out] Sound definition static data objects */ + unsigned int sounddefpool; /* [out] Sound definition pool data */ + unsigned int reverbdef; /* [out] Reverb definition objects */ + unsigned int eventreverb; /* [out] Reverb objects */ + unsigned int userproperty; /* [out] User property objects */ + unsigned int eventinstance; /* [out] Event instance base objects */ + unsigned int eventinstance_complex; /* [out] Complex event instance objects */ + unsigned int eventinstance_simple; /* [out] Simple event instance objects */ + unsigned int eventinstance_layer; /* [out] Event layer instance objects */ + unsigned int eventinstance_sound; /* [out] Event sound instance objects */ + unsigned int eventenvelope; /* [out] Event envelope objects */ + unsigned int eventenvelopedef; /* [out] Event envelope definition objects */ + unsigned int eventparameter; /* [out] Event parameter objects */ + unsigned int eventcategory; /* [out] Event category objects */ + unsigned int eventenvelopepoint; /* [out] Event envelope point objects */ + unsigned int eventinstancepool; /* [out] Event instance pool memory */ +} FMOD_MEMORY_USAGE_DETAILS; + + +/* +[DEFINE] +[ + [NAME] + FMOD_MEMBITS + + [DESCRIPTION] + Bitfield used to request specific memory usage information from the getMemoryInfo function of every public FMOD Ex class. + Use with the "memorybits" parameter of getMemoryInfo to get information on FMOD Ex memory usage. + + [REMARKS] + Every public FMOD class has a getMemoryInfo function which can be used to get detailed information on what memory resources are associated with the object in question. + The FMOD_MEMBITS defines can be OR'd together to specify precisely what memory usage you'd like to get information on. See System::getMemoryInfo for an example. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + FMOD_EVENT_MEMBITS + System::getMemoryInfo +] +*/ +#define FMOD_MEMBITS_OTHER 0x00000001 /* Memory not accounted for by other types */ +#define FMOD_MEMBITS_STRING 0x00000002 /* String data */ + +#define FMOD_MEMBITS_SYSTEM 0x00000004 /* System object and various internals */ +#define FMOD_MEMBITS_PLUGINS 0x00000008 /* Plugin objects and internals */ +#define FMOD_MEMBITS_OUTPUT 0x00000010 /* Output module object and internals */ +#define FMOD_MEMBITS_CHANNEL 0x00000020 /* Channel related memory */ +#define FMOD_MEMBITS_CHANNELGROUP 0x00000040 /* ChannelGroup objects and internals */ +#define FMOD_MEMBITS_CODEC 0x00000080 /* Codecs allocated for streaming */ +#define FMOD_MEMBITS_FILE 0x00000100 /* Codecs allocated for streaming */ +#define FMOD_MEMBITS_SOUND 0x00000200 /* Sound objects and internals */ +#define FMOD_MEMBITS_SOUND_SECONDARYRAM 0x00000400 /* Sound data stored in secondary RAM */ +#define FMOD_MEMBITS_SOUNDGROUP 0x00000800 /* SoundGroup objects and internals */ +#define FMOD_MEMBITS_STREAMBUFFER 0x00001000 /* Stream buffer memory */ +#define FMOD_MEMBITS_DSPCONNECTION 0x00002000 /* DSPConnection objects and internals */ +#define FMOD_MEMBITS_DSP 0x00004000 /* DSP implementation objects */ +#define FMOD_MEMBITS_DSPCODEC 0x00008000 /* Realtime file format decoding DSP objects */ +#define FMOD_MEMBITS_PROFILE 0x00010000 /* Profiler memory footprint. */ +#define FMOD_MEMBITS_RECORDBUFFER 0x00020000 /* Buffer used to store recorded data from microphone */ +#define FMOD_MEMBITS_REVERB 0x00040000 /* Reverb implementation objects */ +#define FMOD_MEMBITS_REVERBCHANNELPROPS 0x00080000 /* Reverb channel properties structs */ +#define FMOD_MEMBITS_GEOMETRY 0x00100000 /* Geometry objects and internals */ +#define FMOD_MEMBITS_SYNCPOINT 0x00200000 /* Sync point memory. */ +#define FMOD_MEMBITS_ALL 0xffffffff /* All memory used by FMOD Ex */ +/* [DEFINE_END] */ + + +/* +[DEFINE] +[ + [NAME] + FMOD_EVENT_MEMBITS + + [DESCRIPTION] + Bitfield used to request specific memory usage information from the getMemoryInfo function of every public FMOD Event System class. + Use with the "event_memorybits" parameter of getMemoryInfo to get information on FMOD Event System memory usage. + + [REMARKS] + Every public FMOD Event System class has a getMemoryInfo function which can be used to get detailed information on what memory resources are associated with the object in question. + The FMOD_EVENT_MEMBITS defines can be OR'd together to specify precisely what memory usage you'd like to get information on. See EventSystem::getMemoryInfo for an example. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + FMOD_MEMBITS + System::getMemoryInfo +] +*/ +#define FMOD_EVENT_MEMBITS_EVENTSYSTEM 0x00000001 /* EventSystem and various internals */ +#define FMOD_EVENT_MEMBITS_MUSICSYSTEM 0x00000002 /* MusicSystem and various internals */ +#define FMOD_EVENT_MEMBITS_FEV 0x00000004 /* Definition of objects contained in all loaded projects e.g. events, groups, categories */ +#define FMOD_EVENT_MEMBITS_MEMORYFSB 0x00000008 /* Data loaded with preloadFSB */ +#define FMOD_EVENT_MEMBITS_EVENTPROJECT 0x00000010 /* EventProject objects and internals */ +#define FMOD_EVENT_MEMBITS_EVENTGROUPI 0x00000020 /* EventGroup objects and internals */ +#define FMOD_EVENT_MEMBITS_SOUNDBANKCLASS 0x00000040 /* Objects used to manage wave banks */ +#define FMOD_EVENT_MEMBITS_SOUNDBANKLIST 0x00000080 /* Data used to manage lists of wave bank usage */ +#define FMOD_EVENT_MEMBITS_STREAMINSTANCE 0x00000100 /* Stream objects and internals */ +#define FMOD_EVENT_MEMBITS_SOUNDDEFCLASS 0x00000200 /* Sound definition objects */ +#define FMOD_EVENT_MEMBITS_SOUNDDEFDEFCLASS 0x00000400 /* Sound definition static data objects */ +#define FMOD_EVENT_MEMBITS_SOUNDDEFPOOL 0x00000800 /* Sound definition pool data */ +#define FMOD_EVENT_MEMBITS_REVERBDEF 0x00001000 /* Reverb definition objects */ +#define FMOD_EVENT_MEMBITS_EVENTREVERB 0x00002000 /* Reverb objects */ +#define FMOD_EVENT_MEMBITS_USERPROPERTY 0x00004000 /* User property objects */ +#define FMOD_EVENT_MEMBITS_EVENTINSTANCE 0x00008000 /* Event instance base objects */ +#define FMOD_EVENT_MEMBITS_EVENTINSTANCE_COMPLEX 0x00010000 /* Complex event instance objects */ +#define FMOD_EVENT_MEMBITS_EVENTINSTANCE_SIMPLE 0x00020000 /* Simple event instance objects */ +#define FMOD_EVENT_MEMBITS_EVENTINSTANCE_LAYER 0x00040000 /* Event layer instance objects */ +#define FMOD_EVENT_MEMBITS_EVENTINSTANCE_SOUND 0x00080000 /* Event sound instance objects */ +#define FMOD_EVENT_MEMBITS_EVENTENVELOPE 0x00100000 /* Event envelope objects */ +#define FMOD_EVENT_MEMBITS_EVENTENVELOPEDEF 0x00200000 /* Event envelope definition objects */ +#define FMOD_EVENT_MEMBITS_EVENTPARAMETER 0x00400000 /* Event parameter objects */ +#define FMOD_EVENT_MEMBITS_EVENTCATEGORY 0x00800000 /* Event category objects */ +#define FMOD_EVENT_MEMBITS_EVENTENVELOPEPOINT 0x01000000 /* Event envelope point object+s */ +#define FMOD_EVENT_MEMBITS_EVENTINSTANCEPOOL 0x02000000 /* Event instance pool data */ +#define FMOD_EVENT_MEMBITS_ALL 0xffffffff /* All memory used by FMOD Event System */ + +/* All event instance memory */ +#define FMOD_EVENT_MEMBITS_EVENTINSTANCE_GROUP (FMOD_EVENT_MEMBITS_EVENTINSTANCE | \ + FMOD_EVENT_MEMBITS_EVENTINSTANCE_COMPLEX | \ + FMOD_EVENT_MEMBITS_EVENTINSTANCE_SIMPLE | \ + FMOD_EVENT_MEMBITS_EVENTINSTANCE_LAYER | \ + FMOD_EVENT_MEMBITS_EVENTINSTANCE_SOUND) + +/* All sound definition memory */ +#define FMOD_EVENT_MEMBITS_SOUNDDEF_GROUP (FMOD_EVENT_MEMBITS_SOUNDDEFCLASS | \ + FMOD_EVENT_MEMBITS_SOUNDDEFDEFCLASS | \ + FMOD_EVENT_MEMBITS_SOUNDDEFPOOL) +/* [DEFINE_END] */ + +#endif diff --git a/dependent/fmod/api/inc/fmod_output.h b/dependent/fmod/api/inc/fmod_output.h new file mode 100644 index 0000000..33919d7 --- /dev/null +++ b/dependent/fmod/api/inc/fmod_output.h @@ -0,0 +1,93 @@ +/* ==================================================================================================== */ +/* FMOD Ex - output development header file. Copyright (c), Firelight Technologies Pty, Ltd. 2004-2016. */ +/* */ +/* Use this header if you are wanting to develop your own output plugin to use with */ +/* FMOD's output system. With this header you can make your own output plugin that FMOD */ +/* can register and use. See the documentation and examples on how to make a working plugin. */ +/* */ +/* ==================================================================================================== */ + +#ifndef _FMOD_OUTPUT_H +#define _FMOD_OUTPUT_H + +#include "fmod.h" + +typedef struct FMOD_OUTPUT_STATE FMOD_OUTPUT_STATE; + +/* + Output callbacks +*/ +typedef FMOD_RESULT (F_CALLBACK *FMOD_OUTPUT_GETNUMDRIVERSCALLBACK)(FMOD_OUTPUT_STATE *output_state, int *numdrivers); +typedef FMOD_RESULT (F_CALLBACK *FMOD_OUTPUT_GETDRIVERNAMECALLBACK)(FMOD_OUTPUT_STATE *output_state, int id, char *name, int namelen); +typedef FMOD_RESULT (F_CALLBACK *FMOD_OUTPUT_GETDRIVERCAPSCALLBACK)(FMOD_OUTPUT_STATE *output_state, int id, FMOD_CAPS *caps); +typedef FMOD_RESULT (F_CALLBACK *FMOD_OUTPUT_INITCALLBACK) (FMOD_OUTPUT_STATE *output_state, int selecteddriver, FMOD_INITFLAGS flags, int *outputrate, int outputchannels, FMOD_SOUND_FORMAT *outputformat, int dspbufferlength, int dspnumbuffers, void *extradriverdata); +typedef FMOD_RESULT (F_CALLBACK *FMOD_OUTPUT_CLOSECALLBACK) (FMOD_OUTPUT_STATE *output_state); +typedef FMOD_RESULT (F_CALLBACK *FMOD_OUTPUT_UPDATECALLBACK) (FMOD_OUTPUT_STATE *output_state); +typedef FMOD_RESULT (F_CALLBACK *FMOD_OUTPUT_GETHANDLECALLBACK) (FMOD_OUTPUT_STATE *output_state, void **handle); +typedef FMOD_RESULT (F_CALLBACK *FMOD_OUTPUT_GETPOSITIONCALLBACK) (FMOD_OUTPUT_STATE *output_state, unsigned int *pcm); +typedef FMOD_RESULT (F_CALLBACK *FMOD_OUTPUT_LOCKCALLBACK) (FMOD_OUTPUT_STATE *output_state, unsigned int offset, unsigned int length, void **ptr1, void **ptr2, unsigned int *len1, unsigned int *len2); +typedef FMOD_RESULT (F_CALLBACK *FMOD_OUTPUT_UNLOCKCALLBACK) (FMOD_OUTPUT_STATE *output_state, void *ptr1, void *ptr2, unsigned int len1, unsigned int len2); +typedef FMOD_RESULT (F_CALLBACK *FMOD_OUTPUT_READFROMMIXER) (FMOD_OUTPUT_STATE *output_state, void *buffer, unsigned int length); + + +/* +[STRUCTURE] +[ + [DESCRIPTION] + When creating an output, declare one of these and provide the relevant callbacks and name for FMOD to use when it opens and reads a file of this type. + + [REMARKS] + Members marked with [in] mean the variable can be written to. The user can set the value. + Members marked with [out] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + FMOD_OUTPUT_STATE +] +*/ +typedef struct FMOD_OUTPUT_DESCRIPTION +{ + const char *name; /* [in] Name of the output. */ + unsigned int version; /* [in] Plugin writer's version number. */ + int polling; /* [in] If TRUE (non zero), this tells FMOD to start a thread and call getposition / lock / unlock for feeding data. If 0, the output is probably callback based, so all the plugin needs to do is call readfrommixer to the appropriate pointer. */ + FMOD_OUTPUT_GETNUMDRIVERSCALLBACK getnumdrivers; /* [in] For sound device enumeration. This callback is to give System::getNumDrivers somthing to return. */ + FMOD_OUTPUT_GETDRIVERNAMECALLBACK getdrivername; /* [in] For sound device enumeration. This callback is to give System::getDriverName somthing to return. */ + FMOD_OUTPUT_GETDRIVERCAPSCALLBACK getdrivercaps; /* [in] For sound device enumeration. This callback is to give System::getDriverCaps somthing to return. */ + FMOD_OUTPUT_INITCALLBACK init; /* [in] Initialization function for the output device. This is called from System::init. */ + FMOD_OUTPUT_CLOSECALLBACK close; /* [in] Cleanup / close down function for the output device. This is called from System::close. */ + FMOD_OUTPUT_UPDATECALLBACK update; /* [in] Update function that is called once a frame by the user. This is called from System::update. */ + FMOD_OUTPUT_GETHANDLECALLBACK gethandle; /* [in] This is called from System::getOutputHandle. This is just to return a pointer to the internal system device object that the system may be using.*/ + FMOD_OUTPUT_GETPOSITIONCALLBACK getposition; /* [in] This is called from the FMOD software mixer thread if 'polling' = true. This returns a position value in samples so that FMOD knows where and when to fill its buffer. */ + FMOD_OUTPUT_LOCKCALLBACK lock; /* [in] This is called from the FMOD software mixer thread if 'polling' = true. This function provides a pointer to data that FMOD can write to when software mixing. */ + FMOD_OUTPUT_UNLOCKCALLBACK unlock; /* [in] This is called from the FMOD software mixer thread if 'polling' = true. This optional function accepts the data that has been mixed and copies it or does whatever it needs to before sending it to the hardware. */ +} FMOD_OUTPUT_DESCRIPTION; + + +/* +[STRUCTURE] +[ + [DESCRIPTION] + Output plugin structure that is passed into each callback. + + [REMARKS] + Members marked with [in] mean the variable can be written to. The user can set the value. + Members marked with [out] mean the variable is modified by FMOD and is for reading purposes only. Do not change this value. + + [PLATFORMS] + Win32, Win64, Linux, Linux64, Macintosh, Xbox360, PlayStation Portable, PlayStation 3, Wii, iPhone, 3GS, NGP, Android + + [SEE_ALSO] + FMOD_OUTPUT_DESCRIPTION +] +*/ +struct FMOD_OUTPUT_STATE +{ + void *plugindata; /* [in] Plugin writer created data the output author wants to attach to this object. */ + FMOD_OUTPUT_READFROMMIXER readfrommixer; /* [out] Function to update mixer and write the result to the provided pointer. Used from callback based output only. Polling based output uses lock/unlock/getposition. */ +}; + +#endif + + diff --git a/dependent/fmod/api/lib/android/Android.mk b/dependent/fmod/api/lib/android/Android.mk new file mode 100644 index 0000000..b15be0c --- /dev/null +++ b/dependent/fmod/api/lib/android/Android.mk @@ -0,0 +1,16 @@ +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_MODULE := fmod +LOCAL_MODULE_FILENAME := libfmod +LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libfmod.so +LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../inc +include $(PREBUILT_SHARED_LIBRARY) + +include $(CLEAR_VARS) +LOCAL_MODULE := fmodL +LOCAL_MODULE_FILENAME := libfmodL +LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libfmodL.so +LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/../../inc +include $(PREBUILT_SHARED_LIBRARY) \ No newline at end of file diff --git a/dependent/fmod/api/lib/android/arm64-v8a/libfmod.so b/dependent/fmod/api/lib/android/arm64-v8a/libfmod.so new file mode 100644 index 0000000000000000000000000000000000000000..bcfdf31ebde1626d1ee0a8af56a88de35d94c413 GIT binary patch literal 1190720 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


aPU&MOb!#_?0GXW;KGAG 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�Qe=~LGZ7Ghrri>hrz!A9tFPwycawM9s|D; zJPy7NJPCdkcnW+ycpCg_@C^6{@Emv?JP)1#FMxjwya>J#ybS&w@Cx`Q@GAIs!E509 zuPz>Z(a`|^9*l2--vHhMPk|ee_VwQfZU?^++yVXra3^>g+y#C!cn|n3;2!XwfP2Aj z1^0p91|9&?_uvljr@@`ze*|}dKLg$a{w%l${7>Ls@aMsO;5)$s;C}`Wg8vVA2>b=`F!*1< zqu?)s_kzC!9s~aycpSV2o&>Lhr@&tUPlN9Q&w&3OJO}fv5f*%K713w_+0P+ z_^IGQa36RGd>(ih+z%cFUjW_ro`Ww@oZvUXco%pYya)Wp;2!Xs z!M))B4ekT~33vefR`4MBZQvpB+rh)&cYsI1H-qZ1%Cj%2L3DX26zFy3BDb?1-=8^ zh_UIzDpKLH*9e-b99JP%$2FMz)cUIed$ zm%(>|SHK(KRq)rqYv6B!H^7_VP4KtDTj1}28~XPp+QfE)+ri%lcYuEY?gVdvyTCsL z?*ZQf?g8Hm?gjq{+y}l7JOFMCv%ZTqj3BrT+#1om>Ni^)cB3-p7~g=y-PPx^P2M@# zHRO5gpTXOv%58pi+h9+VjzCYBPC(C+&O*JJ_H%VuqZ+rx(pl&SrAyEcOV^=G(zfC4`5%{dLq93)hkjZ*0{yIX0(z%(7WxJ0 z67);bb?CaZ?SS_DuS&b2Uzhenza<@ken&b1{l0V-`a|gw^heTlXxluQ-`<{oxU?I3 zgtQ-ev~&b|taJi;ymS_Nf^-Rbl5`!~Ep6*=&wq@x8+xj=A9|W}1bVu30(zEo7J9aH z33{${9ojE#8_}MBp|l%%k+dIriF5>dsdNJRTAwo&c*uakB|Z<6*y-yj`eUo$+`ex}8 z^sUl$=&ZEu!1nxiNxPx9O8cSjk&Zy$C!K(PKspQkpmYiPVd*+_N!m8LJ^$m^y|`o=(nUJ(C9yLVqY- zg8oRl4sG+x{Eqhg!=>HOBc%P%qopIzW2F<&B_ z`=O^vN1&%mC!l9ZXQ5|Hm!RiL*P;E=wz2K`7fQRK7fJh}mqSS*v>*CX=?L^1=>+sz=`8d*=@Rq?={j^m+BU8||8>%C=uOgo z=o_RX&^Jmapl_1SLf@9nzlvE@?OPR%t)*Cu=?L_*(h2CD(pl&iq)X5*N!Ow4(zZj}^S>(XhJIbz z5B-*O1o|E61oZpTS?CX?OVA%l*P(6mWqxOS{^8PY=n>L>=+V*<=&{lX=<(87=n2v# z=tvNp%+Q} zp_fQUpqEM~pwE@gLNAvtL7yjGhmJ_w4sXwYk+d6nrL-UVQt1fv8tDY|TInqGI_VPh z2I)F(aK#?fGAoc0<1|?T3C#Is*NUbOQQ)=`8ez(k1ARr0dYO1v0;@J^yfNH}nW; zKlEtn2=rL#1oU|6Ec68F67(eLI<#Bbc4T}0W2D{CQ>FdT)1)KN)1?#8v!t`ov!zSW zbEWIhercP#J^w;!H}oQDKlBpm2=r3v1oXMmS?J}`rH?x`<~->-bVS;Alr?{9%tg{} z=#|ob=u4#|&}*a<&}*f$(Ceg2&>N)d&C>(b5s(G8_+tl{_3#HxAi=_R~OQa*vOQjRg=SpXx zmrIwR&y%i0N2G1Xw&%Y{+6}!@+7ErHbOd^hbOL&%C z=uOgo=o_RX&^Jmapl_1SLf@9p9e+E@?OPR%t)*Cu=?L_*(h2CD(pl&iq)X5*N!Ow4(zX-Y^S>(X zhJIbz5B-*O1o|E61oZpTS?CX?OVA%l*P(3-Wqwb4{^8PY=n>L>=+V*<=&{lX=<(87 z=n2v#=tlFmZUmM%fhm99hkrESyO^DmTk zLobr{LobnzKrfX}K%Xm}g(aK9+Vj6E?S_6`+7JDfbOibx=>+uq(pl&arAyEsN!Oumr_21__WZ-8 z-OwYX{m`SOBhX`|6VT(Ov(OWyOVE>~>(Fj#+sWN)d&)5yP;P~`=KwDjzF)GPC&1f&O)z~E&`X=ct^v%*G=v$@h&{=8Qu=f0SNxPx9O8cSjk&Zy$ zC!K(PKspQkpmYiPVd*+_N!m8NJ^$m^y|`o=(nUJ(C9yLVqY-g8oRl4sDb718w&9{KKW)&?BV%(4(az z&|{?&(Bq}E&=aIf(37O=&~9m4cYFS0q}|X{rTx&;q$AMNr4!Jzq_fborAyFrrR&gs zY1@eQ{0pVs(2Jz~&`YEv&`YHg(C12Lp_faSpwE-8Lr0`-Bir*|B<+S?DeZ^8R5}8^ zMmhn#Ryqs4PPzoWLAnl|khYC#&wrh?8+wzpANmIA2=tB83Fw=ov(Pt7m!NNzu0v;~ zZ3njJzf0N;y;a%|eUEem`abCd^aIja=m(`s&<{)3p-a-X(e3#kmv%!xDeZ@TS~>## ztaJi;r*szj1?dv>OVV}dy0q<}_WZ9(yP;o~_CvoV9f5vFIsyH@bQbzU=@Rru(sgK? zydP+DwC5i#?S>v9?S~#M9f2Mzoq!%MorRttU4ot@U59o{+s3r#KStUOJyqHdJxw|S zJzY8hJxe+ZJzKg2Jy*I8?U%NVZO^|@+6}!(+7G=%Is&~^IstvIbQXHKbP4)A={j^o z+IDbz{)?pD&?}|=(3eU_pw~zzpw~)gq1Q>5pf^a@p%c=!aqao9lXgRIlJ-O2ARU3e zQ91#AlXMpPX6X|2tyA`=RfVjzHfhoq&EoIt%@vbP4)l={j^t z+BUvD|Krkb=qIK9&`(Q8pr4gaK<|{!Lcbtgf__Q54qcbF9onA%RcSZ$>(YMcx1=M` z??@-0-HOBc%P%qopIzW2F<&W(XhJIbz5B-*O1o|E61oZpTS?CX?OVA%l*P(6lexS|Oo`1Ns8+wGaA9}QO z1bVD=0(!i37J7no33`%r9oj8zJF-3hG16}6snUMvY0?qs>Cy@4S<+eP+0rHGxzcrL zzqHNWo`0dV8+wtnA9{&&1bV4-0{UF(Ec9~elIrFGMibxvAMA+SZaZpl{=vRT+6}!@ z+7ErHbOd^hbOL&|8>%C=uOgo=o_RX&^Jmapl_1SLf@eX2eGUD9sot?;hZ9T{q7d7m&6e z`RTrk581f1yW80Q+GJyT_h*cg&k&!|)zde*%NUs4E&m*5Y*%BC?QSfM^Nn%EA?NSheb&QUz9E0cW%mJxPydF^+h^@(*f#FF zFI{Ep@AnVuyUjN0?Q8e#TPDYrGWXdi9?+-ud-B$ivfokp`I-GlV~e>T_6v-@i{d*#p5WQ_RIy+e$?558^d?~!dyk$>zjPwAU-`>}nK4db$& zG0B_dIGa7UcMa^l>XHBTb+4(ftH{??>=$(PO?lb&@z=d(e%&KOKmI!N9GJ)RuB`Vr z{0j#fL%OEEHpJNa#*oQdSK537=J{BB?XbRUjxgSS$}pCF@5)uJRl|(F@9o>SEj%Q? zRQ?FjxRFN~W99Eqol!g3m~I}6d0xz8Iqg%%cKO}C+vN8i&zRgb^fL4Ik#fBCkM`aF zTlr_R{NsDZH}J}kNz-2*(!I4l#6ESldG7b_n;Dh4ja|mq?Q(nf1qb#`zQ1emTs8LX zJJj6H6MOdEpWCx_dD5_5%<7?)ZCs z18e2@%WmJvJ+cP1qs;4g{MLO37y~C5Mt@k=OnxWI^x^U~FU!Aca+}%b+-daJ#MVDFNBkz=;co4;Mo!}b$py{y~bllA)e_S5EXkIL=xt4qh3UK?`A)V)_N zkn3{39It;%>->3J1`arF@VuJ$2WvfQBPYo@SNGd@W!|KmH~D*c?>Fzy_x{T0_Zh}a z`MuO~y|u6L_YOKj*0gJjxt@EklC}Jn(YI`X-XaPPTWX zky$g}5nsAX_RElCnRt z%w)NKFEQ_*72n|Y&24{cY<#Ktxbk<|UU6uA>1cCp<=Pr0|CZlfJz!e5{CCnfcs^#D z`!eEx5=;N}kv-@cL*>wB2-|HOD+drF*XMpzSWLl4J@9o^)5ptezeg95h{}AoZ zy|lf*)BgProuALq@!w0gKM(sKm+Rwvxj)zC{`@=GFZ1#F-62Cier`16{=4~LBQ$64#~V>-?wVSm*9!q#!W$jbd< z+rTHkUz`H_XC4pUAI*LZ*3InG=(_Bq{X2smKe}l>UZ(9GN&Q1wmuvZa(Dr7+x|#d; z8M-9v_a{JKN_&c$u7oM`mzlGj<6yu0s5@h)TL<+4_d6MZL} zub0f%G>xNtC!4P=&Bs{t^{)9CYral0&3f*a?e|&F)4!s1{|+6;*XX>TK-bMGI?iM1 zxc1RHeUq+3yuX|0{dD^JQ=6TSkKdu&@%hL6`eSMT|4m~GG$$YazenUh~HT}ju;SNF3I|M&#Qot4)QpJX3Gbgo{cevZyf zllJjAI+u1D-wTgH`&+NGhpxLSjeil=&pgJ})G<0AoB!2$->=d3?R4J`)A?%B z?Y(dfn)B!A_FZ(nq~QKxjt|lC-c9GIpT^Ii?cGB2Jw;zXgN`pv`}-ViKTq59(d{!} zedDtK)?v-R~}<`&E{1-$2*&tFXQO?eAm%!Tt`X>trdchq;c+sh@=F$h>_k^>R3V z^L$&+6&L=m{cb;3nAe&4Tyf}su-|2xw@K@^nXbdduwUkW2kEh+2K#5;{w7^NPP%_B zqxsjZjJVnRrqVr^@@i{tv2hHcBug}r?jiTcT(Dsj} z?QP@j!SR^ah4p;#0BmP}*YkVLPk#Sf1oN2dd>8Ha1ZZEx&lOcVUvsEe(E7RPewm}&*VFbxv_Jhco*y4~)AbvpPEzyhpKWyid6V|n zp!EyTc;25FT`!|(yob(D1@3P}xSp)@xs0~wps(LWw?F!3=lKf4@tfC)b-lg>$F;xf z^$-92WY;Th_ii|U``hjZ|H0#?s&MDwns>(~$D)jIs|pKZPU3D?&=j)&>IK0x==d+0b4uzz?QW!g@Z_In51zQ6N# zm3;s9Nnc0phU?orju`A`QQEp5t#y7A&R_dyJU00mkNLg6dT+`68PCh|GoHHqjHf1R z`2WYxc%Fvq*4)prblpvb{W5P)(Cw3`pM~>pj=vPnhuLfC_6Om*8=Rlc%hNRfvv0KT z=W*GdwT}FHAxXy-rTr|@e#B^e5gvcdd93qPhx4eelmGpm#+FZbo#6f_;kfsA{eAsE zc>Jiq{+sK%0`}W%e!QGW_bcvgbROcgp6hA-`1|vXaNf-MU!?QS=gUXq@%awdZ3FDb z{?_e~|6tv2g7aYR=TbN>bNhpzF_8Cc!}1=g`I&;SjPd6O-vgg%{v7oh{T{LP*?}(k z`Rcy;UC)^BwVUt1oA0-q@A>XK$QTIApARwLdq4haTYpskY{|v)`3v*26q%vMvJrRs zw!9`|y5)WEGvsq0=D(*7lh0hpXD`gJ+kKF4;M4MT%MO?Ks{KRzesHOLzF_a)k`3`w zhsn&g!O2~R`38oJnK#A$ve9>HmvPzO zha_*7zYk{mKfWT5E%ILSk~@rkd0%_#wu6kBUzKAp=Nu{XJuLripEtD6E_1ynbIJSB zmpwAfST-&hUn+mi$v9tEe5tYC)}M=X^_lxKrEA=Xi}&rDVUCZE^qiEDKlAdwe4YFq zHq-5fZ{P{}Gd}i9jP0&2W7!P(nYTUc8z{>;F}K}q-hRAn`;cMhnA_bg z=f~XMNAj74(`8?CvTo*nO+Li9Y@Xd%W**P&CEs@W%)r)F=j-D?z?fMdGFd*;aLCq| zqOlr%Jv4=RnF7@+q$;0M!$KE%;Pi9O_z+nRvy>o`10oG9ON?t zDSzDF_sU`MrRHZE%+Cq@>k`}G*O=qY&j5{+&rq1#=$4);=W?ZdCS%Ik<~Ao!?f$AU z;E;VWZ@1RZTwiky&Gj?aQ9f(ZpOZB-*P{Cr-}Wi8hTW$a+Y7QT<~FQt&-hf=_U~&d_?!n$P!Mq;2_uiJQ$(;5TYW=%?L;I%4+IHNw z?Ek*a++Xv24IZzYCwX3*HMkG=`nH?ba+jRjZaKawvL0K^bE~hvDe~_gnb+E1b1g=g zYcWr*EAzQh_SL+WtM?fFE}NV$*}s>EjGJoTD09ge^O`Vk|G>OmuARZ{$nj2=oG;{KcBZ7c{vwb@Ar@CGe1|8S$TQOe5^T8 z&e3mH&S>?!jlSEm#@qAcvmn;j9wlFAy^mw=yY)E^^K&lN&vngxd|vi(x6Iuyb6>pX zTKPPUTuTRbfA`cMtH-3c%wt~bZ^>uE%-hUs(7G(81jl55gDE^{91Ghh3DJM@`7 zXN?(reA|1~*ew^x8icdMEFN1 z)-UUvlJ`}o`!fgjy)3>FXgtlXro zA-f#Q2sxI$S1sML=d820$bJo;E4#;cazH+hbhfOg`5u?`xO}d;*7DeF-Y0j;dYhk( zG9RbQPtW-7A$$K;Ha{a|K2E>aW!x{Hk;N)w`k2$}rYrolc zmpc9l`uMGD*SsdI=d+re`{;Dv$vN591tWah2YxP(S8`m@>Bh-;9h>*phK%i&HI@71 zj4r!x`(%$H?=RZ7?*6%2-~Vg->tvm-ad&RZ8fV>yWvbjHpc;qqXE9y17{R(;BJJ{$mA9q~xy!x6v z9yJb-&ti3TZ`~^Q`}<`-w@&g6Y?6O3lE*spaYr6!x1KMr2@>*|Mf0&)uBrP6A1{Z= zXTiEgyipf#94w#9ljm4-Kg}`rD-RnRooj4=Ubd5aT;Bhc^D}r1+U5CUMpTZ$a7>#t z^6L1~uD5*;*{=3I)ICO?yFTN8$nYLH$!By;b`Q*ZsB5P0p|IUG>Ei4eQw+O%l1u)3 zgyEgEX~T%a7ajQf36tgVIdI6P<=tJ~BQIW}K6lrUeOM)HFP}@?cCoC>6J7R`{>yO8 zdR^9i@#jt}td{%j#Y<$pPV;R)wadQhj^W0#i)G)<$C9XQqeu30njHJerCoiiWIw~Q zPh+IJ&FyqKX02N4+kTC_W_jb#+a|19YHa^*m;FrnmG0wKohRqS<(jnW`R^|OZr8|> zt7Kc37_F0jHq1Et%r0Z_wm-;vt(tY_l+`l-&t=SQT?ei**UNOxt_ae0k01-}2r_ zdH$8h5A!j{bo1ZlKYxL1EQnRgpmk%&fBjOvMwLfxv z-==9>-sv{tV@G_k@s53-(KmUId?t6jZA~Lo2mM)($xXucyxLFM{&w8HHO~6CIbL2H4IWqb2=lRi@>Kc$VP!);Gr-4p zt?ZL|yR1{kH71|S9-HejX4t)Q-?{9Fv39SqU5@djM-2N(FUx(_-Zg2u`B@Qrm-?)T zy=(GxH70e^ysq@D#*hQ2zjoDu)6LiZjUl7uzei0UA=^4b&UsIleX2ROt1ENTkzF|% zpFin>uEI&zc2!OqT&wTRFPM*IuMHU`-wT-k9y$0K;@5_Z7@YI9A>D(YPkC*~@ag9G z5i)+{t(mclx<-zW?N9BN`}EW+yT(rGvQ0nLu&tRgX48bJR~ph?(#B;|?%g!O9P^0b zJn7{w*Q_a594@y_oNn4knQz1>dHpQwXZjn5ci;Es;oZ}xbR98x`@Y5(`Viv!}5C`qBdjT%n!Qy z=cjI&Gb4}f)@wfNvpbg$m;32Dx$g~gj+JAb5s^8swVBt)xUGMcn9p^_zxT=aO5^1Fr-QeSHvS*#-aS65^4|Af zYm&g4NkA^)BErlhc$pc*T_Pl;TQ-xRHbCpH80}@(l0Yw$M7s-KvAYt$-QNJ#A8Aoq zJ*Nb0J(*bd?rCE;vk$2eySt;-?$T;odv{yDC1 zJjeBoHhkIIMST4(XUSE$_(g6^y#p^m2gz=3X1yLMiH}(yN$A6;&qLBy;> z=bxA}>!o>&zxOcrT3MglfQ_Eyl!vn&8!viJX<_%G=@dtXU6hB>Ah+ z+?&BO(>wijIQ4Vv9gL-wv1rXD->*N$I2gn2Z&_{m*Kg!{BW(qXniA0<7k`8&!l75e zrPz>_tH{~A@tG`Xqz}`!*y_@Cy+`<#-~JNX_MBksk_~A8VfM1xji3K|&HwnhVe<*i z|84rHtub<}@FyRx^}7ES_nChKxGI~gvj|@KPs!|md(hh5^Cmd$;(gmM8tmOk{YQQm zyacNT*3rnL$W(%7@{hyPRdzKtC%YZ+$+DB(QDli#@CC`Yf>D`+?9H6s3q}J&_HOG9 z7e?4COxt|e`0x@;e@ol;*J#`9!qeOXR+j>+RE2HcA(}0?>HiUI8ToywkLT#4_1N%| z-Vl02z^anmyKaAR+mSDXjqS#1bLZAD01aR*_fEDplpr%T-d~NC>=z5m>BOp?dTSw zBk2d=0|i!>_{~Z7DLPPF=g+Oft<(T|d4<&`-CF$$#+uJ?ft7vYsksOGwpou2Utr}< zVlO)O-|Wor^=UegqZPq63$5$SJ207M}_JSLS#8(=i@prrfUBF)F^Oh96K)l5& z3v>(5H#Z|sjia9*KMmc%mUk}tc^&tXMf3-axLv%^dscZ%z|HKJReHWqw!oR4>EA)? zc&FA&w01o13P*?FQSI2GQqcNT!F%tiR&*rgFFnDYx)i-+bWhDl)WP>3_x6<0HNefY zUswt6sUyef0~zql=o*qO+R4GofqUYMX>3LVUx=7Bck1k1YF#qR7!#tcPDdb{x&axm zj&JlIr;BgtQwR8dKeEIJ16k)gfo%FmT>GJw-TPf@lk@r7Z2J3rOHTKAz24*Vgx~ht zyY<`U{gK44`7hYK*Z%((#_1rF*~e>*E*gEkrrU~^h2bal!MRFVcHMY zqGWd&dqVn)FB=%%`&P1AvYAsDtJ3;uFN?_q27LAp@jh#^A{I0HnC;8VN(>3U3 z{4oWAYK({x^<`%UZ`u2uR{lH^6Y|#ir#E|XSiN+rN$YB2561k zxqIvFuNU|I_1fso%m04`xUJ`xLc>SoA$V6DnaIhLg_`!4#05*)F5mM#d3f*UF3h8H7`-|DTC#|I65{_NGUxby+~$j7az8Y}R}CO9IK{Dt1bHGe)1ZL}7?ye#|Z zCs`9`t}6q`{t-%U%`R_BEakWK-)nOsnc;n9HPxxYXqDuQ`vcY*(U^RE-50Q?Y5c_=%!G6PwF$cB;h}%c z_U4@5?hNv~kJo;?Q@ZBiwSVm`u5ICc<6#sNjM$fwf1Ebk_)Pi(ODmmH&)1R!ZyA^K z;R18d(Y;T3*Sz*An`^1D*Lp3k&8AQ3uwJ_kYpHZYXok_RjjlR{_sdQfuHx&f;G2@YgU>DA8Lug7OMsh8u&Fu7Tn}KoZH131M$eVr0@B5JL|46%<309YM-B_V$z$M|8D`j_!Y_v+s!s&_R zMNDbU)=erla*xCRntw`mUx`idgY1W^HenmYPPpQQWcTV|@y;4-gSAU941Z=>P4|AM zFmlg{n(nL4ukCKU$Bt}+Uf<(f94-bg?r|;(Z*%5{*I_d(<3nC`SId{#4}7nq&l;!9 z*b+0?1y=E%RqTUKJ6aXOX1&91-?-ckH4k9l6K^W}^c>RbT^UUF5W)9I!5m|Ako=-H zvK`6aCpgGPwA`Mu@hHzfv{5wp$&Ms4ns0m2_uztqHxJCWZyv9&2|hvQYjB4#6#$1q z!GJjyeJk1R!>z1(e)yikf{1jdQucYRb76QN|1~d%4>s|xIP=Bs(-q};$BBilCzIXw z;beCcJSJKl4M$t8$N+fR#G2X{)pif^?)a-U)d_5@PZv6sW`BaC!FWye0I;#X&hz`Q ziNh0rjGP_#ugUHKp0T3k;n%@uYbmhi6P#TZHZ~jHxe&MobII;lSv33{&j?A1t3t1a0(gbgjjv&5qA4sHmBan_;<7zDwO?cj&8b9wk-gCFvdoeM8q`)p~aHLv3u-yS|5x?;!)eN zpNlPBWW^cbtdWg)cOme%J_SyKn+0D?cHaXG*HO5|>?!CQevA4*iaE^PcTE)BkdB$0 zyZ;)|-xN9RqRkz^RP;mprEH#O|Amfozsu^e+kXGDUFyqOKHn1z?%;pfj_SL{T_+`(SVBv!|<;T3DXvXzS0$``PXvGx^Q zQ1Lo+>utuOcVU;vrmbC-9q?GkKChzVFRW}ke6OAR?wX56MiRzPnkNJJ_wxDu6|dX) z{oQ%CBWH*{wo4AAhJ*O5o{`+~7T0|}ay-9ZXGN=IlQ*&%G*)z9YwBF(>cf5LKgZEu zQo0AdH}`7Xd;VDH+sNpmTcTISj?4PQ49#~szw|n~H~nZ03{Dss->s1$zN__f^43dw zuf@71nMdDwk%|+7pUJr%%@zA9&+PZc9s=&tX&t_W`7;bW&FJ2+(#ZY^Xd?M z(4!1|{`m24=vLb8yxMc5kU}4rBTzAfQaWfrARwJXV+0Jt*5BFrB*ZYMp zO~5;TcDPGCFT;FXeX6u`+ROHC!G*YxYWxt$kLZ)w1ybx&;g265;0z_J`=J32a!8PI zOHOl|nhrQYYpQTuenaPvff4w3Or-9MXHRzuCl0Bugg3z%e@4Y2rHl zb?KFT{$p3=M8_M}6}1`t5F0#rp8FPa&{!L&2Q1(4KIotSoR9BO@*OjbN%$7uvZO8b z&csYJ^_6A2kI9yQC^*#I8Oo@?&F>V$Ge&VfpN5+Evv#)u$0NiziIzqlv33j2lJ9iQ z*)-ee5M^BN_#86d1ng1k?6%G2f$Ghx=>I`0YwW}LN_~5|YcHNLVlQsG*j*?0I(`q& zuAcd1GItDqGr$@qsH?LYJ97*DtUg%_j8hL?hNsAO;FPd#o*s-oU}WnW;@1vR zw?^v_th#5-E%Yxu4W*ifiYxCido9J97hAzWX7UxgnlbhbGCC~((&o8Xn2f4nF%tqDFUm}qZEzS6vXxa@mm zWgMP20++ZIEcRjZkL*S9uD6S=oG-TsKEg9(6tnLgc)t3wM0c61i4`j#)()E+^dmO_ z|GM*(VoauY-bWr6I7=-ZtL@L+Yc5ZM&uE@+%fJ1U%g?L^;0kO5WyxF;8EW_``|#<{ z2B^DJfNiP}T2REknBdA%{(I+JZD+UHW8(Z2NAXeKbt`*hF}S4|$FCh?O^7LLlD|@M zdx||oUP!YqTpXV{g5xhxKW8p*+rz#7ch;tzO*5wTzY|PnfU{({bYN+fVAAT-LE^wjw2d2>es*y;ON^wL^@V=@Va}->0cH#5{g~(!}Mk{#P^CtC;hZ z%zZ`X^k-{{L$VFe*L!{X>s&PYz8UC?x_4wfyjb|@$rBpO67F4kfj(S6C;^p9#7N~V~MRdHvfe=`0qm<#s0kKj?7!{bnKbMDbXX|4c%{9 z!J6oQYCrw+E^~iBH3;Z4^~iN`;$2$cAN3m7TH-9$^V?yZDb`goU>yFogM0XoR}=W(`$3*Xj3+VzqmQc1`80&-VnZypO?pjeg*nb%r)c9fW2 zt&>wYyHYes>%6%<7;lFLYpsv4o{Ck~p7e2T2G6S9x!Pzy46y$dcbWcDGFL}GGlNZU31Z7SPl7L^k*$Vj zO-~s7^yoD5$dWYIRijP&vz0NM`=6HXwzR5o;v>Ww(nlF|x$c`TJr`fSO1~Lj z(%bh=+=Y3HYr=ii%Zr>1WHzrOUIzHPHN>WO)-!+gr#`NrkJPbbb;Pzd_M?NQ15Sc> zSNiW;?7dGsA@2Ql-ha;;>4HJa*_lA^5)WBxJA;kjj$*xtL&!CCuFB|{mHK^y8}FUk zAIfZo2Sw<|=PCFWMq)e1$FFIv(u~um=dxpRN* z*Zj7sS*KXc@v-xw0jCNI5+@4+;HI5WY-XLkv`X^S^{neiTsQmyy{i5c`0^|G!T-g2 z4l$0u)i<*JHtjEOO`jm%U2;K+ai5RAsk!E$pX2X$Oy+*!uF97}@E&CCE@J7vUeHn1 zaR^zf7W#)SyHs?mptPl*J>Owy?`&vqX-gCT{r(>2eZs^01G88A`+MKr4L^5kTzvG~ z?W5fgm}$iy3I&myS%>oJebP{sW@lj*SUFYe_y8UmGmK5Qam&k zTw0~M?2}GW!5j`Thh;S;E>E!Y+jXEfY8)?4V9z0^rYF3wvIDuR-)XJKgX7Kg zKSqwVr&UM~_-k*B{#^6vT|2Oo?I&<0F?kH2f~!^8(|(6~3i0zq;BTYt^ZVMphbGJ8BB~ zyh?M>`%aP9@b^4x?RM$!4?iC$)qa-_W#Xs3x+3Inbjg0<@Lf(k=TSRaB|acKl>E5T zy>9!UYnzbl;=B($MK703of>D4P_9Reeq_gTZ7|rtk(r{*vq!dfY#47dCMRmQ{eka% z9wXjz9Qq;J2yN?}3QdG3ENO>^GzChHEG@VScG5imywt@LBw%NU#wx$Rm#-YNPdI+@Qy$I#O2$I{aL zdx4K>jYes*6RoXwb#@CL<;4dgk7)f81LNfZt8?+0hM)f<^gk7VN3(WHk6O388IUjecpTuUk03srjH_zmJ*(;8kMY4*V=ntv#r* z@{Eze|M2JEzxnmc?VAS|1n>hC+XKegnrboM8nnt4ET z7SGvtUEuHu@MmOQ?o$228x91CvkO`s8)g59paVb2K0O6&2JZXd!IK5EI(x549_$Z% zbZOd}Vrb^i3K-i2;=R~M!Oy$Cry#zor}5cjUcO;z!&Yqkv~Btlaj|PBWE*!RyQeY# zJMiUq^1XeUYe#AP687Mxrh`H6e`xyFH8ruauypPMt{+)DpZn$Sn$a_}LSopteJGArY`tyl*nMHia%+3#$8+uT&Bw$rWd3R%iG2i0F z(a>IPx6np$GG;y--Fw)0mQv4P$%&zfhKKNcmF|y!{$F?&yy$YKum|ZIePvMkowGQZ zg>F@_m$Hge?d3c5kI1~VU5YHOeqIJIgoD!IUSYhiGTxoQw&!N*&2qi}zU0vMACKCc z28yijlzphSyYCP%vFC@8wY`7zvMak z(>3+C0^9w1+OK0wNuKTD8hmTX^+i@CavO5z?1klwLwQ+>{dMdaiBzFgsdqNuD>_0f zK!p3Bp7vJ@b?r-m^6-9VLS$RXgh+?RGI{pGFVm;`zL#&&UHxw6cL0Aw!y&6X&Hu;v zul~NxcjMfLuPLOR{u8TN-}ob|TRsNu53Pgvx$~S$v--HUZ++nK{#ycvAKn%?97gsItW3}C@H`I3DbX#rrZ18u^JzLixvv-~>o?EdLJeH0uf7NRf!xf<^e-Zu@&*k|1 zlCdABZ|&I#zTeE6nGaoI&)%7`cU5Wc=)d+sV{P*6)`H~O_3WJs**h0KzkhNg{?7uz zlY81z+mF^%mnX}@5AXWhwcji(`Q&mtym2A8v~9|_*6y1$DH7``3tQmTvB^d+?%v*f z*HF_4UmymOn5RG6$NWBuoq;hmfX@vNCcB-cyN1MX8t$^X1&0sO=GEe!Wtxli5#V=M zvb&gZ!~#F93Vx$~4L<9TU@w1^`h0|#Q@_3Xa9Bh6Hy=d~wW9HG8UDNv@>{smv=KVZ z|EGx+NgZp=>URp+HbkDu>Mxc&6m4obs5$H)&Mb~jc8vWf7_6d(c6^a#beSE08m^Dp zYfZb=;6&Mz`dt=22L8>jS$pt8VjctXdoE><&5nlcdkZ41g;wN6cylA;``q6pyL-wO zgm((hI_2kF5KfR=ik+gnk8#Hs|CiZI21Y+fcCV{leWvVu{H>dk*#h8S`>z*WR{N{> z-5mk`RtdgEXHq19FV;%)xicP4GUw!T(eSIkAKqhN=v*3ZH18=hxZY1pb_sK`qL+oy z$LiO8moY#Co~-71e5z%PJ;`_*9}PC$1diIrwfO0`PWjul>%h?u&%PwQf5i<4=YOHLyB42pS$axDbg%JlXwGKQ zwes)|p2?j0(we8g^T@`gyR9toXC^PP?xK>1oFd?G7jUpI34fNgeBw}SaKWp?^?lne zM>aj*#G8HXW%R{ui$?zM=D%pgky{qIzO%C~tw<(`d*iyZb*s^rJDO7mlw-6HJpI(< z4=?NhmY-$M2_HHNr&Ku?xb5~erw*pQ-~0LP%yqASN58}F?{BG%_xllD2gcILzpLxs z@9*h4`(M|)^gH7I{_p(02UxFPdU^QwOBaWQC(;l58HarE$M`@)OQ%3`gwu z<5Lv=&NUr(A&Y{ew*ud3wPo;|@W$OAE{wcga(Q^-TU0F#Kj$;f=N31Rrl#9RiPX;LgX_huRiGH|An9|H8K7 zw#(@MzhEPGzOeY9#unp$?=JI8yTHPQUBr?y#}Zap{{WKHHh zdd+|N?eLxw@k)Lld1ZKy?Zm@diL2Q1x3P%jI1yW8 z``~%+1jZh;HavVW_D*=-(TTIn-g)}y@Sfhu+#^pt2MkltCivhkd?{_QO&teLPmEM_ z5$7311{1ua%(ow1Gr+j{pJ)o$ZFe3e_OsZ^osS=60GaqWAJrEqqs?h-TKKCCJwFX^ zxfOkG06r3%bmh>}GVAa_i=9E{>T;^xv9c$Z*2xCW7{zO6+7sGx$X`MF>YIN)F_tqD zLzfifatjJ_p9Oau3z_Y%B?m+^`q$o@eInotJ_}FK`1IV(Zza1s;4KTM16%BnCut-2 z3lHWBN0@8iW^w?Vx2>7hvTaQi9MF3oB97}1jNy;q#&K}u4c2iH`?iA5dBhx@=H6D` zaqnHX9W3UP<{b@1mxXJ6?Y2R8Fqd$1cyv}Q+&$Q0__BD;H|77N@acaC8i^ileYOKe2 z$LgjHLyrcnuDYg;L-_T&>?s$9Ut=tGtStN?dm3w4+_|0iFSjokya^v#hhug9-KLv{ z@TqjaWLs}G+4ns-pWl)Xw}6lL(w5vSO1TZsDx|MZ#V!mtK(p6>`$BkLH2kUOUAazl zJo?S~;T^!9`V!R%_kwl_Rn*61~)A^P|7uner))q2Xc5DZ`W4bI<-^xc*Pzmjhn4vvwh1i;VzV1iA!rk8tYN&B?Ex zoNu>@KIj~b)94YR2g?g)4T^sB0Pnt+m9q|xzf_Rox8^`u6wr&yNi6c^SGX8l>xznU5A+kXXIm-aWu|jYT+WRWA(3 z*$2nKpF!HmCogRIWFirK0$dmuO{`A)Gi+QXWI z;pII03b8wqK^<)WnhSX(#^$g44VB{C+`Gu-_2ycId(G$zQ$2lwXVAGhpJp_seQ52~ z=;v2u&iwV2nSuE$(A#U#-)nCE!=FEMlk5V%yx^od4s3^K$IYG&?hF!x6=(eTl?FRm zyVXS>Sh|y36nvQ@xtMx>XzfAt{?Ys`*>PIYQHO|e(%4)(dQst#LFDY-sHd&Dl5NgW`uV zzQzA!Ly#!9Z>_U1F(w|5c8$2EHjdyM@h zc~$f@z&c7#)0~YDoV@)+QO_p%+0<9U?%A}KoYlwZBVNSbC<S3fVUcFE`B?dppJvcgFcDI6r zpF7kZ!v73zoFGnWKe;IeKd`eYA4%{_?MUYC!2TPtXAO$hHQfh|=63^nf&7~x=A^hu z)_K}|=GaLd%53)Y`LZ9^1P;sJzJqzKt@(P(D!$vxYrFS-rM7z=c&D5g#WK`D^J<+$ zcmepmijT9)wT*WW*Il;UnodlOa(jF`kz5nDVaba;JL?7|Z zQ>OQW3mWe}^dZUR`QwbnV`2FyD(QP4W7*GG)-#r}6ft~^V?BMWhMqR_sfk02S<~jr ziWk-}_ve)t2&@c@Y~t;KPdoTDaxLgyJNtzXunt$V9#>({x-yfy0DsW@TJ}uM&8(YQ zKk%@sexgKo!?Ah6X~!bL3gMHU+b2Bwm}O!a+Q~5$9!cI(AA-HL#Ol^HuWgsJ#I^O(_n6#g zjWJ$Wx2g$yM+lo@a8sCE?}+kzH~QnP75#Xh;#jSUq=kJmZ~RYsF-sL6M2L9JKOmxR@`gpo*r?t!;8T)?vSG!DpJ3oGmw(_ayxjJuN zdfxzWT5iXhJAjL2@0}w!_+z#YSgf-Pe}8NaV@u_Y%SL9mqGjP%fakNk*TjV)-`~V< z@zcUWJA&+G>O5H3EVjUJ?HfgxFA2ZQ$Kt=9eU*>&l;87-=D}^e|Lu4|A+~bY?{><| zUGvY6DhgSZcOa+82DNkA{d2@qGRSAo@M-zt-CunTo1Ao}*SY=#{O1^Byl>OZ2Ofhq zzfo{m;wQ}Q8e%h~FN@#YYZvbXhX!}Try9$XImxd_WE(6Ht(wuYljl>n>-Wr-X8dr* z-uO3L4BZbJ6elrg6KDS=K83#CA?c=s$tQAk~ z*zW#w&(pFyh3m4p`#Cl~-YdR56@Wi@yu{E##;ma-gL^r-ZoK#WJ5BD*D19vQ>7yH4 z?Z;LBpBzK?e{c->YpQu`j`*jLH;_M=tN5kX#l%D~*VepsksRjc@0ND{`M>i%e~t3r zCmQiy?|PdvMg&{d--E648cRD>kLhQ;Yy8>|Z?g{%tyQf%)wv6FLMPn#k&meM9kE|4 z?6y-8EBih6Rhl_^zA^g5=jr*^kf|1@@onPs6>fHY?H5;Ph9_H#WJezkS&Lec+lMDu zi{t}GMo$dWpY~jSe|`)hJU($du#!Kv5?pm?w`Wc=t1;}MHcXn|!vUvdA^U}VS9se@ z_Tg2G|4R7h3iu~+Tie{YE#ca&r>)%cui3lR@AvUBTHAWAkbj}?zSb-HH~MjCb4KFO z#EXz0j7%&a#@B!CKKl!Dc_bSurcQq1A>!@eJGqCb>)D4+@-p#F0c0BG$I34%x#On; z?z1O>kDmJ=ZJ%den)lIL6oalB3o}OGs4+f(-{lm2{c>oyvX{1sn{tTb((_mFy#C*B zVu^ST*d&mfA~ic&z7367U6Y*Ja`wYNZ(jEK?~#0L>aQ&qJ%J|Mj7@TpVDj}B$&(GT zX3S?h@C+4iF}6z!|50qiyz8K`yX-P+>UjG4>POw0RxgCCuAOtx9l-(W9VK2{K};@j z-sw5Ogz-sllFlN!^}V}dLmKCoL&@CVJ(t+|1p4ro(T5*H=3B)xkKGj?a^?Nv!J8T9 z7TQ4zyEL{S;}YH1c=GwfEa<%6qp{x~VxGi)rLZgU&K78R{SM$8!3NM6*!!TatvW#- zJii6+Bzr?}zJa`a$$6g##;(7AmT)?86???21GNMm7W{!%aMH>l=_B$DQU?inmN+1O z4-_P`gH^~h#H+o=dyg?D#jX)=R=;xDl*^me5SPjN#+j?u0eV-zfIP*PFHV`h8F@=O z*^|KNBxf1IOK1H;_CUV%OafV6<84X=GqED#i+FF0cnIN+cR1wW@}48#bMeLT zeBS6-3F^=(&$%;;{Yvo*!|VaI^>Isjwy!HhsOhqsGa?&U8}^E+5hM9qvUaRs?;Oq& zowkzxjGgJvlCm?k>_qQgO23QQ`wRG1oq{;uW<2ZPJst#hlXoq;qVc@fSj^br`A2yF za%<)w^s!!T4L|y_%a6n#8Ov1c0#o}haOsT3Bb}h0@n{ac`SQEB4(gk=f)0(1As-O%uogN#ddK!<$`-C*o9&0gAghx^=}(B0z& z=K~|Ftys@aUO6xp=&8< zfNZdn@HaHkr%%hMjb!Lp6q?4Et{qRyzDv9z`=_%KdtMW?O!BX2*&Vg`$MB&E=7Wsw z32e-(X6%>)UL0siq>WM0v@LDp2dI<%xy&mQ5KGGC5-5Bl|c=;+CSl{-4I zCKIy)opox@a|RcoRpQ_6-kuR|#aG0?S(1fqS(>r+YKm7XY%#q8rZtxUuulG=+C(S;PFQ=C^ zkoAF}3I^5hl;8PA1N>+jm)wY!6M;_rLm{r)x1qa}u4e4(^O_K*(f zy!v!rymbhf!NhL5vgufv+OM?;zDYOjBKIY$=VIgZP02C7yfXZfVh{^Fna1ke|J1w# z)ThYZ#+*+=2l2so-3r}XTVgE|Oo5l1F9))+bGlxT}5=cK`v?Z`|g@ehQ&evKS6jz(xaza%bQ zV`*mm?73^jAGa`Pjin}!_V_eh&r~7%bb51;jZweXir2D^0^1<=&b7?1j_=p$ zPwkpn<5kr5Tn#S+XWOXhXLzUho|Aun%Ua0*hyDBT!1^YGA68rCrWiJNm$pgnQl102 zkXtr5yyqzMc$l$B=5l%XOe1$~B$rj=28M=Sy>V=K&v!f;)ejE2G|JR9O02xyZTm}T zl<3pTwDtF8?_0y~+L!8=bB31u-}H9`JgTL?wcw&^@pbS&G~1Pn-jnWbfGiNni+kAy(>LK zu}zZUML#U~s?HKj5eI4!OS_nN&cJ3aI4zM4oEj?q;G8w7?%+PfyJB#M z_x}}YROR>o0RP{ke{jI;b-km>dxv%L(HaNQzqQ6a?0L=)Jm9af_I@0_ ze4rqnh@+2Z!2e+0|EHlTvUdn}$^jaf|CF)CTjYidAGI%I_}q%MKly$Z-q!F9tv!BG z*1loCe#gS1m5N`Hy}N1u^o6~WiP)n-VtL}o>%@-@#o#e1a78>#^wh*QgE!LlfPzy&uv;Waw)WC-_!5?qighDYoeI_ zW5w3lfrssz-=1X=L#cDwU7i1k_TE!g+e+nYvo=~I`QEiY=)Ys$FP>QE*-d0Gi6Q^_ zb`<^ZV7+2__Z`OXuGfmp+p}1&hih&=R-8P`cwCz>KCzow7p>hXU?X_>{_*Ih=!nf$ zFl;WLv9RI0R<~ejVx5`Oc>js$iTI;GCzqZSVAF7Eifm^2@SMbaZWjzY-55Uu+rP_$ zE%7#5H{t&%Y)Abl{yc`seH)Xr&p2cwGvn~++IzusH#Apzl0{B_5_qLUOv^PyN81XF8mL#;*2j8a zS9$YMaG(bo`(!QgThMXYMtY#J@^Aj40=a}aJMuMsGZuaweMaNfHOV(=V5M>1ztPHl z^%#5%c%^~Yc-vJJ8v;kwyGm#uV!?vX-(P zvQM<0t>f@Xe$xE?kn-r2_O0lV#yrSedsU-?7($C{HwpiRV{fSDG;|F;1RwEPAKn_z ze+0K0#;vVj)1|e2!&_S)hu;H#{-bkl7&m9xpwBgDt&!$z;)%ZH)-cxmrE8e^zV&}- zzHj}1JYW2v*16_;^8e6$PyPqy3$1)t?HQLwB@A9eM}*UH@#j3=oKGta4(HMKj&ZcU ze}p%?^iefWeEN7UJW%}vvkw%<44yp0J}^A^IhO|$lYUS*WT`fcw|5q>_suiZchR+P zpW!S5_CG$LjRvPKjw}q?)b`y}JS~PbPrTw^d5`$tf0kDy$Kknn-viBH4e?`Mog(xGm-hL2aN4J$ zg`vKpwou2cOeg*Apuf$q=8{ z_o@_DZH^Z(nk zGsS1l&qTT|$V@sjH{;CaJy)Pto+-{aL;SuIT@RR9tvjxWShn%`O83s81Imx!>)q1D zWqardBy->U%+;9#=-aYEI+GMDfXuXl8X&%|f*ds7hMz+|_4V6fY%s^Cef7bY_>L7k z@L*T@1p2d#-SWtKw^qOE^h?(K@G|+}k`K=3dLMdhJ25TNjdiUZ z`@Cv&={f9S#-|}Ubuw*RkwINq%Jl`@Pg~XK>MuxEyZ(Vve0QANL)^!%=c$>=J)?7* zzNdHYXvOeNBbO*HLv@VSy`kEV<>4ox zL+g&!m>A?nk2hb$GqU409#ib8-Hpv?!)xZA;9i<|BjDDYO%ms$vo3C}b?4^KrJc5# zBl7>A2HMD{co<(jR=RfT;+kA9xpPf#xIX>hrvu10e!Zp@L)xp# zdsA+bp4Zy={z}x zJ*MWzGqOe7J>>RL(;pa!#`%5*(K*Rx)QQiny1y15hqd7tcu!p75{Eoq=fY29Ld;3y za+qHbTW%;eHzQd^by3EQ4;t#%%axwU9vW<5?PQNOvW=H_eDWjR*zatkXZb#5>{OMh zXOcPLhy3QiyT+q_zpiy>FC6{*o4)JsZ)b}ucN#wF)$Dc0FnzEU z`?2bHDt=jYJWDioYIr*APxYf%Lbo5zBU)6NWzp5D~A6EYSdU-x# z(?4UK!8?Vw>R)?Z_G*p4jQ7l)YMHZpG%s^T(CMc(VS8QF>g|&zY$~lK;Mv8W$Oz7< zqb{7ut0(_)Vq4S2b2D|~W7K7IYqiW7snw!3qt{34&ot;dYwa)wBaa8ELkwMQe9N_A zcZlC`#?>M6Z)#gh+Ey&Z9}BE?&Q0ZYf!&Se?~a)`Isu-Q7t3)e?fjSt>^#P|XW;MI z#>cmhsy#lv@oS{H362(fMmS(#2_6WRl5+%0n|aJ+e4@`$V5Q%&wTZJh!rG)B z`AB9#?VdHwM~m7Xec^v>G_d>uwH>`VzI+97+2C(;=d4W2ukEZ41JPH1?x)rSc5A=+ zH00z*o-*-(;)DGcSZ7Z}ENajd8vnWIE0G|^M`nDm54*h2x35OA(=|YARipbTwAZYM z=hI2*%rf-;Bez&>-(()5p^yLOi8ay(FJ#WTrx=5mS1A6YH1Q4E$QR9CXxsZqdw1&e zwoUjbp@%a%<+H2-2TgxFlNr^co%jl89pJMBhp)w-acw_7cIou}(6|BY%g8^2vI(Y6 ze?WDhmZ)#RR(S^6ui}+|#(Q{vs`}ZB|E`4?I;~wJ_-oay$XzpA=T5o)`4bUzvkTD8 zJiE2vl`k_8rzu;5a(sssy&Vjp$ESCm;GV{I2etn7|Idk)KY%==7#7*}{*t;|s!Oi- z3?8=0U-0}i#((|pGgqWboWM4qb>2^WlIAbn*{|y{Yd!Y|=?9r}ue+@l&IUtzBpJeSW)c#bZW0$v?nUht2PoAV+nbxpLv*)(sO^r!K5 zFP&Lv>=T|1&zHqCUtjL=`JH%#`T?iTooWSmyo?Pi|&ZTAMI z8(!kmDUHjQ1M}@7vOmeLpJv|5gWrrknAjBI>=mm*XS7Hrl)XPK+Yfa;ZSX_$(moPS zB99r~C0eBay6(fcM|1;v(qC|S!nWPo$Ui(h8i&LpscTJqFS#!o1^L0&62b4X3e7u}sEPJou?yq&q)Bi7FjM|4= z4pArctz`G#k~8|HN67a8m$&`Q&7+G@3%G_nN7eOhg@;?@x_pb;zT1(-5Ahu-n!C}W zp08^BDn8vm2TXNWMZdM@(iK*B=C9FFkPV~Qk!!&Fx1kG)8T8js`+FmJozxog+lPVg zH_-fp&z0?rW*7rBP_iR+xN`}e%Mc6^Z(Gw{hW?=1zy5op#A{2o-1iCLz`N`Gj?j-q z?mhyZW8#X1xB0d<;illL{bTkZ^U)d#C$*+7PI~#x9=&Y$a8fd(_IdbsEzlPJc$u|`~QpaKh7q@tOR=6mc#m7aB_a`OL+wlZvDd1D`a5-XI@`$N2cls?QzEM|SAr@Q(Tv|DoM_3mDjp3d5tcgJ}5 z%kUe`{RrP9`0*Q8mm7~CM@7rAsl*GdsmF*X!8e;*#hCC-8+{>;oU@&{UqIQy13?~=f=O+p?%P_cT9WULwgqn>R01>(jKZ>POiq6 zk*O4GA{(G#pzJ`rlH$SlV|RXWvJyyO(yw{;1l%@ z@j~wVXC$`Ze^Ly=`QUJhwwiM!W91g`KMh~Fq2W&t13d+29EG+(ig{nYlbutoSj z8)COA6sy)(&^pJb>F1Ki%zE)&;e`)F!B685uD2Fj_&F_e4qz%!Yt8{o1p?VFa)h4e z9Khr6aSou{W>;1Hdz=HKT}Q3mXqC>+Iv4-Y zHT)Dt*0HD)FWaiF$)DQ{?<{zda}79)Ai&uKMVxCe0l7-`X)Z(tEF)jAmi*Cg@mbFY zTNbtDFAkTHlPh_ooe%umAlFQlzayH-B7HCuUe zq}rXoP&I`d;1_tarn}&$^pp3dCy6)3g`+4G2Xg?jE ze4KTSGB0DpJ#Kf4=So*HItpXfxcs^|uFN%k(1!22w088YZ1{7R)8p0~U#H(c9P9Vi zdhgS9-n$H)}m&WIn{r6-Ed#5P1c=3Z!gD>Uqgr^imm9soVj`R3Wkr>zZJj14f7 z`0B-WPBN$Z_vwd^lm6T_Pw0j@r|b*xuPFUI&$wg*m(8TX>&vG}o9Q#3cla`|;>i5i z1Ybu{++>>lVr&!hU0u(o>rusfu{RxLn2vyzn@-zSwERr z4t}XWwNsxd`t;}Q(@ejv`##>~{1F+?D%>!@+2pm~**+%)kMC98hoVX7q}cP31-D=8 z+U*PsjV$Zd=g*fL6zk&KpL}^iHSiv&wXZ|A&V8SK(0cccKR?3!@4V8SL%&#lztKM5 zEgy>q#f}3TY*_KWn(Us9Q?DBike7gL{{pa4Oy1MKWUY{g3=B`eAMq2uM4KMgEBJxd zH3RU-cpO==X7M0;w7DkO^p|HI5^Rnl|1@yMK_B0-nwp}&3_k7S&28U0 zvn}<=tW2ngdx!8X&?fym>J}qkbFP|e_b@OXl}nrpllTc*758N96tcltmX!(3#_#C3 zGPrWP#>8v9;qpDvf+q0kY2f9b*&Dq%*&Vy~nz(%HT7yM=t2TZIa*E^u*?@FrX+Je> zbgrDuxq71WsiStbal(Yh;+~EuJCUwS7u5b0ZLr|8DR6z{`b949*EM6uHTXX&*Cde% zym2+$7H`s@g2D5g9}p?`1(`Ckw9k~DgxcwhYqz|H9zc@I@d1O ztNlYfzz%S&f%cO3e#~!Odp+-(?n`GDOfH=$`=EE$1+W(lc^f?MpIB?+god}dwf?mK zotTSfitmTMR|TK1$;NB!>pF+`u34}tavgE8Elr#$fKF85RG&9(CAdm#VS+WUaAIiM z@C4_1JKG1$cN)LD8OwTDot4Xi60^Jh^^ymV`ebU>E1> zRD(2CGiI>X9?jJ{G=LA%!R1S6oKxE!de-&DeQM@MO^w24o{zyR8zy{wp?KJp@ZQ>` z7lp5aM^WJ?awUAJ9KNF%eH;6WRW?7IgrD97++qVY)yiXTI!c{v;CoDU-}oN<=e={} zqr;xHq0V+f16=p(g0(T8XP{xpl`FdST;k|GYl`_;)Ub(vF?4~>b#JyqtEov}oMP`0 zFR-hby|?8)6w{vntDBD5*#_`aHVfH$<{+CUL6r0z6S2{9fbeK`3~XFT#bHHJf(f3>yNHXW#lRR21Px{KX)QWAwx*kD*R@$TXh#MVm;S$zR|_h z>-rYo>siNt;`<)&x6a6_m5f5a7qadb@t#It+sb{(S>glgPcoHayDZ)jpzi|SSIE1P z!XM<3Rz7||<@7V3ezZnzEfwl2A+OmV;xj8_k#1vVT|P;^(i(?wDXLUhUZ{J~egaT~X?;r=XGhyu1b{=hB)UZ1s20 z*XGLt+5W(JCZ@OJsT-H}OCMx^ie{_t8HZ~#;;q_`(Z&_I#%bc&){@)Vd$IwD_FMzr z95Lr3Pw)H!zr{0&|I6J5&3oCSPi}tgOkd|qfUmnRU_CS+!ARqXasHovoAdv$ZyTR1 z*QEo>e8N`SdSXs>4Sm~O->B>O$kpaBzx90MMo)h9 z?eECsf_HG4@(ZR`1eYmpVr+~?zMLl6%+Pt}AU#>MJ`D~zZ*tziw53(Mt@p9EuHAP_ zk$k69D#aho9Fe08|C@@R2)~loZX`~f+B&;i@$KJE``($@2Stynp{2++!D>7EG(1GsP4E)SkOpKAU!Pq25WQ=pgC>URV z-gAC_bPu{eG4r|h-0;Y`nV)|aeU@vIEhM|V|2OvTe*%v*uY2&{MXA~1k1L4$_5Ejn z!>045Wxj!boA?yrq`u`R@3LoCHvOagH8VR`GVjKOD+6giN?u`2m1ENxeFOg+zH9B> zm#7cc2o1tMLd^C1s!s82-+i@1eLOz~r?9m(05|#5{_RM%Z0$r&`!}e_1(vqegFUX{Cx7_D~Itlj^r%NRn7uu zL(d6xH-rP-XV17gkxO6Py<83bXqDf9cGz@{eYoTO#BAONPQ!;f-fw4{Bm)CC!NcLq z=6@i6{8a7LxqkMO#hjOYjC%6455|)jaGcyF_v{9T-)3L`-rLu9$ejHUy2#4ZK}$u0 zW3=)6xtxAZQn$B*eve!yxRO8V!LyL#o{@+Hn+K z_cYHt``mq2#ybsdI>|ZiT=#9nveC--n&M28k-1TmC`B9PI|v@C@m_|EX`Vkmyo4H- zMo!554xDBkMB6u?wzDbl^SJPYXWg}Sb!=E$|>I<1Q zZbfGhZGVCFQkzy&H;jD7i`@H-lWRuKK2p1n!xJ0lXw0RZ|DfL!+%u!}|4IIvKJaDg zzroX~Za?xR$#$Uo?mcqNJ)5ljR8L6n!gizjUcJx>wR7cr#^T8#TcBsJ;OBLDx0?ef zdiEN5$-?Ib_>iGlP3}8W{2$>hiU%-~ShI&Z&%b7S@^HNl4pnWK0IdN}$bXRWigN1zWr4PL<>(0&|^hnUs*=l`kw zIGSU7iZ~EI$M&Uhd(q#AOW3Cx!};gfkJqza{(hY9?Z^A6QKuRoDZ&31m)`jDLjNuB zXFFP{^WujKpuPBZM)pDhIK@8D9?<&?J`&gRUbx!h#n=8AT=nf5(jQ72CYrP2gsa-y zI;%i_$td_Oxkh+Vid>^_t!*k`jj@6Cqfg4W>YX>x+0R<~K32&YUuFHQ*NGdUZo+o# z@X(OOLC#1R;Cd{c%r0rdPKa${Ch`J)XhW+-vxQfZp>#g5WB|>t2l@9x?geLK+d!st zpfO7p)owb8d@I|9gWbYB2c2-Pa-WGpue&(6P4+>G`c!6$tUpH45pC+Cm(7la1Jsg2 zcE_Yr9WK%P!6kjG{Y&hTUih4zi9b21E&k%|L$NP94>@O7{M`BCj0=E8RxruucfLL+ z*ruVaYo}Nn8mOD!QLGvm#E6s~n)3|*byi%ES|xk^`yv1S4@d8ZfED`7c3`y+d5xUw z4GqY+>a!I)_gaS-9Q3o$$C6pe0ps;M>to68PR3rte9M6`cAdMW`>2kdYG^4gImEo> z7r2zQD5jqT>p`8xYxhod=S~f)KR(9Xzy0D(Lp#4%{7?&XZ$_VnpJpFsT%oen@x6=- zeY{xqEa*bLJ14#w-xlC!@W!*(>$mLS8kcnSGRCDE^|~&7PqnE1v1v`j4-$+m&bU_5 z|60b?PoIzSd<)}hrp`b=^;eo}B2eZR@zTwRlE!O=HZ*G2j1YaQWI5-A{hbg`wale6}baC)o94FPE-!s5zN^ zDv`_{G4>lLk;ESL!~}e6z)|CaKGr|M`71TNk6O7|#V>aNU(4%zYe2S{aedQnOyBG| z_)H>B-~AJ7;t_oJar%`WVdibyt82j#)#Qr93q@a^mE6rbDCS>uLv(^M8NWaW-^-~n z&?)>Gw^n8yKjf~X*6jrR#E*&dd5L1?d|jtbbt_n}Am5n@v!*q{-&?W&E@Ynf<7c9d z>&Tf|`>wMN%dhRz;8ti($5Wp?fIpz+Y2uzcpkXQ2&FDwau^4nH0B#n<$tMMu9}hTH zFCd5CR%lg;j;Wn|)2^=^++_aF%`RH!Yxa56-Y{{p; zyk-Y-WU$XRHFJObTxO$ka#q=awn;t2etc(oyo7W9Og_$;3o=f0Dsl8q+oWGvx!3Vc z-n6G<<0^7;kY_q0QOnKCarln$`I~u}NDnsfGfrkC52ud*eTCJLznPYae2q33 zu6bfxWT^3Hc6QwaYy`-mb*U8Rx)xj)yY#%vRi`nPfH(ib&Tjh*z9_3_nc(eQJBjgY zPqZ$xN_v((JYRTa>TD+Z&f}WXv#gJE46MSQW%wL&eG^-kNw@p-ZI;m$I<~DHO6{MJ zNmW>*@#sYtjMUx|os+Kc_I&UF`;_l%-KYHnU)24WH8xhq&)d+vpk(FT)(krlVWDn-iw1U_6OPfb?tYYmFvQPG*>0x-XhvF-Y<5&V^wZv zp3u39z33FG|3%H0+}@es6uQ@T*1iKh!>^ehYf2qRCj!|W=qts4+Pmh_-#oEVXE>1i z_FeIoy_W^Ddk+z3dT}6|uC%iE;=@nlzu$o^uK6x%ZIRdZ0CuV!-{Ak<#Nj^3z5V>& z%2}dOw&hc;HyhD0_8u*)-uuq9 zjC5;_sTWwMs1ZJ$vk03wXYCH1aav6r!ZqaMe2nikeBa17=TQc)=lkkpwsaDB(}>;0 zoOfC}a^7ic#i%VO_akCeh_ksKJyY+HPTMaTmNp|f9ro;zJ)~z9KO;J$y*c?;JP)2J zPIN~jb|U>|kNCb=Lm%5*+-U{pXGN7R%Ar3d6!-a z4*K{hy|k_bd!32Jn^&Rwf05?`8QvWi{6nmX;EujniM;hw;b;SSn8M*5#H;NDH-*bS z9!p0TUPJ$Wn!wK2x^?>%mhv&d-wyD%1)ohnc$o&@lzW*L&VpaU>z&}OkAuQ(AFqYu zd%?xM;GU0%ty_0ov4g$wzk`eUc+&#jL|N-4_&~jUmOW5wi-77Tw-KJrLRW>ZJet@8mCGmsS3f zaA@=0s%t$;%g!YWi&pyblzf5ctzEL2u)n%wGsz%RHJye&6HDNrKgw<*e`y^w;s|ml z`^)%3Z$&R|Kz@>brFW;Wv6%Vu`&=@v?_=#^AKyF)U5s~j94%;TVP8B3pHe?fr{!l0 zw!F-LNB+Wb*BMhiHvEcJJR?7M9p9yACRS>EYOi`|)bl0g13rfgoVmfxjbct+!N%mK z&O@qI=;k-e-Wz95jfrHg@YBgnikA~lki9{+k#F^5*F@KrP55?T&;>2>`?e)NGJcb9 z;lU`(STv_G?}mT>KY90;cz554(RV)&%>2H4JQxVpdcWW*`MraAoAK~Yt(oYFVDcR8 z1)l-n8(Jv;3N^1!QtO6$3BJeQ8@Oceob7>NV*81SRm2P<&(G)#e)%tl;^fT8p3p?! z$LP!NdjWl_{-f4Lzk`fL_f~O^fq(Dl8}4sif1P&ZV7An9&F`<6el-VO-~Kw+nS&IBP)RODQNnU`JSC- zlE(`ai!xtwgtge%Eb(ci1K+7~>`+B-0NYN%u1aE+4ILj~JVqy=4?_bMxqUPsZ>taD z$Emf6-IG2#&hDvlZgZx|9*+O5YWtLS+1W#U49>~#R>Jw^t=N5f1H@QO*k$Ax?Kk1% zhz=us#E#cNjNonHgnS=@o8~kyk-F&kB9>FD`zZMjdQSSvA2`FP$ID}qUGY!EuqOGh zu{Vg<{1N*(=ZtF(CQqo$ok!HQ#bQGxH!w=RA>##?&3T|d;e4Ga_A!mMiFk&Am!8o1 z;pMx;O-$k3X^W?gSEbyG)!z7^M^_mTfIEj_I+!F#Im z`xHHpey4sPrOznOXdM2vN4VAszbci@l{xlW2P%b&f`MT6Ibhbxx@xV)^DowGL?5xC zmBH7Os(JQr=KlD0nEz}Jkm#p)Y6G^IG%$+vpI7@w`0VHA=nOZF zPxvIC#|YkevL}1U%LTDaPEIv7Ni{xSKluS?vC1DjK1T<+t#j-cYYh*MS!45t{4xIj zE{}pWtSj_vJ$xJ6DQi)NeWv`jq={Kj%$sn;#?B(1-H@owzP!R}dxd@5jBhxp915;U zUg5m-4ejic$iDM7H1I87VSs!Jt;@^sGQ}+@A0l5@6mBVYP%!)@-)F|1y&`_2oD`pq z!FxLU;VYtJC`e|^@Wd|J#if61y#4H*8H`u<-xlN(Vx~H8Aa9J=qCqxa{r0=CN1$){ zwd_`sv(rxPI)7g(=OkaYI^&(m(uZA5wfFl9B%hTUe>i@^wpadHwE^5S4&-l?A4%`B z$sI$6s^4-~>fn*9or8L(#I<|PF#7Xvd6)b@s^2w)ucxTMnwIYe zI*UE)T)8Ot1FLtlCz9-me%4s<7!bVpz7u}tpu;=p@crV=)3sk_jrg$or@MT4ES(zl z=?tyq+}stO{Y1}?)ZV8LU)K|V=e+}>CFp#nZmD=?(d3Of%jP0-1v&U>{W#j76&CgkN+|O_41y^^e^XVpZL}NZzp9%U@jNSNog_y^& zf<$5!F{;gZ>*yfsDkjeQX4y!+LIV%pp?Ew__3J(cF2%vWj1|MzsI$f0*x0Mj4$o3s z-@lhfW6XKojz?#n2A{<1dTp!9Mh%uB*rd?Os+ANf6TMbd$OC(V35sGarGLPA1A+sxnS#K9Fc_TCHD*0>BG0V7=I-D zFzWGa?Y|z@pb=RG8r>;bzWwLOFYv_UXNO%sw(3L77ahQt?d@UcII$J3e(lRA>MMC> zcuZfu4d*KIu3OpnzXn(LNvBl|nHMKw<9C+aq<24hI&U9?N18{>8f$m;Z7`zs`E#$w zA3+XJwPd*{za>-0CXC3`MyGUcbY;6fWWqFgo@wRr(_ZTrD?&E=8RNo!(?l$58rb=9 zs-GvH!Nj&KS&<77quPA&`I*us1-aBuo$E{kSV>0=YH$;aTJ>zYbHKo@)W=i*#Y&8=4JQ~zkRs-xd>0Peq(%cjV`XJ zAAj#7%UA2S;(*RoFU#OI^!irnW!;I~H&QR_mj8UctP|6AkJQV$jku{h-*4saU_DOa zf0wSuTDQHt-o>Z3L*NB60`;;oFRxElD~{zuTu6Crnm(dj+e8$$k*T>wiL-$b*Sl#G7&GW_M)O*%*9`BI-Q_qgy7osPuvx&DH(;k`U-)k>g%f9S# z4xgKM>fLGGXRdX8uYc8*$uw^Aix;N~sppL^IfjoiLp>Y$_hT=nh6bqL5r6ZGKaT}_ zAGCsp=4jsHUs1jdzXL~oekZ$v?|U4Z1LWq;-Vcn^;HaTx9{%|BNcKi-SIYnCa`0F1 zol~uO*%rxj%3177vzDS|JnKK#AQ_0~9Pc^7DaEssynR>9x86CLcQHx>Tj4YP(7g1S z;m4!Y&-P`)d|zVzocy>^(I?;b*D89!80)<8%~*;YjJ-fIu<)&&@hvWxT{)v*wy{N^ zQ@+dZ(h99kF~-L7f7{>U$26R4ob^_;@^L;LfznleePv*>m^1aV;-Bj(0>=M_jzyhW z;nQ@*rsNv7CcE`+#XdA_MMvD{j$8XT9SGp02uwq!ZD|KDdV!a8U%}X~t^6DIk)Bsx zgZ7#Fb)NJ3pxq1HAA`%)?(;EUR>-4q!bOWb8_TjD({I0ymvXU%Ps+tUk;g0R14C6^ z;BMNhHMJkS-Li4sb+rwX+Z=f2%f<6dZ5h>^dS-cGcl%_^>~D>~3;W9Ve_~~%Q;5zA zmwPx1!KclBU8XUz!({9%E68;Q*RT*q zqVKz<=!)WH7NIlLZ=J|lNP#3a;y}y7iPS-2OreU_X~pH_fN5=CTsP##Qinq1d=OWy zcq}Vd>A`9-->NS>yL{K0^DDMao5OQauBo4yo9-Cu{R`}u_Uup-_!6@lDrX>9_2X9x zQXe?Zxh?p?HrT|6sK&5rq4$D6N6Ih9*-BDX+Y+Xttig7`lV(a_P#lZ-oFqX zvMO{o#4&Iz4XlR+YwsM!6f|3N5kF4Re=qB!Icc7XHTqx7y?cCA)w%z__e=ZEgs3N&>Tv|cYQL3BFPX9QSc{gi z%^^Vb1Z{hYwYK*1H34lCXnShCWfYs=`?L3KG6b~k`F?-D*YA&c?b&;;y)Mss)^lIa zDkb-w#zmR(kuj$4T!{`e(uZuG8E@%>Lw7kBUF`)%;I#>k+Ib}m!Q08-V2wdUEsc)wxY z^>y!PVm{J|A#`Ge%YQVq?PcOzl-K1Et~nnwOQo-6iJn3u6tnEezj^k4w!F3UtJ`gY{@QH#nyfTKI%b{qrEM#kIi~}8 zqOQIDe*1qVcneRo&m&UqFwqUJLF$P47J4@NdcBcjoYC!BBruz^18?uU#QgG@!DZtWUqa3_=F`eH z$kE!e$ZTm{a`3D*Z#yM!|rIfv2e%ZxOxA?E|JD$Td$MVn{lL`63m zZ_7Q^pO(~tT-m?jKj1?LMk&4}D7)X+J_@Zy9?-tg&D6`7@2%SEjJdROX`&h*p!AY# z>;$FYK4+(CJ$sOaaaSmRK-v5#D2=2{{={Ph_|K%?^lT2dov5nqt?`x1v zO>0BB6n{jYG^X>|>!f`<8|X_r@zY_+e89k${H71zg8R(@z6l`@ZNAvEbtW*ZS2<$N zOYvvlzmvL+P@?U5BXau@(VCnXdk#A)sbBR;H_%wo1!D$%V4mzfA1jv|DO=`v8kCN9& zusjV97~`NlFP_71mnfEd_-th5j_H41vF~Z@*>}!EkR0>gK{L{WO}6)0`ai`;oSp2O zY<2xdjS37yTYECtw?SNhX@IA*iz5B(1L&bo(&dlhPkjaW^}`c7dDdTT4tA=1vnSf` zhp*A*zm3zL-uF)&yX+fU-#gZ7U!cyBg2Ar+_|ejgxqXbmeO@-e zGxiH=t@IMR_zHL@xm1L{9f{+dp<(Z>5T5s-hd8ix=vaf`%~}_qc4^yT{JJgDo4nw661FB|F@T+Tny<)n zGMDFO>b4kr;bg0WwSy14aYsN0i_>*>x)7OQ|%d3WY`Fi}OHUHMRLa=RKlU@OS zC7Pe-7c=9{zXk?R5&u?fRHV{S@k9MwdTZM{)-0_M{|P7MJjJLtP?vHMi2jUa4ttS5 z>uFmu!dlv`m%c~4VcJct|BUqlGkyE7d{>BmR?j+Bz0;`|dOolDS^7*p$+5$4hiU#P z^~EaVjjToW)grzx%sBCNJ~5K+_u(h7nERvWIJ`}=lz2eiB6u3`VJv&Ws;H`XM;Cz;|X*kK2a^p1b@iD z_&Bz?@kRmzSGKuVxw_deOx@Pc;5U2Ct{(a+nM1OOWQlcWIW`paIdu+&OU6qMT>LLN zdr-3;#J~HXkx=aF683`#U+dx3sqLFj6W?|F$I3ioR+go0{digW_E6X8?n}z9A&z$o z`>Q7)$L`@e@yEGk6Uk%q3+wEH+>Dt8**`S8vNC2AWK(Y9kBzRsvbVk@zocMh{>*|o z`NaiWeq88(<7YGc6Q3>eEBDRq{C4qsl{!ZAy}|YK8N~(n@~h%!W=|wxRa~X3A z{*~XQ{BnLZsVu!ayUg=#qifU)M%U<9jIIe^E+{ijIQetLx1r(hrJe(%eCQT2>h<@b zpMxXP!woB-^Gdqv(=RR)KNUYe`8-e0KWgVtx64g2x~kxz_4kmQJ~LEyG}GDZ-Ebed z)v2p@v{AO^fl$|)Kyks5OrvY<#N}n{pRFtVT>iynS5|$rtc@HvpZ!j#YtDhff))JM z()R7$g#}Nump%QwvkR^~aCzCBjFN&C{Iq}lv;Pt5`UCI3LAmjiSJ^)-8RZ{eJIdcS zW|aT44}79*{ZB((&+xwC&QL<{Z=ag({|48yDgTX7y8q~ybboqadV$UL&ttQgrO<3tv7&NafHb@EIjBP~=` zJSJ3@W`(+D@KcO_yH&PfDEXA~BoANe1j(Z*IZs7km6Yg@pwh_}>IgZ7(KXi@h&; zc2)BJYVLh|i8Cg`k zFAJ6Z+(%AIav0pd@a%$_=gllwf8OkZi@=3)YfiyR*1?LNv;Cu4R}+3b$3OF{GyNB3 z%q=*(AjkjM!r2ASOdW5JXE(7%i_Ni3t;Bc*#zPw(V^4;3O!V3i@}206rMwpGMJlqY z%Zh+c(IlhG*yH41Dx7L`iKZ7ZS6)5C*CYIRl=1K9S2C6PEi5U(S5#MMdCN?EvC?mh ze_3MFq-S|vL>bX1m2v40a-3~bmt9Blp>#~eCU0F~L>0Fw8r#B|qN1I@$z<;av6utI zXp$f7aoL$4DJJ%^YV_bE=MjJTH&1lS-^}PEf3u?Pw;A!xRYs!yA>x7$_y#!>5T7xz z%|XgP#P3L2Mf(BM<~z#0Cp-}!e;s*8z8{;Xf$!qs#v#dAMq+2}u)M0Z0Kbh{`_m(m zL6lpv5g3+2%NLW|eAfQ7h+>NyA0iJV|5p<~ZkZhq`H&^F4&jY^REO5me)5IdYm4W) zFRC;nU8($l=QcmMcY>`)?E0|74|>jrAKVFys7Lg^23jw^+EDD|W_S6C`|Z)$!@5jd z-vYaa{4DBoVfnX0Ti?K?0T^W9J5%h6c)KdsW(s`uGHai00U z`M;QJWBTw|*UoKOp?4}TnZcF)-EpZ-!Rt=? z$NWUT_0wcriK~M^r|o%#&YzZ3hWc3MfNER_N~_!tgK@0dKgC=dH0h(JX@ado`*aEY(wlT zP;Pyd*__w1ViS8b^o_>Xd7E#_0Q91@*f(WY#qjrURPZfxSdWY;9C(Jk>8zpP8&14k z!mY#1aqy+&{NZn3)wke|WDgJTB}?72k2wR^vMyyFsLuos3u&JiYjjnAa6dB53&=L| z)yU2{P-0%4n)6+@&6De>r9td!{pf*@ zqEl>Te@0{Rh3wJt*=Gi?o4KTPmYI{OILfQR6O~0z&E`zdJ^koIjWf}oiPK+q9_Mj0 zSEZC~oQWKaU1Hr!fxThovGKf?_&UlQ2aXzR9=O;!Gjqx^WI*dR&jjgtVc_3*juF2Y zIP_MT5q+<+HQYx%E#UOk+x6!?5MV6 z{D<^6#*FVQF8UcTPK}Fd(7QlNUc16G zd$BuqSnDe{){Lm%rP|CS$7_;Zs z!*65@`4s#{bJodxUB`Uc`kI|X--#)7&hjOnx;=L~S76wVnz|Poz7yMz-C4F{V)ypA z@E?ng=i#{ve;4*XU{8LSCY}AKbzf6Re%Gg+Id8O#xV3-zVAwd-hp#!&dX(;e%D(lJ zbKB;p>c5cwJ?~ChH_@q&M3*4Sld_^9WoTVV4QYUgO#_9^fp+ej9Ico63-x z`Wc%`w||f_j(%`xz{a5`?fw!|yvO%l;!&U#8}$DPm9pjh5DOo z_cs|c${5~vPO<-wwEc_rT@Su&0Dok^$9VG>t%qiCXCpA_c`6kD)l5fjcoTb3CbXf6 zbDE#M#)~cB>;lC`HF4(h5w0(TbJ|l`9l5pa>4&Z;`_E@WT_1n?wz3sJX)arfe0e+a z;CN)fx#!I&xD1)_nT6#A-&i=O;Ci0@Vd1$22dwe_*7WhV%v=gxI*^g(?@ROgw|l() z+BrJEIPnIl{d1)JiA~G zzZQPa2946^&M`|fE(qNxd9j*vSMQkm^-IXvQ~u*}PiZ!7&1_x$!zTLwjquEZr_+rt z-QRxW%z__bBb&K@^$*wb{NOm}e-+OUWbhx_P{i~7x%@|lHhA7W(ddGI9PePve_6An z>zn90S1v3rcqV*y!P&^ax;|sgw&D6TI#3nxT^m5p! z8tn@-M$w52d(=n^+`#e{Qx<~&H?JKm;b)VS@&;&U8v!gsM>koz!lJAOm>VOH!;VDT1X)!O{@^l_)wcRM`LerC(Z&~V4@k!rI$DYLXW`Bq&ReKQFo!RH0&whbH3z&>TH==CnI zvB!#Tf0D;AcJUZ@tS+CqlrfE@lY`IM<7I58#(-(g`$V(ucj$kq#CZDT$3`MI{5x3_-7649a~nN#t`6t3;$b~TZ{jiOP7xS?0x%}74zP`?1%N7 z7e_zq)_hHRV3B>sbi+Di zp*ANsWsN}|8`co^^2fgM*tp0}&e%Q*9g(cvdCkQ*iwS=SSbH_s~_L|<+2 zgyQ6YVvRZZVcuficCIuJ?^B2K zcG+u(%kHSo-|LqD^m)d->(~Pjrd+gI-}#zaD~!6MZDu6F7~dqu_yuAV6O6&$GvzT> z=-p&9JJ|bld-8M${<(37;JREZKdxDf(js8*0^;5&;k6vryPnO=3(*JqJJh#51 zYtQh0t}*Xn_SfHBz4W9G(l>fidDt6D?Akr7gGjeIIN!7N9blFJA!E-k7~_%A%S&}8 z@)mGHuv#R)7~i?N%-Zibx(w%##H@v$tsSQ0@6{O$PcU}_c}6_Jc>40lLsTMKoExh` zE>T^#oRiXT-i;jBS3iV3dO33GDASH(SG#KGA^7;JEsic${aDM2BRm^efR9!08Q0q6 zGmXd9?e0#FYt;;6&%5Xh@8B2eU)~aL_FBj9LY5`Q(e9)Acf>md|6G3T`eZ*(%pC5g z+ef{3@!>?V^S+u`a^a0z=Ct=EXMTV4Xd|+U_>Ql>J2aPmWTVprhgO;upCtc`4Y#BC zvvv_ju+o9wwq(CF7w_N)dI~<_&Tq;0T2=@S8vAVE-@mf5qJK&X{!mwH|MZ>e5N_CO z0lVF=sZVvZQJ3n`o|%*QrGAXSzp3=&A>tqP%`U!CJ`lG*S*hQyJ^kB7#9;N)etWXb zgUL44C*hdpTYC3;<`-I2J^&sa^G*#SLrv)9437WS7^g^gG1d=|-*o`ET?gEH&&S?7 zE7Wxa{5eWpdf&%;%`Z3+o14UE_1$hCny&t@-Q(nWR{O6&|A@Va>%ZotPxNpt?Tz+FO*n5(+ z=4cB3zoT`Mq)jJslep!*?eR0>R*v(&pKrYEojg;S-)0Zv@6nX`e~15WJ3q|&;C6mE zG1(5^yk9$CCFi4PUmtxrqPl_gz9g>xkerV;U3-A>pUe0U)C~6LrHp^qFmAlVf45&J z#(i+VPK-_Vi*MeqU%%yS$6u&ls+T^!n(Wh5p4)xeNuNsS(lZTjut+IL%4DE{4kFFk$4d++1UI<((wZH;(e!h6g8UNM>@-tVG*D{0TW589cd zvf%Yi@c2}mZ~OO_6>qaHY`TmLllrcjcYopC8!oRr=+}Jf7%D)%IET*E2d5RepWC>n>bZs*TK_ET(TR%SbOO8#(VdC4ozyR^(2!?EK?epgJZZI`rjmLWqN zEZEzQEGL_|EtkSaj0=-Gd$mzDP)b5&(U=zZ+R>e_(}U&R@0NATtCM1Eh3UU(EgUOV5=-^5XGs7rO%Qyx8} zt9P_rPu$=e{CQoy`1lOIAy%TRn%paWUbkP_vBkO{8v5CGYyw5yWyI%bUX-^bJC%;-#PHJ{}{14~@LMTxSulFj3ocN!y$7$J+SB-Xd&0@Y${8*NBAA zX^HPk#?H#`A$(s)`KIDf;wo$&wHu>*WoICVdB?>w$jySy1D<8a+DiY)wsX=Lk^ktC zKJ4I~dw!yD!^J`AWgp~&sbm})gZeI?gM2CCfnTDZ(hjCf7 zR=_w_mr$I)%C#e#Sfj8#Cf{p42%d+aRkDAFcPdxFL}CReVHa|8UW9M+Mwy>P;jse-?a-oVr2D`og`uxzq^`)I*Dpc=LkVf4Ta*qOo?Y zV)=vk74E;pTS_jOjgM40@j2b_TX!8OXU<@9&ui+OG)zQ?2M;R6=TiA4{qW+OP(RfE zGqf){(LjFdGnRE@2`T#nm8GvE>uXDvapQNtOF7Mn#^AuBT0SV^DEs z%0VZa!+zkYyqKcRvXA}fDR2ha`T8@AW7k9 zA>+Zu0PM4YeNM~(_8Wk?3;*z6oxNTT%pLp6nf4RZL+=G|)_-<(VJM1j#QrgC52L^r zVphLGJ_XT6Vx;VIg+{{gV7A*wXMaF_3JhJo5A9TJa_|^*MSC5VzeX&*d{CV2P|JL- z<_vZDjVqy5r3SWFt~FdW78loD8{g~T^xKYK&E}1+?C>@|p84Rnd`oWtkFAVLXP>f% zuTJ}SgrD!AFNBDF^?UQ0CXF^G=xj=@^F5R$*6|7DwQT<@IXR#~?l*tp8w35xt&afIg4Jd(-FO{n5;P+ur8J%3WOU zvFE)Gd0+d8n4_d@njbvkos1lmha8kcUZP1sJKh67xZ*fkHW|BJTDch?X%BGG*dG8+ zF9=V#*V_CZI+p5ee=Bu;5BuO`Yk%j;r|sAds|A_8Wn5%k&h0CX`;Bt+b7D@33!P(B z_}TB_pA2v5b7F9czz^ZZK*AU%;yQD7MRRUCGToSXVz@8Zz#I_IY{xD&-e$#p?>TYYiVeSq`UWn3a7FN? zjurjh!k}--*RKhtJ#kHV{+PJ$7T*+$yteh_)OFsNc=#h@;`M7LMOOW9eD*6U6ZMx@ zCWuWgZ(hnC+K=$7@{)@%J-!|K5gxZWF23yf-HkuL|NF#;+*t!YX2ot%|BqG2YoN`x z42aK4dRKT{PDgH{GT~t#k-j_h*HBmYCL{98Vk2?~-~aqGM)a4rnd~LV>F^b;t&o4v zm{wXKIq}e+fn(8{itfJ}T|GyPxa!|`AaLA1WBacc#Bu;)%k4t4eq#JMCnf zIUT~et7zi^*8dj8obU~2&_|9U6JZnk-t?qGEnmLRhm2bLr2b? zEgL6cFIiD@nR?FrlxMUq{jq-JyYR$G8@2XbSX>Sc>nwyf?gWc;i(UV1mN6C2kJYEQVz)H4TtdBD3DDQYH z|7}_OSeq?t&tm>qMBNGNv-wK<+Z+mQJPt3 zVo$Yf-qFrJH)F?=F7u7$UHVV{+V!4>C0(UIdL+NZ+%oA0KtI!4R##eQ5 z5qogFV`5|BH;v|)j=*8_HTYk7ur+^SJ$~HamqUZciJu~`^J6V#`!87clSzX`m6HdR zyE9n%$w56=d&^m~h2|rRTITG(;FveJeDV6J3l|gb%>K2C!q%2Wi&?{q*Bcd!4|@g| z-|C45*-ut2{5O*FJ~FIu!xC2h4*D0?YcAnW7IU}*-+_C6ap%F+3p*v>Cg)o7 zc$i!S@{L=*YCHFY-koXgS?AGa_*Q^^hna65zpId+1#g1Lky2q(g?R-Y{dc283i+$(R zsr{CDx3;X1oM0Ha9Yx20iKjZThV`ZWwuYJ8QO7goyR7HA_Fr0*%PaN7Up!((!hdeF z_hQasJ&UipZI@ia-bKdaTivq4Bu}>5UaYp$y@?Pqjn=2y&Lx&f@=7?pnz*x^j(1tR z`rk-fPWw3>g^lwEHJ|E};vB0(Dyy^Loc=s7X3!en5MZzhb zsXtZ)`y+*mXUd;Q8GoVo7wyG453Ag8naLB~oSdr1En}z*Fwh=uja~ELj!Ann;pIP* zov(p!+&Qp-$H7$&4*WZ?Z)V=>;W67;OR04=uP_r0(C?(qVb|lAPj>X~mgQBS~vUebyyV<6z%f&-daPBDIs-Idr&6k)7cfF}i;ra~+ z&Wfnb4BG6w>H5Jw;Gp$#6dYB1`u1~tJ9N|hLGh|E^!sIOC6Cfh1AN(}kE!eHV7=4c zC)D2M=S+*QKAz_tua6u6K%Yadbj#q7$5P+yvfrULUIX0di-U za*go&^UW!lKGq35b;b2fr4M&rZ&W;qe%n*dx)2V!>mnsruGW$2Uia$IHhiK%lE2Tp zxjD2YjEv;>8n3B7PgeUw;U?e1o(V>xPxA*n9eXJ@dSH;r8q~Kh(GR!2%c+kX^ob(o zWyh*edW)3%3XjZah0LRs<$+HJzA4)i<&(aF;sM z>@zg2sTaqsWF7AJ>XS9;Vtdb$b))3c;kZWRJkF3ATwv!LBBnrn{}A>02CCzVPnf== z@}}LAQGQa?VIi;TTjd{8AKY=O4*e(P^8&#~-^y)>zzyh4#ys*%!yPU&eSN zv+Hqe=&Cz)53k;R&(`Nof8IUfx%vR!?6GJ&b$o6gpTQRQB0sgOdV5EFZ@sbnl<&}E zyNdWJe^$say4YvYRm9H-bDzdNdo7Ci+3zjx$8gWjem{o$@!a#X-;d`$n|prt`)mh( z_PK}1d;T%dm+|b`<+*Hdf~|h8ufVp?vvzHLxf(t~-=fo;JbJfCmBN}C9L+3h#q zwD-_WH|^a*{ltXU4tTScqr+xA3hoYhjHW8qsoKZh(lo$Y^BY-BVXh(Xr`}n|mAFpo z%nz<27Gd>S#%t1jq*JA~_b_eQ{4m*8A?Aa7yk5@L49>!;xlY%{;@s@TzyRbuWu*|#+3tjkyVt5Vkki8pU zkK{?&Kw|H4R+IkQxukgh06KvC?k)RWF1D6oKh5CkYUZX2{~~cm2hGTLsILcDzffS< zb{=dki9-eOH1yp0lWDVy*-yaycija@RBQDhumOinV(yz3#w)hY%p7oPtK;s`p6 z8S`jk{jt$kELSW7`Ft}5W**AV7(W*(hu zxom;T*T0N)dWiKD4chaW0W5+&tf%{togbOW-b&V&Wc^Oywufi?=<`0FTN|fL>|`zP zr_Yt_m1to73C@DoO6KZK;C0>Kv}f@B;i9!88@_ATbnS3q;<4@gG6%^6pE-N}2HMyP z4c|ojtBtJVAz~2+s6Tjj^`LAj+Eb!u?aW^dI{MTkynJ^r8H}>_H>0}*CzBTu7}wHo z43o;qo2_r#8H=v{%B99Li1M46*8uA# zFf@dnAUifNu6l48->Yx4h?7{&9G0^GNA+%|4(h|Vm}lF7JLwztC+>5YTh67RzM4s) z_$Q_dma?HDPtk|f(~ZRHNsMh0{%P!DM~KNf0Brk!Ik4Zu`q?TQRIdm78S~U=woG)s z$DhaAY-gU%r%bq*m}KV9uQ5_?AhTtn-iLXgDi^x8RmTs;9{HrtOF0NMH{rDL3+nHz zj*7;9ivGw)D_zs2$$EYn&$j|sJI4cUZ2;dbb6UCD5*&LtbJ1Q;z)ZdeeN&V2%?8%Q z`<44hO1W!+>9y}Vds9!+clHPdfSCyos{uYHFb)9M#lX-qr<4bPqj2wZy$zo;eRFNV z{iE0ukmPCbgL_?mCSK-+Zi{~n^RiR<*p>8Aw9bV|6Zhcs$@^=$haR20znS|mw2a(2 zP5Ys7jrRJrSid>7TEnH-*&A8ArDm>u5AB=R$eQJOEp#{ooSo~oHOrPG9Jr>=t7QH0 ze^U&FawiPy0eXH%O3Z_F4)J%{NqV#vkVP9a4D^rg3+g>B7i9B(GuW} zXpF48td+bh(6E2C&2$h{15P6vh3z@Mq(NFqA_kP zubWp;a-f0!=3`y^uravhEa2e>Ppysl6Rjjpy7HIgF2M$wF9B`aGlYL!@agL?qC;zq zih5*}HOMDz>~Fn;YhMX=P2lANHpGrqs1L03^}Xa3;#=EZh)vPf0fwqQhlvd%$AA&} z)486jkI(X6Jy4Q%_1m+QGb0^6W3(NAv3u$_F8MNX`HfR|T~bSo{w(%zDYig!lgoKd z3;4ZvvxV&HA>TxHtpCHFvSY+g44i9}{fU@}CxFo}fJrz#gg+7g96C<@(C7sP#2&T~ zgKSn576g#z3%S;U^A`WL2f?T)El~etcPy?56zrI``;xY4-@ZhANagRI=9I1FTEu(c z8!;wveiYwTPK#X?9UJX(l@_ACq()KI^%u(Ti}*&pc(b{q63L>q#c>;WqGr^!w~Vq8u2IoXc^%Bo$n z(DY*i=qh4glIQLaaVNzEMV#qpj^Y`6l8Us?dJJ+T{pihOE{VS;j*5Pi*!`HnmB8e> zPPIip)VAP~hWuQ@Twn{eZRzSuS*}y=SdQ{AGq;qRj{NOqz6vS3les(w-!a)EF@s;# zr0E4~d9VG|yQoilu+`TPKSO=9`^Vhy-tC|I);5kk?0ly-KgV}x>Yv&j*}tDmaQb%_ zSGRu}$N#nd5#!S~5%>|4lL|lKmEb45Iurbk1Cz1I`TQv7c&Ka!SGSL6g5h!CekM46 zo$<6L;aCZbKg+Kz3EN5=uFNz2R3F>We^TLirhcZvF}0t&IrB>WT*uYz=b2#nf6`C! zUMqe4f);3^>`=X%vRCQ9c*vi{v#OljuUny)b;Jkuf4B-7z?wQY1Pusv zy#v1q2&S((XLLOK%1~Wl65i|jljnAD)w%99D#v*l8r!pfbo2r}3%=$&JNB2MI-SL7 zm*cDtyWE>Yb)wIDw(cG08HW$mNw#q44t6@x9pdDHRXKZ1pp7-qxQmcGmqy>7rG05j zpn=s_|LNSStD%iHtqj!5el>nUDKr~8|3oo#x)S-JA3aQRkn)(-PL+)9i}|KG=dcWj z#}MDvNUjVIJfbF9KA-Z)lZi&)807tGd?l>2x?vg7vSmc<6go5BmIIOb@huqH#ndC& zHItv@^}9G*yB5AtYfde%g=Z|IjT-vqf$!KdE6*jfig(E7ka`sl5e#HcEGDniQEYaK zv3B>5h=1T02@;zc|6jyX_{mdP$Ue;)%Jz|)>j=N2C2p*0R2>%LRip-$# zUCXzc3(LqU_uZI1aUVWS&xFnSeRk}5cJLy%9BrZBoNUA8?L%#8@Z|}dgOrB7tYzXG z9~*Cryq;9b1PnAnhR{N=4H&O*L1Vo~Bfx3?|Y-Ptyo_tVOYempL+eV1|g z#I*);mp8WE`|zTDZPNzlBdhFdn>yI(oxJyxj}C3yL7APzNs5;$?^OS{u}@)_yk9W$ zetNIQ6Cy{&s_4+Rj{}#^woeZlcZ5nkV?*()zvqm1JAHzl*9iyq+IpH1oJUSaeSc%} z{t5C3>svj;2bl0oKv&r9e7_$YKL-4f5##=!nCsIfFTbgh_!8}p9sqwN`z>w^3|jP^ zyq0z@y(aLY)BDxEO`p8T_J5B7H^%0K?rQ=!#&K?IY0*y}`pK)e-uH#EKh8f!9nb9^ zGv%l3hx~IUxxyN+9&EaG%oOd9G>DfeHOIw{Q0A3tJHHul@W+myg-q30Hn^QW_96${ zZ~!0Gf91Q>SZy2>zL&s5o6XX%03($%&>Q=8{ty1?%Yfr|kV&r-JQ;ro+2sb+Nvy(q zH(v_P_&7A^(=orB`Y5BPQ{j;738d$1bYEDlG`^lF-LJyvzowmr5RfRFlpH~rQa;S>1Y9e-avb*9EAx^Zw?qq4)}NWQBefrjN&PSCuZIsY*6(sXV}GiW{Sja71y3aJ{s}l)ta-tkeKF|BLZqum9^`7*|4W5ih^NaY!9{0uvzC%Bc zjEi_?z(@GzRqjP!H$0ymZGJH)dfnf0qt~yR6jlDO8;y3A##`1n&@Ar>bBy6 z!?8PsAyeOt=zGaWPwo4-WZ&H}yLe^3U}7J0WEPWRuocQ8X*lnGB&8a@n_waQNk=s|fPgWbo zYn|-9bK>os9M4(irib?Y*TU#N`1w9>{-9{VzM%!teM9s4&5Q2y<_!Llv%r*Vq>y&& z$6&)fDn4%K?PN{l#fH2_MQ#IU@OTR=K5qA|P&qw$myI31FtR-PY`ngQSM~C2EdTot z6n0pztzPI~Z>|^q=()=%?A+x!yi?^lP%e+{%*E%pXMXIw$jmde;dFoNi7!55 z#}syYKVjEN8^l`rW9;(`_7@9IQ_Bau^^c2=XJF6GfX)_;HzwRnob4(vxm7B$9kj0A zyPETxOk!}FvEe_5EH-i->)F>3IF{=2ZNGIwqaf%s7Oh&U+MUm)3*T;H())Q=$&Rkfmzafth{5#`pBl;k6h!6kZ zLiG47*1q5-z9ar)!;fVzLOOG07bzjguuH^zF zlWPXo(OlEHdb#44`93nI>Ks@Tio5NIwphr7fm^L9W`lP^$(Nk=`e!=0|0}I=t($L{ z>-*{VkFe3PTl_DaZHBrBOW#nDhaBWql`p4UKGnlDvHA zCx7gfi$5`?y^CEb@jQvf&&{^T43+MwbP3U3Yrt&pE`^~iIS7Juu5OkJ3`iVpM zs9rn=TL5y^;)t>SD&W0&oUdd4@65y&=0S8tG{ctl`TyR{%fQPT@be<#JeGoo7ZOtd zZESOFl&Stp&K$AnqH>z2(#0piCE#Jx#a8HIO>#dO`0+F83n%H~ZNqrj0B(qGTmfC| zT?1V#5?#!VxjgBcyYOY+mmK#9df5MKhaMiAX+*a{4+oGB7BKdIh90^xiB=kO#u}>u zUee*r@u4_6+FZj>etUoL$0x`^jIXy4-}~(Oo@}dd6h190RtlY0JbEwi4Wf%JM-OWz z_Nx+^tESJi<5(;s<78RlWR7>MEPB^!%Av2+1zOW=KaXXkpHj}Q6P@s6xjt{ipuMD> zHKwcdgf~9MUS?p}4t!p>c^xzaJ>pvMP`NKd$YhPbmX77LR}YN~fdhY=M}86F$KCny zu3+r~zcAkkClyET&S4hovK@Iq^}F@)0bLcnH4XrSkC_bJy5s=S?fu8PRs%KZpO6 zwf8?=)2hQ>)6^q*zL2xZ^vr7HcZM}xj~t#FMC=)H-~vs~4&sp3QaP+CabD`IF4y z##FBYu5KCkeaWXB`{7RUl_XB0W8%jap7@RzqSK|~rRHTB?`?cTuFw@8utHa-4hLUP zt0M(xKd6oa>PK=NxpinQh18D`Yf1IgzE5A+!wbp7FJakxG3Hmr9bbO~_4`;;l1G#~ zx0Z2Q$Wp5r>kjZobq0*2{~|d)`y2Z7Pk#eE|Cw(bTcHP;(y<|YkM(#QAJ=xSmf@Ux z>&kNd@GJFI^g7i>IBaK)wR3KCEsEeIIG<3>{|^!PaDt`yAAE7-3=`g z?aO&-gB`oO0o+u(vaPF4^3KqvaZ+$vg&}A{?m0Z4-cgF13LRbbyyb@*ZaFlTgFnknk0_7cs>kcVj|&p zf{hDXV)yr4%gPfyAGabkyis< z@Luem_ljOwedUqT%5x*N4d+I-uOUAyvXJaD`&MA*K_=Mu47nvd8M`~b>50aO@%!I9 zhPE+BiO$Ov$AxXci7mTV|E)-2r1Nst1#{VL>rto9qvpK_+-OjKP;jo2x%Xl3kse>D zxM$Yk0J3F3xk2$2s!sU;4PW;KAq!b>6xTGa#Oj2MmJ3qp#P%ee81j1XK@dy&G3D8? zbGBm3cI1Y^)%YH69*s@~uOc7s6U=!hJREr1`--dR_mk+fE_?-_Uaz?uJJD{z_mCrd z+Oow++4JCj2ky&&wXK&-0M_V-j%=C7T0q9|8sxz+;&%f>?fa0uqkj##Kaj=7(zayD zVHqI7?H93SQ)JRo zMM5O^SDOgTZ_MO*7`ntJN}}~^}bJ1e*fnD&WZSi;qf}7Np+c(#stZF;weWD zIdf15um3|y(yk;K@gu~&{^^$c)bD$4Ft=(CB)Y-e{`<^`@4eOSrKHSv_ZhKYC3pk) zt$kP=(y-pg9R9s_4?Z{C?xAG6#Iv5#?(ZHmx4!j|k@)4CLr-8sO}xPR!0v<`d=a?1 z6gl`pjeiJAJONv-UW|?&pUmR@9FFG zN%C5qWM0qLhr{p8X_ZPA5^rq+uTBX%$Nc`x=f zd!2tdGCQ(6GAHuWOUom7o#TyeE;pl!HNE>h4`PtB_BSv_myWx(ZPnexyy?ueq#Y%Q zpEU7D@Z?qOi+$cP!6xSJh&Lmcw4)G1n8_Jx{@}ASICN5dw7>W8y%{^sn8aiID02jU zd(>+MYx%y{n-TjB<x^G_Td z?VJ(m?jip{u|tpF1V`lWei0wc7m?}oAKDvyvdXN$mtwD@8Z$vbP9- z1Z&Y^2ait80U>@Dz&G#o(c$^iy@=N`%FXn9c z(N%+Y%<*Kqd`aU~ondH$a7*XR+A%2P+>#95Oy37J7VVLQw#pY5g6IEY(21pOA6Geu z9B{lITAwpRv2#{z9&)Q}%FB{+>o+z@zRihs<4a*rM7CmZ@4u&Na3A>y3ef>Ni;ctk zJjQFi-u8!}U9lX_JMzK9PpQX32BuzQo0Izl4eC>jO?|Pue;NM5*w+FN`ZI6j{H>kl z(kLhQ#SYeyc#@0Pu6z;zFMT0k(K;sLn{Gx2z$IVEtiV5hpKTZ4&b#SG)VlNb75-b& zqW*v}v(Wgw1XeGnjQOcEBggF3s?VTJC1S>JqkX7zf8G{8nN4NCa1v$Vn*AU z|7&*|#7~kdiMe<;F90q{77Q|TbM7!;{F0$cVcqwJR{}k zI_ux`wh*&I4EmF@=PHK5@r$OOtJ?s7hkwWBZbG(9?voxmcxp~r!A5v2_`J+M!VUBv zoGO2v{`3PM>7LEtT`xE+{4N4F-TtAQ&(#_vKE&?R>&ZTyXZLA1o`yDU9aA>sk^A=r z+ZOe~%UYwa>PHv-*hW9zfL|#lLH)5~Q0b3tbG7M2R_uv3W2;4;trtC3rUTo&<3;Eh zFG4erFYLUj4o+mnx|3y}pzK!0q<#7-yU&x`^g8rS<52!y!8GG!|A*roQggp6#`az8 zQSV%t2G1G=?{ea56)$Vk25?t#vz-~nT&>*}@(YL#bQ4Q+q}q;cv12p72afvpaON6* zBAv|!ZvHIk?|sb0N8x5QIU8Jj6rXDuoKPF|M8{YKzBdV!-45L1c8r z5-0AYJi6X}?V|Os)7E0nFHE*|nZqBz|KYg5!POUHPg@dwcM4;vcKBSlmN=)y-2H(!wxLw z$(E69J3&qqx6S^NP=)_JFGms+uVS~86`#C3u=4wyCo9uU$UZF8-E$BP>ke1UQ(UrKTC11Rl{K2ewBPjeLUN8|xj#dA% zxOe;YCUezEd++jIvV+!&cySom`q(pzZKJ6Vx}`G2H``@|e=g5<$Etm5dhhn<%4A>O zfde#%PPiVR9Hm!`U5uT&}Z+N%b z{NOixhPH{8NlpT`CwX-$4OWaAu#NQ+Qzm-so-H97OpFu#G-KH2;}?O$(C45dgQ>1F z)5Cs0eqnH&wYxl=PHdXZceK|zE0zZ=?K+4%QmpLu-_4FY4=pE`*(PL8nS zEsWh_jcYIcTa3NO9y|NelIzH6cdp&8`%d~TYba=yYOj4(P%vnD&yfQh*>E^M%k>@q zf7-9If4pDr{#)(6O@S42WW;JbEh|#@-%@r^IY)=8iKpx^D&E{;RJ^gxsCa#?XYVWE zd*52ovb5Nzpm~bld=VZf-&(iu9h*cuYw1@>e198y*k5f_I5d0GaYH=7{ys0ZJo!EP zGx~(=COOEn$~l=8ys+7+`*PNR?B2b^klMay{{N2ul9inJ%v1MeYM-j)Y$H@zp{sNw z*+E5*>X~!x1%u}9xspDH*n8FtpH0<;T)j{Fw$_i{r^+g>UrKmWwH-M+t7SzA@Y8wO zuH53tm{x3&-_iXpgZ`l(OpIJ%_G;OV++N9Go$-?!J!#j zAGteE8I#7*`k!~(aRqI}MQR*^ljN^^83S}H7KS$W*tCwAflJX-zUhrN;{zOScR2s0 z+h#p>E7u0izKE^$#h%F7TpOVKmFUB%a8)0Uk{i!nkF;A^NS+VcJgtm3-!9|E1umeR z=1=R<%|+zSxyGP*|1hz7-N30HoV=g-sCxb*V@(VbCy+Y#`c5&LZlCq-J@7tYe44&2 z{Xp&A>LvffheSvHLH4P=2CT}hoc2`#!#EB9!sj^nS7X}(Oz>U#UN~bBm`FAzc0}^P zJQuDGjTwe3dN2Mk!-)k<>Nt{BO7T1R@K5-_N$J=nT6*rdTrRX<3ZFv+a|6{iBH8h6n5UWS(i=Uye>>QvN#T)!||O zU={D0Yr$pjq(S+ec6hPT29tE6Krwfp7~I#EH)sNX#n!3+R%BQg{3SAx>aL$g%o{OQ z%8jnN2f6kSrA04Dwtf9nbWm~|STmM(O(Cy1x%kU{_s%SM%bOSc5o;mJS~1C;sBZ&@ zi#mLbp=i{bH^@5Dd3E!4RC^BVe1%;rJ%`21_8rV!c%sCtxK!^aLyx{UidaG?&UX+$ z@pfXl`s`OV1Qgzv9mc=Y8~9K9U1dDMSheo- zUf<@u_j0@4e)Xsb=ODyq(x>gq`6rX1$c9n?(C7x2Xrx^RE_@)=QIlgp!8t)Rjf?eX@fsu1wMLu}# zk9~(ebRN8XVb3UX(d-h9%ZlOUP6UCkWZxH==MXxZ#{5nmu@z^B;*JeIKUQJ-&mEXm zRa)ak4#fT-oF8ESL(R)ZwEv3Ack@>lch7<*1i&B?)9?zR8_6AO%u%dRylYR)w_ z_MdxUMa>OHh4II>MWLg&FAA?fKT`}LHs*m{m&q@Eug*w5%ABUXSNHQ7{Hmr-j@*LX z2U?Z=4(*VGVf`#*EWwGmqR7#s(r5D(<7eAThK9V+JHKXb?Pbjl?5d7B| zP0I!)_-h^>K}Jh$v#P!{(m-1p^CwMm!UMC=f443Qjc&OBdY@f?^9?^V$#HG5AM9%8 z>d|ivZ8NRXf&jTX{H5f_`R-Tp{gvh%&TgG3n{`dof`xCByQ%--O&i&JeOx(|l&7_o zcEk7K%l-qp8GGQK#ZIYpPJCJ1f2$FdzSgKc?c`=WMn6$PDvoKt)1}6QV5yz^Egoha zXY?(N2ge$5YhYY z>-{s(cCD-MxR$u?Ri1TFCwrmt{FvyQ{fTot;^b1 z5j$a@4Jq0KFAG8tZN8*Bwq!WIST_%VTbE6%>6i2?!2|j>;o@X}!;DvBYVmYmU~G&o z3RBMFeRxD&E^l^uT#?SqqpXj(ho3Nh(V0xHst>+$Y4NSMY%!ppCN|G6e2o|b%Bqjl zeW~geU2x+0hxwFjoUUB1vlJyu$u9@4oRrJ=*fz#obakWRe8v!B-ZYoWBPIE!mS@|^ zTX+;*Rko2s8C?H#%g-OBU%|$8q>jzB^%>2pmw7#k+!;1nw8rP`0QcQ`WVgJKx`z8X zEVI*3TUNAlK+OqNXk6{|N9Qw~0`r;6N?n*|I6nTSHQ-faF}`j3hOgo=`6>b%$wi1g zNAgV#Ja{cMW-W5f?bx&=OSN+@s^Zr?tS#AF&!2`Z8X2b^c|hyX_i-aqk6iT}YgBzv zTh@$6A6{20`^c%X)=1n41VRyRq?s$9?Fiw}KP+m`{7Y zW#`Z~>8_%EVPsBMMsxe!%X8bOOTG4$b+y_^#)G)e{?1jn902wjw}nhC`@3XJ7q`Rd z>4Th?NA6L{hmO1^TyklPDF3)vafuA7)`CXVE%zXE8a3j)A*w zt}blMjAwsm2zeoOK3rSQNgojFo;47ZZll-^@g%K#jbn(lmkr+Z+3PnuC>dXCH%vc~ zb>|MShS$;07wDSSfqMG761|_=)W0t6Tkp%gL#_nw+Z8s7Nh10c}6NoHks2(70;qN-NE{ zbl?W%QT8>-UgF}+Cfd)X?fT?;Q(uG|$Skk*pkEp0Bl)hLA$}%V9)Id%NgwsSRgX>tFJHA?tqJG*7nLMwfXkY4g5!0KTcR7UhnfC4Z>=k;(@RmN1eUmXq62YqgnoA=W82^-Ed*@fx3UG_Kw& zK4P)H1A4|!G*0WuLar;NUTcD{BSY=YF)D(*&nRTyKDp7Y>9!1Xsjo1t)cwY#{kALx z9*MrYw9$_YB-$umA^MH3z&gx|MSuhJah~cBEpXSrH3pq!{D;Y^%MM1s8sYsa+~_fSvKTY%E+(|m39EPgxYt%JCh&!x?<6IukDB4$3Elj zk^_;uqU={jZl5SPtF6XjU<`aqnL8gc{4xW(F|b$sQ9#cqdmS-71DOVSC9vV}Uc3`{ zMmWo?Li>-pfhV>YY*8oW$qCq{kP}Y#?WV?upY)l-kCYQZK6CcG+Vj?^I3n<>l{pME z7QtCK>By(Ua-SQQE&s10f9C{e(WhQ}zi^i1&){RkGS+i19^;N*ysHU1v~FX-##iwb z@viIhTjaxw3WOQh}E$jLh6*hJ*l5FL#B+nszOwj?(s9%Ve{xj=K=ga-yT3_+dU>i~IA{2#>^ z&iZ10C&;J7*;GwB+qs+A##G-EhW0>~e|;;C%}@x-|YJjI+>vMxHE{UCgtVWc-rO4W?ZAc|7Z7uZ{gJd7_j*Vjj;z z?la|QqVKbLwjCRvU5-3RJIL`ei)V)WEMMRH%V+XT_+ytV;8~_oUc|F*<>goZidEmV z@~J#4bf3*6cNKP_Je~n7r(7`9Rmro7JcF(|&&~;THSlaK&r;Wrt7kE%N*s?WwJW6R)9JXcx% zu%Ez%jmA<)9%6G@RhL12=I6lWWjrgoW2t?AG502U$IMBFou63wzjd~K0Gpg!ws`Z> zu0qb6P}ySglX<36mOOSU^C-^@>MrEJ-Yb8ZQD}4(l3&-vR{eo(PNy6>j?H_g+vQZ3 z+s~8z3eXmLeN+3TavrKXd9tol?q%r&}f_!M$3_T3tHa*X3= z6r3`~h156w4E2qK>mtepg!^X~SjoCh8)L}m(mWM?h&;>CtCMX4zf;;=LQb+Iy%8=4 zkgcpR`4dG;z<1A=`2H%RD?~fBnwKw;AC5UUxk{JS+?c#qZcJmtsdZUla>`oBle3}S ztPN~Gd#tPM{ao?2`u`>N7N^LiT2DpLH=~t(%JivF@$9V!78NR z(e1yx9NoC%h~ zJ#2M#X&XXaVe%{1^K0k1;`>9YlkYs^=M)&^=?ef`(;`prq?+jm62`cxsHvxzK);1iptJW`xQH=$DaZ`Rl2t1zOKD z#>Ra*_xi7Q8T=nNjDNy|3m%Z2Jy6h+QB~Fk{r>EM?nMUoRs77fF<)5AwK6UH3k_*g zztHkR(Ixcdk23W<6W$tuQvTBpG~O41u3*Ez3LUnAd%F+Cyo1)e zYe02OP4=Pwt|etgps1jJCS~9+cK?I?KS%#d3s$Kf{nuE|8HU$D$wAxRekORy-{8iD z)N@W%J^O8c&OV4e`~*9V)rFb;--VZ+C*h^%=hJrmIQjxFw98F&`$)N5{sTMvc|QMv zh5nzTZ-9m1V#9;=taV>Rj>+AOTV;NCKk&b|7(5}DV-hxc?$@`113b{KHwg!Q?|%E! z0L zUPnA`m~%;e_~15UtFX9Ahbxktd<|!bBb(KKfwc)v%V+&&-LPHIA@*^7^iieSsL_p_bC`}nRpd7hcR`=Y*kiu~7)J2Diy z_(btywS5)7+mSH25ty_vj@0q%zrKk!9wqpu3Iw^{fmBD6E)^( zG>>N)qi;gV2%C-FG$^WXA(J7->pzqzbb^0fP$Gh8!&!MpCWcy|sy z8FT!Cno-t*z*(F_wy84SKaMju9>+dJdpq&hkYl~$v8_(t2hHb~L|=G6fGl30EMu~t z_qv|Kd98Xj#g1*e>M7x$hy?XB~ z^ueZec0CdQ*vzIT=KfN(OaFR+<;ecEtL-!NX%o+t!%gMG^d&OY^&Q*;`IM3s-xR-P}fl z@GqSonP6=S&s@A2ne&LV1@S+PBCb8n_CZyGPprpz`V)vc9+G{oW;B&$uVqG)+=Hw=50QRHY*aG1!`3Ik^m2GBnQ>gWdn~065 z^J5PYpTqB!xQy#QY#`!y#2LkSb?X6N)MhFjIzkRs^RZ#s=ZtnCV8=WM$s<5)n}^tE$3_&k;gA(OOdmvt zbgm~k?T9r~&YtX`d?(%Dgw~T=_8Dv`P9ILU9qD;0EL@)Q17eL>mw&N#3nRPSw+0+n_tY?wIamOv~9jQvbXC7uaK~ zoEB*$m&Cea_CGVe#+kXCr3jB%!SA-bXozznQ^z{w^&UR)#dPA-N3(~(Vh@3jeQ+7@ z*vu$#JFzVXiECyp+v7RtiF}IjG<&gwt;Uba|14m%d94`St7v! z>}N;vjQG36pbUMAZ&rp9Z+WN2+WBtt!IpUL#>T-Hvsp7&;D41&j{Gw;3mj@QclTzp zue6-AwhlrE#J}nso5S1Zhit$0FQE_Z--BkE*8KJ@4lVD2KfSBC8)EnKSv$%t6{e1X zbmLO{`K6T=*ygS|Z^9$18u`AbDin`-vNLCy*~>+jH@4oNFS>yaQKvD;XI1L8G8c1Z zsq9nuk|tD`*775amz;&*>11%!AIt`C`#*)AfuC&`dD|Qu&IX4k2fxPru$MFFuQt~A zoW=eE@UGOjcZF5-t9;pubT)!@mNA#y%fas-T(vg=o?Eo5d*!s+cQAkNAbavQf_MF% zNkPjp<|_ZeA^Ludz9+m>f~&Es_IrGphwd_!uM2pG68{f#?;amzb?yH@&rE=4CLjU{ zgaEk^FUf#yjYOnJ%OofUsJ2Gb*3(l0_A*JdEea}DO-QUwi0v_o;?Z*oXxo!aYinz$ znN~`GUZS==-Y-3E4Pb2owG}In@s{8Fv-dp7B*dP6zpwLpeSd$2UMa`_D*e9tW(Bvv}Z;x5M7&`syFw~;r0mF%+kpBq0$ zz6E~op*;t_(R>DHR%y$7jJe`FbQiHcZdPgNE;pe$(wP4>!;bYH&XC0DPq1ii;6H0y z!C&*8u9-XXPc7IHn6YC0UkA%hVXQvQV1vjyh#mIjz-)6isTr7LC*G#IOPqxEbd6VM zLYtQ`|L5a#;M}P0e5iak)JzO~Sv}=hb1R>qZ^?lgch6GBzs5gfI%nvNDY=8}m{uSE zZvPDI)xkjBT=7iseW^2Z#be+*46VqHeaXhViE|gP(mZEJ)-!gM>!8f@foxOe&7zjv zYmMDH2VS{?b+w%JwTyLE$$C4VJS$5%XBsp%#B}}<+hgr;J@Dz8A4L~+kRy5>ZHLZ_ zatB+eZW-gt;wP=>l;A4V z990qP1`ny((~xlBE894yVQjqU0lx+>{uz$grg9@!0&k>;`bRSJOC^I<1K%R{nHYWQ zcTBYY17kbTzGHHCtlneuGsw;?8BBJx{m2)}Wwrblt~q0}UNKIz(N6su%ByT>w~fWo zZ_O=Z@ANt>?Nxsd`IvHkJF=^8oeHl2zru}I_-yWDieZLN6a%kh&=|BGW3Br-IB}E_ z{|uyH--nEj9lG?dK1{^ADfjMSWD9@)(41EP(9&7`4Q`?Vc-LH8p3s;cknUQGF2l2Q z{i1;V&i)^c=QX~uXhvHE{@*8Geb8y!1g|RL|Kd5$+SQDsnendT{4Vmv%2g-w&3vu$ zY|g+?b2;%%P9g_@$brV?$J-X@=$p0dhmLO-{t#z!WgGrxup{(NMn^d2B)sT^0l|`<%WcT_M*pE# ztuI3UH*x_G4>ax2HqQKc*b&Sb-V@FpI65oz!%4vM2>!6H05IJ~sX>S~7M!A#x2p{Z5;F8ro;M&ml=1p79S9)~p}!uCn`e zGxc@O*p<%B`>c(`Rq)x&^R2`}Rznlme3GHQ@&q~U+54#XA=zA@{VBE$)%%-~kFD=l zb7b%cK7F6$(aXx=t3NaIn@;1aSr3wx3Yni`$$r)j{bYrc*Y*Ip_&k?B(8X`dvN@5k zQJZ&56c3iNYfF9;4rJH%+wkk%Ouf--LiDAz<4qDRm|Qa>?0$>M0j)B%qPLW6Y3Q!T z(%ew}8mmJTJNCI>R`ag=d=yxt2`+C+d`BI8zS7 zqZM1Y9NZzt9)f4CEJ1c}ffrOlm+G^U_l5_j*2-@6d0T~{;l->C$?3`)wS1A}ig2dZ zi{^rPI8@H~)kb=K_e96Et7k(vhu5eabw~Dv3|7FiDBoU2^bU`^-@F3k?|&vQ;5|F8 z);a+PD+9nJoMNY^9nL4Q4~CE@QvQCk{}>qHS?REhwV(VA-Vr-kzNpqwYU+%R&)(2Fm>i>3sJuVYBhyo2}KkSW@Ej*M^PyUiYGWBZR3an5|NjY$~X z8vu{!@l649w)L&gk7s|Jfd1jJcZ3X1+xO1uilJX9uE@8?^f(@O4?5U|tsbj>KlS$D zmg|r?Q?@a479?FyH#lyxI=XvyIkwKl&r9AeLtd3^`tFyP)8{h!t^|hj(S6W+uq9}| z+xPx6`fYw>=1tRQO}}ZztYhfRmr2Kk?gs-i>*h9X$vtodZIj$4`8 zlbH+k^&BxguN0M+v^ZV_eSd*u?PA5fq6@zT4EtE0@bp9t?H-tB>mx5lN1bra%%}!QFMk&gVQrV5zNWlRpG2X7RX((@7UnV1xE)vg&!}oC$~A^ zBpzg43;z8Rtj%9}c1mbN@b7>Re2e$$L+@XiTuxlwa392Ba^~HM{5#+2xw($ov$;A0 zVD!B7++1bcYpgY=7_MK#mp6mMW^|iMzPC-Vd2h4^-!FGk?9!CIZd!h+;`RlbfeGHM zaia&EsWQ#9=NTRR<>r3(#53imX?JrL%8pjZxGuzYM$WF%ONk}WUR_fKPh@O0?+tdw z(D%51dcfnZO4&;&vrxVRql02Q?E!AJqd1YXX@_$ThL7r;jdaGGm(~w-sef!xF~0vk z56K?lA;eU7HUs-zd$^zI)6TH{Y83xzhBuh?0nLif_;;7@Aa3s-`WuZC7suS!^rp&_cZ#u1k_^Zn zV-@bRHk1uWM;9H{-ycG6w{zjpZ}m@+;dv*XBzbQx`>?mnzP}rt&d1{$RW^PpeJ%y} zv)Z?O+k)^0DX8+BL*c5jy7%J+p!o^1ec=3Gt_Yrn_v-W}e` z@q8M_N=)#O`G+{2jFYKt$JD;4*N?lyz9U` zo7zezm6$5`Rkj-0kHgK1L4b>!78+_g-$U zoLan4d_sIjx~$8Zkd1}4ZTN=xMa(H)cmzK4N&KdL@5v@OtF-SuYZL4Za@K(Mw4e7; z$9YV)d#7{3xWH!F2$}oR$MXI$U$N>*AFRC~m2c@(r%ZX3wx95^0d#~N?BV1rv;I`s zACN&euf9RCDXguVC6jta7eMU&5{Y@=ghwbp}+Yi}LNk2&*srf}quhf%h-#~ABk z@ZBJpJjG)Qup`9a6UEGhd?=y90Dg4%HS5yiJ$DH2;uqKBi|~4pW#P+SP<$%K=u+?| z^Lrz0OMcfJ#Fzuq*5JZ3Rks}a_^*rLHK$zKq2Kh$y*=I#v$?O z#XB97M^f@=4=~4m*pTQC&Wy{BvI5)XM=4+LPBdj#Z73N)A8M2p#z_9LCwEks7(7F7MIURZYG>_>E-rvBRN$20Q*JNiROVdK&ZSls7M}g}r}ZfMFnbU&5Be>*e!a`xtT@6LZKdxM+qCCHTUv)6 zI9UxXtw(nzR{D@=VIny2pOw?kXxeYOc$oI{fe9aNay4|knlp=Pw^{9eMf2hwqA$)i z*nPc3xgD(S$BzG!hAQcZ{yCtD!U64!?(Yi9`RgYr9NY>H=!dhShmvuh*te4EOh^$@E9ASLIsp=TCFv zv~fSY)(U(lM9#hNIPP;?ozb?8^$}uB5!Oeja7u??|LfH6l&rzL z$6RMe`|n$;+MoN$)v>uwLS_8Db6I855M&2dD&aE(aZ}nRb2G> z@4yy&)yjRbSDnN<{1T!&0wRpO;qUFf{eykR+UT%TYVR+0M(X{H(dy}`@8TP`hh-nh zcQZKO-ID7NkLaN%tFH7I_=1T$q@BbX{U+|PlHdM&^;dwcOY-s|#_RF>JA4=OUB|b| zIpZduHq_Sj#4Y%3-8ix>Y%>pKtgYC2Kyh@jqP#*r6?_y2SaE$(o^$<4d4+tO3~q92 z9*&nZFgB#Mdy8%N3c=eP9T6wFhO@``s^RhZ@#UQ3n-|5FM*DrhFMhPx4IkRXKD>JO zsz=wjs~%OHt#pLdKaW1DF%^8XAn(`M2F2S|NAxe5!o>~{zz*QYsT-Io(_%O8897$T zU`8hYFYI^74(azah$n}-&H3%Pbo}ronoH%o4iT5^wngE=)sp}4<;4QBPoCHDx1wSC zOwT7H`2+oEWS-~DfrZy(LZ?Ot%Bq`$-;`L5WIOzH`b+Buj|_17G?aNGvKz{&Ul}YovxoLE+*HN+es+(O2w|sL#-|7V zXk!0&AUkkATK_{KaFLCEvf62jJQz*RFCW)7vBT|{_n^Z$8u$`CsetlVr^?Gu@EUhL z3WqJ|K%#q(J&*Yz=6q!CRL#9FYfBes2Idz0guYB3#$UJ`zgYO)%;xW4`)UUN+E0xx zNx9?R6Qf41?qqoFoT-~WfQ|4p)9274dGVlPLZV_&apl%>4CJUib-}<0krPZ`y9=0v~}N1LgDCAzt<`WAn0fe+aR! z#vif`o)1rbC?$j5E*aFn->2yzn`cOT^}0!%gJ%!wg-2-p>P)=#cX&fNeR|;CZ==tR zuqo#pZ&M~G+e6;6(}!%z-=7jNyxG__p>5ep#sB0-M7AW4lJy%Fz-Q9^hP$z=h>i_z z@Byk$!BtTcuevSuZZUBH-Tc-a!HSg%JBz-d@+G0i?+vBu6w-!#G3@2o$ai&Uf9_4? zxsd(#8%O;ZBMVo->FDy{K{CUGKXuJ|RNn>;?4^FY>2MkTc2XM8El%UPG0Ss*Mw{w? zAG(_Qg;yH8vD#7l9(82r1|KGdvz>LijNAYv<@s&JFU7jFPxxhrXaV1~p6Q)|5&Y`A z*a^hhPdi!boocg!?^S9WUfRQN=jTRd?Y!zG;?Yud{I*qpFJ;op!hbriPA^NID3wc( z|N0x_(%mu2={NdLt?Tg9H^XPdi~8WvTI0t46Fl+EX4aR{OQpZCCc2SV`U3DS^nBS> zn%SR1=yDzCE5-1+f{pl+iGNs3{KH0anR-()E*8IR{&0CB2G7M8mJGdYeWS{e-clid zL1+arCTp*P|7x5h(d$&(hL6y8Gq@6bA>dOi-ZpS=^-ZfIYhP1&#Wr|15r@PWuzM-|U98d%=(p>=L;*tI& zd-MJ!$R^MSHp0kdA?)MWWPtCucH*=ndumI#CwBq4K4dTCZbcKXb_VmP7zx#VvEsw6 zUcg(Zvg-Fhk!*K4@kZ($ebnS+iu9#y#k;W;_hl0ILs{hy>7xzlFzwWn9pDvgI;tz1 zgW^QqcFny6!}Z}&?cb&>_L&~$`+jUM+rB5gggT5#&j+yy3zlWh=G+BtU_}S}dL{Oo z%bncJPdYO*87uLv;kwF=&AIIrPU6|*V43J^1M@5S>jlm&icWP8rFiWYV%N#(hrR3g zyPy1g?0!7b2wNO@jsoKs$%DIb53!{t_T1#3jwqI4^4r*$xewj9;~6^-YxvzJs?bGy@4cgoa`F!$Wo+>I&!BH#wh@mxP6t6hOY!PtIIP+u&G_;KNjBLmr2ED`||wJ;5d94 z+H?Fk9h>WRJ^k#57e2#B^?i8#9I5i*Zr@Wr0A6;iMph}Tl&lhn@5e`S3;N~7ynmTk z3g~y`%fx6!ksDqn{zCAIj|rAs#-#6l;MvCcAL!wBm$Q0}U$F5@dZ+j$CueS+M-0;m zl;4EEqJ#R)#9c5S7p+S9E%4jkUbj2Ht@fqbfn_&^?kgeQTlK|f7<1xD`Z$*{ZFP{f zooMnGoK>5E?W5PpH}`}2vH0n>SIwjNTr)OFV(-y;#=!#>dmrQ;lvGSMx>JmHe;jmn zoCJKw$%&b>kzJ$7rl}i;?ty$QOn#yp(4jf!<@L(<-7vNJX4XOuvNf?x-aAeQIg}EP z^6t;a58Ukzgg(P}bliY5Tkt!{4};%N28mszZ^aWV`n=PzIMYcMlkc<-zHsswum}#x zsn1i_je3=5O;v@8K8YSOyV!u7mk7FyWwRfwhbAX^_eAlaENEy z2tDi%psPa*QInHmQJ(gW>F_n}AC1sL6Lhi9_ylG|ranHn<$3xn*jql(z_-nR$i43; zaOVJPs~7uW(Fcjk41cWShFybOc9A2Z9J;)VHC1+nvthxKz(BLLk4$NP)k$1~T~e}D zCbFhzO8bIc6C>?8Z+*U;y8wNk^01Fayj^q@gC__^pC4$?LY^*D?qk}{(tGwn){%{s z^)^^pu3CCIbDi~BXTxTlvu6y%gVnXN#{G3ExCZxHUyS_fSElVR(g$N`p243z4WFX&fM^fY{-Uw6hd{%jh{`nsW4fH_1lga)=T9xh-z#}k zvfpDaGRjywCHiEa=vDs9vEKhQn%o3Tp+%fELDvi|5?r@0yx6_x%)a2H(*7?`GW@$Q zcmlsCmZ~ggbBOiy3~bZfZ41wE+bRFh!fV{Fg?GA7E>zr4`)?|`PGlT?!HK1w`OY+V zYW4-gDO*d(jI%E|-rQNxLHY1EwoO&e5w+b8{|Iexr+RLnv_25HdJ{PCrnKaSHgMk6 zb$O;dhAp|mPbF(i_|e?2V(r?LF+|0A~T?;*RPs&rXeN z4!>uW#;N0vOJ&pN*xxT${lgc%|t6Dg?n-z=biA@k;y#)@O_o7B!|6y|J?9W_WuP1e$ZK?L zgn`FP*$Mh+%ZDfSQf#0fyQqg85kihoee5E$)Q>MSx>5bMHix0LR6h1vB1Sja0N)FI z310!;A5l4_gV3_cusW0wV2k=?+XPrSSO zr9a8+EAcsDqgl%OK!(4dxRvt+$g$30$Jv?-J&cg`RR;n6c6+augZ&G;JN1@tyjBf##GTz*yjE_vRVngE@U@9XRl-k+3%m5kh)jqT;O2e`RX4y*Ft`s zV)VTA0k2ihc)VL}S#mG7PT`%NeU7u%Dzl)%DU+TV zni|*)FNmuxWDD6D;y>SK+sP`oWiFp~e3?g6W!_wD%j`if7~RgpsWQ)g#Fkl)-*9x9 zc&be2Ikrq?lgY&rUy?7~+`x(>!*_-)_i{_By`PLMSK-4~ zYRgT(Kh<8($Z}`-@O{XZJ9cBLy=O<3`+yJM2W`1Z@hu7L?d>SD))1N3(*@$M>7Wy=WcH{qor5e0+DFV#|Hv!(*58@xAWkRKL-&%lY_T zaFQ*DA7xDVe0;w-*OvR;{ISdB`uHof<-YpCvCEz4amMvGeP%VevK1+aLV-CBMGf zYtJ3Ky=Q&+a%{QalCjG@?!!03mMcAD>~h^ceA8{YUtTbFxgYuPW!rN5SJ`pgg5I1y z7RQHgnk{$u<72mXzYpJ3TkZz~W8>u>A3pM42rq3P8oRx(`|yzmL*;(<-q`Kk;=^}> zEmyF9?DlT(;hSX3U2w|S?S09IZ=x+1xMuA3KIg-iY0H&;Y3y>J^5Mfyu5o0aGIqHt zA3pphD)-X+@PkSpKJs0t+{*W9?;}2Z__S4S_JXndUEsrqk5%RRXO4}Rhz}pJ(<=8c zaiyd8SkZlf4<9xOmAmYdW0#xm!-p>gd9GA4OY9V9k`rXvo#+0^hqe^ED1BTp83bdSc)|&PwsrcTk8EInNc8`MVH{8A zjtI@&%O^O8|BQY)quOcv;vri{_e7OZ=K<;ncY^gz?2KM#c~Uxs!`UL)1{6akdhl2) z(g*A_CsJP#OnQemju=NT^-Q^O!{ye)tIc@c7+Drw-j-!New*3wYtj5}#_Q9n=svir zp=vU;YTEhR$abn}XF79U1`i*rZc#O~o~m2@xg}-})5lW(xnQz-%^1(u1j&DqA9;DM zvvwkQx3oPya@CoZR>12N;qPK_vzoP1m|Cws+y{{11^YhYmg|oa7r39CNR89mV$TPX zv8Myc`rihUAoWZyNvtfiu#S0dX52B_aVH($UQvy0@7J`aa@<8=)@|Mb3r`um+Fy&$ zr=H!#87aa2Rtn~9{;%6JyG=G=?bA2UGJG-quemAuhmU)i7Qb4fVelrJyac}O-8lR_ zBlVoT!>0YlRDaq0_kKG}e@}nGp0mFMKJB$zn#a~07fqiE-UQpN=cV8uI)60Mrkx(6 z=<{~rssS8`-ZbV(|D9T2`&SCk!yuVtQ{r+hC&^Ff5+j$n|_00b>wCAlI9`iGt%T{|k z@axvkbrwCr`_Va~b=KQI!}IJ^d)FbscV%~Re|+rQOR>FW*PVuqOT4}xpGW)LlKT|z z56|i>#zxW`gdY=+r5Jqns$?HFzb`0%d8)kDbACbax%RoC`&{a+|9R?OdF%nIn@?Ho zN4oDZOKUrI*1CrJ2kEc#=J0)5>*Ne+Eu_9^TC}XaPu~Tl*z{j8>UV9 z5$rx|V<3(wzBD+}A0Zz=Woit*4Hy4FTw~##8OuM>)@UByp!HGP(G`LZ)z0P4nQ_ij z#l-IxZ-|)qYHvgBK)BFJ+++57&Sz{PZa0kG3woDt|4L{aUQybWbFHkL*V?bgG&?5e_5K4-AV8W4>Ll~ z<;n)tel0onSG!Y$^8(=N=e{=g@2&|KdaVA$lsN0-jO&*<$Z=8Ei zuo=etp^?W~C*M7K^D~Dc^X{uVNB20mZFR5Rc!&HeE50&r0Gev6b0@aSXWPoY{v5fy zeVi#?_bz0*2G;*J+R>U4F5eEhn|oR7{ye77-LJsAm)d)qYhzs@_G0ae4eW{gu5j9V z=9>Hw;Mi%qiL&^Tpd;%SmanH9nJqnU^D)uT5=%p?wZHUnZxS}b`}O6dO{jna?Wqp$b9_b2?vTdMrAMZjG+R(t(C?Z1pubwh4A6WiiN z^CxlE@LS%j5c93`!OKqz-RGU-O#LW%;qqDk-f1285#NwlHV*$$$oRApp-FsC;{P(f zm+@UlEKi}6bS8D56P-j})ezqyzQ^%BuHl^JPRjO4zeYw5+B=DK2T@OI9V@?qe`Y@w zHza?)IU__lv!<6a*P&gFRpIW&s-EAJwTdP*Hqk*=P07Htn#e$se4Xj>QyS|K|6m;{ z2YGtGTwcWaF2x#WbSOvi`}KXQXp(-5=}+fLUWAtz8+_BMflBt<3}g-)%WLk<#J&hG zK=#Q`-KpM?PC)nU*qDbHd)G~`b4Gd3gtq_s3E%gh*!F9_V~sP7kG{5IR$KL+S#9+n z4kl}E7|)sKU@~@QFj-s6=L)&JLQ zxzJy1yD`d!|GKd%CV1Yp?F(Ly{=N5nSR(_q@EilrUj=nbsFm*8>{M6mRKf# z{bcspdKSN7@H=lHv){HEI%waiZ1|Av)3z6)J=*!R+M`|M9Mdo5GGF)G^YJ%tpjKrL zr(l1#u}XcF{PsUgosK{J1RO@X9zVJ9>E(sre4~Z;2Lu20hWd=VN8eE0miHQ~9xuAh zz`W_)?N{@xE3~o6{MSAuJSbi;Vsdl_(P48AM>jeTD*v5)C*GM>z6ve0dx@FAKlYC$JW=}R;T9H^^m7ix~k^s1^%bYb7en=cXSNPcmKuv z5IUB|=fiH`CZ;}rqkEWmpu{Tf12k}_bhyy-X>h-AOI0Q^^2Gm6!T&o8|2*28&qwW= zalAY{4$WD8?ffpY{`TEc75+VK^x8HJJ@3Dz%HWT>YA1_07(?5PvAQ;Xc9=bQo#+C; zjA%A4JMxf6w@3)ptj*u@@ z^J&`Pnc!bvJFhGJr0Ar$tNA6{kKP0SS(0NkH=AA)jTU!>_!jN;1+z<4HwG=KoML|u z24|ROwFlvKe*qSBHQsfF{+oTItFXT!W;|AbkbWzLUu>iMr5t3u=$R6jLa+F47q{e&$WDus`$ z-{08(Eqq)27I$g?+4Ns_e1f%)GxH&Q6+RBVl;0_gj=qlf9fO0fXJ$9qwQ^Buo9113 z@Eqs%iJ47R-sw4QqCd?|m}lZ6p@~gZ%lG9N9LH+s4@~4-9&tjqdy|@~ZaeRMcs+c9 zXLZ|W8eUqGy_DR(+B2Ldz1`;}!zVOVHMpPuhUPbOYEzZ!7tG1IP<`LF{k){1O`a|P z^?At{{blkyG_9$s?)T>>H4ZPU$>8Nm^)sFNGc1h?PQ%wvwC}?+sY98%z{FPd6`G>| z77o)+&3VZo9!ei2FP)#v%xQvu%r~$K9&ge4Nx^s9Q|GZhEG%`CmL@~FwomACz?;=n z6{d{lYWX=!lY-0CS$n=2w}F2)eg6?Zvf7-}RAq3KXW`VdD}hU}`Y|>{!!1|e^z43hvIKi zKCNwhu_5_SBWl}kv&#((-Jxe>=DE>D%EQ%c^u=j$boI?9hYEV-Hp$(RMX4_t$=HEX z{$5{CMqV;{`Kd3+pX&_iY#LOA(F_mQ7*%HtV{D)v@d%NsSIJWV z{R!qPULBwKZ|aPd^XLqny8!-TV(w%|65d~(N4^{8x)~Y?Y%fm+D5Eij3fUKlqv#E` z+^acM?0J-!5WyHi-`lupX`=D#OVNq4;`Pi!HSiyzU%^msV$X(i@5w%|I9ZdY8XJ~x zlh?U3-!A`Va00r=`1s#~?vLxw!t2~Ju-^ratiNTW2b>4A4diYqF%gsI7qWOC~-A-lT7zp2aJ) zj_w66!IDnPtM6E9&K`K|#iF^-AY;iMmx|-i{m=1N`TU8G^5TD$zS)0mY+;+md;A)+ z?*|r!3YBlwt{(#zbEoeXc#7(24ZAfZ24>aS#~Afa&vmBg{n}Q$HKW=sht?H)M&eXr z)!c~A+1fboRnJhiQ*@)gOC~x~7H2qDm#oj5TH>@=eZ7BtqU5H)tk7%YO>7hE`momX zD!%*q)*9BirtRSRE41}FKEPWl9ko7HW-H$z${n|UllQhT2E(bM>RfX@f{c(IbR+*o8F5Sup; zjLjd&h@CbtF7|?D zlcF1-$+F`4yw~@F=!RzIO7;ENxRSG?#Gsc%yg8w%D$@>sO+r`2&~ZT}_vu_jd>VJL zJPy7ke`!o!jI()_*h9d%e^-#&HjnyACJQ+HFw#q}4=S$jXe2LiqquwEAw<3rQ_;>(f_abVi-mfnaR4ZLd4+r>Cr zksmd`nX$UAd1pI`2zK!>vZLk%TT)kq*!~W3>ihC!C|1)|vXb+xJZna#9Ky$^oP^G8 z__4UMPx`isYp|QF!=Kjt3;4uNoABrrqH^*2i7yu5n-= zj@f^PIafbDj6reD4(pY(3noYK5!RVMF7>IszUZaFEy@9=`JbY1#(IEreUkfLhptAK z4^!Uw8dLJ5-_EfY$Huo0tMHA_CEjju5HP-b;kq&n*V_zC%K0}9S{RN~o}lxv;C!df zEvDhvr_=YDQ~I!Zq|{F=t)Ff?r^xKX{V=CyKHq)O&gcE~)sWVgKcA~*L6Y38w+z55_~lJl6A*-{<)WX=i>VLyeZ3$ax?4PE~HfamY>?5uGp6{F^%; zuwRPr`2FPsy;dj4Igu+A8!;ntDRYzmqNM@kkFw{rcNv@hboTh{h&zS6JglS5spnn^ zJcIRp4KkG0x@0`%@99Mj`jlt`ALSpR4b#UG+sB2eK16Tb_$W;u_yx2!{5~f5eem4x z<6`2+)ra=dZ2B;57TGqJ(`GgD>QTW(egMBM@fLRq@(j90XX>4vc_&-AALf~DlN?CE zE}w<|kCrL@b2usaIU*Su+M}Gk_ekq%Z^_tt$5v$WJ4fjqjKRu8UmIH{8YCy1KS%zV zPQ}G!!CRZrtu&va)nafWynuJ3hwTR+6Tn3`xM-ll!E*q;u^WD(_Jw=! zoE&a%SWg;k%D^Wu86Uuj+$$ACmkS{CyU?%`f9D$IKA1v2xQw>x(3*Gy`x5@@?D(EH zS%1)(WM0uY+|>0}Rn8^tIg6C`@3B42REtmg#2 zxih1?arfEY8Qo9!1{=@rZrsCNbxnNh&bnLp{@K~w)tmIk*c<%H+2Tbl&#`V&{sqw# zdrO(}&1oO60VZ^&wY|ZH+~ILw#5g}rZnlqgymJjcv8D`z&-DC|8o%~DjsIAY#y_Fs z-MwzxX3o@^@uS1|WA@>BMDjS}-OgC!!aKe`#eCd7)oD`>x?P;}!p5*tW$u5#=3jk_ zat+Xhsnb| z8*lD9J9^nTWPu=a5{PVlZ?U;c_w8v;@~zJYi7AubYUcg_N=fNn9p7i3?_Fm-G*aX%Xo4~aA4aFv(XygTAFK2O1{L94F zVI#U-HX`?{oGoH6I&ksu+14}PF=zhcGbV~p&xnsFR-ylGeEe@%pVoEQkpFfHXFh;w z2C+BtJuKw6Y}N4C(h_{*i{EuS7T*-?sHt5zP<*=1vraEPgZx~@$eQYJsQ&AtW1oHK;xWGhx&aOBo^Z9aqR;9co)I?(BeayO>REo85hT)pY+RQs&$&tUJ4 zVfPL}M5HeP=nx!g>@o0g)E|4% zxRTYZUyWV-x&fF4tNIYUH7R(*;4pK@{?mGI@%zB6eH&WD24vycBK;OP+K&t_D5m|s z50d{-Ho|+hRK=lP>;l|-6t3$LpPm;@gs|P{K95TN_j4z91bq^})Y=~A=g2JXQR0pz zd{k>I`LDSX?C^NQn=b+;KS#;&WqVr0QoVui>j&UgeM(nd%3)}%y5-wT)N%Y0T zgA0tkiFe01gVg@|-~t!itN{<2>(dumoE_utAmKu^6Z$MVFtBz@|DwzaWFX=Eg}>M` z-Z@JWy7y7G5WVm4-@i6k=B45+3t9gJ6d>v`>4V5M11Iz@Qn*T@igClQWwZ< z^>)kFGc7LvRULkXI@VTw?P&wg`tbh=*ha-mMv+U@x9EEfbaDmwAr>L=S^D;ndrtX} z_!u9CFTcq%wR_ng2FtXTR&q`}z1`qd8%?|3`3+SYZ}w)1FD7WWni$K5 z-wk#u-db_Y*AZ*EZog~psS=xu{)o^L}z5 zlTR)H&MP{XCjIzl(Wdrtl?%L+Mg-rb=g2E`&ev&AUZcITjbko*OK?i#$W# z&#i4H)dy$2odv&o$=Te59R?Xp_GgpdOmv8Y&){*!v)FV}zQ^=>jqPdmuonvk)oV)C zyXA>x*ZX{`-V48>9_J22e8PO3 zNqf#IoU-SfitIh-c)P4GTz-G$22h;8^OeO928d5W?|91F?X4bFa({2=`pCH z*SVju`{pB0&K3c&>O-?S<>Xv*N^_Gx`2PIa$jiKHF=UZ#$koD^?*|KE`}JN~npjMZ#%kGK*ehk@-_7q5$0=Qmot7BOl_XlfNM)9} z8*>Hg;)&!9K$b9Nc-}u_EB6G3%zbhP$v=5$!tBzCbDOHPPt0@Y-M6}Ce%EcO|C5Ta zmERP-Q}*{7p11H{viii6nyRX6PJ49HsZCX~D-(Y=)!%38@nxuwVxH61qqQ}sopq4^ z%GI!+{GyM+Yvy(rdbY9d{tDId4UFP+Vl)!Hz=1z@|MXI=_tdZw|c9o6$`HiXYYu$0hO33S_!AESh4 z9nkTzwEs0}bgVg6zlVTXbE-SzEBQtSS=mCI$|mAiGWkx2S@Mj-Ji0ZJM*}tU9u*A5 z^7$b*s(;!yc6&WnY>Z#m_ow;ynJLaw@t?=A9S#IDus_(`fxGe?qwD%{p?-VB*JO2( z15oz99AvWST&FBBA$ppV8Qtl@e==rP?p(sXaYYl|{NO|N2DU&$|9rS|meHwE`P2HnWd_QjL zU2EFAa^4jPmyBKYzLRftTGds2?MG|oon_jiPqkIT^GHoyS2)DocC)OWJHMuO0KGiv zk(Z;mW?q*UB%c7Wt&f;7&xrpwKHY7c9oj!WdRlMz?~l1|=EyPsIVUydng76;bN|km z)875VW2VpJ#+);9%zfC%H0D0|y~cc$^9r)7euFVPoB=iSHO<-pzQdfwm@kL<+8v1Q z3=vPM^%Q6BJcMe02AC@^ew9kU7-*+eW_!uX?X} zH1C;5)n88iL(Jofn)zov4y+O8?Qvj@Fkg@HU%x||Oa8Aj_UWwn7lFM1+k=69x`k2n zhR)Sm0PGuqy*&l9;5GCy!{RCoeMF(DjcM@eee3A=Y4Do&DY{er5p+lYngc!mD0DX; zSSM!Nv0YGe<-lpc-NHDQF$XP-Wm(Pq0r5M**H6FU)O@w_9l9W7)GrGHLuAZl8zKG|wH$)RB^DM-Ay){~xx5~}C`qaY8owrOpCGXq({}$g% z$#?R(95?^goN@Wx1*e)ddcfK#(>|?1|$Mk*7kB#*Au?Mub zrIiEDp}o!bQ_2?`!ycq~kskIl?=KeDLpl@Bgmd{T{rfhJ?I%gh4eh7fdnD^gC&p)2 zwr@gSsdSeQVs9wmKl4@EjJ~A2h-3E6K0mteVxIZ!oJ>32*s|ZhZ}I}FZ}wopyOq9# zx6!cg2Ilqxo!8R6c$%k?`F%xGUUZ2WTVQ8-azFna>_bt<#z$%Il`lo#YD3?vRp%A% zeW$Go=GMdmd}ax{tG&n0Ddha*BV)(E^-Z4jj?PfXKcKS{1Lyc<1fXR?)k?xM|VJHA9aK7;14rA@#5-ITdAtqlDW*JS<3>esjZYtB9F z-0IK6_eTEV9_A{!N6+_+d|t`(y?VZP&YJ|y|WuT;Q{*9nB)_!8+4VUGBWe% zVA-4aCKWrPGd;@7j_&-V@kyLv&l5Ib>y!R0y?V+~bN({E&d7jSapi9z#wEEBow^Ua z^hU7ht#ZpJD&Z)GgxATW88 zXPrzuEp6$4?+5Hzc9(u~>F1y6M>to0<#!m*zvE-^$J2CdV^uRU?7rYE6IZP9{Qii$ zxq-V?dPTd=#wyRb|LXRD7jB2D?7qZ73?Dx=W|Z-*wxSy?{ZdWEHX5~n3|yz*(W?` zLVRBDLp2SFBhQm_ZhHoI$2tq#)A0ixx%nC4|J76*Dl`3bC;5Ch)asrG&S*>T_Y>#& zvc^w4)6e7mo<*(hGVZ~Ff7|!Dkr({;%bcX_A1W(9>{ejR2R64{XSTB=3t9%ZXl^$E zgL0kAKCL?+1he);1NS5gx7N=%=0I(EI%m(_4u9i(s~Hdfv;Kj*ApV*vue<}bn+LZX z#@_DbvzL-8~^ z%PgOA&0KIN9~?d-zWtbo-XMNva+b^I-;WRHJ4Mds6Pb?~a43dJZEM}jCf@+u@_m1T zaUgTZK5SzspmV>yj?}wK?Jdlw&vPYT`7t7jiSWm!_z>+I;!7q@VhKJ(#&t0t6C0Eo z+W~YRjqSU9i&vpXnY%B_=+BWK9{%LpJw&ERe$=oI@_miA5E={m3~ zh##JN^UQs&Mh=MhF>Kf%+qLP6%Us$7+wM&&yN3|^ZRP| z9$-@}yI|Iw5_g^48*rwI9u$YCxPm{jcE1`=!GVnEk5OgI!wpqWcCgpc?z>;M_qrav z>|Ff%OW3n3I^HG@ihT3$f>RT#p*qXkZCjrp-+=yW%|=qsx`+`y174-M(><%iF`4;O z?7j!xdM8)zeCz&6Z5q?t?5pClu><3tst-DclfmYDi~q_!1j1o9bFc5OVUGoGI@`Sw zd=(o$E?mrvdxe%q^aiCX7w2taE|SdQS62dT$z71SM>2C)~1g?cW7R;M^BHx&YZwQBIF4~ zrdBLHd~>dSmZfLlqkHLz*TVaMq7eVgc012ym(otY>=FD)LcY|6*^Ka~~Fw0H7k z5F3STI7=}>_KwUuS);MH_HJO^oX$ROY<)g&!bd!GFIa3Uwj6T8JLoCg4VWxO7JJ}g z=c!j7;4JhEcx0EmISP&jr;&$%virWASGvCmzoG*Twpkiu1(cDi7Fs5@j(OjIg=mob zZvFRK3p1$8dfC6k@?-hiB+uaYntEH4ySaVur@MNI?d$mct}53J#Xsq|n-}2g>7~y0 zE1ah;;*K-<3&f-K%*2reCA(!sF5sQ!ub;RAtp)bwmC!wV{Hb~HZ`QiG*Ew={(Ali~ z*4)|LrTo@UK>O?8ny|?9O_|tR!3~cv?+wh)4!&(Hn_{BvzNc6=AE)qO`j{5~()Ls= z+hWcXQoo+|M3=qHefl|x^gCE&Gv&Pb>+;)3R#M!xbhbY5XZ$mh=adF7hl(e9 zoLwzu|L!1WEzEgV*<<3IN8WUb)6rSWInwb_lP4$3LaPmya_bI0F>BA`Yp7!alEH(c>%Kw7d+b@(qAiPuX6dSv~gYCK^ zgZ#go#n4>t<0HGb>W9^4%hH{)^{RgP?E5b~Nc~pohh1w6F30X&?oppQ-%%f_{{8+` zKJ%x;<)bP;5q^35DS1Ae>L)r1PSelmdMB#hNv7WW_JyC*hfRG|WJPzTk4yCmf$_L8 zrPVWI%K0D0)IGAF^4VjIiTuSHV>&Kcsb}nu;BTVFEqoM2cQ$;@&XeGCPCVI+F}+^q z?os`nG)8}8;c#@lVvCRWn=j+{*<)!G`|N$0z*qo{l+TautUfsn#?<`zF#7(j7V1h? zm0v{sXEwgo`{9$KS!`oNG^@2MzU|Ya)`VzSbm?Fp)f|Z?WrKc#dWIGmpZ=>)m;KeJ zMP#p?`Q+;G=Uw)A%a=~g(>PQ0AF6Map-b%e_!9URFSa^l*%1=7JuK1ak;!UEdbXY~R zn^dpZ*(v&i)*q6O)`kB59<9r+6rJzv6#b^3ne9Ep*{pXuLp1u`zESU#&q_W&*>j6i zIbe=tO12;u3;R%dUaB6>Ln@!f5%E&?6XlI^Yt|3!W?d=9;?F;DH~VqW$RTCQzqMn( z&1=XWd`Ndppf`=kwem&UWN#hXUydLb4CRU0JN~J6zL<^tJsmlG2C``mvgu6plw5n4 zwd~JLdx94hmiAzN8 zS+JH|hR{<&=NDHpwzYh}NqpcJ`R+XQH%|6vF=?DKI z&MfpZS0TpSPwZF8xUIP%Y#pM_63%hdKtq}r!Mz!{6`O;uQ>r-r;@51Z*%wU?QeblC-gV0gZlcW&Ve5dj^_-MjY~*!KIAR>M3#<7 zmOlC(^MYOB;c){C+v$_LvFk1%mM52aXlIU;cdzE=lKXVt+QsiC8{S`#jb8*V|9yFC{>Bh|OE|48_f6V4mZ zz9OAS=f-|Q9#ZxDBi3gUT3=*s&JP*=hWseS(D8w<*%&n0oTIP1vf0GD@Jp!wW5%aF zhr4Q=seR-*427@_?R6Gq6*<^ca^fN4ryIDtCFGoy7a~r(r55}Z@g3nCT5n-2p;L(q z*ZeJMI9q#B!$a<7!Sp<1)PJ>e3j32_L02-cU2(gwE9Jxw0@KgIwR9!fLx%AZx-W;E zh(G1oSah$v6QaROz&(Divd!S#(qLBIY52rNUoDL9Z_tNmCQ=x_Z#j7wm-BylSu{}# z?dW+i&xQYd*SXpQ{|@$oVcl~0jHB@W_ux3={}7H<*d}xi9XJ;KpTgnmx$;wSRx6_O zqgIyCeUs#riuctIg}Tnt7?< z6CzKn(JzS|I)K0Y70DmS9-sJu-T&5sU;OLleC)&eor!M{{ExN&(WkX3V;d@b!_C5H z0bdP7w%Fg1Z>FAon{SU?T%ujYwD{{n?RwC$JIUH2hvt{Ef>E(1D#QFH4c}%>>RUFi z9{9ELdWvq9$Iz6=Kc$>%zAX%xlMf#xztujwZbJL**kjOYExw>k`kqMcGsX2(lecLF zYemm$Sx0^x_OFS(N~ir-z*GA9sC}&6^m9<%SFo=;fiqcVzU{myfTZ_@U<9{6c(RoIgtMU;PTV z=#iVN$>}@I%*8NmKl;=#ZTn>(VT|3tq4K64zdh{rv8f|zT=)`Qq^})~r@`#S!|-b? z{#t_0hH{Mk@6hIrmNuu5vjhM8|F3EDwHu%LeeLnIS@Dn3=9RPmE^VIu57OpqXLMb4 zXr6mje^KD7BsKt@Ki2tVomFn1{jCdIW`Fa-+Sw0WxB^@Gd~A%9kX4jNOR-?m8~i)r zC5Ph^L}syPmvflg?i)5d$~xTH$j8xLci01+v*zYq@#_fprUvsHh}Uw?BJMgPm|sv( zlGiZjyBD%A?tGB7Rp1rpZJ+btg`Ml!lfC(Q?w2<_DjM&-VbP;j*Uzrg8LRX&;yNpu z#81^g>^&s5b!ng3IcXnNzl(zr(3?bN6=*jv6hFqTmU7`L1x%`VZp7*8?vm7vnV*9x@yD!Bjp{UkCa6 z+QBWZ&L~cG+X_!S$=KDtkFJ}=v&|nksja$7HpSW4xw7INJn#6oe|s7`0`o1^93)-vDaZ9Tk14He{zCFI9mV5*28~ONs+!1IioPV-u?{3PR(d5tUSfE)j&H7xFdY? z^3#Exda3qr;JM)Tt~#Zyf7Y@eRyU3tYP0^s+}H8#sU7Pp+{E%!o5Tc_R^KtMt?)(L zF884(Y7ETOOSSpgRGSB7zngMuTR;Br<=dyX9YTJdxRmqozd%2{!<7!7tjl#0S59@1 z@rUzF_;xKDTcvx5#AmG>QXdH<*vGTHGJNYB)(xPCCKhuRxfdSVf(+*@l7CG0m8{4= za|fAh$lmGFA?!2B5c|>FZ{wZp?6GT!Yg^sGUCyCH%5#PeP+FfGNW{p7YWHrNFRB~9 z>Yw+qdR<0Dc@_PbAZ#YUXl?)5nNDXA+F&N5uFvwN=f?XCvao~tVt zdBoE6TpCSwhXXs2&u=f}PTau0r8)z2d(d6R9#WWB{$k;$^Xp$Uj1)NRm zJ|VCZUbM6Ol#y*RKeo-O|5%&9OKY>I%4_SM9@tqOfOpdmadqTY&5u7(>a|^oEv5h% zUJK5MybNw6%e>CJ?=3HB{Z~FyR+JF;dTO3*rgLxj(xWGWTk)@Q)^vVg;-Nb9>pi&@ zJ5@(MytTWV?=6BS6tX`SvN!I|4eZo8`lmL0sq65D4|S=&>a|jDIrje&cUtBuchaHN zW=|OQsY~YZ&pHVHr_j?Sdn-;%@^=BY6UDu4<9oa81qBre<|MHMUDPS4*eQRElY?KW zn|sY2XD5D*PW{(7ypwF%1LzvgNfkTA51ek`9XJ&^JQz(r^w6qazQ!m!`e9tR{46R3%j(x%#pp*!oC=tLT4{S zC3XycTPhE34J}~hjz;Ut$Jih`y)fa6fMB`yTB_|iREuT`{_8rbnYdw}vX}Nbz zcI&;p$XLSN#W5SZ?~l1}^2~SM`J#(GJ%F8iI4)0dcSd(2{^B)wTU}l>@gV+!nme4f zTJ{IpKD^9rxwnkIA7l)F#-|h`55yOK?@ak?FmpxCe*~ty=uQrw$){uP#97{??94^{ z&f>ETyOJW2|-930H9+@Dunn!^B;#a@|AK&~6EItTm@^a$_7iNUq#)hIFo79TCdy&){4( zxIe%-o@KPBa-x+8Z5C!Y*b&IZGTz=tTgwu4vb68qKOt+-b*w2e7+gdlQVJk9PV)mz7O0E;|uEu4IgO{F=FL zTL)*^*GDMBICPeM9y+f41JlU?(?`5o|Kx^*xtEE%o|^+svKZe)J26lVv?+RXpx592 z)!D4Fx=SoX4!IKLNjn)k#B{S}ro^V(oN3p>uL9uC_)i$mk8TnVRSebe8I5Dgi^ICJ ze2sevQ@)$K@u3`{zaDtw^QG6C2Ki=LwKC0^K|37Dj%bA3G5&{7;xp>J; zh?j6p#WG10LxNfX@2w=DH6db)S1u|6Y@a}|H5$c=Ehw!`Ms2NvW?E8%)HZnOBlT9b zeVPRINeI?jK{E)>_x(9%4hbpt`#i7T<&SxtIs5F(+Iy|N_F8MNy*7OGtXAm1n02Mn zFrs(y6y2?N?a2IB|L~dJ8(sYsJnsZ_BHHkYRu~_fR-lt9oVVytBR^wI`{Um^pW+YW z%V*!&^(Om)!c`Q!j-%gQz&vfSwfS@QUb{vV_FC~Xp$*^^**16yae{0) z@TofDxV~7pZUZ;k8xXzezv%2zelci9G+G63E8%?)@3+FcO32GO>1YS_5bsuYuBnxe zIx)dSx1Hc!`~ISrL(E~(f6%6v6zJu6o)s0%>~?785coM1x8*ZGmNDC z%HHzTWy3bF%L(9rV1=v6CpZ#CXFB`NJq)tVY3;9MOyqy1c%dpI*`%l>P=7ULa)z+i zV;Cz0n++4+yZKqHy#dzVg@$os*67-YOwBj$<#F!hvG=2qY5VqKlH&U*(?4?d1^?zr zsbhd{Dd3U6yYCzs$ zC(1j~!OP$QdChpL>(2ho(k}Y% zeWbKS&p|&cZ7IPf=fQte@0pdv>S!u$$y}bD?zK)%*E5rt2?2DJjFXx!{2X5B`sBO* z5dG|UVb_lL;CIle0y*i{xJd!R;`ZI1|e+FgxIp5LpFZ~*1`v13m zGEX)l73i>@nipnz2eqCvXhx`IaE9z*j{YcpvG9#;7cP3^(F@njI3@k3Gr$w}8rifw z$u;Mgt?OnQbB&fk<&H0&b@F+Egh{gl*2$iLH3MIUN!~!UX%fTTh*%l?_;3Bx2qbW} zO}u64cVem6FO8+1e_br~*Zf}mZY=e8*T+&HuZ*SsbI8Th$)l-Y30|=a=M}N|_8` zIF0Xrr@m{+TT9w){NGQ$J819Eq-`SqmE`*tbu1w5alVInW|Ft-hFEGf&o9Zpl(b6n zyv#F;`tx{> zO!+zddU;<+{u^jBkG5ao|32V(fd8M6?q&2?JwNHcpj;FG&!v7Z?=R4= zJigydzW1()r9MP`K7RM8zx;keTYE^qnLO7~_Cx9%PuW(!{gAYO(q1?4J?e$M^|9GpX}G`Ttwe)&CmaFQQ)~=!ePojr46dbv#Y^^Z52>p63JGKdHZ-_nT?& zG@hqZww^NOeES=DI;rmvza!K&f%J!XHu3&l%H78Mhrsj>bswM&!SfkU>=CKGlrN*b zv3xs9nRe=ao3yW!_9MQ}aiVI{Ne{>O2dW+Ii06Igheekas3|Fb1W5Nj`l) z!25gDf0**G^8Iq)eUAT6lRlh0ukk#MHfQrYi=QR@kUoOEYk0PjH<$l^qTILmjpAM7 zsqsCB@0GOMLm9#MD(&_18%h3`NN?iz8viHr?E(JZ!tY_;%V_8OJPT<1LGu5SdNkfm z)cX|UcN5?9c~(%amZu;1ujKbD{tI8H@l2=9qvRKVd7JXT;91Yppv-gBc?0lWK|NjM zy^8cpY0u=_Yoy=Da}o84zPkAKGT+AXycqb-m3*y03Vd#XV_+m+klT5 zv6+x(v7_W4#x~`i{Thqh`yPH*<@gr;dBi(uoh$wG9a%Poxb@>W=baRMYs9;0UFbzM zFU_dy|U*DJ-N+GwHGO$g~}rK;?J0vul-5+5UC%M z{cW2?wz>2~F_atT8BJTzze`5rvxtsparby7u}&@EKwp@mvg?4QX03^=?GG-IukA=< z>f7)zm6}1NI_xbR5MNiZDeb-N{^2U?qk1aGt%P;J~4>ftL&*p)F3{wTejv=2cFuoM)W*j3MCqZ&?A0xKDsw~ zmA-x&KFZX6%bn(Yw|>>#m@q%lT6WTW&WDd)Jlwe(STKJ_?O?lT<-8v9^=qY1mbR!p zofj|nWT*SEP3RowSYTfA-ixN~C|?HXRmcfoYa%1xKOY{XLA->gOdccbgH z4l!D^XGt9D(SGmvYTHMjHWH9Yd!e%^x=u3nWKfS{3Yb#V`ci^5r(=&nr=AME z%Fb{fdoI$OWosO`hv>#0?#?b`PubZ|c723opQ^~h?uM={`w2Rr9rwY-#kw)*oY+DH z(={KO4cz@5tvHo4!Y9bPtzX_NlouRVU~@WA-rfE3UZ}j_w1W5zC(668U*2NnrSFy4 zyjIg^baeatrECwC#6h^}LVS>btsEM|&eqe4j<55BniqTVb6yR->01ptozh-W8ZjAH z-|1-@*!RULPTv)$QvE-fw*STEhn_XiAKCT;VV-^t&+27QK|bM%-!GjCS!_xwXEbVn z0X;tYBJGow-<53?)TY%$?jM7G0WEum?@1fyHFm_{XS>kNWslX}Opg=4Ui%vxv9J7{ zavN7PHDi0LzZ*ZHSC=ep{=o|WQUwFsx34a9MUsCT!)cXVA zfA!s^&3D`IC)#IaKEn>YXI^o112%HS*bP9Fg+7Z|WwYLDBYiFD>lkx=Q%ndOXMAIf z>)+wbgkvW@-gn#8U3q>b4!LWM_2$^UAvO*h*^hgRUk&so94-Kdy};+2Pt2n@F4t@* zYRVyAg#%M+Sm$QeW6$T@g6!({IhZ=eVVLPjtX|RBjE${6cSUt??mLru>!5>0!(U4C z@5<`w0e2Slt`8SAS=i4qe2I01{8XRl3$(_S(jGzSI25a3do7XAgJ` zQI}|^kf&%zH1rC*>Lu{{GHc}zu^H`QFR_$oHNOMEF&sEX0LRDtZUM$T%G?7yze*TZ zm%$$47|)2h!j;$WeA*nA7{czf5x8u663=|Md}k)H-`ywrC%M{Y258+Ee|bY3r<&*Eg$;WvtZ~)86QJmo+b28EC$k zHuPWZEL$0D9`){x&EH*_+w9h*{)>i6{x3A-`X9*G;7xew4$e4>w^rrXMCAY1$QoyH z?_=_>LeU?3jRw8jJoe1odNaPBdgt`<{2lw^@o5Lkj+_!MC#GbFZQobyA%A!~Hq{&3 z@d3oIR(t8#=OecaF`|c{!yQ=@>b0NLIIV9#y^6g_?Wym=#<*n!_Yr7sk3IA%_5idW z(Z&8bcLEg1?%037eHD8HA@(4(uim&wd+JtCnLQ@{pu4xFbw_mJ+63Lbes_&Y8sw}m zvhkkcF&d8Jv-ID4@$r22rT71p&)R#Nss~(@Q-?F3oily?eY3S+ulDfm(q6u86Vg7A zWJaCgD`cL04)52VST}uV{fKbBKXP~|e-S30ejew8ydx^T#Zxeo%#jlup2m1Aw zdF-=d!R^Egs5(6qQQc}s^*^CHsbBx+^1ljLnU~ca;ITa2N#DpC$C_-P_Z|-I+jq9% zr?!jqa?<6SQ=xT`eP8ZCV^)#rEV?qPS(u6QB#?qzDH z8`||jyXu4JP*0uZ{OmGfq;a0pJsafuaxfNC6hGr+;VCZf_|7E85p)CI?RlESJQdzP zK1H-PHhdfN?+xtc&KzW~f;o5Z-<67qdrc%i}sjrZsxqsjbVo|2b&+beD@i zzv}kY_YLyxVNYB!ypqE!nOn#Twy$ib-HzgU^!Y)!XFpxvXAAfg??SkdkBVfrt&D~6 zqj_y)hU{@OP6@UAkvUQWFMVBd4tTR|$8Y4aSCJI1S?sKb{m0miOXQBRXh&nL@r6$m zlnmHQQMyYr;&YA0pu{=L{qwb7S~0|kE*j$rT$|<%RGvC0;EwS=;3&K~eg0zRyvA9+ zMJJD}ndj;v>dy_xy5-22lC%7AKV%C(WMsIYyU*&<>A#g-X=58QwAzvEb|v*nb{#0c z*?tV8Y9dC4yfAO$pVNZ<93=WU!VqIr_&9}}p3cA>@QLH84i~21i;=jk!>koN) zeYa!d9A-pi*EDMGnrYNGr zbFY)PzVk98(s7y*HPejkt6AG?IXm||EGb+a$+Yhpb-+dWA@TVKvcfD9~y&J)o ztq-j^y?)L+Rn5XJcKZD8V$Ou=ZXEmULsRod_@raQ&)50L@x++#fhWxJ8q0#_2KZZD zS`TySz+$t$`;6g%CSteMa{l3or4#4JP8$~JSw*|l*@GVaQEp=3!0Hi!1Lt#JEPI2} zg%e&3NuC>Bnqo{DW-e^b1GeW`bGrFn_hiC^%6AG^?nj=19_%xqtbb1xfv4htgC{qx zT+SWI6HIi!6`km@=mlFx8{0pfWkmK+E>L(rJQcm~lXIh8z&SRPyT5=@Iv;meMN9bq zS+=K%bt{>@L}YJ&@FxC0?-}3o>!*K|_K^IuJc`A{vmYGh*qV9UaveAXlMBn`z`#7( zuDws4b+Ev>74p$ye8Juu8RZjx3y(}XXeecHAfe!HgdteqV?>j#f5$$z)6BEvX?*HFi7ohyJz(kTUG&S(`RBTSNLF+9k6Ud$ z_yXqKT;^68K1QX?vpJmIEoovt+Iv=_%Wtu7IZ%EOUy-kbOzvOjv9Y4gTIPw?KFtg5 z<3sEA_|#t7Z+!4S5S@Wfd_+RRWwmr19MbOW$kMO!8?${R zihX<4&j<5E1zPuA-FrD}G(6Xqe>O4J7Uw^nkIiU$-aD@M`Pej`V|yFdjc;yTm)g9B zG1}_&ux6)X7xddUu36<~gVNVhcI!INUN^mfbe$Q{x!uFu$)`T6?4zXD!fUNN#!s-? za_UM}74$kj|EWER_&=)5;bQ1Z`Kj-LugG6JrY17Wiyp?9+(msIv?2LHXZ>`)c9i## zD`?A8oVPCF+&pBhr_4R2EgvGEor_QDwKHR0dIlkR@# z!WB34?xNlsRxIs(lJYu3u#0-1H-|a;aJ){@iQv)r&DQu)m)ekB$GXF}S?l;{>~M;? zs&UeI>r98>|AIV6k~Te53k|M@cgX)?J@c*W25Um*s@r>uR^8UCIlYcCmklqI{b$YZ z_icI3q2bSv-B!VWK06wlBD)6jx_&J%#5|s!9^~-aQ_l^ky!=>XkElJ>8+dZLd@lS! z!R!ZS(aK3Y@>HNZw?21Ss8_a<1lGDP*8I{r_=;mEc75YlKW+A|E;4&7;UP<~$5uaW^i~xa zz1YMe?B8udc6_S*Ui{@JO{(u4Y2>fDnz$#(aSe+S>dXH`J*0_etRh{sXI(O>K4n4k zJjMolEV4}82Y>ZL_=de@HQoBC5n=z?h^T;2s?>e_WUmo!G`NZFH zSoMr(y47Pw9#TE{??9{guj3bg^VjY2m04!wGRh+lJyrSlLG@LC8dP8U<2?C}M)ARj zE_n=pqRKdh69p?%B$!vz9HKfsFHy zK)t^{XRuYL|C&F6HR<&U_>&}lvTz2vME%_H+?{g8_07YU=QfwdW=&IF^3}Aku?6_$ z-hL-%$WBW?fQ}%0`&xWg> z_ry=CUEuK#2O^riL6 z$iW7W{`fLwkCll~rlri$UE<$gihnnEm9>;(m$$^jG!L(XP7)lu`sxuzIckRIBenVyTR zhi(x(RpUdRm%vGg=QZ0i(kH=_U0q9Q<-g*13r+KZ2$Kho;ibzNZ}x( zC1X&iMe{=S87W)rGnASS=hAM7dq(WKX&1cP?N%7Z_M*y+^epOI#Q!XOZ;JRYd0*v< z!K;V9WB~KI!0-exP=9a=Fsp2cvVuji+sl_be)l@3p}Hz~FXUVQe8{V|p58xAdCQld zZ2Rmhes%`!Xu611AF4}}1?7UgPE10vOe~r7=#Ei?aK?(-xfsAR0_sq+yc8U%%%vyVl z6-T!M8&VNJ(=wWbheCexH_Fa&&HyaJ&nS=nlu&L1G->wa zE5CL8AH;rKA#=Ch&2xFNYd`GC{S9Y2&87W) zzEW6&b2!5(xz0XI&YsHs(41^Hm-0*`MqnlJB{G3U>yqxnGvOQA$lYp3=N)CscKaj# z;sZYUm*F3?DFNG+{y)DkwrLlAc!55w^MqQi@#UmT4k^4V=+7KB$iD{Liu(E}c^30s zb!W1-7^0sB-^=;l-*3#>dvpB8_K%$C@XKw+QuReJ93qaWY*n&Rx$sE;aQlg0Zn%^6 z&V_Fi@HHZjdPfNl{-BAUpl38^Zv?|2!@m}oyc-R_DL=PX&f)psC(vJ(HHdG_alVU= zGT`YBtd8C35HUu(w}qDOA9}9MNB48LLN{=J4t)LbAb6go{eif6792c>%@cds_D8T| ziZ%+tg>2aU@$oz~DY)SoHa-*=1lqf&KRzDo*Wat?ZwF)D$(Zlv_dEW(_*g`rw_yvd zsm<_bflCj4x{Ll5(eFjv16IU2+`>_&jkAh4t~5piarF7IzB_j;f@JAe$?&o3)a1R;J3DH zEq!18kzVT~R$FQ2S@p}2X{5uvyt1-+H8!|P=)7#jtp!9o=zQYE0;I> zxtp(qb+~pF`-kR4_5}UNV$5IozhZ(fKsPZ~EZ z{R!pcJi+J;@~tOdMs{HHM)F0;r#-ag$nDxo+@BhXRL+yXzcG5;J3;R2Ga|Ba?@uEA z%6{qi2utRyyc++1>K*sa+09>geL>yrUCF&0*lBul562c9LLct{PN(lF!D-^p*n6~Z zMSyE!ad8%k^8@nVVecd&-eA01)^aVdsqR}i!z-S0?AzY5maF+z&YqvcXHvpvf7us* zBDOB!-`)!%o3hqQ3%fu$?Rt>g9i1wEMirXHejHg1{jG*>SKnzgt^U$#s$_hYFCtz_ zQ9|$P7ks^|@01<4Z_gs;_3pLl2>1(;D-GnvgBK;(XWWo&>^=P+_{&Dd{^PSfocH(Q zqcMneZ!mU_A=s>jV!N`iVfm<+x_5i* z-*y)|{ig{6)k?_!yhxA1^lQ&-gO71N&{g zVhVqBWaxCQ`>Ubx$Edez2>VXha?6t0gIa`rnE6umf?03TAK^ylRFGBfF_6sy$TIq$ z3%>Ns>u{d!Ly=2AD6{hq179jP;vMIyeE2N2B)o}i@z=5zbj*8nMh^N9AK`Z^IJpg+ z-_JNTEIPBkJ<(`kjwV;qKVZIii`UoFJ@ny+#+ei93NlkR8$($i_}MZPveVitt9BN# z-W4G?g^1IjvB`?dV+L#FMXc?TU%HSTqz8N)2&5;dew&^Y%Y8h1_-S>IL1Q)WEaXOfNcrU=r`C;Rx?e9kSWT4<;c-Nj{ zH-0nXSNdKx8@o3!Jj^`4oA!;2N$GP1M=3fNyxhphOaFlTk&cHWZvY&5{ou&^7dRfL z%}4kNhPga@X@7aC5nVOksJ{|kQI*C1GkC6!+j)^H(J=JN8nn+lA-FqEhi+dr2h_JJe(I0-t@@O~ ze-Cwwud5%G@qRo`KPrF1{sypX?F+MJRP!sv*JsI!fbH+Y{&i0o`h8{C$)`5L@cU|h zZoV))zM7x=F21C4FH?WhL+~PzDUVs{Jc?@h|fT2=v0PLwyhU*1aPMJ}xX zFDJ@d+%NC9louJa0-T*F@8W)W=P55TsPK~oZU*kjO6Kxm#|rW*!zLvguWZlKk5@0} zu3>0l3pVA)p&`jpi?K)fSrdC~S<2a$wjQq0ykntVYT}A6l=Ax>>U*n}x0}+it?;PWf!gF2+WcP1%HR_SM-xU3Jz0i~Q-V zLD;;h(?fhK=_9IBwze$v5{vJN=&iD^RaXHUYjF1R>UjORI~P(!e2bdmS#|Au!88JG4vWAa>P;ZV4aa(ARdDpZ|`9k?^W(Jxckm{FK6df+;yw9 zTWfYA>;37-0H3k{p|v6qI6XZhlQjys-8{pP2hNDw_X2@4_&zCJ_Pxv4Ck|zvo{rsl zK?&>b1>6JMh>Y02Tk!1=Lv|vB3lFxZ!_w@SjYY%az!t4%~`b3sCA$8PSQgsg)cNx#@A^NAOSwm z&K{}0@82yui$9zMomzbNWpXy&1mFBF^ZDv7$3HQRx(Zj_ymJvhl?g$2sw)E-&9L&) zUj?UHSC{ZKawgfZ8#%eG*;(mb$Su3CtlT+>`w|?PU|hI@H9Qmg%N%!dx_G<%vW~z5 zw|J6lzc=C5-e=l9y{9M29w{;g{^)^+xl?2-a$6FyrW;SkzZxB?G2iz6`b0Xd6dDO1Gy0@D#kiU`ooWY)r>{1!* z)o7i;zjT^Q@3Iy3kXLi@3FykUN5^TtV#W146<0{~uDQ5}vw&HnXCF0Ni3yjn$d12n zr=`q3s`sTDE9R1gZ@1Dj$!qMAUAZFtaeUV}TRJYBl(OzKxI6aO;;tr`32;>tyrRciFo%Z`t>;=Wal4y_{3$c{xy*Hqw}O zbkzd*!F>3_Jov-K@QH6AH(i9>bRqoX0{F;W@40^GJJ^zR55DrEhZf zf-yF)Eo$iiSDo9mhK~(v??rt&LVw#QGZ%8Xn>a2zXs=nagW%DadVr;fG4(K}k|FxT z>3qXJWREv82>8vR{QrhNj6s&aKYeIF5g(KAv&^mG{1?2!L3 z5%Snq%tg(^$MFUD-{4AX!T%w$7lZx}kCwIc7FwqA4GB$0v{*i~! zlhs~#_V4U{agD{`qhV(9) z3STHsGJ)2x3ZIcD+`bHM-8oSX&rzM47pk|CbBgT!@w)Q6ndY-+FlZ$tBzgdf2Ti~;U?yV&Nk^@X68q*j=8avxiL4cM@WZ&w{ccx zaD7#LjZe{ExcX+Lzf$8rYpXXm-BRcDBFbWrFZI? zl0kmSR$3P>WRB^15#Mh zjs4xxPTE}NqI7|dZ1VZ$wxnS<*^IrVGnY6J6ZoZKM}&X0`;C^Lf;XG@!<*<&bSm%D zhZxg+#34#B(-JS>*+Yz=1K#1mfN3Qz;deK`s#t9Les5y1j5t=^-eJL|@{Prhe-iJd z%;i^*fnKJ*U*I3LF=a&EniR)w^hDm-n`>lm!G>3jTz)|Dhp2A@KVq&--$?l_)FXYW zmb|jRWnu%A&XbvQdU_7>sd$g`J_&jHbeq?7Cef!Ef%IJBclyZNM*BGUzOMM_vhPU7 z%7uTN#*d$af!w!rq&LM_L5*KW>fFgH~9|CE1qWV64g zc}iK$t>KJ$`6(m)+9Q6HIi|UK9y(7s@Zfu$+&;l+d$`us0c{)b-~YGUKGklUIKI%M zaq>ui){H!R-@8A|f^j1GL>qzC6E=%?w)?T)qU+c^l)lNo@~#A{F6r~wCfOF;yq(Zl z`zeWjC+}(Y+OKg~M_%@^gF~EpZT(JuuR2RQYj;jhT~BO*9n0wlbDBTOEzIko9<865 z+#7q0Z{RCp-H|k*0zG;SJVW}JWYuTUXR);=w=vJGA;uKh9p7H$;hf@W>0?Rn0{(sc zSAA=sdAGi8C*`E?$toibc8V?U7P7WjE0#A0Rx~%Sg}+|Idc(b4WhQN|R$ z_Ch}}%g*HK4UF=wlk66gTns;S`zyE@*9E`FkGBn5 zreL?Q&#NEmgLts|(0PJBJW3zh>~{P2p}Bc6?c=W(T+6us5qU)Qx^PP-SAA+XgZbFs z7MYWoG@%ArrQ96uuR)F#{Vig=*U<-eZIo`Hu@XM-rC9BT&etB z?R!w+#aldMdvq6vV&%Ad(XFf*;=MVHOD)gF!93$Kmf_xR=3Q=MD0hF!3zrcE*!U6^0mc=M}68KZ97$TB6>>>+kTYb zHo#AEpmj&eghh;x;<#mIrcC&YXq-BP@7N1DJ-OgImpW?E2`UfArtF!`ygD4)9z?g@ zAB|1l!~R24G`2mL_iEk+YbkYB^OJ745#4Yjy5UBAfXX?i>cBl|=SFlxrK>Oa#U1x; z7Iug-+Ldf0+HcdjC)OMFL3HHA6c`(J)_VEjCWU3YKi#%v_U%I}R*)m3I({FbBP$j= zHa5~f9QsSP=a8+p+jO5Yp@K2_PxM`tamPY*Pwax!3VYut)4oHc68@eC{maj$9KWt| z*+#Gt8H2oj|0rWwnMNo?`CjOIAvRRyHI_T|yYtfw^>*&BPC0N(X_py7`>w&^xeGWDgwcE)zrQ3Z`dWu!YeN@pB{44jJ=o@DmD*5*Q ziN5*pN#L7cnU(CsU7f{vNvE@J_ssX1>0^9@jLDXH(irV$bFT$yCynu0N}D(aT{Uid z)j2Z{a+dCi)?GjLS#S1`MV@-&9T*az}EN~arVxynfDfVRJBo`csTxlwokqG>4mTU zen;*Z=f*!3MVr=+wRHvY@$g$k#Od_)lyk?puVe6DKXFw*BR*%_W0y6()H&F`W2Ei3 zPE5a-ULaQFuM4A1+|j+~(bT5!ugz%N3-}b{OWXKip<<+tZv4=UbX^uI=rXM7Tffa6 zQ;VhN;*YGHo2y#&I+?Be1#A#t~=I<2Vve5sq>+9^hnsKb&lc<76xQye>`- zfs;mX5(X#8r}miUXx!tt34@zjaI+rVG=ZB9;HEK-n_6&F11^N0TJTfAc+%e~H5%i1 zT~jp1;Ghc}Xsj9;vs>uXKwrG|j9o2bw_(88r5qc(lyEU)_hx+T6st4l9m2V{WNZZ~ z%n$5Et5We_7+kM?R_WC`f1-16NA5GChp$U&dVbx6-kXTC-Ke>b-_#56-J%i)~ccIwf6i9URgHZX4M8JFN-#))xR zpJm}o&7ID_H=>)^Gi%@+&6X?==LXE^`XOd?%Lp^N>>zis3~N2dy}LY0U0b~m%`~jm zb0k;H@+S3c_5Nt4L435W-UnwIhMt>dW->n?@m|(zT>>pJzMcs+^BTS5ntS=5G>=3PlIw|8o4+;N+#9fcBU3p)a2a^I6ntHRU3dX@;rUHR?h8f1qixgKLV4i` zpRw(`=tt(v>GfHhcNX8e?Natbndi04)%7;b!{f}f{95L0&fr3uKdDcfIOCiFtQpK5 zKdM1H^G`5~?}#nIC9<`&@eFs1z_&J}Vt{9BwwhnEKrjRF@p!Kc|%tfd~&nS7(GmgLN^?;Gtd zjLs??1|L8E&QYCpIyl0Z=9XCwEm_`BL7NZ%0N*;ho=WZ@S2%Fz}*7H-l0e%%rDw`KAscP09>UH2RgZ&9~59}}Y+2r6N(ggQZV(#RF zYiHd_3cv8W6BG6p{7*R37^#Hk`u^gKi_WFUzwI{0NBdUqL!YY8xiii${MdKbe+Zub zo8OWx$Tp(@h+}qzc z@1=MRO|7}s6QSHYpRwZr=WXN;4=TQrv7xPMt>Si9_-@JY=ZXl1Hk z+5W}Q=^8KSpSg2<{3kb_vFKEEsXGB<|7|d@BrEjAhW?B@9Cat7;#%G8Nvl^(Xw3~9 z_rO&HT~_`;_jsn-ck8OXbAh3kv6lQ;$-Te8V~@qJfKzo@%$0HDidi!qxnK*vYL%yw z54qp^obp? zROxfdJN#uQ?GR(GdjJHFWQ(FWoKwNoiN-&Q?Cs*OQCc4_=G;1s_RZR;GE zd_Qe^1D8q{y=5MXEqIf7zUq^8I5zcXJQcIRwS~)eE*|#Cd}FU{88raLc?j z=Dj#ZM;jmJ?5xigt;dSC0@DBXW`7QU%fcE2cC%0@0y0_Hg zPVPqN(1mCI9~nR3*1q|UPW+a*n|e#!rl7e~w%Kg3`T34QdyhPrDZeA*lXmZhhs1-d zf3C6VTX$2|Xq{uOYQ8DvkiN5DI@Oh5*6`hyVXm2O`+e`raQw0Fecf!>!n$UC>eO`; zb(NEs`LO**wC|R$7*O7u6+iz=d5xK5&sNb5JjPx3`p2JlXy&A5^+&Xn^GG3kk;ku3 zkKAYM72I2Gn)=qi(3JG|YoLe98`Ic}sJYi?60^;~&nM1nPefaDp{;fsH+?*@e~fo~ ze47|wU|G^RJ5raqZeA{H+AW^My8Y~_Z^gcXk4(OwxEA}p-T*q`g7Ob%b7mLbOJ1#k zw=iZ}Gp=fmZF1{t$0zx^{j($0f1e#$v@#UwkGm@0AJXg?>F|LM=5zNqJOr5|C^;S; z6|r&0JnYKl+&1HtbFC5SVs7VL!jn0hb1_fWidp9kE6BORh&%#}i-1XVl{X4n>}4)| z;^6Z(U~30=HTc+zHdNmt;95*ye@eM))fag4sXs0a=v?TnYbVslyvSzY!GK4rtW8sK zouT!RO;fMMW#XrbpeJ*@BNKaxHz3=CWa7L(IWqAS&a6X2uUT`>L#9U#E99KEODrK%c)t*>$j%0UxjIJOa!(`;sk)$E3Yn=sYcO} zt1FnP$8-hTo)PC`tC!^T3J-3~z(cu`_dT|}A7e~ASO+^NMQ4oV z&Cs;QU*oRv?0^UFp3z5}-)C%HepjwG;mI9|g@JXPZxLQ*K4dmXwsK%`cslLda5#5H zIrk{L=SiP|cOVB%6AvsD501+akzN(l9OO`BY zUcRKUxre(myS(G`huywr-eq~d36uEVl{Id{t=u`Ae8-*l+4mZhoCU0QtRb6bG|oED zqrUz4H7CBu% z^=3ldQv8|%*ko4|hwggHEcF@D9`CTQY_jqz@_k-o>qxq5x9d)8LK}8cjbkF^(3K*I zyiNRIJiSW_d6ULhZI{5dYZmCbk-MZ$-Qq%XTB`@qwyXX*D=+w>YAbVgWz`@ zXR~~ay?DYQ+IS1vPvVU94(?)mE5D##c0cJEYw*eakxdWMWt{f!rTtpsSMDa}jPzdl z|K|X+=mr@xs(7#Hh<4nf{~+%{&H}_d$vuzQ{y=^9<=%x34Y_BXTw9goCgN+nrWka> zspzN(yf#vQ2X}gS)0}x}!Sif-SSOmc!sDO`?IkQ=-Ew2js!ShUB;{+J*&Q!mPkzqP zZTAgYGcRGVGZvy%?Q=`V7Cj^)Ge{O2#@KDiGn??;ja~q4S>S8^RHJDw{l1%Z?g^fL zU+9xv%n_e&&Ab}y9U5EvPGxJ2Egw`PAJlQb(#_y@J^O346P!Xh`4nQ0cq)@VW?^&D z+#{`_&E{(kFVQ(!S4PA!{k2kfmhSZEX1@2(=Th-3&e3$n?*S>LpY7g+@M(L^WX(;B zKKh2PndkVl7-7+e;7g!?nzNd(OMr{}h3gU-3*V46^Ok5H#9>!nm07YRw|6!9ZYAGy z!0`s-`#E@e6Zm(CZkU^rEvBR|Y`~50ajR9H~BX_eS_tWa)$0j#f$`_F{ZWzvIFF<3(R}?oxHvXV`Xxzt&VuVGP~_c`l~6)(S% z@+F*|VGn9qqV_s~B?mpb0Y2YB>eM!j}Sg;!H3#z zf-c>(gpR@WV}Hgz0d!~Wa`p*q_+I2*B=RqE`w#5DWvs5|-EFrL`>)^(CR*`!{j{4Z zzHQrp=Euk2KfY!*d?Wt9gYz;Q&oLXckKMVbuxVdW>x%bhx2`B+ZR-HGcIL<2cZ~+* z1$+G3IX^5}>V-FrhFMAj@12XB@hrP+;8-Rf8~-W&%M&+7WnO#FXgEEdE}Y1gneh#? zA>h^vE$v$yDtME$lS%7(EY#%lnbFL6nVT1x4LbWQyyn2ObUt1G`PndLU28Vj`|zZl z2*1+L)JJ2V^z}hDJ^UiUZ0I;ud%EMox4lE$P}PTg;;x0Fn@|3eej>-O%C1e+oKp;( z#Q%;hScon(i#eCvIrP|^O9f}ckkcLevOmaW-^u-BW+{%j-?OH zQzrZBhem82gn1mGEcZ+4j23$qee1a!{|Z{O;rMVA<4SqSTJE`S#RQd~lJDS}d2JU? ztrNd=&vk3>Zan*>IjqBdG5d(Q$hxk%q`La=vuQ1M*WrJWr$(mP^3=MrK6&_sKN2&T zwwtNT*o`kR_z=EypOQoGwvV0eWQ!)ei2j7V1b_PIKJXyfg*f%8l8XhqH8<0SU9xd9 zFyF^qJPQ9!!cMO_I_~$_V5ASQ-W<~*Su59l!_gt_Sjnt+*V`~~Mx3$qhz{*O_Q}ie zwKky{XT^f$kYg z{MB9a_Foy?EIWYWBWi!B3tzcQ%)~m4d4Rrjlh3-sx7qjfUAEjcj=oyp=f1(lj!I-x z$(KvFV_U*L>BzmQ!Sk6@t@m|GZc=z5a15jmcQ5w7BeCt3M`Ak! zuWYW8|K5EDKSkNo{>y=-6}h^DJ9cGBw&oAldVi!`5Ecf!4_ALY=A z+jon;w_}eo$m`5qBY)II$ZVwThJM^wQjY(K8GPV{q4l-wBf54si+;O$j`ks+N5;rt zY#O022lk|(b&dm9Bl~Q?KV>vy;P#<`v8yF-O5u=tt)p96+vHa>Z?$b7nyPO*_*r~^ z9vhq~e=?iq9GT6H$t1Z}Ys)|#lrzY-EFc*`db!&61wu{9*y7x^XpU(_g+J~8S(!%D z`;>8HCx0;iDraxn&HEQRxiH$RbI>Yr8~KeLT+9 z9sj?80~z!y;n@Baa7dq)t-8P8H+J)5YXS$v@PUxrfN#%agZO;Nkcq^t<_w7Su|xMe zz#}np**kRbAbJyT_l?K)W+qn`LL-VXn8A1}hOeIRwWs2I?Vh41&|kSvROQ!khF|iL zbe3$f$oVi#<(jC?jaU?b30Z#}BTF=sf&F@A#hmS|?Yo>=hlqfli=1UqkExi^s7y zQU5t-<^ML@_~Zg)Xw4_3>rTP8JFU%)@HocPj>Q!M7Xx|J;p<*(v}t&^7n|G&&Ukq1 z4_}wi^lSPi8_Q>x4a0si9NWZD*83sQw4)1sQO4c23vo%!WU5`P7O~PFj}aZW#*B>ro*79U4lP`Qof`Rl z>?!D~rjehJX+)rt$oaoB8#1sZw^Ls6H8h90`^@Iws*`m;c)7jDDEY_=`;U%m%DTgB z@D~$9gnnxb4fDY?+4g;f(EV`sfbr8(oYnDb3L~*%(VzFp_SBklfFashY}&j-aAvSZ zgg(QLO*_`b=u&yy4Zs}A@s1tS#@yI9R3k#i2+O>(EyAuQriC;whij#T@Cdd01*#K3Q6; z1j9DuWZA*I*k;tOhkFIoW)m{Ik60A#iNvY}jxPG3J;rDq_{WZXXkS?%Vw6l*9q{i6 z?M}T!bgX{iJ4773ixvNbKFJ^cp1@gOJI=SwdePx0TGJJW51C}ybYgTp`#7>F_0<0E z#NTgRX*6hW@W~&e*U%Qa8T9H87OWaOhJAv3--}K>6zlgVE`LoKYZB$HKb-h`>sX^f zb*k6GFLd{cC| zy}OvQ_P9d?~ASL9^E+^K5L`8LS^~y$qiYGrqEc#_vXI zdyMt#JIpbB3Bc)sJ+IFj{yPs_s-1gPBV95TOgKNRCLohsRL_>_pF&Lf(2Jk07Ukl&81-^T^*NFV; zOGi)mCC~nL!TxKdtFwuw)E=^E{yJh)$u6jMv%hU{G;M1wXK#MHWIyyyk-_|V*5R_wlGIs{WI=!iOr`O`7GrbVhpn<-pcsD2@k3L$eEY-!xyCE$QPg$ycqA# zjK>~L4JW@wAMnrV)i}?>9-}8TSgGgvwomDHi*=~cFm_lM+0X6P{CN7y_|%NX&m!JV z?UKqFweZa4x>Jj9Im3-9c6%qEQ{PD(cAe|)MehpHo}GSfU-~~uufdnvPQQk9Z2roB zfb>@UeeCqwzVr`CH{A3mNGGBSaIa;pd=;ZD2L85cBm3Or+nDRZkG))V&jEhbxm&|cT-dEBzc=H@=s;S|xla5Rl z{0x2nZ>-JhxKlaYXn@KyB7 z#{2N|qutQmSIyyp^KGsd3GzFf$2+-9hrVCD5kH2Ok>CM1HN@}|AL8Z^daB1mtfZVo4kX} z=pf6C4jyJkhl~>b96#@YaQj`j56zA?u{Zrc?eA!}T!(mFx;;*-53>fIfZrL0r`Z(C$48Q}jXmy(JOCZPX|zv^FdjK)IQ;AgG=Waa7HZA(zmac;F=Kk;%G5E> zds1&~^wg$_hc@0icFg)MTgUj#lWz1e?i;pjWxlLW^O+NoyAqa6&YW9M8PV!KZ?GHzkKyM8cQOxaB0lCrPXI`VzX}*;%xq{}w)fE8xL7tkcK^ zQy%ep_8wkkM0(d5=tdKRz0B>c>(Y9^Tk4$GJc53>wb-*abtv|;Y|q{&*elt(&vf3m znR^>~Z>L-=DOAt6VfQ$3?Cq|h=i9L`Rrf^CH>Pi+-Jj0)>~(m_`0zj&etL0i6EQi0 zGqJ^dIwll7!u<@NBIlgu%=dewt3Impidu8yJhqtlIPM%3Z=AZvY|z^1+VIpz_3sjV z=0E+T*(4lgv$m}sWSoUOu%MXv-n8z@UUz-V=FEil`D0(2O@9H0zh!>QPV@+QWD}JB zE4XiMF&iFUl{99Je<=3Vr0|j3jL65k%my2N=@GYuWNT&rVEmXpw7H+S`Wsl!0)>O> z_p>JxJi4V;ePk`1D*aUP%*NwmJchO_zg-y7yM+v7-7#XmB^xB|TOEZ3?wyYtjT~JNm+>2}ZOH zINK=S4UFr7(E>)zF&{8$Y+N6KM;3eb&M=9g;SEK{{?x(M7O%1FKF`Bx5C1(j^r$7n=!GVWeYmyT*7Gg-XG;rKRTu(CvQurk8!?B z>x%TOBaatFzKNW#`$$sAqqdR7k-3tBWx&wR*eI=Iw|ox=)&F6etq0pSG9S7vK4`WN z?JRR*bq4tEMh8>7^mjV3Bu2Au6j_a|t#fs1qZ1gn{1F*!NZa(-Rc2%ha$`v>_S77H z2f>%skzXGuoLt{aTh`A#P5LIjYgJ6HKSG+}O?c8m{`bE=uIap=v4;RH)+{z{pZ4htr0bjX)x){?Urk1r z{!iLE`e0KzcNqxwgQq$87p%&Iy(qdB95$}=?0syvx%cNcY5pZ4+owPq$>9&!BmXtu z81Lv_#$D}gxyV@70YAZKKPcPaYR|apR>n^CsExjQbpLB#J^0{9Tl>`^yD#Ve>@g-* zTlLF~F%Id;(vw9uNhWlI4^Dd;{<5skE1;Vh+1MkP6XVdU4o&9n49Ska!`4K<+xV|F zS^KvS-mkGt36Is2@)q^pjt!ulc$FUvHX2?-epeaUEmD4mZ3Uc086)NO4>gwAJlx}H z%B7#IzsGosdDBVr#b0c><$Dfq5nuUf8~P%+Y?RDK9bJrT7x##Yk86xY14J>8)~q$2 ztidPK(fJ%)NpG^pl|J9XTp=C{e%zc*T4O9j?ppw#%l{L6WbyWvGXY#2wt^DOKbh4fMU$QoQT zy?!rQ+3zBZ?+P3D=#?NjE4+DxZSd(6(j--UL?=Wk^E<$tl7wkj`7 zY0~#5)|!k9idzyG%gTKGOx8L&(2`S)i1?z;*ZJ^EQ>?euPa6@_JdL=}8R?ZP@lC(e zXsLR^h=`_h;A^52)nEB-XFi(j^O&BkH!9Ay^z2uDCx31HyO9Cm| zw7{8f>-kWDb<4Qv7WXPu0v}^mPM{D>wHsweJ|H{*}mNG*4OQ_?)S_2zV&+A_yh6^cDeTJj0JvT{~A?1$8%5K65xW5 zYcJ0_&#{AP&OF?~J`6O_QLT2y<&Va0Q{rVTp~aH8Y;^?M_kcgGx3SaUi{N$t&(CWT z9mSZVb1pWbm;cI$l$>SQ^i{Idh}w9Oe=74!<5>H$gWGQQPD^xd@(yc)?+)n6w z-*vtb37TWa>^~daV=wJKt|Ly>bus2~S1S4jwB9CMklsa_<}`O=MO}R4F#ZwAqu^EPIX`pe zx6Wlm&O)bH$9k}C_e@{rV9s>ZoD*RFY#?@?@@fvvBL4yYZ=ikouhgF9%-6?hM|^Jy z{&2P6di^OzWIynfnAlz8b6NAXc7-!nyI5Z|Umt`vYVI&vYN3<$yZ&{~cG8wRUo}@t zuAyI|ze(6(Clt2G-!yc+(V}sFcXw>l0lv-h8lUJ+IO{{sAFUWWW{WxM#wYlm1H55i zDS@xlGG^R+z?f}G6Hnbw{u0v)vaUxIE4!-<`!2EUB;ScQoSm}ep-NpCx+Hns@$KDSv7j$JCQ?*y}rFd8wyb#|2;X&;Q&%nZubjqWbKnu{| zn_lu*%NWy~JR@R%qii=ah2I=>qkWdd^aX28_Lem+*Tds3!nR9a)klq8J8Pz7l7p9WmQeX?KF3yjzC*idt-uK!);H-db&J-lGvT=>lTN>d1A{d{ z@no#!_{QIEw7jE!Lch`}gu_o0{rSWnvDX^kgOq`mx+UX)j~w>fJ84U>^ryG;ps9B> zrhbhz?Lz+n*27`cskzymL_JGG(M;Apx1aJo?@>GCm(Qr5GQP}|CVNc2Ay~2Z@~uA| zdjV1RxYe;kKZ6~*YHeYp@?Lzi!9&$r&M;G7H}zff zn6t+2qdyr-iK$W*ipYNKF=lYDh=YUn%kVG0l(ECNx)Qs!VA}I5=e&|}fbr(Ni!%h! z*_3_Q?nGzIJ8W`kwodb3w>f7Ex9)dvV>O1N;Cs8|x|gBXc5vk8*Eh+4&by-%362Gx z_UYTbmDANuBl?B#`RUupH{f*EdFTw(vme@+LyX*nb8F_6GHp=6B=6RozV00 zU+^nrzSMdcGx{u96rEuE+F#?78$Wm4O*;DdYp(p9NuG5FoU=FEevkajcRzc9+H)yk zUg*DIr~^)WetS3*PK+_ptaPz9-ocNv7V#Xo7Co~yHg$*cvtHOVel)qscP(oJI`FV3 z@qebh#Iumwb|L@6*Y~rocKZt>8-8X5T)thi)M$|`pfyu;)_rzicQWU+d`emL^|d1H5kUO0|Ey0IpZ}txS4<|q3F_=$D+G?(R$ZK}mTcg}N89V(k+8d2i7 zHgug0{}|1AQ|K#~Sf+yI7;NYX(&-jAIzfymC(AiLQ|IJ<`8Ve&p@_;N1eROMYNRs;)NR z*Uoz3>I`MHdDEpvRO8ylJ+?ZRHx5|rCPfPiSNlurGn;HWTj( z`KJ5^qowONq}|H5=XrkJjC4F6id0<4zVt8Q3tqF#GQEkF>_>KOG$u@D-K+GVQz8$Z5dItEeWjoB`FohQ#4p^Txk1-9eq1o{x2h@Ot&{QcOJ`!?ZkNM5Zw`lj-(9`r2rAX5Zgc}FsiTekK7*m3fW zZLj|W_AK(twyt`l`?fU@lb(hLg}j~5JiN1z*lvoc z=Q9e@1KHyO35=U)HIL_~*zzhy%x%^@kX_*<&hx8W z%lsbqcJ5}5LYvH~DQY`#F+bT}hV)L?I#T*8$<_(gVa~kw@SZ@dy-L>8$t#xhK7-w^ ziunjXj0j)OoV0=lb5e3l`Q5RpYFq7!*XX->zZns}9XS2@W`h}dJ$^2|y$;%j78{Mq z>H6LjPtQ;~JiU>)3@%NC@OgLb;#~>G^wrterRrFxppULqp-6}}`j2@jI8*xSB;>pQ zfVbg$u$uKDlejU0ubXcMV{I|E+=F^d|5sk|7s)7<*xc2A8*8jBcfn(9xg@S1Tk045 z)oNC3B4fJBba6k7$~5YUetiXWs=js5UT2c0{u%ZRUA!ocSPeRlWT_13-j{(~M_N1f zSK*@LKj6n^c6#ZYP$Uz2ScttLhdanUq=kqXCE5`DU8~@~jD<}f|ADMY*-msD{4Mg| ze!{VTXb{Q8B;w=XvHK17dr=m%o00%xh+z%ie3Rz4lsb zuiGZ3&8hXEdM)#rmp{S-l>0DesoDvYi3a1?1EkjnJ(jKK{D@d9VwtZmzG?J``0DY! zQSUDDT*s7^69Yw#0o#Q?e!>X+gxH>gyI4yd$9M~Qd@1@V2Bv1NKYK3rBKC@p!Uxa;l2LLm zB!_n)hnvgL3(+Gxkj2f@!iiVWHQxA{Ke!ehvIDu?j88-I?@!3@H_%P~fX?#VmW*I4 zbx&LyWd}COUDzm_hRg~s#^%&Pe?II(g2~nU6bEFcWVd3umNEbM%JFT_X8z8jZp^vF z7oO9WEMk9Llgdeo&`vS*Mtph~@g@7&)6ZYkUxz02gFd?sjlsHMeQv-0S039(tN-wI z+qPYLgL4g^d0LGyCr$-Aj2|W@Q*ohgoiOc*n(dke%X&@LrCA_3;pCJ`Csb}g(bL3C z4mGCYFpIrH{eoud7btdG_39#wS$qlo!qyY=2O86)lj_}{U>`H5IWg_`5|jB9&%QxU z>Tb!uGo9YKe6p@EPF4p?D7Yx zhF05q$bl}W{#h?I9_ks76UR6z-Z#)l{-UWrx3>vg)ny5vqvFjsOD^Qb@q^p3;=+BG z9dqW?tTF5Cy}RNrYW~o)=zfdA_5FdYaNBJm}78bqZCN z(y6`Z=r7U}M$k68#WwR#7q%P2&a!JjJ2IO%4(duy?I6B!*lBhRRpgTWENyQylNYuJ zshg}kE%$l%eD7l3(cHNARI5|K^ADu@`Xac7rorXD zr?&iD*Eks)aGiQ=JU*@qZjH705MzD!Lh{1;VbQxE{|9;a+&4bDuwC%n3=FC*@XFxm ze8niwOwpa$R8I9}zRlc(7azplTS zf-j46PP=`h=c(?q$$1aLF~Mqb|=@5&F!1K z+r``xJC%;_)v30P9_|q@n11h~e=^1!dG};vypHQ%G{&pBcd{|orQrCYF@A&lCmZ9% zTzAJ9Jjob^pSh{FPaLD})o`y1+o@AO);Y@;xgM(IdVwtqPK7u0Uq6%Uj*K||`ed%x zo#govuDf+xlry{wJ`Vr2^Lkuaq_`)or#5(27JQF-lMS2DxlPuVe1MXn;%DMxb^MOJ zT~*PXk$YwuKc7P7zdry*{ zuc0%A-yV3*r^V2LU_9~OF7!m*SM1p5V40Zmm#4w|@2(|pQ1Z$cHpx1O zu6qqNG2VrDE4TK#A=Grnul6_Jp!oZYQT&Ej=A1*GXkz9N{6xsT4>pG@Mxf{JFL2KO zjx(oA>z9@!6w6(Z;p)Un)1zeWc?&syq^4 zRjj6)J0>{}KJ1zwItN;OBa8EH%pyllDtBrmwG#e5&?=KmcJstW17n0d;@SAFr7zT@ z8`qW*BfZDyZJgu{;y>HKd9LmCI-eU}sf6jp3%*X!ExdIn6e#Q8ASnMIORdrN* zu#K=U4)Z=|Y8rgEuHp=J&d>DoyA8ZNM<37AhR!Qe9r8|hfIANoJ{~_9EJVJYe=}+~iSLYV7Z!fY6_!t>RX_#-#KfYP?&QrPP z)QL8ENB+%XzI*sqtgh;6qgS3;xGUfC@u_9*e+wPx*?ii~q7Tn{zG+YI8Pt}3j{BbV zh4vW*o?!)6A$6zKpY$j%cnPys-F!@Q*$L|le&DXHjfKXcYryShYV9d^p{Lzb8r6-!o*pRj9=5`)U}kIw;LP74PJ86I1|nBJp^dm$q7_$2z%{3 zH!n~*+b%5lhT=J_b+@LG_VH2g$d(%q^xd!ah*vw*#QsTf&RUml-J)*zCwq~pYvHNd zAA9QSclZm!70<%6IV>`10i{RE#<~vN z2*>JAJoUqD>|I5BuMzy>r{bAT{;6Gy+dkVcNPk)MC%ifD!MpYvu``glYcs*q?M|I^ z#)54L{sIgd=g(3wz$=pOd3dT>@7nw)zuBLU>&W6+wyf>j>)H2CwsG{}qwvay#Va$g zGYr5^bSxJ*YDG_>(@K^#Vh}+@$|<)AHfda z^Dw;N(W-0T$qpZ7T(;bjJ;Rj)X?4$!o$=(Jk>rlW-BVtihVO3Z(jAA3@3|TSunOO` zz^QW*3W3v?hVvyh&Yc=aE}wGu!SArAJsDgl!}W=<$xi3ef(b7;5w;>=3#VW^86I7l zI2nBJq;xRlN4xdC$O)&$fsc3?uU&&8oi1;{kFjwT_E7A(+MoY4uWE(#NSx`u1D>^sRbjE)P@P2d!8CYR5mNeLcD`_G53{S6{#L)wi$<1FP1gzm@!) zRDB8q-$WQasrk1aa!sxO(S7BvnLAc}PIs)uR;5}*(jW6#A2*QSZ4lpK1{^-GdH}7+ z+z9=tFWGxEzFV+m?qVLdaIdzCFYm z@8NG#!9^5YKnvvTI6kQ^=!~^d*2;T=Q!pxrEy8~X2cNG$Ah}^awQ9a_kfz)B+IXP9 z%_AMTDx4A@Y_Fs4BHOPprItO4?1O4s@}mn|v7RH26<*Yz`=|B=iy4X7w$Y=vKGUXW zkNS+*ckE|(w}$ZriRRRnE6-%lab=lc)45#E{&r*>|ApO$p8s%Qb?>ov$ZJS{=WBY0 zb_Cagle{B6xi?jRJiWGaq%d5e8Z$@HgClA6zEvNz8=SX-n_yba@1SScwBu`FkGA_{ zziY?V$}Vb>?dv)Orr5&I$Ez4*m+?^Wb- z?V_5b;@A(L(VSPy`q)O!X4I~kGBW-!I&40_M`NeacqK>Ve~YrV-2c>Ew%3~bAA8>h z?T=?O9tTgFow?^1$Vrn&QH7IkjNJ)KF0kgxmv8ZD08)8rVOK;w;*3aNfbXEC%Po zA^Xqr+1~tVdcT-D(}BMjOW_R*^2ytY?7yrcg5G0Nle}?%UWK0T;r%OBm&KQJ+`Qy7 zFMfO$;ve-(+IGYPPCTdfqN;%>x?XrFaEr;laPDr8y*F$@uQRWA?C#XyERXE3s)&FW z!Ll`lPZNBa?>jZlv{$zCqa+7-W(aY8`cAwD{*oJPmp|8fb z55LiRVwI1o9?ued$bY{u`xuY$k61N7Yw4Q#y$k(q!oBwVT3bCuCOTJEn_@|BWIuWn zbI`;7LN>2nbfcrU4#GF*i*>H{ZtWZyttI^Oy)HvbRt`;!~HWu#}{ z!$qEby3V}Ew{vgP-f!+S*@Ju^J)sMH=$?zK+qf_J{1@oYk*ChN2KTN6KPKy7M!0>; zz?(}A&ay6GFBRsqY2cZq;_;hSe{-k7Id9KHgM!^{J3R+~sru(RWNu9N_on{)Ij1xi z`5y3%Ik=f~pM`t;e~y2Lnnfvk$Gy zI&*-1Sr0OQ7j=n*U)JL>8IBxYs(qO&%llT7OL+AFV95lgfxw3U_Ex`5YZ3fM(lwUh zLpq9o(Dfs!CX)0q`H`sEQGtChsX1}|NkMcX(ZCV>N?Jp%%uCUQ4QmB{q}J4Xx-LCR zYe3I7!^i9F^)xE}&UfW+8iT)S^uZ?VN)dQ?@kC?$GkeGFFbc?JfKHd+Mq7Koxg%0U zo+RhB+{{@mxy1dIGq)e}?tcO6y@kfqnZCS(;X?VLR5v6i{@>R#Ck2YvC-!TU6B`g3 zOU|X8!tl59GtK2gN9gPzI|lPTBk2d; zg{+fqaN=PtSo|;EiEQ9r5B>Y=;Ge9eJ>;G_bej|JpuH~kzp~q^F2a|Pf zG53P!b$)kfPVWh$Ga(D1PtB+m4D;>FCE*vut zI_F1tLKoV;<=8k!9UC7JDAId#E)idR$%u(YZTd{6=<}s;MKSWRRd@%#t-`M_FaA7y z+ZpH35jw-cp7S@cO>i!h=2>lo!JTwW-8Z2Jm&b^PL_6PxcB0Z@pq>AC9NJ<1s{byZ z^S*h03WkB4NAT&;X%2nhuN^~-rP^j(YPb25zU`uEGYB5|ALJXmY{Tx4`xfY|0rten zF6jAWek;zTua7+ImyC)j;BX2t z6U`a}xU^{^4UdX1GFe;Ap{j}wVm_MjNsk6zY6@@fu<=g(0{l%hgl;yi1An)l^;hrt z`kA5`#n1mESY+R}*Q+Pb&MSDfIwKb1{e`UGPV@=M{+ZO$N!j8;(lfLVs9=0EStlOw zB^_Nln)v8pXj<1dzwXqRI(q9I_~mT)=6UeXbE(rr&eCcpjzW8{UU2>H89T5kI=18F zIK{{~b!Am|R<&iRf3;rqif!M*UQbN?Ryfx=X|g+gLOh`PmLm`RZ#%lyI`U6YuHOGS zI)Zdxom(>-9ie_sP5Vo{yRItS-h$t75OV)r_yeCAO&5q=8bdyyr?92vc5)?Y85kl7F- zc5u_y)2t=5YmE1{dvdGWjq%mkx3Onpw^_7I{)A#{3AifYP@ui^1xh2jX^d9C!ICbkIYyY`(muG_;!;vJ%){RN=SFD+@ zeX2R#sjnz~CuOe>0n@y8 zKFFg zwVC14MMJ7euN+-n`faPG^tASDaVc41dZc-sBs_`PK^7wt-)( zpuEVc4xMf-4o$X(O)s-1Pd~$YF*L>cFf`TLFnyZ!D?Zg)Ts+Cz4=mpcm01JncmDJ#z%s@9P5D&oUqYu^^SL%``c&)6 z(MIXwEN|%^v)nqsXI56ZHGoeh@19CqVfq)(Dx7hOwYqpZeN1-^TX{c=7vjewW><5%9{<&=9G4gG}>z~4Y%VDT|fRD=eu*L z(Z1+1d{{GPSQF;p4=b5&?dLr1>-Jwzdh?6tmo9r{Ug-^g{Yq&s=ZAl1Ww`w>oY(!o z%1^g`I{uLh?y$CB&{00wDgn+x<l6^6Mk{Q-|!2nkGAO*))MeMWX6}R@60&O zdN4S{x+X}zTSbXwozL0V6<@NR4F;`W1Vh%`ic)K^|19g;GbaRY%|6Q-_ikliHvi}P zE3LDF;{)sX?hIOi;?0$T9{nyd+JDdY@BC+5Yacl~u(JK^z%^&jD!sj8Lg2mPGH`vW z)nJ_iZq6&s2u-vmg(g`mI8(cYzOTtTxAgDDU$)+=IMq76WU4i^_%v%Zd&T9ysV=>V z*vVRalcymAbiV3`p);&AnWx95Pqs#Z_xu_8Ru^YtCpp{uZO-o&?NxBSYiPKAcc{QR z%(>97gif*E#NWB2xZHXZdO8xCX}wV~)p|1YCF=tE$tn(6`Ow5gw0U=Vg*CBcqV*^G zDu7-xq0JYdt7X&6t&t^XSiQmN)@9)D2f-=O?P=CK#U<8ToV(r0JRIbiF(qeOJEnix z`Y1Tn`epeP>kj%}P%_i{c*b-qz_`~iSKkG$0_gROk}|7oMwzvo@!nZcWOXvex1g_D z=&NW(q4lF+p-r!EO`mBUq1|Vo?O}}lrV7DUVzn@y4CpR5SZcLa6kF$qrdfBE%&=~q zahCPp#b;PIOrHeaCt1HKF16m}obj8hjncXi8KoZ9=G80B(wn|CsPqUp`!Vb62Hu^| zSQnd4jQYfEolRe0y;4$YJza6OwY4N@RaR75=K<$p@OAoh{E@|zt$h{D3umt1%R2iD z>+XKu`wj2iki{AGe6EKEeI-R!Zux0el(W&3(bi{%!fqJKyK` zzmE-<{=j2qUj(l2=5zJ($j+tzmLJgkdBFRyxkljn*S@o}dXN!_uE`I0;JX>nR}nN6 z#%EjzZO7oX?-v(Y`}|F(RWqO8U0%F%(Q9Ac`DLHkvIYLC-+x2D+s#_2HLYm9Bhw@#eU!FlLmC)zqbzIrxiAe@KI<6LCTImnz@*Zyrr&9$!W zL%w$WKJ2FgW$&QZ<+BFzIb&JZBh1fWa5`vt;0(n%^l(3Px)GblC;!#boikrOZO0&f zEAGoAzhNsemLB3G75BgB`;Db*?rkj1eD&I$zX0ZeuU@xvDLDFS)CfFoPPSrvstp6Y z5nIr4df<^+!vg;{%p3Uk9ADtTFkfK*25&%PRGSTquV(Gc(z$%!X^)ljSmO!~}eyBF>_pZ^WKd)lj|JM!-c?^NtX{;Q##b7`v)UFINq!T%rRa)P;< z4!s!2=ceL<&&lNx@YU1dp(o1aWzgUeWYu11sv7xxF1&3Z@>p_tJBPx*f-mnD-WnGkzAJCK2bJH#(t4}PM6I;KrY{kd>({sj3A$% zMlvD=wH2Sj+W0k-?plCj>4(R2g_KC7W;O zy9c?v1ex7{Tz>tdvyaK;l_$vM*GfvPmGJzA&&lNyYw-zkx#WK!m*4q6kjq1CnTV|z z+L?@O{-4U_@7Qv=#Cm?lsn8C1KrVlFf?WOq^5zj_^WTxlmm!-^l*<>RCzTPo=-zGYTvV+FOHccI9$QN+#cij6ENDEV=w5I?->6 z&$4y~r=46juW)4Z4anq^$>mFJnh05OQfoO*D#c~;% zv*j`}_J1Uok>khYGP3;tm0W%|C6BKg^xHh?D|3cn>*rI#=eNk(|CCI|)}&a?g0+pM zHL=FhyO4XC$k_p}UbAx`@_M~lXnl9rso+4ioP2Bbpn-vZ3wr{4@AL+?toH^s-{}dM z$jKlwRkC%_9WzTMYwtu(20Vigs=k}#q-*<{Tjhy0T;hqvjBsKbpSjO2DsSNPEH%V{ zF%N)dBEqL72fdyV^CcR*`bE5%pP~qpp1*(_YIpj zIrMDa3*oGB!@R?@hpo&U8SoBi820#Gd4a<4ISe)Ae5VUpwS&(99>+2x<;mvBmXZ^Y&&NBZ`I^BQghLbM)l3{ADEdtg)FWHfI&_2YN2I zG2`M2K9|w1IXIelCC_YGc!u{-7xZxi|F@pe^*;RH+327eyNw4sF7NYo_1&8KW(N6C z)ZaEb$nCn#yqJ8xgnS9ABej+>d4m3NKlr&PM{$gbk%**fW~^dPkE@SqpR1yeO}$i8=gcqHXODPF|QgWC2a@ez#e=&ie3 z9l9{E2`Prfjvd5L>}}iVHI@@Yvs^S_DlC6 z`S>d0A{0a6p2hZB1@=fk>zr8lX7FVD6&S1h1f4ZT#U`&Owt0l(3+kI^RE(aEUxggL z&BTpwspdTFMMmtW^F>>M_%GZ0?tg|@*Jj-(4%WP?CMmz-l{ayHb?W-!{_B@=9h@Ze zyvAwPInRHc>up812j6C#TOOy6UqkovjO9HS8q43l*jR2qZ=dCcU#zPt(fu`J`4(t; z%iTQtfM{ItKRNM-bZraQ;#{-slsWMq>e`E3dri+dzQ22PjX3s)pEF{ciK)`Ncj?-G zuD#83ii_adT3!2qYacuQ7vXUY*R-Z(qn7{v^m}EKJP%*Sxozp^pyp#=7JayR!dm}| zZPMI`wuJ9m;-efo?T;mL`OW)h=`3@H_oTNYUq=M|*>oE9#&rII+Oy}F_SG&l7Kf(o z+A;O^9K+MGAN#3~B43Q?KRr&$U6-=K-vbX2oEo2x^Cj}}!3zJ!`s2EMS?bTG8NSt) zyPjN_-E)GRb>Rs;LrkI@yBj8kVD=#VRq%~bz^+(`zu)TFuxCg#q577WOy-Og;HW3R zQ~ynJB=UK#hZsZE!1sQ%@};lvjJpohr+e-XYa+ECy};!q7MA&B3_0|rIsM&jo()=; zQSz8IkNeLsVx`+;2d@e)=3H4lBme9pJQtQf(H@_3hL5}6+%ej*&#FzhWh`~m$3Zhr zoTM8E)>lp}1N?;fD61V|#0m`R2@W;NSi^~(z`vGz`KRo%Yf?A!TXJq4AG5+2GxEp5 z*CxgeGQW+FdwLtmLuf3-_d;F2EW=0!a`DX$iB@JK|J*n<<8pkV%&(bCJ)hgX<9>FV zCnvp*|0wP=A9hV=;boN_JLJ^kKg@XVN&EjP|I_j7#yp5$svq&hqdeo_$Ki#ae&^TF zK}Oq$!b$b`SS`FncoD69e6Ni2W+ZE^Xrw5jppkp&bJu+L+NgMp|Nr%Yx9yKB2L|7O z76b!wd${0e0*+?zjxMv_+ozm*7~3yt(gzaCF?CCx#Zi%@`gOl$sHlx zW+d{e|Gag@%zb=y6?UfI*s{%@Yr~oAZesk>=UP0&=0$gVsDbUo{rmAt1*zZdo;~Tm zd5!eRIOm9#_l)zGH9lQr$NlTP(>c3~5_2ki33Isep1g;Y^R0S6(u2*Z=poB*?Ddl; zFcZIN6*AIGOo_9;azb~U%iIuK7+J=1Y0o~(dNnG-MkW-yqdc4=-%6R5Q}(Mb)p`fB6##X_=IvD#+OCz^4fKZ()pW{?_k9BZh>Kp zPz;JY{@zqO>F=lWS*?%sb>PN*YAy5)qz-$Hv2PxHD#B-OKIhl)xe*+UB9HUNnS{9U35K zaUiwkf%_k=)z9VTKWtok1RML|uOS0Dm-4936KkUGMm_kAR9|Vw9=LO^7(Brd$?_&N zcKw&kYDPbS&u(KLw)syvw>|W&S?!87GS^QeSI;QZTD{pjs-4}ZCMm;aVE^Odt?c*5<- z;cW%Ir=r*R;>NB*OY&=8nHyK=$gj>+{(<_C&ZRbr*EoIX`BwOl-4Af9pCaOO);2qR zcv++1cYVQs4zc@~Lfb*`Qzt(+?W&Hy8NO0AKNIYOx9hiJ;Y?zhZv}OP9&5Vh*?BBTq?ei1u-?annoJ#w5`9RjN z=-(GVdct1DfY-01W|YhKZJm;F@0I@roVa@)J@;FlGx-jJALT-|YJPdfd^XtPJ!hi5 zZ+FKoTSLX*?#m0+C|5Cp>{+@tf05hZey9(lbA|7#3;Q`yL?wAHk%hB*JZ@&=V!#` zj`9O5I#Q~w0Pzbm`7F5)-R6R5W#bkjxyWgAeeK-?Vgwt=r}KIxXUk_1bF3nbXmnWNA`FUChbSA z8>m>eWMuxpSR4B*{WhsFRPV)xfnG8fT_o}W&t5@|_ocb98xI3Jx<~|FM7qf`bQ4D> zarA9hr+4X5Yw(T}^bpB_wS$ziKB3H0>(qS8HqDknMpjGU7V^N6FB@+++8XB&w-pKA z62#9Yd%?^$k9}@DeEV_nx}XvLK(-@)ctEfB@_xHd|K7+GZ}x^0cC1+qW1}t=cAN#u z)!eMOt}BQWL|54b9qU>b-zgqy>pZ}zGjbD>*P_dM{F|Zg&)PB96bCaBP)Wv9oS@+jPSQKWD!p{7#g6R2HLo0g=)(M zLiL%Pt4g6V19NN?n+& zmWB1jFwdXQ@y(onyoGHKUlX4m}pP>tZ2~7x~;<2q5fzy78&797TgL1%hQJZEPl1F&%~1?|`n4(Ep9}sebYc#yluKa*Fx` z-uhQoVLx#3*X=^z*$s*YxoTECIT;WKb&1*Y;yKG;-R-Z zdHh}uyT(4{SxbJ}dphtT`#?bRD&0MewkDl`gJZPCoVj!*S`rSz(A74^NSh(e+Zx7s zF?%%CH-^unPdK^Q^l#?~*ATxxJ0E_fJy5=pn9X+<^P({=gr|x}`Uf=UEd;I}A7@1| z{+|*z=^y6MV3auvvc|JIqltseO#?LVAGFGji#*8Oyu+s?nEhbGwNb_WKVK3Y^k4(^ zIvZkD6%E*k^o)I9*M3x0@jS5VT99|B3EX0Cw)3r~xO_)@Dx3f8&Di($H;tn`MT3a{ z8_XVW2)2%)*gA$`4;haBJ;IJ}ZBAQ@>%egZ>+k_+<5S-N@_I9fQ_$-7yfeOc5g10N=M=*u*ge&TD+>juV)uQnfyyf~w!{&(Nop%_-} zSIoiwmeKI4=EgDOWHW0#t?&M6oGDlj-+r5SBE;X!y*lf`c>}1yMLt*ClKS%5ezPS5 zz8&3S#)>`0{DBjU5l((@uJQ@l_l&`BGd@(Ly)NyD-?gzXj-2~X^P#&ZvK*tB;! z1z2bMqKSyld_G7_4mOLHAT-bhEfo)Co(GR_$pvra#O5|v&m+Fxn9^kP@t}1r{6#!F zeV;Rjy{>q*llL)3cHvOL|1vh5(s09$&8xqG{L?je9HYVCsL)$H^Wv|J4L7jg`EfRN z?^byZ)lsW%BeLV@t@ELqi=dycLPr-uPZwa5IiJ{{uUz}~H^WD5p0GE=UNf$KG7|YE z`-yC~vT>!`MP@=z25_&1#?$R1qpGprp&JYlzfZHTlyY5m-xKX74eZIJpZ)pRexP5E zkbeFidxCU(x8@|D`4CK=*Q?t{ZZ>22#Gwm+o>AWRlgYiq=$VfF#;I2?n)}_aRST!e zu4m!eIwkYrOY3EeKJlFFF~A~!k@md3tgVk&TYqP5Q7eJ7KRv3Kko-I6f!Vy08mQ21 zh2(}aPotqX*?>od{yW9H27{lDA=IVBCcTdD7QQ{`NQLmG8osaOTkpOJJu0`};cw(~ zQ)kTKb58An!(XdrKFNv4-Xp%DJbhq@Z)RPaw4-@7UiTii@6j_J?Qa>A0S?2&bnQjg zk}OyyeS*Dg^;fd+ZKU>eK6Lpfj+k)S@*bSgX}ft zADrh8ppPzMUscVX*@gcAzOd6%@CzQn?(REh;!cU_n?mKngMF}wZfw>>|@m>>G@gvaWCzfU6r->+SVAwH95+_(g%03UqRQ}E*qvP*tkdRG5S(YNV=cl8PoDFpZ48%6wV`HV*TW97ZNrv9G0yF^ z?MtrDMt-Ye_T$)vw%LBG7Y5n>oFcAu-#Vcz-Oh9)wxtL*ro;FF@nLOy@~?xacSd{I zm|UOJvMoj;hj+IRpg;UavNgGV4bi@z_l(DORi@jQZu&Mhn`zjBt~ZizxNVOZ9FvX7 zZMToTdoA`Px2;e3zx>+WFaGJ#gCF#=k4U#M-SpQHZMRJKB$ics63@Hs&8I!=OKy7y z)gHDax4pOcZ%%2QpKepS>94tMkq2mJizktA+qqkC$sXzW*p^{Odew%_y_OSyng8}U zpJbfuD_k4ZP1ufVS29koC;5om-tPn#&!pP>cN;GEe@=Y2{(G_2rR-ccP4Xm{wPckyXm$=St=WM~m{S-`h*)X~P zbK>jxZ_Br?Gh^nI?iZI}S8?rbkzaeT=U{V-O^V6h79zjmwH@xoDB{w~(bZ)I@V~a*-YV zdSV2B;fa1it??6e)*w2!^wuWyjC9@fdovxK^&smuU6)D!FB`vG3AWYBi`nf6@Qh9?14bURvF*z0dl`sFlLGr>(26=xsya zjH7Srx+iGsoXK<0H~#{!&>l(p@n7L{&#-T*9SASpGN)oY?-i4asu~T^Ax&rLT+Z4d zRms}I>h?PJF{){y+Id~PuR2-C+W6)d;m>oc6MDB9KDOk7>cqNpjYR$Y>O`1xT1@oz zwd89zjIK_!WN|%Zfz%uro@n0DTb+2c zj}~LAE1Gw$8;jOG)cRDlOhl8K$J$AZ`TFYi2)v{IaX+;fu=(MSl3k-V#Jy$Y+w#9a z|EKYPmGgfyV_I@H_Of-d9c4EZ@V~a2`*)@8Lld><^8aqZJHW}!eeb<6!WM>_H3XX!}0&6n1ZOJzqF8Yel{%Kq@>d6Jh zUTE7cQ}wfI%c>Lh*m!@@^y+ri(5fpmW0`+YT#RZUIs1w3fz@_>xg|W`u+kZe=((16 z>b~c|9%gL+4E8S8+dq3|KhJontyoB$YBBUOi#nX5v-4@+z^*CUfS0c~a*5?#THWr2 z4t>=9G)!NhknJCH)qG@EN|N(TWh{2@QR1`Jhv2B#hfoA z+U$O!InTV!OYMJZi}1YXP3WBK2G4W>L;g;FN4@O@|LFc2Z@YZZ9%%A&Z8v)p(oqDz zVE%HyT+Zda??b2hv5QaOw?f%QFv1vIvx&Lx6dq?NIc=Vk3D)uVw__g!VxrjOn>?oCL3|U_TRc9j+Ek>-@U80;`R00l zbGWo%P`KTtt7^j=P|i~o>qxxE;M2s|Z=_Fhg!e5WE+_nr>UQbbp?o8DaJ4~Ru#r=x zm}~OE=I$mw3;GoAs>|@%{HtzxaHr@8{hz!n^WdYz5BSzpw`ahoR4-I*U1?+lR!54g zE6E8Ht>eS6+n$&^(IO8krW#6DEwA6XDZj|h*&jfT&m$Qbf%ES(&ff~(!)fGF>p$_ZnT>fY9zv+sd_C0E=)-)~Lc@@v=|6)D6oBye2@l&_g45+c6 zUCgtB6seiPkwe-oRC~{Rs2X z%6fbk-cyiEUJx*{J_tLSC$Jk4 zvNcVX+VbgA`rG34w~OaBSAJ}3+6xLV5%dE;_?P~*8(WEVg;yVOYQQuSgJj!Hc+Qc9 z)yMSLi#Rh;dMxpB_V-oTEcJhL>U$60*uJ*gHZpjg=GEqbe4B^-cI?tIo?DP5JBK|_ zv*A&!we8Tb%|F%V*O7;!%iX}Q_FOxU;jeD@TvFYhH5q%T{C&f{?Q^01dfJ#p8yiz? zxcz)eos4u_k8C@A#ETsvmeZ*Ps=A;aoh#Cy7~aj`8-9E&H})X)_};;uDY-yCN?ba| z5YOQ3@2t4C_pZyX+p!g1@!s;_j%PgNp0bA)?=U%wai%BxU=zG2#Pi)t#$BwspV~J| zzn}djxBjQ|f4^@`=m34}`X%+V)B7e)>>c`lmwSpAdXIa5qYcHcyw7jhf(6fT&#>&S z<=@@8>awLfsgoYdho1+$4m{soab554faz}@Z_HQ`-1!D@l>nCm=V0I*bWrg^;Di{d z{#uitF8nt;j?sl@E@!$O1ZVHyV>u2Nw_Mvh6nqE|zgu3v<4a%v@)zPle5aP2+C_t? z-!Kdw2k-osa8+rH-*2$qv^Jio4VQkvxc<)PBR+@u9O0uq&e&Puogb5v^k3w#A0dx! z`h|Icd#J%szIa^V;sYZCJIHbWCi&W5&n~BK1NrCFRoFl-=ab|gPoHJ%EI%+KP>p`H zhrF35YK>CC)4{mZ--mqC`xJjdZiI9e@gM1P2YoK5ughrvLHdzh`_YbI%XnbAeR;T) z{9EM^4S(q7F@c}lnj3f~dxrJ&Cu0LY?wcN1xzs4Fr2mD;fCg}{ngCCx;JX3%HUOXC zTE!mhpW$dX{G_MonQI^aYPj@?1y!XketLmF$>(D}im4k1T$h*RTa_i8>qSk0`g!96 zXPrMj@EK!xgE3rx@r1w>f3bDOB@+VoW*3u-c#2g~G6}qaZ(zzLr>^W-D{$jWGXwYh z-U^%r{8Rrh)5c#R_;{aJdrMZsYRys?ysA z80|Z69TRxEF*ooN?yvM4?LXm}_D`kqVb9xPFfs*6*I-AurrZ z4HDnA|A;=Ts9W^-*TH*jRq6ICt4p7}yrxw6{)Eq`e2((@j87qB3V{C(@ZSdh?*#wv z&NBn^N(!wHzUdD<CKYBs6S){iW&Qn zH%jbz+Rqpt|2p$j>j7Rb@cK$Cf$fXtYU)3kEBXG?=c=)w>T`6j`O;iH&3ycr`OsY5 zw!FIZnZ_}J)}q`%_rqfY5$3C#`=8!0Ch!?+rTyXQ_B`I6^prlt^`l2vGq=~2-ag7` ze~5Yh3G-~XJ2tJ|2}b*|HHGi*i{^P%vX44@HOy}{dH+?{zBkaR8UF4W|La=m8mf^s zkDA~*FHv>03yeZ*Fgj|1SxU|O0?W2-q9Ym9$Cpi3XEC@s(mLc?GkY5Ip_+E-^7`%B z%=zqmdmkZo6aCjjx07!3dw9NTuf$-sGXjy{Ellm|X3u@?!Rgr(2W8q60D>>0s_X5BbIE z_X@%V*1r`OS_Ay5X*0?40oR(b6Rp)|k=2AQ7Dd+Hfxf+p@hr|XN^3`ZsC!|wyEbCC zM%BA#{JYH$gaf0kroB!!3;f2vC&tag9>d4k3xZ)HZQ-`QH$$J&OSen&sWLi z9{|itsll^~dk1)CAiQ!IdCLXVmY7A}{#C$nK(aq8--h)SbcGZ9dm`1Jvrj(T-q)xv z^*M?D>geknJ{k0ND%ZDhT{T|n*kc@^kM-v1Z>GMAN ztOD=C>%_4I_BcJ@a{#*h_t>L9Og~}T7oOF|DbU-$(vIdza0-?p=4ya{qE*X$Txma7 zWc`F^)UKEN^7R+dw#Q${{d~(yuCC@vZEZ+v%fqwzwB_*^ST*dglsmp?{KNKh89YyZ z))?sztEo{h-CBF7HT+)9b=fH8$B{m~Vbz#e^Jj0Evi;y+JM$&3-@rBLl<`UEG1Sqs zY4@SrSOK;g_S@^FXUcvy_s|IYxd^uS+Ul0Gu#qOQYj3TqUU!!4?B7O*zXAUj&p&>{ zsb!WYn9rHA<}KZ2HYIe*EH+KeT=zTl?Ac>URtMF6tlm{Pb}@ zG`4@-ue;+O=!|=hJMMw8;Gc4wanp`HZfyNg@35^=?EP85V4l5$@eYh-o!vUWnRrrr zyk2htJEuL~X2v^(e#4Ac`~JBT@?v4etKXW}wfG2HUNoICGrxMTxzI~2f3&hrW5zGg zlsR&1(|ys(_h_eizCYGOO#VIWEBxR#x}|@7d8zS5Xxsc&UaX$)(g!I{^=&b(fq>KFe+6n~uP zSo8Wc{r1o6xD)1e2=h9me_na7d5f=qUjM2w2evjHj#l16f6eoUI`jHLYF-PSe!A)B zr}VSQ9pAUcon&5zIpgzYq{cU_e_mmn;&c;O!9QNFv>rFO&sj0Fl#Ai}dW#vidcSLI4ruyDO z-;4Uke`WgkUr!tVvH2b8jDL?i{*nFjOFQ=Xmoffx8GALKvzsc%9h>8kskNKx+dF`@ z>-60U?$4p`+GA^X{0VcM!yM=I&oS>c7Y^v3d@gOO{EW7m=Z|vc`EhS* z{q~PDls?XHjX%jek9NknYCvk9NB7V3mee?3VVuhtkXplx zcTfL3`*~h8?acG|w0R!GJdf$0XWrSk-+{xP=S*L+=`O~(j?ed+D)*}2&#mL!)H=4$ z)=X|J%w!$+kN@q7X>|U2+W3#n^H^v6)tRaBkL{ml+Og+(nlBms8DrnV=O;~-n}New z%VSe(Io0P5qq3=cgO8OdL4dh3_`%z59OTpSAypGr-W3hX*nZINFXb{&uU_?R|5XI?ZT7L1)8t1ZkR z{=+1%W-Regdu*G}=i+)sa~(e1R)Z~ZlKWofyo2K$~K{CI6o6DyULd#b!Z*|pmCkfWIvTdC{VkC%2+ zXC51{?XPZK(nMaWd9Z}NKDMed<&ShyXI?hUUHI`&jQ4Tl(2m7x;~!S6l1UuZjf_!o zJEJ*|VZ)GIJ0EP+$3o*)K7?Xp-80^I z5!WDiBfy&vyj{eG8Fz3_;NWn(aHnyOty7%S*mwu^iC;o4_Ki!mwK&yQDrT{kc!y4W zG!bv~ZuvS5_KJdWEiv5%oMBkF`-+_=KC}XAjVZ4NKSO(QU*D7PpPb^6Y+2DOM4uLC$RAyCcB& zb>Em4^UQE^z&FE5AM}_plDZt!v~c3r$J+53T5IN`jCJ+1XQ>u);C^Ujui0y^HWE~r ztPIqcy+>FVH<0h&$J!`>7idlN^8lyD$l5tJ{dRra&`U66YA6eA&@x*r~Aa6Y8Ywy=LsHf&$I|9q}jrP|Q%b5d>S_ncH4=NtC9 z;Ql(UU6OiMzrT@sR=>ZMdbZB6^Xcq9rlzh{7`6{acIRTVX{2mY@B#-1ONXBn2a0cY z$Euh{jnz9Ub&WB}KcPOn!PGVS5Z!1zUd~0Z-vw^vrwMNFMX77Rr+KqsNzF$G_HKJV zc7Glg(Wh``78o(r*fJ+`4w1g=3|roqOO2S|Q%;5A56s6LpR$R++V=N*Ja+!CIouNy zd}aZ1R^JzS?EGJ|4tmu8r5-1~dmnPb+C4@rgWpkpHt!QZBH zE}gnEt&2EYm)O}&BZ#%3AA{emqwP3_sqw5ZaYLgUoP$9ZbBkvN@Lo+vpclbDaz zUsMI#yy4_mh%H{W(ic46W6m4o8I;xP$WS~|;kxKgzn}GH&C_%CJ+rZ_5}TUhC_c(oyj*|Gc`eV#ABkTuxsmoHgGUj|s94>| z^l*YW-{H@AO&brj$b^}WzXGdR~=H-l5bRPEqJy3W#0 zZ*yKV@#!~lt{MF%Z{{9x@lzzrG|#FvunxLyNzo-f;HupZWK&?61Jl)uq4fBn*jnLX3ex~)18GDKEd*){&_o8kWlG;fjTxGa5S4b>UgDpzu!)&jI$LZ6oaY93ft&8ZX#S z7L-(lD?&U&{hxT_QQy)6*75?6QE~AAqvFz|MsO3c(oxQDG7Zt1a!2hmX+v%vllcD= z`T8s>~4&J{gI%c51y?-0(Z++^oF_0v53HOHk%@h6x5-FJR)l6O?^8HM>=vfPDnFGV)#7`aYhAVXbwprlV8lbJv9~c{kk=T)HBlgBh<4};f7H?2L z5!UK|-J~o=|3>v%6%KJU*N%x)s{>q^(7y0W zjvoA~pXS}%xOLbk4uYfE=yT?P@ZG9o-^$)|ZC*I>4%Z_CjD2%G*)7D}>}%Ow{QP0$ zea8rB9hq^&mmU8(ea$;3yrYpC1_wuQ#<`u_q`dCYq01R}Epax@v}K|nexGO8(qGUs z=6Uh5wOQe0vxQu=&nu)3>+X#YNQaY;xd7eVh~~uR5$DGFsQZqLRILmjyp9@Cw+^t+ zwzj*K6Zi}*W8S*KPb)ZsMr?Vk z^Srb-*>sPw&r80Wp1aTH9g5{MVn1)}yB|C*?eyJ8Tz`K(x+9$V0F1V7*1GpwI~2#% zL(WZerjbzWZb{X`@;eK|6^))j4V%G1$wmC16=FZmxAALz}3FwTl?uQ zA-1I7gIC$CWT$fKuNv_meztM`jnG!_e{8z`@Ye=_+ku=P?}^m|L-*gp73NTAn6(10 z+1|C+h&{5>#$Q}IiPo0z+_}2xtj^WZv*7p1r&8y-=~-kB_~(2#@(pBHz;-#c8@;h- zMmXX38;PEA)HuNg+jB-Zapq*>qMO0B)|iLA<$)*k{+Q62tg}tXqV6w?PR2ASE=X-HY{lyF6mKDtkx71VnL71zF`zD})b zgGVHLdi%ETFJi8c+u8$8!miy-Z7|*2#XNijt*MRo`R(fp@9<6yS9m6eD*K`s>a~V9((!C^I{9-GGF082V-qQ#}qpzjPMi8{e<+_V$go{ocXZWG8Q0 zZS)*qKEZRqliN`Eqq!^mhx!%>4u=;VZ?|!6H5y~D`r51f%mFt4?Oo_=yOA~4OI_=v zy)LyTIqQx!@MUn&2@GS%pFJ`zoUmboZVx<+y{J08^zh?9%wxY0`Ux=BLc79&Y&hK| zn%~h4ic8dUbCIK*_n0u56T1!Q+t0bp;yYs=Tbrl$L?3t3j$j-m8nN3L)6fJDIP4vr z{gH1hI)W?=^72vHQ);!@P%v8Nj5Tm<&R#2PO=f*V$JZmD|T~_zU}-9 z>E!O2vXYg8QT4y2`$;aUKhbID8Aj~cpOYVm?1Lv)yp7H9n(MR4HHeNt1`KaRmzj+{ z==)6z%b)R>4c`Y24|u&Rwy^vSVE7yM>Nn{BJ-&bE8EV`Ah?xz=9%~HF%rqv?$2Op6 zHp1KA=X;@dc*CJTZp?efH#j~7{0#CA554CZM2zd;_+6j&P1#vI@)cDc9&G7iM+>ls56diafcyZ)dIWTRc^~!|mhY{R3mNuk?^dD7heh7sig{-gj*;u8w8nntr8g zHJ{KIJl^i>X8MADw%2_YPCk-hY-j{7wX62ib+BW3zU1!rF7!Y@vSVbNFg~yBJa+8} z_Nm8>Eeuc8*uF`B&~N;Y*qx@ppMLs5Rf2k(p(N|JZ>W*j3>+I-YpctCl((n4yyZ=3 zLN@R}bN)8GD$&OCxt`qYiSV4Cf=BQ)b%WQOH-&S^wSV12ACgsqU$#57t!uY12kE*^ zdTypkUQEE_X)q@@<(cn$*b_SRuQl+kNyJHwN#zOUYrhD;!(OL*`aRQtccy;p+x6*4 zkJfyP4w~SF(xX>lS6R(|M)M)r(;ULyWy6)WUt&*@ZYR2g_$ZyziH^EW^I6>)u+N6| zjE>GY66MZC^xPZdGz<8hTV<_+k^I&YO4U+TTD)?YbW{e z$Fi%yznQO2asfr}id~UDy)h3vRiTl*X9O`?b2;yPWmemxtXJ`#OC+ysnP=CJjia~O z@>Tb4Lg%z=*3iE#n_hCx^8EvFXpZ#Vx!6!1&IX4^ecpx@RQ(AL_E++c#1pgN3HF}n zQ%_r<*hmJZ@Y#S3DBozK{%O*P-f>peca4M*{+F|iaPwJNUvcKiU|zz|`|mTb!7yLi z!yRXnvz)zy_HdgSTU|9eeUTBX05(6c_8>Qc`2UKBbM`i4Je%vg*t_bPdHj~%gH2_! z_+Q8p4W?(~W%Y%gAU+&B z2RprOX!d_Jj^-1`f$lFj#1H=*KYlFLgB|=`^nW=PU6(Z{xg%T(U#;l;I>TA>G}}n= zGAZNXUJxVU5Vl?}+SsoG!QA<(vX)W)x{}#hxm4UUA=EZ?DGNU4o9jnDZf?H!6^+JMfia zLsR}aXIq?!oZY{$TziFx_8`OqXw6RhD(5e-e>wo(9GyH6I+OX$M~~~K4n;RQYgGE` z!_wc_bHgL-H3p9s|2k0@JyImwy5l#D!Y?|p>;IB-N5ErQ_hRb)&gZ;uXlT`??jFFY z_kX|m0kTZ?l@}R5c$wCT{#64kHlMW5HgVvY2;6g6``Wvy#-zLcyJzAnV_rQIqx1Kk z=J4%&*0^k3YaV1w@a+KnPc`nvzgyXl<}jbs(84axzQ=?oe)s=l@7?30tna+<>zWDS znwbO=5(osyf#b{|qLI_IDieZA5r4i;6m3PN2~u|hgOypaw$d%3+BO*v z^?=(<7nej^7i@K*b#2{e?=^sjgm^w?6r1P$xh4Zcq`mikp8LM{eqOKVkG!tQb^VUt z-}m=D|GqyXc43>jU2Th=Y0ss{<(+`Pm@#=>MzWhRYFtlhovP4(h;RM})R|{ERx( zjXg^rY57LDl9sbhWrvaMv5$88oFm8yox%y>x9l<@{JQ2HM!xtVg5h=p|Mxx6*j{o! zRX2ifz-I4aW1t;=+%d*jzt?XBdciN{qi)9!(wiMjwBs-66%E2J-HzYMUVG+uMtXj% z?;+M#^9#_2asGR2^*OjGJkDIJud!BI*WJt|gxzGb zU-FX6wnJWvtz@NPMZ(Yz*#&hjN^7e9M_z)2_Pxg1$UGkz&zViix1P>^gJ+x$+|o8s zo$@uO$AQX=BCy5$_UyJ(Ic*MEG@pF~11xZxU`X_LP1#)?SA{Fm}mJ+{3-Q z0hot?vwSW4hW6;w?9qmANWL*DB$K7kEc^Z$w#9lNdoJ**H}x(FM`2z+wR_@g_` z?Rz&(8~|3y{pUh+(evh;-@8xy0-l)M&U^$R@hpda z(~kca(DMfNGBAt%c&d5u%Axmz*mMT44`|IVM=z0Vr+NGVUZe4fh9vnr$XS>_Vs|NX ze*19;W0Gv?EF%Vy-_^+KWp$#%DSE}3F%Q0;LYNp_kD~_^XX&Xn&_0vhUW7J*1C;)zeZ2j z8Z2c_MdZ)W9&BR{(zjh>gSHK%gT2}6Fle_39KIaBbs0L+rL1jz$Fb|`z>92K$Clh9 z9FXkPNO{iCBpQB~o-cXDncM3>lCPn%qhSg-j^D@|H&42YBt={8oGWqYbNohhqXy>N z0c~=jQ?)`j;>Za;{NpZk)GG3dTZ|RIdUDoVxBb309O-OEe}-4rSLeH;Q}YdMYc0w} zd!}O9hU=a1zqn+F>z!%6@MK@Vh5pn^zb-47s0O}X%vSb5FO+ z8r%J6%3s6b{>uL*xWD`t;Ql{(?s36%DLA2hqu-LrhQ|?p=o}GGI(2T^iN0_9_KE8< z;sdN%+E$A)zPlMc9y(ONQ+!K%4*l<|&|lH$-c9gVXcsd0+)u%;%SJl}qyyF=^RIly z7}z%(+oWW{%9a(_rv`c_LIax5amS&df&+M^$eo{&>R1F_Cy)UOfR$%kA_S41R3L-A#TJ zQ$5b{?Ddmvl!`4&%Z45BO8DZujtXQF@Yb$Fdn=)7E1QjuyJ+Vf#K z*G#JWnD=R0g6KtPaWElYqUeKSCY!KHHlENCx5<|b{of`Xaq99DI$|C49UgGf_f13J z+2`EHk&2HHFZl5L_>0i-yO3SA4-^Ar&zawnE4rZLqDyJt?*D?lcMAMFVGoh~pQ4>9 zAJbUz^dVaQFYPD%ZLDkJM(FvjI_0S-jJI>o+B|%IrN-F)HrDz>)>8B^{Y;m8VTi}i zwf$2@Y$oeNeb)Gk_6X6$Mc4%;6Nn#7qU>&LP#xsL=q1k>IG$L#5!|gZ2H;`q2WJ_9 zKI~iKRpOgA|H{xa)Xrd_K^MhQ&sVd*Zh@@Y})$Lk!IEm=4k7AZw#%nm-}`An)2X$w2CTiZ4pe@S;De zZA*4D%_Jz~I5Kibb4x8w}$gvaeVqBE-dHv1;C%!G2zq7o-xUUqKmY3?)l z<7b0KHPDwD=nuJMxL?SOlV>MhgN%6yU+iIQM#@WD1AXZs_F&Er%)40FwiTtv z^cZ6joMdk}X>7NBF(%QR93QQ8YY@AvWMb%=BnLO#qdlP-59!y6I_V5 zV$)S#d7W~rItHe9v(3zAjQJ`Em+greyR(FfdSB~;+Gx8aCdDSl7aNFG)LmBqO z#gm0ArT)9!skr_$oi)oUeey@E?M3KXsxO<2*5t?^ss`hW8V%cmxHN<$^fkh8{sgdzIkR8t%iw?(}v2m`&j#%Ho`ybyb zUY**{H=-*elYp}+8If@u$9H4(q&oZp%lp1Xo_+L3#SNrke>-jckailVD_)~^wFb!D z@9l%{80OC6^m+`(haJ@G8rnPf0RHUWQN90@*8AB>|L3oFci|V;d&d8y^)CBQuJ=-O z1KHGjz!Btp+x8Akx8E%_jKoIdG%sbO1E^f@$kzK7q2Dwh<4X^z<-Rm{My#1{LHv|1 z_=k^r%GYmouk4gPQnc2qcl>D&ikALY^(z@b^T1Z5`9d>Xkw)gCJ?~myTBkEk$|q;y za~2J#_%k#htwYI%lIc?tox5p@=mGjB`*Sb8(Kgx-p&xdTa|j>67z-W11&qT}h}|E7 z&Cx)&B;KPMcmltqY`k8*qwGz{xuUVX+^f8l?~-q@t0pgJT-ulSIG_nLBnJ?SE;(R^ z=-U@%sx)2I_!!Gc@~&uJn0~ab(DM2a;}?wD_^o-0R;1~r#v<9)PyehpHfGx=<==S= zbOISo{_M>|^OSrW5iLG`*PYA0PcK~Dl2AFpqL4DH8P9L=2}giYE_CpE>TCs%)`Zt| zK18hVZ}*=T6&|h5&y6bg+@0u@dl}zG@GSyu$N!pW0*=B%*0W!En*|TW(OEfK<23Iu zPonQ`oBw{1zMleCw(YStH?p?Ky9M!Ak(Gn2t>%!)D>WA*Z%#=c_?e!QX-*;kh|U)+ERmnpOCCh|5sdE5 zc5Zl!JuUrTIOk67>m+NJaF=065X{&QjC;AO3_WjXZ~p&#SN7iiCOVAm7fHpT>_gAD%87U6sr$NQ|8B!(a#OaMywPnYKji)G zO`_YPpQYreEA>A(&OS$x;pG+kU=og0T>2s_y7xJjuY&l2#xP|-JGj$xEf=kl3=K; zDuo+_{37QDr>Tv1<^F{aPys+Aqwab9qb51O1=E(}kC zhdtH6->Z~qASd1?@_yRmd2fR~9^~G_C1ZoL&!1drk7-j*R_S->>&Mmz@`09>w9wzK z5c!bCE}s2NPIl?DygO`-EPaD#7vB!??fl7Avrkp;SCmoR*LbR~>ZRMO*=WR;5|frW z59oej*4XaTG>^Zb&d>N$yBbTnFBfxa$TFCRG5hC~?_*t-9y2G(A7qdVt?`QRp4<8J z(}t7!wWg!iu#D11#?f+xkMF)c)f=L2@uybc_#^6t@~}%2@6mJyF=s&|wi-X~TThU0 z@qY3d;xl`9l@WUnU%~rTMr@(_VNLJgZxuOK&0yErUz=1pdqkl@?o;v~kwdm;4*6lb zH{G`wxuwj0H?5>+mhsfJ@S3N)TT}0|a;{00CogF!-?EIv;qJ}$w;5T5*KDF)!Mdw# zW{IOP_|(^zES~-PM9Nv5iFta9U2f`c%P%U=nsiM$<%0Z`m611Uq=USNMqgLNk{|Xa#@9AwddWw?<^y1} z&Jj#(za)ig_wc=?YzFy&yUxCjJdLjct98Jt;OSPo+`M{|T)&#%%#x8j-x%qfy$*Pt z_4H=@dk^#e#nS^{#4(Ar zT;eSK>XNG2-{JQ<;Pgb-R=Z60Z_6$+fU(wU2{6-sHOi)wN7$Ub4w(JE>rT5|5I76Q zo5)wV4!_n1UEj6e-$S0J$!R%T~n6R6S=XZZW%OWjdEko8bSWRZ0;}{$@yXnzmE(5kGo?jx#fK1 z=5mvB>r>>(Cl5@EzQo@r{E>ICUF4P=e{fpV z+BY@&p)<#Sc&3qf3z_=p&z&7TGofuib9B_Po()a6?2#=}@fMBz_Rx=f`DOI^P2S1J zc;nDFgS=;vjs8;X*7o=7dA~7o%bwnu#E_h3@t!!5@R#j9#I~AYUG5)vs+rs(g#``rCk>E)EHUX zKn~a}=&|_apfd|R9*uuFg~tzpd&1r8!P`SmWYbp;edcxur{BiEd^$Myebb7q9>U9y zz8p*n=lj1rqGJ}gdF%#v$A#d18jt(I$64U3aCYJl&i2o;*blBXpI+x-PNPoR2iR=m zFFUN*r~C=mZ*y8P;d7re*T(ZV(|EqfNWO*7XcI91fE)qBPhx)(4NW)h*^6EzJbsF2 zBmaB2H#?2@o%XllII${}85iGeKPSW=PnSK-1+GuD_rSyUw@L8_d49mV&zzIu$GG48 zQ*tOIX@7vdq}Y&;=YSWBPT*lTeH!7p_FnnnQ2Y1s)ce#}QhV&4q4w{#pGEPQ{Va~( zHB|OvyM6Ve{?xDf*EkB|o{Vvlmyfwjila~7`vEwcxyLmB^jOy0<;KUq#dA1ZzF~hW zj(^>Lj*DM!KPSXjr^{yacb)xhQv9ntKY%`D?!nCdzG9afAHO=?M#ef^W`8S=*W1r= z@fG%SLj00+*^K_koovsqnrC{C_N@vgG%sT4ZC^5RzR~^foV-tk7nyr?E_?JN_G*pf zy0eTVdzAfpDZN;?L-{d~Y^d7hO_Z;nGf3$zriT!M`pZkch zbJ14c1$ySiE@AKY-R~m4(2DiX%447B!}rFVw8wRKr1o}im5~$=>vQJ$KOKs7QCy7T zVGiTN{rRSG1CMMf8h8`BbI3We-9D=2e9jHT3^m$yCbd`!=)gUO%s z{CK5k%DDJL{BCnzF%Y+(mkzY+x#`k@pW4qW1|Hz4_L6l$((<}W)m{(#^+&uPs8So_ z<2(4>b8#^F1D>B;pm#;_@A3Ns@F9&OqF;@)V}#GP>Be{Yu6b-#UFN|3@iq=3|FU;a z9{(nNWBeQSWcUj=JT>-PdG2;z%KQuCH}m_Kj9;+0N#8eJF|dxO+Dy@u2`T>1 zJB@v{o{YW8{=X<5;`zlre`4GXeE&zrtucRv-)*eH)p`Q|D|xD)LZvsCYx$NBcNIKG6Z=CGKj+V06%hjV!Msl5ip@h|cF z6XqerkX8YcSS+UNKO>bNJXt@lI=$V?T@HZu`kuFrJc2 zG|s*oL<7&>!&x(%2L2FPCHw|7umD+wy{$87AFxMk8aO&7ubd6-`w$vD+-W$kc(9g5?{Lnczx}9^z!(*sEC5GzQ4J)9X z%b}f@Ks!_MRK$i5XQ#7+BZ#jXNlc0n{{;GxKKpggNMmlt)WsbS&Pw??-{1^X-&C^$ z8rSjVR9vHfE_YA0V-JRgKl-F&p?uW`Lvdm=yf<9fuE|ShQ8s)L`Pq2y=~hfrX?!=a zhY`Q4!!?;W*^98Pn?{m6M#|MzxcTXoogwVz`-y9^{TcWJKH>cDcI?}O*~WXhI@h|1 z^CX<(8{}@|jhu~AOv7~QDppW7n<~aEpLHQ;(L(W-L>qViJ&(<~mz)!u(ZyPyF6B-} zV{Xghl>?)x=hHb0e7W3pazJ<1uWBnNK8hG&Vj7l^ze{n0iZ^b!8#~bA(t#Gv`KXx05+oafQ*n4!2AG=SW^Ls<{Qmh7j?xDXon3sMh`28Y2!z28!b=t*K z=XG^XclVG_d^_vha?82_92v=hl@55c&T@0s6#qQF_2id_*1C_i?44=^N|j%0g=@!H z)~(2S`-+c8msBhuetrNNhOA#$$X@&bbCn&bmHF7^r;OX7J2xa3 z^jY6bTYkd~{IP< zulaL>i3s~|J~lt{1;urjnaQ5p2fhmi`@nPjI`fFLIH35eZuZb(?JGWmMt*u-7INtb za6cRRITHG5#@jh79G|ne<1}zP(X_hrLujgUS?F$ct@F#yh| z6OU#QcTU{6r8rOODQ}BK`{e)17cH`B)du%O^{qbtIy+T=f$EoVmd!ApoX5V@Z@XXW zH%&>6SN(dy-=!O@i8j3(YGcXBR2wtYMulPLx3uf}7yHul99~y_zY1N@*hQy~#i;uw z#!sBuFM-ol$on5dYnK*Gh<*lr4&N2jowv~TqR4aL+bLlJ4Yp}7xxCb_L*tomB#kWN z$u2t{Zz*ec0c&_ZYk3|z#*&WDL|dy;=TokvuQFg(bSAMK+-24a?zV%o>Pz$JzJ5}j z;HJ6Qu8T*d2-n+j^ESvgNUGP4?7rf{G`1mW|9nrb(_P^@vB1TEFoPEB8 zeWBR4eU8bUuS{9wdnMaQJP?K6=ni4lFf7<#m1@U=-mJu*Tg(0=A3!1mE!<3uwP^U@ z6U2uWaAuwJKGoz>(>E7*>jN*@w{a^R?p!+2ijL!68}Z70ZrTP1z3eIWcchCp;pefJ z;FWtvrFf-_a-41R@59HrA0KEdW%uL9)ttgJI1@0+(0Plsz3|XN;!QM;*U7ym-t|-M zEnsHvZ{T&vGpRx_n>us`(|;Ga!5rWkXZ9Ky2QjZ}4|BHozj61X_%FVcxn1=2?T*2F znQO9-_Qa#avoxOn;3@ybNijPab8Z55h0OVL#&nc%HxeJWi@rjOgGpk7`h)oI({w03 z#!ZDM;y}O2dMaOA2wva?A3Mb7&8*nm{KDu)#)V(DzsGIVr}_W!HpX&J3|dA`Ejypq zU#lH(L42i>{=d*C=L|*r1e+^Wmi^wy7*ADpD)D3KvKOf=d%dyZ)McN^C|jkn?8(M2 zox1F*2`AcJsIu%qNn;RVSgJbgj`@&6~@UjCn zz^QtID?0Z~hkfszu}AE8$U$G>oqUYLWv)-JBd5m5^X>aV#g!r*t)=@)d|$(>n`=Dtuo8rqZl52Gf&xuJ04TN`pG zUiAEF(K*l0j^=G}6i9dL84;X);Jo1M!?~5Se|I5182o)NUW(5N-`-1KshYizJ5fyj z@(!1kmSy8lb5AX);;-^=rj%Yg%29g1dwR(o{B8Q~w9*I0WtG0>o>_A9SA(%Dvo4<*g`L zg!{#ozk`qP1^%uxjoFPZbM~ry$Lz08aLy($C$c7V`@}KPy`Pyf=CYGK=J_ zFz}Y1XXU!0yle4U&KfF?`7BDk8iti z#KyDVa*m3ZLQkU5ixj?{h-Y#d!P!&r5l^$qxU&YI;#sy`L^Hlp-<8=Y& zHpcLm^pd}KYd;pmpJu%9ym``5)aPH)Q!>ZVH+9dN^m)RMp?k!@`Q@Lp@S7<%;uS|B zaj80=l{#avhIuKzY(8sg)20INHUcSd;dORCnj_fHjtWwM8D`~sMyGOhPyyz!iSH0vH z$xe}>@@~`ZX?(fKE`Oq|tG}PJVXY%&B`e$O$2w|^KICM{M;7ZBy6Qw6o^*-6slT%C zZc49})e4Vp2DdS7l?;V#5>UFPwrpR<5tX_jQxRKInmQHV@cDBQ@5 zleEZxQ%L?B-IF9;v|zGPU`;T_6iyg_7H7t7e#RcEx5|*?8-ksdtLv(H{JG3R_RCnm z4_TmE=j4-1pR!DIMTfI>j6p1%;q{fYI9#5;fw#0f%oW1Dj*%ySYv!Bb^_DavN2c{X z<#aVg)3}d0y;g(Hk;sh2Hvb_uuj1GZZ=qecE?u|8uDgV~ zWyqtS-+DEA$W`=tC4FDP7%s?@zTHMi#mC#|m%6;)R{rjn zj=z7G_YL?@6i+F-AG$U>puR)5XWO|ynvWu9-=6z$LsQE+p={wrFxmLK>{xoQwQ=uV z=;^FjFTNCu_|1+Z=E2W48L`WlU#P-Nc%g~+y1TCWh}={!T{SIsw%Po6U_|rdidhX! zHDb4nY<~PkXY=DX*AmByeMo(CX5Wuq<9}!qG;{zSaSAw^z@m#7f_CPbhM}z!ffMaj z#ht&@yub;;A^p94`?T0@-nVdu_oVmj(_)YCp8at0`#sZQ?Yy_?(Y5E>aA~K^A?9bV zDQ9T4rvI^#zCIY7r#250iz&N$`RZx0A5hmAYV-K}mT9rOdEfP}Vq=X8-_TkgZ*vGw z_S2@y9Kz1*HB#}nCVGeFE7{p9hcA!^T(Ef>I5ps_3-Q~!r!s*(;v2o>Tsn7H+nc~G zjrVcd?s?0O&Gk!H-^H3~K2<~C<9u%c7r%xqEIu3hT6Q4B{I#~Sb@`lxgJ zeKo+lW43^phg~P7V-ln4$~O`{7k8~U z!IQ=8nX*3Y?ZDT=xO5icW9;+NBV0pe+m8J4W|dt)*)DAJ8k5iLTHiz&jkP+LoC3h8 z!yH%;XW#owV+=XvJ@dFPRQJyIE!bJSmwm4L7I^O`AFW^ZzsfhcyIQbj4*Y*6`>bC5 z8k{+Hx+;BUBRsPf`S;bqdC-Xjc`b_;F~>H}2u%{4$X&4iPlE@nppn?e(|4$Xb3kXs zTy2gH{jWSaR^wSQ^AhUrHj<^k;?LlB7WM_h{jg|fnnqe>#&RpSwE&%FZM%3P^OB6^ zrMzgWXoQ}_ZF<zpP&bYB7AtMue_zdGNC(ko-!XosIUfQbxPixHSvFew@14q$I z;8Q!Mplh^&KUKF`6NL+}633*o$uq$P_!7CbQ~45hjRFU0zlZ!#+HZo*Gd0jw-dQeS zM;~R})2y)vEuO^Bo4M5a+WCQf*sy?c!n=0E-?iemJvzF&wt#hxI)dxBW(U_x{)vDu z5%4AIFxE%iyyyR|{J%BZSif~taQ*S`Zoa3>jxyG7pF&;-;yQdTvo0ME=obFbW*SG` z(~Xr^xgTTN?&?B8pFfs+KV`H8H<{yX_^L~^Oxbt+r6&r!?k~326-#NnwY;hZbt>Y*&h4-hEOB|c( ze&($zge+Od(!)#Y{t10FL~-%T!BkIM*Hxkjv-F(Nx5Bc#p-x-XK3)`h3m+T-CYx$JwzyY`mKv=UK$_8`-g&M;P0#gx6lm-&Op<54Y{O zmhbS%&F^Q&#(#NcEKoWl_T&pQVpkoR5qs(588OlHWAKkYY;o<+6nC~WH;wJkCNsrv zhIqr`7IS+LzT0EJFG0T_AOF*Lq3LJJKcljGM~n;ag1i&YProleV@B))-nX1F?ER7% zvA1~NRhZcZc|FwbxXgFO@guw|n>?&O?fy5FEgSxRX6z4Ycli4yGh+wU&h%mBub3J8 zjmi&yzj|iu*Lv?AR=#CsY_HzW8uots%veJ2=kcDkI6nWSQ({l>zTxa)<=bb*9_D?| zIm6!XnHl>T?~R$m-XEA5+r|6fjA8Fzof+G~`Cy3DihdJw@n?DvPmw!Vn&Q|cJ38xddrG( zbm|?O>HBxw!!X`>@+I^TyRRdX=TdE}-6q-%_6*LmzhU3c{I-g34X-G6)gYIm;>d`9 z;7sl($uT0d@|GKMY#Cjdvp^&e zAG(l}LSGoqqzd$%!q1TTTYm=(ezY+mc)MAr&w#17+`Z#+U}<6xwqP)nUy3XR372a~sjvDOZmRSi771{6)3a+`9M}DVbV4AL{{?wPT8DE*7 z^Gz|T+BpJ1XfnE0AT{U^t0m+v0ZU54QK z^KaAdK6C-b-2pEX|8yfOdyt!#nUg$Ak)3bD#u&mTwbNM;5nsCYp9kyDE;Hr@$jyCX z|D4cq@1xD&v$RQ`=hErM+WV0?RSvm*xyC&o{xvIO?Y02J2vtzJ%M91Jv=#}tp7yg0~;JEO~-mA#zjOAR$()G*K8kYXVSo=&G z-n&xp{x|kZSAy?%1=m}wL0Y%y&9l$!Z1e4!e$ttpR>mwC9A(_XnLgG`_sH3_mHRT% za9^4McdeaZZo@c+|8n#&7*8Gi>S(XY*nE#1D_Rv)s#`P6>K zxHH?=x*ga6|9bcY4yAF$OaHzNo*hfWzJdQ>k7dFqwH~Dvii7#Wdt_wA#PqHUu9yBL z9ag&SE}mZ~3w_d=sp0QCuw5%Rd-}a__vp81&!%}EdvCgbV){ND+WYM3e98Nj;87^8uH7eb~G45P>JVZo@+m7%Gr?%s;m8-7 zaX&>P`$zdyDoxvGYs)6uJK8r>FG|}i zhe)>*9_wB-#oPQDTL}47d|$AIh#s753mF@K^|sWV5c`H~A%~zZ_CEP#idOodl|F1B zi@=wS>^b=#WEbdY3N7@R6IOKS?jG#;vYjAfM5>5yQhf(y^iK3nIdN_{Uv~R(r_{-J z83PNj!P>b(biRAFZ6BIgq4`_r-!ANbVZ&G;xagg$ll7%skaA|HNiJH&vQDn>P4n;Y zPp|aV!gHFj+4zZx@1@K#aBnN{h`t;dcoRK1vLR>3wb+I{e+=6ES+R~avvZKIDif7n zm#ynB{qDDl59=+Oe3Gv30#0dN z|7*mPYL01Le*?1o9{$MrgN@#)`$7DNXh(U|wHHNqiar~nJL}SPr=;Qm@>X5Xx)L`! zubq5SvR_qVw`#AtW?|_M%(dnEUB~Y;&9&X+HEmzT?>o%3jrzTg-?`>mlixNSVmzXS ze}euX-_N_a6I%5Gay~Jw;s-xS@IN`&8pso`vHghud$2_}@;|g}8}r)+E^NaVzYSmE zHgIPfGI<0E6k?fBR(lj>Kr&ixED0X)3XT)4nR-bV2EOcVTV!?r2h6s=9~yL3(^ z&DUIxZ4rNfFL&s^4d~^yw1XU5v1=7MfO(3xzJ;w;w6xb*P!T%HJxr$_j`2(5Te=^WOZo1w9ntG zpKL>UeY6%DgZkgA{>2lg;xEi-Pvht#e|Kumu1F7d@bq{>Z_=-2?Dj!d{CUAdKkKx} z60L zd*diZRMt8EQ*3Q*AxGzNs@eeA+^_ znXb>-CHuY{?);0Y4f*iNO?A8t*>6vyueXM1??pGS8F-lbFVNN~?7w@>oc_pA8>;`H z{I?nR5F8tJx1xB);K(30K{Fl#mvq;XXaxJK9z3>ViW~5YBL~ICdML&$qqskM?oFg{2=EYrC1l-uFuv-iv=)@qo9Y({cteU-A~X9(#@ZqNUp(;hW+k zdmM{i(tTDTe9EtgFC)(|uUMwt_t?r`*>+R$jcW2>VLv|ZGw`!VYr6eIeA2Le24(OC z3x9$3qt{6JCepYqdMi37yli9N-uVmB!eDYO&t_<1e~91fj#m4A4AyTS^!LX@bV>4^=+ZuXP;;TZ zy5pjc+$y_lS~xbo_iZ!r40K!XeZ-5lzb$>P(C@~dzY?8d6+Ci*Y1QgpkuYnbds7~K z+ddOA(Zb)~<#0tCP4bIvD4KX7>!$kK9YwX4S>$P_ZQ+o9Lw^!;@w>LsZ-D+v^H@`x zmrtq?O|xS~3R3r4G$h&Q3L(A3?s#x(y;&sC&zq;CdbnL z|C;wE$I>wY;$IwzjmbXmJCi5>*X%0cdzKwD@F2QH&b*ctLG!vFS&x;(JZE@(?AL9^ zP#lJI*3zUOcvd^*D|4 z!{Z0lA7zv2zS6O&DV-_RpZaQ4UhgTQLqoAY^wSIeLUT0M3UGinkOS#&-9-lbh4^>s zD6aMkeGbV=nvdprs4AuV4F18yHm+L$0Q}3gHU-z6?*~_6$&Ap8{aM8AOPA%nLIfg7V{GQ+O>`}%4OPAS2 z9JA(XIf)OYJ<&Yn1=ju3iwjSWO`V;}KQ4J)G3Mf9mlG$TobLZXZ0`Nk7o23Hlxu^EbeYWZ*uo@N0f9c|M!sLi1D!Xr+w`6Od83&{povrPu!24z9-7m zJyFSB#A^xfwa2=N6*-9)G3ToDQ@kiWU%?=I2!`K-?%q%R6b$V<#%vf~EgWM%ev|f7 z@qU^4d{cQE)Av>nI-Q)SbLlLIe;2gzlPZI}7jE_*zR71CWL_D2fvgXOD~fO`jYNPm^;M7Bq3wg((~oJQn~@1O99noF_tV)tnrL8FTii zJrkN?#m^n;i~Fr@-O1jktj~`xBF++eBAVo4Z|E%DSa39rvp)KI<_hJ!AM4i|meHT^ z_8xq@0R}q9i8wu{JPVTH=PXiNjUlhIsZrL)+(C?Kz?=kGfAzu@tb=mquCV?2CuN-t4cJ<1I?qUD_4TJD|afA2KxNUMk$U_bcU z$XR?fx#YPgWD#`2*FM5`^m63!xkkc7{?_@aLi#;CHAP1?C-J^3n7`yb(XsTqeZ1?1 zF7*8EVxNP3buPS3V;jdk9O_r+=e^{4!#)#HZam?W&ixj?J@}-?>0|j1& z*2Rx}L7ZO&7oH}>PyLgPY#l3ppQ95q{Q4go%gMy_`O?v?5G=D|hcC6i=42 zi_}6ZYp}ajcYIO>f53MyUY-f}r?D@QpP>kT9QV%-b|_!2a^p6^ABkN`V)wAmu(`n- z`Hti-3W6U;p{=RAm)!A{o6JJ%0O#J=Q|8N!ogUWm&aeD^-tVBN!~?Ay zZzNw>zq)huEjM%q4ddYp#~X>+ln+`h=d_u%Po2hZ{V!jP7yHb6z;tW=X|abl&WSBw zX!(JO6ps}T2B3~?ZTEUxb>mTjRbL2!xQS#Dr;6e?3jH3>} z12sA17fSt3)XECFBddq|8XvVB@L*ceQS6CoZ~i zhLL!#a!xb?y^a!_AXu#ikD%$CY0QZ3)*#RfOQRUs{wArVAWO^vfkj751d-$ zgGa(&(Kim%n6qQm>pMDqraM{&P6VB-)#f4}&%F zl8==8T%xQYvRF#?&0JH-h^}2#9X{3+ejathwQ%?Vv-4>ZfRm9jq@T`3;0jx*iZt>)Xb@xxA!`?~o5yk^ewa+J~$5YjK^7*8D8I$^6guL!8 zJ9V8^!|H5F*D0gUv{TpFG_1~sbe(BNa^tDsM0xQQ@sn>*RXBPX5<5KtS zs%@P9R%Zur_d|=8zT9r(w+p-#A32{nlRqhb^##GsaPx$^MPrS%x2-bkdcccC*ey0< ztK3}Hvf}%m{l!jf7UMXFE4#oej`96Rp%)(tlkwWJv2};eW|SgB7TV`5*XL!~ zxeJdFhYMrtBVDrxSf};FEvrwR_j0rL z$f1&$&PVscV`)EL!#HNK$C}Xr`hmx?Zf`W#G(ElKiI9vtiZfr>q?Wgsqqel0mfLN( zYje81(WUs<@w3;S25<5bgCL%kYE$uCmVIYI`E3UFmXeCYj1isv06O~t7wc)XOpICG zXV^A(Xx28%I9YF3?0)3TNil0VvHXusIy-v+xBQT zdpi!@wTS!FTow6T&fi_xa#*Sp1QM`%uZ+`oW_Mu~=iw91%zqF5J(;IY7K8Q|b zpQ%O<(ETd9=g)5;I~n(IPQ+O}P)MwHfLI0Ap(4PU;`U9&3wyzR(VJ3pg00)yHgoPS zZbV*o!Q(`Kv7P0+<{60{;I`VcX(;19gzrT-yQ(B51AnWG$$Y zJ3AY}$5i}VQT*dgX6$F5|LNYPp2~2gbLBu6y88Y6FFuz!&Z$#UHhB4?CIjEy=%gXa zTt*%A*8>`(@18SbrRZ}Z`tpZE3x9*3OXI<=8VNF%liI_VSxf!i5^}*I`@B?w%)06J zvp<|;BnsIN9niR*sgn7}fg^?S!8!2jP2b^O@l9tdwsQO-==%M9r_2xElz#<3*llKh z(V9tPzJ;vr8iFyg#ubZ!bD3c5JE5z7UvW>!^*!hs*4akv9@hQI!`PefBWOQKH)+Sl z_zUD-4>Z5mIred@tmXZNG1Or!+E1C|`>^N4c)I)XH;))t&<>s2OB{oeD!2X{or#vH)zcS(Z40976X?>og%!|;i zwoT^2f3?q07W%>O82F9N>J+qYfxJsYv#G0v4S(PaoS(9K>#CrZ((mqp2InAFMG=(jzjqV0eq`(su5U6 znPzO%ZSbR19`ZtaZ-wUDHlyVs_5n7Rd1`Aod{>>B8voZBe+Zk{{roQ&Y3yF}WZRfM z7GU^Q%Ia=B$qTwykFmuz*>F4&7p?O^%xx%#*ok}cKC)#9le29`d?_-zQzI|hevpdQeSN6_kVvAcpCf^u3ECE}w*4LRUxb2?pj^6a`o9^C65_Yo6%MB9y<*2R{b;hQAT!uDyzHCU zYn(q!(Zy1K96y(ANfA zt%YQA`3e;K&3a;UN!@3;chls7y~MlWSG>0YS-Ax{?ia+!?YiGMXc>~}iu_hS>nML6 zzMx&3zB2F$Ytd*LyW6UCrlu%<^c83oaNTA9Z&dvLb^b@zX){|^%wYV`!+dM)8zD+s7YcKG~T;sIALB4gxyU4$uvNz&m z8M>QXK6cq9B{L7MG<{m1sm!m7cEL0DU#Y)<_L0%%?qjS2_#*YqhM_&y@e_A3RySod zPM6d2e8QbAeYBNo!}4Fox66q+JuDy2RM|Yn$>tG{vOcBwXM4%Pvfa^AtbI&8O$EGY zOe-?rC&=J`KqqzbUU5(^FAv!;92?ICu3ES6IR_T3$KK<0j`NK7w0aIvU%o}>QFxUx&SUXTbE<(Z zXSQ`FZ8ZQ3wWs+M)1LkR(7NCA8njs7Sy$QfUgdwS(Z|jS{v>fOhn`5;uecj0aSS_D zS#of$>>8Sb#U-T*e zUdQ;zxM%L+K1t>38s~q8Z{&K4{J~M=$wlW)+0Se|MLtCrWE{cI2j^;>DH`(U@17I= zkiSMaA-(>uj~Yqc^V8m%(&18i_z3!S+Islsn^Jeu8#+@BuDl9AP4!>scYrsWz7y=c zj{b-HYd9D8I5PjE;L*D-WD}!|`^UR;h{5Q2e-!U)dRkc%JUTIz79y;?oH`ge9YaF(}BBSs{ z{?asF@X>t5cSP%v9TQ{F8Q@94IF-ZxbpBVF@Hdwx+{B{j?4FBqp&4Hf^r9=O+|8WB z8}18MALWKI=7hfoI>foO(75VExMXXh3BPPjcTGU&{vTpbHjS!IEc(c~7CAi@F3Cxh z9jv(p+ckcL@f8i|HK8%%*Q<}TuQ_y)^6GQOJl`F);EkavQ<8JJUtGAM`vbp_|9{jn z=nHpMvDWSEsf`X}jOzbAb?TXK==5dW<2kS(MBk$QVdQWh<6D$;+OcC{#>YCx^j)#6 z$fWfl|JMWXPMz0^F8~Ii_iGdH()XgzoomaPQ|SF@BFs2dCq#P|?RmKmB|YAde;ILO z0}H~%%j|P%YFBo-Fk^8!crQ3nU$*8j@X~m6XQ_|*hMBMITI%~_?qye7vLnle9ARv& zw5xBS;+(|We7CSGq~{zOmz`Y6yj4fK3Gb2XmL)>;7ok7tN@0HvYh>ALRKuMwP2_`F z#9GY~{Y=3kKXiHu77@m*x$FOC>V?NFBgYi&0rSX=Wj4+LyL_MNfnK>Hp;0*r)oC7+ zoowcJ2;2(avJ|>c+yZnrbc;n?Ov*;|5qGcJvT?K(-?tTYVc(oJ$r!W9ERRfK+-~o+ zNo>5eZ$p1xDF03IGVY(r@lHuDn-}!G0DXVN9Od3$zQ6cw?z(<>`frLa9APB8X|dJBRw%St@F%i?3z*o!AK&XKfr?qRQWi-tXdk-eP2>8smhVl!;$D*Vzhf)P8b6 z3l>~1WAR|lWd{j2Yd6UPVwd{jAQto7Vk~pOD|iU?mv|uSN5?U{8GnmaA3P}at0n>H9T3o z_*L#MU6*U@zKp*R^XSD6-;P}V88H9gexu{BY#dhptO7d^wZWOxol}Bq`<(d|n;+j? zOx}1u`E<#9$i4OF7-JS9r%m7~eq_hitP`&q8^2jPBKL;lXU})LjQmC1Lr3o3#1+$9 zi{+1Mo|3X-d#Ud-3u;yNDE9|ePv2kcf6tj;jXi1>vD2ldKjPR}drJtOiv77(_t|mJ zU}F5d)?R;e*YXDG_iC)LKjtl<3d^f~C55a~cKI6O2S&H(!B7*he|$pf|4l8=<~ zVRFcXr|vJ-J}`*IwQc2;Su{E2yXoUhp^x!lA1koHTT4&hep`kb;9IfzB~S0fVB)Ww zXS0_$SB@U^68p5Z;J)I0oKf`>N8AYw5}ZEbDcCeKjt}5zihJ4pVanzvUr!otqOUez zWerbtr|YpB79YRY_5UdjJi+>ZZwLp7!#W8Et{EDOaKO)4gTjF^!htb14v;JKI1Zd8 z9ALb~JSDFyZZi$@PvFsl@d+H5a2y9FQg%@lwh?HC%J^u57~tBYi`e_%K;K#1w`;mQ zrRBZ|@_v1daG~5EY2~+%zEZd_;fuI{Z6S>d?ame(7n&W#U%-U}jBSF}d7`m)ANiN; zF^sfv;XdI)S26<^@M~DmS?O**azObeOP>N4&Pm~daAtsSS~J0-sC)JlJD*(M*$w*7H_{Bh8_ilABglH|vl z+27kss8%96l? zqpn!Lx@1XeJ&2);*dvfzt;^|@L*}B3=Y<}Me4Cn3tLvw!bf6kn4{*W&^fZs4%U^hA~p!J(D;vxh5MPcdJ2+Y)=< zxV%dOD_PHW*3-j!M$Q}=TaC}&pKpxWir>DUHEm%{ZMmN{RqRcqx@n>0b7Yoy?S&V0 zTKr~B3udvlt65vYJo;F)IQ4y0XYLtG0y*r((52NHMYi3U( zd zoy(iT>*0IZ^+0OQ!rxFDf7gyY$)7Ae#+|n@;k)pHO=g&Z)Po*d|$1(<`H{w z3cBJwE$C}DospxQRS2U?aAq>P*>FW?=Lc^tHFG1C`1}<6ebh<*EAHnxlfHjqSo52q z6OxNBdUtW)bnG&BIP!QmGExiA8Z@#aZ#%R74^wyFhUUAi?$e{hGbCD(iF0YU-#N

5pjQzS}h48PV2I??NwSK4oqp8wRroZQvXr^z;ngdoM8pAMpQ&7w_$u z{{3KLY1fLtUhWJg$g#cynX_i!n3&drb&Q_AJ(!roJYO+KN6N{e!v0&1Y`)E!cR?~t z+0|pevx1oQitCt1Ud|Qkm+x5-810xmrou64%*Bq;{z2yRKK8AjGq!iSr$_6|(a{^` zcP)H?y1xTvUv+c^UMHU7XQ7F82S->7DrjeVA@OR&PyCFz|N6F^9Y4wW=lkB_Y|z)T z?($^6{L{{7dG{>uerjab3fEuXPuyiM%TIK!qwIB*`st;^*5#$%_p^V_%c&1EJ4QsgTEVuR@h=VcF0@#4(XD>gF48?U zYLOGsQyvTppLBN1;x9ry)wQ5Q@&og`SnX&$qMILHoQj!V&iJ=|Ryx0zHj}_G&oO?% zduG|69plA+VT_6;Qak@|#-@GdZF2;4uE#4l?GFYr==p(~$4;i_$RgW(yIT@9(DRyb z-@<&x;M*;_mpUVv`aQm4mg&fE0tQXx?%IB6dlR(1W{9?@$`n^Dg0|N@x#cR)uY-Zp zI)jPXmta$+otn=*6Kgi)OpIT-rPhB5yy^L1px>ESu_fQ_Sy>reTLUljcNz(+n|k1a z@WTZSFNKC9=T&&&*WTUO1i%l`npqa{!N`M6;I8=X;t|IDmGHw7LWgdoB=j_P}6zbdZp>O~C#c#{t!M}A3(4KQ`D>QwX=~$lAVfe(FXpF!qpp7ZM3TX9mDEp zpH#or+R*M+y)#v>BUMjuss4&1ADLuK6L4`Ia0awLRv*mxJ}>nh;llo|IOWwzBY!J( zH2$UZ?af`5*vI!GVyf(T(gRfi$>-JiK96K*!8&q~{8ZFwrj7+XXHkcoy>qR%f&s>F z=X!Dt)$;&j>ej06q7m4yv7`8&Bo5N__@xgBm(p?TOFzd4M7v(-ofkbIyk=6J8(qMI zE>Mat;M?fT59M#UPj(^eMd*n^UOn<9_F|tdMXrB~{ZaF;Mt&`AM1j4#EGuvn-Q7Jc zE1TwjDD}$b?Zi%Y{!4yCL?&K!o?L{pKl685AvQdtm&Q^*m|%ju)5nD*qod>U+*H_e;v?xeaSiV zQ})fTl6#By4o|d+@ogShF!cUwC*Cs_m$`7hVCnC^E?`k!_FOmp`?^B`7yX5qw^#OI z#xV=o>Ot}k3a4zlitVF4VY?oz$~ySYmq)I7>nw}=TwL5C<>n4454N)$Y-hQ|(T>8W z$DMVz=Gi_B*=1!%{+xK1v`zL9eyv&9z8`#z_;T#5)vtp0BZxiX&zi9KDc|J9Pbm&; z%ro2t0^RN}zy~tRNIWt^`Qpb#2NxL0TbM)5@0$YE|I!qYt+sYUR^6ftjkOJ~3vam+ zogN=meJOIzVd8~D?1l6W9>B8id)qFmehIeeTTPa=w#&XH@)# z`F@S{{mrkM$hiishA(XmUyzJYCc4-eXm;lG_cKRgrTq=)zFkJ%{OIDU!0O^^JMO;! z5B4{=`c|J2$GB*u{4nw}aV5XlSuES#vRTQu^O`he$j zW3J|`b{?diQgREt$@i`2)d$`rFXr3)e!jXe_5$~uy@TCw4*l!|ra|Vk(`Bsfg2wJ- zoy*B5xQ#yEdyTVOj{L|j?4F|W?;Z*U1|4}3V(sf6g+`QeFHalxv(jv1?IGGY@}48` z_0NI<&Wp`I!1s5NC6yok-9EK5D?(h<@p{A;*!8+t%SWN*??S)x91|ON6&XMuOk1?sE?ndU%1!C zTpIH7=DR*ZmSJu^=xmZ{+K^4{GivA#?j$k+{Ty><$DMB(0VjQ9%bD-XAG5<}UJ|IL zPbYo8{beKZ+AJga>Qp0nxK{b7$b0`U7j}MzjeN80W6Z&4PPFYkM>gp!g?wy<^2Nu^ z^T_|~W)HKT7C0aswvX}I|FgEh`mw=}(bl{s1& z-}Ox}NPkz(ve$se+g}bURt=a;io4Due=Ga{vjv=cG4dAN#lDl>toa@8ykZ~ff9;vx z@-aJHmGyz}C-8sPKlGUqXon8naKu3NER2WxjX-$vg$u)P@GQZvX^nZz@h$K< zJby`&IQW6|J80~CKC|_{F#EUH>4}T}gxDYIs}H>Pj=*R56>>Q6uJs~kAc&r#*u*gT zz-rJ}mE&URmF=BP=op-NMK9TZUm4@pci~5pc!*=HT^ae|`$iX4cqdr3uh(UDkh}fc zhUG00-h5oDzO#M8nU9^LIe+MhPyX;v_x3r@_i0Y=5ZfU<`gjL1)vqk+(A};UIbdG} zZik5*$iyY-GOaIRV;W&B*ojSWr=Pzu#9m#+^J8ZqRE6E*a4@k7njZp(3^Q+jFY~m{ zsRxb=7g%2{uInozUWDA7`W|8)*1RCT)`jyea!~7C3+rRQzb6=wULiOMX8z^%fms*U z2UfG*Yg7+i0$pvQt9n_WIlFQU18S=flSM`QcCO^EmS)LpKlR_`=Pje5o?fg|93Rq{|53n+Hex znlB(0aR`5`r&chZ@$*Bpfo{R~F}~(Ht--j8<|pXy3HaL)GtgY+2sGc%UzKM-^F_Yi zz5iE|*@Cps9yt@7fG=M8dw=YTfAJHmIyNquqjWhsk4*!u{$27_e-I3a_aGzKa}426 zw%|eSw4rn9pModd$eo9{lP|;`2mxOoI4xg;p0atBLCe$oM}F~caJg>*aqrNz8t9rI z+T1s>w8HJ=fAlBiCg`oSZ7YvP4sq{h#(5;k8&;(;&r8{TL1N9v^1RU z(WcX&y;GsL4`C;n3JsB+TVv4OF?u%n#*q8ul0Xf6CjDJ;k9Pa#rrMXkT7GHyr?nU1 zpY_fB?xp?SSw`Y@;-Xc)_3Tvn5M_18ATYMe_dbDbn|Hml*k=oj`Qg)-C9wJ1b=s#I zb9))Ht#f?In0E{CQd{lQjJd79gI;WKuH6?Hf)lcTQ^1(#ucRFpc8W?P@y|o;SmdWv zJ1)vpFEr+DrtTu@_AY?`P~O>&_Q>zdT7hP4pY5-}HE_`HD>_j6a(ky!S!AOHK@r zBggL5=uxcu=8~*H-%5TX7i^xwZ}!Ob>G8mG?X{s?@61}CY;`{VTCd3pY`!)tkREGa z1!KKxNnp!0O9HYtO7@bx){pHpikud`c1eKv`TVWyeaUbu&C?=%_iirU%>OBVSZedb zJBG#&U!CUzC+zWkjWGd}S-|AMImW!`*Omk#bBwv%kzBDX_qWAcN91^9yIuKz)AsK1 zQC8Rf|MSd%naL0!AzTt5lS#bH1hpCoVH6LO3z`I}C7`W%Ndnc*Bw7ukf}lyjwh2+o zD3w<10pzqzV(n3jJ((U;LE2N$YQ7xFF&{>qh=I^WNJm;inW2Jl?RVAOXy zJ|j+*t|PNc_pp{P7>i#4UaJ#u=$J56wsnRL&*kK+e2D*-B+C`p@DeT1y;?p7Ti-Hb z$Yd;h2;)aHxh@p}V0KSAaolWsxb<%_&h$#pdddgTnMLMeBbTVxcN%tqq3lX zkulTS$HLE(jiUAMl?4mHBM&}{>$jy&EvP2#E%@^D+0Pdx_VX^!i2YpfY}xE@0AFk0 zfjjD_g8o|11Xt)QtiIJ}p^ZD*FD{=w)+ZRNld)>uJ12sR_l?qix7zZN=9#tp~d zU+=icf`2__1pmFX9VYGFMEN~aZTPuwb1Z5*z&XKsq%!_g(o>;*?n>?@*yAHtwqyw} zBCd!jO#$<+X>m68p2ux>6u3M5ZRJWeG!r4QNzwHHQv^~R?p@h@h?oTzjhjX?h z=h!yhp5t0zaEt~31L0->c(;wCKjt`tIW{rJ)0tyG`_OkX?;W09&~ z&Om;}-4=bqBMptI)*j(r*j~VxYtiLte^lVx$}d~ke;pOPkh#unHX8G|cUXIqn626; zx=)*=g(qDUGohbB${kO)+XPeSb|*FfZKv9_QgEuo_SugNXEBWdR*`Kowy$@>G`&(%g)Hh!GH$X~4U*QI`#pUxoD49wSksHpMr3f<5oQ(YdjQ^`;>h5v zCVuzv`($7tTK+6=`jfoP0n*nWLhkT$&aP8R0}bfD0^k<%Y0nJtHKx0v5?@U2%Z!+0 z;nsOi>?dnY9~>2YA(7@vru}eK@YzIKI6hcZA$oM`m>529CI_@%edvG>4@#&1NY&Y% z5js)Py1k04@$uwY;_W2I6OW*^AAX-q@_Mqde=OPmM}tL`6LS{*4&RU(V=HoqB<(8T zx79Z=Yi1v49k=R#kUKE{1K5Vx?Ppu(vwWbcjWBYp^*)Z9Lg(|)k1{Xj z!24qP)mWe1nrFuP-W{CTnu8C#ORVjYanM;k+@i zuahSmmDVS{#jTQ!aCe%)d3q;zrz(xvOl@y)LuXfYbgzd;m99p58uSXAPZtl7_6+)( zXYQ|HZ|MFYUcyh`(Dy<=JnyBnFZ#0uSZbdkN3!(B(i=SMv~|om%y%yN!r3-xj&(=k zychlPjy4lGnq4TKp_KOgeS@>M@Ov)5TcI^IiMEB;=nh8K;amPtTVJORzYF=D+B-N) zvakY^_!qC9HtP(f!AEM%rN?%|d-_MFS-fRFX<^o?OXBJ-d>y1D`sl>J zcWbZRhj2rEM8NUm>y&^WpMcLAmm9y|eSe`2=L0^tg7Sf?^vb`m7Zd4Lee&K+ z{`<3CM?MkU-`HXK z;D+*lOa39~%Y5*ofxU4yb369!HWr>S{5#!PDEfRX-)Ag5W%zfAvCzl2@L%-%SUGfM zvTsX%OJ9=wO`qw~l^pwq7Tf;W5@SlomS=dr4;{kr?-Cq?Z88HC6(Aj!V#OsOtWar9f>^2Yy*NH zdn@%yBX&FK(s}6Z)r>0qqVk@i{|sXm=gx-Q^wJ(^&IS)LRP^0jWAub3+G%IHOM9%e z%Z;AeZ(PvBA+Z5}&_`50l2&Sc&lp|WbCFrvbKQ}W9{J51H~wF8vccQlMMh5*XHNvZ zMF3gvUO%?sW5={lMW!829nk!F57bohJ(0^8*HLk2!+u z^&++7;(o0*w03*0%HHf8{iWb&_SH!X76wxmE)2RaSr|;cY+Q?B(f@|d6cX?qO5 zE30bNdgdlt=th^QbEEAsXggzIJdRUsMM>O1}~mFB34QWegy1 zkEB-?E_{|#>*&uhdIq9E1IO`XNm4Eh9t@RFfOC|STWBDj^ z%l(qS=v`O~xF8q^W=BGd{VLJ@!?T)sC)i6J;R>?fLeWFlJa{15{B?kMbL59I$!E+R zhO5{=dVFyoy4Md=jmME=6N~Q#U_73)EEH>*{^Kvof1P5hdB|&C9_q2u9}D#;Hly-< z{C6n!8qVNC#8BKe{oyaJT^j1Sdh?ZMEOT7c^VOsCdtAJqE2Z2I_%mF2Im@j7r{vs$ zjL>>h=gO!4$^4y~lS>=YJ?fpE#_0ca@~qaXP;C9B*f%pa&Pk8xecO8LobzZtR_r&- zQ{D6vxXkuXs=DEL$}Gv7_MqQrV{K)3r}L@8F=bXRW8N9e%`tXr?DaWDXlc&0!$&tI zWsjm;s?$!LF4i+by?SgW)<4KOC%NBIZ?S9V-PILSw=PE}n%xHcH5S&X(e;DYB^uM$ zPafPQs1*`s83ZDDVnG*_{lr*zGAW)AHCZ+PrOWwAF-gNNdNuw|Ej;F*`;UxAbO zyuDM!OgPmr2fcQ?#Wp1 zgS)eNKdQH*^4q~1h20svhns@$25-R+KRmkW$=y>{CS$ZgH;QHZEMGkPEnl4zy54>b zd+4Wu$M%e<_6Kh`t+%CHp_NuT?MVOm`qy~RmrUC|i9Uwndz^O-?@OV1jD@$~pO07m z+4W`2yOepCT=zywr4>^bIqa6{E-K_wzn|6))ng@UU&GLF6e7^VL0#PVEB-e-&uvVPn{e+ zkdkG=rRj@iyeY#SYkJQUYs%q&US2$W)Dv3*ylU~y#IYUSj|}zza_UP+3qLhB+Vn^2 zyvN^L{2k)&b^Z?U_ZO45=*YAmDvw1@MW@2}Z{fXU_`jSn|NaYjYe|edr{05GF+sY* zPdQ_6U(MTn?kx%U(vMMix8R#dySeaW%O}AVq}6hVQMp@}DlNO~%cSk(-lDXX%at~z ztD3ajMB29BnfuP-dnheyGKF3-sMxg4|z4wJ^AK#(mw<9m=p!`nmF;;#?UbI*FiEnVS>ldoe{UtHBuAeJE z`F&$X)T{c$3AFOpWkiGOKlx4lQ6g}-|hKKNWaRwIL{NOnD13Vu(ga+QE@!tF1CTQl#=@)$>d#V65 z0a@^X2OQK`m!U^rh2MeTx;!g3vHUzL9+uh9I-Yt||q740WgmDJ8RUAv(j;tc!tRRkJx%KYPady?M4${KNPQ)juP4la3 ztJT+Q>YsZ|vY(LFhi`iy+jOT@I<@2aT}FGy_q!Y3=Jcxds){z{u~t~{l*r@&X*dd{345vtr?+cgV-klzeP+$K0ls}F9oi7d+4LGZVhf=D8P56TMasTe~R0sRVRR?Q)X5)U= z*qdcGZsY&lI{e1-|5NagH)dVppZadRBi2NW^rwM8`W}mBnda2?i|MC#-(b-L#8O{9 zfirK=j&I)x43h0PO*AbZqc!vJLC>11pIx-0e#EO<^SiM;b}#)jkyj^KD|tTtdv_U) z2a%u7<^Oj6@26Z9Z@8wOk~+01#ogF}f5^Gx9gWNQ-zOWNk_+Oz-P@3#zqVTM4aGz1 zouPb#{MXkRD?U;}&BhM(d62gDe?h#a9iQetU@CaE;&ZnTn}ytG*fZp7y|nLq|CSbY zw}fKTOcNW0XJXb^H*y9kfZjYNB7nd$7BrqVC>X(10L9Yr+pvdYa0zHH$#X1ya~*A zf|s69k6i{HjP$2T&sF-kWV)C1K+Z2ouO(hl?Sw=+@&={oT&*{o`Dd=JehM7Y+GwP1 z%g*V>jz_XSzh5Su0QULPDI{k`)FGuGsau{I4qKzZp!h|gj1O{Xlg zX?R#PoUt3j4=sol{Zgqt}eS^2-Zou z@1+jDdv>^TjcC8K_Az{hb*^?|i!#cH*WNnkF#b>DI%D_1Z?=7E?t?EIn2(&;8iRkV zHQv{tiGKwa_LwJGW5zIhWADbHF-PDzljGLev#w$Ywl3s*iu?H4wT$JSQE}{Ac3>Ne zUvu7hqr24i;&T`!)>mGtB+Q1e{WBLN^=B`hqfnVPN@3yuL z79HAN-l?&=fu$?p-fWg+M(-wXXX^>_=4D2|MV{LJTs`bfo5?dyly`P!^q1u2e)9zN z7Gy@3lNb8N3GxWT-CpQWLd%A1h%>(vwyn$tmDqxMwSum zr~0N?chrk$W9OQo{58lbkFC$yQ=;X{Up|^;eCo zuQ6KdkA337anr23=FvLfyV5SFKK8@YPi34<&hbIv%qZGvzD4v3nH~4Jet6Z6T%*|U za}{^^#us;B7l({L?#IT>g^z2$i46OAd>cJJx*tD;?*fzDn?{bw8qb3C=pph#D^8HN zFg<#ZyxJR2katOX^cC`&m!BZ-vh?Wh$=lk<9pgvkovF;N)tQx{`$OQ2)Xj&=La{l> z-m9ip6dZz<$Ohcn&(O;csMmXa0>13;v4St(eY-=eRzvSvCm1Uq7$>|i-n|Z;xn0lO z6{DUNw=;SFnZf<%I_ePz7rGXdP88YIV)41i&n-BOfO$>21@j-N|Aqw2Ytp0G(Z#W= zDQ=xiEQBcun0x;RnAfFSFyBa9&5;wp=i!X#UF2;IpCIqijOaJX+xfK<8@tsJvxaY7*FlmtoFY;1mnl~4)HA*>r4p)DBx!7(^b zJ27tWLdFJepR4g-bpn{AWk$~-ulC9ltgkR3_3FpIr&2%N42 z#{=jBE5U95tK()3rR7*@9q4(7(!6%Lzj%wK3qAy#hu7cJNBv`IcKwPz>K{w9>+kuS zw-`P1=j!*p`}z9ecRydh?;Y>3Hsx2u2==`*I7@a76;9-6%u{^LL%WcpBkyXOH7eeL zjJO|OT`?0Z{t3C2c*6j^i!);LF1herzpZE8Dc{^PxFg~?JK6^==^q@`X~~aTkW(Z7 z#apuCSH`u+kyT~NH&5*+@DA9W_dirl%ocoZtSUIH?|>(@U9`q$R>Y>E0}x(qtxBxz zaePE;?GPU!ezvyqI3A*PY&3K|YdkMeKfyx?uZ)UB8aQ=_&W8)_@0LwQw3%-s@qPcj z@;RH`wVE`^C@lW=H2B*K(Azt)$I8bZ9371xzEygezI^nEw~bzeiY3DpFw*C)PdZAm>)ObBI3{ zZ~XBz;8Ow)CuBqYyEEWPUF{dsS8pgWr(z>YY?Y0*iSPZ$sU%ks|E_a<7JWC*O_aqS z)9}3gTe&)SKeguww{;B`{~HM z@#O71*UsC|o)|tZH+j9mM7`Zcbb{uW{Qk8O9jE!vPUQdAhNN3Oaz5-I48jBNux_=~xe`wDs>OU_?kKU;4-!RlMD zh1UoJlQ4Nz^gn-B>b@pqbMn>KiF_W~^}OhobM0E-?{1I|KRn4D>qoXI+Gg^WmU-gy z6df@1Y;y!WLg!>`8r+eT!~P3v==V%(H_h_ct-O2WZfxDJM7M-jTTe;gDEspX@G>{~ z%^GwIzfVr)+jp3wq#2~?d|Kk1+O9D!Yg=1g0bX!t-5^=&erM$>jay>_@2uDbD;QfJ zckl{msc6bU%81`poNVo-@*4Wq8)w!=?MkmUyiN7Po-Ew`jnChMucU3_J;X!b9^7Hc zl%WGZ2Yy?e*#k4M1q^3Ya#zo8I0N~0oOUjMd(H2HpN@$tK8SoDTJ3I<-XW`N8uDrN z-8yVO!{<>-U(NK@+djBM?Jj{AT1|g7yZr+Xakmyf^$D;eu6b+_zC*aO1sV9E8LTyD z1ZT@5?bHc?Cx@`<8~~pxS2c83ty;3QBbkMcH#%tvZ)~%y?(@a16?@i>>rs`RG&P3TbWe==_|75K42b#;i(HdA~7TWEJ z7W?lF1%r__vw2%nJjgv)_}lj*bTRqb#$vG`$j+ch>Lk?eNE;g z99s^)B=5^Q=XSFHki``CviGLt8%3Y7ujJE0<3I2<$z?L4uR-HA=D+?lJ^K1~Yn%nv z*swE{oy4)TO#J&1&dsvY_^upd$HD8%W9xE^nU`UQBR=1Sy^poOmz9hD#pm+2!4(O` z6!%uVehKdqHP&To%tZ;B(e>a}&|b!-w1|g!z*3Txfz!gtgOOz&TCE^Scd#;wR771?>VzPm$R0AtfBgw%KHHMGWehR znw98FHVujX&iQBiJ5T+g598b`T1a1ekSl4=>Rb>k<_rwZyq@$V>_k%qze`CwB$+64 z><4Ex|C%eEjjv&|;xMz?^WDF~7w?3wZw(A?!gv!N+}@j`BhADkA3ZQ5;kQNeTmxKX zC!u*lCoGt5J_b|i?xtEW{p?ECnEnI6Q!>daWRe5)FL>5h24)8=cupNC1D+2!r_Nsm zJl70^=QQA%T)ThN&jI@BPr#DC&iQBixo2X(n_=1DY%7i^{uhE=8Z$AII`cBYg3~d<50g- zx^n2Z_VuGhF6jJ;`t4;rrga7+$7<21uIi7Cjay$kYWZ=lt=2i|El7^*KQ%5Z%^uf6 zzQ32=Qhgz7PwY(QvFdQGi`ZfqxrqN?J`VlHfulwH(Zy{;W*sJ9c7ARLeo(G1jk&SM zYU6z+J)OQ_iIEOvj%;%^_GG@!vUT`aHeRI+>B5_X z+!X}>tK-JT&|ebi)E$D4J=e+1HS}ll$x}Vq9U3QqNgCyhSAYrQcQJl!3TIh$Sm#<` zko%`Z8}_;vct~sh&>( zw2AF6HUj^b7&qyzRW}_z5gy?4I2wLyonq$=c%V_P+}7$=hbz@Dd$Z(NuxS}F7VOf> zo*f#?C+PNTFE!)6rGq;(r`i33n?(DC+iq~7i9FUiCc8T2%a?uyWx|dNg0fNb@B0_a z4&=_uxj#J*EE4_J>6{t{gWb>Dd-h@GPHZLMM_jC@4S1kQh2cw$*exFoPL^InXYB-> zaVd6(VqhiXDIek9B|A2Z{WsyKph$a+v(DnJTyC4LG~JqyeKIzF4r2%Y^sP7W`ZiXr zINW?(S>lXYu-gLc#J?XKH|2+qd;3fFxSJSv6Kht74x(fjZAzA1_6M7%5Rb4zWznsC z2rLwD#D#sp&Cr(jfrrL*<0m#RyYto+hYiMhAYb=>VnL22h8jGO?q?RgOw6m6`&|e7 zV;AMuy)3?Wf~A9!Esy50<-f4Ufc6Te!($~R<6-oT%lhoI>rHG09oQT?u{|6GTu0+$ z<)qFd?Dat_{*VKEL1I?t-4Ij^0mY#3k27X&{RsQm+}xa<_=!6RAN|Dg3hqc|l(V%! z{)s2-!iV$tGjl%XjeH03DXsx`USW^e_%gBU&wYcNp1{Yo%65R?ZO*BlcE{BDbIr_# z)cy-%k(LLt^>+5MmbUCmp+AcI)O5Si*_V$Dr^y}YcRHedI^(6M0|y2dasU0%=+43S zkt>~N#6tLp?f@6GKU_y%ZS63_v$o$}5!*%@ah~9FvI@e)BJa4}75n~xvGEi9@81tk zdl+2%IpfV^ye{xuWgWN4UkrCq?g!Xt6$}oVor*cEchdj;H@hx;rd3yOL3$~-_OHgq z4)zN3?K+vWemm!p!ySqVmtW`aZ~Q5)t!z@&=UrLE!hW5k0G|oZbq5TkIjDI_9Y!uCV5`4dlJ*#&g zVSJ}64unB}ZtRYdeR=5%d`6}KuZFFQ)=R$RHRmKPn?;#qeety)vbHNSzOqVftUX6> zDxF;I$kZ{nG1wKRfa|4@=&XgYcjZ@jVb9g(KDEky^rE)6c>b%gR^%dZk z$|mEp8Q-1L^OKa3{ky)q#wzPily!fwR`QrGU}@Q>dDfJ~uZ@IPZZXY*&}b) zRyCQ9hF-oUlX0ER-5#0DL*R$TqdqlW{pX$5^R;`cdInf8wJYDiYMZw&1)6umqv_Em z`W6jKqpzRP{&TedD(&ybe&r|h{VFlW1dp$;`bqb5ylvfSdSA+$w(W~0`1{a3<5k{V zA{SZw>U2k=0q(yV;9LLCa5So%$#4DN<@{1{73F>I@v|H|=bx`VVC6e=i^~(gw>f4P z!*5vWCHN?lY-n4`lv$3g^UvqK!tJHJMM%~wG5y8T8>o%_##zPZB!0ITq2jX=zjuwU znDt}kbm!>Msx6FXC;LS{j(YW-TE%N`)`u0v}&DPp-CKc-5-|IXr zrFYn1S@^bV$WSCxuuN>R5(|BLt%W=~e=S!iHo0k*7me>Di>-`p; zZSh8VKk$Uw9^5??Q^ghfCb7L8o#71Z$JO>JyUvePr$(C!#{`@1ap(>bcYme3TKs-w zts|zkYEPQ*aBg7N`MUGguT2f6e&z5B;X+Tee`@7pEAHW)^aa?9|EnX`^iBSrb|~gT zT=whGOn71Ll*set|GH_ZC)o6oBi8I_K0o|3$}XkeRc5>jzwx#32))?Z*<&iV-oKc< zc`>kAed~>*n}pxFvvYxsleyC_=c(Eitvi?c?4P0f0lU85%+#KgC@&d)qWqbZZ-;dOhq#ha_w=5oF!+L)ebB)L(FIkWGvYTqZ zY0sr}Sechq=6?gz`yH&~)Di2rhc>vwp@ZeE3Al0$wybAq9kKI(tzaW~>O8J}$@&VfB=rtf%&pbDgTWKIZ6oa9F+eVfB=rtf%&p z_0m-D7n+|@_|&j68z>_@xA0E*c7Az}@XrL#goF0mtkZIG$AITAB;Yd)Z=0zvoT~k1 zX^&X~UUAOVgRid24&H`1VoBfZIxpDs*4rETp%hlQDe`Oo4YGreCV=NN2JS z+5h!_aqz~C*d*}kso(t;utL{3n(wip_>B(eLfuu|cT(FUidCp|_&od;$A`!EQCzd+ z`yRzMJF zFG$^7cVB5w-gWpxeAFGyg}(7VRWUl#!_cW*VrzSO2kBnWwb=(@V>Z#zo z&;4ay&X0jlKJU_Dov}f7+(jLy`LX9tPc7Be=AUfSknXj^Dt$c$ciw*Lc zIY&&!qj77Vntwm@)_JJ$i9dJ|pBfFor~w!?j5mrjPt9L-)Q9Gux}bA&h^Lz`5hv6?jIpGSG5b6rX5M=xi1Ij0F7rF2g(g4A9>DEq+q9 z2afISQ-D4DI!Wtqgl-O}^(&Zv_^J89+G|RC>Xw%FwB1}5TYq~QdSlmAH~YrVTfItr z{%ieG`JTa__JqMY>AkJS$1yw91F^=^$`x3?z|iyw%$Hh0e>@c1b6LQt(S#63vFC_23%@cTGq3IeW!PL zqE{+c=w%N>7xw4d>D&{8OMRr}Tkl`3cvKUhA4gW(G4zt}%d9d2EeBPenuism&WEY{+;+y z8~`^87I-$-Jy+UO`h(J*s%Yx5Jr@AyBAn}?#GWfy@Q}Udo^u>48#->!l^wU|<|c5u z?uFy_&3}P+PnALky@l%IbNl8Oe`nv&x5lbDh+aqrr9Sj_V<~-T?>)?#v?5EomO0Y#hKsKIi-k zT$|0#q5YIhb3QzBKPBg1%h+-mo9Ko)ZR;0nU*e69eV&at3rDk0pc~13vcWu#rvcYC z7?;2wI*muZ`r!QY9o!2$F&DhNgLnT%Gd!k~y71{5k6CBa718j0C)s!5 zq>t$MxT%K^6MIwfHj`(RV$Qa5&S}4N{|SG;yghXx`{X@(7rqg?+?QPy@9^L+?|Utl zZD0^N+1=G;vD2NC+wU4(5_{4dYu)MYbeF{Ls$LM>Vx~2S?l*9!`}je{p-CNR(47uC zAbaaGsCS)Va7QcQj-WeYb|LrV%!k@S@#{Hb-!ZRP>2;V5chbh&zAIJ^a%Wu6dg#q= zmCuZBF~<&Ur@gIaGyMF>c$@K*d56XKUrRf8?Yg4-J1twfq4hJ{%qv&6aVKf>{dr}l z{+C?YE#I$?n}>@}?_>^+F%4Dp5qLQiA481k&QtNBl3u!sF~m-v_|&Q&^FNSQV(Hd& z_k3eqPNDLi{z<$sPC@SDLjL1sy;E6l4?M{jn6H(*$A zzUo=me(q!3!y7`tKT_?C1;$Lv2$+tA@;x)u+*+40YuTA;!3+4E=eFywAYXjOgC6p# z(}K19UOJB7%hQ6uJaa9-4<0mvDt9~IwH92>C^)jQ8D2r(b*H99zsa}3_ebN5;(ljI zu%7+Z=S;O=UxOW6EIGsqF154 ztmJB*QpQEKE1Id*teax0lzb%ht84g5<9GeM)b91X7sO%%;@W7rgdL~ z?=R>lejNA7xb9JxjzRZ8zk5<`8H6?VGt;79rrlg(tyXF`1R5v6qjYr3)`lzHOJUYt>)n#2^(~8q zOVgrzvy7sm1T5>S)1+(Ln9DhtEW3+yvYvS--_nlpHCI=Gr&Z8~`Ot;2)Lj5wxSsZY zVvcEl4*XY)l3n1?!;x#dzYbjxop=+yt;$E;33# zxPl*j3s+QLxZ(#_3c!_q2mZ^zgS**(Uf!$q0(-j<*MA7CA%lPc9C{#B)!CKKvZ|<;pCJp{r{s0iI9e?^H4H zh-W)sBKwrC(aoL3#aL6hr?^>X_V2(hBwUxnXt_dp%L!S6@>r&RQOI@O3tzb-%P zqVb<0?{g#LmP|I1KW%eSQE7YvzqbN|{WluX_ofYQ>VQY@<-M5~KB12_G;#wu{XfDk z#dOzO{Z9+z{4C?X`;AHf#TNsY(FdnvUU*p|*(PaLR&w~!9HsmyqH8?gm1 zbsNyHNnMrnCwPRHJ7f0(i|~@Nn4h=o$6!?NjNK&|sm#sJ*!tw}Tb;3QC4b-UjNQR+ z;eqIw@VXK_m`K}d57=7mMe1qWbQOeYllY5Pn_l$Kedx5qkEI1~Or%9L29;xd4hTlitT8H&%$1)q6K-8Uf= z{~b7I+nYiYk8i%7>r-Tt58vHyOW`55GF1?lq2{518+hj?95N_R(+ zqjN1BJRSZd)^CLNFZ3EyM)Bl*e)7e8gq=i_nH z4kz`>@TdifU#ocIM^+{49tgR~FMS+NU+lWKdoZWmna`Z%Th@FVQ&omT8ye3M^X%K22%sdT}5 z(0S6n&#uqlteU`?l}X-2%1i>@lWqQueQm{s-aR@RhEELNgP$nm7WR4fWy)SkolB^@ zm^K!1-c=I|^(5=8`;4(4=I>+vu+iLb(|tztfpapWQ#?7*j|+36!J3@tN1O>uh=W~# z9e#K@J|j4D_b;+#&hT-u2(a4u8SlM$>s^-@>InmrrsYNudB*L+?bRrAPnj z%r2O4wj(~9JtbQ&-D#73XihV={^BLDSB`*};Hia^dLK51vfGx~b9i!H_UtFivb*0x zCaLn38 zc1mv}-JNK&b6AteVIk|Q*$}T-oI~~)bkCAuziSk~Y9@V-nK2hEq)1&`J-hxD45~t*w z=wC^{@N?;tyS_`h-XA5$rg>nC(RB~$=aHTqYcAi#d<(W6uVXuCm7Ca=P5RlSC+Yv0 z{0=ks2r%?7m=nXO!^XR|AzY}T4*SkZuZ0dJY0hgh%pRsKy@%wU| z3(I=^MlfeC=bgW$l`}3s$2Wy?SIp_DL#8EpscZ3^n6Y6FxMAzChw~1yqY(eS7#f?j zyKo6FORwUrk}Yy3e(EN+<3nb-$V-oY$T@7;i*QE$5t@d5 z#lDS>vC;1g4nAIc)ta8VyVvxDFI^LhEVXs>7G1u3PLD;`md-h*GfDCb$?<7C(wju+ zPiGALm8HiQkCVz68yKVXy3*k{!80}a_=7)c`W}CcM$om**5g0JI9=RJl5>?Wp71p} z@$k}|cvF3j>?Jb8d8OEyPejaUbb4Jz{9b&C+w&b04IgSbHs7bg|Iit`&JQ2R;a+AG z9>Uhh10VSYx>ns)(tK(A#+Ib*8)v5N`w9H+bNmhR=Wdxk+c2BY_nJA~-jbZzsV&}a zPfJesM&jV4)uruwk}_jVZ@2EFE^};j?mX@#+)<>%ZMu67dRqRf`MYmUEPVeE%(SLS zxb^49khS~+8!i0MX#ZntL)>|z>&e|&-QV0dxap>+QjiHu>^kIvK4EjW?cR|-((p@e zy|dqT(A=l9?jU|FWb^%EHTHV=|L@rS6^q{c_T)sjQpV-pxuj$Fl%{*~(+zWqjuk`_9i=skdykoL#cFxtKFw`R#j$s|P0G<#S>i;qh9RN~fG%xbndi+#1N2GVv!4nX%Rvls*|)E?Z@=@F8l<4T8{YN*w2!GR301wUoWPZmVk8bK+HY$36_e|O^AMyWH z%6>G}jJ<@PY#{0%JSp1rI`1XeKOz3Kk9c?OtsmbpkN+hn`qJ8I(W#^H)%O$AddpbMdo*NZ&@ykqGmC)jWE-Dt zc!SUQ#1TH{g3lr10C4Y&+3PDmYZJSKue=9~y<7`FE!<>}?5B+O!hg^n?~!BT4+KZ0 zJ8x^jzH*XfUn$rZ0=o#b3Yy(jdD?lzBQoNB8O9E^b1>0P@=es>LUW_bm{#a5!Piha z`cdjtHeplZo4Q&3NZ0Fy*17u~0p1~{hvC2b9d1u2<4T=~uk8|JpX4kRyn*U8nyaBN zJJw^@UIWet@F^~vGB>vD5!OcMT>w9VZrZy7`ku6D+sbbXCoa9p;u(Zf!U^A_#2mWA z#-}6L>egNb{_uuHW7x|Y_#@>#vXAp(>l+65+}MrCHZm#SQJ!q*?6XC88l%uKC$;}g zcTeVt9dElkYWuC`3`v*WkBd8T#~|;nXzye2<|WRb!KeJzJAvBuoGr`O^ep9kS#}>h zK4+y*XQ<9g^d80-m$&x5Ipojj!M?d+7qTwFqxB@-4vaR=HWVK~@Z&7?agHuk8=Sk+ zg-WLq;%^LmR59bQYzu*zaK>TYQGJj-|5`q87_PQ>@0s2T^t9X=dQW2CP<~IsZ%}ei znaJ{8$QgDox8aw33v{aBi2ZKz+^J>H8?{5U;63he5%#-y5x)-_mBJpr%ZNYCxMu~7 z&b{n|0$@}LUL1k15M9}+H!WqZziWHhpa1J?b+;P>ox6^9B)8E0+_I6ov$^`mteqrzv+h3OtH6`UirFsin658D zr?AWJfG!?j598yw;Ij&NZ}@-NG}nT^u19!_2ThsJn1s`H)K9L7aC-ZwU#3-e?ne-Mg-3PVc%q_*=){+Bw*XS+?~nN>eO4J@l3!vuk%7cMJIaR_OVOZ0v<& zwTDCthu%_zUqOCsrP*&Oj{eEm80K4k)p%PHkK{=XX2!$FzBKOSm}ReHjr(33kEVh@ z(wn_#$q+KTijghVfv3x$=aS<{UbW&aBR-S#TI7z_zCNDT*Vwdv_eQ(TlZ2D+8F74N zT5k(1J9xcm1ddO0R)yb_o@iqGu6NKSK6quP;O^l2H}oO6KYqXyZ9Y0Uvj%>+iN3Gk zzs*~F3)&<{a@cnNIurF4Aac!|SnHv=)*Ao0`KDMzR>o=H@N*iMzoCa5t0jX*`1aR=zErSJLkP5b{d)Su64~?51O>8^2Y(f*7#i z`9e4Qt__*GahKK**%PvGSDLLWYhlfkW8D7zmTLdWwj9(?88>v^H_GTt(gN*&&Eq!a zu;r-HNvwgm=$`sSUi66MMXcjHHlI4Za3klK_MXa^k(&?iV$6N?SGGmxOQvE ziaA*CeCw!7o6lSFCgyW+Ym4=cs)BZ#;1BA+4ZUqhmQR-5zOBWge;UX6DhqxMmqm$> zP0F19*|!FIOJKb>V1LPeT<;A=+Pr64Ht(EG&j)s$ldyTuJZAHrhy9A=V%nF>Up>0% zr`2oV0f*itOgrvf!q4*AZ_Mu2~b?M%swC3GAVpU;W2#6D)g8&i@m=O?VXgqjwFr!bj+hfzIjPG9!BV z%f|oeZNe|E`TX02FVTkHCOpV{)^6mQ9jw>Lb+X?kj9jM^zfHK&G4wWJJnasDn~;x9 z?@zfS>5QzfcTLcs(PENp&{0Lf#F1aea7UTyG7m`Y)IBW^#I=-Vs>u3hLHYC*Kq7b{d(N`v)ig=SfE9;uQ7~ zHj&3<_TYo|lH~T{9e;J|;3mn&lJG^RyHRIogf~E`S+;+By(bHwdPA^}b4KM(J59DK zC7puN`zfUsY)AA#Tobk50e<_?{j1Kk4rAk~^rLpdq=yS`2)cNW7(SEuEy#Amyf1OV zBPljhxFC_1ok$}V4}4yR+Id*xBVRmaiEJ8){{rn#_Z~4CBb0kcXC|?F6i3mebo3Ew zvjH7ym>5y|t@w)Kch%kp%wI8h!tgkX$5Nk1%suK=AP1J5Co*PnO#&k6hqsEyvc2F&XwqH;BGj?SUls)gH>)1F$UcY1-sT~ zr<)dxc(nl+frS_X} zwd#xu;_md&J(cLo>hsEjp6SK}_D$o!1Xm&No2CZvZxit4WCVWDwxq2Zej}&c8nfT@ zd)(7qi&9NzI{N>H3Vd&evquHx>)*wE6cb~(-Y50D<=_W!^8=@eqZZXLj}YUoNzB9A z8;qrf`Eb$6s6y9OUs*rf#W)%Ngc-~O{a3Z_V(TAm&(@ouL(F5$S&VsJD0T*A)-&F! z+fG{aCir)e>G8aYeBvR~GoSY=jrFXF)*724zSEaineExB3yfIm>E*#UG*>g#Q^0&? zFrON8OhW|UA#VRDD^8@nM%?}0we^R*&Dz(WZz3;ppqFu?pBaUoW;FU5-t(W zFl)e9hT=_0{-&6xWAIn5*ab&+o6&}J;$n067{i$Fy6yIRf4uAT_FK#`?VHXvb~F&j zU_P|1(nm~*y^-1L*t8pu~v3sJyp0w_cRt)Ro^Y+5y>TK($U-j95FP~0gv{(JUJYMN` zw+FCwc{;T@7P!r`nHU@QcfMrA>K#+st9(m?sg;bKy*Ph#PDT^>S;4%X1lMbzQPyu_ z3~TPf-SVt?w}!~q{#Hy=%|&pHu!egJu{{6|RyYeo0c@P=(eYF^5le9#`+>JkA#^?ctYal@b!HHI@1;=eX>@9x4%4C~oI9CTUe2iC zHjgoLTi&SPMvqavJ(+&ys9*_ow-wrW-Q{hr2JcffMgnLQe~)r%UvVV^#9FE{vA1UK z8rx#GQ5;R=?`7ROi2-^(-+h$-hcRx!#T6+=@!CXP&Hn@9$;jqQ@-$bLcah8Vc|`B~ z)wO1W7zwvgZ-tw#+#7E@Q?9|5a;igke`@#{Gf_= zpq0cAs(1$-BftCbJ*hsC`^nFY<;P+yXY&E@HZ&feMfkE&xen7cOZTYCa%5H)g<@OZ z3-!3tZ9V{78IKPea-ZAQU&#N9>Z@KWv98rlr~-ZOCwAN&$!iS1KPMNz)2_?t1G&xc zIvvDSN{(A~rFY=0Zgdmd#`UW$*_Fh%@w@kAE1u2IQ|+;;uRVs}>I>ab;Vom(NiqiS zW$+!)zbV)beLTsCUJOi!t(_GYF7u<5;*Z&@9qcz3aY0?CSW#1F-+S|2YQW-HHAyywlE6 z-z(ltDSm-8i%yN3wn+3KpuNGq*!WIL@iWTf43Z6O09>BSd1IaN;QGe5Q;K&d^2wVY zxUDl)d*H>lQi^*>pL(?`AbPl%Z;UJ_i+9mHlJNsKzL`?|Q>Al`bPyLWlkb1$+q>I8 z;Mpg>_(IN|3pjt~aSoMp9+hDyP>Nk#$#pun^p043#XoaqDeh*3Gpm94IXa`H>q)iF ztaY(Ky6*GXra>R8-28^mj^r6TX5;Vc_%rAgXqe=dx8&tTAIP5-P2nu+8#}38=aH)} zV_!CRU&W^XJ#@IDtStCA=Zbi<>!6#8PhUjbpbzjT*Lt_ks>}iI?u#q2U7pMDI)3k= zo(uXf+MoJ<&1|J?&>}dTh|~l2dmK2i*~xl*gWAOY(ff% zqf|9I)gziAUP@<`cq{Rs#8oS(B!<{CIwv?E6qB*Q40@`-tw?3SIxFg5uJ3-xIxp;4 zjf&G4;E(+`-wjO{u86NI1;@oFCSz#VlQwrh{FP^VVPIE#w)n7N`5xtqhKc6RB(E1Z zd=Uy1bVNnee>Ii=b6s_d?Y>QW21nrW79cCqYt=1HG)r&P0?^1LT~xfOWZnPQba91y*f@vL#j`yl>7sNy zQzjeH^MI+=?osyns*eV(drX1X$e01nMt+bwbuYfEEV#P8gSgytUD>{`c4UQDPxvm zH|T85dOD$}#STbkXi^sWG4h)~Ag7dG$@~^RIKdm&M)ZgHfOc&(V`CN|`y($G8!FjB zNsc97IkFX#{;PIAGI?O8GH&_|teTeL{*D>D1zjw5pV*EqVVsvS-mft3FEjp2q0^Ui z4(_(?xv&j+#CK6~bgR{NPGQ;-WVzg@t@PTV^c2!-;bpA!6+`JJ>DaZ~>8(TQKcl@* zE<@MM*miMG*y(6`%=eBT{j9g}1JW&App4ox%+O=LmBqy4G78@$Pr8HS$Mq3&eqHV1 z7xDP9DeqPCu>Z329vB*j^8Q=>CG&=j{RP$eJ7a%_ypZya8~d+R#|IvtVC=t8UcNE2 z>5wz_066v$x=r0>J^}|;55_}L&tiQ-k zC-3jZK6AhGqZc~A_wsw;7rqc}>;Kz(ifiUZ$E0@NNbx>)Gx}NG-v)R;|Ko8x-xDsa z15d>F376^%&f?DHj$KR3FqJymwUe}L8=k7HrxXzgEoN$Om+=JrT2wh+)e`9AuQ z<-^^woBYdS@CP5h#+k^@))~=10tflI`;7DGKX;q^mTVbo`SI-=XT-k`%;X!<%Nw)6 z#n^wFXInaD_o|@fzjqtuHTK<%-L-1fVT~ObR2+Tw!_qTrzV|b3;aG&l)Om5*8ZlS%!3(oZh-qKx5}^q-6) zA^q4HtlduFl2!W&w(LAqpSV6jm3d0}=+rt+YYeC#-80|` z7I&eHc!=>-P_6*pq{j3#3}8ReQ8uN!jXJVvYTUE>7tj@x3y`1nLn{Ve!kJSGK`H;1IwZ=3L z%5{xm4y~>b{v1yVVAFlfkL+)*L}&Z1W#=91;LNq={jD2@e8^HS=|dKJf_)Hw-?#NW zz39-a^7wwWV1(|xv+OI~+}%Z^3-4on!Z~gD{6pvXhV6&Gj+lD{{k3Q>bfrl2R^!Vc zEyVXKD_-0b=x~;$Q@EJ<39dGMR$M{b@8jW0a02@7!ndsSLZY)zzMnn&Vr)<*@g1oT z&#uQmX$|Y6w~dhu{Lf-f_Ox| zH`hZ96X*pGsNZ?u59M*>AC{lke(+B1<5O5?9g9d__Nn&jIwI;zt!$STO@~TAU&8#`{JF1A^*mlwC8{D zJ9FO;p@pJ3u7n@jX7=BH-iMSR+a#W1x0AhN_ig)A9mhH*?RR{PQ|+q!gU-ti|Jyj| zr)WvShh^v=oGGn424_mf@LTqx=n6J4MOzdPhy7bm%uv}X4Cm1lKeX17^Kk83&F3@U zICkFMiWAxa|N0$ZI^4Hq?WxG)f3Dc2-ol&zh>gK7oH17~v3tSuoA4zWIAu2eBxSQ< z*(O-;4&?7r@kP-&KHTecJlxM4%5Ss`ZnF4`f9GuAUi5cuAF4z(vRemzcV)0 zv4?a%)$tBrZEpJUV9{`2gva(8a<1gQ)_(IL$J)Msh&T8HHeB*Wn2YU#+PeljPMs}b zbP#TIIVbW(7~tKHY!a|*E7;Rv+aW|Qw0V^;cQCiaK9@hj;eF@-6@Mt~_cr#qY!Zh1 zBAm%u{j+-P<9+6J4D*>6;%%t(+#QVn3H;{qCf4$s=fY2@bk64-r=#vzm)$Kr^()+| z_p^S|Q~wJvc;f$||GXPsM@P*XkI+%ee;#Qgbkz9Id-e~<>8Kg6XrfCtm(0!a5B%r3 zz?&24s2|(+ztd4qtg+iUSN`+pzqibY{)jfDqmKXe=q4U=SUPInZ%U81a4zqai1TaN z671ofimPRI)b(=Yuzc#t$G!a9ckW)&E&qA)ohP}M{ODP73);Shwxy?joxLm{deT!r z@sE7yF{Z8T-@%msAAIORgDf9<$Ud|mM9Z%8>Ma_6=@S0)^j<9K!_MIT4WECk>{819 zPd@N|NL=}3{o{S$?Mn9b4}9REzuq9Yx^vl2TjAYHg3$o>zVJ93T!sPvMV`x&)9}{2 zxw>H+wxW-Yi3ZZsqS9Ss3%@K+% zy5~^lBEGLR(C^|??_^IvbzIvhkIvn7@))ZvS31AL*g+wCOhx{e^gGv%-dONU`Z6G3 zeJ1zWWBLA3BlFYHc_-_>=^UAtG74WaZg$R;3&JnvSG2E}-8N$+U<2k$EGf;xplu@WKzAT)@r+JY2vDzcBCgLc8Tl!w;<1 z@E)qw#hJ-{Fo|=-V=dJ04E!w)t~2+=@iBV1#(`|ciHv3x>pt4Hf8)%$<@J)-{u}Yl zQD#O5D!4=NR-ahoF$`9o4|A@_Rvf#t4amC-M5i{c4O(^>lHpl=-!j?4+p;3@sxMst zugaVJ{iMHkj;+f;t{|Ca7j_-BnybaPAH@DmHne~K66gIV+}E*x zRJ|!*nbqyaMnvO97MUI}CwpWo@*!if`oZr-6@Bz_KDwL}JyX(+^w*%v@OR=B8`fbr zZI!d^vb_a!Da&1;=w`-oWc55?TMmrNkbjkS#*zO5drLR56JGW(?R<9q&ykCnT%47i>m2*G(T2S)w*7kVGtjqlOng`was2kiuVtN}-32$nXTk>*(0`Qv zu?rqKk59fRBVN?Y|q^#$F1 z`5AHE^;$SETqY?zo0AxS5%LS_W8?nQ;5qQw z)$+;U4*0g`br*$a+fdpZj4msL<|poG)3CE2Jk5+h&6)|O+in~wOSRy}`@cA2{v~C? zh4wp)FzX^%v^ml!qiBhyN&go#D6#I>g9iUt^IbR){*vb6SlRr%k4KCs~@xBchgVI zSP^tC{4>58bLY}XkhnYPF7DOHgo=10x9Mj~1D5CJ*@gNr>HnML|}C9&|i{CAeb!`Kq{eaiO%Gj=X(c=KZ^QH^Kmft0Am zBsd;K9(pG<5ubW9MW1fD$1YP!xry+X+>;Acw$wN?QGRll+ik?KleFldaAqRkNgSG* z#Gn1huN>TyMaMQEE5nZ34LrCrrx&d9W~2hgjm8a@O|=^xz+QaIM(BSAb7{g(Z6|LP zu3cUk9K)X8Lp!cCmq$KJ{Lso6v|Y6S$x_~+e29-^@M9gY6AX{vQ~75P?Wqf)#oAMk zzk`x7_c3IZ8S)FCCHWR}cQbeNqh~j>*7b}_dQ-{m zc9=I5>wKx>PXD?2eQ9WZ+aRhB z*}#>Ypr74~hWhys8+i3|yglPTJX^}9bFSb&i@n)D!4&^h$h)Ww@_XLOSUh|TN6OdBFZKt3g-L%oSA`uXzzXfey`sj=QVSl^Q@oe^L(Dq^LaiC@Hj(z z;*ZBD58o|!1NEGh>%j-s+qgFNd=uZ>5<`2x$dQ&a&-eCM=GBp>P1*%l=4B`{6h z0zG!Vhd-iwDKBHSS4|8^zDslwIxcn(Pveir15G5~`1<)p?$Um76O1~|s?SdwQqL3k zD3Y|NOBNHiNXefTPJb^tl-_pcO1|gcBJHz2Itqayc3~E?!`fab_lnB+2KuATieJ!4 zf00dFR}vhtKW${ubuX~kf}?5 zW~r7~8mA(MQq zB}!0H)h$woln1|Pllp*vJFu1Z)75m_jyH3?driuz&&>5tO1j3{jPz0Dkk2DCZ)c2x zKLW3w5wgGIN55p~H}Wm;JBKCC!C#8pBdYt) za68q}6RKI`oygmS&&@ORc+mC5F1vJ5Wnc<J3blHU6cE(^& zkTc)r%vtzn#FovIDn9!%^#fujPFiIQ=i>)L{-z6mqSoSPI<5MRTyIg^%&8jZx55Us zmUGi1vqjGV`9szRGYuc#B7_##Xko*s+aqRap+ENk6+1y=kHkHj8(W z35))J6Z4)mYfe!5XJ-C)@ZRr+Il-J{Pp}w2p5jB5`wRP8+I*UR8n))xq6 zIYaI)#3mhCeKR&R5|tt}n2%>zgO&HNSA&nD zXI;Ykc;XkynLD&s3^n$OzW5<{A!jtPN1xDNdG`Q3O33Gq*)KNK&{SjqCgNXkZe!h? zrJWt{f3h!Vu?N#ELJN@v)w4H4hhCL^n)SswA`}Ba+K$+6KZ31*tcL^eJZCTV?mo+2 z81=T&qqeKfJ4D}3>DQ$Up7r2%`mG%=!nQKn$C@?vz#Y76$JOShZuYotrN{qq=(`oU zLMb%h1hNZhJC`-y$^WbE>no2IiH(C_#!<=LcGV}Wf6h}OJ0!bb@JG_>k?}H*$P|A7O*fm2zJcxJSi! z+>yPy%N*;>qaN{dR7Kyq@OyN|9ObtrHq6iacIw!|o;9^HFE(OJE{A6mz0D?N`$S9B zzfJrUe33hN(FsSEaSwaGQ~Y=}*f?8R)CDKmhvH*6m*GPs&SWc3V2{5J9I#f63B>oe zC)m^kZ=qGGT}j$n=ukYoLA)C8&4(Ynhjnt=9OoPjzS>O*HEY4U&9SBh_5mT?=n8nj z$oxcXSw1xn#5O>w?L=4MQ}q0O0~+RcqQf{>jk8&)cP{O)4qx4cJUuQy!#8m8-2wC` zn@^Zs&Y#h@N6~eQqf8w!Mb&`~^P$5DFYv@vT^INn@3Cr}H%3*xhtZFJnYxfOG%Ilp z^G$qz7k&Jn@jt#QBhV6SUJysxz<9L%`TY~|N$dEJJxsztz7I@jfM-L8jj;^i`v7ah z{DDz*X)>mPRigs)d$3)+9{F^NZmx!|+-1h`Cnk`}kb%!d>hqyIIfk*D3Qn10GGZ4^e7`9?f@}7i_oG z%}>brbK0Zmh8FfmXN~mH=ti|c3pYbQcLA@s0iNcStYf=rU`^54-i7N)yBoMk-^3Qe zOTHTR_+Hgk17Ee!i+!gJozdhQe>DGn^to?BmfFhv${32oMwxY()?e8o{F4QkS-@}6 z8+@AaHH6RHy&iPtT^G|^1sE3o&Eo!WH z6mx=%Hk>!Z=U-JFD9b#Qb_l*Qk8c~POKj!qw7U5#fr$lNmG(C>2VUd9GY|s~SgM{6 zSgT$Lyg-{>w6}?N9b?dIM{mx1+Ts2Eu(GG)3Z@V@^2cG;qyv-&DcX}Mmo4- ztEvge{^q3|a=LkvZbctmc%Zx@W!{>7>9v&|y$ijp0ZUb0;1z5#tH6CPdu6#!S?*)=%GR?y3iu|`NfEmZ$rG~KNb*0@PuU{64WTsgqZX2N%9-TH)FV7dr2o>+ zUyZrETz*B8vPF0zW3I#F6x^|r*9xwQyyR;5eBD_u0;`K9s_%f{C~IBLdZ9Z2VnuQW z#`Ys^5WGhUZKQIZegfEWZy;JNj$M4`pl-8Dg*5eE8GJ+KLlnEi1b6tSdUQZ7aT|%ylig z&Exv^19Mz6ON(4LPP@Ui;KpKCQN?W6;yX)Rw>?zuD$SYZDjQkmnmum1D=OEmXH3q} z=S-R9x+!&rt2n0AMU2m2OWp{*r{H@1*LnH+wxk(fBQ#UKY zc;`5M>!i{8xZKJ5Ba`tL?=IBw`4o)Ho1`zET%e!H%hlKBIrIYe6#XH`NWIaWr?{d@S4aJaMel3b@==FZaZ%FWT&!S_B}FkC;jS_wYu zfJZNI>8(Fdf~^H3_11fppl4E^-a1(cW=xu*x8BXUXi}#B6UPYsPDj4}Xxs zdR+N86ai09P<&4Q-kPnuZTWf>ex-u8v3mXu#je(yJ;8B{N?bSML;geSSUpVHw^UzzxCh6t^v7I^)BZ5giQ&K=5FRxL7`rlJ4t_` zz@eXH9!KNn{v`7}n!cR`Ckm+lz8gHQ1o944qJncBIr@eIr+z$J2}U{GdNX*`QZQL> zO$4ssLu(3fo(#MOGG}WTPww^l@jNAX+&kU%?^gV--{A>59mDkB>%X0|OW!?byV#YG zr-gc2?UY&V37*hjn^ToHT>svXXXiYEy-910CwTGJGFQ4iFlUkG)?2A3B~m7xGC%MH z-{wy3DQ$}We$#am%pSqF)@)Dk%X^ie?jE758aSBf3GR}< z;5+eyN#phJT8HU78S7DVk!uF&NAovg$bN3{DuA@*dV=XLU4ou+kQE>mLbG(7O z|3MpBtcPELmz&%!J=Qrze`@k*eYDf9yC;v)@re^W#dzwOJi$Y(!{6B^>91Q0^%t!L`Yq(^{XwbgZ`P6e7}i5ux+nMx>r{OW-(Q$q zsBg05>%qK{`o+Ad`cQ?qJ>c;%=5C*rGc#)@lQlemJ}dOO!{O9BS>M04PSGzAGvYJm z=*QOU^(PFP03FE7(r*Pv*0DA>6pYs2&2{N-vaa{$j?h0U04~k~z2D^V`d`CzrVbeY z!0ObyowEKX>OauN>Bqoxm-8~vE9{{#B60a$(y8u!n6~E1^3gJDlCc zmUdTN5*-I=Of0EO8pyXPiWdl{End?nfxj|C3DR7V&?d?bAs-qZ!7st z@TftvM+vS6pYt7A`Wb%XT9n{s=P>*T4b#mY`UUMyY*B-8EvBH!V-A{I%)t?q8AHBI z%4hH`hkS0n7w~;J-#fC)+5gJe2WPGLbaLqm_C-UU@bSQ*7b5X_{M?t9WzOh%5qqQG z@U;A5P7t25r|s!E!PsKX5AYas4rU!HeaQ1z6;I7W4?VVXU)G^_RMmI)Lu(#8$ysqM z`?>fA-0$EXG}pnV8LqsSXSn`yxY#xRzlvRdYb$ZN zJ4;+|Xi@g}pPue|-8NZ&*up;d;&fNBHO~HqHOXFVOSL~syoldV^#osm{*S-j6MVxq z#J+|A*_vtd-(|99`ndd5Ezg_E4uLD~8^t zCmbv3lsVpz`_99+QoKo7wTZFBnFe~_;og3X661XXI-YIv1h=ViwMCr4W?N#tGQMnW zTJXov{G7OH!AIFYhNVs;=3BIV{a{aUcn04xJ;Bkr(}L@?1p5XDYjHIB#(09yXlDC* zH~9;u1>YdQ$r@$PvL@Iiy>CB1zN()ehx;k9bLhi zml$ndK5&>l&N5n`58bPG%yfO29&cX`tW%0^+cUZ-k^jT>{PJXeN9#w}hqo+9g=@B2v2jG7OMh1|b&F?TLm8YmS8?lwj#b5jdo>=&HvDZNkYrTklVEeC?rf%*n@`1m! zk;r#z=KLN@)r!DPs~WwX+~*a-+c#US-hG_i3%pQY;FKp|(hr~8!cq-<4h#bc53e(IL;o=ADl$5Scaj@QZ1i6PV5b zw$p*}H16w53||+(-JmHQ*{`o?f_^w^r}#E<@BKXgk-_@QmL~gZ+NStEHe3ANSH)YA zI4e%zbr&%i=B}#jK0*F>@$VJ?`I^6sDIVp`e(_S zw-H5pjvD0^y^jrw;{CuJgWX9S;X;+9SCTvhTab5+=b5RPy>CV-htDXA`)rir{!CNc z%VQMZhhO&YE>_~b=x+GzN?e!d6Mc$I3OR$17!6(J_!HOoziAlXW0h0;h+TpV`dw}3 zoZv$4Pq(ad`F_hg_e}nupEmoByfMiaN81Msa(^K)ZEpM1 zms=Ihp|{RZM5k$90eZFEM>KQiG5nJ~}jkbyWX!HvG{ZVH#F$_n+pex?$TzJGD4 zy--_~Gp=mw@jh+IJf_l?^iOn2O6gZFHX{cpBjh=tY;XyV@4zXN)8 zalP5M5gIG5n|EWIiPDNL}JLFF*#o72^Wgr?@wNsDw-h36573*|lr)<`J2)3bzEzmw_Wbi}zoqW^+g0C?D+RZJAEHA^ ztZMWq2Y1LuYD||6d9U>KFTAt27`7Sh z*Lj*WON=)~jqz<{ES09Z=ASZ0xx{mnd6PLwWljb$Cx6$joRd$omF9{6>v$%##iZLP_AIFzohGeMp45PadF`7==D9vR&+W`_A+TttOb2yK+r6aqGUvV2k3R+Mz7=ev7{BCW zEHeKGuQ~sNoHG9%=v1Bo|IctIv&@*&RNEKSEBH`hMy_)SCk8oN!HGrTJfG9P3|wL#*rwXL4t>JiI=Yma#Rk6<ZAy+L_2X~bt%dO!ZS+;M@!^)`@#{M`5nsWoRXErpb99mQcPco~i zy~J}-=oxg%;7fMMUEjV8pQ7IJe?tHBeag_(IsAWDTiegqI`9`$!ryqe_W2g?YmKg( z3ccx(J2|=264`1M`%MROZINL%Ao~}3W`%wUZIgS0o!GF%aBo1Yk^G(UQ+>$%4>b*i zRt(19!>Shoe)xs5cr*II*o|RxG;0+ySn8HO+lJ*pBb|X>Xph|AUAW_Q#&%_lI^mgm z%^8<;ZDgO9ICVlhlj&cZIYx9=eCOf&>bTbyo04vGoKNV_Q2KoQ5mRC)Pn^V;G4wUO z@PX)K_(jGnx)3JwVCays-}^;(gSa0~*~g;x{XA_r^*#@V@X`P^HTgsH+ z5n%Gy3%$Dyc(i$fkH2B|jgYo!D^gcIe*Q>kr7gUFrZIF84E6fBy}o`TaDd`86r?h;l`l>TnsOzyB5L>)w3jR3>(U2JAkd zzvx7aH`P6QB)?y1?&nTHv##j`8>}G|F{^%I#Jt_eQv!e!1N2Yn1DF@bUTe zwAIx0>wAbp(k%Zi8G!`LEVX&oIp3cxpZxl?q&1}f*JJH8j`SFV0n z7)F*$aLv^->1zgXtqYIw=bUF6z$d}c$ob1ro9-*C&GFTYi85?3?&Pc`JeJ&%HJO_92E}yNp#U_9&iA-LuNIC-S|9?;3R2QDpL!@!$vCu))}Y&UP&E zhgoOu{+8!8o&b-mt=&gcd`FHB_MJbP?n^y3)ZmY0jS0OGe71~^v4754^b2ze=juWJ z&)^9K|1-o6B-d(>W85ZUgl_AvoT?c5{G6pca`*Y4iZanND_${ptQud+MU2*uPwy!Cd-M{(E@DroGS>iof<5d!MXzSrf8v?dC~Mgk}^o zM$Ub}Ro4E==YcJEyze?Pf$P(weKkup-==*-eZL|7B_5#*vDo%}f^NvCnVG&gWDH~0 z<@gfjpj$Esz7*a+3prEvT8nSmK8x?W`%Jzc)vCUa(DM>KY|(iEZq7l&VjEK)9?*EM zYGSwC-~R1^`vZUYmg*2%*8PZ@`1kqia?hHQYRgEg84+ZNrbIv9KWEqAZWEkuWMDdlCn=ig9#Nek5UBdpW+ClE&$ zI+a4bsr@vs^hxy0200QM&%bQ;Wj|QZ-5s0i9mIS|Tiuu18g!|x*QKomUu{d^dxW-< zZ&uTRdHl9;TZ2OF_>)~q<3xNNor@jhJ&rBuU#*JagXhQt_XUnH_TSE5n`_YJ#i70@ zO&`!Gcv)O$@h#`s&|>lZkTSn)G5OxCi}Dd~=u{DU#7)c_bNDXw+mKB-n76Wd{e3k> ziN4w4J84-PvX6{HZu8DiCH@`kZ{AlEYwr5hPt)dbr@IpxzPDC2_7TY|G=CI&2k-3m zG^5`!uW$alBKg}wG~ZY|Yol0?_%3W?FQ8v**&CsY?`mz)#ApcdLL%FcSbDbDlz3_9>H>o+CzsXyv+{YBKzy1!IE?H7jWfUJ$0wh_iSw4#BWM>o!|DYE-wlr8fG zM`RqIm~H+~;r9fmcM+2?-eh&gnPQx$7|Xjdo=o7o6gtm%r2pC&_#_@_L-4VQHXO7e z>#P%*lF*9CSOjj;#(*%aM8Z_r>CDbQy4AE58s9$7I7gx`Mw=IRYoe6(413qUuyzMmnk(D6N zFGijp_Di<@vR^W>#}gh^uU0eE$!wM z!~enatg~jyJt_FW8q=VGx0vewEco}2eAT!3UY9TTI;}A^r{#1zXZlB|Q+%C$feiKg zQa>@Zr4PfXyTUvKyL-`bPx8BYx7S70R+J10?7+`srTMmi*ua$XKjfPz$v>JrrR5oi zEZE#>nFil0@mHRV^tp1sse6RfyM9PO>bw)*xf#e2A~K{5`L;jw?Yn%dFb@qp4QwRu zVEI;Z`8}EU`}Y@jSFD-rXak0lCyum-NYhphU9h7p*BeQ%EK$2H;r#NgzP!)3{c5*~ zZ&%&_HI{J}aj1%|@Fu0U>|r&r+N?Cc!2OAwRkec-uhtJ; zBho98r?1&R1er;aA3dHe6*i^WfRFqi82Ud*{v)elFY&GBEcU)BrK|i@@4_#B?P-$s zRv&|I^ixjVa58i@xGaCVwlBVj559 zdWJ?Xu!VIY#dn{q1#I7tV-C&lyGCT~MC?>04)ihX4rGmpENcVsk~LDt+7KN?k-@x= zJ*3c*5Y8m~A0y8J;91A|U@eIsuy-}!Y5~3nvK)=Fjyn1N)H-bEiJ_-0#Xdr0Sq2OGy{~^*0oKH}iwZsUXC;PuodMA4H@SVG~TI5r+F5^7s z=-NTlBX}RF=fF>+yXR4+<&DAMeX{>W#!z<&@00z@B5nUvHNO9f?-h(Egm=mQ2idb1 zk*5OLVI=J)-i42=_);}wlz&4%H-u-&{yBUTJa1U%Cr0|3b-6G3(zoH4-$%*2 z6B((o4wC&&-nst?uY+X&aNaxN`Jh$1LkL1>k+XS%Mj7UmHD9KN%iGOV9nvTkgY z(HyqMzH7rGaG%E+I5xz`HlQyo<68>ul$u#T=#sUAe;rrVN-u3Vn(-D0=7Z@Skny zhsm18-n1(ZdxtCKzu&z6KEH-cqBO?Sd`|THkbSVp?s}iK;;4nsc`3?Q9_MMESXEiD zfJbbA)&L9Hdqj>QdTy1b6q{lDg}{7~Hosk_>mXxlMg#U|fsJ4jvMq3&-1`)=+*dVp`={yj<^ z8QdMnUBCm}1xP!)t%G1SBV$N(HW*_Fx09tBW7sK!XGT`C(wl!VGApIXj8?s(6_bJ7ByU~U_;0CU&&r5KXSXS*> zmUMw@!MT))Qto%l`nH?myos`&nsC_#eac#yQ`KUVvJadcXu$mHKF=`vd?n0fKC6Iv zq-@}H^aSa<9l7AuawEan&m*#<{bGBA?{IVxu8u!@)~;ZfPJ zeKqLvmOWhb7i`UH9kZO?Dz)LsiL5ob3l`cBpXcnje&B*_;Oxcqs&Ce8p)agsaFjmb zlLMJKu@MC4yX3x%Ghf-MC|~=em<3f1OQXPS68G|5>K7&Oc&aaE3GQ z1#`M{0yY%w{C4mzJfy5!xo7+G3~LuYmAlz_*x!$@2Q~+?(hXY<*?Wl37l3b^cYtrH zwsfy?mQ94d!k-FV>!5GKr_NesA1mwLzB*U(14~QI^Q@hVt7pJtPKU>w29H?+k68?l z8H!)f3$G~hN719aaCd*cMUzJ(uZ1#J_DWk*8*=`LE~wZ-5Odc5g9Xqj==cNNGhf_q z^7WYep?|BDC$Sexj2_`X&v7>W4P&c(r4;+0kj}E)JAH`{iz=J=|4q*qx?0G$6TsS~ z#?)-WkNnPk+tN0vT6z1;3T^`oUfT(;@9f~c-E46V!0$tmS^fK^xoP zWpnxMWlRqC;ZDX?#=e37{rLHeNpvD2<0#Hh;!7CE{pbbU#5k(aA?Q1fCATTHe`Fkf z#Zq3yomtJWx6*2+D)IaNUb9E)KSA9)RUMxbO6^YSmi`EArBAeJlYVJxLix=F*kOMfC`dJ24$JyB#MXMu5`3;iALn!W({MDJn~Ix6-U&cWC|e1^{pc+$;E%TQyj zNKCa6j0Zh;r<~^Bx5QbzIsGIyUQ)RO_^&5U;xKSO0{<<*e+KaX18|rL{NFP0?Dq!z ze+m4hE?Ff#jCl^Hg<$FMnch{xkPcVgoiiHqN_=bJR%FrYASipBCs> zC$#Gw#JW1QqW`kn_%Z4|8nD!ibBeYEBIw170@A``1dmilwt_xigdUMdAXFt3| z&!#ah;hCk52(Hm*gEr$^!M6xp^Ix^r3&S)`_TMsas4rbB`bUVawE@3OMSSV723LmY znp3%&u0@6D8f#N%Kq@*QLd!NC%J>f>n?r-fJ=EDdzB5eYEaV3Wro z@q+Gzj+C)x|J1K2K%2GCvp)+?Zi{8#S*rNH;9UJabF?0s-7(YC{8Q-TJJ8&pL3?RD zzIrV7&*kW&FvoKyU)Oj8X)EA6Prx&Zf2vRauq|yPWtvE@nhd>NP}f|>-Gs;_gl^X? zx;yYGKBmj^u4_C$rh4 z!(P$^7YfvV<+C_P5c{inHL#NN#NPFT169a4I9tVwAC6<$ilOIw6df};PgHSM)ZpRU z?^T-7L+)wF68{#;N%rNFoX_$doC`Wx|21oKeC>CK_U48hXXD0^&PHM_CwZZtm9xPa z&LUE#hWsCs-#c<-V-07Av-AtOi<~nyJ2+dEakj971B}Jb`O~A~JNsWTg$ zCC&?_?^W$-r=Io^o}LueW=Nip=zl`==K2pgWam76-c{H+S!JayF@iWn#MFu<0gsqQ) z?}tSCQ_q=L_SZ_Y(j2jm6#d9+mEDfsj+9*nzb)nE3~dr065%xJ4t|cGk9y)nA-5QZ z!Ak8`{$Jf!jq#*nm;dFb^jAr-Nq=v>y3PKf{#NwqZ&V(6`(o#u+Z> zfyNkpg^!lL%31AFUr9sGj2+Hb(*)Ks2KY*!=*%K}pC^3kAo{Tz|3;l7rZ?U6U5_Jo zx+m~F`duC1Xchl+@rfb+WS$2vESzTwKj>Fm%H011*}Tm2C+ua%n0t6)-}~r67oo>h zO8f2XZJGt&Mhl@e2JQ?sa3_VmNcIpJV-jO*??31gPIQ}xIM0C>k1O539TKh7c0wz~ zKihec$@43Bcv4Qr(vPw-_pQvGN_-^++aVdZ%)89F{8ven*h@>9*T@`-uFq=ZS?rM_nsYP#jp}<^VAutk|Ogr?!&e*K@DigY@dDhJb#^}7I zAJQ%s|3zfE!Yei~4#{7|SQ>~4F7s9ee#qSABG)Mu+@7Ma_B}naFEp@^$bGfQmU8ju zfWheZp1dvX zTJ&d?=!N!Ax`bwj2*H~9Vf8e_f`qS~4oK-?J2z|$Z(4pM-CIzBpZ9|J> zj&}5+G2Cg1-flq3Nj@oi8*N7DjRLKD8hjN!{}ymIGdIJ)OG(Qp$k1h<$>djX)kx#} zcIeK;HJ-;-A98!^;gfg2#V@{Rg#K*d9r?gD`zq~gVOsQ$PkOf|DMYkWcru9Yrpd^NT&yR9i+ zp;f~3PQb6b;Jd6P;c2)pIHht&aWi$u8f&+HmEI)vp*P+50T!SSb% zmz-ez$~x?1&F%Q5$FT>VmpiRm@$)2WQ`Y4o*5L{0g}|qYu~!2F>4U&2m$iQDLAQ52 zPboZdJN4Psn67N}8`|%HkB6RZf|mURnr0DxcQpKN4RSfw*4txTjd`TijDz;w&3Rw7 z)SQ4fhSqJaB)zhL`tGf3cEB4$KYc{sgB77jSsLk48i_dY`W|S>EtodpVTYYjLT*cX- z8h(}YXsy_16mjNR0gw7T=g|T1%W?-g&o!WNFR&7QmeG%zeV;~eOB-`fly3s<+@r;K z=jYdPznI{cJB_F)#kN6-;fXDue#>)#z4(^#z~4=yjvr}?_dh=NG{5<(r#WNQclW3~ zKUDkMh8-B@6`Jsj;t7@@3oX_%^=B0&_>5u+{&KV-zpHg}b};O+Mk=RHaHmoCLv$f& z!*k2_z!KKhr~7}FCVp%b+KK}I@_8~=RnSJoo;v!IaUjEJ!_=n@&V4}>Z78&X?9ymM z^wc@Oof13GxzLt7r_?pa0*5)S*v5BO-5C%XF_-^0KJY@|Q*0hS{Wkchhh#RNr~_=G z2cEHNCGD=X|&J(8z0z7`>|KF-=*5FYCrE%`_RsBY#+IyZ|}TN`)e+0wZx)c zc*Bi#&3lK2V5*}3sR4)5Fffaj7_!XR4R-a+ddcd`(nD^y8jOnoW>#o2jTt?N%Jt7N!(V@&6^=0n_;j zsxOl^O2dBFq>r)&jk~V(CVYnUN4F{(9V-nTbIS@dxMNaEU25D+S3i7!#7&#-O1yEJ zEBTfZS4w5ED}7~=>)1>sI5f%=oQZAt^*rK>;OSiKV6ok{JIClxI7jO%u_gaIcImHR z>pd@Tynfa>Nf%rA@8f4;{gCJ8oW_^L{drULU*%2KqdiLSqip;}6kxNShcA&-_yhf= zIsM|4;7db(Ij0yq_+dQ9u~%P9oe86r;NV;(n3|ykPvIM)zorB~9IFJ=oQ3*BwEY{} z{wwz619G$Uep8g-cIp^5QxH2DKGHEoFJr9U z$)ohC_^C+1=5YkNw?1vG9*fP%QVY7pmMp!&lC8g>P1dEpUtyQrW{!5f1>7?6e_+ZT zsh5rE=ktg!1?=KaVzVqhSW3XZEO;mJ5psMcJ|*yNFdbWQ6Ls$gHYf3`q2Om^Gh?>n zGoWn=HY>nmiT?7On=?JZZ_g@neTWZ^R^Yz;PEYXsTqStgrUd6>(|t3x+~TW6Wgbtb zla|c)5+!)^P)~3>Y0IHk3;TJ3T|<67r@zG$9Kmz?Iwg3%oPGhj<&~WMutBdNpNBcg z$nXT0^HeCRy$;_X89BW3oZedET1wjX+yc%u`FaX{ufs0-I6g7<1H0t~*XbtSTktJY z$u~3pCp`FnP{1(-c-6v#h~Je{6P4iFx~Sl}v7X=={ACnO%Fv(0cSYvp3BYiyUSZ4B zm#*{#Z^1{zVCLyI{1#;51EdI?S$exC=$<@D|9LJr=@=DCXYMnHc!Ce{tc@OQUt4F! zhl3~hAkT4pWE7FM2;6=UTwbg63m(Cb#gFj+a8{e7|Jpi2|9SmnJ#7;HZU%br_cB6% z4_`FjqA!c_%dy+(!2iu~{dMsF6>R=9@iDRbK7kiLSaK)m597CEwQZ_?D|ooN!V~mO z0?#LVf{#retKUcZLe|2#R8Md<&zsntAIERVu)NXweG3xpTNHC}+(=Jw70(za-|$iK z5&m$-^6jy@e!-7`+i@G^@S}6@1D@bn*63u$u?0UFPdF#z7sIVDU@hHy8@^m7kJHoR zGIVony4^@;9gIz)Zl0sobo(!vi+%XN7&|wKx=q2cqxr^@!}|uMfAA!JLT-PEdB(@d zN^o!kztdP>x8EXuE3-rItmm9KPjDrVIl+WViz%2rj&eNfVodgRb^U|Kuk!?#)qxKM zBfz^H{dRmo6!TjQZCJL@6MUAsjCa;(Rt#l%)@f$Ss==%R-g%67B|3P#gt|6Bx51(H ztd-lrWuq)KVcCr`2jRM)A6Xh@dDdyFeVsyGQy2?R6u7#Sw6%57!B*DY(TSem(t7x0 z#(1jj`0qi$&8{8JVoNOvyOKU?>xr`mb*Np)hSx=XmpvY zVv{Ghp8gae`#3t6JR1HA=&wS*JvOYpp}8Z9qwPNi7eQRmWhvt3g+~9k_lXo4(2fS?*fNs z;sj@-gIUyZJ8%f$jyae``?n`CCIfHi8}%&H!Z-ju%%toxU}wxfbW8;XCdOlCyb7?3 zVqE&Sd$@`j@3`H-UOyMvc^_Y&(bhFi-BD#K4%jaPb{mwL!J;HtcUo{Muv=F* zGng628Up@HfnA2i+5z@UE|{B^q$)jT<|~T+D$?dO;71)Qd+G>oIed0!7C~$0HuiF4Ve&jLR4cIbg zH_k409pk-(ImiyFv1 z7XkYS?1kjZ)JP$$L8~=65kv7-klFU z{MZgPxx5m6V?)jly^wqM-%PSLdiP~}t!`(d*lC^@{o_oVx0pwC${LW%Jis|@IsEVP zmFdW%Qiy#(j9t#Hw_%dg+^TV~q+!0#ieVJBoGLMvN%~E}9d7k09 zoioPrmE28Gc5SiA_Y9BtVL;wz_`DI{CGFg8iLF2=#xM3R@pU0SU33_z51RO{h7Enh zcC3Dh*67A=Wib!@yAd-*^isKF#+OJcF$MxvDZc%m;E7s`;T$I zr(pvuw#co~9^d`dI|8e!#dl>0*A$P%X99o3AHt$NUv6!seB}KmdAE6diYMM@nu={2 zc|>P+F6kP6SSzb510oyly-tyM6^7r?`fz%hYERJck%KRV=6ZCtC2uA2vo`9>q(0HD z1-4G+9bYqpof+tR)(sY2N8)t=x39~01G<5pRLO__DR)ryj89^HbS}8PS?sT8ap#7z z&-j={=>Ho&IiC;I6*&)y-%Tg&ALZ`OijU69Oe?W=P377?hgZdp{Q6hF+-lUtU8wlG z?7R+HB7N1`Qhgo3q)bh7c6LQMuzB}swPN2G??aA{d_2eZIdB!d+jICsk$aKFB^FoyR%VBrUM+aSG zOvn19?*L98a36e>y4vVhF=eI9G0F%W8!1CfzVUmxr-p_t?A!j;ZBJ=4qZ`efpgVJn z@gC2Pv_Hf@mU;w#jc!p3}sFBw-OWC88m41Z!FvRG?FOZjt{01JsN51#{b}#kf zAELRGvXQA_d*^!Oos+bjp|~p>JnsV>NRmvY9sEb`<*b z-?SzD485lV&mn@Be(vhGvPOMw^yBYErn%aj;QPu{jYM zXXvAU#V)=A`QO$)cJb%2i@z7UsWqmYQ<>BycTUK=!8g^w9l8G${d=4EMBqQ;2ad#g zkvJ&CZp}qz$~yP4&c8A4z}dO~&icR>z8}=g%7Fe(vH+G z?UY0b?MO1>>q=V^VTcZ-~^SJWy)cJoAk9ET1i|>=(^&6E>St$iY{{-wwFiIZ#{-y_wVv9 z$5dU4ENlDzB>~Z4P_Q8vSW%a8o{*RtmDnYdo*?{0@en0(uItLSo~C}kix{!g(YI_J zdv3k>1dtenN`_DScB~PD5P2f;wvnDjrB<%#Rs*GI$GefDp(7^G8F6US>{eVFGeSY zxMb1Ox&?OBxyy+EWt7wN&$;OX@xR)Zc$!1)*qud#iT`zTQIEo%_*$E?`*zymKIq;0 z(@Wg-__HtDq;8S@ul}^%y<`8k0|&5i!X_!d@7VS;wpQxBZ&`nz>3bo&L)n+BfiF0{ zODocSs_NM(v0y(ii~kOxZ?Zqwq0M$@n_1cUH`=MQc287+z0j-0j~a2j(9=xx{|LLh zR$^*ZE=%-rp6!u-h+ccu(WvIiPolVkfNv#6Q73-<-@-Px>O<1-$6eJK)w~hht|Fd> z=$J}gi3O|?hyFmcGEwHa@^n=5oCtg$Qx0nqYdAI(x7>qIdAaBRJ@*~^@EhI!Sdr0A z5prkF;j1j2o94?s&p!4vqb`YoH4(bFmG+X69fNm9{HsRRn8d#tOZ=*8ul-WmI-pcP4a~Gv{L9-WLU2eJaa=BNeoZu#XwvRN8 zsRVxxLhCZHk^Met0^5gwq8f3s#KsahV&7nQ+KK-pYb~@_403)yoQFHkc!>?@z{XNy z0={obuIXZLfPWn)@nHlVE&zxH~zaD!#BmOV_ zl(89OY`;9dI`j=CkI-r<^DJc~|HI*Np_h{)eVxSbdDgwGd0FEX;GW=4-xxM+^hx%W zg~a6$+omCmuU>q>tolJfqyN$l|GUwNHgw3)mGJF2y`&(QwQK)Osa?yR$KKQS0?8*f zE`!MXOo6(E`=fZV8T1kKf1kvyw7;$N{J|?RyDrnXF9xP{Un@4Ej7!FXZM5M>r){j9SHzyzL8|Z1?3T)VuF2x=Soihd*YY#m`|Ib5f&AHcv9RRp(zzF>ZdnU2=xXTCL zwdj5>JWxE|xVJml-?IvT_p1&K@T_`!kZ08&6L{~htU72_R=qtyS#>BuS@p+3%Bmyz zV!Jb_s~&t2*zX;njPalgx_5vn^gGHlrik|z@Dq7MlGHEfl`HC}?myDTJ9zc@Q`+Tr z-l3g8($1e~=TI8$>a|VB^ub(s zMA|m&o%ZK;c@2CJo@|i+pAUz4j&;l>I0h|D^uxP_ap0>lC%=fE(Ji!H{8~IN>p4-$ zm;2aO^g<>64YC49#hEWtga;z70k-pse<|}X@qZ$`!=j(DR+Z45udI2Y6T&0NJP2=p zANX5oB{p?0@xX0%Vy0f^t*+SfE3$ps2Vb-2;~&o9b6tDSKkUNJ(&ej)?D>5A^x>7jojUMCxp4qz8S-HZP|EzaV%Kh@uMDLZ(}!ZxB}So<{!}YsNP56sT-yXXB?PI>R z3jf01@f!oT68(#SX&w6^3?zF*qQ94Sg?Cx6@?H;bR(G~{yxi-{J37)^6yCM)`(qMY z?M&}@(P5PDqlx#Y@LmaSRvit+y{vwwzi-Wl3jW;crh0f39)XGM`Ld@R9syiWQ6{`^ z3O`}&6PpJb=Z59@s*%0o^jP*c;?D@qta(f6LHEswkA+R5v1gn&D=$a*Ma~uYu2GOH z$v&v$r?hN19pNFR@9kqfZiJS#rRZNB$U1-?M#{!^&Is%k@pZJ{2HiaY{P2txfd%@TGPAkz43y$~Vv%tU+%1dmp?^3_Q znYFh>`&u7mhHoDFDCM3`R1d#FU*YGRd%ui6CG$HHe1~3+e|rC|1u`$ch4!tj9$#>W z5sz_@-}7bk1Os!F9=_25VaYfS2B1+H7b&7bo;j$b7l4ZOQ$S%Po(j0E2i z>-E0#--`3CVBE+foRNNPrym*U?ChXjdvA2@Cg_g^xl`_;0_d#8Y46|;p1uiurA^^6 zzDJvN#3z(~$~ymv*oxbf@qO#v*tgy9VH$A9$R;xmo0 zX`Bb4@xV6&*hZ0Vv`b$;fTswxImqB83MK#X%k9pi-B$Dz`;K?c|FYdvtV3z{t8I!5 zH`RzmChh)LpLWO6ZpP`}ae}wsWv;(b&KJhjzIggNeQX6b#$1|Hj4=xD-!3$Qbnt6e zW*xC#fq~G~3;cF*UiN_7f?py0{_0*BiJb!O?E?39J}J^)2Lo{|(Yw#2*EDj}DZ%OY?J1mo*xIG_6ualX|f;(gVWZMUy$?nqzPEcJ(QBFVo5_}FV4 z1s>XA?T>3uFK(`9-)tpMG->kAJ^-zPu28?sTjb1O$RbIPy!Sm1%Q@onW6GA`(jAn-Vb?pil>?Vb(hh9`p~!k#hc@ON0?X16ZtMFBcc;B9Xm1lOm?-lYG;{`ti*2kBJ@Z5go-qc4qHmkX{DW4EmY{P>H=<3j5|_{&VeQA-#{|5Nxu<`ll~ zWzMt_{G1lX&(FZcEic9!d9JQ!H$I*QP!~L;(T>=w%D%Xrdg|E2BlvxeI?mHZcL_NC z@9_rh%clOO>{V60)ghd10$*Fn^KHuRSbv+u@(tlBW%|yu;Ns2TqCqpH-zDH8wBg)9 zrFoj*qNEwPNX#$l%7C8ZrzM0FFnlKmgcJW)o*c8s>3I~Ib~Z*O%w{wC)h^nZmO z_Lj&TUFCN*db)A;`NsX{U(k|N<|zYu5y6$d^Yj|+dx-6B(2^MV^Yx*5`i$S1j7{z^ z1jbuFjQ1HZUay7Z^^)%@ygLWpodfTl5xzMVn1t!aUf|zb?I4%%icN(VpyOLeHe#-J{^Cgg*T_)>n|s9RT|nekk)V(3i=~aR=?RL#LKNmxO+c z{;Saz^$HCU7|VN>@NM8uJZ)D%vn1`AF#U*;v@lIM8m1r7(#J4OxV+xci@dZK4fYR{ zwrD3rACvu`kAnt=>4W5J0q2hKy)U05c14jqk#CplOfh^y_RW8cGqv#9mBgDAI=fTa zxF($q@lt}nzdjnKnODux7tGNY%#mB>{ags|gg-ZUj(3Febs>GlE~(`pcTR)OWL-2SRaRFGQCZYo@nEJuEcMxXXtoox9nDyx2_tqngC8 zk@%sJc!zQaYn(O4D(>CH*WFIMZ(}^H`B#Rsc6c|=M5jW&b0WN`?ElZpcWBc=^qP%4 zW=jq7SA(x_e=E$__aIA>GY2~N(tqLO4{$DelD623#v^-p^>NC}SVA^dp)-Tj|CrPd zZzFa0ng$tlcW@5d@z%tG^KxdOPjY6EI@+<#U@s2w5tQ9PSr0Ha`W3_$oby~{To3cD zLg<#9_2{4YX_9+Jxn*9Ug;?4;0{ORt0HGoc<>i#@P|td zI1AuInnf0JW}x1kOFRp^BNVqgBG+MkEwqp4&O1D|rxTUKGh}Ri&ZK|meaHSK1yZ&Z z9r@6CTru=41cyY{b0)gjz?sYPRrEiyq4|B{gNI{I%9+_XmpYlh7I>{|oomIPcT4!J zoJISs>{V^RTFyy1sW&{Bfe*D_x3T-Fl-Z2rkHb3wO#wFGS8)(FZT)(~qy6dxKtFjt$>;?q8t3 z?ewYd95>Mip=W*PxHaLX2d|!Af!Pi8Ph<>N!|YmkREJ-XdiFw#+&8ui_i2N%Gbc_j za+)je8xI%aE342KzH8itjB}UxF?Vo3U&bCM_l)iEUltGdj3RrCBd)FF$+0=8Ygd`d zop%wjNw|m9DwG~sb8;^)^C|zYlydsAc-=L9sjl`P$ z>=|Siz+dEFBHvp2a(|!J=kBQj_^shSW&I#@IPpthk5_7|m~YveM8;N$yx43}n%5EM zSmCZoUCJFsEH;_QnJw|$)0{x2A@~O#_Lbj?{4^r_5;<4jdj#=ycX2#4Vjy-)JwS`MUD zGIuAS3$hP(hUtUQg$OP!qrNp6p?yT~LDqQR`Pj^SJj0#6?4{2@OXR*zaIOen6Cyvn ziFMj{&2#7dGHYyeJ@Bw()SXr`oIdU8RAL0Qp1w=`N4D0@hxghH{%w9|#f%;;M-d&4 zT{Y?e{DTefX+vlB$Xco*&9Q2Fk8PLQRLy^U#BDD7{mh=7-19T%n?L2wKQ>@$!ro_B z&C=;T1Gk%vdbH1G_E>gkO-A|mruFz)tG3y!!RM?^+SCp6tzn&jFQSyBpI`Vg1v~Df zU+_ferocwvAa~EABO&*My`O)%mG#fsHFymt>)5#atonXwvz2>Iv7MHC&C1~`-R;P5 zCEwC7zT7Hsk@XYV3$JKn!0cwJe+TT!&AoYk`UB1hGw(L!nX|tOx;IsWA>z{njv$t33 zvzx01%rg8p$o;d_Spyzdo-S{e|7*x6{Dagtim_DE->QV!&DB}6jWU%3VvKQ1St++B zi!!8D0+Xr-OAXp3_VtwyY6k6yz`%CAgfW4m#A|DS7qU*rPfUEd%{m?W$^V+zAqmts zUVQOL+7eZ*MefU8ahl=3q#8Xqxo@`c&2mciCt}yB_I%4J#VvGI>b59F%~o`$me99O z%G%Wv@y*h-!IjzT&g>w6C^lN_2e}7ec(xD z+JCrZ9-$WrLenaMtwH1D7rRm6qbj)@RQ8Sbr3f6;rnxQfT|$2?@k19lhbr9v;|KPo zhBT4q;A6vxLm)U`=9eDLIqTKbTJ#I}EJq*R&m!4m9T+Z;glA{*< zt8ullJ}RBl+}3N1t1LXO&TEXTjB!=vPjh=`c$#AvTiL^w^sVsN5(2J**FIr>N{p??Cuc9t|t zT*sRD7;g>s}5a59ehJ@*1@u1wPiXnlkNUqY7C&A;sz`j=hGf%f&9n!Uy^@$!%Pa*$X@OR!$-md=a@w8cW(H!4YY<73x z)2oU1!i#2upLLS%pJ8_Ui%Z;h>a&`^&ssWiWO|R_jnI-iCrs;kd{uS#3(HE}=~bnU z&H*0xwpk%P-zEIkktgN`Y_-)iTMTr@|9^>l_xPx)d+&emnIL;+!X@Dr638S3G&6W3 zavN`%B&fM4mVh_fngrU@Nk&hLR|3)msBJ=Q52N%@(H=qDnvAuNdZ2askYkYcoT$Bc zIkm0rX%o;kA=)aaFpB2){_H&i0nxV4>-oK&Kk~}#z1Mwx*LQu__wrdQ+#&xJ_yWUY zy3lpn_2A23?=g*+;Zx%o+QB;CztZtba_+C696ulW=o25Oev5QUul5IibxG1Q$w;c* z+P{ivZzt{T#os9Ut3^r4P1V!GcSpg8Ya@Ttq_5OAAy3qJdbd6DGW(1xr^8#gB7}}C z>8%1=iT2k`H&!j0dik2L_!<0b2z{E5_G+v;*yEoo35R_2RPnC#v&eY)#_#scmeo%nI%^Ht=P z0q6mL=(&;X%*21^84HR@uXozJv`1;L;=CM1&%LaL-=agtIB`p^v0yrBi#;BnHPye= zG7Ej${{}X~3&|(_;y|V`UwbQi?ZiR5OxpJ+cj%_nb5%CaFST1eKv@1PuKMsq4aj5^Y=7y3z7%Ez&>`%IAg(2$!lr&I_93 zEk0wx_ei5X`amu*5sXd1%(M6DonB+X1AOcHQ$;9Z`Hk4}O=9GFM6dQ9sk~ z8c#biUuy#e(1JVEmKW8QY1wt_-K)aHn$+!K{lGsYqXfp}FZG|4rVoE9r70wBI*ojc zx~^XoiZ5Rjsxt%8jnwI*{vo%o#s_bDWW^$#Z?eA6+HN!h(8HP0!L6HeyLi?(rDdd@ z;DTO5Sx&h|wk^BDFW$z-Q8vsG?`tFnZSffMHxOS^XE?mL6J9L7+=IU&_R6H<*{eQ< zpO@*Gt?{gU6B%QwKfCfxBc$I0Mvg7p%1;Sn_h1}g&M*Os46%sG)4;p6a%PL3t+syIvRbIF< z+}-eAO}EN0ep7h8a7_w`ySA?5jz8kHM&{`>jrr;JE3f2LWad?#o^RAzKYbv#DsTHu zIz#F1uk1fKZFc%pY}dt|!X>}_w-$46nP#wa z8|(j_(F+d4*Yv*FKkYodo5;I^ywf}d$4y%*o*vMeU_H!zd-Q@Kz6Fr2v|dW5gK2Uz z@d9_YFAtceFED-D(sTI^t<3G5QI@dN!ILFZ7Mq)LJ7?fCip{Dszbw(nzAfI@_}1`F z?fY5>QP!ES(B~_CX7)m@H^25sbe9`a?a6Dj0-}Aj<-h+rdI7lGQzD!LRF8$c7D4Wx z$or@Do-#Z0&BT_!j9%~`Jp1ueo4rSIKc~J&S@&5JcjDYzSmDH`9vGK%l>2v)U0h(| zxxvQEz#kcmbMCOvT^08E4B4d-*(I8L7kJxdETUL6TXxx)2xM{JAaaX$o$tPCuusIh zo;lmtxsdaIGdL4#_(LXnz6pQpD6&cD*Ow%hM=wi`luhp7J?G{4?K5V??%y~$_Bri2 z+{-jPnsa1B_6vFV|2HC6yn{_NQc)4o{v)}f5xHU>_c_1q&WpEwL-NZ+TYhOI#-Wto z=wp@*P=@zV-9nF>J$6sV5y=$jB9_!$VytSL4BuHBf3n(~X787cFH!b7_o~PwhYwV- zmuXEt%)GrvIRp3#=xm=(*EZ2fr~R9>_WG6VJ_xpHVAlh=+#?>`Mqb6M{SaO2w^F~K z<@Y!F-T3K6p{BY;^vC-V{t{ieD0C+Dal@xGLfUWYZ2r=o+sJd8zrd61vR|h>c)`RV ze76o=asWPTz%T09TN=h0%bGY#iier}R$lSSH|dAkl}Buv_TR=Ya84SF>_gfiY!@|S zp39An@`3H|tEoeWRF4j+j=rr2$EE2qsGf1~NCS(<8dJ8gE(yLs_1@>^}WivL%tEr%*XUHG=EEj44F$!+ZN zK)+JjMy*jy@Iv)G-agwyaT@PH*<#yB`+4G<;6VPN9YHK zKipc6jHJ1}4qQj;rMiWk<5<@v;m{!dcg2iT$ZmBh*{vlnBP6*-a$L)7P0tn|@S;a+;$1sqs`1m9Z6d$DCn7UCwBVeXH*oH)BUDiPLWDJ-^{`$02K`I( z-M_tWOggr2ymAB{%s7Zw*MGvkQGe*~*f%KWAKo`odH#`o<14>++N`>IjpO@98T-iq zTI%wBNAuhCKBLsVm0VAXlzzMs1nW{zUNnPem~ z_t!1_J~VR|bXJ4BekL?Bn|W_ErDeqU&0$?j#BU1ns7KJ4Gfd1?9RR5Fv| z8&&ThebzoFd9aawSC27DbQY0pDBc&PKYx50|L2#qubleMmcgR38+GPCFuL-nbV8qK z>vzwz{UR09;lu@-LB)1(CRiXnxyE6KZPO+;`P+`Zy?-yUdL#7g+p(2MC%S%AYprym z;|pw`O8ec8L*@(8{qDz?Rj5&liJu+o{@~qm>Fux_9R*k`V#y7j*Uy{Z^NEox7n9ZdfUf8zJPYu<4>&b zvbUCzUN$c0IS>1$Klmc=!l`#VCb(YM$g^x*N^|>7GtuKuiQmt=g4DYmMXndt@Vx!7 zlV*q8^}=oX&U2^x+SSUZch=O?mZBeM{vzM7vD@FQv#?!0o?+kXFd*Fn-<3W+2mgz- zefSRBWt=nz;78bg#V3#PQ;M&8)5+5?V`j{vj2`eqRYrqrMl7uQ)6dy6V)^=xFR@+6 zeq!h;H=KIb7#-ocCsp2#m$<7%-&4>1%!S76PRiK+SNxG59LK#O_%r6g_ld82a+yv*`RT{Dit>^H)9n`?32|4t);xlw!x*&;H3CRLOqQcwl3~k9_Efh89YnGkDJf z%RPlNY@LpMmZCg6exSv8>rvvm_veL^E0BfCi^s+aq4AMEtMYkhdd1k1q@D!0-fN)8 z_i5kJDgKh>hjNGuu75&&A;P|^_)GKj*4n)zc{cpK#>|g1;63lCs#_hKII{Zm9*+aa<2Okbk zNzZLGHMf1|I&<4;6wD7qS1+_~oVK))eiSpGI$!vi!yB>jcW(U6!eX%Zh#QYLBCj6c zOd_5eY%G>MZ{NEt{*az0$*s)!o8@oj*#7Q?tEMkq`HB-OE5G;8%Rhd8Ml$^V@Xi5f zO*Fa2HHSL|C9C8Gg^l`4wI5m6c-8o#XgIeybVScqbMq1GB}rqw@u-2{J@(8P@9cGK z(*9@Zo8+7KS+CM{tIy)C;x&5rG~fI9-ggeR&vTqum*uo!?PO!_&h!|$vtry-ZTmXe z`QZAKVwlW`BLfABqaxxJA!RYl$M897k1C{Y@41p+(|@p};8 zRFB8C)H}*t8U>Hp8s*Pk4Hhx7?c5_Z8HsE0C+h=Sx0p5O%5!iVgv0O|p8Fm_p7Q0D z46Ga-IC`0p_#E}_r+*sfHn5EbYK(;XG;k&Vr-T#rr*q#sF&$@|i>yx>+f#J80{H?y z7p&*M(pfHRzUD(~opCMEoEY#ov#^{a0Bykz>PGeod>j1&`UsWPWBcJz7h|TeQF&@- z4Q1;4fD1lH4E)e*4nGm!u=y}+vf}ktJ08^H?x)CPkMyf=2E<=kKh%${i+Wh6YvuF7 z9&h|%c&GS^V`YF;$$yaUizcsKOL*;(~fyh;2KbxzI7 z>5yzt{59jr%2ZrTBQmM#6E7EEkRH_}KL4}Sdz5o;ftwhcSB7`OAA+UBV7_u5vuOi* zI-h#d^pgwi$ftFnVo9i&vxe+had@C?S_k0!)uv;o`#OBM13gpqx~X}WV{h2BC)mL` zvm*fB|ED>tAUiK8ppWcdS+8o2nAMRB1w&w_^f-Ffk1P;OPGCsp2d`HIo@_n5az^IW^WHDI`~ zf5#2dwBnan$yr|cE8Rv&X)SD7k;B7w+JAN?XjFJK-aK>`@K3Ax z4x4}4v;-|)Gh&W&nB&$ihi{2*llF)$$3Qy~VxB$x?>{6TU&TgP@xT?%T2Wu134B)J zzom;3HZOvAYkj>2Km3y$A7;^@WbH}NA?r(dq}%ei+j0k)6L`y9WR#M7zl)Cs&ypuz zfIj+Xmuswd?!RnNq6odb>d;tt0<^C&Y~O#TGr079h3I88H!JTjm!{Tvd~Ke&rIhj3 z_kPZ-`YxU)-m3a;=DXTb$sTeu>9h`X=2&}&YpKo*O5ftPRw*W7^?7Z%w%o>=#P`(J zfvzO~AZ^sX9bD^QDqUR7+Q@3?C^q}L;Oc75SAH{RXeE0$GE>b|_f+3n@fG?rb)9Re zXhC(rN9;Nlo}!NGR2{O#sh*~_{_{Smo)Goqx$}J2QO_Xt4A8#7I@4~O*9Q;UwzWz)-J&ni z+`co)lcG7%@T(PzY+bfB)uCPOkxBMb16dWBdTz^6*6`C~W0Ip<4w}h&SN@~*e`&oa zf-l#=&5II||3v=h+>dT++Y}_KKN|{D(VX^swy&{$qRzc{{z|X-yVl!`h#-p7V!uX7~xdUiDX-$%2Q89j2_Q zhaJ2iwZVh`OAFuRZv*B7{A5C0{%MmBVvBcO>i9q0S!(m%tEVF4eTDl3M#OrKtas(K z^>(c1?eN4?#d=O*eg?)(J^FFjXu>fY9t|cH`;YF;?40qXkm99mzuDLGtv07^AB^z?%bREDQ$A+uV)48-E(5 z?PSi|S(_cMyc%@LQSTu0z5f1O>1wZA-=2FlXRJYZP0N=J?s>qr+~Nrgy1^LZJc-V^ zq;D^Gye>t*^6;px;X~|G7a)@om(|JqX}+xw{@B)OM&>{C<;uhk-u2N=$%+wdnVny@ z65U^pWnthm0+q%qjhi&x9X51g*O~;RN^|HqLKrx4DJK^>Q1z>f zt(2j@4gToEtvQNW6O9y>1!O~)Z{8qn89)xu+6e5Kn)1(^YWwE}@Xsq=XXRbMxE{ua zaKC$MjrgO=y@qn-m;Pt=k{0*GXvLx7WxH>(68q83Z8VHsl3z716|Bu$@YPg%wi9Cq zJ;Zcp_s3zK4UE3b)=9lH&hh;hy|h?qA8aQMKz4!_BV!f*V75(Fd*JnNLEoocivP~J z3$)MNf-l%D*g}hFM|vGZbeB5z9Q3SF^kmEO_!hwzOV0*np$|G%UNz-Gv$jkmJ(uQ0 z@yqI0x;))+pU$s+=pE+omh5YrwdT6WZ?_{mr&+#%`kjs!cqbJvfR6Tg=*PzPL65xI zXyv}{hFsg<7A(1v=#DdEnb6Ic^YEud7vQnb^WppF%QTXia~--h&-i6IdK&y2zr%AM>kJ?ECkK6;1;~p( zxbGXhM|Ph((w|W=59v6ETkspcmHr%tuGI$lD{mQler(r|bD3`^20~@M>vAoT9D(jE zI7W3NlRE8F%m(`u>+#irTLWNLejAtq&c57*l~zM(!CIqgZ@#jRU5chLHY*&LgXm?51e*6^Y9DW+Dhzc zdfeoLYLC~mxv^Q~vD?Z1S%yvIcsnP?{|6m}!G3Z4-K6+$cqbig4}I^yeVTp#lq|W6 zI_gt>I-5R)(XFOsqjb9OlScBl`ox;B}nP_}F z=hTsL8;7xJq~kW!7R|TlZ!`4?PeZhG2>vVD5WNiF>^hR>i*{WVDS8+O-#pI%zr~FG z5A_vHW{k%%ht0&IVEYq4nneFw>6?CM^Lqs`^1_fQw=Ra?LQ}jSd4^y6D`U&ws_$v_ zjhNVUU1ix$UGH(mOV@Rn-`X?nx_*;;%DU?Rj=CPEu6knM(slLAUxYUQaYS9eA6eJi zr>^UgPpV5gcE<58>M}A@b+HG4NoCjdlM!|88Ch3m-YNSP{G_^4bGC}Q&~F~=S0QHw z^{Z<{U5Ya~HiiYKu4^214g7mJR0*B#`%yULg8tFlY%cuS*x2?W^b`?!l99MK9#ETwvlySd+Iv> zNS)dPMy``X$i(UOp_qX*-ip?OP5&!X^q-O&KG3S4PsC2YnJVfbsEFFPwMmi7aT6Kn3I%vVfr>5(r>lYFmw=ll{`i0*=bp67i zrTE8OlD)L}DliDAdwnX$GBbTG=CqqU0V7K?_aHo3F+=+pzi+{3`%?Q!KV$he&-FaN z%~*=ZU>CFZ7nQSqtj)KB9i%xvHV%eU+OJ>o<0tt$*!`z3@^$zv<>19)^X<3k6PW$Z zo}w|NEkB>a_vxv5W&CzbOO4;kbUJ7L_mZwJFO^R7&pF?&=jL=eXDua2w>>wNj`1tZ z#n)*iepk1LLjyO5LqluBq1RjROJS_4j*X$uhfWTh#7y7)75FeShIx!(n=8-9{`uH) z_~_vpf62t@M%J#I@?ywP6A$=%Lcbxtsd74Yopt!>ZG9lOj`PmokN7{`xJkHde)p7U zB|Z+|uz4$G3*}tjhR*1rE2Rq*@0}Evu1eQ#a z!$n5Oo)5~>I;cc`lU!iycj?1Y&7Wd|)9V-6;n@6*NLQu)rFkLq30{FE8iJ-QeAtW8-&fl0^PvaAHlAv?zK>k9lTDv* za6(TAfBNjY6#eMDEc(G;VXkN<0#6;B^2uo`*<%OuPMzieXLgm-i9PJ)l*}ob67Ags zpAiqJbWir>Lhp6%yy!!3rR-SXW=SsCM4IC~;MBHjogHMec4*YecZYZ#b|S_1iGIZY z%fZa9SV9aN^e$TZPiS5IS1~@w-H#!6J27s3=Yp@5cj_27llNJ9r^eT6$ct6a$%_qQ zZ?G{nPr}#IT&O;$t^VK&&Oqtk`ftaqkvA=~r(@PCzsZ>*6|dHYP6NHq32|u?DOWUh zax7a9V|y%?jWb?4ZtdilwN`K(=k%RAZY@17MtCliGi=sb#LNFce*yRN6vQmW@+nQMFy`rWcMXEq;spy-XB&9_W-IJ`_Z0h3V;P&H z4F$2gR*`Q{2<=IfXH6J@03dFXF@qN-j=gmCi(-b90 zirzE8{X)04VeF&zH#xesMs#5<@0p4I(awIYwK+b6b0oUlTTd@b-iqy0ac;;Jb9#_J zRzt7S(M29SjaY1>1pVDbEq}nyiH)&@o{N;% z7~Oi&c300uYRhWY!>x-enj7a=G+VM+y|wNo%k!&k7Cvqk_PEz54~(n1W|8)#Nx`ca zZ**eM%WiM;k~^lwHfA#q=;9Q+AfEC>fw`sSbTg?nw-uf;;PRK~jJh54$TIb;y{{jv=q~UgOZnZ#?>HEa)qlaK_4IHvetfy|A?I%UCGx}U0Nb>Y zw#J5^32 z^cfr#ZuX9$?W4j8Zx%jL=a$f`FE-E)#l6vooskVztkkfE!tCEC z_vfK`PJcvG(^E9n;4Mp*k?-WR74wg$%~o3a-QX%qwow16(z_QNPk)-yv(B}yPma6% zME@_{DNtd&a6E3MG0WyDmEBacY7 zb?hzAOyoSk8DI5|LTCRJy2b+9^b~iK_w)ZN-tvU_^hAo+p8S6;UR!1M{vGk! z^`zTCpYuiMr?u9i%d&A5S7M)&j4M5-+MTxfsm-s#`_|EJja8RRIxYiTdMA#$ll35b z?Wy|uCGtd4^(has8|Q#Y@gE!*-s*RAmSNtEtgX3yoL4(3H$XWbH|`$xXw7wd?uJAs z_oG__{lwrwOE!U60rk)ZLt+UTIt%Fh}_|tu40gh<-C~ zNP1w^wdb_lj(YMq`)f|{OU$qOxg2|`=%Q}#tf5D+{}#Iy4-W=FeoDqbFWQ#xN<4)O z@JarPN3ZF|M}GvCjqD=!x^nPiTMCR-w@^+4be@hO*S>3-6Me(dnZrxc`s1V5?CpGN zk~xuBmANZuV;^+Y&v&iEtGHig2;FalHRxgel|q9%SbI9(ORj;h2Nf%$XPqe;_;!H# zK)#vR#JbU0;1Tb$xwoe z_LBkb+Gty6-Di28+ZLfuC-%qd+dK)m1>H*IiEy$_e4DZSrpv0Chz?tN>8BnXx9Y)? zExC4|kX@uRP%Pv#zd#4XS*wxs0mi+NvbRf5jSTS)_T8(%E09cfs_~M{Egj29Tn5Qy zk@w1o?{wLi44vqb8{wyo*yM%jsTc>_7mas1r@dOFwoJr-Z&HWi6xv<*xttYFxc8JD z(Rn&>XE>>Ito&S5u6&kv?aPSCA9o1aQQn3L%njwWZE)nSkr*6y+tG2Vt!ev*u#YCq zWG~rh#IB-UtdHhH>`Q*;Bx7pD8qIAdxXr?mzS;FauKfALdu501hn9A(u;r@F$K|St z@viS6?+}M?%ZJD0s)_N3c)uO}zRG9JKVq*)%fx%xo6<6|McX6KU=fH&289BkFsZWDmDuL%pUCrlb}`jy47mga-=`Um9S=F%M52U zcXH2?#aPRKQ#R=J>>~kW%3!AH8$v!;nyOp#m+G5`d_K#S(E9J9eICjv)?UQElQDIP zJ!V1naxduuw8cYOPsXL8cEg&lIB4xlS{Euy=g|oDh-W!8a0!6hlja`0U7xKa_QkSjOKSAb_IqmFq)5)8qIC+k_hcn z8!dA>_tZ>}sb1X;Y?wV4^)dzn6{Nk)Xzts%;lj2v@2af|w%4|u{r#Js>FvB}(>~#4 zYHyov+a7c;&A?JKFgV)?T(kpu9iK{rvq(RCi^F3l#24_sZ~uvTO7yP6h?%ypxc2u6 z@w4=<=)`ozddFCu?Bkx+52WwxY6I7Wc%{wneZfVXR0celSSjQe*`o)LKYz>~GQj-Z zzc)X2q)u2}#8GYJE*7_ul)i`cmYDq6@k{@>!dx}L-d;|5#Ptb-viW^qI5CBI`z`Dp zN%~bl`hRa~Ubx|R@2*DY5M0eY?S04@LG+!@zL&$kH#v9(&%$W|zo@x|JGhl!^d`Hv zFmRNA^_Mf2DzC~R{@{fC7mdiTylZ{N68R}z!1-(d{Rc6BiCxG5GlXwVnWACGHghTc zzl3pEMBG>f@nhv(N59BDCD5v9+e6<x%!3aC&cVnrpq^p^7LQ( ziT+!oHu%Pm_-%PMV4`%sc}|g5w4ctWv;%IdhWJ0B>mK&vIc>SN&*PN_ zzF_{PgQc{Kc&4NHCCDbd;gxq+|JbITT;@L~D9kHlU3i3^CkMNE-tfxd)oVy2I&$7m z4T1r?RsQJC^OPWXom)kB-=dxO(#~Db)Xn^@#YfO?=at-_6 z4m^MmI`h?F5U*u!|8?JJ?sg*nW9u2QTzJOXduGHu#O!q8Z}1N5dkQ)sm96`w9KPe| zU7pKAr_9*=Xa;sq`GbKzn2QePK>ftd;kD#E_ow{>-A-8s4`Ohll>= zv194`PLJKfd+d29rVkgz{#oS{bACcO%Zg$V-uDpi&imu#RL+R4Q2Ht0$Epw4IG9gi z#zkxTX3Ll_8@qg4^*ybdc4T#b{BHW#h8&`P63ah#J#t6CVeBl1N9-RfzsNjWm(ha1 zWv}FJ-dBus-s^l_z?sx@Mr*A}9P7i_fm@{~%9U(1fqgC~egr>P=oo)Lzl|4J>CWr$ z^mFdoV;&iVPQ;Ve?$3w?)^&M3XW?6e%<1{O(ac_A`}cwYwoL8brgp*e?fDt)%+Jcy z{M?Q_lC$0lTBwV?_fiFltqKj}U|k1DSu zm1iq<-Spf^2D~V>E`L21n*e2~-H$-uL1M#%>oS}B^BS=YiH1AD1E@5o`R+j8{md9+ zE_aYcD>#>afjZk5x8BiCUruiCgjC%>lD`A(eTFgj5;s%BS+5#j!aCwLg6N9wqKq5+ zGh*LpjIJJXkBR%uu~CyVQJXoY!wQXhL2XmtOmttGpCZn=>f8I{o%QoPGTaG$=Wec7 zk=YNWzW+$JO7WNm~#GoaP$K0Ulu;k$hUL0 zr|3iXXY~?qCR%3>OLmf0zn|cLdR*6Ln_C{?d4Tq|GdIPPj1&e~IQidv(;B!2KZtZ& z;qk}rAkw$nW$R^}RBt`}P-SdF4>21ZMAY=6bFiXa?}Mpnf~iBM z$B%wLJa@Pp+(-A;+z-~)z~idnbye`ZN_gL8@We~I;Dz>n+k>2~Sa)H9)q@G9J%*F;oNAy^9)y1*9)?Xas{Jq%%6HIz}{Nf*b zGdBfBwgD!ot#OR!6PMG{|fzeDQjjVc33g@gb3fn za;LDv&>J*LcS4L)DSq+mp}!OcSWMVrI#c;r8^RrnaPCyO=g=Nuf+;>*xG$39Y>cqK zfklR%7}*f)Nc0(LEV6#iK#gDoL{iv8=tHxFN7h7}6n9nq#vLy;H8wpdpT>^kZL={z z)V654Zv5Ux;**`GHfB>UGJYfDBaAYYjg1%_3@h3=HZ$=YdD9qWve#;z39snm@XAiU z2M{{kEDRsVj+MdPNMPH$tf3v0yAM5~M;u-$jE*!uht3o#x8SwPZv8JDtn7BtZrzP6tdQ>QA8u7U%rWKNuJLE` z&h%Txx%nC+VSD8LTr?gIMczGU!4IKx>u+Gld5J>~fJY`B`Wwtu3SaIRew@C0^hX@C z#v9%4|1}J`ufkLQUd%E0;pUSu< znSQVv`6@F-YdYYwKgufU{8-e6@yiOUG}btA(G}&$;+@cR2L()&8YmhAep$K6)4Z zd(9X>zs?*T6%RN)gK=AZm-j`=cSj2zzj6)n;cN%S#IuQaQ$M5=4vr5eX7l{djLF&9wVz!# zeu8*oFcTW4omJoxXiQjN!OAxs3`Nc%C1>mVr;HE|i&OMl{)~ZX%WN8u4h&wqteUk} z{dmy{=V#HJXIE>Y`ijevRgHrS6$>N0M%nc}yA;FVS|zNcz^?Y?(uL~X0dQ}*vp6e= zjz{xrzZ*TZWQg~QpA3Ti5h(Q5D7ID4#H36(bLO(p?1E(>Z-TzA%gkeMm|KM$A0Tb! z62+AHqD|ig>oLK+Ol|jhmf%-RU4dfqq}C<)7099)OSG>ctC!exvI{zT>o}HVAWUo@ zb6skhtAu$oz#J)mpv+j}xrFgUpC)V^orQzbGL}|P#qWF;cxcRb4dWAit0>mgEKC;% z1I-Jq3!f!G?3wz~M1K4HK>m^6UT2K>&i)1Vq0&5lSFY-lZ)-7mt!WPKnEksTBP6}3 z-L5gymI^ze3j83+aNepD>l00!^v>5LtReEK-=YQS7=)eG#Fz$%_415o?ff_M1Rj~k zIF3j5H02|QZ4L;t4n0%xZyTOOZjh~R?hNzD{DAOx_S8M8dGpZMs-v2pXVKevYDA~@ zcWjvYuCsUm99w-CuU9)%maXqVugzIEnf4#le%T4Go$%&$ccJ_SJJD@-o{L`-<8}bN zo5-bLV$EeAagQ%)`7krk_~o&ImJi1Tn!cPBh&*8=TK1WtmU369<)AA>pm(CB+;^lB z9_ImDMf6?CJlEx99K%+rgMZXrn-S7JL0oEy_U0Yn;<0Aua$lm2k===}nBopw$=eAg zAGj4MJu9*X_1x+DROq|xU6F(3Aq!ummYa-(_O8gjGVrU6c^gmrROqXVmxR7nyCl?B zy(H9dw;B72cRX^cVtyyY2k{9*ZVA1_-OYDiza;ci@T(%_BCqt3$MgP#ysE#LIcm$TZf<-6IfOnj<~5>aYh9;TEJUR$Cf-5uH-FdW(Rj+CT^+tWNgU^Ct*t}zJHi_M<4GU3`tMNWH2P} z&kl#)$DX$m49P+0rp3s!F=)V7Ov)x^;OD#_{Z$)t#JON|JG69{a2(Ok+kS@3{}B4; z79(?rJt#Ot%+_+#=WS=MiD6j~_`sd@47ii+%=aricky04q@H;f_T;l*IX(;aWHh(R zw#lD`+#9`nQSxV(R)ogvZLPibtTFd_-I*QL>lcTHeA7#68hrQFVI#2jYp@}s>y22= z`i^b6V6{c@ITBB__gB7MOM6>PBbjsaCCO*OuWVjc8MwU?euv#4!*kgh(Owf6YSrc> zU(+JuBf+k0xg7d_6D&yde;&>RYODNO(lTv}Z1=RW(rwg2m-F^xvl>Dd)<*vtv5T=@ zeHQ)dUF;4uB8!>u!!DPxV8!%sVsEWGHVjQEy?B#+<{e%CWaL%J#lHACU^;P!XmaHT z!@JUTif;@s2Wc!!#q>rfZ*bg{k^|`U15?c!E5!?X!MxO5$!?J`^%A>}z2GAbQf4u7 zmdcjiF+v|B>}QId*k{{wbK=%0?pUP_EuS(H`u+xORav}WqC5GD&mtZjJ{^e7#1GCB zuWasovK`z?FR{mMU{{7s|I2OA6LCy)dtY&fK8wEXRDIyS?6?O^PwcHzls*z9{mbsq z64L7#eloW=J0qla_k!u@W2~xp_Y8QLZSaEL84eFme?OK7EXV=+Cs}eE>BWPQZ)_~c z0A~d4Jqt(HL3;TI{S#we!h5@pvok^iv#6saBXkz;R2~@b_CA>2D^$+usd5I!llFj- z_$qBwJFJ;JQ*M6h`^ngw@Fe0(jl|Dp$fjhJ2%}MFtL&5O8nIvc_(p8Ek3K9FhVKd3 zoNmrVK6o2v*U!)fYn(@&5&@Nt^k`$R_Q*Q8xfdrR*?KEYSDEFXO% zxS?;R`k}pHBo^fj>HdL78p%F4^e3Jz_oqT_(~S8VpUlyp3gJV8PR1YizCSJ&B{p@; zf6ear!KljSYVhPr(Ipw{FMkhOip}QSJjA$;rLDqZdVp{L+-M|j6lP_=8EX8zk+|Fp zH$O_=D@TQ!e_&?Tyn%f83-p%NWAJCWQ1n&O}-o3S@WgH?d$Pz?t~BY?sJDO z!7?*Y~wYdv@t_y@#oik2j&>&#BO9sE(!iC#~} z=KKclp8>%?MW#d@Rjt*>X%kAYk zy$;e?mhj?<+DCi;;0{Ta6z#Pkb6fva++i`!l4Bbg`^YLIAsuq>zKW1|MzAbQEWZUy z<=r1nc;^#8`5f=%M-X6+s^)p}&O~OuAuu)&nKdTxS-urp)cM1VP?+D(fa54!G|A7s z+cHA(t<(5$#>$qD*b<&A8S7`jX4Jc&XqhvR1vXtJ!cC2o|Q_gbW^Xg0#itv#&pLCVNf9wVSQL=vT4^rQm+u78`cq3=ZR%@=3 zJ=@|8Xq`HpEfY%)DTZGJZJBg3`j4D=A9#ENqu~w6JuA?o)}6GkZ-<@~pPAl&9^zh+ zL1Y)~lXVd*-BUdD$bWo1c9Z&| zeD@8wyd4(u#31s7=d+&sh8AeWYHHe;`*EOnNqR^IA$K zwJ}-4i@Vl=dSRLti>82lhDY zcVt?fKOcFyB4mH(z6I&PG=_IlkJ716Dz}(^A*b4XyzuWB&qs(AOpoVHCzUlx`N4Yj zLJwZ}o$AqjS+lQL^kkD61gF%Q)1YZ2s+m{GsA@+(`MQ|LIP<9d(i@2mPSzW#+%D#^ z8ozRUZnK|-U!PP*ja~M-xL5x#OO-#D^7XqET|fb`Ig(!r=!fvN6(cA;b*Wh#RSb;E z6FFcR}BjXRD zUrYCUkzV@y}6a&weotg8Fl`p!p4vzzCp6^^8qs$D@G1R?(Z<5GnKtZ z`IkfY?BCMGpK9-pr}pkgmTT{p?!wu-J9$p`F}-(d4ivW%Wt<+wZgMi;6EAo8xbQzG z$Is=?oira8W{%_%i}~oqe%i42kuymo4Bb=C ztMpm2!fW(N=aFaVKmHEvonH!7a;I2lYJHl_`TnKoHTb?G^=>~lhwtz_SX3U6+$24U z{P*-*d`4}3jq^$^z2s3@ zHf|^K%K53X?PqXA=Z}2GUMk(!vGj$;lCwuXml;cfspkX4rP*bmw-jGJmIr;FUge^^28_lp}V~{4(U^Sb60;7 z7HK~=ORbA{zvjf-?6?`+MC>Zo7}+vPU*67sU60*XwiwxM-|!NDlYaNoDBB022wykZ zkjg#yhO^%eyS@0{emoXw89bqI;p|u+`E}>#JBs)F1T0cvkPhZ~o;VqURJfwTA=Mr$ zTl+@JO8asMk2E@C<}p0dmV8elSM8%7yFYtJ#b(kM;%nv&?7bx9Z$!6tI2B)qO2qSY@!Uhqjp|wr7N_LRRlE}(pWex5 z=Sr2I!rQxjg@b1r;hm9s*N}T|>{6av!Q4|GVTKaBvBgL~gBf~-zNc_W(>Rv+>f8Pl zf3PSYj6M9X9y=8#C+X~aJHPT%aCgAilPoFU@b@K8Zk&yukb}u-@9D($m|${lEL>l^ z4?h+Q{|4sV#^ih*TRuKF$1pjUyQifvIWMp=Iq{#0S?<ziak*UuZEsL%N@` zYwz;a^!54j*4eR*v)0#YUrFQMvF=Zad)H0dg?rbUW$ct+j$#xv)@#5*>vzis>iC>* z(s-t6pR`*XdUxpQ-$%uM$20qk^ISA4_G_N|(6OjLU_=Jx-y_V+HtwWYAfEWU^5)M> zn5w(t-c-BW(0K@(&+85+_Rn5lt9}F+XA3))>9KqoZ}}K)rp@5r#E;@9w+$WK8V~-( z_mnrcvA=`2hAD1x$F7B!Oc_LM2P*k4&1z`;wI90IiuO@7g|smdoMhWYh`g(D`dVhMZ+W)c9AE7>-y>ap?aAr*NAN9u zSDfN|RaUH>Z^o&rz_)_SPmym)R%|Wb!ZoM()|DN*g>UuMr}*}0cI-yJwN{f8yKr%8!1_G1bqU`1SgJ*+;)m{jBg4r^c_=_e($e-JCu#b|v3>E;+@w!ilj; zzV$6S#kW}#V`Y3ZPW3G?F?K%R3MxLDFPFQa#7EZYd$}Rp%x3uq!<(Ah#Q!+6!mF0~ z;Z^vmA>ST?R@@u=`pwKhbXmi8!Qjt@>_{w`uoDQ{}+D1Vap2$ipLRc3LK=RR|f z6O*L;#6>6nLf-ldPVBexo{;B-<9Xz>-A|sL(203YNdLGI`;*q!!cR!^mJyrEc(g8X z(x{#NhYWiR)YgTxb%6C~T{+6$!^JlW=F`VRvX@RT5eBNq^q=Q9{Wk^BOA3cK0`9cz zjvn};e7}QW@p>kWS}L0`b7lJ$NOty{Mq=QyGWm+zK3AQxQSg3RHd_TKrWL z^Gj@VuC2?Ze$}mc6yK;n=M%=M--!K^G~u(4^S^)Lx#z6ZGcv$P9=e9P={plV9`;*g z;LXCh6NYkfa|%D1=l$gQ2|RZs{?4?$#+HKF#=InBa4+ZWK6H|4yy72zGlf(91uLLA z5gu_{+c#?mz~-~)uf}>mO@}43DpfbDWKzTBLl)5Jk)z{C$vT=@i|6!hZ3i@~+o; z_A(dov%L37*Rv_`$bEzE%wRP-M4g4|?sOlq^{8dWTMuFLkp5C@@Tn1N(57E(@JjD* z3>*nC?xpL;+V>RL`&eoX|0iSLS4dwNU)p4270R}eUdt*cy@s8&TYjVf-)5~%?N8d9 z_OsTHYHiYIe}Vf~+N%!G?)Edh_gPEA$xxZj;db1S?E|ebn2LXTdcW>x+$xY6W)zuO z7W?(0#`U!;*}E0*W+1y2;peMZht^rfPP^^)I4f>vD)ZrwzctF-lEwjDFRWa?Lo1JI z-52g06U)hx44D(}Bu2CqTgAw}X>GQ#Hm$4h%f&tuMurm)lzvF_DcMIhiXeOtS#$}$ zxjuYz7jizICq2*@pIwQbsQ~;Io8D6VHcfMyEBOm*?AwaG_nC#4284-S zoWjSJUtst&W9~h)JFR~Rv^dzZHQ2?VDf;L0RXW(Rb{$6<1L5lAVBc1I)uvZjZ?D1I zga`bm{fe2I$~ia3z6(sUW?vEO0N-ov|HF3?m!+}LyNBWP<1P!>{hsQal}F0@z4)GA zn_5e+N!Fx{9O8DSnp1uEyNMUkcrxy?4Qb72?a=0|L1^DzLxsiB3i*H2=C;A%og?W> z^5DkR>ur1moe@M=%b}}s)q~&qAoQ zWJ;Yan#aNONN;ov?;NBoXeRy!e_F%Ri`;-Li48M8ZjSf9zf5mUd>`Mnzp|DeUAOKY z*#o`=w)uG1n2vF4W*>>N2LH-hZ866V)v&g;Cclo~66dm^=a6wf4y(4aV)>K*C{`_c z#>Z@|+P7vihs-PE3oW7R8-Z2pc0JnXc0W3JhLP;O$ib-XVSiDq;!E!fr(Ll?dBNxT z-ASzK--}!Oh0Q18)_(9W$8l>P_@58Aw%&dsZf$xlW%t%xXdc8Xgj>7u&g1g^WX%QG zwA=4@aBG|2{@b{<5$*>{d0_AbUl zXQl-7mG)2nfU}C?fqz5)`dB9o&;|bA$LKU&{zG>;bSfHsobsi=YT>Nnf>!i-{UivJQX%BYjJa+?99I#8+SA1{=dS;4P*NhHf|v{Hpf2T4{rUP6Dym>#GMAM zMm`4j_Ab)?E!^Ah9KzO+%6~HM?NGX|Pr$u>H-&`&!1?BzT^GdaUFfAa14}2Xcz5~u z&%Nivt;h*))@LJA-cW?xIj!U>^a9J6i!Ce8iq+Rjmo<$%6XRF%9=i?k2WQ15T{rNe z=eo{X;v!4xH@J?K8+rM(uEsS+;Qp9ABjAGP}(s_7QCg!tFn>=EfPl>dFJOFsU^`S*VVKI)y=VKlnB zw}4CVfH(YBp<-FC4imG%`L6%cL`$tJ(J~o~n0zqP7xVj4up4e;O*C-Vfy*;g4Q*NT z(*6SzgI4n`M~qOod-M)ti^|*%rhse)YAbuE%^TBg9vEF=<2tALt=d{Y*}=$ZnSs8N zxWp9~mrE86?z;QKt!-Cqt_?8%4NZ~V1%>6^``l;b&nzy?FDeGzF{dcM4czekylWWi z>aNdrb=T0gO778iSCx0S78K>*$T`^!cDUN3F>+s2(_KV7hJI(1)pU>Iw|o4Ie7*Zz z@l3nC&rf!BM^ojv>~dz<<+vzEa;EaSE~)9x7=Ld5jPWkNT~<|1w~JVh6}c|EjVmcD zLfb}`Q(tiEa@^zR2$J-nl zU4BG#Gja|Za-BIy?RAd{^NPK0bNQBYV-*vQ;|IMvhQ0Jb%f|UK!1YSUKm4O*7I80) zWCQJ={U?=K4=wHhe_C?R}>y6ws831!+HgaYQ z=Ywc%Ilj{VlB#dE=SuGzIUoAvzjP>(i@|yz#w{f;ZszWyEcH?P=>6lsGG?qLFTRn< zdd=nD81{baLgeT-?zmg@9ARB7A#PK1qP@Nc`C;Tka69xX z%%QhglU>v+Ow%LNIoq9Io)B&Hd&|4~paYj#lwW0>o=@MF6hL>%w~6ojnwoYWD6wMF zo$Go3Sk_SLo#+vJ^)eqcw|_=?_p43O-Sq`C^LvPO?}Kj2O`|)=xL2_5E-jvs|0?UO zm$EM@F3Mk-Gb{f!p7*ELTs1U#32UXNV3xgBMy1vqu@9RsVa;7)&C1vBOIdSY;P)uj zoZfw}_;kC>Kd085%2{NWGt(|7Bemv~cM)suG}hdroD9ER7HjTv#9F<|np4}pOIe+% zHJ2`DJN*$4IJulrthq%KGyE&azmN6iWekRznw~tcxICfpYhb+%vDTRXWi_;E1#7HA zu~Mw5a(IQ-Y9H$=%)0{CVjt_Um^_1ESPpUymaL#QVo2T`yrQPNW=T!=4Oi84-}~k8 zJ)ZFw=8qx1Y8-uA%e)Mh+w>ZrZBFoIVykXJ&(N{{9+dWAmaUtZH#EUW&gQ@PxUsfr z_v`S>8#&|3PBgYRC;uDQowfRP^nk?147uUuhtL-tV(rK$vz9!4SC@D9FE8&NI>$)3 zii7zD%scw2Wd+5vZGPtBzusM8zYFH~!7C1&6V`nSaoJrKLt7=3Gw|$%9etOUcblJu z=Ag;7uH24qwuJ8~fEQl_pI1Lrk1=zMe+GHVi_dmq$QV!6r#q&_hmC?_yDnp4alYu- z%Nib{Pp^9?bzH$3);MP@EXuE6SdhPwHUE9qc6H;#yt{T;dFJod?%tPO-re-u1FP@i zUG%rFuNJ>sVV#+8&rhb?zmoi|hTH!Dm>S@X_>cbA{kc7_T(DcVh&t{MdM*hDPc>sg zUxw(X+Ha1(INxMnF$&JfFZdbrc`0MS8I`kM*3I~g9he=qebgU%2mKGf4=~=`6YLu- zcO`Osd`EXB{ZIhB+iDa26z>nAd#VBx@8#-1$IUKZ%}d;A=$s8MhX>Ta3##D>Rq%#N z;(;&g8Z5dLo^c7hW6_O&y`bVocu7or+WJWjS195Oc~#qTPiV|i`KDSS1L!yWWZ-wL z`j5|d8Dq@*TC1{{{hhT)-oXV%N%5ZI=Pb*z-)a1<-r|nICmy)lXl&eVgbVYPPS}^F zV4f*kexY08s zKiQGSW^rPG4I`ZV756czF8x+rb@-V(W8$P4`Ry>i*(1LxPbao1=_b_Hk?riqPS&1k zr}(1U>7kuQV_>(+NcS;a?@v-ZTsWWlmfi~|s9hC~Z~i%T#+H^`H!-13jB0w1OP7b9 z=CMlTH=~vP0qoMMFXQL-9riWDNP2Sc=^CGk%c(HI3No2*7xOM`83*Tn^&iR;x4lxH z0LwVZU*h(B_F&HV!lmiGm3?m#`qr<4vsvzoS=<;}$zJ4HRu=Mb2Ye%G3;(Cg_GO5W z#)EDw&^$TYa~1LKCE#g4EsTgsach~Q!!f{aZsUCuY3ny+f)NHjlJanOO%-{p_4wVI z+1Zur%|rwH?}qAd;ww*tlRG(M7l3u3GOfGN*$}s@HtDz8qjogVkA3H%uP-uUr_-j_ zuu)3qCmmu~SoS{jcF^nq^rXGLpLE*WuNsYx7VHDj7T@QHez^-Jfo>?#m|KCZ(i7dz z`K4hK_pvh%CiSgAuh93j5i75pWB1`jA9#kFO#JfXtBfBz`A$xwJw1sXzMgd3y|nqZ z@`T!?^$OiAYoz_9W)9&b{ANB%!MAS3XX&`jp z66R)uCuUuQANh^bvLkC;3CjCO8@p)ZQ@U@4I(unjuZtMs5&e)1qWMree@Q#(bFzNa zak(QhAG{5X`Q~tv{Kv+8#lG^yM&|i*jL)6SkH%hOz8%~1F`6)^l!zuG^bs4w=73om zYrGV>zQonsMohD4d5}1gNZgfZyBZ!Rx&LhbzKYCL&AY|;5&w|?wfz4v|IcP_bS79% znNPS9$7P^XW6x^66^Unjg*jww{LdIk|D#4Sy@t~3&OQgwN3Fej;%YvL-tDnihOQHO zx0XS>7cwq34=R1R6}{I;dCXb6V1^*`Uid9z;``%rkG%H<6TT}PD6o33adwLM#&$m4z?=_%Xefz^Ez^6%a9M;WS_31T(+=ZfZl-||zjaaj274OvN&J3r|5$r+Vq|fM9SACQ6Yf@vT z_KNpt9f;rPoG4x*euFJSem`;X5Um5Pw+Lg`F?w0Z_`RvyL29(jIQFNK4I^VzVwLpm63P` z(r1Xbi`LJrN4JWuNpmfF{^p1EFTD+}jr!K9zS(o~(Z1RJVm_2M-M6{)O=Vp44p;}8 z&trX@7`&D~iZ}MshsNv66LH3(@>f=#{2n5l6}1j;VGPpe^EBqcush=gbmS$X@1tMz zBBS_NGnuTJF|3)fteJ6LI;#wyBfFM2fNd)|T!W7PJd;=&=@OjtjBuQE#`$2cJ2pVS z23+#7QU}5{5^B98@w9*AO3@x z97YdvEBz@zcF-EU^Q#8;nDkt>?`6q159W? z{|#Y7`{R9itrw}SfBJ*NH;u zm$L`dA>%di|A_mp+!lUcm-Rp{`RC$uUQ%2*F;9Dp)$Qyx>bLMxhd#|7-h%HYf5aeX zSM#U1{u@fOvYNhZWNDsXT?)@$XJp-#{?7kRq|rKlkG<3tn2;x$0WS<+V}E=XdyxA1 zd-iVjsmppyAf$797{7zX|mbN#;|8`?qPnDiZkVmx;b#~ zWl3R14L~=CpqoG$catFpU8jCA{u)QsePE?zF|})IFumt%pFB`uBnOtd1B2L=hVL;# zCUq6Cx9hAv%|5G7i;G5`v4L#Og;frnBm>G-43SyIfitYX?WW`ZN(#yW+9mC!@2VW#;&NGWPQornzvbAg6 zCHGF5W+wB(uEeB8u7qrRHa{TUahneNed;d4f$VV7-*~}7Y~aa3#=f}uf+O--gfHsO z&7tSsw(l_wzO&d246|-UQ@=-_p|x3ezhrk)cd4Skn+A`&l6AkB^?wC?;Bxpu4QG~W zFpM(nGfH|NPuowbKVxhuW}dCC%WQemVtymYHR-)M`y%A{bMg0Pj?~A0p>FZZ6ES=o zS-cH-K)T5>q>0cE1AQZBpPd?yv_Eh9z5UMPjEi)Uk+ITQVl%{#vITnOFHsN8-!Iyf zeP=SVGG*CqMdvkxwOYP;POM_~as3nmx2?l$nQWY3-#Hnx<`BGHa)dBr)4Es2PqCp% ztMOLunup(?XN215LqGi8XukD`-QJX)b>KY3f3g1;rP36QNK=@aYcM!SGjA7tYol*Z z(KnxsDXTjq9PFAj4_Ce7-{SF}#(4{QPP9|E#opfr4=tvC+LSzq{cCtH*xskm9jpBj zyZyHuYrn?YY5y%B+kQKZ-TqXXliELWZcc7LZLw)e?S7xO!C!Y;P7S~g1&UpSUqs^`RHpGeyhvQp*Bm)y#l7xPpN z9Q0;%)}G2faXa>jKT>v~TW!WZF@C09jzJmodH3?!Gih_$PBA(D9%q-Xd+&Ww?QTyz ze9+o8FILq;`Ex0M1Aag$drjnf*je&Io&Qt zI`-Xmd&y^)J2C#G%4K}4tTSSRYx7I$UEX75M!*tmL_gb3d9oczZmQ4r(#DIO@;0~< zopw9PlPd2!sdiSOi?-G;j0M)89;?Pb%6DUH?d_baTCV4eb~WX)KAW)pL|Lzn?Z?5I zc=wvJuEV1j*)pbh=5d=3vTCkn5rze(egW6RMk51Ppu`aJ+GM_$YfIp-~ZFujh3 z-J{WckY7RWObBu|FR!Hg@(_S0oN2 zA9k`w^!^ijnQ6Q=;A-0@nQ;$#@1EL;I6FsegPOu04@-ydGfDut)>kK6C zJwts}YS;Ph#Gd?$?w-XbmSrj4`fBcB%y)MOpqs)a72U4>OKm%byZiEP*)GbkW9WZ9 zb-CJ{HWr}s?3v;2-g7!-F8`P^PyhSMeB)~)$_%=@d(N)t-gA9Lw^2}-uRdtZ;FEJj z*T$?%yZ4;!w#Ty%UHZ@YZomKRqV7U;-WtbAjAKuUySw+nvg99`>$VJI=WrCClYge4 zPrG9M=qn{BTkv}16_0=jc{JPh?1ATr^K5hKB^6tH~%_uC$Z`=FLZ7%e!8KJ`b z^%*Yzo_}+77eY4$1~x=&o;}zz#&C9d8a??Q`X@W!_ZVaKvw+`{^LqHL@zxopVNGPW z=6L;@V!LkD8>L?L#rEHKTR!gT8Yib_U#HT; z>l`6nco?20nW}HJzr_BZlCet13$xmYSJFpxV9yV7uCHEy-U;|3YL~GDKBN3#+Nbjy zSEb(R`xPU8UpM0SXPw`+9fG>lrZ(!*8YcE57gA!j=KiZ|yWbRne_jN7bnq zNNbt%Z7=5rV_8M_IK8{vc~_)&msfO)zgX8g?=~VU8rN2IYb{uxao*WBjn7ncBPTsC zTSnTh@sm4Gv}u&)ICni+^-jK(ly8qU&uV*+{DF5uvFasf#~#tWPVB8^S?$|aOzPMs zJBj-Fz=jjc965Fx!;v*mLv!y89-h&0U-&YiVP|PD81TSK&z4{ zEvU4lms|+6)|b}$(%N6W?G?~!ASfcB34(dP>&%>Fh}ft1KKJ?Kc|P}#^O;0pT$9T~*cknBKVLiQDK zMJ`crRRXSrPvx6}n=VTv=dJX`c8CaEygi{&e6>5DQr>#fn9n2{cF{r0ppKv0m95Op zTz_PpXh*~MJB;(Y9Ko_NGEQWFKl4B7w>8g0uCVds6BYkrD)aB;rr86#wq-%jIWgB# zCi`#1FCpg+_HFvh7s}Qhd@pmG;5&)2Ig_zj+<5W!8O)C(jj{O8w)2NqXy^N(vVW$X zW6gFh_+~qQ9%^UDWB*(`O+2>wl}i^Nk-Tz=jn;uXri-m9IGts-3!5^C)8KwpIfq{S z6(7a_bNH3|HxCHm_sws%yFS$J*Lt`65p=2FbLqc|;}KWDaa6)T*H+<$ht0NTU-u1O zxGmJy?Y-L?&I=8~v&q=$k(@P=hz##5zEu4G@a_ljZkGDiMZe%XiFJtx&J(c^8v@Q7 z26SAq1xpO?`7ndl(+-S6q_Y6$XsXWW2} z-fNz+wt3bP=`#Do`C*1{_*(Eefw3iL8%)@Cec8 zPH59VK`S{cH-)v1|)#)w7LQ*jcL}e_g-!;mn7km@8N4%D7k7BoENeuX!h!Z=Brk zbzg70iv7sh{Kr}k_9|!1eX-`9*EsXZw{ue96tT&lU?-g98*=6{dGksZk?S@%pANg1 zJas1gZDIGD!tNgoyI&i2FL7(;yUWAwiM8u4pBHv7^F_1%cf;-_@0(d(7#K2`yTD}ys_7F zL$BwRy`Go!damg8EHWnid$;v^CcgEu|0nl)zOL7EZm;K@Ue6+D!oMeLW#P{fSF!}U zZ{kXy>N#-C;%U+FDV-+IF8f1uWvX((C`bNC`Tv&vFAo04_yB%7hMen$htKj2WSq#l zZaMc}*Vyp0iN4Hd{$>fr9G5DdmbrDFmb;X^mN|8KEoF+grM%ADQpmZ$ZR8)BwtCkS z1#kicMsp|AT4kkp5nSei88vH_uH{^*O1UKA3L}i4FGqHTo_7xAx)xwvaWq zH|MSMwj@@1T25rC3rpddGI*vOo|yyBRK$DSa|hqzo*$9dvUpuy%aRCh%R7hCo#)xt zAo0+0#-G^erJ1?T^YD9eG1-ux#ui}17=-$r#+0Z>3)k@HpV=AKhI%JE{d$4$KwD37%nyy_ySW>u7u_@Le9 z-^H4k@RrP1l*rZ*nS4{|Yv&l|WgR>5rq&VC#}%}zgm&CU8*bzari`JpW^<0&h^fBUBjLCR;uo5`m$`H#VvBRW=Vv5 z^&LUnRgurHH|_?8a5pB@PoeGY^e3FQ(odn|y+5#BMoYopXyno#U1OZ*U1Oc&zVCJS z9X{GQe)x4x!Ru|q$IcsY^q-w)z3N0(9{X8-vq0p8xz|_Xt2rAC zpJp%yz>JfUv9~@dDQxUX-c#K*W}U5KGd8JF+h%9?iM;=e3OVYWk8W)Wd*AKbc(9KJXzJt?5bYg zC$HthctxN8FfxrbKyQqq&w1F}^7kY~ADX7<&rU@TdKH~GUwvnvJomcnVa{mRDCeH3 zUUy!0hV#knEGO#@2}iO=5@#^V`L36|rB21Y)2_Oo(lqzJa?ZzNFJKX|(PnIyx##zj z(Z2$>D*Fqyg%yK6?y3=a?geAK?(@V(NKCsaQ-ks}5?`|#_%`|W9}PkIb^^U_Tiy7? zdgM${z9lz}0q=Ju=Ofdmx=RfiM?cs{{4&>1<8AuiQ$?OlM$Tok{%q6B@}{{xie3M8 zyj?Hve}g-Nay1G$r#N(Pl3ib%T)sjR;GG!#!}wV0 z#^`hU7q}ltW6f2I)n)9LTVwROu|@8~)>!@iTu+POa%V)0{zL4XvWQr{fwR-R?Eh1; zhdA*Kwq$_Yb!keA==!y}N=tpA(z2B}t|l2L$kImXBXU&M2Gi+RW^7Ofn*ESIWZ1lJ zX}7HXimp$mT^=P?SAebjP(4tH4m4xG&$Gr%zFBCJ$NsIC4W8!=YW9MvJZqF&pjE`e z72ox^?=20|YSF}7+!cdoK)Yi1`Qbvhs9tmno*zC>{7zTUOTW1NdN)3Hw-5St%+7QF z;`Y^U(NkBV<1O@4^wZq_`RJIb=%#7zGBwZ5MsDIMu5vEFC563^ar#p{Kh5)zm=ygt zNpX6VeJtbZD(BF&6n&&OPM^VZG0*c8CcBqRO+n7a>7#Gyr)Qw&%4gi*{vf8G{`VxS z-Vl?jPfhKodp%ZteqNz_U6M`zVOpxb)^5|!Ozx+DTwv7`Z%oyd2zcfuuY2B%Dei=+ zsd}{2rjIO$(bK_y*|Y-pk(d~Rmr6BN4k+-l@RzDKjHp6KnP-`wA1*vK8Q#f< zhrH|w%wugom~;QXD^HKIek$@*;;dVdrOT0>hmfmt52l=hlIeMF@4zViX-|~?TW_9wGdgBDay6?@l)eNxJEu>)ULO^$&quB_vtr=$i`@^p}gh?j1^kJ~t&#Vu=z|>VFWEq|YY~?5FWb`fpM^EsG!Xw#<7hujMFV z{UWijfCb?=Dkk=^aY zSofCQGPjx^np>5J=2r8tljkb=*vt9MvDBH}B($c-jyjnkOXyKM~lYulWrCOM1d?PEtW5BokE_3=|uB?Rm=f$ozVh$R#x5}8~Tv}yAuWEtQ z?DyY!#CbsGJj{jmELumL8*`zZ4U{nl3eN>l3!N80=W^&=5rf`lUUV1pqPfhA<}ojt z&pc{zM1IS$tCg14R^~|8iC(aF>jhb#5S`9J+a-C-UF5ltdzCqm+@EC5RL^^Izk&N> zp*k+PKN2i|jrmh+sJx2%V^@1xGD6QXpV}F^m-*Drh94X-|Fg^Uk)G!b%%Ac?-*RzZ z7JBbB=2G=0eC}VCc@=wH!sk@~ULTrMomlmb%&GqId}?xNK2`87^QjxZWj+-FA6vub zQ!((g7Wl8tr`8$ssYl?8&vecGQ9q0O!?+0d@!?8~u^!Z`U+m{%N|rO6FqOjOiSiheh|y9j5`e0sBMdjr(V>c7HN|ihCY5(|oJTx!8J*bBT4l zbE$QLbD4FLb2)q5=UCm&NBRFT{@=#`KjQy?;s3|^{|WwI$N!%U^R$%OJnmu4DMxx7 z`q0!^ebnTEB#<4XkG?TZA9IV7IcXpLsghWI-*;{LFTUr{e_1+E-+$L2y}2Sz|J4Gg z{?qtA`dsY)L)q!h6TM!D}z2+ANkxy8@FGuhqoe!ly{$6ohE@F{bh^~{A$J8md=OlLm)?10to&){bb zTPFfMMS`a&>riL3b(k~WI?|Z{o)W>6Vjbfg9G{F$VFN$?^kD;2!Bv0olm?y#qQCp- z>P>m>wetpOYP3HhS#w9L7Pl2y zSH+z6(yD311r#)%zfSaduRZ<^m+SLj+(6JD613fed5~lb?YggT*t#P*>sfacUH&Tb zhC%dSVj|l)n=P69I&ysM6uq9X#{G0!o_l^?Ew-%6JjClZbaR5oeN;ieIrH5LdUjr3 z9(KEm-nQs6Mh@|xqDAXZ$h=}LG!niyX+9PE!i%469z0Uc{T%MgV^#NB?i-AI&HW_zPZ{?X zd?QNWB=%BoKVB5DwUB4SxLyW5bG*!Vz z!@Lh4&MnN{W=v(C2aV@3pPTPg@zJQfqjk4=-k@MR#BS@|4nvpF4s?l8KcD%bmpP@h z#ndI@KNFu>a1M8iySGm)$OA!t*p+x-0X$&%roi+16nsO5Un;pNn|{iC?JmO~<)zK} z?nK6e!g$!i?>c^S3vBSYLvQ8zWu9NW(Z;yv_-OnD@phMUZ6A;O820%`*wRB%Z2B;- zLnncY+v_3^3S*+75V)?9*wdq&f$8~fnR6Xs{IA7+ews2FE97)H`YyDp@1wbYm}bGA z#s&~yPuM(6e2+4IW!wrs$k>&(4rY!iZLDV;$~RTDeuVfQzs=7eww1wm@LYC5j$e(4 zm>%Rkr3w6vl{K33$X3HQ>iuiRqRfc;i5uVxp`8t1u+)_}(2NlONL;kany}OnU(_l5 z7V>^W2u7CJ21?!a$FNOYz2FER3LJ^mmOhcMR2NuP)Dt^mJ#kHqT$1nCfnM0inaSc$ zcVk2B-m3;C^8Tlc>C^a3WZio^aqZchm%FFt`TY{3FZn1jv)^4ju#aCE$l2jeSwBg4 z%Cnk^3}pT+W7>F5;u#ya`#GNH#IWZWp8JG7TY1Kw@2(%gb5!v8&0{t1sNlK0V(|g_ zKYg-t;0@v=P9ryjj-SzHX`kRxtzLZKc+KJi@x(VvU7h`E5?g+j*wFXMm+2#(Sy3E* z!Ov_}^ZD_0$lAYwgHc-GJKUQ%xQ6?5zAJbr2;t#aFFdH=K?4tx6Gr;2fd>nCC?ihZ zcm@v^@X-AX9xULY`x!h~z(e;lc(8zn?q~2|0T1#lc+hCi9Pl8|5yn@nk`oyuOy$9VQecT{Xvu!Zv)&$7Q(;&R)fy+)2Vi4nFv zthd9SWaJa+%%+Z=I<`8kQDEgzNBU&$ zFO{~Jv7fKBTnorPCuvjd*O86iAFFIN%8x67S>}DF8n~T%+1Kbp;&~mn68?;F%SPTA-qe{m{@s{;&NyHmCNR-W^x%boR!FL!#9t5k>qSGgG!8Rq0B_~cgdrgQ@w=OY6`q!uY)_}ile!vg0Qj1-!i_j6X_wU37m#~{*llZ_>`e>BV;@o8V&BE3 zv*f@sV}(t8?6fH3DvFI<9s5c*bh_#D0c&(CL>9RN4rYaMT@jN<0>CBE-@C$f4AElnmmCG_E$G7rQ z1!cDT>Wg!f9ZS9J(Nl=?F!z(^U4VC7p3d4#<^Q(sIO{!(t_8tF%lk6PXf|1ae)bBzB|Yul#jcIL2tD((;w_EqDPm|bubI${L zVFRu;66Y#0&B??nC%F!!N*-ishwf@3=1=<0I55u0CC8eBvu6_)813mNF@6aPy1K^n zq5Kr@kQdtZ27M7f$8PqMJ)*`sPE+UZj6bBEru~#9+)aHczolOv|7kVVuFSgoz}-%A zY|)>iH6soHKd@cx-|k><8h8rms=a-!BG{j1as6%e*V{(_@}`_m&>LOXD9z~)On1xv!=2=Av!`Yl zx!NRFvW@>vqQkQBM^4OA1D~*GYCX9Y&ix@W2fuZ5_O?Sct}TaZPGot|EjsxNQ+;jZ zWw0Ju53ksKIjtMgI@s6wmBsFoy>Mf=h|3I!Pe=C2S@}JBMDlc`xh~!u-MEh21MC-R z-nH`D{lT1VN$n2!>l5}wEyIr3r)hy&Ewz0(xMj~gdux?3Hrj0L4I}5c1NkYro!V$m z#Zv_xlle<~Y+=T^q_Xm(>0o?F(;=9$2_W& z^|A9ar{tWa{Z|7wJp;bMrg?{RiNB)VWg2S?^drxrBnIi3N^JiC*V)nJjDR+*?*s&= zC)p3wLEn@KIZomCO7ij9xk_!svC4O@l|AB8wdu6U^v>iOkx6^o*x{_c10{aj;cvspS+y|2CYUMo}ZR#M8 zhqO`JCv6kDOWQ;a)z*yI9~?75IV5c|+tVJxqtG*zchle>E40I&Px?K2<3+CYdp#`z zQ^u>r`KsA2=SkWiFf#5{SSM7*qT7w{i9KfH{xJB+uUT;5E-u+qn#X>=b<8m)cjG6` zIDhLHaas}wTnH?IN3Jj<&$}NO$5?-oK1g0#fq4X&lYuvvOZ?{L)(HLS?7_|{y=o>67&39Qz2;sU!L7r7tqiIK0wFUwj9AwA1WMt(s=! zrw?zxw7m#?exG-w?E*vEE-;P&V{!)3#*=8G-&}O?(wP6nQTCQ}kxGk9FP#Ps@39<~hFkCEql4rRdj_=-2E9rR6qVd1;KU zjLCR_+@Z*A>`Sq^#-5e_zcF?HF7}QH{;is_uNFI9#)0vS9V$3FYq2*CR+X(MvFGKT zGTspx7`%_#Kj{IbxgMQ-k^k1m-LPM5a`V1|vsy(@%YNfS=!=iBcUEYg=6pj>uwM$; z2Q{m2*V^@I5<4(p)Ydfig|TNS6@2vrUjtks%VppF1>KTk$ZP0+jyhkk*ZND|KL!m? z8uwC`M7%~Sct~ris7)PES=(9q4U4dzk!BsI)SYy z`boxUa=bF;TpV#JYf?jgS8&639^w5O{ukLJw25)Y4A_W1Dy>=&v}achH{@_Fb9xy& zBepQ+)R^|y89SoaRxuVu&nkOoU2riDKV{5XeL;J~?2GWo3ce$IP z51?f`=Yh+<5^EHDS9j)hHmWHu7kLc|kL3g=#d_fv=PDO6SHoeB!5m+AhOV3i4Nd8NGfU;xYKYRxH&J5p6R}}l6 zSyL)-km~_>A7Uqxe=k?;i~{CjJ!J~{hvZ!PSoBPiD~JEP((q%^9Kgv*7BU|Cz@p6)<;{`hv&aZT=5F$DL}U|6jh|X2*8+RWW`o!SXNfR2qLsx!Ba`%7oH-mtj*YtR-5r zvz=DUp&F5GuYJT+TmdK6jC3QXiO_U8 z^L4>TI{pL6xgma)UvXZv{MTD2oyf{3{=(ZGcVWdRVzntRN&aCOBa@hq%Gj`xcP1TK zW!T{2dl{sh`5kMb8L?~JnF+OS8TYb|>gCG7m%YyT9qi0xZD7t7%k$jK{Q_qFa`vW~ z@04LX8s+23J)WNK+|9gl2>mF-H)*9EA~Vf3TVk?HWG%*gcJnOux}AESV0*%)9J@?N-)=M~=Bu+&rY;60ui(X}TS<0skoTzI|G zH%Bhcq7~Xn?wQ9n1NSkdW(z(Zkrf+gYu#F8Fu7S2=1)ET3VgQApDwNH$;l*rH}f*d zm@>!Gm)I?`7qLrA_Q_mc=I`gQFTTL0k$uF5FX-^2X)?z*=k-6LPgC)kb;6(7kGxua zjvUcC`B#~DlvIpst|1xb!=M3YdC}mt3-$wp_ zD=q{NQG)kxp=0lMJWD&$@fG*3&)Kx(oecUXJlO2 z)))RW)+`L&(7(xr9a5*_C;rwprWrEekLQB6{z-I~(aM&nbR> z@gsjYnEm6dKel0~OzY)CzV?*TI66k@96MR5ndnh!sMDN1SZNj*$`E|d#E%~5o4TU5 zrz1G-+Iu$62Po*Ea|B-QRahMY9=n}lSH5&?aKH!OpcmuZ)8nV^4D46y`!Q0EbEzT zSy!twt*V|V`d;iTftSskPH^32Q4JscdHBba$s&Ks@X3pBTJlYZu2085FEW`nlsw5= zhKa}HoLMP&+zcLf$T`>Gv9T8(cM+dq`s2qWVau0tt~NOQIqxX=VnqJ}6W>>d4xF%wtq^-1)DfuaW;vd3)aUwOdq!ht{%&LI4A22Zh!iS;I(2 zKkk4IDmqZ^l?sKuOxQ~6IHw8tD!1&tb>QC1{?9#ddqw#FSqHwn?0NKo zKlA)9>+C(>7;`{TlKnqJeqbOax|B$NyTwr?aa}S7Z&D9UC{(R}{BQ|7Ifq2rSk$7Y{woH5vd>F!d3=E65hnLI?aai+&Z@3D zFt~crfsE?A4gaV3{HAag%RH`wiZ*I3&sB_-kLUEy6+8LaflA+l7u6*<9C{#4;v%H( z`_!ASC=O_S5be68F8NvO zBWa6RGxR|xa%KBvE$BvKN=87NqpW$6uRqDbo;Kp+TmA^Y@8jA4&;J&@zsMMP4mxb& z`aQJx8P{9TM|l6RHOe9Ue;Qh(tg%1gTWx=0G4)PTXZ}ik<`ylg=$DKMb1a- zLbFlSlkwo?T^SEQTvNMcD&-$@zl`#8T&{=|zr*S9FUKJf8`B&gJ=d*mD-oAB8;+9vBc!Pe(yiHY$T3&^(1wSt2g7EBf@VNMSM<|{Nv6W@x zui{$AxY@{=qR$VCAN{*Q*3lbRTl?0B##)AA_lsPRn3B7o=`VSgxz3w;mpm;(BcYX_ zu~Y~?M{t=mlrgmj+OA#gc%q2wRoWn9>J($jq>+rPc-|QW?p;=`n-((0#J8Hkm=aoK zkk`|cPZ`yf2fClDvl(j(!=A4)#vWx(l@a{c2!Fi6wH_Y18hXFU0a z8YdTx;5Qq&YO}`q-{61gUw!>-@%s_y#adFmexSZ}wvkseua*0dT*`y*>m%V4wU6JZ z7pXwcSU>aTv3}_N8u$}^BC_4EPk4{>tPOo4^)q-sha3_`j2qGIrY#hn4_Ma7ORf0) zut!DL)MLL%+2quzD>Jxfp6jyR!g^Nd8^c>?cZ}G#CI^})4A0ZKpOhnVQCC%;%x}dv zWxTUkG4kZNs6Tvfu)d4>!}n63_&&3~X>**7(>peS%OzYlgU|JhCqJ@qV?>0blKX|+ zFN&}@ER3naTqhmgB8frS$YqYXQOLnW#@D9%;-0vh>x1jC-?0b&9@1lLp>;!b#esFz zz615u!F4?0?WxdwzUY8-Pq!XBo1b9lv3Dk-2hu%DmhISL=rO6=MZFglrAG9HS??_M zC^za23&DD^I;UFdeAElpJYWfoXR6(o{r^!2#=IT(r#(}BRW&gY2~RWL*D=Oj=&>82 zxjiD@KO8>FL2k-8H}o0(6n$0}uFo<&L46kb_8*v6yr1D&^0S?fq)k_qkc_qYMX!lI zI~$$XA@)B0H1UrliH$4wV&|S>{UOLd-#mBgjb8uBJFGb-G1uvw;D6hP2ofa8*>`2?^#L(uJuH_7m zP_FV?d=wS$X^ktqO7o9R*qq^$ks4*dX#qy*+j8bd5N2}-rZq2$Jn-Z=HsL%jaIB3h zo>ZDQm~av;Aj_JQG%;Es*h9Fc*5c(WW3=Y10o(Sp6NesVB$!J=X$@^R?tGtQBju=BrFt zo5{1@<}mtqv(c`e9P33Utb`ca71PtMDqy__ta-pXt~C!ZVI{@{GLBLYdQCLi6}*>r zjW=Q0Vrf@w53I+5MGo+a$AIOvG+Rwrn`6l*Pd#Ae80`w)3#=g~EVU2qitB;(8n7M* z*2}xyko&fs8j98^B62+QmB|o=P-fT>{qH_#RjnfOP>_UjR#sXg+Sj+8ht8 z;QJP%UAz;5CH^!SJJw5av@5X(mP_lbofXksF;weZQ6AC!2NPCeBCvw*f5y9|#k>=O zb*dXyJnib+18Wwreg&-CfOR;c`G5&)b6;R381Mg0V7<*dAy|LuhLu3Ol6zon09IOL zbH)9@%8YDoG+`ws11s2;*Nk@YP6*b^-LMjAS4t18Ujb_+uzmrowUNz_nXope04vy* zUmES=oe-=SyJ7XEU8y~=P6F#aV0{FvI)qgWEnQ))797>OQYYL2inzrliLPtgTlE8aYG2 zK999Ag&5k<8HDDZ@hhDZPXj|xTqgdr@}Jly;IkP$_EMYhD7ktye!Yj114oi&EfD`4 z=k~sF8vo`;-e%=PTQ-7UGY7Oe*R+F<#~=Ti+=_$;x{V05-!5dRrZ4m z6A!&(pSv0?tWDTi({!*F5!2XViDd0R0>7W+n$;xVCov`sxOWQDv{=s#x|r zS^~FCQC`{w?Hj?ZoEI)mEFTD`QT?4ydwP&JnevAgsvy>^P7CKE669t zdC>yHI4>GF!YfbZ)D;Wg2+x#-@yrf*W*0o;VV&VuPdWl^z-#n!W;X4WwYN;M>GIf1 z!JOnI@iA4zvCNjWTkQ2G!I_-JyAXWk4SaHXW}ecLflZ|nN8yq&Qm-@@5kFz@)8DW= zl#X%3gU=2Z&y16|a^SJHi(UJe3tqDu+%gB+Cui4vmzZjKCT8v>V=Z6yQN$U(r#(44 zFZVs|I=QyF@zb@x)L zyZ7fXPA5@*OU>2$7ZV%4c;(gm8$Z=#9F+KIm-vyMqYc6<2Pr46HqfQU`m!W8LXCAS zv&S;;=;JFO{zKj=w8b(lQj(f@N9G_0PioCuwb-IB*l)8Hf5QXVr7{lh7yFd<1?5&s zla=$5Wxr{G@9S-A_^-P^pRa9xF4pRQKGx>n9c%aRrcKuXeLn_jicmeiz9~R zeKp>9n*N=^E`MYC)&66QeY|X`}=%Y zf5rZv4cw;BgLQUON9<^!i|hkBNV&ABnDy^>Gs#iPJTrr9wif5h#|LgzB6xYd20_`N;Oe+Jx%zY4qG_)hD}(*1cW)A!fcly=}3XwKkXi9j|g z!S6^tWFhNbNtj<(Ni$L>`=im)SSv`V6`*RO1+{4&U?8 z<0109yv`Uq4Lz=+?jh~a^>1t59QxLzXm!^oYFf_c#KshBp61V0rTKH#c8vQ-?uqp= z?rq$&_F~+}a!;&|ai73FF)zk_veJCIObL7r{X{k>l}m)a2}T;E25VgBs(w8M=vl z>Oyw(mK(^cklcuYZjPoT_7h9|mM7Y?dl%o+O0sUA49&dIY#Ow(A@4Tud%~i0J_wF8 z_+QHG;5sWrTamGa&`-`R%%Sc{=qU7%I#Ra~8sHzT)2eyiSfRPwz}xs>(Er(V4_>6Q`wX-k1ufrFmF6?h(zu6~XP~8V4=v9?OXD6|o`IIeJ+wRn zEsc9Lr(Hkj9CXi}#D%N~|2YKb`i@))a%rxzMf2KMd)1k4*8j&qR;~ZOz zF*arF39korg994do3@g#MSKjGR^5bsb0c<65wTl^#BNP%{OShwTjaAxry-c@Q0y=9 zYlz*|3S4W9*En0mB4>rfcw21X)bMkNZTw1x-!{W*oO^D;z6km}h*88Y2|p*~R|_O| zK)&B|zBoRPJ1JiVWLRT1**daLQcaG0Mc2 zW1g@lhO@`5Gg1O4226Y5WIt=J>~YzcH#*>EEw)d7U9p@cSGAI}!&p~bpedaT)0E~# zp>xE{J#bf=6Z|vtfsM62^8vA$f_?3=g;gstSn)yIuN0iBtSc*4&M9Kwi0o?+o3M%U z%xvZe<2eh9_)xJOrC(}bO3Q=ySq8Y43`)$*PInd*xcu#L(~4y8?HKAbU_XhU^)73s zQ(~v)D5~C&n&r&LhfOYpmT#0tP;R?IIeX(8Vy{phLwUj#%Gq1ikbH&mB+C0=p*)rH zLHK&%>2I`Ypwi;4Qv%PSpL1-iBUpb!#N?pulV(>@j*V# zhYt;38~7GJG|#FLeiWYW2QP-NX^TH^Einv2Gl66NhWqO_VJn97ulWAtSz*2=?}XR= z&t7%Ie0qD9d0oBuJ?PW>_r(Uk2hUABlwt7p``F{seuLjf3^vN%qs;c%vu_Ju80Q4; z?Pr`5SXjHOIOx}7uT#k1Wb*q8`2Cq6{5_?c+5b@yoM-=5;1g3UXD4Qqx()b;DHGV% zhnQdA(e}1|nw&q_tzrg#3AJRDMvByXEdTrUg=%yN92bSbMGb*b?zUs?DoRxN=_NaqQ03$-*<0$0YadseS3Jpg<|#FmjQy(aGX#U@gqnT< z;fDh9*Gs%wFfNVrE7)TuXFjYa<~Mxr*;&?oI#~niAeQZdWsK`9%QzRditOKjeKD6`TuanMj=8SYo?vzVgnH`>KvSIxELwbJ#6*&NjDW z3-@>UIOkmUn%Pxb5o?P@Z5D^C5S{7ZB3AYqV$AtYlJ7O<-tE9WWx#d#KH;43A_H!W zZvk+JTO5uUON@h=h-@;tBP0k4X&6F1HU#A;qagGr(u15x{uh)PqP=Qkab9j8(XIcK9!~j z;;Cf(pU7%i7=B(X|K(Ob$sCt?wCT66E!LWAo%kWW_*#F!g+G~?(Chyh{c>(~kA4|S z8&7DQSGvgCa+2T7vdJxF_jp^Tab{sfmAAQ+a~&1>Ao0fO={e3)&Ucjj0~PqB$~epM z_w>Du_mr@+4397UdRy5_Z%Zj>JIXs{oSFB@73%#T>PbwL%quw;w8ixQl+M%G^Bx>W zC$f$hap30udeP|;PgP1DGFg8WUybb7sKS1bc9e0RpEeC27<9=d7FfRf2L2v(6Zs3F zpUejpXfAe#(Qf)_yoYZ}FRLwo!nYCAr&5bYG`)7w`R4zt4RZ8l<-h(8jXu->{=%1Tr6h~Sm2y`QcVYvYWjpb+SxddmZR{(t)!B@_h4Kx#SMf_`g#3{P%u@Vtj3If~S}*&P zf^l)Bp?KvB^A9whcuHdZRqRHI)wMK|qdzxM_M>n?+c(?uJD1O zVm$I+o6-{T>nSZG@dqeebAK|uJFf1hK3 z?EjKFD<)s#zi0Az|GkqZ_^;<%@xeOg*16dqC_NSDL=S-zLeI)71v zb>2{;@FSRY;;0jc?#{8pJOY+SjcLuV*=*@FoV;{yh^K&lN zCYwic-KZ$gioLUxox3?78hfF2kUuZX|Mf1BZ(YW|k6_-^<9`+&kesT-0ya21Rup@Q z-6NiRW<*ZK54`xSBYdTd?TW*B&37T^mf}O#IxO(OHhH5LkC*+5&S~AFIr@1x_{)kNuPqcyf;N*2i0z3qGr`7fxvwKi;`v zo@Vy6j=|rz$NHD4##!;?YU?Nm?wms4O!YR;?*-qA&$5zl%;g*N_y+NZ%_q>)635Y& z6^w7JVC;tHGzAYvY-LaEB6~sb{fZ1o!uMOoxGO`xi~mLXXQyq_Z~S|?5B7OAZG@^i zHeON_9liDhu)Fup6lqc!Ki%azw6Ly%Ya<~NCN9-pfr zud<3H-jz6BeB|P9{o@H`YbEj}n_S%$yc1sE@X;dUq<;R5JwDowwlKeb8h-thpkH6` zF0w%MljuXyS%-T0_AlQ3D}x6nkykBu?G@w_}&jMR7Z z59S3j?GnQmM7w0(4FC7EXUXO5u~r1<-dS?~Yz1c)W6Q|ATjtz}w8y$2^uPF!7I<6i zQnox;)_{CdmV1Ne%~l7?KEPg5s)KM0KhhtE6L)WE%4QBE_%!`UGFQvE)YUJ1{@noH z!|R0q7wGk$yuXL{<@birS+M_#FChG#gN%o8cwfd1>Ns(or@4*X4`%$hi@C;Z){l0j zDJ2eQ=F1oqsN$?6=16{zs=rH2;3oW0Z{{tkLMuSMYBjQ2_IubU?i_WSm3O1oupmS5&N2`fLX9!A{P zNG;Q_YtA4`CGT*;R7F3UKE#=TA4qJKGu`u@p@yw;rhC3K*m;Ke&Y7C4sxw$0kTn9y z+x0#^$KmWPJZ%|)-`wq*q{jKKuHQIo673jS|InXdy5^w8XkL0`DOu+VMOv*D29O+m#?p&ZjH-z|zO{%K5Ib*jN&? zyooiLH|K!!b>MuO#9@N>_AtE92Y<1&yAR)4K>VHHeB_i7{^!BFwDoO%H-i6S@E_p+ z?P{V={O23@ZcZCDWt2aM_Y;r5U#)3}YKBerxNm_5#Y(30EHn@svoAJdJhT{wO)0tf zZ*VGl-+|;u&K%;rfxOT{m(N3VQLrnk3XHS&N}zKuK`uT7vIp zaIust{%|1ej2chBtc9I9I`0){|JP>jND*N9xTZ z(D6g)XyjEQ#&pE$+AW_z&rieXDLOHp_9yVYyYI6N(6wma%*j{#<8mKJo5cNCeosTs zeb93&|97#MPu4h3?|n3_WbzoltY^xZ=*j%vv+{iPu<8{D-u$+4RXx_21ANhITzwHX zuD*aKkF6YA&Hi1^Gq<<<7*83*VoN->tPL#FV#pg1lSTMz?ak1U`$k=%U&5 zS7>w|m|qw$lYM&(m?^%!zznDROW^CzTtfFv(B}*=KMalE05p>Ed-+(4gGPz2UCbwB zJ^54oHPC3!Z=lgf&?uJu=&{PPOD*J^9LzN>oAsSkVuhjCDd_cVY{c|~6;0X5wW>v45bLOV(Ir92QT>_0I!NCS!4Q z`Rt2h3cPOi0$hJ9V=OWi;FXeRX!Uta%c z=H=h`lDy)_kqs|#PRAjsACeCy{6oF!|B3ofQhzD)*E*@MDK+7JsOwdK3-!yX?~%Gu zm)G_5s#{E5FLk|krAF42N9D3!&y~SCroyFbvA&|ST_qxWKDS)$szvTBK}OU<)1~!~ z%vyr%+06EpNm`R)LbkJ-j0R0<6RZ) zU1NU>PZ1BW=P7tP2A+lE3u z5dB*1!ciX2?vH;OA6E?Te*AwjrjK>*on8!|p8f0KMdSWDYSA@+9l2->JbJ@_4qkL? z{Fd4GypcZr%ipC>FNuF~_73z*F1(uZJ!N;e-q_Jg$LvEVy#Vb-!K=loTV~hEduuP( zHFdq-k+Wnr^UjRa7iW8k|8@O(Iam0s&%RAE)`|DDcPMJKLYi8m*7yp9zSeE0HO;+kQmu2EtZqOx`pwg&3BOi!-ubzFpUN$X>PY54*^MRAW z+>5odlxFc|OWfzA8CvtCA!?^JFBtz=hAfjc1BrR9pna9JuY&gB6CKxPiFu*c&bqn zr5brqf^!`4pL-2D%A8biFK`4$)=TfN7dUO2=b8#&mH|sC(*lQeeBL}u+l~3AoSQUF z>6H1T%sX#PX8shKcTOW7_e%55h13DhN#S_k)jjX(X;aq`<*l>CmW1;~BYVG(TFBko zz<3(1OaPCa;>R0T{q?r0@8os**5bopt}Z_Ps-bG9kGZ(eVR)>klbDhAUGSs$#_-j& z3ms12Q{z1BTn9cjiPe!da6S}-^B?}-zUcY^eE_$5ckB+BI71y#d4e9*Nv z!*0at2wkOpRS!ec4O;W>?iK$(xlvgQ6r9s1!>1^HlQpD&rf*%qs3)KXZZlACmI<5cu{q=3irg2hU0Pn5;diHv2O>E-&uWjoa;q3}LxF80yA`||Euhjm; zYxYq)@oDTUa|Z7#Hh9U?po|gz9|ZrK_!C^zgNsUhMsm*>gKx#h0WA3S(NN#c-5m5E zn|-Tz7{4$vosz4jjTq00;%vV*B#-|0Z90d~M7h-Ui@!7P7F>P8Z`Tpk$n$xn9A&0F z=%KrM8Qu5OhUL)vUg*7D>u0oA{Hx^fXs?UKhk@Oh8c|=|KeE1<96jVA(Ou)oLotCX zn_OUzYl4Gd+q%g2wqASuaq_Ttl4pIJqIUdpeIHL}<=bQB+|Yz<#_)Q(r!$-JEPL(N zCwf}m*OaBQKRstqwiDm&RvB|5lWdhW9dS*{Jk7FPr5C+)z1fHvIe>8Ou^H z=~5Rwr34(%2pr+Z`DQLD$#)0+jWHp#GHE2VX@)m!NyLfouo^L#!i%=l5HI2{lUxTf z1|>Gy9Me0flR^B7_=3r6O9&|bo=xI+4z8bd9ns#pFrWN0H`^L7;A<29lC#M!-W`db zE*jltWlY-1ji&`PWN1MIcwik%d{hxe;1&4*XAkX_)agZP7U>^EFX&H`DxJWBq!zWCtQTaq2qEXhSyVq?*pMM_b&f9)EZ zQOCjmvbHAq6v-3oYUg`a=!nnDY4}_dQ~g$A#-tzOgSIYLn&;4#N@PTijZ&g{I2?RW0|ahi3xr}+-*NtxW=%Do<^EEyj1uh-E24!$*@yKk$y`}QCB{gelk zj#c!nHqQ{-ID&@*n z?XUZp&zGy2Ke2F0o7NxRkme;$f&7j|1*}nctFxUJV!1L~GM(G;BTGKj0rm8QToh_u zAGfSAz#}E)mMo`*+<@|~LVeleA^+VOp^Rx`E!&zwd?>OL`CKCURK|T9ag1j92jodP z37vKk!`!$gWx&VO$s;GB#F|Kcx4)C4NAetM({lW^?Ooe0Fb>;z7JjWrw06@%=k+N1~s=~W+U-~g~M#ldI z;)0IxYaQ%qv}04!ZgRx2J|3xbDvHvmXRD23hj!%$bHkYH-f|Z2H}ntrRwO1u&g>1h zKT_^tEehFhMb~7bTdeGXNjB_^!FzOKy7Gu#MzQ&=lTJ;r*nhmAr3NhdOuJvAsC!&03Ld$WGCzq8r5as6|JM zUbr!#Yny!QHpZLC<7e5YM~*#cF&SC}*MQ-lOZ4B6!=l4%^dm?5q1w9pag3PMFC5O? z)8JC}RN#{Z&gJbY32WD1sV8g6;p>I6mMm+ACSEx=fW0*(yJ_0YcC)(Y|Z*lfzhfTHE+og=-D*952e!lTi$vfMzDNhoUeuQ|dhmaAC{I`?; zBqy_d#K1c?EGl$joV+DVwr;!8^x)zTgG1y<}WSoYq`uOkAYv z(NNAHDK~7HQ2Cz>`$Xyo?Usm8xzIxPh{DU4jS0gx35^NK8)dHlNFG1NQ`0NqxH_Vc zJKZ?n*Wl-H*$@Z5_R+srz>iI-<2)#9Qz5vKIM>TIu{_H1uoxt%NL5- zfA#CGeG)4peSX^Lb6@)0lf#dG8Zy8<*F(ms%u!5!7rA$-f&3553q{_cmlKa=fj{G% zie%UCkTrGYx+5{$lDo}jo>B3p(kSnILLCcj7MpB2a}sl|ZJytuMC5gPfh#g0=@aZX zo?qs^y&W0Oy={|`hu+A;r3A=Z%v@FW50aOA>2dU9H1D8$kaaJRQb#3DPV#don+7{mD~U^kf61fQ?H>?ZQ+VyuQ(H ze7Gs+t-%3b!jM3^I{zm|d5zL(lAsCpZXdj> zI43YPV9&F5ux`A`wmVqA@XX*q&fcK`+Ysja$Ysx<)ai=&Qv$^BOsKow_CuvcXrLf3 z7m(9Ye#vXvy|yd%>~Stx+kU7!-)V4vg4DfmG5F3>Xb`?0>_^2 ziMM9o?$$!yE$+$Da0}&ateGjtTCbO1!Ux&k9Tpot4jaK)cYUo_>C}Nw9QbEOZ211+ zM!dD;aF_%Pi48aRWM5~({CfzdJDv81#fHxV<~U$3MbAi^`L4uamr8v2sbEZdg{C&= z2;AbH*zh4CxYi+=ffM&S$xT5{3p0lOF{QIIS8e{{t{}Wpi3$H+rqQN;M*D*KFT{@O z8-n8?=d<|+T z=7@Q=2>OmSG$r@d%y-gczXo&UFzg>m@ zM&Y~D$R{p(PIMVCwu=3ko-^DiV;|dA#gpMIU`|6k5ISK%Q(xfuu{(ejSfCE{`)Np6urj#vKRchQxuJ{z;L`LKo4O#Bmug)y5lIwD^h8sc(}_+K`j& zJZ%2A`vxP1TKs~_U{yEcsJ{&+>%2Yf+)F$6-C)GhnQ+Axmwu?t@=fC4TF3wMB*qUZS&c7DO_&+mJr zQtAy9;@2%c?03x13Ee*JiDmFeg-1teVbNPn*F1?envPGKvo613QK7hQ zj4Mdyp5PrTPS@yJiKD+)(;+g6=%vKBv&voQm7MVpkw4fdDD+BAo%$bX9puYDQ3v07 zeAu*tqxh2=P9ss^9~riRScgGZ*CGo?Wt+lYc=_Y>UFZOH$lKW0?bF%+=-Fl)^h0aT z@d}?NaR}lI_YwP7_VkY#|26FC|NUIiaZq2u9un7F$G7s<*&C0(XnkF&$!V_t~ zV;>QJ|IcK0sn0I^+Lql#m-~x=p#AV^B|o{H zzoLd`^B-{ZT6L7N6&;)E%&60xbJmD#jqWWh{Al-O;x}iu-}*;t$}-0iCu20U5RZee z-+d)2uduuuTgEQ``+1>ZS6J`@(MrC5)>X*` zJ^hBBfzC7=ldg`~F)*JI2Q2!(m7fd<**vP?e?7i5QWNY~-~Z~N)-~fgR819+?_$iO69R^M-%5y`H6I=i@XN*n6nQ$diP?Zc~N(L+`!mk zWilD(xxDKCWPg3?lzi%vYaKcMq2@~W!_Ae?)du%HUt6Uc|60$l$?>3ujVv~E+hvzcC7Ac@{t$A%6*ZlYH;?55!lVDGpyJKOO}0d|ZG z=45bGcRG-oI)e(&IJMqyL-%EGw|TOg?%>?WpW?ztI7`tHS(E4ToZ&qqof3;c+`!ju z8?pOF_y~~^gy#_61{rR=tdZym1@~uQTR#eJ>ipg>@o>LOQ9iK9MCk_WXas}%rgP5$ za47aVYgzdH|0U~Z7M_>kEdE4%jJri=^zAYg(|rK=N`p= zB(UXM>Y5LN`^l6^vTH30}p@#4gsEcajD zM|QL7$aYmJxy6d>T{KL|EyoUPEyzYzTyHe)_I=vad-wC+XxuF{16e3WW{bwJuV~c5 z&suPsmCW|jZz;IH2L^K7E)~xkjgNnwwi(@zzA3P4)<5})v442Ted@zcj-z|LKz579 z^{zOgg&zYpaL6x+-1cirZtFPLXWCjWRquPAHt{E zR<|{toG3$!ldoy6T;V6~_K5*)wZ!@MmAh=8g^Qgdawgd4hv-u6^W#$RGU!Qf(yk{? zL+WyIhU9XFh(1@Iv12bKACtu21~lr*NVcDa z#3YCgNqkJ|!K3O4eiiTc9p-bx%;w46 zh|6<1Mp5@YN9A*BB(AZV&sKOjCp>Z$F)~%iVhf3z*}!uW4-}xD5Cg z(W!<113u#}4V}H^mm%{ad*f^$|Andn%*Q$_FIOyVfjd8%mup2MzC6Hv9GF{x8OwY1 z{{!|D=1TC(acp`-=&sC<`-kv5%tsS|6ot zLRULgOq7KWj9u|UA}{^r3diD;m+92WIWG^1++^F5MJ^JVikz*zpK~tvsQ5V-c4sF# z2Az7L>2*>ASo~oEncDcvGoew%{_sX{s+)ME!{CjM{cr}kQaBrD z=b-zO=RDxYk=ojhTAUErRd9KuJyzeeip90Bh(@!W~p+I`2%{b6}$75H`nT&st^66>(58r*gvo0KAF zxR5ax$xxl$kp^?(e+nH9)WN8 z0)E7e{G1Hj6#CQ;d43UVaf~=3u``Tzq$N_%7JkF1d#vI9tUK4HXOAZLmCz3Dj@pio z*rSUbop@Y6F^uoV|qeF}E}Qkv!^5YRpwFbLGe% zt>TgM_?EU=s;$s__)6|&ox0g~H$W?-KixdLU244zPd4+!zKcFZ#qly%0!yQYlh7Bb z`z&y@%k#amu7cN#z~?IFWifqk0>A5a8`)y#sN=tkbN{3qev|W_kMJ@l8P^islX!%< zIp?32bo|_r)bxxavFR_XkFR=$&-=tv%K9Az<_L89&Usgd^!Y{wQY{l|7+ks(iB=3k6#ea;5_Khh6f z@Bg}fh&Gvbr61aRp?*m5Wbg>WleL1!!l%eLywP|Ae2?YLN+p(w+$)N2B0dS-b-K`G zp$$UsWA8o6d2sIDXk3)UGkvP~?DM>m@D*1QhopEieoH?dgy*#8%i`f;uLb&Cljq;# zdBtNfj!y7O@mhkX*kI(Wk+E-#_ETtx@Ji6SbN(=~@H_hOa#4P#dHG9IF3RuRJ5TXD z&Ct(K?zN*7pYROw%sGCi-fG)Pn|t_9;Y*s`+JAiF(Kb{XKOPmTdAsM6O~2T=?4R*I z%k6haE|Z=4>K!e>JD1BO%KQ9;wkUtnjBnzz@Fxe2H}X~9P~m^-N<5*bu`MV6sJ>G8 z9y_wrL-0q= z8RWy3AaYjKrO;pgYtY2t06kmiKErbrL-F>ZL`Egqh>7gs{5-}Q zH5?50}zU zXC&1#%KIdrjE9|(jECVJ>F>b&iQY8&dab{|SqU%X7^Fu^jEUaHnNG6-Kcj#1_BXeA z;>`W7IMaXmC~q!#4nzm;A9R^Fmyh&W#*zLozJ82VALNWU7*omI(H;J|1sy)dMINU9 z#usPzo?#q5yf=+TFH4NcAl7^2J0r_)q+QlKfwdY%4jWm! zEY^Je5Y3!yO!n??Zm4)XRX6Xh)y&)h^%XA08aELAaav=AtTDj`Q(Vl!E%C1M^_LfW zcU(TfoAcJL@_ST!N~l!EG`+ZK_Vlq$>%os5e6%y8mN>yb7kDAK7YB|!#Qo$2nNl`4 zzhm0mZ*|Dr2b#5HU!yiFXR|h|lkt+T?hRuwxeZyXPSz#)v$K2A%cP%T&W|$Z2DHk3 zttaHUHYt>NZAvJq*$5>!dqOGANuhqtDWQ*vP5y-Y=C>w?B%Tk>arR{?+U#+27j#UR zyS!sW7Qa2(?2(z;?D6Edm^ghz)8*60HH{j;|G77Je7f0}JaO*Ij?DXg$zz!J%je$G zF~7?@XKE5gU%$Ow_pAy#Qb3UDX zO6Csl*vi`Muh(XEH*2$eb1&fCKvR0kI^3{Ty?4z-H)>`>$osnIip56Otg%!^s zXT|Ax2UI+P*h1~vjdo6~&sa~9S3XBp5q;{#Y@W|2iGGta1s+~>aH2Q-DSAUUz7!tL zk3{%)$qQ6n%$|Usu7^*N91EYJ-xb@a{LY}J>U_?^9PAdYx$H*J7Y%!37kw2Oshe+kht%7g zvDW=qp3=V>?bX+R^-vb~29VF>KDkF=i(d99_X_MOz!slN@(~nHUu!(p2`tI!D}D^3 z4-pzIa!!qh_>u?o@YD=G4>e>jRbUtWV7TzxRpDkL5wD`tYE({t%v3 z@wAR)d|ry+IheP5>8FF=!h>sLT^HqPi5t9tpBDYcUqy%alH;O0?K}VSb)NP#I)c7D z?O$mVp4R3$g|8*n^`OyEsQB8MKiOG{Oj~?!cXDVJ{s<}a|KH}M{IK>sZz-_}f*-P8 zD*h-L-1xD6jyGhE=L80nD%_TQCfxTmK2!FwW9v-iizhx(*csm%*Lt2tNCj12$b%!t_9OOjla;g_)I;? zd2a1uZ8wsW{cq46+ecLBj_|L-r|!juCiFtaA-Ev4MD~!3=MB-Fq>xKpcvkwJtNKRm zQs@!6%^#C}Wcdwdw6C4>)kE;v_%`D^EPhqkKR#3UWyIWP7S0AQ&dsUpIeSjkUdvE+ zjDKXa>48QFPrH*GIf|Ec6kfo~s(d;3q5A@VlIcq|ecyhSufsJPI*A?t8~W@j{4z9b zw(Er_Lbp9{l$c*EwkU;|X;oF6tdOmbTaw=5;Q+$I3uK30Zjf+z-^Ss+V z`!89*dj$5)`S4o#BfU@Lqo?6}2k*#LIvjjK^oC2~c+UjhF`st`O|9ZR=%ORP=3O!; zGOx#>^TI0*;XR9)pRMfE)*t&L5-asHYPCEw))V>*b1S&Hjau>ZqhqV057>fcmqC{` z#yDS%FV|aNdkOcrs1@aD5?cHN-oGFIua%F`x4q;#XyGHgUlX>Wt@LFf<6dx2=aedZ zQ|B}G>L)s<1h!e@&*r`2-?BsZMG~U#-kRx)_&IYQ_ji7K7kt>w^kshj81E_OS(9&g zveZMv%l&VSDgTgu%|~v~`1qUesgQZwTdjrG>F}(XTBOlm|Lp|&+d|tRdbr@vKCux{J-`ZWin{j-YKhC?NaD;ch`X26G#+Y)| zZ&_Qe!4tL|8e9G{{L6BGuJ=Qum~j=e-o=cq*!yzxW@~JXTIffNZQVV3QN34-+{5_N zWPG$gNbdPt8Q)UIw~+BI7|Hkwb;h7GhI+;TjywU5wCj;881Gg&OHxaf4XV_(L8X?; z*>TW5H|%_^Pu*~#f25orFGO`5Vv7`-hV8Fu9{X<|G);0*;|u+<&@@}#jXh63>Z3EM zlGp)YYW>gCoY?!{?sHz8p4WkIHgT!=nJxFbE;uv9AK0cxGrp(J4eTiBLjJ?jQ;<7V z;-yaY_19ZKdl&6S$t9r->^}p^yDI)>7ubIe#kbwQMhoAD{ihh%V)Ik>pJ+bU>wrPq z!PtDR{a!oY+t>M_Q_Fr zpQBGPri=-FcT3MFbICn>fzRH54rp72o#!@eK86ij{PsSwayAzL<9sgHjP?&jduWbmwtDd>f=CxQ_20&nlWiMoR2S4IiQ12c-!*v z4M7&)JNV4OXceaf=+#p-+7`{;Yb&(y9RgPx~FY*zJOogF8ZZ5EmqF&zP>?U-Vu*avm;bOP1v*9+G^3YsdK%Sm=^4L_Svrd zVL97{*AxHC*c@{K&VF?rnpDNP7g%QT)xr~~cFwHNh!w8Nx~VB2^B8|NLRSM|Qd{Nwx9en!?6efsTwBecrz4)x+&kcEA!<%Wr&0{WF- zciZLDiQ_uF=C+PADVfxN%=fDLJ;{H}VjaT`=)B-X_5{(Liyx2e19JFn>|yBUw%|Kw zIPpcphsbc6`)at);n4e+UTNJcK1Jfw6UY7a+x(gbqH(e2M>y%$KaS@_}J)gkM9?Y5Bnro9kc>y6}V9-v9g@Y++1iiRV9y zEl&Bt__crP2V>hY3u$@MdHZ?4R;qa?#5FSUPO`JSo`}x+wOMAn}^# z=;6l~p@%`_L-GrYA7u%-(2mAwdmOZhouE`owo2JcK$h`m&UDDY{mh} zb9ZYrXWa^`ZJ4yJ@GBlBR{p)imM2#E@nIXKe2z_GBXfr2c%dti`QX0j-H)?J3LMFy znY}~dVI>A!D=z83@licv19>u>?Kgr4GB36qeH_2LW81aG*e%iFTX`}9tXB>6t`@o` zws(ICK{eT)P^PrPg*}%6{_O!uo(K*<1Q7w2a^tPa;&@0bMuHZssI)PCGjM$va z2C*MlUZ^M2diZr$$8KZ9shRU;^R@jJULH``q;bv(uY5b z<;4>E@M7|O2K=OaW797l*9X>ZeeREmx4?!abr6Y}h{hV&ekOlHUt#eY@NL@V>a08S z4!jlPjLpUWIc>tTiEYUke|c!ePkKI)SQT}?T*Plj^6>xKhAp-|*RyJp4bmVG95D@MHz^AkW6eSp3e0_4Z_75f>r; zKe2HZQQsWNzyBEUx{=MHGsP<2qHL&w8LW1Me+e9}of7`duEDW43LD$YE+g{oP(gP_ zs1|ycIH$gH?Pf=K?d$MWFT+>qT5l~pSlvH}x3GCCp>H*L#0}C%@vRX$?gY;YYx4J5 z_2Tr8k?qd;`Up=Tv8@?`&#}Iv_=AX!=oMrQZIVyvHpHKC>&;qA4slsR-;A;6{Yque z9U(Wx8(cqp5&u$r4;7t?<=GmbB^vsBM>BO%e(D#0aOLkU^tO$7GadcC(?Fg>KGzLB zBL3imxwcWR(Ju9CL>H3OHM&XeUFVjz#6r2h(XB_49Epj;<}T`3(1|_+9py9Z!{n}_ zrpLK9jQYNfLmn^BLwDj|MZ7tB7yqhDRL$irT4G%{GBAD){S9(o&BKqq0egth4>_k5 zUm4}U>^Tmg>kwNpXXBh)@-vI>Ky;F7U$ehs;I#S?iqt zm=+x$Ydfbwd@b+uOUzq%Icr$Ydvob`J-QL0d#`~vMd){IdMCU}{e#xEXSg;p<{JFG z@;$WYN@!s#a`G?W#RQ(5Ycd~p`(L5=Hmuj^OIi#pIX48?g|28{UiIa9c{r{8Sfx$> zZU1H~-;(%rZWUb|_%|INM)VKLr&IoOE*`{}=3qhS%FxV}SB6d`c#A*6z9P6TXG>%M zCUv&RIl8~XhHv>9$owjw$0*JSjU5QBwQt=4?t9q%azEt2GV{f|ux32s-?Y_ygojhZ&{qL#$xx8`EMd|v&?<%^s z3)sY@LEFbovFMs#3$H(<|wK9hj2%^nI02{pHDJipF#P)>1pTuF)B;^Ls;q|E!-P^)lSx{~~f^ z8Po~d_?n}4)7#{}Dj=^!f9BeuJyW+^bbP5Fcf(@_o}GB^{9aK!G4v6-BDG$<2d3oz z%TFpd{O!qQHOnT3JaZc>9gIih8|i;8_OZ2Z#`o54N)Dq3ZISlN`Ihmck1ehpIWaVv ze1B^nOs3ASGhCB5aT4QOT~nR{A7jZ1w%l%?Tj@L-jd!j7qIgcdnU0{jrQ22VAei!8DtP8%olsee`xSw|d@F=&{YH<`azq4jc2>#aC9UsISb!F|!0$Qdeq%v~Mq z$l-k6Bxi%Nv!tK6TIqSkZ`4q_;9Bl0A}5ZOU~=)S$t6YvO>jXN?tR29ZrmXLHSU{=F5QhZx=jyjxl?9 zUTOymo&>SU%)n;xrPC3*0lk1d4+ofs#Q$a<{tiEG&BJIl4{aBnhfFmOlFRGYZ%$ux z_0ab6dPAG@Tlx|}ANcBBzRkbGJ^|hM?IwqDwZJH0F7k*YE=8taB>61)&9y|)9p=7U z+wo)8*F(G19$erX;msq@fz128+;cD2^4?w4aSgxo<(vQWu|Y^(O&9mNiM5n_r*oZk z>R<3~u*1Xk0P>(ubDA>$Z?oRA2ES*WW7i;&H4vS?jG;x>_KGg@sjn&`zOC5o9Uk@U zVxId=pXWS0=gS@K{T=VE9r{%H9`a@goK~K#t;zAuL0{9vKD&-@&O_Goe6AbuJM&E% z?L9I2H_Gqq%#p+C z!xozFE#!9J04+fvYvtQ|>P;q8-pIKzZz5nK~qWo@C{>kP}91|OUiIXjhj)&c&=s`B!1 z4Z5L4=z0!M)FL(T0KrUuSnA}~G)@SqdaUpP$IvC!Y~~xiv(l-3mpZc0M)@5?AD%;f zNOV=Z3fTue*J9u)-fBKY~6nJ z`8D^=3U`8se}g|2op#|$t^a5eKwp!5C~H$&X7(b!o1WnteyCuv*1zH1x{lGb)$GX3 zZhW_GEHJkD4*si=)9(cRsQt@=@?# zXNArF=vcwq&%fty>%PJlk$WWc;9 zZLmXh5puqmxf4Ea5Pbw=mG>Dx%*>YlNxvF+mwNAN^3?IW+lh@Q`raPaw);BtPo)mU z2OtAIB;%-v8OObhqhE9!`x#sJeCuARdDH`c)WiA)nbR8PYwhOb@J9ugif?Cs4|6ts zYi4%vzU1)Kck}m2A8J`AbEUR)0yTLT0ZZ-+{%dlWT!muCXdnDZedP$&t(7?l>I0j! zl9W(ZLrQ4g72+?G)&9Tu4tj<(?dQ7w+AM5LjGghynb`?FDPfM~*?>N{srxdRb^|BBxRzr~LKQ|Qg-*p(;!g4ix+ z_K7-l7lKc!&x~{2$+P2YJot5C-#I*y+-}U9_<8kw*C(;l;hyXGhSwJPTIkbc=Fyhr z)tL?s%lY0j)fWzobVe2zIwQdclOu~CO^)ou_948l%(ciqf4|z2i`m2Q%`@27)7jtO zVV_^cexC+yDTB6@LI?cNgA!sEUX7k15jjIn$r&PNhJ!p-@_)zzUy)ATRQc_sPO5wl z4VDzSsEsPW<8rOt1AoNX9hl_u%2aqJcB4--BjZ--a>H>$#+)C~0=|{$Uwr^7YZ*3kRCyF)A8z zqxJvBg@eqY|I7NldSR03xumoxtIGO6cww^XU1&cygy+hNvTLmW=3-yu#)U&o4}D&} zFpK_r>2EguHBEeXBZG5%MW!*;n`un&PFkC7X5U#-B=>l8{6(v8$uhGRl@|5hGSnP; zXIas^w+!L=WOE3xZoDPQTy@JJ^ZEG$&Cljh-|f5U<_h4Y&taSaU z`E2O%pf^vx%V@=rXsb5ku2YH@g$Dg8;{!Q&yn6 ze9vg|yVX_T@HKo}_tk&<{23Ijktp;ZJxc>Td9~Q?W|b=)&akKs2fBL@yFhcnN@r;1 z8*$1mFdg0M33NCmj*X92J1pCP=x=66@zk~t2(K=(l-OAhvkyeKR{{+(#!OW4u07OE z65W+C{Pszl!Q;B5e)9e_l{eOw;fx$Z-MeA96)PJ=zf=bQv_;dD>=vun`AeT1O0n1O zC-0H;$L^bf-sTweOUV?=3gb70S-yw{HT75Q2CJaPdO zGv+81xFSm#N_$ z$S2$*^Ryy`^GFwa)P-@8vKHD3Y}mwd9J^igkM26=4c)AzhiC-WK;Q&;R(KbIE9+ru z+Q(hkoi)dnEL%?RVcy+tUpPmTvs&rfizV(cndcHUcVb=gt69P~h`#!xC%0tfBQx>bHmz zHhqjYF=Sf5+r7E*wN_AGl6p7EeAYKdG zg77Vh9>6!m`tHmW8hMdet+c>-e_GZ#J$M^2T5Dorw20vrpG)K*^oc_2&hO!~>-0BH zJmp+0KJOwIXgP&m!KII~wJ(otcP;Mymey;_4YtgXh|DKrxtcsk5@+Tl-b}_JJ`^&q zw>74Q3>k-tslrzhe7_yOca$!kR3zNrpF#i$kBv2x!bKmMHfsC*7Dm_z)V8{dI@k(FQcXdmw<&)6arGj<^_ z*8457Etf4m@l@&JkFtGV${H~5R$O+e>x~W2p1*xJrA_>9MNjjWD-z(>4EQ!T{Fw*& zEfIb$3BE2F9JpUXDoG!#(H-b>XF@7mPNMXTj?k;BCXW1JggDxHC>O!r{#KE@wq%U z(bqe+TsLzHsk2FqTJoax4#U^tkHn^R(bp@YebwmWHu|@n{*4^E|B_vo`XgKE=i~Hq z2mRb#Odsj%9{ReMzV4ggkNko@K1ctar+?we*tPHrUW0A!L&o5w&dJL?xn}phxu(SZ zJn^v0%)KYh{3T=DPQPV7o}`v;M&fv{M*p`l4u6(zZoQPawfI!?LvN-z{<{OsYLCmT zititdSsU-&!?<@9>ydqv^~e*9c^hNgI>8#JFY$73KpSlO6VpwR39F1uGuP2@iL8T+ z`v5h^f6BQ3a>Z3`C!MaslgPFw6HBi?IZzA#_|CiTKRKHJuMBV6#JO~GnAZCmzc*0h zt?o|!x|7*j?=1XlHd1S9kxLu!`78NNZ}Hjr!^Fo#RubQ@nVj9da%I~vK6-@|&HZ~Jyf&oKN@xps$K z%f9g1;o3Vp$UEFpU;FKjoVq(zPBZe^7T!u*fVQ52zFx`2_fx0Qv=4vdGig4_Z!Tw2 zy0324x%(H${dJdj^o;iPB4_m<#Qj6aE6Dx5H>GKzJNSry*iZQ;=R)s$x^Y7G+>9s= z-3z>J#D+fszO+Vhd}|bMjts1yvd!<0e9TzA;8@$UM(9WyZRP$*f!;ag^#oUW`%AR- ztDn;GeShSV3I3wJOZ<`7-!3TMm^j>fZ^4z`XZWn!G16?K{#_W{+YQd`#7FPv(gr^L z68zh?#vggDG}rqpaO1KN6`1XP5aSd%#=4)fd2B!Q1Dr@<*PU>5n{jgFn)K zlRxs}&G`0&e90wzmhySJ)*nd*CyU(q-URm~?`z0e{vlcBhXXsOZ2w7|Iks90eGL8{ zcBL=*Fs*aS(zx^`yS@JK?6@IIx@r4S$`JERzs@NR;>2D6U$YaEmednJ=4xJFvHo=H zl3(|~r{eF#nGL`8?uvi;Rh;=J?z z2(`WyF5jJ}hszp>*W%NDsXzR)H;s_&gQq?*LhZ$Rcz8%l?&Q-(4b-1gzxer?dgN*9 zB)9qX@PY7uh@1Y%a+% zt8N%z{u#gWTztr1tkoksZq_3^*RbDi(<9rzuSYtT=#jQ+J>0%b4-1{i%P`GA+Qy0} z3Ua+KB_^3U1OBxl2OC%3V7;iIN(jvA|#SEAVCq>m9iZTx|45eml0b=!N^h zfz7NjIM4wO90nirS>tE$aldKwc<(cBk0~GH9`5a7J)Q?AW)_V1mLC{p9t8K+@VjFF zD03ITH}Ts?`>p(b3VhuS9tv-Mr#_kdUJ;MM2gb`|hHXZ;OX^N_XX-N1kNmzn1C z9hv68*JqmT;OOK1e^imnJ%{JJ%`c}8HHTmOU`4$%-E6r%-t+_G190od;KdF1Wtz$T zw^SUR=QaQSy=*h`pg&TS`qPT7g8Sg^x_)uyBR?2mzVN6&(gFUz1P*=xu091G%RbqG z5C4;~6<)#DHt@F$oE^)@ z#@VOt@`sJWEkJiYVsJ@ORUC29^$s&o?=rV)*jQ@vJB(Z{)ai1W!drBJ}dGdq@(-zt`K4P*N6VmUqf1+kbKIRgZy z#Bz!5QpIxeyBb)-a@^P?`owakT=@LCSWepIc@@jaZ;{gmqlZ1JbP*TEaxSMmHkNY~ zb1%AdiRF|yP9-a%XAt{JEk5}di_7dPkJ|6qCvpx;?iSHMPOT~2HxvEwyb?|MvZ2=u zsdXYoQ|u#2+|xHk^xdnzQZ=%q&#`f#GwA0xjp+jcB=KW$Jx za*36*z62c!a(_ev|HL+^gMYdBnpL6e6&_x2IETDF_58QxecLvgKz^Tt#6_j04)?wc zpZFp1^S2T&UyRJ2OZ$30@x;YmM=bl3e0Ff%FZW<0T-Y+w)HjSY<1eQ_`Iiy5G>ST* zMd`a1?Ma^A0CI$xj~+@Yx}|b_n?1je}VfhR@XuLdTiLsN@py39nocpZs#y~ z+AVQXt72kqS4CrPSH#5Jt|*IaWnaen9Djetg}z*x=Igx_otfy}_M_8rFD(;aj&TJJ zy{-U1YtgwJb9ya(+)|hFvk0JPlzEHQ#eLjI7bn*Q<`L&W<+~#NMhh15fcG-4Sbd+2 zOG6fPFeXQTe6Cl!paapEU4Ba+w3RM}SAF06OXe;Xp6HX%hwNIe=Ur4Ea(tH3hg^_{ zCh;|;53%y@MfD-^w23|>s;}5(>qLGBO*XbBoYRX~al1L89}`dX|2l5B_j~8{3_|ba zOc2|u#O)RkH#rp_9HH%|!=+-}{=2wcq1h6*EBXQP^PUN|!y9B3Op5t?pFov6Dx^Q+KFH4w)e*WVqH7~TM9 zl;r%A7+xD*btbW_Sr%N;-%8Bx4ron0aG#9#DcC!Jy#u=2s=46l$@#_aZHCK?<2?=J zgqg-VzRdf!6N|k!PYaj`@c%aQtlICc&LmznOOO0Y>Dtf7_M+FbVta`_ zX(hIID|`A}Y;TEiVQepblYUBEub;m8q2oUKrqiE=^h0o}f%x8qykFvbf56x~iR<0U zN7kcnZ0}3QaB zpT`&3J2}U@w{U{DRZllRn@oLZesA-nn|o7yk%3nX_kPa*_XqHQ@J$ok?tLx9sOgA%RuH!Sz>zV6yDH-Mi#Oa>$r<-?YW|(i2ljld?3^QZ$ zSa0Ym?wNd<_Yi#hFUo<5ylJn;-5xFSqZBO?8lXk)C#E=4)`#nVBez7~^;v*^L}G7m zMn`f>q0ab;$3=ItY=X}C^+@^uV9r(`ldVKvyA4_A_L%ieh#B*3v=d3t7HM@zvZzO!MAGbQ4#Mi{6914|o&4H^>~!JUbEwn>RAg&VGZ< zN0{fhfrHI=nd1a=usN7HUUA(Zv;TLvhj~t`;GW6jy&2!-p2-uvH=#$EIB$^okLLV= zEG_a7@y=N?_w-=`dZquC-9478l(ePf_&zw`AN=-@?S zpl5PE%;S70fPPJlo)1E^`ktph?Q@P-{U63aN9_^2mNyQ+==tlxj|F?g1?TVR-+ul4 z9Z8$})RSV5ICu8Op1auCE{uVW$$|SZ{Hc0Jj6Gri@UTZT$L7FIrp-RzqxOh{MwL7C z%Df(x2e)qPaPri8i<1|Ab9;p7?*CEj@63N-KXBf3{#?iBSe@%GzEwUBx8vNIu6#+n zrQxc)QYD|L{BQrnw$Rhhd*-j$@N9dC*bLf;HyB0^H?eO>ehxXKT}9-8{6p^dCD+Du z_+$rsviP1Ig;x_E-vK}FY&FdJtH{3rpCD&_8S;S01n>|C*Kz+e?h9xRb3SK(+{vpW zQnOHCAH_FD_yu1M?PL9s^&5bVZg@SP>JIWvj)&jlTF*OMvf{}3Q;+<24BH%bz*>oe z+d70=UIUzwK&CTNmE}a95PO;EKgI9We@5`PFApL4hr|aKzdPlJYscLm8XnC9;9r%ZYmonfMGl`~$p$#3#c)>=Jx=iToc<$IQqA z`nZt3-AsR~^NIaoUA7sTIiGX%B?|pC!aq129?9J~TVirVRvs_B1bl?#3;s`Fshmr| zu7Z!4&$%h@!0wxF!*%hVTX@fI@Z^m$r+F}C|0M#inH(6Bk8X!gGjGiwu5ynI6It@A z1oJoP7=LWJmb}!bk94;UTKvA?9;N{Yu6T&t>NbfsfdQoi}|ke8e_* zh*oSzijRPYcxJZn5gCPQ{E{Q&AC4cKRO8o7;V~K|R|x$OULuG7iM-#hPri^t*p}>k zAyRi&eAWWd`3N=|p&ImB8hW{5d}_BDp}J>{kgvfvYd)XgOI&}`2nl~D{MgO#7YjHm zxpx-N%#!)c1zrOEeS;hv%UG}Ftk}tBsK3@^$4kj73|uu3Xl{fj&!gwhQ487H~#=H#!Hx zOU2H?@IG^}fH_#i94uxIZjIvUQs$tVIamR|un>M>CH%tta_m{mM}2foE&+ZzbF!5A zIK;f%&YV1qZgwT}aOlwG<%60-6%VIAR59FBEV+iw;o#aq=Ii|dapnlmNbk{1r}>8g z4^;f-kN%?OLczuH-ZB0(a|d}$b{iSyOYjN5DIDj05MJt(-(mV`-;)Y|m6T!48|U}K z%vqO53WMyiItH>=D$9MN075dS1tdp$IBtMCfs%olmxSeg_ z*`Rl>-WcDxx|Z)cz9olu%?~}<;xE#v=(W^pBxeXV_6oUzv}41I+VwAtcj&}FMe6j~{zl42gucnyOHP12Zu(FV?L&^{ZjyJ4 zFOt0f=HHM@op-I}opR>MTG)Or0#9JA)g33~Y!`Swc#C|kb9F$*u4}6cTry5=b*{_T zD|00=9RFTo=QFTkS>){O0gguPPyDu){y24ARt|HtmAFSwT<7W+i4FBR{A>0D+wJIF zJ(d4e{1&_n-l;2?qSpxnHx|DR;~y)q#kMcG2h(GO2)--3;k`8Unr5&#$=e_6XcOns-l-P}2Eg4^L&xzkg z<8I|$wog_!G5S(-FAraNC!d*`FI)>=dYBJjhU@s>#Q#L*3O}W=TqiH?Qf#?%tic2C$~{{sZ(^V99+o{2#`B(hoT!&dnclc&~yzO6h6D@1FSJ zcFFl?QcE?*G3$%GB=Y$KJH=JMT56(Bb)=j)&K#y_^{ivciB0^zbbLzo>%h@#mUQH; zD(WB~XNVY%6DOEQYhIJoyh=Q?^oN}ON{0$i6S`t} z`t?@ZSlWaqbZcF2s=UrSJfV%h|L^lUe>pvdpFfzW;Cn6j#G4aO8O`fFI0|2CP8jYa zmFq|9O~mFmvU530Ugr;OxDp?4q$s$C4VPHT+%Bu0g_E|ZoIu}SeN*@nV-k6SP7~KZ zZf9j(Lw@KQbfU@B>iH)1EMz`od2*3GYT_NLK83`r%YK%;&fmoM=+hg{%MLoWWjf8M?x{mc4bE;;%2h}a|~#(V@Z z<~us68$kYl@eLGSB97~I;Lbd7M`A4(3>xkgzHI%fJQatO>`3Cd#T~=~g?5N+Ft?~< zEqlAf+P}n|d%!biT?xFEea46{s?c#cOXRy-&JuE|%GqSxO3b8u2jEXQQ?zs|-kRTY z9I5cA;FKOBP8%6UY!$vi*d(}L;$O5JvE`hXbLBlkvvPP=om+f2;L~WN`_K8;3Ve^e zZ-~{V&RXV9ddq)zoTFE0m(UNnPx{r; zN1q*g?fHLlP3i~=Ok1yhZqMqH-zzqkg>_!!M{!@t(Xwyv?XU2Eg!06a|M7|1V+8{&J$oH{tossVakDu2s&6ifU$Do}7u2K>r}|~1I&(Gh!pS~+ zx%sPyj$QL`W#PL`#LDCpy2~D4R_NMGo_Vufdrh|p2USe@FH~RJ#q|z?{m8DN{i+n5?;$Jdz%Vnkr4pCb z#=7=!W)w7}ULddTB&NcR&OyFC&&-S*B1e(oF7V2{v?3#H?yKd08#rLS!)Uq=c+Z`Kccs#Eh<-!*wLRLG`I^I&yp8g|1v|@pU@s6|2X^K8 z9mBobqy2jP931J_81y7peginzMd)WNoXxlfneFf(LbD8`QEKX- zyO6rU*~P@?o)%d|Xxz76w)y2~J_&G1;0it73N9P@7L6^9!qV~;o&8#U?9u+O>ppe* z8cQ?B^r4GFf8{-lXO322W7T?nV+yv#83H4;*nNq18kpen^y0X{0fd`lY*1A@xA@BPs@IPj>8+pg9`t)l6n>}ZQGad0?&SGScrF`WM--m> z#(i%ZaamHM?32!ze3I{xkEn}$MDM_FHQDfl-z z=ihecnu2YhQe1paKc z=!w8-Q2nw0r?vl(|2^3=p6%4xgEp+2f%C`sa96Ff_njm0;c^?6Cx<>+dsX3vo)BKF z`enDJwb$@p(dKFUnJf074f8=~Z|CdG)i!7EWP6PFx#^p=PX*q))d}GnRsZZZ_CNm( za`AQQ>=_%@%g)}e%?aUr;HW({z@#2ij+*m#UP=g0SADYfnCz)CyH7Ksdul7=XypDV zysp2|x3B1%?&?jmVQ$U|<(B0tnB!EREcgOX^l9qcS)Ge~?ta#N>iJK)M!I^tBu`Pv zn9wVQuHG7Q;CJcxvNY9KzCvyyWYOk=rI&=d$So8k*8ZJpBmCY?M)(!4*4uTnwmO#A zJw30atv6xX=~m89&Byr(Um@plj!R2F({CubJCT3TGm2jE?7Ds+#iXX8)GQQRo5bwt z=@JWS$p$AzyNI2MTO3>8(5@H1k$$bz>%%X`<9mwUEwIT~RD~~q0J^_;`xEe#aE}C}ar7LhK3DXZLsJdK>Y75Sbs{Y@})=G3My`TYYJ0bLP1O5{m;Hj@=j+I^{VMy_D@B*K%ki=yq&vHN3dbh7=8@UZczaeq$ zImiP({Bktj?OUDSA$kVUb8MkDdb_-9_0#)GRxj=l+u%&}9Ver?XO_5=oBnX!|?(AE@<5y73qJf_7OKY5#)u z;I_u_u}bTC_W7JZBli_EAKX(V|M8FSo?!hKJ#Wn>YDrG^h0#6NRf*mAKCWLGz0SM` z9_0U3(dYSJgD?8=ORf96d8a`fP++qs)D1r_F|+qWFX_uT(ZK}&mA;o-ec2i_7JD4M z+|x)cQY$8CVEcbu@zq04!3D-70JrfCz` zkVl+A-ig!bo24hoXfNfx%)jd6czy>)>ftZGN|-<&nyXkl$;Xhxo)){nYm80WHF8Ym zvLD4yAq=mHekL+FUYl^1m@1*uRp7!A_RD~?TpI%|XMUxvx(Av_Jd@~27%Mrt$8&EqbUkymh`5%i(>-cO@%z5>>eKG#I&^;5?174clg!_*{azH*LT9SP*2t3g)pW**Vs z6dxhy<5BK2o`!w`L)PPCi2=I_T`{_cZm!E5iZAnZ?|=2saNbL97^UC(FbbQ#j)k7g zIn2H4{wPeDFR3SDux_(5*_+#VH{)_}Z{S%A#^6Owlf0`@CwR&?acHRzuW z`$1rD-E>!x;IzF?aja?VI?38@#dct?*GPQihw_~C<$`y^#{@@0mwB)3cR7y}d2d}_ zV_42$u?Li_UZiXbau$YIsqg~KS78vk5PR*j=ryTD zAhtO<%in_T&tD^Umr>pzdt@efS?43iO|)IwX3Y;@ z@O^)zs+#?A^ZEU;V2MTd?EMi3&L04GH@ZiAWlfQJD}}ba4IQqcpWhV5Rm6+$22OBy zk}2!o0vzc_3vlF|=-VIh`#KWcOT$@fS@#3b5QArX25!kB#~`#fUDXzly_U?}DL8%l z6br}2SOkvTzYAExpI4*5p3mNmcWMKS9BLl$PT^t2F51Jq$1TjduIJy*=UafcfRFv> zdB8qOn4$FK!jHa+pTt>mX8e^{d664zc|r7_?6;7TBd8YvpWRD5eR#{YyFcUYmo(Nkp*URpU`mTaL?O^Ia}h%0}?%Ft7x~+S~+JAaPG_b zS_KV}8uD^3$#eh4a{qq^A;CWnJZ=9TVEh@nx`i4GVvm%wPx^5f+!5dU zPuY*La+1hMk|(8G)yB}81MEM?Qt@GghR_yZFUs@X#6=6=c@h|B*J*Fqei|u_M+KC$<3kD9Xr%@+oj+S_>VRK_X1;9=2EF?Y%NjXe+6HYT0UKQzVHa>;CK0uYqJpAH@*#A*@SE8k(=NrC8mC0VJrXdhgQq;x95?k0{KhUbwB-( zd%nl@0KBO&3>z5xL-18{eF{Gy*O7FQqQed0#EN_K#y7JU{2K@Tj?*6^=T| ztw@asvFAZ2{wg>C4H4bLRL!AkhS)lY9Pn7#zNufS>=MEs75i7WCTQcHec`KzOl%ba z=B@-^&{#Z_wU+jA^fTz6K53`Hx-jS6taT&#i-fma@sY@X+V~#U8`@M{h5RovgxjG_ z`jobMzZSYbo_v0nLr0=}TWDu9&&ATPi_tI93*_@|>FXSyCjLj`?uqH|esCqWzp`&c zpCI%@`X>8Q-gSrMe}WdNJ&gP!{4TUx$uPmIrcdetZWZeq``i+q;eF%Pb=FbN0l6+V z$y@fTwH&|pDr1tYqfJL_nsoBAUm}-UdDlK8mxILjN$j84oVxJuYlBDGM6C5S_=S#! zXGw;SA?{K66Pw9md&MWMlw9A?5}`-?(O(FTv<`iyTyg{Ean?CGr_gnA)~B}*WRA9o zU5oVmyWF#05C=MnmJls;YTIq82RIS=K0J$c#7i~exrD|{9%eBK_@KYL!D zjptdL2Dza@o^_3t#-0AK&;mz2vc-D*VQXqTgeGl;4vL@APR?^^VMi=o6909fo5lve zl~)P+z~03+J<7X5Vg-RE_vhwQiwa+G;S(MALVsKM$bN;_xCT6w{Hb!E@c*{YxZX^T zTYS*-*{5Z{&hZLgHVfFI~|R5B(uK%wm-3prEC4{SKiJbX*UZ(7k=_H;fm-ohKm zS!T{gZo@`u@9iLYEwPCoEZCoZfjzv6`np0NeAFusP+Rxg^t)<_)z&Kee~B|PQQDSS zZJM+#b4H4#?KZ0|fGile%^4|@wl!8;C;WO~jWZ(qvZ~Q)%aOK5XGHWyRrgqJ_0W>Q zJu{#0$Y+7451GO*bh87yrNT5UdQd(at4m$rYk+R&@c3H+-wB6jzxC#*J2+MaMK zpP8y{RvUcDoWM3}L(6@ethP?ksca&jBDBWlpU%ecPS+A|VAGxB?B`l&jK|SfY11FU zAK|Bjj}jO)@K-hPQ;9XTr<11nLW|(5IOKcXHHD{x@L$lm-p`5Sv*|!AZ$gfhJq4`Y zRMt%V?YihM0oc1{_RkE>Slza-K>WiU<{^Vx(^-r`?itFru`4+wv2{jga!BUIIG9Wb z7T<@HLn3<_T1rUO4@sqdwfy&`ggo+1J!^0hU#1kv%|?Bl6w9}Xdd?y@7&%<$Y@4oW zod0HFDd*K%a_QMVcyfN^4~oIHNquk)+y&Qm6;utp0M~+dl|oPTI>CeLyPV3uuv_%i z)mD1|T&S+bmPQ|fKeO68S@-InQCnKt?u$MzZTC5q?@RDetF4}OuYS}SmhlF+l~0<7 zujDcKCec~7GN1Bac<|u1lu3dI!JDJ-!Gr3Xohl#K#qi*D*6jZ_9<2Olc)+|)Wjqxi5TCI?X;`i8)1^{BFx|MfG_2P4;nJ}3TWc+!q}FzU z<)3}gbzSF#FGx~4^r_ca^~65=p2!->`1LwNvKCYGIcNA@du_tf2ELC#H|6Zi`GUNw z&#uES#1~$Pj$h`zTj(8nMpY+F-Ivk6+6S)=-}aC8-7@B81N!)G?iZRb_5mBlOB4R@ zuf>4qTFBg3^l}!w=QVAgeGl1T9b<-vjg9H~tJ4KPs&Z+!%N&W0(&kBX!KE%}ftxd? z0Q%4gzIMJuy-?`dOVBZAO-%>(BIavgd%vS!J=6((+Mi|7^d9HXVu?9rZ+oO3Wi>O~M?W>U+<@v^EkC;NBbzl~qf|b6Eta3^jkLMP?R;}* zG-l3l3{(DdGhf_Usr>w6{5*m&@p2<<_?z+b_>W=AZbwxg@zb;N_oWV3ZA5vuv_0~O zg1_;VCqFU94iCB0tysB#96(ba!ZwYL8A*okl`#==ZCTFzj`<46NMA385 z*gYcTzOv_&nfoWG`ZP%!sJnsR$2lKcUAv%miS09I*L;yPnf@|%eEEuv5Pe=IHEHbg zS+aCNp#aIJbHL# ziXKiap=JVnNWDIam@(ny(%L1?M&t_neEO6c0-r@~YtV{zp_y(?>PI_zr~deS9AFjt zDTS}>laKlhIdkGEZSk?~j>Uf^znJU`TStMv*s1C8Dw2CX7ymnn_xthyHbT*Np%?YQ z-$-ukwyESmh9?yrSpoSxMw9O<37#iVaEUiC(iM?==1!7(#{B>6y$f_yMYi~Tx;u~4 z34y!`0s7>@BOPc-LIMeh={&%YK!AXV-Wf!|SM48dinJcI$3F3gt zOnPo|2h{P22e1?*p9< zE!OQS?H0@aZ;O<+Z*FGqa9mi!wa)#Y8y-YVoM3eI5cUy6@pTO6E^l-FpYoNLBOd*K|HD3h$j^Syjt;_lXL%nOz3OlZcX2O zJR#+(`FH`cXCY^(W^ul0Cg%|44sn@3U*Zg37IDp@I7<{+YS9h=-(#FPI$pwgx_|Bq!oI> z3sZ_(?&N!S^ebwSd3^)lx{K%Luw>f>zLQX4(PH^_##BW+KEwmLQ zt$(4aOZ_&^6`l9P?Ah7w=841?%nnPk9Ul{h>DvYR6-mDynLVJ{jV^a1 zXSgyL%R=BLaji12`#cN{u#eHQpNBgrzaLM4z0K+LbLJ4i7jXlC>B98FmOHY5>oDJW zwi;l(92hUfclOwDrDf&~>`|=l-8^#?>8rh)m)%g*G7tFA2mUkD!9iA0%U#2YTJA0^ zYH@*&d%?#&*A=xa8B)}8IbUgUk1A?G2aF9NzSu#YOT%w;94G%+f<=qJ)uMF+N6!^H z9go7NJ9(z^JUY#!T~E4{@^Lqrv;@*ymzuQi!Z~-p$fPxs9!oH5pDZzH_bxPP!{=GF zy}3EI0l?#?=@xAiu-Q>s;MlVIr_J%Vnze(Reb1d|))I#gvo*c?(`J>pXm_Vrw57nV zjx%pBRTMhp8wphw?WW0Q?J?+L=de86-BZn4kKxyIF|o7d+hI4@1Rme@{!RH_YhT-Y zoMRjn-q*I1^c$X`{QsY+!yQXmp9=j*Y=ehxP#pJ9HaUJV)$G{7?=7rJf5n>gR^(3} zJjk5|EnBsg^2^ZJr_fphXYk$zm#6v0yS-m1zw4X!oLSJ_0_bjGx*0q{d&8i?LUT(E zbhsQkTuSVN!^GLI96~%W##?yZ&(8)3G z3z#Xi!dQf^ghqr`?u2fR^(3#HR3n8p7EeabK|6OtI}4$m8fa$;v{Mc3+*=CWR1~!w zOQkF{bgVxqbaZSGDYSHKFe$XB(v&4wC3_=%IyTM_ufI-!L%{o>}aKLt;{j~!R1@THg%<#w1$2`+FAN~mhW8v zFXy0{f0w%8=6E-yWzY>l+LzQh-qYE#W0Xm|2*1bkT$~i79oL*Km)=(#zhi9O>BBcu z$YWenct3BLNqcFY({ZViJjSpA8Sy*#BzvMsTc#l+1`szs-Av4h8*KlTUf?(l{91@twbo^zJS$iDX|4Co7_N(D(wz?5!&6;%LD;;EaeIO?aH9KY;mcKm9##Uc2Ama$&!?`*mJ zXQxAW;aI-KaSYf>T#F4n?Z95}d<;0&!h@%Py<7Xwa>4nr?#`Ao(9*lwf0cg#4+#E` z#W;2RAL~Xe5@0h(^Om25XTC+w%RbJK^X)mc@QE8fnG2uHgiq$cCwIdq3rgXe3U~zg zRKhcdfgSttI?ZEm)OqDjct-f=FgOujISd{aPv-0^JTwm;s^m=TLinf#9-0piRl`H~ zmcl<3@DBK?gr5#GUb$c4FypL*uMRV|O5rWxP54T9^R9CEZ?f>Cock|BS183!J-XrB zBJ_&X8_^9$p(BhWZl2%I#Nt~!==N0Babi#1MY>z!X<&!4pySBBwRPyV=39z&KksDK zq9xVfN01TJB5O7!*B@^xJBWQ#pI^H8fB)dQp$uQVEs4voWEA_(4dn*J<;wNP<;o6- z%avVBoV2UY=+>~#^67y-pLkg#l(Uuy^gUlnJh#9yf$z3B(igZKMax}NRYF#E5x$sLdXX|(w;>!vBbHQ!%ogLNS5H1e=9N!$PJZ&!Wr zy87yh;QFwPEfuvDChi4R+R|C`+&SIkHSFTp^R{ng-%;7squ#w~SpD;Ij&amu71&bS zx+Eyxh)Bh2tVvD{@Xq~uTrjo@Q~EbI2Q{3)$MP4;%`q2gqi(q=#=bidKLqv%Bhzd< zUrDS##ae4OcU8$*B^)1#sV8R_Lh!vb>Gw#c*%iC2LAIKSOT#)yViIpyUiiqCw}*J* z@gEA09A^7g{5VaDL;NO_xM!+_dBV`k+56cbz9WiV?wyKhM6cb@`r;^WLs){xZZbJ8 z5nJy~vl@=QaKgrq?9B}yr8OT6QzrBX$4|f#d&v70D{(oy(?IYr|vxl?s@6y)Z;I82kt5VL3N}Y3@6B|j}U-ElFTkZSN zd`se6bKQbRQJvnxQ7f8|jh@0?8J@nX*)uChiRyD`M$@z7o%X?pW;GQmUBdevN^Sbg z6y?c2)W50!n<<`W#whj~isJd4GBYXPm-2%T&1~vJxz&^_c=;}p#C4J+h4DDoBoZy)U{A1h4!-#^=W#8GR3h@d%r`KO;Rp1OsVg4D5*)x zjq0V?rDM zQ>Ce^=M~0R!FP%TUTU-_N{R9$9h%;BUoYwNjHU{{U%~hL9!hCSVIMn-GX3fMiUh^( zq#u0_Eo3ayoA%P*q(hlasgx^@SL|{Yd=vZJ;oKN2W-=e3B#4IrA zN$5xRLRS(y|2<%{51JBs8fa3ogvQR|8`F^a!s>4E+x% zpL{5%Ift^du=iEsKl~hZk`66y-b6j2x6RO5f9lPo-e%}b>Ph`K^t##2+0^AOXZEs* z!KT-p)x46rIn*6Yy-|9-uHnWv-=|*RH~V^$5A|>UIrUahFX_;t=1usjJ*POm+0--2 z%6F3w4Q_r}q5UAGB@+6aW{Nzu@>2Vx@n$7l=r4n~2@2m6I?VFZgVYy#OoAR1X`lBd z+K;6D6#8hi|1j{&pbyEE!4B(H_(sy9JLHaVoyMhH(xEKQZAY9sb)kJy0kBS@odMuz z4>&p_a$d^l^|(_-FF&9;hjLxP*?UXoHf;xAU;VB2#Y|JT@D%cQLED1AB2|eh?4m>| z$b>$s;<=B$LEFtMXs92)C@ywnjT!04o;1oa>e zrlg@$5?^t88uXT%YI{{;BIWk89ZTzL+f4kq8zn{!F#+#L&$ML{d+vQ=(`*hP_v!5sr<}QIXr+V9?Er1xMJ(Loxx}?2rrmbF_jA5gPt3bYepm6G6k-!v$g_sjRVdg?l6eYwX7GqD zeMn@GBdb@4BPl4Dv4%RrUDZwY^Csr_URkH{vvMQ5+|UB|ZN)|`M9$n-<4AdMiKEZY z?{W0|^-{+RrY@ds*j_%k>0ZZgKfYIo$rAc6a1ofSVq8xHi+>|8k>AbqX<7JC>=;9A z8GpRjfiQ4<_faqHSDy~iCVx9byLo1V+7xdB=W_#D9F9 z7+B*6WZG_z&CzDOnXNqxPBVuMv!(p{dPm;}Z*Zinh}JA?va}%VYQd~WD<4kMs^U$= zGD@}e4db4l`$jl+ao5N0Sc_I#pwzE}kCN`occ9DYu@+8!?Tgc0c5m$??%gT+9A5&j zl-|4S5jQe(jNDy;e}e4g3G9CZ?6;f3JsX3aj#r2Y{&}3!5n^*X?9lmm#=0;77q0-% z&w!=SsL zf=;+y^uRLi&Pak5XG0&?y*a=WzI%XYjA{;#2v$9V)Ns!_^0(3F@GqCWe~x(9=PhB4 zed+gp`g_0>;W<)YtM|EYqSJ9B_AZfsnef8H#0M?N#r8}eq`yJwzW%$=? zH8Z@AylCsz>rxl^M9$zE=kW)^BhjuoO%oRMp4gRfjSVt~M>3{?$l|@E70hABn75uo zcXD9koc~s)C-Ut~&wf&wzmvF2`KYB!<8sFR8F&nOv%e>FcYn_xRi%EgHN+!(HX&-L z=Q-ZV`Iwh$w86*EFMB`b!^O?1)w7zDmfYUlm$5y^-6X~9g0;;$gyz;GyZEigQeZFfDe*^xdN z`p&j3LRQ2Q<1{CIsBIte;!EVm&AMF4vK@pEW>S|JB#ta-I)>+K=vZtt-y%bf6Z<3b z?IbOeh*<{?q-yVDEBxRueYDqm1#@Sf;y6&QII?>x4ms!Y2XoA+t@zJfP_(S$LB#L* za8YyWhqIc4(~@jADq)`EjO(^K;?u6{tI1p-vB*WY+MtAcey()&+`p^V@y2Vlj)xD_ zI$ksZ9Nz9C-PP~_h0&~qsLUZ9T)ens9s@=uIw!w30{D~WMo-x8Y>W4ki0WX5G; zTq%sp(lM?zN$7O1=Q|GU$#=Z`c)sIxe%G2qPrbv~&~-ht(03(%(J^9(Pg9~#m7SM) zr3jiT2vFXAVuLT{ocK?jX#(3-4?e@+a7EzINk9cioag+K=9_f;02Vhv)% zqq+s(pQG$;1_K`>?}DBepDuML!<(OmsO|yi{jvv(e_PgQ^74aKx5yJ&J8WYAJ{+13 zgFi*Kbm0-XGS}S2GmltV^UdL&$`Ji*l;btz%CX-6XXMIE+sc8jAXl~{R}KeXkt^b3 zF`GMNWv|4|UB6>k%d9}ARat%C4T2B2zounPu(KtJJ>3H4lR{+LbnZXEPeGSYWvpwA zb+2(J`Tqva?buv8!}*v0BAj<$1J2@?BXAb@8nEUJS_hmnp#KT*MI>@r=F%$U*!Sgk zCN!VQ98a7IWVy)iOk}3W@0Gwx=74L#x(pdEYi)tG_&fYFu&$yHh4iVA_58Jr#IH-}TJ(&yv#Xo9tC90w;#;TGr$E!K+*dyuKR?+MHfUJ(cZXrq`tNJxKSaLV zVIa0WHLpy+zd-guFB1P$_J8l>e5YYklC|&(>=JT+d`cF6XPk+UGYC(HIlq(`MN(cZ ze2hCFZCPPO*g^^(t2m7VjGd);*WzSgn%x8P^`88j}|I)Y< zLE^cod`DmsgPf}}MsgQgRD-}T1>H+Ue-=Nf!d>{XL06h7-YvES z_Eoo=Cls;Ynqr%cT#~k{!@7IYzg^A}NaDOH`hC4pSL%4E)60x~1iBD<2oJ8SXf|6t z1B5m#E4-ZT*}e^VQ^FqhR(zz=BMv3fW|o~8C{CX1cBj8nhR^W}v>UG0RY<+9l%HdA z=A}ivnHUD1Tl1B+qy)RI1ij<%Z`f~mI;4U1X7?p(shbH%kKC$-++-2|G z16^*sr@FanNp*7>HaF_&z6Q#l2Q+Jc=3W!45+!=#JIDn&A1J;?M=S}A=kW#jD{`|W z1X@30tM889mFEBd0^^pmusz7b!80q?w7%kJe9QIS)JIgetGTYHGNId_Nn^O@Q_^r{ zLRZpO%d{6=z)-zB^${!OS}jvMeuv5L&@1o5`Q7EuzI)RSvzI96-L}0N*ZjijIQ=fR zjTT@@U&TjOd;ykm4o3WfC2tpdE(PqV)R5QJpC@;Ri{I@c^0vR{cF6hLAbctct?4!s zciL@VeN*%8oX0sH)lIuEu8U?4i_~6TJ-PY#F7#0zIoG_I=QuH5labYh=%|~~bzetj zZ867s-ooBkM; z?VH!$nr2eN?dDutDDB~s84VvV%;KH8x$aigWDOt9yQqM7F9p1-=G}#toGsA-?+>qt z(T+cX9P!src_2np5<;~Q$~=Q_!uGHXTfzM?T49$^?bQu2+DXe#UrY+mcO*rIYE{lq z?N_Nv)FSw0Lm}&=&{YE^ZtthZxQ=#gd4wpeIr!%-VPZLy6m@o$62#V_teHa>0q z{sy0`gZlgUM#-1=M|pP=o<2uk%cwt)2U*kThA!9fL|~H^|G!N|H#IBtQ|{kXh^=e| zUeoZu!#*-;1vcF(o>d=JH$P3e0&u9X-?mWMtFL}O& z#(P;dR6NEvwwSq7ebuyPb40D<_*U7=o7{Z=j1%|Aln@LXq2RWwlK!`%&U`|Hy2HA4nn_Q%eaNkRw%)G zKa%`qlRA~{6Hr#}nUH=t{bik<$`%KdU8M$VPjQD~rN3-tr?R&NlwI8=Snsp+Z{X@_ zI?t-S7ayK<(lVZEp04;!Dx8IsG9pJ5cUrSzcj!L&p}b3bby~B$Z%tGtD1T1V+Yuiq zg?A!XL~jt;BIQKBNPVZj{kV9#DnRJ^`ztUg-xYQ5z z*JrQ7_`aMwJuLP8aw|&-gV?Ri0m4_J4^%I8HND0B z;^Pb7dCnu@oHgTI!(mI$#+`$FXO@m?zP`2%{_fH9gG-ptoNY2se~F*jSKLP_?a90- zZH{IxYv^dRtA0ile<0TLQKvj_$~s^&`^h(<4^2WZn#g@@72L-*f&19Tqw9=A=P74j zdF)(tDc@N({PpFGz+w16V%4YddpG~16P&lN>{p+{evH$9E@1z_@4Eke{_h(^r<41n z0`HQNvnD;z@xVVio~d39RbF0O{8&W{I!`RROC0+~-K}*Me`PFxx0n^vUzfN z;)xSHl(au%OfV&SM0ZKy_hIHy!Q+d-hV{<*qn4;Fg}p1u+eTheh_d}Cuu%@%^t>(P zIXmS&O&)8mtIGWcdDwTZ%KIgGntO1Q=FZNQaV!mG9ZFxWug6J-D2MV&CTp7jtgnvPAz>6@b~#<%2_BcXLCaF z`!m&l#@(z((OVV)uR7qR5_?5-$8h|i1(JS)BOj{>BMnEF??Rn6 z;Q1}jN9a*KDc=iN#$sED!-kN++FbYZM=!627d~S@@e50Li4V|r41Y7l)Waj|@ibs< zb)_{4zpVA^tE$W1WP+bpAY-3meSL(xT|b8&C5~Kgct!=EQtw;nFONG_+nJ-@VVxyD z<6E#9<%1eA4iA61Q(QN}Hw%v`uWfU|z5?B-ilOkxeP=_CI)9I3XjQ4ZD^5wtJ z58{0=<$&YOq101>oweZ-y1jZcX9OAl0|FC^)zkj8k|%4LF2JRyCCr0Qd)o+N9+EV?=pW}u*7DG5ACPX?3v=feR#EgMs`Ch>#Z&9Nyz$B?mJ&g z|5UfVN!FnkED5?jql!5yiSIPRdyBBI)rL415}#1oOm8>GxL1%b?Zu*dE#mt!_Ath7 zC9ba3o!%sE#<;7SCbC|L`C^o}*4)Fr(O)N&I<3f<7?a|y0uJqFlY1BMguWEF>k?yo zIsa1oql?3isicYd6ebOAc zuu}h>w6IeD9kg&|FJ;mLzzI2;UV0=`->?0eINApoyW~sW31smA=ZcD_p)*rtx^2GP zX8=5AKxe7w7iU>F7m)_B4v8pOU$L8cc?Noi3l;AstYZ)D!=gN}F@*x$FOzikKjDgJO_b3eYn zkvUn$C-0(Pe=>1`IVyYy>-QUZzZo0sG3)}bMFwkMTDmoUZo)=GANvqnM&Ky>kYfKO z#`lCLcW0mSATv&agK+vUb4oZgS<2dE&Qr>Mv1dg9Q<+D$Ru8BApz_X^Gu!9fY~Dc{t?T?L%ex+pv4oOvBMsmABQ?ps&ylXdm#XkxL`w#4pEVr?Dr z!j-mIgKzh*!S%AAQC8%FoRu?TpBOxzOsw^%pQkQ-S7K4x_~y%hKc_TU8BecNmA#XM z#suVPEb=}MdEXs*FLGY=z=Y3i^@g0EZ1TzZlgK==XLWt`&`VZ$ z!A|~CWXlO~mj}M!t5a@lo`0KB(C~L;s_={Oiky=byr$RUmvD!&U+$2ReQ{You0-CX zsO+01bI(lmfM(&12=)V>pP=Lk&fR`|i|*ipc7#_f)Kiz4Ch|TCC43=qx5R#vt|I%b z?zAScyL>=g4Uq}rAHrGy-=eGUhyUxWk;v8J2JY3qj6BulD*Mr*(-0?HYwRPoCGe?$ zbNckMHQAXr+JF99c+#4zvBN$^9hu{#jKnZ;Dy-+_o&@sb9Gbir z8`f3tp?k@bc}K6``MtDBo|%4Bq1Pnu>B`#4(uh8DmEV{Fi;a{QSX47+4H$F<1~P8( z{Sw=Jpzj##8DM`UKDCs2mNJ#_LLK)%D@tF^zui!8U$&wm>=tZX_#avEKMKSDNZK^+ zP!PMA*!8OOlno`+QZUiV@X?Cb<`( zt&(_`VlOl9Qjl|XMoc(q*Y&uwZSno+X3z_`*tzI&Vzw|Z|0UiZ|7|bl5uszjm5Vq< z%HdHht~(07f&=0zwUpp%xLDxGeDEf7%#p#e$D=jgwgtWn<1BVJ;=0^n_5v^6X79So z?EMy8;XR_D#tbYK15M+{f8u689zrcOR$kg@R zc`>ZsE^`@W8kH3l4S9J9~W-n*#U!FaLxE5w*=L1>JJSt=d$j0-@ z1?c+=qU9W8+l)A0{2Q@Te!dmIw=7fJM(PW!tk-j=?U{QYt{!3nw%7*0veutmTKS@U zJKdzT)!q;O1b2eN7nLQh-zrPokCXRb<_^C#@TT+Wu4~+}QI%B?Xg@V%_j&2tjKnMU z(+82$we+jA{WS3GnNKIRpf~FGk?1iI#BObzKP$l3OY95W{hD3?jbC7l|INc#bLvJF zw5jL}D>x(XBKCj+URt*5G5OLZ)`1C`AmbO=C+{Ubg2ZZ&_JE-`8907MyArc+IBf^U z9x%?J)s+&X&_`o>JRv31*>=YW&LxrWk~=H-o%VC$Ch-4BXzy+Mm9*Pj{{^t-d^l&+ zyElri`#CzU{T78j<{y;4tfkM=2Y5SYt2gv_e+3?}zUItZi*6w@K!w+}*Oa^?d{fT;t8t7|WPyb>Dc?)O=TKrHcbs)yZQlPw z`mETh+tF2DrhngXE?@46kr;8Jn@*yyi{ZO1FAy^eeL{;;7H(k$+x~%dg6?y4Ofv<2c?Q~QTvg~D5T#6LxUPV_aQB?u4b%9z+t7aOr^JdJz*%L1(`e+*M*5bv zEV1WN^eGc-x#w9g$-Awt|l;9}-d>}RoQW>|e zO{-gF9n`=#G$(Y(HjFq;eos*Ua5>NZvkv1OO2`xf<(@b65+oXT?VJq|m?h(rF1W}JS2hS=oCeQA8|OOt!MCpt+TS{Zb@r?X z*4SNHV|QbX9myIyNSwRuMR)wkDL z8jvS#Cu&W0;uU&NZZ$Q`e7w*LFQ6+Z&|7@^oA?U)))(=_!r}ZX^WU?Blnr9Tkhpe( z=%d6jRF^Ed)EyZQt)};D)a`Y|z3C23N_@Gv^zj3g4I3H1#CLh^5a*x2YtI&b53SQeN_P9;d9>G9q-|NN9|wy*zA1t=-r|;=ADzFNyC)k}o=IHS^_Le7o`$ zbN%PQNzS;7?(`WvcCiRs0&+oksS4V0y;7RDMNx+y2Bz{|p$}Ofx}ZM|8j?6d%G_QP zFE5<{p2mZ(ap0}I;qSA?Hnh%gqUQ(c`h#hpv!xEb-28LShrU**|8M!Fel}!zfhu>9FUXwF#T*>_0F(nIf z(F@uZAitiayoLQb{MVw!lRsfanP*n-F6Hk~KkKV$xtV5XUQx-6+(&ww%cahXq;se@ zmU1z+kn-)+-%s9oo)`GWHoo!ie0Lq+^?hp&9$O*h6+E+g$Cih)@4cW`NcoQ5VdV#S zq|LdsS5AB9`TYpb9@_W~ZS0ly{Oyb_nVWl{ch~ZIp7T5vlM}jS^1Q_Vk)#zN{N`E2 z|B<8>&qj93No;JMXK5gUcV;lc|sO_+OIe}h6}hG-dup<3u< zo{>s(BlyKBy=^wW5Dzf62JYk>XF=bAZdaBB&}{;A8wuU^fo{(~TcP|DbbD(jx?Rs0 z#|4FZ<}nt7Zckg4{pH2idBzrJc#ao1Bj!UZ`$-?>d5K5hJtnA|=L~huGXCGt*9Fk; z*kXt0XQQ1Fr?AiLAeD0K{cY`_jL>j&sWakz-U+>q4eG+#6D6v=c#vlSbo$%`X9Tpj ze@yW}&wl3e|h95$@7HIzy3?oyjheF-J4ln z0gWEq)4x1=?~rm2$rPJXgKOMGyeKj3IkL#071v>quT=dgn8}uo3XxG#8eQzrJ z$8;D39Ul3#20C1FO*))%x~6o>$(sM0bhr(l9HB$g^~$6=`o0!hl-Qy@JnML{DeP0= zyJQphJ%2$ggcHRrYt9t6Z2nT>Aq=z?K!0_9-bzMJTfu1(r9=#PUquno4{LQ zAFPLWH-e_J9Ugc|%GJZOQfFMrAWs*33*V@BMx5u7a{Hr{{V$sO+oZg-_aJq$9(G2Q zl??F6JW;MjcxFaIyLie=;9u_e z-A0{#q#gXr|6@u9dhRC`eigozdE+Md^>u!K{lWI~-@<;9Z;kyK58oOqbR~2m^zqdP&z8p=e73wF zG_oBUx^Yk6a_L9rC#mzI$vY06^oJf6e9~v0&`-wRe&zDLzR-?*W27O|i6tSj&Ivt; zj$!BwrbzZC)@Kn9a3K3^NjA=)>iPp`n0)#JV-)@?gDym0Sn%sw#{}qMGkD(&zQ1BW z?0t!y;tbL<#Gn4P6!2}*1lM=qdliys(OxeJ*8Yf(eDF1J-thPKoEyQp$YarW40${U zzt_1ux;#b)Dn$R8f$p;gy=OBz&ztykicFSxfuie(UCWqP#8x0WP+8xQo@FJca?y46 zud}L8tgAkey8xMJ(6*cRrT#La1J(0Rbe%<{lX&9sCELL7g9lSIk*AUP{C~h1n1#^& zqRGM9di0)5bfC!c5XOr>RLXb(1t%-HTRY4*=IzX( zGUn~@>~{Z{{c})3OCfXZ4CdK2%(0u9UuDd1aaJa9+_Ik&IBwDF=h#Dfj$uBX%eWoZ zh$pr!Iawn*-yA=!uj9SjU#4uzshS=BaX&)3_&W#-8 z*~{;BBL{lMDcwAgQxhhR!IuJ$^TA(Ir-I+xnRCxj{*GRegIAMxfZq@CJCk=in49PR zBw^yaq-Uiao^H$4nDfAOKjp^p|AV9hNxvd*8}s!B(kSR_C+TF)sC3NL@X-F(Q?!Y^ zt6-kaWS-6x8WX+SKTk(8PYc|I?%epi>G0>A?zP}wg$$SjjNrAa=nmb-$7jqFh0GH( zm?zdSPx$C<`6Dt<2%pIuAut!2FS1_v%%Ha$xmOqZ+CR|R<%#u6X3PJ&Ts3HI0`Du3 zBc10FnJ+G~;?w64)*3Re9Dma{e~3KEtO(L>WX_1>%*yfNVC}e*xnxX;uABTb^p-&% zg_cC_8RO|J^ZHRnBn+&K>#X z;r>qYFw|zzjw26`B?N0B;7sr(zBAXv7xSUmN(`GoS|8meKupZ<+XOb+lu4g*7w{3% z65>y&yNlaGxCi}uGpEuURdtygP=dlM{b$xdL{4o&T2-I)Kl4t0~V|X_Jeh}TZ z5#9Cy_{I%Sq?30${4kpT`;p#<&-m@JA=+l>BN(`eP3%G7X6UCPXF7CL;KruyHTx-N zQKX;g$;f_mZqc{(buxXjlPCQ#boEmD)}7o(OLsb7d50-PsU8LKY;nfFBgi*72qh^nfb z|Fo8guawN)GB&|WQO)dTcq*zGor7;JFNEI2KZx&4Em~*6mpVu*geJ__&@J8~Zkwz% z4EitOe7=0!zT;~C>7f7K*a9eT$VZ+2>7UTQ#5A}T-OHY|K~K`(k@QpOXw($^Mfr_9 znJTo4%$#~P{X!4;eO!|s(1}DQb@YpUQ_*wveo34i;3jsVf2Cid-$=hkmz>CzevS0= zl*R>pX~U}J}EvcSAO@vr#=7H_)32d(~`vZaH+2@o!j*j*nvcK%>%PvJb*qM)3`qvD3)Nw;&>!91YJkz1I za+f<-ct!ZAti+wmJlQ7eMr=%N<6LudIZq!YHpSbpTgp1o&3l7?p6MM@E_T#cc~|b5 zlk4N9Il00|Tj2pID>lnD*eb^awDlSFUL|ieHpv;261qJ@Dm*nKD52XLehY6sM7uMv z2dyEmgU96eHTX=v)4^wLem;X`e zPi`L3>t^#!;WMF&&h#npPvg9$(5c9;g?_lpnCA1G!A?F0AHTUvw85uLU0GY7&K+BF zCU*vXT3|}Gy~ej6VxCgduVSj?MYkGW-+>yv~^o#i1sXX1dk($Yc?Y`RJ)Jg zbNJR9q!00(JLr?(b1d~lA6duuCNkHru-~B^|!@nqN5vQkg*x#Sc43l z!BasSGDp776UkZrNt_**Zx?e0^%?4p>|t`OCjBGN{b7S`YZ!k`Zr@r_|}LGoPFMd@iv& z0{L9}SdP88gU^cxcwWIKd>fDOyU?ZZd|6P0N9T8J!qc($%DnjuslZXntTyINu>s3? zvD-d1!5J|_=1tOfz@N;UQeL+cQ|2kZeRmD%4B>Gkoi;EG5C6|!Pmz8iCs1jANpC>K)$XyS)=ncw$=X?U-LbE-jVP9t9;E`bnKKf zHP__pDQ9bBt@?v}&HHQebq(!Zi?3;`oI3xn_?mjxn7f<_kLX9-*hs>k!e$ zs-ge%0DOyB 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