From 99bb3abd3d0f4bfc2702a6056fadefaa5ea4150f Mon Sep 17 00:00:00 2001 From: xiongcz Date: Fri, 6 Jun 2025 11:48:03 +0800 Subject: [PATCH] first commit --- .gitattributes | 63 + .gitignore | 340 + README.MD | 454 + connor_erp_mes.sln | 31 + .../IntegrationEntrySoapBinding.nsmap | 11 + connor_erp_mes/QF_Delete_TCM.cpp | 46 + connor_erp_mes/QF_ERP_wl.cpp | 4203 +++ connor_erp_mes/QF_SendTo_CRM.cxx | 305 + connor_erp_mes/connor_erp_mes.cpp | 180 + connor_erp_mes/connor_erp_mes.h | 27 + connor_erp_mes/connor_erp_mes.vcxproj | 178 + connor_erp_mes/connor_erp_mes.vcxproj.filters | 107 + connor_erp_mes/connor_send_envelop.cpp | 41 + connor_erp_mes/cross.h | 2643 ++ connor_erp_mes/crossC.cpp | 9371 +++++++ connor_erp_mes/crossClient.cpp | 988 + connor_erp_mes/crossH.h | 5647 ++++ connor_erp_mes/crossStub.h | 2106 ++ connor_erp_mes/kutil.cpp | 843 + connor_erp_mes/kutil.h | 93 + connor_erp_mes/md5.cpp | 273 + connor_erp_mes/md5.h | 137 + connor_erp_mes/plugin.c | 97 + connor_erp_mes/plugin.h | 27 + connor_erp_mes/stdsoap2.cpp | 22947 ++++++++++++++++ connor_erp_mes/stdsoap2.h | 3720 +++ connor_erp_mes/tinystr.cpp | 111 + connor_erp_mes/tinystr.h | 305 + connor_erp_mes/tinyxml.cpp | 1886 ++ connor_erp_mes/tinyxml.h | 1805 ++ connor_erp_mes/tinyxmlerror.cpp | 52 + connor_erp_mes/tinyxmlparser.cpp | 1638 ++ libxl.dll | Bin 0 -> 8850032 bytes 33 files changed, 60675 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 README.MD create mode 100644 connor_erp_mes.sln create mode 100644 connor_erp_mes/IntegrationEntrySoapBinding.nsmap create mode 100644 connor_erp_mes/QF_Delete_TCM.cpp create mode 100644 connor_erp_mes/QF_ERP_wl.cpp create mode 100644 connor_erp_mes/QF_SendTo_CRM.cxx create mode 100644 connor_erp_mes/connor_erp_mes.cpp create mode 100644 connor_erp_mes/connor_erp_mes.h create mode 100644 connor_erp_mes/connor_erp_mes.vcxproj create mode 100644 connor_erp_mes/connor_erp_mes.vcxproj.filters create mode 100644 connor_erp_mes/connor_send_envelop.cpp create mode 100644 connor_erp_mes/cross.h create mode 100644 connor_erp_mes/crossC.cpp create mode 100644 connor_erp_mes/crossClient.cpp create mode 100644 connor_erp_mes/crossH.h create mode 100644 connor_erp_mes/crossStub.h create mode 100644 connor_erp_mes/kutil.cpp create mode 100644 connor_erp_mes/kutil.h create mode 100644 connor_erp_mes/md5.cpp create mode 100644 connor_erp_mes/md5.h create mode 100644 connor_erp_mes/plugin.c create mode 100644 connor_erp_mes/plugin.h create mode 100644 connor_erp_mes/stdsoap2.cpp create mode 100644 connor_erp_mes/stdsoap2.h create mode 100644 connor_erp_mes/tinystr.cpp create mode 100644 connor_erp_mes/tinystr.h create mode 100644 connor_erp_mes/tinyxml.cpp create mode 100644 connor_erp_mes/tinyxml.h create mode 100644 connor_erp_mes/tinyxmlerror.cpp create mode 100644 connor_erp_mes/tinyxmlparser.cpp create mode 100644 libxl.dll diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1ff0c42 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,63 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text=auto + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +#*.cs diff=csharp + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +#*.sln merge=binary +#*.csproj merge=binary +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +#*.jpg binary +#*.png binary +#*.gif binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4ce6fdd --- /dev/null +++ b/.gitignore @@ -0,0 +1,340 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- Backup*.rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb \ No newline at end of file diff --git a/README.MD b/README.MD new file mode 100644 index 0000000..1c956aa --- /dev/null +++ b/README.MD @@ -0,0 +1,454 @@ +# PLM与E10接口 + +物料接口 Action Handler: QF_ERP_wl + +BOM接口 Action Handler: QF_ERP_BOM + +日志位置:`%TEMP%/tc_用户id/QF_ERP_wl_20210525.txt` 和 `%TEMP%/tc_用户id/QF_ERP_BOM_20210525.txt` + +### 参数: + +```text +-bypass: 配置后开启旁路执行 +``` + +### 首选项: + +全部首选项都是多值、站点 + +#### 1. 物料接口 + +> Connor_ERP_wl: +> +> ```text +> 配置host, service, parameter标签信息 +> ``` +> +> Connor_ERP_wl_gi: +> +> ```text +> 配置下的field标签信息 +> ``` +> +> Connor_ERP_wl_pli +> +> ```text +> 配置下的field标签信息 +> ``` + +#### 2. BOM接口 + +> Connor_ERP_BOM: +> +> ```text +> 配置host, service, parameter标签信息 +> ``` +> +> Connor_ERP_BOM_parent: +> +> ```text +> 配置下的field标签信息,导出对象是BOM父行 +> ``` +> +> Connor_ERP_BOM_child +> +> ```text +> 配置下的field标签信息,导出对象是BOM子行 +> ``` +> +> Connor_ERP_BOM_parent_zizhi: +> +> ```text +> 配置下的field标签信息,导出对象是底层自制件 +> ``` +> +> Connor_ERP_BOM_child_zizhi +> +> ```text +> 配置下的field标签信息,导出对象是自制件下的原材料 +> ``` +> + +### 首选项格式: + +首选项格式分两类,一种是host,、service、parameter标签的信息;另一种是field标签的信息 + +#### 1. host、service和parameter配置 + +**相关首选项** + +> Connor_ERP_wl +> +> Connor_ERP_BOM + +**格式** + +```text +首选项共13行 +第1行为调用的webservice地址 +第2行是host标签中prod属性的值 +第3行是host标签中ver属性的值 +第4行是host标签中ip属性的值 +第5行是host标签中lang属性的值 +第6行是host标签中acct属性的值 +第7行是service标签中prod属性的值 +第8行是service标签中name属性的值 +第9行是service标签中ip属性的值 +第10行是key为productName的parameter标签的值 +第11行是key为templateName的parameter标签的值 +第12行是host标签中id属性的值 +第13行是service标签中id属性的值 +``` + +**示例** + +```text +http://192.168.8.115:9999/IntegrationEntry +XThirdParty +1.0 +127.0.0.1 +zh_CN +dcms +E10 +GROUP_ITEM.ImportData +192.168.11.17 +XThirdParty +GROUP_ITEM.I01 +``` + +#### 2. field配置 + +**相关首选项** + +> Connor_ERP_wl_gi +> +> Connor_ERP_wl_pli +> +> Connor_ERP_BOM_parent +> +> Connor_ERP_BOM_child + +**格式** + +```text +总体格式为“ERP字段名称=ERP字段类型=属性提取配置” +写入到xml中后的结果为“属性提取配置获得的值” +``` + +**属性提取配置** + +属性提取配置分为三种类型:固定值,非引用属性,引用属性 + +2.1 固定值 + +```text +格式:直接配置需要填写的值,注意不能包含点“.” +示例:itemcode=string=零组件ID +``` + +2.2 非引用属性 + +``` +格式:属性位置.属性名称 +属性位置:包含bom、item、rev、form,分别对应bom行、对象、版本、版本表单 +特殊属性位置:pbom、prev,对部分BOM子行配置适用,用于提取父项信息,如Connor_ERP_BOM_child、Connor_ERP_BOM_child_zizhi +属性名称:属性真实名称 +示例:ITEM_CODE=string=item.item_id + +工艺属性位置增加:rawitem、rawrev、rawform,分别对应原材料的对象、版本、版本表单 +原材料提取逻辑:获取自制零件的原材料信息;如果工艺的关联(IMAN_METarget) +目标类型为QF8PartRevision且表单属性qf8laiyuan为自制,则获取其QF8SCXXrelation关系下QF8RawMaterialsRevision类型对象的信息 +``` + +2.3 引用属性 + +```text +格式:属性位置.引用属性名称.非引用属性名称 +通过引用属性名称获取到引用的对象,再通过非引用属性名称提取引用对象的属性 +示例:Datasets=string=rev.IMAN_specification.object_name +``` + +**特殊配置** + +2.4 替换通过属性提取配置获取的值 + +```text +在以上配置行的后面添加内容:“:属性值1=替换值1;属性值2=替换值2” +如果需要配置默认值,可以配置“default=默认值”,当属性值获取为空时,将数据替换成默认值 +如果需要把所有值替换,可以配置“*=替换值”,当属性值获取不为空时,将数据进行替换 +``` + +2.5 分割属性值 + +```text +对获取并替换后的值进行分割,在erp字段名称后追加配置 +格式:“erp字段名称@@分割字符@@数据索引”,数据索引从零开始 +示例:“分母@@/@@1=string=item.object_desc”,取对象描述的值用“/”分割后的第二个值 +``` + +2.6 特殊属性名称 + +```text +ICS: (大写)填写当前提取位置的分类id,示例:ERP字段=string=rev.ICS +ICSORTYPE: (大写)填写当前提取位置的分类id,如果未分类则取其类型名称,示例:ERP字段=string=rev.ICSORTYPE +UID: (大写)填写当前提取位置的uid,示例:ERP字段=string=item.UID +``` + +2.7 提取字符串属性的显示值 + +```text +字符串类型的属性默认提取真实值,如果需要提取显示值,在erp字段名称前加“$” +示例:$对象显示类型=string=item.object_type +``` + +2.8 属性拼接配置 + +```text +连续配置的ERP字段名称会被自动拼接 +``` + +**示例** + +```text +$ERP字段=ERP类型=ITEM.object_type +ITEM_CODE=string=item.item_id +ITEM_NAME=string=item.object_name +ITEM_SPECIFICATION=string=form.qf8xhgg +FEATURE_GROUP_CODE=string=rev.ICS +UNIT_CODE=string=form.qf8mrdw +UDF021=string=rev.item_revision_id +DRAWING_NO=string=form.qf8th +UDF022=string=拼接到前面 +UDF022=string=form.qf8ywmc +UDF022=string=拼接到后面 +SHORTCUT=string=form.qf8jbm +UDF023=string=form.qf8cl +LIFECYCLE_CODE=string=form.qf8cpjd +UDF024=string=form.qf8gzjsx +UDF025=string=form.qf8sfbj +UDF026=string=rev.release_status_list.object_string:TCM 已发布=通用 +PLM_DATAKEY=string=rev.UID +分子@@/@@0=string=item.object_desc +分母@@/@@1=string=item.object_desc +``` + + + +# PLM与MES接口 + +接口 Action Handler: QF_ERP_BOP + +日志位置:`%TEMP%/tc_用户id/QF_ERP_BOP_20210525.txt` + +### 参数: + +```text +-bypass: 配置后开启旁路执行 +``` + +### 首选项: + +全部首选项都是多值、站点 + +#### 1. 物料接口 + +> Connor_MES_wl: +> +> ```text +> 配置host, service等标签信息 +> ``` +> +> Connor_MES_wl_data: +> +> ```text +> 配置下的field标签信息 +> ``` + +#### 2. BOP接口 + +> Connor_MES_BOP: +> +> ```text +> 配置host, service等标签信息 +> ``` +> +> Connor_MES_BOP_parent: +> +> ```text +> 配置下的field标签信息,导出对象是BOM父行 +> ``` +> +> Connor_MES_BOP_opstaiton_detail +> +> ```text +> 配置下的field标签信息,导出对象是工序行 +> ``` +> +> Connor_MES_BOP_opresource_detail +> +> ```text +> 配置下的field标签信息,导出对象是工艺资源行 +> ``` +> +> Connor_MES_BOP_opsup_detail +> +> ```text +> 配置下的field标签信息,导出对象是工艺辅料行 +> ``` +> +> Connor_MES_BOP_material_detail +> +> ```text +> 配置下的field标签信息,导出对象是材料行 +> +> 20220304:修改为原材料,只有一个,提取逻辑见属性位置 +> ``` + +#### 3. 文件 + +> 首选项:QF_PLM_MES_FILE +> +> 需要两行数据 +> +> 第一行:传到接口中的地址前缀 +> +> 第二行:本地文件夹路径 +> +> 注意路径后需要添加“\” +> +> 示例: +> +> ```text +> \\192.168.1.106\autocode\ +> C:\autocode\ +> ``` + +### 首选项格式: + +首选项格式分两类,一种是host,、service等标签的信息;另一种是field标签的信息 + +#### 1. host、service配置 + +**相关首选项** + +> Connor_MES_wl +> +> Connor_MES_BOP + +**格式** + +```text +物料首选项共10行,bom首选项共13行 +第1行为调用的webservice地址 +第2行是host标签中prod属性的值 +第3行是host标签中ver属性的值 +第4行是host标签中ip属性的值 +第5行是host标签中id属性的值 +第6行是host标签中acct属性的值 +第7行是service标签中prod属性的值 +第8行是service标签中ip属性的值 +第9行是service标签中id属性的值 +第10行是service标签中name属性的值 + +以下是Connor_MES_wl首选项需要额外添加的配置 + +第11行是name为EntId的datakey标签的值 +第12行是name为CompanyId的datakey标签的值 +第13行是name为item_no的datakey标签的值 +``` + +**示例** + +```text +http://192.168.8.115:9999/IntegrationEntry +OTHER +1.0 +127.0.0.1 +TEST +user01 +MES +192.168.11.17 +sMESPROD +item.create +01 +01 +MO-21030404-4 +``` + +#### 2. field配置 + +**相关首选项** + +> Connor_MES_wl_data +> +> Connor_MES_BOP_opstaiton_detail +> +> Connor_MES_BOP_opresource_detail +> +> Connor_MES_BOP_opsup_detail +> +> Connor_MES_BOP_material_detail + +**格式** + +```text +总体格式为“ERP字段名称=ERP字段类型=属性提取配置” +写入到xml中后的结果为“属性提取配置获得的值” +``` + +**属性提取配置** + +属性提取配置分为三种类型:固定值,非引用属性,引用属性 + +2.1 固定值 + +```text +格式:直接配置需要填写的值,注意不能包含点“.” +示例:itemcode=string=零组件ID +``` + +2.2 非引用属性 + +``` +格式:属性位置.属性名称 +属性位置:包含bom、item、rev、form,分别对应bom行、对象、版本、版本表单 +属性名称:属性真实名称 +示例:ITEM_CODE=string=item.item_id +``` + +2.3 引用属性 + +```text +格式:属性位置.引用属性名称.非引用属性名称通过引用属性名称获取到引用的对象,再通过非引用属性名称提取引用对象的属性示例:Datasets=string=rev.IMAN_specification.object_name +``` + +**特殊配置** + +2.4 替换通过属性提取配置获取的值 + +```text +在以上配置行的后面添加内容:“:属性值1=替换值1;属性值2=替换值2”如果需要配置默认值,可以配置“default=默认值”,当属性值获取为空时,将数据替换成默认值如果需要把所有值替换,可以配置“*=替换值”,当属性值获取不为空时,将数据进行替换 +``` + +2.5 分割属性值 + +```text +对获取并替换后的值进行分割,在erp字段名称后追加配置格式:“erp字段名称@@分割字符@@数据索引”,数据索引从零开始示例:“分母@@/@@1=string=item.object_desc”,取对象描述的值用“/”分割后的第二个值 +``` + +2.6 特殊属性名称 + +```text +ICS: (大写)填写当前提取位置的分类id,示例:ERP字段=string=rev.ICSUID: (大写)填写当前提取位置的uid,示例:ERP字段=string=item.UID +ICSNAME:(大写)填写当前提取位置的分类名称 +GCBH:(大写)从当前提取位置的IMAN_MEWorkArea关系查找工厂编号 +本站工艺和下站工艺在代码中处理,但仍需要进行配置 +GWBM:(大写)从当前提取位置的子行查找工位编码,即需要配置为 ERP字段名称=string=bom.GWBM +GWMC:(大写)从当前提取位置的子行查找工位名称,即需要配置为 ERP字段名称=string=bom.GWMC +``` + +2.7 提取字符串属性的显示值 + +```text +字符串类型的属性默认提取真实值,如果需要提取显示值,在erp字段名称前加“$”示例:$对象显示类型=string=item.object_type +``` \ No newline at end of file diff --git a/connor_erp_mes.sln b/connor_erp_mes.sln new file mode 100644 index 0000000..02af0e4 --- /dev/null +++ b/connor_erp_mes.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30804.86 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "connor_erp_mes", "connor_erp_mes\connor_erp_mes.vcxproj", "{FDAD31DA-C4B8-4B1E-AB61-4F2F37E068CF}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {FDAD31DA-C4B8-4B1E-AB61-4F2F37E068CF}.Debug|x64.ActiveCfg = Release|x64 + {FDAD31DA-C4B8-4B1E-AB61-4F2F37E068CF}.Debug|x64.Build.0 = Release|x64 + {FDAD31DA-C4B8-4B1E-AB61-4F2F37E068CF}.Debug|x86.ActiveCfg = Release|x64 + {FDAD31DA-C4B8-4B1E-AB61-4F2F37E068CF}.Debug|x86.Build.0 = Release|x64 + {FDAD31DA-C4B8-4B1E-AB61-4F2F37E068CF}.Release|x64.ActiveCfg = Release|x64 + {FDAD31DA-C4B8-4B1E-AB61-4F2F37E068CF}.Release|x64.Build.0 = Release|x64 + {FDAD31DA-C4B8-4B1E-AB61-4F2F37E068CF}.Release|x86.ActiveCfg = Release|Win32 + {FDAD31DA-C4B8-4B1E-AB61-4F2F37E068CF}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {175C518A-4D6B-4BE4-A07D-F7B6FF607A66} + EndGlobalSection +EndGlobal diff --git a/connor_erp_mes/IntegrationEntrySoapBinding.nsmap b/connor_erp_mes/IntegrationEntrySoapBinding.nsmap new file mode 100644 index 0000000..7a1035f --- /dev/null +++ b/connor_erp_mes/IntegrationEntrySoapBinding.nsmap @@ -0,0 +1,11 @@ + +#include "stdsoap2.h" +/* This defines the global XML namespaces[] table to #include and compile */ +SOAP_NMAC struct Namespace namespaces[] = { + { "SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://www.w3.org/*/soap-envelope", NULL }, + { "SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/", "http://www.w3.org/*/soap-encoding", NULL }, + { "xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance", NULL }, + { "xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*/XMLSchema", NULL }, + { "WS1", "http://entry.serviceengine.cross.digiwin.com", NULL, NULL }, + { NULL, NULL, NULL, NULL} + }; diff --git a/connor_erp_mes/QF_Delete_TCM.cpp b/connor_erp_mes/QF_Delete_TCM.cpp new file mode 100644 index 0000000..b4b5b2f --- /dev/null +++ b/connor_erp_mes/QF_Delete_TCM.cpp @@ -0,0 +1,46 @@ +#include "connor_erp_mes.h" +#include +#include + +int QF_Delete_TCM(EPM_action_message_t msg) { + ResultStatus s; + int ifail = ITK_ok, attachment_cnt = 0; + tag_t root_task = NULLTAG, * attachment_tags = NULL; + char* object_string = NULL, * object_type = NULL; + if (msg.task == NULLTAG) { + goto end; + } + printf("QF_Delete_TCM\n"); + try { + set_bypass(true); + s = EPM_ask_root_task(msg.task, &root_task); + s = EPM_ask_attachments(root_task, EPM_target_attachment, &attachment_cnt, &attachment_tags); + printf("Target Count: %d\n", attachment_cnt); + for (int i = 0; i < attachment_cnt; i++) { + DOFREE(object_string); + DOFREE(object_type); + tag_t target = attachment_tags[i]; + int releaseFlag = 0; + s = AOM_ask_value_string(target, "object_string", &object_string); + s = WSOM_ask_object_type2(target, &object_type); + s = EPM_ask_if_released(target, &releaseFlag); + printf("%d. %s [%s] > %d\n", i + 1, object_string, object_type, releaseFlag); + if (releaseFlag == 1) { + printf(">> Remove\n"); + s = EPM_remove_attachments(root_task, 1, &target); + } + } + } + catch (const IFail& ex) { + ifail = ex.ifail(); + cout << ex.getMessage() << endl; + cout << "error " << ex.ifail() << endl; + } +end: + DOFREE(object_string); + DOFREE(object_type); + DOFREE(attachment_tags); + set_bypass(false); + printf("Finish [%d]\n", ifail); + return ifail; +} \ No newline at end of file diff --git a/connor_erp_mes/QF_ERP_wl.cpp b/connor_erp_mes/QF_ERP_wl.cpp new file mode 100644 index 0000000..7a06d16 --- /dev/null +++ b/connor_erp_mes/QF_ERP_wl.cpp @@ -0,0 +1,4203 @@ +#pragma warning (disable: 4996) +/** +=============================================================================== +Copyright (c) 2012-2024 CONNOR Ltd. +Unpublished - All Rights Reserved +=============================================================================== +File description: + + +Ҫܣ + +=============================================================================== +DATE Name Description of Change + +2024-01-16 Ȫ modify ܹʱֶΣ޸Ĵݲֿ߼޸IJȡֵ + +=============================================================================== +*/ +#include "connor_erp_mes.h" +#include "tinyxml.h" +#include "tinystr.h" +#include "ics/ics.h" +#include "libxl.h" +#include +#define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING +#include + +#define ITK_err 919031 +#define TYPE_REV "ItemRevision" + +#define PREF_ERP_WL "Connor_ERP_wl" +#define PREF_ERP_WL_GI "Connor_ERP_wl_gi" +#define PREF_ERP_WL_PLI "Connor_ERP_wl_pli" + +#define PREF_ERP_BOM "Connor_ERP_BOM" +#define PREF_ERP_BOM_PARENT "Connor_ERP_BOM_parent" +#define PREF_ERP_BOM_CHILD "Connor_ERP_BOM_child" +#define PREF_ERP_BOM_PARENT_ZZ "Connor_ERP_BOM_parent_zizhi" +#define PREF_ERP_BOM_CHILD_ZZ "Connor_ERP_BOM_child_zizhi" + +#define PREF_MES_WL "Connor_MES_wl" +#define PREF_MES_WL_DATA "Connor_MES_wl_data" + +#define PREF_MES_BOM "Connor_MES_BOP" +#define PREF_MES_BOM_PARENT "Connor_MES_BOP_parent" +#define PREF_MES_BOM_CHILD1 "Connor_MES_BOP_opstaiton_detail" +#define PREF_MES_BOM_CHILD2 "Connor_MES_BOP_opresource_detail" +#define PREF_MES_BOM_CHILD3 "Connor_MES_BOP_opsup_detail" +#define PREF_MES_BOM_CHILD4 "Connor_MES_BOP_material_detail" +#define IMAN_MASTER_FORM_REV "IMAN_master_form_rev" +#define IMAN_SPECIFICATION "IMAN_specification" +#define PDF_REFERENCE "PDF_Reference" +#define JTPART "JTPART" +#define MESTATIONREVISION "MEStationRevision" +#define OBJECT_NAME "object_name" +#define BL_REVISION "bl_revision" +#define QF8SFWW "QF8sfww" +#define ITEM_ID "item_id" +#define QF8CLYL "qf8clyl" +#define QF8GXBM "qf8gxbm" +#define QF8LAIYUAN "qf8laiyuan" +#define ZIZHI "" +#define XUSHE "" +#define CK1001 "1001" +#define CK1002 "1002" +#define CK1003 "1003" +#define WAIGOU "⹺" +#define QF8JGGS "qf8jggs" +#define QF8ZBGS "qf8zbgs" +#define QF8ZGS "qf8zgs" +#define OBJECT_TYPE "object_type" +#define BL_LINE_OBJECT "bl_line_object" +#define STRUCTURE_REVISIONS "structure_revisions" +#define QF8GXREVISION "QF8gxRevision" +#define QF8GYREVISION "QF8gyRevision" + +#define QF8BOPRELATION "QF8BOPrelation" +#define STANDARD_MACHINE_HOUR "STANDARD_MACHINE_HOUR" +#define FIXED_LEAD_TIME_M "FIXED_LEAD_TIME_M" +#define INBOUND_WAREHOUSE_CODE "INBOUND_WAREHOUSE_CODE" +#define OUTBOUND_WAREHOUSE_CODE "OUTBOUND_WAREHOUSE_CODE" + +#define PREF_FTP_PATH "QF_PLM_MES_FILE" +#include +#include "crossStub.h" +#include "IntegrationEntrySoapBinding.nsmap" +#include "plugin.h" +#include "md5.h" +#include "crossH.h" + +#include +#include +#include +#include + +using namespace libxl; +string ftp_dir; +string local_dir; + +string str2md5(string str) { + return MD5(str).toStr(); +} + + +typedef struct { + bool isDisplayValue; + string type; + string erp; + //string child_line_type; + string prop_loc; + string prop_name; + string sub_prop_name; + string text_value; + string splitter; + int split_index; + map replace_map; +} ERP_Config; + +int get_child_line(tag_t pline, string cline_types, vector& cline) { + int ifail = ITK_ok, child_cnt = 0; + tag_t* child_lines = NULL; + bool is_exclude = false; + vector types; + char* object_type = NULL, * object_string = NULL; + if (cline_types.find('!') == 0) { + is_exclude = true; + Split(cline_types.substr(1), ";", types); + } + else { + Split(cline_types, ";", types); + } + if (types.size() == 0 || pline == NULLTAG) { + goto end; + } + ITKCALL(ifail = BOM_line_ask_child_lines(pline, &child_cnt, &child_lines)); + ITKCALL(ifail = AOM_ask_value_string(pline, "object_string", &object_string)); + //WriteLog(debug, "ȡ[%d]%s [%s]",child_cnt, object_string, cline_types.c_str()); + if (child_cnt == 0) { + goto end; + } + for (int i = 0; i < child_cnt; i++) { + DOFREE(object_string); + DOFREE(object_type); + tag_t cline_tag = child_lines[i], citem_tag = NULLTAG; + ITKCALL(ifail = AOM_ask_value_tag(cline_tag, "bl_item", &citem_tag)); + if (ifail != ITK_ok) { + continue; + } + ITKCALL(ifail = AOM_ask_value_string(citem_tag, "object_string", &object_string)); + ITKCALL(ifail = WSOM_ask_object_type2(citem_tag, &object_type)); + //WriteLog(debug, "%d. %s [%s]", i+1, object_string, object_type); + if (inArray(types, object_type)) { + if (!is_exclude) { + cline.push_back(cline_tag); + } + } + else { + if (is_exclude) { + cline.push_back(cline_tag); + } + } + } + //WriteLog(debug, "ȡ"); +end: + DOFREE(object_string); + DOFREE(object_type); + DOFREE(child_lines); + return ifail; +} +int set_xml_value(TiXmlElement* node, const char* value) { + TiXmlText* txt = new TiXmlText(G2U(value)); + node->LinkEndChild(txt); + return ITK_ok; +} + +/* +*ȡǰʱ +*/ +void get_current_time(char *date_time) +{ + time_t the_time; + struct tm *time_ptr; + char *time_format = "%Y-%m-%d-%H-%M-%S"; + + the_time = time((time_t *)0); + time_ptr = localtime(&the_time); + strftime(date_time, 128, time_format, time_ptr); +} +void WcharToString(string& szDst, const wchar_t* wchar) +{ + DWORD dwNum = WideCharToMultiByte(CP_OEMCP, NULL, wchar, -1, NULL, 0, NULL, FALSE); + char* psText; + psText = new char[dwNum]; + WideCharToMultiByte(CP_OEMCP, NULL, wchar, -1, psText, dwNum, NULL, FALSE); + szDst = psText; + delete[]psText; +} +//Ҫʹwchar_t*delete[]ͷڴ +wchar_t* StringToWchar(const string& pKey) +{ + const char* pCStrKey = pKey.c_str(); + //һε÷תַȣȷΪwchar_t*ٶڴռ + int pSize = MultiByteToWideChar(CP_OEMCP, 0, pCStrKey, strlen(pCStrKey) + 1, NULL, 0); + wchar_t* pWCStrKey = new wchar_t[pSize]; + //ڶεýַֽת˫ַֽ + MultiByteToWideChar(CP_OEMCP, 0, pCStrKey, strlen(pCStrKey) + 1, pWCStrKey, pSize); + return pWCStrKey; +} +/* +*ȡexcel +*/ +void readExcel(TiXmlElement* qcitem_detail, int &seqNum, tag_t excelTag, string ext) { + cout << "ʼȡexcel" << endl; + char current_date_time_str[128 + 1] = { "\0" }; + get_current_time(current_date_time_str); + string time_now = current_date_time_str; + int ifail = 0; + //ȡϵͳtempĿ¼ + char *temp_dir = getenv("temp");//û· + char output_file_pdf1_temp[SS_MAXPATHLEN] = ""; + strcpy(output_file_pdf1_temp, temp_dir); + strcat(output_file_pdf1_temp, "\\jyxxb"); + strcat(output_file_pdf1_temp, time_now.c_str()); + strcat(output_file_pdf1_temp, ".xlsx"); + //cout << "ļ·----------" << time_now << endl; + if (access(output_file_pdf1_temp, 0) == 0) {// + + remove(output_file_pdf1_temp); + } + ifail = AE_export_named_ref(excelTag, "excel", output_file_pdf1_temp); + wstringstream excel_path; + // excel_path<<"C:\\TEMP\\export_text.xls"; + cout << "ʼȡ" << endl; + excel_path << output_file_pdf1_temp; + cout << "ʼȡ2" << endl; + Sheet* sheet0 = NULL;//Դ + Sheet* sheet = NULL;//ڶյϢ + Book* book = nullptr; + if (strcmp(ext.c_str(), "xlsx") == 0) + { + book = xlCreateXMLBook(); + } + book->setKey(L"Halil Kural", L"windows-2723210a07c4e90162b26966a8jcdboe");//˸ÿ⣬Ӧkeyûй + if (book->load(excel_path.str().c_str())) + { + sheet0 = book->getSheet(0);//õ1sheetҳ + sheet = book->getSheet(1);//õ2sheetҳ + int firstRow = sheet->firstRow(); + int lastRow = sheet->lastRow(); + int firstCol = sheet->firstCol(); + int lastCol = sheet->lastCol(); + map ChecktypeMap;//żĿƺͼmap + map Qcitem_noMap;//żĿƺͼĿŵmap + if (sheet) + { + + cout << "ʼȡοҳ" << endl; + cout <<"firstRow"<< firstRow << endl; + cout <<"lastRow"<< lastRow << endl; + cout <<"firstCol"<< firstCol << endl; + cout <<"lastCol"<< lastCol<< endl; + for (int row = 2; row < lastRow; row++) + { + string Qcitem_name = "";//A+B Ŀ + string Checktype = "";//E + string Qcitem_no = "";//D Ŀ + for (int c = firstCol; c < lastCol; c++) + { + if (c != 1 && c != 2 && c != 4 && c != 5) { + continue; + } + double db = 0; + const wchar_t* wstr ; + CellType t = sheet->cellType(row, c); + string value = ""; + switch (t) + { + case libxl::CELLTYPE_EMPTY: + break; + case libxl::CELLTYPE_NUMBER: + db = sheet->readNum(row, c); + break; + case libxl::CELLTYPE_STRING: + wstr = sheet->readStr(row, c); + if (wstr != NULL) { + WcharToString(value, wstr); + + std::cout << value << "\n"; + + if (c == 1 || c == 2) { + Qcitem_name = Qcitem_name + value; + } + else if (c == 4) { + Qcitem_no = value; + } + else if (c == 5) { + Checktype = value; + } + + } + break; + /* case libxl::CELLTYPE_BOOLEAN: + string s2 = ""; + break; + case libxl::CELLTYPE_BLANK: + + string s3 = ""; + break; + case libxl::CELLTYPE_ERROR: + + string s4 = ""; + break;*/ + default: + break; + } + } + // + if (tc_strcmp(Qcitem_name.c_str(),"")==0) { + continue; + } + ChecktypeMap[Qcitem_name] = Checktype; + Qcitem_noMap[Qcitem_name] = Qcitem_no; + } + } + if (sheet0) { + cout << "ʼȡҳ" << endl; + firstRow = sheet0->firstRow(); + lastRow = sheet0->lastRow(); + firstCol = sheet0->firstCol(); + lastCol = sheet0->lastCol(); + for (int row = 3; row < lastRow; row++) + { + string seq = "";//A + string category = "";//C + string type = "";//D + string Standard_value = "";//E + string max_value = "";//1F + string min_value = "";//2G + string QcDescription = "";//3H + for (int c = firstCol; c < lastCol; c++) + { + if (c == 1) { + continue; + } + if (c > 7) { + break; + } + + double db = 0; + const wchar_t* wstr ; + char* s = NULL; + CellType t = sheet0->cellType(row, c); + string value = ""; + switch (t) + { + case libxl::CELLTYPE_EMPTY: + break; + case libxl::CELLTYPE_NUMBER: + db = sheet0->readNum(row, c); + std::cout << db << "\n"; + char str[20]; + + sprintf(str, "%f", db); // ʹ%fռλdoubleת + if (c == 0) { + seq = str; + } + else if (c == 2) { + category = str; + } + else if (c == 3) { + type = str; + } + else if (c == 4) { + Standard_value = str; + } + else if (c == 5) { + max_value = str; + } + else if (c == 6) { + min_value = str; + } + else if (c == 7) { + QcDescription = str; + } + + break; + case libxl::CELLTYPE_STRING: + wstr = sheet0->readStr(row, c); + if (wstr != NULL) { + WcharToString(value, wstr); + std::cout << value << "\n"; + } + if (c == 0) { + seq = value; + } + else if (c == 2) { + category = value; + } + else if (c == 3) { + type = value; + } + else if (c == 4) { + Standard_value = value; + } + else if (c == 5) { + max_value = value; + } + else if (c == 6) { + min_value = value; + } + else if (c == 7) { + QcDescription = value; + } + break; + /* case libxl::CELLTYPE_BOOLEAN: + break; + case libxl::CELLTYPE_BLANK: + break; + case libxl::CELLTYPE_ERROR: + break;*/ + default: + break; + } + } + cout << "seq" <SetAttribute("seq", seqNum); + qcitem_detail->LinkEndChild(childGxRow); + TiXmlElement* seqField = new TiXmlElement("field"); + seqField->SetAttribute("name", "seq"); + seqField->SetAttribute("type", "string"); + set_xml_value(seqField, numStr); + childGxRow->LinkEndChild(seqField); + TiXmlElement* Qcitem_noField = new TiXmlElement("field"); + Qcitem_noField->SetAttribute("name", "Qcitem_no"); + Qcitem_noField->SetAttribute("type", "string"); + set_xml_value(Qcitem_noField, Qcitem_no.c_str()); + childGxRow->LinkEndChild(Qcitem_noField); + TiXmlElement* Qcitem_nameField = new TiXmlElement("field"); + Qcitem_nameField->SetAttribute("name", "Qcitem_name"); + Qcitem_nameField->SetAttribute("type", "string"); + set_xml_value(Qcitem_nameField, Qcitem_name.c_str()); + childGxRow->LinkEndChild(Qcitem_nameField); + TiXmlElement* ChecktypeField = new TiXmlElement("field"); + ChecktypeField->SetAttribute("name", "Checktype"); + ChecktypeField->SetAttribute("type", "numeric"); + set_xml_value(ChecktypeField, Checktype.c_str()); + childGxRow->LinkEndChild(ChecktypeField); + TiXmlElement* Standard_valueField = new TiXmlElement("field"); + Standard_valueField->SetAttribute("name", "Standard_value"); + Standard_valueField->SetAttribute("type", "string"); + set_xml_value(Standard_valueField, Standard_value.c_str()); + childGxRow->LinkEndChild(Standard_valueField); + TiXmlElement* max_valueField = new TiXmlElement("field"); + max_valueField->SetAttribute("name", "max_value"); + max_valueField->SetAttribute("type", "string"); + set_xml_value(max_valueField, max_value.c_str()); + childGxRow->LinkEndChild(max_valueField); + TiXmlElement* min_valueField = new TiXmlElement("field"); + min_valueField->SetAttribute("name", "min_value"); + min_valueField->SetAttribute("type", "string"); + set_xml_value(min_valueField, min_value.c_str()); + childGxRow->LinkEndChild(min_valueField); + TiXmlElement* QcDescriptionField = new TiXmlElement("field"); + QcDescriptionField->SetAttribute("name", "QcDescription"); + QcDescriptionField->SetAttribute("type", "string"); + set_xml_value(QcDescriptionField, QcDescription.c_str()); + childGxRow->LinkEndChild(QcDescriptionField); + } + + } + } + book->release();//ͷŶ󣡣 + cout << "رexcel" <> WorkArea: %s [%s]", object_string, object_type); + if (strcmp("MEPlant", object_type) == 0) { + //if (strcmp("QF8gc", object_type) == 0) { + tag_t rev_tag = NULLTAG; + int form_cnt = 0; + tag_t* form_tags = NULL; + ITKCALL(ifail = ITEM_ask_latest_rev(child_tag, &rev_tag)); + if (rev_tag == NULLTAG) { + WriteLog(debug, ">> No Latest Rev"); + continue; + } + ITKCALL(AOM_ask_value_tags(rev_tag, "IMAN_master_form_rev", &form_cnt, &form_tags)); + if (form_cnt > 0) { + char* value = NULL; + tag_t form_tag = form_tags[0]; + ITKCALL(ifail = AOM_ask_value_string(form_tag, "qf8gcbh", &value)); + if (ifail == ITK_ok) { + WriteLog(debug, "qf8gcbh = [%s]", value); + if (addSp) { + propValue.append(";"); + } + else { + addSp = true; + } + propValue.append(value); + } + DOFREE(value); + } + DOFREE(form_tags); + }else if (strcmp("MEPlantRevision", object_type) == 0) { + //if (strcmp("QF8gc", object_type) == 0) { + tag_t rev_tag = child_tag; + int form_cnt = 0; + tag_t* form_tags = NULL; + ITKCALL(AOM_ask_value_tags(rev_tag, "IMAN_master_form_rev", &form_cnt, &form_tags)); + if (form_cnt > 0) { + char* value = NULL; + tag_t form_tag = form_tags[0]; + ITKCALL(ifail = AOM_ask_value_string(form_tag, "qf8gcbh", &value)); + if (ifail == ITK_ok) { + WriteLog(debug, "qf8gcbh = [%s]", value); + if (addSp) { + propValue.append(";"); + } + else { + addSp = true; + } + propValue.append(value); + } + DOFREE(value); + } + DOFREE(form_tags); + } + } + DOFREE(object_string); + DOFREE(object_type); + DOFREE(child_tags); + } + else if (strcmp("GWBM", propName) == 0) { // λ + int child_cnt = 0; + char* object_type = NULL, * object_string = NULL; + bool addSp = false; + vector targetline_tags; + get_child_line(objectTag, "MEStation", targetline_tags); + child_cnt = targetline_tags.size(); + ITKCALL(ifail = AOM_ask_value_string(objectTag, "object_string", &object_string)); + WriteLog(debug, "Check MEStation: %s [%d]", object_string, child_cnt); + for (int i = 0; i < child_cnt; i++) { + DOFREE(object_string); + DOFREE(object_type); + tag_t child_line_tag = targetline_tags[i]; + tag_t rev_tag = NULLTAG; + int form_cnt = 0; + tag_t* form_tags = NULL; + ITKCALL(ifail = AOM_ask_value_string(child_line_tag, "object_string", &object_string)); + WriteLog(debug, ">> MEStation: %s", object_string); + ITKCALL(ifail = AOM_ask_value_tag(child_line_tag, "bl_revision", &rev_tag)); + if (rev_tag == NULLTAG) { + WriteLog(debug, ">> revision not found"); + continue; + } + ITKCALL(AOM_ask_value_tags(rev_tag, "IMAN_master_form_rev", &form_cnt, &form_tags)); + if (form_cnt > 0) { + char* value = NULL; + tag_t form_tag = form_tags[0]; + ITKCALL(ifail = AOM_ask_value_string(form_tag, "qf8gwbm", &value)); + if (ifail == ITK_ok) { + WriteLog(debug, "qf8gwbm = [%s]", value); + if (addSp) { + propValue.append(";"); + } + else { + addSp = true; + } + propValue.append(value); + } + DOFREE(value); + } + DOFREE(form_tags); + } + DOFREE(object_string); + DOFREE(object_type); + targetline_tags.clear(); + } + else if (strcmp("GWID", propName) == 0) { // λID + int child_cnt = 0; + char* object_type = NULL, * object_string = NULL; + bool addSp = false; + vector targetline_tags; + get_child_line(objectTag, "MEStation", targetline_tags); + child_cnt = targetline_tags.size(); + ITKCALL(ifail = AOM_ask_value_string(objectTag, "object_string", &object_string)); + WriteLog(debug, "Check MEStation: %s [%d]", object_string, child_cnt); + for (int i = 0; i < child_cnt; i++) { + DOFREE(object_string); + DOFREE(object_type); + tag_t child_line_tag = targetline_tags[i]; + tag_t item_tag = NULLTAG; + char* item_id = NULL; + ITKCALL(ifail = AOM_ask_value_string(child_line_tag, "object_string", &object_string)); + WriteLog(debug, ">> MEStation: %s", object_string); + ITKCALL(ifail = AOM_ask_value_tag(child_line_tag, "bl_item", &item_tag)); + if (item_tag == NULLTAG) { + WriteLog(debug, ">> item not found"); + continue; + } + ITKCALL(ifail = AOM_ask_value_string(item_tag, "item_id", &item_id)); + if (ifail == ITK_ok) { + WriteLog(debug, "object_name = [%s]", item_id); + if (addSp) { + propValue.append(";"); + } + else { + addSp = true; + } + propValue.append(item_id); + } + DOFREE(item_id); + } + DOFREE(object_string); + DOFREE(object_type); + targetline_tags.clear(); + } + else if (strcmp("GWMC", propName) == 0) { // λ + int child_cnt = 0; + char* object_type = NULL, * object_string = NULL; + bool addSp = false; + vector targetline_tags; + get_child_line(objectTag, "MEStation", targetline_tags); + child_cnt = targetline_tags.size(); + ITKCALL(ifail = AOM_ask_value_string(objectTag, "object_string", &object_string)); + WriteLog(debug, "Check MEStation: %s [%d]", object_string, child_cnt); + for (int i = 0; i < child_cnt; i++) { + DOFREE(object_string); + DOFREE(object_type); + tag_t child_line_tag = targetline_tags[i]; + tag_t item_tag = NULLTAG; + char* object_name = NULL; + ITKCALL(ifail = AOM_ask_value_string(child_line_tag, "object_string", &object_string)); + WriteLog(debug, ">> MEStation: %s", object_string); + ITKCALL(ifail = AOM_ask_value_tag(child_line_tag, "bl_item", &item_tag)); + if (item_tag == NULLTAG) { + WriteLog(debug, ">> item not found"); + continue; + } + ITKCALL(ifail = AOM_ask_value_string(item_tag, "object_name", &object_name)); + if (ifail == ITK_ok) { + WriteLog(debug, "object_name = [%s]", object_name); + if (addSp) { + propValue.append(";"); + } + else { + addSp = true; + } + propValue.append(object_name); + } + DOFREE(object_name); + } + DOFREE(object_string); + DOFREE(object_type); + targetline_tags.clear(); + } + else { + ITKCALL(ifail = AOM_ask_value_type(objectTag, propName, &propertyType, &propertyTypeName)); + if (ifail != ITK_ok) { + return ifail; + } + switch (propertyType) { + case PROP_string: + if (isDisplayValue) { + ITKCALL(ifail = AOM_UIF_ask_value(objectTag, propName, &cValue)); + } + else { + ITKCALL(ifail = AOM_ask_value_string(objectTag, propName, &cValue)); + } + propValue.append(cValue); + break; + case PROP_date: + date_t date_value; + ITKCALL(ifail = AOM_ask_value_date(objectTag, propName, &date_value)); + ITKCALL(ifail = DATE_date_to_string(date_value, "%Y%m%d%H%M%S000", &cValue)); + propValue.append(cValue); + break; + case PROP_typed_reference://last_mod_user + case PROP_typed_relation: + case PROP_untyped_relation: + case PROP_untyped_reference: + { + int attCnt = 0; + tag_t* attTags = NULL; + const char* subPropNameC = subPropName.size() <= 0 ? "object_string" : subPropName.c_str(); + WriteLog(debug, "ԣ%s-%s", propName, subPropNameC); + ITKCALL(ifail = AOM_ask_value_tags(objectTag, propName, &attCnt, &attTags)); + for (int i = 0; i < attCnt; i++) { + string subPropValue; + ifail = getPropertyStringValue(attTags[i], subPropNameC, "", subPropValue, isDisplayValue, splitter, -1); + if (ifail != ITK_ok) { + goto end; + } + if (subPropValue.size() > 0) { + if (propValue.size() > 0) { + propValue.append(";"); + } + propValue.append(subPropValue); + } + } + DOFREE(attTags); + } + break; + default: + ITKCALL(ifail = AOM_UIF_ask_value(objectTag, propName, &cValue)); + propValue.append(cValue); + break; + } + } + if (splitter.size() > 0 && split_index >= 0 && propValue.size() > 0) { + vector vec; + Split(propValue, splitter, vec); + if (split_index < vec.size()) { + propValue.assign(vec[split_index]); + } + else { + propValue.assign(""); + } + vec.clear(); + } +end: + DOFREE(propertyTypeName); + return ifail; +} + +int getAllTargetRevs(tag_t task_tag, vector &target_tags, vector &target_types) { + int ifail = ITK_ok, att_cnt = 0; + tag_t rootTask_tag = NULLTAG, rev_type=NULLTAG; + tag_t* attachments = NULL; + char* objectstring = NULL, *objecttype=NULL; + ITKCALL(ifail = TCTYPE_ask_type(TYPE_REV, &rev_type)); + if (rev_type == NULLTAG) { + EMH_store_error_s2(EMH_severity_error, ITK_err, ("δҵ汾"), TYPE_REV); + return ITK_err; + } + ITKCALL(ifail = EPM_ask_root_task(task_tag, &rootTask_tag)); + ITKCALL(ifail = EPM_ask_attachments(rootTask_tag, EPM_target_attachment, &att_cnt, &attachments)); + if (att_cnt == 0) { + return ITK_ok; + } + for (int i = 0; i < att_cnt; i++) { + tag_t attachment = attachments[i]; + tag_t type = NULLTAG; + bool isForm = false; + DOFREE(objectstring); + DOFREE(objecttype); + ITKCALL(ifail = TCTYPE_ask_object_type(attachment, &type)); + ITKCALL(ifail = AOM_ask_value_string(attachment, "object_string", &objectstring)); + if (ifail != ITK_ok) { + continue; + } + ITKCALL(ifail = WSOM_ask_object_type2(attachment, &objecttype)); + WriteLog(debug, "%d. ݶ %s [%s]", i + 1, objectstring, objecttype); + ITKCALL(ifail = TCTYPE_is_type_of(type, rev_type, &isForm)); + if (!isForm) { + WriteLog(debug, ">> ǰ汾"); + continue; + } + if (target_types.size() > 0) { + if (!inArray(target_types, objecttype)) { + WriteLog(debug, ">> Ŀ"); + continue; + } + } + target_tags.push_back(attachment); + } + DOFREE(attachments); + DOFREE(objecttype); + DOFREE(objectstring); + return ifail; +} + +int parseErpConfigs(vector pref_values, int start_index, vector &erp_configs) { + for (int i = start_index; i < pref_values.size(); i++) { + string prop_config; + vector replace_configs; + string type; + string erp; + string child_line_type; + string prop_loc; + string prop_name; + string sub_prop_name; + string text_value; + string splitter; + int split_index = -1; + bool isDisplay = false; + prop_config.assign(pref_values[i]); + map replace_map; + int ind = prop_config.find_first_of(':'); + if (ind != string::npos) { + Split(prop_config.substr(ind + 1), ";", replace_configs); + prop_config = prop_config.substr(0, ind); + } + ind = prop_config.find('='); + if (ind != string::npos) { + erp = prop_config.substr(0, ind); + prop_config = prop_config.substr(ind + 1); + } + ind = prop_config.find('='); + if (ind != string::npos) { + type = prop_config.substr(0, ind); + prop_config = prop_config.substr(ind + 1); + } + ind = prop_config.find('='); + if (ind != string::npos) { + child_line_type = prop_config.substr(0, ind); + prop_config = prop_config.substr(ind + 1); + } + ind = prop_config.find_first_of('.'); + if (ind != string::npos) { + prop_loc = prop_config.substr(0, ind); + prop_name = prop_config.substr(ind+1); + transform(prop_loc.begin(), prop_loc.end(), prop_loc.begin(), ::toupper); + } + else { + text_value = prop_config; + } + ind = prop_name.find_first_of('.'); + if (ind != string::npos) { + sub_prop_name = prop_name.substr(ind+1); + prop_name = prop_name.substr(0, ind); + } + if (erp.size()>0&&strcmp("$", erp.substr(0, 1).c_str()) == 0) { + isDisplay = true; + erp = erp.substr(1); + } + ind = erp.find("@@"); + if (ind != string::npos) { + string split_config = erp.substr(ind+2); + erp = erp.substr(0, ind); + ind = split_config.find("@@"); + if (ind != string::npos) { + splitter = split_config.substr(0, ind); + split_index = atoi(split_config.substr(ind+2).c_str()); + } + } + if (erp.size() == 0) { + WriteLog(debug, "Чã%s", pref_values[i].c_str()); + continue; + } + for (int j = 0; j < replace_configs.size(); j++) { + string replace_config = replace_configs[j]; + ind = replace_config.find_first_of('='); + if (ind == string::npos) { + WriteLog(debug, "Ч滻ã%s", replace_config.c_str()); + continue; + } + string replace_from = replace_config.substr(0, ind); + string replace_to = replace_config.substr(ind + 1); + if (replace_map.count(replace_from) > 0) { + WriteLog(debug, "ظ滻ã%s", replace_config.c_str()); + continue; + } + replace_map.insert(make_pair(replace_from, replace_to)); + } + ERP_Config erp_config; + erp_config.isDisplayValue = isDisplay; + erp_config.type = type; + erp_config.erp = erp; + // erp_config.child_line_type = child_line_type; + erp_config.prop_loc = prop_loc; + erp_config.prop_name = prop_name; + erp_config.sub_prop_name = sub_prop_name; + erp_config.text_value = text_value; + erp_config.replace_map = replace_map; + erp_config.splitter = splitter; + erp_config.split_index = split_index; + erp_configs.push_back(erp_config); + } + return ITK_ok; +} + + + +int read_data(tag_t bomline_tag, tag_t rev_tag, tag_t parent_bomline_tag, tag_t parent_rev_tag, vector erp_configs, TiXmlElement* p) { + int ifail = ITK_ok, att_cnt = 0; + tag_t item_tag = NULLTAG, form_tag = NULLTAG, * form_tags = NULL; + string combined_prop_value; + if (rev_tag == NULLTAG) { + if (bomline_tag != NULLTAG) { + ITKCALL(ifail = AOM_ask_value_tag(bomline_tag, "bl_revision", &rev_tag)); + } + } + if (parent_rev_tag == NULLTAG) { + if (parent_bomline_tag != NULLTAG) { + ITKCALL(ifail = AOM_ask_value_tag(parent_bomline_tag, "bl_revision", &parent_rev_tag)); + } + } + if (rev_tag == NULLTAG || erp_configs.size() == 0) { + return ifail; + } + ITKCALL(ITEM_ask_item_of_rev(rev_tag, &item_tag)); + ITKCALL(AOM_ask_value_tags(rev_tag, "IMAN_master_form_rev", &att_cnt, &form_tags)); + if (att_cnt > 0) { + form_tag = form_tags[0]; + DOFREE(form_tags); + } + for (int i = 0; i < erp_configs.size(); i++) { + ERP_Config config = erp_configs[i]; + string prop_value; + bool combine = false; + if (i < erp_configs.size()-1) { + combine = config.erp == erp_configs[i + 1].erp; + } + if (config.prop_loc.size() == 0) { + prop_value = config.text_value; + } + else { + if (tc_strcmp("ITEM", config.prop_loc.c_str()) == 0) { + ifail = getPropertyStringValue(item_tag, config.prop_name.c_str(), config.sub_prop_name, prop_value, config.isDisplayValue, config.splitter, config.split_index); + } + else if (tc_strcmp("REV", config.prop_loc.c_str()) == 0) { + ifail = getPropertyStringValue(rev_tag, config.prop_name.c_str(), config.sub_prop_name, prop_value, config.isDisplayValue, config.splitter, config.split_index); + } + else if (tc_strcmp("FORM", config.prop_loc.c_str()) == 0) { + ifail = getPropertyStringValue(form_tag, config.prop_name.c_str(), config.sub_prop_name, prop_value, config.isDisplayValue, config.splitter, config.split_index); + } + else if (tc_strcmp("BOM", config.prop_loc.c_str()) == 0) { + if (bomline_tag == NULLTAG) { + continue; + } + ifail = getPropertyStringValue(bomline_tag, config.prop_name.c_str(), config.sub_prop_name, prop_value, config.isDisplayValue, config.splitter, config.split_index); + } + // 2Connor_ERP_BOM_childConnor_ERP_BOM_child_zizhiѡÿԻȡBOMϢID + else if (tc_strcmp("PREV", config.prop_loc.c_str()) == 0) { + if (parent_rev_tag == NULLTAG) { + continue; + } + ifail = getPropertyStringValue(parent_rev_tag, config.prop_name.c_str(), config.sub_prop_name, prop_value, config.isDisplayValue, config.splitter, config.split_index); + } + else if (tc_strcmp("PBOM", config.prop_loc.c_str()) == 0) { + tag_t parent_bomline = NULLTAG; + if (parent_bomline_tag == NULLTAG) { + continue; + } + ifail = getPropertyStringValue(parent_bomline_tag, config.prop_name.c_str(), config.sub_prop_name, prop_value, config.isDisplayValue, config.splitter, config.split_index); + } + else { + EMH_store_error_s2(EMH_severity_error, ITK_err, "δ֪ȡλãѡ", config.prop_loc.c_str()); + return ITK_err; + } + } + if (prop_value.size() == 0) { + if (config.replace_map.count("default") > 0) { + prop_value = config.replace_map["default"]; + } + } + else { + if (config.replace_map.count(prop_value) > 0) { + prop_value = config.replace_map[prop_value]; + } + else if (config.replace_map.count("*") > 0) { + prop_value = config.replace_map["*"]; + } + } + if (combine) { + combined_prop_value.append(prop_value); + WriteLog(debug, "[%s][%s] = [%s]", config.erp.c_str(), config.type.c_str(), prop_value.c_str()); + continue; + } + combined_prop_value.append(prop_value); + WriteLog(debug, "[%s][%s] = [%s]", config.erp.c_str(), config.type.c_str(), combined_prop_value.c_str()); + TiXmlElement* field = new TiXmlElement("field"); + field->SetAttribute("name", config.erp.c_str()); + field->SetAttribute("type", config.type.c_str()); + set_xml_value(field, combined_prop_value.c_str()); + p->LinkEndChild(field); + combined_prop_value.clear(); + } + return ifail; +} + + +int read_data_sp(tag_t bomline_tag, tag_t rev_tag, tag_t raw_material_rev_tag, vector erp_configs, TiXmlElement* p, map overwrite) { + int ifail = ITK_ok, att_cnt = 0; + tag_t item_tag = NULLTAG, form_tag = NULLTAG, * form_tags = NULL; + tag_t r_item_tag = NULLTAG, r_form_tag = NULLTAG; + string combined_prop_value; + if (rev_tag == NULLTAG) { + if (bomline_tag != NULLTAG) { + ITKCALL(ifail = AOM_ask_value_tag(bomline_tag, "bl_revision", &rev_tag)); + } + } + if (erp_configs.size() == 0) { + return ifail; + } + if (rev_tag != NULLTAG) { + ITKCALL(ITEM_ask_item_of_rev(rev_tag, &item_tag)); + ITKCALL(AOM_ask_value_tags(rev_tag, "IMAN_master_form_rev", &att_cnt, &form_tags)); + if (att_cnt > 0) { + form_tag = form_tags[0]; + DOFREE(form_tags); + } + } + if (raw_material_rev_tag != NULLTAG) { + DOFREE(form_tags); + ITKCALL(ITEM_ask_item_of_rev(raw_material_rev_tag, &r_item_tag)); + ITKCALL(AOM_ask_value_tags(raw_material_rev_tag, "IMAN_master_form_rev", &att_cnt, &form_tags)); + if (att_cnt > 0) { + r_form_tag = form_tags[0]; + DOFREE(form_tags); + } + } + for (int i = 0; i < erp_configs.size(); i++) { + ERP_Config config = erp_configs[i]; + string prop_value; + bool combine = false; + if (i < erp_configs.size() - 1) { + combine = (config.erp == erp_configs[i + 1].erp); + } + if (overwrite.count(config.erp) > 0) { + prop_value = overwrite[config.erp]; + } + else if (config.prop_loc.size() == 0) { + prop_value = config.text_value; + } + else { + if (tc_strcmp("ITEM", config.prop_loc.c_str()) == 0) { + ifail = getPropertyStringValue(item_tag, config.prop_name.c_str(), config.sub_prop_name, prop_value, config.isDisplayValue, config.splitter, config.split_index); + } + else if (tc_strcmp("REV", config.prop_loc.c_str()) == 0) { + ifail = getPropertyStringValue(rev_tag, config.prop_name.c_str(), config.sub_prop_name, prop_value, config.isDisplayValue, config.splitter, config.split_index); + } + else if (tc_strcmp("FORM", config.prop_loc.c_str()) == 0) { + ifail = getPropertyStringValue(form_tag, config.prop_name.c_str(), config.sub_prop_name, prop_value, config.isDisplayValue, config.splitter, config.split_index); + } + else if (tc_strcmp("BOM", config.prop_loc.c_str()) == 0) { + if (bomline_tag != NULLTAG) { + ifail = getPropertyStringValue(bomline_tag, config.prop_name.c_str(), config.sub_prop_name, prop_value, config.isDisplayValue, config.splitter, config.split_index); + } + }else if (tc_strcmp("RAWITEM", config.prop_loc.c_str()) == 0) { + ifail = getPropertyStringValue(r_item_tag, config.prop_name.c_str(), config.sub_prop_name, prop_value, config.isDisplayValue, config.splitter, config.split_index); + } + else if (tc_strcmp("RAWREV", config.prop_loc.c_str()) == 0) { + ifail = getPropertyStringValue(raw_material_rev_tag, config.prop_name.c_str(), config.sub_prop_name, prop_value, config.isDisplayValue, config.splitter, config.split_index); + } + else if (tc_strcmp("RAWFORM", config.prop_loc.c_str()) == 0) { + ifail = getPropertyStringValue(r_form_tag, config.prop_name.c_str(), config.sub_prop_name, prop_value, config.isDisplayValue, config.splitter, config.split_index); + } + else { + EMH_store_error_s2(EMH_severity_error, ITK_err, "δ֪ȡλãѡ", config.prop_loc.c_str()); + return ITK_err; + } + /*vector target_item_tags, target_rev_tags, target_form_tags, targetline_tags; + if (config.child_line_type.size() > 0 && bomline_tag != NULLTAG) { + get_child_line(bomline_tag, config.child_line_type, targetline_tags); + for (int k = 0; k < targetline_tags.size(); k++) { + tag_t cline_tag = targetline_tags[k], target_item_tag = NULLTAG, target_rev_tag = NULLTAG, target_form_tag = NULLTAG; + ITKCALL(ifail = AOM_ask_value_tag(cline_tag, "bl_revision", &target_rev_tag)); + ITKCALL(ITEM_ask_item_of_rev(target_rev_tag, &target_item_tag)); + ITKCALL(AOM_ask_value_tags(target_rev_tag, "IMAN_master_form_rev", &att_cnt, &form_tags)); + if (att_cnt > 0) { + target_form_tag = form_tags[0]; + DOFREE(form_tags); + } + target_item_tags.push_back(target_item_tag); + target_rev_tags.push_back(target_rev_tag); + target_form_tags.push_back(target_form_tag); + } + } + else { + target_item_tags.push_back(item_tag); + target_rev_tags.push_back(rev_tag); + target_form_tags.push_back(form_tag); + targetline_tags.push_back(bomline_tag); + } + for (int k = 0; k < targetline_tags.size(); k++) { + tag_t target_item_tag = target_item_tags[k]; + tag_t target_rev_tag = target_rev_tags[k]; + tag_t target_form_tag = target_form_tags[k]; + tag_t targetline_tag = targetline_tags[k]; + if (k != 0) { + prop_value.append(";"); + } + if (tc_strcmp("ITEM", config.prop_loc.c_str()) == 0) { + ifail = getPropertyStringValue(target_item_tag, config.prop_name.c_str(), config.sub_prop_name, prop_value, config.isDisplayValue, config.splitter, config.split_index); + } + else if (tc_strcmp("REV", config.prop_loc.c_str()) == 0) { + ifail = getPropertyStringValue(target_rev_tag, config.prop_name.c_str(), config.sub_prop_name, prop_value, config.isDisplayValue, config.splitter, config.split_index); + } + else if (tc_strcmp("FORM", config.prop_loc.c_str()) == 0) { + ifail = getPropertyStringValue(target_form_tag, config.prop_name.c_str(), config.sub_prop_name, prop_value, config.isDisplayValue, config.splitter, config.split_index); + } + else if (tc_strcmp("BOM", config.prop_loc.c_str()) == 0) { + if (bomline_tag == NULLTAG) { + continue; + } + ifail = getPropertyStringValue(targetline_tag, config.prop_name.c_str(), config.sub_prop_name, prop_value, config.isDisplayValue, config.splitter, config.split_index); + } + else { + EMH_store_error_s2(EMH_severity_error, ITK_err, "δ֪ȡλãѡ", config.prop_loc.c_str()); + return ITK_err; + } + } + target_item_tags.clear(); + target_rev_tags.clear(); + target_form_tags.clear(); + targetline_tags.clear();*/ + } + if (prop_value.size() == 0) { + if (config.replace_map.count("default") > 0) { + prop_value = config.replace_map["default"]; + } + } + else { + if (config.replace_map.count(prop_value) > 0) { + prop_value = config.replace_map[prop_value]; + } + else if (config.replace_map.count("*") > 0) { + prop_value = config.replace_map["*"]; + } + } + if (combine) { + combined_prop_value.append(prop_value); + WriteLog(debug, "[%s][%s] = [%s]", config.erp.c_str(), config.type.c_str(), prop_value.c_str()); + continue; + } + combined_prop_value.append(prop_value); + WriteLog(debug, "[%s][%s] = [%s]", config.erp.c_str(), config.type.c_str(), combined_prop_value.c_str()); + TiXmlElement* field = new TiXmlElement("field"); + field->SetAttribute("name", config.erp.c_str()); + field->SetAttribute("type", config.type.c_str()); + set_xml_value(field, combined_prop_value.c_str()); + p->LinkEndChild(field); + combined_prop_value.clear(); + } + return ifail; +} + +int ask_zizhi(tag_t rev_tag, string& value) { + int ifail = ITK_ok, form_cnt = 0; + char* object_string = NULL, * prop_value = NULL; + tag_t form_tag = NULLTAG, * form_tags = NULL; + ITKCALL(ifail = AOM_ask_value_string(rev_tag, "object_string", &object_string)); + ITKCALL(ifail = AOM_ask_value_tags(rev_tag, "IMAN_master_form_rev", &form_cnt, &form_tags)); + if (form_cnt == 0) { + goto end; + } + form_tag = form_tags[0]; + ITKCALL(ifail = AOM_UIF_ask_value(form_tag, "qf8laiyuan", &prop_value)); + if (ifail != ITK_ok) { + goto end; + } + WriteLog(debug, "Ƽ [%s][%s]", object_string, prop_value); + value.assign(prop_value); +end: + DOFREE(form_tags); + DOFREE(object_string); + DOFREE(prop_value); + return ifail; +} + +// ײƼչ +int write_zizhi(tag_t rev_tag, vector zz_parent_configs, vector zz_child_configs, int& bomSeq, TiXmlElement* bom_data) { + int ifail = ITK_ok, form_cnt = 0, child_cnt = 0; + char* object_string = NULL, * object_type = NULL, *prop_value = NULL; + tag_t* form_tags = NULL, form_tag = NULLTAG, *child_tags = NULL, relation_tag = NULLTAG; + vector child_revs; + string clyl; + ITKCALL(ifail = WSOM_ask_object_type2(rev_tag, &object_type)); + if (strcmp("QF8PartRevision", object_type) != 0) { + goto end; + } + ITKCALL(ifail = AOM_ask_value_string(rev_tag, "object_string", &object_string)); + ITKCALL(ifail = AOM_ask_value_tags(rev_tag, "IMAN_master_form_rev", &form_cnt, &form_tags)); + if (form_cnt == 0) { + goto end; + } + form_tag = form_tags[0]; + ITKCALL(ifail = AOM_UIF_ask_value(form_tag, "qf8laiyuan", &prop_value)); + if (ifail != ITK_ok) { + goto end; + } + WriteLog(debug, "Ƽ [%s][%s]", object_string, prop_value); + if (strcmp("", prop_value) != 0) { + goto end; + } + ITKCALL(ifail = GRM_find_relation_type("QF8SCXXrelation", &relation_tag)); + if (relation_tag == NULLTAG) { + EMH_store_error_s1(EMH_severity_error, ITK_err, "δϵQF8SCXXrelation"); + ifail = ITK_err; + goto end; + } + ITKCALL(ifail = GRM_list_secondary_objects_only(rev_tag, relation_tag, &child_cnt, &child_tags)); + WriteLog(debug, ">> ҵӶ%d", child_cnt); + if (child_cnt == 0) { + goto end; + } + for (int i = 0; i < child_cnt; i++) { + tag_t child_tag = child_tags[i]; + DOFREE(object_string); + DOFREE(object_type); + ITKCALL(ifail = WSOM_ask_object_type2(child_tag, &object_type)); + ITKCALL(ifail = AOM_ask_value_string(child_tag, "object_string", &object_string)); + WriteLog(debug, ">> %d. [%s][%s]", i+1, object_string, object_type); + if (strcmp("QF8RawMaterialsRevision", object_type) == 0) { + child_revs.push_back(child_tag); + } + else if (strcmp("QF8SCXXBDRevision", object_type) == 0) { + //char* prop_value = NULL; + //ITKCALL(ifail = AOM_UIF_ask_value(child_tag, "qf8clyl", &prop_value)); + //if (ifail == ITK_ok) { + // WriteLog(debug, " >> [qf8clyl] = [%s]", prop_value); + // clyl.assign(prop_value); + //} + //DOFREE(prop_value); + + //TODO 20240116ԭĴӶϻȡijɴӰ汾ϻȡ°汾 + char* prop_value = NULL; + int form_cnt = 0; + tag_t *formTag = NULL; + AOM_ask_value_tags(child_tag,IMAN_MASTER_FORM_REV,&form_cnt,&formTag); + ITKCALL(ifail = AOM_UIF_ask_value(formTag[0],QF8CLYL, &prop_value)); + + if (ifail == ITK_ok) { + WriteLog(debug, " >> [%s] = [%s]", QF8CLYL, prop_value); + clyl.assign(prop_value); + } + DOFREE(prop_value); + DOFREE(formTag); + } + } + child_cnt = child_revs.size(); + WriteLog(debug, ">> ҵԭ%d", child_cnt); + if (child_cnt == 0) { + goto end; + } + // дBOM + { + TiXmlElement* data_row = new TiXmlElement("row"); + data_row->SetAttribute("seq", bomSeq); + bomSeq += 1; + bom_data->LinkEndChild(data_row); + read_data(NULLTAG, rev_tag, NULLTAG, NULLTAG, zz_parent_configs, data_row); + TiXmlElement* detail = new TiXmlElement("detail"); + detail->SetAttribute("name", "BOM_D"); + data_row->LinkEndChild(detail); + for (int i = 0; i < child_cnt; i++) { + TiXmlElement* row = new TiXmlElement("row"); + row->SetAttribute("seq", i + 1); + detail->LinkEndChild(row); + read_data(NULLTAG, child_revs[i], NULLTAG, rev_tag, zz_child_configs, row); + // + { + TiXmlElement* field = new TiXmlElement("field"); + field->SetAttribute("name", "QTY_PER"); + field->SetAttribute("type", "numeric"); + set_xml_value(field, clyl.c_str()); + row->LinkEndChild(field); + } + } + } +end: + child_revs.clear(); + DOFREE(object_string); + DOFREE(object_type); + DOFREE(prop_value); + DOFREE(form_tags); + DOFREE(child_tags); + return ifail; +} + + +int cycle_bom(tag_t bomline_tag, vector parent_configs, vector child_configs, + vector zz_parent_configs, vector zz_child_configs, + vector pli_configs, vector gi_configs, + TiXmlElement* bom_data, TiXmlElement* wl_pli, TiXmlElement* wl_gi, + int &bomSeq, int &wlSeq, vector& added_lines) { + int ifail = ITK_ok, child_cnt = 0, att_cnt = 0; + tag_t* child_lines = NULL; + tag_t rev_tag = NULLTAG; + char* rev_uid = NULL; + string zizhi; + if (bomline_tag == NULLTAG || parent_configs.size() == 0 || child_configs.size() == 0) { + return ifail; + } + ITKCALL(ifail = AOM_ask_value_tag(bomline_tag, "bl_revision", &rev_tag)); + if (rev_tag == NULLTAG) { + return ifail; + } + ITK__convert_tag_to_uid(rev_tag, &rev_uid); + if (inArray(added_lines, rev_uid)) { + WriteLog(debug, ">> ȡظBOM - %s", rev_uid); + return ifail; + } + added_lines.push_back(rev_uid); + DOFREE(rev_uid); + // 20220328 BOMʱҪжÿϵ⹺ԣqf8laiyuanǷƣBOMݵ˲ֹͣ + ifail = ask_zizhi(rev_tag, zizhi); + if (ifail!=ITK_ok||zizhi != "") { + WriteLog(debug, ">> BOM"); + return ifail; + } + //д + { + TiXmlElement* row_gi = new TiXmlElement("row"); + row_gi->SetAttribute("seq", wlSeq); + wl_gi->LinkEndChild(row_gi); + read_data(bomline_tag, NULLTAG, NULLTAG, NULLTAG, gi_configs, row_gi); + TiXmlElement* row_pli = new TiXmlElement("row"); + row_pli->SetAttribute("seq", wlSeq); + wl_pli->LinkEndChild(row_pli); + read_data(bomline_tag, NULLTAG, NULLTAG, NULLTAG, pli_configs, row_pli); + wlSeq += 1; + } + ITKCALL(ifail = BOM_line_ask_child_lines(bomline_tag, &child_cnt, &child_lines)); + // ײƼը + if (child_cnt == 0) { + write_zizhi(rev_tag, zz_parent_configs, zz_child_configs, bomSeq, bom_data); + } + if (child_cnt == 0) { + DOFREE(child_lines); + return ifail; + } + // bom + for (int i = 0; i < child_cnt; i++) { + cycle_bom(child_lines[i], parent_configs, child_configs, zz_parent_configs, zz_child_configs, pli_configs, gi_configs, bom_data, wl_pli, wl_gi, bomSeq, wlSeq, added_lines); + } + // дBOM + { + TiXmlElement* data_row = new TiXmlElement("row"); + data_row->SetAttribute("seq", bomSeq); + bomSeq += 1; + bom_data->LinkEndChild(data_row); + read_data(bomline_tag, NULLTAG, NULLTAG, NULLTAG, parent_configs, data_row); + TiXmlElement* detail = new TiXmlElement("detail"); + detail->SetAttribute("name", "BOM_D"); + data_row->LinkEndChild(detail); + for (int i = 0; i < child_cnt; i++) { + TiXmlElement* row = new TiXmlElement("row"); + row->SetAttribute("seq", i + 1); + detail->LinkEndChild(row); + read_data(child_lines[i], NULLTAG, bomline_tag, rev_tag, child_configs, row); + } + } + + DOFREE(child_lines); + return ifail; +} + +int read_bom_data(tag_t rev_tag, vector parent_configs, vector child_configs, + vector zz_parent_configs, vector zz_child_configs, + vector pli_configs, vector gi_configs, TiXmlElement* bom_data, TiXmlElement* wl_pli, TiXmlElement *wl_gi, int &bomSeq, int &wlSeq, vector &added_lines) { + int ifail = ITK_ok; + tag_t bom_view = NULLTAG, bvr_tag = NULLTAG, bom_window = NULLTAG, topBomLine = NULLTAG; + char* objectstring = NULL; + ITKCALL(ifail = AOM_ask_value_string(rev_tag, "object_string", &objectstring)); + WriteLog(debug, "ȡBOM - %s", objectstring); + ITKCALL(ifail = GetBomView(rev_tag, "view", &bom_view, &bvr_tag, debug)); + if (bom_view != NULLTAG) { + ITKCALL(ifail = BOM_create_window(&bom_window)); + ITKCALL(ifail = BOM_set_window_top_line_bvr(bom_window, bvr_tag, &topBomLine)); + ifail = cycle_bom(topBomLine, parent_configs, child_configs, zz_parent_configs, zz_child_configs, pli_configs, gi_configs, bom_data, wl_pli, wl_gi, bomSeq, wlSeq, added_lines); + ITKCALL(BOM_close_window(bom_window)); + } + else { + WriteLog(debug, "ûҵBOMͼ"); + char* rev_uid = NULL; + ITK__convert_tag_to_uid(rev_tag, &rev_uid); + if (!inArray(added_lines, rev_uid)) { + added_lines.push_back(rev_uid); + write_zizhi(rev_tag, zz_parent_configs, zz_child_configs, bomSeq, bom_data); + } + else { + WriteLog(debug, ">> ȡظƼ - %s", rev_uid); + } + DOFREE(rev_uid); + // return ITK_err; + } + DOFREE(objectstring); + return ifail; +} + +int add_bop_dataset(string &name_prefix, tag_t dataset_tag, TiXmlElement* detail, const char* type, int& sop_index, const char* ref_name) { + int ifail = ITK_ok; + char* object_name = NULL, * uid = NULL, * origin_file_name = NULL; + tag_t spec_dataset_rev = NULLTAG, *ref_objects = NULL, ref_object = NULLTAG; + AE_reference_type_t my_ref_type; + + ITKCALL(ifail = AOM_ask_value_string(dataset_tag, "object_name", &object_name)); + ITK__convert_tag_to_uid(dataset_tag, &uid); + WriteLog(debug, "ݼ[%s] [%s]", object_name, type); + string ds_dir; + ds_dir.assign(local_dir).append(uid).append("\\"); + WriteLog(debug, "========1======"); + + if (std::experimental::filesystem::is_directory(ds_dir)) { + + WriteLog(debug, "=========2====="); + std::experimental::filesystem::remove_all(ds_dir); + + WriteLog(debug, "======3========"); + } + if (!std::experimental::filesystem::is_directory(ds_dir)) { + WriteLog(debug, "=======4======="); + if (!std::experimental::filesystem::create_directories(ds_dir)) { + WriteLog(debug, "½Ŀ¼ʧܣ%s", ds_dir.c_str()); + ifail = ITK_err; + EMH_store_error_s2(EMH_severity_error, ITK_err, "ݼĿ¼ʧ", ds_dir.c_str()); + goto end; + } + } + ITKCALL(ifail = AE_ask_dataset_latest_rev(dataset_tag, &spec_dataset_rev)); + ITKCALL(ifail = AE_ask_dataset_named_ref2(spec_dataset_rev, ref_name, &my_ref_type, &ref_object)); + { + DOFREE(origin_file_name); + string temp_file, ftp_file; + //tag_t ref_object = ref_objects[i]; + WriteLog(debug, "=========6====="); + ITKCALL(ifail = IMF_ask_original_file_name2(ref_object, &origin_file_name)); + WriteLog(debug, "======7========"); + if (ifail != ITK_ok) { + goto end; + } + temp_file.assign(ds_dir).append(name_prefix).append(origin_file_name); + ftp_file.assign(ftp_dir).append(uid).append("\\").append(name_prefix).append(origin_file_name); + + WriteLog(debug, "=======8======="); + ITKCALL(ifail = IMF_export_file(ref_object, temp_file.c_str())); + + WriteLog(debug, "========9======"); + if (ifail != ITK_ok) { + goto end; + } + WriteLog(debug, "ļɣ%s", (temp_file.c_str())); + // дxml + { + TiXmlElement* row = new TiXmlElement("row"); + row->SetAttribute("seq", sop_index++); + detail->LinkEndChild(row); + TiXmlElement* field1 = new TiXmlElement("field"); + field1->SetAttribute("name", "type"); + field1->SetAttribute("type", "string"); + row->LinkEndChild(field1); + set_xml_value(field1, type); + TiXmlElement* field2 = new TiXmlElement("field"); + field2->SetAttribute("name", "sop_no"); + field2->SetAttribute("type", "string"); + row->LinkEndChild(field2); + set_xml_value(field2, object_name); + TiXmlElement* field3 = new TiXmlElement("field"); + field3->SetAttribute("name", "sop_file"); + field3->SetAttribute("type", "string"); + set_xml_value(field3, ftp_file.c_str()); + row->LinkEndChild(field3); + } + } +end: + DOFREE(origin_file_name); + DOFREE(ref_objects); + DOFREE(uid); + DOFREE(object_name); + return ifail; +} +/* +*װ䣬PDF͵ݼ +*rev_tag汾 +*detailxml +*sop_indexţ +*/ +int add_bop_datasets_with11(tag_t rev_tag, TiXmlElement* detail, int& sop_index) { + int ifail = ITK_ok; + int ds_cnt = 0, metarget_cnt = 0; + tag_t* ds_tags = NULL, *metarget_tags = NULL; + char* object_string = NULL, * object_type = NULL; + string name_prefix; + ITKCALL(ifail = AOM_ask_value_string(rev_tag,ITEM_ID, &object_string)); + name_prefix.assign(object_string); + name_prefix.append("_"); + WriteLog(debug, "ļǰ׺%s", name_prefix.c_str()); + ITKCALL(ifail = AOM_ask_value_tags(rev_tag,IMAN_SPECIFICATION, &ds_cnt, &ds_tags)); + WriteLog(debug, "ݼ%d", ds_cnt); + for (int i = 0; i < ds_cnt; i++) { + DOFREE(object_string); + DOFREE(object_type); + tag_t ds_tag = ds_tags[i]; + ITKCALL(ifail = AOM_ask_value_string(ds_tag, "object_string", &object_string)); + ITKCALL(ifail = WSOM_ask_object_type2(ds_tag, &object_type)); + WriteLog(debug, ">> %d. %s [%s]", i+1, object_string, object_type); + if (strcmp("PDF", object_type) == 0) { + ifail = add_bop_dataset(name_prefix, ds_tag, detail, "3", sop_index,PDF_REFERENCE); + if (ifail != ITK_ok) { + goto end; + } + } + } +end: + DOFREE(object_string); + DOFREE(object_type); + DOFREE(ds_tags); + DOFREE(metarget_tags); + return ifail; +} +/* +*ںӻPDF͵ݼ +*rev_tag汾 +*detailxml +*sop_indexţ +*/ +int add_bop_datasets_with12(tag_t rev_tag, TiXmlElement* detail, int& sop_index) { + int ifail = ITK_ok; + int ds_cnt = 0, metarget_cnt = 0; + tag_t* ds_tags = NULL, *metarget_tags = NULL; + char* object_string = NULL, *object_type = NULL; + string name_prefix; + ITKCALL(ifail = AOM_ask_value_string(rev_tag, "item_id", &object_string)); + name_prefix.assign(object_string); + name_prefix.append("_"); + WriteLog(debug, "ļǰ׺%s", name_prefix.c_str()); + ITKCALL(ifail = AOM_ask_value_tags(rev_tag,IMAN_SPECIFICATION, &ds_cnt, &ds_tags)); + WriteLog(debug, "ݼ%d", ds_cnt); + for (int i = 0; i < ds_cnt; i++) { + DOFREE(object_string); + DOFREE(object_type); + tag_t ds_tag = ds_tags[i]; + ITKCALL(ifail = AOM_ask_value_string(ds_tag, "object_string", &object_string)); + ITKCALL(ifail = WSOM_ask_object_type2(ds_tag, &object_type)); + WriteLog(debug, ">> %d. %s [%s]", i + 1, object_string, object_type); + if (strcmp("DirectModel", object_type) == 0 || strcmp("ֱģ", object_type) == 0) { + ifail = add_bop_dataset(name_prefix, ds_tag, detail, "1", sop_index, JTPART); + if (ifail != ITK_ok) { + goto end; + } + } + + + } +end: + DOFREE(object_string); + DOFREE(object_type); + DOFREE(ds_tags); + DOFREE(metarget_tags); + return ifail; +} + + +int add_bop_datasets(tag_t gy_line, TiXmlElement* detail, int& sop_index) { + int ifail = ITK_ok; + int ds_cnt = 0, metarget_cnt = 0; + tag_t* ds_tags = NULL, rev_tag = NULLTAG, *metarget_tags = NULL; + char* object_string = NULL, * object_type = NULL; + string name_prefix; + ITKCALL(ifail = AOM_ask_value_tag(gy_line, "bl_revision", &rev_tag)); + if (ifail != ITK_ok) { + goto end; + } + ITKCALL(ifail = AOM_ask_value_string(rev_tag, "item_id", &object_string)); + name_prefix.assign(object_string); + name_prefix.append("_"); + WriteLog(debug, "ļǰ׺%s", name_prefix.c_str()); + ITKCALL(ifail = AOM_ask_value_tags(rev_tag, "IMAN_specification", &ds_cnt, &ds_tags)); + WriteLog(debug, "ݼ%d", ds_cnt); + for (int i = 0; i < ds_cnt; i++) { + DOFREE(object_string); + DOFREE(object_type); + tag_t ds_tag = ds_tags[i]; + ITKCALL(ifail = AOM_ask_value_string(ds_tag, "object_string", &object_string)); + ITKCALL(ifail = WSOM_ask_object_type2(ds_tag, &object_type)); + WriteLog(debug, ">> %d. %s [%s]", i+1, object_string, object_type); + if (strcmp("UGMASTER", object_type) == 0) { + ifail = add_bop_dataset(name_prefix, ds_tag, detail, "1", sop_index, "UGPART"); + if (ifail != ITK_ok) { + goto end; + } + } + else if (strcmp("HTML", object_type) == 0) { + ifail = add_bop_dataset(name_prefix, ds_tag, detail, "2", sop_index, "HTML"); + if (ifail != ITK_ok) { + goto end; + } + } + } + ITKCALL(ifail = AOM_ask_value_tags(rev_tag, "IMAN_METarget", &metarget_cnt, &metarget_tags)); + WriteLog(debug, "Ŀ%d", metarget_cnt); + for (int i = 0; i < metarget_cnt; i++) { + DOFREE(object_string); + DOFREE(object_type); + DOFREE(ds_tags); + tag_t metarget_tag = metarget_tags[i]; + ITKCALL(ifail = AOM_ask_value_string(metarget_tag, "object_string", &object_string)); + ITKCALL(ifail = WSOM_ask_object_type2(metarget_tag, &object_type)); + WriteLog(debug, ">> %d. %s [%s]", i + 1, object_string, object_type); + ITKCALL(ifail = AOM_ask_value_tags(metarget_tag, "IMAN_Rendering", &ds_cnt, &ds_tags)); + WriteLog(debug, ">> ݼ%d", ds_cnt); + for (int j = 0; j < ds_cnt; j++) { + DOFREE(object_string); + DOFREE(object_type); + tag_t ds_tag = ds_tags[j]; + ITKCALL(ifail = AOM_ask_value_string(ds_tag, "object_string", &object_string)); + ITKCALL(ifail = WSOM_ask_object_type2(ds_tag, &object_type)); + WriteLog(debug, ">> %d.%d %s [%s]", i + 1, j + 1, object_string, object_type); + if (strcmp("DirectModel", object_type) == 0|| strcmp("ֱģ", object_type) == 0) { + ifail = add_bop_dataset(name_prefix, ds_tag, detail, "1", sop_index, "JTPART"); + if (ifail != ITK_ok) { + goto end; + } + } + } + } +end: + DOFREE(object_string); + DOFREE(object_type); + DOFREE(ds_tags); + DOFREE(metarget_tags); + return ifail; +} + +int add_bop_sublines(tag_t gx_line, tag_t raw_material_rev_tag, TiXmlElement *detail, const char* title, const char* subline_types, int &index, vector child_configs, map overwrite) { + int ifail = ITK_ok; + char* object_string = NULL; + vector resource_lines; + get_child_line(gx_line, subline_types, resource_lines); + int line_cnt = resource_lines.size(); + WriteLog(debug, "%s%d",title, line_cnt); + for (int j = 0; j < line_cnt; j++) { + DOFREE(object_string); + tag_t reource_line = resource_lines[j]; + ITKCALL(ifail = AOM_ask_value_string(reource_line, "object_string", &object_string)); + WriteLog(debug, ">> %d. %s [%s]", j + 1, title, object_string); + TiXmlElement* row = new TiXmlElement("row"); + row->SetAttribute("seq", index++); + detail->LinkEndChild(row); + read_data_sp(reource_line, NULLTAG, raw_material_rev_tag, child_configs, row, overwrite); + } +end: + resource_lines.clear(); + return ifail; +} +/* +*mapҵֵ +*mapXmap +*elementmapļ +*/ +vector findElement(map> mapX, tag_t element) { + map>::iterator it; + it = mapX.find(element); + vector vec; + if (it != mapX.end()) { + return it->second; + } + else { + return vec; + } +} +/* +*mapҵֵ +*mapXmap +*elementmapļ +*/ +tag_t findElement(map mapX, tag_t element) { + map::iterator it; + it = mapX.find(element); + tag_t value = NULL; + if (it != mapX.end()) { + return it->second; + } + else { + return value; + } + + +} + +/* +*ͨԪжϸüǷڸԪ +*v: +*element:Ԫ +*1ʾԪ +*0ʾԪ +*/ +int hasElement(vector v, tag_t element) { + //vector::iterator it = find(v.begin(), v.end(), element); + //if (it != v.end()) { + // return 0;// + //} + //else { + // return 1;// + // + //} + if (count(v.begin(), v.end(), element)) + { + //cout << "Element"<< element<<" found" << endl; + return 0;// + } + else + { + //cout << "Element "<< element<<"NOT found" << endl; + return 1;// + } + +} +/* +*ѭBOMеĹգ򣬹λӵ +*topBomLinev:bomline +*gyVec: +*/ +void loopGy(tag_t topBomLine,vector &gyVec) { + int ifail = 0; + int wlCnt = 0; + tag_t *wlLines = NULL; + ITKCALL(ifail = BOM_line_ask_child_lines(topBomLine, &wlCnt, &wlLines)); + if (wlCnt>0) { + for (int n = 0; n < wlCnt; n++) { + tag_t childWlRev = NULL; + ITKCALL(ifail = AOM_ask_value_tag(wlLines[n],BL_REVISION, &childWlRev)); + char *childWlType = NULL; + AOM_ask_value_string(childWlRev,OBJECT_TYPE, &childWlType); + if (tc_strcmp(childWlType, QF8GYREVISION) == 0 || tc_strcmp(childWlType, QF8GXREVISION) == 0 || tc_strcmp(childWlType, MESTATIONREVISION) == 0) { + int exist = hasElement(gyVec, childWlRev); + if (exist == 1) { + gyVec.push_back(childWlRev); + } + } + DOFREE(childWlType); + loopGy(wlLines[n],gyVec); + } + } + DOFREE(wlLines); +} +/* +*ѭBOMеӵ +*topBomLinev:bomline +*gyVec: +*/ +void loopWl(tag_t topBomLine, vector &wlVec, vector &gyVec) { + int ifail = 0; + int wlCnt = 0; + tag_t *wlLines = NULL; + ITKCALL(ifail = BOM_line_ask_child_lines(topBomLine, &wlCnt, &wlLines)); + for (int i = 0; i < wlCnt; i++) { + tag_t childWl = wlLines[i]; + tag_t childRev = NULL; + ITKCALL(ifail = AOM_ask_value_tag(childWl,BL_REVISION, &childRev)); + tag_t* form_tags = NULL; + int form_cnt = 0; + ITKCALL(AOM_ask_value_tags(childRev,IMAN_MASTER_FORM_REV, &form_cnt, &form_tags)); + if (form_cnt > 0) { + char* value = NULL; + tag_t form_tag = form_tags[0]; + ITKCALL(ifail = AOM_UIF_ask_value(form_tag,QF8LAIYUAN, &value)); + if (ifail == ITK_ok) { + WriteLog(debug, ">> qf8laiyuan = [%s]", value); + if (strcmp("", value) == 0) { + int exist = hasElement(wlVec, childRev); + if (exist == 1) { + wlVec.push_back(childRev); + } + //ȡBOPϵµĹն + int BOPcnt = 0; + tag_t *BOPtags = NULL; + ITKCALL(AOM_ask_value_tags(childRev, QF8BOPRELATION, &BOPcnt, &BOPtags)); + char* gyType = NULL; + for (int j = 0; j < BOPcnt; j++) { + tag_t gyTag = BOPtags[j]; + AOM_ask_value_string(gyTag, OBJECT_TYPE, &gyType); + if (tc_strcmp(gyType, QF8GYREVISION) == 0) { + exist = hasElement(gyVec, gyTag); + if (exist == 1) { + + gyVec.push_back(gyTag); + } + int bom_num = 0; + tag_t * bom_tags = NULLTAG; + AOM_ask_value_tags(gyTag, STRUCTURE_REVISIONS, &bom_num, &bom_tags); + if (bom_num > 0) + { + tag_t only_bom = bom_tags[0]; + tag_t bom_window_tag = NULLTAG, top_bom_line_tag = NULLTAG, rev_tag = NULLTAG, item_tag = NULLTAG; + ITKCALL(ifail = BOM_create_window(&bom_window_tag)); + ITKCALL(ifail = BOM_set_window_top_line_bvr(bom_window_tag, only_bom, &top_bom_line_tag)); + //ѭв㼶ѹϵĹ͹λӵ + loopGy(top_bom_line_tag, gyVec); + ITKCALL(ifail = BOM_close_window(bom_window_tag));//пй + } + DOFREE(bom_tags); + } + } + DOFREE(BOPtags); + DOFREE(gyType); + } + } + DOFREE(value); + } + DOFREE(form_tags); + //TODO ѭв㼶 + loopWl(childWl, wlVec, gyVec); + } + DOFREE(wlLines); + +} +/* +*ΪÿλµĹ򼯺ӼϢ +*/ +void addInspectionInformationWithVec(TiXmlElement* row,vector gxVec) { + TiXmlElement* qcitem_detail = new TiXmlElement("detail"); + qcitem_detail->SetAttribute("name", "qcitem_detail"); + row->LinkEndChild(qcitem_detail); + int seq = 0; + for (int n = 0; n < gxVec.size(); n++) { + tag_t gxRev = gxVec[n]; + int attachCnt = 0; + tag_t *attachTags = NULL; + char *gxId = NULL; + char *gxRevisionId = NULL; + AOM_ask_value_string(gxRev, "item_id", &gxId); + AOM_ask_value_string(gxRev, "item_revision_id", &gxRevisionId); + string excelName = ""; + excelName = excelName.append(gxId).append("_").append(gxRevisionId).append("_JYX.xlsx"); + cout << "excelName" << excelName << endl; + AOM_ask_value_tags(gxRev,IMAN_SPECIFICATION, &attachCnt, &attachTags); + for (int x = 0; x < attachCnt; x++) { + tag_t excelTag = attachTags[x]; + char *excelType = NULL; + AOM_ask_value_string(excelTag, "object_type", &excelType); + cout << "excelType" << excelType << endl; + + if (tc_strcmp("MSExcelX", excelType) == 0) { + char *excelNameChar = NULL; + AOM_ask_value_string(excelTag, "object_name", &excelNameChar); + cout << "excelNameChar" << excelNameChar << endl; + + if (tc_strcmp(excelName.c_str(), excelNameChar) == 0) { + //ӼϢ + cout << "ҵexcel" << endl; + readExcel(qcitem_detail, seq, excelTag, "xlsx"); + } + } + DOFREE(excelType); + } + DOFREE(attachTags); + DOFREE(gxId); + DOFREE(gxRevisionId); + + } + + +} +/* +*ΪӼϢ +*/ +void addInspectionInformationWithGxLine(TiXmlElement* row, tag_t gxLine) { + tag_t rev_tag = NULL; + int ifail = 0; + if (gxLine != NULLTAG) { + ITKCALL(ifail = AOM_ask_value_tag(gxLine, BL_REVISION, &rev_tag)); + } + + TiXmlElement* qcitem_detail = new TiXmlElement("detail"); + qcitem_detail->SetAttribute("name", "qcitem_detail"); + row->LinkEndChild(qcitem_detail); + int seq = 0; + tag_t gxRev = rev_tag; + int attachCnt = 0; + tag_t *attachTags = NULL; + char *gxId = NULL; + char *gxRevisionId = NULL; + AOM_ask_value_string(gxRev, "item_id", &gxId); + AOM_ask_value_string(gxRev, "item_revision_id", &gxRevisionId); + string excelName = ""; + excelName = excelName.append(gxId).append("_").append(gxRevisionId).append("_JYX.xlsx"); + AOM_ask_value_tags(gxRev, "IMAN_specification", &attachCnt, &attachTags); + for (int x = 0; x < attachCnt; x++) { + tag_t excelTag = attachTags[x]; + char *excelType = NULL; + AOM_ask_value_string(excelTag, "object_type", &excelType); + if (tc_strcmp("MSExcelX", excelType) == 0) { + char *excelNameChar = NULL; + AOM_ask_value_string(excelTag, "object_name", &excelNameChar); + if (tc_strcmp(excelName.c_str(), excelNameChar) == 0) { + //ӼϢ + readExcel(qcitem_detail, seq, excelTag, "xlsx"); + } + } + DOFREE(excelType); + } + DOFREE(attachTags); + DOFREE(gxId); + DOFREE(gxRevisionId); + + + +} + + +int cycle_bop(tag_t bomline_tag, tag_t raw_material_rev_tag, vector parent_configs, vector child_configs1, vector child_configs2, vector child_configs3, vector child_configs4, TiXmlElement* bom_data, int& bomSeq, vector& added_lines,int wlType,tag_t wlRev) { + int ifail = ITK_ok, child_cnt = 0, att_cnt = 0; + + tag_t rev_tag = NULLTAG; + char* rev_uid = NULL, *object_string = NULL; + vector meop_lines; + if (bomline_tag == NULLTAG || parent_configs.size() == 0 || child_configs1.size() == 0 || child_configs2.size() == 0 || child_configs3.size() == 0 || child_configs4.size() == 0) { + return ifail; + } + ITKCALL(ifail = AOM_ask_value_tag(bomline_tag, "bl_revision", &rev_tag)); + if (rev_tag == NULLTAG) { + return ifail; + } + ITK__convert_tag_to_uid(rev_tag, &rev_uid); + if (inArray(added_lines, rev_uid)) { + return ifail; + } + added_lines.push_back(rev_uid); + DOFREE(rev_uid); + + // ȡй + { + tag_t* gx_lines = NULL; + ITKCALL(ifail = BOM_line_ask_child_lines(bomline_tag, &child_cnt, &gx_lines)); + for (int k = 0; k < child_cnt; k++) { + DOFREE(object_string); + tag_t gx_line = gx_lines[k], gx_rev = NULLTAG; + logical is_gy= false; + ITKCALL(ifail = AOM_ask_value_string(gx_line, "object_string", &object_string)); + // WriteLog(debug, ">> %d. ӹ [%s]", k + 1, object_string); + // ˷ǹ + { + ITKCALL(ifail = AOM_ask_value_tag(gx_line, "bl_revision", &gx_rev)); + if (gx_rev == NULLTAG) { + WriteLog(debug, ">> ȡbomа汾ʧ[%s]", object_string); + } + else { + tag_t rev_type = NULLTAG; + ITKCALL(ifail = TCTYPE_ask_object_type(gx_rev, &rev_type)); + ITKCALL(ifail = TCTYPE_is_type_of_as_str(rev_type, "MEProcessRevision", &is_gy)); + } + } + if (is_gy) { + int child_cnt2 = 0; + tag_t* gx_lines2 = NULL; + ITKCALL(ifail = BOM_line_ask_child_lines(gx_line, &child_cnt2, &gx_lines2)); + WriteLog(debug, ">> չм[%s] -> [%d]", object_string, child_cnt2); + for (int j = 0; j < child_cnt2; j++) { + meop_lines.push_back(gx_lines2[j]); + } + DOFREE(gx_lines2); + } + else { + meop_lines.push_back(gx_line); + } + } + DOFREE(gx_lines); + } + child_cnt = meop_lines.size(); + WriteLog(debug, " [%d]", child_cnt); + if (child_cnt == 0) { + goto end; + } + { + map overwrite1; + // д + TiXmlElement* data_row = new TiXmlElement("row"); + data_row->SetAttribute("seq", bomSeq); + bomSeq += 1; + bom_data->LinkEndChild(data_row); + int reource_index = 1, sup_index = 1, material_index = 1, sop_index = 1; + read_data_sp(bomline_tag, NULLTAG, raw_material_rev_tag, parent_configs, data_row, overwrite1); + TiXmlElement* gx_detail = new TiXmlElement("detail"); + gx_detail->SetAttribute("name", "opstaiton_detail"); + TiXmlElement* resource_detail = new TiXmlElement("detail"); + resource_detail->SetAttribute("name", "opresource_detail"); + TiXmlElement* sup_detail = new TiXmlElement("detail"); + sup_detail->SetAttribute("name", "opsup_detail"); + TiXmlElement* material_detail = new TiXmlElement("detail"); + material_detail->SetAttribute("name", "material_detail"); + TiXmlElement* sop_detail = new TiXmlElement("detail"); + sop_detail->SetAttribute("name", "sop_detail"); + data_row->LinkEndChild(gx_detail); + data_row->LinkEndChild(resource_detail); + data_row->LinkEndChild(sup_detail); + data_row->LinkEndChild(material_detail); + data_row->LinkEndChild(sop_detail); + // д + //TODO 20240123 Ҫװ + if (wlType==11) { + //ȱṹɹλvector,λ͹򼯺ϵmap + map> gwGxMap;//λ汾͹汾ϵmap + map gwFormMap;//λ汾͹λ汾map + map gxFormMap;//汾͹汾map + map gxlineMap;//汾͹汾bomlinemap + vector gwVec;//λ汾 + for (int k = 0; k < child_cnt; k++) { + DOFREE(object_string); + tag_t gx_line = meop_lines[k], gx_rev = NULLTAG; + ITKCALL(ifail = AOM_ask_value_string(gx_line, "object_string", &object_string)); + WriteLog(debug, ">> %d.Ϣ[%s]", k + 1, object_string); + ITKCALL(ifail = AOM_ask_value_tag(gx_line, "bl_revision", &gx_rev)); + int gxFormCnt = 0; + tag_t *gxFormTags = NULL; + ITKCALL(ifail = AOM_ask_value_tags(gx_rev, IMAN_MASTER_FORM_REV, &gxFormCnt, &gxFormTags)); + tag_t gxForm = findElement(gxFormMap, gx_rev); + if (gxForm == NULL) { + gxFormMap.insert(pair(gx_rev, gxFormTags[0])); + } + tag_t gxline= findElement(gxlineMap, gx_rev); + if (gxline== NULL) { + gxlineMap.insert(pair(gx_rev, gx_line)); + } + DOFREE(gxFormTags); + //ȡµĹλ + int gwCnt = 0; + tag_t* gwLines = NULL; + //vector gwFormVec;//λ汾 + ITKCALL(ifail = BOM_line_ask_child_lines(gx_line, &gwCnt, &gwLines)); + for (int j = 0; j < gwCnt; j++) { + tag_t gwRev = NULL; + char *gwType = NULL; + ITKCALL(ifail = AOM_ask_value_tag(gwLines[j],BL_REVISION, &gwRev)); + ITKCALL(ifail = AOM_ask_value_string(gwRev,OBJECT_TYPE, &gwType)); + WriteLog(debug, ">> ͡%s", gwType); + + if (strcmp(MESTATIONREVISION,gwType)==0) { + int exist = hasElement(gwVec, gwRev); + if (exist == 1) { + gwVec.push_back(gwRev); + } + int formCnt = 0; + tag_t *formTags = NULL; + ITKCALL(ifail = AOM_ask_value_tags(gwRev,IMAN_MASTER_FORM_REV,&formCnt, &formTags)); + tag_t gwForm = findElement(gwFormMap, gwRev); + if (gwForm == NULL) { + gwFormMap.insert(pair(gwRev, formTags[0])); + } + /* int exist = hasElement(gwFormVec,formTags[0]); + if (exist == 1) { + gwFormVec.push_back(formTags[0]); + }*/ + DOFREE(formTags); + vector gxVec;//汾 + gxVec = findElement(gwGxMap, gwRev); + exist = hasElement(gxVec, gx_rev); + if (exist == 1) { + WriteLog(debug, ">> û%s", object_string); + + gxVec.push_back(gx_rev); + } + else { + WriteLog(debug, ">> Ѿ%s", object_string); + } + //gwGxMap.insert(pair>(gwRev, gxVec)); + gwGxMap[gwRev] = gxVec; + } + DOFREE(gwType); + } + + DOFREE(gwLines); + + } + WriteLog(debug, ">> ʼйλ"); + + //ʼйλ + for (int k = 0; k < gwVec.size();k++) { + tag_t gw= gwVec[k]; + vector gxVec; + WriteLog(debug, ">> λ1"); + + gxVec = gwGxMap[gw]; + WriteLog(debug, ">> λ2"); + + string op_no, next_station,op_name; + map overwrite; + if (k == -1) { + op_no.assign("START"); + op_name.assign("ʼ"); + } + else { + char* gwId = NULL; + ITKCALL(ifail = AOM_ask_value_string(gw,ITEM_ID, &gwId)); + op_no.assign(gwId); + DOFREE(gwId); + char* gwName = NULL; + ITKCALL(ifail = AOM_ask_value_string(gw,OBJECT_NAME, &gwName)); + op_name.assign(gwName); + DOFREE(gwName); + } + if (k == gwVec.size() - 1) { + next_station.assign("END"); + } + else { + char* nextGwId = NULL; + ITKCALL(ifail = AOM_ask_value_string(gwVec[k+1],ITEM_ID, &nextGwId)); + next_station.assign(nextGwId); + DOFREE(nextGwId); + } + overwrite.insert(make_pair("op_no", op_no)); + overwrite.insert(make_pair("opno", op_no)); + overwrite.insert(make_pair("op_name", op_name));//20240123 ֶop_name + overwrite.insert(make_pair("next_station", next_station)); + + + + if (k==0) { + map overwrite0; + TiXmlElement* row = new TiXmlElement("row"); + row->SetAttribute("seq", "1"); + gx_detail->LinkEndChild(row); + overwrite0.insert(make_pair("op_no", "START")); + //overwrite0.insert(make_pair("opno", "START")); + overwrite0.insert(make_pair("op_name", "ʼ"));//20240123 ֶop_name,ֵΪǰ + overwrite0.insert(make_pair("next_station", op_no)); + overwrite0.insert(make_pair("outsourcing_type", "")); + overwrite0.insert(make_pair("prepare_time", "0"));//20240315Ϊstartʱ׼ʱͼӹʱΪ0 + overwrite0.insert(make_pair("product_time", "0")); + map::iterator rev_it; + for (rev_it = overwrite0.begin(); rev_it != overwrite0.end(); rev_it++) + { + TiXmlElement* field = new TiXmlElement("field"); + string fieldName = rev_it->first; + string fieldValue = rev_it->second; + field->SetAttribute("name", fieldName.c_str()); + field->SetAttribute("type","string"); + set_xml_value(field, fieldValue.c_str()); + row->LinkEndChild(field); + } + + + } + TiXmlElement* row = new TiXmlElement("row"); + row->SetAttribute("seq", k + 2); + //ʣֶ + TiXmlElement* fieldOpno = new TiXmlElement("field"); + fieldOpno->SetAttribute("name", "op_no"); + fieldOpno->SetAttribute("type", "string"); + set_xml_value(fieldOpno, op_no.c_str()); + row->LinkEndChild(fieldOpno); + + TiXmlElement* fieldOpname = new TiXmlElement("field"); + fieldOpname->SetAttribute("name", "op_name"); + fieldOpname->SetAttribute("type", "string"); + set_xml_value(fieldOpname, op_name.c_str()); + row->LinkEndChild(fieldOpname); + + TiXmlElement* fieldNextStation = new TiXmlElement("field"); + fieldNextStation->SetAttribute("name", "next_station"); + fieldNextStation->SetAttribute("type", "string"); + set_xml_value(fieldNextStation, next_station.c_str()); + row->LinkEndChild(fieldNextStation); + + //ǷίQF8sfww + WriteLog(debug, ">>Ƿί"); + + char *QF8sfww = NULL; + AOM_UIF_ask_value(gxlineMap[gxVec[0]],QF8SFWW, &QF8sfww); + TiXmlElement* fieldSfww = new TiXmlElement("field"); + fieldSfww->SetAttribute("name", "outsourcing_type"); + fieldSfww->SetAttribute("type", "string"); + set_xml_value(fieldSfww, QF8sfww); + row->LinkEndChild(fieldSfww); + WriteLog(debug, ">>Ƿί%s", QF8sfww); + + DOFREE(QF8sfww); + WriteLog(debug, ">>Ƿί"); + + //ۼӼӹʱ׼ʱ + double jggsTotal = 0; + double zbgsTotal = 0; + WriteLog(debug, ">>%d", gxVec.size()); + + + for (int n = 0; n < gxVec.size(); n++) { + tag_t gxRev = gxVec[n]; + tag_t gxForm = gxFormMap[gxRev]; + char *zbgs = NULL; + char *jggs = NULL; + double zbgsDouble = 0; + double jggsDouble = 0; + AOM_ask_value_string(gxForm, QF8ZBGS, &zbgs); + AOM_ask_value_string(gxForm, QF8JGGS, &jggs); + try + { + zbgsDouble = atof(zbgs); + } + catch (const std::exception&) + { + } + try + { + jggsDouble = atof(jggs); + } + catch (const std::exception&) + { + } + jggsTotal = jggsTotal + jggsDouble; + zbgsTotal = zbgsTotal + zbgsDouble; + DOFREE(zbgs); + DOFREE(jggs); + + } + WriteLog(debug, ">>ܹʱ"); + + char jggsStr[20]; + char zbgsStr[20]; + sprintf(jggsStr, "%f", jggsTotal); + sprintf(zbgsStr, "%f", zbgsTotal); + TiXmlElement* fieldJggs = new TiXmlElement("field"); + fieldJggs->SetAttribute("name", "product_time"); + fieldJggs->SetAttribute("type", "string"); + set_xml_value(fieldJggs, jggsStr); + row->LinkEndChild(fieldJggs); + + TiXmlElement* fieldZbgs = new TiXmlElement("field"); + fieldZbgs->SetAttribute("name", "prepare_time"); + fieldZbgs->SetAttribute("type", "string"); + set_xml_value(fieldZbgs, zbgsStr); + row->LinkEndChild(fieldZbgs); + + //ӹ + WriteLog(debug, ">>ӹ"); + + TiXmlElement* SubOP_item_detail = new TiXmlElement("detail"); + SubOP_item_detail->SetAttribute("name", "SubOP_item_detail"); + row->LinkEndChild(SubOP_item_detail); + + for (int n = 0; n < gxVec.size(); n++) { + tag_t gxRev = gxVec[n]; + char *gxId = NULL; + char *gxName=NULL; + AOM_ask_value_string(gxRev,"item_id",&gxId); + AOM_ask_value_string(gxRev,"object_name",&gxName); + TiXmlElement* childGxRow = new TiXmlElement("row"); + childGxRow->SetAttribute("seq", n+1); + SubOP_item_detail->LinkEndChild(childGxRow); + + TiXmlElement* childGxFieldNo = new TiXmlElement("field"); + childGxFieldNo->SetAttribute("name", "SubOPNo"); + childGxFieldNo->SetAttribute("type", "string"); + set_xml_value(childGxFieldNo, gxId); + childGxRow->LinkEndChild(childGxFieldNo); + + TiXmlElement* childGxFieldValue = new TiXmlElement("field"); + childGxFieldValue->SetAttribute("name", "SubOPName"); + childGxFieldValue->SetAttribute("type", "string"); + set_xml_value(childGxFieldValue, gxName); + childGxRow->LinkEndChild(childGxFieldValue); + DOFREE(gxName); + DOFREE(gxId); + } + //ӼϢ + WriteLog(debug, ">>ʼӹλļϢ"); + addInspectionInformationWithVec(row, gxVec); + gx_detail->LinkEndChild(row); + } + WriteLog(debug, ">> ԴϢ"); + + for (int k = 0; k < child_cnt; k++) { + DOFREE(object_string); + tag_t gx_line = meop_lines[k], gx_rev = NULLTAG; + map overwrite; + + // Դ + { + add_bop_sublines(gx_line, raw_material_rev_tag, resource_detail, "Դ", "QF8ProcessRES", reource_index, child_configs2, overwrite); + } + // + { + add_bop_sublines(gx_line, raw_material_rev_tag, sup_detail, "ո", "QF8Ingredients", sup_index, child_configs3, overwrite); + } + // + /*{ + add_bop_sublines(gx_line, raw_material_rev_tag, material_detail, "", "!QF8ProcessRES;QF8Ingredients", material_index, child_configs4, overwrite); + }*/ + overwrite.clear(); + + } + + + } + else { + for (int k = 0; k < child_cnt; k++) { + DOFREE(object_string); + tag_t gx_line = meop_lines[k], gx_rev = NULLTAG; + ITKCALL(ifail = AOM_ask_value_string(gx_line, "object_string", &object_string)); + ITKCALL(ifail = AOM_ask_value_tag(gx_line, BL_REVISION, &gx_rev)); + + WriteLog(debug, ">> %d. ӹ [%s]", k + 1, object_string); + map overwrite; + string op_no, next_station,op_no_new; + if (k == -1) { + op_no.assign("START"); + } + else { + char* object_name = NULL; + ITKCALL(ifail = AOM_ask_value_string(gx_line, "bl_item_object_name", &object_name)); + op_no.assign(object_name); + DOFREE(object_name); + } + if (k == child_cnt - 1) { + next_station.assign("END"); + } + else { + /*char* object_name = NULL; + ITKCALL(ifail = AOM_ask_value_string(meop_lines[k + 1], "bl_item_object_name", &object_name)); + next_station.assign(object_name); + DOFREE(object_name);*/ + //20240319޸ + tag_t next_gx_rev = NULLTAG; + ITKCALL(ifail = AOM_ask_value_tag(meop_lines[k + 1], BL_REVISION, &next_gx_rev)); + char* prop_value = NULL; + int form_cnt = 0; + tag_t *formTag = NULL; + AOM_ask_value_tags(next_gx_rev, IMAN_MASTER_FORM_REV, &form_cnt, &formTag); + ITKCALL(ifail = AOM_UIF_ask_value(formTag[0], QF8GXBM, &prop_value)); + + if (ifail == ITK_ok) { + WriteLog(debug, " >> [%s] = [%s]", QF8GXBM, prop_value); + next_station.assign(prop_value); + } + DOFREE(prop_value); + DOFREE(formTag); + + } + //20240318 Ӻͻ op_nonext_stationǰ汾qf8gxbm + char* prop_value = NULL; + int form_cnt = 0; + tag_t *formTag = NULL; + AOM_ask_value_tags(gx_rev, IMAN_MASTER_FORM_REV, &form_cnt, &formTag); + ITKCALL(ifail = AOM_UIF_ask_value(formTag[0], QF8GXBM, &prop_value)); + + if (ifail == ITK_ok) { + WriteLog(debug, " >> [%s] = [%s]", QF8GXBM, prop_value); + op_no_new.assign(prop_value); + } + DOFREE(prop_value); + DOFREE(formTag); + + + overwrite.insert(make_pair("op_no", op_no_new));//20240318 Ӻͻ op_noǰ汾qf8gxbm + overwrite.insert(make_pair("opno", op_no)); + overwrite.insert(make_pair("op_name", op_no));//20240123 ֶop_name,ֵΪǰ + overwrite.insert(make_pair("next_station", next_station)); + // + { + // ӵһ + if (k == 0) { + map overwrite0; + TiXmlElement* row = new TiXmlElement("row"); + row->SetAttribute("seq", "1"); + gx_detail->LinkEndChild(row); + overwrite0.insert(make_pair("op_no", "START")); + overwrite0.insert(make_pair("opno", "START")); + overwrite0.insert(make_pair("prepare_time", "0"));//20240315Ϊstartʱ׼ʱͼӹʱΪ0 + overwrite0.insert(make_pair("product_time", "0")); + overwrite.insert(make_pair("op_name", "ʼ"));//20240123 ֶop_name,ֵΪǰ + overwrite0.insert(make_pair("next_station", op_no_new));//20240318 Ӻͻ op_nonext_stationǰ汾qf8gxbm + read_data_sp(NULLTAG, NULLTAG, NULLTAG, child_configs1, row, overwrite0); + } + TiXmlElement* row = new TiXmlElement("row"); + row->SetAttribute("seq", k + 2); + gx_detail->LinkEndChild(row); + read_data_sp(gx_line, NULLTAG, raw_material_rev_tag, child_configs1, row, overwrite); + + WriteLog(debug, ">> ʼӹļϢ"); + //ӼϢ + addInspectionInformationWithGxLine(row, gx_line); + + } + // Դ + { + add_bop_sublines(gx_line, raw_material_rev_tag, resource_detail, "Դ", "QF8ProcessRES", reource_index, child_configs2, overwrite); + } + // + { + add_bop_sublines(gx_line, raw_material_rev_tag, sup_detail, "ո", "QF8Ingredients", sup_index, child_configs3, overwrite); + } + // + /*{ + add_bop_sublines(gx_line, raw_material_rev_tag, material_detail, "", "!QF8ProcessRES;QF8Ingredients", material_index, child_configs4, overwrite); + }*/ + overwrite.clear(); + } + + } + // ԭ + if(raw_material_rev_tag!=NULLTAG){ + TiXmlElement* row = new TiXmlElement("row"); + row->SetAttribute("seq", 1); + material_detail->LinkEndChild(row); + read_data_sp(bomline_tag, NULLTAG, raw_material_rev_tag, child_configs4, row, overwrite1); + } + //20240125ж͵ݼ + //TODO BOMץȥеĹգ͹λŵvectorУ֮ǰǷѾ + vector gyVec;//Źգ򣬹λļ + vector wlVec;//ϵļ + gyVec.push_back(rev_tag); + int exist = 2; + for (int k = 0; k < child_cnt; k++) { + DOFREE(object_string); + tag_t gx_line = meop_lines[k], gx_rev = NULLTAG; + ITKCALL(ifail = AOM_ask_value_tag(gx_line,BL_REVISION, &gx_rev)); + int gwCnt = 0; + tag_t* gwLines = NULL; + exist = hasElement(gyVec,gx_rev ); + if (exist==1) { + gyVec.push_back(gx_rev); + } + ITKCALL(ifail = BOM_line_ask_child_lines(gx_line, &gwCnt, &gwLines)); + for (int j = 0; j < gwCnt; j++) { + tag_t gwRev = NULL; + char *gwType = NULL; + ITKCALL(ifail = AOM_ask_value_tag(gwLines[j],BL_REVISION, &gwRev)); + ITKCALL(ifail = AOM_ask_value_string(gwRev,OBJECT_TYPE, &gwType)); + WriteLog(debug, ">> ͡%s", gwType); + + if (strcmp(MESTATIONREVISION, gwType) == 0) { + exist = hasElement(gyVec, gwRev); + if (exist == 1) { + gyVec.push_back(gwRev); + } + + } + } + } + //չĶwlRev + exist = hasElement(wlVec, wlRev); + if (exist == 1) { + wlVec.push_back(wlRev); + } + + tag_t bom_view = NULL; + tag_t bvr_tag = NULL; + tag_t bom_window = NULL; + tag_t topBomLine = NULL; + ITKCALL(ifail = GetBomView(wlRev, "view", &bom_view, &bvr_tag, debug)); + if (bom_view != NULLTAG) { + ITKCALL(ifail = BOM_create_window(&bom_window)); + ITKCALL(ifail = BOM_set_window_top_line_bvr(bom_window, bvr_tag, &topBomLine)); + loopWl(topBomLine, wlVec, gyVec); + ITKCALL(BOM_close_window(bom_window)); + } + else { + WriteLog(debug, "ûҵBOMͼ"); + // return ITK_err; + } + //ͣѡϴʲô͵ݼ + if (wlType == 11) { + for (int i = 0; i < gyVec.size(); i++) { + tag_t rev_tag = gyVec[i]; + ifail = add_bop_datasets_with11(rev_tag, sop_detail, sop_index); + if (ifail != ITK_ok) { + goto end; + } + + } + for (int i = 0; i < wlVec.size(); i++) { + tag_t rev_tag = wlVec[i]; + ifail = add_bop_datasets_with11(rev_tag, sop_detail, sop_index); + if (ifail != ITK_ok) { + goto end; + } + + } + + } + else if (wlType == 12 || wlType == 13) { + for (int i = 0; i < gyVec.size(); i++) { + tag_t rev_tag = gyVec[i]; + ifail = add_bop_datasets_with12(rev_tag, sop_detail, sop_index); + if (ifail != ITK_ok) { + goto end; + } + + } + for (int i = 0; i < wlVec.size(); i++) { + tag_t rev_tag = wlVec[i]; + ifail = add_bop_datasets_with12(rev_tag, sop_detail, sop_index); + if (ifail != ITK_ok) { + goto end; + } + + } + + } + else + // ļ + { + ifail = add_bop_datasets(bomline_tag, sop_detail, sop_index); + if (ifail != ITK_ok) { + goto end; + } + } + } +end: + meop_lines.clear(); + DOFREE(object_string); + return ifail; +} + +int add_map(map &map, string key, string value) { + int ifail = ITK_ok; + if (key.size() > 0 && map.count(key) == 0) { + map.insert(make_pair(key, value)); + } + return ifail; +} + +int read_bop_data(tag_t rev_tag, vector parent_configs, vector child_configs1, vector child_configs2, vector child_configs3, vector child_configs4, vector wl_data_configs, TiXmlElement* bom_data, TiXmlElement* wl_data, int& bomSeq, int& wlSeq, vector& added_wl, vector &added_lines) { + int ifail = ITK_ok, wl_cnt = 0; + tag_t bom_view = NULLTAG, bvr_tag = NULLTAG, bom_window = NULLTAG, topBomLine = NULLTAG, *wl_tags = NULL; + char* objectstring = NULL, *rev_uid = NULL, *object_type = NULL; + tag_t raw_material_rev_tag = NULLTAG; + ITKCALL(ifail = AOM_ask_value_string(rev_tag, "object_string", &objectstring)); + //д + ITKCALL(ifail = AOM_ask_value_tags(rev_tag, "IMAN_METarget", &wl_cnt, &wl_tags));//TODO 20240123 BOPϵ + int wlType = 0; + //20240123 жϹչװ䣨11ӣ12ӣ13 + tag_t wlRev = NULL; + char *objectId = NULL; + WriteLog(debug, "ȡBOP - %s", objectstring); + for(int i=0; i> ȡظ"); + continue; + } + added_wl.push_back(rev_uid); + TiXmlElement* row_gi = new TiXmlElement("row"); + row_gi->SetAttribute("seq", wlSeq); + wl_data->LinkEndChild(row_gi); + read_data(NULLTAG, wl_tag, NULLTAG, NULLTAG, wl_data_configs, row_gi); + wlSeq += 1; + // յĹIMAN_METargetĿΪQF8PartRevisionұqf8laiyuanΪƣȡQF8SCXXrelationϵQF8RawMaterialsRevisionͶϢ + if (strcmp("QF8PartRevision", object_type) == 0) { + tag_t* form_tags = NULL; + int form_cnt = 0; + ITKCALL(AOM_ask_value_tags(wl_tag, "IMAN_master_form_rev", &form_cnt, &form_tags)); + if (form_cnt > 0) { + char* value = NULL; + tag_t form_tag = form_tags[0]; + ITKCALL(ifail = AOM_UIF_ask_value(form_tag, "qf8laiyuan", &value)); + if (ifail == ITK_ok) { + WriteLog(debug, ">> qf8laiyuan = [%s]", value); + if (strcmp("", value) == 0) { + tag_t relation_tag = NULLTAG; + int child_cnt = 0; + tag_t* child_tags = NULL; + ITKCALL(ifail = GRM_find_relation_type("QF8SCXXrelation", &relation_tag)); + if (relation_tag == NULLTAG) { + EMH_store_error_s1(EMH_severity_error, ITK_err, "δϵQF8SCXXrelation"); + ifail = ITK_err; + goto end; + } + ITKCALL(ifail = GRM_list_secondary_objects_only(wl_tag, relation_tag, &child_cnt, &child_tags)); + WriteLog(debug, ">> ҵQF8SCXXrelationӶ%d", child_cnt); + for (int k = 0; k < child_cnt; k++) { + DOFREE(objectstring); + DOFREE(object_type); + tag_t child_tag = child_tags[k]; + ITKCALL(ifail = AOM_ask_value_string(child_tag, "object_string", &objectstring)); + ITKCALL(ifail = WSOM_ask_object_type2(child_tag, &object_type)); + WriteLog(debug, ">> %d. %s [%s]", k + 1, objectstring, object_type); + if (strcmp("QF8RawMaterialsRevision", object_type) == 0) { + raw_material_rev_tag = child_tag; + break; + } + } + DOFREE(child_tags); + } + } + DOFREE(value); + } + DOFREE(form_tags); + } + } + ITKCALL(ifail = GetBomView(rev_tag, "view", &bom_view, &bvr_tag, debug)); + if (bom_view != NULLTAG) { + ITKCALL(ifail = BOM_create_window(&bom_window)); + ITKCALL(ifail = BOM_set_window_top_line_bvr(bom_window, bvr_tag, &topBomLine)); + ifail = cycle_bop(topBomLine, raw_material_rev_tag, parent_configs, child_configs1, child_configs2, child_configs3, child_configs4, bom_data, bomSeq, added_lines,wlType, wlRev); + ITKCALL(BOM_close_window(bom_window)); + } + else { + WriteLog(debug, "ûҵBOMͼ"); + // return ITK_err; + } +end: + DOFREE(rev_uid); + DOFREE(wl_tags); + DOFREE(objectstring); + DOFREE(object_type); + return ifail; +} + +int getChildNodes(TiXmlNode* parent, const char* node_name, vector &children) { + TiXmlNode* cNode = NULL; + for (cNode = parent->FirstChildElement(); cNode; cNode = cNode->NextSiblingElement()) { + const char* cNodeName = cNode->ToElement()->Value(); + if (strcmp(node_name, cNodeName) != 0) { + continue; + } + children.push_back(cNode); + } + return ITK_ok; +} + +int parseResponse(string resp) { + int ifail = ITK_ok; + //string resp; + //resp.assign(U2G(respUTF.c_str())); + WriteLog(debug, "\nյݣ%s", resp.c_str()); + TiXmlDocument* doc = new TiXmlDocument(); + doc->Parse(resp.c_str(), 0, TIXML_DEFAULT_ENCODING); + TiXmlElement* response = doc->RootElement(); + if (!response) { + WriteLog(debug, "δҵڵ"); + EMH_store_error_s1(EMH_severity_error, ITK_err, "޷ERPӿڷϢ"); + return ITK_err; + } + vector payloads, params, data_responses, datainfos; + getChildNodes(response, "payload", payloads); + for (TiXmlNode * payload : payloads) + { + getChildNodes(payload, "param", params); + } + for (TiXmlNode* param : params) + { + getChildNodes(param, "data_response", data_responses); + } + for (TiXmlNode* data_response : data_responses) + { + getChildNodes(data_response, "datainfo", datainfos); + } + if (datainfos.size() <= 0) { + WriteLog(debug, "δҵdatainfoڵ"); + EMH_store_error_s1(EMH_severity_error, ITK_err, "޷ERPӿڷϢ"); + return ITK_err; + } + // WriteLog(debug, "XXXXXXXXXXXXXXXX"); + for (TiXmlNode* datainfo : datainfos) + { + string status; + string message; + TiXmlNode* cNode = NULL; + for (cNode = datainfo->FirstChildElement(); cNode; cNode = cNode->NextSiblingElement()) { + const char* cNodeName = cNode->ToElement()->Value(); + if (strcmp("parameter", cNodeName) != 0) { + continue; + } + const char* key = cNode->ToElement()->Attribute("key"); + const char* text = cNode->ToElement()->GetText(); + if (key == NULL || text == NULL) { + continue; + } + if (strcmp("Status", key) == 0) { + status.assign(text); + } + else if (strcmp("Message", key) == 0) { + message.assign(U2G(text)); + } + } + WriteLog(debug, "status [%s] message [%s]", status.c_str(), message.c_str()); + if (strcmp("0", status.c_str()) != 0) { + EMH_store_error_s2(EMH_severity_error, ITK_err, "ERPӿڷشϢ", message.size() > 0 ? message.c_str() : "޴"); + ifail = ITK_err; + } + } + return ifail; +} +/* +*ѭܹʱ +*top_bom_line_tag ѭIJ㼶 +*totalGs ܹʱ +*/ +int Loop_BOM_count_totalGs(tag_t top_bom_line_tag, double &totalGs) +{ + tag_t rev_tag; int ifail = 0; + int child_count = 0; tag_t *child_tags = NULLTAG; + ITKCALL(ifail = BOM_line_ask_all_child_lines(top_bom_line_tag, &child_count, &child_tags)); + int form_nums = 0; + tag_t *form_tags = NULLTAG; + for (int n = 0; n= 0; i--) { + if (str[i] == '\0') continue; + + if (i == 0) return; + //С˳ + if (str[i] == '.') { + return; + } + + if (str[i] != '0') return; + + //СһλҲ㣬0Ͳȥ + if (str[i] == '0' && str[i - 1] != '0') { + if (str[i - 1] == '.') { + return; + } + str[i] = '\0'; + //return; + } + // + if (str[i] == '0') { + str[i] = '\0'; + } + } +} +/* +*ܹʱ +*revTag ѭIJ㼶 +*fieldX xmlڵ +*/ +void addZgs(tag_t revTag, TiXmlElement* fieldX) { + int BOPcnt = 0; + tag_t *BOPtags = NULL; + ITKCALL(AOM_ask_value_tags(revTag, QF8BOPRELATION, &BOPcnt, &BOPtags)); + int formCnt = 0; + tag_t *formTags = NULL; + char* gxType = NULL; + char* gyType = NULL; + char *zbgs = NULL; + char *jggs = NULL; + double zbgsDouble = 0; + int ifail = 0; + double totalGs = 0; + double jggsDouble = 0; + //ѭв㼶Ϲϵ׼ʱͼӹʱۼΪܹʱ + for (int j = 0; j < BOPcnt; j++) { + zbgsDouble = 0; + jggsDouble = 0; + tag_t gyTag = BOPtags[j]; + AOM_ask_value_string(gyTag, OBJECT_TYPE, &gyType); + if (tc_strcmp(gyType, QF8GYREVISION) == 0) { + int bom_num = 0; + tag_t * bom_tags = NULLTAG; + AOM_ask_value_tags(gyTag, STRUCTURE_REVISIONS, &bom_num, &bom_tags); + if (bom_num>0) + { + tag_t only_bom = bom_tags[0]; + tag_t bom_window_tag = NULLTAG, top_bom_line_tag = NULLTAG, rev_tag = NULLTAG, item_tag = NULLTAG; + ITKCALL(ifail = BOM_create_window(&bom_window_tag)); + ITKCALL(ifail = BOM_set_window_top_line_bvr(bom_window_tag, only_bom, &top_bom_line_tag)); + //ѭ + Loop_BOM_count_totalGs(top_bom_line_tag, totalGs); + ITKCALL(ifail = BOM_close_window(bom_window_tag));//пй + } + DOFREE(bom_tags); + } + } + //õ汾 + cout << "ܹʱӣ"<SetAttribute("name", FIXED_LEAD_TIME_M);//ݵ׼ʱ + field->SetAttribute("type", "string"); + //20240307ʱȡܹʱ + set_xml_value(field, zgsStr); + //fieldX->LinkEndChild(field);//20241202ʱȡ + DOFREE(BOPtags); + DOFREE(formTags); + DOFREE(zbgs); + DOFREE(jggs); + DOFREE(gxType); +} +/* +*Ӳֶֿ +*revTag ϶ +*fieldX xmlڵ +*/ + +void addCk(tag_t revTag, TiXmlElement* fieldX) { + WriteLog(debug, "Ӳֶֿ"); + tag_t ico_tag = NULLTAG, cls_tag = NULLTAG; + long classId = 0;//id + string laiyuan = "";//Դ + int ifail = 0; + ITKCALL(ifail = ICS_ask_classification_object(revTag, &ico_tag)); + if (ico_tag != NULLTAG) { + ITKCALL(ifail = ICS_ask_class_of_classification_obj(ico_tag, &cls_tag)); + if (cls_tag != NULLTAG) { + char* cls_id = NULL, *cls_name = NULL; + ITKCALL(ifail = ICS_ask_id_name(cls_tag, &cls_id, &cls_name)); + if (ifail == ITK_ok) { + classId = atoll(cls_id); + } + DOFREE(cls_id); + DOFREE(cls_name); + } + } + //ȡ汾ϵԴqf8laiyuan + int formCnt = 0; tag_t *formTag = NULL; + AOM_ask_value_tags(revTag, IMAN_MASTER_FORM_REV, &formCnt, &formTag); + char *qf8laiyuan = NULL; + AOM_UIF_ask_value(formTag[0], QF8LAIYUAN, &qf8laiyuan); + laiyuan = qf8laiyuan; + DOFREE(formTag); + DOFREE(qf8laiyuan); + //۲ֿ + string ck = "";//ֿ + WriteLog(debug, "=Դ==%s==", laiyuan); + //20240328 ĬϲֿãID=111213 Դ=裬1002 + if (classId == 11 || classId == 12) { + if (tc_strcmp(laiyuan.c_str(), ZIZHI) == 0 || tc_strcmp(laiyuan.c_str(), WAIGOU) == 0|| tc_strcmp(laiyuan.c_str(), XUSHE) == 0) { + ck = CK1002; + } + } + else if (classId == 13) { + if (tc_strcmp(laiyuan.c_str(), ZIZHI) == 0 || tc_strcmp(laiyuan.c_str(), XUSHE) == 0) { + ck = CK1002; + } + else if (tc_strcmp(laiyuan.c_str(), WAIGOU) == 0) { + ck = CK1001; + } + } + else if (classId >= 100101 && classId <= 100999) { + if (tc_strcmp(laiyuan.c_str(), ZIZHI) == 0 || tc_strcmp(laiyuan.c_str(), WAIGOU) == 0) { + ck = CK1003; + } + } + else if ((classId >= 1501 && classId <= 2599) || (classId >= 150101 && classId <= 259999)) { + if (tc_strcmp(laiyuan.c_str(), WAIGOU) == 0) { + ck = CK1001; + } + } + TiXmlElement* field = new TiXmlElement("field"); + field->SetAttribute("name", INBOUND_WAREHOUSE_CODE); + field->SetAttribute("type", "string"); + set_xml_value(field, ck.c_str()); + TiXmlElement* field2 = new TiXmlElement("field"); + field2->SetAttribute("name", OUTBOUND_WAREHOUSE_CODE); + field2->SetAttribute("type", "string"); + set_xml_value(field2, ck.c_str()); + fieldX->LinkEndChild(field); + fieldX->LinkEndChild(field2); +} +int QF_ERP_wl(EPM_action_message_t msg) { + int ifail = ITK_ok, arg_cnt = 0, task_count = 0; + char* arg = NULL, * argflag = NULL, * argvalue = NULL, * propvalue = NULL, * objectstring = NULL, * task_name = NULL, * task_type = NULL; + char* user_id = NULL, * user_name = NULL; + tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, user_tag = NULLTAG; + tag_t * task_tags = NULL; + bool bypass = false; + + vector target_tags; + char* log_file_path; + FILE* LOG; + vector gi_configs, pli_configs; + vector pref_values, target_types; + + /** + * 0=endpoint + * 1=host prod + * 2=host ver + * 3=host ip + * 4=host lang + * 5=host acct + * 6=service prod + * 7=service name + * 8=service ip + * 9=param product name + * 10=param template name + * ѡ11=host id + * ѡ12=service id + */ + string end_point, host_prod, host_ver, host_ip, host_lang, host_acct; + string service_prod, service_name, service_ip; + string param_productname, param_template_name, param_import_data; + + arg_cnt = TC_number_of_arguments(msg.arguments); + if (arg_cnt > 0) { + for (int i = 0; i < arg_cnt; i++) { + arg = TC_next_argument(msg.arguments); + ITKCALL(ifail = ITK_ask_argument_named_value(arg, &argflag, &argvalue)); + if (strcmp(argflag, "bypass") == 0) { + bypass = true; + } + else if (strcmp(argflag, "include_type") == 0) { + Split(argvalue, ";", target_types); + } + MEM_free(argflag); + MEM_free(argvalue); + } + } + ITKCALL(POM_get_user(&user_name, &user_tag)); + ITKCALL(SA_ask_user_identifier2(user_tag, &user_id)); + if (debug) { + initUserDir(user_id); + CreateUserFile(debug, "QF_ERP_wl", user_id, &log_file_path, &LOG); + printf("־ļ·%s\n", log_file_path); + } + DOFREE(user_id); + WriteLog(debug, "============================================================="); + WriteLog(debug, "ʼִУQF_ERP_wl"); + WriteLog(debug, "============================================================="); + + WriteToFile(LOG, "START"); + task_tag = msg.task; + if (task_tag == NULLTAG) { + goto end; + } + if (bypass) { + POM_AM__set_application_bypass(true); + } + ifail = getAllTargetRevs(task_tag, target_tags, target_types); + if (target_tags.size() == 0) { + WriteToFile(LOG, "TARGET NOT FOUND"); + WriteLog(debug, "δҵҪݵĶ"); + goto end; + } + //ѡ + { + vector gi_prefs, pli_prefs; + ifail = getPrefStrings(PREF_ERP_WL, TC_preference_site, pref_values); + if (pref_values.size() < 11) { + EMH_store_error_s2(EMH_severity_error, ITK_err, "ѡô", PREF_ERP_WL); + ifail = ITK_err; + goto end; + } + ifail = getPrefStrings(PREF_ERP_WL_GI, TC_preference_site, gi_prefs); + parseErpConfigs(gi_prefs, 0, gi_configs); + if (gi_configs.size() == 0) { + EMH_store_error_s2(EMH_severity_error, ITK_err, "ѡô", PREF_ERP_WL_GI); + ifail = ITK_err; + goto end; + } + ifail = getPrefStrings(PREF_ERP_WL_PLI, TC_preference_site, pli_prefs); + parseErpConfigs(pli_prefs, 0, pli_configs); + if (pli_configs.size() == 0) { + EMH_store_error_s2(EMH_severity_error, ITK_err, "ѡô", PREF_ERP_WL_PLI); + ifail = ITK_err; + goto end; + } + } + // xml + { + char date_string[20]; + struct tm* p; + time_t now; + time(&now); + p = localtime(&now); + memset(date_string, 0, sizeof(date_string)); + sprintf(date_string, "%4d%02d%02d%02d%02d%02d%03d", 1900 + p->tm_year, p->tm_mon + 1, p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec, getCurrentMilliSeconds()); + + TiXmlDocument* doc = new TiXmlDocument(); + + TiXmlElement* host = new TiXmlElement("host"); + TiXmlElement* service = new TiXmlElement("service"); + host->SetAttribute("prod", pref_values[1].c_str()); + host->SetAttribute("ver", pref_values[2].c_str()); + host->SetAttribute("ip", pref_values[3].c_str()); + host->SetAttribute("id", pref_values.size()>11?pref_values[11].c_str():""); + host->SetAttribute("lang", pref_values[4].c_str()); + host->SetAttribute("timestamp", date_string); + host->SetAttribute("acct", pref_values[5].c_str()); + service->SetAttribute("prod", pref_values[6].c_str()); + service->SetAttribute("name", pref_values[7].c_str()); + service->SetAttribute("ip", pref_values[8].c_str()); + service->SetAttribute("id", pref_values.size() > 12 ? pref_values[12].c_str() : ""); + + TiXmlElement* request = new TiXmlElement("request"); + request->SetAttribute("type", "sync"); + string host_service_str; + TiXmlPrinter host_printer, service_printer; + host->Accept(&host_printer); + host_service_str.append(trim(host_printer.CStr())); + service->Accept(&service_printer); + host_service_str.append(trim(service_printer.CStr())); + + //unsigned char buffer[2048]; + //memcpy(buffer, host_service_str.c_str(), host_service_str.size()); + WriteLog(debug, "Get MD5 From \"%s\"", host_service_str.c_str()); + request->SetAttribute("key", str2md5(host_service_str).c_str()); + + doc->LinkEndChild(request); + request->LinkEndChild(host); + request->LinkEndChild(service); + TiXmlElement* payload = new TiXmlElement("payload"); + request->LinkEndChild(payload); + TiXmlElement* param = new TiXmlElement("param"); + param->SetAttribute("key", "std_data"); + param->SetAttribute("type", "xml"); + payload->LinkEndChild(param); + TiXmlElement* data_request = new TiXmlElement("data_request"); + param->LinkEndChild(data_request); + TiXmlElement* datainfo = new TiXmlElement("datainfo"); + data_request->LinkEndChild(datainfo); + TiXmlElement* param1 = new TiXmlElement("parameter"); + param1->SetAttribute("key", "productName"); + param1->SetAttribute("type", "string"); + set_xml_value(param1, pref_values[9].c_str()); + datainfo->LinkEndChild(param1); + TiXmlElement* param2 = new TiXmlElement("parameter"); + param2->SetAttribute("key", "templateName"); + param2->SetAttribute("type", "string"); + set_xml_value(param2, pref_values[10].c_str()); + datainfo->LinkEndChild(param2); + TiXmlElement* param3 = new TiXmlElement("parameter"); + param3->SetAttribute("key", "importData"); + param3->SetAttribute("type", "data"); + datainfo->LinkEndChild(param3); + TiXmlElement* data = new TiXmlElement("data"); + data->SetAttribute("name", "ITEM"); + param3->LinkEndChild(data); + TiXmlElement* row = new TiXmlElement("row"); + row->SetAttribute("seq", 1); + data->LinkEndChild(row); + TiXmlElement* detail_gi = new TiXmlElement("detail"); + detail_gi->SetAttribute("name", "GI"); + row->LinkEndChild(detail_gi); + for (int i = 0; i < target_tags.size(); i++) { + TiXmlElement* row_gi = new TiXmlElement("row"); + row_gi->SetAttribute("seq", i + 1); + detail_gi->LinkEndChild(row_gi); + ifail = read_data(NULLTAG, target_tags[i], NULLTAG, NULLTAG, gi_configs, row_gi); + if (ifail != ITK_ok) { + goto end; + } + } + TiXmlElement* detail_pli = new TiXmlElement("detail"); + detail_pli->SetAttribute("name", "PLI"); + row->LinkEndChild(detail_pli); + for (int i = 0; i < target_tags.size(); i++) { + TiXmlElement* row_pli = new TiXmlElement("row"); + row_pli->SetAttribute("seq", i + 1); + detail_pli->LinkEndChild(row_pli); + ifail = read_data(NULLTAG, target_tags[i], NULLTAG, NULLTAG, pli_configs, row_pli); + if (ifail != ITK_ok) { + goto end; + } + //TODO 20240118 pliֶܹʱ + WriteToFile(LOG, "ʼpliܹʱ"); + addZgs(target_tags[i], row_pli); + //TODO 20240116 ڲֶֿ⴦ + addCk(target_tags[i], row_pli); + } + TiXmlPrinter doc_printer; + doc->Accept(&doc_printer); + if (LOG) { + WriteToFile(LOG, ""); + WriteToFile(LOG, doc_printer.CStr()); + } + soap* soap = soap_new(); + soap_init(soap); + soap_register_plugin(soap, plugin); + soap_set_mode(soap, SOAP_C_UTFSTRING); + _WS1__invokeSrv* soapReq = new _WS1__invokeSrv(); + soapReq->soap_default(soap); + soapReq->in0.assign(doc_printer.CStr()); + _WS1__invokeSrvResponse response; + ifail = soap_call___WS1__invokeSrv(soap, pref_values[0].c_str(), NULL, soapReq, response); + WriteToFile(LOG, "REQUEST SENT"); + if (ifail == SOAP_OK) { + if (LOG) { + WriteToFile(LOG, "RETURN DATA"); + WriteToFile(LOG, response.invokeSrvReturn.c_str()); + } + ifail = parseResponse(response.invokeSrvReturn); + } + else { + WriteLog(debug, "ýӿ쳣%d", ifail); + soap_print_fault(soap, stderr); + ifail = ITK_err; + EMH_store_error_s1(EMH_severity_error, ITK_err, "ýӿʧ"); + } + soap_destroy(soap); + soap_done(soap); + //ifail = parseResponse(" 019 ƽ̨ͬ 99299d70-ce98-43d3-890b-0c2331f04ca7 2.0 000 1 ʧϢ "); + } + +end: + POM_AM__set_application_bypass(false); + WriteToFile(LOG, "FINISH"); + target_tags.clear(); + if (LOG) + { + fclose(LOG); + LOG = NULL; + } + target_types.clear(); + gi_configs.clear(); + pli_configs.clear(); + pref_values.clear(); + WriteLog(debug, "============================================================="); + WriteLog(debug, "ִнQF_ERP_wl"); + WriteLog(debug, "============================================================="); + return ifail; +} + + +int QF_ERP_BOM(EPM_action_message_t msg) { + int ifail = ITK_ok, arg_cnt = 0, task_count = 0; + char* arg = NULL, * argflag = NULL, * argvalue = NULL, * propvalue = NULL, * objectstring = NULL, * task_name = NULL, * task_type = NULL; + char* user_id = NULL, * user_name = NULL; + tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, user_tag = NULLTAG; + tag_t* task_tags = NULL; + bool bypass = false; + bool has_err = false; + vector target_tags; + char* log_file_path; + FILE* LOG; + vector parent_configs, child_configs, zz_parent_configs, zz_child_configs, gi_configs, pli_configs; + vector target_types; + vector wl_pref_values, bom_pref_values; + TiXmlDocument* bom_doc = new TiXmlDocument(); + TiXmlDocument* wl_doc = new TiXmlDocument(); + TiXmlElement* bom_data, *wl_pli, *wl_gi; + /** + * 0=endpoint + * 1=host prod + * 2=host ver + * 3=host ip + * 4=host lang + * 5=host acct + * 6=service prod + * 7=service name + * 8=service ip + * 9=param product name + * 10=param template name + * ѡ11=host id + * ѡ12=service id + */ + string end_point, host_prod, host_ver, host_ip, host_lang, host_acct; + string service_prod, service_name, service_ip; + string param_productname, param_template_name, param_import_data; + vector added_lines; + arg_cnt = TC_number_of_arguments(msg.arguments); + if (arg_cnt > 0) { + for (int i = 0; i < arg_cnt; i++) { + arg = TC_next_argument(msg.arguments); + ITKCALL(ifail = ITK_ask_argument_named_value(arg, &argflag, &argvalue)); + if (strcmp(argflag, "bypass") == 0) { + bypass = true; + } + else if (strcmp(argflag, "include_type") == 0) { + Split(argvalue, ";", target_types); + } + MEM_free(argflag); + MEM_free(argvalue); + } + } + ITKCALL(POM_get_user(&user_name, &user_tag)); + ITKCALL(SA_ask_user_identifier2(user_tag, &user_id)); + if (debug) { + initUserDir(user_id); + CreateUserFile(debug, "QF_ERP_BOM", user_id, &log_file_path, &LOG); + printf("־ļ·%s\n", log_file_path); + } + DOFREE(user_id); + WriteLog(debug, "============================================================="); + WriteLog(debug, "ʼִУQF_ERP_BOM"); + WriteLog(debug, "============================================================="); + + WriteToFile(LOG, "START"); + task_tag = msg.task; + if (task_tag == NULLTAG) { + goto end; + } + if (bypass) { + POM_AM__set_application_bypass(true); + } + ifail = getAllTargetRevs(task_tag, target_tags, target_types); + if (target_tags.size() == 0) { + WriteToFile(LOG, "TARGET NOT FOUND"); + WriteLog(debug, "δҵҪݵĶ"); + goto end; + } + //ѡ + { + vector gi_prefs, pli_prefs; + ifail = getPrefStrings(PREF_ERP_WL, TC_preference_site, wl_pref_values); + if (wl_pref_values.size() < 11) { + EMH_store_error_s2(EMH_severity_error, ITK_err, "ѡô", PREF_ERP_WL); + ifail = ITK_err; + goto end; + } + ifail = getPrefStrings(PREF_ERP_WL_GI, TC_preference_site, gi_prefs); + parseErpConfigs(gi_prefs, 0, gi_configs); + if (gi_configs.size() == 0) { + EMH_store_error_s2(EMH_severity_error, ITK_err, "ѡô", PREF_ERP_WL_GI); + ifail = ITK_err; + goto end; + } + ifail = getPrefStrings(PREF_ERP_WL_PLI, TC_preference_site, pli_prefs); + parseErpConfigs(pli_prefs, 0, pli_configs); + if (pli_configs.size() == 0) { + EMH_store_error_s2(EMH_severity_error, ITK_err, "ѡô", PREF_ERP_WL_PLI); + ifail = ITK_err; + goto end; + } + } + //BOMѡ + { + vector parent_prefs, child_prefs, zz_parent_prefs, zz_child_prefs; + ifail = getPrefStrings(PREF_ERP_BOM, TC_preference_site, bom_pref_values); + if (bom_pref_values.size() < 11) { + EMH_store_error_s2(EMH_severity_error, ITK_err, "ѡô", PREF_ERP_BOM); + ifail = ITK_err; + goto end; + } + ifail = getPrefStrings(PREF_ERP_BOM_PARENT, TC_preference_site, parent_prefs); + parseErpConfigs(parent_prefs, 0, parent_configs); + if (parent_configs.size() == 0) { + EMH_store_error_s2(EMH_severity_error, ITK_err, "ѡô", PREF_ERP_BOM_PARENT); + ifail = ITK_err; + goto end; + } + ifail = getPrefStrings(PREF_ERP_BOM_CHILD, TC_preference_site, child_prefs); + parseErpConfigs(child_prefs, 0, child_configs); + if (child_configs.size() == 0) { + EMH_store_error_s2(EMH_severity_error, ITK_err, "ѡô", PREF_ERP_BOM_CHILD); + ifail = ITK_err; + goto end; + } + + ifail = getPrefStrings(PREF_ERP_BOM_PARENT_ZZ, TC_preference_site, zz_parent_prefs); + parseErpConfigs(zz_parent_prefs, 0, zz_parent_configs); + if (zz_parent_configs.size() == 0) { + EMH_store_error_s2(EMH_severity_error, ITK_err, "ѡô", PREF_ERP_BOM_PARENT_ZZ); + ifail = ITK_err; + goto end; + } + ifail = getPrefStrings(PREF_ERP_BOM_CHILD_ZZ, TC_preference_site, zz_child_prefs); + parseErpConfigs(zz_child_prefs, 0, zz_child_configs); + if (zz_child_configs.size() == 0) { + EMH_store_error_s2(EMH_severity_error, ITK_err, "ѡô", PREF_ERP_BOM_CHILD_ZZ); + ifail = ITK_err; + goto end; + } + } + // xml + { + char date_string[20]; + struct tm* p; + time_t now; + time(&now); + p = localtime(&now); + memset(date_string, 0, sizeof(date_string)); + sprintf(date_string, "%4d%02d%02d%02d%02d%02d%03d", 1900 + p->tm_year, p->tm_mon + 1, p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec, getCurrentMilliSeconds()); + + TiXmlElement* host = new TiXmlElement("host"); + TiXmlElement* service = new TiXmlElement("service"); + host->SetAttribute("prod", wl_pref_values[1].c_str()); + host->SetAttribute("ver", wl_pref_values[2].c_str()); + host->SetAttribute("ip", wl_pref_values[3].c_str()); + host->SetAttribute("id", wl_pref_values.size() > 11 ? wl_pref_values[11].c_str() : ""); + host->SetAttribute("lang", wl_pref_values[4].c_str()); + host->SetAttribute("timestamp", date_string); + host->SetAttribute("acct", wl_pref_values[5].c_str()); + service->SetAttribute("prod", wl_pref_values[6].c_str()); + service->SetAttribute("name", wl_pref_values[7].c_str()); + service->SetAttribute("ip", wl_pref_values[8].c_str()); + service->SetAttribute("id", wl_pref_values.size() > 12 ? wl_pref_values[12].c_str() : ""); + + TiXmlElement* request = new TiXmlElement("request"); + request->SetAttribute("type", "sync"); + string host_service_str; + TiXmlPrinter host_printer, service_printer; + host->Accept(&host_printer); + host_service_str.append(trim(host_printer.CStr())); + service->Accept(&service_printer); + host_service_str.append(trim(service_printer.CStr())); + + //unsigned char buffer[2048]; + //memcpy(buffer, host_service_str.c_str(), host_service_str.size()); + WriteLog(debug, "Get MD5 From \"%s\"", host_service_str.c_str()); + request->SetAttribute("key", str2md5(host_service_str).c_str()); + + wl_doc->LinkEndChild(request); + request->LinkEndChild(host); + request->LinkEndChild(service); + TiXmlElement* payload = new TiXmlElement("payload"); + request->LinkEndChild(payload); + TiXmlElement* param = new TiXmlElement("param"); + param->SetAttribute("key", "std_data"); + param->SetAttribute("type", "xml"); + payload->LinkEndChild(param); + TiXmlElement* data_request = new TiXmlElement("data_request"); + param->LinkEndChild(data_request); + TiXmlElement* datainfo = new TiXmlElement("datainfo"); + data_request->LinkEndChild(datainfo); + TiXmlElement* param1 = new TiXmlElement("parameter"); + param1->SetAttribute("key", "productName"); + param1->SetAttribute("type", "string"); + set_xml_value(param1, wl_pref_values[9].c_str()); + datainfo->LinkEndChild(param1); + TiXmlElement* param2 = new TiXmlElement("parameter"); + param2->SetAttribute("key", "templateName"); + param2->SetAttribute("type", "string"); + set_xml_value(param2, wl_pref_values[10].c_str()); + datainfo->LinkEndChild(param2); + TiXmlElement* param3 = new TiXmlElement("parameter"); + param3->SetAttribute("key", "importData"); + param3->SetAttribute("type", "data"); + datainfo->LinkEndChild(param3); + TiXmlElement* data = new TiXmlElement("data"); + data->SetAttribute("name", "ITEM"); + param3->LinkEndChild(data); + TiXmlElement* row = new TiXmlElement("row"); + row->SetAttribute("seq", 1); + data->LinkEndChild(row); + wl_gi = new TiXmlElement("detail"); + wl_gi->SetAttribute("name", "GI"); + row->LinkEndChild(wl_gi); + /*for (int i = 0; i < target_tags.size(); i++) { + TiXmlElement* row_gi = new TiXmlElement("row"); + row_gi->SetAttribute("seq", i + 1); + detail_gi->LinkEndChild(row_gi); + ifail = read_data(NULLTAG, target_tags[i], gi_configs, row_gi); + if (ifail != ITK_ok) { + goto end; + } + }*/ + wl_pli = new TiXmlElement("detail"); + wl_pli->SetAttribute("name", "PLI"); + row->LinkEndChild(wl_pli); + /*for (int i = 0; i < target_tags.size(); i++) { + TiXmlElement* row_pli = new TiXmlElement("row"); + row_pli->SetAttribute("seq", i + 1); + detail_pli->LinkEndChild(row_pli); + ifail = read_data(NULLTAG, target_tags[i], pli_configs, row_pli); + if (ifail != ITK_ok) { + goto end; + } + }*/ + } + + // BOMxml + { + char date_string[20]; + struct tm* p; + time_t now; + time(&now); + p = localtime(&now); + memset(date_string, 0, sizeof(date_string)); + sprintf(date_string, "%4d%02d%02d%02d%02d%02d%03d", 1900 + p->tm_year, p->tm_mon + 1, p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec, getCurrentMilliSeconds()); + + + + TiXmlElement* host = new TiXmlElement("host"); + TiXmlElement* service = new TiXmlElement("service"); + host->SetAttribute("prod", bom_pref_values[1].c_str()); + host->SetAttribute("ver", bom_pref_values[2].c_str()); + host->SetAttribute("ip", bom_pref_values[3].c_str()); + host->SetAttribute("id", bom_pref_values.size() > 11 ? bom_pref_values[11].c_str() : ""); + host->SetAttribute("lang", bom_pref_values[4].c_str()); + host->SetAttribute("timestamp", date_string); + host->SetAttribute("acct", bom_pref_values[5].c_str()); + service->SetAttribute("prod", bom_pref_values[6].c_str()); + service->SetAttribute("name", bom_pref_values[7].c_str()); + service->SetAttribute("ip", bom_pref_values[8].c_str()); + service->SetAttribute("id", bom_pref_values.size() > 12 ? bom_pref_values[12].c_str() : ""); + + TiXmlElement* request = new TiXmlElement("request"); + request->SetAttribute("type", "sync"); + string host_service_str; + TiXmlPrinter host_printer, service_printer; + + host->Accept(&host_printer); + host_service_str.append(trim(host_printer.CStr())); + + service->Accept(&service_printer); + host_service_str.append(trim(service_printer.CStr())); + + //unsigned char buffer[2048]; + //memcpy(buffer, host_service_str.c_str(), host_service_str.size()); + WriteLog(debug, "Get MD5 From \"%s\"", host_service_str.c_str()); + request->SetAttribute("key", str2md5(host_service_str).c_str()); + + + bom_doc->LinkEndChild(request); + request->LinkEndChild(host); + request->LinkEndChild(service); + TiXmlElement* payload = new TiXmlElement("payload"); + request->LinkEndChild(payload); + TiXmlElement* param = new TiXmlElement("param"); + param->SetAttribute("key", "std_data"); + param->SetAttribute("type", "xml"); + payload->LinkEndChild(param); + TiXmlElement* data_request = new TiXmlElement("data_request"); + param->LinkEndChild(data_request); + TiXmlElement* datainfo = new TiXmlElement("datainfo"); + data_request->LinkEndChild(datainfo); + TiXmlElement* param1 = new TiXmlElement("parameter"); + param1->SetAttribute("key", "productName"); + param1->SetAttribute("type", "string"); + set_xml_value(param1, bom_pref_values[9].c_str()); + datainfo->LinkEndChild(param1); + TiXmlElement* param2 = new TiXmlElement("parameter"); + param2->SetAttribute("key", "templateName"); + param2->SetAttribute("type", "string"); + set_xml_value(param2, bom_pref_values[10].c_str()); + datainfo->LinkEndChild(param2); + TiXmlElement* param3 = new TiXmlElement("parameter"); + param3->SetAttribute("key", "importData"); + param3->SetAttribute("type", "data"); + datainfo->LinkEndChild(param3); + bom_data = new TiXmlElement("data"); + bom_data->SetAttribute("name", "BOM"); + param3->LinkEndChild(bom_data); + + } + //ȡ + { + int bomSeq = 1, wlSeq = 1; + for (int i = 0; i < target_tags.size(); i++) { + ifail = read_bom_data(target_tags[i], parent_configs, child_configs, zz_parent_configs, zz_child_configs, pli_configs, gi_configs, bom_data, wl_pli, wl_gi, bomSeq, wlSeq, added_lines); + if (ifail != ITK_ok) { + goto end; + } + } + } + + { + TiXmlPrinter bom_doc_printer; + bom_doc->Accept(&bom_doc_printer); + + TiXmlPrinter wl_doc_printer; + wl_doc->Accept(&wl_doc_printer); + + soap* soap = soap_new(); + soap_init(soap); + soap_register_plugin(soap, plugin); + soap_set_mode(soap, SOAP_C_UTFSTRING); + + + //BOM + { + if (LOG) { + WriteToFile(LOG, "SEND BOM"); + WriteToFile(LOG, bom_doc_printer.CStr()); + } + _WS1__invokeSrv* soapReq = new _WS1__invokeSrv(); + soapReq->soap_default(soap); + soapReq->in0.assign(bom_doc_printer.CStr()); + _WS1__invokeSrvResponse response; + WriteToFile(LOG, "..."); + ifail = soap_call___WS1__invokeSrv(soap, bom_pref_values[0].c_str(), NULL, soapReq, response); + WriteToFile(LOG, "REQUEST SENT"); + if (ifail == SOAP_OK) { + if (LOG) { + WriteToFile(LOG, "RETURN DATA"); + WriteToFile(LOG, response.invokeSrvReturn.c_str()); + } + ifail = parseResponse(response.invokeSrvReturn); + } + else { + WriteLog(debug, "ýӿ쳣%d", ifail); + soap_print_fault(soap, stderr); + ifail = ITK_err; + EMH_store_error_s1(EMH_severity_error, ITK_err, "ýӿʧ"); + } + if (ifail != ITK_ok) { + has_err = true; + } + } + // + { + if (LOG) { + WriteToFile(LOG, "SEND WL"); + WriteToFile(LOG, wl_doc_printer.CStr()); + } + _WS1__invokeSrv* soapReq = new _WS1__invokeSrv(); + soapReq->soap_default(soap); + soapReq->in0.assign(wl_doc_printer.CStr()); + _WS1__invokeSrvResponse response; + WriteToFile(LOG, "..."); + ifail = soap_call___WS1__invokeSrv(soap, wl_pref_values[0].c_str(), NULL, soapReq, response); + WriteToFile(LOG, "REQUEST SENT"); + if (ifail == SOAP_OK) { + if (LOG) { + WriteToFile(LOG, "RETURN DATA"); + WriteToFile(LOG, response.invokeSrvReturn.c_str()); + } + ifail = parseResponse(response.invokeSrvReturn); + } + else { + WriteLog(debug, "ýӿ쳣%d", ifail); + soap_print_fault(soap, stderr); + ifail = ITK_err; + EMH_store_error_s1(EMH_severity_error, ITK_err, "ýӿʧ"); + } + if (ifail != ITK_ok) { + has_err = true; + } + } + + soap_destroy(soap); + soap_done(soap); + //ifail = parseResponse(" 019 ƽ̨ͬ 99299d70-ce98-43d3-890b-0c2331f04ca7 2.0 000 1 ʧϢ "); + } + +end: + POM_AM__set_application_bypass(false); + WriteToFile(LOG, "FINISH"); + target_tags.clear(); + if (LOG) + { + fclose(LOG); + LOG = NULL; + } + if (has_err) { + ifail = ITK_err; + } + target_types.clear(); + parent_configs.clear(); + child_configs.clear(); + zz_parent_configs.clear(); + zz_child_configs.clear(); + gi_configs.clear(); + pli_configs.clear(); + bom_pref_values.clear(); + wl_pref_values.clear(); + added_lines.clear(); + WriteLog(debug, "============================================================="); + WriteLog(debug, "ִнQF_ERP_BOM"); + WriteLog(debug, "============================================================="); + return ifail; +} + + +int QF_ERP_BOP(EPM_action_message_t msg) { + int ifail = ITK_ok, arg_cnt = 0, task_count = 0; + char* arg = NULL, * argflag = NULL, * argvalue = NULL, * propvalue = NULL, * objectstring = NULL, * task_name = NULL, * task_type = NULL; + char* user_id = NULL, * user_name = NULL; + tag_t task_tag = NULLTAG, rootTask_tag = NULLTAG, user_tag = NULLTAG; + tag_t* task_tags = NULL; + bool bypass = false; + bool has_err = false; + vector target_tags; + char* log_file_path; + FILE* LOG; + vector parent_configs, child_configs1, child_configs2, child_configs3, child_configs4, wl_data_configs; + vector wl_pref_values, bom_pref_values, target_types; + TiXmlDocument* bom_doc = new TiXmlDocument(); + TiXmlDocument* wl_doc = new TiXmlDocument(); + TiXmlElement* bom_data, * wl_data; + vector added_lines; + string end_point, host_prod, host_ver, host_ip, host_lang, host_acct; + string service_prod, service_name, service_ip; + string param_productname, param_template_name, param_import_data; + + arg_cnt = TC_number_of_arguments(msg.arguments); + if (arg_cnt > 0) { + for (int i = 0; i < arg_cnt; i++) { + arg = TC_next_argument(msg.arguments); + ITKCALL(ifail = ITK_ask_argument_named_value(arg, &argflag, &argvalue)); + if (strcmp(argflag, "bypass") == 0) { + bypass = true; + } + else if (strcmp(argflag, "include_type") == 0) { + Split(argvalue, ";", target_types); + } + MEM_free(argflag); + MEM_free(argvalue); + } + } + ITKCALL(POM_get_user(&user_name, &user_tag)); + ITKCALL(SA_ask_user_identifier2(user_tag, &user_id)); + if (debug) { + initUserDir(user_id); + CreateUserFile(debug, "QF_ERP_BOP", user_id, &log_file_path, &LOG); + printf("־ļ·%s\n", log_file_path); + } + DOFREE(user_id); + WriteLog(debug, "============================================================="); + WriteLog(debug, "ʼִУQF_ERP_BOP"); + WriteLog(debug, "============================================================="); + + WriteToFile(LOG, "START"); + task_tag = msg.task; + if (task_tag == NULLTAG) { + goto end; + } + if (bypass) { + POM_AM__set_application_bypass(true); + } + ifail = getAllTargetRevs(task_tag, target_tags, target_types); + if (target_tags.size() == 0) { + WriteToFile(LOG, "TARGET NOT FOUND"); + WriteLog(debug, "δҵҪݵĶ"); + goto end; + } + // ļѡ + ftp_dir.clear(); + local_dir.clear(); + { + vector data_prefs; + ifail = getPrefStrings(PREF_FTP_PATH, TC_preference_site, data_prefs); + if (data_prefs.size() == 2) { + ftp_dir.assign(data_prefs[0]); + local_dir.assign(data_prefs[1]); + } + data_prefs.clear(); + } + WriteLog(debug, "ftp·%s", ftp_dir.c_str()); + WriteLog(debug, "·%s", local_dir.c_str()); + if (ftp_dir.size() == 0 || local_dir.size() == 0) { + EMH_store_error_s2(EMH_severity_error, ITK_err, "ѡô", PREF_FTP_PATH); + ifail = ITK_err; + goto end; + } + if (!std::experimental::filesystem::is_directory(local_dir)) { + WriteLog(debug, "½Ŀ¼"); + if (std::experimental::filesystem::create_directories(local_dir)) { + WriteLog(debug, "½"); + } + else { + WriteLog(debug, "½ʧ"); + EMH_store_error_s2(EMH_severity_error, ITK_err, "Ŀ¼ʧ", local_dir.c_str()); + ifail = ITK_err; + goto end; + } + } + //ѡ + { + vector data_prefs; + ifail = getPrefStrings(PREF_MES_WL, TC_preference_site, wl_pref_values); + if (wl_pref_values.size() != 13) { + EMH_store_error_s2(EMH_severity_error, ITK_err, "ѡô", PREF_MES_WL); + ifail = ITK_err; + goto end; + } + ifail = getPrefStrings(PREF_MES_WL_DATA, TC_preference_site, data_prefs); + parseErpConfigs(data_prefs, 0, wl_data_configs); + if (wl_data_configs.size() == 0) { + EMH_store_error_s2(EMH_severity_error, ITK_err, "ѡô", PREF_MES_WL_DATA); + ifail = ITK_err; + goto end; + } + data_prefs.clear(); + } + //BOMѡ + { + vector parent_prefs; + ifail = getPrefStrings(PREF_MES_BOM, TC_preference_site, bom_pref_values); + if (bom_pref_values.size() != 10) { + EMH_store_error_s2(EMH_severity_error, ITK_err, "ѡô", PREF_MES_BOM); + ifail = ITK_err; + goto end; + } + ifail = getPrefStrings(PREF_MES_BOM_PARENT, TC_preference_site, parent_prefs); + parseErpConfigs(parent_prefs, 0, parent_configs); + if (parent_configs.size() == 0) { + EMH_store_error_s2(EMH_severity_error, ITK_err, "ѡô", PREF_MES_BOM_PARENT); + ifail = ITK_err; + goto end; + } + { + vector child_prefs; + ifail = getPrefStrings(PREF_MES_BOM_CHILD1, TC_preference_site, child_prefs); + parseErpConfigs(child_prefs, 0, child_configs1); + if (child_configs1.size() == 0) { + EMH_store_error_s2(EMH_severity_error, ITK_err, "ѡô", PREF_MES_BOM_CHILD1); + ifail = ITK_err; + goto end; + } + child_prefs.clear(); + } + { + vector child_prefs; + ifail = getPrefStrings(PREF_MES_BOM_CHILD2, TC_preference_site, child_prefs); + parseErpConfigs(child_prefs, 0, child_configs2); + if (child_configs2.size() == 0) { + EMH_store_error_s2(EMH_severity_error, ITK_err, "ѡô", PREF_MES_BOM_CHILD2); + ifail = ITK_err; + goto end; + } + child_prefs.clear(); + } + { + vector child_prefs; + ifail = getPrefStrings(PREF_MES_BOM_CHILD3, TC_preference_site, child_prefs); + parseErpConfigs(child_prefs, 0, child_configs3); + if (child_configs3.size() == 0) { + EMH_store_error_s2(EMH_severity_error, ITK_err, "ѡô", PREF_MES_BOM_CHILD3); + ifail = ITK_err; + goto end; + } + child_prefs.clear(); + } + { + vector child_prefs; + ifail = getPrefStrings(PREF_MES_BOM_CHILD4, TC_preference_site, child_prefs); + parseErpConfigs(child_prefs, 0, child_configs4); + if (child_configs4.size() == 0) { + EMH_store_error_s2(EMH_severity_error, ITK_err, "ѡô", PREF_MES_BOM_CHILD4); + ifail = ITK_err; + goto end; + } + child_prefs.clear(); + } + parent_prefs.clear(); + } + // xml + { + char date_string[20]; + struct tm* p; + time_t now; + time(&now); + p = localtime(&now); + memset(date_string, 0, sizeof(date_string)); + sprintf(date_string, "%4d%02d%02d%02d%02d%02d%03d", 1900 + p->tm_year, p->tm_mon + 1, p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec, getCurrentMilliSeconds()); + + TiXmlElement* host = new TiXmlElement("host"); + TiXmlElement* service = new TiXmlElement("service"); + TiXmlElement* datakey = new TiXmlElement("datakey"); + host->SetAttribute("prod", wl_pref_values[1].c_str()); + host->SetAttribute("ver", wl_pref_values[2].c_str()); + host->SetAttribute("ip", wl_pref_values[3].c_str()); + host->SetAttribute("id", wl_pref_values[4].c_str()); + host->SetAttribute("acct", wl_pref_values[5].c_str()); + host->SetAttribute("timestamp", date_string); + service->SetAttribute("prod", wl_pref_values[6].c_str()); + service->SetAttribute("ip", wl_pref_values[7].c_str()); + service->SetAttribute("id", wl_pref_values[8].c_str()); + service->SetAttribute("name", wl_pref_values[9].c_str()); + { + TiXmlElement* key = new TiXmlElement("key"); + key->SetAttribute("name", "EntId"); + set_xml_value(key, wl_pref_values[10].c_str()); + datakey->LinkEndChild(key); + } + { + TiXmlElement* key = new TiXmlElement("key"); + key->SetAttribute("name", "CompanyId"); + set_xml_value(key, wl_pref_values[11].c_str()); + datakey->LinkEndChild(key); + } + { + TiXmlElement* key = new TiXmlElement("key"); + key->SetAttribute("name", "item_no"); + set_xml_value(key, wl_pref_values[12].c_str()); + datakey->LinkEndChild(key); + } + + TiXmlElement* request = new TiXmlElement("request"); + request->SetAttribute("type", "sync"); + string host_service_str; + TiXmlPrinter host_printer, service_printer; + host->Accept(&host_printer); + host_service_str.append(trim(host_printer.CStr())); + service->Accept(&service_printer); + host_service_str.append(trim(service_printer.CStr())); + + //unsigned char buffer[2048]; + //memcpy(buffer, host_service_str.c_str(), host_service_str.size()); + WriteLog(debug, "Get MD5 From \"%s\"", host_service_str.c_str()); + request->SetAttribute("key", str2md5(host_service_str).c_str()); + + wl_doc->LinkEndChild(request); + request->LinkEndChild(host); + request->LinkEndChild(service); + request->LinkEndChild(datakey); + + + TiXmlElement* payload = new TiXmlElement("payload"); + request->LinkEndChild(payload); + TiXmlElement* param = new TiXmlElement("param"); + param->SetAttribute("key", "std_data"); + param->SetAttribute("type", "xml"); + payload->LinkEndChild(param); + TiXmlElement* data_request = new TiXmlElement("data_request"); + param->LinkEndChild(data_request); + TiXmlElement* datainfo = new TiXmlElement("datainfo"); + data_request->LinkEndChild(datainfo); + TiXmlElement* param3 = new TiXmlElement("parameter"); + param3->SetAttribute("key", "item_data"); + param3->SetAttribute("type", "data"); + datainfo->LinkEndChild(param3); + wl_data = new TiXmlElement("data"); + wl_data->SetAttribute("name", "ITEM"); + param3->LinkEndChild(wl_data); + } + + // BOMxml + { + char date_string[20]; + struct tm* p; + time_t now; + time(&now); + p = localtime(&now); + memset(date_string, 0, sizeof(date_string)); + sprintf(date_string, "%4d%02d%02d%02d%02d%02d%03d", 1900 + p->tm_year, p->tm_mon + 1, p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec, getCurrentMilliSeconds()); + + + + TiXmlElement* host = new TiXmlElement("host"); + TiXmlElement* service = new TiXmlElement("service"); + host->SetAttribute("prod", bom_pref_values[1].c_str()); + host->SetAttribute("ver", bom_pref_values[2].c_str()); + host->SetAttribute("ip", bom_pref_values[3].c_str()); + host->SetAttribute("id", bom_pref_values[4].c_str()); + host->SetAttribute("acct", bom_pref_values[5].c_str()); + host->SetAttribute("timestamp", date_string); + service->SetAttribute("prod", bom_pref_values[6].c_str()); + service->SetAttribute("ip", bom_pref_values[7].c_str()); + service->SetAttribute("id", bom_pref_values[8].c_str()); + service->SetAttribute("name", bom_pref_values[9].c_str()); + + TiXmlElement* request = new TiXmlElement("request"); + request->SetAttribute("type", "sync"); + string host_service_str; + TiXmlPrinter host_printer, service_printer; + + host->Accept(&host_printer); + host_service_str.append(trim(host_printer.CStr())); + + service->Accept(&service_printer); + host_service_str.append(trim(service_printer.CStr())); + + //unsigned char buffer[2048]; + //memcpy(buffer, host_service_str.c_str(), host_service_str.size()); + WriteLog(debug, "Get MD5 From \"%s\"", host_service_str.c_str()); + request->SetAttribute("key", str2md5(host_service_str).c_str()); + + + bom_doc->LinkEndChild(request); + request->LinkEndChild(host); + request->LinkEndChild(service); + TiXmlElement* payload = new TiXmlElement("payload"); + request->LinkEndChild(payload); + TiXmlElement* param = new TiXmlElement("param"); + param->SetAttribute("key", "std_data"); + param->SetAttribute("type", "xml"); + payload->LinkEndChild(param); + TiXmlElement* data_request = new TiXmlElement("data_request"); + param->LinkEndChild(data_request); + TiXmlElement* datainfo = new TiXmlElement("datainfo"); + data_request->LinkEndChild(datainfo); + TiXmlElement* param3 = new TiXmlElement("parameter"); + param3->SetAttribute("key", "process_data"); + param3->SetAttribute("type", "data"); + datainfo->LinkEndChild(param3); + bom_data = new TiXmlElement("data"); + bom_data->SetAttribute("name", "process"); + param3->LinkEndChild(bom_data); + + } + //ȡ + { + vector added_wl; + int bomSeq = 1, wlSeq = 1; + for (int i = 0; i < target_tags.size(); i++) { + char *object_type = NULL; + AOM_ask_value_string(target_tags[i],"object_type",&object_type); + if (strcmp(object_type,"QF8gyRevision")!=0) { + DOFREE(object_type); + continue; + } + DOFREE(object_type); + ifail = read_bop_data(target_tags[i], parent_configs, child_configs1, child_configs2, child_configs3, child_configs4, wl_data_configs, bom_data, wl_data, bomSeq, wlSeq, added_wl, added_lines); + if (ifail != ITK_ok) { + goto end; + } + } + } + + { + TiXmlPrinter bom_doc_printer; + bom_doc->Accept(&bom_doc_printer); + + TiXmlPrinter wl_doc_printer; + wl_doc->Accept(&wl_doc_printer); + + soap* soap = soap_new(); + soap_init(soap); + soap_register_plugin(soap, plugin); + soap_set_mode(soap, SOAP_C_UTFSTRING); + + // + { + if (LOG) { + WriteToFile(LOG, "SEND WL"); + WriteToFile(LOG, wl_doc_printer.CStr()); + } + _WS1__invokeSrv* soapReq = new _WS1__invokeSrv(); + soapReq->soap_default(soap); + soapReq->in0.assign(wl_doc_printer.CStr()); + _WS1__invokeSrvResponse response; + WriteToFile(LOG, "..."); + ifail = soap_call___WS1__invokeSrv(soap, wl_pref_values[0].c_str(), NULL, soapReq, response); + WriteToFile(LOG, "REQUEST SENT"); + if (ifail == SOAP_OK) { + if (LOG) { + WriteToFile(LOG, "RETURN DATA"); + WriteToFile(LOG, response.invokeSrvReturn.c_str()); + } + ifail = parseResponse(response.invokeSrvReturn); + } + else { + WriteLog(debug, "ýӿ쳣%d", ifail); + soap_print_fault(soap, stderr); + ifail = ITK_err; + EMH_store_error_s1(EMH_severity_error, ITK_err, "ýӿʧ"); + } + if (ifail != ITK_ok) { + has_err = true; + } + } + + //BOM + { + if (LOG) { + WriteToFile(LOG, "SEND BOM"); + WriteToFile(LOG, bom_doc_printer.CStr()); + } + _WS1__invokeSrv* soapReq = new _WS1__invokeSrv(); + soapReq->soap_default(soap); + soapReq->in0.assign(bom_doc_printer.CStr()); + _WS1__invokeSrvResponse response; + WriteToFile(LOG, "..."); + ifail = soap_call___WS1__invokeSrv(soap, bom_pref_values[0].c_str(), NULL, soapReq, response); + WriteToFile(LOG, "REQUEST SENT"); + if (ifail == SOAP_OK) { + if (LOG) { + WriteToFile(LOG, "RETURN DATA"); + WriteToFile(LOG, response.invokeSrvReturn.c_str()); + } + ifail = parseResponse(response.invokeSrvReturn); + } + else { + WriteLog(debug, "ýӿ쳣%d", ifail); + soap_print_fault(soap, stderr); + ifail = ITK_err; + EMH_store_error_s1(EMH_severity_error, ITK_err, "ýӿʧ"); + } + if (ifail != ITK_ok) { + has_err = true; + } + } + + + soap_destroy(soap); + soap_done(soap); + //ifail = parseResponse(" 019 ƽ̨ͬ 99299d70-ce98-43d3-890b-0c2331f04ca7 2.0 000 1 ʧϢ "); + } + +end: + POM_AM__set_application_bypass(false); + WriteToFile(LOG, "FINISH"); + target_tags.clear(); + if (LOG) + { + fclose(LOG); + LOG = NULL; + } + if (has_err) { + ifail = ITK_err; + } + target_types.clear(); + parent_configs.clear(); + child_configs1.clear(); + child_configs2.clear(); + child_configs3.clear(); + child_configs4.clear(); + wl_data_configs.clear(); + bom_pref_values.clear(); + wl_pref_values.clear(); + added_lines.clear(); + WriteLog(debug, "============================================================="); + WriteLog(debug, "ִнQF_ERP_BOP"); + WriteLog(debug, "============================================================="); + return ifail; +} + diff --git a/connor_erp_mes/QF_SendTo_CRM.cxx b/connor_erp_mes/QF_SendTo_CRM.cxx new file mode 100644 index 0000000..e1d0b5c --- /dev/null +++ b/connor_erp_mes/QF_SendTo_CRM.cxx @@ -0,0 +1,305 @@ +#pragma warning (disable: 4996) +#pragma warning (disable: 4819) +#pragma warning (disable: 4995) +#include + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "connor_erp_mes.h" + + +// #include +// #include +#include +#include +#include +#include "kutil.h" +using namespace std; +extern "C" int POM_AM__set_application_bypass(logical bypass); + + + +int QF_SendTo_CRM(EPM_action_message_t msg) +{ + //EPM_rule_message_t rul_msg; + int ifail = ITK_ok, rcode = 0; + // + char arg1value[1024] = ""; + char *argflag = NULL, *argvalue = NULL, *arg = NULL; + BOOL bypass = FALSE, setboth = TRUE, signPic = FALSE; + int arg_cnt = 0; + //̽ڵ + tag_t root_task = NULLTAG, *sub_tasks = NULL, current_task = NULLTAG, type_tag = NULLTAG; + int sub_task_count = 0; + char root_task_name[128] = "", task_name[128] = ""; + int occur_of_counts = 0; + tag_t *taskAttches = NULLTAG; + char tgt_type[WSO_name_size_c + 1] = "", type_class[TCTYPE_class_name_size_c + 1] = ""; + ////ѭڲ + tag_t cur_task = NULLTAG; + char task_type[WSO_name_size_c + 1] = ""; + //ѭ + int i = 0, j = 0, k = 0, count = 0, n = 0; + //ڵϢ + + //ڵѭ + tag_t itemrevision = NULLTAG; + + int form_count = 0; + tag_t master_form = NULLTAG; + char local_path[128] = ""; + //ƽڵ + + + //char *txtfile = NULL; + //ǩ + int n_prop = 0, q = 0; + char **prop_names = NULL, hq_name[128] = "", hq_time_name[128] = "", *hq_value = NULL; + char exclude_type[256] = "", item_type[ITEM_type_size_c + 1] = ""; + tag_t item = NULLTAG; + logical is_sign = false; + + //õ˺Ľڵ + current_task = msg.task; + //CreateLogFile("PLA8_signoff",&txtfile); + printf("=========================================================\n"); + printf("JY_Save_CLS ʼִ\n"); + printf("=========================================================\n"); + //ȡhandlerIJĸ + arg_cnt = TC_number_of_arguments(msg.arguments); + printf("Ϊ%d\n", arg_cnt); + if (arg_cnt > 0) + { + for (i = 0; i pref_vec1; + + map lov_map;//ƣֵleylovid + getPrefStrings1("JY8lovid", TC_preference_site, pref_vec1); + for (int i=0;i map_vec; + Split(lovid, "=", map_vec); + + lov_map.insert(pair(map_vec[0], map_vec[1])); + }*/ + + + char *lovValue = NULL; + char *key_lov_name = NULL; + int options = 0; + int n_lov_entries = 0; + char **lov_keys; + char **lov_values; + logical *deprecated_staus; + char *owning_site = NULL; + int n_shared_sites = 0; + char **shared_sites; + + /*tag_t keyTag=NULL; + ICS_keylov_ask_tag("-20050252",&keyTag); + + + + char *keyid=NULL; + ICS_keylov_ask_id(keyTag,&keyid); + printf("ǰkeyidΪ %s\n",keyid);*/ + POM_AM__set_application_bypass(true); + + for (i = 0; i < att_cnt; i++) { + + char *object_TYPE_1 = NULL; + ifail = AOM_ask_value_string(attachments[i], "object_type", &object_TYPE_1);// + printf("ǰͶΪ %s\n", object_TYPE_1); + + if (strcmp(arg1value, object_TYPE_1) == 0) + { + map class_map;//Ϣƣֵʾֵ + printf("ƥ........\n"); + + + tag_t cpItem = NULL; + ITEM_ask_item_of_rev(attachments[i], &cpItem); + + //ȡ + logical isClassified; + ITKCALL(ICS_is_wsobject_classified(cpItem, &isClassified));//жǷѾ + if (isClassified) + { + printf("ѷ........\n"); + tag_t classObj, attribute_tag; + ICS_ask_classification_object(cpItem, &classObj); + tag_t ics_tag; + char * class_id = NULL; + char *className = NULL; + int theAttributeCount; + ICS_view_attribute_descriptor_p_t attributes; + ICS_view_descriptor_p_t theViewDescriptor = NULL; + ITKCALL(ICS_ico_ask_class_tag(classObj, &ics_tag)); + + + + + + ITKCALL(ICS_ico_ask_class(classObj, &class_id)); + ITKCALL(ICS_view_describe(class_id, "", "", FALSE, &theViewDescriptor)); + theAttributeCount = theViewDescriptor->attributeCount; + attributes = theViewDescriptor->attributes; + className=theViewDescriptor->name; + cout << "className--------------" << className << endl; + for (int j = 0; j < theAttributeCount; j++) { + //WriteLog("ICO attr id = %d \n",attributes[i].id); + //WriteLog("ICO attr name = %s \n",attributes[i].name); + //WriteLog("ICO attr format = %d \n",attributes[i].format); + string attr_name;// + string attr_value;//ֵ + string attr_id; + cout << "id--------------" << attributes[j].id << endl; + cout << "format----------------" << attributes[j].format << endl; + cout << "name-------------------" << attributes[j].name << endl; + //ȡԵʵֵʾֵ + logical isLocalizable = false; + ICS_ico_property_isLocalizable(classObj, attributes[j].id,&isLocalizable); + if (isLocalizable == true) { + int theAttributeValCount = 0; + char** theAttributeValues = NULL; + char* localization_statuses = NULL; + logical isMaster = false; + ICS_ico_ask_localized_value_strings(classObj, attributes[j].id, "zh_CN", &theAttributeValCount, &theAttributeValues, &localization_statuses, &isMaster); + for (size_t n = 0; n < theAttributeValCount; n++) + { + cout << theAttributeValues[n] << endl; + } + DOFREE(localization_statuses); + if (theAttributeValues != NULL) { + MEM_free(theAttributeValues); + theAttributeValues = NULL; + } + + } + char newLsm[15]; + itoa(attributes[j].id, newLsm, 10); + cout << "newLsm-------------------" << newLsm << endl; + attr_id = newLsm; + attr_name = attributes[j].name; + //ȡij + int classificationCount = 0; + char **values = NULL; + + + AOM_ask_value_strings(attachments[i], "jy8ClassLovInfo", &classificationCount, &values); + map lovMap; + for (int i1 = 0; i1 < classificationCount; i1++) + { + string lovMapValue = values[i1]; + vector map_vec; + printf("values[i1].......%s\n", values[i1]); + Split(lovMapValue, "=", map_vec); + lovMap.insert(pair(map_vec[0], map_vec[1])); + + } + + char *classValue = NULL; + + ICS_ask_attribute_value(classObj, attributes[j].name, &classValue); + attr_value = classValue; + + string keyId = lovMap[attr_id]; + if (keyId.size() > 0) { + ICS_keylov_get_keylov(keyId.c_str(), &key_lov_name, &options, &n_lov_entries, &lov_keys, &lov_values, &deprecated_staus, + &owning_site, &n_shared_sites, &shared_sites);//Դ߳"-20050249" + for (int o = 0; o < n_lov_entries; o++) + { + if (strcmp(classValue, lov_keys[o]) == 0) { + printf("%sΪ%s\n", attributes[j].name, lov_values[o]); + attr_value = lov_values[o]; + break; + } + } + + } + + + + printf("ƣ%s;ֵ%s\n", attributes[j].name, attr_value); + class_map.insert(pair(attr_name, attr_value)); + + } + DOFREE(class_id); + cout << "9===================" << endl; + + } + else { + printf("ûз..........."); + + } + DOFREE(object_TYPE_1); + } + else { + printf("Ͳƥ........\n"); + } + cout << "10===================" << endl; + } + POM_AM__set_application_bypass(false); + cout << "11===================" << endl; + //if (debug) + DOFREE(attachments); + cout << "12===================" << endl; + DOFREE(lovValue); + cout << "13===================" << endl; + DOFREE(key_lov_name); + cout << "14===================" << endl; + DOFREE(owning_site); + cout << "15===================" << endl; + { + printf("=========================================================\n"); + printf("hander ȡϢ ִ\n"); + printf("=========================================================\n"); + } + return rcode; +} + diff --git a/connor_erp_mes/connor_erp_mes.cpp b/connor_erp_mes/connor_erp_mes.cpp new file mode 100644 index 0000000..2f2b9b2 --- /dev/null +++ b/connor_erp_mes/connor_erp_mes.cpp @@ -0,0 +1,180 @@ +// connor_erp_mes.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 +// + +#include "connor_erp_mes.h" + +#include +#include +#include +#include +#ifdef __cplusplus +extern "C" { +#endif + /** + * @fn extern "C" DLLAPI int liborigin_register_callbacks + * @return usually return ITK_ok + * @brief liborigin customization entry + * 此函数必须有规范的写法,必须以dll的名称加上"_"开头 + */ + DLLAPI int connor_erp_mes_register_callbacks() + { + int ifail = ITK_ok; + //ITKCALL(ifail = CUSTOM_register_exit("connor_erp_mes", "USER_invoke_pdm_server", (CUSTOM_EXIT_ftn_t)K_invoke_pdm_server)); + //fprintf(stdout, "connor_erp_mes register USER_invoke_pdm_server complete\n"); + ITKCALL(ifail = CUSTOM_register_exit("connor_erp_mes", "USERSERVICE_register_methods", + (CUSTOM_EXIT_ftn_t)USERSERVICE_custom_register_methods)); + fprintf(stdout, "connor_erp_mes register USERSERVICE_custom_register_methods complete\n"); + ITKCALL(ifail = CUSTOM_register_exit("connor_erp_mes", "USER_gs_shell_init_module", + (CUSTOM_EXIT_ftn_t)USERSERVICE_custom_register_handlers)); + fprintf(stdout, "connor_erp_mes register USER_gs_shell_init_module complete\n"); + return ifail; + } + + + DLLAPI int USERSERVICE_custom_register_handlers(int* decision, va_list args) + { + int ifail = ITK_ok; + //QF_ERP_wl + ITKCALL(ifail = EPM_register_action_handler("QF_ERP_wl", "QF_ERP_wl", (EPM_action_handler_t)QF_ERP_wl)); + if (ifail == 0) { + printf("注册操作处理程序成功:QF_ERP_wl\n"); + } + else { + printf("注册操作处理程序失败[%d]:QF_ERP_wl\n", ifail); + } + //QF_ERP_BOM + ITKCALL(ifail = EPM_register_action_handler("QF_ERP_BOM", "QF_ERP_BOM", (EPM_action_handler_t)QF_ERP_BOM)); + if (ifail == 0) { + printf("注册操作处理程序成功:QF_ERP_BOM\n"); + } + else { + printf("注册操作处理程序失败[%d]:QF_ERP_BOM\n", ifail); + } + //QF_ERP_BOP + ITKCALL(ifail = EPM_register_action_handler("QF_ERP_BOP", "QF_ERP_BOP", (EPM_action_handler_t)QF_ERP_BOP)); + if (ifail == 0) { + printf("注册操作处理程序成功:QF_ERP_BOP\n"); + } + else { + printf("注册操作处理程序失败[%d]:QF_ERP_BOP\n", ifail); + } + // QF_Deleta_TCM + ITKCALL(ifail = EPM_register_action_handler("QF_Delete_TCM", "QF_Delete_TCM", (EPM_action_handler_t)QF_Delete_TCM)); + if (ifail == 0) { + printf("注册操作处理程序成功:QF_Delete_TCM\n"); + } + else { + printf("注册操作处理程序失败[%d]:QF_Delete_TCM\n", ifail); + } + + /*ITKCALL(ifail = EPM_register_action_handler("QF_signoff_rev", "QF_signoff_rev", (EPM_action_handler_t)CONNOR_SIGN_MASTER)); + if (ifail == 0) { + printf("注册操作处理程序成功:QF_signoff_rev\n"); + } + else { + printf("注册操作处理程序失败[%d]:QF_signoff_rev\n", ifail); + } + ITKCALL(ifail = EPM_register_action_handler("QF_signoff_prt", "QF_signoff_prt", (EPM_action_handler_t)CONNOR_SIGN_DATASET)); + if (ifail == 0) { + printf("注册操作处理程序成功:QF_signoff_prt\n"); + } + else { + printf("注册操作处理程序失败[%d]:QF_signoff_prt\n", ifail); + }*/ + return ifail; + } + + //mail_name为邮件的名字,user_tag为要发送到的用户,tags为邮件内包含的对象 + void sendMail(char *mail_name, tag_t user_tag, tag_t *tags) + { + tag_t envelope_tag; + MAIL_create_envelope(mail_name, "", &envelope_tag); + MAIL_add_envelope_receiver(envelope_tag, user_tag); + AOM_set_value_tags(envelope_tag, "contents", 1, tags); + MAIL_send_envelope(envelope_tag); + } + int connor_send_envelop(void * returnValue) + { + printf("222set prop \n"); + int ifail = ITK_ok, + count = 0, + itemCount = 0, + form_count = 0; + tag_t tags = NULLTAG; + char *mail_name = NULL; + tag_t user_tag = NULLTAG; + USERARG_get_tag_argument(&tags);//获得对象参:产线对象 + USERARG_get_tag_argument(&user_tag);//获得对象参数:收件人 + USERARG_get_string_argument(&mail_name);//邮件内容 + + + //获取属性对象 + + //printf("222set prop %s\n", mail_name); + //tag_t *contentTags=NULL ; + //contentTags = (tag_t *)malloc(1 * sizeof(tag_t)); + //contentTags[0] = tags; + //sendMail(mail_name, user_tag, contentTags); + if (mail_name != NULL) { + MEM_free(mail_name); + mail_name = NULL; + } + //if (contentTags != NULL) { + // MEM_free(contentTags); + // contentTags = NULL; + //} + return ifail; + } + DLLAPI int USERSERVICE_custom_register_methods() + { + int numberOfArguments = 1, + returnValueType = USERARG_STRING_TYPE, + *argumentList = (int*)MEM_alloc(numberOfArguments * sizeof(int)); + argumentList[0] = USERARG_LOGICAL_TYPE;; + USER_function_t functionPtr; + int status = 0; + //自动发起流程 + numberOfArguments = 3; + functionPtr = connor_send_envelop;//注册方法 + argumentList = (int*)MEM_alloc(numberOfArguments * sizeof(int)); + argumentList[0] = USERARG_TAG_TYPE; + argumentList[1] = USERARG_TAG_TYPE; + argumentList[2] = USERARG_STRING_TYPE; + returnValueType = USERARG_VOID_TYPE; + status = USERSERVICE_register_method("connor_send_envelop", functionPtr, numberOfArguments, + argumentList, returnValueType); + MEM_free(argumentList); + if (status == ITK_ok) + { + fprintf(stdout, "\n Registering connor_send_envelop finished\n"); + } + else + { + fprintf(stdout, "\n Registering connor_send_envelop failed %d\n", status); + } + functionPtr = WX3_send_mail; + argumentList = (int*)MEM_alloc(5 * sizeof(int)); + argumentList[0] = USERARG_STRING_TYPE; + argumentList[1] = USERARG_STRING_TYPE; + argumentList[2] = USERARG_TAG_TYPE; + argumentList[3] = USERARG_TAG_TYPE + 100; + argumentList[4] = USERARG_TAG_TYPE; + returnValueType = USERARG_VOID_TYPE; + status = USERSERVICE_register_method("WX3_send_mail", functionPtr, 5, + argumentList, returnValueType); + if (status == ITK_ok) + { + fprintf(stdout, "\n Registering WX_send_mail finished\n"); + } + else + { + fprintf(stdout, "\n Registering WX_send_mail failed %d\n", status); + } + + return status; + } + + +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/connor_erp_mes/connor_erp_mes.h b/connor_erp_mes/connor_erp_mes.h new file mode 100644 index 0000000..1a823c7 --- /dev/null +++ b/connor_erp_mes/connor_erp_mes.h @@ -0,0 +1,27 @@ +#pragma once +#include +#include +#include +#include "kutil.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +DLLAPI int USERSERVICE_custom_register_methods(); +DLLAPI int USERSERVICE_custom_register_handlers(int* decision, va_list args); + +int QF_ERP_wl(EPM_action_message_t msg); +int QF_ERP_BOM(EPM_action_message_t msg); +int QF_ERP_BOP(EPM_action_message_t msg); +int QF_Delete_TCM(EPM_action_message_t msg); +//int connor_send_envelop(void * returnValue); +int WX3_send_mail(void * returnValue); +#define debug true + +#ifdef __cplusplus +} +#endif + diff --git a/connor_erp_mes/connor_erp_mes.vcxproj b/connor_erp_mes/connor_erp_mes.vcxproj new file mode 100644 index 0000000..4fa1127 --- /dev/null +++ b/connor_erp_mes/connor_erp_mes.vcxproj @@ -0,0 +1,178 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {fdad31da-c4b8-4b1e-ab61-4f2f37e068cf} + connorerpmes + 8.1 + + + + Application + true + v142 + Unicode + + + Application + false + v142 + true + Unicode + + + Application + true + v142 + Unicode + + + DynamicLibrary + false + v140 + true + Unicode + + + + + + + + + + + + + + + + + + + + + true + + + false + + + true + + + false + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;WIN32_LEAN_AND_MEAN;IPLIB=none;%(PreprocessorDefinitions) + true + C:\TC13\tclib\include_cpp;C:\TC13\tclib\include;%(AdditionalIncludeDirectories) + + + Console + true + true + true + C:\TC13\tclib\lib\*.lib;%(AdditionalDependencies) + libuser_exits.ar.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/connor_erp_mes/connor_erp_mes.vcxproj.filters b/connor_erp_mes/connor_erp_mes.vcxproj.filters new file mode 100644 index 0000000..f8b0821 --- /dev/null +++ b/connor_erp_mes/connor_erp_mes.vcxproj.filters @@ -0,0 +1,107 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {ae45bcd9-07c3-42f7-adb6-89f12d05f98f} + + + {b7279c7f-ff82-4b91-8f5e-06851f556c98} + + + {7c178b44-e75f-47ed-9958-67713d53b075} + + + + + 源文件 + + + 源文件 + + + 源文件 + + + tinyxml + + + tinyxml + + + tinyxml + + + tinyxml + + + webservice + + + webservice + + + webservice + + + webservice + + + md5 + + + 源文件 + + + 源文件 + + + + + 头文件 + + + 头文件 + + + tinyxml + + + tinyxml + + + webservice + + + webservice + + + webservice + + + webservice + + + webservice + + + md5 + + + + + webservice + + + \ No newline at end of file diff --git a/connor_erp_mes/connor_send_envelop.cpp b/connor_erp_mes/connor_send_envelop.cpp new file mode 100644 index 0000000..44a3160 --- /dev/null +++ b/connor_erp_mes/connor_send_envelop.cpp @@ -0,0 +1,41 @@ +#include +#pragma warning (disable: 4996) +#pragma warning (disable: 4819) +#pragma warning (disable: 4995) +#include +#include +#include +#include + +#include +#include +#include "connor_erp_mes.h" +using namespace std; + +extern "C" int POM_AM__set_application_bypass(logical bypass); + + +int WX3_send_mail(void* returnValue) +{ + char *title, *content; + tag_t dataset, target_user, *copy_user, envelope_tag; + int copy_user_num; + USERARG_get_string_argument(&title); + USERARG_get_string_argument(&content); + USERARG_get_tag_argument(&target_user); + USERARG_get_tag_array_argument(©_user_num, ©_user); + USERARG_get_tag_argument(&dataset); + MAIL_create_envelope(title, content, &envelope_tag); + MAIL_initialize_envelope2(envelope_tag, title, content);//ڴ˴ܷʼ + MAIL_add_envelope_receiver(envelope_tag, target_user); + for (auto i = 0; i +template class std::vector; + +/******************************************************************************\ + * * + * Import * + * * +\******************************************************************************/ + + +/******************************************************************************\ + * * + * Schema Namespaces * + * * +\******************************************************************************/ + + +/* NOTE: + +It is strongly recommended to customize the names of the namespace prefixes +generated by wsdl2h. To do so, modify the prefix bindings below and add the +modified lines to 'typemap.dat' then rerun wsdl2h (use wsdl2h -t typemap.dat): + +WS1 = "http://entry.serviceengine.cross.digiwin.com" + +*/ + +#define SOAP_NAMESPACE_OF_WS1 "http://entry.serviceengine.cross.digiwin.com" +//gsoap WS1 schema namespace: http://entry.serviceengine.cross.digiwin.com +//gsoap WS1 schema elementForm: qualified +//gsoap WS1 schema attributeForm: unqualified + +/******************************************************************************\ + * * + * Built-in Schema Types and Top-Level Elements and Attributes * + * * +\******************************************************************************/ + + +/******************************************************************************\ + * * + * Forward Declarations * + * * +\******************************************************************************/ + + +class _WS1__invokeEtl; + +class _WS1__invokeEtlResponse; + +class _WS1__getEtlJobList; + +class _WS1__getEtlJobListResponse; + +class _WS1__getParamList; + +class _WS1__getParamListResponse; + +class _WS1__getProdList; + +class _WS1__getProdListResponse; + +class _WS1__regProdAP; + +class _WS1__regProdAPResponse; + +class _WS1__invokeUnion; + +class _WS1__invokeUnionResponse; + +class _WS1__invokeMdm; + +class _WS1__invokeMdmResponse; + +class _WS1__getProd; + +class _WS1__getProdResponse; + +class _WS1__getSrv; + +class _WS1__getSrvResponse; + +class _WS1__fpInvoke; + +class _WS1__fpInvokeResponse; + +class _WS1__getStandardServiceList; + +class _WS1__getStandardServiceListResponse; + +class _WS1__getStandardDataNameList; + +class _WS1__getStandardDataNameListResponse; + +class _WS1__regSrv; + +class _WS1__regSrvResponse; + +class _WS1__regEAI; + +class _WS1__regEAIResponse; + +class _WS1__invokeSrv; + +class _WS1__invokeSrvResponse; + +class _WS1__escrowResendSrv; + +class _WS1__escrowResendSrvResponse; + + +/******************************************************************************\ + * * + * Schema Types and Top-Level Elements and Attributes * + * http://entry.serviceengine.cross.digiwin.com * + * * +\******************************************************************************/ + + +/******************************************************************************\ + * * + * Schema Complex Types and Top-Level Elements * + * http://entry.serviceengine.cross.digiwin.com * + * * +\******************************************************************************/ + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":invokeEtl +/// @brief "http://entry.serviceengine.cross.digiwin.com":invokeEtl is a complexType. +/// +/// @note class _WS1__invokeEtl operations: +/// - _WS1__invokeEtl* soap_new__WS1__invokeEtl(soap*) allocate and default initialize +/// - _WS1__invokeEtl* soap_new__WS1__invokeEtl(soap*, int num) allocate and default initialize an array +/// - _WS1__invokeEtl* soap_new_req__WS1__invokeEtl(soap*, ...) allocate, set required members +/// - _WS1__invokeEtl* soap_new_set__WS1__invokeEtl(soap*, ...) allocate, set all public members +/// - _WS1__invokeEtl::soap_default(soap*) default initialize members +/// - int soap_read__WS1__invokeEtl(soap*, _WS1__invokeEtl*) deserialize from a stream +/// - int soap_write__WS1__invokeEtl(soap*, _WS1__invokeEtl*) serialize to a stream +/// - _WS1__invokeEtl* _WS1__invokeEtl::soap_dup(soap*) returns deep copy of _WS1__invokeEtl, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__invokeEtl::soap_del() deep deletes _WS1__invokeEtl data members, use only after _WS1__invokeEtl::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__invokeEtl::soap_type() returns SOAP_TYPE__WS1__invokeEtl or derived type identifier +class _WS1__invokeEtl +{ public: +/// Element "in0" of type xs:string. + std::string in0 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":invokeEtlResponse +/// @brief "http://entry.serviceengine.cross.digiwin.com":invokeEtlResponse is a complexType. +/// +/// @note class _WS1__invokeEtlResponse operations: +/// - _WS1__invokeEtlResponse* soap_new__WS1__invokeEtlResponse(soap*) allocate and default initialize +/// - _WS1__invokeEtlResponse* soap_new__WS1__invokeEtlResponse(soap*, int num) allocate and default initialize an array +/// - _WS1__invokeEtlResponse* soap_new_req__WS1__invokeEtlResponse(soap*, ...) allocate, set required members +/// - _WS1__invokeEtlResponse* soap_new_set__WS1__invokeEtlResponse(soap*, ...) allocate, set all public members +/// - _WS1__invokeEtlResponse::soap_default(soap*) default initialize members +/// - int soap_read__WS1__invokeEtlResponse(soap*, _WS1__invokeEtlResponse*) deserialize from a stream +/// - int soap_write__WS1__invokeEtlResponse(soap*, _WS1__invokeEtlResponse*) serialize to a stream +/// - _WS1__invokeEtlResponse* _WS1__invokeEtlResponse::soap_dup(soap*) returns deep copy of _WS1__invokeEtlResponse, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__invokeEtlResponse::soap_del() deep deletes _WS1__invokeEtlResponse data members, use only after _WS1__invokeEtlResponse::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__invokeEtlResponse::soap_type() returns SOAP_TYPE__WS1__invokeEtlResponse or derived type identifier +class _WS1__invokeEtlResponse +{ public: +/// Element "invokeEtlReturn" of type xs:string. + std::string invokeEtlReturn 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":getEtlJobList +/// @brief "http://entry.serviceengine.cross.digiwin.com":getEtlJobList is a complexType. +/// +/// @note class _WS1__getEtlJobList operations: +/// - _WS1__getEtlJobList* soap_new__WS1__getEtlJobList(soap*) allocate and default initialize +/// - _WS1__getEtlJobList* soap_new__WS1__getEtlJobList(soap*, int num) allocate and default initialize an array +/// - _WS1__getEtlJobList* soap_new_req__WS1__getEtlJobList(soap*, ...) allocate, set required members +/// - _WS1__getEtlJobList* soap_new_set__WS1__getEtlJobList(soap*, ...) allocate, set all public members +/// - _WS1__getEtlJobList::soap_default(soap*) default initialize members +/// - int soap_read__WS1__getEtlJobList(soap*, _WS1__getEtlJobList*) deserialize from a stream +/// - int soap_write__WS1__getEtlJobList(soap*, _WS1__getEtlJobList*) serialize to a stream +/// - _WS1__getEtlJobList* _WS1__getEtlJobList::soap_dup(soap*) returns deep copy of _WS1__getEtlJobList, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__getEtlJobList::soap_del() deep deletes _WS1__getEtlJobList data members, use only after _WS1__getEtlJobList::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__getEtlJobList::soap_type() returns SOAP_TYPE__WS1__getEtlJobList or derived type identifier +class _WS1__getEtlJobList +{ public: +/// Element "in0" of type xs:string. + std::string in0 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":getEtlJobListResponse +/// @brief "http://entry.serviceengine.cross.digiwin.com":getEtlJobListResponse is a complexType. +/// +/// @note class _WS1__getEtlJobListResponse operations: +/// - _WS1__getEtlJobListResponse* soap_new__WS1__getEtlJobListResponse(soap*) allocate and default initialize +/// - _WS1__getEtlJobListResponse* soap_new__WS1__getEtlJobListResponse(soap*, int num) allocate and default initialize an array +/// - _WS1__getEtlJobListResponse* soap_new_req__WS1__getEtlJobListResponse(soap*, ...) allocate, set required members +/// - _WS1__getEtlJobListResponse* soap_new_set__WS1__getEtlJobListResponse(soap*, ...) allocate, set all public members +/// - _WS1__getEtlJobListResponse::soap_default(soap*) default initialize members +/// - int soap_read__WS1__getEtlJobListResponse(soap*, _WS1__getEtlJobListResponse*) deserialize from a stream +/// - int soap_write__WS1__getEtlJobListResponse(soap*, _WS1__getEtlJobListResponse*) serialize to a stream +/// - _WS1__getEtlJobListResponse* _WS1__getEtlJobListResponse::soap_dup(soap*) returns deep copy of _WS1__getEtlJobListResponse, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__getEtlJobListResponse::soap_del() deep deletes _WS1__getEtlJobListResponse data members, use only after _WS1__getEtlJobListResponse::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__getEtlJobListResponse::soap_type() returns SOAP_TYPE__WS1__getEtlJobListResponse or derived type identifier +class _WS1__getEtlJobListResponse +{ public: +/// Element "getEtlJobListReturn" of type xs:string. + std::string getEtlJobListReturn 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":getParamList +/// @brief "http://entry.serviceengine.cross.digiwin.com":getParamList is a complexType. +/// +/// @note class _WS1__getParamList operations: +/// - _WS1__getParamList* soap_new__WS1__getParamList(soap*) allocate and default initialize +/// - _WS1__getParamList* soap_new__WS1__getParamList(soap*, int num) allocate and default initialize an array +/// - _WS1__getParamList* soap_new_req__WS1__getParamList(soap*, ...) allocate, set required members +/// - _WS1__getParamList* soap_new_set__WS1__getParamList(soap*, ...) allocate, set all public members +/// - _WS1__getParamList::soap_default(soap*) default initialize members +/// - int soap_read__WS1__getParamList(soap*, _WS1__getParamList*) deserialize from a stream +/// - int soap_write__WS1__getParamList(soap*, _WS1__getParamList*) serialize to a stream +/// - _WS1__getParamList* _WS1__getParamList::soap_dup(soap*) returns deep copy of _WS1__getParamList, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__getParamList::soap_del() deep deletes _WS1__getParamList data members, use only after _WS1__getParamList::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__getParamList::soap_type() returns SOAP_TYPE__WS1__getParamList or derived type identifier +class _WS1__getParamList +{ public: +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":getParamListResponse +/// @brief "http://entry.serviceengine.cross.digiwin.com":getParamListResponse is a complexType. +/// +/// @note class _WS1__getParamListResponse operations: +/// - _WS1__getParamListResponse* soap_new__WS1__getParamListResponse(soap*) allocate and default initialize +/// - _WS1__getParamListResponse* soap_new__WS1__getParamListResponse(soap*, int num) allocate and default initialize an array +/// - _WS1__getParamListResponse* soap_new_req__WS1__getParamListResponse(soap*, ...) allocate, set required members +/// - _WS1__getParamListResponse* soap_new_set__WS1__getParamListResponse(soap*, ...) allocate, set all public members +/// - _WS1__getParamListResponse::soap_default(soap*) default initialize members +/// - int soap_read__WS1__getParamListResponse(soap*, _WS1__getParamListResponse*) deserialize from a stream +/// - int soap_write__WS1__getParamListResponse(soap*, _WS1__getParamListResponse*) serialize to a stream +/// - _WS1__getParamListResponse* _WS1__getParamListResponse::soap_dup(soap*) returns deep copy of _WS1__getParamListResponse, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__getParamListResponse::soap_del() deep deletes _WS1__getParamListResponse data members, use only after _WS1__getParamListResponse::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__getParamListResponse::soap_type() returns SOAP_TYPE__WS1__getParamListResponse or derived type identifier +class _WS1__getParamListResponse +{ public: +/// Element "getParamListReturn" of type xs:string. + std::string getParamListReturn 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":getProdList +/// @brief "http://entry.serviceengine.cross.digiwin.com":getProdList is a complexType. +/// +/// @note class _WS1__getProdList operations: +/// - _WS1__getProdList* soap_new__WS1__getProdList(soap*) allocate and default initialize +/// - _WS1__getProdList* soap_new__WS1__getProdList(soap*, int num) allocate and default initialize an array +/// - _WS1__getProdList* soap_new_req__WS1__getProdList(soap*, ...) allocate, set required members +/// - _WS1__getProdList* soap_new_set__WS1__getProdList(soap*, ...) allocate, set all public members +/// - _WS1__getProdList::soap_default(soap*) default initialize members +/// - int soap_read__WS1__getProdList(soap*, _WS1__getProdList*) deserialize from a stream +/// - int soap_write__WS1__getProdList(soap*, _WS1__getProdList*) serialize to a stream +/// - _WS1__getProdList* _WS1__getProdList::soap_dup(soap*) returns deep copy of _WS1__getProdList, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__getProdList::soap_del() deep deletes _WS1__getProdList data members, use only after _WS1__getProdList::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__getProdList::soap_type() returns SOAP_TYPE__WS1__getProdList or derived type identifier +class _WS1__getProdList +{ public: +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":getProdListResponse +/// @brief "http://entry.serviceengine.cross.digiwin.com":getProdListResponse is a complexType. +/// +/// @note class _WS1__getProdListResponse operations: +/// - _WS1__getProdListResponse* soap_new__WS1__getProdListResponse(soap*) allocate and default initialize +/// - _WS1__getProdListResponse* soap_new__WS1__getProdListResponse(soap*, int num) allocate and default initialize an array +/// - _WS1__getProdListResponse* soap_new_req__WS1__getProdListResponse(soap*, ...) allocate, set required members +/// - _WS1__getProdListResponse* soap_new_set__WS1__getProdListResponse(soap*, ...) allocate, set all public members +/// - _WS1__getProdListResponse::soap_default(soap*) default initialize members +/// - int soap_read__WS1__getProdListResponse(soap*, _WS1__getProdListResponse*) deserialize from a stream +/// - int soap_write__WS1__getProdListResponse(soap*, _WS1__getProdListResponse*) serialize to a stream +/// - _WS1__getProdListResponse* _WS1__getProdListResponse::soap_dup(soap*) returns deep copy of _WS1__getProdListResponse, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__getProdListResponse::soap_del() deep deletes _WS1__getProdListResponse data members, use only after _WS1__getProdListResponse::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__getProdListResponse::soap_type() returns SOAP_TYPE__WS1__getProdListResponse or derived type identifier +class _WS1__getProdListResponse +{ public: +/// Element "getProdListReturn" of type xs:string. + std::string getProdListReturn 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":regProdAP +/// @brief "http://entry.serviceengine.cross.digiwin.com":regProdAP is a complexType. +/// +/// @note class _WS1__regProdAP operations: +/// - _WS1__regProdAP* soap_new__WS1__regProdAP(soap*) allocate and default initialize +/// - _WS1__regProdAP* soap_new__WS1__regProdAP(soap*, int num) allocate and default initialize an array +/// - _WS1__regProdAP* soap_new_req__WS1__regProdAP(soap*, ...) allocate, set required members +/// - _WS1__regProdAP* soap_new_set__WS1__regProdAP(soap*, ...) allocate, set all public members +/// - _WS1__regProdAP::soap_default(soap*) default initialize members +/// - int soap_read__WS1__regProdAP(soap*, _WS1__regProdAP*) deserialize from a stream +/// - int soap_write__WS1__regProdAP(soap*, _WS1__regProdAP*) serialize to a stream +/// - _WS1__regProdAP* _WS1__regProdAP::soap_dup(soap*) returns deep copy of _WS1__regProdAP, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__regProdAP::soap_del() deep deletes _WS1__regProdAP data members, use only after _WS1__regProdAP::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__regProdAP::soap_type() returns SOAP_TYPE__WS1__regProdAP or derived type identifier +class _WS1__regProdAP +{ public: +/// Element "in0" of type xs:string. + std::string in0 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":regProdAPResponse +/// @brief "http://entry.serviceengine.cross.digiwin.com":regProdAPResponse is a complexType. +/// +/// @note class _WS1__regProdAPResponse operations: +/// - _WS1__regProdAPResponse* soap_new__WS1__regProdAPResponse(soap*) allocate and default initialize +/// - _WS1__regProdAPResponse* soap_new__WS1__regProdAPResponse(soap*, int num) allocate and default initialize an array +/// - _WS1__regProdAPResponse* soap_new_req__WS1__regProdAPResponse(soap*, ...) allocate, set required members +/// - _WS1__regProdAPResponse* soap_new_set__WS1__regProdAPResponse(soap*, ...) allocate, set all public members +/// - _WS1__regProdAPResponse::soap_default(soap*) default initialize members +/// - int soap_read__WS1__regProdAPResponse(soap*, _WS1__regProdAPResponse*) deserialize from a stream +/// - int soap_write__WS1__regProdAPResponse(soap*, _WS1__regProdAPResponse*) serialize to a stream +/// - _WS1__regProdAPResponse* _WS1__regProdAPResponse::soap_dup(soap*) returns deep copy of _WS1__regProdAPResponse, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__regProdAPResponse::soap_del() deep deletes _WS1__regProdAPResponse data members, use only after _WS1__regProdAPResponse::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__regProdAPResponse::soap_type() returns SOAP_TYPE__WS1__regProdAPResponse or derived type identifier +class _WS1__regProdAPResponse +{ public: +/// Element "regProdAPReturn" of type xs:string. + std::string regProdAPReturn 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":invokeUnion +/// @brief "http://entry.serviceengine.cross.digiwin.com":invokeUnion is a complexType. +/// +/// @note class _WS1__invokeUnion operations: +/// - _WS1__invokeUnion* soap_new__WS1__invokeUnion(soap*) allocate and default initialize +/// - _WS1__invokeUnion* soap_new__WS1__invokeUnion(soap*, int num) allocate and default initialize an array +/// - _WS1__invokeUnion* soap_new_req__WS1__invokeUnion(soap*, ...) allocate, set required members +/// - _WS1__invokeUnion* soap_new_set__WS1__invokeUnion(soap*, ...) allocate, set all public members +/// - _WS1__invokeUnion::soap_default(soap*) default initialize members +/// - int soap_read__WS1__invokeUnion(soap*, _WS1__invokeUnion*) deserialize from a stream +/// - int soap_write__WS1__invokeUnion(soap*, _WS1__invokeUnion*) serialize to a stream +/// - _WS1__invokeUnion* _WS1__invokeUnion::soap_dup(soap*) returns deep copy of _WS1__invokeUnion, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__invokeUnion::soap_del() deep deletes _WS1__invokeUnion data members, use only after _WS1__invokeUnion::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__invokeUnion::soap_type() returns SOAP_TYPE__WS1__invokeUnion or derived type identifier +class _WS1__invokeUnion +{ public: +/// Element "in0" of type xs:string. + std::string in0 1; ///< Required element. +/// Element "in1" of type xs:string. + std::string in1 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":invokeUnionResponse +/// @brief "http://entry.serviceengine.cross.digiwin.com":invokeUnionResponse is a complexType. +/// +/// @note class _WS1__invokeUnionResponse operations: +/// - _WS1__invokeUnionResponse* soap_new__WS1__invokeUnionResponse(soap*) allocate and default initialize +/// - _WS1__invokeUnionResponse* soap_new__WS1__invokeUnionResponse(soap*, int num) allocate and default initialize an array +/// - _WS1__invokeUnionResponse* soap_new_req__WS1__invokeUnionResponse(soap*, ...) allocate, set required members +/// - _WS1__invokeUnionResponse* soap_new_set__WS1__invokeUnionResponse(soap*, ...) allocate, set all public members +/// - _WS1__invokeUnionResponse::soap_default(soap*) default initialize members +/// - int soap_read__WS1__invokeUnionResponse(soap*, _WS1__invokeUnionResponse*) deserialize from a stream +/// - int soap_write__WS1__invokeUnionResponse(soap*, _WS1__invokeUnionResponse*) serialize to a stream +/// - _WS1__invokeUnionResponse* _WS1__invokeUnionResponse::soap_dup(soap*) returns deep copy of _WS1__invokeUnionResponse, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__invokeUnionResponse::soap_del() deep deletes _WS1__invokeUnionResponse data members, use only after _WS1__invokeUnionResponse::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__invokeUnionResponse::soap_type() returns SOAP_TYPE__WS1__invokeUnionResponse or derived type identifier +class _WS1__invokeUnionResponse +{ public: +/// Element "invokeUnionReturn" of type xs:string. + std::string invokeUnionReturn 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":invokeMdm +/// @brief "http://entry.serviceengine.cross.digiwin.com":invokeMdm is a complexType. +/// +/// @note class _WS1__invokeMdm operations: +/// - _WS1__invokeMdm* soap_new__WS1__invokeMdm(soap*) allocate and default initialize +/// - _WS1__invokeMdm* soap_new__WS1__invokeMdm(soap*, int num) allocate and default initialize an array +/// - _WS1__invokeMdm* soap_new_req__WS1__invokeMdm(soap*, ...) allocate, set required members +/// - _WS1__invokeMdm* soap_new_set__WS1__invokeMdm(soap*, ...) allocate, set all public members +/// - _WS1__invokeMdm::soap_default(soap*) default initialize members +/// - int soap_read__WS1__invokeMdm(soap*, _WS1__invokeMdm*) deserialize from a stream +/// - int soap_write__WS1__invokeMdm(soap*, _WS1__invokeMdm*) serialize to a stream +/// - _WS1__invokeMdm* _WS1__invokeMdm::soap_dup(soap*) returns deep copy of _WS1__invokeMdm, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__invokeMdm::soap_del() deep deletes _WS1__invokeMdm data members, use only after _WS1__invokeMdm::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__invokeMdm::soap_type() returns SOAP_TYPE__WS1__invokeMdm or derived type identifier +class _WS1__invokeMdm +{ public: +/// Element "in0" of type xs:string. + std::string in0 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":invokeMdmResponse +/// @brief "http://entry.serviceengine.cross.digiwin.com":invokeMdmResponse is a complexType. +/// +/// @note class _WS1__invokeMdmResponse operations: +/// - _WS1__invokeMdmResponse* soap_new__WS1__invokeMdmResponse(soap*) allocate and default initialize +/// - _WS1__invokeMdmResponse* soap_new__WS1__invokeMdmResponse(soap*, int num) allocate and default initialize an array +/// - _WS1__invokeMdmResponse* soap_new_req__WS1__invokeMdmResponse(soap*, ...) allocate, set required members +/// - _WS1__invokeMdmResponse* soap_new_set__WS1__invokeMdmResponse(soap*, ...) allocate, set all public members +/// - _WS1__invokeMdmResponse::soap_default(soap*) default initialize members +/// - int soap_read__WS1__invokeMdmResponse(soap*, _WS1__invokeMdmResponse*) deserialize from a stream +/// - int soap_write__WS1__invokeMdmResponse(soap*, _WS1__invokeMdmResponse*) serialize to a stream +/// - _WS1__invokeMdmResponse* _WS1__invokeMdmResponse::soap_dup(soap*) returns deep copy of _WS1__invokeMdmResponse, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__invokeMdmResponse::soap_del() deep deletes _WS1__invokeMdmResponse data members, use only after _WS1__invokeMdmResponse::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__invokeMdmResponse::soap_type() returns SOAP_TYPE__WS1__invokeMdmResponse or derived type identifier +class _WS1__invokeMdmResponse +{ public: +/// Element "invokeMdmReturn" of type xs:string. + std::string invokeMdmReturn 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":getProd +/// @brief "http://entry.serviceengine.cross.digiwin.com":getProd is a complexType. +/// +/// @note class _WS1__getProd operations: +/// - _WS1__getProd* soap_new__WS1__getProd(soap*) allocate and default initialize +/// - _WS1__getProd* soap_new__WS1__getProd(soap*, int num) allocate and default initialize an array +/// - _WS1__getProd* soap_new_req__WS1__getProd(soap*, ...) allocate, set required members +/// - _WS1__getProd* soap_new_set__WS1__getProd(soap*, ...) allocate, set all public members +/// - _WS1__getProd::soap_default(soap*) default initialize members +/// - int soap_read__WS1__getProd(soap*, _WS1__getProd*) deserialize from a stream +/// - int soap_write__WS1__getProd(soap*, _WS1__getProd*) serialize to a stream +/// - _WS1__getProd* _WS1__getProd::soap_dup(soap*) returns deep copy of _WS1__getProd, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__getProd::soap_del() deep deletes _WS1__getProd data members, use only after _WS1__getProd::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__getProd::soap_type() returns SOAP_TYPE__WS1__getProd or derived type identifier +class _WS1__getProd +{ public: +/// Element "in0" of type xs:string. + std::string in0 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":getProdResponse +/// @brief "http://entry.serviceengine.cross.digiwin.com":getProdResponse is a complexType. +/// +/// @note class _WS1__getProdResponse operations: +/// - _WS1__getProdResponse* soap_new__WS1__getProdResponse(soap*) allocate and default initialize +/// - _WS1__getProdResponse* soap_new__WS1__getProdResponse(soap*, int num) allocate and default initialize an array +/// - _WS1__getProdResponse* soap_new_req__WS1__getProdResponse(soap*, ...) allocate, set required members +/// - _WS1__getProdResponse* soap_new_set__WS1__getProdResponse(soap*, ...) allocate, set all public members +/// - _WS1__getProdResponse::soap_default(soap*) default initialize members +/// - int soap_read__WS1__getProdResponse(soap*, _WS1__getProdResponse*) deserialize from a stream +/// - int soap_write__WS1__getProdResponse(soap*, _WS1__getProdResponse*) serialize to a stream +/// - _WS1__getProdResponse* _WS1__getProdResponse::soap_dup(soap*) returns deep copy of _WS1__getProdResponse, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__getProdResponse::soap_del() deep deletes _WS1__getProdResponse data members, use only after _WS1__getProdResponse::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__getProdResponse::soap_type() returns SOAP_TYPE__WS1__getProdResponse or derived type identifier +class _WS1__getProdResponse +{ public: +/// Element "getProdReturn" of type xs:string. + std::string getProdReturn 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":getSrv +/// @brief "http://entry.serviceengine.cross.digiwin.com":getSrv is a complexType. +/// +/// @note class _WS1__getSrv operations: +/// - _WS1__getSrv* soap_new__WS1__getSrv(soap*) allocate and default initialize +/// - _WS1__getSrv* soap_new__WS1__getSrv(soap*, int num) allocate and default initialize an array +/// - _WS1__getSrv* soap_new_req__WS1__getSrv(soap*, ...) allocate, set required members +/// - _WS1__getSrv* soap_new_set__WS1__getSrv(soap*, ...) allocate, set all public members +/// - _WS1__getSrv::soap_default(soap*) default initialize members +/// - int soap_read__WS1__getSrv(soap*, _WS1__getSrv*) deserialize from a stream +/// - int soap_write__WS1__getSrv(soap*, _WS1__getSrv*) serialize to a stream +/// - _WS1__getSrv* _WS1__getSrv::soap_dup(soap*) returns deep copy of _WS1__getSrv, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__getSrv::soap_del() deep deletes _WS1__getSrv data members, use only after _WS1__getSrv::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__getSrv::soap_type() returns SOAP_TYPE__WS1__getSrv or derived type identifier +class _WS1__getSrv +{ public: +/// Element "in0" of type xs:string. + std::string in0 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":getSrvResponse +/// @brief "http://entry.serviceengine.cross.digiwin.com":getSrvResponse is a complexType. +/// +/// @note class _WS1__getSrvResponse operations: +/// - _WS1__getSrvResponse* soap_new__WS1__getSrvResponse(soap*) allocate and default initialize +/// - _WS1__getSrvResponse* soap_new__WS1__getSrvResponse(soap*, int num) allocate and default initialize an array +/// - _WS1__getSrvResponse* soap_new_req__WS1__getSrvResponse(soap*, ...) allocate, set required members +/// - _WS1__getSrvResponse* soap_new_set__WS1__getSrvResponse(soap*, ...) allocate, set all public members +/// - _WS1__getSrvResponse::soap_default(soap*) default initialize members +/// - int soap_read__WS1__getSrvResponse(soap*, _WS1__getSrvResponse*) deserialize from a stream +/// - int soap_write__WS1__getSrvResponse(soap*, _WS1__getSrvResponse*) serialize to a stream +/// - _WS1__getSrvResponse* _WS1__getSrvResponse::soap_dup(soap*) returns deep copy of _WS1__getSrvResponse, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__getSrvResponse::soap_del() deep deletes _WS1__getSrvResponse data members, use only after _WS1__getSrvResponse::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__getSrvResponse::soap_type() returns SOAP_TYPE__WS1__getSrvResponse or derived type identifier +class _WS1__getSrvResponse +{ public: +/// Element "getSrvReturn" of type xs:string. + std::string getSrvReturn 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":fpInvoke +/// @brief "http://entry.serviceengine.cross.digiwin.com":fpInvoke is a complexType. +/// +/// @note class _WS1__fpInvoke operations: +/// - _WS1__fpInvoke* soap_new__WS1__fpInvoke(soap*) allocate and default initialize +/// - _WS1__fpInvoke* soap_new__WS1__fpInvoke(soap*, int num) allocate and default initialize an array +/// - _WS1__fpInvoke* soap_new_req__WS1__fpInvoke(soap*, ...) allocate, set required members +/// - _WS1__fpInvoke* soap_new_set__WS1__fpInvoke(soap*, ...) allocate, set all public members +/// - _WS1__fpInvoke::soap_default(soap*) default initialize members +/// - int soap_read__WS1__fpInvoke(soap*, _WS1__fpInvoke*) deserialize from a stream +/// - int soap_write__WS1__fpInvoke(soap*, _WS1__fpInvoke*) serialize to a stream +/// - _WS1__fpInvoke* _WS1__fpInvoke::soap_dup(soap*) returns deep copy of _WS1__fpInvoke, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__fpInvoke::soap_del() deep deletes _WS1__fpInvoke data members, use only after _WS1__fpInvoke::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__fpInvoke::soap_type() returns SOAP_TYPE__WS1__fpInvoke or derived type identifier +class _WS1__fpInvoke +{ public: +/// Element "in0" of type xs:string. + std::string in0 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":fpInvokeResponse +/// @brief "http://entry.serviceengine.cross.digiwin.com":fpInvokeResponse is a complexType. +/// +/// @note class _WS1__fpInvokeResponse operations: +/// - _WS1__fpInvokeResponse* soap_new__WS1__fpInvokeResponse(soap*) allocate and default initialize +/// - _WS1__fpInvokeResponse* soap_new__WS1__fpInvokeResponse(soap*, int num) allocate and default initialize an array +/// - _WS1__fpInvokeResponse* soap_new_req__WS1__fpInvokeResponse(soap*, ...) allocate, set required members +/// - _WS1__fpInvokeResponse* soap_new_set__WS1__fpInvokeResponse(soap*, ...) allocate, set all public members +/// - _WS1__fpInvokeResponse::soap_default(soap*) default initialize members +/// - int soap_read__WS1__fpInvokeResponse(soap*, _WS1__fpInvokeResponse*) deserialize from a stream +/// - int soap_write__WS1__fpInvokeResponse(soap*, _WS1__fpInvokeResponse*) serialize to a stream +/// - _WS1__fpInvokeResponse* _WS1__fpInvokeResponse::soap_dup(soap*) returns deep copy of _WS1__fpInvokeResponse, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__fpInvokeResponse::soap_del() deep deletes _WS1__fpInvokeResponse data members, use only after _WS1__fpInvokeResponse::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__fpInvokeResponse::soap_type() returns SOAP_TYPE__WS1__fpInvokeResponse or derived type identifier +class _WS1__fpInvokeResponse +{ public: +/// Element "fpInvokeReturn" of type xs:string. + std::string fpInvokeReturn 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":getStandardServiceList +/// @brief "http://entry.serviceengine.cross.digiwin.com":getStandardServiceList is a complexType. +/// +/// @note class _WS1__getStandardServiceList operations: +/// - _WS1__getStandardServiceList* soap_new__WS1__getStandardServiceList(soap*) allocate and default initialize +/// - _WS1__getStandardServiceList* soap_new__WS1__getStandardServiceList(soap*, int num) allocate and default initialize an array +/// - _WS1__getStandardServiceList* soap_new_req__WS1__getStandardServiceList(soap*, ...) allocate, set required members +/// - _WS1__getStandardServiceList* soap_new_set__WS1__getStandardServiceList(soap*, ...) allocate, set all public members +/// - _WS1__getStandardServiceList::soap_default(soap*) default initialize members +/// - int soap_read__WS1__getStandardServiceList(soap*, _WS1__getStandardServiceList*) deserialize from a stream +/// - int soap_write__WS1__getStandardServiceList(soap*, _WS1__getStandardServiceList*) serialize to a stream +/// - _WS1__getStandardServiceList* _WS1__getStandardServiceList::soap_dup(soap*) returns deep copy of _WS1__getStandardServiceList, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__getStandardServiceList::soap_del() deep deletes _WS1__getStandardServiceList data members, use only after _WS1__getStandardServiceList::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__getStandardServiceList::soap_type() returns SOAP_TYPE__WS1__getStandardServiceList or derived type identifier +class _WS1__getStandardServiceList +{ public: +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":getStandardServiceListResponse +/// @brief "http://entry.serviceengine.cross.digiwin.com":getStandardServiceListResponse is a complexType. +/// +/// @note class _WS1__getStandardServiceListResponse operations: +/// - _WS1__getStandardServiceListResponse* soap_new__WS1__getStandardServiceListResponse(soap*) allocate and default initialize +/// - _WS1__getStandardServiceListResponse* soap_new__WS1__getStandardServiceListResponse(soap*, int num) allocate and default initialize an array +/// - _WS1__getStandardServiceListResponse* soap_new_req__WS1__getStandardServiceListResponse(soap*, ...) allocate, set required members +/// - _WS1__getStandardServiceListResponse* soap_new_set__WS1__getStandardServiceListResponse(soap*, ...) allocate, set all public members +/// - _WS1__getStandardServiceListResponse::soap_default(soap*) default initialize members +/// - int soap_read__WS1__getStandardServiceListResponse(soap*, _WS1__getStandardServiceListResponse*) deserialize from a stream +/// - int soap_write__WS1__getStandardServiceListResponse(soap*, _WS1__getStandardServiceListResponse*) serialize to a stream +/// - _WS1__getStandardServiceListResponse* _WS1__getStandardServiceListResponse::soap_dup(soap*) returns deep copy of _WS1__getStandardServiceListResponse, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__getStandardServiceListResponse::soap_del() deep deletes _WS1__getStandardServiceListResponse data members, use only after _WS1__getStandardServiceListResponse::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__getStandardServiceListResponse::soap_type() returns SOAP_TYPE__WS1__getStandardServiceListResponse or derived type identifier +class _WS1__getStandardServiceListResponse +{ public: +/// Element "getStandardServiceListReturn" of type xs:string. + std::string getStandardServiceListReturn 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":getStandardDataNameList +/// @brief "http://entry.serviceengine.cross.digiwin.com":getStandardDataNameList is a complexType. +/// +/// @note class _WS1__getStandardDataNameList operations: +/// - _WS1__getStandardDataNameList* soap_new__WS1__getStandardDataNameList(soap*) allocate and default initialize +/// - _WS1__getStandardDataNameList* soap_new__WS1__getStandardDataNameList(soap*, int num) allocate and default initialize an array +/// - _WS1__getStandardDataNameList* soap_new_req__WS1__getStandardDataNameList(soap*, ...) allocate, set required members +/// - _WS1__getStandardDataNameList* soap_new_set__WS1__getStandardDataNameList(soap*, ...) allocate, set all public members +/// - _WS1__getStandardDataNameList::soap_default(soap*) default initialize members +/// - int soap_read__WS1__getStandardDataNameList(soap*, _WS1__getStandardDataNameList*) deserialize from a stream +/// - int soap_write__WS1__getStandardDataNameList(soap*, _WS1__getStandardDataNameList*) serialize to a stream +/// - _WS1__getStandardDataNameList* _WS1__getStandardDataNameList::soap_dup(soap*) returns deep copy of _WS1__getStandardDataNameList, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__getStandardDataNameList::soap_del() deep deletes _WS1__getStandardDataNameList data members, use only after _WS1__getStandardDataNameList::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__getStandardDataNameList::soap_type() returns SOAP_TYPE__WS1__getStandardDataNameList or derived type identifier +class _WS1__getStandardDataNameList +{ public: +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":getStandardDataNameListResponse +/// @brief "http://entry.serviceengine.cross.digiwin.com":getStandardDataNameListResponse is a complexType. +/// +/// @note class _WS1__getStandardDataNameListResponse operations: +/// - _WS1__getStandardDataNameListResponse* soap_new__WS1__getStandardDataNameListResponse(soap*) allocate and default initialize +/// - _WS1__getStandardDataNameListResponse* soap_new__WS1__getStandardDataNameListResponse(soap*, int num) allocate and default initialize an array +/// - _WS1__getStandardDataNameListResponse* soap_new_req__WS1__getStandardDataNameListResponse(soap*, ...) allocate, set required members +/// - _WS1__getStandardDataNameListResponse* soap_new_set__WS1__getStandardDataNameListResponse(soap*, ...) allocate, set all public members +/// - _WS1__getStandardDataNameListResponse::soap_default(soap*) default initialize members +/// - int soap_read__WS1__getStandardDataNameListResponse(soap*, _WS1__getStandardDataNameListResponse*) deserialize from a stream +/// - int soap_write__WS1__getStandardDataNameListResponse(soap*, _WS1__getStandardDataNameListResponse*) serialize to a stream +/// - _WS1__getStandardDataNameListResponse* _WS1__getStandardDataNameListResponse::soap_dup(soap*) returns deep copy of _WS1__getStandardDataNameListResponse, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__getStandardDataNameListResponse::soap_del() deep deletes _WS1__getStandardDataNameListResponse data members, use only after _WS1__getStandardDataNameListResponse::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__getStandardDataNameListResponse::soap_type() returns SOAP_TYPE__WS1__getStandardDataNameListResponse or derived type identifier +class _WS1__getStandardDataNameListResponse +{ public: +/// Element "getStandardDataNameListReturn" of type xs:string. + std::string getStandardDataNameListReturn 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":regSrv +/// @brief "http://entry.serviceengine.cross.digiwin.com":regSrv is a complexType. +/// +/// @note class _WS1__regSrv operations: +/// - _WS1__regSrv* soap_new__WS1__regSrv(soap*) allocate and default initialize +/// - _WS1__regSrv* soap_new__WS1__regSrv(soap*, int num) allocate and default initialize an array +/// - _WS1__regSrv* soap_new_req__WS1__regSrv(soap*, ...) allocate, set required members +/// - _WS1__regSrv* soap_new_set__WS1__regSrv(soap*, ...) allocate, set all public members +/// - _WS1__regSrv::soap_default(soap*) default initialize members +/// - int soap_read__WS1__regSrv(soap*, _WS1__regSrv*) deserialize from a stream +/// - int soap_write__WS1__regSrv(soap*, _WS1__regSrv*) serialize to a stream +/// - _WS1__regSrv* _WS1__regSrv::soap_dup(soap*) returns deep copy of _WS1__regSrv, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__regSrv::soap_del() deep deletes _WS1__regSrv data members, use only after _WS1__regSrv::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__regSrv::soap_type() returns SOAP_TYPE__WS1__regSrv or derived type identifier +class _WS1__regSrv +{ public: +/// Element "in0" of type xs:string. + std::string in0 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":regSrvResponse +/// @brief "http://entry.serviceengine.cross.digiwin.com":regSrvResponse is a complexType. +/// +/// @note class _WS1__regSrvResponse operations: +/// - _WS1__regSrvResponse* soap_new__WS1__regSrvResponse(soap*) allocate and default initialize +/// - _WS1__regSrvResponse* soap_new__WS1__regSrvResponse(soap*, int num) allocate and default initialize an array +/// - _WS1__regSrvResponse* soap_new_req__WS1__regSrvResponse(soap*, ...) allocate, set required members +/// - _WS1__regSrvResponse* soap_new_set__WS1__regSrvResponse(soap*, ...) allocate, set all public members +/// - _WS1__regSrvResponse::soap_default(soap*) default initialize members +/// - int soap_read__WS1__regSrvResponse(soap*, _WS1__regSrvResponse*) deserialize from a stream +/// - int soap_write__WS1__regSrvResponse(soap*, _WS1__regSrvResponse*) serialize to a stream +/// - _WS1__regSrvResponse* _WS1__regSrvResponse::soap_dup(soap*) returns deep copy of _WS1__regSrvResponse, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__regSrvResponse::soap_del() deep deletes _WS1__regSrvResponse data members, use only after _WS1__regSrvResponse::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__regSrvResponse::soap_type() returns SOAP_TYPE__WS1__regSrvResponse or derived type identifier +class _WS1__regSrvResponse +{ public: +/// Element "regSrvReturn" of type xs:string. + std::string regSrvReturn 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":regEAI +/// @brief "http://entry.serviceengine.cross.digiwin.com":regEAI is a complexType. +/// +/// @note class _WS1__regEAI operations: +/// - _WS1__regEAI* soap_new__WS1__regEAI(soap*) allocate and default initialize +/// - _WS1__regEAI* soap_new__WS1__regEAI(soap*, int num) allocate and default initialize an array +/// - _WS1__regEAI* soap_new_req__WS1__regEAI(soap*, ...) allocate, set required members +/// - _WS1__regEAI* soap_new_set__WS1__regEAI(soap*, ...) allocate, set all public members +/// - _WS1__regEAI::soap_default(soap*) default initialize members +/// - int soap_read__WS1__regEAI(soap*, _WS1__regEAI*) deserialize from a stream +/// - int soap_write__WS1__regEAI(soap*, _WS1__regEAI*) serialize to a stream +/// - _WS1__regEAI* _WS1__regEAI::soap_dup(soap*) returns deep copy of _WS1__regEAI, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__regEAI::soap_del() deep deletes _WS1__regEAI data members, use only after _WS1__regEAI::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__regEAI::soap_type() returns SOAP_TYPE__WS1__regEAI or derived type identifier +class _WS1__regEAI +{ public: +/// Element "in0" of type xs:string. + std::string in0 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":regEAIResponse +/// @brief "http://entry.serviceengine.cross.digiwin.com":regEAIResponse is a complexType. +/// +/// @note class _WS1__regEAIResponse operations: +/// - _WS1__regEAIResponse* soap_new__WS1__regEAIResponse(soap*) allocate and default initialize +/// - _WS1__regEAIResponse* soap_new__WS1__regEAIResponse(soap*, int num) allocate and default initialize an array +/// - _WS1__regEAIResponse* soap_new_req__WS1__regEAIResponse(soap*, ...) allocate, set required members +/// - _WS1__regEAIResponse* soap_new_set__WS1__regEAIResponse(soap*, ...) allocate, set all public members +/// - _WS1__regEAIResponse::soap_default(soap*) default initialize members +/// - int soap_read__WS1__regEAIResponse(soap*, _WS1__regEAIResponse*) deserialize from a stream +/// - int soap_write__WS1__regEAIResponse(soap*, _WS1__regEAIResponse*) serialize to a stream +/// - _WS1__regEAIResponse* _WS1__regEAIResponse::soap_dup(soap*) returns deep copy of _WS1__regEAIResponse, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__regEAIResponse::soap_del() deep deletes _WS1__regEAIResponse data members, use only after _WS1__regEAIResponse::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__regEAIResponse::soap_type() returns SOAP_TYPE__WS1__regEAIResponse or derived type identifier +class _WS1__regEAIResponse +{ public: +/// Element "regEAIReturn" of type xs:string. + std::string regEAIReturn 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":invokeSrv +/// @brief "http://entry.serviceengine.cross.digiwin.com":invokeSrv is a complexType. +/// +/// @note class _WS1__invokeSrv operations: +/// - _WS1__invokeSrv* soap_new__WS1__invokeSrv(soap*) allocate and default initialize +/// - _WS1__invokeSrv* soap_new__WS1__invokeSrv(soap*, int num) allocate and default initialize an array +/// - _WS1__invokeSrv* soap_new_req__WS1__invokeSrv(soap*, ...) allocate, set required members +/// - _WS1__invokeSrv* soap_new_set__WS1__invokeSrv(soap*, ...) allocate, set all public members +/// - _WS1__invokeSrv::soap_default(soap*) default initialize members +/// - int soap_read__WS1__invokeSrv(soap*, _WS1__invokeSrv*) deserialize from a stream +/// - int soap_write__WS1__invokeSrv(soap*, _WS1__invokeSrv*) serialize to a stream +/// - _WS1__invokeSrv* _WS1__invokeSrv::soap_dup(soap*) returns deep copy of _WS1__invokeSrv, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__invokeSrv::soap_del() deep deletes _WS1__invokeSrv data members, use only after _WS1__invokeSrv::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__invokeSrv::soap_type() returns SOAP_TYPE__WS1__invokeSrv or derived type identifier +class _WS1__invokeSrv +{ public: +/// Element "in0" of type xs:string. + std::string in0 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":invokeSrvResponse +/// @brief "http://entry.serviceengine.cross.digiwin.com":invokeSrvResponse is a complexType. +/// +/// @note class _WS1__invokeSrvResponse operations: +/// - _WS1__invokeSrvResponse* soap_new__WS1__invokeSrvResponse(soap*) allocate and default initialize +/// - _WS1__invokeSrvResponse* soap_new__WS1__invokeSrvResponse(soap*, int num) allocate and default initialize an array +/// - _WS1__invokeSrvResponse* soap_new_req__WS1__invokeSrvResponse(soap*, ...) allocate, set required members +/// - _WS1__invokeSrvResponse* soap_new_set__WS1__invokeSrvResponse(soap*, ...) allocate, set all public members +/// - _WS1__invokeSrvResponse::soap_default(soap*) default initialize members +/// - int soap_read__WS1__invokeSrvResponse(soap*, _WS1__invokeSrvResponse*) deserialize from a stream +/// - int soap_write__WS1__invokeSrvResponse(soap*, _WS1__invokeSrvResponse*) serialize to a stream +/// - _WS1__invokeSrvResponse* _WS1__invokeSrvResponse::soap_dup(soap*) returns deep copy of _WS1__invokeSrvResponse, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__invokeSrvResponse::soap_del() deep deletes _WS1__invokeSrvResponse data members, use only after _WS1__invokeSrvResponse::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__invokeSrvResponse::soap_type() returns SOAP_TYPE__WS1__invokeSrvResponse or derived type identifier +class _WS1__invokeSrvResponse +{ public: +/// Element "invokeSrvReturn" of type xs:string. + std::string invokeSrvReturn 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":escrowResendSrv +/// @brief "http://entry.serviceengine.cross.digiwin.com":escrowResendSrv is a complexType. +/// +/// @note class _WS1__escrowResendSrv operations: +/// - _WS1__escrowResendSrv* soap_new__WS1__escrowResendSrv(soap*) allocate and default initialize +/// - _WS1__escrowResendSrv* soap_new__WS1__escrowResendSrv(soap*, int num) allocate and default initialize an array +/// - _WS1__escrowResendSrv* soap_new_req__WS1__escrowResendSrv(soap*, ...) allocate, set required members +/// - _WS1__escrowResendSrv* soap_new_set__WS1__escrowResendSrv(soap*, ...) allocate, set all public members +/// - _WS1__escrowResendSrv::soap_default(soap*) default initialize members +/// - int soap_read__WS1__escrowResendSrv(soap*, _WS1__escrowResendSrv*) deserialize from a stream +/// - int soap_write__WS1__escrowResendSrv(soap*, _WS1__escrowResendSrv*) serialize to a stream +/// - _WS1__escrowResendSrv* _WS1__escrowResendSrv::soap_dup(soap*) returns deep copy of _WS1__escrowResendSrv, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__escrowResendSrv::soap_del() deep deletes _WS1__escrowResendSrv data members, use only after _WS1__escrowResendSrv::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__escrowResendSrv::soap_type() returns SOAP_TYPE__WS1__escrowResendSrv or derived type identifier +class _WS1__escrowResendSrv +{ public: +/// Element "in0" of type xs:string. + std::string in0 1; ///< Required element. +/// Element "in1" of type xs:string. + std::string in1 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + +/// @brief Top-level root element "http://entry.serviceengine.cross.digiwin.com":escrowResendSrvResponse +/// @brief "http://entry.serviceengine.cross.digiwin.com":escrowResendSrvResponse is a complexType. +/// +/// @note class _WS1__escrowResendSrvResponse operations: +/// - _WS1__escrowResendSrvResponse* soap_new__WS1__escrowResendSrvResponse(soap*) allocate and default initialize +/// - _WS1__escrowResendSrvResponse* soap_new__WS1__escrowResendSrvResponse(soap*, int num) allocate and default initialize an array +/// - _WS1__escrowResendSrvResponse* soap_new_req__WS1__escrowResendSrvResponse(soap*, ...) allocate, set required members +/// - _WS1__escrowResendSrvResponse* soap_new_set__WS1__escrowResendSrvResponse(soap*, ...) allocate, set all public members +/// - _WS1__escrowResendSrvResponse::soap_default(soap*) default initialize members +/// - int soap_read__WS1__escrowResendSrvResponse(soap*, _WS1__escrowResendSrvResponse*) deserialize from a stream +/// - int soap_write__WS1__escrowResendSrvResponse(soap*, _WS1__escrowResendSrvResponse*) serialize to a stream +/// - _WS1__escrowResendSrvResponse* _WS1__escrowResendSrvResponse::soap_dup(soap*) returns deep copy of _WS1__escrowResendSrvResponse, copies the (cyclic) graph structure when a context is provided, or (cycle-pruned) tree structure with soap_set_mode(soap, SOAP_XML_TREE) (use soapcpp2 -Ec) +/// - _WS1__escrowResendSrvResponse::soap_del() deep deletes _WS1__escrowResendSrvResponse data members, use only after _WS1__escrowResendSrvResponse::soap_dup(NULL) (use soapcpp2 -Ed) +/// - int _WS1__escrowResendSrvResponse::soap_type() returns SOAP_TYPE__WS1__escrowResendSrvResponse or derived type identifier +class _WS1__escrowResendSrvResponse +{ public: +/// Element "escrowResendSrvReturn" of type xs:string. + std::string escrowResendSrvReturn 1; ///< Required element. +/// Pointer to soap context that manages this instance. + struct soap *soap ; +}; + + +/******************************************************************************\ + * * + * Additional Top-Level Elements * + * http://entry.serviceengine.cross.digiwin.com * + * * +\******************************************************************************/ + + +/******************************************************************************\ + * * + * Additional Top-Level Attributes * + * http://entry.serviceengine.cross.digiwin.com * + * * +\******************************************************************************/ + + +/******************************************************************************\ + * * + * Services * + * * +\******************************************************************************/ + + +//gsoap WS1 service name: IntegrationEntrySoapBinding +//gsoap WS1 service type: IntegrationEntry +//gsoap WS1 service port: http://192.168.8.115:9999/IntegrationEntry +//gsoap WS1 service namespace: http://entry.serviceengine.cross.digiwin.com +//gsoap WS1 service transport: http://schemas.xmlsoap.org/soap/http + +/** @mainpage Service Definitions + +@section Service_bindings Service Bindings + + - @ref IntegrationEntrySoapBinding + +@section Service_more More Information + + - @ref page_notes "Notes" + + - @ref page_XMLDataBinding "XML Data Binding" + + - @ref SOAP_ENV__Header "SOAP Header Content" (when applicable) + + - @ref SOAP_ENV__Detail "SOAP Fault Detail Content" (when applicable) + + +*/ + +/** @page IntegrationEntrySoapBinding Binding "IntegrationEntrySoapBinding" + +@section IntegrationEntrySoapBinding_operations Operations of Binding "IntegrationEntrySoapBinding" + + - @ref __WS1__invokeEtl + + - @ref __WS1__getEtlJobList + + - @ref __WS1__getParamList + + - @ref __WS1__getProdList + + - @ref __WS1__regProdAP + + - @ref __WS1__invokeUnion + + - @ref __WS1__invokeMdm + + - @ref __WS1__getProd + + - @ref __WS1__getSrv + + - @ref __WS1__fpInvoke + + - @ref __WS1__getStandardServiceList + + - @ref __WS1__getStandardDataNameList + + - @ref __WS1__regSrv + + - @ref __WS1__regEAI + + - @ref __WS1__invokeSrv + + - @ref __WS1__escrowResendSrv + +@section IntegrationEntrySoapBinding_ports Default endpoints of Binding "IntegrationEntrySoapBinding" + + - http://192.168.8.115:9999/IntegrationEntry + +@note Use wsdl2h option -Nname to change the service binding prefix name + + +*/ + +/******************************************************************************\ + * * + * Service Binding * + * IntegrationEntrySoapBinding * + * * +\******************************************************************************/ + + +/******************************************************************************\ + * * + * Service Operation * + * __WS1__invokeEtl * + * * +\******************************************************************************/ + + +/** Operation "__WS1__invokeEtl" of service binding "IntegrationEntrySoapBinding". + + - SOAP document/literal style messaging + + - Default endpoints: + - http://192.168.8.115:9999/IntegrationEntry + + - Addressing input action: "" + + - Addressing output action: "Response" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call___WS1__invokeEtl( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // input parameters: + _WS1__invokeEtl* WS1__invokeEtl, + // output parameters: + _WS1__invokeEtlResponse &WS1__invokeEtlResponse + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int __WS1__invokeEtl( + struct soap *soap, + // input parameters: + _WS1__invokeEtl* WS1__invokeEtl, + // output parameters: + _WS1__invokeEtlResponse &WS1__invokeEtlResponse + ); +@endcode + +C++ proxy class (defined in soapIntegrationEntrySoapBindingProxy.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingProxy; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; + +C++ service class (defined in soapIntegrationEntrySoapBindingService.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingService; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; + +*/ + +//gsoap WS1 service method-protocol: invokeEtl SOAP +//gsoap WS1 service method-style: invokeEtl document +//gsoap WS1 service method-encoding: invokeEtl literal +//gsoap WS1 service method-action: invokeEtl "" +//gsoap WS1 service method-output-action: invokeEtl Response +int __WS1__invokeEtl( + _WS1__invokeEtl* WS1__invokeEtl, ///< Input parameter + _WS1__invokeEtlResponse &WS1__invokeEtlResponse ///< Output parameter +); + +/******************************************************************************\ + * * + * Service Operation * + * __WS1__getEtlJobList * + * * +\******************************************************************************/ + + +/** Operation "__WS1__getEtlJobList" of service binding "IntegrationEntrySoapBinding". + + - SOAP document/literal style messaging + + - Default endpoints: + - http://192.168.8.115:9999/IntegrationEntry + + - Addressing input action: "" + + - Addressing output action: "Response" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call___WS1__getEtlJobList( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // input parameters: + _WS1__getEtlJobList* WS1__getEtlJobList, + // output parameters: + _WS1__getEtlJobListResponse &WS1__getEtlJobListResponse + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int __WS1__getEtlJobList( + struct soap *soap, + // input parameters: + _WS1__getEtlJobList* WS1__getEtlJobList, + // output parameters: + _WS1__getEtlJobListResponse &WS1__getEtlJobListResponse + ); +@endcode + +C++ proxy class (defined in soapIntegrationEntrySoapBindingProxy.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingProxy; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; + +C++ service class (defined in soapIntegrationEntrySoapBindingService.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingService; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; + +*/ + +//gsoap WS1 service method-protocol: getEtlJobList SOAP +//gsoap WS1 service method-style: getEtlJobList document +//gsoap WS1 service method-encoding: getEtlJobList literal +//gsoap WS1 service method-action: getEtlJobList "" +//gsoap WS1 service method-output-action: getEtlJobList Response +int __WS1__getEtlJobList( + _WS1__getEtlJobList* WS1__getEtlJobList, ///< Input parameter + _WS1__getEtlJobListResponse &WS1__getEtlJobListResponse ///< Output parameter +); + +/******************************************************************************\ + * * + * Service Operation * + * __WS1__getParamList * + * * +\******************************************************************************/ + + +/** Operation "__WS1__getParamList" of service binding "IntegrationEntrySoapBinding". + + - SOAP document/literal style messaging + + - Default endpoints: + - http://192.168.8.115:9999/IntegrationEntry + + - Addressing input action: "" + + - Addressing output action: "Response" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call___WS1__getParamList( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // input parameters: + _WS1__getParamList* WS1__getParamList, + // output parameters: + _WS1__getParamListResponse &WS1__getParamListResponse + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int __WS1__getParamList( + struct soap *soap, + // input parameters: + _WS1__getParamList* WS1__getParamList, + // output parameters: + _WS1__getParamListResponse &WS1__getParamListResponse + ); +@endcode + +C++ proxy class (defined in soapIntegrationEntrySoapBindingProxy.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingProxy; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; + +C++ service class (defined in soapIntegrationEntrySoapBindingService.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingService; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; + +*/ + +//gsoap WS1 service method-protocol: getParamList SOAP +//gsoap WS1 service method-style: getParamList document +//gsoap WS1 service method-encoding: getParamList literal +//gsoap WS1 service method-action: getParamList "" +//gsoap WS1 service method-output-action: getParamList Response +int __WS1__getParamList( + _WS1__getParamList* WS1__getParamList, ///< Input parameter + _WS1__getParamListResponse &WS1__getParamListResponse ///< Output parameter +); + +/******************************************************************************\ + * * + * Service Operation * + * __WS1__getProdList * + * * +\******************************************************************************/ + + +/** Operation "__WS1__getProdList" of service binding "IntegrationEntrySoapBinding". + + - SOAP document/literal style messaging + + - Default endpoints: + - http://192.168.8.115:9999/IntegrationEntry + + - Addressing input action: "" + + - Addressing output action: "Response" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call___WS1__getProdList( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // input parameters: + _WS1__getProdList* WS1__getProdList, + // output parameters: + _WS1__getProdListResponse &WS1__getProdListResponse + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int __WS1__getProdList( + struct soap *soap, + // input parameters: + _WS1__getProdList* WS1__getProdList, + // output parameters: + _WS1__getProdListResponse &WS1__getProdListResponse + ); +@endcode + +C++ proxy class (defined in soapIntegrationEntrySoapBindingProxy.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingProxy; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; + +C++ service class (defined in soapIntegrationEntrySoapBindingService.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingService; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; + +*/ + +//gsoap WS1 service method-protocol: getProdList SOAP +//gsoap WS1 service method-style: getProdList document +//gsoap WS1 service method-encoding: getProdList literal +//gsoap WS1 service method-action: getProdList "" +//gsoap WS1 service method-output-action: getProdList Response +int __WS1__getProdList( + _WS1__getProdList* WS1__getProdList, ///< Input parameter + _WS1__getProdListResponse &WS1__getProdListResponse ///< Output parameter +); + +/******************************************************************************\ + * * + * Service Operation * + * __WS1__regProdAP * + * * +\******************************************************************************/ + + +/** Operation "__WS1__regProdAP" of service binding "IntegrationEntrySoapBinding". + + - SOAP document/literal style messaging + + - Default endpoints: + - http://192.168.8.115:9999/IntegrationEntry + + - Addressing input action: "" + + - Addressing output action: "Response" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call___WS1__regProdAP( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // input parameters: + _WS1__regProdAP* WS1__regProdAP, + // output parameters: + _WS1__regProdAPResponse &WS1__regProdAPResponse + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int __WS1__regProdAP( + struct soap *soap, + // input parameters: + _WS1__regProdAP* WS1__regProdAP, + // output parameters: + _WS1__regProdAPResponse &WS1__regProdAPResponse + ); +@endcode + +C++ proxy class (defined in soapIntegrationEntrySoapBindingProxy.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingProxy; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; + +C++ service class (defined in soapIntegrationEntrySoapBindingService.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingService; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; + +*/ + +//gsoap WS1 service method-protocol: regProdAP SOAP +//gsoap WS1 service method-style: regProdAP document +//gsoap WS1 service method-encoding: regProdAP literal +//gsoap WS1 service method-action: regProdAP "" +//gsoap WS1 service method-output-action: regProdAP Response +int __WS1__regProdAP( + _WS1__regProdAP* WS1__regProdAP, ///< Input parameter + _WS1__regProdAPResponse &WS1__regProdAPResponse ///< Output parameter +); + +/******************************************************************************\ + * * + * Service Operation * + * __WS1__invokeUnion * + * * +\******************************************************************************/ + + +/** Operation "__WS1__invokeUnion" of service binding "IntegrationEntrySoapBinding". + + - SOAP document/literal style messaging + + - Default endpoints: + - http://192.168.8.115:9999/IntegrationEntry + + - Addressing input action: "" + + - Addressing output action: "Response" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call___WS1__invokeUnion( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // input parameters: + _WS1__invokeUnion* WS1__invokeUnion, + // output parameters: + _WS1__invokeUnionResponse &WS1__invokeUnionResponse + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int __WS1__invokeUnion( + struct soap *soap, + // input parameters: + _WS1__invokeUnion* WS1__invokeUnion, + // output parameters: + _WS1__invokeUnionResponse &WS1__invokeUnionResponse + ); +@endcode + +C++ proxy class (defined in soapIntegrationEntrySoapBindingProxy.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingProxy; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; + +C++ service class (defined in soapIntegrationEntrySoapBindingService.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingService; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; + +*/ + +//gsoap WS1 service method-protocol: invokeUnion SOAP +//gsoap WS1 service method-style: invokeUnion document +//gsoap WS1 service method-encoding: invokeUnion literal +//gsoap WS1 service method-action: invokeUnion "" +//gsoap WS1 service method-output-action: invokeUnion Response +int __WS1__invokeUnion( + _WS1__invokeUnion* WS1__invokeUnion, ///< Input parameter + _WS1__invokeUnionResponse &WS1__invokeUnionResponse ///< Output parameter +); + +/******************************************************************************\ + * * + * Service Operation * + * __WS1__invokeMdm * + * * +\******************************************************************************/ + + +/** Operation "__WS1__invokeMdm" of service binding "IntegrationEntrySoapBinding". + + - SOAP document/literal style messaging + + - Default endpoints: + - http://192.168.8.115:9999/IntegrationEntry + + - Addressing input action: "" + + - Addressing output action: "Response" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call___WS1__invokeMdm( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // input parameters: + _WS1__invokeMdm* WS1__invokeMdm, + // output parameters: + _WS1__invokeMdmResponse &WS1__invokeMdmResponse + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int __WS1__invokeMdm( + struct soap *soap, + // input parameters: + _WS1__invokeMdm* WS1__invokeMdm, + // output parameters: + _WS1__invokeMdmResponse &WS1__invokeMdmResponse + ); +@endcode + +C++ proxy class (defined in soapIntegrationEntrySoapBindingProxy.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingProxy; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; + +C++ service class (defined in soapIntegrationEntrySoapBindingService.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingService; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; + +*/ + +//gsoap WS1 service method-protocol: invokeMdm SOAP +//gsoap WS1 service method-style: invokeMdm document +//gsoap WS1 service method-encoding: invokeMdm literal +//gsoap WS1 service method-action: invokeMdm "" +//gsoap WS1 service method-output-action: invokeMdm Response +int __WS1__invokeMdm( + _WS1__invokeMdm* WS1__invokeMdm, ///< Input parameter + _WS1__invokeMdmResponse &WS1__invokeMdmResponse ///< Output parameter +); + +/******************************************************************************\ + * * + * Service Operation * + * __WS1__getProd * + * * +\******************************************************************************/ + + +/** Operation "__WS1__getProd" of service binding "IntegrationEntrySoapBinding". + + - SOAP document/literal style messaging + + - Default endpoints: + - http://192.168.8.115:9999/IntegrationEntry + + - Addressing input action: "" + + - Addressing output action: "Response" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call___WS1__getProd( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // input parameters: + _WS1__getProd* WS1__getProd, + // output parameters: + _WS1__getProdResponse &WS1__getProdResponse + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int __WS1__getProd( + struct soap *soap, + // input parameters: + _WS1__getProd* WS1__getProd, + // output parameters: + _WS1__getProdResponse &WS1__getProdResponse + ); +@endcode + +C++ proxy class (defined in soapIntegrationEntrySoapBindingProxy.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingProxy; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; + +C++ service class (defined in soapIntegrationEntrySoapBindingService.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingService; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; + +*/ + +//gsoap WS1 service method-protocol: getProd SOAP +//gsoap WS1 service method-style: getProd document +//gsoap WS1 service method-encoding: getProd literal +//gsoap WS1 service method-action: getProd "" +//gsoap WS1 service method-output-action: getProd Response +int __WS1__getProd( + _WS1__getProd* WS1__getProd, ///< Input parameter + _WS1__getProdResponse &WS1__getProdResponse ///< Output parameter +); + +/******************************************************************************\ + * * + * Service Operation * + * __WS1__getSrv * + * * +\******************************************************************************/ + + +/** Operation "__WS1__getSrv" of service binding "IntegrationEntrySoapBinding". + + - SOAP document/literal style messaging + + - Default endpoints: + - http://192.168.8.115:9999/IntegrationEntry + + - Addressing input action: "" + + - Addressing output action: "Response" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call___WS1__getSrv( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // input parameters: + _WS1__getSrv* WS1__getSrv, + // output parameters: + _WS1__getSrvResponse &WS1__getSrvResponse + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int __WS1__getSrv( + struct soap *soap, + // input parameters: + _WS1__getSrv* WS1__getSrv, + // output parameters: + _WS1__getSrvResponse &WS1__getSrvResponse + ); +@endcode + +C++ proxy class (defined in soapIntegrationEntrySoapBindingProxy.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingProxy; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; + +C++ service class (defined in soapIntegrationEntrySoapBindingService.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingService; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; + +*/ + +//gsoap WS1 service method-protocol: getSrv SOAP +//gsoap WS1 service method-style: getSrv document +//gsoap WS1 service method-encoding: getSrv literal +//gsoap WS1 service method-action: getSrv "" +//gsoap WS1 service method-output-action: getSrv Response +int __WS1__getSrv( + _WS1__getSrv* WS1__getSrv, ///< Input parameter + _WS1__getSrvResponse &WS1__getSrvResponse ///< Output parameter +); + +/******************************************************************************\ + * * + * Service Operation * + * __WS1__fpInvoke * + * * +\******************************************************************************/ + + +/** Operation "__WS1__fpInvoke" of service binding "IntegrationEntrySoapBinding". + + - SOAP document/literal style messaging + + - Default endpoints: + - http://192.168.8.115:9999/IntegrationEntry + + - Addressing input action: "" + + - Addressing output action: "Response" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call___WS1__fpInvoke( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // input parameters: + _WS1__fpInvoke* WS1__fpInvoke, + // output parameters: + _WS1__fpInvokeResponse &WS1__fpInvokeResponse + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int __WS1__fpInvoke( + struct soap *soap, + // input parameters: + _WS1__fpInvoke* WS1__fpInvoke, + // output parameters: + _WS1__fpInvokeResponse &WS1__fpInvokeResponse + ); +@endcode + +C++ proxy class (defined in soapIntegrationEntrySoapBindingProxy.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingProxy; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; + +C++ service class (defined in soapIntegrationEntrySoapBindingService.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingService; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; + +*/ + +//gsoap WS1 service method-protocol: fpInvoke SOAP +//gsoap WS1 service method-style: fpInvoke document +//gsoap WS1 service method-encoding: fpInvoke literal +//gsoap WS1 service method-action: fpInvoke "" +//gsoap WS1 service method-output-action: fpInvoke Response +int __WS1__fpInvoke( + _WS1__fpInvoke* WS1__fpInvoke, ///< Input parameter + _WS1__fpInvokeResponse &WS1__fpInvokeResponse ///< Output parameter +); + +/******************************************************************************\ + * * + * Service Operation * + * __WS1__getStandardServiceList * + * * +\******************************************************************************/ + + +/** Operation "__WS1__getStandardServiceList" of service binding "IntegrationEntrySoapBinding". + + - SOAP document/literal style messaging + + - Default endpoints: + - http://192.168.8.115:9999/IntegrationEntry + + - Addressing input action: "" + + - Addressing output action: "Response" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call___WS1__getStandardServiceList( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // input parameters: + _WS1__getStandardServiceList* WS1__getStandardServiceList, + // output parameters: + _WS1__getStandardServiceListResponse&WS1__getStandardServiceListResponse + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int __WS1__getStandardServiceList( + struct soap *soap, + // input parameters: + _WS1__getStandardServiceList* WS1__getStandardServiceList, + // output parameters: + _WS1__getStandardServiceListResponse&WS1__getStandardServiceListResponse + ); +@endcode + +C++ proxy class (defined in soapIntegrationEntrySoapBindingProxy.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingProxy; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; + +C++ service class (defined in soapIntegrationEntrySoapBindingService.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingService; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; + +*/ + +//gsoap WS1 service method-protocol: getStandardServiceList SOAP +//gsoap WS1 service method-style: getStandardServiceList document +//gsoap WS1 service method-encoding: getStandardServiceList literal +//gsoap WS1 service method-action: getStandardServiceList "" +//gsoap WS1 service method-output-action: getStandardServiceList Response +int __WS1__getStandardServiceList( + _WS1__getStandardServiceList* WS1__getStandardServiceList, ///< Input parameter + _WS1__getStandardServiceListResponse&WS1__getStandardServiceListResponse ///< Output parameter +); + +/******************************************************************************\ + * * + * Service Operation * + * __WS1__getStandardDataNameList * + * * +\******************************************************************************/ + + +/** Operation "__WS1__getStandardDataNameList" of service binding "IntegrationEntrySoapBinding". + + - SOAP document/literal style messaging + + - Default endpoints: + - http://192.168.8.115:9999/IntegrationEntry + + - Addressing input action: "" + + - Addressing output action: "Response" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call___WS1__getStandardDataNameList( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // input parameters: + _WS1__getStandardDataNameList* WS1__getStandardDataNameList, + // output parameters: + _WS1__getStandardDataNameListResponse&WS1__getStandardDataNameListResponse + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int __WS1__getStandardDataNameList( + struct soap *soap, + // input parameters: + _WS1__getStandardDataNameList* WS1__getStandardDataNameList, + // output parameters: + _WS1__getStandardDataNameListResponse&WS1__getStandardDataNameListResponse + ); +@endcode + +C++ proxy class (defined in soapIntegrationEntrySoapBindingProxy.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingProxy; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; + +C++ service class (defined in soapIntegrationEntrySoapBindingService.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingService; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; + +*/ + +//gsoap WS1 service method-protocol: getStandardDataNameList SOAP +//gsoap WS1 service method-style: getStandardDataNameList document +//gsoap WS1 service method-encoding: getStandardDataNameList literal +//gsoap WS1 service method-action: getStandardDataNameList "" +//gsoap WS1 service method-output-action: getStandardDataNameList Response +int __WS1__getStandardDataNameList( + _WS1__getStandardDataNameList* WS1__getStandardDataNameList, ///< Input parameter + _WS1__getStandardDataNameListResponse&WS1__getStandardDataNameListResponse ///< Output parameter +); + +/******************************************************************************\ + * * + * Service Operation * + * __WS1__regSrv * + * * +\******************************************************************************/ + + +/** Operation "__WS1__regSrv" of service binding "IntegrationEntrySoapBinding". + + - SOAP document/literal style messaging + + - Default endpoints: + - http://192.168.8.115:9999/IntegrationEntry + + - Addressing input action: "" + + - Addressing output action: "Response" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call___WS1__regSrv( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // input parameters: + _WS1__regSrv* WS1__regSrv, + // output parameters: + _WS1__regSrvResponse &WS1__regSrvResponse + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int __WS1__regSrv( + struct soap *soap, + // input parameters: + _WS1__regSrv* WS1__regSrv, + // output parameters: + _WS1__regSrvResponse &WS1__regSrvResponse + ); +@endcode + +C++ proxy class (defined in soapIntegrationEntrySoapBindingProxy.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingProxy; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; + +C++ service class (defined in soapIntegrationEntrySoapBindingService.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingService; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; + +*/ + +//gsoap WS1 service method-protocol: regSrv SOAP +//gsoap WS1 service method-style: regSrv document +//gsoap WS1 service method-encoding: regSrv literal +//gsoap WS1 service method-action: regSrv "" +//gsoap WS1 service method-output-action: regSrv Response +int __WS1__regSrv( + _WS1__regSrv* WS1__regSrv, ///< Input parameter + _WS1__regSrvResponse &WS1__regSrvResponse ///< Output parameter +); + +/******************************************************************************\ + * * + * Service Operation * + * __WS1__regEAI * + * * +\******************************************************************************/ + + +/** Operation "__WS1__regEAI" of service binding "IntegrationEntrySoapBinding". + + - SOAP document/literal style messaging + + - Default endpoints: + - http://192.168.8.115:9999/IntegrationEntry + + - Addressing input action: "" + + - Addressing output action: "Response" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call___WS1__regEAI( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // input parameters: + _WS1__regEAI* WS1__regEAI, + // output parameters: + _WS1__regEAIResponse &WS1__regEAIResponse + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int __WS1__regEAI( + struct soap *soap, + // input parameters: + _WS1__regEAI* WS1__regEAI, + // output parameters: + _WS1__regEAIResponse &WS1__regEAIResponse + ); +@endcode + +C++ proxy class (defined in soapIntegrationEntrySoapBindingProxy.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingProxy; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; + +C++ service class (defined in soapIntegrationEntrySoapBindingService.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingService; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; + +*/ + +//gsoap WS1 service method-protocol: regEAI SOAP +//gsoap WS1 service method-style: regEAI document +//gsoap WS1 service method-encoding: regEAI literal +//gsoap WS1 service method-action: regEAI "" +//gsoap WS1 service method-output-action: regEAI Response +int __WS1__regEAI( + _WS1__regEAI* WS1__regEAI, ///< Input parameter + _WS1__regEAIResponse &WS1__regEAIResponse ///< Output parameter +); + +/******************************************************************************\ + * * + * Service Operation * + * __WS1__invokeSrv * + * * +\******************************************************************************/ + + +/** Operation "__WS1__invokeSrv" of service binding "IntegrationEntrySoapBinding". + + - SOAP document/literal style messaging + + - Default endpoints: + - http://192.168.8.115:9999/IntegrationEntry + + - Addressing input action: "" + + - Addressing output action: "Response" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call___WS1__invokeSrv( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // input parameters: + _WS1__invokeSrv* WS1__invokeSrv, + // output parameters: + _WS1__invokeSrvResponse &WS1__invokeSrvResponse + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int __WS1__invokeSrv( + struct soap *soap, + // input parameters: + _WS1__invokeSrv* WS1__invokeSrv, + // output parameters: + _WS1__invokeSrvResponse &WS1__invokeSrvResponse + ); +@endcode + +C++ proxy class (defined in soapIntegrationEntrySoapBindingProxy.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingProxy; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; + +C++ service class (defined in soapIntegrationEntrySoapBindingService.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingService; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; + +*/ + +//gsoap WS1 service method-protocol: invokeSrv SOAP +//gsoap WS1 service method-style: invokeSrv document +//gsoap WS1 service method-encoding: invokeSrv literal +//gsoap WS1 service method-action: invokeSrv "" +//gsoap WS1 service method-output-action: invokeSrv Response +int __WS1__invokeSrv( + _WS1__invokeSrv* WS1__invokeSrv, ///< Input parameter + _WS1__invokeSrvResponse &WS1__invokeSrvResponse ///< Output parameter +); + +/******************************************************************************\ + * * + * Service Operation * + * __WS1__escrowResendSrv * + * * +\******************************************************************************/ + + +/** Operation "__WS1__escrowResendSrv" of service binding "IntegrationEntrySoapBinding". + + - SOAP document/literal style messaging + + - Default endpoints: + - http://192.168.8.115:9999/IntegrationEntry + + - Addressing input action: "" + + - Addressing output action: "Response" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call___WS1__escrowResendSrv( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // input parameters: + _WS1__escrowResendSrv* WS1__escrowResendSrv, + // output parameters: + _WS1__escrowResendSrvResponse &WS1__escrowResendSrvResponse + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int __WS1__escrowResendSrv( + struct soap *soap, + // input parameters: + _WS1__escrowResendSrv* WS1__escrowResendSrv, + // output parameters: + _WS1__escrowResendSrvResponse &WS1__escrowResendSrvResponse + ); +@endcode + +C++ proxy class (defined in soapIntegrationEntrySoapBindingProxy.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingProxy; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use proxy classes; + +C++ service class (defined in soapIntegrationEntrySoapBindingService.h generated with soapcpp2): +@code + class IntegrationEntrySoapBindingService; +@endcode +Important: use soapcpp2 option '-j' (or '-i') to generate improved and easy-to-use service classes; + +*/ + +//gsoap WS1 service method-protocol: escrowResendSrv SOAP +//gsoap WS1 service method-style: escrowResendSrv document +//gsoap WS1 service method-encoding: escrowResendSrv literal +//gsoap WS1 service method-action: escrowResendSrv "" +//gsoap WS1 service method-output-action: escrowResendSrv Response +int __WS1__escrowResendSrv( + _WS1__escrowResendSrv* WS1__escrowResendSrv, ///< Input parameter + _WS1__escrowResendSrvResponse &WS1__escrowResendSrvResponse ///< Output parameter +); + +/** @page IntegrationEntrySoapBinding Binding "IntegrationEntrySoapBinding" + +@section IntegrationEntrySoapBinding_policy_enablers Policy Enablers of Binding "IntegrationEntrySoapBinding" + +None specified. + +*/ + +/******************************************************************************\ + * * + * XML Data Binding * + * * +\******************************************************************************/ + + +/** @page page_XMLDataBinding XML Data Binding + +SOAP/XML services use data bindings that are contractually bound by WSDLs and +are auto-generated by wsdl2h and soapcpp2 (see Service Bindings). Plain data +bindings are adopted from XML schemas as part of the WSDL types section or when +running wsdl2h on a set of schemas to produce non-SOAP-based XML data bindings. + +@note The following readers and writers are C/C++ data type (de)serializers +auto-generated by wsdl2h and soapcpp2. Run soapcpp2 on this file to generate the +(de)serialization code, which is stored in soapC.c[pp]. Include "soapH.h" in +your code to import these data type and function declarations. Only use the +soapcpp2-generated files in your project build. Do not include the wsdl2h- +generated .h file in your code. + +@note Data can be read and deserialized from: + - an int file descriptor, using soap->recvfd = fd + - a socket, using soap->socket = (int)... + - a C++ stream (istream, stringstream), using soap->is = (istream*)... + - a C string, using soap->is = (const char*)... + - any input, using the soap->frecv() callback + +@note Data can be serialized and written to: + - an int file descriptor, using soap->sendfd = (int)... + - a socket, using soap->socket = (int)... + - a C++ stream (ostream, stringstream), using soap->os = (ostream*)... + - a C string, using soap->os = (const char**)... + - any output, using the soap->fsend() callback + +@note The following options are available for (de)serialization control: + - soap->encodingStyle = NULL; to remove SOAP 1.1/1.2 encodingStyle + - soap_set_mode(soap, SOAP_XML_TREE); XML without id-ref (no cycles!) + - soap_set_mode(soap, SOAP_XML_GRAPH); XML with id-ref (including cycles) + - soap_set_namespaces(soap, struct Namespace *nsmap); to set xmlns bindings + + +*/ + +/** + +@section WS1 Top-level root elements of schema "http://entry.serviceengine.cross.digiwin.com" + + - @ref _WS1__invokeEtl + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__invokeEtl(struct soap*, _WS1__invokeEtl*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__invokeEtl(struct soap*, _WS1__invokeEtl*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__invokeEtl(struct soap*, const char *URL, _WS1__invokeEtl*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__invokeEtl(struct soap*, const char *URL, _WS1__invokeEtl*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__invokeEtl(struct soap*, const char *URL, _WS1__invokeEtl*); + soap_POST_recv__WS1__invokeEtl(struct soap*, _WS1__invokeEtl*); + @endcode + + - @ref _WS1__invokeEtlResponse + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__invokeEtlResponse(struct soap*, _WS1__invokeEtlResponse*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__invokeEtlResponse(struct soap*, _WS1__invokeEtlResponse*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__invokeEtlResponse(struct soap*, const char *URL, _WS1__invokeEtlResponse*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__invokeEtlResponse(struct soap*, const char *URL, _WS1__invokeEtlResponse*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__invokeEtlResponse(struct soap*, const char *URL, _WS1__invokeEtlResponse*); + soap_POST_recv__WS1__invokeEtlResponse(struct soap*, _WS1__invokeEtlResponse*); + @endcode + + - @ref _WS1__getEtlJobList + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__getEtlJobList(struct soap*, _WS1__getEtlJobList*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__getEtlJobList(struct soap*, _WS1__getEtlJobList*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__getEtlJobList(struct soap*, const char *URL, _WS1__getEtlJobList*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__getEtlJobList(struct soap*, const char *URL, _WS1__getEtlJobList*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__getEtlJobList(struct soap*, const char *URL, _WS1__getEtlJobList*); + soap_POST_recv__WS1__getEtlJobList(struct soap*, _WS1__getEtlJobList*); + @endcode + + - @ref _WS1__getEtlJobListResponse + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__getEtlJobListResponse(struct soap*, _WS1__getEtlJobListResponse*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__getEtlJobListResponse(struct soap*, _WS1__getEtlJobListResponse*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__getEtlJobListResponse(struct soap*, const char *URL, _WS1__getEtlJobListResponse*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__getEtlJobListResponse(struct soap*, const char *URL, _WS1__getEtlJobListResponse*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__getEtlJobListResponse(struct soap*, const char *URL, _WS1__getEtlJobListResponse*); + soap_POST_recv__WS1__getEtlJobListResponse(struct soap*, _WS1__getEtlJobListResponse*); + @endcode + + - @ref _WS1__getParamList + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__getParamList(struct soap*, _WS1__getParamList*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__getParamList(struct soap*, _WS1__getParamList*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__getParamList(struct soap*, const char *URL, _WS1__getParamList*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__getParamList(struct soap*, const char *URL, _WS1__getParamList*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__getParamList(struct soap*, const char *URL, _WS1__getParamList*); + soap_POST_recv__WS1__getParamList(struct soap*, _WS1__getParamList*); + @endcode + + - @ref _WS1__getParamListResponse + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__getParamListResponse(struct soap*, _WS1__getParamListResponse*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__getParamListResponse(struct soap*, _WS1__getParamListResponse*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__getParamListResponse(struct soap*, const char *URL, _WS1__getParamListResponse*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__getParamListResponse(struct soap*, const char *URL, _WS1__getParamListResponse*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__getParamListResponse(struct soap*, const char *URL, _WS1__getParamListResponse*); + soap_POST_recv__WS1__getParamListResponse(struct soap*, _WS1__getParamListResponse*); + @endcode + + - @ref _WS1__getProdList + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__getProdList(struct soap*, _WS1__getProdList*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__getProdList(struct soap*, _WS1__getProdList*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__getProdList(struct soap*, const char *URL, _WS1__getProdList*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__getProdList(struct soap*, const char *URL, _WS1__getProdList*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__getProdList(struct soap*, const char *URL, _WS1__getProdList*); + soap_POST_recv__WS1__getProdList(struct soap*, _WS1__getProdList*); + @endcode + + - @ref _WS1__getProdListResponse + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__getProdListResponse(struct soap*, _WS1__getProdListResponse*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__getProdListResponse(struct soap*, _WS1__getProdListResponse*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__getProdListResponse(struct soap*, const char *URL, _WS1__getProdListResponse*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__getProdListResponse(struct soap*, const char *URL, _WS1__getProdListResponse*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__getProdListResponse(struct soap*, const char *URL, _WS1__getProdListResponse*); + soap_POST_recv__WS1__getProdListResponse(struct soap*, _WS1__getProdListResponse*); + @endcode + + - @ref _WS1__regProdAP + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__regProdAP(struct soap*, _WS1__regProdAP*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__regProdAP(struct soap*, _WS1__regProdAP*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__regProdAP(struct soap*, const char *URL, _WS1__regProdAP*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__regProdAP(struct soap*, const char *URL, _WS1__regProdAP*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__regProdAP(struct soap*, const char *URL, _WS1__regProdAP*); + soap_POST_recv__WS1__regProdAP(struct soap*, _WS1__regProdAP*); + @endcode + + - @ref _WS1__regProdAPResponse + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__regProdAPResponse(struct soap*, _WS1__regProdAPResponse*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__regProdAPResponse(struct soap*, _WS1__regProdAPResponse*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__regProdAPResponse(struct soap*, const char *URL, _WS1__regProdAPResponse*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__regProdAPResponse(struct soap*, const char *URL, _WS1__regProdAPResponse*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__regProdAPResponse(struct soap*, const char *URL, _WS1__regProdAPResponse*); + soap_POST_recv__WS1__regProdAPResponse(struct soap*, _WS1__regProdAPResponse*); + @endcode + + - @ref _WS1__invokeUnion + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__invokeUnion(struct soap*, _WS1__invokeUnion*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__invokeUnion(struct soap*, _WS1__invokeUnion*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__invokeUnion(struct soap*, const char *URL, _WS1__invokeUnion*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__invokeUnion(struct soap*, const char *URL, _WS1__invokeUnion*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__invokeUnion(struct soap*, const char *URL, _WS1__invokeUnion*); + soap_POST_recv__WS1__invokeUnion(struct soap*, _WS1__invokeUnion*); + @endcode + + - @ref _WS1__invokeUnionResponse + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__invokeUnionResponse(struct soap*, _WS1__invokeUnionResponse*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__invokeUnionResponse(struct soap*, _WS1__invokeUnionResponse*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__invokeUnionResponse(struct soap*, const char *URL, _WS1__invokeUnionResponse*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__invokeUnionResponse(struct soap*, const char *URL, _WS1__invokeUnionResponse*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__invokeUnionResponse(struct soap*, const char *URL, _WS1__invokeUnionResponse*); + soap_POST_recv__WS1__invokeUnionResponse(struct soap*, _WS1__invokeUnionResponse*); + @endcode + + - @ref _WS1__invokeMdm + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__invokeMdm(struct soap*, _WS1__invokeMdm*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__invokeMdm(struct soap*, _WS1__invokeMdm*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__invokeMdm(struct soap*, const char *URL, _WS1__invokeMdm*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__invokeMdm(struct soap*, const char *URL, _WS1__invokeMdm*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__invokeMdm(struct soap*, const char *URL, _WS1__invokeMdm*); + soap_POST_recv__WS1__invokeMdm(struct soap*, _WS1__invokeMdm*); + @endcode + + - @ref _WS1__invokeMdmResponse + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__invokeMdmResponse(struct soap*, _WS1__invokeMdmResponse*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__invokeMdmResponse(struct soap*, _WS1__invokeMdmResponse*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__invokeMdmResponse(struct soap*, const char *URL, _WS1__invokeMdmResponse*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__invokeMdmResponse(struct soap*, const char *URL, _WS1__invokeMdmResponse*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__invokeMdmResponse(struct soap*, const char *URL, _WS1__invokeMdmResponse*); + soap_POST_recv__WS1__invokeMdmResponse(struct soap*, _WS1__invokeMdmResponse*); + @endcode + + - @ref _WS1__getProd + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__getProd(struct soap*, _WS1__getProd*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__getProd(struct soap*, _WS1__getProd*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__getProd(struct soap*, const char *URL, _WS1__getProd*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__getProd(struct soap*, const char *URL, _WS1__getProd*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__getProd(struct soap*, const char *URL, _WS1__getProd*); + soap_POST_recv__WS1__getProd(struct soap*, _WS1__getProd*); + @endcode + + - @ref _WS1__getProdResponse + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__getProdResponse(struct soap*, _WS1__getProdResponse*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__getProdResponse(struct soap*, _WS1__getProdResponse*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__getProdResponse(struct soap*, const char *URL, _WS1__getProdResponse*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__getProdResponse(struct soap*, const char *URL, _WS1__getProdResponse*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__getProdResponse(struct soap*, const char *URL, _WS1__getProdResponse*); + soap_POST_recv__WS1__getProdResponse(struct soap*, _WS1__getProdResponse*); + @endcode + + - @ref _WS1__getSrv + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__getSrv(struct soap*, _WS1__getSrv*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__getSrv(struct soap*, _WS1__getSrv*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__getSrv(struct soap*, const char *URL, _WS1__getSrv*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__getSrv(struct soap*, const char *URL, _WS1__getSrv*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__getSrv(struct soap*, const char *URL, _WS1__getSrv*); + soap_POST_recv__WS1__getSrv(struct soap*, _WS1__getSrv*); + @endcode + + - @ref _WS1__getSrvResponse + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__getSrvResponse(struct soap*, _WS1__getSrvResponse*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__getSrvResponse(struct soap*, _WS1__getSrvResponse*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__getSrvResponse(struct soap*, const char *URL, _WS1__getSrvResponse*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__getSrvResponse(struct soap*, const char *URL, _WS1__getSrvResponse*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__getSrvResponse(struct soap*, const char *URL, _WS1__getSrvResponse*); + soap_POST_recv__WS1__getSrvResponse(struct soap*, _WS1__getSrvResponse*); + @endcode + + - @ref _WS1__fpInvoke + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__fpInvoke(struct soap*, _WS1__fpInvoke*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__fpInvoke(struct soap*, _WS1__fpInvoke*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__fpInvoke(struct soap*, const char *URL, _WS1__fpInvoke*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__fpInvoke(struct soap*, const char *URL, _WS1__fpInvoke*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__fpInvoke(struct soap*, const char *URL, _WS1__fpInvoke*); + soap_POST_recv__WS1__fpInvoke(struct soap*, _WS1__fpInvoke*); + @endcode + + - @ref _WS1__fpInvokeResponse + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__fpInvokeResponse(struct soap*, _WS1__fpInvokeResponse*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__fpInvokeResponse(struct soap*, _WS1__fpInvokeResponse*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__fpInvokeResponse(struct soap*, const char *URL, _WS1__fpInvokeResponse*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__fpInvokeResponse(struct soap*, const char *URL, _WS1__fpInvokeResponse*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__fpInvokeResponse(struct soap*, const char *URL, _WS1__fpInvokeResponse*); + soap_POST_recv__WS1__fpInvokeResponse(struct soap*, _WS1__fpInvokeResponse*); + @endcode + + - @ref _WS1__getStandardServiceList + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__getStandardServiceList(struct soap*, _WS1__getStandardServiceList*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__getStandardServiceList(struct soap*, _WS1__getStandardServiceList*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__getStandardServiceList(struct soap*, const char *URL, _WS1__getStandardServiceList*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__getStandardServiceList(struct soap*, const char *URL, _WS1__getStandardServiceList*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__getStandardServiceList(struct soap*, const char *URL, _WS1__getStandardServiceList*); + soap_POST_recv__WS1__getStandardServiceList(struct soap*, _WS1__getStandardServiceList*); + @endcode + + - @ref _WS1__getStandardServiceListResponse + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__getStandardServiceListResponse(struct soap*, _WS1__getStandardServiceListResponse*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__getStandardServiceListResponse(struct soap*, _WS1__getStandardServiceListResponse*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__getStandardServiceListResponse(struct soap*, const char *URL, _WS1__getStandardServiceListResponse*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__getStandardServiceListResponse(struct soap*, const char *URL, _WS1__getStandardServiceListResponse*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__getStandardServiceListResponse(struct soap*, const char *URL, _WS1__getStandardServiceListResponse*); + soap_POST_recv__WS1__getStandardServiceListResponse(struct soap*, _WS1__getStandardServiceListResponse*); + @endcode + + - @ref _WS1__getStandardDataNameList + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__getStandardDataNameList(struct soap*, _WS1__getStandardDataNameList*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__getStandardDataNameList(struct soap*, _WS1__getStandardDataNameList*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__getStandardDataNameList(struct soap*, const char *URL, _WS1__getStandardDataNameList*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__getStandardDataNameList(struct soap*, const char *URL, _WS1__getStandardDataNameList*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__getStandardDataNameList(struct soap*, const char *URL, _WS1__getStandardDataNameList*); + soap_POST_recv__WS1__getStandardDataNameList(struct soap*, _WS1__getStandardDataNameList*); + @endcode + + - @ref _WS1__getStandardDataNameListResponse + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__getStandardDataNameListResponse(struct soap*, _WS1__getStandardDataNameListResponse*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__getStandardDataNameListResponse(struct soap*, _WS1__getStandardDataNameListResponse*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__getStandardDataNameListResponse(struct soap*, const char *URL, _WS1__getStandardDataNameListResponse*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__getStandardDataNameListResponse(struct soap*, const char *URL, _WS1__getStandardDataNameListResponse*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__getStandardDataNameListResponse(struct soap*, const char *URL, _WS1__getStandardDataNameListResponse*); + soap_POST_recv__WS1__getStandardDataNameListResponse(struct soap*, _WS1__getStandardDataNameListResponse*); + @endcode + + - @ref _WS1__regSrv + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__regSrv(struct soap*, _WS1__regSrv*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__regSrv(struct soap*, _WS1__regSrv*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__regSrv(struct soap*, const char *URL, _WS1__regSrv*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__regSrv(struct soap*, const char *URL, _WS1__regSrv*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__regSrv(struct soap*, const char *URL, _WS1__regSrv*); + soap_POST_recv__WS1__regSrv(struct soap*, _WS1__regSrv*); + @endcode + + - @ref _WS1__regSrvResponse + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__regSrvResponse(struct soap*, _WS1__regSrvResponse*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__regSrvResponse(struct soap*, _WS1__regSrvResponse*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__regSrvResponse(struct soap*, const char *URL, _WS1__regSrvResponse*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__regSrvResponse(struct soap*, const char *URL, _WS1__regSrvResponse*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__regSrvResponse(struct soap*, const char *URL, _WS1__regSrvResponse*); + soap_POST_recv__WS1__regSrvResponse(struct soap*, _WS1__regSrvResponse*); + @endcode + + - @ref _WS1__regEAI + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__regEAI(struct soap*, _WS1__regEAI*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__regEAI(struct soap*, _WS1__regEAI*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__regEAI(struct soap*, const char *URL, _WS1__regEAI*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__regEAI(struct soap*, const char *URL, _WS1__regEAI*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__regEAI(struct soap*, const char *URL, _WS1__regEAI*); + soap_POST_recv__WS1__regEAI(struct soap*, _WS1__regEAI*); + @endcode + + - @ref _WS1__regEAIResponse + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__regEAIResponse(struct soap*, _WS1__regEAIResponse*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__regEAIResponse(struct soap*, _WS1__regEAIResponse*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__regEAIResponse(struct soap*, const char *URL, _WS1__regEAIResponse*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__regEAIResponse(struct soap*, const char *URL, _WS1__regEAIResponse*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__regEAIResponse(struct soap*, const char *URL, _WS1__regEAIResponse*); + soap_POST_recv__WS1__regEAIResponse(struct soap*, _WS1__regEAIResponse*); + @endcode + + - @ref _WS1__invokeSrv + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__invokeSrv(struct soap*, _WS1__invokeSrv*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__invokeSrv(struct soap*, _WS1__invokeSrv*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__invokeSrv(struct soap*, const char *URL, _WS1__invokeSrv*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__invokeSrv(struct soap*, const char *URL, _WS1__invokeSrv*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__invokeSrv(struct soap*, const char *URL, _WS1__invokeSrv*); + soap_POST_recv__WS1__invokeSrv(struct soap*, _WS1__invokeSrv*); + @endcode + + - @ref _WS1__invokeSrvResponse + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__invokeSrvResponse(struct soap*, _WS1__invokeSrvResponse*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__invokeSrvResponse(struct soap*, _WS1__invokeSrvResponse*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__invokeSrvResponse(struct soap*, const char *URL, _WS1__invokeSrvResponse*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__invokeSrvResponse(struct soap*, const char *URL, _WS1__invokeSrvResponse*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__invokeSrvResponse(struct soap*, const char *URL, _WS1__invokeSrvResponse*); + soap_POST_recv__WS1__invokeSrvResponse(struct soap*, _WS1__invokeSrvResponse*); + @endcode + + - @ref _WS1__escrowResendSrv + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__escrowResendSrv(struct soap*, _WS1__escrowResendSrv*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__escrowResendSrv(struct soap*, _WS1__escrowResendSrv*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__escrowResendSrv(struct soap*, const char *URL, _WS1__escrowResendSrv*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__escrowResendSrv(struct soap*, const char *URL, _WS1__escrowResendSrv*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__escrowResendSrv(struct soap*, const char *URL, _WS1__escrowResendSrv*); + soap_POST_recv__WS1__escrowResendSrv(struct soap*, _WS1__escrowResendSrv*); + @endcode + + - @ref _WS1__escrowResendSrvResponse + @code + // Reader (returns SOAP_OK on success): + soap_read__WS1__escrowResendSrvResponse(struct soap*, _WS1__escrowResendSrvResponse*); + // Writer (returns SOAP_OK on success): + soap_write__WS1__escrowResendSrvResponse(struct soap*, _WS1__escrowResendSrvResponse*); + // REST GET (returns SOAP_OK on success): + soap_GET__WS1__escrowResendSrvResponse(struct soap*, const char *URL, _WS1__escrowResendSrvResponse*); + // REST PUT (returns SOAP_OK on success): + soap_PUT__WS1__escrowResendSrvResponse(struct soap*, const char *URL, _WS1__escrowResendSrvResponse*); + // REST POST (returns SOAP_OK on success): + soap_POST_send__WS1__escrowResendSrvResponse(struct soap*, const char *URL, _WS1__escrowResendSrvResponse*); + soap_POST_recv__WS1__escrowResendSrvResponse(struct soap*, _WS1__escrowResendSrvResponse*); + @endcode + +*/ + +/* End of cross.h */ diff --git a/connor_erp_mes/crossC.cpp b/connor_erp_mes/crossC.cpp new file mode 100644 index 0000000..80cff3f --- /dev/null +++ b/connor_erp_mes/crossC.cpp @@ -0,0 +1,9371 @@ +/* crossC.cpp + Generated by gSOAP 2.8.91 for cross.h + +gSOAP XML Web services tools +Copyright (C) 2000-2018, Robert van Engelen, Genivia Inc. All Rights Reserved. +The soapcpp2 tool and its generated software are released under the GPL. +This program is released under the GPL with the additional exemption that +compiling, linking, and/or using OpenSSL is allowed. +-------------------------------------------------------------------------------- +A commercial use license is available from Genivia Inc., contact@genivia.com +-------------------------------------------------------------------------------- +*/ + +#if defined(__BORLANDC__) +#pragma option push -w-8060 +#pragma option push -w-8004 +#endif + +#include "crossH.h" + +SOAP_SOURCE_STAMP("@(#) crossC.cpp ver 2.8.91 2021-05-24 02:42:29 GMT") + + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 int SOAP_FMAC4 soap_getheader(struct soap *soap) +{ + soap->part = SOAP_IN_HEADER; + soap->header = soap_in_SOAP_ENV__Header(soap, "SOAP-ENV:Header", soap->header, NULL); + soap->part = SOAP_END_HEADER; + return soap->header == NULL; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_putheader(struct soap *soap) +{ + if (soap->version && soap->header) + { soap->part = SOAP_IN_HEADER; + if (soap_out_SOAP_ENV__Header(soap, "SOAP-ENV:Header", 0, soap->header, "")) + return soap->error; + soap->part = SOAP_END_HEADER; + } + return SOAP_OK; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serializeheader(struct soap *soap) +{ + if (soap->version && soap->header) + soap_serialize_SOAP_ENV__Header(soap, soap->header); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_header(struct soap *soap) +{ + if (soap->header == NULL) + { if ((soap->header = soap_new_SOAP_ENV__Header(soap))) + soap_default_SOAP_ENV__Header(soap, soap->header); + } +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_fault(struct soap *soap) +{ + if (soap->fault == NULL) + { soap->fault = soap_new_SOAP_ENV__Fault(soap, -1); + if (soap->fault == NULL) + return; + } + if (soap->version == 2 && soap->fault->SOAP_ENV__Code == NULL) + soap->fault->SOAP_ENV__Code = soap_new_SOAP_ENV__Code(soap, -1); + if (soap->version == 2 && soap->fault->SOAP_ENV__Reason == NULL) + soap->fault->SOAP_ENV__Reason = soap_new_SOAP_ENV__Reason(soap, -1); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serializefault(struct soap *soap) +{ + if (soap->fault) + soap_serialize_SOAP_ENV__Fault(soap, soap->fault); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_putfault(struct soap *soap) +{ + if (soap->fault) + return soap_put_SOAP_ENV__Fault(soap, soap->fault, "SOAP-ENV:Fault", ""); + return SOAP_OK; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_getfault(struct soap *soap) +{ + return (soap->fault = soap_get_SOAP_ENV__Fault(soap, NULL, "SOAP-ENV:Fault", NULL)) == NULL; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultcode(struct soap *soap) +{ + soap_fault(soap); + if (soap->fault == NULL) + return NULL; + if (soap->version == 2 && soap->fault->SOAP_ENV__Code) + return (const char**)(void*)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Value; + return (const char**)(void*)&soap->fault->faultcode; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultsubcode(struct soap *soap) +{ + soap_fault(soap); + if (soap->fault == NULL) + return NULL; + if (soap->version == 2 && soap->fault->SOAP_ENV__Code) + { if (soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode == NULL) + { soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode = soap_new_SOAP_ENV__Code(soap, -1); + if (soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode == NULL) + return NULL; + } + return (const char**)(void*)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode->SOAP_ENV__Value; + } + return (const char**)(void*)&soap->fault->faultcode; +} + +SOAP_FMAC3 const char * SOAP_FMAC4 soap_fault_subcode(struct soap *soap) +{ + const char **s = soap_faultsubcode(soap); + return s ? *s : NULL; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultstring(struct soap *soap) +{ + soap_fault(soap); + if (soap->fault == NULL) + return NULL; + if (soap->version == 2 && soap->fault->SOAP_ENV__Reason) + return (const char**)(void*)&soap->fault->SOAP_ENV__Reason->SOAP_ENV__Text; + return (const char**)(void*)&soap->fault->faultstring; +} + +SOAP_FMAC3 const char * SOAP_FMAC4 soap_fault_string(struct soap *soap) +{ + const char **s = soap_faultstring(soap); + return s ? *s : NULL; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultdetail(struct soap *soap) +{ + soap_fault(soap); + if (soap->fault == NULL) + return NULL; + if (soap->version == 2) + { if (soap->fault->SOAP_ENV__Detail == NULL) + soap->fault->SOAP_ENV__Detail = soap_new_SOAP_ENV__Detail(soap, -1); + return (const char**)(void*)&soap->fault->SOAP_ENV__Detail->__any; + } + if (soap->fault->detail == NULL) + soap->fault->detail = soap_new_SOAP_ENV__Detail(soap, -1); + return (const char**)(void*)&soap->fault->detail->__any; +} + +SOAP_FMAC3 const char * SOAP_FMAC4 soap_fault_detail(struct soap *soap) +{ + const char **s = soap_faultdetail(soap); + return s ? *s : NULL; +} + +#endif + +#ifndef WITH_NOIDREF +SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap *soap) +{ + int t; + if (soap->version == 1) + { for (;;) + { if (!soap_getelement(soap, NULL, &t)) + if ((soap->error && soap->error != SOAP_TAG_MISMATCH) || soap_ignore_element(soap)) + break; + } + } + if (soap->error == SOAP_NO_TAG || soap->error == SOAP_EOF) + soap->error = SOAP_OK; + return soap->error; +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif +SOAP_FMAC3 void * SOAP_FMAC4 soap_getelement(struct soap *soap, const char *tag, int *type) +{ (void)type; + if (soap_peek_element(soap)) + return NULL; +#ifndef WITH_NOIDREF + if (!*soap->id || !(*type = soap_lookup_type(soap, soap->id))) + *type = soap_lookup_type(soap, soap->href); + switch (*type) + { + case SOAP_TYPE_byte: + return soap_in_byte(soap, tag, NULL, "xsd:byte"); + case SOAP_TYPE_int: + return soap_in_int(soap, tag, NULL, "xsd:int"); + case SOAP_TYPE_std__string: + return soap_in_std__string(soap, tag, NULL, "xsd:string"); + case SOAP_TYPE_PointerTo_WS1__escrowResendSrv: + return soap_in_PointerTo_WS1__escrowResendSrv(soap, tag, NULL, "WS1:escrowResendSrv"); + case SOAP_TYPE_PointerTo_WS1__invokeSrv: + return soap_in_PointerTo_WS1__invokeSrv(soap, tag, NULL, "WS1:invokeSrv"); + case SOAP_TYPE_PointerTo_WS1__regEAI: + return soap_in_PointerTo_WS1__regEAI(soap, tag, NULL, "WS1:regEAI"); + case SOAP_TYPE_PointerTo_WS1__regSrv: + return soap_in_PointerTo_WS1__regSrv(soap, tag, NULL, "WS1:regSrv"); + case SOAP_TYPE_PointerTo_WS1__getStandardDataNameList: + return soap_in_PointerTo_WS1__getStandardDataNameList(soap, tag, NULL, "WS1:getStandardDataNameList"); + case SOAP_TYPE_PointerTo_WS1__getStandardServiceList: + return soap_in_PointerTo_WS1__getStandardServiceList(soap, tag, NULL, "WS1:getStandardServiceList"); + case SOAP_TYPE_PointerTo_WS1__fpInvoke: + return soap_in_PointerTo_WS1__fpInvoke(soap, tag, NULL, "WS1:fpInvoke"); + case SOAP_TYPE_PointerTo_WS1__getSrv: + return soap_in_PointerTo_WS1__getSrv(soap, tag, NULL, "WS1:getSrv"); + case SOAP_TYPE_PointerTo_WS1__getProd: + return soap_in_PointerTo_WS1__getProd(soap, tag, NULL, "WS1:getProd"); + case SOAP_TYPE_PointerTo_WS1__invokeMdm: + return soap_in_PointerTo_WS1__invokeMdm(soap, tag, NULL, "WS1:invokeMdm"); + case SOAP_TYPE_PointerTo_WS1__invokeUnion: + return soap_in_PointerTo_WS1__invokeUnion(soap, tag, NULL, "WS1:invokeUnion"); + case SOAP_TYPE_PointerTo_WS1__regProdAP: + return soap_in_PointerTo_WS1__regProdAP(soap, tag, NULL, "WS1:regProdAP"); + case SOAP_TYPE_PointerTo_WS1__getProdList: + return soap_in_PointerTo_WS1__getProdList(soap, tag, NULL, "WS1:getProdList"); + case SOAP_TYPE_PointerTo_WS1__getParamList: + return soap_in_PointerTo_WS1__getParamList(soap, tag, NULL, "WS1:getParamList"); + case SOAP_TYPE_PointerTo_WS1__getEtlJobList: + return soap_in_PointerTo_WS1__getEtlJobList(soap, tag, NULL, "WS1:getEtlJobList"); + case SOAP_TYPE_PointerTo_WS1__invokeEtl: + return soap_in_PointerTo_WS1__invokeEtl(soap, tag, NULL, "WS1:invokeEtl"); + case SOAP_TYPE__QName: + { char **s; + s = soap_in__QName(soap, tag, NULL, "xsd:QName"); + return s ? *s : NULL; + } + case SOAP_TYPE_string: + { char **s; + s = soap_in_string(soap, tag, NULL, "xsd:string"); + return s ? *s : NULL; + } + default: +#else + *type = 0; +#endif + { const char *t = soap->type; + if (!*t) + t = soap->tag; + if (!soap_match_tag(soap, t, "xsd:string")) + { *type = SOAP_TYPE_std__string; + return soap_in_std__string(soap, tag, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:byte")) + { *type = SOAP_TYPE_byte; + return soap_in_byte(soap, tag, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:int")) + { *type = SOAP_TYPE_int; + return soap_in_int(soap, tag, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:QName")) + { char **s; + *type = SOAP_TYPE__QName; + s = soap_in__QName(soap, tag, NULL, NULL); + return s ? *s : NULL; + } + if (!soap_match_tag(soap, t, "xsd:string")) + { char **s; + *type = SOAP_TYPE_string; + s = soap_in_string(soap, tag, NULL, NULL); + return s ? *s : NULL; + } + t = soap->tag; + if (!soap_match_tag(soap, t, "WS1:escrowResendSrvResponse")) + { *type = SOAP_TYPE__WS1__escrowResendSrvResponse; + return soap_in__WS1__escrowResendSrvResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:escrowResendSrv")) + { *type = SOAP_TYPE__WS1__escrowResendSrv; + return soap_in__WS1__escrowResendSrv(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:invokeSrvResponse")) + { *type = SOAP_TYPE__WS1__invokeSrvResponse; + return soap_in__WS1__invokeSrvResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:invokeSrv")) + { *type = SOAP_TYPE__WS1__invokeSrv; + return soap_in__WS1__invokeSrv(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:regEAIResponse")) + { *type = SOAP_TYPE__WS1__regEAIResponse; + return soap_in__WS1__regEAIResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:regEAI")) + { *type = SOAP_TYPE__WS1__regEAI; + return soap_in__WS1__regEAI(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:regSrvResponse")) + { *type = SOAP_TYPE__WS1__regSrvResponse; + return soap_in__WS1__regSrvResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:regSrv")) + { *type = SOAP_TYPE__WS1__regSrv; + return soap_in__WS1__regSrv(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:getStandardDataNameListResponse")) + { *type = SOAP_TYPE__WS1__getStandardDataNameListResponse; + return soap_in__WS1__getStandardDataNameListResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:getStandardDataNameList")) + { *type = SOAP_TYPE__WS1__getStandardDataNameList; + return soap_in__WS1__getStandardDataNameList(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:getStandardServiceListResponse")) + { *type = SOAP_TYPE__WS1__getStandardServiceListResponse; + return soap_in__WS1__getStandardServiceListResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:getStandardServiceList")) + { *type = SOAP_TYPE__WS1__getStandardServiceList; + return soap_in__WS1__getStandardServiceList(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:fpInvokeResponse")) + { *type = SOAP_TYPE__WS1__fpInvokeResponse; + return soap_in__WS1__fpInvokeResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:fpInvoke")) + { *type = SOAP_TYPE__WS1__fpInvoke; + return soap_in__WS1__fpInvoke(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:getSrvResponse")) + { *type = SOAP_TYPE__WS1__getSrvResponse; + return soap_in__WS1__getSrvResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:getSrv")) + { *type = SOAP_TYPE__WS1__getSrv; + return soap_in__WS1__getSrv(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:getProdResponse")) + { *type = SOAP_TYPE__WS1__getProdResponse; + return soap_in__WS1__getProdResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:getProd")) + { *type = SOAP_TYPE__WS1__getProd; + return soap_in__WS1__getProd(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:invokeMdmResponse")) + { *type = SOAP_TYPE__WS1__invokeMdmResponse; + return soap_in__WS1__invokeMdmResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:invokeMdm")) + { *type = SOAP_TYPE__WS1__invokeMdm; + return soap_in__WS1__invokeMdm(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:invokeUnionResponse")) + { *type = SOAP_TYPE__WS1__invokeUnionResponse; + return soap_in__WS1__invokeUnionResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:invokeUnion")) + { *type = SOAP_TYPE__WS1__invokeUnion; + return soap_in__WS1__invokeUnion(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:regProdAPResponse")) + { *type = SOAP_TYPE__WS1__regProdAPResponse; + return soap_in__WS1__regProdAPResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:regProdAP")) + { *type = SOAP_TYPE__WS1__regProdAP; + return soap_in__WS1__regProdAP(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:getProdListResponse")) + { *type = SOAP_TYPE__WS1__getProdListResponse; + return soap_in__WS1__getProdListResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:getProdList")) + { *type = SOAP_TYPE__WS1__getProdList; + return soap_in__WS1__getProdList(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:getParamListResponse")) + { *type = SOAP_TYPE__WS1__getParamListResponse; + return soap_in__WS1__getParamListResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:getParamList")) + { *type = SOAP_TYPE__WS1__getParamList; + return soap_in__WS1__getParamList(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:getEtlJobListResponse")) + { *type = SOAP_TYPE__WS1__getEtlJobListResponse; + return soap_in__WS1__getEtlJobListResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:getEtlJobList")) + { *type = SOAP_TYPE__WS1__getEtlJobList; + return soap_in__WS1__getEtlJobList(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:invokeEtlResponse")) + { *type = SOAP_TYPE__WS1__invokeEtlResponse; + return soap_in__WS1__invokeEtlResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "WS1:invokeEtl")) + { *type = SOAP_TYPE__WS1__invokeEtl; + return soap_in__WS1__invokeEtl(soap, NULL, NULL, NULL); + } +#ifndef WITH_NOIDREF + } +#endif + } + soap->error = SOAP_TAG_MISMATCH; + return NULL; +} + +#ifdef __cplusplus +} +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap *soap) +{ + if (!soap_peek_element(soap)) + { int t; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unexpected element '%s' in input (level = %u, %d)\n", soap->tag, soap->level, soap->body)); + if (soap->mustUnderstand && !soap->other && !soap->fignore) + return soap->error = SOAP_MUSTUNDERSTAND; + if (((soap->mode & SOAP_XML_STRICT) && !soap->fignore && soap->part != SOAP_IN_HEADER) || !soap_match_tag(soap, soap->tag, "SOAP-ENV:")) + { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "REJECTING element '%s'\n", soap->tag)); + return soap->error = SOAP_TAG_MISMATCH; + } + if (!*soap->id || !soap_getelement(soap, NULL, &t)) + { soap->peeked = 0; + if (soap->fignore) + soap->error = soap->fignore(soap, soap->tag); + else + soap->error = SOAP_OK; + DBGLOG(TEST, if (!soap->error) SOAP_MESSAGE(fdebug, "IGNORING element '%s'\n", soap->tag)); + if (!soap->error && soap->body && soap_ignore(soap)) + return soap->error; + } + } + return soap->error; +} + +#ifndef WITH_NOIDREF +SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap *soap) +{ + int i; + struct soap_plist *pp; + if (soap->version == 1 && soap->encodingStyle && !(soap->mode & (SOAP_XML_TREE | SOAP_XML_GRAPH))) + for (i = 0; i < SOAP_PTRHASH; i++) + for (pp = soap->pht[i]; pp; pp = pp->next) + if (pp->mark1 == 2 || pp->mark2 == 2) + if (soap_putelement(soap, pp->ptr, SOAP_MULTIREFTAG, pp->id, pp->type)) + return soap->error; + return SOAP_OK; +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif +SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap *soap, const void *ptr, const char *tag, int id, int type) +{ (void)tag; + switch (type) + { + case SOAP_TYPE_byte: + return soap_out_byte(soap, tag, id, (const char *)ptr, "xsd:byte"); + case SOAP_TYPE_int: + return soap_out_int(soap, tag, id, (const int *)ptr, "xsd:int"); + case SOAP_TYPE_std__string: + return soap_out_std__string(soap, tag, id, (const std::string *)ptr, "xsd:string"); + case SOAP_TYPE__WS1__escrowResendSrvResponse: + return ((_WS1__escrowResendSrvResponse *)ptr)->soap_out(soap, "WS1:escrowResendSrvResponse", id, ""); + case SOAP_TYPE__WS1__escrowResendSrv: + return ((_WS1__escrowResendSrv *)ptr)->soap_out(soap, "WS1:escrowResendSrv", id, ""); + case SOAP_TYPE__WS1__invokeSrvResponse: + return ((_WS1__invokeSrvResponse *)ptr)->soap_out(soap, "WS1:invokeSrvResponse", id, ""); + case SOAP_TYPE__WS1__invokeSrv: + return ((_WS1__invokeSrv *)ptr)->soap_out(soap, "WS1:invokeSrv", id, ""); + case SOAP_TYPE__WS1__regEAIResponse: + return ((_WS1__regEAIResponse *)ptr)->soap_out(soap, "WS1:regEAIResponse", id, ""); + case SOAP_TYPE__WS1__regEAI: + return ((_WS1__regEAI *)ptr)->soap_out(soap, "WS1:regEAI", id, ""); + case SOAP_TYPE__WS1__regSrvResponse: + return ((_WS1__regSrvResponse *)ptr)->soap_out(soap, "WS1:regSrvResponse", id, ""); + case SOAP_TYPE__WS1__regSrv: + return ((_WS1__regSrv *)ptr)->soap_out(soap, "WS1:regSrv", id, ""); + case SOAP_TYPE__WS1__getStandardDataNameListResponse: + return ((_WS1__getStandardDataNameListResponse *)ptr)->soap_out(soap, "WS1:getStandardDataNameListResponse", id, ""); + case SOAP_TYPE__WS1__getStandardDataNameList: + return ((_WS1__getStandardDataNameList *)ptr)->soap_out(soap, "WS1:getStandardDataNameList", id, ""); + case SOAP_TYPE__WS1__getStandardServiceListResponse: + return ((_WS1__getStandardServiceListResponse *)ptr)->soap_out(soap, "WS1:getStandardServiceListResponse", id, ""); + case SOAP_TYPE__WS1__getStandardServiceList: + return ((_WS1__getStandardServiceList *)ptr)->soap_out(soap, "WS1:getStandardServiceList", id, ""); + case SOAP_TYPE__WS1__fpInvokeResponse: + return ((_WS1__fpInvokeResponse *)ptr)->soap_out(soap, "WS1:fpInvokeResponse", id, ""); + case SOAP_TYPE__WS1__fpInvoke: + return ((_WS1__fpInvoke *)ptr)->soap_out(soap, "WS1:fpInvoke", id, ""); + case SOAP_TYPE__WS1__getSrvResponse: + return ((_WS1__getSrvResponse *)ptr)->soap_out(soap, "WS1:getSrvResponse", id, ""); + case SOAP_TYPE__WS1__getSrv: + return ((_WS1__getSrv *)ptr)->soap_out(soap, "WS1:getSrv", id, ""); + case SOAP_TYPE__WS1__getProdResponse: + return ((_WS1__getProdResponse *)ptr)->soap_out(soap, "WS1:getProdResponse", id, ""); + case SOAP_TYPE__WS1__getProd: + return ((_WS1__getProd *)ptr)->soap_out(soap, "WS1:getProd", id, ""); + case SOAP_TYPE__WS1__invokeMdmResponse: + return ((_WS1__invokeMdmResponse *)ptr)->soap_out(soap, "WS1:invokeMdmResponse", id, ""); + case SOAP_TYPE__WS1__invokeMdm: + return ((_WS1__invokeMdm *)ptr)->soap_out(soap, "WS1:invokeMdm", id, ""); + case SOAP_TYPE__WS1__invokeUnionResponse: + return ((_WS1__invokeUnionResponse *)ptr)->soap_out(soap, "WS1:invokeUnionResponse", id, ""); + case SOAP_TYPE__WS1__invokeUnion: + return ((_WS1__invokeUnion *)ptr)->soap_out(soap, "WS1:invokeUnion", id, ""); + case SOAP_TYPE__WS1__regProdAPResponse: + return ((_WS1__regProdAPResponse *)ptr)->soap_out(soap, "WS1:regProdAPResponse", id, ""); + case SOAP_TYPE__WS1__regProdAP: + return ((_WS1__regProdAP *)ptr)->soap_out(soap, "WS1:regProdAP", id, ""); + case SOAP_TYPE__WS1__getProdListResponse: + return ((_WS1__getProdListResponse *)ptr)->soap_out(soap, "WS1:getProdListResponse", id, ""); + case SOAP_TYPE__WS1__getProdList: + return ((_WS1__getProdList *)ptr)->soap_out(soap, "WS1:getProdList", id, ""); + case SOAP_TYPE__WS1__getParamListResponse: + return ((_WS1__getParamListResponse *)ptr)->soap_out(soap, "WS1:getParamListResponse", id, ""); + case SOAP_TYPE__WS1__getParamList: + return ((_WS1__getParamList *)ptr)->soap_out(soap, "WS1:getParamList", id, ""); + case SOAP_TYPE__WS1__getEtlJobListResponse: + return ((_WS1__getEtlJobListResponse *)ptr)->soap_out(soap, "WS1:getEtlJobListResponse", id, ""); + case SOAP_TYPE__WS1__getEtlJobList: + return ((_WS1__getEtlJobList *)ptr)->soap_out(soap, "WS1:getEtlJobList", id, ""); + case SOAP_TYPE__WS1__invokeEtlResponse: + return ((_WS1__invokeEtlResponse *)ptr)->soap_out(soap, "WS1:invokeEtlResponse", id, ""); + case SOAP_TYPE__WS1__invokeEtl: + return ((_WS1__invokeEtl *)ptr)->soap_out(soap, "WS1:invokeEtl", id, ""); + case SOAP_TYPE_PointerTo_WS1__escrowResendSrv: + return soap_out_PointerTo_WS1__escrowResendSrv(soap, tag, id, (_WS1__escrowResendSrv *const*)ptr, "WS1:escrowResendSrv"); + case SOAP_TYPE_PointerTo_WS1__invokeSrv: + return soap_out_PointerTo_WS1__invokeSrv(soap, tag, id, (_WS1__invokeSrv *const*)ptr, "WS1:invokeSrv"); + case SOAP_TYPE_PointerTo_WS1__regEAI: + return soap_out_PointerTo_WS1__regEAI(soap, tag, id, (_WS1__regEAI *const*)ptr, "WS1:regEAI"); + case SOAP_TYPE_PointerTo_WS1__regSrv: + return soap_out_PointerTo_WS1__regSrv(soap, tag, id, (_WS1__regSrv *const*)ptr, "WS1:regSrv"); + case SOAP_TYPE_PointerTo_WS1__getStandardDataNameList: + return soap_out_PointerTo_WS1__getStandardDataNameList(soap, tag, id, (_WS1__getStandardDataNameList *const*)ptr, "WS1:getStandardDataNameList"); + case SOAP_TYPE_PointerTo_WS1__getStandardServiceList: + return soap_out_PointerTo_WS1__getStandardServiceList(soap, tag, id, (_WS1__getStandardServiceList *const*)ptr, "WS1:getStandardServiceList"); + case SOAP_TYPE_PointerTo_WS1__fpInvoke: + return soap_out_PointerTo_WS1__fpInvoke(soap, tag, id, (_WS1__fpInvoke *const*)ptr, "WS1:fpInvoke"); + case SOAP_TYPE_PointerTo_WS1__getSrv: + return soap_out_PointerTo_WS1__getSrv(soap, tag, id, (_WS1__getSrv *const*)ptr, "WS1:getSrv"); + case SOAP_TYPE_PointerTo_WS1__getProd: + return soap_out_PointerTo_WS1__getProd(soap, tag, id, (_WS1__getProd *const*)ptr, "WS1:getProd"); + case SOAP_TYPE_PointerTo_WS1__invokeMdm: + return soap_out_PointerTo_WS1__invokeMdm(soap, tag, id, (_WS1__invokeMdm *const*)ptr, "WS1:invokeMdm"); + case SOAP_TYPE_PointerTo_WS1__invokeUnion: + return soap_out_PointerTo_WS1__invokeUnion(soap, tag, id, (_WS1__invokeUnion *const*)ptr, "WS1:invokeUnion"); + case SOAP_TYPE_PointerTo_WS1__regProdAP: + return soap_out_PointerTo_WS1__regProdAP(soap, tag, id, (_WS1__regProdAP *const*)ptr, "WS1:regProdAP"); + case SOAP_TYPE_PointerTo_WS1__getProdList: + return soap_out_PointerTo_WS1__getProdList(soap, tag, id, (_WS1__getProdList *const*)ptr, "WS1:getProdList"); + case SOAP_TYPE_PointerTo_WS1__getParamList: + return soap_out_PointerTo_WS1__getParamList(soap, tag, id, (_WS1__getParamList *const*)ptr, "WS1:getParamList"); + case SOAP_TYPE_PointerTo_WS1__getEtlJobList: + return soap_out_PointerTo_WS1__getEtlJobList(soap, tag, id, (_WS1__getEtlJobList *const*)ptr, "WS1:getEtlJobList"); + case SOAP_TYPE_PointerTo_WS1__invokeEtl: + return soap_out_PointerTo_WS1__invokeEtl(soap, tag, id, (_WS1__invokeEtl *const*)ptr, "WS1:invokeEtl"); + case SOAP_TYPE__QName: + return soap_out_string(soap, tag, id, (char*const*)(void*)&ptr, "xsd:QName"); + case SOAP_TYPE_string: + return soap_out_string(soap, tag, id, (char*const*)(void*)&ptr, "xsd:string"); + case 0: + return SOAP_OK; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_putelement '%s' failed for type %d in crossC.cpp\n", tag ? tag : "", type)); + return soap_element_empty(soap, tag); /* unknown type to serialize */ +} +#ifdef __cplusplus +} +#endif + +#ifndef WITH_NOIDREF + +#ifdef __cplusplus +extern "C" { +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap *soap, const void *ptr, int type) +{ + (void)soap; (void)ptr; (void)type; /* appease -Wall -Werror */ + switch (type) + { + case SOAP_TYPE_std__string: + soap_serialize_std__string(soap, (const std::string *)ptr); + break; + case SOAP_TYPE__WS1__escrowResendSrvResponse: + ((_WS1__escrowResendSrvResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__escrowResendSrv: + ((_WS1__escrowResendSrv *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__invokeSrvResponse: + ((_WS1__invokeSrvResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__invokeSrv: + ((_WS1__invokeSrv *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__regEAIResponse: + ((_WS1__regEAIResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__regEAI: + ((_WS1__regEAI *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__regSrvResponse: + ((_WS1__regSrvResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__regSrv: + ((_WS1__regSrv *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__getStandardDataNameListResponse: + ((_WS1__getStandardDataNameListResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__getStandardDataNameList: + ((_WS1__getStandardDataNameList *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__getStandardServiceListResponse: + ((_WS1__getStandardServiceListResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__getStandardServiceList: + ((_WS1__getStandardServiceList *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__fpInvokeResponse: + ((_WS1__fpInvokeResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__fpInvoke: + ((_WS1__fpInvoke *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__getSrvResponse: + ((_WS1__getSrvResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__getSrv: + ((_WS1__getSrv *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__getProdResponse: + ((_WS1__getProdResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__getProd: + ((_WS1__getProd *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__invokeMdmResponse: + ((_WS1__invokeMdmResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__invokeMdm: + ((_WS1__invokeMdm *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__invokeUnionResponse: + ((_WS1__invokeUnionResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__invokeUnion: + ((_WS1__invokeUnion *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__regProdAPResponse: + ((_WS1__regProdAPResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__regProdAP: + ((_WS1__regProdAP *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__getProdListResponse: + ((_WS1__getProdListResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__getProdList: + ((_WS1__getProdList *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__getParamListResponse: + ((_WS1__getParamListResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__getParamList: + ((_WS1__getParamList *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__getEtlJobListResponse: + ((_WS1__getEtlJobListResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__getEtlJobList: + ((_WS1__getEtlJobList *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__invokeEtlResponse: + ((_WS1__invokeEtlResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE__WS1__invokeEtl: + ((_WS1__invokeEtl *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE___WS1__escrowResendSrv: + soap_serialize___WS1__escrowResendSrv(soap, (const struct __WS1__escrowResendSrv *)ptr); + break; + case SOAP_TYPE___WS1__invokeSrv: + soap_serialize___WS1__invokeSrv(soap, (const struct __WS1__invokeSrv *)ptr); + break; + case SOAP_TYPE___WS1__regEAI: + soap_serialize___WS1__regEAI(soap, (const struct __WS1__regEAI *)ptr); + break; + case SOAP_TYPE___WS1__regSrv: + soap_serialize___WS1__regSrv(soap, (const struct __WS1__regSrv *)ptr); + break; + case SOAP_TYPE___WS1__getStandardDataNameList: + soap_serialize___WS1__getStandardDataNameList(soap, (const struct __WS1__getStandardDataNameList *)ptr); + break; + case SOAP_TYPE___WS1__getStandardServiceList: + soap_serialize___WS1__getStandardServiceList(soap, (const struct __WS1__getStandardServiceList *)ptr); + break; + case SOAP_TYPE___WS1__fpInvoke: + soap_serialize___WS1__fpInvoke(soap, (const struct __WS1__fpInvoke *)ptr); + break; + case SOAP_TYPE___WS1__getSrv: + soap_serialize___WS1__getSrv(soap, (const struct __WS1__getSrv *)ptr); + break; + case SOAP_TYPE___WS1__getProd: + soap_serialize___WS1__getProd(soap, (const struct __WS1__getProd *)ptr); + break; + case SOAP_TYPE___WS1__invokeMdm: + soap_serialize___WS1__invokeMdm(soap, (const struct __WS1__invokeMdm *)ptr); + break; + case SOAP_TYPE___WS1__invokeUnion: + soap_serialize___WS1__invokeUnion(soap, (const struct __WS1__invokeUnion *)ptr); + break; + case SOAP_TYPE___WS1__regProdAP: + soap_serialize___WS1__regProdAP(soap, (const struct __WS1__regProdAP *)ptr); + break; + case SOAP_TYPE___WS1__getProdList: + soap_serialize___WS1__getProdList(soap, (const struct __WS1__getProdList *)ptr); + break; + case SOAP_TYPE___WS1__getParamList: + soap_serialize___WS1__getParamList(soap, (const struct __WS1__getParamList *)ptr); + break; + case SOAP_TYPE___WS1__getEtlJobList: + soap_serialize___WS1__getEtlJobList(soap, (const struct __WS1__getEtlJobList *)ptr); + break; + case SOAP_TYPE___WS1__invokeEtl: + soap_serialize___WS1__invokeEtl(soap, (const struct __WS1__invokeEtl *)ptr); + break; + case SOAP_TYPE_PointerTo_WS1__escrowResendSrv: + soap_serialize_PointerTo_WS1__escrowResendSrv(soap, (_WS1__escrowResendSrv *const*)ptr); + break; + case SOAP_TYPE_PointerTo_WS1__invokeSrv: + soap_serialize_PointerTo_WS1__invokeSrv(soap, (_WS1__invokeSrv *const*)ptr); + break; + case SOAP_TYPE_PointerTo_WS1__regEAI: + soap_serialize_PointerTo_WS1__regEAI(soap, (_WS1__regEAI *const*)ptr); + break; + case SOAP_TYPE_PointerTo_WS1__regSrv: + soap_serialize_PointerTo_WS1__regSrv(soap, (_WS1__regSrv *const*)ptr); + break; + case SOAP_TYPE_PointerTo_WS1__getStandardDataNameList: + soap_serialize_PointerTo_WS1__getStandardDataNameList(soap, (_WS1__getStandardDataNameList *const*)ptr); + break; + case SOAP_TYPE_PointerTo_WS1__getStandardServiceList: + soap_serialize_PointerTo_WS1__getStandardServiceList(soap, (_WS1__getStandardServiceList *const*)ptr); + break; + case SOAP_TYPE_PointerTo_WS1__fpInvoke: + soap_serialize_PointerTo_WS1__fpInvoke(soap, (_WS1__fpInvoke *const*)ptr); + break; + case SOAP_TYPE_PointerTo_WS1__getSrv: + soap_serialize_PointerTo_WS1__getSrv(soap, (_WS1__getSrv *const*)ptr); + break; + case SOAP_TYPE_PointerTo_WS1__getProd: + soap_serialize_PointerTo_WS1__getProd(soap, (_WS1__getProd *const*)ptr); + break; + case SOAP_TYPE_PointerTo_WS1__invokeMdm: + soap_serialize_PointerTo_WS1__invokeMdm(soap, (_WS1__invokeMdm *const*)ptr); + break; + case SOAP_TYPE_PointerTo_WS1__invokeUnion: + soap_serialize_PointerTo_WS1__invokeUnion(soap, (_WS1__invokeUnion *const*)ptr); + break; + case SOAP_TYPE_PointerTo_WS1__regProdAP: + soap_serialize_PointerTo_WS1__regProdAP(soap, (_WS1__regProdAP *const*)ptr); + break; + case SOAP_TYPE_PointerTo_WS1__getProdList: + soap_serialize_PointerTo_WS1__getProdList(soap, (_WS1__getProdList *const*)ptr); + break; + case SOAP_TYPE_PointerTo_WS1__getParamList: + soap_serialize_PointerTo_WS1__getParamList(soap, (_WS1__getParamList *const*)ptr); + break; + case SOAP_TYPE_PointerTo_WS1__getEtlJobList: + soap_serialize_PointerTo_WS1__getEtlJobList(soap, (_WS1__getEtlJobList *const*)ptr); + break; + case SOAP_TYPE_PointerTo_WS1__invokeEtl: + soap_serialize_PointerTo_WS1__invokeEtl(soap, (_WS1__invokeEtl *const*)ptr); + break; + case SOAP_TYPE__QName: + soap_serialize_string(soap, (char*const*)(void*)&ptr); + break; + case SOAP_TYPE_string: + soap_serialize_string(soap, (char*const*)(void*)&ptr); + break; + } +} +#ifdef __cplusplus +} +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +SOAP_FMAC3 void * SOAP_FMAC4 soap_dupelement(struct soap *soap, const void *ptr, int type) +{(void)soap; (void)ptr; (void)type; /* appease -Wall -Werror */ + return NULL; +} +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +SOAP_FMAC3 void SOAP_FMAC4 soap_delelement(const void *ptr, int type) +{(void)ptr; (void)type; /* appease -Wall -Werror */ +} +#ifdef __cplusplus +} +#endif + +SOAP_FMAC3 void * SOAP_FMAC4 cross_instantiate(struct soap *soap, int t, const char *type, const char *arrayType, size_t *n) +{ (void)type; + switch (t) + { + case SOAP_TYPE_std__string: + return (void*)cross_instantiate_std__string(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__invokeEtl: + return (void*)cross_instantiate__WS1__invokeEtl(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__invokeEtlResponse: + return (void*)cross_instantiate__WS1__invokeEtlResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__getEtlJobList: + return (void*)cross_instantiate__WS1__getEtlJobList(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__getEtlJobListResponse: + return (void*)cross_instantiate__WS1__getEtlJobListResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__getParamList: + return (void*)cross_instantiate__WS1__getParamList(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__getParamListResponse: + return (void*)cross_instantiate__WS1__getParamListResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__getProdList: + return (void*)cross_instantiate__WS1__getProdList(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__getProdListResponse: + return (void*)cross_instantiate__WS1__getProdListResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__regProdAP: + return (void*)cross_instantiate__WS1__regProdAP(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__regProdAPResponse: + return (void*)cross_instantiate__WS1__regProdAPResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__invokeUnion: + return (void*)cross_instantiate__WS1__invokeUnion(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__invokeUnionResponse: + return (void*)cross_instantiate__WS1__invokeUnionResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__invokeMdm: + return (void*)cross_instantiate__WS1__invokeMdm(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__invokeMdmResponse: + return (void*)cross_instantiate__WS1__invokeMdmResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__getProd: + return (void*)cross_instantiate__WS1__getProd(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__getProdResponse: + return (void*)cross_instantiate__WS1__getProdResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__getSrv: + return (void*)cross_instantiate__WS1__getSrv(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__getSrvResponse: + return (void*)cross_instantiate__WS1__getSrvResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__fpInvoke: + return (void*)cross_instantiate__WS1__fpInvoke(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__fpInvokeResponse: + return (void*)cross_instantiate__WS1__fpInvokeResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__getStandardServiceList: + return (void*)cross_instantiate__WS1__getStandardServiceList(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__getStandardServiceListResponse: + return (void*)cross_instantiate__WS1__getStandardServiceListResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__getStandardDataNameList: + return (void*)cross_instantiate__WS1__getStandardDataNameList(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__getStandardDataNameListResponse: + return (void*)cross_instantiate__WS1__getStandardDataNameListResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__regSrv: + return (void*)cross_instantiate__WS1__regSrv(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__regSrvResponse: + return (void*)cross_instantiate__WS1__regSrvResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__regEAI: + return (void*)cross_instantiate__WS1__regEAI(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__regEAIResponse: + return (void*)cross_instantiate__WS1__regEAIResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__invokeSrv: + return (void*)cross_instantiate__WS1__invokeSrv(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__invokeSrvResponse: + return (void*)cross_instantiate__WS1__invokeSrvResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__escrowResendSrv: + return (void*)cross_instantiate__WS1__escrowResendSrv(soap, -1, type, arrayType, n); + case SOAP_TYPE__WS1__escrowResendSrvResponse: + return (void*)cross_instantiate__WS1__escrowResendSrvResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE___WS1__invokeEtl: + return (void*)cross_instantiate___WS1__invokeEtl(soap, -1, type, arrayType, n); + case SOAP_TYPE___WS1__getEtlJobList: + return (void*)cross_instantiate___WS1__getEtlJobList(soap, -1, type, arrayType, n); + case SOAP_TYPE___WS1__getParamList: + return (void*)cross_instantiate___WS1__getParamList(soap, -1, type, arrayType, n); + case SOAP_TYPE___WS1__getProdList: + return (void*)cross_instantiate___WS1__getProdList(soap, -1, type, arrayType, n); + case SOAP_TYPE___WS1__regProdAP: + return (void*)cross_instantiate___WS1__regProdAP(soap, -1, type, arrayType, n); + case SOAP_TYPE___WS1__invokeUnion: + return (void*)cross_instantiate___WS1__invokeUnion(soap, -1, type, arrayType, n); + case SOAP_TYPE___WS1__invokeMdm: + return (void*)cross_instantiate___WS1__invokeMdm(soap, -1, type, arrayType, n); + case SOAP_TYPE___WS1__getProd: + return (void*)cross_instantiate___WS1__getProd(soap, -1, type, arrayType, n); + case SOAP_TYPE___WS1__getSrv: + return (void*)cross_instantiate___WS1__getSrv(soap, -1, type, arrayType, n); + case SOAP_TYPE___WS1__fpInvoke: + return (void*)cross_instantiate___WS1__fpInvoke(soap, -1, type, arrayType, n); + case SOAP_TYPE___WS1__getStandardServiceList: + return (void*)cross_instantiate___WS1__getStandardServiceList(soap, -1, type, arrayType, n); + case SOAP_TYPE___WS1__getStandardDataNameList: + return (void*)cross_instantiate___WS1__getStandardDataNameList(soap, -1, type, arrayType, n); + case SOAP_TYPE___WS1__regSrv: + return (void*)cross_instantiate___WS1__regSrv(soap, -1, type, arrayType, n); + case SOAP_TYPE___WS1__regEAI: + return (void*)cross_instantiate___WS1__regEAI(soap, -1, type, arrayType, n); + case SOAP_TYPE___WS1__invokeSrv: + return (void*)cross_instantiate___WS1__invokeSrv(soap, -1, type, arrayType, n); + case SOAP_TYPE___WS1__escrowResendSrv: + return (void*)cross_instantiate___WS1__escrowResendSrv(soap, -1, type, arrayType, n); +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Header: + return (void*)cross_instantiate_SOAP_ENV__Header(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Code: + return (void*)cross_instantiate_SOAP_ENV__Code(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Detail: + return (void*)cross_instantiate_SOAP_ENV__Detail(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Reason: + return (void*)cross_instantiate_SOAP_ENV__Reason(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Fault: + return (void*)cross_instantiate_SOAP_ENV__Fault(soap, -1, type, arrayType, n); +#endif + } + return NULL; +} + +SOAP_FMAC3 int SOAP_FMAC4 cross_fdelete(struct soap *soap, struct soap_clist *p) +{ + (void)soap; /* appease -Wall -Werror */ + if (!p->ptr) + return SOAP_OK; + switch (p->type) + { + case SOAP_TYPE_std__string: + if (p->size < 0) + SOAP_DELETE(soap, static_cast(p->ptr), std::string); + else + SOAP_DELETE_ARRAY(soap, static_cast(p->ptr), std::string); + break; + case SOAP_TYPE__WS1__invokeEtl: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__invokeEtl*>(p->ptr), _WS1__invokeEtl); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__invokeEtl*>(p->ptr), _WS1__invokeEtl); + break; + case SOAP_TYPE__WS1__invokeEtlResponse: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__invokeEtlResponse*>(p->ptr), _WS1__invokeEtlResponse); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__invokeEtlResponse*>(p->ptr), _WS1__invokeEtlResponse); + break; + case SOAP_TYPE__WS1__getEtlJobList: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__getEtlJobList*>(p->ptr), _WS1__getEtlJobList); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__getEtlJobList*>(p->ptr), _WS1__getEtlJobList); + break; + case SOAP_TYPE__WS1__getEtlJobListResponse: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__getEtlJobListResponse*>(p->ptr), _WS1__getEtlJobListResponse); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__getEtlJobListResponse*>(p->ptr), _WS1__getEtlJobListResponse); + break; + case SOAP_TYPE__WS1__getParamList: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__getParamList*>(p->ptr), _WS1__getParamList); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__getParamList*>(p->ptr), _WS1__getParamList); + break; + case SOAP_TYPE__WS1__getParamListResponse: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__getParamListResponse*>(p->ptr), _WS1__getParamListResponse); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__getParamListResponse*>(p->ptr), _WS1__getParamListResponse); + break; + case SOAP_TYPE__WS1__getProdList: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__getProdList*>(p->ptr), _WS1__getProdList); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__getProdList*>(p->ptr), _WS1__getProdList); + break; + case SOAP_TYPE__WS1__getProdListResponse: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__getProdListResponse*>(p->ptr), _WS1__getProdListResponse); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__getProdListResponse*>(p->ptr), _WS1__getProdListResponse); + break; + case SOAP_TYPE__WS1__regProdAP: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__regProdAP*>(p->ptr), _WS1__regProdAP); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__regProdAP*>(p->ptr), _WS1__regProdAP); + break; + case SOAP_TYPE__WS1__regProdAPResponse: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__regProdAPResponse*>(p->ptr), _WS1__regProdAPResponse); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__regProdAPResponse*>(p->ptr), _WS1__regProdAPResponse); + break; + case SOAP_TYPE__WS1__invokeUnion: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__invokeUnion*>(p->ptr), _WS1__invokeUnion); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__invokeUnion*>(p->ptr), _WS1__invokeUnion); + break; + case SOAP_TYPE__WS1__invokeUnionResponse: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__invokeUnionResponse*>(p->ptr), _WS1__invokeUnionResponse); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__invokeUnionResponse*>(p->ptr), _WS1__invokeUnionResponse); + break; + case SOAP_TYPE__WS1__invokeMdm: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__invokeMdm*>(p->ptr), _WS1__invokeMdm); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__invokeMdm*>(p->ptr), _WS1__invokeMdm); + break; + case SOAP_TYPE__WS1__invokeMdmResponse: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__invokeMdmResponse*>(p->ptr), _WS1__invokeMdmResponse); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__invokeMdmResponse*>(p->ptr), _WS1__invokeMdmResponse); + break; + case SOAP_TYPE__WS1__getProd: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__getProd*>(p->ptr), _WS1__getProd); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__getProd*>(p->ptr), _WS1__getProd); + break; + case SOAP_TYPE__WS1__getProdResponse: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__getProdResponse*>(p->ptr), _WS1__getProdResponse); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__getProdResponse*>(p->ptr), _WS1__getProdResponse); + break; + case SOAP_TYPE__WS1__getSrv: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__getSrv*>(p->ptr), _WS1__getSrv); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__getSrv*>(p->ptr), _WS1__getSrv); + break; + case SOAP_TYPE__WS1__getSrvResponse: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__getSrvResponse*>(p->ptr), _WS1__getSrvResponse); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__getSrvResponse*>(p->ptr), _WS1__getSrvResponse); + break; + case SOAP_TYPE__WS1__fpInvoke: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__fpInvoke*>(p->ptr), _WS1__fpInvoke); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__fpInvoke*>(p->ptr), _WS1__fpInvoke); + break; + case SOAP_TYPE__WS1__fpInvokeResponse: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__fpInvokeResponse*>(p->ptr), _WS1__fpInvokeResponse); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__fpInvokeResponse*>(p->ptr), _WS1__fpInvokeResponse); + break; + case SOAP_TYPE__WS1__getStandardServiceList: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__getStandardServiceList*>(p->ptr), _WS1__getStandardServiceList); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__getStandardServiceList*>(p->ptr), _WS1__getStandardServiceList); + break; + case SOAP_TYPE__WS1__getStandardServiceListResponse: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__getStandardServiceListResponse*>(p->ptr), _WS1__getStandardServiceListResponse); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__getStandardServiceListResponse*>(p->ptr), _WS1__getStandardServiceListResponse); + break; + case SOAP_TYPE__WS1__getStandardDataNameList: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__getStandardDataNameList*>(p->ptr), _WS1__getStandardDataNameList); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__getStandardDataNameList*>(p->ptr), _WS1__getStandardDataNameList); + break; + case SOAP_TYPE__WS1__getStandardDataNameListResponse: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__getStandardDataNameListResponse*>(p->ptr), _WS1__getStandardDataNameListResponse); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__getStandardDataNameListResponse*>(p->ptr), _WS1__getStandardDataNameListResponse); + break; + case SOAP_TYPE__WS1__regSrv: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__regSrv*>(p->ptr), _WS1__regSrv); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__regSrv*>(p->ptr), _WS1__regSrv); + break; + case SOAP_TYPE__WS1__regSrvResponse: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__regSrvResponse*>(p->ptr), _WS1__regSrvResponse); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__regSrvResponse*>(p->ptr), _WS1__regSrvResponse); + break; + case SOAP_TYPE__WS1__regEAI: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__regEAI*>(p->ptr), _WS1__regEAI); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__regEAI*>(p->ptr), _WS1__regEAI); + break; + case SOAP_TYPE__WS1__regEAIResponse: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__regEAIResponse*>(p->ptr), _WS1__regEAIResponse); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__regEAIResponse*>(p->ptr), _WS1__regEAIResponse); + break; + case SOAP_TYPE__WS1__invokeSrv: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__invokeSrv*>(p->ptr), _WS1__invokeSrv); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__invokeSrv*>(p->ptr), _WS1__invokeSrv); + break; + case SOAP_TYPE__WS1__invokeSrvResponse: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__invokeSrvResponse*>(p->ptr), _WS1__invokeSrvResponse); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__invokeSrvResponse*>(p->ptr), _WS1__invokeSrvResponse); + break; + case SOAP_TYPE__WS1__escrowResendSrv: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__escrowResendSrv*>(p->ptr), _WS1__escrowResendSrv); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__escrowResendSrv*>(p->ptr), _WS1__escrowResendSrv); + break; + case SOAP_TYPE__WS1__escrowResendSrvResponse: + if (p->size < 0) + SOAP_DELETE(soap, static_cast<_WS1__escrowResendSrvResponse*>(p->ptr), _WS1__escrowResendSrvResponse); + else + SOAP_DELETE_ARRAY(soap, static_cast<_WS1__escrowResendSrvResponse*>(p->ptr), _WS1__escrowResendSrvResponse); + break; + case SOAP_TYPE___WS1__invokeEtl: + if (p->size < 0) + SOAP_DELETE(soap, static_cast(p->ptr), struct __WS1__invokeEtl); + else + SOAP_DELETE_ARRAY(soap, static_cast(p->ptr), struct __WS1__invokeEtl); + break; + case SOAP_TYPE___WS1__getEtlJobList: + if (p->size < 0) + SOAP_DELETE(soap, static_cast(p->ptr), struct __WS1__getEtlJobList); + else + SOAP_DELETE_ARRAY(soap, static_cast(p->ptr), struct __WS1__getEtlJobList); + break; + case SOAP_TYPE___WS1__getParamList: + if (p->size < 0) + SOAP_DELETE(soap, static_cast(p->ptr), struct __WS1__getParamList); + else + SOAP_DELETE_ARRAY(soap, static_cast(p->ptr), struct __WS1__getParamList); + break; + case SOAP_TYPE___WS1__getProdList: + if (p->size < 0) + SOAP_DELETE(soap, static_cast(p->ptr), struct __WS1__getProdList); + else + SOAP_DELETE_ARRAY(soap, static_cast(p->ptr), struct __WS1__getProdList); + break; + case SOAP_TYPE___WS1__regProdAP: + if (p->size < 0) + SOAP_DELETE(soap, static_cast(p->ptr), struct __WS1__regProdAP); + else + SOAP_DELETE_ARRAY(soap, static_cast(p->ptr), struct __WS1__regProdAP); + break; + case SOAP_TYPE___WS1__invokeUnion: + if (p->size < 0) + SOAP_DELETE(soap, static_cast(p->ptr), struct __WS1__invokeUnion); + else + SOAP_DELETE_ARRAY(soap, static_cast(p->ptr), struct __WS1__invokeUnion); + break; + case SOAP_TYPE___WS1__invokeMdm: + if (p->size < 0) + SOAP_DELETE(soap, static_cast(p->ptr), struct __WS1__invokeMdm); + else + SOAP_DELETE_ARRAY(soap, static_cast(p->ptr), struct __WS1__invokeMdm); + break; + case SOAP_TYPE___WS1__getProd: + if (p->size < 0) + SOAP_DELETE(soap, static_cast(p->ptr), struct __WS1__getProd); + else + SOAP_DELETE_ARRAY(soap, static_cast(p->ptr), struct __WS1__getProd); + break; + case SOAP_TYPE___WS1__getSrv: + if (p->size < 0) + SOAP_DELETE(soap, static_cast(p->ptr), struct __WS1__getSrv); + else + SOAP_DELETE_ARRAY(soap, static_cast(p->ptr), struct __WS1__getSrv); + break; + case SOAP_TYPE___WS1__fpInvoke: + if (p->size < 0) + SOAP_DELETE(soap, static_cast(p->ptr), struct __WS1__fpInvoke); + else + SOAP_DELETE_ARRAY(soap, static_cast(p->ptr), struct __WS1__fpInvoke); + break; + case SOAP_TYPE___WS1__getStandardServiceList: + if (p->size < 0) + SOAP_DELETE(soap, static_cast(p->ptr), struct __WS1__getStandardServiceList); + else + SOAP_DELETE_ARRAY(soap, static_cast(p->ptr), struct __WS1__getStandardServiceList); + break; + case SOAP_TYPE___WS1__getStandardDataNameList: + if (p->size < 0) + SOAP_DELETE(soap, static_cast(p->ptr), struct __WS1__getStandardDataNameList); + else + SOAP_DELETE_ARRAY(soap, static_cast(p->ptr), struct __WS1__getStandardDataNameList); + break; + case SOAP_TYPE___WS1__regSrv: + if (p->size < 0) + SOAP_DELETE(soap, static_cast(p->ptr), struct __WS1__regSrv); + else + SOAP_DELETE_ARRAY(soap, static_cast(p->ptr), struct __WS1__regSrv); + break; + case SOAP_TYPE___WS1__regEAI: + if (p->size < 0) + SOAP_DELETE(soap, static_cast(p->ptr), struct __WS1__regEAI); + else + SOAP_DELETE_ARRAY(soap, static_cast(p->ptr), struct __WS1__regEAI); + break; + case SOAP_TYPE___WS1__invokeSrv: + if (p->size < 0) + SOAP_DELETE(soap, static_cast(p->ptr), struct __WS1__invokeSrv); + else + SOAP_DELETE_ARRAY(soap, static_cast(p->ptr), struct __WS1__invokeSrv); + break; + case SOAP_TYPE___WS1__escrowResendSrv: + if (p->size < 0) + SOAP_DELETE(soap, static_cast(p->ptr), struct __WS1__escrowResendSrv); + else + SOAP_DELETE_ARRAY(soap, static_cast(p->ptr), struct __WS1__escrowResendSrv); + break; +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Header: + if (p->size < 0) + SOAP_DELETE(soap, static_cast(p->ptr), struct SOAP_ENV__Header); + else + SOAP_DELETE_ARRAY(soap, static_cast(p->ptr), struct SOAP_ENV__Header); + break; +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Code: + if (p->size < 0) + SOAP_DELETE(soap, static_cast(p->ptr), struct SOAP_ENV__Code); + else + SOAP_DELETE_ARRAY(soap, static_cast(p->ptr), struct SOAP_ENV__Code); + break; +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Detail: + if (p->size < 0) + SOAP_DELETE(soap, static_cast(p->ptr), struct SOAP_ENV__Detail); + else + SOAP_DELETE_ARRAY(soap, static_cast(p->ptr), struct SOAP_ENV__Detail); + break; +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Reason: + if (p->size < 0) + SOAP_DELETE(soap, static_cast(p->ptr), struct SOAP_ENV__Reason); + else + SOAP_DELETE_ARRAY(soap, static_cast(p->ptr), struct SOAP_ENV__Reason); + break; +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Fault: + if (p->size < 0) + SOAP_DELETE(soap, static_cast(p->ptr), struct SOAP_ENV__Fault); + else + SOAP_DELETE_ARRAY(soap, static_cast(p->ptr), struct SOAP_ENV__Fault); + break; +#endif + default: + return SOAP_ERR; + } + return SOAP_OK; +} + +#ifdef WIN32 +#pragma warning(push) +// do not warn on switch w/o cases +#pragma warning(disable:4065) +#endif +SOAP_FMAC3 int SOAP_FMAC4 cross_fbase(int t, int b) +{ + (void)t; (void)b; /* appease -Wall -Werror */ + return 0; +} +#ifdef WIN32 +#pragma warning(pop) +#endif + +#ifndef WITH_NOIDREF +#ifdef WIN32 +#pragma warning(push) +// do not warn on switch w/o cases +#pragma warning(disable:4065) +#endif +SOAP_FMAC3 void SOAP_FMAC4 cross_finsert(struct soap *soap, int t, int tt, void *p, size_t index, const void *q, void **x) +{ + (void)soap; (void)t; (void)p; (void)index; (void)q; (void)x; /* appease -Wall -Werror */ + switch (tt) + { + case SOAP_TYPE_std__string: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy std::string type=%d location=%p object=%p\n", t, p, q)); + *(std::string*)p = *(std::string*)q; + break; + case SOAP_TYPE__WS1__invokeEtl: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__invokeEtl type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__invokeEtl*)p = *(_WS1__invokeEtl*)q; + break; + case SOAP_TYPE__WS1__invokeEtlResponse: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__invokeEtlResponse type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__invokeEtlResponse*)p = *(_WS1__invokeEtlResponse*)q; + break; + case SOAP_TYPE__WS1__getEtlJobList: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__getEtlJobList type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__getEtlJobList*)p = *(_WS1__getEtlJobList*)q; + break; + case SOAP_TYPE__WS1__getEtlJobListResponse: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__getEtlJobListResponse type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__getEtlJobListResponse*)p = *(_WS1__getEtlJobListResponse*)q; + break; + case SOAP_TYPE__WS1__getParamList: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__getParamList type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__getParamList*)p = *(_WS1__getParamList*)q; + break; + case SOAP_TYPE__WS1__getParamListResponse: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__getParamListResponse type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__getParamListResponse*)p = *(_WS1__getParamListResponse*)q; + break; + case SOAP_TYPE__WS1__getProdList: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__getProdList type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__getProdList*)p = *(_WS1__getProdList*)q; + break; + case SOAP_TYPE__WS1__getProdListResponse: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__getProdListResponse type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__getProdListResponse*)p = *(_WS1__getProdListResponse*)q; + break; + case SOAP_TYPE__WS1__regProdAP: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__regProdAP type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__regProdAP*)p = *(_WS1__regProdAP*)q; + break; + case SOAP_TYPE__WS1__regProdAPResponse: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__regProdAPResponse type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__regProdAPResponse*)p = *(_WS1__regProdAPResponse*)q; + break; + case SOAP_TYPE__WS1__invokeUnion: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__invokeUnion type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__invokeUnion*)p = *(_WS1__invokeUnion*)q; + break; + case SOAP_TYPE__WS1__invokeUnionResponse: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__invokeUnionResponse type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__invokeUnionResponse*)p = *(_WS1__invokeUnionResponse*)q; + break; + case SOAP_TYPE__WS1__invokeMdm: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__invokeMdm type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__invokeMdm*)p = *(_WS1__invokeMdm*)q; + break; + case SOAP_TYPE__WS1__invokeMdmResponse: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__invokeMdmResponse type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__invokeMdmResponse*)p = *(_WS1__invokeMdmResponse*)q; + break; + case SOAP_TYPE__WS1__getProd: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__getProd type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__getProd*)p = *(_WS1__getProd*)q; + break; + case SOAP_TYPE__WS1__getProdResponse: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__getProdResponse type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__getProdResponse*)p = *(_WS1__getProdResponse*)q; + break; + case SOAP_TYPE__WS1__getSrv: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__getSrv type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__getSrv*)p = *(_WS1__getSrv*)q; + break; + case SOAP_TYPE__WS1__getSrvResponse: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__getSrvResponse type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__getSrvResponse*)p = *(_WS1__getSrvResponse*)q; + break; + case SOAP_TYPE__WS1__fpInvoke: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__fpInvoke type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__fpInvoke*)p = *(_WS1__fpInvoke*)q; + break; + case SOAP_TYPE__WS1__fpInvokeResponse: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__fpInvokeResponse type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__fpInvokeResponse*)p = *(_WS1__fpInvokeResponse*)q; + break; + case SOAP_TYPE__WS1__getStandardServiceList: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__getStandardServiceList type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__getStandardServiceList*)p = *(_WS1__getStandardServiceList*)q; + break; + case SOAP_TYPE__WS1__getStandardServiceListResponse: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__getStandardServiceListResponse type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__getStandardServiceListResponse*)p = *(_WS1__getStandardServiceListResponse*)q; + break; + case SOAP_TYPE__WS1__getStandardDataNameList: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__getStandardDataNameList type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__getStandardDataNameList*)p = *(_WS1__getStandardDataNameList*)q; + break; + case SOAP_TYPE__WS1__getStandardDataNameListResponse: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__getStandardDataNameListResponse type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__getStandardDataNameListResponse*)p = *(_WS1__getStandardDataNameListResponse*)q; + break; + case SOAP_TYPE__WS1__regSrv: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__regSrv type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__regSrv*)p = *(_WS1__regSrv*)q; + break; + case SOAP_TYPE__WS1__regSrvResponse: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__regSrvResponse type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__regSrvResponse*)p = *(_WS1__regSrvResponse*)q; + break; + case SOAP_TYPE__WS1__regEAI: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__regEAI type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__regEAI*)p = *(_WS1__regEAI*)q; + break; + case SOAP_TYPE__WS1__regEAIResponse: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__regEAIResponse type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__regEAIResponse*)p = *(_WS1__regEAIResponse*)q; + break; + case SOAP_TYPE__WS1__invokeSrv: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__invokeSrv type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__invokeSrv*)p = *(_WS1__invokeSrv*)q; + break; + case SOAP_TYPE__WS1__invokeSrvResponse: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__invokeSrvResponse type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__invokeSrvResponse*)p = *(_WS1__invokeSrvResponse*)q; + break; + case SOAP_TYPE__WS1__escrowResendSrv: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__escrowResendSrv type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__escrowResendSrv*)p = *(_WS1__escrowResendSrv*)q; + break; + case SOAP_TYPE__WS1__escrowResendSrvResponse: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy _WS1__escrowResendSrvResponse type=%d location=%p object=%p\n", t, p, q)); + *(_WS1__escrowResendSrvResponse*)p = *(_WS1__escrowResendSrvResponse*)q; + break; + case SOAP_TYPE___WS1__invokeEtl: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct __WS1__invokeEtl type=%d location=%p object=%p\n", t, p, q)); + *(struct __WS1__invokeEtl*)p = *(struct __WS1__invokeEtl*)q; + break; + case SOAP_TYPE___WS1__getEtlJobList: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct __WS1__getEtlJobList type=%d location=%p object=%p\n", t, p, q)); + *(struct __WS1__getEtlJobList*)p = *(struct __WS1__getEtlJobList*)q; + break; + case SOAP_TYPE___WS1__getParamList: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct __WS1__getParamList type=%d location=%p object=%p\n", t, p, q)); + *(struct __WS1__getParamList*)p = *(struct __WS1__getParamList*)q; + break; + case SOAP_TYPE___WS1__getProdList: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct __WS1__getProdList type=%d location=%p object=%p\n", t, p, q)); + *(struct __WS1__getProdList*)p = *(struct __WS1__getProdList*)q; + break; + case SOAP_TYPE___WS1__regProdAP: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct __WS1__regProdAP type=%d location=%p object=%p\n", t, p, q)); + *(struct __WS1__regProdAP*)p = *(struct __WS1__regProdAP*)q; + break; + case SOAP_TYPE___WS1__invokeUnion: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct __WS1__invokeUnion type=%d location=%p object=%p\n", t, p, q)); + *(struct __WS1__invokeUnion*)p = *(struct __WS1__invokeUnion*)q; + break; + case SOAP_TYPE___WS1__invokeMdm: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct __WS1__invokeMdm type=%d location=%p object=%p\n", t, p, q)); + *(struct __WS1__invokeMdm*)p = *(struct __WS1__invokeMdm*)q; + break; + case SOAP_TYPE___WS1__getProd: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct __WS1__getProd type=%d location=%p object=%p\n", t, p, q)); + *(struct __WS1__getProd*)p = *(struct __WS1__getProd*)q; + break; + case SOAP_TYPE___WS1__getSrv: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct __WS1__getSrv type=%d location=%p object=%p\n", t, p, q)); + *(struct __WS1__getSrv*)p = *(struct __WS1__getSrv*)q; + break; + case SOAP_TYPE___WS1__fpInvoke: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct __WS1__fpInvoke type=%d location=%p object=%p\n", t, p, q)); + *(struct __WS1__fpInvoke*)p = *(struct __WS1__fpInvoke*)q; + break; + case SOAP_TYPE___WS1__getStandardServiceList: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct __WS1__getStandardServiceList type=%d location=%p object=%p\n", t, p, q)); + *(struct __WS1__getStandardServiceList*)p = *(struct __WS1__getStandardServiceList*)q; + break; + case SOAP_TYPE___WS1__getStandardDataNameList: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct __WS1__getStandardDataNameList type=%d location=%p object=%p\n", t, p, q)); + *(struct __WS1__getStandardDataNameList*)p = *(struct __WS1__getStandardDataNameList*)q; + break; + case SOAP_TYPE___WS1__regSrv: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct __WS1__regSrv type=%d location=%p object=%p\n", t, p, q)); + *(struct __WS1__regSrv*)p = *(struct __WS1__regSrv*)q; + break; + case SOAP_TYPE___WS1__regEAI: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct __WS1__regEAI type=%d location=%p object=%p\n", t, p, q)); + *(struct __WS1__regEAI*)p = *(struct __WS1__regEAI*)q; + break; + case SOAP_TYPE___WS1__invokeSrv: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct __WS1__invokeSrv type=%d location=%p object=%p\n", t, p, q)); + *(struct __WS1__invokeSrv*)p = *(struct __WS1__invokeSrv*)q; + break; + case SOAP_TYPE___WS1__escrowResendSrv: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct __WS1__escrowResendSrv type=%d location=%p object=%p\n", t, p, q)); + *(struct __WS1__escrowResendSrv*)p = *(struct __WS1__escrowResendSrv*)q; + break; +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Header: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct SOAP_ENV__Header type=%d location=%p object=%p\n", t, p, q)); + *(struct SOAP_ENV__Header*)p = *(struct SOAP_ENV__Header*)q; + break; +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Code: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct SOAP_ENV__Code type=%d location=%p object=%p\n", t, p, q)); + *(struct SOAP_ENV__Code*)p = *(struct SOAP_ENV__Code*)q; + break; +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Detail: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct SOAP_ENV__Detail type=%d location=%p object=%p\n", t, p, q)); + *(struct SOAP_ENV__Detail*)p = *(struct SOAP_ENV__Detail*)q; + break; +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Reason: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct SOAP_ENV__Reason type=%d location=%p object=%p\n", t, p, q)); + *(struct SOAP_ENV__Reason*)p = *(struct SOAP_ENV__Reason*)q; + break; +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Fault: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy struct SOAP_ENV__Fault type=%d location=%p object=%p\n", t, p, q)); + *(struct SOAP_ENV__Fault*)p = *(struct SOAP_ENV__Fault*)q; + break; +#endif + default: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not insert type=%d in %d\n", t, tt)); + } +} +#ifdef WIN32 +#pragma warning(pop) +#endif +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap *soap, const char *tag, int id, const char *a, const char *type) +{ + return soap_outbyte(soap, tag, id, a, type, SOAP_TYPE_byte); +} + +SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap *soap, const char *tag, char *a, const char *type) +{ + a = soap_inbyte(soap, tag, a, type, SOAP_TYPE_byte); + return a; +} + +SOAP_FMAC3 char * SOAP_FMAC4 soap_new_byte(struct soap *soap, int n) +{ + char *a = static_cast(soap_malloc(soap, (n = (n < 0 ? 1 : n)) * sizeof(char))); + for (char *p = a; p && n--; ++p) + soap_default_byte(soap, p); + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap *soap, const char *a, const char *tag, const char *type) +{ + if (soap_out_byte(soap, tag ? tag : "byte", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap *soap, char *p, const char *tag, const char *type) +{ + if ((p = soap_in_byte(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap *soap, const char *tag, int id, const int *a, const char *type) +{ + return soap_outint(soap, tag, id, a, type, SOAP_TYPE_int); +} + +SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap *soap, const char *tag, int *a, const char *type) +{ + a = soap_inint(soap, tag, a, type, SOAP_TYPE_int); + return a; +} + +SOAP_FMAC3 int * SOAP_FMAC4 soap_new_int(struct soap *soap, int n) +{ + int *a = static_cast(soap_malloc(soap, (n = (n < 0 ? 1 : n)) * sizeof(int))); + for (int *p = a; p && n--; ++p) + soap_default_int(soap, p); + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap *soap, const int *a, const char *tag, const char *type) +{ + if (soap_out_int(soap, tag ? tag : "int", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap *soap, int *p, const char *tag, const char *type) +{ + if ((p = soap_in_int(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__string(struct soap *soap, const std::string *a) +{ (void)soap; (void)a; /* appease -Wall -Werror */ +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__string(struct soap *soap, const char *tag, int id, const std::string *s, const char *type) +{ + if ((soap->mode & SOAP_C_NILSTRING) && s->empty()) + return soap_element_null(soap, tag, id, type); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, s, SOAP_TYPE_std__string), type) || soap_string_out(soap, s->c_str(), 0) || soap_element_end_out(soap, tag)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_std__string(struct soap *soap, const char *tag, std::string *s, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!s) + s = soap_new_std__string(soap, -1); + if (soap->null) + if (s) + s->erase(); + if (soap->body && *soap->href != '#') + { char *t; + s = (std::string*)soap_id_enter(soap, soap->id, s, SOAP_TYPE_std__string, sizeof(std::string), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (s) + { if (!(t = soap_string_in(soap, 1, 0, -1, NULL))) + return NULL; + s->assign(t); + } + } + else + s = (std::string*)soap_id_forward(soap, soap->href, soap_id_enter(soap, soap->id, s, SOAP_TYPE_std__string, sizeof(std::string), soap->type, soap->arrayType, cross_instantiate, cross_fbase), 0, SOAP_TYPE_std__string, SOAP_TYPE_std__string, sizeof(std::string), 0, cross_finsert, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return s; +} + +SOAP_FMAC1 std::string * SOAP_FMAC2 cross_instantiate_std__string(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate_std__string(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + std::string *p; + size_t k = sizeof(std::string); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE_std__string, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, std::string); + } + else + { p = SOAP_NEW_ARRAY(soap, std::string, n); + k *= n; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated std::string location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__string(struct soap *soap, const std::string *a, const char *tag, const char *type) +{ + if (soap_out_std__string(soap, tag ? tag : "string", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_std__string(struct soap *soap, std::string *p, const char *tag, const char *type) +{ + if ((p = soap_in_std__string(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__escrowResendSrvResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__escrowResendSrvResponse::escrowResendSrvReturn); +} + +void _WS1__escrowResendSrvResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__escrowResendSrvResponse::escrowResendSrvReturn); +#endif +} + +int _WS1__escrowResendSrvResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__escrowResendSrvResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__escrowResendSrvResponse(struct soap *soap, const char *tag, int id, const _WS1__escrowResendSrvResponse *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__escrowResendSrvResponse), type)) + return soap->error; + soap_element_result(soap, "WS1:escrowResendSrvReturn"); + if (soap_out_std__string(soap, "WS1:escrowResendSrvReturn", -1, &a->_WS1__escrowResendSrvResponse::escrowResendSrvReturn, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__escrowResendSrvResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__escrowResendSrvResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__escrowResendSrvResponse * SOAP_FMAC4 soap_in__WS1__escrowResendSrvResponse(struct soap *soap, const char *tag, _WS1__escrowResendSrvResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__escrowResendSrvResponse*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__escrowResendSrvResponse, sizeof(_WS1__escrowResendSrvResponse), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__escrowResendSrvResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__escrowResendSrvResponse *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_escrowResendSrvReturn1 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_escrowResendSrvReturn1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:escrowResendSrvReturn", &a->_WS1__escrowResendSrvResponse::escrowResendSrvReturn, "xsd:string")) + { soap_flag_escrowResendSrvReturn1--; + continue; + } + } + soap_check_result(soap, "WS1:escrowResendSrvReturn"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_escrowResendSrvReturn1 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__escrowResendSrvResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__escrowResendSrvResponse, SOAP_TYPE__WS1__escrowResendSrvResponse, sizeof(_WS1__escrowResendSrvResponse), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__escrowResendSrvResponse * SOAP_FMAC2 cross_instantiate__WS1__escrowResendSrvResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__escrowResendSrvResponse(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__escrowResendSrvResponse *p; + size_t k = sizeof(_WS1__escrowResendSrvResponse); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__escrowResendSrvResponse, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__escrowResendSrvResponse); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__escrowResendSrvResponse, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__escrowResendSrvResponse location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__escrowResendSrvResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__escrowResendSrvResponse(soap, tag ? tag : "WS1:escrowResendSrvResponse", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__escrowResendSrvResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__escrowResendSrvResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__escrowResendSrvResponse * SOAP_FMAC4 soap_get__WS1__escrowResendSrvResponse(struct soap *soap, _WS1__escrowResendSrvResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__escrowResendSrvResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__escrowResendSrv::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__escrowResendSrv::in0); + soap_default_std__string(soap, &this->_WS1__escrowResendSrv::in1); +} + +void _WS1__escrowResendSrv::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__escrowResendSrv::in0); + soap_serialize_std__string(soap, &this->_WS1__escrowResendSrv::in1); +#endif +} + +int _WS1__escrowResendSrv::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__escrowResendSrv(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__escrowResendSrv(struct soap *soap, const char *tag, int id, const _WS1__escrowResendSrv *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__escrowResendSrv), type)) + return soap->error; + if (soap_out_std__string(soap, "WS1:in0", -1, &a->_WS1__escrowResendSrv::in0, "")) + return soap->error; + if (soap_out_std__string(soap, "WS1:in1", -1, &a->_WS1__escrowResendSrv::in1, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__escrowResendSrv::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__escrowResendSrv(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__escrowResendSrv * SOAP_FMAC4 soap_in__WS1__escrowResendSrv(struct soap *soap, const char *tag, _WS1__escrowResendSrv *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__escrowResendSrv*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__escrowResendSrv, sizeof(_WS1__escrowResendSrv), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__escrowResendSrv) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__escrowResendSrv *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_in01 = 1; + size_t soap_flag_in11 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_in01 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:in0", &a->_WS1__escrowResendSrv::in0, "xsd:string")) + { soap_flag_in01--; + continue; + } + } + if (soap_flag_in11 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:in1", &a->_WS1__escrowResendSrv::in1, "xsd:string")) + { soap_flag_in11--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_in01 > 0 || soap_flag_in11 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__escrowResendSrv *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__escrowResendSrv, SOAP_TYPE__WS1__escrowResendSrv, sizeof(_WS1__escrowResendSrv), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__escrowResendSrv * SOAP_FMAC2 cross_instantiate__WS1__escrowResendSrv(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__escrowResendSrv(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__escrowResendSrv *p; + size_t k = sizeof(_WS1__escrowResendSrv); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__escrowResendSrv, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__escrowResendSrv); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__escrowResendSrv, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__escrowResendSrv location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__escrowResendSrv::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__escrowResendSrv(soap, tag ? tag : "WS1:escrowResendSrv", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__escrowResendSrv::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__escrowResendSrv(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__escrowResendSrv * SOAP_FMAC4 soap_get__WS1__escrowResendSrv(struct soap *soap, _WS1__escrowResendSrv *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__escrowResendSrv(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__invokeSrvResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__invokeSrvResponse::invokeSrvReturn); +} + +void _WS1__invokeSrvResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__invokeSrvResponse::invokeSrvReturn); +#endif +} + +int _WS1__invokeSrvResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__invokeSrvResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__invokeSrvResponse(struct soap *soap, const char *tag, int id, const _WS1__invokeSrvResponse *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__invokeSrvResponse), type)) + return soap->error; + soap_element_result(soap, "WS1:invokeSrvReturn"); + if (soap_out_std__string(soap, "WS1:invokeSrvReturn", -1, &a->_WS1__invokeSrvResponse::invokeSrvReturn, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__invokeSrvResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__invokeSrvResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__invokeSrvResponse * SOAP_FMAC4 soap_in__WS1__invokeSrvResponse(struct soap *soap, const char *tag, _WS1__invokeSrvResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__invokeSrvResponse*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__invokeSrvResponse, sizeof(_WS1__invokeSrvResponse), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__invokeSrvResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__invokeSrvResponse *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_invokeSrvReturn1 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_invokeSrvReturn1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:invokeSrvReturn", &a->_WS1__invokeSrvResponse::invokeSrvReturn, "xsd:string")) + { soap_flag_invokeSrvReturn1--; + continue; + } + } + soap_check_result(soap, "WS1:invokeSrvReturn"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_invokeSrvReturn1 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__invokeSrvResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__invokeSrvResponse, SOAP_TYPE__WS1__invokeSrvResponse, sizeof(_WS1__invokeSrvResponse), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__invokeSrvResponse * SOAP_FMAC2 cross_instantiate__WS1__invokeSrvResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__invokeSrvResponse(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__invokeSrvResponse *p; + size_t k = sizeof(_WS1__invokeSrvResponse); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__invokeSrvResponse, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__invokeSrvResponse); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__invokeSrvResponse, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__invokeSrvResponse location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__invokeSrvResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__invokeSrvResponse(soap, tag ? tag : "WS1:invokeSrvResponse", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__invokeSrvResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__invokeSrvResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__invokeSrvResponse * SOAP_FMAC4 soap_get__WS1__invokeSrvResponse(struct soap *soap, _WS1__invokeSrvResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__invokeSrvResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__invokeSrv::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__invokeSrv::in0); +} + +void _WS1__invokeSrv::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__invokeSrv::in0); +#endif +} + +int _WS1__invokeSrv::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__invokeSrv(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__invokeSrv(struct soap *soap, const char *tag, int id, const _WS1__invokeSrv *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__invokeSrv), type)) + return soap->error; + if (soap_out_std__string(soap, "WS1:in0", -1, &a->_WS1__invokeSrv::in0, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__invokeSrv::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__invokeSrv(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__invokeSrv * SOAP_FMAC4 soap_in__WS1__invokeSrv(struct soap *soap, const char *tag, _WS1__invokeSrv *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__invokeSrv*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__invokeSrv, sizeof(_WS1__invokeSrv), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__invokeSrv) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__invokeSrv *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_in01 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_in01 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:in0", &a->_WS1__invokeSrv::in0, "xsd:string")) + { soap_flag_in01--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_in01 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__invokeSrv *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__invokeSrv, SOAP_TYPE__WS1__invokeSrv, sizeof(_WS1__invokeSrv), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__invokeSrv * SOAP_FMAC2 cross_instantiate__WS1__invokeSrv(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__invokeSrv(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__invokeSrv *p; + size_t k = sizeof(_WS1__invokeSrv); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__invokeSrv, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__invokeSrv); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__invokeSrv, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__invokeSrv location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__invokeSrv::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__invokeSrv(soap, tag ? tag : "WS1:invokeSrv", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__invokeSrv::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__invokeSrv(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__invokeSrv * SOAP_FMAC4 soap_get__WS1__invokeSrv(struct soap *soap, _WS1__invokeSrv *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__invokeSrv(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__regEAIResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__regEAIResponse::regEAIReturn); +} + +void _WS1__regEAIResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__regEAIResponse::regEAIReturn); +#endif +} + +int _WS1__regEAIResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__regEAIResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__regEAIResponse(struct soap *soap, const char *tag, int id, const _WS1__regEAIResponse *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__regEAIResponse), type)) + return soap->error; + soap_element_result(soap, "WS1:regEAIReturn"); + if (soap_out_std__string(soap, "WS1:regEAIReturn", -1, &a->_WS1__regEAIResponse::regEAIReturn, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__regEAIResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__regEAIResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__regEAIResponse * SOAP_FMAC4 soap_in__WS1__regEAIResponse(struct soap *soap, const char *tag, _WS1__regEAIResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__regEAIResponse*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__regEAIResponse, sizeof(_WS1__regEAIResponse), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__regEAIResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__regEAIResponse *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_regEAIReturn1 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_regEAIReturn1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:regEAIReturn", &a->_WS1__regEAIResponse::regEAIReturn, "xsd:string")) + { soap_flag_regEAIReturn1--; + continue; + } + } + soap_check_result(soap, "WS1:regEAIReturn"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_regEAIReturn1 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__regEAIResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__regEAIResponse, SOAP_TYPE__WS1__regEAIResponse, sizeof(_WS1__regEAIResponse), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__regEAIResponse * SOAP_FMAC2 cross_instantiate__WS1__regEAIResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__regEAIResponse(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__regEAIResponse *p; + size_t k = sizeof(_WS1__regEAIResponse); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__regEAIResponse, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__regEAIResponse); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__regEAIResponse, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__regEAIResponse location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__regEAIResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__regEAIResponse(soap, tag ? tag : "WS1:regEAIResponse", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__regEAIResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__regEAIResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__regEAIResponse * SOAP_FMAC4 soap_get__WS1__regEAIResponse(struct soap *soap, _WS1__regEAIResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__regEAIResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__regEAI::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__regEAI::in0); +} + +void _WS1__regEAI::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__regEAI::in0); +#endif +} + +int _WS1__regEAI::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__regEAI(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__regEAI(struct soap *soap, const char *tag, int id, const _WS1__regEAI *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__regEAI), type)) + return soap->error; + if (soap_out_std__string(soap, "WS1:in0", -1, &a->_WS1__regEAI::in0, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__regEAI::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__regEAI(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__regEAI * SOAP_FMAC4 soap_in__WS1__regEAI(struct soap *soap, const char *tag, _WS1__regEAI *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__regEAI*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__regEAI, sizeof(_WS1__regEAI), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__regEAI) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__regEAI *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_in01 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_in01 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:in0", &a->_WS1__regEAI::in0, "xsd:string")) + { soap_flag_in01--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_in01 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__regEAI *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__regEAI, SOAP_TYPE__WS1__regEAI, sizeof(_WS1__regEAI), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__regEAI * SOAP_FMAC2 cross_instantiate__WS1__regEAI(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__regEAI(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__regEAI *p; + size_t k = sizeof(_WS1__regEAI); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__regEAI, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__regEAI); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__regEAI, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__regEAI location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__regEAI::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__regEAI(soap, tag ? tag : "WS1:regEAI", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__regEAI::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__regEAI(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__regEAI * SOAP_FMAC4 soap_get__WS1__regEAI(struct soap *soap, _WS1__regEAI *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__regEAI(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__regSrvResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__regSrvResponse::regSrvReturn); +} + +void _WS1__regSrvResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__regSrvResponse::regSrvReturn); +#endif +} + +int _WS1__regSrvResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__regSrvResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__regSrvResponse(struct soap *soap, const char *tag, int id, const _WS1__regSrvResponse *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__regSrvResponse), type)) + return soap->error; + soap_element_result(soap, "WS1:regSrvReturn"); + if (soap_out_std__string(soap, "WS1:regSrvReturn", -1, &a->_WS1__regSrvResponse::regSrvReturn, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__regSrvResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__regSrvResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__regSrvResponse * SOAP_FMAC4 soap_in__WS1__regSrvResponse(struct soap *soap, const char *tag, _WS1__regSrvResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__regSrvResponse*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__regSrvResponse, sizeof(_WS1__regSrvResponse), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__regSrvResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__regSrvResponse *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_regSrvReturn1 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_regSrvReturn1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:regSrvReturn", &a->_WS1__regSrvResponse::regSrvReturn, "xsd:string")) + { soap_flag_regSrvReturn1--; + continue; + } + } + soap_check_result(soap, "WS1:regSrvReturn"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_regSrvReturn1 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__regSrvResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__regSrvResponse, SOAP_TYPE__WS1__regSrvResponse, sizeof(_WS1__regSrvResponse), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__regSrvResponse * SOAP_FMAC2 cross_instantiate__WS1__regSrvResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__regSrvResponse(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__regSrvResponse *p; + size_t k = sizeof(_WS1__regSrvResponse); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__regSrvResponse, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__regSrvResponse); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__regSrvResponse, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__regSrvResponse location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__regSrvResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__regSrvResponse(soap, tag ? tag : "WS1:regSrvResponse", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__regSrvResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__regSrvResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__regSrvResponse * SOAP_FMAC4 soap_get__WS1__regSrvResponse(struct soap *soap, _WS1__regSrvResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__regSrvResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__regSrv::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__regSrv::in0); +} + +void _WS1__regSrv::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__regSrv::in0); +#endif +} + +int _WS1__regSrv::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__regSrv(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__regSrv(struct soap *soap, const char *tag, int id, const _WS1__regSrv *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__regSrv), type)) + return soap->error; + if (soap_out_std__string(soap, "WS1:in0", -1, &a->_WS1__regSrv::in0, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__regSrv::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__regSrv(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__regSrv * SOAP_FMAC4 soap_in__WS1__regSrv(struct soap *soap, const char *tag, _WS1__regSrv *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__regSrv*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__regSrv, sizeof(_WS1__regSrv), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__regSrv) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__regSrv *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_in01 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_in01 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:in0", &a->_WS1__regSrv::in0, "xsd:string")) + { soap_flag_in01--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_in01 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__regSrv *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__regSrv, SOAP_TYPE__WS1__regSrv, sizeof(_WS1__regSrv), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__regSrv * SOAP_FMAC2 cross_instantiate__WS1__regSrv(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__regSrv(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__regSrv *p; + size_t k = sizeof(_WS1__regSrv); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__regSrv, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__regSrv); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__regSrv, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__regSrv location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__regSrv::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__regSrv(soap, tag ? tag : "WS1:regSrv", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__regSrv::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__regSrv(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__regSrv * SOAP_FMAC4 soap_get__WS1__regSrv(struct soap *soap, _WS1__regSrv *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__regSrv(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__getStandardDataNameListResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__getStandardDataNameListResponse::getStandardDataNameListReturn); +} + +void _WS1__getStandardDataNameListResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__getStandardDataNameListResponse::getStandardDataNameListReturn); +#endif +} + +int _WS1__getStandardDataNameListResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__getStandardDataNameListResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getStandardDataNameListResponse(struct soap *soap, const char *tag, int id, const _WS1__getStandardDataNameListResponse *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__getStandardDataNameListResponse), type)) + return soap->error; + soap_element_result(soap, "WS1:getStandardDataNameListReturn"); + if (soap_out_std__string(soap, "WS1:getStandardDataNameListReturn", -1, &a->_WS1__getStandardDataNameListResponse::getStandardDataNameListReturn, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__getStandardDataNameListResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__getStandardDataNameListResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__getStandardDataNameListResponse * SOAP_FMAC4 soap_in__WS1__getStandardDataNameListResponse(struct soap *soap, const char *tag, _WS1__getStandardDataNameListResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__getStandardDataNameListResponse*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__getStandardDataNameListResponse, sizeof(_WS1__getStandardDataNameListResponse), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__getStandardDataNameListResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__getStandardDataNameListResponse *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_getStandardDataNameListReturn1 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_getStandardDataNameListReturn1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:getStandardDataNameListReturn", &a->_WS1__getStandardDataNameListResponse::getStandardDataNameListReturn, "xsd:string")) + { soap_flag_getStandardDataNameListReturn1--; + continue; + } + } + soap_check_result(soap, "WS1:getStandardDataNameListReturn"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_getStandardDataNameListReturn1 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__getStandardDataNameListResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__getStandardDataNameListResponse, SOAP_TYPE__WS1__getStandardDataNameListResponse, sizeof(_WS1__getStandardDataNameListResponse), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__getStandardDataNameListResponse * SOAP_FMAC2 cross_instantiate__WS1__getStandardDataNameListResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__getStandardDataNameListResponse(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__getStandardDataNameListResponse *p; + size_t k = sizeof(_WS1__getStandardDataNameListResponse); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__getStandardDataNameListResponse, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__getStandardDataNameListResponse); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__getStandardDataNameListResponse, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__getStandardDataNameListResponse location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__getStandardDataNameListResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__getStandardDataNameListResponse(soap, tag ? tag : "WS1:getStandardDataNameListResponse", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__getStandardDataNameListResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__getStandardDataNameListResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__getStandardDataNameListResponse * SOAP_FMAC4 soap_get__WS1__getStandardDataNameListResponse(struct soap *soap, _WS1__getStandardDataNameListResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__getStandardDataNameListResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__getStandardDataNameList::soap_default(struct soap *soap) +{ + this->soap = soap; +} + +void _WS1__getStandardDataNameList::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF +#endif +} + +int _WS1__getStandardDataNameList::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__getStandardDataNameList(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getStandardDataNameList(struct soap *soap, const char *tag, int id, const _WS1__getStandardDataNameList *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__getStandardDataNameList), type)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__getStandardDataNameList::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__getStandardDataNameList(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__getStandardDataNameList * SOAP_FMAC4 soap_in__WS1__getStandardDataNameList(struct soap *soap, const char *tag, _WS1__getStandardDataNameList *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__getStandardDataNameList*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__getStandardDataNameList, sizeof(_WS1__getStandardDataNameList), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__getStandardDataNameList) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__getStandardDataNameList *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_WS1__getStandardDataNameList *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__getStandardDataNameList, SOAP_TYPE__WS1__getStandardDataNameList, sizeof(_WS1__getStandardDataNameList), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__getStandardDataNameList * SOAP_FMAC2 cross_instantiate__WS1__getStandardDataNameList(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__getStandardDataNameList(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__getStandardDataNameList *p; + size_t k = sizeof(_WS1__getStandardDataNameList); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__getStandardDataNameList, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__getStandardDataNameList); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__getStandardDataNameList, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__getStandardDataNameList location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__getStandardDataNameList::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__getStandardDataNameList(soap, tag ? tag : "WS1:getStandardDataNameList", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__getStandardDataNameList::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__getStandardDataNameList(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__getStandardDataNameList * SOAP_FMAC4 soap_get__WS1__getStandardDataNameList(struct soap *soap, _WS1__getStandardDataNameList *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__getStandardDataNameList(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__getStandardServiceListResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__getStandardServiceListResponse::getStandardServiceListReturn); +} + +void _WS1__getStandardServiceListResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__getStandardServiceListResponse::getStandardServiceListReturn); +#endif +} + +int _WS1__getStandardServiceListResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__getStandardServiceListResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getStandardServiceListResponse(struct soap *soap, const char *tag, int id, const _WS1__getStandardServiceListResponse *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__getStandardServiceListResponse), type)) + return soap->error; + soap_element_result(soap, "WS1:getStandardServiceListReturn"); + if (soap_out_std__string(soap, "WS1:getStandardServiceListReturn", -1, &a->_WS1__getStandardServiceListResponse::getStandardServiceListReturn, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__getStandardServiceListResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__getStandardServiceListResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__getStandardServiceListResponse * SOAP_FMAC4 soap_in__WS1__getStandardServiceListResponse(struct soap *soap, const char *tag, _WS1__getStandardServiceListResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__getStandardServiceListResponse*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__getStandardServiceListResponse, sizeof(_WS1__getStandardServiceListResponse), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__getStandardServiceListResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__getStandardServiceListResponse *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_getStandardServiceListReturn1 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_getStandardServiceListReturn1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:getStandardServiceListReturn", &a->_WS1__getStandardServiceListResponse::getStandardServiceListReturn, "xsd:string")) + { soap_flag_getStandardServiceListReturn1--; + continue; + } + } + soap_check_result(soap, "WS1:getStandardServiceListReturn"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_getStandardServiceListReturn1 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__getStandardServiceListResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__getStandardServiceListResponse, SOAP_TYPE__WS1__getStandardServiceListResponse, sizeof(_WS1__getStandardServiceListResponse), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__getStandardServiceListResponse * SOAP_FMAC2 cross_instantiate__WS1__getStandardServiceListResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__getStandardServiceListResponse(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__getStandardServiceListResponse *p; + size_t k = sizeof(_WS1__getStandardServiceListResponse); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__getStandardServiceListResponse, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__getStandardServiceListResponse); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__getStandardServiceListResponse, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__getStandardServiceListResponse location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__getStandardServiceListResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__getStandardServiceListResponse(soap, tag ? tag : "WS1:getStandardServiceListResponse", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__getStandardServiceListResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__getStandardServiceListResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__getStandardServiceListResponse * SOAP_FMAC4 soap_get__WS1__getStandardServiceListResponse(struct soap *soap, _WS1__getStandardServiceListResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__getStandardServiceListResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__getStandardServiceList::soap_default(struct soap *soap) +{ + this->soap = soap; +} + +void _WS1__getStandardServiceList::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF +#endif +} + +int _WS1__getStandardServiceList::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__getStandardServiceList(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getStandardServiceList(struct soap *soap, const char *tag, int id, const _WS1__getStandardServiceList *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__getStandardServiceList), type)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__getStandardServiceList::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__getStandardServiceList(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__getStandardServiceList * SOAP_FMAC4 soap_in__WS1__getStandardServiceList(struct soap *soap, const char *tag, _WS1__getStandardServiceList *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__getStandardServiceList*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__getStandardServiceList, sizeof(_WS1__getStandardServiceList), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__getStandardServiceList) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__getStandardServiceList *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_WS1__getStandardServiceList *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__getStandardServiceList, SOAP_TYPE__WS1__getStandardServiceList, sizeof(_WS1__getStandardServiceList), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__getStandardServiceList * SOAP_FMAC2 cross_instantiate__WS1__getStandardServiceList(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__getStandardServiceList(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__getStandardServiceList *p; + size_t k = sizeof(_WS1__getStandardServiceList); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__getStandardServiceList, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__getStandardServiceList); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__getStandardServiceList, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__getStandardServiceList location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__getStandardServiceList::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__getStandardServiceList(soap, tag ? tag : "WS1:getStandardServiceList", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__getStandardServiceList::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__getStandardServiceList(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__getStandardServiceList * SOAP_FMAC4 soap_get__WS1__getStandardServiceList(struct soap *soap, _WS1__getStandardServiceList *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__getStandardServiceList(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__fpInvokeResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__fpInvokeResponse::fpInvokeReturn); +} + +void _WS1__fpInvokeResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__fpInvokeResponse::fpInvokeReturn); +#endif +} + +int _WS1__fpInvokeResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__fpInvokeResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__fpInvokeResponse(struct soap *soap, const char *tag, int id, const _WS1__fpInvokeResponse *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__fpInvokeResponse), type)) + return soap->error; + soap_element_result(soap, "WS1:fpInvokeReturn"); + if (soap_out_std__string(soap, "WS1:fpInvokeReturn", -1, &a->_WS1__fpInvokeResponse::fpInvokeReturn, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__fpInvokeResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__fpInvokeResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__fpInvokeResponse * SOAP_FMAC4 soap_in__WS1__fpInvokeResponse(struct soap *soap, const char *tag, _WS1__fpInvokeResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__fpInvokeResponse*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__fpInvokeResponse, sizeof(_WS1__fpInvokeResponse), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__fpInvokeResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__fpInvokeResponse *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_fpInvokeReturn1 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_fpInvokeReturn1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:fpInvokeReturn", &a->_WS1__fpInvokeResponse::fpInvokeReturn, "xsd:string")) + { soap_flag_fpInvokeReturn1--; + continue; + } + } + soap_check_result(soap, "WS1:fpInvokeReturn"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_fpInvokeReturn1 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__fpInvokeResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__fpInvokeResponse, SOAP_TYPE__WS1__fpInvokeResponse, sizeof(_WS1__fpInvokeResponse), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__fpInvokeResponse * SOAP_FMAC2 cross_instantiate__WS1__fpInvokeResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__fpInvokeResponse(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__fpInvokeResponse *p; + size_t k = sizeof(_WS1__fpInvokeResponse); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__fpInvokeResponse, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__fpInvokeResponse); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__fpInvokeResponse, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__fpInvokeResponse location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__fpInvokeResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__fpInvokeResponse(soap, tag ? tag : "WS1:fpInvokeResponse", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__fpInvokeResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__fpInvokeResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__fpInvokeResponse * SOAP_FMAC4 soap_get__WS1__fpInvokeResponse(struct soap *soap, _WS1__fpInvokeResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__fpInvokeResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__fpInvoke::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__fpInvoke::in0); +} + +void _WS1__fpInvoke::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__fpInvoke::in0); +#endif +} + +int _WS1__fpInvoke::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__fpInvoke(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__fpInvoke(struct soap *soap, const char *tag, int id, const _WS1__fpInvoke *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__fpInvoke), type)) + return soap->error; + if (soap_out_std__string(soap, "WS1:in0", -1, &a->_WS1__fpInvoke::in0, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__fpInvoke::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__fpInvoke(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__fpInvoke * SOAP_FMAC4 soap_in__WS1__fpInvoke(struct soap *soap, const char *tag, _WS1__fpInvoke *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__fpInvoke*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__fpInvoke, sizeof(_WS1__fpInvoke), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__fpInvoke) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__fpInvoke *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_in01 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_in01 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:in0", &a->_WS1__fpInvoke::in0, "xsd:string")) + { soap_flag_in01--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_in01 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__fpInvoke *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__fpInvoke, SOAP_TYPE__WS1__fpInvoke, sizeof(_WS1__fpInvoke), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__fpInvoke * SOAP_FMAC2 cross_instantiate__WS1__fpInvoke(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__fpInvoke(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__fpInvoke *p; + size_t k = sizeof(_WS1__fpInvoke); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__fpInvoke, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__fpInvoke); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__fpInvoke, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__fpInvoke location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__fpInvoke::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__fpInvoke(soap, tag ? tag : "WS1:fpInvoke", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__fpInvoke::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__fpInvoke(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__fpInvoke * SOAP_FMAC4 soap_get__WS1__fpInvoke(struct soap *soap, _WS1__fpInvoke *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__fpInvoke(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__getSrvResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__getSrvResponse::getSrvReturn); +} + +void _WS1__getSrvResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__getSrvResponse::getSrvReturn); +#endif +} + +int _WS1__getSrvResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__getSrvResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getSrvResponse(struct soap *soap, const char *tag, int id, const _WS1__getSrvResponse *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__getSrvResponse), type)) + return soap->error; + soap_element_result(soap, "WS1:getSrvReturn"); + if (soap_out_std__string(soap, "WS1:getSrvReturn", -1, &a->_WS1__getSrvResponse::getSrvReturn, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__getSrvResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__getSrvResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__getSrvResponse * SOAP_FMAC4 soap_in__WS1__getSrvResponse(struct soap *soap, const char *tag, _WS1__getSrvResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__getSrvResponse*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__getSrvResponse, sizeof(_WS1__getSrvResponse), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__getSrvResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__getSrvResponse *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_getSrvReturn1 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_getSrvReturn1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:getSrvReturn", &a->_WS1__getSrvResponse::getSrvReturn, "xsd:string")) + { soap_flag_getSrvReturn1--; + continue; + } + } + soap_check_result(soap, "WS1:getSrvReturn"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_getSrvReturn1 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__getSrvResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__getSrvResponse, SOAP_TYPE__WS1__getSrvResponse, sizeof(_WS1__getSrvResponse), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__getSrvResponse * SOAP_FMAC2 cross_instantiate__WS1__getSrvResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__getSrvResponse(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__getSrvResponse *p; + size_t k = sizeof(_WS1__getSrvResponse); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__getSrvResponse, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__getSrvResponse); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__getSrvResponse, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__getSrvResponse location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__getSrvResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__getSrvResponse(soap, tag ? tag : "WS1:getSrvResponse", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__getSrvResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__getSrvResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__getSrvResponse * SOAP_FMAC4 soap_get__WS1__getSrvResponse(struct soap *soap, _WS1__getSrvResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__getSrvResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__getSrv::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__getSrv::in0); +} + +void _WS1__getSrv::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__getSrv::in0); +#endif +} + +int _WS1__getSrv::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__getSrv(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getSrv(struct soap *soap, const char *tag, int id, const _WS1__getSrv *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__getSrv), type)) + return soap->error; + if (soap_out_std__string(soap, "WS1:in0", -1, &a->_WS1__getSrv::in0, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__getSrv::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__getSrv(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__getSrv * SOAP_FMAC4 soap_in__WS1__getSrv(struct soap *soap, const char *tag, _WS1__getSrv *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__getSrv*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__getSrv, sizeof(_WS1__getSrv), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__getSrv) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__getSrv *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_in01 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_in01 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:in0", &a->_WS1__getSrv::in0, "xsd:string")) + { soap_flag_in01--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_in01 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__getSrv *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__getSrv, SOAP_TYPE__WS1__getSrv, sizeof(_WS1__getSrv), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__getSrv * SOAP_FMAC2 cross_instantiate__WS1__getSrv(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__getSrv(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__getSrv *p; + size_t k = sizeof(_WS1__getSrv); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__getSrv, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__getSrv); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__getSrv, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__getSrv location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__getSrv::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__getSrv(soap, tag ? tag : "WS1:getSrv", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__getSrv::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__getSrv(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__getSrv * SOAP_FMAC4 soap_get__WS1__getSrv(struct soap *soap, _WS1__getSrv *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__getSrv(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__getProdResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__getProdResponse::getProdReturn); +} + +void _WS1__getProdResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__getProdResponse::getProdReturn); +#endif +} + +int _WS1__getProdResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__getProdResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getProdResponse(struct soap *soap, const char *tag, int id, const _WS1__getProdResponse *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__getProdResponse), type)) + return soap->error; + soap_element_result(soap, "WS1:getProdReturn"); + if (soap_out_std__string(soap, "WS1:getProdReturn", -1, &a->_WS1__getProdResponse::getProdReturn, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__getProdResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__getProdResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__getProdResponse * SOAP_FMAC4 soap_in__WS1__getProdResponse(struct soap *soap, const char *tag, _WS1__getProdResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__getProdResponse*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__getProdResponse, sizeof(_WS1__getProdResponse), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__getProdResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__getProdResponse *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_getProdReturn1 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_getProdReturn1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:getProdReturn", &a->_WS1__getProdResponse::getProdReturn, "xsd:string")) + { soap_flag_getProdReturn1--; + continue; + } + } + soap_check_result(soap, "WS1:getProdReturn"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_getProdReturn1 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__getProdResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__getProdResponse, SOAP_TYPE__WS1__getProdResponse, sizeof(_WS1__getProdResponse), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__getProdResponse * SOAP_FMAC2 cross_instantiate__WS1__getProdResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__getProdResponse(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__getProdResponse *p; + size_t k = sizeof(_WS1__getProdResponse); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__getProdResponse, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__getProdResponse); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__getProdResponse, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__getProdResponse location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__getProdResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__getProdResponse(soap, tag ? tag : "WS1:getProdResponse", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__getProdResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__getProdResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__getProdResponse * SOAP_FMAC4 soap_get__WS1__getProdResponse(struct soap *soap, _WS1__getProdResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__getProdResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__getProd::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__getProd::in0); +} + +void _WS1__getProd::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__getProd::in0); +#endif +} + +int _WS1__getProd::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__getProd(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getProd(struct soap *soap, const char *tag, int id, const _WS1__getProd *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__getProd), type)) + return soap->error; + if (soap_out_std__string(soap, "WS1:in0", -1, &a->_WS1__getProd::in0, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__getProd::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__getProd(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__getProd * SOAP_FMAC4 soap_in__WS1__getProd(struct soap *soap, const char *tag, _WS1__getProd *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__getProd*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__getProd, sizeof(_WS1__getProd), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__getProd) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__getProd *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_in01 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_in01 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:in0", &a->_WS1__getProd::in0, "xsd:string")) + { soap_flag_in01--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_in01 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__getProd *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__getProd, SOAP_TYPE__WS1__getProd, sizeof(_WS1__getProd), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__getProd * SOAP_FMAC2 cross_instantiate__WS1__getProd(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__getProd(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__getProd *p; + size_t k = sizeof(_WS1__getProd); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__getProd, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__getProd); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__getProd, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__getProd location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__getProd::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__getProd(soap, tag ? tag : "WS1:getProd", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__getProd::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__getProd(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__getProd * SOAP_FMAC4 soap_get__WS1__getProd(struct soap *soap, _WS1__getProd *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__getProd(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__invokeMdmResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__invokeMdmResponse::invokeMdmReturn); +} + +void _WS1__invokeMdmResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__invokeMdmResponse::invokeMdmReturn); +#endif +} + +int _WS1__invokeMdmResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__invokeMdmResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__invokeMdmResponse(struct soap *soap, const char *tag, int id, const _WS1__invokeMdmResponse *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__invokeMdmResponse), type)) + return soap->error; + soap_element_result(soap, "WS1:invokeMdmReturn"); + if (soap_out_std__string(soap, "WS1:invokeMdmReturn", -1, &a->_WS1__invokeMdmResponse::invokeMdmReturn, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__invokeMdmResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__invokeMdmResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__invokeMdmResponse * SOAP_FMAC4 soap_in__WS1__invokeMdmResponse(struct soap *soap, const char *tag, _WS1__invokeMdmResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__invokeMdmResponse*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__invokeMdmResponse, sizeof(_WS1__invokeMdmResponse), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__invokeMdmResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__invokeMdmResponse *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_invokeMdmReturn1 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_invokeMdmReturn1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:invokeMdmReturn", &a->_WS1__invokeMdmResponse::invokeMdmReturn, "xsd:string")) + { soap_flag_invokeMdmReturn1--; + continue; + } + } + soap_check_result(soap, "WS1:invokeMdmReturn"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_invokeMdmReturn1 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__invokeMdmResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__invokeMdmResponse, SOAP_TYPE__WS1__invokeMdmResponse, sizeof(_WS1__invokeMdmResponse), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__invokeMdmResponse * SOAP_FMAC2 cross_instantiate__WS1__invokeMdmResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__invokeMdmResponse(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__invokeMdmResponse *p; + size_t k = sizeof(_WS1__invokeMdmResponse); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__invokeMdmResponse, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__invokeMdmResponse); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__invokeMdmResponse, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__invokeMdmResponse location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__invokeMdmResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__invokeMdmResponse(soap, tag ? tag : "WS1:invokeMdmResponse", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__invokeMdmResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__invokeMdmResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__invokeMdmResponse * SOAP_FMAC4 soap_get__WS1__invokeMdmResponse(struct soap *soap, _WS1__invokeMdmResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__invokeMdmResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__invokeMdm::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__invokeMdm::in0); +} + +void _WS1__invokeMdm::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__invokeMdm::in0); +#endif +} + +int _WS1__invokeMdm::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__invokeMdm(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__invokeMdm(struct soap *soap, const char *tag, int id, const _WS1__invokeMdm *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__invokeMdm), type)) + return soap->error; + if (soap_out_std__string(soap, "WS1:in0", -1, &a->_WS1__invokeMdm::in0, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__invokeMdm::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__invokeMdm(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__invokeMdm * SOAP_FMAC4 soap_in__WS1__invokeMdm(struct soap *soap, const char *tag, _WS1__invokeMdm *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__invokeMdm*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__invokeMdm, sizeof(_WS1__invokeMdm), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__invokeMdm) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__invokeMdm *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_in01 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_in01 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:in0", &a->_WS1__invokeMdm::in0, "xsd:string")) + { soap_flag_in01--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_in01 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__invokeMdm *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__invokeMdm, SOAP_TYPE__WS1__invokeMdm, sizeof(_WS1__invokeMdm), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__invokeMdm * SOAP_FMAC2 cross_instantiate__WS1__invokeMdm(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__invokeMdm(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__invokeMdm *p; + size_t k = sizeof(_WS1__invokeMdm); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__invokeMdm, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__invokeMdm); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__invokeMdm, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__invokeMdm location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__invokeMdm::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__invokeMdm(soap, tag ? tag : "WS1:invokeMdm", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__invokeMdm::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__invokeMdm(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__invokeMdm * SOAP_FMAC4 soap_get__WS1__invokeMdm(struct soap *soap, _WS1__invokeMdm *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__invokeMdm(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__invokeUnionResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__invokeUnionResponse::invokeUnionReturn); +} + +void _WS1__invokeUnionResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__invokeUnionResponse::invokeUnionReturn); +#endif +} + +int _WS1__invokeUnionResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__invokeUnionResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__invokeUnionResponse(struct soap *soap, const char *tag, int id, const _WS1__invokeUnionResponse *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__invokeUnionResponse), type)) + return soap->error; + soap_element_result(soap, "WS1:invokeUnionReturn"); + if (soap_out_std__string(soap, "WS1:invokeUnionReturn", -1, &a->_WS1__invokeUnionResponse::invokeUnionReturn, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__invokeUnionResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__invokeUnionResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__invokeUnionResponse * SOAP_FMAC4 soap_in__WS1__invokeUnionResponse(struct soap *soap, const char *tag, _WS1__invokeUnionResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__invokeUnionResponse*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__invokeUnionResponse, sizeof(_WS1__invokeUnionResponse), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__invokeUnionResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__invokeUnionResponse *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_invokeUnionReturn1 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_invokeUnionReturn1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:invokeUnionReturn", &a->_WS1__invokeUnionResponse::invokeUnionReturn, "xsd:string")) + { soap_flag_invokeUnionReturn1--; + continue; + } + } + soap_check_result(soap, "WS1:invokeUnionReturn"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_invokeUnionReturn1 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__invokeUnionResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__invokeUnionResponse, SOAP_TYPE__WS1__invokeUnionResponse, sizeof(_WS1__invokeUnionResponse), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__invokeUnionResponse * SOAP_FMAC2 cross_instantiate__WS1__invokeUnionResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__invokeUnionResponse(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__invokeUnionResponse *p; + size_t k = sizeof(_WS1__invokeUnionResponse); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__invokeUnionResponse, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__invokeUnionResponse); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__invokeUnionResponse, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__invokeUnionResponse location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__invokeUnionResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__invokeUnionResponse(soap, tag ? tag : "WS1:invokeUnionResponse", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__invokeUnionResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__invokeUnionResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__invokeUnionResponse * SOAP_FMAC4 soap_get__WS1__invokeUnionResponse(struct soap *soap, _WS1__invokeUnionResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__invokeUnionResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__invokeUnion::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__invokeUnion::in0); + soap_default_std__string(soap, &this->_WS1__invokeUnion::in1); +} + +void _WS1__invokeUnion::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__invokeUnion::in0); + soap_serialize_std__string(soap, &this->_WS1__invokeUnion::in1); +#endif +} + +int _WS1__invokeUnion::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__invokeUnion(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__invokeUnion(struct soap *soap, const char *tag, int id, const _WS1__invokeUnion *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__invokeUnion), type)) + return soap->error; + if (soap_out_std__string(soap, "WS1:in0", -1, &a->_WS1__invokeUnion::in0, "")) + return soap->error; + if (soap_out_std__string(soap, "WS1:in1", -1, &a->_WS1__invokeUnion::in1, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__invokeUnion::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__invokeUnion(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__invokeUnion * SOAP_FMAC4 soap_in__WS1__invokeUnion(struct soap *soap, const char *tag, _WS1__invokeUnion *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__invokeUnion*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__invokeUnion, sizeof(_WS1__invokeUnion), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__invokeUnion) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__invokeUnion *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_in01 = 1; + size_t soap_flag_in11 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_in01 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:in0", &a->_WS1__invokeUnion::in0, "xsd:string")) + { soap_flag_in01--; + continue; + } + } + if (soap_flag_in11 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:in1", &a->_WS1__invokeUnion::in1, "xsd:string")) + { soap_flag_in11--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_in01 > 0 || soap_flag_in11 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__invokeUnion *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__invokeUnion, SOAP_TYPE__WS1__invokeUnion, sizeof(_WS1__invokeUnion), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__invokeUnion * SOAP_FMAC2 cross_instantiate__WS1__invokeUnion(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__invokeUnion(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__invokeUnion *p; + size_t k = sizeof(_WS1__invokeUnion); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__invokeUnion, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__invokeUnion); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__invokeUnion, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__invokeUnion location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__invokeUnion::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__invokeUnion(soap, tag ? tag : "WS1:invokeUnion", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__invokeUnion::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__invokeUnion(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__invokeUnion * SOAP_FMAC4 soap_get__WS1__invokeUnion(struct soap *soap, _WS1__invokeUnion *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__invokeUnion(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__regProdAPResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__regProdAPResponse::regProdAPReturn); +} + +void _WS1__regProdAPResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__regProdAPResponse::regProdAPReturn); +#endif +} + +int _WS1__regProdAPResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__regProdAPResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__regProdAPResponse(struct soap *soap, const char *tag, int id, const _WS1__regProdAPResponse *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__regProdAPResponse), type)) + return soap->error; + soap_element_result(soap, "WS1:regProdAPReturn"); + if (soap_out_std__string(soap, "WS1:regProdAPReturn", -1, &a->_WS1__regProdAPResponse::regProdAPReturn, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__regProdAPResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__regProdAPResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__regProdAPResponse * SOAP_FMAC4 soap_in__WS1__regProdAPResponse(struct soap *soap, const char *tag, _WS1__regProdAPResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__regProdAPResponse*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__regProdAPResponse, sizeof(_WS1__regProdAPResponse), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__regProdAPResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__regProdAPResponse *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_regProdAPReturn1 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_regProdAPReturn1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:regProdAPReturn", &a->_WS1__regProdAPResponse::regProdAPReturn, "xsd:string")) + { soap_flag_regProdAPReturn1--; + continue; + } + } + soap_check_result(soap, "WS1:regProdAPReturn"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_regProdAPReturn1 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__regProdAPResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__regProdAPResponse, SOAP_TYPE__WS1__regProdAPResponse, sizeof(_WS1__regProdAPResponse), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__regProdAPResponse * SOAP_FMAC2 cross_instantiate__WS1__regProdAPResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__regProdAPResponse(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__regProdAPResponse *p; + size_t k = sizeof(_WS1__regProdAPResponse); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__regProdAPResponse, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__regProdAPResponse); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__regProdAPResponse, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__regProdAPResponse location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__regProdAPResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__regProdAPResponse(soap, tag ? tag : "WS1:regProdAPResponse", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__regProdAPResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__regProdAPResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__regProdAPResponse * SOAP_FMAC4 soap_get__WS1__regProdAPResponse(struct soap *soap, _WS1__regProdAPResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__regProdAPResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__regProdAP::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__regProdAP::in0); +} + +void _WS1__regProdAP::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__regProdAP::in0); +#endif +} + +int _WS1__regProdAP::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__regProdAP(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__regProdAP(struct soap *soap, const char *tag, int id, const _WS1__regProdAP *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__regProdAP), type)) + return soap->error; + if (soap_out_std__string(soap, "WS1:in0", -1, &a->_WS1__regProdAP::in0, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__regProdAP::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__regProdAP(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__regProdAP * SOAP_FMAC4 soap_in__WS1__regProdAP(struct soap *soap, const char *tag, _WS1__regProdAP *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__regProdAP*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__regProdAP, sizeof(_WS1__regProdAP), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__regProdAP) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__regProdAP *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_in01 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_in01 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:in0", &a->_WS1__regProdAP::in0, "xsd:string")) + { soap_flag_in01--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_in01 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__regProdAP *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__regProdAP, SOAP_TYPE__WS1__regProdAP, sizeof(_WS1__regProdAP), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__regProdAP * SOAP_FMAC2 cross_instantiate__WS1__regProdAP(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__regProdAP(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__regProdAP *p; + size_t k = sizeof(_WS1__regProdAP); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__regProdAP, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__regProdAP); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__regProdAP, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__regProdAP location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__regProdAP::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__regProdAP(soap, tag ? tag : "WS1:regProdAP", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__regProdAP::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__regProdAP(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__regProdAP * SOAP_FMAC4 soap_get__WS1__regProdAP(struct soap *soap, _WS1__regProdAP *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__regProdAP(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__getProdListResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__getProdListResponse::getProdListReturn); +} + +void _WS1__getProdListResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__getProdListResponse::getProdListReturn); +#endif +} + +int _WS1__getProdListResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__getProdListResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getProdListResponse(struct soap *soap, const char *tag, int id, const _WS1__getProdListResponse *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__getProdListResponse), type)) + return soap->error; + soap_element_result(soap, "WS1:getProdListReturn"); + if (soap_out_std__string(soap, "WS1:getProdListReturn", -1, &a->_WS1__getProdListResponse::getProdListReturn, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__getProdListResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__getProdListResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__getProdListResponse * SOAP_FMAC4 soap_in__WS1__getProdListResponse(struct soap *soap, const char *tag, _WS1__getProdListResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__getProdListResponse*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__getProdListResponse, sizeof(_WS1__getProdListResponse), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__getProdListResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__getProdListResponse *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_getProdListReturn1 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_getProdListReturn1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:getProdListReturn", &a->_WS1__getProdListResponse::getProdListReturn, "xsd:string")) + { soap_flag_getProdListReturn1--; + continue; + } + } + soap_check_result(soap, "WS1:getProdListReturn"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_getProdListReturn1 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__getProdListResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__getProdListResponse, SOAP_TYPE__WS1__getProdListResponse, sizeof(_WS1__getProdListResponse), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__getProdListResponse * SOAP_FMAC2 cross_instantiate__WS1__getProdListResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__getProdListResponse(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__getProdListResponse *p; + size_t k = sizeof(_WS1__getProdListResponse); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__getProdListResponse, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__getProdListResponse); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__getProdListResponse, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__getProdListResponse location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__getProdListResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__getProdListResponse(soap, tag ? tag : "WS1:getProdListResponse", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__getProdListResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__getProdListResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__getProdListResponse * SOAP_FMAC4 soap_get__WS1__getProdListResponse(struct soap *soap, _WS1__getProdListResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__getProdListResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__getProdList::soap_default(struct soap *soap) +{ + this->soap = soap; +} + +void _WS1__getProdList::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF +#endif +} + +int _WS1__getProdList::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__getProdList(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getProdList(struct soap *soap, const char *tag, int id, const _WS1__getProdList *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__getProdList), type)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__getProdList::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__getProdList(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__getProdList * SOAP_FMAC4 soap_in__WS1__getProdList(struct soap *soap, const char *tag, _WS1__getProdList *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__getProdList*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__getProdList, sizeof(_WS1__getProdList), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__getProdList) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__getProdList *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_WS1__getProdList *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__getProdList, SOAP_TYPE__WS1__getProdList, sizeof(_WS1__getProdList), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__getProdList * SOAP_FMAC2 cross_instantiate__WS1__getProdList(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__getProdList(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__getProdList *p; + size_t k = sizeof(_WS1__getProdList); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__getProdList, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__getProdList); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__getProdList, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__getProdList location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__getProdList::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__getProdList(soap, tag ? tag : "WS1:getProdList", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__getProdList::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__getProdList(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__getProdList * SOAP_FMAC4 soap_get__WS1__getProdList(struct soap *soap, _WS1__getProdList *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__getProdList(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__getParamListResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__getParamListResponse::getParamListReturn); +} + +void _WS1__getParamListResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__getParamListResponse::getParamListReturn); +#endif +} + +int _WS1__getParamListResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__getParamListResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getParamListResponse(struct soap *soap, const char *tag, int id, const _WS1__getParamListResponse *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__getParamListResponse), type)) + return soap->error; + soap_element_result(soap, "WS1:getParamListReturn"); + if (soap_out_std__string(soap, "WS1:getParamListReturn", -1, &a->_WS1__getParamListResponse::getParamListReturn, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__getParamListResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__getParamListResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__getParamListResponse * SOAP_FMAC4 soap_in__WS1__getParamListResponse(struct soap *soap, const char *tag, _WS1__getParamListResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__getParamListResponse*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__getParamListResponse, sizeof(_WS1__getParamListResponse), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__getParamListResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__getParamListResponse *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_getParamListReturn1 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_getParamListReturn1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:getParamListReturn", &a->_WS1__getParamListResponse::getParamListReturn, "xsd:string")) + { soap_flag_getParamListReturn1--; + continue; + } + } + soap_check_result(soap, "WS1:getParamListReturn"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_getParamListReturn1 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__getParamListResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__getParamListResponse, SOAP_TYPE__WS1__getParamListResponse, sizeof(_WS1__getParamListResponse), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__getParamListResponse * SOAP_FMAC2 cross_instantiate__WS1__getParamListResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__getParamListResponse(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__getParamListResponse *p; + size_t k = sizeof(_WS1__getParamListResponse); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__getParamListResponse, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__getParamListResponse); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__getParamListResponse, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__getParamListResponse location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__getParamListResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__getParamListResponse(soap, tag ? tag : "WS1:getParamListResponse", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__getParamListResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__getParamListResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__getParamListResponse * SOAP_FMAC4 soap_get__WS1__getParamListResponse(struct soap *soap, _WS1__getParamListResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__getParamListResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__getParamList::soap_default(struct soap *soap) +{ + this->soap = soap; +} + +void _WS1__getParamList::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF +#endif +} + +int _WS1__getParamList::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__getParamList(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getParamList(struct soap *soap, const char *tag, int id, const _WS1__getParamList *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__getParamList), type)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__getParamList::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__getParamList(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__getParamList * SOAP_FMAC4 soap_in__WS1__getParamList(struct soap *soap, const char *tag, _WS1__getParamList *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__getParamList*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__getParamList, sizeof(_WS1__getParamList), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__getParamList) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__getParamList *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_WS1__getParamList *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__getParamList, SOAP_TYPE__WS1__getParamList, sizeof(_WS1__getParamList), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__getParamList * SOAP_FMAC2 cross_instantiate__WS1__getParamList(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__getParamList(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__getParamList *p; + size_t k = sizeof(_WS1__getParamList); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__getParamList, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__getParamList); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__getParamList, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__getParamList location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__getParamList::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__getParamList(soap, tag ? tag : "WS1:getParamList", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__getParamList::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__getParamList(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__getParamList * SOAP_FMAC4 soap_get__WS1__getParamList(struct soap *soap, _WS1__getParamList *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__getParamList(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__getEtlJobListResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__getEtlJobListResponse::getEtlJobListReturn); +} + +void _WS1__getEtlJobListResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__getEtlJobListResponse::getEtlJobListReturn); +#endif +} + +int _WS1__getEtlJobListResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__getEtlJobListResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getEtlJobListResponse(struct soap *soap, const char *tag, int id, const _WS1__getEtlJobListResponse *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__getEtlJobListResponse), type)) + return soap->error; + soap_element_result(soap, "WS1:getEtlJobListReturn"); + if (soap_out_std__string(soap, "WS1:getEtlJobListReturn", -1, &a->_WS1__getEtlJobListResponse::getEtlJobListReturn, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__getEtlJobListResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__getEtlJobListResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__getEtlJobListResponse * SOAP_FMAC4 soap_in__WS1__getEtlJobListResponse(struct soap *soap, const char *tag, _WS1__getEtlJobListResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__getEtlJobListResponse*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__getEtlJobListResponse, sizeof(_WS1__getEtlJobListResponse), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__getEtlJobListResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__getEtlJobListResponse *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_getEtlJobListReturn1 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_getEtlJobListReturn1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:getEtlJobListReturn", &a->_WS1__getEtlJobListResponse::getEtlJobListReturn, "xsd:string")) + { soap_flag_getEtlJobListReturn1--; + continue; + } + } + soap_check_result(soap, "WS1:getEtlJobListReturn"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_getEtlJobListReturn1 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__getEtlJobListResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__getEtlJobListResponse, SOAP_TYPE__WS1__getEtlJobListResponse, sizeof(_WS1__getEtlJobListResponse), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__getEtlJobListResponse * SOAP_FMAC2 cross_instantiate__WS1__getEtlJobListResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__getEtlJobListResponse(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__getEtlJobListResponse *p; + size_t k = sizeof(_WS1__getEtlJobListResponse); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__getEtlJobListResponse, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__getEtlJobListResponse); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__getEtlJobListResponse, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__getEtlJobListResponse location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__getEtlJobListResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__getEtlJobListResponse(soap, tag ? tag : "WS1:getEtlJobListResponse", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__getEtlJobListResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__getEtlJobListResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__getEtlJobListResponse * SOAP_FMAC4 soap_get__WS1__getEtlJobListResponse(struct soap *soap, _WS1__getEtlJobListResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__getEtlJobListResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__getEtlJobList::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__getEtlJobList::in0); +} + +void _WS1__getEtlJobList::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__getEtlJobList::in0); +#endif +} + +int _WS1__getEtlJobList::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__getEtlJobList(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getEtlJobList(struct soap *soap, const char *tag, int id, const _WS1__getEtlJobList *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__getEtlJobList), type)) + return soap->error; + if (soap_out_std__string(soap, "WS1:in0", -1, &a->_WS1__getEtlJobList::in0, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__getEtlJobList::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__getEtlJobList(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__getEtlJobList * SOAP_FMAC4 soap_in__WS1__getEtlJobList(struct soap *soap, const char *tag, _WS1__getEtlJobList *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__getEtlJobList*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__getEtlJobList, sizeof(_WS1__getEtlJobList), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__getEtlJobList) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__getEtlJobList *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_in01 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_in01 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:in0", &a->_WS1__getEtlJobList::in0, "xsd:string")) + { soap_flag_in01--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_in01 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__getEtlJobList *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__getEtlJobList, SOAP_TYPE__WS1__getEtlJobList, sizeof(_WS1__getEtlJobList), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__getEtlJobList * SOAP_FMAC2 cross_instantiate__WS1__getEtlJobList(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__getEtlJobList(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__getEtlJobList *p; + size_t k = sizeof(_WS1__getEtlJobList); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__getEtlJobList, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__getEtlJobList); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__getEtlJobList, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__getEtlJobList location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__getEtlJobList::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__getEtlJobList(soap, tag ? tag : "WS1:getEtlJobList", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__getEtlJobList::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__getEtlJobList(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__getEtlJobList * SOAP_FMAC4 soap_get__WS1__getEtlJobList(struct soap *soap, _WS1__getEtlJobList *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__getEtlJobList(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__invokeEtlResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__invokeEtlResponse::invokeEtlReturn); +} + +void _WS1__invokeEtlResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__invokeEtlResponse::invokeEtlReturn); +#endif +} + +int _WS1__invokeEtlResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__invokeEtlResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__invokeEtlResponse(struct soap *soap, const char *tag, int id, const _WS1__invokeEtlResponse *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__invokeEtlResponse), type)) + return soap->error; + soap_element_result(soap, "WS1:invokeEtlReturn"); + if (soap_out_std__string(soap, "WS1:invokeEtlReturn", -1, &a->_WS1__invokeEtlResponse::invokeEtlReturn, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__invokeEtlResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__invokeEtlResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__invokeEtlResponse * SOAP_FMAC4 soap_in__WS1__invokeEtlResponse(struct soap *soap, const char *tag, _WS1__invokeEtlResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__invokeEtlResponse*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__invokeEtlResponse, sizeof(_WS1__invokeEtlResponse), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__invokeEtlResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__invokeEtlResponse *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_invokeEtlReturn1 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_invokeEtlReturn1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:invokeEtlReturn", &a->_WS1__invokeEtlResponse::invokeEtlReturn, "xsd:string")) + { soap_flag_invokeEtlReturn1--; + continue; + } + } + soap_check_result(soap, "WS1:invokeEtlReturn"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_invokeEtlReturn1 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__invokeEtlResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__invokeEtlResponse, SOAP_TYPE__WS1__invokeEtlResponse, sizeof(_WS1__invokeEtlResponse), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__invokeEtlResponse * SOAP_FMAC2 cross_instantiate__WS1__invokeEtlResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__invokeEtlResponse(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__invokeEtlResponse *p; + size_t k = sizeof(_WS1__invokeEtlResponse); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__invokeEtlResponse, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__invokeEtlResponse); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__invokeEtlResponse, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__invokeEtlResponse location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__invokeEtlResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__invokeEtlResponse(soap, tag ? tag : "WS1:invokeEtlResponse", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__invokeEtlResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__invokeEtlResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__invokeEtlResponse * SOAP_FMAC4 soap_get__WS1__invokeEtlResponse(struct soap *soap, _WS1__invokeEtlResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__invokeEtlResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void _WS1__invokeEtl::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->_WS1__invokeEtl::in0); +} + +void _WS1__invokeEtl::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_std__string(soap, &this->_WS1__invokeEtl::in0); +#endif +} + +int _WS1__invokeEtl::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__WS1__invokeEtl(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__invokeEtl(struct soap *soap, const char *tag, int id, const _WS1__invokeEtl *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE__WS1__invokeEtl), type)) + return soap->error; + if (soap_out_std__string(soap, "WS1:in0", -1, &a->_WS1__invokeEtl::in0, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *_WS1__invokeEtl::soap_in(struct soap *soap, const char *tag, const char *type) +{ + return soap_in__WS1__invokeEtl(soap, tag, this, type); +} + +SOAP_FMAC3 _WS1__invokeEtl * SOAP_FMAC4 soap_in__WS1__invokeEtl(struct soap *soap, const char *tag, _WS1__invokeEtl *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_WS1__invokeEtl*)soap_id_enter(soap, soap->id, a, SOAP_TYPE__WS1__invokeEtl, sizeof(_WS1__invokeEtl), soap->type, soap->arrayType, cross_instantiate, cross_fbase); + if (!a) + return NULL; + if (soap->alloced && soap->alloced != SOAP_TYPE__WS1__invokeEtl) + { soap_revert(soap); + *soap->id = '\0'; + return (_WS1__invokeEtl *)a->soap_in(soap, tag, type); + } + if (soap->alloced) + a->soap_default(soap); + size_t soap_flag_in01 = 1; + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_in01 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_std__string(soap, "WS1:in0", &a->_WS1__invokeEtl::in0, "xsd:string")) + { soap_flag_in01--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_in01 > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + } + else if ((soap->mode & SOAP_XML_STRICT) && *soap->href != '#') + { soap->error = SOAP_OCCURS; + return NULL; + } + else + { a = (_WS1__invokeEtl *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__WS1__invokeEtl, SOAP_TYPE__WS1__invokeEtl, sizeof(_WS1__invokeEtl), 0, cross_finsert, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 _WS1__invokeEtl * SOAP_FMAC2 cross_instantiate__WS1__invokeEtl(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate__WS1__invokeEtl(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + _WS1__invokeEtl *p; + size_t k = sizeof(_WS1__invokeEtl); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE__WS1__invokeEtl, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, _WS1__invokeEtl); + if (p) + p->soap = soap; + } + else + { p = SOAP_NEW_ARRAY(soap, _WS1__invokeEtl, n); + k *= n; + if (p) + for (int i = 0; i < n; i++) + p[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated _WS1__invokeEtl location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +int _WS1__invokeEtl::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + if (soap_out__WS1__invokeEtl(soap, tag ? tag : "WS1:invokeEtl", -2, this, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_WS1__invokeEtl::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__WS1__invokeEtl(soap, this, tag, type); +} + +SOAP_FMAC3 _WS1__invokeEtl * SOAP_FMAC4 soap_get__WS1__invokeEtl(struct soap *soap, _WS1__invokeEtl *p, const char *tag, const char *type) +{ + if ((p = soap_in__WS1__invokeEtl(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default__QName(soap, &a->faultcode); + soap_default_string(soap, &a->faultstring); + soap_default_string(soap, &a->faultactor); + a->detail = NULL; + a->SOAP_ENV__Code = NULL; + a->SOAP_ENV__Reason = NULL; + soap_default_string(soap, &a->SOAP_ENV__Node); + soap_default_string(soap, &a->SOAP_ENV__Role); + a->SOAP_ENV__Detail = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap *soap, const struct SOAP_ENV__Fault *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize__QName(soap, (char*const*)&a->faultcode); + soap_serialize_string(soap, (char*const*)&a->faultstring); + soap_serialize_string(soap, (char*const*)&a->faultactor); + soap_serialize_PointerToSOAP_ENV__Detail(soap, &a->detail); + soap_serialize_PointerToSOAP_ENV__Code(soap, &a->SOAP_ENV__Code); + soap_serialize_PointerToSOAP_ENV__Reason(soap, &a->SOAP_ENV__Reason); + soap_serialize_string(soap, (char*const*)&a->SOAP_ENV__Node); + soap_serialize_string(soap, (char*const*)&a->SOAP_ENV__Role); + soap_serialize_PointerToSOAP_ENV__Detail(soap, &a->SOAP_ENV__Detail); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Fault *a, const char *type) +{ + const char *soap_tmp_faultcode; + soap_tmp_faultcode = soap_QName2s(soap, a->faultcode); + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_SOAP_ENV__Fault), type)) + return soap->error; + if (soap_out__QName(soap, "faultcode", -1, (char*const*)(void*)&soap_tmp_faultcode, "")) + return soap->error; + if (soap_out_string(soap, "faultstring", -1, (char*const*)&a->faultstring, "")) + return soap->error; + if (soap_out_string(soap, "faultactor", -1, (char*const*)&a->faultactor, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Detail(soap, "detail", -1, &a->detail, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Code", -1, &a->SOAP_ENV__Code, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Reason(soap, "SOAP-ENV:Reason", -1, &a->SOAP_ENV__Reason, "")) + return soap->error; + if (soap_out_string(soap, "SOAP-ENV:Node", -1, (char*const*)&a->SOAP_ENV__Node, "")) + return soap->error; + if (soap_out_string(soap, "SOAP-ENV:Role", -1, (char*const*)&a->SOAP_ENV__Role, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Detail(soap, "SOAP-ENV:Detail", -1, &a->SOAP_ENV__Detail, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap *soap, const char *tag, struct SOAP_ENV__Fault *a, const char *type) +{ + size_t soap_flag_faultcode = 1; + size_t soap_flag_faultstring = 1; + size_t soap_flag_faultactor = 1; + size_t soap_flag_detail = 1; + size_t soap_flag_SOAP_ENV__Code = 1; + size_t soap_flag_SOAP_ENV__Reason = 1; + size_t soap_flag_SOAP_ENV__Node = 1; + size_t soap_flag_SOAP_ENV__Role = 1; + size_t soap_flag_SOAP_ENV__Detail = 1; + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + (void)type; /* appease -Wall -Werror */ + a = (struct SOAP_ENV__Fault*)soap_id_enter(soap, soap->id, a, SOAP_TYPE_SOAP_ENV__Fault, sizeof(struct SOAP_ENV__Fault), NULL, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Fault(soap, a); + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_faultcode && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in__QName(soap, "faultcode", (char**)&a->faultcode, "xsd:QName")) + { soap_flag_faultcode--; + continue; + } + } + if (soap_flag_faultstring && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_string(soap, "faultstring", (char**)&a->faultstring, "xsd:string")) + { soap_flag_faultstring--; + continue; + } + } + if (soap_flag_faultactor && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_string(soap, "faultactor", (char**)&a->faultactor, "xsd:string")) + { soap_flag_faultactor--; + continue; + } + } + if (soap_flag_detail && soap->error == SOAP_TAG_MISMATCH) + { if (soap_in_PointerToSOAP_ENV__Detail(soap, "detail", &a->detail, "")) + { soap_flag_detail--; + continue; + } + } + if (soap_flag_SOAP_ENV__Code && soap->error == SOAP_TAG_MISMATCH) + { if (soap_in_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Code", &a->SOAP_ENV__Code, "")) + { soap_flag_SOAP_ENV__Code--; + continue; + } + } + if (soap_flag_SOAP_ENV__Reason && soap->error == SOAP_TAG_MISMATCH) + { if (soap_in_PointerToSOAP_ENV__Reason(soap, "SOAP-ENV:Reason", &a->SOAP_ENV__Reason, "")) + { soap_flag_SOAP_ENV__Reason--; + continue; + } + } + if (soap_flag_SOAP_ENV__Node && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_string(soap, "SOAP-ENV:Node", (char**)&a->SOAP_ENV__Node, "xsd:string")) + { soap_flag_SOAP_ENV__Node--; + continue; + } + } + if (soap_flag_SOAP_ENV__Role && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_string(soap, "SOAP-ENV:Role", (char**)&a->SOAP_ENV__Role, "xsd:string")) + { soap_flag_SOAP_ENV__Role--; + continue; + } + } + if (soap_flag_SOAP_ENV__Detail && soap->error == SOAP_TAG_MISMATCH) + { if (soap_in_PointerToSOAP_ENV__Detail(soap, "SOAP-ENV:Detail", &a->SOAP_ENV__Detail, "")) + { soap_flag_SOAP_ENV__Detail--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Fault *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_SOAP_ENV__Fault, SOAP_TYPE_SOAP_ENV__Fault, sizeof(struct SOAP_ENV__Fault), 0, cross_finsert, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 cross_instantiate_SOAP_ENV__Fault(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate_SOAP_ENV__Fault(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + struct SOAP_ENV__Fault *p; + size_t k = sizeof(struct SOAP_ENV__Fault); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE_SOAP_ENV__Fault, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, struct SOAP_ENV__Fault); + } + else + { p = SOAP_NEW_ARRAY(soap, struct SOAP_ENV__Fault, n); + k *= n; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct SOAP_ENV__Fault location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap *soap, const struct SOAP_ENV__Fault *a, const char *tag, const char *type) +{ + if (soap_out_SOAP_ENV__Fault(soap, tag ? tag : "SOAP-ENV:Fault", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Fault(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_string(soap, &a->SOAP_ENV__Text); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap *soap, const struct SOAP_ENV__Reason *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_string(soap, (char*const*)&a->SOAP_ENV__Text); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Reason *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_SOAP_ENV__Reason), type)) + return soap->error; + if (soap->lang) + soap_set_attr(soap, "xml:lang", soap->lang, 1); + if (soap_out_string(soap, "SOAP-ENV:Text", -1, (char*const*)&a->SOAP_ENV__Text, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap *soap, const char *tag, struct SOAP_ENV__Reason *a, const char *type) +{ + size_t soap_flag_SOAP_ENV__Text = 1; + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + (void)type; /* appease -Wall -Werror */ + a = (struct SOAP_ENV__Reason*)soap_id_enter(soap, soap->id, a, SOAP_TYPE_SOAP_ENV__Reason, sizeof(struct SOAP_ENV__Reason), NULL, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Reason(soap, a); + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_SOAP_ENV__Text && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in_string(soap, "SOAP-ENV:Text", (char**)&a->SOAP_ENV__Text, "xsd:string")) + { soap_flag_SOAP_ENV__Text--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Reason *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_SOAP_ENV__Reason, SOAP_TYPE_SOAP_ENV__Reason, sizeof(struct SOAP_ENV__Reason), 0, cross_finsert, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 cross_instantiate_SOAP_ENV__Reason(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate_SOAP_ENV__Reason(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + struct SOAP_ENV__Reason *p; + size_t k = sizeof(struct SOAP_ENV__Reason); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE_SOAP_ENV__Reason, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, struct SOAP_ENV__Reason); + } + else + { p = SOAP_NEW_ARRAY(soap, struct SOAP_ENV__Reason, n); + k *= n; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct SOAP_ENV__Reason location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap *soap, const struct SOAP_ENV__Reason *a, const char *tag, const char *type) +{ + if (soap_out_SOAP_ENV__Reason(soap, tag ? tag : "SOAP-ENV:Reason", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Reason(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->__any = NULL; + a->__type = 0; + a->fault = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap *soap, const struct SOAP_ENV__Detail *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_markelement(soap, a->fault, a->__type); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Detail *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_SOAP_ENV__Detail), type)) + return soap->error; + if (soap_outliteral(soap, "-any", (char*const*)&a->__any, NULL)) + return soap->error; + if (soap_putelement(soap, a->fault, "fault", -1, a->__type)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap *soap, const char *tag, struct SOAP_ENV__Detail *a, const char *type) +{ + size_t soap_flag___any = 1; + size_t soap_flag_fault = 1; + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + (void)type; /* appease -Wall -Werror */ + a = (struct SOAP_ENV__Detail*)soap_id_enter(soap, soap->id, a, SOAP_TYPE_SOAP_ENV__Detail, sizeof(struct SOAP_ENV__Detail), NULL, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Detail(soap, a); + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_fault && soap->error == SOAP_TAG_MISMATCH) + { if ((a->fault = soap_getelement(soap, "fault", &a->__type))) + { soap_flag_fault = 0; + continue; + } + } + if (soap_flag___any && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_inliteral(soap, "-any", (char**)&a->__any)) + { soap_flag___any--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Detail *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_SOAP_ENV__Detail, SOAP_TYPE_SOAP_ENV__Detail, sizeof(struct SOAP_ENV__Detail), 0, cross_finsert, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 cross_instantiate_SOAP_ENV__Detail(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate_SOAP_ENV__Detail(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + struct SOAP_ENV__Detail *p; + size_t k = sizeof(struct SOAP_ENV__Detail); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE_SOAP_ENV__Detail, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, struct SOAP_ENV__Detail); + } + else + { p = SOAP_NEW_ARRAY(soap, struct SOAP_ENV__Detail, n); + k *= n; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct SOAP_ENV__Detail location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap *soap, const struct SOAP_ENV__Detail *a, const char *tag, const char *type) +{ + if (soap_out_SOAP_ENV__Detail(soap, tag ? tag : "SOAP-ENV:Detail", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Detail(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default__QName(soap, &a->SOAP_ENV__Value); + a->SOAP_ENV__Subcode = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap *soap, const struct SOAP_ENV__Code *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize__QName(soap, (char*const*)&a->SOAP_ENV__Value); + soap_serialize_PointerToSOAP_ENV__Code(soap, &a->SOAP_ENV__Subcode); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Code *a, const char *type) +{ + const char *soap_tmp_SOAP_ENV__Value; + soap_tmp_SOAP_ENV__Value = soap_QName2s(soap, a->SOAP_ENV__Value); + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_SOAP_ENV__Code), type)) + return soap->error; + if (soap_out__QName(soap, "SOAP-ENV:Value", -1, (char*const*)(void*)&soap_tmp_SOAP_ENV__Value, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Subcode", -1, &a->SOAP_ENV__Subcode, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap *soap, const char *tag, struct SOAP_ENV__Code *a, const char *type) +{ + size_t soap_flag_SOAP_ENV__Value = 1; + size_t soap_flag_SOAP_ENV__Subcode = 1; + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + (void)type; /* appease -Wall -Werror */ + a = (struct SOAP_ENV__Code*)soap_id_enter(soap, soap->id, a, SOAP_TYPE_SOAP_ENV__Code, sizeof(struct SOAP_ENV__Code), NULL, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Code(soap, a); + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_SOAP_ENV__Value && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + { if (soap_in__QName(soap, "SOAP-ENV:Value", (char**)&a->SOAP_ENV__Value, "xsd:QName")) + { soap_flag_SOAP_ENV__Value--; + continue; + } + } + if (soap_flag_SOAP_ENV__Subcode && soap->error == SOAP_TAG_MISMATCH) + { if (soap_in_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Subcode", &a->SOAP_ENV__Subcode, "")) + { soap_flag_SOAP_ENV__Subcode--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Code *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_SOAP_ENV__Code, SOAP_TYPE_SOAP_ENV__Code, sizeof(struct SOAP_ENV__Code), 0, cross_finsert, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 cross_instantiate_SOAP_ENV__Code(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate_SOAP_ENV__Code(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + struct SOAP_ENV__Code *p; + size_t k = sizeof(struct SOAP_ENV__Code); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE_SOAP_ENV__Code, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, struct SOAP_ENV__Code); + } + else + { p = SOAP_NEW_ARRAY(soap, struct SOAP_ENV__Code, n); + k *= n; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct SOAP_ENV__Code location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap *soap, const struct SOAP_ENV__Code *a, const char *tag, const char *type) +{ + if (soap_out_SOAP_ENV__Code(soap, tag ? tag : "SOAP-ENV:Code", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Code(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap *soap, const struct SOAP_ENV__Header *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Header *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_SOAP_ENV__Header), type)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap *soap, const char *tag, struct SOAP_ENV__Header *a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + (void)type; /* appease -Wall -Werror */ + a = (struct SOAP_ENV__Header*)soap_id_enter(soap, soap->id, a, SOAP_TYPE_SOAP_ENV__Header, sizeof(struct SOAP_ENV__Header), NULL, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Header(soap, a); + if (soap->body && *soap->href != '#') + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Header *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_SOAP_ENV__Header, SOAP_TYPE_SOAP_ENV__Header, sizeof(struct SOAP_ENV__Header), 0, cross_finsert, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 cross_instantiate_SOAP_ENV__Header(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate_SOAP_ENV__Header(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + struct SOAP_ENV__Header *p; + size_t k = sizeof(struct SOAP_ENV__Header); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE_SOAP_ENV__Header, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, struct SOAP_ENV__Header); + } + else + { p = SOAP_NEW_ARRAY(soap, struct SOAP_ENV__Header, n); + k *= n; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct SOAP_ENV__Header location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap *soap, const struct SOAP_ENV__Header *a, const char *tag, const char *type) +{ + if (soap_out_SOAP_ENV__Header(soap, tag ? tag : "SOAP-ENV:Header", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Header(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#endif + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__escrowResendSrv(struct soap *soap, struct __WS1__escrowResendSrv *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->WS1__escrowResendSrv = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__escrowResendSrv(struct soap *soap, const struct __WS1__escrowResendSrv *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_PointerTo_WS1__escrowResendSrv(soap, &a->WS1__escrowResendSrv); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__escrowResendSrv(struct soap *soap, const char *tag, int id, const struct __WS1__escrowResendSrv *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_out_PointerTo_WS1__escrowResendSrv(soap, "WS1:escrowResendSrv", -1, &a->WS1__escrowResendSrv, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__escrowResendSrv * SOAP_FMAC4 soap_in___WS1__escrowResendSrv(struct soap *soap, const char *tag, struct __WS1__escrowResendSrv *a, const char *type) +{ + size_t soap_flag_WS1__escrowResendSrv = 1; + short soap_flag; + (void)tag; (void)type; /* appease -Wall -Werror */ + a = (struct __WS1__escrowResendSrv*)soap_id_enter(soap, "", a, SOAP_TYPE___WS1__escrowResendSrv, sizeof(struct __WS1__escrowResendSrv), NULL, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___WS1__escrowResendSrv(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_WS1__escrowResendSrv && soap->error == SOAP_TAG_MISMATCH) + { if (soap_in_PointerTo_WS1__escrowResendSrv(soap, "WS1:escrowResendSrv", &a->WS1__escrowResendSrv, "")) + { soap_flag_WS1__escrowResendSrv--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH && soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap_flag && soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC1 struct __WS1__escrowResendSrv * SOAP_FMAC2 cross_instantiate___WS1__escrowResendSrv(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate___WS1__escrowResendSrv(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + struct __WS1__escrowResendSrv *p; + size_t k = sizeof(struct __WS1__escrowResendSrv); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE___WS1__escrowResendSrv, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, struct __WS1__escrowResendSrv); + } + else + { p = SOAP_NEW_ARRAY(soap, struct __WS1__escrowResendSrv, n); + k *= n; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct __WS1__escrowResendSrv location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__escrowResendSrv(struct soap *soap, const struct __WS1__escrowResendSrv *a, const char *tag, const char *type) +{ + if (soap_out___WS1__escrowResendSrv(soap, tag ? tag : "-WS1:escrowResendSrv", -2, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__escrowResendSrv * SOAP_FMAC4 soap_get___WS1__escrowResendSrv(struct soap *soap, struct __WS1__escrowResendSrv *p, const char *tag, const char *type) +{ + if ((p = soap_in___WS1__escrowResendSrv(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__invokeSrv(struct soap *soap, struct __WS1__invokeSrv *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->WS1__invokeSrv = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__invokeSrv(struct soap *soap, const struct __WS1__invokeSrv *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_PointerTo_WS1__invokeSrv(soap, &a->WS1__invokeSrv); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__invokeSrv(struct soap *soap, const char *tag, int id, const struct __WS1__invokeSrv *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_out_PointerTo_WS1__invokeSrv(soap, "WS1:invokeSrv", -1, &a->WS1__invokeSrv, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__invokeSrv * SOAP_FMAC4 soap_in___WS1__invokeSrv(struct soap *soap, const char *tag, struct __WS1__invokeSrv *a, const char *type) +{ + size_t soap_flag_WS1__invokeSrv = 1; + short soap_flag; + (void)tag; (void)type; /* appease -Wall -Werror */ + a = (struct __WS1__invokeSrv*)soap_id_enter(soap, "", a, SOAP_TYPE___WS1__invokeSrv, sizeof(struct __WS1__invokeSrv), NULL, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___WS1__invokeSrv(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_WS1__invokeSrv && soap->error == SOAP_TAG_MISMATCH) + { if (soap_in_PointerTo_WS1__invokeSrv(soap, "WS1:invokeSrv", &a->WS1__invokeSrv, "")) + { soap_flag_WS1__invokeSrv--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH && soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap_flag && soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC1 struct __WS1__invokeSrv * SOAP_FMAC2 cross_instantiate___WS1__invokeSrv(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate___WS1__invokeSrv(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + struct __WS1__invokeSrv *p; + size_t k = sizeof(struct __WS1__invokeSrv); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE___WS1__invokeSrv, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, struct __WS1__invokeSrv); + } + else + { p = SOAP_NEW_ARRAY(soap, struct __WS1__invokeSrv, n); + k *= n; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct __WS1__invokeSrv location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__invokeSrv(struct soap *soap, const struct __WS1__invokeSrv *a, const char *tag, const char *type) +{ + if (soap_out___WS1__invokeSrv(soap, tag ? tag : "-WS1:invokeSrv", -2, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__invokeSrv * SOAP_FMAC4 soap_get___WS1__invokeSrv(struct soap *soap, struct __WS1__invokeSrv *p, const char *tag, const char *type) +{ + if ((p = soap_in___WS1__invokeSrv(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__regEAI(struct soap *soap, struct __WS1__regEAI *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->WS1__regEAI = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__regEAI(struct soap *soap, const struct __WS1__regEAI *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_PointerTo_WS1__regEAI(soap, &a->WS1__regEAI); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__regEAI(struct soap *soap, const char *tag, int id, const struct __WS1__regEAI *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_out_PointerTo_WS1__regEAI(soap, "WS1:regEAI", -1, &a->WS1__regEAI, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__regEAI * SOAP_FMAC4 soap_in___WS1__regEAI(struct soap *soap, const char *tag, struct __WS1__regEAI *a, const char *type) +{ + size_t soap_flag_WS1__regEAI = 1; + short soap_flag; + (void)tag; (void)type; /* appease -Wall -Werror */ + a = (struct __WS1__regEAI*)soap_id_enter(soap, "", a, SOAP_TYPE___WS1__regEAI, sizeof(struct __WS1__regEAI), NULL, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___WS1__regEAI(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_WS1__regEAI && soap->error == SOAP_TAG_MISMATCH) + { if (soap_in_PointerTo_WS1__regEAI(soap, "WS1:regEAI", &a->WS1__regEAI, "")) + { soap_flag_WS1__regEAI--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH && soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap_flag && soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC1 struct __WS1__regEAI * SOAP_FMAC2 cross_instantiate___WS1__regEAI(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate___WS1__regEAI(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + struct __WS1__regEAI *p; + size_t k = sizeof(struct __WS1__regEAI); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE___WS1__regEAI, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, struct __WS1__regEAI); + } + else + { p = SOAP_NEW_ARRAY(soap, struct __WS1__regEAI, n); + k *= n; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct __WS1__regEAI location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__regEAI(struct soap *soap, const struct __WS1__regEAI *a, const char *tag, const char *type) +{ + if (soap_out___WS1__regEAI(soap, tag ? tag : "-WS1:regEAI", -2, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__regEAI * SOAP_FMAC4 soap_get___WS1__regEAI(struct soap *soap, struct __WS1__regEAI *p, const char *tag, const char *type) +{ + if ((p = soap_in___WS1__regEAI(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__regSrv(struct soap *soap, struct __WS1__regSrv *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->WS1__regSrv = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__regSrv(struct soap *soap, const struct __WS1__regSrv *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_PointerTo_WS1__regSrv(soap, &a->WS1__regSrv); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__regSrv(struct soap *soap, const char *tag, int id, const struct __WS1__regSrv *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_out_PointerTo_WS1__regSrv(soap, "WS1:regSrv", -1, &a->WS1__regSrv, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__regSrv * SOAP_FMAC4 soap_in___WS1__regSrv(struct soap *soap, const char *tag, struct __WS1__regSrv *a, const char *type) +{ + size_t soap_flag_WS1__regSrv = 1; + short soap_flag; + (void)tag; (void)type; /* appease -Wall -Werror */ + a = (struct __WS1__regSrv*)soap_id_enter(soap, "", a, SOAP_TYPE___WS1__regSrv, sizeof(struct __WS1__regSrv), NULL, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___WS1__regSrv(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_WS1__regSrv && soap->error == SOAP_TAG_MISMATCH) + { if (soap_in_PointerTo_WS1__regSrv(soap, "WS1:regSrv", &a->WS1__regSrv, "")) + { soap_flag_WS1__regSrv--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH && soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap_flag && soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC1 struct __WS1__regSrv * SOAP_FMAC2 cross_instantiate___WS1__regSrv(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate___WS1__regSrv(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + struct __WS1__regSrv *p; + size_t k = sizeof(struct __WS1__regSrv); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE___WS1__regSrv, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, struct __WS1__regSrv); + } + else + { p = SOAP_NEW_ARRAY(soap, struct __WS1__regSrv, n); + k *= n; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct __WS1__regSrv location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__regSrv(struct soap *soap, const struct __WS1__regSrv *a, const char *tag, const char *type) +{ + if (soap_out___WS1__regSrv(soap, tag ? tag : "-WS1:regSrv", -2, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__regSrv * SOAP_FMAC4 soap_get___WS1__regSrv(struct soap *soap, struct __WS1__regSrv *p, const char *tag, const char *type) +{ + if ((p = soap_in___WS1__regSrv(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__getStandardDataNameList(struct soap *soap, struct __WS1__getStandardDataNameList *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->WS1__getStandardDataNameList = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__getStandardDataNameList(struct soap *soap, const struct __WS1__getStandardDataNameList *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_PointerTo_WS1__getStandardDataNameList(soap, &a->WS1__getStandardDataNameList); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__getStandardDataNameList(struct soap *soap, const char *tag, int id, const struct __WS1__getStandardDataNameList *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_out_PointerTo_WS1__getStandardDataNameList(soap, "WS1:getStandardDataNameList", -1, &a->WS1__getStandardDataNameList, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__getStandardDataNameList * SOAP_FMAC4 soap_in___WS1__getStandardDataNameList(struct soap *soap, const char *tag, struct __WS1__getStandardDataNameList *a, const char *type) +{ + size_t soap_flag_WS1__getStandardDataNameList = 1; + short soap_flag; + (void)tag; (void)type; /* appease -Wall -Werror */ + a = (struct __WS1__getStandardDataNameList*)soap_id_enter(soap, "", a, SOAP_TYPE___WS1__getStandardDataNameList, sizeof(struct __WS1__getStandardDataNameList), NULL, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___WS1__getStandardDataNameList(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_WS1__getStandardDataNameList && soap->error == SOAP_TAG_MISMATCH) + { if (soap_in_PointerTo_WS1__getStandardDataNameList(soap, "WS1:getStandardDataNameList", &a->WS1__getStandardDataNameList, "")) + { soap_flag_WS1__getStandardDataNameList--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH && soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap_flag && soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC1 struct __WS1__getStandardDataNameList * SOAP_FMAC2 cross_instantiate___WS1__getStandardDataNameList(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate___WS1__getStandardDataNameList(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + struct __WS1__getStandardDataNameList *p; + size_t k = sizeof(struct __WS1__getStandardDataNameList); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE___WS1__getStandardDataNameList, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, struct __WS1__getStandardDataNameList); + } + else + { p = SOAP_NEW_ARRAY(soap, struct __WS1__getStandardDataNameList, n); + k *= n; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct __WS1__getStandardDataNameList location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__getStandardDataNameList(struct soap *soap, const struct __WS1__getStandardDataNameList *a, const char *tag, const char *type) +{ + if (soap_out___WS1__getStandardDataNameList(soap, tag ? tag : "-WS1:getStandardDataNameList", -2, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__getStandardDataNameList * SOAP_FMAC4 soap_get___WS1__getStandardDataNameList(struct soap *soap, struct __WS1__getStandardDataNameList *p, const char *tag, const char *type) +{ + if ((p = soap_in___WS1__getStandardDataNameList(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__getStandardServiceList(struct soap *soap, struct __WS1__getStandardServiceList *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->WS1__getStandardServiceList = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__getStandardServiceList(struct soap *soap, const struct __WS1__getStandardServiceList *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_PointerTo_WS1__getStandardServiceList(soap, &a->WS1__getStandardServiceList); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__getStandardServiceList(struct soap *soap, const char *tag, int id, const struct __WS1__getStandardServiceList *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_out_PointerTo_WS1__getStandardServiceList(soap, "WS1:getStandardServiceList", -1, &a->WS1__getStandardServiceList, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__getStandardServiceList * SOAP_FMAC4 soap_in___WS1__getStandardServiceList(struct soap *soap, const char *tag, struct __WS1__getStandardServiceList *a, const char *type) +{ + size_t soap_flag_WS1__getStandardServiceList = 1; + short soap_flag; + (void)tag; (void)type; /* appease -Wall -Werror */ + a = (struct __WS1__getStandardServiceList*)soap_id_enter(soap, "", a, SOAP_TYPE___WS1__getStandardServiceList, sizeof(struct __WS1__getStandardServiceList), NULL, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___WS1__getStandardServiceList(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_WS1__getStandardServiceList && soap->error == SOAP_TAG_MISMATCH) + { if (soap_in_PointerTo_WS1__getStandardServiceList(soap, "WS1:getStandardServiceList", &a->WS1__getStandardServiceList, "")) + { soap_flag_WS1__getStandardServiceList--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH && soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap_flag && soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC1 struct __WS1__getStandardServiceList * SOAP_FMAC2 cross_instantiate___WS1__getStandardServiceList(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate___WS1__getStandardServiceList(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + struct __WS1__getStandardServiceList *p; + size_t k = sizeof(struct __WS1__getStandardServiceList); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE___WS1__getStandardServiceList, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, struct __WS1__getStandardServiceList); + } + else + { p = SOAP_NEW_ARRAY(soap, struct __WS1__getStandardServiceList, n); + k *= n; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct __WS1__getStandardServiceList location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__getStandardServiceList(struct soap *soap, const struct __WS1__getStandardServiceList *a, const char *tag, const char *type) +{ + if (soap_out___WS1__getStandardServiceList(soap, tag ? tag : "-WS1:getStandardServiceList", -2, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__getStandardServiceList * SOAP_FMAC4 soap_get___WS1__getStandardServiceList(struct soap *soap, struct __WS1__getStandardServiceList *p, const char *tag, const char *type) +{ + if ((p = soap_in___WS1__getStandardServiceList(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__fpInvoke(struct soap *soap, struct __WS1__fpInvoke *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->WS1__fpInvoke = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__fpInvoke(struct soap *soap, const struct __WS1__fpInvoke *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_PointerTo_WS1__fpInvoke(soap, &a->WS1__fpInvoke); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__fpInvoke(struct soap *soap, const char *tag, int id, const struct __WS1__fpInvoke *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_out_PointerTo_WS1__fpInvoke(soap, "WS1:fpInvoke", -1, &a->WS1__fpInvoke, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__fpInvoke * SOAP_FMAC4 soap_in___WS1__fpInvoke(struct soap *soap, const char *tag, struct __WS1__fpInvoke *a, const char *type) +{ + size_t soap_flag_WS1__fpInvoke = 1; + short soap_flag; + (void)tag; (void)type; /* appease -Wall -Werror */ + a = (struct __WS1__fpInvoke*)soap_id_enter(soap, "", a, SOAP_TYPE___WS1__fpInvoke, sizeof(struct __WS1__fpInvoke), NULL, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___WS1__fpInvoke(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_WS1__fpInvoke && soap->error == SOAP_TAG_MISMATCH) + { if (soap_in_PointerTo_WS1__fpInvoke(soap, "WS1:fpInvoke", &a->WS1__fpInvoke, "")) + { soap_flag_WS1__fpInvoke--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH && soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap_flag && soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC1 struct __WS1__fpInvoke * SOAP_FMAC2 cross_instantiate___WS1__fpInvoke(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate___WS1__fpInvoke(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + struct __WS1__fpInvoke *p; + size_t k = sizeof(struct __WS1__fpInvoke); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE___WS1__fpInvoke, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, struct __WS1__fpInvoke); + } + else + { p = SOAP_NEW_ARRAY(soap, struct __WS1__fpInvoke, n); + k *= n; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct __WS1__fpInvoke location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__fpInvoke(struct soap *soap, const struct __WS1__fpInvoke *a, const char *tag, const char *type) +{ + if (soap_out___WS1__fpInvoke(soap, tag ? tag : "-WS1:fpInvoke", -2, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__fpInvoke * SOAP_FMAC4 soap_get___WS1__fpInvoke(struct soap *soap, struct __WS1__fpInvoke *p, const char *tag, const char *type) +{ + if ((p = soap_in___WS1__fpInvoke(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__getSrv(struct soap *soap, struct __WS1__getSrv *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->WS1__getSrv = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__getSrv(struct soap *soap, const struct __WS1__getSrv *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_PointerTo_WS1__getSrv(soap, &a->WS1__getSrv); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__getSrv(struct soap *soap, const char *tag, int id, const struct __WS1__getSrv *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_out_PointerTo_WS1__getSrv(soap, "WS1:getSrv", -1, &a->WS1__getSrv, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__getSrv * SOAP_FMAC4 soap_in___WS1__getSrv(struct soap *soap, const char *tag, struct __WS1__getSrv *a, const char *type) +{ + size_t soap_flag_WS1__getSrv = 1; + short soap_flag; + (void)tag; (void)type; /* appease -Wall -Werror */ + a = (struct __WS1__getSrv*)soap_id_enter(soap, "", a, SOAP_TYPE___WS1__getSrv, sizeof(struct __WS1__getSrv), NULL, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___WS1__getSrv(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_WS1__getSrv && soap->error == SOAP_TAG_MISMATCH) + { if (soap_in_PointerTo_WS1__getSrv(soap, "WS1:getSrv", &a->WS1__getSrv, "")) + { soap_flag_WS1__getSrv--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH && soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap_flag && soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC1 struct __WS1__getSrv * SOAP_FMAC2 cross_instantiate___WS1__getSrv(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate___WS1__getSrv(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + struct __WS1__getSrv *p; + size_t k = sizeof(struct __WS1__getSrv); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE___WS1__getSrv, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, struct __WS1__getSrv); + } + else + { p = SOAP_NEW_ARRAY(soap, struct __WS1__getSrv, n); + k *= n; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct __WS1__getSrv location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__getSrv(struct soap *soap, const struct __WS1__getSrv *a, const char *tag, const char *type) +{ + if (soap_out___WS1__getSrv(soap, tag ? tag : "-WS1:getSrv", -2, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__getSrv * SOAP_FMAC4 soap_get___WS1__getSrv(struct soap *soap, struct __WS1__getSrv *p, const char *tag, const char *type) +{ + if ((p = soap_in___WS1__getSrv(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__getProd(struct soap *soap, struct __WS1__getProd *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->WS1__getProd = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__getProd(struct soap *soap, const struct __WS1__getProd *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_PointerTo_WS1__getProd(soap, &a->WS1__getProd); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__getProd(struct soap *soap, const char *tag, int id, const struct __WS1__getProd *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_out_PointerTo_WS1__getProd(soap, "WS1:getProd", -1, &a->WS1__getProd, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__getProd * SOAP_FMAC4 soap_in___WS1__getProd(struct soap *soap, const char *tag, struct __WS1__getProd *a, const char *type) +{ + size_t soap_flag_WS1__getProd = 1; + short soap_flag; + (void)tag; (void)type; /* appease -Wall -Werror */ + a = (struct __WS1__getProd*)soap_id_enter(soap, "", a, SOAP_TYPE___WS1__getProd, sizeof(struct __WS1__getProd), NULL, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___WS1__getProd(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_WS1__getProd && soap->error == SOAP_TAG_MISMATCH) + { if (soap_in_PointerTo_WS1__getProd(soap, "WS1:getProd", &a->WS1__getProd, "")) + { soap_flag_WS1__getProd--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH && soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap_flag && soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC1 struct __WS1__getProd * SOAP_FMAC2 cross_instantiate___WS1__getProd(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate___WS1__getProd(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + struct __WS1__getProd *p; + size_t k = sizeof(struct __WS1__getProd); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE___WS1__getProd, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, struct __WS1__getProd); + } + else + { p = SOAP_NEW_ARRAY(soap, struct __WS1__getProd, n); + k *= n; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct __WS1__getProd location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__getProd(struct soap *soap, const struct __WS1__getProd *a, const char *tag, const char *type) +{ + if (soap_out___WS1__getProd(soap, tag ? tag : "-WS1:getProd", -2, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__getProd * SOAP_FMAC4 soap_get___WS1__getProd(struct soap *soap, struct __WS1__getProd *p, const char *tag, const char *type) +{ + if ((p = soap_in___WS1__getProd(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__invokeMdm(struct soap *soap, struct __WS1__invokeMdm *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->WS1__invokeMdm = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__invokeMdm(struct soap *soap, const struct __WS1__invokeMdm *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_PointerTo_WS1__invokeMdm(soap, &a->WS1__invokeMdm); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__invokeMdm(struct soap *soap, const char *tag, int id, const struct __WS1__invokeMdm *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_out_PointerTo_WS1__invokeMdm(soap, "WS1:invokeMdm", -1, &a->WS1__invokeMdm, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__invokeMdm * SOAP_FMAC4 soap_in___WS1__invokeMdm(struct soap *soap, const char *tag, struct __WS1__invokeMdm *a, const char *type) +{ + size_t soap_flag_WS1__invokeMdm = 1; + short soap_flag; + (void)tag; (void)type; /* appease -Wall -Werror */ + a = (struct __WS1__invokeMdm*)soap_id_enter(soap, "", a, SOAP_TYPE___WS1__invokeMdm, sizeof(struct __WS1__invokeMdm), NULL, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___WS1__invokeMdm(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_WS1__invokeMdm && soap->error == SOAP_TAG_MISMATCH) + { if (soap_in_PointerTo_WS1__invokeMdm(soap, "WS1:invokeMdm", &a->WS1__invokeMdm, "")) + { soap_flag_WS1__invokeMdm--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH && soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap_flag && soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC1 struct __WS1__invokeMdm * SOAP_FMAC2 cross_instantiate___WS1__invokeMdm(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate___WS1__invokeMdm(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + struct __WS1__invokeMdm *p; + size_t k = sizeof(struct __WS1__invokeMdm); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE___WS1__invokeMdm, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, struct __WS1__invokeMdm); + } + else + { p = SOAP_NEW_ARRAY(soap, struct __WS1__invokeMdm, n); + k *= n; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct __WS1__invokeMdm location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__invokeMdm(struct soap *soap, const struct __WS1__invokeMdm *a, const char *tag, const char *type) +{ + if (soap_out___WS1__invokeMdm(soap, tag ? tag : "-WS1:invokeMdm", -2, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__invokeMdm * SOAP_FMAC4 soap_get___WS1__invokeMdm(struct soap *soap, struct __WS1__invokeMdm *p, const char *tag, const char *type) +{ + if ((p = soap_in___WS1__invokeMdm(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__invokeUnion(struct soap *soap, struct __WS1__invokeUnion *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->WS1__invokeUnion = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__invokeUnion(struct soap *soap, const struct __WS1__invokeUnion *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_PointerTo_WS1__invokeUnion(soap, &a->WS1__invokeUnion); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__invokeUnion(struct soap *soap, const char *tag, int id, const struct __WS1__invokeUnion *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_out_PointerTo_WS1__invokeUnion(soap, "WS1:invokeUnion", -1, &a->WS1__invokeUnion, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__invokeUnion * SOAP_FMAC4 soap_in___WS1__invokeUnion(struct soap *soap, const char *tag, struct __WS1__invokeUnion *a, const char *type) +{ + size_t soap_flag_WS1__invokeUnion = 1; + short soap_flag; + (void)tag; (void)type; /* appease -Wall -Werror */ + a = (struct __WS1__invokeUnion*)soap_id_enter(soap, "", a, SOAP_TYPE___WS1__invokeUnion, sizeof(struct __WS1__invokeUnion), NULL, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___WS1__invokeUnion(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_WS1__invokeUnion && soap->error == SOAP_TAG_MISMATCH) + { if (soap_in_PointerTo_WS1__invokeUnion(soap, "WS1:invokeUnion", &a->WS1__invokeUnion, "")) + { soap_flag_WS1__invokeUnion--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH && soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap_flag && soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC1 struct __WS1__invokeUnion * SOAP_FMAC2 cross_instantiate___WS1__invokeUnion(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate___WS1__invokeUnion(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + struct __WS1__invokeUnion *p; + size_t k = sizeof(struct __WS1__invokeUnion); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE___WS1__invokeUnion, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, struct __WS1__invokeUnion); + } + else + { p = SOAP_NEW_ARRAY(soap, struct __WS1__invokeUnion, n); + k *= n; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct __WS1__invokeUnion location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__invokeUnion(struct soap *soap, const struct __WS1__invokeUnion *a, const char *tag, const char *type) +{ + if (soap_out___WS1__invokeUnion(soap, tag ? tag : "-WS1:invokeUnion", -2, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__invokeUnion * SOAP_FMAC4 soap_get___WS1__invokeUnion(struct soap *soap, struct __WS1__invokeUnion *p, const char *tag, const char *type) +{ + if ((p = soap_in___WS1__invokeUnion(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__regProdAP(struct soap *soap, struct __WS1__regProdAP *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->WS1__regProdAP = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__regProdAP(struct soap *soap, const struct __WS1__regProdAP *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_PointerTo_WS1__regProdAP(soap, &a->WS1__regProdAP); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__regProdAP(struct soap *soap, const char *tag, int id, const struct __WS1__regProdAP *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_out_PointerTo_WS1__regProdAP(soap, "WS1:regProdAP", -1, &a->WS1__regProdAP, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__regProdAP * SOAP_FMAC4 soap_in___WS1__regProdAP(struct soap *soap, const char *tag, struct __WS1__regProdAP *a, const char *type) +{ + size_t soap_flag_WS1__regProdAP = 1; + short soap_flag; + (void)tag; (void)type; /* appease -Wall -Werror */ + a = (struct __WS1__regProdAP*)soap_id_enter(soap, "", a, SOAP_TYPE___WS1__regProdAP, sizeof(struct __WS1__regProdAP), NULL, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___WS1__regProdAP(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_WS1__regProdAP && soap->error == SOAP_TAG_MISMATCH) + { if (soap_in_PointerTo_WS1__regProdAP(soap, "WS1:regProdAP", &a->WS1__regProdAP, "")) + { soap_flag_WS1__regProdAP--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH && soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap_flag && soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC1 struct __WS1__regProdAP * SOAP_FMAC2 cross_instantiate___WS1__regProdAP(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate___WS1__regProdAP(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + struct __WS1__regProdAP *p; + size_t k = sizeof(struct __WS1__regProdAP); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE___WS1__regProdAP, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, struct __WS1__regProdAP); + } + else + { p = SOAP_NEW_ARRAY(soap, struct __WS1__regProdAP, n); + k *= n; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct __WS1__regProdAP location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__regProdAP(struct soap *soap, const struct __WS1__regProdAP *a, const char *tag, const char *type) +{ + if (soap_out___WS1__regProdAP(soap, tag ? tag : "-WS1:regProdAP", -2, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__regProdAP * SOAP_FMAC4 soap_get___WS1__regProdAP(struct soap *soap, struct __WS1__regProdAP *p, const char *tag, const char *type) +{ + if ((p = soap_in___WS1__regProdAP(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__getProdList(struct soap *soap, struct __WS1__getProdList *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->WS1__getProdList = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__getProdList(struct soap *soap, const struct __WS1__getProdList *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_PointerTo_WS1__getProdList(soap, &a->WS1__getProdList); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__getProdList(struct soap *soap, const char *tag, int id, const struct __WS1__getProdList *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_out_PointerTo_WS1__getProdList(soap, "WS1:getProdList", -1, &a->WS1__getProdList, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__getProdList * SOAP_FMAC4 soap_in___WS1__getProdList(struct soap *soap, const char *tag, struct __WS1__getProdList *a, const char *type) +{ + size_t soap_flag_WS1__getProdList = 1; + short soap_flag; + (void)tag; (void)type; /* appease -Wall -Werror */ + a = (struct __WS1__getProdList*)soap_id_enter(soap, "", a, SOAP_TYPE___WS1__getProdList, sizeof(struct __WS1__getProdList), NULL, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___WS1__getProdList(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_WS1__getProdList && soap->error == SOAP_TAG_MISMATCH) + { if (soap_in_PointerTo_WS1__getProdList(soap, "WS1:getProdList", &a->WS1__getProdList, "")) + { soap_flag_WS1__getProdList--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH && soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap_flag && soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC1 struct __WS1__getProdList * SOAP_FMAC2 cross_instantiate___WS1__getProdList(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate___WS1__getProdList(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + struct __WS1__getProdList *p; + size_t k = sizeof(struct __WS1__getProdList); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE___WS1__getProdList, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, struct __WS1__getProdList); + } + else + { p = SOAP_NEW_ARRAY(soap, struct __WS1__getProdList, n); + k *= n; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct __WS1__getProdList location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__getProdList(struct soap *soap, const struct __WS1__getProdList *a, const char *tag, const char *type) +{ + if (soap_out___WS1__getProdList(soap, tag ? tag : "-WS1:getProdList", -2, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__getProdList * SOAP_FMAC4 soap_get___WS1__getProdList(struct soap *soap, struct __WS1__getProdList *p, const char *tag, const char *type) +{ + if ((p = soap_in___WS1__getProdList(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__getParamList(struct soap *soap, struct __WS1__getParamList *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->WS1__getParamList = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__getParamList(struct soap *soap, const struct __WS1__getParamList *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_PointerTo_WS1__getParamList(soap, &a->WS1__getParamList); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__getParamList(struct soap *soap, const char *tag, int id, const struct __WS1__getParamList *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_out_PointerTo_WS1__getParamList(soap, "WS1:getParamList", -1, &a->WS1__getParamList, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__getParamList * SOAP_FMAC4 soap_in___WS1__getParamList(struct soap *soap, const char *tag, struct __WS1__getParamList *a, const char *type) +{ + size_t soap_flag_WS1__getParamList = 1; + short soap_flag; + (void)tag; (void)type; /* appease -Wall -Werror */ + a = (struct __WS1__getParamList*)soap_id_enter(soap, "", a, SOAP_TYPE___WS1__getParamList, sizeof(struct __WS1__getParamList), NULL, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___WS1__getParamList(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_WS1__getParamList && soap->error == SOAP_TAG_MISMATCH) + { if (soap_in_PointerTo_WS1__getParamList(soap, "WS1:getParamList", &a->WS1__getParamList, "")) + { soap_flag_WS1__getParamList--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH && soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap_flag && soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC1 struct __WS1__getParamList * SOAP_FMAC2 cross_instantiate___WS1__getParamList(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate___WS1__getParamList(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + struct __WS1__getParamList *p; + size_t k = sizeof(struct __WS1__getParamList); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE___WS1__getParamList, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, struct __WS1__getParamList); + } + else + { p = SOAP_NEW_ARRAY(soap, struct __WS1__getParamList, n); + k *= n; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct __WS1__getParamList location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__getParamList(struct soap *soap, const struct __WS1__getParamList *a, const char *tag, const char *type) +{ + if (soap_out___WS1__getParamList(soap, tag ? tag : "-WS1:getParamList", -2, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__getParamList * SOAP_FMAC4 soap_get___WS1__getParamList(struct soap *soap, struct __WS1__getParamList *p, const char *tag, const char *type) +{ + if ((p = soap_in___WS1__getParamList(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__getEtlJobList(struct soap *soap, struct __WS1__getEtlJobList *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->WS1__getEtlJobList = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__getEtlJobList(struct soap *soap, const struct __WS1__getEtlJobList *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_PointerTo_WS1__getEtlJobList(soap, &a->WS1__getEtlJobList); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__getEtlJobList(struct soap *soap, const char *tag, int id, const struct __WS1__getEtlJobList *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_out_PointerTo_WS1__getEtlJobList(soap, "WS1:getEtlJobList", -1, &a->WS1__getEtlJobList, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__getEtlJobList * SOAP_FMAC4 soap_in___WS1__getEtlJobList(struct soap *soap, const char *tag, struct __WS1__getEtlJobList *a, const char *type) +{ + size_t soap_flag_WS1__getEtlJobList = 1; + short soap_flag; + (void)tag; (void)type; /* appease -Wall -Werror */ + a = (struct __WS1__getEtlJobList*)soap_id_enter(soap, "", a, SOAP_TYPE___WS1__getEtlJobList, sizeof(struct __WS1__getEtlJobList), NULL, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___WS1__getEtlJobList(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_WS1__getEtlJobList && soap->error == SOAP_TAG_MISMATCH) + { if (soap_in_PointerTo_WS1__getEtlJobList(soap, "WS1:getEtlJobList", &a->WS1__getEtlJobList, "")) + { soap_flag_WS1__getEtlJobList--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH && soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap_flag && soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC1 struct __WS1__getEtlJobList * SOAP_FMAC2 cross_instantiate___WS1__getEtlJobList(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate___WS1__getEtlJobList(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + struct __WS1__getEtlJobList *p; + size_t k = sizeof(struct __WS1__getEtlJobList); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE___WS1__getEtlJobList, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, struct __WS1__getEtlJobList); + } + else + { p = SOAP_NEW_ARRAY(soap, struct __WS1__getEtlJobList, n); + k *= n; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct __WS1__getEtlJobList location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__getEtlJobList(struct soap *soap, const struct __WS1__getEtlJobList *a, const char *tag, const char *type) +{ + if (soap_out___WS1__getEtlJobList(soap, tag ? tag : "-WS1:getEtlJobList", -2, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__getEtlJobList * SOAP_FMAC4 soap_get___WS1__getEtlJobList(struct soap *soap, struct __WS1__getEtlJobList *p, const char *tag, const char *type) +{ + if ((p = soap_in___WS1__getEtlJobList(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__invokeEtl(struct soap *soap, struct __WS1__invokeEtl *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->WS1__invokeEtl = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__invokeEtl(struct soap *soap, const struct __WS1__invokeEtl *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + soap_serialize_PointerTo_WS1__invokeEtl(soap, &a->WS1__invokeEtl); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__invokeEtl(struct soap *soap, const char *tag, int id, const struct __WS1__invokeEtl *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)a; (void)type; /* appease -Wall -Werror */ + if (soap_out_PointerTo_WS1__invokeEtl(soap, "WS1:invokeEtl", -1, &a->WS1__invokeEtl, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__invokeEtl * SOAP_FMAC4 soap_in___WS1__invokeEtl(struct soap *soap, const char *tag, struct __WS1__invokeEtl *a, const char *type) +{ + size_t soap_flag_WS1__invokeEtl = 1; + short soap_flag; + (void)tag; (void)type; /* appease -Wall -Werror */ + a = (struct __WS1__invokeEtl*)soap_id_enter(soap, "", a, SOAP_TYPE___WS1__invokeEtl, sizeof(struct __WS1__invokeEtl), NULL, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___WS1__invokeEtl(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_WS1__invokeEtl && soap->error == SOAP_TAG_MISMATCH) + { if (soap_in_PointerTo_WS1__invokeEtl(soap, "WS1:invokeEtl", &a->WS1__invokeEtl, "")) + { soap_flag_WS1__invokeEtl--; + continue; + } + } + if (soap->error == SOAP_TAG_MISMATCH && soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap_flag && soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC1 struct __WS1__invokeEtl * SOAP_FMAC2 cross_instantiate___WS1__invokeEtl(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "cross_instantiate___WS1__invokeEtl(%p, %d, %s, %s)\n", (void*)soap, n, type?type:"", arrayType?arrayType:"")); + (void)type; (void)arrayType; /* appease -Wall -Werror */ + struct __WS1__invokeEtl *p; + size_t k = sizeof(struct __WS1__invokeEtl); + struct soap_clist *cp = soap_link(soap, SOAP_TYPE___WS1__invokeEtl, n, cross_fdelete); + if (!cp && soap && n != SOAP_NO_LINK_TO_DELETE) + return NULL; + if (n < 0) + { p = SOAP_NEW(soap, struct __WS1__invokeEtl); + } + else + { p = SOAP_NEW_ARRAY(soap, struct __WS1__invokeEtl, n); + k *= n; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated struct __WS1__invokeEtl location=%p n=%d\n", (void*)p, n)); + if (size) + *size = k; + if (!p) + soap->error = SOAP_EOM; + else if (cp) + cp->ptr = (void*)p; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__invokeEtl(struct soap *soap, const struct __WS1__invokeEtl *a, const char *tag, const char *type) +{ + if (soap_out___WS1__invokeEtl(soap, tag ? tag : "-WS1:invokeEtl", -2, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __WS1__invokeEtl * SOAP_FMAC4 soap_get___WS1__invokeEtl(struct soap *soap, struct __WS1__invokeEtl *p, const char *tag, const char *type) +{ + if ((p = soap_in___WS1__invokeEtl(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *const*a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + if (!soap_reference(soap, *a, SOAP_TYPE_SOAP_ENV__Reason)) + soap_serialize_SOAP_ENV__Reason(soap, *a); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Reason *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_SOAP_ENV__Reason, NULL); + if (id < 0) + return soap->error; + return soap_out_SOAP_ENV__Reason(soap, tag, id, *a, type); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap *soap, const char *tag, struct SOAP_ENV__Reason **a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (struct SOAP_ENV__Reason **)soap_malloc(soap, sizeof(struct SOAP_ENV__Reason *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = soap_in_SOAP_ENV__Reason(soap, tag, *a, type))) + return NULL; + } + else + { a = (struct SOAP_ENV__Reason **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_SOAP_ENV__Reason, sizeof(struct SOAP_ENV__Reason), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *const*a, const char *tag, const char *type) +{ + if (soap_out_PointerToSOAP_ENV__Reason(soap, tag ? tag : "SOAP-ENV:Reason", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerToSOAP_ENV__Reason(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *const*a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + if (!soap_reference(soap, *a, SOAP_TYPE_SOAP_ENV__Detail)) + soap_serialize_SOAP_ENV__Detail(soap, *a); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Detail *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_SOAP_ENV__Detail, NULL); + if (id < 0) + return soap->error; + return soap_out_SOAP_ENV__Detail(soap, tag, id, *a, type); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap *soap, const char *tag, struct SOAP_ENV__Detail **a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (struct SOAP_ENV__Detail **)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = soap_in_SOAP_ENV__Detail(soap, tag, *a, type))) + return NULL; + } + else + { a = (struct SOAP_ENV__Detail **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_SOAP_ENV__Detail, sizeof(struct SOAP_ENV__Detail), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *const*a, const char *tag, const char *type) +{ + if (soap_out_PointerToSOAP_ENV__Detail(soap, tag ? tag : "SOAP-ENV:Detail", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerToSOAP_ENV__Detail(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *const*a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + if (!soap_reference(soap, *a, SOAP_TYPE_SOAP_ENV__Code)) + soap_serialize_SOAP_ENV__Code(soap, *a); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Code *const*a, const char *type) +{ + char *mark; + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_SOAP_ENV__Code, &mark); + if (id < 0) + return soap->error; + (void)soap_out_SOAP_ENV__Code(soap, tag, id, *a, type); + soap_unmark(soap, mark); + return soap->error; +} + +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap *soap, const char *tag, struct SOAP_ENV__Code **a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (struct SOAP_ENV__Code **)soap_malloc(soap, sizeof(struct SOAP_ENV__Code *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = soap_in_SOAP_ENV__Code(soap, tag, *a, type))) + return NULL; + } + else + { a = (struct SOAP_ENV__Code **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_SOAP_ENV__Code, sizeof(struct SOAP_ENV__Code), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *const*a, const char *tag, const char *type) +{ + if (soap_out_PointerToSOAP_ENV__Code(soap, tag ? tag : "SOAP-ENV:Code", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerToSOAP_ENV__Code(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#endif + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__escrowResendSrv(struct soap *soap, _WS1__escrowResendSrv *const*a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + if (!soap_reference(soap, *a, SOAP_TYPE__WS1__escrowResendSrv)) + (*a)->soap_serialize(soap); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__escrowResendSrv(struct soap *soap, const char *tag, int id, _WS1__escrowResendSrv *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE__WS1__escrowResendSrv, NULL); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, (*a)->soap_type() == SOAP_TYPE__WS1__escrowResendSrv ? type : NULL); +} + +SOAP_FMAC3 _WS1__escrowResendSrv ** SOAP_FMAC4 soap_in_PointerTo_WS1__escrowResendSrv(struct soap *soap, const char *tag, _WS1__escrowResendSrv **a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_WS1__escrowResendSrv **)soap_malloc(soap, sizeof(_WS1__escrowResendSrv *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_WS1__escrowResendSrv *)cross_instantiate__WS1__escrowResendSrv(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + { *a = NULL; + return NULL; + } + } + else + { a = (_WS1__escrowResendSrv **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE__WS1__escrowResendSrv, sizeof(_WS1__escrowResendSrv), 0, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__escrowResendSrv(struct soap *soap, _WS1__escrowResendSrv *const*a, const char *tag, const char *type) +{ + if (soap_out_PointerTo_WS1__escrowResendSrv(soap, tag ? tag : "WS1:escrowResendSrv", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _WS1__escrowResendSrv ** SOAP_FMAC4 soap_get_PointerTo_WS1__escrowResendSrv(struct soap *soap, _WS1__escrowResendSrv **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_WS1__escrowResendSrv(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__invokeSrv(struct soap *soap, _WS1__invokeSrv *const*a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + if (!soap_reference(soap, *a, SOAP_TYPE__WS1__invokeSrv)) + (*a)->soap_serialize(soap); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__invokeSrv(struct soap *soap, const char *tag, int id, _WS1__invokeSrv *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE__WS1__invokeSrv, NULL); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, (*a)->soap_type() == SOAP_TYPE__WS1__invokeSrv ? type : NULL); +} + +SOAP_FMAC3 _WS1__invokeSrv ** SOAP_FMAC4 soap_in_PointerTo_WS1__invokeSrv(struct soap *soap, const char *tag, _WS1__invokeSrv **a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_WS1__invokeSrv **)soap_malloc(soap, sizeof(_WS1__invokeSrv *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_WS1__invokeSrv *)cross_instantiate__WS1__invokeSrv(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + { *a = NULL; + return NULL; + } + } + else + { a = (_WS1__invokeSrv **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE__WS1__invokeSrv, sizeof(_WS1__invokeSrv), 0, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__invokeSrv(struct soap *soap, _WS1__invokeSrv *const*a, const char *tag, const char *type) +{ + if (soap_out_PointerTo_WS1__invokeSrv(soap, tag ? tag : "WS1:invokeSrv", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _WS1__invokeSrv ** SOAP_FMAC4 soap_get_PointerTo_WS1__invokeSrv(struct soap *soap, _WS1__invokeSrv **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_WS1__invokeSrv(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__regEAI(struct soap *soap, _WS1__regEAI *const*a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + if (!soap_reference(soap, *a, SOAP_TYPE__WS1__regEAI)) + (*a)->soap_serialize(soap); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__regEAI(struct soap *soap, const char *tag, int id, _WS1__regEAI *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE__WS1__regEAI, NULL); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, (*a)->soap_type() == SOAP_TYPE__WS1__regEAI ? type : NULL); +} + +SOAP_FMAC3 _WS1__regEAI ** SOAP_FMAC4 soap_in_PointerTo_WS1__regEAI(struct soap *soap, const char *tag, _WS1__regEAI **a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_WS1__regEAI **)soap_malloc(soap, sizeof(_WS1__regEAI *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_WS1__regEAI *)cross_instantiate__WS1__regEAI(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + { *a = NULL; + return NULL; + } + } + else + { a = (_WS1__regEAI **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE__WS1__regEAI, sizeof(_WS1__regEAI), 0, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__regEAI(struct soap *soap, _WS1__regEAI *const*a, const char *tag, const char *type) +{ + if (soap_out_PointerTo_WS1__regEAI(soap, tag ? tag : "WS1:regEAI", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _WS1__regEAI ** SOAP_FMAC4 soap_get_PointerTo_WS1__regEAI(struct soap *soap, _WS1__regEAI **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_WS1__regEAI(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__regSrv(struct soap *soap, _WS1__regSrv *const*a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + if (!soap_reference(soap, *a, SOAP_TYPE__WS1__regSrv)) + (*a)->soap_serialize(soap); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__regSrv(struct soap *soap, const char *tag, int id, _WS1__regSrv *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE__WS1__regSrv, NULL); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, (*a)->soap_type() == SOAP_TYPE__WS1__regSrv ? type : NULL); +} + +SOAP_FMAC3 _WS1__regSrv ** SOAP_FMAC4 soap_in_PointerTo_WS1__regSrv(struct soap *soap, const char *tag, _WS1__regSrv **a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_WS1__regSrv **)soap_malloc(soap, sizeof(_WS1__regSrv *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_WS1__regSrv *)cross_instantiate__WS1__regSrv(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + { *a = NULL; + return NULL; + } + } + else + { a = (_WS1__regSrv **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE__WS1__regSrv, sizeof(_WS1__regSrv), 0, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__regSrv(struct soap *soap, _WS1__regSrv *const*a, const char *tag, const char *type) +{ + if (soap_out_PointerTo_WS1__regSrv(soap, tag ? tag : "WS1:regSrv", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _WS1__regSrv ** SOAP_FMAC4 soap_get_PointerTo_WS1__regSrv(struct soap *soap, _WS1__regSrv **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_WS1__regSrv(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__getStandardDataNameList(struct soap *soap, _WS1__getStandardDataNameList *const*a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + if (!soap_reference(soap, *a, SOAP_TYPE__WS1__getStandardDataNameList)) + (*a)->soap_serialize(soap); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__getStandardDataNameList(struct soap *soap, const char *tag, int id, _WS1__getStandardDataNameList *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE__WS1__getStandardDataNameList, NULL); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, (*a)->soap_type() == SOAP_TYPE__WS1__getStandardDataNameList ? type : NULL); +} + +SOAP_FMAC3 _WS1__getStandardDataNameList ** SOAP_FMAC4 soap_in_PointerTo_WS1__getStandardDataNameList(struct soap *soap, const char *tag, _WS1__getStandardDataNameList **a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_WS1__getStandardDataNameList **)soap_malloc(soap, sizeof(_WS1__getStandardDataNameList *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_WS1__getStandardDataNameList *)cross_instantiate__WS1__getStandardDataNameList(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + { *a = NULL; + return NULL; + } + } + else + { a = (_WS1__getStandardDataNameList **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE__WS1__getStandardDataNameList, sizeof(_WS1__getStandardDataNameList), 0, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__getStandardDataNameList(struct soap *soap, _WS1__getStandardDataNameList *const*a, const char *tag, const char *type) +{ + if (soap_out_PointerTo_WS1__getStandardDataNameList(soap, tag ? tag : "WS1:getStandardDataNameList", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _WS1__getStandardDataNameList ** SOAP_FMAC4 soap_get_PointerTo_WS1__getStandardDataNameList(struct soap *soap, _WS1__getStandardDataNameList **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_WS1__getStandardDataNameList(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__getStandardServiceList(struct soap *soap, _WS1__getStandardServiceList *const*a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + if (!soap_reference(soap, *a, SOAP_TYPE__WS1__getStandardServiceList)) + (*a)->soap_serialize(soap); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__getStandardServiceList(struct soap *soap, const char *tag, int id, _WS1__getStandardServiceList *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE__WS1__getStandardServiceList, NULL); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, (*a)->soap_type() == SOAP_TYPE__WS1__getStandardServiceList ? type : NULL); +} + +SOAP_FMAC3 _WS1__getStandardServiceList ** SOAP_FMAC4 soap_in_PointerTo_WS1__getStandardServiceList(struct soap *soap, const char *tag, _WS1__getStandardServiceList **a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_WS1__getStandardServiceList **)soap_malloc(soap, sizeof(_WS1__getStandardServiceList *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_WS1__getStandardServiceList *)cross_instantiate__WS1__getStandardServiceList(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + { *a = NULL; + return NULL; + } + } + else + { a = (_WS1__getStandardServiceList **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE__WS1__getStandardServiceList, sizeof(_WS1__getStandardServiceList), 0, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__getStandardServiceList(struct soap *soap, _WS1__getStandardServiceList *const*a, const char *tag, const char *type) +{ + if (soap_out_PointerTo_WS1__getStandardServiceList(soap, tag ? tag : "WS1:getStandardServiceList", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _WS1__getStandardServiceList ** SOAP_FMAC4 soap_get_PointerTo_WS1__getStandardServiceList(struct soap *soap, _WS1__getStandardServiceList **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_WS1__getStandardServiceList(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__fpInvoke(struct soap *soap, _WS1__fpInvoke *const*a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + if (!soap_reference(soap, *a, SOAP_TYPE__WS1__fpInvoke)) + (*a)->soap_serialize(soap); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__fpInvoke(struct soap *soap, const char *tag, int id, _WS1__fpInvoke *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE__WS1__fpInvoke, NULL); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, (*a)->soap_type() == SOAP_TYPE__WS1__fpInvoke ? type : NULL); +} + +SOAP_FMAC3 _WS1__fpInvoke ** SOAP_FMAC4 soap_in_PointerTo_WS1__fpInvoke(struct soap *soap, const char *tag, _WS1__fpInvoke **a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_WS1__fpInvoke **)soap_malloc(soap, sizeof(_WS1__fpInvoke *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_WS1__fpInvoke *)cross_instantiate__WS1__fpInvoke(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + { *a = NULL; + return NULL; + } + } + else + { a = (_WS1__fpInvoke **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE__WS1__fpInvoke, sizeof(_WS1__fpInvoke), 0, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__fpInvoke(struct soap *soap, _WS1__fpInvoke *const*a, const char *tag, const char *type) +{ + if (soap_out_PointerTo_WS1__fpInvoke(soap, tag ? tag : "WS1:fpInvoke", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _WS1__fpInvoke ** SOAP_FMAC4 soap_get_PointerTo_WS1__fpInvoke(struct soap *soap, _WS1__fpInvoke **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_WS1__fpInvoke(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__getSrv(struct soap *soap, _WS1__getSrv *const*a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + if (!soap_reference(soap, *a, SOAP_TYPE__WS1__getSrv)) + (*a)->soap_serialize(soap); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__getSrv(struct soap *soap, const char *tag, int id, _WS1__getSrv *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE__WS1__getSrv, NULL); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, (*a)->soap_type() == SOAP_TYPE__WS1__getSrv ? type : NULL); +} + +SOAP_FMAC3 _WS1__getSrv ** SOAP_FMAC4 soap_in_PointerTo_WS1__getSrv(struct soap *soap, const char *tag, _WS1__getSrv **a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_WS1__getSrv **)soap_malloc(soap, sizeof(_WS1__getSrv *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_WS1__getSrv *)cross_instantiate__WS1__getSrv(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + { *a = NULL; + return NULL; + } + } + else + { a = (_WS1__getSrv **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE__WS1__getSrv, sizeof(_WS1__getSrv), 0, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__getSrv(struct soap *soap, _WS1__getSrv *const*a, const char *tag, const char *type) +{ + if (soap_out_PointerTo_WS1__getSrv(soap, tag ? tag : "WS1:getSrv", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _WS1__getSrv ** SOAP_FMAC4 soap_get_PointerTo_WS1__getSrv(struct soap *soap, _WS1__getSrv **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_WS1__getSrv(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__getProd(struct soap *soap, _WS1__getProd *const*a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + if (!soap_reference(soap, *a, SOAP_TYPE__WS1__getProd)) + (*a)->soap_serialize(soap); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__getProd(struct soap *soap, const char *tag, int id, _WS1__getProd *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE__WS1__getProd, NULL); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, (*a)->soap_type() == SOAP_TYPE__WS1__getProd ? type : NULL); +} + +SOAP_FMAC3 _WS1__getProd ** SOAP_FMAC4 soap_in_PointerTo_WS1__getProd(struct soap *soap, const char *tag, _WS1__getProd **a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_WS1__getProd **)soap_malloc(soap, sizeof(_WS1__getProd *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_WS1__getProd *)cross_instantiate__WS1__getProd(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + { *a = NULL; + return NULL; + } + } + else + { a = (_WS1__getProd **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE__WS1__getProd, sizeof(_WS1__getProd), 0, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__getProd(struct soap *soap, _WS1__getProd *const*a, const char *tag, const char *type) +{ + if (soap_out_PointerTo_WS1__getProd(soap, tag ? tag : "WS1:getProd", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _WS1__getProd ** SOAP_FMAC4 soap_get_PointerTo_WS1__getProd(struct soap *soap, _WS1__getProd **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_WS1__getProd(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__invokeMdm(struct soap *soap, _WS1__invokeMdm *const*a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + if (!soap_reference(soap, *a, SOAP_TYPE__WS1__invokeMdm)) + (*a)->soap_serialize(soap); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__invokeMdm(struct soap *soap, const char *tag, int id, _WS1__invokeMdm *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE__WS1__invokeMdm, NULL); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, (*a)->soap_type() == SOAP_TYPE__WS1__invokeMdm ? type : NULL); +} + +SOAP_FMAC3 _WS1__invokeMdm ** SOAP_FMAC4 soap_in_PointerTo_WS1__invokeMdm(struct soap *soap, const char *tag, _WS1__invokeMdm **a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_WS1__invokeMdm **)soap_malloc(soap, sizeof(_WS1__invokeMdm *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_WS1__invokeMdm *)cross_instantiate__WS1__invokeMdm(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + { *a = NULL; + return NULL; + } + } + else + { a = (_WS1__invokeMdm **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE__WS1__invokeMdm, sizeof(_WS1__invokeMdm), 0, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__invokeMdm(struct soap *soap, _WS1__invokeMdm *const*a, const char *tag, const char *type) +{ + if (soap_out_PointerTo_WS1__invokeMdm(soap, tag ? tag : "WS1:invokeMdm", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _WS1__invokeMdm ** SOAP_FMAC4 soap_get_PointerTo_WS1__invokeMdm(struct soap *soap, _WS1__invokeMdm **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_WS1__invokeMdm(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__invokeUnion(struct soap *soap, _WS1__invokeUnion *const*a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + if (!soap_reference(soap, *a, SOAP_TYPE__WS1__invokeUnion)) + (*a)->soap_serialize(soap); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__invokeUnion(struct soap *soap, const char *tag, int id, _WS1__invokeUnion *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE__WS1__invokeUnion, NULL); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, (*a)->soap_type() == SOAP_TYPE__WS1__invokeUnion ? type : NULL); +} + +SOAP_FMAC3 _WS1__invokeUnion ** SOAP_FMAC4 soap_in_PointerTo_WS1__invokeUnion(struct soap *soap, const char *tag, _WS1__invokeUnion **a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_WS1__invokeUnion **)soap_malloc(soap, sizeof(_WS1__invokeUnion *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_WS1__invokeUnion *)cross_instantiate__WS1__invokeUnion(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + { *a = NULL; + return NULL; + } + } + else + { a = (_WS1__invokeUnion **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE__WS1__invokeUnion, sizeof(_WS1__invokeUnion), 0, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__invokeUnion(struct soap *soap, _WS1__invokeUnion *const*a, const char *tag, const char *type) +{ + if (soap_out_PointerTo_WS1__invokeUnion(soap, tag ? tag : "WS1:invokeUnion", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _WS1__invokeUnion ** SOAP_FMAC4 soap_get_PointerTo_WS1__invokeUnion(struct soap *soap, _WS1__invokeUnion **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_WS1__invokeUnion(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__regProdAP(struct soap *soap, _WS1__regProdAP *const*a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + if (!soap_reference(soap, *a, SOAP_TYPE__WS1__regProdAP)) + (*a)->soap_serialize(soap); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__regProdAP(struct soap *soap, const char *tag, int id, _WS1__regProdAP *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE__WS1__regProdAP, NULL); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, (*a)->soap_type() == SOAP_TYPE__WS1__regProdAP ? type : NULL); +} + +SOAP_FMAC3 _WS1__regProdAP ** SOAP_FMAC4 soap_in_PointerTo_WS1__regProdAP(struct soap *soap, const char *tag, _WS1__regProdAP **a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_WS1__regProdAP **)soap_malloc(soap, sizeof(_WS1__regProdAP *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_WS1__regProdAP *)cross_instantiate__WS1__regProdAP(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + { *a = NULL; + return NULL; + } + } + else + { a = (_WS1__regProdAP **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE__WS1__regProdAP, sizeof(_WS1__regProdAP), 0, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__regProdAP(struct soap *soap, _WS1__regProdAP *const*a, const char *tag, const char *type) +{ + if (soap_out_PointerTo_WS1__regProdAP(soap, tag ? tag : "WS1:regProdAP", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _WS1__regProdAP ** SOAP_FMAC4 soap_get_PointerTo_WS1__regProdAP(struct soap *soap, _WS1__regProdAP **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_WS1__regProdAP(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__getProdList(struct soap *soap, _WS1__getProdList *const*a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + if (!soap_reference(soap, *a, SOAP_TYPE__WS1__getProdList)) + (*a)->soap_serialize(soap); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__getProdList(struct soap *soap, const char *tag, int id, _WS1__getProdList *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE__WS1__getProdList, NULL); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, (*a)->soap_type() == SOAP_TYPE__WS1__getProdList ? type : NULL); +} + +SOAP_FMAC3 _WS1__getProdList ** SOAP_FMAC4 soap_in_PointerTo_WS1__getProdList(struct soap *soap, const char *tag, _WS1__getProdList **a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_WS1__getProdList **)soap_malloc(soap, sizeof(_WS1__getProdList *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_WS1__getProdList *)cross_instantiate__WS1__getProdList(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + { *a = NULL; + return NULL; + } + } + else + { a = (_WS1__getProdList **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE__WS1__getProdList, sizeof(_WS1__getProdList), 0, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__getProdList(struct soap *soap, _WS1__getProdList *const*a, const char *tag, const char *type) +{ + if (soap_out_PointerTo_WS1__getProdList(soap, tag ? tag : "WS1:getProdList", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _WS1__getProdList ** SOAP_FMAC4 soap_get_PointerTo_WS1__getProdList(struct soap *soap, _WS1__getProdList **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_WS1__getProdList(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__getParamList(struct soap *soap, _WS1__getParamList *const*a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + if (!soap_reference(soap, *a, SOAP_TYPE__WS1__getParamList)) + (*a)->soap_serialize(soap); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__getParamList(struct soap *soap, const char *tag, int id, _WS1__getParamList *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE__WS1__getParamList, NULL); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, (*a)->soap_type() == SOAP_TYPE__WS1__getParamList ? type : NULL); +} + +SOAP_FMAC3 _WS1__getParamList ** SOAP_FMAC4 soap_in_PointerTo_WS1__getParamList(struct soap *soap, const char *tag, _WS1__getParamList **a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_WS1__getParamList **)soap_malloc(soap, sizeof(_WS1__getParamList *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_WS1__getParamList *)cross_instantiate__WS1__getParamList(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + { *a = NULL; + return NULL; + } + } + else + { a = (_WS1__getParamList **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE__WS1__getParamList, sizeof(_WS1__getParamList), 0, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__getParamList(struct soap *soap, _WS1__getParamList *const*a, const char *tag, const char *type) +{ + if (soap_out_PointerTo_WS1__getParamList(soap, tag ? tag : "WS1:getParamList", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _WS1__getParamList ** SOAP_FMAC4 soap_get_PointerTo_WS1__getParamList(struct soap *soap, _WS1__getParamList **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_WS1__getParamList(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__getEtlJobList(struct soap *soap, _WS1__getEtlJobList *const*a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + if (!soap_reference(soap, *a, SOAP_TYPE__WS1__getEtlJobList)) + (*a)->soap_serialize(soap); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__getEtlJobList(struct soap *soap, const char *tag, int id, _WS1__getEtlJobList *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE__WS1__getEtlJobList, NULL); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, (*a)->soap_type() == SOAP_TYPE__WS1__getEtlJobList ? type : NULL); +} + +SOAP_FMAC3 _WS1__getEtlJobList ** SOAP_FMAC4 soap_in_PointerTo_WS1__getEtlJobList(struct soap *soap, const char *tag, _WS1__getEtlJobList **a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_WS1__getEtlJobList **)soap_malloc(soap, sizeof(_WS1__getEtlJobList *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_WS1__getEtlJobList *)cross_instantiate__WS1__getEtlJobList(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + { *a = NULL; + return NULL; + } + } + else + { a = (_WS1__getEtlJobList **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE__WS1__getEtlJobList, sizeof(_WS1__getEtlJobList), 0, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__getEtlJobList(struct soap *soap, _WS1__getEtlJobList *const*a, const char *tag, const char *type) +{ + if (soap_out_PointerTo_WS1__getEtlJobList(soap, tag ? tag : "WS1:getEtlJobList", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _WS1__getEtlJobList ** SOAP_FMAC4 soap_get_PointerTo_WS1__getEtlJobList(struct soap *soap, _WS1__getEtlJobList **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_WS1__getEtlJobList(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__invokeEtl(struct soap *soap, _WS1__invokeEtl *const*a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + if (!soap_reference(soap, *a, SOAP_TYPE__WS1__invokeEtl)) + (*a)->soap_serialize(soap); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__invokeEtl(struct soap *soap, const char *tag, int id, _WS1__invokeEtl *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE__WS1__invokeEtl, NULL); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, (*a)->soap_type() == SOAP_TYPE__WS1__invokeEtl ? type : NULL); +} + +SOAP_FMAC3 _WS1__invokeEtl ** SOAP_FMAC4 soap_in_PointerTo_WS1__invokeEtl(struct soap *soap, const char *tag, _WS1__invokeEtl **a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_WS1__invokeEtl **)soap_malloc(soap, sizeof(_WS1__invokeEtl *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_WS1__invokeEtl *)cross_instantiate__WS1__invokeEtl(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + { *a = NULL; + return NULL; + } + } + else + { a = (_WS1__invokeEtl **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE__WS1__invokeEtl, sizeof(_WS1__invokeEtl), 0, cross_fbase); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__invokeEtl(struct soap *soap, _WS1__invokeEtl *const*a, const char *tag, const char *type) +{ + if (soap_out_PointerTo_WS1__invokeEtl(soap, tag ? tag : "WS1:invokeEtl", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _WS1__invokeEtl ** SOAP_FMAC4 soap_get_PointerTo_WS1__invokeEtl(struct soap *soap, _WS1__invokeEtl **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_WS1__invokeEtl(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize__QName(struct soap *soap, char *const*a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + (void)soap_reference(soap, *a, SOAP_TYPE__QName); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap *soap, const char *tag, int id, char *const*a, const char *type) +{ + return soap_outstring(soap, tag, id, a, type, SOAP_TYPE__QName); +} + +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap *soap, const char *tag, char **a, const char *type) +{ + a = soap_instring(soap, tag, a, type, SOAP_TYPE__QName, 2, 0, -1, NULL); + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap *soap, char *const*a, const char *tag, const char *type) +{ + if (soap_out__QName(soap, tag ? tag : "QName", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap *soap, char **p, const char *tag, const char *type) +{ + if ((p = soap_in__QName(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap *soap, char *const*a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +#ifndef WITH_NOIDREF + (void)soap_reference(soap, *a, SOAP_TYPE_string); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap *soap, const char *tag, int id, char *const*a, const char *type) +{ + return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_string); +} + +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap *soap, const char *tag, char **a, const char *type) +{ + a = soap_instring(soap, tag, a, type, SOAP_TYPE_string, 1, 0, -1, NULL); + return a; +} + +SOAP_FMAC3 char * * SOAP_FMAC4 soap_new_string(struct soap *soap, int n) +{ + char * *a = static_cast(soap_malloc(soap, (n = (n < 0 ? 1 : n)) * sizeof(char *))); + for (char * *p = a; p && n--; ++p) + soap_default_string(soap, p); + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap *soap, char *const*a, const char *tag, const char *type) +{ + if (soap_out_string(soap, tag ? tag : "string", -2, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap *soap, char **p, const char *tag, const char *type) +{ + if ((p = soap_in_string(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#if defined(__BORLANDC__) +#pragma option pop +#pragma option pop +#endif + +/* End of crossC.cpp */ diff --git a/connor_erp_mes/crossClient.cpp b/connor_erp_mes/crossClient.cpp new file mode 100644 index 0000000..3e8de6c --- /dev/null +++ b/connor_erp_mes/crossClient.cpp @@ -0,0 +1,988 @@ +/* crossClient.cpp + Generated by gSOAP 2.8.91 for cross.h + +gSOAP XML Web services tools +Copyright (C) 2000-2018, Robert van Engelen, Genivia Inc. All Rights Reserved. +The soapcpp2 tool and its generated software are released under the GPL. +This program is released under the GPL with the additional exemption that +compiling, linking, and/or using OpenSSL is allowed. +-------------------------------------------------------------------------------- +A commercial use license is available from Genivia Inc., contact@genivia.com +-------------------------------------------------------------------------------- +*/ + +#if defined(__BORLANDC__) +#pragma option push -w-8060 +#pragma option push -w-8004 +#endif +#include "crossH.h" + +SOAP_SOURCE_STAMP("@(#) crossClient.cpp ver 2.8.91 2021-05-24 02:42:29 GMT") + + +SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__invokeEtl(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__invokeEtl *WS1__invokeEtl, _WS1__invokeEtlResponse &WS1__invokeEtlResponse) +{ if (soap_send___WS1__invokeEtl(soap, soap_endpoint, soap_action, WS1__invokeEtl) || soap_recv___WS1__invokeEtl(soap, WS1__invokeEtlResponse)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__invokeEtl(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__invokeEtl *WS1__invokeEtl) +{ struct __WS1__invokeEtl soap_tmp___WS1__invokeEtl; + if (soap_endpoint == NULL) + soap_endpoint = "http://192.168.8.115:9999/IntegrationEntry"; + if (soap_action == NULL) + soap_action = ""; + soap_tmp___WS1__invokeEtl.WS1__invokeEtl = WS1__invokeEtl; + soap_begin(soap); + soap->encodingStyle = NULL; /* use SOAP literal style */ + soap_serializeheader(soap); + soap_serialize___WS1__invokeEtl(soap, &soap_tmp___WS1__invokeEtl); + if (soap_begin_count(soap)) + return soap->error; + if ((soap->mode & SOAP_IO_LENGTH)) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__invokeEtl(soap, &soap_tmp___WS1__invokeEtl, "-WS1:invokeEtl", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__invokeEtl(soap, &soap_tmp___WS1__invokeEtl, "-WS1:invokeEtl", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__invokeEtl(struct soap *soap, _WS1__invokeEtlResponse &WS1__invokeEtlResponse) +{ + WS1__invokeEtlResponse.soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + WS1__invokeEtlResponse.soap_get(soap, "WS1:invokeEtlResponse", NULL); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__getEtlJobList(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getEtlJobList *WS1__getEtlJobList, _WS1__getEtlJobListResponse &WS1__getEtlJobListResponse) +{ if (soap_send___WS1__getEtlJobList(soap, soap_endpoint, soap_action, WS1__getEtlJobList) || soap_recv___WS1__getEtlJobList(soap, WS1__getEtlJobListResponse)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__getEtlJobList(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getEtlJobList *WS1__getEtlJobList) +{ struct __WS1__getEtlJobList soap_tmp___WS1__getEtlJobList; + if (soap_endpoint == NULL) + soap_endpoint = "http://192.168.8.115:9999/IntegrationEntry"; + if (soap_action == NULL) + soap_action = ""; + soap_tmp___WS1__getEtlJobList.WS1__getEtlJobList = WS1__getEtlJobList; + soap_begin(soap); + soap->encodingStyle = NULL; /* use SOAP literal style */ + soap_serializeheader(soap); + soap_serialize___WS1__getEtlJobList(soap, &soap_tmp___WS1__getEtlJobList); + if (soap_begin_count(soap)) + return soap->error; + if ((soap->mode & SOAP_IO_LENGTH)) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__getEtlJobList(soap, &soap_tmp___WS1__getEtlJobList, "-WS1:getEtlJobList", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__getEtlJobList(soap, &soap_tmp___WS1__getEtlJobList, "-WS1:getEtlJobList", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__getEtlJobList(struct soap *soap, _WS1__getEtlJobListResponse &WS1__getEtlJobListResponse) +{ + WS1__getEtlJobListResponse.soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + WS1__getEtlJobListResponse.soap_get(soap, "WS1:getEtlJobListResponse", NULL); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__getParamList(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getParamList *WS1__getParamList, _WS1__getParamListResponse &WS1__getParamListResponse) +{ if (soap_send___WS1__getParamList(soap, soap_endpoint, soap_action, WS1__getParamList) || soap_recv___WS1__getParamList(soap, WS1__getParamListResponse)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__getParamList(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getParamList *WS1__getParamList) +{ struct __WS1__getParamList soap_tmp___WS1__getParamList; + if (soap_endpoint == NULL) + soap_endpoint = "http://192.168.8.115:9999/IntegrationEntry"; + if (soap_action == NULL) + soap_action = ""; + soap_tmp___WS1__getParamList.WS1__getParamList = WS1__getParamList; + soap_begin(soap); + soap->encodingStyle = NULL; /* use SOAP literal style */ + soap_serializeheader(soap); + soap_serialize___WS1__getParamList(soap, &soap_tmp___WS1__getParamList); + if (soap_begin_count(soap)) + return soap->error; + if ((soap->mode & SOAP_IO_LENGTH)) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__getParamList(soap, &soap_tmp___WS1__getParamList, "-WS1:getParamList", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__getParamList(soap, &soap_tmp___WS1__getParamList, "-WS1:getParamList", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__getParamList(struct soap *soap, _WS1__getParamListResponse &WS1__getParamListResponse) +{ + WS1__getParamListResponse.soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + WS1__getParamListResponse.soap_get(soap, "WS1:getParamListResponse", NULL); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__getProdList(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getProdList *WS1__getProdList, _WS1__getProdListResponse &WS1__getProdListResponse) +{ if (soap_send___WS1__getProdList(soap, soap_endpoint, soap_action, WS1__getProdList) || soap_recv___WS1__getProdList(soap, WS1__getProdListResponse)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__getProdList(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getProdList *WS1__getProdList) +{ struct __WS1__getProdList soap_tmp___WS1__getProdList; + if (soap_endpoint == NULL) + soap_endpoint = "http://192.168.8.115:9999/IntegrationEntry"; + if (soap_action == NULL) + soap_action = ""; + soap_tmp___WS1__getProdList.WS1__getProdList = WS1__getProdList; + soap_begin(soap); + soap->encodingStyle = NULL; /* use SOAP literal style */ + soap_serializeheader(soap); + soap_serialize___WS1__getProdList(soap, &soap_tmp___WS1__getProdList); + if (soap_begin_count(soap)) + return soap->error; + if ((soap->mode & SOAP_IO_LENGTH)) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__getProdList(soap, &soap_tmp___WS1__getProdList, "-WS1:getProdList", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__getProdList(soap, &soap_tmp___WS1__getProdList, "-WS1:getProdList", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__getProdList(struct soap *soap, _WS1__getProdListResponse &WS1__getProdListResponse) +{ + WS1__getProdListResponse.soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + WS1__getProdListResponse.soap_get(soap, "WS1:getProdListResponse", NULL); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__regProdAP(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__regProdAP *WS1__regProdAP, _WS1__regProdAPResponse &WS1__regProdAPResponse) +{ if (soap_send___WS1__regProdAP(soap, soap_endpoint, soap_action, WS1__regProdAP) || soap_recv___WS1__regProdAP(soap, WS1__regProdAPResponse)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__regProdAP(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__regProdAP *WS1__regProdAP) +{ struct __WS1__regProdAP soap_tmp___WS1__regProdAP; + if (soap_endpoint == NULL) + soap_endpoint = "http://192.168.8.115:9999/IntegrationEntry"; + if (soap_action == NULL) + soap_action = ""; + soap_tmp___WS1__regProdAP.WS1__regProdAP = WS1__regProdAP; + soap_begin(soap); + soap->encodingStyle = NULL; /* use SOAP literal style */ + soap_serializeheader(soap); + soap_serialize___WS1__regProdAP(soap, &soap_tmp___WS1__regProdAP); + if (soap_begin_count(soap)) + return soap->error; + if ((soap->mode & SOAP_IO_LENGTH)) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__regProdAP(soap, &soap_tmp___WS1__regProdAP, "-WS1:regProdAP", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__regProdAP(soap, &soap_tmp___WS1__regProdAP, "-WS1:regProdAP", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__regProdAP(struct soap *soap, _WS1__regProdAPResponse &WS1__regProdAPResponse) +{ + WS1__regProdAPResponse.soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + WS1__regProdAPResponse.soap_get(soap, "WS1:regProdAPResponse", NULL); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__invokeUnion(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__invokeUnion *WS1__invokeUnion, _WS1__invokeUnionResponse &WS1__invokeUnionResponse) +{ if (soap_send___WS1__invokeUnion(soap, soap_endpoint, soap_action, WS1__invokeUnion) || soap_recv___WS1__invokeUnion(soap, WS1__invokeUnionResponse)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__invokeUnion(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__invokeUnion *WS1__invokeUnion) +{ struct __WS1__invokeUnion soap_tmp___WS1__invokeUnion; + if (soap_endpoint == NULL) + soap_endpoint = "http://192.168.8.115:9999/IntegrationEntry"; + if (soap_action == NULL) + soap_action = ""; + soap_tmp___WS1__invokeUnion.WS1__invokeUnion = WS1__invokeUnion; + soap_begin(soap); + soap->encodingStyle = NULL; /* use SOAP literal style */ + soap_serializeheader(soap); + soap_serialize___WS1__invokeUnion(soap, &soap_tmp___WS1__invokeUnion); + if (soap_begin_count(soap)) + return soap->error; + if ((soap->mode & SOAP_IO_LENGTH)) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__invokeUnion(soap, &soap_tmp___WS1__invokeUnion, "-WS1:invokeUnion", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__invokeUnion(soap, &soap_tmp___WS1__invokeUnion, "-WS1:invokeUnion", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__invokeUnion(struct soap *soap, _WS1__invokeUnionResponse &WS1__invokeUnionResponse) +{ + WS1__invokeUnionResponse.soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + WS1__invokeUnionResponse.soap_get(soap, "WS1:invokeUnionResponse", NULL); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__invokeMdm(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__invokeMdm *WS1__invokeMdm, _WS1__invokeMdmResponse &WS1__invokeMdmResponse) +{ if (soap_send___WS1__invokeMdm(soap, soap_endpoint, soap_action, WS1__invokeMdm) || soap_recv___WS1__invokeMdm(soap, WS1__invokeMdmResponse)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__invokeMdm(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__invokeMdm *WS1__invokeMdm) +{ struct __WS1__invokeMdm soap_tmp___WS1__invokeMdm; + if (soap_endpoint == NULL) + soap_endpoint = "http://192.168.8.115:9999/IntegrationEntry"; + if (soap_action == NULL) + soap_action = ""; + soap_tmp___WS1__invokeMdm.WS1__invokeMdm = WS1__invokeMdm; + soap_begin(soap); + soap->encodingStyle = NULL; /* use SOAP literal style */ + soap_serializeheader(soap); + soap_serialize___WS1__invokeMdm(soap, &soap_tmp___WS1__invokeMdm); + if (soap_begin_count(soap)) + return soap->error; + if ((soap->mode & SOAP_IO_LENGTH)) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__invokeMdm(soap, &soap_tmp___WS1__invokeMdm, "-WS1:invokeMdm", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__invokeMdm(soap, &soap_tmp___WS1__invokeMdm, "-WS1:invokeMdm", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__invokeMdm(struct soap *soap, _WS1__invokeMdmResponse &WS1__invokeMdmResponse) +{ + WS1__invokeMdmResponse.soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + WS1__invokeMdmResponse.soap_get(soap, "WS1:invokeMdmResponse", NULL); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__getProd(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getProd *WS1__getProd, _WS1__getProdResponse &WS1__getProdResponse) +{ if (soap_send___WS1__getProd(soap, soap_endpoint, soap_action, WS1__getProd) || soap_recv___WS1__getProd(soap, WS1__getProdResponse)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__getProd(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getProd *WS1__getProd) +{ struct __WS1__getProd soap_tmp___WS1__getProd; + if (soap_endpoint == NULL) + soap_endpoint = "http://192.168.8.115:9999/IntegrationEntry"; + if (soap_action == NULL) + soap_action = ""; + soap_tmp___WS1__getProd.WS1__getProd = WS1__getProd; + soap_begin(soap); + soap->encodingStyle = NULL; /* use SOAP literal style */ + soap_serializeheader(soap); + soap_serialize___WS1__getProd(soap, &soap_tmp___WS1__getProd); + if (soap_begin_count(soap)) + return soap->error; + if ((soap->mode & SOAP_IO_LENGTH)) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__getProd(soap, &soap_tmp___WS1__getProd, "-WS1:getProd", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__getProd(soap, &soap_tmp___WS1__getProd, "-WS1:getProd", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__getProd(struct soap *soap, _WS1__getProdResponse &WS1__getProdResponse) +{ + WS1__getProdResponse.soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + WS1__getProdResponse.soap_get(soap, "WS1:getProdResponse", NULL); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__getSrv(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getSrv *WS1__getSrv, _WS1__getSrvResponse &WS1__getSrvResponse) +{ if (soap_send___WS1__getSrv(soap, soap_endpoint, soap_action, WS1__getSrv) || soap_recv___WS1__getSrv(soap, WS1__getSrvResponse)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__getSrv(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getSrv *WS1__getSrv) +{ struct __WS1__getSrv soap_tmp___WS1__getSrv; + if (soap_endpoint == NULL) + soap_endpoint = "http://192.168.8.115:9999/IntegrationEntry"; + if (soap_action == NULL) + soap_action = ""; + soap_tmp___WS1__getSrv.WS1__getSrv = WS1__getSrv; + soap_begin(soap); + soap->encodingStyle = NULL; /* use SOAP literal style */ + soap_serializeheader(soap); + soap_serialize___WS1__getSrv(soap, &soap_tmp___WS1__getSrv); + if (soap_begin_count(soap)) + return soap->error; + if ((soap->mode & SOAP_IO_LENGTH)) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__getSrv(soap, &soap_tmp___WS1__getSrv, "-WS1:getSrv", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__getSrv(soap, &soap_tmp___WS1__getSrv, "-WS1:getSrv", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__getSrv(struct soap *soap, _WS1__getSrvResponse &WS1__getSrvResponse) +{ + WS1__getSrvResponse.soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + WS1__getSrvResponse.soap_get(soap, "WS1:getSrvResponse", NULL); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__fpInvoke(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__fpInvoke *WS1__fpInvoke, _WS1__fpInvokeResponse &WS1__fpInvokeResponse) +{ if (soap_send___WS1__fpInvoke(soap, soap_endpoint, soap_action, WS1__fpInvoke) || soap_recv___WS1__fpInvoke(soap, WS1__fpInvokeResponse)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__fpInvoke(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__fpInvoke *WS1__fpInvoke) +{ struct __WS1__fpInvoke soap_tmp___WS1__fpInvoke; + if (soap_endpoint == NULL) + soap_endpoint = "http://192.168.8.115:9999/IntegrationEntry"; + if (soap_action == NULL) + soap_action = ""; + soap_tmp___WS1__fpInvoke.WS1__fpInvoke = WS1__fpInvoke; + soap_begin(soap); + soap->encodingStyle = NULL; /* use SOAP literal style */ + soap_serializeheader(soap); + soap_serialize___WS1__fpInvoke(soap, &soap_tmp___WS1__fpInvoke); + if (soap_begin_count(soap)) + return soap->error; + if ((soap->mode & SOAP_IO_LENGTH)) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__fpInvoke(soap, &soap_tmp___WS1__fpInvoke, "-WS1:fpInvoke", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__fpInvoke(soap, &soap_tmp___WS1__fpInvoke, "-WS1:fpInvoke", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__fpInvoke(struct soap *soap, _WS1__fpInvokeResponse &WS1__fpInvokeResponse) +{ + WS1__fpInvokeResponse.soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + WS1__fpInvokeResponse.soap_get(soap, "WS1:fpInvokeResponse", NULL); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__getStandardServiceList(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getStandardServiceList *WS1__getStandardServiceList, _WS1__getStandardServiceListResponse &WS1__getStandardServiceListResponse) +{ if (soap_send___WS1__getStandardServiceList(soap, soap_endpoint, soap_action, WS1__getStandardServiceList) || soap_recv___WS1__getStandardServiceList(soap, WS1__getStandardServiceListResponse)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__getStandardServiceList(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getStandardServiceList *WS1__getStandardServiceList) +{ struct __WS1__getStandardServiceList soap_tmp___WS1__getStandardServiceList; + if (soap_endpoint == NULL) + soap_endpoint = "http://192.168.8.115:9999/IntegrationEntry"; + if (soap_action == NULL) + soap_action = ""; + soap_tmp___WS1__getStandardServiceList.WS1__getStandardServiceList = WS1__getStandardServiceList; + soap_begin(soap); + soap->encodingStyle = NULL; /* use SOAP literal style */ + soap_serializeheader(soap); + soap_serialize___WS1__getStandardServiceList(soap, &soap_tmp___WS1__getStandardServiceList); + if (soap_begin_count(soap)) + return soap->error; + if ((soap->mode & SOAP_IO_LENGTH)) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__getStandardServiceList(soap, &soap_tmp___WS1__getStandardServiceList, "-WS1:getStandardServiceList", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__getStandardServiceList(soap, &soap_tmp___WS1__getStandardServiceList, "-WS1:getStandardServiceList", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__getStandardServiceList(struct soap *soap, _WS1__getStandardServiceListResponse &WS1__getStandardServiceListResponse) +{ + WS1__getStandardServiceListResponse.soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + WS1__getStandardServiceListResponse.soap_get(soap, "WS1:getStandardServiceListResponse", NULL); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__getStandardDataNameList(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getStandardDataNameList *WS1__getStandardDataNameList, _WS1__getStandardDataNameListResponse &WS1__getStandardDataNameListResponse) +{ if (soap_send___WS1__getStandardDataNameList(soap, soap_endpoint, soap_action, WS1__getStandardDataNameList) || soap_recv___WS1__getStandardDataNameList(soap, WS1__getStandardDataNameListResponse)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__getStandardDataNameList(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getStandardDataNameList *WS1__getStandardDataNameList) +{ struct __WS1__getStandardDataNameList soap_tmp___WS1__getStandardDataNameList; + if (soap_endpoint == NULL) + soap_endpoint = "http://192.168.8.115:9999/IntegrationEntry"; + if (soap_action == NULL) + soap_action = ""; + soap_tmp___WS1__getStandardDataNameList.WS1__getStandardDataNameList = WS1__getStandardDataNameList; + soap_begin(soap); + soap->encodingStyle = NULL; /* use SOAP literal style */ + soap_serializeheader(soap); + soap_serialize___WS1__getStandardDataNameList(soap, &soap_tmp___WS1__getStandardDataNameList); + if (soap_begin_count(soap)) + return soap->error; + if ((soap->mode & SOAP_IO_LENGTH)) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__getStandardDataNameList(soap, &soap_tmp___WS1__getStandardDataNameList, "-WS1:getStandardDataNameList", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__getStandardDataNameList(soap, &soap_tmp___WS1__getStandardDataNameList, "-WS1:getStandardDataNameList", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__getStandardDataNameList(struct soap *soap, _WS1__getStandardDataNameListResponse &WS1__getStandardDataNameListResponse) +{ + WS1__getStandardDataNameListResponse.soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + WS1__getStandardDataNameListResponse.soap_get(soap, "WS1:getStandardDataNameListResponse", NULL); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__regSrv(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__regSrv *WS1__regSrv, _WS1__regSrvResponse &WS1__regSrvResponse) +{ if (soap_send___WS1__regSrv(soap, soap_endpoint, soap_action, WS1__regSrv) || soap_recv___WS1__regSrv(soap, WS1__regSrvResponse)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__regSrv(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__regSrv *WS1__regSrv) +{ struct __WS1__regSrv soap_tmp___WS1__regSrv; + if (soap_endpoint == NULL) + soap_endpoint = "http://192.168.8.115:9999/IntegrationEntry"; + if (soap_action == NULL) + soap_action = ""; + soap_tmp___WS1__regSrv.WS1__regSrv = WS1__regSrv; + soap_begin(soap); + soap->encodingStyle = NULL; /* use SOAP literal style */ + soap_serializeheader(soap); + soap_serialize___WS1__regSrv(soap, &soap_tmp___WS1__regSrv); + if (soap_begin_count(soap)) + return soap->error; + if ((soap->mode & SOAP_IO_LENGTH)) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__regSrv(soap, &soap_tmp___WS1__regSrv, "-WS1:regSrv", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__regSrv(soap, &soap_tmp___WS1__regSrv, "-WS1:regSrv", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__regSrv(struct soap *soap, _WS1__regSrvResponse &WS1__regSrvResponse) +{ + WS1__regSrvResponse.soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + WS1__regSrvResponse.soap_get(soap, "WS1:regSrvResponse", NULL); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__regEAI(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__regEAI *WS1__regEAI, _WS1__regEAIResponse &WS1__regEAIResponse) +{ if (soap_send___WS1__regEAI(soap, soap_endpoint, soap_action, WS1__regEAI) || soap_recv___WS1__regEAI(soap, WS1__regEAIResponse)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__regEAI(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__regEAI *WS1__regEAI) +{ struct __WS1__regEAI soap_tmp___WS1__regEAI; + if (soap_endpoint == NULL) + soap_endpoint = "http://192.168.8.115:9999/IntegrationEntry"; + if (soap_action == NULL) + soap_action = ""; + soap_tmp___WS1__regEAI.WS1__regEAI = WS1__regEAI; + soap_begin(soap); + soap->encodingStyle = NULL; /* use SOAP literal style */ + soap_serializeheader(soap); + soap_serialize___WS1__regEAI(soap, &soap_tmp___WS1__regEAI); + if (soap_begin_count(soap)) + return soap->error; + if ((soap->mode & SOAP_IO_LENGTH)) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__regEAI(soap, &soap_tmp___WS1__regEAI, "-WS1:regEAI", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__regEAI(soap, &soap_tmp___WS1__regEAI, "-WS1:regEAI", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__regEAI(struct soap *soap, _WS1__regEAIResponse &WS1__regEAIResponse) +{ + WS1__regEAIResponse.soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + WS1__regEAIResponse.soap_get(soap, "WS1:regEAIResponse", NULL); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__invokeSrv(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__invokeSrv *WS1__invokeSrv, _WS1__invokeSrvResponse &WS1__invokeSrvResponse) +{ if (soap_send___WS1__invokeSrv(soap, soap_endpoint, soap_action, WS1__invokeSrv) || soap_recv___WS1__invokeSrv(soap, WS1__invokeSrvResponse)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__invokeSrv(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__invokeSrv *WS1__invokeSrv) +{ struct __WS1__invokeSrv soap_tmp___WS1__invokeSrv; + if (soap_endpoint == NULL) + soap_endpoint = "http://192.168.8.115:9999/IntegrationEntry"; + if (soap_action == NULL) + soap_action = ""; + soap_tmp___WS1__invokeSrv.WS1__invokeSrv = WS1__invokeSrv; + soap_begin(soap); + soap->encodingStyle = NULL; /* use SOAP literal style */ + soap_serializeheader(soap); + soap_serialize___WS1__invokeSrv(soap, &soap_tmp___WS1__invokeSrv); + if (soap_begin_count(soap)) + return soap->error; + if ((soap->mode & SOAP_IO_LENGTH)) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__invokeSrv(soap, &soap_tmp___WS1__invokeSrv, "-WS1:invokeSrv", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__invokeSrv(soap, &soap_tmp___WS1__invokeSrv, "-WS1:invokeSrv", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__invokeSrv(struct soap *soap, _WS1__invokeSrvResponse &WS1__invokeSrvResponse) +{ + WS1__invokeSrvResponse.soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + WS1__invokeSrvResponse.soap_get(soap, "WS1:invokeSrvResponse", NULL); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__escrowResendSrv(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__escrowResendSrv *WS1__escrowResendSrv, _WS1__escrowResendSrvResponse &WS1__escrowResendSrvResponse) +{ if (soap_send___WS1__escrowResendSrv(soap, soap_endpoint, soap_action, WS1__escrowResendSrv) || soap_recv___WS1__escrowResendSrv(soap, WS1__escrowResendSrvResponse)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__escrowResendSrv(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__escrowResendSrv *WS1__escrowResendSrv) +{ struct __WS1__escrowResendSrv soap_tmp___WS1__escrowResendSrv; + if (soap_endpoint == NULL) + soap_endpoint = "http://192.168.8.115:9999/IntegrationEntry"; + if (soap_action == NULL) + soap_action = ""; + soap_tmp___WS1__escrowResendSrv.WS1__escrowResendSrv = WS1__escrowResendSrv; + soap_begin(soap); + soap->encodingStyle = NULL; /* use SOAP literal style */ + soap_serializeheader(soap); + soap_serialize___WS1__escrowResendSrv(soap, &soap_tmp___WS1__escrowResendSrv); + if (soap_begin_count(soap)) + return soap->error; + if ((soap->mode & SOAP_IO_LENGTH)) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__escrowResendSrv(soap, &soap_tmp___WS1__escrowResendSrv, "-WS1:escrowResendSrv", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___WS1__escrowResendSrv(soap, &soap_tmp___WS1__escrowResendSrv, "-WS1:escrowResendSrv", "") + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__escrowResendSrv(struct soap *soap, _WS1__escrowResendSrvResponse &WS1__escrowResendSrvResponse) +{ + WS1__escrowResendSrvResponse.soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + WS1__escrowResendSrvResponse.soap_get(soap, "WS1:escrowResendSrvResponse", NULL); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +#if defined(__BORLANDC__) +#pragma option pop +#pragma option pop +#endif + +/* End of crossClient.cpp */ diff --git a/connor_erp_mes/crossH.h b/connor_erp_mes/crossH.h new file mode 100644 index 0000000..fe37083 --- /dev/null +++ b/connor_erp_mes/crossH.h @@ -0,0 +1,5647 @@ +/* crossH.h + Generated by gSOAP 2.8.91 for cross.h + +gSOAP XML Web services tools +Copyright (C) 2000-2018, Robert van Engelen, Genivia Inc. All Rights Reserved. +The soapcpp2 tool and its generated software are released under the GPL. +This program is released under the GPL with the additional exemption that +compiling, linking, and/or using OpenSSL is allowed. +-------------------------------------------------------------------------------- +A commercial use license is available from Genivia Inc., contact@genivia.com +-------------------------------------------------------------------------------- +*/ + +#ifndef crossH_H +#define crossH_H +#include "crossStub.h" +#ifndef WITH_NOIDREF + +#ifdef __cplusplus +extern "C" { +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap*, const void*, int); + +#ifdef __cplusplus +} +#endif +SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap*); +SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap*); +#endif + +#ifdef __cplusplus +extern "C" { +#endif +SOAP_FMAC3 void * SOAP_FMAC4 soap_getelement(struct soap*, const char*, int*); +SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap*, const void*, const char*, int, int); +SOAP_FMAC3 void * SOAP_FMAC4 soap_dupelement(struct soap*, const void*, int); +SOAP_FMAC3 void SOAP_FMAC4 soap_delelement(const void*, int); + +#ifdef __cplusplus +} +#endif +SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap*); +SOAP_FMAC3 void * SOAP_FMAC4 cross_instantiate(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 int SOAP_FMAC4 cross_fdelete(struct soap *soap, struct soap_clist*); +SOAP_FMAC3 int SOAP_FMAC4 cross_fbase(int, int); +SOAP_FMAC3 void SOAP_FMAC4 cross_finsert(struct soap*, int, int, void*, size_t, const void*, void**); + +#ifndef SOAP_TYPE_byte_DEFINED +#define SOAP_TYPE_byte_DEFINED + +inline void soap_default_byte(struct soap *soap, char *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_byte + *a = SOAP_DEFAULT_byte; +#else + *a = (char)0; +#endif +} +SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap*, const char*, int, const char *, const char*); +SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap*, const char*, char *, const char*); + +SOAP_FMAC3 char * SOAP_FMAC4 soap_new_byte(struct soap *soap, int n = -1); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap*, const char *, const char*, const char*); + +inline int soap_write_byte(struct soap *soap, char const*p) +{ + soap_free_temp(soap); + if (p) + { if (soap_begin_send(soap) || ::soap_put_byte(soap, p, "byte", "") || soap_end_send(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_PUT_byte(struct soap *soap, const char *URL, char const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || ::soap_put_byte(soap, p, "byte", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH_byte(struct soap *soap, const char *URL, char const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || ::soap_put_byte(soap, p, "byte", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send_byte(struct soap *soap, const char *URL, char const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || ::soap_put_byte(soap, p, "byte", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap*, char *, const char*, const char*); + +inline int soap_read_byte(struct soap *soap, char *p) +{ + if (p) + { if (soap_begin_recv(soap) || ::soap_get_byte(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET_byte(struct soap *soap, const char *URL, char *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read_byte(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv_byte(struct soap *soap, char *p) +{ + if (::soap_read_byte(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE_int_DEFINED +#define SOAP_TYPE_int_DEFINED + +inline void soap_default_int(struct soap *soap, int *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_int + *a = SOAP_DEFAULT_int; +#else + *a = (int)0; +#endif +} +SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap*, const char*, int, const int *, const char*); +SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap*, const char*, int *, const char*); + +SOAP_FMAC3 int * SOAP_FMAC4 soap_new_int(struct soap *soap, int n = -1); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap*, const int *, const char*, const char*); + +inline int soap_write_int(struct soap *soap, int const*p) +{ + soap_free_temp(soap); + if (p) + { if (soap_begin_send(soap) || ::soap_put_int(soap, p, "int", "") || soap_end_send(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_PUT_int(struct soap *soap, const char *URL, int const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || ::soap_put_int(soap, p, "int", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH_int(struct soap *soap, const char *URL, int const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || ::soap_put_int(soap, p, "int", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send_int(struct soap *soap, const char *URL, int const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || ::soap_put_int(soap, p, "int", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap*, int *, const char*, const char*); + +inline int soap_read_int(struct soap *soap, int *p) +{ + if (p) + { if (soap_begin_recv(soap) || ::soap_get_int(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET_int(struct soap *soap, const char *URL, int *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read_int(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv_int(struct soap *soap, int *p) +{ + if (::soap_read_int(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE_std__string_DEFINED +#define SOAP_TYPE_std__string_DEFINED + +inline void soap_default_std__string(struct soap *soap, std::string *p) +{ + (void)soap; /* appease -Wall -Werror */ + p->erase(); +} +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__string(struct soap*, const std::string *); + +#define soap_std__string2s(soap, a) ((a).c_str()) +SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__string(struct soap*, const char*, int, const std::string*, const char*); + +#define soap_s2std__string(soap, s, a) soap_s2stdchar((soap), (s), (a), 1, 0, -1, NULL) +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_std__string(struct soap*, const char*, std::string*, const char*); +SOAP_FMAC1 std::string * SOAP_FMAC2 cross_instantiate_std__string(struct soap*, int, const char*, const char*, size_t*); + +inline std::string * soap_new_std__string(struct soap *soap, int n = -1) +{ + return cross_instantiate_std__string(soap, n, NULL, NULL, NULL); +} + +inline std::string * soap_new_req_std__string( + struct soap *soap) +{ + std::string *_p = ::soap_new_std__string(soap); + if (_p) + { ::soap_default_std__string(soap, _p); + } + return _p; +} + +inline std::string * soap_new_set_std__string( + struct soap *soap) +{ + std::string *_p = ::soap_new_std__string(soap); + if (_p) + { ::soap_default_std__string(soap, _p); + } + return _p; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__string(struct soap*, const std::string *, const char*, const char*); + +inline int soap_write_std__string(struct soap *soap, std::string const*p) +{ + soap_free_temp(soap); + if (p) + { if (soap_begin_send(soap) || ::soap_put_std__string(soap, p, "string", "") || soap_end_send(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_PUT_std__string(struct soap *soap, const char *URL, std::string const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || ::soap_put_std__string(soap, p, "string", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH_std__string(struct soap *soap, const char *URL, std::string const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || ::soap_put_std__string(soap, p, "string", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send_std__string(struct soap *soap, const char *URL, std::string const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || ::soap_put_std__string(soap, p, "string", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_std__string(struct soap*, std::string *, const char*, const char*); + +inline int soap_read_std__string(struct soap *soap, std::string *p) +{ + if (p) + { if (soap_begin_recv(soap) || ::soap_get_std__string(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET_std__string(struct soap *soap, const char *URL, std::string *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read_std__string(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv_std__string(struct soap *soap, std::string *p) +{ + if (::soap_read_std__string(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__escrowResendSrvResponse_DEFINED +#define SOAP_TYPE__WS1__escrowResendSrvResponse_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__escrowResendSrvResponse(struct soap*, const char*, int, const _WS1__escrowResendSrvResponse *, const char*); +SOAP_FMAC3 _WS1__escrowResendSrvResponse * SOAP_FMAC4 soap_in__WS1__escrowResendSrvResponse(struct soap*, const char*, _WS1__escrowResendSrvResponse *, const char*); +SOAP_FMAC1 _WS1__escrowResendSrvResponse * SOAP_FMAC2 cross_instantiate__WS1__escrowResendSrvResponse(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__escrowResendSrvResponse * soap_new__WS1__escrowResendSrvResponse(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__escrowResendSrvResponse(soap, n, NULL, NULL, NULL); +} + +inline _WS1__escrowResendSrvResponse * soap_new_req__WS1__escrowResendSrvResponse( + struct soap *soap, + const std::string& escrowResendSrvReturn) +{ + _WS1__escrowResendSrvResponse *_p = ::soap_new__WS1__escrowResendSrvResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__escrowResendSrvResponse::escrowResendSrvReturn = escrowResendSrvReturn; + } + return _p; +} + +inline _WS1__escrowResendSrvResponse * soap_new_set__WS1__escrowResendSrvResponse( + struct soap *soap, + const std::string& escrowResendSrvReturn) +{ + _WS1__escrowResendSrvResponse *_p = ::soap_new__WS1__escrowResendSrvResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__escrowResendSrvResponse::escrowResendSrvReturn = escrowResendSrvReturn; + } + return _p; +} + +inline int soap_write__WS1__escrowResendSrvResponse(struct soap *soap, _WS1__escrowResendSrvResponse const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:escrowResendSrvResponse", p->soap_type() == SOAP_TYPE__WS1__escrowResendSrvResponse ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__escrowResendSrvResponse(struct soap *soap, const char *URL, _WS1__escrowResendSrvResponse const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:escrowResendSrvResponse", p->soap_type() == SOAP_TYPE__WS1__escrowResendSrvResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__escrowResendSrvResponse(struct soap *soap, const char *URL, _WS1__escrowResendSrvResponse const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:escrowResendSrvResponse", p->soap_type() == SOAP_TYPE__WS1__escrowResendSrvResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__escrowResendSrvResponse(struct soap *soap, const char *URL, _WS1__escrowResendSrvResponse const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:escrowResendSrvResponse", p->soap_type() == SOAP_TYPE__WS1__escrowResendSrvResponse ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__escrowResendSrvResponse * SOAP_FMAC4 soap_get__WS1__escrowResendSrvResponse(struct soap*, _WS1__escrowResendSrvResponse *, const char*, const char*); + +inline int soap_read__WS1__escrowResendSrvResponse(struct soap *soap, _WS1__escrowResendSrvResponse *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__escrowResendSrvResponse(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__escrowResendSrvResponse(struct soap *soap, const char *URL, _WS1__escrowResendSrvResponse *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__escrowResendSrvResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__escrowResendSrvResponse(struct soap *soap, _WS1__escrowResendSrvResponse *p) +{ + if (::soap_read__WS1__escrowResendSrvResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__escrowResendSrv_DEFINED +#define SOAP_TYPE__WS1__escrowResendSrv_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__escrowResendSrv(struct soap*, const char*, int, const _WS1__escrowResendSrv *, const char*); +SOAP_FMAC3 _WS1__escrowResendSrv * SOAP_FMAC4 soap_in__WS1__escrowResendSrv(struct soap*, const char*, _WS1__escrowResendSrv *, const char*); +SOAP_FMAC1 _WS1__escrowResendSrv * SOAP_FMAC2 cross_instantiate__WS1__escrowResendSrv(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__escrowResendSrv * soap_new__WS1__escrowResendSrv(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__escrowResendSrv(soap, n, NULL, NULL, NULL); +} + +inline _WS1__escrowResendSrv * soap_new_req__WS1__escrowResendSrv( + struct soap *soap, + const std::string& in0, + const std::string& in1) +{ + _WS1__escrowResendSrv *_p = ::soap_new__WS1__escrowResendSrv(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__escrowResendSrv::in0 = in0; + _p->_WS1__escrowResendSrv::in1 = in1; + } + return _p; +} + +inline _WS1__escrowResendSrv * soap_new_set__WS1__escrowResendSrv( + struct soap *soap, + const std::string& in0, + const std::string& in1) +{ + _WS1__escrowResendSrv *_p = ::soap_new__WS1__escrowResendSrv(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__escrowResendSrv::in0 = in0; + _p->_WS1__escrowResendSrv::in1 = in1; + } + return _p; +} + +inline int soap_write__WS1__escrowResendSrv(struct soap *soap, _WS1__escrowResendSrv const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:escrowResendSrv", p->soap_type() == SOAP_TYPE__WS1__escrowResendSrv ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__escrowResendSrv(struct soap *soap, const char *URL, _WS1__escrowResendSrv const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:escrowResendSrv", p->soap_type() == SOAP_TYPE__WS1__escrowResendSrv ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__escrowResendSrv(struct soap *soap, const char *URL, _WS1__escrowResendSrv const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:escrowResendSrv", p->soap_type() == SOAP_TYPE__WS1__escrowResendSrv ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__escrowResendSrv(struct soap *soap, const char *URL, _WS1__escrowResendSrv const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:escrowResendSrv", p->soap_type() == SOAP_TYPE__WS1__escrowResendSrv ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__escrowResendSrv * SOAP_FMAC4 soap_get__WS1__escrowResendSrv(struct soap*, _WS1__escrowResendSrv *, const char*, const char*); + +inline int soap_read__WS1__escrowResendSrv(struct soap *soap, _WS1__escrowResendSrv *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__escrowResendSrv(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__escrowResendSrv(struct soap *soap, const char *URL, _WS1__escrowResendSrv *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__escrowResendSrv(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__escrowResendSrv(struct soap *soap, _WS1__escrowResendSrv *p) +{ + if (::soap_read__WS1__escrowResendSrv(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__invokeSrvResponse_DEFINED +#define SOAP_TYPE__WS1__invokeSrvResponse_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__invokeSrvResponse(struct soap*, const char*, int, const _WS1__invokeSrvResponse *, const char*); +SOAP_FMAC3 _WS1__invokeSrvResponse * SOAP_FMAC4 soap_in__WS1__invokeSrvResponse(struct soap*, const char*, _WS1__invokeSrvResponse *, const char*); +SOAP_FMAC1 _WS1__invokeSrvResponse * SOAP_FMAC2 cross_instantiate__WS1__invokeSrvResponse(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__invokeSrvResponse * soap_new__WS1__invokeSrvResponse(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__invokeSrvResponse(soap, n, NULL, NULL, NULL); +} + +inline _WS1__invokeSrvResponse * soap_new_req__WS1__invokeSrvResponse( + struct soap *soap, + const std::string& invokeSrvReturn) +{ + _WS1__invokeSrvResponse *_p = ::soap_new__WS1__invokeSrvResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__invokeSrvResponse::invokeSrvReturn = invokeSrvReturn; + } + return _p; +} + +inline _WS1__invokeSrvResponse * soap_new_set__WS1__invokeSrvResponse( + struct soap *soap, + const std::string& invokeSrvReturn) +{ + _WS1__invokeSrvResponse *_p = ::soap_new__WS1__invokeSrvResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__invokeSrvResponse::invokeSrvReturn = invokeSrvReturn; + } + return _p; +} + +inline int soap_write__WS1__invokeSrvResponse(struct soap *soap, _WS1__invokeSrvResponse const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeSrvResponse", p->soap_type() == SOAP_TYPE__WS1__invokeSrvResponse ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__invokeSrvResponse(struct soap *soap, const char *URL, _WS1__invokeSrvResponse const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeSrvResponse", p->soap_type() == SOAP_TYPE__WS1__invokeSrvResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__invokeSrvResponse(struct soap *soap, const char *URL, _WS1__invokeSrvResponse const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeSrvResponse", p->soap_type() == SOAP_TYPE__WS1__invokeSrvResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__invokeSrvResponse(struct soap *soap, const char *URL, _WS1__invokeSrvResponse const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeSrvResponse", p->soap_type() == SOAP_TYPE__WS1__invokeSrvResponse ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__invokeSrvResponse * SOAP_FMAC4 soap_get__WS1__invokeSrvResponse(struct soap*, _WS1__invokeSrvResponse *, const char*, const char*); + +inline int soap_read__WS1__invokeSrvResponse(struct soap *soap, _WS1__invokeSrvResponse *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__invokeSrvResponse(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__invokeSrvResponse(struct soap *soap, const char *URL, _WS1__invokeSrvResponse *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__invokeSrvResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__invokeSrvResponse(struct soap *soap, _WS1__invokeSrvResponse *p) +{ + if (::soap_read__WS1__invokeSrvResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__invokeSrv_DEFINED +#define SOAP_TYPE__WS1__invokeSrv_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__invokeSrv(struct soap*, const char*, int, const _WS1__invokeSrv *, const char*); +SOAP_FMAC3 _WS1__invokeSrv * SOAP_FMAC4 soap_in__WS1__invokeSrv(struct soap*, const char*, _WS1__invokeSrv *, const char*); +SOAP_FMAC1 _WS1__invokeSrv * SOAP_FMAC2 cross_instantiate__WS1__invokeSrv(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__invokeSrv * soap_new__WS1__invokeSrv(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__invokeSrv(soap, n, NULL, NULL, NULL); +} + +inline _WS1__invokeSrv * soap_new_req__WS1__invokeSrv( + struct soap *soap, + const std::string& in0) +{ + _WS1__invokeSrv *_p = ::soap_new__WS1__invokeSrv(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__invokeSrv::in0 = in0; + } + return _p; +} + +inline _WS1__invokeSrv * soap_new_set__WS1__invokeSrv( + struct soap *soap, + const std::string& in0) +{ + _WS1__invokeSrv *_p = ::soap_new__WS1__invokeSrv(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__invokeSrv::in0 = in0; + } + return _p; +} + +inline int soap_write__WS1__invokeSrv(struct soap *soap, _WS1__invokeSrv const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeSrv", p->soap_type() == SOAP_TYPE__WS1__invokeSrv ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__invokeSrv(struct soap *soap, const char *URL, _WS1__invokeSrv const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeSrv", p->soap_type() == SOAP_TYPE__WS1__invokeSrv ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__invokeSrv(struct soap *soap, const char *URL, _WS1__invokeSrv const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeSrv", p->soap_type() == SOAP_TYPE__WS1__invokeSrv ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__invokeSrv(struct soap *soap, const char *URL, _WS1__invokeSrv const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeSrv", p->soap_type() == SOAP_TYPE__WS1__invokeSrv ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__invokeSrv * SOAP_FMAC4 soap_get__WS1__invokeSrv(struct soap*, _WS1__invokeSrv *, const char*, const char*); + +inline int soap_read__WS1__invokeSrv(struct soap *soap, _WS1__invokeSrv *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__invokeSrv(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__invokeSrv(struct soap *soap, const char *URL, _WS1__invokeSrv *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__invokeSrv(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__invokeSrv(struct soap *soap, _WS1__invokeSrv *p) +{ + if (::soap_read__WS1__invokeSrv(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__regEAIResponse_DEFINED +#define SOAP_TYPE__WS1__regEAIResponse_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__regEAIResponse(struct soap*, const char*, int, const _WS1__regEAIResponse *, const char*); +SOAP_FMAC3 _WS1__regEAIResponse * SOAP_FMAC4 soap_in__WS1__regEAIResponse(struct soap*, const char*, _WS1__regEAIResponse *, const char*); +SOAP_FMAC1 _WS1__regEAIResponse * SOAP_FMAC2 cross_instantiate__WS1__regEAIResponse(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__regEAIResponse * soap_new__WS1__regEAIResponse(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__regEAIResponse(soap, n, NULL, NULL, NULL); +} + +inline _WS1__regEAIResponse * soap_new_req__WS1__regEAIResponse( + struct soap *soap, + const std::string& regEAIReturn) +{ + _WS1__regEAIResponse *_p = ::soap_new__WS1__regEAIResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__regEAIResponse::regEAIReturn = regEAIReturn; + } + return _p; +} + +inline _WS1__regEAIResponse * soap_new_set__WS1__regEAIResponse( + struct soap *soap, + const std::string& regEAIReturn) +{ + _WS1__regEAIResponse *_p = ::soap_new__WS1__regEAIResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__regEAIResponse::regEAIReturn = regEAIReturn; + } + return _p; +} + +inline int soap_write__WS1__regEAIResponse(struct soap *soap, _WS1__regEAIResponse const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regEAIResponse", p->soap_type() == SOAP_TYPE__WS1__regEAIResponse ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__regEAIResponse(struct soap *soap, const char *URL, _WS1__regEAIResponse const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regEAIResponse", p->soap_type() == SOAP_TYPE__WS1__regEAIResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__regEAIResponse(struct soap *soap, const char *URL, _WS1__regEAIResponse const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regEAIResponse", p->soap_type() == SOAP_TYPE__WS1__regEAIResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__regEAIResponse(struct soap *soap, const char *URL, _WS1__regEAIResponse const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regEAIResponse", p->soap_type() == SOAP_TYPE__WS1__regEAIResponse ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__regEAIResponse * SOAP_FMAC4 soap_get__WS1__regEAIResponse(struct soap*, _WS1__regEAIResponse *, const char*, const char*); + +inline int soap_read__WS1__regEAIResponse(struct soap *soap, _WS1__regEAIResponse *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__regEAIResponse(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__regEAIResponse(struct soap *soap, const char *URL, _WS1__regEAIResponse *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__regEAIResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__regEAIResponse(struct soap *soap, _WS1__regEAIResponse *p) +{ + if (::soap_read__WS1__regEAIResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__regEAI_DEFINED +#define SOAP_TYPE__WS1__regEAI_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__regEAI(struct soap*, const char*, int, const _WS1__regEAI *, const char*); +SOAP_FMAC3 _WS1__regEAI * SOAP_FMAC4 soap_in__WS1__regEAI(struct soap*, const char*, _WS1__regEAI *, const char*); +SOAP_FMAC1 _WS1__regEAI * SOAP_FMAC2 cross_instantiate__WS1__regEAI(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__regEAI * soap_new__WS1__regEAI(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__regEAI(soap, n, NULL, NULL, NULL); +} + +inline _WS1__regEAI * soap_new_req__WS1__regEAI( + struct soap *soap, + const std::string& in0) +{ + _WS1__regEAI *_p = ::soap_new__WS1__regEAI(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__regEAI::in0 = in0; + } + return _p; +} + +inline _WS1__regEAI * soap_new_set__WS1__regEAI( + struct soap *soap, + const std::string& in0) +{ + _WS1__regEAI *_p = ::soap_new__WS1__regEAI(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__regEAI::in0 = in0; + } + return _p; +} + +inline int soap_write__WS1__regEAI(struct soap *soap, _WS1__regEAI const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regEAI", p->soap_type() == SOAP_TYPE__WS1__regEAI ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__regEAI(struct soap *soap, const char *URL, _WS1__regEAI const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regEAI", p->soap_type() == SOAP_TYPE__WS1__regEAI ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__regEAI(struct soap *soap, const char *URL, _WS1__regEAI const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regEAI", p->soap_type() == SOAP_TYPE__WS1__regEAI ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__regEAI(struct soap *soap, const char *URL, _WS1__regEAI const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regEAI", p->soap_type() == SOAP_TYPE__WS1__regEAI ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__regEAI * SOAP_FMAC4 soap_get__WS1__regEAI(struct soap*, _WS1__regEAI *, const char*, const char*); + +inline int soap_read__WS1__regEAI(struct soap *soap, _WS1__regEAI *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__regEAI(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__regEAI(struct soap *soap, const char *URL, _WS1__regEAI *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__regEAI(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__regEAI(struct soap *soap, _WS1__regEAI *p) +{ + if (::soap_read__WS1__regEAI(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__regSrvResponse_DEFINED +#define SOAP_TYPE__WS1__regSrvResponse_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__regSrvResponse(struct soap*, const char*, int, const _WS1__regSrvResponse *, const char*); +SOAP_FMAC3 _WS1__regSrvResponse * SOAP_FMAC4 soap_in__WS1__regSrvResponse(struct soap*, const char*, _WS1__regSrvResponse *, const char*); +SOAP_FMAC1 _WS1__regSrvResponse * SOAP_FMAC2 cross_instantiate__WS1__regSrvResponse(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__regSrvResponse * soap_new__WS1__regSrvResponse(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__regSrvResponse(soap, n, NULL, NULL, NULL); +} + +inline _WS1__regSrvResponse * soap_new_req__WS1__regSrvResponse( + struct soap *soap, + const std::string& regSrvReturn) +{ + _WS1__regSrvResponse *_p = ::soap_new__WS1__regSrvResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__regSrvResponse::regSrvReturn = regSrvReturn; + } + return _p; +} + +inline _WS1__regSrvResponse * soap_new_set__WS1__regSrvResponse( + struct soap *soap, + const std::string& regSrvReturn) +{ + _WS1__regSrvResponse *_p = ::soap_new__WS1__regSrvResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__regSrvResponse::regSrvReturn = regSrvReturn; + } + return _p; +} + +inline int soap_write__WS1__regSrvResponse(struct soap *soap, _WS1__regSrvResponse const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regSrvResponse", p->soap_type() == SOAP_TYPE__WS1__regSrvResponse ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__regSrvResponse(struct soap *soap, const char *URL, _WS1__regSrvResponse const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regSrvResponse", p->soap_type() == SOAP_TYPE__WS1__regSrvResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__regSrvResponse(struct soap *soap, const char *URL, _WS1__regSrvResponse const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regSrvResponse", p->soap_type() == SOAP_TYPE__WS1__regSrvResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__regSrvResponse(struct soap *soap, const char *URL, _WS1__regSrvResponse const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regSrvResponse", p->soap_type() == SOAP_TYPE__WS1__regSrvResponse ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__regSrvResponse * SOAP_FMAC4 soap_get__WS1__regSrvResponse(struct soap*, _WS1__regSrvResponse *, const char*, const char*); + +inline int soap_read__WS1__regSrvResponse(struct soap *soap, _WS1__regSrvResponse *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__regSrvResponse(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__regSrvResponse(struct soap *soap, const char *URL, _WS1__regSrvResponse *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__regSrvResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__regSrvResponse(struct soap *soap, _WS1__regSrvResponse *p) +{ + if (::soap_read__WS1__regSrvResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__regSrv_DEFINED +#define SOAP_TYPE__WS1__regSrv_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__regSrv(struct soap*, const char*, int, const _WS1__regSrv *, const char*); +SOAP_FMAC3 _WS1__regSrv * SOAP_FMAC4 soap_in__WS1__regSrv(struct soap*, const char*, _WS1__regSrv *, const char*); +SOAP_FMAC1 _WS1__regSrv * SOAP_FMAC2 cross_instantiate__WS1__regSrv(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__regSrv * soap_new__WS1__regSrv(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__regSrv(soap, n, NULL, NULL, NULL); +} + +inline _WS1__regSrv * soap_new_req__WS1__regSrv( + struct soap *soap, + const std::string& in0) +{ + _WS1__regSrv *_p = ::soap_new__WS1__regSrv(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__regSrv::in0 = in0; + } + return _p; +} + +inline _WS1__regSrv * soap_new_set__WS1__regSrv( + struct soap *soap, + const std::string& in0) +{ + _WS1__regSrv *_p = ::soap_new__WS1__regSrv(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__regSrv::in0 = in0; + } + return _p; +} + +inline int soap_write__WS1__regSrv(struct soap *soap, _WS1__regSrv const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regSrv", p->soap_type() == SOAP_TYPE__WS1__regSrv ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__regSrv(struct soap *soap, const char *URL, _WS1__regSrv const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regSrv", p->soap_type() == SOAP_TYPE__WS1__regSrv ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__regSrv(struct soap *soap, const char *URL, _WS1__regSrv const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regSrv", p->soap_type() == SOAP_TYPE__WS1__regSrv ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__regSrv(struct soap *soap, const char *URL, _WS1__regSrv const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regSrv", p->soap_type() == SOAP_TYPE__WS1__regSrv ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__regSrv * SOAP_FMAC4 soap_get__WS1__regSrv(struct soap*, _WS1__regSrv *, const char*, const char*); + +inline int soap_read__WS1__regSrv(struct soap *soap, _WS1__regSrv *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__regSrv(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__regSrv(struct soap *soap, const char *URL, _WS1__regSrv *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__regSrv(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__regSrv(struct soap *soap, _WS1__regSrv *p) +{ + if (::soap_read__WS1__regSrv(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__getStandardDataNameListResponse_DEFINED +#define SOAP_TYPE__WS1__getStandardDataNameListResponse_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getStandardDataNameListResponse(struct soap*, const char*, int, const _WS1__getStandardDataNameListResponse *, const char*); +SOAP_FMAC3 _WS1__getStandardDataNameListResponse * SOAP_FMAC4 soap_in__WS1__getStandardDataNameListResponse(struct soap*, const char*, _WS1__getStandardDataNameListResponse *, const char*); +SOAP_FMAC1 _WS1__getStandardDataNameListResponse * SOAP_FMAC2 cross_instantiate__WS1__getStandardDataNameListResponse(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__getStandardDataNameListResponse * soap_new__WS1__getStandardDataNameListResponse(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__getStandardDataNameListResponse(soap, n, NULL, NULL, NULL); +} + +inline _WS1__getStandardDataNameListResponse * soap_new_req__WS1__getStandardDataNameListResponse( + struct soap *soap, + const std::string& getStandardDataNameListReturn) +{ + _WS1__getStandardDataNameListResponse *_p = ::soap_new__WS1__getStandardDataNameListResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__getStandardDataNameListResponse::getStandardDataNameListReturn = getStandardDataNameListReturn; + } + return _p; +} + +inline _WS1__getStandardDataNameListResponse * soap_new_set__WS1__getStandardDataNameListResponse( + struct soap *soap, + const std::string& getStandardDataNameListReturn) +{ + _WS1__getStandardDataNameListResponse *_p = ::soap_new__WS1__getStandardDataNameListResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__getStandardDataNameListResponse::getStandardDataNameListReturn = getStandardDataNameListReturn; + } + return _p; +} + +inline int soap_write__WS1__getStandardDataNameListResponse(struct soap *soap, _WS1__getStandardDataNameListResponse const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getStandardDataNameListResponse", p->soap_type() == SOAP_TYPE__WS1__getStandardDataNameListResponse ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__getStandardDataNameListResponse(struct soap *soap, const char *URL, _WS1__getStandardDataNameListResponse const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getStandardDataNameListResponse", p->soap_type() == SOAP_TYPE__WS1__getStandardDataNameListResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__getStandardDataNameListResponse(struct soap *soap, const char *URL, _WS1__getStandardDataNameListResponse const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getStandardDataNameListResponse", p->soap_type() == SOAP_TYPE__WS1__getStandardDataNameListResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__getStandardDataNameListResponse(struct soap *soap, const char *URL, _WS1__getStandardDataNameListResponse const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getStandardDataNameListResponse", p->soap_type() == SOAP_TYPE__WS1__getStandardDataNameListResponse ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__getStandardDataNameListResponse * SOAP_FMAC4 soap_get__WS1__getStandardDataNameListResponse(struct soap*, _WS1__getStandardDataNameListResponse *, const char*, const char*); + +inline int soap_read__WS1__getStandardDataNameListResponse(struct soap *soap, _WS1__getStandardDataNameListResponse *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__getStandardDataNameListResponse(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__getStandardDataNameListResponse(struct soap *soap, const char *URL, _WS1__getStandardDataNameListResponse *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__getStandardDataNameListResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__getStandardDataNameListResponse(struct soap *soap, _WS1__getStandardDataNameListResponse *p) +{ + if (::soap_read__WS1__getStandardDataNameListResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__getStandardDataNameList_DEFINED +#define SOAP_TYPE__WS1__getStandardDataNameList_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getStandardDataNameList(struct soap*, const char*, int, const _WS1__getStandardDataNameList *, const char*); +SOAP_FMAC3 _WS1__getStandardDataNameList * SOAP_FMAC4 soap_in__WS1__getStandardDataNameList(struct soap*, const char*, _WS1__getStandardDataNameList *, const char*); +SOAP_FMAC1 _WS1__getStandardDataNameList * SOAP_FMAC2 cross_instantiate__WS1__getStandardDataNameList(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__getStandardDataNameList * soap_new__WS1__getStandardDataNameList(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__getStandardDataNameList(soap, n, NULL, NULL, NULL); +} + +inline _WS1__getStandardDataNameList * soap_new_req__WS1__getStandardDataNameList( + struct soap *soap) +{ + _WS1__getStandardDataNameList *_p = ::soap_new__WS1__getStandardDataNameList(soap); + if (_p) + { _p->soap_default(soap); + } + return _p; +} + +inline _WS1__getStandardDataNameList * soap_new_set__WS1__getStandardDataNameList( + struct soap *soap) +{ + _WS1__getStandardDataNameList *_p = ::soap_new__WS1__getStandardDataNameList(soap); + if (_p) + { _p->soap_default(soap); + } + return _p; +} + +inline int soap_write__WS1__getStandardDataNameList(struct soap *soap, _WS1__getStandardDataNameList const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getStandardDataNameList", p->soap_type() == SOAP_TYPE__WS1__getStandardDataNameList ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__getStandardDataNameList(struct soap *soap, const char *URL, _WS1__getStandardDataNameList const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getStandardDataNameList", p->soap_type() == SOAP_TYPE__WS1__getStandardDataNameList ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__getStandardDataNameList(struct soap *soap, const char *URL, _WS1__getStandardDataNameList const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getStandardDataNameList", p->soap_type() == SOAP_TYPE__WS1__getStandardDataNameList ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__getStandardDataNameList(struct soap *soap, const char *URL, _WS1__getStandardDataNameList const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getStandardDataNameList", p->soap_type() == SOAP_TYPE__WS1__getStandardDataNameList ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__getStandardDataNameList * SOAP_FMAC4 soap_get__WS1__getStandardDataNameList(struct soap*, _WS1__getStandardDataNameList *, const char*, const char*); + +inline int soap_read__WS1__getStandardDataNameList(struct soap *soap, _WS1__getStandardDataNameList *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__getStandardDataNameList(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__getStandardDataNameList(struct soap *soap, const char *URL, _WS1__getStandardDataNameList *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__getStandardDataNameList(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__getStandardDataNameList(struct soap *soap, _WS1__getStandardDataNameList *p) +{ + if (::soap_read__WS1__getStandardDataNameList(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__getStandardServiceListResponse_DEFINED +#define SOAP_TYPE__WS1__getStandardServiceListResponse_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getStandardServiceListResponse(struct soap*, const char*, int, const _WS1__getStandardServiceListResponse *, const char*); +SOAP_FMAC3 _WS1__getStandardServiceListResponse * SOAP_FMAC4 soap_in__WS1__getStandardServiceListResponse(struct soap*, const char*, _WS1__getStandardServiceListResponse *, const char*); +SOAP_FMAC1 _WS1__getStandardServiceListResponse * SOAP_FMAC2 cross_instantiate__WS1__getStandardServiceListResponse(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__getStandardServiceListResponse * soap_new__WS1__getStandardServiceListResponse(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__getStandardServiceListResponse(soap, n, NULL, NULL, NULL); +} + +inline _WS1__getStandardServiceListResponse * soap_new_req__WS1__getStandardServiceListResponse( + struct soap *soap, + const std::string& getStandardServiceListReturn) +{ + _WS1__getStandardServiceListResponse *_p = ::soap_new__WS1__getStandardServiceListResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__getStandardServiceListResponse::getStandardServiceListReturn = getStandardServiceListReturn; + } + return _p; +} + +inline _WS1__getStandardServiceListResponse * soap_new_set__WS1__getStandardServiceListResponse( + struct soap *soap, + const std::string& getStandardServiceListReturn) +{ + _WS1__getStandardServiceListResponse *_p = ::soap_new__WS1__getStandardServiceListResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__getStandardServiceListResponse::getStandardServiceListReturn = getStandardServiceListReturn; + } + return _p; +} + +inline int soap_write__WS1__getStandardServiceListResponse(struct soap *soap, _WS1__getStandardServiceListResponse const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getStandardServiceListResponse", p->soap_type() == SOAP_TYPE__WS1__getStandardServiceListResponse ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__getStandardServiceListResponse(struct soap *soap, const char *URL, _WS1__getStandardServiceListResponse const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getStandardServiceListResponse", p->soap_type() == SOAP_TYPE__WS1__getStandardServiceListResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__getStandardServiceListResponse(struct soap *soap, const char *URL, _WS1__getStandardServiceListResponse const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getStandardServiceListResponse", p->soap_type() == SOAP_TYPE__WS1__getStandardServiceListResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__getStandardServiceListResponse(struct soap *soap, const char *URL, _WS1__getStandardServiceListResponse const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getStandardServiceListResponse", p->soap_type() == SOAP_TYPE__WS1__getStandardServiceListResponse ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__getStandardServiceListResponse * SOAP_FMAC4 soap_get__WS1__getStandardServiceListResponse(struct soap*, _WS1__getStandardServiceListResponse *, const char*, const char*); + +inline int soap_read__WS1__getStandardServiceListResponse(struct soap *soap, _WS1__getStandardServiceListResponse *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__getStandardServiceListResponse(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__getStandardServiceListResponse(struct soap *soap, const char *URL, _WS1__getStandardServiceListResponse *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__getStandardServiceListResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__getStandardServiceListResponse(struct soap *soap, _WS1__getStandardServiceListResponse *p) +{ + if (::soap_read__WS1__getStandardServiceListResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__getStandardServiceList_DEFINED +#define SOAP_TYPE__WS1__getStandardServiceList_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getStandardServiceList(struct soap*, const char*, int, const _WS1__getStandardServiceList *, const char*); +SOAP_FMAC3 _WS1__getStandardServiceList * SOAP_FMAC4 soap_in__WS1__getStandardServiceList(struct soap*, const char*, _WS1__getStandardServiceList *, const char*); +SOAP_FMAC1 _WS1__getStandardServiceList * SOAP_FMAC2 cross_instantiate__WS1__getStandardServiceList(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__getStandardServiceList * soap_new__WS1__getStandardServiceList(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__getStandardServiceList(soap, n, NULL, NULL, NULL); +} + +inline _WS1__getStandardServiceList * soap_new_req__WS1__getStandardServiceList( + struct soap *soap) +{ + _WS1__getStandardServiceList *_p = ::soap_new__WS1__getStandardServiceList(soap); + if (_p) + { _p->soap_default(soap); + } + return _p; +} + +inline _WS1__getStandardServiceList * soap_new_set__WS1__getStandardServiceList( + struct soap *soap) +{ + _WS1__getStandardServiceList *_p = ::soap_new__WS1__getStandardServiceList(soap); + if (_p) + { _p->soap_default(soap); + } + return _p; +} + +inline int soap_write__WS1__getStandardServiceList(struct soap *soap, _WS1__getStandardServiceList const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getStandardServiceList", p->soap_type() == SOAP_TYPE__WS1__getStandardServiceList ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__getStandardServiceList(struct soap *soap, const char *URL, _WS1__getStandardServiceList const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getStandardServiceList", p->soap_type() == SOAP_TYPE__WS1__getStandardServiceList ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__getStandardServiceList(struct soap *soap, const char *URL, _WS1__getStandardServiceList const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getStandardServiceList", p->soap_type() == SOAP_TYPE__WS1__getStandardServiceList ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__getStandardServiceList(struct soap *soap, const char *URL, _WS1__getStandardServiceList const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getStandardServiceList", p->soap_type() == SOAP_TYPE__WS1__getStandardServiceList ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__getStandardServiceList * SOAP_FMAC4 soap_get__WS1__getStandardServiceList(struct soap*, _WS1__getStandardServiceList *, const char*, const char*); + +inline int soap_read__WS1__getStandardServiceList(struct soap *soap, _WS1__getStandardServiceList *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__getStandardServiceList(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__getStandardServiceList(struct soap *soap, const char *URL, _WS1__getStandardServiceList *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__getStandardServiceList(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__getStandardServiceList(struct soap *soap, _WS1__getStandardServiceList *p) +{ + if (::soap_read__WS1__getStandardServiceList(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__fpInvokeResponse_DEFINED +#define SOAP_TYPE__WS1__fpInvokeResponse_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__fpInvokeResponse(struct soap*, const char*, int, const _WS1__fpInvokeResponse *, const char*); +SOAP_FMAC3 _WS1__fpInvokeResponse * SOAP_FMAC4 soap_in__WS1__fpInvokeResponse(struct soap*, const char*, _WS1__fpInvokeResponse *, const char*); +SOAP_FMAC1 _WS1__fpInvokeResponse * SOAP_FMAC2 cross_instantiate__WS1__fpInvokeResponse(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__fpInvokeResponse * soap_new__WS1__fpInvokeResponse(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__fpInvokeResponse(soap, n, NULL, NULL, NULL); +} + +inline _WS1__fpInvokeResponse * soap_new_req__WS1__fpInvokeResponse( + struct soap *soap, + const std::string& fpInvokeReturn) +{ + _WS1__fpInvokeResponse *_p = ::soap_new__WS1__fpInvokeResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__fpInvokeResponse::fpInvokeReturn = fpInvokeReturn; + } + return _p; +} + +inline _WS1__fpInvokeResponse * soap_new_set__WS1__fpInvokeResponse( + struct soap *soap, + const std::string& fpInvokeReturn) +{ + _WS1__fpInvokeResponse *_p = ::soap_new__WS1__fpInvokeResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__fpInvokeResponse::fpInvokeReturn = fpInvokeReturn; + } + return _p; +} + +inline int soap_write__WS1__fpInvokeResponse(struct soap *soap, _WS1__fpInvokeResponse const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:fpInvokeResponse", p->soap_type() == SOAP_TYPE__WS1__fpInvokeResponse ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__fpInvokeResponse(struct soap *soap, const char *URL, _WS1__fpInvokeResponse const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:fpInvokeResponse", p->soap_type() == SOAP_TYPE__WS1__fpInvokeResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__fpInvokeResponse(struct soap *soap, const char *URL, _WS1__fpInvokeResponse const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:fpInvokeResponse", p->soap_type() == SOAP_TYPE__WS1__fpInvokeResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__fpInvokeResponse(struct soap *soap, const char *URL, _WS1__fpInvokeResponse const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:fpInvokeResponse", p->soap_type() == SOAP_TYPE__WS1__fpInvokeResponse ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__fpInvokeResponse * SOAP_FMAC4 soap_get__WS1__fpInvokeResponse(struct soap*, _WS1__fpInvokeResponse *, const char*, const char*); + +inline int soap_read__WS1__fpInvokeResponse(struct soap *soap, _WS1__fpInvokeResponse *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__fpInvokeResponse(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__fpInvokeResponse(struct soap *soap, const char *URL, _WS1__fpInvokeResponse *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__fpInvokeResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__fpInvokeResponse(struct soap *soap, _WS1__fpInvokeResponse *p) +{ + if (::soap_read__WS1__fpInvokeResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__fpInvoke_DEFINED +#define SOAP_TYPE__WS1__fpInvoke_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__fpInvoke(struct soap*, const char*, int, const _WS1__fpInvoke *, const char*); +SOAP_FMAC3 _WS1__fpInvoke * SOAP_FMAC4 soap_in__WS1__fpInvoke(struct soap*, const char*, _WS1__fpInvoke *, const char*); +SOAP_FMAC1 _WS1__fpInvoke * SOAP_FMAC2 cross_instantiate__WS1__fpInvoke(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__fpInvoke * soap_new__WS1__fpInvoke(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__fpInvoke(soap, n, NULL, NULL, NULL); +} + +inline _WS1__fpInvoke * soap_new_req__WS1__fpInvoke( + struct soap *soap, + const std::string& in0) +{ + _WS1__fpInvoke *_p = ::soap_new__WS1__fpInvoke(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__fpInvoke::in0 = in0; + } + return _p; +} + +inline _WS1__fpInvoke * soap_new_set__WS1__fpInvoke( + struct soap *soap, + const std::string& in0) +{ + _WS1__fpInvoke *_p = ::soap_new__WS1__fpInvoke(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__fpInvoke::in0 = in0; + } + return _p; +} + +inline int soap_write__WS1__fpInvoke(struct soap *soap, _WS1__fpInvoke const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:fpInvoke", p->soap_type() == SOAP_TYPE__WS1__fpInvoke ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__fpInvoke(struct soap *soap, const char *URL, _WS1__fpInvoke const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:fpInvoke", p->soap_type() == SOAP_TYPE__WS1__fpInvoke ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__fpInvoke(struct soap *soap, const char *URL, _WS1__fpInvoke const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:fpInvoke", p->soap_type() == SOAP_TYPE__WS1__fpInvoke ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__fpInvoke(struct soap *soap, const char *URL, _WS1__fpInvoke const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:fpInvoke", p->soap_type() == SOAP_TYPE__WS1__fpInvoke ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__fpInvoke * SOAP_FMAC4 soap_get__WS1__fpInvoke(struct soap*, _WS1__fpInvoke *, const char*, const char*); + +inline int soap_read__WS1__fpInvoke(struct soap *soap, _WS1__fpInvoke *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__fpInvoke(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__fpInvoke(struct soap *soap, const char *URL, _WS1__fpInvoke *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__fpInvoke(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__fpInvoke(struct soap *soap, _WS1__fpInvoke *p) +{ + if (::soap_read__WS1__fpInvoke(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__getSrvResponse_DEFINED +#define SOAP_TYPE__WS1__getSrvResponse_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getSrvResponse(struct soap*, const char*, int, const _WS1__getSrvResponse *, const char*); +SOAP_FMAC3 _WS1__getSrvResponse * SOAP_FMAC4 soap_in__WS1__getSrvResponse(struct soap*, const char*, _WS1__getSrvResponse *, const char*); +SOAP_FMAC1 _WS1__getSrvResponse * SOAP_FMAC2 cross_instantiate__WS1__getSrvResponse(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__getSrvResponse * soap_new__WS1__getSrvResponse(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__getSrvResponse(soap, n, NULL, NULL, NULL); +} + +inline _WS1__getSrvResponse * soap_new_req__WS1__getSrvResponse( + struct soap *soap, + const std::string& getSrvReturn) +{ + _WS1__getSrvResponse *_p = ::soap_new__WS1__getSrvResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__getSrvResponse::getSrvReturn = getSrvReturn; + } + return _p; +} + +inline _WS1__getSrvResponse * soap_new_set__WS1__getSrvResponse( + struct soap *soap, + const std::string& getSrvReturn) +{ + _WS1__getSrvResponse *_p = ::soap_new__WS1__getSrvResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__getSrvResponse::getSrvReturn = getSrvReturn; + } + return _p; +} + +inline int soap_write__WS1__getSrvResponse(struct soap *soap, _WS1__getSrvResponse const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getSrvResponse", p->soap_type() == SOAP_TYPE__WS1__getSrvResponse ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__getSrvResponse(struct soap *soap, const char *URL, _WS1__getSrvResponse const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getSrvResponse", p->soap_type() == SOAP_TYPE__WS1__getSrvResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__getSrvResponse(struct soap *soap, const char *URL, _WS1__getSrvResponse const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getSrvResponse", p->soap_type() == SOAP_TYPE__WS1__getSrvResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__getSrvResponse(struct soap *soap, const char *URL, _WS1__getSrvResponse const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getSrvResponse", p->soap_type() == SOAP_TYPE__WS1__getSrvResponse ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__getSrvResponse * SOAP_FMAC4 soap_get__WS1__getSrvResponse(struct soap*, _WS1__getSrvResponse *, const char*, const char*); + +inline int soap_read__WS1__getSrvResponse(struct soap *soap, _WS1__getSrvResponse *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__getSrvResponse(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__getSrvResponse(struct soap *soap, const char *URL, _WS1__getSrvResponse *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__getSrvResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__getSrvResponse(struct soap *soap, _WS1__getSrvResponse *p) +{ + if (::soap_read__WS1__getSrvResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__getSrv_DEFINED +#define SOAP_TYPE__WS1__getSrv_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getSrv(struct soap*, const char*, int, const _WS1__getSrv *, const char*); +SOAP_FMAC3 _WS1__getSrv * SOAP_FMAC4 soap_in__WS1__getSrv(struct soap*, const char*, _WS1__getSrv *, const char*); +SOAP_FMAC1 _WS1__getSrv * SOAP_FMAC2 cross_instantiate__WS1__getSrv(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__getSrv * soap_new__WS1__getSrv(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__getSrv(soap, n, NULL, NULL, NULL); +} + +inline _WS1__getSrv * soap_new_req__WS1__getSrv( + struct soap *soap, + const std::string& in0) +{ + _WS1__getSrv *_p = ::soap_new__WS1__getSrv(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__getSrv::in0 = in0; + } + return _p; +} + +inline _WS1__getSrv * soap_new_set__WS1__getSrv( + struct soap *soap, + const std::string& in0) +{ + _WS1__getSrv *_p = ::soap_new__WS1__getSrv(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__getSrv::in0 = in0; + } + return _p; +} + +inline int soap_write__WS1__getSrv(struct soap *soap, _WS1__getSrv const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getSrv", p->soap_type() == SOAP_TYPE__WS1__getSrv ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__getSrv(struct soap *soap, const char *URL, _WS1__getSrv const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getSrv", p->soap_type() == SOAP_TYPE__WS1__getSrv ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__getSrv(struct soap *soap, const char *URL, _WS1__getSrv const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getSrv", p->soap_type() == SOAP_TYPE__WS1__getSrv ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__getSrv(struct soap *soap, const char *URL, _WS1__getSrv const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getSrv", p->soap_type() == SOAP_TYPE__WS1__getSrv ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__getSrv * SOAP_FMAC4 soap_get__WS1__getSrv(struct soap*, _WS1__getSrv *, const char*, const char*); + +inline int soap_read__WS1__getSrv(struct soap *soap, _WS1__getSrv *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__getSrv(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__getSrv(struct soap *soap, const char *URL, _WS1__getSrv *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__getSrv(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__getSrv(struct soap *soap, _WS1__getSrv *p) +{ + if (::soap_read__WS1__getSrv(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__getProdResponse_DEFINED +#define SOAP_TYPE__WS1__getProdResponse_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getProdResponse(struct soap*, const char*, int, const _WS1__getProdResponse *, const char*); +SOAP_FMAC3 _WS1__getProdResponse * SOAP_FMAC4 soap_in__WS1__getProdResponse(struct soap*, const char*, _WS1__getProdResponse *, const char*); +SOAP_FMAC1 _WS1__getProdResponse * SOAP_FMAC2 cross_instantiate__WS1__getProdResponse(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__getProdResponse * soap_new__WS1__getProdResponse(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__getProdResponse(soap, n, NULL, NULL, NULL); +} + +inline _WS1__getProdResponse * soap_new_req__WS1__getProdResponse( + struct soap *soap, + const std::string& getProdReturn) +{ + _WS1__getProdResponse *_p = ::soap_new__WS1__getProdResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__getProdResponse::getProdReturn = getProdReturn; + } + return _p; +} + +inline _WS1__getProdResponse * soap_new_set__WS1__getProdResponse( + struct soap *soap, + const std::string& getProdReturn) +{ + _WS1__getProdResponse *_p = ::soap_new__WS1__getProdResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__getProdResponse::getProdReturn = getProdReturn; + } + return _p; +} + +inline int soap_write__WS1__getProdResponse(struct soap *soap, _WS1__getProdResponse const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getProdResponse", p->soap_type() == SOAP_TYPE__WS1__getProdResponse ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__getProdResponse(struct soap *soap, const char *URL, _WS1__getProdResponse const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getProdResponse", p->soap_type() == SOAP_TYPE__WS1__getProdResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__getProdResponse(struct soap *soap, const char *URL, _WS1__getProdResponse const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getProdResponse", p->soap_type() == SOAP_TYPE__WS1__getProdResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__getProdResponse(struct soap *soap, const char *URL, _WS1__getProdResponse const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getProdResponse", p->soap_type() == SOAP_TYPE__WS1__getProdResponse ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__getProdResponse * SOAP_FMAC4 soap_get__WS1__getProdResponse(struct soap*, _WS1__getProdResponse *, const char*, const char*); + +inline int soap_read__WS1__getProdResponse(struct soap *soap, _WS1__getProdResponse *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__getProdResponse(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__getProdResponse(struct soap *soap, const char *URL, _WS1__getProdResponse *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__getProdResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__getProdResponse(struct soap *soap, _WS1__getProdResponse *p) +{ + if (::soap_read__WS1__getProdResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__getProd_DEFINED +#define SOAP_TYPE__WS1__getProd_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getProd(struct soap*, const char*, int, const _WS1__getProd *, const char*); +SOAP_FMAC3 _WS1__getProd * SOAP_FMAC4 soap_in__WS1__getProd(struct soap*, const char*, _WS1__getProd *, const char*); +SOAP_FMAC1 _WS1__getProd * SOAP_FMAC2 cross_instantiate__WS1__getProd(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__getProd * soap_new__WS1__getProd(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__getProd(soap, n, NULL, NULL, NULL); +} + +inline _WS1__getProd * soap_new_req__WS1__getProd( + struct soap *soap, + const std::string& in0) +{ + _WS1__getProd *_p = ::soap_new__WS1__getProd(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__getProd::in0 = in0; + } + return _p; +} + +inline _WS1__getProd * soap_new_set__WS1__getProd( + struct soap *soap, + const std::string& in0) +{ + _WS1__getProd *_p = ::soap_new__WS1__getProd(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__getProd::in0 = in0; + } + return _p; +} + +inline int soap_write__WS1__getProd(struct soap *soap, _WS1__getProd const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getProd", p->soap_type() == SOAP_TYPE__WS1__getProd ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__getProd(struct soap *soap, const char *URL, _WS1__getProd const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getProd", p->soap_type() == SOAP_TYPE__WS1__getProd ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__getProd(struct soap *soap, const char *URL, _WS1__getProd const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getProd", p->soap_type() == SOAP_TYPE__WS1__getProd ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__getProd(struct soap *soap, const char *URL, _WS1__getProd const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getProd", p->soap_type() == SOAP_TYPE__WS1__getProd ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__getProd * SOAP_FMAC4 soap_get__WS1__getProd(struct soap*, _WS1__getProd *, const char*, const char*); + +inline int soap_read__WS1__getProd(struct soap *soap, _WS1__getProd *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__getProd(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__getProd(struct soap *soap, const char *URL, _WS1__getProd *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__getProd(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__getProd(struct soap *soap, _WS1__getProd *p) +{ + if (::soap_read__WS1__getProd(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__invokeMdmResponse_DEFINED +#define SOAP_TYPE__WS1__invokeMdmResponse_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__invokeMdmResponse(struct soap*, const char*, int, const _WS1__invokeMdmResponse *, const char*); +SOAP_FMAC3 _WS1__invokeMdmResponse * SOAP_FMAC4 soap_in__WS1__invokeMdmResponse(struct soap*, const char*, _WS1__invokeMdmResponse *, const char*); +SOAP_FMAC1 _WS1__invokeMdmResponse * SOAP_FMAC2 cross_instantiate__WS1__invokeMdmResponse(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__invokeMdmResponse * soap_new__WS1__invokeMdmResponse(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__invokeMdmResponse(soap, n, NULL, NULL, NULL); +} + +inline _WS1__invokeMdmResponse * soap_new_req__WS1__invokeMdmResponse( + struct soap *soap, + const std::string& invokeMdmReturn) +{ + _WS1__invokeMdmResponse *_p = ::soap_new__WS1__invokeMdmResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__invokeMdmResponse::invokeMdmReturn = invokeMdmReturn; + } + return _p; +} + +inline _WS1__invokeMdmResponse * soap_new_set__WS1__invokeMdmResponse( + struct soap *soap, + const std::string& invokeMdmReturn) +{ + _WS1__invokeMdmResponse *_p = ::soap_new__WS1__invokeMdmResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__invokeMdmResponse::invokeMdmReturn = invokeMdmReturn; + } + return _p; +} + +inline int soap_write__WS1__invokeMdmResponse(struct soap *soap, _WS1__invokeMdmResponse const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeMdmResponse", p->soap_type() == SOAP_TYPE__WS1__invokeMdmResponse ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__invokeMdmResponse(struct soap *soap, const char *URL, _WS1__invokeMdmResponse const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeMdmResponse", p->soap_type() == SOAP_TYPE__WS1__invokeMdmResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__invokeMdmResponse(struct soap *soap, const char *URL, _WS1__invokeMdmResponse const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeMdmResponse", p->soap_type() == SOAP_TYPE__WS1__invokeMdmResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__invokeMdmResponse(struct soap *soap, const char *URL, _WS1__invokeMdmResponse const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeMdmResponse", p->soap_type() == SOAP_TYPE__WS1__invokeMdmResponse ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__invokeMdmResponse * SOAP_FMAC4 soap_get__WS1__invokeMdmResponse(struct soap*, _WS1__invokeMdmResponse *, const char*, const char*); + +inline int soap_read__WS1__invokeMdmResponse(struct soap *soap, _WS1__invokeMdmResponse *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__invokeMdmResponse(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__invokeMdmResponse(struct soap *soap, const char *URL, _WS1__invokeMdmResponse *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__invokeMdmResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__invokeMdmResponse(struct soap *soap, _WS1__invokeMdmResponse *p) +{ + if (::soap_read__WS1__invokeMdmResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__invokeMdm_DEFINED +#define SOAP_TYPE__WS1__invokeMdm_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__invokeMdm(struct soap*, const char*, int, const _WS1__invokeMdm *, const char*); +SOAP_FMAC3 _WS1__invokeMdm * SOAP_FMAC4 soap_in__WS1__invokeMdm(struct soap*, const char*, _WS1__invokeMdm *, const char*); +SOAP_FMAC1 _WS1__invokeMdm * SOAP_FMAC2 cross_instantiate__WS1__invokeMdm(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__invokeMdm * soap_new__WS1__invokeMdm(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__invokeMdm(soap, n, NULL, NULL, NULL); +} + +inline _WS1__invokeMdm * soap_new_req__WS1__invokeMdm( + struct soap *soap, + const std::string& in0) +{ + _WS1__invokeMdm *_p = ::soap_new__WS1__invokeMdm(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__invokeMdm::in0 = in0; + } + return _p; +} + +inline _WS1__invokeMdm * soap_new_set__WS1__invokeMdm( + struct soap *soap, + const std::string& in0) +{ + _WS1__invokeMdm *_p = ::soap_new__WS1__invokeMdm(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__invokeMdm::in0 = in0; + } + return _p; +} + +inline int soap_write__WS1__invokeMdm(struct soap *soap, _WS1__invokeMdm const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeMdm", p->soap_type() == SOAP_TYPE__WS1__invokeMdm ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__invokeMdm(struct soap *soap, const char *URL, _WS1__invokeMdm const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeMdm", p->soap_type() == SOAP_TYPE__WS1__invokeMdm ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__invokeMdm(struct soap *soap, const char *URL, _WS1__invokeMdm const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeMdm", p->soap_type() == SOAP_TYPE__WS1__invokeMdm ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__invokeMdm(struct soap *soap, const char *URL, _WS1__invokeMdm const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeMdm", p->soap_type() == SOAP_TYPE__WS1__invokeMdm ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__invokeMdm * SOAP_FMAC4 soap_get__WS1__invokeMdm(struct soap*, _WS1__invokeMdm *, const char*, const char*); + +inline int soap_read__WS1__invokeMdm(struct soap *soap, _WS1__invokeMdm *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__invokeMdm(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__invokeMdm(struct soap *soap, const char *URL, _WS1__invokeMdm *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__invokeMdm(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__invokeMdm(struct soap *soap, _WS1__invokeMdm *p) +{ + if (::soap_read__WS1__invokeMdm(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__invokeUnionResponse_DEFINED +#define SOAP_TYPE__WS1__invokeUnionResponse_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__invokeUnionResponse(struct soap*, const char*, int, const _WS1__invokeUnionResponse *, const char*); +SOAP_FMAC3 _WS1__invokeUnionResponse * SOAP_FMAC4 soap_in__WS1__invokeUnionResponse(struct soap*, const char*, _WS1__invokeUnionResponse *, const char*); +SOAP_FMAC1 _WS1__invokeUnionResponse * SOAP_FMAC2 cross_instantiate__WS1__invokeUnionResponse(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__invokeUnionResponse * soap_new__WS1__invokeUnionResponse(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__invokeUnionResponse(soap, n, NULL, NULL, NULL); +} + +inline _WS1__invokeUnionResponse * soap_new_req__WS1__invokeUnionResponse( + struct soap *soap, + const std::string& invokeUnionReturn) +{ + _WS1__invokeUnionResponse *_p = ::soap_new__WS1__invokeUnionResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__invokeUnionResponse::invokeUnionReturn = invokeUnionReturn; + } + return _p; +} + +inline _WS1__invokeUnionResponse * soap_new_set__WS1__invokeUnionResponse( + struct soap *soap, + const std::string& invokeUnionReturn) +{ + _WS1__invokeUnionResponse *_p = ::soap_new__WS1__invokeUnionResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__invokeUnionResponse::invokeUnionReturn = invokeUnionReturn; + } + return _p; +} + +inline int soap_write__WS1__invokeUnionResponse(struct soap *soap, _WS1__invokeUnionResponse const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeUnionResponse", p->soap_type() == SOAP_TYPE__WS1__invokeUnionResponse ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__invokeUnionResponse(struct soap *soap, const char *URL, _WS1__invokeUnionResponse const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeUnionResponse", p->soap_type() == SOAP_TYPE__WS1__invokeUnionResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__invokeUnionResponse(struct soap *soap, const char *URL, _WS1__invokeUnionResponse const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeUnionResponse", p->soap_type() == SOAP_TYPE__WS1__invokeUnionResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__invokeUnionResponse(struct soap *soap, const char *URL, _WS1__invokeUnionResponse const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeUnionResponse", p->soap_type() == SOAP_TYPE__WS1__invokeUnionResponse ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__invokeUnionResponse * SOAP_FMAC4 soap_get__WS1__invokeUnionResponse(struct soap*, _WS1__invokeUnionResponse *, const char*, const char*); + +inline int soap_read__WS1__invokeUnionResponse(struct soap *soap, _WS1__invokeUnionResponse *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__invokeUnionResponse(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__invokeUnionResponse(struct soap *soap, const char *URL, _WS1__invokeUnionResponse *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__invokeUnionResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__invokeUnionResponse(struct soap *soap, _WS1__invokeUnionResponse *p) +{ + if (::soap_read__WS1__invokeUnionResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__invokeUnion_DEFINED +#define SOAP_TYPE__WS1__invokeUnion_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__invokeUnion(struct soap*, const char*, int, const _WS1__invokeUnion *, const char*); +SOAP_FMAC3 _WS1__invokeUnion * SOAP_FMAC4 soap_in__WS1__invokeUnion(struct soap*, const char*, _WS1__invokeUnion *, const char*); +SOAP_FMAC1 _WS1__invokeUnion * SOAP_FMAC2 cross_instantiate__WS1__invokeUnion(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__invokeUnion * soap_new__WS1__invokeUnion(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__invokeUnion(soap, n, NULL, NULL, NULL); +} + +inline _WS1__invokeUnion * soap_new_req__WS1__invokeUnion( + struct soap *soap, + const std::string& in0, + const std::string& in1) +{ + _WS1__invokeUnion *_p = ::soap_new__WS1__invokeUnion(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__invokeUnion::in0 = in0; + _p->_WS1__invokeUnion::in1 = in1; + } + return _p; +} + +inline _WS1__invokeUnion * soap_new_set__WS1__invokeUnion( + struct soap *soap, + const std::string& in0, + const std::string& in1) +{ + _WS1__invokeUnion *_p = ::soap_new__WS1__invokeUnion(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__invokeUnion::in0 = in0; + _p->_WS1__invokeUnion::in1 = in1; + } + return _p; +} + +inline int soap_write__WS1__invokeUnion(struct soap *soap, _WS1__invokeUnion const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeUnion", p->soap_type() == SOAP_TYPE__WS1__invokeUnion ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__invokeUnion(struct soap *soap, const char *URL, _WS1__invokeUnion const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeUnion", p->soap_type() == SOAP_TYPE__WS1__invokeUnion ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__invokeUnion(struct soap *soap, const char *URL, _WS1__invokeUnion const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeUnion", p->soap_type() == SOAP_TYPE__WS1__invokeUnion ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__invokeUnion(struct soap *soap, const char *URL, _WS1__invokeUnion const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeUnion", p->soap_type() == SOAP_TYPE__WS1__invokeUnion ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__invokeUnion * SOAP_FMAC4 soap_get__WS1__invokeUnion(struct soap*, _WS1__invokeUnion *, const char*, const char*); + +inline int soap_read__WS1__invokeUnion(struct soap *soap, _WS1__invokeUnion *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__invokeUnion(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__invokeUnion(struct soap *soap, const char *URL, _WS1__invokeUnion *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__invokeUnion(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__invokeUnion(struct soap *soap, _WS1__invokeUnion *p) +{ + if (::soap_read__WS1__invokeUnion(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__regProdAPResponse_DEFINED +#define SOAP_TYPE__WS1__regProdAPResponse_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__regProdAPResponse(struct soap*, const char*, int, const _WS1__regProdAPResponse *, const char*); +SOAP_FMAC3 _WS1__regProdAPResponse * SOAP_FMAC4 soap_in__WS1__regProdAPResponse(struct soap*, const char*, _WS1__regProdAPResponse *, const char*); +SOAP_FMAC1 _WS1__regProdAPResponse * SOAP_FMAC2 cross_instantiate__WS1__regProdAPResponse(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__regProdAPResponse * soap_new__WS1__regProdAPResponse(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__regProdAPResponse(soap, n, NULL, NULL, NULL); +} + +inline _WS1__regProdAPResponse * soap_new_req__WS1__regProdAPResponse( + struct soap *soap, + const std::string& regProdAPReturn) +{ + _WS1__regProdAPResponse *_p = ::soap_new__WS1__regProdAPResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__regProdAPResponse::regProdAPReturn = regProdAPReturn; + } + return _p; +} + +inline _WS1__regProdAPResponse * soap_new_set__WS1__regProdAPResponse( + struct soap *soap, + const std::string& regProdAPReturn) +{ + _WS1__regProdAPResponse *_p = ::soap_new__WS1__regProdAPResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__regProdAPResponse::regProdAPReturn = regProdAPReturn; + } + return _p; +} + +inline int soap_write__WS1__regProdAPResponse(struct soap *soap, _WS1__regProdAPResponse const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regProdAPResponse", p->soap_type() == SOAP_TYPE__WS1__regProdAPResponse ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__regProdAPResponse(struct soap *soap, const char *URL, _WS1__regProdAPResponse const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regProdAPResponse", p->soap_type() == SOAP_TYPE__WS1__regProdAPResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__regProdAPResponse(struct soap *soap, const char *URL, _WS1__regProdAPResponse const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regProdAPResponse", p->soap_type() == SOAP_TYPE__WS1__regProdAPResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__regProdAPResponse(struct soap *soap, const char *URL, _WS1__regProdAPResponse const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regProdAPResponse", p->soap_type() == SOAP_TYPE__WS1__regProdAPResponse ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__regProdAPResponse * SOAP_FMAC4 soap_get__WS1__regProdAPResponse(struct soap*, _WS1__regProdAPResponse *, const char*, const char*); + +inline int soap_read__WS1__regProdAPResponse(struct soap *soap, _WS1__regProdAPResponse *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__regProdAPResponse(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__regProdAPResponse(struct soap *soap, const char *URL, _WS1__regProdAPResponse *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__regProdAPResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__regProdAPResponse(struct soap *soap, _WS1__regProdAPResponse *p) +{ + if (::soap_read__WS1__regProdAPResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__regProdAP_DEFINED +#define SOAP_TYPE__WS1__regProdAP_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__regProdAP(struct soap*, const char*, int, const _WS1__regProdAP *, const char*); +SOAP_FMAC3 _WS1__regProdAP * SOAP_FMAC4 soap_in__WS1__regProdAP(struct soap*, const char*, _WS1__regProdAP *, const char*); +SOAP_FMAC1 _WS1__regProdAP * SOAP_FMAC2 cross_instantiate__WS1__regProdAP(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__regProdAP * soap_new__WS1__regProdAP(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__regProdAP(soap, n, NULL, NULL, NULL); +} + +inline _WS1__regProdAP * soap_new_req__WS1__regProdAP( + struct soap *soap, + const std::string& in0) +{ + _WS1__regProdAP *_p = ::soap_new__WS1__regProdAP(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__regProdAP::in0 = in0; + } + return _p; +} + +inline _WS1__regProdAP * soap_new_set__WS1__regProdAP( + struct soap *soap, + const std::string& in0) +{ + _WS1__regProdAP *_p = ::soap_new__WS1__regProdAP(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__regProdAP::in0 = in0; + } + return _p; +} + +inline int soap_write__WS1__regProdAP(struct soap *soap, _WS1__regProdAP const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regProdAP", p->soap_type() == SOAP_TYPE__WS1__regProdAP ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__regProdAP(struct soap *soap, const char *URL, _WS1__regProdAP const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regProdAP", p->soap_type() == SOAP_TYPE__WS1__regProdAP ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__regProdAP(struct soap *soap, const char *URL, _WS1__regProdAP const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regProdAP", p->soap_type() == SOAP_TYPE__WS1__regProdAP ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__regProdAP(struct soap *soap, const char *URL, _WS1__regProdAP const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:regProdAP", p->soap_type() == SOAP_TYPE__WS1__regProdAP ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__regProdAP * SOAP_FMAC4 soap_get__WS1__regProdAP(struct soap*, _WS1__regProdAP *, const char*, const char*); + +inline int soap_read__WS1__regProdAP(struct soap *soap, _WS1__regProdAP *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__regProdAP(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__regProdAP(struct soap *soap, const char *URL, _WS1__regProdAP *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__regProdAP(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__regProdAP(struct soap *soap, _WS1__regProdAP *p) +{ + if (::soap_read__WS1__regProdAP(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__getProdListResponse_DEFINED +#define SOAP_TYPE__WS1__getProdListResponse_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getProdListResponse(struct soap*, const char*, int, const _WS1__getProdListResponse *, const char*); +SOAP_FMAC3 _WS1__getProdListResponse * SOAP_FMAC4 soap_in__WS1__getProdListResponse(struct soap*, const char*, _WS1__getProdListResponse *, const char*); +SOAP_FMAC1 _WS1__getProdListResponse * SOAP_FMAC2 cross_instantiate__WS1__getProdListResponse(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__getProdListResponse * soap_new__WS1__getProdListResponse(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__getProdListResponse(soap, n, NULL, NULL, NULL); +} + +inline _WS1__getProdListResponse * soap_new_req__WS1__getProdListResponse( + struct soap *soap, + const std::string& getProdListReturn) +{ + _WS1__getProdListResponse *_p = ::soap_new__WS1__getProdListResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__getProdListResponse::getProdListReturn = getProdListReturn; + } + return _p; +} + +inline _WS1__getProdListResponse * soap_new_set__WS1__getProdListResponse( + struct soap *soap, + const std::string& getProdListReturn) +{ + _WS1__getProdListResponse *_p = ::soap_new__WS1__getProdListResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__getProdListResponse::getProdListReturn = getProdListReturn; + } + return _p; +} + +inline int soap_write__WS1__getProdListResponse(struct soap *soap, _WS1__getProdListResponse const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getProdListResponse", p->soap_type() == SOAP_TYPE__WS1__getProdListResponse ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__getProdListResponse(struct soap *soap, const char *URL, _WS1__getProdListResponse const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getProdListResponse", p->soap_type() == SOAP_TYPE__WS1__getProdListResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__getProdListResponse(struct soap *soap, const char *URL, _WS1__getProdListResponse const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getProdListResponse", p->soap_type() == SOAP_TYPE__WS1__getProdListResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__getProdListResponse(struct soap *soap, const char *URL, _WS1__getProdListResponse const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getProdListResponse", p->soap_type() == SOAP_TYPE__WS1__getProdListResponse ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__getProdListResponse * SOAP_FMAC4 soap_get__WS1__getProdListResponse(struct soap*, _WS1__getProdListResponse *, const char*, const char*); + +inline int soap_read__WS1__getProdListResponse(struct soap *soap, _WS1__getProdListResponse *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__getProdListResponse(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__getProdListResponse(struct soap *soap, const char *URL, _WS1__getProdListResponse *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__getProdListResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__getProdListResponse(struct soap *soap, _WS1__getProdListResponse *p) +{ + if (::soap_read__WS1__getProdListResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__getProdList_DEFINED +#define SOAP_TYPE__WS1__getProdList_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getProdList(struct soap*, const char*, int, const _WS1__getProdList *, const char*); +SOAP_FMAC3 _WS1__getProdList * SOAP_FMAC4 soap_in__WS1__getProdList(struct soap*, const char*, _WS1__getProdList *, const char*); +SOAP_FMAC1 _WS1__getProdList * SOAP_FMAC2 cross_instantiate__WS1__getProdList(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__getProdList * soap_new__WS1__getProdList(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__getProdList(soap, n, NULL, NULL, NULL); +} + +inline _WS1__getProdList * soap_new_req__WS1__getProdList( + struct soap *soap) +{ + _WS1__getProdList *_p = ::soap_new__WS1__getProdList(soap); + if (_p) + { _p->soap_default(soap); + } + return _p; +} + +inline _WS1__getProdList * soap_new_set__WS1__getProdList( + struct soap *soap) +{ + _WS1__getProdList *_p = ::soap_new__WS1__getProdList(soap); + if (_p) + { _p->soap_default(soap); + } + return _p; +} + +inline int soap_write__WS1__getProdList(struct soap *soap, _WS1__getProdList const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getProdList", p->soap_type() == SOAP_TYPE__WS1__getProdList ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__getProdList(struct soap *soap, const char *URL, _WS1__getProdList const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getProdList", p->soap_type() == SOAP_TYPE__WS1__getProdList ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__getProdList(struct soap *soap, const char *URL, _WS1__getProdList const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getProdList", p->soap_type() == SOAP_TYPE__WS1__getProdList ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__getProdList(struct soap *soap, const char *URL, _WS1__getProdList const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getProdList", p->soap_type() == SOAP_TYPE__WS1__getProdList ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__getProdList * SOAP_FMAC4 soap_get__WS1__getProdList(struct soap*, _WS1__getProdList *, const char*, const char*); + +inline int soap_read__WS1__getProdList(struct soap *soap, _WS1__getProdList *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__getProdList(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__getProdList(struct soap *soap, const char *URL, _WS1__getProdList *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__getProdList(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__getProdList(struct soap *soap, _WS1__getProdList *p) +{ + if (::soap_read__WS1__getProdList(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__getParamListResponse_DEFINED +#define SOAP_TYPE__WS1__getParamListResponse_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getParamListResponse(struct soap*, const char*, int, const _WS1__getParamListResponse *, const char*); +SOAP_FMAC3 _WS1__getParamListResponse * SOAP_FMAC4 soap_in__WS1__getParamListResponse(struct soap*, const char*, _WS1__getParamListResponse *, const char*); +SOAP_FMAC1 _WS1__getParamListResponse * SOAP_FMAC2 cross_instantiate__WS1__getParamListResponse(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__getParamListResponse * soap_new__WS1__getParamListResponse(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__getParamListResponse(soap, n, NULL, NULL, NULL); +} + +inline _WS1__getParamListResponse * soap_new_req__WS1__getParamListResponse( + struct soap *soap, + const std::string& getParamListReturn) +{ + _WS1__getParamListResponse *_p = ::soap_new__WS1__getParamListResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__getParamListResponse::getParamListReturn = getParamListReturn; + } + return _p; +} + +inline _WS1__getParamListResponse * soap_new_set__WS1__getParamListResponse( + struct soap *soap, + const std::string& getParamListReturn) +{ + _WS1__getParamListResponse *_p = ::soap_new__WS1__getParamListResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__getParamListResponse::getParamListReturn = getParamListReturn; + } + return _p; +} + +inline int soap_write__WS1__getParamListResponse(struct soap *soap, _WS1__getParamListResponse const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getParamListResponse", p->soap_type() == SOAP_TYPE__WS1__getParamListResponse ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__getParamListResponse(struct soap *soap, const char *URL, _WS1__getParamListResponse const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getParamListResponse", p->soap_type() == SOAP_TYPE__WS1__getParamListResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__getParamListResponse(struct soap *soap, const char *URL, _WS1__getParamListResponse const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getParamListResponse", p->soap_type() == SOAP_TYPE__WS1__getParamListResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__getParamListResponse(struct soap *soap, const char *URL, _WS1__getParamListResponse const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getParamListResponse", p->soap_type() == SOAP_TYPE__WS1__getParamListResponse ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__getParamListResponse * SOAP_FMAC4 soap_get__WS1__getParamListResponse(struct soap*, _WS1__getParamListResponse *, const char*, const char*); + +inline int soap_read__WS1__getParamListResponse(struct soap *soap, _WS1__getParamListResponse *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__getParamListResponse(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__getParamListResponse(struct soap *soap, const char *URL, _WS1__getParamListResponse *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__getParamListResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__getParamListResponse(struct soap *soap, _WS1__getParamListResponse *p) +{ + if (::soap_read__WS1__getParamListResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__getParamList_DEFINED +#define SOAP_TYPE__WS1__getParamList_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getParamList(struct soap*, const char*, int, const _WS1__getParamList *, const char*); +SOAP_FMAC3 _WS1__getParamList * SOAP_FMAC4 soap_in__WS1__getParamList(struct soap*, const char*, _WS1__getParamList *, const char*); +SOAP_FMAC1 _WS1__getParamList * SOAP_FMAC2 cross_instantiate__WS1__getParamList(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__getParamList * soap_new__WS1__getParamList(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__getParamList(soap, n, NULL, NULL, NULL); +} + +inline _WS1__getParamList * soap_new_req__WS1__getParamList( + struct soap *soap) +{ + _WS1__getParamList *_p = ::soap_new__WS1__getParamList(soap); + if (_p) + { _p->soap_default(soap); + } + return _p; +} + +inline _WS1__getParamList * soap_new_set__WS1__getParamList( + struct soap *soap) +{ + _WS1__getParamList *_p = ::soap_new__WS1__getParamList(soap); + if (_p) + { _p->soap_default(soap); + } + return _p; +} + +inline int soap_write__WS1__getParamList(struct soap *soap, _WS1__getParamList const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getParamList", p->soap_type() == SOAP_TYPE__WS1__getParamList ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__getParamList(struct soap *soap, const char *URL, _WS1__getParamList const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getParamList", p->soap_type() == SOAP_TYPE__WS1__getParamList ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__getParamList(struct soap *soap, const char *URL, _WS1__getParamList const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getParamList", p->soap_type() == SOAP_TYPE__WS1__getParamList ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__getParamList(struct soap *soap, const char *URL, _WS1__getParamList const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getParamList", p->soap_type() == SOAP_TYPE__WS1__getParamList ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__getParamList * SOAP_FMAC4 soap_get__WS1__getParamList(struct soap*, _WS1__getParamList *, const char*, const char*); + +inline int soap_read__WS1__getParamList(struct soap *soap, _WS1__getParamList *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__getParamList(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__getParamList(struct soap *soap, const char *URL, _WS1__getParamList *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__getParamList(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__getParamList(struct soap *soap, _WS1__getParamList *p) +{ + if (::soap_read__WS1__getParamList(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__getEtlJobListResponse_DEFINED +#define SOAP_TYPE__WS1__getEtlJobListResponse_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getEtlJobListResponse(struct soap*, const char*, int, const _WS1__getEtlJobListResponse *, const char*); +SOAP_FMAC3 _WS1__getEtlJobListResponse * SOAP_FMAC4 soap_in__WS1__getEtlJobListResponse(struct soap*, const char*, _WS1__getEtlJobListResponse *, const char*); +SOAP_FMAC1 _WS1__getEtlJobListResponse * SOAP_FMAC2 cross_instantiate__WS1__getEtlJobListResponse(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__getEtlJobListResponse * soap_new__WS1__getEtlJobListResponse(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__getEtlJobListResponse(soap, n, NULL, NULL, NULL); +} + +inline _WS1__getEtlJobListResponse * soap_new_req__WS1__getEtlJobListResponse( + struct soap *soap, + const std::string& getEtlJobListReturn) +{ + _WS1__getEtlJobListResponse *_p = ::soap_new__WS1__getEtlJobListResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__getEtlJobListResponse::getEtlJobListReturn = getEtlJobListReturn; + } + return _p; +} + +inline _WS1__getEtlJobListResponse * soap_new_set__WS1__getEtlJobListResponse( + struct soap *soap, + const std::string& getEtlJobListReturn) +{ + _WS1__getEtlJobListResponse *_p = ::soap_new__WS1__getEtlJobListResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__getEtlJobListResponse::getEtlJobListReturn = getEtlJobListReturn; + } + return _p; +} + +inline int soap_write__WS1__getEtlJobListResponse(struct soap *soap, _WS1__getEtlJobListResponse const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getEtlJobListResponse", p->soap_type() == SOAP_TYPE__WS1__getEtlJobListResponse ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__getEtlJobListResponse(struct soap *soap, const char *URL, _WS1__getEtlJobListResponse const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getEtlJobListResponse", p->soap_type() == SOAP_TYPE__WS1__getEtlJobListResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__getEtlJobListResponse(struct soap *soap, const char *URL, _WS1__getEtlJobListResponse const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getEtlJobListResponse", p->soap_type() == SOAP_TYPE__WS1__getEtlJobListResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__getEtlJobListResponse(struct soap *soap, const char *URL, _WS1__getEtlJobListResponse const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getEtlJobListResponse", p->soap_type() == SOAP_TYPE__WS1__getEtlJobListResponse ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__getEtlJobListResponse * SOAP_FMAC4 soap_get__WS1__getEtlJobListResponse(struct soap*, _WS1__getEtlJobListResponse *, const char*, const char*); + +inline int soap_read__WS1__getEtlJobListResponse(struct soap *soap, _WS1__getEtlJobListResponse *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__getEtlJobListResponse(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__getEtlJobListResponse(struct soap *soap, const char *URL, _WS1__getEtlJobListResponse *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__getEtlJobListResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__getEtlJobListResponse(struct soap *soap, _WS1__getEtlJobListResponse *p) +{ + if (::soap_read__WS1__getEtlJobListResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__getEtlJobList_DEFINED +#define SOAP_TYPE__WS1__getEtlJobList_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__getEtlJobList(struct soap*, const char*, int, const _WS1__getEtlJobList *, const char*); +SOAP_FMAC3 _WS1__getEtlJobList * SOAP_FMAC4 soap_in__WS1__getEtlJobList(struct soap*, const char*, _WS1__getEtlJobList *, const char*); +SOAP_FMAC1 _WS1__getEtlJobList * SOAP_FMAC2 cross_instantiate__WS1__getEtlJobList(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__getEtlJobList * soap_new__WS1__getEtlJobList(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__getEtlJobList(soap, n, NULL, NULL, NULL); +} + +inline _WS1__getEtlJobList * soap_new_req__WS1__getEtlJobList( + struct soap *soap, + const std::string& in0) +{ + _WS1__getEtlJobList *_p = ::soap_new__WS1__getEtlJobList(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__getEtlJobList::in0 = in0; + } + return _p; +} + +inline _WS1__getEtlJobList * soap_new_set__WS1__getEtlJobList( + struct soap *soap, + const std::string& in0) +{ + _WS1__getEtlJobList *_p = ::soap_new__WS1__getEtlJobList(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__getEtlJobList::in0 = in0; + } + return _p; +} + +inline int soap_write__WS1__getEtlJobList(struct soap *soap, _WS1__getEtlJobList const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getEtlJobList", p->soap_type() == SOAP_TYPE__WS1__getEtlJobList ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__getEtlJobList(struct soap *soap, const char *URL, _WS1__getEtlJobList const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getEtlJobList", p->soap_type() == SOAP_TYPE__WS1__getEtlJobList ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__getEtlJobList(struct soap *soap, const char *URL, _WS1__getEtlJobList const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getEtlJobList", p->soap_type() == SOAP_TYPE__WS1__getEtlJobList ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__getEtlJobList(struct soap *soap, const char *URL, _WS1__getEtlJobList const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:getEtlJobList", p->soap_type() == SOAP_TYPE__WS1__getEtlJobList ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__getEtlJobList * SOAP_FMAC4 soap_get__WS1__getEtlJobList(struct soap*, _WS1__getEtlJobList *, const char*, const char*); + +inline int soap_read__WS1__getEtlJobList(struct soap *soap, _WS1__getEtlJobList *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__getEtlJobList(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__getEtlJobList(struct soap *soap, const char *URL, _WS1__getEtlJobList *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__getEtlJobList(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__getEtlJobList(struct soap *soap, _WS1__getEtlJobList *p) +{ + if (::soap_read__WS1__getEtlJobList(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__invokeEtlResponse_DEFINED +#define SOAP_TYPE__WS1__invokeEtlResponse_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__invokeEtlResponse(struct soap*, const char*, int, const _WS1__invokeEtlResponse *, const char*); +SOAP_FMAC3 _WS1__invokeEtlResponse * SOAP_FMAC4 soap_in__WS1__invokeEtlResponse(struct soap*, const char*, _WS1__invokeEtlResponse *, const char*); +SOAP_FMAC1 _WS1__invokeEtlResponse * SOAP_FMAC2 cross_instantiate__WS1__invokeEtlResponse(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__invokeEtlResponse * soap_new__WS1__invokeEtlResponse(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__invokeEtlResponse(soap, n, NULL, NULL, NULL); +} + +inline _WS1__invokeEtlResponse * soap_new_req__WS1__invokeEtlResponse( + struct soap *soap, + const std::string& invokeEtlReturn) +{ + _WS1__invokeEtlResponse *_p = ::soap_new__WS1__invokeEtlResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__invokeEtlResponse::invokeEtlReturn = invokeEtlReturn; + } + return _p; +} + +inline _WS1__invokeEtlResponse * soap_new_set__WS1__invokeEtlResponse( + struct soap *soap, + const std::string& invokeEtlReturn) +{ + _WS1__invokeEtlResponse *_p = ::soap_new__WS1__invokeEtlResponse(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__invokeEtlResponse::invokeEtlReturn = invokeEtlReturn; + } + return _p; +} + +inline int soap_write__WS1__invokeEtlResponse(struct soap *soap, _WS1__invokeEtlResponse const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeEtlResponse", p->soap_type() == SOAP_TYPE__WS1__invokeEtlResponse ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__invokeEtlResponse(struct soap *soap, const char *URL, _WS1__invokeEtlResponse const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeEtlResponse", p->soap_type() == SOAP_TYPE__WS1__invokeEtlResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__invokeEtlResponse(struct soap *soap, const char *URL, _WS1__invokeEtlResponse const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeEtlResponse", p->soap_type() == SOAP_TYPE__WS1__invokeEtlResponse ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__invokeEtlResponse(struct soap *soap, const char *URL, _WS1__invokeEtlResponse const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeEtlResponse", p->soap_type() == SOAP_TYPE__WS1__invokeEtlResponse ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__invokeEtlResponse * SOAP_FMAC4 soap_get__WS1__invokeEtlResponse(struct soap*, _WS1__invokeEtlResponse *, const char*, const char*); + +inline int soap_read__WS1__invokeEtlResponse(struct soap *soap, _WS1__invokeEtlResponse *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__invokeEtlResponse(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__invokeEtlResponse(struct soap *soap, const char *URL, _WS1__invokeEtlResponse *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__invokeEtlResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__invokeEtlResponse(struct soap *soap, _WS1__invokeEtlResponse *p) +{ + if (::soap_read__WS1__invokeEtlResponse(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__WS1__invokeEtl_DEFINED +#define SOAP_TYPE__WS1__invokeEtl_DEFINED +SOAP_FMAC3 int SOAP_FMAC4 soap_out__WS1__invokeEtl(struct soap*, const char*, int, const _WS1__invokeEtl *, const char*); +SOAP_FMAC3 _WS1__invokeEtl * SOAP_FMAC4 soap_in__WS1__invokeEtl(struct soap*, const char*, _WS1__invokeEtl *, const char*); +SOAP_FMAC1 _WS1__invokeEtl * SOAP_FMAC2 cross_instantiate__WS1__invokeEtl(struct soap*, int, const char*, const char*, size_t*); + +inline _WS1__invokeEtl * soap_new__WS1__invokeEtl(struct soap *soap, int n = -1) +{ + return cross_instantiate__WS1__invokeEtl(soap, n, NULL, NULL, NULL); +} + +inline _WS1__invokeEtl * soap_new_req__WS1__invokeEtl( + struct soap *soap, + const std::string& in0) +{ + _WS1__invokeEtl *_p = ::soap_new__WS1__invokeEtl(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__invokeEtl::in0 = in0; + } + return _p; +} + +inline _WS1__invokeEtl * soap_new_set__WS1__invokeEtl( + struct soap *soap, + const std::string& in0) +{ + _WS1__invokeEtl *_p = ::soap_new__WS1__invokeEtl(soap); + if (_p) + { _p->soap_default(soap); + _p->_WS1__invokeEtl::in0 = in0; + } + return _p; +} + +inline int soap_write__WS1__invokeEtl(struct soap *soap, _WS1__invokeEtl const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeEtl", p->soap_type() == SOAP_TYPE__WS1__invokeEtl ? "" : NULL) || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT__WS1__invokeEtl(struct soap *soap, const char *URL, _WS1__invokeEtl const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeEtl", p->soap_type() == SOAP_TYPE__WS1__invokeEtl ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__WS1__invokeEtl(struct soap *soap, const char *URL, _WS1__invokeEtl const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeEtl", p->soap_type() == SOAP_TYPE__WS1__invokeEtl ? "" : NULL) || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__WS1__invokeEtl(struct soap *soap, const char *URL, _WS1__invokeEtl const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (p->soap_serialize(soap), 0) || p->soap_put(soap, "WS1:invokeEtl", p->soap_type() == SOAP_TYPE__WS1__invokeEtl ? "" : NULL) || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 _WS1__invokeEtl * SOAP_FMAC4 soap_get__WS1__invokeEtl(struct soap*, _WS1__invokeEtl *, const char*, const char*); + +inline int soap_read__WS1__invokeEtl(struct soap *soap, _WS1__invokeEtl *p) +{ + if (p) + { p->soap_default(soap); + if (soap_begin_recv(soap) || ::soap_get__WS1__invokeEtl(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__WS1__invokeEtl(struct soap *soap, const char *URL, _WS1__invokeEtl *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__WS1__invokeEtl(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__WS1__invokeEtl(struct soap *soap, _WS1__invokeEtl *p) +{ + if (::soap_read__WS1__invokeEtl(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_SOAP_ENV__Fault_DEFINED +#define SOAP_TYPE_SOAP_ENV__Fault_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap*, const char*, int, const struct SOAP_ENV__Fault *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap*, const char*, struct SOAP_ENV__Fault *, const char*); +SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 cross_instantiate_SOAP_ENV__Fault(struct soap*, int, const char*, const char*, size_t*); + +inline struct SOAP_ENV__Fault * soap_new_SOAP_ENV__Fault(struct soap *soap, int n = -1) +{ + return cross_instantiate_SOAP_ENV__Fault(soap, n, NULL, NULL, NULL); +} + +inline struct SOAP_ENV__Fault * soap_new_req_SOAP_ENV__Fault( + struct soap *soap) +{ + struct SOAP_ENV__Fault *_p = ::soap_new_SOAP_ENV__Fault(soap); + if (_p) + { ::soap_default_SOAP_ENV__Fault(soap, _p); + } + return _p; +} + +inline struct SOAP_ENV__Fault * soap_new_set_SOAP_ENV__Fault( + struct soap *soap, + char *faultcode, + char *faultstring, + char *faultactor, + struct SOAP_ENV__Detail *detail, + struct SOAP_ENV__Code *SOAP_ENV__Code, + struct SOAP_ENV__Reason *SOAP_ENV__Reason, + char *SOAP_ENV__Node, + char *SOAP_ENV__Role, + struct SOAP_ENV__Detail *SOAP_ENV__Detail) +{ + struct SOAP_ENV__Fault *_p = ::soap_new_SOAP_ENV__Fault(soap); + if (_p) + { ::soap_default_SOAP_ENV__Fault(soap, _p); + _p->faultcode = faultcode; + _p->faultstring = faultstring; + _p->faultactor = faultactor; + _p->detail = detail; + _p->SOAP_ENV__Code = SOAP_ENV__Code; + _p->SOAP_ENV__Reason = SOAP_ENV__Reason; + _p->SOAP_ENV__Node = SOAP_ENV__Node; + _p->SOAP_ENV__Role = SOAP_ENV__Role; + _p->SOAP_ENV__Detail = SOAP_ENV__Detail; + } + return _p; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *, const char*, const char*); + +inline int soap_write_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (::soap_serialize_SOAP_ENV__Fault(soap, p), 0) || ::soap_put_SOAP_ENV__Fault(soap, p, "SOAP-ENV:Fault", "") || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT_SOAP_ENV__Fault(struct soap *soap, const char *URL, struct SOAP_ENV__Fault const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize_SOAP_ENV__Fault(soap, p), 0) || ::soap_put_SOAP_ENV__Fault(soap, p, "SOAP-ENV:Fault", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH_SOAP_ENV__Fault(struct soap *soap, const char *URL, struct SOAP_ENV__Fault const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize_SOAP_ENV__Fault(soap, p), 0) || ::soap_put_SOAP_ENV__Fault(soap, p, "SOAP-ENV:Fault", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send_SOAP_ENV__Fault(struct soap *soap, const char *URL, struct SOAP_ENV__Fault const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize_SOAP_ENV__Fault(soap, p), 0) || ::soap_put_SOAP_ENV__Fault(soap, p, "SOAP-ENV:Fault", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *, const char*, const char*); + +inline int soap_read_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *p) +{ + if (p) + { ::soap_default_SOAP_ENV__Fault(soap, p); + if (soap_begin_recv(soap) || ::soap_get_SOAP_ENV__Fault(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET_SOAP_ENV__Fault(struct soap *soap, const char *URL, struct SOAP_ENV__Fault *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read_SOAP_ENV__Fault(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *p) +{ + if (::soap_read_SOAP_ENV__Fault(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_SOAP_ENV__Reason_DEFINED +#define SOAP_TYPE_SOAP_ENV__Reason_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap*, const char*, int, const struct SOAP_ENV__Reason *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason *, const char*); +SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 cross_instantiate_SOAP_ENV__Reason(struct soap*, int, const char*, const char*, size_t*); + +inline struct SOAP_ENV__Reason * soap_new_SOAP_ENV__Reason(struct soap *soap, int n = -1) +{ + return cross_instantiate_SOAP_ENV__Reason(soap, n, NULL, NULL, NULL); +} + +inline struct SOAP_ENV__Reason * soap_new_req_SOAP_ENV__Reason( + struct soap *soap) +{ + struct SOAP_ENV__Reason *_p = ::soap_new_SOAP_ENV__Reason(soap); + if (_p) + { ::soap_default_SOAP_ENV__Reason(soap, _p); + } + return _p; +} + +inline struct SOAP_ENV__Reason * soap_new_set_SOAP_ENV__Reason( + struct soap *soap, + char *SOAP_ENV__Text) +{ + struct SOAP_ENV__Reason *_p = ::soap_new_SOAP_ENV__Reason(soap); + if (_p) + { ::soap_default_SOAP_ENV__Reason(soap, _p); + _p->SOAP_ENV__Text = SOAP_ENV__Text; + } + return _p; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *, const char*, const char*); + +inline int soap_write_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (::soap_serialize_SOAP_ENV__Reason(soap, p), 0) || ::soap_put_SOAP_ENV__Reason(soap, p, "SOAP-ENV:Reason", "") || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT_SOAP_ENV__Reason(struct soap *soap, const char *URL, struct SOAP_ENV__Reason const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize_SOAP_ENV__Reason(soap, p), 0) || ::soap_put_SOAP_ENV__Reason(soap, p, "SOAP-ENV:Reason", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH_SOAP_ENV__Reason(struct soap *soap, const char *URL, struct SOAP_ENV__Reason const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize_SOAP_ENV__Reason(soap, p), 0) || ::soap_put_SOAP_ENV__Reason(soap, p, "SOAP-ENV:Reason", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send_SOAP_ENV__Reason(struct soap *soap, const char *URL, struct SOAP_ENV__Reason const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize_SOAP_ENV__Reason(soap, p), 0) || ::soap_put_SOAP_ENV__Reason(soap, p, "SOAP-ENV:Reason", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *, const char*, const char*); + +inline int soap_read_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *p) +{ + if (p) + { ::soap_default_SOAP_ENV__Reason(soap, p); + if (soap_begin_recv(soap) || ::soap_get_SOAP_ENV__Reason(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET_SOAP_ENV__Reason(struct soap *soap, const char *URL, struct SOAP_ENV__Reason *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read_SOAP_ENV__Reason(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *p) +{ + if (::soap_read_SOAP_ENV__Reason(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_SOAP_ENV__Detail_DEFINED +#define SOAP_TYPE_SOAP_ENV__Detail_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap*, const char*, int, const struct SOAP_ENV__Detail *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail *, const char*); +SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 cross_instantiate_SOAP_ENV__Detail(struct soap*, int, const char*, const char*, size_t*); + +inline struct SOAP_ENV__Detail * soap_new_SOAP_ENV__Detail(struct soap *soap, int n = -1) +{ + return cross_instantiate_SOAP_ENV__Detail(soap, n, NULL, NULL, NULL); +} + +inline struct SOAP_ENV__Detail * soap_new_req_SOAP_ENV__Detail( + struct soap *soap, + int __type, + void *fault) +{ + struct SOAP_ENV__Detail *_p = ::soap_new_SOAP_ENV__Detail(soap); + if (_p) + { ::soap_default_SOAP_ENV__Detail(soap, _p); + _p->__type = __type; + _p->fault = fault; + } + return _p; +} + +inline struct SOAP_ENV__Detail * soap_new_set_SOAP_ENV__Detail( + struct soap *soap, + char *__any, + int __type, + void *fault) +{ + struct SOAP_ENV__Detail *_p = ::soap_new_SOAP_ENV__Detail(soap); + if (_p) + { ::soap_default_SOAP_ENV__Detail(soap, _p); + _p->__any = __any; + _p->__type = __type; + _p->fault = fault; + } + return _p; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *, const char*, const char*); + +inline int soap_write_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (::soap_serialize_SOAP_ENV__Detail(soap, p), 0) || ::soap_put_SOAP_ENV__Detail(soap, p, "SOAP-ENV:Detail", "") || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT_SOAP_ENV__Detail(struct soap *soap, const char *URL, struct SOAP_ENV__Detail const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize_SOAP_ENV__Detail(soap, p), 0) || ::soap_put_SOAP_ENV__Detail(soap, p, "SOAP-ENV:Detail", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH_SOAP_ENV__Detail(struct soap *soap, const char *URL, struct SOAP_ENV__Detail const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize_SOAP_ENV__Detail(soap, p), 0) || ::soap_put_SOAP_ENV__Detail(soap, p, "SOAP-ENV:Detail", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send_SOAP_ENV__Detail(struct soap *soap, const char *URL, struct SOAP_ENV__Detail const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize_SOAP_ENV__Detail(soap, p), 0) || ::soap_put_SOAP_ENV__Detail(soap, p, "SOAP-ENV:Detail", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *, const char*, const char*); + +inline int soap_read_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *p) +{ + if (p) + { ::soap_default_SOAP_ENV__Detail(soap, p); + if (soap_begin_recv(soap) || ::soap_get_SOAP_ENV__Detail(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET_SOAP_ENV__Detail(struct soap *soap, const char *URL, struct SOAP_ENV__Detail *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read_SOAP_ENV__Detail(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *p) +{ + if (::soap_read_SOAP_ENV__Detail(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_SOAP_ENV__Code_DEFINED +#define SOAP_TYPE_SOAP_ENV__Code_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap*, const char*, int, const struct SOAP_ENV__Code *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code *, const char*); +SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 cross_instantiate_SOAP_ENV__Code(struct soap*, int, const char*, const char*, size_t*); + +inline struct SOAP_ENV__Code * soap_new_SOAP_ENV__Code(struct soap *soap, int n = -1) +{ + return cross_instantiate_SOAP_ENV__Code(soap, n, NULL, NULL, NULL); +} + +inline struct SOAP_ENV__Code * soap_new_req_SOAP_ENV__Code( + struct soap *soap) +{ + struct SOAP_ENV__Code *_p = ::soap_new_SOAP_ENV__Code(soap); + if (_p) + { ::soap_default_SOAP_ENV__Code(soap, _p); + } + return _p; +} + +inline struct SOAP_ENV__Code * soap_new_set_SOAP_ENV__Code( + struct soap *soap, + char *SOAP_ENV__Value, + struct SOAP_ENV__Code *SOAP_ENV__Subcode) +{ + struct SOAP_ENV__Code *_p = ::soap_new_SOAP_ENV__Code(soap); + if (_p) + { ::soap_default_SOAP_ENV__Code(soap, _p); + _p->SOAP_ENV__Value = SOAP_ENV__Value; + _p->SOAP_ENV__Subcode = SOAP_ENV__Subcode; + } + return _p; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *, const char*, const char*); + +inline int soap_write_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (::soap_serialize_SOAP_ENV__Code(soap, p), 0) || ::soap_put_SOAP_ENV__Code(soap, p, "SOAP-ENV:Code", "") || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT_SOAP_ENV__Code(struct soap *soap, const char *URL, struct SOAP_ENV__Code const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize_SOAP_ENV__Code(soap, p), 0) || ::soap_put_SOAP_ENV__Code(soap, p, "SOAP-ENV:Code", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH_SOAP_ENV__Code(struct soap *soap, const char *URL, struct SOAP_ENV__Code const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize_SOAP_ENV__Code(soap, p), 0) || ::soap_put_SOAP_ENV__Code(soap, p, "SOAP-ENV:Code", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send_SOAP_ENV__Code(struct soap *soap, const char *URL, struct SOAP_ENV__Code const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize_SOAP_ENV__Code(soap, p), 0) || ::soap_put_SOAP_ENV__Code(soap, p, "SOAP-ENV:Code", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *, const char*, const char*); + +inline int soap_read_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *p) +{ + if (p) + { ::soap_default_SOAP_ENV__Code(soap, p); + if (soap_begin_recv(soap) || ::soap_get_SOAP_ENV__Code(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET_SOAP_ENV__Code(struct soap *soap, const char *URL, struct SOAP_ENV__Code *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read_SOAP_ENV__Code(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *p) +{ + if (::soap_read_SOAP_ENV__Code(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_SOAP_ENV__Header_DEFINED +#define SOAP_TYPE_SOAP_ENV__Header_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap*, const char*, int, const struct SOAP_ENV__Header *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap*, const char*, struct SOAP_ENV__Header *, const char*); +SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 cross_instantiate_SOAP_ENV__Header(struct soap*, int, const char*, const char*, size_t*); + +inline struct SOAP_ENV__Header * soap_new_SOAP_ENV__Header(struct soap *soap, int n = -1) +{ + return cross_instantiate_SOAP_ENV__Header(soap, n, NULL, NULL, NULL); +} + +inline struct SOAP_ENV__Header * soap_new_req_SOAP_ENV__Header( + struct soap *soap) +{ + struct SOAP_ENV__Header *_p = ::soap_new_SOAP_ENV__Header(soap); + if (_p) + { ::soap_default_SOAP_ENV__Header(soap, _p); + } + return _p; +} + +inline struct SOAP_ENV__Header * soap_new_set_SOAP_ENV__Header( + struct soap *soap) +{ + struct SOAP_ENV__Header *_p = ::soap_new_SOAP_ENV__Header(soap); + if (_p) + { ::soap_default_SOAP_ENV__Header(soap, _p); + } + return _p; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *, const char*, const char*); + +inline int soap_write_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (::soap_serialize_SOAP_ENV__Header(soap, p), 0) || ::soap_put_SOAP_ENV__Header(soap, p, "SOAP-ENV:Header", "") || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT_SOAP_ENV__Header(struct soap *soap, const char *URL, struct SOAP_ENV__Header const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize_SOAP_ENV__Header(soap, p), 0) || ::soap_put_SOAP_ENV__Header(soap, p, "SOAP-ENV:Header", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH_SOAP_ENV__Header(struct soap *soap, const char *URL, struct SOAP_ENV__Header const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize_SOAP_ENV__Header(soap, p), 0) || ::soap_put_SOAP_ENV__Header(soap, p, "SOAP-ENV:Header", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send_SOAP_ENV__Header(struct soap *soap, const char *URL, struct SOAP_ENV__Header const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize_SOAP_ENV__Header(soap, p), 0) || ::soap_put_SOAP_ENV__Header(soap, p, "SOAP-ENV:Header", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *, const char*, const char*); + +inline int soap_read_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *p) +{ + if (p) + { ::soap_default_SOAP_ENV__Header(soap, p); + if (soap_begin_recv(soap) || ::soap_get_SOAP_ENV__Header(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET_SOAP_ENV__Header(struct soap *soap, const char *URL, struct SOAP_ENV__Header *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read_SOAP_ENV__Header(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *p) +{ + if (::soap_read_SOAP_ENV__Header(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#endif + +#ifndef SOAP_TYPE___WS1__escrowResendSrv_DEFINED +#define SOAP_TYPE___WS1__escrowResendSrv_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__escrowResendSrv(struct soap*, struct __WS1__escrowResendSrv *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__escrowResendSrv(struct soap*, const struct __WS1__escrowResendSrv *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__escrowResendSrv(struct soap*, const char*, int, const struct __WS1__escrowResendSrv *, const char*); +SOAP_FMAC3 struct __WS1__escrowResendSrv * SOAP_FMAC4 soap_in___WS1__escrowResendSrv(struct soap*, const char*, struct __WS1__escrowResendSrv *, const char*); +SOAP_FMAC1 struct __WS1__escrowResendSrv * SOAP_FMAC2 cross_instantiate___WS1__escrowResendSrv(struct soap*, int, const char*, const char*, size_t*); + +inline struct __WS1__escrowResendSrv * soap_new___WS1__escrowResendSrv(struct soap *soap, int n = -1) +{ + return cross_instantiate___WS1__escrowResendSrv(soap, n, NULL, NULL, NULL); +} + +inline struct __WS1__escrowResendSrv * soap_new_req___WS1__escrowResendSrv( + struct soap *soap) +{ + struct __WS1__escrowResendSrv *_p = ::soap_new___WS1__escrowResendSrv(soap); + if (_p) + { ::soap_default___WS1__escrowResendSrv(soap, _p); + } + return _p; +} + +inline struct __WS1__escrowResendSrv * soap_new_set___WS1__escrowResendSrv( + struct soap *soap, + _WS1__escrowResendSrv *WS1__escrowResendSrv) +{ + struct __WS1__escrowResendSrv *_p = ::soap_new___WS1__escrowResendSrv(soap); + if (_p) + { ::soap_default___WS1__escrowResendSrv(soap, _p); + _p->WS1__escrowResendSrv = WS1__escrowResendSrv; + } + return _p; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__escrowResendSrv(struct soap*, const struct __WS1__escrowResendSrv *, const char*, const char*); + +inline int soap_write___WS1__escrowResendSrv(struct soap *soap, struct __WS1__escrowResendSrv const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (::soap_serialize___WS1__escrowResendSrv(soap, p), 0) || ::soap_put___WS1__escrowResendSrv(soap, p, "-WS1:escrowResendSrv", "") || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT___WS1__escrowResendSrv(struct soap *soap, const char *URL, struct __WS1__escrowResendSrv const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__escrowResendSrv(soap, p), 0) || ::soap_put___WS1__escrowResendSrv(soap, p, "-WS1:escrowResendSrv", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH___WS1__escrowResendSrv(struct soap *soap, const char *URL, struct __WS1__escrowResendSrv const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__escrowResendSrv(soap, p), 0) || ::soap_put___WS1__escrowResendSrv(soap, p, "-WS1:escrowResendSrv", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send___WS1__escrowResendSrv(struct soap *soap, const char *URL, struct __WS1__escrowResendSrv const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__escrowResendSrv(soap, p), 0) || ::soap_put___WS1__escrowResendSrv(soap, p, "-WS1:escrowResendSrv", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 struct __WS1__escrowResendSrv * SOAP_FMAC4 soap_get___WS1__escrowResendSrv(struct soap*, struct __WS1__escrowResendSrv *, const char*, const char*); + +inline int soap_read___WS1__escrowResendSrv(struct soap *soap, struct __WS1__escrowResendSrv *p) +{ + if (p) + { ::soap_default___WS1__escrowResendSrv(soap, p); + if (soap_begin_recv(soap) || ::soap_get___WS1__escrowResendSrv(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET___WS1__escrowResendSrv(struct soap *soap, const char *URL, struct __WS1__escrowResendSrv *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read___WS1__escrowResendSrv(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv___WS1__escrowResendSrv(struct soap *soap, struct __WS1__escrowResendSrv *p) +{ + if (::soap_read___WS1__escrowResendSrv(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE___WS1__invokeSrv_DEFINED +#define SOAP_TYPE___WS1__invokeSrv_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__invokeSrv(struct soap*, struct __WS1__invokeSrv *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__invokeSrv(struct soap*, const struct __WS1__invokeSrv *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__invokeSrv(struct soap*, const char*, int, const struct __WS1__invokeSrv *, const char*); +SOAP_FMAC3 struct __WS1__invokeSrv * SOAP_FMAC4 soap_in___WS1__invokeSrv(struct soap*, const char*, struct __WS1__invokeSrv *, const char*); +SOAP_FMAC1 struct __WS1__invokeSrv * SOAP_FMAC2 cross_instantiate___WS1__invokeSrv(struct soap*, int, const char*, const char*, size_t*); + +inline struct __WS1__invokeSrv * soap_new___WS1__invokeSrv(struct soap *soap, int n = -1) +{ + return cross_instantiate___WS1__invokeSrv(soap, n, NULL, NULL, NULL); +} + +inline struct __WS1__invokeSrv * soap_new_req___WS1__invokeSrv( + struct soap *soap) +{ + struct __WS1__invokeSrv *_p = ::soap_new___WS1__invokeSrv(soap); + if (_p) + { ::soap_default___WS1__invokeSrv(soap, _p); + } + return _p; +} + +inline struct __WS1__invokeSrv * soap_new_set___WS1__invokeSrv( + struct soap *soap, + _WS1__invokeSrv *WS1__invokeSrv) +{ + struct __WS1__invokeSrv *_p = ::soap_new___WS1__invokeSrv(soap); + if (_p) + { ::soap_default___WS1__invokeSrv(soap, _p); + _p->WS1__invokeSrv = WS1__invokeSrv; + } + return _p; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__invokeSrv(struct soap*, const struct __WS1__invokeSrv *, const char*, const char*); + +inline int soap_write___WS1__invokeSrv(struct soap *soap, struct __WS1__invokeSrv const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (::soap_serialize___WS1__invokeSrv(soap, p), 0) || ::soap_put___WS1__invokeSrv(soap, p, "-WS1:invokeSrv", "") || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT___WS1__invokeSrv(struct soap *soap, const char *URL, struct __WS1__invokeSrv const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__invokeSrv(soap, p), 0) || ::soap_put___WS1__invokeSrv(soap, p, "-WS1:invokeSrv", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH___WS1__invokeSrv(struct soap *soap, const char *URL, struct __WS1__invokeSrv const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__invokeSrv(soap, p), 0) || ::soap_put___WS1__invokeSrv(soap, p, "-WS1:invokeSrv", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send___WS1__invokeSrv(struct soap *soap, const char *URL, struct __WS1__invokeSrv const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__invokeSrv(soap, p), 0) || ::soap_put___WS1__invokeSrv(soap, p, "-WS1:invokeSrv", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 struct __WS1__invokeSrv * SOAP_FMAC4 soap_get___WS1__invokeSrv(struct soap*, struct __WS1__invokeSrv *, const char*, const char*); + +inline int soap_read___WS1__invokeSrv(struct soap *soap, struct __WS1__invokeSrv *p) +{ + if (p) + { ::soap_default___WS1__invokeSrv(soap, p); + if (soap_begin_recv(soap) || ::soap_get___WS1__invokeSrv(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET___WS1__invokeSrv(struct soap *soap, const char *URL, struct __WS1__invokeSrv *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read___WS1__invokeSrv(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv___WS1__invokeSrv(struct soap *soap, struct __WS1__invokeSrv *p) +{ + if (::soap_read___WS1__invokeSrv(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE___WS1__regEAI_DEFINED +#define SOAP_TYPE___WS1__regEAI_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__regEAI(struct soap*, struct __WS1__regEAI *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__regEAI(struct soap*, const struct __WS1__regEAI *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__regEAI(struct soap*, const char*, int, const struct __WS1__regEAI *, const char*); +SOAP_FMAC3 struct __WS1__regEAI * SOAP_FMAC4 soap_in___WS1__regEAI(struct soap*, const char*, struct __WS1__regEAI *, const char*); +SOAP_FMAC1 struct __WS1__regEAI * SOAP_FMAC2 cross_instantiate___WS1__regEAI(struct soap*, int, const char*, const char*, size_t*); + +inline struct __WS1__regEAI * soap_new___WS1__regEAI(struct soap *soap, int n = -1) +{ + return cross_instantiate___WS1__regEAI(soap, n, NULL, NULL, NULL); +} + +inline struct __WS1__regEAI * soap_new_req___WS1__regEAI( + struct soap *soap) +{ + struct __WS1__regEAI *_p = ::soap_new___WS1__regEAI(soap); + if (_p) + { ::soap_default___WS1__regEAI(soap, _p); + } + return _p; +} + +inline struct __WS1__regEAI * soap_new_set___WS1__regEAI( + struct soap *soap, + _WS1__regEAI *WS1__regEAI) +{ + struct __WS1__regEAI *_p = ::soap_new___WS1__regEAI(soap); + if (_p) + { ::soap_default___WS1__regEAI(soap, _p); + _p->WS1__regEAI = WS1__regEAI; + } + return _p; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__regEAI(struct soap*, const struct __WS1__regEAI *, const char*, const char*); + +inline int soap_write___WS1__regEAI(struct soap *soap, struct __WS1__regEAI const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (::soap_serialize___WS1__regEAI(soap, p), 0) || ::soap_put___WS1__regEAI(soap, p, "-WS1:regEAI", "") || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT___WS1__regEAI(struct soap *soap, const char *URL, struct __WS1__regEAI const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__regEAI(soap, p), 0) || ::soap_put___WS1__regEAI(soap, p, "-WS1:regEAI", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH___WS1__regEAI(struct soap *soap, const char *URL, struct __WS1__regEAI const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__regEAI(soap, p), 0) || ::soap_put___WS1__regEAI(soap, p, "-WS1:regEAI", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send___WS1__regEAI(struct soap *soap, const char *URL, struct __WS1__regEAI const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__regEAI(soap, p), 0) || ::soap_put___WS1__regEAI(soap, p, "-WS1:regEAI", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 struct __WS1__regEAI * SOAP_FMAC4 soap_get___WS1__regEAI(struct soap*, struct __WS1__regEAI *, const char*, const char*); + +inline int soap_read___WS1__regEAI(struct soap *soap, struct __WS1__regEAI *p) +{ + if (p) + { ::soap_default___WS1__regEAI(soap, p); + if (soap_begin_recv(soap) || ::soap_get___WS1__regEAI(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET___WS1__regEAI(struct soap *soap, const char *URL, struct __WS1__regEAI *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read___WS1__regEAI(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv___WS1__regEAI(struct soap *soap, struct __WS1__regEAI *p) +{ + if (::soap_read___WS1__regEAI(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE___WS1__regSrv_DEFINED +#define SOAP_TYPE___WS1__regSrv_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__regSrv(struct soap*, struct __WS1__regSrv *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__regSrv(struct soap*, const struct __WS1__regSrv *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__regSrv(struct soap*, const char*, int, const struct __WS1__regSrv *, const char*); +SOAP_FMAC3 struct __WS1__regSrv * SOAP_FMAC4 soap_in___WS1__regSrv(struct soap*, const char*, struct __WS1__regSrv *, const char*); +SOAP_FMAC1 struct __WS1__regSrv * SOAP_FMAC2 cross_instantiate___WS1__regSrv(struct soap*, int, const char*, const char*, size_t*); + +inline struct __WS1__regSrv * soap_new___WS1__regSrv(struct soap *soap, int n = -1) +{ + return cross_instantiate___WS1__regSrv(soap, n, NULL, NULL, NULL); +} + +inline struct __WS1__regSrv * soap_new_req___WS1__regSrv( + struct soap *soap) +{ + struct __WS1__regSrv *_p = ::soap_new___WS1__regSrv(soap); + if (_p) + { ::soap_default___WS1__regSrv(soap, _p); + } + return _p; +} + +inline struct __WS1__regSrv * soap_new_set___WS1__regSrv( + struct soap *soap, + _WS1__regSrv *WS1__regSrv) +{ + struct __WS1__regSrv *_p = ::soap_new___WS1__regSrv(soap); + if (_p) + { ::soap_default___WS1__regSrv(soap, _p); + _p->WS1__regSrv = WS1__regSrv; + } + return _p; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__regSrv(struct soap*, const struct __WS1__regSrv *, const char*, const char*); + +inline int soap_write___WS1__regSrv(struct soap *soap, struct __WS1__regSrv const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (::soap_serialize___WS1__regSrv(soap, p), 0) || ::soap_put___WS1__regSrv(soap, p, "-WS1:regSrv", "") || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT___WS1__regSrv(struct soap *soap, const char *URL, struct __WS1__regSrv const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__regSrv(soap, p), 0) || ::soap_put___WS1__regSrv(soap, p, "-WS1:regSrv", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH___WS1__regSrv(struct soap *soap, const char *URL, struct __WS1__regSrv const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__regSrv(soap, p), 0) || ::soap_put___WS1__regSrv(soap, p, "-WS1:regSrv", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send___WS1__regSrv(struct soap *soap, const char *URL, struct __WS1__regSrv const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__regSrv(soap, p), 0) || ::soap_put___WS1__regSrv(soap, p, "-WS1:regSrv", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 struct __WS1__regSrv * SOAP_FMAC4 soap_get___WS1__regSrv(struct soap*, struct __WS1__regSrv *, const char*, const char*); + +inline int soap_read___WS1__regSrv(struct soap *soap, struct __WS1__regSrv *p) +{ + if (p) + { ::soap_default___WS1__regSrv(soap, p); + if (soap_begin_recv(soap) || ::soap_get___WS1__regSrv(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET___WS1__regSrv(struct soap *soap, const char *URL, struct __WS1__regSrv *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read___WS1__regSrv(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv___WS1__regSrv(struct soap *soap, struct __WS1__regSrv *p) +{ + if (::soap_read___WS1__regSrv(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE___WS1__getStandardDataNameList_DEFINED +#define SOAP_TYPE___WS1__getStandardDataNameList_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__getStandardDataNameList(struct soap*, struct __WS1__getStandardDataNameList *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__getStandardDataNameList(struct soap*, const struct __WS1__getStandardDataNameList *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__getStandardDataNameList(struct soap*, const char*, int, const struct __WS1__getStandardDataNameList *, const char*); +SOAP_FMAC3 struct __WS1__getStandardDataNameList * SOAP_FMAC4 soap_in___WS1__getStandardDataNameList(struct soap*, const char*, struct __WS1__getStandardDataNameList *, const char*); +SOAP_FMAC1 struct __WS1__getStandardDataNameList * SOAP_FMAC2 cross_instantiate___WS1__getStandardDataNameList(struct soap*, int, const char*, const char*, size_t*); + +inline struct __WS1__getStandardDataNameList * soap_new___WS1__getStandardDataNameList(struct soap *soap, int n = -1) +{ + return cross_instantiate___WS1__getStandardDataNameList(soap, n, NULL, NULL, NULL); +} + +inline struct __WS1__getStandardDataNameList * soap_new_req___WS1__getStandardDataNameList( + struct soap *soap) +{ + struct __WS1__getStandardDataNameList *_p = ::soap_new___WS1__getStandardDataNameList(soap); + if (_p) + { ::soap_default___WS1__getStandardDataNameList(soap, _p); + } + return _p; +} + +inline struct __WS1__getStandardDataNameList * soap_new_set___WS1__getStandardDataNameList( + struct soap *soap, + _WS1__getStandardDataNameList *WS1__getStandardDataNameList) +{ + struct __WS1__getStandardDataNameList *_p = ::soap_new___WS1__getStandardDataNameList(soap); + if (_p) + { ::soap_default___WS1__getStandardDataNameList(soap, _p); + _p->WS1__getStandardDataNameList = WS1__getStandardDataNameList; + } + return _p; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__getStandardDataNameList(struct soap*, const struct __WS1__getStandardDataNameList *, const char*, const char*); + +inline int soap_write___WS1__getStandardDataNameList(struct soap *soap, struct __WS1__getStandardDataNameList const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (::soap_serialize___WS1__getStandardDataNameList(soap, p), 0) || ::soap_put___WS1__getStandardDataNameList(soap, p, "-WS1:getStandardDataNameList", "") || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT___WS1__getStandardDataNameList(struct soap *soap, const char *URL, struct __WS1__getStandardDataNameList const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__getStandardDataNameList(soap, p), 0) || ::soap_put___WS1__getStandardDataNameList(soap, p, "-WS1:getStandardDataNameList", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH___WS1__getStandardDataNameList(struct soap *soap, const char *URL, struct __WS1__getStandardDataNameList const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__getStandardDataNameList(soap, p), 0) || ::soap_put___WS1__getStandardDataNameList(soap, p, "-WS1:getStandardDataNameList", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send___WS1__getStandardDataNameList(struct soap *soap, const char *URL, struct __WS1__getStandardDataNameList const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__getStandardDataNameList(soap, p), 0) || ::soap_put___WS1__getStandardDataNameList(soap, p, "-WS1:getStandardDataNameList", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 struct __WS1__getStandardDataNameList * SOAP_FMAC4 soap_get___WS1__getStandardDataNameList(struct soap*, struct __WS1__getStandardDataNameList *, const char*, const char*); + +inline int soap_read___WS1__getStandardDataNameList(struct soap *soap, struct __WS1__getStandardDataNameList *p) +{ + if (p) + { ::soap_default___WS1__getStandardDataNameList(soap, p); + if (soap_begin_recv(soap) || ::soap_get___WS1__getStandardDataNameList(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET___WS1__getStandardDataNameList(struct soap *soap, const char *URL, struct __WS1__getStandardDataNameList *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read___WS1__getStandardDataNameList(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv___WS1__getStandardDataNameList(struct soap *soap, struct __WS1__getStandardDataNameList *p) +{ + if (::soap_read___WS1__getStandardDataNameList(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE___WS1__getStandardServiceList_DEFINED +#define SOAP_TYPE___WS1__getStandardServiceList_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__getStandardServiceList(struct soap*, struct __WS1__getStandardServiceList *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__getStandardServiceList(struct soap*, const struct __WS1__getStandardServiceList *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__getStandardServiceList(struct soap*, const char*, int, const struct __WS1__getStandardServiceList *, const char*); +SOAP_FMAC3 struct __WS1__getStandardServiceList * SOAP_FMAC4 soap_in___WS1__getStandardServiceList(struct soap*, const char*, struct __WS1__getStandardServiceList *, const char*); +SOAP_FMAC1 struct __WS1__getStandardServiceList * SOAP_FMAC2 cross_instantiate___WS1__getStandardServiceList(struct soap*, int, const char*, const char*, size_t*); + +inline struct __WS1__getStandardServiceList * soap_new___WS1__getStandardServiceList(struct soap *soap, int n = -1) +{ + return cross_instantiate___WS1__getStandardServiceList(soap, n, NULL, NULL, NULL); +} + +inline struct __WS1__getStandardServiceList * soap_new_req___WS1__getStandardServiceList( + struct soap *soap) +{ + struct __WS1__getStandardServiceList *_p = ::soap_new___WS1__getStandardServiceList(soap); + if (_p) + { ::soap_default___WS1__getStandardServiceList(soap, _p); + } + return _p; +} + +inline struct __WS1__getStandardServiceList * soap_new_set___WS1__getStandardServiceList( + struct soap *soap, + _WS1__getStandardServiceList *WS1__getStandardServiceList) +{ + struct __WS1__getStandardServiceList *_p = ::soap_new___WS1__getStandardServiceList(soap); + if (_p) + { ::soap_default___WS1__getStandardServiceList(soap, _p); + _p->WS1__getStandardServiceList = WS1__getStandardServiceList; + } + return _p; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__getStandardServiceList(struct soap*, const struct __WS1__getStandardServiceList *, const char*, const char*); + +inline int soap_write___WS1__getStandardServiceList(struct soap *soap, struct __WS1__getStandardServiceList const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (::soap_serialize___WS1__getStandardServiceList(soap, p), 0) || ::soap_put___WS1__getStandardServiceList(soap, p, "-WS1:getStandardServiceList", "") || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT___WS1__getStandardServiceList(struct soap *soap, const char *URL, struct __WS1__getStandardServiceList const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__getStandardServiceList(soap, p), 0) || ::soap_put___WS1__getStandardServiceList(soap, p, "-WS1:getStandardServiceList", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH___WS1__getStandardServiceList(struct soap *soap, const char *URL, struct __WS1__getStandardServiceList const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__getStandardServiceList(soap, p), 0) || ::soap_put___WS1__getStandardServiceList(soap, p, "-WS1:getStandardServiceList", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send___WS1__getStandardServiceList(struct soap *soap, const char *URL, struct __WS1__getStandardServiceList const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__getStandardServiceList(soap, p), 0) || ::soap_put___WS1__getStandardServiceList(soap, p, "-WS1:getStandardServiceList", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 struct __WS1__getStandardServiceList * SOAP_FMAC4 soap_get___WS1__getStandardServiceList(struct soap*, struct __WS1__getStandardServiceList *, const char*, const char*); + +inline int soap_read___WS1__getStandardServiceList(struct soap *soap, struct __WS1__getStandardServiceList *p) +{ + if (p) + { ::soap_default___WS1__getStandardServiceList(soap, p); + if (soap_begin_recv(soap) || ::soap_get___WS1__getStandardServiceList(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET___WS1__getStandardServiceList(struct soap *soap, const char *URL, struct __WS1__getStandardServiceList *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read___WS1__getStandardServiceList(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv___WS1__getStandardServiceList(struct soap *soap, struct __WS1__getStandardServiceList *p) +{ + if (::soap_read___WS1__getStandardServiceList(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE___WS1__fpInvoke_DEFINED +#define SOAP_TYPE___WS1__fpInvoke_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__fpInvoke(struct soap*, struct __WS1__fpInvoke *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__fpInvoke(struct soap*, const struct __WS1__fpInvoke *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__fpInvoke(struct soap*, const char*, int, const struct __WS1__fpInvoke *, const char*); +SOAP_FMAC3 struct __WS1__fpInvoke * SOAP_FMAC4 soap_in___WS1__fpInvoke(struct soap*, const char*, struct __WS1__fpInvoke *, const char*); +SOAP_FMAC1 struct __WS1__fpInvoke * SOAP_FMAC2 cross_instantiate___WS1__fpInvoke(struct soap*, int, const char*, const char*, size_t*); + +inline struct __WS1__fpInvoke * soap_new___WS1__fpInvoke(struct soap *soap, int n = -1) +{ + return cross_instantiate___WS1__fpInvoke(soap, n, NULL, NULL, NULL); +} + +inline struct __WS1__fpInvoke * soap_new_req___WS1__fpInvoke( + struct soap *soap) +{ + struct __WS1__fpInvoke *_p = ::soap_new___WS1__fpInvoke(soap); + if (_p) + { ::soap_default___WS1__fpInvoke(soap, _p); + } + return _p; +} + +inline struct __WS1__fpInvoke * soap_new_set___WS1__fpInvoke( + struct soap *soap, + _WS1__fpInvoke *WS1__fpInvoke) +{ + struct __WS1__fpInvoke *_p = ::soap_new___WS1__fpInvoke(soap); + if (_p) + { ::soap_default___WS1__fpInvoke(soap, _p); + _p->WS1__fpInvoke = WS1__fpInvoke; + } + return _p; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__fpInvoke(struct soap*, const struct __WS1__fpInvoke *, const char*, const char*); + +inline int soap_write___WS1__fpInvoke(struct soap *soap, struct __WS1__fpInvoke const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (::soap_serialize___WS1__fpInvoke(soap, p), 0) || ::soap_put___WS1__fpInvoke(soap, p, "-WS1:fpInvoke", "") || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT___WS1__fpInvoke(struct soap *soap, const char *URL, struct __WS1__fpInvoke const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__fpInvoke(soap, p), 0) || ::soap_put___WS1__fpInvoke(soap, p, "-WS1:fpInvoke", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH___WS1__fpInvoke(struct soap *soap, const char *URL, struct __WS1__fpInvoke const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__fpInvoke(soap, p), 0) || ::soap_put___WS1__fpInvoke(soap, p, "-WS1:fpInvoke", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send___WS1__fpInvoke(struct soap *soap, const char *URL, struct __WS1__fpInvoke const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__fpInvoke(soap, p), 0) || ::soap_put___WS1__fpInvoke(soap, p, "-WS1:fpInvoke", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 struct __WS1__fpInvoke * SOAP_FMAC4 soap_get___WS1__fpInvoke(struct soap*, struct __WS1__fpInvoke *, const char*, const char*); + +inline int soap_read___WS1__fpInvoke(struct soap *soap, struct __WS1__fpInvoke *p) +{ + if (p) + { ::soap_default___WS1__fpInvoke(soap, p); + if (soap_begin_recv(soap) || ::soap_get___WS1__fpInvoke(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET___WS1__fpInvoke(struct soap *soap, const char *URL, struct __WS1__fpInvoke *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read___WS1__fpInvoke(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv___WS1__fpInvoke(struct soap *soap, struct __WS1__fpInvoke *p) +{ + if (::soap_read___WS1__fpInvoke(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE___WS1__getSrv_DEFINED +#define SOAP_TYPE___WS1__getSrv_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__getSrv(struct soap*, struct __WS1__getSrv *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__getSrv(struct soap*, const struct __WS1__getSrv *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__getSrv(struct soap*, const char*, int, const struct __WS1__getSrv *, const char*); +SOAP_FMAC3 struct __WS1__getSrv * SOAP_FMAC4 soap_in___WS1__getSrv(struct soap*, const char*, struct __WS1__getSrv *, const char*); +SOAP_FMAC1 struct __WS1__getSrv * SOAP_FMAC2 cross_instantiate___WS1__getSrv(struct soap*, int, const char*, const char*, size_t*); + +inline struct __WS1__getSrv * soap_new___WS1__getSrv(struct soap *soap, int n = -1) +{ + return cross_instantiate___WS1__getSrv(soap, n, NULL, NULL, NULL); +} + +inline struct __WS1__getSrv * soap_new_req___WS1__getSrv( + struct soap *soap) +{ + struct __WS1__getSrv *_p = ::soap_new___WS1__getSrv(soap); + if (_p) + { ::soap_default___WS1__getSrv(soap, _p); + } + return _p; +} + +inline struct __WS1__getSrv * soap_new_set___WS1__getSrv( + struct soap *soap, + _WS1__getSrv *WS1__getSrv) +{ + struct __WS1__getSrv *_p = ::soap_new___WS1__getSrv(soap); + if (_p) + { ::soap_default___WS1__getSrv(soap, _p); + _p->WS1__getSrv = WS1__getSrv; + } + return _p; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__getSrv(struct soap*, const struct __WS1__getSrv *, const char*, const char*); + +inline int soap_write___WS1__getSrv(struct soap *soap, struct __WS1__getSrv const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (::soap_serialize___WS1__getSrv(soap, p), 0) || ::soap_put___WS1__getSrv(soap, p, "-WS1:getSrv", "") || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT___WS1__getSrv(struct soap *soap, const char *URL, struct __WS1__getSrv const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__getSrv(soap, p), 0) || ::soap_put___WS1__getSrv(soap, p, "-WS1:getSrv", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH___WS1__getSrv(struct soap *soap, const char *URL, struct __WS1__getSrv const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__getSrv(soap, p), 0) || ::soap_put___WS1__getSrv(soap, p, "-WS1:getSrv", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send___WS1__getSrv(struct soap *soap, const char *URL, struct __WS1__getSrv const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__getSrv(soap, p), 0) || ::soap_put___WS1__getSrv(soap, p, "-WS1:getSrv", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 struct __WS1__getSrv * SOAP_FMAC4 soap_get___WS1__getSrv(struct soap*, struct __WS1__getSrv *, const char*, const char*); + +inline int soap_read___WS1__getSrv(struct soap *soap, struct __WS1__getSrv *p) +{ + if (p) + { ::soap_default___WS1__getSrv(soap, p); + if (soap_begin_recv(soap) || ::soap_get___WS1__getSrv(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET___WS1__getSrv(struct soap *soap, const char *URL, struct __WS1__getSrv *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read___WS1__getSrv(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv___WS1__getSrv(struct soap *soap, struct __WS1__getSrv *p) +{ + if (::soap_read___WS1__getSrv(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE___WS1__getProd_DEFINED +#define SOAP_TYPE___WS1__getProd_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__getProd(struct soap*, struct __WS1__getProd *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__getProd(struct soap*, const struct __WS1__getProd *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__getProd(struct soap*, const char*, int, const struct __WS1__getProd *, const char*); +SOAP_FMAC3 struct __WS1__getProd * SOAP_FMAC4 soap_in___WS1__getProd(struct soap*, const char*, struct __WS1__getProd *, const char*); +SOAP_FMAC1 struct __WS1__getProd * SOAP_FMAC2 cross_instantiate___WS1__getProd(struct soap*, int, const char*, const char*, size_t*); + +inline struct __WS1__getProd * soap_new___WS1__getProd(struct soap *soap, int n = -1) +{ + return cross_instantiate___WS1__getProd(soap, n, NULL, NULL, NULL); +} + +inline struct __WS1__getProd * soap_new_req___WS1__getProd( + struct soap *soap) +{ + struct __WS1__getProd *_p = ::soap_new___WS1__getProd(soap); + if (_p) + { ::soap_default___WS1__getProd(soap, _p); + } + return _p; +} + +inline struct __WS1__getProd * soap_new_set___WS1__getProd( + struct soap *soap, + _WS1__getProd *WS1__getProd) +{ + struct __WS1__getProd *_p = ::soap_new___WS1__getProd(soap); + if (_p) + { ::soap_default___WS1__getProd(soap, _p); + _p->WS1__getProd = WS1__getProd; + } + return _p; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__getProd(struct soap*, const struct __WS1__getProd *, const char*, const char*); + +inline int soap_write___WS1__getProd(struct soap *soap, struct __WS1__getProd const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (::soap_serialize___WS1__getProd(soap, p), 0) || ::soap_put___WS1__getProd(soap, p, "-WS1:getProd", "") || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT___WS1__getProd(struct soap *soap, const char *URL, struct __WS1__getProd const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__getProd(soap, p), 0) || ::soap_put___WS1__getProd(soap, p, "-WS1:getProd", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH___WS1__getProd(struct soap *soap, const char *URL, struct __WS1__getProd const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__getProd(soap, p), 0) || ::soap_put___WS1__getProd(soap, p, "-WS1:getProd", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send___WS1__getProd(struct soap *soap, const char *URL, struct __WS1__getProd const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__getProd(soap, p), 0) || ::soap_put___WS1__getProd(soap, p, "-WS1:getProd", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 struct __WS1__getProd * SOAP_FMAC4 soap_get___WS1__getProd(struct soap*, struct __WS1__getProd *, const char*, const char*); + +inline int soap_read___WS1__getProd(struct soap *soap, struct __WS1__getProd *p) +{ + if (p) + { ::soap_default___WS1__getProd(soap, p); + if (soap_begin_recv(soap) || ::soap_get___WS1__getProd(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET___WS1__getProd(struct soap *soap, const char *URL, struct __WS1__getProd *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read___WS1__getProd(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv___WS1__getProd(struct soap *soap, struct __WS1__getProd *p) +{ + if (::soap_read___WS1__getProd(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE___WS1__invokeMdm_DEFINED +#define SOAP_TYPE___WS1__invokeMdm_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__invokeMdm(struct soap*, struct __WS1__invokeMdm *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__invokeMdm(struct soap*, const struct __WS1__invokeMdm *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__invokeMdm(struct soap*, const char*, int, const struct __WS1__invokeMdm *, const char*); +SOAP_FMAC3 struct __WS1__invokeMdm * SOAP_FMAC4 soap_in___WS1__invokeMdm(struct soap*, const char*, struct __WS1__invokeMdm *, const char*); +SOAP_FMAC1 struct __WS1__invokeMdm * SOAP_FMAC2 cross_instantiate___WS1__invokeMdm(struct soap*, int, const char*, const char*, size_t*); + +inline struct __WS1__invokeMdm * soap_new___WS1__invokeMdm(struct soap *soap, int n = -1) +{ + return cross_instantiate___WS1__invokeMdm(soap, n, NULL, NULL, NULL); +} + +inline struct __WS1__invokeMdm * soap_new_req___WS1__invokeMdm( + struct soap *soap) +{ + struct __WS1__invokeMdm *_p = ::soap_new___WS1__invokeMdm(soap); + if (_p) + { ::soap_default___WS1__invokeMdm(soap, _p); + } + return _p; +} + +inline struct __WS1__invokeMdm * soap_new_set___WS1__invokeMdm( + struct soap *soap, + _WS1__invokeMdm *WS1__invokeMdm) +{ + struct __WS1__invokeMdm *_p = ::soap_new___WS1__invokeMdm(soap); + if (_p) + { ::soap_default___WS1__invokeMdm(soap, _p); + _p->WS1__invokeMdm = WS1__invokeMdm; + } + return _p; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__invokeMdm(struct soap*, const struct __WS1__invokeMdm *, const char*, const char*); + +inline int soap_write___WS1__invokeMdm(struct soap *soap, struct __WS1__invokeMdm const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (::soap_serialize___WS1__invokeMdm(soap, p), 0) || ::soap_put___WS1__invokeMdm(soap, p, "-WS1:invokeMdm", "") || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT___WS1__invokeMdm(struct soap *soap, const char *URL, struct __WS1__invokeMdm const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__invokeMdm(soap, p), 0) || ::soap_put___WS1__invokeMdm(soap, p, "-WS1:invokeMdm", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH___WS1__invokeMdm(struct soap *soap, const char *URL, struct __WS1__invokeMdm const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__invokeMdm(soap, p), 0) || ::soap_put___WS1__invokeMdm(soap, p, "-WS1:invokeMdm", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send___WS1__invokeMdm(struct soap *soap, const char *URL, struct __WS1__invokeMdm const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__invokeMdm(soap, p), 0) || ::soap_put___WS1__invokeMdm(soap, p, "-WS1:invokeMdm", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 struct __WS1__invokeMdm * SOAP_FMAC4 soap_get___WS1__invokeMdm(struct soap*, struct __WS1__invokeMdm *, const char*, const char*); + +inline int soap_read___WS1__invokeMdm(struct soap *soap, struct __WS1__invokeMdm *p) +{ + if (p) + { ::soap_default___WS1__invokeMdm(soap, p); + if (soap_begin_recv(soap) || ::soap_get___WS1__invokeMdm(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET___WS1__invokeMdm(struct soap *soap, const char *URL, struct __WS1__invokeMdm *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read___WS1__invokeMdm(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv___WS1__invokeMdm(struct soap *soap, struct __WS1__invokeMdm *p) +{ + if (::soap_read___WS1__invokeMdm(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE___WS1__invokeUnion_DEFINED +#define SOAP_TYPE___WS1__invokeUnion_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__invokeUnion(struct soap*, struct __WS1__invokeUnion *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__invokeUnion(struct soap*, const struct __WS1__invokeUnion *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__invokeUnion(struct soap*, const char*, int, const struct __WS1__invokeUnion *, const char*); +SOAP_FMAC3 struct __WS1__invokeUnion * SOAP_FMAC4 soap_in___WS1__invokeUnion(struct soap*, const char*, struct __WS1__invokeUnion *, const char*); +SOAP_FMAC1 struct __WS1__invokeUnion * SOAP_FMAC2 cross_instantiate___WS1__invokeUnion(struct soap*, int, const char*, const char*, size_t*); + +inline struct __WS1__invokeUnion * soap_new___WS1__invokeUnion(struct soap *soap, int n = -1) +{ + return cross_instantiate___WS1__invokeUnion(soap, n, NULL, NULL, NULL); +} + +inline struct __WS1__invokeUnion * soap_new_req___WS1__invokeUnion( + struct soap *soap) +{ + struct __WS1__invokeUnion *_p = ::soap_new___WS1__invokeUnion(soap); + if (_p) + { ::soap_default___WS1__invokeUnion(soap, _p); + } + return _p; +} + +inline struct __WS1__invokeUnion * soap_new_set___WS1__invokeUnion( + struct soap *soap, + _WS1__invokeUnion *WS1__invokeUnion) +{ + struct __WS1__invokeUnion *_p = ::soap_new___WS1__invokeUnion(soap); + if (_p) + { ::soap_default___WS1__invokeUnion(soap, _p); + _p->WS1__invokeUnion = WS1__invokeUnion; + } + return _p; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__invokeUnion(struct soap*, const struct __WS1__invokeUnion *, const char*, const char*); + +inline int soap_write___WS1__invokeUnion(struct soap *soap, struct __WS1__invokeUnion const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (::soap_serialize___WS1__invokeUnion(soap, p), 0) || ::soap_put___WS1__invokeUnion(soap, p, "-WS1:invokeUnion", "") || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT___WS1__invokeUnion(struct soap *soap, const char *URL, struct __WS1__invokeUnion const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__invokeUnion(soap, p), 0) || ::soap_put___WS1__invokeUnion(soap, p, "-WS1:invokeUnion", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH___WS1__invokeUnion(struct soap *soap, const char *URL, struct __WS1__invokeUnion const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__invokeUnion(soap, p), 0) || ::soap_put___WS1__invokeUnion(soap, p, "-WS1:invokeUnion", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send___WS1__invokeUnion(struct soap *soap, const char *URL, struct __WS1__invokeUnion const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__invokeUnion(soap, p), 0) || ::soap_put___WS1__invokeUnion(soap, p, "-WS1:invokeUnion", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 struct __WS1__invokeUnion * SOAP_FMAC4 soap_get___WS1__invokeUnion(struct soap*, struct __WS1__invokeUnion *, const char*, const char*); + +inline int soap_read___WS1__invokeUnion(struct soap *soap, struct __WS1__invokeUnion *p) +{ + if (p) + { ::soap_default___WS1__invokeUnion(soap, p); + if (soap_begin_recv(soap) || ::soap_get___WS1__invokeUnion(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET___WS1__invokeUnion(struct soap *soap, const char *URL, struct __WS1__invokeUnion *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read___WS1__invokeUnion(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv___WS1__invokeUnion(struct soap *soap, struct __WS1__invokeUnion *p) +{ + if (::soap_read___WS1__invokeUnion(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE___WS1__regProdAP_DEFINED +#define SOAP_TYPE___WS1__regProdAP_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__regProdAP(struct soap*, struct __WS1__regProdAP *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__regProdAP(struct soap*, const struct __WS1__regProdAP *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__regProdAP(struct soap*, const char*, int, const struct __WS1__regProdAP *, const char*); +SOAP_FMAC3 struct __WS1__regProdAP * SOAP_FMAC4 soap_in___WS1__regProdAP(struct soap*, const char*, struct __WS1__regProdAP *, const char*); +SOAP_FMAC1 struct __WS1__regProdAP * SOAP_FMAC2 cross_instantiate___WS1__regProdAP(struct soap*, int, const char*, const char*, size_t*); + +inline struct __WS1__regProdAP * soap_new___WS1__regProdAP(struct soap *soap, int n = -1) +{ + return cross_instantiate___WS1__regProdAP(soap, n, NULL, NULL, NULL); +} + +inline struct __WS1__regProdAP * soap_new_req___WS1__regProdAP( + struct soap *soap) +{ + struct __WS1__regProdAP *_p = ::soap_new___WS1__regProdAP(soap); + if (_p) + { ::soap_default___WS1__regProdAP(soap, _p); + } + return _p; +} + +inline struct __WS1__regProdAP * soap_new_set___WS1__regProdAP( + struct soap *soap, + _WS1__regProdAP *WS1__regProdAP) +{ + struct __WS1__regProdAP *_p = ::soap_new___WS1__regProdAP(soap); + if (_p) + { ::soap_default___WS1__regProdAP(soap, _p); + _p->WS1__regProdAP = WS1__regProdAP; + } + return _p; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__regProdAP(struct soap*, const struct __WS1__regProdAP *, const char*, const char*); + +inline int soap_write___WS1__regProdAP(struct soap *soap, struct __WS1__regProdAP const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (::soap_serialize___WS1__regProdAP(soap, p), 0) || ::soap_put___WS1__regProdAP(soap, p, "-WS1:regProdAP", "") || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT___WS1__regProdAP(struct soap *soap, const char *URL, struct __WS1__regProdAP const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__regProdAP(soap, p), 0) || ::soap_put___WS1__regProdAP(soap, p, "-WS1:regProdAP", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH___WS1__regProdAP(struct soap *soap, const char *URL, struct __WS1__regProdAP const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__regProdAP(soap, p), 0) || ::soap_put___WS1__regProdAP(soap, p, "-WS1:regProdAP", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send___WS1__regProdAP(struct soap *soap, const char *URL, struct __WS1__regProdAP const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__regProdAP(soap, p), 0) || ::soap_put___WS1__regProdAP(soap, p, "-WS1:regProdAP", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 struct __WS1__regProdAP * SOAP_FMAC4 soap_get___WS1__regProdAP(struct soap*, struct __WS1__regProdAP *, const char*, const char*); + +inline int soap_read___WS1__regProdAP(struct soap *soap, struct __WS1__regProdAP *p) +{ + if (p) + { ::soap_default___WS1__regProdAP(soap, p); + if (soap_begin_recv(soap) || ::soap_get___WS1__regProdAP(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET___WS1__regProdAP(struct soap *soap, const char *URL, struct __WS1__regProdAP *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read___WS1__regProdAP(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv___WS1__regProdAP(struct soap *soap, struct __WS1__regProdAP *p) +{ + if (::soap_read___WS1__regProdAP(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE___WS1__getProdList_DEFINED +#define SOAP_TYPE___WS1__getProdList_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__getProdList(struct soap*, struct __WS1__getProdList *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__getProdList(struct soap*, const struct __WS1__getProdList *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__getProdList(struct soap*, const char*, int, const struct __WS1__getProdList *, const char*); +SOAP_FMAC3 struct __WS1__getProdList * SOAP_FMAC4 soap_in___WS1__getProdList(struct soap*, const char*, struct __WS1__getProdList *, const char*); +SOAP_FMAC1 struct __WS1__getProdList * SOAP_FMAC2 cross_instantiate___WS1__getProdList(struct soap*, int, const char*, const char*, size_t*); + +inline struct __WS1__getProdList * soap_new___WS1__getProdList(struct soap *soap, int n = -1) +{ + return cross_instantiate___WS1__getProdList(soap, n, NULL, NULL, NULL); +} + +inline struct __WS1__getProdList * soap_new_req___WS1__getProdList( + struct soap *soap) +{ + struct __WS1__getProdList *_p = ::soap_new___WS1__getProdList(soap); + if (_p) + { ::soap_default___WS1__getProdList(soap, _p); + } + return _p; +} + +inline struct __WS1__getProdList * soap_new_set___WS1__getProdList( + struct soap *soap, + _WS1__getProdList *WS1__getProdList) +{ + struct __WS1__getProdList *_p = ::soap_new___WS1__getProdList(soap); + if (_p) + { ::soap_default___WS1__getProdList(soap, _p); + _p->WS1__getProdList = WS1__getProdList; + } + return _p; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__getProdList(struct soap*, const struct __WS1__getProdList *, const char*, const char*); + +inline int soap_write___WS1__getProdList(struct soap *soap, struct __WS1__getProdList const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (::soap_serialize___WS1__getProdList(soap, p), 0) || ::soap_put___WS1__getProdList(soap, p, "-WS1:getProdList", "") || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT___WS1__getProdList(struct soap *soap, const char *URL, struct __WS1__getProdList const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__getProdList(soap, p), 0) || ::soap_put___WS1__getProdList(soap, p, "-WS1:getProdList", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH___WS1__getProdList(struct soap *soap, const char *URL, struct __WS1__getProdList const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__getProdList(soap, p), 0) || ::soap_put___WS1__getProdList(soap, p, "-WS1:getProdList", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send___WS1__getProdList(struct soap *soap, const char *URL, struct __WS1__getProdList const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__getProdList(soap, p), 0) || ::soap_put___WS1__getProdList(soap, p, "-WS1:getProdList", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 struct __WS1__getProdList * SOAP_FMAC4 soap_get___WS1__getProdList(struct soap*, struct __WS1__getProdList *, const char*, const char*); + +inline int soap_read___WS1__getProdList(struct soap *soap, struct __WS1__getProdList *p) +{ + if (p) + { ::soap_default___WS1__getProdList(soap, p); + if (soap_begin_recv(soap) || ::soap_get___WS1__getProdList(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET___WS1__getProdList(struct soap *soap, const char *URL, struct __WS1__getProdList *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read___WS1__getProdList(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv___WS1__getProdList(struct soap *soap, struct __WS1__getProdList *p) +{ + if (::soap_read___WS1__getProdList(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE___WS1__getParamList_DEFINED +#define SOAP_TYPE___WS1__getParamList_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__getParamList(struct soap*, struct __WS1__getParamList *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__getParamList(struct soap*, const struct __WS1__getParamList *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__getParamList(struct soap*, const char*, int, const struct __WS1__getParamList *, const char*); +SOAP_FMAC3 struct __WS1__getParamList * SOAP_FMAC4 soap_in___WS1__getParamList(struct soap*, const char*, struct __WS1__getParamList *, const char*); +SOAP_FMAC1 struct __WS1__getParamList * SOAP_FMAC2 cross_instantiate___WS1__getParamList(struct soap*, int, const char*, const char*, size_t*); + +inline struct __WS1__getParamList * soap_new___WS1__getParamList(struct soap *soap, int n = -1) +{ + return cross_instantiate___WS1__getParamList(soap, n, NULL, NULL, NULL); +} + +inline struct __WS1__getParamList * soap_new_req___WS1__getParamList( + struct soap *soap) +{ + struct __WS1__getParamList *_p = ::soap_new___WS1__getParamList(soap); + if (_p) + { ::soap_default___WS1__getParamList(soap, _p); + } + return _p; +} + +inline struct __WS1__getParamList * soap_new_set___WS1__getParamList( + struct soap *soap, + _WS1__getParamList *WS1__getParamList) +{ + struct __WS1__getParamList *_p = ::soap_new___WS1__getParamList(soap); + if (_p) + { ::soap_default___WS1__getParamList(soap, _p); + _p->WS1__getParamList = WS1__getParamList; + } + return _p; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__getParamList(struct soap*, const struct __WS1__getParamList *, const char*, const char*); + +inline int soap_write___WS1__getParamList(struct soap *soap, struct __WS1__getParamList const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (::soap_serialize___WS1__getParamList(soap, p), 0) || ::soap_put___WS1__getParamList(soap, p, "-WS1:getParamList", "") || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT___WS1__getParamList(struct soap *soap, const char *URL, struct __WS1__getParamList const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__getParamList(soap, p), 0) || ::soap_put___WS1__getParamList(soap, p, "-WS1:getParamList", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH___WS1__getParamList(struct soap *soap, const char *URL, struct __WS1__getParamList const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__getParamList(soap, p), 0) || ::soap_put___WS1__getParamList(soap, p, "-WS1:getParamList", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send___WS1__getParamList(struct soap *soap, const char *URL, struct __WS1__getParamList const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__getParamList(soap, p), 0) || ::soap_put___WS1__getParamList(soap, p, "-WS1:getParamList", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 struct __WS1__getParamList * SOAP_FMAC4 soap_get___WS1__getParamList(struct soap*, struct __WS1__getParamList *, const char*, const char*); + +inline int soap_read___WS1__getParamList(struct soap *soap, struct __WS1__getParamList *p) +{ + if (p) + { ::soap_default___WS1__getParamList(soap, p); + if (soap_begin_recv(soap) || ::soap_get___WS1__getParamList(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET___WS1__getParamList(struct soap *soap, const char *URL, struct __WS1__getParamList *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read___WS1__getParamList(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv___WS1__getParamList(struct soap *soap, struct __WS1__getParamList *p) +{ + if (::soap_read___WS1__getParamList(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE___WS1__getEtlJobList_DEFINED +#define SOAP_TYPE___WS1__getEtlJobList_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__getEtlJobList(struct soap*, struct __WS1__getEtlJobList *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__getEtlJobList(struct soap*, const struct __WS1__getEtlJobList *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__getEtlJobList(struct soap*, const char*, int, const struct __WS1__getEtlJobList *, const char*); +SOAP_FMAC3 struct __WS1__getEtlJobList * SOAP_FMAC4 soap_in___WS1__getEtlJobList(struct soap*, const char*, struct __WS1__getEtlJobList *, const char*); +SOAP_FMAC1 struct __WS1__getEtlJobList * SOAP_FMAC2 cross_instantiate___WS1__getEtlJobList(struct soap*, int, const char*, const char*, size_t*); + +inline struct __WS1__getEtlJobList * soap_new___WS1__getEtlJobList(struct soap *soap, int n = -1) +{ + return cross_instantiate___WS1__getEtlJobList(soap, n, NULL, NULL, NULL); +} + +inline struct __WS1__getEtlJobList * soap_new_req___WS1__getEtlJobList( + struct soap *soap) +{ + struct __WS1__getEtlJobList *_p = ::soap_new___WS1__getEtlJobList(soap); + if (_p) + { ::soap_default___WS1__getEtlJobList(soap, _p); + } + return _p; +} + +inline struct __WS1__getEtlJobList * soap_new_set___WS1__getEtlJobList( + struct soap *soap, + _WS1__getEtlJobList *WS1__getEtlJobList) +{ + struct __WS1__getEtlJobList *_p = ::soap_new___WS1__getEtlJobList(soap); + if (_p) + { ::soap_default___WS1__getEtlJobList(soap, _p); + _p->WS1__getEtlJobList = WS1__getEtlJobList; + } + return _p; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__getEtlJobList(struct soap*, const struct __WS1__getEtlJobList *, const char*, const char*); + +inline int soap_write___WS1__getEtlJobList(struct soap *soap, struct __WS1__getEtlJobList const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (::soap_serialize___WS1__getEtlJobList(soap, p), 0) || ::soap_put___WS1__getEtlJobList(soap, p, "-WS1:getEtlJobList", "") || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT___WS1__getEtlJobList(struct soap *soap, const char *URL, struct __WS1__getEtlJobList const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__getEtlJobList(soap, p), 0) || ::soap_put___WS1__getEtlJobList(soap, p, "-WS1:getEtlJobList", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH___WS1__getEtlJobList(struct soap *soap, const char *URL, struct __WS1__getEtlJobList const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__getEtlJobList(soap, p), 0) || ::soap_put___WS1__getEtlJobList(soap, p, "-WS1:getEtlJobList", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send___WS1__getEtlJobList(struct soap *soap, const char *URL, struct __WS1__getEtlJobList const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__getEtlJobList(soap, p), 0) || ::soap_put___WS1__getEtlJobList(soap, p, "-WS1:getEtlJobList", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 struct __WS1__getEtlJobList * SOAP_FMAC4 soap_get___WS1__getEtlJobList(struct soap*, struct __WS1__getEtlJobList *, const char*, const char*); + +inline int soap_read___WS1__getEtlJobList(struct soap *soap, struct __WS1__getEtlJobList *p) +{ + if (p) + { ::soap_default___WS1__getEtlJobList(soap, p); + if (soap_begin_recv(soap) || ::soap_get___WS1__getEtlJobList(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET___WS1__getEtlJobList(struct soap *soap, const char *URL, struct __WS1__getEtlJobList *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read___WS1__getEtlJobList(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv___WS1__getEtlJobList(struct soap *soap, struct __WS1__getEtlJobList *p) +{ + if (::soap_read___WS1__getEtlJobList(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE___WS1__invokeEtl_DEFINED +#define SOAP_TYPE___WS1__invokeEtl_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_default___WS1__invokeEtl(struct soap*, struct __WS1__invokeEtl *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___WS1__invokeEtl(struct soap*, const struct __WS1__invokeEtl *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___WS1__invokeEtl(struct soap*, const char*, int, const struct __WS1__invokeEtl *, const char*); +SOAP_FMAC3 struct __WS1__invokeEtl * SOAP_FMAC4 soap_in___WS1__invokeEtl(struct soap*, const char*, struct __WS1__invokeEtl *, const char*); +SOAP_FMAC1 struct __WS1__invokeEtl * SOAP_FMAC2 cross_instantiate___WS1__invokeEtl(struct soap*, int, const char*, const char*, size_t*); + +inline struct __WS1__invokeEtl * soap_new___WS1__invokeEtl(struct soap *soap, int n = -1) +{ + return cross_instantiate___WS1__invokeEtl(soap, n, NULL, NULL, NULL); +} + +inline struct __WS1__invokeEtl * soap_new_req___WS1__invokeEtl( + struct soap *soap) +{ + struct __WS1__invokeEtl *_p = ::soap_new___WS1__invokeEtl(soap); + if (_p) + { ::soap_default___WS1__invokeEtl(soap, _p); + } + return _p; +} + +inline struct __WS1__invokeEtl * soap_new_set___WS1__invokeEtl( + struct soap *soap, + _WS1__invokeEtl *WS1__invokeEtl) +{ + struct __WS1__invokeEtl *_p = ::soap_new___WS1__invokeEtl(soap); + if (_p) + { ::soap_default___WS1__invokeEtl(soap, _p); + _p->WS1__invokeEtl = WS1__invokeEtl; + } + return _p; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_put___WS1__invokeEtl(struct soap*, const struct __WS1__invokeEtl *, const char*, const char*); + +inline int soap_write___WS1__invokeEtl(struct soap *soap, struct __WS1__invokeEtl const*p) +{ + soap_free_temp(soap); + if (soap_begin_send(soap) || (::soap_serialize___WS1__invokeEtl(soap, p), 0) || ::soap_put___WS1__invokeEtl(soap, p, "-WS1:invokeEtl", "") || soap_end_send(soap)) + return soap->error; + return SOAP_OK; +} + +inline int soap_PUT___WS1__invokeEtl(struct soap *soap, const char *URL, struct __WS1__invokeEtl const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__invokeEtl(soap, p), 0) || ::soap_put___WS1__invokeEtl(soap, p, "-WS1:invokeEtl", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH___WS1__invokeEtl(struct soap *soap, const char *URL, struct __WS1__invokeEtl const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__invokeEtl(soap, p), 0) || ::soap_put___WS1__invokeEtl(soap, p, "-WS1:invokeEtl", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send___WS1__invokeEtl(struct soap *soap, const char *URL, struct __WS1__invokeEtl const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || (::soap_serialize___WS1__invokeEtl(soap, p), 0) || ::soap_put___WS1__invokeEtl(soap, p, "-WS1:invokeEtl", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 struct __WS1__invokeEtl * SOAP_FMAC4 soap_get___WS1__invokeEtl(struct soap*, struct __WS1__invokeEtl *, const char*, const char*); + +inline int soap_read___WS1__invokeEtl(struct soap *soap, struct __WS1__invokeEtl *p) +{ + if (p) + { ::soap_default___WS1__invokeEtl(soap, p); + if (soap_begin_recv(soap) || ::soap_get___WS1__invokeEtl(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET___WS1__invokeEtl(struct soap *soap, const char *URL, struct __WS1__invokeEtl *p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read___WS1__invokeEtl(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv___WS1__invokeEtl(struct soap *soap, struct __WS1__invokeEtl *p) +{ + if (::soap_read___WS1__invokeEtl(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_PointerToSOAP_ENV__Reason_DEFINED +#define SOAP_TYPE_PointerToSOAP_ENV__Reason_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap*, const char *, int, struct SOAP_ENV__Reason *const*, const char *); +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*, const char*, const char*); +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason **, const char*, const char*); +#endif + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_PointerToSOAP_ENV__Detail_DEFINED +#define SOAP_TYPE_PointerToSOAP_ENV__Detail_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap*, const char *, int, struct SOAP_ENV__Detail *const*, const char *); +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*, const char*, const char*); +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail **, const char*, const char*); +#endif + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_PointerToSOAP_ENV__Code_DEFINED +#define SOAP_TYPE_PointerToSOAP_ENV__Code_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap*, const char *, int, struct SOAP_ENV__Code *const*, const char *); +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*, const char*, const char*); +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code **, const char*, const char*); +#endif + +#endif + +#ifndef SOAP_TYPE_PointerTo_WS1__escrowResendSrv_DEFINED +#define SOAP_TYPE_PointerTo_WS1__escrowResendSrv_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__escrowResendSrv(struct soap*, _WS1__escrowResendSrv *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__escrowResendSrv(struct soap*, const char *, int, _WS1__escrowResendSrv *const*, const char *); +SOAP_FMAC3 _WS1__escrowResendSrv ** SOAP_FMAC4 soap_in_PointerTo_WS1__escrowResendSrv(struct soap*, const char*, _WS1__escrowResendSrv **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__escrowResendSrv(struct soap*, _WS1__escrowResendSrv *const*, const char*, const char*); +SOAP_FMAC3 _WS1__escrowResendSrv ** SOAP_FMAC4 soap_get_PointerTo_WS1__escrowResendSrv(struct soap*, _WS1__escrowResendSrv **, const char*, const char*); +#endif + +#ifndef SOAP_TYPE_PointerTo_WS1__invokeSrv_DEFINED +#define SOAP_TYPE_PointerTo_WS1__invokeSrv_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__invokeSrv(struct soap*, _WS1__invokeSrv *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__invokeSrv(struct soap*, const char *, int, _WS1__invokeSrv *const*, const char *); +SOAP_FMAC3 _WS1__invokeSrv ** SOAP_FMAC4 soap_in_PointerTo_WS1__invokeSrv(struct soap*, const char*, _WS1__invokeSrv **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__invokeSrv(struct soap*, _WS1__invokeSrv *const*, const char*, const char*); +SOAP_FMAC3 _WS1__invokeSrv ** SOAP_FMAC4 soap_get_PointerTo_WS1__invokeSrv(struct soap*, _WS1__invokeSrv **, const char*, const char*); +#endif + +#ifndef SOAP_TYPE_PointerTo_WS1__regEAI_DEFINED +#define SOAP_TYPE_PointerTo_WS1__regEAI_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__regEAI(struct soap*, _WS1__regEAI *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__regEAI(struct soap*, const char *, int, _WS1__regEAI *const*, const char *); +SOAP_FMAC3 _WS1__regEAI ** SOAP_FMAC4 soap_in_PointerTo_WS1__regEAI(struct soap*, const char*, _WS1__regEAI **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__regEAI(struct soap*, _WS1__regEAI *const*, const char*, const char*); +SOAP_FMAC3 _WS1__regEAI ** SOAP_FMAC4 soap_get_PointerTo_WS1__regEAI(struct soap*, _WS1__regEAI **, const char*, const char*); +#endif + +#ifndef SOAP_TYPE_PointerTo_WS1__regSrv_DEFINED +#define SOAP_TYPE_PointerTo_WS1__regSrv_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__regSrv(struct soap*, _WS1__regSrv *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__regSrv(struct soap*, const char *, int, _WS1__regSrv *const*, const char *); +SOAP_FMAC3 _WS1__regSrv ** SOAP_FMAC4 soap_in_PointerTo_WS1__regSrv(struct soap*, const char*, _WS1__regSrv **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__regSrv(struct soap*, _WS1__regSrv *const*, const char*, const char*); +SOAP_FMAC3 _WS1__regSrv ** SOAP_FMAC4 soap_get_PointerTo_WS1__regSrv(struct soap*, _WS1__regSrv **, const char*, const char*); +#endif + +#ifndef SOAP_TYPE_PointerTo_WS1__getStandardDataNameList_DEFINED +#define SOAP_TYPE_PointerTo_WS1__getStandardDataNameList_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__getStandardDataNameList(struct soap*, _WS1__getStandardDataNameList *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__getStandardDataNameList(struct soap*, const char *, int, _WS1__getStandardDataNameList *const*, const char *); +SOAP_FMAC3 _WS1__getStandardDataNameList ** SOAP_FMAC4 soap_in_PointerTo_WS1__getStandardDataNameList(struct soap*, const char*, _WS1__getStandardDataNameList **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__getStandardDataNameList(struct soap*, _WS1__getStandardDataNameList *const*, const char*, const char*); +SOAP_FMAC3 _WS1__getStandardDataNameList ** SOAP_FMAC4 soap_get_PointerTo_WS1__getStandardDataNameList(struct soap*, _WS1__getStandardDataNameList **, const char*, const char*); +#endif + +#ifndef SOAP_TYPE_PointerTo_WS1__getStandardServiceList_DEFINED +#define SOAP_TYPE_PointerTo_WS1__getStandardServiceList_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__getStandardServiceList(struct soap*, _WS1__getStandardServiceList *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__getStandardServiceList(struct soap*, const char *, int, _WS1__getStandardServiceList *const*, const char *); +SOAP_FMAC3 _WS1__getStandardServiceList ** SOAP_FMAC4 soap_in_PointerTo_WS1__getStandardServiceList(struct soap*, const char*, _WS1__getStandardServiceList **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__getStandardServiceList(struct soap*, _WS1__getStandardServiceList *const*, const char*, const char*); +SOAP_FMAC3 _WS1__getStandardServiceList ** SOAP_FMAC4 soap_get_PointerTo_WS1__getStandardServiceList(struct soap*, _WS1__getStandardServiceList **, const char*, const char*); +#endif + +#ifndef SOAP_TYPE_PointerTo_WS1__fpInvoke_DEFINED +#define SOAP_TYPE_PointerTo_WS1__fpInvoke_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__fpInvoke(struct soap*, _WS1__fpInvoke *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__fpInvoke(struct soap*, const char *, int, _WS1__fpInvoke *const*, const char *); +SOAP_FMAC3 _WS1__fpInvoke ** SOAP_FMAC4 soap_in_PointerTo_WS1__fpInvoke(struct soap*, const char*, _WS1__fpInvoke **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__fpInvoke(struct soap*, _WS1__fpInvoke *const*, const char*, const char*); +SOAP_FMAC3 _WS1__fpInvoke ** SOAP_FMAC4 soap_get_PointerTo_WS1__fpInvoke(struct soap*, _WS1__fpInvoke **, const char*, const char*); +#endif + +#ifndef SOAP_TYPE_PointerTo_WS1__getSrv_DEFINED +#define SOAP_TYPE_PointerTo_WS1__getSrv_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__getSrv(struct soap*, _WS1__getSrv *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__getSrv(struct soap*, const char *, int, _WS1__getSrv *const*, const char *); +SOAP_FMAC3 _WS1__getSrv ** SOAP_FMAC4 soap_in_PointerTo_WS1__getSrv(struct soap*, const char*, _WS1__getSrv **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__getSrv(struct soap*, _WS1__getSrv *const*, const char*, const char*); +SOAP_FMAC3 _WS1__getSrv ** SOAP_FMAC4 soap_get_PointerTo_WS1__getSrv(struct soap*, _WS1__getSrv **, const char*, const char*); +#endif + +#ifndef SOAP_TYPE_PointerTo_WS1__getProd_DEFINED +#define SOAP_TYPE_PointerTo_WS1__getProd_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__getProd(struct soap*, _WS1__getProd *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__getProd(struct soap*, const char *, int, _WS1__getProd *const*, const char *); +SOAP_FMAC3 _WS1__getProd ** SOAP_FMAC4 soap_in_PointerTo_WS1__getProd(struct soap*, const char*, _WS1__getProd **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__getProd(struct soap*, _WS1__getProd *const*, const char*, const char*); +SOAP_FMAC3 _WS1__getProd ** SOAP_FMAC4 soap_get_PointerTo_WS1__getProd(struct soap*, _WS1__getProd **, const char*, const char*); +#endif + +#ifndef SOAP_TYPE_PointerTo_WS1__invokeMdm_DEFINED +#define SOAP_TYPE_PointerTo_WS1__invokeMdm_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__invokeMdm(struct soap*, _WS1__invokeMdm *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__invokeMdm(struct soap*, const char *, int, _WS1__invokeMdm *const*, const char *); +SOAP_FMAC3 _WS1__invokeMdm ** SOAP_FMAC4 soap_in_PointerTo_WS1__invokeMdm(struct soap*, const char*, _WS1__invokeMdm **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__invokeMdm(struct soap*, _WS1__invokeMdm *const*, const char*, const char*); +SOAP_FMAC3 _WS1__invokeMdm ** SOAP_FMAC4 soap_get_PointerTo_WS1__invokeMdm(struct soap*, _WS1__invokeMdm **, const char*, const char*); +#endif + +#ifndef SOAP_TYPE_PointerTo_WS1__invokeUnion_DEFINED +#define SOAP_TYPE_PointerTo_WS1__invokeUnion_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__invokeUnion(struct soap*, _WS1__invokeUnion *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__invokeUnion(struct soap*, const char *, int, _WS1__invokeUnion *const*, const char *); +SOAP_FMAC3 _WS1__invokeUnion ** SOAP_FMAC4 soap_in_PointerTo_WS1__invokeUnion(struct soap*, const char*, _WS1__invokeUnion **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__invokeUnion(struct soap*, _WS1__invokeUnion *const*, const char*, const char*); +SOAP_FMAC3 _WS1__invokeUnion ** SOAP_FMAC4 soap_get_PointerTo_WS1__invokeUnion(struct soap*, _WS1__invokeUnion **, const char*, const char*); +#endif + +#ifndef SOAP_TYPE_PointerTo_WS1__regProdAP_DEFINED +#define SOAP_TYPE_PointerTo_WS1__regProdAP_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__regProdAP(struct soap*, _WS1__regProdAP *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__regProdAP(struct soap*, const char *, int, _WS1__regProdAP *const*, const char *); +SOAP_FMAC3 _WS1__regProdAP ** SOAP_FMAC4 soap_in_PointerTo_WS1__regProdAP(struct soap*, const char*, _WS1__regProdAP **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__regProdAP(struct soap*, _WS1__regProdAP *const*, const char*, const char*); +SOAP_FMAC3 _WS1__regProdAP ** SOAP_FMAC4 soap_get_PointerTo_WS1__regProdAP(struct soap*, _WS1__regProdAP **, const char*, const char*); +#endif + +#ifndef SOAP_TYPE_PointerTo_WS1__getProdList_DEFINED +#define SOAP_TYPE_PointerTo_WS1__getProdList_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__getProdList(struct soap*, _WS1__getProdList *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__getProdList(struct soap*, const char *, int, _WS1__getProdList *const*, const char *); +SOAP_FMAC3 _WS1__getProdList ** SOAP_FMAC4 soap_in_PointerTo_WS1__getProdList(struct soap*, const char*, _WS1__getProdList **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__getProdList(struct soap*, _WS1__getProdList *const*, const char*, const char*); +SOAP_FMAC3 _WS1__getProdList ** SOAP_FMAC4 soap_get_PointerTo_WS1__getProdList(struct soap*, _WS1__getProdList **, const char*, const char*); +#endif + +#ifndef SOAP_TYPE_PointerTo_WS1__getParamList_DEFINED +#define SOAP_TYPE_PointerTo_WS1__getParamList_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__getParamList(struct soap*, _WS1__getParamList *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__getParamList(struct soap*, const char *, int, _WS1__getParamList *const*, const char *); +SOAP_FMAC3 _WS1__getParamList ** SOAP_FMAC4 soap_in_PointerTo_WS1__getParamList(struct soap*, const char*, _WS1__getParamList **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__getParamList(struct soap*, _WS1__getParamList *const*, const char*, const char*); +SOAP_FMAC3 _WS1__getParamList ** SOAP_FMAC4 soap_get_PointerTo_WS1__getParamList(struct soap*, _WS1__getParamList **, const char*, const char*); +#endif + +#ifndef SOAP_TYPE_PointerTo_WS1__getEtlJobList_DEFINED +#define SOAP_TYPE_PointerTo_WS1__getEtlJobList_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__getEtlJobList(struct soap*, _WS1__getEtlJobList *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__getEtlJobList(struct soap*, const char *, int, _WS1__getEtlJobList *const*, const char *); +SOAP_FMAC3 _WS1__getEtlJobList ** SOAP_FMAC4 soap_in_PointerTo_WS1__getEtlJobList(struct soap*, const char*, _WS1__getEtlJobList **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__getEtlJobList(struct soap*, _WS1__getEtlJobList *const*, const char*, const char*); +SOAP_FMAC3 _WS1__getEtlJobList ** SOAP_FMAC4 soap_get_PointerTo_WS1__getEtlJobList(struct soap*, _WS1__getEtlJobList **, const char*, const char*); +#endif + +#ifndef SOAP_TYPE_PointerTo_WS1__invokeEtl_DEFINED +#define SOAP_TYPE_PointerTo_WS1__invokeEtl_DEFINED +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_WS1__invokeEtl(struct soap*, _WS1__invokeEtl *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_WS1__invokeEtl(struct soap*, const char *, int, _WS1__invokeEtl *const*, const char *); +SOAP_FMAC3 _WS1__invokeEtl ** SOAP_FMAC4 soap_in_PointerTo_WS1__invokeEtl(struct soap*, const char*, _WS1__invokeEtl **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_WS1__invokeEtl(struct soap*, _WS1__invokeEtl *const*, const char*, const char*); +SOAP_FMAC3 _WS1__invokeEtl ** SOAP_FMAC4 soap_get_PointerTo_WS1__invokeEtl(struct soap*, _WS1__invokeEtl **, const char*, const char*); +#endif + +#ifndef SOAP_TYPE__QName_DEFINED +#define SOAP_TYPE__QName_DEFINED + +inline void soap_default__QName(struct soap *soap, char **a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT__QName + *a = SOAP_DEFAULT__QName; +#else + *a = (char *)0; +#endif +} +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize__QName(struct soap*, char *const*); + +#define soap__QName2s(soap, a) soap_QName2s(soap, (a)) +SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap*, const char*, int, char*const*, const char*); + +#define soap_s2_QName(soap, s, a) soap_s2QName((soap), (s), (char**)(a), 0, -1, NULL) +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap*, const char*, char **, const char*); + +#define cross_instantiate__QName cross_instantiate_string + + +#define soap_new__QName soap_new_string + +SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap*, char *const*, const char*, const char*); + +inline int soap_write__QName(struct soap *soap, char *const*p) +{ + soap_free_temp(soap); + if (p) + { if (soap_begin_send(soap) || ::soap_put__QName(soap, p, "QName", "") || soap_end_send(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_PUT__QName(struct soap *soap, const char *URL, char *const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || ::soap_put__QName(soap, p, "QName", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH__QName(struct soap *soap, const char *URL, char *const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || ::soap_put__QName(soap, p, "QName", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send__QName(struct soap *soap, const char *URL, char *const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || ::soap_put__QName(soap, p, "QName", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap*, char **, const char*, const char*); + +inline int soap_read__QName(struct soap *soap, char **p) +{ + if (p) + { if (soap_begin_recv(soap) || ::soap_get__QName(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET__QName(struct soap *soap, const char *URL, char **p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read__QName(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv__QName(struct soap *soap, char **p) +{ + if (::soap_read__QName(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#ifndef SOAP_TYPE__XML_DEFINED +#define SOAP_TYPE__XML_DEFINED +#endif + +#ifndef SOAP_TYPE_string_DEFINED +#define SOAP_TYPE_string_DEFINED + +inline void soap_default_string(struct soap *soap, char **a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_string + *a = SOAP_DEFAULT_string; +#else + *a = (char *)0; +#endif +} +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap*, char *const*); + +#define soap_string2s(soap, a) (a) +SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap*, const char*, int, char*const*, const char*); + +#define soap_s2string(soap, s, a) soap_s2char((soap), (s), (char**)(a), 1, 0, -1, NULL) +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap*, const char*, char **, const char*); + +SOAP_FMAC3 char * * SOAP_FMAC4 soap_new_string(struct soap *soap, int n = -1); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap*, char *const*, const char*, const char*); + +inline int soap_write_string(struct soap *soap, char *const*p) +{ + soap_free_temp(soap); + if (p) + { if (soap_begin_send(soap) || ::soap_put_string(soap, p, "string", "") || soap_end_send(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_PUT_string(struct soap *soap, const char *URL, char *const*p) +{ + soap_free_temp(soap); + if (soap_PUT(soap, URL, NULL, "text/xml; charset=utf-8") || ::soap_put_string(soap, p, "string", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_PATCH_string(struct soap *soap, const char *URL, char *const*p) +{ + soap_free_temp(soap); + if (soap_PATCH(soap, URL, NULL, "text/xml; charset=utf-8") || ::soap_put_string(soap, p, "string", "") || soap_end_send(soap) || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} + +inline int soap_POST_send_string(struct soap *soap, const char *URL, char *const*p) +{ + soap_free_temp(soap); + if (soap_POST(soap, URL, NULL, "text/xml; charset=utf-8") || ::soap_put_string(soap, p, "string", "") || soap_end_send(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap*, char **, const char*, const char*); + +inline int soap_read_string(struct soap *soap, char **p) +{ + if (p) + { if (soap_begin_recv(soap) || ::soap_get_string(soap, p, NULL, NULL) == NULL || soap_end_recv(soap)) + return soap->error; + } + return SOAP_OK; +} + +inline int soap_GET_string(struct soap *soap, const char *URL, char **p) +{ + if (soap_GET(soap, URL, NULL) || ::soap_read_string(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +inline int soap_POST_recv_string(struct soap *soap, char **p) +{ + if (::soap_read_string(soap, p)) + return soap_closesock(soap); + return soap_closesock(soap); +} +#endif + +#endif + +/* End of crossH.h */ diff --git a/connor_erp_mes/crossStub.h b/connor_erp_mes/crossStub.h new file mode 100644 index 0000000..8844ba8 --- /dev/null +++ b/connor_erp_mes/crossStub.h @@ -0,0 +1,2106 @@ +/* crossStub.h + Generated by gSOAP 2.8.91 for cross.h + +gSOAP XML Web services tools +Copyright (C) 2000-2018, Robert van Engelen, Genivia Inc. All Rights Reserved. +The soapcpp2 tool and its generated software are released under the GPL. +This program is released under the GPL with the additional exemption that +compiling, linking, and/or using OpenSSL is allowed. +-------------------------------------------------------------------------------- +A commercial use license is available from Genivia Inc., contact@genivia.com +-------------------------------------------------------------------------------- +*/ + +#include +#define SOAP_NAMESPACE_OF_WS1 "http://entry.serviceengine.cross.digiwin.com" + +#ifndef crossStub_H +#define crossStub_H +#include "stdsoap2.h" +#if GSOAP_VERSION != 20891 +# error "GSOAP VERSION 20891 MISMATCH IN GENERATED CODE VERSUS LIBRARY CODE: PLEASE REINSTALL PACKAGE" +#endif + + +/******************************************************************************\ + * * + * Types with Custom Serializers * + * * +\******************************************************************************/ + + +/******************************************************************************\ + * * + * Classes, Structs and Unions * + * * +\******************************************************************************/ + +class _WS1__invokeEtl; /* cross.h:151 */ +class _WS1__invokeEtlResponse; /* cross.h:153 */ +class _WS1__getEtlJobList; /* cross.h:155 */ +class _WS1__getEtlJobListResponse; /* cross.h:157 */ +class _WS1__getParamList; /* cross.h:159 */ +class _WS1__getParamListResponse; /* cross.h:161 */ +class _WS1__getProdList; /* cross.h:163 */ +class _WS1__getProdListResponse; /* cross.h:165 */ +class _WS1__regProdAP; /* cross.h:167 */ +class _WS1__regProdAPResponse; /* cross.h:169 */ +class _WS1__invokeUnion; /* cross.h:171 */ +class _WS1__invokeUnionResponse; /* cross.h:173 */ +class _WS1__invokeMdm; /* cross.h:175 */ +class _WS1__invokeMdmResponse; /* cross.h:177 */ +class _WS1__getProd; /* cross.h:179 */ +class _WS1__getProdResponse; /* cross.h:181 */ +class _WS1__getSrv; /* cross.h:183 */ +class _WS1__getSrvResponse; /* cross.h:185 */ +class _WS1__fpInvoke; /* cross.h:187 */ +class _WS1__fpInvokeResponse; /* cross.h:189 */ +class _WS1__getStandardServiceList; /* cross.h:191 */ +class _WS1__getStandardServiceListResponse; /* cross.h:193 */ +class _WS1__getStandardDataNameList; /* cross.h:195 */ +class _WS1__getStandardDataNameListResponse; /* cross.h:197 */ +class _WS1__regSrv; /* cross.h:199 */ +class _WS1__regSrvResponse; /* cross.h:201 */ +class _WS1__regEAI; /* cross.h:203 */ +class _WS1__regEAIResponse; /* cross.h:205 */ +class _WS1__invokeSrv; /* cross.h:207 */ +class _WS1__invokeSrvResponse; /* cross.h:209 */ +class _WS1__escrowResendSrv; /* cross.h:211 */ +class _WS1__escrowResendSrvResponse; /* cross.h:213 */ +struct __WS1__invokeEtl; /* cross.h:1098 */ +struct __WS1__getEtlJobList; /* cross.h:1165 */ +struct __WS1__getParamList; /* cross.h:1232 */ +struct __WS1__getProdList; /* cross.h:1299 */ +struct __WS1__regProdAP; /* cross.h:1366 */ +struct __WS1__invokeUnion; /* cross.h:1433 */ +struct __WS1__invokeMdm; /* cross.h:1500 */ +struct __WS1__getProd; /* cross.h:1567 */ +struct __WS1__getSrv; /* cross.h:1634 */ +struct __WS1__fpInvoke; /* cross.h:1701 */ +struct __WS1__getStandardServiceList; /* cross.h:1768 */ +struct __WS1__getStandardDataNameList; /* cross.h:1835 */ +struct __WS1__regSrv; /* cross.h:1902 */ +struct __WS1__regEAI; /* cross.h:1969 */ +struct __WS1__invokeSrv; /* cross.h:2036 */ +struct __WS1__escrowResendSrv; /* cross.h:2103 */ + +/* cross.h:151 */ +#ifndef SOAP_TYPE__WS1__invokeEtl +#define SOAP_TYPE__WS1__invokeEtl (8) +/* complex XML schema type 'WS1:invokeEtl': */ +class SOAP_CMAC _WS1__invokeEtl { + public: + /// Required element 'WS1:in0' of XML schema type 'xsd:string' + std::string in0; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__invokeEtl + virtual long soap_type(void) const { return SOAP_TYPE__WS1__invokeEtl; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__invokeEtl, default initialized and not managed by a soap context + virtual _WS1__invokeEtl *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__invokeEtl); } + public: + /// Constructor with default initializations + _WS1__invokeEtl() : in0(), soap() { } + virtual ~_WS1__invokeEtl() { } + /// Friend allocator used by soap_new__WS1__invokeEtl(struct soap*, int) + friend SOAP_FMAC1 _WS1__invokeEtl * SOAP_FMAC2 cross_instantiate__WS1__invokeEtl(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:153 */ +#ifndef SOAP_TYPE__WS1__invokeEtlResponse +#define SOAP_TYPE__WS1__invokeEtlResponse (9) +/* complex XML schema type 'WS1:invokeEtlResponse': */ +class SOAP_CMAC _WS1__invokeEtlResponse { + public: + /// Required element 'WS1:invokeEtlReturn' of XML schema type 'xsd:string' + std::string invokeEtlReturn; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__invokeEtlResponse + virtual long soap_type(void) const { return SOAP_TYPE__WS1__invokeEtlResponse; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__invokeEtlResponse, default initialized and not managed by a soap context + virtual _WS1__invokeEtlResponse *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__invokeEtlResponse); } + public: + /// Constructor with default initializations + _WS1__invokeEtlResponse() : invokeEtlReturn(), soap() { } + virtual ~_WS1__invokeEtlResponse() { } + /// Friend allocator used by soap_new__WS1__invokeEtlResponse(struct soap*, int) + friend SOAP_FMAC1 _WS1__invokeEtlResponse * SOAP_FMAC2 cross_instantiate__WS1__invokeEtlResponse(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:155 */ +#ifndef SOAP_TYPE__WS1__getEtlJobList +#define SOAP_TYPE__WS1__getEtlJobList (10) +/* complex XML schema type 'WS1:getEtlJobList': */ +class SOAP_CMAC _WS1__getEtlJobList { + public: + /// Required element 'WS1:in0' of XML schema type 'xsd:string' + std::string in0; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__getEtlJobList + virtual long soap_type(void) const { return SOAP_TYPE__WS1__getEtlJobList; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__getEtlJobList, default initialized and not managed by a soap context + virtual _WS1__getEtlJobList *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__getEtlJobList); } + public: + /// Constructor with default initializations + _WS1__getEtlJobList() : in0(), soap() { } + virtual ~_WS1__getEtlJobList() { } + /// Friend allocator used by soap_new__WS1__getEtlJobList(struct soap*, int) + friend SOAP_FMAC1 _WS1__getEtlJobList * SOAP_FMAC2 cross_instantiate__WS1__getEtlJobList(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:157 */ +#ifndef SOAP_TYPE__WS1__getEtlJobListResponse +#define SOAP_TYPE__WS1__getEtlJobListResponse (11) +/* complex XML schema type 'WS1:getEtlJobListResponse': */ +class SOAP_CMAC _WS1__getEtlJobListResponse { + public: + /// Required element 'WS1:getEtlJobListReturn' of XML schema type 'xsd:string' + std::string getEtlJobListReturn; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__getEtlJobListResponse + virtual long soap_type(void) const { return SOAP_TYPE__WS1__getEtlJobListResponse; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__getEtlJobListResponse, default initialized and not managed by a soap context + virtual _WS1__getEtlJobListResponse *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__getEtlJobListResponse); } + public: + /// Constructor with default initializations + _WS1__getEtlJobListResponse() : getEtlJobListReturn(), soap() { } + virtual ~_WS1__getEtlJobListResponse() { } + /// Friend allocator used by soap_new__WS1__getEtlJobListResponse(struct soap*, int) + friend SOAP_FMAC1 _WS1__getEtlJobListResponse * SOAP_FMAC2 cross_instantiate__WS1__getEtlJobListResponse(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:159 */ +#ifndef SOAP_TYPE__WS1__getParamList +#define SOAP_TYPE__WS1__getParamList (12) +/* complex XML schema type 'WS1:getParamList': */ +class SOAP_CMAC _WS1__getParamList { + public: + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__getParamList + virtual long soap_type(void) const { return SOAP_TYPE__WS1__getParamList; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__getParamList, default initialized and not managed by a soap context + virtual _WS1__getParamList *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__getParamList); } + public: + /// Constructor with default initializations + _WS1__getParamList() : soap() { } + virtual ~_WS1__getParamList() { } + /// Friend allocator used by soap_new__WS1__getParamList(struct soap*, int) + friend SOAP_FMAC1 _WS1__getParamList * SOAP_FMAC2 cross_instantiate__WS1__getParamList(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:161 */ +#ifndef SOAP_TYPE__WS1__getParamListResponse +#define SOAP_TYPE__WS1__getParamListResponse (13) +/* complex XML schema type 'WS1:getParamListResponse': */ +class SOAP_CMAC _WS1__getParamListResponse { + public: + /// Required element 'WS1:getParamListReturn' of XML schema type 'xsd:string' + std::string getParamListReturn; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__getParamListResponse + virtual long soap_type(void) const { return SOAP_TYPE__WS1__getParamListResponse; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__getParamListResponse, default initialized and not managed by a soap context + virtual _WS1__getParamListResponse *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__getParamListResponse); } + public: + /// Constructor with default initializations + _WS1__getParamListResponse() : getParamListReturn(), soap() { } + virtual ~_WS1__getParamListResponse() { } + /// Friend allocator used by soap_new__WS1__getParamListResponse(struct soap*, int) + friend SOAP_FMAC1 _WS1__getParamListResponse * SOAP_FMAC2 cross_instantiate__WS1__getParamListResponse(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:163 */ +#ifndef SOAP_TYPE__WS1__getProdList +#define SOAP_TYPE__WS1__getProdList (14) +/* complex XML schema type 'WS1:getProdList': */ +class SOAP_CMAC _WS1__getProdList { + public: + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__getProdList + virtual long soap_type(void) const { return SOAP_TYPE__WS1__getProdList; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__getProdList, default initialized and not managed by a soap context + virtual _WS1__getProdList *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__getProdList); } + public: + /// Constructor with default initializations + _WS1__getProdList() : soap() { } + virtual ~_WS1__getProdList() { } + /// Friend allocator used by soap_new__WS1__getProdList(struct soap*, int) + friend SOAP_FMAC1 _WS1__getProdList * SOAP_FMAC2 cross_instantiate__WS1__getProdList(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:165 */ +#ifndef SOAP_TYPE__WS1__getProdListResponse +#define SOAP_TYPE__WS1__getProdListResponse (15) +/* complex XML schema type 'WS1:getProdListResponse': */ +class SOAP_CMAC _WS1__getProdListResponse { + public: + /// Required element 'WS1:getProdListReturn' of XML schema type 'xsd:string' + std::string getProdListReturn; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__getProdListResponse + virtual long soap_type(void) const { return SOAP_TYPE__WS1__getProdListResponse; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__getProdListResponse, default initialized and not managed by a soap context + virtual _WS1__getProdListResponse *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__getProdListResponse); } + public: + /// Constructor with default initializations + _WS1__getProdListResponse() : getProdListReturn(), soap() { } + virtual ~_WS1__getProdListResponse() { } + /// Friend allocator used by soap_new__WS1__getProdListResponse(struct soap*, int) + friend SOAP_FMAC1 _WS1__getProdListResponse * SOAP_FMAC2 cross_instantiate__WS1__getProdListResponse(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:167 */ +#ifndef SOAP_TYPE__WS1__regProdAP +#define SOAP_TYPE__WS1__regProdAP (16) +/* complex XML schema type 'WS1:regProdAP': */ +class SOAP_CMAC _WS1__regProdAP { + public: + /// Required element 'WS1:in0' of XML schema type 'xsd:string' + std::string in0; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__regProdAP + virtual long soap_type(void) const { return SOAP_TYPE__WS1__regProdAP; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__regProdAP, default initialized and not managed by a soap context + virtual _WS1__regProdAP *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__regProdAP); } + public: + /// Constructor with default initializations + _WS1__regProdAP() : in0(), soap() { } + virtual ~_WS1__regProdAP() { } + /// Friend allocator used by soap_new__WS1__regProdAP(struct soap*, int) + friend SOAP_FMAC1 _WS1__regProdAP * SOAP_FMAC2 cross_instantiate__WS1__regProdAP(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:169 */ +#ifndef SOAP_TYPE__WS1__regProdAPResponse +#define SOAP_TYPE__WS1__regProdAPResponse (17) +/* complex XML schema type 'WS1:regProdAPResponse': */ +class SOAP_CMAC _WS1__regProdAPResponse { + public: + /// Required element 'WS1:regProdAPReturn' of XML schema type 'xsd:string' + std::string regProdAPReturn; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__regProdAPResponse + virtual long soap_type(void) const { return SOAP_TYPE__WS1__regProdAPResponse; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__regProdAPResponse, default initialized and not managed by a soap context + virtual _WS1__regProdAPResponse *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__regProdAPResponse); } + public: + /// Constructor with default initializations + _WS1__regProdAPResponse() : regProdAPReturn(), soap() { } + virtual ~_WS1__regProdAPResponse() { } + /// Friend allocator used by soap_new__WS1__regProdAPResponse(struct soap*, int) + friend SOAP_FMAC1 _WS1__regProdAPResponse * SOAP_FMAC2 cross_instantiate__WS1__regProdAPResponse(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:171 */ +#ifndef SOAP_TYPE__WS1__invokeUnion +#define SOAP_TYPE__WS1__invokeUnion (18) +/* complex XML schema type 'WS1:invokeUnion': */ +class SOAP_CMAC _WS1__invokeUnion { + public: + /// Required element 'WS1:in0' of XML schema type 'xsd:string' + std::string in0; + /// Required element 'WS1:in1' of XML schema type 'xsd:string' + std::string in1; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__invokeUnion + virtual long soap_type(void) const { return SOAP_TYPE__WS1__invokeUnion; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__invokeUnion, default initialized and not managed by a soap context + virtual _WS1__invokeUnion *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__invokeUnion); } + public: + /// Constructor with default initializations + _WS1__invokeUnion() : in0(), in1(), soap() { } + virtual ~_WS1__invokeUnion() { } + /// Friend allocator used by soap_new__WS1__invokeUnion(struct soap*, int) + friend SOAP_FMAC1 _WS1__invokeUnion * SOAP_FMAC2 cross_instantiate__WS1__invokeUnion(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:173 */ +#ifndef SOAP_TYPE__WS1__invokeUnionResponse +#define SOAP_TYPE__WS1__invokeUnionResponse (19) +/* complex XML schema type 'WS1:invokeUnionResponse': */ +class SOAP_CMAC _WS1__invokeUnionResponse { + public: + /// Required element 'WS1:invokeUnionReturn' of XML schema type 'xsd:string' + std::string invokeUnionReturn; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__invokeUnionResponse + virtual long soap_type(void) const { return SOAP_TYPE__WS1__invokeUnionResponse; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__invokeUnionResponse, default initialized and not managed by a soap context + virtual _WS1__invokeUnionResponse *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__invokeUnionResponse); } + public: + /// Constructor with default initializations + _WS1__invokeUnionResponse() : invokeUnionReturn(), soap() { } + virtual ~_WS1__invokeUnionResponse() { } + /// Friend allocator used by soap_new__WS1__invokeUnionResponse(struct soap*, int) + friend SOAP_FMAC1 _WS1__invokeUnionResponse * SOAP_FMAC2 cross_instantiate__WS1__invokeUnionResponse(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:175 */ +#ifndef SOAP_TYPE__WS1__invokeMdm +#define SOAP_TYPE__WS1__invokeMdm (20) +/* complex XML schema type 'WS1:invokeMdm': */ +class SOAP_CMAC _WS1__invokeMdm { + public: + /// Required element 'WS1:in0' of XML schema type 'xsd:string' + std::string in0; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__invokeMdm + virtual long soap_type(void) const { return SOAP_TYPE__WS1__invokeMdm; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__invokeMdm, default initialized and not managed by a soap context + virtual _WS1__invokeMdm *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__invokeMdm); } + public: + /// Constructor with default initializations + _WS1__invokeMdm() : in0(), soap() { } + virtual ~_WS1__invokeMdm() { } + /// Friend allocator used by soap_new__WS1__invokeMdm(struct soap*, int) + friend SOAP_FMAC1 _WS1__invokeMdm * SOAP_FMAC2 cross_instantiate__WS1__invokeMdm(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:177 */ +#ifndef SOAP_TYPE__WS1__invokeMdmResponse +#define SOAP_TYPE__WS1__invokeMdmResponse (21) +/* complex XML schema type 'WS1:invokeMdmResponse': */ +class SOAP_CMAC _WS1__invokeMdmResponse { + public: + /// Required element 'WS1:invokeMdmReturn' of XML schema type 'xsd:string' + std::string invokeMdmReturn; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__invokeMdmResponse + virtual long soap_type(void) const { return SOAP_TYPE__WS1__invokeMdmResponse; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__invokeMdmResponse, default initialized and not managed by a soap context + virtual _WS1__invokeMdmResponse *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__invokeMdmResponse); } + public: + /// Constructor with default initializations + _WS1__invokeMdmResponse() : invokeMdmReturn(), soap() { } + virtual ~_WS1__invokeMdmResponse() { } + /// Friend allocator used by soap_new__WS1__invokeMdmResponse(struct soap*, int) + friend SOAP_FMAC1 _WS1__invokeMdmResponse * SOAP_FMAC2 cross_instantiate__WS1__invokeMdmResponse(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:179 */ +#ifndef SOAP_TYPE__WS1__getProd +#define SOAP_TYPE__WS1__getProd (22) +/* complex XML schema type 'WS1:getProd': */ +class SOAP_CMAC _WS1__getProd { + public: + /// Required element 'WS1:in0' of XML schema type 'xsd:string' + std::string in0; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__getProd + virtual long soap_type(void) const { return SOAP_TYPE__WS1__getProd; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__getProd, default initialized and not managed by a soap context + virtual _WS1__getProd *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__getProd); } + public: + /// Constructor with default initializations + _WS1__getProd() : in0(), soap() { } + virtual ~_WS1__getProd() { } + /// Friend allocator used by soap_new__WS1__getProd(struct soap*, int) + friend SOAP_FMAC1 _WS1__getProd * SOAP_FMAC2 cross_instantiate__WS1__getProd(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:181 */ +#ifndef SOAP_TYPE__WS1__getProdResponse +#define SOAP_TYPE__WS1__getProdResponse (23) +/* complex XML schema type 'WS1:getProdResponse': */ +class SOAP_CMAC _WS1__getProdResponse { + public: + /// Required element 'WS1:getProdReturn' of XML schema type 'xsd:string' + std::string getProdReturn; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__getProdResponse + virtual long soap_type(void) const { return SOAP_TYPE__WS1__getProdResponse; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__getProdResponse, default initialized and not managed by a soap context + virtual _WS1__getProdResponse *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__getProdResponse); } + public: + /// Constructor with default initializations + _WS1__getProdResponse() : getProdReturn(), soap() { } + virtual ~_WS1__getProdResponse() { } + /// Friend allocator used by soap_new__WS1__getProdResponse(struct soap*, int) + friend SOAP_FMAC1 _WS1__getProdResponse * SOAP_FMAC2 cross_instantiate__WS1__getProdResponse(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:183 */ +#ifndef SOAP_TYPE__WS1__getSrv +#define SOAP_TYPE__WS1__getSrv (24) +/* complex XML schema type 'WS1:getSrv': */ +class SOAP_CMAC _WS1__getSrv { + public: + /// Required element 'WS1:in0' of XML schema type 'xsd:string' + std::string in0; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__getSrv + virtual long soap_type(void) const { return SOAP_TYPE__WS1__getSrv; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__getSrv, default initialized and not managed by a soap context + virtual _WS1__getSrv *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__getSrv); } + public: + /// Constructor with default initializations + _WS1__getSrv() : in0(), soap() { } + virtual ~_WS1__getSrv() { } + /// Friend allocator used by soap_new__WS1__getSrv(struct soap*, int) + friend SOAP_FMAC1 _WS1__getSrv * SOAP_FMAC2 cross_instantiate__WS1__getSrv(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:185 */ +#ifndef SOAP_TYPE__WS1__getSrvResponse +#define SOAP_TYPE__WS1__getSrvResponse (25) +/* complex XML schema type 'WS1:getSrvResponse': */ +class SOAP_CMAC _WS1__getSrvResponse { + public: + /// Required element 'WS1:getSrvReturn' of XML schema type 'xsd:string' + std::string getSrvReturn; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__getSrvResponse + virtual long soap_type(void) const { return SOAP_TYPE__WS1__getSrvResponse; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__getSrvResponse, default initialized and not managed by a soap context + virtual _WS1__getSrvResponse *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__getSrvResponse); } + public: + /// Constructor with default initializations + _WS1__getSrvResponse() : getSrvReturn(), soap() { } + virtual ~_WS1__getSrvResponse() { } + /// Friend allocator used by soap_new__WS1__getSrvResponse(struct soap*, int) + friend SOAP_FMAC1 _WS1__getSrvResponse * SOAP_FMAC2 cross_instantiate__WS1__getSrvResponse(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:187 */ +#ifndef SOAP_TYPE__WS1__fpInvoke +#define SOAP_TYPE__WS1__fpInvoke (26) +/* complex XML schema type 'WS1:fpInvoke': */ +class SOAP_CMAC _WS1__fpInvoke { + public: + /// Required element 'WS1:in0' of XML schema type 'xsd:string' + std::string in0; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__fpInvoke + virtual long soap_type(void) const { return SOAP_TYPE__WS1__fpInvoke; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__fpInvoke, default initialized and not managed by a soap context + virtual _WS1__fpInvoke *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__fpInvoke); } + public: + /// Constructor with default initializations + _WS1__fpInvoke() : in0(), soap() { } + virtual ~_WS1__fpInvoke() { } + /// Friend allocator used by soap_new__WS1__fpInvoke(struct soap*, int) + friend SOAP_FMAC1 _WS1__fpInvoke * SOAP_FMAC2 cross_instantiate__WS1__fpInvoke(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:189 */ +#ifndef SOAP_TYPE__WS1__fpInvokeResponse +#define SOAP_TYPE__WS1__fpInvokeResponse (27) +/* complex XML schema type 'WS1:fpInvokeResponse': */ +class SOAP_CMAC _WS1__fpInvokeResponse { + public: + /// Required element 'WS1:fpInvokeReturn' of XML schema type 'xsd:string' + std::string fpInvokeReturn; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__fpInvokeResponse + virtual long soap_type(void) const { return SOAP_TYPE__WS1__fpInvokeResponse; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__fpInvokeResponse, default initialized and not managed by a soap context + virtual _WS1__fpInvokeResponse *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__fpInvokeResponse); } + public: + /// Constructor with default initializations + _WS1__fpInvokeResponse() : fpInvokeReturn(), soap() { } + virtual ~_WS1__fpInvokeResponse() { } + /// Friend allocator used by soap_new__WS1__fpInvokeResponse(struct soap*, int) + friend SOAP_FMAC1 _WS1__fpInvokeResponse * SOAP_FMAC2 cross_instantiate__WS1__fpInvokeResponse(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:191 */ +#ifndef SOAP_TYPE__WS1__getStandardServiceList +#define SOAP_TYPE__WS1__getStandardServiceList (28) +/* complex XML schema type 'WS1:getStandardServiceList': */ +class SOAP_CMAC _WS1__getStandardServiceList { + public: + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__getStandardServiceList + virtual long soap_type(void) const { return SOAP_TYPE__WS1__getStandardServiceList; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__getStandardServiceList, default initialized and not managed by a soap context + virtual _WS1__getStandardServiceList *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__getStandardServiceList); } + public: + /// Constructor with default initializations + _WS1__getStandardServiceList() : soap() { } + virtual ~_WS1__getStandardServiceList() { } + /// Friend allocator used by soap_new__WS1__getStandardServiceList(struct soap*, int) + friend SOAP_FMAC1 _WS1__getStandardServiceList * SOAP_FMAC2 cross_instantiate__WS1__getStandardServiceList(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:193 */ +#ifndef SOAP_TYPE__WS1__getStandardServiceListResponse +#define SOAP_TYPE__WS1__getStandardServiceListResponse (29) +/* complex XML schema type 'WS1:getStandardServiceListResponse': */ +class SOAP_CMAC _WS1__getStandardServiceListResponse { + public: + /// Required element 'WS1:getStandardServiceListReturn' of XML schema type 'xsd:string' + std::string getStandardServiceListReturn; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__getStandardServiceListResponse + virtual long soap_type(void) const { return SOAP_TYPE__WS1__getStandardServiceListResponse; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__getStandardServiceListResponse, default initialized and not managed by a soap context + virtual _WS1__getStandardServiceListResponse *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__getStandardServiceListResponse); } + public: + /// Constructor with default initializations + _WS1__getStandardServiceListResponse() : getStandardServiceListReturn(), soap() { } + virtual ~_WS1__getStandardServiceListResponse() { } + /// Friend allocator used by soap_new__WS1__getStandardServiceListResponse(struct soap*, int) + friend SOAP_FMAC1 _WS1__getStandardServiceListResponse * SOAP_FMAC2 cross_instantiate__WS1__getStandardServiceListResponse(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:195 */ +#ifndef SOAP_TYPE__WS1__getStandardDataNameList +#define SOAP_TYPE__WS1__getStandardDataNameList (30) +/* complex XML schema type 'WS1:getStandardDataNameList': */ +class SOAP_CMAC _WS1__getStandardDataNameList { + public: + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__getStandardDataNameList + virtual long soap_type(void) const { return SOAP_TYPE__WS1__getStandardDataNameList; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__getStandardDataNameList, default initialized and not managed by a soap context + virtual _WS1__getStandardDataNameList *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__getStandardDataNameList); } + public: + /// Constructor with default initializations + _WS1__getStandardDataNameList() : soap() { } + virtual ~_WS1__getStandardDataNameList() { } + /// Friend allocator used by soap_new__WS1__getStandardDataNameList(struct soap*, int) + friend SOAP_FMAC1 _WS1__getStandardDataNameList * SOAP_FMAC2 cross_instantiate__WS1__getStandardDataNameList(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:197 */ +#ifndef SOAP_TYPE__WS1__getStandardDataNameListResponse +#define SOAP_TYPE__WS1__getStandardDataNameListResponse (31) +/* complex XML schema type 'WS1:getStandardDataNameListResponse': */ +class SOAP_CMAC _WS1__getStandardDataNameListResponse { + public: + /// Required element 'WS1:getStandardDataNameListReturn' of XML schema type 'xsd:string' + std::string getStandardDataNameListReturn; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__getStandardDataNameListResponse + virtual long soap_type(void) const { return SOAP_TYPE__WS1__getStandardDataNameListResponse; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__getStandardDataNameListResponse, default initialized and not managed by a soap context + virtual _WS1__getStandardDataNameListResponse *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__getStandardDataNameListResponse); } + public: + /// Constructor with default initializations + _WS1__getStandardDataNameListResponse() : getStandardDataNameListReturn(), soap() { } + virtual ~_WS1__getStandardDataNameListResponse() { } + /// Friend allocator used by soap_new__WS1__getStandardDataNameListResponse(struct soap*, int) + friend SOAP_FMAC1 _WS1__getStandardDataNameListResponse * SOAP_FMAC2 cross_instantiate__WS1__getStandardDataNameListResponse(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:199 */ +#ifndef SOAP_TYPE__WS1__regSrv +#define SOAP_TYPE__WS1__regSrv (32) +/* complex XML schema type 'WS1:regSrv': */ +class SOAP_CMAC _WS1__regSrv { + public: + /// Required element 'WS1:in0' of XML schema type 'xsd:string' + std::string in0; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__regSrv + virtual long soap_type(void) const { return SOAP_TYPE__WS1__regSrv; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__regSrv, default initialized and not managed by a soap context + virtual _WS1__regSrv *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__regSrv); } + public: + /// Constructor with default initializations + _WS1__regSrv() : in0(), soap() { } + virtual ~_WS1__regSrv() { } + /// Friend allocator used by soap_new__WS1__regSrv(struct soap*, int) + friend SOAP_FMAC1 _WS1__regSrv * SOAP_FMAC2 cross_instantiate__WS1__regSrv(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:201 */ +#ifndef SOAP_TYPE__WS1__regSrvResponse +#define SOAP_TYPE__WS1__regSrvResponse (33) +/* complex XML schema type 'WS1:regSrvResponse': */ +class SOAP_CMAC _WS1__regSrvResponse { + public: + /// Required element 'WS1:regSrvReturn' of XML schema type 'xsd:string' + std::string regSrvReturn; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__regSrvResponse + virtual long soap_type(void) const { return SOAP_TYPE__WS1__regSrvResponse; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__regSrvResponse, default initialized and not managed by a soap context + virtual _WS1__regSrvResponse *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__regSrvResponse); } + public: + /// Constructor with default initializations + _WS1__regSrvResponse() : regSrvReturn(), soap() { } + virtual ~_WS1__regSrvResponse() { } + /// Friend allocator used by soap_new__WS1__regSrvResponse(struct soap*, int) + friend SOAP_FMAC1 _WS1__regSrvResponse * SOAP_FMAC2 cross_instantiate__WS1__regSrvResponse(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:203 */ +#ifndef SOAP_TYPE__WS1__regEAI +#define SOAP_TYPE__WS1__regEAI (34) +/* complex XML schema type 'WS1:regEAI': */ +class SOAP_CMAC _WS1__regEAI { + public: + /// Required element 'WS1:in0' of XML schema type 'xsd:string' + std::string in0; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__regEAI + virtual long soap_type(void) const { return SOAP_TYPE__WS1__regEAI; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__regEAI, default initialized and not managed by a soap context + virtual _WS1__regEAI *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__regEAI); } + public: + /// Constructor with default initializations + _WS1__regEAI() : in0(), soap() { } + virtual ~_WS1__regEAI() { } + /// Friend allocator used by soap_new__WS1__regEAI(struct soap*, int) + friend SOAP_FMAC1 _WS1__regEAI * SOAP_FMAC2 cross_instantiate__WS1__regEAI(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:205 */ +#ifndef SOAP_TYPE__WS1__regEAIResponse +#define SOAP_TYPE__WS1__regEAIResponse (35) +/* complex XML schema type 'WS1:regEAIResponse': */ +class SOAP_CMAC _WS1__regEAIResponse { + public: + /// Required element 'WS1:regEAIReturn' of XML schema type 'xsd:string' + std::string regEAIReturn; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__regEAIResponse + virtual long soap_type(void) const { return SOAP_TYPE__WS1__regEAIResponse; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__regEAIResponse, default initialized and not managed by a soap context + virtual _WS1__regEAIResponse *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__regEAIResponse); } + public: + /// Constructor with default initializations + _WS1__regEAIResponse() : regEAIReturn(), soap() { } + virtual ~_WS1__regEAIResponse() { } + /// Friend allocator used by soap_new__WS1__regEAIResponse(struct soap*, int) + friend SOAP_FMAC1 _WS1__regEAIResponse * SOAP_FMAC2 cross_instantiate__WS1__regEAIResponse(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:207 */ +#ifndef SOAP_TYPE__WS1__invokeSrv +#define SOAP_TYPE__WS1__invokeSrv (36) +/* complex XML schema type 'WS1:invokeSrv': */ +class SOAP_CMAC _WS1__invokeSrv { + public: + /// Required element 'WS1:in0' of XML schema type 'xsd:string' + std::string in0; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__invokeSrv + virtual long soap_type(void) const { return SOAP_TYPE__WS1__invokeSrv; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__invokeSrv, default initialized and not managed by a soap context + virtual _WS1__invokeSrv *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__invokeSrv); } + public: + /// Constructor with default initializations + _WS1__invokeSrv() : in0(), soap() { } + virtual ~_WS1__invokeSrv() { } + /// Friend allocator used by soap_new__WS1__invokeSrv(struct soap*, int) + friend SOAP_FMAC1 _WS1__invokeSrv * SOAP_FMAC2 cross_instantiate__WS1__invokeSrv(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:209 */ +#ifndef SOAP_TYPE__WS1__invokeSrvResponse +#define SOAP_TYPE__WS1__invokeSrvResponse (37) +/* complex XML schema type 'WS1:invokeSrvResponse': */ +class SOAP_CMAC _WS1__invokeSrvResponse { + public: + /// Required element 'WS1:invokeSrvReturn' of XML schema type 'xsd:string' + std::string invokeSrvReturn; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__invokeSrvResponse + virtual long soap_type(void) const { return SOAP_TYPE__WS1__invokeSrvResponse; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__invokeSrvResponse, default initialized and not managed by a soap context + virtual _WS1__invokeSrvResponse *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__invokeSrvResponse); } + public: + /// Constructor with default initializations + _WS1__invokeSrvResponse() : invokeSrvReturn(), soap() { } + virtual ~_WS1__invokeSrvResponse() { } + /// Friend allocator used by soap_new__WS1__invokeSrvResponse(struct soap*, int) + friend SOAP_FMAC1 _WS1__invokeSrvResponse * SOAP_FMAC2 cross_instantiate__WS1__invokeSrvResponse(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:211 */ +#ifndef SOAP_TYPE__WS1__escrowResendSrv +#define SOAP_TYPE__WS1__escrowResendSrv (38) +/* complex XML schema type 'WS1:escrowResendSrv': */ +class SOAP_CMAC _WS1__escrowResendSrv { + public: + /// Required element 'WS1:in0' of XML schema type 'xsd:string' + std::string in0; + /// Required element 'WS1:in1' of XML schema type 'xsd:string' + std::string in1; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__escrowResendSrv + virtual long soap_type(void) const { return SOAP_TYPE__WS1__escrowResendSrv; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__escrowResendSrv, default initialized and not managed by a soap context + virtual _WS1__escrowResendSrv *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__escrowResendSrv); } + public: + /// Constructor with default initializations + _WS1__escrowResendSrv() : in0(), in1(), soap() { } + virtual ~_WS1__escrowResendSrv() { } + /// Friend allocator used by soap_new__WS1__escrowResendSrv(struct soap*, int) + friend SOAP_FMAC1 _WS1__escrowResendSrv * SOAP_FMAC2 cross_instantiate__WS1__escrowResendSrv(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:213 */ +#ifndef SOAP_TYPE__WS1__escrowResendSrvResponse +#define SOAP_TYPE__WS1__escrowResendSrvResponse (39) +/* complex XML schema type 'WS1:escrowResendSrvResponse': */ +class SOAP_CMAC _WS1__escrowResendSrvResponse { + public: + /// Required element 'WS1:escrowResendSrvReturn' of XML schema type 'xsd:string' + std::string escrowResendSrvReturn; + /// Context that manages this object + struct soap *soap; + public: + /// Return unique type id SOAP_TYPE__WS1__escrowResendSrvResponse + virtual long soap_type(void) const { return SOAP_TYPE__WS1__escrowResendSrvResponse; } + /// (Re)set members to default values + virtual void soap_default(struct soap*); + /// Serialize object to prepare for SOAP 1.1/1.2 encoded output (or with SOAP_XML_GRAPH) by analyzing its (cyclic) structures + virtual void soap_serialize(struct soap*) const; + /// Output object in XML, compliant with SOAP 1.1 encoding style, return error code or SOAP_OK + virtual int soap_put(struct soap*, const char *tag, const char *type) const; + /// Output object in XML, with tag and optional id attribute and xsi:type, return error code or SOAP_OK + virtual int soap_out(struct soap*, const char *tag, int id, const char *type) const; + /// Get object from XML, compliant with SOAP 1.1 encoding style, return pointer to object or NULL on error + virtual void *soap_get(struct soap*, const char *tag, const char *type); + /// Get object from XML, with matching tag and type (NULL matches any tag and type), return pointer to object or NULL on error + virtual void *soap_in(struct soap*, const char *tag, const char *type); + /// Return a new object of type _WS1__escrowResendSrvResponse, default initialized and not managed by a soap context + virtual _WS1__escrowResendSrvResponse *soap_alloc(void) const { return SOAP_NEW_UNMANAGED(_WS1__escrowResendSrvResponse); } + public: + /// Constructor with default initializations + _WS1__escrowResendSrvResponse() : escrowResendSrvReturn(), soap() { } + virtual ~_WS1__escrowResendSrvResponse() { } + /// Friend allocator used by soap_new__WS1__escrowResendSrvResponse(struct soap*, int) + friend SOAP_FMAC1 _WS1__escrowResendSrvResponse * SOAP_FMAC2 cross_instantiate__WS1__escrowResendSrvResponse(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:1098 */ +#ifndef SOAP_TYPE___WS1__invokeEtl +#define SOAP_TYPE___WS1__invokeEtl (45) +/* Wrapper: */ +struct SOAP_CMAC __WS1__invokeEtl { + public: + /** Optional element 'WS1:invokeEtl' of XML schema type 'WS1:invokeEtl' */ + _WS1__invokeEtl *WS1__invokeEtl; + public: + /** Return unique type id SOAP_TYPE___WS1__invokeEtl */ + long soap_type() const { return SOAP_TYPE___WS1__invokeEtl; } + /** Constructor with member initializations */ + __WS1__invokeEtl() : WS1__invokeEtl() { } + /** Friend allocator */ + friend SOAP_FMAC1 __WS1__invokeEtl * SOAP_FMAC2 cross_instantiate___WS1__invokeEtl(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:1165 */ +#ifndef SOAP_TYPE___WS1__getEtlJobList +#define SOAP_TYPE___WS1__getEtlJobList (49) +/* Wrapper: */ +struct SOAP_CMAC __WS1__getEtlJobList { + public: + /** Optional element 'WS1:getEtlJobList' of XML schema type 'WS1:getEtlJobList' */ + _WS1__getEtlJobList *WS1__getEtlJobList; + public: + /** Return unique type id SOAP_TYPE___WS1__getEtlJobList */ + long soap_type() const { return SOAP_TYPE___WS1__getEtlJobList; } + /** Constructor with member initializations */ + __WS1__getEtlJobList() : WS1__getEtlJobList() { } + /** Friend allocator */ + friend SOAP_FMAC1 __WS1__getEtlJobList * SOAP_FMAC2 cross_instantiate___WS1__getEtlJobList(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:1232 */ +#ifndef SOAP_TYPE___WS1__getParamList +#define SOAP_TYPE___WS1__getParamList (53) +/* Wrapper: */ +struct SOAP_CMAC __WS1__getParamList { + public: + /** Optional element 'WS1:getParamList' of XML schema type 'WS1:getParamList' */ + _WS1__getParamList *WS1__getParamList; + public: + /** Return unique type id SOAP_TYPE___WS1__getParamList */ + long soap_type() const { return SOAP_TYPE___WS1__getParamList; } + /** Constructor with member initializations */ + __WS1__getParamList() : WS1__getParamList() { } + /** Friend allocator */ + friend SOAP_FMAC1 __WS1__getParamList * SOAP_FMAC2 cross_instantiate___WS1__getParamList(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:1299 */ +#ifndef SOAP_TYPE___WS1__getProdList +#define SOAP_TYPE___WS1__getProdList (57) +/* Wrapper: */ +struct SOAP_CMAC __WS1__getProdList { + public: + /** Optional element 'WS1:getProdList' of XML schema type 'WS1:getProdList' */ + _WS1__getProdList *WS1__getProdList; + public: + /** Return unique type id SOAP_TYPE___WS1__getProdList */ + long soap_type() const { return SOAP_TYPE___WS1__getProdList; } + /** Constructor with member initializations */ + __WS1__getProdList() : WS1__getProdList() { } + /** Friend allocator */ + friend SOAP_FMAC1 __WS1__getProdList * SOAP_FMAC2 cross_instantiate___WS1__getProdList(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:1366 */ +#ifndef SOAP_TYPE___WS1__regProdAP +#define SOAP_TYPE___WS1__regProdAP (61) +/* Wrapper: */ +struct SOAP_CMAC __WS1__regProdAP { + public: + /** Optional element 'WS1:regProdAP' of XML schema type 'WS1:regProdAP' */ + _WS1__regProdAP *WS1__regProdAP; + public: + /** Return unique type id SOAP_TYPE___WS1__regProdAP */ + long soap_type() const { return SOAP_TYPE___WS1__regProdAP; } + /** Constructor with member initializations */ + __WS1__regProdAP() : WS1__regProdAP() { } + /** Friend allocator */ + friend SOAP_FMAC1 __WS1__regProdAP * SOAP_FMAC2 cross_instantiate___WS1__regProdAP(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:1433 */ +#ifndef SOAP_TYPE___WS1__invokeUnion +#define SOAP_TYPE___WS1__invokeUnion (65) +/* Wrapper: */ +struct SOAP_CMAC __WS1__invokeUnion { + public: + /** Optional element 'WS1:invokeUnion' of XML schema type 'WS1:invokeUnion' */ + _WS1__invokeUnion *WS1__invokeUnion; + public: + /** Return unique type id SOAP_TYPE___WS1__invokeUnion */ + long soap_type() const { return SOAP_TYPE___WS1__invokeUnion; } + /** Constructor with member initializations */ + __WS1__invokeUnion() : WS1__invokeUnion() { } + /** Friend allocator */ + friend SOAP_FMAC1 __WS1__invokeUnion * SOAP_FMAC2 cross_instantiate___WS1__invokeUnion(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:1500 */ +#ifndef SOAP_TYPE___WS1__invokeMdm +#define SOAP_TYPE___WS1__invokeMdm (69) +/* Wrapper: */ +struct SOAP_CMAC __WS1__invokeMdm { + public: + /** Optional element 'WS1:invokeMdm' of XML schema type 'WS1:invokeMdm' */ + _WS1__invokeMdm *WS1__invokeMdm; + public: + /** Return unique type id SOAP_TYPE___WS1__invokeMdm */ + long soap_type() const { return SOAP_TYPE___WS1__invokeMdm; } + /** Constructor with member initializations */ + __WS1__invokeMdm() : WS1__invokeMdm() { } + /** Friend allocator */ + friend SOAP_FMAC1 __WS1__invokeMdm * SOAP_FMAC2 cross_instantiate___WS1__invokeMdm(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:1567 */ +#ifndef SOAP_TYPE___WS1__getProd +#define SOAP_TYPE___WS1__getProd (73) +/* Wrapper: */ +struct SOAP_CMAC __WS1__getProd { + public: + /** Optional element 'WS1:getProd' of XML schema type 'WS1:getProd' */ + _WS1__getProd *WS1__getProd; + public: + /** Return unique type id SOAP_TYPE___WS1__getProd */ + long soap_type() const { return SOAP_TYPE___WS1__getProd; } + /** Constructor with member initializations */ + __WS1__getProd() : WS1__getProd() { } + /** Friend allocator */ + friend SOAP_FMAC1 __WS1__getProd * SOAP_FMAC2 cross_instantiate___WS1__getProd(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:1634 */ +#ifndef SOAP_TYPE___WS1__getSrv +#define SOAP_TYPE___WS1__getSrv (77) +/* Wrapper: */ +struct SOAP_CMAC __WS1__getSrv { + public: + /** Optional element 'WS1:getSrv' of XML schema type 'WS1:getSrv' */ + _WS1__getSrv *WS1__getSrv; + public: + /** Return unique type id SOAP_TYPE___WS1__getSrv */ + long soap_type() const { return SOAP_TYPE___WS1__getSrv; } + /** Constructor with member initializations */ + __WS1__getSrv() : WS1__getSrv() { } + /** Friend allocator */ + friend SOAP_FMAC1 __WS1__getSrv * SOAP_FMAC2 cross_instantiate___WS1__getSrv(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:1701 */ +#ifndef SOAP_TYPE___WS1__fpInvoke +#define SOAP_TYPE___WS1__fpInvoke (81) +/* Wrapper: */ +struct SOAP_CMAC __WS1__fpInvoke { + public: + /** Optional element 'WS1:fpInvoke' of XML schema type 'WS1:fpInvoke' */ + _WS1__fpInvoke *WS1__fpInvoke; + public: + /** Return unique type id SOAP_TYPE___WS1__fpInvoke */ + long soap_type() const { return SOAP_TYPE___WS1__fpInvoke; } + /** Constructor with member initializations */ + __WS1__fpInvoke() : WS1__fpInvoke() { } + /** Friend allocator */ + friend SOAP_FMAC1 __WS1__fpInvoke * SOAP_FMAC2 cross_instantiate___WS1__fpInvoke(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:1768 */ +#ifndef SOAP_TYPE___WS1__getStandardServiceList +#define SOAP_TYPE___WS1__getStandardServiceList (85) +/* Wrapper: */ +struct SOAP_CMAC __WS1__getStandardServiceList { + public: + /** Optional element 'WS1:getStandardServiceList' of XML schema type 'WS1:getStandardServiceList' */ + _WS1__getStandardServiceList *WS1__getStandardServiceList; + public: + /** Return unique type id SOAP_TYPE___WS1__getStandardServiceList */ + long soap_type() const { return SOAP_TYPE___WS1__getStandardServiceList; } + /** Constructor with member initializations */ + __WS1__getStandardServiceList() : WS1__getStandardServiceList() { } + /** Friend allocator */ + friend SOAP_FMAC1 __WS1__getStandardServiceList * SOAP_FMAC2 cross_instantiate___WS1__getStandardServiceList(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:1835 */ +#ifndef SOAP_TYPE___WS1__getStandardDataNameList +#define SOAP_TYPE___WS1__getStandardDataNameList (89) +/* Wrapper: */ +struct SOAP_CMAC __WS1__getStandardDataNameList { + public: + /** Optional element 'WS1:getStandardDataNameList' of XML schema type 'WS1:getStandardDataNameList' */ + _WS1__getStandardDataNameList *WS1__getStandardDataNameList; + public: + /** Return unique type id SOAP_TYPE___WS1__getStandardDataNameList */ + long soap_type() const { return SOAP_TYPE___WS1__getStandardDataNameList; } + /** Constructor with member initializations */ + __WS1__getStandardDataNameList() : WS1__getStandardDataNameList() { } + /** Friend allocator */ + friend SOAP_FMAC1 __WS1__getStandardDataNameList * SOAP_FMAC2 cross_instantiate___WS1__getStandardDataNameList(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:1902 */ +#ifndef SOAP_TYPE___WS1__regSrv +#define SOAP_TYPE___WS1__regSrv (93) +/* Wrapper: */ +struct SOAP_CMAC __WS1__regSrv { + public: + /** Optional element 'WS1:regSrv' of XML schema type 'WS1:regSrv' */ + _WS1__regSrv *WS1__regSrv; + public: + /** Return unique type id SOAP_TYPE___WS1__regSrv */ + long soap_type() const { return SOAP_TYPE___WS1__regSrv; } + /** Constructor with member initializations */ + __WS1__regSrv() : WS1__regSrv() { } + /** Friend allocator */ + friend SOAP_FMAC1 __WS1__regSrv * SOAP_FMAC2 cross_instantiate___WS1__regSrv(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:1969 */ +#ifndef SOAP_TYPE___WS1__regEAI +#define SOAP_TYPE___WS1__regEAI (97) +/* Wrapper: */ +struct SOAP_CMAC __WS1__regEAI { + public: + /** Optional element 'WS1:regEAI' of XML schema type 'WS1:regEAI' */ + _WS1__regEAI *WS1__regEAI; + public: + /** Return unique type id SOAP_TYPE___WS1__regEAI */ + long soap_type() const { return SOAP_TYPE___WS1__regEAI; } + /** Constructor with member initializations */ + __WS1__regEAI() : WS1__regEAI() { } + /** Friend allocator */ + friend SOAP_FMAC1 __WS1__regEAI * SOAP_FMAC2 cross_instantiate___WS1__regEAI(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:2036 */ +#ifndef SOAP_TYPE___WS1__invokeSrv +#define SOAP_TYPE___WS1__invokeSrv (101) +/* Wrapper: */ +struct SOAP_CMAC __WS1__invokeSrv { + public: + /** Optional element 'WS1:invokeSrv' of XML schema type 'WS1:invokeSrv' */ + _WS1__invokeSrv *WS1__invokeSrv; + public: + /** Return unique type id SOAP_TYPE___WS1__invokeSrv */ + long soap_type() const { return SOAP_TYPE___WS1__invokeSrv; } + /** Constructor with member initializations */ + __WS1__invokeSrv() : WS1__invokeSrv() { } + /** Friend allocator */ + friend SOAP_FMAC1 __WS1__invokeSrv * SOAP_FMAC2 cross_instantiate___WS1__invokeSrv(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:2103 */ +#ifndef SOAP_TYPE___WS1__escrowResendSrv +#define SOAP_TYPE___WS1__escrowResendSrv (105) +/* Wrapper: */ +struct SOAP_CMAC __WS1__escrowResendSrv { + public: + /** Optional element 'WS1:escrowResendSrv' of XML schema type 'WS1:escrowResendSrv' */ + _WS1__escrowResendSrv *WS1__escrowResendSrv; + public: + /** Return unique type id SOAP_TYPE___WS1__escrowResendSrv */ + long soap_type() const { return SOAP_TYPE___WS1__escrowResendSrv; } + /** Constructor with member initializations */ + __WS1__escrowResendSrv() : WS1__escrowResendSrv() { } + /** Friend allocator */ + friend SOAP_FMAC1 __WS1__escrowResendSrv * SOAP_FMAC2 cross_instantiate___WS1__escrowResendSrv(struct soap*, int, const char*, const char*, size_t*); +}; +#endif + +/* cross.h:2644 */ +#ifndef WITH_NOGLOBAL +#ifndef SOAP_TYPE_SOAP_ENV__Header +#define SOAP_TYPE_SOAP_ENV__Header (106) +/* SOAP_ENV__Header: */ +struct SOAP_CMAC SOAP_ENV__Header { + public: + /** Return unique type id SOAP_TYPE_SOAP_ENV__Header */ + long soap_type() const { return SOAP_TYPE_SOAP_ENV__Header; } + /** Constructor with member initializations */ + SOAP_ENV__Header() { } + /** Friend allocator */ + friend SOAP_FMAC1 SOAP_ENV__Header * SOAP_FMAC2 cross_instantiate_SOAP_ENV__Header(struct soap*, int, const char*, const char*, size_t*); +}; +#endif +#endif + +/* cross.h:2644 */ +#ifndef WITH_NOGLOBAL +#ifndef SOAP_TYPE_SOAP_ENV__Code +#define SOAP_TYPE_SOAP_ENV__Code (107) +/* Type SOAP_ENV__Code is a recursive data type, (in)directly referencing itself through its (base or derived class) members */ +/* SOAP_ENV__Code: */ +struct SOAP_CMAC SOAP_ENV__Code { + public: + /** Optional element 'SOAP-ENV:Value' of XML schema type 'xsd:QName' */ + char *SOAP_ENV__Value; + /** Optional element 'SOAP-ENV:Subcode' of XML schema type 'SOAP-ENV:Code' */ + struct SOAP_ENV__Code *SOAP_ENV__Subcode; + public: + /** Return unique type id SOAP_TYPE_SOAP_ENV__Code */ + long soap_type() const { return SOAP_TYPE_SOAP_ENV__Code; } + /** Constructor with member initializations */ + SOAP_ENV__Code() : SOAP_ENV__Value(), SOAP_ENV__Subcode() { } + /** Friend allocator */ + friend SOAP_FMAC1 SOAP_ENV__Code * SOAP_FMAC2 cross_instantiate_SOAP_ENV__Code(struct soap*, int, const char*, const char*, size_t*); +}; +#endif +#endif + +/* cross.h:2644 */ +#ifndef WITH_NOGLOBAL +#ifndef SOAP_TYPE_SOAP_ENV__Detail +#define SOAP_TYPE_SOAP_ENV__Detail (109) +/* SOAP_ENV__Detail: */ +struct SOAP_CMAC SOAP_ENV__Detail { + public: + char *__any; + /** Any type of element 'fault' assigned to fault with its SOAP_TYPE_ assigned to __type */ + /** Do not create a cyclic data structure through this member unless SOAP encoding or SOAP_XML_GRAPH are used for id-ref serialization */ + int __type; + void *fault; + public: + /** Return unique type id SOAP_TYPE_SOAP_ENV__Detail */ + long soap_type() const { return SOAP_TYPE_SOAP_ENV__Detail; } + /** Constructor with member initializations */ + SOAP_ENV__Detail() : __any(), __type(), fault() { } + /** Friend allocator */ + friend SOAP_FMAC1 SOAP_ENV__Detail * SOAP_FMAC2 cross_instantiate_SOAP_ENV__Detail(struct soap*, int, const char*, const char*, size_t*); +}; +#endif +#endif + +/* cross.h:2644 */ +#ifndef WITH_NOGLOBAL +#ifndef SOAP_TYPE_SOAP_ENV__Reason +#define SOAP_TYPE_SOAP_ENV__Reason (112) +/* SOAP_ENV__Reason: */ +struct SOAP_CMAC SOAP_ENV__Reason { + public: + /** Optional element 'SOAP-ENV:Text' of XML schema type 'xsd:string' */ + char *SOAP_ENV__Text; + public: + /** Return unique type id SOAP_TYPE_SOAP_ENV__Reason */ + long soap_type() const { return SOAP_TYPE_SOAP_ENV__Reason; } + /** Constructor with member initializations */ + SOAP_ENV__Reason() : SOAP_ENV__Text() { } + /** Friend allocator */ + friend SOAP_FMAC1 SOAP_ENV__Reason * SOAP_FMAC2 cross_instantiate_SOAP_ENV__Reason(struct soap*, int, const char*, const char*, size_t*); +}; +#endif +#endif + +/* cross.h:2644 */ +#ifndef WITH_NOGLOBAL +#ifndef SOAP_TYPE_SOAP_ENV__Fault +#define SOAP_TYPE_SOAP_ENV__Fault (113) +/* SOAP_ENV__Fault: */ +struct SOAP_CMAC SOAP_ENV__Fault { + public: + /** Optional element 'faultcode' of XML schema type 'xsd:QName' */ + char *faultcode; + /** Optional element 'faultstring' of XML schema type 'xsd:string' */ + char *faultstring; + /** Optional element 'faultactor' of XML schema type 'xsd:string' */ + char *faultactor; + /** Optional element 'detail' of XML schema type 'SOAP-ENV:Detail' */ + struct SOAP_ENV__Detail *detail; + /** Optional element 'SOAP-ENV:Code' of XML schema type 'SOAP-ENV:Code' */ + struct SOAP_ENV__Code *SOAP_ENV__Code; + /** Optional element 'SOAP-ENV:Reason' of XML schema type 'SOAP-ENV:Reason' */ + struct SOAP_ENV__Reason *SOAP_ENV__Reason; + /** Optional element 'SOAP-ENV:Node' of XML schema type 'xsd:string' */ + char *SOAP_ENV__Node; + /** Optional element 'SOAP-ENV:Role' of XML schema type 'xsd:string' */ + char *SOAP_ENV__Role; + /** Optional element 'SOAP-ENV:Detail' of XML schema type 'SOAP-ENV:Detail' */ + struct SOAP_ENV__Detail *SOAP_ENV__Detail; + public: + /** Return unique type id SOAP_TYPE_SOAP_ENV__Fault */ + long soap_type() const { return SOAP_TYPE_SOAP_ENV__Fault; } + /** Constructor with member initializations */ + SOAP_ENV__Fault() : faultcode(), faultstring(), faultactor(), detail(), SOAP_ENV__Code(), SOAP_ENV__Reason(), SOAP_ENV__Node(), SOAP_ENV__Role(), SOAP_ENV__Detail() { } + /** Friend allocator */ + friend SOAP_FMAC1 SOAP_ENV__Fault * SOAP_FMAC2 cross_instantiate_SOAP_ENV__Fault(struct soap*, int, const char*, const char*, size_t*); +}; +#endif +#endif + +/******************************************************************************\ + * * + * Typedefs * + * * +\******************************************************************************/ + + +/* (built-in):0 */ +#ifndef SOAP_TYPE__XML +#define SOAP_TYPE__XML (5) +typedef char *_XML; +#endif + +/* (built-in):0 */ +#ifndef SOAP_TYPE__QName +#define SOAP_TYPE__QName (6) +typedef char *_QName; +#endif + +/******************************************************************************\ + * * + * Serializable Types * + * * +\******************************************************************************/ + + +/* char has binding name 'byte' for type 'xsd:byte' */ +#ifndef SOAP_TYPE_byte +#define SOAP_TYPE_byte (3) +#endif + +/* int has binding name 'int' for type 'xsd:int' */ +#ifndef SOAP_TYPE_int +#define SOAP_TYPE_int (1) +#endif + +/* std::string has binding name 'std__string' for type 'xsd:string' */ +#ifndef SOAP_TYPE_std__string +#define SOAP_TYPE_std__string (40) +#endif + +/* _WS1__escrowResendSrvResponse has binding name '_WS1__escrowResendSrvResponse' for type '' */ +#ifndef SOAP_TYPE__WS1__escrowResendSrvResponse +#define SOAP_TYPE__WS1__escrowResendSrvResponse (39) +#endif + +/* _WS1__escrowResendSrv has binding name '_WS1__escrowResendSrv' for type '' */ +#ifndef SOAP_TYPE__WS1__escrowResendSrv +#define SOAP_TYPE__WS1__escrowResendSrv (38) +#endif + +/* _WS1__invokeSrvResponse has binding name '_WS1__invokeSrvResponse' for type '' */ +#ifndef SOAP_TYPE__WS1__invokeSrvResponse +#define SOAP_TYPE__WS1__invokeSrvResponse (37) +#endif + +/* _WS1__invokeSrv has binding name '_WS1__invokeSrv' for type '' */ +#ifndef SOAP_TYPE__WS1__invokeSrv +#define SOAP_TYPE__WS1__invokeSrv (36) +#endif + +/* _WS1__regEAIResponse has binding name '_WS1__regEAIResponse' for type '' */ +#ifndef SOAP_TYPE__WS1__regEAIResponse +#define SOAP_TYPE__WS1__regEAIResponse (35) +#endif + +/* _WS1__regEAI has binding name '_WS1__regEAI' for type '' */ +#ifndef SOAP_TYPE__WS1__regEAI +#define SOAP_TYPE__WS1__regEAI (34) +#endif + +/* _WS1__regSrvResponse has binding name '_WS1__regSrvResponse' for type '' */ +#ifndef SOAP_TYPE__WS1__regSrvResponse +#define SOAP_TYPE__WS1__regSrvResponse (33) +#endif + +/* _WS1__regSrv has binding name '_WS1__regSrv' for type '' */ +#ifndef SOAP_TYPE__WS1__regSrv +#define SOAP_TYPE__WS1__regSrv (32) +#endif + +/* _WS1__getStandardDataNameListResponse has binding name '_WS1__getStandardDataNameListResponse' for type '' */ +#ifndef SOAP_TYPE__WS1__getStandardDataNameListResponse +#define SOAP_TYPE__WS1__getStandardDataNameListResponse (31) +#endif + +/* _WS1__getStandardDataNameList has binding name '_WS1__getStandardDataNameList' for type '' */ +#ifndef SOAP_TYPE__WS1__getStandardDataNameList +#define SOAP_TYPE__WS1__getStandardDataNameList (30) +#endif + +/* _WS1__getStandardServiceListResponse has binding name '_WS1__getStandardServiceListResponse' for type '' */ +#ifndef SOAP_TYPE__WS1__getStandardServiceListResponse +#define SOAP_TYPE__WS1__getStandardServiceListResponse (29) +#endif + +/* _WS1__getStandardServiceList has binding name '_WS1__getStandardServiceList' for type '' */ +#ifndef SOAP_TYPE__WS1__getStandardServiceList +#define SOAP_TYPE__WS1__getStandardServiceList (28) +#endif + +/* _WS1__fpInvokeResponse has binding name '_WS1__fpInvokeResponse' for type '' */ +#ifndef SOAP_TYPE__WS1__fpInvokeResponse +#define SOAP_TYPE__WS1__fpInvokeResponse (27) +#endif + +/* _WS1__fpInvoke has binding name '_WS1__fpInvoke' for type '' */ +#ifndef SOAP_TYPE__WS1__fpInvoke +#define SOAP_TYPE__WS1__fpInvoke (26) +#endif + +/* _WS1__getSrvResponse has binding name '_WS1__getSrvResponse' for type '' */ +#ifndef SOAP_TYPE__WS1__getSrvResponse +#define SOAP_TYPE__WS1__getSrvResponse (25) +#endif + +/* _WS1__getSrv has binding name '_WS1__getSrv' for type '' */ +#ifndef SOAP_TYPE__WS1__getSrv +#define SOAP_TYPE__WS1__getSrv (24) +#endif + +/* _WS1__getProdResponse has binding name '_WS1__getProdResponse' for type '' */ +#ifndef SOAP_TYPE__WS1__getProdResponse +#define SOAP_TYPE__WS1__getProdResponse (23) +#endif + +/* _WS1__getProd has binding name '_WS1__getProd' for type '' */ +#ifndef SOAP_TYPE__WS1__getProd +#define SOAP_TYPE__WS1__getProd (22) +#endif + +/* _WS1__invokeMdmResponse has binding name '_WS1__invokeMdmResponse' for type '' */ +#ifndef SOAP_TYPE__WS1__invokeMdmResponse +#define SOAP_TYPE__WS1__invokeMdmResponse (21) +#endif + +/* _WS1__invokeMdm has binding name '_WS1__invokeMdm' for type '' */ +#ifndef SOAP_TYPE__WS1__invokeMdm +#define SOAP_TYPE__WS1__invokeMdm (20) +#endif + +/* _WS1__invokeUnionResponse has binding name '_WS1__invokeUnionResponse' for type '' */ +#ifndef SOAP_TYPE__WS1__invokeUnionResponse +#define SOAP_TYPE__WS1__invokeUnionResponse (19) +#endif + +/* _WS1__invokeUnion has binding name '_WS1__invokeUnion' for type '' */ +#ifndef SOAP_TYPE__WS1__invokeUnion +#define SOAP_TYPE__WS1__invokeUnion (18) +#endif + +/* _WS1__regProdAPResponse has binding name '_WS1__regProdAPResponse' for type '' */ +#ifndef SOAP_TYPE__WS1__regProdAPResponse +#define SOAP_TYPE__WS1__regProdAPResponse (17) +#endif + +/* _WS1__regProdAP has binding name '_WS1__regProdAP' for type '' */ +#ifndef SOAP_TYPE__WS1__regProdAP +#define SOAP_TYPE__WS1__regProdAP (16) +#endif + +/* _WS1__getProdListResponse has binding name '_WS1__getProdListResponse' for type '' */ +#ifndef SOAP_TYPE__WS1__getProdListResponse +#define SOAP_TYPE__WS1__getProdListResponse (15) +#endif + +/* _WS1__getProdList has binding name '_WS1__getProdList' for type '' */ +#ifndef SOAP_TYPE__WS1__getProdList +#define SOAP_TYPE__WS1__getProdList (14) +#endif + +/* _WS1__getParamListResponse has binding name '_WS1__getParamListResponse' for type '' */ +#ifndef SOAP_TYPE__WS1__getParamListResponse +#define SOAP_TYPE__WS1__getParamListResponse (13) +#endif + +/* _WS1__getParamList has binding name '_WS1__getParamList' for type '' */ +#ifndef SOAP_TYPE__WS1__getParamList +#define SOAP_TYPE__WS1__getParamList (12) +#endif + +/* _WS1__getEtlJobListResponse has binding name '_WS1__getEtlJobListResponse' for type '' */ +#ifndef SOAP_TYPE__WS1__getEtlJobListResponse +#define SOAP_TYPE__WS1__getEtlJobListResponse (11) +#endif + +/* _WS1__getEtlJobList has binding name '_WS1__getEtlJobList' for type '' */ +#ifndef SOAP_TYPE__WS1__getEtlJobList +#define SOAP_TYPE__WS1__getEtlJobList (10) +#endif + +/* _WS1__invokeEtlResponse has binding name '_WS1__invokeEtlResponse' for type '' */ +#ifndef SOAP_TYPE__WS1__invokeEtlResponse +#define SOAP_TYPE__WS1__invokeEtlResponse (9) +#endif + +/* _WS1__invokeEtl has binding name '_WS1__invokeEtl' for type '' */ +#ifndef SOAP_TYPE__WS1__invokeEtl +#define SOAP_TYPE__WS1__invokeEtl (8) +#endif + +/* struct SOAP_ENV__Fault has binding name 'SOAP_ENV__Fault' for type '' */ +#ifndef SOAP_TYPE_SOAP_ENV__Fault +#define SOAP_TYPE_SOAP_ENV__Fault (113) +#endif + +/* struct SOAP_ENV__Reason has binding name 'SOAP_ENV__Reason' for type '' */ +#ifndef SOAP_TYPE_SOAP_ENV__Reason +#define SOAP_TYPE_SOAP_ENV__Reason (112) +#endif + +/* struct SOAP_ENV__Detail has binding name 'SOAP_ENV__Detail' for type '' */ +#ifndef SOAP_TYPE_SOAP_ENV__Detail +#define SOAP_TYPE_SOAP_ENV__Detail (109) +#endif + +/* struct SOAP_ENV__Code has binding name 'SOAP_ENV__Code' for type '' */ +#ifndef SOAP_TYPE_SOAP_ENV__Code +#define SOAP_TYPE_SOAP_ENV__Code (107) +#endif + +/* struct SOAP_ENV__Header has binding name 'SOAP_ENV__Header' for type '' */ +#ifndef SOAP_TYPE_SOAP_ENV__Header +#define SOAP_TYPE_SOAP_ENV__Header (106) +#endif + +/* struct SOAP_ENV__Reason * has binding name 'PointerToSOAP_ENV__Reason' for type '' */ +#ifndef SOAP_TYPE_PointerToSOAP_ENV__Reason +#define SOAP_TYPE_PointerToSOAP_ENV__Reason (115) +#endif + +/* struct SOAP_ENV__Detail * has binding name 'PointerToSOAP_ENV__Detail' for type '' */ +#ifndef SOAP_TYPE_PointerToSOAP_ENV__Detail +#define SOAP_TYPE_PointerToSOAP_ENV__Detail (114) +#endif + +/* struct SOAP_ENV__Code * has binding name 'PointerToSOAP_ENV__Code' for type '' */ +#ifndef SOAP_TYPE_PointerToSOAP_ENV__Code +#define SOAP_TYPE_PointerToSOAP_ENV__Code (108) +#endif + +/* _WS1__escrowResendSrv * has binding name 'PointerTo_WS1__escrowResendSrv' for type '' */ +#ifndef SOAP_TYPE_PointerTo_WS1__escrowResendSrv +#define SOAP_TYPE_PointerTo_WS1__escrowResendSrv (102) +#endif + +/* _WS1__invokeSrv * has binding name 'PointerTo_WS1__invokeSrv' for type '' */ +#ifndef SOAP_TYPE_PointerTo_WS1__invokeSrv +#define SOAP_TYPE_PointerTo_WS1__invokeSrv (98) +#endif + +/* _WS1__regEAI * has binding name 'PointerTo_WS1__regEAI' for type '' */ +#ifndef SOAP_TYPE_PointerTo_WS1__regEAI +#define SOAP_TYPE_PointerTo_WS1__regEAI (94) +#endif + +/* _WS1__regSrv * has binding name 'PointerTo_WS1__regSrv' for type '' */ +#ifndef SOAP_TYPE_PointerTo_WS1__regSrv +#define SOAP_TYPE_PointerTo_WS1__regSrv (90) +#endif + +/* _WS1__getStandardDataNameList * has binding name 'PointerTo_WS1__getStandardDataNameList' for type '' */ +#ifndef SOAP_TYPE_PointerTo_WS1__getStandardDataNameList +#define SOAP_TYPE_PointerTo_WS1__getStandardDataNameList (86) +#endif + +/* _WS1__getStandardServiceList * has binding name 'PointerTo_WS1__getStandardServiceList' for type '' */ +#ifndef SOAP_TYPE_PointerTo_WS1__getStandardServiceList +#define SOAP_TYPE_PointerTo_WS1__getStandardServiceList (82) +#endif + +/* _WS1__fpInvoke * has binding name 'PointerTo_WS1__fpInvoke' for type '' */ +#ifndef SOAP_TYPE_PointerTo_WS1__fpInvoke +#define SOAP_TYPE_PointerTo_WS1__fpInvoke (78) +#endif + +/* _WS1__getSrv * has binding name 'PointerTo_WS1__getSrv' for type '' */ +#ifndef SOAP_TYPE_PointerTo_WS1__getSrv +#define SOAP_TYPE_PointerTo_WS1__getSrv (74) +#endif + +/* _WS1__getProd * has binding name 'PointerTo_WS1__getProd' for type '' */ +#ifndef SOAP_TYPE_PointerTo_WS1__getProd +#define SOAP_TYPE_PointerTo_WS1__getProd (70) +#endif + +/* _WS1__invokeMdm * has binding name 'PointerTo_WS1__invokeMdm' for type '' */ +#ifndef SOAP_TYPE_PointerTo_WS1__invokeMdm +#define SOAP_TYPE_PointerTo_WS1__invokeMdm (66) +#endif + +/* _WS1__invokeUnion * has binding name 'PointerTo_WS1__invokeUnion' for type '' */ +#ifndef SOAP_TYPE_PointerTo_WS1__invokeUnion +#define SOAP_TYPE_PointerTo_WS1__invokeUnion (62) +#endif + +/* _WS1__regProdAP * has binding name 'PointerTo_WS1__regProdAP' for type '' */ +#ifndef SOAP_TYPE_PointerTo_WS1__regProdAP +#define SOAP_TYPE_PointerTo_WS1__regProdAP (58) +#endif + +/* _WS1__getProdList * has binding name 'PointerTo_WS1__getProdList' for type '' */ +#ifndef SOAP_TYPE_PointerTo_WS1__getProdList +#define SOAP_TYPE_PointerTo_WS1__getProdList (54) +#endif + +/* _WS1__getParamList * has binding name 'PointerTo_WS1__getParamList' for type '' */ +#ifndef SOAP_TYPE_PointerTo_WS1__getParamList +#define SOAP_TYPE_PointerTo_WS1__getParamList (50) +#endif + +/* _WS1__getEtlJobList * has binding name 'PointerTo_WS1__getEtlJobList' for type '' */ +#ifndef SOAP_TYPE_PointerTo_WS1__getEtlJobList +#define SOAP_TYPE_PointerTo_WS1__getEtlJobList (46) +#endif + +/* _WS1__invokeEtl * has binding name 'PointerTo_WS1__invokeEtl' for type '' */ +#ifndef SOAP_TYPE_PointerTo_WS1__invokeEtl +#define SOAP_TYPE_PointerTo_WS1__invokeEtl (42) +#endif + +/* _QName has binding name '_QName' for type 'xsd:QName' */ +#ifndef SOAP_TYPE__QName +#define SOAP_TYPE__QName (6) +#endif + +/* _XML has binding name '_XML' for type '' */ +#ifndef SOAP_TYPE__XML +#define SOAP_TYPE__XML (5) +#endif + +/* char * has binding name 'string' for type 'xsd:string' */ +#ifndef SOAP_TYPE_string +#define SOAP_TYPE_string (4) +#endif + +/******************************************************************************\ + * * + * Externals * + * * +\******************************************************************************/ + + +/******************************************************************************\ + * * + * Client-Side Call Stub Functions * + * * +\******************************************************************************/ + + + /** Web service synchronous operation 'soap_call___WS1__invokeEtl' to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__invokeEtl(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__invokeEtl *WS1__invokeEtl, _WS1__invokeEtlResponse &WS1__invokeEtlResponse); + /** Web service asynchronous operation 'soap_send___WS1__invokeEtl' to send a request message to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__invokeEtl(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__invokeEtl *WS1__invokeEtl); + /** Web service asynchronous operation 'soap_recv___WS1__invokeEtl' to receive a response message from the connected endpoint, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__invokeEtl(struct soap *soap, _WS1__invokeEtlResponse &WS1__invokeEtlResponse); + + /** Web service synchronous operation 'soap_call___WS1__getEtlJobList' to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__getEtlJobList(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getEtlJobList *WS1__getEtlJobList, _WS1__getEtlJobListResponse &WS1__getEtlJobListResponse); + /** Web service asynchronous operation 'soap_send___WS1__getEtlJobList' to send a request message to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__getEtlJobList(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getEtlJobList *WS1__getEtlJobList); + /** Web service asynchronous operation 'soap_recv___WS1__getEtlJobList' to receive a response message from the connected endpoint, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__getEtlJobList(struct soap *soap, _WS1__getEtlJobListResponse &WS1__getEtlJobListResponse); + + /** Web service synchronous operation 'soap_call___WS1__getParamList' to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__getParamList(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getParamList *WS1__getParamList, _WS1__getParamListResponse &WS1__getParamListResponse); + /** Web service asynchronous operation 'soap_send___WS1__getParamList' to send a request message to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__getParamList(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getParamList *WS1__getParamList); + /** Web service asynchronous operation 'soap_recv___WS1__getParamList' to receive a response message from the connected endpoint, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__getParamList(struct soap *soap, _WS1__getParamListResponse &WS1__getParamListResponse); + + /** Web service synchronous operation 'soap_call___WS1__getProdList' to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__getProdList(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getProdList *WS1__getProdList, _WS1__getProdListResponse &WS1__getProdListResponse); + /** Web service asynchronous operation 'soap_send___WS1__getProdList' to send a request message to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__getProdList(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getProdList *WS1__getProdList); + /** Web service asynchronous operation 'soap_recv___WS1__getProdList' to receive a response message from the connected endpoint, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__getProdList(struct soap *soap, _WS1__getProdListResponse &WS1__getProdListResponse); + + /** Web service synchronous operation 'soap_call___WS1__regProdAP' to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__regProdAP(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__regProdAP *WS1__regProdAP, _WS1__regProdAPResponse &WS1__regProdAPResponse); + /** Web service asynchronous operation 'soap_send___WS1__regProdAP' to send a request message to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__regProdAP(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__regProdAP *WS1__regProdAP); + /** Web service asynchronous operation 'soap_recv___WS1__regProdAP' to receive a response message from the connected endpoint, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__regProdAP(struct soap *soap, _WS1__regProdAPResponse &WS1__regProdAPResponse); + + /** Web service synchronous operation 'soap_call___WS1__invokeUnion' to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__invokeUnion(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__invokeUnion *WS1__invokeUnion, _WS1__invokeUnionResponse &WS1__invokeUnionResponse); + /** Web service asynchronous operation 'soap_send___WS1__invokeUnion' to send a request message to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__invokeUnion(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__invokeUnion *WS1__invokeUnion); + /** Web service asynchronous operation 'soap_recv___WS1__invokeUnion' to receive a response message from the connected endpoint, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__invokeUnion(struct soap *soap, _WS1__invokeUnionResponse &WS1__invokeUnionResponse); + + /** Web service synchronous operation 'soap_call___WS1__invokeMdm' to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__invokeMdm(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__invokeMdm *WS1__invokeMdm, _WS1__invokeMdmResponse &WS1__invokeMdmResponse); + /** Web service asynchronous operation 'soap_send___WS1__invokeMdm' to send a request message to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__invokeMdm(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__invokeMdm *WS1__invokeMdm); + /** Web service asynchronous operation 'soap_recv___WS1__invokeMdm' to receive a response message from the connected endpoint, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__invokeMdm(struct soap *soap, _WS1__invokeMdmResponse &WS1__invokeMdmResponse); + + /** Web service synchronous operation 'soap_call___WS1__getProd' to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__getProd(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getProd *WS1__getProd, _WS1__getProdResponse &WS1__getProdResponse); + /** Web service asynchronous operation 'soap_send___WS1__getProd' to send a request message to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__getProd(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getProd *WS1__getProd); + /** Web service asynchronous operation 'soap_recv___WS1__getProd' to receive a response message from the connected endpoint, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__getProd(struct soap *soap, _WS1__getProdResponse &WS1__getProdResponse); + + /** Web service synchronous operation 'soap_call___WS1__getSrv' to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__getSrv(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getSrv *WS1__getSrv, _WS1__getSrvResponse &WS1__getSrvResponse); + /** Web service asynchronous operation 'soap_send___WS1__getSrv' to send a request message to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__getSrv(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getSrv *WS1__getSrv); + /** Web service asynchronous operation 'soap_recv___WS1__getSrv' to receive a response message from the connected endpoint, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__getSrv(struct soap *soap, _WS1__getSrvResponse &WS1__getSrvResponse); + + /** Web service synchronous operation 'soap_call___WS1__fpInvoke' to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__fpInvoke(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__fpInvoke *WS1__fpInvoke, _WS1__fpInvokeResponse &WS1__fpInvokeResponse); + /** Web service asynchronous operation 'soap_send___WS1__fpInvoke' to send a request message to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__fpInvoke(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__fpInvoke *WS1__fpInvoke); + /** Web service asynchronous operation 'soap_recv___WS1__fpInvoke' to receive a response message from the connected endpoint, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__fpInvoke(struct soap *soap, _WS1__fpInvokeResponse &WS1__fpInvokeResponse); + + /** Web service synchronous operation 'soap_call___WS1__getStandardServiceList' to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__getStandardServiceList(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getStandardServiceList *WS1__getStandardServiceList, _WS1__getStandardServiceListResponse &WS1__getStandardServiceListResponse); + /** Web service asynchronous operation 'soap_send___WS1__getStandardServiceList' to send a request message to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__getStandardServiceList(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getStandardServiceList *WS1__getStandardServiceList); + /** Web service asynchronous operation 'soap_recv___WS1__getStandardServiceList' to receive a response message from the connected endpoint, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__getStandardServiceList(struct soap *soap, _WS1__getStandardServiceListResponse &WS1__getStandardServiceListResponse); + + /** Web service synchronous operation 'soap_call___WS1__getStandardDataNameList' to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__getStandardDataNameList(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getStandardDataNameList *WS1__getStandardDataNameList, _WS1__getStandardDataNameListResponse &WS1__getStandardDataNameListResponse); + /** Web service asynchronous operation 'soap_send___WS1__getStandardDataNameList' to send a request message to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__getStandardDataNameList(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__getStandardDataNameList *WS1__getStandardDataNameList); + /** Web service asynchronous operation 'soap_recv___WS1__getStandardDataNameList' to receive a response message from the connected endpoint, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__getStandardDataNameList(struct soap *soap, _WS1__getStandardDataNameListResponse &WS1__getStandardDataNameListResponse); + + /** Web service synchronous operation 'soap_call___WS1__regSrv' to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__regSrv(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__regSrv *WS1__regSrv, _WS1__regSrvResponse &WS1__regSrvResponse); + /** Web service asynchronous operation 'soap_send___WS1__regSrv' to send a request message to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__regSrv(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__regSrv *WS1__regSrv); + /** Web service asynchronous operation 'soap_recv___WS1__regSrv' to receive a response message from the connected endpoint, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__regSrv(struct soap *soap, _WS1__regSrvResponse &WS1__regSrvResponse); + + /** Web service synchronous operation 'soap_call___WS1__regEAI' to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__regEAI(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__regEAI *WS1__regEAI, _WS1__regEAIResponse &WS1__regEAIResponse); + /** Web service asynchronous operation 'soap_send___WS1__regEAI' to send a request message to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__regEAI(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__regEAI *WS1__regEAI); + /** Web service asynchronous operation 'soap_recv___WS1__regEAI' to receive a response message from the connected endpoint, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__regEAI(struct soap *soap, _WS1__regEAIResponse &WS1__regEAIResponse); + + /** Web service synchronous operation 'soap_call___WS1__invokeSrv' to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__invokeSrv(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__invokeSrv *WS1__invokeSrv, _WS1__invokeSrvResponse &WS1__invokeSrvResponse); + /** Web service asynchronous operation 'soap_send___WS1__invokeSrv' to send a request message to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__invokeSrv(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__invokeSrv *WS1__invokeSrv); + /** Web service asynchronous operation 'soap_recv___WS1__invokeSrv' to receive a response message from the connected endpoint, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__invokeSrv(struct soap *soap, _WS1__invokeSrvResponse &WS1__invokeSrvResponse); + + /** Web service synchronous operation 'soap_call___WS1__escrowResendSrv' to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_call___WS1__escrowResendSrv(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__escrowResendSrv *WS1__escrowResendSrv, _WS1__escrowResendSrvResponse &WS1__escrowResendSrvResponse); + /** Web service asynchronous operation 'soap_send___WS1__escrowResendSrv' to send a request message to the specified endpoint and SOAP Action header, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_send___WS1__escrowResendSrv(struct soap *soap, const char *soap_endpoint, const char *soap_action, _WS1__escrowResendSrv *WS1__escrowResendSrv); + /** Web service asynchronous operation 'soap_recv___WS1__escrowResendSrv' to receive a response message from the connected endpoint, returns SOAP_OK or error code */ + SOAP_FMAC5 int SOAP_FMAC6 soap_recv___WS1__escrowResendSrv(struct soap *soap, _WS1__escrowResendSrvResponse &WS1__escrowResendSrvResponse); + +#endif + +/* End of crossStub.h */ diff --git a/connor_erp_mes/kutil.cpp b/connor_erp_mes/kutil.cpp new file mode 100644 index 0000000..4ab77ba --- /dev/null +++ b/connor_erp_mes/kutil.cpp @@ -0,0 +1,843 @@ +#pragma warning (disable: 4996) +#pragma warning (disable: 4819) + +#include "kutil.h" +#include +FILE* logFile = NULL; + +#define MAX_PATH_LENGTH 200 +#define MAX_PRINTLINE_LENGTH 8000 + +using namespace std::chrono; + +void initUserDir(char* userId) { + char logFileDir[MAX_PATH_LENGTH]; + memset(logFileDir, 0, sizeof(logFileDir)); + sprintf(logFileDir, "%s", getenv("TEMP")); + strcat(logFileDir, "\\tc_"); + strcat(logFileDir, userId); + if (chdir(logFileDir) != ITK_ok) { + printf(">> Create Path: %s\n", logFileDir); + mkdir(logFileDir); + } +} + +int WriteToFile(FILE* file, const char* text) +{ + if (!file) { + return ITK_ok; + } + va_list arg; + //char tmp[MAX_PRINTLINE_LENGTH]; + char* time_str = getTime(); + //get the message + //memset(tmp, 0, sizeof(tmp)); + //va_start(arg, format); + //vsprintf(tmp, format, arg); + //va_end(arg); + //print message to log file + //WriteLog(debug, "дݣ%s", tmp); + fprintf(file, "[%s] - %s\r\n",time_str, text); + fflush(file); + free(time_str); + return ITK_ok; +} + +int getCurrentMilliSeconds() { + unsigned __int64 now = std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count(); + std::cout << now << std::endl; + return now % 1000; +} + +char* getTime() { + time_t now; + struct tm* p; + char date_string[MAX_PATH_LENGTH]; + time(&now); + //logFile = NULL; + //current_time(&status_now); + p = localtime(&now); + memset(date_string, 0, sizeof(date_string)); + sprintf(date_string, "%4d-%02d-%02d %02d:%02d:%02d", 1900 + p->tm_year, p->tm_mon + 1, p->tm_mday, p->tm_hour, p->tm_min, p->tm_sec); + char* dateC = (char*)malloc(sizeof(char) * (strlen(date_string)+1)); + strcpy(dateC, date_string); + return dateC; +} + +int CreateUserFile(logical debug, const char* FunctionName, char* userId, char** fullname, FILE** file) +{ + int ifail = ITK_ok; + //date_t status_now; + //char* date_string = NULL; + char date_string[MAX_PATH_LENGTH]; + char logFileDir[MAX_PATH_LENGTH]; + char logFileName[MAX_PATH_LENGTH]; + //char* session_uid = NULL; + //tag_t session_tag = NULLTAG; + + time_t now; + struct tm* p; + + time(&now); + + //logFile = NULL; + //current_time(&status_now); + p = localtime(&now); + + memset(date_string, 0, sizeof(date_string)); + sprintf(date_string, "%4d%02d%02d", 1900 + p->tm_year, p->tm_mon + 1, p->tm_mday); + //sprintf(date_string, "%4d%02d%02d", 1900 + p->tm_year, p->tm_mon + 1, p->tm_mday); + //if( DATE_date_to_string( status_now, "%Y%m%d%H%M%S", &date_string) != ITK_ok ) + //ifail = ITK_date_to_string (status_now, &date_string ); + //if (ifail) + //{ + // printf("!*ERROR*!: Failed to get current date time\n"); + // goto CLEANUP; + //} + + memset(logFileDir, 0, sizeof(logFileDir)); + memset(logFileName, 0, sizeof(logFileName)); + //get log dir + sprintf(logFileDir, "%s", getenv("TEMP")); + strcat(logFileDir, "\\tc_"); + strcat(logFileDir, userId); + //printf("\n log file dir: %s\n", logFileDir); + //try to change dir to TC_USER_LOG_DIR + if (chdir(logFileDir) != ITK_ok) + { + WriteLog(debug, "ûļʧܣ%s", logFileDir); + //printf("!*ERROR*!: Failed to change dir to TC_USER_LOG_DIR\n"); + return -1; + } + + //get session_uid to make sure the log file name unique + //POM_ask_session(&session_tag); + //ITK__convert_tag_to_uid(session_tag, &session_uid); + //get logFileName + sprintf(logFileName, "%s_%s.txt", FunctionName, date_string); + //printf("log file name: %s\n", logFileName); + + *fullname = (char*)MEM_alloc(sizeof(char) * 512); + sprintf(*fullname, "%s\\%s", logFileDir, logFileName); + + //for(i = 0; _access((char *)logFileName, 4) == 0; i++) + /*{ + memset(logFileName, 0, sizeof(logFileName)); + sprintf(logFileName, "%s_%s_%s_%d.log", FunctionName, session_uid, date_string, i); + } + printf("final log file name: %s\n", logFileName);*/ + + //create log file + *file = fopen(logFileName, "a"); + return ITK_ok; + //CLEANUP:; + //DOFREE(date_string); + /*if(session_uid!=NULL){ + MEM_free(session_uid); + session_uid=NULL; + }*/ +} + + +void WriteLog(logical debug, const char* format, ...) +{ + va_list arg; + char tmp[MAX_PRINTLINE_LENGTH]; + memset(tmp, 0, sizeof(tmp)); + va_start(arg, format); + vsprintf(tmp, format, arg); + va_end(arg); + printf("%s\n", tmp); + TC_write_syslog("%s\n", tmp); +} + +void WriteLog2(logical debug, const char* format, ...) +{ + va_list arg; + char tmp[MAX_PRINTLINE_LENGTH]; + char date_string[MAX_PATH_LENGTH]; + time_t now; + struct tm* p; + + //get the message + memset(tmp, 0, sizeof(tmp)); + va_start(arg, format); + vsprintf(tmp, format, arg); + va_end(arg); + //----------print to command window for trace--------// + //printf("%s\n", tmp); + printf("%s\n", tmp); + //print message to log file + if (!debug) { + return; + } + if (logFile) + { + time(&now); + //current_time(&status_now); + p = localtime(&now); + memset(date_string, 0, sizeof(date_string)); + sprintf(date_string, "%02d:%02d:%02d", p->tm_hour, p->tm_min, p->tm_sec); + fprintf(logFile, "[%s] %s\n", date_string, tmp); + fflush(logFile); + } + else + { + printf("*!Error!*: Log File Not Exist\n"); + } +} + +void CloseLog(void) +{ + if (logFile) + { + fclose(logFile); + logFile = NULL; + } +} + +void CreateLogFile(char* FunctionName, char* userId, char** fullname) +{ + int ifail = ITK_ok; + //date_t status_now; + //char* date_string = NULL; + char date_string[MAX_PATH_LENGTH]; + char logFileDir[MAX_PATH_LENGTH]; + char logFileName[MAX_PATH_LENGTH]; + //char* session_uid = NULL; + //tag_t session_tag = NULLTAG; + + time_t now; + struct tm* p; + + time(&now); + + logFile = NULL; + //current_time(&status_now); + p = localtime(&now); + + memset(date_string, 0, sizeof(date_string)); + //sprintf(date_string,"%4d%02d%02d%02d%02d%02d",1900+p->tm_year,p->tm_mon+1 ,p->tm_mday ,p->tm_hour,p->tm_min ,p->tm_sec ); + sprintf(date_string, "%4d%02d%02d", 1900 + p->tm_year, p->tm_mon + 1, p->tm_mday); + //if( DATE_date_to_string( status_now, "%Y%m%d%H%M%S", &date_string) != ITK_ok ) + //ifail = ITK_date_to_string (status_now, &date_string ); + //if (ifail) + //{ + // printf("!*ERROR*!: Failed to get current date time\n"); + // goto CLEANUP; + //} + + memset(logFileDir, 0, sizeof(logFileDir)); + memset(logFileName, 0, sizeof(logFileName)); + //get log dir + sprintf(logFileDir, "%s", getenv("TEMP")); + strcat(logFileDir, "\\tc_"); + strcat(logFileDir, userId); + //printf("\n log file dir: %s\n", logFileDir); + //try to change dir to TC_USER_LOG_DIR + if (chdir(logFileDir) != ITK_ok) + { + //not set TC_USER_LOG_DIR + //log in to default TC_LOG + memset(logFileDir, 0, sizeof(logFileDir)); + sprintf(logFileDir, "%s", getenv("TC_LOG")); + printf("\n TC_USER_LOG_DIR invalide, log file dir: %s\n", logFileDir); + if (chdir(logFileDir) != ITK_ok) + { + //still can not change to log dir + printf("!*ERROR*!: Failed to change dir to TC_USER_LOG_DIR\n"); + goto CLEANUP; + } + } + + //get session_uid to make sure the log file name unique + //POM_ask_session(&session_tag); + //ITK__convert_tag_to_uid(session_tag, &session_uid); + //get logFileName + sprintf(logFileName, "%s_%s_%s.log", FunctionName, userId, date_string); + //printf("log file name: %s\n", logFileName); + + *fullname = (char*)MEM_alloc(sizeof(char) * 512); + sprintf(*fullname, "%s\\%s", logFileDir, logFileName); + + //for(i = 0; _access((char *)logFileName, 4) == 0; i++) + /*{ + memset(logFileName, 0, sizeof(logFileName)); + sprintf(logFileName, "%s_%s_%s_%d.log", FunctionName, session_uid, date_string, i); + } + printf("final log file name: %s\n", logFileName);*/ + + //create log file + logFile = fopen(logFileName, "a"); + +CLEANUP:; + //DOFREE(date_string); + /*if(session_uid!=NULL){ + MEM_free(session_uid); + session_uid=NULL; + }*/ +} + + + +void set_bypass(logical bypass) +{ + //AM__set_application_bypass(bypass); + POM_AM__set_application_bypass(bypass); +} + +bool isClass(tag_t class_id, char* className) { + tag_t* pclass_ids = NULL; + char* class_name = NULL; + int pclass_count = 0, ifail = ITK_ok; + ITKCALL(POM_name_of_class(class_id, &class_name)); + printf("class name = %s\n", class_name); + bool isType = false; + if (strcmp(class_name, className) == 0) { + isType = true; + } + DOFREE(class_name); + if (isType) { + return true; + } + ITKCALL(ifail = POM_superclasses_of_class(class_id, &pclass_count, &pclass_ids)); + for (int i = 0; i < pclass_count; i++) { + isType = isClass(pclass_ids[i], className); + if (isType) { + return true; + } + } + return false; +} + +bool isType(tag_t item, char* type) { + tag_t class_id = NULLTAG, * pclass_ids = NULL; + char* class_name = NULL; + int pclass_count = 0, ifail = ITK_ok; + + ITKCALL(POM_class_of_instance(item, &class_id)); + return isClass(class_id, type); +} + +void deleteFile(bool debug, char* path) { + //?3y???t + if (remove(path) == 0) { + WriteLog(debug, "Delete File: %s", path); + } + else { + WriteLog(debug, "Delete File failed: %s", path); + } +} + + +int readError(bool debug, char* errFilePath, int errCode) { + fstream _file; + _file.open(errFilePath, ios::in); + if (_file) { + WriteLog(debug, "Find Error File: %s", errFilePath); + ifstream fin(errFilePath); + string s; + while (getline(fin, s)) + { + WriteLog(debug, s.c_str()); + EMH_store_error_s1(EMH_severity_error, errCode, s.c_str()); + } + _file.close(); + return errCode; + } + return ITK_ok; +} + +//??y?Y? +int import_dataset_file(tag_t dataset, const char* ref_name, char* ext, char* fullfilename, char* original_name) +{ + int ifail = ITK_ok; + tag_t new_file_tag = NULLTAG; + IMF_file_t file_descriptor = NULL; + AOM_refresh(dataset, FALSE); + char* new_file_name = NULL; + char new_ds_name[WSO_name_size_c + 1] = ""; + char* filename = NULL; + new_file_name = USER_new_file_name(new_ds_name, ref_name, ext, 0); + filename = strrchr(fullfilename, '\\') + 1; + if (filename == NULL) + return ITK_ok; + set_bypass(true); + ITKCALL(ifail = IMF_import_file(fullfilename, new_file_name, SS_TEXT, &new_file_tag, &file_descriptor)); + if (ifail != ITK_ok) { + ITKCALL(ifail = IMF_import_file(fullfilename, new_file_name, SS_BINARY, &new_file_tag, &file_descriptor)); + } + ITKCALL(ifail = IMF_set_original_file_name2(new_file_tag, original_name)); + + ITKCALL(ifail = IMF_close_file(file_descriptor)); + ITKCALL(ifail = AOM_save(new_file_tag)); + AOM_unlock(new_file_tag); + ITKCALL(ifail = AOM_refresh(new_file_tag, FALSE)); + //?????y? + set_bypass(true); + ITKCALL(AOM_lock(dataset)); + ITKCALL(ifail = AE_remove_dataset_named_ref2(dataset, ref_name)); + ITKCALL(ifail = AOM_save(dataset)); + set_bypass(true); + ITKCALL(ifail = AE_add_dataset_named_ref2(dataset, ref_name, AE_PART_OF, new_file_tag)); + AOM_save(dataset); + AOM_unlock(dataset); + set_bypass(false); + //ITKCALL( AOM_refresh( dataset, FALSE ) ); + return ifail; +} + +//??y?Y? +int import_dataset_file_binary(tag_t dataset, const char* ref_name, char* ext, char* fullfilename, char* original_name) +{ + int ifail = ITK_ok; + tag_t new_file_tag = NULLTAG; + IMF_file_t file_descriptor = NULL; + AOM_refresh(dataset, FALSE); + char* new_file_name = NULL; + char new_ds_name[WSO_name_size_c + 1] = ""; + char* filename = NULL; + new_file_name = USER_new_file_name(new_ds_name, ref_name, ext, 0); + filename = strrchr(fullfilename, '\\') + 1; + if (filename == NULL) + return ITK_ok; + set_bypass(true); + ITKCALL(ifail = IMF_import_file(fullfilename, new_file_name, SS_BINARY, &new_file_tag, &file_descriptor)); + ITKCALL(ifail = IMF_set_original_file_name2(new_file_tag, original_name)); + + ITKCALL(ifail = IMF_close_file(file_descriptor)); + ITKCALL(ifail = AOM_save(new_file_tag)); + AOM_unlock(new_file_tag); + ITKCALL(ifail = AOM_refresh(new_file_tag, FALSE)); + //?????y? + set_bypass(true); + ITKCALL(AOM_lock(dataset)); + ITKCALL(ifail = AE_remove_dataset_named_ref2(dataset, ref_name)); + ITKCALL(ifail = AOM_save(dataset)); + set_bypass(true); + ITKCALL(ifail = AE_add_dataset_named_ref2(dataset, ref_name, AE_PART_OF, new_file_tag)); + AOM_save(dataset); + AOM_unlock(dataset); + set_bypass(false); + //ITKCALL( AOM_refresh( dataset, FALSE ) ); + return ifail; +} + + +void Split(string strArg, char spliter, vector& ans) +{ + ans.clear(); + size_t index0 = 0; + string one_arg; + if (strArg.find_first_not_of(' ') == string::npos) + strArg = ""; + while (strArg.size() > 0) + { + index0 = strArg.find_first_of(spliter); + if (index0 != string::npos) + { + one_arg = strArg.substr(0, index0); + strArg = strArg.substr(index0 + 1); + ans.push_back(one_arg); + } + else + { + ans.push_back(strArg); + break; + } + } +} + +void Split(string strArg, string spliter, vector& ans) +{ + ans.clear(); + size_t index0 = 0; + string one_arg; + if (strArg.find_first_not_of(' ') == string::npos) + strArg = ""; + int len = spliter.size(); + while (strArg.size() > 0) + { + index0 = strArg.find(spliter); + if (index0 != string::npos) + { + one_arg = strArg.substr(0, index0); + strArg = strArg.substr(index0 + len); + ans.push_back(one_arg); + if (strArg.size() == 0) { + ans.push_back(strArg); + } + } + else + { + ans.push_back(strArg); + break; + } + } +} + +bool inArray(vector types, string type) { + int len = types.size(); + for (int i = 0; i < len; i++) { + if (type == types[i]) { + return true; + } + } + return false; +} + +int getIndexInArray(vector types, string type) { + int len = types.size(); + for (int i = 0; i < len; i++) { + if (strcmp(types[i].c_str(), type.c_str()) == 0) { + return i; + } + } + return -1; +} + +bool CheckType(string config, char* type, char spliter) { + vector types; + Split(config, spliter, types); + int len = types.size(); + for (int i = 0; i < len; i++) { + if (strcmp(types[i].c_str(), type) == 0) { + return true; + } + } + return false; +} + +int GetProcessTargets(bool debug, int att_cnt, tag_t* attachments, vector& targets, char* formType, char splitter) { + char* object_name = NULL, * object_type = NULL; + int ifail = ITK_ok; + WriteLog(debug, "Get Targets of Process: %d", att_cnt); + for (int i = 0; i < att_cnt; i++) { + ITKCALL(ifail = WSOM_ask_name2(attachments[i], &object_name)); + ITKCALL(ifail = WSOM_ask_object_type2(attachments[i], &object_type)); + WriteLog(debug, "%d. Target [%s], type: %s", i + 1, object_name, object_type); + //if (strcmp(object_type, TYPE_ITEM_PZJ.c_str()) == 0) { + if (CheckType(formType, object_type, splitter)) { + targets.push_back(attachments[i]); + } + DOFREE(object_name); + DOFREE(object_type); + } + return ITK_ok; +} + +int findUser(bool debug, string userStr, tag_t* user_tag) { + int ind1 = userStr.find_first_of('('); + int ind2 = userStr.find_first_of(')'); + WriteLog(debug, "Search User: %s", userStr.c_str()); + if (ind1 != string::npos && ind2 != string::npos && ind1 < ind2) { + userStr = userStr.substr(ind1 + 1, ind2 - ind1 - 1); + WriteLog(debug, ">> User id: %s", userStr.c_str()); + } + int ifail = ITK_ok; + ITKCALL(ifail = SA_find_user2(userStr.c_str(), user_tag)); + return ifail; +} + +int GetBomLinePropString(bool debug, tag_t line, char* propName, int errCode, char** attr_val) { + int attribute_id = 0, ifail = ITK_ok; + ITKCALL(ifail = BOM_line_look_up_attribute(propName, &attribute_id)); + if (attribute_id == 0) { + WriteLog(debug, "BOMLine property not exist: %s", propName); + EMH_store_error_s2(EMH_severity_error, errCode, "BOMLine property not exist", propName); + return errCode; + } + else { + ITKCALL(ifail = BOM_line_ask_attribute_string(line, attribute_id, &*attr_val)); + return ifail; + } + return ITK_ok; +} + +int GetStringProp(tag_t obj, char* propName, char** attr_val) { + return AOM_ask_value_string(obj, propName, &*attr_val); +} + +bool isRev(char* object_type) { + if (((strstr(object_type, "Revision") != NULL) || (strstr(object_type, "revision") != NULL)) + && (strstr(object_type, "Master") == NULL) && (strstr(object_type, "master") == NULL) + && (strstr(object_type, "BOM") == NULL) && (strstr(object_type, "bom") == NULL) && (strstr(object_type, "Bom") == NULL)) { + return true; + } + return false; +} + +int GetBomView(tag_t rev_tag, const char* viewtype, tag_t* bomView, tag_t* bomBVR, bool debug) +{ + WriteLog(debug, "Get BOM View: %s", viewtype); + int ifail = ITK_ok, bvr_count = 0; + tag_t* bvr_list = NULL, bom_view = NULLTAG, view_type = NULLTAG; + *bomBVR = NULLTAG; + *bomView = NULLTAG; + ITKCALL(ITEM_rev_list_bom_view_revs(rev_tag, &bvr_count, &bvr_list)); + if (bvr_count > 0) + { + for (int i = 0; i < bvr_count; i++) + { + ITKCALL(PS_ask_bom_view_of_bvr(bvr_list[i], &bom_view)); + + ITKCALL(PS_ask_bom_view_type(bom_view, &view_type)); + //ITKCALL( PS_find_view_type(bom_view, &view_type)); + char* view_type_name = NULL; + ITKCALL(PS_ask_view_type_name(view_type, &view_type_name)); + WriteLog(debug, "Find View: %s", view_type_name); + if (tc_strcmp(view_type_name, viewtype) == 0) + { + *bomBVR = bvr_list[i]; + *bomView = bom_view; + } + DOFREE(view_type_name); + } + } + //else { + // WriteLog(debug, "??D??bvr?a???DD?"); + // tag_t bv = NULLTAG, bvr = NULLTAG, item_tag = NULLTAG; + // int bvCnt = 0; + // tag_t* bvTags = NULL; + + + // ITKCALL(ifail = ITEM_ask_item_of_rev(rev_tag, &item_tag)); + + + // tag_t tWindow = NULLTAG; + // ITKCALL(BOM_create_window(&tWindow)); + + // tag_t tTopLine = NULLTAG; + // ITKCALL(BOM_set_window_top_line(tWindow, item_tag, NULLTAG, NULLTAG, &tTopLine)); + + // //2??-BOM? + // ITKCALL(ifail=ITEM_list_bom_views(item_tag, &bvCnt, &bvTags)); + // if (bvCnt > 0) { + // WriteLog(debug, "??????BOM?o%d", bvCnt); + // bv = bvTags[0]; + // } + // ITKCALL(AOM_lock(item_tag)); + // if (bv == NULLTAG) { + // ITKCALL(ifail=PS_create_bom_view(NULLTAG, "", "", item_tag, &bv)); + // if (ifail != ITK_ok) { + // ITKCALL(AOM_unlock(item_tag)); + // return ifail; + // } + // ITKCALL(AOM_save(bv)); + // } + // ITKCALL(ifail=PS_create_bvr(bv, "", "", false, rev_tag, &bvr)); + // if (ifail != ITK_ok) { + // ITKCALL(AOM_unlock(item_tag)); + // return ifail; + // } + // ITKCALL(AOM_save(bvr)); + // ITKCALL(AOM_save(bv)); + // ITKCALL(AOM_save(item_tag)); + + // tag_t tChildLine = NULLTAG; + + // ITKCALL(BOM_save_window(tWindow)); + // ITKCALL(BOM_close_window(tWindow)); + + // ITKCALL(AOM_unlock(item_tag)); + // *bomBVR = bvr; + // *bomView = bv; + // WriteLog(debug, "bvrD??3"); + // DOFREE(bvTags); + + //} + DOFREE(bvr_list); + return ifail; +} + +bool propExist(bool debug, tag_t obj, const char* propName) { + tag_t clTag = NULLTAG, * superClass = NULL; + char* clName = NULL; + int ifail = ITK_ok, cnt = 0; + logical exists = false; + ITKCALL(ifail = POM_class_of_instance(obj, &clTag)); + if (ifail != ITK_ok) { return false; } + ITKCALL(ifail = POM_name_of_class(clTag, &clName)); + if (ifail != ITK_ok) { return false; } + WriteLog(debug, ">> [%s] Check Property: %s", clName, propName); + ITKCALL(ifail = POM_attr_exists(propName, clName, &exists)); + if (ifail != ITK_ok) { return false; } + DOFREE(clName); + if (exists) { + //WriteLog(debug,"?D???"); + return exists; + } + ITKCALL(ifail = POM_superclasses_of_class(clTag, &cnt, &superClass)); + for (int i = 0; i < cnt; i++) { + ITKCALL(ifail = POM_name_of_class(superClass[i], &clName)); + if (ifail != ITK_ok) { return false; } + WriteLog(debug, ">> [%s] Check Property: %s", clName, propName); + ITKCALL(ifail = POM_attr_exists(propName, clName, &exists)); + DOFREE(clName); + if (exists) { + //WriteLog(debug, "?D???"); + return exists; + } + } + WriteLog(debug, "Property not exist"); + return exists; +} + +string trim(const string& str) +{ + size_t first = str.find_first_not_of(' '); + if (string::npos == first) + { + return str; + } + size_t last = str.find_last_not_of(' '); + string res= str.substr(first, (last - first + 1)); + last = res.find("\n"); + if (last == res.size() - 1) { + res = res.substr(0, res.size() - 1); + } + last = res.find("\r"); + if (last == res.size() - 1) { + res = res.substr(0, res.size() - 1); + } + return res; +} + +char* U2G(const char* utf8) +{ + int len = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0); + wchar_t* wstr = new wchar_t[len + 1]; + memset(wstr, 0, len + 1); + MultiByteToWideChar(CP_UTF8, 0, utf8, -1, wstr, len); + len = WideCharToMultiByte(CP_ACP, 0, wstr, -1, NULL, 0, NULL, NULL); + char* str = new char[len + 1]; + memset(str, 0, len + 1); + WideCharToMultiByte(CP_ACP, 0, wstr, -1, str, len, NULL, NULL); + if (wstr) delete[] wstr; + return str; +} + + + +char* G2U(const char* gb2312) +{ + int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0); + wchar_t* wstr = new wchar_t[len + 1]; + memset(wstr, 0, len + 1); + MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len); + len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL); + char* str = new char[len + 1]; + memset(str, 0, len + 1); + WideCharToMultiByte(CP_UTF8, 0, wstr, -1, str, len, NULL, NULL); + if (wstr) delete[] wstr; + return str; +} + +int getPrefStrings(const char* preference, TC_preference_search_scope_t scope, vector& pref_vec) +{ + int ifail = ITK_ok, i = 0, j = 0, k = 0, num = 0; + char** values; + TC_preference_search_scope_t old_scope; + //ITKCALL(ifail = PREF_ask_search_scope(&old_scope)); + //ITKCALL(ifail = PREF_set_search_scope(scope)); + //ITKCALL(ifail = PREF_ask_char_values(preference, &num, &values)); + ITKCALL(ifail = PREF_ask_char_values_at_location(preference, scope, &num, &values)); + if (ifail != ITK_ok) { + return ifail; + } + for (i = 0; i < num; i++) + { + pref_vec.push_back(values[i]); + } + DOFREE(values); + //ITKCALL(ifail = PREF_set_search_scope(old_scope)); + return ifail; +} + +int getPrefStrings2(const char* preference, TC_preference_search_scope_t scope, char splitter, vector& pref_vec) +{ + int ifail = ITK_ok, i = 0, j = 0, k = 0, num = 0; + char** values; + TC_preference_search_scope_t old_scope; + //ITKCALL(ifail = PREF_ask_search_scope(&old_scope)); + //ITKCALL(ifail = PREF_set_search_scope(scope)); + //ITKCALL(ifail = PREF_ask_char_values(preference, &num, &values)); + ITKCALL(ifail = PREF_ask_char_values_at_location(preference, scope, &num, &values)); + if (ifail != ITK_ok) { + return ifail; + } + for (i = 0; i < num; i++) + { + vector split; + Split(values[i], splitter, split); + int size = split.size(); + for (j = 0; j < size; j++) { + pref_vec.push_back(split[j]); + } + /*for each (string val in split) { + pref_vec.push_back(val); + }*/ + } + DOFREE(values); + //ITKCALL(ifail = PREF_set_search_scope(old_scope)); + return ifail; +} + +//?3?y?Y????t +int export_dataset_file(bool debug, tag_t dataset, const char* ref_name, const char* ext, char** filename, char** original_name) +{ + int ifail = ITK_ok; + tag_t ref_object = NULLTAG, + datasettype = NULLTAG, + new_ds = NULLTAG, + tool = NULLTAG, + folder_tag = NULLTAG, + spec_dataset_rev = NULLTAG; + AE_reference_type_t reference_type; + tag_t new_file_tag = NULLTAG; + IMF_file_t file_descriptor; + char* target_ds_name = NULL; + char* new_file_name; + WSOM_ask_name2(dataset, &target_ds_name); + WriteLog(debug, "Download file from dataset %s", target_ds_name); + DOFREE(target_ds_name); + *filename = (char*)MEM_alloc(sizeof(char) * 512); + *original_name = (char*)MEM_alloc(sizeof(char) * 512); + strcpy(*filename, ""); + AE_ask_dataset_latest_rev(dataset, &spec_dataset_rev); + AE_ask_dataset_named_ref2(dataset, ref_name, &reference_type, &ref_object); + if (ref_object == NULLTAG) + { + WriteLog(debug, "File ref not exist"); + return 1; + } + if (reference_type == AE_PART_OF) + { + char* pathname2 = NULL; + IMF_ask_file_pathname2(ref_object, SS_WNT_MACHINE, &pathname2); + DOFREE(pathname2); + char* origin_file_name2 = NULL; + IMF_ask_original_file_name2(ref_object, &origin_file_name2); + strcpy(*original_name, origin_file_name2); + DOFREE(origin_file_name2); + char new_ds_name[WSO_name_size_c + 1] = ""; + char* new_file_name = USER_new_file_name(new_ds_name, ref_name, ext, 0); + char* temp_dir = getenv("TEMP"); + char temp_file[SS_MAXPATHLEN] = ""; + strcpy(temp_file, temp_dir); + //strcat(temp_file, "\\tc_"); + //strcat(temp_file, userId); + strcat(temp_file, "\\"); + strcat(temp_file, new_file_name); + WriteLog(debug, "Temp path: %s", temp_file); + if ((_access(temp_file, 0)) != -1) { + if (!remove(temp_file)) { + remove(temp_file); + } + } + IMF_export_file(ref_object, temp_file); + strcpy(*filename, temp_file); + return ITK_ok; + } + return -1; +} \ No newline at end of file diff --git a/connor_erp_mes/kutil.h b/connor_erp_mes/kutil.h new file mode 100644 index 0000000..5734b91 --- /dev/null +++ b/connor_erp_mes/kutil.h @@ -0,0 +1,93 @@ +#pragma once +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + + +#ifdef WIN32 +#include +#include +#else +#include +#endif + +#define DOFREE(obj) \ +{ \ + if(obj) \ + { \ + MEM_free(obj); \ + obj = NULL; \ + } \ +} + +extern "C" int POM_AM__set_application_bypass(logical bypass); + +using namespace std; + +char* getTime(); +int getCurrentMilliSeconds(); +string trim(const string& str); +void WriteLog(logical debug, const char* format, ...); +void set_bypass(logical bypass); +char* G2U(const char* gb2312); +char* U2G(const char* utf8); +int getPrefStrings(const char* preference, TC_preference_search_scope_t scope, vector& pref_vec); +int export_dataset_file(bool debug, tag_t dataset, const char* ref_name, const char* ext, char** filename, char** original_name); +int GetBomView(tag_t rev_tag, const char* viewtype, tag_t* bomView, tag_t* bomBVR, bool debug); +int GetBomLinePropString(bool debug, tag_t line, char* propName, int errCode, char** attr_val); +void Split(string strArg, char spliter, vector& ans); +void Split(string strArg, string spliter, vector& ans); +int getPrefStrings2(const char* preference, TC_preference_search_scope_t scope, char splitter, vector& pref_vec); +int import_dataset_file(tag_t dataset, const char* ref_name, char* ext, char* fullfilename, char* original_name); +int import_dataset_file_binary(tag_t dataset, const char* ref_name, char* ext, char* fullfilename, char* original_name); +int readError(bool debug, char* errFilePath, int errCode); +void deleteFile(bool debug, char* path); +bool CheckType(string config, char* type, char spliter); +bool propExist(bool debug, tag_t obj, const char* propName); +bool isRev(char* object_type); +int GetProcessTargets(bool debug, int att_cnt, tag_t* attachments, vector& targets, char* formType, char splitter); +bool inArray(vector types, string type); +int getIndexInArray(vector types, string type); +int findUser(bool debug, string userStr, tag_t* user_tag); +bool isType(tag_t item, char* type); +void initUserDir(char* userId); +int CreateUserFile(logical debug, const char* FunctionName, char* userId, char** fullname, FILE** file); +int WriteToFile(FILE* file, const char* text); \ No newline at end of file diff --git a/connor_erp_mes/md5.cpp b/connor_erp_mes/md5.cpp new file mode 100644 index 0000000..c1d7139 --- /dev/null +++ b/connor_erp_mes/md5.cpp @@ -0,0 +1,273 @@ +/** + * @file md5.cpp + * @The implement of md5. + * @author Jiewei Wei + * @mail weijieweijerry@163.com + * @github https://github.com/JieweiWei + * @data Oct 19 2014 + * + */ + +#include "md5.h" + + /* Define the static member of MD5. */ +const byte MD5::PADDING[64] = { 0x80 }; +const char MD5::HEX_NUMBERS[16] = { + '0', '1', '2', '3', + '4', '5', '6', '7', + '8', '9', 'a', 'b', + 'c', 'd', 'e', 'f' +}; + +/** + * @Construct a MD5 object with a string. + * + * @param {message} the message will be transformed. + * + */ +MD5::MD5(const string& message) { + finished = false; + /* Reset number of bits. */ + count[0] = count[1] = 0; + /* Initialization constants. */ + state[0] = 0x67452301; + state[1] = 0xefcdab89; + state[2] = 0x98badcfe; + state[3] = 0x10325476; + + /* Initialization the object according to message. */ + init((const byte*)message.c_str(), message.length()); +} + +/** + * @Generate md5 digest. + * + * @return the message-digest. + * + */ +const byte* MD5::getDigest() { + if (!finished) { + finished = true; + + byte bits[8]; + bit32 oldState[4]; + bit32 oldCount[2]; + bit32 index, padLen; + + /* Save current state and count. */ + memcpy(oldState, state, 16); + memcpy(oldCount, count, 8); + + /* Save number of bits */ + encode(count, bits, 8); + + /* Pad out to 56 mod 64. */ + index = (bit32)((count[0] >> 3) & 0x3f); + padLen = (index < 56) ? (56 - index) : (120 - index); + init(PADDING, padLen); + + /* Append length (before padding) */ + init(bits, 8); + + /* Store state in digest */ + encode(state, digest, 16); + + /* Restore current state and count. */ + memcpy(state, oldState, 16); + memcpy(count, oldCount, 8); + } + return digest; +} + +/** + * @Initialization the md5 object, processing another message block, + * and updating the context. + * + * @param {input} the input message. + * + * @param {len} the number btye of message. + * + */ +void MD5::init(const byte* input, size_t len) { + + bit32 i, index, partLen; + + finished = false; + + /* Compute number of bytes mod 64 */ + index = (bit32)((count[0] >> 3) & 0x3f); + + /* update number of bits */ + if ((count[0] += ((bit32)len << 3)) < ((bit32)len << 3)) { + ++count[1]; + } + count[1] += ((bit32)len >> 29); + + partLen = 64 - index; + + /* transform as many times as possible. */ + if (len >= partLen) { + + memcpy(&buffer[index], input, partLen); + transform(buffer); + + for (i = partLen; i + 63 < len; i += 64) { + transform(&input[i]); + } + index = 0; + + } + else { + i = 0; + } + + /* Buffer remaining input */ + memcpy(&buffer[index], &input[i], len - i); +} + +/** + * @MD5 basic transformation. Transforms state based on block. + * + * @param {block} the message block. + */ +void MD5::transform(const byte block[64]) { + + bit32 a = state[0], b = state[1], c = state[2], d = state[3], x[16]; + + decode(block, x, 64); + + /* Round 1 */ + FF(a, b, c, d, x[0], s11, 0xd76aa478); + FF(d, a, b, c, x[1], s12, 0xe8c7b756); + FF(c, d, a, b, x[2], s13, 0x242070db); + FF(b, c, d, a, x[3], s14, 0xc1bdceee); + FF(a, b, c, d, x[4], s11, 0xf57c0faf); + FF(d, a, b, c, x[5], s12, 0x4787c62a); + FF(c, d, a, b, x[6], s13, 0xa8304613); + FF(b, c, d, a, x[7], s14, 0xfd469501); + FF(a, b, c, d, x[8], s11, 0x698098d8); + FF(d, a, b, c, x[9], s12, 0x8b44f7af); + FF(c, d, a, b, x[10], s13, 0xffff5bb1); + FF(b, c, d, a, x[11], s14, 0x895cd7be); + FF(a, b, c, d, x[12], s11, 0x6b901122); + FF(d, a, b, c, x[13], s12, 0xfd987193); + FF(c, d, a, b, x[14], s13, 0xa679438e); + FF(b, c, d, a, x[15], s14, 0x49b40821); + + /* Round 2 */ + GG(a, b, c, d, x[1], s21, 0xf61e2562); + GG(d, a, b, c, x[6], s22, 0xc040b340); + GG(c, d, a, b, x[11], s23, 0x265e5a51); + GG(b, c, d, a, x[0], s24, 0xe9b6c7aa); + GG(a, b, c, d, x[5], s21, 0xd62f105d); + GG(d, a, b, c, x[10], s22, 0x2441453); + GG(c, d, a, b, x[15], s23, 0xd8a1e681); + GG(b, c, d, a, x[4], s24, 0xe7d3fbc8); + GG(a, b, c, d, x[9], s21, 0x21e1cde6); + GG(d, a, b, c, x[14], s22, 0xc33707d6); + GG(c, d, a, b, x[3], s23, 0xf4d50d87); + GG(b, c, d, a, x[8], s24, 0x455a14ed); + GG(a, b, c, d, x[13], s21, 0xa9e3e905); + GG(d, a, b, c, x[2], s22, 0xfcefa3f8); + GG(c, d, a, b, x[7], s23, 0x676f02d9); + GG(b, c, d, a, x[12], s24, 0x8d2a4c8a); + + /* Round 3 */ + HH(a, b, c, d, x[5], s31, 0xfffa3942); + HH(d, a, b, c, x[8], s32, 0x8771f681); + HH(c, d, a, b, x[11], s33, 0x6d9d6122); + HH(b, c, d, a, x[14], s34, 0xfde5380c); + HH(a, b, c, d, x[1], s31, 0xa4beea44); + HH(d, a, b, c, x[4], s32, 0x4bdecfa9); + HH(c, d, a, b, x[7], s33, 0xf6bb4b60); + HH(b, c, d, a, x[10], s34, 0xbebfbc70); + HH(a, b, c, d, x[13], s31, 0x289b7ec6); + HH(d, a, b, c, x[0], s32, 0xeaa127fa); + HH(c, d, a, b, x[3], s33, 0xd4ef3085); + HH(b, c, d, a, x[6], s34, 0x4881d05); + HH(a, b, c, d, x[9], s31, 0xd9d4d039); + HH(d, a, b, c, x[12], s32, 0xe6db99e5); + HH(c, d, a, b, x[15], s33, 0x1fa27cf8); + HH(b, c, d, a, x[2], s34, 0xc4ac5665); + + /* Round 4 */ + II(a, b, c, d, x[0], s41, 0xf4292244); + II(d, a, b, c, x[7], s42, 0x432aff97); + II(c, d, a, b, x[14], s43, 0xab9423a7); + II(b, c, d, a, x[5], s44, 0xfc93a039); + II(a, b, c, d, x[12], s41, 0x655b59c3); + II(d, a, b, c, x[3], s42, 0x8f0ccc92); + II(c, d, a, b, x[10], s43, 0xffeff47d); + II(b, c, d, a, x[1], s44, 0x85845dd1); + II(a, b, c, d, x[8], s41, 0x6fa87e4f); + II(d, a, b, c, x[15], s42, 0xfe2ce6e0); + II(c, d, a, b, x[6], s43, 0xa3014314); + II(b, c, d, a, x[13], s44, 0x4e0811a1); + II(a, b, c, d, x[4], s41, 0xf7537e82); + II(d, a, b, c, x[11], s42, 0xbd3af235); + II(c, d, a, b, x[2], s43, 0x2ad7d2bb); + II(b, c, d, a, x[9], s44, 0xeb86d391); + + state[0] += a; + state[1] += b; + state[2] += c; + state[3] += d; +} + +/** +* @Encodes input (unsigned long) into output (byte). +* +* @param {input} usigned long. +* +* @param {output} byte. +* +* @param {length} the length of input. +* +*/ +void MD5::encode(const bit32* input, byte* output, size_t length) { + + for (size_t i = 0, j = 0; j < length; ++i, j += 4) { + output[j] = (byte)(input[i] & 0xff); + output[j + 1] = (byte)((input[i] >> 8) & 0xff); + output[j + 2] = (byte)((input[i] >> 16) & 0xff); + output[j + 3] = (byte)((input[i] >> 24) & 0xff); + } +} + +/** + * @Decodes input (byte) into output (usigned long). + * + * @param {input} bytes. + * + * @param {output} unsigned long. + * + * @param {length} the length of input. + * + */ +void MD5::decode(const byte* input, bit32* output, size_t length) { + for (size_t i = 0, j = 0; j < length; ++i, j += 4) { + output[i] = ((bit32)input[j]) | (((bit32)input[j + 1]) << 8) | + (((bit32)input[j + 2]) << 16) | (((bit32)input[j + 3]) << 24); + } +} + + +/** + * @Convert digest to string value. + * + * @return the hex string of digest. + * + */ +string MD5::toStr() { + const byte* digest_ = getDigest(); + string str; + str.reserve(16 << 1); + for (size_t i = 0; i < 16; ++i) { + int t = digest_[i]; + int a = t / 16; + int b = t % 16; + str.append(1, HEX_NUMBERS[a]); + str.append(1, HEX_NUMBERS[b]); + } + return str; +} \ No newline at end of file diff --git a/connor_erp_mes/md5.h b/connor_erp_mes/md5.h new file mode 100644 index 0000000..1ee13d3 --- /dev/null +++ b/connor_erp_mes/md5.h @@ -0,0 +1,137 @@ +/** + * @file md5.h + * @The header file of md5. + * @author Jiewei Wei + * @mail weijieweijerry@163.com + * @github https://github.com/JieweiWei + * @data Oct 19 2014 + * + */ + +#ifndef MD5_H +#define MD5_H + + /* Parameters of MD5. */ +#define s11 7 +#define s12 12 +#define s13 17 +#define s14 22 +#define s21 5 +#define s22 9 +#define s23 14 +#define s24 20 +#define s31 4 +#define s32 11 +#define s33 16 +#define s34 23 +#define s41 6 +#define s42 10 +#define s43 15 +#define s44 21 + +/** + * @Basic MD5 functions. + * + * @param there bit32. + * + * @return one bit32. + */ +#define F(x, y, z) (((x) & (y)) | ((~x) & (z))) +#define G(x, y, z) (((x) & (z)) | ((y) & (~z))) +#define H(x, y, z) ((x) ^ (y) ^ (z)) +#define I(x, y, z) ((y) ^ ((x) | (~z))) + + /** + * @Rotate Left. + * + * @param {num} the raw number. + * + * @param {n} rotate left n. + * + * @return the number after rotated left. + */ +#define ROTATELEFT(num, n) (((num) << (n)) | ((num) >> (32-(n)))) + + /** + * @Transformations for rounds 1, 2, 3, and 4. + */ +#define FF(a, b, c, d, x, s, ac) { \ + (a) += F ((b), (c), (d)) + (x) + ac; \ + (a) = ROTATELEFT ((a), (s)); \ + (a) += (b); \ +} +#define GG(a, b, c, d, x, s, ac) { \ + (a) += G ((b), (c), (d)) + (x) + ac; \ + (a) = ROTATELEFT ((a), (s)); \ + (a) += (b); \ +} +#define HH(a, b, c, d, x, s, ac) { \ + (a) += H ((b), (c), (d)) + (x) + ac; \ + (a) = ROTATELEFT ((a), (s)); \ + (a) += (b); \ +} +#define II(a, b, c, d, x, s, ac) { \ + (a) += I ((b), (c), (d)) + (x) + ac; \ + (a) = ROTATELEFT ((a), (s)); \ + (a) += (b); \ +} + +#include +#include + +using std::string; + +/* Define of btye.*/ +typedef unsigned char byte; +/* Define of byte. */ +typedef unsigned int bit32; + +class MD5 { +public: + /* Construct a MD5 object with a string. */ + MD5(const string& message); + + /* Generate md5 digest. */ + const byte* getDigest(); + + /* Convert digest to string value */ + string toStr(); + +private: + /* Initialization the md5 object, processing another message block, + * and updating the context.*/ + void init(const byte* input, size_t len); + + /* MD5 basic transformation. Transforms state based on block. */ + void transform(const byte block[64]); + + /* Encodes input (usigned long) into output (byte). */ + void encode(const bit32* input, byte* output, size_t length); + + /* Decodes input (byte) into output (usigned long). */ + void decode(const byte* input, bit32* output, size_t length); + +private: + /* Flag for mark whether calculate finished. */ + bool finished; + + /* state (ABCD). */ + bit32 state[4]; + + /* number of bits, low-order word first. */ + bit32 count[2]; + + /* input buffer. */ + byte buffer[64]; + + /* message digest. */ + byte digest[16]; + + /* padding for calculate. */ + static const byte PADDING[64]; + + /* Hex numbers. */ + static const char HEX_NUMBERS[16]; +}; + +#endif // MD5_H \ No newline at end of file diff --git a/connor_erp_mes/plugin.c b/connor_erp_mes/plugin.c new file mode 100644 index 0000000..01ea041 --- /dev/null +++ b/connor_erp_mes/plugin.c @@ -0,0 +1,97 @@ +/* + plugin.c + + Example gSOAP plug-in + + Copyright (C) 2000-2002 Robert A. van Engelen. All Rights Reserved. + + Compile & link with gSOAP clients and services to view SOAP messages. + + Usage (client/server code): + struct soap soap; + soap_init(&soap); + soap_register_plugin(&soap, plugin); // register plugin + ... + ... = soap_copy(&soap); // copies plugin too + ... + soap_done(&soap); // detach plugin + + A plugin is copied with the soap_copy() call. Upon this call, two + situations may arise depending on setting the fcopy() callback and + the need to share or not share plugin data: + + 1. if the plugin fcopy() callback is set, it will be called to allow + the plugin to copy its local data. When soap_done() is called on + the copy, the fdelete() callback is called for cleanup. + + 2. if the plugin fcopy() callback is not set, then the plugin data + will be shared (i.e. the data pointer points to the same address). + The fdelete() callback will not be called upon a soap_done() on a + copy of the soap struct. The fdelete() callback will be called for + the original soap struct with which the plugin registered. + +*/ + +#include "plugin.h" + +static const char plugin_id[] = PLUGIN_ID; + +static int plugin_init(struct soap *soap, struct plugin_data *data); +static int plugin_copy(struct soap *soap, struct soap_plugin *dst, struct soap_plugin *src); +static void plugin_delete(struct soap *soap, struct soap_plugin *p); +static int plugin_send(struct soap *soap, const char *buf, size_t len); +static size_t plugin_recv(struct soap *soap, char *buf, size_t len); + +int plugin(struct soap *soap, struct soap_plugin *p, void *arg) +{ + p->id = plugin_id; + p->data = (void*)malloc(sizeof(struct plugin_data)); + /* optional: define fcopy() operation. When defined, fdelete() will be called for every copy of the plugin created with fcopy(), when NOT defined, fdelete() will only be called on the original non-copied plugin */ + p->fcopy = plugin_copy; + p->fdelete = plugin_delete; + if (!p->data) + return SOAP_EOM; + if (plugin_init(soap, (struct plugin_data*)p->data)) + { + free(p->data); /* error: could not init */ + return SOAP_EOM; /* return error */ + } + return SOAP_OK; +} + +static int plugin_init(struct soap *soap, struct plugin_data *data) +{ + data->fsend = soap->fsend; /* save old recv callback */ + data->frecv = soap->frecv; /* save old send callback */ + soap->fsend = plugin_send; /* replace send callback with ours */ + soap->frecv = plugin_recv; /* replace recv callback with ours */ + return SOAP_OK; +} + +static int plugin_copy(struct soap *soap, struct soap_plugin *dst, struct soap_plugin *src) +{ + if (!(dst->data = (struct plugin_data*)malloc(sizeof(struct plugin_data)))) + return SOAP_EOM; + (*dst).data = (*src).data; + return SOAP_OK; +} + +static void plugin_delete(struct soap *soap, struct soap_plugin *p) +{ + free(p->data); /* free allocated plugin data. If fcopy() is not set, then this function is not called for all copies of the plugin created with soap_copy(). In this example, the fcopy() callback can be safely omitted. When omitted, the plugin data is shared by the soap copies created with soap_copy() */ +} + +static int plugin_send(struct soap *soap, const char *buf, size_t len) +{ + struct plugin_data *data = (struct plugin_data*)soap_lookup_plugin(soap, plugin_id); + fwrite(buf, len, 1, stderr); + return data->fsend(soap, buf, len); /* pass data on to old send callback */ +} + +static size_t plugin_recv(struct soap *soap, char *buf, size_t len) +{ + struct plugin_data *data = (struct plugin_data*)soap_lookup_plugin(soap, plugin_id); + size_t res = data->frecv(soap, buf, len); /* get data from old recv callback */ + fwrite(buf, res, 1, stderr); + return res; +} diff --git a/connor_erp_mes/plugin.h b/connor_erp_mes/plugin.h new file mode 100644 index 0000000..23cb081 --- /dev/null +++ b/connor_erp_mes/plugin.h @@ -0,0 +1,27 @@ +/* + plugin.h + + Example gSOAP plug-in. Include this file and link with plugin.c + + Copyright (C) 2000-2002 Robert A. van Engelen. All Rights Reserved. +*/ + +#include "stdsoap2.h" + +#define PLUGIN_ID "SOAP-PLUGIN/1.0" /* plugin identification */ + +#ifdef __cplusplus +extern "C" { +#endif + +struct plugin_data { + int (*fsend)(struct soap*, const char*, size_t); /* example: to save and use send callback */ + size_t (*frecv)(struct soap*, char*, size_t); /* example: to save and use recv callback */ +}; + +int plugin(struct soap *soap, struct soap_plugin *plugin, void *arg); + +#ifdef __cplusplus +} +#endif + diff --git a/connor_erp_mes/stdsoap2.cpp b/connor_erp_mes/stdsoap2.cpp new file mode 100644 index 0000000..a112700 --- /dev/null +++ b/connor_erp_mes/stdsoap2.cpp @@ -0,0 +1,22947 @@ +/* + stdsoap2.c[pp] 2.8.91 + + gSOAP runtime engine + +gSOAP XML Web services tools +Copyright (C) 2000-2019, Robert van Engelen, Genivia Inc., All Rights Reserved. +This part of the software is released under ONE of the following licenses: +GPL, or the gSOAP public license, or Genivia's license for commercial use. +-------------------------------------------------------------------------------- +Contributors: + +Wind River Systems, Inc., for the following addition licensed under the gSOAP +public license: + - vxWorks compatible, enabled with compiler option -DVXWORKS +-------------------------------------------------------------------------------- +gSOAP public license. + +The contents of this file are subject to the gSOAP Public License Version 1.3 +(the "License"); you may not use this file except in compliance with the +License. You may obtain a copy of the License at +http://www.cs.fsu.edu/~engelen/soaplicense.html +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the License. + +The Initial Developer of the Original Code is Robert A. van Engelen. +Copyright (C) 2000-2019, Robert van Engelen, Genivia Inc., All Rights Reserved. +-------------------------------------------------------------------------------- +GPL license. + +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation; either version 2 of the License, or (at your option) any later +version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program; if not, write to the Free Software Foundation, Inc., 59 Temple +Place, Suite 330, Boston, MA 02111-1307 USA + +Author contact information: +engelen@genivia.com / engelen@acm.org + +This program is released under the GPL with the additional exemption that +compiling, linking, and/or using OpenSSL is allowed. +-------------------------------------------------------------------------------- +A commercial use license is available from Genivia, Inc., contact@genivia.com +-------------------------------------------------------------------------------- +*/ + +#define GSOAP_LIB_VERSION 20891 + +#ifdef AS400 +# pragma convert(819) /* EBCDIC to ASCII */ +#endif + +#if defined(__gnu_linux__) && !defined(_GNU_SOURCE) +# define _GNU_SOURCE 1 +#endif + +#include "stdsoap2.h" + +#if GSOAP_VERSION != GSOAP_LIB_VERSION +# error "GSOAP VERSION MISMATCH IN LIBRARY: PLEASE REINSTALL PACKAGE" +#endif + +#if defined(VXWORKS) && defined(WM_SECURE_KEY_STORAGE) +# include /* vxWorks compatible */ +#endif + +#ifdef __BORLANDC__ +# pragma warn -8060 +#else +# ifdef WIN32 +# ifdef UNDER_CE +# pragma comment(lib, "ws2.lib") /* WinCE */ +# else +# pragma comment(lib, "Ws2_32.lib") +# endif +# pragma warning(disable : 4996) /* disable deprecation warnings */ +# endif +#endif + +#ifdef __cplusplus +SOAP_SOURCE_STAMP("@(#) stdsoap2.cpp ver 2.8.91 2019-08-15 00:00:00 GMT") +extern "C" { +#else +SOAP_SOURCE_STAMP("@(#) stdsoap2.c ver 2.8.91 2019-08-15 00:00:00 GMT") +#endif + +/* 8bit character representing unknown character entity or multibyte data */ +#ifndef SOAP_UNKNOWN_CHAR +# define SOAP_UNKNOWN_CHAR (0x7F) +#endif + +/* unicode character representing unknown characters outside the XML 1.0 UTF8 unicode space */ +#ifdef WITH_REPLACE_ILLEGAL_UTF8 +# ifndef SOAP_UNKNOWN_UNICODE_CHAR +# define SOAP_UNKNOWN_UNICODE_CHAR (0xFFFD) +# endif +#endif + +/* EOF=-1 */ +#define SOAP_LT (soap_wchar)(-2) /* XML-specific '<' */ +#define SOAP_TT (soap_wchar)(-3) /* XML-specific '' */ +#define SOAP_QT (soap_wchar)(-5) /* XML-specific '"' */ +#define SOAP_AP (soap_wchar)(-6) /* XML-specific ''' */ + +#define soap_coblank(c) ((c)+1 > 0 && (c) <= 32) + +#if defined(WIN32) && !defined(UNDER_CE) +#define soap_hash_ptr(p) ((size_t)((PtrToUlong(p) >> 3) & (SOAP_PTRHASH - 1))) +#else +#define soap_hash_ptr(p) ((size_t)(((unsigned long)(p) >> 3) & (SOAP_PTRHASH-1))) +#endif + +#ifdef SOAP_DEBUG +static void soap_init_logs(struct soap*); +static void soap_close_logfile(struct soap*, int); +static void soap_set_logfile(struct soap*, int, const char*); +#endif + +#ifdef SOAP_MEM_DEBUG +static void soap_init_mht(struct soap*); +static void soap_free_mht(struct soap*); +static void soap_track_unlink(struct soap*, const void*); +#endif + +static int soap_set_error(struct soap*, const char*, const char*, const char*, const char*, int); +static int soap_copy_fault(struct soap*, const char*, const char*, const char*, const char*); +static int soap_getattrval(struct soap*, char*, size_t*, soap_wchar); +static void soap_version(struct soap*); +static void soap_free_ns(struct soap*); +static soap_wchar soap_char(struct soap*); +static soap_wchar soap_getpi(struct soap*); +static int soap_isxdigit(int); +static void *fplugin(struct soap*, const char*); +static ULONG64 soap_count_attachments(struct soap*); +static int soap_try_connect_command(struct soap*, int http_command, const char *endpoint, const char *action); +static int soap_init_send(struct soap*); + +#ifdef WITH_NTLM +static int soap_ntlm_handshake(struct soap *soap, int command, const char *endpoint, const char *host, int port); +#endif + +#ifndef WITH_NOIDREF +static int soap_has_copies(struct soap*, const char*, const char*); +static int soap_type_punned(struct soap*, const struct soap_ilist*); +static int soap_is_shaky(struct soap*, void*); +static void soap_init_iht(struct soap*); +static void soap_free_iht(struct soap*); +#endif +static void soap_init_pht(struct soap*); +static void soap_free_pht(struct soap*); + +#ifndef WITH_LEAN +static const char *soap_set_validation_fault(struct soap*, const char*, const char*); +static int soap_isnumeric(struct soap*, const char*); +static struct soap_nlist *soap_push_ns(struct soap *soap, const char *id, const char *ns, short utilized, short isearly); +static void soap_utilize_ns(struct soap *soap, const char *tag, short isearly); +static const wchar_t* soap_wstring(struct soap *soap, const char *s, int flag, long minlen, long maxlen, const char *pattern); +static wchar_t* soap_wcollapse(struct soap *soap, wchar_t *s, int flag, int insitu); +#endif + +static const char* soap_string(struct soap *soap, const char *s, int flag, long minlen, long maxlen, const char *pattern); +static char* soap_collapse(struct soap *soap, char *s, int flag, int insitu); +static const char* soap_QName(struct soap *soap, const char *s, long minlen, long maxlen, const char *pattern); + +#ifndef WITH_LEANER +static int soap_begin_attachments(struct soap*); +static int soap_end_attachments(struct soap *soap); +static struct soap_multipart *soap_alloc_multipart(struct soap*, struct soap_multipart**, struct soap_multipart**, const char*, size_t); +static int soap_putdimefield(struct soap*, const char*, size_t); +static char *soap_getdimefield(struct soap*, size_t); +static void soap_select_mime_boundary(struct soap*); +static int soap_valid_mime_boundary(struct soap*); +static void soap_resolve_attachment(struct soap*, struct soap_multipart*); +#endif + +#ifdef WITH_GZIP +static int soap_getgziphdr(struct soap*); +#endif + +#ifdef WITH_OPENSSL +# ifndef SOAP_SSL_RSA_BITS +# define SOAP_SSL_RSA_BITS 2048 +# endif +static int soap_ssl_init_done = 0; +static int ssl_auth_init(struct soap*); +static int ssl_verify_callback(int, X509_STORE_CTX*); +static int ssl_verify_callback_allow_expired_certificate(int, X509_STORE_CTX*); +static int ssl_password(char*, int, int, void *); +#endif + +#ifdef WITH_GNUTLS +# ifndef SOAP_SSL_RSA_BITS +# define SOAP_SSL_RSA_BITS 2048 +# endif +static int soap_ssl_init_done = 0; +static int ssl_auth_init(struct soap*); +static const char *ssl_verify(struct soap *soap, const char *host); +# if GNUTLS_VERSION_NUMBER < 0x020b00 +# if defined(HAVE_PTHREAD_H) +# include + /* make GNUTLS thread safe with pthreads */ + GCRY_THREAD_OPTION_PTHREAD_IMPL; +# elif defined(HAVE_PTH_H) + #include + /* make GNUTLS thread safe with PTH */ + GCRY_THREAD_OPTION_PTH_IMPL; +# endif +# endif +#endif + +#ifdef WITH_SYSTEMSSL +static int ssl_auth_init(struct soap*); +static int ssl_recv(int sk, void *s, int n, char *user); +static int ssl_send(int sk, void *s, int n, char *user); +#endif + +#if !defined(WITH_NOHTTP) || !defined(WITH_LEANER) +static const char * soap_decode(char*, size_t, const char*, const char*); +#endif + +#ifndef WITH_NOHTTP +static soap_wchar soap_getchunkchar(struct soap*); +static const char *http_error(struct soap*, int); +static int http_get(struct soap*); +static int http_put(struct soap*); +static int http_patch(struct soap*); +static int http_del(struct soap*); +static int http_200(struct soap*); +static int http_post(struct soap*, const char*, const char*, int, const char*, const char*, ULONG64); +static int http_send_header(struct soap*, const char*); +static int http_post_header(struct soap*, const char*, const char*); +static int http_response(struct soap*, int, ULONG64); +static int http_parse(struct soap*); +static int http_parse_header(struct soap*, const char*, const char*); +#endif + +#ifndef WITH_NOIO + +static int fsend(struct soap*, const char*, size_t); +static size_t frecv(struct soap*, char*, size_t); +static int tcp_init(struct soap*); +static const char *tcp_error(struct soap*); + +#if !defined(WITH_IPV6) +static int tcp_gethost(struct soap*, const char *addr, struct in_addr *inaddr); +#endif +#if !defined(WITH_IPV6) || defined(WITH_COOKIES) +static int tcp_gethostbyname(struct soap*, const char *addr, struct hostent *hostent, struct in_addr *inaddr); +#endif + +static SOAP_SOCKET tcp_connect(struct soap*, const char *endpoint, const char *host, int port); +static SOAP_SOCKET tcp_accept(struct soap*, SOAP_SOCKET, struct sockaddr*, int*); +static int tcp_select(struct soap*, SOAP_SOCKET, int, int); +static int tcp_disconnect(struct soap*); +static int tcp_closesocket(struct soap*, SOAP_SOCKET); +static int tcp_shutdownsocket(struct soap*, SOAP_SOCKET, int); +static const char *soap_strerror(struct soap*); + +#define SOAP_TCP_SELECT_RCV 0x1 +#define SOAP_TCP_SELECT_SND 0x2 +#define SOAP_TCP_SELECT_ERR 0x4 +#define SOAP_TCP_SELECT_ALL 0x7 +#define SOAP_TCP_SELECT_PIP 0x8 + +#if defined(WIN32) + #define SOAP_SOCKBLOCK(fd) \ + { \ + u_long blocking = 0; \ + ioctlsocket(fd, FIONBIO, &blocking); \ + } + #define SOAP_SOCKNONBLOCK(fd) \ + { \ + u_long nonblocking = 1; \ + ioctlsocket(fd, FIONBIO, &nonblocking); \ + } +#elif defined(VXWORKS) + #define SOAP_SOCKBLOCK(fd) \ + { \ + u_long blocking = 0; \ + ioctl(fd, FIONBIO, (int)(&blocking)); \ + } + #define SOAP_SOCKNONBLOCK(fd) \ + { \ + u_long nonblocking = 1; \ + ioctl(fd, FIONBIO, (int)(&nonblocking)); \ + } +#elif defined(__VMS) + #define SOAP_SOCKBLOCK(fd) \ + { \ + int blocking = 0; \ + ioctl(fd, FIONBIO, &blocking); \ + } + #define SOAP_SOCKNONBLOCK(fd) \ + { \ + int nonblocking = 1; \ + ioctl(fd, FIONBIO, &nonblocking); \ + } +#elif defined(SYMBIAN) + #define SOAP_SOCKBLOCK(fd) \ + { \ + long blocking = 0; \ + ioctl(fd, 0/*FIONBIO*/, &blocking); \ + } + #define SOAP_SOCKNONBLOCK(fd) \ + { \ + long nonblocking = 1; \ + ioctl(fd, 0/*FIONBIO*/, &nonblocking); \ + } +#else + #define SOAP_SOCKBLOCK(fd) fcntl(fd, F_SETFL, fcntl(fd, F_GETFL)&~O_NONBLOCK); + #define SOAP_SOCKNONBLOCK(fd) fcntl(fd, F_SETFL, fcntl(fd, F_GETFL)|O_NONBLOCK); +#endif + +#endif + +static const char soap_env1[42] = "http://schemas.xmlsoap.org/soap/envelope/"; +static const char soap_enc1[42] = "http://schemas.xmlsoap.org/soap/encoding/"; +static const char soap_env2[40] = "http://www.w3.org/2003/05/soap-envelope"; +static const char soap_enc2[40] = "http://www.w3.org/2003/05/soap-encoding"; +static const char soap_rpc[35] = "http://www.w3.org/2003/05/soap-rpc"; + +const union soap_double_nan soap_double_nan = {{0xFFFFFFFF, 0xFFFFFFFF}}; +const char soap_base64o[65] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; +const char soap_base64i[81] = "\76XXX\77\64\65\66\67\70\71\72\73\74\75XXXXXXX\00\01\02\03\04\05\06\07\10\11\12\13\14\15\16\17\20\21\22\23\24\25\26\27\30\31XXXXXX\32\33\34\35\36\37\40\41\42\43\44\45\46\47\50\51\52\53\54\55\56\57\60\61\62\63"; + +#ifndef WITH_LEAN +static const char soap_indent[21] = "\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"; +/* Alternative indentation form for SOAP_XML_INDENT with spaces instead of tabs: +static const char soap_indent[41] = "\n "; +*/ +#endif + +#ifndef SOAP_CANARY +# define SOAP_CANARY (0xC0DE) +#endif + +static const char soap_padding[4] = "\0\0\0"; +#define SOAP_STR_PADDING (soap_padding) +#define SOAP_STR_EOS (soap_padding) +#define SOAP_NON_NULL (soap_padding) + +#ifndef WITH_LEAN +static const struct soap_code_map html_entity_codes[] = /* entities for XHTML parsing */ +{ + { 160, "nbsp" }, + { 161, "iexcl" }, + { 162, "cent" }, + { 163, "pound" }, + { 164, "curren" }, + { 165, "yen" }, + { 166, "brvbar" }, + { 167, "sect" }, + { 168, "uml" }, + { 169, "copy" }, + { 170, "ordf" }, + { 171, "laquo" }, + { 172, "not" }, + { 173, "shy" }, + { 174, "reg" }, + { 175, "macr" }, + { 176, "deg" }, + { 177, "plusmn" }, + { 178, "sup2" }, + { 179, "sup3" }, + { 180, "acute" }, + { 181, "micro" }, + { 182, "para" }, + { 183, "middot" }, + { 184, "cedil" }, + { 185, "sup1" }, + { 186, "ordm" }, + { 187, "raquo" }, + { 188, "frac14" }, + { 189, "frac12" }, + { 190, "frac34" }, + { 191, "iquest" }, + { 192, "Agrave" }, + { 193, "Aacute" }, + { 194, "Acirc" }, + { 195, "Atilde" }, + { 196, "Auml" }, + { 197, "Aring" }, + { 198, "AElig" }, + { 199, "Ccedil" }, + { 200, "Egrave" }, + { 201, "Eacute" }, + { 202, "Ecirc" }, + { 203, "Euml" }, + { 204, "Igrave" }, + { 205, "Iacute" }, + { 206, "Icirc" }, + { 207, "Iuml" }, + { 208, "ETH" }, + { 209, "Ntilde" }, + { 210, "Ograve" }, + { 211, "Oacute" }, + { 212, "Ocirc" }, + { 213, "Otilde" }, + { 214, "Ouml" }, + { 215, "times" }, + { 216, "Oslash" }, + { 217, "Ugrave" }, + { 218, "Uacute" }, + { 219, "Ucirc" }, + { 220, "Uuml" }, + { 221, "Yacute" }, + { 222, "THORN" }, + { 223, "szlig" }, + { 224, "agrave" }, + { 225, "aacute" }, + { 226, "acirc" }, + { 227, "atilde" }, + { 228, "auml" }, + { 229, "aring" }, + { 230, "aelig" }, + { 231, "ccedil" }, + { 232, "egrave" }, + { 233, "eacute" }, + { 234, "ecirc" }, + { 235, "euml" }, + { 236, "igrave" }, + { 237, "iacute" }, + { 238, "icirc" }, + { 239, "iuml" }, + { 240, "eth" }, + { 241, "ntilde" }, + { 242, "ograve" }, + { 243, "oacute" }, + { 244, "ocirc" }, + { 245, "otilde" }, + { 246, "ouml" }, + { 247, "divide" }, + { 248, "oslash" }, + { 249, "ugrave" }, + { 250, "uacute" }, + { 251, "ucirc" }, + { 252, "uuml" }, + { 253, "yacute" }, + { 254, "thorn" }, + { 255, "yuml" }, + { 0, NULL } +}; +#endif + +#ifndef WITH_NOIO +#ifndef WITH_LEAN +static const struct soap_code_map h_error_codes[] = +{ +#ifdef HOST_NOT_FOUND + { HOST_NOT_FOUND, "Host not found" }, +#endif +#ifdef TRY_AGAIN + { TRY_AGAIN, "Try Again" }, +#endif +#ifdef NO_RECOVERY + { NO_RECOVERY, "No Recovery" }, +#endif +#ifdef NO_DATA + { NO_DATA, "No Data" }, +#endif +#ifdef NO_ADDRESS + { NO_ADDRESS, "No Address" }, +#endif + { 0, NULL } +}; +#endif +#endif + +#ifndef WITH_NOHTTP +#ifndef WITH_LEAN +static const struct soap_code_map h_http_error_codes[] = +{ + { 100, "Continue" }, + { 101, "Switching Protocols" }, + { 200, "OK" }, + { 201, "Created" }, + { 202, "Accepted" }, + { 203, "Non-Authoritative Information" }, + { 204, "No Content" }, + { 205, "Reset Content" }, + { 206, "Partial Content" }, + { 300, "Multiple Choices" }, + { 301, "Moved Permanently" }, + { 302, "Found" }, + { 303, "See Other" }, + { 304, "Not Modified" }, + { 305, "Use Proxy" }, + { 307, "Temporary Redirect" }, + { 400, "Bad Request" }, + { 401, "Unauthorized" }, + { 402, "Payment Required" }, + { 403, "Forbidden" }, + { 404, "Not Found" }, + { 405, "Method Not Allowed" }, + { 406, "Not Acceptable" }, + { 407, "Proxy Authentication Required" }, + { 408, "Request Time-out" }, + { 409, "Conflict" }, + { 410, "Gone" }, + { 411, "Length Required" }, + { 412, "Precondition Failed" }, + { 413, "Request Entity Too Large" }, + { 414, "Request-URI Too Large" }, + { 415, "Unsupported Media Type" }, + { 416, "Requested range not satisfiable" }, + { 417, "Expectation Failed" }, + { 422, "Unprocessable Entity" }, + { 426, "Upgrade Required" }, + { 428, "Precondition Required" }, + { 429, "Too Many Requests" }, + { 431, "Request Header Fields Too Large" }, + { 500, "Internal Server Error" }, + { 501, "Not Implemented" }, + { 502, "Bad Gateway" }, + { 503, "Service Unavailable" }, + { 504, "Gateway Time-out" }, + { 505, "HTTP Version not supported" }, + { 511, "Network Authentication Required" }, + { 0, NULL } +}; +#endif +#endif + +#ifdef WITH_OPENSSL +static const struct soap_code_map h_ssl_error_codes[] = +{ +#define _SSL_ERROR(e) { e, #e } + _SSL_ERROR(SSL_ERROR_SSL), + _SSL_ERROR(SSL_ERROR_ZERO_RETURN), + _SSL_ERROR(SSL_ERROR_WANT_READ), + _SSL_ERROR(SSL_ERROR_WANT_WRITE), + _SSL_ERROR(SSL_ERROR_WANT_CONNECT), + _SSL_ERROR(SSL_ERROR_WANT_X509_LOOKUP), + _SSL_ERROR(SSL_ERROR_SYSCALL), + { 0, NULL } +}; +#endif + +#ifndef WITH_LEANER +static const struct soap_code_map mime_codes[] = +{ + { SOAP_MIME_7BIT, "7bit" }, + { SOAP_MIME_8BIT, "8bit" }, + { SOAP_MIME_BINARY, "binary" }, + { SOAP_MIME_QUOTED_PRINTABLE, "quoted-printable" }, + { SOAP_MIME_BASE64, "base64" }, + { SOAP_MIME_IETF_TOKEN, "ietf-token" }, + { SOAP_MIME_X_TOKEN, "x-token" }, + { 0, NULL } +}; +#endif + +#ifdef WIN32 +static int tcp_done = 0; +#endif + +#if (defined(_AIX43) || defined(TRU64) || defined(HP_UX)) && defined(HAVE_GETHOSTBYNAME_R) +#ifndef h_errno +extern int h_errno; +#endif +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIO +static int +fsend(struct soap *soap, const char *s, size_t n) +{ + int nwritten, err; + SOAP_SOCKET sk; + soap->errnum = 0; +#if defined(__cplusplus) && !defined(WITH_COMPAT) + if (soap->os) + { + soap->os->write(s, (std::streamsize)n); + if (soap->os->good()) + return SOAP_OK; + return SOAP_EOF; + } +#endif + sk = soap->sendsk; + if (!soap_valid_socket(sk)) + sk = soap->socket; + while (n) + { + if (soap_valid_socket(sk)) + { + if (soap->send_timeout) + { + for (;;) + { + int r; +#ifdef WITH_SELF_PIPE +#ifdef WITH_OPENSSL + if (soap->ssl) + r = tcp_select(soap, sk, SOAP_TCP_SELECT_ALL | SOAP_TCP_SELECT_PIP, soap->send_timeout); + else +#endif +#ifdef WITH_GNUTLS + if (soap->session) + r = tcp_select(soap, sk, SOAP_TCP_SELECT_ALL | SOAP_TCP_SELECT_PIP, soap->send_timeout); + else +#endif +#ifdef WITH_SYSTEMSSL + if (soap->ssl) + r = tcp_select(soap, sk, SOAP_TCP_SELECT_ALL | SOAP_TCP_SELECT_PIP, soap->send_timeout); + else +#endif + r = tcp_select(soap, sk, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR | SOAP_TCP_SELECT_PIP, soap->send_timeout); + if ((r & SOAP_TCP_SELECT_PIP)) /* abort if data is pending on pipe */ + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Connection closed by self pipe\n")); + return SOAP_EOF; + } +#else +#ifdef WITH_OPENSSL + if (soap->ssl) + r = tcp_select(soap, sk, SOAP_TCP_SELECT_ALL, soap->send_timeout); + else +#endif +#ifdef WITH_GNUTLS + if (soap->session) + r = tcp_select(soap, sk, SOAP_TCP_SELECT_ALL, soap->send_timeout); + else +#endif +#ifdef WITH_SYSTEMSSL + if (soap->ssl) + r = tcp_select(soap, sk, SOAP_TCP_SELECT_ALL, soap->send_timeout); + else +#endif + r = tcp_select(soap, sk, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, soap->send_timeout); +#endif + if (r > 0) + break; + if (!r) + return SOAP_EOF; + err = soap->errnum; + if (!err) + return soap->error; + if (err != SOAP_EAGAIN && err != SOAP_EWOULDBLOCK) + return SOAP_EOF; + } + } +#ifndef WITH_LEAN + if (soap->transfer_timeout) + { + time_t now = time(NULL); + if ((soap->transfer_timeout > 0 && difftime(now, (time_t)soap->start) > (double)soap->transfer_timeout) + || (soap->transfer_timeout < 0 && difftime(now, (time_t)soap->start) > -1000000.0 * (double)soap->transfer_timeout)) + return SOAP_EOF; + } +#endif +#ifdef WITH_OPENSSL + if (soap->ssl) + nwritten = SSL_write(soap->ssl, s, (int)n); + else if (soap->bio) + nwritten = BIO_write(soap->bio, s, (int)n); + else +#endif +#ifdef WITH_GNUTLS + if (soap->session) + nwritten = gnutls_record_send(soap->session, s, n); + else +#endif +#ifdef WITH_SYSTEMSSL + if (soap->ssl) + { + err = gsk_secure_socket_write(soap->ssl, (char*)s, n, &nwritten); + if (err != GSK_OK) + nwritten = 0; + } + else +#endif +#ifndef WITH_LEAN + if ((soap->omode & SOAP_IO_UDP)) + { + if (soap->peerlen) + nwritten = sendto(sk, (char*)s, (SOAP_WINSOCKINT)n, soap->socket_flags, &soap->peer.addr, (SOAP_WINSOCKINT)soap->peerlen); + else + nwritten = send(sk, s, (SOAP_WINSOCKINT)n, soap->socket_flags); + /* retry and back-off algorithm */ + /* TODO: this is not very clear from specs so verify and limit conditions under which we should loop (e.g. ENOBUFS) */ + if (nwritten < 0) + { + int udp_repeat; + int udp_delay; + if ((soap->connect_flags & SO_BROADCAST)) + udp_repeat = 2; /* SOAP-over-UDP MULTICAST_UDP_REPEAT - 1 */ + else + udp_repeat = 1; /* SOAP-over-UDP UNICAST_UDP_REPEAT - 1 */ + udp_delay = ((unsigned int)soap_random % 201) + 50; /* UDP_MIN_DELAY .. UDP_MAX_DELAY */ + do + { + tcp_select(soap, sk, SOAP_TCP_SELECT_ERR, -1000 * udp_delay); + if (soap->peerlen) + nwritten = sendto(sk, (char*)s, (SOAP_WINSOCKINT)n, soap->socket_flags, &soap->peer.addr, (SOAP_WINSOCKINT)soap->peerlen); + else + nwritten = send(sk, s, (SOAP_WINSOCKINT)n, soap->socket_flags); + udp_delay <<= 1; + if (udp_delay > 500) /* UDP_UPPER_DELAY */ + udp_delay = 500; + } while (nwritten < 0 && --udp_repeat > 0); + } + if (nwritten < 0) + { + err = soap_socket_errno(sk); + if (err && err != SOAP_EINTR) + { + soap->errnum = err; + return SOAP_EOF; + } + nwritten = 0; /* and call write() again */ + } + } + else +#endif +#if !defined(AS400) + nwritten = send(sk, s, (int)n, soap->socket_flags); +#else + nwritten = send(sk, (void*)s, n, soap->socket_flags); +#endif + if (nwritten <= 0) + { + int r = 0; + err = soap_socket_errno(sk); +#ifdef WITH_OPENSSL + if (soap->ssl && (r = SSL_get_error(soap->ssl, nwritten)) != SSL_ERROR_NONE && r != SSL_ERROR_WANT_READ && r != SSL_ERROR_WANT_WRITE) + { + soap->errnum = err; + return SOAP_EOF; + } +#endif +#ifdef WITH_GNUTLS + if (soap->session) + { + if (nwritten == GNUTLS_E_INTERRUPTED) + err = SOAP_EINTR; + else if (nwritten == GNUTLS_E_AGAIN) + err = SOAP_EAGAIN; + } +#endif + if (err == SOAP_EWOULDBLOCK || err == SOAP_EAGAIN) + { +#if defined(WITH_OPENSSL) + if (soap->ssl && r == SSL_ERROR_WANT_READ) + r = tcp_select(soap, sk, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, soap->send_timeout ? soap->send_timeout : -10000); + else +#elif defined(WITH_GNUTLS) + if (soap->session && !gnutls_record_get_direction(soap->session)) + r = tcp_select(soap, sk, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, soap->send_timeout ? soap->send_timeout : -10000); + else +#endif + r = tcp_select(soap, sk, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, soap->send_timeout ? soap->send_timeout : -10000); + if (!r && soap->send_timeout) + return SOAP_EOF; + if (r < 0) + return SOAP_EOF; + } + else if (err && err != SOAP_EINTR) + { + soap->errnum = err; + return SOAP_EOF; + } + nwritten = 0; /* and call write() again */ + } + } + else + { +#ifdef WITH_FASTCGI + nwritten = fwrite((void*)s, 1, n, stdout); + fflush(stdout); +#else +#ifdef UNDER_CE + nwritten = fwrite(s, 1, n, soap->sendfd); +#else +#ifdef WMW_RPM_IO + /* vxWorks compatible */ + if (soap->rpmreqid) + nwritten = (httpBlockPut(soap->rpmreqid, (char*)s, n) == 0) ? n : -1; + else +#endif +#ifdef WIN32 + nwritten = _write(soap->sendfd, s, (unsigned int)n); +#else + nwritten = write(soap->sendfd, s, (unsigned int)n); +#endif +#endif +#endif + if (nwritten <= 0) + { +#ifndef WITH_FASTCGI + err = soap_errno; +#else + err = EOF; +#endif + if (err && err != SOAP_EINTR && err != SOAP_EWOULDBLOCK && err != SOAP_EAGAIN) + { + soap->errnum = err; + return SOAP_EOF; + } + nwritten = 0; /* and call write() again */ + } + } + n -= nwritten; + s += nwritten; + } + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_send_raw(struct soap *soap, const char *s, size_t n) +{ + if (!s || !n) + return SOAP_OK; +#ifndef WITH_LEANER + if (soap->fpreparesend && (soap->mode & SOAP_IO) != SOAP_IO_STORE && (soap->mode & SOAP_IO_LENGTH) && (soap->error = soap->fpreparesend(soap, s, n)) != SOAP_OK) + return soap->error; + if (soap->ffiltersend && (soap->error = soap->ffiltersend(soap, &s, &n)) != SOAP_OK) + return soap->error; +#endif + if ((soap->mode & SOAP_IO_LENGTH)) + { + soap->count += n; + } + else if ((soap->mode & SOAP_IO)) + { + size_t i = sizeof(soap->buf) - soap->bufidx; + while (n >= i) + { + (void)soap_memcpy((void*)(soap->buf + soap->bufidx), i, (const void*)s, i); + soap->bufidx = sizeof(soap->buf); + if (soap_flush(soap)) + return soap->error; + s += i; + n -= i; + i = sizeof(soap->buf); + } + (void)soap_memcpy((void*)(soap->buf + soap->bufidx), sizeof(soap->buf) - soap->bufidx, (const void*)s, n); + soap->bufidx += n; + } + else + { + return soap_flush_raw(soap, s, n); + } + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_flush(struct soap *soap) +{ + size_t n = soap->bufidx; + if (!n) + return soap->error = soap->fsend(soap, SOAP_STR_EOS, 0); /* force a zero send for HTTP GET and DELETE */ +#ifndef WITH_LEANER + if ((soap->mode & SOAP_IO) == SOAP_IO_STORE) + { + int r; + if (soap->fpreparesend && (r = soap->fpreparesend(soap, soap->buf, n)) != SOAP_OK) + return soap->error = r; + } +#endif + soap->bufidx = 0; +#ifdef WITH_ZLIB + if ((soap->mode & SOAP_ENC_ZLIB) && soap->d_stream) + { + soap->d_stream->next_in = (Byte*)soap->buf; + soap->d_stream->avail_in = (unsigned int)n; +#ifdef WITH_GZIP + soap->z_crc = crc32(soap->z_crc, (Byte*)soap->buf, (unsigned int)n); +#endif + do + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Deflating %u bytes\n", soap->d_stream->avail_in)); + if (deflate(soap->d_stream, Z_NO_FLUSH) != Z_OK) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unable to deflate: %s\n", soap->d_stream->msg ? soap->d_stream->msg : SOAP_STR_EOS)); + return soap->error = SOAP_ZLIB_ERROR; + } + if (!soap->d_stream->avail_out) + { + if (soap_flush_raw(soap, soap->z_buf, sizeof(soap->buf))) + return soap->error; + soap->d_stream->next_out = (Byte*)soap->z_buf; + soap->d_stream->avail_out = sizeof(soap->buf); + } + } while (soap->d_stream->avail_in); + return SOAP_OK; + } +#endif + return soap_flush_raw(soap, soap->buf, n); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_flush_raw(struct soap *soap, const char *s, size_t n) +{ + if ((soap->mode & SOAP_IO) == SOAP_IO_STORE) + { + void *t; + t = soap_push_block(soap, NULL, n); + if (!t) + return soap->error = SOAP_EOM; + (void)soap_memcpy(t, n, (const void*)s, n); + return SOAP_OK; + } +#ifndef WITH_LEANER + if ((soap->mode & SOAP_IO) == SOAP_IO_CHUNK) + { + char t[24]; + (SOAP_SNPRINTF(t, sizeof(t), 20), &"\r\n%lX\r\n"[soap->chunksize ? 0 : 2], (unsigned long)n); + DBGMSG(SENT, t, strlen(t)); + soap->error = soap->fsend(soap, t, strlen(t)); + if (soap->error) + return soap->error; + soap->chunksize += n; + } + DBGMSG(SENT, s, n); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Send %u bytes to socket=%d/fd=%d\n", (unsigned int)n, (int)soap->socket, soap->sendfd)); +#endif + return soap->error = soap->fsend(soap, s, n); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_send(struct soap *soap, const char *s) +{ + if (!s) + return SOAP_OK; + return soap_send_raw(soap, s, strlen(s)); +} + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_send2(struct soap *soap, const char *s1, const char *s2) +{ + if (soap_send(soap, s1)) + return soap->error; + return soap_send(soap, s2); +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_send3(struct soap *soap, const char *s1, const char *s2, const char *s3) +{ + if (soap_send(soap, s1) + || soap_send(soap, s2)) + return soap->error; + return soap_send(soap, s3); +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_query_send_key(struct soap *soap, const char *s) +{ + if (!s) + return SOAP_OK; + if (!soap->body && soap_send_raw(soap, "&", 1)) + return soap->error; + soap->body = 0; + (void)soap_encode_url(s, soap->msgbuf, (int)sizeof(soap->msgbuf)); /* msgbuf length is max SOAP_TMPLEN or just 1024 bytes */ + return soap_send(soap, soap->msgbuf); +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_query_send_val(struct soap *soap, const char *s) +{ + if (!s) + return SOAP_OK; + if (soap_send_raw(soap, "=", 1)) + return soap->error; + (void)soap_encode_url(s, soap->msgbuf, (int)sizeof(soap->msgbuf)); /* msgbuf length is max SOAP_TMPLEN or just 1024 bytes */ + return soap_send(soap, soap->msgbuf); +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +char * +SOAP_FMAC2 +soap_query(struct soap *soap) +{ + return strchr(soap->path, '?'); +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +char * +SOAP_FMAC2 +soap_query_key(struct soap *soap, char **s) +{ + char *t = *s; + (void)soap; + if (t && *t) + { + *s = (char*)soap_query_decode(t, strlen(t), t + 1); + return t; + } + return *s = NULL; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +char * +SOAP_FMAC2 +soap_query_val(struct soap *soap, char **s) +{ + char *t = *s; + (void)soap; + if (t && *t == '=') + { + *s = (char*)soap_query_decode(t, strlen(t), t + 1); + return t; + } + return NULL; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +const char * +SOAP_FMAC2 +soap_query_decode(char *buf, size_t len, const char *val) +{ + const char *s; + char *t; + for (s = val; *s; s++) + if (*s != ' ' && *s != '=') + break; + if (*s == '"') + { + t = buf; + s++; + while (*s && *s != '"' && --len) + *t++ = *s++; + *t = '\0'; + do s++; + while (*s && *s != '&' && *s != '='); + } + else + { + t = buf; + while (*s && *s != '&' && *s != '=' && --len) + { + switch (*s) + { + case '+': + *t++ = ' '; + s++; + break; + case '\t': + case '\n': + case '\r': + case ' ': + s++; + break; + case '%': + *t++ = ((s[1] >= 'A' ? (s[1]&0x7) + 9 : s[1] - '0') << 4) + (s[2] >= 'A' ? (s[2]&0x7) + 9 : s[2] - '0'); + s += 3; + break; + default: + *t++ = *s++; + } + } + *t = '\0'; + } + return s; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIO +static size_t +frecv(struct soap *soap, char *s, size_t n) +{ + int r; + int retries = 100; /* max 100 retries with non-blocking sockets */ + SOAP_SOCKET sk; + soap->errnum = 0; +#if defined(__cplusplus) && !defined(WITH_COMPAT) + if (soap->is) /* recv from C++ stream */ + { + if (soap->is->good()) + return (size_t)soap->is->read(s, (std::streamsize)n).gcount(); /* downcast to std::streamsize is OK: gcount() returns how much we got in s[] */ + return 0; + } +#else + if (soap->is) /* recv from C buffer until NUL */ + { + size_t l = strlen(soap->is); + if (l > n) + l = n; + (void)soap_memcpy((void*)s, n, soap->is, l); + soap->is += l; + return l; + } +#endif + sk = soap->recvsk; + if (!soap_valid_socket(sk)) + sk = soap->socket; + if (soap_valid_socket(sk)) + { + for (;;) + { +#if defined(WITH_OPENSSL) || defined(WITH_SYSTEMSSL) + int err = 0; +#endif +#ifdef WITH_OPENSSL + if (soap->recv_timeout && !soap->ssl) /* OpenSSL: sockets are nonblocking so go ahead to read */ +#else + if (soap->recv_timeout) +#endif + { + for (;;) + { +#ifdef WITH_SELF_PIPE + r = tcp_select(soap, sk, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR | SOAP_TCP_SELECT_PIP, soap->recv_timeout); + if ((r & SOAP_TCP_SELECT_PIP)) /* abort if data is pending on pipe */ + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Connection closed by self pipe\n")); + return 0; + } +#else + r = tcp_select(soap, sk, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, soap->recv_timeout); +#endif + if (r > 0) + break; + if (!r) + return 0; + r = soap->errnum; + if (r != SOAP_EAGAIN && r != SOAP_EWOULDBLOCK) + return 0; + } + } +#ifndef WITH_LEAN + if (soap->transfer_timeout) + { + time_t now = time(NULL); + if ((soap->transfer_timeout > 0 && difftime(now, (time_t)soap->start) > (double)soap->transfer_timeout) + || (soap->transfer_timeout < 0 && difftime(now, (time_t)soap->start) > -1000000.0 * (double)soap->transfer_timeout)) + return 0; + } +#endif +#ifdef WITH_OPENSSL + if (soap->ssl) + { + r = SSL_read(soap->ssl, s, (int)n); + if (r > 0) + return (size_t)r; + err = SSL_get_error(soap->ssl, r); + if (err != SSL_ERROR_NONE && err != SSL_ERROR_WANT_READ && err != SSL_ERROR_WANT_WRITE) + return 0; + } + else if (soap->bio) + { + r = BIO_read(soap->bio, s, (int)n); + if (r > 0) + return (size_t)r; + return 0; + } + else +#endif +#ifdef WITH_GNUTLS + if (soap->session) + { + r = (int)gnutls_record_recv(soap->session, s, n); + if (r >= 0) + return (size_t)r; + } + else +#endif +#ifdef WITH_SYSTEMSSL + if (soap->ssl) + { + err = gsk_secure_socket_read(soap->ssl, s, n, &r); + if (err == GSK_OK && r > 0) + return (size_t)r; + if (err != GSK_OK && err != GSK_WOULD_BLOCK && err != GSK_WOULD_BLOCK_WRITE) + return 0; + } + else +#endif + { +#ifndef WITH_LEAN + if ((soap->omode & SOAP_IO_UDP)) + { + SOAP_SOCKLEN_T k = (SOAP_SOCKLEN_T)sizeof(soap->peer); + memset((void*)&soap->peer, 0, sizeof(soap->peer)); + r = recvfrom(sk, s, (SOAP_WINSOCKINT)n, soap->socket_flags, &soap->peer.addr, &k); /* portability note: see SOAP_SOCKLEN_T definition in stdsoap2.h, SOAP_WINSOCKINT cast is safe due to limited range of n in the engine (64K) */ + soap->peerlen = (size_t)k; +#ifdef WITH_IPV6 + soap->ip = 0; + soap->ip6[0] = 0; + soap->ip6[1] = 0; + soap->ip6[2] = 0; + soap->ip6[3] = 0; +#else + soap->ip = ntohl(soap->peer.in.sin_addr.s_addr); + soap->ip6[0] = 0; + soap->ip6[1] = 0; + soap->ip6[2] = 0xFFFF; + soap->ip6[3] = soap->ip; +#endif + } + else +#endif + r = recv(sk, s, (SOAP_WINSOCKINT)n, soap->socket_flags); /* SOAP_WINSOCKINT cast is safe due to limited range of n in the engine (64K) */ + if (r >= 0) + return (size_t)r; + r = soap_socket_errno(sk); + if (r != SOAP_EINTR && r != SOAP_EAGAIN && r != SOAP_EWOULDBLOCK) + { + soap->errnum = r; + return 0; + } + } +#if defined(WITH_OPENSSL) + if (soap->ssl && err == SSL_ERROR_WANT_WRITE) + r = tcp_select(soap, sk, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, soap->recv_timeout ? soap->recv_timeout : 5); + else +#elif defined(WITH_GNUTLS) + if (soap->session && gnutls_record_get_direction(soap->session)) + r = tcp_select(soap, sk, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, soap->recv_timeout ? soap->recv_timeout : 5); + else +#elif defined(WITH_SYSTEMSSL) + if (soap->ssl && err == GSK_WOULD_BLOCK_WRITE) + r = tcp_select(soap, sk, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, soap->recv_timeout ? soap->recv_timeout : 5); + else +#endif + r = tcp_select(soap, sk, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, soap->recv_timeout ? soap->recv_timeout : 5); + if (!r && soap->recv_timeout) + return 0; + if (r < 0) + { + r = soap->errnum; + if (r != SOAP_EAGAIN && r != SOAP_EWOULDBLOCK) + return 0; + } + if (retries-- <= 0) + return 0; + } + } +#ifdef WITH_FASTCGI + return fread(s, 1, n, stdin); +#else +#ifdef UNDER_CE + return fread(s, 1, n, soap->recvfd); +#else +#ifdef WMW_RPM_IO + if (soap->rpmreqid) + r = httpBlockRead(soap->rpmreqid, s, n); + else +#endif +#ifdef WIN32 + r = _read(soap->recvfd, s, (unsigned int)n); +#else + r = read(soap->recvfd, s, n); +#endif + if (r >= 0) + return (size_t)r; + soap->errnum = soap_errno; + return 0; +#endif +#endif +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOHTTP +static soap_wchar +soap_getchunkchar(struct soap *soap) +{ + if (soap->bufidx < soap->buflen) + return soap->buf[soap->bufidx++]; + soap->bufidx = 0; + soap->buflen = soap->chunkbuflen = soap->frecv(soap, soap->buf, sizeof(soap->buf)); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Read %u bytes from socket=%d/fd=%d\n", (unsigned int)soap->buflen, (int)soap->socket, soap->recvfd)); + DBGMSG(RECV, soap->buf, soap->buflen); + if (soap->buflen) + return soap->buf[soap->bufidx++]; + return EOF; +} +#endif + +/******************************************************************************/ + +static int +soap_isxdigit(int c) +{ + return (c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f'); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_recv_raw(struct soap *soap) +{ + size_t ret; +#if !defined(WITH_LEANER) || defined(WITH_ZLIB) + int r; +#endif +#ifdef WITH_ZLIB + if ((soap->mode & SOAP_ENC_ZLIB) && soap->d_stream) + { + if (soap->d_stream->next_out == Z_NULL) + { + soap->bufidx = soap->buflen = 0; + return EOF; + } + if (soap->d_stream->avail_in || !soap->d_stream->avail_out) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Inflating\n")); + soap->d_stream->next_out = (Byte*)soap->buf; + soap->d_stream->avail_out = sizeof(soap->buf); + r = inflate(soap->d_stream, Z_NO_FLUSH); + if (r == Z_NEED_DICT && soap->z_dict) + r = inflateSetDictionary(soap->d_stream, (const Bytef*)soap->z_dict, soap->z_dict_len); + if (r == Z_OK || r == Z_STREAM_END) + { + soap->bufidx = 0; + ret = soap->buflen = sizeof(soap->buf) - soap->d_stream->avail_out; + if (soap->zlib_in == SOAP_ZLIB_GZIP) + soap->z_crc = crc32(soap->z_crc, (Byte*)soap->buf, (unsigned int)ret); + if (r == Z_STREAM_END) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Inflated %lu->%lu bytes\n", soap->d_stream->total_in, soap->d_stream->total_out)); + soap->d_stream->next_out = Z_NULL; + } + if (ret) + { + if (soap->count + ret < soap->count) + return soap->error = SOAP_EOF; + soap->count += ret; + if (soap->recv_maxlength && soap->count > soap->recv_maxlength) + return soap->error = SOAP_EOF; + soap->z_ratio_in = (float)soap->d_stream->total_in / (float)soap->d_stream->total_out; + if (soap->count > SOAP_MAXINFLATESIZE && soap->z_ratio_in < SOAP_MINDEFLATERATIO) + { + soap->d_stream->msg = (char*)"caught SOAP_MINDEFLATERATIO explosive decompression guard (remedy: increase SOAP_MAXINFLATESIZE and/or decrease SOAP_MINDEFLATERATIO)"; + return soap->error = SOAP_ZLIB_ERROR; + } + DBGLOG(RECV, SOAP_MESSAGE(fdebug, "\n---- decompressed ----\n")); + DBGMSG(RECV, soap->buf, ret); + DBGLOG(RECV, SOAP_MESSAGE(fdebug, "\n----\n")); +#ifndef WITH_LEANER + if (soap->fpreparerecv && (r = soap->fpreparerecv(soap, soap->buf, ret)) != SOAP_OK) + return soap->error = r; +#endif + return SOAP_OK; + } + } + else if (r != Z_BUF_ERROR) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Inflate error: %s\n", soap->d_stream->msg ? soap->d_stream->msg : SOAP_STR_EOS)); + soap->d_stream->next_out = Z_NULL; + return soap->error = SOAP_ZLIB_ERROR; + } + } +zlib_again: + if ((soap->mode & SOAP_IO) == SOAP_IO_CHUNK && !soap->chunksize) + { + (void)soap_memcpy((void*)soap->buf, sizeof(soap->buf), (const void*)soap->z_buf, sizeof(soap->buf)); + soap->buflen = soap->z_buflen; + } + DBGLOG(RECV, SOAP_MESSAGE(fdebug, "\n---- compressed ----\n")); + } +#endif +#ifndef WITH_NOHTTP + if ((soap->mode & SOAP_IO) == SOAP_IO_CHUNK) /* read HTTP chunked transfer */ + { + for (;;) + { + soap_wchar c; + char *t, tmp[17]; + if (soap->chunksize) + { + soap->buflen = ret = soap->frecv(soap, soap->buf, soap->chunksize > sizeof(soap->buf) ? sizeof(soap->buf) : soap->chunksize); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Getting chunk: read %u bytes\n", (unsigned int)ret)); + DBGMSG(RECV, soap->buf, ret); + soap->bufidx = 0; + if (!ret) + { + soap->ahead = EOF; + return EOF; + } + soap->chunksize -= ret; + break; + } + if (!soap->chunkbuflen) + { + soap->chunkbuflen = ret = soap->frecv(soap, soap->buf, sizeof(soap->buf)); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Read %u bytes (chunked) from socket=%d\n", (unsigned int)ret, (int)soap->socket)); + DBGMSG(RECV, soap->buf, ret); + soap->bufidx = 0; + if (!ret) + { + soap->ahead = EOF; + return EOF; + } + } + else + { + soap->bufidx = soap->buflen; + } + soap->buflen = soap->chunkbuflen; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Getting chunk size (idx=%u len=%u)\n", (unsigned int)soap->bufidx, (unsigned int)soap->buflen)); + while (!soap_isxdigit((int)(c = soap_getchunkchar(soap)))) + { + if ((int)c == EOF) + { + soap->ahead = EOF; + return EOF; + } + } + t = tmp; + do + { + *t++ = (char)c; + } while (soap_isxdigit((int)(c = soap_getchunkchar(soap))) && (size_t)(t - tmp) < sizeof(tmp)-1); + while ((int)c != EOF && c != '\n') + c = soap_getchunkchar(soap); + if ((int)c == EOF) + { + soap->ahead = EOF; + return EOF; + } + *t = '\0'; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Chunk size = %s (hex)\n", tmp)); + soap->chunksize = (size_t)soap_strtoul(tmp, &t, 16); + if (!soap->chunksize) + { + soap->bufidx = soap->buflen = soap->chunkbuflen = 0; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "End of chunked message\n")); + ret = 0; + soap->ahead = EOF; + break; + } + soap->buflen = soap->bufidx + soap->chunksize; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Moving buf len to idx=%u len=%u (%s)\n", (unsigned int)soap->bufidx, (unsigned int)soap->buflen, tmp)); + if (soap->buflen > soap->chunkbuflen) + { + soap->buflen = soap->chunkbuflen; + soap->chunksize -= soap->buflen - soap->bufidx; + soap->chunkbuflen = 0; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Passed end of buffer for chunked HTTP (%u bytes left)\n", (unsigned int)(soap->buflen - soap->bufidx))); + } + else if (soap->chunkbuflen) + { + soap->chunksize = 0; + } + ret = soap->buflen - soap->bufidx; + if (ret) + break; + } + } + else +#endif + { + soap->bufidx = 0; + soap->buflen = ret = soap->frecv(soap, soap->buf, sizeof(soap->buf)); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Read %u bytes from socket=%d/fd=%d\n", (unsigned int)ret, (int)soap->socket, soap->recvfd)); + DBGMSG(RECV, soap->buf, ret); + } +#ifdef WITH_ZLIB + if ((soap->mode & SOAP_ENC_ZLIB)) + { + (void)soap_memcpy((void*)soap->z_buf, sizeof(soap->buf), (const void*)soap->buf, sizeof(soap->buf)); + soap->d_stream->next_in = (Byte*)(soap->z_buf + soap->bufidx); + soap->d_stream->avail_in = (unsigned int)ret; + soap->d_stream->next_out = (Byte*)soap->buf; + soap->d_stream->avail_out = sizeof(soap->buf); + r = inflate(soap->d_stream, Z_NO_FLUSH); + if (r == Z_NEED_DICT && soap->z_dict) + r = inflateSetDictionary(soap->d_stream, (const Bytef*)soap->z_dict, soap->z_dict_len); + if (r == Z_OK || r == Z_STREAM_END) + { + soap->bufidx = 0; + soap->z_buflen = soap->buflen; + soap->buflen = sizeof(soap->buf) - soap->d_stream->avail_out; + if (soap->zlib_in == SOAP_ZLIB_GZIP) + soap->z_crc = crc32(soap->z_crc, (Byte*)soap->buf, (unsigned int)soap->buflen); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Inflated %u bytes\n", (unsigned int)soap->buflen)); + if (ret && !soap->buflen && r != Z_STREAM_END) + goto zlib_again; + ret = soap->buflen; + if (r == Z_STREAM_END) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Inflated total %lu->%lu bytes\n", soap->d_stream->total_in, soap->d_stream->total_out)); + soap->d_stream->next_out = Z_NULL; + } + soap->z_ratio_in = (float)soap->d_stream->total_in / (float)soap->d_stream->total_out; + if (soap->count + ret > SOAP_MAXINFLATESIZE && soap->z_ratio_in < SOAP_MINDEFLATERATIO) + { + soap->d_stream->msg = (char*)"caught SOAP_MINDEFLATERATIO explosive decompression guard (remedy: increase SOAP_MAXINFLATESIZE and/or decrease SOAP_MINDEFLATERATIO)"; + return soap->error = SOAP_ZLIB_ERROR; + } + DBGLOG(RECV, SOAP_MESSAGE(fdebug, "\n---- decompressed ----\n")); + DBGMSG(RECV, soap->buf, ret); +#ifndef WITH_LEANER + if (soap->fpreparerecv && (r = soap->fpreparerecv(soap, soap->buf, ret)) != SOAP_OK) + return soap->error = r; +#endif + } + else + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unable to inflate: (%d) %s\n", r, soap->d_stream->msg ? soap->d_stream->msg : SOAP_STR_EOS)); + soap->d_stream->next_out = Z_NULL; + return soap->error = SOAP_ZLIB_ERROR; + } + } +#endif +#ifndef WITH_LEANER + if (soap->fpreparerecv +#ifdef WITH_ZLIB + && soap->zlib_in == SOAP_ZLIB_NONE +#endif + && (r = soap->fpreparerecv(soap, soap->buf + soap->bufidx, ret))) + return soap->error = r; +#endif + if (ret) + { + if (soap->count + ret < soap->count) + return EOF; + soap->count += ret; + if (soap->recv_maxlength && soap->count > soap->recv_maxlength) + return EOF; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Read count=" SOAP_ULONG_FORMAT " (+%lu)\n", soap->count, (unsigned long)ret)); + return SOAP_OK; + } + return EOF; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_recv(struct soap *soap) +{ +#ifndef WITH_LEANER + if ((soap->mode & SOAP_ENC_DIME)) + { + if (soap->dime.buflen) + { + char *s; + int i; + unsigned char tmp[12]; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "DIME hdr for chunked SOAP in DIME is in buffer\n")); + soap->buflen = soap->dime.buflen; + soap->dime.buflen = 0; + soap->dime.chunksize = 0; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Skip padding (%ld bytes)\n", -(long)soap->dime.size&3)); + for (i = -(long)soap->dime.size&3; i > 0; i--) + { + soap->bufidx++; + if (soap->bufidx >= soap->buflen) + if (soap_recv_raw(soap)) + return EOF; + } + if (!(soap->dime.flags & SOAP_DIME_CF)) + return SOAP_OK; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Get DIME hdr for next SOAP in DIME chunk\n")); + s = (char*)tmp; + for (i = 12; i > 0; i--) + { + *s++ = soap->buf[soap->bufidx++]; + if (soap->bufidx >= soap->buflen) + if (soap_recv_raw(soap)) + return EOF; + } + if ((tmp[0] & 0xF8) != SOAP_DIME_VERSION) + return soap->error = SOAP_DIME_MISMATCH; + soap->dime.flags = (tmp[0] & 0x7) | (tmp[1] & 0xF0); + soap->dime.size = ((size_t)tmp[8] << 24) | ((size_t)tmp[9] << 16) | ((size_t)tmp[10] << 8) | ((size_t)tmp[11]); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Get SOAP in DIME chunk (%u bytes)\n", (unsigned int)soap->dime.size)); + soap->dime.chunksize = soap->dime.size; + if (soap->buflen - soap->bufidx >= soap->dime.size) + { + if ((soap->dime.flags & SOAP_DIME_ME)) + { + soap->mode &= ~SOAP_ENC_DIME; + } + else + { + soap->dime.buflen = soap->buflen; + soap->buflen = soap->bufidx + soap->dime.chunksize; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Chunked SOAP in DIME (%u bytes buffered)\n", (unsigned int)soap->buflen)); + } + } + else + { + soap->dime.chunksize -= soap->buflen - soap->bufidx; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Chunked SOAP in DIME (%u bytes in chunk left)\n", (unsigned int)soap->dime.chunksize)); + } + return SOAP_OK; + } + if (soap->dime.chunksize) + { + if (soap_recv_raw(soap)) + return EOF; + if (soap->buflen - soap->bufidx >= soap->dime.chunksize) + { + if ((soap->dime.flags & SOAP_DIME_ME)) + { + soap->dime.chunksize = 0; + soap->mode &= ~SOAP_ENC_DIME; + } + else + { + soap->dime.buflen = soap->buflen; + soap->buflen = soap->bufidx + soap->dime.chunksize; + soap->dime.chunksize = 0; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Chunked SOAP in DIME (%u bytes buffered)\n", (unsigned int)soap->buflen)); + } + } + else + { + soap->dime.chunksize -= soap->buflen - soap->bufidx; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Chunked SOAP in DIME (%u bytes in chunk left)\n", (unsigned int)soap->dime.chunksize)); + } + return SOAP_OK; + } + } + if (soap->ffilterrecv) + { + int err; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Filter recverror = %d bufidx = %lu buflen = %lu\n", soap->recverror, (unsigned long)soap->bufidx, (unsigned long)soap->buflen)); + if (soap->recverror) + { + soap->bufidx = soap->buflen = 0; + } + else + { + soap->bufidx = soap->buflen = 0; + err = soap->ffilterrecv(soap, soap->buf, &soap->buflen, sizeof(soap->buf)); + if (err) + { + if (err == SOAP_EOF) + return SOAP_EOF; + return soap->error = err; + } + if (soap->buflen) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Filtered output continued %lu bytes\n", (unsigned long)soap->buflen)); + return SOAP_OK; + } + soap->recverror = soap_recv_raw(soap); + soap->buflen -= soap->bufidx; /* chunked may set bufidx > 0 to skip hex chunk length */ + } + while (soap->ffilterrecv) + { + err = soap->ffilterrecv(soap, soap->buf + soap->bufidx, &soap->buflen, sizeof(soap->buf) - soap->bufidx); + if (err) + { + if (err == SOAP_EOF) + return SOAP_EOF; + return soap->error = err; + } + if (soap->buflen) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Filtered output %lu bytes\n", (unsigned long)soap->buflen)); + soap->buflen += soap->bufidx; + return SOAP_OK; + } + if (soap->recverror) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Returning postponed error %d\n", soap->recverror)); + return soap->recverror; + } + soap->recverror = soap_recv_raw(soap); + soap->buflen -= soap->bufidx; /* chunked may set bufidx > 0 to skip hex chunk length */ + } + } + return soap->recverror = soap_recv_raw(soap); +#else + return soap_recv_raw(soap); +#endif +} + +/******************************************************************************/ + +SOAP_FMAC1 +soap_wchar +SOAP_FMAC2 +soap_getchar(struct soap *soap) +{ + soap_wchar c; + c = soap->ahead; + if (c) + { + if ((int)c != EOF) + soap->ahead = 0; + return c; + } + return soap_get1(soap); +} + +/******************************************************************************/ + +SOAP_FMAC1 +const struct soap_code_map* +SOAP_FMAC2 +soap_code(const struct soap_code_map *code_map, const char *str) +{ + if (code_map && str) + { + while (code_map->string) + { + if (!strcmp(str, code_map->string)) /* case sensitive */ + return code_map; + code_map++; + } + } + return NULL; +} + +/******************************************************************************/ + +SOAP_FMAC1 +LONG64 +SOAP_FMAC2 +soap_code_int(const struct soap_code_map *code_map, const char *str, LONG64 other) +{ + if (code_map) + { + while (code_map->string) + { + if (!soap_tag_cmp(str, code_map->string)) /* case insensitive */ + return code_map->code; + code_map++; + } + } + return other; +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_code_str(const struct soap_code_map *code_map, long code) +{ + if (!code_map) + return NULL; + while (code_map->code != code && code_map->string) + code_map++; + return code_map->string; +} + +/******************************************************************************/ + +SOAP_FMAC1 +LONG64 +SOAP_FMAC2 +soap_code_bits(const struct soap_code_map *code_map, const char *str) +{ + LONG64 bits = 0; + if (code_map) + { + while (str && *str) + { + const struct soap_code_map *p; + for (p = code_map; p->string; p++) + { + size_t n = strlen(p->string); + if (!strncmp(p->string, str, n) && soap_coblank((soap_wchar)str[n])) + { + bits |= p->code; + str += n; + while (*str > 0 && *str <= 32) + str++; + break; + } + } + if (!p->string) + return 0; + } + } + return bits; +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_code_list(struct soap *soap, const struct soap_code_map *code_map, long code) +{ + char *t = soap->tmpbuf; + if (code_map) + { + while (code_map->string) + { + if ((code_map->code & code)) + { + const char *s = code_map->string; + if (t != soap->tmpbuf) + *t++ = ' '; + while (*s && t < soap->tmpbuf + sizeof(soap->tmpbuf) - 1) + *t++ = *s++; + if (t == soap->tmpbuf + sizeof(soap->tmpbuf) - 1) + break; + } + code_map++; + } + } + *t = '\0'; + return soap->tmpbuf; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_binary_search_string(const char **a, int n, const char *s) +{ + int min = 0, max = n-1; + while (min <= max) + { + int mid = (min+max)/2; + int r = strcmp(s, a[mid]); + if (r < 0) + max = mid - 1; + else if (r > 0) + min = mid + 1; + else + return mid; + } + return -1; +} + +/******************************************************************************/ + +static soap_wchar +soap_char(struct soap *soap) +{ + char tmp[8]; + int i; + soap_wchar c; + char *s = tmp; + for (i = 0; i < (int)sizeof(tmp)-1; i++) + { + c = soap_get1(soap); + if (c == ';' || (int)c == EOF) + break; + *s++ = (char)c; + } + *s = '\0'; + if (*tmp == '#') + { + if (tmp[1] == 'x' || tmp[1] == 'X') + return (soap_wchar)soap_strtol(tmp + 2, NULL, 16); + return (soap_wchar)soap_strtol(tmp + 1, NULL, 10); + } + if (!strcmp(tmp, "lt")) + return '<'; + if (!strcmp(tmp, "gt")) + return '>'; + if (!strcmp(tmp, "amp")) + return '&'; + if (!strcmp(tmp, "quot")) + return '"'; + if (!strcmp(tmp, "apos")) + return '\''; +#ifndef WITH_LEAN + return (soap_wchar)soap_code_int(html_entity_codes, tmp, (LONG64)SOAP_UNKNOWN_CHAR); +#else + return SOAP_UNKNOWN_CHAR; /* use this to represent unknown code */ +#endif +} + +/******************************************************************************/ + +#ifdef WITH_LEAN +soap_wchar +soap_get0(struct soap *soap) +{ + if (soap->bufidx >= soap->buflen && soap_recv(soap)) + return EOF; + return (unsigned char)soap->buf[soap->bufidx]; +} +#endif + +/******************************************************************************/ + +#ifdef WITH_LEAN +soap_wchar +soap_get1(struct soap *soap) +{ + if (soap->bufidx >= soap->buflen && soap_recv(soap)) + return EOF; + return (unsigned char)soap->buf[soap->bufidx++]; +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +soap_wchar +SOAP_FMAC2 +soap_get(struct soap *soap) +{ + soap_wchar c; + c = soap->ahead; + if (c) + { + if ((int)c != EOF) + soap->ahead = 0; + } + else + { + c = soap_get1(soap); + } + while ((int)c != EOF) + { + if (soap->cdata) + { + if (c == ']') + { + c = soap_get1(soap); + if (c == ']') + { + c = soap_get0(soap); + if (c == '>') + { + soap->cdata = 0; + c = soap_get1(soap); + c = soap_get1(soap); + } + else + { + soap_unget(soap, ']'); + return ']'; + } + } + else + { + soap_revget1(soap); + return ']'; + } + } + else + { + return c; + } + } + switch (c) + { + case '<': + do + { + c = soap_get1(soap); + } while (soap_coblank(c)); + if (c == '!' || c == '?' || c == '%') + { + int k = 1; + if (c == '!') + { + c = soap_get1(soap); + if (c == '[') + { + do + { + c = soap_get1(soap); + } while ((int)c != EOF && c != '['); + if ((int)c == EOF) + break; + soap->cdata = 1; + c = soap_get1(soap); + continue; + } + if (c == '-' && (c = soap_get1(soap)) == '-') + { + do + { + c = soap_get1(soap); + if (c == '-' && (c = soap_get1(soap)) == '-') + break; + } while ((int)c != EOF); + } + } + else if (c == '?') + { + c = soap_getpi(soap); + } + while ((int)c != EOF) + { + if (c == '<') + { + k++; + } + else if (c == '>') + { + if (--k <= 0) + break; + } + c = soap_get1(soap); + } + if ((int)c == EOF) + break; + c = soap_get1(soap); + continue; + } + if (c == '/') + return SOAP_TT; + soap_revget1(soap); + return SOAP_LT; + case '>': + return SOAP_GT; + case '"': + return SOAP_QT; + case '\'': + return SOAP_AP; + case '&': + return soap_char(soap) | 0x80000000; + } + break; + } + return c; +} + +/******************************************************************************/ + +static soap_wchar +soap_getpi(struct soap *soap) +{ + char buf[64]; + char *s = buf; + size_t i = sizeof(buf); + soap_wchar c; + while ((int)(c = soap_getchar(soap)) != EOF && c != '?') + { + if (i > 1) + { + if (soap_coblank(c)) + c = ' '; + *s++ = (char)c; + i--; + } + } + *s = '\0'; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "XML PI \n", buf)); + if (!strncmp(buf, "xml ", 4)) + { + s = strstr(buf, " encoding="); + if (s && s[10]) + { + if (!soap_tag_cmp(s + 11, "iso-8859-1*") + || !soap_tag_cmp(s + 11, "latin1*")) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Switching to latin1 encoding\n")); + soap->mode |= SOAP_ENC_LATIN; + } + else if (!soap_tag_cmp(s + 11, "utf-8*")) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Switching to utf-8 encoding\n")); + soap->mode &= ~SOAP_ENC_LATIN; + } + } + } + if ((int)c != EOF) + c = soap_getchar(soap); + return c; +} + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_move(struct soap *soap, ULONG64 n) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Moving " SOAP_ULONG_FORMAT " bytes forward\n", n)); + for (; n; n--) + if ((int)soap_getchar(soap) == EOF) + return SOAP_EOF; + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +ULONG64 +SOAP_FMAC2 +soap_tell(struct soap *soap) +{ + return soap->count - soap->buflen + soap->bufidx - (soap->ahead != 0); +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_pututf8(struct soap *soap, unsigned long c) +{ + char tmp[24]; + if ((c < 0x7F && c > 0x1F)) + { + *tmp = (char)c; + return soap_send_raw(soap, tmp, 1); + } +#ifdef WITH_REPLACE_ILLEGAL_UTF8 + if (!(c == 0x09 || c == 0x0A || c == 0x0D || (c >= 0x80 && c <= 0xD7FF) || (c >= 0xE000 && c <= 0xFFFD) || (c >= 0x10000 && c <= 0x10FFFF))) + c = SOAP_UNKNOWN_UNICODE_CHAR; +#endif +#ifndef WITH_LEAN + if (c > 0x9F) + { + char *t = tmp; + if (c < 0x0800) + { + *t++ = (char)(0xC0 | ((c >> 6) & 0x1F)); + } + else + { + if (c < 0x010000) + { + *t++ = (char)(0xE0 | ((c >> 12) & 0x0F)); + } + else + { + if (c < 0x200000) + { + *t++ = (char)(0xF0 | ((c >> 18) & 0x07)); + } + else + { + if (c < 0x04000000) + { + *t++ = (char)(0xF8 | ((c >> 24) & 0x03)); + } + else + { + *t++ = (char)(0xFC | ((c >> 30) & 0x01)); + *t++ = (char)(0x80 | ((c >> 24) & 0x3F)); + } + *t++ = (char)(0x80 | ((c >> 18) & 0x3F)); + } + *t++ = (char)(0x80 | ((c >> 12) & 0x3F)); + } + *t++ = (char)(0x80 | ((c >> 6) & 0x3F)); + } + *t++ = (char)(0x80 | (c & 0x3F)); + *t = '\0'; + } + else +#endif + (SOAP_SNPRINTF(tmp, sizeof(tmp), 20), "&#x%lX;", c); + return soap_send(soap, tmp); +} + +/******************************************************************************/ + +SOAP_FMAC1 +soap_wchar +SOAP_FMAC2 +soap_getutf8(struct soap *soap) +{ +#ifdef WITH_REPLACE_ILLEGAL_UTF8 + soap_wchar c, c1, c2, c3; +#else + soap_wchar c, c1, c2, c3, c4; +#endif + c = soap->ahead; + if (c >= 0x80) + soap->ahead = 0; + else + c = (soap_wchar)soap_get(soap); + if (c < 0x80 || c > 0xFF || (soap->mode & SOAP_ENC_LATIN)) + return c; +#ifdef WITH_REPLACE_ILLEGAL_UTF8 + c1 = (soap_wchar)soap_get1(soap); + if (c <= 0xC1 || (c1 & 0xC0) != 0x80) + { + soap_revget1(soap); + return SOAP_UNKNOWN_UNICODE_CHAR; + } + c1 &= 0x3F; + if (c < 0xE0) + return (((c & 0x1F) << 6) | c1); + c2 = (soap_wchar)soap_get1(soap); + if ((c == 0xE0 && c1 < 0x20) || (c2 & 0xC0) != 0x80) + { + soap_revget1(soap); + return SOAP_UNKNOWN_UNICODE_CHAR; + } + c2 &= 0x3F; + if (c < 0xF0) + return (((c & 0x0F) << 12) | (c1 << 6) | c2); + c3 = (soap_wchar)soap_get1(soap); + if ((c == 0xF0 && c1 < 0x10) || (c == 0xF4 && c1 >= 0x10) || c >= 0xF5 || (c3 & 0xC0) != 0x80) + { + soap_revget1(soap); + return SOAP_UNKNOWN_UNICODE_CHAR; + } + return (((c & 0x07) << 18) | (c1 << 12) | (c2 << 6) | (c3 & 0x3F)); +#else + c1 = (soap_wchar)soap_get1(soap); + if (c < 0xC0 || (c1 & 0xC0) != 0x80) + { + soap_revget1(soap); + /* doesn't look like this is UTF-8, try continue as if ISO-8859-1 */ + return c; + } + c1 &= 0x3F; + if (c < 0xE0) + return ((soap_wchar)(c & 0x1F) << 6) | c1; + c2 = (soap_wchar)soap_get1(soap) & 0x3F; + if (c < 0xF0) + return ((soap_wchar)(c & 0x0F) << 12) | (c1 << 6) | c2; + c3 = (soap_wchar)soap_get1(soap) & 0x3F; + if (c < 0xF8) + return ((soap_wchar)(c & 0x07) << 18) | (c1 << 12) | (c2 << 6) | c3; + c4 = (soap_wchar)soap_get1(soap) & 0x3F; + if (c < 0xFC) + return ((soap_wchar)(c & 0x03) << 24) | (c1 << 18) | (c2 << 12) | (c3 << 6) | c4; + return ((soap_wchar)(c & 0x01) << 30) | (c1 << 24) | (c2 << 18) | (c3 << 12) | (c4 << 6) | (soap_wchar)(soap_get1(soap) & 0x3F); +#endif +} + +/******************************************************************************/ + +SOAP_FMAC1 +size_t +SOAP_FMAC2 +soap_utf8len(const char *s) +{ + size_t l = 0; + while (*s) + if ((*s++ & 0xC0) != 0x80) + l++; + return l; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_puthex(struct soap *soap, const unsigned char *s, int n) +{ + char d[2 * SOAP_BINARY_BUFLEN], *p = d; +#ifdef WITH_DOM + if ((soap->mode & SOAP_XML_DOM) && soap->dom) + { + soap->dom->text = soap_s2hex(soap, s, NULL, n); + if (!soap->dom->text) + return soap->error; + return SOAP_OK; + } +#endif + for (; n > 0; n--) + { + int m = *s++; + p[0] = (char)((m >> 4) + (m > 159 ? '7' : '0')); + m &= 0x0F; + p[1] = (char)(m + (m > 9 ? '7' : '0')); + p += 2; + if (p - d == sizeof(d)) + { + if (soap_send_raw(soap, d, sizeof(d))) + return soap->error; + p = d; + } + } + if (p != d && soap_send_raw(soap, d, p - d)) + return soap->error; + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +unsigned char* +SOAP_FMAC2 +soap_gethex(struct soap *soap, int *n) +{ + size_t l = 0; +#ifdef WITH_DOM + if ((soap->mode & SOAP_XML_DOM) && soap->dom) + { + soap->dom->text = soap_string_in(soap, 0, -1, -1, NULL); + return (unsigned char*)soap_hex2s(soap, soap->dom->text, NULL, 0, n); + } +#endif +#ifdef WITH_FAST + soap->labidx = 0; + for (;;) + { + char *s; + size_t i, k; + if (soap_append_lab(soap, NULL, 0)) + return NULL; + s = soap->labbuf + soap->labidx; + k = soap->lablen - soap->labidx; + soap->labidx = soap->lablen; + for (i = 0; i < k; i++) + { + char d1, d2; + soap_wchar c; + c = soap_get(soap); + if (soap_isxdigit(c)) + { + d1 = (char)c; + c = soap_get(soap); + if (soap_isxdigit(c)) + { + d2 = (char)c; + } + else + { + soap->error = SOAP_TYPE; + return NULL; + } + } + else + { + unsigned char *p = NULL; + l = soap->lablen + i - k; + soap_unget(soap, c); + if (n) + *n = (int)l; + if (soap->maxlength > 0 && l > (size_t)soap->maxlength) + { + soap->error = SOAP_LENGTH; + } + else + { + p = (unsigned char*)soap_malloc(soap, l); + if (p) + (void)soap_memcpy((void*)p, l, (const void*)soap->labbuf, l); + } + return p; + } + *s++ = (char)(((d1 >= 'A' ? (d1 & 0x7) + 9 : d1 - '0') << 4) + (d2 >= 'A' ? (d2 & 0x7) + 9 : d2 - '0')); + } + l = soap->lablen; + if (soap->maxlength > 0 && l > (size_t)soap->maxlength) + { + soap->error = SOAP_LENGTH; + return NULL; + } + } +#else + if (soap_alloc_block(soap) == NULL) + return NULL; + for (;;) + { + int i; + char *s = (char*)soap_push_block(soap, NULL, SOAP_BLKLEN); + if (!s) + { + soap_end_block(soap, NULL); + return NULL; + } + for (i = 0; i < SOAP_BLKLEN; i++) + { + char d1, d2; + soap_wchar c = soap_get(soap); + if (soap_isxdigit(c)) + { + d1 = (char)c; + c = soap_get(soap); + if (soap_isxdigit(c)) + d2 = (char)c; + else + { + soap_end_block(soap, NULL); + soap->error = SOAP_TYPE; + return NULL; + } + } + else + { + unsigned char *p; + soap_unget(soap, c); + if (soap->maxlength > 0 && l > (size_t)soap->maxlength) + { + soap->error = SOAP_LENGTH; + soap_end_block(soap, NULL); + return NULL; + } + if (n) + *n = (int)soap_size_block(soap, NULL, i); + p = (unsigned char*)soap_save_block(soap, NULL, NULL, 0); + return p; + } + *s++ = ((d1 >= 'A' ? (d1 & 0x7) + 9 : d1 - '0') << 4) + (d2 >= 'A' ? (d2 & 0x7) + 9 : d2 - '0'); + l++; + } + if (soap->maxlength > 0 && l > (size_t)soap->maxlength) + { + soap->error = SOAP_LENGTH; + soap_end_block(soap, NULL); + return NULL; + } + } +#endif +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_putbase64(struct soap *soap, const unsigned char *s, int n) +{ + char d[4 * SOAP_BINARY_BUFLEN], *p = d; + if (!s) + return SOAP_OK; +#ifdef WITH_DOM + if ((soap->mode & SOAP_XML_DOM) && soap->dom) + { + soap->dom->text = soap_s2base64(soap, s, NULL, n); + if (!soap->dom->text) + return soap->error; + return SOAP_OK; + } +#endif + for (; n > 2; n -= 3, s += 3) + { + p[0] = soap_base64o[(s[0] & 0xFC) >> 2]; + p[1] = soap_base64o[((s[0] & 0x03) << 4) | ((s[1] & 0xF0) >> 4)]; + p[2] = soap_base64o[((s[1] & 0x0F) << 2) | ((s[2] & 0xC0) >> 6)]; + p[3] = soap_base64o[s[2] & 0x3F]; + p += 4; + if (p - d == sizeof(d)) + { + if (soap_send_raw(soap, d, sizeof(d))) + return soap->error; + p = d; + } + } + if (n == 2) + { + p[0] = soap_base64o[(s[0] & 0xFC) >> 2]; + p[1] = soap_base64o[((s[0] & 0x03) << 4) | ((s[1] & 0xF0) >> 4)]; + p[2] = soap_base64o[(s[1] & 0x0F) << 2]; + p[3] = '='; + p += 4; + } + else if (n == 1) + { + p[0] = soap_base64o[(s[0] & 0xFC) >> 2]; + p[1] = soap_base64o[(s[0] & 0x03) << 4]; + p[2] = '='; + p[3] = '='; + p += 4; + } + if (p != d && soap_send_raw(soap, d, p - d)) + return soap->error; + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +unsigned char* +SOAP_FMAC2 +soap_getbase64(struct soap *soap, int *n, int malloc_flag) +{ + size_t l = 0; + (void)malloc_flag; +#ifdef WITH_DOM + if ((soap->mode & SOAP_XML_DOM) && soap->dom) + { + soap->dom->text = soap_string_in(soap, 0, -1, -1, NULL); + return (unsigned char*)soap_base642s(soap, soap->dom->text, NULL, 0, n); + } +#endif +#ifdef WITH_FAST + soap->labidx = 0; + for (;;) + { + size_t i, k; + char *s; + if (soap_append_lab(soap, NULL, 2)) + return NULL; + s = soap->labbuf + soap->labidx; + k = soap->lablen - soap->labidx; + soap->labidx = 3 * (soap->lablen / 3); + if (k > 2) + { + for (i = 0; i < k - 2; i += 3) + { + unsigned long m = 0; + int j = 0; + do + { + soap_wchar c = soap_get(soap); + if (c < SOAP_AP) + c &= 0x7FFFFFFF; + if (c == '=' || c < 0) + { + unsigned char *p = NULL; + switch (j) + { + case 2: + *s++ = (char)((m >> 4) & 0xFF); + i++; + break; + case 3: + *s++ = (char)((m >> 10) & 0xFF); + *s++ = (char)((m >> 2) & 0xFF); + i += 2; + } + l = soap->lablen + i - k; + if (n) + *n = (int)l; + if (soap->maxlength > 0 && l > (size_t)soap->maxlength) + soap->error = SOAP_LENGTH; + else + { + p = (unsigned char*)soap_malloc(soap, l); + if (p) + (void)soap_memcpy((void*)p, l, (const void*)soap->labbuf, l); + } + if (c >= 0) + { + while ((int)((c = soap_get(soap)) != EOF) && c != SOAP_LT && c != SOAP_TT) + continue; + } + soap_unget(soap, c); + return p; + } + c -= '+'; + if (c >= 0 && c <= 79) + { + int b = soap_base64i[c]; + if (b >= 64) + { + soap->error = SOAP_TYPE; + return NULL; + } + m = (m << 6) + b; + j++; + } + else if (!soap_coblank(c + '+')) + { + soap->error = SOAP_TYPE; + return NULL; + } + } while (j < 4); + *s++ = (char)((m >> 16) & 0xFF); + *s++ = (char)((m >> 8) & 0xFF); + *s++ = (char)(m & 0xFF); + } + l = soap->lablen; + if (soap->maxlength > 0 && l > (size_t)soap->maxlength) + { + soap->error = SOAP_LENGTH; + return NULL; + } + } + } +#else + if (soap_alloc_block(soap) == NULL) + return NULL; + for (;;) + { + int i; + char *s = (char*)soap_push_block(soap, NULL, 3 * SOAP_BLKLEN); /* must be multiple of 3 */ + if (!s) + { + soap_end_block(soap, NULL); + return NULL; + } + for (i = 0; i < SOAP_BLKLEN; i++) + { + unsigned long m = 0; + int j = 0; + do + { + soap_wchar c = soap_get(soap); + if (c < SOAP_AP) + c &= 0x7FFFFFFF; + if (c == '=' || c < 0) + { + unsigned char *p; + i *= 3; + switch (j) + { + case 2: + *s++ = (char)((m >> 4) & 0xFF); + i++; + l++; + break; + case 3: + *s++ = (char)((m >> 10) & 0xFF); + *s++ = (char)((m >> 2) & 0xFF); + l += 2; + i += 2; + } + if (n) + *n = (int)soap_size_block(soap, NULL, i); + if (soap->maxlength > 0 && l > (size_t)soap->maxlength) + { + soap->error = SOAP_LENGTH; + soap_end_block(soap, NULL); + return NULL; + } + p = (unsigned char*)soap_save_block(soap, NULL, NULL, 0); + if (c >= 0) + { + while ((int)((c = soap_get(soap)) != EOF) && c != SOAP_LT && c != SOAP_TT) + continue; + } + soap_unget(soap, c); + return p; + } + c -= '+'; + if (c >= 0 && c <= 79) + { + int b = soap_base64i[c]; + if (b >= 64) + { + soap->error = SOAP_TYPE; + return NULL; + } + m = (m << 6) + b; + j++; + } + else if (!soap_coblank(c + '+')) + { + soap->error = SOAP_TYPE; + return NULL; + } + } while (j < 4); + *s++ = (char)((m >> 16) & 0xFF); + *s++ = (char)((m >> 8) & 0xFF); + *s++ = (char)(m & 0xFF); + l += 3; + } + if (soap->maxlength > 0 && l > (size_t)soap->maxlength) + { + soap->error = SOAP_LENGTH; + soap_end_block(soap, NULL); + return NULL; + } + } +#endif +} + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_xop_forward(struct soap *soap, unsigned char **ptr, int *size, char **id, char **type, char **options) +{ + /* Check MTOM xop:Include element (within hex/base64Binary) */ + /* TODO: this code to be obsoleted with new import/xop.h conventions */ + short body = soap->body; /* should save type too? */ + if (!soap_peek_element(soap)) + { + if (!soap_element_begin_in(soap, ":Include", 0, NULL)) + { + if (soap_attachment_forward(soap, ptr, size, id, type, options) + || (soap->body && soap_element_end_in(soap, ":Include"))) + return soap->error; + } + else if (soap->error == SOAP_TAG_MISMATCH) + soap_retry(soap); + else + return soap->error; + } + soap->body = body; + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_attachment_forward(struct soap *soap, unsigned char **ptr, int *size, char **id, char **type, char **options) +{ + struct soap_xlist *xp; + *ptr = NULL; + *size = 0; + *id = NULL; + *type = NULL; + *options = NULL; + if (!*soap->href) + return SOAP_OK; + *id = soap_strdup(soap, soap->href); + xp = (struct soap_xlist*)SOAP_MALLOC(soap, sizeof(struct soap_xlist)); + if (!xp) + return soap->error = SOAP_EOM; + xp->next = soap->xlist; + xp->ptr = ptr; + xp->size = size; + xp->id = *id; + xp->type = type; + xp->options = options; + soap->xlist = xp; + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +void * +SOAP_FMAC2 +soap_memdup(struct soap *soap, const void *s, size_t n) +{ + void *t = NULL; + if (s) + { + t = soap_malloc(soap, n); + if (t) + (void)soap_memcpy(t, n, s, n); + } + return t; +} + +/******************************************************************************/ + +SOAP_FMAC1 +char * +SOAP_FMAC2 +soap_strdup(struct soap *soap, const char *s) +{ + char *t = NULL; + if (s) + { + size_t n = strlen(s) + 1; + if (n > 0) + { + t = (char*)soap_malloc(soap, n); + if (t) + { + (void)soap_memcpy((void*)t, n, (const void*)s, n); + t[n - 1] = '\0'; + } + } + } + return t; +} + +/******************************************************************************/ + +SOAP_FMAC1 +wchar_t * +SOAP_FMAC2 +soap_wstrdup(struct soap *soap, const wchar_t *s) +{ + wchar_t *t = NULL; + if (s) + { + size_t n = 0, m; + while (s[n]) + n++; + n++; + m = sizeof(wchar_t) * n; + if (n > 0) + { + t = (wchar_t*)soap_malloc(soap, m); + if (t) + { + (void)soap_memcpy((void*)t, m, (const void*)s, m); + t[n - 1] = L'\0'; + } + } + } + return t; +} + +/******************************************************************************/ + +SOAP_FMAC1 +char * +SOAP_FMAC2 +soap_strtrim(struct soap *soap, char *s) +{ + (void)soap; + if (s) + { + char *t; + while ((*s >= 9 && *s <= 13) || *s == 32) + s++; + t = s; + while (*t) + t++; + while (--t > s && ((*t >= 9 && *t <= 13) || *t == 32)) + continue; + t[1] = '\0'; + } + return s; +} + +/******************************************************************************/ + +SOAP_FMAC1 +wchar_t * +SOAP_FMAC2 +soap_wstrtrim(struct soap *soap, wchar_t *s) +{ + (void)soap; + if (s) + { + wchar_t *t; + while ((*s >= 9 && *s <= 13) || *s == 32) + s++; + t = s; + while (*t) + t++; + while (--t > s && ((*t >= 9 && *t <= 13) || *t == 32)) + continue; + t[1] = L'\0'; + } + return s; +} + +/******************************************************************************/ + +SOAP_FMAC1 +struct soap_blist* +SOAP_FMAC2 +soap_alloc_block(struct soap *soap) +{ + struct soap_blist *p; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "New block sequence (prev=%p)\n", (void*)soap->blist)); + p = (struct soap_blist*)SOAP_MALLOC(soap, sizeof(struct soap_blist)); + if (!p) + { + soap->error = SOAP_EOM; + return NULL; + } + p->next = soap->blist; + p->head = NULL; + p->size = 0; + p->item = 0; + soap->blist = p; + return p; +} + +/******************************************************************************/ + +SOAP_FMAC1 +void* +SOAP_FMAC2 +soap_push_block(struct soap *soap, struct soap_blist *b, size_t n) +{ + struct soap_bhead *p; + if (!b) + b = soap->blist; + if (!b + || b->size + n < b->size + || sizeof(struct soap_bhead) + n < n + || (SOAP_MAXALLOCSIZE > 0 && sizeof(struct soap_bhead) + n > SOAP_MAXALLOCSIZE)) + { + soap->error = SOAP_EOM; + return NULL; + } + p = (struct soap_bhead*)SOAP_MALLOC(soap, sizeof(struct soap_bhead) + n); + if (!p) + { + soap->error = SOAP_EOM; + return NULL; + } + p->next = b->head; + b->head = p; + p->size = n; + b->size += n; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Push block %p of %u bytes on %lu previous blocks (%lu bytes total)\n", (void*)p, (unsigned int)n, (unsigned long)b->item, (unsigned long)b->size)); + b->item++; + return (void*)(p + 1); /* skip block header and point to n allocated bytes */ +} + +/******************************************************************************/ + +SOAP_FMAC1 +void* +SOAP_FMAC2 +soap_push_block_max(struct soap *soap, struct soap_blist *b, size_t n) +{ + if (b && b->item >= soap->maxoccurs) /* restrict block array length */ + { + soap->error = SOAP_OCCURS; + return NULL; + } + return soap_push_block(soap, b, n); +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_pop_block(struct soap *soap, struct soap_blist *b) +{ + struct soap_bhead *p; + if (!b) + b = soap->blist; + if (!b || !b->head) + return; + p = b->head; + b->size -= p->size; + b->head = p->next; + b->item--; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Pop block %p (%lu items of %lu bytes total)\n", (void*)p, (unsigned long)b->item, (unsigned long)b->size)); + SOAP_FREE(soap, p); +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_update_pointers(struct soap *soap, const char *dst, const char *src, size_t len) +{ + const void *start = src, *end = src + len; +#ifndef WITH_LEANER + struct soap_xlist *xp; +#endif +#ifndef WITH_NOIDREF + if ((soap->version && !(soap->imode & SOAP_XML_TREE)) || (soap->mode & SOAP_XML_GRAPH)) + { + int i; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Update pointers %p (%lu bytes) -> %p\n", (void*)src, (unsigned long)len, (void*)dst)); + for (i = 0; i < SOAP_IDHASH; i++) + { + struct soap_ilist *ip; + for (ip = soap->iht[i]; ip; ip = ip->next) + { + struct soap_flist *fp; + void *p, **q; + if (ip->shaky) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Update shaky id='%s'\n", ip->id)); + if (ip->ptr && ip->ptr >= start && ip->ptr < end) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Update ptr %p -> %p\n", ip->ptr, (void*)((const char*)ip->ptr + (dst-src)))); + ip->ptr = (void*)((const char*)ip->ptr + (dst-src)); + } + for (q = &ip->link; q; q = (void**)p) + { + p = *q; + if (p && p >= start && p < end) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Link update id='%s' %p -> %p\n", ip->id, p, (void*)((const char*)p + (dst-src)))); + *q = (void*)((const char*)p + (dst-src)); + } + } + for (q = &ip->copy; q; q = (void**)p) + { + p = *q; + if (p && p >= start && p < end) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy chain update id='%s' %p -> %p\n", ip->id, p, (void*)((const char*)p + (dst-src)))); + *q = (void*)((const char*)p + (dst-src)); + } + } + for (fp = ip->flist; fp; fp = fp->next) + { + if (fp->ptr >= start && fp->ptr < end) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy list update id='%s' target type=%d %p -> %p\n", ip->id, fp->type, fp->ptr, (void*)((char*)fp->ptr + (dst-src)))); + fp->ptr = (void*)((const char*)fp->ptr + (dst-src)); + } + } + if (ip->smart && ip->smart >= start && ip->smart < end) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Smart shared pointer update %p -> %p\n", ip->smart, (void*)((const char*)ip->smart + (dst-src)))); + ip->smart = (void*)((const char*)ip->smart + (dst-src)); + } + } + } + } + } +#else + (void)soap; (void)start; (void)end; (void)dst; (void)src; +#endif +#ifndef WITH_LEANER + for (xp = soap->xlist; xp; xp = xp->next) + { + if (xp->ptr && (void*)xp->ptr >= start && (void*)xp->ptr < end) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Update attachment id='%s' %p -> %p\n", xp->id ? xp->id : SOAP_STR_EOS, (void*)xp->ptr, (void*)((char*)xp->ptr + (dst-src)))); + xp->ptr = (unsigned char**)((char*)xp->ptr + (dst-src)); + xp->size = (int*)((char*)xp->size + (dst-src)); + xp->type = (char**)((char*)xp->type + (dst-src)); + xp->options = (char**)((char*)xp->options + (dst-src)); + } + } +#endif +} + +/******************************************************************************/ + +#ifndef WITH_NOIDREF +static int +soap_has_copies(struct soap *soap, const char *start, const char *end) +{ + int i; + struct soap_ilist *ip = NULL; + struct soap_flist *fp = NULL; + const char *p; + for (i = 0; i < SOAP_IDHASH; i++) + { + for (ip = soap->iht[i]; ip; ip = ip->next) + { + for (p = (const char*)ip->copy; p; p = *(const char**)p) + if (p >= start && p < end) + return SOAP_ERR; + for (fp = ip->flist; fp; fp = fp->next) + if (fp->type == ip->type && (const char*)fp->ptr >= start && (const char*)fp->ptr < end) + return SOAP_ERR; + } + } + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIDREF +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_resolve(struct soap *soap) +{ + int i; + short flag; + const char *id; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Resolving forwarded refs\n")); + for (i = 0; i < SOAP_IDHASH; i++) + { + struct soap_ilist *ip; + for (ip = soap->iht[i]; ip; ip = ip->next) + { + if (ip->ptr) + { + void **q; + struct soap_flist *fp, **fpp = &ip->flist; + if (ip->spine) + ip->spine[0] = ip->ptr; + q = (void**)ip->link; + ip->link = NULL; + DBGLOG(TEST, if (q) SOAP_MESSAGE(fdebug, "Traversing link chain to resolve id='%s' type=%d\n", ip->id, ip->type)); + while (q) + { + void *p = *q; + *q = ip->ptr; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "... link %p -> %p\n", (void*)q, ip->ptr)); + q = (void**)p; + } + while ((fp = *fpp)) + { + if (fp->level > 0 && fp->finsert) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "... insert type=%d link %p -> %p\n", fp->type, fp->ptr, ip->ptr)); + if (ip->spine && fp->level <= SOAP_MAXPTRS) + fp->finsert(soap, ip->type, fp->type, fp->ptr, fp->index, &ip->spine[fp->level - 1], &ip->smart); + else if (fp->level == 1) + fp->finsert(soap, ip->type, fp->type, fp->ptr, fp->index, &ip->ptr, &ip->smart); + else if (fp->level <= SOAP_MAXPTRS) + { + int i; + ip->spine = (void**)soap_malloc(soap, SOAP_MAXPTRS * sizeof(void*)); + if (!ip->spine) + return soap->error = SOAP_EOM; + ip->spine[0] = ip->ptr; + for (i = 1; i < SOAP_MAXPTRS; i++) + ip->spine[i] = &ip->spine[i - 1]; + fp->finsert(soap, ip->type, fp->type, fp->ptr, fp->index, &ip->spine[fp->level - 1], &ip->smart); + } + *fpp = fp->next; + SOAP_FREE(soap, fp); + } + else + fpp = &fp->next; + } + } + else if (*ip->id == '#') + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Missing id='%s'\n", ip->id)); + soap_strcpy(soap->id, sizeof(soap->id), ip->id + 1); + return soap->error = SOAP_MISSING_ID; + } + } + } + do + { + flag = 0; + id = NULL; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Resolution phase\n")); + for (i = 0; i < SOAP_IDHASH; i++) + { + struct soap_ilist *ip; + for (ip = soap->iht[i]; ip; ip = ip->next) + { + if (ip->copy || ip->flist) + { + if (ip->ptr && !soap_has_copies(soap, (const char*)ip->ptr, (const char*)ip->ptr + ip->size)) + { + struct soap_flist *fp; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Resolving id='%s' type=%d ptr=%p size=%lu ...\n", ip->id, ip->type, ip->ptr, (unsigned long)ip->size)); + if (ip->copy) + { + void *p, **q = (void**)ip->copy; + DBGLOG(TEST, if (q) SOAP_MESSAGE(fdebug, "Traversing copy chain to resolve id='%s'\n", ip->id)); + ip->copy = NULL; + do + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "... copy %p -> %p (%u bytes)\n", ip->ptr, (void*)q, (unsigned int)ip->size)); + p = *q; + (void)soap_memcpy((void*)q, ip->size, (const void*)ip->ptr, ip->size); + q = (void**)p; + } while (q); + flag = 1; + } + while ((fp = ip->flist)) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Resolving forwarded data type=%d target type=%d location=%p level=%u id='%s'\n", ip->type, fp->type, ip->ptr, fp->level, ip->id)); + if (fp->level == 0) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "... copy %p -> %p (%lu bytes)\n", ip->ptr, fp->ptr, (unsigned long)ip->size)); + if (fp->finsert) + fp->finsert(soap, ip->type, fp->type, fp->ptr, fp->index, ip->ptr, &ip->smart); + else + (void)soap_memcpy((void*)fp->ptr, ip->size, (const void*)ip->ptr, ip->size); + } + ip->flist = fp->next; + SOAP_FREE(soap, fp); + flag = 1; + } + } + else if (*ip->id == '#') + id = ip->id; + } + } + } + } while (flag); + if (id) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Resolution error: forwarded data for id='%s' could not be propagated, please report this problem to the gSOAP developers\n", id)); + return soap_id_nullify(soap, id); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Resolution done\n")); + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +size_t +SOAP_FMAC2 +soap_size_block(struct soap *soap, struct soap_blist *b, size_t n) +{ + if (!b) + b = soap->blist; + if (b->head) + { + b->size -= b->head->size - n; + b->head->size = n; + } + return b->size; +} + +/******************************************************************************/ + +SOAP_FMAC1 +char* +SOAP_FMAC2 +soap_first_block(struct soap *soap, struct soap_blist *b) +{ + struct soap_bhead *p, *q, *r; + if (!b) + b = soap->blist; + p = b->head; + if (!p) + return NULL; + r = NULL; + do + { + q = p->next; + p->next = r; + r = p; + p = q; + } while (p); + b->head = r; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "First block %p\n", (void*)(r + 1))); + return (char*)(r + 1); +} + +/******************************************************************************/ + +SOAP_FMAC1 +char* +SOAP_FMAC2 +soap_next_block(struct soap *soap, struct soap_blist *b) +{ + struct soap_bhead *p; + if (!b) + b = soap->blist; + p = b->head; + if (p) + { + b->head = p->next; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Next block %p, deleting current block\n", (void*)(b->head ? b->head + 1 : NULL))); + SOAP_FREE(soap, p); + if (b->head) + return (char*)(b->head + 1); + } + return NULL; +} + +/******************************************************************************/ + +SOAP_FMAC1 +size_t +SOAP_FMAC2 +soap_block_size(struct soap *soap, struct soap_blist *b) +{ + if (!b) + b = soap->blist; + return b->head->size; +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_end_block(struct soap *soap, struct soap_blist *b) +{ + struct soap_bhead *p, *q; + if (!b) + b = soap->blist; + if (b) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "End of block sequence, free all remaining blocks\n")); + for (p = b->head; p; p = q) + { + q = p->next; + SOAP_FREE(soap, p); + } + if (soap->blist == b) + soap->blist = b->next; + else + { + struct soap_blist *bp; + for (bp = soap->blist; bp; bp = bp->next) + { + if (bp->next == b) + { + bp->next = b->next; + break; + } + } + } + SOAP_FREE(soap, b); + } + DBGLOG(TEST, if (soap->blist) SOAP_MESSAGE(fdebug, "Restored previous block sequence\n")); +#ifndef WITH_NOIDREF + if (!soap->blist && ((soap->version && !(soap->imode & SOAP_XML_TREE)) || (soap->mode & SOAP_XML_GRAPH))) + { + int i; + struct soap_ilist *ip = NULL; + for (i = 0; i < SOAP_IDHASH; i++) + for (ip = soap->iht[i]; ip; ip = ip->next) + ip->shaky = 0; + } +#endif +} + +/******************************************************************************/ + +SOAP_FMAC1 +char* +SOAP_FMAC2 +soap_save_block(struct soap *soap, struct soap_blist *b, char *p, int flag) +{ + size_t n; + char *q, *s; + if (!b) + b = soap->blist; + if (b->size) + { + if (!p) + p = (char*)soap_malloc(soap, b->size); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Save all %lu blocks in contiguous memory space of %u bytes (%p->%p)\n", (unsigned long)b->item, (unsigned int)b->size, (void*)b->head, (void*)p)); + if (p) + { + s = p; + for (q = soap_first_block(soap, b); q; q = soap_next_block(soap, b)) + { + n = soap_block_size(soap, b); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copy %u bytes from %p to %p\n", (unsigned int)n, (void*)q, (void*)s)); + if (flag) + soap_update_pointers(soap, s, q, n); + (void)soap_memcpy((void*)s, n, (const void*)q, n); + s += n; + } + } + else + soap->error = SOAP_EOM; + } + soap_end_block(soap, b); + return p; +} + +/******************************************************************************/ + +SOAP_FMAC1 +char * +SOAP_FMAC2 +soap_putsizesoffsets(struct soap *soap, const char *type, const int *size, const int *offset, int dim) +{ + int i; + const char *t = ",%d"; + if (!type) + return NULL; + if (soap->version == 2) + t = " %d"; + if (soap->version != 2 && offset) + { + (SOAP_SNPRINTF(soap->type, sizeof(soap->type) - 1, strlen(type) + 20), "%s[%d", type, size[0] + offset[0]); + for (i = 1; i < dim; i++) + { + size_t l = strlen(soap->type); + (SOAP_SNPRINTF(soap->type + l, sizeof(soap->type) - l - 1, 20), t, size[i] + offset[i]); + } + } + else + { + (SOAP_SNPRINTF(soap->type, sizeof(soap->type) - 1, strlen(type) + 20), "%s[%d", type, size[0]); + for (i = 1; i < dim; i++) + { + size_t l = strlen(soap->type); + (SOAP_SNPRINTF(soap->type + l, sizeof(soap->type) - l - 1, 20), t, size[i]); + } + } + soap_strcat(soap->type, sizeof(soap->type), "]"); + return soap->type; +} + +/******************************************************************************/ + +SOAP_FMAC1 +char * +SOAP_FMAC2 +soap_putoffsets(struct soap *soap, const int *offset, int dim) +{ + int i; + soap->arrayOffset[0] = '\0'; + if (soap->version == 1) + { + (SOAP_SNPRINTF(soap->arrayOffset, sizeof(soap->arrayOffset) - 1, 20), "[%d", offset[0]); + for (i = 1; i < dim; i++) + { + size_t l = strlen(soap->arrayOffset); + (SOAP_SNPRINTF(soap->arrayOffset + l, sizeof(soap->arrayOffset) - l - 1, 20), ",%d", offset[i]); + } + soap_strcat(soap->arrayOffset, sizeof(soap->arrayOffset), "]"); + } + return soap->arrayOffset; +} + +/******************************************************************************/ + +SOAP_FMAC1 +size_t +SOAP_FMAC2 +soap_size(const int *size, int dim) +{ + int i; + size_t n = 0; + if (size[0] <= 0) + return 0; + n = (size_t)size[0]; + for (i = 1; i < dim; i++) + { + if (size[i] <= 0) + return 0; + n *= (size_t)size[i]; + } + return (size_t)n; +} + +/******************************************************************************/ + +SOAP_FMAC1 +size_t +SOAP_FMAC2 +soap_getsizes(const char *attr, int *size, int dim) +{ + size_t i, k, n; + if (!*attr) + return 0; + i = strlen(attr); + n = 1; + do + { + for (; i > 0; i--) + if (attr[i - 1] == '[' || attr[i - 1] == ',' || attr[i - 1] == ' ') + break; + n *= k = (size_t)soap_strtoul(attr + i, NULL, 10); + size[--dim] = (int)k; + if (n > SOAP_MAXARRAYSIZE) + return 0; + } while (dim > 0 && --i > 0 && attr[i] != '['); + return n; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_getoffsets(const char *attr, const int *size, int *offset, int dim) +{ + int i, j = 0; + if (offset) + { + for (i = 0; i < dim && attr && *attr; i++) + { + attr++; + j *= size[i]; + j += offset[i] = (int)soap_strtol(attr, NULL, 10); + attr = strchr(attr, ','); + } + } + else + { + for (i = 0; i < dim && attr && *attr; i++) + { + attr++; + j *= size[i]; + j += (int)soap_strtol(attr, NULL, 10); + attr = strchr(attr, ','); + } + } + return j; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_getposition(const char *attr, int *pos) +{ + int i, n; + if (!*attr) + return -1; + n = 0; + i = 1; + do + { + pos[n++] = (int)soap_strtol(attr + i, NULL, 10); + while (attr[i] && attr[i] != ',' && attr[i] != ']') + i++; + if (attr[i] == ',') + i++; + } while (n < SOAP_MAXDIMS && attr[i] && attr[i] != ']'); + return n; +} + +/******************************************************************************/ + +SOAP_FMAC1 +struct soap_nlist * +SOAP_FMAC2 +soap_push_namespace(struct soap *soap, const char *id, const char *ns) +{ + struct soap_nlist *np = NULL; + struct Namespace *p; + short i = -1; + size_t n, k; + n = strlen(id); + k = strlen(ns) + 1; + p = soap->local_namespaces; + if (p) + { + for (i = 0; p->id; p++, i++) + { + if (p->ns && !strcmp(ns, p->ns)) + break; + if (p->out) + { + if (!strcmp(ns, p->out)) + break; + } + else if (p->in) + { + if (!soap_tag_cmp(ns, p->in)) + { + if (SOAP_MAXALLOCSIZE <= 0 || k <= SOAP_MAXALLOCSIZE) + p->out = (char*)SOAP_MALLOC(soap, k); + if (p->out) + soap_strcpy(p->out, k, ns); + break; + } + } + } + if (!p->id) + i = -1; + } + if (i >= 0) + k = 0; + if (sizeof(struct soap_nlist) + n + k > n && (SOAP_MAXALLOCSIZE <= 0 || sizeof(struct soap_nlist) + n + k <= SOAP_MAXALLOCSIZE)) + np = (struct soap_nlist*)SOAP_MALLOC(soap, sizeof(struct soap_nlist) + n + k); + if (!np) + { + soap->error = SOAP_EOM; + return NULL; + } + np->next = soap->nlist; + soap->nlist = np; + np->level = soap->level; + np->index = i; + soap_strcpy((char*)np->id, n + 1, id); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Push namespace binding (level=%u) '%s'='%s'\n", soap->level, id, ns)); + if (i < 0) + { + np->ns = np->id + n + 1; + soap_strcpy((char*)np->ns, k, ns); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Push NOT OK: no match found for '%s' in namespace mapping table (added to stack anyway)\n", ns)); + } + else + { + np->ns = NULL; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Push OK ('%s' matches '%s' in namespace table)\n", id, p->id)); + } + return np; +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_pop_namespace(struct soap *soap) +{ + struct soap_nlist *np, *nq; + for (np = soap->nlist; np && np->level >= soap->level; np = nq) + { + nq = np->next; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Pop namespace binding (level=%u) '%s' level=%u\n", soap->level, np->id, np->level)); + SOAP_FREE(soap, np); + } + soap->nlist = np; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_match_namespace(struct soap *soap, const char *id1, const char *id2, size_t n1, size_t n2) +{ + struct soap_nlist *np = soap->nlist; + const char *s; + while (np && (strncmp(np->id, id1, n1) || np->id[n1])) + np = np->next; + if (np) + { + if (!(soap->mode & SOAP_XML_IGNORENS) && (n2 > 0 || !np->ns || *np->ns)) + { + if (np->index < 0 + || ((s = soap->local_namespaces[np->index].id) && (strncmp(s, id2, n2) || (s[n2] && s[n2] != '_')))) + return SOAP_NAMESPACE; + } + return SOAP_OK; + } + if (n1 == 0) + return n2 == 0 || (soap->mode & SOAP_XML_IGNORENS) ? SOAP_OK : SOAP_NAMESPACE; + if ((n1 == 3 && n1 == n2 && !strncmp(id1, "xml", 3) && !strncmp(id1, id2, 3)) + || (soap->mode & SOAP_XML_IGNORENS)) + return SOAP_OK; + return soap->error = SOAP_SYNTAX_ERROR; +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_current_namespace_tag(struct soap *soap, const char *tag) +{ + struct soap_nlist *np; + const char *s; + if (!tag || !strncmp(tag, "xml", 3)) + return NULL; + np = soap->nlist; + s = strchr(tag, ':'); + if (!s) + { + while (np && *np->id) /* find default namespace, if present */ + np = np->next; + } + else + { + while (np && (strncmp(np->id, tag, s - tag) || np->id[s - tag])) + np = np->next; + if (!np) + soap->error = SOAP_NAMESPACE; + } + if (np) + { + if (np->index >= 0) + return soap->namespaces[np->index].ns; + if (np->ns) + { + s = np->ns; + if (*s) + return soap_strdup(soap, s); + do + np = np->next; + while (np && *np->id); /* find if there is any other default namespace */ + if (np) + return soap_strdup(soap, s); + } + } + return NULL; +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_current_namespace_att(struct soap *soap, const char *tag) +{ + struct soap_nlist *np; + const char *s; + if (!tag || !strncmp(tag, "xml", 3)) + return NULL; + s = strchr(tag, ':'); + if (!s) + return NULL; + np = soap->nlist; + while (np && (strncmp(np->id, tag, s - tag) || np->id[s - tag])) + np = np->next; + if (!np) + soap->error = SOAP_NAMESPACE; + if (np) + { + if (np->index >= 0) + return soap->namespaces[np->index].ns; + if (np->ns && *np->ns) + return soap_strdup(soap, np->ns); + } + return NULL; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_tag_cmp(const char *s, const char *t) +{ + const char *a = NULL; + const char *b = NULL; + for (;;) + { + int c1 = *s; + int c2 = *t; + if (!c1 || c1 == '"') + break; + if (c2 != '-') + { + if (c1 < c2) + { + if (c1 >= 'A' && c1 <= 'Z') + c1 += 'a' - 'A'; + } + else if (c1 > c2) + { + if (c2 >= 'A' && c2 <= 'Z') + c2 += 'a' - 'A'; + } + if (c2 == '*') + { + c2 = *++t; + if (!c2) + return 0; + a = s; + b = t; + continue; + } + if (c1 != c2) + { + if (!a) + return 1; + s = ++a; + t = b; + continue; + } + } + s++; + t++; + } + if (*t == '*' && !t[1]) + return 0; + return *t; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_match_tag(struct soap *soap, const char *tag1, const char *tag2) +{ + const char *s, *t; + int err; + if (!tag1 || !tag2 || !*tag2) + return SOAP_OK; + s = strchr(tag1, ':'); + t = strchr(tag2, ':'); + if (t) + { + if (s) + { + if (t[1] && SOAP_STRCMP(s + 1, t + 1)) + return SOAP_TAG_MISMATCH; + if (t != tag2 && !(soap->mode & SOAP_XML_IGNORENS)) + { + err = soap_match_namespace(soap, tag1, tag2, s - tag1, t - tag2); + if (err) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Tags '%s' and '%s' match but namespaces differ\n", tag1, tag2)); + if (err == SOAP_NAMESPACE) + return SOAP_TAG_MISMATCH; + return err; + } + } + } + else if (!t[1]) + { + if ((soap->mode & SOAP_XML_IGNORENS) || soap_match_namespace(soap, tag1, tag2, 0, t - tag2)) + return SOAP_TAG_MISMATCH; + } + else if (SOAP_STRCMP(tag1, t + 1)) + { + return SOAP_TAG_MISMATCH; + } + else if (t != tag2) + { + err = soap_match_namespace(soap, tag1, tag2, 0, t - tag2); + if (err) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Tags '%s' and '%s' match but namespaces differ\n", tag1, tag2)); + if (err == SOAP_NAMESPACE) + return SOAP_TAG_MISMATCH; + return err; + } + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Tags and (default) namespaces match: '%s' '%s'\n", tag1, tag2)); + return SOAP_OK; + } + if (s) + { + if (!(soap->mode & SOAP_XML_IGNORENS) || SOAP_STRCMP(s + 1, tag2)) /* always fails (except when ignoring ns) */ + return SOAP_TAG_MISMATCH; + } + else if (SOAP_STRCMP(tag1, tag2) +#ifndef WITH_NOEMPTYNAMESPACES + || ((soap->mode & SOAP_XML_STRICT) && !(soap->mode & SOAP_XML_IGNORENS) && soap_match_namespace(soap, tag1, tag2, 0, 0)) /* strict checking: default namespace must be null namespace */ +#endif + ) + { + return SOAP_TAG_MISMATCH; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Tags match: '%s' '%s'\n", tag1, tag2)); + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_match_att(struct soap *soap, const char *tag1, const char *tag2) +{ + const char *s, *t; + int err; + if (!tag1 || !tag2 || !*tag2) + return SOAP_OK; + s = strchr(tag1, ':'); + t = strchr(tag2, ':'); + if (t) + { + if (s) + { + if (t[1] && SOAP_STRCMP(s + 1, t + 1)) + return SOAP_TAG_MISMATCH; + if (t != tag2 && !(soap->mode & SOAP_XML_IGNORENS)) + { + err = soap_match_namespace(soap, tag1, tag2, s - tag1, t - tag2); + if (err) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Atts '%s' and '%s' match but namespaces differ\n", tag1, tag2)); + if (err == SOAP_NAMESPACE) + return SOAP_TAG_MISMATCH; + return err; + } + } + } + else if (!t[1] || t != tag2 || SOAP_STRCMP(tag1, t + 1)) + return SOAP_TAG_MISMATCH; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Atts and (default) namespaces match: '%s' '%s'\n", tag1, tag2)); + return SOAP_OK; + } + if (s) + { + if (!(soap->mode & SOAP_XML_IGNORENS) || SOAP_STRCMP(s + 1, tag2)) /* always fails (except when ignoring ns) */ + return SOAP_TAG_MISMATCH; + } + else if (SOAP_STRCMP(tag1, tag2)) + return SOAP_TAG_MISMATCH; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Atts match: '%s' '%s'\n", tag1, tag2)); + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_match_array(struct soap *soap, const char *type) +{ + if (type && *soap->arrayType) + { + if (soap->version == 1 || !strchr(type, '[')) + { + if (soap_match_tag(soap, soap->arrayType, type) + && soap_match_tag(soap, soap->arrayType, "xsd:anyType") + && soap_match_tag(soap, soap->arrayType, "xsd:ur-type")) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "SOAP array type mismatch: '%s' '%s'\n", soap->arrayType, type)); + return SOAP_TAG_MISMATCH; + } + } + } + return SOAP_OK; +} + +/******************************************************************************\ + * + * SSL/TLS + * +\******************************************************************************/ + +#ifdef WITH_OPENSSL +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_rand() +{ + int r; + if (!soap_ssl_init_done) + soap_ssl_init(); +#if OPENSSL_VERSION_NUMBER < 0x10100000L + RAND_pseudo_bytes((unsigned char*)&r, sizeof(int)); +#else + RAND_bytes((unsigned char*)&r, sizeof(int)); +#endif + return r; +} +#endif + +/******************************************************************************/ + +#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) || defined(WITH_SYSTEMSSL) +SOAP_FMAC1 +int +SOAP_FMAC2 +#if defined(VXWORKS) && defined(WM_SECURE_KEY_STORAGE) +soap_ssl_server_context(struct soap *soap, unsigned short flags, const char *keyfile, const char *keyid, const char *password, const char *cafile, const char *capath, const char *dhfile, const char *randfile, const char *sid) +#else +soap_ssl_server_context(struct soap *soap, unsigned short flags, const char *keyfile, const char *password, const char *cafile, const char *capath, const char *dhfile, const char *randfile, const char *sid) +#endif +{ + int err; + soap->keyfile = keyfile; +#if defined(VXWORKS) && defined(WM_SECURE_KEY_STORAGE) + soap->keyid = keyid; /* vxWorks compatible */ +#endif + soap->password = password; + soap->cafile = cafile; + soap->capath = capath; +#ifdef WITH_OPENSSL + soap->dhfile = dhfile; + soap->randfile = randfile; + if (!soap->fsslverify) + soap->fsslverify = ssl_verify_callback; +#endif + soap->ssl_flags = flags | (dhfile == NULL ? SOAP_SSL_RSA : 0); +#ifdef WITH_GNUTLS + (void)randfile; (void)sid; + if (dhfile) + { + char *s; + int n = (int)soap_strtoul(dhfile, &s, 10); + if (!soap->dh_params) + gnutls_dh_params_init(&soap->dh_params); + /* if dhfile is numeric, treat it as a key length to generate DH params which can take a while */ + if (n >= 512 && s && *s == '\0') + gnutls_dh_params_generate2(soap->dh_params, (unsigned int)n); + else + { + unsigned int dparams_len; + unsigned char dparams_buf[1024]; + FILE *fd = fopen(dhfile, "r"); + if (!fd) + return soap_set_receiver_error(soap, "SSL/TLS error", "Invalid DH file", SOAP_SSL_ERROR); + dparams_len = (unsigned int)fread(dparams_buf, 1, sizeof(dparams_buf), fd); + fclose(fd); + gnutls_datum_t dparams = { + dparams_buf, dparams_len }; + if (gnutls_dh_params_import_pkcs3(soap->dh_params, &dparams, GNUTLS_X509_FMT_PEM)) + return soap_set_receiver_error(soap, "SSL/TLS error", "Invalid DH file", SOAP_SSL_ERROR); + } + } + else + { +#if GNUTLS_VERSION_NUMBER < 0x030300 + if (!soap->rsa_params) + gnutls_rsa_params_init(&soap->rsa_params); + gnutls_rsa_params_generate2(soap->rsa_params, SOAP_SSL_RSA_BITS); +#endif + } + if (soap->session) + { + gnutls_deinit(soap->session); + soap->session = NULL; + } + if (soap->xcred) + { + gnutls_certificate_free_credentials(soap->xcred); + soap->xcred = NULL; + } +#endif +#ifdef WITH_SYSTEMSSL + (void)randfile; (void)sid; + if (soap->ctx) + gsk_environment_close(&soap->ctx); +#endif + err = soap->fsslauth(soap); +#ifdef WITH_OPENSSL + if (!err) + { + if (sid) + SSL_CTX_set_session_id_context(soap->ctx, (unsigned char*)sid, (unsigned int)strlen(sid)); + else + SSL_CTX_set_session_cache_mode(soap->ctx, SSL_SESS_CACHE_OFF); + } +#endif + return err; +} +#endif + +/******************************************************************************/ + +#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) || defined(WITH_SYSTEMSSL) +SOAP_FMAC1 +int +SOAP_FMAC2 +#if defined(VXWORKS) && defined(WM_SECURE_KEY_STORAGE) +soap_ssl_client_context(struct soap *soap, unsigned short flags, const char *keyfile, const char *keyid, const char *password, const char *cafile, const char *capath, const char *randfile) +#else +soap_ssl_client_context(struct soap *soap, unsigned short flags, const char *keyfile, const char *password, const char *cafile, const char *capath, const char *randfile) +#endif +{ + soap->keyfile = keyfile; +#if defined(VXWORKS) && defined(WM_SECURE_KEY_STORAGE) + soap->keyid = keyid; /* vxWorks compatible */ +#endif + soap->password = password; + soap->cafile = cafile; + soap->capath = capath; + soap->ssl_flags = SOAP_SSL_CLIENT | flags; +#ifdef WITH_OPENSSL + soap->dhfile = NULL; + soap->randfile = randfile; + if (!soap->fsslverify) + soap->fsslverify = (flags & SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE) == 0 ? ssl_verify_callback : ssl_verify_callback_allow_expired_certificate; +#endif +#ifdef WITH_GNUTLS + (void)randfile; + if (soap->session) + { + gnutls_deinit(soap->session); + soap->session = NULL; + } + if (soap->xcred) + { + gnutls_certificate_free_credentials(soap->xcred); + soap->xcred = NULL; + } +#endif +#ifdef WITH_SYSTEMSSL + (void)randfile; + if (soap->ctx) + gsk_environment_close(&soap->ctx); +#endif + return soap->fsslauth(soap); +} +#endif + +/******************************************************************************/ + +#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_ssl_crl(struct soap *soap, const char *crlfile) +{ +#ifdef WITH_OPENSSL + if (crlfile && soap->ctx) + { +#if OPENSSL_VERSION_NUMBER > 0x00907000L + X509_STORE *store = SSL_CTX_get_cert_store(soap->ctx); + if (*crlfile) + { + int ret; + X509_LOOKUP *lookup = X509_STORE_add_lookup(store, X509_LOOKUP_file()); + if (!lookup) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't create X509_LOOKUP object", SOAP_SSL_ERROR); + ret = X509_load_crl_file(lookup, crlfile, X509_FILETYPE_PEM); + if (ret <= 0) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't read CRL PEM file", SOAP_SSL_ERROR); + } + X509_STORE_set_flags(store, X509_V_FLAG_CRL_CHECK | X509_V_FLAG_CRL_CHECK_ALL); +#endif + } + else + soap->crlfile = crlfile; /* activate later when store is available */ +#endif +#ifdef WITH_GNUTLS + if (crlfile && soap->xcred) + { + if (*crlfile) + if (gnutls_certificate_set_x509_crl_file(soap->xcred, crlfile, GNUTLS_X509_FMT_PEM) < 0) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't read CRL PEM file", SOAP_SSL_ERROR); + } + else + { + soap->crlfile = crlfile; /* activate later when xcred is available */ + } +#endif + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_ssl_init() +{ + /* Note: for multi-threaded applications, the main program should call soap_ssl_init() before any threads are started */ + if (!soap_ssl_init_done) + { + soap_ssl_init_done = 1; +#ifdef WITH_OPENSSL + SSL_library_init(); + OpenSSL_add_all_algorithms(); /* we keep ciphers and digests for the program's lifetime */ +#ifndef WITH_LEAN + SSL_load_error_strings(); +#endif +#if !defined(WIN32) && !defined(CYGWIN) && !defined(__MINGW32__) && !defined(__MINGW64__) + if (!RAND_load_file("/dev/urandom", 1024)) +#else + if (1) +#endif + { + /* if /dev/urandom does not exist we need to do at least some pertubations to seed the OpenSSL PRNG */ + char buf[1024]; + RAND_seed(buf, sizeof(buf)); +#ifdef HAVE_RANDOM + srandom((unsigned long)time(NULL)); +#else + srand((unsigned int)time(NULL)); +#endif + do + { +#ifdef HAVE_RANDOM + long r = random(); /* we actually do no use random() anywhere, except to help seed the OpenSSL PRNG */ + RAND_seed(&r, sizeof(long)); +#else + int r = rand(); /* we actually do no use rand() anywhere, except to help seed the OpenSSL PRNG */ + RAND_seed(&r, sizeof(int)); +#endif + } while (!RAND_status()); + } +#endif +#ifdef WITH_GNUTLS +# if GNUTLS_VERSION_NUMBER < 0x020b00 +# if defined(HAVE_PTHREAD_H) + gcry_control(GCRYCTL_SET_THREAD_CBS, &gcry_threads_pthread); +# elif defined(HAVE_PTH_H) + gcry_control(GCRYCTL_SET_THREAD_CBS, &gcry_threads_pth); +# endif + gcry_control(GCRYCTL_ENABLE_QUICK_RANDOM, 0); + gcry_control(GCRYCTL_DISABLE_SECMEM, 0); + gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0); /* libgcrypt init done */ +# endif +# if GNUTLS_VERSION_NUMBER < 0x030300 + gnutls_global_init(); +# endif +#endif + } +} +#endif + +/******************************************************************************/ + +#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_ssl_noinit() +{ + /* Call this first to bypass SSL init is SSL is already initialized elsewhere */ + soap_ssl_init_done = 1; +} +#endif + +/******************************************************************************/ + +#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) +SOAP_FMAC1 +const char * +SOAP_FMAC2 +soap_ssl_error(struct soap *soap, int ret, int err) +{ +#ifdef WITH_OPENSSL + const char *msg = soap_code_str(h_ssl_error_codes, err); + if (!msg) + return ERR_error_string(err, soap->msgbuf); + (SOAP_SNPRINTF(soap->msgbuf, sizeof(soap->msgbuf), strlen(msg) + 1), "%s\n", msg); + if (ERR_peek_error()) + { + unsigned long r; + while ((r = ERR_get_error())) + { + size_t l = strlen(soap->msgbuf); + ERR_error_string_n(r, soap->msgbuf + l, sizeof(soap->msgbuf) - l); + l = strlen(soap->msgbuf); + if (l + 1 < sizeof(soap->msgbuf)) + { + soap->msgbuf[l++] = '\n'; + soap->msgbuf[l] = '\0'; + } + if (ERR_GET_REASON(r) == SSL_R_CERTIFICATE_VERIFY_FAILED && l < sizeof(soap->msgbuf)) + { + const char *s = X509_verify_cert_error_string(SSL_get_verify_result(soap->ssl)); + (SOAP_SNPRINTF(soap->msgbuf + l, sizeof(soap->msgbuf) - l, strlen(s)), "%s", s); + } + } + } + else + { + size_t l = strlen(soap->msgbuf); + switch (ret) + { + case 0: + soap_strcpy(soap->msgbuf + l, sizeof(soap->msgbuf) - l, "EOF was observed that violates the SSL/TLS protocol. The client probably provided invalid authentication information."); + break; + case -1: + { + const char *s = strerror(soap_errno); + (SOAP_SNPRINTF(soap->msgbuf + l, sizeof(soap->msgbuf) - l, strlen(s) + 42), "Error observed by underlying SSL/TLS BIO: %s", s); + } + break; + } + } + ERR_clear_error(); + return soap->msgbuf; +#endif +#ifdef WITH_GNUTLS + (void)soap; + (void)err; + return gnutls_strerror(ret); +#endif +} +#endif + +/******************************************************************************/ + +#ifdef WITH_SYSTEMSSL +static int +ssl_recv(int sk, void *s, int n, char *user) +{ + (void)user; + return recv(sk, s, n, 0); +} +#endif + +/******************************************************************************/ + +#ifdef WITH_SYSTEMSSL +static int +ssl_send(int sk, void *s, int n, char *user) +{ + (void)user; + return send(sk, s, n, 0); +} +#endif + +/******************************************************************************/ + +#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) || defined(WITH_SYSTEMSSL) +static int +ssl_auth_init(struct soap *soap) +{ +#ifdef WITH_OPENSSL +#if OPENSSL_VERSION_NUMBER >= 0x10101000L + int minv = 0, maxv = 0; +#endif + long flags = SSL_OP_ALL; + int mode; +#if defined(VXWORKS) && defined(WM_SECURE_KEY_STORAGE) + EVP_PKEY* pkey; /* vxWorks compatible */ +#endif + if (!soap_ssl_init_done) + soap_ssl_init(); + ERR_clear_error(); + if (!soap->ctx) + { +#if OPENSSL_VERSION_NUMBER >= 0x10100000L + /* TLS_method: a TLS/SSL connection established may understand the SSLv3, TLSv1, TLSv1.1 and TLSv1.2 protocols. */ + soap->ctx = SSL_CTX_new(TLS_method()); +#else + /* SSLv23_method: a TLS/SSL connection established may understand the SSLv3, TLSv1, TLSv1.1 and TLSv1.2 protocols. */ + soap->ctx = SSL_CTX_new(SSLv23_method()); +#endif + if (!soap->ctx) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't setup context", SOAP_SSL_ERROR); + /* The following alters the behavior of SSL read/write: */ +#if 0 + SSL_CTX_set_mode(soap->ctx, SSL_MODE_ENABLE_PARTIAL_WRITE | SSL_MODE_AUTO_RETRY); +#endif + } + if (soap->randfile) + { + if (!RAND_load_file(soap->randfile, -1)) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't load randomness", SOAP_SSL_ERROR); + } + if (soap->cafile || soap->capath) + { + if (!SSL_CTX_load_verify_locations(soap->ctx, soap->cafile, soap->capath)) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't read CA PEM file", SOAP_SSL_ERROR); + if (soap->cafile && (soap->ssl_flags & SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION)) + SSL_CTX_set_client_CA_list(soap->ctx, SSL_load_client_CA_file(soap->cafile)); + } + if (!(soap->ssl_flags & SOAP_SSL_NO_DEFAULT_CA_PATH)) + { + if (!SSL_CTX_set_default_verify_paths(soap->ctx)) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't read default CA PEM file and/or directory", SOAP_SSL_ERROR); + } + if (soap->crlfile) + { + if (soap_ssl_crl(soap, soap->crlfile)) + return soap->error; + } +/* This code assumes a typical scenario with key and cert in one PEM file, see alternative code below */ +#if 1 + if (soap->keyfile) + { + if (!SSL_CTX_use_certificate_chain_file(soap->ctx, soap->keyfile)) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't find or read certificate in private key PEM file", SOAP_SSL_ERROR); + if (soap->password) + { + SSL_CTX_set_default_passwd_cb_userdata(soap->ctx, (void*)soap->password); + SSL_CTX_set_default_passwd_cb(soap->ctx, ssl_password); + } +#ifndef WM_SECURE_KEY_STORAGE + if (!SSL_CTX_use_PrivateKey_file(soap->ctx, soap->keyfile, SSL_FILETYPE_PEM)) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't read private key PEM file", SOAP_SSL_ERROR); +#endif + } +#else +/* Suggested alternative approach to check the key file for cert only when cafile==NULL */ + if (soap->password) + { + SSL_CTX_set_default_passwd_cb_userdata(soap->ctx, (void*)soap->password); + SSL_CTX_set_default_passwd_cb(soap->ctx, ssl_password); + } + if (!soap->cafile) + { + if (soap->keyfile) + { + if (!SSL_CTX_use_certificate_chain_file(soap->ctx, soap->keyfile)) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't find or read certificate in private key PEM file", SOAP_SSL_ERROR); + if (!SSL_CTX_use_PrivateKey_file(soap->ctx, soap->keyfile, SSL_FILETYPE_PEM)) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't read private key PEM file", SOAP_SSL_ERROR); + } + } + else /* use cafile for (server) cert and keyfile for (server) key */ + { + if (!SSL_CTX_use_certificate_chain_file(soap->ctx, soap->cafile)) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't read CA PEM file", SOAP_SSL_ERROR); + if (soap->keyfile) + if (!SSL_CTX_use_PrivateKey_file(soap->ctx, soap->keyfile, SSL_FILETYPE_PEM)) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't read private key PEM file", SOAP_SSL_ERROR); + } +#endif +#if defined(VXWORKS) && defined(WM_SECURE_KEY_STORAGE) + /* vxWorks compatible */ + pkey = ipcom_key_db_pkey_get(soap->keyid); + if (!pkey) + return soap_set_receiver_error(soap, "SSL error", "Can't find key", SOAP_SSL_ERROR); + if (!SSL_CTX_use_PrivateKey(soap->ctx, pkey)) + return soap_set_receiver_error(soap, "SSL error", "Can't read key", SOAP_SSL_ERROR); +#endif + if ((soap->ssl_flags & SOAP_SSL_RSA)) + { +#if OPENSSL_VERSION_NUMBER >= 0x10002000L + if (SSL_CTX_need_tmp_RSA(soap->ctx)) + { + unsigned long e = RSA_F4; + BIGNUM *bne = BN_new(); + RSA *rsa = RSA_new(); + if (!bne || !rsa || !BN_set_word(bne, e) || !RSA_generate_key_ex(rsa, SOAP_SSL_RSA_BITS, bne, NULL) || !SSL_CTX_set_tmp_rsa(soap->ctx, rsa)) + { + if (bne) + BN_free(bne); + if (rsa) + RSA_free(rsa); + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't generate RSA key", SOAP_SSL_ERROR); + } + BN_free(bne); + RSA_free(rsa); + } +#else + RSA *rsa = RSA_generate_key(SOAP_SSL_RSA_BITS, RSA_F4, NULL, NULL); + if (!rsa || !SSL_CTX_set_tmp_rsa(soap->ctx, rsa)) + { + if (rsa) + RSA_free(rsa); + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't generate RSA key", SOAP_SSL_ERROR); + } + RSA_free(rsa); +#endif + } + else if (soap->dhfile) + { + DH *dh = NULL; + char *s; + int n = (int)soap_strtoul(soap->dhfile, &s, 10); + /* if dhfile is numeric, treat it as a key length to generate DH params which can take a while */ + if (n >= 512 && s && *s == '\0') + { +#if OPENSSL_VERSION_NUMBER >= 0x10002000L + dh = DH_new(); + if (!DH_generate_parameters_ex(dh, n, 2/*or 5*/, NULL)) + { + DH_free(dh); + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't generate DH parameters", SOAP_SSL_ERROR); + } +#elif defined(VXWORKS) + dh = DH_new(); + DH_generate_parameters_ex(dh, n, 2/*or 5*/, NULL); +#else + dh = DH_generate_parameters(n, 2/*or 5*/, NULL, NULL); +#endif + } + else + { + BIO *bio; + bio = BIO_new_file(soap->dhfile, "r"); + if (!bio) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't read DH PEM file", SOAP_SSL_ERROR); + dh = PEM_read_bio_DHparams(bio, NULL, NULL, NULL); + BIO_free(bio); + } + if (!dh || DH_check(dh, &n) != 1 || SSL_CTX_set_tmp_dh(soap->ctx, dh) < 0) + { + if (dh) + DH_free(dh); + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't set DH parameters", SOAP_SSL_ERROR); + } + DH_free(dh); + } + /* enable all TSLv1 protocols and disable SSLv3 by default if no SSL/TLS flags are set */ + if ((soap->ssl_flags & SOAP_SSLv3_TLSv1) == 0) + soap->ssl_flags |= SOAP_TLSv1; +#if OPENSSL_VERSION_NUMBER >= 0x10101000L + if ((soap->ssl_flags & SOAP_SSLv3)) + minv = SSL3_VERSION; + else if ((soap->ssl_flags & SOAP_TLSv1_0)) + minv = TLS1_VERSION; + else if ((soap->ssl_flags & SOAP_TLSv1_1)) + minv = TLS1_1_VERSION; + else if ((soap->ssl_flags & SOAP_TLSv1_2)) + minv = TLS1_2_VERSION; + else if ((soap->ssl_flags & SOAP_TLSv1_3)) + minv = TLS1_3_VERSION; + if ((soap->ssl_flags & SOAP_TLSv1_3) && OpenSSL_version_num() >= 0x10101000L) + maxv = TLS1_3_VERSION; + else if ((soap->ssl_flags & SOAP_TLSv1_2)) + maxv = TLS1_2_VERSION; + else if ((soap->ssl_flags & SOAP_TLSv1_1)) + maxv = TLS1_1_VERSION; + else if ((soap->ssl_flags & SOAP_TLSv1_0)) + maxv = TLS1_VERSION; + else + maxv = SSL3_VERSION; + if (!SSL_CTX_set_min_proto_version(soap->ctx, minv) + || !SSL_CTX_set_max_proto_version(soap->ctx, maxv)) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't set protocol version", SOAP_SSL_ERROR); +#else + /* disable SSL v2 by default and enable specific protos */ + flags = SSL_OP_NO_SSLv2; + if (!(soap->ssl_flags & SOAP_SSLv3)) + flags |= SSL_OP_NO_SSLv3; +#if OPENSSL_VERSION_NUMBER >= 0x10001000L + if (!(soap->ssl_flags & SOAP_TLSv1_0)) + flags |= SSL_OP_NO_TLSv1; + if (!(soap->ssl_flags & SOAP_TLSv1_1)) + flags |= SSL_OP_NO_TLSv1_1; + if (!(soap->ssl_flags & SOAP_TLSv1_2)) + flags |= SSL_OP_NO_TLSv1_2; +#endif +#endif +#ifdef SSL_OP_NO_TICKET + /* TLS extension is enabled by default in OPENSSL v0.9.8k disable it by */ + flags |= SSL_OP_NO_TICKET; +#endif + SSL_CTX_set_options(soap->ctx, flags); + if ((soap->ssl_flags & SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION)) + mode = (SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT); + else if ((soap->ssl_flags & SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION)) + mode = SSL_VERIFY_PEER; + else + mode = SSL_VERIFY_NONE; + SSL_CTX_set_verify(soap->ctx, mode, soap->fsslverify); +#if OPENSSL_VERSION_NUMBER < 0x00905100L + SSL_CTX_set_verify_depth(soap->ctx, 1); +#else + SSL_CTX_set_verify_depth(soap->ctx, 9); +#endif +#endif +#ifdef WITH_GNUTLS + int ret; + char priority[80]; + soap_strcpy(priority, sizeof(priority), "PERFORMANCE"); + if (!soap_ssl_init_done) + soap_ssl_init(); + if (!soap->xcred) + { + if (gnutls_certificate_allocate_credentials(&soap->xcred) != GNUTLS_E_SUCCESS) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't allocate credentials or trust", SOAP_SSL_ERROR); +#if GNUTLS_VERSION_NUMBER >= 0x030300 + gnutls_certificate_set_x509_system_trust(soap->xcred); +#endif + if (soap->cafile) + { + if (gnutls_certificate_set_x509_trust_file(soap->xcred, soap->cafile, GNUTLS_X509_FMT_PEM) < 0) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't read CA PEM file", SOAP_SSL_ERROR); + } + if (soap->crlfile) + { + if (soap_ssl_crl(soap, soap->crlfile)) + return soap->error; + } + if (soap->keyfile) + { + if (gnutls_certificate_set_x509_key_file2(soap->xcred, soap->keyfile, soap->keyfile, GNUTLS_X509_FMT_PEM, soap->password, GNUTLS_PKCS_PKCS12_3DES | GNUTLS_PKCS_PKCS12_ARCFOUR | GNUTLS_PKCS_PKCS12_RC2_40 | GNUTLS_PKCS_PBES2_AES_128 | GNUTLS_PKCS_PBES2_AES_192 | GNUTLS_PKCS_PBES2_AES_256 | GNUTLS_PKCS_PBES2_DES) < 0) /* Assumes that key and cert(s) are concatenated in the keyfile and the key is encrypted with one of these algorithms */ + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't read private key PEM file", SOAP_SSL_ERROR); + } + } + if ((soap->ssl_flags & SOAP_SSL_CLIENT)) + { + gnutls_init(&soap->session, GNUTLS_CLIENT); + if (soap->cafile || soap->crlfile || soap->keyfile) + { + ret = gnutls_priority_set_direct(soap->session, "PERFORMANCE", NULL); + if (ret != GNUTLS_E_SUCCESS) + return soap_set_receiver_error(soap, soap_ssl_error(soap, ret, 0), "SSL/TLS set priority error", SOAP_SSL_ERROR); + gnutls_credentials_set(soap->session, GNUTLS_CRD_CERTIFICATE, soap->xcred); + } + else + { + if (!soap->acred) + gnutls_anon_allocate_client_credentials(&soap->acred); + ret = gnutls_priority_set_direct(soap->session, "PERFORMANCE:+ANON-DH:!ARCFOUR-128", NULL); + if (ret != GNUTLS_E_SUCCESS) + return soap_set_receiver_error(soap, soap_ssl_error(soap, ret, 0), "SSL/TLS set priority error", SOAP_SSL_ERROR); + gnutls_credentials_set(soap->session, GNUTLS_CRD_ANON, soap->acred); + } + } + else if (!soap->keyfile) + { + return soap_set_receiver_error(soap, "SSL/TLS error", "No key file: anonymous server authentication not supported in this release", SOAP_SSL_ERROR); + } + else + { +#if GNUTLS_VERSION_NUMBER < 0x030300 + int protocol_priority[] = { 0, 0, 0, 0, 0 }; + int *protocol = protocol_priority; + if ((soap->ssl_flags & SOAP_SSL_RSA) && soap->rsa_params) + gnutls_certificate_set_rsa_export_params(soap->xcred, soap->rsa_params); +#endif + if (!(soap->ssl_flags & SOAP_SSL_RSA) && soap->dh_params) + gnutls_certificate_set_dh_params(soap->xcred, soap->dh_params); + if (!soap->cache) + gnutls_priority_init(&soap->cache, "NORMAL", NULL); + gnutls_init(&soap->session, GNUTLS_SERVER); + gnutls_priority_set(soap->session, soap->cache); + gnutls_credentials_set(soap->session, GNUTLS_CRD_CERTIFICATE, soap->xcred); + if ((soap->ssl_flags & SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION)) + gnutls_certificate_server_set_request(soap->session, GNUTLS_CERT_REQUEST); + gnutls_session_enable_compatibility_mode(soap->session); + /* enable all TSLv1 protocols and disable SSLv3 by default if no SSL/TLS flags are set */ + if ((soap->ssl_flags & SOAP_SSLv3_TLSv1) == 0) + soap->ssl_flags |= SOAP_TLSv1; +#if GNUTLS_VERSION_NUMBER < 0x030300 + if ((soap->ssl_flags & SOAP_SSLv3)) + *protocol++ = GNUTLS_SSL3; + if ((soap->ssl_flags & SOAP_TLSv1_0)) + *protocol++ = GNUTLS_TLS1_0; + if ((soap->ssl_flags & SOAP_TLSv1_1)) + *protocol++ = GNUTLS_TLS1_1; + if ((soap->ssl_flags & SOAP_TLSv1_2)) + *protocol++ = GNUTLS_TLS1_2; + if (gnutls_protocol_set_priority(soap->session, protocol_priority) != GNUTLS_E_SUCCESS) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't set protocol", SOAP_SSL_ERROR); +#else + soap_strcpy(soap->tmpbuf, sizeof(soap->tmpbuf), "NORMAL:+VERS-ALL"); + if (!(soap->ssl_flags & SOAP_TLSv1_0)) + soap_strcat(soap->tmpbuf, sizeof(soap->tmpbuf), ":-VERS-TLS1.0"); + if (!(soap->ssl_flags & SOAP_TLSv1_1)) + soap_strcat(soap->tmpbuf, sizeof(soap->tmpbuf), ":-VERS-TLS1.1"); + if (!(soap->ssl_flags & SOAP_TLSv1_2)) + soap_strcat(soap->tmpbuf, sizeof(soap->tmpbuf), ":-VERS-TLS1.2"); + if (gnutls_priority_set_direct(soap->session, soap->tmpbuf, NULL) != GNUTLS_E_SUCCESS) + return soap_set_receiver_error(soap, "SSL/TLS error", "Can't set protocol priority", SOAP_SSL_ERROR); +#endif + } +#endif +#ifdef WITH_SYSTEMSSL + if (!soap->ctx) + { + int err; + err = gsk_environment_open(&soap->ctx); + if (err == GSK_OK) + err = gsk_attribute_set_enum(soap->ctx, GSK_PROTOCOL_SSLV2, GSK_PROTOCOL_SSLV2_OFF); + /* enable all TSLv1 protocols and disable SSLv3 by default if no SSL/TLS flags are set */ + if ((soap->ssl_flags & SOAP_SSLv3_TLSv1) == 0) + soap->ssl_flags |= SOAP_TLSv1; + if (err == GSK_OK) + { + if ((soap->ssl_flags & SOAP_SSLv3)) + err = gsk_attribute_set_enum(soap->ctx, GSK_PROTOCOL_SSLV3, GSK_PROTOCOL_SSLV3_ON); + else + err = gsk_attribute_set_enum(soap->ctx, GSK_PROTOCOL_SSLV3, GSK_PROTOCOL_SSLV3_OFF); + } + if (err == GSK_OK) + { + if ((soap->ssl_flags & SOAP_TLSv1_0)) + err = gsk_attribute_set_enum(soap->ctx, GSK_PROTOCOL_TLSV1, GSK_PROTOCOL_TLSV1_ON); + else + err = gsk_attribute_set_enum(soap->ctx, GSK_PROTOCOL_TLSV1, GSK_PROTOCOL_TLSV1_OFF); + } + if (err == GSK_OK) + { + if ((soap->ssl_flags & SOAP_TLSv1_1)) + err = gsk_attribute_set_enum(soap->ctx, GSK_PROTOCOL_TLSV1, GSK_PROTOCOL_TLSV1_1_ON); + else + err = gsk_attribute_set_enum(soap->ctx, GSK_PROTOCOL_TLSV1, GSK_PROTOCOL_TLSV1_1_OFF); + } + if (err == GSK_OK) + { + if ((soap->ssl_flags & SOAP_TLSv1_2)) + err = gsk_attribute_set_enum(soap->ctx, GSK_PROTOCOL_TLSV1, GSK_PROTOCOL_TLSV1_2_ON); + else + err = gsk_attribute_set_enum(soap->ctx, GSK_PROTOCOL_TLSV1, GSK_PROTOCOL_TLSV1_2_OFF); + } + if (err == GSK_OK) + err = gsk_attribute_set_buffer(soap->ctx, GSK_KEYRING_FILE, soap->keyfile, 0); /* keyfile is a keyring .kdb file */ + if (err == GSK_OK) + err = gsk_attribute_set_buffer(soap->ctx, GSK_KEYRING_PW, soap->password, 0); /* locked by password */ + if (err == GSK_OK) + err = gsk_environment_init(soap->ctx); + if (err != GSK_OK) + return soap_set_receiver_error(soap, gsk_strerror(err), "SYSTEM SSL error in ssl_auth_init()", SOAP_SSL_ERROR); + } +#endif + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +#ifdef WITH_OPENSSL +static int +ssl_password(char *buf, int num, int rwflag, void *userdata) +{ + (void)rwflag; + if (!buf || !userdata) + return 0; + soap_strcpy(buf, (size_t)num, (char*)userdata); + return (int)strlen(buf); +} +#endif + +/******************************************************************************/ + +#ifdef WITH_OPENSSL +static int +ssl_verify_callback(int ok, X509_STORE_CTX *store) +{ + (void)store; +#ifdef SOAP_DEBUG + if (!ok) + { + char buf[1024]; + int err = X509_STORE_CTX_get_error(store); + X509 *cert = X509_STORE_CTX_get_current_cert(store); + fprintf(stderr, "\nDEBUG mode TLS/SSL warnings:\nSSL verify error %d or warning with certificate at depth %d: %s\n", err, X509_STORE_CTX_get_error_depth(store), X509_verify_cert_error_string(err)); + X509_NAME_oneline(X509_get_issuer_name(cert), buf, sizeof(buf)-1); + fprintf(stderr, " certificate issuer: %s\n", buf); + X509_NAME_oneline(X509_get_subject_name(cert), buf, sizeof(buf)-1); + fprintf(stderr, " certificate subject: %s\n", buf); + /* accept self-signed certificates and certificates out of date */ + switch (err) + { + case X509_V_ERR_CERT_NOT_YET_VALID: + case X509_V_ERR_CERT_HAS_EXPIRED: + case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT: + case X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN: + case X509_V_ERR_UNABLE_TO_GET_CRL: + case X509_V_ERR_CRL_NOT_YET_VALID: + case X509_V_ERR_CRL_HAS_EXPIRED: + X509_STORE_CTX_set_error(store, X509_V_OK); + ok = 1; + fprintf(stderr, "Initialize soap_ssl_client_context with SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE to allow this verification error to pass without DEBUG mode enabled\n"); + } + } +#endif + /* Note: return 1 to try to continue, but unsafe progress will be terminated by OpenSSL */ + return ok; +} +#endif + +/******************************************************************************/ + +#ifdef WITH_OPENSSL +static int +ssl_verify_callback_allow_expired_certificate(int ok, X509_STORE_CTX *store) +{ + ok = ssl_verify_callback(ok, store); + if (!ok) + { + /* accept self signed certificates, expired certificates, and certficiates w/o CRL */ + switch (X509_STORE_CTX_get_error(store)) + { + case X509_V_ERR_CERT_NOT_YET_VALID: + case X509_V_ERR_CERT_HAS_EXPIRED: + case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT: + case X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN: + case X509_V_ERR_UNABLE_TO_GET_CRL: + case X509_V_ERR_CRL_NOT_YET_VALID: + case X509_V_ERR_CRL_HAS_EXPIRED: + X509_STORE_CTX_set_error(store, X509_V_OK); + ok = 1; + } + } + /* Note: return 1 to continue, but unsafe progress will be terminated by SSL */ + return ok; +} +#endif + +/******************************************************************************/ + +#ifdef WITH_GNUTLS +static const char * +ssl_verify(struct soap *soap, const char *host) +{ + unsigned int status; + const char *err = NULL; + int r = gnutls_certificate_verify_peers2(soap->session, &status); + if (r < 0) + err = "Certificate verify error"; + else if ((status & GNUTLS_CERT_INVALID)) + err = "The certificate is not trusted"; + else if ((status & GNUTLS_CERT_SIGNER_NOT_FOUND)) + err = "The certificate hasn't got a known issuer"; + else if ((status & GNUTLS_CERT_REVOKED)) + err = "The certificate has been revoked"; + else if (gnutls_certificate_type_get(soap->session) == GNUTLS_CRT_X509) + { + gnutls_x509_crt_t cert; + const gnutls_datum_t *cert_list; + unsigned int cert_list_size; + if (gnutls_x509_crt_init(&cert) < 0) + err = "Could not get X509 certificates"; + else if ((cert_list = gnutls_certificate_get_peers(soap->session, &cert_list_size)) == NULL) + err = "Could not get X509 certificates"; + else if (gnutls_x509_crt_import(cert, &cert_list[0], GNUTLS_X509_FMT_DER) < 0) + err = "Error parsing X509 certificate"; + else if (!(soap->ssl_flags & SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE) && gnutls_x509_crt_get_expiration_time(cert) < time(NULL)) + err = "The certificate has expired"; + else if (!(soap->ssl_flags & SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE) && gnutls_x509_crt_get_activation_time(cert) > time(NULL)) + err = "The certificate is not yet activated"; + else if (host && !(soap->ssl_flags & SOAP_SSL_SKIP_HOST_CHECK)) + { + if (!gnutls_x509_crt_check_hostname(cert, host)) + err = "Certificate host name mismatch"; + } + gnutls_x509_crt_deinit(cert); + } + return err; +} +#endif + +/******************************************************************************/ + +#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) +#ifndef WITH_NOIO +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_ssl_accept(struct soap *soap) +{ + SOAP_SOCKET sk = soap->socket; +#ifdef WITH_OPENSSL + BIO *bio; + int err = SSL_ERROR_NONE; + int retries, r, s; + ERR_clear_error(); + if (!soap_valid_socket(sk)) + return soap_set_receiver_error(soap, "SSL/TLS error", "No socket in soap_ssl_accept()", SOAP_SSL_ERROR); + soap->ssl_flags &= ~SOAP_SSL_CLIENT; + if (!soap->ctx && (soap->error = soap->fsslauth(soap)) != SOAP_OK) + return soap_closesock(soap); + if (!soap->ssl) + { + soap->ssl = SSL_new(soap->ctx); + if (!soap->ssl) + { + soap_closesock(soap); + return soap_set_receiver_error(soap, "SSL/TLS error", "SSL_new() failed in soap_ssl_accept()", SOAP_SSL_ERROR); + } + } + else + { + SSL_clear(soap->ssl); + } + bio = BIO_new_socket((int)sk, BIO_NOCLOSE); + SSL_set_bio(soap->ssl, bio, bio); + /* Default timeout: 10 sec retries, 100 times 0.1 sec */ + retries = 100; + if (soap->recv_timeout || soap->send_timeout) + { + int t = soap->recv_timeout > soap->send_timeout ? soap->recv_timeout : soap->send_timeout; + if (t > 0) + retries = 10 * t; + else if (t > -100000) + retries = 1; + else + retries = t/-100000; + } + SOAP_SOCKNONBLOCK(sk) + while ((r = SSL_accept(soap->ssl)) <= 0) + { + err = SSL_get_error(soap->ssl, r); + if (err == SSL_ERROR_WANT_ACCEPT || err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE) + { + if (err == SSL_ERROR_WANT_READ) + s = tcp_select(soap, sk, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, -100000); + else + s = tcp_select(soap, sk, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, -100000); + if (s < 0) + break; + } + else + { + soap->errnum = soap_socket_errno(sk); + break; + } + if (retries-- <= 0) + break; + } + if (!soap->recv_timeout && !soap->send_timeout) + SOAP_SOCKBLOCK(sk) + if (r <= 0) + { + soap_set_receiver_error(soap, soap_ssl_error(soap, r, err), "SSL_accept() failed in soap_ssl_accept()", SOAP_SSL_ERROR); + return soap_closesock(soap); + } + if ((soap->ssl_flags & SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION)) + { + X509 *peer; + int err; + if ((err = SSL_get_verify_result(soap->ssl)) != X509_V_OK) + { + soap_closesock(soap); + return soap_set_sender_error(soap, X509_verify_cert_error_string(err), "SSL certificate presented by peer cannot be verified in soap_ssl_accept()", SOAP_SSL_ERROR); + } + peer = SSL_get_peer_certificate(soap->ssl); + if (!peer) + { + soap_closesock(soap); + return soap_set_sender_error(soap, "SSL/TLS error", "No SSL certificate was presented by the peer in soap_ssl_accept()", SOAP_SSL_ERROR); + } + X509_free(peer); + } +#endif +#ifdef WITH_GNUTLS + int retries, r, s; + if (!soap_valid_socket(sk)) + return soap_set_receiver_error(soap, "SSL/TLS error", "No socket in soap_ssl_accept()", SOAP_SSL_ERROR); + soap->ssl_flags &= ~SOAP_SSL_CLIENT; + if (!soap->session && (soap->error = soap->fsslauth(soap)) != SOAP_OK) + return soap_closesock(soap); + gnutls_transport_set_ptr(soap->session, (gnutls_transport_ptr_t)(long)sk); + /* default timeout: 10 sec retries, 100 times 0.1 sec */ + retries = 100; + if (soap->recv_timeout || soap->send_timeout) + { + int t = soap->recv_timeout > soap->send_timeout ? soap->recv_timeout : soap->send_timeout; + if (t > 0) + retries = 10 * t; + else if (t > -100000) + retries = 1; + else + retries = t/-100000; + } + SOAP_SOCKNONBLOCK(sk) + while ((r = gnutls_handshake(soap->session))) + { + /* GNUTLS repeat handhake when GNUTLS_E_AGAIN */ + if (r == GNUTLS_E_AGAIN || r == GNUTLS_E_INTERRUPTED) + { + if (!gnutls_record_get_direction(soap->session)) + s = tcp_select(soap, sk, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, -100000); + else + s = tcp_select(soap, sk, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, -100000); + if (s < 0) + break; + } + else + { + soap->errnum = soap_socket_errno(sk); + break; + } + if (retries-- <= 0) + break; + } + if (!soap->recv_timeout && !soap->send_timeout) + SOAP_SOCKBLOCK(sk) + if (r) + { + soap_set_receiver_error(soap, soap_ssl_error(soap, r, 0), "SSL/TLS handshake failed", SOAP_SSL_ERROR); + return soap_closesock(soap); + } + if ((soap->ssl_flags & SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION)) + { + const char *err = ssl_verify(soap, NULL); + if (err) + { + soap_closesock(soap); + return soap_set_receiver_error(soap, "SSL/TLS error", err, SOAP_SSL_ERROR); + } + } +#endif +#ifdef WITH_SYSTEMSSL + gsk_iocallback local_io = { ssl_recv, ssl_send, NULL, NULL, NULL, NULL }; + int retries, r, s; + if (!soap_valid_socket(sk)) + return soap_set_receiver_error(soap, "SSL/TLS error", "No socket in soap_ssl_accept()", SOAP_SSL_ERROR); + soap->ssl_flags &= ~SOAP_SSL_CLIENT; + /* default timeout: 10 sec retries, 100 times 0.1 sec */ + retries = 100; + if (soap->recv_timeout || soap->send_timeout) + { + int t = soap->recv_timeout > soap->send_timeout ? soap->recv_timeout : soap->send_timeout; + if (t > 0) + retries = 10 * t; + else if (t > -100000) + retries = 1; + else + retries = t/-100000; + } + SOAP_SOCKNONBLOCK(sk) + r = gsk_secure_socket_open(soap->ctx, &soap->ssl); + if (r == GSK_OK) + r = gsk_attribute_set_numeric_value(soap->ssl, GSK_FD, sk); + if (r == GSK_OK) + r = gsk_attribute_set_buffer(soap->ssl, GSK_KEYRING_LABEL, soap->cafile, 0); + if (r == GSK_OK) + r = gsk_attribute_set_enum(soap->ssl, GSK_SESSION_TYPE, GSK_SERVER_SESSION); + if (r == GSK_OK) + r = gsk_attribute_set_buffer(soap->ssl, GSK_V3_CIPHER_SPECS_EXPANDED, "0035002F000A", 0); + if (r == GSK_OK) + r = gsk_attribute_set_enum(soap->ssl, GSK_V3_CIPHERS, GSK_V3_CIPHERS_CHAR4); + if (r == GSK_OK) + r = gsk_attribute_set_callback(soap->ssl, GSK_IO_CALLBACK, &local_io); + if (r != GSK_OK) + return soap_set_receiver_error(soap, gsk_strerror(r), "SYSTEM SSL error in soap_ssl_accept()", SOAP_SSL_ERROR); + while ((r = gsk_secure_socket_init(soap->ssl)) != GSK_OK) + { + if (r == GSK_WOULD_BLOCK_READ || r == GSK_WOULD_BLOCK_WRITE) + { + if (r == GSK_WOULD_BLOCK_READ) + s = tcp_select(soap, sk, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, -100000); + else + s = tcp_select(soap, sk, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, -100000); + if (s < 0) + break; + } + else + { + soap->errnum = soap_socket_errno(sk); + break; + } + if (retries-- <= 0) + break; + } + if (!soap->recv_timeout && !soap->send_timeout) + SOAP_SOCKBLOCK(sk) + if (r != GSK_OK) + { + soap_set_receiver_error(soap, gsk_strerror(r), "gsk_secure_socket_init() failed in soap_ssl_accept()", SOAP_SSL_ERROR); + return soap_closesock(soap); + } +#endif + soap->imode |= SOAP_ENC_SSL; + soap->omode |= SOAP_ENC_SSL; + return SOAP_OK; +} +#endif +#endif + +/******************************************************************************\ + * + * TCP/UDP [SSL/TLS] IPv4 and IPv6 + * +\******************************************************************************/ + +#ifndef WITH_NOIO +static int +tcp_init(struct soap *soap) +{ + soap->errmode = 1; +#ifdef WIN32 + if (tcp_done) + return 0; + else + { + WSADATA w; + if (WSAStartup(MAKEWORD(1, 1), &w)) + return -1; + tcp_done = 1; + } +#endif + return 0; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIO +static const char* +tcp_error(struct soap *soap) +{ + const char *msg = NULL; + switch (soap->errmode) + { + case 0: + msg = soap_strerror(soap); + break; + case 1: + msg = "WSAStartup failed"; + break; + case 2: + { +#ifndef WITH_LEAN + msg = soap_code_str(h_error_codes, soap->errnum); + if (!msg) +#endif + { + (SOAP_SNPRINTF(soap->msgbuf, sizeof(soap->msgbuf), 37), "TCP/UDP IP error %d", soap->errnum); + msg = soap->msgbuf; + } + } + } + return msg; +} +#endif + +/******************************************************************************/ + +#if !defined(WITH_IPV6) || defined(WITH_COOKIES) +#ifndef WITH_NOIO +static int +tcp_gethostbyname(struct soap *soap, const char *addr, struct hostent *hostent, struct in_addr *inaddr) +{ +#if (defined(_AIX43) || defined(TRU64) || defined(HP_UX)) && defined(HAVE_GETHOSTBYNAME_R) + struct hostent_data ht_data; +#elif (!defined(__GLIBC__) || !defined(_GNU_SOURCE) || (!_GNU_SOURCE && !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 || defined(__ANDROID__) || defined(FREEBSD) || defined(__FreeBSD__)) && defined(HAVE_GETHOSTBYNAME_R) + int r; + char *tmpbuf = soap->tmpbuf; + size_t tmplen = sizeof(soap->tmpbuf); +#elif defined(HAVE_GETHOSTBYNAME_R) + char *tmpbuf = soap->tmpbuf; + size_t tmplen = sizeof(soap->tmpbuf); +#endif +#ifdef VXWORKS + int hostint; /* vxWorks compatible */ +#endif + if (inaddr) + { + soap_int32 iadd = -1; +#ifdef AS400 + iadd = inet_addr((void*)addr); +#else + iadd = inet_addr((char*)addr); +#endif + if (iadd != -1) + { + if (soap_memcpy((void*)inaddr, sizeof(struct in_addr), (const void*)&iadd, sizeof(iadd))) + return soap->error = SOAP_EOM; + return SOAP_OK; + } + } +#if (defined(_AIX43) || defined(TRU64) || defined(HP_UX)) && defined(HAVE_GETHOSTBYNAME_R) + memset((void*)&ht_data, 0, sizeof(ht_data)); + if (gethostbyname_r(addr, hostent, &ht_data) < 0) + { + hostent = NULL; + soap->errnum = h_errno; + } +#elif (!defined(__GLIBC__) || !defined(_GNU_SOURCE) || (!_GNU_SOURCE && !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 || defined(__ANDROID__) || defined(FREEBSD) || defined(__FreeBSD__)) && defined(HAVE_GETHOSTBYNAME_R) + while ((r = gethostbyname_r(addr, hostent, tmpbuf, tmplen, &hostent, &soap->errnum)) < 0) + { + if (tmpbuf != soap->tmpbuf) + SOAP_FREE(soap, tmpbuf); + if (r != SOAP_ERANGE) + { + hostent = NULL; + break; + } + tmplen *= 2; + tmpbuf = (char*)SOAP_MALLOC(soap, tmplen); + if (!tmpbuf) + break; + } +#elif defined(HAVE_GETHOSTBYNAME_R) + hostent = gethostbyname_r(addr, hostent, tmpbuf, tmplen, &soap->errnum); +#elif defined(VXWORKS) + /* vxWorks compatible */ + /* If the DNS resolver library resolvLib has been configured in the vxWorks + * image, a query for the host IP address is sent to the DNS server, if the + * name was not found in the local host table. */ + hostint = hostGetByName((char*)addr); + if (hostint == ERROR) + { + hostent = NULL; + soap->errnum = soap_errno; + } +#else +#ifdef AS400 + hostent = gethostbyname((void*)addr); +#else + hostent = gethostbyname((char*)addr); +#endif + if (!hostent) + soap->errnum = h_errno; +#endif + if (!hostent) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Host name not found\n")); + return SOAP_ERR; + } + if (inaddr) + { +#ifdef VXWORKS + inaddr->s_addr = hostint; /* vxWorks compatible */ +#else + if (soap_memcpy((void*)inaddr, sizeof(struct in_addr), (const void*)hostent->h_addr, (size_t)hostent->h_length)) + { +#if (!defined(__GLIBC__) || !defined(_GNU_SOURCE) || (!_GNU_SOURCE && !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 || defined(__ANDROID__) || defined(FREEBSD) || defined(__FreeBSD__)) && defined(HAVE_GETHOSTBYNAME_R) + if (tmpbuf && tmpbuf != soap->tmpbuf) + SOAP_FREE(soap, tmpbuf); +#endif + return soap->error = SOAP_EOM; + } +#endif + } +#if (!defined(__GLIBC__) || !defined(_GNU_SOURCE) || (!_GNU_SOURCE && !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 || defined(__ANDROID__) || defined(FREEBSD) || defined(__FreeBSD__)) && defined(HAVE_GETHOSTBYNAME_R) + if (tmpbuf && tmpbuf != soap->tmpbuf) + SOAP_FREE(soap, tmpbuf); +#endif + return SOAP_OK; +} +#endif +#endif + +/******************************************************************************/ + +#if !defined(WITH_IPV6) +#ifndef WITH_NOIO +static int +tcp_gethost(struct soap *soap, const char *addr, struct in_addr *inaddr) +{ + struct hostent hostent; + return tcp_gethostbyname(soap, addr, &hostent, inaddr); +} +#endif +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIO +static SOAP_SOCKET +tcp_connect(struct soap *soap, const char *endpoint, const char *host, int port) +{ +#ifdef WITH_IPV6 + struct addrinfo hints, *res, *ressave; +#endif + SOAP_SOCKET sk; + int err = 0; +#ifndef WITH_LEAN + int set = 1; +#endif +#if !defined(WITH_LEAN) || defined(WITH_OPENSSL) || defined(WITH_GNUTLS) || defined(WITH_SYSTEMSSL) + int retries; +#endif + soap->errnum = 0; + soap->errmode = 0; + if (soap_valid_socket(soap->socket)) + { + if ((soap->omode & SOAP_IO_UDP) && soap->socket == soap->master) + { +#ifdef IP_MULTICAST_TTL +#ifndef WITH_IPV6 + soap->errmode = 2; + if (soap->fresolve(soap, host, &soap->peer.in.sin_addr)) + { + soap_set_receiver_error(soap, tcp_error(soap), "get host by name failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, soap->socket); + return soap->socket = SOAP_INVALID_SOCKET; + } + soap->peer.in.sin_port = htons((short)port); + soap->errmode = 0; +#else + if (getaddrinfo(host, soap_int2s(soap, port), &hints, &res) || !res) + { + soap_set_receiver_error(soap, SOAP_GAI_STRERROR(err), "getaddrinfo failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, soap->socket); + return soap->socket = SOAP_INVALID_SOCKET; + } + if (soap_memcpy((void*)&soap->peer.storage, sizeof(soap->peer.storage), (const void*)res->ai_addr, res->ai_addrlen)) + { + soap->error = SOAP_EOM; + soap->fclosesocket(soap, soap->socket); + freeaddrinfo(res); + return soap->socket = SOAP_INVALID_SOCKET; + } + soap->peerlen = res->ai_addrlen; + freeaddrinfo(res); +#endif + if (soap->ipv4_multicast_ttl) + { + unsigned char ttl = soap->ipv4_multicast_ttl; + if (setsockopt(soap->socket, IPPROTO_IP, IP_MULTICAST_TTL, (char*)&ttl, sizeof(ttl))) + { + soap->errnum = soap_socket_errno(soap->socket); + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt IP_MULTICAST_TTL failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, soap->socket); + return soap->socket = SOAP_INVALID_SOCKET; + } + } + if (soap->ipv4_multicast_if && !soap->ipv6_multicast_if) + { + if (setsockopt(soap->socket, IPPROTO_IP, IP_MULTICAST_IF, (char*)soap->ipv4_multicast_if, sizeof(struct in_addr))) +#ifndef WINDOWS + { + soap->errnum = soap_socket_errno(soap->socket); + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt IP_MULTICAST_IF failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, soap->socket); + return soap->socket = SOAP_INVALID_SOCKET; + } +#else +#ifndef IP_MULTICAST_IF +#define IP_MULTICAST_IF 2 +#endif + if (setsockopt(soap->socket, IPPROTO_IP, IP_MULTICAST_IF, (char*)soap->ipv4_multicast_if, sizeof(struct in_addr))) + { + soap->errnum = soap_socket_errno(soap->socket); + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt IP_MULTICAST_IF failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, soap->socket); + return soap->socket = SOAP_INVALID_SOCKET; + } +#endif + } +#endif + return soap->socket; + } + soap->fclosesocket(soap, soap->socket); + soap->socket = SOAP_INVALID_SOCKET; + } + if (tcp_init(soap)) + { + soap_set_receiver_error(soap, tcp_error(soap), "TCP init failed in tcp_connect()", SOAP_TCP_ERROR); + return SOAP_INVALID_SOCKET; + } + soap->errmode = 0; +#ifdef WITH_IPV6 + memset((void*)&hints, 0, sizeof(hints)); + hints.ai_family = PF_UNSPEC; +#ifndef WITH_LEAN + if ((soap->omode & SOAP_IO_UDP)) + hints.ai_socktype = SOCK_DGRAM; + else +#endif + hints.ai_socktype = SOCK_STREAM; + soap->errmode = 2; + if (soap->proxy_host) + err = getaddrinfo(soap->proxy_host, soap_int2s(soap, soap->proxy_port), &hints, &res); + else + err = getaddrinfo(host, soap_int2s(soap, port), &hints, &res); + if (err || !res) + { + soap_set_receiver_error(soap, SOAP_GAI_STRERROR(err), "getaddrinfo failed in tcp_connect()", SOAP_TCP_ERROR); + return SOAP_INVALID_SOCKET; + } + ressave = res; +again: + sk = soap->socket = socket(res->ai_family, res->ai_socktype, res->ai_protocol); + soap->error = SOAP_OK; + soap->errmode = 0; +#else +#ifndef WITH_LEAN +again: +#endif +#ifndef WITH_LEAN + if ((soap->omode & SOAP_IO_UDP)) + sk = soap->socket = socket(AF_INET, SOCK_DGRAM, 0); + else +#endif + sk = soap->socket = socket(AF_INET, SOCK_STREAM, 0); +#endif + if (!soap_valid_socket(sk)) + { +#ifdef WITH_IPV6 + if (res->ai_next) + { + res = res->ai_next; + goto again; + } +#endif + soap->errnum = soap_socket_errno(sk); + soap_set_receiver_error(soap, tcp_error(soap), "socket failed in tcp_connect()", SOAP_TCP_ERROR); +#ifdef WITH_IPV6 + freeaddrinfo(ressave); +#endif + return SOAP_INVALID_SOCKET; + } +#ifdef WITH_SOCKET_CLOSE_ON_EXIT +#ifdef WIN32 +#ifndef UNDER_CE + SetHandleInformation((HANDLE)sk, HANDLE_FLAG_INHERIT, 0); +#endif +#else + fcntl(sk, F_SETFD, 1); +#endif +#endif +#ifndef WITH_LEAN + if ((soap->connect_flags & SO_LINGER)) + { + struct linger linger; + memset((void*)&linger, 0, sizeof(linger)); + linger.l_onoff = 1; + linger.l_linger = soap->linger_time; + if (setsockopt(sk, SOL_SOCKET, SO_LINGER, (char*)&linger, sizeof(struct linger))) + { + soap->errnum = soap_socket_errno(sk); + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt SO_LINGER failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); +#ifdef WITH_IPV6 + freeaddrinfo(ressave); +#endif + return soap->socket = SOAP_INVALID_SOCKET; + } + } + if ((soap->connect_flags & ~SO_LINGER) && setsockopt(sk, SOL_SOCKET, soap->connect_flags & ~SO_LINGER, (char*)&set, sizeof(int))) + { + soap->errnum = soap_socket_errno(sk); +#ifdef WITH_IPV6 + freeaddrinfo(ressave); +#endif + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } +#ifndef UNDER_CE + if ((soap->keep_alive || soap->tcp_keep_alive) && setsockopt(sk, SOL_SOCKET, SO_KEEPALIVE, (char*)&set, sizeof(int))) + { + soap->errnum = soap_socket_errno(sk); +#ifdef WITH_IPV6 + freeaddrinfo(ressave); +#endif + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt SO_KEEPALIVE failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } + if (soap->sndbuf > 0 && setsockopt(sk, SOL_SOCKET, SO_SNDBUF, (char*)&soap->sndbuf, sizeof(int))) + { + soap->errnum = soap_socket_errno(sk); +#ifdef WITH_IPV6 + freeaddrinfo(ressave); +#endif + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt SO_SNDBUF failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } + if (soap->rcvbuf > 0 && setsockopt(sk, SOL_SOCKET, SO_RCVBUF, (char*)&soap->rcvbuf, sizeof(int))) + { + soap->errnum = soap_socket_errno(sk); +#ifdef WITH_IPV6 + freeaddrinfo(ressave); +#endif + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt SO_RCVBUF failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } +#ifdef TCP_KEEPIDLE + if (soap->tcp_keep_idle && setsockopt(sk, IPPROTO_TCP, TCP_KEEPIDLE, (char*)&(soap->tcp_keep_idle), sizeof(int))) + { + soap->errnum = soap_socket_errno(sk); +#ifdef WITH_IPV6 + freeaddrinfo(ressave); +#endif + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt TCP_KEEPIDLE failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } +#endif +#ifdef TCP_KEEPINTVL + if (soap->tcp_keep_intvl && setsockopt(sk, IPPROTO_TCP, TCP_KEEPINTVL, (char*)&(soap->tcp_keep_intvl), sizeof(int))) + { + soap->errnum = soap_socket_errno(sk); +#ifdef WITH_IPV6 + freeaddrinfo(ressave); +#endif + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt TCP_KEEPINTVL failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } +#endif +#ifdef TCP_KEEPCNT + if (soap->tcp_keep_cnt && setsockopt(sk, IPPROTO_TCP, TCP_KEEPCNT, (char*)&(soap->tcp_keep_cnt), sizeof(int))) + { + soap->errnum = soap_socket_errno(sk); +#ifdef WITH_IPV6 + freeaddrinfo(ressave); +#endif + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt TCP_KEEPCNT failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } +#endif +#ifdef TCP_NODELAY + if (!(soap->omode & SOAP_IO_UDP) && setsockopt(sk, IPPROTO_TCP, TCP_NODELAY, (char*)&set, sizeof(int))) + { + soap->errnum = soap_socket_errno(sk); +#ifdef WITH_IPV6 + freeaddrinfo(ressave); +#endif + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt TCP_NODELAY failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } +#endif +#ifdef WITH_IPV6 + if ((soap->omode & SOAP_IO_UDP) && soap->ipv6_multicast_if) + { + struct sockaddr_in6 *in6addr = (struct sockaddr_in6*)res->ai_addr; + in6addr->sin6_scope_id = soap->ipv6_multicast_if; + } +#endif +#endif +#ifdef IP_MULTICAST_TTL + if ((soap->omode & SOAP_IO_UDP)) + { + if (soap->ipv4_multicast_ttl) + { + unsigned char ttl = soap->ipv4_multicast_ttl; + if (setsockopt(sk, IPPROTO_IP, IP_MULTICAST_TTL, (char*)&ttl, sizeof(ttl))) + { + soap->errnum = soap_socket_errno(sk); +#ifdef WITH_IPV6 + freeaddrinfo(ressave); +#endif + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt IP_MULTICAST_TTL failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } + } + if ((soap->omode & SOAP_IO_UDP) && soap->ipv4_multicast_if && !soap->ipv6_multicast_if) + { + if (setsockopt(sk, IPPROTO_IP, IP_MULTICAST_IF, (char*)soap->ipv4_multicast_if, sizeof(struct in_addr))) +#ifndef WINDOWS + { + soap->errnum = soap_socket_errno(sk); +#ifdef WITH_IPV6 + freeaddrinfo(ressave); +#endif + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt IP_MULTICAST_IF failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } +#else +#ifndef IP_MULTICAST_IF +#define IP_MULTICAST_IF 2 +#endif + if (setsockopt(sk, IPPROTO_IP, IP_MULTICAST_IF, (char*)soap->ipv4_multicast_if, sizeof(struct in_addr))) + { + soap->errnum = soap_socket_errno(sk); +#ifdef WITH_IPV6 + freeaddrinfo(ressave); +#endif + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt IP_MULTICAST_IF failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } +#endif + } + } +#endif +#endif + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Opening socket=%d to host='%s' port=%d\n", (int)sk, host, port)); +#ifndef WITH_IPV6 + soap->peerlen = sizeof(soap->peer.in); + memset((void*)&soap->peer.in, 0, sizeof(soap->peer.in)); + soap->peer.in.sin_family = AF_INET; +#ifndef WIN32 + if (soap->client_addr) + { + struct sockaddr_in addr; + memset((void*)&addr, 0, sizeof(addr)); + addr.sin_family = AF_INET; + if (soap->client_port >= 0) + addr.sin_port = htons(soap->client_port); + if (inet_pton(AF_INET, soap->client_addr, (void*)&addr.sin_addr) != 1 || bind(sk, (struct sockaddr*)&addr, sizeof(addr))) + { + soap->errnum = soap_socket_errno(sk); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not bind before connect\n")); + soap_set_receiver_error(soap, tcp_error(soap), "bind failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + soap->client_addr = NULL; + soap->client_port = -1; + return soap->socket = SOAP_INVALID_SOCKET; + } + soap->client_addr = NULL; /* disable bind before connect, so need to set it again before the next connect */ + soap->client_port = -1; /* disable bind before connect, so need to set it again before the next connect */ + } + else +#endif + if (soap->client_port >= 0) + { + struct sockaddr_in addr; + memset((void*)&addr, 0, sizeof(addr)); + addr.sin_family = AF_INET; + addr.sin_port = htons(soap->client_port); + if (bind(sk, (struct sockaddr*)&addr, sizeof(addr))) + { + soap->errnum = soap_socket_errno(sk); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not bind before connect\n")); + soap_set_receiver_error(soap, tcp_error(soap), "bind failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + soap->client_port = -1; + return soap->socket = SOAP_INVALID_SOCKET; + } + soap->client_port = -1; /* disable bind before connect, so need to set it again before the next connect */ + } +#ifndef WIN32 + if (soap->client_interface) + { + if (inet_pton(AF_INET, soap->client_interface, &soap->peer.in.sin_addr) != 1) + { + soap->errnum = soap_socket_errno(sk); + soap_set_receiver_error(soap, tcp_error(soap), "inet_pton() failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + soap->client_interface = NULL; + return soap->socket = SOAP_INVALID_SOCKET; + } + soap->client_interface = NULL; /* disable client interface, so need to set it again before the next connect */ + } +#endif + soap->errmode = 2; + if (soap->proxy_host) + { + if (soap->fresolve(soap, soap->proxy_host, &soap->peer.in.sin_addr)) + { + soap_set_receiver_error(soap, tcp_error(soap), "get proxy host by name failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } + soap->peer.in.sin_port = htons((short)soap->proxy_port); + } + else + { + if (soap->fresolve(soap, host, &soap->peer.in.sin_addr)) + { + soap_set_receiver_error(soap, tcp_error(soap), "get host by name failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } + soap->peer.in.sin_port = htons((short)port); + } + soap->errmode = 0; +#ifndef WITH_LEAN + if ((soap->omode & SOAP_IO_UDP)) + return sk; +#endif +#else +#ifndef WIN32 + if (soap->client_addr) + { + struct sockaddr_in6 addr; + memset((void*)&addr, 0, sizeof(addr)); + addr.sin6_family = AF_INET6; + if ((soap->client_addr_ipv6 && res->ai_family == AF_INET6 && inet_pton(AF_INET6, soap->client_addr_ipv6, (void*)&addr.sin6_addr.s6_addr) == 1) + || (!soap->client_addr_ipv6 && inet_pton(AF_INET6, soap->client_addr, (void*)&addr.sin6_addr.s6_addr) == 1) + ) + { + if (soap->client_port >= 0) + addr.sin6_port = htons(soap->client_port); + if (bind(sk, (struct sockaddr*)&addr, sizeof(addr))) + { + soap->errnum = soap_socket_errno(sk); + freeaddrinfo(ressave); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not bind before connect\n")); + soap_set_receiver_error(soap, tcp_error(soap), "bind failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + soap->client_addr = NULL; + soap->client_addr_ipv6 = NULL; + soap->client_port = -1; + return soap->socket = SOAP_INVALID_SOCKET; + } + } + else /* not an IPv6 address, must be IPv4 */ + { + struct sockaddr_in addr; + memset((void*)&addr, 0, sizeof(addr)); + addr.sin_family = AF_INET; + if (soap->client_port >= 0) + addr.sin_port = htons(soap->client_port); + if (inet_pton(AF_INET, soap->client_addr, (void*)&addr.sin_addr) != 1 || bind(sk, (struct sockaddr*)&addr, sizeof(addr))) + { + soap->errnum = soap_socket_errno(sk); + freeaddrinfo(ressave); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not bind before connect\n")); + soap_set_receiver_error(soap, tcp_error(soap), "bind failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + soap->client_addr = NULL; + soap->client_addr_ipv6 = NULL; + soap->client_port = -1; + return soap->socket = SOAP_INVALID_SOCKET; + } + } + soap->client_addr = NULL; /* disable bind before connect, so need to set it again before the next connect */ + soap->client_addr_ipv6 = NULL; /* disable bind before connect, so need to set it again before the next connect */ + soap->client_port = -1; /* disable bind before connect, so need to set it again before the next connect */ + } + else +#endif + if (soap->client_port >= 0) + { + struct sockaddr_in6 addr; + memset((void*)&addr, 0, sizeof(addr)); + addr.sin6_family = AF_INET6; + addr.sin6_port = htons(soap->client_port); + if (bind(sk, (struct sockaddr*)&addr, sizeof(addr))) + { + soap->errnum = soap_socket_errno(sk); + freeaddrinfo(ressave); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not bind before connect\n")); + soap_set_receiver_error(soap, tcp_error(soap), "bind failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + soap->client_port = -1; + return soap->socket = SOAP_INVALID_SOCKET; + } + soap->client_port = -1; /* disable bind before connect, so need to set it again before the next connect */ + } +#ifndef WIN32 + if (soap->client_interface) + { + if (inet_pton(AF_INET6, soap->client_interface, res->ai_addr) != 1) + { + if (inet_pton(AF_INET, soap->client_interface, res->ai_addr) != 1) + { + soap->errnum = soap_socket_errno(sk); + freeaddrinfo(ressave); + soap_set_receiver_error(soap, tcp_error(soap), "inet_pton() failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + soap->client_interface = NULL; + return soap->socket = SOAP_INVALID_SOCKET; + } + } + soap->client_interface = NULL; /* disable client interface, so need to set it again before the next connect */ + } +#endif +#ifndef WITH_LEAN + if ((soap->omode & SOAP_IO_UDP)) + { + if (soap_memcpy((void*)&soap->peer.storage, sizeof(soap->peer.storage), (const void*)res->ai_addr, res->ai_addrlen)) + { + soap->error = SOAP_EOM; + soap->fclosesocket(soap, sk); + soap->socket = sk = SOAP_INVALID_SOCKET; + } + soap->peerlen = res->ai_addrlen; + freeaddrinfo(ressave); + return sk; + } +#endif +#endif +#ifndef WITH_LEAN + if (soap->connect_timeout) + SOAP_SOCKNONBLOCK(sk) + else + SOAP_SOCKBLOCK(sk) + retries = 10; +#endif + for (;;) + { +#ifdef WITH_IPV6 + if (connect(sk, res->ai_addr, (int)res->ai_addrlen)) +#else + if (connect(sk, &soap->peer.addr, sizeof(soap->peer.in))) +#endif + { + err = soap_socket_errno(sk); +#ifdef WITH_IPV6 + if (err == SOAP_ECONNREFUSED && res->ai_next) + { + soap->fclosesocket(soap, sk); + res = res->ai_next; + goto again; + } +#endif +#ifndef WITH_LEAN + if (err == SOAP_EADDRINUSE) + { + soap->fclosesocket(soap, sk); + if (retries-- > 0) + goto again; + } + else if (soap->connect_timeout && (err == SOAP_EINPROGRESS || err == SOAP_EAGAIN || err == SOAP_EWOULDBLOCK)) + { + SOAP_SOCKLEN_T k; + for (;;) + { + int r; +#ifdef WITH_SELF_PIPE + r = tcp_select(soap, sk, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_PIP, soap->connect_timeout); + if ((r & SOAP_TCP_SELECT_PIP)) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Connection closed by self pipe\n")); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } +#else + r = tcp_select(soap, sk, SOAP_TCP_SELECT_SND, soap->connect_timeout); +#endif + if (r > 0) + break; + if (!r) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Connect timeout\n")); + soap_set_receiver_error(soap, "Timeout", "connect failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); +#ifdef WITH_IPV6 + if (res->ai_next) + { + res = res->ai_next; + goto again; + } + freeaddrinfo(ressave); +#endif + return soap->socket = SOAP_INVALID_SOCKET; + } + r = soap->errnum = soap_socket_errno(sk); + if (r != SOAP_EINTR) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not connect to host\n")); + soap_set_receiver_error(soap, tcp_error(soap), "connect failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); +#ifdef WITH_IPV6 + if (res->ai_next) + { + res = res->ai_next; + goto again; + } + freeaddrinfo(ressave); +#endif + return soap->socket = SOAP_INVALID_SOCKET; + } + } + k = (SOAP_SOCKLEN_T)sizeof(soap->errnum); + if (!getsockopt(sk, SOL_SOCKET, SO_ERROR, (char*)&soap->errnum, &k) && !soap->errnum) /* portability note: see SOAP_SOCKLEN_T definition in stdsoap2.h */ + break; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not connect to host\n")); + if (!soap->errnum) + soap->errnum = soap_socket_errno(sk); + soap_set_receiver_error(soap, tcp_error(soap), "connect failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); +#ifdef WITH_IPV6 + if (res->ai_next) + { + res = res->ai_next; + goto again; + } + freeaddrinfo(ressave); +#endif + return soap->socket = SOAP_INVALID_SOCKET; + } +#endif +#ifdef WITH_IPV6 + if (res->ai_next) + { + res = res->ai_next; + soap->fclosesocket(soap, sk); + goto again; + } +#endif + if (err && err != SOAP_EINTR) + { + soap->errnum = err; +#ifdef WITH_IPV6 + freeaddrinfo(ressave); +#endif + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not connect to host\n")); + soap_set_receiver_error(soap, tcp_error(soap), "connect failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } + } + else + { + break; + } + } +#ifdef WITH_IPV6 + soap->peerlen = 0; /* IPv6: already connected so use send() */ + freeaddrinfo(ressave); +#endif + soap->imode &= ~SOAP_ENC_SSL; + soap->omode &= ~SOAP_ENC_SSL; + if (endpoint && !soap_tag_cmp(endpoint, "https:*")) + { +#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) || defined(WITH_SYSTEMSSL) +#ifdef WITH_OPENSSL + BIO *bio; +#endif +#ifdef WITH_SYSTEMSSL + gsk_iocallback local_io = { ssl_recv, ssl_send, NULL, NULL, NULL, NULL }; +#endif + int r; + if (soap->proxy_host) + { + soap_mode m = soap->mode; /* preserve settings */ + soap_mode om = soap->omode; /* make sure we only parse HTTP */ + ULONG64 n = soap->count; /* save the content length */ + const char *userid, *passwd; + int status = soap->status; /* save the current status/command */ + int keep_alive = soap->keep_alive; /* save the KA status */ + soap->omode &= ~SOAP_ENC; /* mask IO and ENC */ + soap->omode |= SOAP_IO_BUFFER; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Connecting to %s proxy server %s for destination endpoint %s\n", soap->proxy_http_version, soap->proxy_host, endpoint)); +#ifdef WITH_NTLM + if (soap->ntlm_challenge && soap_ntlm_handshake(soap, SOAP_CONNECT, endpoint, host, port)) + { + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } +#endif + if (soap_init_send(soap)) + { + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } + soap->status = SOAP_CONNECT; + if (!soap->keep_alive) + soap->keep_alive = -1; /* must keep alive */ + soap->error = soap->fpost(soap, endpoint, host, port, NULL, NULL, 0); + if (soap->error + || soap_end_send_flush(soap)) + { + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } + soap->keep_alive = keep_alive; + soap->omode = om; + om = soap->imode; + soap->imode &= ~SOAP_ENC; /* mask IO and ENC */ + userid = soap->userid; /* preserve */ + passwd = soap->passwd; /* preserve */ + soap->error = soap->fparse(soap); + if (soap->error) + { + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } + soap->status = status; /* restore */ + soap->userid = userid; /* restore */ + soap->passwd = passwd; /* restore */ + soap->imode = om; /* restore */ + soap->count = n; /* restore */ + if (soap_init_send(soap)) + { + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } + if (endpoint) + soap_strcpy(soap->endpoint, sizeof(soap->endpoint), endpoint); /* restore */ + soap->mode = m; + } +#ifdef WITH_OPENSSL + ERR_clear_error(); + soap->ssl_flags |= SOAP_SSL_CLIENT; + if (!soap->ctx && (soap->error = soap->fsslauth(soap)) != SOAP_OK) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "SSL required, but no ctx set\n")); + soap->fclosesocket(soap, sk); + soap->error = SOAP_SSL_ERROR; + return soap->socket = SOAP_INVALID_SOCKET; + } + if (!soap->ssl) + { + soap->ssl = SSL_new(soap->ctx); + if (!soap->ssl) + { + soap->fclosesocket(soap, sk); + soap->error = SOAP_SSL_ERROR; + return soap->socket = SOAP_INVALID_SOCKET; + } + } + else + { + SSL_clear(soap->ssl); + } + if (soap->session) + { + if (!strcmp(soap->session_host, host) && soap->session_port == port) + SSL_set_session(soap->ssl, soap->session); + SSL_SESSION_free(soap->session); + soap->session = NULL; + } +#if OPENSSL_VERSION_NUMBER >= 0x1000000aL + if (!(soap->ssl_flags & SOAP_SSLv3) && !SSL_set_tlsext_host_name(soap->ssl, host)) + { + soap_set_receiver_error(soap, "SSL/TLS error", "SNI failed", SOAP_SSL_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } +#elif (OPENSSL_VERSION_NUMBER >= 0x0090800fL) && defined(SSL_CTRL_SET_TLSEXT_HOSTNAME) + if (!SSL_ctrl(soap->ssl, SSL_CTRL_SET_TLSEXT_HOSTNAME, TLSEXT_NAMETYPE_host_name, (void*)host)) + { + soap_set_receiver_error(soap, "SSL/TLS error", "SNI failed", SOAP_SSL_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } +#endif + bio = BIO_new_socket((int)sk, BIO_NOCLOSE); + SSL_set_bio(soap->ssl, bio, bio); + if (soap->connect_timeout || soap->recv_timeout || soap->send_timeout) + { + /* Set SSL connect timeout and set SSL sockets to non-blocking */ + int t = soap->recv_timeout > soap->send_timeout ? soap->recv_timeout : soap->send_timeout; + if (soap->connect_timeout > 0 && t < soap->connect_timeout) + t = soap->connect_timeout; + if (t > 0) + retries = 10 * t; + else if (t > -100000) + retries = 1; + else + retries = t/-100000; + SOAP_SOCKNONBLOCK(sk) + } + else + { + /* Set sockets to blocking */ + retries = 1; + SOAP_SOCKBLOCK(sk) + } + err = SSL_ERROR_NONE; + /* Try connecting until success or timeout */ + do + { + if ((r = SSL_connect(soap->ssl)) <= 0) + { + err = SSL_get_error(soap->ssl, r); + if (err == SSL_ERROR_WANT_CONNECT || err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE) + { + int s; + if (err == SSL_ERROR_WANT_READ) + s = tcp_select(soap, sk, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, -100000); + else + s = tcp_select(soap, sk, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, -100000); + if (s < 0) + break; + if (s == 0 && retries-- <= 0) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "SSL/TLS connect timeout\n")); + soap_set_receiver_error(soap, "Timeout", "SSL_connect() failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } + } + else + { + soap->errnum = soap_socket_errno(sk); + break; + } + } + } while (!SSL_is_init_finished(soap->ssl)); + if (r <= 0) + { + soap_set_sender_error(soap, soap_ssl_error(soap, r, err), "SSL/TLS handshake failed", SOAP_SSL_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } + /* Check server credentials when required */ + if ((soap->ssl_flags & SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION)) + { + if ((err = SSL_get_verify_result(soap->ssl)) != X509_V_OK) + { + soap_set_sender_error(soap, X509_verify_cert_error_string(err), "SSL/TLS certificate presented by peer cannot be verified in tcp_connect()", SOAP_SSL_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } + if (!(soap->ssl_flags & SOAP_SSL_SKIP_HOST_CHECK)) + { + X509_NAME *subj; + STACK_OF(CONF_VALUE) *val = NULL; +#if OPENSSL_VERSION_NUMBER >= 0x0090800fL + GENERAL_NAMES *names = NULL; +#else + int ext_count; +#endif + int ok = 0; + X509 *peer = SSL_get_peer_certificate(soap->ssl); + if (!peer) + { + soap_set_sender_error(soap, "SSL/TLS error", "No SSL/TLS certificate was presented by the peer in tcp_connect()", SOAP_SSL_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } +#if OPENSSL_VERSION_NUMBER < 0x0090800fL + ext_count = X509_get_ext_count(peer); + if (ext_count > 0) + { + int i; + for (i = 0; i < ext_count; i++) + { + X509_EXTENSION *ext = X509_get_ext(peer, i); + const char *ext_str = OBJ_nid2sn(OBJ_obj2nid(X509_EXTENSION_get_object(ext))); + if (ext_str && !strcmp(ext_str, "subjectAltName")) + { + X509V3_EXT_METHOD *meth = (X509V3_EXT_METHOD*)X509V3_EXT_get(ext); + unsigned char *data; + if (!meth) + break; + data = ext->value->data; + if (data) + { +#if OPENSSL_VERSION_NUMBER > 0x00907000L + void *ext_data; + if (meth->it) + ext_data = ASN1_item_d2i(NULL, &data, ext->value->length, ASN1_ITEM_ptr(meth->it)); + else + { +#if OPENSSL_VERSION_NUMBER > 0x0090800fL + ext_data = meth->d2i(NULL, (const unsigned char **)&data, ext->value->length); +#else + ext_data = meth->d2i(NULL, &data, ext->value->length); +#endif + } + if (ext_data) + val = meth->i2v(meth, ext_data, NULL); + else + val = NULL; + if (meth->it) + ASN1_item_free((ASN1_VALUE*)ext_data, ASN1_ITEM_ptr(meth->it)); + else + meth->ext_free(ext_data); +#else + void *ext_data = meth->d2i(NULL, &data, ext->value->length); + if (ext_data) + val = meth->i2v(meth, ext_data, NULL); + meth->ext_free(ext_data); +#endif + if (val) + { + int j; + for (j = 0; j < sk_CONF_VALUE_num(val); j++) + { + CONF_VALUE *nval = sk_CONF_VALUE_value(val, j); + if (nval && (!strcmp(nval->name, "DNS") || !strcmp(nval->name, "IP Address")) && !soap_tag_cmp(host, nval->value)) + { + ok = 1; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "SSL: host name %s match with certificate %s %s\n", host, nval->name, nval->value)); + break; + } + else + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "SSL: host name %s mismatch with certificate %s %s\n", host, nval->name, nval->value)); + } + } + sk_CONF_VALUE_pop_free(val, X509V3_conf_free); + } + } + } + if (ok) + break; + } + } +#else + names = (GENERAL_NAMES*)X509_get_ext_d2i(peer, NID_subject_alt_name, NULL, NULL); + if (names) + { + val = i2v_GENERAL_NAMES(NULL, names, val); + sk_GENERAL_NAME_pop_free(names, GENERAL_NAME_free); + } + if (val) + { + int j; + for (j = 0; j < sk_CONF_VALUE_num(val); j++) + { + CONF_VALUE *nval = sk_CONF_VALUE_value(val, j); + if (nval && (!strcmp(nval->name, "DNS") || !strcmp(nval->name, "IP Address")) && !soap_tag_cmp(host, nval->value)) + { + ok = 1; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "SSL: host name %s match with certificate %s %s\n", host, nval->name, nval->value)); + break; + } + else + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "SSL: host name %s mismatch with certificate %s %s\n", host, nval->name, nval->value)); + } + } + sk_CONF_VALUE_pop_free(val, X509V3_conf_free); + } +#endif + if (!ok && (subj = X509_get_subject_name(peer)) != 0) + { + int i = -1; + do + { + ASN1_STRING *name; + i = X509_NAME_get_index_by_NID(subj, NID_commonName, i); + if (i == -1) + break; + name = X509_NAME_ENTRY_get_data(X509_NAME_get_entry(subj, i)); + if (name) + { +#if OPENSSL_VERSION_NUMBER < 0x10100000L + const char *tmp = (const char*)ASN1_STRING_data(name); +#else + const char *tmp = (const char*)ASN1_STRING_get0_data(name); +#endif + if (!soap_tag_cmp(host, tmp)) + { + ok = 1; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "SSL: host name %s match with certificate subject %s\n", host, tmp)); + } + else + { + unsigned char *tmp = NULL; + ASN1_STRING_to_UTF8(&tmp, name); + if (tmp) + { + if (!soap_tag_cmp(host, (const char*)tmp)) + { + ok = 1; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "SSL: host name %s match with certificate subject %s\n", host, tmp)); + } + else if (tmp[0] == '*') /* wildcard domain */ + { + const char *t = strchr(host, '.'); + if (t && !soap_tag_cmp(t, (const char*)tmp + 1)) + { + ok = 1; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "SSL: host name %s match with certificate subject %s\n", host, tmp)); + } + } + else + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "SSL: host name %s mismatch with certificate %s\n", host, tmp)); + } + OPENSSL_free(tmp); + } + } + } + } while (!ok); + } + X509_free(peer); + if (!ok) + { + soap_set_sender_error(soap, "SSL/TLS error", "SSL/TLS certificate host name mismatch in tcp_connect()", SOAP_SSL_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } + } + } +#endif +#ifdef WITH_GNUTLS + soap->ssl_flags |= SOAP_SSL_CLIENT; + if (!soap->session && (soap->error = soap->fsslauth(soap)) != SOAP_OK) + { + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } + gnutls_transport_set_ptr(soap->session, (gnutls_transport_ptr_t)(long)sk); + if (soap->connect_timeout || soap->recv_timeout || soap->send_timeout) + { + /* Set SSL connect timeout and set SSL sockets to non-blocking */ + int t = soap->recv_timeout > soap->send_timeout ? soap->recv_timeout : soap->send_timeout; + if (soap->connect_timeout > 0 && t < soap->connect_timeout) + t = soap->connect_timeout; + if (t > 0) + retries = 10 * t; + else if (t > -100000) + retries = 1; + else + retries = t/-100000; + SOAP_SOCKNONBLOCK(sk) + } + else + { + /* Set sockets to blocking */ + retries = 1; + SOAP_SOCKBLOCK(sk) + } + /* Try connecting until success or timeout */ + while ((r = gnutls_handshake(soap->session))) + { + /* GNUTLS repeat handhake when GNUTLS_E_AGAIN */ + if (r == GNUTLS_E_AGAIN || r == GNUTLS_E_INTERRUPTED) + { + int s; + if (!gnutls_record_get_direction(soap->session)) + s = tcp_select(soap, sk, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, -100000); + else + s = tcp_select(soap, sk, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, -100000); + if (s < 0) + break; + if (s == 0 && retries-- <= 0) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "SSL/TLS connect timeout\n")); + soap_set_receiver_error(soap, "Timeout", "SSL_connect() failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } + } + else + { + soap->errnum = soap_socket_errno(sk); + break; + } + } + if (r) + { + soap_set_sender_error(soap, soap_ssl_error(soap, r, 0), "SSL/TLS handshake failed", SOAP_SSL_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } + if ((soap->ssl_flags & SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION)) + { + const char *s = ssl_verify(soap, host); + if (s) + { + soap->fclosesocket(soap, sk); + soap->error = soap_set_sender_error(soap, "SSL/TLS verify error", s, SOAP_SSL_ERROR); + return soap->socket = SOAP_INVALID_SOCKET; + } + } +#endif +#ifdef WITH_SYSTEMSSL + soap->ssl_flags |= SOAP_SSL_CLIENT; + if (!soap->ctx && (soap->error = soap->fsslauth(soap)) != SOAP_OK) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "SSL required, but no ctx set\n")); + soap->fclosesocket(soap, sk); + soap->error = SOAP_SSL_ERROR; + return soap->socket = SOAP_INVALID_SOCKET; + } + if (soap->connect_timeout || soap->recv_timeout || soap->send_timeout) + { + /* Set SSL connect timeout and set SSL sockets to non-blocking */ + int t = soap->recv_timeout > soap->send_timeout ? soap->recv_timeout : soap->send_timeout; + if (soap->connect_timeout > 0 && t < soap->connect_timeout) + t = soap->connect_timeout; + if (t > 0) + retries = 10 * t; + else if (t > -100000) + retries = 1; + else + retries = t/-100000; + SOAP_SOCKNONBLOCK(sk) + } + else + { + /* Set sockets to blocking */ + retries = 1; + SOAP_SOCKBLOCK(sk) + } + r = gsk_secure_socket_open(soap->ctx, &soap->ssl); + if (r == GSK_OK) + r = gsk_attribute_set_numeric_value(soap->ssl, GSK_FD, sk); + if (r == GSK_OK) + r = gsk_attribute_set_buffer(soap->ssl, GSK_KEYRING_LABEL, soap->cafile, 0); /* Certificate label */ + if (r == GSK_OK) + r = gsk_attribute_set_enum(soap->ssl, GSK_SESSION_TYPE, GSK_CLIENT_SESSION); + if (r == GSK_OK) + r = gsk_attribute_set_buffer(soap->ssl, GSK_V3_CIPHER_SPECS_EXPANDED, "0035002F000A", 0); + if (r == GSK_OK) + r = gsk_attribute_set_enum(soap->ssl, GSK_V3_CIPHERS, GSK_V3_CIPHERS_CHAR4); + if (r == GSK_OK) + r = gsk_attribute_set_callback(soap->ssl, GSK_IO_CALLBACK, &local_io); + if (r != GSK_OK) + { + soap_set_receiver_error(soap, gsk_strerror(r), "SYSTEM SSL error in tcp_connect()", SOAP_SSL_ERROR); + return soap->socket = SOAP_INVALID_SOCKET; + } + /* Try connecting until success or timeout */ + while ((r = gsk_secure_socket_init(soap->ssl)) != GSK_OK) + { + if (r == GSK_WOULD_BLOCK_READ || r == GSK_WOULD_BLOCK_WRITE) + { + int s; + if (r == GSK_WOULD_BLOCK_READ) + s = tcp_select(soap, sk, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, -100000); + else + s = tcp_select(soap, sk, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, -100000); + if (s < 0) + break; + if (s == 0 && retries-- <= 0) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "SSL/TLS connect timeout\n")); + soap_set_receiver_error(soap, "Timeout", "SSL_connect() failed in tcp_connect()", SOAP_TCP_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } + } + else + { + soap->errnum = soap_socket_errno(sk); + break; + } + } + if (r != GSK_OK) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "SSL_connect/select error in tcp_connect\n")); + soap_set_receiver_error(soap, gsk_strerror(r), "SSL/TLS handshake failed", SOAP_SSL_ERROR); + soap->fclosesocket(soap, sk); + return soap->socket = SOAP_INVALID_SOCKET; + } +#endif + soap->imode |= SOAP_ENC_SSL; + soap->omode |= SOAP_ENC_SSL; +#else + soap->fclosesocket(soap, sk); + soap->error = SOAP_SSL_ERROR; + return soap->socket = SOAP_INVALID_SOCKET; +#endif + } + if (soap->recv_timeout || soap->send_timeout) + SOAP_SOCKNONBLOCK(sk) + else + SOAP_SOCKBLOCK(sk) + return sk; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIO +static int +tcp_select(struct soap *soap, SOAP_SOCKET sk, int flags, int timeout) +{ + int r; + struct timeval tv; + fd_set fd[3], *rfd, *sfd, *efd; + int retries = 0; + int eintr = SOAP_MAXEINTR; + soap->errnum = 0; + if (!soap_valid_socket(sk)) + { + soap->error = SOAP_EOF; + return -1; + } +#ifndef WIN32 +#if !defined(FD_SETSIZE) || defined(__QNX__) || defined(QNX) + /* no FD_SETSIZE or select() is not MT safe on some QNX: always poll */ + if (1) +#else + /* if fd max set size exceeded, use poll() when available */ + if ((int)sk >= (int)FD_SETSIZE) +#endif +#ifdef HAVE_POLL + { +#ifdef WITH_SELF_PIPE + struct pollfd pollfd[2]; + pollfd[1].fd = soap->pipe_fd[0]; + pollfd[1].events = POLLIN; +#else + struct pollfd pollfd[1]; +#endif + pollfd[0].fd = (int)sk; + pollfd[0].events = 0; + if ((flags & SOAP_TCP_SELECT_RCV)) + pollfd[0].events |= POLLIN; + if ((flags & SOAP_TCP_SELECT_SND)) + pollfd[0].events |= POLLOUT; + if ((flags & SOAP_TCP_SELECT_ERR)) + pollfd[0].events |= POLLERR; + if (timeout <= 0) + timeout /= -1000; /* -usec -> ms */ + else + { + retries = timeout - 1; + timeout = 1000; + } + do + { +#ifdef WITH_SELF_PIPE + r = poll(pollfd, 2, timeout); +#else + r = poll(pollfd, 1, timeout); +#endif + if (r < 0 && (soap->errnum = soap_socket_errno(sk)) == SOAP_EINTR && eintr > 0) + { + eintr--; + r = 0; + } + else if (retries-- <= 0) + { + break; + } + } while (r == 0); + if (r > 0) + { + r = 0; + if ((flags & SOAP_TCP_SELECT_RCV) && (pollfd[0].revents & POLLIN)) + r |= SOAP_TCP_SELECT_RCV; + if ((flags & SOAP_TCP_SELECT_SND) && (pollfd[0].revents & POLLOUT)) + r |= SOAP_TCP_SELECT_SND; + if ((flags & SOAP_TCP_SELECT_ERR) && (pollfd[0].revents & POLLERR)) + r |= SOAP_TCP_SELECT_ERR; +#ifdef WITH_SELF_PIPE + if ((flags & SOAP_TCP_SELECT_PIP) && (pollfd[1].revents & POLLIN)) + { + char ch; + for (;;) + { + if (read(soap->pipe_fd[0], &ch, 1) == -1) + { + if (soap_socket_errno(soap->pipe_fd[0]) == SOAP_EAGAIN) + break; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Self pipe read error\n")); + return -1; + } + } + r |= SOAP_TCP_SELECT_PIP; + } +#endif + } + else if (r == 0) + { + soap->errnum = 0; + } + return r; + } +#else + { + soap->error = SOAP_FD_EXCEEDED; + return -1; + } +#endif +#endif + if (timeout > 0) + retries = timeout - 1; + do + { + rfd = sfd = efd = NULL; +#ifdef WITH_SELF_PIPE + if ((flags & SOAP_TCP_SELECT_PIP) || (flags & SOAP_TCP_SELECT_RCV)) + { + rfd = &fd[0]; + FD_ZERO(rfd); + if ((flags & SOAP_TCP_SELECT_PIP)) + FD_SET(soap->pipe_fd[0], rfd); + if ((flags & SOAP_TCP_SELECT_RCV)) + FD_SET(sk, rfd); + } +#else + if ((flags & SOAP_TCP_SELECT_RCV)) + { + rfd = &fd[0]; + FD_ZERO(rfd); + FD_SET(sk, rfd); + } +#endif + if ((flags & SOAP_TCP_SELECT_SND)) + { + sfd = &fd[1]; + FD_ZERO(sfd); + FD_SET(sk, sfd); + } + if ((flags & SOAP_TCP_SELECT_ERR)) + { + efd = &fd[2]; + FD_ZERO(efd); + FD_SET(sk, efd); + } + if (timeout <= 0) + { + tv.tv_sec = -timeout / 1000000; + tv.tv_usec = -timeout % 1000000; + } + else + { + tv.tv_sec = 1; + tv.tv_usec = 0; + } +#ifdef WITH_SELF_PIPE + r = select((int)(sk > soap->pipe_fd[0] ? sk : soap->pipe_fd[0]) + 1, rfd, sfd, efd, &tv); +#else + r = select((int)sk + 1, rfd, sfd, efd, &tv); +#endif + if (r < 0 && (soap->errnum = soap_socket_errno(sk)) == SOAP_EINTR && eintr > 0) + { + eintr--; + r = 0; + } + else if (retries-- <= 0) + { + break; + } + } while (r == 0); + if (r > 0) + { + r = 0; + if ((flags & SOAP_TCP_SELECT_RCV) && FD_ISSET(sk, rfd)) + r |= SOAP_TCP_SELECT_RCV; + if ((flags & SOAP_TCP_SELECT_SND) && FD_ISSET(sk, sfd)) + r |= SOAP_TCP_SELECT_SND; + if ((flags & SOAP_TCP_SELECT_ERR) && FD_ISSET(sk, efd)) + r |= SOAP_TCP_SELECT_ERR; +#ifdef WITH_SELF_PIPE + if ((flags & SOAP_TCP_SELECT_PIP) && FD_ISSET(soap->pipe_fd[0], rfd)) + { + char ch; + for (;;) + { + if (read(soap->pipe_fd[0], &ch, 1) == -1) + { + if (soap_socket_errno(soap->pipe_fd[0]) == SOAP_EAGAIN) + break; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Self pipe read error\n")); + return -1; + } + } + r |= SOAP_TCP_SELECT_PIP; + } +#endif + } + else if (r == 0) + { + soap->errnum = 0; + } + return r; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIO +static SOAP_SOCKET +tcp_accept(struct soap *soap, SOAP_SOCKET sk, struct sockaddr *addr, int *len) +{ + SOAP_SOCKET s; + (void)soap; + s = accept(sk, addr, (SOAP_SOCKLEN_T*)len); /* portability note: see SOAP_SOCKLEN_T definition in stdsoap2.h */ +#ifdef WITH_SOCKET_CLOSE_ON_EXIT +#ifdef WIN32 +#ifndef UNDER_CE + SetHandleInformation((HANDLE)s, HANDLE_FLAG_INHERIT, 0); +#endif +#else + fcntl(s, F_SETFD, FD_CLOEXEC); +#endif +#endif + return s; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIO +static int +tcp_disconnect(struct soap *soap) +{ +#ifdef WITH_OPENSSL + if (soap->ssl) + { + int r; + if (soap->session) + { + SSL_SESSION_free(soap->session); + soap->session = NULL; + } + if (*soap->host) + { + soap->session = SSL_get1_session(soap->ssl); + if (soap->session) + { + soap_strcpy(soap->session_host, sizeof(soap->session_host), soap->host); + soap->session_port = soap->port; + } + } + r = SSL_shutdown(soap->ssl); + /* SSL shutdown does not work when reads are pending, non-blocking */ + if (r == 0) + { + while (SSL_want_read(soap->ssl)) + { + if (SSL_read(soap->ssl, NULL, 0) + || soap_socket_errno(soap->socket) != SOAP_EAGAIN) + { + r = SSL_shutdown(soap->ssl); + break; + } + } + } + if (r == 0) + { + if (soap_valid_socket(soap->socket)) + { + if (!soap->fshutdownsocket(soap, soap->socket, SOAP_SHUT_WR)) + { +#if !defined(WITH_LEAN) && !defined(WIN32) + /* + wait up to 5 seconds for close_notify to be sent by peer (if peer not + present, this avoids calling SSL_shutdown() which has a lengthy return + timeout) + */ + r = tcp_select(soap, soap->socket, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, 5); + if (r <= 0) + { + soap->errnum = 0; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Connection lost...\n")); + soap->fclosesocket(soap, soap->socket); + soap->socket = SOAP_INVALID_SOCKET; + ERR_clear_error(); + SSL_free(soap->ssl); + soap->ssl = NULL; + return SOAP_OK; + } +#else + r = SSL_shutdown(soap->ssl); + if (r <= 0) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Shutdown failed: %d\n", SSL_get_error(soap->ssl, r))); + if (soap_valid_socket(soap->socket) && !(soap->omode & SOAP_IO_UDP)) + { + soap->fclosesocket(soap, soap->socket); + soap->socket = SOAP_INVALID_SOCKET; + } + } +#endif + } + } + } + SSL_free(soap->ssl); + soap->ssl = NULL; + ERR_clear_error(); + } +#endif +#ifdef WITH_GNUTLS + if (soap->session) + { + gnutls_bye(soap->session, GNUTLS_SHUT_RDWR); + gnutls_deinit(soap->session); + soap->session = NULL; + } +#endif +#ifdef WITH_SYSTEMSSL + if (soap->ssl) + { + gsk_secure_socket_shutdown(soap->ssl); + gsk_secure_socket_close(&soap->ssl); + } +#endif + if (soap_valid_socket(soap->socket) && !(soap->omode & SOAP_IO_UDP)) + { + soap->fshutdownsocket(soap, soap->socket, SOAP_SHUT_RDWR); + soap->fclosesocket(soap, soap->socket); + soap->socket = SOAP_INVALID_SOCKET; + } + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIO +static int +tcp_closesocket(struct soap *soap, SOAP_SOCKET sk) +{ + (void)soap; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Close socket=%d\n", (int)sk)); + return soap_closesocket(sk); +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIO +static int +tcp_shutdownsocket(struct soap *soap, SOAP_SOCKET sk, int how) +{ + (void)soap; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Shutdown socket=%d how=%d\n", (int)sk, how)); + return shutdown(sk, how); +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIO +SOAP_FMAC1 +SOAP_SOCKET +SOAP_FMAC2 +soap_bind(struct soap *soap, const char *host, int port, int backlog) +{ +#if defined(WITH_IPV6) + struct addrinfo *addrinfo = NULL; + struct addrinfo hints; + struct addrinfo res; + int err; + int set = 1; + int unset = 0; +#elif !defined(WITH_LEAN) + int set = 1; +#endif + if (soap_valid_socket(soap->master)) + { + soap->fclosesocket(soap, soap->master); + soap->master = SOAP_INVALID_SOCKET; + } + soap->socket = SOAP_INVALID_SOCKET; + soap->errnum = 0; + soap->errmode = 1; + if (tcp_init(soap)) + { + soap_set_receiver_error(soap, tcp_error(soap), "TCP init failed in soap_bind()", SOAP_TCP_ERROR); + return SOAP_INVALID_SOCKET; + } +#ifdef WITH_IPV6 + memset((void*)&hints, 0, sizeof(hints)); + hints.ai_family = soap->bind_inet6 ? AF_INET6 : PF_UNSPEC; +#ifndef WITH_LEAN + if ((soap->omode & SOAP_IO_UDP)) + hints.ai_socktype = SOCK_DGRAM; + else +#endif + hints.ai_socktype = SOCK_STREAM; + hints.ai_flags = AI_PASSIVE; + soap->errmode = 2; + err = getaddrinfo(host, soap_int2s(soap, port), &hints, &addrinfo); + if (err || !addrinfo) + { + soap_set_receiver_error(soap, SOAP_GAI_STRERROR(err), "getaddrinfo failed in soap_bind()", SOAP_TCP_ERROR); + if (addrinfo) + freeaddrinfo(addrinfo); + return SOAP_INVALID_SOCKET; + } + res = *addrinfo; + if (soap_memcpy((void*)&soap->peer.storage, sizeof(soap->peer.storage), (const void*)addrinfo->ai_addr, addrinfo->ai_addrlen)) + { + freeaddrinfo(addrinfo); + soap->error = SOAP_EOM; + return SOAP_INVALID_SOCKET; + } + soap->peerlen = addrinfo->ai_addrlen; + res.ai_addr = &soap->peer.addr; + res.ai_addrlen = soap->peerlen; + freeaddrinfo(addrinfo); + soap->master = (int)socket(res.ai_family, res.ai_socktype, res.ai_protocol); +#else +#ifndef WITH_LEAN + if ((soap->omode & SOAP_IO_UDP)) + soap->master = (int)socket(AF_INET, SOCK_DGRAM, 0); + else +#endif + soap->master = (int)socket(AF_INET, SOCK_STREAM, 0); +#endif + soap->errmode = 0; + if (!soap_valid_socket(soap->master)) + { + soap->errnum = soap_socket_errno(soap->master); + soap_set_receiver_error(soap, tcp_error(soap), "socket failed in soap_bind()", SOAP_TCP_ERROR); + return SOAP_INVALID_SOCKET; + } + soap->port = port; +#ifndef WITH_LEAN + if ((soap->omode & SOAP_IO_UDP)) + soap->socket = soap->master; +#endif +#ifdef WITH_SOCKET_CLOSE_ON_EXIT +#ifdef WIN32 +#ifndef UNDER_CE + SetHandleInformation((HANDLE)soap->master, HANDLE_FLAG_INHERIT, 0); +#endif +#else + fcntl(soap->master, F_SETFD, 1); +#endif +#endif +#ifndef WITH_LEAN + if (soap->bind_flags && setsockopt(soap->master, SOL_SOCKET, soap->bind_flags, (char*)&set, sizeof(int))) + { + soap->errnum = soap_socket_errno(soap->master); + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt failed in soap_bind()", SOAP_TCP_ERROR); + return SOAP_INVALID_SOCKET; + } +#ifndef UNDER_CE + if (((soap->imode | soap->omode) & SOAP_IO_KEEPALIVE) && (!((soap->imode | soap->omode) & SOAP_IO_UDP)) && setsockopt(soap->master, SOL_SOCKET, SO_KEEPALIVE, (char*)&set, sizeof(int))) + { + soap->errnum = soap_socket_errno(soap->master); + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt SO_KEEPALIVE failed in soap_bind()", SOAP_TCP_ERROR); + return SOAP_INVALID_SOCKET; + } + if (soap->sndbuf > 0 && setsockopt(soap->master, SOL_SOCKET, SO_SNDBUF, (char*)&soap->sndbuf, sizeof(int))) + { + soap->errnum = soap_socket_errno(soap->master); + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt SO_SNDBUF failed in soap_bind()", SOAP_TCP_ERROR); + return SOAP_INVALID_SOCKET; + } + if (soap->rcvbuf > 0 && setsockopt(soap->master, SOL_SOCKET, SO_RCVBUF, (char*)&soap->rcvbuf, sizeof(int))) + { + soap->errnum = soap_socket_errno(soap->master); + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt SO_RCVBUF failed in soap_bind()", SOAP_TCP_ERROR); + return SOAP_INVALID_SOCKET; + } +#ifdef TCP_NODELAY + if (!(soap->omode & SOAP_IO_UDP) && setsockopt(soap->master, IPPROTO_TCP, TCP_NODELAY, (char*)&set, sizeof(int))) + { + soap->errnum = soap_socket_errno(soap->master); + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt TCP_NODELAY failed in soap_bind()", SOAP_TCP_ERROR); + return SOAP_INVALID_SOCKET; + } +#endif +#ifdef TCP_FASTOPEN + if (!(soap->omode & SOAP_IO_UDP) && setsockopt(soap->master, IPPROTO_TCP, TCP_FASTOPEN, (char*)&set, sizeof(int))) + { + /* silently ignore */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "setsockopt TCP_FASTOPEN failed in soap_bind()\n")); + } +#endif +#endif +#endif +#ifdef WITH_IPV6 + if (res.ai_family == AF_INET6 && setsockopt(soap->master, IPPROTO_IPV6, IPV6_V6ONLY, soap->bind_v6only ? (char*)&set : (char*)&unset, sizeof(int))) + { + soap->errnum = soap_socket_errno(soap->master); + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt IPV6_V6ONLY failed in soap_bind()", SOAP_TCP_ERROR); + return SOAP_INVALID_SOCKET; + } + soap->errmode = 0; + if (bind(soap->master, res.ai_addr, (int)res.ai_addrlen)) + { + soap->errnum = soap_socket_errno(soap->master); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not bind to host, bind failed\n")); + soap_closesock(soap); + soap_set_receiver_error(soap, tcp_error(soap), "bind failed in soap_bind()", SOAP_TCP_ERROR); + return SOAP_INVALID_SOCKET; + } +#else + soap->peerlen = sizeof(soap->peer.in); + memset((void*)&soap->peer.in, 0, sizeof(soap->peer.in)); + soap->peer.in.sin_family = AF_INET; + soap->errmode = 2; + if (host) + { + if (soap->fresolve(soap, host, &soap->peer.in.sin_addr)) + { + soap_set_receiver_error(soap, tcp_error(soap), "get host by name failed in soap_bind()", SOAP_TCP_ERROR); + return SOAP_INVALID_SOCKET; + } + } + else + soap->peer.in.sin_addr.s_addr = htonl(INADDR_ANY); + soap->peer.in.sin_port = htons((short)port); + soap->errmode = 0; + if (bind(soap->master, &soap->peer.addr, (int)soap->peerlen)) + { + soap->errnum = soap_socket_errno(soap->master); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not bind to host, bind failed\n")); + soap_closesock(soap); + soap_set_receiver_error(soap, tcp_error(soap), "bind failed in soap_bind()", SOAP_TCP_ERROR); + return SOAP_INVALID_SOCKET; + } +#endif + if (!(soap->omode & SOAP_IO_UDP) && listen(soap->master, backlog)) + { + soap->errnum = soap_socket_errno(soap->master); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not bind to host, listen failed\n")); + soap_closesock(soap); + soap_set_receiver_error(soap, tcp_error(soap), "listen failed in soap_bind()", SOAP_TCP_ERROR); + return SOAP_INVALID_SOCKET; + } + return soap->master; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIO +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_poll(struct soap *soap) +{ +#ifndef WITH_LEAN + int r; + if (soap_valid_socket(soap->socket)) + { + r = tcp_select(soap, soap->socket, SOAP_TCP_SELECT_ALL, 0); + if (r > 0 && (r & SOAP_TCP_SELECT_ERR)) + r = -1; + } + else if (soap_valid_socket(soap->master)) + { + r = tcp_select(soap, soap->master, SOAP_TCP_SELECT_SND | SOAP_TCP_SELECT_ERR, 0); + } + else + { + return SOAP_OK; /* OK when no socket! */ + } + if (r > 0) + { + int t; +#ifdef WITH_OPENSSL + if ((soap->imode & SOAP_ENC_SSL) && soap->ssl) + { + if (soap_valid_socket(soap->socket) + && (r & SOAP_TCP_SELECT_SND) + && (!(r & SOAP_TCP_SELECT_RCV) + || SSL_peek(soap->ssl, (char*)&t, 1) > 0)) + return SOAP_OK; + } + else +#endif + { + if (soap_valid_socket(soap->socket) + && (r & SOAP_TCP_SELECT_SND) + && (!(r & SOAP_TCP_SELECT_RCV) + || recv(soap->socket, (char*)&t, 1, MSG_PEEK) > 0)) + return SOAP_OK; + } + } + else if (r < 0) + { + if ((soap_valid_socket(soap->master) && soap_socket_errno(soap->master) != SOAP_EINTR) + || (soap_valid_socket(soap->socket) && soap_socket_errno(soap->socket) != SOAP_EINTR)) + return soap_set_receiver_error(soap, tcp_error(soap), "select failed in soap_poll()", SOAP_TCP_ERROR); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_poll: other end down on socket=%d select=%d\n", (int)soap->socket, r)); + return SOAP_EOF; +#else + (void)soap; + return SOAP_OK; +#endif +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIO +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_ready(struct soap *soap) +{ +#ifndef WITH_LEAN + int r; + if (!soap_valid_socket(soap->socket)) + return SOAP_OK; /* OK when no socket! */ + r = tcp_select(soap, soap->socket, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, 0); + if (r > 0 && (r & SOAP_TCP_SELECT_ERR)) + r = -1; + if (r < 0 && soap_socket_errno(soap->socket) != SOAP_EINTR) + return soap_set_receiver_error(soap, tcp_error(soap), "select failed in soap_ready()", SOAP_TCP_ERROR); + if (r > 0) + { + char t; +#ifdef WITH_OPENSSL + if ((soap->imode & SOAP_ENC_SSL) && soap->ssl) + { + if (SSL_peek(soap->ssl, &t, 1) > 0) + return SOAP_OK; + } + else +#endif + { + if (recv(soap->socket, &t, 1, MSG_PEEK) > 0) + return SOAP_OK; + } + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_ready: other end not ready to send on socket=%d select=%d\n", (int)soap->socket, r)); + return SOAP_EOF; +#else + (void)soap; + return SOAP_OK; +#endif +} +#endif +/******************************************************************************/ + +#ifndef WITH_NOIO +SOAP_FMAC1 +SOAP_SOCKET +SOAP_FMAC2 +soap_accept(struct soap *soap) +{ + int n = (int)sizeof(soap->peer); + int err; +#ifndef WITH_LEAN + int set = 1; +#endif + soap->error = SOAP_OK; + memset((void*)&soap->peer, 0, sizeof(soap->peer)); + soap->socket = SOAP_INVALID_SOCKET; + soap->errmode = 0; + soap->errnum = 0; + soap->keep_alive = 0; + if (!soap_valid_socket(soap->master)) + { + soap_set_receiver_error(soap, tcp_error(soap), "no master socket in soap_accept()", SOAP_TCP_ERROR); + return SOAP_INVALID_SOCKET; + } +#ifndef WITH_LEAN + if ((soap->omode & SOAP_IO_UDP)) + return soap->socket = soap->master; +#endif + for (;;) + { + if (soap->accept_timeout) + { + for (;;) + { + int r; + r = tcp_select(soap, soap->master, SOAP_TCP_SELECT_ALL, soap->accept_timeout); + if (r > 0) + break; + if (!r) + { + soap_set_receiver_error(soap, "Timeout", "accept failed in soap_accept()", SOAP_TCP_ERROR); + return SOAP_INVALID_SOCKET; + } + if (r < 0) + { + r = soap->errnum; + if (r != SOAP_EINTR) + { + soap_closesock(soap); + soap_set_receiver_error(soap, tcp_error(soap), "accept failed in soap_accept()", SOAP_TCP_ERROR); + return SOAP_INVALID_SOCKET; + } + } + } + } + n = (int)sizeof(soap->peer); + soap->socket = soap->faccept(soap, soap->master, &soap->peer.addr, &n); + soap->peerlen = (size_t)n; + if (soap_valid_socket(soap->socket)) + { +#ifdef WITH_IPV6 + char port[16]; + struct addrinfo *res = NULL; + struct addrinfo hints; + memset(&hints, 0, sizeof(struct addrinfo)); + hints.ai_family = PF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + hints.ai_flags = AI_NUMERICHOST | AI_NUMERICSERV; + getnameinfo(&soap->peer.addr, n, soap->host, sizeof(soap->host), port, sizeof(port), NI_NUMERICHOST | NI_NUMERICSERV); + soap->ip = 0; + soap->ip6[0] = 0; + soap->ip6[1] = 0; + soap->ip6[2] = 0; + soap->ip6[3] = 0; + if (getaddrinfo(soap->host, NULL, &hints, &res) == 0 && res) + { + struct sockaddr_storage result; + (void)soap_memcpy(&result, sizeof(result), res->ai_addr, res->ai_addrlen); + freeaddrinfo(res); + if (result.ss_family == AF_INET6) + { + struct sockaddr_in6 *addr = (struct sockaddr_in6*)&result; + struct in6_addr *inaddr = &addr->sin6_addr; + int i; + for (i = 0; i < 16; i++) + soap->ip6[i/4] = (soap->ip6[i/4] << 8) + inaddr->s6_addr[i]; + } + else if (result.ss_family == AF_INET) + { + struct sockaddr_in *addr = (struct sockaddr_in*)&result; + soap->ip = ntohl(addr->sin_addr.s_addr); + soap->ip6[2] = 0xFFFF; + soap->ip6[3] = soap->ip; + } + } + soap->port = soap_strtol(port, NULL, 10); +#else + soap->ip = ntohl(soap->peer.in.sin_addr.s_addr); + soap->ip6[0] = 0; + soap->ip6[1] = 0; + soap->ip6[2] = 0xFFFF; + soap->ip6[3] = soap->ip; + (SOAP_SNPRINTF(soap->host, sizeof(soap->host), 80), "%u.%u.%u.%u", (int)(soap->ip>>24)&0xFF, (int)(soap->ip>>16)&0xFF, (int)(soap->ip>>8)&0xFF, (int)soap->ip&0xFF); + soap->port = (int)ntohs(soap->peer.in.sin_port); /* does not return port number on some systems */ +#endif + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Accept socket=%d at port=%d from IP='%s'\n", (int)soap->socket, soap->port, soap->host)); +#ifndef WITH_LEAN + if ((soap->accept_flags & SO_LINGER)) + { + struct linger linger; + memset((void*)&linger, 0, sizeof(linger)); + linger.l_onoff = 1; + linger.l_linger = soap->linger_time; + if (setsockopt(soap->socket, SOL_SOCKET, SO_LINGER, (char*)&linger, sizeof(struct linger))) + { + soap->errnum = soap_socket_errno(soap->socket); + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt SO_LINGER failed in soap_accept()", SOAP_TCP_ERROR); + soap_closesock(soap); + return SOAP_INVALID_SOCKET; + } + } + if ((soap->accept_flags & ~SO_LINGER) && setsockopt(soap->socket, SOL_SOCKET, soap->accept_flags & ~SO_LINGER, (char*)&set, sizeof(int))) + { + soap->errnum = soap_socket_errno(soap->socket); + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt failed in soap_accept()", SOAP_TCP_ERROR); + soap_closesock(soap); + return SOAP_INVALID_SOCKET; + } +#ifndef UNDER_CE + if (((soap->imode | soap->omode) & SOAP_IO_KEEPALIVE) && setsockopt(soap->socket, SOL_SOCKET, SO_KEEPALIVE, (char*)&set, sizeof(int))) + { + soap->errnum = soap_socket_errno(soap->socket); + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt SO_KEEPALIVE failed in soap_accept()", SOAP_TCP_ERROR); + soap_closesock(soap); + return SOAP_INVALID_SOCKET; + } + if (soap->sndbuf > 0 && setsockopt(soap->socket, SOL_SOCKET, SO_SNDBUF, (char*)&soap->sndbuf, sizeof(int))) + { + soap->errnum = soap_socket_errno(soap->socket); + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt SO_SNDBUF failed in soap_accept()", SOAP_TCP_ERROR); + soap_closesock(soap); + return SOAP_INVALID_SOCKET; + } + if (soap->rcvbuf > 0 && setsockopt(soap->socket, SOL_SOCKET, SO_RCVBUF, (char*)&soap->rcvbuf, sizeof(int))) + { + soap->errnum = soap_socket_errno(soap->socket); + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt SO_RCVBUF failed in soap_accept()", SOAP_TCP_ERROR); + soap_closesock(soap); + return SOAP_INVALID_SOCKET; + } +#ifdef TCP_NODELAY + if (setsockopt(soap->socket, IPPROTO_TCP, TCP_NODELAY, (char*)&set, sizeof(int))) + { + soap->errnum = soap_socket_errno(soap->socket); + soap_set_receiver_error(soap, tcp_error(soap), "setsockopt TCP_NODELAY failed in soap_accept()", SOAP_TCP_ERROR); + soap_closesock(soap); + return SOAP_INVALID_SOCKET; + } +#endif +#endif +#endif + soap->keep_alive = -(((soap->imode | soap->omode) & SOAP_IO_KEEPALIVE) != 0); + if (soap->send_timeout || soap->recv_timeout) + SOAP_SOCKNONBLOCK(soap->socket) + else + SOAP_SOCKBLOCK(soap->socket) + return soap->socket; + } + err = soap_socket_errno(soap->socket); + if (err != 0 && err != SOAP_EINTR && err != SOAP_EAGAIN && err != SOAP_EWOULDBLOCK) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Accept failed from %s\n", soap->host)); + soap->errnum = err; + soap_set_receiver_error(soap, tcp_error(soap), "accept failed in soap_accept()", SOAP_TCP_ERROR); + soap_closesock(soap); + return SOAP_INVALID_SOCKET; + } + } +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_closesock(struct soap *soap) +{ + int status = soap->error; + int err = SOAP_OK; + soap->part = SOAP_END; +#ifndef WITH_LEANER + if (status && status < 200) /* attachment state is not to be trusted */ + { + soap->mime.first = NULL; + soap->mime.last = NULL; + soap->dime.first = NULL; + soap->dime.last = NULL; + } +#endif + if (soap->fdisconnect) + err = soap->fdisconnect(soap); + if (err || status == SOAP_EOF || status == SOAP_TCP_ERROR || status == SOAP_SSL_ERROR || !soap->keep_alive) + { + soap->keep_alive = 0; + if (soap->fclose && (soap->error = soap->fclose(soap)) != SOAP_OK) + return soap->error; + if (err) + return soap->error = err; + } +#ifdef WITH_ZLIB + if (!(soap->mode & SOAP_MIME_POSTCHECK)) + { + if (soap->zlib_state == SOAP_ZLIB_DEFLATE) + deflateEnd(soap->d_stream); + else if (soap->zlib_state == SOAP_ZLIB_INFLATE) + inflateEnd(soap->d_stream); + soap->zlib_state = SOAP_ZLIB_NONE; + } +#endif + return soap->error = status; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_force_closesock(struct soap *soap) +{ + soap->keep_alive = 0; + if (soap_valid_socket(soap->socket) && soap->fclosesocket) + { + soap->fclosesocket(soap, soap->socket); + soap->socket = SOAP_INVALID_SOCKET; + } + return soap->error; +} + +/******************************************************************************/ + +#ifdef WITH_SELF_PIPE +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_close_connection(struct soap *soap) +{ + if (soap_valid_socket(soap->socket)) + write(soap->pipe_fd[1], "1", 1); +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIO +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_cleanup(struct soap *soap) +{ + soap_done(soap); +#ifdef WIN32 + if (!tcp_done) + return; + tcp_done = 0; + WSACleanup(); +#endif +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_done(struct soap *soap) +{ +#ifdef SOAP_DEBUG + int i; +#endif + if (soap_check_state(soap)) + return; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Done with context%s\n", soap->state == SOAP_COPY ? " copy" : "")); + soap_free_temp(soap); + while (soap->clist) + { + struct soap_clist *p = soap->clist->next; + SOAP_FREE(soap, soap->clist); + soap->clist = p; + } + if (soap->state == SOAP_INIT) + soap->omode &= ~SOAP_IO_UDP; /* to force close the socket */ + soap->keep_alive = 0; /* to force close the socket */ + if (soap->master == soap->socket) /* do not close twice */ + soap->master = SOAP_INVALID_SOCKET; + soap_closesock(soap); +#ifdef WITH_COOKIES + soap_free_cookies(soap); +#endif + while (soap->plugins) + { + struct soap_plugin *p = soap->plugins->next; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Removing plugin '%s'\n", soap->plugins->id)); + if (soap->plugins->fcopy || soap->state == SOAP_INIT) + soap->plugins->fdelete(soap, soap->plugins); + SOAP_FREE(soap, soap->plugins); + soap->plugins = p; + } + soap->fplugin = fplugin; +#ifndef WITH_NOHTTP + soap->fpost = http_post; + soap->fget = http_get; + soap->fput = http_put; + soap->fpatch = http_patch; + soap->fdel = http_del; + soap->fopt = http_200; + soap->fhead = http_200; + soap->fform = NULL; + soap->fposthdr = http_post_header; + soap->fresponse = http_response; + soap->fparse = http_parse; + soap->fparsehdr = http_parse_header; +#endif + soap->fheader = NULL; +#ifndef WITH_NOIO +#ifndef WITH_IPV6 + soap->fresolve = tcp_gethost; +#else + soap->fresolve = NULL; +#endif + soap->faccept = tcp_accept; + soap->fopen = tcp_connect; + soap->fclose = tcp_disconnect; + soap->fclosesocket = tcp_closesocket; + soap->fshutdownsocket = tcp_shutdownsocket; + soap->fsend = fsend; + soap->frecv = frecv; + soap->fpoll = soap_poll; +#else + soap->fopen = NULL; + soap->fclose = NULL; + soap->fpoll = NULL; +#endif +#ifndef WITH_LEANER + soap->fsvalidate = NULL; + soap->fwvalidate = NULL; + soap->feltbegin = NULL; + soap->feltendin = NULL; + soap->feltbegout = NULL; + soap->feltendout = NULL; + soap->fprepareinitsend = NULL; + soap->fprepareinitrecv = NULL; + soap->fpreparesend = NULL; + soap->fpreparerecv = NULL; + soap->fpreparefinalsend = NULL; + soap->fpreparefinalrecv = NULL; + soap->ffiltersend = NULL; + soap->ffilterrecv = NULL; +#endif + soap->fseterror = NULL; + soap->fignore = NULL; + soap->fserveloop = NULL; +#ifdef WITH_OPENSSL + if (soap->session) + { + SSL_SESSION_free(soap->session); + soap->session = NULL; + } +#endif + if (soap->state == SOAP_INIT) + { + if (soap_valid_socket(soap->master)) + { + soap->fclosesocket(soap, soap->master); + soap->master = SOAP_INVALID_SOCKET; + } + } +#ifdef WITH_OPENSSL + if (soap->ssl) + { + SSL_free(soap->ssl); + soap->ssl = NULL; + } + if (soap->state == SOAP_INIT) + { + if (soap->ctx) + { + SSL_CTX_free(soap->ctx); + soap->ctx = NULL; + } + } + ERR_clear_error(); +# if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) + /* OpenSSL libraries handle thread init and deinit */ +# elif OPENSSL_VERSION_NUMBER >= 0x10000000L + ERR_remove_thread_state(NULL); +# else + ERR_remove_state(0); +# endif +#endif +#ifdef WITH_GNUTLS + if (soap->state == SOAP_INIT) + { + if (soap->xcred) + { + gnutls_certificate_free_credentials(soap->xcred); + soap->xcred = NULL; + } + if (soap->acred) + { + gnutls_anon_free_client_credentials(soap->acred); + soap->acred = NULL; + } + if (soap->cache) + { + gnutls_priority_deinit(soap->cache); + soap->cache = NULL; + } + if (soap->dh_params) + { + gnutls_dh_params_deinit(soap->dh_params); + soap->dh_params = NULL; + } +# if GNUTLS_VERSION_NUMBER < 0x030300 + if (soap->rsa_params) + { + gnutls_rsa_params_deinit(soap->rsa_params); + soap->rsa_params = NULL; + } +#endif + } + if (soap->session) + { + gnutls_deinit(soap->session); + soap->session = NULL; + } +#endif +#ifdef WITH_SYSTEMSSL + if (soap->ssl) + gsk_secure_socket_close(&soap->ssl); + if (soap->state == SOAP_INIT) + if (soap->ctx) + gsk_environment_close(&soap->ctx); +#endif +#ifdef WITH_C_LOCALE + SOAP_FREELOCALE(soap); +#endif +#ifdef WITH_ZLIB + if (soap->d_stream) + { + SOAP_FREE(soap, soap->d_stream); + soap->d_stream = NULL; + } + if (soap->z_buf) + { + SOAP_FREE(soap, soap->z_buf); + soap->z_buf = NULL; + } +#endif +#ifdef SOAP_DEBUG + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Free logfiles\n")); + for (i = 0; i < SOAP_MAXLOGS; i++) + { + soap_close_logfile(soap, i); + if (soap->logfile[i]) + { + SOAP_FREE_UNMANAGED(soap->logfile[i]); + soap->logfile[i] = NULL; + } + } +#endif +#ifdef WITH_SELF_PIPE + close(soap->pipe_fd[0]); + close(soap->pipe_fd[1]); +#endif +#ifdef SOAP_MEM_DEBUG + soap_free_mht(soap); +#endif + soap->state = SOAP_NONE; +} + +/******************************************************************************\ + * + * HTTP + * +\******************************************************************************/ + +#ifndef WITH_NOHTTP +static int +http_parse(struct soap *soap) +{ + char header[SOAP_HDRLEN], *s; + int err = SOAP_OK; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Waiting for HTTP request/response...\n")); + soap->fform = NULL; + *soap->endpoint = '\0'; + soap->bearer = NULL; +#ifdef WITH_NTLM + if (!soap->ntlm_challenge) +#endif + { + soap->userid = NULL; + soap->passwd = NULL; + soap->authrealm = NULL; + } +#ifdef WITH_NTLM + soap->ntlm_challenge = NULL; +#endif + soap->proxy_from = NULL; + soap->cors_origin = NULL; + soap->cors_method = NULL; + soap->cors_header = NULL; + do + { + soap->length = 0; + soap->http_content = NULL; + soap->action = NULL; + soap->status = 0; + soap->body = 1; + if (soap_getline(soap, soap->msgbuf, sizeof(soap->msgbuf))) + { + if (soap->error == SOAP_EOF) + return SOAP_EOF; + return soap->error = 414; + } + s = strchr(soap->msgbuf, ' '); + if (s) + { + soap->status = (unsigned short)soap_strtoul(s, &s, 10); + if (!soap_coblank((soap_wchar)*s)) + soap->status = 0; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "HTTP status: %s\n", soap->msgbuf)); + for (;;) + { + if (soap_getline(soap, header, SOAP_HDRLEN)) + { + if (soap->error == SOAP_EOF) + { + soap->error = SOAP_OK; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "EOF in HTTP header, try to continue anyway\n")); + break; + } + return soap->error; + } + if (!*header) + break; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "HTTP header: %s\n", header)); + s = strchr(header, ':'); + if (s) + { + char *t; + *s = '\0'; + do + { + s++; + } while (*s && *s <= 32); + if (*s == '"') + s++; + t = s + strlen(s) - 1; + while (t > s && *t <= 32) + t--; + if (t >= s && *t == '"') + t--; + t[1] = '\0'; + soap->error = soap->fparsehdr(soap, header, s); + if (soap->error) + { + if (soap->error < SOAP_STOP) + return soap->error; + err = soap->error; + soap->error = SOAP_OK; + } + } + } + } while (soap->status == 100); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Finished HTTP header parsing, status = %d\n", soap->status)); + s = strstr(soap->msgbuf, "HTTP/"); + if (s && s[5] == '1' && s[6] == '.' && s[7] == '0') + { + soap->keep_alive = 0; /* HTTP 1.0 does not support keep-alive */ + if (soap->status == 0 && (soap->omode & SOAP_IO) == SOAP_IO_CHUNK) /* soap->status == 0 for HTTP request */ + soap->omode = (soap->omode & ~SOAP_IO) | SOAP_IO_STORE; /* HTTP 1.0 does not support chunked transfers */ + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Keep alive connection = %d\n", soap->keep_alive)); + if (soap->status == 0) + { + size_t l = 0; + if (s) + { + if (!strncmp(soap->msgbuf, "POST ", l = 5)) + soap->status = SOAP_POST; + else if (!strncmp(soap->msgbuf, "GET ", l = 4)) + soap->status = SOAP_GET; + else if (!strncmp(soap->msgbuf, "PUT ", l = 4)) + soap->status = SOAP_PUT; + else if (!strncmp(soap->msgbuf, "PATCH ", l = 4)) + soap->status = SOAP_PATCH; + else if (!strncmp(soap->msgbuf, "DELETE ", l = 7)) + soap->status = SOAP_DEL; + else if (!strncmp(soap->msgbuf, "HEAD ", l = 5)) + soap->status = SOAP_HEAD; + else if (!strncmp(soap->msgbuf, "OPTIONS ", l = 8)) + soap->status = SOAP_OPTIONS; + } + if (s && soap->status) + { + size_t m, n, k; + int r; + while (soap->msgbuf[l] && soap_coblank((soap_wchar)soap->msgbuf[l])) + l++; + m = strlen(soap->endpoint); + n = m + (s - soap->msgbuf) - l - 1; + if (n >= sizeof(soap->endpoint)) + n = sizeof(soap->endpoint) - 1; + if (m > n) + m = n; + k = n - m + 1; + if (k >= sizeof(soap->path)) + k = sizeof(soap->path) - 1; + while (k > 0 && soap_coblank((soap_wchar)soap->msgbuf[l + k - 1])) + k--; + if (soap_strncpy(soap->path, sizeof(soap->path), soap->msgbuf + l, k)) + return soap->error = 414; + if (*soap->path && *soap->path != '/') + r = soap_strncpy(soap->endpoint, sizeof(soap->endpoint), soap->path, k); + else + r = soap_strncat(soap->endpoint, sizeof(soap->endpoint), soap->path, k); + if (r) + return soap->error = 414; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Target endpoint='%s' path='%s'\n", soap->endpoint, soap->path)); + if (err) + return soap->error = err; + } + else if (err) + { + return soap->error = err; + } + else if (s) + { + return soap->error = 405; + } + return SOAP_OK; + } + if ((soap->status >= 200 && soap->status <= 299) /* OK, Accepted, etc */ + || soap->status == 400 /* Bad Request */ + || soap->status == 500) /* Internal Server Error */ + return soap->error = SOAP_OK; + return soap->error = soap->status; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOHTTP +static int +http_parse_header(struct soap *soap, const char *key, const char *val) +{ + if (!soap_tag_cmp(key, "Host")) + { +#if defined(WITH_OPENSSL) || defined(WITH_GNUTLS) + if ((soap->imode & SOAP_ENC_SSL)) + soap_strcpy(soap->endpoint, sizeof(soap->endpoint), "https://"); + else +#endif + soap_strcpy(soap->endpoint, sizeof(soap->endpoint), "http://"); + if (soap_strncat(soap->endpoint, sizeof(soap->endpoint), val, sizeof(soap->endpoint) - 9)) + return soap->error = SOAP_HDR; + } +#ifndef WITH_LEANER + else if (!soap_tag_cmp(key, "Content-Type")) + { + const char *action; + soap->http_content = soap_strdup(soap, val); + if (soap_http_header_attribute(soap, val, "application/dime")) + soap->imode |= SOAP_ENC_DIME; + else if (soap_http_header_attribute(soap, val, "multipart/related") + || soap_http_header_attribute(soap, val, "multipart/form-data")) + { + const char *type; + soap->mime.boundary = soap_strdup(soap, soap_http_header_attribute(soap, val, "boundary")); + soap->mime.start = soap_strdup(soap, soap_http_header_attribute(soap, val, "start")); + soap->imode |= SOAP_ENC_MIME; + type = soap_http_header_attribute(soap, val, "type"); + if (type && !strcmp(type, "application/xop+xml")) + soap->imode |= SOAP_ENC_MTOM; + } + action = soap_http_header_attribute(soap, val, "action"); + if (action) + { + if (*action == '"') + { + soap->action = soap_strdup(soap, action + 1); + if (soap->action && *soap->action) + soap->action[strlen(soap->action) - 1] = '\0'; + } + else + soap->action = soap_strdup(soap, action); + } + } +#endif + else if (!soap_tag_cmp(key, "Content-Length")) + { + soap->length = soap_strtoull(val, NULL, 10); + if (soap->length == 0) + soap->body = 0; + } + else if (!soap_tag_cmp(key, "Content-Encoding")) + { + if (!soap_tag_cmp(val, "deflate")) +#ifdef WITH_ZLIB + soap->zlib_in = SOAP_ZLIB_DEFLATE; +#else + return SOAP_ZLIB_ERROR; +#endif + else if (!soap_tag_cmp(val, "gzip")) +#ifdef WITH_GZIP + soap->zlib_in = SOAP_ZLIB_GZIP; +#else + return SOAP_ZLIB_ERROR; +#endif + } +#ifdef WITH_ZLIB + else if (!soap_tag_cmp(key, "Accept-Encoding")) + { +#ifdef WITH_GZIP + if (strchr(val, '*') || soap_http_header_attribute(soap, val, "gzip")) + soap->zlib_out = SOAP_ZLIB_GZIP; + else +#endif + if (strchr(val, '*') || soap_http_header_attribute(soap, val, "deflate")) + soap->zlib_out = SOAP_ZLIB_DEFLATE; + else + soap->zlib_out = SOAP_ZLIB_NONE; + } +#endif + else if (!soap_tag_cmp(key, "Transfer-Encoding")) + { + soap->imode &= ~SOAP_IO; + if (!soap_tag_cmp(val, "chunked")) + soap->imode |= SOAP_IO_CHUNK; + } + else if (!soap_tag_cmp(key, "Connection")) + { + if (!soap_tag_cmp(val, "close")) + soap->keep_alive = 0; + } +#if !defined(WITH_LEAN) || defined(WITH_NTLM) + else if (!soap_tag_cmp(key, "Authorization") || !soap_tag_cmp(key, "Proxy-Authorization")) + { +#ifdef WITH_NTLM + if (!soap_tag_cmp(val, "NTLM*")) + { + soap->ntlm_challenge = soap_strdup(soap, val + 4); + } + else +#endif + if (!soap_tag_cmp(val, "Bearer *")) + { + soap->bearer = soap_strdup(soap, val + 7); + } + else if (!soap_tag_cmp(val, "Basic *")) + { + int n; + char *s; + soap_base642s(soap, val + 6, soap->tmpbuf, sizeof(soap->tmpbuf) - 1, &n); + soap->tmpbuf[n] = '\0'; + s = strchr(soap->tmpbuf, ':'); + if (s) + { + *s = '\0'; + soap->userid = soap_strdup(soap, soap->tmpbuf); + soap->passwd = soap_strdup(soap, s + 1); + } + } + } + else if (!soap_tag_cmp(key, "WWW-Authenticate") || !soap_tag_cmp(key, "Proxy-Authenticate")) + { +#ifdef WITH_NTLM + if (!soap_tag_cmp(val, "NTLM*")) + soap->ntlm_challenge = soap_strdup(soap, val + 4); + else +#endif + soap->authrealm = soap_strdup(soap, soap_http_header_attribute(soap, val + 6, "realm")); + } + else if (!soap_tag_cmp(key, "Expect")) + { + if (!soap_tag_cmp(val, "100-continue")) + { + if ((soap->error = soap->fposthdr(soap, "HTTP/1.1 100 Continue", NULL)) != SOAP_OK + || (soap->error = soap->fposthdr(soap, NULL, NULL)) != SOAP_OK) + return soap->error; + } + } +#endif + else if (!soap_tag_cmp(key, "SOAPAction")) + { + if (*val == '"') + { + soap->action = soap_strdup(soap, val + 1); + if (*soap->action) + soap->action[strlen(soap->action) - 1] = '\0'; + } + else + soap->action = soap_strdup(soap, val); + } + else if (!soap_tag_cmp(key, "Location")) + { + soap_strcpy(soap->endpoint, sizeof(soap->endpoint), val); + } + else if (!soap_tag_cmp(key, "X-Forwarded-For")) + { + soap->proxy_from = soap_strdup(soap, val); + } + else if (!soap_tag_cmp(key, "Origin")) + { + soap->origin = soap_strdup(soap, val); + soap->cors_origin = soap->cors_allow; + } + else if (!soap_tag_cmp(key, "Access-Control-Request-Method")) + { + soap->cors_method = soap_strdup(soap, val); + } + else if (!soap_tag_cmp(key, "Access-Control-Request-Headers")) + { + soap->cors_header = soap_strdup(soap, val); + } +#ifdef WITH_COOKIES + else if (!soap_tag_cmp(key, "Cookie") + || !soap_tag_cmp(key, "Cookie2") + || !soap_tag_cmp(key, "Set-Cookie") + || !soap_tag_cmp(key, "Set-Cookie2")) + { + soap_getcookies(soap, val); + } +#endif + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +#if !defined(WITH_NOHTTP) || !defined(WITH_LEANER) +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_http_header_attribute(struct soap *soap, const char *line, const char *key) +{ + const char *s = line; + if (s) + { + while (*s) + { + short flag; + s = soap_decode_key(soap->tmpbuf, sizeof(soap->tmpbuf), s); + flag = soap_tag_cmp(soap->tmpbuf, key); + s = soap_decode_val(soap->tmpbuf, sizeof(soap->tmpbuf), s); + if (!flag) + return soap->tmpbuf; + } + } + return NULL; +} +#endif + +/******************************************************************************/ + +#if !defined(WITH_NOHTTP) || !defined(WITH_LEANER) +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_decode_key(char *buf, size_t len, const char *val) +{ + return soap_decode(buf, len, val, "=,;"); +} +#endif + +/******************************************************************************/ + +#if !defined(WITH_NOHTTP) || !defined(WITH_LEANER) +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_decode_val(char *buf, size_t len, const char *val) +{ + if (*val != '=') + { + *buf = '\0'; + return val; + } + return soap_decode(buf, len, val + 1, ",;"); +} +#endif + +/******************************************************************************/ + +#if !defined(WITH_NOHTTP) || !defined(WITH_LEANER) +static const char * +soap_decode(char *buf, size_t len, const char *val, const char *sep) +{ + const char *s; + char *t = buf; + size_t i = len; + for (s = val; *s; s++) + if (*s != ' ' && *s != '\t' && !strchr(sep, *s)) + break; + if (len > 0) + { + if (*s == '"') + { + s++; + while (*s && *s != '"' && --i) + *t++ = *s++; + } + else + { + while (*s && !strchr(sep, *s) && --i) + { + if (*s == '%' && s[1] && s[2]) + { + *t++ = ((s[1] >= 'A' ? (s[1] & 0x7) + 9 : s[1] - '0') << 4) + + (s[2] >= 'A' ? (s[2] & 0x7) + 9 : s[2] - '0'); + s += 3; + } + else + *t++ = *s++; + } + } + buf[len - 1] = '\0'; /* appease static checkers that get confused */ + } + *t = '\0'; + while (*s && !strchr(sep, *s)) + s++; + return s; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOHTTP +static const char* +http_error(struct soap *soap, int status) +{ + const char *msg = SOAP_STR_EOS; + (void)soap; + (void)status; +#ifndef WITH_LEAN + msg = soap_code_str(h_http_error_codes, status); + if (!msg) + msg = SOAP_STR_EOS; +#endif + return msg; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOHTTP +static int +http_get(struct soap *soap) +{ + (void)soap; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "HTTP GET request\n")); + return SOAP_GET_METHOD; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOHTTP +static int +http_put(struct soap *soap) +{ + (void)soap; + return SOAP_PUT_METHOD; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOHTTP +static int +http_patch(struct soap *soap) +{ + (void)soap; + return SOAP_PATCH_METHOD; +} +#endif +/******************************************************************************/ + +#ifndef WITH_NOHTTP +static int +http_del(struct soap *soap) +{ + (void)soap; + return SOAP_DEL_METHOD; +} +#endif +/******************************************************************************/ + +#ifndef WITH_NOHTTP +static int +http_200(struct soap *soap) +{ + if (soap->origin && soap->cors_method) /* CORS Origin and Access-Control-Request-Method headers */ + { + soap->cors_origin = soap->cors_allow; /* modify this code or hook your own soap->fopt() callback with logic */ + soap->cors_methods = "GET, PUT, PATCH, POST, HEAD, OPTIONS"; + soap->cors_headers = soap->cors_header; + } + return soap_send_empty_response(soap, 200); +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOHTTP +static int +http_post(struct soap *soap, const char *endpoint, const char *host, int port, const char *path, const char *action, ULONG64 count) +{ + const char *s; + int err; + size_t l; + switch (soap->status) + { + case SOAP_GET: + s = "GET"; + break; + case SOAP_PUT: + s = "PUT"; + break; + case SOAP_PATCH: + s = "PATCH"; + break; + case SOAP_DEL: + s = "DELETE"; + break; + case SOAP_CONNECT: + s = "CONNECT"; + break; + case SOAP_HEAD: + s = "HEAD"; + break; + case SOAP_OPTIONS: + s = "OPTIONS"; + break; + default: + s = "POST"; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "HTTP %s to %s\n", s, endpoint ? endpoint : "(null)")); + if (!endpoint || (soap_tag_cmp(endpoint, "http:*") && soap_tag_cmp(endpoint, "https:*") && soap_tag_cmp(endpoint, "httpg:*"))) + return SOAP_OK; + /* set l to prevent overruns ('host' and 'soap->host' are substrings of 'endpoint') */ + l = strlen(endpoint) + strlen(soap->http_version) + 80; + if (l > sizeof(soap->tmpbuf)) + return soap->error = SOAP_EOM; + if (soap->status == SOAP_CONNECT) + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), l), "%s %s:%d HTTP/%s", s, soap->host, soap->port, soap->http_version); + else if (soap->proxy_host && endpoint) + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), l), "%s %s HTTP/%s", s, endpoint, soap->http_version); + else + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), l), "%s /%s HTTP/%s", s, (*path == '/' ? path + 1 : path), soap->http_version); + err = soap->fposthdr(soap, soap->tmpbuf, NULL); + if (err) + return err; +#ifdef WITH_OPENSSL + if ((soap->ssl && port != 443) || (!soap->ssl && port != 80)) +#else + if (port != 80) +#endif + { +#ifdef WITH_IPV6 + if (*host != '[' && strchr(host, ':')) + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), l), "[%s]:%d", host, port); /* RFC 2732 */ + else +#endif + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), l), "%s:%d", host, port); + } + else + { +#ifdef WITH_IPV6 + if (*host != '[' && strchr(host, ':')) + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), l), "[%s]", host); /* RFC 2732 */ + else +#endif + soap_strcpy(soap->tmpbuf, sizeof(soap->tmpbuf), host); + } + err = soap->fposthdr(soap, "Host", soap->tmpbuf); + if (err) + return err; + err = soap->fposthdr(soap, "User-Agent", "gSOAP/2.8"); + if (err) + return err; + if (soap->origin) + { + err = soap->fposthdr(soap, "Origin", soap->origin); + if (err) + return err; + if (soap->status == SOAP_OPTIONS) + { + err = soap->fposthdr(soap, "Access-Control-Request-Method", soap->cors_method ? soap->cors_method : "POST"); + if (err) + return err; + if (soap->cors_header) + { + err = soap->fposthdr(soap, "Access-Control-Request-Headers", soap->cors_header); + if (err) + return err; + } + } + } + err = soap_puthttphdr(soap, SOAP_OK, count); + if (err) + return err; +#ifndef WITH_LEANER + if ((soap->imode & SOAP_ENC_MTOM)) + { + err = soap->fposthdr(soap, "Accept", "multipart/related,application/xop+xml,*/*;q=0.8"); + if (err) + return err; + } +#endif +#ifdef WITH_ZLIB +#ifdef WITH_GZIP + err = soap->fposthdr(soap, "Accept-Encoding", "gzip,deflate"); +#else + err = soap->fposthdr(soap, "Accept-Encoding", "deflate"); +#endif + if (err) + return err; +#endif +#if !defined(WITH_LEAN) || defined(WITH_NTLM) + if (soap->bearer) + { + l = strlen(soap->bearer); + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), l + 1), "Bearer %s", soap->bearer); + err = soap->fposthdr(soap, "Authorization", soap->tmpbuf); + if (err) + return err; + } +#ifdef WITH_NTLM + if (soap->ntlm_challenge) + { + l = strlen(soap->ntlm_challenge); + if (l) + { + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), l + 5), "NTLM %s", soap->ntlm_challenge); + if (soap->proxy_host) + { + err = soap->fposthdr(soap, "Proxy-Authorization", soap->tmpbuf); + if (err) + return err; + } + else + { + err = soap->fposthdr(soap, "Authorization", soap->tmpbuf); + if (err) + return err; + } + } + } + else + { +#endif + if (soap->userid && soap->passwd) + { + soap_strcpy(soap->tmpbuf, sizeof(soap->tmpbuf), "Basic "); + (SOAP_SNPRINTF(soap->tmpbuf + 262, sizeof(soap->tmpbuf) - 262, strlen(soap->userid) + strlen(soap->passwd) + 1), "%s:%s", soap->userid, soap->passwd); + soap_s2base64(soap, (const unsigned char*)(soap->tmpbuf + 262), soap->tmpbuf + 6, (int)strlen(soap->tmpbuf + 262)); + err = soap->fposthdr(soap, "Authorization", soap->tmpbuf); + if (err) + return err; + } + if (soap->proxy_userid && soap->proxy_passwd) + { + soap_strcpy(soap->tmpbuf, sizeof(soap->tmpbuf), "Basic "); + (SOAP_SNPRINTF(soap->tmpbuf + 262, sizeof(soap->tmpbuf) - 262, strlen(soap->proxy_userid) + strlen(soap->proxy_passwd) + 1), "%s:%s", soap->proxy_userid, soap->proxy_passwd); + soap_s2base64(soap, (const unsigned char*)(soap->tmpbuf + 262), soap->tmpbuf + 6, (int)strlen(soap->tmpbuf + 262)); + err = soap->fposthdr(soap, "Proxy-Authorization", soap->tmpbuf); + if (err) + return err; + } +#ifdef WITH_NTLM + } +#endif +#endif +#ifdef WITH_COOKIES +#ifdef WITH_OPENSSL + if (soap_putcookies(soap, host, path, soap->ssl != NULL)) + return soap->error; +#else + if (soap_putcookies(soap, host, path, 0)) + return soap->error; +#endif +#endif + if (action && soap->status != SOAP_GET && soap->status != SOAP_DEL) + { + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), strlen(action) + 2), "\"%s\"", action); + err = soap->fposthdr(soap, "SOAPAction", soap->tmpbuf); + if (err) + return err; + } + return soap->fposthdr(soap, NULL, NULL); +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOHTTP +static int +http_send_header(struct soap *soap, const char *s) +{ + const char *t; + do + { + t = strchr(s, '\n'); /* disallow \n in HTTP headers */ + if (!t) + t = s + strlen(s); + if (soap_send_raw(soap, s, t - s)) + return soap->error; + s = t + 1; + } while (*t); + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOHTTP +static int +http_post_header(struct soap *soap, const char *key, const char *val) +{ + if (key) + { + if (http_send_header(soap, key)) + return soap->error; + if (val && (soap_send_raw(soap, ": ", 2) || http_send_header(soap, val))) + return soap->error; + } + return soap_send_raw(soap, "\r\n", 2); +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOHTTP +static int +http_response(struct soap *soap, int status, ULONG64 count) +{ + int err; + char http[32]; + int code = status; + const char *line; +#ifdef WMW_RPM_IO + if (soap->rpmreqid) + httpOutputEnable(soap->rpmreqid); + if (soap->rpmreqid + || soap_valid_socket(soap->master) + || soap_valid_socket(soap->socket) + || soap->recvfd != 0 + || soap->sendfd != 1 + || soap->os) /* RPM behaves as if standalone */ +#else + if (soap_valid_socket(soap->master) + || soap_valid_socket(soap->socket) +#ifndef UNDER_CE + || soap->recvfd != 0 + || soap->sendfd != 1 +#else + || soap->recvfd != stdin + || soap->sendfd != stdout +#endif + || soap->os) /* standalone server application (over sockets), not CGI (over stdin/out) */ +#endif + (SOAP_SNPRINTF(http, sizeof(http), strlen(soap->http_version) + 5), "HTTP/%s", soap->http_version); + else + soap_strcpy(http, sizeof(http), "Status:"); + if (status >= SOAP_FILE && status < SOAP_FILE + 600) + { + code = status - SOAP_FILE; + if (code == 0) + code = 200; + } + else if (!status || status == SOAP_HTML) + { + if (count || ((soap->omode & SOAP_IO) == SOAP_IO_CHUNK)) + code = 200; + else + code = 202; + } + else if (status < 200 || status >= 600) + { + const char *s = *soap_faultcode(soap); + if (status >= SOAP_GET_METHOD && status <= SOAP_HTTP_METHOD) + code = 405; + else if (soap->version == 2 && (!s || !strcmp(s, "SOAP-ENV:Sender"))) + code = 400; + else + code = 500; + } + line = http_error(soap, code); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "HTTP Status = %d %s\n", code, line)); + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), sizeof(http) + 22 + strlen(line)), "%s %d %s", http, code, line); + err = soap->fposthdr(soap, soap->tmpbuf, NULL); + if (err) + return err; +#ifndef WITH_LEAN + if (status == 401) + { + (SOAP_SNPRINTF_SAFE(soap->tmpbuf, sizeof(soap->tmpbuf)), "Basic realm=\"%s\"", (soap->authrealm && strlen(soap->authrealm) + 14 < sizeof(soap->tmpbuf)) ? soap->authrealm : "gSOAP Web Service"); + err = soap->fposthdr(soap, "WWW-Authenticate", soap->tmpbuf); + if (err) + return err; + } + else if ((status >= 301 && status <= 303) || status == 307) + { + err = soap->fposthdr(soap, "Location", soap->endpoint); + if (err) + return err; + } +#endif + err = soap->fposthdr(soap, "Server", "gSOAP/2.8"); + if (err) + return err; + if (soap->cors_origin) + { + err = soap->fposthdr(soap, "Access-Control-Allow-Origin", soap->cors_origin); + if (err) + return err; + err = soap->fposthdr(soap, "Access-Control-Allow-Credentials", "true"); + if (err) + return err; + if (soap->cors_methods) + { + err = soap->fposthdr(soap, "Access-Control-Allow-Methods", soap->cors_methods); + if (err) + return err; + if (soap->cors_headers) + { + err = soap->fposthdr(soap, "Access-Control-Allow-Headers", soap->cors_headers); + if (err) + return err; + } + } + } + if (soap->x_frame_options) + { + err = soap->fposthdr(soap, "X-Frame-Options", soap->x_frame_options); + if (err) + return err; + } + soap->cors_origin = NULL; + soap->cors_methods = NULL; + soap->cors_headers = NULL; + err = soap_puthttphdr(soap, status, count); + if (err) + return err; +#ifdef WITH_COOKIES + if (soap_putsetcookies(soap)) + return soap->error; + soap_free_cookies(soap); +#endif + return soap->fposthdr(soap, NULL, NULL); +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_response(struct soap *soap, int status) +{ + ULONG64 count; + if (!(soap->omode & (SOAP_ENC_PLAIN | SOAP_IO_STORE /* this tests for chunking too */)) + && (status == SOAP_HTML || (status >= SOAP_FILE && status < SOAP_FILE + 600))) + soap->omode = (soap->omode & ~SOAP_IO) | SOAP_IO_STORE; + soap->status = status; + count = soap_count_attachments(soap); + if (soap_init_send(soap)) + return soap->error; +#ifndef WITH_NOHTTP + if ((soap->mode & SOAP_IO) != SOAP_IO_STORE && !(soap->mode & SOAP_ENC_PLAIN)) + { + int k = soap->mode; + soap->mode &= ~(SOAP_IO | SOAP_ENC_ZLIB); + if ((k & SOAP_IO) != SOAP_IO_FLUSH) + soap->mode |= SOAP_IO_BUFFER; + soap->error = soap->fresponse(soap, status, count); + if (soap->error) + return soap->error; +#ifndef WITH_LEANER + if ((k & SOAP_IO) == SOAP_IO_CHUNK) + { + if (soap_flush(soap)) + return soap->error; + } +#endif + soap->mode = k; + } +#endif +#ifndef WITH_LEANER + if (soap_begin_attachments(soap)) + return soap->error; +#endif + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_extend_url(struct soap *soap, const char *s, const char *t) +{ + if (s) + soap_strcpy(soap->msgbuf, sizeof(soap->msgbuf), s); + else + *soap->msgbuf = '\0'; + if (t && (*t == '/' || *t == '?')) + { + char *r = strchr(soap->msgbuf, '?'); + if (r) + { + if (*t == '?') + { + soap_strcat(soap->msgbuf, sizeof(soap->msgbuf), "&"); + soap_strcat(soap->msgbuf, sizeof(soap->msgbuf), t + 1); + } + else /* *t == '/' */ + { + size_t l = r - soap->msgbuf; + *r = '\0'; + soap_strcat(soap->msgbuf, sizeof(soap->msgbuf), t); + if (s) + soap_strcat(soap->msgbuf, sizeof(soap->msgbuf), s + l); + } + } + else + { + soap_strcat(soap->msgbuf, sizeof(soap->msgbuf), t); + } + } + return soap->msgbuf; +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_extend_url_query(struct soap *soap, const char *s, const char *t) +{ + (void)soap_extend_url(soap, s, t); /* fills and returns soap->msgbuf */ + if (strchr(soap->msgbuf, '?')) + soap_strcat(soap->msgbuf, sizeof(soap->msgbuf), "&"); + else + soap_strcat(soap->msgbuf, sizeof(soap->msgbuf), "?"); + return soap->msgbuf; +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_url_query(struct soap *soap, const char *s, const char *t) +{ + size_t n = strlen(s); + if (n) + { + char *r = soap->msgbuf; + size_t k = n - (s[n-1] == '='); + while ((r = strchr(r, '{')) != NULL) + if (!strncmp(++r, s, k) && r[k] == '}') + break; + if (r) + { + size_t m = t ? strlen(t) : 0; + (void)soap_memmove(r + m - 1, soap->msgbuf + sizeof(soap->msgbuf) - (r + n + 1), r + k + 1, strlen(r + k + 1) + 1); + if (m) + (void)soap_memmove(r - 1, soap->msgbuf + sizeof(soap->msgbuf) - (r - 1), t, m); + } + else + { + soap_strcat(soap->msgbuf, sizeof(soap->msgbuf), s); + if (t) + { + int m = (int)strlen(soap->msgbuf); /* msgbuf length is max SOAP_TMPLEN or just 1024 bytes */ + (void)soap_encode_url(t, soap->msgbuf + m, (int)sizeof(soap->msgbuf) - m); + } + soap_strcat(soap->msgbuf, sizeof(soap->msgbuf), "&"); + } + } +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_encode_url(const char *s, char *t, int len) +{ + int c; + int n = len; + if (s && n > 0) + { + while ((c = *s++) && --n > 0) + { + if (c == '-' + || c == '.' + || (c >= '0' && c <= '9') + || (c >= 'A' && c <= 'Z') + || c == '_' + || (c >= 'a' && c <= 'z') + || c == '~') + { + *t++ = c; + } + else if (n > 2) + { + *t++ = '%'; + *t++ = (c >> 4) + (c > 159 ? '7' : '0'); + c &= 0xF; + *t++ = c + (c > 9 ? '7' : '0'); + n -= 2; + } + else + { + break; + } + } + *t = '\0'; + } + return len - n; +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_encode_url_string(struct soap *soap, const char *s) +{ + if (s) + { + int n = 3 * (int)strlen(s) + 1; + char *t = (char*)soap_malloc(soap, n); + if (t) + { + (void)soap_encode_url(s, t, n); + return t; + } + } + return SOAP_STR_EOS; +} + +/******************************************************************************\ + * + * HTTP Cookies RFC 6265 + * +\******************************************************************************/ + +#ifdef WITH_COOKIES + +SOAP_FMAC1 +struct soap_cookie* +SOAP_FMAC2 +soap_cookie(struct soap *soap, const char *name, const char *domain, const char *path) +{ + return soap_cookie_env(soap, name, domain, path, 0); +} + +/******************************************************************************/ + +SOAP_FMAC1 +struct soap_cookie* +SOAP_FMAC2 +soap_cookie_env(struct soap *soap, const char *name, const char *domain, const char *path, short env) +{ + struct soap_cookie *p; + if (!domain && !env) + domain = soap->cookie_domain; + if (!path) + path = soap->cookie_path; + if (!path) + path = SOAP_STR_EOS; + else if (*path == '/') + path++; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Search cookie='%s' domain='%s' path='%s' env=%hd\n", name, domain ? domain : "(null)", path ? path : "(null)", env)); + for (p = soap->cookies; p; p = p->next) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Cookie in database: %s='%s' domain='%s' path='%s' env=%hd\n", p->name, p->value ? p->value : "(null)", p->domain ? p->domain : "(null)", p->path ? p->path : "(null)", p->env)); + if ((!env || p->env) + && !strcmp(p->name, name) + && (!domain || (domain && p->domain && !strcmp(p->domain, domain))) + && (!path || (path && p->path && !strncmp(p->path, path, strlen(p->path))))) + break; + } + return p; +} + +/******************************************************************************/ + +SOAP_FMAC1 +struct soap_cookie* +SOAP_FMAC2 +soap_set_cookie(struct soap *soap, const char *name, const char *value, const char *domain, const char *path) +{ + struct soap_cookie **p, *q; + int n; + if (!domain) + domain = soap->cookie_domain; + if (!path) + path = soap->cookie_path; + if (!path) + path = SOAP_STR_EOS; + else if (*path == '/') + path++; + q = soap_cookie(soap, name, domain, path); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Set %scookie: %s='%s' domain='%s' path='%s'\n", q ? SOAP_STR_EOS : "new ", name, value ? value : "(null)", domain ? domain : "(null)", path ? path : "(null)")); + if (!q) + { + q = (struct soap_cookie*)SOAP_MALLOC(soap, sizeof(struct soap_cookie)); + if (q) + { + size_t l = strlen(name) + 1; + q->name = NULL; + if (SOAP_MAXALLOCSIZE <= 0 || l <= SOAP_MAXALLOCSIZE) + q->name = (char*)SOAP_MALLOC(soap, l); + if (q->name) + (void)soap_memcpy(q->name, l, name, l); + q->value = NULL; + q->domain = NULL; + q->path = NULL; + q->expire = 0; + q->maxage = -1; + q->version = 1; + q->secure = 0; + q->modified = 0; + for (p = &soap->cookies, n = soap->cookie_max; *p && n; p = &(*p)->next, n--) + if (!strcmp((*p)->name, name) && (*p)->path && path && strcmp((*p)->path, path) < 0) + break; + if (n) + { + q->next = *p; + *p = q; + } + else + { + SOAP_FREE(soap, q->name); + SOAP_FREE(soap, q); + q = NULL; + } + } + } + else + { + q->modified = 1; + } + if (q) + { + if (q->value) + { + if (!value || strcmp(value, q->value)) + { + SOAP_FREE(soap, q->value); + q->value = NULL; + } + } + if (value && *value && !q->value) + { + size_t l = strlen(value) + 1; + q->value = NULL; + if (SOAP_MAXALLOCSIZE <= 0 || l <= SOAP_MAXALLOCSIZE) + q->value = (char*)SOAP_MALLOC(soap, l); + if (q->value) + soap_strcpy(q->value, l, value); + } + if (q->domain) + { + if (!domain || strcmp(domain, q->domain)) + { + SOAP_FREE(soap, q->domain); + q->domain = NULL; + } + } + if (domain && !q->domain) + { + size_t l = strlen(domain) + 1; + q->domain = NULL; + if (SOAP_MAXALLOCSIZE <= 0 || l <= SOAP_MAXALLOCSIZE) + q->domain = (char*)SOAP_MALLOC(soap, l); + if (q->domain) + soap_strcpy(q->domain, l, domain); + } + if (q->path) + { + if (!path || strncmp(path, q->path, strlen(q->path))) + { + SOAP_FREE(soap, q->path); + q->path = NULL; + } + } + if (path && !q->path) + { + size_t l = strlen(path) + 1; + q->path = NULL; + if (SOAP_MAXALLOCSIZE <= 0 || l <= SOAP_MAXALLOCSIZE) + q->path = (char*)SOAP_MALLOC(soap, l); + if (q->path) + soap_strcpy(q->path, l, path); + } + q->session = 1; + q->env = 0; + } + return q; +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_clr_cookie(struct soap *soap, const char *name, const char *domain, const char *path) +{ + struct soap_cookie **p, *q; + if (!domain) + domain = soap->cookie_domain; + if (!domain) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Error in clear cookie='%s': cookie domain not set\n", name ? name : "(null)")); + return; + } + if (!path) + path = soap->cookie_path; + if (!path) + path = SOAP_STR_EOS; + else if (*path == '/') + path++; + for (p = &soap->cookies, q = *p; q; q = *p) + { + if (!strcmp(q->name, name) && (!q->domain || !strcmp(q->domain, domain)) && (!q->path || !strncmp(q->path, path, strlen(q->path)))) + { + SOAP_FREE(soap, q->name); + if (q->value) + SOAP_FREE(soap, q->value); + if (q->domain) + SOAP_FREE(soap, q->domain); + if (q->path) + SOAP_FREE(soap, q->path); + *p = q->next; + SOAP_FREE(soap, q); + } + else + p = &q->next; + } +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char * +SOAP_FMAC2 +soap_cookie_value(struct soap *soap, const char *name, const char *domain, const char *path) +{ + struct soap_cookie *p; + p = soap_cookie(soap, name, domain, path); + if (p) + return p->value; + return NULL; +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char * +SOAP_FMAC2 +soap_env_cookie_value(struct soap *soap, const char *name, const char *domain, const char *path) +{ + struct soap_cookie *p; + p = soap_cookie(soap, name, domain, path); + if (p && p->env) + return p->value; + return NULL; +} + +/******************************************************************************/ + +SOAP_FMAC1 +time_t +SOAP_FMAC2 +soap_cookie_expire(struct soap *soap, const char *name, const char *domain, const char *path) +{ + struct soap_cookie *p; + p = soap_cookie(soap, name, domain, path); + if (p) + return (time_t)p->expire; + return -1; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_set_cookie_expire(struct soap *soap, const char *name, long maxage, const char *domain, const char *path) +{ + struct soap_cookie *p; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Set cookie expiration max-age=%ld: cookie='%s' domain='%s' path='%s'\n", maxage, name, domain ? domain : "(null)", path ? path : "(null)")); + p = soap_cookie(soap, name, domain, path); + if (p) + { + p->maxage = maxage; + p->modified = 1; + return SOAP_OK; + } + return SOAP_ERR; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_set_cookie_secure(struct soap *soap, const char *name, const char *domain, const char *path) +{ + struct soap_cookie *p; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Set cookie secure: cookie='%s' domain='%s' path='%s'\n", name, domain ? domain : "(null)", path ? path : "(null)")); + p = soap_cookie(soap, name, domain, path); + if (p) + { + p->secure = 1; + p->modified = 1; + return SOAP_OK; + } + return SOAP_ERR; +} +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_set_cookie_session(struct soap *soap, const char *name, const char *domain, const char *path) +{ + struct soap_cookie *p; + p = soap_cookie(soap, name, domain, path); + if (p) + { + p->session = 1; + p->modified = 1; + return SOAP_OK; + } + return SOAP_ERR; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_clr_cookie_session(struct soap *soap, const char *name, const char *domain, const char *path) +{ + struct soap_cookie *p; + p = soap_cookie(soap, name, domain, path); + if (p) + { + p->session = 0; + p->modified = 1; + return SOAP_OK; + } + return SOAP_ERR; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_putsetcookies(struct soap *soap) +{ + struct soap_cookie *p; + char *s, tmp[4096]; + const char *t; + for (p = soap->cookies; p; p = p->next) + { + if ((p->modified +#ifdef WITH_OPENSSL + || (!p->env && !soap->ssl == !p->secure) +#endif + ) && p->name && p->value && *p->name && *p->value) + { + s = tmp; + s += soap_encode_url(p->name, s, 3967); + *s++ = '='; + s += soap_encode_url(p->value, s, 3968 - (int)(s-tmp)); + t = p->domain ? p->domain : soap->cookie_domain; + if (t && (int)strlen(t) < 3968 - (int)(s-tmp)) + { + soap_strcpy(s, 4096 - (s-tmp), ";Domain="); + s += 8; + soap_strcpy(s, 4096 - (s-tmp), t); + s += strlen(s); + } + t = p->path ? p->path : soap->cookie_path; + if (t && (int)strlen(t) < 3976 - (int)(s-tmp)) + { + soap_strcpy(s, 4096 - (s-tmp), ";Path=/"); + s += 7; + if (*t == '/') + t++; + if (strchr(t, '%')) /* already URL encoded? */ + { + soap_strcpy(s, 4096 - (s-tmp), t); + s += strlen(s); + } + else + { + s += soap_encode_url(t, s, 4096 - (int)(s-tmp)); + } + } + if (p->version > 0 && s-tmp < 3983) + { + (SOAP_SNPRINTF(s, 4096 - (s-tmp), 29), ";Version=%u", p->version); + s += strlen(s); + } + if (p->maxage >= 0 && s-tmp < 4012) + { + (SOAP_SNPRINTF(s, 4096 - (s-tmp), 29), ";Max-Age=%ld", p->maxage); + s += strlen(s); + } +#if !defined(WITH_LEAN) +#if defined(HAVE_GMTIME_R) || defined(HAVE_GMTIME) + if (p->maxage >= 0 && s-tmp < 4041) + { + time_t n = time(NULL) + p->maxage; + struct tm T, *pT = &T; + size_t l = 0; + /* format is Wed, 09 Jun 2021 10:18:14 GMT */ +#if defined(HAVE_GMTIME_R) + if (gmtime_r(&n, pT) != SOAP_FUNC_R_ERR) + l = strftime(s, 4096 - (s-tmp), ";Expires=%a, %d %b %Y %H:%M:%S GMT", pT); +#else + pT = gmtime(&n); + if (pT) + l = strftime(s, 4096 - (s-tmp), ";Expires=%a, %d %b %Y %H:%M:%S GMT", pT); +#endif + s += l; + } +#endif +#endif + if (s-tmp < 4079 + && (p->secure +#ifdef WITH_OPENSSL + || soap->ssl +#endif + )) + { + soap_strcpy(s, 4096 - (s-tmp), ";Secure"); + s += strlen(s); + } + if (s-tmp < 4086) + soap_strcpy(s, 4096 - (s-tmp), ";HttpOnly"); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Set-Cookie: %s\n", tmp)); + soap->error = soap->fposthdr(soap, "Set-Cookie", tmp); + if (soap->error) + return soap->error; + } + } + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_putcookies(struct soap *soap, const char *domain, const char *path, int secure) +{ + struct soap_cookie **p, *q; + char *s, tmp[4096]; + unsigned int version = 0; + time_t now = time(NULL); + if (!domain || !path) + return SOAP_OK; + s = tmp; + p = &soap->cookies; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Sending cookies for domain='%s' path='%s'\n", domain, path)); + if (*path == '/') + path++; + while ((q = *p)) + { + if (q->expire && now >= (time_t)q->expire) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Cookie %s expired\n", q->name)); + SOAP_FREE(soap, q->name); + if (q->value) + SOAP_FREE(soap, q->value); + if (q->domain) + SOAP_FREE(soap, q->domain); + if (q->path) + SOAP_FREE(soap, q->path); + *p = q->next; + SOAP_FREE(soap, q); + } + else + { + int flag; + char *t = q->domain; + size_t n = 0; + if (!t) + flag = 1; + else + { + const char *r = strchr(t, ':'); + if (r) + n = r - t; + else + n = strlen(t); + flag = !strncmp(t, domain, n); + } + /* domain-level cookies, cannot compile when WITH_NOIO set */ +#ifndef WITH_NOIO + if (!flag) + { + struct hostent hostent; + if (!tcp_gethostbyname(soap, (char*)domain, &hostent, NULL)) + { + const char *r = hostent.h_name; + if (*t == '.') + { + size_t k = strlen(hostent.h_name); + if (k >= n) + r = hostent.h_name + k - n; + } + flag = !strncmp(t, r, n); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Domain cookie %s host %s (match=%d)\n", t, r, flag)); + } + } +#endif + if (flag + && (!q->path || !strncmp(q->path, path, strlen(q->path))) +#ifndef WITH_INSECURE_COOKIES + && (!q->secure || secure) +#endif + ) + { + size_t n = 12; + if (q->name) + n += 3*strlen(q->name); + if (q->value && *q->value) + n += 3*strlen(q->value) + 1; + if (q->path && *q->path) + n += strlen(q->path) + 9; + if (q->domain) + n += strlen(q->domain) + 11; + if (s + n >= tmp + sizeof(tmp)) + { + if (s == tmp) + return SOAP_OK; /* header too big, cannot split */ + /* split up HTTP header */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Cookie: %s\n", tmp)); + soap->error = soap->fposthdr(soap, "Cookie", tmp); + if (soap->error) + return soap->error; + s = tmp; + } + else if (s != tmp) + { + *s++ = ';'; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Sending cookie %s=%s path=\"/%s\" domain=\"%s\"\n", q->name ? q->name : "(null)", q->value ? q->value : "(null)", q->path ? q->path : "(null)", q->domain ? q->domain : "(null)")); + if (q->version != version && (s-tmp) + (size_t)36 < sizeof(tmp)) + { + (SOAP_SNPRINTF_SAFE(s, sizeof(tmp) - (s-tmp)), "$Version=%u;", q->version); + version = q->version; + s += strlen(s); + } + if (q->name && (s-tmp) + strlen(q->name) + (size_t)15 < sizeof(tmp)) + { + s += soap_encode_url(q->name, s, (int)(tmp+sizeof(tmp)-s)-15); + } + if (q->value && *q->value && (s-tmp) + strlen(q->value) + (size_t)16 < sizeof(tmp)) + { + *s++ = '='; + s += soap_encode_url(q->value, s, (int)(tmp+sizeof(tmp)-s)-16); + } + if (q->path && (s-tmp) + strlen(q->path) + (size_t)36 < sizeof(tmp)) + { + (SOAP_SNPRINTF_SAFE(s, sizeof(tmp) - (s-tmp)), ";$Path=\"/%s\"", (*q->path == '/' ? q->path + 1 : q->path)); + s += strlen(s); + } + if (q->domain && (s-tmp) + strlen(q->domain) + (size_t)36 < sizeof(tmp)) + { + (SOAP_SNPRINTF_SAFE(s, sizeof(tmp) - (s-tmp)), ";$Domain=\"%s\"", q->domain); + s += strlen(s); + } + } + p = &q->next; + } + } + if (s != tmp) + { + soap->error = soap->fposthdr(soap, "Cookie", tmp); + if (soap->error) + return soap->error; + } + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_getcookies(struct soap *soap, const char *val) +{ + struct soap_cookie *p = NULL, *q; + const char *s; + char *t, tmp[4096]; /* cookie size is up to 4096 bytes [RFC2109] */ + char *domain = NULL; + char *path = NULL; + unsigned int version = 0; + time_t now = time(NULL); + if (!val) + return; + s = val; + while (*s) + { + s = soap_decode_key(tmp, sizeof(tmp), s); + if (!soap_tag_cmp(tmp, "$Version")) + { + s = soap_decode_val(tmp, sizeof(tmp), s); + if (s) + { + if (p) + p->version = (int)soap_strtol(tmp, NULL, 10); + else + version = (int)soap_strtol(tmp, NULL, 10); + } + } + else if (!soap_tag_cmp(tmp, "$Path")) + { + s = soap_decode_val(tmp, sizeof(tmp), s); + if (*tmp) + { + size_t l = strlen(tmp) + 1; + t = NULL; + if (SOAP_MAXALLOCSIZE <= 0 || l <= SOAP_MAXALLOCSIZE) + t = (char*)SOAP_MALLOC(soap, l); + if (t) + (void)soap_memcpy((void*)t, l, (const void*)tmp, l); + } + else + { + t = NULL; + } + if (p) + { + if (p->path) + SOAP_FREE(soap, p->path); + p->path = t; + } + else + { + if (path) + SOAP_FREE(soap, path); + path = t; + } + } + else if (!soap_tag_cmp(tmp, "$Domain")) + { + s = soap_decode_val(tmp, sizeof(tmp), s); + if (*tmp) + { + size_t l = strlen(tmp) + 1; + t = NULL; + if (SOAP_MAXALLOCSIZE <= 0 || l <= SOAP_MAXALLOCSIZE) + t = (char*)SOAP_MALLOC(soap, l); + if (t) + (void)soap_memcpy((void*)t, l, (const void*)tmp, l); + } + else + { + t = NULL; + } + if (p) + { + if (p->domain) + SOAP_FREE(soap, p->domain); + p->domain = t; + } + else + { + if (domain) + SOAP_FREE(soap, domain); + domain = t; + } + } + else if (p && !soap_tag_cmp(tmp, "Path")) + { + if (p->path) + SOAP_FREE(soap, p->path); + s = soap_decode_val(tmp, sizeof(tmp), s); + if (*tmp) + { + size_t l = strlen(tmp) + 1; + p->path = NULL; + if (SOAP_MAXALLOCSIZE <= 0 || l <= SOAP_MAXALLOCSIZE) + p->path = (char*)SOAP_MALLOC(soap, l); + if (p->path) + (void)soap_memcpy((void*)p->path, l, (const void*)tmp, l); + } + else + { + p->path = NULL; + } + } + else if (p && !soap_tag_cmp(tmp, "Domain")) + { + if (p->domain) + SOAP_FREE(soap, p->domain); + s = soap_decode_val(tmp, sizeof(tmp), s); + if (*tmp) + { + size_t l = strlen(tmp) + 1; + p->domain = NULL; + if (SOAP_MAXALLOCSIZE <= 0 || l <= SOAP_MAXALLOCSIZE) + p->domain = (char*)SOAP_MALLOC(soap, l); + if (p->domain) + (void)soap_memcpy((void*)p->domain, l, (const void*)tmp, l); + } + else + { + p->domain = NULL; + } + } + else if (p && !soap_tag_cmp(tmp, "Version")) + { + s = soap_decode_val(tmp, sizeof(tmp), s); + p->version = (unsigned int)soap_strtoul(tmp, NULL, 10); + } + else if (p && !soap_tag_cmp(tmp, "Max-Age")) + { + s = soap_decode_val(tmp, sizeof(tmp), s); + p->expire = (ULONG64)(now + soap_strtol(tmp, NULL, 10)); + } + else if (p && !soap_tag_cmp(tmp, "Expires")) + { + if (*s == '=') + { + s = soap_decode(tmp, sizeof(tmp), s + 1, ";"); + if (!p->expire && strlen(tmp) >= 23) + { + char a[3]; + struct tm T; + static const char mns[] = "anebarprayunulugepctovec"; + const char *t = strchr(tmp, ' '); + if (t) + { + a[2] = '\0'; + memset((void*)&T, 0, sizeof(T)); + if (t[1] >= 'A') + { + /* format is Sun Nov 6 08:49:37 94 */ + a[0] = t[2]; + a[1] = t[3]; + T.tm_mon = (int)(strstr(mns, a) - mns) / 2; + a[0] = t[5]; + a[1] = t[6]; + T.tm_mday = (int)soap_strtol(a, NULL, 10); + if (t[17] && t[18] && t[19] != ' ') + t += 2; /* format is Sun Nov 6 08:49:37 2017 - ANSI-C */ + a[0] = t[17]; + a[1] = t[18]; + T.tm_year = 100 + (int)soap_strtol(a, NULL, 10); + t += 6; + } + else + { + /* format is Sunday, 06-Nov-17 08:49:37 GMT - RFC 850 */ + a[0] = t[1]; + a[1] = t[2]; + T.tm_mday = (int)soap_strtol(a, NULL, 10); + a[0] = t[5]; + a[1] = t[6]; + T.tm_mon = (int)(strstr(mns, a) - mns) / 2; + if (t[10] != ' ') + t += 2; /* format is Wed, 09 Jun 2021 10:18:14 GMT - RFC 822 */ + a[0] = t[8]; + a[1] = t[9]; + T.tm_year = 100 + (int)soap_strtol(a, NULL, 10); + t += 11; + } + a[0] = t[0]; + a[1] = t[1]; + T.tm_hour = (int)soap_strtol(a, NULL, 10); + a[0] = t[3]; + a[1] = t[4]; + T.tm_min = (int)soap_strtol(a, NULL, 10); + a[0] = t[6]; + a[1] = t[7]; + T.tm_sec = (int)soap_strtol(a, NULL, 10); + p->expire = (ULONG64)soap_timegm(&T); + } + } + } + } + else if (p && !soap_tag_cmp(tmp, "Secure")) + { + p->secure = 1; + s = soap_decode_val(tmp, sizeof(tmp), s); + } + else if (p && !soap_tag_cmp(tmp, "HttpOnly")) + { + s = soap_decode_val(tmp, sizeof(tmp), s); + } + else if (p && !soap_tag_cmp(tmp, "Comment")) + { + s = soap_decode_val(tmp, sizeof(tmp), s); + } + else if (*tmp) + { + if (p) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Got environment cookie='%s' value='%s' domain='%s' path='%s' expire=" SOAP_ULONG_FORMAT " secure=%d\n", p->name, p->value ? p->value : "(null)", p->domain ? p->domain : "(null)", p->path ? p->path : "(null)", p->expire, p->secure)); + q = soap_set_cookie(soap, p->name, p->value, p->domain, p->path); + if (q) + { + q->version = p->version; + q->expire = p->expire; + q->secure = p->secure; + q->env = 1; + } + if (p->name) + SOAP_FREE(soap, p->name); + if (p->value) + SOAP_FREE(soap, p->value); + if (p->domain) + SOAP_FREE(soap, p->domain); + if (p->path) + SOAP_FREE(soap, p->path); + SOAP_FREE(soap, p); + } + p = (struct soap_cookie*)SOAP_MALLOC(soap, sizeof(struct soap_cookie)); + if (p) + { + size_t l = strlen(tmp) + 1; + p->name = NULL; + if (SOAP_MAXALLOCSIZE <= 0 || l <= SOAP_MAXALLOCSIZE) + p->name = (char*)SOAP_MALLOC(soap, l); + if (p->name) + (void)soap_memcpy(p->name, l, tmp, l); + s = soap_decode_val(tmp, sizeof(tmp), s); + if (*tmp) + { + l = strlen(tmp) + 1; + p->value = NULL; + if (SOAP_MAXALLOCSIZE <= 0 || l <= SOAP_MAXALLOCSIZE) + p->value = (char*)SOAP_MALLOC(soap, l); + if (p->value) + (void)soap_memcpy((void*)p->value, l, (const void*)tmp, l); + } + else + { + p->value = NULL; + } + if (domain) + { + p->domain = domain; + } + else + { + p->domain = NULL; + } + if (path) + { + p->path = path; + } + else if (*soap->path) + { + l = strlen(soap->path) + 1; + p->path = NULL; + if (SOAP_MAXALLOCSIZE <= 0 || l <= SOAP_MAXALLOCSIZE) + p->path = (char*)SOAP_MALLOC(soap, l); + if (p->path) + (void)soap_memcpy((void*)p->path, l, (const void*)soap->path, l); + } + else + { + p->path = (char*)SOAP_MALLOC(soap, 2); + if (p->path) + (void)soap_memcpy((void*)p->path, 2, (const void*)"/", 2); + } + p->expire = 0; + p->secure = 0; + p->version = version; + } + } + } + if (p) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Got environment cookie='%s' value='%s' domain='%s' path='%s' expire=" SOAP_ULONG_FORMAT " secure=%d\n", p->name, p->value ? p->value : "(null)", p->domain ? p->domain : "(null)", p->path ? p->path : "(null)", p->expire, p->secure)); + q = soap_set_cookie(soap, p->name, p->value, p->domain, p->path); + if (q) + { + q->version = p->version; + q->expire = p->expire; + q->secure = p->secure; + q->env = 1; + } + if (p->name) + SOAP_FREE(soap, p->name); + if (p->value) + SOAP_FREE(soap, p->value); + if (p->domain) + SOAP_FREE(soap, p->domain); + if (p->path) + SOAP_FREE(soap, p->path); + SOAP_FREE(soap, p); + } + if (domain) + SOAP_FREE(soap, domain); + if (path) + SOAP_FREE(soap, path); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_getenv_cookies(struct soap *soap) +{ + struct soap_cookie *p; + const char *s; + char key[4096], val[4096]; /* cookie size is up to 4096 bytes [RFC2109] */ + s = getenv("HTTP_COOKIE"); + if (!s) + return SOAP_ERR; + do + { + s = soap_decode_key(key, sizeof(key), s); + s = soap_decode_val(val, sizeof(val), s); + p = soap_set_cookie(soap, key, val, NULL, NULL); + if (p) + p->env = 1; + } while (*s); + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +struct soap_cookie* +SOAP_FMAC2 +soap_copy_cookies(struct soap *copy, const struct soap *soap) +{ + struct soap_cookie *p, **q, *r; + (void)copy; + q = &r; + for (p = soap->cookies; p; p = p->next) + { + *q = (struct soap_cookie*)SOAP_MALLOC(copy, sizeof(struct soap_cookie)); + if (!*q) + return r; + **q = *p; + if (p->name) + { + size_t l = strlen(p->name) + 1; + (*q)->name = NULL; + if (SOAP_MAXALLOCSIZE <= 0 || l <= SOAP_MAXALLOCSIZE) + (*q)->name = (char*)SOAP_MALLOC(copy, l); + if ((*q)->name) + (void)soap_memcpy((*q)->name, l, p->name, l); + } + if (p->value) + { + size_t l = strlen(p->value) + 1; + (*q)->value = NULL; + if (SOAP_MAXALLOCSIZE <= 0 || l <= SOAP_MAXALLOCSIZE) + (*q)->value = (char*)SOAP_MALLOC(copy, l); + if ((*q)->value) + (void)soap_memcpy((*q)->value, l, p->value, l); + } + if (p->domain) + { + size_t l = strlen(p->domain) + 1; + (*q)->domain = NULL; + if (SOAP_MAXALLOCSIZE <= 0 || l <= SOAP_MAXALLOCSIZE) + (*q)->domain = (char*)SOAP_MALLOC(copy, l); + if ((*q)->domain) + (void)soap_memcpy((*q)->domain, l, p->domain, l); + } + if (p->path) + { + size_t l = strlen(p->path) + 1; + (*q)->path = NULL; + if (SOAP_MAXALLOCSIZE <= 0 || l <= SOAP_MAXALLOCSIZE) + (*q)->path = (char*)SOAP_MALLOC(copy, l); + if ((*q)->path) + (void)soap_memcpy((*q)->path, l, p->path, l); + } + q = &(*q)->next; + } + *q = NULL; + return r; +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_free_cookies(struct soap *soap) +{ + struct soap_cookie *p; + for (p = soap->cookies; p; p = soap->cookies) + { + soap->cookies = p->next; + SOAP_FREE(soap, p->name); + if (p->value) + SOAP_FREE(soap, p->value); + if (p->domain) + SOAP_FREE(soap, p->domain); + if (p->path) + SOAP_FREE(soap, p->path); + SOAP_FREE(soap, p); + } +} + +/******************************************************************************/ + +#endif /* WITH_COOKIES */ + +/******************************************************************************/ + +SOAP_FMAC1 +size_t +SOAP_FMAC2 +soap_hash(const char *s) +{ + size_t h = 0; + while (*s) + h = 65599*h + *s++; + return h % SOAP_IDHASH; +} + +/******************************************************************************/ + +static void +soap_init_pht(struct soap *soap) +{ + int i; + soap->pblk = NULL; + soap->pidx = 0; + for (i = 0; i < (int)SOAP_PTRHASH; i++) + soap->pht[i] = NULL; +} + +/******************************************************************************/ + +SOAP_FMAC1 +struct soap* +SOAP_FMAC2 +soap_versioning(soap_new)(soap_mode imode, soap_mode omode) +{ + struct soap *soap; +#ifdef __cplusplus + soap = SOAP_NEW_UNMANAGED(struct soap); +#else + soap = (struct soap*)SOAP_MALLOC_UNMANAGED(sizeof(struct soap)); +#endif + if (soap) + soap_versioning(soap_init)(soap, imode, omode); + return soap; +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_free(struct soap *soap) +{ + soap_done(soap); +#ifdef __cplusplus + SOAP_DELETE_UNMANAGED(soap); +#else + SOAP_FREE_UNMANAGED(soap); +#endif +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_del(struct soap *soap) +{ + free(soap); +} + +/******************************************************************************/ + +static void +soap_free_pht(struct soap *soap) +{ + struct soap_pblk *pb, *next; + int i; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Free pointer hashtable\n")); + for (pb = soap->pblk; pb; pb = next) + { + next = pb->next; + SOAP_FREE(soap, pb); + } + soap->pblk = NULL; + soap->pidx = 0; + for (i = 0; i < (int)SOAP_PTRHASH; i++) + soap->pht[i] = NULL; +} + +/******************************************************************************/ + +#ifndef WITH_NOIDREF +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_embed(struct soap *soap, const void *p, const void *a, int n, int t) +{ + int id; + struct soap_plist *pp; + if (soap->version == 2) + soap->encoding = 1; + if (!p || (!soap->encodingStyle && !(soap->mode & SOAP_XML_GRAPH)) || (soap->mode & SOAP_XML_TREE)) + return 0; + if (a) + id = soap_array_pointer_lookup(soap, p, a, n, t, &pp); + else + id = soap_pointer_lookup(soap, p, t, &pp); + if (id) + { + if (soap_is_embedded(soap, pp) + || soap_is_single(soap, pp)) + return 0; + soap_set_embedded(soap, pp); + } + return id; +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_pointer_lookup(struct soap *soap, const void *p, int type, struct soap_plist **ppp) +{ + struct soap_plist *pp; + *ppp = NULL; + if (p) + { + for (pp = soap->pht[soap_hash_ptr(p)]; pp; pp = pp->next) + { + if (pp->ptr == p && pp->type == type) + { + *ppp = pp; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Lookup location=%p type=%d id=%d\n", p, type, pp->id)); + return pp->id; + } + } + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Lookup location=%p type=%d: not found\n", p, type)); + return 0; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_pointer_enter(struct soap *soap, const void *p, const void *a, int n, int type, struct soap_plist **ppp) +{ + size_t h; + struct soap_plist *pp; + (void)n; + if (!soap->pblk || soap->pidx >= SOAP_PTRBLK) + { + struct soap_pblk *pb = (struct soap_pblk*)SOAP_MALLOC(soap, sizeof(struct soap_pblk)); + if (!pb) + { + soap->error = SOAP_EOM; + return 0; + } + pb->next = soap->pblk; + soap->pblk = pb; + soap->pidx = 0; + } + *ppp = pp = &soap->pblk->plist[soap->pidx++]; + if (a) + h = soap_hash_ptr(a); + else + h = soap_hash_ptr(p); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Pointer enter location=%p array=%p size=%lu type=%d id=%d\n", p, a, (unsigned long)n, type, soap->idnum+1)); + pp->next = soap->pht[h]; + pp->type = type; + pp->mark1 = 0; + pp->mark2 = 0; + pp->ptr = p; + pp->dup = NULL; + pp->array = a; + pp->size = n; + soap->pht[h] = pp; + pp->id = ++soap->idnum; + return pp->id; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_array_pointer_lookup(struct soap *soap, const void *p, const void *a, int n, int type, struct soap_plist **ppp) +{ + struct soap_plist *pp; + *ppp = NULL; + if (!p || !a) + return 0; + for (pp = soap->pht[soap_hash_ptr(a)]; pp; pp = pp->next) + { + if (pp->type == type && pp->array == a && pp->size == n) + { + *ppp = pp; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Array lookup location=%p type=%d id=%d\n", a, type, pp->id)); + return pp->id; + } + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Array lookup location=%p type=%d: not found\n", a, type)); + return 0; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_begin_count(struct soap *soap) +{ + soap_free_ns(soap); + soap->error = SOAP_OK; +#ifndef WITH_LEANER + if ((soap->mode & SOAP_ENC_DIME) || (soap->omode & SOAP_ENC_DIME)) + { + soap->mode = soap->omode | SOAP_IO_LENGTH | SOAP_ENC_DIME; + } + else +#endif + { + soap->mode = soap->omode; + if ((soap->mode & SOAP_IO_UDP)) + { + soap->mode &= SOAP_IO; + soap->mode |= SOAP_IO_BUFFER | SOAP_ENC_PLAIN; + } + if ((soap->mode & SOAP_IO) == SOAP_IO_STORE + || (((soap->mode & SOAP_IO) == SOAP_IO_CHUNK || (soap->mode & SOAP_ENC_PLAIN)) +#ifndef WITH_LEANER + && !soap->fpreparesend +#endif + )) + soap->mode &= ~SOAP_IO_LENGTH; + else + soap->mode |= SOAP_IO_LENGTH; + } +#ifdef WITH_ZLIB + if ((soap->mode & SOAP_ENC_ZLIB) && (soap->mode & SOAP_IO) == SOAP_IO_FLUSH) + { + if (!(soap->mode & SOAP_ENC_DIME)) + soap->mode &= ~SOAP_IO_LENGTH; + if ((soap->mode & SOAP_ENC_PLAIN)) + soap->mode |= SOAP_IO_BUFFER; + else + soap->mode |= SOAP_IO_STORE; + } +#endif +#ifndef WITH_LEANER + if ((soap->mode & SOAP_ENC_MTOM) && (soap->mode & SOAP_ENC_DIME)) + soap->mode |= SOAP_ENC_MIME; + else if (!(soap->mode & SOAP_ENC_MIME)) + soap->mode &= ~SOAP_ENC_MTOM; + if ((soap->mode & SOAP_ENC_MIME)) + soap_select_mime_boundary(soap); + soap->dime.list = soap->dime.last; /* keep track of last DIME attachment */ +#endif + soap->count = 0; + soap->ns = 0; + soap->null = 0; + soap->position = 0; + soap->mustUnderstand = 0; + soap->encoding = 0; + soap->part = SOAP_BEGIN_SEND; + soap->event = 0; + soap->evlev = 0; + soap->idnum = 0; + soap->body = 1; + soap->level = 0; + soap_clr_attr(soap); + soap_set_local_namespaces(soap); +#ifndef WITH_LEANER + soap->dime.size = 0; /* accumulate total size of attachments */ + if (soap->fprepareinitsend && (soap->mode & SOAP_IO) != SOAP_IO_STORE && (soap->error = soap->fprepareinitsend(soap)) != SOAP_OK) + return soap->error; +#endif + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Begin count phase (socket=%d mode=0x%x count=" SOAP_ULONG_FORMAT ")\n", (int)soap->socket, (unsigned int)soap->mode, soap->count)); +#ifndef WITH_LEANER + if ((soap->mode & SOAP_IO_LENGTH)) + return soap_begin_attachments(soap); +#endif + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_end_count(struct soap *soap) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "End of count phase\n")); +#ifndef WITH_LEANER + if ((soap->mode & SOAP_IO_LENGTH)) + { + if (soap_end_attachments(soap)) + return soap->error; + if (soap->fpreparefinalsend && (soap->error = soap->fpreparefinalsend(soap)) != SOAP_OK) + return soap->error; + } +#else + (void)soap; +#endif + return SOAP_OK; +} + +/******************************************************************************/ + +static int +soap_init_send(struct soap *soap) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Initializing for output to socket=%d/fd=%d\n", (int)soap->socket, soap->sendfd)); + *soap->tag = '\0'; + soap_free_ns(soap); + soap->error = SOAP_OK; + soap->mode = soap->omode | (soap->mode & (SOAP_IO_LENGTH | SOAP_ENC_DIME)); +#ifndef WITH_LEAN + if ((soap->mode & SOAP_IO_UDP)) + { + soap->mode &= ~SOAP_IO; + soap->mode |= SOAP_IO_BUFFER | SOAP_ENC_PLAIN; + if ((soap->mode & SOAP_IO_LENGTH) && soap->count > sizeof(soap->buf)) + return soap->error = SOAP_UDP_ERROR; + } +#endif +#ifdef WITH_ZLIB + if ((soap->mode & SOAP_ENC_ZLIB) && (soap->mode & SOAP_IO) == SOAP_IO_FLUSH) + { + if ((soap->mode & SOAP_ENC_PLAIN)) + soap->mode |= SOAP_IO_BUFFER; + else + soap->mode |= SOAP_IO_STORE; + } +#endif +#if !defined(__cplusplus) || defined(WITH_COMPAT) + if (soap->os) + { + *soap->os = NULL; + soap->mode = (soap->mode & ~SOAP_IO) | SOAP_IO_STORE; + } + else +#endif + if ((soap->mode & SOAP_IO) == SOAP_IO_FLUSH && soap_valid_socket(soap->socket)) + { + if ((soap->mode & SOAP_IO_LENGTH) || (soap->mode & SOAP_ENC_PLAIN)) + soap->mode |= SOAP_IO_BUFFER; + else + soap->mode |= SOAP_IO_STORE; + } + soap->mode &= ~SOAP_IO_LENGTH; + if ((soap->mode & SOAP_IO) == SOAP_IO_STORE && soap_alloc_block(soap) == NULL) + return soap->error; + if (!(soap->mode & SOAP_IO_KEEPALIVE)) + soap->keep_alive = 0; +#ifndef WITH_LEANER + if ((soap->mode & SOAP_ENC_MTOM) && (soap->mode & SOAP_ENC_DIME)) + { + soap->mode |= SOAP_ENC_MIME; + soap->mode &= ~SOAP_ENC_DIME; + } + else if (!(soap->mode & SOAP_ENC_MIME)) + { + soap->mode &= ~SOAP_ENC_MTOM; + } + if ((soap->mode & SOAP_ENC_MIME)) + soap_select_mime_boundary(soap); +#ifdef WIN32 +#ifndef UNDER_CE +#ifndef WITH_FASTCGI + if (!soap_valid_socket(soap->socket) && !soap->os && soap->sendfd >= 0) /* Set win32 stdout or soap->sendfd to BINARY, e.g. to support DIME */ +#ifdef __BORLANDC__ + setmode(soap->sendfd, _O_BINARY); +#else + _setmode(soap->sendfd, _O_BINARY); +#endif +#endif +#endif +#endif +#endif + if ((soap->mode & SOAP_IO)) + soap->buflen = soap->bufidx = 0; + soap->chunksize = 0; + soap->ns = 0; + soap->null = 0; + soap->position = 0; + soap->mustUnderstand = 0; + soap->encoding = 0; + soap->event = 0; + soap->evlev = 0; + soap->idnum = 0; + soap->body = 1; + soap->level = 0; + soap_clr_attr(soap); + soap_set_local_namespaces(soap); +#ifdef WITH_ZLIB + soap->z_ratio_out = 1.0; + if ((soap->mode & SOAP_ENC_ZLIB) && soap->zlib_state != SOAP_ZLIB_DEFLATE) + { + if (!soap->d_stream) + { + soap->d_stream = (z_stream*)SOAP_MALLOC(soap, sizeof(z_stream)); + if (!soap->d_stream) + return soap->error = SOAP_EOM; + soap->d_stream->zalloc = Z_NULL; + soap->d_stream->zfree = Z_NULL; + soap->d_stream->opaque = Z_NULL; + soap->d_stream->next_in = Z_NULL; + } + if (!soap->z_buf) + soap->z_buf = (char*)SOAP_MALLOC(soap, sizeof(soap->buf)); + if (!soap->z_buf) + return soap->error = SOAP_EOM; + soap->d_stream->next_out = (Byte*)soap->z_buf; + soap->d_stream->avail_out = sizeof(soap->buf); +#ifdef WITH_GZIP + if (soap->zlib_out != SOAP_ZLIB_DEFLATE) + { + (void)soap_memcpy((void*)soap->z_buf, sizeof(soap->buf), (const void*)"\37\213\10\0\0\0\0\0\0\377", 10); + soap->d_stream->next_out = (Byte*)soap->z_buf + 10; + soap->d_stream->avail_out = sizeof(soap->buf) - 10; + soap->z_crc = crc32(0L, NULL, 0); + soap->zlib_out = SOAP_ZLIB_GZIP; + if (soap->z_dict) + *((Byte*)soap->z_buf + 2) = 0xff; + if (deflateInit2(soap->d_stream, soap->z_level, Z_DEFLATED, -MAX_WBITS, 8, Z_DEFAULT_STRATEGY) != Z_OK) + return soap->error = SOAP_ZLIB_ERROR; + } + else +#endif + if (deflateInit(soap->d_stream, soap->z_level) != Z_OK) + return soap->error = SOAP_ZLIB_ERROR; + if (soap->z_dict) + { + if (deflateSetDictionary(soap->d_stream, (const Bytef*)soap->z_dict, soap->z_dict_len) != Z_OK) + return soap->error = SOAP_ZLIB_ERROR; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Deflate initialized\n")); + soap->zlib_state = SOAP_ZLIB_DEFLATE; + } +#endif +#ifdef WITH_OPENSSL + if (soap->ssl) + ERR_clear_error(); +#endif + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Begin send phase (socket=%d mode=0x%x count=" SOAP_ULONG_FORMAT ")\n", (int)soap->socket, soap->mode, soap->count)); + soap->part = SOAP_BEGIN_SEND; +#ifndef WITH_LEANER + if (soap->fprepareinitsend && (soap->mode & SOAP_IO) == SOAP_IO_STORE && (soap->error = soap->fprepareinitsend(soap)) != SOAP_OK) + return soap->error; +#endif +#ifndef WITH_LEAN + soap->start = (ULONG64)time(NULL); +#endif + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_begin_send(struct soap *soap) +{ +#ifndef WITH_LEANER + if (soap_init_send(soap)) + return soap->error; + return soap_begin_attachments(soap); +#else + return soap_init_send(soap); +#endif +} + +/******************************************************************************/ + +#ifndef WITH_NOIDREF +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_embedded(struct soap *soap, const void *p, int t) +{ + struct soap_plist *pp; + if (soap_pointer_lookup(soap, p, t, &pp)) + { + pp->mark1 = 1; + pp->mark2 = 1; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Embedded %p type=%d mark set to 1\n", p, t)); + } +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIDREF +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_reference(struct soap *soap, const void *p, int t) +{ + struct soap_plist *pp; + if (!p || (!soap->encodingStyle && !(soap->omode & (SOAP_ENC_DIME | SOAP_ENC_MIME | SOAP_ENC_MTOM | SOAP_XML_GRAPH))) || (soap->omode & SOAP_XML_TREE)) + return 1; + if (soap_pointer_lookup(soap, p, t, &pp)) + { + if (pp->mark1 == 0) + { + pp->mark1 = 2; + pp->mark2 = 2; + } + } + else if (!soap_pointer_enter(soap, p, NULL, 0, t, &pp)) + { + return 1; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Reference %p type=%d (%d %d)\n", p, t, (int)pp->mark1, (int)pp->mark2)); + return pp->mark1; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIDREF +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_array_reference(struct soap *soap, const void *p, const void *a, int n, int t) +{ + struct soap_plist *pp; + if (!p || !a || (!soap->encodingStyle && !(soap->omode & SOAP_XML_GRAPH)) || (soap->omode & SOAP_XML_TREE)) + return 1; + if (soap_array_pointer_lookup(soap, p, a, n, t, &pp)) + { + if (pp->mark1 == 0) + { + pp->mark1 = 2; + pp->mark2 = 2; + } + } + else if (!soap_pointer_enter(soap, p, a, n, t, &pp)) + { + return 1; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Array reference %p ptr=%p n=%lu t=%d (%d %d)\n", p, a, (unsigned long)n, t, (int)pp->mark1, (int)pp->mark2)); + return pp->mark1; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIDREF +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_attachment_reference(struct soap *soap, const void *p, const void *a, int n, int t, const char *id, const char *type) +{ + struct soap_plist *pp; + if (!p || !a || (!soap->encodingStyle && !(soap->omode & SOAP_XML_GRAPH) && !id && !type) || (soap->omode & SOAP_XML_TREE)) + return 1; + if (soap_array_pointer_lookup(soap, p, a, n, t, &pp)) + { + if (pp->mark1 == 0) + { + pp->mark1 = 2; + pp->mark2 = 2; + } + } + else if (!soap_pointer_enter(soap, p, a, n, t, &pp)) + { + return 1; + } + if (id || type) + soap->mode |= SOAP_ENC_DIME; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Attachment reference %p ptr=%p n=%lu t=%d (%d %d)\n", p, a, (unsigned long)n, t, (int)pp->mark1, (int)pp->mark2)); + return pp->mark1; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIDREF +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_embedded_id(struct soap *soap, int id, const void *p, int t) +{ + struct soap_plist *pp = NULL; + if (id >= 0 || (!soap->encodingStyle && !(soap->omode & SOAP_XML_GRAPH)) || (soap->omode & SOAP_XML_TREE)) + return id; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Embedded_id %p type=%d id=%d\n", p, t, id)); + if (id < -1) + return soap_embed(soap, p, NULL, 0, t); + if (id < 0) + { + id = soap_pointer_lookup(soap, p, t, &pp); + if (soap->version == 1 && soap->part != SOAP_IN_HEADER) + { + if (id) + { + if ((soap->mode & SOAP_IO_LENGTH)) + pp->mark1 = 2; + else + pp->mark2 = 2; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Embedded_id multiref id=%d %p type=%d = (%d %d)\n", id, p, t, (int)pp->mark1, (int)pp->mark2)); + } + return -1; + } + else if (id) + { + if ((soap->mode & SOAP_IO_LENGTH)) + pp->mark1 = 1; + else + pp->mark2 = 1; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Embedded_id embedded ref id=%d %p type=%d = (%d %d)\n", id, p, t, (int)pp->mark1, (int)pp->mark2)); + } + } + return id; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIDREF +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_is_embedded(struct soap *soap, struct soap_plist *pp) +{ + if (!pp) + return 0; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Is embedded? %d %d\n", (int)pp->mark1, (int)pp->mark2)); + if (soap->version == 1 && soap->encodingStyle && !(soap->omode & SOAP_XML_GRAPH) && soap->part != SOAP_IN_HEADER) + { + if ((soap->mode & SOAP_IO_LENGTH)) + return pp->mark1 != 0; + return pp->mark2 != 0; + } + if ((soap->mode & SOAP_IO_LENGTH)) + return pp->mark1 == 1; + return pp->mark2 == 1; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIDREF +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_is_single(struct soap *soap, struct soap_plist *pp) +{ + if (soap->part == SOAP_IN_HEADER) + return 1; + if (!pp) + return 0; + if ((soap->mode & SOAP_IO_LENGTH)) + return pp->mark1 == 0; + return pp->mark2 == 0; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIDREF +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_set_embedded(struct soap *soap, struct soap_plist *pp) +{ + if (!pp) + return; + if ((soap->mode & SOAP_IO_LENGTH)) + pp->mark1 = 1; + else + pp->mark2 = 1; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_attachment(struct soap *soap, const char *tag, int id, const void *p, const void *a, int n, const char *aid, const char *atype, const char *aoptions, const char *type, int t) +{ + struct soap_plist *pp; + int i; + if (!p || !a || (!aid && !atype) || (!soap->encodingStyle && !(soap->omode & (SOAP_ENC_DIME | SOAP_ENC_MIME | SOAP_ENC_MTOM | SOAP_XML_GRAPH))) || (soap->omode & SOAP_XML_TREE)) + return soap_element_id(soap, tag, id, p, a, n, type, t, NULL); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Attachment tag='%s' id='%s' (%d) type='%s'\n", tag, aid ? aid : SOAP_STR_EOS, id, atype ? atype : SOAP_STR_EOS)); + i = soap_array_pointer_lookup(soap, p, a, n, t, &pp); + if (!i) + { + i = soap_pointer_enter(soap, p, a, n, t, &pp); + if (!i) + { + soap->error = SOAP_EOM; + return -1; + } + } + if (id <= 0) + id = i; + if (!aid) + { + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), strlen(soap->dime_id_format) + 20), soap->dime_id_format, id); + aid = soap_strdup(soap, soap->tmpbuf); + if (!aid) + return -1; + } + /* Add MTOM xop:Include element when necessary */ + /* TODO: this code to be obsoleted with new import/xop.h conventions */ + if ((soap->omode & SOAP_ENC_MTOM) && strcmp(tag, "xop:Include")) + { + if (soap_element_begin_out(soap, tag, 0, type) + || soap_element_href(soap, "xop:Include", 0, "xmlns:xop=\"http://www.w3.org/2004/08/xop/include\" href", aid) + || soap_element_end_out(soap, tag)) + return soap->error; + } + else if (soap_element_href(soap, tag, 0, "href", aid)) + { + return soap->error; + } + if ((soap->mode & SOAP_IO_LENGTH)) + { + if (pp->mark1 != 3) + { + struct soap_multipart *content; + if ((soap->omode & SOAP_ENC_MTOM)) + content = soap_alloc_multipart(soap, &soap->mime.first, &soap->mime.last, (const char*)a, n); + else + content = soap_alloc_multipart(soap, &soap->dime.first, &soap->dime.last, (const char*)a, n); + if (!content) + { + soap->error = SOAP_EOM; + return -1; + } + if (!strncmp(aid, "cid:", 4)) /* RFC 2111 */ + { + if ((soap->omode & SOAP_ENC_MTOM)) + { + size_t l = strlen(aid) - 1; + char *s = (char*)soap_malloc(soap, l); + if (s) + { + s[0] = '<'; + (void)soap_strncpy(s + 1, l - 1, aid + 4, l - 3); + s[l - 2] = '>'; + s[l - 1] = '\0'; + content->id = s; + } + } + else + { + content->id = aid + 4; + } + } + else + { + content->id = aid; + } + content->type = atype; + content->options = aoptions; + content->encoding = SOAP_MIME_BINARY; + pp->mark1 = 3; + } + } + else + { + pp->mark2 = 3; + } + return -1; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIDREF +static void +soap_init_iht(struct soap *soap) +{ + int i; + for (i = 0; i < SOAP_IDHASH; i++) + soap->iht[i] = NULL; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIDREF +static void +soap_free_iht(struct soap *soap) +{ + int i; + struct soap_ilist *ip = NULL, *p = NULL; + struct soap_flist *fp = NULL, *fq = NULL; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Free ID hashtable\n")); + for (i = 0; i < SOAP_IDHASH; i++) + { + for (ip = soap->iht[i]; ip; ip = p) + { + for (fp = ip->flist; fp; fp = fq) + { + fq = fp->next; + SOAP_FREE(soap, fp); + } + p = ip->next; + SOAP_FREE(soap, ip); + } + soap->iht[i] = NULL; + } +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIDREF +SOAP_FMAC1 +struct soap_ilist * +SOAP_FMAC2 +soap_lookup(struct soap *soap, const char *id) +{ + struct soap_ilist *ip = NULL; + for (ip = soap->iht[soap_hash(id)]; ip; ip = ip->next) + if (!strcmp(ip->id, id)) + return ip; + return NULL; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIDREF +SOAP_FMAC1 +struct soap_ilist * +SOAP_FMAC2 +soap_enter(struct soap *soap, const char *id, int t, size_t n) +{ + size_t h; + struct soap_ilist *ip = NULL; + size_t l = strlen(id); + if (sizeof(struct soap_ilist) + l > l && (SOAP_MAXALLOCSIZE <= 0 || sizeof(struct soap_ilist) + l <= SOAP_MAXALLOCSIZE)) + ip = (struct soap_ilist*)SOAP_MALLOC(soap, sizeof(struct soap_ilist) + l); + if (ip) + { + ip->type = t; + ip->size = n; + ip->ptr = NULL; + ip->spine = NULL; + ip->link = NULL; + ip->copy = NULL; + ip->flist = NULL; + ip->smart = NULL; + ip->shaky = 0; + (void)soap_memcpy((char*)ip->id, l + 1, id, l + 1); + h = soap_hash(id); /* h = (HASH(id) % SOAP_IDHASH) so soap->iht[h] is safe */ + ip->next = soap->iht[h]; + soap->iht[h] = ip; + } + return ip; +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +void* +SOAP_FMAC2 +soap_malloc(struct soap *soap, size_t n) +{ + char *p; + size_t k = n; + if (SOAP_MAXALLOCSIZE > 0 && n > SOAP_MAXALLOCSIZE) + { + soap->error = SOAP_EOM; + return NULL; + } + if (!soap) + return SOAP_MALLOC(soap, n); + n += sizeof(short); + n += (~n+1) & (sizeof(void*)-1); /* align at 4-, 8- or 16-byte boundary by rounding up */ + if (n + sizeof(void*) + sizeof(size_t) < k) + { + soap->error = SOAP_EOM; + return NULL; + } + p = (char*)SOAP_MALLOC(soap, n + sizeof(void*) + sizeof(size_t)); + if (!p) + { + soap->error = SOAP_EOM; + return NULL; + } + /* set a canary word to detect memory overruns and data corruption */ + *(unsigned short*)(p + n - sizeof(unsigned short)) = (unsigned short)SOAP_CANARY; + /* keep chain of alloced cells for destruction */ + *(void**)(p + n) = soap->alist; + *(size_t*)(p + n + sizeof(void*)) = n; + soap->alist = p + n; + return p; +} + +/******************************************************************************/ + +#ifdef SOAP_MEM_DEBUG +static void +soap_init_mht(struct soap *soap) +{ + int i; + for (i = 0; i < (int)SOAP_PTRHASH; i++) + soap->mht[i] = NULL; +} +#endif + +/******************************************************************************/ + +#ifdef SOAP_MEM_DEBUG +static void +soap_free_mht(struct soap *soap) +{ + int i; + struct soap_mlist *mp, *mq; + for (i = 0; i < (int)SOAP_PTRHASH; i++) + { + for (mp = soap->mht[i]; mp; mp = mq) + { + mq = mp->next; + if (mp->live) + fprintf(stderr, "%s(%d): malloc() = %p not freed (memory leak or forgot to call soap_end()?)\n", mp->file, mp->line, mp->ptr); + free(mp); + } + soap->mht[i] = NULL; + } +} +#endif + +/******************************************************************************/ + +#ifdef SOAP_MEM_DEBUG +SOAP_FMAC1 +void* +SOAP_FMAC2 +soap_track_malloc(struct soap *soap, const char *file, int line, size_t size) +{ + void *p = malloc(size); + if (soap) + { + size_t h = soap_hash_ptr(p); + struct soap_mlist *mp = (struct soap_mlist*)malloc(sizeof(struct soap_mlist)); + if (soap->fdebug[SOAP_INDEX_TEST]) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): malloc(%lu) = %p\n", file, line, (unsigned long)size, p)); + } + mp->next = soap->mht[h]; + mp->ptr = p; + mp->file = file; + mp->line = line; + mp->live = 1; + soap->mht[h] = mp; + } + return p; +} +#endif + +/******************************************************************************/ + +#ifdef SOAP_MEM_DEBUG +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_track_free(struct soap *soap, const char *file, int line, void *p) +{ + if (!soap) + { + free(p); + } + else + { + size_t h = soap_hash_ptr(p); + struct soap_mlist *mp; + for (mp = soap->mht[h]; mp; mp = mp->next) + if (mp->ptr == p) + break; + if (mp) + { + if (mp->live) + { + if (soap->fdebug[SOAP_INDEX_TEST]) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): free(%p)\n", file, line, p)); + } + free(p); + mp->live = 0; + } + else + { + fprintf(stderr, "%s(%d): free(%p) double free of pointer malloced at %s(%d)\n", file, line, p, mp->file, mp->line); + } + } + else + { + fprintf(stderr, "%s(%d): free(%p) pointer not malloced\n", file, line, p); + } + } +} +#endif + +/******************************************************************************/ + +#ifdef SOAP_MEM_DEBUG +static void +soap_track_unlink(struct soap *soap, const void *p) +{ + size_t h = soap_hash_ptr(p); + struct soap_mlist *mp; + for (mp = soap->mht[h]; mp; mp = mp->next) + if (mp->ptr == p) + break; + if (mp) + mp->live = 0; +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_dealloc(struct soap *soap, void *p) +{ + if (soap_check_state(soap)) + return; + if (p) + { + char **q; + for (q = (char**)(void*)&soap->alist; *q; q = *(char***)q) + { + if (*(unsigned short*)(char*)(*q - sizeof(unsigned short)) != (unsigned short)SOAP_CANARY) + { +#ifdef SOAP_MEM_DEBUG + fprintf(stderr, "Data corruption in dynamic allocation (see logs)\n"); +#endif + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Data corruption:\n")); + DBGHEX(TEST, *q - 200, 200); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "\n")); + soap->error = SOAP_MOE; + return; + } + if (p == (void*)(*q - *(size_t*)(*q + sizeof(void*)))) + { + *q = **(char***)q; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Freed data at %p\n", p)); + SOAP_FREE(soap, p); + return; + } + } + soap_delete(soap, p); + } + else + { + char *q; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Free all soap_malloc() data\n")); + while (soap->alist) + { + q = (char*)soap->alist; + if (*(unsigned short*)(char*)(q - sizeof(unsigned short)) != (unsigned short)SOAP_CANARY) + { +#ifdef SOAP_MEM_DEBUG + fprintf(stderr, "Data corruption in dynamic allocation (see logs)\n"); +#endif + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Data corruption:\n")); + DBGHEX(TEST, q - 200, 200); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "\n")); + soap->error = SOAP_MOE; + return; + } + soap->alist = *(void**)q; + q -= *(size_t*)(q + sizeof(void*)); + SOAP_FREE(soap, q); + } + /* assume these were deallocated: */ + soap->http_content = NULL; + soap->action = NULL; + soap->fault = NULL; + soap->header = NULL; + soap->bearer = NULL; + soap->userid = NULL; + soap->passwd = NULL; + soap->authrealm = NULL; +#ifdef WITH_NTLM + soap->ntlm_challenge = NULL; +#endif +#ifndef WITH_LEANER + soap_clr_mime(soap); +#endif + } +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_delete(struct soap *soap, void *p) +{ + struct soap_clist **cp; + if (soap_check_state(soap)) + return; + cp = &soap->clist; + if (p) + { + while (*cp) + { + if (p == (*cp)->ptr) + { + struct soap_clist *q = *cp; + *cp = q->next; + if (q->fdelete(soap, q)) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not dealloc data %p: deletion callback failed for object type=%d\n", q->ptr, q->type)); +#ifdef SOAP_MEM_DEBUG + fprintf(stderr, "new(object type=%d) = %p not freed: deletion callback failed\n", q->type, q->ptr); +#endif + } + SOAP_FREE(soap, q); + return; + } + cp = &(*cp)->next; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not dealloc data %p: address not in list\n", p)); + } + else + { + while (*cp) + { + struct soap_clist *q = *cp; + *cp = q->next; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Delete %p type=%d (cp=%p)\n", q->ptr, q->type, (void*)q)); + if (q->fdelete(soap, q)) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not dealloc data %p: deletion callback failed for object type=%d\n", q->ptr, q->type)); +#ifdef SOAP_MEM_DEBUG + fprintf(stderr, "new(object type=%d) = %p not freed: deletion callback failed\n", q->type, q->ptr); +#endif + } + SOAP_FREE(soap, q); + } + } + soap->fault = NULL; /* assume this was deallocated */ + soap->header = NULL; /* assume this was deallocated */ +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_delegate_deletion(struct soap *soap, struct soap *soap_to) +{ + struct soap_clist *cp; + char **q; +#ifdef SOAP_MEM_DEBUG + void *p; + struct soap_mlist **mp, *mq; + size_t h; +#endif + for (q = (char**)(void*)&soap->alist; *q; q = *(char***)q) + { + if (*(unsigned short*)(char*)(*q - sizeof(unsigned short)) != (unsigned short)SOAP_CANARY) + { +#ifdef SOAP_MEM_DEBUG + fprintf(stderr, "Data corruption in dynamic allocation (see logs)\n"); +#endif + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Data corruption:\n")); + DBGHEX(TEST, *q - 200, 200); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "\n")); + soap->error = SOAP_MOE; + return; + } +#ifdef SOAP_MEM_DEBUG + p = (void*)(*q - *(size_t*)(*q + sizeof(void*))); + h = soap_hash_ptr(p); + for (mp = &soap->mht[h]; *mp; mp = &(*mp)->next) + { + if ((*mp)->ptr == p) + { + mq = *mp; + *mp = mq->next; + mq->next = soap_to->mht[h]; + soap_to->mht[h] = mq; + break; + } + } +#endif + } + *q = (char*)soap_to->alist; + soap_to->alist = soap->alist; + soap->alist = NULL; +#ifdef SOAP_MEM_DEBUG + cp = soap->clist; + while (cp) + { + h = soap_hash_ptr(cp); + for (mp = &soap->mht[h]; *mp; mp = &(*mp)->next) + { + if ((*mp)->ptr == cp) + { + mq = *mp; + *mp = mq->next; + mq->next = soap_to->mht[h]; + soap_to->mht[h] = mq; + break; + } + } + cp = cp->next; + } +#endif + cp = soap_to->clist; + if (cp) + { + while (cp->next) + cp = cp->next; + cp->next = soap->clist; + } + else + { + soap_to->clist = soap->clist; + } + soap->clist = NULL; +} + +/******************************************************************************/ + +SOAP_FMAC1 +struct soap_clist * +SOAP_FMAC2 +soap_link(struct soap *soap, int t, int n, int (*fdelete)(struct soap*, struct soap_clist*)) +{ + struct soap_clist *cp = NULL; + if (soap) + { + if (n != SOAP_NO_LINK_TO_DELETE) + { + cp = (struct soap_clist*)SOAP_MALLOC(soap, sizeof(struct soap_clist)); + if (!cp) + { + soap->error = SOAP_EOM; + } + else + { + cp->next = soap->clist; + cp->type = t; + cp->size = n; + cp->ptr = NULL; + cp->fdelete = fdelete; + soap->clist = cp; + } + } + soap->alloced = t; + } + return cp; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_unlink(struct soap *soap, const void *p) +{ + char **q; + struct soap_clist **cp; + if (soap && p) + { + for (q = (char**)(void*)&soap->alist; *q; q = *(char***)q) + { + if (p == (void*)(*q - *(size_t*)(*q + sizeof(void*)))) + { + *q = **(char***)q; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unlinked data %p\n", p)); +#ifdef SOAP_MEM_DEBUG + soap_track_unlink(soap, p); +#endif + return SOAP_OK; /* found and removed from dealloc chain */ + } + } + for (cp = &soap->clist; *cp; cp = &(*cp)->next) + { + if (p == (*cp)->ptr) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unlinked class instance %p\n", p)); + q = (char**)*cp; + *cp = (*cp)->next; + SOAP_FREE(soap, q); + return SOAP_OK; /* found and removed from dealloc chain */ + } + } + } + return SOAP_ERR; +} + +/******************************************************************************/ + +#ifndef WITH_NOIDREF +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_lookup_type(struct soap *soap, const char *id) +{ + struct soap_ilist *ip; + if (id && *id) + { + ip = soap_lookup(soap, id); + if (ip) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Lookup id='%s' type=%d\n", id, ip->type)); + return ip->type; + } + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "lookup type id='%s' NOT FOUND! Need to get it from xsi:type\n", id)); + return 0; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIDREF +SOAP_FMAC1 +short +SOAP_FMAC2 +soap_begin_shaky(struct soap *soap) +{ + short f = soap->shaky; + soap->shaky = 1; + return f; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIDREF +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_end_shaky(struct soap *soap, short f) +{ + soap->shaky = f; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIDREF +static int +soap_is_shaky(struct soap *soap, void *p) +{ + (void)p; + if (!soap->blist && !soap->shaky) + return 0; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Shaky %p\n", p)); + return 1; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIDREF +SOAP_FMAC1 +void* +SOAP_FMAC2 +soap_id_lookup(struct soap *soap, const char *id, void **p, int t, size_t n, unsigned int k, int (*fbase)(int, int)) +{ + struct soap_ilist *ip; + if (!p || !id || !*id) + return p; + ip = soap_lookup(soap, id); /* lookup pointer to hash table entry for string id */ + if (!ip) + { + ip = soap_enter(soap, id, t, n); /* new hash table entry for string id */ + if (!ip) + return NULL; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Forwarding first href='%s' type=%d location=%p (%u bytes) level=%u\n", id, t, (void*)p, (unsigned int)n, k)); + *p = NULL; + if (k) + { + int i; + if (k > SOAP_MAXPTRS) + return NULL; + ip->spine = (void**)soap_malloc(soap, SOAP_MAXPTRS * sizeof(void*)); + if (!ip->spine) + return NULL; + ip->spine[0] = NULL; + for (i = 1; i < SOAP_MAXPTRS; i++) + ip->spine[i] = &ip->spine[i - 1]; + *p = &ip->spine[k - 1]; + } + else + { + ip->link = p; + ip->shaky = soap_is_shaky(soap, (void*)p); + } + } + else if (ip->type != t && (!fbase || !fbase(ip->type, t)) && (!fbase || !fbase(t, ip->type) || soap_type_punned(soap, ip))) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Lookup type incompatibility: ref='%s' id-type=%d ref-type=%d\n", id, ip->type, t)); + (void)soap_id_nullify(soap, id); + return NULL; + } + else if (k == 0 && ip->ptr && !ip->shaky) /* when block lists are in use, ip->ptr will change */ + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Resolved href='%s' type=%d location=%p (%u bytes) level=%u\n", id, t, ip->ptr, (unsigned int)n, k)); + *p = ip->ptr; + } + else + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Forwarded href='%s' type=%d location=%p (%u bytes) level=%u\n", id, t, (void*)p, (unsigned int)n, k)); + if (fbase && fbase(t, ip->type) && !soap_type_punned(soap, ip)) + { + ip->type = t; + ip->size = n; + } + *p = NULL; + if (k) + { + if (!ip->spine) + { + int i; + if (k > SOAP_MAXPTRS) + return NULL; + ip->spine = (void**)soap_malloc(soap, SOAP_MAXPTRS * sizeof(void*)); + if (!ip->spine) + return NULL; + ip->spine[0] = NULL; + for (i = 1; i < SOAP_MAXPTRS; i++) + ip->spine[i] = &ip->spine[i - 1]; + } + *p = &ip->spine[k - 1]; + if (ip->ptr && !ip->shaky) + ip->spine[0] = ip->ptr; + } + else + { + void *q = ip->link; + ip->link = p; + ip->shaky = soap_is_shaky(soap, (void*)p); + *p = q; + } + } + return p; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIDREF +SOAP_FMAC1 +void* +SOAP_FMAC2 +soap_id_forward(struct soap *soap, const char *href, void *p, size_t i, int t, int tt, size_t n, unsigned int k, void (*finsert)(struct soap*, int, int, void*, size_t, const void*, void**), int (*fbase)(int, int)) +{ + struct soap_ilist *ip; + if (!p || !href || !*href) + return p; + ip = soap_lookup(soap, href); /* lookup pointer to hash table entry for string id */ + if (!ip) + { + ip = soap_enter(soap, href, t, n); /* new hash table entry for string id */ + if (!ip) + return NULL; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "New entry href='%s' type=%d size=%lu level=%d location=%p\n", href, t, (unsigned long)n, k, p)); + } + else if ((ip->type != t || ip->size != n) && k == 0) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Forward type incompatibility id='%s' expect type=%d size=%lu level=%u got type=%d size=%lu\n", href, ip->type, (unsigned long)ip->size, k, t, (unsigned long)n)); + (void)soap_id_nullify(soap, href); + return NULL; + } + if (finsert || n < sizeof(void*)) + { + struct soap_flist *fp = (struct soap_flist*)SOAP_MALLOC(soap, sizeof(struct soap_flist)); + if (!fp) + { + soap->error = SOAP_EOM; + return NULL; + } + if (fbase && fbase(t, ip->type) && !soap_type_punned(soap, ip)) + { + ip->type = t; + ip->size = n; + } + if ((ip->type != t || ip->size != n) && (!fbase || !fbase(ip->type, t))) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Forward type incompatibility id='%s' expect type=%d size=%lu level=%u got type=%d size=%lu\n", href, ip->type, (unsigned long)ip->size, k, t, (unsigned long)n)); + SOAP_FREE(soap, fp); + (void)soap_id_nullify(soap, href); + return NULL; + } + fp->next = ip->flist; + fp->type = tt; + fp->ptr = p; + fp->level = k; + fp->index = i; + fp->finsert = finsert; + ip->flist = fp; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Forwarding type=%d (target type=%d) size=%lu location=%p level=%u index=%lu href='%s'\n", t, tt, (unsigned long)n, p, k, (unsigned long)i, href)); + } + else + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Forwarding copying address %p for type=%d href='%s'\n", p, t, href)); + *(void**)p = ip->copy; + ip->copy = p; + } + ip->shaky = soap_is_shaky(soap, p); + return p; +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +void* +SOAP_FMAC2 +soap_id_enter(struct soap *soap, const char *id, void *p, int t, size_t n, const char *type, const char *arrayType, void *(*finstantiate)(struct soap*, int, const char*, const char*, size_t*), int (*fbase)(int, int)) +{ +#ifndef WITH_NOIDREF + struct soap_ilist *ip; +#endif + (void)id; (void)fbase; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Enter id='%s' type=%d location=%p size=%lu\n", id, t, p, (unsigned long)n)); + soap->alloced = 0; + if (!p) + { + if (finstantiate) + { + p = finstantiate(soap, t, type, arrayType, &n); /* soap->alloced is set in soap_link() */ + t = soap->alloced; + } + else + { + p = soap_malloc(soap, n); + soap->alloced = t; + } + } +#ifndef WITH_NOIDREF + if (!id || !*id) +#endif + return p; +#ifndef WITH_NOIDREF + ip = soap_lookup(soap, id); /* lookup pointer to hash table entry for string id */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Lookup entry id='%s' for location=%p type=%d\n", id, p, t)); + if (!ip) + { + ip = soap_enter(soap, id, t, n); /* new hash table entry for string id */ + if (!ip) + return NULL; + ip->ptr = p; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "New entry id='%s' type=%d size=%lu location=%p\n", id, t, (unsigned long)n, p)); + if (!soap->alloced) + ip->shaky = soap_is_shaky(soap, p); + } + else if (ip->ptr) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Multiply defined id='%s'\n", id)); + soap_strcpy(soap->id, sizeof(soap->id), id); + soap->error = SOAP_DUPLICATE_ID; + return NULL; + } + else if ((ip->type != t && (!fbase || !fbase(t, ip->type) || soap_type_punned(soap, ip))) + || (ip->type == t && ip->size != n && soap_type_punned(soap, ip))) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Enter type incompatibility id='%s' expect type=%d size=%lu got type=%d size=%lu\n", id, ip->type, (unsigned long)ip->size, t, (unsigned long)n)); + (void)soap_id_nullify(soap, id); + return NULL; + } + else + { + ip->type = t; + ip->size = n; + ip->ptr = p; + if (!soap->alloced) + ip->shaky = soap_is_shaky(soap, p); + if (soap->alloced || !ip->shaky) + { + void **q; /* ptr will not change later, so resolve links now */ + if (ip->spine) + ip->spine[0] = p; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Traversing link chain to resolve id='%s' type=%d\n", ip->id, ip->type)); + q = (void**)ip->link; + while (q) + { + void *r = *q; + *q = p; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "... link %p -> %p\n", (void*)q, p)); + q = (void**)r; + } + ip->link = NULL; + } + } + return ip->ptr; +#endif +} + +/******************************************************************************/ + +SOAP_FMAC1 +void** +SOAP_FMAC2 +soap_id_smart(struct soap *soap, const char *id, int t, size_t n) +{ + (void)soap; (void)id; (void)t; (void)n; +#ifndef WITH_NOIDREF + if (id && *id) + { + struct soap_ilist *ip = soap_lookup(soap, id); /* lookup pointer to hash table entry for string id */ + if (!ip) + { + ip = soap_enter(soap, id, t, n); /* new hash table entry for string id */ + if (!ip) + return NULL; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "New smart shared pointer entry id='%s' type=%d size=%lu smart=%p\n", id, t, (unsigned long)n, ip->smart)); + return &ip->smart; + } +#endif + return NULL; +} + +/******************************************************************************/ + +#ifndef WITH_NOIDREF +static int +soap_type_punned(struct soap *soap, const struct soap_ilist *ip) +{ + const struct soap_flist *fp; + (void)soap; + if (ip->ptr || ip->copy) + return 1; + for (fp = ip->flist; fp; fp = fp->next) + if (fp->level == 0) + return 1; + return 0; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIDREF +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_id_nullify(struct soap *soap, const char *id) +{ + int i; + for (i = 0; i < SOAP_IDHASH; i++) + { + struct soap_ilist *ip; + for (ip = soap->iht[i]; ip; ip = ip->next) + { + void *p, *q; + for (p = ip->link; p; p = q) + { + q = *(void**)p; + *(void**)p = NULL; + } + ip->link = NULL; + } + } + soap_strcpy(soap->id, sizeof(soap->id), id); + return soap->error = SOAP_HREF; +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_end_send(struct soap *soap) +{ +#ifndef WITH_LEANER + int err; + err = soap_end_attachments(soap); + if (soap->dime.list) + { + /* SOAP body referenced attachments must appear first */ + soap->dime.last->next = soap->dime.first; + soap->dime.first = soap->dime.list->next; + soap->dime.list->next = NULL; + soap->dime.last = soap->dime.list; + } + if (!err) + err = soap_putdime(soap); + if (!err) + err = soap_putmime(soap); + soap->mime.list = NULL; + soap->mime.first = NULL; + soap->mime.last = NULL; + soap->dime.list = NULL; + soap->dime.first = NULL; + soap->dime.last = NULL; + if (err) + return err; +#endif + return soap_end_send_flush(soap); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_end_send_flush(struct soap *soap) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "End send mode=0x%x\n", soap->mode)); + if ((soap->mode & SOAP_IO)) /* need to flush the remaining data in buffer */ + { + if (soap_flush(soap)) +#ifdef WITH_ZLIB + { + if ((soap->mode & SOAP_ENC_ZLIB) && soap->zlib_state == SOAP_ZLIB_DEFLATE) + { + soap->zlib_state = SOAP_ZLIB_NONE; + deflateEnd(soap->d_stream); + } + return soap->error; + } +#else + return soap->error; +#endif +#ifdef WITH_ZLIB + if ((soap->mode & SOAP_ENC_ZLIB) && soap->d_stream) + { + int r; + soap->d_stream->avail_in = 0; + do + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Deflating remainder\n")); + r = deflate(soap->d_stream, Z_FINISH); + if (soap->d_stream->avail_out != sizeof(soap->buf)) + { + if (soap_flush_raw(soap, soap->z_buf, sizeof(soap->buf) - soap->d_stream->avail_out)) + { + soap->zlib_state = SOAP_ZLIB_NONE; + deflateEnd(soap->d_stream); + return soap->error; + } + soap->d_stream->next_out = (Byte*)soap->z_buf; + soap->d_stream->avail_out = sizeof(soap->buf); + } + } while (r == Z_OK); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Deflated total %lu->%lu bytes\n", soap->d_stream->total_in, soap->d_stream->total_out)); + soap->z_ratio_out = (float)soap->d_stream->total_out / (float)soap->d_stream->total_in; + soap->mode &= ~SOAP_ENC_ZLIB; + soap->zlib_state = SOAP_ZLIB_NONE; + if (deflateEnd(soap->d_stream) != Z_OK || r != Z_STREAM_END) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unable to end deflate: %s\n", soap->d_stream->msg ? soap->d_stream->msg : SOAP_STR_EOS)); + return soap->error = SOAP_ZLIB_ERROR; + } +#ifdef WITH_GZIP + if (soap->zlib_out != SOAP_ZLIB_DEFLATE) + { + soap->z_buf[0] = soap->z_crc & 0xFF; + soap->z_buf[1] = (soap->z_crc >> 8) & 0xFF; + soap->z_buf[2] = (soap->z_crc >> 16) & 0xFF; + soap->z_buf[3] = (soap->z_crc >> 24) & 0xFF; + soap->z_buf[4] = soap->d_stream->total_in & 0xFF; + soap->z_buf[5] = (soap->d_stream->total_in >> 8) & 0xFF; + soap->z_buf[6] = (soap->d_stream->total_in >> 16) & 0xFF; + soap->z_buf[7] = (soap->d_stream->total_in >> 24) & 0xFF; + if (soap_flush_raw(soap, soap->z_buf, 8)) + return soap->error; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "gzip crc32=%lu\n", (unsigned long)soap->z_crc)); + } +#endif + } +#endif + if ((soap->mode & SOAP_IO) == SOAP_IO_STORE) + { +#if !defined(__cplusplus) || defined(WITH_COMPAT) + if (soap->os) + { + char *b = (char*)soap_push_block(soap, NULL, 1); + if (b) + { + *b = '\0'; + *soap->os = soap_save_block(soap, NULL, NULL, 0); + } + } + else +#endif + { + char *p; +#ifndef WITH_NOHTTP + if (!(soap->mode & SOAP_ENC_PLAIN)) + { + soap->mode--; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Sending buffered message of length %u\n", (unsigned int)soap->blist->size)); + if (soap->status >= SOAP_POST) + soap->error = soap->fpost(soap, soap->endpoint, soap->host, soap->port, soap->path, soap->action, soap->blist->size); + else if (soap->status != SOAP_STOP) + soap->error = soap->fresponse(soap, soap->status, soap->blist->size); + if (soap->error || soap_flush(soap)) + return soap->error; + soap->mode++; + } +#endif + for (p = soap_first_block(soap, NULL); p; p = soap_next_block(soap, NULL)) + { + DBGMSG(SENT, p, soap_block_size(soap, NULL)); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Send %u bytes to socket=%d/fd=%d\n", (unsigned int)soap_block_size(soap, NULL), (int)soap->socket, soap->sendfd)); + soap->error = soap->fsend(soap, p, soap_block_size(soap, NULL)); + if (soap->error) + { + soap_end_block(soap, NULL); + return soap->error; + } + } + soap_end_block(soap, NULL); + } +#ifndef WITH_LEANER + if (soap->fpreparefinalsend && (soap->error = soap->fpreparefinalsend(soap)) != SOAP_OK) + return soap->error; +#endif + if ((soap->omode & SOAP_IO) == SOAP_IO_STORE && (soap->imode & SOAP_IO) != SOAP_IO_STORE) + soap->omode = (soap->omode & ~SOAP_IO) | (soap->imode & SOAP_IO); + } +#ifndef WITH_LEANER + else if ((soap->mode & SOAP_IO) == SOAP_IO_CHUNK) + { + DBGMSG(SENT, "\r\n0\r\n\r\n", 7); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Send 7 bytes to socket=%d/fd=%d\n", (int)soap->socket, soap->sendfd)); + soap->error = soap->fsend(soap, "\r\n0\r\n\r\n", 7); + if (soap->error) + return soap->error; + } +#endif + } +#ifdef WITH_TCPFIN +#if defined(WITH_OPENSSL) || defined(WITH_SYSTEMSSL) + if (!soap->ssl) +#endif + if (soap_valid_socket(soap->socket) && !soap->keep_alive && !(soap->omode & SOAP_IO_UDP)) + soap->fshutdownsocket(soap, soap->socket, SOAP_SHUT_WR); /* Send TCP FIN */ +#endif +#if defined(__cplusplus) && !defined(WITH_COMPAT) + if (soap->os) + soap->os->flush(); +#endif + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "End of send phase\n")); + soap->omode &= ~SOAP_SEC_WSUID; + soap->count = 0; + soap->part = SOAP_END; + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_end_recv(struct soap *soap) +{ + soap->part = SOAP_END; +#ifndef WITH_LEAN + soap->wsuid = NULL; /* reset before next send */ + soap->c14nexclude = NULL; /* reset before next send */ + soap->c14ninclude = NULL; /* reset before next send */ +#endif +#ifndef WITH_LEANER + soap->ffilterrecv = NULL; + if ((soap->mode & SOAP_ENC_DIME) && soap_getdime(soap)) + { + soap->dime.first = NULL; + soap->dime.last = NULL; + return soap->error; + } + soap->dime.list = soap->dime.first; + soap->dime.first = NULL; + soap->dime.last = NULL; + /* Check if MIME attachments and mime-post-check flag is set, if so call soap_resolve() and return */ + if ((soap->mode & SOAP_ENC_MIME)) + { + if ((soap->mode & SOAP_MIME_POSTCHECK)) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Post checking MIME attachments\n")); + if (!soap->keep_alive) + soap->keep_alive = -2; /* special case to keep alive */ +#ifndef WITH_NOIDREF + soap_resolve(soap); +#endif + return SOAP_OK; + } + if (soap_getmime(soap)) + return soap->error; + } + soap->mime.list = soap->mime.first; + soap->mime.first = NULL; + soap->mime.last = NULL; + soap->mime.boundary = NULL; + if (soap->xlist) + { + struct soap_multipart *content; + for (content = soap->mime.list; content; content = content->next) + soap_resolve_attachment(soap, content); + } +#endif + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "End of receive message ok\n")); +#ifdef WITH_ZLIB + if ((soap->mode & SOAP_ENC_ZLIB) && soap->d_stream) + { + /* Make sure end of compressed content is reached */ + while (soap->d_stream->next_out != Z_NULL) + if ((int)soap_get1(soap) == EOF) + break; + soap->mode &= ~SOAP_ENC_ZLIB; + (void)soap_memcpy((void*)soap->buf, sizeof(soap->buf), (const void*)soap->z_buf, sizeof(soap->buf)); + soap->bufidx = (char*)soap->d_stream->next_in - soap->z_buf; + soap->buflen = soap->z_buflen; + soap->zlib_state = SOAP_ZLIB_NONE; + if (inflateEnd(soap->d_stream) != Z_OK) + return soap->error = SOAP_ZLIB_ERROR; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Inflate end ok\n")); +#ifdef WITH_GZIP + if (soap->zlib_in == SOAP_ZLIB_GZIP) + { + soap_wchar c; + short i; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Inflate gzip crc check\n")); + for (i = 0; i < 8; i++) + { + if ((int)(c = soap_get1(soap)) == EOF) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Gzip error: unable to read crc value\n")); + return soap->error = SOAP_ZLIB_ERROR; + } + soap->z_buf[i] = (char)c; + } + if (soap->z_crc != ((uLong)(unsigned char)soap->z_buf[0] | ((uLong)(unsigned char)soap->z_buf[1] << 8) | ((uLong)(unsigned char)soap->z_buf[2] << 16) | ((uLong)(unsigned char)soap->z_buf[3] << 24))) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Gzip inflate error: crc check failed, message corrupted? (crc32=%lu)\n", (unsigned long)soap->z_crc)); + return soap->error = SOAP_ZLIB_ERROR; + } + if (soap->d_stream->total_out != ((uLong)(unsigned char)soap->z_buf[4] | ((uLong)(unsigned char)soap->z_buf[5] << 8) | ((uLong)(unsigned char)soap->z_buf[6] << 16) | ((uLong)(unsigned char)soap->z_buf[7] << 24))) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Gzip inflate error: incorrect message length\n")); + return soap->error = SOAP_ZLIB_ERROR; + } + } + soap->zlib_in = SOAP_ZLIB_NONE; +#endif + } +#endif + if ((soap->mode & SOAP_IO) == SOAP_IO_CHUNK) + while ((int)soap->ahead != EOF && !soap_recv_raw(soap)) + continue; +#ifndef WITH_NOIDREF + if (soap_resolve(soap)) + return soap->error; +#endif +#ifndef WITH_LEANER + if (soap->xlist) + { + if ((soap->mode & SOAP_ENC_MTOM)) + return soap->error = SOAP_MIME_HREF; + return soap->error = SOAP_DIME_HREF; + } +#endif + soap_free_ns(soap); +#ifndef WITH_LEANER + if (soap->fpreparefinalrecv) + return soap->error = soap->fpreparefinalrecv(soap); +#endif + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_free_temp(struct soap *soap) +{ + struct soap_attribute *tp, *tq; + struct Namespace *ns; + soap_free_ns(soap); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Free any remaining temp blocks\n")); + while (soap->blist) + soap_end_block(soap, NULL); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Free attribute storage\n")); + for (tp = soap->attributes; tp; tp = tq) + { + tq = tp->next; + if (tp->value) + SOAP_FREE(soap, tp->value); + SOAP_FREE(soap, tp); + } + soap->attributes = NULL; +#ifdef WITH_FAST + if (soap->labbuf) + SOAP_FREE(soap, soap->labbuf); + soap->labbuf = NULL; + soap->lablen = 0; + soap->labidx = 0; +#endif + ns = soap->local_namespaces; + if (ns) + { + for (; ns->id; ns++) + { + if (ns->out) + { + SOAP_FREE(soap, ns->out); + ns->out = NULL; + } + } + SOAP_FREE(soap, soap->local_namespaces); + soap->local_namespaces = NULL; + } +#ifndef WITH_LEANER + while (soap->xlist) + { + struct soap_xlist *xp = soap->xlist->next; + SOAP_FREE(soap, soap->xlist); + soap->xlist = xp; + } +#endif +#ifndef WITH_NOIDREF + soap_free_iht(soap); +#endif + soap_free_pht(soap); +} + +/******************************************************************************/ + +static void +soap_free_ns(struct soap *soap) +{ + struct soap_nlist *np, *nq; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Free namespace stack\n")); + for (np = soap->nlist; np; np = nq) + { + nq = np->next; + SOAP_FREE(soap, np); + } + soap->nlist = NULL; +} + +/******************************************************************************/ + +#ifdef SOAP_DEBUG +static void +soap_init_logs(struct soap *soap) +{ + int i; + for (i = 0; i < SOAP_MAXLOGS; i++) + { + soap->logfile[i] = NULL; + soap->fdebug[i] = NULL; + } +} +#endif + +/******************************************************************************/ + +#ifdef SOAP_DEBUG +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_open_logfile(struct soap *soap, int i) +{ + if (soap->logfile[i]) + soap->fdebug[i] = fopen(soap->logfile[i], i < 2 ? "ab" : "a"); +} +#endif + +/******************************************************************************/ + +#ifdef SOAP_DEBUG +static void +soap_close_logfile(struct soap *soap, int i) +{ + if (soap->fdebug[i]) + { + fclose(soap->fdebug[i]); + soap->fdebug[i] = NULL; + } +} +#endif + +/******************************************************************************/ + +#ifdef SOAP_DEBUG +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_close_logfiles(struct soap *soap) +{ + int i; + for (i = 0; i < SOAP_MAXLOGS; i++) + soap_close_logfile(soap, i); +} +#endif + +/******************************************************************************/ + +#ifdef SOAP_DEBUG +static void +soap_set_logfile(struct soap *soap, int i, const char *logfile) +{ + const char *s; + char *t = NULL; + soap_close_logfile(soap, i); + s = soap->logfile[i]; + if (s) + SOAP_FREE_UNMANAGED(s); + if (logfile) + { + size_t l = strlen(logfile) + 1; + t = (char*)SOAP_MALLOC_UNMANAGED(l); + if (t) + (void)soap_memcpy((void*)t, l, (const void*)logfile, l); + } + soap->logfile[i] = t; +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_set_recv_logfile(struct soap *soap, const char *logfile) +{ + (void)soap; (void)logfile; +#ifdef SOAP_DEBUG + soap_set_logfile(soap, SOAP_INDEX_RECV, logfile); +#endif +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_set_sent_logfile(struct soap *soap, const char *logfile) +{ + (void)soap; (void)logfile; +#ifdef SOAP_DEBUG + soap_set_logfile(soap, SOAP_INDEX_SENT, logfile); +#endif +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_set_test_logfile(struct soap *soap, const char *logfile) +{ + (void)soap; (void)logfile; +#ifdef SOAP_DEBUG + soap_set_logfile(soap, SOAP_INDEX_TEST, logfile); +#endif +} + +/******************************************************************************/ + +SOAP_FMAC1 +struct soap* +SOAP_FMAC2 +soap_copy(const struct soap *soap) +{ + struct soap *copy = soap_versioning(soap_new)(SOAP_IO_DEFAULT, SOAP_IO_DEFAULT); + soap_done(copy); + if (soap_copy_context(copy, soap) != NULL) + return copy; + soap_free(copy); + return NULL; +} + +/******************************************************************************/ + +SOAP_FMAC1 +struct soap* +SOAP_FMAC2 +soap_copy_context(struct soap *copy, const struct soap *soap) +{ + if (copy == soap) + return copy; + if (soap_check_state(soap)) + return NULL; + if (copy) + { + struct soap_plugin *p = NULL; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying context\n")); + (void)soap_memcpy((void*)copy, sizeof(struct soap), (const void*)soap, sizeof(struct soap)); + copy->state = SOAP_COPY; + copy->error = SOAP_OK; + copy->bearer = NULL; + copy->userid = NULL; + copy->passwd = NULL; +#ifdef WITH_NTLM + copy->ntlm_challenge = NULL; +#endif + copy->nlist = NULL; + copy->blist = NULL; + copy->clist = NULL; + copy->alist = NULL; + copy->attributes = NULL; + copy->labbuf = NULL; + copy->lablen = 0; + copy->labidx = 0; +#ifdef SOAP_MEM_DEBUG + soap_init_mht(copy); +#endif +#ifdef SOAP_DEBUG + soap_init_logs(copy); + soap_set_test_logfile(copy, soap->logfile[SOAP_INDEX_TEST]); + soap_set_sent_logfile(copy, soap->logfile[SOAP_INDEX_SENT]); + soap_set_recv_logfile(copy, soap->logfile[SOAP_INDEX_RECV]); +#endif + copy->namespaces = soap->local_namespaces; + copy->local_namespaces = NULL; + soap_set_local_namespaces(copy); /* copy content of soap->local_namespaces */ + copy->namespaces = soap->namespaces; /* point to shared read-only namespaces table */ + copy->c_locale = NULL; +#ifdef WITH_OPENSSL + copy->bio = NULL; + copy->ssl = NULL; + copy->session = NULL; + copy->session_host[0] = '\0'; + copy->session_port = 443; +#endif +#ifdef WITH_GNUTLS + copy->session = NULL; +#endif +#ifdef WITH_ZLIB + copy->d_stream = NULL; + copy->z_buf = NULL; +#endif +#ifndef WITH_NOIDREF + soap_init_iht(copy); +#endif + soap_init_pht(copy); + copy->header = NULL; + copy->fault = NULL; + copy->action = NULL; +#ifndef WITH_LEAN +#ifdef WITH_COOKIES + copy->cookies = soap_copy_cookies(copy, soap); +#else + copy->cookies = NULL; +#endif +#endif + copy->plugins = NULL; + for (p = soap->plugins; p; p = p->next) + { + struct soap_plugin *q = (struct soap_plugin*)SOAP_MALLOC(copy, sizeof(struct soap_plugin)); + if (!q) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not allocate plugin '%s'\n", p->id)); + soap_end(copy); + soap_done(copy); + return NULL; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying plugin '%s'\n", p->id)); + *q = *p; + if (p->fcopy && (copy->error = p->fcopy(copy, q, p)) != SOAP_OK) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not copy plugin '%s' error = %d\n", p->id, copy->error)); + SOAP_FREE(copy, q); + soap_end(copy); + soap_done(copy); + return NULL; + } + q->next = copy->plugins; + copy->plugins = q; + } + } +#ifdef WITH_SELF_PIPE + pipe(copy->pipe_fd); + SOAP_SOCKNONBLOCK(copy->pipe_fd[0]) + SOAP_SOCKNONBLOCK(copy->pipe_fd[1]) +#endif + return copy; +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_copy_stream(struct soap *copy, struct soap *soap) +{ + struct soap_attribute *tp = NULL, *tq; + if (copy == soap) + return; + copy->header = soap->header; + copy->mode = soap->mode; + copy->imode = soap->imode; + copy->omode = soap->omode; + copy->socket = soap->socket; + copy->sendsk = soap->sendsk; + copy->recvsk = soap->recvsk; + copy->transfer_timeout = soap->transfer_timeout; + copy->recv_maxlength = soap->recv_maxlength; + copy->recv_timeout = soap->recv_timeout; + copy->send_timeout = soap->send_timeout; + copy->connect_timeout = soap->connect_timeout; + copy->accept_timeout = soap->accept_timeout; + copy->socket_flags = soap->socket_flags; + copy->connect_flags = soap->connect_flags; + copy->connect_retry = soap->connect_retry; + copy->bind_flags = soap->bind_flags; + copy->bind_inet6 = soap->bind_inet6; + copy->bind_v6only = soap->bind_v6only; + copy->accept_flags = soap->accept_flags; + copy->sndbuf = soap->sndbuf; + copy->rcvbuf = soap->rcvbuf; + copy->linger_time = soap->linger_time; + copy->maxlevel = soap->maxlevel; + copy->maxlength = soap->maxlength; + copy->maxoccurs = soap->maxoccurs; + copy->os = soap->os; + copy->is = soap->is; + copy->sendfd = soap->sendfd; + copy->recvfd = soap->recvfd; + copy->bufidx = soap->bufidx; + copy->buflen = soap->buflen; + copy->ahead = soap->ahead; + copy->cdata = soap->cdata; + copy->chunksize = soap->chunksize; + copy->chunkbuflen = soap->chunkbuflen; + copy->keep_alive = soap->keep_alive; + copy->tcp_keep_alive = soap->tcp_keep_alive; + copy->tcp_keep_idle = soap->tcp_keep_idle; + copy->tcp_keep_intvl = soap->tcp_keep_intvl; + copy->tcp_keep_cnt = soap->tcp_keep_cnt; + copy->max_keep_alive = soap->max_keep_alive; +#ifndef WITH_NOIO + copy->peer = soap->peer; + copy->peerlen = soap->peerlen; + copy->ip = soap->ip; + copy->ip6[0] = soap->ip6[0]; + copy->ip6[1] = soap->ip6[1]; + copy->ip6[2] = soap->ip6[2]; + copy->ip6[3] = soap->ip6[3]; + copy->port = soap->port; + (void)soap_memcpy((void*)copy->host, sizeof(copy->host), (const void*)soap->host, sizeof(soap->host)); + (void)soap_memcpy((void*)copy->endpoint, sizeof(copy->endpoint), (const void*)soap->endpoint, sizeof(soap->endpoint)); +#endif +#ifdef WITH_OPENSSL + copy->bio = soap->bio; + copy->ctx = soap->ctx; + copy->ssl = soap->ssl; +#endif +#ifdef WITH_GNUTLS + copy->session = soap->session; +#endif +#ifdef WITH_SYSTEMSSL + copy->ctx = soap->ctx; + copy->ssl = soap->ssl; +#endif +#ifdef WITH_ZLIB + copy->zlib_state = soap->zlib_state; + copy->zlib_in = soap->zlib_in; + copy->zlib_out = soap->zlib_out; + if (soap->d_stream && soap->zlib_state != SOAP_ZLIB_NONE) + { + if (!copy->d_stream) + copy->d_stream = (z_stream*)SOAP_MALLOC(copy, sizeof(z_stream)); + if (copy->d_stream) + (void)soap_memcpy((void*)copy->d_stream, sizeof(z_stream), (const void*)soap->d_stream, sizeof(z_stream)); + } + copy->z_crc = soap->z_crc; + copy->z_ratio_in = soap->z_ratio_in; + copy->z_ratio_out = soap->z_ratio_out; + copy->z_buf = NULL; + copy->z_buflen = soap->z_buflen; + copy->z_level = soap->z_level; + if (soap->z_buf && soap->zlib_state != SOAP_ZLIB_NONE) + { + copy->z_buf = (char*)SOAP_MALLOC(copy, sizeof(soap->buf)); + if (copy->z_buf) + (void)soap_memcpy((void*)copy->z_buf, sizeof(soap->buf), (const void*)soap->z_buf, sizeof(soap->buf)); + } + copy->z_dict = soap->z_dict; + copy->z_dict_len = soap->z_dict_len; +#endif + (void)soap_memcpy((void*)copy->buf, sizeof(copy->buf), (const void*)soap->buf, sizeof(soap->buf)); + /* copy XML parser state */ + soap_free_ns(copy); + soap_set_local_namespaces(copy); + copy->version = soap->version; + if (soap->nlist && soap->local_namespaces) + { + struct soap_nlist *np = NULL, *nq; + /* copy reversed nlist */ + for (nq = soap->nlist; nq; nq = nq->next) + { + struct soap_nlist *nr = np; + size_t n = sizeof(struct soap_nlist) + strlen(nq->id); + np = (struct soap_nlist*)SOAP_MALLOC(copy, n); + if (!np) + { + np = nr; + break; + } + (void)soap_memcpy((void*)np, n, (const void*)nq, n); + np->next = nr; + } + while (np) + { + const char *s = np->ns; + copy->level = np->level; /* preserve element nesting level */ + if (!s && np->index >= 0) + { + s = soap->local_namespaces[np->index].out; + if (!s) + s = soap->local_namespaces[np->index].ns; + } + if (s) + (void)soap_push_namespace(copy, np->id, s); + nq = np; + np = np->next; + SOAP_FREE(copy, nq); + } + } + (void)soap_memcpy((void*)copy->tag, sizeof(copy->tag), (const void*)soap->tag, sizeof(soap->tag)); + (void)soap_memcpy((void*)copy->id, sizeof(copy->id), (const void*)soap->id, sizeof(soap->id)); + (void)soap_memcpy((void*)copy->href, sizeof(copy->href), (const void*)soap->href, sizeof(soap->href)); + (void)soap_memcpy((void*)copy->type, sizeof(copy->type), (const void*)soap->type, sizeof(soap->type)); + copy->other = soap->other; + copy->root = soap->root; + copy->null = soap->null; + copy->body = soap->body; + copy->part = soap->part; + copy->mustUnderstand = soap->mustUnderstand; + copy->level = soap->level; + copy->peeked = soap->peeked; + /* copy attributes */ + for (tq = soap->attributes; tq; tq = tq->next) + { + struct soap_attribute *tr = tp; + size_t n = sizeof(struct soap_attribute) + strlen(tq->name); + tp = (struct soap_attribute*)SOAP_MALLOC(copy, n); + (void)soap_memcpy((void*)tp, n, (const void*)tq, n); + if (tp->size) + { + tp->value = (char*)SOAP_MALLOC(copy, tp->size); + if (tp->value) + (void)soap_memcpy((void*)tp->value, tp->size, (const void*)tq->value, tp->size); + } + tp->ns = NULL; + tp->next = tr; + } + copy->attributes = tp; +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_free_stream(struct soap *soap) +{ + soap->socket = SOAP_INVALID_SOCKET; + soap->sendsk = SOAP_INVALID_SOCKET; + soap->recvsk = SOAP_INVALID_SOCKET; +#ifdef WITH_OPENSSL + soap->bio = NULL; + soap->ctx = NULL; + soap->ssl = NULL; +#endif +#ifdef WITH_GNUTLS + soap->xcred = NULL; + soap->acred = NULL; + soap->cache = NULL; + soap->session = NULL; + soap->dh_params = NULL; + soap->rsa_params = NULL; +#endif +#ifdef WITH_SYSTEMSSL + soap->ctx = (gsk_handle)NULL; + soap->ssl = (gsk_handle)NULL; +#endif +#ifdef WITH_ZLIB + if (soap->z_buf) + SOAP_FREE(soap, soap->z_buf); + soap->z_buf = NULL; +#endif +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_initialize(struct soap *soap) +{ + soap_versioning(soap_init)(soap, SOAP_IO_DEFAULT, SOAP_IO_DEFAULT); +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_versioning(soap_init)(struct soap *soap, soap_mode imode, soap_mode omode) +{ + size_t i; + soap->state = SOAP_INIT; +#ifdef SOAP_MEM_DEBUG + soap_init_mht(soap); +#endif +#ifdef SOAP_DEBUG + soap_init_logs(soap); +#endif +#ifdef TANDEM_NONSTOP + soap_set_test_logfile(soap, "TESTLOG"); + soap_set_sent_logfile(soap, "SENTLOG"); + soap_set_recv_logfile(soap, "RECVLOG"); +#else + soap_set_test_logfile(soap, "TEST.log"); + soap_set_sent_logfile(soap, "SENT.log"); + soap_set_recv_logfile(soap, "RECV.log"); +#endif +#ifdef WITH_SELF_PIPE + pipe(soap->pipe_fd); + SOAP_SOCKNONBLOCK(soap->pipe_fd[0]) + SOAP_SOCKNONBLOCK(soap->pipe_fd[1]) +#endif + soap->version = 0; + soap->imode = imode; + soap->omode = omode; + soap->mode = imode; + soap->plugins = NULL; + soap->user = NULL; + for (i = 0; i < sizeof(soap->data)/sizeof(*soap->data); i++) + soap->data[i] = NULL; + soap->bearer = NULL; + soap->userid = NULL; + soap->passwd = NULL; + soap->authrealm = NULL; +#ifdef WITH_NTLM + soap->ntlm_challenge = NULL; +#endif +#ifndef WITH_NOHTTP + soap->fpost = http_post; + soap->fget = http_get; + soap->fput = http_put; + soap->fpatch = http_patch; + soap->fdel = http_del; + soap->fopt = http_200; + soap->fhead = http_200; + soap->fform = NULL; + soap->fposthdr = http_post_header; + soap->fresponse = http_response; + soap->fparse = http_parse; + soap->fparsehdr = http_parse_header; +#endif + soap->fheader = NULL; + soap->fconnect = NULL; + soap->fdisconnect = NULL; +#ifndef WITH_NOIO + soap->ipv6_multicast_if = 0; /* in_addr_t value */ + soap->ipv4_multicast_if = NULL; /* points to struct in_addr or in_addr_t */ + soap->ipv4_multicast_ttl = 0; /* 0: use default */ + soap->client_addr = NULL; /* client address (IPv4 or IPv6 or host name) to bind before connect, NULL for none */ + soap->client_addr_ipv6 = NULL; /* client address IPv6 or host name to bind before connect, NULL for none */ + soap->client_port = -1; /* client port to bind before connect, -1 for none */ + soap->client_interface = NULL; /* client interface address, NULL for none */ +#ifndef WITH_IPV6 + soap->fresolve = tcp_gethost; +#else + soap->fresolve = NULL; +#endif + soap->faccept = tcp_accept; + soap->fopen = tcp_connect; + soap->fclose = tcp_disconnect; + soap->fclosesocket = tcp_closesocket; + soap->fshutdownsocket = tcp_shutdownsocket; + soap->fsend = fsend; + soap->frecv = frecv; + soap->fpoll = soap_poll; +#else + soap->fopen = NULL; + soap->fclose = NULL; + soap->fpoll = NULL; +#endif + soap->fseterror = NULL; + soap->fignore = NULL; + soap->fserveloop = NULL; + soap->fplugin = fplugin; +#ifndef WITH_LEANER + soap->fsvalidate = NULL; + soap->fwvalidate = NULL; + soap->feltbegin = NULL; + soap->feltendin = NULL; + soap->feltbegout = NULL; + soap->feltendout = NULL; + soap->fprepareinitsend = NULL; + soap->fprepareinitrecv = NULL; + soap->fpreparesend = NULL; + soap->fpreparerecv = NULL; + soap->fpreparefinalsend = NULL; + soap->fpreparefinalrecv = NULL; + soap->ffiltersend = NULL; + soap->ffilterrecv = NULL; + soap->fdimereadopen = NULL; + soap->fdimewriteopen = NULL; + soap->fdimereadclose = NULL; + soap->fdimewriteclose = NULL; + soap->fdimeread = NULL; + soap->fdimewrite = NULL; + soap->fmimereadopen = NULL; + soap->fmimewriteopen = NULL; + soap->fmimereadclose = NULL; + soap->fmimewriteclose = NULL; + soap->fmimeread = NULL; + soap->fmimewrite = NULL; +#endif + soap->float_format = "%.9G"; /* Alternative: use "%G" */ + soap->double_format = "%.17lG"; /* Alternative: use "%lG" */ + soap->long_double_format = NULL; /* Defined in custom serializer custom/long_double.c */ + soap->dime_id_format = "cid:id%d"; /* default DIME id format for int id index */ + soap->recv_maxlength = 0x7FFFFFFF; /* default max length of messages received (2GB) */ + soap->recv_timeout = 0; + soap->send_timeout = 0; + soap->transfer_timeout = 0; + soap->connect_timeout = 0; + soap->accept_timeout = 0; + soap->socket_flags = 0; + soap->connect_flags = 0; + soap->connect_retry = 0; + soap->bind_flags = 0; +#ifdef WITH_IPV6_V6ONLY + soap->bind_inet6 = 1; + soap->bind_v6only = 1; +#else + soap->bind_inet6 = 0; + soap->bind_v6only = 0; +#endif + soap->accept_flags = 0; +#ifdef WIN32 + soap->sndbuf = SOAP_BUFLEN + 1; /* this size speeds up windows xfer */ + soap->rcvbuf = SOAP_BUFLEN + 1; +#else + soap->sndbuf = SOAP_BUFLEN; + soap->rcvbuf = SOAP_BUFLEN; +#endif + soap->linger_time = 0; + soap->maxlevel = SOAP_MAXLEVEL; + soap->maxlength = SOAP_MAXLENGTH; + soap->maxoccurs = SOAP_MAXOCCURS; + soap->http_version = "1.1"; + soap->proxy_http_version = "1.0"; + soap->http_content = NULL; + soap->http_extra_header = NULL; + soap->actor = NULL; + soap->lang = "en"; + soap->keep_alive = 0; + soap->tcp_keep_alive = 0; + soap->tcp_keep_idle = 0; + soap->tcp_keep_intvl = 0; + soap->tcp_keep_cnt = 0; + soap->max_keep_alive = SOAP_MAXKEEPALIVE; + soap->ip = 0; + soap->ip6[0] = 0; + soap->ip6[1] = 0; + soap->ip6[2] = 0; + soap->ip6[3] = 0; + soap->labbuf = NULL; + soap->lablen = 0; + soap->labidx = 0; + soap->encodingStyle = NULL; +#ifndef WITH_NONAMESPACES + soap->namespaces = namespaces; +#else + soap->namespaces = NULL; +#endif + soap->local_namespaces = NULL; + soap->nlist = NULL; + soap->blist = NULL; + soap->clist = NULL; + soap->alist = NULL; + soap->shaky = 0; + soap->attributes = NULL; + soap->header = NULL; + soap->fault = NULL; + soap->master = SOAP_INVALID_SOCKET; + soap->socket = SOAP_INVALID_SOCKET; + soap->sendsk = SOAP_INVALID_SOCKET; + soap->recvsk = SOAP_INVALID_SOCKET; + soap->os = NULL; + soap->is = NULL; +#ifndef WITH_LEANER + soap->dom = NULL; + soap->dime.list = NULL; + soap->dime.first = NULL; + soap->dime.last = NULL; + soap->mime.list = NULL; + soap->mime.first = NULL; + soap->mime.last = NULL; + soap->mime.boundary = NULL; + soap->mime.start = NULL; + soap->xlist = NULL; +#endif +#ifndef UNDER_CE + soap->recvfd = 0; + soap->sendfd = 1; +#else + soap->recvfd = stdin; + soap->sendfd = stdout; +#endif + soap->tag[0] = '\0'; + soap->id[0] = '\0'; + soap->href[0] = '\0'; + soap->type[0] = '\0'; + soap->arrayType[0] = '\0'; + soap->arraySize[0] = '\0'; + soap->arrayOffset[0] = '\0'; + soap->endpoint[0] = '\0'; + soap->host[0] = '\0'; + soap->path[0] = '\0'; + soap->port = 0; + soap->override_host = NULL; + soap->override_port = 0; + soap->action = NULL; + soap->proxy_host = NULL; + soap->proxy_port = 8080; + soap->proxy_userid = NULL; + soap->proxy_passwd = NULL; + soap->proxy_from = NULL; + soap->origin = NULL; + soap->cors_origin = NULL; + soap->cors_allow = "*"; + soap->cors_method = NULL; + soap->cors_header = NULL; + soap->cors_methods = NULL; + soap->cors_headers = NULL; + soap->x_frame_options = "SAMEORIGIN"; + soap->prolog = "\n"; + soap->zlib_state = SOAP_ZLIB_NONE; + soap->zlib_in = SOAP_ZLIB_NONE; + soap->zlib_out = SOAP_ZLIB_NONE; + soap->d_stream = NULL; + soap->z_buf = NULL; + soap->z_level = 6; + soap->z_dict = NULL; + soap->z_dict_len = 0; +#ifndef WITH_LEAN + soap->wsuid = NULL; + soap->c14nexclude = NULL; + soap->c14ninclude = NULL; + soap->cookies = NULL; + soap->cookie_domain = NULL; + soap->cookie_path = NULL; + soap->cookie_max = 32; +#endif +#ifdef WMW_RPM_IO + soap->rpmreqid = NULL; +#endif +#ifndef WITH_NOIDREF + soap_init_iht(soap); +#endif + soap_init_pht(soap); +#ifdef WITH_OPENSSL + if (!soap_ssl_init_done) + soap_ssl_init(); + soap->fsslauth = ssl_auth_init; + soap->fsslverify = NULL; + soap->bio = NULL; + soap->ssl = NULL; + soap->ctx = NULL; + soap->session = NULL; + soap->session_host[0] = '\0'; + soap->session_port = 443; + soap->ssl_flags = SOAP_SSL_DEFAULT; + soap->keyfile = NULL; + soap->keyid = NULL; + soap->password = NULL; + soap->cafile = NULL; + soap->capath = NULL; + soap->crlfile = NULL; + soap->dhfile = NULL; + soap->randfile = NULL; +#endif +#ifdef WITH_GNUTLS + if (!soap_ssl_init_done) + soap_ssl_init(); + soap->fsslauth = ssl_auth_init; + soap->fsslverify = NULL; + soap->xcred = NULL; + soap->acred = NULL; + soap->cache = NULL; + soap->session = NULL; + soap->ssl_flags = SOAP_SSL_DEFAULT; + soap->keyfile = NULL; + soap->keyid = NULL; + soap->password = NULL; + soap->cafile = NULL; + soap->capath = NULL; + soap->crlfile = NULL; + soap->dh_params = NULL; + soap->rsa_params = NULL; +#endif +#ifdef WITH_SYSTEMSSL + soap->fsslauth = ssl_auth_init; + soap->fsslverify = NULL; + soap->bio = NULL; + soap->ssl = (gsk_handle)NULL; + soap->ctx = (gsk_handle)NULL; + soap->session = NULL; + soap->ssl_flags = SOAP_SSL_DEFAULT; + soap->keyfile = NULL; + soap->keyid = NULL; + soap->password = NULL; + soap->cafile = NULL; + soap->capath = NULL; + soap->crlfile = NULL; + soap->dhfile = NULL; + soap->randfile = NULL; +#endif + soap->c_locale = NULL; + soap->buflen = 0; + soap->bufidx = 0; +#ifndef WITH_LEANER + soap->dime.chunksize = 0; + soap->dime.buflen = 0; +#endif + soap->other = 0; + soap->root = -1; + soap->null = 0; + soap->position = 0; + soap->encoding = 0; + soap->mustUnderstand = 0; + soap->ns = 0; + soap->part = SOAP_END; + soap->event = 0; + soap->evlev = 0; + soap->alloced = 0; + soap->count = 0; + soap->length = 0; + soap->cdata = 0; + soap->peeked = 0; + soap->ahead = 0; + soap->idnum = 0; + soap->level = 0; + soap->status = 0; + soap->error = SOAP_OK; + soap->errmode = 0; + soap->errnum = 0; +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_begin(struct soap *soap) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Clean up for input/output\n")); + soap->error = SOAP_OK; + if (!soap->keep_alive) + { + soap->buflen = 0; + soap->bufidx = 0; + } + soap->encoding = 0; + soap->mode = 0; + soap->part = SOAP_END; + soap->peeked = 0; + soap->ahead = 0; + soap->level = 0; + *soap->endpoint = '\0'; + soap->encodingStyle = SOAP_STR_EOS; + soap_free_temp(soap); +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_end(struct soap *soap) +{ + if (soap_check_state(soap)) + return; + soap_free_temp(soap); + soap_dealloc(soap, NULL); + while (soap->clist) + { + struct soap_clist *cp = soap->clist->next; + SOAP_FREE(soap, soap->clist); + soap->clist = cp; + } + soap_closesock(soap); +#ifdef SOAP_DEBUG + soap_close_logfiles(soap); +#endif +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_set_version(struct soap *soap, short version) +{ + soap_set_local_namespaces(soap); + if (soap->version != version && soap->local_namespaces && soap->local_namespaces[0].id && soap->local_namespaces[1].id) + { + if (version == 1) + { + soap->local_namespaces[0].ns = soap_env1; + soap->local_namespaces[1].ns = soap_enc1; + } + else if (version == 2) + { + soap->local_namespaces[0].ns = soap_env2; + soap->local_namespaces[1].ns = soap_enc2; + } + soap->version = version; + } + if (version == 0) + soap->encodingStyle = SOAP_STR_EOS; + else + soap->encodingStyle = NULL; +} + +/******************************************************************************/ + +static void +soap_version(struct soap *soap) +{ + struct Namespace *p = soap->local_namespaces; + if (p) + { + const char *ns = p[0].out; + if (!ns) + ns = p[0].ns; + if (ns) + { + if (!strcmp(ns, soap_env1)) + { + soap->version = 1; /* make sure we use SOAP 1.1 */ + if (p[1].out) + SOAP_FREE(soap, p[1].out); + p[1].out = (char*)SOAP_MALLOC(soap, sizeof(soap_enc1)); + if (p[1].out) + (void)soap_memcpy(p[1].out, sizeof(soap_enc1), soap_enc1, sizeof(soap_enc1)); + } + else if (!strcmp(ns, soap_env2)) + { + soap->version = 2; /* make sure we use SOAP 1.2 */ + if (p[1].out) + SOAP_FREE(soap, p[1].out); + p[1].out = (char*)SOAP_MALLOC(soap, sizeof(soap_enc2)); + if (p[1].out) + (void)soap_memcpy(p[1].out, sizeof(soap_enc2), soap_enc2, sizeof(soap_enc2)); + } + } + } +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_set_namespaces(struct soap *soap, const struct Namespace *p) +{ + struct Namespace *ns = soap->local_namespaces; + struct soap_nlist *np, *nq, *nr; + unsigned int level = soap->level; + soap->namespaces = p; + soap->local_namespaces = NULL; + soap_set_local_namespaces(soap); + /* reverse the namespace list */ + np = soap->nlist; + soap->nlist = NULL; + if (np) + { + nq = np->next; + np->next = NULL; + while (nq) + { + nr = nq->next; + nq->next = np; + np = nq; + nq = nr; + } + } + /* then push on new stack */ + while (np) + { + const char *s; + soap->level = np->level; /* preserve element nesting level */ + s = np->ns; + if (!s && np->index >= 0 && ns) + { + s = ns[np->index].out; + if (!s) + s = ns[np->index].ns; + } + if (s) + (void)soap_push_namespace(soap, np->id, s); + nq = np; + np = np->next; + SOAP_FREE(soap, nq); + } + if (ns) + { + int i; + for (i = 0; ns[i].id; i++) + { + if (ns[i].out) + { + SOAP_FREE(soap, ns[i].out); + ns[i].out = NULL; + } + } + SOAP_FREE(soap, ns); + } + soap->level = level; /* restore level */ + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_set_local_namespaces(struct soap *soap) +{ + if (soap->namespaces && !soap->local_namespaces) + { + const struct Namespace *ns1; + struct Namespace *ns2; + size_t n = 1; + for (ns1 = soap->namespaces; ns1->id; ns1++) + n++; + n *= sizeof(struct Namespace); + ns2 = (struct Namespace*)SOAP_MALLOC(soap, n); + if (ns2) + { + (void)soap_memcpy((void*)ns2, n, (const void*)soap->namespaces, n); + if (ns2[0].ns) + { + if (!strcmp(ns2[0].ns, soap_env1)) + soap->version = 1; + else if (!strcmp(ns2[0].ns, soap_env2)) + soap->version = 2; + } + soap->local_namespaces = ns2; + for (; ns2->id; ns2++) + ns2->out = NULL; + } + } +} + +/******************************************************************************/ + +#ifndef WITH_LEAN +SOAP_FMAC1 +const char * +SOAP_FMAC2 +soap_tagsearch(const char *big, const char *little) +{ + if (big && little) + { + size_t n = strlen(little); + const char *s = big; + while (s) + { + const char *t = s; + size_t i; + for (i = 0; i < n; i++, t++) + { + if (*t != little[i]) + break; + } + if (*t == '\0' || *t == ' ') + { + if (i == n || (i > 0 && little[i-1] == ':')) + return s; + } + s = strchr(t, ' '); + if (s) + s++; + } + } + return NULL; +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +struct soap_nlist * +SOAP_FMAC2 +soap_lookup_ns(struct soap *soap, const char *tag, size_t n) +{ + struct soap_nlist *np; + for (np = soap->nlist; np; np = np->next) + if (!strncmp(np->id, tag, n) && !np->id[n]) + return np; + return NULL; +} + +/******************************************************************************/ + +#ifndef WITH_LEAN +static struct soap_nlist * +soap_push_ns(struct soap *soap, const char *id, const char *ns, short utilized, short isearly) +{ + struct soap_nlist *np = NULL; + size_t n, k; + unsigned int level = soap->level + isearly; + if (soap_tagsearch(soap->c14nexclude, id)) + return NULL; + if (!utilized) + { + for (np = soap->nlist; np; np = np->next) + { + if (!strcmp(np->id, id) && ((!np->ns && *id) || (np->ns && !strcmp(np->ns, ns)))) + break; + } + if (np) + { + if ((np->level < level || (!np->ns && *id)) && np->index == 1) + utilized = 1; + else + return NULL; + } + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Adding namespace binding (level=%u) '%s' '%s' utilized=%d\n", level, id, ns ? ns : "(null)", utilized)); + n = strlen(id); + if (ns) + k = strlen(ns) + 1; + else + k = 0; + if (sizeof(struct soap_nlist) + n + k > n && (SOAP_MAXALLOCSIZE <= 0 || sizeof(struct soap_nlist) + n + k <= SOAP_MAXALLOCSIZE)) + np = (struct soap_nlist*)SOAP_MALLOC(soap, sizeof(struct soap_nlist) + n + k); + if (!np) + { + soap->error = SOAP_EOM; + return NULL; + } + np->next = soap->nlist; + soap->nlist = np; + soap_strcpy((char*)np->id, n + 1, id); + if (ns) + { + np->ns = np->id + n + 1; + soap_strcpy((char*)np->ns, k, ns); + } + else + { + np->ns = NULL; + } + np->level = level; + np->index = utilized; + return np; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEAN +static void +soap_utilize_ns(struct soap *soap, const char *tag, short isearly) +{ + struct soap_nlist *np; + size_t n = 0; + if (!strncmp(tag, "xmlns:", 6)) + { + tag += 6; + n = strlen(tag); + } + else + { + const char *t = strchr(tag, ':'); + if (t) + n = t - tag; + } + np = soap_lookup_ns(soap, tag, n); + if (np) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Utilizing namespace of '%s' at level %u utilized=%d at level=%u\n", tag, soap->level + isearly, np->index, np->level)); + if (np->index <= 0) + { + if (np->level == soap->level + isearly) + np->index = 1; + else + (void)soap_push_ns(soap, np->id, np->ns, 1, isearly); + } + } + else if (strncmp(tag, "xml", 3)) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Utilizing default namespace of '%s' at level %u\n", tag, soap->level + isearly)); + (void)soap_strncpy(soap->tag, sizeof(soap->tag), tag, n); + (void)soap_push_ns(soap, soap->tag, NULL, 1, isearly); + } +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_element(struct soap *soap, const char *tag, int id, const char *type) +{ +#ifndef WITH_LEAN + const char *s; +#endif + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Element begin tag='%s' level='%u' id='%d' type='%s'\n", tag, soap->level, id, type ? type : SOAP_STR_EOS)); +#ifdef WITH_DOM +#ifndef WITH_LEAN + if (soap_tagsearch(soap->wsuid, tag)) + { + size_t i; + for (s = tag, i = 0; *s && i < sizeof(soap->href) - 1; s++, i++) + soap->href[i] = *s == ':' ? '-' : *s; + soap->href[i] = '\0'; + if (soap_set_attr(soap, "wsu:Id", soap->href, 1)) + return soap->error; + } +#endif +#endif + soap->level++; + if (soap->level > soap->maxlevel) + return soap->error = SOAP_LEVEL; +#ifdef WITH_DOM +#ifndef WITH_LEAN + if ((soap->mode & SOAP_XML_CANONICAL) && !(soap->mode & SOAP_DOM_ASIS)) + { + if (soap->evlev >= soap->level) + soap->evlev = 0; + if (soap->event == SOAP_SEC_BEGIN && !soap->evlev) + { + struct soap_nlist *np; + /* non-nested wsu:Id found: clear xmlns, re-emit them for exc-c14n */ + for (np = soap->nlist; np; np = np->next) + { + int p = soap->c14ninclude ? *soap->c14ninclude == '+' || soap_tagsearch(soap->c14ninclude, np->id) != NULL : 0; + if (np->index == 2 || p) + { + struct soap_nlist *np1 = soap_push_ns(soap, np->id, np->ns, 1, 0); + if (np1 && !p) + np1->index = 0; + } + } + soap->evlev = soap->level; + } + } +#endif + if ((soap->mode & SOAP_XML_DOM)) + { + struct soap_dom_element *elt = (struct soap_dom_element*)soap_malloc(soap, sizeof(struct soap_dom_element)); + if (!elt) + return soap->error = SOAP_EOM; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Adding DOM element tag='%s' %p (parent='%s' %p)\n", tag, elt, soap->dom ? soap->dom->name : "(null)", soap->dom)); + elt->soap = soap; + elt->next = NULL; + elt->prnt = soap->dom; + elt->elts = NULL; + elt->atts = NULL; + elt->nstr = NULL; + elt->name = soap_strdup(soap, tag); + elt->lead = NULL; + elt->text = NULL; + elt->code = NULL; + elt->tail = NULL; + elt->node = NULL; + elt->type = 0; + if (soap->dom) + { + struct soap_dom_element *p = soap->dom->elts; + if (p) + { + while (p->next) + p = p->next; + p->next = elt; + } + else + { + soap->dom->elts = elt; + } + } + soap->dom = elt; + if (!elt->name) + return soap->error = SOAP_EOM; + } + else + { +#endif +#ifndef WITH_LEAN + if (!soap->ns) + { + if (!(soap->mode & SOAP_XML_CANONICAL) && soap_send(soap, soap->prolog)) + return soap->error; + } + else if ((soap->mode & SOAP_XML_INDENT)) + { + if (soap->ns == 1 && soap_send_raw(soap, soap_indent, soap->level < sizeof(soap_indent) ? soap->level : sizeof(soap_indent) - 1)) + return soap->error; + soap->body = 1; + } + if ((soap->mode & SOAP_XML_DEFAULTNS)) + { + size_t n = 0; + s = strchr(tag, ':'); + if (s) + n = s++ - tag; + else + s = tag; + if (soap_send_raw(soap, "<", 1) + || soap_send(soap, s)) + return soap->error; + if (n) + { + struct Namespace *ns = soap->local_namespaces; + for (; ns && ns->id; ns++) + { + if (*ns->id && ns->ns && !strncmp(ns->id, tag, n) && !ns->id[n]) + { + if (!soap->nlist || *soap->nlist->id || (soap->nlist->ns && strcmp(soap->nlist->ns, ns->ns))) + { + (void)soap_push_ns(soap, SOAP_STR_EOS, ns->out ? ns->out : ns->ns, 0, 0); + if (soap_attribute(soap, "xmlns", ns->out ? ns->out : ns->ns)) + return soap->error; + } + break; + } + } + } +#ifndef WITH_NOEMPTYNAMESPACES + else if (!soap->nlist || *soap->nlist->id || (soap->nlist->ns && *soap->nlist->ns)) + { + (void)soap_push_ns(soap, SOAP_STR_EOS, SOAP_STR_EOS, 0, 0); + if (soap_attribute(soap, "xmlns", SOAP_STR_EOS)) + return soap->error; + } +#endif + } + else +#endif + if (soap_send_raw(soap, "<", 1) + || soap_send(soap, tag)) + return soap->error; +#ifdef WITH_DOM + } +#endif + if (!soap->ns) + { + struct Namespace *ns = soap->local_namespaces; + int k = -1; + if (ns) + { + while (k-- && ns->id) + { + const char *t = ns->out; + if (!t) + t = ns->ns; + if (*ns->id && t && *t) + { + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), strlen(ns->id) + 6), "xmlns:%s", ns->id); + if (soap_attribute(soap, soap->tmpbuf, t)) + return soap->error; + } + ns++; + } + } + } + soap->ns = 1; /* namespace table control: ns = 0 or 2 to start, then 1 to stop dumping the table */ +#ifndef WITH_LEAN + if ((soap->mode & SOAP_XML_CANONICAL)) + { + if ((soap->mode & SOAP_XML_DEFAULTNS)) + soap_utilize_ns(soap, SOAP_STR_EOS, 0); + else + soap_utilize_ns(soap, tag, 0); + } +#endif + if (id > 0) + { + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), sizeof(SOAP_BASEREFNAME) + 20), SOAP_BASEREFNAME "%d", id); + if (soap->version == 2) + { + if (soap_attribute(soap, "SOAP-ENC:id", soap->tmpbuf)) + return soap->error; + } + else if (soap_attribute(soap, "id", soap->tmpbuf)) + { + return soap->error; + } + } + if (type && *type && !(soap->mode & SOAP_XML_NOTYPE)) + { +#ifndef WITH_LEAN + if ((soap->mode & SOAP_XML_CANONICAL) && !(soap->mode & SOAP_XML_CANONICAL_NA)) + soap_utilize_ns(soap, type, 0); +#endif + if (soap_attribute(soap, "xsi:type", type)) + return soap->error; + } + if (soap->null && soap->position > 0 && soap->version == 1) + { + int i; + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf) - 1, 20), "[%d", soap->positions[0]); + for (i = 1; i < soap->position; i++) + { + size_t l = strlen(soap->tmpbuf); + (SOAP_SNPRINTF(soap->tmpbuf + l, sizeof(soap->tmpbuf) - l - 1, 20), ",%d", soap->positions[i]); + } + soap_strcat(soap->tmpbuf, sizeof(soap->tmpbuf), "]"); + if (soap_attribute(soap, "SOAP-ENC:position", soap->tmpbuf)) + return soap->error; + } + if (soap->mustUnderstand) + { + if (soap->actor && *soap->actor) + { + if (soap_attribute(soap, soap->version == 2 ? "SOAP-ENV:role" : "SOAP-ENV:actor", soap->actor)) + return soap->error; + } + if (soap_attribute(soap, "SOAP-ENV:mustUnderstand", soap->version == 2 ? "true" : "1")) + return soap->error; + soap->mustUnderstand = 0; + } + if (soap->encoding) + { + if (soap->encodingStyle && soap->local_namespaces && soap->local_namespaces[0].id && soap->local_namespaces[1].id) + { + if (!*soap->encodingStyle) + { + if (soap->local_namespaces[1].out) + soap->encodingStyle = soap->local_namespaces[1].out; + else + soap->encodingStyle = soap->local_namespaces[1].ns; + } + if (soap->encodingStyle && soap_attribute(soap, "SOAP-ENV:encodingStyle", soap->encodingStyle)) + return soap->error; + } + else + { + soap->encodingStyle = NULL; + } + soap->encoding = 0; + } + soap->null = 0; + soap->position = 0; + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_element_begin_out(struct soap *soap, const char *tag, int id, const char *type) +{ + if (*tag == '-') + return SOAP_OK; +#ifdef WITH_DOM + if (soap->feltbegout) + return soap->error = soap->feltbegout(soap, tag, id, type); +#endif + if (soap_element(soap, tag, id, type)) + return soap->error; + return soap_element_start_end_out(soap, NULL); +} + +/******************************************************************************/ + +#if _MSC_VER < 1400 && !defined(HAVE_STRLCAT) +/* concat string (truncating the result, strings must not be NULL) */ +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_strcat(char *t, size_t n, const char *s) +{ + size_t k = strlen(t); + if (k < n) + { + t += k; + n -= k; + while (--n > 0 && *s) + *t++ = *s++; + *t = '\0'; + } +} +#endif + +/******************************************************************************/ + +#if _MSC_VER < 1400 +/* concat string up to m chars (leaves destination intact on overrun and returns nonzero, zero if OK) */ +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_strncat(char *t, size_t n, const char *s, size_t m) +{ + size_t k; + if (!t || !s) + return 1; + k = strlen(t); + if (n <= k + m) + return 1; + t += k; + n -= k; + while (--n > 0 && *s) + *t++ = *s++; + *t = '\0'; + return 0; +} +#endif + +/******************************************************************************/ + +#ifndef HAVE_STRRCHR +SOAP_FMAC1 +char* +SOAP_FMAC2 +soap_strrchr(const char *s, int t) +{ + char *r = NULL; + while (*s) + if (*s++ == t) + r = (char*)s - 1; + return r; +} +#endif + +/******************************************************************************/ + +#ifndef HAVE_STRTOL +SOAP_FMAC1 +long +SOAP_FMAC2 +soap_strtol(const char *s, char **t, int b) +{ + long n = 0; + int c; + while (*s > 0 && *s <= 32) + s++; + if (b == 10) + { + short neg = 0; + if (*s == '-') + { + s++; + neg = 1; + } + else if (*s == '+') + { + s++; + } + while ((c = *s) && c >= '0' && c <= '9') + { + if (n >= 214748364 && (n > 214748364 || c >= '8')) + { + if (neg && n == 214748364 && c == '8') + { + if (t) + *t = (char*)(s + 1); + return -2147483648; + } + break; + } + n *= 10; + n += c - '0'; + s++; + } + if (neg) + n = -n; + } + else /* assume b == 16 and value is always positive */ + { + while ((c = *s)) + { + if (c >= '0' && c <= '9') + c -= '0'; + else if (c >= 'A' && c <= 'F') + c -= 'A' - 10; + else if (c >= 'a' && c <= 'f') + c -= 'a' - 10; + if (n > 0x07FFFFFF) + break; + n <<= 4; + n += c; + s++; + } + } + if (t) + *t = (char*)s; + return n; +} +#endif + +/******************************************************************************/ + +#ifndef HAVE_STRTOUL +SOAP_FMAC1 +unsigned long +SOAP_FMAC2 +soap_strtoul(const char *s, char **t, int b) +{ + unsigned long n = 0; + int c; + while (*s > 0 && *s <= 32) + s++; + if (b == 10) + { + short neg = 0; + if (*s == '-') + { + s++; + neg = 1; + } + else if (*s == '+') + { + s++; + } + while ((c = *s) && c >= '0' && c <= '9') + { + if (n >= 429496729 && (n > 429496729 || c >= '6')) + break; + n *= 10; + n += c - '0'; + s++; + } + if (neg && n > 0) + s--; + } + else /* b == 16 */ + { + while ((c = *s)) + { + if (c >= '0' && c <= '9') + c -= '0'; + else if (c >= 'A' && c <= 'F') + c -= 'A' - 10; + else if (c >= 'a' && c <= 'f') + c -= 'a' - 10; + if (n > 0x0FFFFFFF) + break; + n <<= 4; + n += c; + s++; + } + } + if (t) + *t = (char*)s; + return n; +} +#endif + +/******************************************************************************/ + +#ifndef soap_strtoll +SOAP_FMAC1 +LONG64 +SOAP_FMAC2 +soap_strtoll(const char *s, char **t, int b) +{ + LONG64 n = 0LL; + int c; + while (*s > 0 && *s <= 32) + s++; + if (b == 10) + { + short neg = 0; + if (*s == '-') + { + s++; + neg = 1; + } + else if (*s == '+') + { + s++; + } + while ((c = *s) && c >= '0' && c <= '9') + { + if (n >= 922337203685477580LL && (n > 922337203685477580LL || c >= '8')) + { + if (neg && n == 922337203685477580LL && c == '8') + { + if (t) + *t = (char*)(s + 1); + return -9223372036854775807LL - 1LL; /* appease compilers that complain */ + } + break; + } + n *= 10LL; + n += c - '0'; + s++; + } + if (neg) + n = -n; + } + else /* assume b == 16 and value is always positive */ + { + while ((c = *s)) + { + if (c >= '0' && c <= '9') + c -= '0'; + else if (c >= 'A' && c <= 'F') + c -= 'A' - 10; + else if (c >= 'a' && c <= 'f') + c -= 'a' - 10; + if (n > 0x07FFFFFFFFFFFFFFLL) + break; + n <<= 4; + n += c; + s++; + } + } + if (t) + *t = (char*)s; + return n; +} +#endif + +/******************************************************************************/ + +#ifndef soap_strtoull +SOAP_FMAC1 +ULONG64 +SOAP_FMAC2 +soap_strtoull(const char *s, char **t, int b) +{ + ULONG64 n = 0UL; + int c; + while (*s > 0 && *s <= 32) + s++; + if (b == 10) + { + short neg = 0; + if (*s == '-') + { + s++; + neg = 1; + } + else if (*s == '+') + { + s++; + } + while ((c = *s) && c >= '0' && c <= '9') + { + if (n >= 1844674407370955161ULL) + break; + n *= 10UL; + n += c - '0'; + s++; + } + if (neg && n > 0UL) + s--; + } + else /* b == 16 */ + { + while ((c = *s)) + { + if (c >= '0' && c <= '9') + c -= '0'; + else if (c >= 'A' && c <= 'F') + c -= 'A' - 10; + else if (c >= 'a' && c <= 'f') + c -= 'a' - 10; + if (n > 0x0FFFFFFFFFFFFFFFULL) + break; + n <<= 4; + n += c; + s++; + } + } + if (t) + *t = (char*)s; + return n; +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_array_begin_out(struct soap *soap, const char *tag, int id, const char *type, const char *offset) +{ + if (!type || !*type || soap->version == 0) + return soap_element_begin_out(soap, tag, id, NULL); + if (soap_element(soap, tag, id, NULL)) + return soap->error; + if (soap->version == 1) + { + if (offset && soap_attribute(soap, "SOAP-ENC:offset", offset)) + return soap->error; + if (soap_attribute(soap, "SOAP-ENC:arrayType", type)) + return soap->error; + } + else + { + const char *s; + s = strchr(type, '['); + if (s && (size_t)(s - type) < sizeof(soap->tmpbuf)) + { + (void)soap_strncpy(soap->tmpbuf, sizeof(soap->tmpbuf), type, s - type); + if (soap_attribute(soap, "SOAP-ENC:itemType", soap->tmpbuf)) + return soap->error; + s++; + if (*s && *s != ']') + { + soap_strcpy(soap->tmpbuf, sizeof(soap->tmpbuf), s); + soap->tmpbuf[strlen(soap->tmpbuf) - 1] = '\0'; + if (soap_attribute(soap, "SOAP-ENC:arraySize", soap->tmpbuf)) + return soap->error; + } + } + } +#ifndef WITH_LEAN + if ((soap->mode & SOAP_XML_CANONICAL) && !(soap->mode & SOAP_XML_CANONICAL_NA)) + soap_utilize_ns(soap, type, 0); +#endif + return soap_element_start_end_out(soap, NULL); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_element_start_end_out(struct soap *soap, const char *tag) +{ + struct soap_attribute *tp; +#ifndef WITH_LEAN + if ((soap->mode & SOAP_XML_CANONICAL)) + { + struct soap_nlist *np; + for (tp = soap->attributes; tp; tp = tp->next) + { + if (tp->visible && *tp->name && strchr(tp->name, ':')) + soap_utilize_ns(soap, tp->name, 0); + } + if (soap->event == SOAP_SEC_BEGIN) + { + for (np = soap->nlist; np; np = np->next) + if (soap_tagsearch(soap->c14ninclude, np->id)) + (void)soap_push_ns(soap, np->id, np->ns, 1, 0); + soap->event = 0; + soap->evlev = 0; + } + for (np = soap->nlist; np; np = np->next) + { + if (np->ns && np->index == 1) + { + if (*np->id) + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), strlen(np->id) + 6), "xmlns:%s", np->id); + else + soap_strcpy(soap->tmpbuf, sizeof(soap->tmpbuf), "xmlns"); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Enabling utilized binding (level=%u) %s='%s' SEC-BEGIN=%d c14ninclude='%s'\n", np->level, soap->tmpbuf, np->ns, soap->event == SOAP_SEC_BEGIN, soap->c14ninclude ? soap->c14ninclude : "(null)")); + np->index = 2; + soap->level--; + if (*np->id || *np->ns || soap->level > 1) + if (soap_set_attr(soap, soap->tmpbuf, np->ns, 1)) + return soap->error; + soap->level++; + } + else + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Binding (level=%u) %s='%s' utilized=%d\n", np->level, np->id, np->ns, np->index)); + } + } + } +#endif +#ifdef WITH_DOM + if ((soap->mode & SOAP_XML_DOM) && soap->dom) + { + struct soap_dom_attribute **att; + att = &soap->dom->atts; + for (tp = soap->attributes; tp; tp = tp->next) + { + if (tp->visible) + { + *att = (struct soap_dom_attribute*)soap_malloc(soap, sizeof(struct soap_dom_attribute)); + if (!*att) + return soap->error; + (*att)->next = NULL; + (*att)->nstr = NULL; + (*att)->name = soap_strdup(soap, tp->name); + (*att)->text = soap_strdup(soap, tp->value); + (*att)->soap = soap; + if (!(*att)->name || (tp->value && !(*att)->text)) + return soap->error = SOAP_EOM; + att = &(*att)->next; + tp->visible = 0; + } + } + return SOAP_OK; + } +#endif + for (tp = soap->attributes; tp; tp = tp->next) + { + if (tp->visible) + { + if (soap_send_raw(soap, " ", 1) || soap_send(soap, tp->name)) + return soap->error; + if (tp->visible == 2 && tp->value) + { + if (soap_send_raw(soap, "=\"", 2) + || soap_string_out(soap, tp->value, tp->flag) + || soap_send_raw(soap, "\"", 1)) + return soap->error; + } + else + { + if (soap_send_raw(soap, "=\"\"", 3)) + return soap->error; + } + tp->visible = 0; + } + } + if (tag) + { +#ifndef WITH_LEAN + if ((soap->mode & SOAP_XML_CANONICAL)) + { + if (soap_send_raw(soap, ">", 1) + || soap_element_end_out(soap, tag)) + return soap->error; + return SOAP_OK; + } +#endif + if (soap->nlist) + soap_pop_namespace(soap); + soap->level--; /* decrement level just before /> */ + soap->body = 0; + return soap_send_raw(soap, "/>", 2); + } + return soap_send_raw(soap, ">", 1); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_element_end_out(struct soap *soap, const char *tag) +{ + if (*tag == '-') + return SOAP_OK; +#ifdef WITH_DOM + if (soap->feltendout) + return soap->error = soap->feltendout(soap, tag); +#endif + return soap_element_end(soap, tag); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_element_end(struct soap *soap, const char *tag) +{ +#ifndef WITH_LEAN + const char *s; +#endif + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Element ending tag='%s'\n", tag)); +#ifdef WITH_DOM + if ((soap->mode & SOAP_XML_DOM) && soap->dom) + { + if (soap->dom->prnt) + soap->dom = soap->dom->prnt; + return SOAP_OK; + } +#endif +#ifndef WITH_LEAN + if (soap->nlist) + soap_pop_namespace(soap); + if ((soap->mode & SOAP_XML_INDENT)) + { + if (!soap->body) + { + if (soap_send_raw(soap, soap_indent, soap->level < sizeof(soap_indent) ? soap->level : sizeof(soap_indent) - 1)) + return soap->error; + } + soap->body = 0; + } + if ((soap->mode & SOAP_XML_DEFAULTNS) && (s = strchr(tag, ':')) != NULL) + tag = s + 1; +#endif + if (soap_send_raw(soap, "error; + soap->level--; /* decrement level just before > */ + return soap_send_raw(soap, ">", 1); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_element_ref(struct soap *soap, const char *tag, int id, int href) +{ + const char *s = "ref"; + int n = 1; + if (soap->version == 1) + { + s = "href"; + n = 0; + } + else if (soap->version == 2) + { + s = "SOAP-ENC:ref"; + } + (SOAP_SNPRINTF(soap->href, sizeof(soap->href), sizeof(SOAP_BASEREFNAME) + 21), "#" SOAP_BASEREFNAME "%d", href); + return soap_element_href(soap, tag, id, s, soap->href + n); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_element_href(struct soap *soap, const char *tag, int id, const char *ref, const char *val) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Element '%s' reference %s='%s'\n", tag, ref, val)); + if (soap_element(soap, tag, id, NULL) + || soap_attribute(soap, ref, val) + || soap_element_start_end_out(soap, tag)) + return soap->error; + soap->body = 0; + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_element_null(struct soap *soap, const char *tag, int id, const char *type) +{ + struct soap_attribute *tp = NULL; + for (tp = soap->attributes; tp; tp = tp->next) + if (tp->visible) + break; + if (tp || (soap->version == 2 && soap->position > 0) || id > 0 || (soap->mode & SOAP_XML_NIL)) + { + if (soap_element(soap, tag, id, type) + || (!tp && soap_attribute(soap, "xsi:nil", "true")) + || soap_element_start_end_out(soap, tag)) + return soap->error; + soap->body = 0; + } + else + { + soap->null = 1; + soap->position = 0; + soap->mustUnderstand = 0; + } + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_element_empty(struct soap *soap, const char *tag) +{ + if (soap_element(soap, tag, -1, NULL)) + return soap->error; + return soap_element_start_end_out(soap, tag); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_element_nil(struct soap *soap, const char *tag) +{ + if (soap_element(soap, tag, -1, NULL) + || (soap_attribute(soap, "xsi:nil", "true"))) + return soap->error; + return soap_element_start_end_out(soap, tag); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_element_id(struct soap *soap, const char *tag, int id, const void *p, const void *a, int n, const char *type, int t, char **mark) +{ + (void)a; (void)n; + if (!p) + { + soap->error = soap_element_null(soap, tag, id, type); + return -1; + } +#ifndef WITH_NOIDREF + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Element_id %p type=%d id=%d\n", p, t, id)); + if ((!soap->encodingStyle && !(soap->mode & SOAP_XML_GRAPH)) || (soap->mode & SOAP_XML_TREE)) + return soap_check_and_mark(soap, p, t, mark); + if (mark) + *mark = NULL; + if (id < -1) + return soap_embed(soap, p, a, n, t); + else if (id <= 0) + { + struct soap_plist *pp; + if (a) + id = soap_array_pointer_lookup(soap, p, a, n, t, &pp); + else + id = soap_pointer_lookup(soap, p, t, &pp); + if (id) + { + if (soap_is_embedded(soap, pp)) + { + soap_element_ref(soap, tag, 0, id); + return -1; + } + if (soap_is_single(soap, pp)) + return 0; + soap_set_embedded(soap, pp); + } + } + return id; +#else + return soap_check_and_mark(soap, p, t, mark); +#endif +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_check_and_mark(struct soap *soap, const void *p, int t, char **mark) +{ + if (mark) + { + struct soap_plist *pp; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Check %p and mark %p\n", p, (void*)mark)); + if (!soap_pointer_lookup(soap, p, t, &pp)) + if (!soap_pointer_enter(soap, p, NULL, 0, t, &pp)) + return -1; + if ((soap->mode & SOAP_IO_LENGTH)) + { + if (pp->mark1 > 0) + return -1; + pp->mark1 = 1; + *mark = &pp->mark1; + } + else + { + if (pp->mark2 > 0) + return -1; + pp->mark2 = 1; + *mark = &pp->mark2; + } + } + return 0; +} + +/******************************************************************************/ + +SOAP_FMAC1 +void * +SOAP_FMAC2 +soap_mark_lookup(struct soap *soap, const void *p, int t, struct soap_plist **ppp, char **mark) +{ + if (!soap) + return NULL; + if (mark || !(soap->mode & SOAP_XML_TREE)) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Mark lookup %p type=%d\n", p, t)); + if (!soap_pointer_lookup(soap, p, t, ppp)) + { + if (!soap_pointer_enter(soap, p, NULL, 0, t, ppp)) + return NULL; + } + else if (!(soap->mode & SOAP_XML_TREE)) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Mark found %p\n", (*ppp)->dup)); + return (*ppp)->dup; + } + if (mark) + { + if ((*ppp)->mark1 > 0) + (*ppp)->mark1 = 2; /* cycle */ + else + (*ppp)->mark1 = 1; /* cycle detection */ + *mark = &(*ppp)->mark1; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Mark cycle %d\n", (*ppp)->mark1)); + } + } + return NULL; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_mark_cycle(struct soap *soap, struct soap_plist *pp) +{ + (void)soap; + return pp && pp->mark1 == 2 && (soap->mode & SOAP_XML_TREE); +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_mark_dup(struct soap *soap, void *a, struct soap_plist *pp) +{ + (void)soap; + if (pp) + pp->dup = a; +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_unmark(struct soap *soap, char *mark) +{ + (void)soap; + if (mark) + *mark = 0; /* release detection */ +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_element_result(struct soap *soap, const char *tag) +{ + if (soap->version == 2 && soap->encodingStyle) + { + if (soap_element(soap, "SOAP-RPC:result", 0, NULL) + || soap_attribute(soap, "xmlns:SOAP-RPC", soap_rpc) + || soap_element_start_end_out(soap, NULL) + || soap_string_out(soap, tag, 0) + || soap_element_end_out(soap, "SOAP-RPC:result")) + return soap->error; + } + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_check_result(struct soap *soap, const char *tag) +{ + (void)tag; + if (soap->version == 2 && soap->encodingStyle) + { + soap_instring(soap, ":result", NULL, NULL, 0, 2, -1, -1, NULL); + /* just ignore content for compliance reasons, but should compare tag to element's QName value? */ + } +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_attribute(struct soap *soap, const char *name, const char *value) +{ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Attribute '%s'='%s'\n", name, value)); +#ifdef WITH_DOM + if ((soap->mode & SOAP_XML_DOM) && !(soap->mode & SOAP_XML_CANONICAL) && soap->dom) + { + struct soap_dom_attribute *a = (struct soap_dom_attribute*)soap_malloc(soap, sizeof(struct soap_dom_attribute)); + if (!a) + return soap->error; + a->next = soap->dom->atts; + a->nstr = NULL; + a->name = soap_strdup(soap, name); + a->text = soap_strdup(soap, value); + a->soap = soap; + soap->dom->atts = a; + if (!a->name || (value && !a->text)) + return soap->error = SOAP_EOM; + return SOAP_OK; + } +#endif +#ifndef WITH_LEAN + if ((soap->mode & SOAP_XML_CANONICAL)) + { + /* push namespace */ + if (!strncmp(name, "xmlns", 5) && ((name[5] == ':') || name[5] == '\0')) + { + if (name[5] == ':' && soap->c14ninclude && ((*soap->c14ninclude == '*' || soap_tagsearch(soap->c14ninclude, name + 6)))) + soap_utilize_ns(soap, name, 0); + (void)soap_push_ns(soap, name + 5 + (name[5] == ':'), value, 0, 0); + } + else + { + soap->level--; + if (soap_set_attr(soap, name, value, 1)) + return soap->error; + soap->level++; + } + } + else +#endif + { + if (soap_send_raw(soap, " ", 1) + || soap_send(soap, name)) + return soap->error; + if (value) + if (soap_send_raw(soap, "=\"", 2) + || soap_string_out(soap, value, 1) + || soap_send_raw(soap, "\"", 1)) + return soap->error; + } + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_element_begin_in(struct soap *soap, const char *tag, int nillable, const char *type) +{ + if (!soap_peek_element(soap)) + { + if (soap->other) + return soap->error = SOAP_TAG_MISMATCH; + if (tag && *tag == '-') + return SOAP_OK; + soap->error = soap_match_tag(soap, soap->tag, tag); + if (!soap->error) + { + if (type && *soap->type && soap_match_tag(soap, soap->type, type)) + return soap->error = SOAP_TYPE; + soap->peeked = 0; + if (!nillable && soap->null && (soap->mode & SOAP_XML_STRICT)) + return soap->error = SOAP_NULL; + if (soap->body) + { + soap->level++; + if (soap->level > soap->maxlevel) + return soap->error = SOAP_LEVEL; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Begin tag found (level=%u) '%s'='%s'\n", soap->level, soap->tag, tag ? tag : SOAP_STR_EOS)); + soap->error = SOAP_OK; + } + } + else if (soap->error == SOAP_NO_TAG && tag && *tag == '-') + { + soap->error = SOAP_OK; + } + return soap->error; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_element_end_in(struct soap *soap, const char *tag) +{ + soap_wchar c; + char *s = NULL; + int n = 0; + if (tag && *tag == '-') + return SOAP_OK; + if (soap->error == SOAP_NO_TAG) + soap->error = SOAP_OK; +#ifdef WITH_DOM + /* this whitespace or mixed content is significant for DOM "as-is" */ + if ((soap->mode & SOAP_XML_DOM) && soap->dom) + { + const char *t = soap->dom->code; /* save XML code */ + s = soap_string_in(soap, -1, -1, -1, NULL); + if (!soap->peeked && !s) + return soap->error; + if (soap->dom->prnt) + soap->dom = soap->dom->prnt; + if (s && (soap->mode & SOAP_XML_STRICT)) + { + for (; *s; s++) + if (!soap_coblank((soap_wchar)*s)) + return soap->error = SOAP_END_TAG; /* reject mixed content before ending tag */ + } + soap->dom->code = t; /* restore XML code */ + } +#endif + if (soap->peeked) + { + if (*soap->tag) + n++; + soap->peeked = 0; + } + do + { + while (((c = soap_get(soap)) != SOAP_TT)) + { + if ((int)c == EOF) + return soap->error = SOAP_CHK_EOF; + if (!soap_coblank(c)) + { + if ((soap->mode & SOAP_XML_STRICT)) + return soap->error = SOAP_END_TAG; /* reject mixed content before ending tag */ + if (c == SOAP_LT) + n++; + else if (c == '/') + { + c = soap_get(soap); + if (c == SOAP_GT && n > 0) + n--; + else + soap_unget(soap, c); + } + } + } + } while (n-- > 0); + s = soap->tag; + n = sizeof(soap->tag); + while ((c = soap_get(soap)) > 32) + { + if (n > 1) + { + *s++ = (char)c; + n--; + } + } + *s = '\0'; + if ((int)c == EOF) + return soap->error = SOAP_CHK_EOF; + while (soap_coblank(c)) + c = soap_get(soap); + if (c != SOAP_GT) + return soap->error = SOAP_SYNTAX_ERROR; +#ifndef WITH_LEAN +#ifdef WITH_DOM + if (soap->feltendin) + { + int err = soap->error; + soap->error = soap->feltendin(soap, soap->tag, tag); + if (soap->error) + return soap->error; + if (err) + return soap->error = err; /* restore error */ + } +#endif +#endif + if (tag && (soap->mode & SOAP_XML_STRICT)) + { + soap_pop_namespace(soap); + if (soap_match_tag(soap, soap->tag, tag)) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "End tag '%s' does not match '%s'\n", soap->tag, tag ? tag : SOAP_STR_EOS)); + return soap->error = SOAP_SYNTAX_ERROR; + } + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "End tag found (level=%u) '%s'='%s'\n", soap->level, soap->tag, tag ? tag : SOAP_STR_EOS)); + soap->level--; + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char * +SOAP_FMAC2 +soap_attr_value(struct soap *soap, const char *name, int flag, int occurs) +{ + struct soap_attribute *tp; + if (*name == '-') + return SOAP_STR_EOS; + for (tp = soap->attributes; tp; tp = tp->next) + { + if (tp->visible == 2 && !soap_match_att(soap, tp->name, name)) + break; + } + if (tp) + { + if (occurs == 4 || (occurs == 2 && (soap->mode & SOAP_XML_STRICT))) + soap->error = SOAP_PROHIBITED; + else if (flag >= 4) + return soap_collapse(soap, tp->value, flag, 1); + else + return tp->value; + } + else if (occurs == 3 || (occurs == 1 && (soap->mode & SOAP_XML_STRICT))) + { + soap->error = SOAP_REQUIRED; + } + else + { + soap->error = SOAP_OK; + } + return NULL; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_set_attr(struct soap *soap, const char *name, const char *value, int flag) +{ + struct soap_attribute *tp, *tq; + if (*name == '-') + return SOAP_OK; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Set attribute %s='%s'\n", name, value ? value : SOAP_STR_EOS)); + tq = NULL; + for (tp = soap->attributes; tp; tq = tp, tp = tp->next) + { + if (!strcmp(tp->name, name)) + break; + } + if (!tp) + { + size_t l = strlen(name); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Allocate attribute %s\n", name)); + if (sizeof(struct soap_attribute) + l > l && (SOAP_MAXALLOCSIZE <= 0 || sizeof(struct soap_attribute) + l <= SOAP_MAXALLOCSIZE)) + tp = (struct soap_attribute*)SOAP_MALLOC(soap, sizeof(struct soap_attribute) + l); + if (!tp) + return soap->error = SOAP_EOM; + tp->ns = NULL; +#ifndef WITH_LEAN + if ((soap->mode & SOAP_XML_CANONICAL)) + { + struct soap_attribute **tpp = &soap->attributes; + const char *s = strchr(name, ':'); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Inserting attribute %s for c14n\n", name)); + if (!strncmp(name, "xmlns", 5)) + { + for (; *tpp; tpp = &(*tpp)->next) + if (strncmp((*tpp)->name, "xmlns", 5) || strcmp((*tpp)->name + 5, name + 5) > 0) + break; + } + else if (!s) + { + for (; *tpp; tpp = &(*tpp)->next) + if (strncmp((*tpp)->name, "xmlns", 5) && ((*tpp)->ns || strcmp((*tpp)->name, name) > 0)) + break; + } + else + { + struct soap_nlist *np = soap_lookup_ns(soap, name, s - name); + if (np) + { + tp->ns = np->ns; + } + else + { + struct soap_attribute *tq; + for (tq = soap->attributes; tq; tq = tq->next) + { + if (!strncmp(tq->name, "xmlns:", 6) && !strncmp(tq->name + 6, name, s - name) && !tq->name[6 + s - name]) + { + tp->ns = tq->ns; + break; + } + } + } + for (; *tpp; tpp = &(*tpp)->next) + { + int k; + if (strncmp((*tpp)->name, "xmlns", 5) && (*tpp)->ns && tp->ns && ((k = strcmp((*tpp)->ns, tp->ns)) > 0 || (!k && strcmp((*tpp)->name, name) > 0))) + break; + } + } + tp->next = *tpp; + *tpp = tp; + } + else +#endif + if (tq) + { + tq->next = tp; + tp->next = NULL; + } + else + { + tp->next = soap->attributes; + soap->attributes = tp; + } + soap_strcpy((char*)tp->name, l + 1, name); + tp->value = NULL; + } + else if (tp->visible) + { + return SOAP_OK; + } + else if (value && tp->value && tp->size <= strlen(value)) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Free attribute value of %s (free %p)\n", name, (void*)tp->value)); + SOAP_FREE(soap, tp->value); + tp->value = NULL; + tp->ns = NULL; + } + if (value) + { + if (!tp->value) + { + tp->size = strlen(value) + 1; + if (SOAP_MAXALLOCSIZE <= 0 || tp->size <= SOAP_MAXALLOCSIZE) + tp->value = (char*)SOAP_MALLOC(soap, tp->size); + if (!tp->value) + return soap->error = SOAP_EOM; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Allocate attribute value for %s (%p)\n", tp->name, (void*)tp->value)); + } + soap_strcpy(tp->value, tp->size, value); + if (!strncmp(tp->name, "xmlns:", 6)) + tp->ns = tp->value; + tp->visible = 2; + tp->flag = (short)flag; +#ifndef WITH_LEAN + if (!strcmp(name, "wsu:Id")) + { + soap->event = SOAP_SEC_BEGIN; + soap_strcpy(soap->id, sizeof(soap->id), value); + } + if ((soap->mode & SOAP_XML_CANONICAL) && !(soap->mode & SOAP_XML_CANONICAL_NA)) + { + const char *s = strchr(name, ':'); + if (s && strchr(value, ':')) + { + struct soap_nlist *np = soap_lookup_ns(soap, name, s - name); + if (np && np->ns && soap->local_namespaces) + { + if ((!strcmp(s + 1, "type") && !strcmp(np->ns, soap->local_namespaces[2].ns)) /* xsi:type QName */ + || ((!strcmp(s + 1, "arrayType") || !strcmp(s + 1, "itemType")) && !strcmp(np->ns, soap->local_namespaces[1].ns))) /* SOAP-ENC:arrayType and SOAP-ENC:itemType QName */ + soap_utilize_ns(soap, value, 1); + } + } + } +#endif + } + else + { + tp->visible = 1; + } + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_clr_attr(struct soap *soap) +{ + struct soap_attribute *tp; +#ifndef WITH_LEAN + if ((soap->mode & SOAP_XML_CANONICAL)) + { + while (soap->attributes) + { + tp = soap->attributes->next; + if (soap->attributes->value) + SOAP_FREE(soap, soap->attributes->value); + SOAP_FREE(soap, soap->attributes); + soap->attributes = tp; + } + } + else +#endif + { + for (tp = soap->attributes; tp; tp = tp->next) + tp->visible = 0; + } +} + +/******************************************************************************/ + +static int +soap_getattrval(struct soap *soap, char *s, size_t *n, soap_wchar d) +{ + char buf[8]; + size_t i; + size_t k = *n; + size_t m = 0; + char *t = buf; + for (i = 0; i < k; i++) + { + soap_wchar c; + if (m) + { + *s++ = *t++; + m--; + continue; + } + if ((soap->mode & SOAP_C_UTFSTRING)) + { + c = soap_get(soap); + if ((c & 0x80000000) && c >= -0x7FFFFF80 && c < SOAP_AP) + { + t = buf; + c &= 0x7FFFFFFF; + if (c < 0x0800) + *t++ = (char)(0xC0 | ((c >> 6) & 0x1F)); + else + { +#ifdef WITH_REPLACE_ILLEGAL_UTF8 + if (!((c >= 0x80 && c <= 0xD7FF) || (c >= 0xE000 && c <= 0xFFFD) || (c >= 0x10000 && c <= 0x10FFFF))) + c = SOAP_UNKNOWN_UNICODE_CHAR; +#endif + if (c < 0x010000) + { + *t++ = (char)(0xE0 | ((c >> 12) & 0x0F)); + } + else + { + if (c < 0x200000) + { + *t++ = (char)(0xF0 | ((c >> 18) & 0x07)); + } + else + { + if (c < 0x04000000) + { + *t++ = (char)(0xF8 | ((c >> 24) & 0x03)); + } + else + { + *t++ = (char)(0xFC | ((c >> 30) & 0x01)); + *t++ = (char)(0x80 | ((c >> 24) & 0x3F)); + } + *t++ = (char)(0x80 | ((c >> 18) & 0x3F)); + } + *t++ = (char)(0x80 | ((c >> 12) & 0x3F)); + } + *t++ = (char)(0x80 | ((c >> 6) & 0x3F)); + } + *t++ = (char)(0x80 | (c & 0x3F)); + m = t - buf - 1; + if (i + m >= k) + { + soap_unget(soap, c | 0x80000000); + *n = i; + return soap->error = SOAP_EOM; + } + t = buf; + *s++ = *t++; + continue; + } + } + else + { + c = soap_getutf8(soap); + } + switch (c) + { + case SOAP_TT: + *s++ = '<'; + soap_unget(soap, '/'); + break; + case SOAP_LT: + *s++ = '<'; + break; + case SOAP_GT: + if (d == ' ') + { + soap_unget(soap, c); + *s = '\0'; + *n = i + 1; + return SOAP_OK; + } + *s++ = '>'; + break; + case SOAP_QT: + if (c == d) + { + *s = '\0'; + *n = i + 1; + return SOAP_OK; + } + *s++ = '"'; + break; + case SOAP_AP: + if (c == d) + { + *s = '\0'; + *n = i + 1; + return SOAP_OK; + } + *s++ = '\''; + break; + case '\t': + case '\n': + case '\r': + case ' ': + case '/': + if (d == ' ') + { + soap_unget(soap, c); + *s = '\0'; + *n = i + 1; + return SOAP_OK; + } + *s++ = (char)c; + break; + default: + if ((int)c == EOF) + { + *s = '\0'; + *n = i + 1; + return soap->error = SOAP_CHK_EOF; + } + *s++ = (char)c; + } + } + return soap->error = SOAP_EOM; +} + +/******************************************************************************/ + +#ifdef WITH_FAST +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_store_lab(struct soap *soap, const char *s, size_t n) +{ + soap->labidx = 0; + return soap_append_lab(soap, s, n); +} +#endif + +/******************************************************************************/ + +#ifdef WITH_FAST +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_append_lab(struct soap *soap, const char *s, size_t n) +{ + if (soap->labidx + n < soap->labidx) + return soap->error = SOAP_EOM; + if (soap->labidx + n >= soap->lablen) + { + char *t = soap->labbuf; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Enlarging look-aside buffer to append data, size=%lu\n", (unsigned long)soap->lablen)); + if (soap->lablen == 0) + soap->lablen = SOAP_LABLEN; + while (soap->labidx + n >= soap->lablen) + { + if (soap->lablen << 1 < soap->lablen) + return soap->error = SOAP_EOM; + soap->lablen <<= 1; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "New look-aside buffer size=%lu\n", (unsigned long)soap->lablen)); + if (SOAP_MAXALLOCSIZE > 0 && soap->lablen > SOAP_MAXALLOCSIZE) + return soap->error = SOAP_EOM; + soap->labbuf = (char*)SOAP_MALLOC(soap, soap->lablen); + if (!soap->labbuf) + { + if (t) + SOAP_FREE(soap, t); + return soap->error = SOAP_EOM; + } + if (t) + { + (void)soap_memcpy((void*)soap->labbuf, soap->lablen, (const void*)t, soap->labidx); + SOAP_FREE(soap, t); + } + } + if (s) + { + (void)soap_memcpy((void*)(soap->labbuf + soap->labidx), soap->lablen - soap->labidx, (const void*)s, n); + soap->labidx += n; + } + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_peek_element(struct soap *soap) +{ +#ifdef WITH_DOM + struct soap_dom_attribute **att = NULL; + char *lead = NULL; +#endif + struct soap_attribute *tp, *tq = NULL; + const char *t; + char *s; + soap_wchar c; + int i; + if (soap->peeked) + { + if (!*soap->tag) + return soap->error = SOAP_NO_TAG; + return SOAP_OK; + } + soap->peeked = 1; + soap->id[0] = '\0'; + soap->href[0] = '\0'; + soap->type[0] = '\0'; + soap->arrayType[0] = '\0'; + soap->arraySize[0] = '\0'; + soap->arrayOffset[0] = '\0'; + soap->other = 0; + soap->root = -1; + soap->position = 0; + soap->null = 0; + soap->mustUnderstand = 0; + /* UTF-8 BOM? */ + c = soap_getchar(soap); + if (c == 0xEF && soap_get0(soap) == 0xBB) + { + soap_get1(soap); + c = soap_get1(soap); + if (c == 0xBF) + soap->mode &= ~SOAP_ENC_LATIN; + else + soap_unget(soap, (0x0F << 12) | (0xBB << 6) | (c & 0x3F)); /* UTF-8 */ + } + else if ((c == 0xFE && soap_get0(soap) == 0xFF) /* UTF-16 BE */ + || (c == 0xFF && soap_get0(soap) == 0xFE)) /* UTF-16 LE */ + { + return soap->error = SOAP_UTF_ERROR; + } + else + { + soap_unget(soap, c); + } + c = soap_get(soap); +#ifdef WITH_DOM + /* whitespace leading up to the start tag is significant for DOM as-is (but comments and PIs are removed from this lead) */ + if (soap_coblank(c)) + { + soap->labidx = 0; + do + { + if (soap_append_lab(soap, NULL, 0)) + return soap->error; + s = soap->labbuf + soap->labidx; + i = soap->lablen - soap->labidx; + soap->labidx = soap->lablen; + while (soap_coblank(c) && i-- > 0) + { + *s++ = c; + c = soap_get(soap); + } + } while (soap_coblank(c) || i == 0); + *s = '\0'; + lead = soap->labbuf; + } +#else + /* skip space */ + while (soap_coblank(c)) + c = soap_get(soap); +#endif + if (c != SOAP_LT) + { + *soap->tag = '\0'; + if ((int)c == EOF) + return soap->error = SOAP_CHK_EOF; + soap_unget(soap, c); +#ifdef WITH_DOM + /* whitespace leading up to the end tag is significant for DOM as-is */ + if ((soap->mode & SOAP_XML_DOM) && soap->dom) + { + if (lead && *lead) + soap->dom->tail = soap_strdup(soap, lead); + else + soap->dom->tail = SOAP_STR_EOS; /* body with closing tag instead of */ + } +#endif + return soap->error = SOAP_NO_TAG; + } + do + { + c = soap_get1(soap); + } while (soap_coblank(c)); + s = soap->tag; + i = sizeof(soap->tag); + while (c != '>' && c != '/' && c > 32 && (int)c != EOF) + { + if (i > 1) + { + *s++ = (char)c; + i--; + } + c = soap_get1(soap); + } + *s = '\0'; + while (soap_coblank(c)) + c = soap_get1(soap); +#ifdef WITH_DOM + if ((soap->mode & SOAP_XML_DOM)) + { + struct soap_dom_element *elt; + elt = (struct soap_dom_element*)soap_malloc(soap, sizeof(struct soap_dom_element)); + if (!elt) + return soap->error; + elt->next = NULL; + elt->prnt = soap->dom; + elt->elts = NULL; + elt->atts = NULL; + elt->nstr = NULL; + elt->name = soap_strdup(soap, soap->tag); + elt->text = NULL; + elt->code = NULL; + elt->tail = NULL; + elt->node = NULL; + elt->type = 0; + if (lead && *lead) + elt->lead = soap_strdup(soap, lead); + else + elt->lead = NULL; + elt->soap = soap; + if (soap->dom) + { + struct soap_dom_element *p = soap->dom->elts; + if (p) + { + while (p->next) + p = p->next; + p->next = elt; + } + else + { + soap->dom->elts = elt; + } + } + soap->dom = elt; + att = &elt->atts; + if (!elt->name) + return soap->error = SOAP_EOM; + } +#endif + soap_pop_namespace(soap); + for (tp = soap->attributes; tp; tp = tp->next) + tp->visible = 0; + while ((int)c != EOF && c != '>' && c != '/') + { + s = soap->tmpbuf; + i = sizeof(soap->tmpbuf); + while (c != '=' && c != '>' && c != '/' && c > 32 && (int)c != EOF) + { + if (i > 1) + { + *s++ = (char)c; + i--; + } + c = soap_get1(soap); + } + *s = '\0'; + if (i == sizeof(soap->tmpbuf)) + return soap->error = SOAP_SYNTAX_ERROR; +#ifdef WITH_DOM + /* add attribute name to dom */ + if (att) + { + *att = (struct soap_dom_attribute*)soap_malloc(soap, sizeof(struct soap_dom_attribute)); + if (!*att) + return soap->error; + (*att)->next = NULL; + (*att)->nstr = NULL; + (*att)->name = soap_strdup(soap, soap->tmpbuf); + (*att)->text = NULL; + (*att)->soap = soap; + if (!(*att)->name) + return soap->error = SOAP_EOM; + } +#endif + if (!strncmp(soap->tmpbuf, "xmlns", 5)) + { + if (soap->tmpbuf[5] == ':') + t = soap->tmpbuf + 6; + else if (soap->tmpbuf[5]) + t = NULL; + else + t = SOAP_STR_EOS; + } + else + { + t = NULL; + } + tq = NULL; + for (tp = soap->attributes; tp; tq = tp, tp = tp->next) + { + if (!SOAP_STRCMP(tp->name, soap->tmpbuf)) + break; + } + if (!tp) + { + size_t l = strlen(soap->tmpbuf); + tp = (struct soap_attribute*)SOAP_MALLOC(soap, sizeof(struct soap_attribute) + l); + if (!tp) + return soap->error = SOAP_EOM; + (void)soap_memcpy((char*)tp->name, l + 1, soap->tmpbuf, l + 1); + tp->value = NULL; + tp->size = 0; + tp->ns = NULL; + tp->visible = 0; + /* append attribute to the end of the list */ + if (tq) + { + tq->next = tp; + tp->next = NULL; + } + else + { + tp->next = soap->attributes; + soap->attributes = tp; + } + } + while (soap_coblank(c)) + c = soap_get1(soap); + if (c == '=') + { + size_t k; + do + { + c = soap_getutf8(soap); + } while (soap_coblank(c)); + if (c != SOAP_QT && c != SOAP_AP) + { + soap_unget(soap, c); + c = ' '; /* blank delimiter */ + } + k = tp->size; + if (soap_getattrval(soap, tp->value, &k, c)) + { +#ifdef WITH_FAST + if (soap->error != SOAP_EOM) + return soap->error; + soap->error = SOAP_OK; + if (soap_store_lab(soap, tp->value, k)) + return soap->error; + if (tp->value) + SOAP_FREE(soap, tp->value); + tp->value = NULL; + for (;;) + { + k = soap->lablen - soap->labidx; + if (soap_getattrval(soap, soap->labbuf + soap->labidx, &k, c)) + { + if (soap->error != SOAP_EOM) + return soap->error; + soap->error = SOAP_OK; + soap->labidx = soap->lablen; + if (soap_append_lab(soap, NULL, 0)) + return soap->error; + } + else + { + break; + } + } + if (soap->labidx) + { + tp->size = soap->lablen; + } + else + { + tp->size = strlen(soap->labbuf) + 1; + if (tp->size < SOAP_LABLEN) + tp->size = SOAP_LABLEN; + } + tp->value = (char*)SOAP_MALLOC(soap, tp->size); + if (!tp->value) + return soap->error = SOAP_EOM; + soap_strcpy(tp->value, tp->size, soap->labbuf); +#else + tp->size = k; + if (soap->error != SOAP_EOM) + return soap->error; + soap->error = SOAP_OK; + if (soap_alloc_block(soap) == NULL) + return soap->error; + for (;;) + { + s = (char*)soap_push_block(soap, NULL, SOAP_BLKLEN); + if (!s) + return soap->error; + k = SOAP_BLKLEN; + if (soap_getattrval(soap, s, &k, c)) + { + if (soap->error != SOAP_EOM) + return soap->error; + soap->error = SOAP_OK; + soap_size_block(soap, NULL, k); + } + else + { + break; + } + } + k = tp->size + soap->blist->size; + if (SOAP_MAXALLOCSIZE > 0 && k > SOAP_MAXALLOCSIZE) + return soap->error = SOAP_EOM; + s = (char*)SOAP_MALLOC(soap, k); + if (!s) + return soap->error = SOAP_EOM; + if (tp->value) + { + (void)soap_memcpy((void*)s, k, (const void*)tp->value, tp->size); + SOAP_FREE(soap, tp->value); + } + soap_save_block(soap, NULL, s + tp->size, 0); + tp->value = s; + tp->size = k; +#endif + } + if (tp->visible) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Duplicate attribute in %s\n", soap->tag)); + return soap->error = SOAP_SYNTAX_ERROR; /* redefined (duplicate) attribute */ + } + tp->visible = 2; /* seen this attribute w/ value */ + do + { + c = soap_get1(soap); + } while (soap_coblank(c)); +#ifdef WITH_DOM + if (att && tp->value) + { + (*att)->text = soap_strdup(soap, tp->value); + if (!(*att)->text) + return soap->error = SOAP_EOM; + } +#endif + } + else + { + tp->visible = 1; /* seen this attribute w/o value */ + } +#ifdef WITH_DOM + if (att) + att = &(*att)->next; +#endif + if (t && tp->value) + { + if (soap_push_namespace(soap, t, tp->value) == NULL) + return soap->error; + } + } +#ifdef WITH_DOM + if (att) + { + soap->dom->nstr = soap_current_namespace_tag(soap, soap->tag); + for (att = &soap->dom->atts; *att; att = &(*att)->next) + (*att)->nstr = soap_current_namespace_att(soap, (*att)->name); + } +#endif + if ((int)c == EOF) + return soap->error = SOAP_CHK_EOF; + soap->body = (c != '/'); + if (!soap->body) + { + do + { + c = soap_get1(soap); + } while (soap_coblank(c)); + } +#ifdef WITH_DOM + if ((soap->mode & SOAP_XML_DOM)) + { + if (!soap->body && soap->dom->prnt) + soap->dom = soap->dom->prnt; + } +#endif + for (tp = soap->attributes; tp; tp = tp->next) + { + if (tp->visible && tp->value) + { +#ifndef WITH_NOIDREF + if (!strcmp(tp->name, "id")) + { + if ((soap->version > 0 && !(soap->imode & SOAP_XML_TREE)) + || (soap->mode & SOAP_XML_GRAPH)) + { + *soap->id = '#'; + soap_strcpy(soap->id + 1, sizeof(soap->id) - 1, tp->value); + } + } + else if (!strcmp(tp->name, "href")) + { + if ((soap->version == 1 && !(soap->imode & SOAP_XML_TREE)) + || (soap->mode & SOAP_XML_GRAPH) + || ((soap->mode & (SOAP_ENC_MTOM | SOAP_ENC_DIME)) && *tp->value != '#')) + soap_strcpy(soap->href, sizeof(soap->href), tp->value); + } + else if (!strcmp(tp->name, "ref")) + { + if ((soap->version == 2 && !(soap->imode & SOAP_XML_TREE)) + || (soap->mode & SOAP_XML_GRAPH)) + { + *soap->href = '#'; + soap_strcpy(soap->href + (*tp->value != '#'), sizeof(soap->href) - 1, tp->value); + } + } +#else + if (!strcmp(tp->name, "href")) + { + if ((soap->mode & (SOAP_ENC_MTOM | SOAP_ENC_DIME)) && *tp->value != '#') + soap_strcpy(soap->href, sizeof(soap->href), tp->value); + } +#endif + else if (!soap_match_tag(soap, tp->name, "xsi:type")) + { + soap_strcpy(soap->type, sizeof(soap->type), tp->value); + } + else if ((!soap_match_tag(soap, tp->name, "xsi:null") + || !soap_match_tag(soap, tp->name, "xsi:nil")) + && (!strcmp(tp->value, "1") + || !strcmp(tp->value, "true"))) + { + soap->null = 1; + } + else if (!soap_match_tag(soap, tp->name, "SOAP-ENV:encodingStyle")) + { + if (!soap->encodingStyle) + soap->encodingStyle = SOAP_STR_EOS; + soap_version(soap); + } + else if (soap->version == 1) + { + if (!soap_match_tag(soap, tp->name, "SOAP-ENC:arrayType")) + { + s = soap_strrchr(tp->value, '['); + if (s && (size_t)(s - tp->value) < sizeof(soap->arrayType)) + { + (void)soap_strncpy(soap->arrayType, sizeof(soap->arrayType), tp->value, s - tp->value); + soap_strcpy(soap->arraySize, sizeof(soap->arraySize), s); + } + else + soap_strcpy(soap->arrayType, sizeof(soap->arrayType), tp->value); + } + else if (!soap_match_tag(soap, tp->name, "SOAP-ENC:offset")) + { + soap_strcpy(soap->arrayOffset, sizeof(soap->arrayOffset), tp->value); + } + else if (!soap_match_tag(soap, tp->name, "SOAP-ENC:position")) + { + soap->position = soap_getposition(tp->value, soap->positions); + } + else if (!soap_match_tag(soap, tp->name, "SOAP-ENC:root")) + { + soap->root = ((!strcmp(tp->value, "1") || !strcmp(tp->value, "true"))); + } + else if (!soap_match_tag(soap, tp->name, "SOAP-ENV:mustUnderstand") + && (!strcmp(tp->value, "1") || !strcmp(tp->value, "true"))) + { + soap->mustUnderstand = 1; + } + else if (!soap_match_tag(soap, tp->name, "SOAP-ENV:actor")) + { + if ((!soap->actor || strcmp(soap->actor, tp->value)) + && strcmp(tp->value, "http://schemas.xmlsoap.org/soap/actor/next")) + soap->other = 1; + } + } + else if (soap->version == 2) + { +#ifndef WITH_NOIDREF + if (!soap_match_tag(soap, tp->name, "SOAP-ENC:id")) + { + *soap->id = '#'; + soap_strcpy(soap->id + 1, sizeof(soap->id) - 1, tp->value); + } + else if (!soap_match_tag(soap, tp->name, "SOAP-ENC:ref")) + { + *soap->href = '#'; + soap_strcpy(soap->href + (*tp->value != '#'), sizeof(soap->href) - 1, tp->value); + } + else +#endif + if (!soap_match_tag(soap, tp->name, "SOAP-ENC:itemType")) + { + soap_strcpy(soap->arrayType, sizeof(soap->arrayType), tp->value); + } + else if (!soap_match_tag(soap, tp->name, "SOAP-ENC:arraySize")) + { + soap_strcpy(soap->arraySize, sizeof(soap->arraySize), tp->value); + } + else if (!soap_match_tag(soap, tp->name, "SOAP-ENV:mustUnderstand") + && (!strcmp(tp->value, "1") || !strcmp(tp->value, "true"))) + { + soap->mustUnderstand = 1; + } + else if (!soap_match_tag(soap, tp->name, "SOAP-ENV:role")) + { + if ((!soap->actor || strcmp(soap->actor, tp->value)) + && strcmp(tp->value, "http://www.w3.org/2003/05/soap-envelope/role/next")) + soap->other = 1; + } + } + else + { + if (!soap_match_tag(soap, tp->name, "wsdl:required") && !strcmp(tp->value, "true")) + soap->mustUnderstand = 1; + } + } + } +#ifdef WITH_DOM + if (soap->feltbegin) + return soap->error = soap->feltbegin(soap, soap->tag); +#endif + return soap->error = SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_retry(struct soap *soap) +{ + soap->error = SOAP_OK; + soap_revert(soap); +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_revert(struct soap *soap) +{ + if (!soap->peeked) + { + soap->peeked = 1; + if (soap->body) + soap->level--; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Reverting to last element '%s' (level=%u)\n", soap->tag, soap->level)); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_ignore(struct soap *soap) +{ + int n = 0; + soap_wchar c; + soap->level++; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Ignoring XML content at level=%u\n", soap->level)); +#ifdef WITH_DOM + if ((soap->mode & SOAP_XML_DOM) && soap->dom) + { + if (!soap_string_in(soap, -1, -1, -1, NULL)) + return soap->error; + } + else +#endif + { + for (;;) + { + c = soap_get(soap); + switch (c) + { + case SOAP_TT: + if (n == 0) + goto end; + n--; + break; + case SOAP_LT: + n++; + break; + case '/': + if (n > 0) + { + c = soap_get0(soap); + if (c == '>') + n--; + } + break; + default: + if ((int)c == EOF) + return soap->error = SOAP_EOF; + } + } +end: + soap_unget(soap, c); + } + return soap_element_end_in(soap, NULL); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_string_out(struct soap *soap, const char *s, int flag) +{ + const char *t; + soap_wchar c; + soap_wchar mask = (soap_wchar)0xFFFFFF80UL; +#ifdef WITH_DOM + if ((soap->mode & SOAP_XML_DOM) && soap->dom) + { + soap->dom->text = soap_strdup(soap, s); + if (!soap->dom->text) + return soap->error = SOAP_EOM; + return SOAP_OK; + } +#endif + if (flag == 2 || (soap->mode & SOAP_C_UTFSTRING)) + mask = 0; + t = s; + while ((c = *t++)) + { + switch (c) + { + case 0x09: + if (flag) + { + if (soap_send_raw(soap, s, t - s - 1) || soap_send_raw(soap, " ", 5)) + return soap->error; + s = t; + } + break; + case 0x0A: + if (flag || !(soap->mode & SOAP_XML_CANONICAL)) + { + if (soap_send_raw(soap, s, t - s - 1) || soap_send_raw(soap, " ", 5)) + return soap->error; + s = t; + } + break; + case '&': + if (soap_send_raw(soap, s, t - s - 1) || soap_send_raw(soap, "&", 5)) + return soap->error; + s = t; + break; + case '<': + if (soap_send_raw(soap, s, t - s - 1) || soap_send_raw(soap, "<", 4)) + return soap->error; + s = t; + break; + case '>': + if (!flag) + { + if (soap_send_raw(soap, s, t - s - 1) || soap_send_raw(soap, ">", 4)) + return soap->error; + s = t; + } + break; + case '"': + if (flag) + { + if (soap_send_raw(soap, s, t - s - 1) || soap_send_raw(soap, """, 6)) + return soap->error; + s = t; + } + break; + case 0x7F: + if (soap_send_raw(soap, s, t - s - 1) || soap_send_raw(soap, "", 6)) + return soap->error; + s = t; + break; + default: +#ifndef WITH_LEANER +#ifdef HAVE_MBTOWC + if ((soap->mode & SOAP_C_MBSTRING)) + { + wchar_t wc; + int m = mbtowc(&wc, t - 1, MB_CUR_MAX); + if (m > 0 && !((soap_wchar)wc == c && m == 1 && c < 0x80)) + { + if (soap_send_raw(soap, s, t - s - 1) || soap_pututf8(soap, (unsigned long)wc)) + return soap->error; + s = t += m - 1; + continue; + } + } +#endif +#endif +#ifndef WITH_NOSTRINGTOUTF8 + if ((c & mask) || !(c & 0xFFFFFFE0UL)) + { + if (soap_send_raw(soap, s, t - s - 1) || soap_pututf8(soap, (unsigned char)c)) + return soap->error; + s = t; + } +#endif + } + } + return soap_send_raw(soap, s, t - s - 1); +} + +/******************************************************************************/ + +SOAP_FMAC1 +char * +SOAP_FMAC2 +soap_string_in(struct soap *soap, int flag, long minlen, long maxlen, const char *pattern) +{ + char *s; + char *t = NULL; + size_t i; + ULONG64 l = 0; + int n = 0, f = 0, m = 0; + soap_wchar c; +#if !defined(WITH_LEANER) && defined(HAVE_WCTOMB) + char buf[MB_LEN_MAX > 8 ? MB_LEN_MAX : 8]; +#else + char buf[8]; +#endif + if (maxlen < 0 && soap->maxlength > 0) + maxlen = soap->maxlength; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Reading string content, flag=%d\n", flag)); + if (flag <= 0 && soap->peeked && *soap->tag) + { +#ifndef WITH_LEAN + struct soap_attribute *tp; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "String content includes tag '%s' and attributes\n", soap->tag)); + t = soap->tmpbuf; + *t = '<'; + soap_strcpy(t + 1, sizeof(soap->tmpbuf) - 1, soap->tag); + t += strlen(t); + for (tp = soap->attributes; tp; tp = tp->next) + { + if (tp->visible) + { + size_t k = strlen(tp->name); + if (t + k + 1 >= soap->tmpbuf + sizeof(soap->tmpbuf)) + break; /* too many or attribute values to large */ + *t++ = ' '; + (void)soap_strncpy(t, sizeof(soap->tmpbuf) - (t - soap->tmpbuf), tp->name, k); + t += k; + if (tp->value) + { + k = strlen(tp->value); + if (t + k + 3 >= soap->tmpbuf + sizeof(soap->tmpbuf)) + break; /* too many or attribute values to large */ + *t++ = '='; + *t++ = '"'; + (void)soap_strncpy(t, sizeof(soap->tmpbuf) - (t - soap->tmpbuf), tp->value, k); + t += k; + *t++ = '"'; + } + } + } + if (!soap->body) + *t++ = '/'; + *t++ = '>'; + *t = '\0'; + t = soap->tmpbuf; + m = (int)strlen(soap->tmpbuf); +#endif + if (soap->body) + n = 1; + f = 1; + soap->peeked = 0; + } +#ifdef WITH_CDATA + if (flag <= 0) + { + int state = 0; +#ifdef WITH_FAST + soap->labidx = 0; /* use look-aside buffer */ +#else + if (soap_alloc_block(soap) == NULL) + return NULL; +#endif + for (;;) + { +#ifdef WITH_FAST + size_t k; + if (soap_append_lab(soap, NULL, 0)) /* allocate more space in look-aside buffer if necessary */ + return NULL; + s = soap->labbuf + soap->labidx; /* space to populate */ + k = soap->lablen - soap->labidx; /* number of bytes available */ + soap->labidx = soap->lablen; /* claim this space */ +#else + size_t k = SOAP_BLKLEN; + s = (char*)soap_push_block(soap, NULL, k); + if (!s) + return NULL; +#endif + for (i = 0; i < k; i++) + { + if (m > 0) + { + *s++ = *t++; /* copy multibyte characters */ + m--; + continue; + } + c = soap_getchar(soap); + if ((int)c == EOF) + goto end; + if ((c >= 0x80 || c < SOAP_AP) && state != 1 && !(soap->mode & SOAP_ENC_LATIN)) + { + if ((c & 0x7FFFFFFF) >= 0x80) + { + soap_unget(soap, c); + c = soap_getutf8(soap); + } + if ((c & 0x7FFFFFFF) >= 0x80 && (flag <= 0 || (soap->mode & SOAP_C_UTFSTRING))) + { + c &= 0x7FFFFFFF; + t = buf; + if (c < 0x0800) + *t++ = (char)(0xC0 | ((c >> 6) & 0x1F)); + else + { +#ifdef WITH_REPLACE_ILLEGAL_UTF8 + if (!((c >= 0x80 && c <= 0xD7FF) || (c >= 0xE000 && c <= 0xFFFD) || (c >= 0x10000 && c <= 0x10FFFF))) + c = SOAP_UNKNOWN_UNICODE_CHAR; +#endif + if (c < 0x010000) + { + *t++ = (char)(0xE0 | ((c >> 12) & 0x0F)); + } + else + { + if (c < 0x200000) + { + *t++ = (char)(0xF0 | ((c >> 18) & 0x07)); + } + else + { + if (c < 0x04000000) + { + *t++ = (char)(0xF8 | ((c >> 24) & 0x03)); + } + else + { + *t++ = (char)(0xFC | ((c >> 30) & 0x01)); + *t++ = (char)(0x80 | ((c >> 24) & 0x3F)); + } + *t++ = (char)(0x80 | ((c >> 18) & 0x3F)); + } + *t++ = (char)(0x80 | ((c >> 12) & 0x3F)); + } + *t++ = (char)(0x80 | ((c >> 6) & 0x3F)); + } + *t++ = (char)(0x80 | (c & 0x3F)); + m = (int)(t - buf) - 1; + t = buf; + *s++ = *t++; + continue; + } + } + switch (state) + { + case 1: + if (c == ']') + state = 4; + *s++ = (char)c; + continue; + case 2: + if (c == '-') + state = 6; + *s++ = (char)c; + continue; + case 3: + if (c == '?') + state = 8; + *s++ = (char)c; + continue; + /* CDATA */ + case 4: + if (c == ']') + state = 5; + else + state = 1; + *s++ = (char)c; + continue; + case 5: + if (c == '>') + state = 0; + else if (c != ']') + state = 1; + *s++ = (char)c; + continue; + /* comment */ + case 6: + if (c == '-') + state = 7; + else + state = 2; + *s++ = (char)c; + continue; + case 7: + if (c == '>') + state = 0; + else if (c != '-') + state = 2; + *s++ = (char)c; + continue; + /* PI */ + case 8: + if (c == '>') + state = 0; + else if (c != '?') + state = 3; + *s++ = (char)c; + continue; + } + switch (c) + { + case SOAP_TT: + if (n == 0) + goto end; + n--; + *s++ = '<'; + t = (char*)"/"; + m = 1; + break; + case SOAP_LT: + if (flag == 3 || (f && n == 0)) + goto end; + n++; + *s++ = '<'; + break; + case SOAP_GT: + *s++ = '>'; + break; + case SOAP_QT: + *s++ = '"'; + break; + case SOAP_AP: + *s++ = '\''; + break; + case '/': + if (n > 0) + { + c = soap_getchar(soap); + if (c == '>') + n--; + soap_unget(soap, c); + } + *s++ = '/'; + break; + case '<': + c = soap_getchar(soap); + if (c == '/') + { + if (n == 0) + { + c = SOAP_TT; + goto end; + } + n--; + } + else if (c == '!') + { + c = soap_getchar(soap); + if (c == '[') + { + do + { + c = soap_getchar(soap); + } while ((int)c != EOF && c != '['); + if ((int)c == EOF) + goto end; + t = (char*)"![CDATA["; + m = 8; + state = 1; + } + else if (c == '-') + { + c = soap_getchar(soap); + if (c == '-') + state = 2; + t = (char*)"!-"; + m = 2; + soap_unget(soap, c); + } + else + { + t = (char*)"!"; + m = 1; + soap_unget(soap, c); + } + *s++ = '<'; + break; + } + else if (c == '?') + { + state = 3; + } + else if (flag == 3 || (f && n == 0)) + { + soap_revget1(soap); + c = '<'; + goto end; + } + else + n++; + soap_unget(soap, c); + *s++ = '<'; + break; + case '>': + *s++ = '>'; + break; + case '"': + *s++ = '"'; + break; + default: +#ifndef WITH_LEANER +#ifdef HAVE_WCTOMB + if ((soap->mode & SOAP_C_MBSTRING)) + { +#if defined(WIN32) && !defined(CYGWIN) && !defined(__MINGW32__) && !defined(__MINGW64__) && !defined(__BORLANDC__) + m = 0; + wctomb_s(&m, buf, sizeof(buf), (wchar_t)(c & 0x7FFFFFFF)); +#else + m = wctomb(buf, (wchar_t)(c & 0x7FFFFFFF)); +#endif + if (m >= 1 && m <= (int)MB_CUR_MAX) + { + t = buf; + *s++ = *t++; + m--; + } + else + { + *s++ = SOAP_UNKNOWN_CHAR; + m = 0; + } + } + else +#endif +#endif + *s++ = (char)(c & 0xFF); + } + l++; + if (maxlen >= 0 && l > (size_t)maxlen) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "String too long: maxlen=%ld\n", maxlen)); + soap->error = SOAP_LENGTH; + return NULL; + } + } + } + } +#endif +#ifdef WITH_FAST + soap->labidx = 0; /* use look-aside buffer */ +#else + if (soap_alloc_block(soap) == NULL) + return NULL; +#endif + for (;;) + { +#ifdef WITH_FAST + size_t k; + if (soap_append_lab(soap, NULL, 0)) /* allocate more space in look-aside buffer if necessary */ + return NULL; + s = soap->labbuf + soap->labidx; /* space to populate */ + k = soap->lablen - soap->labidx; /* number of bytes available */ + soap->labidx = soap->lablen; /* claim this space */ +#else + size_t k = SOAP_BLKLEN; + s = (char*)soap_push_block(soap, NULL, k); + if (!s) + return NULL; +#endif + for (i = 0; i < k; i++) + { + if (m > 0) + { + *s++ = *t++; /* copy multibyte characters */ + m--; + continue; + } +#ifndef WITH_CDATA + if (flag <= 0) + c = soap_getchar(soap); + else +#endif + { + c = soap_getutf8(soap); + if ((soap->mode & SOAP_C_UTFSTRING)) + { + if (c >= 0x80 || (c < SOAP_AP && c >= -0x7FFFFF80)) + { + c &= 0x7FFFFFFF; + t = buf; + if (c < 0x0800) + { + *t++ = (char)(0xC0 | ((c >> 6) & 0x1F)); + } + else + { +#ifdef WITH_REPLACE_ILLEGAL_UTF8 + if (!((c >= 0x80 && c <= 0xD7FF) || (c >= 0xE000 && c <= 0xFFFD) || (c >= 0x10000 && c <= 0x10FFFF))) + c = SOAP_UNKNOWN_UNICODE_CHAR; +#endif + if (c < 0x010000) + { + *t++ = (char)(0xE0 | ((c >> 12) & 0x0F)); + } + else + { + if (c < 0x200000) + { + *t++ = (char)(0xF0 | ((c >> 18) & 0x07)); + } + else + { + if (c < 0x04000000) + { + *t++ = (char)(0xF8 | ((c >> 24) & 0x03)); + } + else + { + *t++ = (char)(0xFC | ((c >> 30) & 0x01)); + *t++ = (char)(0x80 | ((c >> 24) & 0x3F)); + } + *t++ = (char)(0x80 | ((c >> 18) & 0x3F)); + } + *t++ = (char)(0x80 | ((c >> 12) & 0x3F)); + } + *t++ = (char)(0x80 | ((c >> 6) & 0x3F)); + } + *t++ = (char)(0x80 | (c & 0x3F)); + m = (int)(t - buf) - 1; + t = buf; + *s++ = *t++; + l++; + if (maxlen >= 0 && l > (size_t)maxlen) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "String too long: maxlen=%ld\n", maxlen)); + soap->error = SOAP_LENGTH; + return NULL; + } + continue; + } + } + } + switch (c) + { + case SOAP_TT: + if (n == 0) + goto end; + n--; + *s++ = '<'; + t = (char*)"/"; + m = 1; + break; + case SOAP_LT: + if (flag == 3 || (f && n == 0)) + goto end; + n++; + *s++ = '<'; + break; + case SOAP_GT: + *s++ = '>'; + break; + case SOAP_QT: + *s++ = '"'; + break; + case SOAP_AP: + *s++ = '\''; + break; + case '/': + if (n > 0) + { + if (flag > 0) + { + c = soap_get(soap); + if (c == SOAP_GT) + n--; + } + else + { + c = soap_getchar(soap); + if (c == '>') + n--; + } + soap_unget(soap, c); + } + *s++ = '/'; + break; + case (soap_wchar)('<' | 0x80000000): + if (flag > 0) + { + *s++ = '<'; + } + else + { + *s++ = '&'; + t = (char*)"lt;"; + m = 3; + } + break; + case (soap_wchar)('>' | 0x80000000): + if (flag > 0) + { + *s++ = '>'; + } + else + { + *s++ = '&'; + t = (char*)"gt;"; + m = 3; + } + break; + case (soap_wchar)('&' | 0x80000000): + if (flag > 0) + { + *s++ = '&'; + } + else + { + *s++ = '&'; + t = (char*)"amp;"; + m = 4; + } + break; + case (soap_wchar)('"' | 0x80000000): + if (flag > 0) + { + *s++ = '"'; + } + else + { + *s++ = '&'; + t = (char*)"quot;"; + m = 5; + } + break; + case (soap_wchar)('\'' | 0x80000000): + if (flag > 0) + { + *s++ = '\''; + } + else + { + *s++ = '&'; + t = (char*)"apos;"; + m = 5; + } + break; + default: + if ((int)c == EOF) + goto end; +#ifndef WITH_CDATA + if (c == '<') + { + c = soap_getchar(soap); + soap_unget(soap, c); + if (c == '/') + { + c = SOAP_TT; + if (n == 0) + goto end; + n--; + } + else + { + n++; + } + *s++ = '<'; + } + else +#endif +#ifndef WITH_LEANER +#ifdef HAVE_WCTOMB + if ((soap->mode & SOAP_C_MBSTRING)) + { +#if defined(WIN32) && !defined(CYGWIN) && !defined(__MINGW32__) && !defined(__MINGW64__) && !defined(__BORLANDC__) + m = 0; + wctomb_s(&m, buf, sizeof(buf), (wchar_t)(c & 0x7FFFFFFF)); +#else + m = wctomb(buf, (wchar_t)(c & 0x7FFFFFFF)); +#endif + if (m >= 1 && m <= (int)MB_CUR_MAX) + { + t = buf; + *s++ = *t++; + m--; + } + else + { + *s++ = SOAP_UNKNOWN_CHAR; + m = 0; + } + } + else +#endif +#endif + *s++ = (char)(c & 0xFF); + } + l++; + if (maxlen >= 0 && l > (size_t)maxlen) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "String too long: maxlen=%ld\n", maxlen)); + soap->error = SOAP_LENGTH; + return NULL; + } + } + } +end: + soap_unget(soap, c); + *s = '\0'; +#ifdef WITH_FAST + t = soap_strdup(soap, soap->labbuf); + if (!t) + return NULL; +#else + soap_size_block(soap, NULL, i + 1); + t = soap_save_block(soap, NULL, NULL, 0); +#endif + if (minlen > 0 && l < (size_t)minlen) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "String too short: %lu chars, minlen=%ld\n", (unsigned long)l, minlen)); + soap->error = SOAP_LENGTH; + return NULL; + } +#ifdef WITH_DOM + if ((soap->mode & SOAP_XML_DOM) && soap->dom && *t) + { + if (flag > 0) + soap->dom->text = t; + else + soap->dom->code = t; + } +#endif + if (flag == 2) + { + if (soap_s2QName(soap, t, &t, minlen, maxlen, pattern)) + return NULL; + } + else if (flag >= 4 && t) + { + t = soap_collapse(soap, t, flag, 1); + } +#ifndef WITH_LEANER + else if (pattern && soap->fsvalidate) + { + soap->error = soap->fsvalidate(soap, pattern, t); + if (soap->error) + return NULL; + } +#endif + return t; +} + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_wstring_out(struct soap *soap, const wchar_t *s, int flag) +{ + const char *t; + char tmp; + soap_wchar c; +#ifdef WITH_DOM + if ((soap->mode & SOAP_XML_DOM) && soap->dom) + { + soap->dom->text = soap_wchar2s(soap, s); + return SOAP_OK; + } +#endif + while ((c = *s++)) + { + switch (c) + { + case 0x09: + if (flag) + t = " "; + else + t = "\t"; + break; + case 0x0A: + if (flag || !(soap->mode & SOAP_XML_CANONICAL)) + t = " "; + else + t = "\n"; + break; + case 0x0D: + t = " "; + break; + case '&': + t = "&"; + break; + case '<': + t = "<"; + break; + case '>': + if (flag) + t = ">"; + else + t = ">"; + break; + case '"': + if (flag) + t = """; + else + t = "\""; + break; + default: + if (c >= 0x20 && c < 0x80) + { + tmp = (char)c; + if (soap_send_raw(soap, &tmp, 1)) + return soap->error; + } + else + { + /* check for UTF16 encoding when wchar_t is too small to hold UCS */ + if (sizeof(wchar_t) < 4 && (c & 0xFC00) == 0xD800) + { + soap_wchar d = *s; + if ((d & 0xFC00) == 0xDC00) + { + c = ((c - 0xD800) << 10) + (d - 0xDC00) + 0x10000; + s++; + } +#ifdef WITH_REPLACE_ILLEGAL_UTF8 + else + { + c = SOAP_UNKNOWN_UNICODE_CHAR; /* Malformed UTF-16 */ + } +#endif + } + if (soap_pututf8(soap, (unsigned long)c)) + return soap->error; + } + continue; + } + if (soap_send(soap, t)) + return soap->error; + } + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +wchar_t * +SOAP_FMAC2 +soap_wstring_in(struct soap *soap, int flag, long minlen, long maxlen, const char *pattern) +{ + wchar_t *s; + int i, n = 0, f = 0; + ULONG64 l = 0; + soap_wchar c; + char *t = NULL; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Reading wide string content\n")); + if (maxlen < 0 && soap->maxlength > 0) + maxlen = soap->maxlength; + if (flag <= 0 && soap->peeked && *soap->tag) + { +#ifndef WITH_LEAN + struct soap_attribute *tp; + t = soap->tmpbuf; + *t = '<'; + soap_strcpy(t + 1, sizeof(soap->tmpbuf) - 1, soap->tag); + t += strlen(t); + for (tp = soap->attributes; tp; tp = tp->next) + { + if (tp->visible) + { + size_t k = strlen(tp->name); + if (t + k + 1 >= soap->tmpbuf + sizeof(soap->tmpbuf)) + break; + *t++ = ' '; + (void)soap_strncpy(t, sizeof(soap->tmpbuf) - (t - soap->tmpbuf), tp->name, k); + t += k; + if (tp->value) + { + k = strlen(tp->value); + if (t + k + 3 >= soap->tmpbuf + sizeof(soap->tmpbuf)) + break; + *t++ = '='; + *t++ = '"'; + (void)soap_strncpy(t, sizeof(soap->tmpbuf) - (t - soap->tmpbuf), tp->value, k); + t += k; + *t++ = '"'; + } + } + } + if (!soap->body) + *t++ = '/'; + *t++ = '>'; + *t = '\0'; + t = soap->tmpbuf; +#endif + if (soap->body) + n = 1; + f = 1; + soap->peeked = 0; + } + if (soap_alloc_block(soap) == NULL) + return NULL; + for (;;) + { + s = (wchar_t*)soap_push_block(soap, NULL, sizeof(wchar_t)*SOAP_BLKLEN); + if (!s) + return NULL; + for (i = 0; i < SOAP_BLKLEN; i++) + { + if (t) + { + *s++ = (wchar_t)*t++; + if (!*t) + t = NULL; + continue; + } + c = soap_getutf8(soap); + switch (c) + { + case SOAP_TT: + if (n == 0) + goto end; + n--; + *s++ = L'<'; + soap_unget(soap, '/'); + break; + case SOAP_LT: + if (flag == 3 || (f && n == 0)) + goto end; + n++; + *s++ = L'<'; + break; + case SOAP_GT: + *s++ = L'>'; + break; + case SOAP_QT: + *s++ = L'"'; + break; + case SOAP_AP: + *s++ = L'\''; + break; + case '/': + if (n > 0) + { + c = soap_getutf8(soap); + if (c == SOAP_GT) + n--; + soap_unget(soap, c); + } + *s++ = L'/'; + break; + case '<': + if (flag > 0) + { + *s++ = L'<'; + } + else + { + *s++ = L'&'; + t = (char*)"lt;"; + } + break; + case '>': + if (flag > 0) + { + *s++ = L'>'; + } + else + { + *s++ = (wchar_t)'&'; + t = (char*)"gt;"; + } + break; + case '"': + if (flag > 0) + { + *s++ = L'"'; + } + else + { + *s++ = L'&'; + t = (char*)"quot;"; + } + break; + default: + if ((int)c == EOF) + goto end; + /* use UTF16 encoding when wchar_t is too small to hold UCS */ + if (sizeof(wchar_t) < 4 && c > 0xFFFF) + { + soap_wchar c1, c2; + c1 = 0xD800 - (0x10000 >> 10) + (c >> 10); + c2 = 0xDC00 + (c & 0x3FF); + c = c1; + soap_unget(soap, c2); + } + *s++ = (wchar_t)(c & 0x7FFFFFFF); + } + l++; + if (maxlen >= 0 && l > (size_t)maxlen) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "String too long: maxlen=%ld\n", maxlen)); + soap->error = SOAP_LENGTH; + return NULL; + } + } + } +end: + soap_unget(soap, c); + *s = L'\0'; + soap_size_block(soap, NULL, sizeof(wchar_t) * (i + 1)); + if (minlen > 0 && l < (size_t)minlen) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "String too short: %lu chars, minlen=%ld\n", (unsigned long)l, minlen)); + soap->error = SOAP_LENGTH; + return NULL; + } + s = (wchar_t*)soap_save_block(soap, NULL, NULL, 0); +#ifndef WITH_LEAN + if (flag >= 4 && s) + s = soap_wcollapse(soap, s, flag, 1); +#endif +#ifndef WITH_LEANER + if (pattern && soap->fwvalidate) + { + soap->error = soap->fwvalidate(soap, pattern, s); + if (soap->error) + return NULL; + } +#endif +#ifdef WITH_DOM + if ((soap->mode & SOAP_XML_DOM) && soap->dom) + soap->dom->text = soap_wchar2s(soap, s); +#endif + return s; +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_int2s(struct soap *soap, int n) +{ + return soap_long2s(soap, (long)n); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_outint(struct soap *soap, const char *tag, int id, const int *p, const char *type, int n) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) + || soap_string_out(soap, soap_long2s(soap, (long)*p), 0)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_s2int(struct soap *soap, const char *s, int *p) +{ + if (s) + { + long n; + char *r; + if (!*s) + return soap->error = SOAP_EMPTY; +#ifndef WITH_NOIO +#ifndef WITH_LEAN + soap_reset_errno; +#endif +#endif + n = soap_strtol(s, &r, 10); + if (s == r || *r +#ifndef WITH_LEAN + || n != (int)n +#endif +#ifndef WITH_NOIO +#ifndef WITH_LEAN + || soap_errno == SOAP_ERANGE +#endif +#endif + ) + soap->error = SOAP_TYPE; + *p = (int)n; + } + return soap->error; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int * +SOAP_FMAC2 +soap_inint(struct soap *soap, const char *tag, int *p, const char *type, int t) +{ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; +#ifndef WITH_LEAN + if (*soap->type + && soap_match_tag(soap, soap->type, type) + && soap_match_tag(soap, soap->type, ":int") + && soap_match_tag(soap, soap->type, ":short") + && soap_match_tag(soap, soap->type, ":byte")) + { + soap->error = SOAP_TYPE; + soap_revert(soap); + return NULL; + } +#else + (void)type; +#endif + p = (int*)soap_id_enter(soap, soap->id, p, t, sizeof(int), NULL, NULL, NULL, NULL); + if (!p) + return NULL; + if (*soap->href != '#') + { + int err = soap_s2int(soap, soap_value(soap), p); + if ((soap->body && soap_element_end_in(soap, tag)) || err) + return NULL; + } + else + { + p = (int*)soap_id_forward(soap, soap->href, p, 0, t, t, sizeof(int), 0, NULL, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return p; +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_long2s(struct soap *soap, long n) +{ + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), 20), "%ld", n); + return soap->tmpbuf; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_outlong(struct soap *soap, const char *tag, int id, const long *p, const char *type, int n) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) + || soap_string_out(soap, soap_long2s(soap, *p), 0)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_s2long(struct soap *soap, const char *s, long *p) +{ + if (s) + { + char *r; + if (!*s) + return soap->error = SOAP_EMPTY; +#ifndef WITH_NOIO +#ifndef WITH_LEAN + soap_reset_errno; +#endif +#endif + *p = soap_strtol(s, &r, 10); + if (s == r || *r +#ifndef WITH_NOIO +#ifndef WITH_LEAN + || soap_errno == SOAP_ERANGE +#endif +#endif + ) + soap->error = SOAP_TYPE; + } + return soap->error; +} + +/******************************************************************************/ + +SOAP_FMAC1 +long * +SOAP_FMAC2 +soap_inlong(struct soap *soap, const char *tag, long *p, const char *type, int t) +{ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; +#ifndef WITH_LEAN + if (*soap->type + && soap_match_tag(soap, soap->type, type) + && soap_match_tag(soap, soap->type, ":int") + && soap_match_tag(soap, soap->type, ":short") + && soap_match_tag(soap, soap->type, ":byte")) + { + soap->error = SOAP_TYPE; + soap_revert(soap); + return NULL; + } +#else + (void)type; +#endif + p = (long*)soap_id_enter(soap, soap->id, p, t, sizeof(long), NULL, NULL, NULL, NULL); + if (!p) + return NULL; + if (*soap->href != '#') + { + int err = soap_s2long(soap, soap_value(soap), p); + if ((soap->body && soap_element_end_in(soap, tag)) || err) + return NULL; + } + else + { + p = (long*)soap_id_forward(soap, soap->href, p, 0, t, t, sizeof(long), 0, NULL, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return p; +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_LONG642s(struct soap *soap, LONG64 n) +{ + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), 20), SOAP_LONG_FORMAT, n); + return soap->tmpbuf; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_outLONG64(struct soap *soap, const char *tag, int id, const LONG64 *p, const char *type, int n) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) + || soap_string_out(soap, soap_LONG642s(soap, *p), 0)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_s2LONG64(struct soap *soap, const char *s, LONG64 *p) +{ + if (s) + { + char *r; + if (!*s) + return soap->error = SOAP_EMPTY; +#ifndef WITH_NOIO +#ifndef WITH_LEAN + soap_reset_errno; +#endif +#endif + *p = soap_strtoll(s, &r, 10); + if (s == r || *r +#ifndef WITH_NOIO +#ifndef WITH_LEAN + || soap_errno == SOAP_ERANGE +#endif +#endif + ) + soap->error = SOAP_TYPE; + } + return soap->error; +} + +/******************************************************************************/ + +SOAP_FMAC1 +LONG64 * +SOAP_FMAC2 +soap_inLONG64(struct soap *soap, const char *tag, LONG64 *p, const char *type, int t) +{ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; +#ifndef WITH_LEAN + if (*soap->type + && soap_match_tag(soap, soap->type, type) + && soap_match_tag(soap, soap->type, ":integer") + && soap_match_tag(soap, soap->type, ":positiveInteger") + && soap_match_tag(soap, soap->type, ":negativeInteger") + && soap_match_tag(soap, soap->type, ":nonPositiveInteger") + && soap_match_tag(soap, soap->type, ":nonNegativeInteger") + && soap_match_tag(soap, soap->type, ":long") + && soap_match_tag(soap, soap->type, ":int") + && soap_match_tag(soap, soap->type, ":short") + && soap_match_tag(soap, soap->type, ":byte")) + { + soap->error = SOAP_TYPE; + soap_revert(soap); + return NULL; + } +#else + (void)type; +#endif + p = (LONG64*)soap_id_enter(soap, soap->id, p, t, sizeof(LONG64), NULL, NULL, NULL, NULL); + if (!p) + return NULL; + if (*soap->href != '#') + { + int err = soap_s2LONG64(soap, soap_value(soap), p); + if ((soap->body && soap_element_end_in(soap, tag)) || err) + return NULL; + } + else + { + p = (LONG64*)soap_id_forward(soap, soap->href, p, 0, t, t, sizeof(LONG64), 0, NULL, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return p; +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_byte2s(struct soap *soap, char n) +{ + return soap_long2s(soap, (long)n); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_outbyte(struct soap *soap, const char *tag, int id, const char *p, const char *type, int n) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) + || soap_string_out(soap, soap_long2s(soap, (long)*p), 0)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_s2byte(struct soap *soap, const char *s, char *p) +{ + if (s) + { + long n; + char *r; + if (!*s) + return soap->error = SOAP_EMPTY; + n = soap_strtol(s, &r, 10); + if (s == r || *r || n < -128 || n > 127) + soap->error = SOAP_TYPE; + *p = (char)n; + } + return soap->error; +} + +/******************************************************************************/ + +SOAP_FMAC1 +char * +SOAP_FMAC2 +soap_inbyte(struct soap *soap, const char *tag, char *p, const char *type, int t) +{ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; +#ifndef WITH_LEAN + if (*soap->type + && soap_match_tag(soap, soap->type, type) + && soap_match_tag(soap, soap->type, ":byte")) + { + soap->error = SOAP_TYPE; + soap_revert(soap); + return NULL; + } +#else + (void)type; +#endif + p = (char*)soap_id_enter(soap, soap->id, p, t, sizeof(char), NULL, NULL, NULL, NULL); + if (!p) + return NULL; + if (*soap->href != '#') + { + int err = soap_s2byte(soap, soap_value(soap), p); + if ((soap->body && soap_element_end_in(soap, tag)) || err) + return NULL; + } + else + { + p = (char*)soap_id_forward(soap, soap->href, p, 0, t, t, sizeof(char), 0, NULL, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return p; +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_short2s(struct soap *soap, short n) +{ + return soap_long2s(soap, (long)n); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_outshort(struct soap *soap, const char *tag, int id, const short *p, const char *type, int n) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) + || soap_string_out(soap, soap_long2s(soap, (long)*p), 0)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_s2short(struct soap *soap, const char *s, short *p) +{ + if (s) + { + long n; + char *r; + if (!*s) + return soap->error = SOAP_EMPTY; + n = soap_strtol(s, &r, 10); + if (s == r || *r || n < -32768 || n > 32767) + soap->error = SOAP_TYPE; + *p = (short)n; + } + return soap->error; +} + +/******************************************************************************/ + +SOAP_FMAC1 +short * +SOAP_FMAC2 +soap_inshort(struct soap *soap, const char *tag, short *p, const char *type, int t) +{ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; +#ifndef WITH_LEAN + if (*soap->type + && soap_match_tag(soap, soap->type, type) + && soap_match_tag(soap, soap->type, ":short") + && soap_match_tag(soap, soap->type, ":byte")) + { + soap->error = SOAP_TYPE; + soap_revert(soap); + return NULL; + } +#else + (void)type; +#endif + p = (short*)soap_id_enter(soap, soap->id, p, t, sizeof(short), NULL, NULL, NULL, NULL); + if (!p) + return NULL; + if (*soap->href != '#') + { + int err = soap_s2short(soap, soap_value(soap), p); + if ((soap->body && soap_element_end_in(soap, tag)) || err) + return NULL; + } + else + { + p = (short*)soap_id_forward(soap, soap->href, p, 0, t, t, sizeof(short), 0, NULL, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return p; +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_float2s(struct soap *soap, float n) +{ +#if defined(WITH_C_LOCALE) +# if !defined(WIN32) + SOAP_LOCALE_T locale; +# endif +#else + char *s; +#endif + if (soap_isnan((double)n)) + return "NaN"; + if (soap_ispinff(n)) + return "INF"; + if (soap_isninff(n)) + return "-INF"; +#if defined(WITH_C_LOCALE) +# ifdef WIN32 + _sprintf_s_l(soap->tmpbuf, _countof(soap->tmpbuf), soap->float_format, SOAP_LOCALE(soap), n); +# else + locale = uselocale(SOAP_LOCALE(soap)); + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), 20), soap->float_format, n); + uselocale(locale); +# endif +#else + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), 20), soap->float_format, n); + s = strchr(soap->tmpbuf, ','); /* convert decimal comma to DP */ + if (s) + *s = '.'; +#endif + return soap->tmpbuf; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_outfloat(struct soap *soap, const char *tag, int id, const float *p, const char *type, int n) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) + || soap_string_out(soap, soap_float2s(soap, *p), 0)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_s2float(struct soap *soap, const char *s, float *p) +{ + if (s) + { + if (!*s) + return soap->error = SOAP_EMPTY; + if (!soap_tag_cmp(s, "INF")) + { + *p = FLT_PINFTY; + } + else if (!soap_tag_cmp(s, "+INF")) + { + *p = FLT_PINFTY; + } + else if (!soap_tag_cmp(s, "-INF")) + { + *p = FLT_NINFTY; + } + else if (!soap_tag_cmp(s, "NaN")) + { + *p = FLT_NAN; + } + else + { +/* On some systems strtof requires -std=c99 or does not even link: so we try strtod first */ +#if defined(WITH_C_LOCALE) +# if defined(HAVE_STRTOD_L) + char *r; +# ifdef WIN32 + *p = (float)_strtod_l(s, &r, SOAP_LOCALE(soap)); +# else + *p = (float)strtod_l(s, &r, SOAP_LOCALE(soap)); +# endif + if (*r) + soap->error = SOAP_TYPE; +# elif defined(HAVE_STRTOF_L) + char *r; + *p = strtof_l((char*)s, &r, SOAP_LOCALE(soap)); + if (*r) + soap->error = SOAP_TYPE; +# elif defined(HAVE_SSCANF_L) + double n; + if (sscanf_l(s, SOAP_LOCALE(soap), "%lf", &n) != 1) + soap->error = SOAP_TYPE; + *p = (float)n; +# elif defined(HAVE_STRTOD) + char *r; + SOAP_LOCALE_T locale = uselocale(SOAP_LOCALE(soap)); + *p = (float)strtod((char*)s, &r); + uselocale(locale); + if (*r) + soap->error = SOAP_TYPE; +# elif defined(HAVE_STRTOF) + char *r; + SOAP_LOCALE_T locale = uselocale(SOAP_LOCALE(soap)); + *p = strtof((char*)s, &r); + uselocale(locale); + if (*r) + soap->error = SOAP_TYPE; +# elif defined(HAVE_SSCANF) + double n; + SOAP_LOCALE_T locale = uselocale(SOAP_LOCALE(soap)); + if (sscanf(s, "%lf", &n) != 1) + soap->error = SOAP_TYPE; + uselocale(locale); + *p = (float)n; +# else + soap->error = SOAP_TYPE; +# endif +#elif defined(HAVE_STRTOD) + char *r; + *p = (float)strtod(s, &r); + if (*r) + soap->error = SOAP_TYPE; +#elif defined(HAVE_STRTOF) + char *r; + *p = strtof((char*)s, &r); + if (*r) + soap->error = SOAP_TYPE; +#elif defined(HAVE_SSCANF) + double n; + if (sscanf(s, "%lf", &n) != 1) + soap->error = SOAP_TYPE; + *p = (float)n; +#else + soap->error = SOAP_TYPE; +#endif + } + } + return soap->error; +} + +/******************************************************************************/ + +#ifndef WITH_LEAN +static int soap_isnumeric(struct soap *soap, const char *type) +{ + if (soap_match_tag(soap, soap->type, type) + && soap_match_tag(soap, soap->type, ":float") + && soap_match_tag(soap, soap->type, ":double") + && soap_match_tag(soap, soap->type, ":decimal") + && soap_match_tag(soap, soap->type, ":integer") + && soap_match_tag(soap, soap->type, ":positiveInteger") + && soap_match_tag(soap, soap->type, ":negativeInteger") + && soap_match_tag(soap, soap->type, ":nonPositiveInteger") + && soap_match_tag(soap, soap->type, ":nonNegativeInteger") + && soap_match_tag(soap, soap->type, ":long") + && soap_match_tag(soap, soap->type, ":int") + && soap_match_tag(soap, soap->type, ":short") + && soap_match_tag(soap, soap->type, ":byte") + && soap_match_tag(soap, soap->type, ":unsignedLong") + && soap_match_tag(soap, soap->type, ":unsignedInt") + && soap_match_tag(soap, soap->type, ":unsignedShort") + && soap_match_tag(soap, soap->type, ":unsignedByte")) + { + soap->error = SOAP_TYPE; + soap_revert(soap); + return SOAP_ERR; + } + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +float * +SOAP_FMAC2 +soap_infloat(struct soap *soap, const char *tag, float *p, const char *type, int t) +{ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; +#ifndef WITH_LEAN + if (*soap->type != '\0' && soap_isnumeric(soap, type)) + return NULL; +#else + (void)type; +#endif + p = (float*)soap_id_enter(soap, soap->id, p, t, sizeof(float), NULL, NULL, NULL, NULL); + if (!p) + return NULL; + if (*soap->href != '#') + { + int err = soap_s2float(soap, soap_value(soap), p); + if ((soap->body && soap_element_end_in(soap, tag)) || err) + return NULL; + } + else + { + p = (float*)soap_id_forward(soap, soap->href, p, 0, t, t, sizeof(float), 0, NULL, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return p; +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_double2s(struct soap *soap, double n) +{ +#if defined(WITH_C_LOCALE) +# if !defined(WIN32) + SOAP_LOCALE_T locale; +# endif +#else + char *s; +#endif + if (soap_isnan(n)) + return "NaN"; + if (soap_ispinfd(n)) + return "INF"; + if (soap_isninfd(n)) + return "-INF"; +#if defined(WITH_C_LOCALE) +# ifdef WIN32 + _sprintf_s_l(soap->tmpbuf, _countof(soap->tmpbuf), soap->double_format, SOAP_LOCALE(soap), n); +# else + locale = uselocale(SOAP_LOCALE(soap)); + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), 40), soap->double_format, n); + uselocale(locale); +# endif +#else + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), 40), soap->double_format, n); + s = strchr(soap->tmpbuf, ','); /* convert decimal comma to DP */ + if (s) + *s = '.'; +#endif + return soap->tmpbuf; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_outdouble(struct soap *soap, const char *tag, int id, const double *p, const char *type, int n) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) + || soap_string_out(soap, soap_double2s(soap, *p), 0)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_s2double(struct soap *soap, const char *s, double *p) +{ + if (s) + { + if (!*s) + return soap->error = SOAP_EMPTY; + if (!soap_tag_cmp(s, "INF")) + { + *p = DBL_PINFTY; + } + else if (!soap_tag_cmp(s, "+INF")) + { + *p = DBL_PINFTY; + } + else if (!soap_tag_cmp(s, "-INF")) + { + *p = DBL_NINFTY; + } + else if (!soap_tag_cmp(s, "NaN")) + { + *p = DBL_NAN; + } + else + { +#if defined(WITH_C_LOCALE) +# if defined(HAVE_STRTOD_L) + char *r; +# ifdef WIN32 + *p = _strtod_l(s, &r, SOAP_LOCALE(soap)); +# else + *p = strtod_l(s, &r, SOAP_LOCALE(soap)); +# endif + if (*r) + soap->error = SOAP_TYPE; +# elif defined(HAVE_STRTOD) + char *r; + SOAP_LOCALE_T locale = uselocale(SOAP_LOCALE(soap)); + *p = strtod(s, &r); + uselocale(locale); + if (*r) + soap->error = SOAP_TYPE; +# elif defined(HAVE_SSCANF_L) + SOAP_LOCALE_T locale = uselocale(SOAP_LOCALE(soap)); + if (sscanf_l(s, SOAP_LOCALE(soap), "%lf", p) != 1) + soap->error = SOAP_TYPE; + uselocale(locale); +# else + soap->error = SOAP_TYPE; +# endif +#elif defined(HAVE_STRTOD) + char *r; + *p = strtod(s, &r); + if (*r) + soap->error = SOAP_TYPE; +#elif defined(HAVE_SSCANF) + if (sscanf(s, "%lf", p) != 1) + soap->error = SOAP_TYPE; +#else + soap->error = SOAP_TYPE; +#endif + } + } + return soap->error; +} + +/******************************************************************************/ + +SOAP_FMAC1 +double * +SOAP_FMAC2 +soap_indouble(struct soap *soap, const char *tag, double *p, const char *type, int t) +{ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; +#ifndef WITH_LEAN + if (*soap->type != '\0' && soap_isnumeric(soap, type)) + return NULL; +#else + (void)type; +#endif + p = (double*)soap_id_enter(soap, soap->id, p, t, sizeof(double), NULL, NULL, NULL, NULL); + if (!p) + return NULL; + if (*soap->href != '#') + { + int err = soap_s2double(soap, soap_value(soap), p); + if ((soap->body && soap_element_end_in(soap, tag)) || err) + return NULL; + } + else + { + p = (double*)soap_id_forward(soap, soap->href, p, 0, t, t, sizeof(double), 0, NULL, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return p; +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_unsignedByte2s(struct soap *soap, unsigned char n) +{ + return soap_unsignedLong2s(soap, (unsigned long)n); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_outunsignedByte(struct soap *soap, const char *tag, int id, const unsigned char *p, const char *type, int n) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) + || soap_string_out(soap, soap_unsignedLong2s(soap, (unsigned long)*p), 0)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_s2unsignedByte(struct soap *soap, const char *s, unsigned char *p) +{ + if (s) + { + long n; + char *r; + if (!*s) + return soap->error = SOAP_EMPTY; + n = soap_strtol(s, &r, 10); + if (s == r || *r || n < 0 || n > 255) + soap->error = SOAP_TYPE; + *p = (unsigned char)n; + } + return soap->error; +} + +/******************************************************************************/ + +SOAP_FMAC1 +unsigned char * +SOAP_FMAC2 +soap_inunsignedByte(struct soap *soap, const char *tag, unsigned char *p, const char *type, int t) +{ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; +#ifndef WITH_LEAN + if (*soap->type + && soap_match_tag(soap, soap->type, type) + && soap_match_tag(soap, soap->type, ":unsignedByte")) + { + soap->error = SOAP_TYPE; + soap_revert(soap); + return NULL; + } +#else + (void)type; +#endif + p = (unsigned char*)soap_id_enter(soap, soap->id, p, t, sizeof(unsigned char), NULL, NULL, NULL, NULL); + if (!p) + return NULL; + if (*soap->href != '#') + { + int err = soap_s2unsignedByte(soap, soap_value(soap), p); + if ((soap->body && soap_element_end_in(soap, tag)) || err) + return NULL; + } + else + { + p = (unsigned char*)soap_id_forward(soap, soap->href, p, 0, t, t, sizeof(unsigned char), 0, NULL, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return p; +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_unsignedShort2s(struct soap *soap, unsigned short n) +{ + return soap_unsignedLong2s(soap, (unsigned long)n); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_outunsignedShort(struct soap *soap, const char *tag, int id, const unsigned short *p, const char *type, int n) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) + || soap_string_out(soap, soap_unsignedLong2s(soap, (unsigned long)*p), 0)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_s2unsignedShort(struct soap *soap, const char *s, unsigned short *p) +{ + if (s) + { + long n; + char *r; + if (!*s) + return soap->error = SOAP_EMPTY; + n = soap_strtol(s, &r, 10); + if (s == r || *r || n < 0 || n > 65535) + soap->error = SOAP_TYPE; + *p = (unsigned short)n; + } + return soap->error; +} + +/******************************************************************************/ + +SOAP_FMAC1 +unsigned short * +SOAP_FMAC2 +soap_inunsignedShort(struct soap *soap, const char *tag, unsigned short *p, const char *type, int t) +{ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; +#ifndef WITH_LEAN + if (*soap->type + && soap_match_tag(soap, soap->type, type) + && soap_match_tag(soap, soap->type, ":unsignedShort") + && soap_match_tag(soap, soap->type, ":unsignedByte")) + { + soap->error = SOAP_TYPE; + soap_revert(soap); + return NULL; + } +#else + (void)type; +#endif + p = (unsigned short*)soap_id_enter(soap, soap->id, p, t, sizeof(unsigned short), NULL, NULL, NULL, NULL); + if (!p) + return NULL; + if (*soap->href != '#') + { + int err = soap_s2unsignedShort(soap, soap_value(soap), p); + if ((soap->body && soap_element_end_in(soap, tag)) || err) + return NULL; + } + else + { + p = (unsigned short*)soap_id_forward(soap, soap->href, p, 0, t, t, sizeof(unsigned short), 0, NULL, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return p; +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_unsignedInt2s(struct soap *soap, unsigned int n) +{ + return soap_unsignedLong2s(soap, (unsigned long)n); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_outunsignedInt(struct soap *soap, const char *tag, int id, const unsigned int *p, const char *type, int n) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) + || soap_string_out(soap, soap_unsignedLong2s(soap, (unsigned long)*p), 0)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_s2unsignedInt(struct soap *soap, const char *s, unsigned int *p) +{ + if (s) + { + char *r; + if (!*s) + return soap->error = SOAP_EMPTY; +#ifndef WITH_NOIO +#ifndef WITH_LEAN + soap_reset_errno; +#endif +#endif + *p = (unsigned int)soap_strtoul(s, &r, 10); + if (s == r || *r +#ifndef WITH_NOIO +#ifndef WITH_LEAN + || soap_errno == SOAP_ERANGE +#endif +#endif + ) + soap->error = SOAP_TYPE; +#ifdef HAVE_STRTOUL + if (*p > 0 && strchr(s, '-')) + return soap->error = SOAP_TYPE; +#endif + } + return soap->error; +} + +/******************************************************************************/ + +SOAP_FMAC1 +unsigned int * +SOAP_FMAC2 +soap_inunsignedInt(struct soap *soap, const char *tag, unsigned int *p, const char *type, int t) +{ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; +#ifndef WITH_LEAN + if (*soap->type + && soap_match_tag(soap, soap->type, type) + && soap_match_tag(soap, soap->type, ":unsignedInt") + && soap_match_tag(soap, soap->type, ":unsignedShort") + && soap_match_tag(soap, soap->type, ":unsignedByte")) + { + soap->error = SOAP_TYPE; + soap_revert(soap); + return NULL; + } +#else + (void)type; +#endif + p = (unsigned int*)soap_id_enter(soap, soap->id, p, t, sizeof(unsigned int), NULL, NULL, NULL, NULL); + if (!p) + return NULL; + if (*soap->href != '#') + { + int err = soap_s2unsignedInt(soap, soap_value(soap), p); + if ((soap->body && soap_element_end_in(soap, tag)) || err) + return NULL; + } + else + { + p = (unsigned int*)soap_id_forward(soap, soap->href, p, 0, t, t, sizeof(unsigned int), 0, NULL, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return p; +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_unsignedLong2s(struct soap *soap, unsigned long n) +{ + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), 20), "%lu", n); + return soap->tmpbuf; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_outunsignedLong(struct soap *soap, const char *tag, int id, const unsigned long *p, const char *type, int n) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) + || soap_string_out(soap, soap_unsignedLong2s(soap, *p), 0)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_s2unsignedLong(struct soap *soap, const char *s, unsigned long *p) +{ + if (s) + { + char *r; + if (!*s) + return soap->error = SOAP_EMPTY; +#ifndef WITH_NOIO +#ifndef WITH_LEAN + soap_reset_errno; +#endif +#endif + *p = soap_strtoul(s, &r, 10); + if (s == r || *r +#ifndef WITH_NOIO +#ifndef WITH_LEAN + || soap_errno == SOAP_ERANGE +#endif +#endif + ) + soap->error = SOAP_TYPE; +#ifdef HAVE_STRTOUL + if (*p > 0 && strchr(s, '-')) + return soap->error = SOAP_TYPE; +#endif + } + return soap->error; +} + +/******************************************************************************/ + +SOAP_FMAC1 +unsigned long * +SOAP_FMAC2 +soap_inunsignedLong(struct soap *soap, const char *tag, unsigned long *p, const char *type, int t) +{ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; +#ifndef WITH_LEAN + if (*soap->type + && soap_match_tag(soap, soap->type, type) + && soap_match_tag(soap, soap->type, ":unsignedInt") + && soap_match_tag(soap, soap->type, ":unsignedShort") + && soap_match_tag(soap, soap->type, ":unsignedByte")) + { + soap->error = SOAP_TYPE; + soap_revert(soap); + return NULL; + } +#else + (void)type; +#endif + p = (unsigned long*)soap_id_enter(soap, soap->id, p, t, sizeof(unsigned long), NULL, NULL, NULL, NULL); + if (!p) + return NULL; + if (*soap->href != '#') + { + int err = soap_s2unsignedLong(soap, soap_value(soap), p); + if ((soap->body && soap_element_end_in(soap, tag)) || err) + return NULL; + } + else + { + p = (unsigned long*)soap_id_forward(soap, soap->href, p, 0, t, t, sizeof(unsigned long), 0, NULL, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return p; +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_ULONG642s(struct soap *soap, ULONG64 n) +{ + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), 20), SOAP_ULONG_FORMAT, n); + return soap->tmpbuf; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_outULONG64(struct soap *soap, const char *tag, int id, const ULONG64 *p, const char *type, int n) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) + || soap_string_out(soap, soap_ULONG642s(soap, *p), 0)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_s2ULONG64(struct soap *soap, const char *s, ULONG64 *p) +{ + if (s) + { + char *r; + if (!*s) + return soap->error = SOAP_EMPTY; +#ifndef WITH_NOIO +#ifndef WITH_LEAN + soap_reset_errno; +#endif +#endif + *p = soap_strtoull(s, &r, 10); + if (s == r || *r +#ifndef WITH_NOIO +#ifndef WITH_LEAN + || soap_errno == SOAP_ERANGE +#endif +#endif + ) + soap->error = SOAP_TYPE; + if (*p > 0 && strchr(s, '-')) + return soap->error = SOAP_TYPE; + } + return soap->error; +} + +/******************************************************************************/ + +SOAP_FMAC1 +ULONG64 * +SOAP_FMAC2 +soap_inULONG64(struct soap *soap, const char *tag, ULONG64 *p, const char *type, int t) +{ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; +#ifndef WITH_LEAN + if (*soap->type + && soap_match_tag(soap, soap->type, type) + && soap_match_tag(soap, soap->type, ":positiveInteger") + && soap_match_tag(soap, soap->type, ":nonNegativeInteger") + && soap_match_tag(soap, soap->type, ":unsignedLong") + && soap_match_tag(soap, soap->type, ":unsignedInt") + && soap_match_tag(soap, soap->type, ":unsignedShort") + && soap_match_tag(soap, soap->type, ":unsignedByte")) + { + soap->error = SOAP_TYPE; + soap_revert(soap); + return NULL; + } +#else + (void)type; +#endif + p = (ULONG64*)soap_id_enter(soap, soap->id, p, t, sizeof(ULONG64), NULL, NULL, NULL, NULL); + if (!p) + return NULL; + if (*soap->href != '#') + { + int err = soap_s2ULONG64(soap, soap_value(soap), p); + if ((soap->body && soap_element_end_in(soap, tag)) || err) + return NULL; + } + else + { + p = (ULONG64*)soap_id_forward(soap, soap->href, p, 0, t, t, sizeof(ULONG64), 0, NULL, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return p; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_s2char(struct soap *soap, const char *s, char **t, int flag, long minlen, long maxlen, const char *pattern) +{ + if (s) + { + const char *r = soap_string(soap, s, flag, minlen, maxlen, pattern); + if (r && (*t = soap_strdup(soap, r)) == NULL) + return soap->error = SOAP_EOM; + } + return soap->error; +} + +/******************************************************************************/ + +#ifndef WITH_COMPAT +#ifdef __cplusplus +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_s2stdchar(struct soap *soap, const char *s, std::string *t, int flag, long minlen, long maxlen, const char *pattern) +{ + if (s) + { + const char *r = soap_string(soap, s, flag, minlen, maxlen, pattern); + if (r) + t->assign(r); + } + return soap->error; +} +#endif +#endif + +/******************************************************************************/ + +static const char* +soap_string(struct soap *soap, const char *s, int flag, long minlen, long maxlen, const char *pattern) +{ + if (s) + { + if (maxlen < 0 && soap->maxlength > 0) + maxlen = soap->maxlength; + if (minlen > 0 || maxlen >= 0) + { + size_t l; + if ((soap->mode & SOAP_C_UTFSTRING)) + l = soap_utf8len(s); + else + l = strlen(s); + if ((maxlen >= 0 && l > (size_t)maxlen) || (minlen > 0 && l < (size_t)minlen)) + { + soap->error = SOAP_LENGTH; + return NULL; + } + } + if (flag >= 4) + s = soap_collapse(soap, (char*)s, flag, 0); +#ifndef WITH_LEANER + if (pattern && soap->fsvalidate) + { + soap->error = soap->fsvalidate(soap, pattern, s); + if (soap->error) + return NULL; + } +#else + (void)pattern; +#endif + } + return s; +} + +/******************************************************************************/ + +static char* +soap_collapse(struct soap *soap, char *s, int flag, int insitu) +{ + /* flag 4=normalizedString (replace), 5=token (collapse) */ + char *t; + size_t n; + if (!s) + return NULL; + if (flag == 4) + { + for (t = s; *t && (!soap_coblank((soap_wchar)*t) || *t == 32); t++) + continue; + if (*t) + { + /* replace white space and control chars by blanks */ + if (!insitu) + s = soap_strdup(soap, s); + for (t = s; *t; t++) + if (soap_coblank((soap_wchar)*t)) + *t = ' '; + } + return s; + } + /* collapse white space */ + for (t = s; *t && soap_coblank((soap_wchar)*t); t++) + continue; + n = strlen(t); + if (insitu && s < t) + (void)soap_memmove(s, n + 1, t, n + 1); + else + s = t; + if (n > 0) + { + if (!soap_coblank((soap_wchar)s[n-1])) + { + for (t = s; (*t && !soap_coblank((soap_wchar)*t)) || (*t == 32 && (!t[1] || !soap_coblank((soap_wchar)t[1]))); t++) + continue; + if (!*t) + return s; + } + if (!insitu) + s = soap_strdup(soap, s); + for (t = s; *t; t++) + { + if (soap_coblank((soap_wchar)*t)) + { + char *r; + *t = ' '; + for (r = t + 1; *r && soap_coblank((soap_wchar)*r); r++) + continue; + if (r > t + 1) + (void)soap_memmove(t + 1, n - (t-s), r, n - (r-s) + 1); + } + } + t--; + if (t >= s && *t == 32) + *t = '\0'; + } + return s; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_s2QName(struct soap *soap, const char *s, char **t, long minlen, long maxlen, const char *pattern) +{ + *t = NULL; + if (s) + { + const char *r = soap_QName(soap, s, minlen, maxlen, pattern); + if (r && (*t = soap_strdup(soap, r)) == NULL) + return soap->error = SOAP_EOM; + } + return soap->error; +} + +/******************************************************************************/ + +#ifndef WITH_COMPAT +#ifdef __cplusplus +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_s2stdQName(struct soap *soap, const char *s, std::string *t, long minlen, long maxlen, const char *pattern) +{ + t->clear(); + if (s) + { + const char *r = soap_QName(soap, s, minlen, maxlen, pattern); + if (r) + t->assign(r); + } + return soap->error; +} +#endif +#endif + +/******************************************************************************/ + +static const char* +soap_QName(struct soap *soap, const char *s, long minlen, long maxlen, const char *pattern) +{ + if (s) + { + char *b; + if (maxlen < 0 && soap->maxlength > 0) + maxlen = soap->maxlength; + if (minlen > 0 || maxlen >= 0) + { + size_t l; + if ((soap->mode & SOAP_C_UTFSTRING)) + l = soap_utf8len(s); + else + l = strlen(s); + if ((maxlen >= 0 && l > (size_t)maxlen) || (minlen > 0 && l < (size_t)minlen)) + { + soap->error = SOAP_LENGTH; + return NULL; + } + } +#ifdef WITH_FAST + soap->labidx = 0; +#else + if (soap_alloc_block(soap) == NULL) + return NULL; +#endif + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Normalized namespace(s) of QNames '%s'", s)); + /* convert (by prefix normalize prefix) all QNames in s */ + for (;;) + { + size_t n; + struct soap_nlist *np; + const char *p = NULL; + short flag = 0; + const char *r = NULL; + size_t m = 0; +#ifndef WITH_FAST + size_t k = 0; +#endif + /* skip blanks */ + while (*s && soap_coblank((soap_wchar)*s)) + s++; + if (!*s) + break; + /* find next QName */ + n = 1; + while (s[n] && !soap_coblank((soap_wchar)s[n])) + n++; + np = soap->nlist; + /* if there is no namespace stack, or prefix is "#" or "xml" then copy string */ + if (!np || *s == '#' || !strncmp(s, "xml:", 4)) + { + r = s; + m = n; + } + else /* we normalize the QName by replacing its prefix */ + { + const char *q; + for (p = s; *p && p < s + n; p++) + if (*p == ':') + break; + if (*p == ':') + { + size_t k = p - s; + while (np && (strncmp(np->id, s, k) || np->id[k])) + np = np->next; + p++; + } + else + { + while (np && *np->id) + np = np->next; + p = s; + } + /* replace prefix */ + if (np) + { + if (np->index >= 0 && soap->local_namespaces && (q = soap->local_namespaces[np->index].id) != NULL) + { + size_t k = strlen(q); + if (q[k-1] != '_') + { + r = q; + m = k; + } + else + { + flag = 1; + r = soap->local_namespaces[np->index].ns; + m = strlen(r); + } + } + else if (np->ns) + { + flag = 1; + r = np->ns; + m = strlen(r); + } + else + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "\nNamespace prefix of '%s' not defined (index=%d, URI='%s')\n", s, np->index, np->ns ? np->ns : SOAP_STR_EOS)); + soap->error = SOAP_NAMESPACE; + return NULL; + } + } + else if (s[n]) /* no namespace, part of string */ + { + r = s; + m = n; + } + else /* no namespace: assume "" namespace */ + { + flag = 1; + } + } +#ifdef WITH_FAST + if ((flag && soap_append_lab(soap, "\"", 1)) + || (m && soap_append_lab(soap, r, m)) + || (flag && soap_append_lab(soap, "\"", 1)) + || (p && (soap_append_lab(soap, ":", 1) || soap_append_lab(soap, p, n - (p-s))))) + return NULL; +#else + k = 2*flag + m + (p ? n - (p-s) + 1 : 0) + (s[n] != '\0'); + b = (char*)soap_push_block(soap, NULL, k); + if (!b) + return NULL; + if (flag) + *b++ = '"'; + if (m) + { + if (soap_memcpy((void*)b, k, (const void*)r, m)) + { + soap->error = SOAP_EOM; + return NULL; + } + b += m; + } + if (flag) + *b++ = '"'; + if (p) + { + *b++ = ':'; + if (soap_memcpy((void*)b, k - m - flag - 1, (const void*)p, n - (p-s))) + { + soap->error = SOAP_EOM; + return NULL; + } + b += n - (p-s); + } +#endif + /* advance to next and add spacing */ + s += n; + while (*s && soap_coblank(*s)) + s++; + if (*s) + { +#ifdef WITH_FAST + if (soap_append_lab(soap, " ", 1)) + return NULL; +#else + *b = ' '; +#endif + } + } +#ifdef WITH_FAST + if (soap_append_lab(soap, SOAP_STR_EOS, 1)) + return NULL; + b = soap->labbuf; +#else + b = (char*)soap_push_block(soap, NULL, 1); + if (!b) + return NULL; + *b = '\0'; + b = (char*)soap_save_block(soap, NULL, NULL, 0); +#endif +#ifndef WITH_LEANER + if (pattern && soap->fsvalidate) + { + soap->error = soap->fsvalidate(soap, pattern, b); + if (soap->error) + return NULL; + } +#else + (void)pattern; +#endif + return b; + } + return NULL; +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_QName2s(struct soap *soap, const char *s) +{ + const char *t = NULL; + if (s) + { +#ifdef WITH_FAST + soap_store_lab(soap, SOAP_STR_EOS, 1); + soap->labidx = 0; +#else + char *b = NULL; + if (soap_alloc_block(soap) == NULL) + return NULL; +#endif + for (;;) + { + size_t n; + const char *q = NULL; + const char *r = NULL; + size_t m = 0; +#ifndef WITH_FAST + size_t k = 0; +#endif + /* skip blanks */ + while (*s && soap_coblank((soap_wchar)*s)) + s++; + if (!*s) + { +#ifdef WITH_FAST + soap->labbuf[soap->labidx > 0 ? soap->labidx - 1 : 0] = '\0'; +#else + if (!b) + return soap_strdup(soap, SOAP_STR_EOS); + --b; + *b = '\0'; +#endif + break; + } + /* find next QName */ + n = 0; + while (s[n] && !soap_coblank((soap_wchar)s[n])) + { + if (s[n] == ':') + r = s; + n++; + } + if (*s != '"') /* non-quoted: pass string as is */ + { +#ifndef WITH_LEAN + if (r && (soap->mode & SOAP_XML_CANONICAL) && !(soap->mode & SOAP_XML_CANONICAL_NA)) + soap_utilize_ns(soap, s, 1); +#endif + r = s; + m = n + 1; + } + else /* prefix quoted URI-based string */ + { + q = strchr(s + 1, '"'); + if (q) + { + struct Namespace *p = soap->local_namespaces; + if (p) + { + for (; p->id; p++) + { + if (p->ns) + if (!soap_tag_cmp(s + 1, p->ns)) + break; + if (p->in) + if (!soap_tag_cmp(s + 1, p->in)) + break; + } + } + q++; + /* URL is in the namespace table? */ + if (p && p->id) + { + r = p->id; + m = strlen(r); + } + else /* not in namespace table: create xmlns binding */ + { + char *x = soap_strdup(soap, s + 1); + if (!x) + return NULL; + x[q - s - 2] = '\0'; + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), 27), "xmlns:_%d", soap->idnum++); + soap_set_attr(soap, soap->tmpbuf, x, 1); + r = soap->tmpbuf + 6; + m = strlen(r); + } + } + } + /* copy normalized QName into buffer, including the ending blank or NUL */ +#ifdef WITH_FAST + if ((m && soap_append_lab(soap, r, m)) + || (q && soap_append_lab(soap, q, n - (q - s) + 1))) + return NULL; +#else + k = m + (q ? n - (q - s) + 1 : 0); + b = (char*)soap_push_block(soap, NULL, k); + if (!b) + { + soap->error = SOAP_EOM; + return NULL; + } + if (soap_memcpy((void*)b, k, (const void*)r, m)) + { + soap->error = SOAP_EOM; + return NULL; + } + b += m; + if (q) + { + if (soap_memcpy((void*)b, k - m, (const void*)q, n - (q - s) + 1)) + { + soap->error = SOAP_EOM; + return NULL; + } + b += n - (q - s) + 1; + } +#endif + /* advance to next */ + s += n; + } +#ifdef WITH_FAST + t = soap_strdup(soap, soap->labbuf); + if (!t) + soap->error = SOAP_EOM; +#else + t = (char*)soap_save_block(soap, NULL, NULL, 0); +#endif + } + return t; +} + +/******************************************************************************/ + +#ifndef WITH_LEAN +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_s2wchar(struct soap *soap, const char *s, wchar_t **t, int flag, long minlen, long maxlen, const char *pattern) +{ + if (s) + { + const wchar_t *r = soap_wstring(soap, s, flag, minlen, maxlen, pattern); + if (r && (*t = soap_wstrdup(soap, r)) == NULL) + return soap->error = SOAP_EOM; + } + return soap->error; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_COMPAT +#ifdef __cplusplus +#ifndef WITH_LEAN +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_s2stdwchar(struct soap *soap, const char *s, std::wstring *t, int flag, long minlen, long maxlen, const char *pattern) +{ + if (s) + { + const wchar_t *r = soap_wstring(soap, s, flag, minlen, maxlen, pattern); + if (r) + t->assign(r); + } + return soap->error; +} +#endif +#endif +#endif + +/******************************************************************************/ + +#ifndef WITH_LEAN +static const wchar_t* +soap_wstring(struct soap *soap, const char *s, int flag, long minlen, long maxlen, const char *pattern) +{ + if (s) + { + size_t l; + soap_wchar c; + wchar_t *t; + if (maxlen < 0 && soap->maxlength > 0) + maxlen = soap->maxlength; + soap->labidx = 0; + if ((soap->mode & SOAP_ENC_LATIN)) + { + wchar_t *r; + if (soap_append_lab(soap, NULL, sizeof(wchar_t) * (strlen(s) + 1))) + return NULL; + r = (wchar_t*)soap->labbuf; + while (*s) + *r++ = (wchar_t)*s++; + } + else + { + /* Convert UTF8 to wchar_t */ + while (*s) + { + c = (unsigned char)*s++; + if (c >= 0x80) + { +#ifdef WITH_REPLACE_ILLEGAL_UTF8 + soap_wchar c1, c2, c3; + c1 = (unsigned char)*s; + if (c <= 0xC1 || (c1 & 0xC0) != 0x80) + { + c = SOAP_UNKNOWN_UNICODE_CHAR; + } + else + { + ++s; + c1 &= 0x3F; + if (c < 0xE0) + { + c = (((c & 0x1F) << 6) | c1); + } + else + { + c2 = (unsigned char)*s; + if ((c == 0xE0 && c1 < 0x20) || (c2 & 0xC0) != 0x80) + { + c = SOAP_UNKNOWN_UNICODE_CHAR; + } + else + { + ++s; + c2 &= 0x3F; + if (c < 0xF0) + { + c = (((c & 0x0F) << 12) | (c1 << 6) | c2); + } + else + { + c3 = (unsigned char)*s; + if ((c == 0xF0 && c1 < 0x10) || (c == 0xF4 && c1 >= 0x10) || c >= 0xF5 || (c3 & 0xC0) != 0x80) + { + c = SOAP_UNKNOWN_UNICODE_CHAR; + } + else + { + ++s; + c = (((c & 0x07) << 18) | (c1 << 12) | (c2 << 6) | (c3 & 0x3F)); + } + } + } + } + } +#else + soap_wchar c1, c2, c3, c4; + c1 = (unsigned char)*s; + if (c1) + { + s++; + c1 &= 0x3F; + if (c < 0xE0) + { + c = (wchar_t)(((soap_wchar)(c & 0x1F) << 6) | c1); + } + else + { + c2 = (unsigned char)*s; + if (c2) + { + s++; + c2 &= 0x3F; + if (c < 0xF0) + { + c = (wchar_t)(((soap_wchar)(c & 0x0F) << 12) | (c1 << 6) | c2); + } + else + { + c3 = (unsigned char)*s; + if (c3) + { + s++; + c3 &= 0x3F; + if (c < 0xF8) + { + c = (wchar_t)(((soap_wchar)(c & 0x07) << 18) | (c1 << 12) | (c2 << 6) | c3); + } + else + { + c4 = (unsigned char)*s; + if (c4) + { + s++; + c4 &= 0x3F; + if (c < 0xFC) + { + c = (wchar_t)(((soap_wchar)(c & 0x03) << 24) | (c1 << 18) | (c2 << 12) | (c3 << 6) | c4); + } + else + { + c = (wchar_t)(((soap_wchar)(c & 0x01) << 30) | (c1 << 24) | (c2 << 18) | (c3 << 12) | (c4 << 6) | (unsigned char)(*s & 0x3F)); + if (*s) + s++; + } + } + } + } + } + } + } + } +#endif + } + /* use UTF16 encoding when wchar_t is too small to hold UCS */ + if (sizeof(wchar_t) < 4 && c > 0xFFFF) + { + wchar_t c1, c2; + c1 = 0xD800 - (0x10000 >> 10) + (c >> 10); + c2 = 0xDC00 + (c & 0x3FF); + if (soap_append_lab(soap, (const char*)&c1, sizeof(wchar_t)) || soap_append_lab(soap, (const char*)&c2, sizeof(wchar_t))) + return NULL; + } + else if (soap_append_lab(soap, (const char*)&c, sizeof(wchar_t))) + { + return NULL; + } + } + } + l = soap->labidx / sizeof(wchar_t); + c = L'\0'; + if (soap_append_lab(soap, (const char*)&c, sizeof(wchar_t))) + return NULL; + if ((maxlen >= 0 && l > (size_t)maxlen) || (minlen > 0 && l < (size_t)minlen)) + { + soap->error = SOAP_LENGTH; + return NULL; + } + t = (wchar_t*)soap->labbuf; +#ifndef WITH_LEAN + if (flag >= 4 && t) + t = soap_wcollapse(soap, t, flag, 1); +#endif +#ifndef WITH_LEANER + if (pattern && soap->fwvalidate) + { + soap->error = soap->fwvalidate(soap, pattern, t); + if (soap->error) + return NULL; + } +#endif + return t; + } + return NULL; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEAN +static wchar_t* +soap_wcollapse(struct soap *soap, wchar_t *s, int flag, int insitu) +{ + /* flag 4=normalizedString (replace), 5=token (collapse) */ + wchar_t *t; + size_t n; + if (!s) + return NULL; + if (flag == 4) + { + for (t = s; *t && (!soap_coblank((soap_wchar)*t) || *t == 32); t++) + continue; + if (*t) + { + /* replace blanks and control char by space */ + if (!insitu) + s = soap_wstrdup(soap, s); + if (s) + for (t = s; *t; t++) + if (soap_coblank((soap_wchar)*t)) + *t = L' '; + } + return s; + } + /* collapse white space */ + for (t = s; *t && soap_coblank((soap_wchar)*t); t++) + continue; + n = 0; + while (t[n]) + n++; + if (insitu && s < t) + (void)soap_memmove(s, n + 1, t, n + 1); + else + s = t; + if (n > 0) + { + if (!soap_coblank((soap_wchar)s[n-1])) + { + for (t = s; (*t && !soap_coblank((soap_wchar)*t)) || (*t == 32 && (!t[1] || !soap_coblank((soap_wchar)t[1]))); t++) + continue; + if (!*t) + return s; + } + if (!insitu) + s = soap_wstrdup(soap, s); + if (s) + { + for (t = s; *t; t++) + { + if (soap_coblank((soap_wchar)*t)) + { + wchar_t *r; + *t = L' '; + for (r = t + 1; *r && soap_coblank((soap_wchar)*r); r++) + continue; + if (r > t + 1) + (void)soap_memmove(t + 1, sizeof(wchar_t) * (n - (t-s)), r, sizeof(wchar_t) * (n - (r-s) + 1)); + } + } + t--; + if (t >= s && *t == 32) + *t = L'\0'; + } + } + return s; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEAN +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_wchar2s(struct soap *soap, const wchar_t *s) +{ + soap_wchar c; + char *r, *t; + const wchar_t *q = s; + size_t n = 0; + if (!s) + return NULL; + while ((c = *q++)) + { + if (c > 0 && c < 0x80) + n++; + else +#ifdef WITH_REPLACE_ILLEGAL_UTF8 + n += 4; +#else + n += 6; +#endif + } + r = t = (char*)soap_malloc(soap, n + 1); + if (r) + { + /* Convert wchar to UTF8 (chars above U+10FFFF are silently converted, but should not be used) */ + while ((c = *s++)) + { + if (c > 0 && c < 0x80) + { + *t++ = (char)c; + } + else + { + /* check for UTF16 encoding when wchar_t is too small to hold UCS */ + if (sizeof(wchar_t) < 4 && (c & 0xFC00) == 0xD800) + { + soap_wchar d = *s; + if ((d & 0xFC00) == 0xDC00) + { + c = ((c - 0xD800) << 10) + (d - 0xDC00) + 0x10000; + s++; + } +#ifdef WITH_REPLACE_ILLEGAL_UTF8 + else + { + c = SOAP_UNKNOWN_UNICODE_CHAR; /* Malformed UTF-16 */ + } +#endif + } + if (c < 0x0800) + { + *t++ = (char)(0xC0 | ((c >> 6) & 0x1F)); + } + else + { +#ifdef WITH_REPLACE_ILLEGAL_UTF8 + if (!((c >= 0x80 && c <= 0xD7FF) || (c >= 0xE000 && c <= 0xFFFD) || (c >= 0x10000 && c <= 0x10FFFF))) + c = SOAP_UNKNOWN_UNICODE_CHAR; +#endif + if (c < 0x010000) + { + *t++ = (char)(0xE0 | ((c >> 12) & 0x0F)); + } + else + { + if (c < 0x200000) + { + *t++ = (char)(0xF0 | ((c >> 18) & 0x07)); + } + else + { + if (c < 0x04000000) + { + *t++ = (char)(0xF8 | ((c >> 24) & 0x03)); + } + else + { + *t++ = (char)(0xFC | ((c >> 30) & 0x01)); + *t++ = (char)(0x80 | ((c >> 24) & 0x3F)); + } + *t++ = (char)(0x80 | ((c >> 18) & 0x3F)); + } + *t++ = (char)(0x80 | ((c >> 12) & 0x3F)); + } + *t++ = (char)(0x80 | ((c >> 6) & 0x3F)); + } + *t++ = (char)(0x80 | (c & 0x3F)); + } + } + *t = '\0'; + } + return r; +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_outstring(struct soap *soap, const char *tag, int id, char *const*p, const char *type, int n) +{ + id = soap_element_id(soap, tag, id, *p, NULL, 0, type, n, NULL); + if (id < 0) + return soap->error; + if (!**p && (soap->mode & SOAP_C_NILSTRING)) + return soap_element_null(soap, tag, id, type); + if (soap_element_begin_out(soap, tag, id, type) + || soap_string_out(soap, *p, 0) + || soap_element_end_out(soap, tag)) + return soap->error; + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +char ** +SOAP_FMAC2 +soap_instring(struct soap *soap, const char *tag, char **p, const char *type, int t, int flag, long minlen, long maxlen, const char *pattern) +{ + (void)type; + if (soap_element_begin_in(soap, tag, 1, NULL)) + { + if (!tag || *tag != '-' || soap->error != SOAP_NO_TAG) + return NULL; + soap->error = SOAP_OK; + } + if (!p) + { + p = (char**)soap_malloc(soap, sizeof(char*)); + if (!p) + return NULL; + } + if (soap->null) + { + *p = NULL; + } + else if (soap->body) + { + *p = soap_string_in(soap, flag, minlen, maxlen, pattern); + if (!*p || !(char*)soap_id_enter(soap, soap->id, *p, t, sizeof(char*), NULL, NULL, NULL, NULL)) + return NULL; + if (!**p && tag && *tag == '-') + { + soap->error = SOAP_NO_TAG; + return NULL; + } + } + else if (tag && *tag == '-') + { + soap->error = SOAP_NO_TAG; + return NULL; + } + else if (*soap->href != '#') + { + if (minlen > 0) + { + soap->error = SOAP_LENGTH; + return NULL; + } + *p = soap_strdup(soap, SOAP_STR_EOS); + if (!*p) + return NULL; + } + if (*soap->href == '#') + p = (char**)soap_id_lookup(soap, soap->href, (void**)p, t, sizeof(char**), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return p; +} + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_outwstring(struct soap *soap, const char *tag, int id, wchar_t *const*p, const char *type, int n) +{ + id = soap_element_id(soap, tag, id, *p, NULL, 0, type, n, NULL); + if (id < 0) + return soap->error; + if (!**p && (soap->mode & SOAP_C_NILSTRING)) + return soap_element_null(soap, tag, id, type); + if (soap_element_begin_out(soap, tag, id, type) + || soap_wstring_out(soap, *p, 0) + || soap_element_end_out(soap, tag)) + return soap->error; + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +wchar_t ** +SOAP_FMAC2 +soap_inwstring(struct soap *soap, const char *tag, wchar_t **p, const char *type, int t, int flag, long minlen, long maxlen, const char *pattern) +{ + (void)type; + if (soap_element_begin_in(soap, tag, 1, NULL)) + { + if (!tag || *tag != '-' || soap->error != SOAP_NO_TAG) + return NULL; + soap->error = SOAP_OK; + } + if (!p) + { + p = (wchar_t**)soap_malloc(soap, sizeof(wchar_t*)); + if (!p) + return NULL; + } + if (soap->null) + { + *p = NULL; + } + else if (soap->body) + { + *p = soap_wstring_in(soap, flag, minlen, maxlen, pattern); + if (!*p || !(wchar_t*)soap_id_enter(soap, soap->id, *p, t, sizeof(wchar_t*), NULL, NULL, NULL, NULL)) + return NULL; + if (!**p && tag && *tag == '-') + { + soap->error = SOAP_NO_TAG; + return NULL; + } + } + else if (tag && *tag == '-') + { + soap->error = SOAP_NO_TAG; + return NULL; + } + else if (*soap->href != '#') + { + if (minlen > 0) + { + soap->error = SOAP_LENGTH; + return NULL; + } + *p = soap_wstrdup(soap, L""); + } + if (*soap->href == '#') + p = (wchar_t**)soap_id_lookup(soap, soap->href, (void**)p, t, sizeof(wchar_t**), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return p; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEAN +#ifdef UNDER_CE +/* WinCE mktime (based on the mingw-runtime, public domain) */ +#define __FILETIME_to_ll(f) ((long long)(f).dwHighDateTime << 32 | (long long)(f).dwLowDateTime) +static time_t +mktime(struct tm *pt) +{ + SYSTEMTIME s, s1, s2; + FILETIME f, f1, f2; + long long diff; + GetSystemTime(&s1); + GetLocalTime(&s2); + SystemTimeToFileTime(&s1, &f1); + SystemTimeToFileTime(&s2, &f2); + diff = (__FILETIME_to_ll(f2) - __FILETIME_to_ll(f1)) / 10000000LL; + s.wYear = pt->tm_year + 1900; + s.wMonth = pt->tm_mon + 1; + s.wDayOfWeek = pt->tm_wday; + s.wDay = pt->tm_mday; + s.wHour = pt->tm_hour; + s.wMinute = pt->tm_min; + s.wSecond = pt->tm_sec; + s.wMilliseconds = 0; + SystemTimeToFileTime(&s, &f); + return (time_t)((__FILETIME_to_ll(f) - 116444736000000000LL) / 10000000LL) - (time_t)diff; +} +#endif +#endif + +/******************************************************************************/ + +#ifndef WITH_LEAN +#ifdef UNDER_CE +/* WinCE gmtime_r (based on the mingw-runtime, public domain) */ +#define HAVE_GMTIME_R +static struct tm* +gmtime_r(const time_t *t, struct tm *pt) +{ + FILETIME f, f1, f2; + SYSTEMTIME s, s1 = {0}; + long long time = (long long)(*t) * 10000000LL + 116444736000000000LL; + f.dwHighDateTime = (DWORD)((time >> 32) & 0x00000000FFFFFFFF); + f.dwLowDateTime = (DWORD)(time & 0x00000000FFFFFFFF); + FileTimeToSystemTime(&f, &s); + pt->tm_year = s.wYear - 1900; + pt->tm_mon = s.wMonth - 1; + pt->tm_wday = s.wDayOfWeek; + pt->tm_mday = s.wDay; + s1.wYear = s.wYear; + s1.wMonth = 1; + s1.wDayOfWeek = 1; + s1.wDay = 1; + SystemTimeToFileTime(&s1, &f1); + SystemTimeToFileTime(&s, &f2); + pt->tm_yday = (((__FILETIME_to_ll(f2) - __FILETIME_to_ll(f1)) / 10000000LL) / (60 * 60 * 24)); + pt->tm_hour = s.wHour; + pt->tm_min = s.wMinute; + pt->tm_sec = s.wSecond; + pt->tm_isdst = 0; + return pt; +} +#endif +#endif + +/******************************************************************************/ + +#ifndef WITH_LEAN +#ifdef UNDER_CE +/* WinCE very simple strftime for format "%Y-%m-%dT%H:%M:%SZ", note: %F and %T not supported by MS */ +static size_t +strftime(char *buf, size_t len, const char *format, const struct tm *pT) +{ + (void)len; (void)format; +#ifndef WITH_NOZONE + (SOAP_SNPRINTF(buf, len, 20), "%04d-%02d-%02dT%02d:%02d:%02dZ", pT->tm_year + 1900, pT->tm_mon + 1, pT->tm_mday, pT->tm_hour, pT->tm_min, pT->tm_sec); +#else + (SOAP_SNPRINTF(buf, len, 20), "%04d-%02d-%02dT%02d:%02d:%02d", pT->tm_year + 1900, pT->tm_mon + 1, pT->tm_mday, pT->tm_hour, pT->tm_min, pT->tm_sec); +#endif + return len; +} +#endif +#endif + +/******************************************************************************/ + +#if !defined(WITH_LEAN) || defined(WITH_COOKIES) +SOAP_FMAC1 +time_t +SOAP_FMAC2 +soap_timegm(struct tm *T) +{ +#if defined(HAVE_TIMEGM) + return timegm(T); +#else + time_t t, g, z; + struct tm tm; +#ifndef HAVE_GMTIME_R + struct tm *tp; +#endif + t = mktime(T); + if (t == (time_t)-1) + return (time_t)-1; +#ifdef HAVE_GMTIME_R + if (gmtime_r(&t, &tm) == SOAP_FUNC_R_ERR) + return (time_t)-1; +#else + tp = gmtime(&t); + if (!tp) + return (time_t)-1; + tm = *tp; +#endif + tm.tm_isdst = 0; + g = mktime(&tm); + if (g == (time_t)-1) + return (time_t)-1; + z = g - t; + return t - z; +#endif +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEAN +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_dateTime2s(struct soap *soap, time_t n) +{ + struct tm T, *pT = &T; + size_t l = 0; +#if defined(HAVE_GMTIME_R) && !defined(WITH_NOZONE) + if (gmtime_r(&n, pT) != SOAP_FUNC_R_ERR) + l = strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%SZ", pT); +#elif defined(HAVE_GMTIME) && !defined(WITH_NOZONE) + pT = gmtime(&n); + if (pT) + l = strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%SZ", pT); +#elif (defined(HAVE_TM_GMTOFF) || defined(HAVE_STRUCT_TM_TM_GMTOFF) || defined(HAVE_STRUCT_TM___TM_GMTOFF)) && !defined(WITH_NOZONE) +#if defined(HAVE_LOCALTIME_R) + if (localtime_r(&n, pT) != SOAP_FUNC_R_ERR) + { + l = strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%S%z", pT); + if (l) + { + (void)soap_memmove(soap->tmpbuf + 23, sizeof(soap->tmpbuf) - 23, soap->tmpbuf + 22, 3); /* 2000-03-01T02:00:00+0300 */ + soap->tmpbuf[22] = ':'; /* 2000-03-01T02:00:00+03:00 */ + } + } +#else + pT = localtime(&n); + if (pT) + { + l = strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%S%z", pT); + if (l) + { + (void)soap_memmove(soap->tmpbuf + 23, sizeof(soap->tmpbuf) - 23, soap->tmpbuf + 22, 3); /* 2000-03-01T02:00:00+0300 */ + soap->tmpbuf[22] = ':'; /* 2000-03-01T02:00:00+03:00 */ + } + } +#endif +#elif defined(HAVE_GETTIMEOFDAY) && !defined(WITH_NOZONE) +#if defined(HAVE_LOCALTIME_R) + if (localtime_r(&n, pT) != SOAP_FUNC_R_ERR) + { + struct timeval tv; + struct timezone tz; + memset((void*)&tz, 0, sizeof(tz)); + gettimeofday(&tv, &tz); + l = strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%S", pT); + if (l) + (SOAP_SNPRINTF(soap->tmpbuf + l, sizeof(soap->tmpbuf) - l, 7), "%+03d:%02d", -tz.tz_minuteswest/60+(pT->tm_isdst!=0), abs(tz.tz_minuteswest)%60); + } +#else + pT = localtime(&n); + if (pT) + { + struct timeval tv; + struct timezone tz; + memset((void*)&tz, 0, sizeof(tz)); + gettimeofday(&tv, &tz); + l = strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%S", pT); + if (l) + (SOAP_SNPRINTF(soap->tmpbuf + l, sizeof(soap->tmpbuf) - l, 7), "%+03d:%02d", -tz.tz_minuteswest/60+(pT->tm_isdst!=0), abs(tz.tz_minuteswest)%60); + } +#endif +#elif defined(HAVE_FTIME) && !defined(WITH_NOZONE) +#if defined(HAVE_LOCALTIME_R) + if (localtime_r(&n, pT) != SOAP_FUNC_R_ERR) + { + struct timeb t; + memset((void*)&t, 0, sizeof(t)); +#ifdef __BORLANDC__ + ::ftime(&t); +#else + ftime(&t); +#endif + l = strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%S", pT); + if (l) + (SOAP_SNPRINTF(soap->tmpbuf + l, sizeof(soap->tmpbuf) - l, 7), "%+03d:%02d", -t.timezone/60+(pT->tm_isdst!=0), abs(t.timezone)%60); + } +#else + pT = localtime(&n); + if (pT) + { + struct timeb t; + memset((void*)&t, 0, sizeof(t)); +#ifdef __BORLANDC__ + ::ftime(&t); +#else + ftime(&t); +#endif + l = strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%S", pT); + if (l) + (SOAP_SNPRINTF(soap->tmpbuf + l, sizeof(soap->tmpbuf) - l, 7), "%+03d:%02d", -t.timezone/60+(pT->tm_isdst!=0), abs(t.timezone)%60); + } +#endif +#elif defined(HAVE_LOCALTIME_R) + if (localtime_r(&n, pT) != SOAP_FUNC_R_ERR) + l = strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%S", pT); +#else + pT = localtime(&n); + if (pT) + l = strftime(soap->tmpbuf, sizeof(soap->tmpbuf), "%Y-%m-%dT%H:%M:%S", pT); +#endif + if (!l) + soap_strcpy(soap->tmpbuf, sizeof(soap->tmpbuf), "1969-12-31T23:59:59Z"); + return soap->tmpbuf; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEAN +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_outdateTime(struct soap *soap, const char *tag, int id, const time_t *p, const char *type, int n) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type) + || soap_string_out(soap, soap_dateTime2s(soap, *p), 0)) + return soap->error; + return soap_element_end_out(soap, tag); +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEAN +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_s2dateTime(struct soap *soap, const char *s, time_t *p) +{ + *p = 0; + if (s) + { + char *t; + unsigned long d; + struct tm T; + if (!*s) + return soap->error = SOAP_EMPTY; + memset((void*)&T, 0, sizeof(T)); + d = soap_strtoul(s, &t, 10); + if (*t == '-') + { + /* YYYY-MM-DD */ + T.tm_year = (int)d; + T.tm_mon = (int)soap_strtoul(t + 1, &t, 10); + T.tm_mday = (int)soap_strtoul(t + 1, &t, 10); + } + else if (!(soap->mode & SOAP_XML_STRICT)) + { + /* YYYYMMDD */ + T.tm_year = (int)(d / 10000); + T.tm_mon = (int)(d / 100 % 100); + T.tm_mday = (int)(d % 100); + } + else + { + return soap->error = SOAP_TYPE; + } + if (*t == 'T' || ((*t == 't' || *t == ' ') && !(soap->mode & SOAP_XML_STRICT))) + { + d = soap_strtoul(t + 1, &t, 10); + if (*t == ':') + { + /* Thh:mm:ss */ + T.tm_hour = (int)d; + T.tm_min = (int)soap_strtoul(t + 1, &t, 10); + T.tm_sec = (int)soap_strtoul(t + 1, &t, 10); + } + else if (!(soap->mode & SOAP_XML_STRICT)) + { + /* Thhmmss */ + T.tm_hour = (int)(d / 10000); + T.tm_min = (int)(d / 100 % 100); + T.tm_sec = (int)(d % 100); + } + else + { + return soap->error = SOAP_TYPE; + } + } + if (T.tm_year == 1) + T.tm_year = 70; + else + T.tm_year -= 1900; + T.tm_mon--; + if (*t == '.') + { + for (t++; *t; t++) + if (*t < '0' || *t > '9') + break; + } + if (*t == ' ' && !(soap->mode & SOAP_XML_STRICT)) + t++; + if (*t) + { +#ifndef WITH_NOZONE + if (*t == '+' || *t == '-') + { + int h, m; + m = (int)soap_strtol(t, &t, 10); + if (*t == ':') + { + /* +hh:mm */ + h = m; + m = (int)soap_strtol(t + 1, &t, 10); + if (h < 0) + m = -m; + } + else if (!(soap->mode & SOAP_XML_STRICT)) + { + /* +hhmm */ + h = m / 100; + m = m % 100; + } + else + { + /* +hh */ + h = m; + m = 0; + } + if (*t) + return soap->error = SOAP_TYPE; + T.tm_min -= m; + T.tm_hour -= h; + /* put hour and min in range */ + T.tm_hour += T.tm_min / 60; + T.tm_min %= 60; + if (T.tm_min < 0) + { + T.tm_min += 60; + T.tm_hour--; + } + T.tm_mday += T.tm_hour / 24; + T.tm_hour %= 24; + if (T.tm_hour < 0) + { + T.tm_hour += 24; + T.tm_mday--; + } + /* note: day of the month may be out of range, timegm() handles it */ + } + else if (*t != 'Z') + { + return soap->error = SOAP_TYPE; + } +#endif + *p = soap_timegm(&T); + } + else /* no UTC or timezone, so assume we got a localtime */ + { + T.tm_isdst = -1; + *p = mktime(&T); + } + } + return soap->error; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEAN +SOAP_FMAC1 +time_t * +SOAP_FMAC2 +soap_indateTime(struct soap *soap, const char *tag, time_t *p, const char *type, int t) +{ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + if (*soap->type + && soap_match_tag(soap, soap->type, type) + && soap_match_tag(soap, soap->type, ":dateTime")) + { + soap->error = SOAP_TYPE; + soap_revert(soap); + return NULL; + } + p = (time_t*)soap_id_enter(soap, soap->id, p, t, sizeof(time_t), NULL, NULL, NULL, NULL); + if (!p) + return NULL; + if (*soap->href != '#') + { + int err = soap_s2dateTime(soap, soap_value(soap), p); + if ((soap->body && soap_element_end_in(soap, tag)) || err) + return NULL; + } + else + { + p = (time_t*)soap_id_forward(soap, soap->href, p, 0, t, t, sizeof(time_t), 0, NULL, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return p; +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_outliteral(struct soap *soap, const char *tag, char *const*p, const char *type) +{ + if (tag && *tag != '-') + if (soap_element_begin_out(soap, tag, 0, type)) + return soap->error; + if (p && *p) + if (soap_send(soap, *p)) /* send as-is */ + return soap->error; + if (tag && *tag != '-') + return soap_element_end_out(soap, tag); + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +char ** +SOAP_FMAC2 +soap_inliteral(struct soap *soap, const char *tag, char **p) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + { + if (soap->error != SOAP_NO_TAG || soap_peek(soap) == SOAP_TT) + return NULL; + soap->error = SOAP_OK; + } + if (!p) + { + p = (char**)soap_malloc(soap, sizeof(char*)); + if (!p) + return NULL; + } + if (soap->body || (tag && *tag == '-')) + { + if (tag && *tag != '-') + *p = soap_string_in(soap, -1, -1, -1, NULL); + else + *p = soap_string_in(soap, 0, -1, -1, NULL); + if (!*p) + return NULL; + if (!**p && tag && *tag == '-') + { + soap->error = SOAP_NO_TAG; + return NULL; + } + } + else if (soap->null) + { + *p = NULL; + } + else + { + *p = soap_strdup(soap, SOAP_STR_EOS); + } + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return p; +} + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_outwliteral(struct soap *soap, const char *tag, wchar_t *const*p, const char *type) +{ + if (tag && *tag != '-') + if (soap_element_begin_out(soap, tag, 0, type)) + return soap->error; + if (p) + { + wchar_t c; + const wchar_t *s = *p; + while ((c = *s++)) + { + if (soap_pututf8(soap, (unsigned long)c)) /* send as-is in UTF8 */ + return soap->error; + } + } + if (tag && *tag != '-') + return soap_element_end_out(soap, tag); + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +wchar_t ** +SOAP_FMAC2 +soap_inwliteral(struct soap *soap, const char *tag, wchar_t **p) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + { + if (soap->error != SOAP_NO_TAG || soap_peek(soap) == SOAP_TT) + return NULL; + soap->error = SOAP_OK; + } + if (!p) + { + p = (wchar_t**)soap_malloc(soap, sizeof(wchar_t*)); + if (!p) + return NULL; + } + if (soap->body) + { + if (tag && *tag != '-') + *p = soap_wstring_in(soap, -1, -1, -1, NULL); + else + *p = soap_wstring_in(soap, 0, -1, -1, NULL); + if (!*p) + return NULL; + if (!**p && tag && *tag == '-') + { + soap->error = SOAP_NO_TAG; + return NULL; + } + } + else if (tag && *tag == '-') + { + soap->error = SOAP_NO_TAG; + return NULL; + } + else if (soap->null) + { + *p = NULL; + } + else + { + *p = soap_wstrdup(soap, L""); + } + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return p; +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +const char * +SOAP_FMAC2 +soap_value(struct soap *soap) +{ + size_t i; + soap_wchar c = 0; + char *s = soap->tmpbuf; + if (!soap->body) + return SOAP_STR_EOS; + do + { + c = soap_get(soap); + } while (soap_coblank(c)); + for (i = 0; i < sizeof(soap->tmpbuf) - 1; i++) + { + if (c == SOAP_TT || c == SOAP_LT || (int)c == EOF) + break; + *s++ = (char)c; + c = soap_get(soap); + } + for (s--; i > 0; i--, s--) + { + if (!soap_coblank((soap_wchar)*s)) + break; + } + s[1] = '\0'; + soap->tmpbuf[sizeof(soap->tmpbuf) - 1] = '\0'; /* appease */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Element content value='%s'\n", soap->tmpbuf)); + if (c == SOAP_TT || c == SOAP_LT || (int)c == EOF) + { + soap_unget(soap, c); + } + else + { + soap->error = SOAP_LENGTH; + return NULL; + } +#ifdef WITH_DOM + if ((soap->mode & SOAP_XML_DOM) && soap->dom) + { + soap->dom->text = soap_strdup(soap, soap->tmpbuf); + if (!soap->dom->text) + return NULL; + } +#endif + return soap->tmpbuf; /* return non-null pointer */ +} + +/******************************************************************************/ + +#if !defined(WITH_LEANER) || !defined(WITH_NOHTTP) +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_getline(struct soap *soap, char *buf, int len) +{ + char *s = buf; + int i = len; + soap_wchar c = 0; + for (;;) + { + while (i > 1) + { + c = soap_getchar(soap); + if (c == '\r' || c == '\n') + break; + if ((int)c == EOF) + return soap->error = SOAP_CHK_EOF; + *s++ = (char)c; + i--; + } + *s = '\0'; + if (c != '\n') + c = soap_getchar(soap); /* got \r or something else, now get \n */ + if (c == '\n') + { + if (i == len) /* empty line: end of HTTP/MIME header */ + break; + c = soap_get0(soap); + if (c != ' ' && c != '\t') /* HTTP line continuation? */ + break; + } + else if ((int)c == EOF) + { + return soap->error = SOAP_CHK_EOF; + } + else if (i <= 1) + { + return soap->error = SOAP_HDR; + } + } + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +static ULONG64 +soap_count_attachments(struct soap *soap) +{ +#ifndef WITH_LEANER + struct soap_multipart *content; + ULONG64 count = soap->count; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Calculating the message size with attachments, current count=" SOAP_ULONG_FORMAT "\n", count)); + if ((soap->mode & SOAP_ENC_DIME) && !(soap->mode & SOAP_ENC_MTOM)) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Calculating the size of DIME attachments\n")); + for (content = soap->dime.first; content; content = content->next) + { + count += 12 + ((content->size+3)&(~3)); + if (content->id) + count += ((strlen(content->id)+3)&(~3)); + if (content->type) + count += ((strlen(content->type)+3)&(~3)); + if (content->options) + count += ((((unsigned char)content->options[2] << 8) | ((unsigned char)content->options[3]))+7)&(~3); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Size of DIME attachment content is %lu bytes\n", (unsigned long)content->size)); + } + } + if ((soap->mode & SOAP_ENC_MIME) && soap->mime.boundary) + { + size_t n = strlen(soap->mime.boundary); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Calculating the size of MIME attachments\n")); + for (content = soap->mime.first; content; content = content->next) + { + const char *s; + /* count \r\n--boundary\r\n */ + count += 6 + n; + /* count Content-Type: ...\r\n */ + if (content->type) + count += 16 + strlen(content->type); + /* count Content-Transfer-Encoding: ...\r\n */ + s = soap_code_str(mime_codes, content->encoding); + if (s) + count += 29 + strlen(s); + /* count Content-ID: ...\r\n */ + if (content->id) + count += 14 + strlen(content->id); + /* count Content-Location: ...\r\n */ + if (content->location) + count += 20 + strlen(content->location); + /* count Content-Description: ...\r\n */ + if (content->description) + count += 23 + strlen(content->description); + /* count \r\n...content */ + count += 2 + content->size; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Size of MIME attachment content is %lu bytes\n", (unsigned long)content->size)); + } + /* count \r\n--boundary-- */ + count += 6 + n; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "New count=" SOAP_ULONG_FORMAT "\n", count)); + return count; +#else + return soap->count; +#endif +} + +/******************************************************************************/ + +#ifndef WITH_LEANER +static int +soap_putdimefield(struct soap *soap, const char *s, size_t n) +{ + if (soap_send_raw(soap, s, n)) + return soap->error; + return soap_send_raw(soap, SOAP_STR_PADDING, -(long)n&3); +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +char * +SOAP_FMAC2 +soap_dime_option(struct soap *soap, unsigned short optype, const char *option) +{ + size_t n; + char *s = NULL; + if (option) + { + n = strlen(option); + s = (char*)soap_malloc(soap, n + 5); + if (s) + { + s[0] = (char)(optype >> 8); + s[1] = (char)(optype & 0xFF); + s[2] = (char)(n >> 8); + s[3] = (char)(n & 0xFF); + soap_strcpy(s + 4, n + 1, option); + } + } + return s; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_putdimehdr(struct soap *soap) +{ + unsigned char tmp[12]; + size_t optlen = 0, idlen = 0, typelen = 0; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Put DIME header id='%s'\n", soap->dime.id ? soap->dime.id : SOAP_STR_EOS)); + if (soap->dime.options) + optlen = (((unsigned char)soap->dime.options[2] << 8) | ((unsigned char)soap->dime.options[3])) + 4; + if (soap->dime.id) + { + idlen = strlen(soap->dime.id); + if (idlen > 0x0000FFFF) + idlen = 0x0000FFFF; + } + if (soap->dime.type) + { + typelen = strlen(soap->dime.type); + if (typelen > 0x0000FFFF) + typelen = 0x0000FFFF; + } + tmp[0] = SOAP_DIME_VERSION | (soap->dime.flags & 0x7); + tmp[1] = soap->dime.flags & 0xF0; + tmp[2] = (char)(optlen >> 8); + tmp[3] = (char)(optlen & 0xFF); + tmp[4] = (char)(idlen >> 8); + tmp[5] = (char)(idlen & 0xFF); + tmp[6] = (char)(typelen >> 8); + tmp[7] = (char)(typelen & 0xFF); + tmp[8] = (char)(soap->dime.size >> 24); + tmp[9] = (char)((soap->dime.size >> 16) & 0xFF); + tmp[10] = (char)((soap->dime.size >> 8) & 0xFF); + tmp[11] = (char)(soap->dime.size & 0xFF); + if (soap_send_raw(soap, (char*)tmp, 12) + || soap_putdimefield(soap, soap->dime.options, optlen) + || soap_putdimefield(soap, soap->dime.id, idlen) + || soap_putdimefield(soap, soap->dime.type, typelen)) + return soap->error; + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_putdime(struct soap *soap) +{ + struct soap_multipart *content; + if (!(soap->mode & SOAP_ENC_DIME)) + return SOAP_OK; + for (content = soap->dime.first; content; content = content->next) + { + void *handle; + soap->dime.size = content->size; + soap->dime.id = content->id; + soap->dime.type = content->type; + soap->dime.options = content->options; + soap->dime.flags = SOAP_DIME_VERSION | SOAP_DIME_MEDIA; + if (soap->fdimereadopen && ((handle = soap->fdimereadopen(soap, (void*)content->ptr, content->id, content->type, content->options)) != NULL || soap->error)) + { + size_t size = content->size; + if (!handle) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "fdimereadopen failed\n")); + return soap->error; + } + if (!size && ((soap->mode & SOAP_ENC_PLAIN) || (soap->mode & SOAP_IO) == SOAP_IO_CHUNK || (soap->mode & SOAP_IO) == SOAP_IO_STORE)) + { + size_t chunksize = sizeof(soap->tmpbuf); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Chunked streaming DIME\n")); + do + { + size = soap->fdimeread(soap, handle, soap->tmpbuf, chunksize); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "fdimeread returned %lu bytes\n", (unsigned long)size)); + if (size < chunksize) + { + soap->dime.flags &= ~SOAP_DIME_CF; + if (!content->next) + soap->dime.flags |= SOAP_DIME_ME; + } + else + { + soap->dime.flags |= SOAP_DIME_CF; + } + soap->dime.size = size; + if (soap_putdimehdr(soap) + || soap_putdimefield(soap, soap->tmpbuf, size)) + break; + if (soap->dime.id) + { + soap->dime.flags &= ~(SOAP_DIME_MB | SOAP_DIME_MEDIA); + soap->dime.id = NULL; + soap->dime.type = NULL; + soap->dime.options = NULL; + } + } while (size >= chunksize); + } + else + { + if (!content->next) + soap->dime.flags |= SOAP_DIME_ME; + if (soap_putdimehdr(soap)) + return soap->error; + do + { + size_t bufsize; + if (size < sizeof(soap->tmpbuf)) + bufsize = size; + else + bufsize = sizeof(soap->tmpbuf); + bufsize = soap->fdimeread(soap, handle, soap->tmpbuf, bufsize); + if (!bufsize) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "fdimeread failed: insufficient data (%lu bytes remaining from %lu bytes)\n", (unsigned long)size, (unsigned long)content->size)); + soap->error = SOAP_CHK_EOF; + break; + } + if (soap_send_raw(soap, soap->tmpbuf, bufsize)) + break; + size -= bufsize; + } while (size); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "fdimereadclose\n")); + if (soap_send_raw(soap, SOAP_STR_PADDING, -(long)soap->dime.size&3)) + return soap->error; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "fdimereadclose\n")); + if (soap->fdimereadclose) + soap->fdimereadclose(soap, handle); + } + else + { + if (!content->next) + soap->dime.flags |= SOAP_DIME_ME; + if (soap_putdimehdr(soap) + || soap_putdimefield(soap, (char*)content->ptr, content->size)) + return soap->error; + } + } + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +static char * +soap_getdimefield(struct soap *soap, size_t n) +{ + char *p = NULL; + if (n > 0) + { + p = (char*)soap_malloc(soap, n + 1 > n ? n + 1 : n); + if (p) + { + char *s = p; + size_t i; + for (i = n; i > 0; i--) + { + soap_wchar c = soap_get1(soap); + if ((int)c == EOF) + { + soap->error = SOAP_CHK_EOF; + return NULL; + } + *s++ = (char)c; + } + if (n + 1 > n) + *s = '\0'; /* force NUL terminated */ + soap->error = soap_move(soap, (size_t)(-(long)n&3)); + if (soap->error) + return NULL; + } + else + { + soap->error = SOAP_EOM; + } + } + return p; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_getdimehdr(struct soap *soap) +{ + soap_wchar c; + char *s; + int i; + unsigned char tmp[12]; + size_t optlen, idlen, typelen; + if (!(soap->mode & SOAP_ENC_DIME)) + return soap->error = SOAP_DIME_END; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Get DIME header\n")); + s = (char*)tmp; + for (i = 12; i > 0; i--) + { + c = soap_getchar(soap); + if ((int)c == EOF) + return soap->error = SOAP_CHK_EOF; + *s++ = (char)c; + } + if ((tmp[0] & 0xF8) != SOAP_DIME_VERSION) + return soap->error = SOAP_DIME_MISMATCH; + soap->dime.flags = (tmp[0] & 0x7) | (tmp[1] & 0xF0); + optlen = (tmp[2] << 8) | tmp[3]; + idlen = (tmp[4] << 8) | tmp[5]; + typelen = (tmp[6] << 8) | tmp[7]; + soap->dime.size = ((size_t)tmp[8] << 24) | ((size_t)tmp[9] << 16) | ((size_t)tmp[10] << 8) | ((size_t)tmp[11]); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "DIME size=%lu flags=0x%X\n", (unsigned long)soap->dime.size, soap->dime.flags)); + soap->dime.options = soap_getdimefield(soap, optlen); + if (!soap->dime.options && soap->error) + return soap->error; + soap->dime.id = soap_getdimefield(soap, idlen); + if (!soap->dime.id && soap->error) + return soap->error; + soap->dime.type = soap_getdimefield(soap, typelen); + if (!soap->dime.type && soap->error) + return soap->error; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "DIME flags=%x id='%s', type='%s', options='%s'\n", soap->dime.flags, soap->dime.id ? soap->dime.id : SOAP_STR_EOS, soap->dime.type ? soap->dime.type : "", soap->dime.options ? soap->dime.options+4 : SOAP_STR_EOS)); + if ((soap->dime.flags & SOAP_DIME_ME)) + soap->mode &= ~SOAP_ENC_DIME; + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_getdime(struct soap *soap) +{ + if (soap->dime.buflen || soap->dime.chunksize) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Skip remainder of SOAP in DIME (%u bytes or %u bytes in chunk left)\n", (unsigned int)soap->dime.buflen, (unsigned int)soap->dime.chunksize)); + do + if (soap_get1(soap) == (int)EOF) + return soap->error = SOAP_CHK_EOF; + while (soap->dime.buflen || soap->dime.chunksize); + if (soap_move(soap, (size_t)(-(long)soap->dime.size&3))) + return soap->error = SOAP_CHK_EOF; + if (!(soap->mode & SOAP_ENC_DIME)) + return SOAP_OK; + } + else + { + if (soap_move(soap, (size_t)(((soap->dime.size+3)&(~3)) - soap_tell(soap)))) + return soap->error = SOAP_CHK_EOF; + } + for (;;) + { + struct soap_multipart *content; + if (soap_getdimehdr(soap)) + break; + if (soap->fdimewriteopen && ((soap->dime.ptr = (char*)soap->fdimewriteopen(soap, soap->dime.id, soap->dime.type, soap->dime.options)) != NULL || soap->error)) + { + const char *id, *type, *options; + size_t size, n; + if (!soap->dime.ptr) + return soap->error; + id = soap->dime.id; + type = soap->dime.type; + options = soap->dime.options; + for (;;) + { + size = soap->dime.size; + for (;;) + { + n = soap->buflen - soap->bufidx; + if (size < n) + n = size; + soap->error = soap->fdimewrite(soap, (void*)soap->dime.ptr, soap->buf + soap->bufidx, n); + if (soap->error) + break; + size -= n; + if (!size) + { + soap->bufidx += n; + break; + } + if (soap_recv(soap)) + { + soap->error = SOAP_EOF; + goto end; + } + } + if (soap_move(soap, (size_t)(-(long)soap->dime.size&3))) + { + soap->error = SOAP_EOF; + break; + } + if (!(soap->dime.flags & SOAP_DIME_CF)) + break; + if (soap_getdimehdr(soap)) + break; + } +end: + if (soap->fdimewriteclose) + soap->fdimewriteclose(soap, (void*)soap->dime.ptr); + soap->dime.size = 0; + soap->dime.id = id; + soap->dime.type = type; + soap->dime.options = options; + } + else if ((soap->dime.flags & SOAP_DIME_CF)) + { + const char *id, *type, *options; + id = soap->dime.id; + type = soap->dime.type; + options = soap->dime.options; + if (soap_alloc_block(soap) == NULL) + return soap->error = SOAP_EOM; + for (;;) + { + soap_wchar c; + size_t i; + char *s; + if (soap->dime.size > SOAP_MAXDIMESIZE) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "DIME size=%lu exceeds SOAP_MAXDIMESIZE=%lu\n", (unsigned long)soap->dime.size, (unsigned long)SOAP_MAXDIMESIZE)); + return soap->error = SOAP_DIME_ERROR; + } + s = (char*)soap_push_block(soap, NULL, soap->dime.size); + if (!s) + return soap->error = SOAP_EOM; + for (i = soap->dime.size; i > 0; i--) + { + c = soap_get1(soap); + if ((int)c == EOF) + return soap->error = SOAP_EOF; + *s++ = (char)c; + } + if (soap_move(soap, (size_t)(-(long)soap->dime.size&3))) + return soap->error = SOAP_EOF; + if (!(soap->dime.flags & SOAP_DIME_CF)) + break; + if (soap_getdimehdr(soap)) + return soap->error; + } + soap->dime.size = soap->blist->size; + if (soap->dime.size + 1 > soap->dime.size) + soap->blist->size++; /* allocate one more byte in blist for the terminating '\0' */ + soap->dime.ptr = soap_save_block(soap, NULL, NULL, 0); + if (!soap->dime.ptr) + return soap->error; + if (soap->dime.size + 1 > soap->dime.size) + soap->dime.ptr[soap->dime.size] = '\0'; /* make 0-terminated, just in case even though this is binary data */ + soap->dime.id = id; + soap->dime.type = type; + soap->dime.options = options; + } + else + { + soap->dime.ptr = soap_getdimefield(soap, soap->dime.size); + } + content = soap_alloc_multipart(soap, &soap->dime.first, &soap->dime.last, soap->dime.ptr, soap->dime.size); + if (!content) + return soap->error = SOAP_EOM; + content->id = soap->dime.id; + content->type = soap->dime.type; + content->options = soap->dime.options; + if (soap->error) + return soap->error; + soap_resolve_attachment(soap, content); + } + if (soap->error != SOAP_DIME_END) + return soap->error; + return soap->error = SOAP_OK; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_getmimehdr(struct soap *soap) +{ + struct soap_multipart *content; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Get MIME header\n")); + do + { + if (soap_getline(soap, soap->msgbuf, sizeof(soap->msgbuf))) + return soap->error; + } while (!*soap->msgbuf); + if (soap->msgbuf[0] == '-' && soap->msgbuf[1] == '-') + { + char *s = soap->msgbuf + strlen(soap->msgbuf) - 1; + /* remove white space */ + while (soap_coblank((soap_wchar)*s)) + s--; + s[1] = '\0'; + if (soap->mime.boundary) + { + if (strcmp(soap->msgbuf + 2, soap->mime.boundary)) + return soap->error = SOAP_MIME_ERROR; + } + else + { + soap->mime.boundary = soap_strdup(soap, soap->msgbuf + 2); + if (!soap->mime.boundary) + return soap->error = SOAP_EOM; + } + if (soap_getline(soap, soap->msgbuf, sizeof(soap->msgbuf))) + return soap->error; + } + if (soap_set_mime_attachment(soap, NULL, 0, SOAP_MIME_NONE, NULL, NULL, NULL, NULL)) + return soap->error = SOAP_EOM; + content = soap->mime.last; + for (;;) + { + char *key = soap->msgbuf; + char *val; + if (!*key) + break; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "MIME header: %s\n", key)); + val = strchr(soap->msgbuf, ':'); + if (val) + { + *val = '\0'; + do + { + val++; + } while (*val && *val <= 32); + if (!soap_tag_cmp(key, "Content-ID")) + content->id = soap_strdup(soap, val); + else if (!soap_tag_cmp(key, "Content-Location")) + content->location = soap_strdup(soap, val); + else if (!content->id && !soap_tag_cmp(key, "Content-Disposition")) + content->id = soap_strdup(soap, soap_http_header_attribute(soap, val, "name")); + else if (!soap_tag_cmp(key, "Content-Type")) + content->type = soap_strdup(soap, val); + else if (!soap_tag_cmp(key, "Content-Description")) + content->description = soap_strdup(soap, val); + else if (!soap_tag_cmp(key, "Content-Transfer-Encoding")) + content->encoding = (enum soap_mime_encoding)soap_code_int(mime_codes, val, (LONG64)SOAP_MIME_NONE); + } + if (soap_getline(soap, key, sizeof(soap->msgbuf))) + return soap->error; + } + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_getmime(struct soap *soap) +{ + while (soap_recv_mime_attachment(soap, NULL)) + continue; + return soap->error; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_post_check_mime_attachments(struct soap *soap) +{ + soap->imode |= SOAP_MIME_POSTCHECK; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_check_mime_attachments(struct soap *soap) +{ + if ((soap->mode & SOAP_MIME_POSTCHECK)) + return soap_recv_mime_attachment(soap, NULL) != NULL; + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +struct soap_multipart * +SOAP_FMAC2 +soap_recv_mime_attachment(struct soap *soap, void *handle) +{ + soap_wchar c = 0; + size_t i, m = 0; + char *s, *t = NULL; + struct soap_multipart *content; + short flag = 0; + if (!(soap->mode & SOAP_ENC_MIME)) + return NULL; + content = soap->mime.last; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Get MIME (%p)\n", (void*)content)); + if (!content) + { + if (soap_getmimehdr(soap)) + return NULL; + content = soap->mime.last; + } + else if (content != soap->mime.first) + { + if (soap->fmimewriteopen && ((content->ptr = (char*)soap->fmimewriteopen(soap, (void*)handle, content->id, content->type, content->description, content->encoding)) != NULL || soap->error)) + { + if (!content->ptr) + return NULL; + } + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Parsing MIME content id='%s' type='%s'\n", content->id ? content->id : SOAP_STR_EOS, content->type ? content->type : SOAP_STR_EOS)); + if (!content->ptr && soap_alloc_block(soap) == NULL) + { + soap->error = SOAP_EOM; + return NULL; + } + for (;;) + { + if (content->ptr) + { + s = soap->tmpbuf; + } + else + { + s = (char*)soap_push_block(soap, NULL, sizeof(soap->tmpbuf)); + if (!s) + { + soap->error = SOAP_EOM; + return NULL; + } + } + for (i = 0; i < sizeof(soap->tmpbuf); i++) + { + if (m > 0) + { + *s++ = *t++; + m--; + } + else + { + if (!flag) + { + c = soap_getchar(soap); + if ((int)c == EOF) + { + if (content->ptr && soap->fmimewriteclose) + soap->fmimewriteclose(soap, (void*)content->ptr); + soap->error = SOAP_CHK_EOF; + return NULL; + } + } + if (flag || c == '\r') + { + memset((void*)soap->msgbuf, 0, sizeof(soap->msgbuf)); + soap_strcpy(soap->msgbuf, sizeof(soap->msgbuf), "\n--"); + if (soap->mime.boundary) + { + if (soap_strncat(soap->msgbuf, sizeof(soap->msgbuf), soap->mime.boundary, sizeof(soap->msgbuf) - 4)) + { + soap->error = SOAP_MIME_ERROR; + return NULL; + } + } + t = soap->msgbuf; + do + { + c = soap_getchar(soap); + } while (c == *t++); + if ((int)c == EOF) + { + if (content->ptr && soap->fmimewriteclose) + soap->fmimewriteclose(soap, (void*)content->ptr); + soap->error = SOAP_CHK_EOF; + return NULL; + } + if (!*--t) + goto end; + *t = (char)c; + flag = (c == '\r'); + m = t - soap->msgbuf + 1 - flag; + t = soap->msgbuf; + c = '\r'; + } + *s++ = (char)c; + } + } + if (content->ptr && soap->fmimewrite) + { + soap->error = soap->fmimewrite(soap, (void*)content->ptr, soap->tmpbuf, i); + if (soap->error) + break; + } + } +end: + if (content->ptr) + { + if (!soap->error && soap->fmimewrite) + soap->error = soap->fmimewrite(soap, (void*)content->ptr, soap->tmpbuf, i); + if (soap->fmimewriteclose) + soap->fmimewriteclose(soap, (void*)content->ptr); + if (soap->error) + return NULL; + } + else + { + *s = '\0'; /* make 0-terminated, just in case even though this is binary data */ + content->size = soap_size_block(soap, NULL, i + 1) - 1; /* last block with '\0' */ + content->ptr = soap_save_block(soap, NULL, NULL, 0); + } + soap_resolve_attachment(soap, content); + if (c == '-' && soap_getchar(soap) == '-') + { + soap->mode &= ~SOAP_ENC_MIME; + if ((soap->mode & SOAP_MIME_POSTCHECK) && soap_end_recv(soap)) + { + if (soap->keep_alive == -2) /* special case to keep alive */ + soap->keep_alive = 0; + soap_closesock(soap); + return NULL; + } + } + else + { + while (c != '\r' && (int)c != EOF && soap_coblank(c)) + c = soap_getchar(soap); + if (c != '\r' || soap_getchar(soap) != '\n') + { + soap->error = SOAP_MIME_ERROR; + return NULL; + } + if (soap_getmimehdr(soap)) + return NULL; + } + return content; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_match_cid(struct soap *soap, const char *s, const char *t) +{ + size_t n; + if (!s) + return 1; + if (!strcmp(s, t)) + return 0; + if (!strncmp(s, "cid:", 4)) + s += 4; + n = strlen(t); + if (*t == '<') + { + t++; + n -= 2; + } + if (!strncmp(s, t, n) && !s[n]) + return 0; + (void)soap_decode(soap->tmpbuf, sizeof(soap->tmpbuf), s, SOAP_STR_EOS); + if (!strncmp(soap->tmpbuf, t, n) && !soap->tmpbuf[n]) + return 0; + return 1; +} +#endif + +/******************************************************************************/ + +/* return UUID "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx" in a temporary buffer */ +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_rand_uuid(struct soap *soap, const char *prefix) +{ + int r1, r2, r3, r4; +#ifdef WITH_OPENSSL + r1 = soap_random; + r2 = soap_random; +#else + size_t i; + static int k = 0xFACEB00C; + int lo = k % 127773; + int hi = k / 127773; +# if defined(HAVE_GETTIMEOFDAY) + struct timeval tv; + gettimeofday(&tv, NULL); + r1 = 10000000 * tv.tv_sec + tv.tv_usec; +# elif defined(UNDER_CE) + r1 = (int)Random(); +# elif !defined(WITH_LEAN) + r1 = (int)time(NULL); +# else + r1 = k; +# endif + k = 16807 * lo - 2836 * hi; + if (k <= 0) + k += 0x7FFFFFFF; + r2 = k; + /* k &= 0x8FFFFFFF; */ + for (i = 0; i < (sizeof(soap->buf) < 16UL ? sizeof(soap->buf) : 16UL); i++) + r2 += soap->buf[i]; +#endif + r3 = soap_random; + r4 = soap_random; + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), prefix ? strlen(prefix) + 37 : 37), "%s%8.8x-%4.4hx-4%3.3hx-%4.4hx-%4.4hx%8.8x", prefix ? prefix : SOAP_STR_EOS, r1, (short)(r2 >> 16), (short)(((short)r2 >> 4) & 0x0FFF), (short)(((short)(r3 >> 16) & 0x3FFF) | 0x8000), (short)r3, r4); + return soap->tmpbuf; +} + +/******************************************************************************/ + +#ifndef WITH_LEANER +static void +soap_resolve_attachment(struct soap *soap, struct soap_multipart *content) +{ + if (content->id) + { + struct soap_xlist **xp = &soap->xlist; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Resolving attachment data for id='%s'\n", content->id)); + while (*xp) + { + struct soap_xlist *xq = *xp; + if (!soap_match_cid(soap, xq->id, content->id)) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Found matching attachment id='%s' for content id='%s'\n", xq->id, content->id)); + *xp = xq->next; + *xq->ptr = (unsigned char*)content->ptr; + *xq->size = (int)content->size; + *xq->type = (char*)content->type; + if (content->options) + *xq->options = (char*)content->options; + else + *xq->options = (char*)content->description; + SOAP_FREE(soap, xq); + } + else + { + xp = &(*xp)->next; + } + } + } +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_putmimehdr(struct soap *soap, struct soap_multipart *content) +{ + const char *s; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "MIME attachment type='%s'\n", content->type ? content->type : SOAP_STR_EOS)); + if (soap_send3(soap, "\r\n--", soap->mime.boundary, "\r\n")) + return soap->error; + if (content->type && soap_send3(soap, "Content-Type: ", content->type, "\r\n")) + return soap->error; + s = soap_code_str(mime_codes, content->encoding); + if (s && soap_send3(soap, "Content-Transfer-Encoding: ", s, "\r\n")) + return soap->error; + if (content->id && soap_send3(soap, "Content-ID: ", content->id, "\r\n")) + return soap->error; + if (content->location && soap_send3(soap, "Content-Location: ", content->location, "\r\n")) + return soap->error; + if (content->description && soap_send3(soap, "Content-Description: ", content->description, "\r\n")) + return soap->error; + return soap_send_raw(soap, "\r\n", 2); +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_putmime(struct soap *soap) +{ + struct soap_multipart *content; + if (!(soap->mode & SOAP_ENC_MIME) || !soap->mime.boundary) + return SOAP_OK; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Sending MIME attachments\n")); + for (content = soap->mime.first; content; content = content->next) + { + void *handle; + if (soap->fmimereadopen && ((handle = soap->fmimereadopen(soap, (void*)content->ptr, content->id, content->type, content->description)) != NULL || soap->error)) + { + size_t size = content->size; + if (!handle) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "fmimereadopen failed\n")); + return soap->error; + } + if (soap_putmimehdr(soap, content)) + return soap->error; + if (!size) + { + if ((soap->mode & SOAP_ENC_PLAIN) || (soap->mode & SOAP_IO) == SOAP_IO_CHUNK || (soap->mode & SOAP_IO) == SOAP_IO_STORE) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Chunked streaming MIME\n")); + do + { + size = soap->fmimeread(soap, handle, soap->tmpbuf, sizeof(soap->tmpbuf)); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "fmimeread returned %lu bytes\n", (unsigned long)size)); + if (soap_send_raw(soap, soap->tmpbuf, size)) + break; + } while (size); + } + else + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Error: cannot chunk streaming MIME (no HTTP chunking)\n")); + } + } + else + { + do + { + size_t bufsize; + if (size < sizeof(soap->tmpbuf)) + bufsize = size; + else + bufsize = sizeof(soap->tmpbuf); + bufsize = soap->fmimeread(soap, handle, soap->tmpbuf, bufsize); + if (!bufsize) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "fmimeread failed: insufficient data (%lu bytes remaining from %lu bytes)\n", (unsigned long)size, (unsigned long)content->size)); + soap->error = SOAP_EOF; + break; + } + if (soap_send_raw(soap, soap->tmpbuf, bufsize)) + break; + size -= bufsize; + } while (size); + } + if (soap->fmimereadclose) + soap->fmimereadclose(soap, handle); + } + else + { + if (soap_putmimehdr(soap, content) + || soap_send_raw(soap, content->ptr, content->size)) + return soap->error; + } + } + return soap_send3(soap, "\r\n--", soap->mime.boundary, "--"); +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_set_dime(struct soap *soap) +{ + soap->omode |= SOAP_ENC_DIME; + soap->dime.first = NULL; + soap->dime.last = NULL; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_set_mime(struct soap *soap, const char *boundary, const char *start) +{ + soap->omode |= SOAP_ENC_MIME; + soap->mime.first = NULL; + soap->mime.last = NULL; + soap->mime.boundary = soap_strdup(soap, boundary); + soap->mime.start = soap_strdup(soap, start); +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_clr_dime(struct soap *soap) +{ + soap->omode &= ~SOAP_ENC_DIME; + soap->dime.first = NULL; + soap->dime.last = NULL; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_clr_mime(struct soap *soap) +{ + soap->omode &= ~SOAP_ENC_MIME; + soap->mime.first = NULL; + soap->mime.last = NULL; + soap->mime.boundary = NULL; + soap->mime.start = NULL; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +static int +soap_begin_attachments(struct soap *soap) +{ + if ((soap->mode & SOAP_ENC_MIME) && soap->mime.boundary && soap->mime.start) + { + const char *s; + if (strlen(soap->mime.boundary) + strlen(soap->mime.start) + 140 > sizeof(soap->tmpbuf)) + return soap->error = SOAP_EOM; + if ((soap->mode & SOAP_ENC_DIME) && !(soap->mode & SOAP_ENC_MTOM)) + { + s = "application/dime"; + } + else if (soap->version == 2) + { + if ((soap->mode & SOAP_ENC_MTOM)) + s = "application/xop+xml; charset=utf-8; type=\"application/soap+xml\""; + else + s = "application/soap+xml; charset=utf-8"; + } + else if ((soap->mode & SOAP_ENC_MTOM)) + { + s = "application/xop+xml; charset=utf-8; type=\"text/xml\""; + } + else + { + s = "text/xml; charset=utf-8"; + } + (SOAP_SNPRINTF_SAFE(soap->tmpbuf, sizeof(soap->tmpbuf)), "--%s\r\nContent-Type: %s\r\nContent-Transfer-Encoding: binary\r\nContent-ID: %s\r\n\r\n", soap->mime.boundary, s, soap->mime.start); + if (soap_send(soap, soap->tmpbuf)) + return soap->error; + } + if ((soap->mode & SOAP_IO_LENGTH)) + soap->dime.size = (size_t)soap->count; /* DIME in MIME correction, soap->count is small */ + if (!(soap->mode & SOAP_IO_LENGTH) && (soap->mode & SOAP_ENC_DIME)) + { + if (soap_putdimehdr(soap)) + return soap->error; + } + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +static int +soap_end_attachments(struct soap *soap) +{ + if ((soap->mode & SOAP_IO_LENGTH) && (soap->mode & SOAP_ENC_DIME) && !(soap->mode & SOAP_ENC_MTOM)) + { + if (soap->count > 0xFFFFFFFF) + return soap->error = SOAP_DIME_ERROR; + soap->dime.size = (size_t)soap->count - soap->dime.size; /* DIME in MIME correction */ + (SOAP_SNPRINTF(soap->id, sizeof(soap->id), strlen(soap->dime_id_format) + 20), soap->dime_id_format, 0); + soap->dime.id = soap->id; + if (soap->local_namespaces && soap->local_namespaces[0].id) + { + if (soap->local_namespaces[0].out) + soap->dime.type = (char*)soap->local_namespaces[0].out; + else + soap->dime.type = (char*)soap->local_namespaces[0].ns; + } + soap->dime.options = NULL; + soap->dime.flags = SOAP_DIME_MB | SOAP_DIME_ABSURI; + if (!soap->dime.first) + soap->dime.flags |= SOAP_DIME_ME; + soap->count += 12 + ((strlen(soap->dime.id)+3)&(~3)) + (soap->dime.type ? ((strlen(soap->dime.type)+3)&(~3)) : 0); + } + if ((soap->mode & SOAP_ENC_DIME) && !(soap->mode & SOAP_ENC_MTOM)) + return soap_send_raw(soap, SOAP_STR_PADDING, -(long)soap->dime.size&3); + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +static struct soap_multipart* +soap_alloc_multipart(struct soap *soap, struct soap_multipart **first, struct soap_multipart **last, const char *ptr, size_t size) +{ + struct soap_multipart *content; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "New DIME/MIME attachment %p (%lu)\n", (void*)ptr, (unsigned long)size)); + content = (struct soap_multipart*)soap_malloc(soap, sizeof(struct soap_multipart)); + if (content) + { + content->next = NULL; + content->ptr = ptr; + content->size = size; + content->id = NULL; + content->type = NULL; + content->options = NULL; + content->encoding = SOAP_MIME_NONE; + content->location = NULL; + content->description = NULL; + if (!*first) + *first = content; + if (*last) + (*last)->next = content; + *last = content; + } + return content; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_set_dime_attachment(struct soap *soap, const char *ptr, size_t size, const char *type, const char *id, unsigned short optype, const char *option) +{ + struct soap_multipart *content = soap_alloc_multipart(soap, &soap->dime.first, &soap->dime.last, ptr, size); + if (!content) + return SOAP_EOM; + content->id = soap_strdup(soap, id); + content->type = soap_strdup(soap, type); + content->options = soap_dime_option(soap, optype, option); + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_set_mime_attachment(struct soap *soap, const char *ptr, size_t size, enum soap_mime_encoding encoding, const char *type, const char *id, const char *location, const char *description) +{ + struct soap_multipart *content = soap_alloc_multipart(soap, &soap->mime.first, &soap->mime.last, ptr, size); + if (!content) + return SOAP_EOM; + content->id = soap_strdup(soap, id); + content->type = soap_strdup(soap, type); + content->encoding = encoding; + content->location = soap_strdup(soap, location); + content->description = soap_strdup(soap, description); + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +SOAP_FMAC1 +struct soap_multipart* +SOAP_FMAC2 +soap_next_multipart(struct soap_multipart *content) +{ + if (content) + return content->next; + return NULL; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +static void +soap_select_mime_boundary(struct soap *soap) +{ + while (!soap->mime.boundary || soap_valid_mime_boundary(soap)) + { + char *s = soap->mime.boundary; + size_t n = 0; + if (s) + n = strlen(s); + if (n < 16) + { + n = 64; + s = soap->mime.boundary = (char*)soap_malloc(soap, n + 1); + if (!s) + return; + } + *s++ = '='; + *s++ = '='; + n -= 4; + while (n) + { + *s++ = soap_base64o[soap_random & 0x3F]; + n--; + } + *s++ = '='; + *s++ = '='; + *s = '\0'; + } + if (!soap->mime.start) + soap->mime.start = ""; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER +static int +soap_valid_mime_boundary(struct soap *soap) +{ + struct soap_multipart *content; + size_t k; + if (soap->fmimeread) + return SOAP_OK; + k = strlen(soap->mime.boundary); + for (content = soap->mime.first; content; content = content->next) + { + if (content->ptr && content->size >= k) + { + const char *p = (const char*)content->ptr; + size_t i; + for (i = 0; i < content->size - k; i++, p++) + { + if (!strncmp(p, soap->mime.boundary, k)) + return SOAP_ERR; + } + } + } + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +#ifdef WITH_GZIP +static int +soap_getgziphdr(struct soap *soap) +{ + int i; + soap_wchar c = 0, f = 0; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Get gzip header\n")); + for (i = 0; i < 9; i++) + { + c = soap_get1(soap); + if (i == 1 && c == 8) + soap->z_dict = 0; + if (i == 2) + f = c; + } + if (f & 0x04) /* FEXTRA */ + { + i = soap_get1(soap); + i |= soap_get1(soap) << 8; + while (i-- > 0) + { + if ((int)soap_get1(soap) == EOF) + return soap->error = SOAP_ZLIB_ERROR; + } + } + if (f & 0x08) /* skip FNAME */ + { + do + { + c = soap_get1(soap); + } while (c && (int)c != EOF); + } + if ((int)c != EOF && (f & 0x10)) /* skip FCOMMENT */ + { + do + { + c = soap_get1(soap); + } while (c && (int)c != EOF); + } + if ((int)c != EOF && (f & 0x02)) /* skip FHCRC (CRC32 is used) */ + { + c = soap_get1(soap); + if ((int)c != EOF) + c = soap_get1(soap); + } + if ((int)c == EOF) + return soap->error = SOAP_ZLIB_ERROR; + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_begin_serve(struct soap *soap) +{ +#ifdef WITH_FASTCGI + if (FCGI_Accept() < 0) + { + soap->error = SOAP_EOF; + return soap_send_fault(soap); + } +#endif + soap_begin(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + { + if (soap->error < SOAP_STOP) + { +#ifdef WITH_FASTCGI + (void)soap_send_fault(soap); +#else + return soap_send_fault(soap); +#endif + } + return soap_closesock(soap); + } + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_begin_recv(struct soap *soap) +{ + soap_wchar c; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Initializing for input from socket=%d/fd=%d\n", (int)soap->socket, soap->recvfd)); + soap->error = SOAP_OK; +#ifndef WITH_LEANER + soap->recverror = SOAP_OK; +#endif + soap_free_temp(soap); + soap_set_local_namespaces(soap); + soap->version = 0; /* don't assume we're parsing SOAP content by default */ +#ifndef WITH_NOIDREF + soap_free_iht(soap); +#endif + if ((soap->imode & SOAP_IO) == SOAP_IO_CHUNK) + { + soap->imode &= ~SOAP_IO; + soap->omode = (soap->omode & ~SOAP_IO) | SOAP_IO_CHUNK; + } + soap->imode &= ~(SOAP_ENC_DIME | SOAP_ENC_MIME | SOAP_ENC_MTOM | SOAP_ENC_ZLIB); + soap->mode = soap->imode; + if (!(soap->mode & SOAP_IO_KEEPALIVE)) + soap->keep_alive = 0; + if (!soap->keep_alive) + soap->buflen = soap->bufidx = 0; + soap->null = 0; + soap->position = 0; + soap->mustUnderstand = 0; + soap->shaky = 0; + soap->ahead = 0; + soap->peeked = 0; + soap->level = 0; + soap->part = SOAP_BEGIN_RECV; + soap->count = 0; + soap->length = 0; + soap->cdata = 0; + *soap->endpoint = '\0'; + soap->action = NULL; + soap->header = NULL; + soap->fault = NULL; + soap->status = 0; + soap->fform = NULL; + soap->body = 1; +#ifndef WITH_LEANER + soap->dom = NULL; + soap->dime.count = 0; + soap->dime.chunksize = 0; + soap->dime.buflen = 0; + soap->dime.list = NULL; + soap->dime.first = NULL; + soap->dime.last = NULL; + soap->mime.list = NULL; + soap->mime.first = NULL; + soap->mime.last = NULL; + soap->mime.boundary = NULL; + soap->mime.start = NULL; +#endif +#ifdef WIN32 +#ifndef UNDER_CE +#ifndef WITH_FASTCGI + if (!soap_valid_socket(soap->socket) && !soap->is && soap->recvfd >= 0) /* Set win32 stdin or soap->recvfd to BINARY, e.g. to support DIME */ +#ifdef __BORLANDC__ + setmode(soap->recvfd, _O_BINARY); +#else + _setmode(soap->recvfd, _O_BINARY); +#endif +#endif +#endif +#endif +#ifdef WITH_ZLIB + soap->zlib_in = SOAP_ZLIB_NONE; + soap->zlib_out = SOAP_ZLIB_NONE; + if (!soap->d_stream) + { + soap->d_stream = (z_stream*)SOAP_MALLOC(soap, sizeof(z_stream)); + if (!soap->d_stream) + return soap->error = SOAP_EOM; + soap->d_stream->zalloc = Z_NULL; + soap->d_stream->zfree = Z_NULL; + soap->d_stream->opaque = Z_NULL; + soap->d_stream->next_in = Z_NULL; + soap->d_stream->msg = Z_NULL; + } + soap->d_stream->avail_in = 0; + soap->d_stream->next_out = (Byte*)soap->buf; + soap->d_stream->avail_out = sizeof(soap->buf); + soap->z_ratio_in = 1.0; +#endif +#ifdef WITH_OPENSSL + if (soap->ssl) + ERR_clear_error(); +#endif +#ifndef WITH_LEAN + soap->start = (ULONG64)time(NULL); +#endif +#ifndef WITH_LEANER + if (soap->fprepareinitrecv && (soap->error = soap->fprepareinitrecv(soap)) != SOAP_OK) + return soap->error; +#endif + c = soap_getchar(soap); +#ifdef WITH_GZIP + if (c == 0x1F) + { + if (soap_getgziphdr(soap)) + return soap->error; + if (inflateInit2(soap->d_stream, -MAX_WBITS) != Z_OK) + return soap->error = SOAP_ZLIB_ERROR; + if (soap->z_dict) + { + if (inflateSetDictionary(soap->d_stream, (const Bytef*)soap->z_dict, soap->z_dict_len) != Z_OK) + return soap->error = SOAP_ZLIB_ERROR; + } + soap->zlib_state = SOAP_ZLIB_INFLATE; + soap->mode |= SOAP_ENC_ZLIB; + soap->zlib_in = SOAP_ZLIB_GZIP; + soap->z_crc = crc32(0L, NULL, 0); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "gzip initialized\n")); + if (!soap->z_buf) + soap->z_buf = (char*)SOAP_MALLOC(soap, sizeof(soap->buf)); + (void)soap_memcpy((void*)soap->z_buf, sizeof(soap->buf), (const void*)soap->buf, sizeof(soap->buf)); + /* should not chunk over plain transport, so why bother to check? */ + /* if ((soap->mode & SOAP_IO) == SOAP_IO_CHUNK) */ + /* soap->z_buflen = soap->bufidx; */ + /* else */ + soap->d_stream->next_in = (Byte*)(soap->z_buf + soap->bufidx); + soap->d_stream->avail_in = (unsigned int)(soap->buflen - soap->bufidx); + soap->z_buflen = soap->buflen; + soap->buflen = soap->bufidx; + c = ' '; + } +#endif + while (soap_coblank(c)) + c = soap_getchar(soap); +#ifndef WITH_LEANER + if (c == '-' && soap_get0(soap) == '-') + { + soap->mode |= SOAP_ENC_MIME; + } + else if ((c & 0xFFFC) == (SOAP_DIME_VERSION | SOAP_DIME_MB) && (soap_get0(soap) & 0xFFF0) == 0x20) + { + soap->mode |= SOAP_ENC_DIME; + } + else +#endif + { + /* skip BOM */ + if (c == 0xEF && soap_get0(soap) == 0xBB) + { + soap_get1(soap); + c = soap_get1(soap); + if (c == 0xBF) + { + soap->mode &= ~SOAP_ENC_LATIN; + c = soap_getchar(soap); + } + else + { + c = (0x0F << 12) | (0xBB << 6) | (c & 0x3F); /* UTF-8 */ + } + } + else if ((c == 0xFE && soap_get0(soap) == 0xFF) /* UTF-16 BE */ + || (c == 0xFF && soap_get0(soap) == 0xFE)) /* UTF-16 LE */ + { + return soap->error = SOAP_UTF_ERROR; + } + /* skip space */ + while (soap_coblank(c)) + c = soap_getchar(soap); + } + if ((int)c == EOF) + return soap->error = SOAP_CHK_EOF; + soap_unget(soap, c); +#ifndef WITH_NOHTTP + /* if not XML/MIME/DIME/ZLIB, assume HTTP method or status line */ + if (((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) && !(soap->mode & (SOAP_ENC_MIME | SOAP_ENC_DIME | SOAP_ENC_ZLIB | SOAP_ENC_PLAIN))) + { + soap_mode m = soap->imode; + soap->error = soap->fparse(soap); + soap->mode = soap->imode; /* if imode is changed, effectuate */ + soap->imode = m; /* restore imode */ + if ((soap->mode & SOAP_IO) == SOAP_IO_CHUNK) + { + soap->chunkbuflen = soap->buflen; + soap->buflen = soap->bufidx; + soap->chunksize = 0; + } +#ifdef WITH_ZLIB + soap->mode &= ~SOAP_ENC_ZLIB; + if (soap->zlib_in != SOAP_ZLIB_NONE) + { +#ifdef WITH_GZIP + if (soap->zlib_in != SOAP_ZLIB_DEFLATE) + { + c = soap_get1(soap); + if (c == (int)EOF) + return soap->error = SOAP_EOF; + if (c == 0x1F) + { + if (soap_getgziphdr(soap)) + return soap->error; + if (inflateInit2(soap->d_stream, -MAX_WBITS) != Z_OK) + return soap->error = SOAP_ZLIB_ERROR; + soap->z_crc = crc32(0L, NULL, 0); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "gzip initialized\n")); + } + else + { + soap_revget1(soap); + if (inflateInit(soap->d_stream) != Z_OK) + return soap->error = SOAP_ZLIB_ERROR; + soap->zlib_in = SOAP_ZLIB_DEFLATE; + } + } + else +#endif + if (inflateInit(soap->d_stream) != Z_OK) + return soap->error = SOAP_ZLIB_ERROR; + if (soap->z_dict) + { + if (inflateSetDictionary(soap->d_stream, (const Bytef*)soap->z_dict, soap->z_dict_len) != Z_OK) + return soap->error = SOAP_ZLIB_ERROR; + } + soap->zlib_state = SOAP_ZLIB_INFLATE; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Inflate initialized\n")); + soap->mode |= SOAP_ENC_ZLIB; + if (!soap->z_buf) + soap->z_buf = (char*)SOAP_MALLOC(soap, sizeof(soap->buf)); + (void)soap_memcpy((void*)soap->z_buf, sizeof(soap->buf), (const void*)soap->buf, sizeof(soap->buf)); + soap->d_stream->next_in = (Byte*)(soap->z_buf + soap->bufidx); + soap->d_stream->avail_in = (unsigned int)(soap->buflen - soap->bufidx); + soap->z_buflen = soap->buflen; + soap->buflen = soap->bufidx; + } +#endif +#ifndef WITH_LEANER + if (soap->fpreparerecv && (soap->mode & SOAP_IO) != SOAP_IO_CHUNK && soap->buflen > soap->bufidx) + { + int r; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Invoking fpreparerecv\n")); + r = soap->fpreparerecv(soap, soap->buf + soap->bufidx, soap->buflen - soap->bufidx); + if (r) + return soap->error = r; + } +#endif + if (soap->error && soap->error < SOAP_STOP) + { + if (soap->status >= 200 && soap->status < 600) + { + const char *s = soap_http_get_body(soap, NULL); + (void)soap_end_recv(soap); + if (soap->status >= 300) + soap->keep_alive = 0; /* to force close */ + return soap_set_receiver_error(soap, "HTTP Error", s, soap->status); + } + return soap->error; + } + if (!soap->body && soap->status >= 200 && soap->status < 600) + return soap->error = soap->status; /* client side received HTTP status code */ + if (soap->status > SOAP_POST) + { + soap->fform = NULL; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Invoking http method handler\n")); + switch (soap->status) + { + case SOAP_GET: + if (soap_http_skip_body(soap) || soap_end_recv(soap)) + return soap->error; + soap->error = soap->fget(soap); + break; + case SOAP_PUT: + soap->error = soap->fput(soap); + break; + case SOAP_PATCH: + soap->error = soap->fpatch(soap); + break; + case SOAP_DEL: + if (soap_http_skip_body(soap) || soap_end_recv(soap)) + return soap->error; + soap->error = soap->fdel(soap); + break; + case SOAP_HEAD: + if (soap_http_skip_body(soap) || soap_end_recv(soap)) + return soap->error; + soap->error = soap->fhead(soap); + break; + case SOAP_OPTIONS: + if (soap_http_skip_body(soap) || soap_end_recv(soap)) + return soap->error; + soap->error = soap->fopt(soap); + break; + default: + if (soap_http_skip_body(soap) || soap_end_recv(soap)) + return soap->error; + return 405; + } + if (soap->error == SOAP_OK) + return soap->error = SOAP_STOP; /* prevents further processing */ + if (soap->error != SOAP_FORM || !soap->fform) /* continue if handler returned SOAP_FORM */ + return soap->error; + soap->error = SOAP_OK; + } + if (soap->fform) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Invoking http form handler\n")); + soap->error = soap->fform(soap); + if (soap->error == SOAP_OK) + return soap->error = SOAP_STOP; /* prevents further processing */ + if (soap->status != SOAP_POST || soap->error != 404) /* continue with POST if handler returned HTTP not found */ + return soap->error; + soap->error = SOAP_OK; + } + if (!soap->body) + return soap->error = SOAP_NO_DATA; + } +#endif +#ifndef WITH_LEANER + if ((soap->mode & SOAP_ENC_MIME)) + { + do /* skip preamble */ + { + c = soap_getchar(soap); + if ((int)c == EOF) + return soap->error = SOAP_CHK_EOF; + } while (c != '-' || soap_get0(soap) != '-'); + soap_unget(soap, c); + if (soap_getmimehdr(soap)) + return soap->error; + if (soap->mime.start) + { + do + { + if (!soap->mime.last->id) + break; + if (!soap_match_cid(soap, soap->mime.start, soap->mime.last->id)) + break; + } while (soap_recv_mime_attachment(soap, NULL)); + } + if (soap_http_header_attribute(soap, soap->mime.first->type, "application/dime")) + soap->mode |= SOAP_ENC_DIME; + } + if ((soap->mode & SOAP_ENC_DIME)) + { + if (soap_getdimehdr(soap)) + return soap->error; + if ((soap->dime.flags & SOAP_DIME_CF)) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Chunked SOAP in DIME message\n")); + soap->dime.chunksize = soap->dime.size; + if (soap->buflen - soap->bufidx >= soap->dime.chunksize) + { + soap->dime.buflen = soap->buflen; + soap->buflen = soap->bufidx + soap->dime.chunksize; + } + else + { + soap->dime.chunksize -= soap->buflen - soap->bufidx; + } + } + soap->count = soap->buflen - soap->bufidx; + if (soap->recv_maxlength && soap->count > soap->recv_maxlength) + return soap->error = SOAP_EOF; + } +#endif + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_envelope_begin_out(struct soap *soap) +{ + if (soap->version == 0) + return SOAP_OK; + soap->part = SOAP_IN_ENVELOPE; + return soap_element_begin_out(soap, "SOAP-ENV:Envelope", 0, NULL); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_envelope_end_out(struct soap *soap) +{ + if (soap->version == 0) + return SOAP_OK; + if (soap_element_end_out(soap, "SOAP-ENV:Envelope") + || soap_send_raw(soap, "\r\n", 2)) /* 2.8: always emit \r\n */ + return soap->error; + soap->part = SOAP_END_ENVELOPE; + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_http_has_body(struct soap *soap) +{ + return soap->length || (soap->mode & SOAP_ENC_ZLIB) || (soap->mode & SOAP_IO) == SOAP_IO_CHUNK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_http_skip_body(struct soap *soap) +{ + ULONG64 k = soap->length; + /* check HTTP body, return "" if none */ + if (!k && !(soap->mode & SOAP_ENC_ZLIB) && (soap->mode & SOAP_IO) != SOAP_IO_CHUNK) + return SOAP_OK; + /* do not consume DIME or MIME attachments, leave this to soap_end_recv */ + if ((soap->mode & SOAP_ENC_DIME) || (soap->mode & SOAP_ENC_MIME)) + return SOAP_OK; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Skipping HTTP body (mode=0x%x)\n", soap->mode)); + if (k && !(soap->mode & SOAP_ENC_ZLIB)) + { + size_t i; + soap->length = 0; + for (i = 0; i < k; i++) + { + soap_wchar c = soap_get1(soap); + if ((int)c == EOF) + break; + } + } + else + { + for (;;) + { + soap_wchar c = soap_get1(soap); + if ((int)c == EOF) + break; + } + } + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +char * +SOAP_FMAC2 +soap_http_get_body(struct soap *soap, size_t *len) +{ + return soap_http_get_body_prefix(soap, len, NULL); +} + +/******************************************************************************/ + +SOAP_FMAC1 +char * +SOAP_FMAC2 +soap_http_get_form(struct soap *soap) +{ + return soap_http_get_body_prefix(soap, NULL, "?"); +} + +/******************************************************************************/ + +SOAP_FMAC1 +char * +SOAP_FMAC2 +soap_http_get_body_prefix(struct soap *soap, size_t *len, const char *prefix) +{ + char *s; + ULONG64 k = soap->length; + size_t n = 0; + if (!prefix) + prefix = SOAP_STR_EOS; + else + n = strlen(prefix); + if (len) + *len = 0; + /* check HTTP body, return "" if none */ + if (!k && !(soap->mode & SOAP_ENC_ZLIB) && (soap->mode & SOAP_IO) != SOAP_IO_CHUNK) + return soap_strdup(soap, prefix); + /* do not consume DIME or MIME attachments, leave this to soap_end_recv */ + if ((soap->mode & SOAP_ENC_DIME) || (soap->mode & SOAP_ENC_MIME)) + return soap_strdup(soap, prefix); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Parsing HTTP body, prefixed with '%s' (mode=0x%x)\n", prefix, soap->mode)); + if (k && !(soap->mode & SOAP_ENC_ZLIB)) + { + char *t; + soap->length = 0; + /* http content length != 0 and uncompressed body */ + if ((SOAP_MAXALLOCSIZE != 0 && n + k > SOAP_MAXALLOCSIZE) || n + k > (ULONG64)((size_t)-2)) + { + soap->error = SOAP_EOM; + return NULL; + } + s = t = (char*)soap_malloc(soap, (size_t)k + n + 1); + if (s) + { + size_t i; + soap_strcpy(t, n + 1, prefix); + t += n; + for (i = 0; i < k; i++) + { + soap_wchar c = soap_get1(soap); + if ((int)c == EOF) + break; + *t++ = (char)(c & 0xFF); + } + *t = '\0'; + if (len) + *len = n + i; + } + else + { + soap->error = SOAP_EOM; + return NULL; + } + } + else + { + size_t i, l = 0; + if (soap_alloc_block(soap) == NULL) + return NULL; + if (n) + { + s = (char*)soap_push_block(soap, NULL, n); + if (!s) + return NULL; + soap_strcpy(s, n + 1, prefix); + l += n; + } + for (;;) + { + size_t k = SOAP_BLKLEN; + s = (char*)soap_push_block(soap, NULL, k); + if (!s) + return NULL; + for (i = 0; i < k; i++) + { + soap_wchar c; + l++; + if (l == 0) + { + soap->error = SOAP_EOM; + return NULL; + } + c = soap_get1(soap); + if ((int)c == EOF) + goto end; + *s++ = (char)(c & 0xFF); + } + } +end: + *s = '\0'; + if (len) + *len = l - 1; + soap_size_block(soap, NULL, i + 1); + s = soap_save_block(soap, NULL, NULL, 0); + } + return s; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_envelope_begin_in(struct soap *soap) +{ + soap->part = SOAP_IN_ENVELOPE; + if (soap_element_begin_in(soap, "SOAP-ENV:Envelope", 0, NULL)) + { + if (soap->error == SOAP_TAG_MISMATCH) + { + if (!soap_element_begin_in(soap, "Envelope", 0, NULL)) + soap->error = SOAP_VERSIONMISMATCH; + else if (soap->status == 0 + || (soap->status >= 200 && soap->status <= 299) + || soap->status == 400 + || soap->status == 500) + return SOAP_OK; /* allow non-SOAP (REST) XML content to be captured */ + soap->error = soap->status; + } + else if (soap->status) + { + soap->error = soap->status; + } + return soap->error; + } + soap_version(soap); + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_envelope_end_in(struct soap *soap) +{ + if (soap->version == 0) + return SOAP_OK; + soap->part = SOAP_END_ENVELOPE; + return soap_element_end_in(soap, "SOAP-ENV:Envelope"); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_body_begin_out(struct soap *soap) +{ + if (soap->version == 1) + soap->encoding = 1; +#ifndef WITH_LEAN + if ((soap->mode & SOAP_SEC_WSUID) && soap_set_attr(soap, "wsu:Id", "Body", 1)) + return soap->error; +#endif + if (soap->version == 0) + return SOAP_OK; + soap->part = SOAP_IN_BODY; + return soap_element_begin_out(soap, "SOAP-ENV:Body", 0, NULL); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_body_end_out(struct soap *soap) +{ + if (soap->version == 0) + return SOAP_OK; + if (soap_element_end_out(soap, "SOAP-ENV:Body")) + return soap->error; + soap->part = SOAP_END_BODY; + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_body_begin_in(struct soap *soap) +{ + if (soap->version == 0) + return SOAP_OK; + soap->part = SOAP_IN_BODY; + if (soap_element_begin_in(soap, "SOAP-ENV:Body", 0, NULL)) + return soap->error; + if (!soap->body) + soap->part = SOAP_NO_BODY; + return SOAP_OK; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_body_end_in(struct soap *soap) +{ + if (soap->version == 0) + return SOAP_OK; + if (soap->part == SOAP_NO_BODY) + return soap->error = SOAP_OK; + soap->part = SOAP_END_BODY; + return soap_element_end_in(soap, "SOAP-ENV:Body"); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_recv_header(struct soap *soap) +{ + if (soap_getheader(soap) && soap->error == SOAP_TAG_MISMATCH) + soap->error = SOAP_OK; + if (soap->error == SOAP_OK && soap->fheader) + soap->error = soap->fheader(soap); + return soap->error; +} + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_set_endpoint(struct soap *soap, const char *endpoint) +{ + const char *s, *t; + size_t i, n; + soap->endpoint[0] = '\0'; + soap->host[0] = '\0'; + soap->path[0] = '/'; + soap->path[1] = '\0'; + soap->port = 80; + if (!endpoint || !*endpoint) + return; +#ifdef WITH_OPENSSL + if (!soap_tag_cmp(endpoint, "https:*")) + soap->port = 443; +#endif + soap_strcpy(soap->endpoint, sizeof(soap->endpoint), endpoint); + s = strchr(endpoint, ':'); + if (s && s[1] == '/' && s[2] == '/') + s += 3; + else + s = endpoint; +#if !defined(WITH_NOHTTP) || !defined(WITH_LEANER) + t = strchr(s, '@'); + if (t && *s != ':' && *s != '@') + { + size_t l = t - s + 1; + char *r = (char*)soap_malloc(soap, l); + n = s - endpoint; + if (r) + { + s = soap_decode(r, l, s, ":@"); + soap->userid = r; + soap->passwd = SOAP_STR_EOS; + if (*s == ':') + { + s++; + if (*s != '@') + { + l = t - s + 1; + r = r + strlen(r) + 1; + s = soap_decode(r, l, s, "@"); + soap->passwd = r; + } + } + } + s++; + soap_strcpy(soap->endpoint + n, sizeof(soap->endpoint) - n, s); + } +#endif + n = strlen(s); + if (n >= sizeof(soap->host)) + n = sizeof(soap->host) - 1; +#ifdef WITH_IPV6 + if (s[0] == '[') + { + s++; + for (i = 0; i < n; i++) + { + if (s[i] == ']') + { + s++; + --n; + break; + } + soap->host[i] = s[i]; + } + } + else + { + for (i = 0; i < n; i++) + { + soap->host[i] = s[i]; + if (s[i] == '/' || s[i] == ':' || s[i] == '?') + break; + } + } +#else + for (i = 0; i < n; i++) + { + soap->host[i] = s[i]; + if (s[i] == '/' || s[i] == ':' || s[i] == '?') + break; + } +#endif + soap->host[i] = '\0'; + if (s[i] == ':') + { + soap->port = (int)soap_strtol(s + i + 1, NULL, 10); + for (i++; i < n; i++) + if (s[i] == '/') + break; + } + if (i < n && s[i]) + soap_strcpy(soap->path, sizeof(soap->path), s + i); + if (soap->override_host && *soap->override_host) + { + soap_strcpy(soap->host, sizeof(soap->host), soap->override_host); + if (soap->override_port) + soap->port = soap->override_port; + } + if (soap->userid && !soap->authrealm) + soap->authrealm = soap->host; +} + +/******************************************************************************/ + +#ifndef WITH_NOHTTP +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_GET(struct soap *soap, const char *endpoint, const char *action) +{ + return soap_connect_command(soap, SOAP_GET, endpoint, action); +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOHTTP +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_PUT(struct soap *soap, const char *endpoint, const char *action, const char *type) +{ + soap->http_content = type; + if ((soap->omode & SOAP_IO) != SOAP_IO_CHUNK) + { + soap->omode &= ~SOAP_IO; + soap->omode |= SOAP_IO_STORE; + } + return soap_connect_command(soap, SOAP_PUT, endpoint, action); +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOHTTP +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_POST(struct soap *soap, const char *endpoint, const char *action, const char *type) +{ + soap->http_content = type; + if ((soap->omode & SOAP_IO) != SOAP_IO_CHUNK) + { + soap->omode &= ~SOAP_IO; + soap->omode |= SOAP_IO_STORE; + } + return soap_connect_command(soap, SOAP_POST_FILE, endpoint, action); +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOHTTP +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_PATCH(struct soap *soap, const char *endpoint, const char *action, const char *type) +{ + soap->http_content = type; + if ((soap->omode & SOAP_IO) != SOAP_IO_CHUNK) + { + soap->omode &= ~SOAP_IO; + soap->omode |= SOAP_IO_STORE; + } + return soap_connect_command(soap, SOAP_PATCH, endpoint, action); +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOHTTP +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_DELETE(struct soap *soap, const char *endpoint) +{ + if (soap_connect_command(soap, SOAP_DEL, endpoint, NULL) + || soap_recv_empty_response(soap)) + return soap_closesock(soap); + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_connect(struct soap *soap, const char *endpoint, const char *action) +{ + return soap_connect_command(soap, SOAP_POST, endpoint, action); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_connect_command(struct soap *soap, int http_command, const char *endpoints, const char *action) +{ + if (endpoints) + { + int retry = soap->connect_retry; + unsigned int backoff = 1; + for (;;) + { + struct timeval tv; + const char *s; + s = strchr(endpoints, ' '); + if (s) + { + size_t l = strlen(endpoints); + char *endpoint = NULL; + if (SOAP_MAXALLOCSIZE == 0 || l <= SOAP_MAXALLOCSIZE) + endpoint = (char*)SOAP_MALLOC(soap, l + 1); + if (!endpoint) + return soap->error = SOAP_EOM; + for (;;) + { + (void)soap_strncpy(endpoint, l + 1, endpoints, s - endpoints); + endpoint[s - endpoints] = '\0'; + if (soap_try_connect_command(soap, http_command, endpoint, action) != SOAP_TCP_ERROR) + break; + while (*s == ' ') + s++; + if (!*s) + break; + soap->error = SOAP_OK; + endpoints = s; + s = strchr(endpoints, ' '); + if (!s) + s = endpoints + strlen(endpoints); + } + SOAP_FREE(soap, endpoint); + } + else + { + soap_try_connect_command(soap, http_command, endpoints, action); + } + if (soap->error != SOAP_TCP_ERROR || retry <= 0) + break; + soap->error = SOAP_OK; + tv.tv_sec = backoff; + tv.tv_usec = 0; + select(0, NULL, NULL, NULL, &tv); + if (backoff < 32) + backoff *= 2; + --retry; + } + } + return soap->error; +} + +/******************************************************************************/ + +static int +soap_try_connect_command(struct soap *soap, int http_command, const char *endpoint, const char *action) +{ + char host[sizeof(soap->host)]; + int port; + ULONG64 count; + soap->error = SOAP_OK; + (void)soap_memcpy(host, sizeof(host), soap->host, sizeof(soap->host)); /* save previous host name: if != then reconnect */ + port = soap->port; /* save previous port to compare */ + soap->status = http_command; + soap_set_endpoint(soap, endpoint); + soap->action = soap_strdup(soap, action); +#ifndef WITH_LEANER + if (soap->fconnect) + { + soap->error = soap->fconnect(soap, endpoint, soap->host, soap->port); + if (soap->error) + return soap->error; + } + else +#endif + if (soap->fopen && *soap->host) + { + if (!soap->keep_alive || !soap_valid_socket(soap->socket) || strcmp(soap->host, host) || soap->port != port || !soap->fpoll || soap->fpoll(soap)) + { + soap->error = SOAP_OK; +#ifndef WITH_LEAN + if (!strncmp(endpoint, "soap.udp:", 9) || !strncmp(endpoint, "udp:", 4)) + { + soap->omode |= SOAP_IO_UDP; + } + else +#endif + { + soap->keep_alive = 0; /* to force close */ + soap->omode &= ~SOAP_IO_UDP; /* to force close */ + } + soap_closesock(soap); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Connect/reconnect to '%s' host='%s' path='%s' port=%d\n", endpoint?endpoint:"(null)", soap->host, soap->path, soap->port)); + if (!soap->keep_alive || !soap_valid_socket(soap->socket)) + { + soap->socket = soap->fopen(soap, endpoint, soap->host, soap->port); + if (!soap_valid_socket(soap->socket) || soap->error) + { + if (soap->error) + return soap->error; + return soap->error = SOAP_TCP_ERROR; + } + soap->keep_alive = -((soap->omode & SOAP_IO_KEEPALIVE) != 0); + } + } + } +#ifdef WITH_NTLM + if (soap_ntlm_handshake(soap, SOAP_GET, endpoint, soap->host, soap->port)) + return soap->error; +#endif + count = soap_count_attachments(soap); + if (soap_init_send(soap)) + return soap->error; +#ifndef WITH_NOHTTP + if (http_command == SOAP_GET || http_command == SOAP_DEL || http_command == SOAP_HEAD || http_command == SOAP_OPTIONS) + { + soap->mode &= ~SOAP_IO; + soap->mode |= SOAP_IO_BUFFER; + } + if ((soap->mode & SOAP_IO) != SOAP_IO_STORE && !(soap->mode & SOAP_ENC_PLAIN) && endpoint) + { + soap_mode k = soap->mode; + soap->mode &= ~(SOAP_IO | SOAP_ENC_ZLIB); + if ((k & SOAP_IO) != SOAP_IO_FLUSH) + soap->mode |= SOAP_IO_BUFFER; + soap->error = soap->fpost(soap, endpoint, soap->host, soap->port, soap->path, action, count); + if (soap->error) + return soap->error; + if ((k & SOAP_IO) == SOAP_IO_CHUNK) + { + if (soap_flush(soap)) + return soap->error; + } + soap->mode = k; + } + if (http_command == SOAP_GET || http_command == SOAP_DEL || http_command == SOAP_HEAD || http_command == SOAP_OPTIONS) + return soap_end_send_flush(soap); +#endif +#ifndef WITH_LEANER + if (soap_begin_attachments(soap)) + return soap->error; +#endif + return SOAP_OK; +} + +/******************************************************************************/ + +#ifdef WITH_NTLM +static int +soap_ntlm_handshake(struct soap *soap, int command, const char *endpoint, const char *host, int port) +{ + /* requires libntlm from http://www.nongnu.org/libntlm/ */ + const char *userid = (soap->proxy_userid ? soap->proxy_userid : soap->userid); + const char *passwd = (soap->proxy_passwd ? soap->proxy_passwd : soap->passwd); + struct SOAP_ENV__Header *oldheader; + if (soap->ntlm_challenge && userid && passwd && soap->authrealm) + { + tSmbNtlmAuthRequest req; + tSmbNtlmAuthResponse res; + tSmbNtlmAuthChallenge ch; + int k = soap->keep_alive; + ULONG64 l = soap->length; + ULONG64 c = soap->count; + soap_mode m = soap->mode, o = soap->omode; + int s = soap->status; + char *a = soap->action; + short v = soap->version; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "NTLM '%s'\n", soap->ntlm_challenge)); + if (!*soap->ntlm_challenge) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "NTLM S->C Type 1: received NTLM authentication challenge from server\n")); + /* S -> C 401 Unauthorized + WWW-Authenticate: NTLM + */ + buildSmbNtlmAuthRequest(&req, userid, soap->authrealm); + soap->ntlm_challenge = soap_s2base64(soap, (unsigned char*)(void*)&req, NULL, SmbLength(&req)); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "NTLM C->S Type 2: sending NTLM authorization to server\nAuthorization: NTLM %s\n", soap->ntlm_challenge)); + /* C -> S GET ... + Authorization: NTLM TlRMTVNTUAABAAAAA7IAAAoACgApAAAACQAJACAAAABMSUdIVENJVFlVUlNBLU1JTk9S + */ + soap->omode = SOAP_IO_BUFFER; + if (soap_init_send(soap)) + return soap->error; + if (!soap->keep_alive) + soap->keep_alive = -1; /* client keep alive */ + soap->status = command; + if (soap->fpost(soap, endpoint, host, port, soap->path, soap->action, 0) + || soap_end_send_flush(soap)) + return soap->error; + soap->mode = m; + soap->keep_alive = k; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "NTLM S->C Type 2: waiting on server NTLM response\n")); + oldheader = soap->header; + if (soap_begin_recv(soap)) + if (soap->error == SOAP_EOF) + return soap->error; + (void)soap_end_recv(soap); + soap->header = oldheader; + soap->length = l; + if (soap->status != 401 && soap->status != 407) + return soap->error = SOAP_NTLM_ERROR; + soap->error = SOAP_OK; + } + /* S -> C 401 Unauthorized + WWW-Authenticate: NTLM TlRMTVNTUAACAAAAAAAAACgAAAABggAAU3J2Tm9uY2UAAAAAAAAAAA== + */ + soap_base642s(soap, soap->ntlm_challenge, (char*)&ch, sizeof(tSmbNtlmAuthChallenge), NULL); + buildSmbNtlmAuthResponse(&ch, &res, userid, passwd); + soap->ntlm_challenge = soap_s2base64(soap, (unsigned char*)(void*)&res, NULL, SmbLength(&res)); + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "NTLM C->S Type 3: sending NTLM authorization to server\nAuthorization: NTLM %s\n", soap->ntlm_challenge)); + /* C -> S GET ... + Authorization: NTLM TlRMTVNTUAADAAAAGAAYAHIAAAAYABgAigAAABQAFABAAAAADAAMAFQAAAASABIAYAAAAAAAAACiAAAAAYIAAFUAUgBTAEEALQBNAEkATgBPAFIAWgBhAHAAaABvAGQATABJAEcASABUAEMASQBUAFkArYfKbe/jRoW5xDxHeoxC1gBmfWiS5+iX4OAN4xBKG/IFPwfH3agtPEia6YnhsADT + */ + soap->userid = NULL; + soap->passwd = NULL; + soap->proxy_userid = NULL; + soap->proxy_passwd = NULL; + soap->keep_alive = k; + soap->length = l; + soap->count = c; + soap->mode = m; + soap->omode = o; + soap->status = s; + soap->action = a; + soap->version = v; + } + return SOAP_OK; +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +char* +SOAP_FMAC2 +soap_s2base64(struct soap *soap, const unsigned char *s, char *t, int n) +{ + int i; + unsigned long m; + char *p; + if (!t) + t = (char*)soap_malloc(soap, (n + 2) / 3 * 4 + 1); + if (!t) + return NULL; + p = t; + t[0] = '\0'; + if (!s) + return p; + for (; n > 2; n -= 3, s += 3) + { + m = s[0]; + m = (m << 8) | s[1]; + m = (m << 8) | s[2]; + for (i = 4; i > 0; m >>= 6) + t[--i] = soap_base64o[m & 0x3F]; + t += 4; + } + t[0] = '\0'; + if (n > 0) /* 0 < n <= 2 implies that t[0..4] is allocated (base64 scaling formula) */ + { + m = 0; + for (i = 0; i < n; i++) + m = (m << 8) | *s++; + for (; i < 3; i++) + m <<= 8; + for (i = 4; i > 0; m >>= 6) + t[--i] = soap_base64o[m & 0x3F]; + for (i = 3; i > n; i--) + t[i] = '='; + t[4] = '\0'; + } + return p; +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_base642s(struct soap *soap, const char *s, char *t, size_t l, int *n) +{ + size_t i, j; + soap_wchar c; + unsigned long m; + const char *p; + if (!s || !*s) + { + if (n) + *n = 0; + if (soap->error) + return NULL; + return SOAP_NON_NULL; + } + if (!t) + { + l = (strlen(s) + 3) / 4 * 3 + 1; /* space for raw binary and \0 */ + t = (char*)soap_malloc(soap, l); + } + if (!t) + return NULL; + p = t; + if (n) + *n = 0; + for (i = 0; ; i += 3, l -= 3) + { + m = 0; + j = 0; + while (j < 4) + { + c = *s++; + if (c == '=' || !c) + { + if (l >= j - 1) + { + switch (j) + { + case 2: + *t++ = (char)((m >> 4) & 0xFF); + i++; + l--; + break; + case 3: + *t++ = (char)((m >> 10) & 0xFF); + *t++ = (char)((m >> 2) & 0xFF); + i += 2; + l -= 2; + } + } + if (n) + *n = (int)i; + if (l) + *t = '\0'; + return p; + } + c -= '+'; + if (c >= 0 && c <= 79) + { + int b = soap_base64i[c]; + if (b >= 64) + { + soap->error = SOAP_TYPE; + return NULL; + } + m = (m << 6) + b; + j++; + } + else if (!soap_coblank(c + '+')) + { + soap->error = SOAP_TYPE; + return NULL; + } + } + if (l < 3) + { + if (n) + *n = (int)i; + if (l) + *t = '\0'; + return p; + } + *t++ = (char)((m >> 16) & 0xFF); + *t++ = (char)((m >> 8) & 0xFF); + *t++ = (char)(m & 0xFF); + } +} + +/******************************************************************************/ + +SOAP_FMAC1 +char* +SOAP_FMAC2 +soap_s2hex(struct soap *soap, const unsigned char *s, char *t, int n) +{ + char *p; + if (!t) + t = (char*)soap_malloc(soap, 2 * n + 1); + if (!t) + return NULL; + p = t; + t[0] = '\0'; + if (s) + { + for (; n > 0; n--) + { + int m = *s++; + *t++ = (char)((m >> 4) + (m > 159 ? 'a' - 10 : '0')); + m &= 0x0F; + *t++ = (char)(m + (m > 9 ? 'a' - 10 : '0')); + } + } + *t++ = '\0'; + return p; +} + +/******************************************************************************/ + +SOAP_FMAC1 +const char* +SOAP_FMAC2 +soap_hex2s(struct soap *soap, const char *s, char *t, size_t l, int *n) +{ + const char *p; + if (!s || !*s) + { + if (n) + *n = 0; + if (soap->error) + return NULL; + return SOAP_NON_NULL; + } + if (!t) + { + l = strlen(s) / 2 + 1; /* make sure enough space for \0 */ + t = (char*)soap_malloc(soap, l); + } + if (!t) + return NULL; + p = t; + while (l) + { + int d1, d2; + d1 = *s++; + if (!d1) + break; + d2 = *s++; + if (!d2) + break; + *t++ = (char)(((d1 >= 'A' ? (d1 & 0x7) + 9 : d1 - '0') << 4) + (d2 >= 'A' ? (d2 & 0x7) + 9 : d2 - '0')); + l--; + } + if (n) + *n = (int)(t - p); + if (l) + *t = '\0'; + return p; +} + +/******************************************************************************/ + +#ifndef WITH_NOHTTP +SOAP_FMAC1 +const char * +SOAP_FMAC2 +soap_http_content_type(struct soap *soap, int status) +{ + if (soap->status != SOAP_GET && soap->status != SOAP_DEL && soap->status != SOAP_CONNECT) + { + const char *s = "text/xml; charset=utf-8"; +#ifndef WITH_LEANER + const char *r = NULL; + size_t n; +#endif + if (((status >= SOAP_FILE && status < SOAP_FILE + 600) || soap->status == SOAP_PUT || soap->status == SOAP_POST_FILE || soap->status == SOAP_PATCH) && soap->http_content && *soap->http_content && !strchr(soap->http_content, 10) && !strchr(soap->http_content, 13)) + s = soap->http_content; + else if (status == SOAP_HTML) + s = "text/html; charset=utf-8"; + else if (soap->version == 2) + s = "application/soap+xml; charset=utf-8"; + soap->http_content = NULL; /* use http_content once (assign new value before each call) */ +#ifndef WITH_LEANER + if (soap->mode & (SOAP_ENC_DIME | SOAP_ENC_MTOM)) + { + if ((soap->mode & SOAP_ENC_MTOM)) + { + if (soap->version == 2) + r = "application/soap+xml"; + else + r = "text/xml"; + s = "application/xop+xml"; + } + else + { + s = "application/dime"; + } + } + if ((soap->mode & SOAP_ENC_MIME) && soap->mime.boundary) + { + const char *t; + size_t l; + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), strlen(soap->mime.boundary) + 53), "multipart/related; charset=utf-8; boundary=\"%s\"; type=\"", soap->mime.boundary); + t = strchr(s, ';'); + if (t) + n = t - s; + else + n = strlen(s); + l = strlen(soap->tmpbuf); + if (sizeof(soap->tmpbuf) > l + n) + (void)soap_strncpy(soap->tmpbuf + l, sizeof(soap->tmpbuf) - l, s, n); + if (soap->mime.start) + { + l = strlen(soap->tmpbuf); + (SOAP_SNPRINTF(soap->tmpbuf + l, sizeof(soap->tmpbuf) - l, strlen(soap->mime.start) + 10), "\"; start=\"%s", soap->mime.start); + } + if (r) + { + l = strlen(soap->tmpbuf); + (SOAP_SNPRINTF(soap->tmpbuf + l, sizeof(soap->tmpbuf) - l, strlen(r) + 15), "\"; start-info=\"%s", r); + } + l = strlen(soap->tmpbuf); + if (sizeof(soap->tmpbuf) > l) + soap_strcpy(soap->tmpbuf + l, sizeof(soap->tmpbuf) - l, "\""); + } + else + { + soap_strcpy(soap->tmpbuf, sizeof(soap->tmpbuf), s); + } + if (status == SOAP_OK && soap->version == 2 && soap->action) + { + size_t l = strlen(soap->tmpbuf); + n = strlen(soap->action); + (SOAP_SNPRINTF(soap->tmpbuf + l, sizeof(soap->tmpbuf) - l, n + 11), "; action=\"%s\"", soap->action); + } +#else + soap_strcpy(soap->tmpbuf, sizeof(soap->tmpbuf), s); +#endif + return soap->tmpbuf; + } + return NULL; +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOHTTP +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_puthttphdr(struct soap *soap, int status, ULONG64 count) +{ + int err = SOAP_OK; + if (soap_http_content_type(soap, status)) + { + err = soap->fposthdr(soap, "Content-Type", soap->tmpbuf); + if (err) + return err; +#ifdef WITH_ZLIB + if ((soap->omode & SOAP_ENC_ZLIB)) + { +#ifdef WITH_GZIP + err = soap->fposthdr(soap, "Content-Encoding", soap->zlib_out == SOAP_ZLIB_DEFLATE ? "deflate" : "gzip"); +#else + err = soap->fposthdr(soap, "Content-Encoding", "deflate"); +#endif + if (err) + return err; + } +#endif +#ifndef WITH_LEANER + if ((soap->omode & SOAP_IO) == SOAP_IO_CHUNK) + { + err = soap->fposthdr(soap, "Transfer-Encoding", "chunked"); + } + else +#endif + { + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), 20), SOAP_ULONG_FORMAT, count); + err = soap->fposthdr(soap, "Content-Length", soap->tmpbuf); + } + if (err) + return err; + } + if (soap->http_extra_header) + { + err = soap_send(soap, soap->http_extra_header); + soap->http_extra_header = NULL; /* use http_extra_header once (assign new value before each call) */ + if (err) + return err; + err = soap_send_raw(soap, "\r\n", 2); + if (err) + return err; + } + if (soap->keep_alive) + { + if (soap->keep_alive > 0 && soap->recv_timeout) + { + int t = soap->recv_timeout; + if (t < 0) + t = 1; + (SOAP_SNPRINTF(soap->tmpbuf, sizeof(soap->tmpbuf), 20), "timeout=%d, max=%d", soap->recv_timeout, soap->keep_alive); + err = soap->fposthdr(soap, "Keep-Alive", soap->tmpbuf); + if (err) + return err; + } + return soap->fposthdr(soap, "Connection", "keep-alive"); + } + return soap->fposthdr(soap, "Connection", "close"); +} +#endif + +/******************************************************************************/ + +#ifndef WITH_LEAN +static const char* +soap_set_validation_fault(struct soap *soap, const char *s, const char *t) +{ + if (!t) + t = SOAP_STR_EOS; + if (*soap->tag) + (SOAP_SNPRINTF(soap->msgbuf, sizeof(soap->msgbuf), strlen(s) + strlen(t) + strlen(soap->tag) + 47), "Validation constraint violation: %s%s in element '%s'", s, t, soap->tag); + else + (SOAP_SNPRINTF(soap->msgbuf, sizeof(soap->msgbuf), strlen(s) + strlen(t) + 33), "Validation constraint violation: %s%s", s, t); + return soap->msgbuf; +} +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_set_fault(struct soap *soap) +{ + const char **c; + const char **s; + if (soap->version == 0) + soap_version(soap); + c = soap_faultcode(soap); + s = soap_faultstring(soap); + if (soap->fseterror) + soap->fseterror(soap, c, s); + if (!*c) + { + if (soap->version == 2) + *c = "SOAP-ENV:Sender"; + else if (soap->version == 1) + *c = "SOAP-ENV:Client"; + else + *c = ""; + } + if (*s) + return; + if (soap->error >= SOAP_POST) + soap->error = SOAP_HTTP_METHOD; + switch (soap->error) + { +#ifndef WITH_LEAN + case SOAP_CLI_FAULT: + *s = "Client fault"; + break; + case SOAP_SVR_FAULT: + *s = "Server fault"; + break; + case SOAP_TAG_MISMATCH: + *s = soap_set_validation_fault(soap, "tag name or namespace mismatch", NULL); + break; + case SOAP_TYPE: + if (*soap->type) + *s = soap_set_validation_fault(soap, "type mismatch ", soap->type); + else if (*soap->arrayType) + *s = soap_set_validation_fault(soap, "array type mismatch", NULL); + else + *s = soap_set_validation_fault(soap, "invalid value", NULL); + break; + case SOAP_SYNTAX_ERROR: + *s = soap_set_validation_fault(soap, "syntax error", NULL); + break; + case SOAP_NO_TAG: + if (soap->version == 0 && soap->level == 0) + *s = soap_set_validation_fault(soap, "root element expected", NULL); + else if (soap->level == 0) + *s = soap_set_validation_fault(soap, "SOAP message expected", NULL); + else + *s = soap_set_validation_fault(soap, "element tag expected", NULL); + break; + case SOAP_END_TAG: + *s = soap_set_validation_fault(soap, "closing tag expected", NULL); + break; + case SOAP_MUSTUNDERSTAND: + *c = "SOAP-ENV:MustUnderstand"; + (SOAP_SNPRINTF(soap->msgbuf, sizeof(soap->msgbuf), strlen(soap->tag) + 65), "The data in element '%s' must be understood but cannot be processed", soap->tag); + *s = soap->msgbuf; + break; + case SOAP_VERSIONMISMATCH: + *c = "SOAP-ENV:VersionMismatch"; + *s = "Invalid SOAP message or SOAP version mismatch"; + break; + case SOAP_DATAENCODINGUNKNOWN: + *c = "SOAP-ENV:DataEncodingUnknown"; + *s = "Unsupported SOAP data encoding"; + break; + case SOAP_NAMESPACE: + *s = soap_set_validation_fault(soap, "namespace error", NULL); + break; + case SOAP_USER_ERROR: + *s = "User data access error"; + break; + case SOAP_NO_METHOD: + (SOAP_SNPRINTF(soap->msgbuf, sizeof(soap->msgbuf), strlen(soap->tag) + 66), "Method '%s' not implemented: method name or namespace not recognized", soap->tag); + *s = soap->msgbuf; + break; + case SOAP_NO_DATA: + *s = "Data required for operation"; + break; + case SOAP_GET_METHOD: + *s = "HTTP GET method not implemented"; + break; + case SOAP_PUT_METHOD: + *s = "HTTP PUT method not implemented"; + break; + case SOAP_PATCH_METHOD: + *s = "HTTP PATCH method not implemented"; + break; + case SOAP_DEL_METHOD: + *s = "HTTP DELETE method not implemented"; + break; + case SOAP_HTTP_METHOD: + *s = "HTTP method error"; + break; + case SOAP_EOM: + *s = "Out of memory"; + break; + case SOAP_MOE: + *s = "Memory overflow or memory corruption error"; + break; + case SOAP_HDR: + *s = "Header line too long"; + break; + case SOAP_IOB: + *s = "Array index out of bounds"; + break; + case SOAP_NULL: + *s = soap_set_validation_fault(soap, "nil not allowed", NULL); + break; + case SOAP_DUPLICATE_ID: + *s = soap_set_validation_fault(soap, "multiple elements (use the SOAP_XML_TREE flag) with duplicate id ", soap->id); + if (soap->version == 2) + *soap_faultsubcode(soap) = "SOAP-ENC:DuplicateID"; + break; + case SOAP_MISSING_ID: + *s = soap_set_validation_fault(soap, "missing id for ref ", soap->id); + if (soap->version == 2) + *soap_faultsubcode(soap) = "SOAP-ENC:MissingID"; + break; + case SOAP_HREF: + *s = soap_set_validation_fault(soap, "incompatible object type id-ref ", soap->id); + break; + case SOAP_FAULT: + break; +#ifndef WITH_NOIO + case SOAP_UDP_ERROR: + *s = "Message too large for UDP packet"; + break; + case SOAP_TCP_ERROR: + *s = tcp_error(soap); + break; +#endif + case SOAP_HTTP_ERROR: + *s = "An HTTP processing error occurred"; + break; + case SOAP_NTLM_ERROR: + *s = "An HTTP NTLM authentication error occurred"; + break; + case SOAP_SSL_ERROR: +#ifdef WITH_OPENSSL + *s = "SSL/TLS error"; +#else + *s = "OpenSSL not installed: recompile with -DWITH_OPENSSL"; +#endif + break; + case SOAP_PLUGIN_ERROR: + *s = "Plugin registry error"; + break; + case SOAP_DIME_ERROR: + *s = "DIME format error or max DIME size exceeds SOAP_MAXDIMESIZE currently set to " SOAP_XSTRINGIFY(SOAP_MAXDIMESIZE); + break; + case SOAP_DIME_HREF: + *s = "DIME href to missing attachment"; + break; + case SOAP_DIME_MISMATCH: + *s = "DIME version/transmission error"; + break; + case SOAP_DIME_END: + *s = "End of DIME error"; + break; + case SOAP_MIME_ERROR: + *s = "MIME format error"; + break; + case SOAP_MIME_HREF: + *s = "MIME href to missing attachment"; + break; + case SOAP_MIME_END: + *s = "End of MIME error"; + break; + case SOAP_ZLIB_ERROR: +#ifdef WITH_ZLIB + (SOAP_SNPRINTF(soap->msgbuf, sizeof(soap->msgbuf), (soap->d_stream && soap->d_stream->msg ? strlen(soap->d_stream->msg) : 0) + 19), "Zlib/gzip error: '%s'", soap->d_stream && soap->d_stream->msg ? soap->d_stream->msg : SOAP_STR_EOS); + *s = soap->msgbuf; +#else + *s = "Zlib/gzip not installed for (de)compression: recompile with -DWITH_GZIP"; +#endif + break; + case SOAP_REQUIRED: + *s = soap_set_validation_fault(soap, "missing required attribute", NULL); + break; + case SOAP_PROHIBITED: + *s = soap_set_validation_fault(soap, "prohibited attribute present", NULL); + break; + case SOAP_LEVEL: + *s = "Maximum XML nesting depth level exceeded: increase maxlevel"; + break; + case SOAP_LENGTH: + *s = soap_set_validation_fault(soap, "value range or content length violation", NULL); + break; + case SOAP_OCCURS: + *s = soap_set_validation_fault(soap, "occurrence constraint violation", NULL); + break; + case SOAP_FIXED: + *s = soap_set_validation_fault(soap, "value does not match the fixed value required", NULL); + break; + case SOAP_EMPTY: + *s = soap_set_validation_fault(soap, "empty value provided where a value is required", NULL); + break; + case SOAP_FD_EXCEEDED: + *s = "Maximum number of open connections was reached: increase FD_SETSIZE or define HAVE_POLL"; + break; + case SOAP_UTF_ERROR: + *s = "UTF content encoding error"; + break; + case SOAP_STOP: + *s = "Stopped: service request already handled by plugin (informative)"; + break; +#endif + case SOAP_EOF: +#ifndef WITH_NOIO + *s = soap_strerror(soap); /* *s = soap->msgbuf */ +#ifndef WITH_LEAN + if (strlen(soap->msgbuf) + 25 < sizeof(soap->msgbuf)) + { + (void)soap_memmove((void*)(soap->msgbuf + 25), sizeof(soap->tmpbuf) - 25, (const void*)soap->msgbuf, strlen(soap->msgbuf) + 1); + if (soap->is) +#if defined(__cplusplus) && !defined(WITH_COMPAT) + (void)soap_memcpy((void*)soap->msgbuf, sizeof(soap->msgbuf), (const void*)"End or bad std::istream: ", 25); +#else + (void)soap_memcpy((void*)soap->msgbuf, sizeof(soap->msgbuf), (const void*)"End at NUL buffer input: ", 25); +#endif + else + (void)soap_memcpy((void*)soap->msgbuf, sizeof(soap->msgbuf), (const void*)"End of file or no input: ", 25); + } +#endif + break; +#else + *s = "End of file or no input"; + break; +#endif + case SOAP_ERR: + *s = "An unspecified error occurred"; + break; + default: +#ifndef WITH_NOHTTP +#ifndef WITH_LEAN + if (soap->error >= 200 && soap->error < 600) + { + const char *t = http_error(soap, soap->error); + (SOAP_SNPRINTF(soap->msgbuf, sizeof(soap->msgbuf), strlen(t) + 54), "Error %d: HTTP %d %s", soap->error, soap->error, t); + *s = soap->msgbuf; + } + else +#endif +#endif + { + (SOAP_SNPRINTF(soap->msgbuf, sizeof(soap->msgbuf), 26), "Error %d", soap->error); + *s = soap->msgbuf; + } + } +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_send_fault(struct soap *soap) +{ + int status = soap->error; + if (status == SOAP_OK || status == SOAP_STOP) + return soap_closesock(soap); +#ifndef WITH_NOHTTP + if (status >= 200 && status <= 299) + return soap_send_empty_response(soap, status); +#endif + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Sending back fault struct for error code %d\n", soap->error)); + soap->keep_alive = 0; /* error: close connection later by disabling keep-alive here */ + soap_set_fault(soap); + if (soap->error < 200 && soap->error != SOAP_FAULT) + soap->header = NULL; + if (status != SOAP_EOF || (!soap->recv_timeout && !soap->send_timeout)) + { + int r = 1; +#ifndef WITH_NOIO + if (soap->fpoll && soap->fpoll(soap)) + { + r = 0; + } +#ifndef WITH_LEAN + else if (soap_valid_socket(soap->socket)) + { + r = tcp_select(soap, soap->socket, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_SND, 0); + if (r > 0) + { + int t; + if (!(r & SOAP_TCP_SELECT_SND) + || ((r & SOAP_TCP_SELECT_RCV) + && recv(soap->socket, (char*)&t, 1, MSG_PEEK) < 0)) + r = 0; + } + } +#endif +#endif + if (r > 0) + { + soap->error = SOAP_OK; + if (soap->version > 0) + { + soap->encodingStyle = NULL; /* no encodingStyle in Faults */ + soap_serializeheader(soap); + soap_serializefault(soap); + (void)soap_begin_count(soap); + if ((soap->mode & SOAP_IO_LENGTH)) + { + if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_putfault(soap) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap_closesock(soap); + } + (void)soap_end_count(soap); + if (soap_response(soap, status) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_putfault(soap) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + } + else + { + const char *s = *soap_faultstring(soap); + const char **d = soap_faultdetail(soap); + (void)soap_begin_count(soap); + if ((soap->mode & SOAP_IO_LENGTH)) + if (soap_element_begin_out(soap, "fault", 0, NULL) + || soap_outstring(soap, "reason", 0, (char*const*)&s, NULL, 0) + || soap_outliteral(soap, "detail", (char*const*)d, NULL) + || soap_element_end_out(soap, "fault")) + return soap_closesock(soap); + (void)soap_end_count(soap); + if (soap_response(soap, status) + || soap_element_begin_out(soap, "fault", 0, NULL) + || soap_outstring(soap, "reason", 0, (char*const*)&s, NULL, 0) + || soap_outliteral(soap, "detail", (char*const*)d, NULL) + || soap_element_end_out(soap, "fault") + || soap_end_send(soap)) + return soap_closesock(soap); + } + } + } + soap->error = status; + return soap_closesock(soap); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_recv_fault(struct soap *soap, int check) +{ + int status = soap->status; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Check (%d) if receiving SOAP Fault (status = %d)\n", check, status)); + if (!check) + { + /* try getfault when no tag or tag mismatched at level 2, otherwise close and return SOAP_TAG_MISMATCH or HTTP error code */ + if (soap->error != SOAP_NO_TAG && (soap->error != SOAP_TAG_MISMATCH || soap->level != 2)) + { + if (soap->error == SOAP_TAG_MISMATCH && soap->level == 0) + { + soap->error = SOAP_OK; + if (!soap_element_begin_in(soap, "fault", 0, NULL)) + { + char *s = NULL, *d = NULL; + (void)soap_instring(soap, "reason", &s, NULL, 0, 1, 0, -1, NULL); + (void)soap_inliteral(soap, "detail", &d); + if (!soap_element_end_in(soap, "fault") && !soap_end_recv(soap)) + { + *soap_faultstring(soap) = s; + *soap_faultdetail(soap) = d; + if (status) + soap->error = status; + else + soap->error = SOAP_FAULT; + soap_set_fault(soap); + return soap_closesock(soap); + } + } + soap->error = SOAP_TAG_MISMATCH; + } + if (status && (status < 200 || status > 299)) + soap->error = status; + return soap_closesock(soap); + } + } + soap->error = SOAP_OK; + if (soap_getfault(soap)) + { + /* if check>0 and no SOAP Fault is present and no HTTP error then just return to parse request */ + if (check + && (status == 0 || (status >= 200 && status <= 299)) + && ((soap->error == SOAP_TAG_MISMATCH && soap->level == 2) || soap->error == SOAP_NO_TAG)) + return soap->error = SOAP_OK; + /* if check=0 and empty SOAP Body and encodingStyle is NULL and no HTTP error then just return */ + if (!check + && (status == 0 || (status >= 200 && status <= 299)) + && !soap->encodingStyle + && (soap->error == SOAP_NO_TAG && soap->level <= 2)) + return soap->error = SOAP_OK; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Error: soap_get_soapfault() failed with error %d at level %u tag '%s'\n", soap->error, soap->level, soap->tag)); + *soap_faultcode(soap) = (soap->version == 2 ? "SOAP-ENV:Sender" : "SOAP-ENV:Client"); + if (status) + soap->error = status; + else + soap->error = status = SOAP_NO_DATA; + soap_set_fault(soap); + } + else + { + const char *s = *soap_faultcode(soap); + if (!soap_match_tag(soap, s, "SOAP-ENV:Server") + || !soap_match_tag(soap, s, "SOAP-ENV:Receiver")) + { + status = SOAP_SVR_FAULT; + } + else if (!soap_match_tag(soap, s, "SOAP-ENV:Client") + || !soap_match_tag(soap, s, "SOAP-ENV:Sender")) + { + status = SOAP_CLI_FAULT; + } + else if (!soap_match_tag(soap, s, "SOAP-ENV:MustUnderstand")) + { + status = SOAP_MUSTUNDERSTAND; + } + else if (!soap_match_tag(soap, s, "SOAP-ENV:VersionMismatch")) + { + status = SOAP_VERSIONMISMATCH; + } + else + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Received SOAP Fault code %s\n", s)); + status = SOAP_FAULT; + } + if (!soap_body_end_in(soap)) + soap_envelope_end_in(soap); + } + (void)soap_end_recv(soap); + soap->error = status; + return soap_closesock(soap); +} + +/******************************************************************************/ + +#ifndef WITH_NOHTTP +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_send_empty_response(struct soap *soap, int httpstatuscode) +{ + soap_mode m = soap->omode; + if (!(m & SOAP_IO_UDP)) + { + soap->count = 0; + if ((m & SOAP_IO) == SOAP_IO_CHUNK) + soap->omode = (m & ~SOAP_IO) | SOAP_IO_BUFFER; + (void)soap_response(soap, httpstatuscode); + (void)soap_end_send(soap); /* force end of sends */ + soap->error = SOAP_STOP; /* stops the server from returning another response */ + soap->omode = m; + } + return soap_closesock(soap); +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOHTTP +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_recv_empty_response(struct soap *soap) +{ + soap->error = SOAP_OK; + if (!(soap->omode & SOAP_IO_UDP) && !(soap->omode & SOAP_ENC_PLAIN)) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Receiving empty response\n")); + if (soap_begin_recv(soap) == SOAP_OK) + { + if (soap_http_skip_body(soap) || soap_end_recv(soap)) + return soap_closesock(soap); + } + else if (soap->error == 200 || soap->error == 201 || soap->error == 202) + { + soap->error = SOAP_OK; + } + } +#ifndef WITH_LEANER + else if ((soap->fprepareinitrecv && (soap->error = soap->fprepareinitrecv(soap))) + || (soap->fpreparefinalrecv && (soap->error = soap->fpreparefinalrecv(soap)))) + { + return soap->error; + } +#endif + return soap_closesock(soap); +} +#endif + +/******************************************************************************/ + +#ifndef WITH_NOIO +static const char* +soap_strerror(struct soap *soap) +{ + int err = soap->errnum; + *soap->msgbuf = '\0'; + if (err) + { +#ifndef WIN32 +# ifdef HAVE_STRERROR_R +# if !defined(_GNU_SOURCE) || (!_GNU_SOURCE && ((!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600)) || defined(__ANDROID__) || !defined(__GLIBC__)) + err = strerror_r(err, soap->msgbuf, sizeof(soap->msgbuf)); /* XSI-compliant */ + if (err != 0) + soap_strcpy(soap->msgbuf, sizeof(soap->msgbuf), "unknown error"); +# else + return strerror_r(err, soap->msgbuf, sizeof(soap->msgbuf)); /* GNU-specific */ +# endif +# else + return strerror(err); +# endif +#else +#ifndef UNDER_CE + DWORD len; + *soap->msgbuf = '\0'; + len = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, err, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)soap->msgbuf, (DWORD)sizeof(soap->msgbuf), NULL); +#else + DWORD i, len; + *soap->msgbuf = '\0'; + len = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, err, 0, (LPTSTR)soap->msgbuf, (DWORD)(sizeof(soap->msgbuf)/sizeof(TCHAR)), NULL); + for (i = 0; i <= len; i++) + { + if (((TCHAR*)soap->msgbuf)[i] < 0x80) + soap->msgbuf[i] = (char)((TCHAR*)soap->msgbuf)[i]; + else + soap->msgbuf[i] = '?'; + } +#endif +#endif + } + else + { + if (soap->recv_maxlength && soap->count > soap->recv_maxlength) + { + soap_strcpy(soap->msgbuf, sizeof(soap->msgbuf), "max message length exceeded"); + } + else + { + int tt = soap->transfer_timeout, rt = soap->recv_timeout, st = soap->send_timeout; +#ifndef WITH_LEAN + int tu = ' ', ru = ' ', su = ' '; +#endif + soap_strcpy(soap->msgbuf, sizeof(soap->msgbuf), "message transfer interrupted"); + if (tt | rt || st) + soap_strcpy(soap->msgbuf + 28, sizeof(soap->msgbuf) - 28, " or timed out"); +#ifndef WITH_LEAN + if (tt < 0) + { + tt = -tt; + tu = 'u'; + } + if (rt < 0) + { + rt = -rt; + ru = 'u'; + } + if (st < 0) + { + st = -st; + su = 'u'; + } + if (tt) + { + size_t l = strlen(soap->msgbuf); + (SOAP_SNPRINTF(soap->msgbuf + l, sizeof(soap->msgbuf) - l, 43), " (%d%csec max transfer time)", tt, tu); + } + if (rt) + { + size_t l = strlen(soap->msgbuf); + (SOAP_SNPRINTF(soap->msgbuf + l, sizeof(soap->msgbuf) - l, 40), " (%d%csec max recv delay)", rt, ru); + } + if (st) + { + size_t l = strlen(soap->msgbuf); + (SOAP_SNPRINTF(soap->msgbuf + l, sizeof(soap->msgbuf) - l, 40), " (%d%csec max send delay)", st, su); + } +#endif + } + } + return soap->msgbuf; +} +#endif + +/******************************************************************************/ + +static int +soap_set_error(struct soap *soap, const char *faultcode, const char *faultsubcodeQName, const char *faultstring, const char *faultdetailXML, int soaperror) +{ + *soap_faultcode(soap) = faultcode; + if (faultsubcodeQName) + *soap_faultsubcode(soap) = faultsubcodeQName; + *soap_faultstring(soap) = faultstring; + if (faultdetailXML && *faultdetailXML) + { + const char **s = soap_faultdetail(soap); + if (s) + *s = faultdetailXML; + } + return soap->error = soaperror; +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_set_sender_error(struct soap *soap, const char *faultstring, const char *faultdetailXML, int soaperror) +{ + return soap_set_error(soap, soap->version == 2 ? "SOAP-ENV:Sender" : soap->version == 1 ? "SOAP-ENV:Client" : "at sender", NULL, faultstring, faultdetailXML, soaperror); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_set_receiver_error(struct soap *soap, const char *faultstring, const char *faultdetailXML, int soaperror) +{ + return soap_set_error(soap, soap->version == 2 ? "SOAP-ENV:Receiver" : soap->version == 1 ? "SOAP-ENV:Server" : "detected", NULL, faultstring, faultdetailXML, soaperror); +} + +/******************************************************************************/ + +static int +soap_copy_fault(struct soap *soap, const char *faultcode, const char *faultsubcodeQName, const char *faultstring, const char *faultdetailXML) +{ + char *r = NULL, *s = NULL, *t = NULL; + DBGFUN2("soap_copy_fault", "code=%s", faultcode ? faultcode : "(null)", "string=%s", faultstring ? faultstring : "(null)") + if (faultsubcodeQName) + r = soap_strdup(soap, faultsubcodeQName); + if (faultstring) + s = soap_strdup(soap, faultstring); + if (faultdetailXML) + t = soap_strdup(soap, faultdetailXML); + return soap_set_error(soap, faultcode, r, s, t, SOAP_FAULT); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_sender_fault(struct soap *soap, const char *faultstring, const char *faultdetailXML) +{ + return soap_sender_fault_subcode(soap, NULL, faultstring, faultdetailXML); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_sender_fault_subcode(struct soap *soap, const char *faultsubcodeQName, const char *faultstring, const char *faultdetailXML) +{ + return soap_copy_fault(soap, soap->version == 2 ? "SOAP-ENV:Sender" : soap->version == 1 ? "SOAP-ENV:Client" : "at source", faultsubcodeQName, faultstring, faultdetailXML); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_receiver_fault(struct soap *soap, const char *faultstring, const char *faultdetailXML) +{ + return soap_receiver_fault_subcode(soap, NULL, faultstring, faultdetailXML); +} + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_receiver_fault_subcode(struct soap *soap, const char *faultsubcodeQName, const char *faultstring, const char *faultdetailXML) +{ + return soap_copy_fault(soap, soap->version == 2 ? "SOAP-ENV:Receiver" : soap->version == 1 ? "SOAP-ENV:Server" : "is internal", faultsubcodeQName, faultstring, faultdetailXML); +} + +/******************************************************************************/ + +#ifndef WITH_NOSTDLIB +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_print_fault(struct soap *soap, FILE *fd) +{ + if (soap_check_state(soap)) + { + fprintf(fd, "Error: soap struct state not initialized\n"); + } + else if (soap->error) + { + const char **c, *v = NULL, *s, *d; + c = soap_faultcode(soap); + if (!*c) + { + soap_set_fault(soap); + c = soap_faultcode(soap); + } + if (soap->version == 2) + v = soap_fault_subcode(soap); + s = soap_fault_string(soap); + d = soap_fault_detail(soap); + fprintf(fd, "%s%d fault %s [%s]\n\"%s\"\nDetail: %s\n", soap->version ? "SOAP 1." : "Error ", soap->version ? (int)soap->version : soap->error, *c, v ? v : "no subcode", s ? s : "[no reason]", d ? d : "[no detail]"); + } +} +#endif + +/******************************************************************************/ + +#ifdef __cplusplus +#ifndef WITH_LEAN +#ifndef WITH_NOSTDLIB +#ifndef WITH_COMPAT +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_stream_fault(struct soap *soap, std::ostream& os) +{ + if (soap_check_state(soap)) + { + os << "Error: soap struct state not initialized\n"; + } + else if (soap->error) + { + const char **c, *v = NULL, *s, *d; + c = soap_faultcode(soap); + if (!*c) + { + soap_set_fault(soap); + c = soap_faultcode(soap); + } + if (soap->version == 2) + v = soap_fault_subcode(soap); + s = soap_fault_string(soap); + d = soap_fault_detail(soap); + os << (soap->version ? "SOAP 1." : "Error ") + << (soap->version ? (int)soap->version : soap->error) + << " fault " << *c + << "[" << (v ? v : "no subcode") << "]" + << std::endl + << "\"" << (s ? s : "[no reason]") << "\"" + << std::endl + << "Detail: " << (d ? d : "[no detail]") + << std::endl; + } +} +#endif +#endif +#endif +#endif + +/******************************************************************************/ + +#ifndef WITH_LEAN +#ifndef WITH_NOSTDLIB +SOAP_FMAC1 +char* +SOAP_FMAC2 +soap_sprint_fault(struct soap *soap, char *buf, size_t len) +{ + if (soap_check_state(soap)) + { + soap_strcpy(buf, len, "Error: soap struct not initialized"); + } + else if (soap->error) + { + const char **c, *v = NULL, *s, *d; + c = soap_faultcode(soap); + if (!*c) + { + soap_set_fault(soap); + c = soap_faultcode(soap); + } + if (soap->version == 2) + v = soap_fault_subcode(soap); + if (!v) + v = "no subcode"; + s = soap_fault_string(soap); + if (!s) + s = "[no reason]"; + d = soap_fault_detail(soap); + if (!d) + d = "[no detail]"; + (SOAP_SNPRINTF(buf, len, strlen(*c) + strlen(v) + strlen(s) + strlen(d) + 72), "%s%d fault %s [%s]\n\"%s\"\nDetail: %s\n", soap->version ? "SOAP 1." : "Error ", soap->version ? (int)soap->version : soap->error, *c, v, s, d); + } + else if (len > 0) + { + *buf = '\0'; + } + return buf; +} +#endif +#endif + +/******************************************************************************/ + +#ifndef WITH_NOSTDLIB +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_print_fault_location(struct soap *soap, FILE *fd) +{ +#ifndef WITH_LEAN + int i, j, c1, c2; + if (soap_check_state(soap) == SOAP_OK && soap->error && soap->error != SOAP_STOP && soap->bufidx <= soap->buflen && soap->buflen > 0 && soap->buflen <= sizeof(soap->buf)) + { + i = (int)soap->bufidx - 1; + if (i <= 0) + i = 0; + c1 = soap->buf[i]; + soap->buf[i] = '\0'; + if ((int)soap->buflen >= i + 1024) + j = i + 1023; + else + j = (int)soap->buflen - 1; + c2 = soap->buf[j]; + soap->buf[j] = '\0'; + fprintf(fd, "%s%c\n\n", soap->buf, c1); + if (soap->bufidx < soap->buflen) + fprintf(fd, "%s\n", soap->buf + soap->bufidx); + soap->buf[i] = (char)c1; + soap->buf[j] = (char)c2; + } +#else + (void)soap; + (void)fd; +#endif +} +#endif + +/******************************************************************************/ + +#ifdef __cplusplus +#ifndef WITH_LEAN +#ifndef WITH_NOSTDLIB +#ifndef WITH_COMPAT +SOAP_FMAC1 +void +SOAP_FMAC2 +soap_stream_fault_location(struct soap *soap, std::ostream& os) +{ + int i, j, c1, c2; + if (soap_check_state(soap) == SOAP_OK && soap->error && soap->error != SOAP_STOP && soap->bufidx <= soap->buflen && soap->buflen > 0 && soap->buflen <= sizeof(soap->buf)) + { + i = (int)soap->bufidx - 1; + if (i <= 0) + i = 0; + c1 = soap->buf[i]; + soap->buf[i] = '\0'; + if ((int)soap->buflen >= i + 1024) + j = i + 1023; + else + j = (int)soap->buflen - 1; + c2 = soap->buf[j]; + soap->buf[j] = '\0'; + os << soap->buf << (char)c1 << std::endl << "" << std::endl; + if (soap->bufidx < soap->buflen) + os << soap->buf + soap->bufidx << std::endl; + soap->buf[i] = (char)c1; + soap->buf[j] = (char)c2; + } +} +#endif +#endif +#endif +#endif + +/******************************************************************************/ + +SOAP_FMAC1 +int +SOAP_FMAC2 +soap_register_plugin_arg(struct soap *soap, int (*fcreate)(struct soap*, struct soap_plugin*, void*), void *arg) +{ + struct soap_plugin *p; + int err; + p = (struct soap_plugin*)SOAP_MALLOC(soap, sizeof(struct soap_plugin)); + if (!p) + return soap->error = SOAP_EOM; + p->id = NULL; + p->data = NULL; + p->fcopy = NULL; + p->fdelete = NULL; + err = fcreate(soap, p, arg); + if (!err && p->fdelete && p->id) + { + if (!soap_lookup_plugin(soap, p->id)) + { + p->next = soap->plugins; + soap->plugins = p; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Registered '%s' plugin\n", p->id)); + return SOAP_OK; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not register plugin '%s': plugin with the same ID already registered\n", p->id)); + SOAP_FREE(soap, p); + return SOAP_OK; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not register plugin '%s': plugin returned error %d or plugin ID not set or fdelete callback not set\n", p->id ? p->id : "plugin ID not set", err)); + SOAP_FREE(soap, p); + soap->error = err ? err : SOAP_PLUGIN_ERROR; + return soap->error; +} + +/******************************************************************************/ + +static void * +fplugin(struct soap *soap, const char *id) +{ + struct soap_plugin *p; + for (p = soap->plugins; p; p = p->next) + if (p->id == id || !strcmp(p->id, id)) + return p->data; + return NULL; +} + +/******************************************************************************/ + +SOAP_FMAC1 +void * +SOAP_FMAC2 +soap_lookup_plugin(struct soap *soap, const char *id) +{ + return soap->fplugin(soap, id); +} + +/******************************************************************************/ + +#ifdef __cplusplus +} +#endif + +/******************************************************************************\ + * + * C++ soap struct methods + * +\******************************************************************************/ + +#ifdef __cplusplus +soap::soap() +{ + soap_init(this); + /* no logs to prevent DEBUG mode leaks when the user calls a soap_init() on this context */ + soap_set_test_logfile(this, NULL); + soap_set_sent_logfile(this, NULL); + soap_set_recv_logfile(this, NULL); +} +#endif + +/******************************************************************************/ + +#ifdef __cplusplus +soap::soap(soap_mode m) +{ + soap_init1(this, m); +} +#endif + +/******************************************************************************/ + +#ifdef __cplusplus +soap::soap(soap_mode im, soap_mode om) +{ + soap_init2(this, im, om); +} +#endif + +/******************************************************************************/ + +#ifdef __cplusplus +soap::soap(const struct soap& soap) +{ + soap_copy_context(this, &soap); +} +#endif + +/******************************************************************************/ + +#ifdef __cplusplus +struct soap& soap::operator=(const struct soap& soap) +{ + soap_done(this); + soap_copy_context(this, &soap); + return *this; +} +#endif + +/******************************************************************************/ + +#ifdef __cplusplus +void soap::destroy() +{ + soap_destroy(this); + soap_end(this); +} +#endif + +/******************************************************************************/ + +#ifdef __cplusplus +soap::~soap() +{ + soap_done(this); +} +#endif + +/******************************************************************************/ diff --git a/connor_erp_mes/stdsoap2.h b/connor_erp_mes/stdsoap2.h new file mode 100644 index 0000000..b15c282 --- /dev/null +++ b/connor_erp_mes/stdsoap2.h @@ -0,0 +1,3720 @@ +/* + stdsoap2.h 2.8.91 + + gSOAP runtime engine + +gSOAP XML Web services tools +Copyright (C) 2000-2019, Robert van Engelen, Genivia Inc., All Rights Reserved. +This part of the software is released under ONE of the following licenses: +GPL, or the gSOAP public license, or Genivia's license for commercial use. +-------------------------------------------------------------------------------- +Contributors: + +Wind River Systems, Inc., for the following addition licensed under the gSOAP +public license: + - vxWorks compatible, enabled with compiler option -DVXWORKS +-------------------------------------------------------------------------------- +gSOAP public license. + +The contents of this file are subject to the gSOAP Public License Version 1.3 +(the "License"); you may not use this file except in compliance with the +License. You may obtain a copy of the License at +http://www.cs.fsu.edu/~engelen/soaplicense.html +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the License. + +The Initial Developer of the Original Code is Robert A. van Engelen. +Copyright (C) 2000-2019, Robert van Engelen, Genivia Inc., All Rights Reserved. +-------------------------------------------------------------------------------- +GPL license. + +This program is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free Software +Foundation; either version 2 of the License, or (at your option) any later +version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program; if not, write to the Free Software Foundation, Inc., 59 Temple +Place, Suite 330, Boston, MA 02111-1307 USA + +Author contact information: +engelen@genivia.com / engelen@acm.org + +This program is released under the GPL with the additional exemption that +compiling, linking, and/or using OpenSSL is allowed. +-------------------------------------------------------------------------------- +A commercial use license is available from Genivia, Inc., contact@genivia.com +-------------------------------------------------------------------------------- +*/ + +#define GSOAP_VERSION 20891 + +#ifdef WITH_SOAPDEFS_H +# include "soapdefs.h" /* include user-defined stuff in soapdefs.h */ +#endif + +#ifndef _THREAD_SAFE +# define _THREAD_SAFE +#endif + +#ifndef OPENSERVER +# ifndef _REENTRANT +# define _REENTRANT +# endif +#endif + +#ifdef _WIN32 +# ifndef WIN32 +# define WIN32 +# endif +#endif + +/* for legacy purposes we use WIN32 macro, even when WIN64 is supported */ +#ifdef _WIN64 +# ifndef WIN32 +# define WIN32 +# endif +#endif + +#ifdef WIN32 +# ifdef SOAP_STD_EXPORTS /* dllexport the API functions and classes */ +# ifndef SOAP_STD_API +# define SOAP_STD_API __declspec(dllexport) +# endif +# ifndef SOAP_CMAC +# define SOAP_CMAC SOAP_STD_API /* export soap struct and generated classes */ +# endif +# ifndef SOAP_FMAC1 +# define SOAP_FMAC1 SOAP_STD_API /* export stdsoap2.cpp API */ +# endif +# ifndef SOAP_FMAC3 +# define SOAP_FMAC3 SOAP_STD_API /* export soapC.cpp serializers API */ +# endif +# ifndef SOAP_FMAC5 +# define SOAP_FMAC5 SOAP_STD_API /* export soapClient.cpp and soapServer.cpp API */ +# endif +# endif +#endif + +#ifndef SOAP_FMAC1 /* stdsoap2.h declaration macro */ +# define SOAP_FMAC1 +#endif + +#ifndef SOAP_FMAC2 /* stdsoap2.h declaration macro */ +# define SOAP_FMAC2 +#endif + +#ifndef SOAP_FMAC3 /* (de)serializer declaration macro */ +# define SOAP_FMAC3 +#endif + +#ifndef SOAP_FMAC3S /* string converter for (de)serializer declaration macro */ +# define SOAP_FMAC3S SOAP_FMAC3 +#endif + +#ifndef SOAP_FMAC4 /* (de)serializer declaration macro */ +# define SOAP_FMAC4 +#endif + +#ifndef SOAP_FMAC4S /* string converter for (de)serializer declaration macro */ +# define SOAP_FMAC4S SOAP_FMAC4 +#endif + +#ifndef SOAP_FMAC5 /* stub/skeleton declaration macro */ +# define SOAP_FMAC5 +#endif + +#ifndef SOAP_FMAC6 /* stub/skeleton declaration macro */ +# define SOAP_FMAC6 +#endif + +#ifndef SOAP_CMAC /* class declaration macro */ +# define SOAP_CMAC +#endif + +#ifndef SOAP_NMAC /* namespace table declaration macro */ +# define SOAP_NMAC +#endif + +#ifndef SOAP_SOURCE_STAMP +# define SOAP_SOURCE_STAMP(str) +#endif + +#ifndef STDSOAP_H +#define STDSOAP_H + +#define SOAP_XSTRINGIFY(s) SOAP_STRINGIFY(s) +#define SOAP_STRINGIFY(s) #s + +#if defined(SOAPDEFS_H) && !defined(WITH_SOAPDEFS_H) +# include SOAP_XSTRINGIFY(SOAPDEFS_H) /* include user-defined "SOAPDEFS_H" */ +#endif + +#if defined(__vxworks) || defined(__VXWORKS__) +# ifndef VXWORKS +# define VXWORKS +# endif +#endif + +#ifdef _WIN32_WCE +# ifndef UNDER_CE +# define UNDER_CE _WIN32_WCE +# endif +#endif + +#ifdef UNDER_CE +# ifndef WIN32 +# define WIN32 +# endif +#endif + +#ifdef __BORLANDC__ +# ifdef __clang__ +# ifdef _WIN32 +# ifndef WIN32 +# define WIN32 +# endif +# endif +# else +# ifdef __WIN32__ +# ifndef WIN32 +# define WIN32 +# endif +# endif +# endif +#endif + +#if defined(__CYGWIN__) || defined(__CYGWIN32__) +# ifndef CYGWIN +# define CYGWIN +# endif +#endif + +#ifdef __SYMBIAN32__ +# define SYMBIAN +# undef WIN32 +#endif + +#if defined(__hpux) +# ifndef HP_UX +# define HP_UX +# endif +#endif + +#if defined(__digital__) && defined(__unix__) +# ifndef TRU64 +# define TRU64 +# endif +#endif + +#ifdef __MVS__ +# ifndef OS390 +# define OS390 +# endif +#endif + +#if defined(__sun) && defined(__SVR4) +# ifndef SUN_OS +# define SUN_OS +# endif +#endif + +#ifdef HAVE_CONFIG_H +# include "config.h" +#else +# if defined(UNDER_CE) +# define SOAP_BUFLEN (2048) +# define SOAP_PTRHASH (32) +# define SOAP_IDHASH (19) +# define SOAP_BLKLEN (32) +# define SOAP_TAGLEN (256) +# define SOAP_HDRLEN (1024) +# define SOAP_MAXDIMS (4) +# define HAVE_SSCANF +# elif defined(CYGWIN) +# define HAVE_POLL +# define HAVE_SNPRINTF +# define HAVE_STRRCHR +# define HAVE_STRTOD +# define HAVE_SSCANF +# define HAVE_STRTOL +# define HAVE_STRTOUL +# define HAVE_SYS_TIMEB_H +# define HAVE_FTIME +# define HAVE_RAND_R +# define HAVE_GMTIME_R +# define HAVE_ASCTIME_R +# define HAVE_LOCALTIME_R +# define HAVE_STRERROR_R +# define HAVE_WCTOMB +# define HAVE_MBTOWC +# define HAVE_INTTYPES_H +# define HAVE_LOCALE_H +# define HAVE_SOCKLEN_T +# elif defined(WIN32) +# ifdef __BORLANDC__ +# ifdef __clang__ +# define HAVE_STRRCHR +# define HAVE_STRTOD +# define HAVE_SSCANF +# define HAVE_STRTOD_L +# define HAVE_STRTOL +# define HAVE_SYS_TIMEB_H +# define HAVE_FTIME +# define HAVE_GMTIME +# define HAVE_WCTOMB +# define HAVE_MBTOWC +# define SOAP_LONG_FORMAT "%lld" +# define SOAP_ULONG_FORMAT "%llu" +# else +# define HAVE_STRRCHR +# define HAVE_STRTOD +# define HAVE_SSCANF +# define HAVE_STRTOD_L +# define HAVE_STRTOL +# define HAVE_SYS_TIMEB_H +# define HAVE_FTIME +# define HAVE_GMTIME +# define HAVE_WCTOMB +# define HAVE_MBTOWC +# define SOAP_LONG_FORMAT "%I64d" +# define SOAP_ULONG_FORMAT "%I64u" +# endif +# else +# if _MSC_VER >= 1400 +# define HAVE_SNPRINTF +# endif +# define HAVE_STRRCHR +# define HAVE_STRTOD +# define HAVE_SSCANF +# define HAVE_STRTOD_L +# define HAVE_STRTOL +# define HAVE_STRTOUL +# if _MSC_VER >= 1300 +# define HAVE_STRTOLL /* use _strtoi64 */ +# define HAVE_STRTOULL /* use _strtoui64 */ +# endif +# define HAVE_SYS_TIMEB_H +# define HAVE_FTIME +# define HAVE_GMTIME +# define HAVE_WCTOMB +# define HAVE_MBTOWC +# define SOAP_LONG_FORMAT "%I64d" +# define SOAP_ULONG_FORMAT "%I64u" +# define HAVE_LOCALE_H +# endif +# elif defined(__APPLE__) +# define HAVE_POLL +# define HAVE_SNPRINTF +# define HAVE_STRLCPY +# define HAVE_STRRCHR +# define HAVE_STRTOD +# define HAVE_SSCANF +# define HAVE_STRTOD_L +# define HAVE_SSCANF_L +# define HAVE_STRTOL +# define HAVE_STRTOUL +# define HAVE_STRTOLL +# define HAVE_STRTOULL +# define HAVE_RAND_R +# define HAVE_GMTIME_R +# define HAVE_ASCTIME_R +# define HAVE_TM_GMTOFF +# define HAVE_GETTIMEOFDAY +# define HAVE_LOCALTIME_R +# define HAVE_STRERROR_R +# define HAVE_TIMEGM +# define HAVE_WCTOMB +# define HAVE_MBTOWC +# define HAVE_INTTYPES_H +# define HAVE_LOCALE_H +# define HAVE_XLOCALE_H +# define HAVE_RANDOM +# define HAVE_SOCKLEN_T +# elif defined(_AIX43) +# define HAVE_SNPRINTF +# define HAVE_STRRCHR +# define HAVE_STRTOD +# define HAVE_SSCANF +# define HAVE_STRTOL +# define HAVE_STRTOUL +# define HAVE_SYS_TIMEB_H +# define HAVE_FTIME +# define HAVE_RAND_R +# define HAVE_GETHOSTBYNAME_R +# define HAVE_GMTIME_R +# define HAVE_ASCTIME_R +# define HAVE_LOCALTIME_R +# define HAVE_WCTOMB +# define HAVE_MBTOWC +# define HAVE_LOCALE_H +# define HAVE_SOCKLEN_T +# elif defined(_AIX41) +# define HAVE_SNPRINTF +# define HAVE_STRRCHR +# define HAVE_STRTOD +# define HAVE_SSCANF +# define HAVE_STRTOL +# define HAVE_STRTOUL +# define HAVE_SYS_TIMEB_H +# define HAVE_WCTOMB +# define HAVE_MBTOWC +# define HAVE_LOCALE_H +# elif defined(HP_UX) +# include +# if 0 /* enable if __strtoll and __strtoull are available */ +extern intmax_t __strtoll(const char*, char**, int); +extern intmax_t __strtoull(const char*, char**, int); +# define strtoll __strtoll +# define strtoull __strtoull +# endif +# define HAVE_SNPRINTF +# define HAVE_STRRCHR +# define HAVE_STRTOD +# define HAVE_SSCANF +# define HAVE_STRTOL +# define HAVE_STRTOUL +# define HAVE_STRTOLL +# define HAVE_STRTOULL +# define HAVE_SYS_TIMEB_H +# define HAVE_FTIME +# define HAVE_RAND_R +# define HAVE_GMTIME_R +# define HAVE_ASCTIME_R +# define HAVE_LOCALTIME_R +# define HAVE_WCTOMB +# define HAVE_MBTOWC +# define HAVE_ISNAN +# define HAVE_LOCALE_H +# elif defined(FREEBSD) || defined(__FreeBSD__) || defined(OPENBSD) +# define HAVE_POLL +# define HAVE_SNPRINTF +# define HAVE_STRLCPY +# define HAVE_STRRCHR +# define HAVE_STRTOD +# define HAVE_SSCANF +# define HAVE_STRTOD_L +# define HAVE_SSCANF_L +# define HAVE_STRTOL +# define HAVE_STRTOUL +# define HAVE_STRTOLL +# define HAVE_STRTOULL +# define HAVE_GETTIMEOFDAY +# define HAVE_RAND_R +# define HAVE_GMTIME_R +# define HAVE_ASCTIME_R +# define HAVE_LOCALTIME_R +# define HAVE_STRERROR_R +# define HAVE_WCTOMB +# define HAVE_MBTOWC +# define SOAP_LONG_FORMAT "%qd" +# define SOAP_ULONG_FORMAT "%qu" +# define HAVE_ISNAN +# define HAVE_ISINF +# define HAVE_LOCALE_H +# define HAVE_XLOCALE_H +# define HAVE_RANDOM +# define HAVE_SOCKLEN_T +# elif defined(__VMS) +# include +# define HAVE_SNPRINTF +# define HAVE_STRRCHR +# define HAVE_STRTOD +# define HAVE_SSCANF +# define HAVE_STRTOL +# define HAVE_STRTOUL +# define HAVE_SYS_TIMEB_H +# define HAVE_FTIME +# define HAVE_RAND_R +# define HAVE_GMTIME_R +# define HAVE_ASCTIME_R +# define HAVE_LOCALTIME_R +# define HAVE_WCTOMB +# define HAVE_MBTOWC +# elif defined(TRU64) +# define HAVE_SNPRINTF +# define HAVE_STRRCHR +# define HAVE_STRTOD +# define HAVE_SSCANF +# define HAVE_STRTOL +# define HAVE_STRTOUL +# define HAVE_GETTIMEOFDAY +# define HAVE_SYS_TIMEB_H +# define HAVE_RAND_R +# define HAVE_GMTIME_R +# define HAVE_ASCTIME_R +# define HAVE_LOCALTIME_R +# define __USE_STD_IOSTREAM +# define HAVE_WCTOMB +# define HAVE_MBTOWC +# define SOAP_LONG_FORMAT "%ld" +# define SOAP_ULONG_FORMAT "%lu" +# define HAVE_LOCALE_H +# elif defined(__GLIBC__) || defined(__GNU__) || defined(__GNUC__) +# define HAVE_POLL +# define HAVE_SNPRINTF +# define HAVE_STRRCHR +# define HAVE_STRTOD +# define HAVE_SSCANF +# define HAVE_STRTOL +# define HAVE_STRTOUL +# define HAVE_STRTOLL +# define HAVE_STRTOULL +# define HAVE_SYS_TIMEB_H +# define HAVE_GETTIMEOFDAY +# define HAVE_FTIME +# define HAVE_RAND_R +# define HAVE_GETHOSTBYNAME_R +# define HAVE_GMTIME_R +# define HAVE_ASCTIME_R +# define HAVE_LOCALTIME_R +# define HAVE_STRERROR_R +# define HAVE_TIMEGM +# define HAVE_WCTOMB +# define HAVE_MBTOWC +# define HAVE_ISNAN +# define HAVE_ISINF +# if !defined(__GNUC__) || __GNUC__ >= 4 /* gcc 3 and earlier often refuse to compile _l functions */ +# define HAVE_STRTOD_L +# define HAVE_SSCANF_L +# define HAVE_LOCALE_H +# endif +# define HAVE_SOCKLEN_T +# elif defined(MAC_CARBON) +# define WITH_NOIO +# define HAVE_SNPRINTF +# define HAVE_STRRCHR +# define HAVE_STRTOD +# define HAVE_SSCANF +# define HAVE_STRTOL +# define HAVE_STRTOUL +# define HAVE_FTIME +# define HAVE_RAND_R +# define HAVE_GETHOSTBYNAME_R +# define HAVE_GMTIME_R +# define HAVE_ASCTIME_R +# define HAVE_LOCALTIME_R +# define HAVE_STRERROR_R +# define HAVE_WCTOMB +# define HAVE_MBTOWC +# elif defined(SYMBIAN) +# define WITH_LEAN +# define WITH_NONAMESPACES +# define HAVE_STRTOD /* use STRTOD since sscanf doesn't seem to work */ +# include +# include +# elif defined(VXWORKS) +# ifdef _WRS_KERNEL +# define _POSIX_THREADS 1 +# endif +# define HAVE_STRRCHR +# define HAVE_STRTOD +# define HAVE_SSCANF +# define HAVE_STRTOL +# define HAVE_STRTOUL +# define HAVE_GMTIME +# define HAVE_LOCALTIME +# define HAVE_MKTIME +# elif defined(OS390) +# define HAVE_SNPRINTF +# define HAVE_STRRCHR +# define HAVE_STRTOD +# define HAVE_SSCANF +# define HAVE_STRTOL +# define HAVE_STRTOUL +# define HAVE_SYS_TIMEB_H +# define HAVE_FTIME +# define HAVE_RAND_R +# define HAVE_GMTIME_R +# define HAVE_ASCTIME_R +# define HAVE_LOCALTIME_R +# define HAVE_WCTOMB +# define HAVE_MBTOWC +# define HAVE_SOCKLEN_T +# elif defined(AS400) +# define HAVE_SNPRINTF +# define HAVE_STRRCHR +# define HAVE_STRTOD +# define HAVE_SSCANF +# define HAVE_STRTOL +# define HAVE_STRTOUL +# define HAVE_SYS_TIMEB_H +# define HAVE_FTIME +# define HAVE_RAND_R +# define HAVE_GMTIME_R +# define HAVE_ASCTIME_R +# define HAVE_LOCALTIME_R +# define HAVE_WCTOMB +# define HAVE_MBTOWC +# elif defined(__QNX__) || defined(QNX) +/* QNX does not have a working version of strtof */ +# undef HAVE_STRTOF +# define HAVE_POLL +# define HAVE_SNPRINTF +# define HAVE_STRLCPY +# define HAVE_STRRCHR +# define HAVE_STRTOD +# define HAVE_SSCANF +# define HAVE_STRTOL +# define HAVE_STRTOUL +# define HAVE_STRTOLL +# define HAVE_STRTOULL +# define HAVE_GETTIMEOFDAY +# define HAVE_SYS_TIMEB_H +# define HAVE_FTIME +# define HAVE_RAND_R +# define HAVE_GETHOSTBYNAME_R +# define HAVE_GMTIME_R +# define HAVE_ASCTIME_R +# define HAVE_LOCALTIME_R +# define HAVE_STRERROR_R +# define HAVE_WCTOMB +# define HAVE_MBTOWC +# define HAVE_SOCKLEN_T +# elif defined(SUN_OS) +# define HAVE_SNPRINTF +# define HAVE_STRRCHR +# define HAVE_STRTOD +# define HAVE_SSCANF +# define HAVE_STRTOL +# define HAVE_STRTOUL +# define HAVE_SYS_TIMEB_H +# define HAVE_FTIME +# define HAVE_RAND_R +# define HAVE_GETHOSTBYNAME_R +# define HAVE_GMTIME_R +# define HAVE_ASCTIME_R +# define HAVE_LOCALTIME_R +# else /* Default assumptions for supported library functions when not including config.h */ +# ifndef WITH_C_LOCALE +# ifndef WITH_NO_C_LOCALE +# define WITH_NO_C_LOCALE /* turn locale support off by default */ +# endif +# endif +# define HAVE_SNPRINTF +# define HAVE_STRRCHR +# define HAVE_STRTOD +# define HAVE_SSCANF +# define HAVE_STRTOL +# define HAVE_STRTOUL +# define HAVE_STRTOLL +# define HAVE_STRTOULL +# define HAVE_SYS_TIMEB_H +# define HAVE_FTIME +# define HAVE_RAND_R +# define HAVE_GETHOSTBYNAME_R +# define HAVE_GMTIME_R +# define HAVE_ASCTIME_R +# define HAVE_LOCALTIME_R +# define HAVE_STRERROR_R +# define HAVE_LOCALE_H +# ifdef MB_LEN_MAX +# define HAVE_WCTOMB +# define HAVE_MBTOWC +# endif +# endif +#endif + +#ifdef WITH_LEANER +# ifndef WITH_LEAN +# define WITH_LEAN +# endif +#endif + +/* gSOAP 2.7.15 and higher: always use FAST and retain CDATA in literal XML, unless WITH_LEAN or WITH_NOCDATA */ +#ifndef WITH_LEAN +# ifndef WITH_FAST +# define WITH_FAST +# endif +# ifndef WITH_NOCDATA +# ifndef WITH_CDATA +# define WITH_CDATA +# endif +# endif +#endif + +#if !defined(__cplusplus) +/* allowing empty struct/union in C is a GNU extension */ +# if !defined(__GNU__) && !defined(__GNUC__) +# define WITH_NOEMPTYSTRUCT +# endif +#endif + +/* silence clang's C99 variadic macro warnings */ +#ifdef __clang__ +# pragma clang diagnostic ignored "-Wvariadic-macros" +#endif + +#if defined(WITH_PURE_VIRTUAL) +# define SOAP_PURE_VIRTUAL = 0 +# define SOAP_PURE_VIRTUAL_COPY = 0 +#elif defined(WITH_DEFAULT_VIRTUAL) +# define SOAP_PURE_VIRTUAL { return SOAP_NO_METHOD; } +# define SOAP_PURE_VIRTUAL_COPY +#else +# define SOAP_PURE_VIRTUAL +# define SOAP_PURE_VIRTUAL_COPY +#endif + +/* older OpenVMS TCP/IP stacks cannot handle 65536 bytes */ +#ifdef __VMS +# ifndef SOAP_BUFLEN +# define SOAP_BUFLEN (65535) +# endif +#endif + +/* small buffer, to accelerate base64 and hex binary output */ +#ifndef SOAP_BINARY_BUFLEN +# define SOAP_BINARY_BUFLEN (128) +#endif + +/* if we have locale.h then we should use it WITH_C_LOCALE enabled to avoid decimal point conversion issues */ +#ifdef HAVE_LOCALE_H +# ifndef WITH_NO_C_LOCALE +# ifndef WITH_C_LOCALE +# define WITH_C_LOCALE +# endif +# endif +#endif + +/* MinGW does not support uselocale() and xlocale.h and gettimeofday() */ +#if defined(__MINGW32__) || defined(__MINGW64__) +# if !defined(WITH_NO_C_LOCALE) +# define WITH_NO_C_LOCALE +# endif +# undef HAVE_GETTIMEOFDAY +#endif + +/* user can set WITH_NO_C_LOCALE to force removal of locale (e.g. in case of compiler errors) */ +#ifdef WITH_NO_C_LOCALE +# undef WITH_C_LOCALE +#endif + +#ifndef WITH_NOSTDLIB +# include +# include +# include +# if !defined(HAVE_CONFIG_H) || defined(HAVE_CTYPE_H) +# include +# endif +# if !defined(HAVE_CONFIG_H) || defined(HAVE_LIMITS_H) +# include /* for MB_LEN_MAX */ +# endif +# if !defined(HAVE_CONFIG_H) || defined(HAVE_FLOAT_H) +# include /* for INFINITY */ +# endif +# if !defined(HAVE_CONFIG_H) || defined(HAVE_MATH_H) +# include /* for isnan() and isinf() */ +# endif +#endif + +/* force inclusion of xlocale.h when WITH_INCLUDE_XLOCALE_H is defined by the user for systems that require xlocale.h */ +#ifdef WITH_INCLUDE_XLOCALE_H +# ifndef HAVE_XLOCALE_H +# define HAVE_XLOCALE_H +# endif +#endif + +#ifdef WITH_C_LOCALE +# include +# if defined(WIN32) && !defined(CYGWIN) +# define SOAP_LOCALE_T _locale_t +# define SOAP_LOCALE(soap) ((soap)->c_locale ? (soap)->c_locale : ((soap)->c_locale = _create_locale(LC_ALL, "C"))) +# define SOAP_FREELOCALE(soap) (void)((soap)->c_locale && (_free_locale((soap)->c_locale), ((soap)->c_locale = NULL))) +# else +# if defined(HAVE_XLOCALE_H) +# include +# endif +# define SOAP_LOCALE_T locale_t +# define SOAP_LOCALE(soap) ((soap)->c_locale ? (soap)->c_locale : ((soap)->c_locale = newlocale(LC_ALL_MASK, "C", NULL))) +# define SOAP_FREELOCALE(soap) (void)((soap)->c_locale && (freelocale((soap)->c_locale), ((soap)->c_locale = NULL))) +# if defined(CYGWIN) +# undef HAVE_STRTOF_L /* Cygwin does not support strtof_l strtod_l */ +# undef HAVE_STRTOD_L +# endif +# endif +#else +# undef HAVE_STRTOF_L +# undef HAVE_STRTOD_L +# undef HAVE_SSCANF_L +#endif + +#ifdef TANDEM_NONSTOP /* Support for Guardian */ +# define SOAP_BUFLEN (32767) +/*# define WITH_NOSTDLIB */ /* uncommment to remove stdlib dependences */ +# define WITH_NOIO /* no IO dependences, e.g. remove TCP/IP */ +# define int32_t int +# define int64_t long long +# define LONG64 long long +# define ULONG64 unsigned long long +# define DBL_PINFTY (1.1579208923716189e77) +# undef HAVE_WCTOMB +# undef HAVE_MBTOWC +# undef HAVE_GMTIME_R +# undef HAVE_ASCTIME_R +# undef HAVE_LOCALTIME_R +# undef HAVE_SNPRINTF +# define SOAP_BUFLEN (32767) +# define SOAP_SOCKET short +#pragma nolist +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# define INET_ERROR 4294967295 +#pragma list +#elif defined(__TANDEM) /* Support for OSS */ +# define int32_t int +# define SOAP_BUFLEN (32767) +#endif + +#ifdef WITH_NTLM +# include +#endif + +#ifdef HAVE_POLL +# include +#endif + +#ifdef __cplusplus +# include +# include +# ifndef WITH_COMPAT +# include +# include +# endif +#endif + +#ifdef WITH_NOHTTP +# ifndef WITH_NOIO +# define WITH_NOIO +# undef WITH_COOKIES +# endif +#endif + +/* Suggestion when SOAP_FD_EXCEEDED error occurs: + Some systems allow increasing FD_SETSIZE before including sys/types.h: +#define FD_SETSIZE (2048) +*/ + +#ifndef UNDER_CE +# ifndef WITH_NOIO +# include +# include +# endif +# ifndef WITH_LEAN +# ifdef HAVE_SYS_TIMEB_H +# include /* for ftime() */ +# endif +# include +# endif +#endif + +#ifdef OPENSERVER +# include +# include +# include + extern int h_errno; +#endif + +#ifdef HAVE_GETTIMEOFDAY +# ifndef WIN32 +# ifdef VXWORKS +# ifdef _WRS_KERNEL +# include +# endif +# else +# include /* for timeval and gettimeofday() */ +# endif +# endif +#endif + +#ifndef WITH_NOIO +# ifndef WIN32 +# include +# ifdef VXWORKS +# include +# include +# ifndef _WRS_KERNEL +# include +# endif +# else +# ifndef SYMBIAN +# include +# endif +# endif +# ifdef SUN_OS +# include /* SUN */ +# include /* only needed with SUN < 2.8 ? */ +# endif +# ifdef VXWORKS +# ifdef _WRS_KERNEL +# include +# endif +# endif +# include +# ifdef OS390 +# include +# else +# include /* TCP_NODELAY, TCP_FASTOPEN */ +# endif +# include +# endif +#endif + +#ifdef WIN32 +# define SOAP_WINSOCKINT int +#else +# define SOAP_WINSOCKINT size_t +#endif + +#ifdef WIN32 +# undef WITH_SELF_PIPE +#endif + +#if defined(WITH_IPV6_V6ONLY) +# ifndef WITH_IPV6 +# define WITH_IPV6 +# endif +#endif + +#ifdef WIN32 +# ifndef UNDER_CE +# include +# include +# endif +// When you get macro redefinition errors when compiling the code below, then: +// a) try arrange your includes so is included after "stdsoap2.h" +// b) or define _WINSOCKAPI_ first: +// #define _WINSOCKAPI_ // stops windows.h including winsock.h +// #include +// #include "stdsoap2.h" +// c) or compile with the -DWIN32_LEAN_AND_MEAN switch +# include // Visual Studio 2005 users: install Platform SDK (R2) +# include +// # define _WSPIAPI_COUNTOF // DEV NOTE: enble to fix problems with VC6 +// # include +# include // DEV NOTE: replaces older wspiapi.h above +# ifdef WITH_IPV6 +# define SOAP_GAI_STRERROR gai_strerrorA +# endif +#else +# ifdef VXWORKS +# include +# include +# include +# endif +# ifndef WITH_NOIO +# include +# include +# include +# include +# ifdef _AIX41 +# include +# endif +# endif +#endif + +#ifdef WITH_FASTCGI +# include +#endif + +#ifdef WITH_OPENSSL +# ifdef __VMS +# pragma names save +# pragma names uppercase +# endif +# undef WITH_GNUTLS +# define OPENSSL_NO_KRB5 +# include +# include +# include +# include +# include +# include +# include +# include +# ifndef ALLOW_OLD_VERSIONS +# if (OPENSSL_VERSION_NUMBER < 0x00905100L) +# error "Must use OpenSSL 0.9.6 or later" +# endif +# endif +# ifdef __VMS +# pragma names restore +# endif +#endif + +#ifdef WITH_GNUTLS +# include +# include +# if GNUTLS_VERSION_NUMBER < 0x020b00 +/* deprecated since GNUTLS 2.11.0 */ +# include +# endif +# ifndef HAVE_PTHREAD_H +# ifdef _POSIX_THREADS +# define HAVE_PTHREAD_H /* make GNUTLS thread safe */ +# endif +# endif +#endif + +#ifdef WITH_SYSTEMSSL +# include +#endif + +#ifdef WITH_GZIP +# ifndef WITH_ZLIB +# define WITH_ZLIB +# endif +#endif + +#ifdef WITH_CASEINSENSITIVETAGS +# define SOAP_STRCMP soap_tag_cmp /* case insensitive XML element/attribute names */ +#else +# define SOAP_STRCMP strcmp /* case sensitive XML element/attribute names */ +#endif + +#ifdef WITH_ZLIB +# include +#endif + +/* #define DEBUG */ /* Uncomment to debug sending (in file SENT.log) receiving (in file RECV.log) and internal operations (in file TEST.log) */ + +/* #define DEBUG_STAMP */ /* Uncomment to debug sending (in file SENT.log) receiving (in file RECV.log) and time-stamped operations (in file TEST.log) */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Portability (X/Open, BSD sockets etc): define SOAP_SOCKLEN_T as socklen_t or int or ... */ +#if defined(HAVE_SOCKLEN_T) +# define SOAP_SOCKLEN_T socklen_t +#elif defined(_AIX) || defined(AIX) || defined(HP_UX) +# if defined(_AIX43) +# define SOAP_SOCKLEN_T socklen_t +# else +# define SOAP_SOCKLEN_T int +# endif +#elif defined(SOCKLEN_T) +# define SOAP_SOCKLEN_T SOCKLEN_T +#elif defined(__socklen_t_defined) || defined(_SOCKLEN_T) || defined(__ANDROID__) || !defined(_GNU_SOURCE) || (!_GNU_SOURCE && !defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 +# define SOAP_SOCKLEN_T socklen_t +#elif defined(IRIX) || defined(WIN32) || defined(SUN_OS) || defined(OPENSERVER) || defined(TRU64) || defined(VXWORKS) +# define SOAP_SOCKLEN_T int +#elif !defined(SOAP_SOCKLEN_T) +# define SOAP_SOCKLEN_T socklen_t +#endif + +/* AIX DCE threads portability: define SOAP_FUNC_R_ERR gmtime_r and localtime_r err ret val as -1 */ +#ifdef _AIX32_THREADS +# define SOAP_FUNC_R_ERR (-1) +#elif !defined(SOAP_FUNC_R_ERR) +# define SOAP_FUNC_R_ERR (NULL) +#endif + +#ifndef SOAP_SOCKET +# ifdef WIN32 +# define SOAP_SOCKET SOCKET +# define soap_closesocket(n) closesocket(n) +# else +# define SOAP_SOCKET int +# define soap_closesocket(n) close(n) +# endif +#endif + +#define SOAP_INVALID_SOCKET ((SOAP_SOCKET)-1) +#define soap_valid_socket(sk) ((sk) != SOAP_INVALID_SOCKET) + +#define SOAP_SHUT_WR (1) +#define SOAP_SHUT_RDWR (2) + +#ifndef SOAP_GAI_STRERROR +# define SOAP_GAI_STRERROR gai_strerror +#endif + +#ifndef FD_SETSIZE +# define FD_SETSIZE (1024) +#endif + +#ifdef WITH_LEAN +# define SOAP_CHK_EOF SOAP_EOF +#else +# define SOAP_CHK_EOF (soap->error ? soap->error : SOAP_EOF) +#endif + +#ifdef __cplusplus +# ifndef __STDC_FORMAT_MACROS +# define __STDC_FORMAT_MACROS +# endif +#endif + +#if defined(SYMBIAN) +# warning "Symbian build: removing 64 bit integer support" +# define LONG64 long +# define ULONG64 unsigned LONG64 +# ifndef SOAP_LONG_FORMAT +# define SOAP_LONG_FORMAT "%ld" +# endif +# ifndef SOAP_ULONG_FORMAT +# define SOAP_ULONG_FORMAT "%lu" +# endif +#elif !defined(WIN32) || defined(CYGWIN) || defined(__GLIBC__) || defined(__GNU__) || defined(__GNUC__) +# ifndef LONG64 +# if defined(HAVE_INTTYPES_H) +# include +# define LONG64 int64_t +# define ULONG64 uint64_t +# if defined(PRId64) && defined(PRIu64) +# ifndef SOAP_LONG_FORMAT +# define SOAP_LONG_FORMAT "%" PRId64 +# endif +# ifndef SOAP_ULONG_FORMAT +# define SOAP_ULONG_FORMAT "%" PRIu64 +# endif +# endif +# elif defined(HAVE_SYS_INTTYPES_H) +# include +# define LONG64 int64_t +# define ULONG64 uint64_t +# if defined(PRId64) && defined(PRIu64) +# ifndef SOAP_LONG_FORMAT +# define SOAP_LONG_FORMAT "%" PRId64 +# endif +# ifndef SOAP_ULONG_FORMAT +# define SOAP_ULONG_FORMAT "%" PRIu64 +# endif +# endif +# elif defined(HAVE_STDINT_H) +# include +# define LONG64 int64_t +# define ULONG64 uint64_t +# if defined(PRId64) && defined(PRIu64) +# ifndef SOAP_LONG_FORMAT +# define SOAP_LONG_FORMAT "%" PRId64 +# endif +# ifndef SOAP_ULONG_FORMAT +# define SOAP_ULONG_FORMAT "%" PRIu64 +# endif +# endif +# elif defined(CYGWIN) || defined(__GLIBC__) +# include +# if (__WORDSIZE == 64) +# define LONG64 int64_t +# define ULONG64 uint64_t +# ifndef SOAP_LONG_FORMAT +# define SOAP_LONG_FORMAT "%ld" +# endif +# ifndef SOAP_ULONG_FORMAT +# define SOAP_ULONG_FORMAT "%lu" +# endif +# else +# define LONG64 long long +# define ULONG64 unsigned LONG64 +# endif +# else +# define LONG64 long long +# define ULONG64 unsigned LONG64 +# endif +# endif +#elif defined(UNDER_CE) +# define LONG64 __int64 +# define ULONG64 unsigned LONG64 +#elif defined(__BORLANDC__) +# define LONG64 __int64 +# define ULONG64 unsigned LONG64 +#endif + +#ifndef SOAP_LONG_FORMAT +# define SOAP_LONG_FORMAT "%lld" /* printf format for 64 bit long long ints */ +#endif + +#ifndef SOAP_ULONG_FORMAT +# define SOAP_ULONG_FORMAT "%llu" /* printf format for unsigned 64 bit long long ints */ +#endif + +#if defined(WIN32) && !defined(CYGWIN) +# define soap_int32 __int32 +#elif defined(SYMBIAN) +# define soap_int32 long +#elif defined(_AIX) || defined(AIX) +# if defined(_AIX43) +# define soap_int32 int32_t +# else +# define soap_int32 signed int +# endif +#else +# define soap_int32 int32_t +#endif + +#ifdef WIN32 +# define SOAP_ERANGE ERANGE +# define SOAP_EINTR WSAEINTR +# define SOAP_EAGAIN WSAEWOULDBLOCK +# define SOAP_EWOULDBLOCK WSAEWOULDBLOCK +# define SOAP_EINPROGRESS WSAEINPROGRESS +# define SOAP_EADDRINUSE WSAEADDRINUSE +# define SOAP_ECONNREFUSED WSAECONNREFUSED +#else +# ifdef ERANGE +# define SOAP_ERANGE ERANGE +# else +# define SOAP_ERANGE (34) +# endif +# define SOAP_EINTR EINTR +# define SOAP_EAGAIN EAGAIN +# define SOAP_EADDRINUSE EADDRINUSE +# define SOAP_ECONNREFUSED ECONNREFUSED +# ifdef SYMBIAN +# define SOAP_EWOULDBLOCK 9898 +# define SOAP_EINPROGRESS 9899 +# else +# define SOAP_EWOULDBLOCK EWOULDBLOCK +# define SOAP_EINPROGRESS EINPROGRESS +# endif +#endif + +#ifdef WIN32 +# ifdef UNDER_CE +# define soap_errno GetLastError() +# define soap_socket_errno(s) GetLastError() +# define soap_reset_errno SetLastError(0) +# else +# define soap_errno GetLastError() +# define soap_socket_errno(s) WSAGetLastError() +# define soap_reset_errno SetLastError(0) +# endif +#else +# ifndef WITH_NOIO +# define soap_errno errno +# define soap_socket_errno(s) errno +# define soap_reset_errno (errno = 0) +# else +# define soap_errno 0 +# define soap_socket_errno(s) 0 +# define soap_reset_errno +# endif +#endif + +#ifndef SOAP_BUFLEN +# if !defined(WITH_LEAN) +# define SOAP_BUFLEN (65536) /* buffer length for socket packets, so don't make this too small */ +# else +# define SOAP_BUFLEN (2048) /* lean size */ +# endif +#endif +#ifndef SOAP_LABLEN +# define SOAP_LABLEN (256) /* initial look-aside buffer length */ +#endif +#ifndef SOAP_PTRBLK +# define SOAP_PTRBLK (32) /* block allocation for pointer hash table chains */ +#endif +#ifndef SOAP_PTRHASH +# ifndef WITH_LEAN +# define SOAP_PTRHASH (4096) /* size of pointer analysis hash table (must be power of 2) */ +# else +# define SOAP_PTRHASH (32) +# endif +#endif +#ifndef SOAP_IDHASH +# ifndef WITH_LEAN +# define SOAP_IDHASH (1999) /* prime size of hash table for parsed id/ref */ +# else +# define SOAP_IDHASH (19) /* 19, 199 */ +# endif +#endif +#ifndef SOAP_BLKLEN +# ifndef WITH_LEAN +# define SOAP_BLKLEN (256) /* to collect long strings and XML attributes */ +# else +# define SOAP_BLKLEN (32) +# endif +#endif +#ifndef SOAP_TAGLEN +# ifndef WITH_LEAN +# define SOAP_TAGLEN (1024) /* maximum length of XML element tag/attribute name or host/path name + 1 */ +# else +# define SOAP_TAGLEN (256) +# endif +#endif +#ifndef SOAP_HDRLEN +# ifndef WITH_LEAN +# define SOAP_HDRLEN (8192) /* maximum length of HTTP header line (must be >=4096 to read cookies) */ +# else +# define SOAP_HDRLEN (1024) +# endif +#endif +#ifndef SOAP_TMPLEN +# ifndef WITH_LEAN +# define SOAP_TMPLEN (2048) /* maximum length of msgbuf and tmpbuf short message buffers, must be >=1024 */ +# else +# define SOAP_TMPLEN (1024) +# endif +#endif +#ifndef SOAP_MAXDIMS +# ifndef WITH_LEAN +# define SOAP_MAXDIMS (16) /* maximum array dimensions (array nestings) must be less than 64 to protect soap->tmpbuf */ +# else +# define SOAP_MAXDIMS (4) +# endif +#endif +#ifndef SOAP_MAXPTRS +# ifndef WITH_LEAN +# define SOAP_MAXPTRS (4) /* maximum depth + 1 of id-ref deserialized pointer types (int* has depth 0, int*** has depth 2) */ +# else +# define SOAP_MAXPTRS (2) +# endif +#endif + +#ifndef SOAP_MAXALLOCSIZE +# define SOAP_MAXALLOCSIZE (0) /* max size that malloc() can handle, zero for no limit */ +#endif + +#ifndef SOAP_MAXLOGS +# define SOAP_MAXLOGS (3) /* max number of debug logs per struct soap environment */ +# define SOAP_INDEX_RECV (0) +# define SOAP_INDEX_SENT (1) +# define SOAP_INDEX_TEST (2) +#endif + +/* Tag name of multiref elements in SOAP 1.1 encoding */ +#ifndef SOAP_MULTIREFTAG +# define SOAP_MULTIREFTAG "id" +#endif + +/* href-id value base name in multiref SOAP encoding */ +#ifndef SOAP_BASEREFNAME +# define SOAP_BASEREFNAME "_" +#endif + +/* Max number of EINTR interrupts to ignore while poll/select for pending activity on a socket */ +/* Each EINTR ignored may increase the I/O blocking time by at most one second */ +#ifndef SOAP_MAXEINTR +# define SOAP_MAXEINTR (10) +#endif + +/* SOAP_MAXKEEPALIVE: Max iterations in soap_serve() to keep server connection alive */ +#ifndef SOAP_MAXKEEPALIVE +# define SOAP_MAXKEEPALIVE (100) +#endif + +/* SOAP_MAXARRAYSIZE: Trusted total max size of an inbound SOAP Array. + Arrays of larger size are not pre-allocated, but deserialized + on an element-by-element basis until XML validation contrains kick in. + This macro only affects the efficiency of parsing SOAP arrays. +*/ +#ifndef SOAP_MAXARRAYSIZE +# define SOAP_MAXARRAYSIZE (100000) +#endif + +/* SOAP_MAXDIMESIZE: Trusted max size of inbound DIME data. + Increase if necessary to allow larger attachments, or decrease when server + resources are limited. This is to deny senders to allocate more than 8 MB + at the receiver without actually sending the whole message. +*/ +#ifndef SOAP_MAXDIMESIZE +# define SOAP_MAXDIMESIZE (8*1048576) /* 8 MB */ +#endif + +/* SOAP_MAXINFLATESIZE: Trusted inflated content size. + Larger content is subject to the SOAP_MINDEFLATERATIO constraint. + If SOAP_MINDEFLATERATIO is 1.0, SOAP_MAXINFLATESIZE is always the max + size of uncompressed content. +*/ +#ifndef SOAP_MAXINFLATESIZE +# define SOAP_MAXINFLATESIZE (1*1048576) /* 1 MB */ +#endif + +/* SOAP_MINDEFLATERATIO: Trusted deflation ratio after SOAP_MAXINFLATESIZE is reached. + Trust when compressed / deflated > SOAP_MINDEFLATERATIO + Sets a ratio > 0.00096899224806 (1032:1) + According to the zlib site: the limit (1032:1) comes from the fact that one + length/distance pair can represent at most 258 output bytes. A length + requires at least one bit and a distance requires at least one bit, so two + bits in can give 258 bytes out, or eight bits in give 1032 bytes out. A + dynamic block has no length restriction, so you could get arbitrarily close + to the limit of 1032:1. +*/ +#ifndef SOAP_MINDEFLATERATIO +# define SOAP_MINDEFLATERATIO (1.0/1032.0) /* ratio of deflated/inflated */ +#endif + +/* maximum XML nesting depth level allowed for inbound XML parsing, must be greater than zero (0) */ +#ifndef SOAP_MAXLEVEL +# define SOAP_MAXLEVEL (10000) +#endif + +/* maximum string content length if not already constrained by XML schema validation maxLength constraints, zero or negative means unlimited string lengths are allowed unless restricted by XML schema maxLength */ +#ifndef SOAP_MAXLENGTH +# define SOAP_MAXLENGTH (0) +#endif + +/* maximum number of array or container elements, must be greater than zero (0) */ +#ifndef SOAP_MAXOCCURS +# define SOAP_MAXOCCURS (100000) +#endif + +#ifdef VXWORKS +# ifdef WMW_RPM_IO +# include "httpLib.h" +# endif +# ifdef __INCmathh +# include +# ifndef HAVE_ISNAN +# define HAVE_ISNAN +# endif +# ifndef soap_isnan +# define soap_isnan(num) isNan(num) +# endif +# endif +# ifdef WM_SECURE_KEY_STORAGE +# include +# endif +#endif + +#ifdef WIN32 +# ifndef HAVE_ISNAN +# define HAVE_ISNAN +# endif +# define soap_isnan(n) _isnan(n) +# ifndef HAVE_ISINF +# define HAVE_ISINF +# endif +# define soap_isinf(n) (!_finite(n)) +#endif + +#ifdef SUN_OS +# define HAVE_ISNAN +#endif + +#ifdef __APPLE__ +# ifndef HAVE_ISNAN +# define HAVE_ISNAN +# endif +# ifndef HAVE_ISINF +# define HAVE_ISINF +# endif +#endif + +#if !defined(HAVE_ISNAN) && (defined(_MATH_H) || defined(_MATH_INCLUDED)) +# define HAVE_ISNAN +#endif + +union soap_double_nan {struct {unsigned int n1, n2;} iv; double dv; float fv;}; +extern const union soap_double_nan soap_double_nan; +extern const char soap_base64o[], soap_base64i[]; + +#ifdef VXWORKS +# ifndef FLT_MAX +# define FLT_MAX _ARCH_FLT_MAX +# endif +# ifndef DBL_MAX +# define DBL_MAX _ARCH_DBL_MAX +# endif +#endif + +#ifndef FLT_NAN +# define FLT_NAN (soap_double_nan.fv) +#endif + +#ifndef FLT_PINFTY +# if defined(INFINITY) +# define FLT_PINFTY INFINITY +# elif defined(FLT_MAX) +# define FLT_PINFTY FLT_MAX +# elif defined(HUGE_VALF) +# define FLT_PINFTY (float)HUGE_VALF +# elif defined(HUGE_VAL) +# define FLT_PINFTY (float)HUGE_VAL +# elif defined(FLOAT_MAX) +# define FLT_PINFTY FLOAT_MAX +# else +# define FLT_PINFTY (3.40282347e+38F) +# endif +#endif + +#ifndef FLT_NINFTY +# define FLT_NINFTY (-FLT_PINFTY) +#endif + +#ifndef DBL_NAN +# define DBL_NAN (soap_double_nan.dv) +#endif + +#ifndef DBL_PINFTY +# if defined(INFINITY) +# define DBL_PINFTY INFINITY +# elif defined(DBL_MAX) +# define DBL_PINFTY DBL_MAX +# elif defined(HUGE_VALF) +# define DBL_PINFTY (double)HUGE_VALF +# elif defined(HUGE_VAL) +# define DBL_PINFTY (double)HUGE_VAL +# elif defined(DOUBLE_MAX) +# define DBL_PINFTY DOUBLE_MAX +# else +# define DBL_PINFTY (1.7976931348623157e+308) +# endif +#endif + +#ifndef DBL_NINFTY +# define DBL_NINFTY (-DBL_PINFTY) +#endif + +#ifndef soap_isnan +# ifdef HAVE_ISNAN +# define soap_isnan(n) isnan(n) +# else +# define soap_isnan(n) ((n) != (n)) +# endif +#endif + +#ifndef soap_isinf +# ifdef HAVE_ISINF +# define soap_isinf(n) isinf(n) +# else +# define soap_isinf(n) (!soap_isnan(n) && soap_isnan((n) - (n))) +# endif +#endif + +#define soap_ispinfd(n) ((n) > 0 && soap_isinf(n)) +#define soap_ispinff(n) ((n) > 0 && soap_isinf(n)) +#define soap_isninfd(n) ((n) < 0 && soap_isinf(n)) +#define soap_isninff(n) ((n) < 0 && soap_isinf(n)) + +/* Safer str & mem functions */ + +/* The gSOAP code uses guards to ensure that these functions are well behaved + and do not raise errors. Therefore, the WIN _s functions should never + execute the "invalid parameter handler". +*/ + +/* use safer snprintf if possible or guard sprintf against overrun (assumes no variadic macros) */ +# ifdef HAVE_SNPRINTF +# if _MSC_VER >= 1400 +# define SOAP_SNPRINTF(buf, len, num) void)_snprintf_s((buf), (len), _TRUNCATE +# define SOAP_SNPRINTF_SAFE(buf, len) void)_snprintf_s((buf), (len), _TRUNCATE +# else +# define SOAP_SNPRINTF(buf, len, num) void)snprintf((buf), (len) +# define SOAP_SNPRINTF_SAFE(buf, len) void)snprintf((buf), (len) +# endif +# else +# define SOAP_SNPRINTF(buf, len, num) (len) <= (num)) ? (void)((buf)[0] = '\0') : (void)sprintf((buf) +# define SOAP_SNPRINTF_SAFE(buf, len) void)sprintf((buf) +# endif + +/* copy string (truncating the result, strings must not be NULL) */ +#if _MSC_VER >= 1400 +# define soap_strcpy(buf, len, src) (void)strncpy_s((buf), (len), (src), _TRUNCATE) +#elif defined(HAVE_STRLCPY) +# define soap_strcpy(buf, len, src) (void)strlcpy((buf), (src), (len)) +#else +# define soap_strcpy(buf, len, src) (void)(strncpy((buf), (src), (len)), (buf)[(len) - 1] = '\0') +#endif + +/* concat string (truncating the result, strings must not be NULL) */ +#if _MSC_VER >= 1400 +# define soap_strcat(buf, len, src) (void)strncat_s((buf), (len), (src), _TRUNCATE) +#elif defined(HAVE_STRLCAT) +# define soap_strcat(buf, len, src) (void)strlcat((buf), (src), (len)) +#else +SOAP_FMAC1 void SOAP_FMAC2 soap_strcat(char *buf, size_t len, const char *src); +#endif + +/* copy string up to num chars (sets string to empty on overrun and returns nonzero, zero if OK) */ +#if _MSC_VER >= 1400 +# define soap_strncpy(buf, len, src, num) ((buf) == NULL || ((size_t)(len) > (size_t)(num) ? strncpy_s((buf), (len), (src), (num)) : ((buf)[0] = '\0', 1))) +#else +# define soap_strncpy(buf, len, src, num) ((buf) == NULL || ((size_t)(len) > (size_t)(num) ? (strncpy((buf), (src), (num)), (buf)[(size_t)(num)] = '\0') : ((buf)[0] = '\0', 1))) +#endif + +/* concat string up to n chars (leaves destination intact on overrun and returns nonzero, zero if OK) */ +#if _MSC_VER >= 1400 +# define soap_strncat(buf, len, src, num) ((buf) == NULL || ((size_t)(len) > strlen((buf)) + (size_t)(num) ? strncat_s((buf), (len), (src), (num)) : 1)) +#else +SOAP_FMAC1 int SOAP_FMAC2 soap_strncat(char *buf, size_t len, const char *src, size_t num); +#endif + +/* copy memory (returns SOAP_ERANGE on overrun, zero if OK, pointers must not be NULL) */ +#if _MSC_VER >= 1400 +# define soap_memcpy(buf, len, src, num) ((size_t)(len) >= (size_t)(num) ? memcpy_s((buf), (len), (src), (num)) : SOAP_ERANGE) +#else +# define soap_memcpy(buf, len, src, num) ((size_t)(len) >= (size_t)(num) ? !memcpy((buf), (src), (num)) : SOAP_ERANGE) +#endif + +/* move memory (returns SOAP_ERANGE on overrun, zero if OK, pointers must not be NULL) */ +#if _MSC_VER >= 1400 +# define soap_memmove(buf, len, src, num) ((size_t)(len) >= (size_t)(num) ? memmove_s((buf), (len), (src), (num)) : SOAP_ERANGE) +#else +# define soap_memmove(buf, len, src, num) ((size_t)(len) >= (size_t)(num) ? !memmove((buf), (src), (num)) : SOAP_ERANGE) +#endif + +/* gSOAP status and error codes */ + +typedef soap_int32 soap_status; + +#define SOAP_EOF EOF +#define SOAP_OK 0 +#define SOAP_CLI_FAULT 1 +#define SOAP_SVR_FAULT 2 +#define SOAP_TAG_MISMATCH 3 +#define SOAP_TYPE 4 +#define SOAP_SYNTAX_ERROR 5 +#define SOAP_NO_TAG 6 +#define SOAP_IOB 7 +#define SOAP_MUSTUNDERSTAND 8 +#define SOAP_NAMESPACE 9 +#define SOAP_USER_ERROR 10 +#define SOAP_FATAL_ERROR 11 /* deprecated */ +#define SOAP_FAULT 12 +#define SOAP_NO_METHOD 13 +#define SOAP_NO_DATA 14 +#define SOAP_GET_METHOD 15 +#define SOAP_PUT_METHOD 16 +#define SOAP_PATCH_METHOD 17 +#define SOAP_DEL_METHOD 18 +#define SOAP_HTTP_METHOD 19 +#define SOAP_EOM 20 +#define SOAP_MOE 21 +#define SOAP_HDR 22 +#define SOAP_NULL 23 +#define SOAP_DUPLICATE_ID 24 +#define SOAP_MISSING_ID 25 +#define SOAP_HREF 26 +#define SOAP_UDP_ERROR 27 +#define SOAP_TCP_ERROR 28 +#define SOAP_HTTP_ERROR 29 +#define SOAP_SSL_ERROR 30 +#define SOAP_ZLIB_ERROR 31 +#define SOAP_DIME_ERROR 32 +#define SOAP_DIME_HREF 33 +#define SOAP_DIME_MISMATCH 34 +#define SOAP_DIME_END 35 +#define SOAP_MIME_ERROR 36 +#define SOAP_MIME_HREF 37 +#define SOAP_MIME_END 38 +#define SOAP_VERSIONMISMATCH 39 +#define SOAP_PLUGIN_ERROR 40 +#define SOAP_DATAENCODINGUNKNOWN 41 /* unused */ +#define SOAP_REQUIRED 42 +#define SOAP_PROHIBITED 43 +#define SOAP_OCCURS 44 +#define SOAP_LENGTH 45 +#define SOAP_PATTERN 46 +#define SOAP_FD_EXCEEDED 47 +#define SOAP_UTF_ERROR 48 +#define SOAP_NTLM_ERROR 49 +#define SOAP_LEVEL 50 +#define SOAP_FIXED 51 +#define SOAP_EMPTY 52 +#define SOAP_END_TAG 53 +#define SOAP_ERR 99 + +#define soap_xml_error_check(e) \ + ((e) == SOAP_TAG_MISMATCH || \ + (e) == SOAP_NO_TAG || \ + (e) == SOAP_IOB || \ + (e) == SOAP_SYNTAX_ERROR || \ + (e) == SOAP_NAMESPACE || \ + (e) == SOAP_TYPE || \ + (e) == SOAP_DUPLICATE_ID || \ + (e) == SOAP_MISSING_ID || \ + (e) == SOAP_REQUIRED || \ + (e) == SOAP_PROHIBITED || \ + (e) == SOAP_OCCURS || \ + (e) == SOAP_LENGTH || \ + (e) == SOAP_LEVEL || \ + (e) == SOAP_PATTERN || \ + (e) == SOAP_NULL || \ + (e) == SOAP_HREF || \ + (e) == SOAP_FIXED || \ + (e) == SOAP_EMPTY || \ + (e) == SOAP_END_TAG || \ + (e) == SOAP_UTF_ERROR) + +#define soap_soap_error_check(e) \ + ((e) == SOAP_CLI_FAULT || \ + (e) == SOAP_SVR_FAULT || \ + (e) == SOAP_VERSIONMISMATCH || \ + (e) == SOAP_MUSTUNDERSTAND || \ + (e) == SOAP_FAULT || \ + (e) == SOAP_NO_METHOD || \ + (e) == SOAP_DATAENCODINGUNKNOWN) + +#define soap_http_error_check(e) \ + ((e) == SOAP_HTTP_ERROR || \ + (e) == SOAP_NO_DATA || \ + ((e) >= SOAP_GET_METHOD && (e) <= SOAP_HTTP_METHOD) || \ + ((e) >= 100 && (e) < 600)) + +#define soap_dime_error_check(e) \ + ((e) == SOAP_DIME_ERROR || \ + (e) == SOAP_DIME_HREF || \ + (e) == SOAP_DIME_MISMATCH || \ + (e) == SOAP_DIME_END) + +#define soap_mime_error_check(e) \ + ((e) == SOAP_MIME_ERROR || \ + (e) == SOAP_MIME_HREF || \ + (e) == SOAP_MIME_END) + +#define soap_tcp_error_check(e) \ + ((e) == SOAP_EOF || \ + (e) == SOAP_TCP_ERROR) + +#define soap_udp_error_check(e) \ + ((e) == SOAP_EOF || \ + (e) == SOAP_UDP_ERROR) + +#define soap_ssl_error_check(e) ((e) == SOAP_SSL_ERROR) + +#define soap_zlib_error_check(e) ((e) == SOAP_ZLIB_ERROR) + +/* gSOAP HTTP response status codes 100 to 599 are reserved */ + +/* Codes 600 to 999 are user definable */ + +/* Exceptional gSOAP HTTP server response status codes >= 1000 */ + +#define SOAP_STOP 1000 /* No HTTP response should follow after SOAP_STOP is issued */ +#define SOAP_FORM 1001 /* Request (form) data is present, no HTTP response should follow */ +#define SOAP_HTML 1002 /* Custom HTML response */ +#define SOAP_FILE 1200 /* Custom file-based response with soap::http_content and optional http status */ + +/* gSOAP HTTP method codes (client) */ + +typedef int soap_http_command; + +#define SOAP_POST 2000 /* POST request */ +#define SOAP_POST_FILE 2001 /* Custom file-based POST request */ +#define SOAP_GET 2002 /* GET request */ +#define SOAP_PUT 2003 /* PUT request */ +#define SOAP_PATCH 2004 /* PATCH request */ +#define SOAP_DEL 2005 /* DELETE request */ +#define SOAP_HEAD 2006 /* HEAD request */ +#define SOAP_OPTIONS 2007 /* OPTIONS request */ +#define SOAP_CONNECT 2008 /* CONNECT request */ + +/* gSOAP DIME */ + +#define SOAP_DIME_CF 0x01 +#define SOAP_DIME_ME 0x02 +#define SOAP_DIME_MB 0x04 +#define SOAP_DIME_VERSION 0x08 /* DIME version 1 */ +#define SOAP_DIME_MEDIA 0x10 +#define SOAP_DIME_ABSURI 0x20 + +/* gSOAP ZLIB */ + +#define SOAP_ZLIB_NONE 0x00 +#define SOAP_ZLIB_DEFLATE 0x01 +#define SOAP_ZLIB_INFLATE 0x02 +#define SOAP_ZLIB_GZIP 0x02 + +/* gSOAP transport, connection, and content encoding modes */ + +typedef soap_int32 soap_mode; + +#define SOAP_IO 0x00000003 /* IO mask */ +#define SOAP_IO_FLUSH 0x00000000 /* out: flush output immediately, no buffering */ +#define SOAP_IO_BUFFER 0x00000001 /* out: buffer output in packets of size SOAP_BUFLEN */ +#define SOAP_IO_STORE 0x00000002 /* out: store entire output to determine length for transport */ +#define SOAP_IO_CHUNK 0x00000003 /* out: use HTTP chunked transfer AND buffer packets */ + +#define SOAP_IO_UDP 0x00000004 /* in/out: enable UDP instead of TCP */ +#define SOAP_IO_LENGTH 0x00000008 /* out: calc message length (internal) */ +#define SOAP_IO_KEEPALIVE 0x00000010 /* out: keep connection alive */ + +#define SOAP_ENC 0x00000FFF /* IO and ENC mask */ +#define SOAP_ENC_LATIN 0x00000020 /* in: accept iso-8859-1 */ +#define SOAP_ENC_PLAIN 0x00000040 /* out: plain (XML or other) body, no HTTP header */ +#define SOAP_ENC_XML 0x00000040 /* deprecated, alias for SOAP_ENC_PLAIN */ +#define SOAP_ENC_DIME 0x00000080 +#define SOAP_ENC_MIME 0x00000100 +#define SOAP_ENC_MTOM 0x00000200 +#define SOAP_ENC_ZLIB 0x00000400 +#define SOAP_ENC_SSL 0x00000800 + +#define SOAP_XML_STRICT 0x00001000 /* in: strict validation */ +#define SOAP_XML_INDENT 0x00002000 /* out: emit indented XML */ +#define SOAP_XML_IGNORENS 0x00004000 /* in: ignore namespaces */ +#define SOAP_XML_DEFAULTNS 0x00008000 /* out: emit xmlns="..." */ +#define SOAP_XML_CANONICAL 0x00010000 /* out: exc-C14N exclusive canonical XML */ +#define SOAP_XML_TREE 0x00020000 /* in/out: XML tree (no id/ref) */ +#define SOAP_XML_NIL 0x00040000 /* out: all NULLs as xsi:nil */ +#define SOAP_XML_NOTYPE 0x00080000 /* out: do not add xsi:type */ + +#define SOAP_DOM_TREE 0x00100000 /* see DOM manual */ +#define SOAP_DOM_NODE 0x00200000 +#define SOAP_DOM_ASIS 0x00400000 + +#define SOAP_XML_CANONICAL_NA 0x00800000 /* out: (exc) C14N not QName aware */ + +#define SOAP_C_NOIOB 0x01000000 /* don't fault on array index out of bounds (just ignore) */ +#define SOAP_C_UTFSTRING 0x02000000 /* (de)serialize strings with UTF8 content */ +#define SOAP_C_MBSTRING 0x04000000 /* (de)serialize strings with multi-byte content */ +#define SOAP_C_NILSTRING 0x08000000 /* serialize empty strings as nil (omitted) */ + +#define SOAP_XML_DOM 0x10000000 /* enable internal DOM */ +#define SOAP_XML_GRAPH 0x20000000 /* force id-ref XML graph */ + +#define SOAP_MIME_POSTCHECK 0x40000000 /* MIME flag (internal) */ + +#define SOAP_SEC_WSUID 0x80000000 /* Add Body wsu:Id flag (internal) */ + +/* WITH_XMLNS backward compatibility: always use XML default namespaces */ +#ifdef WITH_XMLNS +# define SOAP_IO_DEFAULT (SOAP_IO_FLUSH | SOAP_XML_DEFAULTNS) +#else +# define SOAP_IO_DEFAULT SOAP_IO_FLUSH +#endif + +/* SSL client/server authentication settings */ + +#define SOAP_SSL_NO_AUTHENTICATION (0x0000) /* no authentication */ +#define SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION (0x0001) /* client requires server to authenticate */ +#define SOAP_SSL_REQUIRE_CLIENT_AUTHENTICATION (0x0002) /* server requires client to authenticate */ +#define SOAP_SSL_SKIP_HOST_CHECK (0x0004) /* client skips common name check against host name */ +#define SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE (0x0008) /* allow self-signed and expired certificates and those w/o CRL */ +#define SOAP_SSL_NO_DEFAULT_CA_PATH (0x0010) /* don't use SSL_CTX_set_default_verify_paths */ +#define SOAP_SSL_RSA (0x0020) /* use RSA */ +#define SOAP_SSLv3 (0x0080) /* enable SSL v3 */ +#define SOAP_TLSv1_0 (0x0100) /* enable TLS v1.0 */ +#define SOAP_TLSv1_1 (0x0200) /* enable TLS v1.1 */ +#define SOAP_TLSv1_2 (0x0400) /* enable TLS v1.2 */ +#define SOAP_TLSv1_3 (0x0800) /* enable TLS v1.3 */ +#define SOAP_TLSv1 (SOAP_TLSv1_0 | SOAP_TLSv1_1 | SOAP_TLSv1_2 | SOAP_TLSv1_3) +#define SOAP_SSLv3_TLSv1 (SOAP_SSLv3 | SOAP_TLSv1) + +#define SOAP_SSL_CLIENT (0x8000) /* client context flag for internal use */ + +#define SOAP_SSL_DEFAULT SOAP_SSL_REQUIRE_SERVER_AUTHENTICATION + +typedef unsigned short soap_ssl_flags; + +/* state */ + +#define SOAP_NONE 0 +#define SOAP_INIT 1 +#define SOAP_COPY 2 + +#define soap_check_state(soap) (!(soap) || ((soap)->state != SOAP_INIT && (soap)->state != SOAP_COPY)) + +/* parts */ + +#define SOAP_END 0 +#define SOAP_BEGIN_SEND 1 +#define SOAP_BEGIN_RECV 2 +#define SOAP_IN_ENVELOPE 3 +#define SOAP_IN_HEADER 4 +#define SOAP_END_HEADER 5 +#define SOAP_NO_BODY 6 +#define SOAP_IN_BODY 7 +#define SOAP_END_BODY 8 +#define SOAP_END_ENVELOPE 9 + +/* events */ + +#define SOAP_SEC_BEGIN 1 +#define SOAP_SEC_SIGN 2 +#define SOAP_SEC_DECRYPT 3 + +/* DEBUG macros */ + +#ifdef DEBUG_STAMP +# ifndef DEBUG +# define DEBUG +# endif +#endif + +#ifdef DEBUG +# ifndef SOAP_DEBUG +# define SOAP_DEBUG +# endif +# ifndef SOAP_MEM_DEBUG +# define SOAP_MEM_DEBUG +# endif +#endif + +#ifdef SOAP_MEM_DEBUG +# ifndef SOAP_MALLOC +# define SOAP_MALLOC(soap, size) soap_track_malloc((soap), __FILE__, __LINE__, (size)) +# endif +# ifndef SOAP_FREE +# define SOAP_FREE(soap, ptr) soap_track_free((soap), __FILE__, __LINE__, (void*)(ptr)) +# endif +#endif + +#ifndef SOAP_MALLOC /* use libc malloc */ +# define SOAP_MALLOC(soap, size) malloc((size)) +#endif + +#ifndef SOAP_FREE /* use libc free */ +# define SOAP_FREE(soap, ptr) free((void*)(ptr)) +#endif + +#ifndef SOAP_MALLOC_UNMANAGED /* use libc malloc to alloc soap context with soap_new() */ +# define SOAP_MALLOC_UNMANAGED(size) malloc((size)) +#endif + +#ifndef SOAP_FREE_UNMANAGED /* use libc free to free soap context with soap_free() */ +# define SOAP_FREE_UNMANAGED(ptr) free((void*)(ptr)) +#endif + +#ifndef SOAP_NOTHROW +# if defined(__GNUC__) && (__GNUC__ <= 2) +# define SOAP_NOTHROW +# elif defined(WITH_LEAN) || defined(WITH_COMPAT) +# define SOAP_NOTHROW +# else +# define SOAP_NOTHROW (std::nothrow) +# endif +#endif + +#if defined(__BORLANDC__) && !defined(__clang__) +/* Embarcadero Classic compiler special case */ +# ifndef SOAP_NEW +# define SOAP_NEW(soap, type) new SOAP_NOTHROW (type) +# endif +# ifndef SOAP_NEW_ARRAY +# define SOAP_NEW_ARRAY(soap, type, n) new SOAP_NOTHROW (type[n]) +# endif +# ifndef SOAP_PLACEMENT_NEW +# define SOAP_PLACEMENT_NEW(soap, buf, type) new (buf) (type) +# endif +#elif (defined(__GNUC__) && (__GNUC__ <= 2)) || defined(__clang__) || defined(_AIX) || defined(AIX) +/* old form w/o parenthesis, soap context may be NULL */ +# ifndef SOAP_NEW +# define SOAP_NEW(soap, type) new SOAP_NOTHROW type +# endif +# ifndef SOAP_NEW_ARRAY +# define SOAP_NEW_ARRAY(soap, type, n) new SOAP_NOTHROW type[n] +# endif +# ifndef SOAP_PLACEMENT_NEW +# define SOAP_PLACEMENT_NEW(soap, buf, type) new (buf) type +# endif +#else +/* new form with parenthesis for (type) but not type[n], soap context may be NULL */ +# ifndef SOAP_NEW +# define SOAP_NEW(soap, type) new SOAP_NOTHROW (type) +# endif +# ifndef SOAP_NEW_ARRAY +# define SOAP_NEW_ARRAY(soap, type, n) new SOAP_NOTHROW type[n] +# endif +# ifndef SOAP_PLACEMENT_NEW +# define SOAP_PLACEMENT_NEW(soap, buf, type) new (buf) (type) +# endif +#endif + +#ifndef SOAP_DELETE /* use C++ delete operator, soap context may be NULL */ +# define SOAP_DELETE(soap, obj, type) delete obj +#endif + +#ifndef SOAP_DELETE_ARRAY /* use C++ delete[] operator, soap context may be NULL */ +# define SOAP_DELETE_ARRAY(soap, obj, type) delete[] obj +#endif + +#ifndef SOAP_NEW_UNMANAGED /* use C++ unmanaged new operator for soap_new() and soap::copy() */ +# define SOAP_NEW_UNMANAGED(soap) new SOAP_NOTHROW soap +#endif + +#ifndef SOAP_DELETE_UNMANAGED /* use C++ unmanaged delete operator for soap_free() */ +# define SOAP_DELETE_UNMANAGED(soap) delete soap +#endif + +#ifdef SOAP_DEBUG +# ifndef SOAP_MESSAGE +# define SOAP_MESSAGE fprintf +# endif +# ifndef DBGLOG +# ifdef DEBUG_STAMP +# ifdef WIN32 +# define DBGLOG(DBGFILE, CMD) \ +{ if (soap)\ + { if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\ + soap_open_logfile((struct soap*)soap, SOAP_INDEX_##DBGFILE);\ + if (soap->fdebug[SOAP_INDEX_##DBGFILE])\ + { FILE *fdebug = soap->fdebug[SOAP_INDEX_##DBGFILE];\ + SYSTEMTIME _localTime;\ + ::GetLocalTime(&_localTime); \ + fprintf(fdebug, "%02d%02d%02d %02d:%02d:%02d.%03d|", (int)_localTime.wYear%100, (int)_localTime.wMonth, (int)_localTime.wDay, (int)_localTime.wHour, (int)_localTime.wMinute, (int)_localTime.wSecond, (int)_localTime.wMilliseconds);\ + CMD;\ + fflush(fdebug);\ + }\ + }\ +} +# else +# define DBGLOG(DBGFILE, CMD) \ +{ if (soap)\ + { if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\ + soap_open_logfile((struct soap*)soap, SOAP_INDEX_##DBGFILE);\ + if (soap->fdebug[SOAP_INDEX_##DBGFILE])\ + { FILE *fdebug = soap->fdebug[SOAP_INDEX_##DBGFILE];\ + struct timeval _tv;\ + struct tm _tm;\ + gettimeofday(&_tv, NULL);\ + localtime_r(&_tv.tv_sec, &_tm);\ + fprintf(fdebug, "%02d%02d%02d %02d:%02d:%02d.%06ld|", (int)_tm.tm_year%100, (int)_tm.tm_mon+1, (int)_tm.tm_mday, (int)_tm.tm_hour, (int)_tm.tm_min, (int)_tm.tm_sec, (long)_tv.tv_usec);\ + CMD;\ + fflush(fdebug);\ + }\ + }\ +} +# endif +# else +# define DBGLOG(DBGFILE, CMD) \ +{ if (soap)\ + { if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\ + soap_open_logfile((struct soap*)soap, SOAP_INDEX_##DBGFILE);\ + if (soap->fdebug[SOAP_INDEX_##DBGFILE])\ + { FILE *fdebug = soap->fdebug[SOAP_INDEX_##DBGFILE];\ + CMD;\ + fflush(fdebug);\ + }\ + }\ +} +# endif +# endif +# ifndef DBGMSG +# define DBGMSG(DBGFILE, MSG, LEN) \ +{ if (soap)\ + { if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\ + soap_open_logfile((struct soap*)soap, SOAP_INDEX_##DBGFILE);\ + if (soap->fdebug[SOAP_INDEX_##DBGFILE])\ + { fwrite((void*)(MSG), 1, (size_t)(LEN), soap->fdebug[SOAP_INDEX_##DBGFILE]);\ + fflush(soap->fdebug[SOAP_INDEX_##DBGFILE]);\ + }\ + }\ +} +# endif +# ifndef DBGFUN +# define DBGFUN(FNAME) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s()\n", __FILE__, __LINE__, FNAME)) +# define DBGFUN1(FNAME, FMT, ARG) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s(" FMT ")\n", __FILE__, __LINE__, FNAME, (ARG))) +# define DBGFUN2(FNAME, FMT1, ARG1, FMT2, ARG2) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s(" FMT1 ", " FMT2 ")\n", __FILE__, __LINE__, FNAME, (ARG1), (ARG2))) +# define DBGFUN3(FNAME, FMT1, ARG1, FMT2, ARG2, FMT3, ARG3) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s(" FMT1 ", " FMT2 ", " FMT3 ")\n", __FILE__, __LINE__, FNAME, (ARG1), (ARG2), (ARG3))) +# define DBGFUN4(FNAME, FMT1, ARG1, FMT2, ARG2, FMT3, ARG3, FMT4, ARG4) DBGLOG(TEST, SOAP_MESSAGE(fdebug, "%s(%d): %s(" FMT1 ", " FMT2 ", " FMT3 ", " FMT4 ")\n", __FILE__, __LINE__, FNAME, (ARG1), (ARG2), (ARG3), (ARG4))) +# endif +# ifndef DBGHEX +# define DBGHEX(DBGFILE, MSG, LEN) \ +{ if (soap)\ + { if (!soap->fdebug[SOAP_INDEX_##DBGFILE])\ + soap_open_logfile(soap, SOAP_INDEX_##DBGFILE);\ + if (soap->fdebug[SOAP_INDEX_##DBGFILE])\ + { int i; char *s;\ + for (s = (char*)(MSG), i = (LEN); i; i--)\ + fprintf(soap->fdebug[SOAP_INDEX_##DBGFILE], "%2.2X ", (int)*s++&0xFF);\ + fflush(soap->fdebug[SOAP_INDEX_##DBGFILE]);\ + }\ + }\ +} +# endif +#else +# define DBGLOG(DBGFILE, CMD) +# define DBGMSG(DBGFILE, MSG, LEN) +# define DBGFUN(FNAME) +# define DBGFUN1(FNAME, FMT, ARG) +# define DBGFUN2(FNAME, FMT1, ARG1, FMT2, ARG2) +# define DBGFUN3(FNAME, FMT1, ARG1, FMT2, ARG2, FMT3, ARG3) +# define DBGFUN4(FNAME, FMT1, ARG1, FMT2, ARG2, FMT3, ARG3, FMT4, ARG4) +# define DBGHEX(DBGFILE, MSG, LEN) +#endif + +/* UCS-4 requires 32 bits (0-7FFFFFFF, the sign bit is used by gSOAP to distinguish XML entities) */ +typedef soap_int32 soap_wchar; + +/* forward declaration */ +struct SOAP_CMAC soap; + +/* namespace table row */ +struct SOAP_CMAC Namespace +{ + const char *id; + const char *ns; + const char *in; + char *out; +}; + +/* namespace stack */ +struct soap_nlist +{ + struct soap_nlist *next; + unsigned int level; /* nesting depth level */ + short index; /* corresponding entry in ns mapping table */ + const char *ns; /* only set when parsed ns URI is not in the ns mapping table */ + char id[1]; /* the actual string value flows into the allocated region id[0...] below this struct */ +}; + +/* block header, the data flows into the allocated region below this struct */ +struct soap_bhead +{ + struct soap_bhead *next; + size_t size; +}; + +/* block stack for nested block allocations */ +struct soap_blist +{ + struct soap_blist *next; + struct soap_bhead *head; + size_t size; + size_t item; +}; + +/* pointer serialization management */ +struct soap_plist +{ + struct soap_plist *next; + const void *ptr; + void *dup; + const void *array; /* array pointer */ + int size; /* array size */ + int type; + int id; + char mark1; /* 0=single-ref, 1=embedded-multi-ref (SOAP1.1), 2=multi-ref, 3=attachment */ + char mark2; +}; + +/* block allocation for pointer serialization management */ +struct soap_pblk +{ + struct soap_pblk *next; + struct soap_plist plist[SOAP_PTRBLK]; +}; + +#ifdef SOAP_MEM_DEBUG +/* malloc/free tracking for debugging */ +struct soap_mlist +{ + struct soap_mlist *next; + const void *ptr; + const char *file; + int line; + short live; +}; +#endif + +/* class allocation list */ +struct soap_clist +{ + struct soap_clist *next; + void *ptr; + int type; + int size; /* array size */ + int (*fdelete)(struct soap*, struct soap_clist*); +}; + +/* attributes */ +struct soap_attribute +{ + struct soap_attribute *next; + short flag; /* soap_set_attr: 1 = normal, 2 = utf content */ + char *value; + size_t size; + const char *ns; + short visible; + char name[1]; /* the actual name string flows into the allocated region below this struct */ +}; + +#if !defined(WITH_LEAN) || defined(WITH_COOKIES) +struct soap_cookie +{ + struct soap_cookie *next; + char *name; + char *value; + char *domain; + char *path; + ULONG64 expire; /* client-side: local time to expire (value cast to time_t) */ + long maxage; /* server-side: seconds to expire */ + unsigned int version; + short secure; + short session; /* server-side */ + short env; /* server-side: got cookie from client and should not be (re)send */ + short modified; /* server-side: client cookie was modified and should be send */ +}; +#endif + +SOAP_FMAC1 struct soap_multipart* SOAP_FMAC2 soap_next_multipart(struct soap_multipart*); + +#ifdef __cplusplus + +class soap_multipart_iterator +{ + public: + struct soap_multipart *content; + bool operator==(const soap_multipart_iterator& iter) const + { return (bool)(content == iter.content); } + bool operator!=(const soap_multipart_iterator& iter) const + { return (bool)(content != iter.content); } + struct soap_multipart& operator*() const + { return *content; } + struct soap_multipart *operator->() const + { return content; } + soap_multipart_iterator& operator++() + { content = soap_next_multipart(content); return *this; } + soap_multipart_iterator operator++(int) + { soap_multipart_iterator iter(*this); content = soap_next_multipart(content); return iter; } + soap_multipart_iterator() : content(NULL) + { } + soap_multipart_iterator(struct soap_multipart *p) : content(p) + { } +}; + +#endif + +#ifndef WITH_LEANER +struct soap_dime +{ + size_t count; + size_t size; + size_t chunksize; + size_t buflen; + char flags; + char *ptr; + const char *id; + const char *type; + const char *options; + struct soap_multipart *list; /* list of DIME attachments received */ + struct soap_multipart *first, *last; /* temporary in/out queue */ +#ifdef __cplusplus + soap_multipart_iterator begin() + { soap_multipart_iterator iter(list); return iter; }; + soap_multipart_iterator end() + { soap_multipart_iterator iter(NULL); return iter; }; +#endif +}; +#endif + +#ifndef WITH_LEANER +struct soap_mime +{ + char *boundary; /* MIME boundary */ + const char *start; /* MIME start ID */ + struct soap_multipart *list; /* list of MIME attachments received */ + struct soap_multipart *first, *last; /* temporary in/out queue */ +#ifdef __cplusplus + soap_multipart_iterator begin() + { soap_multipart_iterator iter(list); return iter; }; + soap_multipart_iterator end() + { soap_multipart_iterator iter(NULL); return iter; }; +#endif +}; +#endif + +#ifndef WITH_LEANER +/* RFC2045 MIME content transfer encodings */ +enum soap_mime_encoding +{ + SOAP_MIME_NONE, + SOAP_MIME_7BIT, + SOAP_MIME_8BIT, + SOAP_MIME_BINARY, + SOAP_MIME_QUOTED_PRINTABLE, + SOAP_MIME_BASE64, + SOAP_MIME_IETF_TOKEN, + SOAP_MIME_X_TOKEN +}; +#endif + +#ifndef WITH_LEANER +/* DIME/MIME multipart list */ +struct soap_multipart +{ + struct soap_multipart *next; + const char *ptr; /* points to raw data content */ + size_t size; /* size of data content */ + const char *id; /* DIME/MIME content ID or form data name */ + const char *type; /* DIME/MIME type (MIME type format) */ + const char *options; /* DIME options */ + enum soap_mime_encoding encoding; /* MIME Content-Transfer-Encoding */ + const char *location; /* MIME Content-Location (optional) */ + const char *description; /* MIME Content-Description (optional) */ +#ifdef __cplusplus + typedef soap_multipart_iterator iterator; +#endif +}; +#endif + +#ifndef WITH_LEANER +/* attachment DIME and MTOM XOP forwarding */ +struct soap_xlist +{ + struct soap_xlist *next; + unsigned char **ptr; + int *size; + char *id; + char **type; + char **options; +}; +#endif + +/******************************************************************************/ + +#ifndef WITH_LEANER + +/* dom.c[pp] functions (optional, compile and link dom.c[pp] */ +struct SOAP_CMAC soap_dom_element; +struct SOAP_CMAC soap_dom_attribute; + +/* soap_dom_element construction */ + +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt_new(struct soap *soap, const char *ns, const char *tag); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt_new_w(struct soap *soap, const char *ns, const wchar_t *tag); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt_set(struct soap_dom_element *elt, const char *ns, const char *tag); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt_set_w(struct soap_dom_element *elt, const char *ns, const wchar_t *tag); + +SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_att(struct soap_dom_element *elt, const char *ns, const char *tag); +SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_att_w(struct soap_dom_element *elt, const char *ns, const wchar_t *tag); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt(struct soap_dom_element *elt, const char *ns, const char *tag); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt_w(struct soap_dom_element *elt, const char *ns, const wchar_t *tag); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_nth_elt(struct soap_dom_element *elt, const char *ns, const char *tag, size_t n); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_nth_elt_w(struct soap_dom_element *elt, const char *ns, const wchar_t *tag, size_t n); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_nth(struct soap_dom_element *elt, size_t n); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_add_att(struct soap_dom_element *elt, const struct soap_dom_attribute *node); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_add_elt(struct soap_dom_element *elt, const struct soap_dom_element *node); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_add_atts(struct soap_dom_element *elt, const struct soap_dom_attribute *atts); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_add_elts(struct soap_dom_element *elt, const struct soap_dom_element *elts); + +/* soap_dom_element assignment */ + +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt_bool(struct soap_dom_element *elt, LONG64 b); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt_int(struct soap_dom_element *elt, LONG64 n); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt_double(struct soap_dom_element *elt, double x); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt_text(struct soap_dom_element *elt, const char *text); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt_text_w(struct soap_dom_element *elt, const wchar_t *text); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt_node(struct soap_dom_element *elt, const void *node, int type); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt_copy(struct soap_dom_element *elt, const struct soap_dom_element *node); + +/* soap_dom_element properties */ + +SOAP_FMAC1 int SOAP_FMAC2 soap_elt_match(const struct soap_dom_element *elt, const char *ns, const char *patt); +SOAP_FMAC1 int SOAP_FMAC2 soap_elt_match_w(const struct soap_dom_element *elt, const char *ns, const wchar_t *patt); +SOAP_FMAC1 const char * SOAP_FMAC2 soap_elt_get_ns(const struct soap_dom_element *elt); +SOAP_FMAC1 const char * SOAP_FMAC2 soap_elt_get_tag(const struct soap_dom_element *elt); +SOAP_FMAC1 int SOAP_FMAC2 soap_elt_is_true(const struct soap_dom_element *elt); +SOAP_FMAC1 int SOAP_FMAC2 soap_elt_is_false(const struct soap_dom_element *elt); +SOAP_FMAC1 int SOAP_FMAC2 soap_elt_get_int(const struct soap_dom_element *elt); +SOAP_FMAC1 long SOAP_FMAC2 soap_elt_get_long(const struct soap_dom_element *elt); +SOAP_FMAC1 LONG64 SOAP_FMAC2 soap_elt_get_LONG64(const struct soap_dom_element *elt); +SOAP_FMAC1 double SOAP_FMAC2 soap_elt_get_double(const struct soap_dom_element *elt); +SOAP_FMAC1 const char * SOAP_FMAC2 soap_elt_get_text(const struct soap_dom_element *elt); +SOAP_FMAC1 const void * SOAP_FMAC2 soap_elt_get_node(const struct soap_dom_element *elt, int type); +SOAP_FMAC1 int SOAP_FMAC2 soap_elt_get_type(const struct soap_dom_element *elt, const void **node); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt_parent(const struct soap_dom_element *elt); +SOAP_FMAC1 size_t SOAP_FMAC2 soap_elt_depth(const struct soap_dom_element *elt); +SOAP_FMAC1 size_t SOAP_FMAC2 soap_elt_index(const struct soap_dom_element *elt); +SOAP_FMAC1 size_t SOAP_FMAC2 soap_elt_len(const struct soap_dom_element *elt); +SOAP_FMAC1 size_t SOAP_FMAC2 soap_elt_nth(const struct soap_dom_element *elt); + +/* soap_dom_attribute construction */ + +SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_att_new(struct soap *soap, const char *ns, const char *tag); +SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_att_new_w(struct soap *soap, const char *ns, const wchar_t *tag); +SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_att_set(struct soap_dom_attribute *att, const char *ns, const char *tag); +SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_att_set_w(struct soap_dom_attribute *att, const char *ns, const wchar_t *tag); +SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_att_add(struct soap_dom_attribute *att, const char *ns, const char *tag); +SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_att_add_w(struct soap_dom_attribute *att, const char *ns, const wchar_t *tag); + +/* soap_dom_attribute assignment */ + +SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_att_bool(struct soap_dom_attribute *att, LONG64 b); +SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_att_int(struct soap_dom_attribute *att, LONG64 n); +SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_att_double(struct soap_dom_attribute *att, double x); +SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_att_text(struct soap_dom_attribute *att, const char *text); +SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_att_text_w(struct soap_dom_attribute *att, const wchar_t *text); +SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_att_copy(struct soap_dom_attribute *att, const struct soap_dom_attribute *node); + +/* soap_dom_attribute properties */ + +SOAP_FMAC1 int SOAP_FMAC2 soap_att_match(const struct soap_dom_attribute *att, const char *ns, const char *patt); +SOAP_FMAC1 int SOAP_FMAC2 soap_att_match_w(const struct soap_dom_attribute *att, const char *ns, const wchar_t *patt); +SOAP_FMAC1 const char * SOAP_FMAC2 soap_att_get_ns(const struct soap_dom_attribute *att); +SOAP_FMAC1 const char * SOAP_FMAC2 soap_att_get_tag(const struct soap_dom_attribute *att); +SOAP_FMAC1 int SOAP_FMAC2 soap_att_is_true(const struct soap_dom_attribute *att); +SOAP_FMAC1 int SOAP_FMAC2 soap_att_is_false(const struct soap_dom_attribute *att); +SOAP_FMAC1 int SOAP_FMAC2 soap_att_get_int(const struct soap_dom_attribute *att); +SOAP_FMAC1 long SOAP_FMAC2 soap_att_get_long(const struct soap_dom_attribute *att); +SOAP_FMAC1 LONG64 SOAP_FMAC2 soap_att_get_LONG64(const struct soap_dom_attribute *att); +SOAP_FMAC1 double SOAP_FMAC2 soap_att_get_double(const struct soap_dom_attribute *att); +SOAP_FMAC1 const char * SOAP_FMAC2 soap_att_get_text(const struct soap_dom_attribute *att); + +/* DOM local traversal */ + +SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_att_first(struct soap_dom_element *elt); +SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_att_next(const struct soap_dom_attribute *att); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt_first(struct soap_dom_element *elt); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt_next(const struct soap_dom_element *elt); + +/* DOM local retrieval */ + +SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_att_get(const struct soap_dom_element *elt, const char *ns, const char *tag); +SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_att_get_w(const struct soap_dom_element *elt, const char *ns, const wchar_t *tag); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt_get(const struct soap_dom_element *elt, const char *ns, const char *tag); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt_get_w(const struct soap_dom_element *elt, const char *ns, const wchar_t *tag); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt_get_next(const struct soap_dom_element *elt); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt_get_nth(struct soap_dom_element *elt, size_t n); + +/* DOM local search */ + +SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_att_find(struct soap_dom_element *elt, const char *ns, const char *patt); +SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_att_find_next(const struct soap_dom_attribute *att, const char *ns, const char *patt); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt_find(struct soap_dom_element *elt, const char *ns, const char *patt); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt_find_next(const struct soap_dom_element *elt, const char *ns, const char *patt); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt_find_type(struct soap_dom_element *elt, const char *ns, const char *patt, int type); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_elt_find_next_type(const struct soap_dom_element *elt, const char *ns, const char *patt, int type); + +/* DOM size of local search results */ + +SOAP_FMAC1 size_t SOAP_FMAC2 soap_att_size(struct soap_dom_element *elt, const char *ns, const char *patt); +SOAP_FMAC1 size_t SOAP_FMAC2 soap_elt_size(struct soap_dom_element *elt, const char *ns, const char *patt); +SOAP_FMAC1 size_t SOAP_FMAC2 soap_elt_size_type(struct soap_dom_element *elt, const char *ns, const char *patt, int type); + +/* DOM deep traversal */ + +SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_dom_next_attribute(const struct soap_dom_attribute *att); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_dom_next_element(const struct soap_dom_element *elt, const struct soap_dom_element *end); + +/* DOM deep search */ + +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_dom_find(struct soap_dom_element *begin, const struct soap_dom_element *end, const char *ns, const char *patt, int type); +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_dom_find_next(const struct soap_dom_element *elt, const struct soap_dom_element *end, const char *ns, const char *patt, int type); + +#endif + +#if defined(__cplusplus) +} /* extern "C" */ +#endif + +#ifndef WITH_LEANER +#ifdef __cplusplus +class SOAP_CMAC soap_dom_attribute_iterator +{ + public: + struct soap_dom_attribute *iter; + const char *nstr; + const char *name; + bool operator==(const soap_dom_attribute_iterator&) const; + bool operator!=(const soap_dom_attribute_iterator&) const; + struct soap_dom_attribute& operator*() const; + struct soap_dom_attribute *operator->() const; + soap_dom_attribute_iterator& operator++(); + soap_dom_attribute_iterator operator++(int); + soap_dom_attribute_iterator(); + soap_dom_attribute_iterator(struct soap_dom_attribute*); + ~soap_dom_attribute_iterator(); +}; +#endif +#endif + +#ifndef WITH_LEANER +struct SOAP_CMAC soap_dom_attribute +{ + struct soap_dom_attribute *next; + const char *nstr; + const char *name; + const char *text; + struct soap *soap; +#ifdef __cplusplus + typedef soap_dom_attribute_iterator iterator; + soap_dom_attribute(struct soap *soap = NULL); + soap_dom_attribute(const soap_dom_attribute& att); + soap_dom_attribute(struct soap *soap, const char *tag); + soap_dom_attribute(struct soap *soap, const wchar_t *tag); + soap_dom_attribute(struct soap *soap, const char *ns, const char *tag, const char *text); + soap_dom_attribute(struct soap *soap, const char *ns, const char *tag, const wchar_t *text); + soap_dom_attribute(struct soap *soap, const char *ns, const wchar_t *tag, const char *text); + soap_dom_attribute(struct soap *soap, const char *ns, const wchar_t *tag, const wchar_t *text); + soap_dom_attribute(struct soap *soap, const char *ns, const char *tag, const std::string& text); + soap_dom_attribute(struct soap *soap, const char *ns, const char *tag, const std::wstring& text); + soap_dom_attribute(struct soap *soap, const char *ns, const wchar_t *tag, const std::string& text); + soap_dom_attribute(struct soap *soap, const char *ns, const wchar_t *tag, const std::wstring& text); + ~soap_dom_attribute(); + soap_dom_attribute& set(const char *ns, const char *tag) { return *soap_att_set(this, ns, tag); } + soap_dom_attribute& set(const char *ns, const wchar_t *tag) { return *soap_att_set_w(this, ns, tag); } + soap_dom_attribute& set(bool b) { return *soap_att_bool(this, b); } + soap_dom_attribute& set(int n) { return *soap_att_int(this, n); } + soap_dom_attribute& set(LONG64 n) { return *soap_att_int(this, n); } + soap_dom_attribute& set(float x) { return *soap_att_double(this, x); } + soap_dom_attribute& set(double x) { return *soap_att_double(this, x); } + soap_dom_attribute& set(const char *text) { return *soap_att_text(this, text); } + soap_dom_attribute& set(const wchar_t *text) { return *soap_att_text_w(this, text); } +#ifndef WITH_COMPAT + soap_dom_attribute& set(const std::string& text) { return *soap_att_text(this, text.c_str()); } + soap_dom_attribute& set(const std::wstring& text) { return *soap_att_text_w(this, text.c_str()); } +#endif + soap_dom_attribute& operator=(bool b) { return *soap_att_bool(this, b); } + soap_dom_attribute& operator=(int n) { return *soap_att_int(this, n); } + soap_dom_attribute& operator=(LONG64 n) { return *soap_att_int(this, n); } + soap_dom_attribute& operator=(float x) { return *soap_att_double(this, x); } + soap_dom_attribute& operator=(double x) { return *soap_att_double(this, x); } + soap_dom_attribute& operator=(const char *text) { return *soap_att_text(this, text); } + soap_dom_attribute& operator=(const wchar_t *text) { return *soap_att_text_w(this, text); } +#ifndef WITH_COMPAT + soap_dom_attribute& operator=(const std::string& text) { return *soap_att_text(this, text.c_str()); } + soap_dom_attribute& operator=(const std::wstring& text) { return *soap_att_text_w(this, text.c_str()); } +#endif + soap_dom_attribute& operator=(const soap_dom_attribute& att) { return *soap_att_copy(this, &att); } + soap_dom_attribute& att(const char *tag) { return *soap_att_add(this, NULL, tag); } + soap_dom_attribute& att(const wchar_t *tag) { return *soap_att_add_w(this, NULL, tag); } + soap_dom_attribute& att(const char *ns, const char *tag) { return *soap_att_add(this, ns, tag); } + soap_dom_attribute& att(const char *ns, const wchar_t *tag) { return *soap_att_add_w(this, ns, tag); } + bool match(const char *patt) const { return soap_att_match(this, NULL, patt) != 0; } + bool match(const wchar_t *patt) const { return soap_att_match_w(this, NULL, patt) != 0; } + bool match(const char *ns, const char *patt) const { return soap_att_match(this, ns, patt) != 0; } + bool match(const char *ns, const wchar_t *patt) const { return soap_att_match_w(this, ns, patt) != 0; } + const char *ns() const { return this->nstr; } + const char *tag() const { return this->name; } + bool is_true() const { return soap_att_is_true(this) != 0; } + bool is_false() const { return soap_att_is_false(this) != 0; } + LONG64 get_int() const { return soap_att_get_LONG64(this); } + double get_double() const { return soap_att_get_double(this); } + const char *get_text() const { return this->text; } + operator bool() const { return soap_att_is_true(this) != 0; } + operator int() const { return soap_att_get_int(this); } + operator LONG64() const { return soap_att_get_LONG64(this); } + operator double() const { return soap_att_get_double(this); } + operator const char*() const { return this->text; } + soap_dom_attribute_iterator att_begin() { return soap_dom_attribute_iterator(this); } + soap_dom_attribute_iterator att_end() { return soap_dom_attribute_iterator(NULL); } + soap_dom_attribute_iterator att_find(const char *patt) { return att_find(NULL, patt); } + soap_dom_attribute_iterator att_find(const wchar_t *patt) { return att_find(NULL, patt); } + soap_dom_attribute_iterator att_find(const char *ns, const char *patt); + soap_dom_attribute_iterator att_find(const char *ns, const wchar_t *patt); + void unlink(); +#endif +}; +#endif + +#ifndef WITH_LEANER +#ifdef __cplusplus +class SOAP_CMAC soap_dom_element_iterator +{ + public: + struct soap_dom_element *iter; + struct soap_dom_element *stop; + const char *nstr; + const char *name; + int type; + bool deep; + bool operator==(const soap_dom_element_iterator&) const; + bool operator!=(const soap_dom_element_iterator&) const; + struct soap_dom_element& operator*() const; + struct soap_dom_element *operator->() const; + soap_dom_element_iterator& operator++(); + soap_dom_element_iterator operator++(int); + soap_dom_element_iterator(); + soap_dom_element_iterator(struct soap_dom_element*); + ~soap_dom_element_iterator(); +}; +#endif +#endif + +#ifndef WITH_LEANER +struct SOAP_CMAC soap_dom_element +{ + struct soap_dom_element *next; + struct soap_dom_element *prnt; + struct soap_dom_element *elts; + struct soap_dom_attribute *atts; + const char *nstr; + const char *name; + const char *lead; + const char *text; + const char *code; + const char *tail; + const void *node; + int type; + struct soap *soap; +#ifdef __cplusplus + typedef soap_dom_element_iterator iterator; + soap_dom_element(struct soap *soap = NULL); + soap_dom_element(const soap_dom_element& elt); + soap_dom_element(struct soap *soap, const char *tag); + soap_dom_element(struct soap *soap, const wchar_t *tag); + soap_dom_element(struct soap *soap, const char *ns, const char *tag); + soap_dom_element(struct soap *soap, const char *ns, const wchar_t *tag); + soap_dom_element(struct soap *soap, const char *ns, const char *tag, const char *text); + soap_dom_element(struct soap *soap, const char *ns, const char *tag, const wchar_t *text); + soap_dom_element(struct soap *soap, const char *ns, const wchar_t *tag, const char *text); + soap_dom_element(struct soap *soap, const char *ns, const wchar_t *tag, const wchar_t *text); +#ifndef WITH_COMPAT + soap_dom_element(struct soap *soap, const char *ns, const char *tag, const std::string& text); + soap_dom_element(struct soap *soap, const char *ns, const char *tag, const std::wstring& text); + soap_dom_element(struct soap *soap, const char *ns, const wchar_t *tag, const std::string& text); + soap_dom_element(struct soap *soap, const char *ns, const wchar_t *tag, const std::wstring& text); +#endif + soap_dom_element(struct soap *soap, const char *ns, const char *tag, const void *node, int type); + soap_dom_element(struct soap *soap, const char *ns, const wchar_t *tag, const void *node, int type); + ~soap_dom_element(); + soap_dom_element& set(const char *ns, const char *tag) { return *soap_elt_set(this, ns, tag); } + soap_dom_element& set(const char *ns, const wchar_t *tag) { return *soap_elt_set_w(this, ns, tag); } + soap_dom_element& set(bool b) { return *soap_elt_bool(this, b); } + soap_dom_element& set(int n) { return *soap_elt_int(this, n); } + soap_dom_element& set(LONG64 n) { return *soap_elt_int(this, n); } + soap_dom_element& set(float x) { return *soap_elt_double(this, x); } + soap_dom_element& set(double x) { return *soap_elt_double(this, x); } + soap_dom_element& set(const char *text) { return *soap_elt_text(this, text); } + soap_dom_element& set(const wchar_t *text) { return *soap_elt_text_w(this, text); } +#ifndef WITH_COMPAT + soap_dom_element& set(const std::string& text) { return *soap_elt_text(this, text.c_str()); } + soap_dom_element& set(const std::wstring& text) { return *soap_elt_text_w(this, text.c_str()); } +#endif + soap_dom_element& set(const void *node, int type) { return *soap_elt_node(this, node, type); } + soap_dom_element& add(soap_dom_element& elt) { return *soap_add_elt(this, &elt); } + soap_dom_element& add(soap_dom_element *elt) { return *soap_add_elt(this, elt); } + soap_dom_element& add(soap_dom_attribute& att) { return *soap_add_att(this, &att); } + soap_dom_element& add(soap_dom_attribute *att) { return *soap_add_att(this, att); } + soap_dom_element& adds(soap_dom_element& elts) { return *soap_add_elts(this, &elts); } + soap_dom_element& adds(soap_dom_element *elts) { return *soap_add_elts(this, elts); } + soap_dom_element& adds(soap_dom_attribute& atts) { return *soap_add_atts(this, &atts); } + soap_dom_element& adds(soap_dom_attribute *atts) { return *soap_add_atts(this, atts); } + soap_dom_element& operator=(bool b) { return *soap_elt_bool(this, b); } + soap_dom_element& operator=(int n) { return *soap_elt_int(this, n); } + soap_dom_element& operator=(LONG64 n) { return *soap_elt_int(this, n); } + soap_dom_element& operator=(float x) { return *soap_elt_double(this, x); } + soap_dom_element& operator=(double x) { return *soap_elt_double(this, x); } + soap_dom_element& operator=(const char *text) { return *soap_elt_text(this, text); } + soap_dom_element& operator=(const wchar_t *text) { return *soap_elt_text_w(this, text); } +#ifndef WITH_COMPAT + soap_dom_element& operator=(const std::string& text) { return *soap_elt_text(this, text.c_str()); } + soap_dom_element& operator=(const std::wstring& text) { return *soap_elt_text_w(this, text.c_str()); } +#endif + soap_dom_element& operator=(const soap_dom_element& elt) { return *soap_elt_copy(this, &elt); } + template soap_dom_element& operator=(const T& node) { return this->set(&node, node.soap_type()); } + template soap_dom_element& operator=(const T *node) { return this->set(node, node->soap_type()); } + template soap_dom_element& operator=(T *node) { return this->set(node, node->soap_type()); } + soap_dom_attribute& att(const char *tag) { return *soap_att(this, NULL, tag); } + soap_dom_attribute& att(const wchar_t *tag) { return *soap_att_w(this, NULL, tag); } + soap_dom_attribute& att(const char *ns, const char *tag) { return *soap_att(this, ns, tag); } + soap_dom_attribute& att(const char *ns, const wchar_t *tag) { return *soap_att_w(this, ns, tag); } + soap_dom_element& elt() { return *soap_elt(this, NULL, NULL); } + soap_dom_element& elt(const char *tag) { return *soap_elt(this, NULL, tag); } + soap_dom_element& elt(const wchar_t *tag) { return *soap_elt_w(this, NULL, tag); } + soap_dom_element& elt(const char *ns, const char *tag) { return *soap_elt(this, ns, tag); } + soap_dom_element& elt(const char *ns, const wchar_t *tag) { return *soap_elt_w(this, ns, tag); } + soap_dom_element& operator[](const char *tag) { return *soap_elt(this, NULL, tag); } + soap_dom_element& operator[](const wchar_t *tag) { return *soap_elt_w(this, NULL, tag); } + soap_dom_element& operator[](size_t n) { return *soap_nth(this, n); } + soap_dom_attribute *att_get(const char *tag) const { return soap_att_get(this, NULL, tag); } + soap_dom_attribute *att_get(const wchar_t *tag) const { return soap_att_get_w(this, NULL, tag); } + soap_dom_attribute *att_get(const char *ns, const char *tag) const { return soap_att_get(this, ns, tag); } + soap_dom_attribute *att_get(const char *ns, const wchar_t *tag) const { return soap_att_get_w(this, ns, tag); } + soap_dom_element *elt_get() const { return soap_elt_get(this, NULL, NULL); } + soap_dom_element *elt_get(const char *tag) const { return soap_elt_get(this, NULL, tag); } + soap_dom_element *elt_get(const wchar_t *tag) const { return soap_elt_get_w(this, NULL, tag); } + soap_dom_element *elt_get(const char *ns, const char *tag) const { return soap_elt_get(this, ns, tag); } + soap_dom_element *elt_get(const char *ns, const wchar_t *tag) const { return soap_elt_get_w(this, ns, tag); } + soap_dom_element *get_next() const { return soap_elt_get_next(this); } + soap_dom_element *get_nth(size_t n) { return soap_elt_get_nth(this, n); } + bool match(const char *patt) const { return soap_elt_match(this, NULL, patt) != 0; } + bool match(const wchar_t *patt) const { return soap_elt_match_w(this, NULL, patt) != 0; } + bool match(const char *ns, const char *patt) const { return soap_elt_match(this, ns, patt) != 0; } + bool match(const char *ns, const wchar_t *patt) const { return soap_elt_match_w(this, ns, patt) != 0; } + const char *ns() const { return this->nstr; } + const char *tag() const { return this->name; } + soap_dom_element *parent() { return this->prnt; } + size_t depth() const { return soap_elt_depth(this); } + size_t index() const { return soap_elt_index(this); } + size_t len() const { return soap_elt_len(this); } + size_t nth() const { return soap_elt_nth(this); } + size_t elt_size() { return soap_elt_size(this, NULL, NULL); } + size_t elt_size(const char *patt, int type = 0) { return elt_size(NULL, patt, type); } + size_t elt_size(const char *ns, const char *patt, int type = 0) { return soap_elt_size_type(this, ns, patt, type); } + size_t att_size() { return soap_att_size(this, NULL, NULL); } + size_t att_size(const char *patt) { return att_size(NULL, patt); } +#ifndef WITH_COMPAT + size_t att_size(const std::string& patt) { return att_size(NULL, patt); } +#endif + size_t att_size(const char *ns, const char *patt) { return soap_att_size(this, ns, patt); } +#ifndef WITH_COMPAT + size_t att_size(const char *ns, const std::string& patt) { return soap_att_size(this, ns, patt.c_str()); } +#endif + bool is_true() const { return soap_elt_is_true(this) != 0; } + bool is_false() const { return soap_elt_is_false(this) != 0; } + LONG64 get_int() const { return soap_elt_get_LONG64(this); } + double get_double() const { return soap_elt_get_double(this); } + const char *get_text() const { return this->text; } + const void *get_node(int type) const { return soap_elt_get_node(this, type); } + int get_type(const void **node) const { return soap_elt_get_type(this, node); } + operator bool() const { return soap_elt_is_true(this) != 0; } + operator int() const { return soap_elt_get_int(this); } + operator LONG64() const { return soap_elt_get_LONG64(this); } + operator double() const { return soap_elt_get_double(this); } + operator const char*() const { return this->text; } + soap_dom_element_iterator begin(); + soap_dom_element_iterator end() { return soap_dom_element_iterator(NULL); } + soap_dom_element_iterator elt_begin() { return soap_dom_element_iterator(this->elts); } + soap_dom_element_iterator elt_end() { return soap_dom_element_iterator(NULL); } + soap_dom_attribute_iterator att_begin() { return soap_dom_attribute_iterator(this->atts); } + soap_dom_attribute_iterator att_end() { return soap_dom_attribute_iterator(NULL); } + soap_dom_element_iterator find(const char *patt, int type = 0) { return find(NULL, patt, type); } + soap_dom_element_iterator find(const wchar_t *patt, int type = 0) { return find(NULL, patt, type); } + soap_dom_element_iterator find(const char *ns, const char *patt, int type = 0); + soap_dom_element_iterator find(const char *ns, const wchar_t *patt, int type = 0); + soap_dom_element_iterator find(int type); + soap_dom_element_iterator elt_find(const char *patt, int type = 0) { return elt_find(NULL, patt, type); } + soap_dom_element_iterator elt_find(const wchar_t *patt, int type = 0) { return elt_find(NULL, patt, type); } + soap_dom_element_iterator elt_find(const char *ns, const char *patt, int type = 0); + soap_dom_element_iterator elt_find(const char *ns, const wchar_t *patt, int type = 0); + soap_dom_element_iterator elt_find(int type); + soap_dom_attribute_iterator att_find(const char *patt) { return att_find(NULL, patt); } + soap_dom_attribute_iterator att_find(const wchar_t *patt) { return att_find(NULL, patt); } + soap_dom_attribute_iterator att_find(const char *ns, const char *patt); + soap_dom_attribute_iterator att_find(const char *ns, const wchar_t *patt); + void unlink(); +#endif +}; +#endif + +#ifndef WITH_LEANER +SOAP_FMAC1 struct soap_dom_element * SOAP_FMAC2 soap_dup_xsd__anyType(struct soap *soap, struct soap_dom_element *d, const struct soap_dom_element *a); +SOAP_FMAC1 void SOAP_FMAC2 soap_del_xsd__anyType(const struct soap_dom_element *a); +SOAP_FMAC1 struct soap_dom_attribute * SOAP_FMAC2 soap_dup_xsd__anyAttribute(struct soap *soap, struct soap_dom_attribute *d, const struct soap_dom_attribute *a); +SOAP_FMAC1 void SOAP_FMAC2 soap_del_xsd__anyAttribute(const struct soap_dom_attribute *a); +SOAP_FMAC1 int SOAP_FMAC2 soap_dom_call(struct soap *soap, const char *endpoint, const char *action, const struct soap_dom_element *in, struct soap_dom_element *out); +#endif + +#ifndef WITH_LEANER +#if defined(__cplusplus) && !defined(WITH_COMPAT) +extern std::ostream &operator<<(std::ostream&, const struct soap_dom_element&); +extern std::istream &operator>>(std::istream&, struct soap_dom_element&); + +SOAP_FMAC1 int SOAP_FMAC2 soap_dom_call(struct soap *soap, const char *endpoint, const char *action, const struct soap_dom_element& in, struct soap_dom_element& out); +SOAP_FMAC1 int SOAP_FMAC2 soap_dom_call(struct soap *soap, const char *endpoint, const char *action, const struct soap_dom_element *in, struct soap_dom_element& out); +SOAP_FMAC1 int SOAP_FMAC2 soap_dom_call(struct soap *soap, const char *endpoint, const char *action, const struct soap_dom_element& in, struct soap_dom_element *out); +#endif +#endif + +#if defined(__cplusplus) +extern "C" { +#endif + +/******************************************************************************/ + +struct SOAP_CMAC soap +{ + short state; /* 0 = uninitialized, 1 = initialized, 2 = copy of another soap struct */ + short version; /* 1 = SOAP1.1 and 2 = SOAP1.2 (set automatically from namespace URI in nsmap table), 0 indicates non-SOAP content */ + soap_mode mode; /* internal mode flag, combines imode/omode */ + soap_mode imode; /* input mode flag set with soap_init1(), soap_new1(), or soap_set_imode() */ + soap_mode omode; /* ouput mode flag set with soap_init1(), soap_new1(), or soap_set_omode() */ + const char *float_format; /* user-definable format string for floats (<1024 chars) */ + const char *double_format; /* user-definable format string for doubles (<1024 chars) */ + const char *long_double_format;/* user-definable format string for long doubles (<1024 chars) */ + const char *dime_id_format; /* user-definable format string for integer DIME id ( 0, sets max message size that can be received */ + int recv_timeout; /* user-definable, when > 0, sets socket recv stall timeout in seconds, < 0 in usec */ + int send_timeout; /* user-definable, when > 0, sets socket send stall timeout in seconds, < 0 in usec */ + int transfer_timeout; /* user-definable, when > 0, sets socket total transfer timeout in seconds, < 0 in usec */ + int connect_timeout; /* user-definable, when > 0, sets socket connect() timeout in seconds, < 0 in usec */ + int accept_timeout; /* user-definable, when > 0, sets socket accept() timeout in seconds, < 0 in usec */ + int socket_flags; /* user-definable socket recv() and send() flags, e.g. set to MSG_NOSIGNAL to disable sigpipe */ + int connect_flags; /* user-definable connect() SOL_SOCKET sockopt flags, e.g. set to SO_DEBUG to debug socket */ + int connect_retry; /* number of times to retry connecting (exponential backoff), zero by default */ + int bind_flags; /* user-definable bind() SOL_SOCKET sockopt flags, e.g. set to SO_REUSEADDR to enable reuse */ + short bind_inet6; /* user-definable, when > 0 use AF_INET6 instead of PF_UNSPEC (only with -DWITH_IPV6) */ + short bind_v6only; /* user-definable, when > 0 use IPPROTO_IPV6 sockopt IPV6_V6ONLY (only with -DWITH_IPV6) */ + int accept_flags; /* user-definable accept() SOL_SOCKET sockopt flags */ +#ifdef WITH_SELF_PIPE + int pipe_fd[2]; /* self pipe trick file descriptors used to close the select call from another thread */ +#endif + int sndbuf; /* user-definable SO_SNDBUF setsockopt value */ + int rcvbuf; /* user-definable SO_RCVBUF setsockopt value */ + unsigned short linger_time; /* user-definable linger time for SO_LINGER option */ + unsigned int maxlevel; /* user-definable max XML nesting depth levels, initialized to SOAP_MAXLEVEL */ + long maxlength; /* user-definable max string length, initialized to SOAP_MAXLENGTH, maxlength<=0 is unbounded */ + size_t maxoccurs; /* user-definable max array/container size, initialized to SOAP_MAXOCCURS */ + const char *http_version; /* HTTP version used "1.0" or "1.1" */ + const char *http_content; /* optional custom HTTP content type (with SOAP_PUT, SOAP_POST_FILE, SOAP_FILE) */ + const char *http_extra_header;/* optional custom HTTP header of the form 'key: val' (multiple headers should be separated in the string by \r\n - crlf) */ + const char *encodingStyle; /* default = "" which means that SOAP encoding is used */ + const char *actor; /* SOAP-ENV:actor or role attribute value */ + const char *lang; /* user-definable xml:lang attribute value of SOAP-ENV:Text */ + const struct Namespace *namespaces; /* Pointer to global namespace mapping table */ + struct Namespace *local_namespaces; /* Local namespace mapping table */ + struct soap_nlist *nlist; /* namespace stack */ + struct soap_blist *blist; /* block allocation stack */ + struct soap_clist *clist; /* class instance allocation list */ + void *alist; /* memory allocation (malloc) list */ +#if !defined(WITH_LEANER) || !defined(WITH_NOIDREF) + struct soap_ilist *iht[SOAP_IDHASH]; +#endif + struct soap_plist *pht[SOAP_PTRHASH]; + struct soap_pblk *pblk; /* plist block allocation */ + short pidx; /* plist block allocation */ + short shaky; /* objects in reallocatable containers are on shaky grounds */ + struct SOAP_ENV__Header *header; + struct SOAP_ENV__Fault *fault; + int idnum; + void *user; /* for user to pass user-defined data to callbacks */ + void *data[4]; /* extension data = {smdevp, mecevp, ...} */ + struct soap_plugin *plugins; /* linked list of plug-in data */ + const char *bearer; /* HTTP authorization bearer token value */ + const char *userid; /* HTTP Basic authorization userid */ + const char *passwd; /* HTTP Basic authorization passwd */ + const char *authrealm; /* HTTP authentication realm (and NTLM domain) */ +#if !defined(WITH_LEAN) || defined(WITH_NTLM) + const char *ntlm_challenge; /* HTTP NTLM challenge key string */ + short ntlm_auth; /* HTTP NTLM authentication type */ +#endif + int (*fpost)(struct soap*, const char*, const char*, int, const char*, const char*, ULONG64); + int (*fget)(struct soap*); /* HTTP GET hook (not set by default) */ + int (*fput)(struct soap*); /* HTTP PUT hook (handled as POST by default) */ + int (*fpatch)(struct soap*); /* HTTP PATCH hook (handled as POST by default) */ + int (*fdel)(struct soap*); /* HTTP DELETE hook (not set by default) */ + int (*fopt)(struct soap*); /* HTTP OPTIONS hook (not set by default) */ + int (*fhead)(struct soap*); /* HTTP HEAD hook (not set by default) */ + int (*fform)(struct soap*); /* HTTP/HTML form handler for plugins */ + int (*fposthdr)(struct soap*, const char*, const char*); + int (*fresponse)(struct soap*, int, ULONG64); + int (*fparse)(struct soap*); + int (*fparsehdr)(struct soap*, const char*, const char*); + int (*fheader)(struct soap*); + int (*fresolve)(struct soap*, const char*, struct in_addr* inaddr); + int (*fconnect)(struct soap*, const char*, const char*, int); + int (*fdisconnect)(struct soap*); + int (*fclosesocket)(struct soap*, SOAP_SOCKET); + int (*fshutdownsocket)(struct soap*, SOAP_SOCKET, int); + SOAP_SOCKET (*fopen)(struct soap*, const char*, const char*, int); + SOAP_SOCKET (*faccept)(struct soap*, SOAP_SOCKET, struct sockaddr*, int *n); + int (*fclose)(struct soap*); + int (*fsend)(struct soap*, const char*, size_t); + size_t (*frecv)(struct soap*, char*, size_t); + int (*fpoll)(struct soap*); + void (*fseterror)(struct soap*, const char **c, const char **s); + int (*fignore)(struct soap*, const char*); + int (*fserveloop)(struct soap*); + void *(*fplugin)(struct soap*, const char*); +#ifndef WITH_LEANER + int (*fsvalidate)(struct soap*, const char*, const char*); + int (*fwvalidate)(struct soap*, const char*, const wchar_t*); + int (*feltbegin)(struct soap*, const char*); + int (*feltendin)(struct soap*, const char*, const char*); + int (*feltbegout)(struct soap*, const char*, int, const char*); + int (*feltendout)(struct soap*, const char*); + int (*fprepareinitsend)(struct soap*); + int (*fprepareinitrecv)(struct soap*); + int (*fpreparesend)(struct soap*, const char*, size_t); + int (*fpreparerecv)(struct soap*, const char*, size_t); + int (*fpreparefinalsend)(struct soap*); + int (*fpreparefinalrecv)(struct soap*); + int recverror; /* last soap_recv_raw error code for filterrecv */ + int (*ffiltersend)(struct soap*, const char**, size_t*); + int (*ffilterrecv)(struct soap*, char*, size_t*, size_t); + void *(*fdimereadopen)(struct soap*, void*, const char*, const char*, const char*); + void *(*fdimewriteopen)(struct soap*, const char*, const char*, const char*); + void (*fdimereadclose)(struct soap*, void*); + void (*fdimewriteclose)(struct soap*, void*); + size_t (*fdimeread)(struct soap*, void*, char*, size_t); + int (*fdimewrite)(struct soap*, void*, const char*, size_t); + void *(*fmimereadopen)(struct soap*, void*, const char*, const char*, const char*); + void *(*fmimewriteopen)(struct soap*, void*, const char*, const char*, const char*, enum soap_mime_encoding); + void (*fmimereadclose)(struct soap*, void*); + void (*fmimewriteclose)(struct soap*, void*); + size_t (*fmimeread)(struct soap*, void*, char*, size_t); + int (*fmimewrite)(struct soap*, void*, const char*, size_t); +#endif + SOAP_SOCKET master; /* socket bound to TCP/IP port */ + SOAP_SOCKET socket; /* socket to send and receive */ + SOAP_SOCKET sendsk; /* socket to send (overrides ::socket) */ + SOAP_SOCKET recvsk; /* socket to receive (overrides ::socket) */ +#if defined(__cplusplus) && !defined(WITH_COMPAT) + std::ostream *os; /* C++ only: ostream to send */ + std::istream *is; /* C++ only: istream to receive */ +#else + const char **os; /* C only: pointer to a const char*, will be set to point to the string output */ + const char *is; /* C only: a const char* to read from (soap->is will advance) */ +#endif +#ifndef UNDER_CE + int sendfd; /* int file descriptor for sending */ + int recvfd; /* int file descriptor for receiving */ +#else + FILE *sendfd; /* WinCE FILE* to send */ + FILE *recvfd; /* WinCE FILE* to receive */ +#endif + size_t bufidx; /* index in soap.buf[] */ + size_t buflen; /* length of soap.buf[] content */ + soap_wchar ahead; /* parser lookahead */ + short cdata; /* CDATA parser state */ + short body; /* HTTP or XML element has a body (1) or not (0) */ + unsigned int level; /* XML nesting level */ +#ifndef WITH_LEAN + ULONG64 start; /* start time of send/recv (value cast to time_t) */ +#endif + ULONG64 count; /* message length counter */ + ULONG64 length; /* message length as was set by HTTP header received */ + char *labbuf; /* look-aside buffer */ + size_t lablen; /* look-aside buffer allocated length */ + size_t labidx; /* look-aside buffer index to available part */ + char buf[SOAP_BUFLEN];/* send and receive buffer */ + char msgbuf[SOAP_TMPLEN]; /* in/out buffer for HTTP/MIME headers and short messages, must be >=1024 bytes */ + char tmpbuf[SOAP_TMPLEN]; /* in/out buffer for HTTP/MIME headers, simpleType values, element and attribute tag names, and DIME must be >=1024 bytes */ + char tag[SOAP_TAGLEN]; + char id[SOAP_TAGLEN]; + char href[SOAP_TAGLEN]; + char type[SOAP_TAGLEN]; + char arrayType[SOAP_TAGLEN]; + char arraySize[SOAP_TAGLEN]; + char arrayOffset[SOAP_TAGLEN]; + int position; + int positions[SOAP_MAXDIMS]; + struct soap_attribute *attributes; /* attribute list */ + short other; + short root; + short encoding; /* when set, output encodingStyle */ + short mustUnderstand; /* a mustUnderstand element was parsed or is output */ + short null; /* parsed XML is xsi:nil */ + short ns; /* zero to output all xmlns */ + short part; /* SOAP part state (header or body) */ + short event; /* engine events and states for use by plugins */ + short peeked; + unsigned int evlev; /* event level */ + int alloced; + size_t chunksize; + size_t chunkbuflen; + char endpoint[SOAP_TAGLEN]; + char path[SOAP_TAGLEN]; + char host[SOAP_TAGLEN]; + char *action; /* SOAPAction string */ + const char *prolog; /* XML declaration prolog */ + unsigned int ip; /* IP number retrieved from request */ + unsigned int ip6[4]; /* same for IPv6: upper in ip6[0] to lower in ip6[3] requires WITH_IPV6 */ + int port; /* port number */ + const char *override_host; /* to override the client-side host name/IP when connecting */ + int override_port; /* to override client-side port number when connecting */ + int keep_alive; /* connection should be kept open (-1, 0, or counts down) */ + int tcp_keep_alive; /* enable SO_KEEPALIVE */ + unsigned int tcp_keep_idle; /* set TCP_KEEPIDLE */ + unsigned int tcp_keep_intvl; /* set TCP_KEEPINTVL */ + unsigned int tcp_keep_cnt; /* set TCP_KEEPCNT */ + int max_keep_alive; /* maximum keep-alive session (default=100) 0 to always keep open */ + const char *proxy_http_version;/* HTTP version of proxy "1.0" or "1.1" */ + const char *proxy_host; /* Proxy Server host name */ + int proxy_port; /* Proxy Server port (default = 8080) */ + const char *proxy_userid; /* Proxy Authorization user name */ + const char *proxy_passwd; /* Proxy Authorization password */ + const char *proxy_from; /* X-Forwarding-For header returned by proxy */ + const char *origin; /* Origin header received */ + const char *cors_origin; /* CORS Allow-Origin header returned by server */ + const char *cors_allow; /* CORS Allow-Origin header default value of "*" */ + const char *cors_method; /* CORS Request-Method header received */ + const char *cors_header; /* CORS Request-Headers header received */ + const char *cors_methods; /* CORS Allow-Methods header returned by server */ + const char *cors_headers; /* CORS Allow-Headers header returned by server */ + const char *x_frame_options; /* "DENY", "SAMEORIGIN" (default), or "ALLOW-FROM uri" */ + int status; /* HTTP status code, HTTP method, or other error code */ + int error; + int errmode; + int errnum; +#ifndef WITH_LEANER + struct soap_dom_element *dom; + struct soap_dime dime; + struct soap_mime mime; + struct soap_xlist *xlist; +#endif + const char *logfile[SOAP_MAXLOGS]; + FILE *fdebug[SOAP_MAXLOGS]; + struct soap_mlist *mht[SOAP_PTRHASH]; +#ifndef WITH_LEAN + const char *wsuid; /* space-separated string of element tags */ + const char *c14nexclude; /* space-separated string of prefixes for c14n exclusion */ + const char *c14ninclude; /* space-separated string of prefixes for c14n inclusion */ +#endif + struct soap_cookie *cookies; + const char *cookie_domain; + const char *cookie_path; + int cookie_max; +#ifndef WITH_NOIO + unsigned int ipv6_multicast_if; /* in_addr_t in6addr->sin6_scope_id IPv6 value */ + char* ipv4_multicast_if; /* IP_MULTICAST_IF IPv4 setsockopt interface_addr */ + unsigned char ipv4_multicast_ttl; /* IP_MULTICAST_TTL value 0..255 */ + const char *client_addr; /* when non-NULL, client binds to this address before connect */ + const char *client_addr_ipv6; /* WITH_IPV6: when non-NULL and client_addr is non-NULL and when connecting to a IPv6 server, client binds to this IPv6 address instead of client_addr */ + int client_port; /* when nonnegative, client binds to this port before connect */ + const char *client_interface; /* when non-NULL, override client-side interface address using this address */ + union { + struct sockaddr addr; + struct sockaddr_in in; + struct sockaddr_storage storage; + } peer; /* set by soap_connect/soap_accept and by UDP recv */ + size_t peerlen; +#endif +#if defined(WITH_OPENSSL) /* OpenSSL */ + int (*fsslauth)(struct soap*); + int (*fsslverify)(int, X509_STORE_CTX*); + BIO *bio; + SSL *ssl; + SSL_CTX *ctx; + SSL_SESSION *session; + const char *dhfile; + const char *randfile; +#elif defined(WITH_GNUTLS) /* GNUTLS */ + int (*fsslauth)(struct soap*); + void *fsslverify; + gnutls_certificate_credentials_t xcred; /* cert pointer */ + gnutls_anon_client_credentials_t acred; /* anon pointer */ + gnutls_priority_t cache; /* priority cache pointer */ + gnutls_session_t session; /* session pointer */ + gnutls_dh_params_t dh_params; + gnutls_rsa_params_t rsa_params; +#elif defined(WITH_SYSTEMSSL) /* SYSTEM SSL */ + int (*fsslauth)(struct soap*); + void *fsslverify; /* N/A */ + void *bio; /* N/A */ + gsk_handle ctx; /* environment */ + gsk_handle ssl; /* ssl socket */ + void *session; /* N/A */ + const char *dhfile; /* N/A */ + const char *randfile; /* N/A */ +#else /* No SSL/TLS */ + void *fsslauth; /* dummy members, to preserve struct size */ + void *fsslverify; + void *bio; + void *ssl; + void *ctx; + void *session; + void *dh_params; + void *rsa_params; +#endif + unsigned short ssl_flags; + const char *keyfile; + const char *keyid; + const char *password; + const char *cafile; + const char *capath; + const char *crlfile; + char session_host[SOAP_TAGLEN]; + int session_port; +#ifdef SOAP_LOCALE_T + SOAP_LOCALE_T c_locale; /* if this does not compile, use ./configure --enable-xlocale or compile with -DWITH_INCLUDE_XLOCALE_H, or use -DWITH_NO_C_LOCALE to disable locale support */ +#else + void *c_locale; +#endif +#ifdef WITH_ZLIB + z_stream *d_stream; /* decompression stream */ + uLong z_crc; /* internal gzip crc */ +#else + void *d_stream; /* dummy members, to preserve struct size */ + soap_int32 z_crc; +#endif + const char *z_dict; /* support for zlib static dictionaries */ + unsigned int z_dict_len; + short zlib_state; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_INFLATE */ + short zlib_in; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_GZIP */ + short zlib_out; /* SOAP_ZLIB_NONE, SOAP_ZLIB_DEFLATE, or SOAP_ZLIB_GZIP */ + char *z_buf; /* buffer */ + size_t z_buflen; + unsigned short z_level; /* compression level to be used (0=none, 1=fast to 9=best) */ + float z_ratio_in; /* detected compression ratio compressed_length/length of inbound message */ + float z_ratio_out; /* detected compression ratio compressed_length/length of outbound message */ +#ifdef WMW_RPM_IO /* vxWorks compatibility */ + void *rpmreqid; +#endif +#ifdef __cplusplus + soap(); + soap(soap_mode); + soap(soap_mode, soap_mode); + soap(const struct soap&); + struct soap& operator=(const struct soap&); + void destroy(); + ~soap(); /* no virtual methods, so sizeof(soap) should be the same in C and C++ */ +#endif +}; + +struct soap_code_map +{ + LONG64 code; + const char *string; +}; + +/* forwarding list */ +struct soap_flist +{ + struct soap_flist *next; + int type; + void *ptr; + unsigned int level; + size_t index; + void (*finsert)(struct soap*, int, int, void*, size_t, const void*, void**); +}; + +/* id-ref forwarding list */ +struct soap_ilist +{ + struct soap_ilist *next; + int type; + size_t size; + void *ptr; + void **spine; + void *link; + void *copy; + struct soap_flist *flist; + void *smart; + short shaky; + char id[1]; /* the actual id string value flows into the allocated region below this struct */ +}; + +struct soap_plugin +{ + struct soap_plugin *next; + const char *id; + void *data; + int (*fcopy)(struct soap *soap, struct soap_plugin *dst, struct soap_plugin *src); + void (*fdelete)(struct soap *soap, struct soap_plugin *p); /* should delete fields of plugin only and not free(p) */ +}; + +extern SOAP_NMAC struct Namespace namespaces[]; + +#ifndef WITH_LEAN +# define soap_get0(soap) (((soap)->bufidx>=(soap)->buflen && soap_recv(soap)) ? EOF : (unsigned char)(soap)->buf[(soap)->bufidx]) +# define soap_get1(soap) (((soap)->bufidx>=(soap)->buflen && soap_recv(soap)) ? EOF : (unsigned char)(soap)->buf[(soap)->bufidx++]) +#else +soap_wchar soap_get0(struct soap*); +soap_wchar soap_get1(struct soap*); +#endif + +#define soap_versioning_paste(name, ext) name##_REQUIRE_lib_v##ext +#define soap_versioning_ext(name, ext) soap_versioning_paste(name, ext) +#define soap_versioning(name) soap_versioning_ext(name, GSOAP_VERSION) + +#define soap_init(soap) soap_init1(soap, SOAP_IO_DEFAULT) +#define soap_init1(soap, mode) soap_init2(soap, mode, mode) +#define soap_init2(soap, imode, omode) soap_versioning(soap_init)(soap, imode, omode) + +#define soap_new() soap_new1(SOAP_IO_DEFAULT) +#define soap_new1(mode) soap_new2(mode, mode) +#define soap_new2(imode, omode) soap_versioning(soap_new)(imode, omode) + +#define soap_revget1(soap) ((soap)->bufidx--) +#define soap_unget(soap, c) ((soap)->ahead = c) +#define soap_peek(soap) ((soap)->ahead = soap_get(soap)) +#define soap_register_plugin(soap, plugin) soap_register_plugin_arg(soap, plugin, NULL) +#define soap_mode(soap, n) ((soap)->mode = (soap)->imode = (soap)->omode = (n)) +#define soap_imode(soap, n) ((soap)->imode = (n)) +#define soap_omode(soap, n) ((soap)->omode = (n)) +#define soap_set_imode(soap, n) ((soap)->imode |= (n)) +#define soap_clr_imode(soap, n) ((soap)->imode &= ~(n)) +#define soap_set_omode(soap, n) ((soap)->omode |= (n)) +#define soap_clr_omode(soap, n) ((soap)->omode &= ~(n)) +#define soap_set_mode(soap, n) ((soap)->mode |= (n), (soap)->imode |= (n), (soap)->omode |= (n)) +#define soap_clr_mode(soap, n) ((soap)->mode &= ~(n), (soap)->imode &= ~(n), (soap)->omode &= ~(n)) +#define soap_destroy(soap) soap_delete((soap), NULL) + +#define SOAP_NO_LINK_TO_DELETE (-2) /* pass to soap_link() as size n: do not manage, smart pointers are self-managing */ + +#ifdef HAVE_STRRCHR +# define soap_strrchr(s, t) strrchr(s, t) +#else + SOAP_FMAC1 char* SOAP_FMAC2 soap_strrchr(const char *s, int t); +#endif + +#ifdef HAVE_STRTOL +# define soap_strtol(s, t, b) strtol(s, t, b) +#else + SOAP_FMAC1 long SOAP_FMAC2 soap_strtol(const char*, char**, int); +#endif + +#ifdef HAVE_STRTOUL +# define soap_strtoul(s, t, b) strtoul(s, t, b) +#else + SOAP_FMAC1 unsigned long SOAP_FMAC2 soap_strtoul(const char*, char**, int); +#endif + +#if defined(WIN32) && !defined(__MINGW32__) && !defined(__MINGW64__) && !defined(__BORLANDC__) +# define soap_strtoll _strtoi64 +#elif defined(HAVE_STRTOLL) && !defined(soap_strtoll) +# define soap_strtoll strtoll +#elif !defined(soap_strtoll) + SOAP_FMAC1 LONG64 SOAP_FMAC2 soap_strtoll(const char*, char**, int); +#endif + +#if defined(WIN32) && !defined(__MINGW32__) && !defined(__MINGW64__) && !defined(__BORLANDC__) +# define soap_strtoull _strtoui64 +#elif defined(HAVE_STRTOULL) && !defined(soap_strtoull) +# define soap_strtoull strtoull +#elif !defined(soap_strtoull) + SOAP_FMAC1 ULONG64 SOAP_FMAC2 soap_strtoull(const char*, char**, int); +#endif + +#if defined(WITH_OPENSSL) +# define soap_random soap_rand() + SOAP_FMAC1 int SOAP_FMAC2 soap_rand(void); +#elif defined(UNDER_CE) +# define soap_random (int)Random() +#elif defined(HAVE_RANDOM) +# define soap_random (int)random() +#else +# define soap_random rand() +#endif + +#ifdef WITH_NOIDREF +# define soap_embedded(s, p, t) ((void)(s), 0) +# define soap_id_lookup(s, i, p, t, n, k, fb) ((void)(s), (p)) +# define soap_id_forward(s, h, p, i, t, tt, n, k, fi, fb) ((void)(s), (p)) +# define soap_id_nullify(s, i) ((void)(s), (i)) +# define soap_reference(s, a, t) ((void)(s), 1) +# define soap_array_reference(s, p, a, n, t) ((void)(s), 1) +# define soap_attachment_reference(s, p, a, n, t, i, y) ((void)(s), 1) +# define soap_embed(s, p, a, n, t) ((void)(s), 0) +# define soap_embedded_id(s, i, p, t) ((void)(s), (void)(t), i) +# define soap_is_embedded(s, p) ((void)(s), 0) +# define soap_is_single(s, p) ((void)(s), 1) +# define soap_lookup_type(s, i) ((void)(s), 0) +# define soap_getindependent(s) ((void)(s), 0) +# define soap_putindependent(s) ((void)(s), 0) +# define soap_markelement(s, p, t) ((void)(s), 0) +# define soap_begin_shaky(s) ((void)(s), 0) +# define soap_end_shaky(s, f) ((void)(s), (void)(f), 0) +#endif + +/* soap_traverse() traversal/walker routines take walker function arguments */ +typedef void soap_walker(struct soap*, void*, int, const char*, const char*); + +SOAP_FMAC5 int SOAP_FMAC6 soap_serve(struct soap *soap); +SOAP_FMAC5 int SOAP_FMAC6 soap_serve_request(struct soap *soap); + +SOAP_FMAC1 void SOAP_FMAC2 soap_ssl_init(void); +SOAP_FMAC1 void SOAP_FMAC2 soap_ssl_noinit(void); +SOAP_FMAC1 int SOAP_FMAC2 soap_GET(struct soap*, const char*, const char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_PUT(struct soap*, const char*, const char*, const char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_PATCH(struct soap*, const char*, const char*, const char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_POST(struct soap*, const char*, const char*, const char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_DELETE(struct soap*, const char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_connect_command(struct soap*, int, const char*, const char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_connect(struct soap*, const char*, const char*); +SOAP_FMAC1 SOAP_SOCKET SOAP_FMAC2 soap_bind(struct soap*, const char*, int, int); +SOAP_FMAC1 SOAP_SOCKET SOAP_FMAC2 soap_accept(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_accept(struct soap*); +SOAP_FMAC1 const char * SOAP_FMAC2 soap_ssl_error(struct soap*, int ret, int err); +SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_crl(struct soap*, const char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_poll(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_ready(struct soap*); + +#if defined(VXWORKS) && defined(WM_SECURE_KEY_STORAGE) +SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_server_context(struct soap *soap, unsigned short flags, const char *keyfile, const char *keyid, const char *password, const char *cafile, const char *capath, const char *dhfile, const char *randfile, const char *sid); +#else +SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_server_context(struct soap *soap, unsigned short flags, const char *keyfile, const char *password, const char *cafile, const char *capath, const char *dhfile, const char *randfile, const char *sid); +#endif +#if defined(VXWORKS) && defined(WM_SECURE_KEY_STORAGE) +SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_client_context(struct soap *soap, unsigned short flags, const char *keyfile, const char *keyid, const char *password, const char *cafile, const char *capath, const char *randfile); +#else +SOAP_FMAC1 int SOAP_FMAC2 soap_ssl_client_context(struct soap *soap, unsigned short flags, const char *keyfile, const char *password, const char *cafile, const char *capath, const char *randfile); +#endif + +SOAP_FMAC1 const char * SOAP_FMAC2 soap_http_content_type(struct soap *soap, int status); +SOAP_FMAC1 int SOAP_FMAC2 soap_puthttphdr(struct soap*, int status, ULONG64 count); + +SOAP_FMAC1 const char* SOAP_FMAC2 soap_http_header_attribute(struct soap*, const char*, const char*); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_decode_key(char*, size_t, const char*); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_decode_val(char*, size_t, const char*); + +SOAP_FMAC1 size_t SOAP_FMAC2 soap_hash(const char*); +SOAP_FMAC1 void SOAP_FMAC2 soap_set_endpoint(struct soap*, const char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_flush_raw(struct soap*, const char*, size_t); +SOAP_FMAC1 int SOAP_FMAC2 soap_flush(struct soap*); +SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_get(struct soap*); +SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_getchar(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_tag_cmp(const char*, const char*); +SOAP_FMAC1 void SOAP_FMAC2 soap_set_fault(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_sender_fault(struct soap*, const char*, const char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_sender_fault_subcode(struct soap*, const char*, const char*, const char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_receiver_fault(struct soap*, const char*, const char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_receiver_fault_subcode(struct soap*, const char*, const char*, const char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_set_sender_error(struct soap*, const char*, const char*, int); +SOAP_FMAC1 int SOAP_FMAC2 soap_set_receiver_error(struct soap*, const char*, const char*, int); + +SOAP_FMAC1 int SOAP_FMAC2 soap_send_raw(struct soap*, const char*, size_t); +SOAP_FMAC1 int SOAP_FMAC2 soap_recv_raw(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_recv(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_send(struct soap*, const char*); + +#ifndef WITH_LEANER +SOAP_FMAC1 int SOAP_FMAC2 soap_send2(struct soap*, const char*, const char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_send3(struct soap*, const char*, const char*, const char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_query_send_key(struct soap*, const char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_query_send_val(struct soap*, const char*); +SOAP_FMAC1 char * SOAP_FMAC2 soap_query(struct soap*); +SOAP_FMAC1 char * SOAP_FMAC2 soap_query_key(struct soap*, char**); +SOAP_FMAC1 char * SOAP_FMAC2 soap_query_val(struct soap*, char**); +SOAP_FMAC1 const char * SOAP_FMAC2 soap_query_decode(char*, size_t, const char*); +#endif + +SOAP_FMAC1 int SOAP_FMAC2 soap_pututf8(struct soap*, unsigned long); +SOAP_FMAC1 soap_wchar SOAP_FMAC2 soap_getutf8(struct soap*); +SOAP_FMAC1 size_t SOAP_FMAC2 soap_utf8len(const char*); + +SOAP_FMAC1 int SOAP_FMAC2 soap_putbase64(struct soap*, const unsigned char*, int); +SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_getbase64(struct soap*, int*, int); +SOAP_FMAC1 int SOAP_FMAC2 soap_puthex(struct soap*, const unsigned char*, int); +SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_gethex(struct soap*, int*); + +#ifndef WITH_LEANER +SOAP_FMAC1 int SOAP_FMAC2 soap_xop_forward(struct soap*, unsigned char**, int*, char**, char**, char**); +SOAP_FMAC1 int SOAP_FMAC2 soap_attachment_forward(struct soap*, unsigned char**, int*, char**, char**, char**); +#endif + +SOAP_FMAC1 int SOAP_FMAC2 soap_pointer_lookup(struct soap*, const void *p, int t, struct soap_plist**); +SOAP_FMAC1 int SOAP_FMAC2 soap_pointer_enter(struct soap*, const void *p, const void *a, int n, int t, struct soap_plist**); +SOAP_FMAC1 int SOAP_FMAC2 soap_array_pointer_lookup(struct soap*, const void *p, const void *a, int n, int t, struct soap_plist**); +#ifndef WITH_NOIDREF +SOAP_FMAC1 int SOAP_FMAC2 soap_pointer_lookup_id(struct soap*, void *p, int t, struct soap_plist**); +SOAP_FMAC1 int SOAP_FMAC2 soap_embed(struct soap *soap, const void *p, const void *a, int n, int t); +SOAP_FMAC1 struct soap_ilist* SOAP_FMAC2 soap_lookup(struct soap*, const char*); +SOAP_FMAC1 struct soap_ilist* SOAP_FMAC2 soap_enter(struct soap*, const char*, int t, size_t n); +SOAP_FMAC1 int SOAP_FMAC2 soap_resolve(struct soap*); +SOAP_FMAC1 void SOAP_FMAC2 soap_embedded(struct soap*, const void *p, int t); +SOAP_FMAC1 int SOAP_FMAC2 soap_reference(struct soap*, const void *p, int t); +SOAP_FMAC1 int SOAP_FMAC2 soap_array_reference(struct soap*, const void *p, const void *a, int n, int t); +SOAP_FMAC1 int SOAP_FMAC2 soap_attachment_reference(struct soap *soap, const void *p, const void *a, int n, int t, const char *id, const char *type); +SOAP_FMAC1 int SOAP_FMAC2 soap_embedded_id(struct soap*, int id, const void *p, int t); +SOAP_FMAC1 int SOAP_FMAC2 soap_is_embedded(struct soap*, struct soap_plist*); +SOAP_FMAC1 int SOAP_FMAC2 soap_is_single(struct soap*, struct soap_plist*); +SOAP_FMAC1 void SOAP_FMAC2 soap_set_embedded(struct soap*, struct soap_plist*); +#endif +SOAP_FMAC1 int SOAP_FMAC2 soap_check_and_mark(struct soap *soap, const void *p, int t, char **mark); +SOAP_FMAC1 void * SOAP_FMAC2 soap_mark_lookup(struct soap *soap, const void *p, int t, struct soap_plist **pp, char **mark); +SOAP_FMAC1 int SOAP_FMAC2 soap_mark_cycle(struct soap *soap, struct soap_plist *pp); +SOAP_FMAC1 void SOAP_FMAC2 soap_mark_dup(struct soap *soap, void *a, struct soap_plist *pp); +SOAP_FMAC1 void SOAP_FMAC2 soap_unmark(struct soap *soap, char *mark); + +SOAP_FMAC1 int SOAP_FMAC2 soap_begin_count(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_end_count(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_begin_send(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_end_send(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_end_send_flush(struct soap*); + +SOAP_FMAC1 const struct soap_code_map* SOAP_FMAC2 soap_code(const struct soap_code_map*, const char*); +SOAP_FMAC1 LONG64 SOAP_FMAC2 soap_code_int(const struct soap_code_map*, const char*, LONG64); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_code_str(const struct soap_code_map*, long); +SOAP_FMAC1 LONG64 SOAP_FMAC2 soap_code_bits(const struct soap_code_map*, const char*); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_code_list(struct soap*, const struct soap_code_map*, long); + +SOAP_FMAC1 int SOAP_FMAC2 soap_binary_search_string(const char**, int, const char*); + +SOAP_FMAC1 int SOAP_FMAC2 soap_getline(struct soap*, char*, int); +SOAP_FMAC1 int SOAP_FMAC2 soap_begin_serve(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_begin_recv(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_end_recv(struct soap*); + +SOAP_FMAC1 void* SOAP_FMAC2 soap_malloc(struct soap*, size_t); +SOAP_FMAC1 void SOAP_FMAC2 soap_dealloc(struct soap*, void*); +SOAP_FMAC1 struct soap_clist * SOAP_FMAC2 soap_link(struct soap*, int, int, int (*fdelete)(struct soap*, struct soap_clist*)); +SOAP_FMAC1 int SOAP_FMAC2 soap_unlink(struct soap*, const void*); +SOAP_FMAC1 void SOAP_FMAC2 soap_free_temp(struct soap*); +SOAP_FMAC1 void SOAP_FMAC2 soap_del(struct soap*); + +SOAP_FMAC1 void* SOAP_FMAC2 soap_track_malloc(struct soap*, const char*, int, size_t); +SOAP_FMAC1 void SOAP_FMAC2 soap_track_free(struct soap*, const char*, int, void*); + +#ifndef WITH_NOIDREF +SOAP_FMAC1 int SOAP_FMAC2 soap_lookup_type(struct soap*, const char *id); +SOAP_FMAC1 short SOAP_FMAC2 soap_begin_shaky(struct soap*); +SOAP_FMAC1 void SOAP_FMAC2 soap_end_shaky(struct soap*, short); +SOAP_FMAC1 void* SOAP_FMAC2 soap_id_lookup(struct soap*, const char *id, void **p, int t, size_t n, unsigned int k, int (*fbase)(int, int)); +SOAP_FMAC1 void* SOAP_FMAC2 soap_id_forward(struct soap*, const char *id, void *p, size_t i, int t, int tt, size_t n, unsigned int k, void(*finsert)(struct soap*, int, int, void*, size_t, const void*, void**), int (*fbase)(int, int)); +SOAP_FMAC1 int SOAP_FMAC2 soap_id_nullify(struct soap*, const char*); +#endif +SOAP_FMAC1 void* SOAP_FMAC2 soap_id_enter(struct soap*, const char *id, void *p, int t, size_t n, const char *type, const char *arrayType, void *(*finstantiate)(struct soap*, int, const char*, const char*, size_t*), int (*fbase)(int, int)); +SOAP_FMAC1 void** SOAP_FMAC2 soap_id_smart(struct soap *soap, const char*, int t, size_t n); + +SOAP_FMAC1 size_t SOAP_FMAC2 soap_size(const int *, int); +SOAP_FMAC1 size_t SOAP_FMAC2 soap_getsizes(const char *, int *, int); +SOAP_FMAC1 int SOAP_FMAC2 soap_getoffsets(const char *, const int *, int *, int); + +SOAP_FMAC1 int SOAP_FMAC2 soap_getposition(const char *, int *); + +SOAP_FMAC1 char* SOAP_FMAC2 soap_putsizesoffsets(struct soap*, const char *, const int *, const int *, int); +SOAP_FMAC1 char* SOAP_FMAC2 soap_putoffsets(struct soap*, const int *, int); + +SOAP_FMAC1 int SOAP_FMAC2 soap_closesock(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_force_closesock(struct soap*); + +SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_versioning(soap_new)(soap_mode, soap_mode); +SOAP_FMAC1 void SOAP_FMAC2 soap_free(struct soap*); +SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_copy(const struct soap*); +SOAP_FMAC1 struct soap *SOAP_FMAC2 soap_copy_context(struct soap*, const struct soap*); +SOAP_FMAC1 void SOAP_FMAC2 soap_copy_stream(struct soap*, struct soap*); +SOAP_FMAC1 void SOAP_FMAC2 soap_free_stream(struct soap*); +SOAP_FMAC1 void SOAP_FMAC2 soap_versioning(soap_init)(struct soap*, soap_mode, soap_mode); +SOAP_FMAC1 void SOAP_FMAC2 soap_initialize(struct soap*); +SOAP_FMAC1 void SOAP_FMAC2 soap_done(struct soap*); +SOAP_FMAC1 void SOAP_FMAC2 soap_cleanup(struct soap*); +SOAP_FMAC1 void SOAP_FMAC2 soap_begin(struct soap*); +SOAP_FMAC1 void SOAP_FMAC2 soap_end(struct soap*); +SOAP_FMAC1 void SOAP_FMAC2 soap_delete(struct soap*, void*); +SOAP_FMAC1 void SOAP_FMAC2 soap_delegate_deletion(struct soap*, struct soap*); +#ifdef WITH_SELF_PIPE +SOAP_FMAC1 void SOAP_FMAC2 soap_close_connection(struct soap*); +#endif + +/* API functions available with DEBUG or SOAP_DEBUG defined: */ +SOAP_FMAC1 void SOAP_FMAC2 soap_set_recv_logfile(struct soap*, const char*); +SOAP_FMAC1 void SOAP_FMAC2 soap_set_sent_logfile(struct soap*, const char*); +SOAP_FMAC1 void SOAP_FMAC2 soap_set_test_logfile(struct soap*, const char*); +SOAP_FMAC1 void SOAP_FMAC2 soap_close_logfiles(struct soap*); +SOAP_FMAC1 void SOAP_FMAC2 soap_open_logfile(struct soap*, int); +/* */ + +SOAP_FMAC1 const char* SOAP_FMAC2 soap_value(struct soap*); + +SOAP_FMAC1 int SOAP_FMAC2 soap_match_tag(struct soap*, const char*, const char *); +SOAP_FMAC1 int SOAP_FMAC2 soap_match_att(struct soap*, const char*, const char *); +SOAP_FMAC1 int SOAP_FMAC2 soap_match_array(struct soap*, const char*); + +SOAP_FMAC1 int SOAP_FMAC2 soap_element(struct soap*, const char*, int, const char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_element_start_end_out(struct soap*, const char *tag); +SOAP_FMAC1 int SOAP_FMAC2 soap_element_begin_out(struct soap*, const char *tag, int id, const char *type); +SOAP_FMAC1 int SOAP_FMAC2 soap_array_begin_out(struct soap*, const char *tag, int id, const char *type, const char *offset); +SOAP_FMAC1 int SOAP_FMAC2 soap_element_ref(struct soap*, const char *tag, int id, int href); +SOAP_FMAC1 int SOAP_FMAC2 soap_element_href(struct soap*, const char *tag, int id, const char *ref, const char *val); +SOAP_FMAC1 int SOAP_FMAC2 soap_element_null(struct soap*, const char *tag, int id, const char *type); +SOAP_FMAC1 int SOAP_FMAC2 soap_element_empty(struct soap*, const char *tag); +SOAP_FMAC1 int SOAP_FMAC2 soap_element_nil(struct soap*, const char *tag); +SOAP_FMAC1 int SOAP_FMAC2 soap_element_id(struct soap*, const char *tag, int id, const void *p, const void *a, int n, const char *type, int t, char **mark); +SOAP_FMAC1 int SOAP_FMAC2 soap_element_result(struct soap*, const char *tag); +SOAP_FMAC1 void SOAP_FMAC2 soap_check_result(struct soap*, const char *tag); +SOAP_FMAC1 int SOAP_FMAC2 soap_element_end_out(struct soap*, const char *tag); +SOAP_FMAC1 int SOAP_FMAC2 soap_element_end(struct soap*, const char *tag); + +SOAP_FMAC1 int SOAP_FMAC2 soap_attribute(struct soap*, const char*, const char*); + +SOAP_FMAC1 int SOAP_FMAC2 soap_element_begin_in(struct soap*, const char *tag, int nillable, const char *type); + +SOAP_FMAC1 int SOAP_FMAC2 soap_element_end_in(struct soap*, const char *tag); + +SOAP_FMAC1 int SOAP_FMAC2 soap_peek_element(struct soap*); + +SOAP_FMAC1 void SOAP_FMAC2 soap_retry(struct soap*); +SOAP_FMAC1 void SOAP_FMAC2 soap_revert(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_ignore(struct soap*); + +SOAP_FMAC1 void* SOAP_FMAC2 soap_memdup(struct soap*, const void*, size_t); +SOAP_FMAC1 char* SOAP_FMAC2 soap_strdup(struct soap*, const char*); +SOAP_FMAC1 wchar_t* SOAP_FMAC2 soap_wstrdup(struct soap*, const wchar_t*); +SOAP_FMAC1 char* SOAP_FMAC2 soap_strtrim(struct soap*, char*); +SOAP_FMAC1 wchar_t* SOAP_FMAC2 soap_wstrtrim(struct soap*, wchar_t*); +SOAP_FMAC1 const char * SOAP_FMAC2 soap_tagsearch(const char *big, const char *little); + +SOAP_FMAC1 int SOAP_FMAC2 soap_string_out(struct soap*, const char *s, int flag); +SOAP_FMAC1 char* SOAP_FMAC2 soap_string_in(struct soap*, int, long, long, const char*); + +#ifndef WITH_LEANER +SOAP_FMAC1 int SOAP_FMAC2 soap_wstring_out(struct soap*, const wchar_t *s, int flag); +SOAP_FMAC1 wchar_t* SOAP_FMAC2 soap_wstring_in(struct soap*, int, long, long, const char*); +#endif + +SOAP_FMAC1 int SOAP_FMAC2 soap_match_namespace(struct soap*, const char *, const char*, size_t n1, size_t n2); + +SOAP_FMAC1 void SOAP_FMAC2 soap_set_version(struct soap*, short); +SOAP_FMAC1 int SOAP_FMAC2 soap_set_namespaces(struct soap*, const struct Namespace*); +SOAP_FMAC1 void SOAP_FMAC2 soap_set_local_namespaces(struct soap*); + +SOAP_FMAC1 void SOAP_FMAC2 soap_pop_namespace(struct soap*); +SOAP_FMAC1 struct soap_nlist* SOAP_FMAC2 soap_push_namespace(struct soap*, const char *,const char *); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_current_namespace_tag(struct soap *soap, const char *tag); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_current_namespace_att(struct soap *soap, const char *tag); + +SOAP_FMAC1 struct soap_nlist* SOAP_FMAC2 soap_lookup_ns(struct soap *soap, const char *tag, size_t n); + +SOAP_FMAC1 int SOAP_FMAC2 soap_store_lab(struct soap*, const char*, size_t); +SOAP_FMAC1 int SOAP_FMAC2 soap_append_lab(struct soap*, const char*, size_t); + +SOAP_FMAC1 struct soap_blist* SOAP_FMAC2 soap_alloc_block(struct soap*); +SOAP_FMAC1 void* SOAP_FMAC2 soap_push_block(struct soap*, struct soap_blist*, size_t); +SOAP_FMAC1 void* SOAP_FMAC2 soap_push_block_max(struct soap*, struct soap_blist*, size_t); +SOAP_FMAC1 void SOAP_FMAC2 soap_pop_block(struct soap*, struct soap_blist*); +SOAP_FMAC1 size_t SOAP_FMAC2 soap_size_block(struct soap*, struct soap_blist*, size_t); +SOAP_FMAC1 char* SOAP_FMAC2 soap_first_block(struct soap*, struct soap_blist*); +SOAP_FMAC1 char* SOAP_FMAC2 soap_next_block(struct soap*, struct soap_blist*); +SOAP_FMAC1 size_t SOAP_FMAC2 soap_block_size(struct soap*, struct soap_blist*); +SOAP_FMAC1 char* SOAP_FMAC2 soap_save_block(struct soap*, struct soap_blist*, char*, int); +SOAP_FMAC1 void SOAP_FMAC2 soap_end_block(struct soap*, struct soap_blist*); +SOAP_FMAC1 void SOAP_FMAC2 soap_update_pointers(struct soap *soap, const char *dst, const char *src, size_t len); + +SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_begin_out(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_end_out(struct soap*); + +SOAP_FMAC1 int SOAP_FMAC2 soap_http_has_body(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_http_skip_body(struct soap*); +SOAP_FMAC1 char * SOAP_FMAC2 soap_http_get_body(struct soap*, size_t *len); +SOAP_FMAC1 char * SOAP_FMAC2 soap_http_get_form(struct soap*); +SOAP_FMAC1 char * SOAP_FMAC2 soap_http_get_body_prefix(struct soap*, size_t *len, const char *prefix); + +SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_begin_in(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_envelope_end_in(struct soap*); + +SOAP_FMAC1 int SOAP_FMAC2 soap_body_begin_out(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_body_end_out(struct soap*); + +SOAP_FMAC1 int SOAP_FMAC2 soap_body_begin_in(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_body_end_in(struct soap*); + +SOAP_FMAC1 int SOAP_FMAC2 soap_recv_header(struct soap*); + +SOAP_FMAC1 int SOAP_FMAC2 soap_response(struct soap*, int); + +SOAP_FMAC1 int SOAP_FMAC2 soap_send_empty_response(struct soap*, int status); +SOAP_FMAC1 int SOAP_FMAC2 soap_recv_empty_response(struct soap*); + +SOAP_FMAC1 int SOAP_FMAC2 soap_send_fault(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_recv_fault(struct soap*, int check); + +#ifndef WITH_NOSTDLIB +SOAP_FMAC1 void SOAP_FMAC2 soap_print_fault(struct soap*, FILE*); +SOAP_FMAC1 void SOAP_FMAC2 soap_print_fault_location(struct soap*, FILE*); +# ifndef WITH_LEAN +# ifndef WITH_COMPAT +# ifdef __cplusplus +SOAP_FMAC1 void SOAP_FMAC2 soap_stream_fault(struct soap*, std::ostream&); +SOAP_FMAC1 void SOAP_FMAC2 soap_stream_fault_location(struct soap*, std::ostream&); +# endif +# endif +SOAP_FMAC1 char* SOAP_FMAC2 soap_sprint_fault(struct soap*, char*, size_t); +# endif +#endif + +SOAP_FMAC1 int SOAP_FMAC2 soap_s2byte(struct soap*, const char*, char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_s2short(struct soap*, const char*, short*); +SOAP_FMAC1 int SOAP_FMAC2 soap_s2int(struct soap*, const char*, int*); +SOAP_FMAC1 int SOAP_FMAC2 soap_s2long(struct soap*, const char*, long*); +SOAP_FMAC1 int SOAP_FMAC2 soap_s2LONG64(struct soap*, const char*, LONG64*); +SOAP_FMAC1 int SOAP_FMAC2 soap_s2float(struct soap*, const char*, float*); +SOAP_FMAC1 int SOAP_FMAC2 soap_s2double(struct soap*, const char*, double*); +SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedByte(struct soap*, const char*, unsigned char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedShort(struct soap*, const char*, unsigned short*); +SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedInt(struct soap*, const char*, unsigned int*); +SOAP_FMAC1 int SOAP_FMAC2 soap_s2unsignedLong(struct soap*, const char*, unsigned long*); +SOAP_FMAC1 int SOAP_FMAC2 soap_s2ULONG64(struct soap*, const char*, ULONG64*); +SOAP_FMAC1 int SOAP_FMAC2 soap_s2char(struct soap*, const char*, char**, int, long minlen, long maxlen, const char *pattern); +SOAP_FMAC1 int SOAP_FMAC2 soap_s2QName(struct soap*, const char*, char**, long minlen, long maxlen, const char *pattern); + +#ifndef WITH_COMPAT +#ifdef __cplusplus +SOAP_FMAC1 int SOAP_FMAC2 soap_s2stdQName(struct soap*, const char*, std::string*, long minlen, long maxlen, const char *pattern); +SOAP_FMAC1 int SOAP_FMAC2 soap_s2stdchar(struct soap*, const char*, std::string*, int, long minlen, long maxlen, const char *pattern); +SOAP_FMAC1 int SOAP_FMAC2 soap_s2stdwchar(struct soap*, const char*, std::wstring*, int, long minlen, long maxlen, const char *pattern); +#endif +#endif + +#ifndef WITH_LEAN +SOAP_FMAC1 int SOAP_FMAC2 soap_s2wchar(struct soap*, const char*, wchar_t**, int, long minlen, long maxlen, const char *pattern); +SOAP_FMAC1 int SOAP_FMAC2 soap_s2dateTime(struct soap*, const char*, time_t*); +#endif + +SOAP_FMAC1 char* SOAP_FMAC2 soap_s2base64(struct soap*, const unsigned char*, char*, int); +SOAP_FMAC1 char* SOAP_FMAC2 soap_s2hex(struct soap*, const unsigned char*, char*, int); + +SOAP_FMAC1 const char* SOAP_FMAC2 soap_byte2s(struct soap*, char); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_short2s(struct soap*, short); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_int2s(struct soap*, int); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_long2s(struct soap*, long); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_LONG642s(struct soap*, LONG64); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_float2s(struct soap*, float); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_double2s(struct soap*, double); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedByte2s(struct soap*, unsigned char); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedShort2s(struct soap*, unsigned short); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedInt2s(struct soap*, unsigned int); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_unsignedLong2s(struct soap*, unsigned long); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_ULONG642s(struct soap*, ULONG64); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_QName2s(struct soap*, const char*); + +#ifndef WITH_LEAN +SOAP_FMAC1 const char* SOAP_FMAC2 soap_wchar2s(struct soap*, const wchar_t*); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_dateTime2s(struct soap*, time_t); +#endif + +SOAP_FMAC1 const char* SOAP_FMAC2 soap_base642s(struct soap*, const char*, char*, size_t, int*); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_hex2s(struct soap*, const char*, char*, size_t, int*); + +SOAP_FMAC1 int* SOAP_FMAC2 soap_inint(struct soap*, const char *tag, int *p, const char *, int); +SOAP_FMAC1 char* SOAP_FMAC2 soap_inbyte(struct soap*, const char *tag, char *p, const char *, int); +SOAP_FMAC1 long* SOAP_FMAC2 soap_inlong(struct soap*, const char *tag, long *p, const char *, int); +SOAP_FMAC1 LONG64* SOAP_FMAC2 soap_inLONG64(struct soap*, const char *tag, LONG64 *p, const char *, int); +SOAP_FMAC1 short* SOAP_FMAC2 soap_inshort(struct soap*, const char *tag, short *p, const char *, int); +SOAP_FMAC1 float* SOAP_FMAC2 soap_infloat(struct soap*, const char *tag, float *p, const char *, int); +SOAP_FMAC1 double* SOAP_FMAC2 soap_indouble(struct soap*, const char *tag, double *p, const char *, int); +SOAP_FMAC1 unsigned char* SOAP_FMAC2 soap_inunsignedByte(struct soap*, const char *tag, unsigned char *p, const char *, int); +SOAP_FMAC1 unsigned short* SOAP_FMAC2 soap_inunsignedShort(struct soap*, const char *tag, unsigned short *p, const char *, int); +SOAP_FMAC1 unsigned int* SOAP_FMAC2 soap_inunsignedInt(struct soap*, const char *tag, unsigned int *p, const char *, int); +SOAP_FMAC1 unsigned long* SOAP_FMAC2 soap_inunsignedLong(struct soap*, const char *tag, unsigned long *p, const char *, int); +SOAP_FMAC1 ULONG64* SOAP_FMAC2 soap_inULONG64(struct soap*, const char *tag, ULONG64 *p, const char *, int); +SOAP_FMAC1 char** SOAP_FMAC2 soap_instring(struct soap*, const char *tag, char **p, const char *, int, int, long, long, const char*); +SOAP_FMAC1 char** SOAP_FMAC2 soap_inliteral(struct soap*, const char *tag, char **p); + +#ifndef WITH_LEAN +SOAP_FMAC1 time_t* SOAP_FMAC2 soap_indateTime(struct soap*, const char *tag, time_t *p, const char *, int); +#endif + +#if !defined(WITH_LEAN) || defined(WITH_COOKIES) +SOAP_FMAC1 time_t SOAP_FMAC2 soap_timegm(struct tm*); +#endif + +#ifndef WITH_LEANER +SOAP_FMAC1 wchar_t** SOAP_FMAC2 soap_inwstring(struct soap*, const char *tag, wchar_t **p, const char *, int, int, long, long, const char*); +SOAP_FMAC1 wchar_t** SOAP_FMAC2 soap_inwliteral(struct soap*, const char *tag, wchar_t **p); +#endif + +SOAP_FMAC1 int SOAP_FMAC2 soap_outbyte(struct soap*, const char *tag, int id, const char *p, const char *, int); +SOAP_FMAC1 int SOAP_FMAC2 soap_outshort(struct soap*, const char *tag, int id, const short *p, const char *, int); +SOAP_FMAC1 int SOAP_FMAC2 soap_outint(struct soap*, const char *tag, int id, const int *p, const char *, int); +SOAP_FMAC1 int SOAP_FMAC2 soap_outlong(struct soap*, const char *tag, int id, const long *p, const char *, int); +SOAP_FMAC1 int SOAP_FMAC2 soap_outLONG64(struct soap*, const char *tag, int id, const LONG64 *p, const char *, int); +SOAP_FMAC1 int SOAP_FMAC2 soap_outfloat(struct soap*, const char *tag, int id, const float *p, const char *, int); +SOAP_FMAC1 int SOAP_FMAC2 soap_outdouble(struct soap*, const char *tag, int id, const double *p, const char *, int); +SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedByte(struct soap*, const char *tag, int id, const unsigned char *p, const char *, int); +SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedShort(struct soap*, const char *tag, int id, const unsigned short *p, const char *, int); +SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedInt(struct soap*, const char *tag, int id, const unsigned int *p, const char *, int); +SOAP_FMAC1 int SOAP_FMAC2 soap_outunsignedLong(struct soap*, const char *tag, int id, const unsigned long *p, const char *, int); +SOAP_FMAC1 int SOAP_FMAC2 soap_outULONG64(struct soap*, const char *tag, int id, const ULONG64 *p, const char *, int); +SOAP_FMAC1 int SOAP_FMAC2 soap_outstring(struct soap*, const char *tag, int id, char *const*p, const char *, int); +SOAP_FMAC1 int SOAP_FMAC2 soap_outliteral(struct soap*, const char *tag, char *const*p, const char *type); + +#ifndef WITH_LEAN +SOAP_FMAC1 int SOAP_FMAC2 soap_outdateTime(struct soap*, const char *tag, int id, const time_t *p, const char *, int); +#endif + +#ifndef WITH_LEANER +SOAP_FMAC1 int SOAP_FMAC2 soap_outwstring(struct soap*, const char *tag, int id, wchar_t *const*p, const char *, int); +SOAP_FMAC1 int SOAP_FMAC2 soap_outwliteral(struct soap*, const char *tag, wchar_t *const*p, const char *type); +#endif + +#ifndef WITH_LEANER +SOAP_FMAC1 int SOAP_FMAC2 soap_attachment(struct soap *, const char*, int, const void*, const void*, int, const char*, const char*, const char*, const char*, int); +SOAP_FMAC1 int SOAP_FMAC2 soap_move(struct soap*, ULONG64); +SOAP_FMAC1 ULONG64 SOAP_FMAC2 soap_tell(struct soap*); +SOAP_FMAC1 char* SOAP_FMAC2 soap_dime_option(struct soap*, unsigned short, const char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_getdimehdr(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_getdime(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_putdimehdr(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_putdime(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_getmimehdr(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_getmime(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_putmimehdr(struct soap*, struct soap_multipart*); +SOAP_FMAC1 int SOAP_FMAC2 soap_putmime(struct soap*); +SOAP_FMAC1 void SOAP_FMAC2 soap_set_dime(struct soap*); +SOAP_FMAC1 void SOAP_FMAC2 soap_set_mime(struct soap*, const char *boundary, const char *start); +SOAP_FMAC1 void SOAP_FMAC2 soap_clr_dime(struct soap*); +SOAP_FMAC1 void SOAP_FMAC2 soap_clr_mime(struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_set_dime_attachment(struct soap*, const char *ptr, size_t size, const char *type, const char *id, unsigned short optype, const char *option); +SOAP_FMAC1 int SOAP_FMAC2 soap_set_mime_attachment(struct soap*, const char *ptr, size_t size, enum soap_mime_encoding encoding, const char *type, const char *id, const char *location, const char *description); +SOAP_FMAC1 void SOAP_FMAC2 soap_post_check_mime_attachments(struct soap *soap); +SOAP_FMAC1 int SOAP_FMAC2 soap_check_mime_attachments(struct soap *soap); +SOAP_FMAC1 struct soap_multipart* SOAP_FMAC2 soap_recv_mime_attachment(struct soap *soap, void *handle); +SOAP_FMAC1 int SOAP_FMAC2 soap_match_cid(struct soap*, const char*, const char*); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_rand_uuid(struct soap*, const char*); +#endif + +SOAP_FMAC1 int SOAP_FMAC2 soap_register_plugin_arg(struct soap*, int (*fcreate)(struct soap*, struct soap_plugin*, void*), void*); +SOAP_FMAC1 void* SOAP_FMAC2 soap_lookup_plugin(struct soap*, const char*); + +SOAP_FMAC1 const char* SOAP_FMAC2 soap_attr_value(struct soap *soap, const char *name, int flag, int occurs); +SOAP_FMAC1 int SOAP_FMAC2 soap_set_attr(struct soap *soap, const char *name, const char *value, int flag); +SOAP_FMAC1 void SOAP_FMAC2 soap_clr_attr(struct soap *soap); + +SOAP_FMAC1 const char* SOAP_FMAC2 soap_extend_url(struct soap *soap, const char*, const char*); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_extend_url_query(struct soap *soap, const char*, const char*); +SOAP_FMAC1 void SOAP_FMAC2 soap_url_query(struct soap *soap, const char*, const char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_encode_url(const char*, char*, int); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_encode_url_string(struct soap*, const char*); +#ifdef WITH_COOKIES +SOAP_FMAC1 void SOAP_FMAC2 soap_getcookies(struct soap *soap, const char *val); +SOAP_FMAC1 struct soap_cookie* SOAP_FMAC2 soap_set_cookie(struct soap*, const char*, const char*, const char*, const char*); +SOAP_FMAC1 struct soap_cookie* SOAP_FMAC2 soap_cookie(struct soap*, const char*, const char*, const char*); +SOAP_FMAC1 struct soap_cookie* SOAP_FMAC2 soap_cookie_env(struct soap*, const char*, const char*, const char*, short); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_cookie_value(struct soap*, const char*, const char*, const char*); +SOAP_FMAC1 const char* SOAP_FMAC2 soap_env_cookie_value(struct soap*, const char*, const char*, const char*); +SOAP_FMAC1 time_t SOAP_FMAC2 soap_cookie_expire(struct soap*, const char*, const char*, const char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_set_cookie_expire(struct soap*, const char*, long, const char*, const char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_set_cookie_secure(struct soap*, const char*, const char*, const char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_set_cookie_session(struct soap*, const char*, const char*, const char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_clr_cookie_session(struct soap*, const char*, const char*, const char*); +SOAP_FMAC1 void SOAP_FMAC2 soap_clr_cookie(struct soap*, const char*, const char*, const char*); +SOAP_FMAC1 int SOAP_FMAC2 soap_getenv_cookies(struct soap*); +SOAP_FMAC1 void SOAP_FMAC2 soap_free_cookies(struct soap*); +SOAP_FMAC1 struct soap_cookie* SOAP_FMAC2 soap_copy_cookies(struct soap*, const struct soap*); +SOAP_FMAC1 int SOAP_FMAC2 soap_putsetcookies(struct soap *soap); +SOAP_FMAC1 int SOAP_FMAC2 soap_putcookies(struct soap *soap, const char *domain, const char *path, int secure); +#endif + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +SOAP_FMAC3 void SOAP_FMAC4 soap_header(struct soap*); +SOAP_FMAC3 void SOAP_FMAC4 soap_fault(struct soap*); +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultcode(struct soap*); +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultsubcode(struct soap*); +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultstring(struct soap*); +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultdetail(struct soap*); +SOAP_FMAC3 const char * SOAP_FMAC4 soap_fault_subcode(struct soap*); +SOAP_FMAC3 const char * SOAP_FMAC4 soap_fault_string(struct soap*); +SOAP_FMAC3 const char * SOAP_FMAC4 soap_fault_detail(struct soap*); +SOAP_FMAC3 void SOAP_FMAC4 soap_serializefault(struct soap*); +SOAP_FMAC3 void SOAP_FMAC4 soap_serializeheader(struct soap*); +SOAP_FMAC3 int SOAP_FMAC4 soap_getheader(struct soap*); +SOAP_FMAC3 int SOAP_FMAC4 soap_putheader(struct soap*); +SOAP_FMAC3 int SOAP_FMAC4 soap_getfault(struct soap*); +SOAP_FMAC3 int SOAP_FMAC4 soap_putfault(struct soap*); + +#ifdef __cplusplus + +/* C++ templates (for generated C++ only, not needed nor used in generated C code) */ + +template +struct soap_block +{ + static T *push(struct soap *soap, struct soap_blist *b) + { + if (!b) + b = soap->blist; + if (!b) + return NULL; + T *p = (T*)soap_push_block_max(soap, b, sizeof(T)); + if (p) + SOAP_PLACEMENT_NEW(soap, p, T); + return p; + } + static void pop(struct soap *soap, struct soap_blist *b) + { + if (!b) + b = soap->blist; + if (!b || !b->head) + return; + ((T*)(b->head + 1))->~T(); + soap_pop_block(soap, b); + } + static void save(struct soap *soap, struct soap_blist *b, T *p) + { + if (!b) + b = soap->blist; + for (T *q = (T*)soap_first_block(soap, b); q; q = (T*)soap_next_block(soap, b)) + { + soap_update_pointers(soap, (const char*)p, (const char*)q, sizeof(T)); + *p++ = *q; + q->~T(); + } + soap_end_block(soap, b); + } + static void end(struct soap *soap, struct soap_blist *b) + { + if (!b) + b = soap->blist; + for (T *p = (T*)soap_first_block(soap, b); p; p = (T*)soap_next_block(soap, b)) + p->~T(); + soap_end_block(soap, b); + } +}; + +#endif + +#endif /* STDSOAP_H */ diff --git a/connor_erp_mes/tinystr.cpp b/connor_erp_mes/tinystr.cpp new file mode 100644 index 0000000..0665768 --- /dev/null +++ b/connor_erp_mes/tinystr.cpp @@ -0,0 +1,111 @@ +/* +www.sourceforge.net/projects/tinyxml + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. +*/ + + +#ifndef TIXML_USE_STL + +#include "tinystr.h" + +// Error value for find primitive +const TiXmlString::size_type TiXmlString::npos = static_cast< TiXmlString::size_type >(-1); + + +// Null rep. +TiXmlString::Rep TiXmlString::nullrep_ = { 0, 0, { '\0' } }; + + +void TiXmlString::reserve (size_type cap) +{ + if (cap > capacity()) + { + TiXmlString tmp; + tmp.init(length(), cap); + memcpy(tmp.start(), data(), length()); + swap(tmp); + } +} + + +TiXmlString& TiXmlString::assign(const char* str, size_type len) +{ + size_type cap = capacity(); + if (len > cap || cap > 3*(len + 8)) + { + TiXmlString tmp; + tmp.init(len); + memcpy(tmp.start(), str, len); + swap(tmp); + } + else + { + memmove(start(), str, len); + set_size(len); + } + return *this; +} + + +TiXmlString& TiXmlString::append(const char* str, size_type len) +{ + size_type newsize = length() + len; + if (newsize > capacity()) + { + reserve (newsize + capacity()); + } + memmove(finish(), str, len); + set_size(newsize); + return *this; +} + + +TiXmlString operator + (const TiXmlString & a, const TiXmlString & b) +{ + TiXmlString tmp; + tmp.reserve(a.length() + b.length()); + tmp += a; + tmp += b; + return tmp; +} + +TiXmlString operator + (const TiXmlString & a, const char* b) +{ + TiXmlString tmp; + TiXmlString::size_type b_len = static_cast( strlen(b) ); + tmp.reserve(a.length() + b_len); + tmp += a; + tmp.append(b, b_len); + return tmp; +} + +TiXmlString operator + (const char* a, const TiXmlString & b) +{ + TiXmlString tmp; + TiXmlString::size_type a_len = static_cast( strlen(a) ); + tmp.reserve(a_len + b.length()); + tmp.append(a, a_len); + tmp += b; + return tmp; +} + + +#endif // TIXML_USE_STL diff --git a/connor_erp_mes/tinystr.h b/connor_erp_mes/tinystr.h new file mode 100644 index 0000000..89cca33 --- /dev/null +++ b/connor_erp_mes/tinystr.h @@ -0,0 +1,305 @@ +/* +www.sourceforge.net/projects/tinyxml + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. +*/ + + +#ifndef TIXML_USE_STL + +#ifndef TIXML_STRING_INCLUDED +#define TIXML_STRING_INCLUDED + +#include +#include + +/* The support for explicit isn't that universal, and it isn't really + required - it is used to check that the TiXmlString class isn't incorrectly + used. Be nice to old compilers and macro it here: +*/ +#if defined(_MSC_VER) && (_MSC_VER >= 1200 ) + // Microsoft visual studio, version 6 and higher. + #define TIXML_EXPLICIT explicit +#elif defined(__GNUC__) && (__GNUC__ >= 3 ) + // GCC version 3 and higher.s + #define TIXML_EXPLICIT explicit +#else + #define TIXML_EXPLICIT +#endif + + +/* + TiXmlString is an emulation of a subset of the std::string template. + Its purpose is to allow compiling TinyXML on compilers with no or poor STL support. + Only the member functions relevant to the TinyXML project have been implemented. + The buffer allocation is made by a simplistic power of 2 like mechanism : if we increase + a string and there's no more room, we allocate a buffer twice as big as we need. +*/ +class TiXmlString +{ + public : + // The size type used + typedef size_t size_type; + + // Error value for find primitive + static const size_type npos; // = -1; + + + // TiXmlString empty constructor + TiXmlString () : rep_(&nullrep_) + { + } + + // TiXmlString copy constructor + TiXmlString ( const TiXmlString & copy) : rep_(0) + { + init(copy.length()); + memcpy(start(), copy.data(), length()); + } + + // TiXmlString constructor, based on a string + TIXML_EXPLICIT TiXmlString ( const char * copy) : rep_(0) + { + init( static_cast( strlen(copy) )); + memcpy(start(), copy, length()); + } + + // TiXmlString constructor, based on a string + TIXML_EXPLICIT TiXmlString ( const char * str, size_type len) : rep_(0) + { + init(len); + memcpy(start(), str, len); + } + + // TiXmlString destructor + ~TiXmlString () + { + quit(); + } + + TiXmlString& operator = (const char * copy) + { + return assign( copy, (size_type)strlen(copy)); + } + + TiXmlString& operator = (const TiXmlString & copy) + { + return assign(copy.start(), copy.length()); + } + + + // += operator. Maps to append + TiXmlString& operator += (const char * suffix) + { + return append(suffix, static_cast( strlen(suffix) )); + } + + // += operator. Maps to append + TiXmlString& operator += (char single) + { + return append(&single, 1); + } + + // += operator. Maps to append + TiXmlString& operator += (const TiXmlString & suffix) + { + return append(suffix.data(), suffix.length()); + } + + + // Convert a TiXmlString into a null-terminated char * + const char * c_str () const { return rep_->str; } + + // Convert a TiXmlString into a char * (need not be null terminated). + const char * data () const { return rep_->str; } + + // Return the length of a TiXmlString + size_type length () const { return rep_->size; } + + // Alias for length() + size_type size () const { return rep_->size; } + + // Checks if a TiXmlString is empty + bool empty () const { return rep_->size == 0; } + + // Return capacity of string + size_type capacity () const { return rep_->capacity; } + + + // single char extraction + const char& at (size_type index) const + { + assert( index < length() ); + return rep_->str[ index ]; + } + + // [] operator + char& operator [] (size_type index) const + { + assert( index < length() ); + return rep_->str[ index ]; + } + + // find a char in a string. Return TiXmlString::npos if not found + size_type find (char lookup) const + { + return find(lookup, 0); + } + + // find a char in a string from an offset. Return TiXmlString::npos if not found + size_type find (char tofind, size_type offset) const + { + if (offset >= length()) return npos; + + for (const char* p = c_str() + offset; *p != '\0'; ++p) + { + if (*p == tofind) return static_cast< size_type >( p - c_str() ); + } + return npos; + } + + void clear () + { + //Lee: + //The original was just too strange, though correct: + // TiXmlString().swap(*this); + //Instead use the quit & re-init: + quit(); + init(0,0); + } + + /* Function to reserve a big amount of data when we know we'll need it. Be aware that this + function DOES NOT clear the content of the TiXmlString if any exists. + */ + void reserve (size_type cap); + + TiXmlString& assign (const char* str, size_type len); + + TiXmlString& append (const char* str, size_type len); + + void swap (TiXmlString& other) + { + Rep* r = rep_; + rep_ = other.rep_; + other.rep_ = r; + } + + private: + + void init(size_type sz) { init(sz, sz); } + void set_size(size_type sz) { rep_->str[ rep_->size = sz ] = '\0'; } + char* start() const { return rep_->str; } + char* finish() const { return rep_->str + rep_->size; } + + struct Rep + { + size_type size, capacity; + char str[1]; + }; + + void init(size_type sz, size_type cap) + { + if (cap) + { + // Lee: the original form: + // rep_ = static_cast(operator new(sizeof(Rep) + cap)); + // doesn't work in some cases of new being overloaded. Switching + // to the normal allocation, although use an 'int' for systems + // that are overly picky about structure alignment. + const size_type bytesNeeded = sizeof(Rep) + cap; + const size_type intsNeeded = ( bytesNeeded + sizeof(int) - 1 ) / sizeof( int ); + rep_ = reinterpret_cast( new int[ intsNeeded ] ); + + rep_->str[ rep_->size = sz ] = '\0'; + rep_->capacity = cap; + } + else + { + rep_ = &nullrep_; + } + } + + void quit() + { + if (rep_ != &nullrep_) + { + // The rep_ is really an array of ints. (see the allocator, above). + // Cast it back before delete, so the compiler won't incorrectly call destructors. + delete [] ( reinterpret_cast( rep_ ) ); + } + } + + Rep * rep_; + static Rep nullrep_; + +} ; + + +inline bool operator == (const TiXmlString & a, const TiXmlString & b) +{ + return ( a.length() == b.length() ) // optimization on some platforms + && ( strcmp(a.c_str(), b.c_str()) == 0 ); // actual compare +} +inline bool operator < (const TiXmlString & a, const TiXmlString & b) +{ + return strcmp(a.c_str(), b.c_str()) < 0; +} + +inline bool operator != (const TiXmlString & a, const TiXmlString & b) { return !(a == b); } +inline bool operator > (const TiXmlString & a, const TiXmlString & b) { return b < a; } +inline bool operator <= (const TiXmlString & a, const TiXmlString & b) { return !(b < a); } +inline bool operator >= (const TiXmlString & a, const TiXmlString & b) { return !(a < b); } + +inline bool operator == (const TiXmlString & a, const char* b) { return strcmp(a.c_str(), b) == 0; } +inline bool operator == (const char* a, const TiXmlString & b) { return b == a; } +inline bool operator != (const TiXmlString & a, const char* b) { return !(a == b); } +inline bool operator != (const char* a, const TiXmlString & b) { return !(b == a); } + +TiXmlString operator + (const TiXmlString & a, const TiXmlString & b); +TiXmlString operator + (const TiXmlString & a, const char* b); +TiXmlString operator + (const char* a, const TiXmlString & b); + + +/* + TiXmlOutStream is an emulation of std::ostream. It is based on TiXmlString. + Only the operators that we need for TinyXML have been developped. +*/ +class TiXmlOutStream : public TiXmlString +{ +public : + + // TiXmlOutStream << operator. + TiXmlOutStream & operator << (const TiXmlString & in) + { + *this += in; + return *this; + } + + // TiXmlOutStream << operator. + TiXmlOutStream & operator << (const char * in) + { + *this += in; + return *this; + } + +} ; + +#endif // TIXML_STRING_INCLUDED +#endif // TIXML_USE_STL diff --git a/connor_erp_mes/tinyxml.cpp b/connor_erp_mes/tinyxml.cpp new file mode 100644 index 0000000..fb3ed5a --- /dev/null +++ b/connor_erp_mes/tinyxml.cpp @@ -0,0 +1,1886 @@ +/* +www.sourceforge.net/projects/tinyxml +Original code by Lee Thomason (www.grinninglizard.com) + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. +*/ + +#include + +#ifdef TIXML_USE_STL +#include +#include +#endif + +#include "tinyxml.h" + +FILE* TiXmlFOpen( const char* filename, const char* mode ); + +bool TiXmlBase::condenseWhiteSpace = true; + +// Microsoft compiler security +FILE* TiXmlFOpen( const char* filename, const char* mode ) +{ + #if defined(_MSC_VER) && (_MSC_VER >= 1400 ) + FILE* fp = 0; + errno_t err = fopen_s( &fp, filename, mode ); + if ( !err && fp ) + return fp; + return 0; + #else + return fopen( filename, mode ); + #endif +} + +void TiXmlBase::EncodeString( const TIXML_STRING& str, TIXML_STRING* outString ) +{ + int i=0; + + while( i<(int)str.length() ) + { + unsigned char c = (unsigned char) str[i]; + + if ( c == '&' + && i < ( (int)str.length() - 2 ) + && str[i+1] == '#' + && str[i+2] == 'x' ) + { + // Hexadecimal character reference. + // Pass through unchanged. + // © -- copyright symbol, for example. + // + // The -1 is a bug fix from Rob Laveaux. It keeps + // an overflow from happening if there is no ';'. + // There are actually 2 ways to exit this loop - + // while fails (error case) and break (semicolon found). + // However, there is no mechanism (currently) for + // this function to return an error. + while ( i<(int)str.length()-1 ) + { + outString->append( str.c_str() + i, 1 ); + ++i; + if ( str[i] == ';' ) + break; + } + } + else if ( c == '&' ) + { + outString->append( entity[0].str, entity[0].strLength ); + ++i; + } + else if ( c == '<' ) + { + outString->append( entity[1].str, entity[1].strLength ); + ++i; + } + else if ( c == '>' ) + { + outString->append( entity[2].str, entity[2].strLength ); + ++i; + } + else if ( c == '\"' ) + { + outString->append( entity[3].str, entity[3].strLength ); + ++i; + } + else if ( c == '\'' ) + { + outString->append( entity[4].str, entity[4].strLength ); + ++i; + } + else if ( c < 32 ) + { + // Easy pass at non-alpha/numeric/symbol + // Below 32 is symbolic. + char buf[ 32 ]; + + #if defined(TIXML_SNPRINTF) + TIXML_SNPRINTF( buf, sizeof(buf), "&#x%02X;", (unsigned) ( c & 0xff ) ); + #else + sprintf( buf, "&#x%02X;", (unsigned) ( c & 0xff ) ); + #endif + + //*ME: warning C4267: convert 'size_t' to 'int' + //*ME: Int-Cast to make compiler happy ... + outString->append( buf, (int)strlen( buf ) ); + ++i; + } + else + { + //char realc = (char) c; + //outString->append( &realc, 1 ); + *outString += (char) c; // somewhat more efficient function call. + ++i; + } + } +} + + +TiXmlNode::TiXmlNode( NodeType _type ) : TiXmlBase() +{ + parent = 0; + type = _type; + firstChild = 0; + lastChild = 0; + prev = 0; + next = 0; +} + + +TiXmlNode::~TiXmlNode() +{ + TiXmlNode* node = firstChild; + TiXmlNode* temp = 0; + + while ( node ) + { + temp = node; + node = node->next; + delete temp; + } +} + + +void TiXmlNode::CopyTo( TiXmlNode* target ) const +{ + target->SetValue (value.c_str() ); + target->userData = userData; + target->location = location; +} + + +void TiXmlNode::Clear() +{ + TiXmlNode* node = firstChild; + TiXmlNode* temp = 0; + + while ( node ) + { + temp = node; + node = node->next; + delete temp; + } + + firstChild = 0; + lastChild = 0; +} + + +TiXmlNode* TiXmlNode::LinkEndChild( TiXmlNode* node ) +{ + assert( node->parent == 0 || node->parent == this ); + assert( node->GetDocument() == 0 || node->GetDocument() == this->GetDocument() ); + + if ( node->Type() == TiXmlNode::TINYXML_DOCUMENT ) + { + delete node; + if ( GetDocument() ) + GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); + return 0; + } + + node->parent = this; + + node->prev = lastChild; + node->next = 0; + + if ( lastChild ) + lastChild->next = node; + else + firstChild = node; // it was an empty list. + + lastChild = node; + return node; +} + + +TiXmlNode* TiXmlNode::InsertEndChild( const TiXmlNode& addThis ) +{ + if ( addThis.Type() == TiXmlNode::TINYXML_DOCUMENT ) + { + if ( GetDocument() ) + GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); + return 0; + } + TiXmlNode* node = addThis.Clone(); + if ( !node ) + return 0; + + return LinkEndChild( node ); +} + + +TiXmlNode* TiXmlNode::InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis ) +{ + if ( !beforeThis || beforeThis->parent != this ) { + return 0; + } + if ( addThis.Type() == TiXmlNode::TINYXML_DOCUMENT ) + { + if ( GetDocument() ) + GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); + return 0; + } + + TiXmlNode* node = addThis.Clone(); + if ( !node ) + return 0; + node->parent = this; + + node->next = beforeThis; + node->prev = beforeThis->prev; + if ( beforeThis->prev ) + { + beforeThis->prev->next = node; + } + else + { + assert( firstChild == beforeThis ); + firstChild = node; + } + beforeThis->prev = node; + return node; +} + + +TiXmlNode* TiXmlNode::InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis ) +{ + if ( !afterThis || afterThis->parent != this ) { + return 0; + } + if ( addThis.Type() == TiXmlNode::TINYXML_DOCUMENT ) + { + if ( GetDocument() ) + GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); + return 0; + } + + TiXmlNode* node = addThis.Clone(); + if ( !node ) + return 0; + node->parent = this; + + node->prev = afterThis; + node->next = afterThis->next; + if ( afterThis->next ) + { + afterThis->next->prev = node; + } + else + { + assert( lastChild == afterThis ); + lastChild = node; + } + afterThis->next = node; + return node; +} + + +TiXmlNode* TiXmlNode::ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis ) +{ + if ( !replaceThis ) + return 0; + + if ( replaceThis->parent != this ) + return 0; + + if ( withThis.ToDocument() ) { + // A document can never be a child. Thanks to Noam. + TiXmlDocument* document = GetDocument(); + if ( document ) + document->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); + return 0; + } + + TiXmlNode* node = withThis.Clone(); + if ( !node ) + return 0; + + node->next = replaceThis->next; + node->prev = replaceThis->prev; + + if ( replaceThis->next ) + replaceThis->next->prev = node; + else + lastChild = node; + + if ( replaceThis->prev ) + replaceThis->prev->next = node; + else + firstChild = node; + + delete replaceThis; + node->parent = this; + return node; +} + + +bool TiXmlNode::RemoveChild( TiXmlNode* removeThis ) +{ + if ( !removeThis ) { + return false; + } + + if ( removeThis->parent != this ) + { + assert( 0 ); + return false; + } + + if ( removeThis->next ) + removeThis->next->prev = removeThis->prev; + else + lastChild = removeThis->prev; + + if ( removeThis->prev ) + removeThis->prev->next = removeThis->next; + else + firstChild = removeThis->next; + + //delete removeThis; kk Ҫɾ + return true; +} + +const TiXmlNode* TiXmlNode::FirstChild( const char * _value ) const +{ + const TiXmlNode* node; + for ( node = firstChild; node; node = node->next ) + { + if ( strcmp( node->Value(), _value ) == 0 ) + return node; + } + return 0; +} + + +const TiXmlNode* TiXmlNode::LastChild( const char * _value ) const +{ + const TiXmlNode* node; + for ( node = lastChild; node; node = node->prev ) + { + if ( strcmp( node->Value(), _value ) == 0 ) + return node; + } + return 0; +} + + +const TiXmlNode* TiXmlNode::IterateChildren( const TiXmlNode* previous ) const +{ + if ( !previous ) + { + return FirstChild(); + } + else + { + assert( previous->parent == this ); + return previous->NextSibling(); + } +} + + +const TiXmlNode* TiXmlNode::IterateChildren( const char * val, const TiXmlNode* previous ) const +{ + if ( !previous ) + { + return FirstChild( val ); + } + else + { + assert( previous->parent == this ); + return previous->NextSibling( val ); + } +} + + +const TiXmlNode* TiXmlNode::NextSibling( const char * _value ) const +{ + const TiXmlNode* node; + for ( node = next; node; node = node->next ) + { + if ( strcmp( node->Value(), _value ) == 0 ) + return node; + } + return 0; +} + + +const TiXmlNode* TiXmlNode::PreviousSibling( const char * _value ) const +{ + const TiXmlNode* node; + for ( node = prev; node; node = node->prev ) + { + if ( strcmp( node->Value(), _value ) == 0 ) + return node; + } + return 0; +} + + +void TiXmlElement::RemoveAttribute( const char * name ) +{ + #ifdef TIXML_USE_STL + TIXML_STRING str( name ); + TiXmlAttribute* node = attributeSet.Find( str ); + #else + TiXmlAttribute* node = attributeSet.Find( name ); + #endif + if ( node ) + { + attributeSet.Remove( node ); + delete node; + } +} + +const TiXmlElement* TiXmlNode::FirstChildElement() const +{ + const TiXmlNode* node; + + for ( node = FirstChild(); + node; + node = node->NextSibling() ) + { + if ( node->ToElement() ) + return node->ToElement(); + } + return 0; +} + + +const TiXmlElement* TiXmlNode::FirstChildElement( const char * _value ) const +{ + const TiXmlNode* node; + + for ( node = FirstChild( _value ); + node; + node = node->NextSibling( _value ) ) + { + if ( node->ToElement() ) + return node->ToElement(); + } + return 0; +} + + +const TiXmlElement* TiXmlNode::NextSiblingElement() const +{ + const TiXmlNode* node; + + for ( node = NextSibling(); + node; + node = node->NextSibling() ) + { + if ( node->ToElement() ) + return node->ToElement(); + } + return 0; +} + + +const TiXmlElement* TiXmlNode::NextSiblingElement( const char * _value ) const +{ + const TiXmlNode* node; + + for ( node = NextSibling( _value ); + node; + node = node->NextSibling( _value ) ) + { + if ( node->ToElement() ) + return node->ToElement(); + } + return 0; +} + + +const TiXmlDocument* TiXmlNode::GetDocument() const +{ + const TiXmlNode* node; + + for( node = this; node; node = node->parent ) + { + if ( node->ToDocument() ) + return node->ToDocument(); + } + return 0; +} + + +TiXmlElement::TiXmlElement (const char * _value) + : TiXmlNode( TiXmlNode::TINYXML_ELEMENT ) +{ + firstChild = lastChild = 0; + value = _value; +} + + +#ifdef TIXML_USE_STL +TiXmlElement::TiXmlElement( const std::string& _value ) + : TiXmlNode( TiXmlNode::TINYXML_ELEMENT ) +{ + firstChild = lastChild = 0; + value = _value; +} +#endif + + +TiXmlElement::TiXmlElement( const TiXmlElement& copy) + : TiXmlNode( TiXmlNode::TINYXML_ELEMENT ) +{ + firstChild = lastChild = 0; + copy.CopyTo( this ); +} + + +TiXmlElement& TiXmlElement::operator=( const TiXmlElement& base ) +{ + ClearThis(); + base.CopyTo( this ); + return *this; +} + + +TiXmlElement::~TiXmlElement() +{ + ClearThis(); +} + + +void TiXmlElement::ClearThis() +{ + Clear(); + while( attributeSet.First() ) + { + TiXmlAttribute* node = attributeSet.First(); + attributeSet.Remove( node ); + delete node; + } +} + + +const char* TiXmlElement::Attribute( const char* name ) const +{ + const TiXmlAttribute* node = attributeSet.Find( name ); + if ( node ) + return node->Value(); + return 0; +} + + +#ifdef TIXML_USE_STL +const std::string* TiXmlElement::Attribute( const std::string& name ) const +{ + const TiXmlAttribute* attrib = attributeSet.Find( name ); + if ( attrib ) + return &attrib->ValueStr(); + return 0; +} +#endif + + +const char* TiXmlElement::Attribute( const char* name, int* i ) const +{ + const TiXmlAttribute* attrib = attributeSet.Find( name ); + const char* result = 0; + + if ( attrib ) { + result = attrib->Value(); + if ( i ) { + attrib->QueryIntValue( i ); + } + } + return result; +} + + +#ifdef TIXML_USE_STL +const std::string* TiXmlElement::Attribute( const std::string& name, int* i ) const +{ + const TiXmlAttribute* attrib = attributeSet.Find( name ); + const std::string* result = 0; + + if ( attrib ) { + result = &attrib->ValueStr(); + if ( i ) { + attrib->QueryIntValue( i ); + } + } + return result; +} +#endif + + +const char* TiXmlElement::Attribute( const char* name, double* d ) const +{ + const TiXmlAttribute* attrib = attributeSet.Find( name ); + const char* result = 0; + + if ( attrib ) { + result = attrib->Value(); + if ( d ) { + attrib->QueryDoubleValue( d ); + } + } + return result; +} + + +#ifdef TIXML_USE_STL +const std::string* TiXmlElement::Attribute( const std::string& name, double* d ) const +{ + const TiXmlAttribute* attrib = attributeSet.Find( name ); + const std::string* result = 0; + + if ( attrib ) { + result = &attrib->ValueStr(); + if ( d ) { + attrib->QueryDoubleValue( d ); + } + } + return result; +} +#endif + + +int TiXmlElement::QueryIntAttribute( const char* name, int* ival ) const +{ + const TiXmlAttribute* attrib = attributeSet.Find( name ); + if ( !attrib ) + return TIXML_NO_ATTRIBUTE; + return attrib->QueryIntValue( ival ); +} + + +int TiXmlElement::QueryUnsignedAttribute( const char* name, unsigned* value ) const +{ + const TiXmlAttribute* node = attributeSet.Find( name ); + if ( !node ) + return TIXML_NO_ATTRIBUTE; + + int ival = 0; + int result = node->QueryIntValue( &ival ); + *value = (unsigned)ival; + return result; +} + + +int TiXmlElement::QueryBoolAttribute( const char* name, bool* bval ) const +{ + const TiXmlAttribute* node = attributeSet.Find( name ); + if ( !node ) + return TIXML_NO_ATTRIBUTE; + + int result = TIXML_WRONG_TYPE; + if ( StringEqual( node->Value(), "true", true, TIXML_ENCODING_UNKNOWN ) + || StringEqual( node->Value(), "yes", true, TIXML_ENCODING_UNKNOWN ) + || StringEqual( node->Value(), "1", true, TIXML_ENCODING_UNKNOWN ) ) + { + *bval = true; + result = TIXML_SUCCESS; + } + else if ( StringEqual( node->Value(), "false", true, TIXML_ENCODING_UNKNOWN ) + || StringEqual( node->Value(), "no", true, TIXML_ENCODING_UNKNOWN ) + || StringEqual( node->Value(), "0", true, TIXML_ENCODING_UNKNOWN ) ) + { + *bval = false; + result = TIXML_SUCCESS; + } + return result; +} + + + +#ifdef TIXML_USE_STL +int TiXmlElement::QueryIntAttribute( const std::string& name, int* ival ) const +{ + const TiXmlAttribute* attrib = attributeSet.Find( name ); + if ( !attrib ) + return TIXML_NO_ATTRIBUTE; + return attrib->QueryIntValue( ival ); +} +#endif + + +int TiXmlElement::QueryDoubleAttribute( const char* name, double* dval ) const +{ + const TiXmlAttribute* attrib = attributeSet.Find( name ); + if ( !attrib ) + return TIXML_NO_ATTRIBUTE; + return attrib->QueryDoubleValue( dval ); +} + + +#ifdef TIXML_USE_STL +int TiXmlElement::QueryDoubleAttribute( const std::string& name, double* dval ) const +{ + const TiXmlAttribute* attrib = attributeSet.Find( name ); + if ( !attrib ) + return TIXML_NO_ATTRIBUTE; + return attrib->QueryDoubleValue( dval ); +} +#endif + + +void TiXmlElement::SetAttribute( const char * name, int val ) +{ + TiXmlAttribute* attrib = attributeSet.FindOrCreate( name ); + if ( attrib ) { + attrib->SetIntValue( val ); + } +} + + +#ifdef TIXML_USE_STL +void TiXmlElement::SetAttribute( const std::string& name, int val ) +{ + TiXmlAttribute* attrib = attributeSet.FindOrCreate( name ); + if ( attrib ) { + attrib->SetIntValue( val ); + } +} +#endif + + +void TiXmlElement::SetDoubleAttribute( const char * name, double val ) +{ + TiXmlAttribute* attrib = attributeSet.FindOrCreate( name ); + if ( attrib ) { + attrib->SetDoubleValue( val ); + } +} + + +#ifdef TIXML_USE_STL +void TiXmlElement::SetDoubleAttribute( const std::string& name, double val ) +{ + TiXmlAttribute* attrib = attributeSet.FindOrCreate( name ); + if ( attrib ) { + attrib->SetDoubleValue( val ); + } +} +#endif + + +void TiXmlElement::SetAttribute( const char * cname, const char * cvalue ) +{ + TiXmlAttribute* attrib = attributeSet.FindOrCreate( cname ); + if ( attrib ) { + attrib->SetValue( cvalue ); + } +} + + +#ifdef TIXML_USE_STL +void TiXmlElement::SetAttribute( const std::string& _name, const std::string& _value ) +{ + TiXmlAttribute* attrib = attributeSet.FindOrCreate( _name ); + if ( attrib ) { + attrib->SetValue( _value ); + } +} +#endif + + +void TiXmlElement::Print( FILE* cfile, int depth ) const +{ + int i; + assert( cfile ); + for ( i=0; iNext() ) + { + fprintf( cfile, " " ); + attrib->Print( cfile, depth ); + } + + // There are 3 different formatting approaches: + // 1) An element without children is printed as a node + // 2) An element with only a text child is printed as text + // 3) An element with children is printed on multiple lines. + TiXmlNode* node; + if ( !firstChild ) + { + fprintf( cfile, " />" ); + } + else if ( firstChild == lastChild && firstChild->ToText() ) + { + fprintf( cfile, ">" ); + firstChild->Print( cfile, depth + 1 ); + fprintf( cfile, "", value.c_str() ); + } + else + { + fprintf( cfile, ">" ); + + for ( node = firstChild; node; node=node->NextSibling() ) + { + if ( !node->ToText() ) + { + fprintf( cfile, "\n" ); + } + node->Print( cfile, depth+1 ); + } + fprintf( cfile, "\n" ); + for( i=0; i", value.c_str() ); + } +} + + +void TiXmlElement::CopyTo( TiXmlElement* target ) const +{ + // superclass: + TiXmlNode::CopyTo( target ); + + // Element class: + // Clone the attributes, then clone the children. + const TiXmlAttribute* attribute = 0; + for( attribute = attributeSet.First(); + attribute; + attribute = attribute->Next() ) + { + target->SetAttribute( attribute->Name(), attribute->Value() ); + } + + TiXmlNode* node = 0; + for ( node = firstChild; node; node = node->NextSibling() ) + { + target->LinkEndChild( node->Clone() ); + } +} + +bool TiXmlElement::Accept( TiXmlVisitor* visitor ) const +{ + if ( visitor->VisitEnter( *this, attributeSet.First() ) ) + { + for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() ) + { + if ( !node->Accept( visitor ) ) + break; + } + } + return visitor->VisitExit( *this ); +} + + +TiXmlNode* TiXmlElement::Clone() const +{ + TiXmlElement* clone = new TiXmlElement( Value() ); + if ( !clone ) + return 0; + + CopyTo( clone ); + return clone; +} + + +const char* TiXmlElement::GetText() const +{ + const TiXmlNode* child = this->FirstChild(); + if ( child ) { + const TiXmlText* childText = child->ToText(); + if ( childText ) { + return childText->Value(); + } + } + return 0; +} + + +TiXmlDocument::TiXmlDocument() : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT ) +{ + tabsize = 4; + useMicrosoftBOM = true; + ClearError(); +} + +TiXmlDocument::TiXmlDocument( const char * documentName ) : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT ) +{ + tabsize = 4; + useMicrosoftBOM = true; + value = documentName; + ClearError(); +} + + +#ifdef TIXML_USE_STL +TiXmlDocument::TiXmlDocument( const std::string& documentName ) : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT ) +{ + tabsize = 4; + useMicrosoftBOM = true; + value = documentName; + ClearError(); +} +#endif + + +TiXmlDocument::TiXmlDocument( const TiXmlDocument& copy ) : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT ) +{ + copy.CopyTo( this ); +} + + +TiXmlDocument& TiXmlDocument::operator=( const TiXmlDocument& copy ) +{ + Clear(); + copy.CopyTo( this ); + return *this; +} + + +bool TiXmlDocument::LoadFile( TiXmlEncoding encoding ) +{ + return LoadFile( Value(), encoding ); +} + + +bool TiXmlDocument::SaveFile() const +{ + return SaveFile( Value() ); +} + +bool TiXmlDocument::LoadFile( const char* _filename, TiXmlEncoding encoding ) +{ + TIXML_STRING filename( _filename ); + value = filename; + + // reading in binary mode so that tinyxml can normalize the EOL + FILE* file = TiXmlFOpen( value.c_str (), "rb" ); + + if ( file ) + { + bool result = LoadFile( file, encoding ); + fclose( file ); + return result; + } + else + { + SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN ); + return false; + } +} + +bool TiXmlDocument::LoadFile( FILE* file, TiXmlEncoding encoding ) +{ + if ( !file ) + { + SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN ); + return false; + } + + // Delete the existing data: + Clear(); + location.Clear(); + + // Get the file size, so we can pre-allocate the string. HUGE speed impact. + long length = 0; + fseek( file, 0, SEEK_END ); + length = ftell( file ); + fseek( file, 0, SEEK_SET ); + + // Strange case, but good to handle up front. + if ( length <= 0 ) + { + SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); + return false; + } + + // Subtle bug here. TinyXml did use fgets. But from the XML spec: + // 2.11 End-of-Line Handling + // + // + // ...the XML processor MUST behave as if it normalized all line breaks in external + // parsed entities (including the document entity) on input, before parsing, by translating + // both the two-character sequence #xD #xA and any #xD that is not followed by #xA to + // a single #xA character. + // + // + // It is not clear fgets does that, and certainly isn't clear it works cross platform. + // Generally, you expect fgets to translate from the convention of the OS to the c/unix + // convention, and not work generally. + + /* + while( fgets( buf, sizeof(buf), file ) ) + { + data += buf; + } + */ + + char* buf = new char[ length+1 ]; + buf[0] = 0; + + if ( fread( buf, length, 1, file ) != 1 ) { + delete [] buf; + SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN ); + return false; + } + + // Process the buffer in place to normalize new lines. (See comment above.) + // Copies from the 'p' to 'q' pointer, where p can advance faster if + // a newline-carriage return is hit. + // + // Wikipedia: + // Systems based on ASCII or a compatible character set use either LF (Line feed, '\n', 0x0A, 10 in decimal) or + // CR (Carriage return, '\r', 0x0D, 13 in decimal) individually, or CR followed by LF (CR+LF, 0x0D 0x0A)... + // * LF: Multics, Unix and Unix-like systems (GNU/Linux, AIX, Xenix, Mac OS X, FreeBSD, etc.), BeOS, Amiga, RISC OS, and others + // * CR+LF: DEC RT-11 and most other early non-Unix, non-IBM OSes, CP/M, MP/M, DOS, OS/2, Microsoft Windows, Symbian OS + // * CR: Commodore 8-bit machines, Apple II family, Mac OS up to version 9 and OS-9 + + const char* p = buf; // the read head + char* q = buf; // the write head + const char CR = 0x0d; + const char LF = 0x0a; + + buf[length] = 0; + while( *p ) { + assert( p < (buf+length) ); + assert( q <= (buf+length) ); + assert( q <= p ); + + if ( *p == CR ) { + *q++ = LF; + p++; + if ( *p == LF ) { // check for CR+LF (and skip LF) + p++; + } + } + else { + *q++ = *p++; + } + } + assert( q <= (buf+length) ); + *q = 0; + + Parse( buf, 0, encoding ); + + delete [] buf; + return !Error(); +} + + +bool TiXmlDocument::SaveFile( const char * filename ) const +{ + // The old c stuff lives on... + FILE* fp = TiXmlFOpen( filename, "w" ); + if ( fp ) + { + bool result = SaveFile( fp ); + fclose( fp ); + return result; + } + return false; +} + + +bool TiXmlDocument::SaveFile( FILE* fp ) const +{ + if ( useMicrosoftBOM ) + { + const unsigned char TIXML_UTF_LEAD_0 = 0xefU; + const unsigned char TIXML_UTF_LEAD_1 = 0xbbU; + const unsigned char TIXML_UTF_LEAD_2 = 0xbfU; + + fputc( TIXML_UTF_LEAD_0, fp ); + fputc( TIXML_UTF_LEAD_1, fp ); + fputc( TIXML_UTF_LEAD_2, fp ); + } + Print( fp, 0 ); + return (ferror(fp) == 0); +} + + +void TiXmlDocument::CopyTo( TiXmlDocument* target ) const +{ + TiXmlNode::CopyTo( target ); + + target->error = error; + target->errorId = errorId; + target->errorDesc = errorDesc; + target->tabsize = tabsize; + target->errorLocation = errorLocation; + target->useMicrosoftBOM = useMicrosoftBOM; + + TiXmlNode* node = 0; + for ( node = firstChild; node; node = node->NextSibling() ) + { + target->LinkEndChild( node->Clone() ); + } +} + + +TiXmlNode* TiXmlDocument::Clone() const +{ + TiXmlDocument* clone = new TiXmlDocument(); + if ( !clone ) + return 0; + + CopyTo( clone ); + return clone; +} + + +void TiXmlDocument::Print( FILE* cfile, int depth ) const +{ + assert( cfile ); + for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() ) + { + node->Print( cfile, depth ); + fprintf( cfile, "\n" ); + } +} + + +bool TiXmlDocument::Accept( TiXmlVisitor* visitor ) const +{ + if ( visitor->VisitEnter( *this ) ) + { + for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() ) + { + if ( !node->Accept( visitor ) ) + break; + } + } + return visitor->VisitExit( *this ); +} + + +const TiXmlAttribute* TiXmlAttribute::Next() const +{ + // We are using knowledge of the sentinel. The sentinel + // have a value or name. + if ( next->value.empty() && next->name.empty() ) + return 0; + return next; +} + +/* +TiXmlAttribute* TiXmlAttribute::Next() +{ + // We are using knowledge of the sentinel. The sentinel + // have a value or name. + if ( next->value.empty() && next->name.empty() ) + return 0; + return next; +} +*/ + +const TiXmlAttribute* TiXmlAttribute::Previous() const +{ + // We are using knowledge of the sentinel. The sentinel + // have a value or name. + if ( prev->value.empty() && prev->name.empty() ) + return 0; + return prev; +} + +/* +TiXmlAttribute* TiXmlAttribute::Previous() +{ + // We are using knowledge of the sentinel. The sentinel + // have a value or name. + if ( prev->value.empty() && prev->name.empty() ) + return 0; + return prev; +} +*/ + +void TiXmlAttribute::Print( FILE* cfile, int /*depth*/, TIXML_STRING* str ) const +{ + TIXML_STRING n, v; + + EncodeString( name, &n ); + EncodeString( value, &v ); + + if (value.find ('\"') == TIXML_STRING::npos) { + if ( cfile ) { + fprintf (cfile, "%s=\"%s\"", n.c_str(), v.c_str() ); + } + if ( str ) { + (*str) += n; (*str) += "=\""; (*str) += v; (*str) += "\""; + } + } + else { + if ( cfile ) { + fprintf (cfile, "%s='%s'", n.c_str(), v.c_str() ); + } + if ( str ) { + (*str) += n; (*str) += "='"; (*str) += v; (*str) += "'"; + } + } +} + + +int TiXmlAttribute::QueryIntValue( int* ival ) const +{ + if ( TIXML_SSCANF( value.c_str(), "%d", ival ) == 1 ) + return TIXML_SUCCESS; + return TIXML_WRONG_TYPE; +} + +int TiXmlAttribute::QueryDoubleValue( double* dval ) const +{ + if ( TIXML_SSCANF( value.c_str(), "%lf", dval ) == 1 ) + return TIXML_SUCCESS; + return TIXML_WRONG_TYPE; +} + +void TiXmlAttribute::SetIntValue( int _value ) +{ + char buf [64]; + #if defined(TIXML_SNPRINTF) + TIXML_SNPRINTF(buf, sizeof(buf), "%d", _value); + #else + sprintf (buf, "%d", _value); + #endif + SetValue (buf); +} + +void TiXmlAttribute::SetDoubleValue( double _value ) +{ + char buf [256]; + #if defined(TIXML_SNPRINTF) + TIXML_SNPRINTF( buf, sizeof(buf), "%g", _value); + #else + sprintf (buf, "%g", _value); + #endif + SetValue (buf); +} + +int TiXmlAttribute::IntValue() const +{ + return atoi (value.c_str ()); +} + +double TiXmlAttribute::DoubleValue() const +{ + return atof (value.c_str ()); +} + + +TiXmlComment::TiXmlComment( const TiXmlComment& copy ) : TiXmlNode( TiXmlNode::TINYXML_COMMENT ) +{ + copy.CopyTo( this ); +} + + +TiXmlComment& TiXmlComment::operator=( const TiXmlComment& base ) +{ + Clear(); + base.CopyTo( this ); + return *this; +} + + +void TiXmlComment::Print( FILE* cfile, int depth ) const +{ + assert( cfile ); + for ( int i=0; i", value.c_str() ); +} + + +void TiXmlComment::CopyTo( TiXmlComment* target ) const +{ + TiXmlNode::CopyTo( target ); +} + + +bool TiXmlComment::Accept( TiXmlVisitor* visitor ) const +{ + return visitor->Visit( *this ); +} + + +TiXmlNode* TiXmlComment::Clone() const +{ + TiXmlComment* clone = new TiXmlComment(); + + if ( !clone ) + return 0; + + CopyTo( clone ); + return clone; +} + + +void TiXmlText::Print( FILE* cfile, int depth ) const +{ + assert( cfile ); + if ( cdata ) + { + int i; + fprintf( cfile, "\n" ); + for ( i=0; i\n", value.c_str() ); // unformatted output + } + else + { + TIXML_STRING buffer; + EncodeString( value, &buffer ); + fprintf( cfile, "%s", buffer.c_str() ); + } +} + + +void TiXmlText::CopyTo( TiXmlText* target ) const +{ + TiXmlNode::CopyTo( target ); + target->cdata = cdata; +} + + +bool TiXmlText::Accept( TiXmlVisitor* visitor ) const +{ + return visitor->Visit( *this ); +} + + +TiXmlNode* TiXmlText::Clone() const +{ + TiXmlText* clone = 0; + clone = new TiXmlText( "" ); + + if ( !clone ) + return 0; + + CopyTo( clone ); + return clone; +} + + +TiXmlDeclaration::TiXmlDeclaration( const char * _version, + const char * _encoding, + const char * _standalone ) + : TiXmlNode( TiXmlNode::TINYXML_DECLARATION ) +{ + version = _version; + encoding = _encoding; + standalone = _standalone; +} + + +#ifdef TIXML_USE_STL +TiXmlDeclaration::TiXmlDeclaration( const std::string& _version, + const std::string& _encoding, + const std::string& _standalone ) + : TiXmlNode( TiXmlNode::TINYXML_DECLARATION ) +{ + version = _version; + encoding = _encoding; + standalone = _standalone; +} +#endif + + +TiXmlDeclaration::TiXmlDeclaration( const TiXmlDeclaration& copy ) + : TiXmlNode( TiXmlNode::TINYXML_DECLARATION ) +{ + copy.CopyTo( this ); +} + + +TiXmlDeclaration& TiXmlDeclaration::operator=( const TiXmlDeclaration& copy ) +{ + Clear(); + copy.CopyTo( this ); + return *this; +} + + +void TiXmlDeclaration::Print( FILE* cfile, int /*depth*/, TIXML_STRING* str ) const +{ + if ( cfile ) fprintf( cfile, "" ); + if ( str ) (*str) += "?>"; +} + + +void TiXmlDeclaration::CopyTo( TiXmlDeclaration* target ) const +{ + TiXmlNode::CopyTo( target ); + + target->version = version; + target->encoding = encoding; + target->standalone = standalone; +} + + +bool TiXmlDeclaration::Accept( TiXmlVisitor* visitor ) const +{ + return visitor->Visit( *this ); +} + + +TiXmlNode* TiXmlDeclaration::Clone() const +{ + TiXmlDeclaration* clone = new TiXmlDeclaration(); + + if ( !clone ) + return 0; + + CopyTo( clone ); + return clone; +} + + +void TiXmlUnknown::Print( FILE* cfile, int depth ) const +{ + for ( int i=0; i", value.c_str() ); +} + + +void TiXmlUnknown::CopyTo( TiXmlUnknown* target ) const +{ + TiXmlNode::CopyTo( target ); +} + + +bool TiXmlUnknown::Accept( TiXmlVisitor* visitor ) const +{ + return visitor->Visit( *this ); +} + + +TiXmlNode* TiXmlUnknown::Clone() const +{ + TiXmlUnknown* clone = new TiXmlUnknown(); + + if ( !clone ) + return 0; + + CopyTo( clone ); + return clone; +} + + +TiXmlAttributeSet::TiXmlAttributeSet() +{ + sentinel.next = &sentinel; + sentinel.prev = &sentinel; +} + + +TiXmlAttributeSet::~TiXmlAttributeSet() +{ + assert( sentinel.next == &sentinel ); + assert( sentinel.prev == &sentinel ); +} + + +void TiXmlAttributeSet::Add( TiXmlAttribute* addMe ) +{ + #ifdef TIXML_USE_STL + assert( !Find( TIXML_STRING( addMe->Name() ) ) ); // Shouldn't be multiply adding to the set. + #else + assert( !Find( addMe->Name() ) ); // Shouldn't be multiply adding to the set. + #endif + + addMe->next = &sentinel; + addMe->prev = sentinel.prev; + + sentinel.prev->next = addMe; + sentinel.prev = addMe; +} + +void TiXmlAttributeSet::Remove( TiXmlAttribute* removeMe ) +{ + TiXmlAttribute* node; + + for( node = sentinel.next; node != &sentinel; node = node->next ) + { + if ( node == removeMe ) + { + node->prev->next = node->next; + node->next->prev = node->prev; + node->next = 0; + node->prev = 0; + return; + } + } + assert( 0 ); // we tried to remove a non-linked attribute. +} + + +#ifdef TIXML_USE_STL +TiXmlAttribute* TiXmlAttributeSet::Find( const std::string& name ) const +{ + for( TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next ) + { + if ( node->name == name ) + return node; + } + return 0; +} + +TiXmlAttribute* TiXmlAttributeSet::FindOrCreate( const std::string& _name ) +{ + TiXmlAttribute* attrib = Find( _name ); + if ( !attrib ) { + attrib = new TiXmlAttribute(); + Add( attrib ); + attrib->SetName( _name ); + } + return attrib; +} +#endif + + +TiXmlAttribute* TiXmlAttributeSet::Find( const char* name ) const +{ + for( TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next ) + { + if ( strcmp( node->name.c_str(), name ) == 0 ) + return node; + } + return 0; +} + + +TiXmlAttribute* TiXmlAttributeSet::FindOrCreate( const char* _name ) +{ + TiXmlAttribute* attrib = Find( _name ); + if ( !attrib ) { + attrib = new TiXmlAttribute(); + Add( attrib ); + attrib->SetName( _name ); + } + return attrib; +} + + +#ifdef TIXML_USE_STL +std::istream& operator>> (std::istream & in, TiXmlNode & base) +{ + TIXML_STRING tag; + tag.reserve( 8 * 1000 ); + base.StreamIn( &in, &tag ); + + base.Parse( tag.c_str(), 0, TIXML_DEFAULT_ENCODING ); + return in; +} +#endif + + +#ifdef TIXML_USE_STL +std::ostream& operator<< (std::ostream & out, const TiXmlNode & base) +{ + TiXmlPrinter printer; + printer.SetStreamPrinting(); + base.Accept( &printer ); + out << printer.Str(); + + return out; +} + + +std::string& operator<< (std::string& out, const TiXmlNode& base ) +{ + TiXmlPrinter printer; + printer.SetStreamPrinting(); + base.Accept( &printer ); + out.append( printer.Str() ); + + return out; +} +#endif + + +TiXmlHandle TiXmlHandle::FirstChild() const +{ + if ( node ) + { + TiXmlNode* child = node->FirstChild(); + if ( child ) + return TiXmlHandle( child ); + } + return TiXmlHandle( 0 ); +} + + +TiXmlHandle TiXmlHandle::FirstChild( const char * value ) const +{ + if ( node ) + { + TiXmlNode* child = node->FirstChild( value ); + if ( child ) + return TiXmlHandle( child ); + } + return TiXmlHandle( 0 ); +} + + +TiXmlHandle TiXmlHandle::FirstChildElement() const +{ + if ( node ) + { + TiXmlElement* child = node->FirstChildElement(); + if ( child ) + return TiXmlHandle( child ); + } + return TiXmlHandle( 0 ); +} + + +TiXmlHandle TiXmlHandle::FirstChildElement( const char * value ) const +{ + if ( node ) + { + TiXmlElement* child = node->FirstChildElement( value ); + if ( child ) + return TiXmlHandle( child ); + } + return TiXmlHandle( 0 ); +} + + +TiXmlHandle TiXmlHandle::Child( int count ) const +{ + if ( node ) + { + int i; + TiXmlNode* child = node->FirstChild(); + for ( i=0; + child && iNextSibling(), ++i ) + { + // nothing + } + if ( child ) + return TiXmlHandle( child ); + } + return TiXmlHandle( 0 ); +} + + +TiXmlHandle TiXmlHandle::Child( const char* value, int count ) const +{ + if ( node ) + { + int i; + TiXmlNode* child = node->FirstChild( value ); + for ( i=0; + child && iNextSibling( value ), ++i ) + { + // nothing + } + if ( child ) + return TiXmlHandle( child ); + } + return TiXmlHandle( 0 ); +} + + +TiXmlHandle TiXmlHandle::ChildElement( int count ) const +{ + if ( node ) + { + int i; + TiXmlElement* child = node->FirstChildElement(); + for ( i=0; + child && iNextSiblingElement(), ++i ) + { + // nothing + } + if ( child ) + return TiXmlHandle( child ); + } + return TiXmlHandle( 0 ); +} + + +TiXmlHandle TiXmlHandle::ChildElement( const char* value, int count ) const +{ + if ( node ) + { + int i; + TiXmlElement* child = node->FirstChildElement( value ); + for ( i=0; + child && iNextSiblingElement( value ), ++i ) + { + // nothing + } + if ( child ) + return TiXmlHandle( child ); + } + return TiXmlHandle( 0 ); +} + + +bool TiXmlPrinter::VisitEnter( const TiXmlDocument& ) +{ + return true; +} + +bool TiXmlPrinter::VisitExit( const TiXmlDocument& ) +{ + return true; +} + +bool TiXmlPrinter::VisitEnter( const TiXmlElement& element, const TiXmlAttribute* firstAttribute ) +{ + DoIndent(); + buffer += "<"; + buffer += element.Value(); + + for( const TiXmlAttribute* attrib = firstAttribute; attrib; attrib = attrib->Next() ) + { + buffer += " "; + attrib->Print( 0, 0, &buffer ); + } + + if ( !element.FirstChild() ) + { + buffer += " />"; + DoLineBreak(); + } + else + { + buffer += ">"; + if ( element.FirstChild()->ToText() + && element.LastChild() == element.FirstChild() + && element.FirstChild()->ToText()->CDATA() == false ) + { + simpleTextPrint = true; + // no DoLineBreak()! + } + else + { + DoLineBreak(); + } + } + ++depth; + return true; +} + + +bool TiXmlPrinter::VisitExit( const TiXmlElement& element ) +{ + --depth; + if ( !element.FirstChild() ) + { + // nothing. + } + else + { + if ( simpleTextPrint ) + { + simpleTextPrint = false; + } + else + { + DoIndent(); + } + buffer += ""; + DoLineBreak(); + } + return true; +} + + +bool TiXmlPrinter::Visit( const TiXmlText& text ) +{ + if ( text.CDATA() ) + { + DoIndent(); + buffer += ""; + DoLineBreak(); + } + else if ( simpleTextPrint ) + { + TIXML_STRING str; + TiXmlBase::EncodeString( text.ValueTStr(), &str ); + buffer += str; + } + else + { + DoIndent(); + TIXML_STRING str; + TiXmlBase::EncodeString( text.ValueTStr(), &str ); + buffer += str; + DoLineBreak(); + } + return true; +} + + +bool TiXmlPrinter::Visit( const TiXmlDeclaration& declaration ) +{ + DoIndent(); + declaration.Print( 0, 0, &buffer ); + DoLineBreak(); + return true; +} + + +bool TiXmlPrinter::Visit( const TiXmlComment& comment ) +{ + DoIndent(); + buffer += ""; + DoLineBreak(); + return true; +} + + +bool TiXmlPrinter::Visit( const TiXmlUnknown& unknown ) +{ + DoIndent(); + buffer += "<"; + buffer += unknown.Value(); + buffer += ">"; + DoLineBreak(); + return true; +} + diff --git a/connor_erp_mes/tinyxml.h b/connor_erp_mes/tinyxml.h new file mode 100644 index 0000000..a3589e5 --- /dev/null +++ b/connor_erp_mes/tinyxml.h @@ -0,0 +1,1805 @@ +/* +www.sourceforge.net/projects/tinyxml +Original code by Lee Thomason (www.grinninglizard.com) + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. +*/ + + +#ifndef TINYXML_INCLUDED +#define TINYXML_INCLUDED + +#ifdef _MSC_VER +#pragma warning( push ) +#pragma warning( disable : 4530 ) +#pragma warning( disable : 4786 ) +#endif + +#include +#include +#include +#include +#include + +// Help out windows: +#if defined( _DEBUG ) && !defined( DEBUG ) +#define DEBUG +#endif + +#ifdef TIXML_USE_STL + #include + #include + #include + #define TIXML_STRING std::string +#else + #include "tinystr.h" + #define TIXML_STRING TiXmlString +#endif + +// Deprecated library function hell. Compilers want to use the +// new safe versions. This probably doesn't fully address the problem, +// but it gets closer. There are too many compilers for me to fully +// test. If you get compilation troubles, undefine TIXML_SAFE +#define TIXML_SAFE + +#ifdef TIXML_SAFE + #if defined(_MSC_VER) && (_MSC_VER >= 1400 ) + // Microsoft visual studio, version 2005 and higher. + #define TIXML_SNPRINTF _snprintf_s + #define TIXML_SSCANF sscanf_s + #elif defined(_MSC_VER) && (_MSC_VER >= 1200 ) + // Microsoft visual studio, version 6 and higher. + //#pragma message( "Using _sn* functions." ) + #define TIXML_SNPRINTF _snprintf + #define TIXML_SSCANF sscanf + #elif defined(__GNUC__) && (__GNUC__ >= 3 ) + // GCC version 3 and higher.s + //#warning( "Using sn* functions." ) + #define TIXML_SNPRINTF snprintf + #define TIXML_SSCANF sscanf + #else + #define TIXML_SNPRINTF snprintf + #define TIXML_SSCANF sscanf + #endif +#endif + +class TiXmlDocument; +class TiXmlElement; +class TiXmlComment; +class TiXmlUnknown; +class TiXmlAttribute; +class TiXmlText; +class TiXmlDeclaration; +class TiXmlParsingData; + +const int TIXML_MAJOR_VERSION = 2; +const int TIXML_MINOR_VERSION = 6; +const int TIXML_PATCH_VERSION = 2; + +/* Internal structure for tracking location of items + in the XML file. +*/ +struct TiXmlCursor +{ + TiXmlCursor() { Clear(); } + void Clear() { row = col = -1; } + + int row; // 0 based. + int col; // 0 based. +}; + + +/** + Implements the interface to the "Visitor pattern" (see the Accept() method.) + If you call the Accept() method, it requires being passed a TiXmlVisitor + class to handle callbacks. For nodes that contain other nodes (Document, Element) + you will get called with a VisitEnter/VisitExit pair. Nodes that are always leaves + are simply called with Visit(). + + If you return 'true' from a Visit method, recursive parsing will continue. If you return + false, no children of this node or its sibilings will be Visited. + + All flavors of Visit methods have a default implementation that returns 'true' (continue + visiting). You need to only override methods that are interesting to you. + + Generally Accept() is called on the TiXmlDocument, although all nodes suppert Visiting. + + You should never change the document from a callback. + + @sa TiXmlNode::Accept() +*/ +class TiXmlVisitor +{ +public: + virtual ~TiXmlVisitor() {} + + /// Visit a document. + virtual bool VisitEnter( const TiXmlDocument& /*doc*/ ) { return true; } + /// Visit a document. + virtual bool VisitExit( const TiXmlDocument& /*doc*/ ) { return true; } + + /// Visit an element. + virtual bool VisitEnter( const TiXmlElement& /*element*/, const TiXmlAttribute* /*firstAttribute*/ ) { return true; } + /// Visit an element. + virtual bool VisitExit( const TiXmlElement& /*element*/ ) { return true; } + + /// Visit a declaration + virtual bool Visit( const TiXmlDeclaration& /*declaration*/ ) { return true; } + /// Visit a text node + virtual bool Visit( const TiXmlText& /*text*/ ) { return true; } + /// Visit a comment node + virtual bool Visit( const TiXmlComment& /*comment*/ ) { return true; } + /// Visit an unknown node + virtual bool Visit( const TiXmlUnknown& /*unknown*/ ) { return true; } +}; + +// Only used by Attribute::Query functions +enum +{ + TIXML_SUCCESS, + TIXML_NO_ATTRIBUTE, + TIXML_WRONG_TYPE +}; + + +// Used by the parsing routines. +enum TiXmlEncoding +{ + TIXML_ENCODING_UNKNOWN, + TIXML_ENCODING_UTF8, + TIXML_ENCODING_LEGACY +}; + +const TiXmlEncoding TIXML_DEFAULT_ENCODING = TIXML_ENCODING_UNKNOWN; + +/** TiXmlBase is a base class for every class in TinyXml. + It does little except to establish that TinyXml classes + can be printed and provide some utility functions. + + In XML, the document and elements can contain + other elements and other types of nodes. + + @verbatim + A Document can contain: Element (container or leaf) + Comment (leaf) + Unknown (leaf) + Declaration( leaf ) + + An Element can contain: Element (container or leaf) + Text (leaf) + Attributes (not on tree) + Comment (leaf) + Unknown (leaf) + + A Decleration contains: Attributes (not on tree) + @endverbatim +*/ +class TiXmlBase +{ + friend class TiXmlNode; + friend class TiXmlElement; + friend class TiXmlDocument; + +public: + TiXmlBase() : userData(0) {} + virtual ~TiXmlBase() {} + + /** All TinyXml classes can print themselves to a filestream + or the string class (TiXmlString in non-STL mode, std::string + in STL mode.) Either or both cfile and str can be null. + + This is a formatted print, and will insert + tabs and newlines. + + (For an unformatted stream, use the << operator.) + */ + virtual void Print( FILE* cfile, int depth ) const = 0; + + /** The world does not agree on whether white space should be kept or + not. In order to make everyone happy, these global, static functions + are provided to set whether or not TinyXml will condense all white space + into a single space or not. The default is to condense. Note changing this + value is not thread safe. + */ + static void SetCondenseWhiteSpace( bool condense ) { condenseWhiteSpace = condense; } + + /// Return the current white space setting. + static bool IsWhiteSpaceCondensed() { return condenseWhiteSpace; } + + /** Return the position, in the original source file, of this node or attribute. + The row and column are 1-based. (That is the first row and first column is + 1,1). If the returns values are 0 or less, then the parser does not have + a row and column value. + + Generally, the row and column value will be set when the TiXmlDocument::Load(), + TiXmlDocument::LoadFile(), or any TiXmlNode::Parse() is called. It will NOT be set + when the DOM was created from operator>>. + + The values reflect the initial load. Once the DOM is modified programmatically + (by adding or changing nodes and attributes) the new values will NOT update to + reflect changes in the document. + + There is a minor performance cost to computing the row and column. Computation + can be disabled if TiXmlDocument::SetTabSize() is called with 0 as the value. + + @sa TiXmlDocument::SetTabSize() + */ + int Row() const { return location.row + 1; } + int Column() const { return location.col + 1; } ///< See Row() + + void SetUserData( void* user ) { userData = user; } ///< Set a pointer to arbitrary user data. + void* GetUserData() { return userData; } ///< Get a pointer to arbitrary user data. + const void* GetUserData() const { return userData; } ///< Get a pointer to arbitrary user data. + + // Table that returs, for a given lead byte, the total number of bytes + // in the UTF-8 sequence. + static const int utf8ByteTable[256]; + + virtual const char* Parse( const char* p, + TiXmlParsingData* data, + TiXmlEncoding encoding /*= TIXML_ENCODING_UNKNOWN */ ) = 0; + + /** Expands entities in a string. Note this should not contian the tag's '<', '>', etc, + or they will be transformed into entities! + */ + static void EncodeString( const TIXML_STRING& str, TIXML_STRING* out ); + + enum + { + TIXML_NO_ERROR = 0, + TIXML_ERROR, + TIXML_ERROR_OPENING_FILE, + TIXML_ERROR_PARSING_ELEMENT, + TIXML_ERROR_FAILED_TO_READ_ELEMENT_NAME, + TIXML_ERROR_READING_ELEMENT_VALUE, + TIXML_ERROR_READING_ATTRIBUTES, + TIXML_ERROR_PARSING_EMPTY, + TIXML_ERROR_READING_END_TAG, + TIXML_ERROR_PARSING_UNKNOWN, + TIXML_ERROR_PARSING_COMMENT, + TIXML_ERROR_PARSING_DECLARATION, + TIXML_ERROR_DOCUMENT_EMPTY, + TIXML_ERROR_EMBEDDED_NULL, + TIXML_ERROR_PARSING_CDATA, + TIXML_ERROR_DOCUMENT_TOP_ONLY, + + TIXML_ERROR_STRING_COUNT + }; + +protected: + + static const char* SkipWhiteSpace( const char*, TiXmlEncoding encoding ); + + inline static bool IsWhiteSpace( char c ) + { + return ( isspace( (unsigned char) c ) || c == '\n' || c == '\r' ); + } + inline static bool IsWhiteSpace( int c ) + { + if ( c < 256 ) + return IsWhiteSpace( (char) c ); + return false; // Again, only truly correct for English/Latin...but usually works. + } + + #ifdef TIXML_USE_STL + static bool StreamWhiteSpace( std::istream * in, TIXML_STRING * tag ); + static bool StreamTo( std::istream * in, int character, TIXML_STRING * tag ); + #endif + + /* Reads an XML name into the string provided. Returns + a pointer just past the last character of the name, + or 0 if the function has an error. + */ + static const char* ReadName( const char* p, TIXML_STRING* name, TiXmlEncoding encoding ); + + /* Reads text. Returns a pointer past the given end tag. + Wickedly complex options, but it keeps the (sensitive) code in one place. + */ + static const char* ReadText( const char* in, // where to start + TIXML_STRING* text, // the string read + bool ignoreWhiteSpace, // whether to keep the white space + const char* endTag, // what ends this text + bool ignoreCase, // whether to ignore case in the end tag + TiXmlEncoding encoding ); // the current encoding + + // If an entity has been found, transform it into a character. + static const char* GetEntity( const char* in, char* value, int* length, TiXmlEncoding encoding ); + + // Get a character, while interpreting entities. + // The length can be from 0 to 4 bytes. + inline static const char* GetChar( const char* p, char* _value, int* length, TiXmlEncoding encoding ) + { + assert( p ); + if ( encoding == TIXML_ENCODING_UTF8 ) + { + *length = utf8ByteTable[ *((const unsigned char*)p) ]; + assert( *length >= 0 && *length < 5 ); + } + else + { + *length = 1; + } + + if ( *length == 1 ) + { + if ( *p == '&' ) + return GetEntity( p, _value, length, encoding ); + *_value = *p; + return p+1; + } + else if ( *length ) + { + //strncpy( _value, p, *length ); // lots of compilers don't like this function (unsafe), + // and the null terminator isn't needed + for( int i=0; p[i] && i<*length; ++i ) { + _value[i] = p[i]; + } + return p + (*length); + } + else + { + // Not valid text. + return 0; + } + } + + // Return true if the next characters in the stream are any of the endTag sequences. + // Ignore case only works for english, and should only be relied on when comparing + // to English words: StringEqual( p, "version", true ) is fine. + static bool StringEqual( const char* p, + const char* endTag, + bool ignoreCase, + TiXmlEncoding encoding ); + + static const char* errorString[ TIXML_ERROR_STRING_COUNT ]; + + TiXmlCursor location; + + /// Field containing a generic user pointer + void* userData; + + // None of these methods are reliable for any language except English. + // Good for approximation, not great for accuracy. + static int IsAlpha( unsigned char anyByte, TiXmlEncoding encoding ); + static int IsAlphaNum( unsigned char anyByte, TiXmlEncoding encoding ); + inline static int ToLower( int v, TiXmlEncoding encoding ) + { + if ( encoding == TIXML_ENCODING_UTF8 ) + { + if ( v < 128 ) return tolower( v ); + return v; + } + else + { + return tolower( v ); + } + } + static void ConvertUTF32ToUTF8( unsigned long input, char* output, int* length ); + +private: + TiXmlBase( const TiXmlBase& ); // not implemented. + void operator=( const TiXmlBase& base ); // not allowed. + + struct Entity + { + const char* str; + unsigned int strLength; + char chr; + }; + enum + { + NUM_ENTITY = 5, + MAX_ENTITY_LENGTH = 6 + + }; + static Entity entity[ NUM_ENTITY ]; + static bool condenseWhiteSpace; +}; + + +/** The parent class for everything in the Document Object Model. + (Except for attributes). + Nodes have siblings, a parent, and children. A node can be + in a document, or stand on its own. The type of a TiXmlNode + can be queried, and it can be cast to its more defined type. +*/ +class TiXmlNode : public TiXmlBase +{ + friend class TiXmlDocument; + friend class TiXmlElement; + +public: + #ifdef TIXML_USE_STL + + /** An input stream operator, for every class. Tolerant of newlines and + formatting, but doesn't expect them. + */ + friend std::istream& operator >> (std::istream& in, TiXmlNode& base); + + /** An output stream operator, for every class. Note that this outputs + without any newlines or formatting, as opposed to Print(), which + includes tabs and new lines. + + The operator<< and operator>> are not completely symmetric. Writing + a node to a stream is very well defined. You'll get a nice stream + of output, without any extra whitespace or newlines. + + But reading is not as well defined. (As it always is.) If you create + a TiXmlElement (for example) and read that from an input stream, + the text needs to define an element or junk will result. This is + true of all input streams, but it's worth keeping in mind. + + A TiXmlDocument will read nodes until it reads a root element, and + all the children of that root element. + */ + friend std::ostream& operator<< (std::ostream& out, const TiXmlNode& base); + + /// Appends the XML node or attribute to a std::string. + friend std::string& operator<< (std::string& out, const TiXmlNode& base ); + + #endif + + /** The types of XML nodes supported by TinyXml. (All the + unsupported types are picked up by UNKNOWN.) + */ + enum NodeType + { + TINYXML_DOCUMENT, + TINYXML_ELEMENT, + TINYXML_COMMENT, + TINYXML_UNKNOWN, + TINYXML_TEXT, + TINYXML_DECLARATION, + TINYXML_TYPECOUNT + }; + + virtual ~TiXmlNode(); + + /** The meaning of 'value' changes for the specific type of + TiXmlNode. + @verbatim + Document: filename of the xml file + Element: name of the element + Comment: the comment text + Unknown: the tag contents + Text: the text string + @endverbatim + + The subclasses will wrap this function. + */ + const char *Value() const { return value.c_str (); } + + #ifdef TIXML_USE_STL + /** Return Value() as a std::string. If you only use STL, + this is more efficient than calling Value(). + Only available in STL mode. + */ + const std::string& ValueStr() const { return value; } + #endif + + const TIXML_STRING& ValueTStr() const { return value; } + + /** Changes the value of the node. Defined as: + @verbatim + Document: filename of the xml file + Element: name of the element + Comment: the comment text + Unknown: the tag contents + Text: the text string + @endverbatim + */ + void SetValue(const char * _value) { value = _value;} + + #ifdef TIXML_USE_STL + /// STL std::string form. + void SetValue( const std::string& _value ) { value = _value; } + #endif + + /// Delete all the children of this node. Does not affect 'this'. + void Clear(); + + /// One step up the DOM. + TiXmlNode* Parent() { return parent; } + const TiXmlNode* Parent() const { return parent; } + + const TiXmlNode* FirstChild() const { return firstChild; } ///< The first child of this node. Will be null if there are no children. + TiXmlNode* FirstChild() { return firstChild; } + const TiXmlNode* FirstChild( const char * value ) const; ///< The first child of this node with the matching 'value'. Will be null if none found. + /// The first child of this node with the matching 'value'. Will be null if none found. + TiXmlNode* FirstChild( const char * _value ) { + // Call through to the const version - safe since nothing is changed. Exiting syntax: cast this to a const (always safe) + // call the method, cast the return back to non-const. + return const_cast< TiXmlNode* > ((const_cast< const TiXmlNode* >(this))->FirstChild( _value )); + } + const TiXmlNode* LastChild() const { return lastChild; } /// The last child of this node. Will be null if there are no children. + TiXmlNode* LastChild() { return lastChild; } + + const TiXmlNode* LastChild( const char * value ) const; /// The last child of this node matching 'value'. Will be null if there are no children. + TiXmlNode* LastChild( const char * _value ) { + return const_cast< TiXmlNode* > ((const_cast< const TiXmlNode* >(this))->LastChild( _value )); + } + + #ifdef TIXML_USE_STL + const TiXmlNode* FirstChild( const std::string& _value ) const { return FirstChild (_value.c_str ()); } ///< STL std::string form. + TiXmlNode* FirstChild( const std::string& _value ) { return FirstChild (_value.c_str ()); } ///< STL std::string form. + const TiXmlNode* LastChild( const std::string& _value ) const { return LastChild (_value.c_str ()); } ///< STL std::string form. + TiXmlNode* LastChild( const std::string& _value ) { return LastChild (_value.c_str ()); } ///< STL std::string form. + #endif + + /** An alternate way to walk the children of a node. + One way to iterate over nodes is: + @verbatim + for( child = parent->FirstChild(); child; child = child->NextSibling() ) + @endverbatim + + IterateChildren does the same thing with the syntax: + @verbatim + child = 0; + while( child = parent->IterateChildren( child ) ) + @endverbatim + + IterateChildren takes the previous child as input and finds + the next one. If the previous child is null, it returns the + first. IterateChildren will return null when done. + */ + const TiXmlNode* IterateChildren( const TiXmlNode* previous ) const; + TiXmlNode* IterateChildren( const TiXmlNode* previous ) { + return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->IterateChildren( previous ) ); + } + + /// This flavor of IterateChildren searches for children with a particular 'value' + const TiXmlNode* IterateChildren( const char * value, const TiXmlNode* previous ) const; + TiXmlNode* IterateChildren( const char * _value, const TiXmlNode* previous ) { + return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->IterateChildren( _value, previous ) ); + } + + #ifdef TIXML_USE_STL + const TiXmlNode* IterateChildren( const std::string& _value, const TiXmlNode* previous ) const { return IterateChildren (_value.c_str (), previous); } ///< STL std::string form. + TiXmlNode* IterateChildren( const std::string& _value, const TiXmlNode* previous ) { return IterateChildren (_value.c_str (), previous); } ///< STL std::string form. + #endif + + /** Add a new node related to this. Adds a child past the LastChild. + Returns a pointer to the new object or NULL if an error occured. + */ + TiXmlNode* InsertEndChild( const TiXmlNode& addThis ); + + + /** Add a new node related to this. Adds a child past the LastChild. + + NOTE: the node to be added is passed by pointer, and will be + henceforth owned (and deleted) by tinyXml. This method is efficient + and avoids an extra copy, but should be used with care as it + uses a different memory model than the other insert functions. + + @sa InsertEndChild + */ + TiXmlNode* LinkEndChild( TiXmlNode* addThis ); + + /** Add a new node related to this. Adds a child before the specified child. + Returns a pointer to the new object or NULL if an error occured. + */ + TiXmlNode* InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis ); + + /** Add a new node related to this. Adds a child after the specified child. + Returns a pointer to the new object or NULL if an error occured. + */ + TiXmlNode* InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis ); + + /** Replace a child of this node. + Returns a pointer to the new object or NULL if an error occured. + */ + TiXmlNode* ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis ); + + /// Delete a child of this node. + bool RemoveChild( TiXmlNode* removeThis ); + + /// Navigate to a sibling node. + const TiXmlNode* PreviousSibling() const { return prev; } + TiXmlNode* PreviousSibling() { return prev; } + + /// Navigate to a sibling node. + const TiXmlNode* PreviousSibling( const char * ) const; + TiXmlNode* PreviousSibling( const char *_prev ) { + return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->PreviousSibling( _prev ) ); + } + + #ifdef TIXML_USE_STL + const TiXmlNode* PreviousSibling( const std::string& _value ) const { return PreviousSibling (_value.c_str ()); } ///< STL std::string form. + TiXmlNode* PreviousSibling( const std::string& _value ) { return PreviousSibling (_value.c_str ()); } ///< STL std::string form. + const TiXmlNode* NextSibling( const std::string& _value) const { return NextSibling (_value.c_str ()); } ///< STL std::string form. + TiXmlNode* NextSibling( const std::string& _value) { return NextSibling (_value.c_str ()); } ///< STL std::string form. + #endif + + /// Navigate to a sibling node. + const TiXmlNode* NextSibling() const { return next; } + TiXmlNode* NextSibling() { return next; } + + /// Navigate to a sibling node with the given 'value'. + const TiXmlNode* NextSibling( const char * ) const; + TiXmlNode* NextSibling( const char* _next ) { + return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->NextSibling( _next ) ); + } + + /** Convenience function to get through elements. + Calls NextSibling and ToElement. Will skip all non-Element + nodes. Returns 0 if there is not another element. + */ + const TiXmlElement* NextSiblingElement() const; + TiXmlElement* NextSiblingElement() { + return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->NextSiblingElement() ); + } + + /** Convenience function to get through elements. + Calls NextSibling and ToElement. Will skip all non-Element + nodes. Returns 0 if there is not another element. + */ + const TiXmlElement* NextSiblingElement( const char * ) const; + TiXmlElement* NextSiblingElement( const char *_next ) { + return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->NextSiblingElement( _next ) ); + } + + #ifdef TIXML_USE_STL + const TiXmlElement* NextSiblingElement( const std::string& _value) const { return NextSiblingElement (_value.c_str ()); } ///< STL std::string form. + TiXmlElement* NextSiblingElement( const std::string& _value) { return NextSiblingElement (_value.c_str ()); } ///< STL std::string form. + #endif + + /// Convenience function to get through elements. + const TiXmlElement* FirstChildElement() const; + TiXmlElement* FirstChildElement() { + return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->FirstChildElement() ); + } + + /// Convenience function to get through elements. + const TiXmlElement* FirstChildElement( const char * _value ) const; + TiXmlElement* FirstChildElement( const char * _value ) { + return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->FirstChildElement( _value ) ); + } + + #ifdef TIXML_USE_STL + const TiXmlElement* FirstChildElement( const std::string& _value ) const { return FirstChildElement (_value.c_str ()); } ///< STL std::string form. + TiXmlElement* FirstChildElement( const std::string& _value ) { return FirstChildElement (_value.c_str ()); } ///< STL std::string form. + #endif + + /** Query the type (as an enumerated value, above) of this node. + The possible types are: TINYXML_DOCUMENT, TINYXML_ELEMENT, TINYXML_COMMENT, + TINYXML_UNKNOWN, TINYXML_TEXT, and TINYXML_DECLARATION. + */ + int Type() const { return type; } + + /** Return a pointer to the Document this node lives in. + Returns null if not in a document. + */ + const TiXmlDocument* GetDocument() const; + TiXmlDocument* GetDocument() { + return const_cast< TiXmlDocument* >( (const_cast< const TiXmlNode* >(this))->GetDocument() ); + } + + /// Returns true if this node has no children. + bool NoChildren() const { return !firstChild; } + + virtual const TiXmlDocument* ToDocument() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + virtual const TiXmlElement* ToElement() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + virtual const TiXmlComment* ToComment() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + virtual const TiXmlUnknown* ToUnknown() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + virtual const TiXmlText* ToText() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + virtual const TiXmlDeclaration* ToDeclaration() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + + virtual TiXmlDocument* ToDocument() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + virtual TiXmlElement* ToElement() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + virtual TiXmlComment* ToComment() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + virtual TiXmlUnknown* ToUnknown() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + virtual TiXmlText* ToText() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + virtual TiXmlDeclaration* ToDeclaration() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + + /** Create an exact duplicate of this node and return it. The memory must be deleted + by the caller. + */ + virtual TiXmlNode* Clone() const = 0; + + /** Accept a hierchical visit the nodes in the TinyXML DOM. Every node in the + XML tree will be conditionally visited and the host will be called back + via the TiXmlVisitor interface. + + This is essentially a SAX interface for TinyXML. (Note however it doesn't re-parse + the XML for the callbacks, so the performance of TinyXML is unchanged by using this + interface versus any other.) + + The interface has been based on ideas from: + + - http://www.saxproject.org/ + - http://c2.com/cgi/wiki?HierarchicalVisitorPattern + + Which are both good references for "visiting". + + An example of using Accept(): + @verbatim + TiXmlPrinter printer; + tinyxmlDoc.Accept( &printer ); + const char* xmlcstr = printer.CStr(); + @endverbatim + */ + virtual bool Accept( TiXmlVisitor* visitor ) const = 0; + +protected: + TiXmlNode( NodeType _type ); + + // Copy to the allocated object. Shared functionality between Clone, Copy constructor, + // and the assignment operator. + void CopyTo( TiXmlNode* target ) const; + + #ifdef TIXML_USE_STL + // The real work of the input operator. + virtual void StreamIn( std::istream* in, TIXML_STRING* tag ) = 0; + #endif + + // Figure out what is at *p, and parse it. Returns null if it is not an xml node. + TiXmlNode* Identify( const char* start, TiXmlEncoding encoding ); + + TiXmlNode* parent; + NodeType type; + + TiXmlNode* firstChild; + TiXmlNode* lastChild; + + TIXML_STRING value; + + TiXmlNode* prev; + TiXmlNode* next; + +private: + TiXmlNode( const TiXmlNode& ); // not implemented. + void operator=( const TiXmlNode& base ); // not allowed. +}; + + +/** An attribute is a name-value pair. Elements have an arbitrary + number of attributes, each with a unique name. + + @note The attributes are not TiXmlNodes, since they are not + part of the tinyXML document object model. There are other + suggested ways to look at this problem. +*/ +class TiXmlAttribute : public TiXmlBase +{ + friend class TiXmlAttributeSet; + +public: + /// Construct an empty attribute. + TiXmlAttribute() : TiXmlBase() + { + document = 0; + prev = next = 0; + } + + #ifdef TIXML_USE_STL + /// std::string constructor. + TiXmlAttribute( const std::string& _name, const std::string& _value ) + { + name = _name; + value = _value; + document = 0; + prev = next = 0; + } + #endif + + /// Construct an attribute with a name and value. + TiXmlAttribute( const char * _name, const char * _value ) + { + name = _name; + value = _value; + document = 0; + prev = next = 0; + } + + const char* Name() const { return name.c_str(); } ///< Return the name of this attribute. + const char* Value() const { return value.c_str(); } ///< Return the value of this attribute. + #ifdef TIXML_USE_STL + const std::string& ValueStr() const { return value; } ///< Return the value of this attribute. + #endif + int IntValue() const; ///< Return the value of this attribute, converted to an integer. + double DoubleValue() const; ///< Return the value of this attribute, converted to a double. + + // Get the tinyxml string representation + const TIXML_STRING& NameTStr() const { return name; } + + /** QueryIntValue examines the value string. It is an alternative to the + IntValue() method with richer error checking. + If the value is an integer, it is stored in 'value' and + the call returns TIXML_SUCCESS. If it is not + an integer, it returns TIXML_WRONG_TYPE. + + A specialized but useful call. Note that for success it returns 0, + which is the opposite of almost all other TinyXml calls. + */ + int QueryIntValue( int* _value ) const; + /// QueryDoubleValue examines the value string. See QueryIntValue(). + int QueryDoubleValue( double* _value ) const; + + void SetName( const char* _name ) { name = _name; } ///< Set the name of this attribute. + void SetValue( const char* _value ) { value = _value; } ///< Set the value. + + void SetIntValue( int _value ); ///< Set the value from an integer. + void SetDoubleValue( double _value ); ///< Set the value from a double. + + #ifdef TIXML_USE_STL + /// STL std::string form. + void SetName( const std::string& _name ) { name = _name; } + /// STL std::string form. + void SetValue( const std::string& _value ) { value = _value; } + #endif + + /// Get the next sibling attribute in the DOM. Returns null at end. + const TiXmlAttribute* Next() const; + TiXmlAttribute* Next() { + return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttribute* >(this))->Next() ); + } + + /// Get the previous sibling attribute in the DOM. Returns null at beginning. + const TiXmlAttribute* Previous() const; + TiXmlAttribute* Previous() { + return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttribute* >(this))->Previous() ); + } + + bool operator==( const TiXmlAttribute& rhs ) const { return rhs.name == name; } + bool operator<( const TiXmlAttribute& rhs ) const { return name < rhs.name; } + bool operator>( const TiXmlAttribute& rhs ) const { return name > rhs.name; } + + /* Attribute parsing starts: first letter of the name + returns: the next char after the value end quote + */ + virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); + + // Prints this Attribute to a FILE stream. + virtual void Print( FILE* cfile, int depth ) const { + Print( cfile, depth, 0 ); + } + void Print( FILE* cfile, int depth, TIXML_STRING* str ) const; + + // [internal use] + // Set the document pointer so the attribute can report errors. + void SetDocument( TiXmlDocument* doc ) { document = doc; } + +private: + TiXmlAttribute( const TiXmlAttribute& ); // not implemented. + void operator=( const TiXmlAttribute& base ); // not allowed. + + TiXmlDocument* document; // A pointer back to a document, for error reporting. + TIXML_STRING name; + TIXML_STRING value; + TiXmlAttribute* prev; + TiXmlAttribute* next; +}; + + +/* A class used to manage a group of attributes. + It is only used internally, both by the ELEMENT and the DECLARATION. + + The set can be changed transparent to the Element and Declaration + classes that use it, but NOT transparent to the Attribute + which has to implement a next() and previous() method. Which makes + it a bit problematic and prevents the use of STL. + + This version is implemented with circular lists because: + - I like circular lists + - it demonstrates some independence from the (typical) doubly linked list. +*/ +class TiXmlAttributeSet +{ +public: + TiXmlAttributeSet(); + ~TiXmlAttributeSet(); + + void Add( TiXmlAttribute* attribute ); + void Remove( TiXmlAttribute* attribute ); + + const TiXmlAttribute* First() const { return ( sentinel.next == &sentinel ) ? 0 : sentinel.next; } + TiXmlAttribute* First() { return ( sentinel.next == &sentinel ) ? 0 : sentinel.next; } + const TiXmlAttribute* Last() const { return ( sentinel.prev == &sentinel ) ? 0 : sentinel.prev; } + TiXmlAttribute* Last() { return ( sentinel.prev == &sentinel ) ? 0 : sentinel.prev; } + + TiXmlAttribute* Find( const char* _name ) const; + TiXmlAttribute* FindOrCreate( const char* _name ); + +# ifdef TIXML_USE_STL + TiXmlAttribute* Find( const std::string& _name ) const; + TiXmlAttribute* FindOrCreate( const std::string& _name ); +# endif + + +private: + //*ME: Because of hidden/disabled copy-construktor in TiXmlAttribute (sentinel-element), + //*ME: this class must be also use a hidden/disabled copy-constructor !!! + TiXmlAttributeSet( const TiXmlAttributeSet& ); // not allowed + void operator=( const TiXmlAttributeSet& ); // not allowed (as TiXmlAttribute) + + TiXmlAttribute sentinel; +}; + + +/** The element is a container class. It has a value, the element name, + and can contain other elements, text, comments, and unknowns. + Elements also contain an arbitrary number of attributes. +*/ +class TiXmlElement : public TiXmlNode +{ +public: + /// Construct an element. + TiXmlElement (const char * in_value); + + #ifdef TIXML_USE_STL + /// std::string constructor. + TiXmlElement( const std::string& _value ); + #endif + + TiXmlElement( const TiXmlElement& ); + + TiXmlElement& operator=( const TiXmlElement& base ); + + virtual ~TiXmlElement(); + + /** Given an attribute name, Attribute() returns the value + for the attribute of that name, or null if none exists. + */ + const char* Attribute( const char* name ) const; + + /** Given an attribute name, Attribute() returns the value + for the attribute of that name, or null if none exists. + If the attribute exists and can be converted to an integer, + the integer value will be put in the return 'i', if 'i' + is non-null. + */ + const char* Attribute( const char* name, int* i ) const; + + /** Given an attribute name, Attribute() returns the value + for the attribute of that name, or null if none exists. + If the attribute exists and can be converted to an double, + the double value will be put in the return 'd', if 'd' + is non-null. + */ + const char* Attribute( const char* name, double* d ) const; + + /** QueryIntAttribute examines the attribute - it is an alternative to the + Attribute() method with richer error checking. + If the attribute is an integer, it is stored in 'value' and + the call returns TIXML_SUCCESS. If it is not + an integer, it returns TIXML_WRONG_TYPE. If the attribute + does not exist, then TIXML_NO_ATTRIBUTE is returned. + */ + int QueryIntAttribute( const char* name, int* _value ) const; + /// QueryUnsignedAttribute examines the attribute - see QueryIntAttribute(). + int QueryUnsignedAttribute( const char* name, unsigned* _value ) const; + /** QueryBoolAttribute examines the attribute - see QueryIntAttribute(). + Note that '1', 'true', or 'yes' are considered true, while '0', 'false' + and 'no' are considered false. + */ + int QueryBoolAttribute( const char* name, bool* _value ) const; + /// QueryDoubleAttribute examines the attribute - see QueryIntAttribute(). + int QueryDoubleAttribute( const char* name, double* _value ) const; + /// QueryFloatAttribute examines the attribute - see QueryIntAttribute(). + int QueryFloatAttribute( const char* name, float* _value ) const { + double d; + int result = QueryDoubleAttribute( name, &d ); + if ( result == TIXML_SUCCESS ) { + *_value = (float)d; + } + return result; + } + + #ifdef TIXML_USE_STL + /// QueryStringAttribute examines the attribute - see QueryIntAttribute(). + int QueryStringAttribute( const char* name, std::string* _value ) const { + const char* cstr = Attribute( name ); + if ( cstr ) { + *_value = std::string( cstr ); + return TIXML_SUCCESS; + } + return TIXML_NO_ATTRIBUTE; + } + + /** Template form of the attribute query which will try to read the + attribute into the specified type. Very easy, very powerful, but + be careful to make sure to call this with the correct type. + + NOTE: This method doesn't work correctly for 'string' types that contain spaces. + + @return TIXML_SUCCESS, TIXML_WRONG_TYPE, or TIXML_NO_ATTRIBUTE + */ + template< typename T > int QueryValueAttribute( const std::string& name, T* outValue ) const + { + const TiXmlAttribute* node = attributeSet.Find( name ); + if ( !node ) + return TIXML_NO_ATTRIBUTE; + + std::stringstream sstream( node->ValueStr() ); + sstream >> *outValue; + if ( !sstream.fail() ) + return TIXML_SUCCESS; + return TIXML_WRONG_TYPE; + } + + int QueryValueAttribute( const std::string& name, std::string* outValue ) const + { + const TiXmlAttribute* node = attributeSet.Find( name ); + if ( !node ) + return TIXML_NO_ATTRIBUTE; + *outValue = node->ValueStr(); + return TIXML_SUCCESS; + } + #endif + + /** Sets an attribute of name to a given value. The attribute + will be created if it does not exist, or changed if it does. + */ + void SetAttribute( const char* name, const char * _value ); + + #ifdef TIXML_USE_STL + const std::string* Attribute( const std::string& name ) const; + const std::string* Attribute( const std::string& name, int* i ) const; + const std::string* Attribute( const std::string& name, double* d ) const; + int QueryIntAttribute( const std::string& name, int* _value ) const; + int QueryDoubleAttribute( const std::string& name, double* _value ) const; + + /// STL std::string form. + void SetAttribute( const std::string& name, const std::string& _value ); + ///< STL std::string form. + void SetAttribute( const std::string& name, int _value ); + ///< STL std::string form. + void SetDoubleAttribute( const std::string& name, double value ); + #endif + + /** Sets an attribute of name to a given value. The attribute + will be created if it does not exist, or changed if it does. + */ + void SetAttribute( const char * name, int value ); + + /** Sets an attribute of name to a given value. The attribute + will be created if it does not exist, or changed if it does. + */ + void SetDoubleAttribute( const char * name, double value ); + + /** Deletes an attribute with the given name. + */ + void RemoveAttribute( const char * name ); + #ifdef TIXML_USE_STL + void RemoveAttribute( const std::string& name ) { RemoveAttribute (name.c_str ()); } ///< STL std::string form. + #endif + + const TiXmlAttribute* FirstAttribute() const { return attributeSet.First(); } ///< Access the first attribute in this element. + TiXmlAttribute* FirstAttribute() { return attributeSet.First(); } + const TiXmlAttribute* LastAttribute() const { return attributeSet.Last(); } ///< Access the last attribute in this element. + TiXmlAttribute* LastAttribute() { return attributeSet.Last(); } + + /** Convenience function for easy access to the text inside an element. Although easy + and concise, GetText() is limited compared to getting the TiXmlText child + and accessing it directly. + + If the first child of 'this' is a TiXmlText, the GetText() + returns the character string of the Text node, else null is returned. + + This is a convenient method for getting the text of simple contained text: + @verbatim + This is text + const char* str = fooElement->GetText(); + @endverbatim + + 'str' will be a pointer to "This is text". + + Note that this function can be misleading. If the element foo was created from + this XML: + @verbatim + This is text + @endverbatim + + then the value of str would be null. The first child node isn't a text node, it is + another element. From this XML: + @verbatim + This is text + @endverbatim + GetText() will return "This is ". + + WARNING: GetText() accesses a child node - don't become confused with the + similarly named TiXmlHandle::Text() and TiXmlNode::ToText() which are + safe type casts on the referenced node. + */ + const char* GetText() const; + + /// Creates a new Element and returns it - the returned element is a copy. + virtual TiXmlNode* Clone() const; + // Print the Element to a FILE stream. + virtual void Print( FILE* cfile, int depth ) const; + + /* Attribtue parsing starts: next char past '<' + returns: next char past '>' + */ + virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); + + virtual const TiXmlElement* ToElement() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + virtual TiXmlElement* ToElement() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + + /** Walk the XML tree visiting this node and all of its children. + */ + virtual bool Accept( TiXmlVisitor* visitor ) const; + +protected: + + void CopyTo( TiXmlElement* target ) const; + void ClearThis(); // like clear, but initializes 'this' object as well + + // Used to be public [internal use] + #ifdef TIXML_USE_STL + virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); + #endif + /* [internal use] + Reads the "value" of the element -- another element, or text. + This should terminate with the current end tag. + */ + const char* ReadValue( const char* in, TiXmlParsingData* prevData, TiXmlEncoding encoding ); + +private: + TiXmlAttributeSet attributeSet; +}; + + +/** An XML comment. +*/ +class TiXmlComment : public TiXmlNode +{ +public: + /// Constructs an empty comment. + TiXmlComment() : TiXmlNode( TiXmlNode::TINYXML_COMMENT ) {} + /// Construct a comment from text. + TiXmlComment( const char* _value ) : TiXmlNode( TiXmlNode::TINYXML_COMMENT ) { + SetValue( _value ); + } + TiXmlComment( const TiXmlComment& ); + TiXmlComment& operator=( const TiXmlComment& base ); + + virtual ~TiXmlComment() {} + + /// Returns a copy of this Comment. + virtual TiXmlNode* Clone() const; + // Write this Comment to a FILE stream. + virtual void Print( FILE* cfile, int depth ) const; + + /* Attribtue parsing starts: at the ! of the !-- + returns: next char past '>' + */ + virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); + + virtual const TiXmlComment* ToComment() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + virtual TiXmlComment* ToComment() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + + /** Walk the XML tree visiting this node and all of its children. + */ + virtual bool Accept( TiXmlVisitor* visitor ) const; + +protected: + void CopyTo( TiXmlComment* target ) const; + + // used to be public + #ifdef TIXML_USE_STL + virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); + #endif +// virtual void StreamOut( TIXML_OSTREAM * out ) const; + +private: + +}; + + +/** XML text. A text node can have 2 ways to output the next. "normal" output + and CDATA. It will default to the mode it was parsed from the XML file and + you generally want to leave it alone, but you can change the output mode with + SetCDATA() and query it with CDATA(). +*/ +class TiXmlText : public TiXmlNode +{ + friend class TiXmlElement; +public: + /** Constructor for text element. By default, it is treated as + normal, encoded text. If you want it be output as a CDATA text + element, set the parameter _cdata to 'true' + */ + TiXmlText (const char * initValue ) : TiXmlNode (TiXmlNode::TINYXML_TEXT) + { + SetValue( initValue ); + cdata = false; + } + virtual ~TiXmlText() {} + + #ifdef TIXML_USE_STL + /// Constructor. + TiXmlText( const std::string& initValue ) : TiXmlNode (TiXmlNode::TINYXML_TEXT) + { + SetValue( initValue ); + cdata = false; + } + #endif + + TiXmlText( const TiXmlText& copy ) : TiXmlNode( TiXmlNode::TINYXML_TEXT ) { copy.CopyTo( this ); } + TiXmlText& operator=( const TiXmlText& base ) { base.CopyTo( this ); return *this; } + + // Write this text object to a FILE stream. + virtual void Print( FILE* cfile, int depth ) const; + + /// Queries whether this represents text using a CDATA section. + bool CDATA() const { return cdata; } + /// Turns on or off a CDATA representation of text. + void SetCDATA( bool _cdata ) { cdata = _cdata; } + + virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); + + virtual const TiXmlText* ToText() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + virtual TiXmlText* ToText() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + + /** Walk the XML tree visiting this node and all of its children. + */ + virtual bool Accept( TiXmlVisitor* content ) const; + +protected : + /// [internal use] Creates a new Element and returns it. + virtual TiXmlNode* Clone() const; + void CopyTo( TiXmlText* target ) const; + + bool Blank() const; // returns true if all white space and new lines + // [internal use] + #ifdef TIXML_USE_STL + virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); + #endif + +private: + bool cdata; // true if this should be input and output as a CDATA style text element +}; + + +/** In correct XML the declaration is the first entry in the file. + @verbatim + + @endverbatim + + TinyXml will happily read or write files without a declaration, + however. There are 3 possible attributes to the declaration: + version, encoding, and standalone. + + Note: In this version of the code, the attributes are + handled as special cases, not generic attributes, simply + because there can only be at most 3 and they are always the same. +*/ +class TiXmlDeclaration : public TiXmlNode +{ +public: + /// Construct an empty declaration. + TiXmlDeclaration() : TiXmlNode( TiXmlNode::TINYXML_DECLARATION ) {} + +#ifdef TIXML_USE_STL + /// Constructor. + TiXmlDeclaration( const std::string& _version, + const std::string& _encoding, + const std::string& _standalone ); +#endif + + /// Construct. + TiXmlDeclaration( const char* _version, + const char* _encoding, + const char* _standalone ); + + TiXmlDeclaration( const TiXmlDeclaration& copy ); + TiXmlDeclaration& operator=( const TiXmlDeclaration& copy ); + + virtual ~TiXmlDeclaration() {} + + /// Version. Will return an empty string if none was found. + const char *Version() const { return version.c_str (); } + /// Encoding. Will return an empty string if none was found. + const char *Encoding() const { return encoding.c_str (); } + /// Is this a standalone document? + const char *Standalone() const { return standalone.c_str (); } + + /// Creates a copy of this Declaration and returns it. + virtual TiXmlNode* Clone() const; + // Print this declaration to a FILE stream. + virtual void Print( FILE* cfile, int depth, TIXML_STRING* str ) const; + virtual void Print( FILE* cfile, int depth ) const { + Print( cfile, depth, 0 ); + } + + virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); + + virtual const TiXmlDeclaration* ToDeclaration() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + virtual TiXmlDeclaration* ToDeclaration() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + + /** Walk the XML tree visiting this node and all of its children. + */ + virtual bool Accept( TiXmlVisitor* visitor ) const; + +protected: + void CopyTo( TiXmlDeclaration* target ) const; + // used to be public + #ifdef TIXML_USE_STL + virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); + #endif + +private: + + TIXML_STRING version; + TIXML_STRING encoding; + TIXML_STRING standalone; +}; + + +/** Any tag that tinyXml doesn't recognize is saved as an + unknown. It is a tag of text, but should not be modified. + It will be written back to the XML, unchanged, when the file + is saved. + + DTD tags get thrown into TiXmlUnknowns. +*/ +class TiXmlUnknown : public TiXmlNode +{ +public: + TiXmlUnknown() : TiXmlNode( TiXmlNode::TINYXML_UNKNOWN ) {} + virtual ~TiXmlUnknown() {} + + TiXmlUnknown( const TiXmlUnknown& copy ) : TiXmlNode( TiXmlNode::TINYXML_UNKNOWN ) { copy.CopyTo( this ); } + TiXmlUnknown& operator=( const TiXmlUnknown& copy ) { copy.CopyTo( this ); return *this; } + + /// Creates a copy of this Unknown and returns it. + virtual TiXmlNode* Clone() const; + // Print this Unknown to a FILE stream. + virtual void Print( FILE* cfile, int depth ) const; + + virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); + + virtual const TiXmlUnknown* ToUnknown() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + virtual TiXmlUnknown* ToUnknown() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + + /** Walk the XML tree visiting this node and all of its children. + */ + virtual bool Accept( TiXmlVisitor* content ) const; + +protected: + void CopyTo( TiXmlUnknown* target ) const; + + #ifdef TIXML_USE_STL + virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); + #endif + +private: + +}; + + +/** Always the top level node. A document binds together all the + XML pieces. It can be saved, loaded, and printed to the screen. + The 'value' of a document node is the xml file name. +*/ +class TiXmlDocument : public TiXmlNode +{ +public: + /// Create an empty document, that has no name. + TiXmlDocument(); + /// Create a document with a name. The name of the document is also the filename of the xml. + TiXmlDocument( const char * documentName ); + + #ifdef TIXML_USE_STL + /// Constructor. + TiXmlDocument( const std::string& documentName ); + #endif + + TiXmlDocument( const TiXmlDocument& copy ); + TiXmlDocument& operator=( const TiXmlDocument& copy ); + + virtual ~TiXmlDocument() {} + + /** Load a file using the current document value. + Returns true if successful. Will delete any existing + document data before loading. + */ + bool LoadFile( TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); + /// Save a file using the current document value. Returns true if successful. + bool SaveFile() const; + /// Load a file using the given filename. Returns true if successful. + bool LoadFile( const char * filename, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); + /// Save a file using the given filename. Returns true if successful. + bool SaveFile( const char * filename ) const; + /** Load a file using the given FILE*. Returns true if successful. Note that this method + doesn't stream - the entire object pointed at by the FILE* + will be interpreted as an XML file. TinyXML doesn't stream in XML from the current + file location. Streaming may be added in the future. + */ + bool LoadFile( FILE*, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); + /// Save a file using the given FILE*. Returns true if successful. + bool SaveFile( FILE* ) const; + + #ifdef TIXML_USE_STL + bool LoadFile( const std::string& filename, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ) ///< STL std::string version. + { + return LoadFile( filename.c_str(), encoding ); + } + bool SaveFile( const std::string& filename ) const ///< STL std::string version. + { + return SaveFile( filename.c_str() ); + } + #endif + + /** Parse the given null terminated block of xml data. Passing in an encoding to this + method (either TIXML_ENCODING_LEGACY or TIXML_ENCODING_UTF8 will force TinyXml + to use that encoding, regardless of what TinyXml might otherwise try to detect. + */ + virtual const char* Parse( const char* p, TiXmlParsingData* data = 0, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); + + /** Get the root element -- the only top level element -- of the document. + In well formed XML, there should only be one. TinyXml is tolerant of + multiple elements at the document level. + */ + const TiXmlElement* RootElement() const { return FirstChildElement(); } + TiXmlElement* RootElement() { return FirstChildElement(); } + + /** If an error occurs, Error will be set to true. Also, + - The ErrorId() will contain the integer identifier of the error (not generally useful) + - The ErrorDesc() method will return the name of the error. (very useful) + - The ErrorRow() and ErrorCol() will return the location of the error (if known) + */ + bool Error() const { return error; } + + /// Contains a textual (english) description of the error if one occurs. + const char * ErrorDesc() const { return errorDesc.c_str (); } + + /** Generally, you probably want the error string ( ErrorDesc() ). But if you + prefer the ErrorId, this function will fetch it. + */ + int ErrorId() const { return errorId; } + + /** Returns the location (if known) of the error. The first column is column 1, + and the first row is row 1. A value of 0 means the row and column wasn't applicable + (memory errors, for example, have no row/column) or the parser lost the error. (An + error in the error reporting, in that case.) + + @sa SetTabSize, Row, Column + */ + int ErrorRow() const { return errorLocation.row+1; } + int ErrorCol() const { return errorLocation.col+1; } ///< The column where the error occured. See ErrorRow() + + /** SetTabSize() allows the error reporting functions (ErrorRow() and ErrorCol()) + to report the correct values for row and column. It does not change the output + or input in any way. + + By calling this method, with a tab size + greater than 0, the row and column of each node and attribute is stored + when the file is loaded. Very useful for tracking the DOM back in to + the source file. + + The tab size is required for calculating the location of nodes. If not + set, the default of 4 is used. The tabsize is set per document. Setting + the tabsize to 0 disables row/column tracking. + + Note that row and column tracking is not supported when using operator>>. + + The tab size needs to be enabled before the parse or load. Correct usage: + @verbatim + TiXmlDocument doc; + doc.SetTabSize( 8 ); + doc.Load( "myfile.xml" ); + @endverbatim + + @sa Row, Column + */ + void SetTabSize( int _tabsize ) { tabsize = _tabsize; } + + int TabSize() const { return tabsize; } + + /** If you have handled the error, it can be reset with this call. The error + state is automatically cleared if you Parse a new XML block. + */ + void ClearError() { error = false; + errorId = 0; + errorDesc = ""; + errorLocation.row = errorLocation.col = 0; + //errorLocation.last = 0; + } + + /** Write the document to standard out using formatted printing ("pretty print"). */ + void Print() const { Print( stdout, 0 ); } + + /* Write the document to a string using formatted printing ("pretty print"). This + will allocate a character array (new char[]) and return it as a pointer. The + calling code pust call delete[] on the return char* to avoid a memory leak. + */ + //char* PrintToMemory() const; + + /// Print this Document to a FILE stream. + virtual void Print( FILE* cfile, int depth = 0 ) const; + // [internal use] + void SetError( int err, const char* errorLocation, TiXmlParsingData* prevData, TiXmlEncoding encoding ); + + virtual const TiXmlDocument* ToDocument() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + virtual TiXmlDocument* ToDocument() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + + /** Walk the XML tree visiting this node and all of its children. + */ + virtual bool Accept( TiXmlVisitor* content ) const; + +protected : + // [internal use] + virtual TiXmlNode* Clone() const; + #ifdef TIXML_USE_STL + virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); + #endif + +private: + void CopyTo( TiXmlDocument* target ) const; + + bool error; + int errorId; + TIXML_STRING errorDesc; + int tabsize; + TiXmlCursor errorLocation; + bool useMicrosoftBOM; // the UTF-8 BOM were found when read. Note this, and try to write. +}; + + +/** + A TiXmlHandle is a class that wraps a node pointer with null checks; this is + an incredibly useful thing. Note that TiXmlHandle is not part of the TinyXml + DOM structure. It is a separate utility class. + + Take an example: + @verbatim + + + + + + + @endverbatim + + Assuming you want the value of "attributeB" in the 2nd "Child" element, it's very + easy to write a *lot* of code that looks like: + + @verbatim + TiXmlElement* root = document.FirstChildElement( "Document" ); + if ( root ) + { + TiXmlElement* element = root->FirstChildElement( "Element" ); + if ( element ) + { + TiXmlElement* child = element->FirstChildElement( "Child" ); + if ( child ) + { + TiXmlElement* child2 = child->NextSiblingElement( "Child" ); + if ( child2 ) + { + // Finally do something useful. + @endverbatim + + And that doesn't even cover "else" cases. TiXmlHandle addresses the verbosity + of such code. A TiXmlHandle checks for null pointers so it is perfectly safe + and correct to use: + + @verbatim + TiXmlHandle docHandle( &document ); + TiXmlElement* child2 = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", 1 ).ToElement(); + if ( child2 ) + { + // do something useful + @endverbatim + + Which is MUCH more concise and useful. + + It is also safe to copy handles - internally they are nothing more than node pointers. + @verbatim + TiXmlHandle handleCopy = handle; + @endverbatim + + What they should not be used for is iteration: + + @verbatim + int i=0; + while ( true ) + { + TiXmlElement* child = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", i ).ToElement(); + if ( !child ) + break; + // do something + ++i; + } + @endverbatim + + It seems reasonable, but it is in fact two embedded while loops. The Child method is + a linear walk to find the element, so this code would iterate much more than it needs + to. Instead, prefer: + + @verbatim + TiXmlElement* child = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).FirstChild( "Child" ).ToElement(); + + for( child; child; child=child->NextSiblingElement() ) + { + // do something + } + @endverbatim +*/ +class TiXmlHandle +{ +public: + /// Create a handle from any node (at any depth of the tree.) This can be a null pointer. + TiXmlHandle( TiXmlNode* _node ) { this->node = _node; } + /// Copy constructor + TiXmlHandle( const TiXmlHandle& ref ) { this->node = ref.node; } + TiXmlHandle operator=( const TiXmlHandle& ref ) { if ( &ref != this ) this->node = ref.node; return *this; } + + /// Return a handle to the first child node. + TiXmlHandle FirstChild() const; + /// Return a handle to the first child node with the given name. + TiXmlHandle FirstChild( const char * value ) const; + /// Return a handle to the first child element. + TiXmlHandle FirstChildElement() const; + /// Return a handle to the first child element with the given name. + TiXmlHandle FirstChildElement( const char * value ) const; + + /** Return a handle to the "index" child with the given name. + The first child is 0, the second 1, etc. + */ + TiXmlHandle Child( const char* value, int index ) const; + /** Return a handle to the "index" child. + The first child is 0, the second 1, etc. + */ + TiXmlHandle Child( int index ) const; + /** Return a handle to the "index" child element with the given name. + The first child element is 0, the second 1, etc. Note that only TiXmlElements + are indexed: other types are not counted. + */ + TiXmlHandle ChildElement( const char* value, int index ) const; + /** Return a handle to the "index" child element. + The first child element is 0, the second 1, etc. Note that only TiXmlElements + are indexed: other types are not counted. + */ + TiXmlHandle ChildElement( int index ) const; + + #ifdef TIXML_USE_STL + TiXmlHandle FirstChild( const std::string& _value ) const { return FirstChild( _value.c_str() ); } + TiXmlHandle FirstChildElement( const std::string& _value ) const { return FirstChildElement( _value.c_str() ); } + + TiXmlHandle Child( const std::string& _value, int index ) const { return Child( _value.c_str(), index ); } + TiXmlHandle ChildElement( const std::string& _value, int index ) const { return ChildElement( _value.c_str(), index ); } + #endif + + /** Return the handle as a TiXmlNode. This may return null. + */ + TiXmlNode* ToNode() const { return node; } + /** Return the handle as a TiXmlElement. This may return null. + */ + TiXmlElement* ToElement() const { return ( ( node && node->ToElement() ) ? node->ToElement() : 0 ); } + /** Return the handle as a TiXmlText. This may return null. + */ + TiXmlText* ToText() const { return ( ( node && node->ToText() ) ? node->ToText() : 0 ); } + /** Return the handle as a TiXmlUnknown. This may return null. + */ + TiXmlUnknown* ToUnknown() const { return ( ( node && node->ToUnknown() ) ? node->ToUnknown() : 0 ); } + + /** @deprecated use ToNode. + Return the handle as a TiXmlNode. This may return null. + */ + TiXmlNode* Node() const { return ToNode(); } + /** @deprecated use ToElement. + Return the handle as a TiXmlElement. This may return null. + */ + TiXmlElement* Element() const { return ToElement(); } + /** @deprecated use ToText() + Return the handle as a TiXmlText. This may return null. + */ + TiXmlText* Text() const { return ToText(); } + /** @deprecated use ToUnknown() + Return the handle as a TiXmlUnknown. This may return null. + */ + TiXmlUnknown* Unknown() const { return ToUnknown(); } + +private: + TiXmlNode* node; +}; + + +/** Print to memory functionality. The TiXmlPrinter is useful when you need to: + + -# Print to memory (especially in non-STL mode) + -# Control formatting (line endings, etc.) + + When constructed, the TiXmlPrinter is in its default "pretty printing" mode. + Before calling Accept() you can call methods to control the printing + of the XML document. After TiXmlNode::Accept() is called, the printed document can + be accessed via the CStr(), Str(), and Size() methods. + + TiXmlPrinter uses the Visitor API. + @verbatim + TiXmlPrinter printer; + printer.SetIndent( "\t" ); + + doc.Accept( &printer ); + fprintf( stdout, "%s", printer.CStr() ); + @endverbatim +*/ +class TiXmlPrinter : public TiXmlVisitor +{ +public: + TiXmlPrinter() : depth( 0 ), simpleTextPrint( false ), + buffer(), indent( " " ), lineBreak( "\n" ) {} + + virtual bool VisitEnter( const TiXmlDocument& doc ); + virtual bool VisitExit( const TiXmlDocument& doc ); + + virtual bool VisitEnter( const TiXmlElement& element, const TiXmlAttribute* firstAttribute ); + virtual bool VisitExit( const TiXmlElement& element ); + + virtual bool Visit( const TiXmlDeclaration& declaration ); + virtual bool Visit( const TiXmlText& text ); + virtual bool Visit( const TiXmlComment& comment ); + virtual bool Visit( const TiXmlUnknown& unknown ); + + /** Set the indent characters for printing. By default 4 spaces + but tab (\t) is also useful, or null/empty string for no indentation. + */ + void SetIndent( const char* _indent ) { indent = _indent ? _indent : "" ; } + /// Query the indention string. + const char* Indent() { return indent.c_str(); } + /** Set the line breaking string. By default set to newline (\n). + Some operating systems prefer other characters, or can be + set to the null/empty string for no indenation. + */ + void SetLineBreak( const char* _lineBreak ) { lineBreak = _lineBreak ? _lineBreak : ""; } + /// Query the current line breaking string. + const char* LineBreak() { return lineBreak.c_str(); } + + /** Switch over to "stream printing" which is the most dense formatting without + linebreaks. Common when the XML is needed for network transmission. + */ + void SetStreamPrinting() { indent = ""; + lineBreak = ""; + } + /// Return the result. + const char* CStr() { return buffer.c_str(); } + /// Return the length of the result string. + size_t Size() { return buffer.size(); } + + #ifdef TIXML_USE_STL + /// Return the result. + const std::string& Str() { return buffer; } + #endif + +private: + void DoIndent() { + for( int i=0; i +#include + +#include "tinyxml.h" + +//#define DEBUG_PARSER +#if defined( DEBUG_PARSER ) +# if defined( DEBUG ) && defined( _MSC_VER ) +# include +# define TIXML_LOG OutputDebugString +# else +# define TIXML_LOG printf +# endif +#endif + +// Note tha "PutString" hardcodes the same list. This +// is less flexible than it appears. Changing the entries +// or order will break putstring. +TiXmlBase::Entity TiXmlBase::entity[ TiXmlBase::NUM_ENTITY ] = +{ + { "&", 5, '&' }, + { "<", 4, '<' }, + { ">", 4, '>' }, + { """, 6, '\"' }, + { "'", 6, '\'' } +}; + +// Bunch of unicode info at: +// http://www.unicode.org/faq/utf_bom.html +// Including the basic of this table, which determines the #bytes in the +// sequence from the lead byte. 1 placed for invalid sequences -- +// although the result will be junk, pass it through as much as possible. +// Beware of the non-characters in UTF-8: +// ef bb bf (Microsoft "lead bytes") +// ef bf be +// ef bf bf + +const unsigned char TIXML_UTF_LEAD_0 = 0xefU; +const unsigned char TIXML_UTF_LEAD_1 = 0xbbU; +const unsigned char TIXML_UTF_LEAD_2 = 0xbfU; + +const int TiXmlBase::utf8ByteTable[256] = +{ + // 0 1 2 3 4 5 6 7 8 9 a b c d e f + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x00 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x10 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x20 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x30 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x40 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x50 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x60 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x70 End of ASCII range + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x80 0x80 to 0xc1 invalid + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x90 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0xa0 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0xb0 + 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 0xc0 0xc2 to 0xdf 2 byte + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 0xd0 + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, // 0xe0 0xe0 to 0xef 3 byte + 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // 0xf0 0xf0 to 0xf4 4 byte, 0xf5 and higher invalid +}; + + +void TiXmlBase::ConvertUTF32ToUTF8( unsigned long input, char* output, int* length ) +{ + const unsigned long BYTE_MASK = 0xBF; + const unsigned long BYTE_MARK = 0x80; + const unsigned long FIRST_BYTE_MARK[7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC }; + + if (input < 0x80) + *length = 1; + else if ( input < 0x800 ) + *length = 2; + else if ( input < 0x10000 ) + *length = 3; + else if ( input < 0x200000 ) + *length = 4; + else + { *length = 0; return; } // This code won't covert this correctly anyway. + + output += *length; + + // Scary scary fall throughs. + switch (*length) + { + case 4: + --output; + *output = (char)((input | BYTE_MARK) & BYTE_MASK); + input >>= 6; + case 3: + --output; + *output = (char)((input | BYTE_MARK) & BYTE_MASK); + input >>= 6; + case 2: + --output; + *output = (char)((input | BYTE_MARK) & BYTE_MASK); + input >>= 6; + case 1: + --output; + *output = (char)(input | FIRST_BYTE_MARK[*length]); + } +} + + +/*static*/ int TiXmlBase::IsAlpha( unsigned char anyByte, TiXmlEncoding /*encoding*/ ) +{ + // This will only work for low-ascii, everything else is assumed to be a valid + // letter. I'm not sure this is the best approach, but it is quite tricky trying + // to figure out alhabetical vs. not across encoding. So take a very + // conservative approach. + +// if ( encoding == TIXML_ENCODING_UTF8 ) +// { + if ( anyByte < 127 ) + return isalpha( anyByte ); + else + return 1; // What else to do? The unicode set is huge...get the english ones right. +// } +// else +// { +// return isalpha( anyByte ); +// } +} + + +/*static*/ int TiXmlBase::IsAlphaNum( unsigned char anyByte, TiXmlEncoding /*encoding*/ ) +{ + // This will only work for low-ascii, everything else is assumed to be a valid + // letter. I'm not sure this is the best approach, but it is quite tricky trying + // to figure out alhabetical vs. not across encoding. So take a very + // conservative approach. + +// if ( encoding == TIXML_ENCODING_UTF8 ) +// { + if ( anyByte < 127 ) + return isalnum( anyByte ); + else + return 1; // What else to do? The unicode set is huge...get the english ones right. +// } +// else +// { +// return isalnum( anyByte ); +// } +} + + +class TiXmlParsingData +{ + friend class TiXmlDocument; + public: + void Stamp( const char* now, TiXmlEncoding encoding ); + + const TiXmlCursor& Cursor() const { return cursor; } + + private: + // Only used by the document! + TiXmlParsingData( const char* start, int _tabsize, int row, int col ) + { + assert( start ); + stamp = start; + tabsize = _tabsize; + cursor.row = row; + cursor.col = col; + } + + TiXmlCursor cursor; + const char* stamp; + int tabsize; +}; + + +void TiXmlParsingData::Stamp( const char* now, TiXmlEncoding encoding ) +{ + assert( now ); + + // Do nothing if the tabsize is 0. + if ( tabsize < 1 ) + { + return; + } + + // Get the current row, column. + int row = cursor.row; + int col = cursor.col; + const char* p = stamp; + assert( p ); + + while ( p < now ) + { + // Treat p as unsigned, so we have a happy compiler. + const unsigned char* pU = (const unsigned char*)p; + + // Code contributed by Fletcher Dunn: (modified by lee) + switch (*pU) { + case 0: + // We *should* never get here, but in case we do, don't + // advance past the terminating null character, ever + return; + + case '\r': + // bump down to the next line + ++row; + col = 0; + // Eat the character + ++p; + + // Check for \r\n sequence, and treat this as a single character + if (*p == '\n') { + ++p; + } + break; + + case '\n': + // bump down to the next line + ++row; + col = 0; + + // Eat the character + ++p; + + // Check for \n\r sequence, and treat this as a single + // character. (Yes, this bizarre thing does occur still + // on some arcane platforms...) + if (*p == '\r') { + ++p; + } + break; + + case '\t': + // Eat the character + ++p; + + // Skip to next tab stop + col = (col / tabsize + 1) * tabsize; + break; + + case TIXML_UTF_LEAD_0: + if ( encoding == TIXML_ENCODING_UTF8 ) + { + if ( *(p+1) && *(p+2) ) + { + // In these cases, don't advance the column. These are + // 0-width spaces. + if ( *(pU+1)==TIXML_UTF_LEAD_1 && *(pU+2)==TIXML_UTF_LEAD_2 ) + p += 3; + else if ( *(pU+1)==0xbfU && *(pU+2)==0xbeU ) + p += 3; + else if ( *(pU+1)==0xbfU && *(pU+2)==0xbfU ) + p += 3; + else + { p +=3; ++col; } // A normal character. + } + } + else + { + ++p; + ++col; + } + break; + + default: + if ( encoding == TIXML_ENCODING_UTF8 ) + { + // Eat the 1 to 4 byte utf8 character. + int step = TiXmlBase::utf8ByteTable[*((const unsigned char*)p)]; + if ( step == 0 ) + step = 1; // Error case from bad encoding, but handle gracefully. + p += step; + + // Just advance one column, of course. + ++col; + } + else + { + ++p; + ++col; + } + break; + } + } + cursor.row = row; + cursor.col = col; + assert( cursor.row >= -1 ); + assert( cursor.col >= -1 ); + stamp = p; + assert( stamp ); +} + + +const char* TiXmlBase::SkipWhiteSpace( const char* p, TiXmlEncoding encoding ) +{ + if ( !p || !*p ) + { + return 0; + } + if ( encoding == TIXML_ENCODING_UTF8 ) + { + while ( *p ) + { + const unsigned char* pU = (const unsigned char*)p; + + // Skip the stupid Microsoft UTF-8 Byte order marks + if ( *(pU+0)==TIXML_UTF_LEAD_0 + && *(pU+1)==TIXML_UTF_LEAD_1 + && *(pU+2)==TIXML_UTF_LEAD_2 ) + { + p += 3; + continue; + } + else if(*(pU+0)==TIXML_UTF_LEAD_0 + && *(pU+1)==0xbfU + && *(pU+2)==0xbeU ) + { + p += 3; + continue; + } + else if(*(pU+0)==TIXML_UTF_LEAD_0 + && *(pU+1)==0xbfU + && *(pU+2)==0xbfU ) + { + p += 3; + continue; + } + + if ( IsWhiteSpace( *p ) ) // Still using old rules for white space. + ++p; + else + break; + } + } + else + { + while ( *p && IsWhiteSpace( *p ) ) + ++p; + } + + return p; +} + +#ifdef TIXML_USE_STL +/*static*/ bool TiXmlBase::StreamWhiteSpace( std::istream * in, TIXML_STRING * tag ) +{ + for( ;; ) + { + if ( !in->good() ) return false; + + int c = in->peek(); + // At this scope, we can't get to a document. So fail silently. + if ( !IsWhiteSpace( c ) || c <= 0 ) + return true; + + *tag += (char) in->get(); + } +} + +/*static*/ bool TiXmlBase::StreamTo( std::istream * in, int character, TIXML_STRING * tag ) +{ + //assert( character > 0 && character < 128 ); // else it won't work in utf-8 + while ( in->good() ) + { + int c = in->peek(); + if ( c == character ) + return true; + if ( c <= 0 ) // Silent failure: can't get document at this scope + return false; + + in->get(); + *tag += (char) c; + } + return false; +} +#endif + +// One of TinyXML's more performance demanding functions. Try to keep the memory overhead down. The +// "assign" optimization removes over 10% of the execution time. +// +const char* TiXmlBase::ReadName( const char* p, TIXML_STRING * name, TiXmlEncoding encoding ) +{ + // Oddly, not supported on some comilers, + //name->clear(); + // So use this: + *name = ""; + assert( p ); + + // Names start with letters or underscores. + // Of course, in unicode, tinyxml has no idea what a letter *is*. The + // algorithm is generous. + // + // After that, they can be letters, underscores, numbers, + // hyphens, or colons. (Colons are valid ony for namespaces, + // but tinyxml can't tell namespaces from names.) + if ( p && *p + && ( IsAlpha( (unsigned char) *p, encoding ) || *p == '_' ) ) + { + const char* start = p; + while( p && *p + && ( IsAlphaNum( (unsigned char ) *p, encoding ) + || *p == '_' + || *p == '-' + || *p == '.' + || *p == ':' ) ) + { + //(*name) += *p; // expensive + ++p; + } + if ( p-start > 0 ) { + name->assign( start, p-start ); + } + return p; + } + return 0; +} + +const char* TiXmlBase::GetEntity( const char* p, char* value, int* length, TiXmlEncoding encoding ) +{ + // Presume an entity, and pull it out. + TIXML_STRING ent; + int i; + *length = 0; + + if ( *(p+1) && *(p+1) == '#' && *(p+2) ) + { + unsigned long ucs = 0; + ptrdiff_t delta = 0; + unsigned mult = 1; + + if ( *(p+2) == 'x' ) + { + // Hexadecimal. + if ( !*(p+3) ) return 0; + + const char* q = p+3; + q = strchr( q, ';' ); + + if ( !q || !*q ) return 0; + + delta = q-p; + --q; + + while ( *q != 'x' ) + { + if ( *q >= '0' && *q <= '9' ) + ucs += mult * (*q - '0'); + else if ( *q >= 'a' && *q <= 'f' ) + ucs += mult * (*q - 'a' + 10); + else if ( *q >= 'A' && *q <= 'F' ) + ucs += mult * (*q - 'A' + 10 ); + else + return 0; + mult *= 16; + --q; + } + } + else + { + // Decimal. + if ( !*(p+2) ) return 0; + + const char* q = p+2; + q = strchr( q, ';' ); + + if ( !q || !*q ) return 0; + + delta = q-p; + --q; + + while ( *q != '#' ) + { + if ( *q >= '0' && *q <= '9' ) + ucs += mult * (*q - '0'); + else + return 0; + mult *= 10; + --q; + } + } + if ( encoding == TIXML_ENCODING_UTF8 ) + { + // convert the UCS to UTF-8 + ConvertUTF32ToUTF8( ucs, value, length ); + } + else + { + *value = (char)ucs; + *length = 1; + } + return p + delta + 1; + } + + // Now try to match it. + for( i=0; iappend( cArr, len ); + } + } + else + { + bool whitespace = false; + + // Remove leading white space: + p = SkipWhiteSpace( p, encoding ); + while ( p && *p + && !StringEqual( p, endTag, caseInsensitive, encoding ) ) + { + if ( *p == '\r' || *p == '\n' ) + { + whitespace = true; + ++p; + } + else if ( IsWhiteSpace( *p ) ) + { + whitespace = true; + ++p; + } + else + { + // If we've found whitespace, add it before the + // new character. Any whitespace just becomes a space. + if ( whitespace ) + { + (*text) += ' '; + whitespace = false; + } + int len; + char cArr[4] = { 0, 0, 0, 0 }; + p = GetChar( p, cArr, &len, encoding ); + if ( len == 1 ) + (*text) += cArr[0]; // more efficient + else + text->append( cArr, len ); + } + } + } + if ( p && *p ) + p += strlen( endTag ); + return ( p && *p ) ? p : 0; +} + +#ifdef TIXML_USE_STL + +void TiXmlDocument::StreamIn( std::istream * in, TIXML_STRING * tag ) +{ + // The basic issue with a document is that we don't know what we're + // streaming. Read something presumed to be a tag (and hope), then + // identify it, and call the appropriate stream method on the tag. + // + // This "pre-streaming" will never read the closing ">" so the + // sub-tag can orient itself. + + if ( !StreamTo( in, '<', tag ) ) + { + SetError( TIXML_ERROR_PARSING_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); + return; + } + + while ( in->good() ) + { + int tagIndex = (int) tag->length(); + while ( in->good() && in->peek() != '>' ) + { + int c = in->get(); + if ( c <= 0 ) + { + SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN ); + break; + } + (*tag) += (char) c; + } + + if ( in->good() ) + { + // We now have something we presume to be a node of + // some sort. Identify it, and call the node to + // continue streaming. + TiXmlNode* node = Identify( tag->c_str() + tagIndex, TIXML_DEFAULT_ENCODING ); + + if ( node ) + { + node->StreamIn( in, tag ); + bool isElement = node->ToElement() != 0; + delete node; + node = 0; + + // If this is the root element, we're done. Parsing will be + // done by the >> operator. + if ( isElement ) + { + return; + } + } + else + { + SetError( TIXML_ERROR, 0, 0, TIXML_ENCODING_UNKNOWN ); + return; + } + } + } + // We should have returned sooner. + SetError( TIXML_ERROR, 0, 0, TIXML_ENCODING_UNKNOWN ); +} + +#endif + +const char* TiXmlDocument::Parse( const char* p, TiXmlParsingData* prevData, TiXmlEncoding encoding ) +{ + ClearError(); + + // Parse away, at the document level. Since a document + // contains nothing but other tags, most of what happens + // here is skipping white space. + if ( !p || !*p ) + { + SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); + return 0; + } + + // Note that, for a document, this needs to come + // before the while space skip, so that parsing + // starts from the pointer we are given. + location.Clear(); + if ( prevData ) + { + location.row = prevData->cursor.row; + location.col = prevData->cursor.col; + } + else + { + location.row = 0; + location.col = 0; + } + TiXmlParsingData data( p, TabSize(), location.row, location.col ); + location = data.Cursor(); + + if ( encoding == TIXML_ENCODING_UNKNOWN ) + { + // Check for the Microsoft UTF-8 lead bytes. + const unsigned char* pU = (const unsigned char*)p; + if ( *(pU+0) && *(pU+0) == TIXML_UTF_LEAD_0 + && *(pU+1) && *(pU+1) == TIXML_UTF_LEAD_1 + && *(pU+2) && *(pU+2) == TIXML_UTF_LEAD_2 ) + { + encoding = TIXML_ENCODING_UTF8; + useMicrosoftBOM = true; + } + } + + p = SkipWhiteSpace( p, encoding ); + if ( !p ) + { + SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); + return 0; + } + + while ( p && *p ) + { + TiXmlNode* node = Identify( p, encoding ); + if ( node ) + { + p = node->Parse( p, &data, encoding ); + LinkEndChild( node ); + } + else + { + break; + } + + // Did we get encoding info? + if ( encoding == TIXML_ENCODING_UNKNOWN + && node->ToDeclaration() ) + { + TiXmlDeclaration* dec = node->ToDeclaration(); + const char* enc = dec->Encoding(); + assert( enc ); + + if ( *enc == 0 ) + encoding = TIXML_ENCODING_UTF8; + else if ( StringEqual( enc, "UTF-8", true, TIXML_ENCODING_UNKNOWN ) ) + encoding = TIXML_ENCODING_UTF8; + else if ( StringEqual( enc, "UTF8", true, TIXML_ENCODING_UNKNOWN ) ) + encoding = TIXML_ENCODING_UTF8; // incorrect, but be nice + else + encoding = TIXML_ENCODING_LEGACY; + } + + p = SkipWhiteSpace( p, encoding ); + } + + // Was this empty? + if ( !firstChild ) { + SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, encoding ); + return 0; + } + + // All is well. + return p; +} + +void TiXmlDocument::SetError( int err, const char* pError, TiXmlParsingData* data, TiXmlEncoding encoding ) +{ + // The first error in a chain is more accurate - don't set again! + if ( error ) + return; + + assert( err > 0 && err < TIXML_ERROR_STRING_COUNT ); + error = true; + errorId = err; + errorDesc = errorString[ errorId ]; + + errorLocation.Clear(); + if ( pError && data ) + { + data->Stamp( pError, encoding ); + errorLocation = data->Cursor(); + } +} + + +TiXmlNode* TiXmlNode::Identify( const char* p, TiXmlEncoding encoding ) +{ + TiXmlNode* returnNode = 0; + + p = SkipWhiteSpace( p, encoding ); + if( !p || !*p || *p != '<' ) + { + return 0; + } + + p = SkipWhiteSpace( p, encoding ); + + if ( !p || !*p ) + { + return 0; + } + + // What is this thing? + // - Elements start with a letter or underscore, but xml is reserved. + // - Comments: "; + + if ( !StringEqual( p, startTag, false, encoding ) ) + { + if ( document ) + document->SetError( TIXML_ERROR_PARSING_COMMENT, p, data, encoding ); + return 0; + } + p += strlen( startTag ); + + // [ 1475201 ] TinyXML parses entities in comments + // Oops - ReadText doesn't work, because we don't want to parse the entities. + // p = ReadText( p, &value, false, endTag, false, encoding ); + // + // from the XML spec: + /* + [Definition: Comments may appear anywhere in a document outside other markup; in addition, + they may appear within the document type declaration at places allowed by the grammar. + They are not part of the document's character data; an XML processor MAY, but need not, + make it possible for an application to retrieve the text of comments. For compatibility, + the string "--" (double-hyphen) MUST NOT occur within comments.] Parameter entity + references MUST NOT be recognized within comments. + + An example of a comment: + + + */ + + value = ""; + // Keep all the white space. + while ( p && *p && !StringEqual( p, endTag, false, encoding ) ) + { + value.append( p, 1 ); + ++p; + } + if ( p && *p ) + p += strlen( endTag ); + + return p; +} + + +const char* TiXmlAttribute::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ) +{ + p = SkipWhiteSpace( p, encoding ); + if ( !p || !*p ) return 0; + + if ( data ) + { + data->Stamp( p, encoding ); + location = data->Cursor(); + } + // Read the name, the '=' and the value. + const char* pErr = p; + p = ReadName( p, &name, encoding ); + if ( !p || !*p ) + { + if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, pErr, data, encoding ); + return 0; + } + p = SkipWhiteSpace( p, encoding ); + if ( !p || !*p || *p != '=' ) + { + if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding ); + return 0; + } + + ++p; // skip '=' + p = SkipWhiteSpace( p, encoding ); + if ( !p || !*p ) + { + if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding ); + return 0; + } + + const char* end; + const char SINGLE_QUOTE = '\''; + const char DOUBLE_QUOTE = '\"'; + + if ( *p == SINGLE_QUOTE ) + { + ++p; + end = "\'"; // single quote in string + p = ReadText( p, &value, false, end, false, encoding ); + } + else if ( *p == DOUBLE_QUOTE ) + { + ++p; + end = "\""; // double quote in string + p = ReadText( p, &value, false, end, false, encoding ); + } + else + { + // All attribute values should be in single or double quotes. + // But this is such a common error that the parser will try + // its best, even without them. + value = ""; + while ( p && *p // existence + && !IsWhiteSpace( *p ) // whitespace + && *p != '/' && *p != '>' ) // tag end + { + if ( *p == SINGLE_QUOTE || *p == DOUBLE_QUOTE ) { + // [ 1451649 ] Attribute values with trailing quotes not handled correctly + // We did not have an opening quote but seem to have a + // closing one. Give up and throw an error. + if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding ); + return 0; + } + value += *p; + ++p; + } + } + return p; +} + +#ifdef TIXML_USE_STL +void TiXmlText::StreamIn( std::istream * in, TIXML_STRING * tag ) +{ + while ( in->good() ) + { + int c = in->peek(); + if ( !cdata && (c == '<' ) ) + { + return; + } + if ( c <= 0 ) + { + TiXmlDocument* document = GetDocument(); + if ( document ) + document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN ); + return; + } + + (*tag) += (char) c; + in->get(); // "commits" the peek made above + + if ( cdata && c == '>' && tag->size() >= 3 ) { + size_t len = tag->size(); + if ( (*tag)[len-2] == ']' && (*tag)[len-3] == ']' ) { + // terminator of cdata. + return; + } + } + } +} +#endif + +const char* TiXmlText::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ) +{ + value = ""; + TiXmlDocument* document = GetDocument(); + + if ( data ) + { + data->Stamp( p, encoding ); + location = data->Cursor(); + } + + const char* const startTag = ""; + + if ( cdata || StringEqual( p, startTag, false, encoding ) ) + { + cdata = true; + + if ( !StringEqual( p, startTag, false, encoding ) ) + { + if ( document ) + document->SetError( TIXML_ERROR_PARSING_CDATA, p, data, encoding ); + return 0; + } + p += strlen( startTag ); + + // Keep all the white space, ignore the encoding, etc. + while ( p && *p + && !StringEqual( p, endTag, false, encoding ) + ) + { + value += *p; + ++p; + } + + TIXML_STRING dummy; + p = ReadText( p, &dummy, false, endTag, false, encoding ); + return p; + } + else + { + bool ignoreWhite = true; + + const char* end = "<"; + p = ReadText( p, &value, ignoreWhite, end, false, encoding ); + if ( p && *p ) + return p-1; // don't truncate the '<' + return 0; + } +} + +#ifdef TIXML_USE_STL +void TiXmlDeclaration::StreamIn( std::istream * in, TIXML_STRING * tag ) +{ + while ( in->good() ) + { + int c = in->get(); + if ( c <= 0 ) + { + TiXmlDocument* document = GetDocument(); + if ( document ) + document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN ); + return; + } + (*tag) += (char) c; + + if ( c == '>' ) + { + // All is well. + return; + } + } +} +#endif + +const char* TiXmlDeclaration::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding _encoding ) +{ + p = SkipWhiteSpace( p, _encoding ); + // Find the beginning, find the end, and look for + // the stuff in-between. + TiXmlDocument* document = GetDocument(); + if ( !p || !*p || !StringEqual( p, "SetError( TIXML_ERROR_PARSING_DECLARATION, 0, 0, _encoding ); + return 0; + } + if ( data ) + { + data->Stamp( p, _encoding ); + location = data->Cursor(); + } + p += 5; + + version = ""; + encoding = ""; + standalone = ""; + + while ( p && *p ) + { + if ( *p == '>' ) + { + ++p; + return p; + } + + p = SkipWhiteSpace( p, _encoding ); + if ( StringEqual( p, "version", true, _encoding ) ) + { + TiXmlAttribute attrib; + p = attrib.Parse( p, data, _encoding ); + version = attrib.Value(); + } + else if ( StringEqual( p, "encoding", true, _encoding ) ) + { + TiXmlAttribute attrib; + p = attrib.Parse( p, data, _encoding ); + encoding = attrib.Value(); + } + else if ( StringEqual( p, "standalone", true, _encoding ) ) + { + TiXmlAttribute attrib; + p = attrib.Parse( p, data, _encoding ); + standalone = attrib.Value(); + } + else + { + // Read over whatever it is. + while( p && *p && *p != '>' && !IsWhiteSpace( *p ) ) + ++p; + } + } + return 0; +} + +bool TiXmlText::Blank() const +{ + for ( unsigned i=0; i+}HZQ6aMzXt}=>G_}d?L&5}R=wCfG}^T)UUu&YA;{L`+0{Q1JJ zQhEK4yY8buAAJ6gUmrq$2H$*P*X{D>pLTtxWCC26*gR&x_mu|KsPZduH5s554x@d~)WL z*`5FWsGk8I&kbkIxw-V7Qjh0fW3xRT8q-rqe}?GKsGm{PR%Ze8O#9{G9?!?~Jf4m8 zkN=hajQSz&&9m+TD30XnxtLs^SP(@?kB+*2@|c1t1s>1i{K|`uc&NA@&j-Xu{fy#& zch22&ZlY~cJF1~f(7$cmjN9)dkZZ{`^&CZiew@GsqK5zf^?#15_2>WV3QzZ=uLV8t z(htQA9M9Vy_i}u@i5K}^dVjj7#<%CU3p{Uu4{oB@C%CUKme;2|<-Xp)ub&w;9>@JO ze(1}=&bKM)o}c?FzgplK_t4tGJgoae`IOW4?$4&AYks*M^!Gpdv&r|NFE1GP_LzYK ze%!ZjU%{)?RGx9Q89&aNPJj5fzBkX~{P91Bc^;$SM*3?s`~}^O=C8`XF^>NIvFE-? ze!i}m2{=kQnd=f4=^ zzqXa&Oq0LD59}Ym*5656yKgsJ=db`=apzq#<+*Vr;S?_{BGPCt>Yeg z^Sf~meRuM`6P?K`gFMWyt~i2+d6b8#_4)2kDS7=2lM|r&i`*V|7zF&Q}GYbzZ^aP7gOw1{Q!R?KAw|H zW`BKp1^ma0|54)TTbVD$sfeyRUm}l0{(SL&CEA~h0slRT{`=R*AKsI_(D{&-yi>`H z_QGj2nCyj%Xh7^wExdovL&*Dg7VlrT?~f}vo@U}jzNcx>8sE<*R_XDujb9((z8;d- zZ`uEPRwupQ&wc$yd40nE*US0!J+xPF|1R`n&GyedP6l z`(N+o*PnM^-}QI)J$(P``J3tWN6qV$PXovETs|!PN8{c4b@S`f+}EF$*WcX#dj1xA zeT4gZNM8Tl{?}{x^?vT_H_Gcj*Vl2pSoi$(+?`!_R?+%@5p{p9KTLm3IyFK&43|QF z_;^moi{;>pn~ARh@7-$n6&Ai0d>K{2DFGi)zRJSS0N-&H@wwnb$`@Jqv4;OG@x8p3 zQU1zjTloIqn|?!l8+h->CjXr;Ci?DvPU=&35AhA)1Io8r_;&D3^~9Hh4=G<~;hVu1 z-bH-A$zSSC0AE-}dLdoceB)I)s@8O zn*5b7vhbS>&--sLAHAsmmCv^Dvle6gXNYeD@BK{se|e(sLX4kNOnd|Qfby*teir!Z zQsT?Ohm^0g@DsszO(j0x1b+KLmUs9c7(z@FC^vEWF?FHxZw2@>jmp!f$JmdUh-%KF#Fct^IG|*BSnC;ycep z|0|zj;phKC#&3Fz_-61S<=dMR>oXtY=R8GxCHS!NjTU}}$%pr^Ab9V8wEr#qSnw6M z5uau9SH8f)4+38pB))qX`d|5U3-1G;S4n&e_^|SkKP38Ydsga`^9b=Z;JsgH|6BMC z;4`lyz65+g`6>&)9DM!%5ua=FSH8%?FEKnHAA5(Q|CP_S@bkgT`BfWu@0Z&DzfbgC z_^9|6m(chP-~-CHTKFLtzl{5*9DGRmIt!lxzIqbz`6hqmOD+7~-$_1Qy#Az_{I_fW zTlj6@dwBoqJO}-+e2RtN0KSZmzs=x7%C|Qq)@M2RdOm(tf)6X-XyI$Y=df=OymyE8 zzlEO#zH1cmStftw3oQIp@P*tz-Dji!l~1?uBTYWsKP}+H%153}^sRkF>fgirOAUDM zf3^QD{O)IjFXZ*J1bjgGDhs~}eCjWW&o%igUu5A|g0H`e_};V7|H@}u_$A=iKT3QX zc<)!*|G!K0oejQ2`X78i`Bn=b1Yi6ljb9Evql}jqS3bqUH-k^DCB7MaNcr|>66;g{u<&-zz3ACvhef4S1%(z*W|B!k%ccY$06w66tA%fK)d^z}#@^u!zjmp z!qSS9hCZH^7&+z$zS;b3%|+moKJTy`d|5U3%>^Z`fG`A0UuUA z^4mn;<=~r&h_3G4&zCw+L;owEV&Uh4Z{q%J1|L$seOY3Crh>2L z@hicHm2b50%^|60M+Nag@ZRsW|1G=^<7Zw>e3r>y`2q{SZ8rLiulKui(ErM(TljV0 zGx>U<1$o_{FN`Y@N4c8zJ3mkpJwvktNm}`pEZ0w@tp(F|H`LW_=VsrxZj$=hm>!B zBC$Tx!FTZejY{xgvJs;m&z=xHOG$i^i2cOFK^J~C+_i6uI_*(FJcM@L$KA?P+gF6nEY2*`0a+5^B?d5<*O|G zCh&Q@Ugetnl`pdJYrwDK^`ZA<^uO}i7XDe2kMuuy@1ffNOA>vT7@qg92JivpTP^%t zlMi2im4go{UuWT`gKy&N$9$8&@}(Aj#ZRUFsh1F+X7cxG|66#!$^RnaJ5NIYE1zQF zci%4K_wfC_X7C~9+aFJ?&nEE2za+jAd|3HL3%>?@*)ZaR;JvBZ{}%pP@OhUJpJnn_ zzQDrQ8vbnJyZfX6l~1?ubHVpKKzs}Mu=0^#CHhVWpTp-THQ>F6Y5!aJvEVBTh%W&j zP`=8-4>IG=CO+5XuY8e(UvZzzR}PplVfuY9_N-*Bt&U0k0Q@L}a6k0tu91YbOa_!{uuBenl6 z{4(%`+@B@j1Ikxf_$u&CeE%WW@xu8oK>sVBV&U__ubN4GGx(75?TZrYGZcK!1;kf^4=dkj;nU6dT%RC# zZy)V{3%}Ex4+MzMGWjcCVBtsN{zI{x|Mx}zE1z!Rx0&nfYiRriv;Hd|c_h)d9eg#f zC*@}SKTiAK!tVv&#OHhYX8l*b%EHgbdX>ZXAJWYFuY8e(p9(&euOBt*|f6wHv ze5r+R0G~IV#_u-kXNLB_g`bM+g=(o!AN0TSDHeVt_%b>F0UuJn{pX4G83cYk`&NPv zE8l40&GmkD4%Y{~H&grH!f&d?`HA$u$zS;b3%?S4z4U)N`d|5U3%>;X`eMqb1$?go#?wAd=FobG=L8%-)iAEfv*@qd^z}#@^uz|JJz@A$;9WI z{FN`Y@Cz}1Cij1u$v;c`-@?xTU(DyvoyVa6l~1woW5IXu^;$Fdkn-&d6YDd`@TU-8 z2|lcRqlNc_&*9@m5WM#U?SBiu`(Ek))XRy_GWjcCVBt4|m(S~VAC3N3KHb7^0^c!^ z#%}>1RzC8xMBjDb^LRa}0q;Fg``^N^1fR+GXG*{al&`Yzy*S@q&({~ZCV%CNEc{&K z%b#!Q^`rll&$jS0z*q43Y8!ZOKkfgA5`CwFujciq0enFDRtrB7d>)Tq4nCxOorNC> zzHkun`6hqmOD+5m@IC#BPc!-V*Z#Ng{SD9OZ=FY>|CLX%@P6>?XA$2FKBRnmD6u|1 zGd}O{mEgn5H(L1ZxIWF~&$kD`dr#8-xA46le#AF`4=CSi;j_VK^7T~EtpCc_ zS@_(Uvc6^VdYfx9}Ul_mtE4EoS{xKE=X63%-f@8t@_I z+aFAznFa+z=xHOJdo%+6ujKeEC=sBRr}w<&!2(g7oSg-9FFxz`6>%XRH1YLRIrxzBbr!xG`FHU5Bl1oD%9mRBQgc5ioA@-7{~+yu3qKruHS?XRsK4?l z7Jm7a@SQ|_jamPdZ=aV~pOrTW-^J(Kl^8#)e4~XQf_fJ6@jVFMo1^`2;r-x?c|FWB z`72*w;rCuG`84r*+wBwIkn-skejE4-Uf){4hn0`qpXj>|d@-M|)`0h(ru}c>mzjL{ z{fiRt0p+VK{9N#5e7_>sHSx{hL&~>TCe~-H$)ESHO7LOj8!h}G@b#Av9|Z3`UHjj{ z?=40>`F?el$zS;b3%?osD$b|di~d(W-NFyLLB`MH`&}*I!^%hQOY~iW@hkXxwjArT z_YCcS3qRfD!`I6t7(bwVm4zP(zJuSd%r*HdUu5A2fiIp*d~XW+U-@hc?*re&`(qn; z@0r^F_a^#on=17w=J#tFzz39XweV{U&-Y`?!H1Nuv+xbzS8>1PoBWk8weWMnSIGTO zlm8Iye+xeqe3@MTdeHyMr&#!rCjZ+hpJwnO<=ZO~>*Kpl>eEw7d?om>@{JaL_Y~Cg zX5xe3y=Q6vTlh`jbGRR}O#aFjSor1OD>(n|ee{3}`u?Nx=@!1q;cH-VS?IlVuMZ&>+k z3vZ6^Ieffs1MfXY`~RLq--Q@|{jtP1fDb6&YT+}c$^2IH{$36~qzVJ~gZ@`O-NH`=pUKD5 z7Vu%^BXbgchk)-`$=-gCA8EqwoLr2Z9h{sTUse3gaYTqJxw-!IBF`72*!;n#qd z^`Z9%^uO}i7Jdo%uAk8OZQ#A5(@g%uwf`;rCh(cOK6ieP{#QQ5!mk8he-`o0;6uu{-<4RO zTJZAy?n>}s{0f5iUa0+V;rC7y-&LcC&ocQdUtr-kfzRXh zyt@beuY9_NUunkY>#r8@VdW#YC;Bb{U(NStYQTFh(*C#bbHPjfOTY(|ud?uCalVwp z=U2HVf8~oTd^X1K;QKkfyV3v3XIuEa6QrK0^8Oci?+ESx+Y)_!7{83qPa41nly9~0 z+cAEgod19iDPL#dH-XRTOXKI8{FN`Y@GHT~_b<{+{v);jE&LMj)rZmeo!_AUl~1wo zbHR6TKQx06Dc^o;VtuB9FC0dECHS!NjTU}5_^u;~4}$kzto?7{$KrgW@O0v{O#aFj zSoqE3Wq#%Rq1|7j|CLX-@N2*qbA4LChn0_%C;Bb}FW---0q?y;``^OP2cO6DTLM0y ze3gZt4qm>0oon(}zR1E42cOC3552q4|H@}u_zdu=d_L9&-aAVB|CU7GotH^H3;B4| z06w66tA*bHzJk}ca_}ML>nwaT`068w&o}uiUuxmU;`pA&=O<|<{{roQ3twdNpGJJ= zPV~R>DHeVR_#UoLGx(75?K2bW<2Sy1ysHEsR=&}~Zx2d6o8eE@SH8(#`BDo%1bkB_@o6UivD*I@-VeTl zuira&p#POmvG6-DmHKq>=PR1Qhm>!>Ik7$)z!#?zUkN^}e4~Yb){M``iy(M!q4vLp zpAWuzIPqB~f8`4-{6urSX~yQJapnR2u-vC~opOb6ySH8%?F9+Wv=l@@#|CP_S@HOC9@%@lC@ZNFS z|2HQ3&H$e(=l|dX%C}nhO7QY|wsPRnj`g{N-@ohp0{yRiiiO`cR^}^}$8QE7Qog-3u|6BXck%jA2|lcRqlJGKeDyKJ z2f=$U)Bd;c3&9ui`xjXzf8`4-{0#8x`TVW>Kj?qu(=Gf&@D*1O-vU0YeB_2i-{EF_ zK3}QYJ$!y!0zRO8m4%;S#y_0+T$8`@MHYT4_zphb=-l(54nCxOorO;~zI;BDZ}L~Z z)WYu!NdIK|h)*;57is@n_;&E?`Fyo=8~R`Q6brx5^go}kHiHi--+pakeQGg&;XvXm z!H1P^wD6VS^Z5KE2;Mtc``^Nsf?vhQi!77B@&y)ttnuaR&F;_8|H`LZ_~GE2rV!r( zKCFD?nnd40W_;eiYQTH1)c&{d>EJUjpz%w<2b8a}@Oukneyh2kb4~ur7g_l2;0yWl z2ECu6|CP_S@SDu|e7)8N-aAG6za-IjA@a}R<52_nfby*tz82%l`|su8L(11#_*sVk zj?aHg{>qnH_=(_qPNjU(O#V}~|1JCw@J;-A$j(pD|H`LW`2OHCf1rGt!H1M@zdEr# zX@=+hr4oEt`9=%Bdz8#?2iG$Q-dn8wZ{fFr&*AgKER(p2M}Ka-g}kyzlEOxK9A?C1bjgGDhodre5!o@!Q`)ek%b=w zK1cfhWAwlB*%m&{jPIp<+Q56S*8VR}^zFVx=1V?*-T*$Je5-}u0KT4o|3W$Vkn(jF zemVGxuetwC{>qnH_$AQKhf}fKPuPc zuY8e(9}d2Q_pjc~=zrz2E&L$xnR5LL-aAeE|H?$)4Dd}{&j#=Tl7LlN0MR7vpzj(D;?$!^$^W_!;2k^LRn<-s`mgE&N2ob3bI6{FN`T@FT$&^7%ve zhvrV;zfbvxqe%nal z>%X9Ua!vlq7g_jC;Pd*>_`Ux||0|zu;n#uBq2KW0w1M~Dp#487(RVrcVm{w%03T4k z)xtk(^5^xc9DGRmIt#xHe9w5|^G*KBms==OsEj z(ErM(SojU#oBl)NH-ir;-##I+KFh&(@co2J@L}Z}E&LMjWt@KyythpI-@?xYFYgy; znf#S6u<$d$*N>xox;LT!l~1?u6AjPDyB6?a;cH{kfv#Oqt{ztI26XIuD{;N|$<2Hty%_WxyxzR!a1 z*-7I!fDb6&YT=iF$LGVrhm^0g@Ujmp!Y>4$GnDu=lYhDPzlEO*zK}m} z*7;BLzw#*-eg^n@zTedhKBRnmFtI+@{JaLD)nZ}#^*z8~J(j{a9Z+rm#pK6w5Ec<=4n|Cc8E zjs@Su{n-FMpnR)^A8E$t^|l;*NclPozu_FIe?4C>)-tk^uO}y7T%nn%jZ#Bz=xHOj7{{NkMUFadb0++ z_fGA93$N=5*S`dOK=~>QUsoy58^QOx&HAr=k%b>*eEE3Y`*-xe^4S)?KlmO#zik8W zy-WLlOroz3{HnpkH-HZ)-)iBvV?B}kb>-kg%GX)=PP6`SKjfSIl`pmME5VoX^+=k@ zf426&g>L{a*DswL(ErM(SoqoC^S03V&EP}Iw~tP&PY}F({=5==SouZ^KL~s#pAQ7V zd*^8XTlld=D<26Y`VKu) z^6BCGu{GemcWeJ!_+=QsjK2?60zRO8m4%-Ve!ZOkoBWk8vhY*Eck%u0-gnUd%4b{n zA!dBOf7J%wdyn>iL85OO_-a1BH-HZ)-)iBvoiFu~?=P2w4=G<~;akBMA4lWooBWk8 zweZWp{2TgT`4kIp>XRw!KlqUH?V}Rw<41kudH$8)!^$^W z`0dCikJrN>cyERFzlGlbe!aZ^Yw}mVz``#FFQ4b^ZbSbopKjr&qMuX$P5saUKCFD? zl0@I>7{7wg2Wr53@74ad@Wa7Z^ZSD(-~-B6S$IGA4*q;>uE}5dA`8C_*N>@u|El+| z=zrz2EqojJRlNVUf%o30{eN+yZ=>P)enkWLfby*tem?j@x&IG7qm3v_}#fOejexFy&nCqe7c3- z2EJz(<=+B6tbAldqVHz#^?bjj2E6xv?SBiu34AKAZzbRZ%2!$Vb!L1%pUgG+D_>;c zSAy^0&$slhL;owEZQ+-L&*STd~y6;#rtoiS^t%9weZu2O8qQlkCV%BiExZro%k#(5O#bt=|1JDxTwkQ}{@b}0{jYqAh2MUwoPU-L zBEA`XNcr{)6YDebT*<$l-`}YOA6CB6!uJPX)M;0yg!|9q3b@}(Bu2fmuuhcuIamG-}dAJh-? z+f96DEBasglsNwCac_?qIN-;9`}U1n5Xn-KH++Y4SDCBLRV<2+f=Ck!0y zTv$fG!hKxrl!5enqW!x+rho9e>oRD||NGz7eyY=RF8{7}|6!D>bItitzkz)?<&59J z{_O)%v-K|j{`77tT=$to^DnGk|ScyhT z%!|H-ac`7IPXk)MkEg{Mnq zU(lwcV2- z|8X(?1+S)H{`bt}1ES3TjZ%V>=~ia+{GZ6THn&tt34T9V@*7N>k}AQzvnl^t->APy z3A*VZNzqH`GU%s>Za!L~%@X-n(XqaGgboBh+&zII) z?iK%;r%B>Jr%lQE4-x-Se@&D9pNFCSA5A|R(U_y;pBO2Tzn;#u==a7(`*Shif8PQ9 z?}+ms8{=>G|CDKz0n1OnUgYP{`y$cuckufpkqVLjK1VXUpEe~W?}hy6w?%#g4^!)# zisdd3(c4GLKXHyk{xp^!aZZ%{@mvY)|My1A+xGuiasFd${vOx=I`JPyyB+^%^Pfer z6PYXikF1x(FQQG!`JYM2*ZM}|7_w)ZG=B!#y$8|i71I1)N#w7j3k7EcFB#hW$8#~@ zUvV)1+vEI4+x+)ktMfly{KND;qv-j6gTHqaxd;A(WOCl2P09J60snPr-29L7Ftxsw zX!mMFGt=asSRj$Vn=bU65xiu${#*?B&pnv`ZE^kqoBxll|1|MGCA}(U{!gOViQEnU zwUYQ5v?)3N(<%8{->GB7@k_enNKwX1GUHu{R=*(8#}fHV#Gm&X*Pn|4|9cMRe`}n7 zfz5xf>wm5IzjQ>b|DPy!B6HyXmiWI$o09X-75~u~W*!ei{^-Pe|en$s2Kl(SIzqW!4Z4`A?yD&Qi2!gQYCr`c#bb!w#=3iJRFu1 zyh@vrD#5jOAA!;Fm(KTQKaui^vZIHW=Z7F;}Ycaj-w^$%k_{Fbj*n^LBjF> zmN@@QV*Jhe|ARaKC76Hu96+@EpZIeDk-ISets?&#ZAwbs3;A;)KaYo@`A5fBAX@!A z=3gRzGu>!&M(|#v^2c)}F#ofow5_M|Lr^s`J>~@5UqYr{BMxRpC$gh*SP*%4EW!5F#obR|B*5N1+S)( zCtU)3e6-vDS4j!}OCR-#J_LNhAN|>Khm>GxUuoR$Xj4)p*f&s0FzPR9d^cs=h z^O?wJpyPWGt^R}b|5poaJXZq!KPy_^w*TK0=YOHizsL2T0{;!MlYbV) zPUJT6{~njB7tyBV{7<3e>HP0?_~UYCCEC3Q(M*q&_$yrebkZAD&WJ(L{#*?B-+nOv z8{_=*ZT`Dm|106YJI<@P7^d-^l#0M7#GOnz?TfFAQHv(9l2|E&k}zah^5{1|`t{)gu(cl|4p5Z~ ziaY;Ti2o(@QKM-8i}<5QTgov1xK%NZHYMlZ5B{sgKaGc>`TtR7{18N+eJ{~ox}i_E zyi>)WcO2KBivjqR+mSXt_lGV)5ry!}aH4!2jk0`d<_0 zKQzwYT>tJ#b4Cc!2f0V%WZz&WbE-T zBN}M@CGxMQ&)U)Njg9u_V!;2V1NxW5`JWT#Z`ME0B)9)B6aOpdqm$A8pxEXPfm&TKapZ*%k|>_d)%KMOq-JP&w&4n;@^!c z-c!)=pCUT+8}Z+a>)%ZA=T*bq|G60Ozu|!X#c}>aV*JhVuiHKTT`KaE{~CMzyPRSt za-GOO@`7Z2Ep19l-V6C>aQ~wp4@1YlWpc#JM6~(|iH?=XUqc^sc1G}$q4LLbB}BgS z`e=FE@o#FJ|Cu&_$Mr81|HagH(L4VyD0U*##s5Mq{=ebQOlI-(_NC-&egB02G-+_( zHncl`K9pX2c$ZB6B#HdJ^g(rJ1TPt`KNkc3*B#7%N}T^0Hvi9E|FPo#3Eg>)_TNIW z6PbqjKSB=vU+~T8r2LN)|Iy3S_~ie2xyS7rgm!O2bl6Vue@Y^Mx%l&v;reqi;6MFf z{#VBNpC04yp8xdSc^y?=?*ERF5?ud!>@ILE#m<&%r34Q@FS*}Bo02NQzI4jJ*5|=3 z&|Dsd?*F3cPet^~QrQLiOXTmM?^-zdyyIvI`f@$6|4)l9LBjdZZ*%8= zw8#&8Klb2%7R65F8uUNr|03Fyl)M-6UqgORhsbY3$M+z5_`fp$UrFQ-viu0%YgGPt zt_0@)+Gu&({$CX5KiKB~nd=`A|Iq4K{|6{`A|>$0eac0&DLMaRDS5j8^T#yq{|P)y zt#8oRVqA#m_d6sSC6T{{z9{63;JwE6=VHMBnuGaIit|4$#^3FK&!z79Pl1$R>mjjA zz=sq&TdtN8%sgC{0EaduRf2s-O9@6bO9`5J7`p!bN~E7bG-kU*%OvvWa0&AJM3tZ~ z*8}}u5?z9X{=Xv5KPSfD^#3RB{Erg(z_+pUe=)^QS%de|6d;GKgi}Eas4k5{~P1( ze_ki|Ka0ix1l*juE$RE8eoDU9cjYK4_n!D|07LlyyK3iP07vwQQ~jz{~g7{(D~2fvfQU4 zT3siRM_n!(|5@?> z4PTiib^Je4{7=11=6{-8;QBItCC0^wRzD`uB#Hdp^hH}|1n)KO{BtqjKlNb#tA7E1iTrK!MR8{Y?=`MJ7X$uR9?U-&=Rd&a|B>r|q4N&Nq|R}N0&X;X6khl&5_#x!0=kK$oy{dZ*0R75kk;rJ(!znLC%;EdqC z#`Wi7z`y8V{+Gu2pA_T2|NZa(y668FNC{qeKehzVQS5BFLP~HvZdJcZo02NQKA)6e z)KgM|N*;#Z|NUH~??!av|Nb%l=KQDA zo&WPielor7%s;yRUrwoHqO7F&Hn?}KTrHWSsm-Yg<>Z%5&r)t{$J3hKcijlE~jn4_a|X@LuEkb1~q5`N90h#QC2X<6rQqPo_EJ zy*+OK50?_``!Kfuf1udeGC@l4EpF8x{!x-8*yoiJj9Qk)OF$cqOeL7yB_013qO}o; z)=1$_orv_KXQL)ZUk`r{D2^02gkUm|}8JuAq`=N(5|pf48#{u2)9 zABgkMiu2d|-}&zK-?`%dkB->+e}`gc%Vpw!K5kWhK%0{D_lWIBL6CS)|HcgNVGo}1OAsC(0^2% z|M7ADY1se!eed@FQ1L%`Q*8gANU^hJ9QwaO5+6*PlJoyj{J*M_{_p;m`1e7_e~Rdp zpGp63mdKwY{=90q^UuYAfAE0*m&EyJ#`v4#-$r-+KS$&@z7s3|cZ!|Jr6T{xuSNbt z+LV;M7xK?ki~N&346XmwqFaw>^+OUpCXv5^9@OTH;3Y%lkLOB=eCN1mdE4>t;yC{d zn}56Of42CC>0gd+{x>LgB8B3A4Q|!G!^tJn{NBAX`JzUa3-$Ahx8H@R^m&AXdP09K15&xHK zWd2|0VQBu*?yC^3u9EqGQ6hgOJ!sGw!Apkg&&7a$;lcbz#Q7g*^Z$qIKLq~tz02tN z-@)I*jEoWg6L72Y2ilaJ{}19ndWn?rbsmP!|38u$UxjF9r$jGG_HLgDw1O8(U=6_+Ff4a?ogX@2W_@A;ScK%PI*og$h|BrZc<_y}D z-2C^7|L9*y8NbBa9V`DWGv0-0=KB(Tj5j~puIKsZy~g$DV!(fNqCb5vH=_m5E3f9~ zmA5UVYS#L9(J=Iv26ykI2Beh|KXksxd>#0_AIP%-{4grJ@U0fU9K8H~f^zV4l&`b! z1>o!H?R+O6{7cH0T6pt(_Edg;N1DlB`Jw-tuiis^3!g~V`iIf7A^E3Rc=LSr)P2O) zfS;p$J2j}5hrdtB_1T2yiFfdu;3eQ+Qohl`w}S8D=eY!VZKL`tKik4L8a|cyEbznh z`J@FF-aMZjzyE`embLyl%BNd+^L+MV`Z$r(0{$iCBh--bz9W%Og*^WV{4V8JSojR^ zdA(H667a+H`J`1Ae!F?zG=06p$u;>aUu5CU^T8`P|6X1zYW*)MpKalnVf>zNDW5j* zyOiJgU81jfe)@Wz-v;o*^!cQ%7T!F+JC*rz@N<-}v+(A5+sQy zInCs+{7?(O3A{Yts*{hN)c^W?(i9879DF9{-wb|^^6lRy)@LF3lXg=+mEd1ezR|)@ z2Vc+q90b2h`PmkJxXFi~Hqf0#a>w93M7Hu=*Pl#^@nSH8%?uK?e~>v=C9 z9jX77&$jSpzKYqm4g4pIVfuX1RtrB8`N;Ed%fZi4zRtpDftU3* z-{h}+sfFK;=Q|g2J=0A7$`7^h=K1yV{Eim0e(Li{Q!IQg=Bt8zYrxM@zWtlT`jmpd zm_Cl@lz@Lp`9=$Gp4Y#M`QQWSALVCT_?3UpJ_Jhr}8^@CHk(!^W7w$28=&UpHJFq z;g^8#;NPE74t|dEbryau_+mbu=9~PLFSYQqz~}JqFG&NxOZlM|ek}O=Pd^N9cmEd1ezR|+hfG_0pr6BlS%Fnj& zrQn{}GQ#;ThUMa{gWL zUm#_i#>3S5*1at=UX1A8wGvH|$lpK=+^?Sc*5} zKA=rWmEf4qqy&>5kV-c2Ftxt$I+^reA-X3lQLRM&3Od$1LEdq+1OvGqQi86tqDzpl z{tt}vr$>84&HsM?6J7rd@&Bb0>%WL%XUCc1f7l|KyI<3$Q&W-;4L79R4zLGP}SrpTK{f_&3XUnthAk660qOO?gwIWfJ*|#h-T^*Pn|4 z|1%Hhe@dKxZ=An*zyH`Qcm9tP|9#tH{ePg?*>Sq~FU5ORhj%6GAA$e<;@?Ii^ZcXZ z-$FFyFXF#OBL8~2)^LKn*SP*%4EUdMK>zGG|L^SnhkxkKe;@Qeotj54fs6Q5eMc_* ze=3Rpnl>dj{~wG0i?_&bRKmm1=N)d5Mej;PYiCF_Q6hhy`14-l`g1YhfBFIa2gLc) zqdlVf-yHv6cGv%Oksn6a&C&8_@pbgh!6N@erO01Io05|6vsL83{)Nczf$pH0qT7S$ z?VBa~3i8c#q3lfHT}I_k<4TBpcW$)2?fm!TIDdMyN0h(&dB3mTcIW?CDZvYL>K?uS zKgXx?J5G}l+`CY6f0Z^RRf1!-NC_t0CzY(^VQBqF$KQ?Up4X-SXG!GG}|JNvXcI3eSXX5`?+LWCC zX87ML{xv)d`M)8?4V|NSDriw--{@;fMYb`BKz(=qu! z@R2DQ`92?t{FQS>{&hLP`PQM`S0TE$MdV+U$Y0L#6L^==$v=%Nf&G6_w7hNqKQYdK zm(BlAuK!Wu@BMTEO}&TO5|jTU&9t-gRPle}9!dO2LXz|UxA;F)C;QO5@|gzTpc`ey zTaW1N>m_F5~)hG2lP&VE!k>`R}y(FL(Wq6#rq{WBt#f*x7js{O=b3 zi)d4F{+;6gGW_>^NyE_fe<{{~L~qjrwCQfZR}%Sy;?KK`>(9l2|EUM_&x-S>M|&jp z|MRZ@5%8yFhktbb<$0ewv*AAn{=70J)&C!e|1*nm{KM(apc~+i=QL z=VHMBqyzf*jr0E^&i@cu<}!|Ib%VJc(LWc_+N&fQB9XsX{CTf& z=bwuKe|qxE0sQ;K`O~94qKlePUgP?6G2l;6emQ`DdYnH!+9Sr_ z%>OGVx&B`9-x_xc_#ws4jx6zCdaESvBzp>Y%zNU018#FS^Ds33SIdk)gJ|tkiIz#^ z&l7*%Yg~UW2K-Mrp#QOP{`6>%7=JVWpUE%8;pbi4nj-$z@4M~ziTFQ!zs!Hq-*-Fa zAL2i$T*_#^?>6j3nQ`-dx4z3IGT(P=qR)CcLEdXze=Y|6>ESO2nEzwq{JUcO&GpaI z?(yFv@}ZAncm4+`c6J^w@=x3%SudhZNi~0;zl;2pnEVMm44wZL%XAkadizR=MoHw) zV)+TY%c%TmTnUlyrYFDbm#6)*8$J3BI^1WRX132x!*lVnbTkJ%t4Sb!4b%4Lr46mN$kEZ|B_)il5&G0W1f8KFie=Y|6 z>ESO2@INxnpC0WIGymrMPT%bJ-vfVo*Z}`%|DQ;)v*S4U-wc1+l$`(H#Qz-QZ;t=y z_)pF8{|fly_}@XFm8Rbt8|}}sJ!1S15yy<5?Dzjc{I|Zlfc0Jf z4=Hwb^nw3P;_uL=(zi9k<81hHQKZ9uPMEFbOUqzqw zcY?gvxc*!W_|wB*4&Z-yoIgFF$=J@}Fd;I@S^e;QXpk@V{RCpQBC5 z`L7fIhcNlK^DuP&gLW@N^!8=qe}hE+H1X$M#`Wi7z@MJ{a$tX7oIgF-ep{WE(ZMR z$u9@?KQzvt9_84&A(aymbm@@HTs_pyI!()`=4TG=Mf@*!X2`3E#f0{ zGV*;|MgGcbrG^va0Pmaev|R2LB0B%K5{;6`-!_f=pZ6M-KaDGa{y#EWp30Cg|0!|) z^k|PL|AJS|_5Yzqx%0nEO0bV^?nTf44|4x6O-iuz8p-|e_meEaF>gu<-b4Sl@ohvp z{-NXFLbP_Q%>NpR{CQl0An!F=f`MEQ%s)N(9kqY|-zoloc`vpF zUZdFAak%*Z{&s1BztX0pTHu(!i2tM#DPs)}L-+rll1YCE(Rs@xnlF*R>00*Zy~g$D zV!)ps{u1NQ-%s2*g{RYBOjpoOCoe3u{*5#S{f)uhDKw7z7pPyDZv$UXA2)KE!S|t> z3*Sx+8_z!rzM49~sRTb+`9=$0J5}}aqnH_!ZzQxc+G-f8~c- z_;pvv_&v;b^1?#>uY8Jye-?Z(oo+kL;QQ$Ji`(BwtWTBUd44OwPgcIs!k2?@;(F%t zxo)k0vGTJm{7CSb^bVlY%jbrazw!kZeo&G4W^(@BeCVY9*Y6jnTX-M%GUi*rPgXv% zCee4>B+OSA@ipKVE5E|RuLGaS{Z;~gqw-Z2emVFGzR8kn^4ISd7g_jP@LkgXh2lF| z`D_b63w$x%PIubCFIIl%>xsS-!LQi}q@k~xR_&#*cPWInA3!i54 z=bI||CV%BiEqnz1u!?=tO#aFbwea05_;l8v$NOU^A4;izluxnnyG{P|cB9h_zK?#t zxc#-n`fLK9%Jr-SKUw)k3qLkP`lpM>4}xE;{A>$92z+%r@mVH+N<#)Cu`VI$QOsC&Y1Ne=~w_5lN z@MXNel!Nc1-!HDS@Vm!KJu5i>e3QTOr51h@_+nl^(@g%#54G?s4bT1789@IlpJL&c zfUoEErx|=7{eE%#tBLiQ4_?;WO7N4FZ?y2!!FSN@EGGzlvGTJm{75rC_gj|9U-<$H z-yeL=7UH`L(Es}V;&cnYcZ}3Olk3w0ezNkB)rr2F!T0cbRReyp@+&O-8u0ZzUnSr- zDqm&cmzjLHKDj1;{eE$gg`W>TmGkKxh5lDQ+rrNPU&!;@27a;fJ69$8P6S`U>q7(h zjmo!L_#xoSm@fz4N55ZOXW{+eGdZ7plfUw%7Jm0=nXjG=#HX43l^<&1H-qQr2RogY zp#POmvG8laujl@02H!`&U);Vju|CVd=ka`1f}gB>qlI4xK9kpnAo#_~&$jS$!FTZb zkY(~$zQDpy1;2`~N4hUY|LgaQ(=GgP@WrzJgP*K?|P#@>jmV!p{KT@ivX$eG&R!zh9hg;m3k6=KZ$?{AA@LD-wMNnf#fr0l!%J z6&8N4d43enZwdH~%2!$V&EUIa{Wtm3*B){GYvEUdui*LWy%7Dce71#O0=}5*-v)lM z@;hHl^qmX7gU4?Gzft*C3qReA&--IJ_&)mm{H9gHr$Y7ZU4Zo+nn%{aFcqvhs}yS4$dvrkE&L$xP3+qOezNkBKPCG5 z%=mn~r~$uN`4tvE3w+Kx;`7b=uY8q--;U>H74z{i*W^#X<`w;K;YaS4>$?u#zk1I{ z|0|yz!`J$o>4om2%*I8&$$y(h-HXM z%=-m7r0irZkGfy_4F__+bk#Re)0=R=e9C{~{99xE$DaEp-7Q@`U*9hn`Ju>fr2UM4 z^!Y4e}w`u|(}cZFm9cTnuK?u36p{C}WL$@%|Y{7*H{ z2jyYNAJe@G(b6H}|Dr_xH1U5f+MfgX?>d;j6X*XIoB#c;f2a6|+G715px9~s3jPJ+ zzlb&^=iem$SHgb+4@3T#@j^sP&lLYr68S4>p>+EFG1{L4`0qTJ|L1Z3Z^Zb!@0UJy z2%q5c=Or)vKuWN+HMRsFQtZ6(U+n**qy!FaN~#1~pOq4Pg%ULLFtxs2nDl25J${Ci zV3|bzE;`mZS-fiK`z7CSfc^ig=n^FKe^;FUnmGSd+08SKk_V`W|NG+4?-%ipE&=j> z(HlG9e~I`f{eIEb---Ww@Hg)l?ZTv+_lq7sUHr}aMaAOJ3y15^0sQ}aK>uxV{;$XQ zoAvKLxBojtz7HMOqven0<9zFO^#8>oemL6$NeTY(TI~CU?@;W# z@uigDFnnJ81KN~S3AR2hB^WSLD%rrp)cU+XlXnPzh3K;d64grN&*Ktg@xq}c_=W?_ z|Mut-B=rBMasKpZkQo0o_`f0##FGC1m-t^oix2;3|6fG0^TrqG{}Gb-I9{KUdCPoj zqxgS}$1bGFGUwZcNk0V9`KV7xE)yf_>|%WY9cBGar!X9EtojbfN6@<5ffDzvTe?|9_(8ZTtVnasI1g{N2w> z{QTGM{@*SoxPEo){9jA4^M-@@&zJeXg*GKsg0252C3pJoB5yP&i{KNA9^)b{sD@e*3U)$)(b>_ z5p7CJ{*z@Q|0(8w0uMvyKZ8WK5Yf_8B^o7>znta!@sgqP-*SNYccSHO^S>p|f2GZT zw(I{7@jr#mJo!f#zmq6-TD#zXzWAR(o09W?QvB~;CZ9R^5~n-6G2LB=mYyR1ALHbw zlWx>G{dmc6{W*aD=LhrO9OwUv&Hpaf|L@}8=g+bJM^o&yZi9cG_@79dlJozK_>X=@ z{6A{J{A0#D5G~CX|Mw*F2gRRP4cDIo_;(%5|D!m6dNfGX`fvLGPS<~f_}}=K*!Ax^ zik;Ta#Q%wVB=Os5Q*!=Ki2td>rHp6tF!a2%d9vc=AiA_tq5%^5Tj)l!(~p-7*PjFU zZ#$U(hjIQd+5GQt{og&n{{JcF|GfW?`+tM@-~F_dQTKn$xbFWaNALf+;?Jvw>(2rF zKRcNJzvKK@*!*X?{_mjw>26B&@$YDgoz_pp|Ma^h@e^rNa`XRd@jvxkDdR`HjMVyO z{8VPV1JP;sO7xyY{swxZ#OcSYhU?D({69UIe`lQki!uK0^Rhnv$27`A&j0=s8)1yHW_y616`EL{XQ`W|=eiTM8${!hvUj&FB=F|J3n^hAjslgQsq zZ`3;dc-3(IIe`Di2lMZU^QT9HB>I=T{%?!_oK>;@cTnuKZh`;V;(tGFO3wdr@qZcq zBX}5^f6RCuqNOK@|2Y!*OT?d74cDIo_-{R!|E4&9dNfF)|1GZndhrjv5$pc|#ZK#H z_@5>Ii)d4F{=X9co6P#p!;n8_yb#gSEb$*Dk-v>TXyEkYCByaS0RCGJ=Krra|L1J} zGhP36;vb-8Cwl$Am|~~(Bk}+9EZK3#^U9P||1TE*Q-??ykK$o!eZG5Sxl2X#`CSru zB=YBrKd&0DKL_yNd@%oi#`)8uK@#V`%=KR@{*(U{JO7tc?6iJ}`9D(HFA_a9&Pc>WK(2?;R= zhc#prK~q6T4-FYL2@M(T95fcx1Py0e^jJe^N1{y^76grDbdy=LooP)E4ViUYLSr#C zLF1FrP0)B})YfASLHSVt+K#ds>X|4#UQ_46%*wBR%@KOf+{ zTkB*zWzUgsgg;OHTElOEZ{Yc?gin6nrq1vy;alho)+==5*Z#wXUj#4XALYG}KJTiZ zZ^<|OEcm_X_K4RDf1dhnw7^pHPJ`#`E3Xy)UiDpu&w}sZ`H#TAqQ2Sin{Si(l)S}m z{QCKpD#Lfe^ZCA)Vwzv+blHvbeC7^-;H1UFEM-ozJcdwnBNU){OW^---`88 z#K)@>eqa53%iul!yuI+*+c;t|z%X?*Jm0-|XI6YQ zKc9V(E|;zEGkn?EBM)e0`qZFZ=VqaAV=Kbg$1# zemNw#acKo2e0{$7?lJrGg%lq9bKdJ?=AMf#_5A$F z7gO>-V&%UqnSZ_HkJEp7Z2rfn?d5Nh{5K>2Gd#F--k(eFME=Q=f3alDnm1n(*PwM~ zL|WHND=@&@s^Z3%4 zf^Rp-6x@bOv~r1=bsmcTbhQ5aHJO4L(h6kr6x8y<(J8oq=R>9-w{Pqe`1b#vl>94G z^1J7=pU5AiN&crK|FKVu-vW=Ows-K~B>w|HmD)XtUP>?jGUPu*rg1b*-O%52R?DXM z5n5+lA+4>_3e@l=dMz)UWPY9u)nZWvgX>54w{O8$}{PfiwW3JDW&nG|lVe1__4c`jiL*H=k6}$1PuQL21_#)ola@_d!?|G&feh&P|KgbX8yD!zh`V7O*fG^id4=pP$KYJiNYY;gi3o*k<@F_-fv7%i%-%_dE*?zxfiGfBC)VJU4#zC5B%M zpG$8q-Y~z_QvIk88h#mk8P{7Ud_w);5`W%G_?8{ie9;itm)&=YB|5zCO^C@>R)}(@N?ni_t!h&6Y2+V_UD}epUeF>!iV(ldDa?!5`4pJ zgx=@y;6=>1=mBN8^8Ln;rrk_`2A>f7u3J{e8b1!`#&e&3m?+I7ur_q&szsS zG)%q~KB~UU@RjfdeEtxDkE?Gs{B-!-SI8H;@vE;g{6zQ`&YR=Lf1~^RsA-1Z`aPM? zq2H1p$VC0C&oF#1eD3bFzGCok^?f(_=VukX{C#pQd_sMj;g`WzNd3cyZgS&aX!v>X z^84#~Zv5&?3_laTUB3S!1NE;yX!vRHLnAalo$v|ugE#u~2H@rI`5WOwwQl@t4Zrn5 z)N?k?XC-`8eVySq!WZ%RTcI1j`mo_w!DsV)j!r=RtIs$568I7Ngs|5OAG+C%e_M?| z?;Lpfz2sK-sQNC$&$>?Xc5wgYZvR)`Z1^1&;^ptLi{1FuR~dc)zMZc}a@_cD(fT+1 zI{1n{8qdI&UzhVA^%;h5f-j&a=w1vyuD)-Pe}3k{7xCZI*1{*$w;6sWe9N0WKk%W& zTK|Th3_r9R<;`>BS6^cIEchP&ee~fkByU`O(C~wEaJ=OFA3mXe@Q41q>){)CeKo>| zmT3JOej(ONnVkQ_N7dIEeg*o^=Fbxpy78+I8-59VJD-n@?vT6*_4$UM=f?jf`Cj$M* zw`u(weyZ!A_rp9le)T1W55QM^Mt=A+)W7FNSZI^B?$7z1IKr z{=7l>7CwJyg^#N5GW^!_u%C1P5%{?JX2UPU@oMMu+hR9<^;L$S8spoUfdXESId1&7 zYyBI30mf6r`}x2q>R)|^;b+0i`FspMuD;=*F);Z1|a&&yGRzqaUOG)#n?2^SLsg9bC`7@Sz5+ z{{{ZM>)YEL}0KS^*r`U~OeU;(E@bY~_Id1&Rwf+r1 z)%E{6^*=Cz`d6P}_$=2yJ)!Yp@NxBh^ZoO)`Mapk82MWGg!(qauZQpHC0`C7`mxr( z;a9@v^8JlGH-7achVQGA@zn7Bli}^CfAvAb&qDtVACd2bPpBWf#-Dd8{Lpjc8{tEZ zTK|R*xV*n4UkM*oUuXE?*)sm2)#MA^_|=CEzX86TkMHPzQUB`m4L{)e=l8E(_|P3% z|3C2OT@PQw_ZwT`qw2d1-wNOJD)|U}Tz#|Q7r|%$oP4nxzxpb}&xNn%=NCC{{C8^o z8-6Yt8sS4t zTK|Th1)t07s}eq{zRvK|;Tzr{U+BiKK5Y0&uK!KsN4KH=)#n?&_HyhGe16^wAG%BH z|0;jpP3MTO{vG*N_^A3W!>@<$;roXX__+FJ!?(Hq`Te)pjbDA0;g`X8@OsH{U^(BVSLjV1I{yh9|)W7UhHc~v-T2jq4c`PW`|aq5sDJhO|F_ST=fCiwd$s%7&W-EMDeV5_G@HIUD5%{?JX2VZ|Z;|U?H-7b1hMxpK!p~cC-1zU)`Zs(I zd2^%;hrg?eb=`++g|xca^;{PWZG9qbQs{R^K^-)8t#@VP&w{>$M*_iOzd zeg%95*Jqv^zxooxFN2r+6~iB({?!K!zYxBC4fWp%pHM$|xj*k*_cfVghlf1qg;+x*(2n8;X^H2|5g6H z6K9AY;_K^H_^A3W!>>XAH9S8N__+FJ!#BYf+(*9HjbDA0;g`TS@cokH;Cr4TAA^sp@4L)DKQrO8c|WX$PpEG*{50oz{>$M*Kh^p-e9(D* zzs_^xS6^cI?PtmHYT)br;bGLj`k>)A!T0}%d?$QD{owcgc^Bb+U9QwWe5h6H-|)-O ze+B2QgpaDPGknDPH^~>e@v9FTzTD-N`u9-(>hldh)p>q@?}ZQjOzZzrf8GFm4_}Y8 z!bjD28GiejGXL#-ydv;%_05Lg1V6;%DR$#mUuF2U?)l3TtzG;QrOn^Wt1mIUK0o69YIq3suRdsa_xvcA_uEeRg!;it{CSsQJox)4_|QtNf5Xp%m;I*_ zKB~UX@U!4^e?{XdbmLbaHvCjKKl1s9EvSF>`G(JeFXHE|z3`!*YyDsB&$|WptNYiI zZ-tMl?=pOFrqurkUoS-9Z=St7vm{hkK{Yy6Y2*m{dx1@+qoVZ;X`d&|ArsM{!qjF zLnVAveVySK;CwavUh+9^|5qP2d>i`DevbU;+o*r_`G$ATYvlf0FMQ~iTL0hk=bhum z&)1Kw@KN<$hMx}KaXzq__mW} zKj~;DpXbJ}zQpiT(SH%&pBa7&^{+l?_$+w&y^2owg!;h>f8NdRc?Z{9BYbF;*1zG` z!;joaz7jsFzRvI~;j{U9WuY6t`mo^_!8h>zfzf}W{?+FjJ`69<-+SRh?OOkH{CVB; zodRBut?*IxU50nhcWStvBk*zc&4%CXo~OJ@zSxaleU;(Y6iYo6@%`i+H~wF1{Ttpr z->KpKYTzHJfAtxLch7ff9wZ-wkE`#yz&}6k`A(6X|G+2Iw;6si@)mLbL z3%-o^lRP(m^(BViisu)(4djP6qyE(g4ZjJ#;0^Mf@Co&U=lk=z=RqBOzp)WM6w~@Q z{0j8n{}b|+@KN=3hF=6uRh=KlihfhQUAU0q2Fr# zpXbjTfFI)PomTj$`Yyw7bV)TKd6888HR5}|MGdc7<^oP-)#T<%!QZrRSTa`-)8t3@a=ILe>r^Uajk#D zPlPYv^MO1!e)T1WAIANE`8?9_>!^SALBnrw&kJ~cb;2jq56<%ET?Jpm&-WYQLu*0(3K|TT>SKn;-R`{WN$QQfutFJQrBKU@f$mh86KcV$+ zc=tS_jOTM;6Y5`mhT#j*e+%!=G5EOpzO()Fvjg{^%Xs{?@Co&8hTja|!N;o{KJ=v4 zzv0)z%jakE-1ya(7=9&u1>dh5ehu}nK4|#9W2GM2>&SP)C)5vq$Dh~T&u`%C{YLoE zI<0@hPyg>+`Mg#=`AYbx`Z~i;gl||yzR-rANm#f zUieUl)_=J_?}kY-KP}72x57u&cNu<_^G}nHz{k}$8-5vlHlHsQyYZ{9GW-Jg8ovI@ zapQkV>)-Hm;5*n4yn^~ypJDicsgk#V-ydV}arJ#?`R6C##>4wtEqp?Ko8h+~B>k7& zPQDyI^t9H$;Wxpz@cPYj<5yo|_;v6@e1B}X5B0A;X!sTI*?d0S37=3uc&0z^BKRIY zzK!sqPOX2#&vE@Xldpu2s;@Krboes9J}PwMS06U~MEHUy$dA5^`d6QC`0WSE{8#XN z_QHpLuk~N%&pUXu_-ft{Tj8VXy9~e5eg7JN{v-k)SKn;-MQ%L&e7x9=UwxI~=fW58 z{*&Xz|BTkZ;b+1({GI&3-%$VRGYmf!zUWWnWAJhHeKY;@GZDV*Z{%y?6YARxzvCM+ zpE&=45B)*w-|$=D<@srz8^8Jz!*77E=K36d3H7f&X!w=z6>|O$pHM$|hClBjHy%Ep zZ-fu6*ZMbnXQAXB>LFhVA5~vx_(|x$fj=Ku=*F);Z1^2{(!V@U8QqBbSD$bA&G6Mc z{$BXdAGQ8Z_vc*?-?Er|D|}Ram*H2!XY=PFBk*zc&4yp*#{XCH#curSs|;TS-_Pe8 zId1%a()u_24EWsp$q&4U`d6P}_{s3{dG8o}Tzy}ue|`e+)iukPjDUVeYK(2ZYx*zj}UD|kLfUqJn<&o}%G_-y(7 z8+@o+>;E)=-l^~-E2;lh_^A3W!%u`S;Lo>2;N$9>4ZnUejxXQODR$#mUuF1>`=fqd zCZFTR|E$)(;n%^J{hIthFX~@?hT&Ja{`vlV3_h;D@7wt8IQjcKB0c_RDa$bxj0@t zo<{i42CaX?Z-LL{{jCx{s=m(f>kpUyYZj3&bmLbaHvCHTU%~s&=<}$5_4$Th1~1Qd zdf`JoTK_Zrc^AMJ@cB$Dd{ljx;pf1&^XF$G@NxCchMx}K!0WNtjbDA0;U~kl#L4Hl z@jtKiZ}^FBJbeB+(1ZF{pJDhN6LEZ>Cm(~4tM5C-KR;XGYog?9;S=iH48IY+`eyRw z@S(qG{Tse3U&hnH=ks}P{OU^#zYP7C@%ixZ2Gqa$py3y|y!`pVPWXiS!IS-Y=fYRq zMZOU})T{Mx_!;mGe8033KB~UX@RMEt{Qgzw#;-nX_yD|IzmGnL`d6QC`0Zbp`5fW> zwiiD1g4X}H{CPLS%jff3;iKxi4BrJ`z{e{BA6MUO_*VEKp3h=8e)Uy`?>a=rU$&Nf zjvN19wf+rXg8qB>e(AuosDJethMxp4pNEOT$JO^0`{!rJelngKUca^Q3H5D;-wfZ- zPQDyI^rF_k;n&0WEG3`k#;?A_@GIfVc>NA{qyE(g4Zj4wdI9-P_=Nhwll*z-!q@Qi zS|faDqt?IS=fG$4{e(*RsQNm?Pls=~k$j;WzxuG@dvX6kKEFEJh5A>YZ}`D|<#@Ho z`44>PC9VGx{dw2Jmt9NaX@!rf?=t*Kcv+7T__+FJ!*?NXJ72FAyYZ{9GW;yupK0Lt z_Z&C=ziIs&ek%M(1NnhJqyE)r7(NTWhR^q6@NxBhMgIBOd<^E3_p4g?g!(qacf$Ac z`*k^d=w+>c!{_1tMoSa!?^5B~}EuRdt_68Ky`pXr28s2`l}&pXMD zpXa9$KGdi6Z}=U!f0E75cPind>gx=@3j13T-`_5D<5wRxd=q>-&;RHjQUB`m4ZjG! zpRX5s;X|)z{h#2^I~TqnLcSF~s=mwcGvTxO_(tI4>YEKe6~2epd$Ak8`YOZE!2N*^ zzFy05<9}7_-|$-wmip{iNPb{F>R)|^;Ws*eEBP3FTz%j1{`px4kMke+g!(qauYxbS zn))w?551=KZ}=7P6?c=*bK_TEV)!NS?RbnfT9=>1Bf8gWln+@-tFEsG}Q|!jCzRK`x(0>nq zUNpyz|8=c@!>@4T;rk~8zeoM6&oI1u9?`Ibd<;IWzVA5y{47HMEqp#%3!hNmX85^o zJXeq}hY$Ua*1zH1^NWh>$mhB7t1q!Uu6KHVKz_Ir^{+l?_(>Q~4Zpv4!Y9-Z9_!ER zo_FN({rN`t(16yz;dkKuOFoZO2_IEoXZY>#a=laN#;-nX_^t2_e1Bu~Y1F^^e8X>o zA9<2|FMR0lTL0hl=Uorq!uxY8d{ljx;a9=u{)T)6KCZsm@J;a5d_G+4#;?B0@QdIp zE+?Pk#{Y)azv1WNe13%A?*^Vi{j1L~{8aQm@De=eNQ~)pr@*J+G;*BOif}t8X^^M)WVw7mD5Z)mIsQ z4SWxeC&!KdpIZNhUjd)Z``f^isDJethF{`5-+zn2$JO^8<)5E<&hz_wEqp?Ko8jlc z7p)*)4j+0;>)-G*;fHuUd2ambOAPPM53_kc8GZuwuRdt_#(m`cu;@1Oo$v|ugN6RQ zSr|_)zaKTihX%F&4Zj`FM=JRIq!K==zRvJl;EQ-Y7P|4P4;$V+&#K|)xubE^zxsT` zZ$kg__m#cyp|`dEkM!qt&%es%QU9&*QT1JhUxWVp`Fx<eV4e!=(8Sf{>Zv5)2 z3_rY=9IxzJ@;Pq&?`ZuSJ`4Lv`=#Uu)}sE^XBghC_aZ(&iNVL!_f7H7k6Z8Z`S4o! zg!(qaZ$kYP@cCOgeCS=Rf5UHp@41S6o*TdV62q@|>xK89;m1+`>Vt-N`$+-&PWXiS z!2*BYmFRzj?-w<~hqh?_8@>s?jL$zS;iKy74Da@zc3$s=Zv5)Qh9BM&_aAuw8T}pV zUwyve-G0);*Vn!9p&_mR$^N|4G5&Twe`tk|s_!!VB#ZC<_|=yfe(N6CA8sH&yax5JK4|z#^xq@Tf8i7A z2M_n>oetm6f3MmI9~##BH+&v^HP>4ud{lj%;kUWxvwVJA=*F);Z1`UIGTyI7SEK&b z=NsNV@9yX4v%T=4e`)<6=Fhu!oy@0PU$nwU)pr>_a<%wset(R>$JI9*z7qY*_n8#C z@vE;g{B-#2dg?#NjsJbEf5Y$C9s2_xuYpHV|LQXg-+Gn!T)zJhgO984%lFUELimnK z^0n{@^=*a^!)NpLX*qo81Fe6ybP+e)T1WkL-}oL$+K%e)zYjfAvAbXY3|< z3(h0o>h^#2gNOR_Zp8O>5Apqqh}-|SYW*921^O?N`#%^@RDGS{7rE~P=lRTW`@j0I z;paHd??(e}|5TrE_!9UU-k*D8GC!dY-T1d1;?J88-_HAID|}Ram*E5O@_Eq+d|Z9A z;kV3_`7b-4`Y(o0sIM~ooNVzmd_9%p#{X|O{%MA9LjOY-lOOmE>R)|^;pf3;%lSWi zTz%ic{`r{!-*XN1Ukjg5-)8uU@FRSGwH!Y5A2x$j@)mIsQD!j~pjvN0+TK|U6g73eZ`X5+@`d6P}_^qGI{yD^- zPl&er=u@OGBUF+ZQgO8y;TgX?!N7dIEz7xKN zpDz@;@v9FTe)0tAzl_gk2HgIsKHu;Q;79oWf6VQlBU=A?{=8dvk^YM=Azuq0Ro`X! zi5cSMensRF%)k0(!>>U9HGIC8=fF)PJYjKh4L|7%*>4-pB46yrufEFgbJ4%7#~e5Q&$RvxKNG%!&u0dHA@dVepJDjP zZv6cDiWq!cecwd?{A9s*{D^!ld_sMj;kV#?xPjka%HczwYyBI31N;!*56^SsS6^cI zHSqoHhkuUxS06OIJ3ntIBi{+1P(S!}f8HhNU%o%B5k9m->)-H;;H&xly%IjEzRvJd z@&1xKhkT(MzxuG@r=$NCJ|7-kiTYQcZ}`dZ?Y!Ui!iT=l`rpr=cOra0->+zekE-u7 zd=`AeZ1NHKxcX+pZ^!w33qRi}cH>uHW%#Y|{r8g3apV6|>)-I3;pKkjz(c5i^%;iW z=&mp1`4@a#ec!(R`C0G!=jRKx@Co&8hF=5Uem41X_|Swf|Kj73!wU^R{ZrW=H zD&eE*>kK~`e&lrWg>L-n!-fyQ%jcs;e}?*3pKtgq`2I(z|6ce|rW^mZef)X1XUY4! z+%IZ{kE-u7{AT!U-rpkdarMoH-vD30=U2sU{OYR=Km8M_hmI2RId1&BxbaUj{ERc? z_XLZ6LcY`OpXxIVUxo4X@cM0pkE`$7+dn_+K9=#w=K*S4G5_k@48H=tp`7|JhY#(l z^>6q&Z(YQHKikjyXC8c1eTm^`q5u9Bgx=j1>asxzR-qm+R|Z z_)xaif54x24SWO7e=B@ceV5^z;5+#KVFW&|zS-~#-T3+asMw8PeU;$@?@Hd9S>%V^ z{<)jhzv1)U`1yQhphe~KR;Wx%Xo(P{jnB4p}x)V8{s>6 zJ(k0VcGvnh{2JFk&u5++zxoox7rrm!DQYA?yaM&FK4|z1_%ePz*a@FdKln9&-pSa1 z`uToQBYY@F>)-G}_;!B2TnQglUuXDH)PL@&*6sewm-p9$No<`17uUuQ`qSZ-tMl?=rmG-wODACITN<-)#6Mx8C{uvlu?1zRK{+ z;H!DPc=>R)|^;pf3OTt+?yA6MU({wpW?rF*7Ii^ap)Ice);8DcV<0THvad%KbVyAd*7!`m_Y9o6MvQ9 z|G+s%9O?b`MEbq&vzjhAf_@h}u$?!^tB?CSz4HJ6!`_E`)mi+*-hq!Pn)kx)V}7oC z6^$7`*L~HwV`hhbU%M$VKzjHg()^>zcV@kP1pi+5B{P!0*F7%ZyEDh<+jD%rnaBT` z!ksz5?}i+1W0Cxr`Q;DYMzJ|KVqQvZFFad*%>2`z?>^zI#;j}Tr8F|n@}j$P=B(3y zaU^$h40qF%wd^NULycJlXid38T8Bz2P|35idN=xi>5rK&=c$q(GcW({xY?24A0MCp zjFkKbjXS814Y??Qub%6bR+-=r19`R|m( z{b)^Tl-A4A3iQ&#^;Tz(&Cip8{IhqK|MZmn2U_`GPv$>C@*hUmxtU{*|G|9S8$L(! zzc6|P=RcZWN-uw=E%zwP(kJEkFvH2h4`?BG)CI5E@3wYqq&`as%&p`eMCI4dXrYURkJCe8t zt=Io4t?Q)~h|wF5x0+W?GCxlS@}IM_{3R**^Q`=vlKDfD|LqgT*Z)7L?S;RC`u~{> z{C#>Uz5Eks@J(6Ak4)idT+Q83{r^}hz8$S84bpm8T7f*t&#NYxpC<$P&)!-7(^B#u zFfM<|)4NESPdw{w-QQoBCR1=7y*2Yc-2$)Sx9ZvDG6f&E$`ss0FQqjF*L`^=hn}$8 zkvs*(+)Yzf{c;I?JX%LAlh#ye1sdqwiGDYB%oHr;`H(3n`_9-YIP3Ng#_xaMPRYOj zxcqMado_9dkCX7F^lmaX{HfIT!e`<5|5U=CO)sStKKg}(eE6?{#TOukCpuU(&zHVuK&IGb9&)3 zCI8?j4$1$-12TAR_sB)g<%tWFY@pJIg;K zCI3V#e_t~HHzj{PeXd|^{vT1>3ztd$J3f@b-AON{m;ZCg|Ln1ox%kiFZfO5|Upg&A z>qg{1OEBSxI-B5lU?gq4`{7CZOCapj#-8l1B^QuYa=gC0+(|4Btq?G*oSovQ} z<}Z}|htcQ6$L2qnKQ|sOLH=gRe>A<6UjC0I|2yB5{2$OA70!<%K7`hkC6fOwX$5j5 zKQEbNex3~EFWp)G6I1fE+)p`Ttxl zC6LG6(Ef*mz8_jg+#)3qkXB%b?%jJaUO378JQ>J;+E?bEo{~Q>F2CFVdXx2EAmO7w z7$5#xYJ1^RCH$v%N%&jnrL@9F|106opC#c>;clq@7fakCw5HrFt>dH>sO0dgdDUq6 zhU6aysoETl|+&+Y8T-{73y&il46s(#!vmn|+E*!IVCkf~)DJw5H&?giOKXKanXY4tq^PACA^*FH38Z zv;svu1u3H(pr|6ZcD7d~0S ze|o2k`VD$1t??jeH~S=+f{%YJQ*aW!l-3kn_n}O|WmiiHjD{q1Jr4RuXdUrGnS!m- z3XITaH@p}x9G!xtJRey9#bc+yxBkDGl0SP~ez*R+lgIxM37>iK`0!s`#K-?c3IFMG z3I8=BX@!q&mGI|BB>aoiGuJu8XMkP|5H=) zXIc5XlKBso{PjN^pZ`bH_QFNT-yr$#q?gjm|AFK`{Rfi&9PWnl<8breV{rXPCI4yC z3JlN(kG$2qYLfYRGLZkoo#j6!CI7Bg{y!)4Pm=uc?~i};dyLv%c)H~O{j>7s_YA$1 zUjFwb{}an(8W(dnbpKnhgCH$jw#qdA4s7`ULEw=Ir`n$F;lRV=L741`q(M(t^cD^@@M`Z`SX+c50w0S)0M~A zQ^2oL+nas7x92ZYooLR1(Kf^ zj+Veuo($wa;VbhOrsU7~Kk^@%%>NDKr#GK*`Kj&A4oUvkar_V9_ouY-d&pmp{I^K{ z!(Kpsv|j5$erW|-=(C?*j2BKaKTihoAODs4k4(uw;s3~gNHTw(S`_?m#IH~81BaWQ#zvuriC*S`MK>pKH@>AQJeVpWfY6J4qOX=kwLjK#3pSz*_ z&r9M*(0cMYFaIyZ*Nz|E-cgkGrA#sQCTRdh%JxACOjHh(3Gn#dy^u^YdgN|8ZZLe{xFx z9Vz+U`QM(u*SEkIawY$*bn|)a`oD$R-t2Em{^xOj{>OZOI<58pF7p3K@|VkPZaw~| zqjdrD&yZH2Lh|#fN#^ItK>lODGXD`N`9Dv|?~eb~|47#VM9F{bvExsHj;6LZd#dFB zc!>=BBzh^m{O?Hqw{AU>9|4ShQ;vWAHFDDP5n4w?aQ-W;Ko9-xgcsvglg!VPf&Ab6 z%KV3?l(CQEGd$kCrKTs#Dhg)AUkWQ*hm&Ou^%~$V}F9H+2646@LR-ul-5Z{{m?R z+Uak9=yzksOud$W&1{--7X zZ|J4;^1p@rH%tBqcSHHRCGiz#z4k|G&6QRlSMu|!(Gpn7lY#t4e`WqdQ}Tb3l7BZT z^NCj$@&~fz{5L51|4GF+cK_pg_huJL{@4G6_dl-Bbe6z%|3v;;$sdz4&pND25=Z?>R7qz|c6y(2A@;^u~rI&xRCYhfn1No2KS^h~W`L|p7*CzAtCHWKkkI(-hwY_iw^4CcI z&*-J}^1mthZ%6(=a5t16N4x{ADVIzB$E6h*pg)}TR`Zfc=I6;k{wX`le^5&P|BlQ5 zzx)4&$Rt)HAz~54*J_~FUAWenV%;E`6qv6 z{%@q@Po(5`&p&tloi2eFz9#wqME4=a9{*>k?ae-1@;{G<6Mx}b6>07N1IT}aPzde<3dUFXl7zbPj&>b>v?t`45s4 z{H)1X?zw2azD|mNA87@0BtI{iWPY9uqg|iURr@+`r;ICHLsdvex3~EKXhmLC#K}zIxheJ-v8Y*x&LR&6#U|_@l)_1wY}K~ z%M`r#xGaI+&`W8Rz;&<56g+;dlt6^Lq5Hom`YX`7ATHB0S6YDzo`M)J9G!xtJRdRz zWn;f?$N%}yuczeyz|KGaYsvgslK)S+IL2JtQq;vDDHLn^C zzno_R^*{Ezcxe0gAOC$*^8agG{$%~n&q*HtU1SRWeaZOa|30<7*$2uL-1wLr|4-

-cS`>E zto)B8^G}fchtak(_Wkc*YJ1@WB>&G=Oa7yIXG-h+|0U$VTJnD|QSxuV@gG9##5HpK z-;!2fl)gC6Tg^)*nV%;E`Nw|Oj(Pm|O36QD<^N?e|Cd=4?s-1z-gCz1zl+*lcz?-% z6!JevFQu1%Bl2G*`7hya==~qdy#lS*AC>&)N-GeN{Jd(C`FS#sf9!YfnE3-K`L~SA zpWOeh-!-}aeIZlu{o}?@!Nt_}X6MQjJoTuQz}56pT2pY{i!ud|SIZO>ayRt+0|)(Z zw4VH}Ou-~+1^Vf`AL(~v$4tReo)4LVvaw&s!}!yzqA779DX&gn&k24nZWVS z^{;>WyVQy6<#tA(Y(9;VKj$>VFM-dc z$CKW`h0=fW`#CcVKNr4-#}k83em`d)EeIVBA3q+?4EVjSAYTg~)$h-2GyEiY`TnJH z__+FohTr}i-|h)CTtofmx$&znG5kjOnk&fC$F={phOdHesU}|upHN?C_!;mG+<&1PzkVNP*zkGqAJQlAywN$RANBc$ z-~O!3XEo>Tg-?Dz=Qb+%)Vwp???>?XYcEFqX#ZV?&x3ETA|FBjA^kqgX2WlFzo*8> ztJsZSeU;(e?}cUacyiqM)lW103iRK>^Eq$<#;-oZ@C)EuE+-#@PkujV-wXcvnFZfZ zpMdsi;iLNfnQewIgqQJ`!^hPxH2e@w>(OmKo z_>g`dX0zd!xc+&5irx6tR~dep^HTqA{OYF}ejfZcc{~GQ)W7-+!_S1T;QnLq$?xav zd)_}kli)w3%O9^6KC0iJ*=G117h?W-eU-z<)h{&sCitH3lh1SGS6^cIbgx-S-X4L|u}na?49{~i4<>R)}n;kW)yynIeJ=JrqZ+cx;~4#P|TweSh`U4~x|Un9pC zKBV7=*=%@M5Ayz4?8dLY%J7pOm+@EAhkCsn_~iF3@w4liQ)plQ2`TyMt1`yq$MwT*_v`gT(>4iTdgb`* zhf}HT1#=|)&A~z*=h^g9TH!-~lJGZF${g;=-85xwd04I(ve9~ArL-nUD=^9*o|xY~ zCj6N^6LS5Kv&Y!**75)H<_TvV|J+%PXB=@>_1@QIy+~h`;m?0xGXH-h|0|WZP2hie z@L!^~7u;R)|NeV2@HgnC^z#2v@<01)IrtB8H%(bH%j9skp!MGA(z-`lfr#Yq8k?Ud z1Nn1ymj8>C{Pa~B{`~hQ^Z#4&Ury_MZ2n7m-3NC={tG4lHS|(?`PWPSkC6Wu?uPQC z+zZfpuT=6MDy_f(ZLHpWUNU<9cqUH<^6$R0{5w+ezh>ocPUim*^-nWDHvg&A_JY~S zUm^L==7W>Y{iDzyB>y|Vk>kIo9OJB+XGr2~wB9R`)&yw<$|XOqnq+>S4CLQ!XZb%* z$xmOE;XnTOB=c{T{Lu@>um5YQ?FF-te}&vXxP@LyFaI-=|Asj-ji+!owEiEG6<>tb z1Fh0JPFjIZ{`|;%UNy=5JQ>KJy|etErR1lt%JApEJDL9j$sey6pZ_sxd%;~L{~iI^ z|DK_j(#!vQKp>(26zrsSuu%JAoJO6LEUB^&vf?YydT)lb&XramNAmNkN#^ItKz{lfo#ed<{vW>g|4&l#|INz( zlVtv3)IXhejLrWTwY^{l@`ok=Gkj)}R{p0X|9y{2{>5^FlQr|(lDGz~_fC=4_0kH| z(uJ8fpI1#XKTihoXYMTj$0_;gt1|q@|ITE7Px9B(%FCn)(D(lzQQHenko-T(k@bHk zFV3{`cS!yl&Xs9AN7i`OmIq|Tm!b8*{n9#3T7hBy{KR}-HOc%u8OTrHr1RCseLjSb^h%s`RS`N{P`P``G+L`D;JJG{x4D63w|N_kJ??1{~PpD zdikG}{5Q;&X?%#gY06r+LXLO~S~uP+t$U;u=;hCk%;!~;%+Hg7{9lf__A=N1e^c`R zbzJ`B^ONJ=znI3spC7(si%h|vX!6G{foG`g?X^RuV7L3^6yPs>e9~D0$37ubaQ!Tq zf<`&aS#P80Z%6C?W|@K|(h3yu6hwI8=oFm6^C44^{l(ZR@a=yerR0BMTz+@`vpjkH z-^Kc;uf^nl$@NcdFZem?{~Q_ho%B*#;X`o={}Imr&f#vT{!#H|XuWr$)c;%m@);BGni*GnsqC;55RB=hrRAphq(%fBrpKYdk(KmW31{5$T=Kt2J@fu| zk0kCv>&7N&{aIRpQF^fA&F58<%+Hg7{GaYD|G!i6(^qBqkN@q-{BKGA#O(3w|3hkf z!B0^CXUV`nqnFal|Cr>zuU+2%{=nVP`Y)0d-+|V9$4l#RX$2yZpI1#XKTihokM1o0 zhbj5#t1|rg>y!EaDfvs!9H0MGYJ0(tk^fA|&)+AMUj8+b|8#f#%iU1^>5@1bt@lFG znjo#f0DpdDKChZ&ex3~E|HPl4pTFj`%k#YU@6otNi>bG!K&C#Q%criA=M40I!G7XQ zxnEg8SDaoie5v|vRIsUj`x&_3%Kf*(*Q@U`{5<@A&(QhgBkF;*)%Q_Br_Rqt z_!=HhEqtavpKCMx8u)DX9-^2YEy78+I8-5e~ z5cfaIdkfXSKA+1s{5tps&f5!Ls(#yQf8LewWpsMxwZhk{?=t)nHy){f_-^&hhMx;R zLRUauu^YcWpQ|$b4EPp4zBz9E>Zcig61>d+0Pj6bfqL~BhTn0L%)j&>gYQ<~_o#n< zHpBPueo_mcsn6%y48I<}fY(GyFvO9sAEHmJdA;zZ>bJ%GdDp|Y@OWC`>(zG|eieK>_aA}pR^M#+ z74Ub_8L(IE#;?!kstmsfp0A(195;UT(+occUiRAoez&FiSD#_{>F|G~lRhs7->tsy zH~#sV2;Wa{1DIQ@HEuF z`k>)AyZwaw?}X3P-_INTwLkBA_zv0s;Y-!8HGC_45s#-5zFvKu;TOTT^LPr~_|=CE zKMTHr$1{2y>R*39FW>Nm@D;p2^um{_-`4KWn*}fXNh^H4`Yyw7!TPP>@kHRe)i)d7 z)mt{Nmtr@5{r$Wu!}p^9A)cRMw|}aiX81|&{hIR*9ER z`R8XN=BJGNuZ7Rl-_L6^{2F+v&vN)u^$QK(1mD5)ljp{-zQphmcf4eNzKQx*9~|eK z0(ta(O~ar63Zd@ID(&Lu>mSgynDu=9jJL;MU(D|ucYTrkezu!_rq9=pdQ~nlzD-lZ z|MV8i$vjn${Yx$}E<9N-G0viw(z?X>+rx5+@zxhd^ONcv?xrd0?IS66W7aNcEiI7N z4qRfj&|G*q6ghc`@h&&y5~Kb7F^AW8fBlTXl>ASR%a8j@zy6_KUrl{Q!bfQ~$A-U_ z+TPk>34hVIB>XLW@te-gwO4*2;g6qi497i%yP^9lQzUK?TFWO(>o{ozaya~+kBkZb z9ycU>>|bNU(^+ro{k1dRO36=O#o@cY{PhjV{C$%Dl{3cYe~H@OS`Yb)CI1`rQhND+ zF8QC`OY%R&-B5lU?iRF`A0hegkyfCV7P7bJFURKR2J#Q@EdM`K@^@JIqsja)BR}o? z{7;MjC4L`R`yTS2g#7eUdihsM{*PRK?uPQ?h_|4%{BY!#R$!PmVsFp3vH7`y{NB#; z|05;;IxGLeWd6UQ{%Ic_oBvwgSJw_9|B0x7zW7h8{vVS3uOj~`+zsW&5ide(`C+Jk zX$2}JKW`a&f8jlDApd(i%fC4#|C3h!>y!CklKkfVm9<-tzew_@eShVZ2POaQ`$+xo z>GI=G{MRP)zbN^CSvtP{e@<<0?K?RBC&<7brI*sn-zxd9*jtYOeC~$oA4j|z zt>uTv@xM%3ff$_#dwcS(k<8Bx814Y|5WmykNW?>Uk1+YH|aU(NS# z%HcEh`e32qSHTzklzg5Wzxoox*TFaN{ik8x3+Z}SebDgvFY)8hK>LH_TMNY}uU7_X zfu-i1ivA0(C*O$vGxhplt>FXk*=LcjgfCTJXZWovWIhY7B46mnuRd(}jm|G3Kg#cR zbiY%5zTsEFm(`K)g->3uY@-F0ns*s|_7BOo!Y8j+x(vU-`Ja%Fz}M^bN3-GQz!x=; zFLvWsUuF2|@CE#N_#8KWx{RSkeB|&n!%uYM`5E~E-W#d@)n^!fYopA6&2Py!^0_qC zkNUm`{PVNne(^259&6EmxB522uYxaHLcSb6Q-AM!q2Zh0E4cqWH-7achF<{RA@$FD zA&p;s(C~BM`|qayJK?+454QO8&T!-5{jd=}Q-AM!t>GuZ4=pBN316zd&hT0ABYb=d z-T2jq4Zrn1tQTHiqx^11^{+nP@SET(cz^DN&(z=h-nPP@H~(hozw9RRt?;GlyA0oi z{^j%b5%_xb&4yn9Uo(^XFLvWsUuF1N@I73gId1&=d*9OxKNUW=mHYs|8&dtN&oKN% z_#yg4niqqwSKoKPe|~n{EAx|mKlxhtZuM=3-vZx%F8Ol!O#Qv@g@)e%KXN*L!RPY+&(9FaUd}gK z;Y-zb89w6r=k*wYuUFq}_?hq>w~#M(<5yp0_{s1Ud_I%o#;?EkJ93;Oo`*HT&mhdJXC!O1>7pTYa11=iMT{eFgb)_{?nm{a?#tJox)B zH-7achMxgn#^+1J-$4DV4;nrXzNV3UCw#a1!F&99x8E(}&*t-!M)*wqz3;V#?}Kky zK)w>bRDGS{WAN>=|GV+44;y|7e9sK(e>4yEuRh=KbK$GGetO|E_4mHF-R;ji13sJI zzgpo-)puF`hcZ76d_Et6uUFq}_^o$|AG(5ku^YeoD#LGtFXR0-$Bkcq?|Yiz*PSH& zk6c53-~iOW`V7Obfam*1UJSloecxUF`B?&AbR+p%_-^%WhF{?PBjn5BGxhhr7aD%% z_Y+jGO@R|Di z3jqZo~SD$bA6>j{z zzxBdr?&HS4t)n^!f4Sc~Vid4|pPwf9Y^i_vZuM=3UjUE# zhtJ$s>)-IR;B!x-@#MMjt1mJ9bm!&#KZyEQA2fUrzKpMrI^nz34=(rT-8xt1zu?>C z8{sqe)A~33CirabzY@MweVySe=S%-({QS1ijbDA(@J;By{dDr9`=I{S=NoM3Ce7*W+!_R^*;`8BRH-7b1hMx{Uaw7R0 zH~xuQ|AwCg-_F-Z1AC+X)n^z!%k|Im8H2A^-?z*^KU*(BJyejdh3{71X86s{&mmt9 zpP8%mZ}_Sop#OUEd2ambOANmP{SR?{4)2BfS06O|68KzR@15}7>Iawl^Ui~Bpr=h< zBYfumTK|Th125k%Q3+qFzRvK|;blK5bmLbaHvA+v{u&z3XaM!EKHu;=E|&T1;p@|0 z_{;;e{%`l^-2&f#D*0CUQuSSi-vBS)=MaIfSKn;-HSqFz6rjZv1?IZ(vWm&=wea2Q+YCPmzJk|R zIeg|fwEhjB1>eHQH_weTqN_8%kPiFUqk(?4;p?Gd>Nn5cfxn8AFT7|-2h+1 z*ZYm|nFnh98-5LZ#WeDj@TKbO48H=tpRdOY-T2jq4IimS-iOGK?t%JOpKthC=)Y(# z`Cjdpq?Xfv;EJZ1@2D5btlrZv5)248OHf@)nhl z&vE0Qr1fw3P4Mmf{Y3*gsDJethF=e#djYzq z+xMjZj%Mr{k=jre)VC)ufGB7k>Bq|cSZfH z&o}%^`1Yg8_rhl$q4j^WKkpLPKkw(YZvR)`W%w1?fB5r9Ub)-<)i)b{(b@cokw67s z-xa&@tFJQrRNPK)S>$6%(?fyP& zQiaTC?zgD_M)Y5=vJVoE$eo|&uJ`$QdhITlfAwvKpNjrR3donkXBKGv8$JME#^(ch z@TKZY48LQJjK5muClmFrK4|zY@IB{K|DEvN>IZM~*TV+*hO5Xo!e>s=`ZxSa=XpLW z;Y-!m8GaFb8DF0ky78+I8-9-KpU>w;WLlX`v0Ln@7D8V z{#)e!4}7WmF2nc2m+|>|1ioHomyVbW@{?|Ak;OoIcxBq`r>)-I3 z!ZQCAQ_1JK@vAQ}{2KV7dE|#bNByf08omx*j&CP?xB9`TKkpp)9?shcpLwj-zu^nv zJ9vMqgfCTJXZRiGO5QTwe+u3B)rSqg3BH}rw?{ui{j1M6{2KTgx&DREJWlI>p+E03 z_#v)`R`^o&U51|v-@)&X5%_xb&4zEn`EAD(^2Kia>Z=T&h5mc^`ZULlf11|6;WvL* z=Ck1k{isIx%;UBG4Igmh zKZtxKe5v|6!>_>kNj29)p&P&Yu;JIwmgCz|O@8zf)W7@qnzYp?y;WJOr`oGqn zcOiT`fBvu)zEpje;mckBhmw!L*Q;+fd_Me8n0&Dtzxpb}kIs_3Jr|SDapRw^^>6r1 z@I|%c2R=sqtIsg}I`}evzmCDztM6OjpPwdpdHdrPt^K1 z{5tp|?!OYgRDGS{+u*bL`n1rEUwzo{OPv1(`O)pDfA#r>p9?Ra=j?^gJW1>S8h_py z@Nz!Z3SX+e%kUH7s}G~`MBwYyHyeJ%v6t~VYDa{8u^YeoD#NdL@9&qB&vD}~*7`U6 zO!QyD^E2>Y)W7-+!%v1UxeAEEx$2Mxc>d7jTs_-^%s5r5u!ZajJ98{sog*7`U6 zOy|!bUkP8TzRvKI;rsb`6}s`O4;#K0?=LkG@}mjVzxsT`Z<;FeU&fzr?1j%fMeF}+ zf8I6l1^m3S6~0t`m*Jb>hxqeF5%_xb&4yn9UoH3l-T2j48Ge=<4oXReTLx!@bdYn7<|3@zN`H6v-KFPU;cbZEqu57HpA~Y6Zv2NLjPraKdR7;Uwzo{o6BTA<^JvHzfu3{^9{cazJbrjdf_uq z)B2z1&$|M?i1)Wv_)_&e~#z5x%;Rd^vn( zsn);Y*TD}JkqW;wf4L=Y4%jZ=(;k(rjUg6I>6Tat2>c0^_ z^K`9$!%v1UVqXbgs=m(fSgDvT|)X3OYErm@gW6Kl52x(OOWi&h&l ziiC#HBC&>)mY~@?C|YX>s^4?Y>pJ)D`+lEK`}p4bYv3j2R=4e``_Tpz{~qKDK3BIvkiV4`0@j3{J~Gr|H>yC{6_4z&0~mf1K**1|5bk9 z;T)-FW*PA{;A5w1{~P>{vC==ue7;l!K1caVgKu)<^Yhtsm%sA)20ssc313eQ52F8- zPc`_N;L{Exz6*TpdD{P1`h6#Zujct}1fQdPyTOlg{PDz>g0E7(&fvFZWBu~}mgVwS zzS!Wqz{~eJCAj?awEqph34A8kv(H2SD<5OKJBuY9(_-w3{NJdHp23Ho38M1!9O zKJ$Fy+rW1y-+!6kckyJb$GwTK0UtYE``_T#V7*uK`;$fBbCj<%_$e4ap3gtiUH;1F z8~kYSnZ?8pe~kWDKGooNV83eS^QA8Eu@`Iq7x{hr9naTCjo@>XZ#VdaqojWtZXmuC ze3kNb249QuhxmA!g)*x+Y@FXwtDxcu|A{|$aJ`07I9`#wVdD<5O4`Tn2zeJ6vj=KZY(eC#FK{|2Ap>cjaLfzMIC(%`qB zF7;{U`{C&>f93NHJ^|wo@%hH^hv?{`zdslKHA0NqhzP4&|E+ek1roe%~(-d~Biizrn8opUcaiTEz?v6pK9U*h*&3_gwT zS2TjpQNG>a=Yfys`jmpNQohdMXM%6#<5!l;U-@E#p8~#_?++)q{EM{z4Sp>6a=HF} zAN{X2%gWrMv?B(<4 z6qmp9*#f3J;1_{UkNJd_}u-7&vN-IUu^J!)1>}|(}_=T`Onn;H~3K) zKkXpm`})xT%EuUd9Qcwwh;IR3rF{2ve|@%0lzejeenJKK4&|E+ek1r^KEKTaAA5!N z|NqUm^8S|M@>f3F;M*~Nr|kdlqW_goH25Z$e=3dN2EIf2{)_y+m2Q0AA8NqIUa9?W z@He{guO_|-e2(&!244ieBtU$+%U}6?gLm^=&HMB4JLrGqQw=^58oGtF-^8 z`F*#aBJ-Qc_m>*M=P2K9@SDM>O(wn+e3kNb2EQKs5MRG%x%`zcHu!e%)qH-Q;PNll z{x|q#;9I%=eZA;^f3F;72+BBH{4t#t9@kQWsl&>`S`AKpcU zjwZefeC)N_|L6OCXMu0HiugwGIm)*id_MRz-cL%wS1Dg-@ELA=-Vd`}{>m2{{3!78 zeEyK&@}H&sZ}AhbetG}wdmH_)e2l@b0pH8V-xlyy%6I4a>$3!W^Ecf8;5(FWGWZ(s z@;oaKd~AvKzrmM+ujcFJ6qmp9*#&e&12x z3;Fp@4fxpE+W!W>JwxiBmP33I_#EXc4SpH!4Z-w|hm-v~ZO`F4X}gX{NlJ|8OuU!{DV z!4G17JNbTlmdjuHVuLSs_Xqw8@2xpe&&f%pK`vx)VB`(uY8QbPjmO9w$k`5 z;H#AHKF435?MKM?1BcW272rFRZ!-9axSmbp{WA}I>`mJL248{t7oI?TipyX5Y=f_Z zZzu0>gKN?M$|pwh!5?inY;QU1`0Fk7_i;Cu$=}C4r~m4`9Is)e73{xzwb2g1H9kXfRDXd``_Tlf=@n@@+ktJqkN^o z@0gE%llwm|f93NHem(d?zJ3{g75%S#s=+Ss;YyY3=_ni+um)BP#_#EZi z4Sve8$p0APOTkwuUuW>+Fur`hN|wuC`C@~QbNTRonBelCtNm~A8}E>O2Kf0!-z(^U z%pQC)c!LN4t^Zl7p@Kws!8T=~n<>wNgg)*x;AA@%elv!R23}{crG#z{~T9 zzL(Me%EuUdE%;Wx9&Z6(rF{44{`$;2TIQ>leJj9sDBoo8%Z?GgWE}D7ZvX$C_P@c; z1>gE5)qmLSpUP(&d=dJscYx>D?Vrjg8hoDPx&DpdJCyIw^7}3xBl(x}{q35Uq@J<2 zX#X4hJn#+dTLeBw`AUOdg7cFBsSo%n}~P{n!OQ_Ezox z)BL_Oz_*^w^#Pxwe7nIn;rgP4-!Cl%U!{DV!N+0za?U@?<*$6P!EeTVrF~9(g3EuN z_P@ce0bkC1Upx9=`51#=0=`i0|A4PjzWY>veddGDPBYmCrW#CE(L|{SK~1|0|zp@QcBh@byR=_zva!PxkxP zf*;zG#;*Y%`v>iRgP#Y!nfIR}@Hxs?8vKpmTR$K^-Q}-*zQNA~-@xaq!_T4rl}|PJ z87?1wKGg+2_73g;34Y(n;N^XiM({bxw;TL8@Vyx{eku4W8hknLhkehW|CNt1_{oQ0eev~X3-~JKyT|+M zQ;PN8`V$(z$nF2iHyOO!Pm*`?{JQ=BF71DVcl%*sER8?x_D|)r4ZaTfRP*~JU2gwW zKGEQZ_Z8nvKA&%U8vUbu|2V(ze2m|`o${{%AA7giD%{|2ABkIZj;AMt&w(ErNE7<>lC zFWf?W3-~JKyHD`fCjh>j_p1u<9m+Qu{1#jvB@Ysx2R`;s+W!XMj{7Yod_N?`<*$6U z!7m2i`4NpjxKezplutDH?){`b&AflMf$vbh|9HRe6pWw7f3H*nKK35%e}f+jK9}<^ z0-vLNrNPI5Z$60lbeF&K`3Aqy-A~9Se)uW$zw)UDzY2Ta-Teyw{YkGBe3kNb20s(y7jpfxT>i=z8~kMO)qH;-!R244{crH2oNo;A zeJjxa%EuV|dhCat{~_NN@KwrpALp;n8tfEK(ro^9YelE`R0o4Za5a03W}GpG5yFpK9>M;M003pDysRf7bp_ z^ZR!1E&D?+@1Kp}bChp4_yjjT-=8l9U!{DV!S`c7tbUiq&vN-IUu^KJ!T0ihlHl@R zr2TL3i@+CtNaOcCf&N!M#^C2Vp3gU0z*i~XJ=R~J8Q^n!X#5KB9m+Qu{6z4{eE%U2 zd~AdEzrl|NFYhO$xcrsRHuxP!$$XXY^Yp>T(f`UP8vI7^oqRsi2EIf2{$u>U>-WO( zG>*ov0U!Gp?f(e=((_(9_n4!8+_`h-d3VR{d3E^j2cMV~_WQxv&m1#C9-Th-*_HGJ z^}=J0^FA%0pAgm`PM^XzkRG|FnW|F@!#_L`64-wF=ALTcXLlxFZ3fH!j>zX1I3 z4I#E`*V6OZu>8+04$uD=r$yv{67oN2K=VI7H2*bxg65qcZT@#`8V+Sa60%NXnZ%_*(Gs{60eq_#WlE zsfi=&QwqLwEsb9RKIyM+KWsAi;yuvM{C-g$_yXn241P7nFMON$6qmp9*#^G|e1kmy zeMEeFlutDH8^Jekpz+(lCpEhK`;YMZ=DG3TBfbWFf%3}@ek}O%|v0yTBJHzjd_VcOLjwzJJmP zzFzrugKtMZ@jQMh_#Wl!48C@g_!jctGiJH`?{oPV8~k?gL;U^jLpSc*nSKj{tpY(U_e}kXq^5MT1$OB)Xe3`+I zb>qwVzsq0wY=e&jU&!y<3@$V80`YE3_@JWlc{}1!~wuA3IgvPG{U!eSQ zgI^53g!{P&e7*9O24DNWbv_@w)_{|&zHJ(=Hz zSBTF8U!Z)M!O!1-{XzQQ<*$6U!B=AZ67J{02hjh@CmMVa`0DqGZv&syr2T)0-?!B9 ziQNC-3zT1O@Y&$YchdMp;OmvIH24(o4dZG2beF&K`3Aog^@->6z2PSG{{!0p2Hyp~ zoZsi{0$-r~)`R`NO|JfY|F#i)z4Gk_Uje?A@9&j@?@_+a;Pb&}t|LCn<^Q1ezrk0& zEB%nh_pcIM{>o<<{BWP}vcCH6NB=7yWANSJJ3pa(TEO=x-<|BQPYd|oH;AtQpY)LS zzrk06PviR)dEg6_FEjWe@YNe={1lhJ^4SKT0X~=eXYilsf8`SmJ^}o|_cVSR_@pJ; z|D*iA{iwgZ?@6hc-v++$O&Y%le7*9O24ClRdH&_{S3ck1i`?@Iejj`IAL##P z?SF&Ma^rVUK3(7ol;3)g-*@6*5uXoaZX~`De7*AR2H*b<`c2;d2j8Q7ox!((kLUX# zSuX#Fwf_yiW%%4ZmSG5AdGpT5QDf8}EgJ_~&OJH)qu?@_+{K!1HkfiIEw zf50a_qWy31o8OlFo4=#+^S~Ds)e73>YIsU)I5B?qfuY97xuYORD z@AAB?4SZ6I_J5M!*NrdFH*3HbD8Jm`XCa@41e&iR@b$`98hjS+FO~E2mvooE^7#fI z!1(fh?C^c)|3|g|4SsWv)L))Ab%8HXeruxNceUfC|H0QQ-)``Wz<2WXbt(8BR$vjTk5Qtf|(FT(wtw6}=Q17DzgnZb|4__?zGyZn{UHuyO3nf&~8uo3;Q ze4@c`d`o=e`TeCf@JY+G|M&O%t^(i5=MOdD3zT1O@O9u@`FTna_}=w`)(Wop6gQqzFzrugYV9f z-!~az-#qX=%GZVQwSn{}@<$Bb>OQzC< z?q5zh`9->0cF?b5KYAPaPZWC@KaHmk;x;@qa>RKxareRnpC93$8s;DTQ?B=8dBV5^kDehV*tz<)uo8Svu{Zt_DZx7rN(uIQ{3LCwA)CAgOBAvb{2ei~W=pMPG2|4|YC zaWc)LKG~=(@aXB{zd!wHOl(LC>_f3PzCipR-gz{qdI)_KRSQhtOZ*o;Fp`Jqqmy#- z@A*syeH+m!|B+~&M1g8r%k;akq5fP9_+PS1|MMdJj|}s7{r|qoFUu172k5*cRQ?}) zo|2I-@^_7pR(*^qqAJ1kcqzfc`=tbft3*216X}l;t^7oyjS>Y)xCAx4YP1B`ay>Br`JpB7^?z=J z|L8D(H~$-g^M9(yU;T3U;=h7oFJrpMe|M+I-#{NlC0`IH^7sBzT|Jt~-YowAjJPhrB3q<-4i1xfoqInVpa=8RGyl}Jx z*K$2D|I-xl8g?@{cHzX1JzpXBb*M^Tkv zdJN@X8@CX{wD2&saVwhTxbh&PI}k0FD9}LHa$XIu8ZE)KTo26ug`p+z^?!DR{~=-i zZvNK?=YIm`pWb`o|LFPO;}m-t=ZpM?zlr>_^ifpu1tUcMUJP?94@3LkA7#0hBN|yP z(XS*5B(VGfUNR~_n=66&zaUiJn*XyS{13ML{~h$t5dVTT;fwzwioJ|H@xOkntjx>l zqv-s1=CbjF6J)v%=V5B&;=YhUlM(%FlSBtd6sVvZ5#9n`H9>za2K>+8o&Q-8{>hgA z+d==6#6PDu-2Y69y^Qn3|NP&{`oDlaiq8K>@xS-4BYE@Nmxm$$55+hh(bMlsG(w`l zAl*pv7Vwe@`g1YhpSL^zGb8**S^hmi|DTBeHhS+MwEw^0_Yg9sivNbcNaEkqN74E3 z5dWM1AZ2`xhoSzTFCE{CXyhLxdQzf5k@)kf3Hoy};D6rk{3l2FA7uG=2mQy3|JAhe zLjA9x*vrU;e}nknz>D+$|D7Vb{`*1vKgPw+iL%DyX5AsiX^2KvNpzG%fiAic>Mh_^ z6ZGd|z<=uQ{3k{DA87f%74#n`{$t(@-~5lD*vps#|3%_|0(}&n|M%j5$-OfFpVJ)( zo`1~v0HTqV;{TyUfh_UoRTK2*V!%Ilcm8KY_$P(=|L^!WA$a^dQA%*-aQGH*ImO=i zbEO2Y%#+-&qmQC0!SwH>1PlKxl}zVhYU3W*D2x7RL1s`Fn{@k|{pb^Jdq!he6ue{Ik|9qXU|jx%)fkKn)S%*cj+9o9d66rKM!;(rbN zKc_dM*&owAfN11Atbd6D!}K80Tfj>u=+DJ~f6ngwPmS>3FU&u9|LfxRD=81T{y9!c z@WB`1C3ufwZ~WO(f_D~52|W5JsuD~ek`gS$FfBX`o&Vm4^It@FAX+R@poB|M!>dM1 za4pvZ{hu9L0^j=2jPMWG{-3|5E%4~E;(z5{;g>*{Q|ygDOZ*@HTsEic=%eWTx5NJ) zDPuYhL)U-rV*f*Q%D=JyNfhX%XW?EAFPxx17X$uh@6vx_g#W%_{%-wusr<4uk&k^Q zeDZ&Mn*0Auk>Btq$$B3`qLMH8ugJfR{$EQYbN}Be9p8y)1(NtP^ig#F+u)C3DtH)L|9_G7e>0*x5Zx$I zAWi&v)o2S`%f*2ITr6)yxUmk|`zu$;%Jfe|vB^n`7pn_hc^A_-uQTf?i36W1fJyhP>|9%qT zA0Or)y#IUdX~E}TM@b2GMm+!dUY`G)CMB49z2v@E)W^Rsqy!89D3$Eu$4IpQy(Jz0 z5~7uBC0Z>}V1V9*^lEt3XbG<6dSL#uLQCM=|Heo7$A$U3`R@qM|B)g;=hg7}zlmZm z<5ZE~aHnK_3w;#b{BIHYOIoFdlXw`Kf6RC$qLDYt{GTLIporxc@RCva*<1yC{dt`UgY%_@Tv*=b1~q5>hAncjPT#X@_#YtKU(~&sIx;i|KC&WWlR+RN3RqA zyQ6LXg3sVTU;HoRVd(zXI%)S@L{E1~bhbo+Eb-?h6ZGd|z&~?${wGBE$6Ed`1pN;e z|9X0lJ=FhC{9b#;DdNB32Jyd-K8kMsKZXAt;{S6VrZ#Tw>tbAp=x47=bg@K%7J3og zTfnO(=+DJ~|HR$-A0Oc#WBETH^gm4euWk)L_+LS>mvOTAU;myYcLRMCo&TWt?~x#< zJ16omH2*mHPebJVkCG^mBL2K;g8p0#_@A;n|MUp|5n=xSJO4c@c>Z&!l;BNz_#D~- zuT$)epCBbTwM1IrUHT}h5={4`1h=n}VH$au+PFDr`g;+b(kWH0l_*e6e@o%j@WRm& zT+8*45~Q6RS_0qxe_VwB&Y}@t?|<95$DG!A?lH%W2>M@mWY9lF{I7gG-2ZZlz400F zpCyT3M;}G!{~z&RSSd>&orfWRH2u+tPFW-Vqa_Lq(ci+*@5YAub1~pQVVC~LM)?02 z=I@Sw&j$Pd5RqT;P5A!*IK^JZNg}`DcFFo#`Y0;-f&r0t*MGP2Ftq>QBs+dNqLIIl z=vNX2N?CpZuNs~F*<1C4BxLqu3k&6Dh$f z*U0=oLmx#|g6W&31PgDIN>=bNbpI0_e>0+Aza;a2qeOvT`dcoqhF6W2;99N+=KrM7 z68QRmY=r+0Vg7FZ+k*3-EbfvAN~ga>&18o(a7s0`bwfey7=>w z3Hoy};6HA6{$nEihb{lsp#Op5|3GKB|34`9GERX1E#m(eeH5L4zxe;5UFQE6JPgf0 zX1oN^$l2n5l|+F?`a@c80k4{%KNkc3C+^NaHNyW}%YRkSKMC_sS016)zvC(PGL9Gj zPp_23&)|!bXl{NKd?^0+{toLOk2_{z#)lA%EW!Na;YWh_^QsB@b1~q5!tVT!itzu& z@?RPBPZa+ZZ-)CnPO+DfF8&)TB=KkIqv-rU5dQ;Tl``JS!_fR=#>)|noF)Fhk||{v9ACc;e6Dhk(Z@_QoG4B{=p9$^9An zD5?@n-y|hi_*0*}p2P7^qQC(CEkFHkY)A>N<$6d7($Ygq;5+^u z5#hi6|L`9b^xt3nzoe7z(DUEVDE7u5EB;T<6#sAe{5+Z^FnuHZeV)Svr;_y6`2|Fh^%@k0I2;6Ke9 zpCg#eo0V-T5CH z;lDM^Ke+#0`%JL^_mL7zk2nRofKP$OA1x(#=VobvOQSsnn%*ZRSoo~8Knf2-_rEde z2O`?@N@;3K@G1OEy1;15A^>rp(XI`e<>0EUxoR*{$CcH|Gh;%mR`FKUHm_; zX@^|6M)IR)Xb~Kw`!Mh@V4(5L?jZE?rvD`Zmz0)f5|Dr^J8v0@}Zvn3wm7mR( z!2BN_DsT1wArbyxhWQ8Q|Kk0F`+tIz;7HneLQ8NM#oqW-DZ#0i$;2JUn^QC;nEsBG zU}2fG(cpii1U+c_j}iTOm6TwkM1djtZaA-o7mk+TTCNA?e@tizeDi;Bg#Q;2{&94k zN6){GdMnufdx`&9OTzunpx7IKl=#0=B>v~oN74EB!v9y;|9Kd?{%sTEJrErP{~ZtU z{}w0_e_k~~e=Y|6Q+Mf~9O1tu!apAVzgiXaA1VI7TpE4|xPfAC{E_1S&MzhL-_l3X z`L7rM+uNj!Sv(A_|CzGlPe!!o?fA39F!_P6@>z|g%A3${KQxbhBQ6P`y z7x0qN$)C-Y!1@pUZXR0x{=fe^D8m0U%m0y}f1LQwp=~#G@!v$TmoZxWub&~ab_?&! z(JcOgx8Z-I_)n4zJ}wUJo{8w`<>G&mM1eN?Voq-XFPWe}7X$vG-_>LK9~j~PspbE0 z(0@K$5gM1M5HZ>v{bBpBUlq zh55Vnza%*Su_B*DmFNHH`~Uk<>}4D(@*A!f`NMc}qU!&*ME)AczyCJoA2Z&IXk?+t zza>#1f#nzQs!{pbTnWs7=y&zF`Iqm%E0MpymA_9;;f=L6FoA}le{|enHVwt7{D+R0 z%qM{F{DwRSe=htSi_ND^m~C{ z@7$CB)l&Uem*Zc#`ftbYB@BE;<0rWMmCT47pXO_>tcbu7pA+B5dlU7Kem`$aB%l3^ z+eD@!pS?JrYmm<`^k2PBZBJEl`OHT?x$Ikk@mDC>1QI26{7mrjeS&%5w<%v{@Dttm zJYOj;fBk;mY=aMgZ|3^Yyv@tHrc_1g%30$s+-{?l&ogZMtOOwPX){2b-$41S&a z{yu&$Im_j*e6hh#Mn1A06I}kvXBhlg$8&%7@u7(NU%yW?#^6)H%kLGnfS;p$_d0)l zwz%*6<9@3Eze4#YgWn9kQ}ze&+mtUe_%=8Gr!;xEeVUa9KhfpGJc08}I zQt)$>uQT|$;Bz_uESJCX#Ri|}_^*jiaQQ2rVeqNo8~Aw9_fz!0exGKH!4D@%eM-3g zE#T)U-~F1uKI_5D_hD6lU!i=H!7l@!%j+c%{5Ivw41PZNR^C5TT>kofn%QA|ZJ>t! zhrtuwhj+)#8MutTPh{T#`};(GJu>`!^6#6%&L@M1<|miw`SfMq?#W*%@+EDxp{JCe z@z%R(e>tVR^C~%|{FXk7>XdTl8absrpkL0X+jyATxTK3{+G^sSLbUP%iIzzei04-d zvbsV}DGwrloKp6Ne%+1leEQe%5&rbO86npbIG=u}QO~Dmek1a8XdQ>j-^A;>e?O7G z>q?Qoh41u4b3Ppl`8_@o`AIxXZQQ77qMM26>GLHzNuodnHI6sw)e!lExe{_d-M4?} z%>8msR{(lYn4~c&g^=+vCe%#0X0r+2m>k0ZOI{%j``P#TkJ{JG? zspHxILNV?|^mLv?Z%Gswq=oNIdL`7Kivj=rcIUrmg#UY%|6hXs+r_`0R#WKxgg;U2 z_3tbGr*D+R@1u{R^M6VF&zUJ@{5cOp->37C+(F>)6QyW&lSCIw6etq^&QO0Y2K)oN z^WP)FpT0W7KmQFu|Nn~r1p1!IQ2+7#y_5a>i2tYOivJn(QFQ(t@c+5^|3Kg1NyhUZ z6yqU8Q}37PD~SSKbl~zP@v715$%DBV@ZWcL{;?7MePRB={qK~{D=82Ddy31xmJ;lw zuQm={0^jpj9dFuON^s}plKWntL|KBJFG>l{#xPwpGL_)!5_!P#5~5QOt(GW|$tB3* zg`*`ni0dIG=%p{030}_m_rI73|95TwJLCs)#DAOke?Xg0sQ-Hudz%vAf0_7uygx;= z1@3%7{BQqII;n++q5c0nS@aJgS~*3c#S#UY>D8mqB z`agK7GwJ0kb^f=C|MX4a{ufZ}ZQ2X|MdE)ceH5Ml^WuLthDqUJX#TI2`9BcRDTo3R z1(L;|7f#Thivj^ig#FtHuAS4`lxHco>@hT$%B65Uo5%qRA2ks_ELn%W4nx z=VHKruU-287~xM}ong)Y*&SEv{C_F_U((78_5X}wZ&N({ePPMm`qumtgXj$~%K`qt2D-ZbtNUwnX7%Ghu=8J(e{J0DuK#%$>VI_nIfz!CjsBM?&`b9&ye!@|v;+rnJuv_D z%`*QhfzSW@2!HzOj4*%qJnaYh!3OdFT>O7R?~8`EzzO_H>83s4|5NclE!tN~ceaWD zlkgwLq$lNw@z;n}o+Z&1v_P)-^R5x}=VHL0zFcM({@+FT(^qGN`Rn`#zfbV8&&2-& zI=>0^e~(XrHpRmK67lz*i(g!U_6w zG2l;MF0%{&;Rt{F>Wnad_k9YV{LlYW@t@uo?tcNr-liD%7l{9*^ig#E|Frm@1pgEs zhWyd-2O?TIS^NVM1=7U-*-(Ej2K-}p>Hlqn|CXU{{7ZQl@<+#CgJ|U>@t-MCpn>ikds)0|1m~ZN0e|{(nO)5PHxd4C z*#4))1ouA={_jNiQ|xWp8ON#Kc`^Lyqv-rsiT{(%pNAoTbo@1lR-OTWi30KB&$~v@ zpNj#1`f{0F_zy++(^qGN^}n0{qk``fT=pOFzlVM*AawoT%|9Km=|}ia7yrM~N74DO z6#o&p1TNxX$R8bl38Iy!i~lr<0_F7V!^`4bBk0e?fd9^r+g1MK-}VT9`s$1je|P-< zV-aP*oBzxKk^d;-dEzF1p4h)b|D)ZT5j~wH^7l&= z7^DYR-Xz{KRQ_PDgvj^(7%ER~;5+{PH^TpQ%m2=x|7P)@K+7(4^2bx`_5T3>Y2tqd zugs{?8sYzHgugrg zd-waG|3~6~4;^_!m%!Z=dz*&gf4=ztl@HF*EPLrBek}NA=8M1w-?ynW_yBnMeaCc{zrNp+Z}8h2(LemW za+r^fA@AFy8vJJPGJY5M6*~S_T78l8yAFII-EQz2!EaN(-QZWd@%g4eDfr;~HgyKS z2K+^IME9~>{`x*lvB56`-^#uTE`Q}S41N*#2D)7K`gkLu{#QQ6;OB!+rY8(u3-}58 zW=r={e|_eH&!yYZUIqBz`!-DmKNEbW^gsCE`!;0;KLdQBJpXn1Yd+ZqKMnj49Ui?w zK2%cw>-#N<20t1606kIi+Q83IzW*`5?>Lta@1Hf`gYVlcH~6vOOL#pNfe*fKQ)%#{ z!T0k1neOt}_gnG}J`Q{{&)4uN=zrx?4SvgCWxZr_KX-v&q5RfI{l4qL5ApjFjo`N_ z-)``$!S_o4gAcxMQ)lo?z*loVSuTHlAEwygYaP$N2`+!-GYo#N%b)At$A?bpf8}HT zZ@%O!;#Y-)~7Y_>JJD-`c>>QNI5Xzwc`B4ZQ!f2?;5UOW zr^jVp-%03y9F==(O^&HnnV1E1MLd z_!Y`;eaP>-8GI`rPaDB+Q@-8c*MraG^XF3V6ZH3M>kNJk_+Fl`ESJCX#Rk6$yqu3E zxcrsRF!*II|8+Ee-#GNY@-YU#7<@VJ=PlqT={x*S17;S;4?73{2o{l_-)Ep8vJPRy}Vx1UH_iO76el^A);C{$*`72*+@GXw# z^_AfAS3bkw=Yt=5jrhLf(f`WF71zqb2+e|_>?KGOf-=P2J~@MB#* zT+cl4E0ixY_;m1TeEdyu`757o@DnG>`>VZci62Zy|LgD9CK~)G@X1`CHt=(l@BgRY zcm6Q0H#wgg@GF#GZt%0f4{$w;z;9E&(%`3ouYR5QbeF&Wer>+NPXsT=$Km79|H`Kt zeB24B5AP>k;8!TW^&fuUEyoKlzX#k1ew*^`2EPt`D<9uW!B5cNudOrqRp90Kr?XuC z$`>2_BJgQ^ew*O(S3bkw=YlWqBEIif^uO{k20z2`^myHC0Y5>1zqWg^zdjQk&-+OQ z_&Lfq8T=^6bN+eYS14a*@Y~a+{>|Kh`ze4$~_xXKy94GZp7W*6b^Wf3wfBpU1M1$W5{_zgt z+rZCJzQ57$y9Rs-@1Hf`S17;S;8%gK=J_oGzfJi{gI@$*_Rn;e|5A7VJm28wx_tP4 z!tfaMzw)UDKLdQj8sfXauTXyLU;Vxl!Kd;0NhA1e%C{T*C^tUyrQjzl)BFDhzda4d z7e3x)x%`zcHu&}6dtV_w!R4=fhQSw~DC4)v`F|?dqXD-C`Y_!2q)arr-~{crG- z!4L8H!$+e3l}|PJDd5xidZ7#a3gx#h^81c;`LJ&z_-)F!8+;u2LOwq%1wUcA_P@bz z94q~q$@_Db%U}6ogI^84lYJ9h{>o<<{37tpoKN2o=zry741O;7Uan6I_z5et|Nrc- z&kXR@FA!e=eva}@20s~mD_=k6fnT9~nZb_+Fa4I{@>f3F;78&3-ugU^KR6ow|CIK> z!Ec<0{pTg(8{Ph|eE+?E-#+jIuM%JC_J8G<8~ifxB{IKm|5v`!;J3gxm(QQmUH&Vz z{|!Fyd&$3$`*Zkk^uO|{7QaERUvjyBy1=hcervtocNOx_<^8P@{5Iv=4Za0@JRcuR z!B1GF{crI3pG!WO&k>*H@>jmt;IqJ&zes$7%U}5ngTL`esn5`A;`HNOKmT5v*9d-&^8E|_zH5#azE$@BL#3W8lwWS}OTf$dTM_te%2yiv zeDFhjK9&xC!ZX_c20sgYJg=|e6!gFHsRlpI<UEo(Jzx5u!?>O+Cd^~CdzfJje zgAcg;dA*c^pU|fLZ}3|%U;8~ne3r{!`C@}#2fm#1PjLAwpJDJV;G22A`VK+=D<5O< zmEbdZy|jRz@GtHEKZVwZ{@#}Uhr#FEhj+)tKE{7<`#G7sWV~;)=i2c1ZBBeJ?0p-& zZ#4T#ecx!ybMmsy)wEBAzHf8|?^|X6mX~erdP&|lx`955>SdeyyX0k?w~vu`c24AB z=3`hhP-T4`tRNOzZT)&Wckkw`u|J(3+T8I`m)_ce4Hrjfj<(zoIZ-q|BvE-PTYz7 z=hcVvF!cM)2hbX+iAzQ_bw7y?kSH)n3*TFNcc?!X1O9LC&c7?d|9;E==RyBA@!v-K za;X0oyib>P!+(rS-1qcRbpCgW|JU*2{~QlP{`-q@E260ZiJp`wP$d4mYV>`(hq)N= z@7bOIs}cVH4D%1ZZ+iA8d_utQ+kN_sl;D?i=nE~u4SXoP=`AV2!KqS$-_l1>mEfLg zDZz&$r36_#41IqeCjDeY=k6;d7$;Gnla5_p7cU$w!9!dRDM3khXbF7l|CI>;e?<7Z z_f4Nm<^!zwKP~?MqzyIH|2{rc-1H{=j}re!=%eWT=ZpV~@Gs?I$RCq_4We`R5&xMI z1v15-7f#Thivj<)cIn?4;lDV{-|hcJ!TxW>`hPlH{vwLKvNzEGM~eLA^ifpu^>>K; zgOER*hoSz*bSER4y0^$5AW@)&PQ1LeylPbbVXg%F|IJW&YyV#p;s5tA|KRs`9&>xJ z|5r%~Zfgra1l&Tgchfp4!NaTN5co&>D5?_N^9L!xTcf3tc{~jLe%-aQ>7Rq>&&3i= zmMDw)=yBeVp*{(m{b|Go%+_xD!UrUd(crTAY-r*@(Je>tD(-Lw|{ zkHoK|kD~Lh691F-mi3>`!%+WY(vL=T?q1RYqa_Md)3t-w#j7Uh&&7cMx?TFe6yg83 z2!FT!zda=A|CIRi_jiZ-%lCKR^g8?xmx+t|`@8R{6#x786@UHy?gTM*-`{=iNQvC{ zcMs9EpV!3;C+N?`fdATE`gcV5(^rdx{Jnu&|1*kc26*$^vO?rnEDLY`$0_#8UK9D( zDx@=?rH`VT{QBEP{^OhE&x>#6Vd(dpu9iW|5gmM`M8A?KP|EUadC92!!(0ih|JOt1 zt@Ym?;ZI*J;`je)(0{r3e?<3bLnnU|-?uI668}RFmC65%K8nu&Hu3)&U*5WuhoSus z)7^|{YMe~|{SpQG=*ES&mX}P>pNj$i*LLUsVuU|^wTR#UlA!;S;-5o@ozU~&Gb#4U zUKRfh_|>Hg_{bE^-y78bUi{xaM9R3Y9N^-nTqQFekLa79OEf~FK%V&Xk_q~AG2q{| zJO39V{OPMj{Qd<&|0gj2wC#q?KgC|zE0}*I{u%GgQTfjk|C?WvW5`n3;NzBH#+wmM z-2?M4QJ{@(ym@PR)dc;y81R2}cmB^u_%E{j^Mn46i~j>phWr16Vy~*M-{N4UPJvjeMMZREFxco&Fdu1+v`NMe_nt#lAGNP#?ME(GY0tqa?mRF6+Kg^ZD{I3a>xAy;MBmCn`4)^~D#a`J<@IMIsPaj3+Um^ZaZASm|FyxQvEV% z?)o1y-s!IYe-!^0-Ss~`xboKWk_q~AG2s8w?)=*#{OPMj{QLifLH`!?e{;D1MHG8w z?eI@R|I35PfrrL<=PfWQjkonxH=y1O6}W&c8Lnzt-~43;H*Uf6~9g=YKzn zy|U*q|495W`Y1a8UyJ|EUq~6>cjrHt@m_cS^PSB9TR8t|p%(|dwY+MA{#*?Bzpy+1 zRT2IR!u*5R{|o6Zy1W0gL`twfUH^r)z&;dvH?5WuJiPsQ-k%SlkD@BUJvU1U-U>(y z^x>eFGeai*ZAAagmuMXhfyrEgE?ziVf`_;sQi77_LrdU0{;!PizdOv|9sj2W=l>y* zkENYAbp8MMEYJUQn15uw4{y#<_5U1^e{hS;|5_TE_dm>dC!(p}V*i&YP(v@icx!pp zsQklR3C#cMPzPKP&#97pAEWONwHy54Nb!y5=VzthuU5X!;Ah4OFYha4x%`zcHu%ZlGdceR zm%s8E2A|@1e!roQ_cp4(zCRRW@Z06)_+u&z`Z{~g&{9b&oRzA_-E5J8!{*8R@OZ}sK zKP`|*-z`^Sez_lNF#bo%FE{u#;H5rA;K%6uLzM=<7<_~Dzsq0we1o40zFPX9_b$p` z`Ba0S243Eu=mP(d@>_r9_ssyGDg6(AjJ`kAZt!v7E8qP~e|>6Q{+v$* z#(zNhCWD^^zL3r+ygcw9DPLyrlfgI89Vjow<*)A#WgGlx@YOv2ARoObf8`Smet4$T zznq?Mcx~VxP`>{rzi&7APM+Ty@E<9^JdCdmWYPW7!N0o??~eQEE`C4Y7j&*-y&v$& zW8ufged()5eAh=)&(h=Ly1&cuaSn|ZdVX*dpB&|{#PM-YIk4Rl?a9%c>*e_P;J0#^ zoy5b?_wjC{n%2Z+B0BafiB6Iz&_;#umfje0e7uw7aeT~M6;eyyR3guhK6y04zsmAI zGw6Sx_;=8}h5A3w^O*k>{Pz(5*ZJX9H0K9%O2z-}@5O%s4@3T2#kd;Lv0qAbyF`I> z@&84rKNmyJ5As&-&c7wXztZxb9Q6O2_Unc81l!AHy}E8i}){;D3BojylV9P@J=oU{8#MG|KSM#+bsVx zg8qL+|34M(|2)NB{*&+@f&QnDqVq2i|9f|!|9Kel$Bb7aI`(t)zeIrwIuLnFdDR5{ zxft+YzB~Ws2>;(({-+21|04clmWN*-96_;{|AhEIx>XWCfj)}Pf0p<^wKJY~yw7nv zcu}rg5ey*u%{dZ%h?~QMbRyv`3wAB^z7#qvKj=>KQ&pA+GKllU)%{}1ASOVs{Xi~lv)|0nS<`CdwJDfeeIE%3`?DZyJm%1)9ZZ5~&JNk0(LG5?Vg1SASH)3uz}!V5=B za0k~zN|3uWv;@BMpQZ@^iU|K0lB5gr?vgi*)^y@Pv3P==47JptiL4Pg={2$w;|NRmEzx_Y_{~PqL z6aO!%`9inA&nWgTY7zgR!T($CAO85_pf19*<+!**jh3Mat#ebPZfoi%J;kEF> z3Hoy};Q#0@{r?%^|C=y>+#j5Ja*=EPbqhs)!eimhKb~SQ{}HVJZzbz9=%c9Q=UhRV z*Tx-<=KtYQnf&i z`0$H^>;E1p!3WfNq3i!WioJ^-#`^z8O5kyGMm7I4r352Tf)?rVxT?(}{UD-aK9*>) zM1c}6K?|=MEx{dJ56u4~p(XIG|HTphb0hrS_mQ7CJ?Q@@@jvp3aR0+7_AY9M|B(0} zM;}G!|8wy_3I2o5ACvyE^Z!WvH^RS{Z;`g}stNjYG2s7jn15{`g^D$JE5Up{cz0aK zEqr~vlyY^~$9(^BRyHs9KsA5gSPE~vwSfY?UzzRxDgSf5UzrWQbIk2@{m)0I+CaVX zi3UF!d^z7QXanD)d_OG!89QYB;j<;5q4$Wd0iUGzAD0_^H~8{{DW4+n1{qkO8t-w3{S9~!?4e3IUO+)CXZ={v=ZPgnR}BlrU4 z+YLSye90HYmx8ZXzRuw1o-Xxl-Aa6x%U}6ogYP;^_;ULB3opUtulFA_4893`8sER` zEBas{h8l44t&GQ#5aO3P`=&ZH=iN(ANrQ~QtQ#X6QNGFGCxh?g<7poFB>j8JGJ_urzIu@O6qmp9*#;i~-|!>xgCC&( zl}|MI?Ku7xzC(N)_#Wl^XZU?Ly5lvU&(wfV(!Zx%Zt(5ko8P7Ji@+BsUup15z~^#3 z(_Q|`=NtU23DOUl>xm!Ug#K4P)!=7f{P=jvzYBbl{(a}xpZa|#f*;`LPmSOUly5iq z6!0ay-b=yPD_>{uJF+By`M$I)m%sAG2Hy|9gwJOZT>j6xzfa9D`0b8wA--=T`d|4N zgWn8Z)_V*1dgZ$>@z-ZP_)dBL2fj!7CWBuMzLonY4}8*dF8?xvUk1LJk6$S+f910c ze%47+&%)1$AABGEuY97x&%^iw+@EdWdz9}l@cR}!eoyXy@JXv({>u$M8+_V_G=35I z0_7_WJ{5d#42_@e@>f3J-~-@?x@r93_t5{!ryBe)&aXO0(fD29lb(0^Z_W4n_JeQb z{k#!;f%5GJzsB+O#++9QzFzq{gI@){VF~eBE`Q~V4Sosufmq5v!R7yg_P@c;8ZZ6O z%=Pcvfc{rL#^8%x{(ODW0={1P?u-5PnFhXdf6Auq3@b_n^_fKO`I z{x|q#;N^O@2z-I^l?J~Ud@kKl^3q-Y%I6z=4S4xJ_~Cca|H`Kt{Hznv4}AX61wN@m z`~M=p?-Y#R%*U5T@CC}Z8~jA@)%();rQqw8uQT{mH~xOaXSw{9FE;oX@B?2_J_#=W zm$d&4elyOWljZ#X9rVBQF$TZJ@m&8F@b$`fPxIGji90{%{igzakMd0hUjx3E-`~mu zpY*c!zrmM+Z>A?~UW&_K`D}xq2ELHu%y zzXp8L8ts3B-wb|0&i}y|C|_ytYryC7^?tg`U-^84&&K&rgS_A7_D|(g4SvfM$-j{M zv&HS7o!b8w_m9I1Sd3D0~(%Y9_ipyX5 zVuK%ED7@^43CJhu743h6?*`wzH~IGc8~H0AWAH8D%fF<2TEN#U-+jKnK9%5e`Tk)A z_#Wk(41Ol~p*Ofb;FDg}{x|r|$BJ*W)W_woe73=-W4`43g9qP6|0|zp@G;=!eabfQ zJ<9jz`F)$lNj?qq(z#ayKB-Il-{9wi=f9`%ioh2rUup2g;B)UMKHcT7e7?a?0nfjW z<_-6VZ;$e+2Jfzqk_U)yar@_M+W+VIeN!=hCig=l#xGF5-QWW*|9=u+3cg4C80+!TsNj{#QQ6;1_`}p~snC3;25F zyQli=GY@<&ACD@)_bA_F@WtSJ**6b-(pv3*gUi>u8+-{|mqX`S}J!EXfL`Z@7M;0u(mH2Brv%Xbi;?($bY z-{3bME%^)`K=}{9iT+nU)!@r8eli~~y1*yBq5VI_@0$<4n%{?R1Ye+hyTNCH@8$EQ zQtF8?>R{|$Z|_@PZSe%~ADf8}EgeiZoT`-pD= zU$1=kx&Hd>!1==fudfR5J<2!z-+VP+ALW5hdQ1D?;0G~&{AS`)T>i>u8~nyp>4$Q@ z9v@tX{#QQH;2SZ1+Fyuo1K*>3|2cl&3h;9OtpC!&30|%GVkEX7J7Q`hb_^@>jmt;MckF`S_LK@_$?V-{3bMiGJ9N>fiS|`d|4N zgRjN-@r^Wo3;25FyR-fEnFqd*?=Mw=?@_+V;Aer)l5@JavH{x|q3;LG`WYl_QX z`D}w9>&BP+pRb|+l}|MIIPgP%rSaRq_bA_gw%>QlaZ=A#?w=a)N$a)$4Spl|&U)gD zz!xZAY4B^@`24&h-Q}-*zQL~opUn3whP%-J%BLFq#?g|0HTOdo_@rL#|FitQb1{A) zU#~TSFHpYS;AeoB^S4s)^~%>7{ABRWe0`MV@>jmt;75b+^KHqKuU$1=kng05;hm2nVzDM~cgI@w3zkdZj>0RxAgP#w6fY(ck z%U}6ygTE1c`9qZd;4A2V3|75@KXpG;$=i4>lllrv(4Svyn z{KitCocD(!@CC|O8hlHNy@uF_(dnn_zgV2SuTI&iw%Ctp~#1? zj}lz|?`i)Vyu07h{3qi3)}a5Dk1_ZdJ> zk}<#h{5=nR()-%~1|OFpd@mm#Q(XSaXB&K;dmhw7{NT&zf8`SmzW5j!Uw(h14SbLC z{ipkV*WZr(`Tl>Y+y6Ie{~P=&$Mf+t%kBTlR~r1>Ly*tkh);LHfjH7`F$rlp3e^(!51jsZt$bPcRoOTDfoKj>kNL&ZQ>ix z^OfcDSH9Tb*MKj7j`#$Z{|DOt2EQ15iQFISK>sTrWAJmqxBi>PZvkJgeD`Vo`m94g z%lT&o_#Wk(41Vqy@onY&)7}36q4vMQZ}~m?jn{jM%U}6ygI@!_mG|4hcJ#mUi3Y#e zjo(Fl8~7gO`%m@z&IK>eLuz;|-~eJ`N@m5(v_Dd^9%CgNMb*DK#W z(O;ho@Z~kcSAg$PzRBQI9M8|M^S~#4qWy312`(SruTot8%4Zw=c3l5vGC%k{`d|4( zgWn8(h~Hmo1K*>3|0#Z7cYR$rpZFT^Nt?C*4Sr3M%x^E>KPduVpnRplFF`&H(*G`h z+{?iD)K>2oq@56lc^8JTA zxBn|&XYgHaezy>x;`V>#iw%Av&i8Wpe&8VX!=(Rc{~P>_M5%wtLgM?LL;ouuWAM}5 z`RBXD*SP&(`R)n+`m8$~`_DbZ7rFgk`6h#30)Bw+FQvQuJ?(#kp9emf>oe^3Pvx@> zeirTr#`E>*;Irs|y0Y#Vaqov{IZDsstCM)i|v1f zH~U-5EE+%EGpGWlD+SmC!Gf%mY7 z|3}69ZZP9NPJ9FSfaTj1e&jxq&l0)*0Uxq_ox;yGkp0kBhI*M3et##8-h2TfR}@$Aiz|`%y*U z{omUDSNJjDJa<$I2e_Z?>P=g$i@ z;Qf8J{}q1tUeXUGcN1R8i z&gYj7@c!>?|Nl1LcP{u6zFukoAFzCz!p{J|WG(R(;6s+LQ~2p-{EvyxHThepQP~1!Efg4jVACR%XenR z*QWuz{Jp*^@L|h0DtrpA=PUX1brE>~54QgmKHrSb_fOJI{+7>E_@q{uuNGeKz0aZl zEuX6J-7jH&IiFVWVaxZ7jQ1_wU3mF>xi#SZ1GfJazO7W&dnVUE*X;k6uU7a8$R~}j zx3f(CmM>QLWu|}l`g7n}^uOgZ6y8BUFZqV}4)FdTZT}w??`!t+a$b)O-~*O#Q}`aA z)Mp95-%xUGR|4+966}}OCJzsxzFGc@bK1t!L z!58rQZ2}*%eCLtz^%;J>_{#N0soDQ6->C6JQJ?o|{349+-)Z|_;XAGqzMSVb-Q;ii zJcXYRK4%m0z0aWkEuX6JLGYXT`9drBu;qJ3#QWx(@%emF1Kz*O_P@dpH~I7XC#B#6 zmakU$UDu+X4-%hc^0$1k!gqsDlkY!1jsCZMhQcp3{4yH91HAud+y5Eyz8Ni&PYdr4 z4d4ToZ&UdEA;Q=5^T!JCA`6ZS?u zzaYN*DfGYPlN5do_^uw}o4|)G-+4rQeMW-E_aDKBE#Ii{4*1N~G=33y|BwKGL;jfF zpu%rA*U!wSoBS=Gr|_SEUs6eYZxj08@~H~H3Ve=S|9}r$zUT0G->E-e%GYn1uh954 z;QdJ^|7L}sf$_We{$wfmfaR+dezM_ty=R&HEnlqg6Tr{9iTHsh#W!sE4291JpT^H0 zJHY#gn*93?i}xJ`UjCkZ1NeaD+Z5h>-syjq#;*V$vV5Jw`!N0zK40gW{4HOm@LN-) zpEEiC6qEmMCjV@O-vE9yUk`UbA@vDZK1tzMfluSlvrXVbmhT)MU!Tc4r5`r)^UW&o zVaqov{0xlW&huLY-oLxaKdA6iP5!)prkngNpQrHC!RPS(vEC)(8?t<=!cPQW!t1LQ zeAx0mhsOKngD>Fwy*1$dK9hg5!jA?o@6(oo4_Llh;YWh+=lj)J;6s)#R(J<|GT+}D zSS-F_%V#LO54`LT9pL@RCjY)e;(d4F^Bw;lwA%naVEHzMpZFv82mX9o0X}5;I)z`3 z@n_8^KG)=L`7(uH3ciHjuTC-f?_u)KR`|u>D{mmady&*9VEH74pASB#o%km3A!FB_#*KBJx%^Wg`WUEneSJpoBS=Gr|@IIm)}Kv@8jYd zvV5w-j|5+GBk`@^!lb;WEfcNiZ^6xt+-nSNfIe#8$03Wb?o5D{u z`SbIR3h*Jz*D3sX@CCenb4~u1FH`tY;B)x;FvaA*x5+C58`=uW$|4w`nc>g{o|DeLp#rX2RO1jD4 z@_7nB!{i^L@p~T=-;m`~6@DW4cDervK5Y4(w0Pfq@Ljji_%-1Dj>*4S;YWcl;r=WI zAFzD2!Vd#4-*?M0`CGnN;e955e%?CpsQ890pP}&E&F9B|5#Isczpu%^Z&!cPT{-@gX$-{0gPRQQSD z+qwP&X8*K&p2C~;o5tVY>76gWAhIUwHGtao|7Qv=?gYVvPZ z_`2_8ev_xt_@&?jmakTLyWU%g&ocR2zF6UBBL7+Zdnp5th;P{P845q$_`XDZ2YA2V zlA)G#_!_$$+;$f%a zA7Jv&R(P}jZ2kxF-49EB0+vrw_>mZ2-rs8iAF_OBYJ7c$nfw>i_*LM;mTy$}+HcVh zZxLSv-v1kue^BGMg6Do1F#D(F^Avu*S&w{u)%#EJ4Ou=_;p@Q5`zo#A!|2K$l*zy?)KN@^H zUmtdW_otcs`}T|X9S)v<@7QesAFzCz!l!_*oKAcN_>kr66n+!#Cnxjspj?x`<;xVl z^lS9PJmOPK{s)@;vlYJ4j9)=~_d`;jfaQ}Ez6yLlzmL%bK4kgMedFsh0sQ9ciLU}5 zwtS<)*Me{1>+K@&{)0^ZL4}_RK27fbnEWlDr||iP=lb`~6W@^KQx$$V_#E!HR`6lV z_c-ys1G~xfdCp&muL18*H~BX!{08t{e1EAFe8BS63SYBD=C{6@_$-sZ<%<=*8sqcd zD{}|x#W!sE427QvzJ>3fcYyaFZ1V5hC*F4q_%yzLYXBdxe4E0jn(P0+5nlm5WcfOU z--`V+`6=RaP5zcIQ+RX!&G{?wDJK6zO#aylzY62a_q)62N__&BPg3~B;9L0mp$UA* z@|}Cf*Tb4Q^EI_5#InlVEHzM z@5O#nc`xx5;6s+LQ}{OUEz5|{HThe1Y2)zFYlYda**Mcv3hxl}p zzvc53ez6&UHu1f6;v2Gjs>06%U(eSMt>D9!@7W{XcQSZ+-?9e0Kf~nTtnm5Z3;2Fo zDfocps}+6}c=^6zmdW4p#R|W4v-HC(z8^bqzxakNpP}%d;Q3=c-(T$j?;m0E?@NyN zT@JpoiueZb0n4{3{Cx1`+;0`&Lzb^o_!-~}c)jGB{4HOm@DsrI|B3h%lmC$>|7?XH z1-_l{S9ISe^$A!$N#PyvEnJ@_@FB~0`r_-eH3`qxE+)PTeAx1h3cm_`4u9S+0`EV{ zzyOMAE52dNXDIx9@Fm<2 z9pL?$CjY+O;(e!s@0vt>1NeaD+Z28R`2K~&SAY*$zE0uCfY0IU=UkJ&<;xU)B>1#D ziBB>4A8qo_R`|smr61~>i0{5v>JzYhlEQEJMfd`~U(^IXWckja@%32-K8N?8D)3>; zH!A#G@M(O0F9PpB#^fJV`03y?A16ND` z<$IFieMf?C;p>?i@ct~5f3w0n;N|;MrQidWuU7c2c)pzcERCN9K4ke~h2LPFNAvqL z1OE`;u;nupzVUPH54^rQ!25q|^6wiG?^}!U+xh-R1NeaD+Z28}_Qx)c>i%G|DeJz126Xz(!mETpQrG1O+IhX_`Uat zZ^-hg3g7T4e1pWdf)881=jV9ee2kxS2k|xF{i96&%?dvfd@^5emx2#izFOgvz;|6q ze3r@I^2G|@jpy$rrNj^XU3|lq&rtZK;Fs`z)dAjryve_BSG;d6_!ho?YXBdxe4E1C z_W}6%S_Sx!&U`~vy>3qEZ5MundVKC_s{F9PpB!Q>xQ_|fM2mhX?H zoBS=Gr|}rSORj%rif_pBsS59am-hi$!G|s1^HaQUFP`rgETDX9!27dJ{>=)%3Vg{k z#Fv5(SiV}}8^O!{jVzPD<%<=*%DivD?3)Nh_3=4wtS<)j|VUB`xSxr zpKS6ED*PDmT{qD9=_Y^6=PCTKwUU4RO5%I(65o*JQx$&u8t{{eZv`K=e9sT@zB4}% zzLKA(*MRqrHu*Oz{9=q>{zu|V!3Qi~t?;$rGiCob`CGnN;irRN!uO*Fs>L^K`3!}h zX!7BH>j3Z1G5PoHi1*D0-*p@D4d4ToZ&Ub@;Q8;TyA|L=makKIANb9DKFu}xTfR); zH@%JiEFnI{C2tO#Xboy$HPjRFi*D;YWi{o=beX$=~vM3O@{d&N$+G?-bvV@Y`&*KK zR}t~8;KP>h*&grviQx-~uL1ARHTgFy{3`It_YhwSK4AH3glA(%#&6;0HMu5#%aAgdILzYifcpvzZdg5Ebhb`apUA%A4n^OPeCyB2C?;m6GZ&vuKu<-4CyrK{+2IO_~GD7`2I$U$^Q(Kf40K=O#bH*-~DH) zPr&j?3cq!=%$Izhu?c+0@}1wt*JlIxdfsoVz=tj0sPNO*$@rOk|EdVQ|4fsAP~mGa z{$}0}(@p-C&r|pr;N|mjZkr66n^?UlFuxDew1tSw|tqxPsaG={CP0N z=e!jCpQKYwomAF_Ps*7*7i2fu``2dcn_E#Ii{KJb<0 z#2110pKbCFD*V<}QlB(Ff2EuJEuW|G8^E{o^Tggt@eNr%RpFO`pT+xmEBLVGd$z>; zE(Tx1=j$5q{(O^vv%=3c`SAUUQt$!GS1Y`|p6By#mdW4p#R@+j<8S8os|TiwZ`kq~ z3P0NTK16&6cz=P(zwfJf-{Iiv`F*Db@Bz!WDZCGS=2^s7fDc)|PT{w{A@iHV*Ymk1 zf6JFC{3qZmdA?Fi{)Hz0Y=vKL#?K?Z`xdEB!1757zZm@HM~H6%AF_Psm+|$f1)q5y z@m1i%mTy$}>EK&WeQ)7>zOX@w-l5AIVS&Xg*W}*#h*{RgHoS><&zYC2J)%QCB6xK z$nu^4i?7dg@Uw0tz6yNU@{I~V0emK(AB({I&o%i66+RpMl6#3yH~CvWPvIT#C49f7 z_eSvzSw2h*&Oe?>~?(ru8_vB0q-Ag@^4o731s`!R1pQ`XPF@75Rwt^2^zUPa0-^t*+IG-Bu{$i7V zv%=?tm-mfJ!3Qi~t?;7^e<_WhW%9RtvBEnhf4<%rxL$n2md{Z5tv5*h<$e1O@cw|w zzi(r_?^^Jc<7xZ`@Bz!WDg09K<$Qfo0X}5;I)$$VFTY2ZYx1{znZi#6pCkAGP5u{} z{IeC_?C1U5pWW9%tKCq&@-5Cn#@oACQ81+$1xH~CvWPvJ-1B=c4Od*XYih;PX9sR}>! zRq2QJ+lX%kAGUnYC-J^>kCE}^{%s9-f2qm8S>es~z!HAnwG@27^3@7I1LxB&ejb-) z^0$1k!cR2(MZ^!3i*MNS845oJy!?J|2YCM_CjY*V<9*Y?%k#Jf@Bz!WDg1cMS7i?6 zQvp6?`8tIk34Swwp2{`(TfR);cU>p-m-|a8CjU!K{@Dt@0et!KG=BGFsZYT2NeVyt z73qii^NDW)AF_PsNAdNUiSfI*->SfeE#Ii{lfma)PJ9t~|79lspu(Hqdnw@0@98Fg z%jYTlNQ~eAF!8-ti*LyCsS0m?Z>RhO;#m=l|Gw^c z---W`e(2)&IUB$SEZ?T^BTYUR5?=v6WcfOU_kow+bI3LMTfR);H&sYIXYutzipl>9 zlYh3tuLZy4G~&A_NqqvAPg3}$;4`@&n!txF-}ym&eQLqW{ee=m|69IM;itm4g+G54 zVSN9UCjX$qj|VUB=cJqbEuW|GtuJBy%JZ)>@eNr%RpAGaztq1KeAx0m@5lRYFnlHD zUjyD>X7X=VcvH{vV~8&WAFzD2!q;H@EXsbEn{ZcM|ap-~*O#Q}`^5FW)yQGW);f>lA+2zcF9DeseK?*z#ox zzxEo*r-ZN1Q^5PLGWlmK{P5wz_fH|d`wFQ~!1757zxFlZD|!9anEl`Kog3oo(*eGv ziuh8q|69IM;pc--9!-3f+5fLL`3Dt#)C$R`fcq`oe(XK|Cftz$nvQQ zzqDC+d7rQqeAx0m@5TErHu-09eZc!CoBW#33ZDh`=X=H9C!DR``>i@xL;O|n@uB(o8309`o|&r4;gaPuyJ>{68!HU%0HMZ{yWA0PP&y6>3=)l zTAB76@js>NSWf&NI+U3ITkyYH{EK*)THn}b#P}>k-#;nQ7>S%N>P@#}ZKOXJ1OAae zrxWkLcZ~nW|A&8)=l_%Vze~5~BK_ayTXoY85dT~MEdC$Rp~U<<;D43)H}Eht|4)nY z1Bl*xLZVuUoC5J*6Y0;zfPduA>%{x-731F%<)44j3Tpl-^KJ8Q{ZZt{=H5wd!3zV; ze>%l(&@b`_BkObMP(t#dH%0#S8;|22+J}d!^)0@D_J|r^GNQusBpM=-(@GnwyM~vH zZT=^?5+Yv_`CB`*{Nw#oV*Edk^3Qu|H}wBCPw@sM{XZZjc=V9y5+JWQ=`;rSwc6{54pOEgg;CzDIi!K=oWU=h~?^B?(hI`RH{ z#`u30C_5c!3{X!!*cyTScM{@^l^f0_;@Bp+%Q`Sn-IFxT@iH2;|Kazusa ziu{!lISq7S;I82%W96UVN?`sYe_KbL|2<;-Kh^yI>G|&v|BY8h`+rKY8{7~6Nc<~0 zl$if2@qheQnfzyX81lz-FF{mzj`%+&k&`0+ylOmuE(ZJ~e``nePmb~bMDuU({QJfK zCi#pG?s zOsy|}u^8td+R+GqiJV^gVB)UfRpa?{G2kEh+d8WM?lJx!Y5wy(|L?_r1g*Tt{r@nE z-QYgre=rh1mKSFt7eAqu;(u19lyM8a!NL9iN9p*@hziF^^tnV%srd7%@%*_M@Q?hh z9o2ug82=A7|9a1VoA}>V5k3EZq1X-XE&ji~P7%KV?p!%+XD;|mbI z|ESFWnG!i2^ugL)!>h*g=VHJ=^0#zU|DiGd-J1Vg&;L8|4@`~rKaXNJxR?0@ z(xJrsSHS-g@jsM@A^(M9%)dWI(fbP|+Fv3kSNwU^c>Y`r_(%S>j_RKj@k^fzMoIgDUV3BLL#SzZfv@1c-46RTnzX} z{C(-vRBj^8e{+?wp8U9H8Iy#h?|10AE#Y`#VaXbvoKW01= zQQ=sb|05)F2I$7LyM|Yd=g-A}f8=lNsQ$ZR{NIc6&wI&!{@qqedC2wuRw==wM@6^5 z!xX#Id{Tk~uaw-Mq(cdn;J%lo1nVY93smqhwZ0dy>0O2BJdr16iC33px*$VyL*hqga2K*y`UMJrFrx^cmjK7`#K5zcN z694Bei1vS)Vt3kZ;{U|u;{OsIO3c3%{uhdW6%RxH4~y~5h~Aqg(Nu|?0`cdC!SS4=ihrTrVLnqYp=*J zr00N<``-e7E*MM_`GW&8Yfsamgycj27WoVRCi2(wFtq=jA-ep1ZHfxVNOYw{P8Q3r z;U#0`pWsS}d`0AM>!|zR4>A7lYW}l5e^>lh(tA0P=f79^J)PhX@qY>*)!wE({-shiLh~~|e|MpjjoQ5mdpO=j1&&7a$7;ZXhVFl2#UFs^`v;^1jzmr} zm!N}JjV-|{I8PUJ%$b? z=KnAFpC|sk2f@EyjK4tieMq8DByuV*XMbKeo%@P&M9yY< zx5n+@h2!~iG2s96ulj!<Z_$^Vq!OAG!a@?VyT{8w}+A^A|V$ge*~njl$ihX;{OHC ze_O5<|HY@u8E-S9!W@Y{m&nN#e_k@4KNkc3KMm&J7vuk?=KnX(zeoK2bmobi|9vTT zg9GCKRHJm}A#^A)|L4U2taoLYk8c(Kd|do@A(}Tw{@Xfw)z@5Ltq_{{JS%zg_pgca!J;nfU+WkM{qG zVt3jO_+KdgdmfOe|5ErDihl=<%>J14*Ad+^Tl|+xMC31} zLkY=;o)-D_`67QP4@1|#wW6DbXh)4i`%C0hu>2ZcGFJWxt_0S9f26#&|8I%$e?7|o z|JMITum3-m65K~uUXfeiY>M4!-%APpR4gTUhz=!Gg8QD560AF0N>Iwf(EMY?Ux?`Y zd!z*8C33nh=K1GUV@t4z>w)>-9$A98_5W3j|H>$TGyi|_=Kmv+A4`v2Bjr!0*bQzI z`7bXJ`E&TmY(mdJnnZs6St7rWJmB@^W4R|I+VOXhA0m-c#PVx+$yoU(xDuHE?<3{4 z`TsJ;zfJR>;rV}v{-=LA(*Hb)-QaiP|7ZAL%E=|<|0Mj!qW{IwmyhM1hG@qu^uI(- zD}AxWUBj!!^XFo~f7@XGy)phPH2*t1|8DrxdvB4S|Ig$1;DUYPe=riilny24|AhD- z@KhPI7*`ZC33RFpO=j1&&7cMcZ2!6G5)Vb`FrdC-cP;t|ACa? zPWoz8WDDF*u{-TsDZw7+OYZm3p@d3s-x4Xox-+E(ig=h>-$pe3S&07iH)(+}5;^ts z-7L3*7mh8#BCZG4e_vz?;@1EFV*Fo?@lV0$zh@rv&VTQV|7S_jE$|V=?zC^j|3D<} z(xJrs7mNR6wNl0=9)|9JVbUK*boQ~*0`nzulEt4Fj_1$Cfd99@>c2V0e|e0*dH?Oq zdp-Xy@qdk8?TuUlFY~Lu)4qoP88UHi(xJrs7m5D`A@Q%_VaWeDF}@qo*}s)&hD1&! zeYeo<;DzJ)b1~rm&9C}zit&FX%HQn&w_Qvb$oYQ*)<3-`9w~nwzc(J-iuHfG$X`l_ z5|R%+F7jtRfc4MA(E7)8ry(lL!uprU>7_4*x@&mJSotTo5?KFVN6Ksa|9@lrU)KC@ z_59xx|L^E~ZIS+8^Y`3>Ti`!N{C}cDiTN)S{|6ov|5tbz^2cPmGe;u3OBRmZGA1%i9hzdtabiYJS6MZq? zUBj!!^XFo~|I5MrKacVMx8{Gd=f4jAC&u_w>;_%<=fa;3CFZ|C{I?l@9)|oes`31}81U~M%>T0({}#>vCeQy}tpCzz|DP{r|Np`NRPo=Nki`7wi~kqc z|JTsS?2j35M^t#E_^*)2si7a1aM$pv@%*_M@OKCE|1`#bndTq#{NKU)@Bd5G{=YB9 zZg4aFPZ9q^=ul$*kBI;4@c(!_4MYBz@h(J#BgB85M9u*HFo?T`SB>Y-#eo0+2J`HYl_|ACh@;ytnB|k(V@ir9~S@hqos_m@G!Lh&yXFz1<{Tw ziJq6psStl&HJ(2g1OA%_^Zz);|3%IJ2G4(u_%A#t+J6DXZt%b2|DUtP|7kjunEyZF zf3o;r&%==a9b#OLXvb|5T`7^%eLl}WuNu#vivj;lgZY0HVfZ4m!$byCKic-*}>Lpr`6QQ_edeT#?RMdHt^#`EW5!2iF4 z`F|MW->msh_59z${L{y-NdE;CyTOg{KS?I;Y5ruEkpDyCfA?JRzg|Az`4%4`#^s0# z50mIhiJaE+c>a0Sc>Y`r_|7kjunEyQS zU!RTs=V7S-vEupn04Ulq9sMtnlO_JVYCL}~2K+Y;=Kn#A|8tuEb)Ns5;vdM2p8xYG zc7vZ|{*m~lbSN?Zdhy@(l+6F3JPhssnDI13g@?-g?=O+lFrMe1SB>Y-#ejd$VE*sN z_&=-pU+ej=7XL}~FGu$ODA&KoiKB1va52tARCtI) zM@ZzPh(E6y&!39{|IY{W?~3tXs`*!V{_WyF^onTzpZRw)f}g_wcjCV{A&L1vDE?=? zDD%IDU!$b?$BeflDm+;HS4iYkoy+sjtH$%^V!;2i!TdMG_&*cnpZAiF=9%7qyRz21 z|FKF+@XfI3E#NDP-D#gl3I2DM4mH%cnm%EQq8uS!|;FCx0=CW)3x z4V!;2CU-e%f7E)p8rbm_tPiO$jRTAVmJ69{Erp?L-@mK zLi^wS;(y_X;{S1$O#Wg_cNe0h*1Kf#s2{C7vnYyJOjjQ3G3W5!Dm6{d>+1rj+G;?Jwb^XFo~ziTl6H8K8=YyMYw{;!C?pKfkP z&i}p?yTSM1KT`Y;N%;QvKg9nmbN?52ycc7}yAT!bFaGOr|GT?@=bu-N=g-A}|AxW* z-;VKLsQF*+`M)gwC;k$>`5#ZQ8(c5`AD%1|cN!f^tp97ofBlhC#+^UQ{O4aM+kHQx z9aALwRwAcJ{CU-Q{#*?Bzc-lwTQUBPn*T)4|3B#eg6R35L$MnSWB!r&!*nPy|9iy$ z#c$C6JPh?eX1oMZ;lAj9iJaDao_}67oH^`;#U5t3*zg`17jq{J9wL4-e-5 zW{m%%QU2cZ|NCF{p8wNNBGB)j+;?X5=bzaWyVKT53I6_DDZxW@D4`a(Z{)??r!{c}u>VHQ%J`+*l-Vz-lk(0vmYk1XI z`6sv%nE!Q=^4j%JdyM~l&A-(1Z^8QC82$NY4#jTp9rzzEv-U6@O3eRn;(x%`SpPf> z`R^mfC5Q_5!uprUsXB}OdDVFSTnzZXJDC5f82?8!|BF5UW#T`UR$k=!?{tdY;9B?} zCjRH};!NoJ=Wg-ehWXz|*0^smW;_{DVT$+`hc*8{ zdH(;x{BMi)pF^=5Tm%2%n14EynEzek|G3%zc^I01%y*f&#T7s=VHKr z?O^_|$N2wK^DpuIUljlF7t#CwI~2RYx5fX*QPQ{{(V@irtHpo)AyURico_Qr?JiPmLZbU6ays&O{(04S{#*?BuNlmLWsHA==0Cyne?j~gj)~s?7EtU4-@^PO@u%rf zV*Y;>|GTmNujgTC{xRd_hzgTs{;!nC$rXQIHJ(2g1O9Ih=HC|M|B&W?k>}qm{{G)Z zpZxZv*bR1w|69k){2xMx67#=P{MV<;{C|AB_~)0&jCUd0F;Sv*5;;w0^8E9v@%*_M z@PBJC{}nO*^ECepJ^$y$f5h(5{)bWQ2HzC_e;h0R$I_w1{Qm;~gT#N!Zt%ZSj5j0N zahXJ)OXQ@BKd&0kpNj$ij=}t2i}A15`~#lU78r4p@>$f-Gl=bu-N=g-A}|C@vPzZ&B|SMx9S{GY}A=S2G-MzI@g z7yqYl@pmj8O3eQb_@`n1M~nY3_-{t^{w0`yiJXDc*`HU9=g-A}|LVc~m&f=&sQF*u z`7g!#r#r8a=l^{vc7v-h|4950zB!xF`TutDzZv&GKK=pczujcV>q1nRB+)vFoC@*h zRpa?{G2q`mnExv={tsyW=X?Ioh<}J4J4E`=q1X++0smn#aSzj>#Qgs({tx_s>pvcb z_Wz+`T!N@@h(s4i(+{e+Ogi3JVZBl~2q6JcT7<&GLN#708**~Xp zL3XX<|K_y(fm)!07mh8#BCdy&p#1g762yJ}YmM>0KgQpF|EbJ-{?#P@Hyjwf1ztz7 zJFQLp|8%tU?rn4^G5=e|e_g7yKrRnMpMOhb(>n>#_Y))$aWa_Udx`R9e>`ExPg-xlRx>vR*``v}4GaX9Y#u-~^t*W=JRG4(i$);&EB-hJK` z^ndu3@DHD$de|Sr97Es7cOQBzm5%)X-}{er>!-80^91Ys$cw=0Y+yIhnYSWRCocb! zWAeYOHYWe+G@+FLgY`E5gCp~wdKTsX!J~=h-*t=RzvK6m|L-I7ALix%{%g_s(|i!! zyARPkAG3Xd2l@AU&!t4P-|M|-S@iteac`6#?$`W#+{I>c#w?L$ePL|$e*G-PZrgHc z*0(N{7cE||8;aIq54m{ zQR;tE72cQPVQPKT(Q%oG4(yluA0d%b#r1!LSFNr8t-NhX{c~TAs3jLP_IlyH=VSc; zuKAzs`8Q(!IU~CNo~78$YlVM`_`ght67#=7{2#|KcknRekB+NEbl`UJzfmHm_f+=h zRqOe4G2s87!Tg_#@t>vnpXK>KhW&^B<;eN}`E>TD-&UtozuZ&&_vYjhS$~tJ!5_n{ zp^@1iGv1Eq!0*L>g+xxN`17ju{J9wLZ;kio^_0Kv3L4fa7)N<$@!nqR+(pC4`YWcP zu=vm~%%@J^%S9*i0^$dFFRXP|T0TSJCr=bUhrZF`c7Pvh*J~d&ce?X-?{st?>Ea z%Q^pU-YaXJv6fF#_>tiI`SPR*{9Tssqy-RLpCs_JIR7f}D=pus@Xe3&<*iddP3UI* zBKZuZi!jMQsPIeQk^1*@AE%rAEuW|GwcusGdUob!k;1wYpE)e7%`uV+5XxF)y)E(fx zi2C3184AA&eAj8jcYq&CA8RH5zNzuPi@_(;9bmTs{8-DkDf|rZIXqt#;P0}0oyK1w z>yfWt-1J?@-|}S&Uwf(iJ)jo)(C?<0{OPs~`d{Jmim*R$KX>z9Mg4F2B!!>53iagv zYyy9m`EP;e`qzLTO1Fj4{|dhtjYsA8YwG zg&$_d=lWEDzsvG<3cvkzsb?nlL$1l+@?{FY0ely)uN0F%J(ffNEBtcsIh;@THuS&c zlN5e2`1V5Lo50^?`Ob>?`iy@Q{ctw%Rp3`zzER;PntV9_BJe}$u`>E!;q$>S;r!E0 z{+7>E_)*}y_&#~>cj$l1rz-p~@M)(I-wJ-E<$JD)_ualyd^dCd)PNsKuLYq075)?O zY3y4HeyruI6@C@?uCc^tnfxtZtnf?0=bTFXKp*(*S;~<=Yf~ai^T$q+XQGd%fD*SZt$=uIH z;D^#{h3J2U9}j*rudj6QV=bSj@T0-EoJ4%@H|T%Mrz*VJpZW8P+X{ZA<$ET_`)>bU z>a+PQ;%mSUrPpH7{|di+h15s>K3XaGv6in^`1#;vJ!YBwEnlqg)dP}G3)g4hYt-NJ z846ztzKed&!tDS*lwNB_|6d*NyNPa+(K#iV_mc+jV=dpN@JqqV-|wyff0yO!6n--1 zi$6cPxh8+hmnr-hGrwmNpJMW-*YeT-3O~LH*FW6<-CLzTV=bSg@Qbm&q&`jH@3MU7 zRq^#%hWV1~;VSSeE#Ii{wcvAjKPdt~l)h7f{#W=Q_@YIQVwyfAA|U-!m!Rcl&G7&vO2)0Y8+!7KQ#-__g56c|DebA8Yw)g&+Q%%opF! zbhAwUmM>QL=@?(GPX@k1|64vo;m3oo=X^TA52dfQq5sR`ea(7IKArdm@MA6CrtsTe zmHL!0UjhCu%hxG<{&`rxyuNZx{+2IO_{A7s{@!|u$)CQKiT+pknc$Q8d&AvdqW>+Q zr0|o$Xa0`(Ch&JzzVpiX`iuuJe{a1C{7TC=DtsyGpUmSIfgeg=D@Omv@KJw1?~VD< z_k*_F5_LZ)@1-;8z7O3HStK8L_<6}wbLf_keO}@_p8mmW{+{UbhVsk!-jB1I)ZDkO zh`6J(m~y7%>CfLyc_N}ZazBsn&&)5D`IY@M7yEh0)~A{Viv4_D_W-URMp3#c;KPIVBh)&LxXsJX_CMmnU6C)=04f4kX&srQ&p1Aw9M?D7!UwLfw{pwdKcIz6&|M%bdxNG00Ly7tSN&F9h|Ghj+t#8$5 zv`5tVW+9sLi9~;u$f=?ekGqAJj5q&W4EQe`%>SVn{~MzGz4!Z{nZp~Ftp6G*!J|h< zx4^>`yK^3s5*!$kxqFfhB~*gvN~8qee(PiD3Ld7`HwjID6{6pamKK;Ok+Yeu9o$}C zIJN|Da6P01vl=5y5ZC|nV*IB?`J46sTW|jF5&08Oj+Q^3Vz=&5k$r$+gE@AsVR zm0+*GO9@`1#TU5+yiBn>XMvPpk8>rzH+g*~vIRbOk(A)uucZVvvdn!aV*c+&^dL$w zLn5c0u6^BJUO2V{Z*V;@|BptNAa4HW#`s?!<8R*Yx&DPKZ2!*^|HCt*w}3+^cIV6& z|5K3oF?1*~{|m)`#dp$4y(6UsR(>Rl{tHA`cT4n%L{5(Q^Q!Uuxft+Y@T>k0#`x1u zc|`nuW7Gdfd;LFCk)cMGo?E5Dj6f&QN#DX;ba12O*BYW|s?|KH$GXWl4(iru=0 z;lBm`d~#06zgYagF#d9m_pQQow;-DGKKvze(#4;bjOWkAfd38Cv6=YOQ< zf4BJGMVIA~{(s@i^tyk-|10sIO@|Wmzd-!AeJR77%frz8W5x>*P3aQG5%Ac z{LT75(wqNkkq^*mH&XsQiru=0F#o+iUjLW!nK=>p7tRy;ZP@${l@q*g6=pmQ(UkW@ zet(Ia3YOo(tH#Q&=1O4x8zSYk^?zTCf4SyA!t?*D_=jlaMf%U7*sYrfe^>k;=Ea$i z|9J7=ZM*D$m&qFUt-^GdAeypX{4bEm>82Z>?iOA(o9YAFrftobgZmoea7j(SyI0Xf4kFEp+eR?d65z`ExPgU;nHA_r~~N z73FW%|KV2NnIZDw;n9=-4#jTWgXsUiOXGe-hZ36n7yc;n+x{!^kMJ$c#-D!5BmVq%nCE|o`19w#$jQg&zX!zs;F;o| z_~*YO_-|kOeVb}ldQi3y%i*A9_D0b(Bu>O(zI69P23p_VYN^s^5sbmTdL+c-tz8j*e z-;oyBg^$3=T!LO+HMRtAa6Qof4@8zAZvEH9_|s2$MERTFH$VF+&;QTj|J+g0{!dfv z&Z&d{MjtQSm*`Mp{)OWIIsB`581jEtjBiGC^;(IhO5{}1vs1U17mnx8#eje4SN-pa z@u#2ii10V-{}8YLt3-b65z+FeQ|#8=kM-Xp^5@W@gydf+5c#`*kjdYNhoSY4=}ty8 zWsS%Wk;v(#2jA`%UNu&JHCF=tUl%E_t^dEr_|s2$MEHAu-*3$+`~r`h|8A2K98Q~0 z+^=Kuc462$fYtQdd#DUT?B^ZkzJ@9?gFZx#PDsPiJXz|$yp=gblR|BaFTX&g6a zLjGrq|F@s|cp0TgkNZNIGU#rIPCiniT}N_loOXJ5!|ml&%!$BERhuk^ch^L-&7<7Tp{~^F~N? zf<#U(%WvUTW93(KCD8wKBIULI|67dzrJDbNp8s_556~~`Mo#{D6uWizivL?DOLCXe zp~U>hivI&UrTGu#Vd(yEwhWqv=-(LTX@NM{#*?B*T(zv^PRbiuHe2& zqbq2)iZ|9;Cv4weYNVm4QurUO7vZPN^O`Px-=+w>-@Y#tRQQSD`S;k}bnpSo=P7(r z7M>^aeZ*eg>uQ~l@YLbmW}Jbo+qu;qJb_1N_Jen02G;c@Y8q1$C{4S2tOU#MB( zH|>e{d+Fn)TM9m4`D%q9zL)U*oPUIe~bce)k03Wb?o5D{9 zUrxW6=~jRbS-wu;^TDTaeR56ymM>HIk>CsH7s=felfQjmC|lv@EaXY&3~1m17o7YZu;bTfVi@#!Xi%jYTl zMDWSn54~@q|1F=Y@cH0#cz#>Khb`Z8dc5yQ@ReN88t{JmzEHEm`^@;#|KJ0buU7a? z^Q8WpdHgJszvYV+eie9rp6d>*M*mwrL*eH?BI6hE`Jw~7-@Y%@HzwY92FCBFDkr66n;GTSw|3`Yx1{znZl0--_HGzV)D1|3uP<(aKrQX-R5|0c74(x3I9i`-*+ z`+gtqyXq)hPjbIife%=|P2p?j%KED3^;LmEoxHYx1{znZj>3`y209 zDd7F|XK5t=Y=w8s_`KhCzmER5e3HU%e-QgW=idZAWckkA`1)*mQ|hyX_lGL*Vaqov z{8Efx&f^z>_tT#hlKg`TUkiQ~&sVz1-|~41A6zT>NIiR3qW>+Qs_;eNmvBC<;KP>h zIW^vQ8R{w5OEuvA^k=ao|7L|Z{ZPQ`s}y{|^3@7Ie+K%EeX~sdmM>QL?dbn<<_Fr) z|CY~Cc%SJ9x&8s~r$6h4{y!z&_Y>5AGw&x2-~*O#Q~0)s`KkaPvV5Jw&jnw={hVv^ zw|tqxPX%8h{crN8ze$MxSNMGJ<#PSA0{w6KB!wRiK9m09soMlTWckjV`1(w3m-)(+ z{U3bT@{J0=>H%3_$-JKwf%ntjltlk4{Cx1U4kSL^v{j|eGUC@`Ba6^ z$M~C>Zv`K=e9!23-?<~ix195-0q>_ji;DhN`0XL_Es_2QAFzD2!fyb-gvZY^`CGnN z;g^B$PbYrhRrJ5*GZcP4_)I>Zc7XR^Z2SM@c;6<}r;EpL03Wb?o5C;6#Qt*_@kM6; zw|t$#H(n#>-}-}yPdEF&<;xU){MERB!spWzlYgo0e}x|jUgo!ZIr`u7Nl`q#?@Irn zcgsmA!ffA(7x4S8#|_ipcRe{6eZT86`YDjO`+f6vxA(h-Pm=pxlW5&W-tW4c*KuQ& z-0%7jH>0kjLkZpQTKPM<-}QK}-0wP$hoSGMA0~IWG7+ubSE3^%a( zo?4mSW^VX%L@)4%{@DAyC*K(3Ul`?|M?c;x&wGxT!V|{#yALjt5`1<*bO}D9*j;d& zlwb$$PP%j`p%T1yyp&)_hmY^~Ht{g@drtd{^y7%mb|jiFkyB5-<_=^>l;AzChm@ec zDzXG|{x`(<7ex8ve($`Y-uz!F@-I-IN6!DV-1m*Qiu{kbFa0tdN=Sa?D3RaoO_9HY zhoRpy+fQ^W5f$zu(Tx&0DJ;M9gb4Zfxe}QF+al$)`JWc!Pd~*G-~UOT{}tlzPmA{7 zmtwcE68(=>J%kP==6{^{zrI5H|6^LW-2aD&aTlW1drP!VBBzQrN_Qu(8hgL@eJ%$4 zZyn5kYK%Yq6i2-O5YPW|@xN*R=!ZSiD0UmCi~k?necZLT)1k!tj}`wHCywG_{=mc3 z`Zl~sdtQw%2hpv~5}hEC(@Q5hcPB3y&!39{|H{GquaEJkpW=w{_ult?WsS1wr!p==gp_d+aIl-%8|k(1n`2lUI$Ef1fLX`M)JnUR(dy z#`xz&`FrpCT;`SF;7g?hkNTra@G!;hf}5lS2Oc5$JxPZWD#2^VNC}3#E+weoVd(el zF#lH}TC|7!6B8wJa<~Koyl`v@-s5^;{%?*fLEQXT#Q2{X<8R*gy<^rDrUeeZMEuX7 z&Wn8Bdm6>=f}r>pu9U>badRfp0yjqq~iuAZI{G2TM-4NZfRH9vUflv3w zm(XVocYs%o=g-A}|4qN@e@%@48BzYG|9|rOzf|PM(sg8{{ONpM*?6PK|FKQv&!IyJ z$*;^5`3onD{60Jk?SIdTZZe`>5-iSa*O^Z(KF zzgYakG3UQ`F$B>qvt=f9ESzuO8QZ+?&PFm(PyyVoN+dUt95`z3N}=!3Gm zlb4L=&&7cMjf44@$M}!Y{0BV$KZ*Z$^e;!w|JM||jngpyuSw!RadL??|H`8%`C8xI zX#Q8k(YFCJ-h$}Xr)2)0m&h5Q8y)UWUNW9P7X$t`4CX&M#{UnR{|}yjiTF?2JKFzp zirvPk@PAeOucJeW`5!6%FT(#g9)|k=X)(@3bZe7DM@ZyUh(E6y&!39{|7nByUmfFr zn&!X5^PeF8Luutj&i~JH{<|Lj%f)|hUYrTd{|NDayj8a|DZKW4lg(XCI4{|bqm zZn{zD?&MYD`ExPgKXowwt780rALZ|z|87j-55)5M=OQV=`Ki$*IEP|)!F5uC!dIjO z7t^7HO7L2Sl;HU(Qi60Irq&n6q#uCjmM5eHjzmrYmtcSwjxE7^Tn{Nh{q>P0h&%sH zit*2l@i*_gUes?};NT0z|IU4*&;Pem>@K)g{0}@x_NRO3P-6Z^i2sn6eRBQB!_fI3 zo8DQ77X6aJ|80y!P7B>@b_aOjc>Y`r_+R&{{$(-#r^fi3_Z@$8*A;gD1LD6QefWr6 z0((>JE~vo#|3?x(h(DhsvIJf`oRY8g4Y^L{zxy}hAI6NYM|8_#ng6vC(eK8wKQA25 zpNj$iYk$@M${7DsV*Jhfju%yX{>9?|T#WzI;(rbNTgCsSg#8Z_|Ht58#luklFA?LL z5#6##qNx%&_56L`0bVtpKNkc36~F3#MT~z=jKBH5$D(5I^Unq1|BDkn|36XeE|>!U zm&AY1g!_NE_@8;b%zp=s%>J11*Ad5QS3HOhJTCrUrL7(^FKuV zk3{ny%EOR9raKMMt&QTpzeG+iJ*ahe@{;lVxft*-AI$%<82^)^{Jr;GKiM3lSEK)zNeLd}=1ge+J6K9^K~Va?RC?SO#-v|}=$6N%1mh)gO1K0A zylQL--s5_p|0hS5AnyEkX^j7gG5+R#*A@S_{?8Tv&-RQy|9wQUyWlGE-{F_@pG$`l z^G_H5A^-C6Ij)I^q5Gdd$ru~T$25k0X(q9Y`7 za#?;SuNo`=K34+$e^sPB)<3`hIQ)bwX;`P7pKsLg#!A1BY~R;trlE+$|EOP>-}O7; zyG|v(6#PQVS1bG{;M3?1otp)IqveYgemVFS&S!x4x>{$1eg7gu;V17Q&u8jSB)$Xu zB+K{F>apqD_dPdNUBP44^Ygj}@Cz;9rtsT8oydIV3B*@`-)Q+dg&*~~@bWw@*W_>C z*CZ)pM9IaZ?t?Tt*+SmY`;zF zGmFmHZWZ_u_Wg@Sh3^C}`4oYlWci@NF9lyom+Nl2$=~vM3SSF8GoAQe-uP;rjh0VU z_^IGqxIV4mN7(l-dT2q#`i?i_^ZP_K;3rwWS>Z>4FX4Pj!7sFYwZc2#E4iLoCV$Hp zEBvNgQGdFea|ihBM*VN!zsOMdykn&wmYhs{2lz>r?>jKwcP_@~=Lc>B_=T2lQ~2p7 zAAWvb0e++9>lA*x;n_FW9DnooVs)nGRmw*Q)|Q!oGjesPGfOS91RpfuCggpu&#^pOZs; zy2;=2c?v(wCG5K3QTj7^a zmHAD}ru@6-qyH_Rr0|QuOMRNaZ?t^p0rB;z1z*7Xa~1dz_Wg@Sg`aNnp-&)g5%@`# z4=VgblMkQY(@p-C&r|q(@UwV7?|lUQZ~0V(9|>OGzi0(N!oGjeT%@^uQI559!o_sKQ+Ut->8DO32Z zay!w<-Fhwd6MBQjtpPvD^34jr7JPwR|A1d;`D%r4eq8eD;_KTilfUJQ z6~4ys^g4?>@DTccqRBr);b&s~%KN7s;3rwWZ{K*|sfL&9fA9+}-=^@3@qMZCWXh)k z{6@>yDZJT#`ni8{P5zhL{#SS(@~M>Tf0MuEvlZSsQu=}4e{s9#NqrVtK1tzQu^w}H zzM8;qw0x%%Umvrdr15&M0zcvk+y4rm{~O7tocp;5{3Oc<6@H}Q`TgQ_lfUKj6g~-j zJJ++f9{q3mRE6(5K=NtXgZNhPBd)alzfZhx2YC5DTn+e1mTy-0Ml(Lwrxg4`%U3IW z75FZ?J>h1V{4HOs@WtRO`FeX`F8aUB_P@fXWS}38BEAFsB+K{h9q+r#51!Xo1NeoO zZ&Ub9;OqJPTLFHfshUf2Nb%38_`My2leSIeX zpQ#@jz%R6Xo5F9}AM1tZs{;H+%hxIVD)9AOpInoFx$S?2UkturU*c0t{+7>H_?h74 z`!3ye=zq&6Dg3TOCI2qI9%}->(ej;p#Mfsu#xLJR^{E0sVv6m5g&$_};qyxo_(_%z zD*X2SB%gk+f4a%v@_7p134RIJr}uvJzvWXEeld9YK3OaH5!cxMPmcGkGWqc5#~SdH zEZ?l~x{<=Yf~D#p*D$E$7y_>kr66h04pCZB(E!G|qhrtrf| z{_L9q-hZv}%~tqcNAgeO{_LJ3^$A!$N#U1+@8W)I0w1z`=kD?KsRJ+fi>knfE#Ii{ zlfg@UiopA?Gx-MmQr;L~EJiBZ1# z;YWjC!q?{=;Qdog{(VE^eI4*}f1?3>!18Shzjbe^X93rz0({8wbqc>0{4Dm(HThe< zOyQS;ujKWWV)CD6`(NQ}O+I{m*gYHlZ}}vJZ`&lFmveZ(Y62g!d}mU8ea2w?G(O)| zfe%~0QQ`kT(%wJ5tNH)`x9K@X2OEv4ruAc*grqU_VynhbY-$;bNo6G!8lz;Z#`M~Y z&02;qKgLk{p=s3EQW-`YjY(?7oFP76hs`}UP2al0_cJO{F((1qB6Eu81_$kK_-}VUVU-4lYemVFo z-Y->wZ&ZBC5rMvoz{~kJAAI;MRsR}(8`i6&-?{$5rz$>2!!NPwpT{fK>c8SsH2fm8 zznSM(XFlp*@zEMS6TIyA>cEH3R`vh)$bjb^&B2oYI9dO}rz*Zi!*93@_Y)3Mf0C{B zU-5++-ddmIct0O+^1>eE@`R0dF|B4UN@H4-M=sN&>TsyU23O-fw zH5z^f`jhq>@tNR@6kn*}2Y-R}mg_U#>c8SMG<@0L;@ismlTfSwS*rdu{2cHd9mF>; zLj5Z~NW+fCSO-vfOYfp6ve$@$>J?^X4$ z;U|NykKq1ff-h2hp@uI2pT^@AZ}ngC85(}{k1}8K`1+;I zT0ieo^{?TFqy3H}h;PnC{VP65!}kV1Mb>}tMT&3uEigadfe+#QWP@*1e3^#d1U`=W zWbonltNPdQ69!8CZ|40>q}6}LCusQPze;}6c)qmdp#Bvfrr`^~H}QB?fp1iN%b`Hu z9_W7-_a`5G_*_;08h+oOQg0o+KBR+BReX+yuLmFV2lXe`>c8SsG<*g42;RSSK8X5P ze6)ry-Gln!{MUgGpQq}-BhWVm?aTE-Dfm>y*J$`{IA4@Y{ev%3e4&P~dPL@X8vDju z{a1X3hM$M_W9a8wW~kNw2UPuQ_+{Xy{7CIL&qw_$K1jotek=WH!s;fH|_;r=Is51+5YxriI??U)`EggKS;&U|o^1q}$BRK!D zR{s^BqTv@=?eq0f=RDNE;-fWu2KWe`k9FX~b5#8w2=t8yAH(ZyDfm>y*J$_|3#EQS z_&JpTgUsQ8wBfxf+u!u1H}Cm($HLRJ47z7Y8dk?UXZ zsfy3h@H5b#n0?g$SgZevPtowBz-P4)-+3SEU-8izzBl+JzMicEAHGP{|F40*2fK-H z1n=id!KW&|M#I;Gul#}dOz=gDFVyhMEuQy>@mBv8pP}Ikz;FJA_)x3=d8+<3eEgBp z|0$fG=4{lz;)7hgIQTT#FU9cnQQN)Z zyIbWmj2d#k&*=j%^SuguUzMMhp9A^&U9vv6^8O(c>+>y&U!~z|`bvMWzJY&U@i`8@ z!04p^q3w3-;9}qEWBB_kAAkFR_U{e8ImkIaU(=^H9OH8o#^+mE5O{o^>?N(W2gv9 z4EUehrT^(JfBMdZWBe`u zU+dNS{NyR(fAu%c@xPK{GwK}i-}0bz{5m@1&A%1?XeN@Iq54O~pNOb^x{SXekr5~U zJZo%!P6qskbm<@C@;|KiZ%^V4yVU>5;=hwFwfyUUJ70Q5oelr_;&0L+Z~ouGAI(&7 zGvtqoe*sbZH1S_1kx@>2Ei;>EjqT6Lfd4sN`VVmV|LO7%B}qCzfBlbt1pMh%ro*3a zZAP61{|DethrIcJ3x70I!Of8W?PB}_qV`PqOJqcdKhGN5pOXRqv%B=~@A9WlZ8+-R zI{$S$n>XAt{yoJ1rWU9F4HTPEgW*3<{BNT}-u(B#AI-#aGvtqo?}w=UHu3K*k&#E& z3T8IX8rz?f0sphQ^zY~Lr%!D-{DUz57oW--5b-}r{O8lHW}F+w_NQNH8Ta$8=cqHq zf9iYk!@-B?kT?I`@SiJbOy*_^eET=biZ=q$i|>#-I^@lN z7yR!N|9EbO&VLyHp@{m!f3QSG6WyyYvw7Co{+tZ>59-ptkISDvwc+sZj`1I9+UtLq z_`gB7lK4Nh|9y>bEk(tO|CVg&_&Pe|&3`BS(M&csL-T*C%=o(ywcjey42g^+@#k4% z`*Skje@2)7r@8#;I};9nYyImLZqNS{#Q%7@H1+pCmM>MK2EzYd@jrzQdGr4U{%EF| zE;`wNiWq-}sC|+|^%5DCbg#|K=2>I=b28u`+ogY$%m1Lu-#Y)zZMDb$c=3PqFQ@-v zip{9g;eU_#KS77Q`R{-~nn~wo$bYgJUyG>y7KuhnWWk!v*4X}>4EUekrGGD%{{e?Tet&)PO11bcGeka|D%)TFI4=I^0V02Wz4WZ7 z*WypyF7l7>Ig2lMzec$qtdmBY5M2iOttkFbmY>U0M#+!oOo)7BjK4hHwFtQW?dkI0 zuk(My_U|tK=YHiZ{L)4Ka+mb| zOFHB!1(!5S3LZo=rQ8h7{|u3S98vp3i3%h#TIpGpna#6CrC==Q1NGnEKLr8fAL;U^ zPi;8-Pmpt5kEj1x|Bey=XTNv)KSi+_)ffJEivKHg$eaI{@JBP5+zk2OEXI=%wNH>} zf<#7|`18cE{W%%%@7JaODK7tCT>jSj_w{sp{~s#;SAXsFzmj4zDjNQ?#s4}wB`gp6ws4mGwL+)pSnhtz=3>m>goR1Hu%q!G`1ZO|NWJ6 z3fP0_#WfP`kjN;fcLmIBo;9{VCjmL=r5m9@(jQ<9Sj0o}PS!4TiGT=`ilnN|5^Wi;(vCdbNmNUY)17K|9d``!MT7Ac^m)F;6Fps*x4Zdeb-8(2N1o# zN}|0I8F}=siB(kgvdwIXL$aR*X@78 zUH)wj|Ackw`lro4{~swSINr4dI+nLUQ9UIETc%6jPw~11x}-r;@F1FL#-=9~75^Ec z_B5&gdTfEFa0;?{)~FPW<$PfL>0>wtHa-#|1a3{{|J%qOOIXr2S18p zGx`*fzaDqy2Jw>_FDJjmPei`o!}9(4pK!T%aJ>w7E27JmOSB6Ye^vCNs5zIXjFKPE znZW$_|5gvrf`Ixz&gK7|!{7e<3(xuN`yYP?AMw~0-`TYD^iRPcip{8#B?b53;mifR zIrWl)OX?*B4^EXb>ZE7jH2!_x5a|Pm-hWM^y%HHQoPungH7W&TIUg8*|IhaX`Wr6) zZyo;D_?Ow^|Ch)&e&CeYtqcD=0RjPZIz8aG&-aI^@m&L-^k+{&TsR0^b1mXCd11iulix$jGJ_ z_073FWo&;=2K@cM-J|tC#^vAQ@VCFe_~+^N`Tq||!TgQR_5Xf~&8QP41zRRb-yfz! zo>Fj0ouuGFG?UED(E6VuEB**X?PDYwE|JknzqO#h8|#;Xv78UgfB(<(1kV3Zm;Wx8 ze;Cex#b?<5zl;CbA3FU9QEWzq!~YiXzkm*T^Zx+;Xr{9c{?~}{0YvSiCE6>IktY5; zaa0M6z~hKZU0X3-%0Pg77ej=t2Z#rOq8?N>>(Od?}5{Z@$nuAsj^CjmEu2GA|p=xdDhtD&&hzl|L1uE z{X<;-JM{izzp(ueiT`QeILE&y#b(s;@V`m?2ht&Lt@EsQ4EUwI`$gB{Cw!pJ$Ej&&hzl|L1!G{kysRw>$i;{m&Ej`R|~}r_ya# z|MUMCip^+41j%79Zl=JuO>-_! z86`iSGa>Sk{@>=&p8t+?`G4i`xBvdorN3WC{gC@V?UI6Lo17_liefXWyQJXIbCQBr z=#ZxrTv973c<@F^K_)j-;Jf7ok)DKTc`I1!FlM7=QoI z^8}9n5ib8PT>jSe|2a+e`nON~KmEeF{(VHT85Ju2ThgWDU(z9O{_nyc&6IL8bpE?c zR=md%wU3mjKq4ba{CU=>5*W+LfWQCedIJ6bzUPR`hrWM#{>c89PdR?3@9QRqzg7Q_ z+x7pe$k%Rl%2!itMjtKmA6_T&AJHLC@`=?VzW~krmzyc@jY|^UJVb{^Nc5mYMiqVN zz?{poM#+!oOrZY#zulv)|G!-R+Z_J?)c--d{(q4aoJMCJ|N8Gqu^Dxgq~IRhsvpQF zCr|aiK~nJGc*$g2t)!qYCjA~n?>{B=ze6G;hEtHuvqq(0EawB`@Beuo9)JFx_PAeJ z#|UYoPKWYVqQJ1fM=^xj;Z(_g7VqoLlFQ?m)W)*n*dlW5H&;h!ytBK3WV8V!H&RLM^V*IOp|M#UFu_))LQ?`1A%G_JRN@Tuy15vw%(9PpdDKk49$6rZEvhoe86d3Eu%@)xZ7y2MzySrucU7`c?{Y>zUiZ9gg zJ8qZ$tk_O`yw!jE`wtp^1NahdKh)~K;)iJXW#D7za@%a?voF=Z;)68&jxmzYIL?0s z_(sJyR0ZZ|FWPVA{A7aXK1Ma#NC-+1tGJYMEMeL zpQGUuz;|#x$6EbYe2Rwef%%ok9hKX5zV-0^ja<($4n{MYQmIi3UrA_iaK++1_t|%Yp2-%m4Hn-a!BT zF8?~0Kdvcy43rOG@%@%F_K5%SG?o3YH;(10z2bNAKlDGj-ads6dGlWh|0^Yp%~T}h zpIanX7@r|J?@@{BCBpkQp>O*8a{&K8y7b@Y^8di)Z@q7Kvn&|mzgzt0Z*z|S{S=!k zIx+rNNXH+hL*D$~fIpf^=4NR8G2$Z-EgUA}KU^ZbZxg!4-=72c|K6qluP*;BE`RHN zv#qUm{kMq!yL6|^fBfH}*j(`&{4xF?@XatU*PEZNfPb>2F<Ho9Kf0N7K8vm1S;1h`W?-c)MX{q=3e~Op> z6&>)uO#ENrmw`Nu|LgEaGnw2B)&F^7JPFalb0wM}5#F~6=K%hPy7b@c@_*mu zZ>@h<-DvxNBmQU8n{NK~KZs&;#X<2ulrQVw1^hCcC;!*rpCoDQ#7(ALRQv%%=RG3z zzZbWhrT{+H0ot@U{}tmS5uKMW(c#azHjGNz3!9<5YS{i9!2e*E{y)0>YyS`ba@+rF z@&AP~@9+O3#pa3w@PA1Bf8)XNXz^W9-XaEXHdPo%gUr%O%45Hle&~*!~>A zzr9QUA6))5F8|}P{=K=DH`p@&w~PPP^fIac{J)alH(jwG^M8bN{5r4in|}HV{LxG# zH$(IP9GUSaB3gKsM219030=#Xp}cC?{v5#nfXkonHy(V0r?at{c7=Yq}6}LCusNr@Nvwy@u{!C2v*l$VH$o0_!#D^z$Yrcg=UxAcQp7c=JUblDt?uQ zA8hrXmLD@6e68YhG`s=6iSrX{^Kv z`)D?~eb>H@@uerWW-0hu#n))~0>Ab%!3V4BuR;w!1AG$qC*JD6;xin4fl*5TL)%r> z!NtC!_xXCQJDFS8Ydl})9VPW!&KDVNLnI&e_Xxur?csUC1n?1jKd%bB{XN2#mjm-L z9DI!2{{Ww=z8APk!}kW?!S^T9!51k$N5dZuk^b}V#mrc%|B6r1@H@aKv2Q0Ye02ZM z{{EkaUkg5luczz4+utMHS03oQ1biCbZz}~~q}s31@N>Yoa{n{IH!8kR!;c1^#r==B z`fq>#Ps2w)BKJRJeuP^6SNsqSKcN`+^SHj6&zAhy-y;mt@L{>qegykgfNxaoH@p;> zpO$7kkK*+*9qVzp{rx`;U$9i#Z{_x5!KW&IwublpHIc_OOYZ+!{a1W~hX3xc@Nw+h z#;3jlI`diI#|qQ%o4}{>{H_9Te~+-`#X#Sez;EXE^TDU8?**>X@CP45KKXuCI`|^R z=V2UwPs8^BpG4aMvktudJ;Hr21o|HQQ}P)i z>mT?c)qahJ-vK_3*W*m^jfyYS@SDK5%KB&Z-~RrehJOkCGqjyEL#_TReu#!&1U`@J zv-wQazv6>5{ABPEa{dS3sQ8BG1M@Qqd^z9m%myEBfB#RzFA0+MEsMuD8GNeZXKVPw zf1sXs5FcsvU-1bV{yXqVod32#sDH(WY502Zm0X`y;O*}bwv+|>t_7dP^^gxfRedjT zm4;siK7z+99ek1Eb2R)StN))8A8Ykr@hKX9GWaykXXhEHfBXA?8h$kRa;~>J@b>oz z_dOTrI}H4adg4pL7peAZG<v+kVG< zW z^K{hz!&d*JHT+<-pTv9}_*BL3TNdbRfUo3wD+OPq_!c8TLX!vcIk4-$knqyG^iVxE8Rp8U4{=qjYzTxS> z{8;Tz;rwKS4}Zk!f0>4#hkQ1DNqjQ+RK?HM@C7YW|7qO+NUQ&fPtfoK(0&N7S8W4O z|B4UO@P~iH`GwoB0w2Cu)&En0zSjB>!Q-0`K2`CnH2f;GAHn%d2VbQ491Xt+y!ggi z{a1X7hMxc)_1_=$|6f)A8h#k~JU&0xflpQZz9$2H4Xgj`TME8N@iiKL8}h%I&qtZy z8x>!u;Rl}~^F{Xa@mBu}RQ+rCMTca(VtBm@wfe94AsT)H_*U*ub3fF-;)68&Fz|U? z&lTVs72i-An4d*?QlD8;|KP*_r|MtBf7c=XFX#0q8GNeZXKVOP;7jOrQ8Uu&zv2@# z{7c|Fcztf`i~3i5n1(N~+UNDB3VisZs{Wq{^!1@0WIvn_K2`CnG<*y4`N<|~KOKCL z;&U|o3|!w$*-U(>wf-wUMZ;%&EZ1MMA8WSO&&O2#Yk1=WT(8OcA1(PwRs6oCfxh2u z5q=E!zZ86t;%gjyfzd|)L)+`t!NtD)Yxw@e#bly;p4|Sq^L}ct*B$p$@&4-g+s4xs z9N$dcu}N;G-a_-%|7P+;p2rzGGJ!_V1 zGzQT_cS_VpA|sQ0&GjXIH&d6AJZ`3@f8&=+zNzGXp5FeM%l|c<|5V%meeqAEUrzep zO#TnWX2#dzf6QRHnS3SxxYEnb^xPux?-zD1KR)ly&Cu@`PNf>j_k|!j{}hRikjQAJ z!Zg<}@%QIs$j#*R9slOv=<#w>V2+F~#P@?UI7GE*ZkT zeS!{oO2Pa>Nx^%AB$MgfOo8v*yJXO>MfB}ViAGCgBykF=iv3bh%=wTMq$7f$Opggl>ciZkN;O9e+A@^CB&0_?qedq@eGmwm|7-zA1Zz`qAhob z{Cg4^RkX00>v`6whY3qL6Bz&P{_?u|-|F&z#o?c@&iegcFFOTa)kq3_13y5w-3YJM^#Bd6#c;cuO6mvc>{$Kg0 zAYlAIb@|h$Ivn4xv3|dB@!pB5{@)Y-<3DmP0mo8oPW)2*k3z>!p+nyM|0n*lI%FC( z^UpvFd`0vXcbZh6Av*6QiRvXXN@#CjR`IN{{W%%%Z|>6n6PJIv!{4g^TkQIOSLDNK z+WD`4$5Cu%d?E7343tsp$urZ_`d1+GlMade*L2<@`6WF>w+YetCrY$cA|sUL*Ym7V z@=G}rsQ)kh<#qL6@A7|1=bvHwSBwAtYN!9t6q^}M@IPJr|DZ$O{QoQdkHddGH$(my z?n*@Ghl~G8iHvO8*qZBk%Gmy#4ETTXZ~h;<{9n}h-)#GDfIpR;|M>q*v6-EHZ6a{1GzI{fCpRsT2H z{_DlR(N+JSNd12f{{iB^-E;jvBL1Is4&mwkG&e)zj}b3Hbp8qA|CmHZy7=>~vHdw2 z@Za`t{vW#hpV#?MwEf=^|66Du>OcMyd0(3G8T|W;|8zR!ZT$1a|HLC?|8picL;e`? z7)0kEFaCWbGV18U+FZ}G#`foA!2k1q^RILH)2BN8#@{~woimFsuw?)9wxnP_{p0>A zxSwKkVxy$ssD6@yhq-@VrojA%B?a%H1d>J5SA;^8Z;1YGtiL}e1OAO&`fqXh)2BKd{?_^b>3jJG zfsFq;@qd?2KK|qX4#nogtr&lF`~yBec^dyb@xQd2Oo4nk&H0Kj;tLR+*ImYco=Js-v7TP{-4sn?0*UP5yj@jPsRT&jQ^M1IZytJ z#Q(k1Wc*9T(Ra&K8S%#vb-Puf0*Q<~y0>Xo@vO1^IT`TZ+NJ*{m;W+{zqS6StK#2L zDe|jb#lM1!KjRaT|LT6}**ji~KX;+XZ;TT8x!erx|8J8umqE;=lVH=iq-sv6)dX{%;Q%!Y8gD>5!+v&s_lj z-s1l{H$&I|lf}3k(f1h=JtvWoDgHcVY=2G${6G0O|BWvHr*!_~ZT~mLzi*Y(KZ;^A z<74rE@^0zeAUfpDKUe%GU5xK{t%Lt;X|xs5L-5}vkA? z>UOjI6Fac}Cvgg@c;cuO6mvc>|3CImLBRR1#^qn?@VDmwID7n8i+t_dPWftz&5RFG z|Jl;BkLZvm`P>IZe&eYk|6gvVz&H68X*3VfQ8!8SphQL$Js33C^Q=+wOF0u5|Bw9T zb@Tr{mp^@~!|(iO`H!{zSBZb>o6eKp7>dn|I`KaS9lwDNdGntS|48xg#m&(E?U&zn%llfFizu#8RS7%dGlqvj2^}>7* z_$>Z=b&=rhzbBWV;kP}4_X}#M{kCJJef#-sn1-(a-^BOVtH9gOZ(C?KsP3rWd(X4@ zKZwrvuM)mx*P{WTx`<48B zEZ*wBdS05L;Ug`c7rjuc|B4@?;rBi)`3d=+_~uZ_kNx~MNW<5FkKyMb72xgXw+%Ew z-1%7ozLlSkWrGh_&r8cRd?xrfllWxtsfwSi;fI5l=kt+P{}rF0;d_7&p*!?u+tH|h z#fNG5y$?x#B4|5jR)M#l-?lsu=vxO~-XF{dZ$H0XrQx^jKs_9$_S3-^spqjd8h#Gi zPogVqGuGocOdlSte zsDH%=Y4{o7<$bOS@b>fDhPi?H83n$T|Gs!O_;B^Sv`oV{Y?pe-;^*_p;8PVpTf-k* zB>Bwxh4@IT|B6r0@b%#1))U{xXDfRDQSo6KemVHfe-d8>-hO`Da(|%jBJgRy5}yy= zetx@3!{^LL|7(d)2VbO~$L47G8Q?ph`$yP^Ko^U`PyfA|6E zPbEJOuLEyCzuk9Vps#`U(|G+X1#dsUtc4uv znxWwrVSQ`rBtF#Yzv72zcvYWt$I@&*67{e6APqkZ?aS{yD!?}?z9Bm>Kat>Dx!$tD zhZkDUpUX7-vKqY4#pmBxYyDUJYz=R%xAOOWBdz``K0(8mVZDlx_g{ih|B4UO@Y&Y- z_8ax53Ve8x)&G`z1ARw>m-mD6!KW&Im4+Vxo}ZtZ>EMeLpQGXHzmR(9U_RFBzv5GL zytV%PM0{ru>i==8|Ir%0YKpvXBJYD#SnH?a_uUidyAS)Z5VL7-{|pVEW3_*X_)zeviXWokzr+4n_E*hEp#Bvfq~Rwt zN&csNL+w|9Z&Z9kR$zV#(0&N7Z`t6(m#F&J@H4x(4W|AP-NQT0D3(02#&AJReX=YvmG{3;E<*W!6U zoDRN7@i`hk^Iln><9NRj3qDuzDH?th_;Rkd&cDRBR`JmqzPHsr=cf*Q@KVcn-`#<} z6F!%E2;uyff=^U@jfUTJkMv*O@5=c8SMH2fU!G4zn%47K|I zgw_8c8a@TQe2=F2u;eFE@j)7XQ-k=nay?go&sBWGU4i*IoF%>?e16FWU#s{s4ZjWi zX0D%P@WG{4|7UCX-i^pVU*APq{a1W~hTkz-&M%dG{nGZQ_~t4;Ov9(3Kl1ybD)6<6 zZ@DwjcLMs;#PyR8KKMzi|Eo0o!8wwjv<<|kgHKd^j)va`K8g2xu~z>TpQ7Q{T0HMJ zI{!fZD?VDoF99F7llVID!B46BpB?Bs$Ku~2z7%|-;%hYgIPh7kh|dI{tN20tNPdQzADrMuW!x2qy7~iq~SN+E#uX}>rVyvT*Wuc z3e3-htx}(9TyNRnYZYIn;n$-7O?>u zI#K_M57Y1k7SHuu1-@4CEi(gst^7x(_#6#i559!= z!?9NX6`!KvE5Ijly> ztN)5m(C}@!GJh+1eQ4`I{VP69!>|1q=R4kSSAnlpe9P^DzK3x>ozg^nKKS70RsC!D zgLg`QrmP@79ekqVb2NN~b$;jh6>Ifh@hKX9UY68z2R)H7I}f7%6(6nP$D#cuuAe&a z!7r%#pC0Ht#M(b>CB77VqT*{be5hZ3GQsC6zEHyt|5N&3F86<|{wqF1!_Uc5T*Ws`3(QX#+K*|a_Orp)D!xp^ z??e4h;pcYA;DcXM^{?T3p#2igPo&j<#V2U^gKtVc#kcJM>R<6;8h(eBPu}lUfv;73 zOJ<<&TJTAn&wTK~<*NQQ{9fD-N#gq_>EII;pQGV3{Cs1r{wqF3!w;V)^$@a~+V9+t z`d56khTrjljPGVy|G@{ptm^-^K;Q4?O8aTD{{f$<_!6V?Zw@A=?^Usd(5;Rl14`&a4U6BVDM;U{mE-&-`jOzp>7 z{a1X7hX3w;=}#8#A3A?Q{VP6N!*2p#@)GfN;DcXN^*=e#w*q_;pRY^7Cn~;1!!NSh zXFd~ruHp+d{N!5ce=DEw;;sHGK10I~2Or1lPpH-Z*H!&%_=E(UA9=i*e@6W)K1jp& z#`lP&o-4rTD!$>?!2GPOk^YyLQ~TNAYZYIn;S0d0@$B={4f>!3VEU^{?UU!ADdO zpAJ4z@i`j4_W>ENDSSN@YxQ68DH?tb+Artzs`Dq*zv81c{Aln~*tZUR@EfZBZwd4r z06yde;!D9ND!xX;&$;@addmc#tN20aHw z3_f_3s(%fivqaXzyf2CGwAN3>CusPV?Vy*rwK1IX#0AJ4gjm|dI zzv81c{Ep-BJtLkkb>M^7sQSMt(6<@igHC&$_)_qRim%b|i_m@+x1R|R-cW zfRAI}bnuCa&(ZM1!DsRHTCCN7#iwZa-r(haZ|5G=zv81c{K2W1k5d2OgWpm0pC0JD z4SWRGLn-(~#n))~<={hjy~+fitN20R<6e8a@ns+8W|3z~?Hy;kv;5v`vwGrt$ia4Zc?KWg32y#Xm)SGWg&P zs{S>68Tg1Y;v=p8D?UNP&jXM9pDn0=#fNG5bnsJne5=6MD!yfWpzjc?|IFuu53W}A zui-<%%lm}s;1d;}qv2a7OFkn?sQp;0|B6r1@V=GUKg<2kU8sM>M{D>3w4cQ1i#qVZ z@2dJw3-rwd-@)h8Qt*k2uhHvy|-e0i>JH{x$q2@SEw4WwUuF>R<6e8vZ5lay?Z6K3DM#;{x-u$ZG!yYCju%t>Vix`~-{V z@k$0CT%+n=!w(0a#`n7-t^O-MLBso2NIj%ILwwsesDH(WY52*1%YLkqucxZO*DAhc zY@l!3mDry@O?*E1;96Dx8h+Ema{db8^(P&CqT+Kje9d3jAM*MTYxQ68DH^`Q;yM4F zJ5c|MkJj+>z{fpKd>#1UjjH~y4fI`fgzP6{r2fGtD!xX;&j6pcgxb#ppR4#n4L|vH z><9SzBHrr1;xlyoca2Oq(FHuze_mudJ-6J>l``TkWh_~1>d{x$sI8-)?DfmRi*J$|B;N|&9 zCiq;%7i#!n;6r#m##{YYe1?Ya0lt#=+o4wfKT!3r;SXLb`D|(=zPTCoulOJhUq4p( zB)&gZ0X|pp4Oa)|XF2!~p1;}PYZYIn;g`H3^$@|=o5|pV>s0+~_<3i^dKGQ`&Hm;72h%@(03d7B(CRt@WCId`q%KwEuOE} z(!nPxK1ahZ0x$cqSgZevPtov`t@e4mI=?{uD?VDo`%+|lJGKyC2R`^CRsW*{eV1p+ z`75iK_)_qRim%b|Gp?8Y$!0#kXM)dFe4&P4QZDrn!ugN4`mgv54L=Wj9M@Z@)&GxG z{cHHi;468(YHmXPD?UiWj{-02Lk0L;#W!3Pn4b-EB|ja!KhFkVtN1bvfAA&ojpO}B zGWg(nRsR}(8~703&qP}NSA2qoUkg5s?+3PRL;Wj0Ov5h&pHx7675G}kw_F+My9oSd z-k;=y5B@~ezlNUyUhY4qgHKd^j)os+@h?;Ru~z>TpQ7Q1gKw4n&*!Lr#Yb!S0pRoa z`m_#w@TaQ&uL$(@fiHib_)_qRim%b|IasgC`T8gme6HdPHT;Gbr5;-UOMJZ5f5m5L z_?N(UyhMDc)&H%k{xy67_=rN{n?FPSD?UiW&jByjBNgCt72l8?n4byYOL%?A24AcA zG7Ucpd`UD?UNP*W-C#InS3mYyDJwn1=uETsgnwar>p< zYZc#ed7$rrVZvwe{K{{XdkJj)#z{~U2I`F}tsrtVx(AW0`eEIoZDfmRi*J$|q=f$_Rlo1^PCC&*Sq&KKS4!RsR~k0=)d5B^`XC;&U{74*1P{ z|1H+)zv5Fg`~>hJyxw+xg8El{w1yuAzLl@X>%a$pq3VBRpznZC`960E^QGVu6m#Y3X{4%S3em|$V9`&#I zAPqkcd?oW0;Byt$FAJot!5sr_W|!Og1vHGB`NecAt8{a1W~ zhCg@(<|Ciq+dfA9D?UuaZv$VROMDghTE({{2KvrBTI!*EE%Eu_gTGSsui+P2?eqI% z>EII;pQGXDfKOULe5}=f#iwZaap2|pz4If~zv81c{4nqx3#t7&@WIh;SVND{n`6ivVWhy{{H*# z%NP6F=efRrL7)2Y`~F43x=Zo>tIuQkgeTvBx`RG}q5g{MWImxiG4%vG^8fy!lYVB& z#r&-c<00y*`THe)U$EFlea06omOkWXE8nl>?@`pxlJssB33XR7jDMGd*X5AYKB zkZS5~I`|^R=VJq+Jr)kCy{FEBFce`xD& z9bD{7y@9_^eARsY_ld{Ob&k*6YhB}G{k_vmr2{-Z7tX-siFQb2wDJH){>N{C+c}U= zlvFPA8?J!w6OX;$<)7;C$M;#@I!=9`W%%tPAN+t*{;zo?U$a2uPaP^fJC+bn^1I_j zzTf8}|1q^p@|$`}qni;;Jw>ATBr?)jzSnR+`9mCtJb$ytu2ud&+~4OJd!NfcMdxqW z{?o-jm!9MJ5B>xET&E^i{C__~I=7e(dGo(O{P%o3hzI{FZic>3bGkH|gy{Q|CAw51 zqmC9*vlq{F^?jN{9Ke6Uzxijo{IAjZcenkgiGL&Q3;jP%_X+P4YjVVYT4Oiv_;xzv z&HsGyzbp4#ZsuujroeabU0Q?keI=@0Ao3q3AzDG_r@3 zK)pmpIqe0^NM1Em3AA&7`JdyTf`IzJ$K^l9;cw0VW9;$2P2_K(>qP(hpUBsZHS3g^G_sboxmm-$x=NlI45xs-ff$ae(oE&|h9R|Fc~F zqaFVC_c`aR9l!Be-NecRWDk;e4W(s__ zVEh*#djCZEC+10H`C%*_<|_P-;OegvZ8Dv5?mWOUHAh#AQX zhwaY+{2%Dj|8AH6l@5Qa{*SWjf3nDj({-Z1{BeBUSTk4Tr`3ymPdemDe)qW|f8rw| z|26HfN&ev5qT7UM={kwFN@QfRd@o)yl>8wMQ2+D%<#qLcm&^YOoqve!f2;WSrTcpR z{!x6NujYREe=Pok=#V%6A>uy*{y)(ZKlaCP^ZTF_EqzP;cS&S4(}lFzi&qWXp9A>M z{Wt$RUH-{Bf1m9?N&IV{cluXTY}VWd|BuA~BRb^G{~Yn}hi3lE&5%DvJP*;*O7VYC zA|qM+dC9Q-Ie`ED|K>m2<$t-u-(LS7J6T?|ea0upfhd08#N;Nx@!;j7qu}WJdC;p;FM!0p|aG{wWAp|7N-TFLU@? z^Z!VD{4+#;HSIk8>wg8sX3f1A|2mO>hc~DH@7HXj&E02-{GpO@M&qB2H zO_84^krB)Cy?E77@`pIU_-Fge>*oJVmw%GZKiKxaS^UFSJN=KN*sQq+{vU{cPdeny zf3WzkDaHCncfh#*G2DDVjOYIv@!u+uQA#&5&0f4}*!~>A|K5M|zr*D}%Hf}|&iX#} zbLa655840SBq=zJZq@piKu^APTb+ga-y$g(NQXS7VCR{VfHQe=J&1}| zOA2;KWQ1@EB6;CZDQM>a^?#3l3IghXhRc7X-oJgg?LSfcAEj3r{QVd6s}0q2;J;b? zpP)nD{0E8utmni(otvTaKL-6;M8&Jbf3!qK7Tt?CBYD-Z{W*YtR+s*_yZlGE{Es3@ zx*_u7`L_QA@&7d6>HiVMX7%0h-z5HD(jjmDXNdpG67etPX2>5S{y3uImEvC@k z{cjNezJ<=gkD}PDxl{b7ZIq4=qC?*N2U6z?d?#Y^|3r5jDLRPZZbh_og$({KiHtgW z5NP(|CBydT0RDIVn}4Ru|5As)ef|4E5A}We3$K?H{F3V|fgdS0t7l6JUOq5{$L=>e zy7)gzS04V?e~T$Lt7nP-_;&Gsf-g?IYyo!0z`sWP)8!h+7mT967SXre z#DBCzMmaspHY0h}u>CoJ|LiXPr@H+Awnjc_V|yN6ukS8GX?KZY*yca`u|nN{{uSYDFr+GOA7kDD=En5W~lyA@e2@*JW{ee zPa-3a-o-E@dErngXy*XqKhr-20rfxG<$tlu-@5+adZB&(OB4S~<~x_bizqg$XNdpQ zYU%jpbjX{3Kk9se@8+lF{1?j2(E0B*S@e!XR9qp^VZO^uzdNIMY0OAoHEe$l;D1M# z{uNt;L2k@WKrT-+C|Aj7pYyZ3MpYb0n{-4q~`0xKdqS&mS4*&Jy|0Nyr z<{vHo&%wWxo1yW?h(C^~_+{}gkjQAFcfrg^UN~%j4&Z-#m;Sf7{Nr8zSmt_k|HuDY z@t;pOpZ)#sr`W8X2LE@&|6#sA?PUqv*+=~QpqXU3&F$Nd5g&o5xLo{)OJpR8Kd&0L zKL_xi-lczr%l`tGzxDU|9y`ju{!bPEov!Pj?Q;E-3IDgn-}HR_bDH>X#r&_}W@!8| z;x8a7eo6e7Nn}*gyNvXAWBvU(fd8~E{cm>ppRe~XesCgnLazT(#Q$Bo^WZ=J?@(-3 z-v<9G@&ABtPIwysDDmI*jLiRhxyRw#j}c#hsQ5+kpC^$KBmTT<*yGOu{4=}szscnv z=kgCFNxJ@-`;Y%M;(yZ;r~eHUo7Gd{zfSybqeI^OdyD@G*aF9LGc^7f@qUPkUl9M^ z5*a1*F0L8LtA_2*0sL?4(to1Mf0)Z(UH{1k^kn?67XMFYI{iPQ*sPuc|F^{dOFHDu zznA!5`aG`xxEb=th(C^~_<8X!kjMxTe_l0ge-7Y3wM+jAF8}jf{?_yFuS4zmKSun| zrpoi*0uG|ste!0XFMlulp9{D+J=K3t@$XaFjraeZ&x?Q2;XWK4Ks54qiS|llWYN3i zW+bl~wm%2(pVFoOjV}M8E`RI%clWPq3w+^d@&B7%ef0PLgI|TLzE%9s50}l^(e$>s zH~&-NzgGO~sAU@eTmBN`jfmdwlxTxQMl1amz>MTo!}jL@{*$}(zrp2yuFJnW=Kr^S z?fuVH;{V2EXZ^oMu~|I{_5Y@Hd>tL~<{wF&FYsN1`p@QOsQ$~O;_pIK{H#PXBr?*( zpH~grp9A>c+NJ;XF8?7ee{24)zslbKUkU&FT>ccB)wjTZ4gBelH~&+_{~XJon<4+_ z;E$;I8TdAe^QtJ=`R0sT>k3(|93idLe{@4#Q)I@r~hJ#&FT#J zuNMC&=#V%6lg0mL_@{F-#JThWdEpXO%h{^wIt z?j?wpmP+)PL`En55Y+6&ONQ;w0sJTaoBvps{~(8d!a8gH|Ms8xKMM7Kk23|^DK@Kb z#Qa|_eK+ZlrxffAr~ViC&cXAK3T}qx|C1v90;1w4Bw8ksF@;kQ$*YD+K|2Si{|Wvn z2)O@qt;_!mm;VVk|6lx%|48vao}N7Lf9g%uV<|SPZ-D>n;(rQ1oba^&3lsmF;otl) z{4waCAu3)f{`C?WP4ru4Gm=*g+n)pY-`J&ps>?st;cw0V@9g>?A@aFXobnG)Y}Q;a z^3z@u`Ned|ll<-zM1BP1ui|E?{xRH1h?bU!{G}2Z$t>TCR}Ce9hy&FB4gT`F`JdwQ zAL#H;Sa&qW|NRm6{wGmVF!MoY3Z_$RR;Oe9UzHTxONTtAVCV6Yf}3BI>z{aThUy<9 zJ`_>$5=p^eiHu76ExsAa3x`TUI|ms5>-|#@Q2*Ds{7-lITjRgS9{&W9Uwy4peg(y5 z&2^x&Fb+O|5qdh57Qw}DcEU93eG8$@lWPvX#6qa zBM=ooE-4r;kx{ad$DdaXm4bE-F#gy1ryyYb$GH3lxcsg4|Ia9U|96S_KkHimo|5%1 z4gN2S|0|x?zwY91UH@ltGvtp!pMk5&uhWa*qE+6r0uK;9oBOm(w9{Q~ zUkm>i#s4=tkD4 zdfEOLq5f&}?SK7q5yfV8s`#HAEcbsd=l!{-{m;?j-{*yHyaf)GZN9Je2if!=iRjkv zB|1Etb7O3#Z!yu|jrI5E0RGo@>7VTK@8j}U_diav{V#++J$dxs|6N3}S)GFMe_lF% zIX|5Awl;`g;{WI@=lCzC*sQ)r{9kUw^M5+z%|Ar^`;>L#@lWSw==#@`5x*AE$nPW?Es;@9 z-x4z;dDXD}Ie>pkm;RTz{G(j{Vc7qjciTkjgxvqRK>VN0bdLX16r0soWBi|!j=w^O zy!rd6^98-K-6T>iZr{`UL7cTbt9#y?I{@J7Bf1+P(TR*%N`KO-qv zM~6J6VCRvNf(J4F+1w0`KSum6M8)}%f*BGS9rP_jGm=*gm4bE-F#cowQxLHK8|m`z z>F~G4{|kHkhl%_x*Er=TQf$^-h4Eh|^3&;%C;8pMBHs@eKWB0?wExG5#~@nzu*mn3 z$jD^*Uc6)|`9mCF{73uC>&AbC%l}lJf0ONhp7{5r*RK5QKZ;_r=1TZKE&hY(kT?Gz z@gG_)_5V{2{4w0Eh?YJi{<|bHn%A>GFB!H!2k^h@-~1C@{*exUyZ#?D?fc(DQUA2_ z@K3>O6r0sop#Gnd6s+UTiI*i{=Mj>EJ}*lOvbhFvh>G)2{}LHVoPtPRI8+MS zIY9ki>7Rmt`cH8ApW^bj&VLt_*!$me#eZj}^Zd7+VzW9~{9pbE_kZb-H~+s!uyLO! zC5;u_44wa43^xq|74fHdj8RBkN*(ye|C&> z{GX!OtiBxMUn(7cg${Z1|4aOzTZQumWDK=}8M1I;*k^h75On906 zyZ;pVBiG8{ua_GfzJnOR@MSi73Mkveo;w3}LAL2mdt1k1G*RB7;&#o~YTNU#2#;(uwgOo2LTnf-Ibcq5|X`4VlA$Vd}^ zUNvlg4&XnsOaBX9{$UP(YyQ{U^M8=Y=U(BIe}H1MCQ;<4JudQ#>5!+v-~F4&FL+br zui|EC|A*mDLbUV&k-t(;_Cj_JV}9d|0|AD5Xq~CNuw z3taxkyZo*F&y6qJ{;}eJ{MF9&?^ue>>PyA{P)`1dK4G&bXmU-YG{ zc%LB}xlN*aod3%!*`HSp+n)pYCv@q5zRUkOm%n=dySwc_Q2b}kc20rm6r0tTi2u~b zq~rI}A#eT%#eWyZKc1VR`HvAFim3R08UMi&84=>otA_2*0sJrR(m&4SZ@B!e@xOh9 zz5bmp{%7Ch9REQSo7Mjj|CisB@xOo$dGl`<|2~gO8aw44x38#4M*IMxk)KJl7x%yO z*7ErC!eRS!0RKz6^dIK(@BV-I|7!1lV=(_mJN;jy*sLB7|98cI9Ub!Ke*pgf6aQ>( zhW7uc_`48|Y!v?)5*ZzDvOljHwm%2(|4*0x=ehikb@?BU^Z)yQPoz%B{jUMyf73Qld)%8!aJ^uYM|7qp%-vUpk*sQ(?{{O}N=f%m(7I^1A@jszf{NrVf^X<8wMM84`Ge|g>ce~8Qf zXr2H2wtrvo55B|c|JMxmkB9#w;(sh5-u!eKn{O$eEt{D6JCt6bQ=&jE6Z!yJY^#ziGlX0v52|DB{1v`J1 z6!giLOr~=)^!=}`vf^Ef=+=6PMoVPGa0()M)leyD=K%E|@1KHz{mCvGX5(iGD=tR z`16vXl7{&D{Dy752L<$t8ZKVhBq{_mUn?D6j{DYz-onSvWAHmlE*6ii(t zDY%Uec}l^~A0!2rekLi1Ae`ugTf8TTP?-Qw6qnv&| zU{>(jT43y_X6XNEU|R!CK*|*Uqk3UJ41DEX#Aky)m(nhLnTFrjDecGbNAZ%u->LZ7 z8omeG@8FjxBEhd#e1e8Qi0`vk&LO^y7e?y8;=?rj4zwS~?N@<6mzE9be+$hvrOV%k zWZ$*mH{VNqKKMHoze>aJmCFNz@6Vd);8!a?N5f~J{XFh}tkr+Tr|9@7-hLQy+c8R>H2gB~ydO5(_-sh^ulO(xKM#C4_ooW{xpd8l`u{%Acg8O1e+b=PF*AAZ zP5oE=DhDTDs`tRgZAJsqI^FaM; z_<7)CxE|`j->LY0t%1H1z&EjPDfrcjuhH;r_wnr@BZAk%Oz`^^U#Q`i|0=#QTyODK z|LL9;>R-bf_elGB+@DaZ|B4@?;YYPg`z73;=9!Y8)rt?&@HKTZUQ@V!D!}hoe8YFn z{5Za6-M^pne0ddp8btR!>u#U&Kfw1(jyZ`=nd(;pJ#MFe@PqDNzh}LQ@(E_qW)7P+8~ip!UIsT z$8P`@l0OC@X^{T_xc8gi_Hp_D=JL0mH{V{b>gU5S@t;XAJ0Uk?`_l*+(1fE$fC8*tl-J0wwwz&8Sszo(m%@O-{J7b^~PnZ)qcDFc#+Sg+2lX?4^V8ToG$Vo zel9&*Oou$l-?>BN*W4rWS8+3RzX9?|h{i+yQi+Tc6+k|Deu)mF<6=`1hrsIs5xZQEaBfi2oy>i2oq|CA62~zw>MH-}vodoyvHdw2@IU?E{Cm0l+a3P)@9nNSFj3XNAt|_tD$jrYyMbbJ z%m7Kjp*b>kw{dZLNx{tRl7f|JCRS?Pmpe&TyncxKXGqjrB4ab{waf~hH7W%QIUlJ1 z82=OmjDJs;{{ff3wf=wk&;0K${_|<&@h^ehWlE!3N z<9vNl^dk^`zD`PDxI{*r`18cE{W%%%AJC=$sV@KhdjAh*s^@JV9xMKzx~9NKJO#$| zga7H`|E1R{FtZu{cZq)~H&fv2i=uxV(dTc8e}P0sIbAEz-;MS6=VZXYf0zD|F8_TF ze{20)ZqNT?ME;g(&cUBZv6<3WO&W@!DZ65SX?Z&gav zM7m|XNvn2&>eCLwJA1T;_=<~Ibf*leWd33F7R`9G*DOkw)!1(v| zPeH)^KiTE~i^Ja<|JUsCKU(C&=}xEr;&&XyW=bEC|9zJ9x+mWZ^&)>~lgO_@Ghd_J z7fqDqt_jiUH%hb>#otLcD$Lh;$|(7VI1?EEXn%R#_(!<>e|GrW&s%00>UqnDM|Cm( zPm>g!-tYhC{NE-iSUJ-%|1sm${9ofg|EF*YDtO|k6fER?VEp^|ryyYbd$|1f{vZC` zZT}GQ*S>EsCQAI@>MQ=9-#3`~IsESsf9rjN{it~BeSB~D^_@C(V|Iy)Z&HtC}`QJ_CSJTeRfBvta z*i7jq@;{s=gZ~b1&OFWkMv-50yX0`L?D2eyt{2@bM5kXT(JYCKD!$+RI!_rT{}5*a z^PfJu^N+l4{)fB#f6)1t+x|z2e-Zu5{)_+rC^l1iivJn#e~LTj$-e>q)5ZTrar6zq zbWcO{#T!!m*GOco+nADDkET0IU@^t!m`L&8vRTIG2|DD>|5Ny9 zN*dF-8G7D^74KR^V^_#OF>JkN@96>_3y*WTc5d&l=mGlL7ye zyY%nw^8eQ5Z;k&+r`q*@82+yM|556{2mB|)-*f$c1b;MB#m$iawPL&mQU4V9OJr<* zmB*iFjqT6LfPaL`pYJE9H1Kd5d3?V;o)=bnUPEor|Hr_#3~I-oFf?D7KfEA=nUaTy z4+VcNb!R^t?~;VH$op zc*%bi`2C7+q3U=0{(q#se|+Ba_5ZKylF97a#M+QeGgoLPqeyAUXe*^5qe!)>jJ6VM z$S6{p?wXdCH50^yHQR+Ep_$A&ORZV6DT;=mBc&mun_OGtm03ruO=Wbx=bXp$ymI|G z@3?)gum8@=Jg@^g7E zP5YI)zh7>j*^$_{MYjXB?dp`1nggP{D;p+{wp6e_>CyPho&oD z7x>A#e?7Q0QSTb?sodX&!7ovMi@`5;<#T^t1>Qez&|vVz;ET9_D{%g6`Q-*b5q$d! z;?tb}w9StBkHPP~Nbrj%dH<4YL)66LoT{ATd&+#ajI zZ&1F$;MaCZ`R&}^3!MMTmmBn`LFyKgC7GvhueEA z_zlW;Z!zMtSH|m7eqSha{lD@}2EXb>(L2QLy%^#&mw{iR z{3?Ur20owr&s^uf@+Ah}20mjh@x#T)f8~P)Uk|>M-xs>TPo~cVA^)FF)VmmbCC4WW zeu?s141Rr^jE|KS#235%U-<@upMdgPN{BCT{wrT@@WY)_Up0$}Pjmj$H=dCH2EPM* zWhwE!XCwcWA7k(v9nbM;1;0W0?xzytvj%)Vk1rwcA1U8t@JpTlTz)b5$@GmfBajY#DG zlZkp4fp6se34>pv{1$_s3BHo&16ANRDBoc4LGU@84+YMD<;x9z@ADGRRL-|F=RbYp z6ZvoOUEoXEpWd0sf91y*{95p}a{d|o2Iaf|lo+3_FI>v+6fJc8#S4M|Nckp%FLdSe z_+AWtGJU2N`ET&!!52yXJO7n0H28t%Bt9)%zXN9?|CLWS_|1;LkoXSpA1UAW$3(pi z;Pcu4I`EU}Gt0<-gI@$*))UIWFHwG#!54tX{NMSne2Kvaz-RFL+VC03f8~P)-}kJ< zNBYAq@RR8q;mH4vM7n&B_Hz?m=@MS2!h5M@l=fCph z20saW&AG&Jt{Z)_m{4SvGak`I-Oh%W=bMEO+)zxf&DC(l1~o&U<082nnt zv;V`VBmb2T8vF|IL$itR0za94BL?~3o~U;|_!c?;4}OXATMT{*_}X$RzY6>Y{C`>V-{7}_@A(1oz0;BZ%8xPlb>OAFw}RiGeD}u0 z_%wBhKQ$FpehBlExdwj2pf%9Maa)aLjeu%c4y)@_ltD64?9|qsa`OteB@?ZHe2EQ15 z<4odP!EaE$dqZM;X1emZ{f5AQqloZ}9uwdgCnOhh6`ve4)XQ zzhB~?&-K;i`cLK44L*DY#%uP!<5c92@_lWwdSmYUob*A>0cW51{MmJ99(8u**RDyq zq%&^6_H;UwLK~Lj?qi4ezQQ-&rTtpH@3WN$sJGtw8a?@cKbv!;*R!5CW&?j9SH16& zoBnp|c+yCnIo${@&X4O0RyQsf#`>ksWWxcMF^DPX1 ziSk-|#Q0Q$ujKh~2z;~hO$J{KzLDqW#o!~# zR~vlZJrd7G9wlRgJ%+$H zE8k@BaL|9dq54SoXphf*HD2BskYl}|VLH7LK4>#GBN zv+{k9CF)%aK7-q19r%dyZ3f>4fAYEiDFdJVrsluFueeI|)^dBvb^a?~V(`1bOM4$a z3Hh&l(BL<_@@0GkA5nhr*NJ+^*Ghi&^L}L*eD+(K{|3JZ<@d}Wz6yMW@(l(*6}-%c z3!MMTmmB;475xZcU6&8~9Y| z|G_sa-(>Lh;QQI1V(<~=s||j|55@l?)|=`4|BL3o!I!x4v5@$I$;f}@(+xfVe`@*t zv;%yz@_mmc>fQCA7w98+-%!Azz$^qzqH->La;@WtR;xPDu~S18}z zk{F*d@EKfw2z;~hO$MI_zUCC-i@`^fuQvEJ@G`&3bpHQU^WWh65T6$Ap9hXd{wtqu z@Ezcbiiqz3->iJ!xKh62Ce4fDv!4I88eD5UWf1l>R!4D&zjof})!B;5X z{cvJ@y200cm-rC)X62g2w=T9;Ci1O72zsl7w&kr-5{}Ii9gD<{U`sW;;ZwwrZ z{8v8R;B#I19RCjR&C2&RC+eNJjE|oO`Z+)Az(Z!q{B<>J50KMS1y%9k7bdhnfjRDPQCU->+PUj@E}cJ};ZHlyuZqD(l&?1U+(yag8lF#PI{*7M z{|$csr4rA49$yA>k^jo48~hINEhiG+0lr!Jz6TTat_NSrd>#0R@@)pc8hrm`;>*Bi zzo+?c@a5o(`28!_`LBG5!A}L>$^7uq$baR72EXlisoxsT=PvLO)BHF1rQqefRu%XP3LkFJ-;O;3LXc8~l9mMY8_m z{Qsxszrm0HskE0Ce&6qM{ipKj2ETR<+85_@7<{wxefKBo-FBz&L)<@CfsZKPX7F2H zll8s)i-<1(pZ&h(e+*wA2+{u-xXL}eJ!QkDdGx)YPbb;m3;KO;?E33Fzl&Rcb@#PKjFUc@862k|9G5! zcVFn8t9ZZ`{avE}@nd7}i#Z*}0Xriys{S|Q^#9h@|KSQwSkeEY=wDb6TmKi6?Pa}-`aeM& zzk(hmr@vA3e|VhKe=Zk8^`9j*ek80t-xOx~ zFNgcmhyGA2f9(q*emk}E=*xnC=5`Hm$TzslF&Df(v|9b5U+ z$o7JN75y(ACyt*(kCM~>bJ2gsWU2hGa542Ma}Ss5PKC8EQ>+8T3UtuGO zK>y!9PyZWn`svdciS>VluYarPUqbJ>(e-~dzxM`rivI7n$$j}7=uvX|?-BjCOp-93 z#>Ld9jK4z)&4=~g?P8rERv=gObCdD)b1wjMK-%az*=+6I6 zo`(kCLH!>qj^9U*lGA^;=)dfXQva85F;xHGkQy(AweL`|E)XjariqugoLh~rpMwGY zJ3mkV_Bj2mG5QNPx%=V=gcpz>(*HdtA@~-(Iz)%yoBS$~^|plIg<~WHN7JLELNL8S zLhxFegkazV3Bhb6{oi5j$&e826f2O*Aqa89(Gbkxct{8`-iZ!DLi_KI)BmWge@?Tn z|5@m#sc(#ao(gCE1^T}O{q!g~{dbA}BMyRoTEwRmn0=Ti{yVHa4>)#^!U!_-tX#Fqqt3y^V^yiBHx9CxF`hO<+ zFC8QL!(0sMN7CN|YtJ~*UoTdmpWgkv5H}oOKL-Q)|1zrnSL5{4r!k`RyYcU`QkVQ| zpAqpl(>io?|92y=O9$T)@&Em`bWXR^qol;oxKqU6akW!8b+!ZI6lm zE9p^k`s<T=NcSOF`_d)(Kg9f} zK=gBy@%3{sp#RO!)Bj4Ge)=v%RQ>zki#q)|egTvIf3t+(rn6&H;0Ch2tQ``9L(v3o zrAJAHVEXM6f|U~`lEqvM&Hs_~XTbVNm88H_u>vi$_U47S;b;iva6Hidd!j>-(Eq<2 zr@uKyzia;s{rZ1W#6L^Z?&$h|ifk|V2I~JP@%m++ng73^$(iNNxJ|_0f@1EF34Y4D z?6VC-8!g)c>C(1Rqd- zM|T15a}&sVT|%&Lopb>oC))(3*GULg9x0LR;9}@|AwQHFe*)Gcmy5MttUxWT9eW{e zI2wXE91qn08_^+1sQ<1w{SU?IcfU{a;hhUq{~tyFkGr42^#WOQXLI)}DY^i^U2I(b~Tk;#TA9=U_np>!a#_F;4%3G5THp zU*hL~hlr0H5nK6xCEE*ji}-J}NaepzkCGBU9E&=W;Pr|6i3FKN8lSgT$I3R-lLWuDlSp8V$i5jtA<$J30gj z`QI6*e{GC@SO4Gl>;DfTesWH%_~Xd-g0G7Bm%b(9Po+mmiJ!4r#D5)=|4%21__;{; zAz1sqEaE>DD^SehmvfU*@$)zmsQ=fZ#as2iHBSHimi{tde>?L3xVZc$+YA0#^nV{K zQ}5HG9F7O_|Ig7ONXY-^;`HBZ>%XXBfwuqOi~gIa=Z$XvH<0aR zy@K|CxHx_*ch1R70jA$9`hSQ1zgYVCl-Wr7Ghprck~D#-Vg(xM?0^^IhU4q!U_k%2 zQT0C?r#~F0e+-GF1HY$r`18Lfpg%jd{%;`L%X(S#FGKy`N{^D$ze@D4{HBDln2VwB z#Ukm?fc5-BssE{B1yV&nHymF-2Lt+F8CCz5IQ_qj)9=>5PrJ-t|J@+^U!}=cbp7*u z&&zrV_5TfV{4JiJB~||`MgKE+1qjPDFJ<@ng|1q+?tS;!!6#bj%QF8ik68+Z(F#q9VX#7LQ zUk7W?7e)VKu>$>ccF7BItMT=7FrfdXQT0C^r@t{yzpMW@-u3nWPV_%WI}g$Ie;?Ui z){D@8nCO3$Hz$&+{~JaB!Cw{qRkFvCGCNfiUj}Q>Sh41d6(|+`+-iLN91Q618dd*O zar)Q9=y&7)>{8eHt$kd?-%R_C(c*99eaPSoBL1aAMf~mbC@JwXR*3i~ApTq~hSook z?!3QC*1j)@_|wG-bkV^(Z#g#^6+e$7A>uP%j23T=|C{6V|2#&&|Ne9I5B>L_-%1Fs zp`$v{?>|@a(VeVL3BkT!$`trV^eCwiOkXY`SeYS_EZ}13{b#=PcqhVo!*`1fR-{(Efwr$6EM|LaBn`Lwtjt^XWZ|J{oGhyII_UjMxT z`p1j@OfIHArQ#A%{B>AomWdS*E6_q`N4*fY8ecyL1Nu8h)&HkB{dfN#`ZxIce`z@mkCLnZA4C5*(Vxr3(D(=aN5XpkBGErVtU!k7=Z53!=U_np z)=~BUF;0I&oPPJc%zuo`e;yP4$J59Y-31&&wwLuB>i_HF_$fR%CDs3hME^ryk^XO( z4n>gu*<+;9{|DBd|9y=YM0Sf6sHL;dUWi+bub+bf{m+l8zavinT`~Gy|2M0YJmAHT zwZ9heGfs{bKaFfJ_^gP3=@1cr4n0ar{EQ!o_*+oSSGXAJ{|*rGsj&9#7x4#(6&R+2 z>)vv1GAe!^M?%DBJ{K+C>i;&y>Hk@bet-Ud*j)=;2<~k~`#(4~1m}?LWo<$Ir%MPf zqDM)EVEQr%!Re^~OfH7%|1%N&by#~o6)PZCpprun;#Q*}n8Wcv{XZKWf`tC>4{`eM zjM4Av{~W*m9~JR;e>+zEon(8#XHfqKi}?HKQBvY()QI@&ApR0AhUy>bUJ7g9CnEj= zu>!qx@xoiqO-9Af<4Bc2fse|?O8fBZXrz2E=+N<#2zR&4+GGTC0%(-MMx z4Kn_{MURpS!StmPf|XyBNQSu>8vjbA$GZpCBNvKQFIJ$4LlEMIqam2X@j(4Q6CHwt z`rjC*|Be{_uKtVt`fm~Ok%MCE|F2|w!KXz0Z4m!HJxWUajO#`GEngM!zu{u2{*mr2 zu=Wj0{XZmDpo1)8C%^AE^)J^%2r=y&HIaz#J48ecyL1Nxu(JpE6^>A%g=f0nQR5z#-HUOS>E zKgW^n1)miC_hM(_RDLr_X7HP_MD*YC6$#^~ZvAtvr27!8Z`bn(qw&P~SG z&%uEH&7Y@#L!ACPOMj8C|6$aBMy&p6WP8Csq5kib#(xeyN=|<@^dBVpzrw}Tr!1N+ zic?{ob-q{!h!sc^{oHDN{TvMFe=<=&-(Ox^w}6Tbr1GYH8uzXA{aC#}m`6oXOTmBC zUofA!O!yqWAJNOBZ+&3o{-eR~tr5PI&$qXNAG!ZX39iNSc_c1>8~FCKh!24ux&LVJ z>%iCM6JHE|m@#Nf2Y9tulE_t4Somsd^$eir8)nV&olUq;N?C=?|+g1df#x2!LI>d%k8Tb{K);s zYZK$M6nw@x#D~C-+va;(41NhMaQ^Fk#&Uyi0x#cpN^|}zpJ(tZz&}OHZC>v_ z>JKbg*dy>D1(@bgiA3)k1c5b|I7bc63ezV%4|4}RqS<5h`z_oMt&9`EYFkKBJW z_`OS{emm*JqgMug1?=Qu$rr zNA5pfnW(n_{Iu^79|k{i|Iy$V1?77(wVV%C;79I18vI1mZ_e?=7dZd*K4ZDTH;tF? zhY!*6nV07LS3b|+yE265^Cw>K9^}8?HymT|6N}K_^8Joh@FVvhf0!7bG4mup8>bN; z0zY#9(cpL9Ch|? zlE>dx@FVvhFHelmj!yBX=p^Dp;79I18vI7^{j>t)6@wqS|7h@Qz*kED@BG*MhJ^-S z4L*nCGw>nuU-@){p9OyCbmBX}kKBK(Ow>CGd=d9Qb>K(tKN@_%@!bEEfgid5Xz;tY zN<1@;CO+5sulEy641SyAdHfpw0Qs+c(BRjDPn|)07xHoox+3N#z$f|Mfm&xxr5W-^l$*n)6@zJcFNqA?6SA{`+s_zuq?- zWAN#P=pS;a{8sQI_aA?d7@tL(rM~))AwC3t{mIyOICOryKmPC&m9%?%z7VkKBK}EK%=P@G`#Ffgid5Xz=U6=g^5K zuMGUi{YQge?Rd_&T<5>umn<>(#o(pC8vYmZU-_WH&jl~*30>eL$`4i~>YW09i0d~D zKKoyK|JUHhga0$FaCueWE0k|A_`QFU_z&^?p}_gCe7V8z0N=>{Nt*Lt`8mnP~BfWMQL@4Y(k5#`$q ze(xWpeoJ|NQU*Tz1HJ!i@H@fx^LU!;{8zrj;J1Qr=l7}M0p!2(L4#lK{NeGX3w%WR z!G(!>*MQGpf5PCiKh*p;_@$2L{HX$8p?rhE=i>LmBp)(e|F3+x!B0Z@joiM{od3$_ z8GH)(O7_3kL;eqH{u}(x4)ljSUbKR*P`-OXVtlrO&*Aw%2z;~hO$NVlw~R0S?0+%% zi1O72zXIhqa{J13{(q$TZ}9WM4{<&WyodZ(KHcC8KN5dBxxI9NZ&toJh)w;6oOf%5)UD*ZqB?Eh%~8+;w+!?iqr%XR)MUt;i!8hCpzP|5xCa6j^2`Jlmv zz9jzS^Z3{WKBD~KC5d`xf$!n=5(b~WNAus{+isHgof^r1@D<8882nV^LlO5U1W#fk9=f|vRV zfp1p6$>3*#zwsMXelhrn^3?`Eu?6o(JRit({ts#X8+_nOtf%q(ZQvisf92B+ewXu~ zP^R2-7uY9?|*Mnbh81ZS&f93NGelhseZxY`dLH-YG{u}%(@GYEgt>7z^@4hH8 zK9j)n`F<}1zFGMugAai3XTBJGMEPoi@51j5{ck++na=W^?@#;2d*NTH=*eJC)dgMPsowy$WA!_@bg%G?_3$D58K@1ueyp8 zSnhwVmM!2{sp&?a|9Y95a@Jbe0)AolSU#Nf7ClO83wZj4EIVZ-iV1TubpGdUO1rw0 zdtmK(ORRda0!194P-#?v=5VxR3pnF}=l~_?zb8&Ved;2ne%<-s4-2>h75zUE{a-sY zR{ud{ds+8G|Gz~4Ve}|D{j){?L;X`&aW7RJ>;H==ejV1HH^t)oqAG8vw(EuFM(gKb zK>ylN_1_(*zslCXX9G{@ME@M|JmWO`adDt%L+sPfapJPLbCeL7ySqSOX|OiN@o4Y_~&5l zc|-JX7Aue{`nlEk`Z*ZTfA6UJe-@{|GETp{|9Qfq1>}U}|4PySAia7-*Z+O|Dw6d} z==Vhbqx2}b`ae(fAMtO|U&Y0ceq{V*u=czz`sa%ksG+$N{cdcuehvoohey?aXPo{; zar*WC&uaht-%Y50s@&)!P@j6}(eKXx1xsD!uf0*k-%Rt4=*qv5 z=OMvH5r5k~a%%Z@dX$v-8Rv@lTlz)(xm*mL|3kVL!P?g?m4CWefif1qoSTe_pU069 z@tMDf7H^IJcf{$ZPhG^cfA{^f(?-U>6%vB;X(|<6|L5@3Dr*hu|8lASi|A2OA((!S zgka?^2|*?oL-l{G)cDt7J(4R{K&(I~y}Qxx#zuu;4#xxa-xwW&gz^9OIQ{ggix~Z1 zp?aqN|I7;)xD>c|x#+(sGd2ZoAlu9OIokg}#PM6{QF8jfN6y!$JoCP^|6(qN+W&T` z^fO@Xc~z{bVg>R=Kerl9fjJxu=wCCc{@dd8)2A+C^t=B5@D+ahzd`grPOqNPP2e$p z70tQ_`u{HaH_@Zy^cRc%hoC>i#gKj^{dKVR{8{ub7Aw#~YY$$C8;-A^g8}_NA60){ zoc>GW^y~cZcz^!)W6}RLdNqsIe-OW_W!(+^5z&7bJxWgh*`oh7=eYGe!&8ALdL(4=wEnntp1D1_OcqF zzfbgEL64Htf0pP!0ONly7eo4y@khei^NQ%7AXcE3*3P^Tw;EqR2Lt-=9##KOwl?;znRv_qQ&3H>t?}v)c;Nqe>*)&O8ks7MEvUze=Zk8^PiVRZV{|~FN$@# zSb<^|znq(lil4`kK>gntE#9jCTjKQ7r!J!E-|0Wp*MGg}pFz`(X#La3_JVgn|2v|e z=R?WqpCS7Hj?V8ZGQmli`;sV5g|+Vmu?`R`&_Nqd-g0g=zJ3k{^w)o${+r|U)2A+? z^!xXJ4u8Y%|E`k|9G@N=f@8?`vTjHIzbzp+g&rjpg6V}4g1hkkGwk|*Wc+_z|KBMg z*p2=_heHtJR-+-9!|_1=-w_>xg#2F>r=Pxa5vAYN|9HRtmx%ahDf6Q1|0%M);BBb? zzlivkIXRPQ{4-7$@n?J}jsFhG@szp9_*z)|wu<7xIhLDB!OFH$ko{*m$hu=YJK z`rj2RkS6-M)%f~37|?&)=jp#GPJd~P{=!Y}{r{2^{QKY6N(iRYQh0O!ck`czmiqJmYefHN6#VG<&nIMiSw9v1%kpJ%a$vG4Fny}%U-{-(dH+YH zXMalyeGb<1-xO=JSb=^zyWxen;rRMF7|?&~sQOpL>7Ns$-?jgAKmV^5@ppeMw({>J z+Y8nr|9iyi`{+?pl|SP&^1MFf;UTH~OSl-ye`I_qtbJRg@-Gl8P{!hybE{GD^EeX7 z|DQ&Sx7z>mIQLRND_uK!czx3C?uaXel z6gU3eAmiUp(Ei^L-)~KN{QEBXU!QWpXOaTNTnx4UXQk55fVJmov8IX@$mbA*xYcL~ z=5Rca|Er@zkkI~r9H+k|M!(Dduln_WrHKFNkl6hHH`!kB7UciyBK{M4lwAE6i1;%O z$mjZhl8d4IN5;3q+V_-*|D9NYR{r?=a&9#$ejY~x_5YJ-@mBta;`Co&=@0n&e~A2# z+x$6>H-CaRL;rTse`>OuKQm4d{ntVNrW3tPe5y&lLUKYJB}14Cue* z^Ys5HPXGBa`u+LePj)S!dXV@3D&+sz*c7;dY%gmS^1oX`a4S7ZDg~yWEFpLZAt>fz zDF2c1XTaL?B=TRZK&^cLo?DHEU=GIv`G0eC2omytS)Bg!{tx~C@bzCI`mg!likR{L zO0vDImC*m1=>HKtN=|>i=)d3#`P>8wxERupq(2eXo$S#{daCPzJ3k{^sg9I|B^WU^r?%O`o|o9{8iuc z^Zzom|4(D{|9!H(tQ(;JWzqjJJxZ?r^F;pvU(DzJuY-#r{mA$yVC`u~`xh&aBl@}3 z`1&~*(7$|C{nc^$=~EXm`rYpz9CoI!ze4nX_Ma88?>}UFSw9y2%dk0h;GSglpCI~I zzBHEgcTvftKl>28|G;|wt9btrE6^z4zvout>*ruV{|%$+zcx-ked;1czwZB>rUT4DEk@O=|o|SdV-~tO;TTYWNfIA#OFkehvoohep+Zb)5d0ar$-tYngm$eM_|AIJvE3eNdRsWO7dHVgUlzi4-EX({Uvo}hOp8;#n2C=4! z73i1mzjLec^>Z+w|3`89`Fk6)`sI9aDZN2>Y22~a2M+P?|4}*grhxxwzR3K9X`KFn zjIR^l%NM)6Pkn{>5cuuNHyQk9@SR^J zz8L%=dLOac;MalAV1F{5|H>B{{DeE^v&JIUJHSJ2ec*28(+z&o^_(7o1?+zZ`0dK~ zQ8vfx-Fmx}KSV1SULE*D^nPKR!LJ2hL$AAD8Ti@CuQK>m;8U5;b^a?~V(@dp%XgfH zxudBMY*#*L@RPt-a{Rl%AENgK2Pu2w^`?M-;2`3|;Abnp#o%||Ch<9r`6}>tE8k%7 zlQv8Iv%XAxf%9Maa)V!u@@qLhY0iKD{-43m2j9Z^)5}9I<-hV{41Nmuud+X_;O|zx z``EfQ1#`Uft*4*Vf{zp%~V*MPr~x;w87{A}e{8GIG^ z9M+rb{8zrj;OBoy;@{5sHq1jS<-hVlgAbtmcFBM6hxqsZzLThT$0u{S%pQ(U82oJI zw;24+1#%xHgUhc1f4A}t2EX@c;fuIGDRBNPUvBVo|0eMt;_}m+|Ni|ygP#I^!Iy~d zeFFKf{FoTNKF~`4W8h!82*T|tlZ*KL^|4fQ*7@s`E{`35FQE?)#LPe3_{C#>N#@`tyM~%PR*OTnJ6gU1}|Cm^A{LSGd=;5QI#@{zc zKgQq2YopR3;r#hYm2vv%;(wHWtUvx@n6rn)Pnaj-mr%Qpo_t)*{Xo;zBK~_%i})Mp zQBsqSXO9x`&z&LSPvc_hQ+E7D|S@{)5jE{liW_ zD*ZoB|F1;d7S=JV)VQIZ;#*pXN&jrBYSKqOUH=#7Fgf@pNM}*tUwn{)Vxo*$*A}@ITC39Ka3V{^?#Sf=|4F}zu*4n ztl|lujDIDlfBMIx^Ply44_tx#?-1WVX8)22!P8mfe|^gDiY5O$L}tqN7RmT0U|s)+ zSnI_Kbe|Mv={{qqfH`@7#*8euy-UF9I z|0dDz@#aWU`X`9~*QSg9R@q}o*}hH`KMd>ohs9beR-lF6HN0VNHNJih2J~Mss{RFW z`ls0X@7lo=HmU#fMZdZK@<1i@|3UO8z5nv`;iCT`)W6$**^U}_`!Clwi+;ENk|FxJ z;rRMF7|?(DsQTx}=|3q>zw7^Bxp1E9KTq@@Pdh)+^?wZ6-UExEzg_g7!ka@$)&Dm| z{{bjwcs~_G;~#4LKd`QE68*cy3e?iOvNz1F#@Elmfd0x+^LzgU4GTI=wJxz+gkIT+Bt zXjJ_d$LXIOr~e=lNefVqZ1?m3T+#pd0kQ4>F|xe}E`$Exi~ddYC^`L^qW`Y5rTvGv z7}Ad#zYf;*4~qW9Vg)KiKerlRKL-Q)e-Nji*V9(NynxCK)bOOGjyu+<^`$l{Cw~28 zKKM?WaeHOp{q?0)20zo4Pt!9m7rei|RATT!@U_&PdBfb%(fWqJ{$uc)FRNf?h^9YY z7x=rCAEee3@BhY1dB3h<|HI(@^`$KazZm7W^SPQT@c#NzgTc=N-^2bFIRE|iAA_F+ zK7;*FbN(xzXYc{=jda|~>*bD+)(4ayWAM8xBtEsww}L-J*K@k5b;ZXgw_e`I#h(y( ze|@RR;LEp4{`6Dx^NPXy>r2%JKR!qJO3t@T=fC<>Xz(d0Kb8F-;Es>hhjl$C-QdeF z6}>Ig9J~(jvz70o))cRIa29uG0m-*I@c#Nzo5Al#e&(=0W#IkwrBw#M6MQMhC)fF} z>p3L`zZrZg^TXWHQT{6*H2D4NC7<(IZx{Hxl^;ATQE%WCiT|HzxbVW@{q?0S2EWzi z8~alQ-d|s8F!(0$Ma&mC|NZqJgWr}d{^Zm2%}aCsE1zfZ8^QOp-d^qqDgTupWAJMn z&*is*KSbAyx(`i^&kFE8%!k0wR=z2Qck4@cxQDl=Y(G)%_tQq0wZ8PmoY?W@(_`Ys zmjK3>`@1+GJiq$mOc`HpqEw3>UvJ>ln>Js@m-p7o_;M>fN@{#r_;ndyK78sFep4yt zV(9(qJ_;+XFTolY7Hg_l0a;%PXGD!J*OPvXFZm0i!kMtX^2UX6`o9yW-_5Ts`JT=% z{&=S7KR@n><2l?FPrF3)pPVP}mlq{_#Bt#vqW_`ajAg}{TugmRtW}d?;2x ztUx0#v4qD*>*rv|_?ka|RQm}{vpus_V=Iv0Pojse^>O6i`LJyKIMqblK&wthVuWHlJVEU8rLY+ zVzC0Uz7*zGqw}llIT+A?@u>PQh|~Y=IQ?HHku)Kjv!Fut7oz^@Uyj!QKH1*1GU#s= z{U5V)N!938}6 zuS@*=KV9@s|2Q`PPbJ%%b`kRb7|H*$=}~g}zbg74dUPze|1>V9KIIU!__45_|Ci+d z{(b!au)Y-LR^#jEU_gJ_sQS-~(?9Y5(4Xe(pAP-Qar(*jrp<%???692N=|j!sIQ<7h|C1y7r;7g1{u`_R6SBQ&bD@8o=s)n2Wc42;`ak@m^nYDcGV8xb z6h8-RT!UDf#lrehm|KmnpMwGYrK9RUCr*EMjDD=Ip8PjmU)_9~h~GeAkM8__OSV@y zN5ud05fT31hkx?(|5UX9k77e`D%sw&3sL_MO9;-UM@fZXVVZ>C zfXAf%)3_L_f7JL`SmS;sA=r=eO|rfe=2oL2xSr#I`kxaWf&~4=ar%#l)9>zgUGObm z|93_I^5;l=3r-^FBm(@I4D$vM(-U6Jhh z#)V%J{SP&bOK>zGf^`8}|KPyhZJKs2G zwy*ybPG zZAkvBxEQ+MUoYui3G2|?#ky3iKrxHIpPP(|U&fIT@dXz|i?{l}nQ{6LkJ0b%FFkag zU;p_Mf(I$`(e3{}vb|~NNeJG1Ktk{+S58vx|BDiWhfqwF)N#s^J4Ezlu*Tgc)_k!7 z?R>s5%&kU4a6QKZ^?!bJ2on0gGvoAsGfuyI|Go57|NVE0=)Z<~o@o77lI=~K1^sJ9 z|BtwHN=pA&=tnUH(#NGNL8YGvYh0b^pCncwNAz>6@%3{sp#Qu${qlQi9#>~T)@yRP zW2N;h{XL5kDkpwDZaw%^n$dW}JoM0dwDLiNFC38a^SM*#0>54PK}zuW@+W|=Wj+kv zKX1Cl;P<~Tup}_~hm-2ew0QXH%`vK_&zxSU~UoG^y;&p)c_XGMU+vD}_1mDl= zp>^Q>{eU)u-v)k&^_GG6_XAcL{CZbDPug>x|GHjZV(@Fg_i*{c+!0a!D<3rYrQj=h z)3FP@zaKF8g+#sc!8gkKFL-}HV2i;|b^dUBtOD=v2Q(P`1n@bWZw1bOUEeP^_!Q?q z`;+GUS3b|+cccAQa{0a7QAO4lfkb6 zpF!QDR}9|Y52!ZyrQmZoKQo>Gx?W#s@N>bpb3P34P!zQvkZ$l(z^8sddE(<^v^Ba|CE9E_XAcL{7&%s+@It+|8>2-#NfAruaW+rhaSp* z<%0&l&iTXbs|&opA29gYjD+^y{W!l~1p2xBFnE7IV2i=GI-c{b3cSA`&|vWEZkGP1 zNAlnKulon(20s_&chU^YOLP7!pJ(usz&CRJ_TGy8*Wa5MWAG{9D>*)`;Abn}{lCQc z?E0<5r;}eYL*VaLzRBRHJSKb(=T9;C?aEgh`~>hroIjb)fBn6QLW7_Ag@s&SjqK0B zPm%x1ryG0_eCKZBJHX$qeBb^=z1zk}`T3In;I}K^X7KC5XK;O$fj>llZ(^0fuS=8o z6mfgcb^a?~V(@`4317+m$#5<5U-_WHPlZ3JTz(h$?aB{+ny7aI_@RFj9|nJj{@%nE zgWrFE#0T>q@UxX~F!-I|OF2Iaod3#~8~kSQ`K&k1`LBGQ!LJ2h^Dp9iS0n%R_a?>| z{0iqkx5rlSvz71uBr!hooj?C1J_P=5<(mwCCioWV|G{rpzS`g?g3sXiXFC7&_a+Jr zKIJpXhZ^PweuDg0KHcDVg3o`S_zv)QE8q9uM7^8A*K+%+1HWDQHiO^#j`VMh+@F_$ zKSY0TVwJ(K17E}Wkn8+czQo{HgU{gl9lizmuYAzpcV^4}eGBXD0>54P!Qn)`Yf~?k z{-5hN4E_-Py@@RbzvHcon9t|_qze3O}K6A4CURVytrxpBc<-0#lj8CXf>Nm$DJ_P=5<(p#o`oIAF zkAXYfL)!ly$NS&E>Hk0Wzo*2#|9&Oz{a5$@-r<1D`d5y;|1P8gqu+loCfl1f?F&Su zymzO(|6W0ll6(K%GlPpc_#5Aq^)D`l)<2h1SnE=bgf;HRVoeY$P)U-#@ILx0|NWQr zyZ7JeQPZo$_1}}?^dA(X->v_==&%1w6!F>A?xV$LaX(NvRmA_ZUc?_mkCGB!@gEWY z_rpc}zbM0b{pSXe+Yjr|kXY}E73ihJ^zI*u62FWif%Tth(cpu$mDeN)&$@U6QgZ?|9pKB(W#gB@QME`S6|1Ri9b@#(M^heMyR-jn)?~T^a!GQj$ zpQnFvoc=URf2XhiNYOu=A|I{)JhHvQQ=$KM(SI>lPEz^@MgPOlf4J0f%2L#L2CPGu ziT;Dd3UpA%>fO&xMw5RT2Lt*~`#k-5arzI8(eHoX=>nMmN&C;15PZ-V8-n-A_NIMT zLh#;g5`vHEQBomT_@RX0^y8!nbZ{}${!!^qz#3O0Ay_X~AcsQ`=7ysoxSr#I^{-Q- zLy(aFC&cOhQjC7r{-5{jKPciqqJK8J{{Kz3S6Cq8|5+#EKVi?3s{ao}{C|!Y@lT4t zl%=Tgc36il74g3lD-foMfp5L@y-K0z)Afd zAtCtez1a2tPssMBogyJP^dMRPKafVNq(ZRp-x7j{Zk0%OQOQ*QhrA{${?EaB{uQw{ zixo)a5QMqmXb7(7c%c3ZqC=2S|HsAYPl?m7`(I!5^?z%W{6AUrzxUJspZULA^xuUP z(ELZGYyMvso&Pm7xAnr@YJB}14Cp^)RQ;3U^nWo%zsvtEe*R~P_zLQIqw{|O*`sBi`*Pohb|H82(bbK^kU-O&#gwqFXKoc|4)t< zZ{`27ar(zv`k(RjPk{b+~ zaWSMHHQo;E&}&8i@5Bmp(TlZrKQ|d)KL-Q)r+l9N@5JdJ6QjRylly&xAG}(j{ogkw z1dm5zQ{XYOy=fr*~FRYDNrVrcwBrC$eY+%*z{#bO2W zIRs&DI2wZMIUZ>LCq;)Kq5sQ`(|@zaPBhzyD;4{%dIPjn;o9+1|7~=wBuJf5hW+Qu^N${TD!gfeiC0OHkt{ z!Wy?&^iL8ikRkfH;rRMF7|=g?RQ=zM)BnFX{cij_{J--x{|^)W$M1~Qe+=2)v=g9z zrRYC}9wn#0U-W+n{lo82F_izP@&CXYca`YhEmokG);8&PW25zRFrYtgRQ)+|`uE4_ zclm$)i+=qdD*FFMEibzM-zM9ec0BaoB>FvWoJrOHF42F)RLTEVY2ztNP~#878h54W zUn^E%h}NdPFt-}N{y7-Xf5NExC&uajG)}+1|G(nv&k+3&(%=)V|30$4X~#kTjiUci z9-orZ{}0iB0rXeNFqg6fHGUbaaX%FO^Ti5Oihgc2zJ3k{^dBFi-`x+mieTP!q~HG= zE9)bF_t!^we>@anxq+c0Xn!+}JKp+0#9#k+f69N(@6*heIQ}f+d%2^k4`l0l`xt}I z1>gS<3R)}pk>9_j?3c2m${zz>_Gd%jM}Gg>;CuVT|ITUTPcitB-@i8aHt_O$yP3{^ zU2iWm_&V^l^z%C20C!CFfePi*4Za+F>J;KTz>oa?HD!Ce-l^alvx%<*Kl1z620tGB z5U;0|fgkz(YlENlH`MP$DnE@U*5tpg&zBhd)^~-^;rl1U+!56Wnw1Y4{5r=|R(W0E zM}GgBvO8YyYVfju7Y0A_`_~4)7(9RP-KzpW^842YKMTBk->1O&uj~2c20saW=U9%9 z^I!QqgAagj-{Dbpf*V_vXe!laEzVP79^I_+5WRKGWy!y)y74zkhA;Tfo&s|)YWe1pN2Cp41VPIuMK`G_!jPOtH6)^{{ z*YnE_e(z3+XFm-uUYhe?`87Cc6W3X1741VPIuMK`R%Fp5a$#nkv zzkhA;i@~?Z`G-p6zw+q@KNox|xAzY4&C2(^lc;wJ_|9>}*MW~H-)8XR!B_HmgEH{h zpXl$u8~onCNPJrOd{?gXU-=S)?*=dX(Zh?7|H=mqzSZ%)RDKuui1LGPC+b}RzKHWD z3_kl){rz`?pASBV^Ro(kh4KvszvyYvTgu~0f%9Maa)VDn`EtH1&H1l#Gh4S5hNsP}L@Ri3<`62Ml$~PJOQt<8EUloIoC|_;x zbHSIMN_?jC|9|@X?*^apyy(s0{(Rsv`PH~8|+;(vyme{=pTUt;i!P<}ptA7Qux`LBG?;0wXm^7~E~ z_=xg@Zzbx@1mD8>5C)%pz=iw(Z&u*^SH9ff z*MqNRy=l&WDb#P^mX|HnB0#~A!#@SP_U-wM7$`R+Fp<1=@a=|U(4+`)A|1e=YOHW?_LR>&wC79iu_kT-QahEuay2D ze6#X>J&AfZ{u=dr68TdHKB9b^!LM;V{rHtv20nYN^M94WF9qMu{b8>2U-=S)pASA` z2l2xTk^jmE4Spv07Cslz1wNwu;EqJSlfZY?_GfWPtp80_|@Qtc)rmJzC!u# zHxlEs$d%9SJp{g4`6h#(3BHHhdolQk^3?`E(fPyuXQuN%RrBBAQ^4o&_&zWn`LBGs z!S8xh;wkS79pIal?|VH_?^f`&{JvHPKB9b^!LJ9O{}%aE20r^sn*RpB#`(kL=Q{tD zFERMJ$cIXP9~`~}`LBG?;PbvD=iiFBziM^;r}Bf_6ZKAjKaFow`C*iweW2#Q!Kb+R z@cLU7_zLA441V{oB>pXQV#F(O{wrT@@H@aa^7};^_=xg(2EP$}rObaWM*gR1{u_Kf z_;G322do5A#dX!(w`CJD+qI{dd*MlE=gZMJ= z*#~L<8~jr6HN0t)>-<-~#NbOD&-pW4hWuAPXz-K3m-2b?F7OfM2VYIpJ05%nzpsVC zXMaWW-{AMJlXwoX|5e~Cly5NjU5@AV$pYuU^5q7<1AHmZSJRyT%I6vUR`9$(?e$)S z{10gU8~m6~@xSuhal;6nj?;-Hb$~PJOQt(AQKPd(uQNG&X=Y#L( z_LAxR|ElJ{!OsNWBmMt8Z!q}z&VN3?UEuszzTDuag74w}D$V(?e4fEi z1YgN~?_A`6y5_&Zr+{yNll*A~U!i>W%Zc&X{jk(mEzc)I;G30iGWZ?f+vWT}_=xh= z2EQ5n5Vyxn=l>y^{|3L#mCxS?9GHXrS3cd~>s|TM|ATKF zo59aS`IS6>Ci{7 zey}T1@9t*whuq(W!Do-t{5SX=;QL=7z6yMW@(l*R8GH-RHwv8p%9k7bI`A31exBz1 zS3b|+>%o`ue4uwW@_)SMzrn8nFTbzQ3cf=5?iUl|v*;;_&ycMDfNxg5$>1lUe7WyX z3_hZKwZV@E-^2Bl>HN>o{5SahO{lLNiqAj^@?ZIMgWmi--S^or|eW>QY!PkMW;r=Jr`LBG5!Iy(?d7b#-3y}ZH2MvBI_#R$= z>jEE9ey}r9?*#Duyq_2bpM99-zrlB5{i>Anp$dG3@(l*R?IEeJ3|aqi{wrT@@aw@> zc9PyS=fCoK244?8pWh#Q&qw}eYW^GiV(>$U6WUkssg%#Z-|dCL zXCJQlZ}4lt%YJbc_zLA43_chB4Do(Vf%9Maa)TcOUVdLE&H1lg`atiw z$o~nN{|3Jqe9>1q|G`%%-~DV{eEc67etW2t>*(YEEj_?HaZu{(e*LTa@K>(B>VGf! zFtnZg$#wm|lGX9$Q+?Gxfd1h%u3y)GW@-K#{5J57(*K`>{8v8R;MarC=kdA&e6#X> zTjKPRKWo9a%lj|*i1KX)zZ(1y$G;4G_O~?u4So^$BKiKc^I!QAgP-dB`76igd&qy~ zg9bkyd@aYP3w%WR!DkZn?p-VKFXj1s7<~2-n*Rnri21YJ2d@HOp?rhEuS5C$+iI-!KXNXc)TtKA5p&A;CJ0G@h{^1&vgE0YyKPjR`5Bp{&P0+U-@){U+c=}{niff z&C2&Zm8f?G_!c_e>eYddDBouA`!RpZm-#>V>?1Y*4Sp`x4|86m^3&Y-rF@CO@4rvt zlfRYt;j@tc$_EX8C-{C|f9L`qQGRf9qTa2J=k>QR`0S%J{|$Z}_|Cr&Uj@EG`38eu z4Zeu$tHAlMe7V8T2cN_9!!+l=@_7bd0Dg$~UwVs>{}VO;4Su}ypYypDe1-DePbS7^ z@4e`sdA%zHzFGMugWm~0pU1mm@Db&!4SomaGd)iepXvP1(fl{~H7LK6-^T}LBL9_7 zH~6LCQ)T}be6#X>e@fIl3%u;V*MW~H-)8VZ$3IK{l!4Fww&uUV?+v5B<@r^v^I!QA zgYN?0&+p^IXCnWV4;uVh@I7=x$?F0iQGW1`iF%iUFXHbZgu!PYt@&^8v%t&yV-@%c z$WLBx={*DapR4(A@aw?m^ZQOK z_zLB_I}+ow0=#@bCj`D(`6h#(3%>M^?(y21CZk$5(8d^*54E8n*Fo58OEKg9E;GVs~QYyKPj zQt*|W&$-TjBXUk0?L*`$WAHod3K&9|oU&g66-$ z@Bg{Pv*iimtH4(%-(c`N!58uUg#zcl^5q7<5&RI>SDN!*`8KUBLDL= z{|!FnN3!ye!RPl{!B;5X{X}AXb}bXWl*iu?_-5ss41O#4##Ac57<@$eYJ*<~en|Ge zod1(G{|$b%T<Jh)w;B9I@U`qu z8TjlIHUAAh1-$HE=Q{tDFERLCH4^_EK7T%ZD)L|XpurELKauYpb%Bp4KiHP2cMZy~ z<@ySP&pt`>-{6;mujKYs1-?T027{jkzK7?}1F&i{PPe}i9pm-IiSPZB>+fc#fJ-QdTde{1A;c7ShIzVGowy)#jM>L%jrz(3&3}U*{u#!19$#{u|H_vbeCT@gSNy&_d zly5NjDd1bUz6zZG%9k7bc<`nCKAz_M zS3b|+_uh%|h~JlcPe%S1X#N{~+C9SeJWhNo_zLB_*C)oO3FY_j`+f*~v+_*_zXE*5 z?}#r3A5p&A;8%lB?Iu3c`Tt$be}i8PzLw_?1Nq2*< zg8p_R@pa%M%C{MO3d*nH`-WxUvrpChH~3xk68{{YFXcM_l`k>)t>A0zZ&stYLzh8&I zH!I&{@GHQVa{o{aKB9cJ!OsO>%lmzq&i`qe{{}w=d=9UN51fenS3cd~)4^AAJUhTQ zE8o|es5cPRAJ&17DBouAn{Su;%6OT|F9V-FUGv}I!{AG~Kgo6eD_>&pYp<64>E!*X z;mOE<<%0%ai1LT{dxl-$Bgzjxny7aI_)6X{4uj7=UGv}I_unRZ+j%}y1-?T027})T zUiJ$Lod3#~8~jG_L)@RFIscWMCm{coPdE7W z;2VEU<#&K@R=%$#QExr?+Bb-=10PYo&EQk6lKgDv`*CI9v(M1{H~3vwqCe#MK(6y& z`4WTQ3ci%rdxwul{wp6e_;uj>cM#tNKBD~KIzz83e;x5*@Y!c-{u_Kc+Di?eSE&MD zp?rhEPeu8iyxv~m{8zr*;3t63|1a@r&VS|e41WI)C7u~F|2Yo%KU4GH;CF)0;rF{% z@D<8;Kav=q&8~dDj~@cxtbCKfuLa*D^MCLW<*N;Tg)5)eb26R(MVkKxKOa2Se!! z^WWgZj(?Q+D)1G`HyC_@YcJfN6gdBtFE{v^D8HZQw`tCQZzKPePdE4#j+g!)e6#X>YZLV@0zbt2xpm+p%C{N(_#dEs@qR}c z`0VpF{|$aV;@`>rVXpIE`4WTQcA1pl&+A3QImmzIg9g7IynIi-3w%WR!TS^S)`M@C z@1KLuzCiQe;1`2$-IdStfdc2h^5q7<6nsCgN2NLcmCrNy zy*Enzmh$ z_g?1-@E+mo6~A7?XA2)iO+pFg8690Db!UC6&m_2 zAbg(U%QU=0_?jBH0`F%l=zb{A>6m z;g?YSG@K{#ulP6(A0zzHgW$IaU!nNAvQWKW-p~Fy+5p}oe7)k=YxsS_Z{+r0_=H8vgr7GKc-mrD}IuOe@pna{QQ??zv7cM{3_u$ zu0;N|-6Z}esrc9MbA_Kt8S2%k^mrDEYL6u(Bp_qXh+1@9KVUh&g3 zyu;#o{l~IDPsP86Z;x#I1d;bCa7U3%tU-xjR-ZIIb_c!ne zU$6M}8h(oKgI`4cnBN;{ff`l@LOcQJd^sb<}MQditnl6zmfHp zrl-JH316@HMqjAjZol`7f8i7EQ1P$f8w;4Pq4ugk_&mjz1@rcgSU)|Md!-Mn@ch)* zZ^-jg>RUI!2OXz+rxA66fpQhp8629g!@ZBu?^Huz7 z_!Yu8QG3|XN#bAeaTSB*YGb1KbYEwb;9QV!q+Q) zy@vm$kn`_M{ooUhR+dx6xGMtSc(5BD*iQmhVZ!*KkJ0gQ+)N3Q2$&ed`%VjV&N+kzedCN z7k=$>@NVJj6+cbG&z1NewG(`^)qdWq;$OpO2%k&$pHx}xr{d!@e6K0&{~Geo7MH}2 z;_FI7^)_4n+y}lu@~>C?dJW$o{9y8Die>+OD*iS6Yxl4{`P7~yi9LCW&(`qI2|ttC zljgI;e#Q6H@ZY?}^Zl8$zFj4Jz2X}ehwAM#Q~Xl_zFhc(sVe?8{Esr8tfBU^K=?ex zmudJfgwLnzJ1Lg^il3z6cM0D_^()4*U-8Kr{yE_*$^W%ZiT`OT{xy85@H44BTqk^< z;;TzS{d1>f&l2#(!dEDMjfT$`n#j;=VlQjGn!moS|e2itk;*&M}TX#wS@*w!yGbH|t zRQzlBRg(W&FZgxB=PAB=L8yOLSUl-17QRC9YczbR@Rd}5-NM%^ewv0a5}w<)ZkGKs zRs3uCJB81u=NB4cB>oj2r{Qxfd)@=TMfeKE*Ub;rn<0E}4|tF8^@?Aw;fD#IOYQl1 z;S*-5_}B3Lg&$P{KFP9Q@!1-_yYNS;yqcpW{uSR-!|%(Nc%b=3mGJe7Z=4sZ_fwgV z45s-)x$p_IRs3uCeZqI9`dc7;p5n_i{4U`u$)72f{feKY;a?Jd6s_mPSoSMES;Mcg zcxr!Y+e`cxtN7ROKH=Bi4}P8Sd5W)|8|t4T;d7q_Uo3ou;@4>SiNf>!hi>8P6+cbG z=U6`u#lMF4y}~=m^nL(*jMe@tK3l`Dm;5W&g0HpOPsR7t@KbiO z{VT~o>#X)u@r@6J>U9gBzYTo3L*i$Sihm8?UHF-_{!k!%p5n_i{GGS6J-Nl;Q-rTj z{3H#(Z3puksXdPozFzUk8h(Yv)A+5no!CED#lME1B7A2a{|ld|`0D#Z{gWkpC9N+N z3tyr5H5xui_@mE*cMD&y_-Pvc$L*}QH&P{xy7m8UN?c0^blR@vrze4eu0w z<454P2w$Q2y5dm1U);y`R8oKE5x!pW>oxp}Nz4!C@sIEc^Huz7c%S6odkgYUvg}uU zwuUbdek0ANn%lD83dQ%-@EO84(RjN`_;P`pQrfhS)u;vB>c)b$iGsQv6_*}q7| zzlPr>{3x=&AwuF`@o^gdIpNn*`>;j$3dPsW4Atus{wU2yJi^y2e!YgDBK%CcUt+xQ z2_-82HGG!vJf2Uo>{ooYhEEngiq^xMTh5|g$SM@yQ^UszUrGM2624yXjYXk)zqv)~ z`)=^%!Y3?N@vq?z2_Hr4)dj-mDZWg@za@PByWmqS`xQS)!>b zU$6LS8vc;954|4&-_5driHd&>|C;c*bU#ePkE}OO@o^fyO!!gj!EX`1Lh*GoLiJ9u z`03z1!q+Q)y@t;azLM6L#tWaYRK>rB?lNQPJyh>L;a5^TmkXb;OvS&3f6n6R{|N%M;o%YMaA z((n_l{ONv%7|VXeCu{i2gde;beC_uV{~i_p8a__=wKN}DCw!jbtEYwf=e6PV3*^qq z72u17uTcD&Aby;&dt_q#Pc1DihS%}mmy05dK|2l4$V4OGb)Vz>B|*P$I{-goiwk%= z2hpX$%)~zCN6$t?EH`{(6Y;yQ&J0?xdGg7#aOAiDknM%$$|>|iw$8~g)%tv`=jIQ_H_68({yXLH1854YEH??C*FJH7I2Nx&HPanhE~Tet0K6+?oH#{a^a^dew&7O z4B#udxeLG-2;Un28a`S0l~kN5!dIyLCu#T?;YX4EF~Zj?K3T&zUeE10uNT#x3W|RX zpY=Pof9*ZUf1U8H@qcfqe|lQ{Lh!}Hx5mGQ|K<|TpRY%|g|AojWtxVs7GBnWEc+i+ z?Z1Y9PI$iF*YGXt%~O1whM#NML-U0#!dEE14wWSM_i!f)zn13v9^va1zh1)+6Fzr7 z`0>Igcvbta;kyYxll+-v*{}F)4Ih`y$FAH%srM;8QI76+cPCH;Vmh?*JcT*{}Fy4PRyHT?fAQD~bOVD*iS68sRt6 z`s6y{^AulwXQ+RQh3EaCiiNLG{2C3PEqoKr$KAr$D}I`WPZD14f3xggsp4P5w-G*{ z?%!_skHo*?<1~D7Z;pqR)ShnUrZyFDe7e3($ z75^H3yzm=oK9ywIulQ^YpDg@Zinr!3CH@uPQ^UsyKZ@4dtAwvteBx9o!e05%^e;RsmJaBmx3tyr5H5&el!8~8?eJk>J3tzAJ zX&Syv@*hS0MK{a-r&RoF_yXbAt^wb0OyXbhaT-45LWzIsf42xHuX%;dcqYlG>jn%YMaYYxosCIsYiCkIny<_*Z;S4L`-= z$v;)X*DJp9wotw4!t;2zT=;}%RQzlBDUCed8@vkn7YLuH_%aP|Y zF|xkhc`Eqke@Xl+zNd!&^a9q)`wdnJU$6MaiJ^L56MhNxU**CltXA=_;eEpA(t1vT z@Og?a)9`l+zmdjQDVF_;pQPc_g^%L#k7d8&lQn#I;d@j2P*(E8h+t&z8|2H{NHS~pA{

xd7t5NoFe}TjXCZCYt!aY;jt5V+jW9fp^KdAPHQ6k)?KoP~bexkr zl(P9`8?x~^Ivqioc^oy8+Vm->4sgoZ49A&6Z^pO0nTdumXs_7?;$`)=w!*KhXi+Cb z|C2%b@6+k;YwP!j{+s7UwDs4Iv{|>B_1|=D57v)E;pxAT^^a(5%ldC({iRoMrZtlK z*JYeKz$s?|>%YlgKRKgh=eQka?V8i+ei_96(*G>$zxdHB z$nZ0Pgr`4O^q*k;dyzBB|Fz3maiydtU&^VioO0Hp;+sRq`|BrXi2l{5)4wuE{}i46 zBwPPd)?bfxO#k>ljI>$z2Z{f$*zjXG6rTPZ81HjL?nos!zDU_1{w3nqN@~+b9RI61 z<#e-tsx@}}lQTsBv!~O)B1r!|0s7N7M{<~V`fxBcSkwgEw1i#IV{D)c&O_Qfyoz10 z^grx^J~$MX3tDbq7aVw>UC?j?yWs3kSoCL-dbO5QpK{8%5q+1LLKR23pd%fFPx55&5GfB9d6v|0Czl>e73J{5<;65m$D|4qdI@T`>o z$1Jx=Qky>H)Co>GlSuqfsx?Y{7xILZ|0;j+y7up}ApO4&&~N_~U37OEFmU-VW*0ny z_RZe~UTOjlKP}~doL%r_xJ_V7HthE~(j=Sll#S1k_bpfY8zgn9q_Q~WT#2!lnL-su zxu7HYL(2ade;0(5|D!?r3xf2wgGh9NuMDx{zl8O_jjq^V{~Jh~ho2Jt$5{U!911H0 zTE?*c<^SRM_fR%I$Jr9`C6aozhC^U3r<_r&f2_ZLa)#)C`WN+=1?j&lK))6LiFW)i zV)4Uq9nfF=m2_ROu3X~(-z!+uzhm)H zlA7F)QxTkUjwkU$smZX*pFAPu|D?ZoUHLy8r2kHx{+_n}`K-VG=|KI5kv8jAvi@_g zV&jhCPV^50MM^12nQ|8*(1i{&|M7f&Tuif2E`*U(BiH zoN}hH{_FhplQTsB%G2q8C`kY9I{iIt{iyVq|D42qm;ROiKXe~v-Q%qP!7teG?{O$R z{i9*L&oSdTw|{R^HfaCe=N50Hq&6Mk)GM5FuEWBcIh1ORUH;?@(ZAw!`n^H=^K|+z zu=URo{g|f*=%;ym-D9HvbJ34O;pxAI^?%kR`Y9XeKPdVowdp<4&nag&)=#y@)=$n5 z{g0nc|ARsLC+YNexAi|D_5b!j{fCh@>mC*TpRxX9I24|KH|xLQ2iE^0Wdr@ytaz=Y zHtpxsYEC&lSU5I^QmwJ|lQTsBW2e*a3DSRCfd1D0Z-L$a-Onz#4wnl3n}E@D>F{tF zyP$mucLC#YC@dGWT+J>>t8Yt9KsU<9=eWKvSNd}#wX-*;oSbqtVeQ{cp^Bqi(2@MX zE~t6b-vuH4-?AY6w+88tL7Zd!cm8mD{8udcCkBSVXr#@<%US=@IyQV94uz+G6pZ&d z7IfhykZzO>#(xs@=Sb?+y&M8gPC4^gKUExCKRHA6m;Ivtr9t{{3D9r#|L5BAKU?B| zexP`n|2`t|e}u({KmQf+gU)C1YW^z`ujaq+O8mnL+`U(e3s>e)sx?Y{7xIL}|8jrv zy8eGjkp77Q`t7YrB4TgGxp@3Hi(POZmS+8%z`JRw_VB|}{{Lhb%*LVc%6}y6$M{dO zNug{o|M@pZ{2)nPDyjaQa*iSwq!@lK=t%yM@_)qN1tIZY8l-pFi(=JYp;gqu&H@=ud zsn#g*UC0v>{}1|$*Tw&WApJK6=uh9=9y-zg|Ccv_^3y?PJmP+}5$X55op|Hfa74ct7|9@PDJDnulk4kFO z4le&AGWZ!!;)ha`VV6I7Ldt)czj$5w&kNF@qthQ}>%UL*<2f$>_`iUj>#AGA`d=^P z!taYi;pra+<9&`1AFvybujIn-BoTj9Qk%Ameoi^7aO0ghlxmHwpPV83m!3}l+#vm9 zb^2p%{r9r|`Za;Ue;8@Au9WqEH-q&b!=do>4;B42tp7#I2J?Rjce9^`9$C6{$EBp8izU|F@f1 z;}5tahx8|Ls!3AqMgIv-IoILFQFAEO8oT_-8KS@Rbow6%(tmw`{?`6~y50ZZ!!B^$ z7U+UAkv0#PunU$>=MdF zilbc6k^I3fs9Egqf{^y_{viF?di_64we{c4`u~aG^Pm5IjI?=pk?5bs`b~<@u-1Qv zu>Q37+milu9OjM$DfB-|>hsR5e-)>kOK|VAnL-uE)=$n5{UyJszc@($m>~UD|MzAg zJpjc0-|t!f@16~80{bFu9$qN=53=Dya40UVV#G zUvkRXgnQTVyRrWI$r+-5(J$(s9i;!d0R2|~cV>clT%wc%WurUytXy{PkZ;&w16& z5&ipE|IIiQp8i3s|1;5lK4k;_Z?NLdlG?PHQ?ZeQ2#ARn{^L}{=KaKZX60v|3KFN{zY8={U{sgf1MTgmei(AoQmg^vm6h; znM0}8*yT^o5dCvbr+<2oez#7)!`6Sh#6O-3^)LUkkT&b?XZ=^)&Gr90912f=GV34l zZd>a7Ke=1xL_F$h2?^l-?0nQ-eDKGDI2W+OQSbJQajJ$CU6+1oHOz4 zrkO$&N4cOQ`GZ|hbHBd}LfZeSLHe%_(jO)I<6XA?Nv!|vMS&sk2GZu?*{pwQ6&t<> zhr-i;35@qSUg^bEz(d(!{YQenL{hK5${{e9Q_iD!_SQ_Hieu|1XNdmdU(|nJkp58t z`mO%2tsVcjvG{{{?vDOb_kZrE=kV%gN&Vl$;y=cru*A0&@gpRgXDA!ge~I{&lG^k) z7QdWR&haFEDAgJzz6*Im;(xZkcwPT@Z;<|s0R8s*|1-7=Zn{;y-$2?tJd<5; zVnat>zw)M}^@=t#~G{WE`2|2;waM+E4%;=g4qETGBH#EC3^c+lYYN*esu z6|(p<@@4!N?%=nrh##?w#dn}=e2yGx?xG~MJBGzaaLTz38y}cMsn#g*UC0v>|3&`d zb@6|9kpAHT`t9+5M4mnVpTI7-E;q3JMp2047;!bwKI2;PE{F7im;(sT*pc`d_ z@|TD|M^YoB*#%BcIXjaJQu_P3pdRx1tIbO`yl=40s5`-|Isf0n^}AwdS3tb z?-r!Zy6G(b!5wV%-PAdUGx=#N;%7+X-;euvN2m4N;`Nr)rk6Pt&nc$|8`qdasmZX* zpFAPuKf_(DEvR~z&tl`%SKZ^KT>NxAG@{CRz5Y{W-EVyu;$jpUoRs?{vlY z)bL-P!~Sf-9fW3;@Ea80*e6u)A>r9S<-(s-{5B20OZZ%h=K|pes{J|2H2iDA*Q^Ae zV%e|wNg95Y@Po-eF_!&`PuB20;X5w}UrTKX;$QJ?G<=cpyr0uL;RmYyIjS!T_0L4% zqo}?V3qM`)Ycza@@VsB6Tlfu%pQhn26TS%#m6+Wu`xT$A;kygZzhBYtip0O#pCeAg zJ1zSu|1H8#SA1RXP`#Zj9#5c{9^p4Ae!YhO@obK_mwn*J3x87a3pM-~!prmDmi=mf zj%*EoNO-P~&3~2nSA0(mzf1VR9RI>^P<&&rP`xi%JgzvH<-(s-{5B2$obZ)Y9}9#Z zsP^Y5)9|Z=UrY9+SoSM^l7{yQ-$d8lVl4X=pRD2M3LnMsPrWDNU-4};e38ZD3bVOR z_%j`00vYqv3Oe?@a!53%^0}(=_}r;Va3WZkGLuPuK9hgm0q$ zx8Ws;f3-hHoQ8J_&%d9uMfmB8ue&f*?>BKA&o$JZdxYPh`1Kn8Q{k6T|2tmzlZs!c z;dfd2Q~4%Y_N)ClvVWfE{qve%l=xSCPYwT)zT`xQS)!+$A!F4-Sr*{}Fy z4gZDkYssIrFG&0=zKw?8C;Uu`&vn8NRQq#OUl8h_w}d~+{kzrvD}IfJ&yo7Lk>bHE z`EOACG!36&)nD>wH_Lv-r)&7jES{dfZ+KqfU+vEkr{Q}EA4UGzBK&m4*L4ro+e!G9 z)E;_--=O&Q8r~uN63TzP@Fx|&P{aQy@iUX--?Crr&ylU+zZ8B6?T^yDR^ngrJvIEN z!q-swRtdjB@r~z)>fPs;f4T4{6~9fxza@Ncisu612de!!$~63I!mp+BO0n!${3H$k zobVTvfRC~4SA4RDx7tIF&)VlC{uSRw!!MNlYsmlWgdeE(=cqm})IU>%?@azL7Jj*K7D@X&>?_|M9|~RQy5>e@OVw)ZZmp_N)ClvNilR;d@hm z*ZfC`f5rFI@a4h}rg*CoeuLs0yM^j4vhwHgkMJiIzfHpz3!h8zQy~06wLeFhhA(}Y z#~b<7zNJ|9D}IuOzf<@c@=uIqzv7bvc%L%{`y(`*ZyoeH@-CzOF!nCg?}u?mZs2<0 zL;W@Dfx8>jdSKSoydJm+e)L}toJW4GzJ=EV@Bb^W2YPWRto6W?9kG~)=K+(hr0ap1 zl#S2fScNk7I7Uh8`KLIQ#wn+V_5L<@%=&+rC;FdZ#Z8iWzMNAhIOS|cV4D59 z`0FQU@Oo&~EvM5zHb{S8o&JB>`ZHMnqqq#`U;YmxZB|bZ{V%cpr|C*vIP1YD&u0Da zi~b3G!O!7%nic0t>iH)*HHK5p0@mNzUq3lR^iMpU{u_eyU#!!A)Yd;z^rKzyzZvLZ zYA331X8q?@@>R^IaVR|fajbvPi)|_5Cr~y%$8%p_K&f0w-FSjiV>sokMZ;?L>*TMW zoFV!roKFAsLHd()`oFOCk6`_0!}I?7&qCU)zKQiem?`%IP~n7C{;{I}FRcF)v|G?$ zbdnX~TZ>GXeQ>rZF>i*Os7fBDZt+N>VO`v1Ix!()3)=$n5{o_xk|GFUky>gnvU;bAjZC2kX<^KX3KAH+A ztnzolc%P#rz8SjiAyBee=nW> zI$Qr$tiLVBE&lp{qH$_8*8`n$lop7omiJ|wRXZ=tpYzn`P#cXg{YQ9v z|Hy?J{!Za5X*{1KyuE*9wuZm#DIPyZ(fU>M6Jo!b-}Th+-G%Q>lNRK3Ky*R z$8uQ@r15#V@Cj=EwN1l+A^Z|r-zX5?-aoQT!|xJ)6s<3%SoW*@Cu#WSgqQKZWxwK+ zHGHY?oyq=MYCC++1U3I^qv7uqel1+{_#`_=p_UBiF*B$pRo?`xp8!spCWe4K{gCp?c^w+LUM_&U_S zV7)I1UqkbKkMQ>Xk?S?QPxw(3&*O!+_m5nt;im{6MgB>$>{s){ooUhF>N8QC|P2-V*Vz_K$3%;pYm^>-p=1&r^JLOsIeE z6uvk4vsm~F#jnxuS;Ehx`r;P8Uh&g3e19u{jPT8Fmi>QJ`(J8!r|@fOy`_PAN5sG4 z<23v?E4jSb|67EwP<&l{ooUhTkPT$7k(wiT|~h{cSY-D&g~~ zeAfw|r}*lqQ2!JOzY-%*vsm~F#jnxuITnu@o9Pz5Uh&g3{AI%P{>0rZ`=3|wui-mc zJk3KJ9+CK0e4K{=W(CK86ve|9;VTqh=LpriPxvOv-y?jz;@4~VL&D#SI~L9H!Y90- z;$OqRCOlt{OS0@&e71&PAw0)(^TQJVitnl6rwBia%BxEFdc`-k3)Pz?JpVpbx$p_= zRQzlBUcy(B-U8wC6kn#{9l}418JwA7*{}FX8vcvNxxAK;{V|sPici+?`-Gp#?Y~dr z|IaG^HT+A$A0>O%37@C<>c~+4JSY7l?ayKs3tyr5H5z`(mu!CxwI@kd`>*(E8oogI zD5@{bR{QxE75^H3nDE>lR$1+*;^Q>@Tq_=^J=yY*#E;_Z+J@>~CHeF3n|Xw1 z;*&MJRew2tY9EyNe_6%9hEEcEj#50Y6FyJz)e)ioS@kIUpMT$@SojLXuhH;xh2Kc= z<`%wQ@zXT?c;N@rq`I4B|6f)7Yxv8AujKaM!+P@+AE)7+mi^rR3tyr5x|Z~i@qa@Z z>zzsVc!aN4{CW+)OZX+kj~71S6&3#){yE{JD4vrn`xT$9;lFvL)&I@QB>olOQ^R{K z`?-9r_EYhVKl$tRIaAi-`q3xWL9Zj>Ji30=VV3^-QR2|R^^?qV0@hFDe)6U7sr4gg ze_lMi^&c=6;7TGECbb z@5lO2qFwRV{~u~+%0`I($65dPI24}#X4XIGE!O`gW#e<~TF8nwN^0_aPQAh@XAiIwVy8K3jiZ)?Ys}Q2$}1&9dR5|1s8o42Qzge~R@-?qK~d zQZ~>pCB9ZtljpJi)tqvcqavHfzxUTq&Jg`0PNzR5NI$j?3Dv*X)_*bUpN@9WfBpPk zY8T7WMgQBp>h}N+g{S{p*8g=GyKyLGgZ;E>FQE7zEU7LvoEpF>XAJA7T4TpQIYaah zKb`&|LHeG{bKmjR5)SP|0dQyXginx1TJI8E-7*P z{X(k$bGZD+aLQSXj>tStwZ_&@&Jg|Sr_+CVkp8m*^xMx9z0zMjPjp5fcEMk#28O_2 zkTxH_ie2zQGG9X5j6-3$;IH4X3r;-3Ay7=&U_ZSNxX@=vs^dR6HHA~oqZmt=4ODTI z3wDw}*ab_{{9O>z{tXV&?+nmywSQH1`Cr816AA;%{{p1VvMX8q6=HQ?912VPhX1no z+qZG~AD_YEcS(sKmDJ?>x%`iC$~m6IAE#QQ#P23gNcmsoFJ9OFUlydlgHHb*TYqn< z|LA!F>OazE*)Z1s&Kp-!RegXur?BGxYu5j@PwGGSagI9=ad8ipRF{LC8o()M6$ZlQ zajG@8esYHBzw&hYFAdUZXZF`W4{5V(DC@sT^n1y;u=Jl4{SUGJ zOxEZ)^gb)5-+x0@*mQtXX`FJVuzspCwtjMk=pS}E{eyz^pP|!VY3om9{lhWt_t$?V z%>&9(S^vLZzmm$I_E!r}f1~L4vi=T~jn8qJ=#P@rx9_q32u?ZIVIpT9r&?p{CufNM zp{LV7Fi1bP4hb#)UAF!US^wFndH(JHSxB2@SFrvo#PIW|a)wp@Cs=>v+g$%Yna=um z&E^_UzjsUR|4dFD;FPl)>!(^{>nCT3{?yayPY%+LtwTcf@3i$Nu>Sh{0`(t8+AK>E z{SR`%9mApU^nbr|KeJfzT1ibV;?!zRIXzg2FppEMvGtQPME@11(?1|c zKei4D)xX2m-&6FX=k+gt8UGCt{T|UzopV^_{~y->M`{1n_)kh)jsFTozx4mjSV%ID zQ?0S}lQTqr%IWm~E=YfrPXBgWe?05I9-jBte=X8x+2x{t8SB593MVZ6U$Xx9cXIik z&t>e`B_-ZjQj=$}{#Z^q3s^tZ8e2a(L-Y?ho&HOL^keIg(DL7A>+iw(9}VjNALjml zu;^dP`kxNF|3A+9BX_a>36u@uUrL;QkB;j9bk;wHQ_fl}gqp{x*4X;V8KVF4)9LRY zq`#d`|5jW71+0Jjwg!A!Ylt{tp779|A#0W=$8^-BB{yKSpNb} zIo+(EYK^U*oFV!LpH6?jApMa#{cqd)yNmvNg7hP8mR&0POGQ5pg{S}DtpBk}F8_xp z8|ar3Um~f=Q$;_goLjJvZyu*wW9uhph<@xWV_yr_&j0%c>Bqhqq4EEBTmSj2|Lpw0 z{{Jkb&9XtP|Ng&m|9>71g{QxP^?zN$Zv5m<)_>?7?(u6RwP`n}4sgnu#QLe$*!syC zqW{v<>AyHgKlaTC)&G{Q|2)=Tad%+({{d;UY#{5uLJa>44uz-RWc@Rw{@+8{p!}u8 z^CdO;UM~OJIOQzIg(&kl)f!trIYaah3e``~gTM9ZjmXy7MB|q64&1d|P$>Xqtxq;-TA#?@jqP(`?1(9Ip6u4IeXy*8|y}D&ZF? zK2F2?B>%OPf4T766<>!66l{O(KRExh$o>N1+p6nF>jQY7b38t1c*Z*Db<{`E`r#aW zQ}=s}pI;OhKOM03NJ#u#{f3I4eO)aWV?;-6;%6x}K^#Bs>Ai2nJkKa({&c2%DtfFdj;vo)+3?izs1(yne`u>7N~ze(q{H0tp7pL|1l1Qr~h-& zKacf4L)rKoy+r>?Nqw-L^)Kg?a|^W}FaFD4KRHA6|L%196NB{spwqwE*566mPmJ9B z$B%zN+RX0H`p*^pf1$x$Smpnj=%35_@8L0`qx5cWG4myLQGv9doN^|yeyTNg`I9q5 z|0So>e_@dR?{)e&+4?(5{l7P`{4YV;%gJU~u5Hd?NH^Ri?|t-sg1o;M>yr(MUGN>=hs8M&Y4e9j&f__i#{gpSdHR+% za0+_oO`v$?(K(FxWf!%fb1qbTgvB#%{xoYiEI$BX0l{55bLOuq_;iXKwV}W|VA|%w4e4@a{oQeHw1V zIn4Qznc;0?wA>b}%-<{N_@H#x)^y47A%=Hk;%%AUIKwkCF+RQJY}dxE$ae_4LFsSf z_I{Y@8<{wuWy}Ejy!7M3_O6YYi32=miW)0N*dLtV^?m#@#A)0udC~so?*kh%O1GxF zR%~qF6pOL!9aE*G$Y@iAOSCnooOoV?fGD?md zF+Ak5oqcxD(HQp9cEae8IX0=)?}jHcG5Utw8`H<8=cMPR--z?28M|?N`A;}QmiLI^ z{mAe(8s4}}@7I}qPa59zXru3TW7{c*dovk<|Ju7#x4IS=A|5h*vk^b;SflSd#Som2yVd zAB%03ZXNVpbCHqy4y5lf|8oSIN^$lRs9A<@Hnjf>+OIw}sOnfpqqM59gZVBYUOEtI zc$*E+n~C_z8`kp2)xTojKy2}0Po!J z3I}n1x~D^8rsu`PCy`O6cT}|DjdG`cSTvgbaD=P)ja^+m7T_J4;cHGAo-RbJ#++r$d~3ce}HxWytq*IEPL2 zwL6DQeAn<^KouZ6(>pWToqD*iqv3tmJor5dtYim794`8b2yZR|;eDf|{zz+0MiXIp zN1rnK)*8MMQj<|#YU%q=eT;(gT>J4Q*B%Se59Ru98_$nfq!)N;t0v(7@aUQ7m3T^s%(jBaCi=HOS&hjDeh z#PAux)$yjoR!pv-lla9XMda2(C*s{4OpN!`v9^Oy$0{>DGokMT!*dI4dCzRd>fZ3m zc9)~J{un#Gzu|=uIc;no>YCdA)YOjuh#hEnD-AE1=w*Eq634)C@#MH$c9?Tfo_oz3 zdf5#C`zz;0uK4lB+f?hxT^X)T&4%~ito#Gl(l^;(g^6jI9<(u;-f5Q8+8e3wQ9EB_ zcz27_GE+~?I_nx=yMa{M*lDK_#%LAZHPca0hUe~B!+XN;JkZrB{j#tFS_H%Uli}T$ z|Mg!6ZO!+zyVqUv6ZbJ^UgPUn6wt>Q-eRj8c+c)*`jNwKt4&8egke;4oe>cPx!$1|4ka#LpXeBGK7Pa-}pOzcYiO+3Eh{m#JfgY5OBcQs1x?~2O*``GDdvadib zh@Rne#kT)DwMDMDHpebEHn$ehH%7^Rc>RRoy849S%WY$R1YXV6R;Xk*!b3y__gG%) zrl?+hh|Udfzwa^YLc{wZHE8BPcx>xwj}ZrA`fB7b0RhFaWPT;P*eJaiJ8$b_zWiSr z)ZBp1{yT2jM@OGdc>*b)j}wt%OL;si9}%sjFP2lWf2}CZclB6IbOge6_=2HrBZ`_D zlBo^k`e*qE0fCO~ox()3GwebQ8?@CG7wL+<4kLiksGktD`)X^9(w+jHD~(-M_Fb{R#@D#u( zYr+y#eM#B?|EA$nqvTywkq^-{py$4!jrlf4iLFgTl+`qNu>NRx?uB6Le}AT3U@`dP zPCZcAx7CSmR680WziYmKQbp81DWWKwKu<{yJf8PCd)+@a!o2I7t5mb9vR8A_{`9%= z^PhiHjL$QF?sIG6G{B&tvNdY9M$B(gC6dWPl4i1Su&@IUhcK&p6eQX~o-riYTlTR1 z-tEQ~87Q>0H?|#dSV3o`R?`@N>#=BSc$CD$qtrca8mkX)Ju`;snrRBoEc3apMDlt6 z?7tNb`-so4PCg&ucJ{A2`7WwKBKtHaf0{@>d4D=Nw&U3rcqGo*MLHoCnhc(~x* zg#kjQw;q)#Gj;2%e%JYiBC?t@J;kxqbx{bXWJPYh#@At%c>xw4(T@-Jw42{>0=3hx zRrl_uaYkyTYtgs(AQNXCbDghWl-s*ch7}lR@!-@NXBnyX;52xgRg2EipkW1uS{P?t z=W91OlfraQmhVzXgGo0S-c%Y6Jc4z=OmC&z`wzEwzqt@86u25+jPSI(&u)|r?{!u) zi2mhjyv6)JlbTlyW9r_+@S-~nQ?3fgFPZbpr+hL|RmWs{aMF7cZ?jsGaa2EeJde@* z4)bl=703Mahn5z*F3=nDe?0m?%)N5B1i03Am(_29yL{fZ*XDvAcfmmx)gabg1o(Pr*`RTQt%5?`=j%Eu~-K{Q|< zXBEX=R#BiJFjl^-8x5mXqSTj8t^aJs>no>_9bJ%-mbGwd_6O;{szp&<#Jzv%{c zJaJw9E(*`{JL)vyLd-?(p{ZP9>%b z-IKV$Sa=*i0fv#&$i%5MVKBUoP92IOj6pjMPsUW&M)cc_gP>{dGGlkfavD^nEt``# z+wH})Jv$MF+p@eXeV^hg3Kh{RI~h_%U`WNwvYCmq%^EaYM#`vDrFKTLhS$oVY z{!Pkrw(^)WnZ}#mtQTnY)EXspjYS!IdDXSF2r|s}?@+i8k&zjv@cJ)SH|Mn<=@}KD?mgwr z`5`i=U1Ux~>Id^2p4@ovcix=n$eh^7oDP0RI!5N4ADPqD??`-PPM^q}M86~bB6BW{ z%o*T!WJqLAT4c^pzat|fb21}y48J2|B6G$?=8W|_G9fbOj>w$ba3m7;WTDZ#kY){7 zz(PSmP#grIzO-~Qm){U^to`m$@iY;IOP8}tFJYG=3jBQ9N#oO5JWMAFE`s=TV>bhO6QQe$b2q62IhRE1x_ zS@6~=9E>Q8$teBYwYWRhp75niTrU_vfBMiLZkfHi(rJ{9(?-LN#amsa|H1kU*bMuV z*pgFiU8N3uOj%$rpV_USjfv-8=yh7tDM6h^NAohh2Q>yhSiluGE8cXXSD{WO&9xED z^d58ALl;C~p$=BuM&00D(kS3dR$sPUma{sf*`3)Kvls=koYvk^_HA0mjG@I2PQLl#xVDN#&t8zzq9G%*D&fkn}cVfZa%dmJ>sP6 z)^A;Xerh;~m8X(ZZCs^Qcw>3P@bkt1oNv&<^vwsL2j`t?9>OI+xx8Cio?5$9x=2(?^97tsf7;$CQnldSk_~WN12#7fMcb za4n%x5rPMk8s9R6PQzVv9-m`6ENPgAVT#IhO+cofU4ro3vpF{>C+FJ+@AhqGkH`b1 z2VDu38M zoW^JT7vQ5dX#KyANdZ7@Zm9Z zx@xauq;v$9I zJf#bewQG~(Z%E{OO39*QR{(q7#$K|qV?EK}Ii5rMB(7c}hYI>AV>Z724Bq8?GUo7- zea6(*DG1_)>%VmVS(qr@iYeuCjE)y%da_odIevi~jFFzK<(LgkMPV;DZ~EG59xz64 zZ61&aZXR-$Q|pk5RZCRs-L5{TaQ^g`o!o%_i7Kvl;cMf4I{&ycuuB@UQW% zVK}M;fMa-1u7REtcnf!sa~k@{r(al~A}ePD-opnz{yds06u$n693;oo;w|!T_!4sh zd~(qGDl+~6Z&k+c$)|hOr?Jjze#_Z{eP7t+WW*oAst7+;;~(Mu@jPj3t(9ntlnB2U zU!rKsy8|cvE%oU#vdn6-5LZ{=`>k!yn|OdTB)+XP{(vB(GoHBpH^uiZd`+oy2B^CZ zCks{=BkGo0=UU9?O8YJKDTnGptG=6%L#w_|k~I3PbDnRVGxoRX`vQ|U#K9TxBLx_R z&{=q|LdffgM#@vlZS@vmf1)#hZCDqSE~km0_dMx}sCvZW3XC^vS<7Q|IbQYBlOGK1 zrJq=gUixDUT3V}|XX5hK=_W2Xov(Um)W8qFq6P)^)R%+KalbjcJ8rr{-89T=KMAM% z9p4V!?|E<1(0JkyRQfcT>-9l;0>%wA0X4jHV+|jMVkL8NY0fo*-nB%}IL8$m<%%1L zF^C#m9Lq4g|KxS|)@yXFEATvCF^ABM6l1tCnZ9^-$9NLynRp`o4Qi7zJrhsmdnO+7e((J{V<2YYIT)p6ZH0XYB3w(ZK&~0SyT8ka zTQYF)JFjcfYdw_w>yW9bw#l5QTfh zY?O&S>uhMJF{D?~h3T6ygn=oY=1juKm%f$Sz#$>u3bxa=spB}NI`zW0EFU(IeXz51 zHU3oFf`&e~Ti0vs#Rn9Y*TJ1Fl8qpj8}+m7}Q!79Nb2J(=FDBbnZbr;K4o;gVUu zLxnlwF8Mw>3xSY{zAUTn0UF3);W&bpsAIEyX>IdMw-){9SUdVEq0@(91$H6@s5@x6 zBn!(WZvW+y^HCgbZ5yMrfz;W=3ph`WLsK7K90Z3&7=JH2><q^*6i!{G=KKuB$g|Yw{ z)_iu?xn?l@Z%qAd z^Vy2=7`*$>XRF`!&-5H*+B$X&p3i3C%VExEFUD6}ZGRCDboz~lThAl&*)PV?dBUI1 z{`ii+rmJwWR!sqOOEsS@v`+XN=9fY9*=vwPtG>N>VAD@uz&X`?HiFM7{WF*2FVCN? z`RvIXQGRMZ`xcyvxkeKmv*xqk(R*t?`%_h+J)ixK-dpq8qhMq{dmQiV`Rr#%_|IoQ zu(3~VOy;wPkhbQt2k9f8&+f&$|GoL_gP;GV`Rp6cUp1fY*J^l@ZTN+Fr{=Tg;k`AV zjmKLx?X>2zovcr3GSUt2)nueW&1XBvL7LCT;H}?$wypJ5%u(Cpt;*P%&;F2Woi^6l zhC$zg2wr1|6gFf&d)^-Z2%m_xzTgNCn$JF(gOmOb=Ci-Y_gmxpI3CChiSMBKY&^d4 z8|st)e0JDwe|7V5vS4*V^VwI&(z*U8^VtWHL#w_HI(Ho9&>|G!0=d%Oo!pP6fXWz#t8yYtyec7DHgK06<6#IKsq zCj1u<*_r3#?{eHLOMhee?-_J_`Mz_aBfi4x#*Wbux8t=Nugg2h>v{Z3uP&XVBQC`2 za=b?1bsb(e!fiABp_W!Rsv8%=6ijvJWPW{5;tRN1JdT#Xu;w@$t3EA$my0hmt?6|} ze7b96Gag{WQ$LxwKh2Y~0As0Pj_bxo&~=Vz+~h+y_{3%m`Z9y=?VIu>)j3h&JH?#S%BEh}}~%xs*EZ>dpdd%@_7$KDQPx`uCe<8Dko zmD?MIRU!k!^%qQPZ}4WBd0!>1RA;<^3p~qQv00n(Y}%7ptiq+u(QO*8hbQQfx7%Uf zj9WO%>Y2IuuKOHAuHk2PGdAOr~-#Y+j9554R*nAJX)E@19NiJf%aa@k(|>*`Z!cEp47xP<4raVrSiegWnb9iM{@ zNL+pPsN;n=zUQQCT(cb5fhskH4)g%5Q8>zWD5y+mqK&wf>K5Po6wv zwI@CB9B~-!iJ9>m+mnmb318l(KjE)vPd-D_VYerjTrKU%EeC#mdvZ;IYER<%U2uCc z{Jy~Uq;0{kXis+C^|S5CJ2(s7?e;%tPnIHgyFHnXN1{=c!f8*gTJ6`K43|t#*PeVf z`G2)NDMX1;dol5KK;Ueg_eod>slNo_4V&=tvNRJqJa9Pe1d@p>_v$(|jwmW53tZPXUGIDPr>+#=w z+_dKQUX3eFr?}g3(Y>PS2}RM154s-Tj<4h2()BnqxIiY=Ra#CKd5YS@8!jI0K!cGw zcXuHk=gRoj71ti47(CW>UF_@jrzN}Nam(@B$Id6M^n@0P&3&6`((^r8<%aK83>k07t?hSr%}V`ZMuHm`q4C(+ z2s}$75A&Rd$9Fp1jz5LBw{2)(;oIDOcS3s`*CM+6JIhy?*v5^gQnOMUXF9UHjmPl# z;y$CgfvzI<-IkeZ%27Pw+%5?ND2)3~xbfsFJw?|2T?(0u_uS~)an{kXnRrjz=v1mFb7D!6Oz((T zJi;)uJ3T^``h6iDO~y6>574m2@M7@yp4qg&rN!NXM_hNrXQlpkI`%Y}`#~0-7r&Nr zNd2lXj(jx<5BC#cr1BGYIe38T5bZWVTLoD6w)4m$%R2=ZYq5R6R+c|&I7-9p_cS*K z@0sUOF5Zm4qT+O+(Z$_pB@C}sX&3IKy4*Udz@^R9J*anP93F33Zk~z1txW;H%k+NY z-y+}%1d5Q|BNk9~a(ix$MnkY1cNFqN2pC7X>F&ytZqE(N@FDKpJUG%bHgQ14z^akU zG820atis>;OwaXj@o;se_H4|1Xv~AVVNa%ezssQi>oW#o94rIg;=AzPZSmzP=5gsex}N#bY1=z{H|hWeQHv@E|hGSX@ zKtpH1n9ps)InrGj+ZW^Z*+?8p8~CMG*A!Rjc4$sV1o?)y;Hf-U>3eAMGD@3V56^+; z(!Kjj8rrxP=ioiR$y9H!#iJad3;HF^VCY7R^vzSK6mPGQ`&YVR*o3C{fKf7AViv7M zS}dMuGWYN1PsZYg8E&Cs@a5JPitg1t-S~e2HO-Gai6&~FRcZkRaz|17mfa1#5lbOO za92@uIzBr?_t^~kY-huN5QHJ$yVbS0MtA&T*W$n9cp6G{2mZCkUe{hVHsV;{^v$^F z4{e?LQu2KJzLSoWbf$0SzR1_<$1BGo^!A&tVdje9M#SRAl85QGhLW$~+~?IB+Vg~u zETK0oZ3?HSZ@vR>ZJ+;1x;u@}Z$j264a?`#@A+;1?o3@mk0;Ow4zeXph0%VJ(ka<0 z>0(P#J?6%cL^Y5!Q6)?FzK3usoQ1$40e7(g^k67>^D}f|`k*OCMt%aW{cQrMEjMpj z2?3pKuP+@YUcX9Aq!t2`Zp*~Ip(g%AOicS(6PqxX4d2AI@PqlriU1QoA1Wq3gPb`q z>eCjhCPTFYbQfJ8+z(_>1kFGu)I3s~(K8b}HepvKG!5J*Awi8^CT-DiCOx@=-eJUR z^e=YOz$BU4^~cJkUEhj)=m`b<6VR?-g?)ndnkoEu5dZB@e`)#K`pJx4}9GJ?}Wie%KU`h}sXE{=$R5N6;?ugTFL3L_#0<9cDf7d*U%FN*Xg<+nNssM6@3XcAiPI9)}zgsNVea zFnRcURAj$C6MGk~dtf$iy(#@CJ?YC&P27Nf6i<5(!61R2=9|sW**BXQAYp`r#g|Mk zh6Oul5ilOkLo4%v;f*%$z?15wTekpeaT$1?ZRZd?(|U93mISzG*=SjP1YZy%Bu!U6 z{nN{W(hGvp(WrF(e1w16+RF>4iM0<4jK6%o+tLElt7+}RKfeR^`FOvuiVy9y*h@E) z3NN2;wbSs}IK#U*aW#(MmTbDsGL6!F`zaDbC_!?0*DFepR!X1>ElyluCE{Bi-GjHX z8QHj2_lf&3Xy70*-RMoVljW=rEYV(+q6p8ZdwDu2D3gVL*m(k}$1PX(rL z8)KhT{5vivZM3E>dzaq^lQbsF{swJYmQVe~&+&*&ORVPW*8X+yN4)M+ls_U`Z8wL| z?E@hZa6Y!3yWYxA_MKA(6Hoio-DT}h*N49R3ttevO*+>AIsw%Lsw4ETwRasVg;@xbu-`fU5@fF+A8qjprsz33q z_Oks$TGPt@1vsQ}5%O30(HwyCQ)we8J=;oSKg8K8oUHcew!rl2F@*Aeq;Ja+>?mYD zT80i2mr6RQ>pVSgMMDu>!xgDxb%bbj`4Of(+kHEz$w7q^wn85kQ;bS{{IV~D}koEqA2=^e98G&Uy1WtZEH zcHWW6u~#qnUCiLe3Ndp-4rgV0BVNbX@%=sNE&mUDX98bUaXtR55EXe3MU9H`)Tps>2}Nsc zT;3zweexnvT;hgtLn?|<5{VlGUr2I$eL`KawJojM(&|rfBSEVsEJ;{obE8@{xL(8s zYK6E!{@*im-VJbMKvd?#wx7&di)SbB;UumGr}#xb1tXvy*9WhnLM8 zS~bpj&Qv3R1kyY(!ocsM*9hh$u&FNO)Bp7dL1>Tb6><3e3=68$B zqZ7>w7tKw<2}$UnPs>1`Dtov_2`qx_yW}>}I4w&2^M?ib)UN|ZYSf78N-t|yQ-@WS)`T?D* zYlkQk{}N9NQ_w z)o6uBsT#b|jYXOBs#5)6(NpcJ$HFZ7vfXi&V$lLlk|-WMs-HY+jEnH-Ib`9{@sh;z z=x=cR8q1^KvXp^G|B)N!(F<63MR`>A-;__2(A=sm^#19emNVGM2#_r!fMJ&6Nv+&% zm{qI-$~?F{QG$KFVc}EcVBEF2YBqx&VH*@g_Zc#423)cxPB5@$HRN&B3$OS5y|QWRiJ4gc#>ny2=-O>sEkC4-7BCp@DbdI z0KbQ_{^_maBF_lTm_?yLZbt<#x(rKQ`o%3=NFK0>&G<88wq%u~xRA=Swawi*`YsI) zNmhTU=m=MWIz@JxG_LYLXk>?B;vP?>IH6;a%Mc@{tvW?aik|8;;8i{;JLNKf zogi>a{E7MEyb)i2r_-W*0WwNuN*R3cX^SJz3?d>vEQX?~53{c#+>aIm5^u zURjJUp-O69ls0mUVP*?dzJO|SxDguTwv(gKSJ|fubn9E(dQ`saw^DGR0(?olX?_}( zw$T*NfHj=wSDvxNexn{jbw;acTWKJ%-{HnoTB}JAvEZ9IBu;#s}MRredHF^ ze@1VT8PJLB$@x<@7FhN})2X^Sc@uvfA}VAa*q>BYEwPYqe+ZwfdiKwMvPpmDq;WOl5?MuT$s& zrB6V^TX#={T+40OMAFb`+n#@wWUMM=h<)>WG7MN{lK-5^C3!>gcj+>-87A#N z;kC|~zNlRdfWcYZ5_~ce1{*WPn|F6gN~t{Pbc#na2-=}d-}(C9S#^~<4ywUeB^bZS>j8Psf@)a6EqWg;Zd6AnlVl?%KvFh$6ep%FoN*o74f(ZJy1=v!v5$(mNe3?`K>@% zZeJsu9va?|4!6r7v=dYw{*pi^v7Q0`LdR7`02iW&5r1YiY;5I zh;Tc)oA`gq`r6;ziFv}5G%;^z-kxkc2lL6l;ep(Lx@!IcCy5z>g-K>sGeIlR618E7 zA*`OeP<++CBk?GPB@(lMcogr*Jh)0$+f4tHXG{NLSkfBuGeReK_^o1Q@ED*JG40zA zP{q0Jm8pTOg&X%Twic7xr?N95kNu%BX~kKKSxMSi+?o}zmb0)_ZVp!251hi(%4%gu z%Z^nH*okwQLG}=jqf7gh14tI?SPf)tHl)$S}j`F()ZQF;$V@bG9AhaV-y zo^e2p#r*hX^>DGB$`cU3halc7+i(D}+r_Cm_r(50(ShN?i4W8h9gY_|JUm6YPc@o9 zO7$nRjssZ)0P!c&+FRVZmw4lP$^8q38m~R<>>?^s#JFaTb{65R@<;@mfVG<+EBoiJ z8n6HPG2P$#35Np^8!1@b8_o7l;L{0$mog5B7s8Of{tjn1nCds*$O zxmfkBo9SBwC+YbOd3TK+$ZFyR5jLHQoNj+^Cmjt{2bQ6VmMiUj?@5HU8C5yaFgi47 zejs#wTR0NUfJh*kGu;0qpP%6&8B*vWzzT%pM8Yy7_sz;vBtS*YALw*(=b2UDnM9Y0 zJL7kA1j6g#AfV5KU$9IpqB41_@~w^6O1zn4)VW3pRMThqMU`*Km$4?}GbTz_1`t48Uk5Xgw5C zR+Pun8!ChLCQRfOR(`l~tWbG)ZzUF0eyBJq3>?}Le4rKbDw;yTFj2F$)!mzwAE6&* zV?_&JiS{GHx9?6rLOT5ulSTLv>gOXu{cI)tO&W3-MUjO0k#RA;$3OC-^!WGZs2<;g z=#6&y2tR~-`$>1cpTqybvAsR1_ukHSO0>7@SMN+#z5P0LbAeFz-X8OY_{|p^PoiBl z8@j`<+PFJ@2K~9K=i+ERKM(j171K0}KyQU?)}vIP-?*L2NXu_A_h zFuf8misiD&o{_Buk5>sEuOoOIzAI9KXPF~-;<-!2jYu2hPqu4_KU?IFSL6?KRKEdd z8p4^&H{2m}1qpdIYv_5F+8H3HOx?0 z;oKOGmo1|B8OPJl3&(F}eS;y;F3&dxMCKdGYQAxTSuumAb2MI6rJG~p1V`CDkSNKZW0={d?1c%wahNOvupV1xXG>X5LO84-(a^$k+`z7!}6uhHx0W z{gggnxou!xgea(rMzTADv2D507^YNDbTB5at%~C>=JmK#Uk4y$0a1gFm%SJ?8c$uL zWPyL;iYgu3E=Ck|AN=Mv2!DO_K$yRJ82{9KC`WeB82{AjgHU%7?ut%$g}Ws36cb)q z=BQb%GvN*MNnaD*)rzxZ2&6y5x0)T}-Uzc*??WIKn{b)QpBn$PFzICkWOdnX1l%^s zVJ|(aieFti!S((wWx}h=2esu}C}lp2%te9Fjkshc%u{$(gP{aRC(HqUcKz7qIU~(p zj&%Y;3HGmNiXB<}oX1q#rPfFU!W14`#i~cvNVnjCC(NC!K=m4l`E84RDNo=rwK%;D zj+CeN9iPjp4f_B=Vw=$zCXcXGJT5~+@7m$`a*{K?jJsNRYB=M|ON=ke4O6NcpxY#q z53g$DXH{dK6~+qPA7(5^VcY|M#m=v~>0j2+8m)d=vpq82OjFvIze<0NYG2lL#1A)p zDPQ)TEuuSC`BDX?iY4e>U+R~a(Aqodm!x8?etC>rvjVZ|mtSV}tbV!uK0(C}+TSi6 zNW$LGzqSw$RVke!YmTn^mycDKiH(Wclm4Y^Ow_RcB|Js!ecb_Nn$)~8CM4=x6P+G% zg%ZHg9zq0Eb-J1j>Sgw`Qp#G#y_Atlv1Ar4%o$1x!?8${;YF#qWMQAXsWLBMwFT($ zIA``ZZ(uUPQT3vwoY{2M%z?&n>rE`K{3b`By!58Ch;G*G&s|#i$;Mj(*3y9WdLV19 zKe!Mmp8(}`psXooFgQGB{TTngzmpU5%PK#S`fx-l4MT%K7ANGJ0AT}yvr|RQGE+Oy z$oi*C`M$#-`jqsfyn9qn z`T^%_R|)}leZKZoUGMWX!@5Hm0lVCoipf09ujgqa*ZR%#Jp5(ym(60DJPT3F$8}LA zDRFX(vJLZ0B;%P3%4cFE>g(_H?NXeqgypX2i=x`3BAy^A#oqOd@PT&0V zgm!gzMWmqg1or$ZoFIa}>Z<*jbTDwETG(891fm3OotT=hwAZK=+w$i;^Z|CW?Z02) zOQ^nO|AY$kBWi0jvTqsQjFbIJ;JbA^B}^whQTT|J4V6W*Jj+&knBg^m1!3xYxW|3j z=Ik^=@mtwAXF6?PR@2$}oLF9pw)*1mw^xY;K9rL{gm^<`Nwe59E@JJ=_p!In!HB1I zR9dRMYbG_qW-<2n)<0CZN-t;D*2$bg&aC-~T;=B=qTjp)iyY1kZgS11PktQGt zHma-A6I?TFS|xZ4ghs(=Bt}{>p|`EwiIVA>@d1_cTc^9LZ=!6C_{k&2IF_JmDls)% zjqx6aEdWmx>Q|;1CTdf;hi*weSdu0+#M;Fi;x~6IwwgC)%Hv#jyLG}7{B*()Gmwcw-rCf)io zY5i`h!9t!h(<%oDDmLyVcXQ8lt4sIBWU3FQs0c=M&GOBj8tQ{gaGgqeZ|DGN=*GQt z3)9#JFcWagYkC2W<*krml%{jdFxmT-`IJH^pF|Zck$>U+Qi&l|CjEiac<7YI5uI|+ z#Z?4O{2~|$yr`KyqP&;xSt8xPRC;2W-`b4RXnOyf5^Ka_y2UK6D9!hj=8WTEXeI(p zt_I_Pf||D~b{n6&%;&m$;l_dEbJzG>cP%WaS&OZoMdb~LuobJ(5OLd8GgD}lJFxOl znQWHVGvR!S>aVnK78l}Xa!XzsQ|(0?eorwaB`VPLdfgi@^jm2{n2KyaZB`^YkW~@m ztC2gT5~dXjf}qu^kgafhBzHF+>JV4GvQJoF8*{VbOX;2`83#oPAX`O?bUPMy zFo%dOPFRVFHKCPHCbTjq%YV24-3u;rW=LWH9J@r79V%xHaj%ronpq-|yJhoEN9R`2 z;qqnW$nmE!Y+m5}Cb6(Sf1hGnnlfy^I#`!KHnB4t;krC@z%Nen}W6$%QqoQ|bN;Jf{(`Cih20|mM zgKFT`@8A}QoL&1Tv8jv$AaPjl$(I>Q<%jXmT>83Z_vC*D3(q(ig|O9@AeI`XLEtZn|#(Bs*MD?G#T z3U6-`1!k86?FR$=Omj4md<1s>f%cXG`#OzA;9s!)CBO3Js127bAx{g9wUMd<(~(g8H? z$N4TE2kw9UC&7JVePp^uJnH`9zwqCN|5Ez5!oNDg9isz_5irL~8IAvZ*NZzQzy~)7 z0h}OG_D6IjhXBX*j{qlM5GKH{;~+f7LrajjP})gqz0-G9XwcXd9z2l9W^9cS9U9m>7B|K-LXu2 zqv4EKu_MxEe|C|B>fb3=kFItF)tzE(u*zO4Wy1QPi!vs#mdgz!e<>WF)jV>o{ebHF zg^Zc|2C^24fS!V4a+b5Rb&RfP)RM8Mt?a`@$^Z9KzGEIN+ga$hat*VPL%~|JPkg^c z_S+8$?hdSt;7&%!Uh(HB8o~xG(?o?|7gG4U9{i2)qi>O^T9(ULgFd2}on|8ov!7)* zGU3o>Ellg)!EoRm8G|P{W-Wi?^AZhMcA7y%IfsLbvs#Li@nB}pqBA=77a&49`Xu%( zW}!Wylo-;>I2>uv2HydR#GsxL*PMR0XSiz5teEyFOBUTAWv9~L7F|%0NUb9++N4{A z55i=c^a4AL@lE;-8vb6Jw0(b?bQ23JJ$cz7ef}Qd@6+I4SKT_*o?D<#E|y8`7KtUq z-YE9SiY-8x&%>r2EIAz04wA?`@Na5PU&IOh^(k~iPGY>6G%8TOdCWg?9?8E*b zoO@{yy!6elQG7t(Zum%!;)85|@p1DFarj`n0FKr8P&#Dr@do`h9v{zM+ao^uHVjhu z*!!F?KCnhn_&^GE!N=Zn1RrPKF8Ht(i!~!Uc&}P6>vin}mQdyCe(P&Fye{$KHv~+h zoj;pp)FyV6D~@*T9bFB{<2fl3!UhMMF}wJWjM%|ekJ1C^ZT5F6-wH_3YUzIVZEIz@ z!<;UDjl=Th61~Wm`Y_wpXKaF>mQgRU7-pJQN}VP!@hfKuPbYa#Rm$7Qs;Y^KA%8Jk zKASNTkC@S&4*vpYa|)GSK_~ko_-&G{y#Y9G5|t4<_Msa+0rS{^If<3oBsVUBJb3Hj zG|IcKnlE5inY?E$kL;Mhv*Dd9;}_qw%b3hwP1nHjKZy+-zuS2tzuVM^DvMgSjWH@~ zZwHkfOrx2yvs!Jl--D4i;umoVR%FQDG$XlHiC|RtB4!NhR6%N{#w;`497kWMto@c8 zM~UgJsy>v;c8sfOMI|nan8PXT4;Sp4Q`2JbqZP1GH2H%qY-Lt3gAXpr@#lW(nz0P@ zqc#k1G=}x$g*kp}qL+g$hI63Bcd_rHOBUHpzlC8%-f%ujnKQ*wu->5{5uh7~#-3tiyIOoF7c*3zJ%W zip7z7Pa!q@(`Iiyo6`yAKy{ibxs?Rv(BCrV@`9gJKoKg-Bs<3$_nsLc&{`*iJJtl+ zQTe{#oR${Fm=SC-WMO1LL<9S#fBAD4yJkEC@|k%li^o_9RDWztckKe6)i&7z~NJOe#5 z_X6BIo{yC9Mvnc`6mdfn8e49J?i6a<;~oTrKXhlNAdD8w=B5$4TXu@=yC@9Kq#QV_ zHKd3Y6rB3a+ET7KzE?#eT#{{sej|D3tc5>!g=@y`&>g|cyhmn2`OrPqI0*|iH?jS!)VLzNO>~UCnEcF)vEmBtIQv%wb7vj(EnK$^MXGqtRI{ zQhv0VpM+w_yG}Ce$h1qQz1S>W&EGoy+JRsB6pA&)&&%zK6~c#j;acp8@out$^-xTG zDs+9aLpWO zY|fSk)VG?ydU<=6{LGf0ITV{E#b%M2Et%P5=167^rDyRso4+|i$hq>uJoynMB{oro z{KUBw7gQyNQI!}*Rbm{f7`a?jGz&nR;!oBelXXI$MpCnDgAg{s!ZyngUg5z3wH8aG5FRW<4XDBo-kbLYUgY zN2NROvm&8_gopN8mVqm96IQA(?`C_N=MN`_pFbtf6D>7s@#t_zw2&I=xj1mPbM{H8)oXaBX}oV_(mygo$@jF z{1#(d?oH{F_hxs1>E^HwPW8HG9E3cP+26a>H)SML>}|Wtc_X(feew{|yhn;{p^nCk zEi#RGM>+3Y;O36~r+`us7@U2OR;a0_j3s`Hc_cvr@z`+6We15HIK!&Sl%}MhSId^> z1Tr%1^RA(}Y8+|7!;%_NyyOg(E5R!V3N3kDrm_EvyexR}lyXwYzGkcgvDQCcdiR8}C!+h`WpB_FIz#T_9+ACwuVb zK`&)%T($wq{t1;;O3nu}R&$LnG$E@@Vi?k7i{vO8Y7d>Lw@BjXKTpcHdgq0wqjBVK z=b=OXB3>5q?!qK>jOvB;+q374n}VMTPtU$v}Qpc#0IZPRZe3 zFXaDu7xE7g40I>|-V}?Fe*hN?vZXSAK0QKy`JN*Gvt(k)fBAvEkl$mMUhR-S6QX7- zqUVtFs+^%{ULrIvRoODhPT+aDdR_(XtNE5-$W@~p=4$$T>|1F>9Q_-p1N0ZX2+eF4 z45AEX^V|&O7~GHcbm0w;{rq}B!yE1L3DgTODe^~oWAd?@H*5hon3g!au}R8D{hvC# zu_raKJ0?W7&%)~!Eg#f3TD{8GX*coU2Hg&S9Qg~)A1?W}bxP^0ar_|#?G%c@AE)q0 z_~UR=;g5r)sPIRIWWa+ee4Z4xPH}Uu7ycLz%vkZTSvaaYf1F0K2!H&Piv?wZmO3NC zAM!oLAM1G#%O83B_sSnR;7f^z@6R8i@o?mW$G%9!PON;`N*!YP;|s)Q7yb~ONjJ6^ zT^D|q?eGpp&~9})B(KEsW}11W-FWG`clkQJq>unFO;+p@<)zb(*1VJslI(?7MR>_0 zNSnU6o$toTndWqO>9O%qUXn25iBL(fJ zDFQ=X#3Ny-SJ!BUT0yE9Do@@4IjZmgRrgbl<6bWe)pfj?BP`gRp?Vo_epVP^DEVHG zTS&js_yW?L>N4FygBkG8kcIk zd5+5VIo>Rwq4vX9Xg=_sGd8kbcHF6JE+}Y_QHM}21tUN3S^vs6ue?f#Uwj>QH-Zi8 zgat<_;@>U_#Lrcaud<)xF@&GUZ6W+yt2E(XAytGwOUj3eud;`zik>oxYvr<~`y@m7 zS~|r)oJq!`!Y18`E)HsNt|dWc-q|3gCVG_dI+LaF#MJ5=D`}9cg;+O2L zmn(W-+1gUDib3PbH(CnbmGolRh%WC^O6h^#*oB>S*o4hEiH-Su8Majza=!k_$n!I zi}aXSRcgezPx_x z?|!R;-3@gJXLYjDP6k5SgJr(?n4{TazT{{xUJxeX-!waUH#N<6)jZEzQ}<#i;kt7> zS(X#%ugK(E4?C~RruF1>-*gNwFdC{oJ&Dg)-!*zO5m(J$>^?p}tHYnWWpajg^(yvX zi~PaujvsA&y_SRhYs!;0e6CQv#K>}-y5{l~BQz<|crIKkBlt4*L!ZbN%_rg&ex*`_ za~>J5@SF7AJp!iH@0l?3BCtjD|*L?Ot-mJh?U68N+lgS`e&k`kgAk8d+aZu z1jPYufqCmO3HXAqq$y%Fn}1AFcqd?34;$#NI=56+Z=&yYDtc7**Ne{XqW^!2HuUBMLgNSnaaCd2Wc|28h=ij%hl zFj&JFA>F_kpM~}ozxjOrTn9Q#28?LjpLF6X0CCPKCj`Lkt-HX9Qvr1 zcg4idG13@z8hHrZ`Eb9BV}bhxWYcVHfAC0EQn>j|D(vOFY!u-THyZ+d37Fy z>z};Z^Q`YJuP!?&%yvy@MuGh=kypoD)em`PmqhyJuF9)Za^mIHy)hvF%jDGol{VZJMP$?3T zS0B6|Bd>~d+3ETjzjrxsus zn(Lasyn20m_18^AiBN$XHsTqXTbruCZkJn(@A!LHw>ql7-sGBbEF-3`F@@V$5Xg=h z8eS~5aD(8gk(IW}$Yfb%P{c9{5{IOWJ7V35)dQ{y&=4nJ%^oUE^qU9D$=zFB^Rv9J z`7c+mZ>s*fy7DTcbCL7pGS~c(JXz^HDULodTrckJn!n6>aD2Y?TJYn6Vms#c1>ZZ( z*ZkffLVc`1t@-1{Srtg6oyy7U=i$kK#*eCe@ z@O*2ndjEZD{R&mxI6&94fKxX!Ab-NfK?;i&*?j92-}G-fJKYIWZt{hGnULApIsNO- zfe8sWUd{b#N=zQ$XKW#+1^zhFoXaF)T5y?=n7~9W*pXa;p&yj=EfBhj4IXDdl6|t_ z#Q95%r)5QxTww0&@5Fe6f;iMw=6TLz--1;2o-jlAmlY7jTR;l)rlda#e~##bKPQCQ za=&mU!k?G*%%2=+>X|=@^XWXgG@dg8?5%_!6}sl{;jrfkJ7iB+!ya+`DVmyC{+uHy z7XG}SjOskjXIwQixD#KC@|ap&9j(Rr@{x~Ss#gqh*i?8l(knKKE0KzvSnw4;iN3!- z@8?@@z@5W^;k?Xc+UQnEOe4&HhIUdInsJ;1P>#VS!rwjIy7tXIny zqI=)xGs5G^v^3jJzD3SNaV(X+Y1xyyyo9B7XrBi^)Z;^mois|MeUJ4!u3P=0)lj$?2G?;HDuXGxeQ!J3EsXjd$&{R5ti5>$%?Z7os&6%_f5f+TPi91YUG0%-Zx zlIKo_d&Tgo;(|0%b|A-_$I4hyDhyV}_Iudy$`NW|Ee5;rQCnC+0v0h}qi$KTyQo_d z*#b4MPk+HB(9K_Xy!F?oQI%}_lx+tI)n``oz|Q_=AQxssDFYNqnNB815}H{-Voy4M z56Ra^{?IvlB#bv3YROC7z{!OKS{zbW&n3xhoy^sVjOg5K)5$uW*d(p0JYq1=TGzq# zJQxD_36h|mDKpFw)EiP>pC+ zE?q-9fW$7HrD{D)@&TPcSn^(-_elPDoj+9andDpRGRRVGa+%}~JZ;O7t#wC}%i(To zUAB6fh`PA$c(SF80Ax=lEA?!x%U8KXat66(ZnoA1$Q_D0j24!VwG&?5Lm_{TTakkD~7l!;Smvtfcx%5_qulWLvR>tvQrX6s~* zPUh-lo=zHd(xj6%ovhZ$I-RuZ#Ma3sopk6VfuWzer0K-16Nw(jO^;48b&{Pq>QMo!QL%5_pj(kSX;%9W9CsjKE!%FWURX6s}QN#k?6Ts`@g zy1D#Hxkg=}NhfV2jkhvA0p2|FEp@B;m2&HJfp(qPI_c1f%x5T)M$&kvet8p5TI$?f z$jcsGAX6vVB#jrj)kg@2PPrU@rJSJ)l<1_Cr197MP#G^tOI;biQm&koq)I2%B#jU8 zL%9hgEp_$$O1asjBy)5!m!$DNekeDKq@`{izf!J=l%!23t4SJv!w=;eNm}aG@hjzQ zQj$$N=^$ymgCEMZleE+&pzutDmD5P=g0vJRI?A{(%qJ$0wA7XGE6iRcB^EUZf13^M zx`eGttaeItNQuppm2dQ!?%laaIZI5h;BzhnAPE5Zl{!`HoAv6ZIPaF5bM(!*>gFux zW}CjbTHS1vn~k~rhy@rSSs35G+cs9o+h^Js56qWlOOHeRo^!Vh53B5LixTD0l-AFAwV*6seQ~_jICCiJ>w-G@63~r!Ac~`dPF30aB;TmYsSw< z14;|soBY0}Z~1-O))@I+{;wU$@5jeR<@aU3j+5U{d;in&d-Dsu$nV*|jLPpjbY98t zYMoc|yF%xc{GLGm-yy%fD`VvM*sEgX_qpeEm)~nMVd4Li-~T7S{~P7^jHDgO@8qX; zB)>;Yijm*>fgetOx7LaLW{^d0H;53A$Z+30MxcFiI@LH9@tT(5%?tV|!->C(`vJ9&=$KsNiJ(!|Z8$RUu0@KG8LQRARl4>Yk5z z`-N^-!>BZjA~As&wL43Iyd-PXUS{6z+}?M*nK#%PmCimE?+mNY8_Latxw)@3%46oS zKpBMxp*)GSoQZ>KkA414YH2h&M=X-7!ID+zH50AEeAAa=70S_htB^zNgRH_5&cR!S zXPZ7i7M6}TeE=)Gfb;;;i%5r&jw3zTDl9X79;@&Q)0bftPB49$R^c_K?`RDB%W~z$Hv;C)ZTm@1sZBar!d}BcG1P5hDNR!d5g^f#T*Ra zkKN7R$xXw0yh#!<_m^XPc%V=|u=;RVlya95I$11K)CjvE>@Kx9WOO>G`=vCJ zY}IzC$8M|kJCzw~)yg6TR_5K)hu$l zRriont#a4SCQAiq%v|-@W7R&UGVGS$H;)`u%Cv91R@b0S-|*V!$mhkLp1r?%upkTR zuxXI}%+=8|6ly(_>IMX?3#_cg*V~h{?m^{ z@vFH1s6!p@pDED9-DhxpJ7Pj{|5_cJE>+5iu3gtdHom2+!t3Z2x*lw@l4DMkeLGRG z8+W4Y?btI-S-38gGfm>z2>nL6C^xDUIj{#^WM}>&N(-&8WqvGLoOta9DB+ZwBU#;} z(hx*xF8Ar_$e?uSGAa|o_%g}hb5o?%>0X|Axh~x01HF&fs_A`h>W@Y5#r1LY zp7GP~NACjO-xYfAsov{O?<*hKIeI^PP+#<(k{zb^|6CqV?>$da^e$W(ruSn%*=c$= zpWipV*Z(t)-UszS@1K38>HV`Gjoz=;#?kxU?C(eKb9jGO=zWlSuRFafAKE#3FFCL; zde{(A+%-j~M9^Pa}x&u3+<4le)Tb>stzW4V# zNAC~!>x*M8lPviIaFEqU$-}+e}JG~$I?atBrt9|;ScSB~F-k)6bH?(}~4 zH#WkiQWQ6IxXK6gWuRTW5 z`%eqQ^d7{*F1CLw{gC5E+JZ{9R*Cyr?x#EwGK&JiWkf&0~Gtl2_8{ znxB_e(^QdSZQF=)ZuB7guuldU_MJ(NgG zP#4LIpHQu=4mlIb#S4EQoPcLgAf;ZQtNGm3vPCM-{y;%L z2h#qV`hl-IHtrB#(`}8f2h@1@L*wg9pzjjCp5w&`zC!CF_!_0F8O7K26zm_q9Q|Xw z%BxiLk04mAdbWR{u!URNK`8D-=a^QH0&M=M-RgZ%F?IWg>Nz{ys2%x(seGA+bu}k? zZt(bXKPQG-)>oVsBk%{7YbZ&Y)9obAmf!`2;zb@Klro!?S1!Q^5W1Mx!~$hCV;yH; z4pt>Z?-HRp8{2Z6o1JadKXzFE-)-o-{=fTV=j%V}h#l46-Jkm7OB7ejv>?WZj<-$s z^HPvA!NXZ9(WZqCs(N2)xqq)zn8U$#6m6(`(-nrjdn0W8=I>F3pe&kk4~gHblf*S& z#c=o4*GT|(u6{+rl_Ze!#9^{*tCROE6~WzS)=BhsYsSM;&a9J!*zt2oP`FECKYf6b zZ1=9y_aw1Tb4vw6FQuWQ<5*+BJThQjg&VD_-0aMFxT&`{%!5(f6)NRms$NW@pB|Ji zf&QLy+24F19VPV^RVQ|F#;5b=;SX-PSDow1x>r7c7dj-*D*KZuN$4Q|rCj`H4OBrf z@vHPRpY^Kv%LWgsur+A4fm`L!Fp|X15>(&GDwIQ-q2IAyCk((1Yd}pVuzmG~aQlp- zbe7nZGma+92F)O2`jQ;UhNh+)x!W9%l*5n z_LrhfZDik0{^3n-ovZFKxuxP)8d(d8i8W;~{Q`&Hi#P#>%v&dc0Pr|8^kvGSGmZ&8 zh-;OO*tkp+owylC3>0T?5v)ts14C&U!np(KR_yzvtRqE84_9u$RKF_~<)ZF)sLfl& zvzOOzUC7@=Bka{nMX)>Wcs5<_4>^_+8M0J=L}wh{&WMayag;7Z5nS~aI%$T;X!?fvzteOL4VSBpx_qcPs> zV*VrN&-*QJCMc=jyS(vmpf^_DH0`yE@}^<$otHOeLT; zbMxf?lQ&^`Ge4;(c{6)>-}1&jpr7*QrQ<~2R2J`qym@&24&}`Q?`U~*=3Y^G^T?;_ z-cHDyu|Q#%`qV8zl6O(w4Awxt&_I}jGXc;u^nS~m_NdPEwikpFGn0<$UV+=jM8Y7>g^h96iT*40XU~lll1(A8U*g~o25~+;3 zGRpQ)jy!nq_KLv?`SnxwH$uOwmd|vl{~lfH|5UR5?OVFld*}u*0;Jmwud92%YwH2T zq0tdYBQDu)bU?UcKvXy&+_bi9Ee_}c0xVVn0xa&^9gDQY+XIY)1xBb4H&S|3c2ia0 z9Mc8P{0Y1pFz1)+q>3cJ9{VzOV(KH@P&mwQPAc)Y7M3cTLZ3Ow8#;%Od}j=@U#5KM92`lI zZ*CimB}3uS0|s=m#+rl$#H8bW^^>qO!IR~X!eKshYPu@eD2=x8ut?;Pm7QmKeAct$tc6p_c>+dDz^_CDKt@f*6m$Gp?O_P$N| zaC_IZ_Orchywq!ZEuieEz1o7Mt4$9AKB`0GxRxk7_IXv2xYs52Df)R&ijJF6bbKL- zj%|49lSN-x(ec2(GX04tI@XbA=_-m2R2pi*_3;p;=orou&V3bPLsXRQnBkNP{mQ~> zE)_;Mtm;y0F0CJQ-0$|Nz|l5TPW$d%*LV9~(9d_OeGB&4QTqmd&-U$5zcX%a-_6>x zhgzxh)U00hQQT@wZ{jC2E`;Q8S zf#)h*G@TSMZ(_Pcs2=O5XaMnL`BlZ4hV{0Q^^SB1lr(l*19J{*pbwpIa1k1sjc7!^ z^1F)O#nWZQAx74wxOj0nj z0LLOJlYxSiC{&|7^*#^DA@#mPkUl43{>B4Zc0K)n)XC&e=4np7FNfr$df!PDxv(gzBmwiudJ@CB{T@lo>5{nS z-#&|^e!Bc}@hf#9ztrP!RgdZNmUa6ae$DCfYu)~^%F8cCk#i+s0fBQ-5PSPG>QdCt zx6dQ1G|;y{sdA!(-mp@4qUj5pq@d`SPu<3XF~FfRxnTvx9@#MKB*92h%#`cvb8$vrc~HFqR~d8U=@`OQ}&%^h>Hn!TnW^8XcqI9EFu-rWBMK zJ%(=}CJ4$%IR?-bQ9xx8K$nIAop7#d8Xo2EmWi?gbh!YcX>;U;6?{w*vrZB!Gnb^k zPJX%gi@K0snpUHmCU4;^oL`RNsr=tmUVg1$lgi7l6PY$=$6v<@jDNSi`vHbGjZ z(zu2BAt>uMxLmNGO;$q~p>jYFY9- z`2Ie6%?|o|LO=TZcH!6^^>`nzu0zp20LkA3g{Ubpr8_V)q>;d}LWXL%r-Z>XqJ zzirjr*4q~7=tR}uM{?NUrgZ*1{4vcxi@oo2($(IS$f4qklM?W%i-~t3H#?F!6;$za z>y7An9>XeNelQ4U`4ouToobDJkEs*eQ^c)QdJ<=m5Zx7xO0?ePS(o$UK{gSryi87;aC!p^h#`g9 zgoyEm!-ZIRa+uOXd8 zI*C&kd7Swe!cn${Jf>BJOsn#kRuwX>%41qp$h0btX;tA=#@1??f|#|ESV5T|nYHrk zY6#vzGTy9}#0b48vnq)^q8`o<%4PjPMnW~sD&qKG@GiMkltk`sl}jck6SMlF6i$W6 zQ4I;T!if->W^uGa4zj5DAyk!sCGKF8F2ZpZYqc)ol_KrrrAP^NvdMGcjPWJ-iOyai zMP%kAMasCaWQN7X7&*WcOkhlxCvpbHO4Ao(suz zB6W$Wq7t_{L(Nq+H?80-e$86>B}mI`NjL?mh|my}ODYYxU#pxiiR^9=Po3@@&T6yo_|yxcbnvMUhDi0| zgHNrM;8V-&D=8)(bC;mhV%s~-FJXy@sALT$WM&{#pyJh2mtt4Z5+`2$*Dfbs{Yh$% zuvyk`xVf$T%r7U+B8~9t2vZj~`+q}FE;TqcNfvPHk5}Mi4h%S6G2&m5OZ`fTJdjr&*RM>7 zyiy+jid^bfs=}|_qFp%>LwdlY+esb5!{?}Cbl^y{)IB*btBz2uMr zDsfvS>grCFxPxW-nIr-8@p7G1>7<&39xOKv>ruHGVSbk~8F?1Qm42JmO4m&xG@`%x zqZGdwpfuk&$ltnH3`AgT&I&snc!YB^+K*S*i*0YDA7>5*U~E6$-8(9!B`940f%p%k?L$_p_MbOga# zRZp{4>Zz%&>#y#Mom4n}x~9L&J;v=CLIe&sU15mV!$-5>hisZy`8K$5aL@=eFw&%x zHo<}QsJdxAEjJa(AN^rS{>q0@JoxvB$3sli#K$NWCb`sv%1TW%$#o51l>1SVU+_(Y z+qcYwA`UpnW10%aoig9(yG*OtCY1lc4^VDhcX}P9`-QIpFV2< zff7UKV#$Wk9(SyK!8r_0ltT|yul$GFXi@GC9>5odTLrMivkruDSkj2)7q#FddLBC)ZHlwk>E5dTw;X@C7m z-&8${Hif&u3j?}0-Jxnyxao)}sS}CRNlPkS*B9k}R8r0R${QY>RLRiYW%5GkPD$*A zOqqnKtGFPk)=9mTU>YJ<*3)uRHTqA`SB=Bcy9vM)c60JZL<(S{+Nb!+YxhQ4`F1KF z>B74Xfrn8n%)3$vS}B##t<;r!QSL`ux$Iw&R;rSryJyJ@p*tn91N3-Q!!OR|B48dD zK$P*vlIc-($9j4m4^$KNqG6?x^|I0Uz(u~mCVrEn+N7V~mC|>cro0nv)6(Q# z+f+ia{#aB?6_CVC;R z@xn}sAl3!%WFv7k8;STw_;x#jUM*GCP$Hgm^wPT6T3KujP|@CBwkOrecz|s;>oGpg zT1yfm^n8cZC^TOs;TQFSTpT?L!tI6VH4KygUK}imHHX_?Re?1`Aa`rU5X0IpKy9tP zq@;Z&ky_^$rDH{&PP#uSMzuv)g%l36iZXrZo~)vyNshLPvPsZDIWAfrpN`6*sDyhZ zyjaSMrKDw~WdN7}fC+)nixcQ>@#0(V&;`m#l=xmlog?CVfcE1;vdVZ)78m>jaSIjV zuK7j~*ERHT&totHYzp$X@H+&sq}$O1C24_Nq#h)3V}Jx_PC?_7CSjV-7%G~ebOLS` z4r5s*=|S~HhcJNSPiIV~eeK~?G}!7@{)&o2H+l)N@|}^pr1JjgAii6v9>hi8Q%wtj zSSu;&GJcua^NX@&mP+oF#6Du8cq){8atbE)`K;wkg zV6c2#ehpCyJBm-o?NB7-$VrFd?#3ReeveVVN2=dL)bD}ncOUiZQop;Y-(>Z>?GSl) ztNPunemC+PRW+-e(l_^8AG`f6t#l6SV_)39osGWlp^yD611h0S{Xc!|kFSrNeyDKd z{}=k$8;^o*{wwsc-@Wdo1Mg5D`x?d6(EGn#A3G?fy?y9oKYXogd;bmk*g3;t@E=Ye zd!`2GMM2qLeeA*dm7USYZai33dS~>pjrx_H(Z|lvuk4II_ALEM8uQ6r(Z}wsU(eC6 z|JUndkAEfFkNeQa?nyD-kN>~Y$Np?>wDo=HV_g(;77(@dvd-9{KK6x=yx}G9EMAD} zHCf@#;ReZEoy-$>{|0^R=rz%%_Ddgo053%A9d5oAi+YnpDKX8*+to`yygv4ZRnZ3Zp^qI+v2cT= zVl+c4_TQ?HeQ;&8Rek7VD=DU0)!(&X&-&Pv=^&&JeeA*h9`&(Ba+Vwlr^_n*Kd6tr z?&T=5`q0N36brL}R2dfVko;HcWA9lJZCW4t*lQ`aQ+&`>A3Ka;yBi1mXZ5iUERQz5 z4}I(n6bn<;&{QpvL`kYr$yr_Wu^x1rj-*m0JId=H;vk9ee8Ybbl1l&`~=-!|MjtW@(@AOqdvB^Md@QV?I|iz z`K8>yR1%cr-=dH07$P5+U!xCw>|X|nPW2)6`&;#Uzxw@^`nA;W4D~xr{obU0C#&CU z)$dj6_fqwHA-_H8V>!PR_AV5ErlCAw;n8}t3K$`ViK4y5jCE9+m|g}KV)KKs;sb-h zv_EuSCVL#2_M;fhaW&Pej>j|H7kN?t8KNqL>oz)+lEN+& z7S?0Z#w+_oe90%GFHYf56W+?22XG>70JX0C*f7VqX>=KlF0<#;4Q4sU)^eCuofGpZ zA2=WH9_K*b@vjm-F;{N1dgnOKoY?G}fMs|&=XE#xEIV>$F5j%0olo%ac{HOU%Lt`r zKc%(eq10nl&gbUl^Yi59^hOGammArIBDP1mIGZ7q{gn*SD9#5Omm3(GrhfFK6izwG zxfA-8!5)u!_DSE#QU7f5t(75r@S)UGRKetyyjyX*c0G6U-~oKKg+^1`(H^cbjn2c1 zJ0Td%JTIw1T0$Bi{9N*(;?Dby>kB4FM! zA>Ud_07A9px!f*zio=RCnktVDw;_3z1c^&{4rLhv=q4k$8Pe-GC_OFS;Cvrkj`Ay#k>4GEmE!R&b5l8A3Ec2vm{SfpmQKZCif9e@3r|A3E z<3h6D=sN>E#L#zudap0~=BwSW)Qg`GsQ)(l9{Wfy^gaB^AB(=hyQ1`+Ngk}uktCkJ zug#68?+L6hq3^!slO6ir!x~P}SI&QpRsO4DM5Xn$3RO^w5tek&nTl3Iz>vx*0v_-` zg6c21M<*p* zm`_(rFSAmwdq|VdFeh`cwN*uc7Wvq(YwledK38yw((8 ze3(h?3m+4l2%_>;P9bXZqjJ;d@i|U%3@gzQTOX?@DQu1tRMtodooSnA?~lxyn5OPj zr5MTIinEMA-$`}NDTt!$O4tYY8df=Ct3o6jyV@&p=f=z+kdbL0d_!kvz)E<^!-x*8^EefQN+gnfYli)NXp>l7l2!XSAuq_2k4QtHM!`dp# z0--!cxS9;XnBPipDt;;zKiy18bnb-C+%(EOJMlZG9W?)ht}SadkP)(NxV zl?eQ&Aj>Ly*$qi-xfk`0^FzEfTM*?G&DwCPbfR97Hs#JJ(t_lv`#qAxBW>x!@kl#r zUxl>YubJ#1t)8`E7-?SdWEUd|7(czjY6f@${B3^$yqUOwNfGf~pZC&>I*5G>`|tT= zqCNSYQ+ZmHwh@!x?S^?v8RI65+W+yjU)@*xL!}c)t(cp{`G?p+{a*{k)W7<%c$T%zn~KZ?gFYkGYcg~&yQtFXXFv8`h*7TkJDF-cG3JMFPYT%R4&XM>HNi z(X@XmXW?Pl8|Dhh2U@ReT^oEavH86uYmv1qxHKsv$yKn7{F>mhw2U-Y{u=9_!Ikdn z_fuT?|HQ?D+aH{o4w{RtpBd8u)j7>ow?gVW<1<&yAIVrP!S(?s4{+7oD|bUxwUG9+F+Lu9QXQ);?JSjp=^kw-a3E7hPPz{xigf-4g_InY`(LGGDT z%4Kxx?oQUe?{x%Bxa+G_;kWC2K!SUJ%`CiBpvhP#lY&3~S#>3Hb5u@^b*YcY&FQl# zC*`|L3Z77hgCn!{QuSWUq+mkKtepXQxjl(v?0n#fKMB-iyfUlySSz=#39e6UUY}&O z2>BE#*N}&-ij>Q&=3txKTm2EVY&P>$>qSs7woBKde>tJcRsSN|80?I(u-yGUiAl+*wws&N6B~l+~T(lCGVlQ##8kd$<%a2S^MhjPAtw zjVM!PMWW*J9V|_JixCU+zTrY1xlgfcr0-zUR1xVuH*5<_=pO1%;Hmif-$4C8uQ*oR zvFhc|>-Lfxgf+C!)8)dbSLn}D1@&2sFZE|(lgMX<@URxyA;Q(JE%kqhxWfd`LXrUewgj4FN20I6`CDWp)+>6 zLc3fa#OEvaq#o+CE~Y*&iXwEU5TwSx_`rH#JnHvpv-kvxVV486&ziR@ZZoWHM%K4R zbEgEnvp;xSNQWyL7*b;3C3g^1PIa7;?g8pz{MWb|l2MOvURWPcC`NKdwnNZ0cqAU< zTfz`Bc&xH-J4V#9#AB2@5qH#!uzol4?qgnbu#wBm;FmyFL6BykUPB8WwF zBN5+5uA09f)D1blC#LfdPGTgIL}Mf}KiFZ6#MCDpus2MID!^%x2|IjxoJu9(0(cv~;fdwIvKCoDX-`Vm#X^*0@AbmEpxX_gz~>9z$9= z_gz>`iYe+Dvv`OpYT+ENF-1LN9@k}DH*qcJx6fG38#AjFxo6f(!s3}T?uF~r$?bF7 zmHP04Z?rQ9#THJ14y9j2-)OyV|6HD92b>-bSXk(ZMk_ocTRzdQK5;H;C>^KpNaaLl zdTW9pi*{$zT9pr}c49B=nvqO{RM0)uuV$!zbqgO{B>k#N^(K~EcIMVD^zTmnF7l$c z{?9#6mDlBjkuzSC1kuv@5SBM=q%Fi0W zsYCO5o4_#vWIGs>P=#X6T{H-_D5H{=TIu%v%u{&c;fWmk%h5OwT_}3NO=6wBAll<5 z?m&Xs^EtH=9l(TH=~5Lk3Ar^RUHOUiD5d7t0W%R_3moT=**g0iFk_U)Z zSr1OGSbU1S5}h)qtrqQ$URh3E;l=%(%Jon00nAhS0eK*S-yI-`qrNLrD7AqS}dCv=Qwy^B=@Rl*M?aN z$4p2UeLB$*aF`G=LjpOY`Uc!&M`0ro=5kS61n3*fU~cI~RmwJ2yp+ z9^+Xmd>*&W9{p$(XMYwE5Q8&k4Y!f=*G+OJq|H8v(&4+>okILki(5sTeWLV-OtqK| z&?#V$MM=hj$O-Dmu`_i}cYfaX`T=T|QHZyRJdRv&+Cpt;6mmO{!*PY+WD-iNNoeLL zc?@eJ3a`ogsxwi45zdhrYIARg-2D3RQ?&6h2Nv7xGyWQF{KGvkjC1(uNQyZd(-PFT zFkQ|23#rRgchs<8{fpp6owcSw56v}#EgC7{1Lb1gc7N{T3J%COA?Z6ee92%@ zIfVljuo*DX%ccNZQEF2_oq||opRn1>p4)N!s`-4Nr+B|cY`kA5l6v@%!Y{s11KL>X zz=@STR&JMII7WRD@2EwkaB)Nlqt=hzbx4%`MkW<&?Qh#ya>^t$FRfli^StzW;^hzq zn*h|=q&cKsQlmbvgru}SugsXyS%ExcU|VkIyc|}EU8K4XA2vdJ7T!EI!5#tR6>2^c zx+Y_RG5u4S5E!imtMs%c62Eu-hm#YGk&6wp;6$avW&Ko)v!T^SsQ3;0*3X$h5z*Hy zXmz;5GMyqA#|u`dqmAQu&opRgE9QZ*;CVsnAdbk2;>o z$n&*R@zCfrdkGAzBYFV1xC+byS7SzEgku-elc}Q1U3%WFUjX zZSL&xuIo}4EEt>crE6M#hS8FrkrNjG&iVYPa!++AZx`k3!^;kOSb_r$O7wy3sw)VCA{fv**? zz~8Ma{77SHaToYAdW1hs!=KH=?)==>_+*&OD)uriAH@bdl%Bx!0`ru5pMdLJL()E>FVMn4!My^8soD6?Nv>>>JiZ0_0! z-F4M(lpew6Qv2W;2_Rv#SMZW+SYu0w#~vO*h+XDm*jRX^KdX(QO^qN^hWVMqt^Tby zL51W87f>Gj#uIa%%TPc24$MAY-!q?U~rJ7}ou(cb8`j;U_35GqX{y zoqdvFf)YVZ3|d@ugMcQedG|VgJky4}(t^`z zL5Jj{-MeQ#&UZfZ*#o-v3IP72dN2mKve+fA{wd!Va=Q! z19fhHpw4!n`W&bV0KG#)RUoXHeE+S$&Nb#ig}G5Sf9Tx>Z`F07ez zxd=-zu_x3LtfOyHBL{SaI2-Qu0>o@kK+J}D^1j)iz(AZB$a5l)+xv$6kpO2`UvD5)cFnv@(B)P1;lKq){qsL(9ANf?9mD}Ffd$hf4-lCCoUp* zlDv}iJNRb0^Udaa96ZU3;7KQqlHli_#J=ii{h0*0hd3@l9J?jYXK_ym~4CSOX8nGJdF)~QRPxkzDBKgWZ~=;ZLXvIu~*|8M;7Een4fLa%NzTVz4|jh zyU>vNSxC*t>`_lk4R&Qd^(B%_TAp?{bySnJA8p9B2SyEIq)fHSIG2Xu)8y6+j) zPyg2EjA|_V6!9~vuYV;q-jx~E9}!K0&;|v;Z1`bkRQV3{^Bw4FTK4^CRG%RY6#qM5 z`<_v~dfhJ0sA`?h{AQNs2U`!Ln{?74$u7*OvK^=e4%8+M?*Fm(E#OfV$-k3K0s#VN z5RjlKqeP7cAsQdSz%r9$;0&2SK#{P3M$s777eWT2fFw>rGJ6<_qKmG&vg)q*SVhHz zhe{rhgoh@8EFi1K$Lh((T@YOeD&+pE`<$6`Ci6%D@Be=H`{#o>ukNbq>gww1>h9`B zere`VpQ4Lm{jH_@aNY7JitTfFC8w1EIAe>dM1lIW0(BlIvXEbj=yDns)kp$o>i3We}Sx(`SAFa^am3JM0`j4dkKY)9<)%){Anb}Xs|3e<81>e;cVE>NIetw0TK zQMKPsOjaza#7p?Y5i$-wQ@$LahyL;WOEo>bbSXWYrbYFLVo|MLVF8e{X;CF8kjE;J z&z?o~kz(C^C2^XATT~|$4l;}C9zo#~hT=as@m`_vt*{5HJ)uulq>## zfRW0ffpn|&&#`GOas!$*>L$1waJyS^ z1DfEU!$dTu?YJB8P^GyeFIEZ9VA+g7{up7m2T)dMi(N%7N zj4#HTlEoJM$HXYModLpFK)~ur@;HSq2bMWB%40bcGaw}3e-dA1!Dazu8)EEuYu(2$ zS51=q**$1rQf3?>q>4`nM>6;SmMIm_D;;ySs{eP71`|i=!zbChiDqsvGzA(oKKR8o zfc>~Y{XBSD6LvU_r9(>pd8*u^|y4n1yZn?<#lhS z<_;oXCT-AdTq zn<+OgRFSx_+>+GY%D_I#M)^ny0~n|>XzdbjRfn5cp?v%+uCb7uz4j7V=#h#*hP;w! z@nq)8e_$^&EwYE-a822|3{T#c*{QwsB2N4U)nV$28aSUQzYdhs%#0D*nCnYk18JOC zpzzTvxz`eTz%c=m%Gef$+t(3_y)KTz#d5n{obBw~927NMevMZ6;*f6MMxJ}|RENCv zBVYad@E6x45Wf~91=8osw__CxZbW%5f0H2R@*AZ&PQ}x%U9Fky;^i8;yNxs19FKQ? zwbyO>=NWvm-uJyk^W8^}WM};!^&hPN(|Gy=wp*qOw>_e$LjOLn`9of2)_<(_^%t$F zFjKwMQ+Z(HXrE_B>z~hu^{M^78KVL1^Z7BlXKi^BsB%fIr-W-qtSl#rm9n4*;Y)9n z_8X;?h0yxo)A3IuX=tMA!{T#6iT?Y;+V8t{-{qqbGy&VE`$9fNq0?W;XYaCT@pq@c zxs)XPM3GW{U$^Foj$*=PR5nnRV;oy5PmY^Q67Nt7f?-huT+>|`8dz=AT$f^+4X zpuo-eD&NN-vXqp68Wd$5z3PHlmPaD>*M}|W5M6|c{%~vZ-4Z1B)*~IjFiy6@o&e&t zbiWN+K=h1Vo`cenGIeh*r`Px0jg!FLXwtrZ=&tSB>d@OG5RN6Z|I;1uEAi(85T$VP zwD_}pX*c-u80%R$f1I2@^|SQ+>DQS*6B>2=(a5ViAN>!Jor!8Kqj!+Zb?6@>s7!0-?-y@j_o@eZ~n~D9KnPqSrRxqJ{TL479mZZodDTZDn zy}Fpa%FIFXB6{9~eF0SWax0!#r7z*e2Nqh)Z%_+$R?5?{xU1!v#?&D%PlTpCcak9J z%QKa|@|7o2Eswi%d0wawP#!*B(CDww;~=KLu2o8+j7Mo`;)%9Qqe@Wq*L7Z8`u$j<8^T)^fXTrz&=Pv2zX(~QnAMJ_Gy-8cXo6jb`e?F*`Pm3>m zh8Ev9TLYJmj{BTMRqcu1a-$}LuKU#43vu#=JpEx(duoO0)9ds<8*j5wC5^Yk4qoR_ z+Z})sVT25ostk{~2{Hx%x@2cxNI*U+Bp}#xgdH{R#pq0Y`gnhxmK~k+ar_D@8q>#+ zZwWpVUr#kMc@JES0lKQpIO?ZZT3;u%k5rdkEq6FC!L>y8U?N*HP6M~;Ie}e0(Q#8b z+cl->r7w+seJuq5$SC_CEYE~RA#ZX8Lj zfIUi8ephUFEPn8yb1)c-)hwz)^Db&CJISpSW{7NaAa7dvoBGXaxU@h%BV7(oX3`$g9X0@BP^oCq$ZXmP@H2Djl0|Wk>t@m$)S-hu)<@)j{M6YTV(C+ zy9cF29*Twl?MSjrmu&V6JAob`^K{9^$Svu!0%6}&>Kk97{cDzVdlpo{_oQR`gB`aru6?>=X-4qb3GC^l026lp| ztk`jPH(4<^?d-5(3L)mK_+6!j6-?wvKbvmm`~M)i-=l1ZdxY9Epx(|W$xddw_tpLX zA|gkS@?PKDYrO1~5C4ve_Br;Ma{DDol=>-_4TY8f?ps=SA`LK}F249a8hp#TfNv(p z$J>(wap$DnkaOB9A(uy^LzepR?GeP7){#81LZ3Q6eS-QNX+})Z;voj-NFM*yA*G`c z>?f1$izouKbCa3#N^YHNK~FKnP;f|;1m&&TX}9jeM`F0rjUl=T_pFK?W{q~yjjz~v z-mn5^lA9v zU7Q`9AII(rOhBZUfFR}fo>ZxpUl)C1;GQm)KL~o)+rIL*>C4-CcUD)+e|9+c!jUa>*lHs&yH{J49t!n)>+gtGX1Ble}TR|0SzmZEGG?u7!J^z4^Yq&I*5Iz zy!!|nHxyDRki#tE*JP8p!ClV(Xz@74+@0>lIWWvb{?b7&@k+$26#iR=fl&(>R&gWlCMM=D@v-J=o|aUucxsg(0~x-(v2ywzoGa$b8pDIcTnMeHa>}7 zApQW_gJ(s25e9eiS2NkpTozwDNsgXDPuSa@c0wu0$d^@$PvD8ZuL z#7dEhw^C8H0am+Q{u^&)Wm3xToW+o8%YU)pE&uiYT53lY+0#0HP< z0ng2RXZ!+c4qjd?!A2z=Lnr`M?h3e3<#S)vswhAHu%7Pp>o@caCad2Cx16Q=o%D*g zetlF+pO8=@5DH{cBanDBms`!aTvTqo2x1x!F^$J#O1U)!m(k_c(Re!sZ^uY!_{9U_ zk~yTbY_~OAO1sHzy$Q*3%dNS%+*WSA4GHc*x;t=~#yrFTLsY!9`MA!ZH z5Z6Ln3vqo2*N1Rjg6k4oAI9}zq3V$$NJpN#m@Y!)BNe!m7t=2u9%B#mD@uGZeyMtoOI8v+0&xJd?BqDH@ z$&TZb@My8)OnbT!DLRJ*AMwQkrFs(v|9B$`m6yaUJc8T@h+P%R8IVT0fA$Ouo4FRy!dU1L zQ@If#&V~N?os1Axm|&xTjSUl6_^NVPq3B>#XGNWy_L8d8z4m{GPz86mojC}xR2$Ah zSBjzFVvv?2MV3}S9M{q4#vs;i5n)t%(h%(`A}_-oNe;vaochz;ksSvR)#&k{ovf+V zPGh|hP8q5^tq(L%|3PLUb*q16$^%_0^{mse`T&9GdQqR6dURodw=Z2LrXCT>9!FY- z zT)I9JW2!4lsmuK81(m)2_JmUNyu2T>GJr{TSS9mgD1ZtK3Y5C$1UUT}Oo>P_^`NkP z1@T2SCB`vR;#GPjVbjRJM9gBOHZJN1(hyWqH6^m(p8gGdnI5F`nG$HZY^dl+tg(A6 zxNRS{Xs!dn{=kPm(*yJ2?gapV=vOp=^h7Y|Pv1Qkvy=?Igp-6ww z`6?`)WAS%uh+H+87UYSVNOFh!z4#XTfVA0g_1O`lNR%8gY=8wLlHwaVB%>YUF1u76 zB)-vr-2g!Gjl?J^V~7bMEuTPaE?i3ACeV0iQI8D~$%ynF8)A{CpF^=@kI+#e7=vMI zNIfdVf6fI696;bO?!-I>h4-?6Xy{Ee5POc0fM~(je!s6cFLb#!-jK=4PfCA{TLOkwRr0q;9xN~5ewG%ic0{u^fXsksj%BcQ2cR2jz%0g{L zBLs|(;MuqVLMcjRbZi-OuXv&du!+i&(d?D)i*mHt6QeUIDPmmUA~&EPuFz*+&!&bt zXP?sIR`N<^a1*H5?p2brSH3Tp$wcy-D4j|In-?9)li#2tj!igXg0kcWPFr;IW#B3W z7HpCaKEm8vs-MZnqagfvit{7iM`5DE5B5qbQ@?l~qdO3J2PO4PE|Ndt&IE4?RPW1} zi4xrS)mVAu9BR+@_pgVD4=vIe#VT8c=8)`(0$C{ghkg~>Se~RVm&j& zIo4mq#Ku+@=s>xTB9D@C&jN`l_e1;m-WO@^@91k_jys?I#oSTyE@-J^brA)9H?(7d-vW z5qf%9`s+HS_piTy>{9EGGBEjPdAeGEv0nbE`D-1aP<$ZqBTrBnXe3Ee6GKPE&e<&Wz} zM?<6h-O9f!OU-XMhv!f0R{q!juIevtQbPZAF~8{9D8kmGX4oX#epJDbYnR?^9v_em zf$Uk zhB;TeJ0nJYW%GzFHn$^2yH3%~=4CT_AA$D^YZujZiv7O>7-i6LGm>DLVt)d|Q_w2K z{{H|5BZ#-VBkj@-Io3yikwX99Y~7+C#LGV7Tdw28tFJ)3OvHZ;v@6c%JbP-PmuIRW zHaZZ_!2AL}lv-t0k%CWs1$;*c-*><_RKb_v!#7VU9hna5Jo^5I0&&sL!DCh8{8|aIh*98 z=@tV{8>AsZJ}W8CWy33eREy57N<-Md_#ft_I4%71JLA7K41QL0-ame~Pi>g0SX|69 zch$c0=?69cmuUeTwlaSA>38S{8u4-caP9Xh8SRR+JQEmfI8eA$4@y=uyw+IXV~>-Q58%9!J`ciGh=+?AjLZc20=$K6oI{A*M$54V zs$$*??3918QYp1gb6!9nKG%b0%D#YQk6^AV3bqamTlZ65VAxDIp6GSwYBA&*4EVZJ z{$oH4KKRI3b~W*U&Mzb`+D-EB805)j`8Ix&Am?xtSqz0@+wn3q$tetjzNWqWJ)d%D z_!|SVMqp`d=6kM0`+IU`seNU*;{|3a4bck==P8l`SL64ZIr2`K*!mxNu#ng(o*&m z?J-4d{b^k=f&=W7mm*19B+W4K833cwB4~1n`9|d9Zk%-QcaYGf+EbLGeWYEZBMm3*R@333jq;ZytF($7%RGz?xR|svT)7Haj2^%BC=h!) zt%UAnm(ZpDMEw9_`|$0qp=REaXrAP&u|VsI8pU>?(-IQG?}@se`U8tU6`z#rn4`9j z@bo0B^yn6#2V4unsLJA0-S0=$qJUIoXsGHUf38yL3AeA7QL|+XN-W5nB6-nNCzGb5HAJO$8j;5AzbefFgha$wW>S4PgPAIBH=Zdq)8bx9J z4td{iPy*hRCkAORZzGArGae+sjuM{2vXSJ7fn_(XNv8&_Aiy-IKukk5NTdW%fwy?M_|#JO+ZV|i{f zL2j^Bspr0#BJeClw=PmRV(Z9~aN1_pYKPlaCc39RkBNBa{h~A*-HCG<&4TwADvcu& z*Pe97SZPfZ4)e1mf9-JJxzZ|G<1R7403Ay|u!lW^BH@^7!zqD-PQs&YM}e@Y;iE-E zaD@HvB7X*UZbdRr5Qm{5@!$?5S!<|Lm)P{Ew))hsREA!F*Ay5Jwv>ebX-Wv`bA`6o6&CSue|Wwyjsr!nhB+O86(JJ7)L5$T27p zkk}!ke@Bij@@2PDsBqljz_$rtS|4j8Qe9%b7SK?N58G`FkdX;zr$LBRUQX7Ov zevZPkl(iqHZ_(ORS9`?#>##%worMj-p9t@X7=~8#3@vmdHcawF*&+#sClgCm_R7~{ z(g4eWQrj-ZFC9EgtG`Jy98wcM(~pkD+aizsJGqX>M--)iqRB@%rKQu+$Q;tWO`>E2 zPYV+;M1Q!qJ@q6`mrgth^Rq*;#9dMiaISWXP!b8mAJ8(Ru?Df0$=)k=qFjOa*grA?^69y$MxaPlf)nyJA`BW#5r zRL?C8b>6R6KeM05;zOKsd7Ld|R8HW8VheKuC-tWC$|PtH;r{67MRqcx?Qp&Ab5!uO z{eTrS|7xsbo5qxl1dZ$i81UfCQF0o9G0zQ-4#k;<(lzw>Y&`4ainmhVN2{CI*{^h7 z=Jks)5|^Kx4UI1+;@;bH@*CjuEylnrsCr&fD0q0VtR&&($;A{dn5nPoy-k7 zrg>hR=q@w^-opD;ljAa*P}zcmo8`SkRV|+g`l)-VbWXv!p-h?HGlgdHR^RkGdp&RNe zJ|!BD&_URV?asYK5f}8G@}fGT=m?`|3+qza$qi$BnMfPsrAG_@W$Ok)ZwCrg@HZ$j zFbLvP4q!mH!3b_juFiAgjOj%n=-LU4YTL_Oq8Zf(K(!8@hTf+*wBYnM)cWW(a(ZE7 zl0D6siQce?-D~+_-9U&HdanyY@1Z>RFsfVBYe9a!Z8esR&wgHX&wg1)YKA8r7RI#I zjJa(&kee#o^LbXBH;OD+cOEXw22Gap+TvjDfDL7TyVwVk zPe)&aAMX)FqI*H7cRK&71WOLv#&I*SF#h0aQczJccOq(f(s_JBbXGVlpQfaoX8=b%?7@ULKfFf9*;BB>x* z(rzmxKZH;TXUhp%C_cxElS@<3375Xfr9H&AP9w04-< zqS>P|Gl((SXw)fGxrF3<3b0JxnvH(r;b@^UvW+iVPJ(@kA*B<}M?S%5Y+?-pYbI$K zZ+#!D$<;F0Z8b?#1`cl)N{0enTVJ8F(JqaTI~FC1&gj;+i6=^SX%?Y`0_P}WaGx#3 zz<%EDIuY?OV#TCqchE~DKpgWLgyq0ss`Vk#iJ%Z;jm&Ij8xK|tQ>3G%{ul&AC`9w& zNeUYWr%^ry7}!je%nHbWUcx@|p-l+B*9x<&R**x+LHL|Id&{)Zem)D zD?-kRT0JM6cU@ggT{=}i7A%ukSZ}%YmbzoLe7SPbsi}sxLC0!oz48j&!xjG=U9fq*jc_-^6$vnr~W_G9GtgJiZj; z@eUe~_Xso|f0>WR`_Wh_#$a#`SH|B>Z2WzxGXB0)JN|wdOPQ7CFdKt0UWL>evR29+ zEz}sGZ4MPcn)oMEkdZVt>!Jt$bTS`F|3NZJYeO0NAh{vPAlU>DZ1_QPgB;foVvxKaqm4Ji z50cxUD|Cb8=h^VYwo)khj5qd_*#u#H zBn(clHi33eo+DVkSud*t;k&&2`E}|8V_{YwtgSRyl%X)Mn_o}tQK%|D2=34hf}xnY zG6??tMSKwa$I*Nce7xTFE!qm4gZ_hHu+j@K$RKzufbl_aPcm1RUqX*c&r-aVIvm{~ z`09IT5L_{d2Emu&-e-g%jC>K(7l;8lbfbmERP=q-+mAmn`>`8a8OPD&+v8@?h9JBG z&;;4a$P7^Zenw_1$`9SGrIqMX{QF)jku2H>+9>5((i_L#Uvn&@cU&Y*_d0sRR)VKK zpDZx!>hkUkbF~a`HAcCyM@+hD2<$Fr5ALN`je(1g`K*hPxQBHyjxO5mF$r=(tlq%* zcqy|7-rcJj7|B;L(qR^IH3Y+qf|B|B6KIny%xu*N_8&Xsv#10pyP#jRBg zICCA+PKQ*Dd0Rm4BWE<*cf)ZG_kfWEBsKu+WF)mj;sONR|pbAyn^4wRn#iBxm zs(svrnwNn|6Jvc3-b20Z09MpJ&_H9-Y-hGzs<#ULsh%;h3qw*P;0`S4f%j#eogzt! z(qrVWa!72yz1`iPg^+}ekHHJfdqk3~Z zjzyhgVfVsM_=7u*@~jJ}MRzsu9*?+(aC;~r!sVx98IDp$@A@7ZK|waMNH8EDvhkUq zvJo_1SHn=ghtxk<^4`0G;+w^UZ^LV^vOny8W%0tm1gTc6k;jR~X7FYz!evEzMKdUR zF$nsbeCRvHJMxzI#Xokxy!+1&T;8wpf|mC_mA`cgK5xJ$iabXfbC1h*6uRao2!@vh zbN956;S_3d3JaJvJ_tcmy#!J7GLa7gjc*7IoGCul3exa!3?`}ZsV-nM>@9S_1e{|D zkK@W_*gvBHx5Kb_5=$?(P5N#t{UaBH8mOw~Cv3y^QhoQHd@sq6RqQvey)00as*3YE zZ9RsYoMaU{s#o9XS!MX+GFHvqERF^oBtUFzXi?MP|hjcizDPTiY^3U z$A^R zY!K9OKGXs6W3q|sivdb`y-RW!VZ1rl{Dl45Ua{zM_`kxqz|E^pAxV&ue zh7Q!mTZ`23uZ!UWQxtmq#VLc660knA)%sNFQP;(NX&~=JSPiuG+`x6#d>gMb|MK6h z;@hj1|LIv)#~bELr|aaWr>6XK_Y`(X8IBG@icKLUVENHw)4DRh{)hrPX$6=%q^R)B zs2UWQ8Fjf{0ruxdzRHhel^;I&+QF}JYN9Y6{7GPZ4p1q{%`Xz09_E$im+VqbD zLbU0hZ}Ab%xJUDYzVTA~YXQbf6z|{D_gd^Vlb2lQ7fcW^gsS3^Q9M*VgNXSw-};^6 z@3Kkq8;TI1po4o0b1;=Q4}E!b;!TRTuq57sL}X68pNKCqAU&-hN8}9p$w{uxkXkT2 zxJH;>{R4|d;StU9AJ9}p1p9F#&JQB{>y3fAV?g!B;_?NLk$&J%^_5- zexMiNs_z>=8EUX4A9J|ZbC+yGNqjZZ_r!m=yVl3A#f{id51QdUthaYm=ZznIjm3G4 zCfopnKFdGaFg~$Le|Jc)vll`oobfEckhHP_6Cl`9{uEsj=^V4@49uXWwhOMRNK7Bq zd>ftRi51Fc#hYmj4?_JtMF`=>wa9(nBCX0HU;(<_*d$MUwFd?inCGjeRQhit@r{ac zfIguZEx3A%(TE3y{xla>j5-mXh82K5$jPh#u3Zrs?mObIQOhN|-ebIou?y)RIy@!u zlvb41v#SHw7ChTsr^q#0FG^2v%&AW>Mmnz|zx*T^g+f(CUfSrW2ISYbSaJI>Ay< zSg&fgAm(?NH8&JjQ*pD>I|T;qee8O4$>13+>yl*Grdc2vTEk>jDfL;(Y#p^(ri=|h}X z)66f62hAqVnLK^?DiMKrK<95VBb&TWu<)4BaLXbqe_4%}QbQ}^HyR{_$RaA2fHAxU zprN$JvyfP)AQBgS~=ckQ&Sw#HiYAVO4wAVc10@w^2X zwOUMV_-)4WwW30Vq?T!2>p6L;6VIC;+fh?|q8#O0)U&OI0?gz(JY_LxuNgw+O4e?{ z#3CT07LqR?dLJUJ#YmlEDu@$Ia3Bc%BLx!zw+Q_wVs6eFV{YqBiwSb&95VGh z(f^FVoVRDt?R{@FXlTYqwf8h5#8&4`7Q^?S?3$)Y682UVm&{P%jAJ}gNeyKy~a({6Cq%-IbmZPDB z?+*-z0`~_SK0fpQ;OlX}N`G*YwO?I-aKlT%`-2Pd?KJy?;j94vkM#$WUi_8&gKfQk z#r_~4z8_@JphL-q&H+;DdKgPAc}VX!5fi7>GKpf>=Xaewf)7xeP*ZqESnum&$X z_Xl703D+O2m`eS@a`szClHm-i;*oviv?TEGH# z7_D59CnBgQmJrc0Yl?P^Z}12XqE3p>xK~hz1>50>GUH#-2vB%#$9FnP_#@0Ku+&C+ z+SyUjjPFWXlSArBMoN_4a6`MfV}!Q)TemEZ4cH^*YIXbvW+&$hZ6`uSwXr&+bDc3S85(h!;~e6(aIW6 z#ae*SX06~^)ixhTE8Wn#uo)*#ZEt2xBlNX%&C3)ur3Ej&isCd|wl{yFO0u5B3g# zfy;-)yowB{A{`C%LX(z_e-s*Mk-X*;jl0#NnDw6$G@p`iufsquG+wonHYa*OCCfxftSrMoCWY&NBUwwf{>fF25$z*I_7D!(#{}1%Vy;p|Q z7nmQw()cwHQnA4TTLn`hZrWp$uTBh{Gsf!(B2kw9h2cQ*A*^9ZqA7BzI0Y9({ufHN z;%jmTt!%AnH_{eRp@dF?uuHM+@(?pLjYo{Z`0k2{3k>p;7hABo#Mz^xF0~C?8ao;s z(sB-OIl)tbbTneW@`C%?HjC1un$PMP@A!5(t<(Y*xWf82+85vw?Z$W-*8JeFxOe#NTrR(|mUL51+fB&ZPb7pTnKWTi*4$#qWdchWv z0-BOq5}#w`i@&6U^~E{pR}E5eJVeMda9a%3c5%%wm=BZJZ|iH2R?&x!9im5y!Hv8Q zy}XF?MQ|^sx=gqf3~aDO!6H^)HyEIW4E3&dfG{+;k^sK1!4T8nx(0W#>@Ed&gW25} z+#NR!WSaa9^J$}3d)&%CqN3Gz;yYR} zB4QJ4_wMnrHE~7uET0dPqO-178l7#Fm4^V4zQ=aTC}H`hs1TvDchL#AP@0NLDtag) zTPSV7+oFdeCkdtRvpeGiq4XWxZ7hT!$Sprqz6Rp~yVL`x2OxBSXCO91;I#{{>&FiP?H|eehfs^i8bzv; zmq%f&vU!Hw57-M^bfQBjJq4n{!vjL83k@k{Vx&;|5N?i zK5j-wZ-T&aZoaZRJU9PR$hnCPp`4oo9OS0~H+ckzR)ihF!8e@sg-EQthC8>T=)`_( zA>(ZLP$*pj7Y;sFO7n5YMQPS?e~w(?I|9sJjdkX$obYe-tlSL;Ygi_Lw zMT;Y_{cfTc`)~ZQ7ihTi);`Xi?f>AIKSoIy=Ef#HciR8k4eq2K^KmCKlIb zZ`}cPpJ$r7Vg#fHMCxE_i%{hLdp8%rCa{=@~gT+pXH1Q$OI%nc7e52wJh` z8FYUPb-!8r<%D*T*RSVO+AiwX$(jn$>etmDhOdxS1>yDU{Va{2etq@5fcka#`#$}8e4tOi^75Rf ze(m>zUu!MU=+}!r0mthdtYSNpE;+_Ww56Yo&^ zH4ceSSHJ%9y+21Z8f2KFyUODT2u^%|rSP`a#NTaWtq5>~&?@~6*Vzs^)@?U{Xk z`t{2lXRcpAI}(CB{gvLQc(XZ@Ph9Z*FYP+I-kxIMf8 zZk^{RfC2RD8l>r@Uk`2QtX~DAqF*1rPOD#A`Y`=E(wv-1%v&Q&2wvj$ymj_(( z*!mPx@ivAs3c^*@9UTa)HBX!6SV=66xO+HpYPynHitrIllqoCj$S>NFon4{Lt>$SP zPD|-n3Ji`=2%&#T{90rX**RV-qV!amDjXQ;(|3n)1F_w2E)@G$P zF6cAS6ANz&KD1>n!~$-Lbdp%>NNrp=geK#X>=Xu^ya3}XNLnZz0(c#?CmygH4`P!G zR@Nbwg1d(W(08(pM$m`Q?!~(M4~VW@N1@dwV>BvI)p`bvkumzZ z{(RO`C^h>E(p4w}(-mA0F%DSpZ))_<#xqeZ-bx~TYh4?L6oW2;Jw`~V#^igFS&Mjr zJ<;20dRrgET1Lln)H0NJxBoPbR%Z-);ag4iEB&*#Q}!~Ry;{l6-VLYh@+--HCJf?b z1aDv0Uw+!{E8~jOXkTyQOwrSAU&-(Pf84&l!AZd)qzy4={c_BCaWe=CA$6;VUj ze}Vs(v(moez6sgB9#|Eief{HWw6Fbxwe8D}be-GRfPV#RUo{6b4J0-xQ2WY@X6@_w zKWf@nB*uu;zS2N}w|Raz$}c->OPBHNxk`5St`0-73fZ3I*S?rPN`Htw)=678T*lSO z$*)jc`P@?-On<2UE#)kG>HsMKW*qG&vuGl-(AoxCdxCA9JPI{dv63QAkY`^_1DeU$ zhg3~r122SajmKDdT1{VrCmX#H?ziKQZEhp)1*U`6G`QGUh8egpU?b>(+RdmNIx1yfVLeYO@m?JR`EC#w@9}BU@~Pf+vPv#~J$UelT?PAjl6E zo)I70j_XVckdojHmpxAOL_LXohF~$XFW1J*-VJe9f^l4?jR6ca33cSVilwi3XnmPd z(p!1-NI!>P%8rvBVoi&&YvuoEm&;EndHI9j zpDJ#g#{UKZe`J^NPw6uL%e?qEjtEqKY&F_Qj%54^Kp)j5^m`!vU90}Jl#&(y27mN8 zuMzS$x3-YPdE>{=Mtzy~p}lM3H?_<76TJ90CHfVgaLalt1g$H zQu6W##;@T&8g)xdm+(*RGX4ZF{!Lc|EdSlLDdI-HEAjEJRsOy&yIT0yC?zZWSVGR~ zo3*#6`QMPP^85BKqfGIl+;Mrp@@n{P1iyQ9iQiv-(bXbvpp>l06FcKaKgIS#Ct;fu z>#yus3pD{Viq$krnR;Z=I6g4&L|r9P2nxi|b+wx)uzOF0`JpWi7(2+V)pCaS-QJ-Kzs=5rjhT2MF}<#B!=el z(f5y0<1f;*dZxhwvujZ96&OBY5?XGEWV6qa2tx^*s{SVScFS~O@vP% zfv>NWU|QXT2T1-WeQ3QD2I+&T2G60Ti#uiKMSTqJUgJgmI-W)GHSGzz07^wh^ z4q4!!`k>Cx+psYbd6SRjrPe?%5X?z$_ci1}zAK?}p=vv;gW%<@LsqU|c>9<`@OuEh z5Bia}!a-N!d1?9+ufCb%g|C*M5Eyg_R)$9qlpjWa_%C$yGHf*J;Ey^3_%9-_s()Gi zr4jrn9sDM&{s_(f;QUY5z-RjX%Ts{gTL=HvHGQ$d839s*R&Q|lUx7Al{kjNzj1IgZ zJow=7U0(RK@(;3jF(K%sL-6LCj6aI7KK4A7#uTbFA>?U*Kfbq50^d10eB*TZE@JrN zP7~jYfTiVMI-$D|%D~q?n%_Y2u&78W-&=n=lkz3|;oJKQ@b%RdFPHF@Rx9YzfG%Xy z4{cx60hqRYa|oZH!*>Le?>>Bcp6f#Kg3HT|e)xX)8Td>(d__8Zw=;a_gs#5e_`U)# zZTVb;ufGnTNr&&~vuDK51%CJj5Wayrd~06U^79ek3)8q!gTeKmAHElV0=~gId`UWd z=bRb7RRE^tXENctK-V6sU(=TFg=eUIQQ_*(^(FrF@h2{RJqe*g~|yr<>^q- z6MB`W0z<<1ikt(?FF?Kk?}N7#A?ZKd+?oEpuZO08?|MD`htBIh{huo^ z&XoR90qB3{uc7ImS*fT0{L`TSE(OM!(tm$bXa3*#T4?&;c~ejS%pu+9{}u(t8PH#Z z0jvDxM>_hIz<-|TQPcoKw1JgX`ZBDJ3si;)+2!fM+rTp%hEO%RFwdP?i0ebRKE#65 zdYeJ#HW92nu=0HVVc_y?c_nmt_OH{IrvU-#JGbf3<@t)kI9ugm>yib1d6<4$^fJRF=^CX|Mw04CIT^KY5p~KDwk|=e(h(KlL=|zh8lIru47e*_r+UFNEfQ zx}SbpJgEEppL~||Q`3&l^oP^0&-m%5%>%nn|I25tpSb)7pnuhx(EK0%mR^2-9?*UI zM=3DQRDLFJ@67+?FuHZ|t9trVPlNt41x8oszY!jNGZsN@OrRd&xkgY7a|nk_R+B|E z1=h+%&(nHA7)t4}cDE%KZ*Ik;wNQCujI}%)mQiLee6>r})^f3zlo@Ari*ZusP+W#e znPyzfQf53Z@#Mjr>3>SNH{Kz~e?b8J5wHsN_?!0p3iy*)`5Tn-Q^Ww2e=(K+PgEnA zoJfa7mhwFKm#Sp48hvvB_4#o9C zTrb4cjH?;fi*dae*LYmxalI7ROL0xWH6b9UxJl^a7o+#z^_}V6%`{YSdLL;1zfG@Z zs}}@~5q^zAIJ3LYQFhy`#1W)ef0 zS9U#rL7@CwaJZ~L{Yq?eO%X6dgN<(Y&@4jh#v)q(b{PS~+88vv97vr|axdQEJg%3Y znTm}C81UF2dE+5@wwUtqkUU$j^6?~j*FQ%!*#p~+Fcz51U%i~R7r0Pb*CTIiir>Y$5zIb8rv#HD;W{o=vS9_Sa)_cQ3rDVJa>&7n*G z<#Ykz`Rwv2UF2bXX|K6`{jEQ(`dh@Hhp)d|`-HDQZ~tb7pvmvo z@Me$Yx0nM(;MI($h$AtGvWq5`4Y|KDM(Nbho8kK}=xXpC{TlDq(5vaRvriv0__I5~ zXH7IX{GlI*fgk96IQTDesWgYHN$$M<3!&t3yoLPVznXvs_hFRrF*cSp;M_J0bcVu9 zF%&M25#{M4aJjNP{Ys%~0uI(oA1O^pa;GOr6RvTmUjw&BN_l1qE~CpcN8@rsdFBnc zq?Tu)ad!va^(Bcki zMH9(5giQq75S9>3L)br3W&*4pDRYE-;s{;q(!|r}X2Z$%)$;l9fAO>eKZt#%*gI#6 zpSAC$Ui^ywh_$^9O0)A`vl)fcW%R!FWj1JC9R=G;MowOnD}ZhsnLlGs$uozKVZW z{jZB_2*7pJPbX3cIfG8t3G@52m$C>^;l^BWGeKk{F!+c=~=d^Gk@m% zAv8UEmG3G&JDH4}o%%Ywu`@k;nKlY8Kbc$g^_6-S>A5ukJ?UZS`C0j{^5-?y2D{E5 zegE?525^MN?_}Q~!gk*~R#I_;>yM}g_MO`|e!7=>Xg~XAX(#w$^xqS;U4XCGPpqRE zs36kmCn3Q2ipn1#|HoCF5xV>uj9X&9RR--8cFZJd3npPfIp6v|6Psz zCz1TG2wi_$nJF0)K=S?lEe!rrfA~>h;5(k>_yhUA^zDnmzrY{gQI^nV>j|CBKEqRaLBoIm`MFz}z)*gg68 zhaVpX{)o+C;0GCBFe9SrO>oO^d~xG)0vOyrOlA!lF_V<_9hpC$6?>l1GcEu&ORDN?$)s5KbF5BQ2x)m|+Lhb|?5@ z^!p0lzXXNP_M?V~|D9`iPRdL!=BM>ZUGDj|Rnf9V+8+d$iTmmxEjBeC7Gxg-)wOmapK$rRh) ziz9d_yxl=WhnB@4SpTChqMTMw=21Ge?uz5ByMK~) z)U*yW?#?jQdSa*6d=Z(Ec+l!lw=vw4(sj{R;i{&9+qKjw0g?p2jJtd z(zYqbTXB%5RErPBX6(g$+V!Q;SXV3H#FZt$wyze`izyDsCz6bB0h%X0pydN}yzdvgCO!UQLoCFV=eC>gg9YR8V zn~}neB+vn+ObAim(pJ$e@`#k#h?t7m5J)tOm^v>`bQhY1%je0$<%I~SchD}i3kldo z^!-u66#c{dQw@2-s2aibC0ZKp`qto$;QAO(!gL_3!MhU+d&=WyTF|0o<1C9oNciZe zFsl*e?0XZ>-gg$R^JD1EANiXGVfpWlk{;eA#4X$dVw?>X1KsKuH;E9~$KHeeR?fk$)W~J$SUU_>SIV%5ds%sK z&kiFcxwLrP-IV4+S8A+t2qkb1Xy{4V8jRqsK}npvrw!X4c}$$-J(SUC#o5h36zLv7 zBt*IgQ}h`Uuq?zLxbUbjqwibjkx>sggssu)?xjjIRjdOiX;m;;G!3GDI}69Porf$t zyvciOlZ$}-6p|yVfl%@Y%cmwi;2wgMb<|9_#LVbBk)h4$d$EE(L#R4nE&f@?Y_=1d z@gm$2uJ$p`M8X+w?TECFj&u$sng?1tBCM{_an3%xeBhV6ztw#XPOGM)KoE(Ck$|FS zxM>>M*K!8JbtnJ)@yU*L5p6xLhO)f6n)-x%zWWWKObe+gS%icotUYC05!96Shr-j2 zgX2m8)^|j)D2X^Kj?Vk_9>TUrps+Ve2!dx{7-x_-|GQH_B_F(P-Gb*Jcy|Ydm+2W; zgflyhz914|==FodU9j@n=Qg)MPP~}Y7 z&t48)7bXHWiUU*l4}Mj5i(k9e07hF|!1CF#r5iG0FK(ysk@K;ad1AZWRjrc^ED5Qh zC?Se?EG2Nyb_U1F2Y3{NqdV}fBzTS>@BjU4Og9?J`Z@mAjFGmN2phYf8f9N z%;3=cuOMJ=a$uAn<%5H;Tjk3l5ch*}VH1c2A<;G+pV52xNZhwO+jeUv*Jfg@9ZZbI$ahkRhi=$n% zxwzm4?-@V)Dxf~!YdYCM9Z7#AW1Ej9WQgc6p*z#P$e!0W$hx5)sZ7tHEo8Glf}9i- z1{zl+102z~zTdSggH5E0?ujvcOFY&?7k}4G*|6mqL6*sQd6pf|igx44-lEn`7#Jh2BH50kH@oPWl0Ydhn4f_U?F`eQIv&(J{5qlZ|l(&mbcMHvIEIJF9u19h}GPS!sZkDW^`Om|PSAO&I`9 z!VHLf?MJK^V?Edke&{MBtC~XY1L`s0I^k6UY=~ zD@l}|j=>Y{y0p-?_0$6ex6^{L6wmLlb-Wp?1Y=S^bS8?P8zF`}DZ-spE!UA}QCd!5 z5EftqmPxT&AZ@?M=t0<;gvkN8)Te2fle_ApqL)c=8vZl5#>(gL~g!JNU(CkRO zti`*fJ@YztiGW?HK#O% za-v@YD**wvwxQmL@xibXdSw8pw4yPQ1`g^^J2jvfy)=YQV4>3-wB$Ae{C7uefQ_dR zjl*BFq-KZoiNiyINviGA9=o)&bVzk&ImIfc z_?6+yN^C@sM5~ZiQzumVVsB6iwR|`)+AbZSHvC(1ajM1V-!0HJn-4;`N!Ng6oRD?^ z^d(WyMKg=VKt-qKksyDybu8wd5Nm;LE8PoxRN5p8MSkR2(j(*?@X<&O!aNO&@NPm( zc=9?((Ni>-MCm4NEd6)EG&;?% z2!uF14b~NDUpJG+UPmdU=;a3#rg1A=sLY6;0_qV4-C&cf zacKM-6Oj@DFS9SPqUB$n5pQvQiK8t}2)3HiJ&4+Z1=^1IsT9d#3Xa>Yu^y|ADd6QmrS(bjeMw++QZ40CNd#3l;}AQolUBPOK$-P2I7a~kP|h5AO!vC+}MRs2YBhtxy@00G`hCk>k^ z*!+3-lZ&WM1mHCQMHSui8StriD>32LTeP)J@}}ia-v0kt{y4kMpIuLNmp?z<+lfEl zJ{^=l@K^BGFwM$NNyvW-(!}`MV8coV=DUc2&te0lE8*`7_iPYnzkbt9=Jhdb+V`Lz93X?)xzh9sybX`xvxJ+>@%tieno@&UR62rAqbCg(Et&Y1;2 zif~i(@V_ztNA#iBry3TH#uDTzyq6Cmpps;(dOEo_v373bYA3t^?swY=2C~Ii#$^qBQMWbP`vKsXG=87TsCjiXPj3yX%BW6w+<`>!V@}ZIj7hN&E>~58WKj zj#+dWPd8glH+#Qm{KO$O(19j9<&QAEP#=|QXd8?sW5$lrCV1{d@@^tn`tFod9aib) zxO&_1OQapHFU(jC-EQ4L4GitOy4(ii#nz5P08W%{x8udJT9ew8@)`^yuaI`2ErCbJ zYNHB z<=K(-79(_I78K3W!^DED{YQoV2owb$Er>c!+>-D80~0SO2%AB;9LE)aV`_Tbu?9&E zP^hvk%EOJB^cs#euuJ>x(k}VbOtxTl+F=$W>PmKCIuL@p#XqsJ*dTtoyY8^`Mc2!x z9v=tMKpdc~4r;#>R&zbqf+7eB>zM{ddtQS_auZu;bG0Y8ecIW+?}q&5@BJ0!ch0L^ ze$U6%C%;23`yZ9xewY;rD!=`&J2Ux({zllYUsZ;U^_HlxGW^P_Gm_yOW}Kc3-%z2G zVb>E~li|w_>10^xpGef9Ve6Z{{Zj=AKl*L-%{XJ}!y>HwM~}zHDn~Iz!uoF3nNp9P zEx-79fQ}-YI?@(E@^z$tS31(2^6tB+qd<5$-?>*GtYRI-8stzqQhonP7zyrPayG(DSE9 zlehl<2l><4$_U4wyo&Df=ZQNz@u&E)K>V2o0}RHtVqV-6|2^!B4OCSPwwL*AUv%?_ zs$M>Bm%fJyu`-LF!Q`H{8r}2r@J!#i$a>rwXRx4KyqsDE`l>2~4HPP;Epx;6#}E#- zHaey%Sc=w;sbcF;jMnXv)gnqc2yZrfi+V6)3D)((>``QHxrz2Ab^!))x9;l3B$8zM7K1E!{olzW#IM0aGTv>7|HVY$L6 z82UOUhD=!v=uoSK{#oDhqnsW_j6>(Q@Y_7x+n#!AVYEH*6deI|lFX!PVEdq>gU%+k z6x@r#^`yd)k7tG`fpCzRhP{Fo(UoE-xKxxfbEJsU>W7DRG-BhFl!+4d7b!@;I|5v| z7(=wJZGBN%+4&`aP*?j3Ba(ll8IvQ6{$}ls;=? z=IlCo$v&N`W}_}8zRErECUU2+$kb-2XpCirDhw3AN7TlG1cVk=`GvEQg{plhGgf5K z@mVF+&R%Tfm-@N$E5%O&N|=|1JR~j_mCrZ8J9B&m-NFa|#(CQDC5@*s@|PN0-+qT& z0z{9d=s3?2`wSD&A$@|8u_#P94r{*vM)f^3lACL)5GwnK(mvUV%;iQ3{fHQlsi&MW z6&;Q#<`iP(PvJ!m4j*G>arb{TSP*Ja!6H;KBo!OrnZQyUV4<-!(0mgNjhDef6)PVc z8?952eV4DiFI1jEdGAE#U%k8o&#b)rs!%}HAH)4s398pAl)vhgO&TW?^Y_5Dq`H(i zJTwQpw4J;=OE7WZ^X|}ioQ9js^OvV_5WS;ds(mmv7 zAr}bqvs4-#=;V{E%<%??MIm`p3mwoA5I8=i??B5m%i|$(Wd0N(C)_TPrPX;>LEJ?G z*ioP7o_vbjF6+qc!eC24#|ed-1x^;ljQ}4}is-Q>mEQ!fIWUQAISSbs7IH*o132h{ z0mccEo8Km^_*z=MiD=Ig#2rEvMcYha%}R7V7#D+MM&=tG2vG~Cr`;0^6<&)lwfwu3 zhR?idZ4FKz) z^lAGuW?I=*sc%G&hY3kOR|@xbF$%ZUD8`L6g(s% zvMuG!ZRo}1x5^evGGYwx54I9)_`BS z`4naVNzwbaDuz!9AM)zwQyM523SU8~X&R-HUTCKx>K0-u;?;Lg;+UG=uC z+l65kZ-0#m6FyC}x(Kcp@~+qXWJEY(vpAd>g3;%zYhGt z2!{BRB0u<{eh%c|3v3SL9EE{7av_FNs)7!@ev0PFyc06-JHdsQ){|1=GiQl>W{jOO zyqWl7D2O534n0Go{|c>;^>ck)m+EJ2u=*KJl=TK>sGpRe^}`Q)U%jr|^}{okQO0of z^Uu;i_0t4bp}d3qg`PprJgnBw!JYd08U1HgKl85xGf;s!@&OElx=}wD6o3m+@38ve zw7MAOyncu;A?knn`3J`OIP%kn=Fo z1xU)oKq{HEAl(vs+2CS4qf#}vn0T`Sk_qW=Ju2}475+sKH8><3I+*JL5o>!=fkBEz zaFXo>7&a(8Gm)m1GGjnVVk41o0!@GS{J)FtbY%Bp;cG2V!W3_>_Ts8 zQ3iaUZ&BKn%|h-Cco`GuoENi0`qDuY%GAv^)X?l*p4A4&wg$)4R&PF_Mz;m_oyf#m`Kl+l3ry70`mSO5555|XL44_rH zm-1GXEiZTr)9(&X)>@2W8mZgH{MRn|Sp3gpwq@h5i#t#?zn}Yns{LGS*%uO0ighh)(7JC6b!K=p*vr z%%L<14fBRgztKo1mwxj94}0$d7gg2$jSm7k0(!0+0se0s|J1-yW_@NU>e>As09(^AxQ-tXG`oS8Gj z0BZUByzl@2vzT+v-fQo@_FDV8_F8Mp$}{D%3nXwn0~Hc!0KK`5(^^QThEg*E2a_ig zU8;J@%5mATyOAyNODyTW#Mv^ue2|<zNg(TM^Zb-Y)UFHL6*+V*%^-!8_i%Wr@0>bM0U= zNH!?y21@$Zt#SbBb_T6VSGO$Ry7kc2?UoOG>J~czqce2pVo<>l)C~piaJO#O?8<&y?XifISlhVAM7cpUQNgDSp-)LU{NDw#dWJDX4ELM19{;Y_Z6%T;F-A)6IN|h?8QW&Ho0?+LYE`Y+#JZru=4eJRKcroElpqTj_et;qiPe{Wsp27r8uFgSS5vlu%3d;)Hzy<5Z{lhb$<^p7YV+*w9cNSY%`@PE)mWAy@(S2ArFn~} zM|kHJUGtRYO{X|gR8@Qr!FpGYM+}REs~^z4)ub6TQDEpAw}r31M&*m)a>F9N`1-vI zW=uYQj&ssIYhP`_5{!M0-$Hhn|L*0#JNfTc{<{&sdoF7}9<~O#$3xfR%I0I!SpWI> zI#A-8&d1xQbDsKi=|J=GKiUPJkI!L6F6j8p+kxie$431H^RXF7{-yKrSp#)YKAdBA0L=j_YivR=HoFa*}rrBnfcf#^7HAuG#|6S6LG|R+wbC^1Xszy0`cPyQRvf4kyW*aKQe2T%aVq7mDzr=!R4<0M#M(kZ`>pzF{B5TvYs z4a|2baoG6bP#^cOS(PK~P1S7!Al0t?8h=Ll8MlwwboYnR zzV>~r)4lhPRkGcr#(;~*z{f8(PBpMWFZRRL7nzNc5-(+5hhrr7cAL^vpGhK<91kOt zsv_Ly4si%$`Q9vcQWhb|0*N3DuLJ_QMOhFfyEEI-QD`fO@gt!-Y|adqosAT$Io2BK z3?@A>_3#1Pj0dLzBgjX273Xf_${o;bB4tk2!CTaeRMZmegnf$YR8LX-D5R>89ik0^ zsCF)8lR=lU`N8x5675D&0?Z(dV){jWGL$g>QU)mYiH-rl_KrM%W)JM2@zdhtSI zH&nhyd7UIB15rmC<@M+l=LNBjp)!r~dfl7X?Ua`pd4aQWY8$AJSR{q0#7)g4J?-ic z>&h7R@+wt&8bj+$nO#u$fYIZ6F<{8-B}i*%gt_HmEy-lRBs)ZsAWxEqkVNgkm(hRb zzV~PQj{?;umB{a5Yrqp%BEszd$f#|O0}F@8z% zMUrAqlADo4?LU0}BYAk7Zt5Y6sEOq8Aosvb2rm8a+=k`IjXo3cka2ezSa&W(a*)Us zCt}rA@Z(B{Qmrs506ROdV-i4ArvP57D{Uqg&wBBhV^`)@fadntx#f6xZy~L5J!<0l zXYTSr^K~3vGKGXUu8570hyYIq&m(v**;29PkREf1>5w?Kt!EV75h|^ELC9PYRD4U6 zLAzaCt=05N$gwAKtZ7Jgx%B-L^*J;arLQM}P~iIPyX39UZwWQ(GxydS^?7q5a(oy$ z)>pEw*}go{<_^aZ9ZHk^jgNoyNAXSMY-;jGDB1bb5>4$!Cm67M;x=M>><1I1>> zIg0E!7cn(Nu^8cu+_NC_jgO@Gmil<;8z_H*^EW!Fe7a0pxzn3U(w#2gOO=QaAQ@!X?<|#kx4z6v?Z2IYlf2#vrU1te=obK$t8DH zREkn!k1d8dYVZ(TbsP`Nqn&IV*3+_cf)UywR^@o1aML<^G6g2Xl%OaRXH)#Z;M8L1 zEGj!lk8UriDaufzO=<0I6PszmkrVe$4})rAjLkWaw+F1awe}z68;En(Iv2kp8a>f&6t1s~R5$up$nYIKq^fLfWRy8b~JDBsCjsvOAwN;}7SR zPsYiL#f%#q(55ZWMMFImOB|kYDRA?FzZm?H>6#@Wzdy9w1{f_>IDy*DI$xlzy^>N+ zXRfzFpaLDJ{q>$`{Dj8BO78DxSl5hW3msHo+vl2N`_%cX!8VDojU;Rhz?O_=2-|{j z*P6DUoVyxqm!j{pzoh}&=A5>n9NVw%xz^Zryee#eqr;626M$_Cjx9`;LEHFij_s7{ ztD!AjuE3fSwk029|aoMi&f9Cm~NMnV-Q2+0yw_>51=? z^t35`ZHcpunYY4V3bxUhndrvvQLvKR%PI?KAi|k`8?r}NFZ|AVgZsgvJ)^ky+wK}4 zoncePVbqw09p_UCHsu>SfrLOHHfNV1UcmCGRtp5+s-=l(So4*wZ^lQxD^QnjVt>^xp<82R@ zF@Fai3p{_vj=I((%fqLyW@O>>cf)%y4(jLcXGUIYY}cQ<8f^LeJ!UMh)z9C1M_g-c zn_LyPeExoC46xPD-`8JrY$yDBHMHgP_aAoyTmAe!?XGK0+y9)r8f^LeJ(RH3&)?gJ zUu$fGuL|32%&%c2KH6h?A zYye3J=<+1F(JzTZB-!9eas!g+^0DUF^ec zBsmy>lbr$P%x0yQ5Nv69fba`gGQfy0k1DLjP&xoMk^-2Cgp6s}{+%TEA<8-SK#be{ zA@++CWGoBi(m|=n&cJ#%MPqZ!k+BRIG$yMBBqqwRma1{XAk&RIvN~9D&Om(~>&jPh zKm?SSL8p5&A<;>ju=Px_FkLv&nVT*Ylj*`ayu)-M>=r!qrVD1)&q7;Z?8RU}1N#NG z>_6OeA-jF zTf&b-3NjGJo{7aR;0NGKX%c-6i)#YR$e#xkK*zv!CRdq_AxUfkQDfa^{3OTkQM*!;+@-l>qc&VZoCWBT*f!x#o&=Ld1dc5IZ=PrplN z%@#_@<=n9COQnP7`?kVCKsv1SVn}9(PGKg_LIm<6rg?u*Hf1(Uh^YVYu49HHTG%*2 zZ4Qn9ye)CCDf2GAM81yLuwZYkDkm|4lr zAbadq4rFsMqYYA6wEG_>)AAFF;ia;(qkqa2q*4yrAU-WR3@pj9TB$B$t)r_??7#E| z&hVW=LcP*#_J`X|9fn+|z}@SLB&oAyv8;rCTZq0!s&+ZiBu=(F#ThYtFeNEpL-Bnk z_o%jj+oX|GwTDc^aVMPs$gu_G^x%F_VPcvtpRI&754kFoi&;N8cwbWD*HXdlJcV$m z7Ast=K@U7Bu|g_nhbTDhlya_v3m15=xs4%{mxID7Vrr6KsGH$wTz=@UWB~=_d;2y zox|lHw{;Ol3>Z8T_eqW$RaRxtlUj+aM8SAapej2yaAuRI8xcYcJDWh!u(71$4Z9>K zno<*5qJ8Q7rvVj;V`DK60S_3!>=tGbl+g+`qm|x_aQ>jx56dceCJ^Qa@WD&DwBWe_ zIgTyz=Ao`zNsmj){Vg2ICc_A4>IEIAcOxYEEArHuqrOUlJtdZof%#Sme+F)MNhKL~ z5KW2nYP(#Q7RtaiGYE|WjUfTEyxcR7w4S7#GcXymQFo;AK`Ed>4MemT*!jT^ zq2%}kfY9bS%GN!BdW#eE-AkszfBjT`Qhm3(1S&yUsev;|ET7hidOG|{G;tvn+^`JA zgBye$W$wp_lrSoETjH$HDN^ZNiR&HQuraQj2!6yLuw!0?ly5J4eL|?AYM_VY-D)Q& z4nc?+r*93$z!i`g*_*ixQd+o$a^5u-r=G6Wd}>e{+9ytmo;k!7@w)7a+Cha-OQ43d z4^J{{5g~S0o)M!pHI zL{E~M1xcm_yq`(UY$o{if-Nf&!PS)2EIS4oW2zpPOdEKHNfb#v5>RmRgcrNZTF%{h zG=ob#e!_w*@MbZ4)6@JdrtP@FvnL@1TWR=-ud<^2YMX+Z!%Uh&JwcL=xPEy9+ zg||iuo=jHen2!b;<=BQ~X=SJLy}jh-G%Gy*fYn{dK&z@4yj0)?^Y0vZ8X*u70B~0- zEWr1wkSWSxyXyn;)0v_qqj{(B#mf4g&wZ1C|6$I!RZRETPHEG9=7?n1_~@YcGw|r8 z&Cl3`B?TF+iCdp;oDMIO1DyD>xv@+tmi74t$PIJK)MA*&ViY?@4q0ibp%hHUgUG+e znJ@kk7Qy?m?tq@0hKQ8Yn3$;?v2Df`0rc+{4IjI5Y=~lSkUAvR-asbr97wK9w*;iI zV+HB)mqEa$Axct%NbcFYI%KMxJqwON`)AJz4$100L>Y-}g7-_C2RE=L?s>X>y1N)R zoP#JFVH;A*@adV)y%QZVQHs0rW^WR_{Bc+z7x?w)WtyHf0pF5Js6Ydx&1uKySF9LZlZQ1sYD~4Fd8P&u4iGi0Uz8j?{;pOw;-Ak2H19} zo@)Zzqb5^X+Xv{%LYW+QntG6f9Sc^f8IAU|-Z9#x0b0lfB$C5+^Ip=I;MyEJ*rIWS)kgvw zjS@SS3e`s%GH_+@^zVo3XE6KO+;FBU zdSIms+b|l@YV+=V?*-7y)#OY+5}CA`cKclhc%Vpw+$4FwTv|lLKriF|by^ouhYR_PTC?4(p=#8Ja4t26bJl)*;avHhe&Gx zqBB!y92Ilj{ah}0_n9dil83Fk3!*t?B<4my?L#ABGnaEQlk=>A;$aH`C3a5t{CvqR ztuhhxNrGM{piirL^00J3LtF&?G_>DBKv6?nPEVwwZ}zQ7)m2T!!{U%iL&OBqv0oq~ zM8ym$B0MbIgUJ399z@~@`Zkf}-?Yk6*q6g~h^$Z%S)(FC-)x*n_4@CkvOMf9q+)-6 zjPG|^JD zlCyVUqEg6S=fAJ=-^Kj*@A%z=%wO!S%Y47n54Up4oZB12UQx}Qhn1#!#D?+}%0mv# znR-R?kVj3_y{<$a(u=1EC=cm~C@v4Vu?~3%pKoYQOubJp5XlC+$^Ulxpq^de%3CiG znUAs3D-el6Z`1a4nhZkQcw=i%?$$8Jid{M;`&12 ziBPSCNCc9m$$bOLvML7%naEnbOk}}IolL~g95RvfeJ~S|OymjR=-HraGLfYdFIy(! zrF4BVk>4w#P~{=>ArI+m-QyxN6@Bs3Vg+uF>hj@vp%0ni0zD#+@I{7bY0&J?%R^R@jN@_)pOJ?Qrm{Znt}E+*Rvxk? ztyXzR-eAJ&>f|9q+VXbsr{p2zh>5*)+f~RzQhvnB#MR{cTWKHIYGU+d$U|VZ#Ak zw@_rSNENB3Dx{p+BbAR(=`&gBB@477adv0%<>~E7l3>?l#{jU8<7VO8;U$Ac?nkoQ@1N^ z{gZP6$TX4sJvBKGlPEd+2Q=0TSpolb@?Qu4eFncI6qy^V!)?P%Kis$gq_xO=n3_2c z`>-DgMbaH>#bw2dgw0<-eZRerPt}AV*|arqjfJ_{ZniwEiDB&uY_8H1i?iCpm9Hi} zha|5h4Sbp=9sy4y;I~!a5ZtbclkryHM-l3FxWf$*c#}I^e9LT73a92PUlTPcAef^| z{(5WbBX$dnpMi=zgs~<7ewi43eDFKi7{G^B;F|bNn!)Mn!Ec+L<9G2Z4Zn$fxr`|w zeg%&Oq+c2pNs5!eFS8dBX()w!jUz1ziJ_3*6!M4))0{$Xp^$F`Ojbv_rq-A8FJTn% z*38xFo%R}ymrwVtgF)1xr>73fu+{X_9|~BX&5s7GPoWW*^~b?W0D6b`V1;T-B;Wxm zutx7r9$bIR^2K%J5KeDbg+}kwy=$j;$H4fVY=k1eRVnA!UMF?aQw{iSCE)K=U=6=J z;I>P&*O7kseKeTkcjCB)--tT!oAXFO`lV8ltufUEpx?Gz{qVbyfU!p7z#4u{J@|c; z=}W(s0>2awe*aD6^pjT2CBq?)#V+?ZoQ7<<(jy5dXsMJ<0ZM4;-#mDy@({8~Ckyd7 z_S*_Tf^17)0A#LP%4v_0S6ozq?wiU!dW`Uat5z(o3TaRtakjmxsUs}9p;D0jYkOR} zXu$}R?6Q8vb#W-^+Z_!wh^k5><7{G4wi22696pe+rrvpW8!~6+&Y&gaI1C?9*AQ;2 zlgPV`BOf6U*2K_{*#HmeZa1#}CP(I|+w%KSf@_G^v-3A-u58yme2O4U`yIJNcSozY zZgLV~C~Vvn#nBlUk!7QmayrAX%6*%3^IrCU>cs@UV}O3GeB3^83@twemaUEy3^io=2qu@O#@M ze*8Z8dkuaU{t}SiYdh%q{m7s{&F{FIua4h_nST5}-4^`*Y>bEB!wv=FciY&&{GNr> z#KjD1{w=5Yv5NEi@qwJ*Z+))gcUS`PyKsu&_egyvdo%np;k@lEGI>DFgokav^K$t8 zLwc?JZuy4b_lAPN{66%sAHS!auEFo+Cj#<&XL~)rpGyAI{I=XwFTaBV_3xs4{rDXm z34Z@L+QaV&2LkcCGYuyJ`nR)?EBQ`Jm(*x}nRhu>!>)ynVae+ho?aRui0w-5R8`!oh`p?T>U&sSCjy{ z-=&}G_mR(`LdWkUKHvHC`&A3)_os(-{O*OFQ6VdOMDRODpNac#f%rXEWb$`4 z6VC77v3;qV-|g?Ohu{5|34Z_R49xEall=JI?B^Q%F8d)Mzt6(sikIJS_xscQe!Sz= z^1FA2AHTab2ften_wZZU6NulVXh`wn_u6JUevjnyoj_`$o9b` zh5GkGeI}BBCY-kqi%kBhX2Qclk%@=j=-t`0*wx)w&~<``+qAs!>Dmc^i$f2AebXy~ z!8OVsVTK)$>#&g^m)Gh50(2K3UZ;PO8v@gg6dyQ(?NbSA9>zd%Q&9 zIealq1yL5K?`xqHa zW-*g_w;T`ElE70=HvC6=;S2@7)|1o$iuwKEHt1UAKJ*=x4hV`!1@V!MnmI zQj^-!%`_a%-9}8Iv4MT_kjgF3{m%aUdgk8C;n%X41-}N(7yO#jqkeuR4i)^m5jEHN z)lq#XemR=d$FI)!`|)cZXK~VH^J`}MV6P z!-HeZBt7P`Zi6fE(NS45cd(7I^BkuBF{?vQjK2&VSwI$Exomz^YG% zcv#iHG|)gAaUCZ$-}H)Ub1Kq#wn0t!B;!AfKGc&Bqsz;5!)P#eRfWt+2A~*5Q}mha zfDQzv8}Htk51BWJOvb61@UTs{cseHMwx@sk^ZU!Ob@98=V!`hZ<^|?=>3BbWANjrp zzh9^b$nOo%^zu%fk0<+4W)N&55(^%43OwrI)2YX zIuE})@VP+8D!we9aVO{Z$~`)Mx4^EdkS%#Y@cUkUCgps9(q+PV+g)Vxh?)rxD~qYY zZ}RNx%WbcG>xa92xUOFvw|r5sd_%U%azFXjp?myTKJD8YEMI;sAj@~cuGY))r|$SO zEa&nqOKTsN*DBu%@{?~B4fSJraAUCiM+jh4mQUCkh~=GWLrYD+%i@WVgK-Coi({ys+DT-rsKfM_;>b zSo^phLV{%2X6N687g!P%bfD)2Dd%Y%PPqoS6RV}1ckl}3XHp2YD^*Zp#TA}E$jW@3 zsVp2TO7qtP&hF}cktjzuqo$^~B5=neU90ALj#9IKz_tMi>D?Aw8ozU$5ul03CHpR_ z0l=bQ_(6^mH;KIAd>vMayV<`<7Uv4-C_8zfIQ8W&945nCClxf4f0_Ahtnml9vA-RL z0I+LM@Sw>HW7P?i{;o-%Gs89zdx8vX6VY-V@f2v5G6mH8%I+rf+FCM>)pv8M_KHOOmlFpRE8z;5sqv|fomE@WW~ zK1RJHLykQz7hizZEH_yv4^FMZrO|X- zG&dZyD-FqmYnf^$2wy83oT@3FZIfngr_b*>vfQ&P^T~3LylE=i;3?P^Oc#IZO!kO3 zXl0Hs!FSR#*6h>lk9Ku?(qF6nnVIrX+<& z+G2}|QLw?EIvf6HV68U;518v^3~_~6;5@=GSlT?Y8SL9|@?!@B&6EOsl9AVZ=)1rc zWp&8@^#0By0-8@1K=Hw{UD|99gMR~_3>V$nVu1y*w^*A01G*iI9Yf$>BB>c*UgW7@ z5~u8{ypuXBY;b=;ueGhytn4JR7q%lY!Pz~ zo$#?$*p*<8YcuzAtfcY~IoRWF_?)i+WkI=4Zq?+i*L{?SZorafggF-Qr0 z-KH+QaPvDqTydOtXElm1svJn;nPRob3cAAqIA&F>W9$=QG#$|ZSJzIv4(`X?P9v>i zMp*1h0~>iGbB0;-6DlJprDHu60Eym5(aZ6aaw_p_C-+~j0U5TQhAcBK=cTbtR$eH? z!{#)S)8+xVTnekC0jW;(xFM4<=w~&wNSpRnjimL9Y{}v7-^d>j03a z&p3J;LvJzk2LBjX2+*6wotltaG!wU;2hEOlR0n6>CvC#Q5@lzjZ1%6W`Wd+N2oquQ zUZuDyiI&z_wIMe-_GIRDc10mTYI0++9_Q_iIagxsmUuF&Il);<222T(d!kUKGz&Ke z(Tu5xy3_PElct81;bJ4Qg0g}*5042RMHZDmJf$uW-#Tp<;cqRH?)({rJAZJC^BHSK z1AeoSluHJ`#Jv_`bV{QIJUrmuOPAsZPTGLHL7o_7bM+=Wz0BL~a2p=y-T`+F$`DYa z8N7>wi-@-bS@OHf&HoIdx2YD{l zzTY%>ChpR&s_902zySK9w12KE}lE3jV}tJTo98Bol6d2SnO&2`yTW-5Eoz z2UpTob>`p7h{<+^T2y38?B0~%vSj%C(Li}aOLCf&0U5L&9kU`RvpKEHfgP}6&)<8| z&7**^V@Hs4KnAiI<3=hyt&|d?R81OzXrdM9C^+}&Yt$f;%PmsF00##W#2HB zp$!B>8>BmLk)4AkORM2xtY&_Lz*0C2I%`*AD64+Bq`(&YyS)DrygHeu#>sPO!v>z( zUD0<`-E7@JOtmHcHZ=+eZmF4}b%PnTpuq;r9tLtA63qUxJLX+i)Ezc(pEj_Z;VU46 z1H<7zjDy4bgmc(rR6uYY^>8*r6{B(e0ea&uTX31Y{~UNf2)u`%vO$9PgA#1}FWH^g z;tb;KM{^jIU{~%&M&Q_>NL%bDNXB_TC;|Joq2%mw|9LwNHEIu$A_B2lGhEAJllvY{Y ziCeO6KxnEPqasE^w=urR0heb<)ilg{Hu>tPMWgamL}xxGJD!?s$ZBelR_$fuKj;Tr zRd?1W7;6(SOk%7xWey<+mzMlqHU%Cdw`4}D$5K?3Jke+i#u`ZxgK#rtHx(Vb%TYW< zrZE^JF(2f0rQ_ApvTKZAR7!8FsPcJKd7rXntN&O?6eT#4^wVU*OOdrw`k~M4%50KuO-#L{meWO7j>B+? z1B9t1r8`j+fcK}PFtp*VXvoD|k^eUDU22wmYV|@)F&R|LFk{A?+TSCp$VMAi&~<-} z|J)AJDpsRCu_*IN<$^7?h;LCa-()^wQzEKaJ_LNKh2WCZskr|P8-FaP8oIY8R%N!A z$;AS8lLL)fO7gf=J*`_6`~?m|&I_WcESf|f2^ISb&M#$Lq)mCmj6FsS_844CFC02R zG*88_`-iA2@fiA+S+SY#56*uqmIX3PYwlSVh{nq4TW|fXS5<#fNDvm1Z>LcGv9Z6p z`iIn0f3ASU>p$49{vAdAKl0QcTQyI`)fbYP@c!z5pAqJ&RJyr^UrK~6Hfq!Ag;Nlh zJ$V~0C2}jrRsVX*bHabteC}dP+n1M5!|(;iS#u%xQ_1l6p&-LWGz)Z<2JTYqudB8w zrF82bwK;Tmv}`KVu`N#5%dQB&({LfjK8w2o{JtVR0>P#RcHnpKmEvb1H<{)Vs~JPs zsdNb7peT-6APzeCd?$uZz8gKQ8uRN{beO8NNTR{5jC~_D#Mjd#qf*D3`*3d$tvhtL zE#mx();=_O(w&E{N28BoDQlnwC${vm=&ehm$54P0x}&e!Qj^=HDAji5YkuQllJYaV zW44=SR@}O?hy8dH3PuNsV;P@CKnjDE$RY8ajc>YmfJbhPX>3>$YL-GmR1*qo|D}0hUJsLq$ zhEU`891y}tso9_?**PN>?sdnYRQL&+VOdApJ`TSR@av+ruPrzi0$i7d4c!Lkj7Yrp zK$M|m5d8YOI`ruAySoaqyGxZ9ActKGO;rQi=kBW^I))>9p63;s>WgSQfoKvf<{|GR zOy4XQnEnh`FQ`)dPOKO(J`XeFFGk=UC*8eMYDSBPVI%SPsB_r((m`oO5MlzeN&C=) zL5R#tmr4eu!d=QBV@^?Kh;pAEHe{&6X)~58!D(|mPNU76ARL#Cv8Vn3ZJf!AK$y%X7i_SNj;CSa7 zA>fvI;O_bexNC5uJ#euEN25vdTb$PCL?3T5)ryMgvqk|qjCJ*4?%tA{k>Rnm|-5+}_;ssnF@V{cVSQ+1^=~xIf+MfJ{I4{c0RaVAed)5VNMEy0?_Gl!ss~-Lqjz&?Ryz8B8l&oLxm;p?jTN9~Y@7#leYgzAX`<$Nt@-4Mbz-VfFF&cg?N z`eDuWPTD@v4dXuLfc36-Dgf_Y?;I!swQ61OB*kjug?GJEamItF&w8iGcPtIC-dVL* zVA@(>`j@YFI-zED4;ZztcYXwJo)Kf?X3vPRPORd*>z&uA5`4tC`4){h-u2Gb-&NxH zu6JJd9ZUnPcU~$JwE0?;_m|Tq3}|01ZOVX~hc>Tm^3Z0!N*m95CzmS0X%pUAqm6gH z^VV+~ZG6@{`TKktc!2fJ>`w%3-oHk)`5F0NEp0wTS`Tezzb`tGV8Z+UrB>0PCIRdjzeU z|K)vDtas)i|GH^i>w0Gpl6pwpZi9!^t5s5a);pJWYoyNUq>7K$4hr$dc`1|H?n8AG{%+S6(%rF3dkKk`Uv<6@OEX)vtx%!INJ0#ojdQFJY z#5(1)^-w~8?cxzY(gC6komDvn(GH7iP4SGc0ZOMsMHW$9S z@vrXCOmGd2WI^{3Iz0b@0)8ad`Z~g9v_y=j@XoyOfso|hXNFtK%-M2mdFCwZ<|?3C zD6MWJt={e3vaq#2B*n?0>N`eTRs75%< zR=86Wx;_-{HlPv$qu=lf*XGe?h`>uT8`8o#s~dEwvYwM^eJpfQXpMZ~XVGRj@r8p7 zS|jsAMcfy4l-dgk&rbJHrL7S4k-GJWFy3SqETbkv0jIEAf^@0Xlb$3+eo4$C$yiU4 z&1#aHJxN@CNlrB8rF8NnS%4(k+L@kw{akl@dhM24+EYafZ+kl8ZBMh{%dSRy+SXX# zK1LHro$YC%4}2${C0fvlkEuOfuePV-{HvMTp8j*Ur#+o1<0z!^CJM~J)iP%F$?_n9 z@b(29m+t)IFVLWf~3-Nkc?d#>A>S|wIX)@*Q z>xJ&V?dxMBssTKOEN)CQc8n8FQuzr5|>C);z`m4 zN%ZZDgxlKr-Z}Q%MH1cP`t))(?Rk2|5vS+mj3=|e+LfQ&`<^erQtVOa8bBDEmZF@r z(;?wGme$PM{T_TjT|%eygM_HGxEjUp zn0lBGEOf$)qtY>Swn172aeOfGDm?h?cjx}Jl8S(6KS7%VjJzL)p6KN1vo!ocye}(1 z(j3qQ1H7!9w7H(kCpm%A7#mJmIc#+gH_5>iTpl=h1%ly4UqD0Hz=4N?vOYn{@!#5A zT~}@%?$PgDn}LL^VI>+d#x)q^}Ow2qJJ(Zv_vLKpIN|-)2@Cq%B=6svGjri#&V(EWgbiP!!@>aEr zr&4FkV5Sh>#cfMOf6ZVYV2`NpeA@V~od?z4UN%P8(q8`H&W^8bd#Tvs-(HS<@84d2 zqn*^1w-*;>bouS&acs}gUWVb^@-J^MU&9;XpKmV@L3Tr6P#8 zm$r+v_A&>1xd81&x3)BE=@P}RwcHoO)$;CiT&O`1hHk-9J@oY-l~JXw_jfieKWC5xElI?@#Ft6 zePhY!ED(Kf__bF0uKuPr`sQM2pvD}-{@dA?zAfCn5!1@PP^0gMCyBm%y+MlwSk7cd zM{>;~u>+EoN_J~wLav-MYh4xoyp9n8w zIka>PW-3T)0n*h65KTUh>TPtLw?ss zz9=H&)W{!vQqB^QJ=DluK9S=^WP%UoZ;4frR)2taqCtqBy#78Qtwk=qJYWQJzYoai zExi7TJ|KO4K=uJdS~ajIF38IX2caS0=JpS9@z80)`HHfS^l8mFzLsdpH&a85W4q>& zJ|;I78VQZs*exi5ivL<{Duu03ETZK7Kg#Z1P+CgGZGtmklr|dk_CPeE*<*}TVL>v` zlJ4xCS|yQb3^uH;p%zvafjPo4JJm3Kpj|mm3rRaR+G+~BGTM^l3h8Hs_9>MTmn5x< zFr{0IzcS+5U%VxS?@S-$jJU^Lnxq`JC*GGj6}w%aOxkp}QVI)hbJUrG1oVl}jqU%O zdZW)Kw{?Z+paC|ytOP1BWE*i{x9FT89ftERF>Cp_~`-Tieo zo#~4H`lznI&Y+>%r@uZZLd@PCJVJy-dqb=uB*q)kO@wsuhIF8iy869kgix^Y-7<@5 zQVE^j-qY2ywXXg(b@h*-x1e?P1BgMhj-#WUS7=bgQr9)Q2Yo&##z=g^E@ls#%?3?$dZaSChkF+_#s>#utAZ;+NMVlO7Dq$gSmjtD z?_+z|;mv#ljy+5{%myg)78)iaLg+KZr>q&%z2#uAFMgF(le>kscXogWm_`VQg6~=#CLI2*~WoH)u^bGy;3p zIgmF^A~Vk*|`KeR+e5?DCWw$|d8FGnqK`w=2MCG?KAp7tZA z3T>;K#kXH#s`#C^A8d6`LL&jI8!4wk3ps`mvH3Lvl?mo6-24JwY<^3!>)8BurqdSh z=2wAcQS4D||2sxGlH^Jc@$P?JQP1-hwwJwjf_m+U2DA_U2j0<+8$#u@Vunq2Y!6Ad z#%@D1Zb(;K4vQoo6@$#ek`24#eN$KajYv5(NCj$QTYu7qp}E)l4ntp^;Z3aF0&N(| z#@?%Ddx5;dyMCZ1V1_=OkV#;8L2t%|g8MOvQ!n`$)xb1|v4}biDd&H|D>=%@CqHP* zo@Bd3NQ4>^e3GpZAtrCgo1T1HA|LFn*+Ky$reEY!&E|;^Oz6_RQwOxI({Pl2*4SnGe=vaqJbEfL%i(`0D>t))zg9?57lHRWtWp z37Bfb(@SyFJwmrvK|NIr&z2pKm*CjMnBPsgGy zwzdX4$D*)hw<{GG2c(=3>SQECT7;g=JJv6hnnJQ(i+~=glygiAn1lc<-6-y1K=V-n zQlpe48h3S~onW5xKamWAkwxzhr&bTO$};u>Ef@HLqAk*Mrt+(u<5*{W6GU+}Y7YHL z0X5NWL@7JwRyK#2L(18RS~w~jWIo_H7cAv|j{Mh}5yX~$ihdzByj<9lh((Rm4A*v8 zOgd3X8{|RD4v0!XEHmg0!4}I{Nh4iovr6zWIG|pBBJ$T7^+K^<_$(DzK1af%N(Z|6dy;&Ctx+LXR~tM@-tkKkCXx*BBzYT2Jj0rwypZq@)IT;hucd$daUnqe znDM@U{}}bEU;ju#fZ9K7fY$m)S8HAUxo@f-u&fy?h-#;27Kk6T^VN2re z9|Qiltp4%zAy0$5;{K6JC*rQqDc;7W>mN6IGrr>farQl)@jk9s%sZaeKR!9=LHDZq z$15V|TfI5|#r@+Cj$mE=qXB8g@y33#t#4yb{e|}rXO7lCe!(__8vEXFwImz;l5`MB zMthQMP?Ie6Bze{^$&WwtQf~AlaUw}={eyRV{rsWI(_fK1{bL2XP>NE4GYFEWe*s-O zZDCJi1V85-^fDU%N!S3U7pn5_17M@C{2PNj#%U5me@SyJW;Tpl+ps*>%fF@EZ0fMS zGVrzgJ#B)wG%MOw@OK)dr1h{7Mi0Q(3R zh1Y>YW)C{8tz8ZtMz^X2{~{+|nvpEWp3Q7tY4jI^V=|W&ugrS~uRvWg%ue5k29U}& zv{BnkDz%{u7IlJibJV;kyisMa^~ZGF^s|4cUEcjklUn#0aW()yXDspK=Njw;gb=w2n{6CGQP<)7Guq&mvHo9U zLV={&u@#mIKL=%fMTMMx(;AgBi`=(srL1DEwns3P1sqoGau*S4u)>5g-4q}+~3 zhfTm+1lSvZ!PNvxaarxHB@JP&Jk(-$K|dXv)D2AVTyd#9hgycIPvnl4eA@ zGi9^1I{7UUn0HpnNo1Z<%El!Sx{!p90-?&-_|F9*NRZ5-p^6#|(f+yKSun91JsDcd z8JUqF0ZeA#$HXdBi~3L0Y} z)R9X`hSe2Fe0muotOV9{XJ13&COVj#aa-m4w6p{2Q)s)SYBnc-f<8BQ8?llv=OCdN zckfnqzJ-uwT_Q^fQuFE4f;U%Ht$7*ajkWw4YOGN6>GzpWTct?__K~tvHlodt)8=gC zFPB;h#VN`dm_=bj5BbBj&% zS;;Gx-1!hWVtc;z=3qDt0)&YU3PiQu?>Nu^1XJ`f@yInZOdX z2;2)sCC%NIjR&c`Y+VroOI25gy|2KRL(3It0v*1hhRg#MlI3DT709};vA3~cN#?1FZu{+y*5~}+)Wsu1h+X%*~p>m()^Mef2 znyjM-$tY`%!!(Y6LO)M;JRRKwo42n?zX=f-eahIgh(K>jitYgyWMNVcv{c}aw8%QQx)1V|@_xm) zlrsalIat#^zoIB9?+dsXlovzln-kKzO*p_8P2#Y2x}`J6KED?a+D*n_il7WDohM z``vw!=uxl&obarJn#fL}4^TOPmji_a=9W=V4=N}h#9$`1pvn4z-aS!AL4Cnq6f`q% zL7$P#5(g17dyxv-jZd(}g7P@c8%Vh?NR)XQy92GWa;1pxt&9Js8sD1Y3q?F#7p0~D zj~ajGDB?3je1a~%NR2;2@u?#I4qg0SHGUPv$MN`O(OP_SDfbwUKS(IP01%P}(tDnG z$8c80o)Ygkf-PfDh<78sPZaNA^nSN^kD&J<;=L)o_Y?2nX&H;hdnMOeaTQz#6g&)N zZ;wNBe}T(-3Zi^s+>;P9OT@JEiTT)xmPEI(QqxwC+Z+&_#woEiZXK$=Ed{+9w@Vl#sCZsaaW@jIBU$C5fO!Mo3RSSw@nk5y~gbaw%WPw{joCz*0HG1Io87 zN?ti?Ne$1!yJG=;;z++FZw%V0p>hDgF&$R0j5`}s=Uq*m7kyV9ZZL0|J(c2c<-Hms zL4oj#rmEM(OEJk6)R|*aPEu#aCxll0&GmTR@*qk^=dNJyQs>@| zuadlJ7(C$mreG$Xo)Xzhqd~^k0f3kU7_NC^GPbzgmCqtZa4V|`5oIJ1<;;;#LFtTQ>VHS!Ca*l#Xq}*M6 z(8?2oWWFapmB)93+m?Xwsd3V(&yn7`8E_c#la5#B0k9ACPbu#s`px+aQC-t`KKDy` zSm0`N-}p!|_r>AK=RVFzqm)}n^P_8#47L$PZ$8ZX1>N9DpONCzu70)!Un*zQBGI*| zKf<)W`y^!o@Ji~Ta7j(^eRc6pHGU_>58&|yHz3~I!1hi+(}UiE8%ynUEVWN!o$jY)EoC3@C5e2%7F(g=wAwxjVA!hOiA%ijo z_F)*^ESVgc55F&tJW6NLr~_N{f+C{MP`lV}7_bDFawh#jL>^`G-Ey>*9b0ae6>r%CeQMXCm_QQ6cKA3s11IZv$O;6H(C7ej(25NFkH{9#p&Qv?){LeHtVun8< zcyz@Aa$#q5Oumg>L4^Fr9@@qxFSjeJD^P$vaW%su^F}&>#O9MWt}9r!k++y4SjA#V znMZ&zyvZ!bW(!D{BY?$<`x#Kguc_!zaRTd;i1Lt;H6pC97cmy#>5VzD9x;tX%w(UK zgA{WDQvh+%CuS|h927BYd}5YS%vups;S-ZfG0PC6(k&l!Tg>T}4mi*)y9UkjSz3%n zvwWi2{ku8M&=42Jpn7uRqBuM<+ogN<`uQxS5%x%qJc>70HKS$)^v(EU4hwffji$MC z80gegU>WIyD)hhVRGY$PA>tf2bu{ zT6HF;C|OEAoAY^QzvP@Vbo-~zOz12~K!-*iAfCwat{80Z^*K2UEC8uO*k1NMZZ)!P zekfi1vpO!iGw)2!Jpnh*)Qyya3hLIed^===0E_#R#p+q}nQNQ4om;;A4ba&e%ZblY zZajulzDTJrwUk3bZ^)!Dp1iRSY1c+JH5yp|^&T-L-_YDK#MN>$a49ETToLfcTWn+- zhtasUkLqw>GNHPU>(=aM3zx!ywr+og+RO}1PW(BuA=NI+nv_2YgBY}x#wS6yDvgFQ zEUcQo989AaxsCRWVlatU6|rv+n;~cKi|(q{JcH!;opeSh67PR0nATg#$|YZl$!j#i z)*zf6p0VdOfmFel_)-onH-Yl(+euun)p_-&ttc z$0Y4ZSHKZr%Yg$x(EI0H30PmzM}| zqXzz#4|rn%-d_WMTLnM&k&4Vr61o(Un{KR%q)tfZ%4L;!43Gll$ z@J%XsYYp7x1OCfFUey>4yg&tSq=Db(170M+&rRl4tzc;?c=aZ=s@;6RpBLb}H1OM0 z@JbEb-~;}E0DoBnZ=iyIrh)IjsHaT40Dn{iKe$a$CS1e)pFZFr0=$m~{<;eOhnD*^ zAMnEmIAxk@;8`lT>qE7wNj~6j3h?6(sgxP0f)CVkZ{-6%Lx8W;z}u+cA8=hZG_mio zM8||PO0;)bfX~&y*;Y~2A`N`C4|rPvewPNmRt4X$f#>^x|G1x5^+pZ+Srz=9jcQfL z`hc$&;J>A-RUJp*>??S=Atlc@*7HQmS+tr+^r`tG(Pk}CC$)^$|53qzzaT0s!0#5| zg&O$TEyz8+uwzKLp?7Gw;RgKWH4Hb5##osP`cSU|<@Ye;f&GC1nDYh`}+qVyDfS>lkA@ocC zLd8S;Hf-NW_i1e3zH$37U4ZXvI6fnMg93jw5y4F*dYU{i%{*^)yfm*7*FuD}%}G^}BxurOoe^ulcs;f6Ty;uxOQ_-l>#g-yZ@U*qq6{QZHy9r)w;goOph$dk3F zgi!UZA)bwl>PKUo&s@oQ!irze2jX#_lYC|82{8*V>pbDt=XB=@A3^9tv+ESzYG|Ye?c&$9ckHuD$O$ zPjKS%3eOYLQAgc*Lg^;$lbZ+FWght;X@-og7K7eaV-FZUM2cjUK^Mu`p>nP}Fto>1t*m0Ou+Mm2eG)W>pUTg zN~_~MVHCv&JWp7^9x(yW6ZW@9nOAh4@C5RLn9u(_VGI>f+j+uzSQh+6=Lu$by1Jb6 zg!~)+!t;c2)Vb?APZ-=6WPF`APyXi#=64{zcos22f~-4FcoQSi6`UtLg!`52KTjBr zOfTm=Vb{ zakZT%uw7; z8ww#lxyti|L9bu#dBW{n?gpiyz3wYHPq=O!HRQ`VPxuWA9~khi1eRBFp71!dDs&h=@!@5hC)@)R z{mv5>VT2Or318mvf5myii`M_E&JzsHah`DMpCnB#r=3&n=LwJ9iD5^aCo~^U8y)RD zVOzn~oF}~c#$}u*^u&!OfzA`|N8k1U-31%wriq8`U zuO^o5W!<+1I#2lNkoP>H=rw8qb)6^7=Gvn;Px$x;-lL#RNK1`28@Wg`^)6LLx%zz} zFzqJ5v)OzVJez~F4IKP>4Ln~3U$c};C$rhzKHzHw_^IJ)?qgN(w*~le7UP4=vjTjp z27ZeQ{`H$`?&rQ2xDztV**F2dP=GII7yd19e`JLUzDoyQ!MX_W2esVysNmbQ++X$q zzqp=P^$rdE6&3uj2L7lIc$oliq=7%Kf|qFEeSE-|3Gnh%l`{QQ@YNc4Qy=gQ0sgiI zZc@QlXyC`c^HQdQSq1o$8u(Z53Cb+dz*qW!Hy7YTH1H2q@Mksfxjx|EtmBl4(!d=m z_<9ZeE+6oZ1o(+zYE?(7;O}YRH~N6*3h+%D_)RK!pO;jw{)R=gSK>cffEQ@sXWkW6 zJ@bYNzTF4>W&xh2ftRY_6JA%rU-SX5UdyX`n+CpE1<%mHAMyd;DZm?O;18?db2ab; zAMlq1_`#tnWqPUL_h`5`_5puHfWNMRhZ8t^{#$XLFzR2t2FuwYc%>!!hz@>-Nc4o3 z=*T;QJ|&A)@Hc$G8wqfW2L2Ynah~u*6y(|+!VOdL_vv+zdE;4tu%%tY4d1s9H~fP4 zz4)s@xB>D1=ooI;(=Ocb3jRJo_&xY8LR=5TJ%#sS2zv(U+Tr^d{H?&>(|~;df1Pgr z|L1wa((A(wn{EgeqB_`479oIZi2_o{UMN*^Afzt4F>%bUUt z*`2}-x8f<|FCFjS;@KU~OL*GxjKm+u=Px)<;P(yD9ho|Rg>(^XvC+B)+7||#nYo;} zWhiq8&3g*J-MXhj3Js)sZmVXyp)L$<&xJ)*;nFI{Nu0S?HRxUhBc!--WQ0$)Ah6yD z5>EpN{^&j*`;uGE_o|mIirxa zF|$LLEWOl08pM!WNl%1c`1f!_x-88ulA1Z32*qQGc)TqhWL|>6o#Js64_ud4iHFni zD}K|Rj^FXfcbvs_)44fMcmiq7FiuJ)Nu-gbnSy>w?UQcG(f zyzE(6m)MK$HBh*ve7Ul(kv}T zy-FP<^|=9x8$gDvDp(c7gLq#~?@t`&gr?0X3*KflSn}78fw~AD)d-RmhmmwyoemQo zr4BQGgAooi@kWgY7*ZJCoa?*bO?LfPT%J|N7PfS|E%~z}mBVm962-EnL>OG7PV@J% zcwa|1G4Zc=e>0Lj839@Dhx_J%Z3(>$K7m$$(iJFGpEJLESU}7|0k{ zkN{YLcfg$_IK@FqfT)2Hk5We*e&H|B2-4vV>aloBz#GJwc@Ei>*TIh%Dczypa8)}~8*By@5#w}F3=*55L54?yc%+F(zIdz@k8<%a zpl=~LKMZj?vVj7=xIn|{SS-F)(8K9ii3d<9;(;%46;nl_FLtpNM}fyU9U{h2E>cy9 zR3}BMYW`5@i{+VkDjwr>h!}^FY6jl(3jTL82Vb8?kHkxv*V76*8~y}jN9jxiWc>nM zd8E@ppjC~~C`B6T@GxFXC38md;Gw?_4daL7C)_t^GuaaN&uD`V2c^$hk*2A^veLLD zq#1S?+Y+|gmEqjFGLG&hSI*T(36+`laN?2B~b0^CA&0zHe-mHtmCU7PN#| z2P}3=LJ~nq?(YWXLp;YMQu>GUU9ODvDQg2EA=y@nNQ_$Ee|-D`s11iQ=YW(=DTZDx zytl@I4*RAxm0ckiCk7djEnKfnx5Bjs^l^(3H@yX^f5j1@?z|KEa{xjZ+Okp2a5@-& zAcd}@-^pfT-3d>vD1jn5oCg7~mpECOLOAe?3d?MBivt2=tO$ZVT6tskkp4cT2S|QMKzB<0NmKOSRkTq{7z4h*(YZYa(Jl^KX|av z5ZvdN&Gfr81W9?{2gBA0bzq1CMREs1SoW~7kS!{6OT@d zM4dkqc=|eWnLbQ#7AlN{Z25GvN=_IH?PUXd6287E;B<()<^58iOA@65tSx0%k7Kx! zO=Y&13o23heb#207hSD>n~T+?XQpQRi~fK>*O5WP1R4pSerbN4`;&zx0lim%Gzw5c z^Y%^=3IaLN2|VO8YQ)gVHskV9Dd&3%!}JT+Du;2bFQ#yA+Bp3HR=e4oNy82b;!OcZ zQ*Q?L7O=?06+W0*N^+u$@G#g)i=dC_*8Bi zGVh=}tI^~0@;Rn^*~kZoio=ZP6=*r@=3q(p+9nWPRI_!jOK#ktbTdI%*R-cJu2#ha z^t2b~*PfT$xC@b1cR-If7${Y)FBC!$-lXPkqoy`tt97jfc_h26a5n`m+oLD5;A{wE za*>qqg6VHo_cfRYJa|WNZEh)fYj{#b8r?OIhcYr^(vAD1+_wQ&X+|SjgVhCEh1_!~ z2M08P5KZe&cD#}}->Rq|n!Og5_=?z? zt)DFbiwLmc5x$#K+Y>+ys1{3mm+woLSVVFj_Qz7%4$gxcphEUEe)pW&B5a72`^knl z2et387_YD)ew!Y88{!ytY=+l{ctJENq_RYTW0Z;`4_kyn)c$W*zMvk>+b()Ecf4kE z;+k0JG&6ei$Gd?Wsr=-K2E|=md3&@S)lhqMFxEt#9&KT-mr;*iulDF?fC+WS*|(~# zmC%SklaAZo)9~i$(-s5zb9(=tJqA&KhN;&A9?w>7RQq!uErUYJ5y`Xhq|Qg#P;;G$ zr|5h<1ihJxvb#e1d!VSRQ=}cai{#{0=d{|3c?dEh28)a+MArb(AS~?nIch&9u$ujt zXHs83PC-(Z=@k8VQdgBSJ{3bhrV8-_M(78MGzzV+fKzDQtOW|FYNNxS$Vye{jwTlRh_Cjb?VfqQ>V_KiyDFxV%xS|cVYUzvQC@h$PZP% znBxSb&GGjM=#dyuF95~ncq?IzIldbV#uXH-*s0uLHNHpeM+wfLf(aKIPQ(#(1e))=R37(3I0Y!2D|QgfT{+8<4_jOj@^-eyE#hWL?}^* z1bmYSUI`Xs?Gj7Yc`zHmta}>xk&fPj?>}qbW%%y7h~lf5U!oo>3WLo;h^|mpP=|Ze z=eAO7bbf^_r6PNVCmI>NuL9@=rewGTle=R(F_^SxekJOxkm109ZXh&aI^u`em&TZ* zvoYhKRr;FmDNMg_0Hash`LQhcLjOp>P%r#+Aj&!|;7f(k6I z0<4CVBo%5OHY|(xa8c@W^~WONF^3vbeYo9Gm9rXfvUsZeVhUGs*g~K6_;k&pYXL4( zLp1*!@ZO}iQgx>yZ*dCVKnb{FBj}V{-z%sc0!k z_XPCzJxCN~j}d?%+>_JW(c3k8+koQ$me&4L^yXM|di0iz{GHL8^WxK@x99yojNVpZ z;8fpBQF=Qvv@?2pab*|ucFVRndeheL)tF(vJe)Ym!%4AJg1|>-l)%Xek~1CW;|61Ykhe21p@uGKMct}I-JR%O zSnQ?33ybCy^~gw;qta{++y0o z;@dh16qxjj$n(mEo(>>;M!;cFCTE`C;>*)vxq>J*?0kh*6Yc}$2Hf|a2miBp-Ch@+ zJf#qwvJP!Xf$Vf6zCq!)(~nVhva3(r5tE(BvsTJJ7ViFe#T;ayh@0=n>Y{mcIX*q= z(WQqd@$AGB^Hfhls0}~ zfOb{R5h*^4!+$v0*8|;Ek>oSUk!`YnZ6*3I$vZ{;M*cnm?>G~{_k3yo_feBpeJ6dZZd(oBEs{ioi_Bc z%)Uu6Vu2zsdR(^cpilsG6OK)><~9|Y2{$=V2+$3>&X(G1PV_H3&85tNmIl7L9d@Sz zC+}FJ%%u74;T$o(VqU5(Y+SY{n^z0R?;Em zCUmSL>Z*$=>qPy#NAz#2OWEmEu8ei@1n%Mq=;9(Eb6bT1+91EqO1{h15-;O~IDc%y7lOQO(k%rfEE9eftIUtNmH32y5Ir7k|xlH`Lo3)h)&bGZq! zOu-hfS-q^C<|H#r1N*)05Kb7vgg&<|g(oGr+uO#pdG6~*)`atMJ!LJcZB_J>HeAMR829(%*s#Wdn-VziX!YRgkvN^fc;PbYoEzy*qn5D~o~--W z(%e$V_;KhO;>Y$XY(&o4if{1a_vt5|ANRf0$dAj^x$iRfyf#np<1%#zR3JLPj6H2( z$M7C-!mLGkS7(Q;ghEGom#FWHWuX99_F9(o< zE+3{*bq37zWWYG6D4|gs=Lvw9P4bfbo(Ff6!~&xn5&jmK9mZ5{tOF&6$b2*g*%j~9 z*8}iJFDVrl=fFoLroDkXx|LG1+k{zan7;8G^7;zQTSCm%>uC)iv8{##9n)3(U5V+16QcY|Bh+iy8rrg;z$1cXhoU zps5&7$22Dz=Ti2F=I(Tw!1Nq;w}Pt+`eG2zsjfv+^Z22|jjV%il~z{L#EZ4q4G&kd zV=ewU^{GV;j-0{G&ZJ~8k?!!b*AoY%^H!xMMH<69 zpscMBpOE25o5vDbFstb{h_V0pD~Yk#CNakwzEwTGSnTXqqekrPL74NbEQ^In!CdE~ z$qqjq>bDzsXFr7wC&*Rw)JJ$vzv>b(xl7e=ptgvo|LM5ImDcu+532Zb2cE7~_P`55 zS}P*peZAc@zelmMp*)b)ga|n}>g}nM!So<0!5#b+buapo9M31CfX&jHq#Q|F(_B)u z)0>WnO<`+!!$+y*#U^;fs|(4uHb-z4>cD(4H9I1W#Wfj2BO4r*UnS!x$kbGspX7Um z;53bu5gZ%a%%K}o^GJmSm2?WJq=QO5u8$KR0Of4MNJ~8~r%4@yd! zH>|ucF!C%?NfwP5Sri>lCuR$V6s#uhA*417##X)Tt~i-qS_7h7Mn2_)#LMyl%?^?e z#4{IAMm1A}k~VHl-1O!R97_yVSqUuUqfn(1Ki+vb8DyDZp?-i1mZ&5vyV-{Z{A2zW zf&!ieW8Vdh(wh6(cfqs3FHZGgs=yrn?8$^VJYtd9dNNYNC+N(^@cWp*-_6tK?-j4b z&))|h;Q704us(k;hZcrN{DkeD{?bp>-d(@xti82QC$zWUEokqNKP9x+xv;DDc8j*R zh?+3YhdyA`ee&xzB!`EpiMkro7K*6gLknhC49R5U>(ZI;T`-GpTX7%># zM?w#G04aWva=%E~re2E_JetYIzgyIoKrmpueAZ3nVzJ?~Ziu2`HJ-nm7C!G6lApEC z@M%O!44(^56(75BA3T*`5Lxzl3lt4B6QD`J7Ewtnc_B&>%}8=9%_PSu2T5$U(;vvo zU@V!qZGgoZ&s5<9gn7rD$>gBLp=_7xQYVxbq>lHUE!7oINGUHU9-o32ZTt->5OgiR zeQhmZ?=Gmd+IbFEl3@9U@hZY@+=t`TQ7U=kthhBSt!WcsvN6lkQ;<^+KYd zjVtH|XOgl4&sW2#Q;#J$0DpkX>v$l*1)oe`Uv7bRd)6G>aj^l(NGQN1la8K{&Gnvc z`RP=?iOSys3nJ1Hf03!_>`1N2J@6C_2$ZpmFlwgm5yv1D<9OAKza^y3xhID})d7D* zPf&l7j#q|WI)vY7e?CQ#PyiGDPB_Y1{&O@8jJVxVZ{?^EG|Qo`>w{}Ch-at@!0K~< zpot6I7)Rwr{&gvTiXZ) zqN;(Rx(bRMy9Rr6TuVV%rtroi@JfQyFGmnB7weJB-UU}hZ9E;&1ez>nmsF&kK6NtN zim|gGz7m~sS6<;sQrd}Bo}|`-py{xI4~cX$2de+1C!-&u;p*Yr#L;W_Dy{!Zkriep zR05YxeH>S|`BchYMP>hwR`%chhOtH2R05YBqTe6KDTY%8BT>OmN#Y-q90KzA_!p;7 z;=e~(>hDlc+bpx-6bFd%(!hjp!3jcx;1mZTBAyC85c8#NlC=XlTr^zpjngBB-9S?P z{8m8>$Cmx1#ITIYuGPw3t(Q#`=_ewF3#o$3P{B`047=F|bDO%m;`E8(K9r@dLP2fQ zuyY|SA3^J1gB*aPfS371A6-#H^8!3iGvcD4I{CN6^Pp(-AU9=Ph*-)~iC^TYpgeBn zJ4(vOcd>$l{g-p>^jY&_PA-0j?{z7E<2v;Hp8u#-@~0umfAlQuJi(i&E~o!EF;fwM z@SV|@{>oK_PB#@1xy6>cofOHT4PrnpcpHP;1U zh;p27}~XRj&>%nDMd%Fg4UI0+_k#%a0sGuJ~#R zxB^v?DyKrd`q}7O(2N06*L@Se7I38R?U?b2#XFb;$5sH-Kf;4xXqDTCU(w4Hv(b=< zYjO+(R0v2LjmFCS;ZpSq$VRbJxbqq-7bcfW)xYdCB_&^~zNXU@)6b-8HcX4+q?d*l z9jnQsYsY%hW=Yklou;JUELDHT{iL^0FRdF&DKdY}WTUejrw?r73a%JNQA zdge*hVx$r=$N<(8JI&JzrCr`>O79U;^;w;!NWeOYQ#v6dT_B(VE(4I5c{098$SB3H z8(W3y5QbH~85F?fHdeFq@UR(Q&tmGpi|J&erB6lR4((Kx)637)&;AQEyRkYVLz99NxpJ>Mwu?wn_K!{8ew%Lp1E_L_JhP zA-f);zE_9oAv1+?ICOejnqN~v_y3HT_luqF53z#-`n;v-?+zB{pc~;vSld`OE=Mz{ zi9|6JfPz%SPjLosr|&WH?BPh2!*hQRBG~AfT;z z`0=Q=<`IsGo^Zn2-HL-3sA{lMC6(aF@UG#Tpr{!Nn^kE|sw77mt}gBo!SNbql<(gg zS=*INxsvM(P*i!K2>x9snA@J9a)ViEWb2CEruz&!s`G9~REidLHAnf*jw@q`p^Wg& zA_?1w;P@0ZJ!?$N;8auACkbVJ3k$(5>hAk!D(_wkE}o?B${d5L+i7omS!1%m4CmPo z0$0M2PWUsUry|ec98-M+*~9%D_5B3yx0WHU3URg48p;G><=z6ZZkt6S@uN8*f{dzK zThY32W}?AZPwndFzi6sQJB7>Ciw%&5>h|8BNdx^oCeuz>gY;d+)2vX>IhYm($y%0LVspsF372tMc&~xh8$A-A z_(o||IDz5971e<_z5yXe%FKkM;h&E09#&NbxNaQS=Y#frJ)xrXrNe4HHEhB>Q-_%O zoOu9BCAeaKw|Q|u@XhkjF z41c@TcV0d9ZP+?I6doY5W+9BMf4mM^Zy{bK4i;IZtrHL0FZ#D~5iSlYd%Sdv?5C?J zC?kWE>3Qn!M$kipTjbzE3rGM@eu3BE?XD(-imbA&2m(RqJbD!xDssASrQKuEhw!B3 z7o4>h%&7} zIX5;v*xtclFU9AD!_n`1?D>n#-c;qwa0c~_TE&H`I0UL8Sybs0xyFh>s|esyP_BsJ z7lBL%bbtxjcx;=efR#V|7O1#oo8L@7bQ1~8w*ZVd_MSN|ZBm+&0qF}fhq6V`*@+qP z;5D9hfd*Z%GB|_sAsW59?S(pu57RI{GYzfndi?42Y@G<~>O)sizg>&lRA>OboDDS8 zO1zxrO&uNyUx#Rzuz7Lrd^-b9C_|UoCY0hia=wT~CPFwmpz~5t4WbhoQ&a{*D&=!> zZU#;yz9*z{c&*S()?1FVW~G_JCRK~V865E!Lzwn!u`r0z&LRJ7insYII2pE9+`dF= z<@<{X^hBfm(3NPvKSZ|zjl^=|`J6~CbtFw{SMO=X#=)knCAmlyAWeW}83k<15u*RNyKkg^@IAN^qQ}Ja=GXUCPOqON`|?ZCqS(u1)|dsO_mxu1>$f* zR(S4k+r{;~F2-v<)hBv7fj;EGlpITReGv!J%DcluxZz-BQ_ZHrY;1lY_N3?ry~^a- zu&nc)OV&8roq;TTqg!!bz)^t{9sIFv2*ds^)rZ>z4w!P9$%5}Ze4}aL%nlE(1Gr5g zfVp8w0P8!bd3FS70iktJT=nM;<^HtO5up%1aT*AW^WzaDWl{~}M-rQI9|;YFVjgNL z)hdS}mjfM!SKnPwC*n$n3pL%guK@bY6QgH9tu;*Ebp7;tcCgT+Yuq_ho zmd#{AZ(24UT*+34!y}~}gtZ>7s%NVgAcRdFfn8rn&woGk0E)#s8>?#Zi-!*%x{t!j ziq#ZUR{aq_(wY^VSi?UE5s0IPe`I9^72pi;kCrXKxs?@^*%9EM;u@}?hKqLvxYl9; z7vM^q!Bt{SabP_z&KV-DahP%0ITyd(@jDo{eYe8OfYLx97=Cn~HR|0Iq0mb|pr_HYf~?}DF4%TwR%6(cPOAG~ z4Gyawzjie2Q63WS;o*L&`ti@XgEWrkLJ{>Ft17r83rnpd~QTLKgcpHDD!X z75BgH%7djC?b-40>@wV<Kw!v+E&Q7Xa zx-bd5zvT{$htjGW6$aB@nTQCfq$Rq)Fd9=%GOMF1g^a*E2Z(0zn}t)r=f+O($%^9h zl|2EUOHP8%-|S z85aW%6_3CLD@akU5i;O(dCajED;nQ5Ro=o4tJ-i@f`vIojqm4hAtEXO;9D+k}(PI%=2`_5=X^FwUY5H5B&TsTUTbcUq6+ zV8!DQ?AYeHsbr8Q*J(0c+VXqm2pjE^aWpMh>STL$+;y7{xi@8eFf|#Q;duibL3;#m z#VM1xTZ4r-`Ae48q_pj$J)r-!O2XUMgQs8HR>bM|6X;%o6%VH|0^)jtldmJttpvWF z!1ogPx)(0N;&Ry8>b_4$LmLBs9<5UK5|oAa@1QC6QcX=IS5Zy)9Yccj#*&L*YX$IP z+(SW*DhWW*`3UFDSK$rFF>=9XI0)c#(UPm=V97;fD1r0Pl8cIKQln>~WN6J+AUF?o zU!=Z9k7os^0`~4P1U&U3yf}9eOhAxbnN;CY;HJiXmCLjl1;RNGKlE4v*$KiwV&LKj zf+ari)+mC{q7aQGL?IZ=-vx2#pEqG=A^M2A<|cHxTY`fZ z+0=^L3`=qi`rF7BSTN(b`r%3{Joqh;1_bU%xTWxZY0XXD+NNNnVIVJ6kHrUdOsr_> z)$Fz_5UciiAbx$IhxztIJb2$P;!792ANx{I1On}Zcxn}i(FvlhFM9s9kqC&VpxM`5 zs?!tEf z=Ba@5D5q2iWOmFy#~DCa>ER6YuW05`RIZHebnL^J)QY21c{`?;1F>WRl zd@vX43cB;j8obWdbgc$mx09x zdir*NL7kq0YL$mr$xLd-Rb_~d`cpbQw}sVmG`%2v5J@Ep2>fhfFzxu6Sm>*FLez-f zL={AV{pv^OOpYB$Ae=lfK76Jz%+YOzVhukgS|RfY(?^&Dt9v`uT+;Vxj9AXp{$yvKtzOiZDH# zP!B}hfm*pV4kuRxKF#X1flfEz zLNUKe`Ww#omebUNi$CB*+tlxF*BiRP6UC5CA$ccu~F z_tnz#r;7UwT3Y6eo!cLsU?HT5-wK2&%7j1Lxj zw9ls057jwS=x92ab$F--ZjS?hLV)l6P6IF0!2ha)_lX0aC&2%vgZI}cv4@O$&^!!?% zIC{4HQXl41r{~3@2%Vnaye(El96j@kzvTskqV!xOGJ0GJZal+ZrXi!ROOjr~q}l3S zBuH8s1bX`s^n6jYvJ=vC9+N%O^9A@!r02(ryP)U%%QOOg?AJyTN-kr1zWQ5@Kp&qh zNNBJQK06M4=S&9gse{kez~6<-DV{BkIPgCR@b|vaN-xsDpVq^K@&^8=S!AelDW9}|mys@+8h0ac^H@8P$%J^54AAYF`HGG1~9fBEgKvq73)Tp*& z8-tU$8f+(Fvgo3#a__)`!x14(J0F3@qD^`;WeL%Qe7lCze9CnVRFE;jI`npGzS$o zEGI~B=Wnp6r3WC#>oL;wO%#c%(xz34qU$1~HKs#FyPP1~HKt zgcWJZG;QwFut^nZh!`N40VrJk{uW{eR5o=DpJ*o3-pTqMq6yJdvQm>r`{I~i9!{^4 z4(ce6{sG&A&g9XbpJ7P9)$IGLU?!0~v(S%74{6ytaKWHX+9NKJC`y1fLbOqnQ z@Rt+(CkCWO$H5yrt`->}{^x5Q_tDQ{Nac5#=>}v%2ILz-HT}(yX;_z;E)+Fgt<|)^ zkZDMlnGTX=e{foXmZ{K?=|W>B9FvWJNBgQw&=YOGZ@L%%KaBq$qZ?E1dsQ=@YJ=kI zUU|d}&-^=;w`fDI-&er9tq;Qib#XBDYzGXSp*B2A4vw|U{)O3Q@>-2uWU8mACN-H0 zP}~6C1n&s0f`)l#Cju6Gl6A;PBlcni(>!w@gBA;Uc0jHpm&n*jF$HCzZB!zZWe>Z_ zYcwh3 zj-_|RS)>~4;GgDbO&uKvzFL6qY14Yfu7TI<;8Gm;90C4U9lVbQ9?-$}Eiv{? zp#Z;22j5>Jdggio{*3yZ2L23);8V4q0Cx%SPt_Lyj%DwsUhjrLcR>O%uXhpn^k;!s ztao`xi(BsoVZOwzcfC2n8e0I5<9PvPT23tDbB@T3MeOB>A+d7MsOu4Lb0{A=UZIm9EX{3EL@os) ztiuToXvGm0YH=|>?aH+{%z9HD&2=`R&fctbT26JE_L0iS5$NrRG@)3o(FVm1nMW41 z&i%a;tB-O|P9cp7ZHxu=)C9#zNOgdTle;0g0GmIkMFBFqtYBbB!30ZoIEXC0*e?^uUMQHN@cBdWXzrzOkkEF{E@*gZ7 zWAdNaAP#`;Bf3HS@;DxpiER+ANW*4P2!I&)R`r7(L=j{-sax#{X){*aDbnjXa}wwk za`Ao~w?!3^e@E|kpw~$m>Mwig^oqb3;ERjvPUUUd)2g$PhO6xS{YUI|%dxBbIjN=> zfUG82W!pB|tMWO45-twjmdg5&%zrqQt*ZA%5>BT4BZUIDAOM=_23k`WOm>^TEqB=7 z0L648<@JJWCCpo8+eY3c7pQaBIcd_wNTzQ1$w=nk#X8A6y(pe!dQM`JDgIa|nZMfO z$GtG`UJ2TIk230m?KSOK*cUt(wmv*e@Z}u3pR`2>9Dbf*-&koOy7lH-|E{ zP!fkoproIPDwAm^bBo7Lz|7@q73gvnz{rhNLDD{2~)Wz)3mZ3Tbcn! z@oo~;OFm3#M-PbTK81>FyBg5{x%u@nW=wQ`-HU7WhWQoZ*)+)t5+zki%!>3%WlKzc z)RZrne=%jm0U|_bYi#3$O(_)A&2zDTrJWeHlV)h*%rx}xPq=@451aSsdiu;^t$kuW z-G{Vt|J}GCsI<@1wO4l?qch|g*{|~UrB>-DRz~%O>xiJ*<=_pl{)bDCPqfx_v9Hue z4CncBKsM`Mn~7&P*=zM9{ir)|cmmg4oCM@Ypiy$pa&$0)a49{Vvz(YT4P6*P%zm;H zBZz!3nQpI9W5T20c5ewfUKm7x;ILfcW{a|&lVx0rEZMFc4hWwJVTkI&=Pm9W@h1_Z~VukNR}$SCR~&UgPx1UUs!+Yq&Ge_ZJk5QVpz zY5?U3PP@J&IPnh3d^w^~KBDXt^r3jE?tVH{rQn*WoVxC2>S~0iiR2?%^210b#U`i} zR}_-yXGc4>q)F>WX&Ej+26PrDX@JlKkD>mDGI&S37u)`=w68@m1SHjELVLAM9fgwl zx=4K4qC?+850=9C+&4m2*30;iZR_p$!7*7Akk6+WltKMjj^opQ6i+v{wD{+)!E43& zf2c%|OPEdZw)GYG(Ml-OAa6-1fk3F_J4FdkA;={>Lh-iswfNCWsL>!VNGO3osDw*U z0uAe<+OQr+7^w5hZAczX-6mdeBU1SC3w|Gs9&w|fWitoq9XASo6yl&&3l3}MAid^B zsisY435H(+@1z#6Idhv}?UlPHKwcwK?NUy+A>cb*P z{v#<^BZBlY90eDN;4m%t3lXHp;wbe71gQt?S`QqZ%y?X>C6CmSgIe-?A~|16K1WMF zPfLD9B$GcqD*St`d*SAY!@n2F^g10Sf2bwbX;ivYB#+jTLt65?TJAEDY}b+>M=~=I z@iv-Gyp*P0g1Qn~A3@IwJLXe%frB)tuS|!-6A)oy7C2>e;YP`h5@JY7EnUx3#3O5b zRsy%iA@AKzoQ}m;?bR=48us2c^PSo0a zNx9bEgp7K7G5=aH6?pc9XinJH*W*Wh9QR}tasO}Q@yR}dxO!UlDvkx_+$2!*BNqr9Jui!ZHLD7TFq6b5w2h(Z%poj$T zs{)l#uYQy+oA~iOnzio_>@MgfA)8=;JJEggo*#E#5Gh%6B9}%5Q?9MlGl}CR%sV| z5p_O5!Cwls$@5?6R%v<&4?>hw(uNrJL}gIX*On-sgA7mUnkp>y?yixlF2>U6R=&~v zw_zoyp>CuLo;Z(~O(rwKAT=MZ0i&+8Ia)JF9ih3>9-+I^-VRsVA3sX67+b_DFsp@+ z3AoZ;2!qs#M)O))m172}IDn%k3~JSIi7r5GS8q#Z0jhJ`+He6WTkH}1LuW{Ra9u_H zhavN&C(5k2a_sQXE#tycesSQxaz?re7Uz_C`_iqKd}pAW)87R5@ORgQ2a;h{z7wWy zL3gFv1J9~JYh24+PF;xpj+21c;V-=L&9{MN9h?x%TmxRjH->{FTj&s~ww2d?D5v>- zFSQi>WI`~*0M^WGB@c2bm{IyVx_ComG02529`m9!Py-A!Q^g*R($1g2F=?@wJ{$u+ zr$Uy;G>NjSc7z=fZ1YZ$PD+$-T?JoB%l93JtVxGdmFvqusDijXM6$N^GJZ7Two?o+ znuGd{(}qAOe$n`}q{{U*2#FFFQoL>bZ2V{?RA`WwC6quQRKis#Vck7MJN&{JMWq51 z(}P}2rCB^2kt$tV_?=N*-!le`(Y-)1L1 zbO7$bMAc=ey24QPbW|K;WnfAmQ429!n_|X~^OX^+{+W;edPkQfSa(O4rDE<+g+XN#^a#7uS06FM z0|gv5HbEMWD@tEy3C;xAKX`X=BX8ERK7+Af=NbfwppxzK6@-nIfkYNu%BuZ$ec-#6AerOCqB}7C7d22!m z1VZt1xP&AK4Wfhtq69To!afc1qJ$C%gi5#!C5Q!|pZZnAQ@=5Zm!^4if_IS2b|800 z$!u>iPjF0^j%8}o{BP^vv%|3A&ZjIScxx&E;iCfLtxNG$l7KcA#2=L}wy7#;tSC_Y z1!PKXu}h2~4aWs}vfH_nP?SrVfubN!4VPsID6s6PT{%OSD4t z60%m@Wh55w&?BjsPI(YBEZQ0h;VVy__&FIGv8?4^47pCKei`*UBClgxGe6{4)eO?tof&6)W=Z+RCS^2h{z!;^^m^bD?AlxTmHniLS9jEl0hquzPPaqY+YX zK)Jf|6u&=AUspc83w_z)+J zy1wpHAOmg}uTzWD*ZByyAEB=cqU6)n*HM2OI zA;_!dBNX4MzRs6WLakQ9-6+ARuX6(q{jTflR#CUb^mSwQ@}jNl>&n(}P^e~hsYCzH zL0wHsN7blG*VmmdhE&(rWs0D#uS*j_U0-)dpsDNYJ{3V-U)L&v zy1s6c2z+o?sIQwK(9-pF_h`wwzHW#}*7bF_YstF4u9ryG^>q`qWL;nP z#VBsGuCKdHOV;&u+ePwdO@Os%$-2JoS&^*k>kgu>AF8kGRs0j`>stO|)Ylbm=uBUC zY$UaqH&71X%lqg@w0zMG@KwnApV8Odea%myue%D3FwWq5ZT5^QAlmuQ>g(2{j*e2{ z8&{K5_@CF;UDER>(ATvCS!4I<`nn{6H2yfg7}joI_T@>0Tk>; z*Vny>Zv8)5Uw3(+3pw^w^mPTpV&doef0K~ah4|T-zV7>>vCK#oNO8b7VR zuKur`>+33?PSDrgnXl{Xrh*#c^>y>E;uwRz?q-gGzAhi-81;2B!v72Ux(3v5oHnvX z+?%dERejykgc5Xp-Aa^@ps$+(P)rY9U-uw-3PD|8w*tZcyuPjlXig(*D)6v(ZbXtE#wEq7a^mVvpa z7}M7^Ak?W^jZ_vV(bqkQdWdx5^>vR8|6kYFWdM;Mp|A77!@}w6>*oBr3w>Stt{k>;430bZYv#qr>94n69rgA^z0#b!!t!(Dii+8 z$xlr>i9eV8U)9(37#x#%e*N(Y1SU;Q*_FQT_pSdCeci(=guZS}_;mGk-$cQu`nq9RLSOepFAY374t$mXe^duI5x5$dXwcU^vL~jm z`y;-guX~Ap;`Mc(eMwLBh1kLl`nn0w3c|o{NS&sydpa{-Ux%B)#`}NKE12+qx|FZ~ z(am8Pfa>Po{JK0@)oSnk-~cOTX?}(`h?5&UE9AY z43{QO!>- z4%hRSJ}#W& z4mfRx*jSv6#(zm8--$(jSM0CkVI)(+5btR1^(-qG{D z8vX7C-v|AQwlE;t5=Xzd@Px5v5~jgFJ^FRwSPgD=T{+fkaWf2a63F4k%P(^l3a^A} z!L3k7fWC1BZ5wEWFNDfdckb%J{-iV zXC`5^=y06&E%3$Atp52;cu&?IA;?ddUmf%BiHu6ff6-ef%AYH$eS)$HH3eKFy`I~4 za3@-ZkGKkfZ|+(T+NaJ)4;ekmN~h&_0?6e**=6~M143ve?qxqHY3 zTYyyC5p-CSpJM4BnvS;;jPP7r41TSEr`Q-g{CIJ(Ce5!FmTswPDEJjkq-?&J0}$>x za^+281zdhLy}<-U_TiB?Do0+N8?a@kV>TwL?W;AYD&XhOlWdq9h6nAcqntfJH~u246tw|$S6(-SW% z7SQepr=E9TrB>0t4sMpl1k5iMiiq?x3&@zD9 zW`bqF+aQ4Oza03T_(_C`V$=yf31oJSz$Z#(8a`tPANG78fABre%Bk<-?peQbd;!%@e)+@bfv*3cM!&?sC zT)^sq!X9<_8N9vt<=;rIr-+@{u0S4H_BlT$6ur}{q$S6&s{}4^5)bKc2T#O*5pJTB zbbA-PckCZIp58z5AI8&&Bmv_b08TrlJ}LOW&_aK#^aln{eG2XL$3uV0=+A6tU^!Ld zRyM!|3EziI!9~YZSY2I{g8P%cFUwJZX%phc+e>P$FLZ1yEJ}7Z6&BM#l?2AS98HA_ z>1K};hH~f_DvXRLUL@wS>~(4z^~)8K=$Bk|yuDj zuFO?y60)dSoaNkTmX*k&Q6#^IKqj|lS|6h~r?D!L-=8D&pyWZLe+K>Krw7=BC&_v} zE`jTv1!k$PileAEW{|T)yga#hhZFa2@E96j0v5!J9IZo$PR5y$Sg4uDV!50 z&q-n$=@}m2!ZCqm|7Vpl92=>11}O4fkFFut`r@v7Q)Ly1g#J+s5sYbr3B6!?!$JSO z?l3i(Habij@zZE(Fo{tCr^;s!6XF(jOn{;L#~o&T;L)5Am!I~h%M)fk80bNIP)oP( z$NTd$$ZFB569!=mD<<`Ryeh9Lb~Mwa?Np>j7|pQJwNtO(xB)^+j1DO0b(AwWO&@=X z8jC1pS}|qVf(*(unLb1O>7vh|{vdg5weh|&fB(k`qCrkVLDzPD~Imo7_F zQKhn3%59nNqP$tio0u=0##zdxJ75KN$EL5PPw4;9SJHKxzmiIuzmjh3bzaZON%-#d z-ze=XX-Gq(|8U2$dI1NNmBy%0X<8{8kTb1Re;k>Giu!OB-J=0tpJf+V|3{G1NF<&U|82mxd+g1X%C>^q``}GtkU!d8gv9% zo79zD#&uULWgiQ%ixrhvozX+~>Woc})`sG)cRZxpm zy@AYfuoRw}|G7^N6txfE1hp9?dx;(z-9%7IE8Yq}rQ)B$N+`qUm1$}8x_I(rdB&+wdpg5o#%+CW^6E{# ze?!3t^-o|DH${_aS@)q%qRb>h0t97HCJmBBN+RGGevk@Dymqn+>oL%hW+!$nbt`qR zv1=XFwKM-MBzbfKIqnbO<)>g;VK+?CfXRNSDcRd=T`qMC)UcNWlzJ*A*s3M@2DYm0 z7lLUf%1+dhd}u?mx5qj&3Q!MyE^^2EHwyn&dOUnK!EfvU&#DBYq=frj{?GA%K*>Im z>SQdPv?RNg!_f7xkB);S!~g9H+-fPV8C)_V*9QWc>LI5Y|DBSCahhtU?-lr#>PqZz zOo*trDQX^~^t(g5C}RI{SRMG&k4tL?R{k@&<|cc|h)aDFD5d>aD*OhtkMxZ~=2nWi zQk2d0TpTM%tL+h#gxWljW^#nM<|ex+PY#ayB5iWgp>(rU^+)RN;M5i>tSuRs_|v~% zOJkrGe2FfEnjy;-sIba`eEi^6Rt4Ufs>lwT=pqQ-yTQzNVo`l;D}?JhHhyqn?#|}fPIsg_;Q~NpeE;`$cTL4ZdR|8X3LNx## zYvA^FsLyVHTk_up*b*guV@ZqVpBcLOaTwV52wjW7gefM~hza917ntDYL`kb7(p5zEHdI0mvKz27au>AE>oGoF|7G)*zNp!~MTBOI8xe@2W$>5s>0&c`tGKn{kLKfamK zoP%$vZYmf}f67M}NGPif4)Qe*wm9#4AGxD!Dhy_!=l)PI4rWs{C1_U?9DqZGw`eRH z81h>72=o%Z!80%u`jh!I9>V%Ct|Iu2`Yq4hZLtbOxY39L zH{7atF!{EtbDQy1=Tl|QGdKRE>&Jm_PHp`t{Q)Sx4AE7rALmi7*!pq*_mKBbuzvWF zF>(F4SM-!|{TT3V;@DgdmZy)+M104O&C7uAWNe5-C9WTH(7UI#ezY8BOnCix9p6z* znC%P$Cja^MV7}sUPK% zr?7rJZOHwYU>senAIlh0tRFsn|77b&t^tJsMik=Kk6{~VLQ>QzuOHjNIQ5=s#J6E( zJ<0l!^%dIp1J{q6Y*;_y`~_m~vF!6oT5Fn0p4GP>SO&2Xr|k!u9(;uDhr^%WW8O?h za4PQkZBy4~Kmd(h7T%|}|F>=j=C*@0Zik)?UP0(FoZb+B?6P!k5#s=NZ z>YgfkzQ)}Q>9TsSR7HLcASi13g`!|)Uv4=Sn^ahnif2%vOvm9_p|r+DTlSLXnv4_( znh+XOsF-31oSVW<>Im%MW7W*ns)6Jlo_8@MdQ<}b3DFAuiqbRimTg8KI+ml7oc_)gG!u1s&5>A zxa-wnqe=a#VE@if_nm1?_f5gI(leo};ivmj&~N-oN3pVnJc9+N?qla7tCHFFt_RSo zS9`s}g-or-tFlxM3g{z~(2Rpdc#F5xhKp#c&E!Q6MoLt5qA~xQFP|hoW1zVAncQl? z?I{o31RM>-?ujFI4-xxc=Rx7jL|aKTO4O5+TvK8vV*yCj)E8HELqb#fK+J;m^oP0? z1CLE^1MP%u?aV8^?{20`egz#<67mNyZ^OI&mCV z81tu{EWbX4_Ti!OK*>ot*1zWH9BaK8D=UUc>pr`Ad~m>1Qe8h9k4KR#)m_U>rj|hC zSOiKSAy!J%Lck=9SsLL z`@*hN+jlh?_g%Yb-$ldorU@Bia|JUe+Qr2M3(e9!Gz>HXqyx?aYixzDcX+7O)w}GL z-K{vG-i0wwNT_$uhl!ZFx0Qs&M{{WT#0gI&e&Tj-AD+)zMzA3{Qf7`S@k#%gP4)$O zc+F9UUm`4*IE-^b^9V{QbK&S34Dbj=TIrNr#uJYDP)mf!N-`bfAqSv~-pik*fu3{^ zzk>Olv<77buzuhTGzawW&@j_8XjGs6lw2}up(h|vhn*dSL_E1vY&WbtIe7tzYuPJ; zb}F096{DJ4(FAUfHQF3HzsW}&yfImN?D!(0_Eod2E`F}bOK{Y6#3(FMByzbf}b5N1ZBel z=fMpqM5aiD@tNOQdbXCX!{^4}D`N0;G|uB2cX$G2&b##5X)vwd*B;vExq{1CFYj-F z?mBDDH=ZQ*@!Lr{oRqKT{^=}$%*<;VXJ+bZ8kZ4STAN(nG!E~qkwzT@L*~acz-h=|HmItUodUxL2iK<2(;+AxG?CA+iyj4(Pn=`zN#kCnQhwP1C+1Z zp+?fr*MLT7wS3?mnnq+BgLWm*8uxD}ti<*me$nr z(Gf+jdYGaQU@*LIdy*=J#kVX$)v8S3YP6T8#jDcY$m#`EscCc^zL5Ny$x zb%p;k8wLLNQ=x?ay4yOz{~ekF9r2&>J01TQ-#T^tb5DRj+cUttb8Xb9q2xp3&InF) zcl4X1Inl)_6&-@gW7X#e?PXpk* zM8M1#;94W#qC~)~7+|dtko?vds#eD3xx`W9TAU1E2Go$NUx)Ni2rMm|JUI3JMHHU} z*T-^thYXLvQKhaw*J=w+gOj;8&T}R^AT`UWgIC6Z??1rcXY1h0 zHSl3N_~bb77X5yb1+9eZRlXMPz-U|(K`lF z9+(`*&#>ck^l(7#qrt8VVOBK5!0r5os-5M0J@(7uZk^B=|AHn6Y47xDg z)n3HRG+v~$ysX6=uv*PZJ{Ea4Ih-<#MVqKW(n-pDv$OJsPb$Wj3~z`cvzl?+pE8K2iVFOzs<3gj6@# zT>mBt`fh*2XQ@iUYrGggtS2GW6kSjdjw?W0zevnb-c=`-rzYWSzNsi1rkz-fCs;Iw zUmoa*DOijhNF-EVI3mMNoWF$*&~HFL8J0LczmMJTh*`>hMPsOrLVvFt%4_>JxW4SI z4uPH*`y*1V(BlZVLjjE-Hhuga!VD3FV-F5a5<#dNIA|9^ixwP;AhZWDUP$jNd@huL zF}_EUyG3M-$5G@45gFrW6!~|K#AA5)UWSE;6ggm4yfEEI3zMlS3=?P;xj+}uTO3hI zMbJtJEvC`dz%=O=5I+O>BGC+Zu z^&u+<2FQVHtu+&JgOlx`yGYi>+7WfxuXpI}-6@#!Ce-+s#Q)8iLRTieE%2sQvwEtxtZph=8TdGvmQGRUuaXstSS zbD}&NgaaSdT(Po!db@rnXv!}6w6ir81&YyTp#L>)ra!Wh(U0= z*_fUkOGJ5E|6;{Z_CVh_iVR^EXJHAmD$vT|RwZ^4&d6#y;Drt|wy&VMLjSmZXT{pn z#d-!UhjAB>b?bU8VV)yL@r>aFv;T1Fyo(?$TV6Lwty}p2Gu-1CI0o#ttWcdi26? zu;Ot@?5okO&5w?#>3jX@ktV#C{col2&o|lcaRIH97u$5;5BON%AS!R7ooz z$6pu_LleJE9YU#iCZ*u0RCOh%J}*+~K_9iZAvK#*8z~iUY8j*=TaI`H8n3?j~EKq4rr6d%ge z?f(5sDOg*IMu?b(&${W6v^eOI7XN;1iU27aBKvDt)Y7u0Lk?mv;?NwkMTe=^VYW1U zX3`^Rx(Kj_&(ihCrwozZb!5aE0GyE>$OyDs4UlK(kt!m?GcnEE3Ldvqzs^x!|z5*!yA!D7hE_u2WJyk(H^BY_@68I zXwGWX4HuVraB-PW?k)Kl>R{IP&%l%EDfx6fIZYdt4-tx}6(94?Y;ijH4zeeED{Z|y&~ENTFY+Ej7X8lGN%P$Ys3DG?vpc(_$<3QdnxRkqv_qcPtG=` zcZQE3Zyf`oYgy4l?S@bsJ~Z<*d|DJfR~*thHB(x5AhT*GsW~V(0DWj_ z)YJXV5E{QrOeJ{_@@{5K0^)FN`;PrdOn(mRc<6t(uiFRo9re)tC#mnZrE1&h?drMk z?jrWm+tn=bok1$~?)X-4$d1q7^JgY~-p`-V0&G`n1n>ZS$5=$$&d*Y{{*+de)PssL!4)$dNE4^0gJ7cxI zs9I-0wzPc*oGDc$d_V_+*6VVJAVgtYEdaJj+wz~HivRpuvTJWLoGFh1k&T*|(yK649akmh%9A-#jdJN#fM#QC`HEB$@h71 za>QA%ciu(Hk%lh^*(<+GZhH*nv*Q%5Rw|4ptU$tWg0@Q!H)+seuagE|)b3OYQ9C^6 zGiENOx0}(J0bXcCIe9fw1>dtA*`5pSAX=^I9aud#@ps(KF{ zOO^&8s1Gpa_9{HLKoYI1AkT+U*KYrk^#O1M5j_u<@TU67VNBUTH^;_tW`vvCK0ppf z+F z2Q#KT+JSgSg)?mRa5)hE3P7?A zY(43=wcr_=44k^4hqIhavud(0>@3(ZuRmYbY-Gbpc;mu9hg2A993DcV^e`Pz+owin zUhr=@mYtDE{eep%XuSOjG<~*xbV!pg=HjC{xt9Td+|JMA-NImTYI7}xxRQ)N(^ zx)%4nuu9^#ET|eUcqE~^Twal;mdXAj=DAnO!OW?UZUE&*j;QfZ=eKOGL~-i-FOI^U zpF7juEHxlUSS|#X6%O`6RDxj+X4UOwEGyK$gr$Sdi<2O3|5uI`2a z=pd^E^EH@t>$}v`L5f!Y^#76fCg4$2+5dM!0yGflut{(uqfw%9L17dOXaWgTONT{4 zac5j&#uXu95l}PU-^}lQ-uHQZgzmb1?&q9)?so32Tg4|Z{RP~ChG2Pn^Z7fyeIGO#%&(^iz3n$& z^ZkOu`_ugTr`7zY&QSAx_R{=qV%3T!eDLjN(Z2O>h~Z3dKK~eo$J0dw&DGaN7V~!+ zzT+mN;oB*)x8a)a7Yv^YsMFas{QJpjxX)4=-Xd15aPWbD6&{8M)o>;_gK0P#i_hDr zjm7+pMh`I?ox)&hZ=*HeFBtt;1d31lt9pB+YqZZw7+sWuaRcwLQ%_&Djh@CKI;ZL* zm|OS)cE8yh+Z&BjcQpA1(33R~#$!`Ml`Vnky>Pdb5v!%lL7RVU<)9FsB<}N6ixuc} z^YGxi)c4ML#HLcU7-CO^YoWsk#NK9d&uGs&<^9sP5*e z=4^$z^%QRsaHzhUS$&FMy#w`*vjPz~n_RK0UbIqu7Sv;NgR>^`- zlBUmk!1ol_3yUd3YZg=|cZ7%8v|jZ$O^~8j4@EwjP@Su4)1dZZRm&77Q`82NspY&% z8LI7KRx6mZT(uKjwOqf7TB}X%Ke29xnM`r+e2=B&{_{SirCQ2R?QIB9lU2Ki`Cy%v z_RaBH+S#7kvNp8~RV`DTLqu&)lUmA9?Ez-Bg1OvPdy%VliKn(k)#61Refz0erZ|ti z%hL8Tsih3nK2T{atzf=etEK&XoR&83sjXGD9ia9vTg1ssafXQ6-pSOWA{JAIYL7On z70i5BZH23Lo2Rx()v~mOs+K9vig#GrKFQRwZYe{x%WgE5Rxq7hwR=jmv@M=mN7b?= zzqwgT%M@p{sO@V~OBt#?#jI8^x2#boFLKrLma4Sm0KV{_@rK&VRV`DTjc>EG`#UaV@F;=KPBOPggX z_CUW{hN9jKL>a2xbDgoYf*I$k9qp=Z@zgr1mZiN>)iTBT-5YfBL4LL9stL7}q1r`e zwSw9DvX*vZNK2cAg_ibPd_liu-5#K714wcDiQ0qxYVlpv(#e#e+Dx-r!Ay14PI1)^ z_0;C7T6UmkUeSI_wM)0Lv;&f8=XuMXU8fn?faJ7Z;`0;Exw?%R9mcS zEy^DuYO|B6mH8GjRC|b7tzf3RYA+7YoOmUvZZdNS*E0bEvQ0-&$ zjHMOKk1Msb-;Qznt*5p|)v|7{R<%rV@3!m8*81t2XYbtyQ%w zZ9vsB#aZ<_OM9qEEoG>7#av@)1=HPC+tF3K4f&*QoAAZ0+k4k(zeS2uB5D~e?h{L~ zw9G}dqs?k5;@tj{I{9~_)yXYL6txb%xD(&;s+K9v>#wo2hndt;hH5unYb>o`2Dobb zxoWf0y?%=?ZfRGpmC^=~;#?qV4^O6+EtxV@JH@P4FtrU@+NH%>+M%A>+%~n7R4r2+ z=N~NXz+`GUTu_E;-=AYFtzeFG)gIxho#LsrR4vEkkJm_Pnc`d{YIFT+JLAF|lPN>B zmzmWH=Gl5J?bAhC+S#7kGF8hCbe*bYinIGwmi7pfTFOxEx3i6<70f7CZN95^iKn(k z)nc{Qx1XwIic=|Sk2I;J4Assvs};=p7qzsjMrmo|p4wVf%hJZ1#K}x?GDK~jNiAil zwxe0CU?#h2OI)?vJhe@2YA32%rZ|hY(8))c)KZ3Oe>cnMWWl`qf|mC6k#4{B)HH8y+NUdwr4>vESMBZsx8Hhd z%Tz7vcC@NxiZfEw9_LrfrM)*?P=;#r&1wZ>Kd(-%bk#2L)Yhn4PJHjZETv_Nvkn_h zvH0;OwUnXSRprLg3Z{>%Hp5lRog!&cwW^k-ovmt_;!F~?gH38FL$xJlwSxKMb6VQP zr>K*+d1{;5)b>=hOmW`9?oup1#H5xoRQvi2V`&9*xU2SHS8a=@)={-=$&aqmeoM8b zqW0H*wO*XeiI2Ic_5!n7ia1X`tEGMTWG!tLVtnnl_=0{*wWCyR04dH_*wBi_Pw=b7 z_e7JT4AnZ*jinXLP*?3BSM5+wZLX?i-M+n2O3M^ywx~VPuhuIqgBr?E?KNh#f@xT; zrCmNkOFP9=YpGhU<||Y!Q=C*$JJhe%Us}pg?e1%gr4`JnuG*2VTArj6CzrLU?WAg% z;@pJovsiqXNiAilw$iLtFt5h7wCjdzX_t6vYg8@k_6|H~hEa+sPH$0rl1VLPs5Zl_ zRxszfYA3mBLj<{Vj9zai!bhc`)$3HHh>i8L{WQkGPUeLl%d)|X0?J@;HsVN zsvYX7%~iE@a+RuOic^n$tXTXMzgm1x3>TE4+T~XnODmWzuG&;r?G#U~rD{0?9i(cR z;)FzPfnP2Bnovs_svT)oE128ybm^yj3r?yPhvb4)y6elyq*@AtnSiI1$7T-lJ z>y|Q9yY5P3X$5nDtG2hRc8RC9rcLd5Rm&9T98o*cq?R&NJISn8Fb_PVrM+jUmNxFG ztyQ(`x6TVvTBbN3VIM0NAC*ikXCTT@?K@W(ODmY8UA2d~YPWf6n^Z09c8;oLigTr? zEi$R44AqvJ)e2_W-?X$(oT#O3@zgr1mUY`p)iTA|g?+48yx63cGF1E3<;Kzq<`h@$ ziLTl#+}+fEi!bQ6ouT%z720o+;#@CkM<-J&{T4D*JKL-_KupuqTH5*(w6sH!C~9-@ z#hvDhR4r4SfT$glOfBn{GE|#tRx6l^uG)~Rc8aIgQnj4s-+5k2%M|BUY@fyAmPsvT zsP?AIj7}EJn}5~PZuzy_Z;?;uTYN!jsdlESEkla4zo-qF)KZ3Odz;k?<|0?^Ij-6z zp4u8!%MKJ&wM=pD$M#t)erhtctXs-Z?LEIWmR2yIKc%JpXo%ZyJ+-x}mK|v6bJ}mI z_9#(1*00u^fu!HMY7aB3CD^HO)n4hU-G)SQaudF|O=_5`Ws386>|@2^VUt?Qu(VH< z8A~geJx^+BcMW#?E%J$4hXCw1J}V{Vm2-%wEHSB+98j5WRw)=8DnY(k$$Te{Q-&BP z79W?4EZq_^EX@0t8Ve(slXMMiH3 z=7&ec<`0&MH)=_K9f3tGevY4v?}?s58Is4F$%6T_l9wpCiR5`gKG#p~=Oa^w#!1#_#C z*Zy7noJ;amLcYL6rVPoS{>JDH!JMe%8YNpK_Yv|`6PYq3N6loxyi+UQI9bVMBtMJ5 zBo;@$wp~wrPmKJOA$hQwESO3qfA@@dqlVx5Q}3jN=~K>$=8_4f@ye2ym6zF zb4mV_kTK`Ck?}oYGi6BbXC@2gQY8;nvPE){kP%xYCsT&x73ie~ZwRKllD~XfyirE- zX9yHx@!$H%sjkgzb(A6bA~RVqe|u28@qm(RNRA2lG836HBzG~B1#^~?FH~|Z$tMW; zaz7d06Mm))$xmW5G9ZGI_O1xo_TrOm62PP*|hU70W2OGR0m=Q{TLdj($?=NI* zt0pH?hUDLy$%6UtKJmuIO0FTf9wA69j$QHOWXg~{%uE(cM9KRrxt8QoA>;1CzGTLA zlp*;x9V2|{G%giy)GFB``2iv0F801;)*xj_KFCZK%#}(mRdN~0rwVyaGO~=% zE_o$lcY`+s(_6_0D!GQ_od^_S@oSTjX)|SL^KZ>$!7Tr?cw@`s;^$hDZx`}h6PYq3 z2hC)`T%hEblAA~#F64P8GG$2qJJv`BZwRKNl1D4qA^8IY3bFWnKe+=g67hyhKF3TJ z%wvBNZ~XKZ@kSsBa*dF$^ONyi$kLu6Lz`30WWh{S^3zJrCHWX3UvDB)hUAB_7BzT7 zFyH@CY%Wu>Me;uoD8%9mOk~QCTw*2*=8sA~T*+l5Un}GrOk~QC{4G}I2Ac&lO380O zCVs9VIa|m#`pMqhO+QnHEi*r{o%vCkXi_6PYq3ufdL< z!5f0ZGBN_I#dDdeb$Oc|1&!_KL}8-nSkqbOx)^PkOR!F+YQcq69dCX&}9P>992*wV)48DWPDF}gEAx^VI~V^j*_2MaxKYc2>EUknKC4A z3>&>6m;p*&pyVc!e?p)Ti{E1+Q- zS8|{?$d-`*WFk|B^M;Y2Y*Gv}7x~O>L9wi6*f?SIbBo=?dM5YYMzcP~rbB&TuQ*tiJ%2A%8)$KOcu<&O75lPT#~O7a-E;-AL}SX^7kW+ zHVbBqlAG=kKU*Z{2s!R2<9lN6rVPn{G?NAMMMS)Dos!E)UW-5>7GLfs`$tjAkUYvv z7R>LJJY2~&Bu^9avwpJQX3CJfqtNIL!3x+6r(pN;vA&pnMy8W(ryF_v3P@@?C*n=q0KYQWWlUlDBd_q z$u%S|74l0aGG$2aZzc=ow@UutPVq)9$)kn5(ogoc4a$)G;>kvD2qviHB}#50`Evvc zvG^(znKC3_VkQgb@73asaY}YbzD>w4`^oq&txn<%m)y-v7R)(HPFHdu3*@0fUY(50 z*@`l>8Se?hXOi~-;;lf$q$>HPCF18?CcTS5Ar^1+ll^|C49RDj$%1*fO1v>!$ri~~ zLT>Vt@jcN8DMRwl!;LlzrbNjnD7lQ}BZa)iM5YYM_nXOr`LywdLgOnjTWF`ydP9;CB^L-I=qL1OWZ$;jNxr3}gWX0l*xCBJ>U_&LxY|N=BxiDMRx6CmFpV znB$auo04-$?jhvOCNgD6USuWBn$$Pz!hl>j)HL@%Kz*%8)$XOcuMXc|zWvj4bWhCI9o+Mw*k1gJCNPZe2NG$%NiA))i^UP$y%vJI;N)Dh) zI8%iDlb@W13-%PQQz%37=A(?>5X`TXJYC7TB=13>5R3opC*ymfr%;CES!S|e8fS<% z1}WJh`2ivCNk*3T?2->MlLd37l6T!Cel8>VR3Y=F@%y}jPvQ-iyfV+|4Z-wQ^7Bfr zA$cbPg;+e*M5YYA@mn)lFw3WlH?CE3Ey=eFxkEBC`ygdV4w}h=xj@N7mE1(~a3QCe z$dn=Z??)QFA()Oz-WAdIO!5Z^6!0$*n8=PxKF3U^i1XMr;*IB(92kJ48Xsx z1@lKG@2S!DO!Bot4w%SgF8SMBqsA)d)fG4t*1uG9;g3CJW{kB^M~UiR3GU+$|ZIHAoqfKOSiGhG2fJ|eD}hBhB(CJW{UC10!LT$0Zhat}Wl zBWm0D?2@-0ZuEv=1}b@|k}ZAT?iEL()eU#&ajjr z`D!y+FfU#q-pEpN6Up}oxwnZ-8It>&$%45=$s4M*J(E0A$bC#?$0a|PWAp|^oNh|4 zQgYx|NOBM;#NvIEk>&g|WN7nm%w)m*^>XpXNG0cz{5v7ijpmo zhX}b}GP1O1m;CslMsEn_=gY+AWmVdqNq!T70$#(Oj4bCjT=MB=av3rAE4f_BHB4F{ zRB|oJhYNXs6PYq3|Jh6y%vZk^Z)~p=Z#0p-9)UtEen2uZ z{Y)8>i_K)gELQUEN_I$|F60AEWXh1-ET2j5;t3{S$&-{EfE`YjkPk{mmiSq0#rbD5 zSupRHi8s0`IhW)Y5Q42*w@CNc^WEr1b@)2gTVCE=! z_YLBWT9VHY@*&B{^af>U^G2D&lX^oi1C$(BaudlvAyB}3#7$(%kX&IV3+Clg@y1n3 zc1XTY$ow}%_gSaVX3CI!fSD|q%auGt$pMTqjwNLN8>IV?>1WE2+#nHpQf~;Rr;@)} zAb!pz`AY-}vH0Q1$n4#eA^B1>Suk~%h&P^6vPJSAggh`AS=zHp?rtUv<~${rD!Gj0 zlZ2d`j7*y;L!195>+huA5KNkqbCg^|@^%CYcr$l0GHs>|$!D3#f_da(@x}+&YkMYn zp^%SEMyAcRF1c0qz>?Zb5of%TV@hsf(osUrOGakzrVMR<&`cK0KQ9uSM=RMOc?$vs zyh1w}S=zHp9&08G=58hbbe(u3fSKNzE##w3WXjOyuVsfjsW${usN|=WoJ;b-LOv!L zS;l9Ve21AVm`^VhZ1)YlJO6+;xj2(Fzcp@H=duT z?HO^rQ;QHJ7XNiJGJ8ruVtt%{Hj^phT%+V`m7L3@aY8;J8JVq)GPJod%V@J;`YCyk zk}ZFWWlVsK)mtgT=7O3$#)5PsEJG&l6#xUg1Jb^4=A~Y97(GLb1m@&#tHV4gf*yb(}x6UjFVIp0L449OkM zWWh{U@(b6BpB<8q7xM6AWR7)|A^EZWjNTB;kLQWaSII{zIhW+?gnY7}?B6+|49Va3HQFqgF-qP(N4#N?oFn8@Ok~QC{6{lcFkhT2 z-nd=KWhAdfpb(1}n8=hNd6bzfnBOZotmGP!rwO^xM5YYMJNg*CA(&xG?x5salJ^tx zNE4YdB;R5t3+BCZ#2fM1;^!ukpGOFS_Y|ARlp*=oX0l+am3)~m?}@!H z%8>k4Z=*K^lc(eyB?qtv=LCdYoQ%v-lrkjWU?vM@^V#B!H)n}Aa!GyyAxJDf+C-)d z$pg(~!OT)}Ovx6>lY~6RM5YYMuk^B;il1vq9xdck{bV$aMBAVY$uIUadP6WlB`;8N z6Um<=P>99H`pNh%WQm_$@+D@nVE#Tuym7LU9g=Soa@bGyY$lm9w7Hv^ESPhY{9T23 zBY+)tXQ+_JB_qrDEW7YH|D0*`hG0^a{H&65Nq!fBLM%SsM5YXFKGRGV%)@7jH)bo@ zBDqS)6HH{vko1WE2e7~72m~YPzn?ElXKi81F34uZ^ zep)iJv}czbGLr>!r;?vmaxKX-g?ze+Oc~nzRS%;#1apd#XDhjhkni2aW)_Ovq;>BXf038Is@cZuEv=j#Kip zGjx0=xrdO?G?8;%@**>tBF@%H;*DuawwUw`LJ+(!*H8ApV}UZX`Dim)F!PmsjFQVp zK3m9V`N_?{T+YFzRhGnpdJn$yJ_cPY7+ zNe>|e!TWNPk!63wB@Zx@1#`8Mrzp9J^^?6(lzosg^v28GjNTATUnL)`WQXK$ z5Gcgr=OrW4X3CI!xtT1O=T6gc;~E{GaSz*BBINUvk!8P5?sMb(vzZ(q<~K^dPszDV zI$6jUBqMXBNg3K)*VX6^!E{#g6eU|Ee}q6G7N44oOm9$z%SgUS z$iGQOmhssor)fkG^P zk%>$hdSkqqESNtld4iIgNS-I;i%n$8ko?bp(PqIEE4hb~9g+_b@+BrRWk|l;OcqS@ zc=5*itF=Ajgo@LIKmqT|^^?C&TW+K;2XOw( zX+fY6i(h3TQ-;|sKMDD26PYq3_cN0PbE%Rum28n*B;;v+ve)XQ zJ-g%;=|*n|rn{0iTp@lgBl$A~3bFV#CNgDc^F?N|VE#5%yzvJm*N_|&@^llKG9-5~ zlLd2@l221|Ey*Vcd4`Eh8IqsGFlA^Pf@wWfY|c`06UlEQP>99LO=QZDJlRYZ%!5jP z_i}B|B;P3H3KQ9J$v<{5+Ds8=tdbv4asa1Gom?T$G?6Joo9{J~1@m=CyfIzLxg>8u zpn&(~n#hzPd5oDXm^+j_NXZt-*b4=wS=GfJ*uQawTtyf4>8rVMT72DQOv!9%8>jXy1aob zm}8Zkt>h+>GlblVjQiX>miXBvS3}^NU}jNH_BX+vDRwv~H)7#m5RM9C+ZdGFvR7Jm z)S>*~_0C~OjYtVc@5$MTv)&>5oS`9mMnTA)YlZ9&3oj@se_s0GVy6;h9fgGt;W$=n88y@iy|jjkz6ZM z7QmlOTu#dh+fA1JDm9&dIc%t`FR*NyY12%bX4*8fa#ca$`Rxjaf?9UZu-y>0Pt7b` zFsFY?`B9cVGO%EF|CEXYf&+@+-24fd6`58f)v`BPc7gm<{u!=AcKynb-G!Md`j?gl z2UNj2Hiy)(y#|efjPkEbA^{4vc~tc+xE4QlgDNFApennH`oe_zBQ1MvnE!7I+uK6+ zW-C8Xu^+gh2y_$#M9F4R@-}G|hvNsTvh2c4vA>tvPu~#=Oy`X&e%VW7Sh__3|JXQji)TJN} zHovVQdxO&-W>nReqkspajfCf64)`bd4XudGB(xz(igQ#|;s;$R&*z?&s#18K#P{+8W^BfwC! zcPqc4{0guAmlh41P!O!L#kCVMi-w-vzx+_ko)F--ias$be`IDwcND;~Pm{FrFL2R3 zFpSdJFBK1+(w`l#AjRW_Y!s+IY`-L=uc52ro)>@2E+J=2;`vf>>7@Za^8{ZFfMLuWS8{GC>C%uXwMMym5FR)FDX`jwb^Q>+Le zThUpaKb|xKSC?nf92$!@Rlsox?KWYYzj>p5g>wRDqE8HJH|AQF{l;L7zQe4@oIrGZ zmUHo81mph#jDu-bWG*_z+-&}Gs{fZ!Oh(D)4#l5>#!;CIZeNnpI4YMPZu7F(ye{y1 zW!rp!`@tzYDt@)sd{98!vN4Kb$mdvPHA0Nts4GW@Ja&&k{`#}*{?C%+g(@G~7j07_Jzlj$nLzzaoLR{pl~e!&4ijLmf3%O(poZ~&4kKDTTu zFnE_0InJ_WF3T?UkH@b5$0U!ZzcYOYg1B#1pmB^i#lF(>Er|epgfiqB^r1$GEjH9iY5%FmHP8-?B3{ z%lwRv_AE!$R47pk|@1%tBk4RR9voTZnSPye?$+XE_t~ zc@E_h^*KIEYq?lbgY7dWt&aoR<#(HcwhOmsT(IN&gGb=r>1F;IfP;M|nqaO~*#N^Z zj7$tz`4cnCyIT>AhlPOv+EebzaI`3As59UJ3tdF@N=EM+K3|H0`})`vj3#9$ zamNcUn1+yQl@+PVi9tkyn;Uks!vq(_kx;#*B7Jau^IZG4nbGtkNAQQ4=Pc)kv+@uG zGWJf(9$>{E)&II$!^Q;4XG+jB_>06i1Q%bCQxGl5a_&aM4AAhpd5$`D;kDp`j-8K5HdOm10=4eI29xE@k`$)wp=X&Q=C4>y8Y2!g~_h) zOv~i3$h2%Y?dbE{J8idR@9>=ViaM?H;QAdk_-bF18%^I&{dUpvl%tPJb!_^;ZV5*# zvN%a6d>0xvIuNW{fJ_V)bJ@ocGx9t9R}TM;%W}>^KMO}@C-GmXb#x$7k!#t-sMdl2 zV^J&9il$GDW}F-;L3*1LKOtlvC(b|^E#dP8^klCK;K{>IQBS^ezURqxrR_bLH(We< z@n+AHYmfG~-@)~$*$BH;VP>QdhBf#aC&xd}-<6+FwHgbWH0YiJ`7$)nX;~%q*TunQ zEr_}8If3Ar_1^}sFW3aZ?QjzM;}O-Z<=0v=ugg@G-x6HZ6~o32tuh20XGO;kv>NL< zk6HN}t>EY;XMgF4O&EBBRc{bdSwGOK+`b(xv85SP;zp+h-OxguWAU#ER`fu4|JU9l+hjR!j4T!BFaEh61BrNr$ATIf6})Mq+oYJv-3}m*S_8{X+={qt7h+Yb)}HoFx>u@5#wTdng{<8jcJr zLNF1I%*n)OmbRrLb}z;#GAg`S$e3nPi)^cJV%luy?ov?TG(_AROYGHL79o9*lh(N_ z==f&YsCz5F31!b~h>Q-ftQ(xF-Dq)+mCl-r_F4h|D}PQo>%Z*Js|)t^ z=h#b<`*UUBU;1;%5BvIa(4haBKV$up`E&Y-?fv=E0ZIHh=fb`GX%}Xt6$aYIw0+{a zZw9~RMvv87%7aCWFwi_6ER^1Zs3p@v`hX&d#5Oolrl(2IK$GzT16=c~_LxBuKzbUB z2d}ZB9e;NYhUZ9XVH~$WFgt|$#CuM~zuO!M9T<*8IIH7>-2op<@qv{?gj3V%8#qLz zB9*NMANBgtgpbuXY{K9CZM!Bq`mqxqMKzHYz2dQ9hz!*a9#X^A6#d}MJY4BLkitxi zXpMz|zA3$^zA&RSGO?Q$3Bk5wyn;`Q;nSu3-sV&6w(YZum~}jXAq7g_$a6~+D7m8@ zUptcx6q6hmeq8XabWT2>anXOVKG*d6U#QP=h5mQzbAUp(tBd|i^|`jE6#u_hpK}zL zv_2=Fu}^(ob*|KBwBwG+G8pLyg~9j;kxg~48E;Adwcq5f@lijuw(eS)THgKH+3YI_ zq&iTov=hXa(p1`_HGg~2{LlZqcm9_$|5bi(zp>*eT4}$5Sz^~qso4Gwpfa3=l6NK5 zo}>0A6 zSvMuJZu4d3_r3ION0PHtGqvD5^uhFnm>zMPq~{`j+6x2tJFL#w`MU=cqodtncL zL>BRb`Sz2~o{RWtFXZ#1kwyI5ir$jT50(-PelLxr;+sAyR>(5QP*B+raC*X=7-<&7 zXazqZJ3(?S;)ne^PTi4P_&2i3R1>|0A5QOc=z-r&!}pq7_%|+i)3@dp{*4RH@-?^c zZ;J~pSsJh%$!;B%k$a`MokaHM{$=|+Qu^1v?eEdk{=e4#VrT!4+uvl(`hVB{vNhBH zTiV~PXZ~ms2Lmn#0Ys3iQN=47;zj*`{^T8e5NP<4mM#(@9T;GrJZ;W6(8e?KjDghGS0Pq zemn8^a>e#6PyBjUyv`FJ*G~K?72mPKE$Re_`(p=wFZlP`=Xs$d?bB_On^{5W`?qV8 za@00Sn|!B#TT9@9y+ngSo6HPW%Uj{JO@6jdo4nVTm&cD2dE2+iYkguo)#(@WwaL?c zVmvJ87wg*ACXY&p%{nU4CcOsuVz+niQBGtr6+!NJMrgL{GZRc^mASDNuGFKJMpNBulB@`cEu0##DALLxBYw- zzrz#XgPjuEzH6*o)K}VxAFJYJp7=&rywMZ?Q#kq<-z% z>kzbn(j@KmXoz`ZD971ED?xh=2CFx?V`!&f^~!zP>(~3Wl5P>o(UBY z^R?Ie6Jkjk;t5^;RYS}=)vcXl$NMYu)*NYBYnQuC<+%N{GI#LyF$d0+cH$SR_}!j( z2Uq-APki$@KYg%@U*U;C)hweDSsp=_M7KBB&)SiD)z3EF+V|=Nw@6-b zuI$~en`b8J<`f$ZF|V5s@b^J<^Pa)#hu}YkO6kGsyXneAsKmToeR;Wl@|@qTt(#Nq z!(N_>Sp$6&Nn7Pi@0g@=R*d#4XU5p}o_;l3Dko!^S2@$Mi9%1`l*m%BSC*xk<&D34 zSx#}YoSDedeXlH6YL{|@5DXTP;_!vUjBoZX}rwf<;#i79=u$ZxI_fL-g!82*@u_47>YG7ZqKfF?o3=B z$jh7bGMv9BxTqga=9CuZeGhX=GH|DBS1GnWvP-MiRFpt-HpRz+jbI*^hwySZFU77L zULGx%jlsGNG9>KAF?DDz&D*&bvGNCm@k`J)!8x26zr%2V+iwutQ<~ROekjs$_iw%P zHq+C#mFBmU2a$Fp)0#9boc1Hcca`RS8>~u$BK&+5e||(zwD1^S-X+q!9K=goE)y2o zW(&KOcP*{_AtPA5MeQ8I?BN9b1YV9vz;Um6y>oKH8^d{dY~r$jm)YtZ7_HtJsk*fg z`+6v&;#?SA#GJ3|uz<_aylmv9INjo<`hz75^YRh-HBrK#p@h-Gou!p69cHqSeS+0% zwU84?xHO^eG+s_gsGG#gvl3;V!poBqzn;y@yu{_XygV>*c|I?@CoZS*at{U>Ey#tu z{3>yIF)z0#E=zg2SuPtB?)z;=X(HUB{MErl@8Ia5_KoI1;p%E`6r~31uwY*Ae0nH&xS=jx>dl_Wh{Qv(IUu)`^6X@3 z<-DAn^ok4IxF64gyIPK>C7Aj18-t6UgaY2nmJEfJD=32*VI7h~(I{7+JY|y|vj5?H z0#{mTt6>H=18G*Ujz=_ub?0T2R{j{M_!V+I<Oo(-9*;lN)h;e#Nh>iSuA2Fxbb3fw{Yiae$VD%qi zdno!xZdrN}0nY8B{dJQX^?Yxk`6ZkB{9zj<7u@9j<#Rx1n$%G?ZtoZGz&gBWN|aCY^R9LGuyCM3j&-wa9Iho9KAj8tz3s%)RD8H6e!nX|SHyXu<{FjfVHqA2+|pN^)J-#FIn&(? zr@9#?I0asY3DOMj)eLVw>NdkdH^ciUdF?jXKEpK4@Q9Zo6B!Z<6ZZ@E&wPu=L`d3% z{)~|HuoI?vhbK9Bhj5=u&mUnn%I2~lEW;6wNp;52UCc2MD$QG2iu+!5;hgMU4XN%X z18zQ#D9vvw#q$Gl@O*=F<3${G_6y?#5xegIcO5vl6UVnE0XEG#)=GP$G_L_XIURCy z4y|B!PX9r>v)HLiLbn@#;JRawlX6P?#y_=>c>K;syf)T~B@3(c$wZb{PHvy&Xw6cZ z$gQYzc&; zRz^5j+=TC#gz$GpMS7^RA(P)i(NNdIXu-}rt$Cq&4O>ulQA3dZ6W{Awn zmfoRgVOO}L0nG)My~?}NN~nxlP`E!@Yb{FR{lW zzplfjJ-Ls2bsk9eyM`BD5Lx^Q=cc2@q7SQ*^`=RxNX$U0lpfjImw82ZzmJk+I32GpL6GlF9O z7`ZBNuZD?2uQXh8Rg46*2tPaX6*`)t@WWLCMHLDrMJ)}xmlH+S#B@e{dgFnOMP*_k|9xyac)X*9G?8vxFpmb$BnieW`VS9n8B zV{@(-lgfGoFeeHy9($C5$9~=U9YaezbB1Q*2H$~-E3N1XE-i|NUY}i#y^f7?=&$*7 zFABzUI2)W|a6I^#*m>OG3>K5ebO_cpmExHTJkWF|9waz3lV=j^DbPy<#zTP7`x+fo zzQ(xJXI6o`L}{3D0_>Mz?MRQlcpGeC{w-Nz`gXZ|9a}NZCfw6RkXe%U{el%T+=cNt zkQJ<6jP%4>0?X+Z>>0exY|%e*J>eAuPdILH<_Y!m4qoC0=Q2%kZ)Q?vil(^tEtxV} zQ{3%!rVP=Pu5Fw{kU}d$m8-d`!R|q#NOF1tnOb=hA-XuzXVeDgGfnK(F7Y)@?9(o> zUT!Xkh5$5luecT^H@POler z@zhu`33jwwIMGABG{4W&DNMmuw1ur`JaJRr%i>lvhWL8tV{C#+a^9!_9LVu_!3vpv zg4N4Vm2UO+uDB-QRIYcZ=TT;jF6JF;&kq}%#hS>sm9-@<(8O`=5--=p3GEWkK%!ex zv?r%mX?0_HPg@pFRM{C#n*+bDiNbAbq8<`dZE*HOei6V?@DLAq>m!iah38}GlZZ|D zMb7W>VHWrNJf98=)|~|(eO8)>PW5%L4z>D<^PTt(i?g@N_xD9{s_+%(LEYMN&wX9N z!@YREW8dRn`h1*hk?I-v1?(s7_C}FVf@ewW51@STTakNmnka(DaxbzF3C!z~YgM;i z*EN*iGP7eSucf&I50SpkW!NBR0C$5I%*z>?QqlD}Y$l}a;ENS4yOV{ycF}QJht<=~ zFSKIOUD<-i9G4Sa-5RXo0OZOcVkLhI`0PjkrxltMLFW3l{D8!yw9}594!*NQq8#B9n&w6pmbv&V-aHaNm1j zJjIDWfuhLVK8>TYQZaK_0AY(3N6Y8t;t!tRm^*av7Rz4e?9BSPb$KR!a!zRG>Sre( zF6{o-ROj*@SaRUejAlF&{XL#b1#*Ukd=o5tCXV>w87o$~y`gnN0LvZTDyzO1PcGOg zPiHfBZk;d{Z4|U!<%mV`Q2K_}({OCRzPtxS)Txx>!}&9CUTvbzSd)%fCFT8%@U5iMGci7`x`x7BBA+8x~Fs`U-LrJxAjD8t$d zkG4iTE;`n$#cKJ6L;TT>yPs!;-mnCI#yC_absC+Mg#}eHkM3-B*5HV0EF2w$=ZuST zX7e$7t?$jqcxogaZxWD{=)|2Pank=M%T99zQbb8QMo~$LPTU@u)Zh2}&SRv(B!0iO z49!qPuuhpxd&RWQ+6Io_(XI_#n$gw<@Lb)jsaA9h>K@OhM)81QWPCQRb8(Fa1jh`* zX8}Gfd}425Ocha{8qz4-v0 z8Y$|s-AhC7qs-gwXFJjFxZIGd+yPh8pxmMIk9?Wj`LXSJ=E7_|#)xyrXj1#}dFDzd z6~jR`R^gFrvXEMV=i%p|H?@`@s?XcvSxsZA$?|_ z^1Q*~gtBSeaCtr(kDRwQVTVA%A$&WO-+<3(LI|DdG-Ir^DlgAYWr_Jj{8;9#KJbU+p|DgQL`)`yVV$NOdp53Ga{#E&h{zCbk0Uh`}@;+r>=av0e zr5FbHDsMK+`{n!p^YT8;yuVyt8)D9*c#VuybK|%;W$1ia1DwmkRpLgpK$@5~s zbTitEX1A%DQpW+IYM3Oo{eocu;^ma{^dn@6cKnUfPikkG3^nNORVS%o9V?d+im+s( zb8}Cb&v;^64r^N%75-%9HSJ(kdf)%y`_8Q^&xOhSWxpA=H(Sv;+bz3u_@V;Z^l|Ql zlu)E7;3XADt?k8;aKJzAT_YClGw${L92nQ>3xUC~*OM3~>8RK9ZD{!0-^W7(?hUPV zp3g*i_>e}AXBW_H6!Es?h@Vv62=y_hZQIj&c6SO0b{Jw+Y~(rcB=HNhztW z$L?N8-dzJ)5c`El*cr;hJ<)Hbce1eUIRl3x)}TJ|jBD^l8=0)M`sTOzRQePv+UI3J z5R2iaq2)magzfoRA${sP)bLe0ZdPLLVQ*^g;*Hh=@dBKIR{q)$AIOeKXUBsf{FiUS z(P;xim7i?K!@@1iefex;cf1(LxdbxUT5L{3h=K>)F>%ZD0q0>T=N4tdhiT!+#W@qk zMRR_pJ*P(dWLtS}j*SiFc{p*h0c9Tm9ig2zK zw^!Z1|LwkY`yT7I2|u*e?b`1t#=2#j|DV=v##^9B-NMcL)NQZB-Mak()sd)MelgWA z`Y!+L{Qq$MzVZ%=@eB3)2xR`#`Yry3PH*eGZv7sE;?7Q93qTAIkJFgY({_-Js`9|%JC$;}k>%ZN3xt+K<$^A(@ zb0Vv93)?4hXUFas=|9bV<^(?aENs7D8oavW&GW{m;2j#pJFzJpnZMn8tpHX&*anh2 zBQm05P2_ydCK{QIv6kle`EcxTrROfN{lE*jl|SSalq(VBseGfg$skhV6=_p~}`k zC^%}5Rk7HkIIYHMr%A2@&$!@J}jKVaz*_``q%%lA@exe4Ew$1^82g zKQa3E);HVyJB|LG2LJL9%2ZYXZhK6^v=JSN7ee6;Hkf>8^^2YfgSb7hAKxw^zsql} zYxok10_)HQ)>VO(_7Ybi(F0#W`QSwCELoMqyQNfQEtl0q78OfsBwaV2uv+OBTvn7b zwI-Dxzo{uq1@PiXA$9?C$|ATK89fVAEq6sD`KUg$2~?r`5-weCuVjOl)`GWlVVMIk zN^RjWN<3URjZ1p00Fe(r@ftHBpdx_+VxK@>0%RA%L)dJ#i{T|KtnA_#KC|f$2(-D+ zYUSHm=rYH~F(GwD>sr}UVLJsK`sFQ7cm_MwO5>|GpdU9*1N;#&MJlg5T6Rh^B(NH@ zGA+3AP%!X@F)ZFzr@}7Qz<(EuqE3NZcU+9qR$+7$w#|~@sMTS3#VVA|q)`4h!Ri?L zbfLWk5n|~<2=?u!a9%xEiov?n(vic`actl!_WH_(4xzj)6+7^nw_p|DQXhtbf|9g` z!L2M5k9s47f-mHCW%NZ!)N1{AToF1HjY?es{}c=z7Oc9Dt!Xb@2rJ%y!?7W>N0(Mm zgB`#BzGI7OCZ_J_flch98Xmp)kIm%5j$Jz2S&n}ra>p|~Z{@2mj3uZ8zG^ijwY2Jh zL@gz1=m58dtjf<)D;%k!!2ezqS;OWGs+jzr7rdZmjyuYv;GdM*@f-%R{}kE>TOpSX zVw)u_a&7L8OYmiHcUBysuI#yg!j%IO?Y#oG{jnKJPk!Ef^4?j4)iD&Ujn=}zjvAmv$9(FDPF^ar!i7KV#z2MH zqKHcZcmyvZ<;xc_+7!rc@*upJHHO2RLw{9{o05FdsFPapRdfGvUPEYeOQ^D?wY+<% zwO;qSi^l%kT73Mjg5z7UAR0C!bLQoEC2J9jgbl>GO2)(J8PlB0YDT1>3|$MVS}O_* zm!&r6>??ERO(RkYg3DTQ<_0F?E=7ygy4uR0kvaXz;;LQcLF5IXF10xTh0SUBi~HCG zJ9oF@mtYldwR?Tq=*$1fAZ%j-3I$$uYE#P(FBH>olj6KAR4_w}`aQd`Nw2{J=lSMd zc*~Rjn)kZkes})IJ?YiRx814n<=b%z4(1|a*&fc{UVZ?iw_BC-TX6Vh)a319yLcy0 zOg3Q~D<&GpeYKn4&{CWao3YC+xM4^{q$0_@X_kF}Xe&r0~6P^Bm zkCUqR>c=-2>)0Vod%GyB7XO!KGaB~waXe@q_H-W4O-y=9J3p0NGL2oaTm{1La*4C5^Z*q#;o8 zEeIF?j6VDlTZkkxT0M@?X$txuW2*l10t4Xm7A;vvl3P{B%UcfryfVRXnZ8*Bvuw#c15#p;gTz_VHVO`LFg# zJF2{UF?Q@T3twc5ZD!b2kyhB+7;0S|#=sK1aU?g!?czGxQ9ch9)r!|fq7^vHKV{Ft z__DoucWWWa?miBF9LmU-7P9@}g?D&>B*{C!areIYaSRf}`^X@%(K%p0IkD(I9X`ML zB#a$>mo2!OL&#UoL0Frj7xx|EiGSYLFFsDi7kT1eVn@c`d)?=&z2}$g&(S>=&}ogu z?wbtNTy%{eyLnw>CtfSe2bUsP+(b&^#e+XWBj27_QaQMdc*&;Yx718tT6}zcQBCo^ zh4y!lcq$y7fm>=7@seSO2N&LgcqFu(T@e3W4;O6$tF|;&jGM^^wj1C}D~C@zq#{tY zCHRMzz^vL*F<_tH2eQrAqs@yxd<|CLhiXHf>bvlX%J6qGJZCWcn!I4u6rN7PPi`NR zC82RqrIpxxuQRq^q}Q9}%qjI7#yP!Kw{Ol7|PY>XIa%9IRTJ zBzZ)zDv~5QKUg(AN%G;rs&kSg9~P`CN|Jn3un>N?l+AYL?n4cg@<=dgdu z)aG~<8(cPdDf(^ky=`^AW42`WP4~D-ebh9|p1(bm-#TLu?pvbc7H`Mowuv(!rnCk$ zt)ph+uZw4Qz(kp#@6fk-HCTBV`&&|jH)f(z!qH1{tM>a6`=?Ol#?B@AKg{e{V*k*L zp1#4_yaQ)U`8vw{otlb=A=8fw=eJ-k!gEzzrlJr}?P4KzvUOw3cdRsAp*JJ+*%O$4 zZP>n~me0~$wtaX?>FCH&Cl0PJ9T_P)5qG@%$TB-*uk!Yb_vgyL1e>WXp}bYzJ1~Qb zE`nD%LBH5I9G@H51Mp`PHxm*LLtqeZa~e8Z^C-;no1Aa4>nLiGgwKml#Mb}6LukgC z45&eP6sdSBlz&3-#t2^N6t=IdFNqx9Hm}0ThXyl?H{pf;#dx!S$##4x$qZqez%JRz z1KJm@(?~&PQ{PDr{L2M$P`h&e_LN}t*uCo*Eo7QFH|^WqttB|M5FMQw&acPo&+DZt zx}je;#0({oPUE8K#qbfvx;}+YDoPxxJUJy;bqJ|w7MOK5VJ>wLTe5k)Btvy+<!$#l$Si9an?Bt4x{*+)Hj`*P7%f3<5?8b0@=3{M9gNr#EOF5Y9tT z*k^{{S(tiWlRe8T>vs&r5bIRpwO8w%dr>TXpN2Qy<9XFLFyeFe$B6%D4T$c^;UW(s zewR+(h~KZocI1H84``lGavQGWZ*?24^We8iBj8*YkAK-Uvht3+oqJx z53+^Ts}TQU1lm;{nqVV(*2d;ju!j}u_8uNF@NHbxIme=nU=O{`F19b z0vu%FJ>U6nOn;Mid7_iQN2S&|j}GjbvSTH((r>R^s($+v66j(TTd_ZH<*&oAgUESn zg4_=|w>p{MqxeMJ@geshi?`Be=!>7CD>jmLy+;!ij&zyp#zyu$ ze#72m7u_h`+B`gL@8PK1R{b)zj`7CUt6PuE50MR82t)y(cW9Gb-%dfdOvEzIrSwBpm5?zrCKG8 zbRzOj4hr#j_{iJD{oY4R`ZnW`^HYP;KEK567^ETJM(54}ms z!z%VY|8r{2)(ot$oL_UH=B&f__Tid$o?%`N`q^3khrKrekE+P}#ybm1gXrz3Xmn7c zM$H&?B8vut+MNaNH5~}J;p+mp#4svgNDD4VLMM>+(i(T>9i3rjoL6SXQD#(#;y4LG z5*FDMjl-x>TrNfw5ix?2@As>^_x9~25On_k_j$hO;~`!5-r7!`I(6#QsZ*z5G_qR5 zaZPcb1kF&EqvvrrZeQSR$b>KTFLxE|t^V9K%Ch7N--y%4^bSUiyZFF0pSNy2_l|M26SwAwr?`6() zTEX7HS!l(s^m12;zQXJP=u8I$25Bjq*?V8~+Iv>!zan$lp=KuG5dGI6v+R0_zXR6Y zVi8~x>xR@e=wxQkT_N>3>_6mBwn*=dgOHx+zqADP_mOm&f8kHe|HvWam#wF+9>@dF z7<4Q$s~B=8)uAt;ibDI@b;ok#sll$KnD&cNI0W38z%u(>p7G(o z`vM>JN6^09ic5O1byyCuc;u0OZvTV_regq5TV)BbM)8|u`;Y=1 z0Aq$p-+n&Uzod=r=imX>EK1!<_N3mbIpsyA{#ktGbfr%m>%vL{*vY~^DEz-e_{EB6 z8KSkY7aEB-qUU|9n4<&%LiLwrG=0HI9|iD|mY+caHqP5h0RvwY4>sFye~yw->gmGW zN0&jT#`$$9cfGPAQ=-GUKOOti!9Ut>Irl%q*zq!(%UisV&&zpl=s)@88g8ZCip{X# z%JS=4jn8;=(ohWurshA=19sW^GQa&P`2h19W$pvcZ_|*w*ZJ*$xyfRN$LEHaY0j-U z4~ZiKz1GhB-zCM>9+e-`r6d0)i^pd8DAr<%_%3ihN?C?dN^l!m?q>TwGjqN?GH@(( z|6;BHG`*EZo<(S8TF`8^=F8~(STZJr#>!vtBlEKztiQ*_*^2GxOa0Cn=Q}auv>`tR zoZMd&qK>%hjNP#|u)_zZ^id6P$V?^z?q>nf!cJ6oV4u~2fcX65e`5Y)4w4@V(F4~1 zub#07g#Tdqe{+!h=?AI*`h(<$oS7K@U{9K$fYU?)ZBA)3sssA>UO+!l!0!FTK;H_8 znzJeJv?8;Zv%Thgo#C9XrSD!-R2FbFQE4fsY?EI_?8Px*?Zt%U!HkW$wwZPh8Ri*_ zwZ{H`F<&WW2w#tSG7SVS%~Vq^&9bL=s5D?t92~h33)x{?Fw|XvV_wQaV4V7rm_WcA zQ*ri)2HL4NqD5G;V)%7M%eJ*&_wug7%!B1EKmUW2P!zoWgJE^#)eHa z2U3iEhe`y$oD?$Uxo(IB;?$0og*iX7Fr1o%ZHklZZHf^^9tY0XY@vFKxCY)^KEVFO zYVPKT2=(27{yPyt6O{N}3ekph*#-~$;J3@1eIVL!1hy$~iUKl`e77sO2Y$vbe>bU7yv2D za4z$^XaVQDC;=yMH-(!!kSZ&Hnb$0f)-9N>H+4hvRyETSY}#QXs}-z30GG36QwdkT&XZ}$nYra5_gzByFT7;eyE@)uaa9-0oS zr8ElZ35j6$Q`Tg(-ao+3IUU-l8vHfjuaVjAaAcb8M)q-_)_YhL8Ogy11GL9Y-eUl)nz(@G2pUeJsR%1)vUX2 zeYopZ7m0bF2>!ji`~FSNpxa_jEG3lVUnLix0KjGa1VHo@x*f^#9k~`YVNoAU?Y!`se!;q`4={adtMv5XZxLCa!_H1p3Eo0LQi@bg#Y0v z=sTfZJyy)`^*M}gt7j@<|5rt0q> zz))2Z;YbN6^8(P>s1dy(wEoEwP!^|#{vm)c2{-dSD2F><#-5)GNBZ`IJvSR~z9vSX z=nggbk50roR7X2%{OO@k1|)sv_;c ztU>5}!40X!q1g-dG8Ly>1K3t9fjXAwQD~(J10>z!FDUV1HpNfwimn`-jD>3bp>ay2|VHl^HAHWmKLbNk(sor%>s6e6=J->iW3sr zam=Yg#Dq*K`ccT0VPZmvmM~wPgblAoXv-TQeqps+Rs#_%2O0>|Qlx$6&uqx18>7}y z29xQTmK;Euim0bb!H z^KexcPA0laG##eb&dm(CNya`Ex``Xba*WhD$s5#Eg>$bE==$>8~32cr#+|o zm;_%>4ot!BuU4?9s_uCk{Nbzj_S9{yzSLx34*W!q7|FZR(byf~s&tpIa}=@p!CUbX*}KSj5=+k3=CXkCFo8#OZ~8onPA1 zmTA8W4UsJ|f-Sd|H#EY1th<;SVUBl_~XeSS6%?0^U&Fo~E;_PY)q|w~9AD{FREklX18OvVdrvn~A<4w2ERF|H z!o^)&iHLn)*odG#sl(o!vzLVtLzsYqRf5CQQfwF^g}mSg>zv?+*(`1*rRoxPu+@iY z5mS6EJpO>@=c{5Z@sDoDW$5A-c&_2F1#p)Kc+3OI3H~TC896^4f%kAhm8Q&Zz<3qs z_8M^=w^H{N+($?`^IlA>-uygV#wl=p5?*=1r)8RpJwotfv%|-~8AE!to5-?ICUzyT zl@4Z(QwvHl3_}o#@}^BR;;&+EIx)`If$J(vc-JK&E*7eJL<(BdZme z>dj0EA#1`Ih+-$7ZUkf^-;PguC?#$G6-&ah>8JIEUr%kvIZjPNfvf7v9QYX$3&ms` zige;ZOsuGXpg(-VL!XazZQq15tAa#@4e=lzh_Hv!_W$0EET;6VekjqA1qo&7){^=i z$^)~}o|thaMl*b4<1A9Y^<6d*Tcg=2zZNFQs?=YEE)v-fe^_LPKD7nw88`Od2Er6a z_>C84*|g@jnxoXEvu6P~1ca}+iWhndxHG_^3x#qDl*bsDSHx1iIGh5#Xn&qRfq5NF zM7ck;0=gsWc3O-f2Bk6!2ibUo1IY#K$e~+N&B1GkI^hDioF`lk*prnY>?nGAe7!|a z7k6U@}F3nmJ|fD*y>n;?a=Yw9=j(lwXMuDSU$yK5}|BG%^+eXaF5xGn6O290A% zlLSgIK_;v>K~DzCMNJoex1BX{DPu8(Ky)SjP|5d9WLDCN5#HxY&XUc!QB=ayIg#}e z&*wy)R~VNFN+>Hxs%O{**z2vh{4lE$VuT#iAy}SMG4n-axQJo2y@E%ftQC|v^7fWs zDpKfp2y4)&UTs-tPMxun*oopu6`A{1!Q2<2N3H!>ipHRH@OMxY_&X^alpZ;11*!P} zCngSs3_k$XMFH#qz!C*Z!4d2cST7wFgu4MI!NJZ>J(q|O!dw`e6#c}zA4+2gmR=sQ z$O-_bmtlL&WbOeW`p;erah+L}4BSg73Z#w#QjaLxsrhV(V#@zYTHaBIU+|qWe+fw` zcY~kTtUV=2tS2y#@Ce;B{BBVt?WIauy(E0rxlk~t(H%m0vGVE#Fu_W~EaHP#q*I06 zQU{^Fpduo#2#Z)Oa@HEBV116rk+6Z2*)UetGUs+K+%XeiMYBmY@3My)7|To4%Tws( zHYi#y6i2OHomMgn#7Gx_(z2 zT((4592kdVOv6?d%hPL@zyf)R7W@Gi55Ru4=zT0A2UJbe!Xr<7*~c2fqhbHG7JIP9 zrz-&sa8szh>bvWvs_Q3D`K3A{FW|1Io#mc9wfaQt6EQWIFcc6Xv+;t=5_r4oaG3J( zbb(TD98a152S{|+E-@=itr{mPoG2^&!L0BOv%+DGwfPf$|87Lbd*_zuQtE%rduZmjzD8ls{(Y->+;Z=!SG{>yL*`nuMCc8umL1m8*{W-)%%XdsPR?x(m!uOAwYr<{ZlwPacll269t^D`8d;R z4QNj(>H*CiQ&pvfhh6lt?4MCxQe-e@Ft-?W)#DxG)z?IS)L^Cs+rX1CY;S?#A|N?g z4BJs%AXj`9g&BEv5rK9#6WY6dAj8Qv3=T3(*k@m&Y&KK$nJ;lG*UB_et?W70YNcI6 zzp5)lpIs`c@O!h*!e$L4YV$9hK6whMFLkQbVc(k_#yrLiW<75?I_&ZIdO&?RwlwtR zm;rT~qa`JmCT>Ymf|d-Aui=QQTSW~;vL#=eEor5e0=OEhzFKtGO*d3#jlYTOYx0Q< zu!-q`>u(hdW8jn5WO8+@MH!J6`2sVlO%5n%Fl};diNzx9Bf2O%#84|EOMDG&-8p6Wl`N!L3MY=wupI+0<%8nEHy2@ zzFu1N!z+;%75CDjcVwEV79Ad617ry?j{LGkmMrmWvj)f#{=lr8Zo7V3z?LPdZnm0a z$r8+LRGJk!Wr-(_j6-2+)#Zs;-mHYB18+Kb`C2$FiQ^2HC2G)BW=-dlzmnheB2AoY z*5VvXH^tXtwa279t36-S0uuZV?HOHl(@nBHH{2B49zk<$GHq0Q_Hj!$R@h6}o{(9S z)t=Gg6Zg+#vleH29*wW%@Ty;mnbxGc-DdxsYSvN)x|>`*Wonl1Hfw%TFhAW?HRT45 zs)07=+imukAivM97lKA?-DH65m4cbGQvQbGdoZ>l|CW=#R z!!~#fU05v|72TrS%^J|6QB$VgYR6pxr;*5u?7Ps3eR4DNbq z%W#=n%(X?mNUj+P+ENl+7XOEi$)kQ7?1slV%Oh7Ht|3*P{Ma*9uC|WQ$;oAXc~&%^JMwtJ>5Xr%k%^jb@!P!yu@ih#n zxEyd6-%>fF+LDKQ(d)4Qu;0m)QLJJMc3r7{4-X1%*Bi`s?&7Aj&N zK5Iv2S&`4%kq_FDiWT{o9a(Kh?q6>r{!TmcN;`6g6?u&vd4V0-VMShSN1k9uwpx*= z*pV(f@>wggpB=d^*+RmvtVjc!+7bz??8rJRa;+WtCp&VQ75S_kxxkLR&We1{j+|yk zmRXV2cI0?Fa-9Ql=vm?7-H+yB< zM-~!V?8r~8$W?aaQ+DKLEAmfvB%MdgI{#rsF0dniX-6)$BB$ArWp?DlR^)g)lEyx= z*n6$W;dUeqYh>gUD>BoL+=D4YMozFI_t8pQ4EuNN$RaE9Jv;IhJMtVWvc-=4tsQxS z75S7MIoFPKTaok4$iNf{%(v@Iq))XX%4NhSR>b92#Q8E}ixn}_ia1e5tg|9cMa1&6 zP&XS_-EVmT9%&#j!8}GPcjCBut2!H3cPH`c-`c${=n$#~mFaW3c?MO>g^!D7Ja(Tn z^B1^T&ZwxN;U#wZlx5h~Fn9jMj-$Cx_+%YsAF)qpT!)h^+|T_tj-MUG(jNRAI`5~3ILLkB+Kc@Z8r;*p0`@YpUN zbMV+KAG3Tt4^05e!?roA6#L0m{ks&8EO}@%9v6r*{d&g1Au=l!0PRvTaBu~`aKU>( zD0mll1d7OhYvlZub&YKBm28?Nz~AC;+wk0tM{FdWtNgYVZ#((slh20vyu#Zcvot&* zQWqm+y5fdMvYAHJ=dpIWMr*_?T%%z>d`70GZ=0z0bVfiCPrbtf7@Q#eBzV{-eS-%* zqV@c~2^?DjimmB<*d*g@dIs>FgU3k-+0W%DQ(4Mw_k8DlGr`ZX5uW6SF-M*shnRBs z1c&Ny+}hKa$4-Hjif}iaPS3{WA(#RBVG#{u0`VaaAA&1YyF?mm^(<}Lsnj$Ij&nC+b;+sk(DMA?ycB3|ZSf+7>=m+_f) zw%GDzJelZ$^3OV0`Iu}Hg(&;`pA%#W4}GI^q|-0Qzk@Sp0$DZ;14_pqGU)@7?xz zk>hKz{VvDTqR6|1$M-jYv@rolR(pr8K484a-*J%q2Z#rv(Zz|zgN3ik1L4CH(|%XX zyF1cefv=93cq8V$JMs?x$x%ZFY7e1Fd?Ih5wU`9j;-M119d>;Z{|)xLjIW7#pA}ah z8JJaziquvuHvQxv%YpEfZ)Zx(zj6)|pV>>iz@O@bSJJc5OM0{a%F7b~i!ougN6=5F zjm-$iPWnq2FW{++8P6L5j5)p?^lcoZ`~$@IG~#yKMEDNglbu6GtNgYZJOKh&4y271 zOu_jQB)h-J^Aeyy(nn4Ne$X4rtVEgpl}C9(7wE;LZPLPn9dNhKouD~Rm#ZI%~S=q?BjSoml44nGY! z2@je=f0|DI-N`8NPsZUH%N)ZVyGCME=I?Z-=cH2uv?B{-*nBBH4en)@g@uP&-82(sYlO*XCe6g_;=#sdw_@ZpB zJ>GF6rleO2-p*km;Zq~yLA2i+^X_rJTkvfZ_>lBwmtSM|t~r0p@*?fG=(8~z%IMgW4Tjq#+9DF?w*PyIO2CKYEtm(jJ%u;j2It@KJetIOS0KiUf zrF3$q@v~x5i~g4F2R}369hdJ&WtGR8i5OtfMof+)orzA9e)A*!C;cBcuhnYV~Q zShugGs|DMY`J<2w7yN3Q3@sNox3$bXTuXs7mDg0I5H4s99^2}v9)lzOFn2WO!=aU? zAED`2c+}iYYVgBOOEoYU_THvy05-dP>^@1EzYX>Ag0j)m;ZZhp9?tN)d5&Mzx6s0U z#BWeqC{1noxSyJWmH#M2PQ{Y+BDLiceEC`}c&|FgI!~Z1OTj%mZrpT;t8dbcvSV?G zIM|w{hUdV$)_Z|Y_;vs;U@rd_i~i#HeJC0i`IgGkztjreug>GXK`-U~0Po*cc}N@R zL>o~aTK&55;10q$)h+C(=~zSMF&=454WIoJTMZpH8|#eKPej~n!QYEN+kL6Hko$78 z@A7ybcNRTu2sf|TTlvL;x7t+$5tO?IINO`eVfCJ&8lfu)nB-K1x zF6`I8L*h;9rq48(m*=j4?;GBmx2lWYm2rbN9oOP?nYq{rXV;?}&<}5-tUCr;Cf~Sb z&tvu8Io3yc+n%c6w!NQKiTwhlu9ZX+o^Xa5+}4RpcDlQcre(djZSULLkw)*pUEw&< zehpU3;bG7F^b%Jn&9CFqT>V(=hn5v|2m0|~_HpPQgvRgZQCEcM@R-!H+%^rC>kr^l zqj?PKTzHZ-sq1?SzDz2eNMWQ=le%V}L(1B58z2asgj?61haVod79KcQ_~Sv(1y|-p zjz?VGYJ38-iFHQyuVp74tbfGt`U?GnTN1RF|MF+??@SFx48O${S$nlj7zp%ZbFn`K z15iW9trn5n;mS@$D#WNM8?~m(<-b9=l|iZdnu9G|g?@x1l7t!HiAFfhMz_Lg_C|K= z`mOax zUCnF2&f@UI=2RW26-g5%N4mhrEL{taMcxjWQ|GP~_Hsy{g5pz;(~I1p;^W*H%uE0e zxA6Od#*|8&<5(hkFuIfAHDf%k2u_ZoHXIDW4tSQf z;VOzNNOU9B5PB2@5leKp!&+mV@!UcOXE5hKNLQH&h|o(Wkw+$hyV&Sx2RbW#mmk+` z>bJX91mN%XEu85ZJS*2d&VGcSaUMj$_-OeKrv)W*fa`V19B`ylG6%I_6*xPX12~ai z@6=j80)>Gwv?OK>=Otha$x}`G;q?_x#^5)V7+ts&Vl$mHtTEo=@YFl(7{MsyW#+uR zvkYfA%EB|Vcs>Mow7(!o+o!vHp>!M&Vkf(ep-s49J@ksCdi_e!mEte>3@k{Y1$~INse4lX+5=_Y6zSXya( zF$6R%>05YhS!=Aj)52IZ84i0yVyut&O2lu{Y<`m>_zgD&qxcONec$;_+M)8BhdAsw zUrjnVzo}r_UinS4KjrJP@V#E1L<75#JjJIhb5;04X$ZY=X&D-o%%@a7rSd6_Pl)w+ z-I(G=xk>G6Ca1eGa8k9@o8@a5mBojX@o+NOR*n`PlVkY*PPS$Bos(_tbF!^Jo|~9$ zwHZ2M;@H;Gk7C$XbJV02D%wC^Ro)zM( zT!=)N7dgaqxQLSylNfK9uW-a2GJqIPsrGnNFrJjUZv{)51u1A0CM?Rka2pyu;Cie9 z*Mk8k#EnXmGgQz09y23+*+5Z&DP*TVWhXi$H5>f_GQ0vq=?JypUvN)Vu%`MJ$9XKp zlLX&7D*fj0!oGqvfgM;J6s)a2LE6K_#>1Z}i_^k@vEX0TSvVXRC7%cn{Hd5MS{WbM zDF!2i+0A5MJ$G<0f}_w4uO$-Tx{g-kkB$Gi`Jm-X2%iu(DSTRt9lYFfbGUR^09unetWC1_f>-OlpgV&HbFEr%q21v#9_4lfk! zFe1L&LRLilx{_)2ZaYSZ?sD?--?A^?pVFg+C+2ei=UB26mSd#gzhdgKIHWnOFjodJ zGrmvuwH|U5JlYwn&L;b^gfk2m#^8Ue@eE?XzOazkT78>e$HE`0`9W&9G|Q+h7HjQ% zd(&)5#cyE{w zt{3j>JHL|aJzHL#Y09f^d;W9@d37thm+~sEp%K$3CcWtCQ;P7AS4|OKuDHb2FB^=% z-$M>=%B!`Xy13M&$oe$5SfZp>Re!{^6xm=bxTv>fm=Ia93=<;jAklLXvBz45tu*$X zDMVH&p6so6X20EWVm)6HC1QDSKEugkCMYluvZI3q~({N8ItW!Klt-r$;)>T3)Ns%j>Y{ zS83Q4Sze>ljTv%83KvF`t>yJ^;Dyt#17Ad7yV_)RjU0eZJWkmxATuq@#Nu0vQN5gR zs$P=*i{tMkZOR6bC1ou%eU2q~yezx>DUQG)^Em<&tiL0w7F&AlP2aZ*%SLz~6{G}- zQ<9RU@N3x%=OZ>LSsK57Lhia43VnZ=q~z52Mdh$a$)WN~L`vbayjsi0sX|=nMU4w> zUo+RWxC<28zBSPHwHudRW75)df|erULbSGTGqrtdjMJGqUfU-p__5((cW5o2r2137 zg;<;?7QD9XjR$|WhpQs|@P-RKj>;ls$)z$Sa|q}gC@kZWdMpE;1RIO^H-WlO$w z_~M7U5Q1)B_Y!pDU^JL$D`DeRCJjoBVT1-9TM5rFjoyu|1gTwyCS@n&Q;WX9GMp52 zItZfr)~Nj)K|i1u59kF;vK4ZD*BV*hkzOM4xSC6@?=Xq>WqrqWC2Rq)J7Mj8?TqU5 zgiG(Smx~@Z2aO-wU(w=d^ae%ABKCH0t`Hb{oBtx6F4o)JK@vL@H)E~Kf7TAghg!?` zxT$g_CqI8mXDr8Z$Us`tujIeu1jl+p(1$hoMR=Se2f3Y7WB4s+zG2W9ev6s!Th21G zgjQ;UabAF{b;ufWFA7@*PnCtw8f94?2qixl1#Z4v=5=G;SOU!%ZE8+0b5A}J$vawvSACTBneOa)) z_G^+?%Do5VKTi6B{2kG+tI)5jVk6t3UstJLzl>dU0R6gZ>DSeQ{n(s})vq53fCLXo zpkKFED9W+{;2z4*)fz=YT*!jIOjR$$GucTY-ofYf!c2tNH30hvUE;xCW~6f?T6kQ| zF0}C2j-VF)_b#U<*QteXKnxb6hjC)S&Js>OT>Suu&v3!i` zF9>F|;qiy5pS2d4aT_AzEw|#jEJBQ867BzgF?f4zt#vo8TVITIEF6D%>_%h8U@4 zY%?dQM<;Q47B6}Ia90Gi0>1~5zl`YFII?*s?FBF!e~xMR!{}+)v1o`=*48GRg6-6O zpMFQ*8aw^oSQgG6MH3C)@Ct2h3AMGw*-+Oyr`@wLt5%C+w)TF!?hXyW+?$HIHx--r zX_$L488inz?ecT(Jt0v%=UVK)bFTGgBXtMW=xe3?t*5~IJ?2^zSbSV6WNyX>u+J&x z+A;QAYhjX{FoFS!-F=*A*OprI>>S5Ddq-rR#XaFMmLjh_#?iHRmXicHJAi9g_c!@! zW*rB@fzlYF_E&+^K~=c6N9s;DaR~&$GNJvazh|bUL_TD+`U8s zgKbw1g?2w!>Pt7t={AiQ5Ctb=3CRnt004&1HQD7jFyO{5K~T1);9enISQDDSXElVQ zJSkl#*KMxG=;5=!05>Y(b618IngBk64_;3o73l#gZ?<})W>zLV7Jo_xtzY8yhw(=k z!sAe&3kD-f{l{p82Jg)xW!<}E4RApWNilFWlVIf#!mI8gK3KGhoXJ|qDC3oc@S}kw~j_`+Ek*~PU(d&u4!hv^-ZlW zKQGEjf>lnSjO~WbO#lMH*a!5;=EG3msBW?hd38C0$2~R+oFks|TK(L!hN` zvc&^fXQGA*yvCt7wxMt$>O}>zg>LM%hg@B$vX!6`tOC)oHFu($>yCp}iN=`;6P2K) zaqd-xnLO5%gD*G@r9p>Ud>ybAKK!&vxSFHSQ9GrTGPd_50 z!f*?megY6P!Bf%Z%|w53gB7%D{ZNzU%ZHvyLDZosGlW(>IgWqJ##9R%YE93eW~`ifgsQK+2= z+M{+!13;2R?BelY#4Z|&F?Q(04uSx&V}vED*d}&2TMlAJ%UdvY0pGoXEDji$_cuJR5dvuqPwSv}(d09m%(PAc~pCVz^%f=@r$_wIF_Y#mt;@|)yfwuK$rHi2{cB;j;e)4wWFmV(yzqC@>U>{ZdeBKP0r zX#YhCEs2_Sb#Mu0ShufWwesYOuC!u=PprTf$jD&4oDxI}adk&W-DahZI4mnj37k%Q z^67F{KwtlN5afEpjRvWq^i`wXKup{Ar;$|R4mL6qJY83r(`xm3=su7&FnKZ%Zt^co zKbS^6(ESTv+4@>htwBKpS2V&X_jnm4r>4UlFV$b`X(NgT&ptT{Bmy)O*M39*>N?I8 zVQ?_ks4L`J@+80tG(&nO=3<8t+E0&XU_NX=c(dT2Vo8<(S$g-dp;x%NkFW71#_MH)ac&>CB4#&&};OYpVbs3LGVLDUMq ztUiTVIflzzdKtmO+MT1gM1ZT%+7^+cccYfwF||ZNvi&}kj+BRqA?ty~KG{JD*#U8g zw=!3#%)R{v0zvjJ4A|h(gKWOC3`RAfdy#TwmTl#1^CI#jlOILSD>;Ue7OupRm#@@K zKZuPgu9#tyOO{ozW%ebqzo1T%cZr2lug2h+r-sMvHqMwXxLAtXvlatm4zDK*AC0Ji zSEC`R_XFl+z4(52s1SncyZ5|;pFoap&&s60DIz)2Lic$i(iY#pTMOTljrNNi-y?^= zpl7xk*?&~S6EV8pQa7OrLU7hR4w?U%CIDbJmw>ON&OrgG1YjO82XG+y`wRBnvx11n zRWt+<3v>a$EodT3k`GkHRYI@m1OC8(cwQ*Zyb`CopcAl6mM^ACb^d11pI^Vz?av*d zwe(;GO4I+t%?WT5t&~9qs)TKB-1Z7a_ zs|c}AC)F+!ufx`cR!^17{F`l+OJDJElE6nYrDGc(SWsE`z++$W@!wZO;R9B4#7DIP zhAUVzu=1_gNjMCO;h~%T7)O4b;R&{+gY{#vk5^^%8s3}*K>!mtoYc6=!jOo=5FL6} zVCN)&wQ(%|x}!FWVzt8pfBi>T_=9R#;17D?82t6GBmPELIPiB3?c*=Y_FQhQU&H}I zubk9yhG|X16WKMSBQ)aG$ixPncegN)#CXLRwd@)&Wo0S%Z$Wx+9_w#tKnDDsl zD8r5wOalKvfd<46mb-xj2{uCaLU|(HrXJh_4x1n~_jSyPAS>S4mb)HTadI9NTb0eK zJs!7oEBHaFdkgP4sIoi4FHDYrb_-7M7DhQ%K&t)& z7DD;P)LY0ml)9lTN8rVu3&d_P{s>J!`4O@q9WtdszS>@aWD>#EfCcy=teD1m?&Cvk z)Ax~m+%o-p96c)|^8G-5S-3cxrwOsKI!D{|1DNPM)1M_ODcY@uuilM8to3Y=;Fam$ z51HTf_2U^M^5^Fjd46uZ77{CwwZ_uFbL$A#@T|O4h;^f7A`V&#Sgg;IEX=cQq z(4Zx3&=Nc}@u3M1&3tG^W0v5r34hJNnNmMVFh&c}Qw3(XP`tOpD})1xb8hiX~PGJ}?DUngon)5wa?e8D^Sc7D7=K6QD50voMBuWiq}p#4A(tl_3geA_R;? zz>n;U9E3#;bx90~i9Eiu3-}-~;pKzC1fK|&YKG-zH~}H*<7d{#P}3V2TN+xB#1OAc z#8;6x+%O5R0E1}}Fbx96iIMykSL-_I%2Zw8!e4n!o!EZqR&iz+Tyh*&W0*#-f&_?5 zhp7|dfvh3}Gy929@PXSxJlF}wbK*{8NCvonZL2iHZ4*Jb)KCjv54k_i)TXB;eb$0h;t71_TQB0W%DvRD90F}$}oMjPv4L*_Hy*U5t%^{@+SLARI zzbppv%Y1xAJifxmSH!EH{G1 zN=!HfP*czqZyV>2`CfRqfQ^^XL9tK>H>xc72&eqT`5e+j63x#rZ49Uo%f%LKOT8D^ zMk5KXEFn`@1Myr%#vpWZb0up;sFlBEim=!7EB{LaB zQXgn_6OYX{cezbJ1ZSx7tcj+;B)R1mrtQ{4s0JHwXK29>I<=6m8xAR8XNL{ScH>E; z@k8$>0lXxfij6fGgrF@GR5%DhKjg^HAbk^$LV(y{)Vpy6q_#~!B|59NRXjs80DE4G zhTs1)Xqf5@v04W)PZCNF%0Lrajep#MwUigjrZ|jF!rF*x3oNTD$pawDi>Zhj2-4@k zicsM|QuYxIg-2ip@?f_RCqgr!(aeNBfw+)!Mjm!9{P2(gTEHKa%M-C|mY4tq7wGN; zy1h;F0cl;sVX|}{h2aK> zaE}R#rf{j-*fb9J-y$_P_@I2w@#*v0@fa$~$J09TgnPj!Vz`MSmd)FUZ$b=wtOHNz ze7Es#6*?azGOt_2p%6UpmCt9QnD6lzDmn{Koby9Pd5llRBedSb0F0Z%EL@sz6a$z> ze8>?W9$1WgMrS}!*8Sp}#K2=-#2d$&kWa#kk};3Vbxof)omoTkCNK~KfQp#wa5~l5 zKja-^yk!cvL%@t{=;{V&n)Z^=p^Psy&q;?0&12G`LUD!~92A{qn%5yDR{?jKo=LAn zbdHR3+8C}%Gl5d&QH#n#e1n! zZ&dp^iQo2Lr2PDa>_z;b_w(O8P2LSF9ULe*UzaG$3}qP0@*J`h$ycnSoyqEkRJ0yGFy-2()QR9UX%E^k(03 zgc1Ku*ghLEY=uuLegg#AT%nY-qG(@FGg9I_ZPokS4$NcaL-wF+?A;C%bg_o|dHQA$m*p5hIfWXJSp-Vx(eU#;fY-(2p)ra@HH8R;R)2cn>;O zPp>EpU9%+Bw=}6le~k{UHo!jys;k?h)Gq*_6&OG{6~*{HvjVho7P51_o?|4V3_o@o z{JBbG1egbsp?${cSDr_X0a1S`*`>B@OAW3~q5TW2#S5Rr#C?7az2Io~ zz^=pn&l?is z({>sskRkn zr6W6rD>j`&zI^=QuxViq66PRbJ`&^3^Hm(;JJ@UP_IlmmjUW! z23+Hb`zd7VWpg|6h9VfC_z&e91AXpC_zl(aSD(vX3f1x#skmW-JPZH}S5FAY`vJsG zCdsH3f#*KP0SK97E&~9;lvd-J4w*gpgdkG}Sxl$TpH8cgp>&s#nc^jrcux!aQ z>PsNdgr;GwI}Mh6(0J&kPHg|2?U&2Lty5Z@717M}0! zkI|~6r^5?K_<>1CVmzdzyPDjHMSj-YOMb3;jfyMMdW)}N{2d>ldEo~Z^7*dk(?lgr ze0i6GTdOh77u8;7S%5+z6VU0FZ!jCt_C3_uvc6qMxH`2m2%4&8c`BY)&9B5S)6wHTf*Kh#AZU70mNy;G ztL8W2m+2PC1dC;`1VPgZ0ET)O;(68lCj2s8yG*cA1|0~R%4K=YcwRNX6TeKi6Cr|b z8PG3zlP=*i@M+b2H@@Kb^#dM+#&cH+Y-ZsZdFZhpK^}spmn95z(!XjxUHvl;y?`5Q zH;Fvc@r=Z?WKbi61{u(MHR9;h8o?qNESA9%88peDSqAMg*eHVz8Fb3PkikwFbjyIw z-cht$2K3gAH+s-VK)2xt=<*(cxKaikD&Oem8z1TZ8$r1YCdgot3@T+XT?VscP$Po| z88pgZp$rzuV6hCA$e>9E%`#}0!A2Q$$e>dO27~Ye-3VYSXAFL^Kd3$QTqOn^g6T4t z#UT7Z4Fcm|e-&dxNV)g^Ia#D$)DPysZSxl+5X>s{Tq7PULeKr35#a}#5Ex&5lqm+1 zI}P8!W%95i9zK45PouZtInNPp*Q*{7ls017B3wtR)Sm?k(87snR+Le0e*;Sm`F1!^vw z>KZf8G_yfnhaGnhvhXPdww|vI-Apx*GGwG{RcfxQD-(|Kv#?r!oz~`16A2hHUf$a? zbcb=@Uq-r419PmIo!-+PY~R__%qxW|X>X681)@$Z_?@RrDZ(b<O4@ z)Z3M%smZ?l)B(yP%?KrshFyKPmfMUYcf#A1GXF002Q90< zJern4b8^(SR_Od;%|+)Hb-)6mdzy=CMy9y}dxSB;Shw-=sJ%TEp_xNg&0m6E;gB34 z2IzA;1trWMh}VdHf#Wa^oaTA4AnU+iC;kll?Zh8o`64NRJ)zM#-uxvhJFo69D9YO) zUp&jma+PI+b~Mg#RrIW=2<}a}BU#^4tiM~VzYbGxtl?f;vQP~VclmeqWGl+jcA9pl z;d4vZsTD0Bq*fHCv?$9~s8iZ|fM*}pODXNe4Rz;kOs#eKdT`EQSCX%%6{^X)q3&VV zLd*`l6q|gNOfBjU4Z4Al5DXk;+)@!5bSd7W!6~)y_Y>jq9t0j@4LGT3S^~Ubzzk}C zV1}!@(h1yBe2E6`(w_)aqX|^k6lXnS;_4X+`?a4~Rr&CQ{n4_jE|0wj0cJFA;JTmB zws(BJCLhS~r>r(lNgRto$MLuU?)q~;6(>A(Ke`V+4pI7qh2lB54}A$FRfNu-j}OJ9 zuGetq3c7d6LbD00tNSU-Hg%mMC@KX<2yjK6MN!S5sD?*Of@=2FdnGBxpP7x}FEav1@2`OHZQ*=@2KFBqE@T95h%T>k^%2 zUY3y|xB$C*RSkIrx~AX17my(|R|LDs5MEQ3wX0KFIK(aLsOV{_2!5AxM~brSb@ZJ& zWkqzXXQzi)phUjDvKk@9zU#zE!pQ!aDJ-+x^A|A+kj0QMYum%kr; zR>7$<=_4~#ox>D8ZBW$8b7*?a@*oyzHFWudHCxj9a;Ef@up-SnP6rT?lcie?&%tG&P3b{QVu`lrqOZ z#>210{TGCaf#9DkP(cde}E z|Izuwk^ga%aIRI#u&GSM%D@yW*c?AA( zeTq`|Jw+WJx)C~ge|QWQ4+F=M=+zWl>LQ4~ea6kSlmXF8{FAiJ<%6Ji;?x~S@5H}5 zj^0JuUhz-s)8G_EB55kCBjmu;?8&g!CM`YJ4#$%qbN#cWc%bH#jSuPf%h^$z(>JiT+V zEH0#rqj&Q6q!@Z9e@}{|ck=h7IC>Xp4@B?r{5^`^o&7_fnWBGI&8H-Bu=R3r15TWq z>*deyKKOe1nc1Acn=3;7e$OW^n-60TK7u!&z6$0~=DJo5KT4(ookVfN5NITd^M@U8 zaulc{{vKlz_hWlm7y9d#GhrGVc07 zJaZjpT*U9XE*5GgfMS^@930w?a1#UgED9rlg%Uuy*jp|ad&@;Bz%whkQ&zZ$&reFA z8u&b!-*tUDo-ORu@VPIQpKDhB+7ALdq6{F3*?}Ymx}IegtO4zLX2GUE^29CrHxjW$ z(`BI|e`t9Qvxb(75_DbchXGYA)YX?l=bMH8OcpBl)0WHqwB@1%T^E~iW})1QBMJ@( z=@7HfRo{!|%gwyyax-taC_&d3u^_Y1C4DLMT_j@jZPI>Pw+Ke#=7J_KD_;{GsI&WTB!2UC(h8n%|c~dHod& zt&)X`{OERBs3<|##qO_(Q+Hnq4Vi_WAPbed$ID%^P*H-ecOZ>50K_h{7yt)h4|!(6 zEB6W%h%!RUJ6ROWT^Q)P(5eAi@|}(R)R%(a#vDR4+#(AWWrUW?o$=+Ol(4=Cg&BpC z*Kk+cI4{VdTw2a%TnHxulVnv9CjvYG&n++KMW54IO{%EoZWtci4a0-GCn0kdH}9&> zMtMA6Zw&-kb;lQRHj8NajwrZ06Ab^09bouva2o@lybX85ULBiqH2DtFEu*o#ICi>- zo-e-KA2(m@|G}Ow9?Xu+7bV9<=8Gxe$b7NmLBU+R$!Kq%DV{s{9C%1Pi}~Uz`7Gv( z+45P;7avG|NKXGF=8Ft-zIeV{5ClshE0lqAzPLnIDdvk4-xpws`Qj7_dM3d=rcrzs z^Tj1w#j}_%j^OtnIbTdi!R)RhC4d_xTTL)uXtKgZNMPJ1ffDn@x%~bk=ZmjRhWY5X z0z3bi`QkTbpU@;+k02bN!@Ua<4i;vqgC6dW{w#IBEJRGqCRcC2gply5FZo}L&p#kxe#iQS2W|SR z`c-b>`|lj7|Fr!PZ!mmM(}FkRkNBls1-3t8#dPs!&3)USK%`h7=^4sWpSvO1gj&=W zITXf|Pv*&E_`AiqSv5SxEzDt|zJ*1s@QeHoj(k<0LDwu79l5s$?lQzp51ui&;-w7U z9&r(T+o(*_$niX!iGsEGEjWN`<{8kZJSy_2cAmE~4q6XNM$5w=b42=0$ zeW`SusSA?`!@k%2z{Bm9Pf{MF|h;+ellMeA2&Wned9jpv}aP{WUl zE&Q;~z?jAC;bl2^25LlLb;j(27p8dTtITPim;)~4hxrr4cb*jw1?4mBRZWsJPcobI z74c^X-$S6EHPttOxQFiH2+Oy;PFa^lC6e?;bMU|YB?tdd;YdF;11I}%oD~8d+@H|f z8Qt2`e^TgtUWST4B)}jBnq!LlU)b`;Nrz`zAkO z`y7WhL1OSk3Id~-BH5E;{d8?+yP$#}6z$v3qCH{7UKgK;3`eks$_ZGgpcGz<;CNxa zN*|hh7Jb1F;>=~J6!aGv48}zQZ1x98^w#XmD@>PgS@fW-ZwIKtdEQsNS@Rk;#;d~f znOg9^xL(t3YFt70x5N@`ef4&3T@%{km zO$dJfGz@CoSj1!WpOM_*NiP0Ar9=pY58QU6r;7+Z2bW`{swqG4beo#;t~_i`hhxI^ zH!%qWd(EZXPV<0bguV~l|D_50A6o+AP$sNUqi-Ha1ghx!%LJ%a-;a*%`_YN}zR)^O zX`L@d|648rWBUI)_WxvZB=rC7=>PY4h1*)A=q7Z3ZL5nc7rrAtSM`%{S`^*IgrI=h z4_)*RVewG#9g_$mx2b{%&`WEL#?K-|;Fd(-7DRBdUog&T(L{iS^W5PU5#TmCDLIv* z5TS2{D>`wghdvJD&h@}zmTnG#PMnKPii|()TZ01=j=|t#LUchlw$qI-((OAeCq>*8 z(s4v_GW5M=bS&2Du$V_JmS9nn|(dFJShquI9-eeM><^On93aipB|}(%Z=LL z`wLZJ1k;25M%=AhEmYXnewgA(;$gb*cn{@3LMxFE^GgmilmgNZH+5`hlTTVMJ|a2kOXxA99+^G>s7 z_?d0S)J60do@G5f2k3*7;lySg=1z!vgNA*=qYS$6F2z=^x@U!TD-G z_i~YhZLe~9l;w%+8h+6GZOpMv>A0LK(Z4GpbHuTBahfFyrxqLWy;yI>SxV!QEQn3G zj!=AA<&)lQhU23eUXV>e&6rRMi!*FCydYlj@JjaI@x21q+faC`Km?tmYxnBT9iB;R$a+b~{1)>t`cS6>7~hcBKht7t(Ce_y}*dg*)|O*!NjM1NlmN zzBEUac45loLW}oudv`}KEW6d|CUN7cAr07CmK(ZEx6QEtr(ZSLT*vyo&|=| z)z7%`J}xH4=EzP1E|GiCjCaPkjQ`3s;o6CmhM#Z&v3Y#?#r5Dxco9CJ)xnf+b6l5`->oboF5uD6V%af;M(D$*BvS#XQvm)V9*FDp`=^zs7UehR(Z^U*=*~(p!L&W8G?dOdoW(?Ro^TZsctLd2~`gSmtV!>35^ugpNuVi;3Wr^Mfu0jtBU;PY< z*sW@lb<4D0pHE$`sz1<)fSPRK!6(__)TH2FN-)Iga9=ijeZPiB`1&50W(?Yp=EDAN z;AZ3&g`}+4>$1gK4?LlmtL_qXGvRZ1}B z$RTR7oQg*9o5Grr$*`|7{&qALhD%$we?kCyTDKQc9sq0c8uN#tz$;-vGKY5+wAE$T zAPN7y3}quKV454&r@49sNhWDrlZM2}_U_vFU>X*OH{JwAf8kuWyrIXdcP}Au^CA-qOgV#5-m26 z!Jz$^WXSdWAe4NB#L0By`)9@2FO8WiPWw|PZ2qS8JE4Az>uaKYLdnpNF!S69$=jMO zYET93<0?jt$d1exs&N%j&bQ#=Q1^2qE&WF%?x!}}5qUyj~ z;%Q+KYBL_~ED&(j*I95$pg1ZQGQq7b$w$PX;kIq%GJRFJS^G$S8{L+*^8Lw@lF zdi@yae8h-uMjf01ZX&y>UC9oxIRDkHUGEyl!JAK`aTI>dK09E4J)L#P{q+i%G9ZcV zufWr?zita!c(pLxyaY!w6iJMOYeZl=b)gE{gUW`=1A9@rzBSG@3a`3I0k6}Fz zyKmvklZ@G0DYie%SBQ+N9?a)cE|!_ya3$WN%;UD3st;TPKjJ;*IjVkL4zd-~nX)Lu z80joPm$`YFGjg{p^9IP=5CoAMuD6$sb?b(o7jUmHPLblRKlD^~4S*`vpUQ4RsQet7 z1YgSM#mdhy1;QQ-S6Ter4<&C;BPGz{f}QuA@37Yqw|TEumR;$V@fAJLuIb`KaqdpU z+Sz8m>DTY)Mw(xrN3A$c30?Tb6=Pjxxh)#5r#Afw>u>Om-ID<7mGEG^7DR>9e$5pn zBaUvVzO82k?$>}(?PtnA=MkqB%GBnsl~3UG`MS1Us&ZCyfpO1uvV;?@5}XB`f6xMQ z4K!fj_B%KgrmRNmi&v+0EsQ+Ezax>SEIU^DId0I9joVeMcn%+mrU3Hcm=l)}jaS0m z6c*y^0oR!kJUAfU3D1F7eYHzDYgHFcFtyUv7d#0^p~yrHF>(sq19du9Z#F`tCo!u{ zpO{D?H2qG))`p`li5(O(%Yk2(7KPt(t0*Ual`B^Z6l=nuFCLpab^vt=##)Xs*q zqaiI_gKbQ04@9BxMcG2)4j7D(iyu^119SnjA^Zxo!IJIJ(1wG5ttQ@7{V|eOv62Id z#eLXH4mt@VJ{6|4)!7M1LaAGT+J(EYcABq#)Ei~d{`@W^WkDySpwXmG;oslvj?|Xw z@jb1SZq`K6r-?uPHKGexl9bvP49<$e;Pd~7y)S`ps>=RP+q4Z^Ur>;uAcg5@wW38p z3qfs40`EzJmCd4vRk1STG8Gyq$dZzlHa-G%$8lp^nHfiLqXk)73T;`0g2?Iu>gWqa zEb2fDLjK=#?|aEh8y2_!&)@Ged`RDWcfaS}d+xdCo`pj&p&|gORdf)GQ%Iqu3T)#d z195GEYS>GH!#9pBS=NHgNs;9HVE63{X4g;Yu|5p95ysT<7k>-<_WZ72h~LKP3;17$ z-x5arpTTb3VM>09~iB7>I z0g*S(yBj&%7bmzR_)<-ASCF>Gg8(6o}lv5u)5Qd-oNWVi#hWZodK zHWSL|7iL|opk}8reO1T#{%bMtR5vDZ}t<`0%V5du8=lj;*EVq)Z-jve#VFP;_U?! zrMqE){cEEXa{^8S;r8zqu{e-Ff*5pe?zC_S2kBBiqn5HMQgsS)0b7+>QwZjj@D?a| zHc;ac_GcERj)R*|C}Uki?(n;d-XU8lH2dwvl?BNnw_GdAg}h`o-Qby9@Q~u-jk0lV z1Fks>SqT=FhWoE1i6LBkbmqXSz7D{;Ac}z102B10%sKzW1j+f3&fm`^Gt^bMj!+t> z>xRC6BA{f_pX=yPI{oQOf3BoIm*EdaVFU^$9#p!L-Zk7h=fcASXqdKn9%Ko!m21J6 z0n@E>k6@NqT^4RbR=JDkdY0uEj}Pm7PU?>Y-U-nRz$ zcr7?T5%ICt$no*0z<=@a8SwGvm;PVD$7utAV&3_Y&9?tZeBAgTb7^%3e0(^sH9p?U z!Xo2iQl0;m@p0dD0Bi0E0#-|WT>rso@NxNjK)Y|#pMTMx#q{T8`tt()c?N%gT-RQ! z;p4^UhvQ?DpW$QcEDayOzL(?U1;H#XT^1GhZpT$0ifzYosbLQy9r27>y&@6hRO}B#DwNl97SKg+_>8$a@sJwiU{EX%yl^<2gq98}=bk z#Gnv^Q8l*%Bh?>W3j)!DSb5_%zvn=FV1uVQZmP@Si@m@=C}&=2nIQorU|rxq1&TH_ zOy!R}vFacQ4yFl5)S$sy0bFQs&)60Ze=$QV8*ZuqnPq4YAzZ>Jw-%IBc5KnA+1?*hGetrVgVmog!#U_ibW)aw>vM zCx3;>MtgLM@V z33qo~c!-G$p)Xv-LXLIC2m8{9HrnL_R(ZFLro#~~*g)bNjC=thO4BcIIly{LQ!|LT z&xCo7lnR2M&9Wcw`z=if$LvfaCE66a{IbiNVS%5?b8Jy!aatgrAm)t& zGaQ5a0_kT;mOVld5q3g(Os>^ZJE=4NuAeHv+fFpz)=i4dwbV|5yN2ovBz5g!=}BT; z^gWD_W}&E*nt+*-CiHOQ6$Qn!f-YbMnZaSFf;LZz!{04aZif30)n_&QI1B}wj`^^L zABVx@!`h_zuqHna%!hRn_hH==KCIyd8^RyMQWXCVx+tyAaIkATPc1dXRRS<#uHu#v zBD7CYKP7pC@2^S(go01DFI5#_n*^hkxDfhHIrYZN?7 z&>xcXljLz1o0b!>bHN{;OQ|KxxHxnEYyw+xr7JOaz~E@tdH8E|wa*H?r+; z*>Ker6LtD!wn+GOH<|HKT@I_7Puc8~SM(k9E*z zq+1hZ6wl~WGqSM89Y1-!#TtL&dNVA;di(l^|LOJiBo_AnmGw4l+c~edD+^Dv-a1=< zpX==#%vDj2xZcj&b584xj1@&#Z|l~bZoN$+VQuVbIZ7p*MB!LT@(9}6>b{??w=pi= zdRxAYueY&%w2UQT8QI$U@-vpPyPA=Oxsfrnv+=i#F_7NC?nd{**uCtsBEw1aslLLK$a=VKqX|6W2)Wh2G>g1mQmS!L4%e^Uj=cG0X4>S5*blN zek2*Lv9Mb!%Njw?ZfKZjl|Qyw{ylqa$Q~qGS1tMG6AKWBPo?|FXt=To4k@B8WzvAO`~--sNS;c_PH&s^Z9@#i>ZO$- zA+8}QPPx{HPZurvLQ6qT9)hhtDz>+$m-e#VjE7ma zcfz9+f)gn?5ib|g%Y}I9Mlap)axuMJEcu2fiC*>0;TxT#6u>!RnbVgGcN4E9Q*-(r zmAw6uC9EF!x`b+zL!O!LkRQl^ckujNNj@p1f~x#XtU3WE>4%cMS(yUe63J^s7F#mu zvh1c8vm_gn;dm@wtok+vSw&&!DdN5MaHKXt8LV?*ZpH9{pEE9*uflGq(S} z5X9xq<8X)OAS*n$g2Uk%X@wHvB0#!ceE*-^HQ?pid~(W4oDmjx*}lGs;&$?*_3<9`G#CZ zEmjU!pTsU)FOY`pA9j~4g;%husc{OjuvaEouL%TJ;k8DU8&<$=^v6_@E6Tl1Ze zT?=uhE9x=yl5XfTkV?fT4q2x0$4<$|AA9rZ#(%^x-yj-)7>AF76x+Qt{FcVqcPP94 zvE-Y{2o7I5wS+ew_kmQhQ0}NO3QIOdY!`^IhFElqP5}fIY_oYJbCf}%Iix|Fbw@R3 z72BWrOb|gjw2(K?Ak+_@OPIX5Ro-Kl_j5*z{u=siB&KWVjhK-j!n!Z)!>&D;E%bTp zUA2Y27i8$e2$1*kYv_$j2ZQnU{GlV^CiXX|2GMOy+D)^F4j9rE^t>o`1zjDwf{t#y zE_em4PfSSwZcEA3UJ9q6b=v)!nAJ)H{|IPZBi2f-bH3YB_RwkEW z_@FT$!)fjor4oS--!e{X?*iegTr6>x>N?PQxO86!mMR55Jv18Uha~IKbzrD2Mx0e% z7ra=H6-uTOS?G(cJa~jI*4^#96IZn|uwN+0ZoNgR6RFhv@emsT%dNat4Ys0G*$gIa zzD-`soLvqg!j^fvG-inMeB!+_B#JBLP8pd(xvdZ!EZd{t&9b;m*;Z)6x5>XA>^Aal znM74UB4S2zFNg0<%I}ozK+ddGx*|tB&M+t>IoU2xC^eCUJILIpDv?x5tq&>uiO1kM z^tiMQZqAv)pCbmGz+lto4#7bIm%LWb))<=?vize>l4Z2!1~ZA=VA{NQnIw*z+q!yura#&I^}innB0iIlZ*j0Xd4M4 zQPi1^1Q80AWSa?Ev9`7*|J%fB!@iKD?1B4@*1+M(MlLh&{D05_0i6P)r7Qq^H2c!efM43uJ;rK)f7 z^)Harn;Hzk60GY?523T`O;9-D_iy13&|{4o#5yy$on z{+NekQ5gQ1hv!fj{+Ng4QCJ@3p6|vIqXHJt3mQI`_^}`tnFlGjL#BP3oVntm^tt5( z{56-)U92XdCz34XN$8;@uq4ZvA7^W6Ngcva3v=9zN=oYS&8pqcUpg+J7nGr}#{zml z-cu-Ak3j;5U|w<_faH+jeN{eBv0e|D|C5H#_a;G&^abf+qv~^L&yHr3BSRVVC?w}G zC^S{_lv6?+^@^H}yA%ppi4dne)8tH@i5VX->E=P<;NT+Yz~+G+i@EpbSNoX%^(I_+9`nApeu*0B#-NSep|$)(TbF>BFwL zFCK%~t1BClLb0H1vEnbAsVd7bF-S?wVlmT$o^(by0#L zrwhM#)Xo*0f74o#UUz@%xEsf*BOn?}$-BHLzqOP`O7<=$u*o$J2-Q_QGtTOGGwG6B zTI<}%RSvTGTt!*`w7UR}g@-KB_da{GoPuFXPjzC5f5>dC3|0iQXCji~ehZo^kF&J6 z(pdwAaIvtKeHK=$CAcMgC zi|PFk-lf91l)n_;8izADSo@#DVAbwpgVjA0s|s6v^%`RTj@U9f_C>w~)*yWv`rUIV zL#)lHMBTVx%T{$on{0F-f;}dk04dS8M7h(Zg89|q(?2pgw~7Qvx8t1@$gCu@1jEdm z5%|Yd6e#boE+wnXP&M!Fz7PjF=sNhizxMA*bOf>i!a@FVCHHT{*~iSkktQR`SjBaj zrJcGm-f<(G8^NpaI+cCA3Z;jo1TAk&gc@q6t}V1jRr~y!{^&z{8GZXC###B#{y@Nf z^#+@F9`mAuzCimmjm@)?bUesy8Lk-_t7{xGpkHFez0f0~e|r1*Qq||N4%i?_x=D6K zn}^BcqD{Ei6jL`b6n{{vIvFj=>&XO!BSyjXZ2q5fZI-^c$F*4|M^8<_<6+~ZczVRK zd)&5kkNYttwBj-qU$7s9*gh=BLp;Yco?}|vlujVNqCk4#($;FiB`x?=)osBsr+ltD zQ7)%0Nii7PS!OA<8O9|f85*dYl#kYcPvA555W$)wK5JgE`@l6f$_|71##Dy^`fXaD zTk(&r@_L)BLQhz>0UYBBzzH)YvrdC5h7Ib#9Gt|$js+AQmTjRzg*mG*4?%%dk+v&M z=mHViYHpN+vuH+;N2cSDar|+1e)`>eF`w;yx7(qCwNmQ@~I=3`saEKf%AQc|EtMUxU*5biXjrAO`Zh7^NYR; z@_ZTrDO^mE>5U{{Y8sMsc6)(yR0>^Zq}gx?g8m>_68s)Rrh5!AbdQnfplb}At%Dbkwour-pgXeR!F*nmQ zC=%zSKrrnWqf>1>jU-5D)r*a_uLf7xQl zC<+Kg>!=Kp(iT=1L<`IE;J0y$Qq&WH#Mplgu~yH?Q$n$arQ1dHzu0akwt%$`SrkQC z%)*sY7%dxOT}rs8ocl2{4g>F!RJqe2S2D^PJ!1rW8fV`q$+I9PG7`5#CF<=E;Uhco z06i?E!ul=@(PL`$4ftW57KY{qo6w+uE1pC-+BU4V`kYags{CcZb!ZJw_z@D~PRe92 z`ZE85;AZ;xlUNYbcd+Hv*;U{rvTlO|WO{Ct<+PSwD$9e{lUI z7M*qdxGI0~`Wd+BOzX!+23G#()=zB3Z?S$xK8E!(a9fM@bEGrYPclMVte=N~V9vIF zx{_5bWvConKXl&(Zha0ez^yO`RaiybMfspI3O3MHuFfIC`Wjc~Gkk!nvyezN*f%1a z&#zw6a8@g$P#h1c8o;$^!u@!)FqcI5KoO;pg`kBDqhX7FBH2x^Rr^ig8!M$Jh@UPL zJ&dG6c@c}VC_?dl>NjPB{9f^GtZrV5+61aht;oq@K~L;Axd)lBTU~(w2l$2AF!*M2 zKwu-we)Tsb3MP_-Muxp_K(@6r+2yaX@!=lA)~-EpEQAAz+js@OlP`zzx=^wW=tx-R zK+rNgK(RS_#oVJ@u9+vjHE>b)uWV# zfeP$SQEniW)OzxTIVQhm=sYnZ;z; zDij^WhrQ?$WFfIxaQJDoAUT@} zwqX?hcC;Dj-4T_DcZVVII~I|G2V%g9WYws3XvI^}|D+PB=$Gh)HaB?_m1~zz+2pTr z)Hg5s7(D-2Vh787Rv9iXB3(9x(_ z12s0wcf$PZ5lWJQ*a9&p95QAI37KS&stluHJnM4kT3AUc#WGPYq`$#`!m>g)U{kLo zM=`3H#>-z@6RTa^k$g~M%R7A;z4=ZkA2G=(AE4{6Bqyjh84H+b3!AWJOg1<(6>8Zd8z`e3TMp5Y`MYfMUI{q)KiO%EwPS_K8qF zd^)L(!@$AV*n#iTr5V2vYqVk77g+X8hFo(zT_$Yhb;l@yYN33{bj$7;UoqXWcygPn z#iD{4R{2v*@mW)jLFTr6$}CXyXlI99v`%glR5@epXq~Jb|%VD6#>v+@`>WNia`P@(92~72rxtHQP{y?p;wCv)gW| znNa}}h6)$ur>Std4p24sFG0yF{TeL49}o-~siq?><}=sbXEg|G7@IiMlkvP34%;9+ z55BF!lQqCu{7t^m?wtuwb6@5|>|)3yIK{=HRj*aiJqTqCnFY@<2x53o4Vq3tMahfM z6zo^|(cTpLq?O4(6X}zf&GZ>3gQpAW2Lx5LX1 z`c)U_KMzEEa3=E?cAguF9Y7~}BJXi8Cox$=etYG|X1Le&urHz9Lo68W0uw?MFim~B z{LDuo@~>q1+1F3Xuhl;zRKM&YR$F-WXRUuwsQ%OENB7f1*VSOc&^}1OT~q*_zQ{U^i`Z7RtX zRaCT~!4e*^h*}b}fz{T~qk>q_xt6BMW_jNGq*__Lp&%B_DNGT8wPYOGbR`R~!1fs! zJoxCa_en6^iC-;#kK#8CzklGjAHQ>l|7)qIh5w1m&kBF>0}lVCeSZh=w;cI(;7_Vl z=K%lpm~#j48;ZVn#IG6em*bg(UvNFOFszClPZXi0EAN56ZWdHx_ha0})WY5LfPS~7 zY34v?7ZjqZ!Lw(V641`4*3+@$ah6c_@NBA9ckPtELb>rc@!X{p?BXGf+Nej7a~*P) z1tm2^!mxK#Hyl>lyY751BLof5DAgegkfA+Mj2$91-TdgHXE5 zIS(>YjlzOgv`-_x<~^l-#ZerivLNXf?G+r@+T4gFn?;>~YpAi{z?rb6+B!yCy&xSp zXGxzxlHslo3ECRf1ca<3CWu3VR;pY-!Z@As1vommkVzwPn-kb2Aua9SO1q`3X`?5h zPz>FQ7#z2V|APw}l}kF23GRgLy4tqTLO&{vrYH;|5(R+5QF`o%?LkIF5@H=-fwShz z`yH~Mh97K0$hA>Mjj4w3#p<^k1@+yBnUF=isd{`Vd&YxRAj!@a9Jc7O+~nNxe$2F6 zQF0{`lTF&Ccxrq$vhNtiA5%@*_FuT{Pf<4k1+1nZVEUX_v_DSx-z2- z2V_*PP!0fuiXtRkQ!eB6jSF)~1_?~QL z-XUOO*}9sze+}0=#sZ?mye4$A196B^YPDD|BU(gYL$LI zUi#)Qo{xuoznA%V@cqd1@$FZC%lVj(87=&*`S|v{$n)_#THz7q<7>NUJ}$yvJ|Fdm zNcx1c*5-2ZcGi zF_se3E=fc&*g|iJ!WKGdC6+KMTU+5GuPJ+LySI%prdT z3FO7$W<#8z6dDC%Qf~AaNihvKtLp)r_4F#rk5Dg%gE9a#a8m--nbkeOA{5hwN~UK< zR9ZWs_^)_(!Xn=Vxbu{ZU^?MxjcHeBCA*vi#&I|-puQfex((gLrU=V!j;s3Igp{%E z>b>VvLQ<_wAs$AOnh+ETOK9Q=C%wNy9k#a@6T#%SVQ^_7tN&<$CeZ@LJtZsy zaO=lhJKS@KUCU+D%67^}Y%(M?aV3lkMs@9iEpX3D zGjQG}_^U(+D2ChGutj&2jrR)*9%Z8C1x88~9iTukmKj#Sw)x?xHYl=A88)VkVY!jk zuBA#S?umkFQ+*Y&xGg9pW~AM6NGN`hm085-9op$dY9*B%qyeZpMgvgHe)WT)8;%52 zDxhAC0gn&PBskS2`o;k1Y*jvk0I$^Y4*J3AfbwWs?7rbC%Ai{@ttm-iRaz|0@Ab+G zg!qa4!*#xUbtR1rE?xmt=w;SZcPy)S;~^B?f;2!dNl1WGeuuq>AEd*6yPXe0BwCaO zWz|2hp+JX-Zb=B4iM~==fXd&;a)Gv`Fxz+627;N1>HD| zWFTmf8>*eK}`H)_O!3zzkwq9I_{f&n-!g^Vv=%GzBADhYbQvvNiE>qV_ z`&(L$=Rl0`&si^*A7bmJpt#q52kvTsF$7#~y(A*`HwNx$ z*30m(BLMgl7XZBOUA|u47~K-Sd&m6J^-}i(D!3aJoWpt{N(cNav5lgJdalO&j| z-~w~l2?do|tMq&b!qDD0MlXn}O!r9`|A9%3WhFkEJhZhYgZ<9Dw$Y7`2X3gwYe#ps zN*U)yF3f?%KSUlU(gU&%38XjO4(Bp>`m1t%*S9j5N0e_)>01dJiv(>P@*^Z@<4moC zX*#wKpDztCk-l)H1VI~#1Z{MAslo{SWAv$wP+m9(DB2rMTn#9578cP4;6W|g`c z(((bzF7E)A=uCQbLo@3|=nv;7h4c3T(r|uS9qk6Gg_ZO;9Y3vhGAerWZ7e(aah6c_ z@N8%0r@b{3IrEV-5{F_HzBv~OMO2CX+Ul}}Z zj^$ZOO{CN<9+VDNvR`eDV zb{vjWqWnxEQ8l;V5(}OhvX& zJWq;hu&asY!JG;#4bFQW;bbv|Oyn@t1=@5+z7uO06fbxJL=xb8Fur|RnCzPr)4L>< zyh%wzkg%*0l0e0CQN*MRDDWaR5PTr3mxY5S218_%@;8bpZwInYq}rhPcxgr{ZkrrF zgphJ2s4XHOh^>;P3?38+fGQRPRSh5DN}{jTa&*>UmalQP1rn5v`TcXfeH}6!K0yEg zzBnYGkHDgA1RID}=0wP__Vo=3K#VdPx)Cs$<0lz7yXC7HL#Z4XgPD0fD=6LSvn5Bt zR8FY0Jgu}DYH4{?8h&?cWxc~UcHHr^qFxA55BJ6w}uv}1LSp<)$)U| zfQU^TWF$Gm?}yp?{QE5rb(?W-(Z2i#8CYz| z1Fznv_7i9a;uSZW^DoDBEcjBS!GwA;yig_aSWTq*y^6+|RUWAE&%ktd0BY%qMF<31 z#*Rm9(LM-x5g6WyLV5=a$sfXD(y~&RABt3ILt9?O?t~UqNOHD`IhnnxjQN*kWF(t4 z&MxE*1V-vFT9Jh2Dx+tpK4y2Zma{-Q`(20dkkKAms>A}D?PljjTGV=i3v2M6#^IQk zs?U*v8uB)Q*}4!_P-q2Jwf$M9%-XIGFn|{JAh<$E+4-w)b=e2B%udGw<#C>Ua~jXi z!md)Ym*}$}U*Dqk6f{>E#k2d=>@2JioRtvf=5LVkH0uvlg@@9p^FU#Fn8Ad?qF15? zTp2nEQ4D?AFhO%v^feKOkOD+pM+UNlk{viz5E5e_rSxH`jDWeMl8fomo?GZO%AbP$ zA$Z(K!o4$YQqJ!YheRx`P(G*~mTeuO z1^cLh@>X&QOUu-CN!ftxh|5>BY|U?D8QV?p{f)9jYV&uP(%x*eIR|Y01bwqj&5Oo8B>?%H`md09!b(@(Jv5EIQ%$taV|LNPuW>Q!q z6ZDNllVr4Vz{n(_hy=JLT*>f@#RN77I_ETCP2Kl*qSeq98WplBGtiL=eaJvG6ew09 z2=nVK(!?L2%gPl~fvE^braQ5n(1yya3ZyG?Y9OFG=ce7wh;&ezo`O6u-b3eDsyB4L z7v&l$wFXpQw0uIuRl1Gu=A$oSiiO72wAI1h4qJ!8O{XKF|19!biM_@gsBTzJ(=AI8 zNWi4J;hzMCz*;tBu-ijo*dclDNXs8BBMJUH)wNIh_IyIk_=BZ(b`Ry=Zb4ii#%y96 zIBrCCDm@V15X-(*RDo#UEm2g!T2~vEW)t-!u#TG4Fo&!yS-npZX%!kBm6HByB1Y$f z*D*TI;-mQ&Ia5#3s5nVwBeaS>*$x{Hk-*;R@-VRbT>AZr@G|XJTc@%8iZHl-zfwGv zeA_vu@NI`J*tKiaeS=LDEaRnUwbJcLwrh>PoNqfUtYR+DUZ&6PX_;N2?4LZrvR|NP zXJONjJ-F>azKuMbR4Q>?z%BS4&%f2fmVd`xn!F0QerJ<^DM#X8BtLV8{F?lXzCDre z`Oe@Ak<*!fe`o!|7Xy7S{!!6`SBhv&Ot3XwZ8B~Lk(=&b`z zr0Vb_eZGfj9{S!QMLsZl;ionsq{+wI8Lw+64%v{`^uVANc;-j*!Omt@2&O+lIstUj zcH#>EJT-Iz3(dfdeLP9Tfuqe5J9#kf>5a)GGN*<2=izZyuN_U%^k~#E8FvrHWbi9= z)VwJL8^4!?u$ULB;U+T171Ta#)n?K1p)i-k6U0AlV!ODfDiQW#ajdIiC{p=m8uM>S z*wTZ$6S`1lm~%lztO@=`ZMeB4B%Z|_;Pu5lZO{Q8gouK8Iii2MyOf0w5m7Xh-@`M> zF|Z+6!C&=DG&Df=QtPOyF!c0;=;*C41Lfc}CDYA6kie+hbiD& zSL&83n|&ty8*U8y!2blj}NAv zX?_Tqzi56G{N;4>W6ZS?=f~9h(b0i_3!fj4OpZ7|Cf|nnF>po8`N3~x!udZWfZl?Q zPO{u+7K-RZ zO7;<=pmOHwi8Cv#5?W1O`0|xC_I*X&R23)*l?HHIheZPYl6y zt2`EYc2Wtl^+yx{w7?2bW?(a8r_(fe2|;|EcRW%ei|D;pSF{t0nXU{rDyeX5E_#9Y zpfMMe5)5?-`bCkCUlR!l3zy|p2$vNs#xd;SH`T>f#O|WmF$^0D$fpdOydAWVO|^jx z@g6C~y0Mqh4gm*}G1+{!P;WXZT7X`{6axGub%Gdq% zz;Iw4C?RxjeB}tl-8K7=s(vr`7!yIixAY0-Fea$t3uo7`;!{hU&J|#Sgsb>!4r8F4 z9obq>kY5$D*HiccJ3T&uYgy}RGRtMP>=a6l(I>cACGX+IChxbUeh%^s#++w&=Noe$ zq{Ia7$6GoJC6>NzSZ0|4z`}H zN^~@r(L9J<1quQ%H_n0|Hb6d;tk?)ebbBVR)f>iHjS$!wFIMg*$;=M|2l#eqbifi6 zR2fJzHg`zWgo=a+CZT|^XYO&uUVH` z2}Du%V00h=W$oUVy?i9#PsZ#b6BV%Af{IB3H`g9DA)YFxk6^`Dg;)GMiV9YIl~!>H zg|dp(+WK%F$ z3wj4BmoxBKswT@Vig^l=nC*(LEnl39!XDp*ko79KwjsnS3w{`z09qpBY}z=Gd~k3a z=pzUYz}j;W((4L-1jPhF5*&+s3MG*E6?8bfcoJHs;tL4c^bst6CW>E)^t$3x^~EEe z&$7!*Wtqs#)WS+H}ri6kRrTIR&&>(xHGBDABziA>-#ifdi{E6=EPy7Ad6|Ytew#n z?sbx^mg<@9=mlrPj?oRVHMWjPJAkr8xkaf~DB{EW=1P!o%)c@CzNBv3oIx`T{kR2< z*rZ&T!Vdb-jpreCib=sf$~0@*{rJrbEPcgnT|69gp^%(RmLF0Ex>YeDV{ zo;JuW`nrL5FLz`cF%LFdEgNTa%k&w0;$&&d2BFUlpv#UpxOa`3FqVv%P?J~{$c8jl zl;nFGZN}%Q>^Q4syD;x%e8SXu7Kz>`XXJt%kFCRzYmI?H;8DrLkzlaBf4pG9j!K1LgEfi@mnVT>U%L}AWz z?c@QZu<6|Our zJ>C_YF|dh5g5v1>rLf zR|Qs^O>GoqapRuHklzJKlcMZ>H`s`Q&!UwvaIU4As;BGB;f~aX(1}ty_6<&?Ae1zF zl{lt6CdNR<|07SriWhGk)==K4U$=p=9uk)6|SC>|>mU zHsjoV$G8N;$M}7HdxBxe_yohN_>IQo1A+6bLq3}{UQ3yf%jJQ*|ij? zr_YY>0<0K)mi6rKiatB=#4n-G8a@Pl_5v>=M4vtI*K?-N?rMr+ViYatvwcUS&Q70| zKJd%vvni;gHBFF1p;*T)=`#`Gy4}_L%+IIKPX0$%agaXynnGE{;q=*7gzG9cQ^jYd z&#s#nB*gUe*=tq7V2wUIA1O~upBy44?=zg`t0BjI*_c=D4iV?N+9{A z^qH(Lex_EuD_H!`q|f^4i#@3od$Crm96pe72-gkd(5HXT^x4>J!|1c=7q_I(CVu)~ z`s_EO&nz%y_Fww!|1*6ycjr%|&z6-Eea2jy{L1v%sM{jZXHVU6ZuHqen9w2m?2@gZ zIT(F5<5fMGwUEfHJ<}O|cAgmokw%}n?&tK`2V1m^gTpd1T5J)|xJTd_S=bF6H zPl91aZi1oY-UP!}_}M2W82*FrbEeNM&!W`R(PtYu|BT&ioSA=Cu`@)Uy@B^u^x4xC zsH4yNub?i=HQ=8uee{>pXEo=}KjW7HL0eTt7#rLjh4^PySct&YZ9Or}R+GF29|xK<^j8Bic($&i5RUrxaqnWj&_2od(a)XlFJ905Bm z1+oy`^nA1h#5zMaItf;vu@lbgM(Cd|Va&C`13Fzbjx z#wlA+hGV`)U%kAH#LAcuMp(Fva9HJ|qVa8iefaoyN3 z33H3-^sg)Pk0_H7)D##Rsssww2wOin2@J1?m}^weG_9U#7!SsNLp?JM!rbmH>RENL zMLjc7{ubpm3J%tzpg-!s0C2=*qdJ-0dyPKgr4;qAy?H@7{>u zQ*N?P1Lxm0#+w6-w*`#xwjN81Gv3CV!0W(CT}manS;lx90sYXRd<5~^sI?ufmTio! z)ayE8aL;T9PS6f4m`)uV;xbi^TP1w{gcoOp1R*$XD}o$1N#4$xZbiLSqHYXhy1m*- zCF&sgL?Ly`<2#6`8?R@&eMCl+pnb=gMRxfE8@~IAI?mg>$!_4RFn*!Dfb-v&8BZ?W z70!RV75K(3pR|ETWXpvtMQi>WF)~iae``w|3(kKtW`h$s<01fN9W7<-3(SHjxOgh( zEgI~(b(jIvAW0sT0F`m$t;i$z{)JX!7#+8QtGP*-_X0jO-rKFraIga`s9WK7(Uv@% zxM~_dPRzB((A5m%y?v+Sy}{TEV<>&zH$r3hVj>TbB=Inkp%emN3u%tlyf-))3e)6v%2S$1 zuF6x{Bzl^9Otq5kQNhiTXuB1o&yBVl{~V|7wyy)d!lu)rXIs&BC-WF>cTF6KDWA%Z zd*&`q+dUM_cyCxnM#rt=8BfOYj4Uh%8Hu+0+g}n4$$1F|@u396Qv4DpB^YMon{G+Z znZCR2QI!14>AT&VL-gHdytkt7$|+D!-|eMtGy1N+7O;6vAdNUZT(RYPZLPYxRUaf3>@7Eq^P2atVuvYZl zGnCMG-RDIbjD7|B&W@gcPl`zF#4{NeEpEzYUpmY`@M|58}s7>A^L84 zHmC0%4Q4C}%gAWCFLPPO?rKIB=0--M?+T|S7>v^s3@HyM7|QT#!tV}zGy0CKIz+O^ z=FNvzo7}`4`6-voCUg@6v-3nqZwi<_O;JMeA<*gwC4Ir{U{n?a^GMQ_q_N2!A$cjx zGRyUz<9(*4!d^k@EEvZVmKB+o&Pl-DHqZSEo{-@U9DwnO=a2y`u_swR*y$nt9;n$nFy}Q z;;8&~%%PggsOdij-Og~EgooI?(Eh0U^7oUzd`J=(7ER?n;PCl6RZ83_3|{Ny%%Cd= z*AP)20ZTV+eb(AR#wmi&`Z^vaw||T&5EuqW2H-^8 zpGo|P{7j?zJt$MG@Rss_P6!b@Q={OENQxmFz>v5KipE%u3!Zy{5@a|=+@K^(2n3eD ziA9w=Kr{)(!wFZw-XDZ+3ahAR$~SjYNFDTX6U9`k8E1E+P<&~tWHl^VhS^;Z4Lld$ zD*m-#d<^n`4ZaM?-qf#wUaV!kFmERUa>2u2@BvYV3aAgp37C+xhisezvaw57O=6xf1C=xn(!jHdeI7xO zC2oqD(iRRJ;qG%D0&wlI;Z3^y+DkklU;i01CmB=+pp2gqk|*BI{LOD@NK*aH11XkQ z>K({)hx6_GkiYrwqA&z8%-uZs3#znMz&<~;GU@`*&t`(gP{`;6n@C%0jA;gC=Z_>A zk9HPUvVI6pR04sbD-0f7o}8Q`{X}?V@InBO?u%9e9uTDtRFiStGy)1Ke0MKJIDm43 z0cBsVxBFBCh`!$M{)>PD))82@{qLPI2_My96+yf+1d$EggVMzeAWXtqb8$+$LJZ(h zS=y-&6Rv78LI_3608Yu%lqAd{%NCMP3IHcdz7eOOMwkgFKT~5R%eKkzqf-a7z57G@ ze&1V#S;i>(3lo~TLQW-q8*+t*_L~qk+n7l)wkR_~4zLhMrkN*BY?auSnWRgW1{{zC zj4%1MWvF_ltb)2SW?!{keH2Yb80V%m0fdO&J> z-f@}<7TXI_X^ps9`vH#e)V)L{c!sbk@X|o%QgGe zKY}-02{B9i^=l`KE|l06_lTU3wv4f-lV`?dOKgzAr+U)6v6;c^uo>i4^; z;oo0g8U9_=M+d*N*_&mWWqYB}0hbA%g&Uf6%5yk-eNH-Y*;6Y?-j*qIe~8Z7;i$Lt zuXu4-J`?6J{|55+uPb3w}n5q*0yFvpK+jrbi$dqZt7>!-J6JH?<`uj z33HdAL?rNH5p}Xzy%&(hv(eDk)3t;PHlrnQG*C3jrs-g7kHGG65unKn$ zH7rF+6*vxSoYf1l<{MMMa|)S8{;@Y$hhN;!?B6;G?Q^eJs?V{AqY-ml#AT|0eJWI1 zXI4???bo8TCsCT}^=cyFt~{cDgBonr4PPoB!a1L^h5l@yKkMkv8v3(>{=A1jY=K8u z4>a%gIb<)5u0t-QdFD*5k}%I`RQgNkT1YHdg1(WI+9r~~am-$)PfC(JN|b9)s24=Y zL1IF=0=?LJUvogN4%2KBJ=2n)UTuXvN9dAcKa$sZvp`#kCjFwxfJ;Bx#KB?7hWUZK zB(9E$ZM!dm$U^^$0rS5|$NvQSOo0^)sF{|M112ezTcO1E(DKepB;w^ubeDvJHz_@j z!b%5F|3-u`0>Ed436p;7(E)sW$^4-hgR34mRbOUyAGf&Ld8Vbc!|CQdxV3`o6Zi3f zEC>S4aPdSzU&1Shs||cM2}LdjTt{+}Z2)engyP%rt!xF;l4?u?keJ6RZe|jb$&8wm z`g(BXXfrZLj$cagwN(I1$lo^X!+`!5LH~=MX3$O_(TW2!RAYx)(Jo|#lBuVugHTe! z7G>x2@{R=Ld2Ah?{(rI5T2yy6sxw7Fs2a(& zsPojQ<82T%H7qJ#jrxqD2myt1{QzQ#>RLxp*03nQ8ufRIx+E;>Q#EQnMYRiy`cRFU zOi_(&GHNZXQ=_seiV#4k8LQN&>nLhPSk&8UR4o0W4iadYD2@{8ZDw{MR9(hOtZbQ>m8duV$?!U{CJ0AGs$OsZ)6AB$ z9z~B$0XoXK7c5)!5k~;k69s|yuT5PH{;yFoTeoCW=$w1lj#5Iy0lPx{**c@|IocO; zV$zm+ge!dmIWo~~rK?!S%MuJ}_zlA^7r#RMp2M#kzwP*agP-Zq z1j8TjyB@zW_yy0)|8w~K=Encu_&l)qjQHHJ>CE_i|Hhw<&tFB>7Wh2#&kUc}Khp}I zXZ@Yy*c`Z(ZGq37YLuO#!tr^g8g)5Eh2!&U)hL0Y!tr^s8uddAqQdccS2b!6MTO(@ z1T|_kMTO(@7&Yo;iVDZ)O^bQIN+~KFpMRr9JwQ?6`22GYKqOb7W*Y}*c3SGt=Ay5bNJ zpKnCYXlPNwP|{q!>8YFNJxKtP;|?4_YS|G4To94YQdzWVX0roTxUEv^v&Ikk5@wFr zH}MZctY6rktOSKXMqw<^)Zs0^|7vCoTjS5r^->z0E?#a1EiKn67o9LcDxn6X7>pl_ zmKQ0LYfsPQ=hWp600vgF#ZGI<8(T0LOTkxaVVTc=Xr8C_TSQ3*D%HPW;;Aa^2 zXh>TZrgkdx?ZNiR?VFYRAUFj&-~I4|c!(zD>yZ{1%yk(7!Z=Gqeme9*@y~x=d*9Du?cHCXw)fiKvc1GV8q?x1 z3Y!^p8ifTwd*7p~eRbo1%%(M1GIRWR%7xEE3F ztHXS~Pqp@mxia+_pDW)sVXlxB(qhJRK#UVH#gzpyP}OyFTjegFYNuS)2iB~WPe%K6 z*2=GVj9Fj4eVS%{Sr|?h*_voF+@o145B$iQ2S&_`G^-hZl+RG|*8T)HsfJeUI?CI3 zliEHPjtZNUw-Ac9bwS(w{{eWIb#Ianr1P z85~9tpg|XB&^N|HJ!x2cRE59;*=Zv&N$v#Px6+`-w{%4>;0k zH6DKfuE2CT>v#-R+qVWIK<(q>(UZ6Br;o>=i!dI4xb@t}L%%x0w}pv>D)XGO-%0M5 z=xz?{r6RO3j7$N8lQ=6d?Zvq@brCj(?*vabcBnTVb*K!PVZK4QhWd~!%v@G=0+)R^ znZN*taJEqF$JC{R+(XZEYMc(K?%6S5hHRx6-%Vy^%9IB<~+2D$lN`G`6jd2cfJ(F~0Y89XP?D~9H3{O!uV=wj;vDipu zRr1{k1|;lw5h7pk98%nc6lY`^vNZ*-8#7c_tLlCNe0TQoY=pyA3?_6grB&K!s`efR zV@MgxEy#e|5Q*jKAm$s%s^h{DmS>U~n+>Ddo{egqGICA$sB%M;Ta{;@<)hk#kSiP2 z4s2>*R2QvcqZ%(1A164_;aPr^Cf5+z)+-G+bM0JH;q9YWin}1j;JV)pB?VWmyC62; z%5fLO1zfj^IKH0`#~&u{_#?huoi~AsQ5gV*e4;vx#JSLq5flzu9Mqe;U#In-vzwB&S$DGk+V~}Fm_6-`n*(M9;>gRr-UPaKARI_ zXihx*SELw@6lb0j48Q&^#(&jm#{ZeqkN^AUJpS=){7r29+pzI(YY2^h$nneR$6wFC zi7@`1Y5Yf>`DdZtY`2u}wM@WaxW z=B-sp>J$ei1Kk{_1UF>5*vI`s6SVi4CGX@!Q9ejE zy5z26#g6BUpJ#p`!Q7+Ols``L4%^?iQt}Q~@K%rK?&Vmauow78x~yy>!Pqnqre;z8 zNV#v7iEIcC0}VmXH>(TUm>N!A^>bMIi9fUaL;8$guvuiCx^ z$*tRW(dwVvzKM6EeGd<2?aQFM$|MJ~>bA#Wk<9tyh4N_JKd0c57uVyN(Rf;;@nWPG zBVOX@B~CDB!rM|us|orVHzvXgTt_KUSeBV&Ewv`$*;DkaO~HFl<;DkK65KP`#7-2q zRXgOh63q92V86}(m*uDQwlQf#$QZ3Betq{R`^CaT6@*@E?Jp7y4AX4;b3lia>Vcj7 z5MgJ4A0piS+ZT{DM6@frVm#94dJE|q&X@IydZbeBod08hyAzeJDsgLI-Q7 z^3H}RweV+jh5Jw-`6TjB1kPg_hQ0J#9?6DpqUhhtO+Y3D(L@gSj?cy8Q0lzoZA zd(RpS=L4^!D~)J^WO=#?kNhMAUheSTWx~&lU!nv*r}7TTQ$ned8WJ5o`|D`7f-l7e zQ5;bo4dD#u60*wNTTI=iv-sH+)ALdo?rWkms;bl@lng{Gl$W|&KpnowYL?dtj)L(`H#lHt1j!4^7~ZpJ5L{KCdr>h6bEF z`6mNT{sjMbnB6My+01;*ikz}DK=yocdt%`iuA_CJJEhzXWYhV+r@@5uIbT=qx|d0p zj(#0qwaU6dOg{AFHWDnw_k=6CQ0X8odEc<)Px9njwB-HOzebApLcL;+V@yJbJL z#QH_$!^&B5KNML=TCk$Gu#8o(oGzomW1*{QvM_!j#C3<6l#;j;bf|-dn5mw4FS8-ofFM$UMbLhvrB|fQ;yKCvHNFGIgaM_AvLl7|v&VgD0Ts5S$3H`vq6p1usa)8DOz?N^`h zN5#_M=7v3+*wf>Wa+L#~iPTPSaS|TZnqsm@83k_SC|FPDy@xzuY7{tJCh@wa%OU>M zb_G3@NAZ za;lHb(KY}42m5z98J_|(a~n>#L9xif<0*eY?v5+yfx;<=Qg$Vs)1GJZN*;#xK&UWM z*1V2UtbKUUFpg!}R*7f_EF2@7a2lCTXhG&<-c!vdhvBzc!|+2B}1z?M7;yZ_9qVU>0uL=q|G&4W-ZGdXBa0xn5I5o(EE zdm?V5Aw>zqeklZLf!Li%ighj__G;`JNt8YFGHR7QF$h8ERa?fG^Sk7FqeYy4fyR@R z-uDo3GsKkC&;h#-D9$a)pJC$^1fw&FiNya4tZ$TvmDKC z*^ON9X!HR6Co14lc{eWVsRy%*!+PLOp&pD5^#CNRWeDqmnfR`(2lq|TdSK=~0Os1F zy!yPp6H143?}U_yPK>_*op>9$JjchoQm}ZILb4-@20txYD82$oB;S*7Ba8q&_KIkO zzZi+-jfKZ6h!7~b0b;O1(N3@zJpQ=CX4+1LlEql*;@yy_jNRqrGVF$rH**>GEIgSE zJEs0Zln|O6A1{eD_*1C;K4+rxU`?!{EEvgx_8~~}tzwuE7A!dowu+Wp%#ijwbqG|1 zXQ(NqAx?P=3fkBXoGD7;kH-W49qn5WOL)l-Wuau5BWlZ&O;{qJBJ7E}*>lI;zyuzK zu#*}(Qq^cb!|4D1J5{DlqKT+Wl&vk>YL~JmI?muffw`y6)N+)C zs^=j+RkH*r!M{(7hroFak9Vu_3lNXwbJR~a|145JAL5^L)z7=AuoA5>EQ`ggu+g)q zCObtwq>Eg^BWF-#3Pq06MQ-Mi(4?1pkFvBs$Q@Bl9To$R81T z5^GNDeKh8fPvI7OE%j5)P++io=P{~+2aQg|<9a<9T3A$)|u8Fv&+Jars!fYZHnNVurC(q%+YWKd=x-R;+WOha15LoS~eH zQIq|`Tw6>notpmvD;gVfz4kZc{EbGhYpJ~`fYT@phBKTH3!E^cfZ+qYuABJ)Ruu#? zorV@PK{ys51OV(+uYB@~w)$hdIIoR{&&1K@{PSt`FQ)PGPBKXzyQzIcd#wA#Fr1?7 zd+iiiqHzLOj7}oswCGftBloIRinXIpmq3^&eOy%C|2BFp?CP3|LyhdeufL z62x*~r8*=1y)rtY6*m)*!oat!Nhtb)Lg@g`K(}85T?X!^Xc;s3Ig%&n0ccCk70UbF zNWRu4Mu6QzA=u@f7Isw)z@2-8P<#Dl4Qg$4Q0oX|7ZbeEx!y@ef>|7q90(zxEdxtF z0?@WKsW2N731)>00kaOI|KsyjhRwfY+cE#XC+geh+Z`73ubGJ1gBa20TLf?@<8VYP za{|*=5Q5FM4k*mWMkhQ4oq#G6)|iTBwI$3mbvYae@V%!u%BiPvY!8rg!a8jq+9J$* z62aO&v{~>mwCQ_~Q{J<%4_z--1wg{^?49A$Oeo*2eIC7^Ar2T$0(*q-LnB`zn0{^a zZ0!K=Ty#54q|k+;?@8(hoz~v^wmHDoy%;sb)Nr1|SIlD=L1bHcDo9JKT|ZC)_Y^mU7@J5F;$F?->GBguRNO2d9X^5?H=H z$OnW;UYyv`XuzQWBTNdE8(v0>`caE~J~xIVm`~~d3dXG`k0JgkVnF}mFPL$=lychl zVt6batV8*_C;S-j`!S*@F)u78hGMqzn98sie+R_8$79TRgi6~w46S$;LE7v&{FiWg zj8Bh59PdDK(3y}3hTuSOs!UMo4gj4N4mA~^BfzM8mN3H1N8Ay`Q3?>Gql&`jy9j}n zWMYB~MZNI1(7ys13Y*sv`wcg|AwTwt~(Ue3zRtT${%P!q-#qZBxfn|={hqFpCFtI z&>6|{q#KX?&dfn2S^{#J!p;6sta6k?GZP`oU9X}A*R!mrU52OM-U@; zpxE~U&IzF3N-;r*8ma8T$hk+<&$saD-^o67705*LLemX|QU+yu77GaEDMN?&hW#So zn9*g*WaK6i)i?SHN;UzX4IuYN+mt_1j+iFAixhKf@Y6w`!_-eGVyEuPA1ziL1a}_T zQawfB0)kEvW=8f6#wmgk2tK=scp1JIFexr0 z=8n%Y@!7$c9#2#c9dg!n<2{44a|OS?%C42ppz(N-w>1|#J0$3T0B zy>t%ZfukyYUz$3^vzLOf-)X!(zHojBaI{0*yUcc`K)U}UhEGtUEdFe96$z2 z1@oKm|B^3{2XsJ#8{-KCwD*X9kmQRcc?w#wS+snbKSIRWF!cnE7)I68O1cu2L@=up z!E8k{)9Ell8#=lyhVCB(a}1oAF|{{OwHZaZz9A8p41xt2hy(&nmmrS&M~UuY=)-#f z6LY0Oki2k+NH+%@46{@)?0!bqY_-jdA?K8@m1Ke(yfEV`^kWBn2#=LgPwBVVZ$+2_ z&~xa5bKtFusXvXpGrsn>!3<|98-KX&As?wY5}iuKy`!)FwX6%laYWm-Aw>PbA-qXH zgm; zevRy$%I<{|l|!OF`EZ`RL`!~H;K^T@q9$Jzmb?c~o~3O!#@1}hTpyT72%ijK6DJ=i&8E@3RW#vrBc*FKodw|11VIw zs-jlKimw;YmP0{W($d5=Py~IwQ1JHkLPg4@G!)u$$fW{;V)5J>j{=GXf&9PE%x*Q&L8=XVwSp1Q}fslI}z!dsNeGJw8rVTe9Noouix@ptFuwRH;X$mhOz_ulnb)Eo{g$bC(P;ga zp$g0AyI&0!MNthJ&~K4UY7MmdE$biDR-(!JEe{_;CEkOyxH0-I)0#nU+$8;$ zKQ2*rBv${*cO;T=4XxjD>`_Rly!tJ3Ui9Bj0iOR8K@hWr)^9m~Bj1=N{g(HjUR?sv zpD3q(4iQMh`YrP=qg{-X>9@=@)~DYRRZJf{UHz6n4xk%?^;@3I<`U_@MZe`wSfe@> z{gy*$fspzwL!gfxsNZrGg`K{B%U554SWcqfvK1`hWcn@d;Jrq_Wf6ZYWFn@m@;v^? zHfkY>okf||r{8iXy{u2aMWmPY>9-`&%lhAwT(r>vJK@i+FMZcv_LDTeG2vsy$zh&G+#zsQx zx0IG~HbVL>_sr&OBwoIb*honImRFwz9X6!j(rfa6fqu*J0(JB^R=?#>Xxc$Y-9-JC z$H${B8`5vdpA_}qq2E%8-E;4@lUFO~B>F8o?I9cO8mMhy)a<6_%JLCo;((1S5%%nCwnSRUm%_q@s z8RrbrZwZ5LbJO%&etkl#--1IHr=;IJ6ipg*6IFu%()12rJRaTK(c!ETjYJymFu_MOP!Jm`EBF%TV9V>(4<_;(d1HGIht&&e#>kcFpbx5X@3(TLyeL|DE*cJ zh{PD7vRSO^4R9^wGp*k;a=OZLPEEgM9ma=7zaGZGBZ&?jxCq5OPl77ou4}mDW`YjJk z@S{rXc;1JQGojxSN5yP{e#R%il7&0G)2GVPWavnq2F@(xo29x zWi>3@@e(#pzvbTX_35`v`WDktNd1;fdJ|H=HhX%8 z64bH!hHzD;~`q3M&e#_f&Ot0jSFf;9R^jq4mpb5Sn z{gxY-aU&FIRiWtKX6b)26CCr-}M4y{h}3dHt5pJSgI6>bER*{nh#{U8{ohTaKY^ zPg%cZt4pJ>V3C@r-_q?kwb?(Q-%>YOQ|vRR-?IHrs?SOFTh2e+_cZleHkXAc`|0bq z#5G*@+kZdZvd4xf`>E@KzHSbK5C-8WKEGHB@+{eB+(RW*8RCHhArl;~exsLlOa z9(}4B{i~mlyL{(Gq~CHY`@MmF@x3qA44(DN;KWf@ysOm=o?{s#D2Ze>(OrItHthidfce$n?GVeQjijsCC_eVH0P-7oq(Ji0tbsp@bg z`m1X6^Zlad^XMzo=z>=)TDJ;+1^63`zj638?rW_}+SOV&5^?Uw zU&WWLb$vc-t!ssMwFtim?;pe8!JVyjmmus1{LMyqHvT@r-z|9eCjO@4@6*p)>wdvs z{9fp3Add%ezX17l#r;)C|LS-D|LV64MBRJf?}GiUb=$satxLt<^IyUD-nY;C(`vr!^!fr>bh0CySBCeRr|SZ_&euV}ZVO%R!F zMjStd1}ytc7M<5YX&2{Re!_xCs%7WX;C@Ibz7WE$?4&K((4s}85zQ&mMTq2!aTQ{S zuricX#Ucr%12b)Pt*3}97H2|l`$bpIHAvT%&MqWV;v;T+A)*#x?Yv>%dBb2uNQt+d zhq;F!CaeT*m6ssE_titBTj~2MBE?dqXZ(s5=3g{K>O_&U{c;k5B6X%nCcj8sf+E4@ z%2v6vU!7a-4HQ1}npirD4GQ%QOwlJWIPVqX2 z#>*EEJO(5+0!It zmG41O=pmIJZovaP43-T-pyP-Gaad~Tc+xaZCPmpq=J(wy4b6fUwj2x3A>Mp0(B{*Q z>gUW!6-q~R#tEqi(X){pwBLF&>B&RU1U7G&F&1WvIMXC;h4EV2wj@>FXy`oy^ujgR zR(VSeePIOr!Ecq<@_XoiZCYz z{34bh{WWrae!RbADb2fJh@8+j^uw&$X)eWyO>I=zanN(%l z-`aLWFBFc$lkG@Lp=bpK?-pI|NXVz4>pq7ay|%fM#fVMv@0UiwnGcRk&PS|(cPsD? zTU{6(iK0~U8lAJ1@|VzspW`R4KKp&76Q#(F7Dr@)MH=Ss&?>1M&2vsTY0eExG^VZ~ zOJ3ahOVMGWXgh{2SVh!AE4ljflwtmen#b-HUx=02j{f-wFiX44(pSvO->xO(4DtDx z1D*sySXPx*sQCKp?(_BM@B7fc;EHXL1sLe%rhGX2gAYXbuH zqkVNU#TT7VuuB9yhVe>?mF1WPu`()W_G;n(Z$N6l@Vr0dUSX)8qaUliyERG|hSDjq zy>%uF!cu`1_3wWv_=7NOnNs;hLw%KB!0t7bw;=$PS89GoBdQEvhE?7wucaz`DpBF9 zC-4e0pO2#I?Gce(6@{$6sPH^q;ho+Jd&=|sb%L{AR9Q~f9r3`S>>DVxr_8}BqPYE) z%5W4p5{FBS7HKves(^-^7|Dso?ngA-h`eE~Fx!S~Ks4J!63yW<5Y3mKIym5TU!xYr zw7eUoamG!*1~xC(;4S>d#>4QRLU6ECLT?Ar+r|8CIQMy)Nj5#R=m67rW~%>I(=Dd4 z_#tDJ_{Z$mHfFpYF-dS1i}9MWm)zS$SR5VYHBroMtVJ2C@ptgCnux&+ z0w>q8>Z`ol`B-g*S5npX8r%LDTTK)k^0Lv2srxtFn5Alq>!(PI>s#$`wM1-|2lb%g z8X**YjA&$j`dZDHr3g`o(BPQe=pC~$zV<~Jwcyk>X#HDH)X`*%VPBQc&F^uG8buzV zXfNX7%R=D}+|cmdC;BLO2fJ4&xEx+PT?l}?PP4R^JLzP@w>sjl8ooYi4j#UheE3#! zd-pVc^I=#l@31`aIBM(YN=?DWuL;EyD_Qh>#KnhUst2>$yTH6!eah}_N0`sj zO{jf20#JL?k}&uuU80U(cxeJ4b8A?ZOFJa}#&2zyryS!qMKgZ=BA;~pR_6EX%f@e| z>^w#zriQqVI(`EvXYWPWLU;o2)dAgkJsvP8%%+pQ`O`bZ=%(CABzFm*a|dOBhn^KC zPvkQ~Fm-kM5Y!chvf$&CEloi?jz;R-@jgO~$5%m!Bl=<}@BEVu^pg+eHp?)STjGb0 zWd6&>^B86Ng~>nwQND^93qFA9cLJteGua|PB8S0$8PKIk+Li4)|0hawNrzjMim~&C z8IPD(G~yd-1zR6*aKJxTbu_rGP#Q+&wu-tCTQ4<*!?9%%4Djj9snfcVCz9)+rhZ+r z=$uPV@p5D23!Z_0mMHmITtsQG)`u96B47U~{LUPrMv$Jbqc)PxgS!v96AG8IU?~gS zLo`U^amlSV14qPLovpf?nP-53xRA-xX7Zho=#V9WkLXmI>uZ2sRweM~=F!=GGFs=o zoNb%hvSZ$J^aY7!s^;}@8q4dCfofhId0s-{{j?NxisR*bvIqnZPlRcmf{D!P$u?9{ zAFbEPiyk2K&F|N3Ip%RErj)r8JZo!Sc|HTSz;cq8ewLR9BwUl z%U=H6xcFAL90)1S}Wf{lK)qqchFgp(mgZ)^G}fCBTh8WWl(qjO*DPx=JBc18{8Mc@Vb7BRBQXbH3zh| z6D{+4Tctx5*Y|o*w+d`6a5~tzJI$0)d2s>Z;}GudYdg`L-V}4zwmU{QIYwA!-W^Sl zVz@tf-nAUH9`*-nz1+ikiw;%?djD~MW7L|vF8FB?MFrEzVoXPh`aSA?Zt7a`R4CPu zlf8^I3B%W%V3qdZ*te04oFg>T>ReF*W?@8WTgk;-*b7Ck z)5GVqMxfkp5v3ec`4I^wD9@I0K*Mnmer z?G5(Vf&Ig%PZ{JHdf3yjG6@IRlrbAe?721Vbmtsq_X)+EAV$Pkd~@aeduY z%=))qdGF||DeqMQ<(+gjY|b>HtmUYd+yiB`!kT^twUVeTpSZzx5OezvFrH2vqIL-Z zF!!ne6HY=^fH~tDAHbZ*?lnuKECl$k53SBCXCA2ySRY`&h%18@ zhyzrJY4NTQ)hcRNh~yt$#g}bRSsJet&)piutFEh67l>Yfxf6Zsw?HIwv7qo)GyD4h zW)8bo0OnS#j&DZ*Ef5J{?g|8$nmYSo#wuT(u|fpGtQ??OBGQ`JFS^THWo3Z3`~r;i@*fGpHcxZ5wCt+aZc}yD@g`aeB%IpojYiIlzW_lZ0`4R%$Wu2 z7NJZ&ncPj~@|SM_Gw!CJPv~b0{XE{B_Vdc=_7S@E`_}+}kJB}Rzms3JQ2br~j`R0S zYQO;gPU6q3KNx>k*N`rl%pykkA8<>BzpJmV8sTMvkK(PD3C^SkAAh%S{tj#($lsqr z!~p*OUMI%iX+2m!f6qobmA@+s3vcc|{+@>GSu##NU5kt?+lMO8u2+tMK=bH6Z>TTwYs8 zO?gMl{^e~de}9Vjy9H(S@^|05O%Whm{SNs1`ItvS3J^l^_l2oG{yvZ0YxsLU0{r?_?a)kH5c< z0OIe@U+v@X^Vz+Izt2KIz5HEMXFrDRtFyx1HQb#9fPRrrDnQT(0IfeU_IiWL*;&8W z%h{jnrRD4vIL?gs5z6_fIe@^POTe{%cZcHI*M1b5YhU~dcyo99=|Vpp=;y0Q;@Yj~ z_EWm`TYoe{{?6oidq|!K&dcO^edJ#c_%Ym!;hf>-!7eSj4D!5BEDGv;c~}@asM>UR z9U%26yf;ak6{#Kqz5&0369S>ofx%%r0x^3pM5#x%_b=!y+Ug(zY>hafWP3eGsj(q> zd@CfbPx|ug8yK3lAA^VH59pC149%}_WwJd&BdBRq_?5n)dAK*-Ylh}`2nZUQk+roR zvRl{)S#`NqR(FFgfE+0K@7H#`$f$NB5VEWq} zrmwLf0udAd{W{G?5NS?gd2VlDBj|3V<{Lr5vf^J}0abnWT`*PEC{(pyrK;TuRgFyc zQI*K;&AuHq1P;7AdMSfBIB>ys4+jU{ zSFfcJIEd%qU@_VDk=AXOZPhV083spxgJ6l>%)%gG6aT}ALStzl;;CZ^lD0@o#2hjR zEtFo@z;K#^4C)(B&%cP_H2dq|;Y7l1+SvOVS2p>7&PgdM>N4MOI&vx9E5oTATU#;$ zf;RSIWSac*k^Uc;|Lfh~o423FQ&->o{{xMuM(*$FSjCn3KZ!MhZ-4I_1e_iFdv8?} zj;|^w}8Enf- zkFKA=zO;lxV)9hES1S@w(8=2lW-nQOh&f%vCJ)@86qTdTLyAN!hV{a1CqCibEGSHP z5|Jt2czL6q%aaN@$?#XSWe~3}-t7g>FSLQ)E0EBmZL0AE1LjuRkf6F)2YTyr0PvUUB9+&y2CJtL6o8hiH0=17_-Ov}5Yy#Ta+hsvXz!9N|IQf76IB_Dt{!T56yX!skiOubx|;51U6 zO+N+nGo5~>;766mG#+mS2xD%q_7ldG_vd))B`@Cc3S(0HY4BEIAl}-e;;ktdMhtJ= zcDi`$#*^T!o=;;yw);GIPGfiri{h`*!fZgQcCd;`+K?lsGosR#&KzWjUNKZv(f zb;uxjOSj!L9)0qb178NOU+UGTD(UVUjfL!9vwq1zz}c~W>A#E3Z`U>sZ(R$TtvUCk zAnV>R1!Qfm2V^B7LW3Y{%Sk}ibN>cG7VQis$a>e)k==X*SrIw+Zy9WA#?>e^=H98u=dr&JKEf>r+OL?*K?Ngtyj4sCer&_{mm57Re9l z2U!mh?ol-|v>@wFPbBT@P6MC_0kB@ZN(ES%D!>|ka)8yIKGZ0H<%SlXf~rWv{nSy_ z>quQ6s`}RgjG5~`;bTUNs=h;Wk!15rm5G0f8$wmvy707+GDLI*lb67N-CkB3&BX=#{P;37v^X~MGKy>WO_F4qQCBp!ZE_g@<#6Y{&Cc=|jB^ z!}n{@rAW=3gTfrebnB@oH~~lAI7)E^iR`$p(Y*n>dGQRO zjxFE3IomevUY+poGTgF%qO{ImV=o?glEz*JNdSc&6P61-roM*5j)r|WYLo(DVPQfo zQMjG_?LlX+H#GKA6^#xk1X>ckTfJ;IZ3o{?BbM-CM;}Xg7x!r?d-+V-B26lX-guX1 zDG+Mn?}lM_7W$6;g>!H+2`;{!T|W4f5S|&0xvViFHGce~BR}zi-CsKKQf`8`xQNR9 zR9&9GIuk$s(SahP=jR8Ucd=BKp&`8MJ?;L-7N$$y4m*tnM@c7AD4vXaQ$ZbnNXA2& zB%70dGVk7@5VTwZb5%`+xA;yvZ=O`ZyOsmVDZ%C)TuCVOC?kspTV zT&nq)`*J#JT0Iz=mLDPwE7vZBnWVM}j#%`TChi)9*YrREtkO}7?FaPJ9NHqH@Ac7s zuMd5X-q81YhUcu-}g{P@MKdQoam z{w~>>!)Vff9|3P41AsW^|U4!aI6OlCKtIW7BM1*uap4C?qO68G!S*e<42=0G>t*Q=(e-^4qET$C zWKKrD*5p`HnwHjzf7FPsqd2|{(Iff!+$I{13btpE0S-B@!7O3TjD#j(Z`_T{jApvy zP?R=`bkv#-UH7KD_%!KbVq>ZDS8bZ%%e!z01RrF@!w1{w!Msw?W(mEsO%8J=#Gb4y zC`PoNf}!DTz9CwK?`Ci1YSPe2rV4YWKFmM-GK5<^l{MsTk%YE|bl?GvgUS}-4i$I( z5H&;^*(Y|0l-mcw)PuR%`PlEu>nxNG3eWBnJ>^{7;8@C_$SKW4TSark$lFKJt`(ib z@U$`as{Cn)e=(iO$nFz1<$T;AzA17_TL@soAbUmsoAlX^LC_sXdYg+<<>CDJN7TYY zq_Nk=ib;?ym6OW+&u>A)$QhY3#9_WR*5p|ive(jJc?lgi%ZSRsB4n~Iw>>+@o|dv9 zOHLiIxejGVV&iabkNE?Y`i_S+A^3i(ohfCQ}>BAN}_pF57@CrYc{H|V2c(GqX zni1tfp728@Aq$H~!p)e|W?d%e4&$$RPeFGp{+8nJy2}NoL)B<}blzvDi;ot@`tZ>_ z+y~*K=@h8NN54{y89sV^)7giQx~)Hbd~{(X@X_vd|JC@YBb2^F;G@Sb3Wbk0Z)gHO zT61woe3Xiu8^lNJ`kfhkwCTcNd{m0CQ26M1gr6=xy2qAS?(UnBFFx9m?T3$kO%KFJU$**h!bfXxeCvPsNQ;j?e(8+iqwYA# z1boCy{RQKrktL1AM?ZSffqkqAS+a3w5I$P?2E#`?jT(H^XCcQ&^SlXT{1P%OG>#`+ zs3c@zIwT}~^ukqwuHDsw?h>3+nu)(p@i!6ABtYWlTN~6bPm^lRWFqT;{7gBGk>~iT zW;Q!iZrCjpJ^_#hX(EQaP};&|*qS$0C>@GL%$B?daN^L&;OaJc&Jarc5lbZvmqjS5 z8?h9r6O*=!1xIzUkc@S}dCZHglBteX5KdE_XshcwWs(JJm8TxTc@4*1GX84uSEpv= zgxZ|r30{&txiEUQ7EaZSqG69vGy#a$cgzY4d$fGq%`+ejH?PJ?*!s2Y+~3N>K0~u_ zZZv+}yYY1K?I?_;Hl$?8A@yS2EZ~Vl>FtAX5{HOBDGU zdl=FP`P%xU=&L7rMn5q58Ymmn4HK?S@E5L?p?m#=Ycd7+3DkXoYJX72#Su z)<#0&PDQR(jaZO_6~g#RDoKpEOs#Ha4=(+}8fZo*MHvV90XB_x$+?|Xbhyt`>Hb)e zp1r+>p+nR_uw4o{i8sAqYlla#^o*p_@?w}`p!0FHpj)0T3+{xR6?C{0Z~Uca>kvZH zv(AH0h7Q}V@CnZ%S7>Etx}3{2pL*v!1|2A5AXexfg4njoPa{wZ4#|WQh0j8GO<#PU z#4morv$lOSpX=ijowe@XJ6G03g z*6a_GZ7Bk?pr-eV%RmxubIF$4qRH$F?3=#kKaYKbTBK%r&_@&jTH9%w2A`%CpW!1G z|Br0y=-0<|ychQ65NMLvN7^I0+VWn3TH7O<4;=A{)7l?Z5&ohE3OWhTd}osX zHX1)Y<3hnsYk#uK@rhvI-2Pr0+y~*OW5*Dv#ZPOf!5DsuTYmQ8r^WA{K7J}X0J_TL z8U0t`r{3p=!cX@vYXW|{t!+sBvYq_$gq2 zGJW0|!%r`~?32F*;U~vEnCB+^Clr2KIlZy?X}4R2L9eV0!cP%TGW^uFisTS@q9LrqmU1$5UXO%}hV41$TAYz3qGK>(_dd}v1r6aJUFl>de;wg(UJw?Jyas`l^}*}oLEj~>f*m@ge8`*RPp`p&Vp=KK z)+OJhDgz=z+VrfT>u%qiLi1Ed$*Wyf!C{ha%+xX8l*hm#{vBq5Ea46UtC* z`NOy1*cQrV@rbj)FAHd7?mKFUcHBQ^-7ksD2hwR!C!G1wTL zE!&CVw3K2*3g*dNSI%2|&wPW#lws1FP9*wkwC%H!9{%a7VvB?naj_;XKs z(ngEx2y8}f$i3JkZKHas_RP& zTAHu~)B#WCxvhw4F}1yeuhE zSDv-mj<`{{gKE9)XvE}Z(kD0$Z$epk*X9bWKscao%R->r4JNu% zMYHq6xisf6nu}DHweMoWAkyLHfXPIY-$i1Q_i&i4n}EGxUk&W1C?mez1Qkwgp7rc3-Z25wQVZBZDdIYwmL}_^i?vEZI%` z^h!pi+96&RG3yqP^xX^D*0zs3FMq(xo%uNu!bt8f!KP1quCnQ+ANaHBwi090>G3L? zejm#y_;=fL6Lc-{H+rm~i^pFJ{Pn@#1NbApqwt$iqsQPB&nRZM-Z_2+#!4BrU}f4n z3M22J9!(Jv4`Gmqcff@G=Wq&(Si;;~us`(}#@xH`fN^5K71uPV8YZ@{%u!A4aFh0Ip}Dgb;CE_FH5 z=BB0mEJ`yT5Xn8o>#Ud~Fo0%po79hR*EQTGH4saj*e6veoPlT-&w3zhz12`N$<1eu zPL$XgSB!41>CM2-vb-r)WbM^w7NrQ9tZ0qdvteg2SDQ#}HV=(N*%y>YT8-;U84@3*gMopnJ zC~d>_(Cil+>0^-g03|b2P3f)XXCF&;Qq#u(B8kpXSpB3|%2gL)N=zT)aUl(l|L|`5 zE-F%CsC~G%P&z!^aA4-8*=ECm+>5duS6ij6q+{DO;l^Ir*G02RRTjyp z&!5^+mp4AUq|b!TGhkKL80*Gw6_$GRBDcn3sLCB;nAmxGnz7K6Yh~3)TY)SrI7nbI zjET+d1n8bt3ib7HDQ%5ofZk#otZzvlaG!5=rj=4n;*T6>pLDlGCV4SbPGe~pqcLGl zE(RFoeI+ZpH`{ihvURsqv;4S@XK9h9>hou!3Q1O4wmV0m_0e;~;L`{lFG|<0WW+T( zyRVL-<$g{jV_~FObS;9R($(3tTp2LKcF_dOo$|;XpQL>ltMl1}G7u;*SB6PQ%&EoC zL)BW_5x3lob@)HS|91YJ{IAE`r^x>%ot*zo|LgeQr)Qe~jUoQ`L_PfPw^siAZ$?B@ z_}^WBA^(G!>{H=?@u$cCaG2(F_#aQ+NdEUkgZ%H`{~Z7O?acGPLnr5da8cyP|85J- z{}AlY|8{8k-~6WVKgf;rB+rBuLL9x~BBsx2xf=%a%?WmJP+Ag;Qei?q?%DY+x$<|C zZvD$(2K+wtLDNW7)E~p;{c%5T$HDo0f=^s{4l%mOJ*_b54Vzb-aqewsVrHU< z<{WwHJnAXLB*6-KmQf@QHC?uRpHsD3tWXevdw~-+zqlAs(fB) ze~r5uk|&!0gf1@UHycb#(qepwUg&qfru37DdAurO-;36@B3l^6KFH9}AWL z{_Bu`RZ0E%8%NO6f&A?-@iljLB}L769_tWAd~K0xEF_u1is1;!ShC2|dKoo0gnmYO zPl$ebI8Ng(pD}xUU)mWElG|cH@=x_TF>{7KiBB* z_YM91_to!joT2%Cm%#5+e?N-4m{zRO^tUmfzbOXqZ(sbG-uM@|Oe^vcBRj2ymPlA4 zg$inVXGHP!nmS$^q?dD$B8XnvWS~Fm=G5Px-tpRC{s){cR2EY@+A2iNe;6J zmGw!q;ozCZCN@0=FI0MsOSYMhXD*1bO-s}Xg`co!aO+WrwNX)7UMJ^Z4=id;!BTr@ zqP#fn7(EGd$iXMp111SF;}MA#>5)uCw@8mM_hs0savg;q-yOM~m^`pg$K2K;PUvE2 zi-xt6esxE{-b%Xk$ZlvaBWX2Vk~WCT)pNG|h%5vP>JeEuG!|yh!zYJ2BlAu6=`OrO zX%5Xi%6ORENx9+711m3D;W>t(ohCTF{h*P}uDlf_juFDzgu4)dGqSx%Wc&my2xBHy zUiPy8>c8DXZ1q1p7VU=!neqo%m6ga34EEYVQ)P^P?XS3|Q%0i{Rr!p!{hy>Zgr`$w z%PCRaS{M)BCQ1dnaj{AT)woy;(0QJY=xjgJD%q64+jLe5gV`6#giZ-JbT z(E|5B%2cKfvY-q-a|>N1S52Zp&hn}ArBhmNcskNug>>)(x{}gi1?_g=8+n>wl(kaEP3s}NG`APiv?DNU+`I^X5>)+ z=a&NBN2dF~H!II(+E+3|zS04l8ymGWTWMrP3fpJ9mL?LP(yQHyR+O_5jW*~JMkg1sSl@?; zb>9ZWis!L(6ib5qrsM=2>4)^qB7H2+$5XoVaXOQoE)CJA_i3JcsYSBXT9Pbs;ON#K zfG;>oL^A14NIl5vrbs`T!k7&ZfxwYk3fp+gN;eFN&BYOMyvLdLFpI;Y$6qY|Iv^g5 zyHLYrS!@IJ@$NQ6LZU^2hu@8|Q-1=-TF{{x^6dkT@@YGJpw8>~A|B|BR`K-l4s?quQV62NSccm_DCvbn&E^nmw32zBD=(7 zI3~<}ix;v|TgdVsb-KekxUDF{OQoIASeKA{v`a0{g;XN=oY#v<=ZeeU_z(MciTKBl zB5;W77uYs9h-&-gI1xF*HbSIrOEU))2awb-A~v@(#($zCoVWm57owbj`e;w3w7ceZ z2tZgP)5c%k!Q&o;qVzRG5Dx$D*psQEV&htdYt2O@kYpBH7BJS1j+g-MDX*Fz>6MSG zVXq?0BBlFpvX2%);{A(N-l7f@MFL{2z}v2PtMC?OcinWeX)H;PRrZhl)GxR<%YvUW zh?N5cXAtPOIBx1-apZt$MY$gL&H^GuVP3+CfRiz63WWo}h)JV{Y9-&-9lPhG-9uZH z%jPk`ECe)9bZ!r^>H|@8>a02pfI_z22j7_Jr_~9IkWjIM4XGP8B(ewf>1WJ?{1r+H zkFwYDdej8tLU|gqk#_H~1YvWctxi9wFVq&&*o+|YI7Cm%iL{O(G#7;84XBD7J+dz= z*Wo`j2>GmVE8KM8pUZUn~#{%w9_|lS zl`PSAqU)5d-W`eBG|_`j7ul{xSU>}>rL_@C3y*9 z=%Pmx7|CEpJ2V=n{~&`SDuWCz8J1gNwt`u11)TW|dEEfcZgEPfpg#G#XW8twAYl>v z&ZEq3g?#NKHpfkkp*cW z^E^ke?*>7mV#DGy9{O|tbdQ?dmSqV!LKohsf?&bjHii@ zope0)*N!J=*O23BP)9zVuK8U`d+NeCrdc$MkG9B&@6S{T<@q_f=DLmbK;EzKrwI= zXqI;@NQkH8Bz54Ms{}+zPlTgFIe#{k#W1UMKoHmCxE~?pwHgD3QQe&Lm~zZU zH2gS(HYFBhKIzIK&bE1crmhH>p(jJPumbBhrduc!zl8=Q8%eiW`|7YwdnY}jPXWa? zS)>xahR^3~c(RO-HGEm_r$y_Y^4 z+vT}}$!YZ9pkr=3dd!P9*^Ya1o8$L{Q1k{;(P8F<0k-MAl3NHxFmV72Q|4ZY`KboH z#*^7@1a}*p2)#GgQN1YTQ}z~^)=IQr2f+j>cKCuYbs{*5f_;&Pz#JGtv7P9R%!17J z+n|0$Ie+SltmKRjc_XtRfF~MN_UoGYXRgF=&g;(F++>>`og9-l+9HjNPR#GyH_vLe z58!nm_XoVVN(oHbDyXGmFAYzNKY(YXI$|QGOAIaOENplf` zE{&_}2de$*A;x(Zu%UsG2wWb#UqYRs^hH2iS+?EVzv(q zAGSL9(qPrw=vHDJuc0UuNGOv(;E?P%oW*09nLDZ;EMy?2k!8A-spj75N=Z(U?gM<(MS$7}54 zlve)k7tB-ehx9p2nLz52@S#P> zCk)tNDXWf!#O~BR1zC`=p_j(f#o)?4Cp9*&1%}F0Jmej6gAlMPc$THc@VEk}u#)`e=8QoOARz zz#=b}2p#$>V51K*_i|pG5qhioPTIuQfi2|&e}YY8`8O4*zk{uL`l3;mASX`Q!SCm; zjnvUd&1;EsjTNYCZi49UNFz9}SxOms@D|-TzwB9$SJ*nB4HlX}u)#8rF;k41csx^P z8S)Fq!NL`q<=JN;do${rK&Jl^AtIz9mS*@pFVAfFCU3%WjC4=|9F*g40&Cp@7dZ%r zH2uy*)E2?xD|CHHqBY)ZpBk2Ja{Y=y!=E7YU^f#YOfJj`$^*t53(bn+1B^dJGySTS zE!g));(KsAuKAw)$Hm^S8Pxon^0o2!+HtiE<1vo;XJfQw;IHkO&0K$~x16h>&S(g4 z@23ih*w-QfNg`TRXfq_10$8T>VM2p|9IVU83 z`=iBa;3*pbSKKyp~O=k~&`|^gy;O_qG3a{Pt{B2>jNfCz!=S zNL|<#1H*5hp0B}gQ@U&L+e&(KTKKKR@E71W12XlQHB|B23~;ZLb$4GQSIU|f#N=8~q zrP2-*mXw)zk314_o5646u_D|=yLse*5etzm@@!aos+gS_MJOAfyo6A6_^udTiPgER z4vDa+B-J8Mdk-f87Gd${F#ysZ>5wW+n7trEr&}=r3oQAD{=^@#>q`Qs9<+Lx04R>% zG-n!IEMN_>lD3G+Jp1LH^tkSZWZoT(ACvS|#lU7^sMG{Rfb1-{ne9keUbF0GLnmb0 zhE52F^*Rxn(898Tdi&sHT$}DTqL1+R(t$0ke56;4+ zkA3iM2B3;9fPMMT9&=oj{4*7HhVEi#gS&5=qM)j zBB6BPgltFgll*oPZlC72xww6n-%iHubNqHHZWr;}2XXrXznzZTm-y|&xP67)+VXM1 z(`)p!%tj4tFD3~A9!OcnUQDtpQL-(di=%ioE|P5#ejUY(5NwpCqj)oZk%WX0_Tt_A z;a&FdIew9TDP0`JU(m%lzl>ex%DBjFc9WpmR)>3gF|DidaD+W{qt%XNJ4TTm#W3QF zPwVmPC{E_lI^be2Hu4A9I>UnrzeodPew4;c7w7y$c9}~{F!_aD>~mSTM~mYZpSz7c zIPi<4?ZtKcfpWALAHgs3r3{hpG5(5@+KWj*jzl%=p$#4o zk1|5Mw)EtjPdSOsxg^h!uhayyHQZlFs~Yy+*YEauV^cvAU#(b$pm}e zhDZ736|~(2=Ap@ec_I(Ypi?~=j6()1rlLLN2U9ie0k;TG)S@cRA&{=kp*yNn4DbL< z|InEu*pp*lMM0P-Ue!ctZl$uCpd!TtCz)~tK45Z=Lgx)jl&|V@)FVLyMp!ly=Wz}D zAC52Fk=xm4>GcXC0cYHQ%m<_0E72z!u5k>4QJdEw3?{427G~d0`Mmyil`y}*yclT8qf;jnnx8;BH-PtqWb=&^8&Uf!^JLUOq3Qzjq zINz<_ddl-%0h0a$^WD?EG{f09-`U#MKi}P@O>*-2Zu8$W-+l1jY0h`K$bipxk6fW? zk9y|24o#o$&cz43^W76EjhgR%cpg*KzizF6zB@q?EEK_izH7Y*;a5<&Z@#-K9${S& z*3|jV>=5G}8Cb)KeyY6%KM`n$Ee~=E2G4|3moo+5YGzmdb9vyM(5_ASIW6TdHYKrv zvYNRb!XfKQVfK}PC@F`rX3GGa0?E_%)mW}Uh`UU>gS#l;0lJH)CDcf$WJs$M2;jqn z5gljN1Dn8$O9pIskA%`7y)jGUV8}x{W|*EZb|#cyBb2DLUWllr&%t!}*OUM;vSvbb zp~l!osUzy}`a1+-2b+C@tutz|vdajFDM9W0A)FI>lWpg)UUkk*#=1~$b;+No&^A$G zk2vq2ics!sD+0#{gxP}uKt-t~c6P!%8HrLEHI67;f)=`=QWz6;Gk^*Xjn`SFoJ7jk z;+(_s{h$ZS7gnt4k(_u1es(!n}qxK;iURr!-*MfrHZ7= zr;^rguaoMa@}Wbcy00-yzu++YPDI(EIn=&QNZf={Zlr8rZmQChRKXM0PK!!8jC|2Q zw3bRU{4t|bTG9zbQQn)Co~wBo*{4Z=Pyx2mk$IRA+C&fQ`MLQUT$Hzr-MkDKgjY)C zO*|fnVcNY;c!ZX8LJ`dGqQ(KV!zhN)4x=J3?U?+jW~iB{faoPlrI$EgA5*`ZBV?im zg;+9$xqJENlzceB)FR6M0D>_~vXw}Ps1!mA7E!9Lp~W&0jdOGumPV{k_g_qX`fs`i zz3>iI44G94vwNVr=uoJY1``Tvrhwe$pES2>_IV|@0P)2|hXHj$g-{zq-NS8? z>fn?N<3kb0xW7Y1m0Ch2$V`euFdDE4r|8=x)k4dey?%@u0c}~BK!XVr=l0EE5SwUnaur-yrk_>Pl@~={K_xW&m#Qzfpt6p zub&$KvSt1M$iLDrIz9fiaB*n<_4|dV$G_4j-~aJ1b=Es8_*b`tGs(X`x!`2ERTC3X zx#9m6{#7dw|N0TX@^|!8jh~SG%h(|#{)(q5qSCm8@E4b^!=X=_ z1<$2IQ6xpcIk;6%MzVuMzo7^7XGY*a4vx_v>F`*&Y$axNTWYjWL{^?iqNCO3gX#)R z`S$BD_Y4ZwKZNE{P<)b^GJVAm@gbG+k8if$4SmHyiCmS4DLpD0gLgw=C@}7AP*kM2 zL0W`RDjMd05a;8z0NP7OzU6)xI2BD!_^3&n64Z@c*L624uWEI<2rr0zXHJW@7X^fXLU z00cpsZ+b#1cB@jtR&kxUvG8q6*e3yj3DH)fHf&8LP%@*u;WL0FSOa9OqiE=TBA4s< z4sT|Kj_tW-8c9P>QP86Yrl6Ne=gDZ;nC(7Ay-YkXMZHXP5E~<6lLwr4d{mFf_h#fd#YgYHTacqc0wbkL;Z8gx*l;~I2OrDGa&*boa; zpG%gzyg}Qq0R!mKHW)xT8Oru+H3&r>6{gv7t&8LjG*n~*y-^5{)aQDU`rIPC@mHS< zX|DD>IqrPya{^rwEA>N{Zu$JXY4ele$ENb%!J|X)-(Cn*`R}08zm5MIa8{5Ga)#i) z#t;5a^51j;6kYjr9IuLg1bt^C*Ss-OREzM7;}XDk1`{Hn(C-^h=f z%715V@$uiu#6}p;?OfvHzwzM3_3~fFewRb3oT)@71n}U;w}s-t*Zz5oX-WUz;=xZb zL(~C0Sl<$Z=+_}y9=!ceI`j1?JANSN;=m+5Fdke=Z%&y9&+AYx4}RKrkWvB0bm9kw z1alK&6?^ayMb%-mkpY$AEu%<0=$ylzuD}x=W=&pBSRlLEY|>~TV?3#_5Tn|^hgyhf zx@iR&sswUi#(1EKeu2i$ifOv&_)4t97XCxd$a85QNQ)bUN_u% zX$)$Z4ulS?gbbqp3ie2*4>~yc6!8_FP5Cnjqkl@ToawQ0=Xcl~5hE12h?&9!rj?(# z8R~4CDh)`s)!~>?8hbS)F@IWwF7IFY(;{_w3YyCZ~UrbxRvp&PDIxOT@i8rOJ! zcny#Z2mF0y#5szXWcKW|(>V&Y=n<8q4n#++4Y@h6+=wfOx5i6{gmq>IuUu{%KK9tQY*l zDokwx@4(no6^r%?)TeQ*8g zTa7LPX8@D2I^JYwz)XBON>&(XK}W&Mab@e#GTacy$IPgci(s@@#Y43SpqRvE&Gt9h z5)ea$XJNMA%TJrpM4>E57vVN&K}zq{1?dtNA>@LT(#lhob3k-NOgakNsW@#`={;?> z>T&`^tJ%ava}p&`7o_Z-FGy*IpatohtUjW1H7hnV$rH37P02PlX+^pTdP102W-5o! z1{=Y5KP7mQD0jI`0Yt+^?+K*P=g$t6b3jA|6%BQC{_G(#f6ULHjbZ1{*gKd*B|}6l z<%#PF5DjMM&+dGI10ti`qF4n)Mp?iSK>(t4sQ0)85o^zZVQct;bb5jrf%ozSDGb(v zKGg+jhMZanFf^SsCtX6N5*ix5919dv?`3Gm(OmZFtXT9 zG`|6fWA*7fRt9E+*GBt{$Qkb@%$hR>adcopDcTlNSaiXS!ee zE@#QxE6KS&7?S&>lw!#9_#yC+G`tab=s_(Wx?F>Y;$Hh3@sPf-emvCjm9rENZThdk zL&tyqA0EQgU19nk9s-vl6jLuAI{H`Rp{LFu9?DDqC-Kl-@6?Zn-nj5=#zU&v#@L==a{I`c<7-)C&xpO2?@pP6gPZAN@&n)fjcA0V1dWl-u!TL7&iISSSa^_h z2Gb{#%mhmrPEjyJ0++@JW(dUm6M`8kUns%M-AqQJ6+|fltsudSBG3vFvQan$S|Oz~ zLHtmLMLT(G3O1SE1l==1B-!GCw57cwh%Ce-2_o|z&Y#xIlQ%VgT610ABu?30Q7Cj9 z0;Nez6sjd+z@%`3Nlc38*Uu~%q!O@xwNlwqsBE#UY@PBZTO>2e1)0*lOs15L1$Q8c zsWK%kiK)V)01{J!L1F=)-hK$5Ufv6zR;5k1o&jl7d-FeuuA044Ke|fqd^V%2cRDo| zT@}6CRCE>bz7JjfF;_)b3*qXEt3Md!#n=Zp1!>bpsP_g-o7R2RIAjIF4q>1O(xWJi zBnhO?q)#~C#Bb=R0}E*e+`?{1hJD7RO+8_NI%vo|SBoK2)KiPB?yA-xtLEQokX1Up zIb~#Z@$o+X(x&^v8b(&_M2@Tm>j{{t9n6HF%uag)A3VAyoKNQkVJ zci}yJ=i14&Hsb9%yd(c>IvU9$uS8^N*Y+R%0_dUqw?f>Nhk07@mR6!|D6tWtD2E_W#M$<}Ky! zZ{>o1=yB?^Q)=&BvVZ$d33&bk&-J$V5WEa(@AU}eP58zDbuOu=y&w6)*WUNzzW(;E zUgvA?btT^R?(-R~ftudlJ!(U=cl(_-z-$H%?i@j>c*%s-;PKePf@ zJ`wgcD@f%bKt}S`*ZAauZp4girw%^epUhvL>R=n5CY0er9=3Nwv2Z}LcVV*# znMg}=7j!*ZeT4gz9q>MQBw})N zv$PSO>fb<+S=wWIj~vsl6`ft~&jLS!Gk0hI1xXW`e+8d&`W?C4IemP#Yky=moYOCrR=rJ{uw{DD;oPw+ z^68ZlVwFZG!mk`T1&3cbatcm<SGFww>U~96B39 zPVGyRh-?Em)8Vf`wqKsFbxF4f#V4hei^0jrB^{~C2#HI%Iq`yZWq2eHnj9xp%Gl1*suFQy5N0y>`PwVi0P|kle-Pju02@K}_n}Ee35MgYoS#So z0OqT72?G4yrNO=s(f!-!C5MKN(eT3k@&MDe9yDE{wij zMMVmrZ%p*R4EHHJ$nS~j?;QU1i1cAti|x52mBAB2q_h$GzBye*3{*=*l~5XHsLX3c z6RzB9UL;uw9PL@_UT-WsoI9AhAXT0{7toRpEm0&M^bHj2MW@6wSKNyULM-?bD2gmQ z#d6C|sdAs$$5nTu5ap zNo2~=$5fI4WFXF3({^bjBa(XgFSO2da_g5v@ZZb61R=NWTo3=PkDs&ret9WGeqVlp z{MMa!lKhzKS;8K0yiA@Z#)9^t!kz)ub*2+8x9ffae&pYuMGV5Rst^~I7Q9}RrqEYz zVPAnxJG2Lpo;#Iw|Dv5g{Pg3EG#kJIM-Ldm2ZpQ27n_4(gwiQk4HF)qbbKw z#{W*UFvj`|qn3ii6UNjfOVCm%$CKkG>T<_xOEw!J{v{i6nuRJ+3gy0A`4qo%$JHLarPR%fwa4P0X7T8u9bYGI9Vc?<4YYf9}MoA-y+ z8Mo#3i5OX1n4daqGmu^Ucwv@=I}5z3h!JbkokLEfJ6m37HEf#_l@6vki5$7ws;gE0 zddMU^9I2;Yt6rZiWR>A>L$)xnn!;vA4xu+@eJn!uvk>c$SRT1UP-OFvcullqsG!D! zO;1`V8aC#@_iQ0brPB=%K8nPF6i4I`_^`p7Nxz5@JK!hhL|2SsX09@OfTQ<0X(=0E zvjaVtvZKNl+gh)KUA;}ja4=2iJSDM=qu@PEuEfSw1Fa~1i_^lMl4`^usu$Y4PYi)` z3G`LeGq<5*;eU^2$Z&YYF0B&pcF};(_IR5&oA6_VP`U-3Dc-%7zg?>~J|k$n-6@oA z^rg*qv@#-VUnGK{pp_&9A}2bulOZI6XZa8%;xbwwzLyEUXS}ss{wK!={tTBzT z#_W=&jmI7V%rQyB9IZ~LA2qKPE6Y`CmdY_4an?JLV!$Kf;MCq>d4B+v9KUrU(BhW# zBAoDi58Y_7)q$XA)1A}gu@KfBePXz??EukGO9Z_==RS*6#tAwfv2;Y7kqE?Rs-^xQ1l5jl)pGJ)EEO^+yp zqg_tUSs^zt5bW{*XnmEtzL3gwRde4+M6{txvw0YX!cHfi*Lr5C>%xbfUtqu0goWq zzXO^$_XQ0Ab?yT?usVwZ1^^6KFjlToKIT7oK1*ZV9PQ88IN7GXia>u-+Fhnn`(PKWWp`~V@nds#so zpl8g7R;hi;4i(eD9tjkLg7C}I8-4iYHFi(zRty+et14V0Z}gXB+%j z+k~1v0S4Rn&7Ksok<8>}(Xc6}D@{5Y`p5Ly#@oD`Ce?}&d&Po3Y5L5$P=wpBOc5sQ z#xw9lEuF%!6oIBJ0!i9d zNKKWJc3_PjmqYGP?{CRO9tT-a1|)fyrmEzsgAgUySUz>WbX=kzH~eF)ldnQLIN5`J zAw(?GyB+vOp5`0p@^AE{Z#3uMn8Sirv4SVXSl~Yru!L-c=ZrC}AZZINk070hmpksb z8dV$v_un{nhhwNf*`fm?kijr+-HQ3fBfCd0GM~0;rIfbuWLDPuQ9hXr$`oyE+qv^kIfb#h9?9Nr6)_b&E{SjZo? zGj7HvG}^f4Bwq=Zd@%VBwy09Q;+6ark5HC*2Ec>dW1*bB7Eb5L5n?=QPmAga^pL1LjHicWSU6|8S=$67istgzR+nCc*J@QQ1 zD|DqY>(cM}BNd4#HaRMt@j;}{uv>6`fmde3_d?M|-1y!T@x#z2EIQI%7TqB=6zJ#< z5+|w;?h@&4D&57WOCOtQLtz0sZ!33!7!TVZQ#P1*)1y#YZBvP3OowWt+TS_7KU1a2giq98>Wt0|NXj*6sXjxPiH^61QH6q{wWi!9ed(ORCN)d3Gndkrfc}VYe&U^NEJMVd4 zNLdKQ*<6nS!y3n`qj92DH~b^6v#h~mf^(p)s_`^!%k((L|K$J7_&3t{r~cmKkLX8# z==i^O)bW4z_Za^VjyC>X79P*|Z#nAt_twUr;~%bIh}!^+DtNW14SUGTvA`%UWhkxI zf7D~N79_Vs*f!5Q`eG$g?`3oON@e%cx<#O2534_7*}?k6Tj6@D-tPmX^`lP-opqi+e3{*sf`Q zYU@FGBXm`Q{|fDx4DoJ`r-OrWCoyzFI4<6&bj%u?-zaLYyN z6Y`)8pL4P-y)(>+KUXHnq0cRH2RLMr3!&y*Ls6frUwEGXJDVyPhejdwy@C9+EnPfJ zF?&j!cCRBzx{o4{@O!f~{~_F$*%62NHXvL?HNG&X1A2aP=5(oI0^T41j|tDi%=lqv zY3Y>~{JEyRGql6v>d=V4NRZs2(TPgoF4fgxy)*O$-L`Xe*y1kV=^It{R%RJcmBDwG z8*!v9v-cC*;=2T4GMtK8l7@%e_8qJ-ANNi?xL9NO^!S8bS;(2)fYkWN8j*IE$(_A! zIRSxGJA94Hz6KGQ)_@PHSnZNLi0+HrPRX;O@=D-tw{X!YdY`$@&#I)8IBxWJ>=lAf z;}C-zzF#PCbHaO=WVcRRh?5AE_M28|3-R1KZ4r(lP}*>-v_)_lFf%Jm{fUl-KW;ub zD1voa-o;Xd5&a&xJ0}Onm-eFLaJC38V8)n{+L?mR?Xble+Kw)ECc8S+P#4>xU7U`P zy6Dy3((pRAC2YadER!>PTjdxNdD}d(&QM!b+L2PtJAKPNAfYs4=Toh{Y#v`NrY2b# zA%hiGYrY103h=kpo=B4%_zv>R4CEPyJWS*Xw90cI&%@v9dA!t{(P-zM2tuyc%UDO0 zQ(KWoEJv^Xduh%BMELST=CF~>fg<@P6Rpg^%3Mw_$BwJh<%=8YG=4MQUqIm7(nR~9 zi5Z9#25@kc)Lasn(a$QC2QV(~{$C;jw1GGnR$-w_b_n~L$$Z@o<{MC-X#9&D`XX62 zZG}TfYf1K9SVC0|QWacMH>pn{wo^$(#Al^rAqlqTM&iM#Ts7RS48h7@VLAW#udPRq!$AOuuARwbdmgC?Qs$w(VW}$YPA!o@6$eC zhR?F1YyoP*?yW`6Gx{)9H>p<)qz!n51k{B0H)9JQ@5u~;l63(4;L3f*it6}bQM1TE z^DTQ(3$kJ2*I|n3|&4%Tp03Ad7 z5`7|{lH-at2%^5$bn>YAjm{mXTyOQne`3!&;sS3WfQ#YY*J@N;9Ld_NT4q5nAv6f zfhi$bsYq*Yfkz{4e@$*M@J*Hmhef+u`BiZ^fSR^w@3w1KRlDxit}S%+1imx+s|1_^ z_KBBOP$y{B;T+tNEty%sKH%#$U#d#8;*ZOkWN(}{h;6_&1XU25kU`>Wu+?WkN6%`< z)4&eNh;6_~ttSwI*CSq#p81{+Jdrw2pjPjQwoCTfKbpcYKOFk}$Px2{_I$PZVWT$~ z=iA{jG=6?i5_&)52PDmXW+EQ>45O%Sm|=yuXb@yA<$0|jP!fVLKtNc4M-HKk-e)hG zj*AANR7<%NDdX!vNeIGEPziyPQnYqhsn6&DfYe6I- z?*|q()RRSlIiXPm!hMsz%j)@)5j__3LwREXbPyW7 zg1Hs+j%vj?9?j%hvL4NqVXwmmTX0g-;6E*|sK-n&M-FQke;Xkq(`#QdbgRB(`8LjLpI!ZtM}oe9#-RP5(agxIIPh-v zlh?j`%F|lQscfa^)Sq`nP#y~UkUF3oWssZN2^e5EI}}}?*k>hMJ)UOw)u5Bsy|qTE zyf2cm+6`)8dupUH(2^p}>rQX(3*@%5V$9Y?b_ld#mX$OIXnHkq|4LdVRnT*@+0Y#3 zGiHq(*Z~!)vYrbEo78u%z^C>66RAk_+?8>;udyS^OIq$wGa6nootC?jhQZmSz6dvN z&G)y00J|#`vREr*bsiwx(kcn7kOdSB)+Y7j-GCw^iI;uv34LeAs93zFH(-K=fe5@q zgymZQ01tcOG2D5wpCIHf_z{lEo76XU$E_O=dqhx&CiU%INUvan7KPmYCkzzg`7J@_ z63A)&0IyoWdj%Ik6`ItWTY;i)v;?OBl(Xy-gD(vLEd;P^HUO5r(})BH-z?Z?ug8sg zwI8rp&GJ-j>2?P^q}D&*g3l;eMN*Ib34Am7Tygqtcs;YqiHzJ<6nq3D_vLqh8mO~r zF#HYLWW!8rcW4*ZWrK5egfOWz=O0)In4r$thiNTHb7tVV?Cok)Phg`ZRMG53i*eDg z(PLWG$Mce76qAxrSKLH}D@qGT`?;^8I7@*oJ(6K9WS`dmkR+<@+uoKbP-|D1V%M z-|{uDGMDcMif>W*{uA+y%l9_%Eh^vFh;LlJH;Zpk`TlACEh^uC#fy*1_nX9HIa*Jx zZ4i&Td|!>n1o?in09L6be@rC5S9=WNFkA@_i<9I~_0IfBfcuO1^)<|I70Ih_RgGYg4{|rr?j3@9VDk z)$)A?D%ZAre=dD#CEuS-jP0@I`v<>Eknf-N9$UV*4g;M$hJ2sV?U?fYB#0SDk?%jl z;nZWu_jlp!+b_uX@BaIk@_qAJ$CU3c+Ws5m`wzFrt=%~J{?lzS`Tl{EF;K^r@9%8| z>J^QQ{U1Oj%J+*Q&K)V=-+3d@MVx$pG2q3?_Y9v;OupZbf{$S2%y@Ye`TneLe=qrd z7BBfo`F`GKoMN_^dCSzIn|`%?zvvQ8e*7)+{T5UwUL4ou`|Y3dYU=X+X)}*kzNhxZ z1JvdF`2t`yI0bd;^+(G0k?RuV`tK6iYBBV&9jzvYj@V z1Jho2=jBT^VWaOyBut3S_EJm&+`}ZJNxgyJ=NAQ9(x>Gt`&$vd{5>@FPx#!0KGS@` zJ$!dIsd?f)gYM74efSi7!7f*m+8a;oN-N#IE)sR8dyBa5LHCD5`Mv0VH@`;|4b}wP z02=~Ds-NPO%v2&br@|({MqZvh_VvDWZfXpD%NBe$sU?BCx}yvIR%z}*B9F?jiR$M! z7!1pL+aMYa#4Gp(D3ON3e!r;%drJ9{3?rM=X?P&RU_3xKioEs63(dBJXN7tj z+MFgi6fvmOuYreeql+@k}Gz?964q|4(Anawmo`s zA0rdzykax*(#idGxMGrZ?06PGroo+87;)dqdBt})pdUTE59bwwj6Gl*4LYG*xLGZY z?zgo%zaNU8-*3}@#Zk`hC-}KI-t+r^`*a`7hnwkix7z2+!x1PzS5mN2wpP8U%g+(1 zYBxEB813$dL!5LR)5{i+GYBuMBxeu>*=yj%!UQiCQuz%4!D^jv;$naiehr*L)Vd{C z9UZZj+&Jj4n;b-tTZTx=9O>mfJo`(d;NEj#{e5n9o&$4Iud1OdX;}s z1`oT+;>kWa-gfRAFFW7~?Sdu1fmSt0Lk&Ekug%WDx^}K0oFyTz{VJ=k6D){r!K9Ml z6tgEV#FC;}+SAryx1r>`g3%tZ227o+Qp_3MydGjGmTcDx7s2MT$0z&ZoDDaPY(4D3eXI5G8D1r>VIK9Jn&I$J#^iXupXZ6{2yKq$(OXb9_|5Z zKjHPT)$%*8heP%gUJvbDN34fCzG`DV^!W?cL)zB1*27gV9BnmuZI!U$6gOy*aUqLPL5dejbBIC!(yyWZhZ`UV;(wjKiOJi=Q@r=wDxcG&FQfv z@fq%0Es3>w6~82Ue%6(i1dbzI`1xEY(|c@TW(J_ce-mE&)1;*%aiFT`Lz5w#%HCHm#SJyBBMfyZ15{7G zEVJ_sBfg4^Zq~r92iK`nlWCRhlq%)}QuI5hk1sO|fA7vbn`ls9!qr)c#Wf?iB`NumI{MhYp%rH}B3|d=7nK4y^4E1P^)@OxQt>__?nve(r0Ce(sAHOEvo} z^3^zBqei@=)O|Z>`H8`gI&^vV5iCFD!}#U5nEDFjX!CP?`O)HNMUIq{#PXBX_jhW` zPjjQxzm6}z$wgxMO;k6&PRp+q{b{}4e){4!t+zXS$JX1exNo)IuEDE>^>%A#eZ9H1 z{nyu9rw?N5?ct9S*IS>o|L%J84>Hvt0UIFa_sFn=*wSLcJ}-rc_P^6YCBaCs1{lPfH_akd z%mmg|dk;({>w)z|QO=n8GqJNGjk@ZRRA49=lYr!wW;g*35+oiiu-|_g{Ihz&-LV9( z2)idrUGL}yVU;HggnBG*M0skv$*G2ArIhK?r_iscav@2r*5wAO6>C%<11vAwUE*vQ zf|K7OX_xq~#Q@vT)W20ZH+fMCxL;fZmc2wd1~2Lw!CB z@Rea{%coOKX5FG!y1tBzqj30=yk;qt>v@(1Tj*k6KsHsr_TFGWa${x@Zp;eR>){kq z6s%>YQ%6V1jM47SGh@t}pP_oAqXhE)Y$Q>xfv6EZ!&TCPq0xqY&shi7%;Rt)elp38p24~ zD`-PjE`|0xCtr=@@E}Tpw1G0b=h>9jHfS-n;c!RPa(>0RF_p8!m*MT za>)2|bvJY!_NIoWRd;fTJ1ZPm4o!D944v4~aIyi{$%n4YT#jpL`-V&MarOOc*wfoF zxrR<(yB&Y;d=XM!wH0uj!Fgr4xPw(AQ2{S_ghH>fl-7!eK{0|Zhd)|sF4O$mVNP6} zFefgD3(ESrMah5?T{>%W#ki6v+B746Tube#=pG$*Ammklp5FS+CwQ~GjftuHn|h~gSVrwow?Ba%WLvZq_Ob6encYJnVtFiTB{>fv+~uGNhC{)8 z8-Czc@^kRZ#m|8s7ze1L4q}V1A>Yy&a{x9*;GFW)@U!CAogR95gZYJYQzQrPDyAdI zl{8H-)VF!r5O6%}Ih3v=s7CCgYI#Fg(dhIj<Hh8XZqbTgqIa_{ilN;1?}%TTZ(z|1^mi0`=kmuA z9E09Cl%@Ag!*rg!si&@25b=-m|fmK0s` ztLfc&01>5kNf*XC|0;ic=jRU4s(BQ8*Em6M#_`g-f0t8^KaSr0vlFLx>u?eD?r+OZ znBMh!JZ^F%(7Rdxv-IxTZb#C)v-`*B-91y|$F&$Eo=ES~r?h_a?d@&Qy8%D7rgy8Z zYlGhHe)JdV-Lm7NcO8cQ9`w$CnMUspWgjoS>(}#-rFXBL5=Za8>hZrz?1gzB#qCGZyBBa)=LmXtbp;?fSNHl^AG;(Yg3=&`#h%j2Axks_77l9uQC-tiV067uB@#TL6 z8$`d5pJF%^QU!#X6*oD&0uWNb5OV)4;OnSL)Dm?G?xdw#WSE)fkn{0Qbog0X`cP&W zKBzbEfeqf$I<2_ExY!TWWFhvRSb1B(+Z?^T12_wH^zs~|;$>{*#mp@buHlG>8#6{* z%#zbKXo{{1(mxik9mKfg=&I#CUiQ*sc%PtL-hkG|c@FQWq{Wn7vvJ@5oI~na^e*YT$^nkrsq2?D|F^wk{%>QuisVjtaAlWnaH;Hs z=i5jfbkrv9J$wb2zJzq4!S&`0!(~dBZkk#d9x4Zy4NNll_v*_;Ju}2LT{!JxP+w?> z*K}cjci&-bJ+}1!7&g8OsB3T%Y+}ESheZ zEXeCp=agI@pr$q0j>P%<7H6c!$!cgra$EUEFS`MrUCS2&fQNmcnKrBWW4XVV%gJe< zwDbYNCO4{+uR0lrOKwZPp`X_Pv(Jh$DlRy#RBP-4w3cKI2V@N{ixiZq|3GWO>np_R zs(t^t4_wW|T<;k;V4ZRS4$s0s2_hi|Cq$=fAsJ5TCI@QIgo~CII#M5~X@Sd--qO7D zP($?xg~;|IS`%_Z1;HU3`T7ci01#ljnK80}JT{fr_&SqkSfQd;P?Pbdbh5z1p8x$^ zi~i&pLaVn3S#?czllqVE;zmSEnS8pgqvGC z{_jY&HmX!s3JTTAH}*k*zC5cynaxE(Ej3O|llYEqQcKQ_L<%Z)O6B*U-a0hXT2HV* zJDCWrd7--fR>a&8^)Dz>Yj?t!ifIodOOih=psZu9*;hU*=AI3qrPvpSbRJoeeVfZ%-;*Km0-6AVj8hJYmZ({6% z?m~nTz7gUnDvJH)Ms+o`b>85OygXTfX9FNDYzsm3RYnzJ+_xjCTK+oaC2a*;2S3rG zAJzkGnd-qQ56lmAl=LDJDev&UWaF^`02lcO>8O&nzad6#h7CpY4S~bZj$} z&d1cAy^>I6oPam3PCWx|v)+Y3+WR0-7)ut*bM5EPmy-5V^!W7)K_pf6 z!^BO$ll6>LuLOF__-K# zrVadj)|1D9pT8u!+%|q50~33JpKp8ic<}Sq?!Szm^Clh*Kd;OBW&Awea3p@tUfBkI z{%AVzbExXK;pbpQEBw4Zcoh5`STFGNte-UeT)(are(v)O$IsVZ9K+AGj}U&ADQn!n zU&F6g{uqhG^Xr{SKEO#oP1iaD#wJH)*ndrV)o^6?3+1)@rSiP&6HjoMg?!f)dK&V# z6R+V3USoyM7LQxND!?B?{uWO#e?3=j({nJtQGNOcDzk0#>VpdxcFkj z@FLzGV9>SSa~cf$n+sO_4)y@i_)0MeiCp*}XM80iSVmCcVc?F`ishuF&d(~VE`<y0+;b= zXIjeo45I`KQEs_8>*~Xia5fS{r*h21uU$*3c5Y^=flzy|AY9nW%(7`JaN!%T#rD~0 zExD?k_P?S2nP_0nw3Iof-jC1`PN!w25lq4a`6hfu;bi zyi@u|*uF3v%Kacm>YZf+2atYg_RoZr?l?^c?X2!hXcBRjzQq{4Dxi@~Vt+Drr~S$g zXqR06>Tm=oL?vrRQmBv#(ru)2YA9gWA_n4vq;e`?EYX_LcOIm*1rq6(GHa`Wqz#g5 zJwVo!I3@Qgf)~>=Z7tvE@9DwjtFs!+A=PLk)u^|qQ7?e6hoTddpG){s)kECTx*CCp z1G1N|Mjil!$qkjFebo}HH$!2>RSx{9s_!PYCa@#DY=4S>96yQ1eMWiM+)6^Jin)^O zS9u4`4i!QN;9;B9eWxP?Drg5ZuZWdP&Bs|4C^6swTeG#-0ALzTt~66!jV|DFs*Vet zM!F|#VpCsE{^W3^3}*KrQRz^l!V{_X9a*7f(=ySS6u5V~JgaP(hyYjNC0*cooh~-? zfjX;fCVA0n+#RXuw^|PTEZxz~SvISK*WVeJ^df%;TqLhlz8{?qgM8SqF6VSms`vzN z0xgm>?|s~0Hb3#&t_UliJMaoRq+1`^F3+yzgfehv1}Bl7%P#IOJrrtwfs!Bb?M`C} zedOM=j{KOEOCN747UBTLk_@(Z)>AAY1EGJs5ZWIB!FRi8(-4%=*wwse37X7 z;ZzLi+E;c(5TN1IR#W%_8{AN^mgbY8JW{_-KMuk{0KmKy5%aQCbr}xA=OeVI$^+HJ zN=0V~Y;b6qsPFgY1z_Uh5C{xSl6kV=bSrs_=ab1$Pm42o?~g#a(I92eHtRvkbQDNd zNLrAxb+I62v9BWhp$Ql{7NjipH9qfZEreP8*I-9KRe*CD!0;3CAXT9podt~{;QAy3 z{7LEf7B+aWpc;haJm|r?-qrAhhA^9lGJ|*ECkPI8h4F{=ZJRrfA zDAwh)LQ}T1&;;QM*i=%$0t!Xm=n4iHI1>zHk}G&8%;kn!(!{AC2xaTkAJX7-MCeu% zfT}mYPMgiG3}(7b0(me%7lmM`Vjr$BP9<8W&bSL=^Q{F|!@c-Dhu=#4cHs9jey3h; zHRR$q3co4%&ByOW{Oa-Bj^6?Nx(pZRD1T>uWB;BQzp)edt@w?P@G6ntIP~KG5Wg`W z`W^5a>DUiYPkN~he&b@nZ-9pyIE{9Aj>>S1`x4{l5a3pTyeBdoqj8#o7=(C+y&vT_dYuTr0pBPF zb%o_9{6-Iq@T`-){w{RwQRGjfYp>&CIkKPUEXP|{|Nkt<|5sR!q9tvz9Gx-*%W(#= z9KMtjW;tGMfxTfO%fX}0bk!@pv)FMcI=_7ZFet*Vq9)6_u=bBz_#029Q5sq9$1XKSHCSyE&Oo9=U%vN$o z53|2rKpbi`Q?LkU9uTg9CBOC(_87#G{xT$i$6}f7>A%qlAsS(v`eF~G|Hp6BzBfOA zh{Gx#WgtRKTx#&0w~S7Ns2y)7_Y_?|^8^vRro_H#su#2x(y`=Wod>hDU@&b?q{hB# z%9m01)yrjaKp?goXe0Z%Qi8CMhm?X3%PbGOC5QZ1UOWC;=vcZg_!?S1Y`ABsPb}3A z@j&h%m)t)yzD+XVG&F&~STr+ndj#j_&{;OUIoLH&uci%0FsuOt$*Dtsj?J{tMwXS- z=QcDQX;zS9VR7CPha<>@Dp`Hu7G%Tm2RX3I=x>ezY@*EqaI84!LmR0jgN?fEN?G9z1hPHT86fy=Ce|(g-O%LZSlx3q)W4?Kavir9jb6*0`L;OJ*il z&t0A`m6xp+jdIy*$U#Ugn%U@K<`9E&C2kTtbt@`2 zdnG}mI{o!4y-xqY-U;>-MXtkVahrleEeoWo4kba0tXzYrS&pO<#5F=^ zG{lel^OMD-NFc85;uIf!1)+$YkEYvpGg< zk+mGLB>BLxm)tPDc{cZbXwZ>V6YpU>BjYPr1@k6HL||tPvjd;R;-Gh1hym<=vU3sJldF zOr@gx+I4J!IT^RH!W!a^ao$tQb-)Oiw4TNc@nAeOX8DMhWZIi=H2NHFwiyLX9;%o- zI~51&gY4KsO~VN;gtKz;J6DI*PKIy?`4-UXG#Lhu$nLVQpRzjKA0~3h-#5X(v6D_O zLT`%9bV|rl5=<+E-j`>pnX-dNB;~LM%4ENqMaUO&963Zj_Mw;4)Z`MHOdu{a1aNUP zkygQUtO5tA0}ylG!cTc>$b!}bKjA5Yqa_aEbUFAUH>$`we>-n*LI&(65$P(D z4^UTTxN>i@`chn#HyOi&fyRM)3fM}Y$*aviOg&98eMV#8bId*m2MU<&D~B2d&=dj+ z+d@F}uphn9977GilCC-Q2U8^#BXK9D%1~o;uGE)jmSOE0FkO0h74aZu%w`1Z)MgA$ z<2%{6UVFW7AOcK4|Am8^TM#!&T554trd@PI@#I*NPc>wev+G?Vbi`_D=_xeH)~VkP z5r_dbqPqBGH~RopyGggNJ+8?%G;Xq`iplmTxU&JA-ih-I3HAAfbo%__*?}8Rcz*R( zpP4}OYb=E#6O%)qTF$ZHRn+IPyQQuek0*Hz=IhhECkFXU8#r^~$v6cxUF^dz4p&$~gV?=^HjlHKX zp(I2khR28m4qbx`(Za99sb}&Cbv>+2iIDp`3lmpPT6d3<h{4dgN%wg8*qKBLtO3CmZkO?K|=H+Ee{$e3Tv(5j_A=pl${| z04+H5eEi6Xb$b+g&PjQxHW7(>uT{T){!pYWHYyv#R+)Q#1AfF8Y3XQV|Glh<;8%~ZjV4%shVSbXoyC{#2{t|oDY>qFo30U;(*#3bVX2}?^!P3$$4rgT- z3rvHe)q~5q?Xn%mFr;$AaBz+X_j?#-2M!eI_4O(P;VrnhBr-4G zI<3=kFyP3yR(%6!=qMSiQScezc0l#cSR)6A;mut(*#ruV4@3$Px`Go}uW|ux+9P+q z#S<8qV(_25%!+6A-s@<{hgm#9b2@zte2vIP15+?*Q$d3x`LHO@w^5iUPNrydvO{p| zXJ0SP8BVP2i7*`9)Q83if`Fw96B(TvU~)aVgikIUH&mP$`%ZEYhth*1Aay%!xMr0E zfzU&hBQoN#gWyNyY$L_z;2+wMuZ&M5U`N5RT0GfcJzA2%i`g5e+9>RaN1*OFirdjiM{z?TnrURMmAvd>IC}Gumu(Bks8a zRKU3gsl1Ah(O`==yN3H`s^C@LNg7;U z;MLxc**|@6$l@F8L0}9IyDUp)MHVmT%E63fBQnMeY)UoYSW6O`pX9YS`sMzs;bqTv zHVYv>71r21uVM~JRS4pkXYglBRfFlyk>s~ULM%jQT0X8%!FK%M+*Xo&orhhGZtd=r ztR|c*NOnq{24~=5nAI7)Iu}ouK~Zr9+}mA&(*%?VJ6ZfQzF0kh!4_M%LjePnHR`{= z+83!$G18fw1Z4sA50E#4aUw`!|2jNu3wc-EgL5v1P6jDp0!>lo7_uUfK@sdLNOQl( z3YvYO3|%!9@uXyQ5e(W8?ltfVK49t@JqVh{)g1?{i1>+@9(et5A!fLva-gMo5oM1+ z(PNl;39?$*x&r3N2sNjat;TVm^-|z;4rVYaiMS+aOrQl|O!ShOD$}g>F00Ydj31Yj zD6bGir}hhdlUBB7J23gw)2JG8`N`JK1XRLn(G1!}=jzvl?+AUsQw(z4ZMs6GKosJbXxt9BTH6PJp>ECP_B6`+*k z1|(_(>?8nH?dLVhaFl(0DIqRL*}5_e%GBO*?b6K*P0_*78@5gdQ%YchaDB?jRQlr#AJ;o1^PgTdqRCrKz?)l9l8SVCOFf!5{(~vHg%KDbySc zZPc~1fE|?N3pUYr1k5AZ1aq|{I21Ps&Dp<#4@%w5)hFF6K7;MqE%iKr{dyWnbW|3tk~s@}|C#_c7_3pz_BPox81 z3piZ;IfLp}&CEFG-m#)*Pxj?OfTu zO$555$h7ovjsd$l;mUN zZc?wsCy-)#29pD`)_(lB95p?5yr}KNa%7mJ)?bB5kkD_iT`B~;QI!B^k>>QGm9KOe zg=XL_y8D=LPa?Rt0&er?$RlKye{q>*3u=smdJ$iLI?|Ru?qEc;@9}Hm+c%G=T~Dnm z!w0mknHVDVeKeIKiQ|ZvIzIz_FahjL!2)AKE6PY7(uGLZ|XEtLAze0oE;C@-G;Dwo_HpL2_@vydn-4fiv0-GRk^)xT@&mujE ztJ2d6aWLIvdQ`xgbgkB?dFt~%ER&@L^GbqJIK6;y+h%p{&3IP@FxyE(*dFvbT`J#- zVu-=^_lyHDI*GIhC4k{IZAX@{xqfI8@@}AGp=(v;A|d#>`|otJPo=6;5ExM^p9@Hu z{uavKbSmR~oaSK!>fj`r(WB>1ZJ{M%GCDs5Z@oe_=YG^1{PT15?s<^1_L2t9J&)W)7d)!YV6cC7%fJ)oQ7m&wv=>OPds}`uuBn5f2h|0rGCoF@TD9mAWpqd=g*}o0k24h z#|T&#p!FjGKy)j3l=$OwfDoQL4t<($MavH zqQR2t+D}hDDIxh&ZX)Ykb`=5y_|N$v?ZkH38@Pqvhxlp+9nx+NAY{%kBrXg(!4*V56H0pb?7KBGEd8 zKJws^`Xdu;NHzTt6iCyqg#IYW2*zj?Ou@MS@Bu<^&)%nG<^|PMz1h}q6ZT+ zMxTs~3K?AEs_Beo*3j4yn)~=KiNc1xln$>y?pMTQsKZx^x!QWOV$lk{eFq;;Y~MAv@%BAr z*4uZWIKF*SRj0kE3B-9|6lv**PJ2IcpIU?MMaV`@Q%&v&tMpK(aGRDvzk z`{1b{wFKxZP=<;KebBGbH&wOPH=**N)ik|&L<^bPo8-+l^-Vng(e+J5VsGTc^-bAo zMFGtZ&@>TXn$X*t5n{@0N0T9b6MBOtwNAYU{<-Lo_VsUzsUxd3k7`p#rnXE}ZGYxd zXH1fqIuq3u*TzpBzCild(Ec3Qa8UJ1C;Y7?lJgUx=l@W&xuer_qU9i@ZuXTcXq1+^ zr_lx$BrXqIt!ADl77eIuUTTpSTL8+>B~5q=mc5{NMABNo8rB9UJYKAs@?T@_D$qxvxo-e?`( zFOc64PL%xSt9viYGl&xAOyJaaIPIMD9TP`=vxkf6c{J*~`C&m$53Z(Z3hLYa;dlym z_sx8cz7e^FzHU}~j1|dWZ`6{9ABs<2Ad=73lkdDnBtNVte=8w*FOht-p8Opx`LlX* zB_a8)NxU*ydh+>N@&-NmwF${h#nyu3*M@%0~@+mgg`5t?8f1Pwpn!vsn)nZ~h0#nRT7m1lV@Fphk`-wXf3$@+P z-Co+2*h6T3AwRm}Vh3}_SbeFLW6b?(!aa2wG6L)NJ@wS7w6I#h(xymDhnS;Of^SE# zbbZrtiP3kRVs6LQLsi%%arbe|cl#nN9j+e0Y2KBf?;di*hQ#GKmr{>7)v;}!t9Z|bZYMm&dsdJp_zaS&w!za6<^6l~>m^h(*(k=UBzqT6Og`Dg zo93Y>s^zw+{~VGB2^MA>Vos0}DuG3R?E!t|aQn2lJ$2}5AY$uW3b9RGR>W+=WFlJV zX{aYXjxLXQBK3oFd-U_~lUX}?0ui*kb6^Azxu?Cy{_{P_p6s7t zmyal7NfkBsbdNL!Q5BCvW}Srg(dep7g56QL9iMB)NMQ!_3{v@>C`pd23qP%a)c_hH z5`*=Q6v`g>D=nge$N!!M`;w{9CA^{95a<Fdu5Tn^lq@&VGt(MLV<*R;L%iQTpTr#^a%{xYmf{UuW6$ zZkX95EXk}{s+f(|5~hOL1a|A-3)9PnLPvra4)3WUS~rMg4*$w@W*W`NgW8$frD$%b zpec2>a932>jX02l+x@+#ImyS+pYzG5#?&nQ0D5Zfat9Rzg~dpGaOFd+_A8i44k1-NXY=LZ*m(jAqKNFlpOM&a4lLPgj+S>?LA^ad%;QiO)VJ5G= z1_#@NMRYF*VIyJ+pH_|);obv-2J5sTpplog4$43M@ZM$ss(`)n&UT>$S1YtUXdkR-V4fOX$ zNyfGcF0?fNi^GBA?)ClxzJc8+^NIi|IMF?#B8Aj^;@N3H?1dJ83Ux`iGjDaFl|Nd; z7%RSK$Xnc=%51BlykC##-qsC;iI4*Y&}-_~WV9)47OliA!AlHm*$fPGc{fZe4~$2} zZWZRz2uuCo3|Jbi%!0-lPP06ix0ziq7nF{DieUF#IAK7PZ-V~c8FHDy6<-iOJ<{@$~DPWDjg0C6Xbi~AM?ucpUvG?)=#}2l6 zpic^HryMYWvypQ!R)>UNLH*hMC0={%pZWU~upyYash&KCO$yL>=!xNp`%Owo3Y7w8 z^V+YsO&!YDJE4jk^@(m^v6#i1cb#qOdBPL{W2fhaI)uj0*A8HO0297L6h4veZ}#R* zuub*E0o##5eqljaym>jklmdIPZR*)rPe*`D0~A0!ouFi*EvQ2ze5zh3H0HEz;UHa1 zZ&Vu|-{Z)zIORqtlXG)~-@KU??7wKNoQT^7lmH_W+73adO{Ac0u$hth#-f*X<9n3( zme-7Ya@q@6yEuRI9J9(cH?ReEI#){%)`nBOxc*-)-XxFkpY;@xXlmrd%xgR~2jT0hi+$A)HN2sjS*rFdA8H9Ss35xyLeUY9XB=#yAraG0<26LGJ7KXBLMO>$no4LgJJ zbyJ@?5MM1KfY=^VFU5IsIoKPOMW2KFp>70%E(TK~j7Xf(e%HF6@3&=KrP+kqXl9)McHTJ0{NnuauBq0*9?rpzK8@Mj3Tq ziy1)doXB}Vl0DQIIiEA`(W3w!=d1#Yy`j@2Yd==>!e& zZM4qH^0M2lu?|Bo5TeKitUa>5R+@7gQ6F>}hG0?#Sv5{9P%=*jk8z@XSL_88+b?vW ze5uxfduf!~?!Zh+BRbF}y)zkRzS;Yz{|ewSG+1K2T*(BNu+F1gYb276MZmiO-Fdal zF!$b9>!3+QpF7!y#3rp84gLT#vJj3y?ZcF`3)H`prZK+T!E|W6#a7G$(e3Dqt;9v7 z+w%-zEVoVS@g67RA#@NG_%#rJXt8=hr5#6P3QzCoJTj`$Mhv3Ro6JyN;&;!~Hdngh*j3 znlPJv6LtI~Sq)Mrqhyt>QYVj9vVvlDa@z2mgXbJPJMiqlb0MA!@m!4OVmz1PxfDmJ z%gRs-9HO30S6K=20+ab)d#!(Q0ZSokoGV1nHpChf;nITF32&tZ-^Tj*zUwt{sdkIBL0GboRqcrPVpgCxAez=PqNkumio;y-29qlJzSR`kSV51Tw}TiJ|EgYP7D z!8qiwPtTZ&U0X63(voouh}}$(+|QbuQDI?Y_os_#J#3MK<-8S~+R&~Pj$K;tK%3}; zK5q}<4a8>;#a!P{tDubD&BaRR9E!2|yT z4OJg159pGnlCacgm$7^AW$svjdE4Yi5Nz?3h=INjD$jQ1dss90T!L>TPRcu#}9 zxlRoBI$Zf+UqTrGu2@auwHtH}y5@W#T)0Bb|9D1Ju znLWy!WO z^Y*;knk$f17e)DejvK#rlx{3pYQ}LPXz0Fgewh(zqgSVqP^f00FtTR?X@-`H3{?5B ztC^x|iRD9U3kxApSs=CJ(c4043)OA79h8+&-3q;}-&AjcJI`Atu>B?dY~Z1`LV#=-JrET1qr%AYrPuc zntiR$qIP+nRMsY$tE{_eD(fOhc@?h`Xy)pMMO2DjfGV0awX6wHxn-F{owzRoMZ|7G z^F3vDGJU&(uUHsd88j38MrVZ7u_iAH@WPWkbIPE&4pbU+85SkZB8pe%;DP%b1?*&^ z(OH$?zsO+HK^lr;n8YE7hNIey3c;mWF%-isTGPRRLzPVAlWBcHO(A9S`=m^6II1#v zpgR5vp-d*~v#leP$yzT^2k{<^>5}U}n-`-DVmrqp{I{k>KHnVGB42`AvhSlyycW4w zE$<$$MJ`ppWSnTN+98NmshSUg4>KyJTG2K&NUq~jDSEz`>sK@}pFumkjqIJc79+>Y zl8ArxLMJs9!{e}q@fRE}*NFOneYg42y!L$C6a*d1&k7Htk<9A9lVIm41rGIJnCxD~ zVe_zbPY@c*iS&bt5@+~>xpHtihJL!W1dpUEA*+Wbwe(vcwLnc4*9LPj??~-M3_qe@ zBFoS(K#V~no&5D!)#bIo1Z=oXeO27xEH2$B$%~AHYE$>t8GRj>=b+C?Z&2BnQWJ^* z+Q(8P%BHV>GTi@&=CfU9S0w1n+gjcn4dnqGE$>+1JC0*85%@Z9?uPGb?z9*$K?^=% zKNI$gd%%X*Q2iR*EA(9`&3WujFdx^LYy)T40Onb5X^TpnJah(01xW>_-|a-Sf$Eg3?t{I@aQ0 zLmgf=9qQVdRUW7}**dYt3tm=}zaW?7+u`YvJiUoe;1e2&F1N=d5;-ltgM^77tASzS?bY9yWWIHdJEMgw9uIaeW7g8Bjl? zN691xwhs+z4lxnR5Mx;`Dl;7C@u-d!W5IoS*^QfFY>v+4(hzNC9=ZdYnTJRLheH$k zMx#{zIpA`?1W5iUDF-0G;(XOMY7GXr2(xk?Su$TLGX#OuwjPHSF{8Hih#C)b#BV+J zbF%ty8V|aybu(ExCj+_XK&1~~7OxUw&*>lGC83w2{qKi6&%@k{{YK6JjhhF1YAlTu zDj!-tl%JOia>IV9c)s(A;@3wLi1!QppBw^EmtcFn_k2oZ8K0hQ; z01Ook!P52_2{OZ0pX!qb^PAg}UmL_DX1Mp&yT8VOj@rgyog-jjvmgqq&2TQ~saFFI z7lH~>$xQI?XVGKS3c3bG#nfjo7aU#+ODXlGD{#0)&Bs0GZi&9?=gM~@huk0(Bb?IF zxx76J z596wwqAV;AQsoqBsvMh|CX+gYm_foQpk{DPp)row0w}>F*dwTO=&qQvNB9a|1s|7U>~yg)GwDI8@2B(rb;M-#CtuE2` zT*=oHXqbx46!m;?6C@6xr?b?_mk;1f7J7nO5*)(&uMB0u;2T=J9{Yx2zuv>pzdZdw zq>rAiaiNFEA8K#-BfyO&N~~4ys-`)$p7%BFnG;fl*wH9wucK4A<~&)Mh5id0{pi1| zXbk))hL3?V`XKu6Vgf)TMT8w&kY1R5_NGeVcVc#Qh7NvyJQw-s2tMGtKcve6u#g}V}7aBi(ME4 z^#c6WmLk8j#ecqnYJvZ(()mxmQdx4|^*a9v|Kx~gSMVJ8&nLluzO3<|e(;|&!GA`G z|4caw|Cvtwg2iC)_Y(Z(I?ivNtMQxXM)^%hbPhT@i%2q$>a^H`IaDxTZQMf4Bk6^G zIQ1{MgrhN!;FStis8@m0A?9%fII_*0d0YXm6TIU9u$P=K&Gle63k8x$>PLYwi4+BH z{)RJ-#95<2@u`ghsV)les>V1fexTTy`#1x*4IT1xiSNLM{jRd@nVmWv8s5lR$7yKLfqlA)QpjPuX|8bp)mHnj76F%8Imrr6p zh7>$u+kNf3mPU8MAJ$$>KvYO@gRN_zF@xi%2ETg+zzgyY=PRJWp|OIf!XMfB<6agF z;J$bU5SS*)wEY4D__tF91Ndrx!2s^6cW(m<8nro|0bCIW>nIH17{Cz>V1yXJr+U-l z!c0yb+BgPxISzC#P+ydZ0URt2cY@-?woZwq(zXgnoenFl-M~xOWB;CdattYYU{nJF z00c28Dm|VN72mqSaJ7~6$W}Qj&kjScZz8J{646O`Gr^MqmmJ^V${x&FuF&_8*#||4 zA=?jlM@S(p%@GDNTp#4XJ{K7-cwhoOI7!WT^gsmF0EdTTNb2+NiYG|ctk7bz1|M7x z4K#8DRywX}{`Qdr2^I-a{Z(N}fDW>e##O5Lp06h;dpX1+4I(||(uR^3Du1sDyNQ8n zfL2xdj&BpmhEO(HSYR<;2Lp}x%K}gH`*-n|lu@h(H|UF!VBiDXx!}}J&CRA)4-za) zfe0BR53`{9>ZPbGKJYB`0W^+(;G0^V9dsN9hC~AyFDb}NWdSNF$V>H~>m-=Kf&8rc zT6NvoU;(4AP~ElaTX-c^xiTk~1XF1^iqTE+VXMFoj*6YaoSDUfFQP_JcSY5fr-F&B$`j+neCt+_KR-trI5_5-t z+)3s?z4;rwxDILf`3Jr-9|tJ5*Jv;s$7eTu|vkT{5?jDxWu(c7mkx#i*Gp zc!$@+J|$k2-A}K{#s%I?zykZm6V#YJ8#6yn3PYKZKr|fw1i`rQ36i6B3e#*$m7&3R z<=v2Hl`4wC7lJRB*(1D24K|ExH1P1+^fGNVg$^VsUC3&W&gWA{JS$@k4k<)mXm!4S zBCpl`#dP@v8xp_{sY!clO-hkb8nR`uV(!lxL(Qp6W+@}^VgrTFO5IyKOPP+R7Pbzb zOlwT*9D5sP!R3cEB!mTJ3Pf&jNkeK})KFJ&$UtYH<&Kti!>I@S4^Lc(DHI z78_4zFt0%In4xYg0DwJC_MRJD@#Su1NW_iNKf}XLf!fzX)_|B0m|XT2DNqGzH4+M@ zEqB5N)2D4Fxd=%b%=gk7kAz@k=0=d3bHERK*rfs<{3x{~xmXCM;Zk5FPdy)or$~*M z)%FjjY(gd%gI$dqtG$18eYKtcUm`!Ob+!B(rfdS48A~vfVQ2}?j0=9P?fg&i1`Q6T z&7;CMOxc>)Ca%!k1L;m{5wBO`Lh_x}s5*At}GGECa$j^Jm5&hUhR)&m?&7WWf*0+KUMYxCce~(d?%KOobzvY8jh)kS;TXpMS z`JA`m-plx_qs@Do>ofUWzfzy;SPJL=pVttb@)v7UUa$WzP5o+`4*KK|C-X(m4a62YnZK*kLc5ON{_tr23P|DGe@6V{zgk0^Bz^*dsMk2j>rg1~bi^ zbr3rq&cHe z2Gx)D)4<9>a?}vI(xrm1cpUH9HXr+=iROiss53~Ci;njYR`4*Ggf#jl;83p)5jbe1 zhkY1r4>Laiw48e+{mE4y_%cd=0(a*@t6VV$9TUOnG>JBp2#E=*22XU=SiPL2E?p$c+l&)v4q+RQR zUF!WdalCejo_t(F@)aU^OP!W{yq0_(h#&Gls-CMQf0UQCKqOx+l2@rYT5`3ImON4< zDkG9#CzAg~Pj1wbpQS@zpOCztNPdf+d?Vx`=%>0Kcu0f(w}j*-k$j+@{O?-wwR-X? z3CTY=hxbfJJ-JUyzEDq|pOE|+k^Hk--ZNFITTA|DJ$aXeX#$-f#M z-!nr+@-jX7*S$!z``iAO2ss28qi1?0Aya3OX_%hrHOhqKSBT_Q>TE4}6(9O9`tk<% z5XpC`0bWMCqUg?n&{~S~WVN12>-n;Y8vnxZR~%#u!Gb^-|H6g?^a}^uR%SIXO2gj! zTccY614vkkBzQE`_y0fgXzp9t2%FrH519cgpdp_dvDKSm{5u#SY?mjIza~gG=Uzf* z_M^r&fRFP6x{Wa8mA&4{dhCM50Ei9t%n`6NfEPX>WM>9sm}QX7C|F=&A25Nm-{uH> z4g$Yla)&B5!hU50skN_=K^#WNc<0<(W5MZL!x=b92M_!8hRL&c7@%T>v;$%Tf6uSn z7Vd!uFxEai+z^(WHQPZ@qvIl_F@_wb4O!J%67n%vzgNKiKl$b6NRa*H9iXk%> zF_7Bd#Qxbd?7!PT{uAz>fgMk8w%^ zsN}~k(|XSh1^u1^rsC+bm+gRT8yxkua~auRLTkUPa@1xg8zM|WJnRk|)Y`Ms1{rKL zMcx6Y2tv>VV{`v3{?1<@Wz|a~lOH_Ii&=kO@-STQz=p`ED!f-cPrzY=yXx`&wb`|k z8Xxr=4AsFmTDt6O4jt&Ig&meBtdUJkURJORIwzP!g!+L!opy>G#0I9~-s};YYWL=P zv&9e|PUbw>2l%lGFikDf&J^j!>FLI8mQC0v5y@F`d_;F-961Gle+ zYX|2``(V0$RYtvgUmpsZX@g6U7H2grFhuaIsdTrX{1&*q+F!BSgBN>i;nrL%rIH52 zxo5LASW7wZ=~-*`oq;uk4)U8{D+#-BkJq?&hI5w>1vqGheh$YcIW3yxx^UO!um*-2 z+kARB9jfmilRXKD~e-+}Lma zf6ToNd=ca?H-tn`K>{}c z*5xWzd~0c?ee6^EKr3x2FN%^7BtZ}YzJaI&wYrF6d;>%!zwbG-d+$vEt+mhR|K~&Q z?#|B6oO9;PnRCv}oMEjA6btfmryWu{phi1^1ngVmTP(O2WtYywTbTBsocGc_eKKbd ztN=Zrr|)~-P2K(N^Ofr9Thc=uAhUH*V5oSZPGhDmU6VmxBg9-v@T^Xqn}@H$zncdA zAM)?B-!%N|a!v8C^Xval`S*^KzJPxx|L@o1U*tD2K>km8IBQin`%8KFnB1?!!&^4} zdptZZyAuz8l>4vo@Pik0=3#$)nnUMB!k!yVj!!eCQ!{QeHp{u19}h)34;05Y^zdEe-MfPtb)2GTaZNe!egn1OVScjap`P~f9B>jp&I{*EAF){F)NY3K3t z{zwwOIh6Vz*DsKZ<>wj=1MWHparUoi8A6(LEh8&k%gD~~cI6y^IA5e?M7QlXiXMs3 z+F#4)OrKi@{QrSI`)e6rMxPh5zao83Y1@xJALJa6K10(tNBRp;m%uyd7k@O4r<`#A zKrZi=_}Nb7-5Rd%CDaO*pH@E16x%i9?A-)22s11eORr$8T3q3>3}EOa4m&T7Out%I zUPl+BD6-}{w!IxoJ8g!4c`zfcGyIFak!u8eo#E%CYO~QvSAZYUc?CE?z6GoT?0cf# ztct!!H)Y2iu@>F+wG$_y(y%UcM^;A_`|T>58Aca}dR4v^>c!yc-hq3aMVfxF7Fpk@ z!CFK&3IeJ89Avr+GQsTL@~<>seUk02l*NpM!pg!v@F%30yj`4{uU^dD6Km~~6(wq3 ztZ*mtcf)(->}M_y4cJ|Yi*-1YnafB12j^1(L1wOZn(0jF#T2GLoyn?sFqZi_Hr}r_ z?Ix=*SfyS0u-EquB(i`u=8SSS{7Rf1-wacAqSBqTr@RlVGJP|wkNB}q=wOYhSOt~4 zMUaimQeG533)}<?yeJ%GQi|2h%R} zsFoOd^rfsOU4b3Ccy*{3;binoVqKRxGSquD3S@=Z-N4jod9HWYNiuBBC{kM)y6?27v4pFU7}Mk%dJ&G8Vd{F%o*TCDaSmwLEKe1$t~Dfz+#u z1f4>eKdfRxEEg+8Hp*fJS1D#AyeGaT2+c041p^HG(VaJ=0oVcCZ_*Ev?WZ4#4|}uw zlkv_ya{w>CcOUBvrNGHcp2P_fOY~%)+_TtwZ2ZUhKS{Zhp~daeX6E81JO6VjWW1%G)Lh#6SJM&zbeoMg5&PiKXJ^7xFqx z=eoa>KE$+PH@jo4y<8?&h~0%mc+SpZ5L@s4X$tctiHk0^mn_smL*CIx_GM=DU3cIR zY{SC%9{76>pRpJsR42U8V>GtQvxcBm!}D-sduE_{3r#GXSTCi_4lGV^%CvQ~L*hnj9!!gpjS@gD7Oyrz6i_Fg9YkAm!f^|OB~$X?qi`)fyQ z>Bj}xr%3iLDDE6!P#ifqK(U{I>$V6Y-%27<#%u4SPKZQ)mxjnVQ`Lg`J|ag`l`qu4 zgnyHf@qGS0rL;5uz9v#6@h2G=%iSn37osq*BMcnnoT$e4y2}|u?(lH@(|y&0D%=N3 zcvIm{OB)86dXaNHUKHkRvfblWdI4=qymvw?2O>R@4Rd!kPnBPPt zstU7iN{pBxhChEU(}q)<$R2Uexiea}DpWU(2Rm!`_G5HPE!k6g@BPA_0^2{XECZ7s z7EWi<>w7EL{o#LoR_KWpHIwYu2idorm!ACxCi^Wx_E!!u*-r?v&+nA|2$OwKko_-` zy$eqtYa5<^4C!oS>!`mNo_^Ll|EZvF*74T6Kwc#K=FPuNW9dio6^~c`8`A~`*)$PzCl|^~*O9@)-Aa@sS%==p zgf~k?Jk*w!iqN2D39eFm$tD6BX`H<)-Y^;1rmWwx7;T17eDIY%nL-S9`@H$SZvt46pYBmMJV zAMo>!d+FzArhk5qeBPyVeEtK|IqD|_on!F4pmUr>6fHzQ6`sdi?`;3YMg6>^lW)$t zoi_#YCJ`VYL*==@4!VvH`ZWfg-~LY;I+?)JnO|`aY)+a-sr{*K+T=OMobB^$^h7)Z znE#9fe~rO3Y*CPSJMmkIg-|D93)5KF{c)A3GIBi0wp;hH`hvJTeGduMwUUhp67EeE zcKmaMc>~W98ir^~x}pN1&5DW*q|)eOVUGP!g!UWNSGcdH?|+f)#}eela438%jAmR> z`S+B&lLAeJ61JUc7>%XQi!-~s-R(eL|B6}ydA)MXpP7nh*;BcZ*X8@mYbibAo{qeJ z%52@Svp(8>t}8O5Y66Y-#20i$A9Hp-tv%g z&7Mb8$i3wa$D9*}J2l9DW~b~kP4?A6_7XpP>urAN9evYFzrtkyRggW?&%Qm#-r6bq z*(UpSLH3Qp{P;@Te z1pK#_xBgVfdZ6X4Bd(K*53;<~>W$Pq$ih}xuqtLt_-9Sw3oo|Caw;Swq(%nbj6|*J zft?p;_3-fFKWnO8Dq&MHs!?Po*K(I`Ri4PPr(#}CJSxb(eK0d_$C!f0?XU?0; zwf6A^{Iaa2L9)_^)UD^NqtAC zUTmWs|FudjW86rqcHrw1WSZUG-Vpiz?}AR|-=!3Hm4tk&5(5$|68cD(x?uqoo4owZ zhVSepxq!cYD0Y@=v@-vs=X;G>g5)ZZApkSXA8wO}dtH7;AiA(e2_^8!NhQy|<~$%CAQ=c{V3fmrT&WYmgM``o zzDR7n<=BVd_92PoXj1R^sH0=mH02-3e>Xu(Io^`>*$)eUXq@MmyLc4$B#n?u*{h+t z*MXGKzac#jgk$~imk?BJaGoDjY(Sx;5L9e1t`rR_HXw{kvzCOa&}o%3LwN&6@H~g- z(L67}>k_Y}NL((_1|}TY^M>JC;nawmHCK)0h*Q&UFJYYlQmXf#ZdP&9?#=n8oMh(I zw2{vX^0mr>fxxmJIn%eT!(v<0+r!AUR_|K*5XG)tpMJjXT(Bm1rXP(C6zfkB@##EV zt0+G#1gO5o5Q??SO3#f4G|1lCDf`(b`*lI~jh~wAzZ&D0{<}`uvrP7WLH7Ul zv;R8CKBiOl=MGh14iB+UIno;Nwh5u?=G^&hpQr0|!j|xK zszrWc?IPZK1~Hak*%LD)1pK+FHTs3Zb_EokN@4~0dXM>;4q5zP*staik%mPhiDGlr zDrv&vSXOIr*vfkEWth2R)yPcFt;~w=>o(!x(Bg`sVq(l6v4lp0ZBw&ZSG>zG=tn?F z9@ad2v`|mtWM64%YwnE_;X>pV|p;$-tXFK3&T4n@(el2rF@f#qgTx7=wRK!q**mj9LE8n?4`Q7_-VN zkrW*rh)`(l%KE(P7_;l(W6UadpVxkZj8Qtq=txB1fB~-TqdFRH)$3J1P-^zVx zQB{8laQrOy@lSC6$>Ef>dox3IjoifCnYDmtyXVJbmAHvOA|uu#@-h)!Lgg`b!?u7> ztBP}{W=RxjP8_q|pIs-MS-HfUSD?Ps8joDd9^~L+kq5%ak+*d1LDI7C5l(VZ~+7IO;qfd=FmCYqY zNL^nZ8o1Ug_2^161Rte{3_CRzf4wc{4A>)E!`6Gp$ZL^?ud}y!2@zS#2vF0KTvPNm zdMpVI@ZwHgt*ib3!#?2UjkU<k#%b;5 zloll=sCZ}zLR9X0Y+-}Jb@>$`4~2c|c&FZcjPdo}aX)5}@vF)Cl1g`daQ+Iqz7X(7 zcyaYKc;Ey!9h{6IG% zsP_*8C2^g%m>e+a$VleNsEI`RobaH|5T=+fim*#}jU<^bGBO}e|I<1X=lA=RI9u)w zh-0@y9PB?4Wr5-6&%bd{hz6q5lbx?PF-ep{28_@m48ZrTcbz}UhR*QxKWP+Hd=*|5 z=2&?8na+*bp+)DPxrDqK7=OC&MMj%@Nx*V1)SfDYXeWX~9id`mph^toR2bdk;r)rn znETrilpaY`X4(sKXw&&u3toPRn8k1I?T|$@y|M_LO`vT|ISsUpC8vS5G2}GRHg=o_ z+QyF4K-&XG@JyiX!Rdjv>TR4S%?#9Z(#)$)v3L^&O7;cGRAifSQwE}BO)NIxLB zgss^@prQThQ=uHJr@2SWGjY@T8^X(VL-?7)zQALa$rlIrnCW(N@y~Q#@E?}mC}T>R z8)kOV9A(kHQooyNLVB(yTwz|kZC}J~u;VS+Q* z0P6lY|K!$G-p>i2Q!x`|-=mJ|dpv!Vt4%nGPuPN6f(ki;dlI>A`6C+!u}_Bypod-+ZE zRF|e2==~b0fCq{`zQ#LliAW5?G^RRquI|)n&I98(*x9~+rAvVQpb@Y9i!@@mj$PU( z+{is7pCp%blE=J-D?2x0{<+$SAG_D_fwbz_?Mm|GdaH0~vFR^C)QFSrl)mamr7-@= zPEjNNrtiPdqaHKiB1SroKc~__V#US@jhKFX~$5I#zrjrb>7gsJXHS&%8-$>@v5ImyDzJoQcP_I;Dxec$BKzHjo>bl>Fn z#Isn4k$SCo#Wfy#sqb~HMh#a-Fv9<}OO3`*=w%#c{F4s=^22`4nrT?Ni~WT^DSOrU zC-ubcXYhaZ#%P`9tzLRi|KxbkWjTW&kHD`vvm$Z$VD?}zx37dqR9@>n{u_Cw zgWN5dV`X{M0k8cFJej; zWj<~~YLF$hY_8Adq-H2<;A!Av-jPnl0N{P+M1OSm7tY=Nk&f;yj_E`(@60y?xfS4- z>`#Sgy_>qyQV6*hnRXyTzDBxI&A9S(2w%HahYyUccZvfBl*N#XByXJa$krZs{F|#S zkn>`GC#q7rSv%uhvI(RmP>Ieom|!LSQE&YOSt}{jWeD&d|D%v{jW_RE`Glwd=_LJD zIwiNgC^=>qY30Gt13iD|cbH;t>j|CddESRg&+*d(dcKMc6HwAzg@Qi%Nsjaui$6lq z*Yl=e{_Beh354C)aJpV-Hx&5S?ATqt?`}jlu&5jt=yM4~RoPx0; zELJj$ArXH!vxensEI3R=yU8q(h%aLLq>dX~n*vY##@Z{qf)sdP0$%{0e7iq*qkrE8 zyydK`I|z8FDF*`Y!0T6+AK8U3=;5Y62?Cr?QYUS0W>Q6e`&OTOrPHB_rgfYTo=YkIGY@-ToB5upK{M}uE!oWC??mv=5#ptY!~PN885A#^#NAKE6BGy}7O21d*0sSIvhGmsrUC*}}4X0ig@+qY@0Ve1sha>b6V&-5xP}3D`%lyWMRk;K}(Nt0H|?*s`IZ#j~~i zJ)EhmYZqI*)6vZFEo)1Vik0g9N!MGf_a1siUJdO$A`}`ws?;d(KC^*5{*siW7j?-S zhU~@Ox}!TwiZkC;vR^yJkUi!-^J-F37``?3rPY8VpM$`V{Psy$10x;#+mGR2%5dy+ z%(7+24m);C%_v?LHfOf3@7309XaDZ6$8O{7m>*_jWi;Ez@9Q{}%jtZ`MJGC&?NV7# z(QNl)i0x>$BXWTaE4-6Xn6>pfnV<)!|0RcaqCc9IiO%Ma256K9$@nE%}?N`ye`5$S?r>ByCo0g0u4{}dSOQyYpC z*MaR(FQ<>9^Vc1qgLLOq*_djef6njRK@NXgJIKIEK?j+?rE>@A)HAe8NZ$zh#5w=* zZn3>bXBF5VPXb|-+@H{(oR||mEZHe^UO;U5Pf|UC_%Pm&enXc?TpVz(Bz=#h(Bg{= z#BF!ngS+MaSh)|GdzSgE^RmqSH|2i!1DdB$?ssrcaRCcTao%hi?c!p2djns&7vp$Y z=Uu6{*evV3i}m&#xvkLKQn|JDwx8UdtG8jf?W4C5xh>RN^v!i%Z*Dm&Db5UVcUHU5 zFO(b6t_mdxj&}_pNaSBNPR_zOIg?o_LO8`gyNtHJZ8^<5^1OMFSD05?{5?L;<`dEGost@P4u%^m$ z`{5w9ymLyqobJ71aXDqbY^Qlw{}(TMdX*<|$?+E9$wneK4=5CgqoGAXM+Bv{acK)l z-Wzs?f}rOG=~kgMhux*3q>E+|NcBWc^-#J1@i^m+1+wRf?L zYk7RU%v6=Td7NXF=iRV(7yYr+8BppD>gNogu^6(X__*v5f(A+a2^zsvm&~6rkET;- z6-=(NHN!iNGLnKmWzVVV=^g+5%nWntOISI2z4yyi(n4zOqWYLqUs5`j1hKnS3gKu+ zj1$*}Dff!K0;A!?sxB&(gH+mShcU%2E#Fj|ky&$CM`Ns`A^u73nD;9Z%(=;mB+j0r zLiZ`>y28++ih{h75Q;*_fI@dbVN9e7+hizAtN==uEm8&)_BT~J0}5EPc5zIX6O3RT zEg*yzIr$6|346rcheP#8(rk4^$3Ki~l*p0g@#dn4bwN+r3S~1b>x^x)-4m^2E1j!0 zxlK{`+H7=zh;?OlqgN1hpL3#f*qF+_6Mdx8xvrIEwz(1O7aU|hmd!Fx@gm}Gaia61 z?nidxj$HO#G^ZCY|CZ(Y9y&Ri}L=dy)P%>rlQTqjyOdHWnF z5USfiSBh^h4AtGtSQG!GFjRjmdv!w`Z#O zxs4S7p+!w{x1g3~=!;g#?Luy?i}NDx2ksg?YO~2JU-NpUJIj?4tXXmSfRGqK%kI@v z#`}5X1!ab{q_|&FzU|JQA)mP)P(}kQd$l-gcAcM>1L|gJ23yjk`p}}M^j@H{hD+5= zwlynww?gl!hxA6hCm;Hmb@A~KE8;%QS=R2VMvq|a5S#Vy9$wOAv!piMF^z8**w(Tc z2DoK)0vP42in?{P^xh)PFK<#|P{=ANBr0G6UQ|Gl&$QL3MDQhXhSZ=h1#Xw5i;Dn= z3{k62U+NbMmbB(hUNz|}gY&v56ygO*3PRKxRIH?tItkV9Hc`=5MaPFgDyFXpzeq|K zl5koXG&!A5Ujqy{xX_6%WGng85;vw`dbCuodDEkXZnHkmaaXuQ7lN`AohwOsPILi# zYhglO^W9c=;#|XuJWh|!kGRnV)1!~T2Bj1Vuid@wC^uRQwY`PO$gDn03U+8X)%O@So4S$jE5xqC< z{4enp-^^En@(o*ul&_@KU@aHB03K3~QaF5mQigDwAR1hvj3mq_%_F=faQl1(3)q%0 zmhgpqKyw?;;aO;*j{%o;Wh86~>V{W+UV~8-cf^MPn8r_?m`Iokb0)NCo$wKi2dAZR zlh4<}dn%36x$8g4SJON5m1pGJ+j*e98#$NGR6Dx6H47u|WeY-!DzV^yaMYfi9SAgc z*4=`zHEWvCly|}dt11%T-L)Imv1Uy*tRd23s^Nx?Dxyo#&W^Zb5elFE&a&n zFH@LyQW0FjFv<|HnR1o8@P4h%T6mYiR`{bChQG@QuZ0FhVW@G2p<3zkh7<7mDwEE> zUzv~bQsv%k|I^t4A`D%#v=&yL(M?h%4o7qeOS#R?Wy|16{m_RJjM?y10I%R~<_&b< zs^1QB>$GTOA7LsMH6c7A&d>(9Q85<;^xjaUQSX(>S0L?9PwN!~XNx$|m4*<@d_pWs zBZTxUADd-9*tE)|5-kHlAln3f_zK=PWDt>TD4@jQEz8nKG7!5nv^ecUh7eI}_&KOc zpbDmpylbP@49zQ}i?o+?7}}L&1+urbY zlPp3M4wg0wSi%|}p-%l0S{Rlvq>zC^NP()ta2)UhDo4N)utH2&LCB%JusRQbFfHvUKSjzDR&AlKdbj zq2r4i8O{7B@E%KrC*&VuKy44#OQz&U&s?ds|P{?sD(|EO`nt#)k(hi z%5q}-zbz*wbm0l%2N4)urNtM?iN&>;5CJWGwve&F=Zb(Q0z#N^CCLuH?9|pwvc*0BGPUYRbcNf^vYz=M}d( z>OOM6d?|xN)Oy5x<_{}8Pu0?aI_l2XcbZ0#QR|P7P+l6NM6LOnTa6DHlmhv|hg6`i z^}|Q!>W6C83bSa31PLV^IgOgZSiMq*SB4bs^~<~G^Chd!Iek}8CSi-4gBNYKx|br( z2-c#r364`Jaw~8g#3D|t=K_2#D@WMFhhNroc0=+u>Co`~A(P+9lV#R!PW3LFOxDU6 z$LHZvXN3Sx1ps5URjbZ-*a=qD6Q+FntezRXnm#LAF7ArR^q$%7ilSP(qjA@!MD~%# zt)9H?INn$-)&`sX;%rdu-Tv-P8TQh{_&nlt6GzICv`c7F&upx-x}L|7Th5^c$Q3wN z3ID!1ipwqWgU#M83V;dUR#vUu2S!F_P9(%0d$L`VKwm5ZVqDMD2 z<~lRVM73~R8e4KDmEi?tts%FuF;5;>n#VlJhGN{IacKMcV^t(wntHHaT_JQ zjr0b^{0->Q*w~QQxLO}QzN6&l%;)dW?cz<@10C$5b}5ymln|3O@GtID z;YFE$s$6W`r-kx7d8III`syQzUsO?)+bL$9ddXrD4kbwZ;I6lKa%zdQ66#mT)Y+BU z5$AU;JVo4}py}VUR&Q_X8F7}ja%*c>w%y&*o2?IQ>mx?{5w`Vy#JPqsrdhUuh^SzV zJY!eX-5s?)h`4nRNOzA|kZGk#B$~ciAK@yl(}V{iR?fD!Z=z>WaJyL5FoADGiD;7Y zWKWAb`vIY~HCqYn3l({SOxEmaLNz>fw$*4mzgY;xm>pt68EZ^n(?QiQCDN%F*acHh zHFbSKiCq06Q)NV*-z=fvh&xLmp~#3uGtt}zng)H;k7wz}QRlv8e8AGC!tLS^K{0Cp zC^}*nu-s)@qWc1-kds!RfUHRr%5}0J8JH~YD%*LYf#NYq?h!Hr4;r`QQyR&MN9iNm zq9sU#-drd9^sd>C__5kiF+AiBXA=rUBG<$~325ciyo@-$M~IHZy4-_btQmKvL8p(3 z?u;o($RgGnN{PDLqE6xwfzEn8>il7@lHr77D8yZ5e0Nb7V@Y(js8c_m*S56>gcc}5 z^Y8VC2{#QJMh(~CF+XnbIODIL@D1k}-Qcm$7HMD8CV?%4YT}zUZO;vSIs0Bg1fLIz zkn1C%8I6n5)!t^!jte3TD>2*J907EfA*VIs%$%)ot#BTk#ZAOwoz+B6v6=IrJUO*< zxQL(7U8aBsHH+&qYAp+pfce>)T@%wJZIER?B0qTNEol%~M7xjaY}yzYWn%Rz@U+6F zH>KB3^kC1lmS~RA`<#hyXsR~IY||iO(nT0B7O|b`gxP!>b$(k1tlB95Go3r>)>ME& z{IvUG)VXVhymdE#v=Ari+&_~9I+gK+in$SDR7NMpDtk0zyR!)02Y zuY5A=F_HcpAe9ARK0X$Jg8KGIj@|^>EBdzdD zVIlVgY>0sPPR%fBRjo!+fnB;y0Qf415A4LFq|sm3e({_e9R_s?gxeGN;8-~KXP94m zZR?YWbJZy4_R$gN!t2reXA00biKYwCAj;>^-DiIh5&8(!Tx*5aQEN@a89XFvZ3CELrjJJ4p>(YQ9Qi|c zMNDi25}MYzeFO`12fksbj6XToovkoivlV0rvw~(gg$(q$DMD-DZ_|5$`-JYmO;>BM zn(%5l(FP~_hIj|0*Q%F5sOnq>9bJ_J<0F0oDSb$TX+jwo$)|F zEP_rLi#Syk2skO&)B^(buhR@d9H>nXyM@PqO;x}_e69ib^fB%MKVls|_zi_0TF96M z1}#o>lj_rg0!4qDvZOBbe$Q^)PP~RXZ3C(aNv&3$@)3k;BR%0Vm<3g6g5q{TSG-6JNZnLHn6D4e-;yoIF9<%->o}MYV2>-eOqcA zVAT~%Ra{S#s+_5tC{uI6Vw!8EpNlS`xo8C2T4CjE-bOQ^x5#iDwO-Q3mLbwK=7&g& z1&lF1e#_GELw!-lFhh%v<}yW7y-a2p#C`eX%K(B;TMM9A+}O!7bbcCvI z)Qe(QNym^k)XG%{UX}D@GozC8rw(HnEfrOxW6^~B*PXwOV4&5Yy~X%wN6COK&$Rs(nq%18skMuFlP6yl4YSiIi*sj|=?ctC0Re8iI)MNg(5m;+ z4AJOD3&VzI1CZ&BVRMJ?1U{${sNb3~HO1-LC4`gdeQ{RF0-Dh9DiGtU; zFAzt2?g7TM5l#*M_!;*b9P!+PBlLhfWLUdPP~|#RySvMwGnEVwPe&~JkPNj;7YN*r zGoK42Kq`XcpJoZ<)+&TK?Ebm4^g+oa$UQWhyQuqY#CjI54*3#0xTAS3OV6Uf;NWNN|)S_N}1;o#aN=pX?iBcYzDDVLU zH2SQyP&);S6=T8*uqO2LmDz=+PgRbhAYEhVJZOTKH z+lR$Th6Vb9cIT?9qwuyxY>k>t5!73nP6DO96m|DG<0nL|&m-;);Jg{$t_2?6=ina+pG&nfLlFWwUax)cbe{~fa!Oz!6QC)@zG)9${#`NNtL2(bTMBk5?_t;P%a6o6!nxFQHt{9W=tN-3Y?k_ z`l9;+I41RfNbO5WoXzP{l1D>lm6BNEA89|hf~7tyE1YZAQxZCsNEWrVq&W{z76cOo zt7}<%w5(e(q{Kb6Tg!S;%MzpW;AP1qV%M@h)3RGl(w_X=v;TUPy{usL`cE)EHgUSi{lNg?JOCc(b~?I(OI*>?V1f% zM;unTL$9@RPTT~?AIPh`m_DkoV#*yh7h!5O+0K1$fGmYMLvPyO zRYZA=(@~uD^Zh2pr=Aprh*lo8N#_S;T1`>se?5wHH;HcfI_-c`r(HmmFtxQ1I@nrU z4*;p?fX+3O_5;@WMND&W3{+<2pL9j3zqRlzft%~uhVVQK z5uCrZYq@o*1wi<&4RDr-8$6h6pWn%5-b((W>#<6r#tMT&lO~w4lo){w^<4xDD-Dvw zVnNy4gd3^s&}1drvVdq1NjX)<-Kg`}bAW^&LCc9)3p+XeoXST5W49)2AsBKCedi&D zgeiv`%K6(S%Ap0<(}I8JZw;`&mjWDE7{w|V^Y<2NulfYhZ_{dPSfC3b$9+=Pql?0(WxzrT0!HaE3MZ`H^I3%P1+MzW?!Kc*Y6vC;+f`&Iy2j( z4!3Ta^b3ZzzS1waeqWk}p4->gT6;ZzlUNflzto0z7kUEL@-9j$I6vUKKM}=yo@Hz? zW4nytAjr6~9D4Lf4(Rl@i8nFiy-0W*n%sJZL42G=jG{^m>ern+TL2Gka~@kMa9W7V z|6Qv|uK)&v$FExT={cBs9--n@4mp)K0UZP1cTDY2i3w;L?E?4gw45RKe zaFkx7!vPus%}28F;YDwXSi9XyT;QwlCryf2p6yJV3xu}C0K377-V}8noiES6m+5os z)2Orf5lL~DFW}--u9w2)H2`ch0NjAcIb+2J873*z89EP7?|lM1Zl;8^o`GituU^!o zmHMh)nALq&W^n^okaO94&Sjuu%xjhcizy94+IL`Hlb|RW+ge&IBAO?P<%Wn``8s;Q z8r%H?T}3R+MpJja50$#yoIqCPm!U5l~XAAYviQ{%Irz*8 zj>+zIi~!)&%-gSv`P?Y$|JG|a3ub(!o2h9igX8|Ap$HV6wpI>&Bu%)3S@bRb*1*mF zi1>&KcWJh$C9mGI-Op5O9!ht^O*kIK7}v7JyvasPhHIVZIMXOYAIHILH91pjK~RSi z+Qx}aGOQ{bhVv7yN7rP0St;$tKte+yyy#8bYh(T3uvTfTi8PjYw3V4f6G|C4(wlUQ zp|RdwCyhlfN_Hv?3Dc>#YGYB36>@Ls-6Qk4dA3Y61{*&MG@T` z6c64m*r+;rgoF$9dl7&TzPkuaNrmya20A|S@1ux&4gB@0(j7~6;y7pY5b-oP!-k=> z&_E-c@i?Lz($x2r&+HV97bM_@$5q~HHOy53XPP3L|kA@@2Yo4|;-NjQ3 zxeX0yu;;~uv1y%QRTwSUn|s#^0CEhHNHU*AeAYtEG`?ha#=VA}X1LNU;1o9^B05j+ zRX%J0kBBw&b%5mpvkzSpa2)vh?L72x23A2+T?wEN_}2uZK*CC@$_Km?3{wJ|B?ev8 z8HB}!YB{Ks=`b!BUMsnTwLD+&`mk%!+7=YzcMH;jNuy8Ks!{cTdY6Tt+ikI=oN=d9 zUUAfV%1+r@q?FjktZHM{dwNDj+BqlcX70S6L-wPjf)eFL*y5i!W6TU1-?5AEFuS*9 zJGT}`+#lseobuCgJ2T<^(-Px0rGIql8H_9$xp+ioCo-}#{DGy(x->ybeMV0Ju{K#J z90fAY<>y$RI(J}~%Fv*L@kRZj(%~4V2Zn=|K%mh9O=I|Fqt2xjPG6yP(zJNyk|Nd# zkF62dFOSeEoI7F!alxmB1{rbAub}KI75~_5tqQpe1;Wk;g1n&<XE$czd=Uyl2L?sfhMQ+~2=f1F{^RLU$%2i}?hWtJ)E)~D7F4yAbKj;r0R zw)K*8`6y~qd36y}U96{Wh`23SC(ik!1L`FCl(A3>hhfr6hpi(*nmV5}Ie&Rt=I-`5 zcT`(joy*7LrW0qMbJ2u|b62f!Nzl=P#?#^Hhf?^<6_p%i1mu?a4v*wY?Dbu?YAPctKdC< z%1Cxpnc9|huB{)nEz{bh`}U_YG;?U#%Us^XPO+vp%++#nR8MeV8QD)6srKz&m$KKc!CTrYWVcv!ybmD8DP}ruS2Q zI^H>NJSEdTOh4?1IuA>CmwF$aBRABm77_IV!CaC|_0m&~;vmxAU>zYwLq0G`-wi4T zwt(!qlQK#Bt}t9}U;qH=tAGLo(p!}T(o>ZL4crI`oV%ryDJTy}FZ#P`c#7xv}$rD>tTR7dF|PcBB54Ao$|Mw+0f zJRJ|D2@CXogfuBfn#k(BA15^x_mVv4r^u7rkSDjIa9oK|enmg`w&R^!!)j%?;&GKb zqX;ZC1NFjSC=D||VO29wFZ5NIcI&$rHi=xRiEy9=3T)J2#ggCKD=Sb4kS4}*Fw(>? z837YzehB~3eIlUn8zn@l7#3$1na6BN9#YTGvr%U#(-V86&O}sIaS48Wi@k% zKtJ9`EwlwD9rzu z&Yf+&iq6M!#u+@Y_;9AArO9zX_hop5UD%?=_^{Wd!4BzpRMKYyJ8n|oPN=*R!at!R z3zw4f2N5-#M#X-!K!gz8{&?2p&EbU>u4n}1QM->$#LB*lR7D1%T?jU|xOe{ihh0dMJ19aY?D1(lt z#Y^kFqiNDQBGkSf_UxZTXX8J60Esfa5?0rjyAsk4AzvnG<%i4XiExf zi2%Q!yq^4yw0kPJgPZf?Rmm*^!p(%T#eG0@lM-($hj$S%g=kXpJlfm(1hIBl_ur2X zG-2KS$-ou9#p>@rK>8DHa|957QccJYdsxgZh?Q-sK9VR>tRy_n`>c+I-(|yx)$Amg z9d8L0)J)}qz94HSz%=0P438-PRq%Clb=ZA&q+{%;$qf==YsN zJP@E_7%SsT!+Eh#q$TDY)`cJkiFZ*2;5bum{Dz5g;rv(wEO~$V2a;}e%(PN1Pp(2S(FfcP2v$La=eWp_}kh9(okMRlM^{Zj#L~th9OUtFok9NUl3zy zz;FxXr)gFR6_U4IF|zz>z8a3}LyUGf)FhxcCx z&!5#Lf1c#uHCb>=FTWE$@8t$d0N4iAKlf81w86d?+)6Kr2pMKIRyNf|wJZ zqvc;0b{}6LcL`S@apUv(C7@>GTZOT#J>D}PW+L#im}qd;ZC+E9r)hQu!Q1G)gZ@TkPGA^v2Oy&#kQ0mOuvNJyL%akz`G zI5fUDcU(p6DhY?OZZTU4W=xq7>%|cSPj_rvGK`QZO-p{NznAFm&-C|F{k=?oFW2AU z`a42@TY#x)W)y!{@^>kJ7x7oc-;el<@b^Rh+!aYy@cG#uO5mH)+FPq2+~%n3 zRUf8@+m+gK`h!^@CfgC*^3sa3?Q$qxi5wVI7#f66u*11mC|q;X6c(EuhV%>1lVb*UU^nHoS3oz#A795T_X?Ic)$9qI@9D?kLl_k4xkG zoKWHZeGX6Frys*Qf0q}o*JpS2(Ht~XZrbjBkF-^kR2s?J7ymrF`ul{17D}u!Z1VGZ z&Ko)%M(F!@Ws3Sj4Miu|)c59=BZYCE*S}lyogLY$22^Fr9=~E)M#3pWg~B{YU}z&8 zR3-cT#7(1AXYbl$s|8XRs9z2YBPP)1VROuL2yW0@cgu zI5Q)C|1J&iRXf-}?>le@t8m61sDqiv=zbsjc{|^_O5t`lE?~fk|r>^m~?(*vp(YgH!iVNb;Ru|=&_*1ur zMQpk^i{v|xPWNS!uVNNOHxCF?4OJ-UB9&ALN_%d$O%6>@XP{WZ9+fT;G(KQjLKps0 zAj{<-piS=E%shBA{wdS*14qT02bvlZ_qPft&gCVqUjV((V4j(^@!)BTAKtyH zrwV_|Khs`{p|lb)xz>4~!}ICrcBOZ@9N@4Al6y^95;13Nv61QlMV;G0L+TC)=hGu- zFX*6=(cbss`u!d7)8)mXMR(s1K;H0o1S*M(M-i;u>jPo~$#GGb=)HwpOPdGA1oTw{ zMfxTiE)C*?*7uDA)b}3atJEhA;xy*oZQK!Y5m=r~Ub-P3?h(%d0EiNQhPzwmXwb~@ARJ3jnhO0TqPlQo%} z_};A0{V8?F=))sAg)UZ1-JDC7`eqMjy=rhfVzU+jdWLMcMcfeZze-qRFba=7dRJ>v zrkv4`)2Dky#*RXb$IST?VjFc-#b(O4up0De@s`e)_;ju4n|FWUpHi3t5}n(zM~4>m z&zo+K=Tb0zvcQwl|EZFrSq`7SbTE40 zL+1t@639!ASZNg0egbMSH#bK3z(H~_R;=$&^W=<^LrJOm03j+p@n_qgxP_|8b8^hZ zG~*MeTg>gHW~9?USC#kjj##dDpX3WZnl2ASYA5F573fV~JI4~GTE^Ucu|0Tsj;P4g z=G%k6{o{e{!9|+yAod_GP72|FU=KDNBBge*2VG4J>_M>*&%&O;9&8adOXM_}Cl$6| zU=J!Qsnq71iz!p=BPcA^?dWW&*B<3Hb55Nt8`z6e9uyNjWQ5UYvv(uMOvoTU zGCux@+)%v`!<-G_%#(q|sC^tgTqkZp>s`)!`1kCKH)kAJ{fRl(g=3uz420&PmEHEU zDMEGgl(I(sLGQ^NkhCR!j*26?p^h}Aq7G7Kwb43;H_RRiqNB)Y z`J#8l{|NGf3-n9{)Wh9gXoj@fg{*(XN?PMBkbvr$kE_CysaDXA+0s`7yXkrF2=EGW zaQvakw7nXDl6ubL!AYyWd|h#f*e?T({c^-SwO`H|8rUx=)7USlJN!zB>f{ zexkp7_4iZ#6=rTK=JS*IJD$Iz_{-z(F#gWuFPp!8LwW_`0{!Y@HCRfF!Lk>F1xBbg z2XdF#mvJCBQh*bHpHG<}Vzd|&1f5t}#aJ-)gMfkDr5q9;bC%8l7Q#V>2DLcuT<+^v zi&Zn$w`vZ-s)2tx+b>U(&9`5cbDOkZ#B320=3u7FMR8FGzr=JgiY~p?u<;JWiQ2F} z!xIi@?}?(t5?>&ji$$709W@s7;u3sAFVv6gSfgz6gj zYI~6yEEqHio+71xujLY|lV2>D>f8OQ?ZidhyzLmH@jaQLdeL!qj1bdi$0d-Fx!aFp zWh)|~{_RnY+#4igq^Nc>4!r1HH6?|zSn?(rW6j(Mzt(P%1`vxYEYQX>wYP|AG=gL` zpQK|9^DQQ^qVRxeo5QXKC$9%l+SjIAP=IXqcr0p^PZCP5ogg%=v%>&yXGSF9T}f=L~hNcYQ(tfP>wfA z69_ygb)}!-DyNQoM@=bDWH%Rl>Ef zE?#~y`$Z!P`<^1TR4(L51yJsy`lalPlL0HhBd{+zbojft!0Ir@g&GzY(YXB!W6r=* zU&9|6zYPS>>w@6x9K0MLlel0MTlpW_H#j44@%!E}*9q5j!Qlj>4LDB<$qugjCom?0 zrq}E46&$wG5oinkej!eRA>48N9X-Rz4?%t@#DSIjxejJw}FZ%9$S; zobh33Qluy*$9CQlm~`f8zg0ws z$P~ri+%XpWXNC$?a!f{P3`KwPUOB{JOm8`Qg<)b30iR;=hCQ+Po)gEN=C%Do)ELHb zPJNdkLB%)8^K5f)kp{og6Mvh$E&u2`{bc+vY4(nrGiF|rhyb@)OrbDdS)Bqa6<(4< zh%j(Q!fxM=B*JRc6?+#xBsf5yVlQ^5aErnd6L=oH5qL0Yqzz4fZEm8`P~w_qrk{Tu zzqNq4T^q(^Rk*z>+@I!EmNk{TP358f4Wc3+Q_*MR$eEmm)bq%ZWrrag>F+;jn$2Oo9MA6Gb8 z6@6CxD3Sl;^Ap)oZO6FSV83JP!CQ9!u1*~ueij97@;k#+x61kGPd@eQwBy3q07}5} z>pTfs9&27Dgd+}lE2n)|I=8n}V2XD%jg0rZB%@{*Q;0&r-2(SnG56;vzVB8zj}(Qa z?D}^@b<1czdzs9?N=p^8N+O=&Tx#EOL}l5k>QH&y>$YQq^xr+GUhx%M5D zH|ETkGbk@v)_Ih5I$FvMCA{!$+ja2mBYZEF_*=OPnGvsSKbHuHio8r zOR|#~U)?=c_RP2wRYE@%+weBL7b|NYhhdX_ww%hNje%=$s3!SY{OJ4jz?QVHE=Dy9jq#>3fN}&Dl zE%}gw8QF+;$PpPCOY=!(hT2{d=Em9>LB?jS_dcc9ei*t5W8#7c14!@db`Q?r`t-=q zdo2tkA>Iwj^AlE(Fepz_7;E(P1%>id!c!~nE-vvdMe#8;NP*H6KO)$F^PsSB0s3l) z`4sc!d9Q>wMvXufVjK|nI+CQ*m@D`e$eCkuhLfA~k3S@ZHy^NSD;;ey>IH4cPRx$M z5ifMOk2daG!M+pfYrG7DI#ck274^}(I-%YJ)CL5o3oQl<>H}n$4X86%(8t{ndQV6* zpv1e3kt9HWFz7$)4TkhoFX+nvS*U>B(lbMdo~-$huV3@)IMX}VyaDX(C4zUV;wMN; zJ-ycht9Dm4ok@>OEsVL(cw5x_C*v{_;>l};vD1#PTB|31WO9@f$5Pvc{FV4q3BIBv z?PdHkK5NoOdy=eKbL80#QXXw5UJY&RM0Vf!p71SwMVge*eB+K$5`6=FA}*F6jU#l- z0&?+V=;QO=M^I2WresGC@pojc@lFEp%-h2fPq1?ZzUF2w+J6)@PSjeGi|l}nyj|LX z*LdeMZL?e`#^GOeT;weZ;u=r7bu9i~W{sHA-l=3$1wb5PojEof=x!w}l}2EGQsLf~ zi}@R>+m66<@6j5eQI()uES?Cg6rCO&q4S~cilwsFr_a+Y?~9bZA4@zSkD&pZV_9r- zMqgO(^~KHVJ|G2EWPO_TY^2YJjy_G^t6A%>63LplTOJro)GaVFg-^n%1uZ#UoTJ5K ziCTT?W!G|o_?%F$at>&XEudNF@Z7-j0-jrWZs56%=T@HEd6xV3Sp4nGnm@Z3=`Z6$ zOrV~1^!~=Tf0ThX6AsqvnA9ATT3GHrH~CY6Z0sNwJ>?JM=so-nP1Cdcie@K(<_YH#h4eZio`E7~nwxb;c-&fBr8G-Em)=VvS+;TRR#W4*oP98fanwS^WTwK zIlEd*>`!?XbwKVv<6h!|%Khiuck}P}ai8VicQ7nx);uP16G~q|v3?84W0*%aiAJ11 z3h|{;>nj=G#34~AyjUz;Jwn(IJ@=sYgSzsA^Difxv#{Nqm**t)qFSvL^#yV6EjtWZ zy(N+u8#eeY5$xO#>j|7%QPgj_JcXi7eLjt4eJs;7WrPKJA(R&>e#eaze-;f5T7?!{ z8tN56ZOz0NONOz>NH5}JCOjjFxGb=VVX3}84kD9W=&c4hiYO{ZeJ_nS<%fD5;tb3) zEfbn@yXK!!q);LvetnfWdtD4^j;*DIufyB+dT{7wN*)Nq7no~jIco}sUwIMgK41TUoXYvC92>+yMpU#mY- zetkj^@XB}y_?6>Hg*^_+@APF3D2y zxZ#&oeO`@ay(i(Y%C^$>GBy&IOgho0oQWE9Q>Q)t>-3#Z`;@u*zG?5 zRm*$<~HP>(vi_2aegPi#}AA$966CemU9kJc*HrrNXrm9mL4F3zO3M7 zzk|K3;$`??FNg4w&2^CD0B{fECF8~cUh+cs4JB^Rt$=s)DiT-A4->2IkUB;~ZtTQ> zLn3aZPHuWc-0SsbUqs%Mazq5hnJ$tYwVv02ml3|$z|L0lIbR zb1v1-8TRt0kbG#wB_U!R8?}y6JY+Yfn_pyaXtERid$Dj{viHw6(DXk{p^sW%3b;|L z7h56Se&k+}7<8n9o*0zl9;qN$d5J;au%5N8=QpfSq}-!yt5;%BzAgK(`xRM3z}?+y zUM2?hw%t72qGsYvALW0M7<5E@PgQ8jy*f5lGjpAoP?Yzis8tb{$O0o-;J-5J-q@4P z!cq5p9R8ORndkBX)qf&59}<(Y8yj*sf5ATa>B&tG-8$tGwgK(lXrKJ7wIORo)}YU_ z*zd3i^{Qb=w?lV--wvIZ)8gTxviCnuoO4B>32Ie-^iAKf;_U3Jgd>p z3U@6i;%-zWkJF+iE~s$#VbA;Uu;WocLT41Ho}JwE^0MRZ2E42$!k@cavM&D2fRnW% z9U$B#LlN}hGefBBsck}reRBBt9(9j- za_fYTkAL#LTk@?f@lX1V&2lauChKbw%nt78>27Y^(XFE?{^=28doRWQk%I-|4c+^2 zU|YYbR>Oz$-1D>D4ek%!##1udPR!uoxXG_^75%=4#OBIjTkG37job20k<=cI?)t{I z9+S7}Ln~WdPNB%|_T)B%Zw3Onxv?#;2S>d0Zrs*Gme}`baV{ES^LxI+^vNeUoEHt` z5OLIXd-@^VA7)P^|=~IE(O`zi*c{ zjLqt>vm<3sjTtDzA*y*8t~B-y>km2L@^~5BanHCfxUYDdZxHomU7yb@vOd(3S=Z?; zWE!pPb8*X2K>A0`x;m0wV*<43y}B`M`1X4#1+cLfIpVZeCyNpDA&hUl%CUzvDFcSZ z32S`m#x#bDvzCYjbhYQuL?m%Rp-d`S$iIu%leR)Nn4?~N~{+j9C zb~`6(GGm6ME)gZA*jsqSZWQ&5&|(z(7FLplLyPysuzhg~v3_Y?$4~Oa2YUor+v)dBBG`AM^qM~y#U2$OuIe&tlioh)4PsyFTt*V7n4nW7?I8;-7Rx!{SWN6i z@U|c&afsx5zi0Ky%*4Qs_?~X#zUhp^$393VkpQJxYEIIZCH}!7o#(CVGP|Pd>wB5f z4b!CTUFtng-pDbQnc~PR&y@u>M?O{n!rp`nY4qj+rpCnJe9z*9Z9Z8kM{YY=;a$y{ z)rUW}MB%|smfXf8-NgX*=l2phu6(Fz5~?0> z{{pm(vBO+k3o-YDrHa6SivWrCW`Sfw^~oHZz>GJ9dx4hp7T>8`9N=7OIa!n~L~KxA zPD_#clwQ(UX8k2xmy69O)qo63Qsa&J-uQP!h1EsJRN$?4_x^c{#O14m56vI6_I+Rz5v7V@f{v=_$*Ndq|Y6huuxOJm>PW=LI z2qKdobLtoB>*(?16o0xKJ>97nXD(ltkk+cVm0`YaGpSXiwwu%uq-Fqk#KrUMUM!G} z_F_9aIwI~Z3}NSYEO`bZ??OX+%>o4F6V2O7lg#}ym%KQL}=1KiYdma z7iYKh;A-!0tX=_x(PEsGgz^kRz0eUuc?KiWt4NfMXOhICMC4#`^q__Dq6jw3rH2TLcJ;*B8f??Enx3y!Swn(()2!WdVR0p zK6iTkk=!Q+WlpdEh9oXwrVV!i>)YSurrdowO+Sex?vp}{C3Pb6?19HFEqM>gcnh^Q zT#fAkb(Z8&T%zhDCaJOmdCr+2IZ|NBj2t0gOy;k|OY@dt2PK{GgVIg7L5U{3AQXcW zlw86GN-N<4Arw3yR1yXd5=rX|eWEnI5QiA4P$m}Nfsg=FZM*H?!thJvFK>LU8_O>$ z5($B4rd{^J*xvNr%<0)@cdW2G8p=BwIj%T=43jTn!!F|hZQJdLmVF+Y@;+0=%0PcK zr)tCGzu_+Cf)uEs^n6q0$?T#9!Z^hXi>jnoOjyFzUmX7WJ>)OA?hfMEA z7Sh8Jhxy*#X;SOpd?P+QSLVeJ*1LWAG$O4h<195Rhy|apH)E0@y&&^3{5aamVQ*=z z+zrmRmuQ+hq$uX~*5wW|Q2ngy2gTlWK9Geo3Hz`Zxl6>1E*dV&XP}s*Fg7rO)ve~+ zp~ZIY$g=*qHHA`pv3I5vW&k;vTft*A(r<(gA#Fh9eb(H02vK>v-+0U-8%0WlpecFb z9bND$_O?k4o$xC8f26$&d{ouB|DBKof*=zVBzTP)YcyUW*b*GAGbDjMGNYl2;+3>2 z;-xi(83hpyPJ&FgqjC`vqy-i7iF z0PLhySkB@{>(8Ody@iRR)8PQ6s@ASR1x!V{(&l2W{GIV6e^}68?Z(YkXJ{#u7u(S^ z98zbZqHZq7*&7v`hSYyAY>wvdh3ez_`HYrG#noDI>d9!oJAt-VaM9kH8M;#4$&{>A zUzl)ra4#`9<6eh)#GAWK&djR;0Aru#e8a0(wUz77Fh&??tE9^G+~YDOtIIVogGhBM znjSG9)TYLE_u)6FUIJh!yuy)A8d2L1+?7t9D2#*4?inHlgKSBdQ0PK5?- ztDIZ7Bu!m3ZPwM5I56DIyv?patm)%}#y!tw=uiEr-1w`V{oGz>Sj+<=fR&mgPCbw#!0BL?)NA7UK+E(OvcMjf6z zE@EKGa1o<|cc7j>&(oX_Xd1)-v$e16ix^eT6L*LcsIQ!(jUP?YQNDoo_ z(`YqZFoDJxoI83;A}b&d`fpGq*dA#8F`$m7n_*8PWmYxEV(u-mh=bnpSJyoPv-E8x z5qo`R2zKg2BEj{zage6CwQ>>o9krcE$2+`!m8xzVYIU}&UK}klWxlJ+8UDlc1t;Ts zUH{7fwrymoRh8O&K=nBdov^OCyEo(w!yhdW$a$gLW7juSve;{ktpI_ zpsctu92h=`3-nrCT~ub-m$Iwj*3)eT-$kqRVpV(Qi; z-pNF*;M(|c2P?5Q@s4VYq$g4Q4cvXI*Pr5B`! zo@u2nWZlc}-1uZkl`;JqjN|V;h=}Q&8qfDy*k^wax6Bz0$F6k6oNjN##`o%E{MPRFZO%x zaA( zmG+RRfG_D!&?+;JnI9hS;BhonV6K19wZ@k?Zhfe{@IVbWmi7=|O+8ezB@r_t?=bWr z1tVqw9e4Co7(LE@>QBH5PAN?c6eu!>>1l9EnYk^?6w!SkMMnw&iP}8SK*LNEOThdb ze4qn0(9B`(2ul+sj48t$hp4zZU_gy zza}#Jx4|C%~AUWD>ys>!fN)IrOl?0W8hoO z)65s#SMH3C&exCSy@>zA9yZ>pm|vOeRMg&tDD$#<_7}xgP|YSOlqF1hcm$)E>((&a1%d}I|YUyUbJX*yQpoZlew$^VKZ z3K`l_2+mE|#68M9~R_a$R+G#o$F5*W%kTX)hYSxp~ua>wkmiE0^ ztS9OFSMcL3n`L(E`$a{ZpSd?b@Ld}~ja-j@S%2Ujt)Ez07+UnJ>-fHN;Y|MWe?jV3 zO{#D2``PTGiOe{uYn(f;ge6K%tTHVAjMT!vP$KoK9sH$}o86yn{B$lX5NAw1()py_ zQJzWYVQA4ej?aajv4iX<52CNz&z~1SAN~geXye&iZgqw$T=+mzQUr+L^y1xDaX*dw zChy+jevZ|-poPwOk7in_1&?ye(yaoW~YJK?252;1Pm^UdbkAji}0weZC`#&pPT z*7b1rx?I=4o2&AZYn-8HX~qb%PS2womzQb-PK@cZ-{kh|Zs&MZ&~U4{{rZJ3_wCmK z@2T&Q)AI{n8hG`MUv77Ub8VdA+WYhB?=ZY^U;Q`!tNNo}{RaMdD^>Dw$<}RVhMd)) zBTVh&GH2v9#(TKrJoBa~H{D)*c+1=xz)^CXJG0U>4g(QPtapj?&MUPALPKBl|1sApgKqm4f8Oo+qs;E7_iaChctuIQ}p%Eo5L&JN{y#% z{wyB%^1qnHFPQdxEqg7KAvZH8=t9G2pS+Rvwdca)*^)vp0}QK?uezP5%vT44hw;bu zwb2XS+ffXo*O^?(?&UGFFtM{MP()9@^Jf2`=*<+8A2xWCavgv0yXHtJRD{>@&l_NS{`VfL<9Bq@+FLvRR6`{mUn4DiHo|Ohp!{41)@_W zMIt5z6e4Go5Qv%j)2u(pO6M2EPj=>xEG(egO?a5y^q#gS1k{$hk1vQ{ugf|5)10|H zlD-Hs>Mav2qlm0dU{s-Lq!F8@`QnJaU=m5&b7X*SM##&Bm`DpEWz8irV_`R;0-g8V z&Ip_>ouHk4ua?=O)=K@L2WZN@K4E7;K`ebkRfLF&vVz1dk@R#rG|z?IQMqFFYXHN3 ziLpQ2fqO#*{Mbbnkq1`#VFOPA=iWdxRFfsJQ_>voPgQ=e~>P3NpwdQxe`MV^>l;P)?PSK{o!oc|sGn?yiGr1R0G z9Cb?``@;oz+TPt-xr>hA0sjjFlqkQ#+3@a3jfL9(aFh1X??21>5U9eRzK6|>36#HR zkUnacn&@`!K7!ui>W?&l&30qV=gub$ah!p)tT>jvf;)AahDh42LGSFztOi*A^H z)pDVJDdo?MMngBAHHC<78L}pAYKywok_;?en-!M-5q2v;M0=OGMkFWoq|d zLDQU<;CEWv6QgSDD?{<&kxq1VEN=UGtP?it(EOuGxGS|0>n41@%Jv_L82Jd&Tu?M z7we1U9qt-EEQbr@pg4=et9VK3t2pXond7|CW5#^rIkt*l!9m zW%cODuj68nxft_ic=!6k`0#M@-OqE4{e0@~Z0nnW)*GSPxE9OBxKS^g1i$YS4Z4`F z2U@q&nJ_e~))_or+stOIF>w^%+pN8BKs5C=R0?0K;2*~ceXYvsoKRXomFp+efC*Y| z_`o#=mbIF*+f6!*DXz}9SgkEqYum$x1s(O2JBxtU*Q z;>K*2B}JJzx*ddc(zA>X=KB3bq9NVY1lXL;OFV*QaAGigTi;51b8SJvnD(AyX-g!~ zfEgHS4i%Q>KFRMk0nhYx->&~&U4LRzzpl66aDcAc8~SxUib`~SYvlr}EJ!_8S!TNN zon}pTKfExraopw5Wl@9OTl-U~9~&waPHr0D;mdc#mw9A(hd}V#?`eFGxg?(P^?KuT zpYTBNEl8X#@^rj?pXrEm{(mw6Iaobx=0ZEtoz#;d*2bHiw`Let$fIG?FW#NC?^S!$ zpbD{0#1B8ur6$SVqT2_tB0>z&{^64p%7<#=IF&t;7LKG*uLEpS4I5!01eF|#Kj#!J z>0JWD_Du@FfLOOsfCq>E(R~0qxerR-@=Gl7O8mhu@gxsetL^+0FzK8UA6Rx(WjOiy z@cGwU*RHqkYgMJ9dtZs+_c4xcETU*M_1ntD{4TnxvLXr;^vuB7+dX;IEL8po>w0#5 z=1I90YSS}o*t|LCtI*f=nMWcv3B*%3G{#c5Vk|Qx%SpX7r0TxGH{9@({d8^<-RspoqJVzX8tz60sNEu}hc1EHUq|&x8QcKSVCBg-7g%2Ue zOy5fR{*?TcvR$iRCEFRL^K1UHQa<83_w`F;{^frA8>c z_N=23STz_JpEzQh^21fUPk%&DG$u_4bm%`eiVn4!YSlke z{nx2pH|3g>_C`s&B|RJZ7u1q>e#|>F5JMu~%>jkFofWG!a0{f|3`)q3{My;B^V|;Z zah?ldVX|axP>O45o3TIr*6oOmLChk^DshQFxGL0^X2&C1HJdn(4sF|~L#F4yA$>ru z=L6lIpP5&%Ck%p#zwXuWnQd640&pccS3 z8H#7V?{)^9XV6C-nv~a04wNV4cPMd@0p$-~=mTZXlSl++l^XvANQ%}5(FU8v`m~;; zUT#yr^jMq6+5c+>&4ST|YZs5kS_|8kHK|upkvOL{fj@{B4fZ?69~3Avz$VLnxN-^a z4Lb4ZE}2O-^B}ppiRms(jJE6tMB}42&avzL;^FL+awuS+^(PdyHz^DUYDDgtnaNKI z6BtyAFzKitR^}8m0nO1O&Z4Vpw(D*QuDSD8UZXv9-*?vCLhX=?o10mamj{1qqK^Y@ zKjk5P42wPkkbb>X9~Y{*dzbLnFe8c6-5E@r^b}%oxAT6KUHI8BVSyEc{mvc=Pz4*yO3H2xh1dD!S4YUR+=<>S{5HIGJs>vMUKD>j61jpis)4GNR zV&l&Qu>N{|?gPH?=eDKEuZVCrEp?O9&v3Y%lNu!xh;9Ov%b-G1EBhbbaE;lOO78CL zL(g0jS9nbrlJLu@!Q8}HT%^z8nS8EabT0Xc zYv2v}*%64}cpX1F(SSVfo5w0k%~B}2@8+9b^+m&|2BjzLb!`;nz)U4pTb&J^E<>Mq zg8S{<@AU4wQ;9wJ96j#5GF%|I`f>3kmu)iaS;GS};NH>7Wo6PyJdiojlbXCB|49Xj zkBzW`-Q9TzH5liuJs@VG%1X}vj++z#`G{D{Shq8q_h6%n_C~nmpyz+s4Y#Kn_Sg+~ zbJ!)W8(9HiK_ubrY_3l@v=I^98 z-*J|f8E&nl<|P9rTwP{h972|uo`nra5Pr}pYf){c0=BCwL@umQjgsNE#h zk#*Pr3l7PH7WMzov0Sa3K=qQfJF6La{zb2;X==*ClQ%I)ZA{A?=cWs|hI9eag1Ajs zPBC@Jqk5W}u$Yf~-4;-l;M@>f?Yw=ZHy@TWlSY`2>)$r>vD3^4NHO(0ioSdX=TCP& zRy*fY(Dd+2T)6WwNb_;;Y0Srhbpo_uA!M%hywLje^>)f9*LcI^$hFm()MNc8Wu~7N z#P~MokMwu=GbuAj`#u`G@6Pn*5ux368TC`9OfjmE2RC{!3n{fljh{M2D|*2i?O&t? z>2j{TpO#T$)#P$|)M(4XxT%~THJYZ7Xw`2}(;57&acU<4hU7eS%Ol;bs(^ex=?7G$ zbKezIXUlmAxZGMTHj5m9@K_b_SeS+J;>nFo7iN9?`bp!rMOR$Q<71Uwf{I=8Jc)`eS3{w zTmwI;w7)2bHaf#$)7gfVb8Djgka}XTN$w~=w>Z5jZX|%c~((!qb{Wme=W4!oA zuZ+Zqp*_z0RqpguVfMEI7s1G~%B<}3k>KBE{oZeE+Ku2b-DbcYGTH$1by`Lt=Nrcw z1BY#<`bX0kEd4meus8*Al!JJO=>}(oKpofq{=p)5X5%Bf57>ovA#$YQTcX-?Uve$9 zV|?Atxzjwf3ppM2TGFWF@mv*l4L`-Df(A>H>zZ@id%g##yZ(%>zQ2{_?v)4C&*!g0 z%U%aPRYnYXl&x?vb6Pnrg`io<5!dH16MZjK^g~i&D=(S-GjVEi%^UI@zpTGn%Wi7{ z2h29hwb=`KjySQ&x%6EX?lK-+(ka&nAhpg9%cMPvqgWs4k}(Na7Hs%xDlae%`O5Wj zwY8erH4LotvC+HP+Y=?vsLRHk-}qlz&K-3EBW^;}MSeEYylUGyn+lcGtsW8@MR^T; ze|@sMdYf6j7}#&FHU3!B^P^LgFNEWMfKE;FX|0tkxU$Q2vdrb=yT&9E#~yAJV#bfa zvY&S0V{DSruLVH+P+%GP%xZd`5}1-?$xNISSeC4!+TEK&t?T1Qx2*mSuL=@}+ml9& z4_kq@m$}Q7tYU-=sc`Jed`(`MI8H0w&VRsb87@Xp1()t^p|F5EQ%`3Kpv=>~E>H53 zo;5m~4A|lj=x%2g6DMH4Gc=#Z zs0uk3;F7Oy%d1#$hCImPRm=~8YC59vL{eJb$h>vLo1G;~nk z>XU;sb)bohhAd1%m#I!jl%}TCbp{~RSCs()Y;&xi> zb|(DRl-SGzN=W1|C3fh-EzyYglgpMrvK-)Ub2<5Mab3OEy0$A?^d}gsqDdimVf?)s zMj4LrxM=G7lcT|}XF0N^tRa9WVgpWsvE#Uil|_=zqfq|(_RP`IbVEQ%In%MNj`fbSs;!^DK@9 z5&J@@tC5gpjA-bNq^D9bJjz;p*gi=BvaU$={Vfa>x%X0X0To7rPGI5psemkwcu)4t znSuG~z}#!u`E;gm!>todzyYQJb|b{oQF6FfPNCz(vgf7?wC7)yc`?$j5fLGSYF%oYoLw1ud82lohPztS3%m4eObPVo1EWQqA2}=#)<;uG<;rr{d^CT zvz%iQShz$IEr;3MO)^qEC7cRKTjEc-im!*y$hDkYUuG2{CSCu*VhSV%M}k?SLK#4u zi+y2fWY6o!#71^TVRW53!bDu!tA0f32gOMpE{s@Tky(WuRh0_|=6}E`7>QCVyRl~k zTbMWVj&+fy$l%6YaMy)>(bR5`gV4+{+MkI0Y7KlV9inE)I*%bLqWmXU#AQLi0S2ibU!oJ*nI(Bv91UI%_!)g3MmuEm04P zo$&hVt(ha~5A#QVc4%(RYPuRoM$3s35D!_zsU+m%+m8T=H)42?EUw%M&QH(w`~o85`W}AeP|ZT@18sSO%v!+O3o?!4A({0_ME<88 zLd^wx{al6}CtLQF9Pt{+quAPoc;9&q`lRKtQ+i**#pR%wzwf z^h45zn{Jr4dwP<2EKR@mCDi4lWS9Qb&^`=S&OhxS%!duXmoiNoA-m6m#`s5};;iqB zH=b#c|Ksu;<8A@8&TylY9JuvO6EE2rZbHXg&>7b0BS!zw@T{-u7@IZ94wv2?`?%;G zB9!y+WFx1L(isjD>8guJV>nDSL4C>%qw;WWa!cx?55~FLjh)Z}k#Pf(}D&)_m2~`ToSr{=J6TvP&+#D$H?+3*yH_w5LI=NzA^(2q5|X#je668)$or zva*YW-~a-x-P|d1#zKJ+XzeiXjD5opo{DQ7El^&&)0^GnSs__6d?a~W^}I99h5>v6KI9T8xi*5wYj+n5SS<5CZ_c_2y!*N$R`G3{v6cgIymK!41Y9PZ_ixZR! zEh~*_LePR}9@lSm8ivk$>x`LbSjtwnEapiqH?fxP6ER*@^*HmueRYfUHf!U3ANFf8 z+aP3RZ;q^#_a`d7c|>I|MCERmsO+_Zd$suQu7XYWDGDN>bjmo)jx)Z0a@Sep^+O(T z>4*Dw4?URoL@^m63L-a*3 ztE1TH6n{=Bs$IXJ?g*pp*HX(TA1==M_+Yf> z;KO~DFcRo*yN&e`CldoQ@9ApLYH@BeVhCN%v+o!(g+mSnolR#VA~CC=VLp@$cK2^7 zyyEyWO$Oc6hYg#l2D$<9K3k)zb=HP>!hUL$Q9wxb`?NjKDn(k~{f=we1ud~J^0%NtW(#6gElDAlxm(a>&Gw{Qf@TXk&}0VMuFBhj z+^+WDg8WV$WDA;fOV5${TTnI*3;u6#sBa6}qb=xp4W4x@I0`vF!Pcr>Xp~U&D>X!6 z<-L5%yfi!0CzNMr3OtM}t^odD=bM=Xz~$ym(TwVJ#QYol`%A9)*=J7YEODtRSrT7x3|j06hAsi+I9cqoJR3m)vw zU>%Fg?EBB~`!Zpao20C4LpX09+VZp_g9-wz-`C$hgHE9BJ|5T)F45opjVH5wUFE>b z%mV(Je}Cys0x#hvhYsQ7jf2@<*c7n62*JzTGA(~DZ~3GQ?TtRYr?e26&6QhF&xVZf zf@T%9rszTLN#EFXB`-<*DB-7-?5^VC{A4f--ZRP`HoMD56pD+{0s z}+|cRy5!040gs#!=ywHb|e}|g>=i&pD*~lpca<) zyzqkc>J5MCTVz3}ej2bd**mRk#b-Ld{-fVb9n*>F#~dPLJvt+GTAj2-B~N$~PP2|F z5X*|6FIUZ((^VXU?hEm+X0DjA7&QsW-{%=?Zl^j3UNt#i`mzR1adYc#CBcsPF`~Im z60zpE=1SO^=S4*aQl6!vPwi9nDZUm<)I&F%K~(&eVTOupM*65Y%J=@$>CWf=`JF;0 zt{j%awKR_LU4CR~bOl!|jftbk2QCC-9L8>Aut$jGrXx~>Pp5ydf{{bgBVT+JYC(7F z&(jD{FMw~}7p7;*>@Rhu9dbpaQR5pc`sAZ7pOxu}z)Y0{r&P>G4C>NNDeO;Gs&N{5 zkn+c9*$*1Y45y$X-blY_RSzIOzQ`>lbaGQ8dCL;Z>+a1gTh!a9_`KlOi_LaD+BZnr z451jdN_m-+u04WFTO6zx7u+0u(M2v-cswgbvgOVRo&k4EG###r z1UJWz#DB{R8Hm_rF)!YvHwY|!^EdhNrxnC+6;d|;!b3{V&LESMyQSdS68au<0P@s2 ztMsLijB(t#|2Y?DB4Zmgt92@?K(q8^cpBW@L=**^4xR>+==VlvFr~~)%9RkzyL{-s zu!MKN&+(A)0QF(d zk$p66OgT$LT5z^8$cq$On_WnQTCL_IDFkG_{+Yekow6TP(H*pbJ4wfYws;Vq2mH_XLI*R;`d~2N9eUjsZXPQ%$Pcgs<%3|Uo_Jm8|9qw1ciztk; zdn*d^QO>E~WAEi|k9<*}MMvtM??yQVl-AWAXZK0&)mG;{u1vUUY@Bf8yhB{I;1X(d z&8}`{+-s)${v@7%4^~%s`23=>Ry_2A_qyn?1ivP4XSs8t2l6)Y9h{ZqYj8fa?6w*e zW>0{MJr~lo3q7ucBRcby-T-&|P zu-TdWOVlf8B3zsC&ihaIJ4w$dAo6ruuJlZeyzC2 zE|}emp=8n3O@ZZ`-Ful4MfJdsP0p#OyYqE63_z4UI27S9U&STW#E0OoT+8&2=2bm{ zG0_Lv_#nuh)Cm402*6l3+t$;3>kEN4d=v^u{6oz<-tgoz=SxH-klq*X!wQlmJnxE9 z-h}@=q;`8rC~$OOd5AolUF|(Z^6NkJX>%6ki5>7NlZHyiv${h1u^V8$uB&XMZ#8g~ zD{0P3u98}~KxedgNAs?WtHm9$q8l)AG$30)r$wv@;fC&8zA21|qC_OzvRX>@Y~uVe zFK5mh^JWXDZnTYOK5tXRpMK9rH~?VB+&~ zU$?hJ>nt!USkx= zd|J=npw`bA{b^0!0Fn0bE18Jp3cnHz3bJ8g-&o;STx@tkFk=j^?rld4;0Kg(`}f>E zEs5k06#^^&F^~irmfXZ2xY?s<){;GK&1dc>Qr%$A^wmsS$fLHpTU@hq%yDL86H%FP zzcIHTVTf8u-}6&>E&(bHkukv-ks`y1Ya#V<;`mSYsXehrRw76W@`GG(o%(P4eeH4& zT)Cd2P~GVKbB>od%Hu+feW*z|?VUsSSY?a)WtW_DzPE!K_7lq#3R4^+#Ya-0z!|_A z)QzC&vWQfFx`|tZSF{S?Es}Q=$b0C@GgN{ZYWw-OnX&xkN zovvfFa*>8S2C{sBL>aH6NoDuzW2qJ2pLa_>v~XGeeV#w6GNT~-LJcDy z{M8pXTJ{<->sPL|CpRbm)ZDVSIq@D=xNVGthzo>}(pYsz1Suigh1*)NRAa1d+O5C0#N+BiuBomjc5Qofe7KCG%{UaTFTxwkESq1A^9DLLIDvV2 zvRF`twtwdk`(NfemN7j4zK7hgn*a47cPBcZemagxgo=5-vUNz>npAB=fSyTp{z-zW zzL|Be@VCn|(JgpSY=p4aSNOM{>p{iWic@`re0SQ?WWfVUO+sY}u4eY5%wM(LqKSpL zli9?a$cD#Lchq$q#S{=f3u#Isr<*#h2wr3Mu{s$Iidwt@my1v&xaBr-GQGw*YJaz~ z9hnVL``uXepCZBc0YPZmDQ@RX(EX?3bBCHixs z)&Ha68DA|nUZBi-Ho8+>rO*C;w_XK?3z7P=T4+`G1A|trm8wf-+GbZqIx01pS@f1^VYp=vT@x+*CJq`ZHS68Xv9fDg z_CtCfwFi(mpgnrZtlWFx9Utu5LRk==kq04X+Gn8tf^|aOK7#M5Ui#?qzU%$x#gce%FM=r%VB@; z+!TLHw)x%B>W^DrAOxu<8mPy6rX35q^ClYCh*5jF)sbf25SnS?sxcS`S~sW>@NJI1 zjB&7Ybvrgt(LFqJMhuJu>NiuD^B-PCihQrIY_~RJePGjS%8fN${N>gcknW%p>m$|c z%{3MZ3{;q(t7Y~PS&S&}tSl9ZwOaoY+~TBKmk!5I`InaPzNX?M<-lBG1^2+4CD)Mvkpxyc)7u*OZdV>OjIX79eVp0RvcLd zjsEX#vyXO;;+QPMBRhWrKU@WPz7~)1!WiUOj{N#fYGqS@(yu=Ok;!QRom*A+R_Vmr zsN1~R*F)IUC(SUrBj(*8c~0~AcTe*eXv0rCXNkTXLyHs&pE4#l;-j+sTwH%KWpX0B zr=j>GH=>wcJjKT$-5QtZmH$9q3oN&W&1l;YXcJMIk=$DxX#D|Kfn|#%_aW}ZqseE) zp%w&MF@W-|A4v)mR z_7OQG?`;sFe1lwj_!{2bPyIC;e&S%3r$Fme-sarOEp8A<%ti@gF;eV|Rb418x`M<5 zttV3e&5;pGf6CAZ{(AzE{Rv40KW8}$eNQo!bl2D3b$mR6&SyFQR`c)iDB+3d6Ib)W za_66v#)I_26EM)}fu^+_R7G#K+Dau`sGQ5kxfDUooame4r#|j<_@6>D`1Emo`quXu z{fXr?qT*1<{m%acyinQ&MeZU$DlJu`kO+TbtC6iY~grwz^m25EyoK+!kRV^KNyZY1#+ev%d3la_Jm0UC-(F3X#on{#-jaC;(mO|tHJ6qf&wf^>P35N%$ zYaVrZTBmrWy>JIza}#uoT9g#6Lf_=-p%Bbb++ zQI%xxA@zYt9|o42%!@Npbws!Aj*pm;T;(PxDrvCyWQc~_ojA;Y7B2-X^M-LQLST89 zf=!OpCnG5cIxN#?xf0#VpvWiSByq(fU8!kSty+J)M~GABRkpMHS&!v+RIe9?({V4&?o1F z<7r4pB}9k@>S72yoyv2ALgNwgNBHGdQcgM;04RFyY+#Fs+K-4f$H>x*k%6@7`RX!M zS^(ZF!dD{ZKs;t66dC0Uju8~-TqrWi|L%mpeW*NhJQv}BYyoHe-LT0|Qo^vwZd9pr z!BG-3IOtQtxH|j7;dxZur++#7Kq-?75$shbkP~Y?`@mIacvP@$2i17V{v|?3?LSG& zS0hO=WZB=J$%iIC!^idP61a+feFZC{T`PlW|N7Dx#%K7<1Sx92z9MrJIPFFJhE2pT zLUwGab6bV_%=cu{)8 zDq&45V#bze=}uilV8)~3-)A}_+?N#l-q79Io-bn^pgvSLRCtT*%LFIo@=l#ht)6_d ze<-)*bg`o4tBc0fNcV(jsX3!wR9j1ZWtQcfPGez|d!_IN8zA5c&rCeZAeWdyrV@+l z(-Xmuk-O%bg}unRSsz1U-u!PvVoahb%4>c^Vw@SN#9#SF#N7dQi<}KdnqkKrr+oVsB4=nho5)q=@IRZDPPS(QQCzhX>KF{bt3Rt5}yaj87KxO@-1ZRY>Y>GRm1+ z4$_+n;b*;2bDnZ$v^gK#j^MT5;d|`|?yaSZ&J}+hhjUhXY8U9X!=PIi=(f#8x1XSr z<0Va29|F2b`w}tAY(et4sJ%8;y~fB-I!}JW_~OFEC^&D9cjIW5_pIve)|OAl?(Pvw zA~^Ou!bQ5S$hsC?+UtRPo&uAi)tKx$W5MmQzyv&s(C~N=A{2LoSOY-%||yqH0i`Q=2M^a9&)Zb$#o zVm9DXMo?j9ztm(75MtJjGW)#4s{-@NF-acu>KI-b8t}ix*sDa%nZw;fHIYM1XEa$& zkz{Y_tivHsnk#R<&nz`qcVLt}Of?yld~}d|RqEXDT{%uGS3Mmj+sVjjb480p$%YLx z-epjk>v%7&x=I8CDf4~fRa1}{A5DD&&FDne)1p3g2E5Z!!i3<%(o>fLfp!Cdr7VpV z+KlcKwdz@J2*msq1@Q`KpEJkMzNOCg`9=Z0;|JdTMRy9uBfHFd^=B0Y_QxACT{rv` z3q#9u+A*QDSj@-+E~<+LQY%!+u)jvwu-5*7%y?}p4}Ht%gc^Faqd5CkDiDLA5Y;!) z!vVGihfj+Q`1SQv?`wBIqTr%~@}7&FN4+W*QAKHHB)obJy((4U(R=}z$7LRt?a#U{ zb$Uk70}}g{#fOpDPfTU0^J{HYGUwY35V383u`abvnA7|{1 zasvP$*z|_oylBj6R^`eL_gt6zRU7QeWx9(Pko2I#(DBEK5{13kPXHO z@mHFN{QNDO;X`VK88Vv~K7@>UbM(M2dGVy1z5Ff8Xo{0McrUTcsPz$@r1<328&M3S z%Vt)w@5)|rNEnrZn3c>azM7AeBd`x4V}IW)Os{c1Vqt31A^zfPaCbtNILZ0@Q%{1EEj{ugL@vd&%d<>=d+K~Uvr|0TZ zwbkf!4A`BOcyYB0xcF2cnvVMrP0kf`Qi05J9K|LR$M|8 zG2QhnNT}F8Ic56vbvdn?@6YFjn|tvcMaW@jX0ZDCu^kuy@UeNQ+$>mMsn=uQn zzw^v|ts~sW`>2*Idx0nZ#&5N3^f)0DC7ni5f<@vg{Es_9x@I4R-rvu%EgzQIp?~H%l?WYqd3~nbJvxZ@L#*7@&(9K zJ0N5Q{LoM*yW~s9-|SH(M21~ZB(gco{|=$k%PF+lEE5zo7?YGBYX0&Z1Y0X ztiY7YX@ghsw?44^nACU3rr8kOHlsdJ-_G}sM{N{G_SDr8?31wm9mZaxG*j+9Vt8yh z49^8RDX1J-oiskI5qwaluGXjU!viwis`*T6R)=`Xzp2~(3JFps206rW$9?hwz4Km^ zop9(Be5v9`o4U)qy0_~q)#TQ1U7J|0ctDg>1>+N21NS}8g|^_A?{PQqJu}EVrO6Gx z24lH~oz-tZ;N0mPsa;1O{K)%Y6dx#^)=s#Stl>`h9Cy5QY>@N5S?u;yh%YuD2!bX41^O5J6hB5*y7q@obh1zq762`oKbQHli7R-fxt`Lz~e@Ulkw7-!l`FmFzG*6?@`F zXUkvYb#c%v>jPZ6M$?Nv`&ew&S8rt&`A*(iG&o?)n{=$xxrw*h>K}KSxN@^voh*X& z>pz)&zMU?KOlgPTgs`*Nxvr|uF5Tx(fG#9rM@;lbz%^GG;$vl-EUU=aS`>kZp@obV zt}(+8KlH61F0nFZ7S}9*@2ZwP;!W;+))i7x@!#Eeabf0m3(%zM>q_}@w(7+K#OOjto1^O#f0?bN;|$k^D@B*@KJ(<&tY#6 z=R&vFA_rgucITXZw94#+!aiLywZpWJXtyLE-KR`?Kia{$6grj(It%YUbb@8CfrXhJ zn31eKBT=ozD8I)K{d3Bc_3D^NYCP5EuyM$Y)c6ekA#2bFWZqIuXT)$-3bsd#Rn^Z` zk3lb%D!edV++cv49#N;h&H9J-KZ)Pq*3|8~F+pv9B(e)~gHKI@r|XYnmppY;4wR&y zUa$moblp*Z%T>-D^>J>j^mm)JIVqs_0qzC$`|iq_hTBaVG!M*vz7|jaj)n}lfpI`_=#QA9-MT5O=?90ydkH^Ub zd<`y+(cs_X$LqW~^e5rqx*`pl8+oP~?E^>L_U1C zO8&t8f_0j;{Oo70{Ka%G5eUG7oRgcYJT949?jcvJNyqEv&Gf{snz8SrI<2tA|Ez^- z2_s1y;>0#(vpw&qGRP0{5!;O8-~BG6e6NbAJ+aDt{{xc?J03FhZ=SajXDS3}nkgXq zg>$LsSFJ0Zfeh1}N!n(#2B)nS1<4$)!gFLSd+8+_T+IgNWp#K#tKhPHiub;F&eFr(MaxDBQCHnSp(l}jKPs?mvh@$n(jeDbk~9p=j?BM&>?m^ zml5_1`+ekx{u7#KGP+d|3si<@D~4gbyp4tQ?TG*#?z%t zOXll;Sg8xjGPhVMP9@~@%T#G3SU|t*ZJFcL7t5aJcRv-3koJoc3C$12VVg00Gw?Af zPN|bLzz`5^EOYoEkAvmvWT`r-qZ~(DsmYX6&7+9}c*V3cyycE^lY}A+nCNZm3iH^# zON?4SLCtT`agS0M+NPhJCb|qCRQr`h;d1�UWsOO*%Ev8BB>DISrZaPj$OL#O*z$ zQZRa|oB5$v2kSmLB-H(B=5$8OoX*G~b*P>OFvOtBD9fG#;?nsO4M4a!((NW`?R&{B zQW_10N&{_=A{}OQ+L4BrIAWgx;j+NMhU_~YhU5-MEdKgQ8X}pa*eVFQWp#-GWpNLZ zVkvbYU5cY*f=|smI?$}rD2p;;qw_I8{;1`k&$*r{q-iEp2XYRLaszfpQxi&A@kI4; z9Osaz&cbw`@t)Ho-Rr#dZyfn_^d|m%E}9Ff``7Osz1f)G0F*$Fsn&aJn)9x`Haz<1 z`W~w?Addc_h#~*2sk8x7DH^MGw&n7lh#?UrV zJdjxf_ValTJ}eDupGDxwo9U9wO_Nz>_~aLo^;l#eTuNZw@ zo5T2AegB!OPcy8wILx_>{!u&hF$M83wF-aTcvxTf+z`Ln|KbSeBz^HhXI+`*2-d{R z6>$KlO&hee*4Vd~1!tGVkHF1YW?%WnFwAKgrAk$X` zgXq&w?>{UbKw&PM&UG49L!8_ z6v}9xSBe{uclMx2ip>*Nq&rt$oJoq*-a?lOxnh)F7Vb-sU4aM~ zNzcJvjSKJVC{BxGwiC7gOnS#?`dk>TPKoEP<5|^Rm&;k38xpo~#x@5voh|Je%=>9a z#L~q_SoW*V5SAVy43fo{t?Ertdm~Xt&Te+NSh|5$K8Nqu!|F{8(D@_JxkJfnd}X#e zFYzFfzP&US+^Ou|FweROqNilcBtmONgK=(Jc{dZ=qr;fx}YQz5F zw&j&Gb2-TL*Zq!0HR=5HG>EPxpYP?f#OZ1x68u1!VCiOzb>F~l40cTHwP?g`mD+j& zh8pq$nGaks^~DN$dV#f@`T*3KCNys%z8a*D97P4V zaRY8;(crsxz9CR>zgwQO=89%?Ff}j$5OH~Vz$)cV@9~M3x1QmmNy?EQHeX~SZLmZS!0^0kfJMjC5Zu)+C77OhW3~^Y;O>L`l38!4j-J2!M%D~bfR<2|3 z09iA(d~PLo^jbyul(L#oso+BY66qp)QLxR|ZqMp)t~HbVnf6Lt&R%lR#c(j*yE>mr z`U(>(;~GZPr3X+FgGs#u0{4vo{E^^41Fb{2h^B8XjS*0zIGaz|{UYhF_nHaw_ixbI zO5bOyq}$3vquOKk=bE@cN`gBs_`Hf%zCyGbpz=%xL)h`l=&{Am6dm;dna2Mr_| z`8@ow?BYFEs`vwo4}u^0`16sEKh*m{ulv3y8vIzbsd`9RA}fHW-S_}#;2s}|aPNiC zni`|Q-FLof*ODB#47hWQh`kR< z4~&{wdypUp0%>FGHniue$_l3y{4lFJUHl~%y&O&7{NH3Q6T15q*&mw)B;{4BhQp?q zn=fb(>N8aWVN|g>V5mDYB2R|CJrB|PDA0C5>nxg-hrR zmlYUqE!Zb`rx5>Y_=jjN!LOq;T*bt56t(y#l}{D+498%5fc-Q(a#uRi$LrWb#0ngm z9r<_jls1GwIfg8hJDr4_@%_~15HtA)y3Xgn!wx2gX@mf)dY}LZwi;|3`~K4vRO!@p ziG$c?jNj5kPZ#Ak#XD4-h?T&?-%v1WpWP!)=O2p9#D#6*kvO#;*w?Iq?MdhTADf3 zO)Aften987*puk;AnRwnU{?H`Flm3Y@U*#c)CYS5_bGJT@HS*x67`q^gb4NE^f8<~ z*E-{#+|!r#^@1 ze-xk{Kes#)N?%mr>|H+&DD4s?s|3kPlCPsy3wdg_TGuaP>{rBFb~*ne6`A7f$U=Nu zxfFY++~BL&6&452`euT42Tzl!>~GVkGe%I8(x=9`*67#7`Pdhhd-`@|FhJAS&&dHs z!x`tRrPG$#Pws054-M|8FiYNK-tPgr9ilIK*k+;Mh6{OAZWxFsp_D^-!A#zqA-+LJ=- zLuVIc;F-FdQ&;PYNj#-obt#*0Q8f7B>>&}dvT+9Pa&wNYmL*y2Ld{{6ui=&*g<)aG zMrZzX)Jo4*w$QbL_!0KR5ve*@)`{f+1q7N{!EZ%FE1u{tQec5`vB+i_+5^(GFLF{l-;2JzV76Yv4ipob!y86XctQH? zT~Wz4!AM#B{7CS_#PA53wq&>zzH)kL4=GYOC^`(A4Nt@Y3p|fjua8xC8UFbNXYe** z(XlFBU5>G>4PzMZxpaluP{S~d|{c9>Uwle0EgzK?bpIvbUHhSAAR zsxUBD7;$K^CZ%Q06pS5aP|C94JOLHg^JuDhnkQv8i(Ts@cjmCgm9E~f+qvjyp~KT} zGeGBJXe9fUv9I=DLzdQ1qnI_Q0M3@sfl->vAN}#;Z2D6Aw9)y&DuLkka(AmJH|vxY zL=dfpfFh+ikH9IW&PtE`O3Wp28$Of`AT^!&H{n!j3+l|F8dSLNGb1mSx$?1lOiTsA zF0AVh9UUM93Wc8H9GzvG>K8RPIzQZ|{b(YA>8R?Oc*zvZ1Zk@*xGKf{&0PF+nFc?j z!zBc!yN5v`DTtnF=qFYR9GJs;xQ2DB;n){5g%_JC#KKhPZ%4e?=oFZfUJ#3`i@fb9 zqAc_XMBk_+X;_S)|$ssOZUVn-Z~)?$vA} z2yS$)@9W9M&6NkP!> zKTjUY`4iZ%Je=C|Cc}5bq4%0_Xv~x6x%?`CTB$iP1%|%v)Tt|3=?Z7P&BX9E8g%hY zIdR_X1bO#p&;8xOgOAx?#ND92np^6u5T>N&h4=?mo>!ZiH=?u7@Lz5%-qvEqv7bKU zBz&YsqeSd*N_TH2`y9Hxiz}RWV#cO4%-1KW16QuiU+N=D?W2 z&a$tl#%;M&sI0R9DO!K1$NmXN6o9C7^?{_PfC}^W>%97A9Js!V{&jujs!v#Yh`g3Y z*o{@eDODVGLVg1)I3+Y|(CwVVx_0(JewK%3+hWW?FVQl$jI6JzAOZ&Ynstn*T_|R za;a*`LkXIiUCzG>{#CJTr@`50JL_un^EAt~z?q_+v3(tCr5GoQ zA9gXdietj08n?(9|Dp)+=s#XVPptF=D&y4Ll$$qZpY!+-GV+`To;0&rQqjxNq+{1< z18R(s;~r%*3YLnf-J|%;ZpVRR#h`*X7t-ezTmT-pw=m~Yp!_RG;S2xD-W#zSa0bYo z#$=)1u=gmN#MS5*BI(n_~8L;t-!(%Z%NRP3tsl8Y;*aoUh6Fkva}*HjWM;Uk%~#G%;{T8?FW}KAsv4$ z;kZGlTedxtY)3KKG3)Iy?Q5Sb%&87t{Gh%(&RQO0=w|U{D550gUHS*fD2M*R=(H@M zZgcq6ys*7kHwVbu+Z0Z&FrgfYOWCd9_3K<-|8$qvcNu+PYk2)SI4E)Z2;=3>bB`O3 z217eUl1@j&*9%tJf91WxyTKH3_gj{hpKlnxnvP2D3MZe|IxS3amSTJ2M9qlF&$MhC zp~G#`0BXH3!#Qq((Jjz`Ox}dUXky>@2Rn`|{t8Et#W&HSJLq-4DWuK#m;=c<{l}g! z=S+A?UGkXhqm3|OB!>-$im9YG=I&fcVCu7R3xjDFUx$!!K*I>*GnQwDO6eNUQ~yXGHxMTFL0luebJ7vn8-!) z7pa_Nh%qulc*V#9GSZ|+uHFbiu_sqJzgnsH=t)aHx_L65TW^~3lPm0RHYeY04zCt5 zOn%;siUPXN$}~TA8M|Y#zE?~8FsisY8(QOooc*>H7W*RlBvMksPpUA5Y|5i zN_cU|t{bt%fs<^Ejz8zN$waPXI1suyxuf~q=0Mv{qiMVsK?bBlVhEMSTsgs`FX5tY zy91BVz{1m!BS;GNg693#e3khNkuVGHARf7(V0PVtJBFHzbF2k-l$oms)38 zSX-S!l#46u3C*r6*hQ*@&#SB=CU<<{>@S-ZhNy)=8`w&op7uk(i+9v zXS`LOU`5ZtSExi!CPRIxPyGjN>3{D})PEKr=V%alBFIdoKgMyc%K7;YA(&B>iUdH5 z=0HS@N;;2_Tt`Iz;+1dlnLfXiyBD3%f9@--!4K|hw&|lXp1NCl0LTkEBRecCm7?g} z=J+AZzjGl=GE)jToU_*vBw^n$BE03jaLZo`8^&bGKP+Zt<6y(AKv=EuGs^=D1?|Xl z{DCylMOQKR+OM@&ySjIA1xzOrQI~UUQ2pQLYKI@IY~hQ8C|1g&Y1jH7o#YK;r6=~w zyQ*R0#{&1vV9mHWFe+hPl*3{oPslYCKM^fdd|KI}r_X5d}XwG#t zcq8gUa+C&ddRX<#iWH*J`9kBr-7akv~(y7rCLXq*IP<*0PG1(3| z2;&Ro?fIm>ZEO_EE_z=TAK2RC>t#lKfgy1twZAinn-_CO2=$b**!*(uokY3Zt4(^< z?>{4t_21hY#o15O-rmIC?gFybg~>I4@Bs;*0Om=TSt8t4sqbSlqiM-@dF7eS)&R?lBk6H>wlzspHa{*W@zAH+9QS- zp5Qll4rfZ7)7rg)b1g&rYyEyYYo5^?dTb8}mV9xoaQ44=iNBpHDGqjK1|Z(IwU`ek zhf+5VwI__|zmwls#wa98@tfPUZ)ClOAhZ2;@*697Sj9tr`$|^vu!e_tPiu8Gy{UQL z*UlZvqoT(mTD`dPkETl-9mQ?-n>=o?7cFYs$M%g-m$MwPh4;9}+=iYM9UYtHJdR^! zULiJjg{fHcgpe$2x7E{X9(f!b186mckcAisPqo=+SZGe`&4MNhi;{0mLa&ObScUGR z0-g8RmmAXI;_S!`-;BUQ?9waCC{A28m|MtT)sz9$kRAD53M!$S#7$H1VXb6ZHsUDz zL5+wH&L#AMuEK9syQ!CK&TfQ+ijb=zJpJ`We}4w#M!uo`a~p zT?c-OKd(kFJt-6^`hzrKHEaPKX^fY1JL zYlHw5?o1``a%TjR$10ZqJotfwNwE9qBXa=>#8+n%XEM7Yry{vz8?1g=dSt?V;zvY+ zM`AFOD7yxI_?lTCNKThBSqbQbzySAX7=?+hjUs@5WQWlwZgRe5I)truhBQj3Pm5N9 zFhF8smWHn3Ta2A3(bGc_BBo$!S>rq|^8(8DUKGF~>YoNfnvH)!&YtA8aL~QVaH|cCIZaVfq49DGA8mrzCVc^O>G$LXT zw#E;~Q#HFjlI%c?|NE@>{17ffI*{L_ERa7P`WR1@eIv>v=F_?DCj{Kschy>WG01M6 z9=gjP8ccYfZU7)QP3TMly?EJe@O$yhnZ`go1vny$hFwJf$`#T3{=#sbG5V>3E7v0Xn~R>){<}ZT+XsK} z=&q4+A3He2qC;9?eKVJL zpTfbKj!j={_Dkk%uR&PE4k2tmkX;%U9;hbb|9tG^`~vV1KJ3@*fZY&+Myu$Gkn=Yq z&7;3;U@OvlgR=sSs~dsYQ=g1_#58aCWu$RPe7!G?`+RcA%)j*M?TiwnC*KX=?>`k~ zF`BP`;RbNp7^pd%?~h+IZUC0OofABa8^8&Z_HhH)?YjX~`GDS5(`wpBBkEJ}AR>$HjjI{`%7xi!=?w=t*28)<4kacH4GrfDE{m#PC~EEM5@{D&q$ZJ_sXlru3}-BHi>{EAxiFhV4! z3^Kz+aK9TxdM*nfFPT(yWKGZs=%lu{%v=W>7aDk;)ws~WbBxuv(7}+IZ=MiF12huWT^^ga;ufkF`XIp+x`DU_%Ih0^ON((U z;N0Nb+$eBv@NI4s_GQs^gIAH)-_bM#8H|8^ri>C98Mdk{5L;;Zgi+AD1z35t0? z&pg(P`9erNs8ndMqlQl&xVZa_0ja3HL{z|5gDjXc2ZWRUh-xshW;d| zA_xOpSh6U4-YNXgL7P>wD0kj*{Lh~^w6f&7z`Q~HFPKM$m=C-Ai;5|>c{to6id@b9 z57lQzLKlJfRGe4tNX3Wq9eg;>;KM6~$I6)7gGg|oE9Br+)naaftCl>|BGmL?dCA;t zahT9JY{YyH2Wy|CkwqNq&$6?|t-0BU=P@ra-|=ZES7qv88bo0#H?xzian5Rvwd-lN ztI6PV=-J+PvO}fYYeW8u?X}L!;6=)UZe2Lm#icbT( z^qm6l4*pM9=uV*g#C>5JBd-pstY=|tNQizR7$hkZJV|uqvmW}S5z8vuXN`E^&5?b* zPIe(rTNS#x4Jlc2E33`Nx@bZEeNFovzXp)`APyhz8$<^OoRh0has4^TXWu{#OBgco zO8oC~k7)b5oLD`eaj|}`PqD@jm2!x+yk@LTqSJ}bVIheNQ%zkc_Aa0Q)J2aCv15H# zcB@wjcNeK3J}0LepiK+fydg?vScic>kzr1g8wL8ivkq4yL_2=txl+;-yWtIEw!Cc;#?lU^+$NuOD{UAPv{#FFb<8?XR)JD-{ zFjuE0zbvTgr9t-Va23v0!1sq3C>o3pTmpO<(~eH1oi!6c$cZgg@{ zfGrFzHR-p!+~3JTF>VW*)8m(JiCSzudrx9f({g>4Tny(T%wj=rQ4xsG0S~SS=spS) zY+nldR$YL{3;CQ2pU3v>>&|+9n~c&CF?5@S9KeDHqn6Tur3g|;67a|36-Cl-aZ%f@ zzK(NhFG)&`U6Q-yb}It=RJ*m@-qNauj7bZ%?#=M8>15y7lWBM095NuZza<#Wh;0ej zJ3@9#?8US(4gT^mY8ZQaXrC^c;9qcb@6YB6r@nWq{_+N7 z`2TV;&`gLO%3Crn6zj=ba;7z#rF>$`?{7x*%xM$*C_6s**eGj-s8( zU3LeNXTa<#S*vf-MK$7>RCuvY3#8(aR9TtGx{WHU?93LCT_k^YY*Rrbxkpz~;MLGI ztha{P!Ql&Xo0sE>;eWCN*N?rQj^wnugTh^Y#5S^4i_LkbPznsO@CK-Q#f|GxP zoYVY5QkV;B!>mlrb(8#%f~SO#WD@Zp+L7GnRRg({=3mk|g_iCt=N#F!SJRd>u|w)d z-XgvqlfqocN?NbKy4Lf;{DQwtsuj~cfK6`*)mYWyYg9G)Vbx`Izcu0zIh0++8qu34gnR&Z>))5NFSAM~>Elg1Hs2-F~rbIbve3VYQL7gR9S#YhviqlpYe0Wu?Hs7u4 ziw`9a_u_-#LHuqQq>K2)QO`vmwuiD8UVh%N_E1jzo8eQ)r9x=N z3hn^klACkq&y&tkIgVqZxkTTRZO_a0ufH?Pr{20e&4;$2Xj|(?WDD3~XRavPY|qP$ zmvPmSQI>O4Pu9}x>|}dIzs)Mz3fNn_vjy^PAv4lY%1}d$wY57x1Q^sfUh=QsY87plcRtqdwDV4G zB)JI>qntaJ28(|)rh(-iJsDS%iX3x*Wxr7If}!1+{68+}fA|GhhRktqbfw^&qQap8{Fc`gt}%!0Ncm(tIHe z&s5kP4UJnr&IiHOKc?#m5Y!i7ex!jZm|Q;Y(~9NiokIfgNGv(ffBzlArum!h9FrSr zeJ_`k^r6mvjqB+0!h|honXvDF^mY> zK^e7`UbCMrKj+ZS`K~J#MFL0B=(?#*rUb&)!yFtH;oQ2rsJ$86S$EHEQF0dM&;;~$ydQC zev}qPW#mvtN2zb>zg_Cj*YWW}*$agM5qb?}4B4u$y$MRdUP8@{@98GDr>mzAadapN zAFoQ&ZMRF?Wdsj?m=#I|>#a9bLWL>b$Q<7E_ajqvGlce^A#lV&rTz`Uq9#6`}`Q$1P zT|j$<6ENnFPcIh!x=w<_a?b753Zv_FG{L?3Dja=qpIp6Gi`MZ%ajnvx`q847h0DSU zVKPOb=G2i7+tp}Okb2e6e?xp<-jEp)7#6&m+dRc^_X`aypOSRM$HsqksyO`(MT10-+jjLbuL!9{Lk)^OLCVm)0lc^@3cxg7my0)5~db5 z+)0C#RSe;l0<>uk)gTYr!%hgGYqQLXz2wXs(fdvYe96jC zW6!@u)_ZX6K>jbipZ^#sxcfJr`|rB~4?_{Z5_zNAK4iC9nqD_`n9sidp4C%^`K*i= zlW)sRpL~v<>2L?)#f;`qGpW@9W!?#6fpem&SzBWm@VTAy%ht@|%(t@LXBx>M_mXZ3}^a8v6oZmlE!i(2=CdniqT zz`Nj+K%oBUwT9hVH<>rS5&|o|S|4y~9d$&lLrq^tyS3i_U(`CqtF_pvwd2gb5OCo7 z$=4hl$p0^D{r7V&1pWqg3k2pKQLE@b!K~-pS~r?Ez7hgI@oJSdBejk^qE@G`3Aff; z|BG5Juh#KSt((X8g@ATEP2^qS)_UxJQR_d~xe(Zc%bWDI?uc6T){)5jnpQJS{DL;MN2Laxc!J) z9ejPzt#!S5<0~QXL$B85PObSz)aqc?b#AS5{)<}6y;{dPwQl@cDg?mP61TpdW<4$l zDkSu|^@p9Meh_ycicN8goqN3SQ$lws_OMrMrzuwI78{sa>^861uT8N^x7a&avAo(Q zd&QQTVzb<0e@ZPj+AB886uaCl_DE{6p6A^mj5o!;=@z>^wb%}?nBNqubBk4^7WL#ad0VbaxpXJT7IVS9`^NXo{7(#df9^JKrld&lEe)E%xiwVne)Q zm8RGQZn34Q#oqgq3y@Pyu}9rvvr>z-c*PE9>5+cy78{>h><3=4*G#cFE_wE+7Mtr8 zTWyLBb$4=wHN>0xsa~Q|uwP*bh^Seg2#~(o$3GO}E&*)MBrC z#fIx*g45g73eaGM2%{64J|(F~2m0O@^y_&a$ro6E&3xT+_Q5xC=rU_zo0{pqmt5n% z_lkLMjq~1V-g`e!c~8!-(e1S#`QBa5dmlyJ_HNbh<$b8@g&X>LUJ4BRd&3EvV&l(r zh~<*hVtdxPz>#BkSla%xoMM-!7F+8TJ0SMxMBZa=v2#+3ea|b_X^IUMX-YV??9^hn zc*UMJ#cpr#uI=oP!l6#I=^?4i_R``5Z7J&?xEXML{Yke zZ&Qoqdc`g_#SXZ|?oBPW7v~bH25C<>#d_Rg*QOTR=oLfFD~+C1=*&QIYOx=A#db4t zicNBh4NWap?-l!lDK^_J_CD4TZ=_XTF`dUVk$0zCtSzDAy%~tepv5u>q78 z;Yeen&nPtO#f0;DQw}#Jyd@kqXzM`23zv7oQ}b)561i zReb9C{D#lFd`3D6j=a@R9h?*&i zs5!DPJW37FM5*kAACjP`K;>Uj?28rqqSCRUDxWf*kJv_xKrOqY8g`=rjC`&YS zmsz4K89BM!8~Bo>BW^x%Q7Jn4C@~VDy{u)Y%kSM`SjWCu8!E|}R38#oX*um-b=vZZe4HH4^EZ7XoeEVZ+4j2@OtW{1 z){0L4=hxE7Y1xs)<(cJnoBGXnCvYfuH~GW6Uy$-xTep){tBd0HF14+AiR$>_WMO`#E$i77-zrc07%f76w@oEaO6ACFHnE#P&{S(QZSo=ts; zvP`X-GfGVJex-dpJ2vja* z*xxyy(ewgTF4>5F&%!%?+{(N8=61?pO_T5pM9k8vYtt5f_)Jv$7r z-KR5o9jwJMrvGZvu(9W^>9XyS!EkG9FE|;TF3uB7t0ZVSNVmN{E8S=E^i;-g7*iAaQ*<_7 zSz?X|Jzx0^`B^`vAhbU12lA63o6v@6of+gzYj(FcKJ61B)6ttnPn>csvgna)Y(#CW zC#`-IG-5L+Muj*Nd>H>X)#vd41v#RqXP`h~zd&J|TFIe}4ivVjK~X_BzYa6#3xz8a zJkgN`$(IHC@rBI3kP7H4-IoI?wQp2`%x`ri|gOW1)&uWK$`$-_rgB?nJlEk3hzDTeDw_WW1_w#3of~4@tftp4Z8?j2_9p z1c8W*-Qr|jf+&d7gOC;Jbx=^(br(?cuXVd=NdjZBS$r|wqvWXm1l~6yS_<-WlQHBb zi%&HlOm;Wb@R`G>F8=f?nY+XfR_iI$$#1u+lYb7D#BU*B;3u7__Xj%n=d;)xk-MJTEZ~l@LzP*@FVf^+2E53du_u~Jf zdm+xG;xmfPQ5a}FzAuiBG3fc@z`U%RMBl{tBy|nryMt$UFupr#_%OaZ>f*mYVtkfR zxk*pT_{a&9_^CTSeg6#Se!R(yZvo?LGUID%pr51xTG(FUj8A6;3UVvJhws zZ$V*v0pn}Z<7<*$s9z82NiM%{pHzfVlA%`XrKrctmaF&M!W93e-D`B*r$3{e18!7E`WDC&`vM53!g3F-~KNtP!UJ zPHl*`?B6TtC-f$u>CFl+5#%=YBkH!=V^To=tb{F4R5?Er+VV_?+;ZQWlltCl^PUut zKi*r-m-@5#xl4+}&tPHs!BlAUcl}iMzQcWpknXSPs=Wv*NKU9^{fV+Cr1!S6U48y7 z=^Y1fNE41D3}eTU>=qhwiCLfe{A-9YvR_}0`4!7`(fn=0G+m^6VGNl*-)EJ|j2(eikq1)Hs{Hn& zqSdoMrF%!9)zH-Ua?E=jbWr|Wv|1wX30nPJBE2M^=8yOhBxQE};B`Gx5K7Q_8*Lgw zi(T76J7B2e%_Kj<(IOO>WxUc4`qzYvBT@7ia}to)!L^%*P_JfoS~9_g^5+fbe_-B_ z^@vrz#5LLFu!-G6bQa|2hI31<6Vr7D743Eu{fXu}x4`5(K2$HOMz|)~whBXbztXH- z_ulM_o@no4H!(gbc<8;XX1QfZUyLu+C?Wb}i4f^Rk||Snor)}DxN+kOHI?(Y^@IDz zG|&xo7SBqr9Uf&xRpeV7HeMG6tt&{Hu~Zj`X1XUE;;o=Y(@Tdr>@)0?^=0IT{f&Y^ zxK!yaMuI?{GgP0K`C(&aqg$NsE#(RKdl<1@jk`5zxFKdKE}V^-X{ZHx{HQwTbFe`3I>#mC&p{4d8a%RJkThRGMYa0C#F43 zLAABATp%5|Sg+l~Pv88rZ9U*VP3QR6$92;KXxg+S$XD98G3_scq*Cri7iuq}tiiwW zgn1|EIQIH)+5dYE#_#x)Dmh{^O9v2&}4l@MGg zP#63J!J2pkeNjWljsi0}ZeUg?U6qm|qZ6*_FXOiZv!y$<)>7(R^c^Ga>w^eil646z z>wsl7exWJ!+dG4I?P~fj@Vm%4gLnS;uY%uRn(Bq$XHJmPDShGSPMYMy7SExSEfwYr z7J(EC#Qp9Q*~C7$Hb4(lwWb66#BF#EL9MvhfcqWl_#Yv&#cv<6d9sLXmW{;1i2yk9 zJofY3>Gt5be8J}J=&ARws4Y43N+Ojdu(fOMKN0^Y=gY~?<2^ZTh!r1a@>&l?#^2-Q zgWay4`KVV=Gr6sA?Y`8qM~ia6DxH=~Tu13{BHQEVnzyMj)FT8{a%AHmUWrs5Q`y1; zpeVRe)RFO`Ze&5NLeUD5YTbms_L3gJ4@k~YPl%hyKI_6xzH4KPhH%ag9{K1Ha#r=L z?`ItDS7q``g#ETv>1(ke`!uQZhf|Jz(bahLvHsLvVmL^M;aV|=&&^sZH@kY)8Svb3B`ibtMdFs3t$ z>|o}(COB8aS+l_V`gwcaCGmyKG|G{1FWYGwSok zZAnZTq=QFfB{_}%KJ6$sp--_7W`df3`DH4-5SCxmwIk^;}Q8lFiPo{xUN7oOWxmpJr^-=3yg zKjfJeTi?Y5U}&;`vWIVGVzxXDs;l*z_5+&GvngC?-@A$eeJC@V!ULKze~TO@mQ%LR zrhtcBP(AUIp2liZ@hQ@5;^G?h`Uk)e2~K8_^Osl?c9%qWVK3!(V)*D-%h?&7q$SP| ztrehGmA1~yt1P)VFwft3SAmWT=J36XgLB8}6``|b$z%Vdj*J%*Ar2sD^-pR|RC9ve z#X6QG6AyEUa6N<1JdSKWmiZ`qIP`vB~%g920Y=t+UE^U7>1 zm#Mo!@*b2}x&C|Kmg>B`wf?5zR&DH%KEnCXInfLJ>(}eq4AD!wOTB*~T|w{N4q5!@ zMHm+Im?r@W4CWgAueTJKQQuLwJS%)rE8w-f3&&4MlX{0Uy-T1|m9^I(XVVAq1e8)QM zTmA9tWu_9B_arXf*FDPY(UQt8+P|n}?~Uk9*DLRNDkDK^xQT;&_#IC?W*KR+iYck7 zhFbp+>smOMa6gB0sWzMoTA9ouadHJ!AXcz2{-y2IeN;9ksOCTNX>#u`c`os_S6Q*= zn)&S`3X}h_=UVi|z4!5z+AD`8^w^v4ZZUj?D;^2?_;Ck7)r6#tr`;7)Z3xW;vFG+k zwe!#Wswzi$Rd!O=R5Zn{Qn;v@hKmY@GhC3!iHZS2 zVr#^pQFo&`YN3t*?EHv*OMoEk0)ntp!f#Uet)e$JhqBL>{X83vr#61&nf|7>_?5#s z9)a1vGQgdj=-AkyGy?7prL*0&#SZnqYeekOfV=Y&W$E2Hnlg1~HTPpEh^eH@iVNN)r_a5rsQVQuX0A;{0y4vY?HK3msOG0>!f zk=?LuZ!+oNa7E!fvgB11&z<5uMggzR-LE4}V98LclP)q>Z2%zfN5v>b&~6Zzi;_cf z{1b^yV*}5cH=y|}ry;ra$+?r;)j`=lI@H`Up-r0oSce-R40QNK%sbSQ%K3j~e!Rzc z&A*0dxV=PWl*iYu;@UD`Oj8Puunb<6mh?vU`pB?IBc$X*#9C>JOsLO?#8 zBNu2TLZ~jnL*xS0LXtuqX#OceI?W4&4a86pY1SeqDXkWfeiB=io+bGqm#w4-DG^%t=Ir0Gzm?pMT^T-~ zo?WqtNI&%(_x)Y)hNLtt^_RyM<_6}XgR2H*zMYvC4fEA6KYAh12bo@0TdBc{hv84a zvDn63x!0ucEo+ea%xxNfS*<*yk z!tQ4e${?@Eu1u7DM#r-(J0TEMQ!o_R%cM`534)Dwfc?pj0k%Vj9ue^KMu)ud7%@<8 zp&Vw!y}x=BY@i+;oimfD7p!N0lG!=oUD0&6XnD%N^cm{&H|=7MLhEG1sw|lih@Q9( zVEJlGclhrsfMp_*pVd4oKp;PW=e&oeEfmX-o<;(KSPQ8STK)Hl3r>U(MoEq%c?s+s zepcnzGHH|z_9^>kwi~Bxu(xbb$~G?13|Mrut~yg!{R^jfd={9$k&5G01+}pyLuN-8 zH9Rj!o2;)}r;Qt~nN5ay-aEhre3}71^`ARU@QIG6hdBC;u++2#7px718Dq(m^yoPM znkkvf6H-;f!L+%jz_u+QElQ9jJd4#E%wl~F5#w_@p+3u(eP3V`=J1NsnS)L)gshM@ zWn)6Gjj&DPr$=N{lC?4GR`6Y0rcyii{lCei8BF^PCCfPpng)_!+K;)Ewl${70s+%{ zs|3lmo~V)R4x+r0P&2`@8x598U(`f;Ay`(GsBp1N`l8;Q+ZW5ubvmzXesv(hbrZY@X@E~&NZ{lpKNRJm}vDPek#*p4RZaedCZ$Y)+El0Ij2 z2|qNiANQ@i;7c%X$alDq(JtXv#JH!-+~3-4y6c&Vt*&K#OHOtNi|DHM(f|m`lOU8^~eZR6pjj+IURZB)h`$H$5c3 zfQ8Wd8?bgsR|m^%Gn7l|V>je)8ZH+s5$25?Spk2OE$<{IkILwv(#>)EG5zc{t!%w( zk0#Bz^sH6om~^{u^0GrF5HoeL18ut=0vKsW&bzBL3o$c4#QNwe3G5eRkLx=T( z2G(OlUt&6Sz3G&HX&cY=szx1S$*N8ZC4#K#p0owQX0xh8>CyB3Yc9!5OiE5nUvLJS zWR_mQqJ#^ec9%6wbm`{OebK>Re@NPmW|5GlJ42_07Gp-|EXxW$xBc+@C_e#Gw z*XV7rqZ}{t?$Px z9ZI7_|Jw4>*+Zh2k#;URaer%0bb`qC8T#1(@>8Suog5wCx;I^KqtZHAuApulSYDPd z%3(5Tm6R1nj{)ojB^6eEKaDDxc&^}!A{Nye(Nxb7Q!BXdAT~_SOyOIbzoAtF3q!Lc z3x|4ol55Nq{lJXr-U)VuVQEPvyc+ojDwEa!`_6g`_ejn@6Yd@^dbcuuV+WyHo&A9r zn0sThq<-rscfBLh-24ZQf6^q$k0!pj6XU{OgWm7#(_G=zCBhZfpB-D$LF#%Us5*T9 zd*viZD?yZk6Hpay_BX*U9K5>zSpJ`bsFlc@{oWMHP~(U@>1%AmO8SBX(kQqb+aUX> zFA4?MHWziT78$=Ucctz3-WSqm9{rk0hB)A=*es7e$S@K#8K`v8iKd&+7E6!vKKh4g zlpdF>x4RD~{Y_ba%fWuv9^NOw;9JRBWk=}}z`X7(UGamIzHW=T~lC27Fv^{4mAE`Oht6mf2TPsH~x|J`9FjnY)OOO((j z97TGg>9zOiDS(+X5ct7ri78%#ag;O>53Zz2_2^H9ymtw@7BJQUu?JUiJJ2m*Ze7gE zJ{{&pL#Bo+s9^;I>{1`j6K^s1{xo`d#ORziPUQ^=`35HIctsmEjAQ4ZnHpK^^mfAO zfmh9HQ>TkeX0`-v->3#RZ+Y0;3s}y(k&5bJxzf9H#s1p3obI~zK(P?A{{+N0wZEEh zcCn}d3eUxR&EHf$=Dg-xnYr5XjF!;aKk=(sSRFXL4*%~u)&;1hdCvl#kL{4cg|*?* z)>?nX4x#@AwXJ)yYBM@(Ti@Ru{Ty9Z!v=YlVRu0Xwza;Kt45F4 zi)U19Yi{@Ps#O;cHG{!E-k8f9t$T6@b(Q{f1$QJnk)B*J)f}&e!+gTT(=U;}pdDH_ zdu>}>7uI*hzUJL`H{=w1f)Tucy?@QZf?&gYY4uoAJ!{a3DRMf^EZfO0|DyUa{1P(- z9d;}qcE^sr4R5DOD)Lfw+F&ork7pNbK#; zdhZBSf(?I9BO{Y-cSwy)6`

=(efrZ*f8Qp#g2szvh6}24R{ohBbOM9i$cTO{SPVw7UpQWDsp=>E28=ZmFh;vP^ zuMG+~Co6~cAM8CIJa~i;p`$nZr*M4EX#@Uc^_;!_iU!1KOr~FD= zd0Y_m0L%0zuhJt3>m%i378ZTDfh|v8E)!j>RkApLE=rNbg>$haFAn(c883TM$>L&v z>`Z=%OpxIC0Ig~$Zh-vxo2CwAb3zBAlMb@xxtxla#FkxH8_(uB={fXo3m4GoK~Xno zR&SeHFx%^CXoFa+!!{s-u}xOj6nz*h{M?pa!a9{ZE#C*{YiKY z74u;k%cD7&ws3Fq(;}N?j*P}YVV!7_$`g}5)2YuiV5)i>TCulF_D&h{Kr_%XuHF6| zsI>o5ZodNe!@NzemSgX597Q;pSZTi;L6p2V2e3qJw&_J9NYa0RrnJ2(SbS5yC?GOI zx#b!A@KKGB2OhDqymaTC46>}4w3ecNDhou9sVsfVAA6ZMD@(2-r(2tJo%7@PkcLA5 z&c+YjRqc1lej_@ZhUWw{7|iTjhR44K*Ax$BQfFM8N;HT~y6SCe`1KwbLMEqx17CQ$ zfQFVNUf|>%=eMLSy%;;+0DqHa*Fzbbt=XMsI}ar<;S~+PP;;(y(y433-bc6!XB@y* z$h$MM_nrV!^}&@K>3RcM`Ft>UjH`PDFd$`AyT76xhau(=R!?6cKg!tuw?=vPbzd?{ zc4q9e}4{rU|Iu;U=R*y>?6R3kfMzs2D!;2z_2nilyDn$BsVl6XTfUq(G0g;y?3B zGO5G)v2`qz!$@N58)(%h9bI*{p|9L zLjnf4Z*U-}-e07N+tp)Wa>rj!4$=(ATnbZ3PN~V+wS(X)rwRzrJD2t28}wAe0HwU1(yD^++XoeyyMwaCPQ^L`YSeaPOyEy z?l^6XM4Y%~RBe25z@A(Xf?}}jOIsunD$`PSGS#2S_Za6S=CacyAH7@684M3^*r{jh zQ<)x>IZ+qYfIp&IV?9kj8&4_?mH~f8Pk>jUXu#XyykCewYkASi=)eNlB`@~lMYJ<| zTLii9*NPhzsBxg*golbua`JTnordDS7s@hWgK?-#tZ#;XeCT&c#m~3)b-#E?JFmcX zz{DSB=?c4Bt({lIXkH`i;T-LV2Gi>}qWPEpm6}{`Bs#=c2$L{M<2XbS?#`@`GCH(E zG()7pD%u}fFN6WUFi=@CFMr+u{s$5l=Q!>eIA_3AiGN0Sy1f~E0Y6MF7l0gk!3)DY zl)N@IAP59qNIUl%hWc1b;U~3eu5_^uOh3qz%mbA_v z6_@Ax_QEw@TG?MMkS09`7DR#?Vc+IxonK#P4$&t_J{k&SZN*>CD$<84&Wy0oVc|!~ z7z)+10o)ek7eKBSFsKFO*Ah=3^n@7X#2*L|QueD0PXMw^MLdK5W8y^0FjB44csHWO zs2WF%a>bLEzJhtDs-^lTJ@DK%wLQ}i3X#1Kxj9lZ7Eye5V- zG|*A~*_(^CHtT4_PkMG zPDI|E-lN6u9@%@WIGF^6@y^GE;Q}EhcMWxp%GMHt3Os@E6l_3C{YhYBH^eGjxFB&Hnto$<0h&u;!q zbCzBG%I*&$_BHtunS`Eks~UT~=L@=3oi>Spp7zQ4RHm0~fqHx%iYF%tdGXQtzR1}J zTy4!uFEy;yTaN=|OrPnZsTs^M67flyWQB@P%5D=os9Xf(!duDahmN;IE142(nH!NP z0z2!bdprtL1FCjmWnXX6(X}=FTe{O<{)v@wAd;B6O0~}gL6*MZU-}VG_G{;AL=@rD zwC-AX5}+7*O;+JP;uB>3*jnW!D%sXF(u>D7$b|cFx!KSnKm7N7z<);thvP&PoY<;H z-6K_add9nvFjKU2o$qQb9aPV8x^R6hzQkQLsD_{=blgRQ>fEPg-HN5;OB@;Mh|*f2 zOQ;)baL^E2ldVT9Y6Ab#ZCq>hyfffx5rFl8MU`Pn8b_^@8LwcFk37H|_Q;RwD-?%h}Z3BAzPKwL^*5MH|6X2X)aZl$!}piqKQ<#GUpDNXfn9mg{5W=3Kd*OkTA9-tFzbn8X#EX;PN)d_GDnni1uHX#;tBYW=DRf z%kK>4g#wa~dT;ira#*&%{6zvj{ph-OF{ zPOIQjTKkZ#F{L%fUtM@blb=xp2zeE)OPX3(BL15DbdN8j7bLMuOiEYRahofR^lZ>Q zs#?m)u#UG-uhk=*YaK1jtf!8Zk=`L~_vzp1?u#isoZ7dCI^SOGgH(@qH?TD;e~E|t z76f&#PAZ9XelQiGVNXav>>>333ZK7-&PQM~$gB@E*s6A%1Tt4-Gw|qORFeK>KLP>p z+5Wbm^}}yDXid;>3;VIKhbPCf;0Sx0Ag?1B zULa?7A14@&#mRB47n<@@3ToUgP-Cw8G%4GH<6RrQ$YAzzx+L0rjn$dMWIlI+)bpQp zk@^UIKAf+yn#mS1OvqYab-QXADpB-c?yK!o4HZVr9yx}3XYVWh*OGy1CC?@9-bDfy zTM80vSLoCGAYdPS=s&?hq!fH8?fXKX@)zO!#O|C@dT`&;ed005>7GvSWC;n@eh=VD z0`g8Z=Z`KlUV2G<3QtQl8XN>9vUZO2M+k9;nkAOUmvJ;`uFq1>41R zj=jbIxLs9W0@9={20AQVui4bm^@Zn^lsrg4D^Ul_b}qb%2#xOXxTT~;hjG1#u5Yvs zFxs{S!R`~pT_t*k+()Zy?uP;kPA5({U}d~+m0lT`4*+&4(o`YDUQ5k@*Xx5j^!0y8 z8M^LRD!ld5FS&$ZDit-=1XAk2hY^X2=6b882AS{ck5~l2PA`Ipz;jAsc$!r@J%2v^ z=Dbs>*9L(yrWOD)Ipt+UwF@=ECrir$^EpNnDOI=9i~BAViI0{P+TvzXY2T4+k$Fo0 z-OYfj?6)IhSuo(tM*lrJ1rHlxwPkaJB@}w5M3dL(IO(dy#ADgqtk{rU_}eOoGO8CREuksN=a2 z!H>Pl-W;)CQUm3AV)$+HvekG<*n+t%gsD9k5Kgzo?zR$T{OlRM;7Sc=_J#2ieBEHe zYij$&PSsQ^(B8l`HDBb^yqZf1Nw3ie>cyhRCkTz1$s#ETUBk&8xC~4pyyYcTGaCo# zBmNxvk;r;-2fH{BLL1T8Dr8cV5FG|0g1tZ&cvcBh%_PONwuLyJ(P<0;@Ba$y>rl)Y&zjA(!LyRCbyU<= zl|NDVZnD6Rkeo)YpL{Oo@%>zgTX*3gs1v-1oFE!(msG~)zP3FrFi zhx?oIzS}LBv{j{TIjpyB%e=xyT`g`00AHTQkW-!EE}Y(XxE&L|bhz+KCU}1i7*$a3 zjj$TWrrGc7(>Zs`R-I{Y?p`2#$H>%Z?`V1!yb4i`RJkRuu}s);LF zP37!;m8g~Pc}XLpSf^S!GQP5OpZ~slxivMBSqOE^l{2DE3g*O_w@gW7F0e{pn14J! z%E&lPKz-@Q^EveFQ)}!2YsXBhr-~MixZh)>8twT6rndG$1^f5 zBD}1YbBDUdLpCa*r-|VeRT(Yh{TQom=Serd%=KdmV9P|mBuN`&dTux*qOaB!I>Ny? z$P(*)4y+Rt<+5v8^XmOO`(~ro`IS6>Bov8={f`M9AjcA7Kgkj7thqShS&m}SYJWjy zrqaF+gUYFasW)SWx%kw4zQgvWNMibGb^m#SWeIquN@y(qP-I48pJiA1%l;{>U~$A> zwozl@#fgbQD?ykOcMe5Lll8Y%jy-@`cl7Vm)caSQ4@&M6%_Ng5n#nQU!c(FaLml10 zsYv+tb&2B`=5HhNvGhBH^MD~S?srLCK;t9vb8b(k_UKc(E4pRfv#QzXE?=ljoIhm> zs#X=(F$oB_BunIhzEyv{Z2W99vdEft z8TX}?xb?%^FIf>uT#HIIDL!ROR(5lUNZS$qWEGmfXX#a~Pbow5sZ+;J`xIpbHb(dL zQ^)hVR3wrFbABY*mwsK+`~IsJ;}(_UG^g@k5T`HRjV)Ovlf*B;8T3KGtwb0xSVR@> z6q-BBTI7M2cx1Cm-Yt5kZN|?B@2b_R`K)3s`q%9=U~B+}B=w@M)j-bK@q*d|Z^mi? zf1P^vI%YSLxOk4NfjSw)2s60YlI4cT){(=!K_#S|d1V-5kjWZ&L@T6m8X%lbd`Uz1 z=-&2HPDHI!lc`4PizM#Kc3SK~y4B$9ZBcfGk-ZH*Q6>CC-nTbQ0hx$PzYL5?Db<`^Wv8*OBmPM(Ua^ZR$F@|((_H#2eA0SYWAQ1HJ%f$vB;0|9@f{t0epnP0NFzcWi#azd|poK2?|n$1@e zg~m-nEOgo`$16POo&{aVc{UOI6T~YvyH7}H=D$a=NGt6~enf9_mTYnozaY{?bwuxU z1d+=QQzP77#M$#m4|(P#Jl1>OiR@D$^j8apM@m0lkjasv?0cU_#wM*D7~?GaFvndp zRY%+Reum+gS@W{u_I`AOgY`zsG`c-1kc`Hm!e9}A+;-9>BTCAt;e1KlWR1+gky{r9wLLM$41=!W~k z#@hHq2nn4_)s~{y{O%@t4%x1=;!Bp}87%3Xv24kSobe^AxUt&YSn?Rxz5dkkCCywb z*QK~NzNCxmY_4;i@;zoXUe}}dpvyo!y`V!UaV0GA5l40@&V#~UpuLUIIW@R-_xzw`)Sb+DoeM{O`i|ROM#jy z0+&Q*nGz;at^Qi^X>#cs(Mtq8PA`8HkY0PTj(C1N#mX@MJ5vapBtfB^w-t13B8BP~c$Cw(Q3J7{39AUqB!ZR2mj_fWXI%8aaxy zJW&P?T?QWO!hg8bX{bj1vP?L?|5cNFyQN9-`qz-7xVoJeSwRf*h7Um-*~Y611>>GQ z-7FJ52aTI#Zf5CO6R_*^90kXZyCD_F4{0+gP!lxQ^?7Kn(Qpy%>xZD>r;`jC%E6|Y z@zKU|ppmgux9lb4+51p&ajL>z>m!^)01>Sqq5`m>#u+>7-q}uvmX2xR5&Tk>y{}Re zqoSRm=4vTU_v+NA7vdl#t!k5prJf~827nOj1+!KolPbS~c3m=W)%zCC6Yo~xxR6m5 zKfMaEmG9F;e9fqgpN8L(Y>;x!C`)-Bg}cA?g{mZAP8@g&8qACa5c#Nd%R0UqAdMNx zysz=5WrI{bN&ixt`<03N$1K&~60l9!Wt5AYL5gzNB{lHQ$&ulQT= zW0v!x+O}VIiqDp|g#6|Ik$xYigOV%9)T?KBL~*FFJd?2;3-=}czEgdlXHaMDk%j+y zGI};#(Am2tkj;tE`KprB@6L$C`%8UXoF*6jqypR~xv;npK&qjkPo)Kv)c5Pz5WJdo zDtHB#%S5;VD`+=TC`KRu*Q1_uCAN2P??=};QyuPMjtztQ z(Hu$4f}h%1UoR_p;U*&jNc7KbUGP;YN=_C-mug2r1~#OI?y$fW&zjY*%`-}!8~ij0 z4E#&q6GFu^$U&!;Pn*@LpUGL#oBgq^`q_+?MO%`2D-{zwyN6{@{3K~9aTL+iraVpz zet4zUR~#XK%vdRg{Rz_M-jhL@k|iBW&J&@^=D;l2c1|6e(ZS1J+u>#gb>_luKf4lk z7Tx7+^cebuKIIU?u}tO-qEoU87}_4uOY|MbEYwnZ92tzGXs3)~?t2!h0Y>3pDlQ({ zxjAy+J0~Gf%paHOm&ay zosC|VMVA^6tur%_Iw!i*Cm1rwd^~ZX43l$vN8x0&^xgUs1wk)9VnFw!=wLwe#vgqK z9DBbf{~7oQs2Cj9a$}aUgr?y`nQCmM*B8j|}ZfyrZfG?}<7O%GJ zsLh%k?no?5D{WtLzLltE3I)yd;dVzuv+6!*ru7f>Yd&}Ez7_?-J6M9o_~#-C(Q6C``}M;;b7vkl#648 z-$V8F{#vab?snLcUvF^Ol44;?3XTF9h;f1XH`*vrfS)Z3Ns0dc|F&imL-k%V=5UGlGgqokC9wUHW21u|e>jcRMr+Gj))`LzMF17sRBZBVdHmZI-|(g@ zSVT{E#||a^4?akx`V>o$O^hT%#Wz#7WE_ z_!LlgI+Itd%{)Z{1D5$0%shEVG4m{#re4j*#3PylaeOo9Y?2R%48!hO_a~rCnBJ{} zme}mDql}CQvN(dx$0G%0Jzi4%dUh|MUHJuljYiC{to`KWCI z;Px3;y6gNR9DN91`6nj6(EgUR`fs_6Z`E7sR!L>im+x)dqxrQ2PY+MfY;XMqMLX$h z&D}|HX)n~Ti*EicbylC(*9Cy6=J{q&hc56ZY6$M%oEe=c8@#Z3ymjF1FEsk@TVA7a zURj1S=esanoFA}~FYE^BpSMF&$3%Go6vmZZrgXf@X(C^R#GZGH*G3vSxP)=a5DxN@i`B6I3w> zg|}0F1E!b-c@R7_zDr)yFK&RBnRumlf@%;j>UM zYtct9&)-f4a}qPWG0oUeIlHYY1I&`mV8dAxd>r{()Z!nCT<#wlevr>kt$6r%?cw`G zfN8#r+6dnNsf0rn@ZdpN^~K4&N5EHjzM7KolhLaTCHNjq30`baJ?Dw9Soa9RU!z#$ z=-ofKW1hXqFF7rw>LS^5&OY8KrDR#6lp=Z9yuygR80(w1ypeugk79yX^^bX7s?F_Q z$KqJ~I(<|F9+WeZ+^f$X;7UDltvF~Tkx*R1>wKs9Pp=XpAcxi9KOKMod~JqDE$84+ zu}_?jFybbrcB=V*1&lg6OD{=*-E6t#k*QRYAQsSM-jCii3slO!SEPq8Lerc4WbYV2 zd~ozsgyVE08qX1E1fYiEOI`;k(9Joy)MR9D$T&}8WJZ5oO>Y-p=JhtndDl{nBbsmd zODeUH^+$L9{f11K2B&DCX3!12_dAsI7su%>%ZKa{u z+hXq*ZN+PtZj*Tz>CO}K!5&9ow6>T#U8H}8L23M81waBY*H8BV1Iuzq3y-dPZf2Ez zP(A%-DtwCGKuVXc6pEzA619%Zc>DnN@w_&~}Ij(zpOd^CF1i!~-2^zi=4d zneIk-(xvW37!V^#BCG2+Q#8+82M_W8x$53vZJm0O*iKDf*Zr}V;k{Ecyj{>hC&Pvj z5@k(glcgxS{9CK5kuKT6YuGPqvCw#dmw?w;U8SPqy)~;Em@MRZyOEOZ(gh~ym zoHP4YGViS}fifUA?*u3a6%+kZ9uZ0@%JtgeeU$4g-o=s#5&l{0PfyU^)nwBGe^U=< z2ZseG^2Mj%vXJD(3|j5&!qJ88w=MfEFUic_BkY%AuMl@%blBU}!AVJU*n6LnQQMQU z%k8b=$X8cszks?#d{Gw4b#c*7`67AyOXb4hYW6mnSI!X2?R_x8Gmr-*!AUw|y-<^F zYEKC4jl9*=ATUXo94s2y>i!w6m-Z*? zJC>js#!gd=6d}5De05K6*dR6gNE&UY>7cq~b^Zzt^^gMcxB0$3@+FkzU359%V%Ee} z(%5|~<+d}>TAO)G71Sv4e#HPd(*c@LA7afKfs{Vy)Rqohb_}>s+ZJ-hY3aoPAIr9cCPV z&M_=}p#T%=ex$wTsPF?9j2Ahz+PYTo_5T$Ze++*kVEpu{RPd}6@a){C`5BYZ=TwFu z<*NFWYmjmS&7)}rYQ+V-0rQ?#KV+TQ?qz)c9wdC6L6o2%3JPeAD9-+s3NNv#sT0QV zA}JtBS@Pvbnq{P$E1Xz}!+UHoJ}Wt}96l0V5QE%}LK@x6R<(S%w6#_3IYqxZm*91= zqG)J3@eR-wb~Islq(Lw@tF-cFqt-w)kJ!6)Y{UD4nLGz0A`8WPoHH(QEH7=7P`F(Y z6SowxhgM-hlMVlFt&y9yklby_77h^Mq=tp@x--crz#3;tUP6L7`tBuUTc^1P6adZlv_15cF5wHc;;f0ofTUOKKPTm;RYwA^SgJ`#-wO zBRDky5sN7O1}TGDU&GFFeh62W)&_@lax4i+7r8ylI;(i46W zM&YU;v4?OJnr#+}Dj@axHc0*A9TAA4n*`7Ybse2+cQZcqQmn7XyTc!dtlYwLB*?c6 z)_Cp>=~EoU30HtFMQ_AsHI-gs`InvwOzlXWBy!7?=(;?v~~Tj z0Ud%Hi5c%Dt1VWBz9fJ~OJ4DClNJzNxivm(gOp_d*WPm#9AK%wqoBlK2JEa>j4nh8fp#%NY0tNVt-pYVUh2APCrjqADm7-McyF|`b(Ch37xX+AISD2OB9pP4VFz9TRodGi~whi z5N45Ujoo3z{?_Aa%<|<-CUJ_FGZ_-{6Q}qIDD2d={aJtUBJvex^T}P8uj}2aD)fE5 z%L%C}6gpCD=!lwjsn)G{@i8d`_p}BREG-r?Z{Oledj3t|=H$8oXesQ&8P)elNE?HB27)M;pE#_gAA ztfdJ(q`Py;fO!u;?df&)M%{w{;nw{dvqf5w29|czqt4WaQvscFVmmlPvN92C;2ojK zB4vR7tb|TMv^OtAeC;N-VyY|?y+ppWW4_*wEjyKtk!|Yhl5*-Kr!V;v^Zk#|7s=yF zH}Jf5D$QkAF@deU_gH{a3)F9mlZ5_h4yZi7xUMq3IGazkI{+~46nC<7DxJy3+ZUJT z=VZ1C=H$QLjLP(ifkCQ7v;*7A1_;e}4k*SkLklD+jGu!SN7?UbosdCy{`|}SNDGy= z#x6Xb{L3WAkZCwA_I6#v!Mf<_p@fyK(z01!__(6SMJ#KPqd2lo#FZox_jS*LY;@0D zD_n@$Em$wvg`9F1Qtr3f>j1LB>V_k=C|;QwQBfXez01^LhIxXrsvafW3LhZ-owqD$t=YI4~`Zxv{IdlWmUkXuhR`Cz$Aa`yoXA#RWS(h#?nqW!h;=xRG8 zTmrd_J#ts84dXRtS9PlJDX5Qx)u@|T=U?^&6~q=>q!ju- zzaU(zp}-wlWw)9}R;pLu5OSzf(We|NV~1B-aeSgGva`E$D#g|VLSJ>CP`nEF08sxu zqTcGpH#FiQxYYk;Zo{k92(ObXPnN129L@&GV=rdMS$1X2Zgje{`l6u}WIfeIR=gfP z%EXIS{FxMVjs2~z;ZPmkhR}lhF^D$KuJc2Lx+h2|0qS?R=CM}7ZqNV;I~~T`*oDlD z)$C0z>Q?k{gmKparj$n^$%h-;lSb&W$_b15O^+fJ>jIgnEmv?=M+T z(#nF)Idvp`h}3!8byUZrNxY*DH*;yXv6pqi9ted^;VK^=W62FW>u(_!Sp&`_3mq)b zqzuy(v77yi-q@=niR8W~bj$BV)~%0Ep~3%q_BFV&YBj+~NHaifxy(N(3dB^Uz6xsu z#|5v-r@j_&=zp~uMeYsesuFF(G2Ar{H36Bg8!`=f(?Dq4B*4)^t)36fK^AI0%6`4v zj=+-sK=7}Mjl7git;N2iuJ!$lkljMMNAe@$vC&dxAEP&l#s&(CDM~nSn?sE+1y4od z3SQN=u7hVP?)s()QPKQ9I=I!$Q1y{BRA*)=7<6YSsN-=DNgz{!kd+IcbaXF4p)0}x zB(jeE6El*?%it^2cu+y~P<3~P(P9gStGfSrIBDw?{3fZwujrD;cw)%S`r!}FjI!vW zDaKLJ1H_{##?k0wT&EaEqs?5W7)PUBTxY|O<{IHX+9T{YeW+94G@_aqlE5%a2$lTS z&q_}gQiUBw3VxK7nbtq2cd){5kU>X&<_x+jQ@9P*hqom1-r$Go$I;4tCiR8K%%oOpL#vR1Ix{O0DEWUp&t_h$ z)q`XbV!DnpuhnWcezVTJR;yzVd(*Lav$I4CRozGzI3ABn*^vjjjrB9@pN~Krt8K2!V6tMZs3Nm9imt`s5v@y#Pdk)GInAvhI4+g&}$g z$)VMYNSsacf39rSFpLP%mW5vP6K9d&N?|n1M}^_jMlZ$=t^GOSOh`3-s7@WtwG zQ&Iq$Il_b6!8XB61GTEdfPYzI_lb~X-*~lE`l&y* zMv75<1>au$*z8SK#y%d;&ndSLmyi8CJoY__jI>`3#gJTeF3G7G(Ix|G__+?MiM%WHt9ZGgYX1Cyxb>}$aeLowWH4);7 zbHj&DDjuF2y)=weF{`1JENz=J(vp7Ouz0C-^O9ZC>wCT-kkH6o$apOid+MfKLUnZu zo7g;0^)UVEaTw~Tw1eICX> z*^hY9G$!qsMo3e-RsCGVFO1sJN~`qn{0eDf>|q$f@yQqEaUN&?d8~90Y0Bxy7y2-N z^xnlX0S4@%6`1LEU)8;{A0?geAW~)e5P_Z0gA{)YK{dAQj~#T*O%ZC=O>oHq0Y&&) z>@Fwom7pughR#KU^Z%jlZQ!G-&cy#rW`F?E8zpK~tg*%xJG4bZEjVa%lRIz+CWvAc zSKFq>Wnpz&Dv81pLgFMPvnL~Tp{w1pTX%JLyT#qLtBZozW`dCLPKfVXi&%9+e8Kuc zK;Ztq&$)M!Nr;+S_4EJxG0Z*Zo_o%Dp7WgNJm)#jc^(m4@%cN5%*yVxKntwI2b4yp ztdzr$?Wr5yqqF!&kWb#Oe^p*ZCod_fI)!a)iBrZRW*;|VUFdNzkQhPN49!zH%0E

sCVi&S%euw=$!rZDod|1wjN5el;G5UqrOFsYBh|2EU z>a&R~glS`+yG`%*d4zv|UGwiV;NM?HayXRw8kMr(m7kG%=rmcoyuFUN=|SP+rDXT6 zH)_>Wd-I^WF!Q$mj*MWP8M`rF?@sMpEY)W0#y-%CoL4i7$t8=}^<77%_Srg@&VXmh*7@ zZcpv{qf3q5A#LFVU3OpOz9&kY=!?aZM?XY*wQGH%Tf5N1q11h2WZ=rbDY9eFA$L&` za%EBBq;Y`Ngr_*)p85gm?v)!l1T=b6p;PJkdKIZ1>7C@}zwvgGB5Sbd^pBs79Tax! zOj3^ASOVbP&#G(Zq*^XOK$y0mcq_5i;#U;Jr!63;*zj0;fG4$C&edEc(--1b*s)jG zPs&a3lDcEL)x)?T-aQVRp;;5U&!dXiD}I8v@fmOZ)l`wqbNc4^B=SB+}z%0wv+a`J*&1~9C_n6OxNX?#;`eTuJCMJy9 zl7iTb1;gw_Ojm&?S&(}`xL&6FIlA8G$xIPBYaK|?L%#H#EHWjmnpG~N9gsz~@itg`g^Y`2J*9-HKZ;dQ@zs*+_0zC{4^u)woUqIp1KfH@@$SftG8>a7z z&>1d*w)LXYofnan$$bv+DcdC0AMRt^Xzq7CS0HGQ^VyR8XdXCzKrFp9CGusxEQ z|DW(AVSJED*#h-+Y`;H7Fau30Xj@z~n2+2jNLXLNzq}3OFgA^YH0Ze=d|krhBy*&k zRftY14b|Ubd7D-txrbP@^5SJS9TCGe@c|!8`N%LDj!VB$5v8t8r4f;MN2KI~f{T+f za3L-x4xx0?t1Rl(7S$tH-B3@8S0Y^P?6QN~xNOR*e;DWQi9l<2$!+M!rlQm5I;%(n zJ-3}IJJ3RX=C>>L_+2bNg?5kw@hQjX2UWEd?-i4hBb+#L{r7SkM|f%p{q~sqIAM>%? zOR{YLJ2S!+NJYMqh~lm}>jQ$Uw(x77cvav-2sG`btN8VzsBd=O;#(Np64gd{X|ik4uO*OAb|CDx9jf#SaB`_aj_b9{O)Z_LDP zzVv>A1)kX+J`{~tKTXem@5u|*Z7g#Lqyr2k+fq|RxrV&ZCQk3#T3L3%`|ea2Bh&O@ z9#wLsqh&B>ItdIjkDMzjG_!av{P65JAg8y+w*S;)v==+DkQ#cAw5oE#XO1lWSqQ z<1JTK5K2K-V866bTUUPfd*5-@hl1^C;K?N~*B(hvF87YF_*F9+WgjB+qa{zy6-Q1f zsQz1-iW6i5G6|Y4a2dxzIE!-?>WSRTi{C)0f9nN$=W$R>`M2Bt~qb3(>2 z^={Q~`&sC@&?`oAPs`DN-{)OTRP2GP;mz^jeU7tLIWpu>%-hV-C(Meqk)L;Nt!5P% zcgp2GXD_oycxjY-R@br#7|C&K4sL`ZuxoMO@Zv@VW18lCEsG z58;h1x$sG0KmKQIwOsn5K*Ke&y{R1$@&EQx9B65FXL^!9(dQ&PY?f50Szl}a-uHEi#Ny%LyaM()P0 z_eg-_=y_T-x(9;3ymH`yhCUC>s1HVt(10zO5Z)qN4O^I5y=)`dsk2dkZ9&XgQ00&R zNG>;=D$gffAcs0}b3xaSH7Nc2k=|nJsIo+q{?ds$vkr7|`nCq5Qh4V`HkdOOoWHZ= z(w*Y8u?$n!mZ~eePm_81O{^`XNj&wzJ3KMRPH?_jezvEb9GBWVLMAF_i?U8$@Vdwi z0vn{hK&HbY*05RM+tj-{-U~V*TA*X+;casE(WLA+bybDi-oYaUy!W7XBDW5%%tEj+0-3%VCo-K+iPXeDk zLGL?Wy|_5>O(ra-*|YGD&SV)z;t^^%Nm*N_+4EsZEId zPo?rvB>I*V_zy{8QH$NKQA4+cY&4{v)Fb{@(xZ*M)az`zYZ%T+cMxRjG~(AJhLwpj zEpgg-`7y$+n{+07ZOI(5gk7^_ioB)wgT4NHxwiG}_senV6iXl zd&44P586@nqg%uVMqP(J>Xkr0AHnw5E8#vWGN=A{-j}noYUU=Uei11q*78OFmS|;5 zxxbYVxJyT@7fS6O^~g>9KtorwJ6j*Q=G))?_MtA!%^3{UnoOPR-y_?z3gdt9-NrUe zTe`w(3OQ-1h^W1(wFPVdFk#PH%8a`f8rcPZWJ%mCB@1=DM0Le2#Vu{qCV)(*aciv+ zLml~L^b*992_l!u2dKXhaJAk^9kJB=u05d$!4vo^io}jr)||Zlb?Hmn zEu7(@po%!Vv{rFu<@g7tCjt)$21+EaL071ijWa8Ad*4lh0hvLJf|+Zvo>4~PF`0^? zE~DW;7>`(wzxK*-;<}^dTsaACt_hnUV0z`mn5ni$5+wv*$$vN;dUn~FDnDk0^6$DW zFMf6GAW=KG3PUL5t+lV2&h~g!>|n%c=li9P3!#joLdUJpXf|oZba0zf(yPzzs~=k% zxBfHI^`A`rN1Y_wFR8uDt^KH1`Q_#({w47(cIYL+VaI_) z;HqGI_3%=ayS95Q^i(~jED^Yn+eLQAVHHr8nzFn*hqv;yBCMVatKVV8ZORqNC(H5R zq~1XPuoAD3%Pvs4t5jfx8EmV*R0Y-&11ug`1sw6*wQ}dt*-W9@=dI9-%Wj|~FG^J) z=Io*nuS?^(F}mEn4wLPR=dPr|m{(Um#U3=B9i{O=j8YFWn%#lMmPP9*?(C8}_jdn^ z+Nh+900~YwwBKlcmk~2nw;4PT4nApxp0teeC&Pp>!%ln?u4&hr>_02pBf*`~L_jQ_ zveYQk*=DLhUOd~3=jPdos{)i?mLg11Sak%qgo965p*>WyN2<9rQrW4AL~3D=OD(H7 zNJz*IU-J)B2=brb`o) z5WeU+R=gzc{8Y0$n^=>7@(1_CYmdyX`p0G3iP2L3Tg7RA73s;@o}(w{?+SY-=L6&v zzfoTK5{EZ7Q*$Mt>*&TZt?nTqN4fFU`tnAiJP&Ucne=SO$8iLd!yl+FDdCsG^Y-zV z;_o1TJ$9_iSN(K+Tr_^4J_%x3s>KE0PK{q zAbJq#)c>MY)ErWp@4auJ8k*P8M_)s;d{0V#NZseAeX{Tr?->@$zF@MCsf& zGCP9mruu~lq>6eiI}&`n9A1x(yk&T~dO^6|xbol&nkpzGuhqM}%)yqzyp}o|69w!b{VzfETtDiT+25&RMx4O;YC)P^^ zBXpZ12EL=kNg9%zG^hh`kSH0czZ^O6%g+6LJ1+ed{UQjQMk!pH|bekug_>MLUGuk}4uT7(`O=GY&g(c3Sn+Ff=jrd#68!&Do^J5;SPto;A%M^aw zt6!steHLVTXzzJvP{D~^quXP2x8E7~PQI&vp8S3El!(0B*Y(r-y8hmWb$uSad4JHZ zOFbjcp!GAnP9O4WmSz`tRrhbZCv%Yb@=Oii;el-fs*4t>X%QVbLNzDSyKek!ukjCh z8*eD8gFy`1{!y=enm#98Al6c-v3JbFp3axb=vyqwpo4ZC&l!zhXT_4R?S-Z;5>*@Z zDiTreM%Dd#p(%dD(k4Q^{LxZ7)iI=1&M#`G>8~`q?|omUqK)w7Hfg#sKc)ykhY~%w z&BCj1B9LoDl1`g_H(mfbTEp?&(Q3325$;G&L&%(1% zFr1F)b;6rlUnNhk z_R6?Lz>Y9SC8uIdlBHUwUYeg(m1Eq+R_pPcO-Mbh^1?@Uc6C?(Bj^67^zE(phPrF(O3}b!BO=Gj|_>`i=QsA}J zUhC55jYdDMhM0XUS5T`LI*lXA$Q-BBP1soQNkj9=~ z^bKlCktQK7=>H*OGtQ%ok#}D=E%H|klR+4EAir1SpGA(sMIArdjKT}~ifB)6JGoKy z5_uCuY4Llq_K-!og&APUZ37A7Gf(yecY~hvp26j>5&)u!T+yvbUl#BXwPPRLSd+iL zOJ>jqHymePOC_vS^K6Ikz3w){uAF!`CyRHBlsL!PE!on6XysThyP>E~nj>F2qQ>`@ zu3#@1++xvM37o=;_2e7P!zmIwcCxYJnC!t5fnr;|h_Cg7wp z6M_q*`*oseprodFmb&vl}|Qrg9scT~dw$W%2w5*;fAo7H4MEKW$+B`P9GBbas{T9hGmio!#uR zw=ViOZ?HJ$MW1&05Q3!yIgp%@d)<2Tn=X-?9wN z=S}o9G5%~b_`a1`>XVJRsW>rE2ZEcXCMKTFASG&vNV_YzJH!y~G>!5DM)@J5`~&*I zg>l`z7j-X#L{3LH^0XCv(F#4!>#K|SXBU4vRWkTAnp7*8G(&rg@;0OVFsQTWOcAIs z%Gt|D)qO>E^xMsAl{`y&S0NelQlOpX_i6QBWGc|GtTkdTG4*zQ_4S8j_uScQA_Mg=d(+ z;wKwL7+b&{%n}rbnCX%(Ohu%&*yUL@V>0F?=SnMd`~Vg^VHdL46+YoA93GH#{o}${ zG8R2osVn@UQ1}Czzi3g;Z0v5O8^Txkfs~Ycq0mx$peLN!%2bFQ$u^pQN3XT3i;YEf z6tyOwR?sz{>3-QM{46~S+jOA>pJ1 zFXWc2b~3<)F&tsZaY2P~uCxMs8Gl!4B0m_d+%HOx307#IvEo$f0L^=N&vrE`>%Bap z%~40)8@GwE^}^k3=smFBRPQQ+wY~+^6aBj-e^MfUl1=yIj7#|0IKg&d>a9a!$5OS} zVsKh`MF@-k;s>C1pf>EO2+(FBh27?P|mj^!8dS=j;vVA>6crxG9cH9{_VO2 ze+bI!_I_HWZ2n{?kLM#>2a? z02jcceBq+wkU*KpN1N_;!p}8N0L*MW#|85T7C3C7N7EDIHJAdnRAM^2!~SFLdZGMg z@K`($j0A~x@;fu+h!(~JZ?u4C`dQOx!1OF0R(1NDqYZ+bl8 zjox^M-pPPh59f!#`w(`c*zq9=^dC@{NTJB=Kv0{Wv0cGvb#etnWuec2#Z@}v#t9jb)}uX2+>v8V6{#% zT~99=!ZGrStDi(vfl=JeZ7u{AGq+bzSwIe#|An8-vLL~Oq|3R8%50+5=Y-k7Z&6!b zU4-L(1a<5_toXzj4&;4{-#6BsY9{96Q}S4HKlF-OrQD51`O3 zbE5vX@00O)dJaiKS(T z4+Y5{X<2oQ-a{Mu8=!oVn*5Q7>hirA^kEK9W__Svb~}WlK6+rvsAq zOWLo~(vz})qysuFJuVw2>0vr8kd+OW^l+WdmGlTnkI?CpC7mPb9G%XS^himM)ag?t zJxbD}bUI(sqa{6Br%#u3uB3Byx(uPidLDG4W&eQ2a zNuMI=Q*`=^l0H?^r|NW(q{m2lj81<^()p6k*XePRK26f6>GW45eY&Ji*Xi++K10%H z==9elT_EWKot_}+GbJs}I+|ob8FF$D{ri=dR>^8PnkUqm<~% z;h%jB`)D>W4d3Mw~7W-13&dE6I{U;WdgX6!(KuVw^vofK}TFq)R$!d-6R#1%d> z9{uT2X~F+76`S!IU2sPBpq1*z6IVE~w*tCK1Ps5Cz*~?$tFaMZ7k#U|vbEg5X(fot zVOBfRr@6p9m%bCmV(VP1e?R-d<6F!YZWpmcus^>{)B{HBf6*tzqYVq3q}B9LU_maN z%xS4V?0~)6=jG&MC9KPQl(HE1qXr|T$75Pz?Dd>^ne`t?J+%k*fvG~Bgg@c`?@n|!K80}W*soF0M zrK;Pvm`>Z&_)X0VI4?BoC3<|8apz2iz>Ix>YA~NCS-VTbQV*eQ4i-5UWwNGMS`RHK zeglpVBkW;6^%i!(0yb8<0+oNWniz{FCdP)%9lOr0_FxPv6{n7~uKHIkTeE=FFS zypwGw{$3DnY&dvYydif1kLr#9OQ~cy?UI!P@wmrRN2#rL2WxCeH1SZ8lx0(RIpJ+Y z3eaP0p}-`dPK=w|2T!v?$)(@rI#YV>SdPp^?`J{J!+1`y68jevIhhQlp|8i8HA`AX(p^9hhT=I*1sjl z|HtTY=aD)9)AOsI8&ic@^(&-{dK44C&C>YgpzUSZ-d2bRGiOVdFH$ej&a#Yz2nd!6 zBTMX6|IiDXvEh%WnZZ5vN2FBknd$k#_C=0+w{`YhCNGw~mH1m!-n&`5r-`UGiy0R2 zZ;d9#CZzpx|L-D|W7t6Qh1uDIseWK~?8q0F=Axm<$3vOUh{U?NjNj#3{DjmnPbznq zK+^1}^#=sRhi4pjBF+{)Z_?eqbCVXwTt=fc?XVbqTr9ur-frBYRh1%S$sw_JQkbf5 zyCiK{>FSY0v`X6>K5MKyq9V7TahR-B6Ei`@n)&xoM@LI>GOlxCkFF-i7uPRpN3@ky z37BFy^zsW#tQof;CE5P6La!WFM6;@|*S@*%zf#AiUU33zUz(Dc>Aq9j$+#+YZvTvm z)X8KR>tc7O^Erc~C>PXIvQ?ouEQRm9k2*7|xiIw%?=mtbr`q~wT$x(eKjRCjf9szy zBelAJ#+9iU8ETbaMW7u<3R7AhP2AL_=90vmeL}D2ns1XK<$mY=egkrpxTOsud1v&^ zNChd8k@455v-)RTmKxbVV?wH@e;sz}wRDF0$VwiiVR0j+R>|;5>Kan9M;l0G)lTlm z@9oOjRbV)#3(lC;6d2`{RVDA0p~{KHj$eb}Uv$rMV=-FoCM&CEqicXNx#<+WRyOqmL9TU{f0)vNThR9re0MxB5+HzpQQ z#%jWS`l4uMNtLZ;%`(b18<(AK|W^>`^%v?0JqFm{_H|qtM!T+bjR;m~;VdytC zHJI!$pCu$F>)m2P;?~d}tA?y8g>zTdZ5&-E8C54E7S%L0oLR>=P8qwmn`=;)nd%L! z7_!K#dD29I7gq0KQF9srupq|7qxS&7J8Lbqu*Otx66+@s#lfOBNhp55*h&5Hxl6K& z(ZRi6iz6vsaX!<8>#K;*X~7=qUFH+#bLvT%R6>@r>J(auY9ICzY5o_fg!|>k5RV#L z77v3f`&;e1McG-%=r!x!T9c@{dW6%ay^%ILwU;`(oh@d=@v4(#Z!^t_-A6aON6#&b zk0&90jyc&iMq=9Wp9NbxdWbvcv~+VU$d9q^>Y|IJuNO&Jr3p<|(M8s!+p5m&)enLb zV_mDU?vy4UFRBmPEDjTzxcnPzceb#=(MVt#6~ULB2Hh}F!o;mmhtd3XxGeoEMf+U2 z#a*wl4+NQRXW3o#b=Lf_&O(IUTlwBhl>3MvnmaAR8I#*oVk(?+4e$wH)`JgU-qzw; zz?XnwEa1`44RT|+m)?axe+YfGKqhRTvyb)C*8}7zlh7?ciE_4Ks~=%;k&VHj&>Q4s zo9nq(fF?vP!$7T*$g^-+RLjZSkw;iK=}-GRzq0FFv!!n=N!2e|>Rtf=bD3qQuU|i! z#po+xFYIsnRq^{~{n2*5UOL=NOwI0|KynV>EFGae5_K1negOVQnt!vp^GH`PsnHG_ z|I`v|8KzRi_mDX>FO1TD{(I6oT_XY^-tkj%@JMGTy5oba8%a!ee#WV!dB`ynv!TP< zZ&*;O6-_9iCCup9+s8fqiy7)%dWz{^%rRp!AjWLTP)`k7{Akg{NN8K_SEHdfs>Ycy z$A<%auI|!u-O>?Gd#wGq(-I@Jdv0)}u9X`}4(7{S1YH-iycc`*M?$SNqcC(|M!1o! z-G1}eM!2cjKmG4Pv&4aIsd-Vig&NaJ{DluqnCLJjMjY(duJqaUZwjnd@U?Iwj_~my z!C|8qpC)qu3rxY~-W1Sph_odix&?_5eW;!6LZWmPEHdR+HT_zqd_*00@xzTP>7s-k z)bbDjTk#2^LXCvlYu?7PiQ&y*9PH4sn!U)$6Jke(SKlJv{1vqc-9&?&(LB0wt4LI= zzBIQi&sg_&(o@v?zT``Jqub+Gyl$+!!wW%8EZ^-9s*jC%kgaD*$FR{w2a6$3O#o_?5+{=zy(Uk+7fHSpz>ominH2To)b=JU ztKW)W0c`e3_r;BfN{syVrR4fn9k+(Zr~FnYymamep+%5hQuR zTrA~`v@)#za;YHfzgG&<8O#6g?k7q< zvHW++k1p6K1?@_xS@#*TjdD-|QYv^YlJ)|7m@eXPA;Wmsni&|Fkqzz#=H>Oz2+Raw zGf&OT#IT(zH}=Deov4?#z+`l4zP!%g^l`;bA6l`3p%pu8XvM}3t=JcaR;+Mn#lHBl z#VDXrSMYE`q)Nwv8#qw?CPNvyJl#`<_xXaUkt6-4MQvT-H$Ei7SL#^5JQ-GVr1kw%kj6! zInyFhC(cPPjNW>XxenZz(a7M%D1g+^Ty!5&1M2O(xoB!df=IrV$EeQ5;N_Q+I*_MJ z{X5Tc-XyZ4ypwy8^2NXM+dU&3+P-Wm)(l~_DU7uMGDu>|)VV8-hw($A#VR5|Bb;e@ z>hDFCn(J$b-ovLzXm)64&8s%2`r00R#|CHXKZeW=NQ3xF!sPCF#`zR_B-LU(yt+m{ z4Rv4@fW<)v%|$Esh;WBg_d==Du)2=dmVdv4T9sQuQ=3+Yeu?bQ0Wf!kCJdKldXAg` zFESc)klr#Rq{GN&_WZrlLr$5HOlI2tR`xR@XUZa;-9L#0llgXd|0L?$%(tWZCv*EJ zPwt=0>!0LSXl7L`@|j5%^UNfRc4m^rIWx&3oS9^?%}lbWW+quYGm}OAlV9qeWYNnk z%;J`rWD(0uvRGv%S(Gx9EIye@7MaW>i%DjZMI$qLY5ydPK;~PReP$A-o|%MsXC`6N znMs&&W)h~GnS{A!CZqk60|*JGm{}O+mzjjgWhP-}nMs&dW)kLtCSf+2$%_6- zxJ3GG_cvq`Pq617aj73|OQ&7mcH?*^NU(#=Vct_zVVUtgHWT zjD6XETbH(SpR&zZ$I&?dt`11WP0jj;ch!F|n~TJsE7Ni@Vy=hRWCY<7udd^f~tI@ z0NOn9I81Xl@7U8X&0GJNWZvGJ8L8ZvX2@FE$xU(oB)KeVYM~I+j#9lmy0+o=7sskb_Dc#Z#xQE9q9fex& z$Ll6%RgFyN`-Jz)6`(Hoa%&!u1!2AiHP$A(%cO$K`;YIR zS{FFrzaMn>ZtP!mnK*SVsJpV!e~II)=CTM%B|rCCNp3t4VAG0=3w3a0fn z{~v>oS&!o|fXs8jbRoP32qO;W>znc-v9|yj&r{5ILu;c;1*7Tta-x1+t&-8DFyq7Z zi5}5IyIFDl{n8z%qP;RG!PY}mS|1%t`pwRL*63C%Zdh@Bn4+7r^ZqChKIFRV#a->OsJ>@dvHdnn=dE{uiXoi9=#npov>h7ZbvN95uoBZ`=E z+u!K%6?J?lWBv|8PZ~B2ekSyBL)7ptc_PjPlg8RsC+W5wH?W6kI76Dnj!Mm$7aH2Fq6HnWammzxYeZslkBwqv*pUwh@{jTY5|=(n^!$2&rJ{ z*7aYYfBIS>ms`bt0mZU(5<}V%9(|~GjsXIf%T<8TGd0UOq~o`?Hj1%jx&KMsj}Z0~ zCydvS@YC%F<8CJqS2dA3+clQBh?`9(!m8cvhfvC;dWb^LEQ{-Azcqj!`=59HN%YbN zy|@DqVP!TN6PWDl?TKD0BK4c~B2mvU=?8WJy$ePwrgomFK#UAg^M=)NQFQ+088Y-- z@4vce(n>QiP3t=6i>@;TEMr7&w=i&()ine|xYbzy8(Gx;^{a9MM{hN80ouiGZ> z8iH+F(K(VN2QvC=97t+HaaX+Z%BNY}Wtp?ox1y*U-K8(ea)q>i4F>G>&~*`%s#_oAOBiksE2BY8Qg7lzHE(tt}Ky1C4Pn#|G98LTC=Xn4y!3{ zbFvnFV{rP=#nbDVnS2@Q)LHI|wlm#Ka2qzG@iWZM*TSPeu;P#QHi9D8gGm}G`B;9b zzwB%8HQLizAJ*Q>;nBa(1ZsFcpgz7m4NPBqe=>YIpEG=D$}Pjdjr>p!p|ALFMbB_Wzx$)_=-Mf_`dWR!1qz(H%{Q=VqXzXRzI!vJ+r-m z^Y1GH-=EOlpS!+~|D56b+GhY?CO!w!=Y-DyzRdYBaQrU*4B*RbZyc=M3M}&lx`ZbB1sFX8_+v&A;ep0AFT%1Lxn&&lx^cdY?M~%$)B7;k)WHfG@MX zf&As_&lx^+SfBd(@KNy1`JCbV3xV%*ls|6}`2K|Uw6d&EpYw7=b?y(3?({VHU4K9a8x9>aR_x=!a*qzf>J`g9e$&yl z@DGTSfJkKOS{7K>XWqh$mkMZKwxnr&*?|G6w&X#nnW7^uB{e> zZ>Q?p_GF`a7Cw**aIs!B0-yP|GrL55B75l>UV2>rv;?BnufSDX*#!E)Ia~Vj5r)h> z_V(d>n@ZB&xY@K~fq>(|xAn-6rt@5i;jqkD?tnc)lS*tHWBDIR;1YcjUQp$V!<@(D zBn|iEI57}k2}E=ljrZ$UMo=ow&7j!gk}SzN>1CZW698t~8=iTVZ#1f$JrWw4uW}O8 zj&(((a&Cys5@U2iA^pLQPl(1V3i!h*O9jq}ts>l9&%}ch&eOv4-@NC?zO2&3Sbe)d zbvoBfvg6YVxJ00Vo@wjyZf+rAa02u^BU4bTEm7jr1cye$EBdo5Krpo5Aqnwb-YyUE zD@wSZ^af#*Om6Ssa^yec;-H;aUdP+EX}L1iZPPRf@J{ZjS@DPEo}U%}?Mi;)Kb&L7 z31bldE3T?sOE+r)Y;G=pMRwaXO`ul%uWsReRoim8l_wMf|B1#0@Erc~#6K;+&+xa8 zzZ8E5`Rj50(>lwgLxj=Big28Gv?vsIGDn=XS3r3a#M8}p8UC5Ja}9&gOGW8)nu@&i zOq(melzfC!KBxOvX^Qcx>AlY5#Y5Hz6IaK$4R@J^T;a1Pk2V_Rh+UQCaQDP$fU#z& zb|PL>|7G2h@f6-(H6pbEJNNEksRyAC9RD}oEoEY}AU3CEa?FB1RR6V1yy}~jlKZ}g zI^y~_q~?*TzD32V_>~)-%s?(WXT^2KdU;gI*x^w%+#T7TD#~}84pfcTy~(Z~D_zpw z;~o)QyR$RRU*LawimKQx)IM2PSvC3*uBfJ`u`sSdX7ma3`LELR`MWZoud~%%v#7EE zl)h_DUzRtk@2WT<>rb25-Vo{j$mOU!eW{W7Tsl0L9x#a!&4IGdST6G?b|hddzfYiI zcBkj@Ie^)J9-pmqW+ucZea13aqkzjWzyhU|img3RZX02z4Kkd@>)kvzhn$Z$1Z zb^>rRs2Ts6#{b}wVO!U@W#817nuW1}tZiN2EBIy>Gs@#X1L7TCH=*R>_e(Bzir-LW zxtb5ZqmeQ?d~wU<`Gr+e?aH!6p|Yx_mm&7BNFyYa%_3|O207VScq+eBw#cyyd9a-l z-us=BB3q4~Jin-VxMPmfkA>A6kj>0dJxF^-vpC6$Ey)Q~pEmjCJU2ARd1T3oBTdI| zzQs<&>ZB9#o2%BteR$2940E7Q_J^;l_HFGl}C^*F;?+C5T7 zf9lajH``NtSYAp-9dy^Hs!3A3I4y1Fq;C8GdmC9u1Bi86U|?M{R=1``{uZh&6R)FL zUH?T@1b~@bc1z8e;=QRif7ADhpy|-5fAYK>qw&W)mo&UzJ(4^8)d9S4X7@%9Ve=%$ zJS9TPM1ibd>u=It-`Hg80vL%c19th7rsnE3_GIg%6t_m8ho}HrQ3@sj8g#l_g!oP=)Q} zQ3vLLzc*rWHca@%{6!dV3^*yW;*lXW>}(p)>`Ll&o82_9$!fPr*_q+W*od9(Hc4EK zKd;GiKD^0n{ff4J1)$SZK5cFLQ@{gztuBbb(7iJRvUiYnP&aCiLfQp@|>msyT&fejdao z#ns}HsQMR|bRtutYEgkj^c*J0glJ;e`TzI2)A&a16xm6OH;vdamj8bP|5!;nJ7onE z@?aGUH+_@qE8J{hH4CdXD~0l{;%A)g-H+ReufFim>x}7B#)_M$1Ipsx@chj}#`Nb< zn6Nvs>Ev6)%0;;F`GCr=F^qA0^E-YL3X)3pw(&>^?eS@rOd{U}< zy1vCDE#FAX()onj=MU*ImzsXs+vBdQ`1CO$GTj!p1qN;FMJR)|M$lF#kGgClWf{n3 zT-3%k2N+8Hl`dQeK&$EIVFAdDwPtro)Gp0gx&y`Ut2f~;mMX=SX-jaEAKSussc;2r za!Jv`;jjgHj_cvGntqhajJM)?;NlEi+#NXP8o^bCuf*pR_Ay3yBB8E?G1|Q@LtS~1 z;U#)V@A{SzXTDJOuY}#6^!2VaMjMq87=4-dSVEsr(1GOud3taA9r z$ZhheRYG0ztO!`zg;>*$f=M;psTtsmyyDh)OiE-deR>_#{LgPqt|+Shg)qQ>wA7j|Fz+o(r7r0=F3>|mRMlUzgaUsOU<4_Yb9-Ec~C-DQ(0~}^rR8nK@l8KxiU0n zjyWAixCvl|R>y1r!ITqfiFSZzOKl6bib(ccR6Qv2djy@Eiirr%JuSNgD!hLWHj6d5#V$Jot@95&k($^I$7Kv+6jA|QPS1OYru0!{&z;~ z;4qmVM_t%V9AtX1t?7l$h~kf|MICV=djS;T3uYU@5O+NJQnsi%QL<!{~9;?0HSOJmk4i_r6j+ENw0%oim zpN6aRjo2$j@)Zr#=v4e>KzhD94brs_2uN!N2MIN$nONcw<~a?R0F*_ixxvEV;BUo) zXGV!TKz~5)F+*<{v1{}sStTS!oaT%E$gn<1UM4d)v1 z8F?mw;JBtBGuQ3ZuGAX2j)WTzRK{CkuR@(Lg_zKN@>Q>Ug!B5wB{U2_&dqlFmq8>R zfzV0hh#6zm#=+@4F^$VOJD6ATvI3ltup}kpS{Y&%Zxfn+1YwZ2Sy#6I_v=okJ$RbA zoJ_YhbGiECm8~xj0)w$Bl-6W_}qfMCSca&O-PrBX%n#dO6G7 zl|$t%YX!%E`@(;{juXTOUH&4p3zx}cF~VMOfr;UFfA->F>3;o`xaNk^-6voQmRcf? zCUJ$`W;FhHAD6H~aEWcQvJNt<`nbekvx**GN)Jz97jBm@_3#nmgfp z^t_njbyD~2Ug1dTp5aH(;S44w@=JPd>`v9a$=rBaPuRBDYrf=b-i*Nc)uS?CG&k`p zVw69vZ^8=x37WyYl_twrku_fry|*x$u6S4K%Tx@tt1ZH-o?_ZD*butL zWS!Xu7v2XpTV%qxv&D*+P3d|X_VR$QJ6j?l%DqEZEn213qC~OwB93{Rnh)F0;NG`I zfW`mSL-W)AuU!8`Inl)T+44>Gag*w^@iB;)^CBunvoJdD?y5_y`a zpPuAtihg>7Crdx=$!Wvc<_1zI<>nWpP!$j^YwOLeLOv!DVx_=$7=ImRQd? zWBFg7Pl3c~U;9tQy}Qjv^C+j9?`T*uhU-n+oR`#$BC{<}B+5{^B{s9~K2ucrP1&M1 zOreH|%2Klnk^gY=8Y?TpIdgnAK_o%6U#p~0d!V>sOP`BIsw9tE*WRaVGNw9XWY z)hVS_qaI_eaJpXqB3*Es<+xBcJ5A0P((Ucw{io30UsSL3T4BQLRtO&8fi(ZqX=0wy zcp(sZ&79;lGu_o6_BM9(ygwTrW8EH57@s{ZcH|=Cj{k!j$Bs-kmfz1qqI8d`&#&TT z<9H@SsU1~UOe&dl^Z2Up{5>Tn`O!Ia%%81gY`3Hx*L+rrb{ui!2uRBf_GB&0R1FiA z`(fAPb<6-dB4{vYEr_gEuVGc+`1fq;=@ebKYvI+0^S1Mq;JsmtL76n?$hg+v$Zo-3$7i)hp`B?kD1F7YS=5z+YC$qzkL?oGoW>Szw_VEI2x$^uOA}r{_oG2{A^wy$30z zB^yC>fj2^8e-k_GUmDTpr@iBIl*#!?;PvbAi6xJ99*FH9A@UEt=M$yJId{74BrO71 zYJbPyw`OHt?QDy zHzNvlXM9VeX?wq3e7p^R{3Q73<45%2m%i%raFn97ygoa?0;PPCALNt zUAKuW0VTNfV1}MBnk&h2MW-Lo1!5Q!*%xn>xM2nQoOoRl7c;U2I-b<3h?bhy@qxUz z_Bw94%bJY;0rkhe{Q>*sl~+xb&4s&hVmpDNX=KCRs(d~EoNGDS2aZ$M>QuiSZpy*g zht=d3*5(M0(Srr3)XLRsUB8kYoGV2lRWgjjmiEn<4J>D$1Y^T$HlpZd3-W=4=+V2o z_sq@%Xlc#`h3V~+^dfZ7NEFcpQ(KyiF_!;~C_!F-*eeW}!C(1={TVQV?g@rVF6^;% zBZJ6$8<8JA3G{uffnb+p@;F>cgWZ(}IiSVvO^cydw9>^>WPXe6sqM)qG6A{fmN3HqmdW@_s~%*@g1~6E|6*CSdTfjfQx2|cqE*{SAL1;f`soc0+Znw3v@_>^BlaNXdfDGd$jeN74z6h>^$W9QA5jht z>>} zr-CJWzU#|4p#+mC7@DLDs$rE3CMd=SljtB8*~0|AQPd829ouB1+7L~I_~yWNKP90^ zE+XAMDhjijCBAT?-mEGj+YIeoIz5da;g4c)Q+3@CiM`iKL~6v(-)}56qmaOm=r!F9 zG1+Qo=RP87oZsFh-NH7;(olCTVZYPYn-LfAQe=xO2kakR1E3b(eu6$xVa*0DVRRk{ z`?qrXBx}cNt?t3@nn|g(H8>Z`Uv|CN?GWN(vlYr+UYi3YcHO8cucl~@cmfLMF0ViA zgBET-TjD_A^jyP}Uk{DXV_m$dYizba#6lHSy9G{nVDDxh=`EGK>RLilwtzJL z`H4np%RA3=wxNjD;WTlQ8JLCLJ%yJ&)BRQXW<2qHDF1D@yr^Yh<>~SiU+EQpRtN++ z;HJ=O&7h2iVz1Lb{>CsUMixGU2N(t-V@! zh|>HZaiv31&Ca}f)i%xfUkx{{(b-*>LGyC4LL)wz3gAFX+Ba2hU3nr<7uyeyYxheW zxu|~+{PL_&N9{T3`jKBs9dOn}+`6kcgq|JJH;kxB_?b<}jW>PR}c zd9Red7yMlJ{Y-(Ea?75vE0v&&Ld0(2!D?EgU&bDl6efjtF>O7b9uuDKvh$Txhq;=w zEu&89d}j7Px=jtt{@LK!cMqO@*WlUzFnIP)2hUzTc=oEnv;ThZ?4Jyty>jsE6@zEr zIe2zr@N7YyM?Dxw39T`_GOR|tMnoB7-F7`u-FfL)?zCh`^gONN465Cmj&tL=v$}JY zBxSb6b61K0Z87D<6zgxrcWqQ+5wH?Qtx&Y6%1HbdPwKhiROYxDJH1jG@^x<4{991^&G(E31&WSHFd!Vn8y?^6$a0l3Pe4!-@P-T~-r~ zzePR~x>?NVMfDaf8e%7BB>tLDwWmu>EQqW^Ixfw46fhLhfo>4cgn&F+NegD0X1e@9 zIDl-rB%-bc*b^6!)G*O^rKPL5a)dI9U4PTdGHXIxjKp(1sP{7DC3c}I8nd{t()1f$ zXqT}o7h%*KRY>P`x7~ri`gu}QhFD_1C^Hk}(ar0eO z+7mZ>RO!*Uc~mbGFRT}FIPK3;!JK_EnFIRX$y=Oi(goMnM0znP-HWe#y^xPyoHwVKU~Y$9KfXG?oOjrYCY|aa_Zpb;Hl4&ADL8 zzp8?65nN8^uvllC?u$QpUr%3#`%4dN1(HZDOp6JcZ3> zq@&AD0rsI zx9Rzo?LKHie1)MbFA-tHP||MEfd#{N}NGYN1@vn+~jLL_}9R_4LA`Mr>)y z3dEe|HRiwc_{$kR{@?vJKXiL2(#P^M;!q26Wg-zxY%i`5JNA1c6P1d+at`{|9j@bys`rKidq^3P-odE4p>H4-UafNfZV;|&tn1)2K4CJ1u|JYfp_qQo z8}LRpt!Zp`&ETcCar%n%3GMg*eP=EuhPYaN)Oq=>g!X*7R|ysL+8RVZv<9=BPocfA z(Rknf-uA|SczfeNo%SXfjT8IY`|5|cw^78Xp>6j*3ZJu##>Zdkh3{)0-d^<6X>X;` zcs1?C*UG&;k7B;=wc77In26%BU9t5K7F2u za@wBcb>0mfUZW9m%j&Z!c_hQ8 z$y(0eA^!gA_Ayyc^H;uz{_uCn;xSnd^OwGYCiZ$cQDTvCTYN9p_F+QTeXY2qyz%+k zv087tE*CT2_UaKkUN(ms$EEcr;*)wLZuU)f z%>f%R@=a3_n!H#3HT|Qh)%4BCLAWrvFJ}76xK72NkNOpVzOsCN^Z6~{w}9WV{Ep?f zkl#XnQQ-3DD;vk}IDW_TJD%SO{7&F^BEJ*)oy6}Xey8v|h2Ii>OZc_;wfMF9wfSXB z!=Dde}r0m=66nUiy5DR+;hrs{-z4}Qw98~0{&FMp9=U>=R`qpF|iY8B=R36 zMtFI!vpl$)Knz-cr%D4s*}??;J=jchFEehP>TX+J!SytkM|WDmcJ&P6H$e_o>|-9_ z;5^T`<0+m9F+*(YwTUpp+CC#O@i#LPfmM-2{+)KH_4biAX2P-mkq_!$f~nLkMTTcD zyY(P-%{6{_&i@XdPWU>E#DiVz5`ID$KfChDNO03T#t+Sd+L3;19?#L7*ZKGAoLqKT zC3B7ATjv@_+WFnf-}ZNmWswKugBD$KW5#>^PO{BC`rQkBx5s^dyp!*)lx%aKSDP-q zFB;lgTW42pA~fN$i_3%WM2Kb|4YqIs*h?R!%DU(%T?r%tVcAgyO?RJ1&;~B6+)z{? z=COrx(Pf-yh4p>^^xTj+r|o0EeNA6n*u?!sb+0=_tj5GAb@?n}Gza%#CChy}*Gjf= z0jC_rPNednm{3lLsxDF1;KK7I2~`nQdlOgWum>^j6bBxmw~ae~!mrwL0lIK6a%GQn z|A*&XJZyTFdTOrmgO`GPhzoeN$V0(xkwhth7)sb$Ht-#xBaI)H9K=&XVXQ63xE5sp zuyd|)8wh{CW3KUge!Dx!mQtYZk59-uka@Ka)Jn;|Qu0>6*%vxe^PfZniK^prkA9r_ zs4P8pXv@-KJMoxwgEO>9@CeAh!w&A@&M??*Y%vXM6GB1UntU`8?5s|C{Gj;xw#Ew7 z$Fk=Q7jK1omBjyP7L{1)eYSKFt|A!C3BAdE>?Tn&x3$OyIHGo!tEb;tyVBW2Y;wDj zkf0G7;-04JoSv9?rxhQrHa1EA-l{L*4aTl9Q)ar!fPhS0){4C9u z6Hi`W-CSaY+)rxqP=9k?i7JQO(5BkQz{YQ-4QD&8G?Z8{0eT<{0*1OY8~S}lgC9tP zZPeI6gFvU6HOeNtmD3>a_&-WLp=R9|X|RRhD}EG9 z_c_8{HS1EY8a#B846^PL8$)9%E`ToKR_y8t0@;66T8O9}5tJf`?m<`Bo%9Y4a8Hk8O9t|)^fMM4@U zk`qh7p(vbS0va}^sabzK0G4Y;t=}ude`sfV__?nwS4Pzb4{F%3E>-plw2Ff~PJ zVZpFGXY`M_#jRd$;#4G}w!;{j z*YX%Uo@3ncuY&uh>i2srVq0umkJBnF!tlW&w(#`T3wR2)5|RE9lr~v&P2&eI!#VcM zUCGRE&?Bpv!+t)SE6ia#oR#1GJDB#{c;3m>cPT)BP{AM!|JiSG(dQ zY-aoEmz3LjvL{E!hIU$nN4R;c>U>lCyRK(2*tS(d7^etr^QXa7)taJqIILa&xG>t@ zTMOU)P9}4PKZjLImw=p>j|eRSkLCObr8;3jxTr_u=~Mk3^+(=zAkf4e22^JmrLAS0 zV_znDi6+T1O53@bVvcTC$xYnpuMVKdhdcG;EsT^mwp5*+=C>#<J~2z*ndzUKj~EQ~wGKsV*;8T*k#>+Y_6 z^xroujvU$-4L%p?=#KiIizK^qBl9=SIske4TQ*!z*$jRr?fcvLx70@m+^6i`Cx7o# zp!W&=uvcz)@6(9hr<~rWk-bl&dY?x3KIQg4oz(kua_^JDQ-lae8Y{6@hfOI{TjN5b zVScON#^0`UT+FyxmcQMN-I7mv5N$LJ2VNbH>5ktptP#{_$pZoV=GKEC1AXfM58#)m zVn*X^7oe&!gHViz82tm0%-^fAv&}<{PFa2~i_2XpqWL5KK*Gma1H#=tbvFVe`XDNe|8P*Ix>(zbs6~c@bNL2EcmngFqTQl zF30PKhY}j!qncO9P`a-Qikt6}!7R>|v1}=B)+%9r5ak4%L+Vryje3dS{H|xP+~2tVzIioAP}n z#=57-c%KiXOg33cG7jksXDi>36;;I%^#e5NJ5x<_WaMWSPA(s3Of4S=logmF6x-_C zg^DnJ$%vX+ka}nKC0P+)ZGr7uT8P4?g6DDOg;NVJ43DeMu~ir+DB;3z;~%O_a3g!c zRe}R6^r~r0ecblX<|0`HY`3VM)Gw(@?(h4=&w&5JMTKr+obOTjBzUOt{i+M7gd4`T zy0RdJW<-jsUAE8GA1rV`u*Y$lxIm9mxRJ~KHzL4EIijFOMQ9UGaPxwTxJ$+XI2XyR z(2-j&vH-&t$0W_F$09`&dBD zz}~EbU~BRsweKpv(G}swW?>HQlypM+pue>J(pH<-!v9j*_o#fRbQ5X@7X@?aMX)_| zIIgjUob2Zkhh$33I4MhCC$B0XW8v_){sq*kQ`4>*#~}!P=X>A%&h?wjL!0HATh;kO znTvC>s?Q4PDyvV`2Nig;=_{+2%;7e_@&}JNyC*Nox$PPbrYvzKN_*i@N6l1$lL(o# z9p+!RZywOo6Zs=kuc1a81aKE>@Z?`&2@)3MphB1`!}$eqXu|;!WWcDV?m7jN@dq_3 zG@>Re4?_Lx&M-L!YxzpFGA6xZqOr3qlMB?-p2U@CXpb?qHPpUvY~$AI;d;uuVvJEC8YNxvBtI-D`J5GR;jZnqex?Wylvr{}gyiK$;;$6+4& z{n;(CecAmmnC2#~KA^x;2WSs-`krVs@zvr5T-1h>%)wk7rt({1CQN2+TA3lgshDU; zFB2(e;g_Tb*Rx&7%pA#_G8)c8uoh`(0>7~yzj24?W0~Ke(|5(nevSoucr+f? z1U)yn>TU|ojpy5Q{ZG54D3PLs)fDhKG5wiri7+`Bw`aq5vgQ)4xFsMJw9XAZwQw{q zn#b*V^gCJIC$V6TaFZLqgLMnRnxB@^4~XS}lK!aJK`M6IC+limyqfs82`1wj@gem~ zO5I*fw{Kmbjj7}-d{^;r271-(Xyp8kk3q0tEREihx$(f2YBpG$G0%8dS0_0!jU=b~ zpSylR1ASvR3whZcGMwV-X&--7I>OcvH^7*ONxeMhnVtJMBKAg9GQ0oM9UCB*{>n*g zFHQyP3?Z&A^jLUUhWEQj22-mx(nxq=(c0&I-uM6V`H;Ei+;h%7%kTX5^E-;tR6uDes6nuo zg@vAFk3!@n>L)u*RCkb>8R?Vl*9B%=KeJhnKxtyIagS%^1;Ga5N8GWhPZ>@?1;@2V zbn6tEBMlKl^@yxxIONz}2zY+jf~qyEb0PRQSoV~_Z#0x{I45X!M_jj6Idi101|}Zo z0F92-jm8%iW_W6gX-(Uh3wcT-oSyUfy^#(M@1Pox!C|6}J$Zw~*x4CSl=1K4ev({} zpQH#PiT{vd;&II2;OMeGx6nygo@QvKP%l7zYul->BkI{`y`!?CgCI~7@V;fL{ zy=z}EiaSno0z+tKx z@-~`}3Z5g@fIwerYohYUXIVj|XW2~y zA`}Ae2E7en6rnIjDv#fMxhTHad}{ljLlb)YtDUcKz$|FB1h%lZzuLNGsvjN|aV%-D zKL)~;|0b%8U6$VEX>2H+*T5wx(c2(nC>>x7LAD)Z&^T7(TQ!~;ptDXdJ3iIW5|^n1 z?lSay&2@HOObI<2u#8Ro%d1iwk4OFgayWW%baxR@#_vx&u2Eyk9h+pD!g(#*2&Uhz zF+F4RHae(LjcjJ*_|;LqglcvCU`9cVGhxhaya>s&TODK`G6XF)D$+q~(67zbumKwU zf;cA%V<%`apSCnw%;ibqs}gbSYJ|B$VZ8jpY=H?4@Sk!*43&Hw!Gt+ISoXMV)!1nH zNH=q8XLxE)lZ~C8M#8TMnmK+hgNbqff{fbBuBj<@1DlA#acKZl9EfMxT$c8DunB{A z(lDPpQ3gC934Qen+2xBNp-Y5>E`fxmqUZOJP=aNpETf_?2@Re_g|n9Qr=B-MJ>Osw zW&1Ei>JWsA@FsNBulCT)z>I5~MW}n3iAhtlpO z_s!Tke@LvXimXmKGs=o6(s@O?bx0>#zIl)}HG_IXF;lXJZ-kF;dB3Q#96_n zji)sI^iRE7vFQZH)VLdQA0I42)oC~}Z{==ihOg);`bC>wAu&x1dJoq$9%jM<-a`Rb zI|m_@tq$^46*60b-WFt|GHY}2LRM&E6bv&bc-B)w#`sY@-C0V$MarC%bQ7#%DX-99 z)*Hw0emmx=Z>;t<`8J`eAHS{|e{t@OPQ`Z7%q*nRNYc%9)xm#VK0ss?v&5W~D&v3Ol?U6A`1L0Vb-Fz5(*B6WhwRPM|qX5=8!3>=ea`3YlT!f0?wxs zsk9(7%E0>}rDSVU{RI_CcgH8)M4@%fbt6iCpHRq35*wxfbQY0fj|hpJ!ZD8k<)y>ZqEdKqLmteaJ0{|F_Z3#5^)iC zWrJNm^V;U*a#gZ*-WlFQ-uLZPi>IPjy%p5Ue5!Y)G&~Ei!VpJ`3bgcT-dZYG7?|zW zUn^Ml?-rKbgi`0GVx;4XRn&WQIl@DZDA5W(EBA1o-Wl#bX)r&Y=01HKe`UBIbWo)ilZEN6hcc3MT7hqoItzx;8oK{u0i}SLI-*nSd+u>Tx;Y z^h#a?B^*wyXrakp28co^$Ny(LCqUxSULucC#bCrn&b8y-k=}1IaoWSR{GJF~*NI?6kzs1cjJ~ z0=~Az=fR>~mCqzLdR9M?FD1;%2xnE#zyMS~qY_T_wfQI)8yTJ(q$i759PoW2t2b6w zuN0E;n&5eV0Pkr#@>g0ls@AkezEJSQ6(Ag}4fs&oiAVu7gEvml@#p~vn@(KMy$U0| zEeR=1@UEypR||;b*~vHwbQfPsoVeuHmVDLq8fk?o`C(>%{LTQtK8;$Q=yLJiy`R29o|4;@y`n$Tvj3 zgV1Lc8lGP_&K(J}e@k>&pr-pLkPy!@k$U3CvOO#AlosN*7tnH4@^0s#=nx}*Iq7eb zwkyO2$B(%^%dS)<3bCdz-O)MbRDa37#5{l54aHHSUbkCQgmJs6&{KOd1tAf+U0ht* zT6R-z>}>8H2&_e75uNeYfM;@(>pAbXr29hJCAG=h=xe$?n?&pcFqHH$b{_RSwIPOq zv&k>cxPq@v7%Nc`S#`DAYBJLs7N?)HJ?R>8tkVWbN$*vo`<%UDasOsmb4Dtv}RfU z_}qiLS@V4FrtO`sO^uyyPAA>acslxLBr~mgPL&ti3Tu&ucuX}WCKlTbg%JrSa0!ff zYYkYQ+EQeOIh7V$r67LRTocf@RZ>c6Ub4~Z6o1$WM6+)vFvcx(+G-)j2g~AFb`KLG z3vg=Lqk=kOqn8nb@B^M|Zp&4mQ2Q1MW40-CW4-{1;H>CotNv~71SvJ+B2mh19x8J# zXZO3#5b07Se*lBug+R+etn3ulc*E5|)j(=ggV_qX#}d6DhyKV{4mLt$5W0^^bKJ-f zL;bJXNL@}FR|ARBDKI~2BfuK?fcP<2>=M`vF$No}l7oMQmuupJZUa4xIT)nHBW zUzlN!>x6__rNpDcd?y|iiY*ZN>>(Q>6Y^z&;T1fT-EhwBxyg#7oqwfUYBluYsi{`B zgX5<9b1VqoqnZ`rlX%l{^gjFGjzsx6EQ8;3?|O56XOOS4Jz~s?pXq=t?L40>!26Lx z4c-bv=$lvuB1LKZm1~p2oeEJr&yZ|Hv5Cis88DP#S-f?yFMujgZOKX+WyC9dmm-|a5jy1|A`ePpKX^Cw$J5%1`r@tmuw+=Xh2;rgD!B_N@4=dP;F8%LDS{+YgpK3U$7ll+5=UL6^dAOvfii zc=%a?HHD(rljbr!!TtCTsr#bjb|rL|QjIB8HzFnGoMX0eCyT^k?buziuf?BxwoFyB zGRH{F;l>psm@tB1K=206o9jAuB_>2ut%(VX);#+A-~T=_c_FO9!QGtRxo@e|LqMiS ze9gQjsIO>BOaLJ4tf-SU%g*9EgA#uhb}rEIMlcz2b7PXIZ|E^te2!g8Zhc5h$TwHW zEBi!KVse2|c2iaK2L8^9ev7|zqSuRt{u`K+6ZL|n2ocJaO9IauCR~!s(Z}&dVufge zdAve=a}p~>*Dh#m7KMb7rC&^=xH}aKC5E}hdIpT){D@_#Wr9LdRA4Kfd#Y^3^0C&v z5HochP}koT2zE8B0jbL6K)RL!M*b-J-Df|3OIAV??r-QvA>8_=HJDe?K8~0CGLL6j z84u=Ut|+s2<66=V*>0LUB7W$WXr3mBo@K*$*HS(mc%_H%6Wq0sm{-hyIM{h?2c~lJ zIm~EbVnH#USJ?-5CMKV=Y~vcC2y12eJ)tIrViOZ`p&F0Bta%i(J+Z)VJ%5=@*|nu5 z&tU`s?c#t}KAj*=VkAK`&=2#zcrkp>>>tQ-fc+1B5(fJ}2a6WmmX(MLd&#qVTOux; zD_U<)ePo+EVG1Lxo(CC;$3^v%cwC`tC0uCnJ2CHO#VaLD;ip^T5As(A%v~M!ljfpC zv{3k=bO8LId{?!`gvBmywYBP9`b1$4s(WfL;+gs%dalSw{8@S_(X7Qt^mCrg74mJ_pEBNv zc}*2Z=HbdY8GrE!vD*U|Uzr)ZmA_fIxn{*~3fDBr*ONx(#Z{RxzmYVuF0RUoU6eFj z7gxDrUrieBi>utRGm}R4#Z}p{)04)ai>n63PD~m(7gyzgyy6YHX6wcIvFtD`_Zluh z3MOl$#b9EEbPad-`9p$gxxDOK83-<9arYHrS2A=90yW~FO}xl(2a$kk>Y)epX? z%sTzMAVz+>2Yl(ir>Uqhhw~-Aky4AvMQOYY+EdR8ohWj|3IR38taA-!9fQ#0wnnPm znqMlbbCKyvsB&R*K2)yFnoM@cTrz+*N?Zm|if}x@T3aHH12YjYXBP5X96E~%{j^az zWpfHWwe>REx^JBkz&mPX64P5E>1CD7pXMAHOt_1cY)a?9&(7&@|l1c8fPE%=aGP` zSK-NOzChOfOmV>6(6NU$qNz<1twu;`KCcww8C68^eb2npJgWzB$QGMpa$+t%VXG@L zJ9fEt81W5RSUd8~W>f4q0n>e#*$NZxS-r8NE9l*cKT&N%6psRKq}rSRaZ`S*;^QX2 zXW8k$v^qVZ7vef9L%5711i_39 zHIO^#OaFmz@z$r;jlWI(P% z9bKrDmWvOl*^V2;U1}xg4-druzUySx6uFAhXD_!jYF8@*TT@Xm} ztj-kgc|EV9WZc&&{J*&#F|%_XJ}|nbcPq}Ay6(Iv^(wus=tIlJ!Jwz={z{JT`1a15 zDqB$E`3=x|*LlQ4u^aNzP#=Hb0m_>#m1b+i+sb_wS@XkKsE#VGOZcti6)G52FaHUt z&rK*t=@O5`QK|FGB?~BOxVV4>zYVUiw=MPp@oPM_O9b$#A{>tmSs~vG^KY{23Z!-Y zr-=u8t0BYnV+oM+473EZ+H{nLkI5JKO*xHAHy7-n^=J`=<)B?|zt+d-j;Y3x>-e%R z#r3rX^RBP-HO~8nIjX2L0ZU~N^lK@7{J5zwIwa5%%Dr4fz;d|mp~v7NkntsRie#Qg z<`~JetMqv}f|nzB*@Y~wTVx+cxEr*w(}f?CcfXOiDCrh;SVqvh!@!}dz>E2PbG#ut z(D4==P$1PNxw(Ne{u%H#WJ?ezSf@bZIwO?0E&_Hdb@WHd{V0v%gx^EKcwA&DB1%Kd6XZZT4BQL{ zm)(MNwUCUO!vaRJF9cdDa{WB5l|K=6v)uWrYS5fgsGBu!&BYcHFu!YXLvz5K8IeGJ zk1)ebK9hKF(Stk(6Avjm5$`_Dv*JYQL-N$}i7M1Pkucs^H!>sa+ML=Qh%e#Z(qYb5 zJO7L!FaAmXywilokAbK_hC*FZ?Jf&U2u9@X+&zA-I5F4b>)E(F7Z-7@QZgI8P1`LO ze$4J08cz4MMhk%Ol#3&1i4c3DLhXspN;!_dzQ}V)u6lp4|NC=!A22J%#+#2c?sJ=4 z)x?9NDK zWVoQLuaMrI%Upa}avJv)xEfs?YkWsKAYYe}Unbv=FOmD^mJNd;6JJpTm;)-}M6F&h zQ!irgY624Yt$cze%Cr1!R+TpLGNLC7ZYl*6?9P$KCsC?npLb{H0f=|}6PF%=h$;h& zz{LpGZ{J5u4nC9zpTEoHsXc?yaxNkomOtmn*OnEKr9Q({m2`(0SC%Xz4ixE?jPp5F zgm-p+kgjyzKt6?TR?>emd-0(#5Ku9ThUTJV<8cmeqb#$O%AKI5CN;>j>^J1-rh*{E zRiu~_VS@}cTpd#~oTw~dRtv+47%RFsml+wy!^{Y$PadQ!t8B#13iz&rS(TvMfKu+I zf{Z=Muamq~CTkI)cif)ZFzK*44UgC6ke3$Ct=4V?WD#}FlbUqyN=hpcx^t(U6CkJ8 zpgWfcpCKzDDpk^b4{n2NvUkY7k7a&(?GP_b0_#-*L-b)h zUj)hmaptIYk1&;FmaEK3RX72E!`E(djr?Ix1-HaBVLs?q?m;3|!rsflKXaqC<4iGm z+7RYd@q9`{UapX8A!MV2KMWU_H3M0&|5cqo0|4Yp0)w6R3xIqweBPIY-pcsCLF)sI zZ@BD_c=LhAecAEdr<>2$GzwLc)SlB(Hzg)5B2Wt38fQT+b4&basamm$g*Au7#_w4% zRlai=j3pPug%ZCNiAOpSQo~)YlD>+C^S&uyj`z9LSN++9EHXfUfcAi?sxj%+tWx7X zmw+m|!JhTmc!aaV;vS|Ftx*M$RoW9|d-?veA(6@JOiOjime9_mvm{)}{NS>S z)B=Dx!yN0|JfBOiKs4}AeV2)9A{uP{thx&@w#%`uv2tUgmEWO8|MS%pZNiG^K{3)khzX__vBCyaO}D~-jw6i zcYSt!6!R(Sd+JpKx5t}?Htx&uHX>f>xnKmce4ImK0iluK(*6hseF6ygYy?iFXWuIA9{_m5 zrfQUphG&)PaL*Q-1Fm0${>W&_6t%YcgxX(EN}oA2Ut#_7xRx)MmhY!!o7MXArnewLdjt0gqzdcp3TyEmW`%wftKZOAUm@9sm^RkvjY`pE*nt9beNJR zb`V=y$|11d=}7zRys-lMzaz3+U(h$3`fNN~JK)>A0L_4>_6er!k^P=!f8f__l|77M zdl8#Nv0Z2qxLytsT#lK!Hi`;Bc|A+G!86tq6)Wg!C^y}AXmMM-zFmz$U-SGcu|mx# zx+0~4X%tn`erHYMhd;!tJ<2l*@VA8|)b#Cejt+FrkSyw!z z4U`88rMqGNyRseQlhH?4v}(%}BQv(5B>1fVFaK?1#zm_~W_*|bxAA|(nvoex`CrHX zgZy9ct7d+*hc%u1ZJ&T>rR@(84dM$ByWAX~d+s>q235;~3$W_@QB6fp;2dLBkFh^u zmSf%LxLj%*8laZ)QlDo1M|~m{yO8eVz^!6LQzwsoW5*lu1_xc|)G!hr}4q zlW4mPI*HW^y^?`1KdlyHO)$)W_D&T;T_HYok;JWImC_6V+;@iXCbwdn5BMQoT^z0m zS4GNhQ%3sHukqGMOf?h%2&~yJWFODF{Zjj+K(gY9?b}GZ>ZA4-MX!dnoO_}DSjuHa z#K7vOS$}kaOaKFke%CN>6YH&5rB9E|GAH!R-PC3KZpBP;uq)U6sPULPz9HLO|6|iC z+3VdK%}rKz#}DN!_$tnc%v^aDJ33-f zC?{fGw*bd^bMfs#^My#_x@W`Yp-5u!!x3|DBvJY2pv3*!VI-#2Cn{Ge>8*zza7six zo#Nevp7Yoq z?*)9Di88D9rKg;$f0`1p6-vJ12rh9h>LVc>%o{y*VnRzb$y~n094;Bj2|7>h5He+C zo@E(45eE(so7O2rJbC4CPknIM#%fn^SZ8%2IIK%1SIz6&5IE5HSz!VI*Jo9;AScLY z-bRvhPnH~3;BAgE7>Ky=!gF7e!+Mtm;>R+hCxd7ndM^yEc#cEgzaaGjDIV|ZI-A5` z5^F^@W4|nOUJe6>?pr&Gnc?9V5%Y4hO&LAWkr#Ko6~Iq8F)dEFBydqt(0n&pkxGP2 z`DE;bnqv}aYW`To>~^jY0Wy9pD^^%@tO@~afz>re+vf~(@t*~xobzrh%fql4&4II< z>VidIWIqs+R;&xYrg?cASXWM>MvA`F<@Ifvdost^@AGalTu2`7Op1dAL%+aPBeN?< ziq0x&U=EAEB;bIpMBE4P-cXBXb_6>1K%t8|_PSmOc%KU--1otU#6HAwno=b?_AKj& z=B(PjcUed5FnDe#V0y+5*GnZEyWAxk&7DCr6kjWcgqd@^bAyRcygKtLK>TC?#8dk* zvnFGqNA(g_H-NBn3W*gkZ^aVRkx)-NJj;i%Gt9;28J`4vNAQtVa`vXmj&H7{np(Dw zw}P&B)#?lm)Et%N=^CaM1xMPWvMQbxljwk1$(3fK{!agqb>Eit!5SZ|8^yUZ4tUV< zx=2=LSd@t#!%Liz?kpyGM3#)J^D^oKq@&atnVV%1{A%_S?v>2Ov)JB^M$Tqu<}ee9 z%+CKteqAHjq4QfjS+g@POa}t8seoA{;Tt06Msz;0%RH-V@<|5G0G>}%FbKNyQ-NZ0 zN--c)GlDk|gZw%eTyiB?pQ?;fNY!e_du`Eqc429zS7E1qAg-!(r|b0ke(sXf<->L# zdVSyic2^!de2latjq{ye?E{H+FYHb^_+9L8xxEerh#$V@c*f_Kylj{kJS)=^F%JYy z9Oj#i*>grk%=}>T_N>H@A7E>?)I7*vx#D8kz9m;yuc{tjcFJ$=fGJ3VX=#fBT zNv@M&HmKNAL_PGiEILg_i5;*5?M!Mj9`cLdwaY2|YRvwze35UX&o=L^d4xnljf+aD zgbdWWpQ=oNOiX09>Yx~?XFtylPN?ZhJaErLs@tkeIy;!C)%oTNAd#O}k9WD3%hAan zq1>n)Ds#r-)()13;Kc}I;~N6U8bWooLnMdpQ1-^V*$p@TJS*`#>1ArYl}BHkaWbu* zq)(P}w(16~5VL9b$y6OBf?ADq&3Xu097)#H@hm6pFz%*}tK#w}9IKG4>pM+!QoT4P zn_m`}c6^z|OYECP1(oKmNa7OWQy-SgsmgvQ-ZYpV!2setnosnDuYDD3AWR~BBc~0- zVw>yW=Q{CU0(<3s$1v-Z_Y|k?&PuHpZ?R>6R9IrE?9l+cLH+##`r+A|P)lC5GK;@? zD+RkEvHO~qeABEdCabYpbULPyUmYCU4BRYLTbf;)@`D-uY?~_FN$O-f2kMB1YHl`H z$p?5HZ`yx$o%)#TIa=wYcAeBtr~;k$u?@)HEtkyG_~w4E7xLO%Bh@Ex9^-5|#~VoA zEtC&1J!K_-qAQ8WP~U8}OBeYtji}yv+kA(Xgy_ER_UGub?q=_fS9f%|Ug*l{B@7M&U_f=Z_iS<&Z%OdqpG~^2 zKO}fGRlL5V2C0i+C`t!^2It-qDzw7}0 z9q`#^y{%+QT^)UAQjiSi-SSTAI~1L5;~c*eo(bQ2L@Wqa;3;+C()UypFxJN~izDV7 zkp05^$m}XS-sFA(!k2!RScW$@WOzm>B*)MF3MDJdXw24_o#6z3lw~S3O)TWuO<`ZN zC%IDbsvMY!cy|bX^9NiVg0hTA@-IRUDwE@u!;+2_zOr&Q9&s;CN)`zu$UYB_%K|q+ z_TVYumVD27CcPB!Oadt-W{l%#4VbFs_6ma1!j`9M1A>4iE-B7`KN2mN$<|jP6{77Z;+9O74Gvh9fB=eRt z45r7|6g?4v!HauueWvHn+cNKwfg){8fnz}8YKX1lI>F4?&y@!=v`FF_HE$93Nc_(C zoo@@L!g_n^fxhj`nvvydAY~B9uvIwoEV*sRQ}1^ZW09qf6uDguk=ZZlmxJU@u4^N& zc#|vjhPWE^yCL!}&v_?YhB4fEH(cK3JMRe6TyLDf-ic85Ar!9MKVF=&Ta^UICET){hBlC)wZTA!&rU;`{oydd@HCwqi zZFgp1yEU}Y)xhm+`?g!vMA*I)C2XZ{^O9%8T2v^)=y@N04K2sIQinT4|BZX!q%281K|+4zw1xaWZT~jdzw7MZR{M90{kzTn{fGU# z!~T86{@rE&zG44b_U}9P?|%FDL;JVe{yk#uywzoYEm0{izA z`?t{kEwXe8_HV2GyT$(9X8-=f{@r2!zGDCG zvVY&Oe=Ym>9rKnr>0Dkq zC3}bVQxw8Kl?`!a7Tbi;BI;#ifbY--jZXxBG6*cR{$w z_XwnPjb(R^3Hn}+=7Q5zR&}aI*02jp%%LH-4<;!~*_FeCtR?*om@o4s)IQ08OLwNL zfVN{pRWP?;((memsI6balCx)9*pcs|(YcYq2~{tY$x;M6zmG=KmiL%Q=a5av+-W8h zNyhE6n_+C=fa*eR4)j6h zy~^v=<1^u>!wR<(i zrFx~af6k^~+JqEeHCTuBx9%laxkmL<_yg7{?*BIt?W2D5g3 zrzl=~NrS{!mM!)TG}Owy*Hb@NwxR&x*kzozx{-Rg>WIvzud7qyq7n)NY8SF;HSCAj zgGwwc*(jpqvX3Kd$japGOwSJ+@!an52VxKi>>o2@7s+dLWgm)0#uZ&)~ipe1g9~D z_rLYoQ#j#&GKGQU)cv*u=~C0smBT7+>zP9)&(*h6@x#NH5WA9MjeJocUJ1~lp`tJP z7jnOi!5q>5>`if{W;j4Aot<*bl~7n(Fk#n-*cIZU#vBpx?KKk2?pfI_d&X10O3=H^ z%-;XM%*?R=?V0&N%}h4nn!Li*xf@lij9aLgjQidHOXG$L+bRW5{d1;LGQk8^oa7Ml6MgT-hCay# z2b~6>;~{hXlS0SC(D88m9Zjg*OHBf^=u5c{@S85$s*c#Z1%m zfVmxF4W(8)RcOh?fN2zm5yl}QDiiV@U|R*4fG|oi2+&fI*Bu%TBGu|O%ADOA(BoB0 z-8G!Pv$UH62~`5ptuzAEz-2;Z#k&VDxxo2guMasNkq;_$Ip4QuvZSGFSiB*}ZWAob z*&4d4Hf!g1i73>Eylm;bwr^H{eYWVbv2dY?4q&%dX7pg$JwgXOch>-_5fg*nt<$q& zi=Mo_A@zZgjElH~QOUM%a8qS;P<5~@KXwgTYOamMTbS_jr!RSn%pdHcY^+qC-jJvB z+nOW_4xZ`e%yTA?cnr zf{(kJ;*CQx<07^PiQl6h;tfMMQPfC8#O+8M6Sgr49KJQTCoA0CA#}3nF~$UOv@WG9g!${7&L16n1W);Tn&x;~t%Qq8bBS)?&=jUsKzz~w++sqpw0&4r&+2$@KtG;Y z6)3m5;NUc`q!?DkG6oZI#UOLM%vlAL#6OTl!u*wLvVMfKQ6#D2%G#^ec~|f5ikA2P z^X?kS(ZgTFFD;q9;$_UQOzvcXHGWUzd@7z8+1A}}N`_+T6pBg5gGp~XTOVK~Y81dG zvmbv&Ou02x3KW$xfRuvXWOluNH%Gq{c7=BWp;&#N((jg%5;Li?S!sJ&XC02I&IgZ| zR}fM(ZsVL7)A&yG)bmyGhc7QWM2_}yt)0d;&rt(vJo z0dwAx6On`DyTQ6V`GDPW*HA2Rqew{KY{3XLCsNWx?1I%Ad?IFxZdw}f*Ikn7sh5x^ zsyrONj#A_Itd`7=x7*nSuF=J+iDWM#SGuIwpVSA4AC_-LKmJ-q=54(1!=E>AK{>e1 z+|>EImuyR?LE?>hJ!VgR-q?;6t8IaP1HXn+$a$(#j^*v)tbfED5ivJaa-Gyu-{x?o z{0rk?cCeE*F>u*2*uRa|<(%Qb2AM0@PGMBzZR25HHR)H|!fSNR>Oo;5rq=EdY@GZa z$M`1ae@YEH%RRDTvq22MzHRffx#o$R#9f=X2PW(p->w|2iCdB2|9bWt;Ks3ru&;G~ zp3&08008bL92ivu*SY68c}e3;!`EtfDmGcy?Lq-24);NNV*!+jptcLS| zYE_DH#}O|p%?;M?c(Y2Z;kXa|CqN}{t*d5y2>+0yC$rU9<1Ev0tAMTj`$pp)mr-*# z1KDwI0S+8zLYKQE-o|j!-;Ha|=?ltWE1<*H>X#XM;`E8hyl1Jm*+@utBb*#@@jN+S zmOZ}C-{ZY^ZL{_8R{$>S&D;<5me%&cFz!IUP0@J~vm=rW6h`n8EqPh#pJl@Qy9jVt z%%r)(Ndq&OpWqoXasGAHiSj%n-dsF6F(a#0{%n&!J78y8Cnkbftvqa#hiyFUkcSFN{SbJ-r$(#{4!%+L1c7^;oi^g^^q@?8OQ=P_UsijU zq|NN)$+mtugd^I42r6=-Fj$yNd|Ai$!ms7!I&;cl1Xi|=D)A%kt9M?oAvE<5)DtAH9eig z!=ud#r;~+}yf~dKlH|$hmO&0})+yBpzk<_yURm-UMwRo2OjkUm^QPgm0{$@ky zWp1A09>Ci}ui-WH9@A?iE8DFg?2u~IH#I-%J;1JP2f(t-(2I%jx%Bkq>cn_l?5|)? zPJ7K-4ufUH%X5pnhOtKN0xhrOcF!)Wd`-65x!iT}9-hGlz+~^6(XwyAcHM%T;thJ= z++fx25M(VpWX=MM-skF3Dr9B5#rIVdXcTh>< zOZ4&o5LFEKcM8`mPOdP_5pTc`#^<MA5ED8w<^`8Qh=>Wy{b|`txC146hNy|jVe`WryeIoqrj|s=~gcRS(W;cN&&Gd zRi{z_tV(@PR|H^j7u;cOrmM6A!18v7^|bUnc}*H%Rpx?B8O}9+!_^!CEEz-(WNx*- zE^mdBO`a8gCXGkElc&ov9_)k)^dW0epryyZk!UP%_oJXldE1yVD-X_?PtB4Bz1K|V zdO~x9x!E|lw{Ih$s=4cI;ti|_ABMdaWtlkng0KRP)MuFMt^rN0613FfuhVF1Iw$Jo z(v$4B#@J}8wrHu8P~i~eq}ZSs>=NMHW(|Euw)hU_1P7}&>xkOEl7v#XS^HFy?Rb}N z0Eiv(($}EV52!P-Ve?wt$LAq9zK(i6Ir>Nc5O{?kSnfgvusCH&+OWR)k%GRT-6HPY$l?yCE)%^;np1dW;ZtA#uUgKggD;3#Zw>1N)rR=pSf<@ zHEf9FoL{D=IrL(`X}*25Lk%v1Ozps1O2t&&9%cp~1!aLk4PSHgRL=@Ion<7i&XPCx z$Qu`LK8b-iAlsD}2}bxm7^Bzxj%9vJnO}Tuu50$J5b2TzxQe6As!BHyeb%!=6fe9P zByTS4dGj03ij(vkScW$19F3m&Xw+Qr1hszUw+OmKBQ0a8+GyDIK}hq;(u_8zkF)%)-Tn?=R3t; zeM7gt*eU*pKE;RY;uDcE z9X`SN)$sHw!1P)0Js4CPP}+KH$I&Cb;QOSMq|)#`R3{zyK5|UG9b|+1K9Y)ORKR~b zWzB2y?02`2(yIA^w}Ki%NkdEKY{BY@0H0{Yk35en1~WDUM*UoEgU`k<%TKTYU*i{m zA2fNGqY8p!MtSaN7ibkc({BCxZF-ZO%C>E{?$gh1hihoJvR_wk>3X}Bu+($DJTKg{NiKe{Ksp8Vb@>ze2LY^gpdi#v@KMk= z{bj#`mc7dylvTAy1LN3qmDBoFS)!}dr>mSw6$ey~pYQ&YO$p&Y(})J)#o;@_QOsoa z=n?4&uOo*E@778!HOpJAOW%@_@7EK()jCg-P@3da7I&+4dOFGJ9gqSoZnf^*?Uc#s z$&A^VzJv3=VCN=@1|{Xck$x5XiZJ|;2I-2RuJ<}LGt(gHnsq{y#3=*p5Ng-6Jl5*^ zf<4P)g$`6%6W>#_TwAMWxyss$c-1py8v;3*byEhVQ8MX_-sz>c4$Ac0+mL>LoW8)J zC)tXg0O=XloWs5M+wVW=v)_KIlg@s-izLJ_Jzr{{O*o`7)AOY=FOW=S3Hyxg2EDtg zhya5Tf_n84vd4;$tyUXhBK#yMSpHoeCTjeOI7>yyuiS|DtZ?H|c2F1r*<&;w$`Y|` zyA|dy##zK%gvLExLo1WGclq{2Jmb{?3R#^ilJ4K|lTqp0J)kW7wE<+|Dcf01k%f;^ zF_OIb%y9gzT^yb67Qf)DiWYXACL%GMU90sKiX!zmFS1Ks4w@f`AY3>xIqpxOgs}Ih zwztWNpAjG^3r}{;)*IYLs=aG(*!19xib%j18^f5^!;Mx}*f%*h;+fDar-itizE=95 zVP+=O_2qJDv;p_z+Yx(*+QO8dk64i}OnH3I5r->R(kz^8ci7v?nJCSbLsDCO4}Xx>OF0lK@Wy&N@um&) z>j*0EGh%$t$Fjc|>t@5dNfyiS9hz5wW@0V(5mBgbz~%W7BIwh5lq21g?4Dm3Nz#J4 z=AzBoASc`V)iAt=q9a#{XtHL9Ol30~+4ngAVkBlB*Sgc&En7+&j6|jiysd8qm6ID~ znV#=EJBZLzxkZ`j?X-pT;G&$K^g#P-C&))*BIIAe4hqe;S&!*w*-F+!`dR3fb-#Y5 zmu=Qv`k63SZPoGAP>z+^h^dd>s`JfPWOMb+n?ltsXaEDbfhUj2K?qMhUheVM%<8}y zjkO$V@dO*t*adQXdcS4MniK}P>MsUzx!kmxyM(I;_kFL%XS+rSAzQl`po7)~ljB!f zU;S861$V=>ThW8^sL9zJ{meMqtr_~6akg7k`k8Sef9hw(iOA%zrJd)I+p{+E6fs{B z{Qn?d4Y!mlemQb4?0QXnIX|6c|Bv)MqHt{Tb zRywZ{cboM^dGG4>)CY?S#rv&DAgo9PWMC-T01VkLROif}0n z?zJ*sGL|VH%KXV}FpF06v-C!^5Uy@#X zV?A&Ar}U?LP3%+FbBetGwDr77x}RRpJhh%5vYz?YofoS0B&J+>!Ex((s_=m0 zN)bs0TF)C=o%I}XLf`eg-p06ob~j-sMqtc z4NjHe{i=LdS9v&HWf)cd-Sw3DlJ)$HQbs!a^Yy1cbv++ZddbhXKhyeNN7ZX{VWR7` z1bdpf)J++#S(NHT0C}+Y<>kCb9))kd zIxQmkm-gsl<}l&eAGp%1RmWnmS{B?`M0m1Ip;}ShLUD?$Q9ET#&~quNrrmOr<{%@7 z91|RY#T}ZUD(#c!0f}FdFsPMs(p>(N8xLjHyA$=mDx~D z(77QT^nq{lH7*%kjqP0C4e8CVnONAvV%_JcL}N5t8Xz=4Ln0Fo+o)VRk|JwKjye?> zaO3~4_1V$1f2$+^N!;_m8lsvZ|Dp0U9d+WwcSUEy$|@o5Qc@^iSXq_4d!I@QcPh%o z+jWxVRLPr3{ws-3xg2i@WQi-j05b+iQlORX$W5JhztErmQ@+=V|6F>j6qD}9%GUl^ zfI_?`11d@g9k70d&aOu*`i7`+9l^7Q0a4v!4dW8vT^3Z<6W%8Qy-WlOl-0)WnObh* zP3Zg1*fXrl4*FTmXRDBD1S9d=ZgoB{T9;3GqHox~<_4`Jska?Mdlm#4H! z%}>;_Xno6M{fscM)hbslR^+Ez3@_rJTm`SNc!SMGO4|&_FH7Yp_ZiZssR{}O?IG3e@bUBWl7eRl(8%>CHa@eJ1XaMTw6%?c4776<%GD#GR~VehNl)g&r}cB?_jy)A<{JJhvT zln0^+AjBl=^~K)$0+5g!^PbyCUO9++v~V|QjlErI=7?fplAZ}H4` zPCOW;Hxd)IWA<@a7BljAEKyZp?xqS?bhkf2~=Bb>_LXl@~kLi zF{-`majzTXslQA`H&8oM0siK&cVqZzXI8@IIt4&YXl4K)4#IWM8-g<9_Hgo)Kv!h` zBz8-I)KKMmL6qOGk(Wf{Ex)@7P8Z3-SVcmCdldw?X&)hXyB>eOi3(6 zRE@Z-YVVE<8YGSdfd|ukX}^zoYMbeP2)r;@Rze6&G1Op?N8L^$Fa(_gamE`V1k)b2 zetP4^TdvQ0*DL5raG$;hx%8K`kEe z9Zap2F;#nU+5mjKbswhaQvW7GE9@33@9Sw`+6rq1^`DaZ9P3|u39}(X|MnZ~gYfd3pu1m3_XLxGwR5!gE%y0rjbCUVJcB?Tr?FNzaOlh`P+m=oR*?e7;61 zXe2DqUwNXiniqk�f#cVa+;$&mJEhrN963TG;}XE39*})DD5Ot-D{;@PDJg zKk4%}YEJXxCspx>t)rQ`_`|$@&AMI}zh4)B%}OD!^w}-{g5KeOW|%K2d^T7_Fz@@} z#$ztE{h?QoRD*~p>fh;xugOzeA*+_01we{wRhKYZaUl~ev9C$|$BuLjg|cLZeMfL0 zJ0c{0p{;Xm>iCH5((T~VNy%~h!)7HIet5(b4eOYQ*-)}E?0Y#@UP-KceB9!VIbpn8 z!@dsG)*DrL^#@u1KK?0&N$6@$2>ZcUSLWgq9QJLD?d`e^u3DU-yw8P+z#4Ac>oQa; z+a-#{m+_Nx=vm+T>Hz1a*k0+82qcx#M2FJ^eWN3)iIWZQOUl2>Fx?{!r9#&q-xS-Y z+{o6cd*;#KF8oNjr}Wo=7rm~@)W6_Ilq*zv5o9;4*rv9?f8<8IUko=MVYM9V1&@u~ zK1Iwqyd7jMK9;o@mmBtd%v!($z-kCNhj3l^oUDcAti=_{OWveaQE-LLe}=uUq*;Qk z_qd=WEsPD80Cu3#Twn5BC09a4AWiA@QFet*EKn3?FEhO!VX8scw#$6BDPrn1f!v&8{jRAbgJ`3W$7zLz=n+E2c2(>Qb1BtkSAfTg za4i~DuBHlM0dbw2Ha3dBJID=BiL7uuRGiy&!UYXoUlfWyE1aw>v?dZzK$;8?wOqC! z%tUC^V{Ew@MRSCqy}4)pu7|I+5cSFd7xFNuC7NKjjXDM9WxHLBrVz->?ruNjA%p5g77+kQcVbOow%W6^XWRcWolOu5madIYqm=tWx`l#t zt1ERmT0JG5cY`hm7qeg#+(r>_dOg&YwKr`;8>sXBd4rJ04s?~z4?)z&%Bl)=@a@;U zXpx|mnEn-gCd*Kkg3^J+r!>LU)XcJvDs$=e8N%okrs)E~w6{MB&Sb_}-p>0S>-~SG0nq zR@Z6DKe7~g#@|~#uO@EEHZ_^lnfv8_-0Qq2K81Td`*8PPXB<2b>K4mIEg@ zA*J=B$9|=YP`kuD9J_!$Qfm0vC!&iml3y>4o!Am6kfTd$<&VtX*$hBjHpM#PuPYVA z*317&?2V|B;uo{&`qYd!mUg~(>cNyFxZC~ck1uS`#9}0Ql>W>u{BgjqrFp{}C|xV~ zw>sW%GBS5HfuFVhH0`Q*?r)Tq6O{jz6T)Lyu0_qv+AMH9f*3P}3w$gM{R4C?B2) zA#x~>o^XvHdi1M3vgJ?S?SmUcJER=lh!Z%&K@F3BEvTUz#=i$OtZkM_k-Yw>;jyjG zn;z8gz&f25|77I+^HKTigK;ddUN~7`YFa_W z#)9}^R}5gxM9G!QHyEd?cWpD*O2tN~U1&XgQqT8k)6tDdgZ=uCJrr;h`x)I(_Op>| z6~us%123`^X?y4gzm%ObRqH;xt*8KFa%y_#pb+i0zKRyloQjrBrQVk!=F|e-U~5$C z=2+YYQSkFw-1_wwI)tz&Jr-ReyWe{GL0K~8^k(PnuqHH0=bUXV1c{9J5#6ww?0VWTLOs-uXhP6o)k@2QmZTv9iZqBZHX zB>yfG|JnV;HA!&3a!68IMj1ktaBI^A+oC_SzP;R)AxgRhaJdWMau+}fu7}H=fi^Zd z(QiF`6<Toghv;(mZ(;ZXGO8G3yd^ee+dQP@HGqNn;bG+R*n=Xj900YJw?j8 zb_w5ADozk%;a8VS%iQ9SCCkcIecl=)KxJ|ojXj~1piijpYTlz|y zmSR&B3ow?~N`bsCU0Sg-w7S)5;M=+d#m=a_2Xwg-?z8YM88dIHu;6}c&@vZ-tL}`> zdE;;Nh_9Ph!<1h=Hj1KCHh?hY6)@$hn|{VnXszWiA8bCeQ87js{6CUg$|=vHaiZC& zG`BhpTMsJwvmxw46Ly!nv`bLt*?&+dQx>9^5IpaJRqu90!dDRk0*IhhVVZ;kl5+W5mM0PI;O zbjYh~^3!m}@>^SB0NKt0Vv>9pg>DZwvXmNnudA2aMcX?NH*!HAeZqu7habs!Lc!R; z{0J-y-04webr;^lrDnx1aupk^|FHzkOdL;d!l=|%qro|3#jB2_>aH)aQNmb-OnRm{ zU0)%5y!hTJCGJi`^os_&g0uUpvBtof!25xM0Bh?inggShBDAR=rvZw#3OIB&PgSP2 zboy~{l+!=OrX3y&*a2X>&;0=QY8%u7YFX#a`=kh{6zVvy7DS%g}HEe3bCy?ZONQ3y>&?&nq5>;&2DS1N!*Z0_zco;zj=@s6$CK*6YMLNjyPfjYLBc&Bxf-xf>=_5vUz>$o?It_by5<3=OiyYK!*En_)~YU>DEWmb&9e53Ph)cQ zSyyYKG|O7~*M8jmmMsJq>;qu-dMl;W!X6`ynf=q<_HqY{=7i1n!zN5E#`#V$)65d( zx#&58JJ@nWfqdzK-)d|907gi}BX~xv7Uni3&a43V;)@Hj=AKGK?t-PIr^H5W2<2vZ zR{JySLPPXiCqlzTEpkZ%EpWtkjvD_%j6c3^p?yM70QXb-+qLU|(BIPr?(dnPh0odF zyPoaU-`9S9Tz_qUh$`5@!0-)$T%7y+>|ey3KIgBn359bv1gbLZRZ{!&%)8S2vpO-N z&-yv-<8PtbXTDG@Y^ZenECzo6ThN`_{#*EdAAAP70fjVycESedMd{8JY2N~=(T^Wc zlt4RxOHZxj%94z=a)=FlO~|%U);sJNz6twjS|`|rB6#!18u2bwGfSW@LR-hq zP^gyk`GV%a8tNrjU_!*gE`y&I68L$ue%`Mh@Cu`E=WJ)S#f3l9BMkt|K0tpf|u5F{rS zShxPHB%`G~ciYCjw?e^M%JUAbZ5x3q;I2C|e&13)Dr4gBhW1eC9{MFJY(Z%1kO}l_ z(<|v|tdmy?n<;inJ1<(d{Ej2(a+YWsbg9ic@K@<49&^(~G_^YZLeeEkfTzt`mrla4 zB6-nXoAuQ{sxrhU#r*GkX~Cr!ajU_Xg@Oe|3@LnAQv#;jH4L{G?U0S8ruFCo~V$AXTvk$+HKgEWyK=PP@e zXebZ{M12u(94!S>;*hi>4cO8yl^DD#2`Q50v zgR)8JYn$~OyD9d!eE&x}`K56DJx-<_ljhhLIbmsTP&odsm|7V6TXS(L`!H5Q!_fuy zXYo1JJF6K7+ZWiW|BopS$)P^an2wh}FxLj;KogNvPIt!AnHr>^J;%t%`_`qTeD zpqHFO$ecsQ_Mwn5&qssVB=K<8OXEe{37Oy zvRrT4RF?&Sm{{vYCRpiVG~r$WCIjNN@)4$)wAA9sTBtb6;MVB8SaCm7%2_jqT+ z!q*^&*38B}&W1Mqz&6C9YQI9QhmF7Ehv^keiLJBlfuf}Xq2NTYx^gH)4a|jIci%19 z+$eSTQ62=t2_H4KQUskBt^Xuoinu-@8-fMl_9R?}9E0?>7~8p=ZdbSAdSByCVjOKS zyjzX&=@ua!Vs}umajtGsFst2M#P{(cqPd8|nKq=` zE2lD>p4EEkBY2z$j~I?0Wp-Ed6nI8>yl`?scf@;8vKO6in1dqDOxn{Z%WCGxw6RE{ zF(5+MpgP21YdydrI6s_pU#N+#B}=#XiLPrQustjCs&#Eb;lpBQJn#eQuM9HG4~%#h z=()oxQRQN<^{fnph3y$%FXX_pY^1{NI&2A;+@D5na%(`(Kg};+Wm_Zq^UOcm-iK#K z^K3iV$~{(|JH+2ixp>Gd|Mj=9Qn*__E#e=lyI@g~s4(%Ll=(9^uu5}>8eaU9!Ut(( z7a9e}1D658XE^Q*5ntoHL02SCY3d5juh6b+wmU=j{4q8ct%&X{nN&Q%x(elN@QJp+ z*Jf)vT1)NE;G7S}m&kjX@Xm8#-P%Xf1P z?;u$#R*}<3FVO#3ep?lVcffR_GR2B{+TZ%N7n`&#(nRD+J|sc zy2_eR5oxS1{zg9dh4DV3zkW1pfa*+ZTI-riPRC^8^O=K-H z?`r-U!wUyZ3?wmKDR!nkp>1y{9?l_Tp+i}e>Z{pGnbxh{p4 z;K09zEPcAaCq9+(j1cpGs})!wbGu*WmgrWxik@3|XmvWA-NTg~f;|1gdgH4XR6J&|G)eM@k;~kbq~8lw9(CwRDb@{J;+!Df!|ZeWm1|{824f z$9TP9hE;~7mfk>4|C~Lg_#=B2aOGkl+Sl%u4WM+p)~l!<^@(b&6_8PO7O)0RgU87i zheWc7H*$XaCF}B1(Nfo4U#Kc4a;g&((4e#^qok6k?MZVQFhiDtBsN_BEq;epYGcVNwP-Sw9wGUx z@9U-WTerVpFP&cq^DOJNN7d351oYC)vX=a;*V3t3>d()LzfIb*m1|vxyWKC4kPf}rboY{FBP?i!=13A*JBju*KYu2mx zF$dcm{Xo%UvUX;6&X)9&Emb)JVFKnuVpU2R)NY;gOTKA`ohj7MO35}#KeN%>tpc@{ zJzJr8r4V@gD|Q$Y(H!O9hf&DjFX0K-v)XLo(HRrS(JXiG1srOlfjrvGwMEce69Z*C$b) zl_`cMVV!`91VxDwB^axbPz?>$nJn-IW+YV6 z-~v%GMnR3304hk5NhITQG__iBkF~AT+KN^MqLzd$VM|b4f?CA|y)iB<8Um>E{eJhp z_hu#w+Wx=qLnrUu_1$~!x#ymH&bjAibQbx`z{cDbPcT1q3L1xdd%$4V4UX2Iq1>LV%@%<;%*(_i0|(hhAUksdBL9gcEoD(LSYQ)GEbK9IHtfj zbS6|l-iJij%lH&-e}()+@wybKHH${9BOZLpo-6r{t5_wFmAzkoQqa_ zWi&a`>*D1Qx&XlquZxgpY!ic)gN-1j9r^3QAiU^eE%nO74pVhCyCoJ^Y?K3L?&`q{ zica{lsjW@BAi?%q{HEh~6@Df7RpR#met*Sp4Sr4dy@TIg{Jz7_?gXYm+XKM_>;tT0 zTGDl?mw+mPY3wqNQ047p~ErkH~VB4|C zh+Aa}s$`f)lMy#v)dLrB+qnRhFfL2QLG%%d8>`|B?Sb_@Oc7UOF$bG`AtY`W z!lA5??t_YQ(|$y5z^q9;bputlS3nSB$09f%DlwnorUz`M$#0;BDA(GL!rZ|mN4kRv zliibms{F@rAJZ*A$5+W4SboK!LHay-JBPoc}Ev#RTyy z#s=sqw@uuF+>kmCEwZ=OCjknyqjaJ@V7wtue_pPud>ug1I#kCB1rWo+8~-UIaiIX{ z7)8@uQJ+U73_$1{king+WRM;K8EjNRC9ZB0FCvI)4J0t~+^DKG#@~o6P?5&a8<9CG z(in9k@+?FW^PEzsjc($z&;G`caZksnwu!9y97Tveja6Ucx9fH06B2Z|<{|z}!Zpe};lRSm#;r=yX)F64f6vO1Fb}<=pSgJ}ZN3nl} z%#R?33;K_+;=Zoo(xb{ZQX!MMzY`z62>NnmIjhig7XxcQ6T<}{Z=hvW?Mz>=~m<`m~A4%X;u*( zMI`5-{uuPC)Hp8>^m74NxY#XZ5jwn{5G4qtK8M75oA_)Ijg^!+C^RA0V&FrTpNEJW zy<2_`evUu|EFz`(Mi}wk1pL|>KnVZD1zLn&(CmVlzOS$Jp8CT#8Z9I$N6p60D9+L! zj(mWv53z$It0Q(sm-$UDFnL=f7g#P$Q4`nxS`CjTMq^K9Hq>}Rfjq#ZRg8jSIfBA; z8xLg!~F&J!8s|Ko44qT#b9A!ELmd4>nc`oZwID8S-CQ zwuRSgxVVr2Bp^@?j!&jTh!-)rOD|A@JO#=G`t!~wB)3yQij|LUJ?OHY$N(W;L|HoX z#>$3TiPo8xJdZ3-H~h6E90vZL_Ns-y<>(m%Qf-oiwe!S%<^2++CEDiJf-DARf*iGo zOuPqjj>t>xwQFc{7AF$gJA-u3nFnCy(T7y&IDMOx_aX#;Q!Hmgx!?wUTUahidOtwD z$xPpKU*y7QyR$ER_@>faBY)Tsxkg^`u*8Q4&r>qk%6hWCS)tF327GRE&s9wE~rcYCt zBBM+6X?kpp;8+sW5sUFjNl*`hh=z!%u}`9x95I4tLB-6!Sm&21@agTm*RyLZ)FS~< zsK-+m67`15H4~_}Lu?6v!N=~E@2}%MFzpDPshn}B9d~Vu(O4L-IUq@>8(x2KfC00_ zRBeP#YC^T))+Z;Kh8X5aP2e3)YQn+6XP}5I-!YmeHKF#1;Yw&zW~dKQ?GPAs(Cz03 zps0Ye^{F_ZlGbMGI3|GzNO_1%4$xH(j8JxnA!skwaHpXbY8HY2 z+tE3+V~5ytkHUYG9@_4}XAOrTmO1J*SN&0<{v&B7DYVr@puXe~!{vE# zVm72&84Zx(L0p^z-CRy4Y#y*}L30dwp205~=Mj=AX-{{&!cDS%q-GZ6#rx$F2U>-( zQcjiJdb>D{U6EsEI9f_T1eXV7Y^{2~G#6jRzNwI=(}m)YPNIo7xhno1a1YR$_rg^1 z+s`_=X-5+G{V04%Dy2;CJP0%1`4mftS5X!({mrk7XJrJf_%m=3D5c>T-#qpb_P|se z`zgHgElJ6@EgYu>W+(rfxAvOyKSK_}(S!f*yO1-gG$p@Gkg_^SSv4|;#^EABvr}(OFM7UeM14UZIo$4K(X%P$X&W&SW zdYo8@y0Di{Hd}`+dc^*wJ@H9HUJIjonx?|2o-17AhHms<8RxsMVxat8%PU1xhkB>pfuQ%T{+GQq8%+F zWw}fZOxd^gM^!Dndz(AwFZ?nQ4tj@|#app&s92(67?aSk2$KR#g6u#9li*)!&WtZ! zkDM7({vc;Yd8#=xKCd!oMvw6$|BeRN+aWnN{JE`o!W=kCM&1Lcjj^M=VVerF&kVkX zAb4D8AXNA{ls(3F0z$a;a_TgqTEPFO3(!P*HbV%G~n9-@Jg3k)aHW~#Jl0Ml$tMwWUJ7>$%HBLx7HDXvvP zqrOv&6c}@<3au~28Y%IiGWZf1kyO#KRJLLo%!1JA}fyWt1IQ_tW zHAH~7bBXFSct0kVMuW^@kWVyH3XE^LR^g60 zW2}RBsBT|jR%l_!UL&Q@C>7p}Ek@d0rU4hjd-e|_t=KFV8i4zar1_zbSv^~5q?H&| z;&U%5?76~7DK$%lDs&l1i_LFYtsiToEHP5hX9F5TREl0M34$EXFyMcCyM%{M(<4>X z7&bKtcN)o(zmP-laCqNeFp{Z03Vql>hX;&AB^Kp}QT4;d=q)l5d4sf7@?irbE;ACP zPTBnGcBABPjl{>oOBTJDA#o|$NUXCGx696|)Mz91&qk^o$?ZmS_ui%;u`)7Ik(_2D z@wxCsvoC))5~;UgUu3mKMsx2q5??YBT`vHFMHW8ZY$Q{rsNnF&h?zLuNaq!>DxDL~ z7~1hhVncZ1!v-i4jl_*cqHL8}vI}x$5MI4GBGGEqZX*NnuS;a@drz>`KI z6_cvH=x&Bpak-J)W+i7tbhpq*|3Id1CeKnxnG5gikjyClI4`0CUg8D>Y3A91d!LJ7 zOY-zK-0+GGdqxnNL)`_NWLLZ=tpR2+(G(b+;dmu37k-t7J6_S?xOI2g0K7!wM)uNE z;c-b`shhQP0UT60ZRJa{l5IEvjQzAPn0c$G(}Qd5~*fj^sf$z$gxa@*hT< zJjm79zhS-ieT78=y}1Vcn-S;seF-rk&987h#rlPr*?P?V`cA#M@ymGJ*U7&2cf8Wz zf`>0`-tY>?xM(psV}$$R&H)5{8&fxkjhCpCpjtP7#+I;>cX$;i!^q*(zgw^_M?YwD zCasyk1{A6IQ)NfDtRT?9a>(Z4d>}C-RzM7vB2OO z@Qk8-AwXbn3jz}$fupNwbQ5e6_CRg!tPd>@#cT$TquFj!N(|DRUOW_EU#ei8Dh~ZC zQV4J<#7}^A?a2z(n&`aUc zD^IR>L4U*o{ayKzs{N+q|$%0pkoEvJPSl4YF#4P4<7E^dS}MKO6v}{{}-3 z&{%h|L2or@!)Dh&3~-}0UwZI|FpSu*HeaIdPP9X9y2z;hUIoE&wURTfR6*=5WbjrM zj5D_sGV;UQWDTK%U@W+Wk@gLnCl3S>h}d?ZRXi0DFQLYhxpMDtxO52E%8;U^-o^2R z@-ZDeF<96wVv3Z3awo)g`Xw-}3#o2bK{Q)3)bmsj&6dF{5X4T%YPO6ValeeTnk^%v z87W&~n*T_EnuN!Ah7lj@{MX8e3DLu{ZQ@c^9Ma#+nr9IKTJfB)z(mW!7b4NJ;Vy}m zhfg%oat`Dv-P$A1r&*&-`be=QWtI9?5!_`53l4MS(D~?y^qb%6k=_GexWB1Cjw2!m z<6BYx`|#b(4?hDnELQNU=br%^gc;CN&q!*5pyoWZ$~e~8*M3v2P5oZ}s|8zfArSg> zNn*3#7lgd=MbuS9=W>)3pwp86ymto&_Y!Fahd9WC5TP3vrBtf9B@I)w~3v&?V6wKIEhmB1SubKZFa`N&bdJe*!O#I_B|u$ zfpI2$%XXLBmrl3b(OULNO56^E2PJI>K;9Oq3qsO%tRC2au`k^lw|+syKKkimU~R9$ z_NQ((*RUu58M%f9eG-8)M=Au)7f+Na{qRjzk@?+zl+BQ`q(k0pN?B6WJE@9D!n>l& z(6zzq`}JB{vq7IWfp~WZU1@H(eHiI^AS9nZ^A>;vGE@-tG@h@Q^7(C%us7uMk^pu; zmDi`TwV_siK(fFJb5wrw&jWQ{(x?mS^FH-(ufVS>BL(p4Z}6M)jUXmDUvE3ikk8;N@K87g@18;%Mi`% z5a%+W&%s2Bg^9d74fTRc0$he_S?}E1A3mGoJ6sEMxX#O)!*(u|Hm9j<;Fq!V&prp2 z;-Uz|tym+|KGf{*!B7mA&X8D-gVLf4VvSc23uZd7QVDc1bmKy$+kBB?^6`HbTg zniq)G3ly3=tRmIjitH_yMNYPgRG|pbT=8Gs?fnfkjKzaJ@su^zf z!=!U!Gyi7FNa-i*1+gyc;0GLp}PB;Qhf6F*|(|y3;mC zHm5FaciMl-9-+E6Y+1~n8^OK7WM`hndqxereJ+))^US64*Uv^Sl@BhH@N7v?L!gNX zw;1pYZ5GV+`l`AJ;PqIq{blTIXuba1H4*Fe-Bu%3{VlQ)@v0GSs}awaM9?ldzRDiY zWP%g}1R_)aJk}k<2)zJsR3wS)&La}`G(+i)FX@FJsd)0({relHc6k4`TpiKB12>pJ z-nlZef9VjTVHB=E&IEERwliV0`I!BCE!4lo5Y&eHS5LujpL|y@{d?+(WA|?hW_fu3 z+OLY}-(^<+_B|8XzkGC*P^w$-s+^>K#+CRWx@4NLwKQf~9;FTODRkUUR)U^6&gL z5;EsPs0PT~Jj{g5+cz4Jfo+B-1(Q7&e;P$Hgu`LXC}4*@s=mH+eRSy%EWkyMn{X5Q z=M5c+zCAx+`yNMf1C`5QNWc;5Tpv{$cfc{b-;;LD@~^@9((Sy)ol?{;?bUw;HGy#h z-U11CWv^bO-X$b1!+Q^V^}UFcBMbf%m*qy;f;Ot|aSQWcTa?56IC8+B&){$abrp`a zY}6SJzmM>k}fA(dhx?v~J){!k*{Wl#30ckalqV4llT!2 zfQlj27JmE=$~p6f#L4PiLiIQ5T|)IN^)8`$s(P1DJzl*_s18)`gsR%!a+}!x9X`Z9 zqI*Nv24NmwG)8X1l>-2!N&zcn>QXdnji?z}a`b4hHUnCfDbSk4O68sZM?^{cO!_aR z{3~oqN%;>8`cP2Q;kKRP8xy+5{;v>hF}|={3()D$fE(bf6jnSCGD~A<$(1?cZH{;? zo_8H2JI3MEm{^YrgLd2#P+}{!2jOPRx3TbY_(Q}OBkMbS{V%F-K_B%={l2^{WF=8P zOp4dM!kQlB#9)bT*_Ryl9gV|&&zvJI;=7wTFVv;*0`GyGE)bHGyo{hr|7hZzm^-gm z`gISshfW%K1H5#xNY~<8Zp{)N3zlv(Q>4z60C)j#A{|O6P)Z!}fSqHUVgm@bWY;R_ zm@kGI7&WX9909a8WX*|L@;IlJ$vG~)T&^|jndKA-ljihm)vPKJOP(@j6{_J!KcI{! zkeE1F&8l>92liQ^;WW>O^$M>Q5B+j@ZM-oAuQho8e*s>NH~$y#ntQlcczG}D6<(d! znDFw{MZ)X3G6}D}15J2MyDkD=oJtUBHpaDQV}v9>J(K=7XucCDZU#FM4@QJoSEA-3 zdFqm6$Tg?_(SRllkm$dDznq_gyN(83{>d?pOR;h-!)^zLSU{o7`X3}Nwuqw@B&^_d z)deGU;x}=)Ohb#a$3c^-y~-tyhV&kKgG|@5E>6i*zA}N2(OMMtcpVN3Cp4l%s@TzS zFi2a17V$Ldb@A9O?58UE%G=&r#F=J|<^4F+3sztkyP}B~U*gE=cI_H1rZabBeE+h!kUWpn zIK>KZpGY|teNRd;7zi)2Mdk54NM1Rt1L}hL1vnhDQnP#OaHuL+cBWB_X5Y3(`mXZb zreU?o+c?M-@7ps1-p%wG31fCTs(DCDv_SL@uOX0Xuoa#RUibmngC0h+DTp4XQSywP zXjCvi9*Mj?10xG!Xljn>JcE5u8`!vxa3aZ>($soFsi!y*614(ish9hAH`t;9AA z=c(tS9Wa}KO^)Pa?yNUx9{CZ?BS%5t_7Th@KO!88rI8%y;my2#WuLT|gnV-u zg`1#M?zDGH;deOZcV0V8OvLc{7#14e;bxq)^*9hD_F<{0_26zCx;VnAkrpynYMH*g z{po8C2Sv-0NNaB5rw8_*k^CDND-e6^9I$0DB-@+qcK=1uO*tS>Q8sulnM$`}XcXk$ zymat*kP6UyO4B^@<~LkG*q;~KAzG~M=;HjR0bP28?@tZ^<>QtQpI+{S-6tX5FL0lQ z$Ye#-nLfA}*zfWM2RJI|Oea_)To^AFz~Zta*_+l}I$~O2l3TL_2b$ol0s}kt1`M_R zkjK9;smOO{oNeJ%Sfz3Q8*W-dqu7X0#ieX$hSpsC)0_ zLD*r34kZ2PRyffyp{gv?c8DFbB_NTyU~k!3hAEoK92U+Xt$s{77p>S>hk*+B`T=s$ za=9WGnd0Jy402(}7+;z%$;H=Eq@<*@7hwZeiz1I&MNa8fq(T*`w~8dAh&iv#XGoqN z=86v6ha{!YjOQHxw>h8~eMm}`RNc6Dul^+Vf;&I>uE6~kMS1wSd<_G{{fjKOk(_MO zLERGzNvR~x;b5Cs2eB{}F-%2pl?oE)7<@_viE|9zFJ;IW6kZ2DSqkD8n}T?>N(tgE zYEpVW&B>jBH?js2aMKO#Vzq0WfMsr` zQ`1Z03=jE$W=k+X4yeN84`28HPLj^*&Qjb+Lhds7yLecRmk#mhw!lSD9XGpz^KoAIT|GN~&<4HPw*`C8+clJF_I*6UKQ&&@P8icz zmM^}$F~r$riUs2g&MvcW&JM%(SPIQe9H}p*)Dd{b0c)P`T&WnF7e|A!Nmxm~W*uI^ z*X-mYoUbVq{mu>XHS{lkEkuWye3O5?PEN-Xu@M^?4k?&gS5nv@GaT-qwbL~)Cfq+K z!qMSjo^uK-PI*HA@bIzunY;YfGEmOmTKvqZj_NHk0@S}nJVPoK;%QbWqGfKU{Z^2; zBW|~Xn29Z7o)v^-q(xj|1tA=15nd|@`ACa6-wJ||w20}K8_NtYtZ5NWE11mSFqt`m zwK~hwH)}QgQj@hxy+4w*s<}?m%Elkm;Amp(EQ{~~UEPu6Gt3=6K9o-lbgexaCeMoL zCeP~bA2?#XFvlaui}K5m(SsV1`lsYrP+nXiZh)jV#N9pzS#6lL@Z&0oSuJf8?o~mK z3oR{{sUXLN!4ehZxG;E?3UXW+{GAGNTo}wj5XcFQrV3}E84Pn|m_9}}i`Q7mU;?uD z#&uiv1Y-Q{u<@lo*!Ec&Hg3an2Cumq+h29T511S2qdla*l&d0WooU0h^)3r{YXBb0 zu80Q);7L>R0%BnA#{0d2U)I!d<5jitH!(TRN*D-25)o9{C)EM1Y&)322nHs^@Kuza!U5(C35cr>}< zmvNNob@@_!7=Ce6WjJJuL3-i)WEo`62}pr`1SWbos_`Wt z)wPC2Fg8WGj@ZqLN3`RcKrqxXx6PQ-$SG zS%A(vVtoOjgXt&r&fG9y$gqi_Ieqsiq+*0+Iy({ePxjyGSY4G;&IUpdV|u+O^SfBO zzURidgqmZx9>lUC#8@7|C;uDi`<~Sr`=4I!w}8`gEJslA!$M`Z`19{LA{X^nTrSoh z`oq0oCi)q;C^i%cKH>~S=E5y1T%c1b%AEjW|9m#e%YNE{7}CY9weX{#mY>^h?J*?J z7%ASg5hs2%0sggLi{a4FA5omRhjL1ue~^Q6lWgUsMk^&_1A8VVnloByM3yp=c3?1- z!))A}!RE0=VI$=1Wdw}%p^m_B>apJ~@>z3CPCp4duGlF+B~e?zZ+5MD5ZFYA1u2f| zPS&HC+ZIv6^e~47Qp%J{`Ki85e0m?m4(6%lg1v_T1Y3vD zPF$a1vet+7NY;ARRcKov@%~OVnF~Z0WGdj75;LtLo4XY`T@{&Q71@L$au#&kuY;3L z$1KMAQNW1@eH%`%CwK{jTjmqo1Rim94B%%vFd#lkq>#WPdiDeS^os~PhQ^P6{XsIm+=3rE{jRvX)RXN0przUIpd}PFu8!V&e;N zM||3%F~%m4J)n^8@*KI+u&?17f(g?VdOF2regi$7Tx$wN{cMSz2M;RrEEKcyEpDa< zeU$VFE@wcGiW&u2?Zfch8!P$n4qn%W`>MY^8iZA9{U0FK1+&w@74(bi4HiT?O&bTK zajbT*la1|;sx75wQut*8aEI7k3;+f$HC(+I^lBp`?Hf8ymD-WX?*K^HRSYvonArOb zp|+vJ9$HSq$!kc%b?p01|9Yo|5jBLT#01=LdJn<=25Excw&s4!FG;@23JucLDqfcK zqD@j5SS6R9tncI$9QvGbTo5x0o1s=QWV%8QE_xyE;2BrnZ0M_AlSz1Lc_fn%b)_7* z-yATRgt`mE2F{ppy{#vX)whAA`?4r)BJdnz)Kt$daiGp8l!4nY&>1dUyo1SNiYb(o z)4F%Sn&0bb4>Mz_1=Mm0)NY;`Z~GlT8j^QD?35TxgrS=wK!Rf~g`g`I0v+35YS9v_tHdAj zn96pl7k{ahGuZ9_KmDbq8>i&D`%6vb;t!YL@EDH!Up4=1>C*ET`AhwAJc|Buf2sdI zKg0${_)EQZnu+DFRz+g@i4>>=5-RK#~J^iK5EaJRAw!hR03I1R1FLjuN?SJVn zwHJG)H*T|#vYg%P?iuy)g^}}blFU*!BNCr2MhT>G^-|3*)>;N0hW z&-qtBQnrKp({{1-n()~-81U_FA86KBGXsPPR+&vvuYe229ii9|$J4~dW^>Z42K;Hn z`F>}4NF`H@k?yx)u>}oIQE(r0d)fvB2wkxFg_n)s)rT-)-67f-ls6$_pA36%6~wEv zDp=~0Yk=5DAlmn7SqB}}iuJ{69-{D@vLYyaI*bqDAN*742MnL-FG{U%fHdzA*Bal* zI(X{^NXM3YhnQhyk=xR2D~K)k4v}F6!4U5dDOLrJsuH?*2qZqNnRD#YipV*(`Vu*i z`#Q`yc8O*Vr1YQJ-!exs{Kp*%6JNwdiZ85_ENaBCe!xH7y0HAtUywieqapNljcIhP zwSko=${W;J^(J?t5Cex@NYf{MKOco$YiKwpimwXCuxGDk$kJaus)D8jHT_wt`n*_YLGzZ0jU0dwCPrRv@cK z9|k*q_pAOI_0O$ua35-it@AK=fk2BlD8(00+Z`u0ARDNtfTeQd5u}=GG4~pyI6TPj zbW{xi*gS!&qufxU^<4;uKeRX6rMHnr=%g3+gRQOfHZshewbAX!hRhk;Z|(Z#J>a0J z;=(57jb1#C9Ja;VYzunxII{6P5FvUTS;!g!CGa@%`5w(bxvOIswb%p2)6Agn>xkyX ztd!qe-@%W0?BBQpudC0(j6(Cjma-B!K!+!o75BzNJner@MtSu+u{pm?fd}W^~Klx9Nt$mxyrO9EP~YedII*Yd8oemXa6R?)_+Q)H{&U^eZ+vRc#k16o%_8`@&Br@l#$EDDRrtiZ#{5Pt$Xh!cXO43@#f(9>&7a zv+)RKVhA^(N#no%5;w~^zJc4Z`QVussPrU4N0eY$DtQ}FfLIwMR!)k?lc z4aOz9lLy1UYdj2N;)S-1SoM-DVL3~GPRjl~Szng*^XQ*GK!^|0 zF@5|QP;ak;`U<|<;LIuX4s_T|aaja9?11~1?PAdEaCCtD>|*j$RAPrIl6jv-pZIW^ z`~DRE|G(gaDtUj5#0OpC!`1%{KKx+f!w9(|W5;7awRy^)vkel2I1v&|cDW#84A0B(yaLZF@SKh3Y(2Zs?<&-@=lWf9_3UE5t60yT?|02dFG|n}7@t;_V<;TM zD)>O>?k3NQ{`vXz_$#>i#-mO>xPoeWr4%u#G=!L@sVoS|EdB~UJbsxI4`#uGk&e}s ztMDlDSMY(V*QiH>dNkvKS{R8sSQEpkq^C+X$Z-OUMaKqEBHVys<_O85F-JZN+F-aD)`hZ_u;Rf!?a(G7CZ~ zvcf6TDm3-TXK}rfk*GyJ^h%~7Bp-UE%;K-$1GT8)G7CZ~vZ6qyRTQd6F^lV!j6^N+ zp;s~uA^FfNWfp%0AE-qYmst=}krgE}tzxlyl(V>A$w<^9A9^Lz5RwnQQfBd2@PS%X zahU}nMsnP1{lT^&?;42WpNu_xqvP*v41qqffkbPCtS@ zk$7zhvg`ZuGQNf*_P?-SuPSfOt)emWhv3=;aTq$Bu^qa0vGEo&zM&&}RTQtj8rTmX z3BYTu*t-;*7##Db!u%MfC|JYs$BBsi&3SV%9{*T@*^IdAIy_;8i`T#^ydtGRJ(}@g z1`-uM_o!%64lNKMVGxCv?}BL!E+a3fQ{UXdQ(O z0O?ofp;Kk5D~{^dQ7sgoXQD1;PL362J`J^H!DKOewoz~JlIVTlAl&mT@5T;SFlSai@R}F*W zk=&19?-_1T>{t$u0X8w`bne|+#o6JFuga00C~+S!VvDjiII3v~&JHJwb1##Sk{0q< zEa%ho(dg2ve=@psrKV+FnO}N=)g`;^QjXcBoWTgE<6d_f5wK^O;=WtIgD8O3M)Wr5 z%hNJDh8rq=7@2#W;^gm*US?Xo)P6}X4+2}oZKtVTy3hR~D3Oqzs!B6@nSt1~uq7lm zI;x2l7`R)&%c5W20x=iIh6$p<%!V7tRW{n#9BX_pG{^TrqMerYU>hE#<1LUJW0ZXh zILZ=TQ%xuY0>om`Hu--W>w~~xachc#Le8(lI#P9>0fk>7R*v;vd`Q~U$?=|C(C2t> zt24&?aUr|-I6+sMZFTYINB!YjB1XNM^<;J=h6X;c2QlJQ6T|<@vF~8vrDIgDy%W%D z5+IIp)o7#F=P_1l!Lu66Mqofo)VM3Mup5_lQQW9cPIYHZPA?rnWG&&1A+5oKL3hRE z)I9*K8Y4u5sl6~+Z2X#IWDu4q|Dg4l>c-_mu&*%&GB|+mz^=`Zm`eoztxUyy{!Av3 zxEz5Yd3%$*+Y2I0IKD({pjWhyMUN^rk`9OM3UPnPD>$lID^~Hqrg&EV{WJd>|03mc zphUMN%Z0<88YbLGgBjp{Y**k#3i7Euh~pum%Hv^0QxZ@Lwds`OVGmp6%j{PcmzUL6 zI>80wN_bQ1M`(Dm-dymR2i~E{$~WaC#bOX3C&VEQdCRBrkm;PW!2^*;2~~*h>(|S2 zI{LUvvo})=REt8C2V^o(V+7I}C^rIN++k#*tV)K{9tn!+0z>7P&keJsCo=o*(Pt!w zdg{^Lsn}jnYzIkQcTrsF+3vtpbkb=H$)9lFc0X6ZiIZV|wil;T8gSP*oGV0?eYU}+ zhYabB4?5*(B&um)(*QkoySQN?y?%HBcE}C$!ocoLYs|~|4A!=8`_4$2pra}QWST>l z53^TD*9t<8Nl1MQ-LIRQOm%BXsJ(97^2zIT?At`+Z3GZLOoQ6Zc^RD^Zn_>A)IeaS zJuqkupD>J#5Mq>Go6+gEoQ)UNLWnLi$~s%b*B}f=oiMz1!*!EyGdjw8M;i5x?6qD` z)`1283N@SUAZ?`eHkv|ei3av;&6Q}4-V6zp<$nV0VQ!;6|A5n}?(NAm`pNpu%6rr- z+f%+|5Uh6tF@qdc()U{cKAB|IV&)X9-jKv61j0g2O0>Ix&mJJWCLDwWAhQ__UNXz7 zxCa1@T1WO;YcBv?EUT3OEWvB90Gwq2FdTl&Y&7S_$9gsg)9-0Mmkcmzo%6?Cs%c=cHR4`*y|II7-2$0@7lftPT3XjlnTP~XT?U404a zlRfi9F(i}jtj6A5f}h)qOYkwtSPv+m&*KOM7DGV)#U30p2JjUn?HHw1zlj0Tw~9lf zxf+I2qIt+siPSvvjuw0D@TWbenDhqHk;f$Ibz@xv`}2<V-A!Oq=iFu-kZfHn=7TPaMA}hw+*#)X}+VQ7r{)Yja4r^5gqrR z4?$Y7W^cujlsI@rKO0X-(TGTq0@nFOat+nOrD(qdzrK_T>;a(no;2)(ZpHDa{aWKs z{j_@U8~himWgT!-{h9+sXLn$Mfenpa=utD&IAmzy+Yh0iq;xb&%lb)kWaBDsHAG}d z(U%v|F5^^GsvBeNv3Gd`*CkV4jz51khDeRQ4pBMGV)NmW9cP(Sizy#B2a&f143ctj zuOSzg%8$3jexftPo@%Tw!ZKpY#ot8=22skzou=6H)D_%JVui{EU+?I3NOr?%%yuziiZvu&81_(-c`lmd zg&HmZ;a(ct2fuIJ*DK|jJ0Z_3rq&?ZrI%Ct>cY;-?OR_AQDk{3!jMK*Mezmd=W?vi z!JL|^C_a&YF@s3vllifsRr&b>QD`}2pHbyVaaKVT8dbwTwfwV!($c6Z$Uti#1C6S| zOD$h&@v?$1DJP|HsEDVEaNT7@Csh35tH=XD>YtSpUz(s{v*YAu=fzG8kuN8%xMLW%W{BHKGNgCO zjgE4OAb#xPMuwlu349k^73B#iw==NL&4i7GGyI71l~}W(QrkGwI`0@LehQ+c1~%Qg z?y~@=DN3NxTAXA^l-@%>s3^p0wCr>oIeWc04ton%)+R?akFbM<&I>Gk*5Yph-X`%b zZgMvSMUroKr$2{;;Zn+d22l{7i3|Afzn_)8_Y$$JvTo>#>l5^a}( zeujMsmc*@EWBUczlp0r`m|LRx*b+fASXhhsiyJE66}gzQvP%2DjIVL&y}e*+TCP1` zuClNPotRd<`G!Sh<%YyO_E^sQUX(m@F z8CEVPJXcUiEB*pw+e;m8vbkGV7Y<5RmD@wO-iPE5;{aBSeqgZ6L%X_g%`}Wcr6un< zHzEx~3LeYx$}VxL3Kj@=nT)?oIMqv`nDToWQ!LI`FC}88dRZ(yc*$tc{CCM!-G5gt zh8v+3d<5>T!$XX03I?0#cfq!Katspx-HcaY2Ri{dAKHa(m`-ZSZ?oIrFTmHhxcvoG z4Y5zZE#oY2PN3hu#`N|PXsUrDGCUf2vxR#}i<&^{I&3FVJ#e|LUlIJRf` zDx5ZW^)~ z|9aGaqN;xg>X)^)p8*B~5SCv+|Be17813sGR`#p3hL;VtmNvcLvokEiI1UnQS0R6) zwI1Xsz!d!Tz&pwN&hcM^_h|5mgx``}IF?s|2zmm)y+-TcdZw)aOH&oQWNiYL?t7N! z&yC+4{L1kA z4)Fu`=--mp!~MHL8MW(2=)LD1e-et`|%p#swjNqsBuea0=r3}R$4 zBVRKk(M(2`F!GQYiM5xJiy1i{eU-&yY`kkzQb@)>@;4c8kVeK7Y(R`W!qxLcML7Io z#5VvoWHSTBUcT^P7iNzwG~2kof0fELGXa2&5jSCB<^d#lPJ>iVEwJI<>Nvk}*HF*J z?)9k=i(S}4mns*!b((4KJPP6H%qV@rnG>(Y~(R9o4+$9+2pdH37oscf`g& za!tU(asgs7XH@JzWh@pJT9XiD)Hdfav>>~KEn{n9vAbp5YT7UIRQ)#KbD z*6P7a@?acZI?7x+esfXe((y>DTsn5WZY~`YPr%Y){@d(|j(QQ$heNbC<^jtkz8a@i zcW>s*YJ{z4mv{+@8jclF`#MmPP%zEUKgCg|JpkybQl0cwzO=XU_w_8l*%hVQ)4$zi zwTH~Dx)cC{M|mdInK`kP=hb3_{w&+jRepz>1=IR-G&jGDNIN3cEZ}{i?}+^m7?GF- zquC8cp2;TIvHOu$4c0M5BaC<}N6IDB78V{VK0F640(NIy%VnZlj|lM8yA-Qs>w z8e`uXoAg8Qb)^Kxu9HfB$l4WtLU}mB()L3&UTUevQ-#yXw(Wz2465;q@(pc&s-f*q zH?;i|!nOUG;*N{Co6OM+Z9k4$O>>HOQss8i1JxMzlV>S^XArtU@p3HpVG~4Ie;^vR zet9FP=f%#?Bljtiw+9hozX2f-8TOm@$FnzxYvIPmL@$X?*p1`74$Mmpyn?)Qzc>i+ z!2Oa2NvkJqveUiJw2OsgH6y5e*Ta<9+`pC1By60y`k_eu8ic)04We&*i@1v5(l697 z1L4>Q8_^~TeuGVJsF)&^R9e=N1)HfJK+*Zwo^Wz;uL3M~%`tCwS6#5^n~26T2|k^d z8T!@zhBdg}5JfFsf+a%vhySAd#`-Wn1wblIk@tn9Q%MQn;8Qp-t|IMNA&nDHPgU0#+=Pg$sPj8k-IQ!c+B(j=KNBG zRBT4uF)$eonNu<`&jQosH%hS4>uVh_Yc%_xog{_YQ{%mQvsZUgVvWlXJh-$JS0%WT zq!;(b1r86KKj~ZGjceoCP>CnHeYYjWEwFp_0r2YNhUVex@dtxYDpN7+pO!?Yq{Hme zFX=GGXgE3KRJvk6rg*oZkWEtU!AS>bZ`|f>sk=k+8h5avDBCy5X)F7l5)gfhxc&e1 zNwq%@zYW&7BJm1J97^f>26_~1%Wzem9A0_@YH}H!h~l0e`!SlyBO2>2A-)Tj4&i9{ zq!s)n1nt=E^#&GqYp-w8rDz13yX6tk4okk)OZ(!`zTWz? zFTL+}Tlg04|12;+r5((|9n5G2p{!aaV<2VLuI z<&dDi7Q6sk5bP>{`9r_M*)5$Q?PBLo zs=|gpsS4jkg(x}`e83TSMP5c0Gt|v5LX|oyXEUugJHOkJ(C)+^$&sF4lvll(7?xMv zBrz;+%ti~b28@!3B{NRyC8LE)61}8E`JEHP5vuA(g;2I%{dWj8;J-qstHaVPDnNi`*MuiawwP1Yj z$h07_7ercgwiu7fqD{d>3;~2RX|K4GqeLCVKB_*8SrjcbsF~j?zDNYIJe^+% zB>uq#cY)jRaxY)j;{_*xY#nRyQpJ~5cv;35tWSyO^W_P=4=A(lEJ zywpsVibD)iWu2WES>;X`F>{6?^-ILiQNBha_e@)q^rR1``50=+cmi`X#g+HNuZw)U zs1~k)uh9;|Q^v~A&T@32|v{Ti)>k&ol zyLGG$1BWHHP>f;6w7`Sq@^i0K%-V_B$` zgYC4nt7mQS-tiOXW}!GVM0%KR6+_2zM}c_!wwC>Em=lFLRGOt}EEy z4^8M+%L}R&$}Z?fzbSV}`4Bc5(u@+u=($5`9QFGKJL<&{Ki=7c9j8&d(yTrhPswxO z!8+Mfel++Pyt^3@Xnx6C<1r^?8~!pJZKyaBHpWK>12C5$hSe@aKVW7}^TrO;<_b1@ z^n2q-p!Iv>@t`f~nu+&*nu-61D)T^i3Nd9(Fw2HPox?{eGc^#i2>=6rHNY!%qqs*0 zK~t72u2F#Ik1*8m1n%krFDiH2+r%SaA=*Fh5xoKWxAs;R%<&*@lxe?3)%3zhRnt?f=}Oj= zu>}Qr4JL&EGXEx6d9=G!jo4GFWaJCwczPdlj8-*1G)T2~I%^z+xbCZ=ML>RSeETn; zAGI8bQE0lRJ3Rgi>f-@Mk#c|>2NsAx1A^o^Zs*!L*F;yCJb}lJnixsqeA`Uqd)aOac(`zqrc(RaUCH{SMbO5=EPGZz*8Kho`9QrI$iotYx zhXswGp>^7qIIrk-O!-Eu{<`!6dEN+DLVAf$@PiqIq;VTLLU&_(j61l&Gp5<`iX9TM zsruk8t{O0h$e6ZX%i2`dtU)pZp>-++zz|iU86H0`C4`pO>mTp+FNpK#6H>hX%cS?~ zp_)!(=~9$|8xC9)ic7#ZO257l{`Vn&DhD@Q4pfFgnjuJgEQN(d37FK z`oX(pHJ$n5#l_(6kk5&JXdsy6ww9)=@8SdvQflzS3CpD`2N)A=jjITiJ=K+aG^R zQr@f*{Dafwi|DhbYR_Eab|&8@ z^DW)+3Z?+2K`M_dVeP_{VU%>(r2$Fv#m)Pn)`DQK5Et1ys**U(0yELbrNvU_myb;8 z;@J}@MW%0{rBI_Cy7d$-Fd2@8^PE~B4~okmv*x8Y#grtYm+iaoht5;dAj0j6a#a2Y zi@zsuC;TZvJhv?tXAJ0;=EIItu((MVO2~?n8C@zC_!%=1>Rg!L1F_*QpAA?$QX1aN z+2qG5S35-WScjYW?FAPC9Rayr;#T{wZLX%6bJ+@Re*+0i$#Fye0^HQ2|LGz%vMP_i3}2X8OwK(7ct<6iJo7WA_%r`!nRuG< zi)-+mb{uL2Os@n?z3G5I?n`>V^mfA2?du{u8_{{zonPepO)}kVhNYzK)ZRFvWxeO9 z3`n{tNityVab)j_$cP&m+-V>32O*=-%B|_bs{MV7$Rw)`UdoAly83= z1xc0v%2gU__6DlS;(_z>rUJ$wm1X@_p#>)?7AVDeRe_g7a5j)eR}Mi zD%8&}B)M_hnmY|nl;thvs=PF&-?eC%JJ^Wgi@mtgJ=QS`YIK3rlnZv>l%vP#tu zAtnh^Gc4%6#uV0=fEumcLrxIe-4`s-K0-+8_bQkg5bhhU^I5LC(@}E`Ui20T>jK6( zZtnM2e>gaKHZ36Q6OYI7M70(tURsKMol>}Z^bLLKhb6RUC4@;#nm?NYoWU66AQptf ztT@-K_;Oa<+n^0+0dvg$vaYW&>p1RzAG2m)mU!{AFbIGABlm`_;z6TUsUli{+i$F8 zAbi|EfNRViG6dy;da1ze5?X>=mRPNd_u}G_R`%Ps#P zSx^fzbZd8^66*szuM*~1El~V75K$Y@GE6~Tkc4Y|);Pv3UI|M2=@^reeoMs#HV7X5 zW9|<$NlM`pu?H;$*MtgzhEz=4v5wkkDYZ!#|2{Y#v&-fLD+|@`xsV$;R+lYXV=I?p zcevxkt%$3aq)c$E{s>CrwxTgzcr-g6q@wRlm*c@k*XvY1Bl2y~^vy-pTZ-}=xlOpp zX*~?<-eImHmm~LG>Ws%z7@TTo1zW|z;CQUjU1aAbtYr&|svDu3uIIOls!?3(sW%l> zzt2nIFiUd}<_2QY;kuemLJ#5-r77t(SD;2uN-{r&S@yhm9JSWw26C`)Cwf1|)WbTx zCEipULi8jR(cn~-CK|#m4Ywqj+TkL95@pq(yCB(9;=w~N=ZaluXrfPY>r+fkv^=wv z&+EflMJmKt9V6VnWy<2>0xBW^>wGbtUye_A#4nCV)#g|DMaQtEPdbK`-3Nx|K2O%3 z(nPnuT_i_=a5#odNWq^aDe)cH{ZT{RO$~kD&ywO(Fxuk%J&Lth-n{}e>}PA(3kZmZ zQ3Hvize*BE0FM`uqA<<}u~Fgc!}C8|puLsV^7$TBS}F%JA+i?L;1H&{(TdF z)s&R?Zxpy<%SRz_5aBFaXydrb|0>LjHVr%!yG3b`jBK8RQVp+UqbnVPZVXA5UJQm zNX^+G?jL8t&%B;F@LUS@OrU0~*aFNe3z}Vw(EE)XZ9ucS4!B|35h(?rLCXNw-z9nU zSnS`*`r%+?2TZ>(xUlQumY19!x1hdH9B$ni$L+4;l?elTs0JcH?-b(>0W@IY{QT#6}aLI4Jn1Ae~KIQcu!Vd19m0&leWHN zTxVlU**VAtsK;^1IE~p#kPUGwJ=fU0cINZg8{KbofmS)iQ=ksW+$z>!XMjruZo7$M zh;SvM#rXVW=MuV2+@y-kEZ~SbDqkfaLrb$WG-n)@4>PSd%Z+tNXooc{c9B~Yrb?X; zcPnSFl}I_$i7j#gk#VLI+o*gJ(W*fv5zT{lL73S=_rv?Yhj}5a3Nz)&^=DeGzW95z znmVK@C~S&YWMRujuX|b0g8xOMwjV7z6@hU3g?v%0V(hMHRYY8B<$tA3Jc58}x`1U`S}(vf0ZVtX z_~sBlPSZyk85o{8Ac(Nc4;4QbvhUV(S27M`gR$d8V`WN8*3HLFO?8Z!} zWLf{M05ZG_NVX9|;Y_p{7Vg3iZ&;zhz#I8H-p#0vBFhoBcE{G$;f@mwN|<+nX>sWN z2p2Y936~NhHUBK|sg#A!0{=QI88;${yFOqWFh%|SHGg_jUMo<BN2ToCtJOTR{T%Z6>ZClNi zO@Olm-djio?6%k7WVjL4h$yn&?Z;!?cda28-9AXZ5 zw0|UH$vE|iUru? zfy5^M$;|GG$o{m-{=wZw_8cR7j+uRUMD|jZ{U2ub1Z3y=%J23k*xL8uEakTewrV`% z5#Gf({DSy>h+i{)1A**`_)W(T`oCWOK_xhNa6f7V`vc;!I2+mD7Hf+g9QrqK;2`J= z2mjyF(dIU^^G?|gG=z=85C289ih4cv;Tog;$uhq^%5JyY@Z&%8sX}&pbhP=_`_mQ; zdg!!l$=x(o1OE)hj~4yuUVU*qh%UIQ^^VF8013|2Ae(E%Q2w7{7&kbEapcneR0?9AoK+P5gdo%PM4n2gR2Xz9Lpr*&#? z{6u51L*T}6x_>FEg};s+n*R2MftWl{E1QV@3gk5~>Ri~(gC^0A?)#1jl*OG7FP)yW z&F(#mppL zwi$v|sqs|j_w`wzyExmx?FEF@3qW=UaBXvu?SqK$Xc?@N6LU_~AP?Q(N!u#@sW?_g z(_Va7*@;-ZqP=Mw%DxuO2M)k>2HOQWGf&#HTC+yhgN;{W@B|G!xU8p_Dyn};6%EI% zBKzm6fW1>)0SPtX2z?f(V+$qLofOBFBwk}7t>SfOu_Ecm%9*q`5rs_45v zsmH3xRZo<3XB{caM15Y=m#43nqa6vK6WsPUIo#if-TRISo+H?$1QLHpV&7y%CU`;PTDr<;9m{1Kfd)ClsqFfX^b2i!lPdheDLSu;IO_bdQlubN#`J>QS1rn3H zm8T9Y+U@IzD*H;j^=&sGi1mn(b6|XfngxqzA^;fBrd!KQEec-yIP^NZ4WsdR}CAk8F<2xH2 zWux5zY+hl0piP_>zi3!JXEHZ-5ANe8;36~$vZ zi49Svq|7e4xl1(C4>pM5+~g4Xr?3uHaI*~8vL9qu_q-}>`gKbl|uVP z<$c~aaxuQs$JLb)pJ7i!fCJtEjez%RnWBK zSR)1|qZ39S0N8{g#lUzbp+ECz(hGiE_6OSiAeg>j+>&>d(^w6ilC_~zCq;G&>&val z=oI`01rmoDy-61%%-#UYumv*qKZ&a zc2p8W;4&0_je<`x@Y5jO20u;fvTi)D%V2sjc;I@m4!B|EsQI&#xz8Ek@n4n%@zB07fF(1UHL^Ayc@gR+ReOoA^vi6U7b zZ3t*$Cs3+lBPDo*)89T*qn<9lJ>D2~15VSwlA~TzVZ!N~|AdLU)qLv-uVF*_fLDy8 z@?uPo|Igs1tj7T@jsUEVemS&y!v24#>r@5#o^|ycM>pqw$f_MDBzuhGm>%N@@l(Vw zp3)jIjM1N(!FIgB-5%3*9=W)9<6Y&YfTZQowR`(Q4Dl~!_%^y39%13bm1L~aLi zQ?TaA=xsDl63-(Rv^M0uyTpWas*xbb%&XI~no2XU<*E~N!~y6#Vrfyq zo8ciGT!jrYM4D5K^Q)s_?X(8A5vx>HGvm8UroCMu8D<}9VK0mu#E(rAAdBsUyLISZ za44|O4TA4=&#TnP{S!)%=fcWNssbTTiPC~wL4xW0R7#I<4ke0VoI|m7ARUF2h#E_{6iiQQ z1~hlVE~1V5U%;}#<=YWWXL-e1U=hSK$KwbuK-eH&!`;7@0Ck>&QxviNJHfmBKh(Vo zcvRK7$DI%Y;ktto#Y-hBN;F=gpauh)fdpnW(Rjyt!((f;YDJh4JcIYvwJKgJcxA_E!AmtjWxn5kt-WU^A&9l-e9!msJY;6}Uh7@A zcfISqFKb^4yT>YOR4RX7eDV)5HK$7Ikoy%#E@ch}uFpX5v=ZG{oA=CzpMkDbqozhs zm~P(^&g_Og75@WXq8-DN7;@@d#F`qlat8Yi&vD;XH`hPi^B zHBL@o#XRuddQLlv9jA^Y2AA6sa`JNrkMpkmJKaywnNa+LuRAV4Wzb_S^Mkc)82Vk- z^7O&~FRf+Y-qv#CIazD@t0Dec9{t63)^cyX_%>_V_5OEU%MBghVJ)5XS{Al-TT4iy zR@<(n<30RwW-YgL+^U1S`@SrQ9ccIEh&O|^yl~++@67)OidwNd^GUQo77PE6cV{04_=I5o8Gc*gZyPag{OwXdgJ;@k)}PGoS4~TyJhXMGd!JOW*7Tg*X-tf zm&x@LI`nk!TdX(>#1{xm+uvuqbY|A(D{K~PjQ!{_Ea)bupmW`RCNKhT;IuU5rqE-?@+MEnPSHE z<~kvQ*5o8IsrFctzOnu7n$&ivYu%1UrOWAK6AW}t=us~}cA~AfU#4E5&+zjT9FnQd z0PeCgJCp(FsJBNx4w$B6i@%Z{S7jK;)$k1T#LN3csh*sMm%F3DXrn6s=F|9JTp52! zy1X2k_EF#$ef|$nAdPFcu1_~~5DhKtxo|K8g_h*N8sUcwE(|}$%+8hYCZ%{AJDKu};LR1%+S5NWE7+{SN(;9G-cj@5n?gc}K zihUaR3nQwVeNtbbz9*A<;>~;;su%xYgMoV?KX}8oI@|x&<(%{?!hCzK)}+9wlK#))m(#dG-3(CF%bW^hiJ;pNk=PNx zrf}&9L16nnEgErx+qaqgGK{Co`{xq2ZJN3drFTNsD>>`zJU&RT{CR9v2e+BWN&}|) zZ(1#F{?Z(6{$Hq`eeh9#JF9x)eNW}gCLw8kut~bS(?8H-6WV|lKu#u?DrfR^P-D9K zbL7E&u*o_N*U9g?2UT#laF|R-J$1wB!PZ)mqOA+ZojU5$n3HO&=!%K4bsCiyx-oSv znK~b9@sAc}U1SvVk6V93WlYzu9tkhP?(uBa#h47tPV#LV_pLjvO=FV8-M2{S!kZW|AyUxUEUl1w=!?F|E<|;;akT{o$>K& zMoneIDU89++4dwH*GM>|xix`J2tVc%;bw#}l_LP{i+H4fAPzXUw%&XAUE71Zys3V> z)4dbyH+A*B*Nj6F-gI6$PjQN=54%ZE{Xj3*_!OMPyk{f@XB^Q9^F!VA?u&+_D)Z*` zwdTGu2HfSn_qtJ1?0LDA6#R~_u;#w^g5oD3$nygGztyR;kEVIw7d^ zs4CH=+Mswtx8fhJF@ql&6u;gtenL?Ew5;OTn{4romzlY0_RjE&pBEJ0KdX3`*JO(? zv&Fl-5{mokALEZPBJJaK>8On;Kno3B$&YLT{1~nVuO_yZft2O$VDu*RL z>j0zA@R*nMQR%knqg;Q=^ru9Bic>|e&!r)S;)w|As2J_Gjq%tDO^CtMY1Z=KsR# zinc0u&c{6Bv-&nl-NpYqswzn7AJsRt>snE#JtO8tcr&+xxFQ>u*; ztNH&zrqo|4@fQErWJ;~0gvbB)gHm~OzNpHZv$49Oi`KeOkwkY7^9N0Zd>m3mf4z1x z=j*Ce(I5F@p8SvbvcmhXR~fr(n6+j{e!fJ!{Td^$k*il}QD*&HY(IlY;CkA+s}=o2$m(Rlai9zx_lvywsF_ z8hIR=uYYrED?W7^-et9PSCl(hdE}t7L|)YpWx;(nCK!vbt39zgz0IA_Z!0LJiSprj zTl~xElgEz^?!T!Zq+@cMH~MkLE`!bj70kN(h5#xenNatv@bXl~?c#oV$T%s93+^yDqhEMNLC>ZscdsA|2OP?Y3&if^gIA6ISoBquFLp?2tpGT4 zTl=ccf#JO8BNeMy2(F#>Eey%NiJIg=&ob3u=ChHCHeFKmv{n}v&rT;i!K@Q0yzH}N zcr-dH*6Dd~?qmKs-6jf@wN9Clc5*XNGgs_!@}8v9Zdca3VC{}i_FY<&98c=1!oG68 z?$4K+QH6Xvv5;$C%oUpam{J@zR}`UrYbQW0cC-}N4ayXoi3c%9dagauBZU~CDs}s2 zs5qSDM!a})2~}cmc3!4{)`R7rw&U{4V{fY2NOB65--sR_E+zaVtsi#^^PFLQ$$WS` z>eiYOYH^ZUtQt|w?o*A}Tj&erw_0NttIaI_cez{s2rfRuO5)W&%tR)R;codw2rBrf zo!;ZxBa=KZjkYoJSH0lpG);>HCiI%*0D*s7cNS2d9{AuM%eK2Nxa@liBHS{k34+T5Ww9vE=UPwtIWO%(X>i zFQi8-&4~UtXW=qRm77xGV%_;}NRN94^ufu#BdOiLBk4~HbIU4b?nvV0Gu}%b z&}*h_SQs^NajiRt{&B`aDhg56M@m~cUYv$cRHkC1bNv^5sdd-al)f8*2R8raLIWbD z&*=61|6t8(lLw6rm!cV87Jkt~IjSsswv%qn-56hrLZzE=gj}JX3l>$s-EF_VJ;Z$IqS9ZC;B{6@#V}=#7%`ux0>G2 z_jd1bpvZS9qUi3@Ej6W#MBw%A*S3Wg1z~fj+`!LH+%v}SrSVJ7Hm8C?*BQKv_+S9; z*Em}MdUnQ}jA&+20DC)F=(_-udH|4MWH-Az4p`T z&jZeBxW}|%$|+>~u&KzlhlMc+R)*u{IixstPnzoXX>7iB_f%V=52#idc83}5X(G3( ziA%SdI|qcs+2y9{M#Q^Pv6D>uLGSVXy~6KCZ{UBF27k_W!Pnq3Z1QCJaQqJDnr-@8 zsxBOyyZ|Hj|zG62k zjPv1Ctx2nwE4}L5{{hxEi*mB|b>8m>vIUYw*H4o~p$B~t;DmA6tl%5uvQ;>`ivt8Y z)pqZJXV{X-z9dIWvxDSs_mkn4)VNm^hMx$C2D_YFzaynEMW2e?Uw5sL3yT@ZaxsY- zelY5y+T^HRh?@$>pL4<$D`t%hyRV2gy!cVLlq4SBtf91Zps_E*E=*iQSUj%ch!ZAX zfX`MOLUbqWpJgq4wxZ+#x+(TAUrlDQ6=MII#s0N_nYN{a_Xqr2CrW5Zs50!ZFPjP zS48q&;fNjUU8O?F({h7Qe~u)={1w{4-1?#Zv(E9^?)U!(3Q`KU?@jCh`*40ApB#Ru z)*|m!19_y1B#tqz$eI@hQfzz}Yh0!ms-lZ9&lT(W&_8sBw<8{aGNuXG+Kq>+nizH!rDaLZLmg_ zk=Dw)bW&C~)p6m)ZAuOyLS={P42y_v6!zlx!gKex0v$He))TK{oBoozpQcJ ziX@IN2qe__$I~LMlXS;?Dv~%0j&6}>vMX;Qz^IyJAJyy?Zi~!6f-G#|1W|+edFETF zFw{D!nB`}Aa?Q?4<_|D$$lrixJ$o&A(#FK8V6GHm z0Ff6nkI7PTHRk)P%Mpm7^wBrINLh!iCHDyjHX6)&DA(K2j%c5lTwq*O@o56&%rN!p z!iYZRToy?}f~zY)LBNUSbxc$Kh@6L6y0%cNt`eFDv@fG1&P4`Ul{(p`sG*46&?;3} z)iiS|Qg}EgHVg-e_`03rZGE{recwsLWBch|8n~|&-X&-yAR!!9KI0UBW?CQw`qbl* zYtz(Y8DE*em-LZMJxaX(zsRN@<=&6_8R`)}+ft8muLWVs;!|bX8!!H`;R$_LygNqK zo5jd~&!dvG40te@r8EI!xSi$CYe#*<8j?nUqRf4$Sm@CbD&T(^&*zo1B>Kl!rLNV# zG3coK5Pan{D9kjpbRC!y`pW|T+Ve_RA$852H3)x}GD24l%jrBn^msF`C#0}UR6A4J zLyPa^C*PjYa^MI-sB0MMq$M|J%uA+}bL-Q}&~45?a(LFib8P){^-VRy%fzvwNQ-aI zowL4bpXTa;%ars7{T6@xoQK$aCf1MVp1>~!m{-RacwQURmqJ>3tnanzdgB>%0BT%` zI!9q#w@p@Jib?Qjz9kC<+o(SZ%lugkI7Yeg_1Mp%QLu`nnm7ES^+Zmbg!$m%CLwe( z|71-wGJb-~_(GI|XeXCU!*q}MO))s;(teQyzo=AkQekvpm?JzMDk$j8_wFa@pgb9C z+!G5q?qTe6BgvDv6JxcN-TO&U+&7%&9QoR^l2;G2p3ZKcNI#3)W0UL zE%<({$qQpxtdk0u&SH-{1Wl`~UuC9W16uH4NrehJ2b${#y%`%+D$14E&2sY5{3Rxp z`8oVKu)@$oe5bvSUdkqdW|p8fcr?N4)0*{YJbTnMomx9Q zlW^kVx^M!a5Z^#E6^Sd@-jmB(CXdKX{G`0H=_ljEiJ#Q9PQFM~h@VsWIjyScgz0?F z4kzxf*R&+=Hv&a6{|BZW|N6E24R4#c|1MkPUh{FiF*zjeHw;JO{$~5G&3>%YN9*+- zAKEjOP4}g?%!yui1+7JiAuCyU&e`B{10Bx^q@sfTmsfz0y8^-o(Eo4C9Ctn?$3mGLjO&_ zG|ymIiiR2mCeJ?L*}@AG_iM7k$s4AdCgeAeIDm-;{KbI3n3EG%$kN>Kgj?w9%t1@^ z;U$Vqj+Pr1{wtMEHIVvSC) z2a@?~S7;VOg~B{-sZcThOTvkh%F@L{<&u{YKUL){a4$%`nt!LMkA%jS1B@w&k7um@gq5tY7|5Oo!mM)FB9jLh}+=6kpgHD#^*MY`WsW#1&{svn=Ly8?{Q)1BU?mt}gXzSD$3bUb3Fd%|B=(AVS< zPwFE+VI?1hVQ112e=@&Qg)?_DnSSI=(MmRY>U3Vr9n++2f^{Sv(-g}cT2<45h9|6O zi#U^4d3*d`gtN`?gOB6%0H-oK9ACE%sj91Uh)(SS@q=I7EmjKnHOVO~EdqL**DMub z;+$Ja5JaFq@1D@1BlBJfGo=L1g>XT5HKRBPOWP#pkHqw}Vxc7`=gZ}NqE+$tzE){$ z|F?2h6cTHSvls$Eofg`^pQU#%jiK_=c=0Yo#4nfUMkmJK+v)>)%m6yf0II!nhj3mf z&^`f<;wq2PGTpq`U#6DoJ0+wB`E=}g)nDh8zg)*bFST3Y+K{EyJw98tyx zi&e=-VGWB_Y<_PooVhcc9(kFvSL;8yy_(!iP6lg8s>Qlt6=S~bx*<4Q-JpMuhg7*| z|1Pt9{TRh|mhT7^v&%P`TwZ4Rau@5_9F|Xc8t6=XMZuUag{;|YH#NO>7j3h41zNkW zzT?`R3xDAi-D%dYuhwqMcU!wX1!v`Nph(h zv)*;)_y6vCU;5k3dhY}4y`A;0Rs@Kr+vxtP*J`ElY2DCcok8xk&XUgl z*;p~##|mG?-F;Ixym{3mXUXTL0-O4)?7g^lhkNm4{2jcn?-&bhs1$xJ{f_uGP;edv z4z!^-Iw}6%+HUxD__w7EZK!^{%PgEi;pqk+&THA@TDrq=T`xHM0Y|=~Wg@Hw<4Pat zPG~HFF$^&ppk(cxUdKvHU|55Kjze^~B2lBadMP?qDErZ$x50Ke>OP`SLiIn|+DoZD zpyPRan5=)+;OlBWz}Izr7<_Fuzd1~H*@ixKTw`jol&iXtsEv@QjV7Vs_DR&^?9JeW znI}HF_Y>ylDi)kDK8ZT_&w3WSm5})0jA0xDBdy%_#Qg&%Ps0w-c91=UtUff2wfAZ` z-LckL^4_4C$AY&gpZ-;xeUO9Ci~N$C%$B@2a3+oopAY;Fr`eAMB@ZYI0W)A`C14O! zPqTRD_9%?Mv;q??(! z2par0eR6ra_-Osp_civb`M!?tQkqs%*5fmhyu;j`D*?=id4_R9mNjf;Zcbv1&0c=V zWm9szFP|66=kMBTxaSho47z9m6~`l^#JlOU%>NYAt>5Ch^%?d*>-^8D{^vA(a>}8< zDvp3=g%KE7@}4bInx^Kkn`g8jc`J+<>OFe2wi$jMQZ~X?qlks=6qkg&=PMdgg+Lhf zS|ps-0P^vZwxq<@pwTTF!U*is-|>_Oh3N-B=RpLScPgPx#0mW82qWq3 zB*toV2Tm|H^-oIPBU233xWkMcFA_~{#v($l=+8-7v(Wp*{9SMUzGMErY5u-q{jsH*?8xAb zUCn5LI-a=2j4Q}jwwp<6yOo(k#+v3m%O=6k2Ne)CdFWAm#bZ zbgWlMV+3jCFUIC9nQeQ-ifM2w=$zeLdCVI@N*(u7$b4JwEhABtS@p2VLuoZ%p+BtFN{aIZZG%vcoE|0HarVF&uvvhnvmDAkGXtJz7(jouOp32D|QN;0oQ)$0Pul zn9L4UztC<3T8wo>FfL>yJLvzAC%5VU{^|bDRy+PLWbljiGZ+p5vj1Dd8TKuPGt3{( z3mxo&>=iQlEUi(o_6l}o{5N3KF>i)l6fPBSbJHxFr@8=?Fq`LXd8>>h=?M#_Ql&35 z>CKr*cPDjO-TNBK^L5L}S^FwYH9#)9X>5+By?;1?%{qZqnprOwMxi#k{B46d>W{g_ zG1DKX;UOU;rj0VGg-l49?b<2Cll?2GK1-|r?$5;&pic48yRxa2o)$CI*u%ld%%IkN z&`d+Q5316FDiNp=-F}b zM7sRdney(9VyMiJz|zEO{m9IBuM>2UR`=coOi-f+=z6zX~t+-(2cH=KJxpy`S$dqelJ;Gn%~mt4HK;GpbHHcT$;Q7j(uf_kQ$7*6hG9;NQDwoAK9Q zRVJSD0sDq&h!V?>u9%}B-+OWN5n8k2^zst`p2ntLM|Y4$_xueSU4E%xg1QsdYQ<$MT>RMm-4O*O807{o4TlqYh?yrMH|+2*`(^7|>PZLfG^W-eY z@G}ftu!ed!{qrBPeM>J7HL4Sdn#uss(5G=vUl{Rk{aK7JE9^KJF1h=AJw1v@8UHCe z71{G8MSG%hO;}~E%5bTT%4G3h$^7|(9N?%JYcEM06qq6A+nZ;Q#8rk6v+D9E}a+#dowvOG|$yaGRP4DTVrT2orLw45?=n@ORj2Txu-;Lch z1p4itnw}Q=kh-zC%f0ts$xKq(E6gT9xyv+-{zYc2Dsxf!m=vx^>-5}xQ5Mc}Z$u|s zwX*ygE+8?UJw`aJ#QCIZL}l2W&SV?XkZq-|^Om2igeV(jnBKjcVR|rzX=U0sW@%r} ztVs^ujU)$QXhIO$>GI19q>$= zh67EP-+LTMF@LV+g&Pb9kycJOFU#qsb-PYClf1wDDdTig?j3!x?{vcoZ_nvwIa26d zG-ZwDX9cb{^Uq5g%Wvi@1mXAk$TpTw^WKPM8_TDAN3X|bnk?F50?H_+f4X-&8W5ja zf#30uOAx=wG9`m+jax`0OF=DWu1M+gag{sU1o__1#vUC` zH5+BvSGrmo37fPbT)G<@Ca1gR2gk}YKA*i+vYZ4``UvnFubv2ITyEyAXq&lTI2pp& zL!t$Dd0>XkYZ_kAQdN)(+W7Zw%WdCTL_b%Al6AS>j1t*`{dei{82DuwOKS3VLyO$_ zY!K3@Ad>mzhM+g>W*%kUByZG%#Lc@!RWx~gy|-X@vs8Xv);gJAbrlnyXxP15-MYR6 z9&D`Qv8|f_D)9g zJPPZ{@$=b|hFalIVYp@kB2(Yw6!Pxl$`V_#*sr)#?-l(H^sIl-XFcn`bbYT4`}NcO z)6DyWv+T>KbNzhh-YuqX_8O(jPwG)#425^$_RH_wqr8Ua9l8DTm;9-Fe?%3%e%mj9 zN*aFsRbsu6jEkZCWsyW>fgRCwL3pN7vymB5X8u5qDF((S1a=m~=Q@vPLbZN3{Ueyz z5jx9xa+Lw4^CxRXGw|$so}I4NMf0jQvA1dgItAxPGCzJ__wftqyna1;pUsch_WqJ? zFKkpe?cPfb-?aXj{xbeqX3qWb!}NGt)6gpY-Zy+Bv~BzI0vE|ye7?w^wu#>eLH$8v zaVbe+e7`_ek+Yy9?WHOS{w&#^E77VLjf#=raRbFEH?98K3ylfnNTt4o1P>`+qs{(@ zxSgwTWZ8%PYV*DdFZ-ZhByU4a;+UF*ysv%&NHLr2U*j3K+`Da67BOZOxw#`d9!4IJ zT9_5ydkT8a^e^oInO=GOMPAm7A3Z6KP|A~&MGKjli)?;aTqO%?N)HPJcnsFZWnx&K z$NQ+wyFgn79THv^Q!!Y-w+{N;B?rco92ncZNoFgpA%5je%{k70Xp7uk2vSjR^M3`) zZ9JcGWWfD+l}ML70?U+#xMOnF7b)-81g^jje{+9*7cH$+>A3K+R6p;3euta{BfzOn zqbrPZnfu4wLEeL}q1NSwSmV2c33f&IM&BWfIE(*|xNA71kQXBECPW4AWR69Igly+h zrc}I0p|AfTx1=20@vy+Ll+ezx7#2+WKPEJm=pZjdI4(lX3n zFSDpptbUr-tu6$Qj7HLXb1vxM>sCMNMHz`p(+P#ruXSIsZ-&2L2L9E8Pkuey+GSa- zz12%=OyLQIHXn75_TrD1FyfpTO2ZrVt-JUN{z3{3mefDKm~veI$7nV=jgM&U3@*C2 ztDYGvCm@K;ak6apXRJn2+&+Mu{CMUXw|KeBBes3@H zqD}6@JDabj&inW9D$o4hS>~6nqg1^OXf1lvp`Y>P=#VOM@RV>LlgTOU-YFp%t)tU$ ztGeyqx74#gebt|P41}u-bD{_My&0n3EVPe7cK2oB`Ofg0e8>LNF8nZk3#$h|vIWZv zxmK)LC3m7^nM!`WN+s3RJyh@*+to^StMLl33|H3}Am_^(79KZ0%tsV8arZfE;wbj= zRMlOe65)ykD(^Im)DH^BuPWrTJ?z#M$Bs#%v$)d~!#~~};&c=Rthek)&C}H*#5NmS z7E=#tMNYPz?0ANGQf)J^OVsEMs$v^e)^pp*#&(MoboY{LtDA*1P!C)78dQV~M2yWd_I8js|j8 z$E`1<^+!GZ>mZaLuV&o1oz1tdp}v`t`!D{2L?=(?>RrX$a2}Q@f3}thd7BFm|dN&ywsXXm-(e1Bw8ZL(*;MJ~el9;oU_FAPZscM?@K>GUhD$WVx zPwaa?JmCH5K7#hS{u3AE*lrAa!rk;KKB1Nm`Og&{%$H6=My?mabJv!v#o>x&(cOdn zJg%<5Y1l(gm7K3)S?up7(ea!+>A*eeKuh%k?A`L1PKo|?Ykz@vu-YefD(v>FaW90Y zSr=LMPofpykA5E>p~k(em5gx@WW_rY2=PFK5Q>O1={2z>@oTMJcqsgfF63Am8{!rG zm*iHb;b%0ju;6%0Wo^Y5GoBGH7Hf)tf$zs_-iga~14r^S+`DSO@ z)aD}2*PLN}oRZr0&amSOnON>xtKMM8^_pIPoEPpf>a;_oN^@%=ziF4iUa!r$%6ob?tevKC#=#MyN)-L; zTNF)&T6b<&q!bagxl4CQ&YGw&wHv5o4jAm01C{l#q~k`oF&f-e_V?CnbQY%V@51+P z_V<~~Y0|q)f3sO1cLvxC_wY1fdWIkp>h)tZd0*$n_PlUj`RvPLMfJ1$kfS77O;enM zX7ZH28cQliUtukxzy-#Q)7BpukwQW`cTjYk)o*Z3i~Dj-X%LTs24di3t|!>3y0k4O zwI2cfv5yo6GA6*_7b0$+HX9-5QwwM!_G>W-a?Wl1#JRaSyC;UflfaVIyY37<*%-T> z=xAvueH=sSW4v1XE!NH;&xI5y6ZM$RnVW-sc>ogFaRw9WgQY%&LWPW@Z=Y&H!O{T8 zEr#G&c3E2g5sBP(ag#RT>rs`Grf zb)u=QL&<$w)V>ceuq915C;m;d4H+ct>1K7xjW_YzETE0Ldts zp?}h_9dZwDAGSIs009>i4s)%Lftr3?kb{c=dNYcf);V`8R?mcMGz~1q$&-%wQ3@ny zmV9ja%@y7VXph^4fE?Y8qjM0a+RwQw54?Xjo;oykQDwuI(aUt0xv1)WPoCoo#na3^ zszz~_MRWfvoRhe!B(!)}T4@c9(g(p_I;u)qL*n9dQla5!^**B6;!tWQbL5&EAhP-t zPaPYpP-8b~dE?Lzbt?B7btu<%=)-vG7^iVMJ0dxSquI##=`opir}ECgOiqCfQ2}Jq ztSA;EGgoHxhmeUn(VVH`9j0ko7$XAtrA8lUUlpw2*@&Wd;BMkmKN<;MPm1V0Fxyy{@HhJ7o( zjtyurao4$>H`YI8@H=`CJPYjf;7Vr^F_HK;d;~XS3gvVb0$?xzk_LcN{WWV3O~MFV z@%+qvvQ)X|U;+2@Dx1bzU9Pd8L3-NJ z1+l{<71WGt+^D*v!tp1&_yX5y%FRF^F<&H^9f0Q{$I}#(8D4T1t==mvs{6C_);?oB+ua_9_FV>lTg#{y@yAv7QajYGe+4k`QLrTULAqxZ2%#E%2dwt ziwbc#Ek|*Wb|PRo+;Pt?nA#IW&?r zU*SE-jee~6`|&N~gKSr;JjWCwp3hmZ6N?Ak*^i6s6hX&rCOPpf=Q$0Vnf3UVqn(CN z&6h(V@pL1;<=EKy5W*I1b++nYut;eRmpvXXba6 zx9D^;?G119yJMUoVXM3wr`w0ZrjAiOjBnZ7X?&JnHOYoi^?dsIVA_tcizdB@d!KpJ z5jGtrmR^?<$G7b7G`>xTm6`#oHEv$AzGD?4SKz5Up__T<*w*BVYi?n68WVi&_#-Re zo(oZwyO!KIMcB#e0*}$yJhv=yCKP_u5IU2%xELazYBm8zx?l4OL-!zF(AZ*fF(oGs zNfp{_fBp>Q-hi4zjy|92nnRotN?YFRH6I;R(aF+$jPzrPthQF zatumUcMS_Vw}k1Riem(8{yi2lI)X)v?hGQ#wGRuDlV0YqnN^9L4AD5l5WBrBv6G_~ z7=XgktTHQ-m)Q|r#cgM?iz-(7CK)W-@JBLS_ze?X*qnX^8Oo@ zx4WkEgZP$XqTk=%EI12ZV&bk45RIYmus|j?VMUpgYg^ zi)6a^&Fi;wk9o-*ta&jFygDwsftKsFU2}B>-Pxn2ixkcd6SCi=QN^FBGe+Eisdhu7 zn8ktRq2gHnVr}x^MVdeVM*21a1`|)ue}w@#V$;vV1SS{LmO1}cdEqah6`(=7A80s{Y&u}L3_}ODOeNY;tjG~m?R+p`Ff1!8CgWN$8Ml%3 zLrliS`x&gskEe=bgMBWeLuSr^(Kz2Q4=^ZX5wIM@zP)h}7q<2-D9#Bukb^=GA%~|q zh>He(o@P#l(eMx&-pECIjRgNo@&m3oly-f#oQp)gF6`v?2cBpns$WqIXiQ8 zyld|m3%ttX&L!sY;Mnf^@i}%r{n$@GK7)}*PCdC!rTZ3i26HlS@@({&<80RKk|Q|z6Q=}*mf z?avcG?B1WeOn;ui?85BLqkmH(=qqi%hQ&(4b*UxErHi(a&a zqvxZLeakPn(l7X^3bIb~r$YDX#Wa1OdD$6#EWV4rF7~rdbFq!pzFPSM{X;sO`bCLv zf4oI12-amAR^3cNwtRLCvc0{!#aJM9iZLG@+QSE+K`N|CD%2aNd1afMzJx=ZuC4UW zOlqd_{A$K-PmY}U)>QQ5V3zQ6E2LbGfaHmnN5eQG&E1nk2cp4|O}<6-bKK0r8B<7# zqWLutY_-1qayoZn|1oJb$}OE zukD`qv9@foE*0NAa@G*Y$pw3vQ}DfBrU`jfo^#!km0(VnNPCecW4d$>95)!AKLvgS zlF%gh(#JRr%Ne?_liB(`)5zQL)IQMx@ziLi@ei6ne}1|TSo#6z$c^ z+>HEFRMb~k2tNuh`x=YLv&!rk&hxzCv{~hn%Y;U+1X+-(e*4pK&cdpS));yEcL}>c zwZM*>Z9w$Q4_NV$({K#+Lh-KsVuvZq$l*o?avF#8^zdfk&os?3hmZ!%M9*fTD~%|5 z_HwErqWllt)dbA%WCAwEyY`J8z)zz`u}S6ddngZ7BHnKy{ctML|LQRD5m`!#J-5eV z><=D<9@;;Pw;0^#^OO+oifkpv$lmH#HjVWe|7z&?s?M?<)~IUg>(|)1n!GMqt=^LR zIU@H^?>DGj{8?}OIcNQYxg9U_5fB$Xd!A?JaO}w+3d^ON3iv;ux?Ra|D!xg=ZkxA! z4~w5*O%zsbpV$v{s_m^}ZCuWCQhZY?dJ=pTq(%;Vt7meQNnPB-VQ+9@OI2Ym>JNLA zJ;y#WM_C(;k^rtI>`nk<4*)Rc^8rj#)@cb5kajY?#Sjc%RAvbdo}sFv;47z8CyAo>QuH$Hms>Tg0-L52UzwT zovm~9_zOf`{VARIj5aaRM!9mC_qO~uf3uKH_!j@T+?}UE)+Fa?0@3+voEowxyA_+( zW(u+OeEbajRYc6}A%Ibk`CDKo71iu-C+;JbqR5bXKcqU@JK*+INIk)ElH0#Bt#>OTs)51;*pzfziB z+bjEEDUFU8qKyJ9!nKYX)h1>0VM3T)@)FAKnmDe&s7MO*h9UCiJloD^4(yL<3X!GLqaCRO4*)6A4< zVQf)a3y=+BumU*hgkg^5t$>mjCy(h=qa=<1>QKoJIz%zkp@pV50o=k~2Y{~K*W&`; zY6&ZiQcry<&SYDI8svw5o!-?Y;p9WB8G+_hmRg&8E!;ZUocUzQ5oPPgzT-fF#8n@j zVqoHyXUFnGkL7mm)A*)yLk&~SiN2^vM9yiLz)xq9k;pE8S(?p$RQ9W-qB~VL;NZrQ zIu*M3@~%f<(TDXvp88js`U<5arc&XQ$df)xKbZ%ZiLC;tUs?flx21!y^s5XVY~F%F zc0qhgMRX9YDuE~M!e%dB#}IRzhTpM>;p74hSiRWQIBIEx1B`a8(0eaIf1J!??+@1> zffjNC^ee}i{{yN|Xf%*E@OMHf0P^j3EZXA zxDU1K=T6Uw7BxI~?J&lBzZvi20Kp6X_4t zg8DF8fH`tb-r>!-!)N4C!}JD0og8DI>ahIXyBwBls*;u5l45kyZQh=ySFv}*8Pewdf2>F)70Y92{#SXEC>c&Y zOVNtU3umkW$wxCskMFEGQtCg>f764EO8nR6omAq-#QNIX??g4rGy#y6C`2@#t*SSa z6J#yPaek3DD$BnmoV;|@;~eV`YLQ#39}7?D?8PA6#B4=i8G z|D5_c>vN)WaGzj1%^5AP3EVE88o?BtJj^gdL*rV z1nPdXyHO0WaIe%U)%=6FaG; z!_3eA>I7%!2>hTqrRaUB&O`Pbm6AnMW0dS~OCp*0g;9Ad4_Ewc2FI=`_0+YLdS|G{ zxPuL4=FjL8?9`2U$xa>}Km&EKa+%l99+o51r19rFRgmW!$WsbiDu=;bXHDC-GP|*_ zWo)Qe!Ydcs{h6_`)w=K0%FKqC_&U9y1DZE-m(;WPgrMt`eUnXQ{0EqC7zrc=u%hfj zn2vJ1D5^#sZ8+=_*c!ty9A`RR#f1HCj!a~D;Jq|NUUf<#f%ly8&YOz(aS>SH{pj~n zgh~3a-fV-(puxZ@3pBtnUyhqucI|=RB-b_LLAO$t^ZS@h~P{$TPA z+(~8yvT79LW(uz%Z$Ud+7fWpbJL0YF}8k2sS_Nd~*rv*8MBIdrZ&0DKV5pDtvbon`5;!n$so z$QU)iCliPe2yvArmo64t68c@l#?3$FrZl%V+gffpzy9Xk{iaSelnpY1!_f|ncOBz2 z{GK12b&5cIU_)VFsccBaR%^2pB3d=dj}gTX8d`iXYt9rtpjks8Ecc#_OLXM;4_i4dV^cst zRFXH4ZL_F2-{1o)o31Iy?JUYRBpEP^KGpqSl#xJ51~}kJqP(bkC#;N@L>##=>|DF- zLTBdd1^U*8W>#%%>RmDK+g#;z(3*Cxks}VWSBco|Ko^f~bP)P@#uJE@K`x(_Q-pl#nz_a*{;j)fk*R6nNkLy0_;EY{b0 z9Ea9J4YWu6%&|^W-(f9P!!lZrwgBWy8w7GDggCE$e7_u0s&nvj$2^e3?%%zgZA-CR zI-wtW`gcMP>c=0J6D=0qOphlSqsi>|v5$?5F~C?4u8k(ii(X@qHbZ~fEK^tRjO~to zLQdyMBopJ~#AZN{AM%+Y3)b+k8Qj$9XPE0DP8osbRUI3cL!!#0#;?ff%q07|uFE$|6D<&H6H@az}NqMlsyRX!=6T9u- z=yQQ-U=r|{2O8J|J!yJ<vi)!x&oX|mV63QTr9DUb z6Lpsk3^#%@>IX|i&3P|0w@gb$e^QM8Wg*LF%vT-WGZ?&Tl8tgUGYapO-oqx{#mdkk zPDJmtS0zno!e`2K1wVOctS@`?huPEeuNkO5;|{}$&trYZe2GWcm$AX|Eh5QV_KEe; zy<983cVF?Fj3w3NS!(k1?B=$Mpoivkj*v3+p+f_#xt_MH{XvkMfUKc#02~whd-dUn zf*IVw3*BzgV22*dj^FhdtKbhkbW8wp3?Oxim0?jwJ8@|s!enXq#Wiw%g%fp!elVR} zjUjPsGj2P!Op9)LG-%&(Q8{6oweQc z+U?#`0#MGmR)%3aD#nnz3#3vj*V)N884tP78&1G@9#LSGmw;oG9{(s)y8dWX6gsA; zH9MI2#$RvgFcs$L6=${_l{9rs_EuG z`O`oK9Sy4+SYH(XK!*xY8=*h9_8sZZ<6O>%SI2wtR4R5x$h{UFpd<$08;T!=cx|I{ zS@2a~q@%0k5w#EPa9_%q#wY6Ogq*tN6ZI#=1&ypkdQxe9Che0d>}aN1JT<{-*b0_N z$9?+wHYcT#i9?GIQKyqd3sqS{-L6*~E~OU3*J*2|rz*B9O(a0F+8l+FcU#kLnVrL# z$h1$UAQW|oK_LWW7$SCIEkO*myQ<;8P0MOnyvTEDuH<<+;)_M->N5jdWvCA_`L49r z-{**``!5-N0NqcRxPEe{^QyDhoI;%BI)&PzVIolE)b z*c7T?Dd==6UI6|LN+ZI_*m}v+VvAzyx4#5)546)S=dm7>FMLeT`mQP6eR3M1J1F)1 zG{@_+n4;Z`fx0_Whb<-iq+LWe4d@EucWg8)=0r}uKPl4i;1=1+z*W2&ULTp z@wSYXGk*gwIv(ebZ+`{;d3`MYxm)8~W&GQU@$Vi+NDA!7Fx#NcJ*6-@ zpt6Y^my-%Q2NM#);}u@>LL){IqmYXB3zz0a68(kV2MD~(izL)uSg|#FcxBU^ZeWh? z4(2MrsNSbU)tP#+=Ub{DW5_|nCQ*KN!&9hHu{G8ojo^A8qZ`i6LaY#(lMP1yeTI+G z)wBOyjGpvi?-)HOyW#C&bnXnFR`$SXF_Q;mV=|)=CLh?Y`zo!2k}&xX+!X!)D@>Le z*;`X(G1)u27fi-?qbC;6=rv-f)LRIgh0>bVj+PMcdf4ii45_s`CgUPUo_jAr3ay1+ z-29zm{?6iWntBs&B3nVApMZudKF-%8t`BH<4yynS-_#J$@Lj`+(;ldCJ8F`@6@w(5 z$qU}kAO1%wg1k3^p>n6#lVYayrrn!u-b^tsoJDi)aTc9(4;QI&$FA~z zw$eGe5*8vThSce3gNC+4(R>Po-P;U%A85gQ+@ZZ*cclz zu_=0lBdALV{&P1HXU0|5`7_q?w_k1Y_v)t;&(GI3IL(RVy~+?C(?*KVc>rl>G?Yf= zoyPA;y}b44=y-bJEO7WmPj2|9iC}BYF)z<^8oq*n@cd!_xyR4sWI41t*URxd!i{ps zs!D}Z>(p|E8G2F8#MT?Nwa*|g%xATwN7W=^OU zI(McfbJgzs;AcpM?xVLc48Nwvx@v{S8n~2tTg-fYPxCcGW7wH4I;M-U0^7Y=` z$BfkiV>%5m5k%AJ2LL98G@2D%IQ|%+i0XA4Uc%z;?qa5D-J@#qVvjA^U(M0ogDwG? zrSLjX=)O6u_{q%v3f~R_eI9(m+8>*TH z`wj(#8S1ma3%>)an`$8_us@lrkId2KJhiEgD;OmW1=abIOja@quVAUph0~Ts@^+s&bXA!C1ik=@n1!uajQ~fGqXuyT@=4NlQnpRh6zT*n&`(4E&*!%ud#z(^3 znP5BX?dtcmW3r0EV-_?SwMXq^OfLBGg0~+x^qBR~-YsDr&)(DvF2?P{02jwwTm)RC z0xNKIxWUFMezH`bw+Xd7AF#Oef_FheO|SIcw9jvixQ!M?tG7YXw4ZY~EKN5v(BLV} zn3EeseZlJoaAt?73^h?gmKE@`aViQ+LuO4-<%~&|%o=K#A+z>c&2yIjulDE4CM2@0 zspvdT^lJ=SQjt2jTDn#9DkWv`M69&4x;u;CN%NH zY30MhPSx`$i>7T`JTRPFw@%|u6~16fIYC3te0h=^Lr4DMv5!*j%}tN|tSE>3jZ*KL zu$UgeIzEAsjc>X3+P!*xd*@KSojZ3Y>v)#k>0Zk(*hP(}yN8XuT^nC2TTyMavCl)< zl1(`!sTA1>Ib59ik}_?bVX2d$4J0;ML()9Hn*!YTf6d zC0G8Cz{4}KG9Xcnc?q$rA3cx?6xC-xf=z@FJsMlC%RAb8JnT5l?}2F^BW^0XeA#=9 zwmmr<^-ec@=r~}TvbTbXrYuI-?q$CojBNYHPm6Ls=l?Lbh)c}v|Fc;3`TXa8!yw*i znq(#G0_EoKc}-evJ{2vgb&QC(bxPZUR-##fbR6%}0&eT61>0IU9xY(D3h>Y$1i}|$ z^a}3_E=+~GMr?dM4t}-CYk`f-vckLfZ29mCJG^u7TGi3GH`IO1m$ElY87sI(jqYo( zCErt6J}>l1kx+UPC%jDO7T$w^@-NTyYgapX#cXK74D?qajt$jopGl_+5IzYE=q6Y z<>oHta-=i=bhA0zy`|&E;<9M&is&{+#ztU)8t_17eC=j*wH5tiH+z3N-yAb;+BeWm z%gm#!%xrw>jMxdXq<3#IRs_tO)QeJlKl8pOuf5 zlRlP{sgeO+8PDOAz6}r`?uBtn*#mnK7cXY%+5%(I{#RwNUQXujrc&GoT29K;jQaph-*Nj9M`8MWLk6htlOG}P;hRCCMu zLh;|2;zX2e4I#Ux)pEb*ZDslWa)pVWW9B(Kn5EZn*bA!?V_~;Voz4SLk*x~2HJ0&L z+>sf)Qy|Oebh8N5&>9=a;_KbIBTHq|r3KuMH6AuRTb~2a$pDoq?F8~@*lB6}oGq~! zvJ2hy*CbRS;|y-NJuNe+wW5EGrwD{B7oApaaQ2qm)a6w|bZ?1Zf40w`*54^SO%Ve>>YqGZxNpCcz;)=R&qu!b5 zlPK(kju@M>n7Pd92$_TRV5jj=0bvb(@|5P92YdMs&VduQWs6jn2zsV*m3R7)9OF}- z?#SUG0aFf>w{(Nq4UHc535E3!NnUPzbp2)izJz8}X`Vk!o^E*+>oG0=pQ zD#8S+qs8akUg6#G$FwfIGl&Iy|L+=_U<7@>l2YpPG3h=xp2D#a|GH0X1l^17te1QH zdN48yyo?;dE`a~xOXDZ8gR(=ZC`{1eH8$wVeYWF|l)*EhD{)N|LT6q^6CA}`M znn@?xPfT07KUb(fXBkrWUp)8w^uQ;a6o2o|A^y zJ0)XlL05c|vOP+6jc$WuR1HrAqiQ^mmCIg_U9#81BL4^^BXQLVCcVb00_=+v+1I_{ zb23uJx61z@A3Z-4h__`49l^53tPT~$OCFp!lXy%2z=8b+YyQEc5n~-YQieRZ(dZ~+ z0}0}*4f*`tNGs~UPgxD{cLuHrT}ZD~dV4@!Ddxwd<$tV|ieY;z&fw0BV1saZ!`#3# zv)!9>Z}#?hlTgVO-m{(lO23`9B4=D%yBmj0s3d+3=77nLZT>))w$bZP9yhb0p!q&M zmSv}IvAsKEl^GT+i67r<4LEf&#!VG}HchP5MX(9!Y!5x-9dHuZXbhmQdoyX-95cqp z&i8r@w@xW!qD*uUtm|ud3X4d5#X@0F8n_tsT29BgTDIQOmpBU)v0_u0+;?_3$A&Q) zVZy{RW=sjK*3Ux0<}xARRMC+~RmFquuLfU5(lB)SJsQ-5XAd*0-MCC0Si_%qSCx(3 z=R9kmEfs1mvM6ys@9Up1DFI-vd++JZ0-P*5jjEla>z}xY)^nmK_F8!EB^3Mt1sNHx zAdD(AB!3`CN;*9mAVVtfht$bQ?3M%AlRU=!?b{MpJNN_l5NnK^+X^q|EuY0m^pjem zo8%LS;YR*8{%o*t?(6e5H>%?!jq@^rT*<5O!)D>UM{sg>79D?PI63J|5Qpb2p)(nA z=**V>0}p?0%u5Z=A#h_AoHWf@#8PkT*=E%S#=qn=lNVL|V+T|5-1l*jJ9W5*6#G6J zsRH+$ivlsT*5-AqRBMO9YV0&2mJ~7xC&(W4E$H1@BiSU* z3C!Jaq&5bpO4roIH{`~a3cwgPs|B$gMpFE#T$eKL8y3vhFKD0R&zpj*$b3D$Oos%0ANhG7yTCPe>2mB()J!$8D#>&PhvW3 za{iV}1MUBzD0IYk?p9+jK$?e`rYRhl=pc z4?U9Gc_3wic)4*WnM4IP?p9H^(lJjYOTl#<_Y=ENskVz7{rPfv)^3z^+z)OnSYO&| zdnCK9$$nekz6G2t@MDuOy=Ao1VDdC8BOPt-W!t0+m^-TZU&|HOo0RNsb&V9d@y-2W zhm3iyCi%VDr(1i35(}ZS3LRZFC>0wBSJE%`@tEe${5_iEZMitJRti=CL-n1;>zQ!D z$R95l>G}n|)sLOcl|fbROg5AszXI~wcYF}tRqfw(xWTtCV+FA3zXA)hIXFhvB9OcJV-cBH80bg?OY?>uYSU*>-77!9+ULR{I|Zqh>J1zmr;Rr1gNatx z3fcx%=Iy9XBo2EYmyA_tiH}DY8n5t;O14#tLK_o+aN4PEct1+~Jrl_U@H9SWy_wQ> zqP=B=>%>vE*Ov=<>D^eYv#;H|Js+JH-9)jHF|LEYJLsk>7}a!BtA1Lg9kSWNz*=u$ z9c+h8SJSY1RWBdreLZ??4ooVJKedNSA5ndfbxdrg5yW4d5@%LMa7;WebT00!7$!H) zkYVy8^Y?x8_ig_A`R~e%A0jSwkoG!h<3L!ldBF+PxSK*vh4VK56S&vpCujHTteCf1 zhRdwlSzf>S6P|U{>)HOvi93zYy>e9j=8Y;hy?)c7 zojb9G$M?CCCcf~?IalVjm|OI+uPRLI=Z!xoM`!-%AEnhlWi`nVOycX_)zE!s(WI%O zv&$IB_)nb1JI#P5o!NKVc*mLl3x1`^Pk{n5VWL*Jt3BOUPL8Wl)X?$jEUFr{U*Ed% z&a7*sASmVvh^gLNHHOvsaga=Cu=7;S@KMg9WuuzM*T+tYzjG{RhJICf%Y=II&3V_X zMR{2qnzv3W?RoE7#rBH$(^71Q@>Y9;u_fB>MhDhkEe>YVnI=fWFfNm(cINv^=^7#! zK+OBti&C;^zZ1lo;sk0G>L$xaTBi>E zresbxwL186-tu`{)R)-F7)r7`sGh5X*KgB7r|}{VbM ze>MDyFSwa=%TfT)Bnpw|SHhH)>@_|%-0xptY%x7FGvD28VJFvF@QOGVm~WQMpWW6P zX1C|m`qRo;(NC6(ZKpTWEd`(WgOiD3e?`c(dyh*Wk(@F$oR~7LTi+-uqSNhJcY9bd ztdkN)4{+c1c0$i1s0T9@^1O^5nRdb-!lS;Vtjd=MK2oIPeSm_6!m*bv<6kCXgr?o5 zM1eQA44(fa;O+Ej7UiT7SjqdCjnMF1)Xy|(OWAxd)=c+$z07nC51X}|r-(u<@npvt zH&03>ry;#5n3rfcdDCqw0ckEXx?&|`ma<_dZ^TUau}NiPzDzX}8E~wqczN2tH~xeU zFB0jUGTQ{9;F=g0cu^GZ?HQ(KswLH2vGE%8WwIwQR9aBR8CB}umU-TB57i9HqPq+s ze5`+CGrtubQkZLNrl%wr@9QKFtpsbs6|RtX#^E*Y@g=oJ)to&3Fq>LuaSm_1CC@-H z5^xYyRnfn>9ys4#hwe zxBj^wn81zac~m{-{hGuN*FNQ#Wr(e>YWg9jkyyLxK1y9_Q7rpC=FNcpMvt&gBq~|m zE;|j3YzwTIz}QEY0jX~1p}_pafWcE>eb}9|R=~{x_cvM$^pSRtzsN0m+T%iz_?EMr z1}!pf%1(n3v?{hLw08=0uG(+Nw%xQRiW@{=<1m@leD1a{S0)iE+a%$~g`k{d}@nlilUqGwU;J_4|QpPEbuG z)BU>-_E_7<$0Kbc<5YAfimLvtsN>Y~C_VgI3g<27I1K~9Q3+ghuH74sM4%$MD)I(J z#PywbWER&KTD+SODOq%5#PIqLc*S+rNpPuQE|HH%S{qmOQo07WY65erA4tb%%j-33 z5g+hIK4p9aAHdVp!RvJ?Uauq7?)oFL+TF2_Ak8YQ)Hdg&eFUBErnP?eWcvs@-gV7s zAHkl|NKIl|+Sk=!dJjp&B;F0=D^72TSoQ=jwK^&(bE*>O7jxX$vxaPmP`MJZs3x|2 zfc1CnZ`f$x-*rP48{NA(Vyo!Q!+Tnm{OPg1Ng=qLqSvVfk<%=B@30mN)`h@Y*fE5! zLeRU2(aR8py||hW@{UZ-E}cRVtxT=osF4HG(%%_Ve2f@+!oP_TL;lh`M!YiS{{SPt zxVt+>Ocy$u>?7OAr~hBY2#Ge{UAtS1c<}Il3nO%{d#3_xp)t`PEE9c%JPYYOVYo}z zx>t5ZO3A%oP4u%amQP+Wb;NgA(eB54eY0ry?ST&#@a4P7klp!P@9iH*B3xtszGVKs zVE(r7H+_6(`1N7}7p$t~49}KjM*}H@&|}n%)VwXA`D7PdVr!N!7kf{jo6Fm7Gyl z_iOkaWxIp5W9AK?XXiltL^yfTZ!?NIB~#2O>JqczG4oG2Ghil8^p$ndGK)KFjh7?` z!cD&wG01XyANsPP2k*tVTLb*pjG#fN0C`trkK#QNqQ5*x^gUIq)?k~z?^ zYwJulhrlwGcN#xuk-OJ9tXrKR(?GlThd*msei%EKF>QuJ)EFM-5LD0h@yB$XDKjB< zv{lZud!M4hG)HDIoQ!&g>c88`9;oj@IR$Q#sXjASNfUSaO`PaAvD7a!(r*Givz?tA z{3d?m7ufo+`gyF=nDiffa;F|(F};Qdf6ncg#fRwh?+>xdc`PoJhlUp8^`zz6P-*D& zq27gItEFSY0+o`c8HVIg@96UFYv~f)tK!Fia4xb|@L;E*{r8<}oEb;K0XT4Rsc`a~ z4gPBIMaFx>h9-;7QXkj}ryL^Vy+gOEH~0s&N}z`vM+s}dM?Y4(!FzpinkR z;X*MB=$^ZED0vQifK4xPj^oa{C@rcL^39qS%B%tuPrbl^U@Qzo>k>F0C_Z66+s$9d2Q@AJm<|PtgoJ z*VWTod+Z;&LwF*E-sQmStTo0Td zeyhYEB-Mv6fRvUZ#FK7AzV4D z=ANnvx~uZ}s+=5-kTQ5oEy9jh=Rn%e+T=kPbzh0(y~5igBNfkHxjSFD5q9IOVUdbgXZ0QPrcx2S5h;DU z6VdzaLrLi z5-=-5C*nrz4kTn>KeBB+ZW;NfWKVRTx9*rIwM^!|ePesrfyrz()Y8w!!I0>Vd_gOm_edeg;4P)f^-g(64xB-5E7=*NbMem%{M|2o-W-74V=r#9 z4+DSq6GfzqPe4YNn!v{JIF{H6>+3YOn+ZD+TPN$W$tMj2LNmm^u}QQ#{qmWy zif`T0XtflzEgeNmou_mIETGfom0uCNJQ_pq{wkS!HiDX!hkw~o&!<6E)dp1^YTI*S5FK9Y^}j#O(Zb5A z!)TxkN9**`;fM>(os)vG-Blf%lj_yH&($BsvVQds{_>3(n z4>KlVc=;XZjO1|V9X`-9qZ9YBtL3y*r6aPka{PRqOLFv9Lxgc;ya?dvd((88WgZD@oH z)W?b!y?aPEUKAd5CeCkHW2iPpYWSHG$gQ)`3!A?a&EN6-4d_PjNj}}4xu!7;;cFL? zC*2!3R$-z;f{N%e#^~6E+;7bNcbWT*@m9~}e&gZ8s!E@>7aYG7>*Nl+C{_v9MK;k zNEz$^q3eX0?xS2uC0wK!j!!8l?A$vsolcrthvXz^45KpZmWcQJ)$hJaEi{q_IOa70niXFLo8Ms*mllt2NZc$K+9C31lf^}}<_v+6n3Cf>AwYm|v_k7v z1tGnEWvn!o7Na6ql)*1iHdtAzaBSk*t6X6(Pa`;}5PX@!pW5O2Qz5W*<#m4!{PbDw zr?I)EN4H+HeDCk!_J6qQ8{tcRKk4rq=N2GmchpP~(p#iAl{a|LH@PqJxj1~MQ+hR` zD>|m$o!4+6z>baepHD?Z#TdYfOE%{p9iZy54WgIB*|?nQO>O~46zNt>VJofi63R)!h%QSG}zB$Zcy%A zeg=X=)qGm-qvADfGo^C525@!GO=wZ5F5I~2jGOPo1Z#5EoT;Eq;=D?6ucc7SLX;e)IzxJA+s+VzHPS zaIP3$P~9q@hPe}e2WHfNq)V@ z8Lf&Ug|YdSxv3lUjp_1ip1v_$D(~beulri4C^b!n*nq5wY10ei4%vrf!c3cAq#PS3Ao1rQh|9JbM$Pu;=AMja;Z?Yytv2w5_QLDel+gbA?ZtTqBi(hu@WNj=sjrFCPrM7;DS{=<^L_hrc%q6L^211Q@P zWTyl{8+T%&Q~k8XdD~!gWM;fW&ee)irA~a==$OY)4%)x1K&KP5e_Srw_v*hG?N3ut zQBL`Ti9c@V9ntPt%VFr1Bs#g2H1iGi;R9H2OoZB;?H&Qg2(mHxUq zgJ^@AN0?M(YCM=HB&LJ2t{4GS%@? z4ERk>H{nSIPq!alRY6Iss&)C#%PK!3=sKXEJdm_$tIST6%kZpRjM3s;o~H)P}{ zq^miwk3v$rcScH_ab-%aQN-5NUA!mEf3VvO-@3XIR`~~mIhg;l6BY9>aW;&TReo9w zLzi19vRR^`#QDh)8OHyBX8g-t#{WQQuYDl9;Q_en!P&e z&$1F+&8CFAF|~Z)#?&^R(93w)m|E`m|2wmcXY!L}{0_H55XxQ~Q`z`ptF03NJDg3U zGcAfL0D-a=7eaJz2zEo1CN0f0Y1mDyGR$FUEuvOJRPMS>awd8U+1~=KBi%;5e~>h4 z7)5*{b+lT0$s^GBrzfOaHB6+_7U#MjXPUKLH*2$7sqK4LDslN{$iPwhlFeVb-)~uz%fAxVpXe^2zr)qvA?j~|`r9{A=?Yx_p5E^fChv2t zPbEo~8-P3%okz@d%#bm{N{rm@6W%d@x??V}vzYs2XZ)!h3q@oruJSv=vkgu0pDmr_! zl}|3Vt9cs%vzP`72nrK-wn8EC3ya4BaGe6kyl#rzx0FHRYAc44EA#2Y$MZFUs-d;` z!iq2WkuYVyn!x1@JxKt6T+W*0tVPad%2_K)=P1=&%5OWr%Vn0g)KpI_GbRjVNcq!5 z1wQ<{w1^6D=YeG1!)$#rMAUr$lGBRW2``hCFIihEi#U8ir0J5&#cp_b=bBvE0Ox}U z^9`t2P&P@8>=GvR2hgSPXUy8v2|L&1V{yx^7Rx4$#QN}&a?!|hmR+|r)a>D@5RMvj z?#|<6Qs=Hh)qxR5Oa|w>w@LOg_feWM@qN`4LACg3G@qZ3%(WvB4~!5@|9QRcI_A?S zoWGWh7f&a|KDXl+KPQ|h9qmv^#($AA4=A@)o){efU$Vsz?>>hhg1tkHWzT_z=&Ef( z2*Qp0vifV3)r8OJSV5s^8#{g>Cy7>K$lkM^CuId?5gVoI+urbX=%VbG-1SeOx+*de z+woGQ7;)=U3xbe+z86JfZe?!dc$J8;sjV2<>nPvbOr2H5_8b4sTu1dieU&^ zwe0!S3OzWAa(HE4v@#qyA-e!6tRz1&VsT}7Udz>y;-o^E2)(KAXFnFLydi?&Nk1TY zFE28ho!A?$i;QF!_B#A740mdq(s z-^)$&Lo)Hib}d>oc=m6h|j6&CjI-0U>8WPvDsKSgOh z{sV;v6aO8hmchgnZ=LLyyyC2#FH4ii$kn5%uRLzLk8hOmBFhG`d2pQ|L`^1~E+9S- z@vGVBV*|CiD}0zNF4Bt)biRlP;$1N5XjHSxo-pn30Kfg17mGygrC4U&XPA`w8C6*7 zWsK;QCqmwCi`+vhRjBcdw`2XnQO?W16yk*~eoQP#lxYA$|vI9IGNn3ATWuFjlFG@UX7?xaTMam}&nR`O?Ui3wbb0A-!)9<+(RGLq9?g z+zVZR`Fl2)OmA^V(1$zo@ zWu=PG`xIrN*nXiwMXt~!He8XIOiV))LSm5%>jVQLOx`6_Ci;a6=Smb!5ZG`e+LJO(K0av~F+(J`Ech7z$RX|H|PHW@StTX_ZazK@^glWGEt z3{J*m@{l=31Y7d^wcp3NY2Q%ZU@!Cq?S&xiaRDN!2#naX6+G<;7uxsB*8}#oE%Ezx zV(L4lQxJ+@2eJrSK2Ha;$`PZh>X$^scui#-l$mH$$evWzEJ$xR^E#LE-Jv{ zzi8(NT#LH0!N!?s9ivw=0eK;D68jh(bv%F-mJ)T8(UaF$*)76^+$`rNIq*830NXlZ z{3_k-d!CTiFJ7Z@@rv^}x*}l=C_w&$>zF)?+C&@@7faM)>?KnA}WJnLZ zRpN>C^w``ZL|g@rO_RqGcPi>4XF5ISq;eUp4fYhDB0FcSqB*1E zJG|f1hu{{X@h!4`Z&hpvDUk+CQmZ?q_OkWYwE5npB0p|)xBu4(0?Hcok%x&r7KssMYEMWD9H#|og23vPs7wkS4gUo zVJ`dkToH}5^P8Rto}Q1z({i6aA(7+$`y)iST^?6U0z}j5P9yePAcS<+_56hMv;`kT zx~we9hh#JDM{pro)yiOHRm+NYmYx{ZT1>$%4=uAm4rW4${RF{P>}zc@L>$p`xw(uiWm+c`J((HeXNchpxLajTJ^8r zpOaXnfw)=j+`=-Qk0OX6apE=FBSNV<69%p9y)yC6Xa0mGrO5nD`$hdcnt&(T=Bu#W z<V{c&ev7_8Mj4ijkBst}Cy@=8P_+xo>MrC3%b>S!VKo?EUmcW5x2s!|5) zGlGBOk=wP3L9wFop;|WVX|xlX>R7_`qktD;p|LZSN0u1>&UHCqGxj%P)VLusPW!sf zX|ExJI_uwO@~?Zmu6?J`eh`v~H0s;jp!VL_6ABqd$LrK9I=|9mbf{=xO2?CF*!`am zY#8>8d$sNILuea;MNsND`!G1bhWLh->LKpTHl*LH0=53D#9?@l1m(N3dd8wl@N4PT7)79%MtG|C(%gcn<_x+F3pn*zU>uCUjX z)ka}JpY8fG>RWZNYGeMsZS1E(HW1xb=IdmuFrR$MVC0gctI;;Hgp2)Zw7=<0eP@EF z{mpQGz!nw`Q%13c3k4ocE;~*%Y;{(m4>Uzx+n}P^%!N~lfFLu477!$w&HQWufpy9e z#JoZO&EFTD;p*=Y^|wI&rvLTJ53W%TP7bns3F5?J?{=s5U-KP3H5Q7X<(K(gEnb9L zokQWphz?&pzi(cwX2MI8vCQbnO!2U%ubASGIVgLI@0)hOg^*w7X-nqmMwzEGs@nt1 z&u`%D{^j#?M!#_2>Dexr zgd)4Z?PAKK^dAiMbnyT!>IB6)}*~*s^G?G-=G>jVAAgVR~FmM&`*+RQB2-DX)78Z!?|TxnteWwFI@o>%F^ls%mls8>o623PR;I;-&%Qz>6OBiPZh;_(+(3^k?=dAGQTsJTDUBW#@VwWxw(+s3=A*#r8p~TmhgEhw3ki@ zHGyBm>%(O+hysnIykcd*xkUGGbRHVgPkO%=(u-#(Pbr6>JRoF|9&1gMK;gj{`M;Ga z6kLpdQ>{?W5~JJcN->$X67YYOm~g5y_H`syfIx`3Y!$LK)g-Ed>;EE@h7ks006qh= z*a3I5?H+|C3{)ld>mhp!c_Lc}k)N_Np1UHai@l)Evh6jUk-;mDG9~w%Cw06k+flQf zGQ(U2+a<)PD(kJ;5jlHBk-19r^rqd-yT^9N2M0;RNq+!dMM^tn%`t_>GdbA2$F`r7 zgAlPMIA(3IdQIC~d@m`nf=OM&f;VLUIZdy@WUZptVEodOV0@O)>+y%~ORp80UbAMt zgQ&5)(hMf1KJ0A69n?x((Z`Hm(ea_=JRLwpgLVucqHGe@6x2N^i-IcbdUwTno=^3u z{i;x}b1>Rj+o4DIT5$T+ocCotx__``&?8wVN{gN_!KnZ)58uiGQ5X9Q!q3Lzib1T~ZqHQo@3t$uLK{{_81Ulr6`#X zB6{w0C&5emvltP5(2Snh+|A4c`b27^Ob>l1a(&uarip-dkB})V+WkdI$bEn?z~Nd+~Z7 zzokicv$)=u^vIW;2K@Yas%l0_WQgNAM=rK;?YugP)A$ug$|xiR>1=3JDx{=08q@tX zRa@v>f`nJFBu^yh97}cyPEgYfUUl*!Yp4R}^Xu^Q#w}7dFAxv>R@I!6@Fn&~Rdc)x zgUXg6VDA(uIcV1uN`x!IMxN)>@2=rpt}67^W9n*?^J{+lo)5;>d8=o6+ny6ET4(`H z$M@6&lhw;7%NI%)9%I>GD1TN;?P9|@whmK!oIn=wZfTptYd+^v{Ti*6I;u)rx(MaD zG~rBr)u^w=>Z>NXIpL)huT&LE z<9DjM+T={;cQ5?<6n@962fh@)UA6n-ch9xb{K*QxE=C<)L=NS*xn%;sxO0p4Sa$%}XOtmk(Wggc zjcN?m2RY|4(wK3`qslAgUE@2|&j1b~J;y-K*so=BXJW@zXKxN+!$vHM_AW*rpKyaI zikLa0w)Vc*?jwyQah@l3;W=%_gPZ3pn$X!(NWEga2Z#TanD~QO z?-4hDkh(6myEy!QZ0!$XyN{TA*%Jm&^YBftq#6?wKaKU~+`L`^J9e($TGfa2Y5>wQ z9^7)%qp6c)yN9K^V!N+P9TVGqed>tV?i*93vEB1h2gi0Vkf^-3@@%Sb@$M!3E?R6p z1#|J#jd{*!k8n2OLv<>#0n~|P`X)skK@KDm3uzEa@i&MJ3s%*Y+OHblU)v+Rsll!* zWeX_cHSIt3jFJL4a*_RN&tQ4SJs0ODBsMYD@tS9@51&mY$&>6YT&^b_no+ls?pg%7Bzr1kR_~+!k^o( znw2HS-D`X9l1kfuGGn_4WN@2&*Z$nBx;|vwK2yp0|JL@2_Ft;52rV3M*`MocNxm7h zi`n;?1f7p4awb!Kvl`5h^^NR%%yQo9D?)8s%|0TUtn=1YF9@}*wqHfSwCl$5wcNPch4%iU{J2QkZ_<18mxLPw`ijrAvcO1W9pP#*SnyzDpbe%^jnXjMW8s%VN&@G%ga z@mpZDHOVZY_F^t4l5^LapN;f<&QaVu(sLX~Jx7RRCuQgJdlAQ_98DZob6n36;qVO2 z8JasZZ)pC||AT)8h4Qb6!^<&9F8DW?V~Cs-%O7`CyW^Qjzu%~!0<$sue1>P9(LR!4 zP-jodXApi4jT^V+Q;?YWA9da{ojJ%8x|xm}A<75VE)G z$cPuVHHhB=$=k*Y3%zFb!s12eE{AR;cPR|TYj1_C$WC#&J*k)3O z$%*85kkpOoJ%XhiHGB?OM9Buy!pC6=vIBG0Qp()AFYeVBV&f9)y~VMzr`eeuH`I``!V!_u^}qD&pk(G;D5xl6~w#v+78r zqa9GP-x=lCUfUy#is$Z3y~f`J7)@>Fq$8E&?_yjTQ)|pbw2h&W`lG2U*tSxUaq0r` ziYTOh-tgF1?;v$LIDB-hcZfPIh8gw_Rj0$kLt?!~q?>0;B5T38q;?gS!Qi;N%YMaP zn+Yo|^SBmE#5PYRnk%}l`VVx@@qLbaIUeHp6~|*7PjPsPt$KDBN(6K1mp9!H^iH_ z1?($ZCaiCW&)OU~_T7f~obHDB{Lc6?wbKnwZx`;0)k)CyH=b*sR*oC4(QZ;kmcm?P z*%|6?AM96B5lTPESFi9jP)RYL_5fX$4}_mYyw;neE*(763=PDCtr`B%uk$QR0c z#k414V!?C2=XQfVm`J-u`_JX|s#>qnAton5Tasf0tG9$B$}vsaXrG&JRtNJVizKDe zCGsaIf6f!Oc5YqAd*Q)BG0Ur(SeiP6oDroBT!qGTX8E(>o`ySlu?O!oEcZHbPNOxQ z9WO&{wmG(H;#kRtTgT`bO%;o&O>yKP&Pq5dVeUvy^a`8Bs|$Cwk4auPmMd7TrNpMv zK=r~>W0`{%2y=qvR5)a}mqq!N4(TII-Sb`-+tuC1vhT}ty7Q9lWk2FE`6vA_TVq;` zP|+&*8yoDJBC^OE?ZP@tEZ*sjV>uPO<(-(kxj^YUF&FU#?HRsc-d`-$DM?`JK6#q6 zhK~1)+a-Tk$o@@Pl-~(EgZ2mg{(M1u5n^ND3@^0aM^tBf#2H{e%y#z>QwfnGBqvN{E!v%x)b3#s=+ajhI&xbqY{xou`lF`F2IG_GU)V!7hxD z{m)d9iwi5Z4&;6aa%Y3w5VE6$WiqZ#CKrIEl3udyK>$ZmI0MiBIH={EKR+nz4mrsmS}9 zHY{KW^~(OaJ*nc{=3->zI*?J*E$g%!Sf0-4Kaq(?E{YrM{8Bajcxsqlh&9?(T0OV4?T-RpI?C*O zj)8;xd(Bv58JjGKBEvu?)Dq>cj4)vh!UC`=qn6DtKx$O<<#1s#S4f~PenY95EG*#E zt_uZYonA(4$R)!-b+55Z;#r#Zzll!%O(F}(K1Z6r>2{AUViF9W8mlgl)O30sRN#!h z)Lq`Fwc;>!wZSP=zjc^RjV6+p}DO ztiIH#v9_WT&w`VrfOht2XN%xt4+LW$ z!wNpiG2(a(VNViL;{;Z#hKJp)#!L9>It0beg;zAlFc$*O&k;w0b4(Q5)OX{;Zv>Gz zC0+^KOzMlV$*5RcF4Z#l@p{_4$w02EF7eZ2YfH^)tF-MEyCG!utqr224peVx`xyfT z>)LUE8i+5J-?_4W%MZk_D^~Ax0)uzfv~8E_5MxEnFE0u5l4dc30l$Zks*j0fA`{SG zq+Dplv|nBLEuuxF`-Az!7i%)bB$&moF zB)#Y)hREi&zoiJ;^?HN7f%ma{l+FM>G^!dqvQV-8sk24LC}UmTSa+yyo9Cg*AL zajNCNuxm?e0}#Uc_n^OieRn?n|6bp--TG3)a$Q&PyOEl^^&R>(>znp}R(Qp>Fbl6! z{uk=`gUbEkwZE=v*Y--1n!32{cXgKdF>3n@D@mwxhhEB(Gf;)6;sspM=K#{sifSKsT`aAseYncl6ii<*Bd4{ z5IV|@&buN#P4<$Ko&=B#T?9c~-_j>PloMH6&x2(GMdpT$&e`9PPi$6G(GKSUkS{~T z==eJ<0k;5|M*qy|swO_|{QF56Ejxr}PeGK0X6uytR;6^1;m{&H5Sc(4!yh!&=~iOp zXAH+d*iY12zmKDW!_U!Z*XGA3BdzM|skRFT|>A-O(0-tjAHWq*V3l@0u!ex$%Tk&st1&W`3+lH5&d4907i zK=_T-W-6mbiE7;(Tw^~<~0 zkN|;8MJc>ZK0ReQJhdWqxm^7n+}Trs+|Y!BOLMQhnaEdw&G-nfJypT&d%=uf=#|+K zuvBxZ-x&s6IZ4Cb==_Ef#bz-znp)|SX1#nZSu0VPiFBH*)eVnF%6py{i*5ytiE^sn zz2%JJ1s2r5(08Q?+^tC8?d2O;FF6j^JUx%6vmO&7KStqnqq9!EQ73qm&p0df8}+>5 zR`DTS@(oHDl1vkg{9wc$#kCPVnyhVF7gcs?>G=whI2@1k-KwuCw*k8mPlp;BE!S6=rejZM5p!}f!VcaS8 z=P-cT===kF-jI!z4l}|==e{E}v$&SW)3buuA=q65xYtJKL8(Z5LAhob;YL|EB1Y## zE_KnI8cCDfbGK!S_|*P^D$C@J&J=*s+>gP)J}*z?W$wMgy)2Ef%s-`s++v>eVd({Q zzlbAB1$z%BvR1LERQZ89P|`0dD^Jp|sM3l<+S0w+-bAd**mHL}6r-G65jV$bonJFs{ZF0Bx=6^R2|bE46Hi~N=w9kSGf1k0_2i7oyHKBs&kj>8`f ze?%N~JC)1!2IpW^GRr3ga|jcxANEQ8oNG}X!`8gf$`d2npNg<&MYL7s7iCK?n=EUf zJ-0cLgA|hFFwmR;OUx6!^hWL7WUShY;-)L+OWZq zh&B4@0Z5=_su!efPUj#0M?Jxmw^vVuPnEVzW7g6wz8uys?hUoxeLwADVBZ_6DPYp= zr@iPed%r@{;XJUxy#2a!JvaB_Nu zX}5AYznrA?739#yiH#fO3P|K>=}NViIM6v>bxrC$T`6U6m+OjoX#Ll3kR2VI}HO-JLzR#9GC}J3P_y7DoG;n~sR}oop;o znl#zI@pxwQvhm<9Blaf+lerTtMU;!D;JuUWDt7=F?LXxaf3)w0@Y(#mDSR}4!{(|% zlm-mE5~MwWxHVQGRw3%yq1=nN>JrslT|9Wd#i|SNExv*1wSX^<^@Sq`KP%u<#R^iY z;8}T-Njlw0R8dqe9MVs@&O4*1uJmjF#}f5V$9hjQmWa~OT2<>A?vX=~VZ?+%#gb2( ztBT~L@3gtskRtW^4|{OfP0EIrXX(MCSiUWbUdC@QuNyt`Dld9Jg1KUD9+u9hrV!;nf|xS&d)*;z6T4f980K<2M{1a6HHHCyqaGe9G~j`|HUW z%)eauqyFXbH{U&%pMpa9TO@zfKQDg=G2~?aDG_ruUr0>Q?APrZN0`w{(nB2y?a5%N zz=;|;SeTw{gGF~;5t(Ms9}!GgIWpQNd(lJQ-5IYPVXPc}&2lgi-F;c4$eF+doGNgZ z!I6wiPB$+&mSRhQ}xkZ<03^S`8_TTUmV?adH5XB zyF_pa6 zgB0d`q2x=MNG|8W$RUFLiuADVe@zu)h{+G~QRs}Y0`BWH6N|2vqMn!F6wzJZi43Rk*=yusDSbkfhIQ$+>C&I7 z((85U%yj88RXSUjUY9PtnbK#k;;QF6oYgc$E>=@;x)wL+$7iJC(dm^tT1{Z~;AKFVI)%$6;2wEg#SYnHILBOJ7r^Zmn-jmv&P6>;jgUD}#1JxZ0j)t;9wmDFm_-o#Z;AET(|n|oozt;YQH<8Sa#1|x0h(&toZi~it( zbm=3MK6{IRen>!1ja)wf8!j=3rce=%><>nFxj2fZOC`5`bk{5mdU3jRsw#Eca%;Nu zEJ~kU$W@P+bl24G^+6YOd-`$FF-Lc~XzECp_Hq*4<${*oZB@BDU*zQ3 z7=L=!@~0+fbQ}*%EE$E_M62c)9kN|7hDD9m>b^XNFf)MI4^78WhdgU@gxL&BnD^Hl zdUI*Q++1_g+(8&giokr6H)!t^K2s4SuCB$S`pH=Dp*J7Qqp{wT<`$|43t~J)rf!*z z=6F-vf@5|*D{5s{F(^AE3h>{4Eh#kAnwh`>k{(1%O4^bWJm$LmGvG1QPqd-fpy-LY zT#HF39jn?YQg--awEv~TMw*1h$SwlGc(piFBh!W~M1=*zuw>oA_f?=4`E`EJq_oeg zSxjmG$c)6N_3he1-u?plt0{G+{k)bV0!8SLtUTxe z&bXCIa+M<;CFC*AmCuQTT?OQy%5CUIxbJ0=fR#9(c1-nRgOSUIux?30fq-b*3wO9J z`E$A@&nQu#{23+598J*f)M%ChSJYe{{-&<*EP90=_S!qp05w_78?8JH04IB^KWnQL zH*Hi4h*9YKq(8NBuObK~{P>&?fS(%G{~!WU>eZ}XoGFS+c9S5CD+ma=eEeafJfk># z9OF2qQBnDafSSM8zkLd_?yFa_t~t%&$j#5wh1|bp`A5JvfWMvJzyF_pD?^@29`UNx zu*{kgVYOD9D_Bl@vi79(Y|N>b+~nFX4xUuX@L50^)Gof8?v zesUhKr4GZANL|sdNYK$;V&52=XGxD*d7dsS zPhPDM_@Xr2;QUs@Ahyy0U~EmTmU~pvXvb__8WCY-IfoUjILc62p*l-OVWV`GST>0q zsZ z(jZ%V5nI{~+Np);u~`{VVbpsu;z?oDg`y{m-b8;T^x+e)JlAJ&USpm8j@8V5&+8$( z=3`~4AllSmbEjq3B-!vW+CStP4Rl|(SQ6bP3%uAlxoT2R)+>b+Yk_1@F6C->*|>cL zr)rkR#36gX?>tN!Ub31^FNm2RvSp(&Qd|9ec(%&O+Db5y$pl;~lRYA})6!rUuSwMh z>|inZqGXq710ji9i=6SGEp=v{{h}jVNvR6^e3Td65J#g-y%d4e;_i-@TMH!weySkA zeuXcn=k$xvI`*x@zD{;YOxw%2MRjEI!@MK7nYUuhulwm zr)&!$2ezqZ6S0nP0cHt~uU4G65Ok45SMG^NL&|iGP@2vQJWt;g}DE?4cH@~VsC(tOXc^$ShCD<_zHt9Xqj1(s8u9ccmcsd;& zIkiqul6Vrf#s)XJ&-_6)|Et=%y=|i`JHNZCwb>A@$d9Rg% z?EUvF7%^ZVtCV%)<+sRKrlLeO2g*vcT?(7#Wr29zT&TiS1a}LN>=8?7AU2Z~0X}V3 zZ#I^#p|WAA{>ZsBJV0oW_IJ5}ld5b`%A);6h|y|(iTOQR zq47ES(mnRHO?KqjfF1c^$c7&5h9XF6c8V>GX|tc@RZo1uz18ze!jZhlwe%%)7Oi1P z-c&umxNVGrldSupqWpNn9nPa5&;@BPxK|(rpfI5{jTMEA%Z^GTY*37ve$G#Z{`lZrXm2yVxWz-SkAfgq3s{}=GQDn31Rrr2S4R>G$uZYpsU$EC&xDC>x%oDG>R#)cg zMFG2RF8lXoBXYur$S?c&-@s-fQjtOE@fx9zNq1|6O3nI_N^Jxe7zLCS!${Z~qz8xc z8P$W*Lqcyz`$qd`d|PO(D*p~65fa4a-w_m&J!{%&2YJx<$*V8(P%>XuLxKhw^#YpR zGe)z}OAYkC;Esl>)5>jEvH9(cwnYl%`>9Ap{+hgc!e z{SFdOsXcK=ycUzhf5oxak*U4eDrf)3wCoF5QobBHHgRsQQ%g)U-8a)V(>FUX$4Ta~ zjpTyI!jm;mrDEIiy`H`&VBG4D&hPf42P zFb+@Rye6mc$9!B=nGgp9f-GS?9ha;v(lq3b@>Hm5-q^N_68Yy4SBEuZ1?#ZH2*0)F z-8^Uc9I5(dq(N!T!RqCE#;o1an}IMU$wCaI6fct3ieCsJjH)>(Zkb~J-I*<28a z7(H3>{4LpKq>+gSwt%%!S9?M=hHt(?uibBH8~5Y+>ttpBIL!`X}=sPTCLBqk#6vak`9vBWbgsp|NoS*a+}@;TxEQqA^D6K2F~ zE7j0M6o)fIYnd0T%$hcTUMG!?o9yfbH9_{Z=(Zn28kc+AmozRTOrdVR+jXM@*Zi>}a$4=sr+}&yKi0$ziOTI;kwaRn68)?{h@O2|L zCG&hB`}xIt6v-dAc#o*%!lxu^J7T?on@>p8{tP#mn~#d^@h?1V@g9+bQYDBSUu>!O zAUB_ZKASQ9NFwI>J#_!G^BD|3S-htR-C6jaMC|QN5@E=D^X)N`W5#29&J4HPTYEMz z>@yYJ>%$Y=507y_e5`!<$gB@{=np@G#va<~I2FF0^>O1ikyUgBjP?=grdtW)wgPoa zwez4vEh^(dbA1}GRn&+^-Kb%I%Z2?aqEw<5N0;%KZ>-Am(RQ?TY7g^P2{){(-iDYt z@+kdgx%=k5+@-WimmWlEYRKX}kMq9j9;tXMkAMpqz!_YC(A(HD>5;Su*@Z{9h-fZv zNf1k(dSGt4Kz0czIOl3!yHTGXi^$k>wLV|M=8j6<#4}Gyd4n#0mffWu@du%N>P*hR zq0c{)^Aq*?9(nf&eSQZUNj;L$oagUitEorq&^bRt%6Cb-HaLf0&$&_#Y;a~vGv3kV zkIA`M!|}|;>?QTA*XMiW{AqoD4lV3?RG&Y{_Dj#t^!ZjPzek_{`bN$Z`h2#WFV^Q> zoTpj={$2KgQnNWZAM~WI;iOznF6ZPFIk}LNod8cw=HzoWm{Jotxtsl`R23)HQc}Um z_t<4hoxsUGS8;MACoAM+BqtYx=M>rnq7-n|qq|{exK#PrCGDi1i~0w$x+XtYf64MC z<3@R&;JA~r;PG^m*akphdEy3c$ecNj@=xE6{9={aU98U z636Kr6FH`Ee3RoEj+;0Za(tKL2OK};c!Xm$$2yKp9NReF;rIu~KRN!xQ2=Ke#&HP8 z3w+DR?};4aIf5M3?yrm^Pi|g*L1B@1(BL7(r~dE%8#>G=8Gg{gBSwxoWKij$haEop zh$D~k9evEPWyc+VLivd&jTt-cG`_p5jDwGl*Bj zE8s%go*V5Ca*mlUVdL+SN1D&`+MkQ~49v~I}cx z6R9{)PvPl+{XS?ZHE#bW-@r>PWdEDy^y?c1L8z9nH4uErJ}O4YcpA^(jJQgrv@V2J zwxe%hjq)d$YzHn9rM^$rflgT@8ox_g&D*Rse?>pI!TI2J-O>IKs&1K2?ohaT$vM1S z5E&ww<#5ixuro;gZgO(?mHrn|0^A&)@o%BGKlC{7p1_MlW2pYP?IR6fGbI9`TkZhT zmwHV7IFGvp<<4*A3}8RhF#cOET^OktC>NW-ZfDPL3DiTM{2L!8r4gvQ*lXPWA>9T2 ziCAof?6*YkJYDrqoqf0&+k+bBKAsTT4A>tw*dv&6P2+c6A%x&2ByXs^(zJ8Uc>Xf8 z>f2Du4LpqllJr@~em`LR?u`IK>S@<358Ah&pZ-t4u2&v(S~FzXhFT@$2+=eXmH?EQ z_Gyc)s_UkQ>%>sjZ?83er@KNUo`@wIoH+?$LOWE4N?S6G97QAL6QcHS3Lpla21wRE zEW|`Nj(rjsMEj1p^j-Facjeo~izRbz_)5GfTg~|FO4-(CZ~P@^I?=D>Q;q6ZG>Mbk zvvQ|K&YE2!f>;_+A)~gzz=nt`#cw&IA`sZOD?{&b$DrAHF#XM5qTzs>2!NpC+$o6b$k>kP)zIn68g#FHQjc$C&Z7Y zE8p$eV64*{0_)R5bdP1iER1F2fF}yWMl)GoNp(EIs@Wys^X-2#$h`~w3~=dV%XN?e zc-oh%5sPG{5m1__iRx;Db0)vqCC03t>uu{2TY2X=3OVrwQi7nQdCU2ZskCoYsb+Ep*X*r&ULkW(gs**<`lHpH*B8sc*s z8{)H@oX2=a9xiu&sm|O~kMS`Cvxv_Mv4hqapH;(;KR)X+ewxzGouYYLN-ZqL_j2{C zUFu}@)@tDa`hXNJe(qs@WI|(oB9lcImpaZ1%mA_?(O}iQ(89?wY${|*@dxbB((6a& zG5a*)x9kj~-=Bg`Q&f35s-7=7yN(5cDiA^S{7@Sy40u=g4q7G@39KAZfXnk+cn;SH ziMoCQw@Rhd>paNSZsqxLB? zk#_D<Km03g_;v`Rml!F#-Ogk3v*pk_sb&^1tyn_vJlpd`ekg_j(p>q*v&MIJvh6&kafupj-RkFGZDU8_*5 zASLdw|KW_`!^AIO%U#L7gu0&+SKlG`QH9towdx< z?O;ij<&6vpRJ9aG3aVz7glnvrgV*^#a_0TTt{(xSYFBkCl#lRAJ9|24rv%mF&P?HT zML03B{3jMod^QszwGiHB3F=(C0jzh}S8O{|f?A=Ktsjx4E&tYK8f_4CKPbMd6|?mt zQomInYi41f)ZF#H5GqMau4Qsbj6h#mqSfL3j}U3RyI4Krz7zjWcL_^_EGU$W=&LV9 zOK&eKp($e%4ZdV;xoTpeY9ji7%BN=6D?Y2d=P(Gbs&=fjW^#q%2(W@&bo<tl#CI#Klipz(lY&}?G)EK50tm7fxCygsA^!FWC9 z8j7n@S_21n?qy-h^HzMWAMax%FlQA3FJ#6oN4?G%hfB_YG16slxl9}}>1+9y;g9Yt z0N;<+3?Uw*OaKoqR)n_C`t7jv`YmfB)ZmcEV0$9}f>>7ZoJd5`I!rg?&kJ3wG*$f1 zjJ5oS+}#$L0uu0c7=W|;<4^E;WolvdDhUh3576s04FR?8=7)B=m*H#)S;HHYP0%N# z;`4z9iMDG#%JQ$vx%w|(Nba42BOa?~1Qdz_=aFr~3KGw3mmkK=S{SE1lKU%pBoDEk z!8?n=OQhChtxq}()~y7B#O;lMcYG;%BmT%z`Bwaq<@)DG`sV@t^RWI|p?|vNCwbdu zehlFGmp<|Yr~GW=C;o_Jf&$PE`AOc^%a8lic73BnmiNiqO8IebNbpMDDAzv~`lnL= z`1t{}C0B`p+TTmFZfoQ!dE0dUs+PnbX_4E>+ms!Uu2Pef&>Vf^NBp=Si|QLI^o=L_ zZ#*C+;+(q4dFob~eV$Rc#iWg43*VQnVI)si1T%2LamR0>VDh8XPYhCVTRh+A<}s5% zfowgq(}!G!L7#2*5^3Uu;28Gi`Fffv}B8bVaPwKs{)=O*h z^hkGhZJ3abgsQ1Fd%k1Y#T=#9LIf?whm!Pev3GmF^z$?1^NZy3ak4#PR>@KBT3Eof z@N5Rim(~AB0dTegP|ds0-24(Xxk-&@bUF0{Yn)x*JG&L>zOImk{aJj4T=(N^^nUPV zERp>L`Q{6YCWuRUGA2+2Q&#-RPEP$xpHy&cTedM|eqrnWt_S42zbX3%{WqWp=-Ge< zntDI}&5PZMS3rjeZ@Vce+3i(?Hex@h4j~Pz51jTU>*%QX^8^ zrE<}ak^NH81gY{<3#qag$39suuOwpvM$`S13J8>}H_m&m`{;{4XT^F=NE!O=dZeFz z@078T=@m6P`s=WN)XC0{)Z;X%M=~a3O#X429%t)f0*Ff9B||a|T_uUiYT^E&Z{Oc!z3o7TcEe5p$q<+$E@FG`eX5$PCo5C`XTSq#p=}nqLpxf%=69rJbxwDD4FL+xX<^GKV?qh z)bP;Gt{j4%`lY>az?<5HlGKV$BA+sbHK*B|-{|+B!jMkCFLjjn$A8WDLC})lNE>&- zGXdtda>EDG%1usl2C%nK1Acw}ek#`A9^s$+fp;nPPy+AZ3_S6LkdpX*;fb>*mP*y< zR^C*omIGY~8p^ro+zOF5Y_X&@=n7y-~X>5VFG&%jXI#Iu8)>dh-T4T}QkQ#uiO42_`OP)j3gR^F`k(pPMn=`4vy8 z6sK54sauCD5vkj`lN%}>VBhn6Uqy)54XSpGTLVnLGAF7PEKq5X5DQKyWU^Uu%|FvI z3|#s|4*UIyf_AYu$zH>&{M_k$YKuRJ3Z4**{M4Lz_&%k|wd{hYS6@S_z2{{6sI@^1 z=vmwK@LUDYW8?d1RERI}s0>j8tNSp_UGD~*K!$Q2$L3D*9jwL-n>rBhg7qn&Dr9p) z7_uZ8`re&xX!e;vm<~|>x^W$n7)C05VNf@wNIEq{YUf~ea?X`n1+-4lJmNo!W%^s( z9J-w=0Zf>4q7}&+pFhl}7nAVtVwLdlFe_G1!o#8R9d2xLzV*c?dwqlt+;l(ToqHw4 z_jIdz8yU25fwD`QnA*$yzk#~Mqtn2-I6*AwVG_n$5EZhf1$I3&{)Uo=8A(%V6M zRD&ebjHugFn^amKJF$(bJ2{_!K~RqO!g#N#YzY-)vl8U3Dnb>f_``+bdBjYWjsOq7 zGPxP|n?C6jXGAO8Ev$<|Wv!AA;c|sIx0@F~7o~qPv0*XFbOv>0Ge<^T59_pS2}sG) zqN`<9O2;d*LI2#z7%d@rgi2q&6qhcO`(~vu@};Ja%SJAz>q|d!c9XzC2$v@jVa$?5 zW1+L-Um_oCBdN67DNWBxwRo5y{*Cv(=v&kixvKH-Sg|L z>omOAom)jl)~2mzrv5mosDb2o$HiC;0%V7@E`k7 z$)_xfXv@CNYmG^1Ekf*h0$P4%t@#iRbBQ--)PF1ieNGqcg3q$6#UOB`Q0WJM&9rut zQ_q(%z(vMgXI1|@vNdQQDGOg-P@6w|BS?(+ppDX9K8+~GqWU5wQhrs-MoY{79+}{2 zh@agMU+CqKc9jctbUB}Prpcn`Nq1sX*v;1e*twy^M6ZbB2$*ZUu#5xbqMY{&8F=-u z_1bc~9urnlN}Lw2MIhB`VnJtS66~LEWtpYq{he!b!h=_rLjlg|RCpkd%RK+jUk-fU zC(joi`1!oO;47WmYvBXJziTh}>iM7V^E~u-;{Dfn($kmBXX#Yrnm(Zn){J3s+My@Y zNs_BX4MR>>NN3E)7Q~_{WuDhE>OT@nIa{c!;u?m_QKE=}R){b0PKH*n+mWiol3BFE zl)@{)_#`j(;Bi3pYmgx#OVI8nMRxmEe&jO{dD8wUrY=8|XZj;%Ido<2xZ)UUA z?7KkK*Y8fWdXAL{!Tku4`4d}|DAd%?0GT&eNP%6@@mOZwY*Ez8rl3rA9i!aIt_f!; zK8Q3jyI}cu-9o=)@2LnTJ7tZXoe(QT-imV{`b6{$7qXnd=)ckV?#c3{Ui{&pn>nSH zJ(GdjTI!V~8kJV;bMKs?MhUwhdCwG4r&P6t#YF6-B1^Jb$-hNb^$w_Lhn2X9zTDv4 z@&Lmz&J3G>Jsc6xxJ7n5f$vW6psNslhJ52fp^vPY2NZw#%(KY(uNx<*dHz@NbSs(X zD}aBYcwFuF-ZTL{`854W+Vxcc%bg$q6^{^mXXdgy)nIl}ujevxEO6?cqUz2$@>j`^ zrN&CXFWrUW6bKRbHCBK$e1Pum6fT#(o00F4pDrj>)Hi(fu?j21(;?|8dRIxL;!ZYd ze5A*(yGb=sf7Ew7&uFh-`7c_5I#;?zzb`I z7ISrum(9+upMJuCU03UqEDgw_>r9_SD$zK!Y=lh9%Z}28?$p^rp01@@9GzZ*GWA`! z4NfUvly<-kUjwd9}S#}Y!y1y0$p@Xr3b;=K7YEMi+ROi zecf@o7c+KyxQ;KB6IhyyrE_W!nH>~um0Eq9Fs^0;0ki6KwNrPy;QvQ}kCC|k07epo zXiF8yz}qe+h*bJ*sW=&(4p{M1GZjDKKouWQ+th>mZ$-*Z9i%)S|4{Y-0|KWX&GOWT z+1)#}Tvehm-^zQ9HP4VPf~2j_hafDEQP&-N=aBfhCHBM-$F7M4onPO1D#6HP_f~8s zPHd1o=dcAJ;_4fIWqrf7`7_76-|na2lU1J z$hVoaXs(32F302K!WXESEU+rl(yF{afFBSb9s3{=ivD4Vq$`VWvjmse@R@q=N*FR} zFXo<2x^BfJoWsWblW~3&AuMDzv|n{rwZr$sR7XvvYUf#vX;kZ(-CyVKdp=Q1Kn7M) z%$SgXO|Qu0akDgT`j(my@EX|M!1){+K1_vpyUEKAmT2HBs3J+s{%I@Hc&f^NcN3K+c1Q51^_~?(MSe~AKfI+A6j$a&4mDO1-7Ikl%8s=>sBi3HSo~R6 zfi0wtyMPpkFU;4q7~_13;R>}lhU659;%MIb_>}zEn$6S+%|cFIw`K34gy7k!mlO=* ze_;wKW|S+&x%|#p+0C~PXSZn*AD@vEWGSI5zlU3V{jK)(M#tg2f_#9&B2+frnK=xr zN=e@$&XY1`r!#P_{YgFjzJA4pQt`^1$l=nQU?QlR!ysa%yk2er@-MO-){zvVOk7l~ zVU9?{)LcZtJmTUX$y5hq-U1H#{&QY~pjq$B`!+cZKbj6u?a{iQOe_WO0@8oAX3sm|oTXu$p;zcne`N@~dJB`k7D|W-xcF5j7YNSze?}8GMIEIF7 zPhu*3r`zlk23iziVhiPMB3`zI9M%YbK*s?YuqrR-nxyyqMK1o-7*24MrHp>jlr+i^ zZql-G`4h6I6~&tfj=s&Uy%+~RrA<`R&7s;d3vB)JS)kGRncY7NR657jyR$&$foB0m zy;fZq<$4yvG*0M8g<^3hgXXg`lR*ooOa_bPCwnqza#l{wo(x)?QO~Q%;IqT@WYFS7 zP@AY8mBFFcKmF^A7RzRn@KczFiftL9m&|nmFUjHP6QA??Z%>6n=%+?+P~;H;@RaBn zfZVQdR&(1_U4<0yJoToiU%P)l&iQnwD7{cvNoa2TC~@&3NZuitH~mgjy?GHN!MxDx z{N!{I2<6qszv9(Kr%t~LaP{gn?yDC%ZC~+flQUSqTI{|$#(nin$K3y`rf3}C*14Gn zOL_29(B7?Y)QT6_jyWK~`NUVIzHO9%^x8#P$$_v5t z3rsIs!pnPU@s*{0ALFYNEcN(29szz)sZmb6jhCET*cezXrP3Qs&MCh+l`jmVGc-!+ z3}!Mht^LU%qRJ#;1mXqhK}&-6oKmuc`&5e1^mtbJ51VAESFXqKePvOP4BCSK`WeKc zRiv1@zs`7O#tS7zo_-%q>UcS1)DZz^7}x01QWO9M9-;+Ttv5BaBn^PLmQm8z)5>&xK>uPYv-rec}tbDa;xCK z!g=#h#3YsFNbtkEqj*=}dO*KjV65De%JYv``x;fkX#a<6&5_Q@%@aKScC5rD&B%(J z9x-2Z&U%C~%uu!R)~0(?v;tGO?_ep+T`GOPpGw>R3TPpR zE7Rm4vOuj`qHb_DG4vpZIw6P0=B3HOzf>90y7aJtQMdeQ1PPDShL;QFWko8>_3MRx zW98?HApAR@&k3`&o~DR&KH!QhWx@Wl$4=)1PU)43D)4rX&DTQV;n8a1kqzT!*4PMM zt;dGKnv4yU2nQO7#lfuc$KXRKcSn+C=P{DPzsN4&yCsAk`ES7)gRk1+-Bp}^B`v{ndEPuIEz${Ju~uI`r*Sx82|ss z`xfx1s%!trJA}Xq2pFG49VHlrkf0tQ+WlqMjQ&>j+AM_n;j?m4pM=sZarso~gVO+ygcv@jB9Jl>$) zev8#7hj-!=^N>I>h{MjXwEXY*tCIqIz?Q7Hc=T-Hmbtni*o^1ur@u4u+t8HuBDa(n|yFLgK7_{xnCo?{jq&_h55*a&gp9XT*j7YC?VLqALJ z(8K|pG?a^T2W@?*b^~~?*Ma?~&PQ4gCi_~P23?!u?pv2Eharqn@gt6d)b(q5CPzIG z1pZ99GzoxfG=q`?RI^YKMimr!`t}b2%c*>%X*tk|f}|<1`;;3$PnIpa=J!$OVrS=B zPw^2ZBWZ%JSDZsnO|^IkS%m+VB#A6raW{WYUQBTZcz(+$fnd#AKy0x(qo&vo357D zZ-Q>9ZyU6Osh$Dwv*8B#y1H%vgE=9cSh(3`S&}0yV?HMyD99u@I6wH(eJ<7_yu!Bp zVCyk}?rY3_<1^HRBiK556b`2uG+2cZlMk~$fK(vd7JW8@N~ zFv1kr?I=i>cSA~^jU5XJgrW0Jb;P^mj;7K|mZq6R;VvD8vfzickX?brzm4RB5y^ug zAChEe0G;`@8ag)&5$MbjNK0FgW=r`nl;Yde(&>G7ep2m`B?Iy4<)VT+T+2g&bXyTdWx4LR=2y0aZ&XxGIVqm}UA{tV%VF{*D1 zrrcJUC%HGH6%ocu6JddApqrh>`~xG~34t;GlZ(b${GK%YL31A1qN^r63cAS?aBO3T zW&hb4J&|7R19`Qdx^=LS6jQN%CzIA8=$YWA`iD0imTqbVm){@h$bBlJ>mqKWR3+Wp z@Rjsg!(nMgBc7#)>b<2SJU_rgX*d*Y_}&%UepYUx;3R3E7^TkCK7pZ?!keOv#ag9BPBQM8yYTHGS#qb2Q(r$Y2y%12kwZOHJ5H*i2qnE3wY;S^0d>>n#uJkqIKP138G z=-+Tv9VGgfr=*9Q1B1LNd;Ac7QlwXr#c)^3M#yVnOn{WoF0plL>H;Xo4F^m5Hp=`c zKrFxze1W#rOY2j_0u@Vj+~w3meFOCXMArwfEq^GAk>KiU=64tRfwR;Z8a$9e??}=_ zYAY&*_EQf~;X9rxt(XHJ$qk002H#fVPnA9yJGf%qQzjzbghYrKm15Z`|UotXw9I@$+>B?Sh=q>A(b54Aq* zK@fL-BHD+GqMu062P<9$z9!b;6Jw!0G2n~+(eZV=0bjB12z()QhoL+510(oK(49B& zDpd|TzBnEcd_`3xaRVao#eF@3tr^kg(G~bHiq3O5zDxEj0+(~yDz4U@>qcmL9x8y& zH!6U%3I;9EUMNiv+y&FeO76(2E`#*VMNIXY)mvinT!^)ur+xo#>b?P@dv6NtYmI#q z`nafpstT+&(sayzX86%3zWzf}EcRAxJ39YqWhLa1z-|Sx{5wH_RY8EM zb!WaX!CHamA-%=&8(jkO*%y>=R}SIvoE4a)ZC`E)4~p^NMh#KO~BJ! zo`*tj*da8404KWy#G;S-i9ilbe&CB{c)>faM?W4t3BX9>wChf_lZ z;R8~XdP_#Ruk2Kw=E*^os_)I7C!(yU z&U7PiIR!*gbXG&~+(J*vx};4-IxoT@BQJxILN{P*s=bX3oqAr{yI`F1z!;`@22@p# zbzI}g^8Pq^l2pUQpvDS#CDoH%J@#_PHF$bf*QZ(o*L+VjaE(-Rgkv574)$4>6;Odz zxb`~_^zV#BEcCw=_uhw%2e)ZPh7h#Z8A!_yP*n)U!}fJE1+5V3PtYT)(0_vW!z1y4 zr08#un9Jc=ghlh!3W}L6>+CUq@7VI`UVqA!lZF;TR|!In6$Bbi{ceU>9m+RIk1B}V zAoaici)GVSC)=Rdf3L;KJF2*ccr7N+08R()QkVhUKk_$;TWv~c1zp!u+<7_K+jrI` zd9K4&2EANqcMIlB0f{FEj0QuqWCkXI)k|9tot@1Qi4ef)JDI>QL5Y@NeqbJG@p?P& zXqOdWxKg0|EDmeE&ryHfPxL;6`B688f;dSU$WHepd}`-?P8@x~iOoCKB-Q*LBaMW? zcPJdIjeoisBh-ka!;(x7IQa&6(bH0f$*b4*;UmPMq(0ca)agG1Wyu1p1ypxn65v&J zvZfjK-06fM1le+#HV4LP^q=DoUG5+X32eGAnqV0w&Zlg)uhZWbD8X7qOf)dW-|E_6 z94tUS)A}YJ0(SRTkvC&wNc>?jf$7JYfu4sU8Ig656u&1_enDsHgiNW1Vn2CLtK+rb z|4#d-!G|uT=7yUZ4`lXjR@!~XQ#@B8b{EetcBm#C$fF_5gZJFSnCBiHKKcon-azVg za=}*lo<=8DS?av37jTHOL*4%|(-wi1flg*pCe0fy`{q7H-qGs3vx(>Q$ZsW#H3bj3 zCBjD1DllTR5bKX7#IQ?+REjVU0%rPQ87fL;_F1{gmW#tk@zXCg6Owt^Ss*YeeAHBS z7WA6R1V~QFZt&drwya#u9Vt&}Ce_et>enE$Migw@!_44|w6wtf2TkOE0XtZtf^?^) zZ7!rR(FCRh)Y($~TN=>RlPa71)A(I>#wQXpliqPY6Z9M*G!kTLWaQGhInqPa{X#rI z9azq4L_Y(cF7zI|5TWz~gWm)1KrohP9SesRd5;Yfr91S}`&oLY_t+((^fkTo7M8la z$Hs}$Kk21*mX7fryV`T93;3iD2W18xHkl)@OUtjtYZtR-^~e0{ zYp^!%&q~?oYrhaHFEH4*oOo?jNA@`u4i3h0_!Cd{p5I*=8qvLD8L_GMO{@}Yz zJfIHA*FH`>sL&sL$_EsWk!T0${D|Y>MnJ0&3^eojZK94@ud|MIelF@PT>wIWMb;|9 z2TAKyWvkWu_wkLvbgOrVSA=t0(BJ#fP;X0vv>r;o)=&kgMhBkTya&eHysdZ#{373x zye<3nck-n5@8A`0OPlwT@hJ0d_p;mahZK_$(EAPbDqLd83zL~qTCr7H|CV|&u7&9x zhyJj%Y&w-Kkn&`4bcsPUTJYWuN+nFc4eK^Sk%a!akV06Vl;5Zw9jO;Jk2bAM@%&gj z@)*3Kw%inQug&9O_+aTF+}yp^DsHlPbF=i){yy{gOyP@DC>ZC9141iTI2K%K9u(ZA zc_6%ESWEs+U~!DYhZHUFoE#7ZxI8XRXe0xJ$D%P}{VeN_NgdvwF`=IR?Li_Sg zO#?)R-(NThlEdKV_#>5JD7LF=Iu9~ z-AA}0kh8eq7hDxHz%+tXR2D;xfbDsvpx;UW; z#vc07&H0ax!t#Lmq(;n`JHdE#6aE=#UE2nKU0vPLF9YK)Z49R=t&PE~rhG^`7#bGu>8>+lE*+Q2DCVr-=yf&4G&I(L?ox$Fq3`-4V`@XqaX+*{W1lHfz z_<6c=%y(eCFMQSltp8?P2pp)W$h-2;*@1FV6L$w$H5{!9G^Q(ueV>i@9T!!bSanjQ zY7?tYid6jvs~(S5Z9`Sx$K!p+2nFya4d`PRF3@ek~o zcib7mt#+fjkBe`83M?%yh^X5bIRX2INvP?nnoXB$FKApk&*{PRj4SkHuZmu~p_qVu z!jhTlm&t-_y;aDc8Y??f-KQ5)TSz4`sC!?Sq|LiflTV<6BXxoWBN&g2vbt=Vdf?19 z$rO4;7{IjJ0u@Q>`9au1f))O)Z3CeL7G`-hD!2K^G+K_%_UNoeyiqL{f)j>wWTy~f z-*QY^F1*4(lB_V}&6O>mOErwMC;5c11>%H_V4M6JQH6g?9R;m`&rtwDv{72731r)3 zUyCGLS{DqJ8TGZ9d}6^ys1O(Q2fuhJac$WuOB32<1m_ZJCiyC1Lo))_al<0xz*i=1 zQy-fGT{&rHJ-X!#%o*nJeYPK_!0n(7v=#u-Qt!t*uq6nkkTHaHsf$6s;H3y61jTXA zT&!*wlkQcASE8-J^rWbpB5>ZWDe2*`TaHV(SzaepldbBb<;5m)LT{*tp{{rOi(?82 zWQG97h$0Yv8*M1C?dQzZ}P#<<{mQLCbz#oVrF}Qg+s5q5v zo}A)vlg(^m9t?~L3q=o!00)lcfsy>?!o4GgNMp4a57L2314r@I8d$%D-{*z zO_P+PT8rnZpM`nMqgf=4UeER@#j&}+L0jTEmy+C>wtIGtL#IqBJN>RadrjD#cJv)w z>4QL+F{iDXI$A?lbY^Q8;yk1vYA)KDAD5L;JiY;Aeg>vN%0JXbz3|o1LuS_iNz5m zjq&8kC=Uyvhr%y4$Y-d}92fXAd@ItHktrAaR~~g^4kYzPt^!NL+`BpGICa{@wF{hk z$DIvI=O}2DEzM#ZXu zIYyM|_PV;ZJ8IXcG!ovVCQN9{y9j_oD?0s@JZi_==phO0#HK~)pOp?TFsMVr`1T>> zp+SAEQF3Op>{OdWnT7-%Oe|hlRpy7A!1aK2wmF~FE3XWXD_xXym{#W%${h$3p6hr8 ztTX>D#kV21XsSKtMZo=oXGTjPcjt&m0l|l`EaQq1asg=FZ|3-a!pWh?Xr2ka*=oB0snorA}o& zM(*C+YM>k&*2;m{ww#u)=b0T`gv^9aUi3TRZjfFz!9Q+J)g=FebCQD=RCXv^90hoc zgd59#gnL)u-X!^@$N;(!-ObmUf&FoQno~Izx&R6cOfq?QQ0CfEwNg-t)ZtD`J626Q zJSZ{2cdBpScPQ-iFUg%67{QZn=A?&X2zl+#ti^C;3Cj{ojo)Tfm0h%dgDD@rjb#P?Vf_!5TSQ#2Bz8@HAD&)2tZ+Pvw5|NF$y`_JXIM zb0%nbdUZT@bx0L&tLMhrB8EmLGumOL(?24%ZaJg$<-8=f>Z0#9n9RUZLAwj~3BwGt z%Ha!ZvkFKyPOJl+@Wk{;@e|9Td@1{OWPr_@p9V|o&;^Ke8l6~}N?K{($$`{TOf!&Z zRq!tu@Wnqm6n3Q?;hd8F_X2nOg&XTu0n0VAG6KApT5@A#UX7j{7_=C}WMW@ONAU#( zluPG;f^xvFaX>!=LqZMRPp=kp3Q6UFt}ky8H>f^tbXB?k!O;6A5cW0Jy8_LVetKRFxRT?cpi97{CrgspReq;{w}od>$oHOy*VH7 z{yzQQ*Rj;lEWhW4Jz}I(+(YK^bqtNxH!;3>$H?e?<<3se-;1wr+Shac8q`kpVGi6A zK1@4$Zf_Ux5eF|EgwY=53l2ftKQSJe-{Cnkqb7dt-QB4_FnNd@PXvKS``30?-}E}4 zzXn6U#O<3*?C*!qboadS3w|#)ekRxs#m29?vG7CQ$Hrs7=)V*l9}_erMtCbby>Dvo zG(TZy)+7F5Z)5zP38qqU^BDoBjPu9zj_7~4^YdxUm+Fo+-99&Ae)R~?Klq$6;k&`_ ze!>%(@70Z!Vm`<4SqV#7BYt;@{>0`x?e2P7U#5?GhR^$TCwz2TUnY!Kbq99LZs6Y~ z)>jN(6X5L;AJh2!dFb{M<70oP^)^S)hZugmV3gvh_TT$eJUo@1zL(RfJ+J8B(&+rp`;7I6M(@3cjP3avy^+pF z>9z4W=ph)i>WksV>uqZE`z8qM#`WSA`$G&~#*&JFB6><2ibrxIe^0kIzxpxL%N@JZ`+6?nKYv z@DK;zI&ZJ+xdKatbQl_qI*5|-`iyMw!y@_E}Xp4nm;DpJ4IX zi}%=k!6c~;6BV59c@8{WH8GGnK!ip`VDu`xB~_W1UKWtUp={igDarG*%b+K=TXrvb zJ36IdX`h9v(8XEMB;RHN(~)Q~e0P<}*dW^5uD910&23Me|4O8}eQ1sg0qb;r-+-;! z*Pb^&wrXNaB)&h--~-+E=Mg+S#r|A}stNj2e)9bR^7kWaPyyzDJANE+_jOnYe=9vNxwv`Ft$}=t$6%ARn-H2{CIeZ z_?e8V3Gg!>#V0x5@$jbi1n;4lrws24sG0!YXHk4w@ZO6Cx}ASFojSZ{Cx%x#U3lNV zs|R=+@$eMq!!lG&fZqiuJ}vxS-4ndSPaWRR?@S2qhbTTRc%MN7-Oh(c@bDDzdtG99 z%TE{H{yo9l@%>YV_a#(KFdv>r@oC|AJ{ss2zu!A`crQ#0@0lkLZ=iZ1rDxFTyy}h* z(m|Yas~ay83|Gd2tPNt5|Mk|nUFdvdhl{6&Pkpb4{`&Fo6z9`qR825G<57HC}k{fPMo5a|oBqBg*{&%{#>tf&P4HPjo$~i^Z;)Q9-bn+52I=Vc$cF1wBVi8 z6TG8N9p1w?CxrI^icbsPKcazd*T*mL@D%ZTb7FX>o-VvYdV)9U)ZyKDQ$qaKqxiJ& zy95n%i{BsM;VI(x(!}r%JzaP|o6!TjyYcW8;r%J9CRlIFQG8nXy{0F4OHUo%V>c#* z_aKT-5?<&>JM#0ObI~2zc|Y86@9W5OUtQhtG$^?H%IXd;vT?gdRCn};a@Gwt%e0@H zb=G|7Yeu3L^)+|!7hAQ7`?+ze*7>Uzcq_QCqh1F}H&>Z5(2n~FPUYrI7+Ttp!D-X|3KWYZG#bN(K#9)wD!9tC}mXKdG(-0pp zb5*g3d-2gM1e=Db6@rb`>}Er-X|f{Lm7G+CtI4`U6YzSLOov70qLLm(5G+2unZ;IF zSqLM#m(5<*)&q4S(w36qymJnMXNfp?3)P!S`E)D8W?4npEI39W%nmLYY)8R&>9HDk z)Z8Y3KwLv%-{zzjFRkP&_^b}k!WEUP80h)D$hSn~E(wvlw77*@>@Hf*MnY@BC5xf8 z-e7308qt2YQ5Hu=`|Cu1TiUB>&-)Gp(F$Royk&vwIjyM}if@3{ODdR!_!`r#Ai4Wv0rS|u1GxfpSO zL3|y`Ay`$@Kn>Py@Sf=45t>wgeie;cN5hPDJ9pg}zu_ zsXqILDx~lGge@ZSeuD#6wV<{o>dsF(!mD7+W`>1B*!D6sML6g~tQ8u(mk9q6><@XS z;`b2vp!8OAzVy&Eo?6zY-d=@0agbEszsl0+&ZY^zR^~a#+z=%W_(M3PiOt?|`6f5A z!x@TX>DAPHIb~mPGQQ?Wd0$ktq-%+$(W+F#D4O1-*qbM6d8gflFfWHiAE^HxcYj=0 zAmH$lG^sv01k+!Js(z7Y%T<=G?(`~uc~&SxZiXi@GH;Y;CfU48(2|`_YoPHk#y`Q9 zGOBF;NodN^3>_`DfTl^Au(Xxn7>9P?D39*n8A`*C=T-qLq5-v>7NAmnc~(_v>g}HF zKPA<{dpJ}C%WpHoOGdD{_r;}v#A*2mJ{Oy%30v#3FBRh?Mhxy6<~)&39Cnb>vYRlV z2oq8BKdA8^j?0-u;!Mt%xuYC#o1x>kp5RNwE^{eM+v)kEN4u4l{|0@60jqk`Af)cV z+|?qkB8cD9xeR!vFC*XPN)d7CHijQXhz@+@SB~&z4wFmF0!FQdh4r-+B5L)Sdhln= zGe)hZ=Rjf9h4vEz(0VorQlrpBls`RfwAjxw?&WlDl2w8--}>LzK;=Fv{h~lrpgy>MRBH_ zG6=uh)nD9x1YQ@-sO8x$`_B&{R?k_Q*90un!9QDR9E*PHF;C*c_ro7m#P5F^IA&1C zStJY~Njt9BNm7mAWgLvbd5m!SSD07vU5%p5QL`;@f)HNVATSk-f>DBIGzy23X)MVn z@tMJ^JTiT^lIg1y4wbEH_CrS*?0P5MVfv`|6&*sf!cc}>bU~| zf9(;ehCzA&DWMHJ10Li$|2ESlO*{%;v&?w|5jZp*&>WDP?O{R?vdYQ_vTu7_x`chQ zRE~}ynl3vwc|2!;{eUx&>Y9APhFte#3<zAIh?Ol?4ufrH!$&tt(TaeLV-p$PD@FVf}Zv2gjrzf-?+NSD@`!v?Ww1KC&9wyFDupaIm z@qe`*vitwL*2CCw3D-l)B`3KalFv%C9=>?sKXg6(HT$&J!$Q%7SPyB#_4RP;WwG_J zE~lIIa3>s6R;jm%zc=EqVLd>;Mut2smquXLe_?YFS_qIgu{ro>K#?*h4?Es_&d8#G zrr=#B!1lX_kusUpg~J#H0r6U08S1&C;T?j~d~RZw=urV4U-16&oU_-!u`^uo1Eta84vlA()ol3b3Z+PVW zbG)p_^Z~=Nnf-`$0B;=;0!bv^VhyHqS z^50>t3U4Rdc=n}q`P&pc8*t1k1EGFg$Mw9yY%Wj4EC=eAt2yfqg+oZL@Qz#n$IVTt z@b+;PG!`TLbBj7nTfQray(U{SWCQ#1CTj}f0htSvgc`NVZ?DG=jop2Et9uB0;7`^% z;GY2a?ak>SgqJ}vzV(`#3g8(ulO=`N=tRKGZ1u@k4k3=gq|Ak(boG&6ibO}Qy=wUv zlr&N69|y(78ubd6a3HbyAU4Hx^a%so^M+HVp4q3Enc1Uri0JtypXdRj=o-mA$Jq~F z>47JNE)7Aztq1}R5SzixK z`43rNhcEm$udnaDctY#zrAtn9eXV=0`}OtD3&r;MFI!)~*^qF3UG-9IeT{lNvc3+e z`uh5bw$Rq7Z?WX0*H?X7*Y)+Qi{sYU7g&NluCK={;?`Fu`Q|xu2?ez3FSe4ZHrrKQ z#5r%0zPf7Hfucjose_cWAtJL)Ztk85bo^c&B4?LSz+qqB@l`5lJM+_6jv54$E7fnRfWp2Ko(mO)@zPkfMO` zFQs~@qe@e=JcwD=nCyT(x#tVe$T??lQ2H_%3@_fPep00V`Y9UNTKx&7sRIzmEAIQ5K_<`b zR6jXVe@U^sK0HpvHywc_X}=^*GhN& z|9P+Vvx7eT<}_n+ypep%gJ z<~c#7hx$M4rT%QxpOUCPT;{oWMs%%zMg06lXijeG9TBcA_Ghl9xI3!0}@-#tuJ-_PoA-7Bh_S$$~qv#+5#LXErd z%1(99GRT8}7K;jsrKupw3~}g0CL<7Kqd<}$T%px@(Y!dcKroQpcQ#Oe^R^P+%V0>G$@^exr$Y)a13r8$UZ zRj^&EPk~muuLtRuH-Y>gO!9mQO(`k|Ls$>crt)$>E+bgj4)#G-ZmW|6N_!vd1Q9La zLZpIT4eYiPJmimkawvDJvVGncQ;CGfv42TX{(HxH$Gh;D`?s5mFHd!>4| z6L76oukFw1gl~&$k2J~@TmXU-foGZ#oYBcHu z`$p)15DhxtT>@=4Zn%ZeS>mCK4dv`f2I!{7pnDTO^*VGvfc9R)+dB2CY>c2*HkTIPEfeZqwr$zkDf=;wa zB%BCug?<{VReL8L?~w03{-nnD<`=(L<-aYr3`R(ZahG}qV%%}`re2N>i|@Uyzc&kS z&A?kotvUGZf#R(h>Tte=e&(X}8H7OIn*`Nxz%@gC>MU)?%T*u66+0K9m}i1yZNNKQ z)nBga(DATU{o^k>!ogi|KaJqw4;K*Kt{TqBO3u>zc{Kw?t9Vg?i|2SD<6<>0thgxQ zMM-qEo!IQ2cb|r7n%ba^g=+F(sNjHe#JLk|j%6dt46|ndVbkXJ&*9+;d0|y-h4O6^ z-j>$eABivhd}7ZFcZ0e*3zI)EeIdZup#Bw8gCj4Xz&u8~YtaIpqlXwH1+0V)MUH?1 zD;6KbnQ%F1KfVOoH#$SK>3-@}m!4oFuH8lhGyKqXi57%3r%1%tP8R+^}K=8EsH2lt230U4f1H8p*gqgs+0XqQR0H;Ja z9lz(N!Q1ed*k01cBR5WOD|>AlVm7(kt(Hzz2~{lT#UR4|%a z@1>W-`JUxn&y+G~K?D6p3wT@N;1&F)j$T#cHw_>7+^XS1($M=3oX?H8aH8$;XgG9r z6t{vG6YV9!?JxEA1jmj3qrLe4|4sD&_h_$c|8@Su0NxZdS5`M$pT5DdT636XxoX~d z+;{8^&^Ln8ZdDsT66wvzwBC={h5BsILIcY51}1UcsrJLEXE2O-6(E?6_v&Odb377z zVixC$x%F7VkaimUM|8aFh z|8WK>S4{tLw1_9%C#nCih;Mf%CH18L=v1?l{N9WHqt9vTKgMccpR)d=*ZRHaKYFd- zi~b|7ej@!vFZz#CWB(J???wO7YyDpIAHCM^MgP%j{a*ARCB5~(7yU<%^-nl&LnfH z>pwK{qqF{_lsuBI|A5h9y#8Z|sJ@?D$y>JxQKGZ{1Jz^tkNbPke+)T&{Rf&jG5rSs z`&a2d26GqaP5&X#a}xTG3$@K&qpv;dKfvE{_zn6GlyuU6bSb%5uVv7Gprm{K$C;hs z=~e$Rrg#0v1@WVG^7@Z)C#wGdFbVV@DDA5MKw(1t2RHi@(|_D8mO`)kk1Kl?qoDuz zuFw?Ke;hCDr2jC&Q+Q(f4{eF}s{a6BpbG7RW&Cm=XSdLQ>;bnJ(SPLis{i;l2K$TX zN4)+6jds<4TrbeptN!B(19Vek(2b5k_k*DZ{Rh0X`t^Pk^Tek2>r*3g!+$Uol&29Zbbi~ zzZa+fND^;B|G~H7^dC)8{YPe0|A8wiH4^AQmKyXQb)EGeIYjsWiT>ku4bw6GM`{B7 zN3mh{3?OXU+&=O_Lj4EcPN4rN>UrTp|IvZTAJupq4M|n1zYxm8X6P$%3JAmM8Mz2Q zj^N-nJ&QYI9A4TKjD_$M?L$Cl>JFl&|Rh^Da5)hf%(gW znxm_@s(?u&jQCktDK2O6at_{Hi03bxz4%U3jqu_mlH7~AO^IgTM;}(bf{vNW{10Tp zHEiT97(ry~U_X&*HOZZ&y*OqutcCnfXt2X0!;(pK0YTft*TG}pyfNo%xZH}S)Q15q zG8oWt1==U7d^oH$c@cgqfqs5;RCTA060?A+{7h~9nW!)}__xxdVzwE|Vz+sgP1%P8 z0`L}7vo95MEA7Dzc7U3pym54o@8hJ#kCT;6$~Iq1vN>6@Z^QL&-?mJ1CK8S*pZj*? zct1&%%071~3vi+;j&xnhct%dxEC|i8{)5pPm>sN$5FxAaO1La~5 zYMT-`7fD?=iSy^J>c9?+X&}2;_D`KvrfjkK_NU@hn5M4&Lj06yKNV&ELZC9)C-l7%09_AbgYhn`De}%$yPaI>0wpoJb29hi#kEhFJQ-Bd?(h zyX-6kl5iJbR(!<6T_hd}qjFMmky;j5HVfm8o{jw$mdrBUR;K2v58|kP zRTP838z-p&Ut0bY&DZ`NkEG5U!_wkG5blGRh^^|=1)xjb#f+Lj*OW(a z>rgPQ5jjEgh`e6&h;+uP{0Q#|&qj+q4OE*((x!sYQ1L=G+jPcWNb!I|@`cNtfl3%u zx2hk~WXeBtrL8FyM$zHT%#33#YJq!XVR4Ic2uqX8bM#-$7{CoCjJK_NylLAnE%4Tb z3!2jzmBZ3H_~ZGf#|7ZVp{ z=mtU#AYtyzHB!xUoNWQP3n94|d}f=x<8n>XPaa`uc+)CwrZs-t0Q79L7r7d09^fNi zD9Jt8SZ!=}u2g#qAJx9cETFLl$7V_^Ca?wAO(dC?`~ipztrft`!vc?Wpm8|IYAW_H z`@yQxOe8(?HQ-=-I`YJA^!x+!^&k!9cQboO*1UT#{|b}JO7Ai|mktP*nMZTNj$D_- z`4}388&8_O_EUsz2=rSttsL3wQZa>a9L8=Nr>P@>!Do4}Ky^muA+$ld8R zlT^c$Iq-lEOEv3o73;$Be0nUDF3p0Q0Up3&_chtFa~{qznS|T^nz5y-W~TBDoq;GO z43!eN78Kj{ylP=0yYMECFcvy?idJ<7>_mb%QKb|x3Z&#XJXPhu4Is5mojg_Nw~O>X z4I;ydwEX#O&Vilk^Y0Xyu+PXMtr&fF#iEjG@8)nR66l^(Qz5P+-pNwUrP@7xou!|U zn}R!P@ErWIzO_s_1d*UjckUIdGZ}q1tj@27iMGWQgvatA4#}W0P^QtOQP$ubvWzJE zLSWBI+KX*C^8J(cvp&&@gA}{?u;qiLLv6_KhB;HL%^94!P;(PaIIt_p`X^9x^$$aW@r{GQGGqE zP=aT3V1&zkRhgwNp}RfNJTZdi%VS+jJflQ2^tJB^#k1M>*`%7IK~n^9izHi9I<|x+ zP!aJ!pjlcEmf!Yr1ke4&64I8}(N1`NOS{*W*H#_RO*)<*6?h)UiE`Nq^`L9q0e#au zDAkq$XSVR``kW;+Zt%8PXeaG}&P9(P2YnIO06Ty1PqdnhMLJlQ6kNlS$nfm{*9^~o zcW=WpiNiAqn@b6DePN8Gnwx=mN8onA;#nzMK9FjzMuFPlhc^VWjw+_HneJ?FN2w+y zHl-BG;q9TlY~`hsLwuqxMhKDaFW=inCix~}d@OFWb1}Blemh(dO2f$?ZVC;-rd1-X zN6@YY;ngMCw_@`uvDGsg#A%J?N5-*q#m2I%ZfPbq`{rON%8obIVf+2S)3+&QRAj0n zO{G+G791Z0vL@xxg&hlWo)#ZbKCqT7 z$b?yqHYG+HXa*D%wu;i+p2C$NKEoIhs-)z$Oj=TDJCqSKJvO2*&s2xs(`9qg@V^UW zO~*ey(RKV!B>s!K0~NeFcU1J~B`vthE}fjD16l|M1egPGBL-l4nkOA-DG1$xVYpVR z-^iB7vt@k@pz{$(;1FcuIn_379mv)2zdMTmMt){$79zX&$6$Cg+)q#OkltUe<9#dg zZAj~xOGQGbqX_~5rMV{@+eEaSU3W)jQ42Q}GE@FBIuU9Wgy>0>f#|sV z>U%ExiL}7b6bK5~73GC-(>(#`wh|APOZV7L&_EY#3(mH5j8wZ^+qJa|u>)Z*8fAh2 zQUkpp82ROZ8=MUSOEAIpC?qw8V9;uCj}>udkP)_BcmhYb_Ym4u|GA^cWP>xY;*#i; zcGVs#CUq4-_2xFb5_3)yQD&stMc7aTJrHd9J?D~#)1)f+AN0N-jYW0eH<^pc_+DKe zw;gSY4YN%f=E9R3=Dyat1sLbx)$yYo9D#fFa)i%Wr4Ga2h;jzMiS#81Txkdn13jlz zFj{GA`$ZHc83u*PG%DG&kSa1&Coye>(80y@AuwN7zkE2V5V7{Ew9phH&*}=19^17) zbTWF7X6Qk3CJ8;r7xsuA#HD--9_|8d*A+v%>g+g)s~WcviC@!)Ow;rsE`7lWg~u&; zOArce?SAdapmw7mbPiUOcwsDG&>nu}8OVp1y8@8hx#R4lMYF9rqi~_a*PKj2u285$ z@`@XjHi+K&_-`&L&tzE3R<#WgBg9G*>Y9&nr>_|eI*$h3y|K9}QWR>RZuZ>3CT_zA zaqbLTTy@|d#OcP^*z2p%q7G??J6Dv89xRNNAN3#_XsbE|%?OW{ydrCfTp!s?oi$*DIk5w7mSlY(T?1>A$%3Lks(Z=w82ROls14$s`(A4d;p;r z;T(Zc3J>Lvds7q^2pBleQKKB}*Y>`g|d6!ky?Yq_?m6)SXj%#FK4n%7EzEES4X8Bh{vI zYKq-ZsyWEvj4D#3nilO|lQbD(j}kqt3N+2Y5lmZf1QGtl$o7d?cV(q{al7e@8aoz= zb(iAw4ONvgc8m#ZxtH%3?kgAF;j0iMR?= z_aykhc3p^wu-+%l2ewDF5edbedpI@j5fj#4dqi8l*dnPc5-S$dM?7RVir5UuGFT^_bZ6#&9f7fC=v0d420_mTD)1<+Fu%+Ws7w zx?q%`ASyj^?oLeIGNnW46a477U zmtaK$5z^uC-_~WuI*A@9C}tT(!7SCJAx1>W9hp+?SV0Xno!l^uGC~Hzan~NHCP}*& zsQy|<^;bHo|BTw6ZZMqyHccTH>0E@+bmG4g)0%P&2J}HCf&u^15>H=ZLsYH}(TU4h z`Va{fUKYizhM<>PAOFzk2+fJ=@1mqAz9T|PJslN6*OAgx1T$kQnww)PnyWaoPhOiL zCR9{A^PPJph{TOC?F=N;sCEXL0U`IEoN@-rfuS+Q%r{c)GeR+wF$cRcN!GJ4-n18e zT6~0)=Kou*%-7V)Wc(YoGG9?ElL4)aKzb2UA&{^}$Z8M!LQe}erV2Y%YNV^dG+Ae; zR4ZcLQ~Ah?2uX57>=Jtd-3&2h-dscJMykCPG)U`#cD@#qcK#cOc@aX=JI5lSorn~_ zc1#=**%T!rQq6XfH;vZAnqS;#0coY5JdL}AL1}|4_#Qhn5~PY#T!=Es0zRP-!j>|K zTS|04`BxCDOFL~RWU+-#twihwsYMN;3~V>tY7hxmN9*FJ1X^qUf|tcs0CDC5p_=*B zlg5+GN(=)q07(#rKhV*-j z8KID<-b_V>Q9Ywh&Y+5;jDK|P+Ymp4 z_q4x(nlPfJJv;Jz7oTg-Qam|Su(|?OU_rL4RquzxihaSw$QoyQ6{qAdZ^5qMNmY)A z247`DfhXfNn75ch8Atb>6ZRd*f+oUjFZz;(l6hq%_lPOEUA+$=@L0J+IjQA^`r&dtta) z>?Q0!d_w3cZja$k1;Bbg`?zyOxxmk^Sb2tL#L;F1WC(jM5gpU}!}e}Q)1Bc84F~A8 zcD%0~r+C!mc^_Kl?AZ^KORTbVv~?Zg!@v4(b;~*apS%b`-*3 z2KGg;Y8mRZ?4OqjI~bu0;S`GR%2KK3F?`!tdOWox^q{do^tk3AXoOUc1uY`ie}p^H zWthEr(ildp+Lo-Sdlj9VRkSQPZ z2TpN*jM)?X2^dcN>azwi?qU`ceMtg_fE4)ef~$K6?UHucYrb^f0DGjcd%Uzh3zkUk zF*4%$xCa>fFgClyGYao`VDlK89b+>eJlFeU*d8^4u7_UMMx=klsw)H?{Y>cSQ_Ut$ zr@2=+U|S={Y-@DNKOfrprbra{1#VK%8`o1)<7y?S1at1?4w&&U*0UZ!UQ~4{)^?947Un_`yleUGq5&Pdf8?!^SX{Nr8YFKE{K9`3QI6;zX zcHqLMH0lPruW?3;$n3sGSm`2)#B8&yKJiIgn0C4#o-ozL&Lb^^UW z{Rd2TjrO|vFsy~WE`Kz8-KMC$Zc{D_fsY-+W>>S)6)&O@kho6vx>`fKzmut40C=?5 zMHv9|?M(77m_zH_3SvOB&W)Bd+h&RPqfgW?-Y(Saqj6T_mvsy2t`_n+jP5I~e-~!E z9I!iWslEqGa-hN6Lz1O9ODagL($v3?_$pijGj^fo1@(hf?vb+6+$5>yr{cx3Qmbat zc`MD9jAt16>N`Ku&M;ul2}EdC-w<$d6b;tkRa7^Li0HO(PAE;>Mr?EyXQ|u`&CkO5 zZRE&Q)4W9N8_Fylp35UGq_l2;T>vK0A{haan)=#ueEZMz+j5j^2VJyFs=X2)4-J9R z{3RK0!O*c$GkL_OlcsI8T32BnO-Lr{k~yvOCsrt#q2%HgUq{jsSgB5|K%g!0LZ*l^ zh1mD?eS-IqVZzDg1+p@wLP@G^Si-alSj$t;66i!UtpYlu;f%avyC>78v<8b^#$?4kxn;#`F{5a~7_k!}$!OGLW8W7Cn1sbJv(=UrR}r-Q*qHo`9QyivG@ z-Sh82vnsz`%xE{`?1AJ=H` z5Pu8}4v%ZFQuS*M{!nkQQdKv`JVZLvBOv|+ZTk9i-{p22G1Z3Ac5DxhkfBcbD4k-}QmCzP)qDA9(4_uSew)oN+5A@`&&9cL=}vo8 zorK7v_wM*g`m6=OE~*8R9BzaqtT=&@x}$8I}s_S^xC}n zw>uR_E`^sqpvIW;FpUy6@R;KRTq%tt##l^!ol2GqPvK+|d5RS!tKSx%B z-Js4A3NxK4sk^!V`8MZoQfcC8{5G$x*VBDynoY}(QT;_7*8_M}SqM8y+NTFGO|{%Z za~uk+-m$xUEU2Xx1KO$l+1!pgPUU5@CKpY#^25TUSCFX8Rmwy}a>3LWEIg#0Jg2h5 ziTxbW12B}WYTaQ9gP13<0%pH+MZFx+-v;>5==t5kIgE)`0pcXtn$x*(VSjD&XM}DW zcez!1w3*+ikOQ}xuf<;T4uh~4+LbN*3MTz_b^eh;6JHlBGP4(zxX}$9|^%H}1ecf_hx7%Ul^C${_2hHedfF zJbr+7BA%^mRTS}O*{-l~sD#Xs~h zu^-j8dc+5~k4NcFB# zRc&vB9J3Fc(DOZxhIjE^O76u+Lc<`lt|;u@k;OF$4wsS6vOTj*y%Ay!t@2FT;+n$BcoFiw>eEtE`(t!PYdk7 z2&FUc%HowxIL<}SU-K?*HhExg{+=8A9`~q7GunO;X-3~EA`+4(8Nsx`m_m|y&z%8> zApE3o;PUM&?KGW|24pbxkm5SZv75F|j2%ZJHg?Fh5m`T)1D;n5RBZJ;^F?g+fEZ%+ zXf8rD8QG6_xq4Lb`x`C$VRW##6u7}BSUoOM(Aesk3^A3X)!X6$mtA4<4A5t`tr_e! z{)Mg(3q=eb7Yf&qdgtLnlg*!MW}>bNxfCY+?hLV1pe57BFt#Xu)d9s)OcAjHw?e4z zW>Fw{490#-bWMEwM}b!_KoNLlawg-7=o!D0LjQjJe*WdZ9KWGMCyrkWxOfA8FT?H0 z;P;6?^o(Dp^8O7V|MVVxTG(Ku9S-U^tua@Mk{a`V{DSP0#;Ys>NiB5v@7XWr^K<4l zmiebKkJB`>)#blum&-qIt4ld#lZMaRfX$?kHXS0ZkGf(TXej&*Kps@7<^>G9aEuf! zylh^DUp254jDkkB5hMcBTFKR!gTqn6i($ibDe_ZUU>rVd8sNLR{=Ixpoan~(4~hE+whpm{$jS&c zXP7pCDTWy*N5FmcfCKAVHM=Y4GucZxwQ z!_w6T5TSgrqs(y+hrgD`Y#6%>Fm~q|#_sF$u<-KRLVcp(Fh?CS%DikQIG`f3el#OC zKct5Q?`Sk&7WOhxy&|}2+G>b*_48^Fjme>m;ugWILiZ;pq0w2ODYu#{Jy(z;0AmuB zdeK~zqeu?nPUk41Es~|+ir&TX(6T~yVl6NlSk;)2I2HkOC@TRDD*20lK3gQH$U4@o z-YjN-&^3X_h)$L$zpil`br>8YuU_(LY&S%nP zLvv!$mhMcm|_q{^GNbV;KE+ z@ox|R{Ui_?<=-4V@o#sBh~X3C-`)fJXy7ki$L-1R7vug%AlIuSS0vXwasKV0kN*Am zz4X(6Iex>RpE!OWK;UcxerMzMWbpg`uY197WcP^Vx1_wdfs4D@zFe0V^Y-glwjXpU z9|;BV=S*NGq{hVyAUQ6DO3r$8Vy?-GBZ``Oq0+o5k%Rhew^5hLkRA-Npb@~Fu7Wx~ z{wz<7@VkZz&f*5-4`a6j)1SxDAIR`3Uc$Dwneq9jKM##PoN?g+zhXxl;|U;5R_8>P zkY1zts}dXNbAMN_e+mb{i2H%ItbLHo$MDgT?ml|vX?%1w`lo*IBn}?%NuYEkLIFI> z`2KJ*-)`Fgkih7@NxpBuLol3ca1ZviC&6bg-K6m&q0FZAq)-a(SxH*94;7GXaxp71 zc!4qXt*qRFLk|Qrh`1!ss(?iKc6>i5GIuHt3>)lb4YDJ^;@K%^IuvrRyC^y`YCx-+ z1G5+*=Re+yoZkvL9{`3*W7K>)v<0qKwe-_M6Vy@xdn@GpmFSyLsPu;e^J5Kl=}->O z@5{a=X?-Vo5T}i>B8hfsrGpkYqJPC<9UN<4A83Hy{!#9;KUq; zXuD;+ok{ti21QmTI!*i9@tuES`e2$IcLHG+;Oq^jG@$`7Xz4i4fb9fAd?4Shx?(4q z!rq?8Y4l+e+oc+Si*F1Wo4i;mS;Ok1YYfdV;Qt?;iw|)1z4c3s3PZ$zWf0N8Uxl3j zgslZRQf+~TwU-b*UwNBhu?+d3fUj&mj%271_)3wMX>PjEA1d3?F%h%8Zlj=`?p`#J8hD4lp4TFaT{QXKA?IKiF1b>LuF4exxX99iyNb&?Z-IAnb zjiL~vj`_xRIM<4#+TWqrCfrwnjS0+C0Bj808pB5VRb8-w*4D7K@K!4EF{h*n9HiKU z!Vw5C0ZgeSuN#n|Y&IeTHVld96prG%%&7$hYVB$uf+1W!y>Z1;K91z~^nFq3Xr8#5yQ0H?OD;4Rd7uEv??fp82m&&DB8fG~ zCDvBIutkJFgs=po{3^Tu&b8K}Bi5oXZOXUKz>jlWrNg9$C?Q#EzVu)_#NyTQ0X&ae zc%di5T5|-N=_dRncs`8Jzr^z`tlx(((P%1p9VEQ%vT}W{ScMoh%=mGO@;s@CC5B^e zd_@c1pCZ){T1cc9sy8GHn*fJpytIsmZeL0F0ce+hSQMgjKqD@aazG$JNJ&hu!GQrz zQ>ZcrN64ZeyR^jVt(7Ib1L)qM#o~IU{zo}b(n|g7!e45ErLRmu0Sp9 zz!_?b`wWNDh)I0`tYa9Rg!$y!2uIoaHjyFRXe_##hKGxv8eg2NwbV{F%{FSe*xcu)j%NT z7Ga+d>Ae{X%4lsND@(z%fSuE=EzTyb`QxM5qd81Z{<$q|h2>N5I?Mp|uOD{auDkdf zz617_1`XgWwd0VOyJ6{D`sA?>g&7_+_n0=Wz3|3H+%GX%q?+-RuDP-dtB6Z=EP~s> zq{h-Q_wT`T@D3+Ka)}oERI2iOuq(!v9i?HMwFO*Z^_pgKtKnw8zh{j0{z1I|A$Mol z(kv}Y;WF%%MpVtoz62;y%Hs$NkD2MV-N8hhyOPh>QW?UMyzDC{D$U(NR z!5Givg4Lt2t$;!ik&whU<$(QRA^PKDg_scFX_w<<=x5*HtC% zI0zsGRpFe&L_9$C85_k%o&F!y13rHQP{jx+kFek-hVH%zOGWSEIxL&LV!BE-t@uT> zRX-xjV8+=W#xDXn*cJR1;&%mp^O4|XCG9a8^vU%z{INfd@Z{|JYwAz`n<0lGrYNpv z*`LJDinQ?hiir>XBP(&{Nz(FUauQhPe|`irp93oDc3v^MToboqq~)&za;}<%tjkq% z_n+FrFlShDk}y0h+S#cVMqwy|q|q4$-MlIeh6V8H!MWfn{rd;jX~fkvl(e<O1x zvWs1Ppw+*>hidA?SFtgx?}+O+#NQqG`#Sb#o;`>VYt%T!Hs^VHvXVA)x4x!p%=rR? z+zlN5DJqTtOBdzL2ajslb*1|3h3b`Zu?bpX*ozpRaFLHdY#uIh5ZD&mi)hVc57?4* zyNrDG!gV5&-P@dS^XKy#)GlA${>QH=kZxBGKTo8~$_fnvM$8O$gWJYk^>3sJ&b1v315TLSmKtNpqN_qyYDJ_dl$I2Sm7~z{0&fU0NP{mx?4`=T7>UKdqNx8yv<_@pxL;krk$fGf96$75fL^nYkHfkc zk9#p55P5PiCJ`e0Zg7sMa9`S!MHuK=*G;&l@RGl0KP{og-m(1IE+1bgP1B@GA=;Z+W4NvjKI;I|Zq`7;ev zeGVw<3>}{VJAAvpbYk(+a~iP-a3Ygl^a1$+o#2d*liZ!k!Jc-A8LH{8Vhfw$)Y%k- z7Ug1X`3>6hFGkqbAI(7@FC1}4hH>;RB)$)Mb@FI`21JxD!b)|1- zsy0SxecrO;v0ZJpf9fTuSdBCAYl1;6MY~xTMpb=%48mVSRkx{T=CI@EkI5$KIk0He&<0BK05Q+R1B3nV+UW%H%RGcuRzQ$1nv% zRx|bC-!Yo`;7#La;zuhQ1_4i}oBIAB_Lc%id6^rvFag8-UwFb>VCtKv36$xTwTt;gPaI)^zt3 z>Qig=&0@=MwMoB10}HeM43HLX7VJsfW}*HdQfU<`VOwu8ZW*2Si`nK4*eqmrwb{O( znoy$;_CjR#UX9G&Pdgcjmi(`Z4PqT9jNgu3OoW`lWgRXXv{ElFw`!NWa48lk za>?P6nn=9cfXn^b?VIIq9Pe`EKy z!6OFtFPAqsIXfj1?3m(wU0E_A6TZOo&;{~Km z3>}v@Oxst3JAPVZ!efhf0A~OKZ!FGX76>W}N!f9{%0Ebv%M`fZ3gH2^VR;VUcN$X; zVF7fDvfAQ%BO7*vBh4P~fGIEN&=!n>0$cgG3OwaP;_sNOg`;Z_$_Dms0Q}z_%f?;z? z=p+EybEjIQ)!nXM@Jw46UN=p_xo~n&$L}VW`sDwTOD)E=z6c}wiimwA_08NFX6b8h zb5oQ6J&i|*bK_F>N7yqeACww|*Wg0pMuD4r{RRVFqeT|RlL}ect?M>u7#-1V$jU~c z+bD_GZOr{+|sG;v()mf z1}rq}@#0rkdi*boFwd;QJwXm=0LSzmusIPg8&w~LC#w1=RR8dTHoXfmy^X354|X7` zKCGPHvbKY2(;7^HKCdyCUCI_+EmEj{A8?$eTI6w`zNbF)Yh5jJCU@1}?2Jyw*JZ@} zzusW68(6y*uV7EeC7r{>EaAkIhR<0m4PUq#o5Mw$^$A+L9{}n~HPIDVY+=1}ldw9K zKX^GWmA};C2d8ydxFG#AL^ew(Qz~J1DWhOv8C@J7^P(k`%u?EIbx8<-YD&Tpk6dcY zksjJEqzr@PC79NS#)>@_jskH{gyKV1SAW?S4xK||Oza+p7clqDo@~bI(kIC?AjLCG zQVpX9%F0oSa+1$auH0Bne6iiq{TFAcm+*@dWy|pdYFRTQFu_JBbWvQZWUa6BAaZbd zl5ClnqeWsu@M0lQO3QxCt=PACA)q_NksxTx4&VymgrPZ>;F$wei3}=?|Mp5sQ!Z)Z z-?53waHiS;atVfLkWCIO=KXheysjK`7KGtU?bv-#wj6Uw0I&XH5i1&tUiP<5NtVMmkByR+(PYhmG5)wVd=645x8%U z^!)BBTgniCG6Vq;;S09tPgUV^Q^&D0bD^Pk~b;<1Lm@gdex6qwfMg z4(>d>E!r;F@rrb*mJ7G~7;U1Z<>kZa@NpVHWLc3()fV+?HiECZXK_(+^# zrc~=vK~|<$b`gs~*$k(8T^*{W<)v&OyhKP?Gr)6JQt=4A0BYjA@F~IiKaC=%@)s|D zgl20@Osm91#l3uiUij*h_`)i%2&V$#&)LAOXn@mWaTg%R0?48USqbdNd)zGj%QRCf z6Ob+C!z2n_1Ov)(h+{yb;5=(Uxe;RzCvrjW8>E|s+J>M}tJKf=7sAaoMx6IQ)jDFRU`2EvlQ-}$y%v}xiUY^qd9iU2P9&RjHR=hp!Go89NGjU zZZJ1eCYAS7chlU6*@fIr1Y9vf5Fx%P-7CLxK{9x2PVcU@4+pFxJanwM?!QV5HtwLr z4yF=x+{1XZ_y9i$W%niQU=2d4DV@PWyygcDKLTC;>>=`s4$z5h)>^4@^%pX$)W2A% z1qpc{K`PsekIl02>!xm%DYsO_wgO?X6xzd=Z-64z_MZ|Rtq<$w*GH#-0sHmKocd+y zT$pnPaHUXqXtr9Ze! zT_CH@pH{2a`5pf3%z&fb7pYD2Wz`07V8X8T{;U;#R#xjrZN~*1D}9j_8NRGYKwt0M zwZWgY!JoDc+hP5v*W-7r_eJU)06@W#)s)tRQrV7`kw_1Hy&l0Ag0VhrogP7f9G_!d zq%IB3>vbLAI6dHq_##bcDFF_@V>LkVqq~C%5=3!6oN``2{^5(pg9t-D^tc0r0mu6a zxE_EEn89b@itzEpv4#+)0ZW^AZS-YrPHP5uS7ZT{0Ic#^#U1Oa0KpE_W`=K#9n0YU$Xg%tr~9*iYlM^82W z7{x%^#z59OA%I%npomY6PQdYZzhfhYC&M?W4z;-*oI`j9WeuuJWi5_(RSOuvTA$v8 zZ}x}ic&GVrUrWSF_8U(~u|}UUpAUY=I&@UQQwPPFwfhFG#B>B^H?vFVrhFb$?{hS8 zBK8DFScz-_s~>~v0a}g%18p_2j(WSD2A{D&wL|8BKD*exK`YPzs7CPtw8(BWqqUws zkXY{1Xrj7sOL}! zq6PsSNID&*QnE3n9d*8NH(&BaPT#!cs`*-G@i~_J9Fa(^%a=SXC6GJ}2bWkO9E)br z!KgwwuvmYS7t2x6Fb;;2iG_6~Eo!;<<7by|*_}tBox^PjSg72qZk9g2ipa8F#yBI#WCX`WY?N^W2cxg{KA5UX#?Z@3$j62bG&a}htHMu zUdb`FWzY(2Hvcg9`?9lCD~u?YHV~Yi+Zb}Z>l#o+II%&ZQ+uLgfbT+&;oTJwf(jL) z=MW#B=-qjG>JP740#Dueh8TJ=N3sGpfYakKJN&}x?a*!Tn6vMrWeWy5aw4!!C;j49A0o_r;yNmL9$kuBVz z;wc}fH4bwV0$O#A!!i+Ikkrr(aQEF=7)WY)0IwR{RIK+c<|Em{)`BHVTX3Rg%({Xq zpp9P~&59`FzCUg&L=$VwGX~QvZvgqt1^MAN$4?nigHmEDq9!XaLkr*J)*6RP>)x7N zZw-!|(6E_{%?8_RhgIMz=<=VaQRPs5{0jaVdI#*eckXl`p>p|@3H2S%k7B&a%LE&T z{a{dFp*&^nlTHmUvM_>p75%%A{uw+mN5k2I!-}5;HonDrR%>J6`()5wV_+BQt}*a4 zX|6HQE(C{=BsYERNBZ?bkYDk$<^wpg)}MdNv##nKSTnNwdF(O1rFaH{D)2A%+SkSr zUPf!puzeu3jBPc;s9d`*L?kSm_n}O{lXWWM}F@0a(6m;MwI^^SF zLq5IT@Aw%xr+*Cu2K3dfU}wMhb9V*w2KcRw)M69{`B=?Ne{Ov=bF_YQ@4aVRGWyEqsBbUAaammSQ7#JW>Ly00ym+XSPk z4OZTO89pAJ^VzNRmEMZ^Q>bPyLfN_NT}6lVpQiXj5>NsDz_}2!vJtk~xHQ4yBm+Hw zJu>!xVq8R@6|xMH5@nE#(JzB?zyZ+%6Pd4-`#UW~ zrT)3*tq3crRcZ~U)(Teux-iTdeFd^XC7XX*!@Wh!6G0y6bI?py9udF~>QIeA-l6{b~0(+9GRR zjy+k8`dWgEZs?8kB5!ZHB8*y~QVCRk$J!V!6%toRv9sC6PS#o?=RL>fNIj7AA!a&^ zISv)nY1(AQV-F0U^=HigyI`9^&xS_lSffS)2!mc-2Mg4vZ`ic~>LH`_bp};RkJW|(-7LP+L9)PT9 z42Bp!HvwUhmFZb4XX&K=d0iC}av#nCVVvs)Xr`zuZ9pu4o0GIK9^Y$Ns;xw7MF;i>cHUE7JGGQjrw05&m zWo?0_Jiqpn5vl3%J*(zVkM6z~X9{^JEU}FgOInngOLDOVs4rbIR|(QPvQ<99eS!zPKDf%!_>a_=jIPR{I>QV08H~6Cy-K!~y#at{%{x z%p8>lCllIaYEw@*pU}@Vj3TJ*A^*Tre-OZp@MG<#4F_tC`<~5uIuxT+dcdeuC2>Lc2`t5t^52gWS5iv?R zY%I4D0}r_rp8do2c3)Z@V5Z@%zSVXobjE$_udJ$8KoVgban@UR1ONd@qvkw!n*|Te zRU00#wv_-R02eFVKpRoAj|I>QVn`rCBB&5h)O80GfwV3DL7R=of8X0V5;Jb=SEuhI z9Dc{Aehgux9ztS^FRea+!DN-|Qu_=~eg;**74q;o-<|iCG!Dps3`oIMXdI;Fb1VlL z7~wZIY&tEnDoynotO)fCiiE&iVH(%oJ?D~LWQ`v7H&P2=>d{}J+@To2db_vMP2|fI z``YKIC33^Q5PF&%9Ai{IwDF!+0On7N_y>tQaWL~Vp})QoaI@sm~LcR+)|Jx<3_Z8%`8I9V*=CfY)I<~y@R zZ$^;nYV#GGG6B65O7p;Y`-t}S>Y(ET^I?1!)fCDyVues#+1Pp{_j}fhj1EZq2IQre z9>y~l;VBiB+q&gqG^YIXZgm^Bk-CeUs2Y9FWL&NaAn2j5jHLUP9i_P2;_-idZ!-+q{OaMKr&A!RsVf*5LjmPI; z?td|t7TM$Q)*y^X)30{oE)blih&^w?NSh;Aux=W*jUBhX_5A4<;;lAC%4y z>i0ks{3)W3tuW>^qd`2AI$r#wYj_VQ8^W)56 zSL~Fq(MqX5T*qKgH*@ zS06Gy)qV3`hIiyCC&CpNEq#xs?;P~47Cu!A|Hip=CI-U%_{`Z19L1b5f_gsN! zFe7yW_OgKpN*i&aU$UB#^tc!!(n01Pkkq2{W!h}~SWV0DO_-B6VNTv8bF!fjS8#{t zpjA17kF?_DRqrz1hYsKQ`-QK+_aN{cso=ZwaN)Zm+bLd7YsE0EriUV5YvLjNGk?$q zS-;Zs^!40VhEwN~Wwo%~t?4?;Akss(OTm|*ChXL;%sf`pAC`H5^Gz%N(H1qCX)e=j zjyIVLXfprxY7A4O%p}ffJaRT!kE}@^8EU20M?F`!WNqEqZa#sHFygk1{=?z@|F3^* zt~%`gUB~_{d;UQE+YO&#WhB!a@8b!YslA^e#q{{8KDjJoSspM(wmF6^3)T=Jn&|3{ z`g?7B+4VUOP+!U+*C+eN&7q&~Y*!Fz7DRPd9tfh?_^I+YcPfAP!OPPpDni%;cWC-6 z5TI+#`tw9m>1%lsb>I{8x|+T1B8W>1BKXdv9YYYxfv>MCI&%fqP`+bRR3wHuuf@xS z`N-}ZLOhYOaVB(_rNp~=!$fv*2Lo^>%YG0!*UL!#^%n9HY|aQcUA+sPA!9m@w+x26 z2g8L}E{D%jzcN!pT&h;^v8!s9;OiGH_h&8Ao{Ejn+^b;Rw*z~1rGOUsI#qMD1;caP z49c4l)Gwgc11<&Kg(>->=PY)V@@$z)oSHGpY5wv&xPE1$M>1)Z^=zvAL!Np!P+7yX~R`QPq;_}}dRa|h}F=7aTL>0XdL(ZTm( zv1lo&+q_LCM>EG=W03uon3dlT7CsJD1Hl2q(|H3(&2Yp76!okbjuUfJr)?7XqL0c% zu!TPAxbTSM^iiHLA|#A)IS@xVW)NehkMf2`pdpD6;hGI}K}ai1Z0p5lfZhYaw^pW3 zB7Cn5IWT1Fpq8WNByjAfWJT4C;1ZV}ZG=WM{j= zezl3U8En04!%t8jpe_0PQz`!#wmO&;98%Ld%jZjzPp?# zY2)OZh)sTOtUD|)&%hPbgli&@g0Bc!!cmD~X#L?k@s}TL$0H&564oD&#?f(7Z)L0gxL2MXpjW0cKQ7=Lrdv8|M zf#rcKT~%8E#rdy;6w59W#hYUN`MV z5bj}@#xF$1jC}kd!h42>CMKK7J$JV^7CDc^Pyin@((&iU-?4l-0l7->a2rP9>WR{L z>q$#zqBG`=Y&ncg8)(%<^fZ}0E@X6Bn`GmtmDs4B7g6TYXs1>%+6^T$e4bY6b2?jH z#CD0f5A0YDxsw9W;r02GWi&3rtVss_zyN@mhht$eBy#9W$jDfat)d|#^*j8q`L$*r zL;?_+R1}z;uHUl`J;Dtau6utCcw5c`|KYIxVb<<;HJaLNHGqhVU1Jv9q+as*awcBL z6GD|OL(81=TDW>sJ`&Y3dMQ@#ACW9%b;8I5!sZfF^?peEE0k$D8|%?HB#7EJ&PM`3 zt*5cM{8Fsq3;>1%vsa(BrG$&p5wcyXO^mGQCvO!P>+&$hslpldgM^}(Wd_dKf3nP z=nR|~vW?CJQr?kqt8REU@9tbE$)T05ayOqQO<2D4fkrVM^PMZz`|B3xJ9wcN>oe2 zP1SPT#TZ5v+eE978|#d|XRjjqLpUO0`~pjkI2(+obt8}-QSWOc@#Y!3rBZs!q*7GFY73gD zz9!xUan39|0+_|lD0m<_gpJcN@?2k_iH8k7?0`>&#e1>wl6w#;W=%w2act$zvLgfu z`969dbvPxjplXb}K&WX=)^wt||BwNs2{&jH3bST`6?8gNH-u&B-QAQH?xaQzBvkX{R-s%G8jx)!dN_s}LKO#3b zd24PzCU>2r4>*SDC!k_){K@HxbpV~+)AO+x*;S>ZZ@zat9#)S<2WV5Qub^=nZYPVrx2C`lZCthud1(=r zU{Gs0d&*>pibNSJ(Qrqm6vw=MS~Ob64z1v6s;Xs}yJ`H+RR_0*^vZh7OZis*g{EH^ zEV#f`eJ9K}o=M>eRyKfqWZW=}f&5af91c<(eZB^;E&EnR19yegnm<4~L_Y{*qA^SN z-k0o%Jlz^JQU=R`7bLZbAS0m?H51goYCkXS@s9jz&wUB}3df|XyBaw6%6i~(v}J&% zVph+jvH{XL4@Lx7NH>G0AOy3Sj0P{q9nDRaa4!)<>1Hv$!84>Ymc z>utZGrq!lHy=nR=7}iC3WM#nwR#u>IWPF)oX76J-Fi^tHhNDVyGauO*%X5tnHN^NC z_M8Et`?D*EPw=yQi@V@w*EZP9spjECer8Sn(nEFHAQJsiKdnT zZKB^vxLO=pM>ZAm=;$B}LHv2}mjkO22fq~M;fQ|xj`AXH4E}ERg=bvhYb=^r3!)4* z7F|yxs1ylh`}Ve}gTuiqa7`aB?GzUgj z+179RSrr#-DnGqqPV(yVlPl(QYbf_r%yB$Xek=~!>Zj$RUtoM|%yZ}wHIDmrFnl%Y zn2S2F7aL!2fOPRl@w?bwLLn@4wx9;PF1|nI(u0ZPoiRzq zyKs*^-Y>$6iyv=U-|OsS)hKZx2R55O|IDCKBh~RP*hkp0Y%8u+gTPBSj~obgc_(;h z%AnfT(% zHdskVaF_7O0!4In6dJ+J)Cd?W&P{ZwSDerl(G6;+jsPo#>eSynis)MEr6+KiW#Z3+ zKQb9t@8RSzuHJA2TxUZK8*ba!GDd+BDs0ZG86|GzfX{0`)fQ+I08G&9QYdn>yiNx4s zV9Xnjv4f6he+dFMQu{COFrLHEK!@=hMfeVVJd*(ae`-9pop{jk{OklZp2`0!<9W$| z!ynH9EE6}L+i^&tHJ&flbwKwnE3Kj;{CM0^C$be+~rZ^M2NQo~%`~iMxJ`5t-&q55OdMLtb+} zxr@B`^}1dkRZ=se1g~T8I>zN5bv@?U_4=r?@Q5&U& z*Di6^lwf&nM9&%x%WD~5yiIgFfg-UIRZvbG!;HrBsQOox}BEN(Z)irpo;^$u<&OdjD z`B%9OFsF{_n;1(;6^PzD(vokf3sOQwYd#5s7TIquCf{*@>4u@Eg?Xp}WB&3wo+lvu zMe0BH(CRNx_3zaVt$ylth-t&tRl0jDrxs@(>~)!ZvWC7}O~C;p>?!yddxgVrI4v%_ zma}A3x|r!7n0xw>a4|dKVlmYmoLGu=K&0Y6xoc#*D*a)S9qVJGS$f=Y>J>VFj+vv9 zJXVsU+3crMvSTSJOmToyp(c2Q0LH+p0Guz}opLO?IkkiLi}92{Cge#CBorE4w$4q%r-4 zgtO>KML0<+h4}LP$4~wO zib&)quBx|@J<3yDRd3+6BVXAFUWK${LgO0roE_{v{Z$_X*P@{~%6<30DOl!384 zGgV3)H!4*rC&%)PQ7JjGlwnLs;8;@-d~-041z&xR?J)(ubJR-3$;3%z?U9m_zySW! z{OwKn45Iw)K`13)O*Vh4#W&aDcm~%C>J?Isjq$I&6D1{%=Y6A6PKf1cRw;38utB8^ zjOBS%rNnW@Kd6+GV|nJQl$=<~9HbnWdzOZKBU;KI_N6F=I;zi`-TsS{roM4F)*6Xz zrTXi3Mhok_p9s-fdYz?@Tl~ltsuC$3TdKQC6i)7Npg7o?NfNyzg|`pGV|~^|B#<`5 zqwuYsA1U2r?JO$LI!?LpXbW%)o&&YN+x#bbqK~s0r1<*fYPQ1KEz0D?ra@>=Y*-fy z*!{SL$P=ecinlJ7v|mVzV%-d1Y1TTRGXSMKZAp?BiD~K`H?J>As<7V~oCXCE@8UZj zajqC1Y=o}V`(LpwjEnC|v@jNp7LBm=E8D^t4O{L#;D4zAkQI>;z)0}yPra#SL(y*B zT!VMlVhnLp%T%xxYyFR6@yWEV`7uY^xAb_pvX#EpngKYC)YGw5rYn9Nm1i&Do{;#x zI<`FPSl^SXzV|NJPkj;}+|i^%KwJ~?rKkS!_5|cBV+rPM%vgfdU1^s46lX2J+A@@0 z9Zy;tk*=zsAIv#}m9{Uy#uj)vuvv@jft__n;=pbmB?Eipm-fKU^u?6${qR2`v9cDv zPH@Bo{Z`WoV7W^Yr{e!U`=dj@aIlb%o z+7bR%SnGiQ@3_jStNFjncbuGi_?YF8IaK{eX6f4VtywzFwxu%0a+*eMslT%EL|bZT zRPQM}zoX8xeK<=e*is)cDM9PlQ*v;vBSvK5(Z?lBu<+>2g!kC^(LBl&ql)ZxX!qDC zwkaxs1cE$ zzVLKUlq?a`5T(aesa=n!Tj-Guksg!H{;I7iwAIyk?yo=Z9dQ`_S&TzH(H}Q%Jo=aW zGr?-GwvJ3evLDf zdtxxM7rw8cJDBT2JPaNq+Imw%a7Mw(=?LHWsWnYA20McVKj9)XY~qxI%Rk^vnEi^r zgImtj!s^tgi;SUPqE`5r5FYYLF!v+wuY^!uYZ{1~#)6eoYhTs+O;C5?0O&y*5TuIM zR|G2~J%ZTJ8!W)9t7v60LfqkSNDhXRiVei_8n~LXy)Ia=z8qmJYrvOrjyoEMOvsA` zsZMCQV;eR?{dlQ$jh(F5bh)2$JQvY-(jfyw*#{dMr+9^ZaEtgn_{%X$x|ws~ctkwP zvJ|Lsh_>;;g$ifYL~|2*;aZH9r&Z?OF!mT=&AXR*t%QW1uq+jseSb?1a2t^1e%{J$ zjBuK(k)4q*l@aGMY6|A*_$W`}9K7|h@5SBMkc30<3o{$M$!MRy-K<{+exW=vWQX1E zaQG#r@qYV*!Q@2d^*87vPRZ;NDF_&blCT*bXat@3B*NOQBCInQFESn%cbS`~un!jm z_36m7uj~x?(&3xDB&RG5XGhg^CzD+iXQBhCq{^*gzH;XL>z z-Q2uj?Oe$0>VTY6f(Qq%Jq2geChU7M3cC{tvYshOFl(nOQK>Pa3Bc=WB(cBp3icOU zG_Ck8I(6U<)_21TgwP*x1Qki-+i*sFfT;6ifA9BPG04@iwX28N7g#||Z!$A@iM^va zaVzi|I8~>@qsyXD4nlenSQeVWM&+`Bq1?IcIcKc zWx}ugbz)j*I5rf!R^bM~b?eX;c-Z|aEqA3%*Mi;Cutt=!N5l3oq9;F2xt|`=c*qr2 z6=dUO+jNf=7A~IX1}s8%ETQG@E<0*IX}tM6PFjQ^;YeznKNr5LQ|&SN5#y&ZQ;04o zTsVbFjFbtQqZR@Wff=AP7(Qa~*uI69TOav8;r2=D^BBzBWP#e~1H55&8Yv}Ou20D& z`+g6GRNzKG9v3#BoTo9c*xDy_ZRsRsz61t9d&a5Yz@P6;j|cV%7aLsF;tkia{RV;4 z*aXsOPHz6bT_5js&~cLb$*1k@kf-55qpV&Ruf=Y>M%SqU+*#Lm1PJ6!*pM3=2L?E!>8~vT}&S^AlY49&+qpSQAJhx4Td_*8oVag%G^5s!(sWBHf zn!mbL6lUB_XcT{KJ~Uj^<(17;m+^kqIcmk=H+J@`&U+yCM5~@3~&DEA>UT zrj+7TApjff1|=j1-T|;nye4zg9FJm9#wN&|_CF3Zj_O1fy(ifJD(;O3IFp&KHuHyw zn$}I({WQZ*Rw=e&4$oBfdB}4h!`zx;rIjbTN+bVBDec)?U|0f0C#kgZAFk39lbI%m z7Dk~{@K$bhMN{?mpK{}dOp;wzsU|sZq5f|e=55I2ndA>?2Y*u zR$17-QV`K^ncT5sqz*Y-sZ7SmJo%#HXYoDfN2z$^cynY6p6F72pa!)DjFG80SkJ5h z|3kySdk$$`w3ybR#YGPD&)AnkP+v#CsC7~jUfU*V4{*TDN!ZuHD&2Gtb?(H8${j%i zUiIE#UZScz<3s61u2kt#RsL>#*R>4nTuX+k<@`wk7>>9GU@LYhz!stw^SCb+U`<_D z*}FqufxTti(PyM?w6Xg;S!F$>KFyU_nXu~2Fa^f%c=BQwDCwdzUR7N6!olMHn(4UN zRum+)2iaPBjFV3|Sud>d#F8-*hR0jX8@+Nds1_a%Njn+qrMrE)NmUtFPMmbzZj$DS zU6N+IKRoj}Q08JQhU;kH0Cr5!qD=a@LgB0~DHCgNz}+0mT_g4BUkPPG1FA@k;Rk{dwFo2}bIWLc$!EI z0Gmyq9coD!Q&r2&s+RMYw-Gcov@$;dm=Nfl|4>!h1R7T*yPH6u3dzTyN+9`cfeSa# zM+r2p=zjY22@cVnZ+GVR3O`W-?NGdn&OEJ(t6p5o;(?kuJt6XV&M-DLPRLj141X^6 z3$KcXz9aORz%ji|DuQA>gz;{0%XL3Rxh3K5$StQV0ZC>{(?)8QkQVlU!q)>;a^`_K zqJ?v0N8jxkLD##RSh+06eXj zU}D)W`f!0NtANK5O5}huzyYyztOO&hM6VsVEKKmw<$vRfZZs&>rk|dK5Zw9vOBZLQc(_F9>1)Lt6ofF@&5&RJZRU!?4b{ z<#84DGSq4lXb0hwFqle`4pfz%^F%f~qgcczs>&#VcBmzRKvgXtDTZ|ZBLbQl+65M1 zLZBl)RDjt88dv3hxDHPqj}&OE&h)lAV-sjx%M^=UbjGEMt6ps2!2U<% z@xmVtE{`99B~E7fg^<>v%Hyk03WaWyU~SB0$m3NcFOkO&Db}Fmai6ax`B3F?ss&Ct zK)2;_M6p#RkNbSC>N`Yvj9V@V)fs2VUL?g0Z&&plsyv>msyOE~0ZGy8nHESwX`eMK zkPcBE4@7;yU9La`+#RYs7Jb@gf-hNW$sx+)zY5Q^=<{}#J-9rMo@XzDedS*iWn(=YO&d!(`}fVwAl>V9ZPSCH#gc8HPSZeNm`+L(p}$6xDOo7b->O z098iD)X-~_XlT75>Q}1zqO`d;sNrFQ#(4bY;SZW)f%4Qq;aJ3GPuFuxoK{;5(l0sgC1nJ(ZDs4s^Pzw#ems_EOX@(fcju#UPm93iqg zu#C4UaQW1H1Uku}4Uh=w<}5reqtY#Jt8U+mon`mTN5-UO7#O5J@Cbg)Yng3jT!N1Y zTqw13%tukI9Vmm&{4Lb$Wi;ySgxisT3j?>pZ|GI0-2}E`uW@+xj%5|7R=F?W`N}hk zKH+s0Z#p+4Jjaa`&Fl-_V9B5mtI*wavAeGM&-jw6)p>eci1DDULkh4cp*F2qYu`Gx%O7Iq3;CgUK;=s zfvoq&_I^#rBJmn{)#cd=zHu~TY0OF>Y*@1cq|&nLK`g=1j9#*{{K{;I)w5rK5aLCB z0seqRs}3rgiFK^ORuTD#F2#MpJxh#*&W|lo&hvq( zo#z8nJI@EEcAgJR?K~fl+HpQGW9Rw6j2-3!Gj^U2Ozk`$;Pv7vVb}9P{2A0gVo?r6 zsm3MW60YWsk8&3%gCifnN>VtPi#o9t|De8(>+$AJm|+^vd!8RG7hreGn6sv)gcZ zA$7h%8~nI!Qhh3_M$fQ(KT!);%WPnzjdq=eRjyFRb6ku^02pS6bN(W$x%WTb*0W-eDxxPdrUcC(_KW{=wT7n`wwIIu%J|w_k0n0xfF2&%=jzS9c-MK^ za%x=5?)j*Jjvj_rET{swINA_Fs;CnFA*VTZIwu0k^3;yJ;_BKtE-XwUCWQH&7s?gJ ze9U-F(6q{|I)x`MVH}OE>;!`GHl(RoMH!KK%Q;eV0JG6oyPxZe>UP=pM#~ao!tJs- zr^rI%HE&+eY@ABwyO~yGUNn9faWhV05}GoOiltdj~H;279{Xnr%gV*nts+%8#?6%&cmzj5Rw*0v7=3b}pgx~`z;rJ(Ts)X1}e zJ;Wf?$9!b9=0Y9;yt>{Db_CGE2mGM-p(A1o{8Wbn>Xtc)wx3c}4bnSdg18FF8OIK- z^Lnt%@0Lk|gZ>b*P}!E^y60&OnCtZ;Dt3pxS0fat=QdOo{u`3%g@fgs9P6>OA`w}n^<_0 z0I*sBXb=FN=%S9(66?4wv5sNoM*x6gSJjgM+3@`^bnuKm!6oRToBs!0&(yl^uE3{? z-8YxrS+V=BvgsAOli5~sQWtHl2@~1T&hGkkLT8K0OHnRZJ`o5jEWf-Hsum=cUK(Gz zQ|1YYneX3!W}rTb@uN!v$aDj3G~aAn=w9|x)cjYd70g4 z46IeFIMMs-Rt&dfLV&l{HDb9D7ufyJAl#z#bNI?<^B=E8F;~_7P|daQmG5Z!JgFyl z9vKh}NG&1`ykimzWvFo6M@E`+)Vi3hNhY`nj53{54Ln z-7bM45v^dy44hGc8=S*|uQlV!O}qk4a}CFXW3$Lp1e~lguR8YZq=uA1Nv-HHR!y++ zRR)z8acnYo{*hFhP%Cc2o_ai31awDM8?dVlY$|O`ah{jd>Jc)+P~!y8jGDYc3L>8f zO;orL6^2kVq~dmW$Tb{K`fLDQ3~4tO@&geq0K82AAA%O(mAi764frkr98omu3HYCm zA>ai`t$k$Mq(F`P@PN(&G~%oLdY|Bo_~6}dXUW}fY%h8+Z`b$Be+TMGJyW6Iw_ z3#8&8)}un_3z}V(Pb1B*&wh5$hb@DCfd?b^Q?2r6^zlw;4^bd= zS@;P$KGF=FE@Je(teVU((8$Ah&Ge;h$O#D$o#dR_khag1AP~{$+myr1P39L%m=C-o zj;1kOP3E1NPzc>bsgSlbVOc>clz^9N!sfj@{%k~?ocQGeL{;ptN>{%}#A;t#Cm(D}plul*o(29;I3;8p26MPgm;=uT z*bj40XYNz86UdMQ(gVSSs{-M+3 z&zi#CDnR)Cns514KS;UQXAC#9UfeGRNfn5}4+vR;w z)_y#C14T#y)f7TN+W`o{z@s=gr3}wdygPVJ05g75nB5-|rOMn|kzJt#ea@HT7*c1w13&}K0{7u*< zFtE`}uQ%lEUidD+Ux&d1ILyu67Gk8IgpZc}rRf*B)pzU8!baCUigwd?lPW0*JtRYz zaf9hnonp33f>Bg(SN0TFbuAhxxH)^UtNL|31@(_G?=MAro$LHNzH55QZpit`7?B)o znDGca1AD|yAG!|vLkZHZK zo8>(-jsM2}>*BnE+s}^jfC_?Lc?TRwvgHnDyP135F-fickf>Z4I8r0xWO^3TLA4M> zvHjam{|M@xx15?NC$;y!=%mgupDC~=HP{NzD0lRhNj>z>YEo^N@I^g&udL)isf zCCJgRjZ@TaiX3z<$Gj(#qyeb05uTl$j(3or7}ghU_!SU`nA2Hck8rp@r4G@pTs}qI z>!NS?;7{AEEj2#Re*pi3WFoH0Yq&Ck^GbmrkQ3vf!4yLH3*t8Og4%Ky<{zK6Fe36D zttVD(D02tpIaH8T-Ve#Gy@LqZm+W3Q4nk%8z7EEsZ>*S^iH%)fi%hr(_om?wTqy*F zCkQ1MN1#=6e`*klsN}5r7;nho#*V%63Cseo5B7uNiQ~npHI(cY#I=xws6ca;yFz#= z)>j6@&f;*l)*O7+3Y_J=LfEYuO+6Bspzqq5;J}Ia8oZgwK^-0x&Dr3~1Q7BV!ai5( z#bNo0wMuRp-)sh(4Td#$%Pt`W@Y({+UCv}+2gzI6l`z5{@k}Pb4werL?9O0Kp+AKA=Z+zl7cAqM3BR#97{*C}}-XdR^j{S9dGM3TqjoRgaHg zn_YEO@Y)Hz9Xr~c9c{%)fb5~OJQaOvO;NoBmC(+)$XPK9!(4TYFb*7=UQaRtEsb_I z49kR!=jl1n?Ms4iXMMr58;p!p>>4-o+<8%{3H~1nYaaGSoy)8?gxCTA12QGESl=m% z1QzXfLpU@6VW5!SS|!dBEANNmONx0HaUFJ>bAL_CUrBcb$CjTNGI-A02juni3>JJ#wFaX>~uUj<+0q0LBUd2umJOOFt;94B4Fqu zD(4ri*pi7+1da8J`X?h$U7#okFgvA8sGvt#X0WoBxMbT+;8{3y=2y}O%=pfI0Nm(C z#n0{St=Slr8GPt(_ms|C?x|r_zYy=7?+CTm^jEVh*c}G1aN`jD`u}12_!fInTCS17 zj-!uVPBqqNa5Ov8$1)Zp0Z4waA^j06cO23KjOHTjXlXrF z3SvnA$hR(s^fUl+z#&zF(fU{PKhAx7&Boq84ERK$l}%yf0WH|kue89kuy5AsU7Sq0 zO(E>6X274Oe;=r7FB?h`itq!hRpWdDB`%A4Q+&3`+`+t@Y@Uk*$WL)NAF+z^)9ZS? zvGqKbovid_&NIn-gen}ZY!CDRyX=~ks_cSBFPg^0>fdscXbltGE!WD!Cvd{!o2!a! zKBPaAU5j7g+Ii*Jxv$J5w&*F=aZyCWBCzb0W+C>*AaLG?qu=n}(2@r7tC$1s0N>G7 z?$#R+pCj|r%YDTnBXTe|i4WX05rTh3U#S(i%W>EcbOug%XbP*O#HU19`Kj`usr5va zL5Z2(EFYIp_B{%Pj9I{gjTH+Clg%GpaNXj*3ZPIFk}vT-KdAqm7RJ&QM9M6TQm5YG zq-5ayenEnH4K~ljb+Q#ey{Sw)s$0W*#Hm{sd=0}kd;;+S{*Uq3b61L#%9B!7+QTSFc>+Yr z{mF^(N+lAiME$}@eg4)Mj*nkP92==GNm>+dS_0m3%md>M+$f6Uy`bbSaZGgaM2*Do zrf59IW^tLEfFTDo+b0u3D@Y}QokCu!0F)!dRB1{5;;f{E8KL4spzVsPxtZ#KI$uIh zQ^pPKmkBLvJ{M$J^T)a`qk=;jbu=JqUH+&`6yHru#R9s_cEVmlnBenryaxb z;5g-*b!jq(ES53eT!eR{S!2rgY=`6o}e*&Nf4(bbK$@kvBXT3&On$5zb`R=>?xgrSZOj>)Uz|L1+~O1 zQ3?faip__~HxlnFcbemu2o;}ND!iz}{pX*t(^Q}_AwY|EJvNm~eVnZ7z5p1FUOB`7 z&UDz`5w8$5L{v?NJv1geN0f6MHV<5_G9PA#3LIrPp9D&}<~29Go0-%)m2=N) z{&^AEn385*^SR6n^aDX3{PY5{$%#;4+ygi;_?3cxS4B; zdB%}D+8dNN1{_n=Nv}B>HQ6ZJhAtByeh7*v${Gb_7=~5mi!qd)sIr)w-;6`qajyx= z)|i*<6O^qsFTz7S%AWYgfly}QtAhQCryt>Pdg_-aSord1&$ONKEksrci3gT>lljCo zq;7@)dCig7(x(*!yk&i{9)$T+2VSt&bavm--ttGbpok_9afIY;>xiTAW^kg2d%R&Q zOgd|z)(Ouk7KNNsv5~CLSn+h~$b7JcxSP#OK0Yg{)OB0x@Ol0ux!!v+4^igPR|Qw* zmBAlz3E=|CuQjIt3fw>!E`l$(Ncn%*+3}&=+EN$e%Up|{ zrM@BQN#z5<+q-F%-z1lBvuj^?wga^md%>kmWMx#5wCW^qSiZmeIx$JsnqU7+{7|C= za?Z238ios3?IcV_AO!YVoNpd(Om9uhESv0+6YW0J^kX!A8fc{z{s!79uIi`IzStAC zKD`hLIHa8=uJ}#hU^zx{sF5ZAEDHbhj95(Esb9C>DHNb|nU{3JBnsKy+ws`drEe;z@a5 zj^bf&J&DIJAz@9AF zUY>)fDtHP1j;#}BJ9gD;;ki(WF2s*J2nOLK5G@}Ol7f$2RU7fZVT!@0Z=@#)wzhUm zplU_gDewp=3o}!-Uoc((6}wU_N&wp2dJ25%wkxSWD~$G+3sPX6mOlyLv(^F1dx&1; zO3zP9=y@w{6H$1{08K;-|G+N2=h&kt2g;vk_x6}azW-*hNpz|DJRx#9;$w<+#D``Z zh;qb7OxWNlaX-(zZOz0C@Z=RLr#)~xETvbi^-Ub2P5(AH`x^5P*zv1TTMGBbk6SM6 zEXAV!ZC)+>qQvGSt_F$+3qS&`Hg8WXfG|8KV@8a*7_PPEb#Gf7q$ikVEFK6H$FF^% zm#9ZD6il!80j8NmWd$5O6EaBd-Yh{=xX+%OmcfFdi+gQd941Irb{@P4YPy{Zy#(_Q zk%R!44v~|PV9&qZOGTdxPiA%?EQ8;KfdEOU92{4_WRM_? z6jJ1VHZPGscRnwCXFp3)Rb^M8Y=`x?0_Y}Pt-lRIddKy*0qkvT{jK)asHL7`W_c3V z-ztCn6^N_voA=r4Zv$cJ(%#1U8!e1Hxa%|BRw#gnJ7{{Eo00|r+m~cAz!u>;r}OGn z#5>yuQbM`Mhq_aOxll#<*fwBB4po+4y$`q=hr7|cB#8OO;VMK4(hu4>LWy|Eo_VH+ z>wmC!=WVMc8uZlWzEQ+b-!9fMT_iFA+x1chT@95VbHR%<1w+}MWoILY`2gIa7+Exc z2k5!O!9#1oUvLsPR9(3sHdpUF=0Z58g1ov#`F3`wD*`6}G5J zp7BMRiIA0fTJI|XHrM}+c_r3!2|Ngo{>6{ zo+{~H{%iGR$xikS%K4|?ZEt5uO*a;@F$~n{n>fKO%)>wda^wueFRmbY6l-Sg@j~}w zHM~tWjqil&8}235k{;T zqy>VdMn$1mNhtD!& zf&hTISjYac{A=i4Sfv@^#uAS-0i(dN1cL%P%XsYaLWqba?u~F2t)qc(TqrkU*$248 zZAgl<9E*+-%RUHJ?oKJYf)V*xhOei2f&T%ik#Q9&T9V3P)YqdzyS5XgwhE-f-srNv zR7Nqr=W*(w$W+?**X8~is zB<8P~6{1{_iMh6vXT&~IZw^BBuGg`kY#lpnIfni(#%J5e!x^8TzCxiALM!##@n9Q> z2gCT(TI1u!`1DCCKTg?iEwJA>KDaRzI2`#;;!xpp7@p6rJs3X4pX(JIf+$_5mVs9j zu_9oBP%Oi~e-W{{%9XRj{O7koVorlAhuJEZdlCO-%Vsz7z^#O$L;6e4;yHlu+nO6NZOyj_F*L2sWn6~0Vlb9eUqgV5QE#IUW+d8#&l5Iet~z&` z9*W+`8nZ8=XIHOs-O~$SG(CNb#8vb+&ssp5(8ilNYj(FoB~K~u;V)<}D`ouHNYq-G zZy$e*ixKZx58i~rn^8Eqe1JLTF)5s9wyw4cr=hT`Y7ML#RKOFFJ3+@C2GdYY%MBQL z*>^MvZ&=r=xssJ%hwX*z4coPj(T=$8c|f(h(!5(*Y=h$pYe&Tonj21Z)8{#kg1XUM z&NsdI=_Tc*r+>7o#c!na_C?w4<`hn|gy?Al-dp5rB#rNg%eXC#M0&y6| zu1`bysC=J(8F*=t<|`QQoIRM%;2g!zHT|9)=pxmY2l&uFzX>DeceJ(F+xhSMkTs}= zZrS7*yD73KL$5Ay{=$zOH$E;WVb@$E7)~G_Re8!MF2i zacRs)?p(r{QinebBBOf_FWtfz9%>=rc)U#_I}CZiwPTgh15n4CTUIH8a8+|jT#_1* zL__wrM@cl}OUMdeS?Fd&!bCnlhVKl#PuPF!kl`$M{4*c_Y z!Xh!YiM3N5x_q_L=w#NaAmKQ33g}y97OA#Q=5wyJRgzSe8J$n)#47VB)oNaAjWp+H zb1e*(7eeI&3H4R7hOP;?NirBJK(AsRKHYW;#f3H%Kocq}LQrl^v)S zXC!!nZ#=*H^i#_~)}H4Uh4oKinM~ReSWA)^YUX^Vy?s=ZhbG zciia9Ge%#?!dYDXMOjK9oRSSF^UTjz*uyR?k4fv0#9^QLaBSG${GANDD7FjnU55Qw z4#01j+Zy)iPzL6=^rC@`FEy&n*?hiP%3%1i6Nhh%DvgE1HDAjWu-zY^N_)66O#yds*f6zP=X5M_$ zT*N@xfAHT9^5n(riC}FIDGNyqjR9+8(No!NLL8~*_OL`s^?dSqB~{=-u%*gONQNY4 z1-J6z*=apflDMsB%%18@>v=q$Y2PtFW>R&I^$h7$Erue}r$EBwBb^dvCM1j(&mv*A zKpdDu&$J}Wdw7eYG$vs@;K`XCBuo{uM*V-e*4+q@FO`Y%CGy3omJWzf(@~8@@0!9Up7SLi`8ySzBp97E6pPX z+%`+Tylj3q_SC3+@t9x8n=!T)bWvlT+>5)^o6LP!gwmTVnPME*JMwdeUQbTn41FpO zmmTbo?7K2l_OvR=+0?C=mI>hdB9T<-QC1 z^5_Kvm~*Xm$HlknSRWG{wmeep<*ORStIgiXtbzRf;RDJQl;QvBXurFMI^kz=)!0U|5n?VyA(Y?0nx2_`(GM8I? zYb@Wk;LYY+Z{u*o`9Oll%zl{EV-&w^9*ZXtR|e-iCDwBdN@599n75p~qNBum^l@oU zB-SixuCv6tMm3z*S}iRu`Yl>)`4p9j#Nq=b)+YQaiPeepdqL5FO1ILSv6UTdwj|ce z=B|qcc#GJFq$%p{jRQTS<7o`-9cjv} zqC)NGIz=20e;Ol>uc4Ykm&qYHtit!0P%lS0j;SVF#6R2dO!k4c%%LT#=p zEkf-&Dg75E)Lu51&p)**q4qF^n)ad+Y70t4sMVO`j!;64s*T57`l$%D@5)4|dCbe! zQ>Y!qLS_d4jsH)Bspq^z{35jE#6*H~#7KQ(6e@@QSBW)bu8!g?X9i z3_`_NZ{!IjwVVp5(DHO`s6gCl?ln~;48G&?{`@J zwU(Tt`{_<9g)b8O5Kc*z|b~45x$9XZ7A_f49nn*dehIQTqIHM6Ao#j3kB+K%btE zq?4r2ccolM`h4)6{n6)1v7Y6bH8@>)K4+dqpXL_n*@;%qrkMA>r|7fYXVd3cyGV>a z7pYRMw-Fx}eU3!IcxvGK)_(Y3>qW7i-%zY*YrCW+&=&od9pmHLj_ivjQ+r;>8m#@G z6NQ@AnuC`S1qX?bqu&jD&fZ@-^NKTB-_i@>>eHt=HG3r^ZmkoK)j|!`JF%tS8{lZ1FM=~UITUQXN?3YXX zRT*1VcKN{`xQ4nl!+4a zBYfl=eR3t{KFPYE>#RGORj*z^7$J)X8XDrkN$w)GG2F6$`OaPhD6Fy>V`1$!nKu-& zk>X7ADt_dRO?i6te6)g+XjrwLX?msgm%C~`(;Q?0ijJY8v6A(yKXYy4hW#NX7xGzXcRwZw*Fe43^$B5^XLh@LTf49=`n4UTVHE3)QPuSSmRV+8;>6hUi&=qd z;{rw@-uq4}BqvnKD=3UCTB&@CbJD4~h70X*G0MvIjLOA|w92=fb}qh$;G`gK3}Ydo zZ-HjoP+f~hIMNy+?Vf7@Hjm=Msh(vxL#}!O8z^WjLrmW$9?vD3^3i~TAI$zxr5mcbIG@ZgS-TL2 zmw~h>6cKt-FA;O<~q*_591?TCG*zg*t#^VrKR@7U2*+jOrB}wfGQ4_|Q&p z+!zOkWL0on7lT7%J9_oHSUs8M52Rz8u?f+3J1y29$!a_*lM8(+LZ}PLKoGYQwMA*- z_@yMY>WRd@q6y7>yi?Vu>~%#^C0Q{g2n?#e!pjaD6X5_eYg-lf*=jbpqe$$Z&PPlR zk2(DaWR1pG9Qh+k{y*Nn1U{-F`9C2EgmVT34T=&aYBVU}P!k7b1~TLg%s>#(C@OK$ z7)3Nf0s%n-3Bvds&93JvDyy!t>&3dt<&|(HfO5GChzodkj0$*gxjO%ERrfpQNC^7> z{P^f(=DqIf?&_-Qs_N=$dj8@jghN};JJ55*WEYr~&wBzLm4zf}fAEv49`j~By+I0S z#XOm!;q_=--P6&;70MY5SW9C;;vTc&12Gk!v{iH(v;j2CLsdd5i-rY*%+XKASK#+C z@()V<=7`)FsE>kt4N~Nyp>cZ&x$jEk^0W<5^uC4Y{Uj;piOx3G0qG>aFCQ!AH_`u@82;~Q?5Cm2#&Ef)F#)4eSzOVuz6f_izaOT~8H9VrIEiEKaE26Si!H>aiM_8y zxAfb&7Gk-m#S{NlGseh0NzPbcujuLG2`g12$dpUOJu#5~BdjrS;n2gx12k(#I!d9- zJkb;VWNyPeh|Re?f3nO*T$Fsu=+#iBB{H|qJxJ19pVwdka*F3-0JT9eW0trmW~r1Q zH90{|9N4=5%m6%9FZ*tKH!CGuOE$Wy2&5SQTF ziZnt`dQ2Zqha6FTAiag;oe!r3C`Ewg8qL>RBSyuOn%dNn60W3+xBDRu70KYC<2+2= zfKT_ZSU`JiM!)Wq4NFb+`;8pQ^)M+ZtW@9xuW{Od4S{2l{VwYGo|niT#MRLZ<3c(l zZGcf438FPtokQ`6wpc{R{CiND;t`)leSdJebqpadcrovb5GVFCVd3szBeXFNxal4O zHI_k511Pl>l^487(?euck!v`#1oSdz4Ow57OBlC22saY#)QC&?b0B|Sz@M4;v|Fr^ z@eRnEF3q|9c5@C#`*L80!QJ-!w}x4_7afQ)>nf;D@a;V`d0C38YzQxDiY;+b8$qQ7b7hh*H{S!#cPNxVEr+Pc&GSmE zmP;dAF3Ug=p4okaqDZq7jhPi*88j0xtOd>tvAi1)**%a7c&MR zcn_EGx6l@r$8Fgc0~y{mmA^^L>!BT42{mDxaYdqCbomyNhZg5I{Bm)w0dAFXRf(@e zUCOv(T9?KZy%D`Vrg4>;%ZoQZzI8hrS3H|lZxd&*aYetSamA&E$x`$k#?@m+Df$iL ziaG%Vr&AB_+eMnS8(+z|qLMMj6+=0earF}!SKD6zl1<~PmPpP2q7Cn?r{1zX%aG}8 zT=5zR#Q*7(KGds4=z=KT1#C(^deZ0kY8h9{sfSXN$`}g*bU*GxIn@u8l%2@2 zcS66D0C|fD3QX-Z@puf3Z1sL4|}y?395WQ|svjfh!uH?U%4p8gH@-1*!`* zEp>rjiswJ1E-d*YU3h?&hhlU=iit8p2$_>PhCK)skPL|zzk+5R=lQer+_Dl2#WT-G z)6U*Y%=sZJQ7M!SqJieeZYSOpQ}s(ME(X~F@yf$9p+764)UE$av(4tAG6FbnfkiGk z;=~x3f3~p{7gbi``Z-K4OogW@-eq=8*lSABd9@@(u@LncCKn>&NwN}&$xSP9S$|$= z=$V*`DFQti+{pl6{a9Lwie@6MM5=X6!r4PIXUX4yY0FUyKUt>8_fT*>Z!*q*0)MN#2QItMbb_#dnLM>+kAG)7HBBns_;; zzU%AOx37uGG4=J+Ti<@BI6tQTFE5i5wRQc^6yH4^J^m+FlF)Bm{T%UfO#SgcwtoC2 zVscFVUFWxc{Mq9CnEE5$ZT?r{;eNB z=0B#s>p0rS{685z{z(Ilr~Q{>>hJogmE%7{x<)6(Kv?lX#0=WKM=i+%1@F`tcspS< z*=Dr0@Q}YcO}xJ_8b7;uYoc}hktRYh^*x@a6ZHXZ_^fE))qQVRChE9S%@h&KdmI3t-(6KV5-E+`omxjsCUa{<+8SDZwJrFl4Z&o|0{J5NC`$2qx8! z(&?;pq>UhFh1^9%qJ%qkKuP7};o0KhRct*^K+c>UvV8H=bBX#Za`PfsusB6U~oyPI!+N=*C4^(5dbGxQ)ojs4V;R(IOa*&l=BvFHsyd`k0h^yNBkV-+@n5Zm+7q!>FLQ$aD?`tf_njc z#+2EDvM7s_sodvy>~rlY&j=uvKyT~Gb@z0H=!ln57DrLPAC7`6@yx5I=ehpWb2bvN zUxQsKwjugWru?+2dAZm3oXxp~k-o+4G-~7E4yT)G4=^tPOw%;k_7n8|mb~1FJ!kuD zz{+m@2?%=|c$tx`nD{f%&K%QsY3$HJ(`Yf?Huj8s>Z|~K`c?0TDw0t|tG^|Vr z!|JbV?81esKE=`Ojt#}0-W!VtG%O#n3GW6pIF{8pmaZ@Ey{fol9eU)~*GKoKxN49G z`2zrNz&6iH?n@}y7jV^;Wfa#qmTmA=i8jSa+qfNSqvKXIv8~uMz=<;DyHO(I?FQK^ zPwx%Q_rhB9X^PVLL@uTL<-^Bxn54p|gDM5$W&QdQkHeXq;W!s8k9_cs>Qb`M5Ytsa zt4%2#>@Cc5EG^5Z;QUgq-yGG0Q9>Wu6N#34y7GI@zMEJ)6Df=~5z8Py3nixni6PPu zLPlJ53(?t7PI_BLL~-o=Mx4o=jwkCoDDRSE-Wt%b+P{K8frwK1jT&FXi@UEf!6W2f zf$yQthc=Tx$pT&;l|Ly0K2G4sej|5OzU()0M^$i2ro$SNc^WC14maW09r}Bi`dgl6 z%kKnuN6h|m#-!zt5splt+Yba65|#@X`5V-C&C}a%M>SoAtLKB>@_V|5_MAPzoRvQ2tej%x6OKDMjbn+X&G~W6%foMro~-$4 z%)*Pit~2S05_Iz%J2)N{`N}{~j(IXHbcaa*h`Qa;xF0iTk(FcKUi_}%d|Ebo-N=O^ z*kuLss@Uf9yqjn~71?1v71^2e9GCdcu?821o~`kj0|PxPMgcv?O))0vnfWi8o~`j{ zu3sJV3W=Vb5%k;&N|7=O>n9~Hu%#nsodep5Mk}e~+|tF4b1NRh-uS)mD>Vuy#*m#n zKv&ePqND#HOI*47T!s@<=hyFW4mhZ<3*cUJganLE!vPa^K_LjdBMIVuQ%;P2lsl~h z?&a{g)=f=m+Tz#u)2Yj3&$`4!I(viz{>ivslrA299#iKDUaWub2@MNt6AvTY5sw$# zi^o4WoEOe)JB2(wT@RCJc*9*T8|DU+?P1x zQCfV{2OJDHc!KQ^BCQ(ilfU!E}j=_6h);g8y#^BmKJ@7u6y?%3)js##gjw zivBCGlS>QA$WU@Q9Jas=^1?NUqj0{_B87%$QNvhw#3OG3L<5V=AdW=+Dx*Rs%UY|A zs1T+5jX$hq0mrp6;Z-gjNxJM_ss3>`%i#U}5*(SYXHW>ABlE3{N@{z~8lqF1mk+98 zA0)MTPu#m~pY6yNLib6c+Z=i+bsHk=0l)4;R3|QYn}7-7EYZk!LrHFc|ja@ z5Cyky8SL1oXXDFqVxC=FmVul_&}1BQ`7E|>nOoT*U|E@4h`C#T3hk!Q^j-Wxq^)Ea%GPa>t@M*sZZWHDfw^UAQt}(} zH;)-dY814iltT@sNOIF=QLjaLglJ!Is*|!f2ZB@6Jj-tYmIJ{%(>b|n_BwDW;{J%1 zv4~>N4SGEZ%XCnwlTJitgHL|J6n33*qZS(2ZY6S0K?feT9~O{5s~-1p184C4YQA>{ zO}~B0q^Tu0`rf^){GX=VgjeB%(4qfhO;~qXBn=rp$ z0&X6Fnt+`Loskqbs<=$N$X zl&l?9M^Cw{eRzY|46bhKJa5}w?Tf2cxkU|b<1iWJ3WQL47^oK^hkv{g*lF2CS!(6`@-a=ln`n)H~+WZ6%(NJMq#4Hw3|azG^mz zv`#8pU2(7@pr@k{?i4>9E;~Etz6>{hm7kbL7kY=f*PRUdhH%;WI@0(c`OZcWhOqNi zA1v=~-dg^oD)R=)%sW_dvrK`UBfPJZy=^~9$vf15p`#?;Aj2@Pb4a;n1mqzJyv@*! zALCE?nMJ`ol6LSa-Dh4O@Nke>lW;~krD)zl-S?g(88k;cvRSbXZyHyKgU>O8_Ps0PuU9k0bk5U&=*f036mco%_C3p}pfcVFmOdQFDg$hWWntm}u+Dqz!f z+!AanE)p+zex^Kk1$=x2mDb(0Lp4$<8!2w4kxHy%1+GJPXR9{c331?8iu?%puKK%n zD)2QDe7k1AgHC|y0NknM*}z&_NNRmSvEy!hYI>m3uOlg#cM&eFbu7gu(*hDlh!f?q zu;%!r5suKG{1Y@Y#u^NM+2lj_#6=sO_NO+nXW3k%HL}slV>Q|zX;uf+Qm>2Xqa>uI zi_@u9WV4K&FV4Tgt*22cX1)%Fj9ADeXbF~n<`0eN>CqE;_K-=3=BlSBs~!y$xECN= zj^`GVZ;9A87@mqQ?5V)-2C)jik3*eC%H17M(%C%hVYSc3EX1m^XEhhxGmd%1MB2FM zu86MxErIyvcvty zk-ghqsd@*4B2XiNt;RC|3RIfFvJ{L;z^D{@6pRP$Fe)XCyA_N@CJYR&8r)4%fbcbL z5%cNbC|LP+Sc@dA0eIHGwy`@Vfb?|)1hmt&o}OSQPI!Y<#IwL2Bml&xSCQcc!r}LU zR?XMjr$l08?cMR`>t#F#qky0TbiWYC4G>d_SpdKt<;fKDWI1n*ET-^&rBw*CaJ?#1 zsme&a4zQJ}6ql+pi&PnjFNdwnBGCh7C;?$0o!0n?Rq`A(NoTn0;HsMnSKXa%!(E5F zf;h2f@BMiRKz@U`d_Aur;~MZwh}WOu738}Cv=-p^*c!P4K;NRgcJh`gT$-_nq&_aq zAZcImu9Ei3@z009eZdin<*di>p}}oPb&^OjMbSmwQ*-Eqo}kPQmqJ;YViMK zntqE@<%HMtQ^;_b+QH#WVne0rGRjK))m3P-4= zvCmmUb_=K9zpueqRV@XH^AWl&^8~9L8cjLv9few20n9`7SORGOLnh7F^b<(@K^b*a zlMU<-xx>DCy2KL+-{C{8^N~Fn>NKRdD))ji7-B>{&XFNXu#1$Q z_&s1fB#2G$7B zFNSbLIR)S|pMZ8~bFu1h;*i!x~?GbkM^fhRONQM5aaq>NeAntjTbg$*IKgQ0&5yQaugt@MCAq_OJ#^-uZa}24|LOnqPuD)d_ zz&_DjALCMqswT|8t1r#}$J*9kC?@I?Foe(biKBWH1PHO{Yo{}ddiQzG8#S^x3583Y!L@v#^i>)TQt{x+Kt*I${$DKO{aH@qib7-GqBgub)>TiGdE5! zk6mQ(SO8#67K^VVKMcf+J~Kfs;nmc!9!AGhuRyFw$T*h+NwZe_Tx&p~dm~QDqq)KW z1^lC{BUD$Ba=h$x+UMBtSJ_qgQ@OABI}*2@@`5k>>zLa}zf8rx6@C5`6-331ehGXz zr-?6`oq=&@=bAEg-+^s@u8Ei*OasqPA2mNGoTla{YI0~E6=9h3a|Ovo`}}?);%pLY#b8qfAB8wvAXK!A|UHBzw1yLQta6d`%=(4(ZU62yoLnX8;_E-3hbwqwf!s%4cm|G zY{HESbo}V7zoVdd6ZvE8%#81(Wv9wau-J}-Jxc2(2{r8afP;^SQ@veixoHbI;aKXV zwtR!TBnEc8mPdzfg`lrrO)QNaJI*?t+sBP8*swvNcw~yIf9?yzsQ_i_3g{#B za=(BK{sVAzu63G4L08-tE?mPocVPAsqr;04r2$p`TNqXE6x8PLD?Nwy5&(hbw^?5p}; z>eLgkCF)HewJ+Nv9n=E@`u}`zQ2Skn{cubBlv_GmJn;;$jb3D9iN2ARXu7i#Zt02l zkz4vkZVm>=GNQk1aqX3TDKi;vB1IaAthQL~PnwoqpHD%}Slip`+6h4i|2-)ECFO-tAFiyc>Q!jFH=tV?^1RSMU(Cts!=s)*C&~3*JqV0hjT}Ar^FVtPeUI8-iCR zH!kC#ZSQtMq#EVdn9+U4jBb~s+;fOWxm~nXqpZg$Hy>k^%UU_gWn#-B9_6yAQT`R1 z0T?B>g;8#2a(ZYSjnYy5cb+(7GCMo&p{sHEU~lkB4EJ=$(xDwP+BufihHG7`$~$0# zD5X6%h?=@%pQnNLdFaW$lwk?t@*nzR|EN!G9&}7-ZAcY0*>vE(#8Kt_1hPTISb{p-;KA!y1))= zG{bUKf66HABIyO`#}6kv?s*^2Ds#h*c{?C0DrY3_aLn6;Z{QSs!ieue*a>9SF{XW0 zhm#!l{1ji+)@`*3;NWcQ$?X%_;AK39XIYBu;2aUGqy7T49KB5)&V z72Va17Z+3AEulgbL(b9%@vCWRUg+{9k5ThWJQ`}N8O%@ipcTK~7Uzyr5jaRCq2xPo zL6|J*RBZ&?@m1o@BTSO^w?8S|XFY4f{clhMOx&L_h8e4Sa6&_xX;X{ov$T@AwDZn^fq*691#?`ukteV>44WeW4#``q#`ymCi zBkvF_ZH?E~fP*xbQB%prQUZU@8d?WzJ7y%e9-fdV$s})u^aemqg65vTpS=NldSiv4 z-^19U6Y73a8%0&!BZ^O##g`bxPp0BV|8UnwqN=rLxxEpOtTof9^(py0(5HVH#g{}B zKS35BVHAH&6`yMqpA%91^AHcAr%}906(3_1zdWM&>$3QFXQ~m8MR8K?nz7GkzoOR8 zJhIP`gnFH+#_hz_pXi+yY(wvoJV9KY%;#Uy$>kKnQ6wPq zm%qr?t8kku;_K}1p$cvkyCUD~o&uDz{^^MkKT-b*xt&BQRACbFg^G>J(jor@?1!pB zS0i4}rx&E*k~tp~7Tlsosj;y(%zueQUhq~7K9t;poWCWwhR~0{r9NEYEkjLwIxcBT zz7BTA1J_Ox@BndMyL;o#J^JBAwqh9* zE>P&<&uXCf&}H2ci(M4p$M=2GeKBZ!YEnS|A)tQ~&`*%Vs2;|aF|zX!qO-XfBtY{y zylW`F(yi%EzD4p@O`nbtOmG_UX;m|GU@s3zpMrZUhot+-3qa95ejUz|t0Bub`dz!= zeKl`mvj#WF#2d~>Knu-myf0Boou4(92tMe`z88^=q}? z2V;gtri=FYva*P2cauoINo`=PBPs-P2pqc}fhL53uSxer_NVGwu(1b&*{QAg$3OWW zE@Y~6R9z2tK;VKTFhD54{n)8~{O`kcO0L>+Ttr()-?d;GKAX;{-d5)H@pnIvbrK#o zb@d?-n~S@h<;f@yPNwT2Kd7uo10{ZqC4er*^oQ_2^#LNshuunOg!8_{cqkm2OIH6E zzu3v?+EPBAioo+5gwIn?AoLMv4K>?91aOZa_sU_@x>E!C2465W5Ny+wiPxGdwY-Zz z2hAY&*=Eja+8X4 zJ*kc=x`0R1bFsTr>mBf2AULVP6ABcG8^9-i+PP*04l*CR+0Og+g#*Fc3-Es-{0}%f z&^6x;_jNYDjKT%dle1wHQ>Gv~i9R{q7aZ&h;xbd*G+XQq-kzp~VG@DuVfCC&Us&;6Fz-7?$sp>%Wzn%ldi4h1ly^o1I>fOr$kT^mefI;oW0lfj*4Nil6 zk5K5wLK4e30CNFIFCB`HNOS!ZCSOYikt3F-^nf}DLz>K+ROKwLvZuT+t+ZNb4DJWH zMAq4l#%y&4Y@<5!sm=jQ2NXEaLF%qd6>Qo5Y`Gp$lmnKAVKG z0T(Zc&dWOCU`rnY{Rn~PlRBr-&-wUCFwif8D>N0b0ef}AT&JPN6OHYvB7qx5ZIr`DM zeZAb3hY}l~2K;x?s%+LV#C&lNp3%+dR4lqjC4-bx{uYcO{!;bEd{t6*Fk*Q zbunBC-vIl->jNU2ihX)p zCP^3$!}$C{Ic^N!MDd||t)Eu#t+Z$&6n+PtVZcaPDFO}e;aH$^`Nfu|Gh_j|%y;GU zKU_neiGeEk0r7_)dM`S4$Hl~QNNF3}YeZdPS$SV{iR^b%f08g1pTHVr?JT8HF2fg7 zqkQce7(BsVG*&D*ES;JWOk|Wu8wAE3$24S1vL#y;dTj~mwWWOT5~4kEd;s^}e5&dF z{BYsDW{_?V5RvC?qFwec_=tWnCpbZd*6V!o@=UB&zR=|s1zipqaaA1pO+$PD4x%Xq z9>Md9WLSak<YjK5M#jz&22=>_oOJA#ioeao32E& zK6D|HW+R*L7TLTL%{QHBw%U|xYY)0~45j`6TsoG@P#XjW%2|I;?BXeH>sdF9ND+dP z14szjWQy`xGi&)+P4cCs`$qo$gz{^}yKf{FekG0K`EmKiz%gmGjmgJRbHqn;$w{z- z`Gi*CnEOUjuBF?y9rOM{v<7u=+)Q??ro0bVj0S&sXhJp{8n{6=I6w~D?!pTff8{&K}eB8vh zU<%)FMf+eOOnI0bN($w5qY347p9Gs0xXh@U^0dIY00F>Lfs0)RT`dv)6d^j4GMVc) zgWn=>c5CrFu(`64_7XaCXK% z3+I6X!g(m=EPiIGn|D!gCFmyP$nh+&FF_B@-{*K<3KAd0$4!E-68IJ`bUx* z0sS%`C16JgTRI$Yy z!D48?!wQv|R_yj8;3Ie!Y|^`&Fx!gZ+S-JDf3))fweuE2sUer$N^Vjof%Z}oo)n!R z)$VI7l#$$tzQ3e!B+r8HW10nZe@QkGKLk$MIO^sx?k^#{IEg4B)IDz6PB;Mfs~c17 z<_W3C&2hLt*3B~_&HzZxO%b{RB4T7V7kN$=$(BWa8;e#$BU8oO0q)u>JE?1J-3RLv z%Q~+t;l6DWJE)ZG8{`L_;KDrGi49Y38*gYhuyj;BUPfBNsC4mXe33MwZrY;ei3W zfPQz_Q>2eB!p792;^n!7nZso4;kLFkv80xakT@tu~2jA`V$33?xuuR!CyN+6+1|BhwhUEh@bj+iP=Z$59J@P2y)uQ-_`zI)c)OQKVk|ona+S?9vO+A6|^4%A4VJM zfU#HB)iG}_J;oM-k8HX|>Ug%j zlwqZeG?-=xI&Ki=LrVof? z5HH1v%J;;@{MnB`v-tBY`ZWG2eZP{BTkl?Mxe-dR3sDNQX{(RYP+%wH2wb_@8Q=Y<#mUXI9~rK zfXe-yKvshf*`@rhP1CO@`(6s-bzmTpwnZd}`5LGjhLR$RM^K`0#0AOw(>2$XnUK=h z2&l?WPsN5NMqGfEIZfQOl_X<6TFy`NA*P+0#X9#agztWknkiaQWiE|Rt6KRO{-jQ6 z=hx)}{V$9**A>q43AE$a)1Osm-|tT?$6k`LUye&+u_Sal5WW(;k)MX8Z$IrGqxE!u z)+({{1`GyWJWQBf$aW8%ONU}hM;ljb;dQtlUiQ_(l579e9gTZHt`@5K+wa5oH^;#D z6~y@w`2Go7Kdr|1q0Ozv_YlMc%+#2D@KwLu?IRqICme%+>Wp}h#Wj+@iUTy?%DHFg zI*D%5bx87p5}Y2%OEX_{_fyenhNi>Iz$6$iKGlC@>!?qj9R?*@X@Izk6%CN!=a~u>p;Mff568_ zo$lijViDFF8U+=HlB$w2AikhM+;}|(h`#ytcK+b&vOWBz_Eo+&pX+@KA6NJ#K1d3f zy5E7zjt?IP-eWGHHkHsJOgu%W+2wd;`y=#Z!5H>~Of_HC>TEw$U7#A8I!m@429n-BV9mPGr>7eK}}1VFi81 zNtvd$9(|4D(OO*M3`eSrV1PsSV=L;Q6b1Q=A$2~R)VP_jP}4Dw%qG9)pWbtJo#A z7h@AECbLQi3IJ&&kbe9EJ)vAInontpbkv(khib64_>erK|B_&hQB^$sMhq8F7;abm z@Wa>7OwA#<9cXb?^ruz5#cW3`V^C!6uYM2)l^ymRnm^@Br?EP2 ziv?_|+ji6z2O6J3+8XlLalS{mq_Ar65~`=TtJTs84b^tTHS+HHdF6rIhm$^vULS+o zLL&+|w~!xhU_?t~(ss7rHMEd;ZikrF6FZloG2r9PqF|B{LkN$D=_6=Is`ros*`SqFg(^KS53c-^+Cx`Ck-QBMm_^mUwu7C z=}$#Us^hXL*OlppzM5v!SDj)RQbjU!eU#H|0s5+@Cm%pBv#FQ(j%+vbyG`(;%_uDE4OOE+6rD=Axe~b9Cqb@|K(Fa;?yUFJ({%k!ldhy7KhT zprZ}=j%3+8DR{644^K{Y~V#rb{GX&Xq40CI>nOsr`{~{7U>)h!t!Pxr%UZl5ghnA)prr0*P!+n<~9AWT1Zv zSMid>ro}eu1OCZv8;STrx!0+u6jqvi4)tb79w~{?ju8+#pw`_#OwlU7bS(@1G|Ddw zrC?-nO`fZ^tP`T{aH!d}b;^Mz7rSwbIiq6*6pml$d@Xi;mEL%wj1PpL8Ip8eetIHe z0Epi&L|FAQGi z)T8gx>cZ$~nEXmAp961!l69+}Kn?? z6AG-h>0eu2>j{lW^f>Z1A_&-5wJJ3aF^R4{Qx;N854`T=lXo(Urh14~=@<4lJU}5b zc0nqUm)_XV@WHjZ&7b8iix0jd_+#H|A!Hz-cWB~)>dT`$EK7trDkN&eq z|E?J>Tn{cZdGN#OmrEX8>bCJ9J7&iYkc!e;60Zgy+Kd$+`veR=gil~h9rNJ?;zPvp zwt^3P$4prS4}MiPI=oH`uMNOP3g`sa;z1#KFc7>A=h9UOvp0AF_NOVGEEc`-STHBy z?^G>f(S+%TY5q`5qtzBDC$^h;16H-Q2Gbe#e~poHKp)y~`iLG6Jc)xRK*HFHx~!~=v2OftqOqn%#pNR&X}nre{Fnf! z1fLF;oK?ZHhFlxywAS)|`-MiQQo)@_#KKW{1 zrJmm>SE&lo36`ZXcl0-EKU}R==6?8DcbaSKUUbi<9r>a8gi^-+$3n^0_Jk7J4`(Zp zQbhh4b&UORoD&?8D(=%55ndWU*G;1F55@SaDp6RDe<;Qefg+Vsn#z+dqp6IyW&P4N zbM)E5QLRP~)t-{U+DYImMh+J7~3fEH4 zK7<{|Xd@>|>X=9eBgA4TWyA*-ChAiO6QPt*{H*yALVb!-_l`xM56>{?V+r~i8Juu< zo7IJ}ub*Y3&viw|pwI4kXA^xQWOJkNVZWJrU&r7ieHKA~Em6b?BF6G%#cRwM)I4!^ z-fB)yp(vdjNt|17_!nCU?Y}dK^LChlcH%rXea@>e@v#^9h@sCfw^}Ii{F_ih^!X^E zj_C7#e2JvbmpqJ!AvAujD`yYmAF9Sb6yuK|&Ka)eh|{sf9DTN!GAEKax8YncM&I#U zgE;TdByl#rZ4l>Rql!hG3uUbjo2Zr|&Ky)U(AF${?%HBu;^Nl`6QPtn{H&P~O5(KZ z^G6`UtLjQb<`tkOtPEmv+aBme%HEX(T5Yt~5N=`obi7DP-)vsn%zf-wcm-m|I0f%j z5G~-<*x^+ucyC_VN_eRvM|R6+2UDWJl*I>QpwGU)uFLVJiZt1+BP(pfEKu+=jscI) z|C2dj9Q%iMAU(GWIYBQL%DQrshHDwBJiZ9?Q=2o>N%_$o^N*4zLEj({wuSs<-4e>$ zApka9+myooGAya-Y@xD<-8tQf#bRm+?T29^9(Vo}25X-V9kn8%>|{-UVu9*=(O8lS zs~e{Q_zFUh*nKgO%+QQ|j!%v%+X8kjw=&gDCww({$(8Lm3{F_y>qsX>ch+(e9{NyC z(@PGMh;@sdVFE!02;Dt-YD}UJDXWLx1ch08fT1yC=K}g^E=wA0W~lrr?T|(&y{sEk zluWgQC$kEEOD}h*yQ8VS9v6Tr)%AL~#HCQAs!>@M(=hH*(CZ|uVL%NcFPTL))nA`P z^@njj0%)<3$bISj9*9LfL|XrL^WtFmn`OR|yNU^;W>pP2cY{?D-PZx$=~~?{Ni-*4 zT}~7~6lIn318ZD=>Lu1VCr!0=IGECLKuo;%Odd1*BATXiX0s?!S3xk6t8rKv#oqo} zN)xx}4Kq>6Pc}#Ad`ne1=)s`Bz4Sm&@k}-8k4(b@_#97>oWdhks6paWGg~CS@Eel& zAag)`Rck?}`{K+L4!Mc{K#N`HrQ0~n*@~R#)mbe~^uwrbtI88S6yu7R=-;9STmO=x`ZsYDBXHpt5`mg%!~KiM&myzx*>;W> z$^@{;|7P`>*f~JvBS-wRNu&ETn2#`@w)(QR(S1pN*D6QV8t}{ry%U@aqgk3=0xvYI zp3NfXN(v}o9g1ZG$l^j837B8dgvk_jR&c?!oM!8_Z5%d|mr*fbTQQm~(Z8Wc05eg` za6S1`go|WqSvY<|4h&bLqpBzR5Xjm<7I(n)p5vbLxKGKSAvh~t7G{sU=6c_8Pb%JN zdh$026~YF}YA{jEhFCY1{4bl6z>vp0yXj(0rYiTj4*P5g%Cp6vuOWZDwH5Z2me2?xJ9Z$PFHzN8P0}pC<~}Om7E99 z$Wxia{tNs5h9Bv@{kb@w;Cv_5p*=4#2f;CIVFdtpGZyLh$N2)@#1`z z!$X~hBOzvA+3pC{F6T$2cA*c3%Pu_5hChQmX(kuul|EX{EuZWQBs<{ZEQ)c*;y$BK zRD@9xj=nCzjB@r>9DPj(+7I4rqP@^Ud$un)X1RC3L9f0$4`iACHgBut-r}4#gTm@| zzNdIkLp(G`{mw*q8}vj>&RUW(IpS>e-ScJ&uttvj96z>=@Igm)fx&=dXq}dOYlc=n zP@_=H&Sfj}5@O%mpN^w_(-CWnJhSZ_&Jj+M%6{A- zU~>r%pwf%-&1ownFVTK*Ciydq;LpTDI|)9`&pD(?JTnEnW6I;09fDF!ovXy0I>|8{ zHzPR)DwH`RL!CIa400VuoT4rZzzKO9w_G5pc3^Z?SEkz2DLd8N7cp>+a^=I5VBjgK zIM@eP)1A;2!nju?j2Ld)OSb^ds&AnTk^Nu&Jg@(1NIDFAiAPZ@SHi z|0N=kN|O*d5>F;shzw>C9t(#N9uab`9H)!VljL8@!h$tX*#V&n*!~`3qYG?(Uy9Y!vx4Z)A4+*?S)QVcuZ|qyT<6#X z3g$;qMpSMd8qj>NNf_)2-hOVg{A}9ip<6T7Ls?x!GgI$HyO%TVZEz}swxXE_VTQ1`Fj zrByND5Eoz+eC_-jsvu{+-Dh48u}&7;CsL@OKjd{Fh)8$8|u^9&yUR zxCSDy&!#-GXp72I>X`o#1}TR3CU=}Z?wpu7e#bEZJV5~31Ay7np6Dsf%eQP3j@yht z^RFosWZY&1n(v`E+wjIL{@pvW_}h3$o%otM;h1|K$kH|vhzL_i$5n$ni0U(u^Y%yV ztBR*4lm74+fBprZQh`wWi??Qgv&u5ktXM-Fe)0DIZon?SSBk@tbFXri-LBQ zBUTZMGzDp3khte2sC0)Ymm;lN7h@9`o0SuATi*xM2m5d;0|e&UF@0bF9-TY2Pzl0K z`rL*j$k)m9vuo+Tl&y!$x*^p}`X?PqFPyK#I(tNJBe_6pL;Ot~4o;?%dRprdTT z%5U_&T_6jImO2&sajF9g;b?!>E-YKu5?P98auI$)8`8L&lE&RGK+zFUZ=lo+`}s)N zmo&lYc_XoLFU=7K(0B$!h`4WL#PuuK4~@LttAzF9l((-}^0PXFGWxNUL>di>KS^ih zjrF!4C@)TbPQ>lk!}J3lvMENYX}^9m%a{tffNJWS6xl@DLje+h;#mBTU_E3AT`t{oDumIDhcjRSThvf^@Dy_6Du~bVOB%51sp@xvgeF1 z0CID_E@?}-vC7aCr<1b~d+YnlZYG!Fioui{8BfSYb5mAmN(dc7%cDZc)V~0h!YU)5 z5W=akltF5Cb1XZt81&>Uga1&SGe-2v>NYrtGG#~ODAL^cSW#m>$$HZsfIUm=peZj* z4ui`N`HcC3ADbHVHPOcDy-2)bW0Qv6eznr)+;Z43g+M1*x{@|hu8_HJ63()qVy^-9 z?KPcW_K5IP6N@SqK>l(0dn4!4;%Vj{V;IH|7Kpty(tfYCRZRXS^WIX-9 zq=q>NTyP{zAH&MAf;Wud@i~7e3SWzlLC*YIh43WdJs?;Gh~9BOk`K`pdN~{qlfQ1< z2+KuwKIA!?=Q`{Ny$z(=8^LXWgGwhj=E>tVs=F8r-4a;Zrou6gk3$;ckfZdMCW|c} zk&0h-M?{Y>Hh*bb@w$9BF7{ojcuc+nTiA>SuGc}#lJ8EVcXZQ&+D(yt=`^7{`L)ER zw*6s%Mcu+cLr9-;27^>LGhmvwL%0viO)j0DT8%5=XMln21&W8{4l133T_$ux)j?_8 z;d9TZn34eB-ce1tW+RGIvmG4Oz2ZIZ?5J)R^_&3Kd3xEx@v+;C%jr2sQAYyqM@v$PoKolB4 zwGbEj>_cS9W!0nKiF8F>J~GmH4{0GUG|1n`!MYZU5?si*9K&CM5K9H^CydW>CHpWA z3BoZqgm(O)yK&veK{{SrwV@p@MV^*|=$)oBpi5|58@Y5HQf$em$jq6HtWH~C5pU6g z&~yQu%fa zezO!ll9jO@A(=SX+#f98?$<{+y{;pU`zG@3!ayI+7C zH)j*EN>idKTokw0pF70qxQFlFT1l$`{@u-v1B6T}Zf{G1uPD9zG?`%+F3w9{1G@oF zKjiHTqlrekQJ5+j6~J_zis;s%bU*op^+{=(zSft80-)dwUuYO8nEZ&~Y}{K)3qtXb zV5idJVL?b~&h!J@Se19oJq6GMq1%vp$NaPwG5T+m^~!|)JdnaD^l9vV!(45T_V zn0HwlO#EavVdor8a3&;70aoZ1j8TWREF`kXKa3&unqJOFJ2#7Oy7hy0T-yZe{sZBS zfQQG$`2^69D{V|n`@(Ddu41QSZjdYtD8`EhO8JF#p0AbM&+vrdMO3H@Uc{NsZ{TACcTuvr3u#u=w*rYXnv80{0|xa;PrNbIpZCo78sKm z9{qn*0DHDWoQP` zfQOGnGvF}qwfqK6*?)wfRTfKioy|*hW)VB(( zr?W%(ZM2C{NpHZsfPFM*Hk6|92J*#|=MF}|J{nh6oo6|%EcVNWm68Hd(xfGD9^@vn zCK5vB1K(xgFp?%6inRszTC7@A z8o_p%*AUwcgYEX7sHD%Rf1FQK#s^iRzD-yo;{@)>)>EDtZ8Bhmp?^ygt|Yac@yYbth?Uok6dBHQU|OThjOr=M4=R9|J;+Qu6rw4 zfTO7lBGmn6RFcL|{t&D%cnXtrELk;v+-9>H%v(by4cR14*d$oiA$aWONPN}hInavu z)q&Ltx!0W9#EN8J(r>Vb3y{}1m7Gra(iY+@T#yQ0NoV<~Pr$GC{x9uBcWvO8Cx7YSjQgUHr9 zZ&$g{^t*951|fhl5np~0cD>OXPS%ArW~1s2ZMkSV@(jWM0#XVWl%gWaA}pHwcEPdw zM#s?rLH4bNItDddHozltM2@J&z(q4J$+}0(JX{gYpae&7f#cE1!|U_(rCzLOkZdvVzLX zK%<kAXyZtR%d6M zXy3+3>PQy0uGnSs=j^@-HDm*0hi*Y0L_fZ0_)`U7zl5CGU9EwSkZY(mow%xM&Dz6gDS8k&x+G?0qi zO5=*=yhrn6sB@oBhbD-V`*LqP_o5#i@WT>%oScDIMKc#6@I#5UAZ?3~NfVg}cSt=0 zIZ=_tle+GCO(xFG_UK(7m^s@c zGD_9rv7`DyjKuG1SAHgC0V&0tq*LC=O=9;dP;@Y9-OyAJ((1;)p_qqj;*_!5*)+i? zFQ_d8muM>41q>g*zFu>6Er%?rgIf&@zJ+eFEfbtL13PMUO=rtjNC%8m8a?>jlscbd zdr|hI-X&M-IW@!V6jEWq*A0jECXpA>vnHgKpk87kLDO)F6JbO20%ag=w=IP@=sQmC z*@!$NXaX2MAUvZ;qK8uc%5k#D?DfumjGwc5o#PMQgbZCbIsKt`C@d%tJO?NKkxls~ zrxv z6WK%>#0>?fVK5DJz8^9|mbV=pf`;y>dInWjz#)_%hEaW)&k*vjwhS)8dt?)}lKr2eAasetEaV{9Oqk1)-YWiKYaADY^G;x6fZ{hVm27j1F z{y!~KE-P{BihE0@PkSPSh4`V{vu)~GFdH#Kz14F?C;@KhKRSovD64DD*%JI zUnd43DQJceSsO&{LYFBNKU_raR%yTh#DGDZ zjm+3nu>}OQ#)$c@Bjj;TlFTue8P&9hjc=G;oBwSzUT$xEiCF6TBaKg^#@}p1ERK_b z2mtC$OJ4uBl0MT-`YgR%(q}z_WJ+j}eYb+}Xsh#EN_3q;k#%tXGBgf#w8P?=2Z#}E zmFr?Ehet;>I5N6Hobuy^-|FPX$U5BM5^k^`H#iC-q~(+KhLNheZGA&^r8mHZjKVgh z0SX4%F)MeCsXQvWGN>b6{3Fi^kn?%119DlP_%K=an;YiE@!$F8SY=V*H#`Ho0wBKh z=<1KeR444{G*0Znn8f@yj{PLruw_OV0Z1*8L@SQH}5#~~7>nSM)b6``4K z@W$3>I+-)Xsg~Pi%!@nBdigQ)ub^6FUk0e8lz}%D`MBZlhILbLnDo$b+obr%YhFlW zPFQi8D-g>jaY_|0Do_Gh5NP6D`w)0W=G&MW8eoHXq?`qTRp;kK+pxLLn8-Tr945?5 z7XTS-8V-d%T|<|1Uj3>U_j2MY*c{~P!?o;sz6JKF7_k4du{*k=z&^6`WSS#lfNYT) zB81zZ6vjYV8W+l<`Lc5rV%jLRDun(Pxhj~VIqwxiG=H3Jt_#S43Kx`PD4blB(xn7z zO{G|g_v^fiFtFdbR#2R-==5uLW>Ttsk0689@UVVCCfrz#7w=S;8}Fu zDSA-QbsmsbfJy8XbL_;9bR{qW)Nw+jD=~7qLCe`B&aWh5pTB?%A44|h+6N)&eXzw` zTofcfvCNXq5!H|WX2Stj*J7&MCE>l7SpqBq(7$2;g)fWlhaJ!zKU=an0#Hc|prtJW zT5ypinO4P>+2)6fVtSKrmoa7wpNwXB%KHpmY~nu+hHvac46jGF^3(rpgXC8F z$FzdU z#i`Fk(%$7vST|o;{qIVv|6R8Fu`pGLdv9UefZUf)%dapK)~avNoB129w1EQJt=Wi% z$+=0E4ooBE1HY5c3cwGJ{q^!8w6lIYKHn2J)2IDktpA`OI*+g6UptU1{ReYi03{x` z|6uCcSpPw@{;%R`PcS?*IM?kZ9<7iQTX0h z1inT8f%32YMb&kiDBH633@k zEcxU5=Y9`=j9C@SAI742gLZ-{!RtJAJ$}_hz8>E zN7i$8{&;e|Ibp2#AJf0qbGn?WR{GaE+xx}*(eaC8@Q3AJ+w!x?A2jMX{6JprsN}qx7$B`$5vSW!pIa+uN|=rGIVT4Zxqh&QmdUKKUe~4ryqHf34e@ zk(IBHsr+HEuA%zxMqBIYu_^SUmJWbxYN6(ZBYun9BQh zMO9|~&DYNfkdgkia(i7?zd!FI<)!5yX%KyjEgLSvJ$F$|_2*)$+m+#U*_I6#0qDE^ zHUw}##Dhr%fEJCO#P$h#nxv!Iis)PU%Qfdu?7FyMGC6Lo6iAi3;wkW zS4r{T3jf+lq~(rqa;*Q}h61LMdK-_y-O?b|UC)95ej4SIdpM@fgOPQVBkaGOAq3dJ zHgP8eFZtJwKGD2??XnoKgW`g{Xr1Xq$`&iSvY@d#clf*L0UZS6D(u-@QEt__3Q@d6 ztqSMg-;8Mf;&EeLn0cDHF2tD0t7qG;8}F;2fT=xisN5f zTxuuw7X54Q-%7+D>0jH~WWxZ{`wM4V%(Z~rDoglItEa$76Enr%#zI!fKp=seRNjzfb2cW>}|>B2te1@-v)PYFP*HPjeL!$HaE`H@~gQjFrOz*()(!Vz7 z-e`tb{4TcZ)h~r;-D5jMmF|7dS$KhW)6V3c_|619X&G^?o7tv_>^UKj_u@gz} zHO=_f9*+T}wFu~&4e|VIW9?9wNZJ63jYt+VA9|YeuXT&5zv`vf`b;GMIHyJb+9~Za z$TlGVT3`7UWtiN9I?wMl5WW&c|DzT{tX;PXAvo<8mWj>Eq;CsXN ze>Ce~d;W7tCYB$l`fNLy94mgUnCeUZU`mVeuX$Ai)@1ia1M&Fd&Oh7vWA+Mj!dmBF zduyVcs#f~fUj9rDocqQ6(Gf(b#54p$9R9HUYo(~%a{Ssz1>VBzOZ|_@AIiUWf~u>T z{c9DC3Zx|XNw5`+8BcUe;U7b)#=Un*D6EAAkx3~(n#J- zN?FLyj@Q5T&WjQLwRispU77uBE{00}HTp*Wwa+Uf6)WXmn?>!if33gMw4(^b)b4-S zzgF>y^skjfHEsIW9A@KhIBbnC5eK{dk;d7-_RB6}ahrc_${xu&mTj{nOVTF=L~#6C zcr=^UC8kgAvY0xvBI}Tbru=K4l@O=c8cd9-JUFs)gSbDs!S{DZcd}z-9d1zi*Y4m3 zBm8UktLnD(?L1RF94mfpbWG(3qARoh)_9r|1C8{rb+^}Led5P-6S-#m+Tbyk4Hw~r z`slxM*xYZf{(4MxyE0siF2s#r3&jAM)FPn3e=Hj=qDOf#fX-|Y&<))!8!iISFJOX5 z^JizTXw2A$wy|e3LwhX-P)&<~Uh5Xmzjmt~3NIkT0mY{0bLX2k2K&U+?+~Xx(@EW_ zhJWo4^I{ABwU4L(@4pza&##{zizHk8TKCta_-}=O?P}yQjPTsttQxb3t=`6C>|gt6 zBntw|g>_*}od+Z9DF52*>w!$RU8!%l!IX02(JwX*X=EmovRQ_Gu5i_{>;c#!4%Ea^Nn@kln$n7j_Y4L+W!BCf6f09 zFk$zvt=<`pnls`K>dk+dsHqUY5&9$jYj@h=Fv0J%OsQkVuU!^Xd0}*ACiRcf4F6gu zs?n@}?fV^aP}UmcS7sNjK_ESMP8|Q*jtO>RZ_&Rt`6?pzNdMXl)u@f$(@gS^Md5&X z7N<`Pks9HIx+JFhf|%-d0k+{}OMpcHIVokaSEgN*B+6Q@4Y*=;9L2O|Az zkK3#B+PTAq*2T(wnx{$s+9%VZ8D9CwM$|ERkR4`-eolT(eZ0P{m0fFp5*?KlPr7G ztbgtGnEF4Q6hUNMpNYiRtwsOZhM{a5kbiBD{0cK6C66CM@Bf9LS^l+-7=FwCwKtGO zrbfJq&-cVX=+pl1IQ(nhwMn(+Zc}{!ffc`& zjmjm85HA6EQYTdLoZf9=c7(UUy} z4aDP*Nwe+zaqU0M32U8y?HVLYq^WA9e=T6|7mMi;Zy$p{EdQDlm0R|&eZMIhuiw5! z;9KMm<>>MfkBoD zvKSU6NQ5XVk+=lol0X7yU?NdKqk=?HjN%eC!MFz#gz-2UL`B>{QNiU^1cl&6ScD)T zh$1L1sHi6f1VNES$oH%2KFgdrGnoW^@4esi=V2yumaeL+8D&Wd54aCgcbQ*?TMHpLC*2Dr>m)p zTf$vOuMx6sj%{)mm}>_(zSieFTYT-?)%G%7gUgVIrpMQIbPq=Od`RK%-mxM45P2Gd zh`ceR%xl4A7@>@>F~Xqu+NrX*Y2R)@anse0xPI;Tk40t8!hP(8*?;pN6%UZX@wIoX zW!azT(ac;@AYwMv+Rf*iW4NFo)cBC%+v4oStWkf09+g8-cp0_f?8fOb@wW4Itd z+aSBfpoc4TQA9woP0TS|5TK_+0JVq+Xk3dhRl6tzP*rRs9$ggU6kls)g~A5pPCzjw zq`viQYp7cV4F=D4D9>_orCX1$P2;{8A-*AwsYL2fpOXq%Rmf5({Qf)5tnWbNHV1z?h$NmB(!11+N^W^%qvx~#W z*X|7gd$%Ll@iUAdQi`_!S5`D8acLn?&UA!Q`m-ReM0@!yX%%j~HrOf{syV4hSIzJ4 zHSB_8eC;VbKl1f!+n0jD*7(|(6?Tqa`L?M&O^#pwoWYtB?Kxt9aD1(c6%Gr0C%`cU zekeeN-5>hxM;0Qu@YnNgg;~_c$LaC4*QrF<_}aq~o+;-K0bWof)FHm+9%>c#i1D@7 zoK!YAzShZF36|Yo>XLM%Mttov?9S3v>SPMa=-@AW(tf|0) z08I%2G&&-n3*R$!a}XdU1W?C_fC~QZ(>@pp|Frl z0u)oi#QWjnYj=c{ALLM;<*W@85FB4S+ghC4N1J3{s8y{Moi5^QcaO1mco|#PP@aXP#uYKXcG*@Q8&G`hX7Lm8 zwRgVfn~1Ny#=p$?+G{`@IleXmiGeD#q4-{-dFk8w5AiiR5uu7S3i9a46A|(f6iUCR z#%(+_#-*epMVr(4@)%DC?E75^)|?JTe6j_uvydb7%zm|6|n-hV9O3fkMd zHR|Qu-m@+;YL%ij(`zN$d+e87s~I=x?Hz|&QG4H$p||&EO@l=wRTR0wD6#=VEy`y) zG6`uw&7`JZq9HH2j%$^=S5f`Dz;PUis+R4e_C~I893f2+qOh4w`Zlb!q}3>iwxw_QO6s-F{b}nu*lqOM7{HBV!Bwq~re{2NEy(S&vFG7xS4w z|9r;epU+Tal>it?L#Dby0Vg;BzCDA0ezK5(GE4mPnUntc3?VQCXI-GLh|I2mxU0`0 z)*}ro<$f)rEU(%-$cJM{tYdray!QWQd+q$5)WVUq*KG^_h4wm501eY#bG{z5Oq=*G&RwnD$EJH5H=0V*7=(*N8fcMR4q2 zv#!UZUS@u8%GTJ1N(SP($wJVd zm)r8C2ETt?FKFIC+|Dxv5{LI$9_WnFL_T#`TeGjOj!u_t{qAHoVe7QrZ=o)%uHkgE z#x^=Xe%Q;OgOjv^%g<|2`PXrLOK|yH8&tk4lKuym?;B-#Bd05Um#6Gasv7eB zb8(j}o^KRC&R(2Oz#ZDT#=%d`bMwiUXX22hYtWM5_6ptWlZQT!-^WMm=!Y!5gWPtU zm+cMqpL5(=mrs7fK^{1*v}|Aet*4`9k!VR%a8mt*eHfR!ZtdhPtLnw450Y286yD@Nuz8F9t-#+!~q!Mu!E;bS^N(5)LWz@0!_@4pyKO=tZ%8Y~SRwg9W@f>YttkBa_n5 zC2mKn?nPG83n2eiNJ9P@-!207r`L~H)q#-Sf!qObBA2IZ1<8nBzV1z`gOp+}f2^&% zPsLGAfI%mHqYrt}1FjT3V3{n-ori1jdvjR}0+~l&=mi&}7hJ6Of`OJ^a6y8WkIae$ zoRF9Z#?Kh4w)))*MTxUW5;>p&MML9sMf+q1C~IafNregPN^c>(;|o=DCnE?+2F=5x8@B?&P%JJiz!l z+I*|_c!^DYLL!#j+M3g$EV_V0nAwwY7|#vh%*vI>tzD;|cUre{Y}q*_u40^@gRvu& zDFtcve#6>SCq_V9x65pzY`-&xJEj`^cRtfNHh^ezf$GpLw0oxi8zTRL40@dpxWqW1@u z7uy7yqEz?0QucH~oQ|?8U?R1MkS9ra#cM ztb6qSz{S1)%l<%|q}TKZ%3eYQ+~N<+y6Q;$fn#6RJ9EnwN8%4`eCeO^2UI|+K>u)S zcYM?s^}_zZKmZBj56nlWt=}Iw_C=P*Aj5J8m$Vv|zh;R^QL8_&>=Q9VF;`nv-6M=Y z(8mgiRo#C8Nl~Nq2X@XD9e|~n%im}#AKo9BFUy+#KuoDv{`OI{{y=VWL;Zmdr~S|Q z14|*|hFxKQAmfFgW~F8>m;~@g><@hPyxw7}mo%osvOn-RfY|(jqpUS$A)h>x zItiaWRG&Yv_C*VuxbP5rVfF{E*%qBY@J)KKKk(B`2Y+BaZkql;XQDrXKd_>f`PSj2 z83Tkr(4scTAGp4X{ef8{#^5nIhb=HRtk52zVw#`7%kbR@f581cK+KbAN=4*{DF_2{ipnay8ub}1J{9~ zM#cxu1duTPz$|py`u&0bKq~C0h!I(fR`!i4FA!-gxAH&L5Zu5jVOJ`vdFu z1vMMahdJ8j58NA4=9%C!R)3)Fx28YvQ-Mu=!XJ44D&Y@IKd-_5z!wOSA+%(P4{U>E z2iK-a2xU>n2W|)WBlZVAp00P;%0-Rou^1Q44)aNrqBO}UdKKv1Lf2R;ZXyk)Pg zF#7`|zK+fxSj&N7Gd{5KNe6$R3O7xE;3#UT2>!r=ADM3*I!}}S!2TbC{DI3V*&mpi zqx%E||H^Lv-w>f%$p#4~zK$AbPZgkZCK>O8E_yeA&MN^ypK;VfU zq<^D}53GMm6gT~W3+%z%pwog?uF-T|C{X1-vYLD8k4sFD6aPXGzy4@^a;t=}IwG?nEsNEKhoC9VFz zCcI_$2WEY!#|K`i3>P2pSRt{h3ot&@o=2W9ST{{bh3OCE*vg0Z2d2uhra$og%?*qX zq$D)dA9!xk|C~SY!V{J*#Qs3yqe0D9t=)H&%^$caq|EjyL1nD|K+G4WKd>?1ras{h zOu0<>1O77`><_F!h%DG2_#BdLChpOowHEpcp`G z{=lz~S!&9iq@aR2WmNHj|AZ9oZ7zC^t`qHU{6iKR|0cQfRe+ zTX(ZOX@cXKse+psG*NzxPhE%o9cAJ?PoCy{ymQ;$s|7`t@LN-!k}N!QcL>hT|`61pbj>@PB@F!}0Gz20?qjski=*IM@HNYa5Qg z&IFB5-pBQ6C|HlN292+&5zP`MQux=BI1Cm0(&8#HG)^L z@%lB3z5>2d!uQ9+mU=S2i15Y=jQ~ej8gyUq99h%OA4WugPWh`lW=I z&ubcrZ+Hm4tG=?=F9NlXoEhX&wd zza%yU-~BNsM6X|7Y8gF0Y2%Cb*n@U{Hrd^P`kfILUs!(!t6FHBM(h7Fv<@NYf6S-x zqJKbvqGIhywdrKlyz*KP-Md>8!Jh(r#en~g-(I~RmvQw5z#Fu|_hM#2ch@4r$4VSY z|A-LyJtX~DU1Wn_^J=v8QyfU}=g-M@`g=(F^FrYJ4@OIWvH}0`5cp$83;rjEz&|l+ z`V$QJXN1CED)^61W8=>%%mGBlf0O==lkEIyD&dFHe_hn@P5O&N;19S$@F$f17OynC zeLIA}|8bOnAKJdJ%!w9$n!*2f90-vu^tI&^OmO(K*&NHuTNXQU~JKjCG*1Zp|8p;?#8Z zYSuY3!~qe=3@u*ja;T=u=_dFQS{xu9Zmw~LY{cyiBOV2ro+wYPINlG=}L8c(}AC3 zQyp$jcPgIhbdy#u+vSsXbq9A$?YC+Kohoh~*vT~kpC|Bn4WAQ~POkR{b#l$d=Tm&@ zdwvk_RH59X_`4B*f5zW+orh>pk91t`qThDDIz!zr*k;z~>%(s2t%UoP>|c z6HJ0Zw499(mAe|BJMeiJpIP`+;U(^>;H_sSb~%o@cgv>ICnR!y?92x^f_L_%di)}B2kKIFSf4=wim5B z+3m%F1iE9j7aHIB2kgbdyXvzSH_m5!QIXr}|Je%%ZSeo>MX-{o{D1bs#*nf9XYIv@ zNPx4ZVur7i>n(g%;Ijpv5f^lFZO`fC+JsLGe%JTBH{RKWa!c`k96lX!oqmJm^9nv6;`13k8a{{c zIeKU(S1)|d!RJDJ#^Q4qJ{9=9gwMP9tixv;KKt=$16qilG<5l6i4vNKO{7 z|8lq2KQ6)Rzbz4YS#lO)wnyZlp>Tzw{;H_Id;P;o74>7SB;`;Yk~}o^+<&5no~_l! ziaW8MNyp&MVj3>IM`M+&!0mNe>Op#C0KJmFvbbfIx+ic~OzIYKzw|>M)D&H-Zql|M zO_m`glQtl()i&@|f|rJ?YqjNkmA2#;cgutHg;W=7wQj9;)zL(kneV0bog%ME1(1t8 zHsex|%O(xEY-p1VvOm1n=Mb_vf%>8o2*m5S#8s?k;*d5jSLz13mj_&>X?327X}Co> zS8y+j@41RklhmCque%HKPLP*J)4P*f?y9SFgMykX*_B}cO$AT`z@D~@q*wyjCNCMl zAOg^W03@0KmdZDD3g+>(O9wDZUNV4Y1OSuCuA1+#Gfq}vf_y^{609{Q0 zAKC!CAxlUAGvs3i(1ZY>0bMm)ut!_+;2v2(r{G3eLISwL3SdbK0Dw5VYMwFyoWpOF z8qIjJ1SkOr%ZLzm|^~!1)9KS)^Sx@R0N>ylVsS zs=SsIJT2idfWvM8z#>Ce&8EK%0C&hYbRJwMuO)!XBs>Q20Rd=70G==bq}c!@%Mubm zC;6BG+)V)5698n9(yQ=Sn_wRN!q)~5Hp@!}kWK(P5P$8=__Dl~6ikzs z4B$X>0O&{nKEqyrDF?+8g%02vc`X54EH4?rA_8y>0eI8|a5}#+-Jl>zUP}NS__9uj zatQ&TS&*6wO#pjZ6Aw%PKk{{|E(f3U! z>_yhDN^CxH)vQCl1j&P2BJ`3;kTuJT#}Xw8?Uq7@1WKq3L~ zngD8B2J>JGUmHwZBOfyl`VfHb1i)O9s%J0GvPoVod-q%Qy5YJRt!}3MR=*2JkBqc~$l#0L%U|cyNskzzBIQ0Sx3z zDF?3*fL;XPeiJ~F4M2OoUZYE5oE1O;0Z1kQnI?cATM!S{7)<<(uj_OG%jG3kp%(!- zkpQ?%058}8JQ@t3Og?4+KQ{q@lL)}#y#^1ilm&DqUKk9ZKVME4qWls8=uH6bH31~b zH*^5;d~NU`M#5tXt|kB{6M%C~0N=TT`@%ZDp04wtiZ5k%?m+-fApn2>X;k4k`G!ux z!@&UV<4f6$Kg0mQsRZCX6Tm3>h7KS{0+e!ao`lC$c%A_CApm!p0J`!UsYWxl;%h@A z9cnIW$N=&QKnelqX9C#5Zam_vIx6=tcleBLMsUFnI73zhN4d2ZI6J#h22_ z`ql*ieF?xq6TqeXhG|&5!2r&-0(h1HAX@0E8E*neumN!Mwb6|Gn-LEr1tSRnVoI)> zGfV)R_zjbSm3(b5vC;~l3jsKT0Q|AX;K38JfZmJ`1OvF8FQq7dRkyRQ@=O9S-vls% z-+01k#%y^l<={+t$*nM*03aOZs=3t!(4OBg?LsVH8|MAbIO2gc?|B4(X4z{_GXZ?Y zZTYZSpZ!;fuona5e#W(*$s# zETA(nGZ;W$D}cud0H%^$H8+_6;`t3z5?#Rnevh@t!Egd_4gomD1h9_ZFaa#)YlDe% z`BE~m9Ra}c0j`?uzZ*PwSQgN$aBnbxoB2}8!G=QsfLSnC&1)ur92FPVu` z2*CLS;CcqIR=bbxP&m6LkM0CI96kmqo-nVLqLsgeI4LE9NTKUoZQBF9%JSH*VwGjC zR#w7mDk-Z{Jk9CbW4yekvJ}JJBIGq(njmK0ZhD(mbRn(DYOUR_x;kWp#T4KE&0Vo3 zUc}FN0WT{)PQQG1x(P2OjMs?eq8P>QT%w>o{6d(;203bO9&i$(IHH+LkQViGJ0%K5w5MxqV(d;h$@tl4~6L&(y^Y=s#yl2*K@R zhY-Gf_FgR{+3Y__AFw1x*MFvQI_?JdpHhj{(mo#s_n%KN0CsMl_NkHE=dt8}u6;I- zacG}mSicmtetSYf2x_0Ub_n6y=VC5z?LRN3H=zIg#d(bz+&){c5>jEd&lO@(lF@(e zMTo??eTq(t+&+KwjMzR1*q3cDFqQ@R$O8RN8ULECq?I@>Wx^6xqd7q1QwQe3%z4V& zAP(=v5w+gl87VT&w5NPO-cQ}3sP|&ATOI7xP(^cdy~>m3SnbuAdDP$bVJBpr;>XMC z&=j0Ug0(w(#_Hl5DgWZ4WE9d?Tqz`Cu7toQ=hHV?c*~Qp+J^1nO!}){lBT3zk|FaT z4oY*^w)F+dllWO+Xo`0E52V|Gh!7gcil!-Q3!Hz6vrW=9Puc0HgkFUcs0!IkfD{Pc zq%-TS`slyjq`#Rgo?=+8_KhO`IZnVFLi|&Tx{>LRJ=RrL;%-?yA_r;gbFsM&jljlJ z(aQ3LaM2nvVY0uU%lsRdm%4$b<#D7m>Rb&_+BCqSTjwKj*>2CtNOZSwNhVI^>ae7_Pr98!0$q_O~U2>*I*g-yV>K&HlFh#K!RBI3!+l zP@XzJzMIDUu=h8&#BTPtW+2_dibeGf6`}Xr?0zy!K`+ZJhRN`GoTPdyO5yC=tV>1zF#B5!YG4tv4e^GME#$0B)!JxRc>6X? z!ZZ8ZTd&l|5u?9#l!eXymNdIDjrqox5&5wbI~%|cdw+W}Pq4!5Z+k^+=&ENWFRNfv z|2jZWe=8!EIQF;B7#T-r-zvH`xW65OTiW3MR(Xj-f196OpEk7gxA77}P=9+XsWB?C zN6e-Z{L0#Avj|8x9@haPt8u?i z8KbYQD#at;n6G@Q-;MB}Pn{5tKRLaZ@HP##%BM~#r5hOMxycu9s?=3yrEk9HX1a4+ z>ZHR8v7+Jk0LyD9M*5c(TEe4 z6Gh9sfdMhT^s4b)y=v?d>r1OFFKO?ev#V|mBG(V)3;;i92gt`y$;fpwT`Ss2g&esa z6Ng&yja3*-8Bt>FQ=vL3y(dr&c@$cC^f3)bwC}9k_}4l^Uz_YdS`1R(?^Pz%Qzy-I>&F$i z-L)#Bi>iEzmJ?F`@&|a^c$DQ^hn9b+A^6u04XOWw4Z)9ykC{$^`M2efhTzW$ zDSxmXof7Dew*DdIhfHY*{tri+v z^^^XlqwtpO$H9K9ih6td#p5`?x+)xW0-d_#w$8N(znV7rG9p3RWEk3(2ePE0y>e=> z;aF0@hU37YtE8dL$EeOQ9J+pW(l>=tU!`cr`t0r1`+gxWg%R|XS^k?LA>}6ven%=_ zVCc(dL&}dkUg*n$2>8iN34J>%q`W#&;OC4$&iZ!3db9|EI6j~xYn?+tXb&+9%J?^mj14j|baXQX*7X)bKJ(jQZUZ0&GZk!5^Hn5!RmM8RgFnDL<}U@Q1CkGk-FZ zjq-=Q_R6eI6!?=P;Ln%kQ?w64${$P><@2K|e@{sH_Z}DY8|87HY*2K_*6m2CRKoT4yO!`FPGQ9}(#N3ukaJH~vX_ z;{nmEy}@6ePkK4qPH+2OcK#-Szlr*^V1hgzjrbd{4HEQ%BSYhj7Ch4a7m41zS$2A} zX4?51f!=9+q6oOr7_5kbl&|e9`mfP{9Pm@O5cc<* z0rvj?nk*m5zN8uDpA9L$`W``ln&`jAda_&!naJbOM`FPea$uBXs{0gD_g_*p1^pJ0 znvb=UCUteuHI0!=-{U`?^0~Os4`}1;UKzOInuj%bwD|7!t$$hiBRI812Rap5oNc#6 zDXZE?CnMi}juwADm?-jE6jEM`5>!2R^fLe5Fh*Drn6Ci%+jnAza_BqSK7X*!*KmHl zx;wF<{2KIKBz~QUrv|^e;=<%t8(bOudJ9!*6u-8fTR*?b?{MZ<_2giFar}X0%g9ez zps0&DIF-JLLRCd)(*bA6a$!sjBhTyCwP2QhUKEg zZRn&@OrL9NSx;AON1A4jzqP5N9H51qy15_YBFA{(TX#pIuS*OL;d7v`9q!xd`;I!INnh#b7W#gi7);*) zLEqiGboze4P>S1k!uASkb?BfJ>{P^RnPoAYE^t5c2*orooSQ zAmABu5W9MY6e@B+Vh%I+o@1|hl0<@Y`y`S_?MRk{6!JJA$urtyO33?* z#|w7l8AwiHBtsx5tBQLqN`ahdm&szpcd@j14w@1Th^1Pq6hGb#KE4nlWt2TGr0fm0 zvZ!66w(u?w0ojCk?aGAZB>AHaWdpqe{TjYM{8bX%bM^jk?a}0e zSmnDo-QECYw}?0e_lGZDv-OAUkoSj~?;BEN_J03?+d4H%xQeq%EmXQSYhrzO#*&p(NCc6I6 zCZudvTUqW8vrCNraKk0UO0z#aLl7eL2Sr^@8wiGHj>x2}3pi1`0v)6fCYlU}A`C`e zg6G7-N~B%*qF8p2?A$C?yx9GbMk_s4FIpU@(2j3L{zWF1VP=|3I-FeDMgorqFV=7Kk^#6 zQDXh#nX)KJu%I`qA@puq=uEGdb}_Wj61K=?E|-t>+*Fj5xX1G|Hh@^xaxOemu&dBO z-vN|kRzhFk@$(MSU)6x8t^SIYw|3h%U9q;TZJ~QbMtn@>JJ^UKT96lWj+FqZvj|o! zf1o~ATxn^)o?Je=)S%}K5fzNC`KlKYRBN&itNqc#E8bUpbr#lBr1b<4ovAFk&-S%2l|}a;TG1xD)!6k$QoXg(Y!WU#I;8Xmp`{;` zr7t>4Zs1(4RcJ%0kmlv@0r-|<&W72;6*v7G_AmjR zldP6$4?A`vs~){Q`~p3bAei>B{ozDX@X;yM+xdW!;Q0ioGPZ{Yj}B)KuarnldpP6hZjqLrac@EfRSATt3B+<Anz!cX)Th?cv#1*zKWms$j2a4+nOoQ-Xr*;j(Q8i#J~7N!AZGn}kab4Jn-yTKePf zMd|)c^=6r?J%Gj)_HZO`(h&A=J%NkD9v0ootmvR@miBPrEmnKjX%O4Pi@uija1n-I z725e!NbASnsrYV`JzQ|@zhMvE=$yg!aO|DrB}8uzSD3YG0) zExb$T@!^FMsc8@2M7%As5s>zcaC>;tC3bt5)=RM0w1-bX8g2G)%(n)M6%a@)jwe>vKR#S^ z@sZoZ);)wa-K-t#&)T#xMbqn|nEs7WpTk}!CRyy^ zh7;^1Q-Vvz$daoLbtLxk`0z&T%9ZvI>w1Fi;itFJGs7Mp4dZ7Mk99S|9t*S_f9uUMR~wJUmG*EdHM6jXRRk^ydwBIYW<`gzPo+JaeZAElw#Z<6 z*ngw6hp$jdpP`RW<`hOkEK1FHpXfX z_ouNv?E8tdhtnxGqIIJ}S||Q)hi_>QCr=4l&a;Mg8}y(x{)viz3hfKSYB)u0f`xE( z@ru8!lbl7i&^A?NfK&3B{*`*)v#q&(uf@rm8!CQnYV=|vJ6&PBm?L>zn zy_`Xcqf2(`D%)Ybbx$`1ejJ316;X;GD_azGD)077pPB$jn5ps~rIeM?Eq854v42dQ z>Z=t!LqbAD{3;WzmTjhq4Iny=&$22y38~23+TH6#+rG%Hq+o%m63;s;%J!c#{%A#& zg=5~O+<|qum@L)r%!{eZRWc^er#dNW8S@HRaV9pwwPyj}o?J!`14^l3`#gR zZnbtuqZ;m0ur@Eley}VK89iGm!-2%L9&yO%%%`bN^rrtk(KJS#&J=a(!*!aoPSk1r z2KpORr#|ERq6VUHOf53HGzV+>Xe~^3a7FZo?^5Q`x{AEuo4Ar(kTB39#NN7Gw~ZB8 zw5HJF!(509cI!!Tb3T7BT6tMa-8X`~jDDuk@{;vbbn^1|TEW}XKMmpSKPfL86D&2g z$V=;A8z3)*)1#A@WLc+t?hF4vl9xx0v2f8rzbtONytIEZI(g}eW7o)?%;G*7#M^&T zUS8^Gsi{R?j;(Egykty^PF|GNqE3aMg!F;`+xlg62MZS+?V$ z`#H2!6jbRpQe3r7PabB zu||nVM;cF-KQPp-ozVU`S}mMT>p?E<0E;PHrIGn1W&2nhdNKLw$G2`pQM> z&m<+YosWBGs8QdojBpoi_J<3IDkr1L-&C1ZzGVqjdE#DA`2>PCv99QDxNtt&RDkUa z@U6DCZt z27f~3Vb@}lIY}qdHgR1ZR-93fJj6Z2tJ_%~yr&3xSj6D$@}Ra2FAv>bHn^6j-G522 zJp6F7sQ*%39wuNwS)V+-lw;JF8qKTPMi(>md3nUa-)&XILm5VvP6 znsQlcm8CJkYX$Nn^R=t{GqJCXYMZECbJ}lp7(6c{V}rd!KiA>ZF-RdyLEOjhvzQ8b z#PP<#4My;Ue6wlOUXM9kCnP$N+6u6ix+6(+hBbS++@CU%Ha*{vQ~>g@ar#%E`g@ML zK1a<<@Rl8P-`X@sjrXc~@gHUrg7j~TFTkqTKFfQeXJHK1;>ETt#(upeO_Z`< zV~V#gB2u)a)DvV77irOBDL>Cg909J@#vi8oZmt=IyE$0*D)G3LvV&(A_h2>L`YJ}S zN+M`c+{#2y`>eH4=DUM|&zt^L@hO?=29P#KmZbgOM)9_0@zkoCZ?GuS3Im8wFFsWu zZt(%tY?WB=9Hu-ROMCgW;$fnEKgaSI@$38v3@*@KJj&!wQ9F|}5B=vbaRz%gw$z*v ziezB%aDimFKvH4Qca8~v(PT)X*58WZ7zo=s6HCuJ6U#biE*mSn#iIn4dj%E)$v_K| zxsZ45n--R8bf;~X*zr`Cxrn|^bbmb)3(*vn$_F~Hx?VK77ovrB8;(Ys4^-GKNvKGi zG6|EH#A!!nU~r;VM2LikR!Bji&L;E||AsIH;vQW@{iZ2%?jRUot5ZLnbHBek%KiRRW&+*u;<; zieX4`Pl2Joz+kkE$84LLJFz&}R{yh#PZ8x_mE~;pw-!%FacdhYwld7v-mh0ZvWabdS{1WIjDFhu9GL21zNX-|K#hvL{=!qGx2SDr1u&v zFgQcIDGY*+Z491K`;$F{HqBR5Xf@bOJ|jRVQue3Iwij9k56>h$iT1$Yp&&~d7VPwd zF4W}EA{Bn3+R&#W?0lK24X@0C1086cw9stt%zm*gioHUBHA5fHYi3ArA|%*T z?t=1T*V~trrVa1S2H_(%2&=V?`-Ou17AgSf1m+{OI_d{DYw=*Q!&2--tGg7=K1X0M6l z3Puvde{b;!QIjiWO@sw(QGA|RgGHY4HdguzG`pWLmEvFM=hnKAQuLu7 z&&hfS6fwfcvR2&ATJZ`i25TKA@;P8a<37c}gX++)c!;ROH?}$iw?e*lsHvq2dMmgy zO$MDC3OuLSCxE-4k)Z=+hi*~K`a%fkB36MjoS;9r+=TueI;K^U(ZzUXOchDZ+l8x#8>DaNx{uHVl?3HKY zG4uv2E9k=-p$``~ap2zBIOs+iL!qnIY0bL{2OaYt`83YHg!qDSHtVIb<%KlJmTurb z=D*!Gj~XX}|JFnjPv+L{zb*Kqe*f(SMqsvn^!}SBOE%Jf^Ui0nYqbA%hhzC5|DZtI z<`PZI&WOc7SToC%-bnu2V*-ikAB6aC_ggX8{I?Z2Ye#peBKdD03M@tswEAzm$bUQ5 ziX^=MW>Hn){I@+oW$_K{{@dGieIU{tVYB;h*X?HiZNr-Y5QYDC(%aI2ltMX#@!u3J zi|{#kS6`oRwvVI#c7gDcvIG{heS+G*MB8@Q8UEeNO!#Lwd2hW0{Bk>dtN(QubV-Q& zCPyc=diBex`eyyD<-_@J-QEdmBdh;L@e9oprc#r5dt!b5+l7E$kN@_@A!n{#9BXjx z2>iD>XE)w|yZS#YRovdr{@d=q4GDJe-yZ88L7+4|py>U#m9k`m{kK!! zi0r@Jn^3R+b~!+hQSWBTAM-2Nb12Z39TZI+2_wl<- z$3kgZ zU98|%P_%Qc2z38V>u0utqyHwI!;FZ)OSG-~E!6A4$9-S|-wFj~bHfbxt;`18>b|Ma zf3|XG6`v~Hw^~`wB7Yc(v?#Wg59_}jH_We-ProE!}IuVDsO`9&N}_O(g&Au;iq!qOATK4>3nsk%af( zEUGG;|Cah{kZ)l3-~RZMMB34Rdqrda?dX>QAPWEOdLUv0QVQ*0`Y%E4ldqK%J_rBp z?o_jV9R0Uk>0b#fX8VN1-;NK1q4Po$L!|iIQdtkZZLAJhr1;xOuQ}G=T0ETpHX21O zKDO0=mgf&ZqZG~R!EaTaqmg8$Z+ zXxHcXL*j3r9~0!ijrh5K|80pt*$Drw`HNBn8XAAQ2?Zm?-#%c2f0Td)6i z+)LC@MwbYQzkRzaOdaBQcXj>ow^5A1G_t||TfTOW6@l(zO+LkJ1xNo)#@|Y9z(eA1 z-JGBw^_B@eQv7YH4Z76gyZ<*qyp#WS=J)mcZ^zFNeAc^1^zpX>S+bGww^gEe zqy4x2j^%^=g97d99VU0IvuC~vQ+gx$Z|!F?cTE2v#D8mI#bEQ_nsqf*R3!iHJb@*A z{O#H8mTH9e-z=&sod0$kP+5EfyZ?4NA#(QLYQAOv?V@J@APWEORaqxn{5+_A6m5B} zrDB%&=*W}J_Hp#zWc+Qpy?uhmO>u`EN5&*3w2+|Bc6+kNoP)wB}zK;uc~4^i!tHFjh|Ur>BNN@P!Ch9iji0+^g~a z+qUUudpO76ZmlsS*dhMb9-fbw!&^`5r5^vfe*Z1zDMLXvaQ<|VEZN}r+Z!kt$$vW> zTd)7NMaNx_|29AqvJ~XMedsrPM_20^4>-FERU=&7|2=U*JvtqE;A=~V65#w*q+UgMOzbV=WKUu)DkAU_E#C=v?JFkmtr%e2;%G+vttr&KHF9Y6zaquo#>sMxioZQaHYO_n zjrHMuKRIyksLu`Y(&KL{V}kv+V~8=%{u@??CL>{{+lMvMi-wQje{nd4$5VDCW-8udywaIv_q`QmT z`1~&O?$LND-n?w;QqF}xL0H*fC&ESQ*ko`TL}4&iIsR~McbOtdi_d# z&0nCIo+{}|d@ZUeRV$(OT>< zq#C+$yrSP#8!KuFDZx!NZ0Q|n=JHNR;_9Wd_IMEzWa&cpiv9^PScjC1JHsJZFi=@7 zz^y>*m-hB|Y3pN7HC8cWJ-g4ZBvNfSO)MpeE!&QS@flSzH!Nzi-%AG{U~9wgxL*l= zp_gNq9>Q z;k};`aIg6haJ*RQm6W3nj8~gy_RC201gJH9^4-)8+6VOFySSIFCT68ym3Yq}>MvL! zPRA%DR_?~Ev^%Tcm5KNC@u}EgP9mh2#wiBWdPOY&W<0>uju*JEr{C9S^&69TkJkch z%);H60{{$Pzm%e8+3ER-_nd^@6aualpa5bLK}kYYy3mgz(_=pE`z-LPzh`?Ez|A;-m9jpy zQ;xdKi*7zIhJ~|Fw%Wp{R;fy2HZ+7gGkulk*`>A3vheqrrMMFZ5^7^fq?sF^d)3Y5 z8$9JxKv7P5Q(D|ddGQeWMC*Jq4+8s%rqDV#fAbZC+~}GsYbfDoCKql->vC%^m1?2r zOt9O{M0EG6)nfeRL-&EWLJ@5SPDtr$E~%B`u!`btxLeyy5)riUfR&)yPVc5LYiX}X*4L!6yMb0P8XIGXbJ$gyPy1lyQaqE{Skpo+4lQ#- zQi5EVoJdDig0b`<1Is!O!U!s)g?>-15{vQStq0D0N z+^b?&3wE?-PQEFTRslkpk5Bgc?@gc;^qE(fEnYAFmOLy9hyR;z|84vOBG><4$3HA0 z{%^kdC+bh#4efr58|~c^t|!`CQQIhLCnfz$Px*8bE_A#U5BzOKy(^ivE_K7UtOBh~ z91K65xDHbm3JVytf_kxo(6OWoX;PSyL{0Q5Dah5kgF@aSK7XSM7c zU9=NH7QI@8^{H*--H}M=4T-#>rWGF25-*lVD?d~WjH2ep;ii%wf8vM1kGY%wSMcMO zDZ%{c1hT^NuZ#1NiY<6UmRC@WbH8Ou+tMARkv&1oNW>$O_Ak?O%l9$NXsx z;K#S*C{usgh#v+&DggU`0Y5H$B$yxjH%8#c*LcYNMg5q&Qq5{{BlLVmkpcd6(h0Dt z8MK_3^SJCDn1D@ZxP|-|bU!d8ms~X^{X+eeV@l=FQlxU&cq#VyVc!*UBN(YP2))>^ zl|rt9*qW(+Dex_)J{OGdvu-wgY2oo*(*S&=_O#&=pJLQ+Ljl!~_7|;YvTME{+!^}^ zL(T(T#O2$El>gx?qSsRXc`8r(38wajBpB_Yqy)Ls?ou~$hp5-ZlSkUSRw?_axw2$O zQziY*dIQ7W$LjaG`0}da=2-sT5hF>pJZUD{MSYAnv!*Y- z=h)23&bWbHj(0qU9;*&b*5YBb@H!0()rWYoFOGDW{5~#wFU6Sfk$L!qgA~9XxcdF2 z5$mTU-qVa+G|C17UyVnEMKwzLS4DB@LlW<4N^j$$TV^H5AbcMnJ09bkiRcpgd2&rL z0H^Lv-GcS;c#wcGO&$)A$mP?;(>LGN10z-q>DqOw`eAr^6HTk*T}{P(1=~s|?xhVS zxIuG0e72CPz}35DA8JnPmLdBX77Ql~`H42ZgU2Q0>~(Zg>K7>_r`>&E1EO|=64_){ zYu_Hzlz`VBrPM8}xe_)ub+0dQABMGOdDU;dkQB1Q#V1Q{k)0014vb?2J1(M;0Qb){ z5an7#o~qUhM8GkYlxF%f6TK@llj(Vm|Fj(cEf_)H5VFdpR@|LqqvLuD9ud}>mK;F`VlO@Bnvk-~KR z>-z1RD#?z$d3%+&(y+XR)o)M4>+-f{eI$ANu>F5U-Ufk) zM(DRvvFJ2N-bxos=8ic`%(d#bPXn@@6+HSMl(!RgI;sv49sjz#-H7aZ+|P1>FKYeP zw4<}U)xuf?%NuW&jI7^!w$bHn#M_$B;~j^r;n#}DSPFNOdx+>>X5;|B;HAcP>}2Q_!YsWCi+K`SKYX25I= zFKYJ+*MPqr>VtTMLHqab5xYS9@&h~SKyhtcB@kdEnm$em_4ncJx#4^jcNcr`x~vfb zWDbn_b?Hn46--snOc*hZuL=$8w3aubM~okCuP8!^0QYP!M}_Rs7l!~w|?YrKEg)v zO4(f^t4|lDtj>K~J5PL5Pg^?m1^5amn?|kTQ~&aoebQX1B=q=qA2RFuJcD+50~g1L zL^a$0gjm9V&GiLh?_mKVzqnd^8-Yk7qQHm21coswiCq zc0S@Tqw=Iu{1}TD3;C*wuij6Zi@#ZcK|t5x28aix!=YQ+Ff?$54{`QFU!a_UD1pcL zks$1|mk#69-OUO{9MyQA530h+we3d;A_bIsPbqp0Z)>G1`nbxsc*=*;_yYtcB27>Z zHj%av7>`zX)z68FLhVM}H-s~55eer7$y%>{pq(faarXo6TP;Uup;*0S zbtbZEKI+4#L4A3hAcy7I* zZzRwu06jOR<|O>itn5M*1v;Gb04X!@rsZEp$eY6esI6Ttc=JKQKg^q#3Hr?v`e+^c zOx)FF+2l>CDQ?K=WZ_K*r*p4IXbAwDSs4#lV91b(k|77s!z%h#DHsf_r$^WiJE$5u zWy12UxHJ!{srHry5f9E`bmqcj6_=5GsI-tGf8PA<7(WE zu~N@u_d?DjA0H}CdOMKw2Ue3sK=xE*t)GU7N?mSpId;X~NP0%S3uBR?h1m#6 z@X4wqbJ}wBA!Ll6M8jN!o2#`SJ9NgY$c>7Tq~ae6na?c5AgF)`L9`sXJHeW`x2Th% z4oT3qc?fbfX14BZgH`eia@~_VD(dCHG=LTa7AFbqJ<5WH)8XC?G=yU%6nJ6k2EyDA z0F(eyp$2lAYukSXcS$o%9V>DKZyKBBzh@<#uC|bV&8A;}(XU@JIX4lSW*dz;0y)2E z>!@jbft=ak1R^*ieqoT8J}))T2-qETkuyy($oa)01)UtEz%z;Tlh$Ub&^WvrLaG%C zydi=x;%OjRskJ}ja2-$TQOYtrIUP?X;mK_6!0CtUawvxXkKXjngd zeOi*CAM%8LSap;|Kdiw~q^uuqyDDn^u$+8$(hqO`?xY|3VbdpjCXLq*zkN`je)t2q zteo}3S9tR8>4)KQf7xMR8{QVk#zr^1&@Xh*xrU5L+HP^t2 zU?kO$Y*;+^3uIb zm{4k!gH-^{GqFy|pY6(-xQ%Y?r5nvM{jo`nw1c0L)tazK$oVa!^ezo90bpY+{sROs zMFLEe05=i;0dNKze5;gCvKV|vE7(i>v64D7tYCApf~P=Pz%wR+w0Ooafm@M6rb7FQ zzdz^iPw-9lE(&=by+5Kn!@&HT^6ZBRa**eXII?QW^M=c#ljoibr98K-b&}_&pEzQ9 z&RrN*o=2VJD9;0NTgr1fe*U}i{MG^?&(B}>56N@B1ehxU9+5n^129vbN0Dl9lIQps zlINrNJC?r>BXteUzau|#*>>v;{BFwIrg|{|9fYv|5;4oP^!A%Pw4X`L&i6!*q$rMg z9@Dm-ay39cM|Uvonx~{+l8@uWkzTcIP@cP%&#y;1+M&7H%6>HW0_f_{Tm!?3@v{^) z_IC=J(exgEf2#ksjz`1Nn+AxO7IUO`JUV?ay)Vv}s|gHxGeEDR(~G652EA$8F@j#0 zlA&n^h9jjHljwsmg0<6IMH+7f_XsP0vlKgj3qfy*PH&-w-U98~H0CeH$U_SZ4F4v* z9Yg5dw#d%k2=p%G^x@z}W9YR>FT%wL44CoRyU;(V>CO1;^f(cpEsQ!o%Oe6A@9iA| zZ`BDRKAYzZkH$yvd1#1ejm)O+kv5_{iNZ9QSV>OH5jZTHroNw)0!yErx;G0k(UcWf z9TSuJR!o*!WyCXQ^*&rzVLn(XQg0V(D%~f4W%meHS0Z$ZfW+Gzc_gn3km2M!mQ+Q5 z>yXe;1|{LgMo2Js;Jy+V zj<6(POa=~uflC5Vic90gT)gOscX1He6R*U3+9H3O&tDjiRoR@L8C0hb!HDdD;485B zbQzX7Qph=dbJ1~xBUdTIx>$iAmzF!{BeMQ?Kb%`l?tZ8k0>$zlmc?e|(G66929^Z5I9{(c$XroyK4 z>B;}6b@+jT=g|>3D7i9wwp@;%AWt6Xy-W6o>^@i>zKT>gDOEo`aQT6{@=!S=24h8w3H z;%HQ2J??(YcNKJx%zastOWZ3mT0pU8Ps?h$LKg~MV9pmC%|f2e;1=$Vr>4Zzy(T2) zt}S6DCcL=p)MDqD;*xAoc*{PeY(<*lC^ob%?B4I7=!DcXrbX^0HMik4(Z)-M3aK$# zq%l&{mmro(h=mfOAvM2*wDG!n+xTbFa;Hj&$4Q9a>5?s^#ySMFN{yppyGh&nszo1v z_bjy=R{bpfdPm*dnA%>(6qEOcELUyo%*t+{05%k;#buAv-a12 zU4N$Zh@d~);i1_ZexD6DocGl>Qtq zA&!+0jh@h$-pcwjNkVKdAsW3^^aShNk+ml{TMgEq8)i%W8N&-_soJqKfmI;QR&Y*tm%dg45L54$5T^c7QZYcCjE=B5)(;(E`Pxkmo$UI`t;{{Umdyr zeDq}@HTMtxr}SrrgqR{B8dB3}{rTHVg2r#XHpy<3{+tPDhCe&wNvS{Y-(=IDEv^mH zpPg~Z`twq}XzI_`Ua3caUc8I6WiEdY=I<>2K99fC_`5HEpNwz2{-k`*6nz#!j$w_>SxU!Qsv4yoGVRdcZ`8Ao9vzkBZ`zVxl0Nw1UI$7=oj!GYNBe7=XG z?xZCuh1kD~uroX=%o8W$=~yNGqwyywf!G`raVbqdQqp(b-a$$K?e@4F^-ly6)IWW_ z_j*4)T#K_n{y>;H2Yw59v2k#q)it8XT5UdJ`9lI-&%{b@awFBX+VgxTwr7sIJf}Bu z1 zJYojICRnV)`)Ge9|2&z-wkcGZMfv#BVp*%~qLDWyq4N@{U@k}2S8H=t)5s@qNh0=) zBx+CbmH$-5e-k!F+=M-d*jNJYte|=!L`1kySKj0hE1YNx zqC-385rD4N&i^!46N4Tp%)N&@svLg zFHi}TK)L*~Rq+qnm%6I9J=S&+Efn*o=FG%pN9GFN`J!3Qd7ho&>&@_B9 z=;dU38DH@iq|wW`e?b~v&d^^@#*PTZ>mQ^5Q!X&&`alouy-?JP-PmL3OaHYP+l{}g zJr-MuSuQqeU(;jDYhHCNKU}6Q#ghs}Jx-apr3hQI$Gd3{1%ebqlC^8AC?bLr;;x_{ zWy|ttoA^)kF4{`zy;`Z%r68n{m2n&LlnDoz=ZJqS?S%y_`;^|B0R>}&gWYaV<3Z+X zt>sK`)_r#qah*M>3%?V`WW%_Y!#nL=nJ~Y%nGG-=y%^Bd&ig^h9&ZroG zpiWE$ekwEZ(-$){$DcRTyE0=A^FG_3S3w1;=&PCv%;f@esX!GMs6v4%6sXn<%!PVh zKg92gS)ZvYn+M>>W^X{*O2kgQ7Sicem(rFH9OryJ$q?_c()UDXAdrTA;+g7U3M&}Di0(48t4!+93DA6)SAx)r+En+UsfOD=U*Dne?g>W4IzJH z$WD|*5zm5nt*rnv*m$jqUbFo>;`;W!{)p=<>(h3aUf*MgP_w?9|K|GE7|;L0n2GEA z;b2RBy9>5lX1unZUbFp^ZCfM`1%r{J93i{0L>XF*H-GlPEwQ6GmD*WJ9}r)BBIlC0 zoNpKHpdI@yd8KjNvFNZ+m|r4nAoeHIsXgi{?c$ZRm2#gFP!hFQ-``R9t^&~~Yx>eN z)XUIsq5OHpEN#3ivmATJ_A-}^p>8h=$+nazYMk;77?jFNHUmT}*t?X5MQ?%WGf7_} zZn^k1WL-*cT9imLxV}K^x>LqLrN^y5d5nvenkX5(hKC4)c{&<&af$#s^cw@wt4IMr zLJNtq5)hS3`~M=*Q~7lmda5NoeQfmnBIwC5>A4hZiX=VvzZXo;h8Yc|CpjEFI)7%o zYU2+Qo`OGfdmH>&^`Sw}?stRf>EB>_p4?Ioe>^sNei8H}n)LKD>AA{A&%Eav${%+) zdUXEW_ewB-7N5lYslXp8Kd;byw~(I=i-P%ce1qvJ`KliN?3@!!Pai>#%cQ51Nl$+p zJ&!)yQ2uCNhM`C2&uAMx)6h_mpTZLj{`lcpOa9EO4CYUh2Gf%ljvl>#t(zUppXP#| zt;q&G`>`fR(sR6xo?A&3h4god7g?9vR3PGBNZlFkx!4pyS(W^S2)magLMOewS@JA9 zUmkm_=(A2pCUNRr7_%Xn1f2pp@7?3z-vr|N^1Y_`mBGKto@8%tJ~J7bF2(0R)8`-W z&J0|jXosExk$(IS&M(qT3A{(EV|{)s;4z0DXZif|ck%7{`@|m?Iko=ziTIynmj*VJjf6a6!Sp}-3h39{AX$|{%Gz85NH6D5(JsTu&$qIXPqQ@I$|A3Mk;P)pqS~}vWDiu>99l0bOZKeqUP9p*4W&3x(ai|UorM4Nq zGT}A(alRf^Ste;p^ZAR-_UCEK%u3p64yK&u6(kpG(^h~j6ne1;6}_9AS&3GpcX!;Y zS8p7@D};pRhgFpjYUT5wY9nGLl>kWdC8R>Fdw8s}*=8G9|HOeKSlQ2_X~Ej2UaWNV zDzKh0NU!T_49T&s7_#wRYK}CZIZJu6E^H$KeKi*8v5zKI4Q%bLq7$=m(@P zSY&vKbw9jE%eWydcvCFK9Pu6-A3&*Ha2z@T8y(LA*6+FoehZaZQMMj!69X+@O>KmK zsjIZl`_pl7)!NCuQe0zKmVHW3VzT`6KgSOq8RX=X1Kk};j%ISmTw*3C4Kq0zUiB_x zHU|MQOy{iJLgC0I_+F#E$KUVp_nY*M_)n1ioug3PWWx3elKC(exbLUZ0#7UjT@FTg zLNR1R8sQzUoxnzTBHtq;Je7ZyRS|~3eD*BR*g;0P1pPCN5f=6-#0Vz{BSvNy_JqtX z{*aLcW68it^O+_d6o?0f<^y4U)lzy8m|B8ATG_qA2$PWo6tbfdN(FubJQ-QpZt}rg z@nEZXpy7{vKy8dxrvpH>_eKdLOlDPUvk>wOBTN_p(k1@5#h(=X(T#8k-WEnUeT*=| zW1g2rc<`e_AWb7&eWqcApY7{xgipCc*FUvOSXZ$FV5r$$4j0zPDgzP8PdLZ$YO-|Cxb08!Y2|M(w}ovY>ge(2=_c8oDseO zqhiAd_c9nif(FZQCt#mG(I~Uxkr?4NRF#&fiZH_dM=TnZjqqPD+l_EM`a)!LD2?#z znL<_ywWAkl$108R+vD}R9{9kqu00StAt4%fs1k~H(RV+;_OIj@3ZBemJPy@;ht&A*RX&*xqEe%)x-*e`9p8MQ| zMZn(o|NFdt>ft`~%$%7ybLN~gXU?2io)L}&2;q!uLLcOC-mY5WA*L(-T;XVubpz?USA`{D^-et!1kXE%D%KTml)F`}mR@JpX* z(%A2MxC{A!XrlOq*X4Tng9j;%L~#-Ss&+kmP$ewmzyIWVxMJG5Sr12#G_8j--Ue0I zc0Fu^2fM5NYMe+QVl7#!iQ)~9Nt$$v;%hE9L~)xaFYb&*8?A?5n5@stWLVsM*26Op zf2%&CnAgM4&Cx}1Cvy{76hGbjEY`!98I64p=C5i*afFs}l6Z_VRw0TPTv2CH%2ao+2l!L zE~&ZIisHS*ir6T08|U>|nWns0OHury25FKAt-4lXZ|*CFaHp_p*TbP;ay74q z*CGB*ws;56t>SfluH@$mdV0&>+N_5!+Neq3ELH`uIR{?^vr&5TIM9YBg!e9&>*1sK zQ5p&1!29V}wd>*Wn4eV$;lFP^JoUkIvmSo^deeIN%qyVh+OCJC5RSq@0wU9!9@m8M zRT+{X-9k9Gry+!0-Te#U&NK?lf4+T}d6nmS_!ulv^%26n9_~0x7s5+vYI&@O+sh`_ zZaut;h=&{7n;Kj7dU%DFagqq4j8zEX=5%JU9_wM-qf!W8agkpkywPYx+B;~3!L43s zTQ4EZ>*0c#CLz4PBhUgN+>xpw{+ZLwYp|whtdum<}_xhBiad$koiq8D( zz|T;6@_Ly3C%sPm!d*%spUy;bR7s*Uh_0Z;X9lDDjffW_+#T-D!T({3dOwyp{|ZrJ z52ZY)M4eXBE7>vaGMwt|sXGM5?qFxYK(G=TH&`fdS2FV83s_o;TUjc~TGRCd0JB4s zVu~VQHNamNq68x1(siiej$nA&DTrHuQCdNEPFItzGO9KETPl1T1-ZB+!Nn!|&P}2} z0@-A9-;Dn8kxR|-(r{aa8_q;>!y*4mbTBpq1WQ`P#$evw?mPK>wyeu^Y*0TMO@S1~ zW8cc*#K!bPXyzmEr^6!}o3+W}B5FNFGX@yX)qFE>|7f_4(rHHcTBMxr5tk&eK4^bX$~cwPI>D`_Ex#%T1_M`&5RASwGoigNpUS@)(^+<5b_6agUu@B+8Bk?@``IA@9eM7VScob z_x!(mo?g_YyjziRB4kQGIzg*0WWNB-PqP#GY2t#a3S3pExNPv#tmtZ)OZDJd8FAM% z&}-js73T`t{Z$I*5-8&H^Hwkrb!iTzn_$nQ_iACk&qlH$(Uf2V@-hjT07=LULS35X z1$lgpkZ;u>zmX~-PnVDhkc7-2Tnm%XJ8}8F&}o4j-YGJ5AQ~U5@4z4EKOrYxtHw$t z3g;3aSq+0wmqt>$2{I2}wWy)nPY7~ZitGRlJRlPw37J8-7M2rrEWoW&H16b^BHmd{ zf=r#8gO>!l`^UAEe&RFz5szn_uFTdP17*rQuEG^mfwMV^b1u;v7-O)Ad`4OdBaahL z1$UsEc_j0C82)o^=2a~{KYoi&&pG@nJ&#&(_5G5b2~(1uV;DuA^n4^z(lZ-p_dhG? znYYhct&sFAyeNaW*s4V=;f)ac_*8U(>A6(W27!{OWgzO(A}`ph>AhOmIz9I%*r4Y; z37G&%$P7YVy2=Z3c8!pAdj4*Tgq$NG6CeqhLAVyCp?BiWyCpqOVwAckI}v;J9nk4H zRjXz^l_;D`fMhicLS35Z1(^r0TGZ(De4z%J1|EA93h<@-gF zo@tL*qi5bOb}ghoVq=<#o;f9VGU3P-6giaXndpt_dHj=d(VcY6hn`>k2t{hgpJylO z^qkGVB!8Ybt~UJnq8=vx-0>Mn&&;2%UM}gGDaOPom{O`mYzPoW^t^Erx^Ry8^EiTi zPWW>x4RW>odEuD)^5>Ng$__Lq zAWNcW=FhhIlAf#J&lk-w(KGYsFs{NCByg$|^lb3wqHM{ZbIX0`xj6#$c+xY)dJiYB zBl7WGfRdOXv$$X&bd+%Yo)w*^bNq56|MicdN~-o#$CAI%h@atxRXFx@%{xR@{Gi0IiI% z;u?ZwAsq(PE~3MF^yM|$QkzkxsLl7MaHK7XLF`9s0fEw}6NT1!?l>spfma-5IV`S( zYKf}su}xEKh&&ulW=yOZWhfuAvc!nHA4eC-Zn2x*lf=z*8xPQl_Brh;Rb z(kZt$vV<#6G+;V9J3V9^O3<~Kbg9pFG3-&aH6zbTwh8JI_UfbU>I8Vt{ixp)sif~G zU3h;q^*DV$(dmA$Mf%O@eB@3`-->jd*61&v_u=uUOPr32R=7jx*rrA)tv^VH?+{rL z+T2GgS~`crXWaPKD>nr1^2>2HT$Z1wmESe~Y|6vi)~o)<&#L@Ki0$E7|BbaQkKO|X zG)u*No~7R$;OQ-)@#F_Knp6wTj88Ybc?)ne$vTJ zIuPu-6-y-??43N9NOX(1kN(nZbYVut7N-6nM@ycXQq=Td@{xp@s2ff=VJ2C_^pIuJ zhZxtwP7FwCqFTpq>YFFe|N66E(VYh0DCzm*F`vXQ3mStacrwgbd!~{a6?E(ta7kDD zsR$dLRjF9wi|z6RtGzOBP}=t_}GHI1bBd~bF2(;*8{ zkZsi8@)NE8X|n!55X-rS`eW)-KllG-Y~E=7f96xY|4Fj{HP@fJw7&hHv)HIVYMb7F zS^ppKx2&oE)zr`NrcL2w-TplB+VPg<5ppgBeY5f|dE71@=hP27Xn)9|{@_se)4{t) zhq|U1gWY!*Uc%!*J+9U{%YTOaNLNBfL%QI&41OnSzY{lLbr3+u@<2)1ZvvCf_>#i- zFVm1p;IKcLM<#0!c|wU86;e(XYzkBcIFWS!Z=y0*X@atyVySFgt3)HwHN4z;b1MhE zTeVC>xPrJ=RwL0hycC(PHr@fLk8h?$<1v*uAIpT|H|X4DkWE$@k;EHYdCvHvac+B^ zx(_``!U>FI$?W45DNp{4KU5i~CKPeMMrerx-#SG?W<)ZddN9WtQEEK&Krs)*xUtw@ z!sUgKS{aYZu)XIya9g(AIY^#wIV^+lh}u{d zxvEKOH0-kI8`PA~QV{-@Jo!~r5x>eYHXtF8vN;0t?K{CqAV8Zwi5YS-V@J5%<;sCL zqpNmZBNTCFGK695Cd-mdb;MFn029``C|Y+4U4=Lr+=RB?E^aD!O%QT?oO6U?`QT76 zcQB#oSU!4)b}n;N*TY`N@|&byVd~<=HFdH35-1dU_o#1!_#Q9Z8KXFZjoz6fFPUk; zZ{(#RV%(U^p&;;GCrM&Vi^DWaaC}vqpLPV}yBSe=$CK~h(tAkgXcIYoGdbkDPp-oU zfAAa7V#PIhO8c*seCrKEe-e(h?R{RG`lACBJ#2e=YdU*A%S@OsQIa zv(Yz`7r#kf#r$Tctn%#mO{UEczuEC>J^9VCJF4S1rQb8!ou-@I53elzaND)`OE zDDofRH&4QJr}GbcNR2TPm~3 z#T$Ej6$+gX++LY&#W%c{65qrptOi@RIeHiV1Oo2~?7vDc36#_IHi? z#_O5#yy}~TOneVCp<%j%QHNL}+ieneFo^({SgUM7f<&&d_5e(d@hyBi=XIu+U4JmWe6dTXmjv4J{~x_zkpBE+<`|Iv$-rT^{xg<~#K#BZE@ zhA^bnnWn@nmzQg*dni1gW~>`9LzhN3z*ePeFBP=Gr7HtcTdAy`*KnQV(fVvsp7c_yJwK5$q<_lePaQO6@9`qMnpDes5t|sQW!P4I za4v$I4-_7Zk0tXp0t3^TRfHr4B9$~j5%f5IQX+DRis43j!c(U7(wmI*CD886>L(eqdh;xm_8+Xeo8WZO7{FT-t;NN^HZ4VQ@H1+NYf{)=O@MV ziOe%5D$Aa3`j+PPZ64k+SD^5IDd!mh^3Z^DxU{ALYwRL@GZCyQ%BG?I%6OZ#<~J;z zdOfW3n>+LC%x^LUlXN_ei&AKq?Mn_qw7!C6(P56-*rj`8I;0S;q+ zA6;OY_rlF5u6fdwUVMX*KkHdj`uHJ6`nE?+>EU)GeMzP%J$Iau-uX>adg)jr{nOX} z$8XFW@&8kP!>gx`59$2o!H?_AZ<_qfBz@1PI!W)t9{&IM&3^~Kx%WpNoT5$o;0%Ii zjxWE7cJqmgou+vo=H?R*!2Q(FV*=cI%$lX9^kst#K5-iUen$SpI3xX2Gap(t#z=1s zKS(2g@f}9`nw9_KH~$Ct4eK|}af_+EnRwRvI`f;%@0p~J=IJE;Ai3H6Z$0(jq2KJ| z!AaVn56&+3((ztTg%397cl$Y}c^@2aq>px)(#x+i(pN4vrO&(8NI#frO1D~#^ffa~ z=_R9$^lM%+r3c(*r2qW<|M<;+CBMOWs`LZ2QuQ#}1oNUSXzpxnmn$=(lvl3^obBYy z2ziFZ*l34KnyU->9C0uc9mtd<1*(;b0~yu#6OmSCKUvNA@KkcG{XV zo;|Y3H9)<)3!4%;mo$Y$+{=A@#)}XoZH^U4~$KSEpj6Zi%J@6Oi z1EjwRh%f$fDSuV?)4XF#iQ-^FQlxwA@(4Q50>_RfX$A_5k;O(R;;m4eYmHtXj-e3F zK@vk8QL=p;ohC(O{~}@QhaFh8q;F+elfISkdqU@uXytx9<}_mL;?_w-tVd*j-0R{I z&lP!Ui067YOqD{t_HuX_9kXQKPKL{jM-u}qnRF|k;>wI*OBrZB#;7w3b&{zIcV^N@ zv80&VP_DQZYZp*#5qBX=b^@Ycl11$LM6q$SJV1TH54Hf@N0`a?MvkM+U|TMo{DH63 z3hlu5baBsQat8)9t{RXSu5w?R zDVtd%CVnC(uk>qV{DR5fYYio9;5giwA=|PzBAZ(4gXifrLZ462yKB(f>d@ygbfAHe zvP!FK8UD%uk9)QZ0&eCrUPZzr#)~%cmHj2wfuEo7Q_n?vs^Jb4A-rfKfH$&piRFca zM;f{7lf*!5u>+}qO`p7 zkhnDpr*^pDAdiC4gr*g;V96m_kkewRpvcdn=ZE}U!_T+*`6`}n<0O93{Zn-PZ&m#4 zA2Vv?XX`=nG-bW{+2m;d{H)hM8iJpFIN)sf*_ytd{Or>$KK$%)WHIxzBT15<4c%KM zKii=V&UCS4q8C4lBWNIDTJiYjXM-AwpS=?!=i&3;oeO?;lLmdT4!tIR)}qkF&t^_A z^RvtQ82qdqe%6McZQW?%XAiz@=4bDWGV!yQ@KR5HcHfl}kGFi=;QZ`7fcEBRO)mjI zJ2?Jt<7bccuZo`)T~!4?n~`1>Kf5MD=Vz~{`S7#gk<8C*WhQ?1(h$kdPW90F*%Xh0 z%)54s;DW(gK~9@M1;t^+$jKIE{QQ}p`}p|{o}T=S)(7(RC$6X0m9u22oZUOkU}n*r zf*Zc*j)AOQmP{uSXiE@$HNdvsif6pb_C1kk8h(q#snkte7*0ASRHqimE-zjt#z%@E zl3~_}a}8>26x#PrIfy(nA`PF231HV#dm(3gb$+WN`T&P+Y`->wpvZm~VJ5W-$HL=t z9(#GaiyX^rMY>7T)N75xY9n`}sb#EFERM**@5;nP%m{aBy-Znmr4UE8Cw9^K>?O2LJq6$r8z(GizgmUXe?G)&Ytkk!!f5~A|^?xK5*?noq2g75?A224ac zE|#ta9-*tmP-RxWO|B!_3!ir*OS=i>P*Cwz=EE1cr=1;)jC9R4Y9>s_(RW3OLKKi1 zwB}>LrWn!pazDdt)cRKG@0IGNGQ^izD0LN0(LKKp=62{k%=@(Q%s|#`LzQ6igDR0g zi~&mxCeZZFM7VcuDl38DKY6iaqcl$9x|ux5B>JiLJW9>Ek*CWyzsh;WX;)+IM|wlV z#Wc_6^Dv8M-o-1Z_!wFIX{|V?oyO89TV%jfPMcM{UaV?9b(mV``4o{-hxxSdt-8;r zw$1*p&Zp0IS2>@~OYl3NhP+wheA;~PIhjvE(bdkUJNEjYPX(m==Z`VZr@qMQJD*Nt zzWSd}uU}-EPsbkiH=h!3;Q8eI$uyr1Smk{Bk|Mt9^J$%Tah^M&viMM~IH$cy#YJC4 z_0r~(L;X%(_$u9x(nt(}gVVCN((b$s7e-DEhZ*7H2aTCE30dOd3hhu&kW&%_RtzqL zwW&wr=(sE$zFD=)toX${Uk?E^n=2t)bm>Frs9=^1gOVk47MPkHN0`u)0OA3cooX47 z{Rw^r&~asOU3fk`nTuC4NF*L>i71E@v7|!_<@qbBQ&9>xk>mj59+!>NiQ@)kTx|_V zJ<6+2gu)c_Fi>dm9EO9H4%~uvh#wIZ7JKta-O+qdlaET=sWHJzp;LYTlzC*0+Nv$E9O5K?@T>qXBBRQyZXFXbUbod4m`GhFN4@S4mqW zLd39SO=ISEp6&tl*Y05!k(L4qLZ(|r<`vTVwA`@d#1^FdgRn~Y7pepIRfjaSK*rNM zouRgb&Sy6_hxr(F9B#M;GU~Bv9!mI#xKt|9?TWQ73%$!F_)#BpA0{i-r%@98njISW zc@jKFPOF#QVHtrR2k?YOZY$|A2En9UY%Cz@qsaW2-hp%7AhtscN0w{{8^r8n5PN6n zX&f5kxt2)uonL{u<~79*9%;!G^7D3o6k>smwQ|$AjH{Dy`j>BAE~ar^Mh)nGhnY^k z;@Jf?XNUNJermZ4OHnS0xB-NKM8%Xfa%E*FOHun5w3Ss1eHt}XuB^zwA%^0GRlvHM z#o`D`t4rj-o!ZvW0|&c%fOxZ)1pllK-eaZ_I;K;$N9~fuOu~x?i%Ft{npn(S0x=jh zVV`WbHepfE zpivGTNCFf_S&=)1r6;jcAU21v(q3WFdHr4~IyvnfSZGKUZBB7ox!^31f+bY&yCGb# zy;hLZrc*(2h5|^53Vt5p=K+5H!p~BE?!nVz`M0%}@^$q1vyiXK7L8_$faGyz`T7Z{ zx?1_V?aylDYx(bWldqAt`jM|0orxh;CtuUAtG9f;u1789YkWAhrUB&ZmlxMUzP|FA zKkjMB*T^uFd@V~d^UY_wO8IIs)A`ERWt*#!uTk-Tt9;!YAsOBKMOv2|R=(b&fghoR zZ&>--6yW{K*LGcqU|77B5G#vVOYa`?^)M*hEMJEY_LQ$<4*SYiSDBQrS%v;6q&oS! zX{4D>Qh9cQ0Qog<#s>|1|9tByJJ|YXQ(F$@} z7!?%HA(U0NSjNxC`8l7TbNHFY&wt@rC;56h`7GqC*rd^Hk+*!kqk9eVb??Dy(?#U{H^l!?#_~r-kh&>S?G+8#8SQ2uR$94qj?R@rg{DP za;K`~>-$W;Zuz`$@{zi}n6^$c5_U>)0F2bkd%i z$MW?=``XFZcX4T;Azw#4VV18;V@>k)F}&1YzB(?HbaC~Dh8{SUuLm!X;P-ywZ>AaY z^^>dWEnhQGQ*GC;V_QSM4ut{fZ(6_p+OcZ++MQS<#qg_g{krXLlCOpI^e0~*i`M09 z#aJKtI${9J*9F^6^7SwlceH-Bx6tM529JU)OFPMeBea5?mP-Z2wP;ATh~Z}+eqPGY z9{ddF=LLAyNxnXN%UQ_Rc^_#+c%<^>&&n}j)Pt(s@tY2@$O@M}cJ*t}J z>y`g7$=6HpQh)h+psgIZ@78G@ZLoo3`RdZZ&(y)M($zXL*c$Tnj=uGluia5oZRKlV zQ^?of;{G=II=4;L@^up?X7%#*fzc#i@1>_d`Fcq&UA`{6-ABG2y@KUy??RJ&U4+FQ z$=Cgjb@_UyM?sdQAIXA83uHk~OQM3}--w-+ElT*gi=SKhS-{Ucetv+br+oEu9}Dh{ zNr_10D11jKMyr}0hTTo_zrV<(M2bD_Fz0zMNIwuz(nTH!;A|?QCPXEMDETK4&>+yE z?%*AuEfhl*`K77z3IMxdgMOMK;`dhd-^fKi|2rzPN&L~3Q88MG=oIWZW^8r`iT3DE-v9so z;dqtg`{44t>)MFFvYPuC^wIU2f*U{Hp<-IXQ!fEtVU=+dRup#^h1fGHnpo!GCT5^7 zUs3I0O2+YEx*{oHsH>e7v9{@Vv!Sjgz-L~C1N*T2-Jy0sZ19Ar&+R*pC&cDkX3rrA zQN_y66LvMv9+j`eZd5FTiaA)f1PCCl6pF8kK$XS##C z#yMw_yMvN3ONNidg;@x{?&@Sy)ITg;t!Qka@vWH>TaKvG8Jo_~$8{~m69tzCfJn}> ztZU0*Tz5PK&z@}vW}3tad-0mOPn3BDrt5Cl7>cOo%>NCnIp;TsyuY4x^5Y5okP|5#y0adH*pIp*hjwa5O!fcJc9`<3^_r zodnOMoqf1q9zzeBrk+RHY_Uxr398JqIT4kf@|GXcSh)HzfxCmo-gyTC#zu-%(5Q+FLw7o+TH&Z)%E|gc^8}duWlZJ zaGN7+%rnP7Z#w-LBfXoGKpB(5aPdJn{Km5EI@|0SukKG!OVtyI{v8cU!99WT>X|rD zQe>ZR=iLq_I^dmB42&i7UHI+51A5+T_>1$Bt7){dK1;m>w+Kdx??B3O3W70#W{Sj~ z_H=Txh;EwPt~eKPb`^IoM&S;|{EEQX3X6-bKIr>xochN&%z{s-7ATCVk**se#e9Yr zKNrGRf;-uq4`P;qTc1>%GP61a;J`Kk&JkN~$!JL}(;*C%5EdE`*878i3pE%@J^``E z7CbZtR{+KZ1W0YCsf4kVVDK5wB~4lRh+mDCSi3|Yanl|$954|53fzYwmxQVUo9D_HE;c;BbJ;}*&I4tVdXy*G<g2E zJ~DhT@%Cn77)*TNx(lr!9EU5R(BX>z6@0Fl*!A=2O3PZz*%4jYN5mZ79BNGs-pqmI z-ZZx<1=6)-zDJbk8UeVdaHyb_YKbjlM=i_JbomQZ8+m)<<<#0&n&94-Z^t=D7wQzJI7j2a?Fig& zaU$3<`@vIKFu2-{VD&{!_|*d{fzu)DPz%vnF&t3${{uxWYv-Oq0`O3o+AlLN^+7it zELk0}7$ID|-i&dv&cMY5m|DQa{zG6_h?sj-+<><$0EMEx>sYj8eS?ow`T<#bgHigs zAX)kyWUyBj?B9#OmbGACmbIH8S$mReQ!vm^OV@IMg=-V8c9{zIrWt1UCdk;gt|uA0 zik~m=b2*-dpwWKd{+qMmx9#K3hTjHbkbL+p?<*Pnb|R*zC%^r??L}sOE4QJlpl^=e4S82WZZHGpF`0bt_eE6*-0gd0@kLl*YZ$As=<^CMbrSsc=%=kaa zZ-1`r%@WFo-%6s^`0bEDMv}<6~$+TL#_x-%7@oX7<>K} zGd>)~Q$&BGR&gAlJ3>hOjE;fj&Y4P8CF1`ihx%xUasO6-dq!pO)KEUc6puL-pTrgQ zw)BnH5sj)S>>W zr~}hxbp)arQR~r8sO!H0OAc7*v7}f-2zA8%V#$0FpA=VCDXH4DH)NLoB^nM(alVLgSgPYtyFl*( zbPd=;MWZWtJ2|0L6qIn!u<-sR!Nsjki0xs?d@clbnPXs#;kZxbDkleNYde>MwAsP( ztRf1&L8L~}oS1^VuItB(Z;$tuU8E%$j4B+esQ*mDNog5X;Bej@VYNgCH7*+*VCj`b z{yCP&)=l`$mCbKKP35;7`7Ky}TP?q}kl*s;w^s67vHW(P{8lQzg~)H^@>?7EEdYj% zBbJcXZSi`<66y-UJDs_E;wj!pj-NEnnVO8DqITJh8x@T+i>@W~0pyS@c1E)0WkfRU z4`T7!)0JuohBg_?XIyTAI5K8~3sP$^xcr23hvNLBy`hbq0mc*QUfA!>18%ShV4iQz zRG3NQwW~~1iKt91^*mo`v^79nOl^gEC?KBB0WL|V>5NvNw~p2p#fr-nPK0K90d3+LqAX-Luxs9;}L- zwN(*$xR`j6WE2k1`P;9RWE6^XX0*Yc`W^$b!DNOZQbYv8nF9CGhHKP)cNSB3zf2i| zP_c^Z$rA^}P3&k|Thu}$64e@r%lKHJ>6q$=@P_V|V?ZjTeJ-`smJ5PHFWcX`k5`PP z;#IJiY{j`Io6-xjNFSA%*QDX6Ew>$|yV^e{D8Gx+#55|hKAC>1#|WkIX*8W+Pvz+} z1i@lxL0*8ym1<}9xS*660cahGksKFCz*<5z@`w&FNr*H`tZ7hhLkC6r5o$pd%?Gu> zqU1#_r8NQ$Ccu#l*b{v~=OmzWx`xi=TG4m1hzG9&j#CryKh&*{Lx{v&YX}pdv@rZ( zN|WzyN^{GHnkdaG8izBbS-mK2OLHkHKxrf?tQZo^W12{qZpj!B+yF^at^4Y_&n@`P z1&9;nw0H#9HqC!r>{&N%vzQ>R0z|+A&PEf?YB@XII2%;M?6ivQUHsx~Dce6sCsB81 zCcfEU(e$z-`(Tt<{&k-FM7IublcYV(JbWlc3h{ue$Fn2Wk^s(_kS9)_Z_1TKLJqmk z*K)~H+eOnerz-m%1Anw+1_kq3f6@SA5bhDzUWCpvc;qE;5YiQZ?=WRa0oZex8P+@x z`Jd`3|8a-qRuPIBp;ka-CPCzp3h^i)Ncm*t)^8PO-qz()4)t)uW+saz^a56y0~RKt z&>uQAgE*&>uB9}p<0UGr!yGPQf)`M^)i<`|E)6fP&-Gf?2S#Z0!^W-TK z;+9Oh`&<*`Pdv&*I`I*MNV9k&U6RF}$hdwyz=^(xm`s<^2;x{a%hiQbh=9t`%Ww#B z_&oIf9y)4BfF-n%B}73S1bc`j#2Ri1wT0t78t>6~x8mK3_e8uW;yoGf$#|cH_eqwJ zG-|yiG@bv1%p)zp66$1SKuycRo8nBTKg`=rs>JA0V4vEdX`yoei{obu=wzkay_d*V z0{Pd0hheZrl;Rpb(fp0mxazoEsheb;Lvb+{{MI`_JsD4ND$YX-;`{!j@9#UD_qgRx zobw)F$=pbf_#Q?B1H?*jIMzQYe5uyXMQEo~KAC2J$OFN_AtMZ)I>A#y&{6aN;4xkA zZ2|K1t#}EQ!(f#Hd!l|5UvYZA?Hhp z!zezjx8)Au_Ou@<@n0%NU+CM;UT7!U1|V+MlN!ve%gQC36FqfcdeZwx-4vmy8$HNM z0u^zd^JN~5s+cGbHal2ZS!jzrW0~FfG|8~LVda3Xg7VrznHCdsn}Cv?(PSjE%oik`tBpHZI7I6<X%Nlku=C{ z%1D#4?se@YhrT?A7u;VS7h7qWJ-Y(4#8;(iT4 zDFGO*y`<4gqV^I%FN3w0aC+&F7pe#5)x@~iMSE&>c6fV$f06GLTi+0I6eD>mM?T^Q79`?tjL4NFy zNA5l+_Q&o&x$Tcdpq2j)`(t~OCcgH^f1f0!p&{*$Z-jD1-uA~-S&^sxG5piBwLcO< zYqmcM60Z$!e`NXLjQ6%bK7FFMkNxqw&1U-}wc6MI_(2LQc27)k+aF&iHvupE<843F z5W&Q1UVp3|@45aU`{Qg(W4HY=lizgv;~e=d2Yd#$$$9ddW`BH4e#?{J=F4xI{c(Z( zRw}<`%WskASHghC`k$x$ zaRFK_RX`RK`(Q+^m;G_~J{tVL)Bbp%wPX}tOZPR96~rjmcA#&MnC*`*{mx4l!~S^t zWTx&lh~r0h-N631oi^$<`{S`Q2R!VLAt11t?2mgs*Osllz{{|@t-^q3=(sJuWQmvt z$l@5dQuca6lD|f|2eWh&Tc6sg%_m_!FFsTExyAO! ze|^``_Qyy-MALz@b7g%P4<-kY=2yY z8Bv4%@lj-v@+pUUIFN1lx*bv4A75{T;gj~qoPln;gJyr!7`3s@lZYOkCRJ?GOM*eJ{iDBLH}~7wawl& z+aI4=2BaEDv=U;+A-~)H$OQJ|ah`%%1i;7s*q`BJZ_aIh?2aU?jWzotgP2soG)hCK zx8!u?0bl!L7%Tvo?Yae(SC?O!Gp3;pM9haqX~Ya3K`YXIzxdi8+k!e_BtLMkL8L*X z%WFjHwm-hNhp-s$VSlt>1U>AJZ*7H+`u~Cbu>cH&RMAqh3^|w9+x~do?gq9$UQ7+7 z{cn@~F_h?#H@}$%?}9m!j4NSg;|d4|)~{cW9;ng&_~L1(Xp#>si*@sX>g|vH^Lc8A zi!8Q9RcU|xr_|-FVl?HGEMN*xLofT|!CPy#KOV5Bk(EqENJ}P_Qx+CuX4Cz zWYa>>v@qS4i%l4R_Q%%9S_}K*?$0z9yjNPaJlgr{$ph3j-Tug|=jb2cUa;m>XMbGu z2bHVd{`dg$RBeBh_LA+QSveS8E$xpN0%DcgbPe{$eMh*({_KyN@d-k~OLvy`#~3Q6 z%epA-g#~ICyi{R-?0e{xfBWNahb6R95*&NAmo$1Q)?NbWWs~+2PA_ZmQj`7hhvO#E zKr(c_3La0xyc&{`m4&#PX}NKSpfi)mAALUUs3c5%JIR zOED4JUpB{We_Vu>7|_^$KQj%v>oM9-(e<+Ekt}!7kyKQChv+@oVmCjF`T03NH}mro ze&+J?U4FiSr*3!D|FXX-otMYN#~CE@J)n3kF~S9)zAI^>!e%Zoo zdi{k6P>1?cYEl0@)~;&kKioh}dMfU-yJLA;ParhpW#ANN7bzXc{-mK>FI4inf zCC1g}QjX-l{@QDo{I!4Q3H9^*{apih#sz-vYIS4&_l@JC@@*NSvF*O12Qgu_Y;o#F z+s+D`T9RMZ)fQM{b2%g6vYOj9t8DmR`}0o(sT=b}*T7;|lN+DP_#rTGV}3>BDCA1d zgFEYed26tfX{6f%_XM?gbx&nri57t&I~n!hd|A`>M&3!9^c zd*NbfCaI_+HfMD1{uk8VHl|idXmnLy2&gT;6!cnT!vWMdXG?Iilrc8f;2jh4?hf2& z3*6{zM)|HM`1WfiLIFwbkP+K>RvTL-jzY$CeYCl)FaVefs0^emJ<6G&3dE&VR!x|90-fqN|pXq;tTi7ox4fIC5IU)SJ9&PEv(SEu%{ zRW`N_Xq?)K+T6}o*~peLAS|_|>>u#u47EAiI72}(bTidzZUVX<=M3|Xo&PI>)`{&< z#a1^eYuYCdhk5fHuG=G$alkVS2Ry@Zz%!C2SE3~np#$PAk%O_R_@nQ6o{R%H(Y(<< zp*Tr9?K%ZcUkYrDIPOY^XysAYhY+U&QACO`QzQ2$f7Uxd%tF{52+6AClOZ5U!WqYr z`cR`gqS5+sq|@b%pg6Fv`$Z6)z9R7K;P3hn@YkPU_$(PtA2HzffoQ5P{3!(g773pv z-|0UM_=6_ZAATExe;kS#@FUxQ%z%I6RKM`m&F1@ZtYCCXVOlu!6sf8t!J0KGTv3D6 zU~NY*s+R|GGavZi?0a2(yakV=&W;#DyPJBUMc0#^iq#R1+Z3GX#CJdT*KO2Q*Q5*?Bm z2o7*JvShYx3Juk@5J;{R%?6XU$_E!t*#O*?m`owc!oWX7%R^9?>C#u+JQ9Nhl;M$j z;umPP39bim#2gc0n`pZmYY12=z!(ydjeUAOZbGHPHTv~_1ePxn3wpClz4d-AHk*Q? zaJ+d*HXwF1wl4P2mb|)KZ_PdMbjQJkaB4Q|fH(gRja@qeBX9lHv)(_DRr2@wN*WH8 z_$=G*GFBU^hEfB0 zIO_t>xLF|%9AAsv|1NOqQ2(MMa^R2y_rHL5JB4&%bb_!m_ffZ8nS4nto9yhakvyUm z_#kE%uEM4z=jsngG$P|0VX&fHXZY3%~kqz8`J6#Qxv7?#! zbU+1;z*H!%QG78XWfentWtz!%^x!DW10WXkmGNOAD=MP-ph<6VlN8+QOig05ki0Kh zytb0}rZG>5Y}9g^GYPS&0VxrPa*JJN&-gh!({S@3O{wr6m2kuZQ_<(?odYrd#&Xr~ zcO+cN3w`Yf{)8z(k)`mHE`oX&KWW1947QiSC_~Pf@?vYddPA7_bPlW^cGoEID}10K z{IN3`oiLSeNECnlOtw?ZWbO-j=X=a#LQ9P^c^sM`=4=Flw03a4dsE0}hS)(~-6q2; z$cek%>tZ5|W_Ai!R*I_B61&=g-fl$5vqw5=pAx4h;J%ndka7oYrR-*$8qG>4uC9t==6RASzpEg)0cn zD4b1&Z;^!`*9vpm(VfyZk?;KBu}!3GeCZrR6OX`+GUw0i+oGgx5#R6BiOMnE0)f!}D3c<2L4aW~LQUG;&d z&G1+ssMx{qYNZb-qz}Au710OtnX3oT$eHwklfU@r1FTuSxX)7`2;AOa`hfKlsSiZo zRU3VPTa$|OK_2=*9GdN;4{+97ul=vr2MWQ#iA22hfrT&={vGI0Qu)IuM4`q{eb10h}9`T)<<%KnBv@KUJcu*B(V&<6(m z=&KK`dDL4U_@cdAANX}|1L*_PKJd~9woR;AALt0pq#^Wypf{lp8~`adh(7T8`oBRR zxDJ&xls<4G*GC^1_;GFYfnJDVZRi7+2Kv(n=HUD{#O;O$#&Ay72QI?86!EVRI*0Uu zQ?Ej>A8PDRAF#{9v$evk5Bv<12o<}AisgD2W7*$E78|A&ns()9KR zvXPL7gd#m*H4-qE@xgjRxh)qBCEEUL`yl*DC>Iy(2M57c@@j0^f<#A@Beht(v{;Yc zh1h{!$C=A(RM=mJHACF8M#iEFgNYMx0UNb-f-?kraiXr+O(}>7nUF1deg&(4NFWfD zZ3!6`VhK&iaX2Snzk0B~Umc~WBkIzS?$nUt_j^PA+pyY9mvP`8H1tUZQ4QMYL6@A{ zM3-@~r50BLEj)D6Zlr-oHb7M7`vKuamzy6Nvwj|0A~vp*Ef{amWX^`Oq{%xG@YW}i z=H_Xj$tK@>2a}}1&6v50OgZt`Wmm!+Dg{^Bl@R;6-7;t=g@U}$6bjOkHHO%L9#c{z z#O}1rz8*=IxeA_kbww$o^IJ@F#2q}kR(3`|{8c2zVuE3yX^!o+J7sR)IF1yPo$sBAixWenBFn8I|Aro>sZt$vL&P*Q85e{9sU(pCQr@Op~5)R!cbSsmM&a ztA99=fCC;*29`)Mp7o z`6-_I_Wo9^m(NB%#viU(J_gf}>P+OL_vFY~33;}?AO$KNO)XYZwTi;sL9R!9h~zkK|>4?`29q&yT@s*4r6sDW5F32$5)FMGDuJmQZhcc#zh45`8{^E;P<8McW zjUAI8pMizs^F5FgT6EL5igib@#iRV~mRIesp!@TAz|SD~_e=O}dwpw{4*wqw0lz!J zZ((l#mpc3}M>atFH$4sbuYJS#k?r5D!%wLWzRw*<-eG0$C&0rcVBTHtx1$k}r0A@p z1ul$y(GmM^)Clhag4f8@(DPdeE}!62{`GgyrvBDGZOocT8X zU#GZI;SiFFOFCwD2)0`WA9EX3<6I9mbEq>d90V8PV&O6rzrv>OExQ8oZ|yDjdd7%d zAuij2IpvIB;T8V&7)*T#eT&*gqqY$%6cz0hiOtC5Py*t&WG*AiAR3Ga6%WiEhaZY9 z*FlPmtNp7_(9s4*gd*Pl0y|Z>2S)*n4b+WKZpSv2Z37IXm~EqX*kkuu=FG$k1z>Fx zCj%h7Jss7VHF`%`C_izp%7}FY&f4dg?bzl< zDFX@SlmWOFjxRp3d%2e+z!pdMzGtyiM=Gr)xUF}fI$l=UA-i}xS z*E1nq&w!!P+vIraRcMY*J=pd-`fUu>I>H{%yN@)|7#fsYP6U9qT<_%&+2TALj_@^o zOWXV(@t2Ps5d~`q1zUl>iDA#lP5;dzTk2`D7mS(JSaKL zD!wCSS%s=R;%lz;N|T`x8CWBK7zlW^;18?Nfd2r081PJ8_`?J;RW=xZxCWAi_`Mf@Xv+4` zD)@sF^O^WVk()pK@@l>LL)6ofKU{ci75w4ECCndQ#2<=?0{-w3w!7=eAJ#locmD9O zEKB@h+VAYFb-39T3Pz z8HZ|50`8OTQJ>jAc~R~Cfxw|5k~e?t#~shO*lweeF9s@s#c{D4Ev|(uj4JH0#nWag z6aGrV-EQY4sGG1aDcW2LOSn7%X&7|cJcf13@gnl~8H`$np_U?lu$9=ar}eSBT15*7 zpp*sWR#I=^Ihsv>A;H=c?@8ZGowVI?=N-3g5`h`NSBf*Ue@C6|cRXQZjV(sB{+`ca z!;_aZxFqqwTK1-Rc^Htv39VLXgsTyN*M8CSz+@iPSs4GTRDazk)f6@8{I7Kpcew)x z1)T{?`GAB|5`QD*11f`mvy|BUlquxT;25A-Etzz+0&cDjiHo_bV+szNCI-{5)b_Y9 zGIkKtKgQ)oP9*x@Sca?VHagVC@iECAQ!gYq`u-tZ+N;7$w~;}C{_|6pyQ{_d^~w*) zcK~-$LQ`u-(LxX5G7ONuI`a@8Hh@J6s_{KgrS5?$g+wSC*kgt=ekRzG@fyl%ms~(S zE!)2p?+(}Wa64Qi$gPV#`Ui3q>?d)tmidrYp;nO-%DsV$vbhfRn4{$%?i5Gt5omo! z;9gI+WgHUsZldW~0mgnv_ny!$%(x6DR9yA|XY2wvP?&)3zZ_^b&JX+saK9N!WEg>y zLc)Cc#`kZ4hMcLaL{bc2sYl`s`X4#{3u4gS@Bb#_$emEZyIU4IZuE+(*-3{u0T2NGAVza@Jz2i}iLcOX9m(v`3XDM2RUD!O-TlFsNC`7Z$7Q^XDQ|RpG&+ae$&mYNr z|2Kb{)ouRtWbxo{{v3R@4)dpEgWvh{JYZEdf0l%vllgPKY>D^$>A=16nm>&z>NWDdNzlq- zZNkvmt+Dc6cn597JWMBUN-^E4HC+vDcRPG$ zq_rglCrFl3>&QYmqj_)ux%O`n>E8!KD0`ln`92*ALlKd)E2A6?u&k4j0|%**z5U5F zcx1ke9NAF&VAdH=tn1k0g!64j#CLob1K)R$2LM~Q7~j-7!gtw4I=;J=`r>isOy3SOzTbYj0q}j~F^TUVdRK?=yrQcFgy+^ zV=SohA3=XseMsiBJj>cAa+xQ}?2Qvz^7PdTTqxP)cQeqvhfsjKXY4(e9Tpo?f3K{1 z{~XK2`nG?}ZNBYqMC}(J_-p^JM1Sq?MD1UP0zU0;%%>)_H#4=>8tk7TkAbJXy*=54`0uj5TQx*raGNvz8EK9POzAEHpNp1wCq zY{9e_6}8D>Y9KA(@q4HK+uhtcwzr2*d*9DuoYbzpg%oDBuI=^0E{#7K*xlpr^dA3` z2fIN>b7pY1+KhjRnVzolfwyX|9DmN{1Me)ypSK})&+{Jt#S_nF{3#x5UGZ6$_V(~; zZIE=_#-M}J=$y2_s6hxj`$%IV?%%fXeoy! z+z%Va$Zhk?h;p26abU|_L69r;2=>rn6XiYhNo0*Zir8Sj;aY}enaBr9M3JyBq>~yr zo_&nMwH&jl+ZCs(hif@zjfLB3H&@ED&K)~xdaoglRzAdam~eqWxWH+`cYr#L)U4S6M67Y zZmsNsxvMgzz}l5Z3kK3E5sOxHu+AiCe%U645HylCq$Q7Y4&f6OuEJmKOxgP!1%XEx z`!8swaW^bk4YU{uYu?2G(;J0u5Ld2%0!<+y@B%wR$drCcB@EVx20;lmZERl>0uZMj zg+>j+!}ZnNAOfWk9s$9K`;kHpCqR0@^9IlTTPc$-wJTe07DF|nC zfwX&TfPmmg_M3j~I?a&ES|# zTGJ3rEcFt`!N7Eh13vb_IJidb3=2?R8RF~|IGkJzHfB30;JpfPA6H^94I(sSoL^hX zL%LY@9XY;Fz7zojEm_%!U1Y2LbpIn{G0+L%W(0txYm=1qtD7_m5TB;?M$ELIuz$ze zAI`pXu!Ar|_z+K#*c}=u(ODKmL5yO`x)}LjNiPyFxAXjtWeu;F0b&xht^Z!$q8*0T zYAJs{MfFdl0g6;IW>8R>o*ZMzJ$8sSB*%^jT*p6lJl^LX+H&nY!P-C8m$vIMRj8u9 zZvzQbE}4b^f5+2b^`nS1{8bRZhnhoUJ`aD%c}J$$KO$z1f3w&zNe|_dh)gn+&sBC6 z9Bc>f0Y8O%z)$I;P8o#rH96|^;^n7wJ(&zK>eLzQG-|%#_6|h>eu79XSBqj6#zLDAcUPK0w?Dw|BZOh-Fy6@jmAb-0F{A{I$GfC+YOAy0F09f8Q0 zK{m~_R_F<_c!I*jMs!9m7(+@F$6p|BR6%ISp&=&rhQDt1h8J6I0)29|zjUG;{cOC7 zeQ#p)Ap^tFZFn)solzpWVuG&@3ln=Uh6Be3ctb$00*Cqx%|pAo$$ehhp%!z9Pz9pc zsxO}$v3XNF;SguOszigKq5vP#+~^wK$cD3;WuHUTj|a_ju(Jz}LB5XVC|SH2^!ZR~ zsQh;3C{@SFfBZ?aae6Z0f}0mxk#dRARt&X3D~Up7>q(lGaxZp>3b2`iA>j}m66z{9 z)MptgwFa{?IjJLJn1Net6Gyj@?c@oXl=Qm$k7jtSO7PfSF0#!kY9jEj; zF1A!APLHjai5VYAPQ7?dtSl@;067?o9j-KH7Fl@-mN*XPHi=rR`T38VRar@wvTqaf zmo%qT##A{qmR9tHXj=#^R2^IobcIH#E&J}$0xy+C;zudQ3}>2Vb<&!`3CQkBgd@Qg zEvJ(4p@I2ZqE#FCaYk5jdtjQhVz?(;wiBemW)2s8#j<8 z8W3LeGp7#p2jpwf3fIV`TH0ozO6*WUPC=VxfA@_zcq|Ask`lg?TU;D5;u!&7k znVaxkBsP>+R>}jL_SmhK*-!cbcj{l%yG)MmYJj`fKe$N*F0BGkD)TTClTA(QK}}oD zu*|1eyZ8sx6M*RSCm}1GXko51EGL52)>mYn>E!o}=^T!xEhyqZ0<0 zL@fH~Xne98V6ywqcG3Tfpnw5$39}Ht1l>L8jM&v;2MfHmMa4Yenjej1n}GngEIVAM$!N_v46(~|^7 zvi6q*t)f1Pun!!iP@yP=kd+r|G5Qkm*~XHcg8R{1*${_XY4-@$2O5LhK?S1Nfz!_C zT;f^CCWne(51IT9B~RPN$BtK#xD#6qB<{I(P3%*v^wufVI>d6M3Q5txGUaF4F3ss6 zQ$}Tj#G|aNZ#p!&ZFWK^hvr$XOYmsq6hS02(I|S+8>I=F&)J^%K0_oOgc?I*nazJS zjN+69RN8J#&!;IQ1{4Pc zC}WGs1K~U(Unr?qjSvdCsrM&B1k-Axh#EkTM&3MDc$wCfU>nn}tQje(TFltL1iv!h?rplh=PMmH#zZ#Ni5P2E^e zQ+nfMxpHFIrjch&m%y;cNPpd9ghHffo*x}4=x>7h09=JX)jdBfbMFUGlC<{&E-&$z zas0HH77}2-aZvhUmH=P2gGorEU5|!SqJTwxPQ~A3cu(mrqr6yu@;cTdz0k$(TnYP z`$%d%j0*{4vDA%;Zae}PhSa8pTd9WOsDTM^p5LZUstuqH1SnW*YDHVEsc9(6O_eYf z^UBhfHnM9|!-vQuUVc#0Mh=xAJs5x8dN6}o%tjB7ReL!Re@)1ya3bP5z*p2wGR!j6 zZxU75Zl609$?zkGe0BSg!=&$OKYAk3h{iP1*0VF-VqSkzYBFJE&jNPIYa0Qxn4UHb z%gbz$yc`rGj;+V`8bDoQ2G!3S)G`9KP=YGzE`znc1SEZ3_g#Z){| z7I$jJIqkqKS$wOx_&V?6!89>LW$~d}aZY=aii^JJLbkY!pFR26jh`3tvpqj8{A`XV zb++{ciMMiUt)f>)Z-gT&Rri96@%HUSva_6aEvhqZp5Q0#_f&6>yzwmnppZ~lV_`hc z)*ksGh?>@AR#FB+NUC*wv>S-zKWdMB@;OjW!`UO}hBvT1^4Qk@8hhlo8Ry&{Srp@A zk38C^e)huisF?*Y?1V7(`F2G0Y1nMjJ#f4M#K z&{C-thJepND>OUHzR#w{8tjp8Pn0-t+ap{5s~ZV_KlaF}KT1`P29bGkpG7>RZhPc# zM>Y1y&HvWzk>zBM?1!5D*dvQi(E_GOG;QQ*Z}hfD?hf?)4z-2-Nuc&lA`ZM3e$OB` zlRfh8tcJ2jp6DV46CqtBJOdmH(I%^tbum$SD=uDwT&3CHhabT&avpbcI4dyk1f zd*oyW;x@%HoR5b2z#)5NKeX5|6KnQJDeOE)r?UprV|2y?rg?NUd*t`u5II-S36iy+ zRBw+gxZ6a7El9$)^AFR-FpEjZvsvL_XL1|zGQvz}XzuHf7~rO%o{gkR1}0JqJ$o3d z751=4&haViWshtR_a(pf$OB^~Ip>+_?@GVmm|kFyeDx<^d*n(DjE6n4-0s~awCeA* zN4AD+s@fj8;~^>T$3qh!(_b?F{yp}{RF~92qNzsBNU8~%tI#MC--^~KEB*DhN5&8E zYme-5mmEzGd*s6p(vrU~X(THyk8o`~uB?Zb(4tQL}?&stVFE z43a%HyfFZ590lW@HjXquN6irt!Cq{HUCyO{6yLVeZIRMzn)fICMF!jIT@Rwz;AC%N-PLTr&` z_Fe2EnQxEE!)XG=G6+hbbY+BBB?CmP0IMVFbB9yHO^7Oj^?@R^gQnUI7lW|ZP=;+- z-BA)p7OHlXB9(vMCojP?+)u~hOspUU2M5TUE^0m`y0VPj<#{eZ|lH|fMwxFb% zH&UVXt!gZmDmBa`$wt2iz6S_1k#l4WP_p&1U{G?yq=o_|FK=N1C0E`CA^gpti-1RdHIk+C zgK~mR4YeniO>(v1k!3>5ibozi$Cj^VAY|f^!#;u_>Nr30cxz75@86A_P&bTzKUgPr zc;vU)fkhWOo=`f(BS&MIP%s{8H$T#+(=4>YYt2_-wCj=<9Ul1|nnJ_Qk9?Iw+`EP}SsO+Oz3JhB|c)^0-%(c+Oo^Na;Ihy<(3B*|lui47=u=`cLD z1tn7lD{xIloEMhafs!v>E=b}pdvj5x^of%rF}y6((x#x=Xdjj-oG#uUotK?5vlm9z7xd4zmE|Y?E*OSY$ zIZUp#LJ`We1i3br>;8FsvPZ5}a{XDZKj2DGQcJghlHH8#s-S4fNC3#0D!b)>DY?nB zj>yggB_q#|>{k*K9{C_zM<5>g*QjGrKmJ)f@<)JE4TDDxuSQQPYqc8?k6ios{~jLs z0%8q^8joz17=lN>+q~X*WL!R!Y~qo(UP1&QCOmRzx-y^j#v|{@urvm7es+wM#$b#~ z{tw`h?_8%`!$jp8TJgwv0yRd!BX1w9WZ=gmwd`<{BuBiW{5=zoJYu4#)Q?A=)U6gg z^5K^ZJW?h}CL-rrCP`khB@k~6o+R1#yTJFslO*qaEEtbG`=W-zBR~CPkQj9eT}zn^ zA^gpFd5F;LWCrLz$M`m13YZN6O zIkmS1k34Y_v|lS8nW7ycJW^);by^vSM-Gz(>S})E!4)PRdDn6_-Fo4XuIo)aQgU46 zr+TJP)$zzBolHD(^c?~7Bkye&0gr6p`H=%mJo2>*{PQEL$n4*aN1k|Auzf8^4(MZo zu`fG3^2ak35kDT;-;T)V+OscMfG;~d@ckF@94SQnP^|b5 z3qt7-k8B5ygYiha`H=_G$XJkeT%c)1i*-D5)e=@`nIC!YJ+wCf#6+^&SU@{`B)G^!6SQ+!@$Hx>xl#K$O$2dgYd{d28Ed)`QGVDU;%h! zds}kG{K(Q*L-EKGolF28xiKkFMgnX8y?Er#%WA_T7mrXq{X`Bi|JM1Dqrn&JX&>cu zTJgwEU@GGL$nHQAZPsfaOjX(pz#}gh!lr49N6P%j`~Pj?kUCoge$DA+WqgQYaCTVeG|%Yq$UBjV4IcT?sd#LQM=t8kilWbed3Smc z3MdmIyN?tYZ`@D0@})dmHHdKCf5)NPXz4Q)M3-+RRTxZ4u*Wa6g;X1zlsvnUq)=Bs zIM#wkrUxe%?D0XB{F5IQC-UqxJ$d`%EXf-OCl~DTB9;6eJ-Ixq2Fy{W-8`Mw0=Z6> z>osznAlF>E{!6Z-a3vm@(@V*%3JTNiy2);mWcGTW2)onTm!MSf0_RtC-l| zQJyb|*OvyDXEk>`3@s0K^WDfvSXk+Fcws^FxV(7Ba%aNoe&zZ(*VwPwI57yjT;WS} zyYaiOyTq8%DsGtCg`ER(T)PPM^&WgUOIM&n{p1ZmvSD&jcvp|UYL-A#H{=tuc(dCj_B4&9U5nx zC)vt>p5%*-DjWCP?DCFEE)cuZ-+ykQhdcO~2N%lOgE%Y-6F<%KBd3nnl6v)yE8d*f zbP4I8M$Ao?Qe&ftaWqA<*3fypaCPPPD8r6pR2g!$OQ%YMq1Oo8Q;1KrH?aa3-&B9A z+O|Bq5W~AN?OQAgkv0>A-%sL>6zF7W9d+SPzSb1}M7+(wyx38h-l_};a-zrkod?IB z<52-7#%{!GJVo`Lo4kpH@O)Bc|DEaHx2XgC&+(K#t9C459)4r}Z1N@=>5}!>xC%M* z_%fD(L9KWHY9X6(raPA3myHMX)BpUv1-M*|$^jLv4xLR(V%i{71VL{Xk<6Om#7pi@ zUPuz$a`P;G%gs4L(^QG<@e-sG$Lw?3gG6ah0NBlpd{K~zOp1a`!mqyfW)A+u@pQgn zO|@}bp(|AL&aRr(g=ch#%l{L+>T@UfnbvnKSn{ zz&PwnFUN4h*!Fojn??B%Rha&EA#;Qf+H;n3E}H~WRcLDm^WcLj4if)xm#$zDbrzT- zi8dt*Zr?oV*}WUJ$KOOmqqGlI$bw0`3fPZEu^K^-D0`f?>I8O~=zZOl zqUhkCC~@&HDje2JmqK=~;(&!Jkq_pR&7wESIQE%417s@`ILT-%8V!|DffuYA8}Vx@ zVI^)H%a+fDT{{d= zAZM;m#9bEKX9?1Bt4DstsqX4`fvofA%yjIr^_IKnuVMMU(J#7u@o8TJdG=O#dX~$4 zM)Uk#hu>aqe-lzPXj*8Tl7FJ2ai2+}%r^Zk_UU1*Rr;xIAt~X(pT4C(|H?r&nV;q; znbDlGVIe*<2^jf1O2*->NkelL%}AaUmp_5KBp2%Jl;PLy{gmQucK{X(8z%FSi_L_) zTNUC4o6$OoXUdw1&5q(c{Nct)LpV+i&Vg3*+A(o>Uvjjp)Oc4r{Po^(+wX$l`)_8| zOu=9L?ZaPeUP_H|&(%%*#k~J2{Bjnhdg6YA1|9!ykuA_V>RYpQ;K!(BB*L0nnc?zo z;VEqHv~RF+={GLld9ocFztdWcR>NrC7|RUxBZWT}*ibP;_Vg$YY6?Hr#n6Rfs59rn zudzogsmXbHm8aLj=;forGOF-RU1~a;YROIN4{+AQcT%J0Fi=vIOKjvDrze6w_{Wd(Yyqcs`OSbFmPA`CKmT$`lNWe9ol) z>)oZUMEvgnRi`^z$2k&5B;prat(J~RbgdiGK{-UN@JW)Z6z7f?B;Y>|{B(72VNnU` zc?dtlYyChQJWzP|lumcj2-7Bo4ysssi+^L^nI>Xki*`mbVrj};86s;fZDbRLvXXSt zR_DR3hVz3Pt!c)N8b@LiM{D)ckvKfj(R!}fS-R}gQJ%qidD5`Gmh|;8@HiP3S)1RD zotUb~{ACkiJFDO?+L>^PcD51ss-3AP*!VDP>%#Ve(z>kM3vR;pf+)77ojo}+Z1uf5 zjZ6hr-}I%8Xu&!NUq&~+LCc0O#S?z;s+zA1f$~OsagZrc-WvjC7kDTH+5_E&HuSiE zN}!{&!wR&MK&ep)wB`XuXuTWR9)9nmpWPHwTQ~}PaBF>z?H$*DkBLDB^!Uq^Q-*WW zlQD`-!pU%Ny?6%B(?EKg8hHf z(+oq{VBW(^U`AXeo3X*=@D%NRX;Nx~Y5IjS_^#;1!Rn?;Y%gaTMidhH@b1MEWse>+pY-Zyp2v)hGGWit-^8cGFdNLg-zJ~>_2;& z&i?j6=!)S&(#k?ZM;(T1S0_{>Pq2rt+7WbtG@0V$a(rb9?6f1*=pLo1c9*IIJRYRy zP}$Vkg>x#3-j1i609PZ2v{EVjY@L=7G!Wrewl-<)(`k_p<9u9~_Z%p~aup0Q!&zU=F zwvU9v?=0S9d3-7#pUyF|_>GQ|G^FOp3LAT4prpG?TYjSxk;j44H?;W#uZ-e`^S#+Y zvCwdu-1#{67>A6+fBvyiVtfDh9D1!eNTfU8?;x=w|7IDI#owAh=Xs;2XNA;@6^$pP z4{X{xKNp*!Hg*?jjq-Q6)UXcz&E5NJip%qy>WqVLyVBYhCvVa#NV3>c%d;eLCl1g?o#GV$MSg`@EZj-bGe`mhJy5u-qrRlg+u%q>BF*ZVyRJ( z4)mCk;V)o3qYLs$2-2hzzMkZdGwR3_9~lxeE65;!1ySW|B<0h0ZtTiJWoMvJqfA~f z;_9{3QZ7_^KbHmIR=asHPHuB7pUraeC3V1o+Kug{h(TktD!?ArF>x7AH>KZZlzHpv zJ8JrG#!1zBy^nX?_AX^(INTO5e*&I$5P9jD8bT3=muzJC2FD9!^0^28CyJI@RFP0r z(Z~dIm@$bUaUcA$<@uka;7NRbmZB5i)L)B?8r08UgJ7nT(6#M)M!L3g{Ph2b`x$@9 z2s^e(Mw4o)P&IO~s8L?qqOAwXhRNX%19#LEV+6Gd1y=4b^S2IcCZH;kTO90y!Smyb z(p6=_6Ro|t*N{J}4)^a_+eYu)KhXZmKaGO2_Oh*{B9+HPa|EXv|2Rg<04%DQEdYxq zcgk$8xyg%I9W%imsm$R`DsBL;=r#33^Ny@^Htv{(){4n6Y+NKn75-o#2qcihkG7}o zsBz=Gk*B#IIvy7AW2mG8zvx+BMn}N9wUXZ+ffFaeB>yIpH=~spNwh~u$183G1fGAB zk;wdDBf5CHnhGZ1z=WOU&r(o0MGCCZzU-l72To+{GK^%?9_BD8Z$N);d{0&HSE~MW zk?F@VOVqh!t+kyv2aepvh*&O$d;w$hcj%Ug;e46)>KL-^&hJf!`z5@Kxg}{&2_Y;Nq;;~V-5mTT4&wX80gCVL2H(FuEsbxmpYMy{8S5<9%4zya9Jv8;wyTM^i25ye zcwX0j6vFHGH~4wIuX~`3o9VooGM=DheBYC%jF$}b%Xn*DWPBF*-e%>yMJ;@{3gx?} zh3_rNfqb8HYLJYdS2Eu6gvoa`+*!z&EVI@hm*ty1AAe_+)bLynw5b$02?qA9JrCZL z$B@^RHBf33nmUb+a!B|@tJ!d}Sb&LWB5`@$rDwsPGzydOtIiV3!Cwk@UbdcqD9Ej3 z;s;LAtrPjs<{Ed^yt~=BV`8oREd5K#^isU@M=TgB;MUg9c7O$+wT5v8>(VV1E^S(@C}3C6FNlFp#_B~d z7|3R3y%mKkbPDq99UviPS~j-ac~2WA*9^Iyg)15R5|YtM3~~j!MCOp(mVP3U4mvq` zHl5^<>~~$DOrQ-3PF~IA3sv$j)+uqwGvYE#KG&MOS#a`lCci`_e?U(z&kkUeWX59o zhn$x>YX<|hjKLWZy<^TZgG!uAiSzsPllz?1K^dy8_R$s<_%V*pg0L{?b*r88B^WgD6erKu+sNSFL~S6@xeUkhA{n`1pn;QvP@|Am+wvo_;2mFS zkMu?3f+H`Z3+t(D^YJz!s`WfcOlVD)cbS}@L=H&`zz2^5BoS0F*@A-GtKhpC$te&C zf;}}g=`Zt|iO?W=pRM>(8~;NMed(S^!ldadQIV0poues&oO=M?2;=f;HHv|jmuQx2 z8_T64hcZzW?J&8Wv_tBFr^Qx&Te(I1>cSvp>H4zlcg}Xpf>a@MJsx=JNKPabt=9}hg?2aZ}VLZpv@4iyjlR2qhAvJ^s4JaD=AjAlHLMGT4u?*0iZpgW{f zOV9Q0#~Lgixbz5`Jh({DKBnS<^Ox2)9!SRFa@R8+xTHx;@xT-QQff@48Z+Rl2gd`K zD08PUK(?Ect3-_@Hu1n>d>a@KWZAT_y3&bx8hzAbABbY3S2X?CLS$jP2f|iFO9@zgF;k}{afhQ$|!~+{i z81LsPU35o{}UEd9*QPC5`@FYPL@j$0eOJ$%J zVPAzwi}66di!L7c8)_|^)J9z(5)V8u;5hi!cshqqBgX@M+$zx;51esZ*m&T#UveZE zdpz*vm4-Ly=-SZnz@5W_;(=!zYa0*j&c_ksfg3)f6A^nnaNP={#Pn^z@aJ3Ofl|I-8?$`1#{<8fZz)$Ff;}|I1a1oO zt6c}LhVeiFHt;fsFELO%KHe@KxD~L6bxd4%cVIklW0yk}5Bv%KXKeAn-IZo73Lg*L za))$nOYo!Of$w0ZOmy+UPmZZuJn-(h>7s@XR6{dyuOa^qsBdzf$DjKE4Q}F}5Asjw ziyv}=JAzrZ@xb%usCb|vu~GXykG=xF75M2?u*aJ@98{;^Mqcq-t&@32R$3Z&sk}Sb z8Ob8W1HZsW(Z&N0%#?VbL`;CHT!&U-R>nI?$7@8aY~q3C=;A};fnUzhogxL+Xzv`Z z93zT}p6Fl`U92e?0KQqai|TJn-~+Qi&_QX3VE4N@m0Z<5Ho@Af$M|KuAt8|Ovvs~r8IMyk-cV}tt-+mzjLEVQ4=hJz^v46Ufyf)!xAqWZ z8bv&C*Nb(E2R{Cs#DMg8;O!lB>olK@Vuo>7&AaQ2yBzSVEjdpAQku`Xco!NET(G}a zn0Vlb!N^r}@yhtq50ww6U){w zvA>5Eg-y>Y3i2$C6u`iXH!B91Kszirxy1f*Rr34wknDS1 zpiH0*2u?1szcQ74{eP7>_W}7ok`w8HUFus+HYbZuQJn(atD=;3|_AhCN0r9~1&JI#mRPn%bPc>EdPs9U{ zeoIvgV~zyf<|#>1gSD;?oVfjunAQhw{YII-YMP3D;37C4c*VQYPWwL!o~xi6ra(I2Wns>C?5F3J77Vda>jUI@$3eR2R`y^FIWM%NDF4G zc;K9S>KhLvoH#RHd{1Ppkfj`6@h*07D#H6FO7IBtQlfjt~!Yi(e8D4;+9;Mm(^^h6wRMcU3QdU(NF(7lZa>qaHeEtl%h7jVLlt98gQ_Vs~@ z+k4evec+?h1#g-@O<@Ydo!Z@)002y33Dg+<`oN-uMn>hBkA#8i18+<)D+ga1m17Y< z3=Mm9%!{eh{FJZ=Cc8B3SY&>vo4VnPiH{yW{K`$^K$S3Cd zz!`eBL^w*8mP){F;Af+*sFeRNuk`I$v{_Y0F&-PQ+whg!=fwNa-g@xZLlJHxk* zJ{~ypDs*htc;Gcxg^dS(_y$LUvBv|SUSN2G4IdBux_3}K@T7R#cwjp|ju;Po^A$P~ zvBv{fJZO~I-v6yN9(d_SCXOl|*cJO(`_~7q+NLVVCcT2x77rYKYh$xUTjGJ)=#9)c zo>z|tzWfXKYJ`9EuJ+}$aPh#VErIHq>jQ6tAWb^a!~;tnFeGL;`~mU6B~2T}Y2W_D z^3@&>^c7ml)h8q#I1XNo-TJ`Kev={wtqUMR4=itdsN#X2!T*dc9{9rs zvlfMq2X2@wUE4zZsCeKjoO2M>`oJ}f>J|?yo@9v!{@Ir9wIv?-#?=ypTdcf3+B!V1Phy#>jyAE55cFI<(9i4Coq;mm zb|6T`Yn6e@+a~_b>N{@O`+2?>Bb@@_n+-w<+URitjhE zc%FxvygF=>jTHZP(=|B+;U%?;(>SHDKQ{D9(dFKN@bnqvr$}Q+*R{#oN<@K zmc8&W-Bz)NXoK)BG#)s2D>_Nr^?_&gK(1OUuZ%xcSgQHdJ;SJGo+yPIiB&r6XlvL*Dkn{u~#4&?Q(-$ z0Yohw3Cr{5UXe)kJXIcv2VO{WNcOQVP$tlh4^A$zze1J#Wj(n(BQC?_*I1KpOSX## zrmN&P>B%J?_%#M!(ZmA}bTWfV;o^bEEuy<05D(n)NPXgg9f8i-#{=Jd4p~r|5)Yj9 z7pzQd@xUQp&?P*i>jQVa>x|Pr19&5hZ-sBIZ9*{u;(_Z}uE2O;)32o+2E+qj>sFt5 z;GmAC>i&s%;NefIYGKTgU_5Z$!x$$;iU%GEUt44*4%yv*DrLtI54_;>I>iHf&y5fd zY}B02Si2(~Mm%u87kvY|#t!dGJdjq_c70&Z`?19XH@>AzUo}ldCAbKV2aZ`R?Zh7s z{Osjg;(^Vd<)}3<9{7?pjIi;*d&OrorNkMCVrbc;GFU z1+EX=JnV@+%Z(xN zz;C6Egoy`!va9lM-!F9H26}h@L_F|D4kYc{S(>1%fz>z6`oN@fFm?zR4=nn{6e#@w zBjj^P{0{!_%G8L6TH)QG17vh1dzmoRQ5bFcu-mgnM@ZT2;Zgcfm z6GlG%81J@xcB_5*QD>^XSl3cK?wk6%-Gw z{wj&})QAU4{2**RFzpAZDhlPxGnL(0)TU79M6acUip<74}52AxOm`h_zV7c;EfQZNhg|kU_Mt1 zs8Ne?AWX>mzz^SH`D%{`o;lG{u0A30z!BimZhhcwTkYb3<$yh`W8&P40^@;8eyTh~ z`-QHB{~236@RJwKS`4(udrSs&OxJ8*sA$7j%2Kth3^+JQaZ%puyGfE#%w*z?{Wj639@ z?J(|AdG`(OBE|z>#z)b{1HaA;SRXi|O0iYI%x)l^+SUgyL>C_#4}2vuPqlSFM#yq>@xTpMUjO|^ zcv0Vba|o|ZEWBRvVW5mZ|29a*H!2xlajq%jLU{3pj5&shTE<)-xWdZ!m%GFB{SB7a z>L?lOHo@BAUHvj%yfKjPt~%eQjNec)UW_gG^mt$e+*!z&EJv|Ea0Coh6!E|f)9Vxu zEY7#a1Fzbu+oSnx6c-tH)w~;F+~t5@t?Xz0OKCp+@GdkSIAaYgxNSVJ_u-5Ortr%6 z)3cUVdPNJnc;Kon68+knmn-dgD_I!(A+TIT1m4aGj0bi%DA2@;`DXm=7DZvDPC?>< zN0R~=xNC@FfC;ppn%l(#ohtb>J-NgKzXFay1~P&ecs!Vb#QqL`BSkn(ry$QBAO$U{ z1>=F8$9Tl8hVtIqwtDerOIB5W{cNG5w>_O zyu*Hr*OQ)y%G&I-s;pgEkjk3kL6FMQ-vnn^LnOkVwMJC8x^gqNTK*l=1*pEdwtD#7Wx`rY1P-| zC`LdN8^v-3HnBU|_-*wyxM_6y`uwlj^;L6Qh`wGctdG9-pm6s3T0pC7n#6INV%Ar; zl@awdQC~70NncK!5NfxD@_WxfUoQet@tee#P>cY5Jg!v!d|Q3pg^6&{w67l3 zwd?B~^jAS$Sj$`Lqpu#OtA&{q@9s;_u& zkiK@aT!H%P`${-{eUC|XhQ7`_e@y!M>7l)tH-6fl0Bxmve@*AC@-H~5cY3@ydXK#v zyn!mVaHjS?hrXGP>^gBj*>}>+j{=bn_fTtRiLo;`nztn zReyaxj#++hi_puZA;GJgHdMlk~PcO%OcsJ|C!7i{!*#erz` z_t$TA(O(;MY(chjF?av?DhA}W6y6Eq`n?v-MSWrLxxd5@*>+csDX;Xho zHpHyI{KXOV7j64{^fP?U;h{F^|uWhzXaG%c6}8@ zJuJs_+`P+F-4eV?#~JT>zsDmra<#QImH~%ZAaM$MfjIOJ31te zo)>}MfF$*^64LUQ=NZZ_usqw)%ERi1{v(=@3pL%^gwl4HDpH7*)q6C(#+@*6LA_R| zDYSZf=xqg_a>IkV46kv5aXu%{yBQLA-i;fYvNwObXk$(DxAdJ@%-<6Fd^bKr^H(c= z<*$Nt9|O<3vAT~_W{R>x&b#UQA1LdvudL=T0kr}8N@Pj4l8rxEu0Zp5%JZT!YDIS* zw^V+u{k%KC_?iBrjsB+p9F6{ZO%2iCzix<8f2Am_z5Y(dfWoi8Un^qP-||Hf_2)N< zwd-&7efIjh_(AAz2yh%>T-4=4F#_~=8p{=^zr1Jd^mih**s>V=+VuCT7LESC&JWSw z1J}o>zx61rz5cGpfWoi8zUyMv-<~HU>Mz>%*X9L#{XKj?^miL@9l!qOpcn!Ao62$p z>Tek=159R6`@8DbsP(t+r)czdOkRlozPvU@{Wbq0oc3V<|6%cv8F%jYR{~8bHnAmuF}y< zT%}`|WcL3d)4M;T^zwx+-<>NFq{12K=k0JJ*Q}M=lMAc4>>#tkGjMRC-sq+D7@L69DoYaQe4To0aM>%&0pv8W>wQ2uYeUo zT`5E|IpgsnfHh-R^L$+2Xnemx8+z&=sD9qj8?m!u!sKUNzP6*u2-4&ADubDMEWXR@ zu6FfYWiT`K@a_3H7*FfVRhSyrVp=N`?SF*&wCuZF6*#Q5K5=<1>Qj@S_4;)FL$>wl zmdx7g(*^)?|7YscD+~Yb`s8AccJ--8c|d(CcsxRV`mO*wZ)45X+zT5hs|G zC=)x{>Gs|s+Y#J)A-7&Ey?he>7r4Cn*)HEqr>kgY4iAEz>2$wNR`Kr^7wpZHR*uAG zj@FsE>As7Sn^pGXf$~M~Hgl(a?RE_P+T}a15iDS?*86=ZqBJuXXL*Tn(vO(>Q!xJg zNwC8OE+0xKAKy@h>4d(~xduZcvAc^bAINlab~uLlSx(LKhCVYq)2XaeR(7y;a(TyQ zyS)2g9}2`ioNloXxfc5%<}t`VIA&)-5!x^RL5(4qlA63Jrc8YKrabu9zJw{TlZR0X zuxJI8HwrXq`-u<|^Do)}c^rT|4!C?{lsvk;XUaoNr_1{p*OP903E7p-ERf`tkh9Bo z#NbcA$ImQR>#=ynNuIu0+4|qvs04k);Q8WD`N@g*nVZ&Seo_bqJg6fsIgxx+at;Kx zN!#c8g!ap>JeW>8O?--aGY=Dt}ZTIn9T@ zkz4W68Rk7GeHQxBof9Dj`3_^^94+rhE;fz-QDvE&1EH3~{8yk-zC4dJUvS#J_GT-5 zotb(qMaV$z0PO2t(;PHum6*SN;xr@Xh^)#vZidkXzYDt3CLf z_+5}a=>K6<_8|E?XYKZ&G9#=#SaLnnMz9B)zf~XAY7f?ieiUR6F8fyO!KW(A0DJJX z*RThRvF(6i4_+K>*n^pPuicGTrac&%ZrX$W%VV$yf8G~t56*;zsLdX1|4!M1=WYj2 zeZC8_2lG~lJ*e>HDtmD9)3gUKF^%z0;*F!ym4ATI3)?Wvd#*lw$=rmbYM$C8ymF7P zMyNN{GyXdl{Q?-)l8+p7yzxlnE$zU5r(}Kpi7yjr)?Rpkm53(a*gbH`qwH3BPOR_!7ffw|1Ta7_O(34GyYe% z>J9I2U4u!knBlBGxZR)b7QCU-(PfT$6J^oAn20a*w6E_tSmPK|{=4IrjO0m~{damw zpG_`=G~|KPQ+iEuHVzNtjmorpIcNnk#M7ltJj`^IE$~ zF=AVnpr)GDtgd{>gH9JYNS`%HYl8DoJYL0(VgOqfq_}EUZ=X!PjfXGj!BU$^ZeQoM z7z??3u63=dZsJZ`X~v!IicpKi*T?qw;Kz zZzzVjC_pn$&(-dp)f}Q?yfhpAkf*d;Wmn##+nl83W5ZX28xO@Hd9zDTaW`4(#kONE zUuSf_=OuW0?#*Hs`L31@D()s*D7XT5&u?6-_F>>F^qg9L(_J-~QCzY)uNzNyo8ZTj zy)EJ5(48o4Tj8pC%a!)=i(N2_`ion_{vg`e@3GW)JV>~R*lH# zmU;}0IEsFQs4O&|45881hQ`NQmm_Lw3Rmu@pdH0el7{y-#ZGztaXwdyHr7f=cA$Ls z9@&9XeMWItXq#Hr)OhDqOL81h?}9($bYTb%eY(7p$$`zM5_$6z4>-^K_36<6h?JYx_1!WbudWUEhQFNc;WYz2b}( zOd2W`*-r0+q>2nYU@bDjTrZ@HHO-b*__|VqbwJKB=Die z3K60mqpS5Di#lr!EuP=Sx)5Xhb`#5-Xxpr&-+Uz&byV^sGs2OE<>&Y&Z)h%l^tm#h z1ImCu*zO85;S&J~E5L}>SS3u;6UwuPm{7~Pd1sAw9xi2C$FKRI4X*U^-kfJJGCF`> z9C+4VSSpNE4pEHAvk^KY6U>C20}`e(;WU--1wElWYlno=B}C{CPW=eE)vrHz^lnwP z{QW`Pqe*q_4_xdIo@VunsXq`hmkJp%=J(~YLf;{ehvRWzfAB>Mqd$-jPV}dH6L0kX zpy|Rcs1J%n0>04ugXeyVu|K%xE=z-yJ$T<)Sew+M?hk(F&Vc_=e=zl_;Qrup3pdgB z2Yo>$Tz_!+!CwwlfAHm^uxccl{@~sa8b3@8rSY*g?yv~`L6((}*y{&D2rH1S z{Xqv%sb_z%v&>Rhp`R8?e`UO-KlpF!hV2i&pWER5K^aJf_6HxasJ8t<&h1XUKltFY zkp7_OvtouXOV9Q92kQXeus;}MCcGygq1gW4{woQ4>Ivo99ZaaX3eX=6#-&Va{y85s z!Ik~N;!=Z=%m8{~`yW;GHais~^6V^~k@L-jEdvsY?Y~kbd{j>;&*G6#`U84fi7xo9 z9b{fW(GGO&@h88BJlG4sukv_HtI(?;vf=U0s>WaLHy-o$enorK+dHf0D)iCrKehgQ zT;A=jRePJd5FA*go$YF}5#xqCK0vqV8oyS#5?5E`xSOokPD;WcyXck<30QIsH6#?@(HRReLx7$@y#=JdOuP2>UU9{n^T&9+K9-KIhS$f^)vR^*T<`ib zs5EK6Ip+3*+lUD#h8F}6qwo&YD0taGGj+eaXiYYw_p7~Yv5KJ=_ThTZR=ykF36QU> z;S%{K0dhDPgC(}Dn4}@pQgCIP8U9PA)D;dLD{aN^n{$%+cSSWP^0^6C?D`&44m{K z`@bv9%9Eqda!U#*H6-!CO-}58{4xuFSB?yKKEi@xa94O!E=C@!*)WUVa?%M-)t+8V zd=7tkFpk1yRC2Z(aW8}qE4UWZ)fC4HW7rMzcf>E#2F2+y#PorPA!hnxh)goMFMM|i zmASp;hVL%eXqGo1W;gXhH-;A4ZDOZSm!$ooO`61{&mpNqfB{j^+5ZFW8CuN6?7HpR zvJZ9R1_`>nYXT6_MFLCA+OdQ-ZC&OP5o&2plH-I)D;*~kEQ0mxyDnE*zmh_f8v8PS z!P1mwE_8W+W2~f)3)2gMjX=YrFv12n4n#tr2v2D~;+UBoM7bHI`4ZIKdx8qWRUxRG zzts)1$2h|&&r|4`TM>|e4XMzIalC06W5Dm~pZDSCNzgl64L%v22#qyE+9b`@1^Xj1 zUC~U~QODrX2;^iY$}8V8Y`EYXg74a0RX~^vpHIUxe7+T*SIg&H@p+ZJ8i!YEFqWC^ zNQ^_M0Z|WEqN6pV9+OZOr%@IO3>^keKs_GR_fHk-PVH!tNbKWiouBJSEI`tk2=D|Z z1@j6%AK*98SQmC@E%BEJ!^k;kC#6)I#YHE=o>td!-9ZalOo1f`7MoyeOUb+T6nF9pfA&Ls^G>Q<50{0RDg` z%1LmLTpsX7Uw$qGUchGbhr6gIVM<%r00eXRDYTlyI#M~S16nMNhqORPmCJqc>^nOYkJ!>%} z5=p8Y==L78$vRj2a;eHX7g_5dx&)CPeNbgx!17IEr|zWv$kp7J%Z6=-xx5!9RvzZ@ ze(&-gO#%5?On(CuITEZ%b$JUZWsw;-fa&8QxK}Ci%v^~kwaBf9?N(|n{;T-u zgVt4s|MNw(UPSf~Av2}xP}0pTd{YFQZU}azp*mMuHAD>5PeNsd+V4w9HnT8Dz^@V2 z1dGURCfw|q^XaGfvI@2Fmq{t%w@}aCtx^t8+CrAYQ9KY=#WL`SoM$+Dg>x8KJ@q*Z zZyWYd$1<)3mhrY9%NPbFyS?vgpUk3b=^YK91@_chy^*8o)!5@JzkmttE)bv{DeA79 z9T+FEJRsU3geb}yf#|~|dKQR=7&lCZSg3V=1Y#8LsSqlrDZZ)%-})9L)55yF7v`ip zQl?blG99+>dp{C0b~OT^1>0YMeq{D2>g>89hP4?`N9nbcyx!ODEv&!v7}M59g8-$M znXF51dpQ_%v>xDSeRHCz7Hb&LsutTY;DuV8PPD3ZX8djEH%lWb&4VVAJ3q3V_5T# z_J6w359$BzIrRM>tT#KRkp55bO@=ap`@eDZ>HjF@==#6M6+aE#|2<8zq5U86NZbBz ztbPB-as>B(kHygc-Bf=IuKGU^kp8cWZgv`^{{zu5{oex+V_^Sx^FP@CO{>53RR0G8 z(*GT!ORqutKb>e*XKPQ;F#X?Z>Hp;Vx?EStbt$f@|C_aHB09>vmM(9jS5Q?E%gRkq zLw(~tXDo+*kNy+WfA#rw6Cc6cx++pxm-!}=p#|jtJ(~nvpdiWRjo-6U?>aLvG4u=6 zyiDJ9%{&8_YREaSFKW=Ap3-Y;=#Fi}II1M^fs5*%dfTHAJ|vp z8TcZ-sJxq~k{6Cv()&}Ar>{JMZ1~!}YY=D*0%bY{rqV9yi7pjVhW`-cN+Od8USCQR z5O7VETHhW#cV(u{(pR=tnf6whHq(6K>iUWdZ$8Q6O?7*3LD%u8-~IP^FK-WLuUX+O z95tN`-YO3_)&oICF5grcLUAa)n8q~~f|?C4AHd+ut_dE;;NRUv`xB<Nv@I~)AhOL6oIagm z5pX!nr<1zNaVS3>HAad7#P*=eo7ojpzcFJQPHd(^D^>@Lb}%x;BM7Iciu>x$133a539%kSw* zOHa)2&I;{y%cH!Vl}BZH;@0-I_ToW2d0s=>i`VaONPDsPVOx7q z0PsK9UL>nx#Aq*;Px=S!#TO6w?M1ILi@itzH-^2)qa_3CQMh0`#*}_fxbcI z^?1MH@+@P1V-hf93KA!YVva`Xg$T_6pY_I%U7V{hjpF1)d;(CvDq{|3;c>y%sN{(r z#4jPaNv@)4*%;28nJCi?xl}j@rqQ*oI5`);4s-??bCxB$@OS@@e8ZY*C*a5_&g47J zy{?=HaT(S(4=TjgxcLZ)0yvy2-)ei?65331vffFTyH(7=nQ9E z{vSF+e5rj3*}^w0R_TkX;~lpRr|5jHee^Ylw3fa@?FJ9mPhT;O$z`|ZLI{YZrmw{3 zaqhHok7H1|%U3LUy0G;$8DW$`f8uNFVqq4s(7BQ+zMX?R8Dg^pGP@lDUWkWg3HXJ| z0%F@bmc7SZNv0i5BJ>hnykxt4iZ||W#7sQi*OJTeOUNCI;-G~EviqU?HP#6HyG0gO zICMZfRl&ulnCmI_V?D)w1BXx5-skWRU_dHXm{?~}--93mL%Rsw0eyG*?p9@zcv|T> z2>e?LWUyW=ax%)Elb3>-qF9;3@=w4oUu5_O4?}@hBw@C1Kh&AB?O#Bg++XlD{kzxn z?}jo6^Z7;it_8m%8wM{*5T*dQjwIUReuM78uDDMYg)i;{BVs8oR}IY>gJKMRh{gRG zLI_*j>I?DR(fqD~io0vReQ{UZ8os#y&5EwL1-9Bf1;w4#6~!0@#~sC3kh}>cW^LJu zU#b3hR)N3MSHcFN+PC|1w5t7ls2#&(+~8TN5vm=Zy1iN1+Th#w)oeerw%W4(U&!~X z1q~;@CHL8juK>}4aE;>{k2-1XE-9Sf6y*5DWoPKUyk)#NeX;r89beuUj^m+uY(-NA`6-oc<~a036zZ{teKNzBLW z!cCZDFOTwe;%58xu!r(c22PHWi{<_c481^1X#Bc;xIB{{X)9`%R(VQLkA!U7pR78g z0(?O272?-4sV`&aF4EdFx1rW~ z?@o@x4UmmQ3_CIH+dDT|W12|7#KmmDJ8&N>U-Mo_(yeW#vcs=eLLS-~38z z2SZ&(0j*?C_mwD-5cUZW$$UPDB$9_wIPId#l}Hvb1w=wpdI?DcrMLFD);!f0M%{87@ zZMc*60Bw?))WD!Jeh-%@2THKi3TR!GYnfiI*F?fBobjaI^N+l`q`gz2W6U_@T*I?vadAgo$BXzHm7Sl7s?YIw_ta81bw73`27y#HlLxIlo+*KX zWkOLZsm_ZC4KkD*4ZBu#29CeM4FyZrnN}qc@={N<*2kR8sQ|Ea@*WtjWu>vIbrIY4 zh9=Ns;U&7c(~C=bEUq~Ath~%*A%6)J2V^ow-bMh6Coz+w^-Sh71!PKkW+o&<`ygHG z<*>FevFidL!YuDCm=Lkf4-p;OUE@pxIop*3bG11C7Ztcjwl<^lCnwHLS>tD#j zCT{MSy#cvz-^{n6H9NM-lc`spthC)(j-k7iIn%35$sJ*<%rGL2sI%qZDWJ+=XF4gV zUNL}!t0x}xboV$a4p@%M>rQ*&(z(yYFRQhBqK|*u=tnY02S0ltJ9wzpDM?TX z)BN)x=BlBksav(}NXWYS1ISmqcO2ti;EBuEwenILM35y10sW$|7K!3gQp^BF|6Fon z2SkT&yA(PD+C#Vj=&%#$uoW4;n5&E$pEC$Ud@trZ*Jw8`l6mERzowA$46ES$9F&bsLF=HN8XrYU))`an;U>W8 z(dY$5a(V$RDs=B9fITf;Kfzi6jPm%{oUvD68{M^etERr?>nM|u?6*N0tKhSZ1HhPct;BlB-js$K;18-$OH z6^?8My9AYj$Fm!I){2k(dUyljBe~hSxdXpq?$E|f=tAQ|nA3&)jR7CocaF*=tUF&% zeB?3E{lAZoTs|{wl{xVWCAe}ZAU1p?7lTEGk6br`E%)!lM^0f~jvgQR5GOQA|0Vdy z6)EiC8vq}Lwx>ngdvD%Y3fx>&AH%k?q2{ztC&;aYcmxv9~WGT`ab4D(}u>r>4?>7&`N1p2#)KMDv$YpI}!bk48S*lJreB`iQ zXLC!e2A)5XB$?J7A6b}Y!ACYjlz$&S;zJX&8v>37fEaEF=_nJ=IISr z+{HKA7k4UR7U7C}bgsFr~UB0$;3$bNNFm> zw}1p1sJ2YvNYw@(NoDjR3_fzwiLu}#Z|JfReB{GvQk3u_)bWuE`dI|HfQfAJk+&w) zA0PQ96D6(>KJwvJNT}wIoVXSENY=H1_{b4>2z;c=XC^*!8a(i@^GB}xz;LM;tHf8^KJp^|#; z@P@%hK85A-<0E6nE0M&2k8~caMDjm@kF>wRZ&%)ee zkoxd<;3EasDOKCxBWDUnQQ{*@I@OAge7KimNLo6YsSxNw0UHsfcF6n@=h?csBLqS? z_)y>@o6l02G&DX^1iJtC@sZ4H!d96Uh^;it{1GPxiwYkZaVA^t--(a3WnGRQA6fdV z4rB;EGPFHA_y)j7&OgJ7j}%@(gBTk=(i9X!@sS};=qv(0^43Xyd}P3FcKAryg@TW) zue#WekDNq=M?30D;3Kj}mi82P%F-T@>w|K=N3QeaS}NBfxz3d9R9x$hj~tkOXz-Es zyOg&YVSUZLY#zRLPfa%PkvowNn25|7xpJ+4{>aY14xk_RudneX1a*`KK9bQmCVV9S zTB$nW@R6UsJ{0&!oMc*ee5CM13qJBHMEUpOBiEvd*$n|t1%McC2zWy0=tj`t@sTk* zF@pZ+Y813~d}Qhg81X*C?;2>td-DYQ;toLsB3yA#KRTA;5+6xPMlrs>ip8xJADN$m z?_TA14OHBDm)jS23}P1HiaWehbj1yik96Dt?e2yJL@~k-?oE8;rsFKb``4Mwc6k5& z`H}FED|^q9@1qY_{h?U5k#otBLk1M2yg}y z*$VK{(e=ki-Z%v%t`9!4^a3PQ_{iQ3z(;yr6o`*}jfcQT4z4lrk@oPw!_FV+-Kv@2 zFFG{qYxXq?>XCqttk~CFT)YAuZz!}n;1h8Zaed8?Fg#)Lkwt)C{P@VQ^HA$z!$%zb z^#Oy<@1em*K8y>Mly9$+)FyqXvK7B(D7OMPx}+kluXzcU%a4zocCHdh4EV_YzDgwj z6ZpuV7yAv16(4!iO(w(QBV~tK@sZoDwxV4wC3Gm)*9;b(ZSj!=uw6HNB%3Loix5?k)yiI40?-gUr7?%Zm{M|vE_4!!~KkpVre_(<;gG>Ea`BR`yIhmRZ& z%NPkCdGu&MK5|sP9X>K?nBXH%Z?WJbEs5}Gd&U4C@#XW+*>asF*XeT2m+SR%y;82@ z_CT7;sT66NfIRS5`tY2GQ_;wq2gkq3!fka#3^ zP?zULc#fIP9k`NNl3|%qR~Qx?S-}ie!woEds~Vl`MzzaXw>&AbY%AtTc4p$gX`F$J{q9J`NjJ7~aP13JJ=p%P6IvxljVVD>FTWEMpE)s49v+v=?fnZ9v9OR! zjlA6c#wYd3C|?sX8>4W*1=rd4lcko}@jK!qa_)w$wdi57k=PEg_Pq%D@7caeCh22~ z0=2VSTiGumX!#*NdjOwd`?pCvhb&%O^cr$86tV#fXL;Xtdp|KBb!ODd+ceo-Iux7x zye73pU!PbAf$|Y6j#{6{Cu)7-$j!Q;TZl*6HjXrC=%lGr7Jc<)r%YiHhwTQ?r)V|Z ztwxR&nTrV1VfxT|SmpiOVqdsg`vc2E%Cud$!p=l!A0-n|tJJ)-`n8XVUq;hD2EbmT zeGDCIw2!_>hBhJiYV)PiKICuT50>_kSOYKnf3AJ(~(+Q*!iE$w457!GP5`|+qA?W6A|Yx`Jt0E&*GeQY_-u6-O!17g!YKE0OhV*{>e zA8Nm|^T!ycq$IK9z&Rb>zj$)#e`trjjcT$B(yAQ3dAuunGXY=3<&ARr=E?D+x5J=d zZIJc&QFa);(6tZ-Gd>%S&u{`Iy5S2RMgq)Lm$$eteX=vonB4xIeC$c?qq*AQ$i|li zL-V2K(=U}y3RJNTZG~2SBokCN?Z4T(nlHtw7$12@VI!xsQOVhPZCs@|4GCR2T?CfX zRoR}%n$SWQ@6;SmqAK$XlUIW)ceVE06FkLoHcN~0+}{>GK3oy- zqP|8a(1$M)T|9acIrY)oP&4f{J#uF)Vi<8XD!LV;m;sIv2KCfB- zkF@eL6XI}CDNeSU$0DjTd0w^0ru6;tfL)9ET``V>bq4CJEHIPKOSeV@9fNOhQ9wu>lU59H)46aq3KxkrYkT229V>OD%@i~fezSDAPGCoUc8#;7qR?_ zG+polL&`tSEI(0)+RERrJx;I;DnAiXZF^F1`J3U>pz`0{n~%g6T-lw3Eaev}kA+ZK zb(Eh!8u>E{P-kf~xHz$qE0%1QTDd1&!NcFnxofyy;~1YMU` zC$d7|sN##T2Ui9Tty5Y(YukQopS&8|CzsTC92w;$1C6{%#RNe#qpv>0uX|&2K9z40jVnHAIy~>)q(~4WFaEwyn8pb(nL&F8f*BW5aGB0eU5KVf(nx zzvV~O{)gOC?kzr4+r4_QS&nz3)(5+dNE@7}Ju#3y0fvzQBQsRf2=lq-v06{+hz1X1 zl7k!hBUc}xx@0INRX;;AxI38^(vrtq<*fL#u^sXB(~dwE@Cf}DZqzZz6MJ!{u*J_> zLqjJgC02f^#a~8$u4cUWbG6I+-V1V#;m%ev7AkMgPl5721NR~FzGAD5ywBxBpO+2M zkoQrhyiZMyLEdp4BFp=e)0jcM<^7-bLGu3L=&2WwBtw0XF~gw-zZ<8va)`^O-8 z<32>*e|}>l@9+39pnhk=^y>Bd?Ex{!yX>gQ^1e(msJFa(A&Y?eo!2R>yt`jQd3VJ% zqP&-%A4%R{eIF?A_i!H~@7Z75$a^v$2GsBDHm1BspBjU_liEd=_wG|-s^71-4U%_L z+Aw>2@)DMhlxd4`g}j6ClZ`Y#G<|60Xm9bEqfLQV;8hmKfnU13ztV;S2;krg9G8x9V;@1H=dA|F|08*%_>@jgKGau z%-_0waUvE$WBcAsv{!&BX}9!wQe1Fq0N!~Cb8e+(1B;9=kIZQKO~AJ&eicl z(NV3vEf-KxocFd*@KaRX;^r(G4AKjo+{;uEJA*+ej5fYauej|kz+_E%sZb^)MrKp; zVx|8bsA^3}{~2^J+*kUS<;J`>2pikay_PKTa15q}VdTu>s0|VM@zGL6opdI^e z#EyMy{X6#UL<#A*v<6Yw#+a(+Q=p|)B%Rns;FU zqGsKMqBEvr$8`u5jnXQ{Yj{2@&QP(6@zO8OLLj3-WcUYo(~bj|tdU19YXBKO4T_ZE z`;ORUIG)@UgV6S#EmiZI*F)d7tOIIo#+=t=gF(;ua&E7R7M6gg+VFI}=JSppMZNBYmq~+zCGhHdU{v;;EP`9HKFZiMey%xSAwoE zSU~Rh<{A=6lDk_IpWt{o#uC7u_0O?P<(lqMkv{;s#Lrt^{Sd+JI=R zYJVEEw0BxS?Ki+xqW3f(I(w6&RGx&e5I2zV9Q?$I_4=6RfVZ0O3|cQ}doEHlVF8{p zO`%FNQPSW(2Y+OEckxxOdgbCP>_U%&B$$E6`?!!S+Lz=g+J{#~`#Mdz%E$=Y2q$8* z>-RDo%Ud4KajxW(wqeRiE?;^hBEa$h7LPf)iV*GP_N~0hnA0+0ZAL<)xXQM$MCrb4 zY_6;uH^(z{k`=S8&vPWLn=K=GU3gTIW1EM zt<6Yn6j!vmvB&$Y6p}l3GsX54_?woznLxYi>B<_rZ}$r@brGz%&$~#s;!NOz74JnR zEqSXO^v+s*8qXOD%$6TdWJ&-b6SbmqO+&6hx>}R_0u8x5eB(wMay99Xg5g6dD2`;H z0tj_oVQPOz$!rWA%@2(i1&t;+O0Kni(>T>pa-Qv*CYL%&2HL)93Tj<#-^7o1l*HS< zIqVWR8d7Gx5GHTUKA`=-@EN6FE)Zyeydk-V{~5=M7TZ^4O=s5sSuvzeim#$}~#bCj%ydb7N1v_CQL zg)Z95RJYL%*u+^;hGnaYQ&f=H<;I&3r;^BBQMF8`X`bPDBfWF_tnz6v94_xWIG0YI zx4?6Em-M3TS9-i3sfQl#k?FoUv$2VBdXx3(jyDE%N?VoREqzw?*GPJEC;agp{+Q7^ z|FHC;zYd$xd~MN2RR6fjW^0Q+#2>)#-_fq?!v?F@N4V<>3TC zbJur@;B)#q)hr||)<-~q%(UKjF<}D7bt~=`EVNR_YEOWS+_3?dCGd7 z8S<2M`s9$Otk1Hyc0g{d%S}SQWj)@hieTZ4b@=m;r>wuLLY}hj{x{?)>+L-uPg!Sg z33+-%|NLtMCDUqP{)GlRIE>ygA>U(btHM`IRLJ}etc+J-t{>v3h}>cl&f3C{SP7U+ z4Aix~#ao`Mj(NJ+xTBfVMjCf>csJO%OX1zA#$5vMdhm{Qp&Yc`JW8zR--;}{-K+m#a4VNUv$*7sK5i3hrinE z{EYos1qd-Rv!EGVt66J^n^-5QkhgLste@BU8uQxTSod$9v=k?B@Y&C1@F|FMmN#JV zIW>=iruiTk=z0vWZX+%Qjfh;I2O`_|qSM>{2QO8)XzNafRJ5^KAg_&)>qxl{mun`j zDi{f;Z)WP$1s)7L0)vZ+f06e;x6r z-_|xP-t@u&CBsJ_X#g1-c+*%Aja7!@i8r+cAro)v+Rid^4TCprRy|=jG{_YhZ~8Pz z;Z67NKMBfGcvBe-3%q1@uNIZR36{YAG24pZb|`>P`3 zP3NpDhg%7QBW?gzU6OCpvcELGY$*op!E4yMv-l!JrH=_56Z2?b@rD-||oc zRAB>edH_UYt-^vgjRc`Uyy;aK1}on56a$Pj)|5vGzNq6(WnuXb0Yg~jNUpU_5V4%>EZkSIlQSG@{WWzallP0?qd6>6>qvHB@*7$#%UUI4b4`& zt2oe*%fk_u{Xe`3rb!3Z3jY6sH_h%`3*PkQng0~tRE_E{c++3_L-3}9$JB~9Ez#Qx z>#{2n-gIgA|A#jj5Ygd<)Bb1hroEWiV!@mCvJ#kh(}AO9oT%eXyNtVuFp%1}#@!s= zeQey(xzOG=?h<&nf_IVerX{Tv-jsTerN536Z^}bj$zm(m505ux@iQylbkZMiwGIv5 zG_6XxA6MRODULamm%(S<@TL?H40Ju}fj51>3vNdc-ZTcyyiD79I`O7$a{X4Wo8|f` zt|s2Z*g7C8M02+Hg`~0Ga}{SW^8Q#vBzVvF=}Q`I$7~<-J?|Uwy_2)c7vc?PMfJg# zm|ed>L3`f#9({5Rv}!&-F{fLmti^PBtgFP-s1j7D%wmA`FX4;+>oGa%b!`6apZ~JF zsl!#X>hz2jHTgX-CF-#JookCY(GT{lXe-ik(tWeFg~#I0Mk~`mqcRgTNt($%c5Mre-c7=MM3-+ z`hO&x{!__6^$${h{o`{(|L2JQ|3B*91TMQ_VqppVhr4n{M__$q^ER3W(44E>UxIa!n93r(ntb$zpgHgy5sfj+>GIqS zP37l<+tmh+S;^#2JZV^_J|oZNh&$u*1b=iW1_i^G;SJki@NhScXMcEseKPKd?gWc@ zwwY5J9NF8bo?W~5Og}FOYXnv!QF=G#qml9N@icAJao77=QH7P%y#xr$C5T^GFl=(+)06oR794<)hr;vI+buG36dE8`~ znsPP4*?vlJBSw>0G_(%mI9p6w!+zs`$52tjcw&~ z4v#JJnQ{>FdH8xwKG&ZFi(GD9J|6(OFZtYylda71fh~m4?$aphKza8mAI&B$W!eUl zZd9hW3md|?#lm;2^TUA!jum`O_}Oo9ypoG|%V3WYT>76R|1!aU>nFg^5%4JtPpDj8s`We-yp}!gI@}&L;QRgyhZA)Br5p*VpqRT5sK*&Oi#=Lg(@{C;j+k8N8FBE9{X}1)Ls`x|$yvh|u-RsRChuYNbDnDr}&B018pV<1B6 z7e)7u?A>?({UW3s+4*?&^vh6IoUmxu42yOJKWC?1ce3?>hxddrtJiR|9(Mt?LE81y z_zG*+ykh}q*KMy!?b=yS$lPALUi?97*LzgVpk2foWlyC5wCheIP7YN@(8`^e=he+;S|)mdxpDO_Y8Gy zD6W#P|BC%aG@d38MEy~uI-bs@2kzh>BU04y)GU4?wu@5K?4HK%(2Z5>ZWlmrb8Wa# zC865}>T;qSS#BzxwT4VAC~Z(5cfF06#!gXwuTD9l}`5X*T!n#qYH^ox=@MY#t1FiIAls5B+cN=G& z;*+DIRsC7QvlcVvp*@rpscDb4kEO zH^k)fT5wO;>2KjTKZiK45(@6QejelMQtpWjUdzayT|_}vw0A1{7K zk70gacw8%1R~GZ)_vD>|-_7fI@q5e>;a05tZqXuOey_YCAbzjiDfqplw#si^zn{Hm z*6)7{uL8gC{7LY;{S^QFUYy2^T=tm8$gN1Tc=5YnG#AU!i@ha_dGWi>4#DrQYI*Uy z@?m>^ufQ2U0qS?}>jUC(uX?Aso)#COI!<-XOR5%c=`6Dp&In2Q^Cxpm-9*Ib-K*Tymk@()for@h&8dEVt zAj-oW*FVrXpTit%A)}VMsUUu;!6aM9U2?R2>KlpBmsHFy5anUcSJTQLh@Sm{6iG}r z$UyWqI2cMfQ4Huk%=t9}8m1hkSIXB0Fn)fjeu{Z~BQx73{SxCFsb3TtIkI*A`W_}| z)Gtbrvwr<*)~`kr?DXr?t&)pRh6w%Q_6-A_8IM(1zdrmv0R6iByhP+zM9MU{wG4Em zeqAY$`t>yxGw2r&bd5Z#%Roo!*X(?W&>$*ir(YbT4xU|y<4kxTs=2bbnsznWor%?_mry#}aXpI&RxuQL0udgL8s{*U@c&41wz z17rUI^UsnJ1&BGPeuamn1(62k5lZZ4Ei1_edJp{f-l*^UP`o;b$ z@=O5wb%P3GHG%L>14{q3W1U239u@QHzvfRYzkcocmi5c%zv{!K`PQ#ZSTVChSx2up z??t9k;yUe(b8mCGlS32S$>9mD55{k}R3&l7!L$b`bsy^T+;J=~CTLC{ch&8g8OcFu zx4W`3l0p(Z&gd~!6Wq>de05b%Z@HRMt{7n^w8rr)vFIalo<~gAsv+rh#9qJGS63GTEr84ko-$dB^-s9 z6BB~}2-lXFNE&6&iV4M6C%(GG*C=Hsx=lJN)IVC`i+r};fcze% zyz8q4m%9cXH;GhxrPT;oup48^LcFW&#(dduF&`Hp7OS`i;P_NNu-P3SMTa&|yBHK2 z6f~w$f;*;|wt~dBF2I&;d@OG2nE3%9#v_XEw*xA;rI!<5>75DR+$#!-FesA2wMF(K z)BrBr2Hg1j2~-sUDnf!{mTvA93Q&DRh>~kmN=oJsA&^8owi>x|syNSYsgzb{brPX~ zMBbY1WEJ@|KNtnRM~uiI0KGIY9uhNf+6R;p_LzI$HbQ1A#-%#ag`rxzO4jEE;eU9ZjWju|)XIj38fO_NaL6+~K=I<#^#zSu}+5G#G z-5UG^_qFjQZ;=ri;Zw>?d>6mxY2RJ$Yh5L86&St~ec@*KDWfgz&ockMWSOOYuI2j@ z%lD<0@5SctDM{w`Qj#s-UFPpgQY`q4=I_W)XPtsEYm2>x(*$H%v*dVMvcxGxA;FT+ zY)psz2S~8S;1K0GL?K2}uWp1TL$f<%@~YYFER>% zLNuX38tksbhxF|$2`#Fo-mgid;G9mZ1=-}p(W(4*73lqdLMqT3Gu4*f4+XtN4K;ed zFEY@35QKu>?`!y@H^f9QzR|@H<)T-!hm;7WKj!Y3dt$t0o=qIQO z+0#K0WUh3SQe>?Aoo1Q%5}Wf-vxt%;R*TQ@-KrMT(R~q{uAd^<^b*P#)MDgFR*OZ* zd`PwUgjU|DYS9_|0h`)}_+wK*YQZ=YuCeZ2;-ps~ZB&vJQj%2asYjEh@V4gRY6tRv z$FG6w1;0){Ys;@ef?qE;(D*f(XXT|CWrI=R*JSjVzRf5gwfcX7U$IiZ_?$C~enpYn zvD2@cDDs4Ut)67duPP6)esxFYL+V!|EdfyV>-%cVubsjE_!WqL37jqZ74^T>uX6G0 z+*-k}=O^0o>(3PCSLZN|Uo_XQ@vE8OS7X2Y3Pisu$}c+l*{;7L-<1;Y?Yl~nLP&$& zh4-;~sH1BHM=~Y|j?6?EgNNF1KXc^bbs9%%{bu0ETr4Do#ksK_-?zmDqCq&OPW4M6 zM!k`p7yMER`=$HIC-KqJSBw7DlKu=^`i}|vZ!*wN%N$e-sw?QP<(K|IG@?xO>-||c z_h6^_j#hq&)BHUp(p*0!+WdWqVu6=xuD>Kge5dh-E9VJ}DAA*a zQ%@V=au;$mMUgNfDm84`l8=Q0Sk`+!jm{%{GpU3XZX5bfXxmm~JD%iTZ3)$IT- zvalJL<{48suK!W{fuXZ3>3ZC75Vd3;hCES1PFs*GwP_hH-Kg7xP1x}m+BSK72E@*R4E@;kTqmX8)$ z?X?%eA4kCMbVb>VA~9Gyem z311%ac!aj6fX3@z13E1uQ~s!8UcA)*053GXA7 z>tB8c2s+c(zOq?^DxJQ2*Z8OJ0)?ea zU;j#G`aavo^eK<4^z|#S(ue+c+NnIU5Jd9Ydds8q0PFw%(MVgyPsDmlT+cz>hO!%{ zon+^w-$ac^D`S$vD5<@hMh(iXqv;DjUp+Vsu<&faEc$@^vSy0+X*BkR>p-a#<@+qK z1-mXCE0D87p{i4A@If8_-plh#*jmtO>nQlfXt}XTyDyUWH`R6`{zKE;VAsNvn1G=c zkI0r<^1IXJa%Uh>y(NV94n(`U6{j_!MP|`-jbjp>Z;a0gIHeBdb}4@j=(lc zS{q7B)uZ***ubOIm3_0pF(vLRUd<>M^SA$j;=GreWfC(ftKLpt37KkuX1loCrCeIx zM&BcK5hvJTy()P&<)`16+}Yx)5iHzmwTgPrMa_;i-n${%dK3iAKbB>(R!Apb9n@_*ML|6i^0U+F{sSR@De<5d+t-u=t} zPyh1IG0J~Tg3K zY`qHd|J)@1Jr$7uGNb(8Hpu@MtNh_}Z0#S%QbGQB4OsqX{mXx*QT}yT8|{CCZvS{L z?0>tofBAlv22Ps%;qOiU9~ZvSHlu$Bm0kYFRr&XqEiKqq4*LgNuY&wPGs%Bf1?2y! zQT{l)PV@gqt@4M@v6VlapQZeWSEKyR<2_7zu8Km3q11!B(Z+jxso%LKWYS`jAB_V& zeVs1%0E|Bdgd!<`t2VP@LPCma(PllT@>NHyZs?>A@&ah@9TpE z_?-;!uk!=nW`C?}B*$VzM?ANK%~jOjyD`MxjvOxS#rgsdunB$^%_ONmgmx=-cry6` z0;F|Q1l85}op;gJ!cM--jL4w0`3)u(F&72T?B!5c`^<}#MK21R3X8xne+uzQywu9ZLheF)r# zK5+txb4NvISqRL3|NLo{MRF(?f3Ddgq;}6{dS~ii2lWR2oZ?>!l+JpI3HJP%JK4aW zt~j|*rL7@oGxBG`Qzrg&T&frS{bvJzx_+kf=Lh^yUjEdWUT*$Oc~NV-WFa`qS_Yo#+b(&HO2R#>AhxhFJJp6xH;n;io!(zQPaXu3{y&KY9GPf=9k z&xMb5{>;Y@zWL+TNAU1(&s6qrcd4!gJ}13vtjAfIY}bHaSHNapk~C3h%fbo#&JlTQ ztc=1Qz@kPPS`Qk~x^h6ECEPCEWbDV^#`wW!>uWl{J^)b0CyIGqpk!=hDfz%>??*bD zo+=AIpHHc!+BmwIhc(^41Gp&7R3y3)Ge$Z?vWlyX$DP_?MTdVWanGJU`bM0*P-R=m zF>LJWnTtp%sHhw7&noJii?}(csBJEi(?LZoaxsbuDr%aG`Np84aP1hJs=!)VzaQ+& zrKG6rxc;1TBj7g2e;fRF!vF2~kHNnS|Kw2p@b}ncdwQOH74+PVrkJS*5&0SExk1q5 zys2XJbp8hJ(m0HIE|rYI&lB-ZzI&?;u5ea zk!GIGBxvU}VWMd{U#d%&XM{rvaUFlfJ$7l;j=T;d>=Y%NRXqoi1&2<+<{v5&6- z>=S34P74<#T&rPUf)kWua^iwC^lv2r`9eQcDM>e?kME;u1jQq1&bV*vVTc5CUeW!> zqsZbEHH^u2CL)m^Ilhkp18+38J1l{@CS+_Rf4p(04hyz)Mx+i9Cf`;4~$l&+sA zj{k4;Gi+jD`dNpQHwDVOYa1E$^ZeJMUwZ+M4f=URJ|2(9e)V&OEZ7ePg?|1@>$^k- zQ-gwWqsKO5IBlYTZyGYU9dY4WgHKVQHYgSD=?MCj`^-k6*9^OB%VnTL{^ezq`T zKjC#?Z>ygppvGm<&kiYR9ezMcg^Y4^X zKjV)5Z}c;Ld|>){`5EEp<|E&1@SnfQ$5Zgwpr52F#^OJF+%ElRm_+E4r@b*Z>t~UmP02z@O+WW>s&%(;Y&8gb zTm4**MR8@(&-I8jb@Wq}{zm^fy{o~0#=oTNXRF;N{oMPOuAkT7Cp-PT=dE(;=evjh zH~RTQT44IQGgmmuhgX{X=L-3_A08X@bFqBf1&{se=QvsL8Wa@z`3|B%O+Wv6#h3p) z1T`*0|9%)lQC+~{%2RMa#{RwEd(wZN5Ev_yS9oJ?*3UJvIrm+I|NH>w=c(iIoSi29?6^eN&!_N{oqn!Z>`Om6p5{ep zwu@{q+m4mvXR+KVL0deoWQ-BYMYsHDgDc|Vj1TdILYi>yw1S=#&M%qYotQMQMv-MF z{_!|6@D%uU!;hIrrlvLI$2;WXW_T<#uc*rA>Xj(W6ZJll1*&kpT57$Q<>OO$N4=V} zs-a#reZZcI1MXA?x^|o_!J2Y?NcY*BItyFl$2k-oX-k2yV2_rZN5$NqU-Vmf_~m*g zFn&3|62`cY-!1&QS^hW)?*@L=mX9C8yDh(pmJ6W0xSqzZ@8#n*qMjGOqG#*;3g2$w z*VH$3eqGw;mtQo#F|F7U3nMTHfsXXX@L&Uv4!Ug|{}iu>Ta^qIQf^xWeMM?DnO5^~ zcK78g^+dKcg`Ow5+(RN<-G)TU%x>?9kfLiSvzvsK72(Q{IHZuFyZhs)9ofR>ac{fa zRnL+nN8CRwAD{QApJ^Z_|H_B&bFW+RT|O61f=~?v-Fb(;&-P{fh}#)b6r9UzK{+p^susWV`ppFQP;4mMnBd+PpLGc->I64d zEe;KJWnBtRzXjKfPkoK->$`;3Tj$9Ah&9sd>iZEp<&k#^$;a(tqJE+q$?i+F(%Yl% zAg!)(KVyyb>-73qBW4SrZhAWaxWxd#sqTlg)UT}8->o7L8nX()8E#=ez!cO0kQn!# zgw}f`0X5ACAmbn?*qzwz0Bw#T;vL-n$yX)udmK%*_AS+`%Icynwd$Dh8=uJ&wjI?I zT5nX>UpQ9Q#D31&p^h1w>G!OSmE*GtE2S$80E^~=&C9>6`ItP=q;IBj2mk&32sIx= zgXK8)u|)S7O2?cfML{~|W4=$Db1VZMC$}$_pE#92+meCN@{@ic%8Eq#!o&D(ox-Tg zbY!3BR1ALH`mpF3A9#q~_Y05MY=N-YNb-n$;NkQO^$`1%6jj4Z46PUg=I6Dew0K3GBX)I12rJX0v=K*JR zchdS~b+{d}8C?wX?Ni3QK)Guqv4$w%1v62!UJ zC_zZ+$UdrSK|YgMpbUGENG%px&}6!T z%)QYPWC(*K?jhq(^54qxFXt)Ci-ECnc@D|{2PyyiE%Hy6^6zYxKiRifZ=NjIo2wG9 zze$z&TE?|Nx%&ZC;>pFXtbA4C`^6F|JBe>scIQLly~Gl!a!Gs}j6k^wr0Ei`z04x< zjsZ)2IzjvXMM#ibz;Pz1K$(<60qbnONPdt5CD z@79KrzVBxipZP!lp2dK5e;2Z)!v3z#3kH9eJIt)_%3z`IM?0AHJy3raE<_C_X(uVz z{60}qHh;G_?`rtFW*(#VU-OAY`^)I>_RaR`?|QM23Y3F9WS9P~9c)k20`_;qXErkV zyY7|E{%$QM2vmP}hPhUt%wmwbzYF=M!v3xf2+{mq?!6ZI50dh4ZhHQs zoWIBDUr0P~e|L1<)$n&6-A0Kw`p6>jGWxq;pO^k_BnzQHx%3VVRPFs;{$$B`lk492hThSe>X=0j%2{PzYE`3 zVSm>+$KdaxhnV%fI7#UHnKov957gg93Q@z~ean~^D5LIGd;7rSyIr1 zUC-x?5^wXKMdD@jcYn>0{;rB7?Dczm$9Lal=>G1@l@@&Gl9P=0$ur66#BcW%Yi@OQCUM(uC+wnh8P=|}F%H@w*F?|$ZaB;oHuCCH@=QulX}YbxyT+JX?x-?`Ag8U0;I zA1VJ9X8HT}cXxfI`n%yQ=>p|1Ov0Bnz6%1BijQXpPBTip`+qDFFQdP!3TQmo%3>iD zC^vvGU-8}XvAVy@|H9($>XPTQ^>>?aMAaN+9lz${b%*i=fBu+X-=inmAI?vu9b=T7 zGwc`>mybAFjYi%txWfj`=gmPe%$J?Tf3YL-ta^dWIY(&l@db3tS^Eu+nY&O3pX%hy zhzWAc+(3|NS@W17x;uRqpfe^?{*Bc_(w9Y!m|n^M1qXMYZ$4+To!fnh=C9M_Hx z-RulU8Wz7CkiT@mFV0yRoC4q<^5hTU{KM#)o1L}v+`xh{#7nWoYCO_V7;DewMNzb# zXEUtYdY)d4BXaB+aSzq^SQd0JD+a5BXk*-}t#lwD5{B47me4F&X}Fkop;7ce$yrwoVZ{*u#14WDYi%d&2rq zgYNC4a;jjBYq0ViC#vWOzldS^o$@S&+ZqekQr`1hINVsct}?-I;p>crLzD!+g|AFA z;OtPE`Yn9cSU5yE_ZfLETLQrY?H5PWpjZ1e4%&?WKk**{{w3mnBL0czPTI>p?bH&o zYAx@D8>R}_%!7l!)^vFxp2WKg;VRDP7iGd^f;-R|p1eCaRCxnk1E$d?rC_4lk=-5A zbIuxz-IM(>leyKAT?`mX;W;`x6Ghy;X?`>PW{=CI#7-4GVT3m0`PQy*0);YM7AICB zwsGaq*=P(cz4a;=fvYKN>Y1`s)P%z06oaj<9F*nyG0|9x8AX$=$f`lXMB7cN?Sd(W zUYKWFTWD>=Eue6L^3XaguEm&V#X_zd*cgF}=$=LtzVwot#nGM*5^{!V70yuT9L z?4hDRwiY(wRN}soHsK@}lcK!)8r#I-_QEDolvpHKVB%p3d;l-4)vRl&GDcMSNUL%! zs`%c|J~kY#|F$)nIA?)(QnxOglksl5&q*^#G;lWBO{1 z0H6B!0QxCaAL|GL{OjW%Hu|{yS*t#N@mSM<^l_rBsq13~YL-PGqm2+)A8*szR`v1w zHMaVg_#9vMXVS-21kP3;d$&^c@vDtyeGFU366)7hNGL^Fjsytl<62@agy>YJTdMrB zfUDe~Rhfn=rRd{(xtcg__3;(zq~Tg}q(1hzs}z0QImx#^R+6YkDO)y}^|7TuJ*ADH zHc8ox(V6IxO3}v?D>VXq>LdGY=^rP@mF^$6p0?4)W)rRYIDK1S{_*4lQB&7P7iyM8 zAD0>-us&AP+E(>3c9pF@o<8I4A6pSAw)(iTg{oZ5^UV40=ui z#yOR9>&;aLiYjic%2^DyO3}yqD>QN1>SK#cvp#;>s}y~_1FZAqAD^K}0j3nCbWu^4 z{&B&}OzrMgsy^OEsPkVb`Z)M2jR2qecq7FTQXfzE3_u@G+UVoUs z*T-bkEQ>yd8zHbh*4Nrr^>O(MTYYRh&D%e|O5kkuv1Kz=ALoB`nZTRg#F`#mMR-Xl}jzvDi5GaDf;-_mzp?j_3@smLX@h1Y!Xw7K7KOJw>};t zV62btuQmI}>H>AAL_JA)592GLkNSDkh$7rSanum`1|m~Wa93J#m{a|HJ{|Ks8UX^W zLiqj}Vm6)ej6edhxq6PRfJXb9^z)rnc>5PIya{&jvdaRm(?K4&CJ(s|v0PqS3&h5J zB%1p>rE0^5{5dNlq)OWLn3Y#LQmJnH#~c!iA)^GgSTmyR52vyP%IF644q9m8p(MtH zzidyr$Gg3H%P@{{_YcwA+eoEs+fzQHvIR=!r}S=akI#q5B<3P|mxoa;5?86aFUa;& zP3ok^n>?;0W#m|L7};WouC8iqx03rX6cZ~S zB9-AQsBhZMIOK&8Xmfk{xgpfL^{J{p;=ByP%nv`32OH%f_>s-LHS(h)l_GgCE)R7K zkRN?(2!3>8fXt6sciZq|&=?zje2ZOi81oqTLHp)Zek7HLA2xeKahMvUf}u~6vXjgQ z10tt3?CPtbz>D`R=fCl7wTAj0ulmEjQbo%3?d)OyAS3^ABq7u%JFH<4+d>ntJB0M{ z3o2z}577T*I7&>q4mv1Ih=LVJ+|6HnR@lU^g z#P}QF&n-9nWE=QZ1^!ia{5zH#e(?Zr{F@2<4e<9;sdCA8p$+`l>zMyRI{stI4L{lj z{zD%!{|)f#mK*;5Byav?*Jb?c==gs@rOL&h3>*0Ge8Bh{;14V}{BRrio33U2Yw7r( z>t9~{bE&3P|CciU2KaN!4L{iiepP{gu#SJna>Fm~=Z$|efxiL%UMf{C`7X499~;X2 zudU-hrrhwOZQwujKJ(uIzizqV?@#pRPqu^lNbY~DiumgbDrLi;@04UNTc9ktCb0M` z)uz3d-_znR*Sh9`VQ8 zKP3O=QYkb4p04A?zcySC^NsZGjo%wx%=~NHHUR#G+u#@bj;2o%zjJ-O@VhhA3%}Z2 z5BvY=-5bBlx0&(tw6Wsnj!!Av((>OD83D6C()rlobaHIO5Zw1LSl*D4gaq)d@5%us zLcRp|1zcmyBci(qS303!9nH6_r&C_>H#Nc2_OEBKoxsyPcns#I=zgep*eDjdLhlo@Cb88(dkJL&i3AgjQKc(>AnSDZ+6rUg)Zdh@x1R z8%J`}*_Bz}R(Ey#$K~k#kIQpUC8gEelO+kBs!#Hge386I%wB*=bme!X`&?O9aIXr$ zBsh9);p1|Nd<@qv*T7Z`_Yd*zor$f#(f32h`>h;?{UAdt7j-g&$+}!CeFRtDl-PQc zV`T_!q6kV)aAoD;AT7ES%QF-~=#`K$w_>+II-y4QwaCktu$6BrR%vf+iCeYev+|1L z`SPU~X;gwC@SX?T1mTQjtjI?74r+B856kLdYIRp@jFIyIskkZ59zoStP*oQXbG>A< zGRt*cP(rsej_D&HI81f%wgt?B=8dAkK5mUcW}(Wm}=N}0|7 zzv<6QDdpCmdr;L|e_VIj>rduGrRqw~Gs6FJqIM$c6 zW^>TTQMa#TS7(1xC2bh`Mt<@Il_CG`%s!uXD?fU%5Xk|!h)5;Bx`;q1bBxd*rWP6VS>U!awaTj>OCJHEt8{RJi@ zyQ)Zv5+|z?a*XHto;G+sPc~)6bFc-^TM5s?K@ftLsS+Q`Dz8O7?d7%Ub@H47<6M09 zme+$+6ZRzJ6+4y6LtgHte<($_kj-#x9z?R>s)yVfqLgK3sNa2`wS7QJR8RzQ3^_ zdHvPIUS5s9@RHZ6MpCH+^{Zba%2-|wJ3N27-v-aY7CdhyJniHan149$6jIXt+dGxn zhN|lRZ7-EE`?t@2RsGxi`MQ6Lzl|8r{_Wcnnz~=Nqip`|__8wix7)n%f9O@#DFgm> zz48C!S=GPI@1*;;oLe>gubHBW|GPpf0cZkDI^v}V)O-1^k;-v6j}6dkDxytQ*nSfHhHEsi?llr z-L$_mQi+^R%d6N)W=)<3@yY~|RC>6+f0@46L*mqa^g}r@<@<}HlThHJH%Gu+r zoM6x!s)}7de7UOjtF6Nv_Sa8fyaLkBCkH_3U0*hjpn+ufm=4Nib+f;D#jZ3!N z^tWF&QrZ7JFIN-ppmhnM3i;4GMk2ITHWD&TYi!SP>>*x=`eL1_WO!%e$?`^q+nxnK zO!?y;!R+fRYmBehvbcMEH-aU7U%$Ys z=syCphaL-j+e4r3cJ`1qzp;%yG@-JZJw(OQjIXqZFK;$W@OWb(!GjlUC8&T^($l#M+T|(uybs=?cp^5 z5%#eBO|pki`E@D3zJ=Ga*h9OQecQwB6qh32H1`j`UJSRfhij;;W)HhL=#%zv-Hm1m zes{f);P&&j67**eAhr$_G!5+E~RPEuGG3B<0e+Ec<`0b$VA3SY!d)RYG?H^Wd zGWHJ*;pixE_t!ssgZ{wS+sZ5Y!>%ON z9=;x3ZhLqhK!iQKgVT4g|C3)A^6Ol@mc<^LyyV*+ZlUng%O382(XM~ELZO~!51~B_ z{X>-|W(npu5E5MTr>zA2*+cPkzxHqdKUX+jYSUk}hwGm%w>|u~pR|X4&&d8^@-4bO zY#6Kd4-1|#_764S=t{GPuh1VD?IFFs;O3L(Y`N**9+pls*ux}`=pTB$5ODvHiux6@ zhxLi7J$&+Hx$R*hfCzhdc_G=u3;a5ZU#H_$wFl(OAL*>;%jI~&eabcM6r~PaTjG|; zWJxGS6X6(51iheIM=>9DV;D@-q4*cZ(O%V89#3Fr+w#A{X$)S+k^Kb$rSSxw9_}dZ zgI32+LDm=nKKAF+l8LN8Dmk)uBSg+B!9jAj<2Slqot(TXl=(6LaUk`T3hdxXeBdRl#Bq$AN?u(Yt}#f?(z&?s?5wb zVVdp}(=qlVnu(~OJl_}czFi`e{)drIF}c_k4&uZ5sVIFjMOAU26fRLZgT?zauqKrL z$}*w!3)inV80v&51+V{IHdY>grj@gZpp5N9J_l4j_&rgF4>ek-KBqwW1RXPmnozpy*3-|4#WX@& z06%3&oke1VhEbXrp(%IGCu?%@>+N{mp>(EK`KOLQ{Mk?5^FHloXL}#^^VcjnKVY(- zH>o)FFDCn0`T+VFd;7WXw2|@BelRO0?B}y*jrMaE7oK4_^M7GKn@`!Gm2;0oE1c1i zdQ>!1_~V;r^E)eRZ!@Olv!6aLgZng$YBkq6BE;#r8-*S+GAs;{;f8`RBl#NRs((~ z3+5^NT4|4=i&3Uh5tzpzF@-RCA&h;L8byBxaD#?ZxvW_;B(@ zNgk5)isuLR4>W<&aTS3lbZ`N4sv}a|!kjcB9}v$2B4&=iQ+A%FLIp}X*7?(}Lu}p* ztyEN?QYYtA0-|qYYYTm6vq=C(`W90Woxae{uzO$hjZ77_m6|5{p3oAIJyS`5rO@{z z<4~Z)LFIkZ=QPRBX1?n;3i}Wy==tE6PjP$@tmlI_QW+vnpYK}yEx60GK{KWjpOMst zz`91DpvVU|`A!p86<#jeIR^gqsQz5n?MM-_7Xc7>C{iLHcS4DlPzgoDxlb&};%+mXGA zLVyzNdc)HuRJ>a;`k#Z2>~Cl*K6RxTA3+LPMF^A{;1PeAi$ejkikdpIYtn~Hi0Gci zPZSDl|IO&iVm-Yah*PQ!kdCY|@`YfC3Y+@M`h;+S5GezOZq;_*Y_X<$Jp zKaO~Y@!N&Ci9dAa4?y%)kjaStjH6N`;@`SHfrR2_xfTazjZjp0Kz3ON@R=GhlS9#K;3PQ$xIK z%@|elgHcys7*!{XZjcxSSun!U9E4FN6{930MsF*EN0*9pjHXU7@hA<_@x`O}3AUYl zC!tbd4t^ybJ@u=ZM-rnE{UndpA^oOF?OKV^qXvvlXP7Yhh4|pH(>NcIc?l{gXYNE~ z@jg|R`tiss=*wS`T-$csjH8s}!9jM+wepFOV|obvX2+uY@k8NB$)diN z<|T^~)aGAD`b)RKL*q^Sp!2=$`QeyOGO%s_1b!%bio~<)7c=Ry?Ysm@dQ(%|4;b4n zYZ&uH4;jV`DI?c=3eI?e~unZ+m2A%o@#1)!!rib z%j%zZL`(m?W*A8q{`tXrx_^EzMIC0&zK;TD;h)cR_v4=z(?M3stNc2Twr46Hex1or zrt#-V{5hRItABRu*Q1*Vr)%6F`RfttC*)x478-2UrBXZ?)7Gy$4qPh1vV|xbRvFf? zFXg%gN)oRcz)$B~jyBqkNfi_EZimm(#@_gRKaSXD#AiB{GUM~dL0fzla$W4-WCJTZ zKH)a_Y&vY^&$&ik`0P4ti_a{sTcAW8BN%1JXBM@D(WOyd%hRp=dC(i5&yLyRlfiW% zuMC1wIzA!R{SP;I5c2@zwgQGp~HGv)6Wj4}IW4pX;IDOn_JNxgNS&dRv#>ditJSt5!1J&w!=z zh08b^Hm=Oix?GK}Mriy?3_LlGN_THhXr0gZJ8*r6c|HDEGa6Z!L(#aW@mI#m4tYO< zcl{f^*Yk&3*7Nu5YF*EN6EDaw`+ELLoyxr)dvizdTT>5pJ%4VvT#tR^vS~g4ncK+! zBSqqSJ^!nd4ZfW`YAO3cnvb>B-`jwJz5dp7vi=Unn`u3NEM_=49yjT4JD&F}P*#wI zT`m1>nBr4^56A!S_4lSbE1u*%&QuX%$&W14s z1nlq0|H28UH4B$L&Dl<;DShY0-nolP4w{qQpA(*?UkD|pJO4I;->xSKNP)6|feHN9++)Ho!Tqy(zFYj3UbARs zJ3a@C<8#JFU}n3;)6)F2`A`R3bA}E6@i~1F-v*O8r!ehJ&fa-NA$ zTH*$HNF#z)Py!52B>dq~I^A)*vh!N>cYHz`=8v~iAK)GmqEyGiS$qh`FX76zxA;p0 zzCyg(5V_z^Q8KEj<0Al;{r7D%0Hu&ppY4D5`=hU2vpZhRYqJ-K<+uz8$_Y|b6Udt<6Uf~Ja-S=Q*6{WO$ew&zuNCA!sbN7yoivJ- zA!tJT#`LGRtY>-hHtJvij(LCmWVrSqjOK}!fHCml*q$&JbFJdEv^AVrrGvFvjW?e) zlas(_&1^h&KXOlWSX?A>JE{W8^MK|MtM!G@i<;#!?}Ou>)C5ci$Y9?G-P02Z@s6cY zFpD=NAtxpjw3n?G(HUtiozY{OrQHbbK!vZ5_oRkU8h@uU?>Ls=M5q=|>#c2Ql{!b#)z`nuevay+fSQqZ_3)aVLe(*qhb>C&Zxc$`fkc zJMJW;&bV^MM_5jlt3ncUOG2h?A_7No=W@q@B{t=e!+eYbs-O6v7h3$R%NgD5Y;IN$bMEoX=6X{dVxINpeaBGW(pWIu&t&Gr)?&ss74uxdXF@*k>*OR=Be z$20+3?C0$Y+Rt@IRU7!AYgz55%P(r(#BQW7cJ`Cs#+Us};B+(D&-yWD`)TT8P9+~w z?PpzAVLwf@DzhzBPW9$0&9y3SR8g5*s{Oo|saY&--<)_A{8TcG|8a z@^uh&LZ`9+nfW$%IdDwqfBG!qFA;1%ZT~}GEcTOoi{4d?IilA6I@*{0WVP~TKV3P0O!hPNX|w$t ziDgcO|D@W_6pYxY|2fRbQ>v0+sq(R?a^iqmr7x-kY(JwO*4XQ1KdXJ)&p+s8%>FkF zw{TJXcBlsN!)iZW-ly(E_CL40&0iwee(vjF)Bj|&wA#;e_feg|?C17JZ0x7G7s!#< zHU-GQ?5E2Jv;8c`&o&+s;IlOGwF+6|I@35FZ;O=CpZN;seAgJqq`VPRA?)&WOOJrrMpRSlzk-_i-vXP9nzRL~-Oc=`f7Yd|ZvHLa7M|H5o!u zX%K4pfDp5WCYs{AT}tl+L~aC_ICnlF(p10S)Qk&8MYgyQ3?k+BGtY-l!7t^~Yc!I|PjX2yQ+d5BO ze;q?-b#QL4Ax_>9mz@^jo>PoZGy(ofJtqt@7@JWd|`kC!wndi#2d;yErgQ$Rgl^y2smp~sM+-~t7l{3e!Wl*oV;?HmZ!sN4fx|D9eYBCBkZ?i z8%#axVr|FF15|e8MnLR1_?Hs*%hPt?AUao-Jte=y{j|v9Ut24bOHmi3F5$ZoE?ee zmbe!Iw*V+R`_q03>EK=l>9^zm3eK_%#rq8W--Q1T_i-cR8@8Smrp&*R^$ zQz=Lu<;vtyxJVuyKoSPtEh8f+y|GD>;0sR#!~Qxc4i z>s^VGbC4;>pxg`cR}JQA%NS>S)PURop`{mubR9y0Qv4!yM|u$7dQ}wop`2|Z+9gcV zpsxkWos6M+F#uYpIx$)%3HhPX$XMu@e`bWhm|q^MVvc+h3gbSL`_*toRK#rtQOY=3 zQ73tmR*@TZM!4KbxXoY?x{M)caBq5ZN>lYPHpnQ?Mm-91D&zRo9F(+XsYX){4u~KJ zR|%NV^gs$yOA%UX$$DXdMnBGw2EeVM!-H%Pul03vYw9e&!dd?36w2aWP^Qvj%$prraT|0N+X~% zQdxDbTxe(|t_w;U<@x>{^quYVUp|P4?Nf)a(hI`hRWt~=&)jV*&uOxj&YbnA1s^Fd zVkupocN!tEJSS`Is`5OTY$MNVUI@o(75&Nc+i-(JVEe4iD69U~uRM<>T@88W(!f0^ z{ci3;+Znsine+=;DbCN1Qf`*0>Mp2~=mSMDVW_{))(rLS=Tt*A!#UW%svWCD*CgQ- zC^aLYkE6jv5RG0UBZ*Ody*0s#chq&jKdHk9G3H~MjTX8pTP}SLc7h?!@Wp2 ze=oZmNdk4Q;;JBTb1Sv~Gs}a$wKOp^67%X?`B+JG2@(l*oLA;)9pUj8)sD~%r>_^B zRRg$Bl5ijo&D^Z=aLBp_d7!RlaRJL?OPIk7gglHmsPae|Y%h;lvbwIC=aY;i_>+gt z{wEk+uxH>1aez;3GZ#X%5JXEUJTn!C1vQxyBZC~--Dqh|*2WOw$2N7PMFE)FqH}Zb zGQ62H9%G6`N3Q}N{L<(k+J(X1E!bD*sWbmp8t!c!rH=P%nAfjVE_@t=42Gvd!N4Yz z&XfERwI30+4dbgC>4xUR7P#mpbX(Z`a!A0yvEcLvM1${ggGPS4 zjPzEaI%7KY@zlEyQVoj7?k4RlOswcnbUTaVTNj`P&ceLVbo_lNpgiy3WeZ)cRr74B z=BYcJ$KOO%`=crimlB{{*#5fkI;cN1CKWUP*x#nyJycI2`OweP{k`Br2ev(-}_r^z$BBSIbWYsGsdnuUz^WEQmJvg9_{C$=c=C z&(BcRpr6H|X8l|~q*VP(O!U%E;XgOSHDyjrg8y8LPw<~n!hdFW_NkvSt2yOC4wSMp za6fzD3I;{7hT8kDN`sMF(Zx@^T2LJ0B zTBYb|lmCM6t3tl-2pYc~l}SgMYWhvCthR7RNcWw_+CkOv3g34zeK_jXl=Yhdqq40ubabPLrg|^mY1?g_B>feDir>ZZYYA$(7&4+z|jaf(L3>G@#!+*8y>!lyU zfBDjnhdP!~KRUH5zkalrb<3+C4Q%QMtRL5-a(VRQBr@6t-&1k@_#mX*`tcO1n)PEj zT#B)e8$HONA5n&-L&GWHx=1r6?ii?qyeH<}TBwfvn3Hm893kGkmhPa<>4nnR1X@6_ z;W9TxjVQcOS6nSB=2K|JUg_}Tyx?EgpF?^Z_=TC_`V0^2w=ek78vZ9>FlPKmt`Yc0 zd*RL>8`hTqDFKe!W#rHtWprRa^4z5vVqkpCH{|rJ^=S~V)o*XCKhU;5=gUX4xCIj3RU~jCdPa0mS{tPmL4ni3QVFQg zZt5>0l;sIDyzCo_2TJ&26v)~%dRTrgmKVy85=UG3jHCuX=W7AKk`aE@ReY~8!%r>^ zegtz6Ys&?g5)C)G%+6`d3k=U9;!>xkPBom4BW zW@biBT=cNl5w|BUJ1?zPr@ZXFj`?|*;mXh6n^wiW0aqNeTG;YCnSg8jo*?3XA#^2{*7KOp(h!3e+eN?o3_N`r6ZH{-AIdzFNLt%MKpwP5TG{QklCz{qbg zKV;Dt#$SWqP{MyEOw*TfD=hMC&g9tWi`5<(b=96r)_}39J#Rb~h&?lEYW=Ck`qKld zA8zyqBaHr_XF2L`FyLR=w!W?YF%p{o9gzArpq@eh9&+jWSMXXH_0J4{RUWFtUwwX^ z0sivky8eZ{UJ87x{xN)AKP3JyN%+ve_j+6W$zUeOMn7!zFPem;!9T!!DNxSV)%5TD zmlpkdm&vh#Z`Hp@ll<2kDD+~NwR44iKT6DF)`obXpS4)9!l|RGR(f*eibhL_S%YB8C;71b2~KpwEaH zRD67w9|~(MOZjcEuCkQB9o|?kFZZiqtB)%Ow*rZ~i*UGH)~O_jW~Um;$}y7YkcL^iJ##SPUwLPz{Z`oZlC3kLcfB4UEv-(fM3nm^DhG*QDdxqB;+F zlgF!c#QjLbB;{~Jrfrc9A!ao#bRjs2-Oi=sfcrYPGeUby<##n@j)2xrhbG_%7S&~R z{IjUKk|1Evu}o%~s-<@WGAEj7BGdCjcKnHPA5nq?taV7l7+|R)`;bBT!zadlP+1$! z9GYl`0Trsn_)HEIAJ5R5%4h+rofj+z>rlK7%cnZlQd$cjg&2t#hyp@&(r*WYnrT2r z@%~R=njPc*NjchpX?xQQiWHI7sa>HD4a)=(Q_BD$rH{ zigj<)*E2$1HPV}i{2Z-!BUOy?BwwTS7r^SMz=XXLLO5iz&P#w}G%yK)RsaeJ!yHN- z0fBb58Ms5LOb{Nihd|eb2?#?&mF@MJDLGaM|M0TNI12>anMN}#e`pX!)KzjALQx;1 z&mmsWvbnbJJ5?HxRSgl#=5&Mf482zABdXV81HA)Z;C$VQXJ{hi#fz4W~um)e{LjT`0~$(!ZjZI$A|p$ z?z+q$U;g<69hOgrSW9sWAin%_wg#kh|Lhc?eE8>~45>8#{O`3)(@@o=+W6;I02G*i z{!9S#;h)boDBV9lDIoap&s*#vnEZ2V0l|lVe%AuQ&OaB15=-p;v*$mh`sWWtb>W}i zz!%*=|M6Gp{@FbsBy(cDptP3AafQaZdm{Fq#wX*sb3!2`7pBoST&R-JZNu2$KJKb{ zYTi)Ik@0xIkWc4%fDjA<({Egri9Snt{m<5xO!|fGO?W0C1Y?RQ8dDhm{K2Eu(@I}2 zc&$2!%y}8%;XeCNRDNw7T7fn+YDoyArY=_Ln6~^x^i&AXzz%SqHE|< z(h5w#!}hEHQn={lly+Amup;R_E8Od@2+nQD@b3(14v|z`In40+= z#q%ectdfkc&F$O%?skS~ zUKaD8>b(`X0$E&Kv4{`z&=VwSPb%+XhXv-tTtR7AkcD#t=F@jN?Ze5u!wSL9kG+N(KrAZbtX>Qrxv`v|)IRc&tzjXfOQpu_q zd|ypdg4ubFxNW$n&RUeu2M+}Qhi}11!GQl@`fkC$k{$lfzQJ~A!2iQVluJVj2v}a3 z?hF64j|0Zv(d4YT)Ja~i>PTzIp*|Ei*vMO#}(eVh( zkz?%Ho@(*FIM!ui^mgTx*HeS@$4C45aWj4)tyJa;{E8z@%w_!EDYD{s6ZlAr%2_jj z$-vh|j#66)!1(>^_0$W$K;(a74zm#R(L#TJpzq8=_U){{l^8{f{_beUeyumA;dv$? zQn}ccstWnvpXpQnA42}ltERv2wqzD-_|K>B7W`vQ+SuRP*94b!{7=5B>u(RA_%Ht; zVEjwf-_#dX<_rBurtdoPtRLBhR{aX@ERzuBG0{Ud%T9D)~WeAP@-<49f; znj=GG<28+qCz=~?=%?{wq(N;PPoc(t!mreLcXQ)%bLY6~vT+acV;beVZ!l55h#Jrj zM>kPUr?T5NUWgwGX^}HEzWzBA~&( zX>MGyeMdD(`8=e(G|Kl~Z=(DyYQP8O(|k342|pB$l#PEg!$i5^3 zZ?jEgj}0ENVuM3END~ zH$^pSjnf*G`gq-;gz{@meyz%{S8k!_#r%4XUg!LBym8QoUmFMgjQ@L2G!EK_|3SYs z4%&_XKK~Vq2-WlB#eL65iD6sfW?C+28xi5{4p%AQjKja%HIsd1m~@EM~!>|}0Svi<8ylJaaM;xx8z2{Tb{afhbHeY(So zk}l`ST6~EVDV3U3Md44^^uP6ESS9-->tg{Hoo+@k{RD}Q3lZ}H;;Qzs*#z9B$fA1+ff9NYd?019a z5ZzjMxaS66;UQfObRCR=@5q<~@$iS5>W6HQ$5#WTpbT|m)u#x#akz*}^^mI$n{>sA zz6`rq_h1<;TFlhYkvXROG*fC-i&|z+HZ-ld<`!z>hiV%dk1{uI zF;i3HKFyToSu`_sm>ZYg@$6+ud5W>|FV~qUx0tD^ai3;7h8kC+mbuTGD3^`z_*XW5 zyq1CT+suty%+%DlPcyv)sf(y3+}twy3yNCKsVzThYp&0Y8iDC*=Y)1cPK;o^=^LcN3X~S8pmTt ziFEJy<46N9b6ctW@`bPPqpaq(aH7FYN^`4yiRHdPDXL*`&pp-(?#p1rVr~XU>Brng z7|pG*v1!fRR$i2iKV@uu!x~fL7IQN-?$g{9qq!}aV4zz&PG`E>_}LHx<+0|*E#_uw z+^4xcV>Gv$Z5zMuf}}jn*!Y&!Cdw`5W@_B0xn0!E?Sl*x+0xvy)Rr$+H;|oZY}sUP zhF0y(ElqKKubG?PE3SbJntH|Smsxwo)Qe55z2e~WdaoG2-%qbtj1z9=DCh9HLpjB- zzwzr)dZm2jV9aOe8No<3qrHqQ&mEjzPg)v|>T#ds6n9KGI`H%w%D|O$`ED)FG9@#=houT>2BI4bunZNHW{kJNVK636YPc6UU_{lFn0F}8MVcE zI|gRhyF8kf?EFmaBCXE+nYJktY@%b5l{q*pCjfpnzs@H=_v-w_5i*jWlRqXotK_E= z=b4`~ez5X$5K0n1Q{@>lH~+)#koc+m*+k=K!g3=&b%33{09LjD>{+uy{Or5OmY=h! zT^oKnagq=7leBXVDWmbUZK<643@4|vP&(U5~Uc3aPIETPy!`%9V({U-&1L1Db!zW8nt>;4pDO&IIK^Y?%{l1f@61oERFEUO#hUR8V?o=EUwn z=`}May0B#VTduC^#>_9sC~%Ov?#i6XgSAOoipxD7BEL%)c}+>O?#iN35~hbTbj?bE zvK0P{70IcbzLS6ugeibff>X!(JCy=51u%^v)S(*ZYf-Uc9Nbgl%0WptviRy0{A@i3tJB~zv2U*!Jq%XgpXhU_D?O7_WAYi`JZaxNV4YN-V9;O*bN^Zu5^gg z{M$X@}-&bVu?WI0FJ@`tTvWr|1-HJ_{{2rW{(XMP)!=V~Pc;5Q_auKe{>SLwb(Pw-&A=U|cOgm=f1y&$-_%o@e{Wl; z`FB8&{GDZl!2G?3+fw-pI0pU>HJ0Y~_D?kX_gus!?B9cZe${mYIe^h?zN*GsQ<>z%MN&JNJFh7q&^CUl){-%$gYQJyf zrw;J1EmnXV-(-Nj0FVRW%9ks|&sv)d{Je+Ix8Y|^9JEy?e$KDzlb>UlQXVjbYva*G z92%kXGhFK@{@!dQ|7MgVeuhha&g-h_=YA{!Rmb;h-z9#k0@4A#;{|YUkQv|?mny)| z_R5-##6qv}{lC<%4QH3tk>gSS`I5LQKKXghj-PKVGU}&J{<~y7>JWjQ)>xD@^0U`} zHT?|vRoBla-m&NB-Ch81vH*PWVukqm_y${ke#~ybJ71E5^KnR1{l|ZmBsT*X-{&*o zs=CVf=glh(z%+Gy+f9pq?&)Za|9D}S>LztLG$yMvjc@xh$Q(2z%)0L?E&j;^R8#!N zCackIKfd)F{{;n3|2#G%3;jJ_BPEgaf3DNN@0d0I^F@EYmHwhvgO`QClKE_5=^QVQ2%=3l23llwd3a<^GSca z`5Cv)%FpXi(#X%_&^$H%`&sW_YrkR7&%eI50^Inr8DQl5xeO3``N>t4`n z4x5XRnUZoyX>IOblZfX!?e_hPzy5W>g}~|W#D-*{|L|OrvFu+vbkgV__mic6o#Bgq zvJz8#;bxFI8vSl$3MKu{)n@mUM9eFVe*gXJ{9+Ra%Gtm6eqHnbsw;CUH~nqwUv-gh zBSltwNA}0Xe~JDTA{YLjSF&^e`bnhLzXF2l|BVpX|E~Z9J%0{3M*nXt&Fw{s5DsNT zekBCmD)+A?+?w9M{=qgEi2o%|{KR9c zto)5eN$Ou+lD{DbrE7C4JAWh~midWDBLwE}`4_2}+P?yhfxj1Xt?gwzYVKc?^JM=z zl}~Zg`THU@1O;Yhm8*aK;cv-b@Ba0Rg0esK`@U5Z>@$;iEZ25VL+O^^5lFO2x{`!|Le@bo!(7#q;MdJPi>MHx! z!+#k1*U#H&{mUyiTl&|(pE35Yx*Fd1m5_tpzq%P@PA}*+_pffG&1C-))Xdz!o}tP* z?Pc#@yPON0{_k}9pQ>mQO1kzXgS6!uQdeOUo7P~fWerPGQQ}Xx8-2{aB z3kWiPDfryLG3M_pfS~uUaFGW7zGf`V@k{uF=Ki&q_r4=P(3DT9)A`$;eOf8}b@6F$ zDOhG%AQpcOZn*n=0M3@WS_RJau@_-KLhr~zUL z-O*7wal5lF)^*J6gPO12(58zf&yb3F|SE+0DJ`kY?D-=F#neI zt_+|2zh~y&yLWdlusnMF`EY0NWA4m3XU>_K^PRafSi6tz+(mcz-h%Q5e*@{x$NcFi zI``OB@KL(+GJpCw&dXk~u9Bz4kE6>8)>T+_kW!vZmyfBt3eKdC&c7*nE#J zd#X?0r^`rnlfh+l*;b8QIue&xA&XVGZ(U_%`NbDY(+-rv>IY&RawC?@NAae!Y5-r8 z_a84s_OWvROgn` zIcb4oLlUO8eQ_2|-A`>o4Zq`Pcx|X51V=cIZa4%S_v09YBMrwi9N9P);`kKDS2(ud z*o)&Rj&pRa`LhhGME@?7Rjq%!4r}!9@Sw`|@57&%{)M#n*1v~FpzJ;L@BQt#5i;_pV7I8{(VVzicwzHRkHqlMRz>(Z!_JI_3r?kd+6V*m^WeX(?3X+8lXCTlD&ICp+iDOt7>kRf=rBAezD`>AQDYKtjway9ER+3*d41 zc!%SdMKhUkWO$Zr+KXcZqlBG*b8%xUEdPcWzO=OZL} zR|-uS?XUeB94l0Wkz(NWZPEiXspcMq;-&9IZ{^>Kt|I04=t0e8i8*7EWM`>is0!|0 zxQ2JqbBRJsA{_{h>01k;SZ5RRef82HL>btftTL**4Stz1?Za*GxcaDA59|fO^tI^mc(nN z8t~_~r~c_ALtlFuVj-w>=v6oyI;b9CWH z@H(@*lzO-^GG~J73PG_Nl?jB652r&HG*#vTwqy>|Rb{q!N*}>7Da?SGl_OrNsEEa~ z7qq1iR(~-|dmbj&u!OAy)6`C7SOnZp+BIMH`ywPG=F^g&mrdEobNZEe*fq}oBhf4W zmmbmN|1)nmk^gUiQ<#$wA&p%`clGlZASbie3TUuE3-=`1B-t@H`#(f}#zTZFM7^8;1X79E&@c9Kb(VuIxyvlEW zlDqu2v5(xC{tR)KUs3aV)So9&P9FL@;2}-^2UYzU4|r47pNMz<2K{O9qFg?k1Vw+k z%N>yf>Fhh+<+DMq24UlD4&$N_AN_d+UjWsg{&YdPG5z`QfTBNc`tJ3i@7uwiKJRkbplJw z-9I?Yz6fCbkiD2ZivA{AR3d< zQb1V`PAKR%5hC>}mH?RzH@13UAL~8DB+1>jyIZQ=wpe@?q%D*=cv({@A=p1Y%qIS< z=~?ssfLHl=^Yh)0DnBG1Ek8RaR#HHo{J4wd_JzDy-2BX9Nw|yUK%QDG-+mR!_)!XF z176k?N_G4cQ(3yd=u*ok*v*f3`Aq+@((*|v==YFs`8@QNH$Qz?5^l3uii(@np;6Kz z_O*}OXnx1b^-w-{?5(tXI!~yye6;+y%jcChz4 z>MF{It;d)|E9qgq#)*8r#0lQ(H44={SKfb!zn@gu`##TUzLIsQmG490IF_VQ5_uw> z7<_QIEL66TD_d{DNjnj{o-o@SQw@gHkhm@tcIPCsP-qQl1ct}NI(wA50-A z#&HbxuwN=i`>nXV(E)Fn~f^kEsUJjLEnfGX{%C)2a^!gT=HG9+EdP zQzl)$Ikl-J7959SEkG;oOtHfYtpT$A)dGJ_6So(Fni~C%C(*kdrf*E z)d<2$e?{(i6qoT!%5xg7drcaV3XD!G2&6YS1^d={-5ZB3mAvo804(vo_eg56<%@u_ zG|vaUCWWUwT815t)e@jPN!m!JFPlt~?o41Mb}L)jZXinR94oN~V;sHGZce$Hm9Xa4 zD66Kg}% z?1Hb(HKv8Y8j8}5r4`xnVw}MqU1&4)EmxmkYmY39cg7h8xq@ihY@o(1Cxd=z)u)jL zlNqp()zqw^$&Bwta5Bhj6ANg9d;+y;ne$=W%1{$vS1Wb^us&cNNn^LXA&^7MFf53y z8i?zu@N%FPY`tmJril!|7lYS*FB?eQsaRM>uULQ!UEwj<#Zm#+777IFxsQ$Ol1mSP zSqwH~KjqXL>`tp0M~KPXz|<_jWFBZXHM7BxVwfS7=D?i1C2w6zHfDE@4j0Bax)1g) zgYM%@nRdj8>s%2hE58u^gK5TVcxg;Fm9MAakplZF&4`plY$_X&iVxtlYBwoxMCujR zl>ykh?{ZnUxQw$YUb;`}4f{J=)>``_)1*fSktU^(J_ym1&8F$eSUD8}5yT;8Qj1r* z_cp|3RHO|2&GbTCI#dI541lc%nx^lY%0f^JT0%|8j7a_6rwhD4FRK03}Rn7vj z*2^;K8J1k!vae&28UVv6li6Tu7ME=@3n-`foGu#$r-1TH3K`=xTFw>(r3jA07bqeI z28!6g0CwC_2L_gD1_oN|E~WNIFjia6el^mNjno1uwM%kpS>CD9rylNc2L0qVP;yoz z2U{!@98+@)%rZ@}c@QqT>-cK>C#(eJtzl%_F;ual_SV?;Bc{w1h>hA6MQ9h%{f{vV z(d8z`e^AxQc&-2XHQW|m;jLa&`N`^axTfmW(9YCrJgJvV*z{*e!!mv`Wo$+H*<5!A zke+quCJ$b8**V5JtXPQ7Gfj7ZFI!{|Atg7u6WwE zEF@Z5fS^mR%^7FLL1v7)CJxolKr>F_&FC$t);z|EW^mXNDoE4xZCLk0qZ%+wWg)e3 z`ej*!7o^lzA`PXl;*1zcx`Q*4PK*oPS;qB9P8r)Kdte#$#nffo``!Lj>sL=$QN z9FD0)M9^8A z-T7#`AX0Q^oJ>g~D8YAS38?pC@uX{PgY~g!2)oB+Y=p@2Tmn7q)u0%auPJtiRm?T5 zj8DeHlxyNLb0;;=*l2a78!$|l+K8Q)X}1fisISi4Nl#;4(`gJZwGo|IPz+hv*o@|o z&d$F;NOe z5@@2(%P`~cHE+A~kq|U54eVs*=z47Zq_n~&exnTShR%j&Oxr;H1$Pf)1jcxGU=5jU z>9+rsRsb(Rm@TbiciOQ#*RVUEusiRw@NI+~pY`sK%tL=;upX*_aw>cRqtw>>2PE$hu4e(7Fx6ohM-beU&bK z$I{0jepa0*U3!~%30;tI^pa8AoEv{5^)EEF4VwKl>7`g!FJB=y`{VY}L?|@BDCY*I z7f-Nq9*B12oGIfFF6`o;TCtv|b)p+0xLPgD?;|I^6;Y7*?L6`B*2s$~cOk-=&z0OiMg*St za(b5~o=%CsN{Kf^;@y?RUqOUyDrupxpHilspf$bF_MuqgOU~v6rd|hIU1ApvSW7ge z70$B+(QJ>Vjl}vQh+JP5aW*dqTX|7+CmP8sy#eRxh=re3_D2ly4RR69-XPDm18TQT zibTc9eEtL}{eu$~WjDEX4Lx3T&#A{d$P6QjRC>L3=abBs(my2L&}olPq(1u&*dmOH zl-fR7=x zIPNTI=9kpe#Lcq1f>L?q%VseSV-V>B@1wa}Xj%z}CJW1}P@~c{4z-_a*etw!Qd)P0 zFmp5ojx_GknXziO8IQJ0i;ylJ4QoUkuLIHW50`-mO;6xtwXAQ$YtqA6=n|!}SL3i} z-a$Cru3_8J#vU;WrkG*d(O@62iCd(1s8S_yjO&b+WGXR39--Wlu=+nLW=D{a_GjltI}T*boW z2)SB&;4^SPcSD_XkphZv7Sm?ug76Tk$Hd?sMT%Cphr{!tTc5i}a(zC@^!WhO=k2OK z{{VenC&lh!`n-`NbgUZ|0o zzCP!YKD%bf`h1*tg~8$Y68gMOPoEb;7+?CO&kLosE0{hn^wQ@{hFw1JCG>e|tQh|y z*W!gx)e6a3UWpbTkoF@r(v530TD-=%5ZL9dJ9|qc@i%l8BVfJ>{ z!vL>=2kE~dh?|5Rr8Y5_cA|-@#j) z&_pQACC>ttU71;_Q@SfRT?1|wqBjYqennC*st_`BO&Nt`w63(91;>$tm_StCWuqNZ zC6}@+49F09-8qn{BjX@3OfK_NJ!`-4Jkh5f>4%B8iSpV5Gb-EjafGxv+2 z$Oz1Xx>ID_AJiR@Eo5k8tjf@Qqf3+Qeg^_n}t=Xns{pgT9v^<-cP|w$pFS&e>0}m!Ee|txMG;kF|j+F z3bt8lHXTLe>^;!cWVDcXC|GEKN^X#GfUC)E_yvksNK>-hIzJ*`YJi1zwn)~c=*`pI zGE81d2@j)51Yy?nwAN^5&=bN$vrACh3t?2kk_e~@3Z+rxfC>-6_SST}e zV=Z_P+kIl|l-V>|A7#h1GVlt&h$ff`H2GsxzSIY6+rUcM{!=Kj0l=2`5Dg$^un!HG zzsG2>fd&_ymbagXwepLk@6scIh5+=4z!8N*rGm{dDg6S^rEjqUk5VB(NXW^G30%8X zuNT|P<(V80!BjEvkE8{9Xwz0_j1hj8(I#ShzuZ)l;7p`*!HL0@24&Y}>`Va!L+AEr ztU-s{WzB5PL=+fqSj?$Gh!0WIQeC^!(?SfU%pArir!n3cSQdfD zLbNfpsoja$j>_HUh-7wOHn59%)&fgNfK5aVB^V2=wCpcCwTrlkzLS&vxN{}hX|uhG zvb6z}EM+}GJQbn^b1L12ba4A1vEqcKgSnA(s;Qr4VtonU5{<}#F(QE=YFIc`jO>M_dX>LXrnMjH~N zWzFd}$u$@}l?8Dwp(VH}4lt%;1vpbiYqY915&J>plNv#n?lBhh4WUU-5x4_f#0DEl z=>#raS1l&jsW_*Ds-Jf8N9(;%Qj4uHri40NHs=V)_eltIJnGNMVe#T=n|R8!5{tE- z6IMNnp(Xq^6na>VCdZqk!eVQibKpU|Ex(~ z)V@EilEH%sKon^@@zcnTcw(cn>n$0_Q{bGV-UCh*m3lSqmo>9HAB1+}Mlw|0&h&nl z4cg9C{U}u3)IOG)i~%U4D@fJjp|I6!JBplQRif=IM@8GYszaSUwB3D|X}kNf4%)6{ z`%h~-qoX=)w>cX_CbiRch0*G@y)Q56jBBY62|eJ|2Mmm9eFD|@iB#Vw2|y{vvL@_7 z%-Xx^^V!h&{ckE7kNFRFrjmkjxbEDw-cov)}Uy$(ufiw;e_`HacjH*Ad6bQ{KFPt!}( z1+a_o8uAgh^c>>;f!ox+N5qT$%!uEJqFcgDGx9X?yX=(KQsg4sJAQBwZFWGQQB;>IxdNr2YAodnB=_)1zW_E_2qbH3U1>CY}aTUMz^` zv5}TtY#lG=Q^l}6fK}eN#i2G3b44L64lStB8okl<>iV*VvG|?69(T}XL&Zu}J`>Wn zHnAjQCtvJ0KDt5bO@uWka{x`;wjBDlO^SFOGw7U+3i=z-bQPAqkJ4fNpp=F-G0|Lh zALrv&lJitjRVQ}E4LBfHoFY1p0c-de!tVfUer4R9_v z(I-MLPhr!2)dgfJfAkJuV^e0meSfj`E1-M^i7FF5rgb9l=0(+i##4=8{t~lhdT{^(p8hiNIvY>cZ8pVkx z8~R=P>}bb2ha(P8w}^ z5FdSHTmjNZ?Sj-&CdzrC&Eb930(a`9@~+cV+ME^3l{U2LP!{3T-7#nCi};Is`RfT*+tv6OUa$0g{uo!0)vP|J5yZxdX-7+4D9y^Nx2a@kt( zEwsIXPyzfi=(6ApLh&9DqAyMP4(d^Xlho$cv)=@yHW?tsp1^=CJ>PAQzA*K6lo!d^ zHMv6AffiXw3L2rNV~?(wvX^A;47yy_h@aqnxPO`+jFwN&={n3_VK11(?`baMQGc=CLp+V@^av}){bf)$TyK+x;My)8 z7n~n6(1QjIkrcPtFw?9QitZ>6G|l{j^_upXGLGTI?s^2>_uu2Ae>G+Ni0f=Y>;!9I zRd=BdIwgOnsm z{UG@06H|U9Jx0061X7M*XI5V(U|G733P|!J(Eqg&fejU!5c!*_y~O}LIdDp6s<~Yp zeIiD)5Qj<;$N?mXGU>7tMTmNYP@6Dm3F!jas4J*9S0zF~0;hgnW@mMq>v>3mmqtoQ z$^;&vGT)GO&9}nV+5DN|%+?umslVEsw+W~#Y|($1GH+z|Eq|io0XKQgPm9OsO7tdE zMm|V}mtl8V!|ah8uog)M0QIHdp6&o;(y0BR> zm<17#g;QZ3PVE8n;+=`}Y=xE_0te%=60<1&DhhHb{t^~{3B_N<;;%ydRfwO<@WD7| zBA%@jiej?t0Yx@ZC?4pv2Nct-61r7FXS;D`+>P4jAhD2n4+_jCuJ<%($NAuiq5Q-4 zd){Lo7MI@_s%-4qY1easDYs#3bM!uTP52XgjMK@u6Z~Y)gkR;8aX+#X7JUa!Q4jqO zsTAPYj-v#}Ask0>=zI^BfU%W*pUPt^7(}#@+fzanE1)*`7ewM@PU5GF8HuOvmq}!6 zer%Rr?`1TU^^q?+_Q3@-4&x-7rKjoQM)@MSH!ecti_hr--31n{AudqoqCwm&eK?Pe zIc%5S#>ujPGW0VxORp(6XW|5($kOx8N;96Rqjp z4W>D{)-23E#DkktThg6W3wz8SSOUsA7F zW1=^uw&gckv8N_n1R7F}R@2u3z~jlf18o)g_UOH)%rVq@Kmf*kfx3>E!Aclb6m_HJ zFB(Qt*WnD?Svff5qy_B*0I~JxLgX2xtlQble|F!7UaKqkCd9BgXPg3_Wpll3qK z0E0TgLNa7vZiP7GV{Bk$b+R9F-i{Uq8pIiiNE$ckM-XQi@B@12M{vz0dK9wO(ujgM zgZ4m11olHsA+hV&5CsR?O97aCm~;|6q%)Sf`{-Cr2~V?%yR9@Ph1p<)CiI+LifL4v zV<}m!NMNIUSpNL5MTB(@6@mt@reg}-96Zge#$TQexIhp-hpr2>?Qhu zS*%)N{E?UDsqCo3&w+hp(0JhigWr!1T+*?tAbb*#kbK3B-A+1ZRJZYTnNq+NIL5?ewS6Fy=kmWy*=`*l8{ z&k;;c@~~e^I~)WWV!}H0+mtV4fEIz&z;(_Dl32F-F!!6N`|;Be0)( zw%_Mo_Ojn|vV!kEp@{1UJM$3NqOKZo_5aXAT%PuO|KnAPOR?V;FK858k=3A0ZUwI| z`#q1PeaL>#tM+U3W$&9V8urG1;K81!{Z1b17kgcw*J1BJ8{O>H%6>z^gJQq4)47&k z&+d`^MzOOONy}kvOr4H*=Jw09JbMYV-&}fLsr|n3m_C0<(No(8Pi6K?MW@*BtfE@k z@4O>2SF-&YJMx<8plZJ-xczF|-xkCftY$2@kygI%QR8~HzZ=KsbA*>YYozok%zi)S z_Derxzfa`Wr2Xv$WBO~`-!(6J*>4Yc9Hii%u}%uLzw3OvE5Af(#P#BP9^&$}-}#SL zDK5o+hfLNexFW0G>)Z-nU-sKGn6tN2t)32Y`_*bgu$H|gi#^!$wBP@Y_KUrg=XBT` z^|hP5TG{WXzsQ=7_IL2jT+69mB8bivO!boB^k{!?y^Y&1)AHg)ezd=PAJON}r~REh ziP^o^Tu=MGq7sgL z+TYwXX1~X{{n8KF@A>?iw7*l(m4W^Kh3)V88D91~Nmg*DTHU?w+g%C2RU@v#cRa-9 zX}^0O(pLakT#Eg^I#HwGimbM+cPn^(+3$0xps9NLP_3R;@#;z28;iR|!=CiE2Ya6O zdm+g$_Et>LVee#~o4s1u?_0mhnhyJIK8b5N)l1xdsa}HpYTMtZBf0%DEjNQN^q;G4 zf3K~CKcDt@XDYK_Dmuk}O~jvP|JgExaNv6}Yc>b5)Nv$0I*s3yA)O31moARY;~>x* zs4$#nd<76(alp;)yVp~7MN_O_qJ-$vxoL8W5%@I#emsRAa+%_2ejB_)eC9CFC~X>i z4L*CM(Fu&i&t!QKGSh(goVFnc?~qsez=(WIpL*-}v+&!C$fw#A;WbmFf(roOTj-j^1B!F(@8KFdIfRz64H zP~}5JLOxbn@(6?dn14v}0mu%@g7@rq3+egmNJt)^QWE5V*YW4Qu%M2}lC8NaEL5u_uFWHtp7#8|2Sb4)VnCN7z=(qTAZ zoJ}`>EO~W^9OdukkLFV9mH*P8+^pR&fz-V=<$v-z-SX#L5>;+4-#VjmiSk#tRLXx6 zFaM@$`GZSV{s-0af7h%0`74j9uWW@c=WqG{*T3?A>5yAUms3bc)t3J$CJ|o#X};w@ zQm_0^tCB(azvET@X}tWeQp+Dc7-w?~n`bNL6<7hGIqwPbg8#OZj&NYsru$Es|A>(x z)N#+i=%M24euRK&@QoH8bjPJL&-kBCxsKw`sy=>en%0V`44b9-6H6=Bgh35(!Ez|g z9u5J>dGYiy-p!`oVZB6)QJVK1p?g>I`JEK6^g+DA=_1F5tzQ*}iDzW0gjl{vsRQ4M z62xbLlFHL)ADYgm(c%V8qiru>^)AgETA)W!G^@7yxwIlpprr|^B^aK>>4o+aZ(#E> zHcQ{!%jbh)?6N=5zy4-|;<^)am~y)1ZG~#LOo@IY8)Y}G479uY8neLpZqv%X_&J|t zWzdZ+x+vvp8@?$q+r;8=7{bDYLW^0tC##e`;Eh178=*$QXqhI;TTXnyu(H396(h*g z0i!rADgg`%WYCxjlqS&df1(>7v(sE&jF$FblXd&^i4@&1i=#2d6)*rHgiUBj^JU5q zmI(4(mm@;-fs|&56ho7R@+QJfiHRs1NU272!6+a`7G3ccsoi~;80fNuVNBZQ#7OU0 zIxyF8Y>41Qjf*i}e3Lr{mo#Yuc831lfIT!Cl^a2lP0$RIYNmOCJ7HQW`3t4DkSa_o zr8c_Mf|gUcKa@Z(`95{F6@jqw@SgwR3cgfgfxe=l48Sm|E4blqTso&QrHQ(PGm0#dc}_a~CS)2{_xO#Y3U$E|L6D>7ns7O-oEi?t(bUnEnE0 z{B&jWqg}7En=bZDT7A`Th__u%qmT3u(xAvG5C@CFo=5|D(ncgFO?UyS?h5{o&>Oi8 zgb*D>sx&K;SA zbM+J^pY2$dT(&Q!KMPZt{-l4Wm5-u7AJY5&*_S-)>KrVPfyVl5KQ0pRATw zJ=>+BELCQ$^qqz}kIJJy^GdHAy%y9CyT2te<@C6zZkK|pNsopnBi)UbG9Pxc)L=41 z;>b@zy-%$xQKUo8mQrzBg|`2J`R4BBW~LoWrYahp)-=oqpsD9<+Buw;`0NMKSH`DE z8R1EYV#Rj@BG#UX#jMmvev+4+p|7-Z@h}#yNfCayH@aG zfqZjuO>0*0JES(NaEHFe9N!d^K(K~}fv=#^(}wR$X$1|oJBM)E5TlJ-TMlC^IhScvQL z3%)&H#OD0OxnjdHKeE-A7f}<)^MRx%(02gP?h3gCTG0$8^Xfo+2>KRYCrY0`Sp}uRp!C*Ki<{D1 zwBjnIF?y7qaQIN#rAkUo)1RcN1ng@$8|F;qDc?q$UK|c;OXKmB2>tFv6@&uYZ8e85 zQbnZKXbGMFl#WQ_d^bpmJ>cTkQWpA2J-y`V~+KdRj05v0tI*wN%Q6ltVEur6_Qc(#N^a%ZJ znh&Aft06QQr05d*j0uDemI>W+tQtZ$9@a>-t(MS*Pv}T=fG?r5P;XTw(Ly#MkG|;i z($USBno;@zo{~gwuZqydkZ6>a(DA6IREeH_T!+xN(|sg*m@0rOiaxY5LL-P!gG^{v zSrrn6EeTW7)~+uptNXQNJ~~MwWC`ow_%s6f(|pJbtA@-ARHNyUc?*%b z4^N5A=SuaZ3E2~wT?Sa(()=1|nyL#{Ju=(+k~yiGigjpZWQtdU%x*H7yCi)wjhxJu zS~9QEk~x2jjxQq_Y%&TE~24*2Gu|{H@C5$Mwf;g!k zj7pIf;*8N&a(f7~6P40@(V{&My<4joIAS7AP zKMdHcyLuiMU1MpC!3+**zJ-lu$RgPAB$lsgB=Zzcqisi#C%!#Wg>-#WT_FuLav{b1 zq9>%vrQ;Z{kxs*h<#OlJnTJ9VYA&59BuUaCiRBRWv;fuQe&@3254W_v`<;2r92W=zGZ8eugRJ<4Rqg zHw1H@*B+{bXJvmYeOvt_S!R98C=b>nYRCF}NX|djr#zr#z4uto`dHoK&S|X6`oe;U47TK5cCjzM*- z)GNJ5XgNzBQ;MA-!y{nOnHxjq@mp z--Fy3@g*Z=;4Z3c)Fi> z^_!FawRrW1pH+%i&!R`9X=nG!>P!92TH)0zV0)xsq$gUC`0v51mt)Cm%AM(K2S$qD zc=h>58D1@D@#+aZy;0|HvCpG|SF@<-uO_V_J;MF%)MJVCb zzwFQu`WU(dsz`h45&GIwJ|e9jyn4zHRY;Uz;DK5~zlLe6guXINN214`^da;Rnzzbb zHh=NzUEfzj=<;HXL|bVIl`#3lM@eIR39TQzx?^>Ow$>8*6ly)9VMXes-5e%o;L*8&dD|!>t-2 zfAO$}%&dEKgxtcH%=*ErH|^9XQ^u4GAG~_X4t;6LWM+2ONHdpEB&Fql^==($hWe6OKX~94w)0j`be{W@aj&LkSXKUe@1D@95+fM%{VuYRTM8Sd~)fZ^i3Kvx7I8wZ*H;J63{Mzh2%*3yP#shXVco+%t`s^S^4F9y`_I z)u#!HQaIaSmpQ8wUi}u5tS`L!Xa_A`-EvrUc=fnHb%pfCX)dH!x9SP0a=dyMfmVui z-W%v4om%46=}6K)y!u`nGADf_aAzw7ec@+9ZE$>vIUt{Sh71FZ}TY->}>m9bt+y!tGlGyhoM(of6!%lB~B_3`Rc zzv;5x`UGda*``WZuLQ5YhvR$Or3k@;=UU>`fqwH`5~t;PegfxNAFsZMI#`2OD^>H2 z$2rgKHtO+QDPH|xqFl^(^jBD}3tnwPavpf~%duL{a_{y7uO3mP$AOGjZ(FZv(BB>| z6Q9;kCSHqI|9piOuMXBtRmH2vXw$VR>4xd0D^j`~uU=NDN2+y|j8_L}6aD>Onb^(P zFUzM_+>H`d@#@4F6|YXz;?+a123{SFhRKar--@X0s>lF@y1jBG(N!~crNOI{Zmu4$ zHezv~Y$*`o7U?3sN8BQvW#K6n9%bP#EZon+5*F@c;T9GaurQZ}Ygo8~g`XnKmX^>t z@amk|p@spkh8ljuv0x4`>DNLHCvdzz7i)IC9%?Ym3pKotW6*y?4S(QRFdx|V8(7l| z$14kJj8`9j_+N`xpPyeTUVVTb5nkQz8(Gt8jaLUzt@4lI)q!Ceym}I<0h*3LDyxOg zE16$C0MWf?Nf+GUjaP>YzVoXs?=rmFV`lbDpEr;8_kL3cuO3FP{WEy=o_L7M2d`dq zXC3kCM;4*xkn!rmd%f}MMB4sZnO|MBUQ^HM;nl;pYw+sE=&n#lmd&qrS#)ZlOt3#`zlXdDhtikt^`W$W@aojODnv?nbyqE+U&44* zLVM~F`s*+sLhA>w-jZ7dp@dhzu|^}&rdmQ@>8&HtUcQ9Z4_|`oXK8TUU)lA78DJ=-NRVLi^|udUS{nq4k4T@A$e3LJ6-fUZo+lg_h8{ zy>ujM^(C}^@al-F2qnC_kCxCUP@k$re>_@;(0PNsBwGJ?bsDQ*WxRUqR~kWUfMCp` zBOv&dFEwKR*sh`eHa+Sa5A#8>>IbjRTdPl|j8~susUb61OJ-J29U(t5)Q8Oa!K>R; zLZ*yY?`o?d^TB}{X&&mKL+08cK4jJpUOoPQ`qDJ=LSLaJ^UDDmGJEQg*~*v9`oXKW ztf`XB@2=HI)2t=)Rn(R~e$F$4eWY1Gc=e5ykSXKU{j_90PGFbPK{fsY zc=hwE^`$A})&1LOq`6+ukQt{(W|%LT^@CUcuu7jy8LwW|T0`cwS~B12rX$Ts30~5y zEnY3OtOTzf{*wnNqRg*0|HwfRqb@tu;?-6{;S@dDaEHuUo$%@tK)31(ukP7Gi&u~C zT^(NC`H-%V%Jy&}{k&4I%qz#MZy=yfkEqR2k!pZfFFc@IB#FCuktBRkvm(i6XdB_xDoJ(0tF1`R zKhXA?+qK29JDLNS`grw6`*nF9UBY=DxuO!DtH!He<5<^rscmPaTw;I0LUJB>_5NG6oSDH{wezb# z`b>`l8LtlgSkqFTw#dY%-6j*S#jCsg)=V?MdYEpiDqg+vBTc&hRniU9OLy-Xq|5PY zLnVpIc=bKnL}QgiH+Rw@b_OM?;?+xTQSoXNi+g_cqKdl=l8A=MjaN@aR5xDzALWYS z)eo^N4PL#>Ts>Z$h?TOkrNOjbmSksPKNeb8*pr1_S=fn%5iGo(g>6}QH4DuwY|O$S z7GB0uSJ_fILc*&PJ_t3O$MNomp$7X$z@%}!^>L`7|0kh_Q#h7=8fqB6G}Lez$Kqv( z^BJ&h9P^il8myn!7_Yv|{;$QW2V_)=SKmgD2(O;|scaOr#;b=?t@4lI)q}6l;ME(u z6DfY<)$X45$Rk9vl{r)NqUVT5hE7Xx?^Q&*|s8iczS-kL| zy3DV3G}7SJ&wNw`rG!_vTdb+*m!Wr|QtIfSL+SoLK9trEUj5C7RS-&eb;cqMp^dbJ z?!os-K0v@7zJ%5fUfs4TLJ6-fdsjo~gQ#UxiQcY9=*-?e60IM+di)1fNR$X2tR?gd zR4OW=SvTuQ^yj;L2(2Hydef3>2wnY-Mxsr$gdVs_htQtBgw_vUeO*sL}=@I%$FCU544_=-2eiafWyn5E#8i}syrXkdIqmD$SXfHzRAFqyJ^{b3muX;~I zzb{^WC`Uv6#XB_AZx7d@{{G%x@KAltuWnWenKE8IKuhK@EtwH|WPW~^51I9YS3j{> zUz##reM3WyG(YXCk><1;bfnqDm(2RXtMeD>lPTlXL0U2!Y02Dky$+d=_VSTt{ovJY zt0wctV2w1Bx@e@?MUTv{qkYJ%AG|vCU43cFc=g;M4VkM6>{2=?Gq2N;<~6=#)(>92 z?HzqGWxV?J1{yM(YsvgIOozQy%}yjq!Gy}F%3Oci+b9Ir^a^Q-^k6-gJb9^e(J26*+!BHbccvYr=7&RaDrl7kFw z1AzHuTSWqO!K+_Ea{d9BkG0VjM~53ZfT@pHUntb&c|{)Q`QtY$;kjzO`d5y1ZI{+w z>%n?0=U2}~a{jUYRBJ8kox(Zm`gpZLpY_$)5|%)o&lXg|dL?-E=}5{N#a-0KgXdb} z)$brV|9DOd(em8$2F|lSUfrZXx46Gq$9ewh4LzPK#j7uOlv)0+wZd{;@am;V&I7OR zbd8p?r0e~_t1ryg<3Pr%pLtEwpj#E-y!v+uc=cX1Om4h-E26sb z>UGK$!>d1IR~o$9aK2-;>wzqxRk5UZ5N?qcuy8I5vsw5O3o}^wJPXrUIF5x+v2Y9v zlUR5^3x~3B5W;LppmX5WhTKrYhd74hg&Hp6SiBx{sq?W02#%Z$p@yVyLJf@yLJgnd z7*>clINmM7oa~LEhSNBd^*}5`u-(p3>oDuR*5TN6r#Jvzl|sJGGZv7jFm+hL)}+P~ z)-Tn$-hXS}UEp zL%3c-GhuL@C12;r*V*#*JY3sd&Q(}G%I=!B3_sMuvZA@VJ%DHdJ4zVGVa;WvQcRC% z-4-bljg=kSzq&;JqJv&EMPPGyzI2DQCsglU)@eD3N?#C93F1JrY2|979}Bu!Oe=q& zeYu){$r6_D&`u5pcBjNHwt$k%Lu{wA;GMkU8kkI%naZJGtcHwkxUm%EVvkJ zS~)X38L4Dp^B_7O%g+;O4Y4FTj}1?tbJA&?3$!4(#ZC(?BNYp7B9SPZcIT%NIE~_` zVR7QtIB|oOZBA{in4Jgqmq{RH(gB%JyVQEFT*H;% zRa%OiC4u72qF5K2ac z`YY`>=eU>s9)UquZNIN{C;Jsyn90Hy5Z1_k8+ZEm*zeqHDz)E_)>LD^_v^mP?Ds!- z*KNOE?eFy~yzSS_?)<;EU)z;+w%?{@e}nygaFpBce_yW3ekV7sv;A6-(O+r52TQ%| z_hwWWRom|lteTZAZD!#&EL?}MM)o_P8veoGH?``!IgRrdS8hIO{zbY%2b+HV-r_vk-Ah6pOOL%nj^R22$)Ufr^3E!%V{7JD>> zpt~tJR_DM4Fqkr95F1{rnbw2`{E zV$X(+b}^S8Ex|1tmN%7h9=ueMy?QLgSS*o<;qPJ5+mx$laN!2mIoju;tRVucxB=S` zw9dC+ilLn_jpL(C=0>Jw*nx|^c!Bho(y+4KlE~%8 zwni)XQ(Q!qrP#&aY##e3*`rU{v40YaYjfSpR`;dUq*Kf_J;lon*Z|$MyMi8o;(*2< zs1!fBfN~YpTonpc4iw6rE4VuijUk>%p~CRXchq8cpg6>%%v-S#%^mU78`ut`nUrPZ zjxpJ^dsdI2W~oj1=2>L{smIHnRQJv5_|sjGnhc!0P2?k4?+p1JB9(diO7wAvPJ5Rf zBrdt!*7BXTwDPk#zM2PHGo+57d`LZ{9?e=o1|^tdM^B*OwC7fYwES1D@)lBgw&#`^ z5zDZhC@DLON*inzNu{x^IJ&`7E9=_|YR;CSXV-5m^#FjWlSwaa_<#ezYcpBp2%rWN zA4Z3dwH4;lD*aG-1|TRA@Z%|(*I_I2Qme9P{xErqrbs$H+V{-|eBS(@&zqJIK?JJp z$T!le-pnqdOH%G2RiF!-<1(q;_jcM9db3p4g4oaC>WLZ(<|4mD)fJ)J@#62qTshvg z0(K|u;M>QssU{NLa19N|wsj*ZSR0;>I|4Q?!)|7~?6{d`b6jX(nodxS%{BhA&DC|B zP27ZOH4#%S5O4wQdbOk6l<_UN3E+G;I3WVi2Vc4O|cm4kwvC2 z18M)b#;F2owm_Rh!v1l#$W6kIbAsbsMGAIDAYza|nA{bQ^}wO0M5Gh|PHAH`1B!$c zofs-T!CHa5z|yCf*8C^sk0&tccx5|3KgW6KK`wK`4wCKx<^vA?4s1Izc)LQiU2 zqHHe*f$-LeY@gUuMRORo@2#X~pwym9nsAl3lB%kf=w3kH@72_wMW&=*Wy4sJ*+s~L z_6$r1Wj3@#Hd74t5QJsNqXN0cMjP_3&mQCGeqG8`?2?9^14{!^Pq9~(*eX9)%XJwQ zu~OtD-W*(0i)orZht4Y9Now49-BxofaM-d$A#y$RRdAG7q)fvAHd|LAHINORD3%9t z03a4%cGocislHD~j-->&PR11(-!o<|g3?jYKB@di-rC~KJ#x)E;R(~FpD&@amkdlXV^+KCXvqv^bC9N(O6NXXw} zH9}deO}s2PwtMVKSdLu@%LUhP)}RuN(n9hz<&gyJPnZhZ13BMQeLnhkszO(AwM6|w zc@qs}VN|73)k<}b#@gcPZC9%&#`DR;WF%5MU~8T4kj^KlZPv)fdODwm;xCMH>%89^x=aOH<}-oAqcF3GtLh4~jCkF+rz7hS zdM~5@6;`^F7Bzt&sL;lB8{ld=l}kF`3rrt@9S8H>I}W}GPTq8&((A@sUIVKyIZD>x=+5Q z!1_AXCG-ulltd&%5%_rN>agUg@TAa&^L3*oK8IS=f|?Muc0WKz4o+i{4~QXIXfPg-2QV3&Kjq z2Pr?Tf0Wv~ZvIg*twE?XUgRJB*vAk5=rMz?f0Ul6`bU|2x#79}qXy}I`A1EVw3mN$ z#pHVOkH-E`kN(lMN@9u=q;B0y8YN{URO%l+PLKYL{!wudbsekpk6Z-p|9kwS##r*3 zItfKo156|G{r8UsBf4My5n&Np|LB9Q?H~j4kLZc&AI&b|D)07>(h*Vdk62XhAFaOB zPU9c#{j;5ie>C|W5C4cjJZeuDE#Usqf;7+C*B}3=1OOQuZcZc3y#IHJ4L2uKRiYiB zrCMH76Y2vE%s*=XZMFW9hiE3kRy@0&k8bf6O_5|xM7P9CsCW6i8R_$;+G+L6KibUj zwSUAvGA3IfV88vN-T$%F$v-+2?2msmaDv=kk^@mY|L7JFN>)hSGU-X=T8)1sEvq;G z=(QcS@{bB&``)Uy6H4u=q`4ctl~h%=+W1HJAk)9dKRVlh*JXc)f5g7yTl@!R1BqI3 z_~joB0-YoR?jMzG=Uuj<@v;imyMHtRIsAkE(F>PQ)$034u^4fvoqsf7jK)8@1hC6L z|LC_#+&}WDnD@hcJpH3B1$sJPYyap0&{tpn(Fa>q|0ofyqPor4n^>7n%BYZP?H?r| z;kx@rjgbmDAm@`kTj;v^M=Q3}lYjIi5+d?OaPl}e>Aihnx*R>HN1wr z9s>){Urpz~v+x89C4^g~pV;}2Ec~8@#Vp*!!VL)h^pA!$shfY~Gk$dOc0c^1{=Z3j z<3~xcs(B|efmDK#3x00%=RvZ85c4Yb&`A6TM<#pNL;UBT_qdTNp`A3~Vr`tbTwVrp`mW=tU z{G)r3!$0UBjXH(8M&CaQ$7nCZ5?fB6f`#i^w zKFad&kCgGF(bKtqH1a{u+SecdXx?$Hf7E6VmGT@mDXx~|M+a6{>mM^0u1mcF!7RjZAE)C`&aMgGys z(!b9?V&g}T?yZ%7)D(2O{iAtb@E&E>eSejI)D1cOgZ@#UpHbK7`$s_-ZK$1p)Yz`^ zkG=xf<)44_`6%umc~s1A!F)XZqnRJ;>3psIqjsRLzWk%dKUe)DkMW}iu#TM+i+*Em z{Ub9HuDgGe)Zq`k9x1)N&;>OV>XtxQM7y zE(_PNa0LrLW#JNpTcmf``2rTsWnnf8*&10=2F@$-k8)`a45p{j^j7q^(9#DtKcl)x zY_^}c8%sXeV`)~Yb7;6Ae~FX~ATbPHw{uGPP-VnJ#r!6A)O6<6d17XoE-{iG#dSGL zwwx|!o`qj|ZtM!)%|fq~CRfn3U{Z>rMy?o2rAo81kGVPA8QHXcZmKlE&Xc|JzhK<3vpt( zSX$cts|YHG%!Z9oqua)4CdBO|fS+WJi*ir_1@}%K5Rvx>Y7SuuFwnRz3p0n-gr66QId`MDP_f z4{pJYEl{8NDc=LP6R~f~@^x$rN>97RVD+T66VdwpGA^59Ev?fIa1py{#kxN_@|DS* zEvHeUCHHuE4akjhlgnjmOizpQmMx?ACONNzT6%Zv_m5sX7w=C?xf!IXvbEHNSO=|! zSeB#8)|{T!$y>IaNw&|ie6Wg(mew0}Xr%~M$hWhc4x3P~sDtZ<8pyYpmMG-vz~vj3 zp4L%Uz6GCheaP0*{OrCO$#*(S1D~?0@;!Kc4T!yg5$l$(B|WXPu6*0bw9@1$%8J?9 zH$VE)nvMun$am)_oaY>hrO5Zznvk5_NtLg-&9tVpQF>Z8gDG~KHF~=#^JSv}OBBV5 z7YH+<7LGpSq!vO`Z!mos;6(@H=a0RdAFMWYL9RG>dsMkS2FmFua$(iS1J}t#kVtii zrLyYT!m8&ST0fENiy#VSAyP03dFRlgoHIFQqk-ltE?I~dbQuKvvQ`^ktVYp2{2JtE zM$NNRBwswsk)JKmJj=#;tSbgz*tEJ0t8G(5PPe41f27{2yD9A98rWUB?qeM#-Ll6= zP^R`4%>0qRpR8P7J3r#ddDz#jVKtCfGA+8uB7*B}(L+8N4sAscDx``oWjMjwKTX=Hd9eb9}TcPxFt zg)dcRvizkfZO*~Paz94HJTyFs9ut|;19(i|w}|NJMHic99>Eu5BGw0s-eH=xm(GWV z+v)yxoYOtp2@>(g;(h|%|B}a#qGuoR_(SRbLOK5H_@$4)W+4rbmt58PdA?W78N~pR#b~i*GSIK!)W(@S18T)cc z{zk08>&vAH_;RVh{pFH~G--vmm5XKXB|?`zvp@O}NAx|7glP8L12!2d2*azib{S7X z^SQjo$6E>hWN?%|)NFzbI_H+Yj&qHjvi{qoCET#m$?%m5I{XLKPRr#At+M``++KHP z${+0MH%Ah|ofD+S6@u)QG zR`r}gBGTEn|I(^w4&^Z$dDtonOIQ3^QK5XkyRs+%I{7U*3k-Ac6FXlY2Xr6;b# zXX5YR%vP}hj(6$&)9&}4$9weBO*i4O>rKAn;b!SE+_s)A3`l`1NTUTp`Itg$L_k0p z`X>BZYPp2$d9&1uM-B9d+SMcK?)Q1rW;|+;N7P$9qP{GrdKgTA0Ha6LD37Q=%c=g4 zM>Tsy?c@=4i5xYXM-B6c+R-CwJDGq-c~px>)XpAJ`^r&!B5GVl#U!n)x_QK;{FRbw zg4l`>fhf3(DIaUBYN{1=Hp5b^UMJ1nK@|%cX;z|H>*OmlmG5)PRRUc-g{x%&Wr3Y@ zwF^G3Buk&RAr~>UUvElpiAO84rO{Z`;E#q7z>yRxto3nN%~ zJwlE!d94pgIeOts%Ma8UU%DowQhezmt@c)r_)^=g|2)3b5^I91g)eTY5xz7M(Y^2` ziH24cd}&J#)mY>jC@uB*-$S9HD!#;GSBWn<6?HFbA<02=*IadZE4Q@BqK_#FrFW z8D29%&Z<~T>)U6%X{{1p>MW<>fiJnn)qvdMP?cO?e942}f;YKn4r=K=ecC^I<^Jk) zmWH;!dhppA5PJh7){TE?@g;>;h8MJvX-(JC8mB`mMbOhW!zcnE_xt*7M zwfK@kGt-ALa$eb5nqN6pBl%v>($L~d>B%*aZ+=@M)-7KxzNFB~QnO7*YWYmGgs+9}~n^g=cG(oU!}^?cp~!v-0b%!VF&;^vd6XFG<<;s>BMu^a_%#s}eJONkBrR#NE5r zzY;Ti>By{l#+T+I!N0KTVfa#KG!a9cyqIK3y)eAzO-778o;Agg)i;Dj;H!Pn5Yh4l2iSNN39ZH zlB1^cs8!)hS6$Bu7{;Skg)g0vY3+!pRpU$L$RGF;lla9ImEcQ{T&3bm9<#yj#$tU^ zHw8mt_)^3tT70REa>ekaCb;s&m+nPnRZ;MV1jJ(V(FG^s z@sD+zbfGZ_EPI(GJ=+n9xE7v5KSK~PP`kMzyBrN@EN$r1f-Ywp@JN)DDaLx4yL8$~ zl<^&^Xz9EjAk6N<0656Di6gq(#3wB_@n;6ajvV!1zVr(|63LeKv#wDM0%C#r!%erU} z)A#tS8tQxYi;BKCM(%q0K0Tmvioai37mAs_zwx4%zBh--dg^ib8iJZOq} z?e#r?QRdcn8wjgX-+$jh`hJ3i5<;!M%i{;UdS}p|QoW;EpIE4>c`h@i(>AJ4cMDFe zze)3KqEMI7C+^+xOSMq4)OIL7526j$urrfs0A|{{*~9GZzE?$4Dh>)@U`mPHgiuJL-P-#0A}o$u1=#aT101 zf~$6{u_txmMl~~>BumxSbgIUtZJ;txsw!*^womF-Or;lvkjkyf@+$nM#^v?YV2|=j zlgsNhJ1;L+gd!LJ%WETXrdM9cf7ZFYf-`t|{c*EGmsffH_-^gXYl%ZGFOM$U0xV%C zIlf?3io3jak{Rlh*NkmcUg-#{Ew5`f)VREExyPft6#M#h057k7Hz{)Qzr0#gWvN$Q zxqsBTyoOEZh*5|hVwNY-#~6)eO=&8hh5Dx#u&QEqK}-l5Y)aa( zA!<}UWi0<$hIruguf_M)yzDLQ}ij1#h8B3X1 z$S}K0E@d}Dn;q(Z{rpmV@*5W^qig=;*Qy5jS%|+NpZtD0;LV@8a{d+v`p+NBZw}eI zQjScXXC_ilSu4*f^1Gu3`LXf~_sMVPAus;KbO@qy7T43#i9SVGS^2FX+wkD8^Cp~D}`@7ou=`CERcw|-WUUuq5V zD<=IM?UP^M)8715p)bKT&F}Z;z4;q_k2il+un=BnWA%901(&Aji!vr?dTfcGRz6jfyxN@S~AQ|PAD~@DTFwsRU|~9ADoeE%GiRJ zW3vGE5#l%6CeC8XhylEvN8HgB2~k$@TTH%BK|&+NyjXEcc$zh`5Yy>hGw`;h^I6QF z5%VI~$3~Z%T#wXpN3-fK9)#4L9v4KKKHWSE9L(txf1b5B8uO z`*fuYOP>;MF{HGno#4b>^souM&dl7jUhF|?bGGRcd+^)q^x%aXu_G*sl5-VGhFtPHSL6jCt&5FA-L6KZ71IGfU_ zVtwgooTE7HD3}Cy307JDW-5D3TLHbTPB*vUN6zt=81&1n;;6AUOgQtzDz50!$Ph1H z1G#h$KzA|<&|(e*2sMlVS;_bfizWJ~WPt({+r;hIb3M6%yyrT7Rw@m9jdzp7NJQF2 z@ClUGAP4%;L^BX9wMp#=ss4B-)?{vXIn-i^GY$WRE?TXgd6$7st}1H#f9zcgTvS#5 z2LVOJE|w^oDHSC~57OGO(VUS%@92=4FHB8J*DT%5bVji>p#hbyQ&?86S=no|tu`yy zM^=IupyoT3GE=L~OK7Q;qL%aj{?57g&b{-1LD07SZ=W1y?&F-_`Mu8X{C>alJ3YdL z6^=yF%03YyF9Mui%yFr9Gg6`R%v45Bx{6hEqIG>C*rR4 z0nt)5Y>$y@9Uz&t%nCUjz*oxWtHxjb@jr9%8%WD!7ikivo8->m7V(a0r19{-IU4_B z$Ca7m!^5c^_0dA*6-YqXYBN6M7lXY*k4jtfJwo0we8a&`4y)@_xRBqHVK;)ghe&TE z5xog6`oWaLSlWQFimpKBvj_tNQs)Bb%H5D>gcV4Ej3=dVAMsT=JxI?aK_17433*|Nq97g9!)pxLt8La@qYN+ zk%_~hO|m`fq;*j4R@2}_hwwyRYhbd=5px$0e2aGL+=+=3ZBi4f^eU5sbR0VVq z%EVaM7IPGT)on2q_^vo_*{O-$+N)mMd5LsSE`l!(u{)fBguding;0t3K^jobUxXh} zSlFTf*<75s4S(%!oF7SlK>_~vE!LmS^;>j?koGGpltRzbF`n(fTI?LpRdfZAQ40iF z73Av3eY7ru6*Wd*3?A=u_RC{P%A?*O0 z9j)+Ta3IuSXkgb2u014hp9WJ00ryVwLn`3Dj!W+%=xGk7!Njt2IZpu!9i`M1Jw`Ed!Mfcp=pZCE%xK0v2rGC zeQ?pls@B9=cE(1lIU5xdcWE5dbDr#}{Nc361I1POMJ&`W#7CKY)G|n7@+NWBoBv?{ zT_c{X6pK$s;vh${SnerCY;z=w?zGID?C>y0Y`U=Gi1pTJ))NXuRDyM|!!yfnS~vNt z^t>a^OQ9^uxDAKKvV8~0O$tyTN!r?D=;@yesc=x4615{*=!|a9Evr;E*)U3 z-T^=Z0Zh5>hNZ`pYbkvp&6eMDHMLv}4I*gu1%_bzWCj%(gE?t{o{738sZ~4mw z8Dk`KI`!JS+qFJIaW_<$SG|7om`*6JhWSYilU|~~di6?E%~4#Z?U!8q8dR}XF?kHA zSeG%Mp}%5fgvfBuS%sCc&Hd~${2}C#CXyE~A{lWG5Mj2Z;(`cmyOiWbMK>O#>+&ne z6@^(#yYg@;izb;uTvGI&UD^aghv~e3oH^^MY6*Q;7MxL^DUdyM()AI8zUy9X)ORUp zKLBBe-`Ip9-A~*3P?hCN`kpte=-T|ndfGMtI5a9Yb@qMgJkU0@Sx9&`sH*#n`4c&9 zRsB&DUDq#UbRDdx>oSF|WGm5d8C^Hs>_^vCxa3RMvGR^niWZ8808bQF>;-wps?%8o z7IG7*%?jd`m2)r-WhSefZ~~&ev$9_dSyx`>8H7#>p|lnCWXIz&;Ibu`*Pxz6(`mtl zlL*w@{DmRS5vlr5q{SP?OoKP;?B3&+=P#O7{Cu+az4*Ad3XFa5U^NLoXf7CchmqpmzTVQh&*wnB*a5m@K z@$_Q>tiQ^NpLJ^1V8NycNk`clC$}c#jpXr^<>ZiJ;+>`%7B!C z_(1(Jpk`xJI9Eujz`}b$BI7DDczgT;<$rN-Gi4Pab)gF|=ndVp<3`1Q3p9KHM$1YL zkOA2kPA4}dFY!TJ)S&NMOe&yWTIbAJ2E@T#g$FTqc62}QQR134Oz?}vl zjr9xgKRjR`0I8$$sI|qJmXFN{#ydPLUi{_(&8hR zS_`faU6$xbAG^N!5AXrGt%+9IarB6%au((h4Oisw84m0Ud9z{1V^KUK@jm2zQ++FF zYZ{5vvnqke!+u~`u?qg^uRN&R5rC13=K3U9g`^^SbqG*#bQ(UdKPo)d7_DMyfKS3b zjaVB(r>3M&P{GJFAXdoR1PPbyiPnNp5u?(%Pr_8V8$YLOW)PU|CnhqarHIK?zp#r56+mRRRiy62m*;1 z<%|V?)^kPP+~Yv$HVwt=za%axqwVBs5B+%$*RUQEjXeOLyoVTL2go#3cC@&fv1wVIa7+;dj;7STc-+n56iF;ty{u9^&rV z{D0zQe4Pk+e+6Gj3HgkKya|CE5BFD+lbUPJ3<;4Ds0yYesr|Nq#-vZQ`}XO1*Pr$k(M+EaMzZ+ z*>5Rhm)6<5ZJ7qA;a;?FZ? z1c^V7VK=n+^MbjC_;Wsf);0dTeSfg{^GbHd5P$x5eg`f7oLzyvrw|lc^ilkIJbu?N z{ygrp4(C7q{NT^LFgjbSj=c&?2xI(N%?&MRSO56)uBl{MqRuj*=-lGZi-vmR&yR$e zz47O6e^uho;@R%-HT+TH&vy)`r3(HJJ^tJ=*ej%>|7+sUr<$F&_;U`E(4g_>cfR}s z#-BIB$wjMzYVZIpb`IdLKK{Juk^jY?>l%OluA{-BqH00`nvfU4WzHv^dyG7H6)-Jz z0g_&R@nt_)F0mCE( z_j#j+SPA;apHp+V+oT+vcY)&1alyg;V!Rhz4W+>IDxgxnF4yZTVOEMU{@mdk<|zp+ z{v1Au<}{v45itI|zOt=foH7=d5Qrd-)y1E$*;jk~x%Grl;?K+C0}}T0i|ZeMj)D>6rR|*ib+p~+ zI1jX~H8{j(lP9u+(suAYUfQbqqb9mqA7XT^J^tJevxiS!K`Ji!(sitS$KH_R&$rx% zaVRrcu=w-N)*$YGM*KPHN#FQ$DW>9ck3Uz;XYKjKpC_|6edEtecwkMWl40hJKmQwU zvD)I#+wbLE%i_YTbPP^^Z9odfGmKI5+ol=K zUBCGAN4rCaKga(WNYxvx$!|N46}*+R%} z5GETnQb!Xt+d`p@qW)`0a_H&cOm?B;&t*(z14_+2c=u~zvd;lE8=Eo*`7jysF+Z!_ z9%l3DJNI}Qt?~lLpWojUI68K|;?IN9&m}%a;cK7x*!`vc@v++D&p&T(;P~^-cIO^{ zex1esFIfCJ>1lF8|98iqBkwoHpRFGgmo#Af`IY;0@#nL*g%E!pSRPoy&QJXLC(F6W zSAh6)vl4&#syY6=a7)1Wb1p9bFaFGP-_JSz{NV?_@#jao>*LQeY@x)TXOk&@?(ye6 z*pwD5{!Clkw8}5XuSfj(b9i|S@#iFSgT$ZTMgbW^?3sRu4IF=tobd;YKL_6b{4v@6 zf%ZSM8$sgFF(ZP+pMScOZfNo6_2Ufj=YQd6UE|NkHU^77?_qZg@#oLdb^D*6^V$E5 z-}Q?>&t7;T_CN2^#h<@zj3tCI{ycyM>&oT7VIN(+_djQnWm&KIbGuY;{Q2y`p5FNL z>i+8f=ly@A`16ii$+E})p~s(J4ED-@Rs4DS;cJkU`Freteqik%F#gKYQiVZG_Ftlxd?tbuS2ERAgDw&{+vGwKj5eM-Qv&Iy9t1Rp}3~~ zxC??};`%TN0ngk9tM2A*lM5Jsei}?21l&9OdcoCDs)G9VJzigl-_BL+e_mgQ_;c<+ zz@T@_`R;!%^fcDHZ@35ic>BgMKTgX{P_~hRX%ab zFkFI4YwucgbUUE7hVTb?Rxc>W}N9$?Z1mI{2ukX?h!;{AVsd>9_i2I+R41$CPd%^3c zMbhdV8cfXOw#kK#Kfg63=zt#VsT+`j@eE`9`C~w>h6YLP`-BFu|9Mpi@#lrT0fXMq z^^HHj4h^r1KdXjr)(;^vTHyHe{NZ{gyM%yHjohJR@&0a17C$&BP4@NB(WK5ywsr_- zvI`x5?n6t_z*!qH`T+%Ivf)E(WHRJq{;PI-m@Oo4umTQs9=gEs=dN!Dj*gwL`18)I z&m}$;Cbv+T+iT_Zv9=Jm}ZMpxrs{fBuw)aKYlwOQ-(#$Di~18RO6EUnCSa zVEp+?bl~0poDf3%dHWlICG7mfpQl`TF7g#1{`}ah{_<6G{5gJE!1!}GF8?q7T+jG( z_r<>P=SCg$@#kN!2_^pAm`w3=k3SEa5U{+y4Wb&WrVuLu@@ zKJ+iTV~9V0J6N~>`8l8c&-h)x`181DFU0=mmAd%zSQ$$QWBgg&n9}y^#`TUr@9IXD zWxe9hi`shQ&ySSo;?Lb~RQEp@|B>R)ceJOa3jPm0{@gLxEB{sT=Tn={Tl~3}{m(xx z`2)tEH_j*fD0uvNk>!8!=eow9hkj#lsHmDy*rz&Fn0Kwt`=8;b^Lp*p-2|1WI#i;1 z;s=)Z%n^sb6p|pX9fheb%>L(I1VF$rNx`+;r{WtXA>f(YAT^D;azD?t6~3h?7@IswBd_-$DdE6>p3aAi;k1lbSFao zj`8P*%t1M+=QUo^1c*N$HFG|?VDaazOzHwM{esS3Q2n^*ki{E+_TwV>+g_>N-$sHh zuTA;?7=JzmEvoZYtIGAgJ@t$~AB0Zus@E|$=!D|$Fh75%`16DwLB%1Zlb6Tzi9I#N zDckoX83`f&{M46zampNA^4%w!C110o_V{z_>qCh@C!qZRg#CP1{o~J3Fk-y4opYUz zwi|Cb53~&}{``a~C~XH{<)y8vKWd_@wFjeX?eXU|m_2;r&r5O1m#*0V{6fg_=UcAD zI8?uXkowzc=;S{n{+u+#H~w6Tskk2dp9crr|IFG9b^kNmVzusnzJ_xx-~W8``Hw#r zRs@ts+YZ%=W!C07?SF<+^NM42XPr2j$gKU{LW93S83c)>t%KL^+~d!$cH_3mg^oX8 z8+<^=;Plr96gV_^+pR`(*DwD3(ceOdKgTBlsd_`#H~!pdcR)rvur)+R3mkuL3GM1- zvZp%fm~8irzbBI|gzN@kvQZs%G^um^x#umM$u4yKxs1td;Qi0=?$^R(p95+&$$_k4 zA0|US=Cifi!)zh>&Q)GUyWsnu9}gTIJ74kVLDALbo6Yu@ubSh}3+D%nKj-4||KiW}j6Z)k(>MP7sHd~8{`QQRP~y+C$rL~L`178@ z!Q;=y{m;j`WB)U}JcjslQbdEqpWn6xia+B#&DcSr>u`!#hO^di{tv|d3whVAmr%Lp z<~XR?ajPf|iWQT$i@B%6V#C5F$BV9Yo$QjO+J>`~+?HyThUhpAhqaZ)IFPb&w+?ewKXHj=>+W{V~y()&{>Nfq=h! zbu{@p$M`ira42ozE=Wu8!~LAa40cMcsENL6`$tiCRgUm$|KM8;`~dB*jAF3Y)_yL{ z1{(ffhARUj$p7B|ESMB8N>Tqx)zXlH*jPT4$;{rN?YaK?M`FLFK|)6=spvv|2T`JfJV%~`upsQmGRLnKE5RcTMxg^ z9>$~86nl`5Zy{8RGQR7criS=Uh9%a@$y2@{->ho|C%uoyN$&vM_qdR>N|-CxFmDe7 zy{eJ!JXjnY@&KT-yBD+bxN&euyiJ;diTaz-C0-t=jsAZMM*nick#iu&PvZ|dD)^zx zgda@dljM%dxV+Tgx0-Rei#^7%b7#8*6+3HNCU~hog;RfTwUPQmRO<6M6mJO~UQHeT zlO8tEexj~Jh4y6e>1cmvTLbOmeQEz##AV9Z=$4N57QfC$<58kLdytRrtpvKnn5bo2 zYKY(T(*DdzUy$4CS~1YxV5;^x1lnJJH924c(tZk{tA+N&1+~%treO3p%D?9l1xLQ} zuZ+&i0VX`^EB`~h@_$DF`9ERgfZF7r9yjnn`B`t5LFB)Ufd@!-jq;C~m+LpWrQ?Af zew{t6Ow#N@MgA9g<$r!a`TxZi_0!Jdw5S)>iU>OQ4Bf&1^F2xj=-t~kiRj$Rl)RQjlwn>v>ZBk~unEaJkd?o_N z|2gjJD@E?MrcR1+47PTg6z#m-E-lQ#i#BPCU7AZ)Kt}Q=Tk)v~b{?Y5v|&o3O=`7C z>J?oqw_h6WXzB8J9MQtcUNNS!nUTWEhhjuean&B1XPw=&bMnhJ=>$7ua330C=jHJu z0bx#DY)xIZ4M$?ZuE;+jSLZc1DSwlBzd@Hac~Rp+PoWF?pki;fkhB zQ~TrY7s5(0#-yZr5NWWp0 zp%(IxB)}U&M_=NULQy)lhNRCTk@9f}=G0Zh^{ZhahY9JY?9$`J?-|mb4Cz6z{C)AZ zxIttPBs!D{}NuK*oXB^rkJ@q6k9u`@K$7aSk+=VbB~7pPkrP^kALFR!1yPw{R85E(u&_1|A#sLD|Q+2kEv%OO+Ajp zgkhG!od508--ygOED^KM$Hf2X(q}g5VKCbW5PiQo`(*W%V)j^5?~ZW{wRXEZ+Bv{3 z73APWo3tJi80q(n4UY*`M#pz8}p8;BT90t1!DUZwJm&W&ZM+ZiLxiG5A`2p-rxr z&}>%GO3{Ww{%Abl*($oK!lyr@^pq~)AXtMivCjU6Cjs>7)r5OdT1BW7lUH%bJrS-S z!vU}`cR4N#9nJX1@mmAnzR5$L!Mcgmj#%OSH2k z!*dRuh{Je=M_a(5VW-*H-5YCgxSR7~4^71R!Xlgpj>Jq?wFi1?J^U-Apm5Tr2CXkn zr`iag_A!{z1JKWADxZ1<9#}`_LS+^q9Z#CJO>Kb@6|svVF3QjCpc&+8`lSCzfBoU) zM`r;n;TFJuwEV~_EB=w>r>hF||K!IYKO?r1{0yN_`p-Os%q<+j&CD%zr9*~Rat^bz z!W>uNrlOLe)*;oduMu-Q9qnuiZyVgIqensJ`4gBcM4B)L*l8U_M@(bAlrC+xW66|} z{FMz$rVK2Z?&&ARY+;s4rnTGjXy+YvX?_mVU1i#&wGLC3mDHIwUt!r4vrZZqEp1e0 ztc!BLCi~3YHypD=|5G$=ZL@ibGfbN%zhH4sLCzB_CoGNT&Zf4jaGdoxyf*|NP7UE z-L!Y=P0)y6r4ER3Ug9ZM8kQrroAwC(PglJljw!_;r(zP0EJcX~_4;i2p3OvZFTI%( zQdYJKy-64SkKTOkYNYqgZ(UG&lc88&dQaX&^oDL3mPC{z33EE6BQrth zJP9%6sI46pFPAlOQigO?l)e|GQ}RpAku^|ZlXg>tU;+I&3hBwe4OW=6)AfD0khc}~ z3j30ahFzy|^7-YsDY}Owk;gYh-rtzqGv)H@vDKdZBH`&0n|r8oYrS%7o^q?`)(YX# zMtED8a~XZ+H^nD;^X-X~=nU{zzlNI#m7glmlaRDLF$aIe-1Rgfwl2DBREb^sM05{M z96;bcJu)n;FheS(3n_FV4;Mr?A}DrpGmy-QHrLr`n~+vwr&(HTP8 zcCv1=uxul1$1IwD5QScwX*q<9gbw!PZOVD@7GY(pM&nGe&eo!u%-5Afe())YOKyl-iIXji|OIm!LhC z+91qnk2Y*bOc3`G4gewpcAW4))b+XD!+sKGAxU7I6&g2%V4r-m=x#NWH(cz~uni3t zdmH|U^}a#=@ypI(Qc2|#6uZ)hcSRKTDY)k>jX+4q{p=F@15z%&s2T~AN4Z+sF}D)y#FKku%uiLO z-wd}IwkjL32XW~nypHrhQ@kPMSK=4tUWQd3#5Z|3wxkrwgYd~_vk>`xfBQiE9v-9P z_n*&&-+zqY{Jyey4DS1o9S9l8ir_xB5@{=5k;^}Wqx4^%!c`-x?Vqh&fCwMr$jWhSKVC`3*#q1LSgXH(Zs>2|(!pq2iyC&E+=@_&0w|gO^o=@czjQ^q__*bqQ@Xv9f;Qv=E@ZUeW zLGjP|e|~WOFDL$Q5{&;Z*YMxwfuQ(jeVha`E-?S+1;+om^M4xgKa8{n=YIqKjr?Cm z{Et2Z^M6YX|A!_8#XsZ!Lq_~x2>y2j#{aqVzlHc8CRlCwcO8amifYkHvuMm>{thAU z2^fIz?MlVP@}*0|ogH%?62lx#MAt*9Va|*3XF!;{_2$LW}DGxuRp@@;og9@I9n{uAVbrw?KMKR7Yf zPCxCauasbe+khG1%q)hLjRpB$XQJqCv1CF|tSaou8-$hN<1F1Gn>sHNUB!*W-+mq5{SR1_+JCPei%R+Ubnf%4o-zaF4}_ni?{4^scM7)ij2W1BkYvitFV@^*TsTVyk5OEzNorkzLDM4`_rlP}Z} z&TMqM5U+8l#}#V*jpi?ZkM+kIX8fbW$v0w+F@*h+iqxe*T!v)E!eU(~TQb}?e2p<} z8vHD>yp7Bvn(eR>Qs{l{E`{C%O6cu%qV^V|y{<)7|77-h)$4pU$GB+sXG*K`!b>$% zhE1q^K7~ulXv>IX%M7qc)nv;cRodofyxdX(<CK!_c+=4la zCy7zsG&x?t%gD}Fj4Av<&m>PD#aHr$T#owUe zx}LB~C$OHdNiR~~fGA0H6V4jvHLH{GO@3-C5MPi!hwSDSbg?5@)poh^?+of1iuc#2EAtxz} zF!@jLSFuS-lrr{dE4pUxi57*lA#3eY`c~Ry^v$n_u*)a`G1Vb^7|>mGXjrQQI*#UQA2du$ zmrVfJ<|(agPOCcUQ~AouL!Lq#0>|y}1(@te*4keQYsmSYJ zZVOdjyF&lfM_#2*jPg3=--^86k1wjceoSE3Ag}kwlDv*(pLgLC@;XQ-uepa~Nr({P z8Bc0ll%jr#QbaT_k?>=Mx2n5EI%>rPGXOgw2iv7%WN~L&P3wetA7kRQN^d1j!jtKy zN@3o2xPZlEem=w&`>{Pjm~&=2rqpap?r$E{vvocoN|-G%hmEtQ&ZSHs=O{SRDE(KC zK$Mjxwh1faFoixY;&mQ95%P*LtENkb1RmdIx5z<>h97kIPmwFjh;~*O=xF#3YNLsn zvc}7+uu;-e~W3~tT>zdakBo&Gq^{-AGxf^Vg1gE zB~5ovS=C24%h*<+^(ysA5R)-QvwW8Wf~zBd6Z1XJKM^Q*=|N#u!;GFR6TT|KCV6ZH zAJecX{YP8>!S5K4c^Pf8yjz=T{j>pmBge)1w%D9+?r|}A(uQC#Mw`WlEDcM*q@Sct z`U%lh0!{iNCjEH%oj&jfR4wi+wLgg6z|nS;&6^9-(BDG*6_Fk$x*p~e{iPHOn$lW` zjSyN|6SGB>&7o)5Y~NRuF!gRR%=Sky+aDF(LowUi6SL*9$4GtPMa=gsm;}3=NOA36 zBF=Kw7F$0lFeoUe5Sy9aLzvH+coTg~pjA730JM7v3*c^_|s(bm1BMaihBl zeb3rulU^XIAYaYd+1)QiUIf7-II@VH7!6ke@32n@_4{oF{Ar{;A-C#)2Rn`Ft2^d^ z=pG1PMOuPAd7b~#U*jWKBTC@7 zPV3qO{%a!P{N}7o6i`l;FBhU0`G*6Y$hqBV>PY-iu06Jc?MIKhri=Pwrr||08svZR z7k_Z_7umIec+tCXR=(AukNzBf;q(z@GcbKrL4NlVtXheIAMTkz`Y1ZMKB8NCeKfp; zGmuvw9r}=)BL4b_XHW#tN3>kx`lwmkfci-7wMKokWt|Qb#>*oaC|GrHeMGHY$H0rd=?7^x5IS`e^ZP!bm`UL?{nMA5G6N=p#I95$A*&_0iv%S1y1)db`NCaT9A?(?`5c@)ECPe>tAHL=PLf zS}|Vq(?BtRX~k2PyBVpmzT=s~vDFU~zSsWEv@Q)~sjqpKpt0yKrhkyLUrn)O>) zd>}Ma?Tak0H$;l+^(&Ckbv;d4@I>$b9LKAP*w$e6f-j{upZ9c#sq4DHGizqOqgM`GY9+PGOpa>yLuoiVktDPe7m| zSbRjnzCCQP@Q;ghq)|1-sI2aO;pts>*rgW@`4}a9<+E){nwpQX)9#;-aXHdSw^>bM z^o)z~89OT`C;P@QM{{9?Ii(8w71vdjVOLbuD`cdq6=_PUjzRcCf!9EV2i^d@LuEa@ zhWPF81TTv}1r0uZuoOVQbch!6(6@8<{faN;a#;2$k5p}!A`p*~Hd#D{aRIGMM2^DZk-Cxf)Vw=k2r>9 zVg-=W>3;`6SpWzUYOvpfitCK78|cA)QY*-7uUJv)h5V@^zN5B$%1}|d1LZE-mrH3# zp~CLpX+5z~NJ@)kKPGpfEkijECxkhYMALR*wwoC>2rF#gQmsH_tD_* zqD{$9LdYxcXP%`O=dy+HUdJ^#566c&I#Rxs{Dks$6YcF-Iho#0korYeMXioz-Sml- z3PmIp$gxGZ6~)p$eOXRk{sP~i5KMnC{x{&$K;X`=0iUto2E=Dzb#i|2xoW0X~bq4v5dd)5-b4 z=aDZtK3|*c#pi~#f$$lKKi^T_zE^uYR+i{(KYTL&ob*v}e70I#S9}`yv*2ambJD?p z_`Hz(`I|CTee$3epVNtr{Nz0lf38*Do};}TE1T$TKYTL&O!zQ3KG!eO<5SrMZl-ln z3aw|z%o-0<|}`PVF)Hw(sKY6-)>KU#mK`$KX4-hqw1ep!U|^5oElS53kQ5 za2;k^oL6>5)qje1q)P{^()Y;jkvCh&n})MAi-f$-D46jvls#ookQPVu1uWLwCdszs zN-F8$PWM<)$ma1vJgM%#az|eOx8!x(tL3(N(c_xBA2;`C1%3qQO-}yQx_5 zkg}=I*ucNd@S)trR`zPzwQe;XvC$?Ogt*pL`T8+Tof30CB)YO;zoY(6xqRGA3h%pDB5?==;?N>&7A+=6h;LM5XwK#ez;7eiK>=-sS!H@u zvro9Z)s0_{^rH68JHL#Bb};hG*aNJzU7h*m*UsmSUoJ1Hm0xbVCm_GfDcAGMbo?^% z%e{1^W_}raTWI|9R-VQ$xtG_@FVBa>FXUwllpoAeg9{eIU_^-4F+G1rwi5{oNWW7m z>|ptAIy&WUWCO=zwI!!)AZB8gp!4);XdQmJExU|4l&WXpO^Vvas5fUM(Dd%_3}5vO zCg~S~aCS>_0wsb8$y)dLlO<1DV~h^fufrBYnH`6aq2?Y6udjt#uX7QbxlC5Sdj*b98wV_#*3dF$l}E5Z^5 zVMTd*-UdgMuyT7<$8p66BgaK-$9qNMedWlB0d(uci1J=@TeY=#)>(3ng`?n#1(}=? zB{```cdJ0Wq-rHf#)=pueox150F*9$$MaR`vX-rI_*JfXQnhS_W|wK%3SZd@USv-r zEkR61ksUQ@M3u%eV0O z@Fbsnl^NvhSNem%VYcVf70w@{1q#K7?OfC2o0Yz?d=-%bXlBY+nIsRtp%La{YyubN ztpG&y)haykCcc`mi(HuZ68~lwo*?!^!%Vr1ffk_*SWM3q?Y)=nnsNckp_<5g;BOGY zyUN%4-v>-7YO5{iHlRX;pj^)RIy$T>N^aXe3O)I+Q?Ggw5*f3diEI)j&=g|8h6fV> zFCt7bojU)`Hbr#jF^QvSUdk)Hgd#;(QFba7<#Wv_pQ|ODlvHi?m4f14rIGPr*mcsD zLXwl@7M0)thDORaA;U_(|6>;OePs|NT)ozKnQDkrJme)x2WuYS05QF}-d%N`*8z@DyAKNR>i z(Z;`t+Vw*(eKSly9G%AVM?%&Q`x7pheps+Euznc1Jg9!4<$Ngmp<8kt^#hw|pZY}8 z53Ayteqfhp;4)+z#)n=%&@HYXM*81Z^aFdn2i;cnL)KSJKb&f#=?BA<9`!i%!{JW@ z>IeRyq94j*pdU)`Ae-8~`XTnkdh3TH-}>o?z8^6C;Oei_58q+^#!V!pUhfiU60yuY z7otIC1B&NON|hO;3rVmJ=C;PN5%!Zv@+56%S$yukDf0B^xkx2w zQ|_~IG+&lur`QIuKvJKVEE-8fR7P`^5e&4~@?-j<7>^TSlq*{!4z~7Q9>Ojg$f~@- z$$GQ@eVU5YR$J3;kQHMrmkYjRWWA!bW~mum_1Dh>S>rY_vMO1F3>Q%7qcKvdiA&gn zLQjA~Ph$1ZF$r7>1D15QSswn4LK8Fn&XQNJVgxy!K?I=-ng39!f%qh^pHD3YpvTnD zL!bxOSYCQmKIco1X-~J;(L;T{HhM6DxOSaJkAbjMflziij$QVphgZygDW=y9_Z51u z*LTxxl^&QoomVn?++$biQNGkm z56Zv97ONsg4>&xSfJjkC_GpAyhFjQ3siqcjlD;+;CnAbi*T8`%te8K5>`AcNmb)4w zwfTXl(p$A$jT7VGg-^AW6+!Ym;|lpvh&P#?CzO4Psd7`O+CnRee!+y&a*&q0Ph-;$ zdR4QKZV8r!#A@L9>~|67tOnF_pJzHVaBk7SVZe|XLAIjYaRo(~7bNE32U4A4Ctr`$ z1QE$eLKg}4q>S=JDcVTDF^Eg^-F8?p)f`-LqjD~TRRmzelr%TT;`Au9^ z^de!F?566!p{d;UMff@TE~G*ol;1mmoHqF_d}<3lzX;BSIbf#dTmPq zz0Q2%M=x=qFTEOJmrSAj>sKMu%l%o+^!nG`270OT_16)cUgK_25rlL)hpRsFwGe8+C|`G= zGFG8%$7hK0wQonw^oq(d&`XuCkB4)5t+-i5PzdxoMI-RlhpirO0D9drpVO<829A+l z!n@~Auf2sDz5L~CqYLzUcbyNtCS3=5J%_74^pZ(b4f^n9>>??Y7vs~9UWgsQyQhyC zjHDt)GIH%HXSZ*XUFw?vb*{MHVLl0YjbYen`E=SHB)!~S$T$B!^AsS!1kS=b>?}3w z_boBu;ZhQPV15{eOqgLQ>b{#KWwY&g?7K;jZ)ruF_xhvj{`#)5-*yS2Y&O`EQsnWR z?3ggeeb_BRF$g<4AI$r1r}XVT1fsmM4t=k=#M`&hQ@8Qaj;ko|*oy_k6dn!7gv@=5 zSrmz;4W5|8J=jG|dkWk!NBNGHK1sBrW$f#~h^tQ$X5>Ce*Z`G4o(P5sm^DDhR{4q@ z(Gb`mH*YRz8Mcho1J?TDl%)Nm4Nt$_V00t>KD(8j)fF23rd{mCp&n@=(eF;BZ!i5a z>(cj`mfpS_kbbYeRvZ29*;WJnoO5cRpXPt@^|EKf|B4c^mJiAHQ)|BR!;X^VE~GHP zL6c}j!(?npDmyYPe<=(h6oQSnC*$yp;fgYq*t3uBYzxMLVls}N2`m@ z1ApwF=gS{0FgQ$G3}p&`^j%&Pe=OEF!T4k2B*IS}_@moPb>WXe`rv==Va9*R;u@eV zM8|H>3@`FZq)U}Z20+1C3hPL{$OR+hjf6d)lbs1yD0Ygnz_ySlvK7uoc?SIMcDGp# zWg}IczQ#8e@+k)L0gq-!m0phMq*QKCM&bDIalN`lqBJd?9-!4of;q8SPC;8atBL>y zx;g}1L>Di`MZ`W4z@R;pmo0+@g>Q%(z==fPu&0%(S>cpeO2bLi@jo!E?O^wY8d5dsQG<_oE&8II?Ch)LV z$jifzoQDzCf5h%aaNYGV1@9@nfHwIyc8*s@+oB?YMq6yhK@W)EM`OG(Va~oNnSrt) zR1YfksUo!GNEM}YLa=(mY3^g3yV$-)CXf#tWEwF&LCX0MZ*+6fr{hXb8QXSSEj)f3 zv>6Q$0WLPi_i(@RQZ^ZEmJhx`n9D>rTjX8zo%|;|i6 zzV(&X>UKgx?s{TVEv|9bD4ZGWLGdc6J##Jmyr8sx{QN6=uAQGxbO?o?m!T~`etr%Y zz5JZo-*$FAI6Zn24?0+(}XN%{J zF_X;BmmXR(M;1{teG&|9c&!U%zl-mA-~kK1^>$(ndL8p1xw0vg3$yb|N;gF8M6I|) z*O2uWo|D}o%+VOTm13$IE1T(I=8QnH9%=LFVExg;SMvexcA&qH-lr9{E43c|>Gz8z z5azOMq~{Q+sLY_*k9C@x9Ss5`e2h6HOnCHNA_n%H?vHK-+7!`*hhk24DNO7(DOSjT zlF_QgzIaj+yD<$YMcbmC53>m`dAIXO>LAha7g2Ikrl8nuegztK^b@-cN)_^&(8TB- z#AdeyIr$A5VY&R%dnfUiKM$pBwvQxl;>fy*dTi>`<7BNzU}k`03_<-SNh@9ra}0*@Jb*ar zW_Dgs{thI`Nn!%n4GU;~${ucl`>`$_kbtU9DTJZDuOISMmZ2k*KP>AL--Noy(eUF6 znp6^56)a6or@lOmTLDws6#9x%EYa6_IS`afv`ya5>(fzwUJN&7en5U+Ra2#rDa~>o z7EwBX2Mcg1q>KB<58XkQE6`U}D^QRzfIH5C1}&>v5;Q!$UH%%T4q$Z0ZD@f|H$X%v zK!aG?3V`JsnE!7imUt2lu$YL&f}~_}V9zhFqG;R?8Hm5*NvHzz_dD?&YT)nR;zHnW z%3KA1hoKXdzsneVs{GyW@0`CcS;qLAJ@4gjdQYwxpz-%#?gM|l!5WC`+(zT?@p_Ky zM7Ke`V{Lq)*ZBLp)<*s&i_{sEzn8wI@%NGO=)beRHwuJMZ>~VSHFes+ESc1sj<;EF zP}o#X6{>*oHnN&G$--+e7$|S_5>}oKmEvIkrb2${)F_oR`_Yqe=*^!qJE5~fL>1Ir z)YV_@7TK~!{=AqOjBbwlxMqh9{Ha|149#l%Nh(q91#^+{XXoa@`16T(2yr#?r(yl7 z)FWhZo3iv5*%AdQ%GDTsx+Gg!0YapPpe7uQC^!!GIy=#tTbzYStRQ_B=>oQ-TG=TM z*kMa5WMHsoQA7qATFNn6s3iDXl&*m$ya85Cjx{hfKm*7zWQ{0!S*6oP(SASf&nSI_ zLGTViz%2LtB5t`q3%Kq@QWh!)4pJ)zrlE3R3%eWF-Pr6n!9zF#bQJ4S9T}xlUxy>( z7`ZU9=mMxVX)PbJ2SbJ@W(e^lujElu8_mqn!mnQgLl_j z1H68f4i$K@r*I8QQ2IGu6nI^jC58N#vG=VjYCqA*U3t)9z6AJe1{=p7Z5(M=g+PEi75qQL-`=mmKjh<3 z@ox$WfBR!N(>8w#c1i=}@)%&>$V_KIX)mKXw-hI1l6$X`CG0i5!Y0pJ># zv^9g+$2-WFG#HZZQuvkQ>cm3~Zf3(WdH!>rq3htdT70G^T;(2Qd)iE&3i&ik`J!tU z@3x7Ct{<)l9bLWn%Yufk@DB|z*MP1=s0@?*}&f&@st`jN-D)Qd%)p}ofIlQ*E0``InV_R_>1>F59IYn2Jv81ic6YuqSV%BeXM2Tc_R40VzdW6h~BIWoKfGp&-!DGmu z!E!EHIXbv>+Jr(rxbLP0!1ll#1>0~&GIZ98?OCj1I59g6yd8$FraqHF+!=XXL$qU} zf@HgC%d|`m$6X8#qOWRbd^)SHK%727Bv*l;E`^ojA!vskH+epRsOiu`QOqi!w`-AN z#c_tFXeM*cp=d2anhfKPCm>Xx2d-CJS9>no$+U^ro_l?GM~F=5_S`MJf!7I3%$^$; zpn;m~xf2csf!Chf^*M_@q}OiGJx6t3>uk^E^A5fC-11Bsa;WxPZ~nU1p1aBjZwgQm(Kk`@z_S~ma7^ccJRG%3Z0^q*(+-%;8*Pi=xg#q6+z@Jw6K{igW zJ=bDr2-H^WxtI9MUVAQQw*lZ9h}@e&eD3z#)x2x3J$KboL)XD^^(oa|W!f?ju4=L8 z-kHSE)kG7HuLg&XuF3pmuRS+#mjUJ)(A9tk)RU>tN4a z_G3fYb3grs0MgrY$6l=~G*6%aVuRRorE>z?bN|HkbFt@Iv%&dbyQMn5knOp5Q1H-e zN}Yo}_xMDPWUoCp?-d2fAp>!Z0f>gO=LX}9X0qqVe;iANUg9Y<0uTE1*z_)YyC9VX zQFj!_LT-?dHyWn1#XUJ3>zBN}PLrMX_)6Pt*r-cKT(s=(j=4BpSg{vdKD)OZftavW zuzsc9#pzP6?%|`HQE0ZRX?osXAwL|=iPFG$^;3ilV3&_iF+ zD#Z7JzX*BX2f991$lDR<`g9?WPLcL&XS|U2a-i!|guKTBUC(e#^=rfGxX16>aL4U_ z*F?vye%A&$uBNT4*vD!r6CPa(6I|Xo`;d}NDC!PMl0U>{GR{S_umTB)ekUlQsC=v; zWbQgFQWYOo{{iJz{c^|H@fs)Y4q@<6@HfaT0r{gG-{1eXW-M1&n&npctQ5t5}c{CbEQ5s}Oov;;XuTTMQ zska(Aw3$AcHVOQt`2Un<6gL3(xwd@MyZYtD)kSG29Ir!F$7^pmURzS}2sSMD?XmI? zsKdxQq0W*O&+aEv7olc3HI0R5CHKMJO)RPAcvXzosYW(}-Ysba$^wPG%G|knfAJ^N z?)CbMpHW(1yNVfd2miw#ct5YP4tRKuZ)Cvxc#c1r`aD6+Qs8iO0Oj%HTQ(mN<_Z{^O=48V#L16WIdN|w`p0_dZ7le7a{i{#x+IvDc|D zj#;2o4LL2EwoU0l#A0nF2Wsn?0Bs@KvPs^D%6s5Lgml-7hWr!N>vL}M^!ITA@VUJ& zvuf%kPZ>(XOMq9+%FIT?b(5#YN;3v|I=In0--jqqFMM|{@-+9)zVfufMk5Gao_Z@S zc;zWE0PwZQ(?M2$^1R5?-^T``zv!jESDu>B^Oq+ur6Ny9ASZ$4$@|O(JY$rnPCnf; zdAbAL`{FnRdD=V1I26`a;{a_jdFlaJYLq84%T>u)Jr@iNa85Z!lEslCy8p(?0YD`0 zpF+9Kn+jax5r&b!oT2=hNWZo`p!}LdzsyrTo&uKxUwPUL%Zn*xIWkBYp!66iH;206 zsWMEYgZIz28&m%drH`f5hy4-d*IV@Kq6d{<%jj3wbn1V3{rVs7H~z^=AAI}|E5G>o z|Em1r<9BM~?*s2H&}bYys%Ys(&NZ6f__hAE@vHdffE1Ud{SlaSW6~ldV^={~B z>|(U4)wkKQz`KBGqtSVh-I#+U>5ppw$ucVgt`zPY4-ZBCqX@ zBA~wA7MDh*LOxn`qpaa1dCjZJZfKUTCd!vS#CAgu7JxcDAj%(1(C;d%5#M_j`Qn?h zPjXf(RYQF7J#n`e-&yRt4&VK8!GQ0{~$G=^_SjEe6su$JRkZmK{}i{Q>gxe(z6M$u^&c^u8#M@_T>H48v$@>|c~G^Lzi{?(Jy@Q%L=%$oq!*j{i(a zUEqJ-@BN44*q(se`@ej37(5m72)`C=Wd;bmyg}cB<3nk$xnFzJI~gDfwLS1hlKjz7 zU;JG9Xz27wl4tt8KcQdf^huR__`P4nGnZ<|FW^s=e;eWpfAT+=7a*kfQ{<2Q-ru{~ zK%L<9K>sQ7OuzS=_YZyiv2qW;_cv_~y?=~mYKk|Ej!l2OMA1}}Jd;d%w z`X4X%@OyvLbp~#(5&yCBZ-actzb4fFFJGNN^0~&Zh3TIeFc_*lUA~&mJ(VZ;wKqJ) zFrrY~1AoQKm-)5!@E!wnHR2~;-gk!|er_~CQ{(&afBU`P{7kEm^>30q%I|&YPod90 znet_R?_c_5=;P0n_YL$NfAc|YLxx|JpZ9xz#DNg|zkD@0v*i(fEo?|NP@oR{kSe$E zYfWkdFL#LZVXC}&fFC|?3!NS*vfJf zR?3otVxZWkGGsqF&|_k8SheLt=0lN2{b)0NIrR~$Sk>yNDeNa8aXdrC8ev|@X=KMT$qkh6&$4*%NM9r=gF zNC~%My{zmfc3y0Y_>^t0Jz`#g4L_rPtU~2_e4-%skT%quxyuR5iL!7fcJ_5-QWqB-w`!-jF$gMlxWMAufs8Nt;!y{uYv55pP3z@KG0d>;kCozlNj zYPcD5*p5x%hOb9=0T9hg6>9yIXh z#1?`1({ZF${w$sm8h^&^{ayI;1Myt=^Kh1qKVSb=a%6_p0M$CGhc*m)&=~O=-MGr|HN0WS@4%@#Y@H zct6E6%6K2d1KN1G>pqT$B$fKe%xmiss1~XjGIWPW%my zi{KoX8R)}+L_ys-wttcK4(?Hl3^jj8=3BqNf5!ANHgCgAD&1JmQdga$B|2@qam5iYKA)=N21Qfcn%Sic)3XbEMnkgY0CE4G;EJW zB9GFFfnh{xy|n=Qy9>l_4Ooh1NQW({%`E< z6B(zmdO9icM2NALhQ?xzkF9M9K~j^!*~5nN%GlgTCzntHKo=^%evMxXqF)Q%`tsmW zphQ=Hy>yzLA1(iNZyh8oXCw9_X1Y>|C6*``r1m<3nW(+)qPmn-s82*&YD%JkUc8e@ zA6WtFu3sX=MhGpfi7Zzqix~iYMF|u27J~tB6b8Ui(LEFf0J++GVy>eWQ7t`kCO5%$ zB5*7>A@3)0xU#T4xQHl&0w0+uVXjtOXLZ)$zqclKr`Pq>RIn9Sln-qWr_w2@R+Btq z3hIq?M{%WD_oH;E*>rryJyzVZT1-c0WoG1m>xi@zL?((-Ug9?D2pra^0F0QISfTwy zT2Ef$0p(|ewE(81f3fuHn;;GQr?854D3)GY`3<)C8y-xc7Tj@b-p7M0@F0rZQSH_o zTvm#si^k&U`!uYlCZS8gZ${wzfUmx;oA=*y!LQBV#eOxRbDDYv&_^bf1)x|g(*Y!Xsq6=-7inH1E9Hd8##7y1=5y&3W2m+{fS!gL z8PK>fscJedB9+0BmuSXc(oQ(TV|ii{eyD|rHGPglKYDl5>JiUl56M$${M6k-ydqbR zqB#mhgs4#}6MQo(6Fe_5n=W`)B7rLrzZ-)lKI(zW&2+2;y@8`Ds41KT5>}eW8bK>* zv36%W@H5yZ_bdM+Rf+~VGX;{3?G>j)G z+FX5*peWGZJe)6qt=0pINdzgM?_kcVU(pN-10d^;wk`hhuhSmWDvIh>MYzBT8vGVv zL8*uoM;6GXeyA$nhl#5Q2>dOgztEC|0MUgp;cv7}NZZG_f?dSvI&InPqcj3+(pzi} zLdgxRim?baox;p>iZ4CqvCiamv<}30sb@R!7+SmC9hnZS0sU+qnnm78<(3K!!I#J2 zW9xZR@jmz*%JF$mPmWKD>JUEJ5eG+ZjRyv3`H4mf=?=!6QZrglttGTRgPHgs&BO#q zJdGTG$%7eSHdgTwO}Bv$dW_*?V9j&#yhM6KUV0zL4E^w#ng7E4k;|2iq46|m+zU7j zAtbDkK^;1U<-zxof zItsI!M8R}-Zx|JEFAYL%2Y^7ArP}4~1-&Eqb ziGZeu7Oo>&ETnxM`0h)yd{Q;$JY6bKr0`w*TDx$<3 z%<<7MbX?15;D|t zA*qbe4y{dtu>;@(_^W!!XaI~COatPb36vn!Mk(OKN{(E_Yt&E)I$m^%@e@k)5$0sp zoc4TWZr2KVltWC7+vtG0!+{QIO-jbJCooqL z9nYG-*U?Jhq-)-#%F8*_-`ogt6;|$Lt{AQqG=_xpFptS8yFwztu4Lj1yFw(gtilII z6L$sbcM}IN_Gmf*Y)ec^FA)ltvWFJ1yYv(dU3RtBm{sKg;n4-`N$x0QQzcr^@xc@< zn>zWG#_s}*R%MFG<>K~JqU#i98QMcj=XyVS86mr19!I8vbQQ@M#Z8!xb*69v>pd=a zC)T~6jYrucT29G3{zOxqgLYqRuuG+RdnwZo^ZiaC&jwwqN$ZX`PI}bmh$BV2RA$Ep z0W|p@?wd z*8`(uZ3e<})FY7>D?Q9pdmzondf;tvhWGD*c%#-aWKs{eq6a%5uBJDP`u0P{Vl<2c zbklDb<)L(PDgvGCx`}tfq}-_SKjcag)2o^APMdFThO%YzuMNcwj85*qz{&lI*U9}d z8n;QCWhdHS7G9Z(pPFP8yiS#wU|7;2eocv0BBh7|_}H=JR4$#srN(rrUaSyBBmAi= zXN7O}7+GO?L$Jad5DeA`^<;$~0H3_E z3-2TVD=e=MD?E$Fi52cg`(TCZ@Kc><)Om-%*KpKVKck0)BNKt&oWNHkLT$H3oUyRY z%^`A^9WC&)b2J-f@(a4@-_JUR8C~y zJFw3gcL50bV)i|TeKuyFVeIoXO5zmCKeNvt*r$w7y+f{+^`i5^^RZq$iE3KFoO)VK zHcdmYU=pgMR0}ng5CVNgsMRdgB>V_%z1W+P22=GyydszPulIV&54PVA1u^){6-!h8bkN829>r+=8lNi#^h5P@$|BuZ;aY){76O>(+~fqk%ZZ%3ttm?d!#` z=9&p!L`3tmla|ue+RQz+UVJ;bhV|lj#DIgY7bo<)pzFm*0IFXvve{f+FFtTRXW@l< z7T#!TudNr^)5?0W%WHq|^`gO_THPKq@_rHo%-M$ZV&9j2){Cn**L%HqJW01+{2Yp@ z_VwbRXpLF3Xc7Ul{(kF4gNJ$GCs;4OdZ)Txd^w4xy4u%^FFzN;dT}Nm`VUwyZt27q z2_J7VE)p7Uy*N?nVWir_D#&1it{0o3hx5K(eC=x92~!m3VZE4+_I=lj!~b?6*NY`r zaaMSLgOL>)ZoPQ7(!)Tt2Za?HZoTM93O5;V0lBh4%m8ekakvIik^Jdi?>531YR$O{gqaJ zr%|`&Q~76n7Ro=cPx}A>A%D%jf5|>~v(Ihpb0hm)&ptn9pR4d$hxKCmnDen-yyd82 zy{N_)k5)F+da*Sljk;c3XsP#lan$8pLTgzs9sqk>sQBU?kT<{e;=Yb`h%X*}6}%HT zzWDUt{^Qn*_uO9Vda+|F8Ph!USm*d+BZ#BldePmX?(xOHy+UZcfa^suBj|du#Vs_b zP}Yk-h5sJwMawO^^(DmYH z?TN*M#20%ea28%jvy|%cxb>RA@x}KThW}gQi{%$#Mt+9`!FRp5ae>czv0!bz*Nf}g z>DG&HKrz+6UcB>qUoMT`x{&40L5Y~$sc<4W1 zz4$^~zDRidBjX~W;ns`Yl^(8DdsqeJHt2fsi+G~Td5$kSl}-XI5*j4F7>D+K*NdH{ z3%Oo=stsoa*BT=$G~9aeMx}?#)gBa9Xt?#_*4Eq_ttJ6JU+cyDl}-Y%LW8Uqo1y*l zxL$lS4mi31>&5@$?n~gKD3<>>wJBQuVs9l&)3;}oyFG~xJKbGwjFjn{Kcj}nEXX8zF5As zvHZoI{b*=3e=)aPgZ;$|P7yP-4uA1P#uv}Rd<*awdvA^+zF0m7R0{4dF87 zgTI*87lc#&#qKle_7}^3(@pSllFJQ0zkVf@AB7oAXlaly&N;y!@S+)i}Nhd$Pd#*@b?#gDfaUhuY0S({^Gw|82rWi zA(-m+7Z23v%=*9g7ftcSeGB0)W?ZTHi+x&y?DKF0{^IF)=pW!O-rZa{2{*iH zb`l!TUu>a5IQE8_xjtx&Bt*_feYF{l%W?J>GgTl#oP zrC;-3Gb=QnzZj!J*!Q}b6&lZ9eAX(g(OQ!8$ID;rr2+}U3XS3~e$({0`il>u`4izU zo&q?*{6$lI@r^0aPCI%)Pc*<^d?g{kU;GWzHMqZ6HiZ1e`M9oCX7lG+eBA?Is8o4` zKTqcCM81ya>+O8KnXfnSbp)zh?1)uj)3& z0wO~>rP-)^#prvr`klAf;5%j6((fWm3_Fh1?`3F>p5Ly1XKM%F74Nq$VC-IgfwP;?4*D`3-ym3+lSJg>~WfJ}&ul1J1W_MqSZO0UD1 zvK6hyu7FBpZeop9&EL!+G_+l6*p*o%O4eh`S~h)QMDYc?K-6B~OFDhwF5(Ned5CQ> zyv>ci6jJB#ONy)HPHYL0*Sb7zv8{V{avF6I6o(2_4>A&kLuge2!4F`s6j}-#LESf z`f}!d?}#(+JAe|Dd4FyblBj|r=|$eW8PyX@soTc2|3pFj7AJFe7n7iJ*QQQto5 zY2#4(ATFU-Qu^y@QK?3}qU`))ANI;=3=1yLocO1gY8&ZXR$N}tMz5~&pM&7EMI1z zQC|oniNpvP{0o$nQ$E0QN<(KX>x&2fN;v`gqAj4*tuJ*(lh9b7w&?-xDxjo%6+Ua z{yLfhv*@_lDl0K#lqUhhtS`iLN)pql^%Ichcft7M4mCtyq)}&tMiLNIeNj3a5SkN& z0DUp+Z@e;fRSed&J^!n%Pi_reX`DbeSf~eWCjouYYXR7a|C&>WdeD!7QG6Zo_9R z>x+ShPlUes`A{VKV(I+)>x&u?q(1&d-(UXM`eOATjjAtxXlc+FPd{eT7t>bz>5HFl zGw2KAGLycrE8w)VVCfn3#eKIzU!074jiN8s9X$T};x@oA>kBcRRDJQoEJ*X-F#Z~> zFD%p!-M`RX(As_OEVzadr29zPyx#SEjq*m^@9`r?)`e@<;BtKivtx#eNliZ%l^gW5JhNe)^*AEe3r-TxQZ2&3^!=?T1}t&=-Aggud8@dyS$mp8oCl>x-U% zVb&L7I;r~N?HQ2fEwv6c#J|}1tFA8u1XW+85ro$|2h$gSVD<&~FJ8u;ky7P3zWxW- zwaOE8)&7O3--|+62~|z7IE6BTIL6LVWuecKJhd9DRFq25iK=hK%jroaP3Q?!0_C4% zDaAqcQ1x|5eND3IcJRP&XOQ%EkASI9ji55`431Wy@J@nliKAIflS|6!zwhLtXz`oj zhu?S~e)N+p75MNoNyA&e2Y!PDe(j^cPhK@luV3lOeGaGXl@q0^GQa2byb`VrjQYU^ zNhoLe<@u`a%|uzPeciUw!PuT*h!&L4!DPytS06>@gq+_FrK)U2y=ZN)Wc17U|E9|` zr72Dn=xlY_`c7%;d9bPT18N@s9(KC_w%*s$VM}a^V)}D4k2MN3Ab0^#Tl!0oW)8NCarcqtw-dKW`Ki3`wWF0Hx5DgRCN6P@;BPFw$DYU%!^ z%Crs)dZ`9lt(Q1hfJW0(HUQ>Q4d%;3s5JT(ll(*qYl*K-S$(qB@j zT+6V|{4y1}8OAD4&H|;wzkI234PK^F&~jE+TIhWWlb*`%(x9qkchjBngT~Ukqbrm? zsDo3gTtQcDVySad7=1&OU4f#ay@hX=3gYyUD^dEQ%4d#z=0<=GW zTqHmn`GaA$%We>Vj8_`KAKmb>fj=hiiG)ASLcy$3r4wEK`2&S%t#rm)I+eXmW0@g; zjd@7&6~&{Qk#vpCB$+z3Kov_VD8rv9$*4-6%164BC~YIjCm{kRQH5NpoTt2VJ!O#u z%HfBD3XQ6}z!5J6VM2%5TFI63)B zwbp(P-OrZfYf~iqwP`4!TGB*v_fN6bob2+@51zqEN;?$Gm$MU)>|7LU(b_;AfzNWM-GNnr@_iecP$@5 z1a2FEu>1GcqB6CH@LVpOWuIG$=T$QIwOVUh3NqtpiMPfP)@U6-v|+5A_-uG0hoWyC z_}=ofKY_<~;&Tb<_yoZab>bV-nE1*#AjDVp8z;PI{F_eXUGkGZy0iQE^KX0buPFQt z{zc($oqrRRYj0tGXwTJPeWYy||AxaiApqZ-zflVbXym;%48AYl+yH$2qyx@dow}VY zdnBo!MMqNJ{-dB}x-JWpF-%K0KZfZ%vcflkgPp%;Zm(lNd(}HmBi0YmUU2ypnqOIf zE&jou0mk=v@?(+UXJ}7S9tdb}#51f*+>y5D zNFwCUTuw<$N@_rJ9WECq3?}(j5yHwzLnoLZ2b8E6dWSbNaLUAlTSUA^Hkh? zh2oJ+jr!mlL>{I2Q8;}x9cPf7D0#&AUKW6Fo8ErzQaF6S8qolJgN*-1-}v`X=6~fs{_Tefdx;;5 zWc*F-4G3tj_6wnpB5tn?W31Y9Daz3={qf6vn2+do^J9_VXKL@&fcCb$cLw_#k+$a` z(G7c!o>xW&H2369OuoM9!R@cW@i4X5JfOXEg*z0gy(s68g^bXbzVM$v$wf@l$mUP~ z;SJ!&`rv!$bANohf6QYR8NPE-ez4y2J;-?FsQR*pGFnB@R-r?gMmd>IzCA z&6GD};3O%}P^^@9O^mUW;uIn*uBS%dYrvq+!NiyxjQynu;n@{j0mR7?@ zN=GZ_u1i6IBM#SNXAF^y0;YFt!thRARgSN;GlrLagU7T2MUzi;m?&Sdr@Rcvu8t$S4qoA$4jj9tK;=5P*HCAd#7Q%D1pm3 zUe_iybiDGdb&nT8rSZCLuito?!V()k!gwwDs}aWQ{!fFA*ZUiSjn}1DY2)>NTl09G zR>R{pv``zb_uzk(D(R@cQ^$CH-8|CqN&~MtmZ{@)^h%7^;$z0~@}FPR(;7NnpCr^h zUfTS6ves|B1iI?{>Wl(;N&?Vr@cdf6I@owMUmt9|ihFD0)x3>)yzbb|Sn zp)6HOv3sPB@jACzq~m3pUju-O691=hy!_|a()5OoSKIiy$4i@Et6`#<g3%fR6BU_ut>-}9kUI!;@<8?j!zfxs8O4;b+HPkUom5F5} zb$y8g@%dJL%qX!c)3#&>beO!~CGQTe#gc)LGWZCO+I+nEJ}ILN&wYP8?1vv7Ly5$(5cWZaj(ZiG*24%xZV^B7K zuVLbr0j_ZyCiF>OFG1jRS*Zu(1NbvOhZ)1KzrWM6bu^)d7#W zdPvmpO#Pck@J0)G5%q6s)bLExEP>$tdLZ)ty%jY)Q~&0?3wTo)o?GOzAdz>!EiqlH zX^B7aH{Ee1&RMcutB#jCLnG(E%c%X+Mf(LR{~6nF614qv%9a`L6R9Oni37~!`1fK| z(MoF&;&k^U*_m6s+BTyW%7~AxmglmYQM@@n)iWSPxo8!{6BP#`5rP!tYUP6U?eOGA zu;FH@gddg%=1OuOEKB#{GtceSHqR@1bJIn0<@x8(@x|LK49#&?&bD>!XeEmuqlU(A zA|NB|*wW$2=De_U<#vT_hrmp`w(o#I$M)^?y5Q}kyU53K!Q~p^bRV&1+4^pD!5z$Y zy8lebALqpR;hvT`qp!pkf=#xiG2?KaajX2nzLFO7&ICFflFr{mB5Jwcai{4x?i2%A zj?>F)JKLtmp@&XjI_+a@m%wMs?k{j*JT&M4+${fA0r>DJ0l0IzMF;K*4ZJ!C@M=5` z;70&_I%8O^oJ7D0-I|e%{>4GiS5KQXp+Ct#W$!2?gFX#?w z1Cr*Dy5`3jTX@ zg@Iw1|5|Q14M=GGM-PYRKhd1Ze>ukHnEyUn&np?zwT1-$rSvfJ-!DJ=_|GJ8o>&Ab zP5wP{{@Z?iWAk6ahY|7LBo%Pu@?XgZ4dK6mc-z2#g0d?AjUkKltl!N1H=#TT|DB6X zG-m!Y+n0%$A0!NWK!8H=#Vk$z#IA<69p1B}TQj-nlwzR~p@YyF2hCR!O!(RozBGW@*c9kxiA%-RgRp?FEgRCB(LRUE!%75|jioX#RokP{pwamiUIL)DDVqmGwj9jGbg{t0%^=+??X)2L1g_Qx31U$PZ`uV@38g6DielxhCN8{Y@t503q-`b+($g%S10A(0CviYONjwP&Nei!5HbNQPApg_1h}FW zr7s}RH0(A~orc@-sy@@H16Cqa00iRyIw2gwL&}aN0>Y;2RR|{OLJ+E{tpEs%B7s0_ z8Op;dgnKjy<+#gz;5INN)2OT4uWkjDE6CTNU)%E4#@CZ@jYdB_aVR?dFd|C*u!WWjwtS=Ohjm|@ z^+U^lA&f-qkbK?$T0gYLSP&-jM}*N2M=)w6V@rt*wqq98tsky`yz%ry!n@)1!^vGk z>W2eeO#0y`d~Hnq@b1j#s4{>K7Hly84D>Ib&!NT*zy-#GfA_^souAI=5@nuezgJ6`%> z#UcUWt)a(DKa5c!4Avk7*ALl?JDBu?$tM_y`pL@4KLqH9kq`mF^+U@)X<@%9Ut{?C z=TW-z2VZ~Z>uy}5(GU51qtg%d@*i?P*Y(3+o6Y*+uCrDDA?}+0wSL%-IZ2H9z|~>& z!`B!!T|boLjk@(iFC6*RSpLJ#|AyBOza@p#51-*Dga5D!UmH_D%>E)kKTO4~Ao}6x z_@MeBcHN2756`~dNcv$o8Vau;vYncKI1B1BQvGn~8+tZ`e(3p-t{+SbxL-U2iSogB zM*WZtE0cYW7w>Bv{cy``$6G(d0s>9L1A~s2et7Ox0pT$XLZkZ+SE&##(jWxa4`uzr z_z$V5k*xeiR+rg-u)h&XKm2--w81XE?%?ZIzJ9^i4SZdVYc%>{*e}uPhkE%B^VaM7 z!L!b+AJ$D#{fD1i|7-oQ8Dl|=dA){78GHo)^`+$)HC;cH(dgB=zSMDg)pNG*89SU^)VDcXp&x1sH>MNsu(EW$vyBbG7WWIR3^}~+~g!KMQI$ru= zstVy=4ML;qht4Vln+74cen@;JjQ`O5IgI9dvbxOr;k1RJ^us!orYTjb__~6x@AGvr zU*F{GE4Z5ULx}jUdpUUmmb^=XWiq(t0JUz!&a%u7gCV})AMg*^K4}tP`zA)-^90)e zjHZArv%(3}KGH`}Dan^0B2S%X`X0L8&ITZW`bVaEO#OaT)nVpEsK+E#O{J1Y^skD+ z;05ovs;RZKpc{i6n z^U`?@(rrpImy#-b6LBfTXEHliX4;TIN$+AE`Z2tT0#G((JeF)q9m}rb+rwZvOw zJnytuO}f?AxsZMr^*SnFz{r$jenq%)U^YLF)BiJ{rGi?LJcl9L=gh+!hFTIWxR@47 zNsLRT8jn;;!VG3&nM>ZBC07rS*r@RN5=9PO@<74|2sjbz(tAGf=>hT;Kn5$|zWNVN`>IK|2>9vfqO#<9 zrpGQF{u7`+5+yWx1Z=)SRShaDHaJlk3DACfN6`AjmkAx0d1I{crTnBdnn9$%hCNc1IuPG8So7#O_g*DdExuK>HFi-&cf zW!}UHJ3Wr!nKr<3r>VE7<HZ|nWzT=sHtP_=`gG{l#edS@ zDt+c0u|0AcZdFeElQajU>O~Z?ss>_p*R;DEC3MyzUo%vF!(jUK&{jWvO6A(`k~Me4VE-=%Nw;#=jkWw??) z-GaZmKD8ip2_?GSr%$*0^y!0}HGO(rKh~%88}#Xhl|Fqs=Ivnm)PXlypC+vh)Td9) ztiL|p@}$tGia3x{sBx$>1(>P&ls_8u>38075xcYSGe;6O1KD{M6e5Q43m_8jR;QRFHCy#M?B8?tlSxIiLIQ z)2FxGAJuqFJFOo2^j-nfr%yMQM%w998D1#)7@b?9-<&J}O96w?3_*(yLI@jjB(V%wtOU^y#IOqN2obM#@-PEdqV&5I}wU zv}{(SMA(Tcjlm{~u)pe|PwlL4RDD_i#Ol_kXM9ik)Ng-DIh-EKk{f})?4Qc==B*5Zz_?ux{8lRe& zV;Sf0mSa^jzB4{&cH276fs^|tHqVqRaP#zLbW{G!@m7q(wiGGIz1KB`Zo}SG&*=v? zjDewPu`RJA+iXj!GmBPZd&bgDHD`=lu_JC=>?XWWF5On`wIS~X#%FBxj5Zw{-j$BR zeK8Jig#*cOu~mgVEcqY#Ke(bYu08Z;n+}G(KF+FgvJC*w=`HV5ctsOS{vl<>D&8%F z;!uFFCG{I`Maih-5ye|=v);h1Zih1Do#Svkx@Q@TA4-udUY&owXK;$rVGc282JLNC zv%;re*#^C;uEB1F_0AIg1;a9f%f8*_{s~5sQ_f_Mw6#jqypynMYAafSpKvNWPgfLa3Zx3lC!!btTWgP4ce%NJsNlnH7pxztKCO2$n4sx>n5CAm`MAfpRC zPzTb#u9A%k6e9N=zLX8sDobmg8YEw_!|8dp5Usl8`>d|iZq5~d$HIexS7DnGN4*+* zs2ecKAfw7$F|l&e)uLkJkF%*$B41O-XwWkPqbegt5McIe5)E!HSM~#{pDGWvC4~MX zp$?^Osno)bv_soWH@H~$-{5hIijC}POLiUpSQS2d(i%n9KOG(XzuTzr+w6D9gRS1x zav$qC7Rz?;)E!=LXG`-Hw)d1yC4H1a7Ki1urCyi=CW2Vq8fQ8Acsbo4(w=wtP^rk`#10V7>0QL^vy)EgD(8=fD9?BqK00N7p7M+01`JzN`;n&d&o)1gD43Zt@NT+CaA4w1J3#Lp1@XUwZ=GJC^6(K zWaI<`U9&t5h$v^N?eVIQ#z0wC)a2Es)Oh0JG)yV~(g!@H(m1gCL2KfmCkM!#P)W7I zO4JxnG8%si=&$@Bc0N5Qc0QdZxxLo=I&hY3kx0LVD5u9LIkv_n$%iHP`lb@r{rKO* zl6|ja>%Uj>3`g$rOnyVT0owMQoSb9x&{B^eH|S}vvdwIT8$@3kh*1vjif}aEILcxv z&9WcMyS&?KXUX71{BLhdL?Me-O>K!%BK~4guLLWMRp}yqyTs~rS0%Z?S~SgT&PMc( z4g~;fk}yz`{!0P91*$j@4>hpMJzJyQz5hzFc=~(&S;og}{>*cDq(Aed5c8zX5+XWX z=bS+pZZqdV|N6@dm0$LI1nU(V`Q>!6t{WM@l%5H5`)T?VO@kht*>Ha7Pk=$uo2nx%2^R_t0Dn5G<=Y3?}Bxi;}cxhQk=<>n-k(v;g^#PBFSn0KL7Wu)SXWEPurbxrE}^r zOQOXxp@Y-Cs%w@!5&P&Wef#L@!j@GxL(O5i!V=k7?`C=uR0ezNHq= zBQumWU9HVMza?ZS>3i6x^n?1CVU2c-SfjlY)1SnDq1t^m1l#RNgw}G(ycsQ>X)bbCvMZq$=Y#sipz=U9aJH#Sz&1e)ci#l9ZhGawzq5P(;a6!Iv4ylcEHG z4`nBlQcqNNH6xPD21!;Rw7>?1Z~VfK&st13>c3{|i2nZ)fI#Hqb3G%2@d?}iY_%`u-hS)oP;WUDwe4Eq$FRlFCzP9 z<|BgGyyH}ZdU@akjH3UH0mf6cZ|D>=XRUHd5{~D=Dyh4?3B+&2`fJZrfnR&$_{O`+8wW&e{qY30=l=M>9pPXi|A(xMoI_EF-d$b;`lb`#@>NDnXSjUvZR zqI-NI~WSe#*E0cub+H*M(n4w1~&?$-6OVw1c}CW%ffkf@MI^zl68UU=HpUVsRgc5fs+z*1#L1%hYFR=$3LYpJq< zK1UKyyJ>m!@w8eB?*+!wwjLa#$I~|8b3i=pJ-TU(r%l;|PIEl%g?CR-JdILogT~YD zeI>GZS^+I&7~*NGA0UxnjHeyG;SBUjkEdxb)Dcf(q6Ukn<*ERD@w7P%Ko2GmfI8!8 zXQ{3D;%S!eJNXv>bEpeY#Npy;A5$5~MvA9Be!mc;CeL)%B7sq)@w5vWp?byBPEp~T z9P^W-g#QK#LUKH>;qf$gf#4$FO2*VTqa((dj7+5Qv{M+KZ{dc+0Ve|_(p1Sk7u*mg zp7u5>PL|e07*A8Bdc^TGdR~vGPnu_c-m>tg^Z_d=fy-dkQZ${jY|%G1a+-t z2q2y&B-)9Nr!gi!^&xvzan5zWgD9uP)985-Pn*mS8{=u`IhjNe$J09Q2bE0m zG=Ys8PdiP;rcA|#hvB8$k)DTm8b29PJnh}GI^t<(dm0u`tGP2&JS_*-9^z>u$P5h@ zPop0YPou{I<7u5R{R84@a|fLkB%a1_>`&yP9W9Ur-j9DGUjSP zJne8+1Mq96;TO!m_Ky$z1#Tzs8h7w=oh%js=c1@&=y+QA{;LRRwhkk3 z*wv8!GcqC87xezC@wC70qW&A>X(Mlrvh(w)%3wp{X<_LziV^gSr+qcB0rdIhSCxMw z;g9byD~Uf$UQ3U$QIcp9gPiS)r}cY1Ogt?(J=A!bixD!$)7A`V05QJXL&S(Yp0@4| zL62%xnlihl+!Q4}Ze^$jdR+Een0Q)ndZ_WED^!F`@wBDR29RV;O%(j`;q8JRrg&QW z8>6JhwG7fgkKs3liKm67$N4Hk+l>SCveW>2y!T5K^!V>>f*y(yyfr6Edh}HQl(pZTb0X^N-4k}GInil@bm38X>Tcv@d-mg8w*`*Vc~%!2ho zeZ78ZzXtSY4b^lM>(f!i)84*SblVh9Yk5Opw?iyB303N1=%#pD`2MR8ay;@2KGMw6OTORQycww5q-h!0#KX7j77D9luQ@Ba5en#rLV31wBpiv~~@_ z_dE^XVD^h4o_3ZB*%VKka($HZ@q?d;I)-@K``6bMPYX+rnPUY#(vAGpv`+)ZuOnj^ z!rlcvjPbOSRp_R8+HKcGNt1=BQ5i)%jRc|=Py6m0Lp<$kzj#{ObhN9-)85`vS3GUI z)fi8E{vnR1Rl`U7KNwFl6+o%UMm%lvqru{7oo)jE1dXTtvfl2Cr?p)eES`4H6pp7Y zY(3H!Piqbbv{ZR)A;r^Vz82$Jsys}e1LA4f#J1SfK=v=zFc24tZ~Y8fqjM69l8LEl ze_C1wTq;+FydQx}Nj*CuT`ECT53lK4)pp^FzE$lTe4(vsoAH;nsuh0i3$5khb3kZq z4Ba$_)*jh}{!?h}Qt3$wtrejq1nr{OuXb^y`_{{ zM(QsP?Xmsa7hUZi=P*gOWU*ecROOh2R!iU*bIZ1;jdHf7V?7 zL3>Q!rZz@w)B0evkmn2OZ7rXv>#acuGne7m=Tba|*Ow$WgI3ph%{Z2 z+w7MISf}ow?P?CW@*LiTL~xjhMS*wt1^-yo zweds{Z~ld}Gh>e0isq$qD{lq1GLHDqKmIgatdw4@wqbHLr);KN5Z)rGE>iI139+SX z1aIlu{VfrAj=rr2Te;X(!C&?wLT~9(Kq-=b^cZjH>Z5Mya@zlJ+WP;YZRDcol;@|3 zz!QD(+sJh*FG{N55O`wn*z}W5d$@9FBJpl6j;V0sM-NK;$fo=VM#1waoxZ1}LxLi= zk0;J0+HS6MDa#`p*(c*^Ggop(Pei%%Pltr*fW2HfVlUV0w3q87dPY19_Q`;uF!OHo zD+9ZWa!Gz?V^3Eu(n-dny&OUbpOF&cqB&&7BR7Tc*el5&Ypm0g2K~9~1?wy#s%f#O z4=`ZrjvR5yY{@cu$-sXBByk zV6F(*(#0cD*Qp?HAlX$(9F7naXxtOKMQomnkdHy6muSH4>uod7zzw1`jfD%lv+JaH zZI^n-q2_^j#(iBR8Wd@gh(nd(izW~xdA67h_3QTsnEguoVTeNwC$a0}A!IT!4>9BU zGg4=C%*;sGU!A6m7$F#`9Qf&sbRR}O2qOiNAL{X4)+mB#cvgtIUGsR9`r&5e3A=-pQ4ZYWEgz^xo zQ9`6^d%d7+1!ih&>R}azCLtKcd@(BG$%tZ8?ICH^yqJ^$1W= z{XccX*MO@*5Vl%qF2nXh)?gYm?JOqwNNfXse>(;RcP8^4x7w@xOUP=Ojk%x?!l`7~ z{d-J1OO4H^ifi6vONw7}0YtiU>~PLIJhGPjq!CtaW46#14~E)z%yKDGCH2?CA(hlh zUMVyyDW`lxB95=5eqt60d+fcThMtM_@N3XBVHfhFdR8P3e07muK=c!-kwS=8D?i7R zE7vfYb3MqeEXYniinL>n+9FabNo?Z|%e8Dut)y4++7#OSoI{zFoqZ2yc;b2l zyin<$0i3XXIPlQG?S0@1R!ud!g6YIwNUdx|grB;KTr$7Z%8yqFSCFWyG@Gxwf=p}A zOg^7Sx%nP;1)q)+t|0m7iseRf{HDz(SFn(;58zs=FQsvB#1xQq_jc)pqgsw z?+=du)aMW0jL!l7;9$CG^am$YX#QXi`9%7IA@eO`3M23b3(WrD=pkZq`TRloQqHwB z`-AjWUH+hGS@j3wjqS2d=*I2p{vbUa-XB~^GmU40=Ju2=rUbqy{J}AsNTJr@52|UR zMt@LrMU_9jR6KnCU~cy_G(6n=sPG4$n-tC;eCN?d@dsZYOjPmPAN%sOAcTq3AMCY} zh*WQXP!)m=@CT^{-5*>#$lO2Xoof+aGx&r2LRf!rn%c@n62+Qp&?>N%aQNxch_uE(ob=ucbvj&Hb#GKgelZX1_>M|8M&b{?`(UG(^z08>q(<`xnchnK#`On#+;)8YL2LiW{Xy=S4IMKx68nSF z0KrJ*M(ObxVoE_6DYQS>gj+HCgNx3Lj(N(~5c5Rf4^FzjQJ9DQ!HUd!_=92|s{Y_f zP9mStADoN$lb=6GZ?;19;JRd$HnCs!W_o{@{4N-i~Xjax;Ivfv)2G^fWrMItda3mCJC3y@X;A(7WH@2n7)& znM+dz(ji^9_2LJ$)}?jH?A8ty8u*OJcNp zuGESwv@CxH5XyF55wzE!9?)mx{--}|RcT}N119*q_`3T0 za$o=czW6|=|9yY=@r4;_S7QnXJK3Mki2bZy{OkyGtachGao6%A1QW?cgLcb-OqC0cr}jt4zkH# zsa@B4eBh*@J?<1o2Q4vGQWP(l7$C#TpBegbbflplwnxU1)TC2ZOntFE;-vfTm0hV+ z1Z`_@m!slYZRbfTyD!2omz2|)(`AGvRsx%*gI}kvA|@Df!^jGyVj79;59xXXu(m zB$%kJ$*)0{dhl1t9U6bVi8C>D`PF2EVO*l+uXUFP^4DYc2>u%N81q*){siH#Q1a^q zh~^*?dz3fMC%>-B5&X4ly`dkyt~K z2JzSENsY;0b<3|yp%x6(*5uc3f5k8i&7j^)U0-3n;a-R(YDP z)6uIR|9z(A7yLK>i;Ta>;XzgCyyV1dCHI~rNq&TUk8WFC^1ll40Tpz!puFXybZQs; zp)4#^UggwkaaByb)+x7vRkmJvH|KBfD>$0Rn~x*+rc)b|x56cJN*FYqGj%n)L-2%F zEJC1g6xFTHgH`2Tl{BV;zmrLz-%$>BR=jl3Ut{5S^Vr74Z>Wx+E7?kI~IzmY8( z8Xm7Ymi%snXY#(UCU`xghIfs*e`JR{1Nw3(8EtE@ zf=UqhvLkh0R`3Vt5eh$3--i=^y#;$gOUFZ*vvh0AG%fGdvVjUo=m-kB$fSE#V>c^QAx-x4>S!Kgfy zrGC4UzRgNkztI_tilsjejB?WfjPmp%ZVoL~^5jEDXky7z`96OpYN_iTLE#hcF#Jpv z2Ax@@v>2>@d!4?mcc|a!%qpeaN$}~wss_NnE};K?RT!fGF7=z}|5fTY(f@vW|NBp7 z8Dj3dW3r%v=()HC&|inI_g|yG=>H%UqUgUyf6;$mW;F_ z6@B_Wep>wq4hoUvUnt9?2a-$nVvsZBBF?v@DqS%+=)~z6xJ)_p@*#}fUhQ6nT!os_ z@H%spZ}AJx$b^xOsn+(r3+!OJYUMI0E|HFdJV}&Px3z+EYeP+STPt|O-L~?vqIy+z zoV9~GU_-HxC9hN7KlcDFfe)pHrK8pfSm)_^a*T z6tsQye5m0LTIC~MOY3OaB=aEe=H9N$J5sV)@{ufgyEK+p`e5gz(`f)n5M2`frr<9& z*vvSCzn9QLp(JmjttY9T0cpy?^D!y0gzKxh*7`+C60ODw09e42wdZ9Aj&O1C5iXJ) zh3z*GN@%x;R@Nks+#Xt3*>yEFj&;RqW%3Yw5mAd4&el_}r>-KpathrjT0VoEp9MQl$p5tyI9f6kk`SqLg?Lao zSL#B#;HK|HsD$r*(o>aJVaID%ZoS9L>Nj2)ss7`&Ir%ihcxlhqHC|g_wJ6hRkks+Y zHjdXbgL%AIwbwabZ!M|!c$p^3uN^R6pJTNoaJWaaVqB(ZwCu!$-7;U592A3wFjo)6)t#NxKZFl zcVN9BwfCIm90L3#bLr!b?!AO6%?A|5xCisb!QOXJ9QK0y2bKNjtI^HGy3MRAGNO7+&> z-$L20sJGM=YeH zL#U=U!O?vA%83gk-q$u`22mt+Mj`#-v%B}%+=DP2hOTs_u1xJpw9PEjyRvtK=nB_m z3)PcRq6Zn`<%N0=Vx#H7&X+^=fQ~w+gyROL*1C;v>rvgZZh)_w|bBX;G$Ox9lIFv|7A2LF)czRRL7W|-v3TqN16@_OQ|<3&n$2RtA` zDsz!7aWMRztn$omhg>C-aGF$qahg;{$>oxqU+t3bLI*)G>{msQZ-jST!Tp&FAN2Eixb%)W^9*Ndsb~pvqol)_Y_#dA0))GB55S z;8RzTEH-55!__(K4svxm;cE1)>2rkg{OO#iTqlx;o@}o_N_O&#ytwc&V_+F(=c)Yot>{_8>BOeu$ zv;Bn2^CKP6i{SFS-=HA!oVmeuhJjOAo}af?lrJ&K^LXq707ukMp638DA61vM3+&Z4k4JBAx@eAbYg3d{jLosh)(Xu* z!ti6%(AZ6+3FX;pRTlRH;*`tQw8c|dP(yLM!2N0IE#S3u9moPeB>$9VQ*s8qQ}}J1 zr6$SrRtjO~X*+yLZ;P@I+^uKYVNGsKMa@3Ms}PTflwPFpb$VUW$)8@O=aNUP(Tg4q zPcPA&O0OSJGc?Eaa-cb)m)4M=*K7X{O0T?Mbb6Vb+r;Le*I}oTUIiMxvbP%OCEil$ z)nzg0wE}N7j9w=GYGUjlJ7$)18o*!g&}@bZVRmJDy_Fn{zfyzKD`U4#FVm{r_LD%b zD#=JMoxc`sGtf)CrPAxrJD}HNc&lObGV#~u4u%dgz0$fifWO?v=9pePx&-5|fu%wD ztBs=5%fw%ctf1H2{ziJ~{8jj!fnFy5s(c&tx)E;$(97?9`gC4a5L>I%rG?hRRa3Mm zxd(owg@v3fS;4Xbg1Gx=KKG!@cnN`*GI||MGQx!~3;AhOo1kA7slOEP@*IEBLJa*9 zUGlQ+n7vs4vlX?oBE0T}@=ME*chUMl|Mt#Q?0MqKz&N!1FdQ@qd#DtW4cG=vT0^8A zevr)LiQg8gztMcqew#=4@LRR|+eX80%kWu`0X=lV6%b)!4N-ZTXh!?+we6a2$A7Hh7gQ)r(w)hq%@kTuO2$k(=a+OI`EEFb9EANjC+7GjN?Sh!df_A)Ub6^h9 zu1ume8joZ}I6VpBbexE4&BCd#;z;K#Il(CpPn7K0?emkMSn}E-t{yBx{SKuVY^B&( zBC%>fjSM1j-f{}se=`I-=q}4b-b)38B`L-fD=9l9CPPc;iKkXjDQ9y$NQV!g45Ei%h-HEf{ z$Jy?Q&sogzL{Z&q9JYEaLo<99JOvNvMtl6_8?-n`H>jif%y=r%&NG8o7j`y zA@-!kh<)f+nm_aCslR^L*;J#X?GgIL$g2E?k5wlHi8R`#XMABPNXY?^U0D9nTgnI|ei@c}PCOQN|mTdAKJR5|vAu z*5G(4b!?_SLP2pza|DU?L5?kn*?k*65bC&( z(o%(Jlc2XzAzcVawk3rYu*8g}PV5KB>{f1D!WJW=JZLkajFA28YP|Z zU{ERlIavhB<+oL)Hu5k5Xnu zBzAi@h_-r{ClA5cO9T#pv4!r|1*12?$R`+b#qJ$=!&^a_G~F<8lt$LD4(vpGN_*}= z76ytU3N6ijPIGzcD$=2b zrMZflua#-oC4>4GxRxpp@O4X1ysq5MpL6+o6JJO1bvR$Mapmo8&9%`Sg5W-cp zmws@a2z!YH^gqL18kB6Xm+qpGh|FHP3G<6>A~GM?UMgH8mMSB*m%OOJ7@@tCw_8_4 z4G;`$FP+&ejJ@=2jnQ7>iK^L4_wsZhYetKdZRki2hGsAE!;#xdXBnGgdujV#S|-zN z&G7b816JKQ zx8rLsWfF|zWiKhQ)Pdt`FBJiXpS>hRoN6!4w!mJx_EN|qv%R!{=5kPbX*lZetW~mc zEma2abzvG_SFYsGJ@|SFU(e@j7rrLp8kxQHcHa|WFKvf`_Rp}F&N$6rFZHI8h|FHP z1oO*mFO^%OTwmHy3}}(9FJ)}k6;VU&rG1t#_R{M=80{r?sWf}Z!Smf{FI{zV1J;-J z^XyZbV|!_1^C;Gr9xo!=l}Z1w^`+U~uDp2nKUrTodq3=@W*2MrlI4XUl0S;|r7QmK z#Vbd(n5)X!mw?`Nt}i|PozABJ6nlvR6{@{7cRuW;UoO(@CFQTK5!p-1_z3K!3Ov+E z>q`X_gW5}vZ3tp7x$vyNz0?Eug4j!EQa2iReQAAuP-*g81~Zr0C2qRrM3j)c-c$Kj#3AXue~%BF#PN#5ouKIrJD~! z#C1I%vdC;N<^2uZg4#=6GRa;_!nIWC$k&3dcwIS}KU?|Qgs;ak=$S)&-HU5v_R=H0 zPK3Sm&skskt(C!EYDpsznZ48m6WDAoB`u3`ed*cBfEJm()aEN)5jE6aT5(vY^q}#$ z$zL1oCDZy+E1vI0d+8o)1J;*T^6WF(ONHB_SYI0ZAkpq0XD{7+=)~GfruC%*3WUiw zkOm?ixADm!l0OQ2sl^`#d+9(5=v}A1bl2xPoBmVmCBypCt&hQ8dasLSFD*MrGq~>c zrDeB9U@tw6hZ@OVns;YVd+El?AokLoc-G%u8i9L3?4^C<8r@#{?T(=KlD@t)=>0~s zmzp0C=FFdSj+4Fg>V5%Wz6PMN<8e*^INtWs&-(!5c-c!csPW@$FC_zppS@&SU+VrF zMBL%CAdAfQQpO*^EvUV8$WHdsUR+C+U-&AWf!CF7{CNvsH}iEZUn}`qjw{(qlDx{d zJ!;8 z4sG!`|7`Sq+&H~Ha_D@cvoPVvzDd#JXN!J2mGg~|DN7mU^qUhKor2{XrEtE{$EY*u zZ{Hx3i?TVmE1sdisMmT`Wei190EMDWTiTK6TF2gwyWpHDzy2oF?$Z=6MUseUo;v*6 zMmA`i@@Qnp>Ip`Cs98EsNa~6fFuU^DshB?c!BjMq&awHq26~0gFWS$uLv2m0{~S40 z#LEP&LdDClffcz~kK=feMz?3`Nzx=xQJMcMkrWv!NqGqz+E1eGH?uhu&Es^HFUN+{ z^Yn2#GiZVh?ZK%@p!RB(DZSBnXif%{g~Z~-4TgDXyH;VnY{b~$zm37s- z2U{6*6|$&J$BR%lvE=THy2-o?7e9Zh{6J+219ojaI{*O;+fu1ThJA;_=K3wu<~p1; z_HSUAfpQNsZ$Jk!iw_mFbIRZI=F$zy?Quv{6fa;u{MheMg;zpS;g2s;LKc6N@C5Q~ z)uSw@{!AxXI-0NJqbw!sxQvpV7A_A8*g#sRIpsU>_ddxau?4CBhxGoE*;lotnBJc! zsr%!2u17-e3AZ;6yal6AaBE~Zz z#)W);Pgc1yw;y)XW?u4ZNj?rW+*Xo5qGWWA{ebP!>#ej7{}GwJTD~`)BD17Frb1Ib zeU(ZJpN8ku{pOk7kY0{oWpG@%l&T-UdYiT%Jq3*^mq7xM?n)<1kjLjIiBGDdA;Wzb z@Yh-;`?aVb&NHFEHWTmz@@I2thhHF&iO*-qqmkdcIZLjV)>aNt4RNK#m$%!HZ7E$xyrCkCa-)5MhQQ#vnK7*;#0Pcjnr1yK`vy$8ih+rd@ z+}F3splZ?`8a>j99$i%UoJz*@h|Bb&$2ILG`!!;p0VD(V8E}DvBy8MDRH|-eR)u2( zIGXUOn)rfC9&B~V?I0qKWXL(ztkgA5CdK+mW3};A`@d84pO39#_(S{q!4ESY5`*tg zpq##*zvv9!^U=$>%iUCv$W~TapjCz+$Z%c$d|dD@i@uIe%;LAgMlpjAM0w zTF`UnkJP!$LcMQK`14X2a+Xki$N+M_6oQko(xho`TXg{6J{q#HGP!t(XYADAAcI(Eex z@9L&*Q1O~V;`M&68A$LJlN?YaL5sGK+q-6(0p!nMH?e#rp`q0A^LO z?IW;VsAIcNTjP|kgGV=RXZkGCA-;KK6k{@hL5AVc8z0hn)ak9-9bXFr z(p#x28K-@p?UCP+!uy3`^`T)0Fa(=d)pX-#Tk;rwXP9p<@3aH$7 z5~BWAWy=kJVI6^gWGSJH{>uwO=Q#{FN!VaBdO1Jv)fAj6o+rs!+1NydG5b>a`52Y4 ztcJ;}d~=jOZrS}j!IJy2{7Wt@Xm80o!zs_A17nq@aeva&%EQkb#z|&(mmje0EU&Rr z5yF6^07Iwcpmt(Z14=6a!ny|7Xvz5sXyp&P^@ob*P`u{?ZoM@(5II!R+rp zk;;-(V11RWHhm@JhLNKyc)xYD_TA-QATjDh+IPdZ5$750yU#!9DEyrW?7P|<8r#0B z{7&HGv+pvZz$cgSX^4H-PlfNZ?-qQf=BjD*2reFleYcCNGzN&r$nCqzZ$=81IlXJS=wy`k-H+dh{`l-W$EGOgUBoa0qU#jEV8XuZ!XN`?v%$V=vmwyFOB67D_T8gP zBJbrpT=_9XFT>h*_hW&v9`@Z$U-6ju?7JO{BgZyg$2JQ4Zts^2(P!TcUKhof{F_Tx zhT+jo-|0Nsxb|J{FtdGEFtiT)u0Jp_+jol(==R;K`@-3G>15wcKX#PuJKGcf_T2@O z>uuj%(l)Gp*LQ7b`)>MH%6o4-`|hhtVAr2W`)=ar#Cb;hF8NYF_cyrfl|&9^dz^gI zxa)U2KNI-)?7P|BBgbb3su9vsS^d}V#;Ndq_Fcxse(-~fM`7PJ*^;y3=Rbc0{?>^CZSF^T)(}P#GmQxXMrbm#Kt$;v;x_-A{J=4Qy z-?`6M>7hXk&RxR3>&GAiX0yS*>;6fgeU~O+`s};!HICL`hUw*JC^;CimtpO@CuylN z`t`d<)-i>A_T9x%V0(^^Z4~xhqJZeL?|wfoiZOXRE9i{(@#u56>pa@H_FemdX8SH> zKppm7J78kA@6Oq++jkvzg|qL(`rRMGzWexJ{`OtggnHX|S2qu9-;G@v#=g6$ao6uA zt$^vE z9K~`#SE>uk%GVU$h}^zQP~rRRyP}t)=s%aQjB@?%@oLd!pMAIQqbR!EU6jo9kLbM6 zX!hNKDuJKRz8m6)Us(HYHWix;jMb>|**R+CKKriCOOeyN2iguaNb0cf&Q?MC?7OKS zMnUgY{WTVgEIxY>O9geuX9p$JW#5hZFcSN&UnLEe!M^)sLFDAz-7gq9>sY`0{1b-g zv+ufn5Ct_SGRQFY-Qu{gFk77(VqYh*ckIrY`wOXU|Xye*<3ms6*4w_D5EItEb1w^R-&IwGUcZx9NhR5dQijI97mV0K_V8a)UI@Urj=l*+TS7&Cg3v@$o6gcatK=XJNXAPxCA!=MiPp z1l_8M&kmHYIO4a-#A#nO>2?i%I*?GNeay0wYX6Hb6oCRvEev4n#d> z)bLdqhPsdR#3CZUMPxfo`-uDR(^t22@`E3?|BOKY_5{ZVL-Zdh(_n|~^7urNfakDR z+8(8{|B`5=&X|?X&OR0%SCQNb4 z>y)2*V;Ai<+#&jWiNBJ(xDewbX~`)CYTn}3512AOHTGUdGoIM|6e?{oMVSIHFpJG; z?BGPde7lJPh);8!<3At5kiP?9Kyd{p|Fz7CdWPYuNh;JK?brbcb&?aD>uJIcE5>wL=rKH?GEe17t6(@nCyg9KTTf-bO&&u0uR< zs<}@g_+5F30DIVMoEK1RsFnk3HRQjgZ`vV6uqBux!{&S{XEbr$)~V>W?^VA zu-YEAv+~jQIG~U{kpSkJYA>W<(ksISK2{x{c)uALPTn24jL>1wTqa)w1vnGSprnyt z9x!YC?3FJUGd&V@_=``8f*u8oKrn5=;{%=jLxz2PqHX4Ruv46=)s&R&v~QSngKn=4 zXZScbLq{OafBJ^ug<2F5B!K}l-oOPflBpKNQdRT&e|(p^oROTPgIv)%iar-H%zzm{ z>ve3P_{8_Ant>t|Boz;M^#GE3Y1;#d@?L1k_tT^JNtNEdn-Ab7TvDGY>cU>NM{cCM za+Ve6Ln6z2g{`O*rk_h*;Yuy%9XpY{k>*Bw>!k04K6{*Ef=npv$Bw*@O zQ?kSAtu861U&1~ADtV3@lpXPZqdz*ZfZSn}KgaZP)MoSqFL@T48&wXZ{e`~v!xPY| zjznyvs0;3M`$;}8t^>Q*UJ=;!tphth%w2MBEfZT{eFhy=AW8PGZAJ4j36Ls%=?^1% zW3>KDgg5M8mgHEtHpPc*v*<|G4ASuqZ>7VI8&uFOg9Q`vX~v3C*` zItXRICMh3Ml|hvV>cIPTMDqAX_MUyP-}-s$r0k@HM6><{G_~~9@kcrIwDt?JG?6jh zurv{COR4k+Ys?xC@|!S`?8mSrv&1I3tE_ZhoK(|^rxl+=f%CzYZK%!Yl9|Ja{Ge@m zB8bvMa#z567;Uu`&&0}tOU9&7=YUII@4|sK@=)xx^LPp|I7&(SF)y7Cah4> zPQ0t+JjvY;yO(%V8Qxv5+y_uNRE?m{NZAEetla%Mv1sZ>>F`RV`g`+Fk|xnVy2kLK%(kV6ux!JpV(5~700emT}2BtrhI$DR#t64>;DJqJ4@aWvuwPsEV_Ht zrP&D9cSfKBX5+5!bW!o)8OG_h3uZ=+PxXZwKJ{JSdFj7I4?}z+eu26YtC1tPwj=cM;FVMPQ@AaLRUg!Ro>hR-Vh^GIHK%=hjv=s==(-E5e zugD3q3`GS)I$WU~h!n>-%{2{IXEAPZ>b6V`CTukXa6fr!?3{(P13T&UxD z{c~nK!|2Bp<>}O*&aS`zHb($iqyuSN5;^&M0!B#k2Uzav`cATdxJ-xWE;Dy4gug3h zVC8uPGML3~(i-~u&Y?w!e%8IdGkAA|>pSCK;Xx_avHy9xO0Nj~-IEyk5bI%~*!AE- zhFGmbyyjVzUK+&U5=*QP%sE%17uwg?j<6z2&OWd26g}Ih>pSNFV7=FOtfH?Q^}gQv zjJdC2SUyR4H6?;^dv^hGyAJX3r_Fr|!S7=HzC_K* zX!t$h4TJ*gTHm>GXT<9}6JKI_DLVFl6h%(24vc)1{2nJD?$sfVeJToiz0^gcS15j; z{ZyUnJ5yiePS@%vSfc23GGkER^_>I(+Mu{GjRcv!m8u*$0JdU zKcmy2^_@d6F#JRv{;>H`&|_Y*#tr__fJoPOCNg~E`p&_rkrSXj!;f-(CsqZSqxbp7 zC!^@|0@NWC62mkD>ao6aJzDZDpR`gZ;bVwGmg&e5*#tk|wQ&Hi8wz4>&m!0w#`|Bt+Hfs3lz{znDHQU}Xd zrZ+NF%pRzfC|Zm{ozbBvv#flODcRc;luQ!@6*^6lncBm$x?Sz5y%fy{hyj}Aqf&cV zR+@*fQY*zr&HuaBKIhCiGiQbw!0zq;^Yd|-Igh>9UVH7e*ZS_Y_6|&)R}nSiI}NX? z4}7QJVj8(dnDUwVsu%}@@9c>V1>c$TZE*O`g85eX4u_sN%LKmj*~q^G-}&pjdcb#H zy(AcX=Sfth;yX**1i*Jb=xD}wKI)(iDHH5s#&_C$ql;>Qr=p({_)g?us={Qc6Y8mN zvS4v9IDBW>zy6QnJ3F5fqinoBS>*j`6ZuIRpkclK0O;={C95ON6}~}2wU6JqTBRpT zr|0)m!PBF3(CDcxzEk!r+Y8xx^{*WFs@~dL65i!FuHVtrB5>p z7V9;>bj+*9Kr9%`Rr-oR(D+Ua3J40{IakoRRHyUAQ8S$ZoZVPu?Kzgtt~b83Vj(kQ zxn9Xw@9_|T{kNbFzwGyi?<9#Di}V^V@M@MHe^-paAKOut!Q(q+$VLtV-+5qHkoeB5 z1iGFkfueCOY; zdc}8=QDLp|o!I%z-EDeXn|QS~fXGKHo7-55yb0eadx~q=t=EvLNuS2e0R49tDhOHL zZxl7|)obkaTL}Gkw6)fM-X5ySO49Mnoyb0}5#P!AENFaZ{ygTFqEnyzhZpq$_|=Dr z4^iG@M2&~^8XFz)sxgqfm$lOPR`93g$5;%UR7f1^&e&@SSbf-B$YpP}n z>Mp2(Iv1n>qx8@4VYw$9F2i1K>ONoN2~)9zH`GQYP5NjPG2rMHkfoPbKCG zd?)MM(}eGAZT5c@-#PlI7-i%2$s*$}b^Rd-d}raAG*{FozLT!flcm$MZ(Q*7MC$a^ z7T@`?fbErRz53*A6;#&PVQoDM?=t@k%egaz_?>i7f4*M-{yT$jep9ZVyQ8-GSwH4; z`wR8@lc$H${-&b+zV;)GoZ97Q4HX0})Cu}5J$QyxM-n|DIuJk1W)>{gYaH-M2rQV% zRn`IDNkRcZ;X4U}&ZRn?&rCDZ8Nk_%RrWNobauV*ot?9o8O!xbhK>!M{SToIzwGyi z?~D;O7U?yXPBk|xAimR>s|+6Bxxy7x{LY*YgT#0KGn4sMtW)24jLNSd@Bv5T0Q`bA zZkeBTnW(Wsukp!;ReotTT5Bvd{v$$+SWXA9jNjS#aJ}L?V^LwP@f|6Txw}no>yjzv zwgwRSXyvDHOOZF>J3r=f4ZHOk#*PlY{|Zn+$nu^cYTT>W_~}FDHu;fv(SL2Y%HZYw z>PLf!-+6IE(D=@Z8O$$5r~dNWgXh;RjRNq?pS&lD8V~6;zMK^TzkY03le~YHRU^Jr zlEaOz)=5ZA3%=1~n1b5kJ6DUU!}O|OnH)mvl?I~qzVmZ!^RrfDGbdM+OoJS%Qt za_WTdTp{X@((8X}QV9Im9i~Y`ZSkEI)2aPNeCM)}!82eO*B>IjGf=HEO>gsynIW`! zpL;))l#hW@3w-AplysW#onbw|A4Ab><%T8xg$jmHy(kYK`=j=W{%2D!HBP_JJ zbF1C9$HyUAY@jQ=i+cPcvfS2*Qr(%|UDw4bscNa58;8`v=5)r)2j`!Sq_*m+hS;&E zKs+yd8BOJrAMotAK_x1U)skpO1)aW<)#?$F*m77U-Ph=BNryjY(`zuYmFJIJ%p&EJ zoE3Kl_&hVtQ;?1GTB#SJtqPN=u&TQ}&x;=WeX>Qxql^{b@eLnm zS)o*3MjdXZ`+cj|qYbaC@80)3Z%$=*r8FpbOdQ3G)2{Q0pJ>vhD{1B_m2x-6dy)o6 z+*WEx8myf>wy`45ep|=7$z$;(!84OQR^8e$ba|YlmSmF0>%Tfz-vT>Gd2Dg4p5<{* zriEBUqKVo-_Q>OaMK#G|p;ciY+=9Y<<#CMFvvcTKRf9NmdF-h{0R>8W=gjP^W?>l- za$+R(S25&1?zYmZqXu!`60m&JDZeZ3K>3SA`T0SYpJ-I?u6tuDv8&p08jj`33rNdL z1<%DC;^7(5?d@B`q+ZyLExCz9KAa*S!im08!O$0Q+~Z`YJa&4z?SY7nt@?)jW}BY8 zE4f!O4z^7$ryncn+Y+ZdsGTGCc;p1^rFIqpEspYXo;zl4$~XrbbV%}-*zX}dH=%FF zFyvq3yk4b2<{>&~H{sjNYn|{eqLX`Va>~dA-$|z)eE0eu{h^MSX5ZpgmWwpxPKlDQpVih zHH;c`<5_|`E7J=`;MJkua)CWT^ib?q0u7gfBzV0*%Y*Ebm9}bOP1M46p)kC*RXOUS zVUW^9!g=+BCP2l=s+8qyB;hkC|5D{>QCFNhedDt*&y=6=-8ee7i1BeV#$T#u{DCdw zc@RD!kp$1&k?{Z;97)Dqobu6A)SGhDpQJRlDO+I6z+S!ZFAr81&FK^O6OzDn$g+(mLGS!>AF?Cd_<@l$P{(OGFyH|15 zXH_4o&EWCvm;Oit{Xn{i{xb#r+fE7k-{@qdpA>?b{>7tE>ul6Y^t;XUA8HKx@4-EP z^qcg{O;l2UZ~7C5z&yOkelyfYF>wXfVJhnlIpX*ms=mmJp-xSa4?Bd;fPTaVR+3X* z6B9+_!$MhBjzneK7ExEVK0mTQxb2KdQ-19e4*icaEumd(E1pQ@opUObc9(|3pgfz6 zcPcp^M8pvhPTFnEN#~(z+cs=N0HNJIcN}&?v8~uGxr7a(q|3yhc`@14gxnKR6E2b5 z8zk8oGp;5f@2>Q`rz^@Tt!mh_Sdt&(rjl4sd;nsdv#}T@k~ohVd0VN{9ozVr#dk{p z{;hgFB>tH?>(vq9U*U7izwgk^f`7~6P5jGJ`M3Mxy7I5fqqXPXk-IGU*9*GCn}1c< zlP7roJ@i^g{EGuO^kIM3aPTh`ItTLiVuZ%O2YQ?Mr^#PzkGk^j$Nbv!@11d${QK=* zU;e%RZYccg^J+-^Gs$1K+rYo5XPAGthim-1^a>OIH2G8NJbwQ(yY~E>aHl2z-o>!? zmcM(jnU0tI1+>phBGu+ru;kB$L}>0()jn&M4VXQnv28_Si>k&wi&=-T5vbP^uzVBC zSKNZ~7m4!61zo;D|0I$whU!dI^>?2odjH4amPvWXJ6-*I%mO$A4IAxrHIKme)zQ#( zNv;9klUgO4Q5lFaT$tSJD5>B$ED1$Pa^YUwz?5vun@1awsuMAMYMu$m$aAW1(@s5c z%J5bI3;KxtWNdk9c!#W$6;0VX$%~=VV86W=vkhNhYv#oiYgcH_;VX-^D}~yXY;h$c zW;`B1?i@tr|%q`y;@O9esBnDImn zHAkn0NK}>$tP3?`h?+5=Mw;o)=*ZJ1+ng{_Z$$T@$yB3q_bynTFuB`%o+wkF0Ab2t zx=qJUd$~VtZ-#jO1>*(mQayejj*YL8V`aqj;yVP#mN!wQARBaXAEJPHF$}0s*?m2| zA!x6$`1`2%+tuQ)*NR^(ihoaV95qzn0{6G62I_(uYiLO|xJQcy{MuM;K(SVXC}UoX zVp+qsU}|_D4=Ib(8eCcpdvR4CC@Jz*-@)1#3U7IXs=lVq>qIrWT2K0`UzlQ_ht9Kn z^`pBn&V~6ynu5%qjC59?q*FBWr)rOKA@=3jqQu~{Q27^sw&TyU__G;4b;YNC380^z zekrhidLqZ8pT^?5ZEW%P=!9saequx0zkYh7wUvHq6LI?V(_as1`YD<^B(Q#3 zbX8q60_&$6(uA-M2=}9(UV&pE^wXRtnIOOV$yO(7SU+tXRg-?&yd$7~dYx_y{bZUx zC*J`5H1di1&`;5zk!Go=MyEwTm5da{zuizRez7*TNk5YYtgC(+rPgqrRztB?Lw)I| zKSzi*{M^85pjaxIbZ8WVeiEIh>ZhH@p`Ts^JY%h&y5m(Z{q))GR{H5t?2NNT$-`%% z@(6!s@#h5oyceI|`pGGO&Fdq=1vZ&bj)L2wB{|~AB9oe8-0TR!6XdBnU7dfLN@{8h zn^EiVT~|{M*Wi35Y%HrNHnifrO{mOp(#`_Q@UNoI!AStlK5JsapxJDBcDzHvIWf%4 z`87T!)EZ&;6s(EKM)ynQd5qIH5uz{^HVACLG%^^+>DN+?2G<&%FV~}1>{AINqIFUx zX)e`_xPyAjS9#4-%^KB$+|!r!SDhyHcVRRtkKHB&ZmPSF$tn~?(w2^{)?dRy*Xb(- z5(oNVc99`EUcxd34=>dmR0h@qW#xz!C&ZZ&IjPr2m;zNQ%peMotQKsy+L|02r|%uze_{u$)nR47+G z_JZpU;Qw?7Y69W6uDOF&LK`$&gF)FEsI@pNos3#s$ zYq(3RVXs!hHhf8ux9FOP`u7mM@;z(;gANw{ZByLA=o$10`m7^>An0I=SC`;bFCCmZ z96|)-Hy`bVtF76J_Ti&OmR5a+wGvXs$M9LG9Olm|{@l->-{KR>xMux3VPRnXd-r6I z{=E|4^;Wa~&Bj~~6Var9brVt5zcrYM1(y2vw-ai=?gjg}Uy18R7q;H@@5ToV`uB%| zVD#^Z%j-%1HoHlP^Qq(h_3!YZ2K_rw(C1hGmR?qO%2@wS7fg;3=(9z6{`7BGyy~TYw_!{M(7)3bk^Y^G z&qC!v{=A1j$MWYWd_w;Q#3#-8XENyfGuIpcY%cK6W_8Culc@cod;|VjL;2q8-`{!G zzgIF2YFPiCt4<`zZJh-vOMr(u3zD(=jq?+ZO9d$luns;QU}v)Yqa@$ZE`<+)(oUel zqMR-7>IlqpoVVO7|krVLk?;r|>5LXjK^ zH%H?(oo94SyGT0i1=lGIsqN1f+@jk3!f{ zOSxYE%TkAJo;?hPZl9cLB4Xw}AcA&1=L4udn><2LkRd48s#DM?BnnzH z1=lbK^fMkdPI{S|?{pY%z z2I=-b;gOjwq}&q3ApF!I^B_hX7WeYdgUira2*0A!2=1t;#sYj}_194P&RiM>gSM;O1Ymjk%~yr@Nc@5a7eOUb4YUC z1Ry$PmojP^MoU5RE|}h#Y|qQPNH}7#Vj)otsEM9)%7{Zi`3~E_O=NMOOL8M0=k}!M zUUgAM5;nkB<0&LH=)yG=ui(tQnHQ1qC0^c6FW=5DZ%)tc6O++O@POhlsvJ`HScQtokg#^nwKv`GmS6EBin$r=eI>A6#-hH(?HLA}?tKDJp;Fw>KFITI9e z42TG(dwUASb$qO(0H>2=VxDNygv;T>aN8YTc6o~IsHSu0a*L~_-0Jgevuz|-@+Re_ zl&(0H4@Vqjz97ld7T`P$-=X0|5MJ&|w7l|OT1N*DB{_KsAChr5@xx3Q@%+8){qD-E zagXMN-iKLZCpUp%2-9uaG5C+pgkveT0cBcyQ06gZI$i=7j!80NC=zy4n9E1XiF-N3 z1JNUm5a9uN7#vlVhzJXuQUJ{Q3J+$Tg7<3hMY@6@B$YiAf=;i)JKNGtq^swk-e%GsyCtphayJ0YzE2p$2l(|JJefJ+b zvU)yEUhN*jq^P`w?_0Knpzr%UcG~p)tZQim8}$7vXS54J-*?>_K;H(V?;DHyJ^H?L zNcAuIBtZS7?-$mn@AEK9!2yrHf4ONW9O%px)JET*++RC=Us__+_wUoMde`?4!2Pt) z_wj^P{{N}(M?73-egDoir$gUwoMO=T*Hi_k@8{qpAANtuo%O8mORk1E2z~$7Pj%P# zUqU+)(Yn6BC0!6)U;4f!=&ggk-;s>ws`~z4gXp_|eZRSo^nL6^()a7|Jrw_BQat>J z5i|l#@wu%yJ~yhWY0(%m+Vn78bs-?2|6}s0+fey`PU7+n@wsET{Ipt?Z}P8J^d|pD zl)syz8{tbtWoLB@%Qz!DD>f`6T$r(5F($#&e-oA8UzESlQ~pC-ewM%T6Dc-2+9?;% z?l4&OuxGE@hHqh+E%0pzeY52?h81I%b1LwwKbfPp8CAGmma{axL0E%cJCbZGBOWXs z8J2E$7fT#T0z@|+7EZ)%d^NYa(WEny#hHU6=RG9vNnT zrvXaYjQC>Pim(`)ZAC?L-j0mMxVEV(I=$q(@bsico9wog#nN3BZW~ckDmALGyGxVu zoAq#SuxB4>Aa9Twm1oC?Wv->8y5i|!)s`~8Qvy?_M_G6rnu?GY)aP&)56JG-#0RSUqwFieziOR-Crtc15XZXiF$SI*=rM!zlZsH#`U+{0-RuBJJzD0zp zDMlYL!pN`7h)HwE$L;c=B$<}vQV@#X#8D0rB=IY1fG-GRp-^GvGF9ToWM@fXnO9MW z%sEN26qO{G*%6N}7U7iV_ak$wpo!IzM%&9UeEyoS-;H4?nI33~+JK)=`4VfGd+U|;_}<8!a5%bS?#ag0Fx$$8>3zamX5NX61mJjpR(@7>$+c0* zq)Xt4^Mbx|!*^mVxo*O)N)-9uaxB>n70MU)|KXlloM?LrsT2nFzyOh}^|DLB=lS>V zcPH9blzVBKXb=ERbLb5`G7*pXa@r(m+dc=U2je;BwBQ!>Oe&{m@FLv-pv^Rg>zC-Z$q5Hh}Ym(#ZE&=ndxX+8f;t`df;WG!A1(NM&b?mzHR;J;F9P#+ z-s8nz@rcUbxYzK=yLiNxzb5&O0_BQ~=T0+!S)7Jg@ORXwLCEiwJ3{6!S2)9)zlYNV ze^=e@#b1;B≷3O}g8Qzb5(JwiJ&H!6Ux>HOcSt?ci^BJQsk!TE4D`k6KI$$Pi+_ zGfQ8ar{Iued9TpJPFD`ekcb>XdXVzU^VRM`WO(Bw)--A6&$hhYWShYc!0t}4#+@$2 zZ%esTW5z`~Z3FrHpMcx#wy4IomWU~LO>Rq)08k` z8@e(LFB%qndwHN}b1=Ilu6v=2n+dGz+k3@d@S%UA5YpX<)dGd`jC(3FVp42H2CLs zg?u~&e8(dnS(<$8IA)d)@uDgp{XcZY>{^Y01Juf6RHpzkE!*%2GZ$MAV0TJknE_57Xp3p)=&;mN7>8 z(DlavpbdWYN5?IYk7&GD2l=S%K}4D4;}TLSzWU<_Y?@Q3?4i%V`eV`rzw%+$9}!Rg z9r7_}l(l@^?C>KWPx_aSA^k1o<5a`?kdKjZx_p@Q#|;-iKKig7r_C?A{^$f;$|xTu z{qg4}$VV7ntb=@Py3|KLT98Wdm5vPrF>=bVb~e)i*4q`!?HodAN>g z)3!1)ePEwv4KvSjf!Jn>{VQOo~Ya@f29=wZhUJmLWB&M!ELBO zS#1OOVb@@9w11Q2mDBC{J_{BsgDep7m(`f5{+eyZQ@N^D!Xh-%{ZXgiAB zli`^c(;g76=5z6?)P1{w{yyPnWFnM;XRs(4%k#y8 zh}y{WhKZrbv(VbAJU_4z5;TmFFi)al09A2a;#b@4L}H zRNX^@VxY-E9H!npBeZHPn24pE( znz_lA_auHeDK?+Z+Zh_F(HZ2j?V2;~|d!{Fs+mlVY;cF=dR)ekc|z zRuoSs<*p+2gNU|Y@ac5ff&M)tg3S19yT-Pe)EsR6hKHdSH}J?(`##b(^If{`nIPnW z(Q^J8TtmB}lV#yds(zwNPXtWtqo+8C|4XcWCf>1|JF?9zM z;z%f_h_h`DF-KL5ZDdMfJGPvXh0yqt+`wHJi!XUtn$#FiEl6K{63<-| zm7ZIaiu|O6%v;Nl{GE_aPyv==l41sgt-1&mB8?>x{#Rl;c$CCdNVy^in1Yy4l7uG^ z#?;C#Zt^us;)$aqo$Od6eFv{A?*V(Ws^^c+WYd)rPR&vxypap2NLTB{>!CnCx*7VVYxa75Ma=M=s%T>AxtH-= zA$kz#Lj}DK^x;r9whn0!GWsxrGE1<*))&f4nD?B=ph0tjMYlef079e)SPc;?U>n zM<0!)dJOtV7&NLriuwS0CSiz`J~A0T3s>X0v+7!=+*_c1W z@EL?Ydg}Jj^${C7W4`v*M?u*~i^{$2qwX8c`l#0S(cD#a(MQ~<^KP-UkMghjd-PH4 zd70G^#WZVomTtk+INILx@m)7eboI;gFbrxdQ~5F)?TpGN98LG`si+Y z$J#!cev&XP*c8PygV(`6dcLF3M~|1N?J$y6ANr_2DhOmBja^tj`snixW_@I`kFr-l z&%A!El|B;BsrFGMJ(r8;y!6qwXn*=>1~NjEKKdj@*GB>EqZM;?eRNvw zqjhfzeN?vAuReMfi`BY))B^Ogee{&}f^p#M_EGP54f^Oyr(b>a>(P4BM=j0~`slAU zr%4~Z+0L&%VoA)LS3mkFnd1}rM+G;=L@~xs`;cllk}=E+TNNkE3deUI4-nsZ}PR@Q<3dwL zjvf{8PTB_)@r4aB3@$Ek7jlKaXo`iGV&FWqjzC~SoYD|hjng%|D69bo$lnid)>ZzPhEx;x#gJ9y?-uNZrzBo&hGTF$1Y|Cm+pc-BNL=md|rRJiDlK@A2<@*P#DiudDnq4T&c13lmn;f7pCZDIRF#enVJM7Wxli zSAO)LRU^FQZ{2J4qyPF?k@f^4ernKvR~8xN&%}XU*i24YH^9h&Fw1JD3^2%_C_>YJ z*(l;+6yYm>CVye~tEB(%+}|UALjQdnK>pgkW}!M781&!Ly2>BZ5NG1PY4qQMo$!=I zyOH}ddRuk!sYHMBcf+d|jqsAcD@8-vLkhdtkH+h6}HkR{L?xep^ftre`r+0XV3qeowu)iA6w3}1J^n81)1ml%x)6+fZ>2qm~YuB3wcb`sF@hqmY zU}4Rdx{B6(#R55z^iFPl@VgN_A!Srk!S4?tV$4D?F!!Z?9^Mxbiy(WS6j~%ufcIC? z{q9>?-kKoar;oPJ3T?ykOM}cx1aE_J2uEnmCE39od$h_OTONElKYZ{1rpkAIo%nve z1>XA6_b1R~PzzGvBU(^dOaF3xs3Pq9EqmEynqlzzLpjk&H+4 z?N+5P6mZrG?A%u#W-d7#bUmV>FqP$Qc=o5-Y(xW zmrOn6D_mQZNhrAP^X(RzOLD`-7<&dkFy9KpOPz1a!7k-iSap?CaM#X^)W*(?rXZKb z;-k-7+p)&^b`lEm%(nyjgd-`^9PXsgx4sPD^r|pI_4&5lMdkrG>{lxu-S9|#@aQep z|BVEXCgF#t{SYf||00X_L+4jQFzh^AFr?T2hUfGdmvBKfo|p8K;71vaN8j0Z87{}C z#@h1!L-#E-)K+EbQf3f`t7`Kf&O=-KCl=4lR>)SR-?aMR%JU?uj)sCOY4{-;ifQrQ zXARTh4JwQ7e9j{84J`VOnncs0ksmZa+H5mFWOkGz#?~}HzD1X1dm`q?czu3++AnKd zORQK^zQ&3*=TEH<))b)4$|Vg1Ym)Ipo463t^pP^+St~`Ac^-7rCC`Y7izlp>+Jtp5 z(1c|z4p0BbYrH72=J67H&}zJNdbmEC&lA?AVcdLu!V*fQ6ZMj-^=l7c!ipf<&UeBx zxqY`k4ej%F51$FE8)+=d3F|9t2eU=_oIkhn=O+FvrBCs%hWTn}qG`UWrGMD=1J8VA z=^y@QmX-Zto9XQzJ~Kav`Kkv0@Wd-@zXb9R?{o?OaQ#C*{^1*4#C(+z=QCfifB5w$ zX8&+YrLSylQPNRx-RCRz4?q303yLbW^bgxEfW*88^DK~mc;QS7|H#WfECb&?^A+v? z=y$&I^$!dF?PV~I>uer>OBE{~4alkw9APhp?ZpMQ8&jPO%}^AB6n)9k0Le4!S8%8p6(!Eg2tuR1CCZS)WCm}i&>HUIFf z8Go~X_~(l%-vj!G<(&lIgYyrcrl*k4(|lV?|M0+jp83|& zKm73tE3-?TZw>z8g>!Ry!+z(9`8K?p&wR`N z;g(J2`F1!?J@&Qo=cC}dk1_TS?>H*Pn3aFH1ng4!!nzFPAKqPP;U9U;w>P06&wLxA ze^~Imm%Urv(L4a-`4D7pPiVq}^}!?d53l+|@W|3XynBvC`z`##o{#G@uE`&&yMH)t zk(Cp)0Wh|&;}LUMkv~$4lflRyt+C{q@m&p0I33xcT~o zW%3Uny&V(Q{tGN8ER%m|m!W;u;6bkmt0`$L%L(g)el%gd&!5Zq^Hu(QnLaK3!^MPP z;G`=`Qd3h9d-l|)tU_E(%6G;j(h6b{)(?j{Y3qNSWi1tGiF9`0@x`{hpWysv7x7k? zw!A&~fg?|6evZGio8`;*iQO1!56cDkp4@9+x}CORJQLYJxY&6HU6enwzuf@&-=8^M z9sd|hGYHa?JKl3K-ZjK$>HAr3%80P7++OuB-p;bocGGT_*t@bKztuT*+RE~91G^h3 zj~gA0N@+XGb>0t_l!dp0-`?sRhbInA-RaV_pQX|Rc45!r$}`&l4w8$zZ*UibE924l z$Irzjw8<|2Ug(f#!(MVby3gi4L$UsoBL9wk?rpiPu`Zcj=y1KjH{>(1{uHS#5havO z9=0kL+){?q$iey#9}laYj?m;r8}F9Akv3z&raVb8@eX+b*ORaS;Fz0FNsw{}Mn+b( zpv*rkZ+@g4#*UGNRgX(@_+czbwUfF_QBukAM$Ux8w%iYacXGbFQkYFgC8XA zWC)2*hOmh?)6o#8CQzfF9)w2AQY1t*%^}Yrj;kGG;P@!P@t+QhhAuWX^r;(s>hpj^ZP1c?5Lh*)$R>$Zue7tvMvPwcN<9JFhoT zjZ9n!X^q^9)3`N=wzjNdZehInmyZEz%@pCR3uMP@eQNf{FD%nSKE9@nB&(jLT!#2T zaz6jB){mps(|GsS{^3Ge*8EECr!(cWF1y<(qMcb6-FxVG)ir#EEvQTq5nHTO%04f zryOz*iR7=YW``u#^^wTHZs+X2L5XezU^I7NyK0B~6C!!}2_DvBbk8AmD0QzO6(=Qp zGFhd!nM&_ABfTqqr6zcJeTFuOBzbLhNRkIZkqwH%;UJL{<0N^r-Myet=o(h?D*Y*9 zPM{`?z?y<1m$gQK4FS&4uM2c66VX+2AwpEH^Q)5Ce>xP`4aGcTq( z_8&BNE7y_AbyQOwryK?Ai7spXO)5-zNiCw-$mtQ6wDinesjL|SkI#PCMpD(^*;&o7 z^0)-WIb^P!sAZ1yR;$uf0aN?ZJmQFnT5Elhx{B#NQYA)mmOhe~UmPN_b7(Kis^@63 zNs`A!rpTuX>EubtAs2Bcg5Il$yR*5fJU(BPYGZnjJn5lVyj8$&(Q1*$-m%mNOn*g^wlANDUWp&Tbrax>d9Jl3;!Hx>vt?EOqdiy6KGmGhItyLZT zwki*g;X$kUpW8E9EzUImcMP>Xr)YadYEQqzs(mvjo2#8I+NN3^<ri zb8h}E%2#R^Z~+Mm=t=Zo0U}$tOm+6h^ujeMQ<#F;5Q^ilKuRh*94%>J%NvVHmNvJ+ zD%m?ZAOw7~z z%MbsC3;w;Kh*6ZL*V_I_9hldjDR`8aMI~$fhKr;N$`&RDB8bQrGy1<#2h0Z`GsKh(MxK1im_!QVngI-Kb#)I^&%YzhneW{}+KgghuR=ew}5y>7ewVP_hMXI9u&S9T~E1oMnH>(V7E zo>;ngpI~XEN(-~}OqYkHQh_c}9{pnB5AyiDK`o7&uZ@)ET|(sN!7<+a^rO$z`QYmx zL>t-}`FYLHb>QdSOab`W?0AkN5`7tETUnOg9ne8~fxVf#jO4ZKnA>f4f9S+X8xmQz z2(WcKa@R|MWMBe0;j9BiaIDqN%`@O3FpcObGL0^BT^FZx@S>mlp!aPyNRVzC@eA@b z(NcH#;hLrRK4O2UluM|To!?vZqra)tOY*}o zz#kSn(w~cM`64Ht!@EP}#l+KXpj-49?F&^kK$4Hqp2&`bKODAe{tyQbKE}@}-!}tF z2*870a=OA1M?__RO2+mQLfo)x5?6;)SgCrmTRomk+i2Q(DNV&9=5axAayiv!=6&R< z2s``|%?|I34V-~U{foSD82jz};B@oMRyo+!nUuCIuRTbp3a7i~%7hQkem*<-2vQ!W z{4h*-^C$7D>d(gF?|7n%9!;Z1v6r)%u0?PC1z+QkL5f8G?-l*8=`xn0!{|FNDGJ#C zY8je>Wqr8zrdsqrcA4e=Z-)Laf$G_*9KH89xFRmK=N6vY=cZ9}h{Gvg5aZ!1jEBK- zN;8!TZC2uzbmf-pCdcM$M}c?&KBjOzqu_eB8wA&lHvZzN26N0Sg!ShRjIM@%Cd%KG zd5Mto*S;0J+Dq~RJ;gPAcr)=zchAI#vtyLNKf{Par%2@AsYTqW7NHphT*M5EB7j;* z%JF|ShR4nx@LzD+A!6;|nJJ?qs4FWFc`mBSt&W`7S|t~LX(F^lO2HDMBztO1Vpzr$ z2btoztBCHfjC+Z-$|E=9#Kb#p9!Eky;U;Xx>Pn5&*__h|{UBb#qeF&PyRlJOEbUen z9fs*3DM|ha`fFH{j7`CXlu1b{M>h==3t?i(VjnmObqShI8&5{7LrCW`*EteI+)?Q#wOg zi1Vdr1Fk~S2M9HO;2Venwr9mp;|5#^3hO_(FEoZKuj68VBH(7r*~us0Y8_h3`K2{RX;d#P2V^R>SXKZ~Zsp z_q2v$iQhkXMsWCj8X-8{XAdJ7#tOgZ8~$MP=e`o!Ac{mnvs&7&KF8xv>i9j^ldxbM z>aoP{d(c*rwZ`wyRtX_@RVU=}Rka~xDRwn1tf~pWf9Xrn@`c6<|J)|dRW__#_``oN zHvymR$8~w(_r!7F_rx$?{Qg3<-o?gxUn#1op(=h)Wg75%s!1uL9SsE{ZH;#&qAKN` zFGPFESk)QaJk<6&xh~P(5b^uNsn+;?KyIDdEvQ~@qv*x%KER zI=8IxHg$bxhFWuxvF1IW8016L>`y+(7>rUnaBT+szN)P^esA4=6~8~Vi`s9*@29M& zL*re;sPRGJ_cOR=FZ_Pb$Dy{LD>StK+)upmd+YYAc=)NEqW>$5y)gOxI6Rp=TbO7h_ML>yraivUsr zzo(ym@%t=#)qvj@d@fk7HG!?W_f~Z<8i?9EHQ@I=KU?AVoz*(DZsj^sxend!qdKhh z8L2Sk`_BZK#YRrA?Q^bY<_ZSCpGvzg3Ow0_-*W>s{C=`pm8J@q+LwxmBPMFC^@)mi z_T)ln`&(_AjS7|6tv3>}miWC!FXQ*+p9;A1ZCeBUD*!0&}vWP?OVxDWqS zc^=IL8S(qXD=eB}9sD3BM>lOXNb(#!et&Qqkxy{}+9>*|iAAl!GH)7FV1eIjJY)QR zvRbJDzkkn%VKw3RJ-Lv)7!!Wq{BjH81F>vNYH0GdW~=D#-9~v^+1R4iU|BYZDF_O` z*O*9c)_hFe*cMRnPP0&+Flkd3&hW<*Qxvr9=~@GWEl*8 zuQi|X`(7%!hm6f1`HrXgMx7iCe*gW)qW#sT_V*06{j}|*Nq+^#@9$M>HKC+;hFjDc ztUR5dJpqHo?=_Y(e!q8%;D8ywf7`=S;P;wD)r{ZIRZGh@^7FnP7A*@TPZx1(f?v<= zpw`;XcMT>6o_74c(;xf%;r9m!m#Zy)&l?4OIMjsS z3p>1C@%sySw=7#;(D*&mwP(JD-)mCD_2#DYB{~C=^@q1Ce z4!-|XF507Km2})T7+g4a1lK%ieUV{PZMwaem52_lp{YQY~2FC zr@DdPQ+PJ;d-`R@?`e!{`2GD?dGPy&S9;<1B~|+j`2E2C!QuD!+-Jn^FaE&`zpsGD zbGq>RDD2q;sK4&`y$GvU@%u;K2Yx^H_k9-l{jxHMf+c=G4X3&5`2EsmR``9x?-{>O zm~6oBpNEfU#_uJZ?h2IukK6j8rV^2$)*KyJ`RQ-_+;~*I|GBs?21A?srQC9a1dQE^|GOl4GFCLFi%@{8q};zEC$_XjHL5XD_alS=>_G^?9_(C$mBy6y$`1$0d`Mo8rGF&w(nvvZ70MfoKaSWX6=Y&V zyX48_D`Ukmc{(pRI$bFbfXX{1*US8Z> za$t2UBzejbC3xhiiB$=KcN<>|?vEaho9qn5$S)3t+Z zl&9|Nz2s>%mcD$tV=x6b_>-p!LL!5eC!>1GIhaj)0ueUbAbF&nBst>9Nlbvfu;7;$ zlZCsKKh`e^qb5oI5{vnX>JF61AfrRuWHo)P3h(RbW8dHhrH}2zUrHYv)7!KBJPhBH zd%5-Wv2vu3^&dzVr;evT{43 z8X9o|*;=0jvH_GqHi$FGuxFN-)zuZ~LWjF}Kz6@|VVOsj!?3@QKbB#m{INsbkGRX| zbajN{Kb}XI)`3~nv}E~!DZa~9L{o`aPe6!QtkP#K^|%Vzu|{7qmSXJKTHWd>&|feu zChWE4u8yQ2i)5cpz4Iae)Z zn6C6w{}N$zziphBx~tPmei^ zebjPC0YB}KKO;^4{r7*mljQM{2s}x24Q!BIT%JuE)UWK&Xr(sQiSD$md%Mo+)$HLaS8S%wh^0U67w`apD!6Xe+5&rPW5Zf~xyLhYZ5$j|3 z!r1Um3}Afs2DLuZ!ou3yJ>=_&0Riz{o&JVudBw*5SbHKw`k%ud+ydYHE>M2OhgyEc zV?}~%6~(ENn!M|rsAqX7KkzdHZss%0)Vwj`z6q9uX&cM(%h_^-x4OFUhdw+?Epq=NK` zXZCuFT7%`^YuF!B;ORfvvjQ>m+smmbv_1%CYV}#Juj>5V@}8i-$jHy$>nth` zmY=sW5j=i#q(~GSm0mEOK z!z77oy9vLSO&|^$PxBZ2p2orN7h(T$)*o8%`Z6rp$o_TVR*cj!SB(kX-J_U8 z5OcUWmFjT0I1K)gD+xvy7U;!V7<>$Zb>k5X9gX<+IF5oJW{iTz)_Nie9;G3pooe8a z-*~Qzqu{ZN1mbvyDc@pKAFFwlu1gZ;-#BH* z+d>8w8%OTX=szz>@`?BG&WBLtVTM|sreoQDc(ZGW^3b8DNgkwxZ!*q7M7)&yh(JBs zIOVGW8hoVuws)VqY+y9D9arOwalD{y#zov^t%eGO<1w*#E|*9-C&Hq_!X{XsTpWXl zXeHrIL_Ps(kU7YH5sx82OdMptWVv9KHfiyo+Yqbc8e}VrK^G9DPy7(Y2$0?-%GW{q zWVHruGUgi6xCY(r5jEKTf%Fa4BC?JB+0mj12I=Sh8leT*Kg~h*u6A&Gls`YW1nHSv zyZb3ZH&Y5&j!1g}sP6}q?tRp#ZkM$eUvcGSd~(2j^H>7xhjPGugRUOHo`+)8XAIcW zKFkQX|Gu*Uuy246dIa2WO`<(g=BeFSp*)^OV7;NoCnOq=KBrP^Jf)x?9#T?X??QtP zl|b!AqE#T8dee8{5(w1SJ#Tvv3%9HFQ;UGIPW{>l z^b;UKf%;`{LDF(IX5*&;F9R!EXLJxiKX<_T-!a&9{vuF6k$7{?W(N9i7$tyyzV<%+ zv_d7}55WD(<@Blj^V*M*B#nV)5MvFFBho8u5~y|I+Z1 zQ~UpZyo8W(3%sP{%i7^3SzdTa(>F*v8S#?dg%s1ED-P|28t@W5_|h9MS&G3z6?pKH zopbb{3BpULf*SFX(P}9kyd*J7ge?S(m$3#meXhAn^p=l(faw`_r?!lt`%9zM zLQQx{{}v&Nz^QJkeGncDUZS;%@sjVBidKb@j?#Ltncr4v{)1OMqu!pmYH=pK{ue$QEU{YH=Bh>|Gn5fG9>?Bt+m2f z>&@S^7XnOLMgvZR^|yZNN)%Y&B^vh_FWL7W(b{aaUN*37vJdzC<0UVtC1@s^z{k!E zkzf6oTBE-o*gw5UtyMEUxz?_G>cFqn*b&?UFVVQgc*%-a1h+I>p1Jj1frnc@3c%xU z`x`H#)iM_wd%ph}A@c7O_To0nTVTB8;J-ynmKtk4@Kqi7H-#yHytN7vFVQ&5c*$^; zp5;b4oSpCCtR92tSO2JZ$yr>I5idCu86q>6VF&II@sj6W7W_2fB@4c+13xchB5H+~ zsD`^2UP4!OyyW0ZW_nqYCqG9^h&o=vFUZ%xvGRwP{6{Ut)N4I_O9_ORj8@AqNn-OU zVqG_AyyO%%Y5ZI9lGnHR#Y@IB7FkQYgv0x;z1W182n)3S@RDWiLc~j$sJrgh@Dfdu z7%zEgv5+K9f3YN8{EUwz`Pf5#@RA$U@-!XGn*GnoAz zM6gQ5OD4Y{Sfx!`%&LY@6RUJvSq!>>cu5ptohn`;%GdFd)@lvfWXv@zUPv|QZjY$J z?hh~7@w^~1+o*|0SQNo{$(V1v@e&Sd?D(NIUP5&PFQJ$L;3f3S8ZY7CMgv~rYU9C6 z&Ts97m+akO#7joE3IZ=lswcdp<1+@lM2(50-aRdNNp-9G!b?PGor;%?eGGVs^CK&~ zWd0(^f+b#(bfy6>nezh%n-5-6S;Tlrr)zHkTC8FyGvTKdDrfE^yd;7?wSWHN>ku`m zg-fdBu8=|QqRr60a;`8TiZeQ5qg%LFiJE&wZcI~PRJIj~XH_-qS**q|9@T0?yrrM` zMXt}po~x<8i$#6$1TmoO(CbSaax;Plv*^s$ct|}3%#`c~V<=#T5Cp_>f}%Lv3b9*Y zK9Fk(+h0h^z?R;dR&!|Fsk<5x;zwI$0N|a_%LDh(F3lcfw>6HQ?26#hYH~bti>syF z>hmUFuZ&%Qj`hSp>e$&WkD{@On~1psqmp|S+g22&g6~}A)3-JXt7?cSM}T+Z2u;g+ zmh{lZtWmd>D)HYNIumTRXz%u2!L)Zslx2IH)vdjm^Y!+cI`^&uv^TZF*xoFyy|3Ql z)!uvzcCEeAcQv;6yPd(b_YRw7dpnG)Q~%CfeIdXz%zkV|(@fy=AypdzUWsw0GRM z=Jv9_pdlPbLpYj;Z~^v0lTXmlrQmKaHD#lkkA8@nT{5kK$-5NkVoZtzuw-XRVHr)1 z*rE~>t2#rC<*RCiFGW|Kg*y=sx9A&I6-nO;68d1Q(!Ohm#2$s%PWl%NJtj^}p9Ol- z1wCZWfu6`XKlDfz^i(z1=sDikA3b1Cyv`oP{W<0Bq(jb2q6zWQB9!VRP62Oq2pG(n zP&{!ExYus5+^Qsd3b@kS(S1|)6vTX8LK~4{t=(N=Pbkfdb|h3x8U}6*NIYV@C1PE_ zeql#!BO~78zZVr(#UtLX>RE?8Lu2K+#NB9mcCPyD4DH!wMXfMHS49-jS}1rLU#h(I z$d43+Z}`Xj4cs1@eCnw^za)tEe8Yc@?a{iz)1D3Lv+ronTD0ezX_oB?MSic#gS=c( zYLwsn3x&Ki%g(w!ETb_d*HoTdJ+fJKSYu(x^7(Bp>MMgKhw-Ay=Qwq|1XEw)kfAr- zY`+OX^K4veW7H`hk>tu=M=@0{5)S59ncZE3W0iwXVypuZ-)6LOZ|+C&8M`sbeI*r$ z=dmXk0_1sPW!}xdn4eb*S)vxQ+gQk17KI@Bf(zmpc?o;p-yve<(zyUy*cJv$g%b05 z6y|l91aU+i*Cr3azV}0-wY`GcMOL+Ry3~8F!BI+sRvgs~cM8>rafK=-E#jRy=z+9P zPhm+oHjFl&{vDc2%AJ-KW}7J!)vz(*m0vsXlC2~s)20fUom|o|<)gWRK}>>1T^Sw( zb$Co{khk*+`psoLdoh(^DBw}60%qz3tU~ShcS)jDAVrrY#$v(xW95p5r?3pM6JKF< zQb*cHjv6`Qw#vT%O>2@R{)XD$r=GCr@2-;wUkbjzSE_}W`uqD#-$MNL_arXB*xxrE zZ69iXw>+zc{vN-*hW@^EZX0U1sk^=^wCL}~c+lA2=}*&d(ccTG3`2iEV^zS1PiO^L z_je=f{-)DV&Hb%s!)TMQ9Fg;}YHz3+sku|4!ZKUXnmHyN<;-*h%eIknr?iWj&`6Tc z(ylkcb;vkI%VROwsD=#LWkkA2qbNlTZEEKuuz$BvJ7bl1cd~DT^Wf>Xq@4W*do@lw zD(4IDz(>M-tYzzX==*L*xp4LK=n@F@n9{r}f;#U;?dXM9z z5l0=7`ds%o4Hrsrlsk7kTm~pt7 ziF| z|04ehJ*)@*)1*xN7xr^bu^;}Y2F?F&FfMA~|E&2&{+sOCWeyXe<-a6vBm?Vh(L_DaSyf5a&tF3YKg#s>hhx(Es-$~N;n z(f~Od090TmOet1g{e`EX?Im^s*~?F|5y`D9JW3 zd2v}H!ijG|j5cm`$CNX)NRl^@1)ESkxx43;5qRYUy@4-{zHrLry>?KbWBV7ogq4LS zgjKcWooJo%R!sYpy-D?VMEHQRuzlCC&PcJ!p4P-&ky~-dUF>uXUF?*T@js==0m@Qr z13~ZnrPKu7QjjZbE5f4&#D}-E%`3L&&!T42!xMTqT-PJwtk@JanIb1vJGvKZ*qUwj z#pjT>TcI?}!$Ls8iZEu+I#L2s0j4FW(5^}OV`Acxd;Of^n&yU|+JC`ceZrFS5MDI; zOz{+E$uZcuIsa0JYsGO?k1W*1c=3{?{Ci`1B<0_?w5)NM-4?Zic<*pMeuy5C8_<5a zsbE5{9q!a<*mt&-t?Wc!{UeC^oUYDOP;RhPU!9+KzM1NQp!$LeKU5m?_)c_u=AYmZk%DgjG`*nXSo{Wyz$lGN4+le0sYyyp#X*1@ zNJ{$_Sx|(>OEj)Xu9c#r4{IITc`0|O;=1!Fu$~IiG!1x!k#!ggw-m!H-S$94^B6uc zIvGbcrWYhO$mu44j#}(4C*+`D<*aeqqkR{skkcUb`%AR`?%*9B; zn2N+*D1s!p!oIu#hS~DpRNfYg;}tu3(ql_?1yDlAE6!8Le~CT&5RO39JZsd^zHH{35maXS=Y&V+4~BT^D7CXT1cB6sgzv0vP818k3kH%Pao6{p)C+#C6u-8MaZ z5M6XOh{V-RxcVJmbq7Wkz2AnIXri}yq0l9e8s#lXJsla-?0`3DYRxT;l@fMS4!|}^ zI{`S#DJKGG`bhb8IV=m#0T{ZQgv>Sr=O%+7E&e~H*du7R8Q0T2-&G>p?Ca0M{v^G8 zWoOHAFWI?3pFe6RJ&V&=TLmpWz>@>XPaNp`XUk86mMlMaR);1($KEo?&!h7_@^k;y z9{FkbT8;9v4CNT*XM#~l8Dz&#-bjB~bV{R#yU@h97q?t!EE<)5-1{Q%~XsPz3uv_p6a}qXKMkjmOtP>dM4XWCSi{b&z`lL4{99n|) znMmzP?9Z_A59-@u5S31c`ZmJpxVDuQ(p@EFE`oi#my-=88kp`bNzXmrXi_+4hzgwF zE8Vq$p7PulRtVkRW?Q*gEyQ!XB)y>djZ_~M(hNE@;%fX7g_WoiR9POg9#>nkWeifu zc5jfB55u{uLuOl?%x<|1bMamYoWA_qW8|kyI|LTl@>0N8XTg2T@xMrNW$uNmQXL7$ zBXh4~4Y^48H=PffX<>_MjNN4xe?SVos;4A>E4G&T8e7YJt!^!|SjqnnRx=9VZRn@U z0NJiku4kZh+H$F2L=n0T`^YRN(?HYv0}fZa3mF%q56p6zupFjkgO-Iv3w^`>Ha6bh z203nmgv<2ZZ44w(j!ihzfakpSx7jj>;NA=@9b1f2iPQ6w+SDugjnODjcc z1_jV?vTmhFE8Qu2}d#C^uND zYvKQ(^nm_P4@>{&IogZvZ}c;x54 zJ|6jLu&74)c?;##!2v>`Bm!F_J3Xp z$^TL9Bh~)_zH=D(5aYw=TKPYC9Pp5(|MLc=Kg=Rn+uQk3-5$5_fy6T=2S|TlFW7pT z{Ge2`AGAiHE`}epDP8r0N<4lL5b$j;8!SMhBecom2W%jbM;>Q^{j8P zA4Kb0o8I-TZ>3bzM%JfweXH-R0P9=*TVQ>w$lWEl^(|g}^1Hr8%?@FG>r8chtJ7V) zzLki#CD%GyWcBjzJnLI4e+aO?)ra4-Uf-gHISlAHdc<;l%Z_aeNV^8`@@`msde^s( zykHpJL9A~*zR%mgn~E#G{@pVu_w@O9{ZM)!|8C6%Uj7~Rvoh%k-M>p!9M^i*w^sci z`XP{ix9R!++y32C-;>Vv_;)k$`@iVlafiM#NBDPp(3d{zTe}bH{@uk*t^B)BPbFaN zV}0w9g$Do5e*L+%Uf+6;*0(CguzyDcl7BbiJMfMDyW_Zm3dQ=?)wt|`eJd7s|5yFH z!oB}=`}}ONzE%D$ddAYfvtHl2dA=~uS@Z^Fd(87|<2>g1=qGA4&uu8jXr9;7y}Q)U z`qsg3ykzHpY<(*g^!>B_yKk{V1pjXKp3vl{?L340obiZ9ep+1Ok)KX;YLuU?PnzW? z#PzLnX?^R0Gzs0tf>3?)~FYG zeM>d#yj?uix6{o&lY3Y5`WD%fV);reWoheMeR17)eT%J6uk|f{66;(0zNEhOzrI!d zRQ;}RWl(*ZQx}nrU;fv($TEf(N4C3XeT(#}d3~$(ho^CUYpHCxzV%=xEiGBCZ?WDV zy{A6cw_=zE-}SA78CL6COu+V1Uf*J;sCH2}U1)u)({SBN!TOek|D&#Noj|8pt#1jx z$KU#vujk{nzIDxRp?Cs#KEs~;JJz?3%=PR4Sgvn9zRSn|!4(Vt2j!kd{|BW9^ncn| z`agNP|05|5yJvlC)lShH0sWsR{*U`VpObns_&@kPdH4FPcpMh@{{tqtuU*C$w-Tztt z=Tj^D)!|BXON}=CBjWpdi1n@V9q1WL|Hsez)=dQl1J*IoW5A|d;4xrt&#TdZZGm#? z!2!C=&-zx?b}!-i-&)^F1$qB$|EB~t0r@}MLX@92vkmgo^g)mOG(X=XKj+V=QGPy| zWtN{19UxkmQ92D_2Wb6Pv>~7alnv0PuJJV?`#(gLVXip`zkS!YdOsSH|5I=4TchUj z`WE>=-p-GTcI)d~^o+>?(jV9ht_E7)s)HY-u5W36(AOVR7yDn|I+Sm)0PAOc>n^HN zbA_7UhF<~Jw|spect#0eTm$6#R6BC3BPT>5+8T>pdx2K&Rkn?X-=eNwy?0}K|Tpt7a)AmlaN)Uw0l}xuv(}*w?`~kE!7jUmU7;eD;a4B z)0T5W)MJAgib%*>XiUf|z@i`}WYJzFaTZxw3zgY8Pf}^P z-(uBjA$kh`QSMZG%?B}uLiL!rolU*+F$PD`<)o%w`51$v#nWE-7=u0e z7}yeKVtXxqlkzc|Qa;9D1M$B0Q4RJr^%wPwDSw9gE7GgKkUvBH73tMq$e-b-z4~jAr@s&%5p4d%0QoUFP}~2 zsa65?awGgU_cHSEI-Wn{Yqu896-+*)RlJM;{5uiv;>0F5`mnR%oI=mgOYXJ9E^p?+ zC-R{>rj==fPvk>c55Dp0;8XLVs6S8d_yeId1U>ms{>R^kov1%MF8C1qPcCTHPIN~e z{iNS3TOMJ1w-MZF-W0a-?VV zvG$_cH|_QMgnsm>$6t-=vCH|;gPwjlSnAa;U*UqOUmgZ)PCOF)B!w(ht6s6n$E2t* zq)tAE(lva}qy%U``xV6`$H46%!|_iGwukbpCLE81$dsA4c`( z=?|m!^YllgLHT+22kSm_e>6xJ{Xyx2zZ%mA=Oc-b^j>?Dio0ckz^ZPCb~9mBq!hR8 z)Um3ZN`Y17L+v5|GfPcI?Xri!DjdG5Y|CP_>c*HXdUJG)2*)l2=OQQc_5_0QIjwpm znDr4spCKPwX@}`m!g)(^lAKM-m_VzgC6FOwP&NoblR6gSx{6wjgcnJ(u^}sU0`8ho zE6lo2O!eqvHNN%&f7z)6e9}|N8tSX2r>=&cF{h_O(t4tJOGyiQzAY~Pr_Z-%cjWo@ z*m`uDif84+-Y-=1RUrw&Iy5D$k|@obM4}}6KA$JzvvHOirNCo%;4I~6a}Aa#QXYM< zMp&XZN>gF2Z6uAh8FL{c9*IoB1`(P-+GadR_pI_(yLLd>_7Gp`YK7*Rr0W7mSFb5# z(`oobE#*s1V6~L59S_x2zS7oN$=5$AA9{UzmaheCLzS=28Q${s?rjG7nt!H8zAk*A zM)}$`(JWsk*vlYWe)3v>L*%2?0H%rFWB$P-@v{M#hxi^W432LQkqYrEwGz-qo2IZ9HU@z6Aksm205)Kt?Uy< zyZ&Gky1lUR%5phb8Kcm?3JgSF7ew^NH!TAHOmuYfF1TQqOFTmafcw=MU%Q=R3mRvm z5_=heLdNky{CB9EQLJH;zV#19+Tb9Y(%)tjnoa4kC%yRp-`$TQxiyWC=55gyn%~c` zwPfI`jA1m2A4$$femKKofWe$}xFB|pKz?-Vmqh%C!uip+iTvoLlp~G&=-ogL4{?6< zZpV77{OE<=`O)7ZKl)oWKYF1u?k&XYEff?bo8ug4KBIAzHzPx{|Ch&Ylo z%99>PbflV$^4}L9#e2Dh1Ov)LYh^>fgVjUF`GOTpkHJpN5<9N&As5zWC&GqYe0^t)mB@oQ^Wk=R5=_Qh6#qNxggrew%xl@X4I} zJpOPn1tXF)p_-$?U{ZsMD1}&&RJ04pO{(Eq+ee~0aPkxFEn(e6LlSl43z4+u@ zlCdF$NXf;X#;FG8BGHOA?Dh+C0 z{ucC`)%uLJJ^#1okX*=^ix`9o0XXu!yTCZoI6#~Zf#rkQJK2L8BPLV->JLC-rty=NP zL!+$mqp=Bw_|a`Af5R|z8&-uBDL)LaGJZ4%)M_C<=|Nc4E_e3+UHSzlvY`r|Z`*SO^LII`L|C^($|rRlm;bZ_uyf$9?+s#2r=YS2s{I z>Q^=6ljHFgirhiOCoiXWQNv(u@!b-i3`3GWxYOd3m*4F_emI+OSS`mVlV36G*FP^l zxsZqT7tUGC`sIsHK28bd_~b)K(tH^$J~?BQ!Ie21fdq85< z3TaF&)!klF$2UKn;4SH!)w46lC$Tc?xFh!i4t+G~2QmpcXRtC$=Fo>5E3@jQC3vnE zgXz-o^%G;)jeRHqXC8{fa>ahcV+ap7GcWf^Kw4rm%W9v5aHPgHvn=*Wh~&JMv2=oQ z{Xua;?5AUW^W9jU)r=NiCGhgBPapYZfTvzpsh3!u^*CCN@MPvoY##N(%;8Bazl+Pi ztR#m|EWtX#a^s55UFf@aDQB+d6`d7ynahDI$=jRnOh&NM5w+YIg1@+xgQCi&(@1^> zP!=j#57XzP_}rrG<&+0GC6!Y?LCO|oIDh|$zZY?y8#qrKr!VI882WDbSFQD(D^u*( zchc@Ycy8K(Bqv?-a$@`!@r=WqoJp*XH;s8MCtbCPVym>p8yoX&=yl%-Q_95Ir@1N>Xlz-)1RO z{M0?vH(vj*h@WQ7*NpF<8b4LncdncV{`=ymi|D5@e)<#=G~ZT_pDw%YuZ^GH0{ZrF z2wkX;7X9zXPc7>^8$V}}%OB5LG~P!Khzp*gnktpAnxso(le zhPd4~i1_I{=i0HV#` zzOxlxqvul=x*@(w{W_6g)~{;D zPkDXkfb&KC^zbYOxMB*`?7??S{InEFx@)P$PY)0DA3vN;xUQDtr;%u@asKC@7e7_k zcMh4!`sItC_N4@K{InC2G#^uopWc*caAnR$Ac5kiM+a15|L|lM7ovUt`|(r%^_`Oj zS1W${jK>l`)wZ6GngIrK{B#Junbvn+j|A)b&XgOfy}q+9$Oz;3=dbVV_9WW}ukWP5 zRSAdDeCs=@12?bl{5|t8T;G}B$98?^%~w#2uJZMr>}K?wS-a~yPxrQ8-?<@*8k6o! z_Fv!0?N~IP*LQNPvL@?0e{+xzokKLSzEhkQW?A1U4hr*M-${W<+x4Bn#3m!BlL1j| z@_c+V#U|?`LGQvuY!dU$?fM)2rC{PCcIyWNgeTWsU)gxvCOoOG?;Ig(5t4uO`p!8| zKm@kyJ15|Y7P+F8fA`_HdF3Ci@0=Fz?_X3ApTx-APCfzRlb50r-+1Y4)^{!~&>;06 zzP|HtKI5rnednlBoA~4fv4;3$r(?hC`_Eqh4Q+krQ$$aVPm+{#@Y^h9icc===Nk_P zV}Eul*J^cr=e}v0_5D-hlj{1;R(KIZe6k+>G{z^7P4)SXdVI2Z-@i6Kxy)S|9zqxH zL5u$PdcmMt8dl%~Q$Pe(edrR_))_yRmP82b~DG1&N4n(+4|1eSr+Z0^_}m= z8vX6F)2~45J8uPjdmsy1zxGY}r|XxxzOxlxqem%3*r(dr}SE*k^ zK+PEcu4a6a*LS`VD&mvf_E%C`HBz6M+`64Bl&heDdvX23O{61QIAdc?*c!1Aynk2GqX){rIH+ z`p&Oi)rwCZ&#WXqx%N>okmHjp@y)cpb1@RE>pM%XtM>ZNyFuoEWPRt{32Yv`zS9t% z)Yf-uCwAJb@4V3Gg5dJ7x3o@E0SU`lB)lK%iil zg&NG?=`ahNF+vf&I3&d3xU^-V$ok3B^)z1WLI{uZ%G8tdccjzEXj7S!4@`=yyUBE9 zh`7*Wx;iw%h4n{6z3Z?&yG?nwJ414d(+8FnDP5+V_DXrh>0xwr`HH8T;jIRQ3N+i!y>WXJNpGs0( z@rUR%^+8UFey1u6+Bm6_-ER-YA4=%c*endl#a138V=I%#w$o;LWc%bnW1TF%&%s6> z+sFCj@iBil$YVJYEb{o`n%b7f*l7lNTsB*m$55j@X8j0xOz2>dN9mtuCy%B5%<>3t z&GJZiOOwaj4TF=%*6x+b!(tz23ViYiXdmtjpFFPP?*@4|kzkQWd~|Kgq zmxswd>XbnqN3O8QBj)tk$s@9_Ssq!fSRSjEX!5xD+~DNVC#EuaSnT7>OrJag+Q&O% zee!sjzZ>K+8wnP9yw|a|<#B7SK^_fe>hdtz$0Il*Pq{tHB9B*3ot-=iU1oWdw`6%- z@rEXk8Rz)P1N#GR9empm_aOIR_igSW=uE;DSERk_xFT~d4u5{Gt1hH% zKvGB4F}GYUePj|W#3r0Ir>06q+q@EKC>R%H_ zjok0dM5ak0arqOSuDJZw&MXjdm&D^EcAFz_FujOeKqRr2K0683NuKPvNTpMQ@-`(n z;&8&_96mBR&x>E%(VaxqLvBN&g+OOkI$bJ z5}%Jo%AX=tbQJPdWmVTRbQaxkbQ`h5ok@<|X{Zt{SnkZi7y6q?e=nxi!t3pH;*l9ixFT^=ZrzlPu4_X>rM#cg2TAf5 zTG6p%PI%GeIBG_mBsWslb#mbK>&i)C-cMv#xVJQR+xT{II3h1D`&5W4BxHP8TtV)f zxv18=j`B(2-c7OF#~p~z#ipKOGz~;t^!+V-cjZ4EUE;nb^vEmtfp=N0z5_B%BL)sGs!c99(W6Pp@esR>^GA?SDR|>v>*5$Mlh&7jKHxX&gpXJ$Ad|6 zPPaS1o^vT)c)FAHjkeUxIMJTB(v;)3BWksCAEjq+AdNL_sTsCjNjc>}EH7t$n2J=h1xRND4ZjV@F2On1&jiEKKB8czvEZJ%CYuf3UVrHPH`ptIFzl7)kptPQm^u#5UWp{xYbLY@_F4?# zn(URg!07gx6pX$0hX+!*y&j1>8+)Z@DnGXo_B!re&0bHRIb5Z^a?ykLTI{v?Rl(Tn zE>v4XdnE?i+ABS<*ef*^_G;?1K0E+>U35th_WJFyAnkR<@mjT4$1j?_UeQC?>w8(6 zy^iVbXLhAc*CKhrTMK)=?QP9o6aT2%Ub*P4qb>G&S5z?e`d`q$Hu)Cz`Wqq_ zRrar)%7e7m2FGgEUPqQ`_Bx@fu-E#NG<*HvIzM}jXvFq<^8$m}Eyoy!`qx3jHG6&B zzu>nGxnP8`;A1FwR`&WthrhvI34j0l``4A71KDfBsI#$GdUNH*2w|`1FVXCE{)wvX zm5Z)Vw%F@3XE65qU(mnaxd-+d*Cq&io$_Ol_IledwQ8?#AJ*)3Q)gkXgC}VA+NiUi zy{4YSX18#@!Cvc~6!yAksAjJ_uJJ3_Nfb;q7TjE6wpRo;!)}#weoUeVVI`iR{(@;*5bDdfEPJ_EhCFEBc75GOH_wI%O)<=BjT^d?er*pBCvmt5N zdKDumkZM~WMJlSO&-I&LpUI)RpX$4{n)Lrv9vyHMZ3R<-_q#i#W8 zOz$_H>Kj{GeZ!q$wD2`t!aYY3?%N>BXi4sl(>Zs^M-$~=y>loukU!iR6(^TCqIQv( zBasp!?@W+C_0FN;B@OLd66TR533t;ZL15AD5kg`tuOT3s#syhF3g)vyP*_|p$b_CC z7~sgIL#ia%9U*mahf8ZK>Qb=TEqUY!WXRo-eu1*~yg$8k_;0B)r1_svoKj_L>*gUx z9>f4ed0BrJi)R?2Hx3CsG6+v{5kybKUzLzD5gDmyi!pzAH|9DE=}quYdweH9c11{@ z+5AkBr3xkgOGJ-ELzJFc20TdF=%#9ZLV2p@5Ys`NU%C8Q996c84xCV?!&IdLQ4zh- zxm5W%&(Kk3NTuPb{uHBPL@aQyZ2EapK^;j(2wcip3*q2PS*t{kN(7N_m(r4ssihpI zchK6LP@#OjlOkSmBoVElSavL!U7XS0BgH7ces9yX`{#1gL{5YW4m0M|RW=-^=eo7Vku;Ft%eGtr6^aHch*LnvR2wIj5!%ubgv%rVm@ZZJ}q3 z;U>(9z~O$1w|Uk2Aa9_cCq!BC)4S_FcgFJGcNdHayXvEq~@|4Nz|rPR5r zX-J_9aj(vR{Vt)D=u#d?Ln8Gu1WR4^z~VA4_ekMNeSS9}7ujG#68QR2O+(7+Quqmc zXAr~Np@S+_o_(+$Ug>&?vOa{XOxQ^Ay@@M7vtfy=QRop`{_4v0I&yRHMe^JjrnGND zYJ_N(mOJAzs`kl)#8P9miN0#5F=4INcBr+iE2ySlvuXjzDz_NRHll_VKGYNq+a(o@ zz=YT!Lfp;Dl4encxWFqC9?%YT1L*Q;FXeD~)JBiH+^00^md2D2Yd~oFY zEmC0qw~wrp|Fc$~@6Z4L{1jo!|GWcMM%;?x_WW=CK=t|mdm~%^H}$J_?+1FdX8yl) zzlHxh_8Xea{4f78!jJzw8@AT?zp#$_HA;Er;Q1#0--dQn%6~-vZzB_+UJ51VpeNM$ zLXAnGeo1N?(&czry)MUbDpUdIFRRn#xFml`Pv4os`lOP*djjkQ59xqss9Umf;PpBr z>H*yFE+A zfn?>aOd_RKBIum@#!4sCN@q<9|NFj=RFD~l%Rs?6GmRB~G_JMMD9BXjOUxxF`jtF2 z%<>j%z)}2DsP?E5SF~U4F@7{wSZNew#+0~RekIR*ZGHEN){?8b@W0PcyCjvklKg1A z??)rXLIaaUX+uj~$tdbSxbbd5$M}6C-T4PflUWl=N7H-3dy0g9(1~UHC_Q@v0fT$Q z$Pw$6Jx*G<@&!J1rwaI81%BMsCNO@?wcy7cZxVJ9e$W#GeyoN5>zx_nM<--8;0NV5 z;K!)L=pb}hdiQGpuMt09Tx`OROuRJV$L0kBKh{qS8b87s3;fX9tKvs9V|y7trYsTQ zPx!%^gT#+lAg-F@$H^~^_;K(=&G6$5P=kyz{qbYfa!r8hLt*!I2yjfkNFg$6_`z8P zezcybCR$6{;fIOFqkc5PEHte6VREe3lmb5%pJRs~`3?AS&3L2#aS)!p2|sqcXu=Q8 z|B&Yk{K&}+8b3JdGb4VybgX9hF$UD| z&PD$Cao-?Kfa*hG_v?0A+2KM)4L>-mz>nQRZsf{zgwTAI2s)4Y(W$uALdOn2Ol|4v zM`O8_h7UhXB~O20eTzq}CGGITM5D-$Mpr8hAAXohPWCH#`WDN(+u?_aMh`z4MHU)X z{4fP-rfdLyq|~*;kEKL85Pl51fbe55KC6Kr2bu-OkGU57_-c{XebEyGez-q3h>r2& zZDcjz2jw^5$Nq1O{zsQDEdIx==S}#b`5y!33jFAo9yEUBgPVjOT65m`X;bjR2Qhg}w{_!1Fc7z+;G0rOR z}Vm@WVtS(~m|2 zD-9ohm`e8cE4k%$%e&j*hl$3iZPs_sx6rWShspowQw;pL%zIFqoH2}F(x`QT@S|-6 z;YUk+8u6o&_+M%SVt|ndfGljH1IRv%3mq$d&|`p~-T+l`<==0L0p5q9D9ka}S&H0- z7+|R1i_buD>cBV#NVzG5z%ju3+;M$0l!MXU^Z{6A$1!b+9=h^VISg2K->PtwQC=fU z(CnN8McqJ`19dNOAwhJrvJ~;VvTH?jFWs-uGK?a*(DPiY7U0{gS%XVS{+DVPQOe7y zl-U>H`yJ%W0j4ns@QsZUK|Y<^h`(1F@6-8xP2)=WJ^2-m`I-5>d$$_%v+#T7rv|== z_zjBN^ZV%s>3u$m2!`L?jdYpchZhq}ATVm?w+loye%JFWbSauG_|3Iy{2p_h-Ubma zm$L0=^(*+jm1^+uI}hY)i{EP-R?6?6;c&8kUyB&`b!v>e;C6fczT`hve!s2ytN!}k z{sHE9W%}K?#MLBJ)9+1N40M^_LqOMt-`no@@q4ykp&dijLT3FggQcnb&bn9E?~m`H z%szg%#JklNzi&RbQhq-Vhr*BFCwJQG_dA;nd|~|_iQ@M9{oWYncV+r*;`i-Fy3Fr$ z*d_AQ?_?0w^xNrIs4tprqu=r|UBAoAbp8H#i&?*42D#w)ZJLjdgg1bwD9!7>%8tRN z^z$%R7lxVAu+Y%5dz49^Izq}uWSt7lxSeb)TG@Le%baIK)dXb~DkhrO6Byc` zYTN!^w?~-UKmS#BGG&?!r1t-~S#N(c=4p-~q_%(3CTshLF@XZkW@^8w*WFZv_Af=q z$gllX$Nw7W>K@em!B;WFcANQwwWS7q7ydW08vO5FV41=Hepr~ZI)BiPCcaGZKiuh# zZrVD3uz9)~|4R+p{|;lh`iFtI#nCB0|gPA{g1&pt`|9x`3(f>Ypux9@E z8=&SJS{vsNUW?NNSj0M9Ed1{}8x7)Pc4Q%=#tzP^#{b}3un8tB4<@q-n&`Y=Vx<#f zrDNxRn`n&lqw!lmOIv*Yx2a@Lzmo4;OWOJ0CK?qVTi;-um4?s%HkJIyuVhbaNu&R* zP6B8_7B&9iN28*z`Q6F?R;M2P=MUB_2NEns@JC%7g-%kNKPV^4f&A}zjXC~@Pu(M| zdj8oh(fA>xKV{_G$)0uZ{V~pzz~fR8VvLShdE8A1{4dGyE6> zYWCyz3G+1pW*YHh-8w5fl8{kj2WM5|e|PKnF?j=#(t-r4{`=7hv(mA{4^vyZ`q9`h z&(anjewa$0UTb}eC#)sy@WVu-$dAVLRvJG1FqNF_SF*9Sq#b^kX!P)-QTm+u-L3dx z@+77#1%9L;_~VZsONnwI{1_I-@jrZ413wP@iDjo@#At-P;>m4@PQFO?%q=~{OAB`_Ws8eJv9Lq8S&%skF4wnK}HQfII9}} z8>!>R&qMtEj~;$>iefEv?C`_Xmg65<+mddj;lmG8$<=-(dss`_;fIMvrXP*tJuGkF z!w*x*-hL%lTT9yEhl$3i)z){(t^1-UhWUd~^%rxRh-}kNT*oKT6esETSAGafrs*YdIeBkeYoLXh2lW(PChaaZ4tni}| zXQko84^zpBekB`POWNUwiAIbcjgnawPWbS{RPs!b_1&jiOWNUwiN^bWG$acRD}I># z5AQ3$kMF;?!;ffsuR!>*#|sTqzQCsuKWP470R`_jy0V}!Udgw7IOTU8J7}@3jMc+@ z6i=iihk6TX*EE(#w(<1$=2V1^Z%)Ao<%2^N^vm&NDVANu$^BCK(1dhaiY1Q?m*i)b zQdN07GCF&1h*I8!O^}U7Q#{H+>zCeG+X6Yab=ibvm7C=4QUMnrLO_pAlH3;?9QyJG zhq%~cho>zF=XmRkyVMl5I-lzBv>bnPY>4vyp@ZHd&5?~(RlYgIhbjnByNhszH05l$ zSnU6CDSv>qg*o2Pj8<`;{`K*wA&5{w&86(aqp~)rEu$r#h2hzmB<jeUaGuRMr;6=@?OGm=r*g{E?ErehM~p4Gi|M9x9Y96q&3yb zf0nfmfrAP;8AiY@#k=l*8+9!D4s~E}5Qe|Jj2g@5eg&dX%yI#;nHD*heTi2cdu4Z( z4M$GXbS=LU*pjRy>}W?UeEeSM3MVKOs8JsLlhjO|FCm&X`qkiAwe_p)U={kci>lJ} zYv6l+`n4{?qF+=XX#EnlsOnd%o1kBJAP}YN*TBK{`t{yRntshA#vAqP^&2%E%EBYF zem$>08;xhWer>$Ur(eT581(DLBdUJ=zEIaM6MC$D39^6nK#le5fu$z>5_PEhmHj5_ zh@(2p`ZaTTApJToO4F}`Q)c}-vX%Ag(t9-h%EvgXP-*%H=~tq>H=$ra81Ilu*w~MP z-QI+PVc`O*AjogA6L37!E($|j5=puc*^eD`~L$oct1_Lr#;<>zfa4c{dd zQui8ZQS&^eQINwqJu+=(!|^J8NRc*D7#nR3DZ7V2Em_^mr#{$n(P?jPamFPk!#s~v z*3&Zj((WNjqx}cHor}v7)dnh?zrr~@a;YS{qOh|o5{G((jcu$wJkxLB^#|IWYe|dB=u-8B9aW zI^bn!^P!1o5zs-p2sQlv%MtgSK^N$~XbfwNelbJlX z0Q}1aC2f#jDgO#)4n;4h?XKLirC=uQnD_m5sjG_%sRQ)wPMGhcb3rgUU+-rf0ke>T zgG02v2@v(FQg9!qr!k~?>MIfO(Xi=n8yd!g zjvFXw;e~hL)!PQo05-Cdy4$O;dqZ_znE}MmZ`99lUQb?sbeXQ7 z6n(PjXTC{4rR$l~x8sk2(>-p~I30|BPW)Q1nf-=JCw6 zcKBo9TD^f9*Q(IZ0YU@xc14MH4KlWi^|LS9r5Ut|VMm4=8CGrmyz5n6KTQ~V+dSxJ zudh`7B;_IfoKEe6ezJOHZy>eP^t0D7($8-AH0US%M{FcP|L!{_R7^5skb(_fiX-Y* zo-fZX5(?wUW6g&j8m;V$vIf%7A*Cwa$)G5j%8sHs4Za+CX`d#O5#!*S;S4a8L@SGV zN>HDNVlqcxw;}U@k&N9iSZyY`7OBeHb|kJelJJd!O$Eo<75w#b!z<8kaQvf9K$3M6 z5ZB$sj>KC=5^H=rc`~g#d6-1`Yc?DhV(A21t$`G7{Yg@ItN!F7FX<1H5&F}N z7S~ZH60NMj3PE6pT89w+GCMN8jAZQe$3)^GI})d|4K4BMkEvi+yMk+t1?}|5MB>;h zHe8r&Bw?pNCK5~SNW>aR`1HqAaJ*f?I);K){V@U4htEKN7JX66`cveuKgmv8{8_cw zhI7{Ph=7TK`89`ai7XJ)*vKV5l&rx|}b+mZQjl7Wn!{;16qD)`Gw zHZ6J7NWxBkOeB`rk?3Y5;nN>e!LfD)&rCEl-%fu_B%Z1E&g=3YyEQMwcyXq{dE0Vj5#{=Uuqpf_(vDoFyR3s z8KeHF)?_B}wjGHpjU?>!$JC1Z?MNKH$nY{g{V^5nVps4jV?jIpF_9==V8ekiMiM^# zF%?{CSFp38AnA{a*#7wQ=M3_HKCNZ_$@JHsr4wxN=j01Eubqp$7W`@E*7aw_LL2|b zj!Z8j89V(^n<-TAAv+SMG7T-U(;pLwtL#XuG?MV?kE!6X=WVz!*;vp{e@rBn+L4Gg zlJMz|so;3Kf^`f9t@>lapAS9c|7@vc{VDR-pX9c-__ONYHk`W_c`f*}y|=DEmto! z$JB~6I}&BB4IJ?4kEvicyMoIM1xbI@QKLWpOp?j}`J|ThC(~blqBCsqXTm%i=GQ}B z3;xW+@)&je)%D;0_|w^r%!la)GIsi-HdFO~p0jDmqec=w{V^3>VOP*?ENG`cCK6-q zNSqmKY`)F--9#eVj>HE>5I6kc&8qo%*Ug6`B%5Rt6;eE+Blj3`jvJk#Kg&qoaK1f#f#{8v^)ExIN1LR zoV@MMJ}rJ+fFH46Ii^2>;C+1T_m1iB;|ul-MTWZH35~~rIao$pO!1V{O>sM!@4*H- zC_d4dqYpyV@WRh4#HM90bgD(wuop!D>dH13a89LRdI92d!H`t$Xn5pD@`xo0}@- ztmbpM=rA9Vl88Nh9Q4w%zp(zG*ImTKJT04ISfdll!xNg~#aVmEC|S>P z7qU3QLmbWGoN115DcsQvQD`&*r_O|9syBjW)>8^%sJY-JNIywzQ2zLkUeXmw)YJHQ zz};IyV5fK+-t6ahx)3t0)sDDtZ9A9HAE9bx&r^sV5|tvVjHvYR1=`iSbgCj$j|j~I zA+51Da$~n~dpls|0ghGV#R}@XbfU+2k7$~CcyT8kyVU^7;->h|r{1LSL|Jjm-q?xG zYo~N_%ilOIcHw4+y;ClB$9gmByJNpeZ-xQ`<^Rxy1ENTTcYWDj@5ZvtDjCm>naX`% zR(Rv(4VZDkt;YC$JAO;@jeeI09m<1UZP~zfH3-Kj5f4mj2a>AftXlY|Gr~~S^Y*be(*xghxf?n|% zQE=<^q9CVrrh-b*Uiw_dpG)|2F+S@l_^i3r9Ef|FH(oVFk1EG-PF z|E&Vge&7B#_$6H9Y zQX@QTG^3XAY~7QLXWZCNi>R^NZ19X9zfF%dJlnDTFT%5DcbM_40KZi{Gx-TEaRQ!l zdQFY-Y^_J&**n+#1$Z_Z#QpJX@yyEbY>=0RhhjS%iroV^@YC_?AkL z)0%;xj$_&vnm-<--nhzM^(k0fk&9YsPjE^lJZlYD zg*zE;77^yC{m75Z~}9#Y}eTv$lm$hDmZKF%XTUgKO?Le$De8VB#a0KA3`<-j}P?PIPP4-hX-V# zOuT-W@nQ4a2!DK_Qo-WG4LH}-j1QR@7U=LX=B66s!(8TT_3l_mDRw9r&js!!PM60$lOd= zR`HB|Ta!bmt!IS~Em3=I;lrprG}u%Bz~hV$BQve|Ku(PbAEH*)20r|dTQxp>w5Ue- zFb!4c_#k{U6(2sn1o)7=!h#QP15X0r!|<(y54Z7W5LcO|{ybv(Uazp8qEnmh1k* zTd!OFht*h2O+yGf{~`LaYT(1z_k8$ZYU`t9ZYF%loMGSA^3&ATv%-hpm)9OXxUB^tc_zV^wii?BC2hr8&{=?NdLYaK{AQwi|%zt=v zpcNlX{zC^uD=TyBf*fBAWxiG)ABukqh!6W08}Y%^CpUQ9YICD!*!Rg>DvbE>BuHX> zVelUk1K>mWrPaWPTi@~FgQ=}|khz)gq3B8bwnlPW&k7&DSXz7daLFVz*i-+-M;RY3 zPP5{JpZ}o1E2}v^ygspNe3(4HM)=SlRp|I&@*nbA10N#Ad-(9-A>c^>e7ImE;lug- z8IDiJ2lM<;GQ}4#;!alQhhAQ-Ljw(3;&?s?$`P$j4oNgal!SpJtr|vpPkg0~i};FQ zyJ(pblK_jRQIh$lhEe_M;AYqF5(^eNUnQVMyns3?HD0iY$D-=B4KzT$zPr(sGa7$x||a`tl|VPPQg<)b9hMNW$UP;-cs z12vW8I*AChY&O@ND6dvW%JaF&QqCV?366f4g2)xGf_tuWDZYU~izKg0$%%R_$xwp?j@wAAdNTiw73)91GW`zG)?6U zl&4fAbl3>ed|R<&+DLFO0ps^3c$3b>M;!PmqGk0awxBTBM4B_YK3tOX_fbuGn=lSP zIZ*yBLH;ccw|H-(7sf1$FFqs5{jp)Rzqk=Aw%n1!gVvls&p7g?ATz{z6R1(1wR~w- zY{~efRjGKQG$*r!9t_pD#4N}Zeg;;gV+K+@lZQk|u|p!UX9ibJ<@ApTD{~}zsF3HT zaOLek!GW^*l3efCtfJFsF!u6XO1(YpRoSW}9i>frh{MPUsonD{=y6_M-{WiOv8pR% z73>8GNo{2pEGIKE?2&pBZpcoQT@i_~LU>{;_(1IAX(M&m?pPU`(!E|YN8U2L6RyLm zlaQl?W*kvl@aeC|5mG82n0Gt_T-d5iPNf$0k4Ti$Dk$PJ`2rP@OVKz)d={yJg^6hM zO{utbEdObau8lbY7dYt1?M@9q0PmALa=^D8xr%=?Bl@Em z?wmip8Iv_O<<<2)y#h~lKB(`X=y8Qf;{EaNVc-G8Fq@SZ?~le}2dE?We2Ug}SW6nA z#p{S4eY@8Sb>uCiTwsWl^FwHca^wdfhE{uS9z7F6dZYZfH?I4uB%O?h)wDTCt4515 zx}!DetES&7))+es=Ln8_3uR6|ScZl(z!pjA$0MA#$P z2!`2AS2#T`0xOi!FROh}IkV9^-MWhzSVfrY4(N{3Zd`k~jgU4Bz2z-4XwputA{157 zOgmkljl1!B;{H6`lNU`h?rIw!`sG-lHWp*_i&vP<*Eab_0E24dYVcN>lF>dScDOSJ z)nA(t7JJN*`#jpKxB7Fq^m?lYpi-^XG_O0ziMw*t_OAIkV0*)Bp}oziy<5}Uha`AL zaNu+4%jMK*@~r<^HKayJ#BIMdQLk zrK|!fbSYbFLwCtkMzyl$aRv7q@@zz&1kdv>vSGw-Nnxl79J}QoXu>vX0;1qz!k*ee z7(-Kv6J7xaQGXWJFOXiOH%@VHoEn0!I07?_+VIN#Es+xnpYy>!WC+RVB4!IljyEVg zpZxisj24Is?@KIri89hlq$S8(l&|i+HNm&?j=3*3u`Azlr+8KOZqpGm$Gp z)8>8XeX}q)oF9(*oWjO{e;gg%3=Q8&nbKO^9xGR{#oXuiImZQy64?m@SiIB znEWRm4gqp5!97kj@}H7eP%tj`pLWcwvHvvZ;r~1TNw~+V|Mc@==wawfXYW7#C(YtN zExLoJ?tT6fdzF8s|Fi?zFMK4e_bKm0I}j6SM_+LM(?h=n^q-Oy@>VMKpWO5q+QA6; z*Z5E095(w;pN^mw`TVEe=T*ah+C^{!w?+4#3SsnG|LyaiewY#g>@xXJL(q)M{ip7D zs`KG*_n$ua-rs+E1!>i2QIP)A&7d0CeA3DDpi zjhOJCK4&Hy{HKHc1Nu)+jI3+wo3Q_M@P32;)O@PJe_D$HrRIs)`%j&|59p6%fj~{$ z$o^9wv@wAHG<%G}e`;iCwbg%`awuSXw>?+$_OkypW6at3PivnK#(#R_m#Y1zX~=W- z{!@3fBe4H8=g(G}|HN?t&40T1L4(4x|MbA12-Sb${zCJguAfO5#Qu}$w^aY>t~=3h zC1|Q$Q~xRKU%LPF^mOXJ&fb6e@IE{L$@>7_*T#Q(7bn#eDsSR*i}DJ8F65MX{P{Gc zX#cA4pW44(3;t77Hr^;Oyd0o_j6+Q|^6#cl>DsT%PpM+4ssB`(tou*zA@Exh|7j9P`Ib3r@uxNPzBc~T*f+?3 zdH|nWlzaJe6sHX1&%uFmfhvst(~XH{|LLQUYWPon@uzSYz1DyG{HK3CKx02s{OQZj1Nl#@@Koo+ z-|j!fqIRqQbb0k!6r}&O{j;k4CoN=TIK4klssEHeME9RsK3cQ*Q!kM6_n)TF``Y+VU9fYs zP`MhPTa?TB^Ab*J%bzVNMf)et@67qpMYDG5$%wpdfDe8u(MERCT ztRqUm+8yj;<~13YV7kw`UPjM=r7)uk#l&g@7&##k9}jyjtru9nv` z!aA5}Z5>QhSXonA2a}3*Fp%!n-?8*wCr&lKPlDfc`~ z8zsw8rC1nKf9EL*Ohido7z5U(@k}x{c`Hli*2Ai@bVJIOGnc8+4*et5 zZR1*@t;%>5s`TL#H#NaSlA#P4;<`l_ACRdE{O^(X`9rPpZV}2SOT=N8ziN4}+*Jd4 zKL=AW%X@A}HR_Hv)E&IM+ozf3o%eYq@?QOnRo*>jR4MOiC{(GupBorR-Z;OK&OXgj z=jEft*23ShYW>cID+y9aj z?@p?^9P5Te-r@|WICc5_+k^}vb({MfS?PQg&M1yrUVDO)n9$;1nuOqRjYxk=TLxRD z`Gk=YwTj^69yHAEkmF|Y0Q8C+?pLQf=@n_+Lw_`nZYm(I;HH8|{ifzJ+?>k%+Exj_ zo}Q)itJun~e1Cp@I@`>zYv>pm;+M!v{Gv7~-w*QR7qSw+IHTZ~JDHN0UnRGlukp)5 zX}(IyhjvdGDQWz=4h>WJWtxE5-w*sMeO%=iy(00e6@)DSgBb-t>}RXKJS; z&vu5}*1%1yYS|KQ7smM?Y7N<14K($qvrm%yg%j6!q>@vl;2Bo6&Ocy$5coM;I zg%|^UD#u@SVe}HtuQ zsxgt0kaH$%Y;#9=14px5XAB;#p*qUq667;d&en4h){qM0-;{({Z-S#gMxjHn)p|N- zRXR^ZCxxa`xf?z8GI$D8Sn7#;C=RonTO;Av9cm3pF;RO%NS2BLWa<5ta~|Yz!E6Cg ze!?BfS*utKS=bbW&L0TvhU%2zka)hILYe;%9m!xA*TrU_*&e=e0;6!HX9%7{-=X<1 z2S@HrAd@H;lkOF%tybo~dmOr_rKqw~j;0@k(QHyPXKI-nm7E|&E zpTS-Ua4a7`we_@FQ(D75vniuzd?cv=GX}W|k;_h``N*5-S>)szA<{zp4oh_O6Dcgx zwr)pwJ*OsA(jSrl%QkVKd?o?1m5MakCdO7II{H^67-f6gqyDm`CA7ebwuo6KsxsAN zOwA-sqraqKiSjtCEu1XYy>{g$wN|xkC>~RTD4VH439GdR4U9cK(9!?2)*vdOd^|xk zh<;d4FBi&yjoZmDX-% zf$0O~J_)fK9l3k(owPlInv87@@WqoLA(5aQdxS=d`{*e3m+c8OBfxshK!C{Lo!2yx#*== z5eqW0)_t`&Apt;?7+XX-n%<7qp8|ZFJiT`)l&k)OUkwfEvLivh$)!xAIexjE)}8$> zVV!#~&yA@{SF$tqW3?`1`LEa;rDZc{KdgpcT3M8W=LON!L)`b1io6mYFfPX63wJcB zTFOv-NxXZxy7r8XsT@fO@=oQ4B-$aVo}>hYyyF|H8E0kzx(O!zJBMAAS`~CZ-4LzZ zDdD~HypG&fsEmw}IHx-7rbgVOHiDm{5np^wji?|k2msj$M9tGO^`Phjsa?wE#{k_N zFiDiR8UZqbnt&0~C&!qy4h^vz(|KzRF-^HJl@8rGM>BOt_)UC{7;!eS;31qN)?b_> z7FW=T_!CVu{qR-PR0Y01b}p)0(VvvT#ED@ynZ;3tIkH+1M{}yKKUGKKm`Ux1IEpF} z$Icr?BQ$ZO&_o?0bIYd=2xe1J00a0G%M^&BQ`=Z(%9tg@3?#D=2RT^3qSD8wxCS;d{;*Z+c^( zmPFsZ-i#g=72K5w>B9&Ye09uAqYIOMexN>lw;3K*xa*#9*F7DFa4J09i{l8d>$=Hl z+3Xh0i7lVl7EKgsBB?{U8xc*4QIu_`lIh0%FowMJ=CKu~;*`{(LM@(Nw!;J|eqD!W zwb@TYr!GT;7COKV(^=~v?Tl`r$eMr`v`K( z?TbK4u-@N9_~sS{`R|OPr^@^AtFhrS65jz9H5!h6OZ4iv1sERvPJN*; zG)^Cm(Z(6-6%%MrNo(vgr7A`9RY&j2QS@@iM$QFii%_%aa>E0qF0yF@?u-_adOaTG zP(d7juiqbD$BIPfD94IH&g9%p>FsiNq+hH`Of0>-Mlg2$GDIM*hozR?NJGWkO_C>{ zGNiX~7hNW@?4m5~C`$)WL3(?Uu26a-N6KysnK ziYpl|EsUOYnS6B0P4L3Z(sJ_atk^@LEAS+ZvJ&gsU`HW~Ybd3FBK=i<9*K%6Uy@(G z7&RaLRZ1uy@wgDbOgzq1v(aDW1!SWJ=2IdXNV)X}QVt@q4S!A2ETY`1aw@|`i*PAB z7(}t1*nY4nT%?4b#yvn~dz7DWkWQg;7@u_9+q<1G&hA*iXU_RdHVVa*{1JTY+}dM9 zxE@Y(CQ;$n)xy1Z8(fJa`4%F{M5Lb}GEpVMY2V&NMD8IX%1Hja9iN5Dt^7HVKl{@s z+Sg@p4A;I3Z>vnzt5Dy4E>*GbPHtywwF*v~h$^(X5c+G0XN3SLiPNt_4QO0~)97YR z*5g?fpj!QS7FjmpSrPQ7y7800Fn>TnO6a#1C?U?) za-f9cS>Inv%E0jgjT3TDvpCv*QY+%%c-DBTE>Jv6YeWOJ5$s1GvhmC&J)X6Gt6+8! zf&WKH4?67l>!$`W4FVztjAz~YtuCgaMlsP3W$~@LnCQ1ArqtRO6UVdqbP*m%r!Q4Y zi$X=ZFIGbzhvQjacdja)l?hMS5YM8YmBzEuIIkYhqMuqkiy{_UJS&yH8{%1-^uu~U z1tIlq8x8R+?O|DW@$lf8qyMkRvzB5kN1dqJc^Kna841*R{2#}&!qxUgKwB;GtS>Op zU=z>Ef<~Yl3ND^SYK6=c&mwKa*MRY?T-Y<5#t?E)Q+{p9@hm!6P7ha6#OZ-KLBz8v zh8R7?T>v7&P^H;YyLi@SWY*$Y-#%lGXZ-@JGk3cWe95R|jAxaCds>uCxib;Z{o+}3 zUNgkAju)HaSsm(%c-FBUcG#iEvzE6rjN`h&6%H8BS^;q6covUkD~)H-Q{@K)h7iwk z;d`ybvpRPaV0fwaLSY&hk{whX&${DAdO0Xf;CNOSWJ5fQ2izRbqTvV0ffXqJngH>v zp?Fnyks8lB_5uP><6sGfcotRQM|#HbsRW zEHStet*u1ziO5(%WQj_I(;Q6XX(FP`;Liel7AiUXIf*~V(B6GbAnf9-BpjQ%pIN}R%Rsxw=(N0l)@Sl+^^smQhd}Az8uqA@L?RCN*q(W;AOfT z$4tdgY)8k060LDdrWFU#^ldnOi=uC%=^H{ySb7*QZgri%c(Bhl5~IyAjjw_vA!HMXBAg>A08hLl{C1|q}RO! z(s7Qf%H!l;QrwOQzd7dkeoyR~NiF1(4jZ5Cux@*WT!9HlLWHv3aq`b8jt6%l%MSeA zh`%5+Vw)psGpKz+WN>lX26u-NQLubM{VvBr7n7E$C?6mD+oV?U9ll2v^?95;+BxXR z2zn;}MzwDN$xR@+nSOjM=-fx(@%3) zUs!Wkhjh(x(@Gwn+6*9)Nu)EQ#cf;3Q(F4effOdLu0radYRhoPj5(q@Ri}i;lq1W2 zi^jys3Qw?7eVAYs3R7M-EaC2xlKf?YhZi*}5uJofyKgl#z$7Mqe|3N+RO?IShmIom zfn!#ovNTnZshqd8Ck4F*j^f)KTQRvA&C70tdaDz^Wrx5PwT+4Ld6cOfnK1XefgjAG z#)AiNw!nKBf(u3zLpS2l)Nm9pprL6*zy_#-(yS!pV`$z-+yXRjyRv%Zkh03e=1OkrgB@i$l#g*l0Dgx3k^5b5m)TY-nQup5@kebt8?`A|mYdjxy z+Tvfz+2CI!3=H^3Lz4ie&MQ;@AHhFng8@@X6`G2O;J;4B)m^T3f` zYNU(C#`--4;g59WBdgJg7?vyA-aXV;=@6-hE~BAD`h@?*I5JOZaEm%BpjV@=XRwn; z1;hl}4K-|i*?y(T7-!q=%iHVh z`L+2%onI#XS`!X_ExyUZuir26=hvG!%_?~PiXBlEzY11q{2Eeb;+Ljh;fHF-udO}L zo?r7W(D`N3uNe;TYaGQ~Bw&MPj~|ouW^XXr<0KsSv+V*A>Vi_to` zxREp+##=^PBCBuv8b+O^N}aWo#DoqP5h12Rm`Cf?R7y=$N_;;EQ`-E3fs$tsa)Z|Q zBgC#i{IIrVGubWL;-gStN8$6^=!Scq$uX&GcvGp>KcNcrjncPE>sSrgu~Rty1!FOEyx{_-f!y!#SM+`>{ex|`zg>U)%bM>;~vMr54|&A6RZFIu@^A!{LT_M!C;(=Sr* z(~Va4uVAedgo-mR^+*xQB(hR)I!)K?J*s9?wv>%7RAZ+`n;PM@mfk?Gm9rrU-Dic` zaaP*?RNMCVdZU%O{d<|Y9+{)7X#Z8d_TPLFOIZ+7+y7x(Yy0P^(xGgo_M60VF15cr z!N2{YzjxCfSr!(A-~uI}Mg7-?>Z-n!1cq?P(M0u5`1mf~I2!x9Jwxiod;0SQoY)T= zt#}LFxG0b=B^?QaNsvc`8!jd7==R(crJQUd-hp+L_aB~c(s53u6!qUKiQ7ntiuESa zCZGssi|>?&Q}sTY2|sZwcpvao|fZtRQ8 z&~1U{I-G8SZH>tJnAjMFb>^SZg9#$vI5ppMoUcFfO%eI}AXGy6Zbm+IBD2K~C%;`B z)ExTw?uE)_=j6ivUg_%{?w zY*9(PJ7i$pVjRVgSa+?F%D4StfC=KhSXw4cq~FK?5akOTylIwgSL2!al+nO>+abXy zC87n6Ju%)U!yNFmY&4J@je*7XUx*8&qBVSaX#F586y0ktQvm&Jl%pHfBslGevG=D@#C(y1b#f8TM2%2 z7x}uX`R?F+Hu%vD`OG@jBY=(tz>lTP1b!@d@2|p-8`TVulb}v!e z_;ILTZQ#cXphEaTUZxp82G<6D>~iS%VR9a})B%3H>(=ojv!ew+PMl|lA8%r%U7_*{ ze=fx57G)lNn*SN_BaP6A7_a&tS0w59LD+5@+Nl0Vq|yIyDN~}*FnIu9tmGnU@?*f{ zIij=Qk#QAWs`OZMfgU`zVeezY1$>|__4i*&1)Li+td|6pGsF`;{p#>5$a&~sq{qg8 z1?Z{H17{^-;*k3n3Vh~I?NiPum6?B%a#uSx|GQro=AV;w&`X=S;0WZe`i>lnc=gGB zc;Z$cJ%C4S<3s87sRuXpuYxI6?DV{YTDGN$Y9AlGquK}cLF^4K@9L>#x^;gz0Lk{~$s7uk{S7{`bbID`s|_jsBmj>%Xa6 zc<(gnf2>dc34I9=lF6({|A8Sk`ag*EAD^WEm5!fjJZ>ESH|FvGo8i{+|4hsHzo~Eh zzu0E{Pqu6x{}+mQ6xE0EGpez(^-X`^U6=NtcRkDTzi9u!dDij&4;1JzjQ@S@zqzT+ z_`i|0{qvYWL5@29_qE?7t8=OS<=t)CANYK%mn9v82*&jJktqA~v6|LtVmu$~TbU$K z?jO`U4(rlEh{J-*k<}Mq#D?rrW#JMQEk!D)E~@N&tR*TX-+52}GE&k4UKyciiRd2C zEu3>11vvbJg$GZ9OP|CLm!QV%k3fxEgXfi;mIeI{d|uW){dN8oTltr-X}Irvv2Wf# z-^jnM-&4Sl_$Tt}=Vh%RlQabk7a^-JV95My)>01`KGUeO^Rn(&Df#$!hmn%Tzj!nZ z{3Cb)|N8s*XVS8lD!{)dx~cr57bY0kjVdZRJ&XA#6-Z$Sa*G%g_5E-zB=!LdhK5T8 zX%TK2SCp2=IaZvaTW3AeTxIGUQVn_PF5ZtloWpsz$#hp-{$o)k{jLbb-z!V{b)dgj zmGrwh6l?DD6VM#j@r|K$66|K>^Tq&@1}Pi+T^SmR)H)*dEiLsbPOV3g$9^3{Ld(La z%(g}jq7cTZ(OT*!A~l>-J8P*ML~10bUaO@x1$|I(acWmBHG)!ey%VUi7%lM_2sqw9 z95$9xduXXmMC!Sm+EYtCN2E3!%dgg2dx_qmp`g%+^SZRWZSfSTjXAZimilr-PHn=e zaa!scLAR-(yB)unW!Hy>;>OeT$#j)q=JvYyVD#z*(P|LK)4N;WNk~|1k!gj!2npJqG1<(+sW8L;4@wwjgSSjZt z(t(hSYgS40;NJ~|VfYT(9QHH=i>fMv$eS!x7QaEjbfe$>g$I6z0&lvO6d3JIQ$D5W zGU;wHh~wn9D4djsTO1FvJGZ{yJ_M$!6V0@h?4XZ*|a=$E^9fC>q8?Dw^kKBv!veyQt(Gh`aMQ}CzkY^ z#ESlaNzvy$jUI;-{ZXT$zo(^6G${IHP41V^ZY31GQOd>~s#SY%k$4cEP7fY8JZLW- zMDl}N!-M(afr}qZH9S~P51{l!iGpxi6*AIU@9Du4h6kOW;s@uBr3cdu54wv7s`i(m zeA&6k@+8p|20$ffRH4;z4&I(^fF8^;Ja}ssKWM^r&^eD{dW!Q@ctt$)fVsf)wjd@uSBW^?>`r* z7QDX*^!@QZic+n3Ul)n2_a?l*5M+^R!TVMsRn_<_w3o2O`woJx1@GUhXNUJ&1zlCk z_v4oz-Y*$bxr#?CKNp(uzV`rK#p`-coju<7{?loX_isY?NyUA5KW2sv-miGs9`BF- z0{!0IQOEml=2e0ByKy2_b@6^wuORV0`EV`Z{Tnmv@cv^h)fVr&Jy{9fcN7o&@%}pT zz#s3IhzI_7{~0~7!TWhgx5fLuo=WgOK|D~k{|}U}3h!It?QQY?qv@64eTHb2Y6&Z~ zIxKkqLTcs45Toq(nDPD^NjHX+)2cC?4c=dKN*IG5-YmH4KW5zlJI3>A6TDz}46_e_gO0k>M&!<^iZ3_21n$T6kuA-TlbZ0cYVsYI0IE6O4 z`R-vGH=lz@@vkC)de2;U5f1moaH{3Evk}|!44kW!5X;4l1@Uv~s_!PWYU8L%}`v4ahquPyUvP z2!n$UnL>p;gTu*9$y6Ff(xRwclnTdXa5)-Wr2Kv{C6-g7YoL5OvEZIp`4~&7VA4{4 zM~dS^%!mcM!fCSAeBcwm^r*{-#-yc*@}yUZkCd&~z&vky8#k@XAqM@cPmEyDb;!$; z=SJo;m9_>dbX;PiR;0b)RULdu$Sz@J^Tf|hj4e;UKycM7m^x72Nbh~am7*E$lIy|P z9B<B{TJbmDQIlM`3Jr4M}jKO>^gvVELZlxk{@$o0ly1+rK45B5bosTYR_J?{MH;<@Wo;Yt^-1DavZU*MDcW-xYIh z?f2rDs{J+qg<$OWo6Bo%zny<$`<-jG-&vXV_Itwxq~8|%y^a%WX1@zBt*%J$1DiA}ErKNv+tk!jxm(>B}h+`X+- z`(@n)fU^BQ+!}YBz4hCX{N;eduz`FWR#Mf^df)#dY`U*S83SJ{B7i3ao0msefdGMwLFwsic;&3#I z7AcB{#To5AQj8M!J8?l>`2ry0pzRvuEyOBC&M6itHC|0gOlj0Aq9m(zWL&)}hS>QB z)YnLer=Z4hrKM$cx@?jPLrA5r11%9M10x4I1 zTJsXudA8FGcO8WPl>m#NX@)djhjUz$r1%?Ho-zLN+_SHZDo^oHm1p`fvlzI+ZzC_s zlXD7r_B_9>F3+ZINuFvQnk+h42(dgBOaeG?bghS>w705&x8xj^1R{z%hN<^u%$)JoU0S;8<@{~8IE4+D? z0=Z3U=sUu3McOWe3oq@Y_NroXeW3iSBkCwE@;*trfQcA)cvjIi^aeO~jrL_??PcB! z{Ec(0tpEDIhKHoMy~S|J>Oarlb1LeNYlu51QVLpnkPs(-yKS zr`NbEQI5~Yb*u<+IvguXv7&PiXXiV8kbuqfqcKn~z9bq#rHb0k-a~yRvOLLXDq)<%0 z-6CRX?Qkp--A<*vF#5Qc+yIIoN0Lw1af<_Y1NDnRTyKRqz@SIJr1X~9`+RPGzoe3W zH>;8QsnZ}*&rO*)Ug?8tDo`I^wQgD%egdc2Dc@Xl(CfQaih^e3S4I5_bp$T&!*ANJ zxq#BMH;{mM)w1=)*Ot_yZmval!abLAZZ}40if7|@vT|Qz#_1Oq5>8V>7~DC{su2&X zO8!>|A^(a>mp->J(#>aUPL%^oRlR73u2?y}1Nli=jPcsf8&m47E) z{wC8r@ioaGZjg=qf2o=Lud~R%p^*Ozy8KU9Oa2{#kbhch>31;~Z)8&8J zUm<_mjH0w18@&C0n{1VTX>jtNn&Y$ot9ALC?SBu+zm2W@f2x`MyIABOCglHbUH%xi zRm1+T2txjq+5c#R{Q0|4{zx#(pYCxK`0xBHM8uIs!u*$zAIQcKm_t}33UH)eK z-%avIaLC5~%W5Y7Yb^3_Aml$!mw$y%{w~^i!5s{`{wUG)i|Iym{g+>^i=L*h+>RCS z%Xd?^kKWMG?UQ><-F_baQn&x^T|TkD!ru*Ie+CIAvEM#K6Z@1)hlkX-!%u&x>;tW{ z@A%N4URRIIr1Vw@{iZi`38;q1^6>^eZcNGMtQW8Dh{4@8>)O&kHvA`b3z#T68l=Dh48hzk~$v4rCz%(-fW#zq<%eRq* z0L%A!5HQGhWmB_!=X_?7Z^=RPYcP>eGm%F?Bq;fIhwy}a`=E$HzLENa%kV&#F9*f4 z*P1Y46%L`+jgh(AtL+~hGKB+G8=Yegcl(T9muV%Pa zjGCH1M02P@309)3MLsYwWipE#hG zCVkK#7pR0RLyU*wUmr~Q)$4Ms*eQO!iC^e;)n6}&Utfx6Gx1B3Ul6U?14LN>GD=%x zYgpZGM{Ce<1h@7`1tPoLFOy#2Vvm%h{IK8J{2~`OA9-kQh756M8`|CMKZxzT9b#x5 z&SFqkQsJH_zm-(B`^7F-l&>i)DdS8?k_@`nPSp174J0VTg7rgDh%0JlOY589vC!NO zu`X3z+Z3U$ZOXVvmuV!j=wS*;m*!BcZlYT$mA(&DBG29X1VenwR$3t|%*80rYx7v1 z)16tw^peMj7W0QEL*!6zAx($m7CUm=;jboc-ejDN5~{e9lr57;h{lqF>9i)3PFm|p zQ-d+`PH*8Zl%m@^*o{b1orOxCI!-fzX5xd?1oH+tP4P&Ym` z7GR^F-`k)YNu(R^M>HiVq7lG!NA62#CaFMjFzbgtKxSqC9%o3|L)Z-tRkOBups@km zVtGu!7GGd2z%Blvm!ZX|qEv}#Wv|VnKZQ0AXu{g;n{R#&6bHdw?V22*&W4+N5y9RlE^xGT_al#sVy%3J`DT1qXe2GYwfS^8CCW%TvXhu746OMvY=Z!r<{{_yiqq)RIBsO*<4c;7tqlr;0cA znXFYeX27!bsVmlvH@^?48zYPbSU2{{2Hjx1xuHc3@#f(#4R~YG=C8l9w)l@j0b9Jp zSb$r6rLo0~H>J((wfVPA(B?g17QDF%G zt#k#YF$Q@!yow!T_!#V=$Yf~21l%;r4!9Vq{7WY154bZ`JXFUC>tQ@3%m0tPGl7qy z`1XCm8WBiTMiEh>1_eQlpt33nBrwqggNPuzB4Kfh5D;VwgaB~}1X%?Ynie-xt!wyLqBFRT|lPkTF7>74DYzJGgL z@->|ekt5|tZEvk{lsenn1PD?+v6!^Cn@;nY7`3-%e-dV#Dlpqy1v`b?+rzBRY;VG{ zpI`g5w~gCv#b7`=KY&rMy`#N3?C>anV=iuQ>sEU0koHzD*w)^vtPa@Tn#G&#&4I7& zhwtr&-$~Dy&OBFpTV1-i?XBuotGzi!?66g6ZzoFnw72F|>cH*o1a`==wKuumd;$CO zl;ibzKkTaL+}~#K6C9^o`|}*$Zk?`2^9fxVP3cf{#ryO8K!*)_xnzovxwaZHAcMtl zN(wcB<_v3o4Ku^o%u8IKC*{AhJMJd6?=RGNK8=6g^?75x<^N!pj@+1C<%Xm11@85`9(~Rf8Xf27X#PbY43Gc})zOQwV>V_g zX){A()qujn{O%;)Rp)y3huTff6pqa4ceA6CunHT4n=1=jdK=FK|5R8fCqEuOt&Gmd z=AKrNamE}>#~sx&oP;&s{H?a z{#)elzw5W~O={MbOs{RR{P*LZ6pW-%Cd+?!(2?iszwdH6f)q(vH|OwQzkzoD(cG;1 zZ=TbC(n!>QiP7+1tsu*P{6Mg0ehchB{&Czxmj4{h?Q{@9n?W+f*796sH2t{<1S~t9cK>|b%)M5+kbtHrq0*? zcbs&#(;drfKA9;Lv;BYLta)z#*L}eunznzEm-au*hdUlzY5&z*IorSJFx$V64tC=F zB~`5U&(ePF-(Kj^ULdvqK)|QY2i$^N1+8Ad3EaNX=>;y~Rp$d{0cdOg`xhh5)Ap}C zv)OR_U%sHqWorL;DoD}o{|lRye(nEUKQ70QX#WmRFWV5H{hwUqQ*~DR|4qa5NaO88 z)P%VGJ4S+nCDi^;71{oyXm7@FcjjwrgD{jd+KqeY(_XHOD=#bhptCFy?`ax_o|r;{ z5@!w+*3IG7329%4cUURIu$ljf`sd8N>U5yYKv?-h&Y3^`y!mUKGk+}d`xc!Iu=Jlh zf9az1)00HPV-V3+c4JC8Ou7^Mni%iS)X9h{3b7A0o;%`}NrKGbskpC;XK>;@l@mPM z;ylelVm$MBX+`RQ>x24Lj%m;{yl)vqPht6G;%Q}d5T&OW35~X;l!pBh5lI zySvfqmwGO4M@5{!Mk;I!zF6+NX$wxjoJEZDOd*lDMpJ0AK?~X}BqYCrE_&KvxVfBA z0$ox}=;=Sr?P>f6HlYm1Eu8a7iRY1Un)kq5&|T7IBDDxSi($I^hMTC(U@tzm=Noqh zXGtAcBPgXW5~<>AN#0|trTEkA#ov3Q<>404wKk@~oTd1^Up-P-Xab(36ejVTF>4^HFX+M!lJSK#idfrkR!m)NM%I&$y zjcXu@?u=(6+AXH3DXaeD}b#rK{Dv{PM z+#Pp{DjdfZ&aI@l&XdBi-n zJaS1Srq(*XHbuvmKB*qRkS#_5o-srlWmU$P{3>od0);-gGhPUDuW3=4AC#Vf%Y$n$ zbW^G^j>m*b$F$8f!_YA3Xm7uU%kr|pZ;oijq80ogLC&+Q8E8we^pY8 z=;*KhIYnEAIl9yf=&z<>8$|9DFTB6vHj}zS+Ki*W>X1xr=3M<1=Z(?4j{d3|@@nw| z^;ewnO3rBSukv2-(RjJ~t69r0vcDP@WACrHxE;Zu1DLy4?ynl6xLzZD`l};97o)$5 z!hu}e{>pcK;(pr5nz(CXsn^Fc!q?^Y22bf-f49Y54!E5xHZ?z-7EO%J-4UR=7a|Bu+UL8%3#o?i6Z(NW*g5pb4Y+`E()MSlbWVA9(YT? z5ZuK!X$3gA`an0dJwP3|DbqZ3VeNr&7^K1y@K!ml(eb`D-I>jU<4{jwah|W^(*6nQ zQ!36=Dgx!Hos75mtNkm@>p~^7RpNMl@Dc>x(ADq-Jwl)x-(m2-Zf#S(HH|%JO!w+GvhP5hG7{i z#>2|)lE>pctFe1G7p0TigP3QVQGl7nq~;m5AFR7BscA<1gC!oytkjQZ@P?lb3JVJA zgL8=$w_|?qq`THGcV@GbC}p+K(Jz#yW`TSAHWBh`>C9hDR@Frm?J zeX)H{Y%m(xUaT-@e_#doN)$4pCzZ4(PMNyT%=-{-fV<;rt&*AJJ#bCp&=2|h^$*aIFgfPGROsbsF z1#QNog1ikL6_dA-T$I^nv+>Io)koD8OA61KH*X>`CZrz;9qH?2uFM*tBd=z%&An;$ zqx;}a97js~m+o++G))`a^Pk8*F8{;^{jYT-rqxFUe+1_tbpl6u@tFx&+8H|)=1gR7 ze_QKlA$BB7$nvzA7&~%ZO6ii@GuliHT@X7V#uGag6Y?Q3C1Z!hWW-J#!wZ-aem8>a zV6#h{DO+2`|QM2*BfzB4d^R=ai^UkWh;}c z%CV(rn_*sNB8Daa@(x|wP=m; zKD1)0P@WFpDZ0)O^iEOpjRZUiDr-|`VF3Z(W7W?1YcLV{_5~Ke`C=`(!`owr@@(oA zteqpi4ekuTTORt}M`xRwJHapahF+w}k=tm|=yYL5N4lZIy4L~o8}*G)&CU00a4?mL z+!RbG(SwY7Ghd{`g^3n30l2SJmUq$1O$D#AE2~Fb5O~6DCp~Wr!&he z{5QHatbo~u0$=j8e&kp(e)u4iD<7g7*)tqaMK5`{k zi&Lsq1>0R6^u$bQ8sFDGir&Ppn5)p-scCo}&@5mvm+dQ}m?QlFkNOl7SLkcRHToyz zdXzUVZ74l^BhGVef~R>H9aRzNNS$|t)bsWP&O1T^_tW(-cpCjb#XuPPLg}Q(c|Qr< zKbwSh(=K|^m0VS>Yg;x%jnVBCpGmLdYzAL_?(2mIdIYMhg?o$e!cadze0^tSQ8R2u z&9K=Kx&qAGZ&N5m*2Z$|hD$*ZIL|JPkI<+z<`Ye!|8%KS}6x6`GO?GKmLC1@ky?+tTV@__h#}G464Dr_`>5;6pmi!_%sxPw(*IiZR1lA zp6a6GQ}u6%$ahEij8FMENGvFiPc>P)HNtQaY`5e&#-|Vca_7HEnjE=}>+ZA0C(|Gv zpI*@1-d^=X9}zWaDUEo7W3TW)5yJ-V|?2Ffs9Y99|_z~^>1PJQGeQfShK4LFZ}qCuNMw~;Ohk)pZ;^G*yEEi*Ev2pY-#ORlnFBe*>YxQ5w=|I2MG7E zCE)nvD8!}@ef?2BU?KV!RftSKz>K+0hf*P|@o7^+;Ci1DYu0j) z%{z+l)uDO5b{>1*Sxjqu%Ky1o&TVn>sr_H;4#;2Reu=9^kE05Cnv<&YX zjfM2?{o@P1xP)GxPMi4ghVhr%S7)3>IS#go9JD`%9Tjq>h{Q-&uIS?MC_dcH=AWt|;xU0$1h7w=ak1=U z#>Lp@xU=C}vhVMm4*Ntv?TfAg`@V;O-M-oro%Zp1B6I)B;fIs;1h^f~Eqh9*|6&Ce zJ@He5CochmP`BN>I}a{{y&aKDd2m^7C;jKsTYTB4U)=PIpmHBx9H(pOkyzTi zh_7@PVA7VJr)c0m7VL)OF3HMt)w@1D%ZVOWK0>eUa5ueF@6|A#I_bl;#Z)PH9G3`aFQi7rwne&gaY~!4r2f z4u_>qzJ!i`7qioGo^{3tZ{uQ%su{T_rSl>>If`$T6BpVP&KoPvv)L~x@wIZ|af=<5 ztz~8@Iibp|6m6_picS3%;}j9|^QBXx8sOnYCdBA9;0TOXkAge~Qbx)~nm)>{U^*tWjnV%>_X&M9sC7Z#$E1(Xe_Lp?p$pV?bCTea5PZUtTy056 zpq9W1C-H$KNN-GL6lS|!vvD>-{-Goz0~21DoYl62wnQk)Or(=~qvVLASU*+ZMl0Z{ zuuC)RGdhdUo(;38JBRil%#SMcswK(w+O6@$B8s{ zMgNX|C&P?M_&pyRjcV!A@f9=PDdlPZ)3VW?ve6l_a2alR0R-JZ%9RP}2UE&KdrC!Q zU|dMS{U>+=1E!QV7^kNkE6l(hKy>ednYI9qrnDCF#QLm6Y7?2L+D_erfkji1V}a+J z9hFOkJMY>3XTTYA-;!8ydaSbxSjq;HhH$C}KRE>@dY?JIbh|Hr%SAzNvv) z3p$ylQp3=|=Zk(CsJ_o@!&$1OL$kz&?J;UYeN%%lCPn0sKm0VzxezbSA`K&ZBVxkv?BOS-$bkZ}~)YFv;O{O^XT#zXvNY7*bdR(HXH}+6A z?j${RbKDpydXgs0A-qhTjQ1&P(Ve0(Yk(&-?=outN&(qzc+WDz`MnCiSK{}I{2s#Z zCHVa;c9+RAj^o`M;hb;$-}~>4{~0}T<(NZ&BN_ty93TYPA|U|Z?*GVU8reAnh}q;5 z0yJAKApq|Kb7;Od1fUDm)LU{LaR^WuqCO$OdU7`JCFa13IV>!z1R@o zE(rm`?&c66>%VXO$0e1^IR0ZE(L4UvcaHzbfyV!@z2m<-*gpPK*BM~^A5Y`|H$LNk zR^ajf`O7u_&+r-lNgt2@O^P}GBetip)1WRRgM!=hkN+=UzVUzh1&sd{&NKewcl-E{ zua`Rhj|(vV!_oHfe*m=!9{)RCzVZJx9seJ29{-nd{8tV2O%0cS{GX=df8&2`{D+2r zfBc6M|MCA`8voZ_uJM1WZTzP$#ykF#p2?=3Vvqm+dd%^E5{>_)$7lSfPA2g9e}Kn- zykq?5_bU8eiQg;odkDXm;P>9|J4f^|4W}|{KxP1@gH9=b^IR{VEl)p?c=|7{(t0&%QyZ{(DDC1XBTi8$A8sO z-_&sV$NwxH|L^_R#(!w|_s4%I@gM(d)A+yqa*hAvZR5Xe^%ySa<`&sO5gY$p9U-mctAMENooQMddsUAa%WK6POE zpp?>{=#YHeq7iLfxW^5EbTdUHu2CG{cuv0fS^3S0e<$-jdS&3kRCtZSC+u%e`#Ip@ zLFrrjg>XT_yI{S+@(^6vbmL~^NTX&u>LW(;w%(cJDIIH^Ll^KxM5Ah4a8T-3iAW@y zKOKO6*t0WkO%APcb7z)5l8%JX*j#J9TU=pI)6~W#g8JbG;PH%a{)?0H1@_;@hwc8`+TW*q70y{cyZ_QY z59~kLPlT5DW$eQhyuyh)={nw;H2Ok+)E2zU(arroSU#2I2Z%g2Wa;#!fXF9GDwdA!Pbkshy8`r&vT!eN@Z$6ZSK)B#rprIZO>5LGU}jCI=)dIIYh zJtyDMAKXv;8--8XaO0ZK1@NQVwC43Z)&qI-uwa%i`mc!{uQxSiuV||aWy@ks>uBs* zN*kEei18f219@@pS`dz|&;?`YnL{J7S?<)oAjUAQIx7Jk-P z$t`%q#|rCFW6SZVu`!eG$t^WJD7tWYbZS9x;Tk*+tX@IAPQ2mwBwSz5Usz`k$UiRH zU5Fy4Z%1VsS6x>FFTOKXh4p4$JPv&h8{7c!SJlatsK%S7KyxD<&xuR~~n83f3tDFB~ z0MwO{`RxNFm+zL}EI@LFy7{#OBv)*Z?+TC{niM)|<;Xq#D(C~C3sX0uUZRKpQ`iKJ za`auem>oSF+v(x)_MI)w&B)gK%YnQ~k7@I$n54p<@8 zgM#)I##~tt9lGSVs<9a_g@i5y0qb*Hl#jv9JvFf8dNdv5Q7CboCzBekG4!v$3O%{` zE!-Y#mTT;re3s0}{|-hQ^UKn6wsI|-j1~IpLQ=*y^t&#u+v;e~q;zWixW6=n3ikzy z8<&~c6G`w6k!r3uQ8;o>X!@_@==#e}p??b<`2)U?S3*Z_!zZnb;fts;mXg4zrTApL zc};a3>p6=`1_h@^pD?0J<}N>7(X)PeUbT{2daW-Uh7P0F^623wf5WHHaT&;hprW*k zZZ=MsYDB(E!7CPZQn{L;T=;_Inr~oap|!Xfv7^!7+_>r#_ctri-`u#EKc}7H-exa) zn>k2`@$B$+ICYBbVOE}_he3CSZP`cG+4oLI^fCRuKovX0m#-cfNgWby-y22$<4Z1& zTeF&iB3k{1%&CpTI0o7rpIN;!%7pMMbmS*=Sf!l~4;?`VSORXo_$MK=e5<(3s6uzi z74ePsy;M4((b~Sa7kGs`ZQnk+-|=X4=+IIjNugcw_{10Yh2ZP3Qt^}+A3~|?kh-5! zFjrZx3 z?#wCVb9c!tt4jpM6|P3WSx20W2eOBboD1J#g)O|CYI^yR%3XqvKC%meKe&^BJDIkCSW26<5Mj+s5+&X5w^~b{NRtieia@P{n(}LP;Y{29T zp&a%EMr}5RDoRSVZyJ~Cdb3oighDZ=l~W@gafp8+;=kUhMzkVvqY0d`(P%*LJz7)` zO2unBUZ3H$2`>Y$67K3jRq?tXuSC3h<24+wX?T5%*J`|ez>9*u3yH_V7yHL!v1wK~ z7KLsT;TS!8jKZ;rs3r=>Jor!H*t^HP;n;M1_6f&EBgxx4QaJYh$GZ!y^S2^}_v6))Htd9vfaEKs-jqARf!XzX0)A)hE31ST;)rh{t?>u*GA(zj)&@-(S4( znC~y%c+B?~Z#?Gvi#Hzg{ly!P`TpXK$9#YB#$&#}Xgubdtnrv{vc_Y+$r_LOCTl$A zn{1EAsO}0=kKx^l#~!rDW6yfyG1t`+kJShmkL@^DJl6hqjmHK%;xXJC-6AZ%gl7#$ zU=*cEG*$zBg)JKE*!B9L1_-_SSD+O|krY{6@#OU!j@7vEaI9aN8I3iSXpBrZ!VdpM zk1MW`|1ia4HH@50iO05aJQm~=kImL!KljFC;T(^RP2UL`CXlYe?g=%hm^G-FPod-p z%;w-X4a~9@NnrK|dA$Cz2KW~`@*v(NFx!n!2+XKx!xvGlNMN=SpN!JwE+#O`LKgIs z&t9p4+0@r8f|M=`8=F3XwdjqsnzxoAehmhn9&_dq*x8}<}ddC)@ z?JpT1J`19upvd{Mc~5!cv;RL|<~wEh^8Y>aWz|ccYrd=pro@VzFZ=aC@#f2V$NA2e z)p+P~&6kZkV4p9`9$}j=OFM>#^w{UiUe#aEGhgOGah>yJr#`ym`LgG+>DEQhmwgwk zVObF3FFFV3`Lb(JE}B=FYMjb&hGmlvdBd^{{%i}&1|Y#1mKAvh_+J*089)C&J71Q7 zn94R^);Z0J$C}mk#$!9Cc;m5JZ<+Df&0{1UTXoPIk1fV$zj*9zB>wM=$L9Xz8;?yx z%D)|t8NG{)$10qxFY{#wv+a>j^HCg+4ZA_(u|qFiL_GGIq9h(Wlg_An1-03jp{NUr z$67i{l`W{eDq5;ULg75H=Lt2UnnQfJh%Yh4Zzgdg^cjlBuAuj+?W+f6|2sd!Dt>l3`z;1 zBss&efv^8-^JO;yZOxapIvwGE{gO`Oik>fvf7Tn1`OMsSuV4E7@c-w_{s+#N{rt~q zzJ3{azU;ko#bbATU!3`}+6jL1WxJ3>moJMwUlzX0IbW9bvTeRB?TAl2)<=K6(D|}D zD5i71tm`|MJYV+R@ra8E%yho2@ku^!ooe(z1ZD+hbK}kVvaYGl!0hbz-oUJYKidMc zy-08dX8%Lx%N|0(_-f|=i}Ph4jyB^no-ey;uoa)(ij7Lm>zVa3z46(Gsb+jOe5k}{ z)%SSgv+MEMFFq@U#Q&Y~S-IW5@!82;|9*VtezM5;?781Gw267o9-qBCn1ialS7{{F z{P~NB&rZE7D2dNH2x^j`HXCQ26VwI8XCEm_u4je`D$XobHlYxotv#Yf40DL@AH+sf zF~x_IxbXsH4d*ic&)(ed%TY071kZ|X?R8B)ef&0@EV2J z8+g%tnRWkK6zz}`DR-3Z(r1LOj=`QV#=u>;SL!;fm+miOvTJ3N3YpuXPH_rr7ziLvEyZ0LeN;&B5ot}aE=W>`76y5Xpxoja%i zJ87ZDvcK;~034Iq0=q8Z$&c8NDJG&_5^i{M510G=3z0cAeGefrT|fQVAjmk45~3A8 zhAoP)JJHzsG!22vVO@Dwn0nsbXXuHN=i7Sb1=>X_`U$L!!Cf>|0Au55>T1(g;&E&{ z>EYeE*7jArn?9)=hytu`CJ*mst)U~ZpcUmaH*R-m4jmCgKk|bpd^RCEf!I3lHqPoQ zPo`CKnD$9MHZ6us^W7o&{HDzU+(>E{5rjR$=+25eLPzJ27rTv={gX0XH)mm*cfrUK zBl}jzy@(^8#y@w-^@aPXUaFtHpEk!bD;pdU{AdH~&2(xt;nvMb??k6pA^5)jK~nRd;1Qc- z-mSP3i}*)Q2j(YO{6-hUuW0gD;y5FIrY|3tys7*@%rwithhxDDte1}<%;oQ<{5yU5 zTJO(U{6QDPZ)x&ND*u~PKK{}2|NW*}{u?fa{~M;LxcvV??@9i7&XQB&*0S@(1QTV|)i@m2d8prv)fZu$J6Zfe7sGF9^3DGFo1;Gd(f;|!G_(9STnzuW5kBpC`_z&hLr* z{t&%qP3%`a=$ZcLqw%Ws5)MYZ^6`3jK=q(Vq+N#o`Hk^y&(}YDPY~Abwfg5Fe_l-g z{GVUYi7gp!@5JKoEOz`H+|t%Rj~#s8{<#4P;OJ~FNB_L>5KP;P2`_K|{9^55$IrJV zoTGo%O;xT z-!tSQ{PPin**|9ge5Ws8`{x9UKj>okEtPKtfW_*cmtsq-jm83g&*t~J^qy6BQ1zfI z2cwV1YXe@jhTwq2D<7|1{B{}o=f5-Bp09uQ#?Om>vij#A4qr_FT=D=qu_}Y@o!IyH z7CU}^(rxRX5BEQB|NPn@pU&oT^v|{T!?Y$Kd;8~LF|9c9^Qac*=%1s9N&o!xNba9w z@XzX>WAg(ar>nBe<7nc`7jYaVLAdz+^P=Wf|LlmL=QTk8JaK?u|Ge)ZzyA5TUw!P- z{__WH&no@f7XvTCu5l1{^v@NF;6G>aJ6sI^E|YKe&mZRblwbR|zsH&7KLbBpc>fP! zF2C77C;0NUf6lb{GcJbzyvaBF=Oaeo^51Cj8(j>)qRBV==S*L|_Rk+?n*Q1I(na{^ zBM3X%ZL#|2s@Pj=qj4?2hw*zkde7RHin)y8=%YuVkH%{QUbWJ2P~w%0^o!}Ad43*S zOt`(%|HGG4XiVR0V6q4MMZ`oT(^}kcBNVM)A1&h6CGY|BQ`a3Z|AQBnzexT4E-ZhM z`mqO=Px*Pj@W-*Ho>p{HnWJ<@Y70iOL4&kz0(f5p@C zl=uuR{t#dNgd;6XpBNB~X z{iwwOmq=5+XTtS_qNo3aJOs}3Schp)YGg-81j&4SqR}|{yyI0~inkGq(z^BuI=fPR z-l=0A{-ryOCQuj^x?m0a8uQV~Gtn<4 z3$G8Vf8Y9;*rO+@!1}1S)2xrUKKA<9 zb7QfOkE{p1^-=Y?^VY|@7mHgT)u7Pt_;{+RZ+%q7ep=}N>D~G(vOYc-dg1jE==eDL zZV~m-dw;vc};PbQ={O_`>@+r7p_FWyheDt36}Z;se$gh7_*L;Lq;#Jt_U&o@U{+$Ha4~ z18M}N^x*NLGgbnmE!v4}K`Cu0B@Zd_nNcCQ@){n}rxYGyP9H0m=~r)wL~Et%eb*oe zPdbw4Gle8IZBRa_Ullw;NuSRY@7aJAj2J<%s&Ss{tXx)4@NBjc+b*U@il5}?ZvhfH>;>qb89VD}Np1lqmeWIvi{G)^9^LpgEd*P8+8%QZf{2-+i?Lf|9B%XO> zUWZSBqVvQX8|s1>rNl@js@;0(@hErXuzUEkYIlf3bMzt=tf@VIveA|#opz^OTMWBv zQ7Na_7rS5i{xaCTw+@JICDvD>+D$DB0bcJN)M3KzjAzvDFo)*oMJgE0f{2=oE+px+ zdoUh6b;255s6ZMdY{-md)H;K`vxL*RbrwNo$Y+dw`%uWJ=N|S4$W3OpTL4- z_e&({w0qLk#jtzO-6-Xfd&Ta#J1>LXcN4Lv65AgYsFcum_&@D{NuKa}@T|R#Mo84shVY zj#Al*&cf=55o8v&3l)JPqeI`?9bkhfiR8|YCA=ReM zdaRZ<3p>`qv|_J!SdiM_o~Qf@d$RmF3j4t$;;p(4FgMX~{i(9!C(A+6md+lelj{Aq ztzxm$<&{kAbeln8}gKVQCm5sH1+7b{sj^4vZ!p&4%ss`BF-u7)Wo6&Dis^Wf5 z#VWXv1yR?lNiH5YYI+s_bfu}dfmiWes`xe^#W*>nuJa{JaX(Y>*)0x>Rj{S0IKf|W zZ%c7bf@SgN_(&Fis5sMNI@y8Zn=Hj=yQ;-$PQ@zt*EiZ=z9l)Q#ebADEpFje+*lRg z>!Vo5fK|++c9mu-F6UINg0Gv3JNPReU@6`dZ&|z&AIah`a_t96^r8x4@za*#a;D-5 zDyfZ21sj=)4|MUfxbO_#V>jlC#mAjK8m$p7;P#3kbqRgd!33^u(PQ+-CyzSvZlo+<1CAh;3MIF z{>Evsc^q4c?==;Fp^|E`c^t3T##P>5aZO9{Ft6eiRs5`vVr?_4m`9E4i;ik>Q>S7T zeBD$$k>s2mNOl?1;xb;vXWU}((Tz@vX&wwc*Rz)5rl#U`DybH$U^7#36@SI`EXA47 zrh~)?Rs6D#Vm+NZv(9W>>pG~#iB82TxRnLbxZWZ;r^R35u~9NQRq`snLKO%5C{_=? zYAH@M74O&}zHuJMy-dY5{1wMqif6R2EY8A5YFuL!m#V{}DsEsY-ho*+Zq=OwDh@Lh ze@t>ti#L`sExyI8_&QY_>Z4ezZr@td)tybnKd*OKtbz+!5U#%8UvX_ytSxsu;`SCHP1d zf4bJ$foQ8<$vkp(u&H>AN;(gx>89dcZT&1h9&B11?^PVFiW~SS*3quFrFaYhsfeLY z#VQzWD(>p9c!;HVTQkezwfIQ5oHb61b2$`Ds}QVkNeqL&QjUc ztFjF~BHx#sFEbkGm#Y7q|!EBOTiN;?NYq*w4 zLZoq!5^#=~2nt%a0MzXApzV88t%rX?FO0+Y=3gcl{eY~oc?UTvF>AVrb@ zTrXr$rwLV9`B74vO!*OCU~gH04<#tbI+y6-?QNFL1?JfkYBGTVe{=0GqPc6-)vE3m@Qn70j&B3TDd7 z0&XpkL;|-}a1)!dW(p<&fGI2cc+XjJ1+(r_FjH<8@YMoICh$KJ6S)3a!Ij5izfu}p zK>`3%8iPkDn1#N3P+UPm##(%VE7l1li;~_^@aK}oViOch0svDQgKH|7g$65_gp3yi zJVqedloYSv6q~a83MK)7DJz3>&xk9Sb*qAza;<<{2qc%lMpz3Z&EM|y{KRkGM*OjDuIO2 z^3iAoe92rs=p%+0Kk;S;3cQT6)aRi!6ak^3HW`1WKq%&5?;6_+mx-NG`NBU0H&-Aep12A z`mB+-f+_Fe3tZ7vAlU>Sso;2K*De$VGLC8i#BE56-)vE3m?tx?-SaNiIu2erZf|9V}V2xI9$OsY|6?j zm;?Y8KEQ7)m{}(pNQs&9E54xej(#a!B!SmR9O2q4X)HFM(%_0j0aF^g;$a1|(3=V- zA!CAo=L#g5lAc%a6q~a43MK)Rn6fhX&*R#TDPydHnNnZCy#$g)zf-(}I&ihIDGOFG z2>?u48T^`pnRU3nxPmEr@dc0?0?8)uQi(fUm2Ar9P#Ro80svE121hBFSrZk^lu-iy zeVKHT1n#Ebk~U?JC^%QZl$F81{H5)fGB#8&2^n_^c)NfLD5;!+57?9)r;vf#F%u_K zRtAq#Fthg86IU?hTYP~lJ`_k8P7jSwB<^r6wkdlV5TGsc(FjT2$G=S zcO;F)8Yq|q0H!nsZ#gQiV4(;FlaO(pfKvsMO-aWjJa9d0Q?`%Ns2vNKvNCvpf|<49 zK5+$8zQh-}qKQCq2|Po=wQR~pE0_dOV#>r_Ubga@woZOXo*G`NBUP-5Yuxjm;~X64)~ zu3*Z1e1R(l3nY@jSqkoHQ#M$^Bml7R0j{KAX7x}oQ`!r-kw6j&Tu;Hb+mzj^U=jeB zva&0__(NR5tcnU|O0a-WFJT`i6Zl674_t>Njm6ee8eBmF08<)+pHeUjeO^~wK|;nH ze1R*L3nYt@(iQxnP1%bICINscD}%34Fta);m?@74c#J@@30zyjDK=%56-)vEQ&t9N z7lqP!vCYXwq3 zNiQq7giTqJf=K}2Toe4y@7j(jV=DzSB}TwMEau7!!_FbM!Gd^ERr z6wE>=?~xKSB_Cf`>@zLM39aF~U3T8?J0ap=7GW~w7g3H*Hl~6DV08CjKJYB)eIua?a zV9Gvxfh+beVjpJ_c$vfAY=1wU+4c7j3%YR3YmtPCEnU}hb-TU^1E z@9+h#xK0w^(MW$^t9W>$uRnKD?ws}@Q-#_X^0gn~bjG!~0h za2NytrZfisa9CWyLXiq4A>&p7rwAmHl7bZ6)u!w)g$&e=1uT5DsJenl$fzvf*94M9Nqnq^nblXpOi2=OS%KsdxS4{Fe$MV;vAY#a0svDQmw3&u z;tCe3qF@p-DhT*XffP{EuM!@(=1LliZKpK2f&>7jGzLGfU=~_lTU?u48C*`m%<80IrX&jZNr7Y$_)Y~U*pywbU=jeBvNHG+LtMeEQVM3u zi95K&;R4Af@V62kxXRm<`3%RtC3IFta`Yi-v!uyeZ%v^V!F_1RkW|m6FC{ zJrqm=08<)+3xCmeOc@_lFjHa$JVhV{^!qIe9$`~fQNbhtFlA-%y9#F3shUz^rX0o> zR9=EW!sx=tI*B`64Q$Fjr!=^N1OOI3np=W`nKetnOqnR)QUZx2aI%66K4tf?SVsku z0Kk;SB|dgY+c9Nqp z;Jlx;9aF}}3TDdP0zUZ(`7@!w2vzDYoRG;fXDD94g`NT+g^X&OqDYp=yPchY{Cn{U z9>^A6uJM(`8m^h9f{zrIiz_q$f)p<#WS*^zqzfs1l`u5o)pjC*FBgp~Qv z_-Qot>j^H*qUU*!%t^T_w(dGvFhs>#H5js)nNhgpX)Nwmp0+f@f}pfB!J(sQ$a7H^Bk+~QO}WP35*K*+ja5F^__I36PbL@9 z?>y^OY;)Nx6UH3l2_gbC_C8g$)uHMv=aB^ z6}+;ImZ&+N4{CgX4QjHCcldoKzrV)s6Zt)p-$(QNaDE@e@BR4w1%B_v@7?&l6Ti3R z_g4J=Fy5_|bMoOr*UxQ?y} z?)V6m_|(3BuJ%4YUW>7Q?$Hub%BBwO?qaN;3sPdiI}W=s=RoFMZQ318Atu?qR^?2) zRWNTBIf(4OPJ&Up-S_S-hTXh=u6?lB{g6ZZCECsF=R%Zt@@HO(IXb-Hm@NhTXh=?x`TL`%#DXOSGHU&xI*5$Z0pusmbn#W@y zRJ*nLzKp>H<93$uBn{_exAB(KZWV0Bf@F6+iA?QwKeneBcJunVm;V;KdpopWqTRfH zu7(mTD^cynNf5R3>94EZy(ow!y9;JH?N-4TS&-~*qTw#$99}bpV5j5mV%W{==SG|r zyZbn_U!vW-elAjp;Yw7y^>)7{Gt}-EDb^&rPtJ7Ot%4I+knCsbUq`r4gSGxyN3`}+hIW$}A=RRRUvilK|blUywPS_n^ z#QM2vH^_~V@4abvD5L|dpF3JbWCy9N^Pp^F7MADRsIaXaOluKSZL6@eX`ahj*spe+ zqp*Fn0H@zLe_@-e>?W1f!s>{T^O}0L8Wn*G`>um&t)H99g5=r1XeP>8*sIS~*j3ky zw-OxSz@B|gWp8#CR(r8q&BFGfB2ZyZy>54a<=NBI$SNwV+rO~gx1Ynam9+q~9N@r( zJzQA~OHo<%tcFzMxD4owFLYl&I-pgH;%EsFIKpQ@h!+WUWEA#VYucsd$vX;{SYWDn50srT8~|B;29tc4tH{(tEkI{5ZvIi%V(hi;CFHsaOR+XF)WWNhIfV^(Wg*i_3Zy zpLL1F$6j+3oqwQva#U*?cYyYr;dDOUCnTmH#6W=&n^=wmdO@GDB zEyb@_vMio}k7P%N;!>TMhuXIg9?#}m!t_!uV1*y2G>#pZF$f;f&hlAP1xyv?S?O}vWlRmHV^6l6*@;@19(lP$%oud*!u0w2lZ`IDU;2+f0`j%!_Qk8Ft1}2lMGSK)R>4&O#v0> zvLGye!C&#%Z%kJo2(>KUfscgSJke>fR^2R1@lB@UcU00@$1jUS7qW zRq^9KinZ$QwiLfZKq_Kwr(zW>V=5lvuXy@K)8c}Pmc>8gBjJ8{)oHQvw)ZgC&($^+ z&sRycSOq_1LAbhgkKdXwL_ED@oVM3N!$MbJiiyJx>t6&5RLa~SBoE^xV z4W`BaRIn^QijQP*{sgDRx-9PCcvEphQ}J?@REt&c3l@aptNj(~<w_H62AIa6JK8khFSvSsf_2z17@#A*I=vCik5jZ)MB%HRcUuW7H?p5i+ zN8}sI`DEGJpAsOrdYi2Mlo0Q;er~Wu+j=D%AemR;3wX_imy6iRn611zHXY*>Ndj(M z*yewjHMvcw!WyVxraUX)zca}PSi%;s)We)0YwYR^)wzCd+gdhTByJNV@>dn!D&a*M zXC+8*eP$}irv#iYMdA`>7*u8(8A3wlz2(^Cgh=B%e1g5>Bv+#GxnhQx+_x2z2nvb6{$RW;Gq z2+6sA?jwaI8>Iv$nNM87)&&VK8zZ;zt%Me?!(*u;L@bBWsDbd%?p;6EPN*XE0a#hc z!IU=zyhb3o1RkW|`I5$BJrqm=)J*svY%g3bb;?4IDwu?fSOLE&kOE4&MZvGwlvPwP z2>?u4*{Sa;m|3Snq{K`)j4!C@Ap!}brAX@}=5Y10Df^t#;0h7|SokP$f`XYfOTkQ; zDByU3L=rez!S!v*Ix3h102V&L$5x3enAJkTOlc_KYXp)=;Oi7z=;6v^v62cV0e~ru zT`@z!Ec9DhaRmt(`|$;?*eZ}@O8QcQ5!aWJ#$t0R4Xz*ofGJJdzk*q4vVuv-7$e{e zfn-rqcLn#eDQl%*5&)R8GC1#RaRsv)E0`&F3)n4?Yyy{8@Vz!=Cn><7b}V4Z%HS*o zGwY`^;tHm0#}~MwtUz)JJYS*|*U?wl$1FBe!6bkZQyPQoDVT*`Q7{P^Lj=4@AO)1v zUcpNwjm4TPm;?Z(GzR~;Qe448_b8Zzj0gdz3nYw|4+SguMVqoC6nRiP=F9rt^>gV8 zX4cNq;tHm0z!$h8ULbTkfH6nH7gv3ovPlXi0hCzyXveh`%&cJwW=bCcmlQ}Mfge%u z?-|mLDXo!$NdREV%C6Y9LR`VD+Z4={>jnI&K#~b^T%rKio07(22Plo&v4AO!!7nSA zg}x~zt{@>J2VdZdUINLYq&F1Y#-=Po!6bkZQ&tAwtYBuPD3~cd1RO4qYy!t9xV%kS zq=HERV9Ltiwadj7%(_9rOsOc~9b?#^xdhIaAi=d#(pYQ>05GL7_yq;C(2A1c z3KB9t#}~L_oInaF=~V^4Y*RK=!6X1MWo7WS3T9R>1v90ifMW#`hBFSMfr9U`DXXqv z5&&5EXl~1L#1+g6Q!rCX3i#}3X<7u{CsBjTkTe$CNNI3Iq=1DF@Y4!rp@k*H6(nTL z#TU3@zCaQwX|#f8+LZNGFbSZ z;7`92S1_xzf|+tMm`hw!AXx;acn71n%VkrxoYLS55&)R8GWZDvGix4LH2gDVrhtu6 z(nS(@u!6spG#2Zr;A{a?8iRur%tEadOhQI;0e>uzTuQoC!7FXbLKRE`C^2Pa@Oxj1 zE0}dUNJ`9@W1qlF5SsC0?!OVI~!AzMX;O7JqhSNji zMFkJEDeI(Q5&&5EXl{Qk({@ZHax0iAjRYJckVpboR&b-WO_ zTzO16fG==GNr5C1_$!G!T)(HwK|^UDP#Ro80svE1c11G1nUW#k6#_{nNRom- zk~9{3RKX+wFr_j0*QMHyDdPhQW=f=h2MQ#Mey^b5?lxtoC}f~^EMUsY;0X$5*1>#B5>5mEALBaWw#$qiL zoGV~TWANTDv>j8%ItnHsqq=~<6i5Ljl~C|po3h_1WT1A;#L1ME!J`z+tX+SLE10qo zU*L)%0tusaN$*SC;p$~mHd(fWOzA7&#sY~XaH4{1*pxL^FbM!G ze1N}QBCcT8?Fwc}6#<_~V;?6H_=JQ9u3sdL#eSkRYR3YmG?u4xy0)h ziz}E_Rl!UN6|h?%*#tf;;eqR3o3fph23L>(z?7B2$qHuH$}{2$rYyi0xFS>_xdfi5 z;4>qn^QW|73MK)7DJz4oQ!ul7E0`&r1iW1!1q5lR;1!a_Vz()n1OTQq27kFoT){$D zDVT(eQUZQMAYqt#G4@M%;L5Nm`-als3K9TV_-Jn370j$fr^OXa`2b(wig)Vv2D3}BQ7Cyk`70j$I3TDcq0=`Bdi3Gk|!G*)6Kc=)B6ifmDQ&x7x{DtBQW|dJe zQ%;@Y67LpBGC{UWc;H$sX)Lya(%=db0GQGk++M*f^dVR@{F9I|OTcdlB#V-UC^*xm zte1jG0AR|>;9vza>oEm0rG?u489Zl!xPn<{PHH(z}Y7F5d~9%F#SfB z0GQIa#K%9^c1#)L6wH*y0!|l57-oNs>lOT>O<8FLlK{ZNM{|2a!OSW+q3xI`Kj8~p zaj!rkDJe(d4p+EM**r>vD@Xuf;R76_U`jBiDwrv+2snS3^vCpj4+Za#G!|>E;6wpa z8oMI@Gi}F|@j(TXka3TIXA2~mk}4{AoK4wj3K^&!GjTFyW$>#CX4cQgwH*^>C%(WH zPY5K7l0KKX!xd{&_LhQ40IoT?I4cHUX~@NG|-e*Fsp`wnR0`G4-b(plE5b=JaFxlG!{EZY1EDdEPQ|mE0~2g9}`!Qkg)<^;EE3f zl1NE26+G3Z%%fluK#3_UyW&;_GpoOXnbJ$Zy#lA1(HSJBN86CD%h0mqBOXI1OTS241Q6;%=-GMxPmDQ@dd8fH<*2#P2foi z-Y97-ma1S90GQGkTv@>^^o)W@$mlHKsRGHRq(%x(vnjh>!6X1MWo7VJ+2RUjU9DiI zlos&g0x2Ny0SOOWO>N3HQ5sx90svE11}7<)S&RP^S1@HBzQ7d~1QJFUMluw9Y7o1J z#ri3j1OTQq23Jrp3w2d6Q(6o7Yk@=(I8wpclEz|H6-)vEQyPOm`&eATLS+?9LdNMo zxWt15l1NEABs_5Suqj(fX>bJz08CjK+(E(2`Uor<{+aTYfa?e(nZQF8e3MOCZv~S8 zz?7B2B^1o8HVS5nTfl$3EL|jlt1I{iNn^3A6r3esN@MW*ABihi=xl+Mn1qbq@dcH) zh#^?QwpoG>*LyZiUr-vZ7ZsqaLPjs~xFVVIz95l*rtp%5mun1DUKdlr^9sww-Tsiz`nmo`fAU{H_eVEgKSxV`+{2gW(42CS>*vyA zz3b=VhF2)XCBYp$QW`giuC&-%HsZfXqP^>fdve1UP`H);&1l7Wb*&GmE3B;fG!&z3Ry zpR&BQey-%UQ;zj>>SlT{Fbe$Ia;%?=ltwG-=ep&RS4m$lfE?@R7Hz$io($)|e(ss; zY5iPxe(%EXPw;zdeox@{7W^K~?~VBVK7PNO-)r*wt^9r?zhB4iSMmFmc)!H;b7L!B z*!sC=GtBjKL1>4U@cg+!1*d(UKi3N>=YIa&!lVmcKUe#`0PE+%$v>*pdiqV4<_J%29zpxn_v=LNZ;!g(vqlHPobW*Mg_ zhU5DmR4&!|{J9A%NVf%UmT1qu&gAeMK3>xG#8yu)rx zGti;FwU^o*Y}!3W5}yLU)vXSe&(+Aq;=UO$(+ zR_xAs)?qi!&B^X^rrlSOHDvcRl{4*D!TmkRL1gzY613UvE>#@6dHviSTFNR8?U!gb zub3Xt;?4G4^rrj!d3cat`{kueHcDu{JQ;hoN^>cN! zl(#svU!vW-es14tu{*c7!)|T94cQ#neKT1@cF$2c({2^K%Ch@}hJ6_C&2?mz-Y$mS zyne2smhujV_Di&z*UuTN#O|HF9CqVeh3dO~cRjvqk~L&^w#u1ytKdB>NbS6kqBG~( zl&b$JhTXh=uBn!?jzjw;+Rf|d3ceP*_w{txt+)HV{IuGA4_QNYFH$+vZWV0Bf@F7D zf4d`Q7sGB|KlhN9vY|u!CECsF=T5E^yNwl}rxqXk%!B;FD)1TJhDl^v(Dv*gLVIuN9C8PJ35rHLylY?6a%t)FXa z74~zIbQX5&%ySer{eXD3f&(15uurJ${_c)upq~BdNo@vo%)%~KIkOq4;1U+3W)R|E z*y`sh?9TmC*scz6;KI&R*?XOZ)sU*CS=e-%2P4mxcQCE>bJeZFb|6WoX9v7_4$s!o z0?dEf-VAUemu1Y_Cw5G8{A4w~RJWsnTnhHEAD0~UcA>*{1HBq9q%g6Y!Z5l z_K7a0#edNZ6iE(tDptWwEC`FgAvveTzrJo-9OYGfpDMo7N3kxadDBun*i>B7saOU3 znTj9tSNx)-c+HQN#Y^##?D*^{d-Yq-AdR&Ymoyc>qLNz2I#^US74M;$E~mvOXP6eZ z^eS$qiW~VT)@5-AJDaY4g@9DVtDK5e@Cz1%tDo{$Jj_!3-4B+<>+z9rE1q;(tc}%U zDZa{7JWVB?t@z>+P+?-G!Tc&Agb3brs65A|0(<2BRbKlWG_AHqk%{n*86vGxmPEyZ`5ia%3H zwO9pz>`1PG#ijif-(o2q;8pybD(>#1*gTGzM_t@!m?UG18#xu5$FZq+EXg?=*Zb2< ziwk#K79Yb$viNXkr^VW4VlBmuOvNiyQY}`&s;1&={1r!9ibr`B4^qW_eH3FNiR$=p z2eWalIHDHEITfqmN*08xr<0u1;)PR9iz|2)mr%v0J2@@Zv$R2$;y6=ru1c!KD)^|W z_-22_4_b;R?Xp~*fsf?s;XaDhgI8OMb20hFb==meSOxRiYvYD4 z-Kkgw>zRrdket)vZIexlYkC#mq>8WgQLI(>`x9p4>TW7N+`(b73a(~BG_D8y6}Pt( zXYa5qeg_}P;x`m$TCBV&k>>ij!@sJCkYm#$Xynm8uaXqi%+NwChN3r&V z6)cPUnu<@icUY`~2is}mde~oaPfPKa+bxUd<0D!8f#OVyby?io%%jG2I!`Sg?o_OT zgG|L+NzQ5U?-NanW4($Ss^U66iuEXIW+@(SDh_cfR>3N!;wStS_qP;p{LZp?IX;rb zi=S|IAUZ7m+SY7bA*SN-DyfH)3NB|s)bT#U&*HydH7#!KRqR&9Q9g=w(8;hAk0&4% z@mjlL^r}gw$^?IvuUIPgeQVkJ9X=x8gPc#6t$iwyiR%uN^%f<>`>da9Y|&m7nq*EF zUK!!#B6c#KQr@4Blix(Fr6NhdjSJiS50{7zO<=c(Py+=srM7^VF$7E4$}4rAP+8_A zMHo262?J8dKu%O7OB~w9mLvc7_yoh#g%@comFUEkVk-DRVUf6m2_Q&uLPF-5iitEP z3#O&yN;LW@<^hxYv|@$dVS6 zXk4Wj%*P0(pbdLE3nQ&@P+}0*_nelHY;2#gh|S@X6KU*M!1 z;bjwVlJe%+bfhYh1mJohgIZar!g@x*OzAA((E`aOa3clxwJEz@!6ZPGo`eEI}45oatSq|!fhcbY_*H=~!bONp8C zJHDXuLIjdc;EfVYxQ?}!V};TdQ5to00;a4CPE;_n{-a=~OcC%Jf#edTuY%`G8jE#N zFbSZbJz04#j8<5&eVYnpU6Fbf^}MqEKc#x8t; zEBXi|nUWSr_~GhoQ#M<{B!CiARt7gzFtaih%#>6C*Az$=fjcSKWm6WXU=jeBvNCx8 zE831JuMys2vNK(il8O!7Q|Aqqu^Ej7|6gS43^VAg*A_N_>GUmI@@2 zz_S!QN77hqtb$1ZU`k_fgo0Vd!Nl4(j)~0MXrNI>>05D}`a32LTYt?#j1ydH`3tW-+h;)$zrg#Sf zf$KX-W3k~1&Jr-CG5C4~v(U2&CLyDXfaeG#o01wUc#=(74F!_`N=#W9oHJTn!K`Z( z%#<<$enB9)1pZ0F16P_&*=9a%9e26bF`*DF35cm}ZKV?(a zU%?~*FlA+MMFlhKNd+_IF#+ExkT9G_8uuu;flb+s3MK)7g^zCY|L}Gua8Xt59|xDj z$_C9ztt?DR+={dkGYb^$l7o^QEHJwqG^g?LgN&zYH4X%T4~wlmX$lWqrGow zX=%&bb*a=g&5Zx=S?=6B!>~;D`TO}e=bYz0_j}HH?%D6ThYubVQ!pz^!Av<>!YQsL zkaz;`lHq~-NKa{xNw$t;Fa;?9EPQ|mD41DqgGJpxQ(hMET7jeyWTJxK78$DzS1>66 zOfoh_O$D>kEea+jGey9Y1(Hdk%M^USBeDhxCIx`$RtCQ@MNGl0Q^k^ErW`>453i#@ ziU_<_#vSfU9g!_38B9S60Mo4uzFEP{nx|lNf z*2uWSeV-$;w@3z4kOIJTD}%c$m{~Iw%#>*Y?ktdK`V{G21-EoW)=$Bt0I={;+FwH4gf5!q21GEg}dFx|@FLIpEx&pI&$Q??@jQ$z`5F@YD#xWoNx z4=Kkao1tJ*K#J*B2FELyS$PU(%0mL)E|5}!^ilAKB4f216if;LlZ?Ti=ZYyBXF@;1ow> zJ_VBkQY?Iw<4YCHtQ-Y1Ww?OP7DzmS4Fw;+N!nwQU8P`B09g0{ZfVAjP7W=aDA ze=3kPg8VGQ1NSE)W3?|y22+p%z$9Z+j8-r!ZCE3wASH7-0x-q%0?8!Na|(Xc5!qw~ zlLEkWD}&EhFtbJ~m??t=e5XK)2;5o0sgB56Dwq@irdt`jdZL(uSq&A;lsW>A5y)Z! ze<#BO_t}ofN=XJ&kOIJTD}yr>%&ZSriz%4$76LHE*D3sC6= zuuH+LG(^FqWcCyAa{@U+qIL?N?1=0l1(O26bSs0GJR+uGR$T=%<*!wo;%)+o#_F%R zTZRYjD;<%oCmBpZ3IGcq#ciO1nY9=!>i(JXihzGLq&+6^Bn9si8LN#@aJ+zp4{$97 zvr@W(Ny)rPz;6m9jYKUJJlzr5xe6u)q?m4HQ@lArOu?+bKamtOZ0Qbgcv1=n^&cBg_#0bsh7!6(LRIi?#u z3TDa;0xrFgZM>MSU#Q@fB4f2E1(O26BxCR#1+&sGAB!nS$^0JzFvV1Xl#*zzj62+; z9g)3FGMIuC0H#|Re4~Py^}K?a;uG-o0y#q9`xM;D5!o#YCIx`$RtEp{u$E)GF-gHp zxk|vlb(ba*Tkp*J3f?a=Ry##Q1}ew=!IAy_+_MU1CG#UO1u2%JOz^iQY?Iw8$3z%+Y@M8*Q*4~w33Z|4I08{Mm#x^b@@FE#^xVMUo z)n+P~6p&()G5AUavr@i-Ny!`|;5h(n1U(m5r8Sq6UY$)zpUUIj>sNYFexC# zbSr}|Q!ul}DwruF1iUp_$}zndNm1}}k+Is<3XYZ+BP3(+)*LYfE5#_7l+1GloG*}g z5*?A@fjiR?*&dR?6r_L@3m@e;OTo-4ULmGn$_fNvicSJaBk*(uw{S$3r(jY5m~Q11 zU!Y)S-LGJ#+$rE=UD*_w1ioIuUx|#>S}B+m045oO*NhQUu##KBq+~`3_#J^1k?4CF z9=K;aBHKYSn1U1lrdt_&uY#Gia=Dm-DQ_bHQ{*rNpRhfl)O#E;JuK9~@8`}_BvbAc zB<>$1ym;Z2nl~u#Vk?5n6;_HjG)FjbTOQ(EH`u^|d?s_5c`#Jiu3ZE&)^U9?A*2nPu+z}}b^8MT^S6Y96t|dSL z-_PZ|P{H?et-ooG@8>S%-;4RT3ICqUzxDXH4*y2-@5%k7{~Q1Q%)bZt_gntm%fFxV z?+*UmjNgCw{ha6XTkyB@))|FU=&$IddJlB-9`PPCyeB-~j}}AX@xHnYjya-__5EBT z4D=8F{+xGt@b`0LA*uZPxiME%`}?_-*&)84OOFr!e(u$~D*F3#w+{^S`?=?31SsFn zHT{6f-f8^(x$mC&|NDM!-$L1cpOFx-BLz!6sGRO`?YWK?nagQhN4pvlRnOXLqKY@O zB5gH!LWYsf?`sx5$o2I!zMtFqw4`!P2j{jA<21gXo20}{CF=GNEJ9GepK7Q1UQL5I z%C`{^vwsiwy{t(2o-SiXXTIOhJdJ$w_j6x7CHdZT&A*Uu{(i1Ni8)Hte50SGe7|v} z=6fRz`zYUO0Wtgck>|1^<@+TWAUgBC@`2OHH-A6(&6ASvomc-0`R4EEij+7>iJEUr z)+yhc;x*qpXpBes?jI1d|7(c3tVsEuPnv;y_SfBi8u{k$=MEN0zQ4HYU&uFqKQ}{( z1xnO>Yqk9bjVk)fB6Bwl=qTTV17i07p}OU)NcnzShJMcHy=CNS0ZG5gE;4pyXmFV$fm1}4_`bN?A}8u{k$=l*Z-<}G-pL=Pc?8s~p0ETvm@8?FV?#U}8`+=46zpXW~yxvBM{Z#cP>E31S zr53UxCH9i?iM^q+#2$N75<4yc96GTZRJUhfVztLev=aLgt%y-#FAHG$dyGc@#AcIb zpk<%RsKm0}Gyz*LcNUh=iEW~~b5%FcvahsK%O0aOD@yFx0H(jW8^?-d*%HzWOzijf zRFc>kZ-`}M0>GgYJ3@7TZ5vPwbnJDGmDp}pVz;QCRSZ<|`<7N4bwT;WCRCQ#L$6C> zM+bnpBOI)k`UhO{8z|Qw=X_f8B2!)-myi&2a};>)dwKTu75)><(Ch|_0%M)`=F`y(D}M|{6VJS-?;-J-pec~m4m zprtKJ;&p)$tK#EU#6Hps%<&s{TRD!fBmQl^D4k*RO8BHp2znqyUb*oyd)@)6(QkNDZw{5gIMUdqShpoq1w_V7o% zgBGwzvwvX3s(6VN@#~})nBxt1SvkJYj<~)?TsJ6UEi(r%v#M}^E8?$P1~dw)xSADF zW8%w4oa&GGl~?^ao&hiAqeyX9+o6x{Nq@v&FVh?k3yfG5GpvZ0l3rkr|1-qOaVtCG zi#6g#K@sEa35~$w{SgndBK|QhAjhg$$BOv+@)6(ekNBN={v5vsFXi|}#aTJlcA@xE z%hW$&t%{#?t4dz5a+ldBvaO_u-`+FI1eBV=Xha{SlvBqB))%7_lnuiPd`iDd`2~_{d-@$KCCS zJ88u2gCfRi7(L^K%%gfd*^0PsV8p7JXGMHl`H08(Bi{P5KgVm}r5vxgEU*F5>0Bp& z#C5HRi&Rq^5LIkoMZ6ztRY5uadytjmzIMbZ8gWuk#A?Bv&8@;!L_kVnqriw&@pV>2 z;mRl<@f3f=U(WUCxD;N(m0TK_W95zYN8HGY_(j#!9IIlQ74gsSm&@_l{)mUz5vOa! zy@DdvM;GId_(cLz5-$ymSQY=cL<`qL>PH4n_OwuD=oS%s^;74Zty)EukgJXS=+XO)jQ&L8n3cEqDK;^9FN z>t}I8{SmKtS96>c7_lmLvLb$p^a2}@w+C1`u5CyB=Zli#W0wTxSPN@Sf5b^v#3ia3 zSgOB>(ZbcFe8kuIBc6uXbm)_-5swXuSbMuSm`8=Hg%ufT{^G1rQC4(SEv_@mpc z9G`1P9HkLQ1VyZ!PKrO`URK1PH51!#j?t=KW<^=Ae3Uo&qntC_pVw#M#eIKYOg56w z)<((5#C?!uC@FW6z!UWS++Vj@8R#uExw)J0HVCg2Ln8AM<-O~O;~Yhj0$yP*W(RL` zUlXdZPR!zD%3qES~sw%|VKZH~R_Z9Jwpayjn4*F5*HLZ^kMn4H%$+S#zsc zF5Yacm^AYo!F(-uWtu<9$icl$1Zn185+G}tzyJlz!-`2Wcf7!M!nbk7@WDun`7Zfv zZJv^5S?H&Q6!`tz^j z+2aZ(1u85S_%a1EYpjBqGD5(onsP;nrVpA@6nsErtai16NdaJz@zdIxE~a3m7zH!s zTmf$pNIZd$$e6;t%n{ihlEDE@Dr}zQ|GwXf@Gv!VJ_ZCPdfv;Ea^^V9|DVP)hrdy@_-y)`9mRrG0i4t&KffNz= zdl_uFf4h+F&T2bI22+p%z$9bvy$WWfl{3T?q-4I008CLLki{gLrr`HQ#%ehVCIx^= z#^7iLv(jA(CMEM00Z$c3DT&%Ec(fz3ixo@?0Mo4uUfNGg!K^bC%#>5pImJB%a)iKN z$SA~pts}AxB!ekP0bsh7!FMQ_S?_>Vgw~xY^8{R5AklbhZ{{la=ml(JRvW2cQUI7_ z46dzUR_d={rt}c-7J<-q05eX(%S6U%4HZlZ0F#Wt3;T*GSgGteNiivz#}L57%M(Z% ziMGoq!To?EvJXiHQ;-6{bSs1VD41EVDVQlU1>8;`nFM}F!529q8=_!R0GMuN@SlCO z9Mg@d3T8^8fDfF{_AH|7O%?oKk+E7`1(O26BxCSg1+&tx&x$EX$@~EUm|~7V7L#b5 z3?JOn9FZ+18B9S60Mo4uHWbXP7Zl8t#|4}&kWvBMd43eIpu=20*y04#j8$KTzo<(O{l zpkSu75^#Hgq|x;{3clD8*)KFGpmHo=x|LJxRWP%@dRk1ulpP4b6bBni6G`B=WMtv~ zOk}L~yn-_YOfm+yQ!pz{Q7|c)IRbuNAVnmi@ebM&_p^@3k`zn|Fa_Pp;N59r3TCxY zFjFoTaE3q@6ZkI~9=Q8DA~Q)wGSf|)f=!Auz`;PV7>gupi`_!38C*C?120H#|x#oKy`DVWtv!Axl=;2#_D z!;8iQ);uc11NRA$vD#je!4#wbFv%F4tzcFvc~VTlln)VrDb@)jp1?B{yx0+0zJf^s zVBw=2U#MVaJ)mHw3=wdiK+*_&gMuG$MAlltqyRA8$|+vkQ%u3E^AyaKx&rPZkW2#q zPlgBX%N>#JBpFOW3INls48Bjn%=)NEOu>}J2*4C4&Xe|-z&-_kFEUmetKcF5lZ?Uj z70gOQ6--KIx`0;+WHE`ZQt(1YWHAaR1*Dj6W$?08F$J^EQZQ5geu7gxQ6QxR{!)eq z?%|Heib)1jkOIJTD}x6qm|5?FMcqGBUKQ~50y#q9$qH`ei0pm^lLEkWD}&EaFtct| zFjG7NKIN8jjMq+w7Jc&wW+~Ho} zh-@XvU>ZN96r=z!-OAt;1v6`wf|>G!fJ+3jm>?q*{JzLot-pdv0br6b_{dFKj_Jm(3TDbR z0)9durF8vV1wZVFtc->XRE`Bqw=#ITf|+%2nwWwqdl7&sZV|{40^C%HZo2%&aFB%#?fqHx)=UmR`&|6yxP70Z<(N{GpkSu77VwsH z`9Z}KI7-3GM8;~r(vX45v4Ba&DW0ZaR{Gj2rXVGACjv0V(*j8&(c3caa8GnZ_JV>* z0V$?i8QfmM%z9M8Oc^WS+XRwH;9C^j-4R(A1(O26bSs0uFvJwhYO7$T#0a>VK#B-_ zN`?pSdXC5rkc`T)faz8S=PH<4|9MPI!IWYIV2XVW*v5+qJWs(}M8;}G3MK`lm}Cr& zQ!pz%tYA_y?-%e(0x2a?4+VQ2k#$foDF95jGI;xqVhUzmqF|=D1$>J@ju7~m3=iC0 z9FcuRGMIuC0H#|R{E&i~wXsl4!IYHC6=a8m`d zQl^5La+iSL7f3vT6BRs1WUSUk!K45%$r!w@yO@HN8Y!5R%rgZ%Tp(#A`ay;V?sP|F zpOOrwAO(QwRt67OFta``5K}Pa9Ry&CO9YZh;Kvnwjw7;h3MK`B=~f0eP%yLZRxnfg z3wU=l+p~zkS1WkE$XKnJf=K~jk}-IBH!%e(ovmO}GRvlNii-rYm_&PIc;FuIh^&NU zFa;?9Ot&(4u!5QO9$3`pG37M@-zbn$0_Q2Xy(6**6if;L)2$4yqhMy;reLO|3ixlA z6fFX`Qt&~MvD$eGJ|bX}G5D=yF$F6{DwveaUms;td?1i$Y`rsg$nd~D*AdxAB!ekP z0Vx(f+T(r-X4V3*$P`R@LBJyf5>Mb91^0JEHdMi+0I=`@{;R8&W4f`If|=4qz^w(6 zM%OP^a3e=#XDOHz0H#~n6t5_lS-($_6f@-j0w~7^&tV&95_p4*JKUd%jMd&H8B9S6 z0F#WtHz}BvW-FMK%pw8L6-W_@Mk?6ni0oDclLEkWD}#@A(Q-^TCM%dJ9RxgBAdBgG zLj`*rkwqw&6ac1M89YP5%sP}WreMlf2*4DL1X4=i4`tlpuIY$uKFMGTQUI84W$+CO zX4X>*X37)+e^yV*F@c9Dc#X(dt*3&I2$*CH{$G-oW4f`Uf=S72BVeCEqUps*T?LPI zMD`mE8K@k~ixJ_YxcL;!tbKW63Z{ID08EiAkaz+wmT`wW-Vxa>1(O0yA$)+ZQZTco zDwrwb1bp&rHbokN(-r)K$XKnbf=K~jlCdeiOcYbF(&Y*!C9|1;-xWwEiT;-1f%`>A zWCuw`!4dN(65w@D zDPH#+;lxc75^nw`m$Qu9cEK0?{ak+CO1__)|K+#%>Sh=1&dy-!@A)CVpL_7PKcMvl zeYaHQ-=C}fIdpyUrPsy=75)9WUMT4yzMo4Fary7(CUQDMem^&qE(Lr)cMJs(@WAiq zI+L2u{oLQibMF<12av8D8W%$py( zOKvKFLuD@dR9RW7uTMd0VV_AxVRCGYIs1~bGS`wLhIc@0yfNiVS3ap4-pyv#iE|=6 zz9*JNM8cW67>+A$8|@ZNGnW_ABg|VHXLQ?Gpkt|OBSy5sh>W}nyncB|B0KfD;8 zy-NQIw%4Nm71%5Jc!l;VEU406pJDuVdiH8FFoeAxxHGi9nlGrHy_U`n&tB!r*GG?6 zV6TRMRA{eTr&ejN*D%OCJ$wCidkA~oFgUcmetE5W_L@2?JbRTdUt8BzV6X3ftI%F8 zAFa|}4`C#DdiL6KTL^o(28FiQ+E@MdN<{0GbW0MoVB9DbC&wmI6Nc97))&-T`LV00 zLTdwNc;AnWq4%O_zvAF_YhUIm9FOKn+Aj|}*?3Q3-`F^5!M$YFyEcP^WunZLYQhT)7JeF_{eWspF4c76fQ611= zbqm#CH3`vRxu#x+NX_}TqT}#>CY$Pex1cl;Tye zN?B1#*{We(@~%sa$o`G{Kx%N8@$iruTwgNMidOd`8fv5&dE;XW!a?rN$O5dGx5ujj}b=BIi`qh$ooSK}zyB z;?v|YqaFWz0C%udAd&_p-N9}66R%L;TFAe7_|<-}lJe7JX1L{t>RY+;)4QVbv*Tpo zBhvD7{!y#^(0UsTrRC?Fu8mK({M?i7C_fD@4Jto5RDQ0zSjx{;L5ZuZ{N(U3xSHjs z2b52*{LH<@S$@0^{qypZ4pOM{GaZc)`u~9P(`zo3pA`P>ir=cs&+g~KEkD%1l`B6} zD=I%vo(NffzWB*1Kl@~DO3Tlvt4_Q9Y0=M7e!4UdDnH!*{B@y}pI?s$Ca$vblfdb$ zX8Ab_%BNR;?(FL=y{J37C@>7?8YvQ-+@-y?9aLZ4~_Ge{9 z<>%%<0w0mKKhGbw%Fi5G9@FwOzXv9+vhs7B z*RHBrel|n-^vX{&XX=K{pWuBtThZZ0F_Ia)g>@xvNOF{P8)Tg|CCO=;d`!p%4%0ARziG8~5^V{e70~Olm z>#Dgy;PrrQv%Fjbdu+Km&>IB*64OHjg@-t*+HSBZZ@v7`&m!A(zzkSA; z724;MoGR^eHmx1%%Ev#eUqe#;_6aCIw~lc3KBO!iI~plgi8w0e>Sm!&^8&kly{LWK$ozGoIbyTOrlW-1KkvWckv-tOZ{>{Lz4lUS``EiK) zeX_6`_1kU$^Kp(H1{k60_r}9P4^Zp($bDA*ZZzImzjt4CIs;Lz-**_*sNYB30p*T{ zr&PbskA@po{qB!vBK5oH-Ol=*=C7zx6_2Xw_kpot)bEv0KK=TAPIqVhK7Mzg@xrX%tGoH@ zcR&aI0gk6LXN?I}zyF6OA+UbW!P!{&+ok;b4F5jPzXkZMR{g%<(Q4FhdjOdHS%vlc zfEn}vwSN2dSoOOD)&TAPdt>v{?!O;Nu15XNMF$e1|GpL0exEbQS-+2* zW7qHeQB~IOD}nh}>i49sQol2QsIY$byDPAW{+soC=H9^i-K2g@xrX%k$~y=JfQ#n4X4PNdmac?zb`}k5?H_Y6;S>Df`9+R zzuWk?1i#MuO*87KK1SZ*c$#j;$g9uY*zZtodhifMKM>Iy-n<+v+!#|Vo`)B} z?KhfxqGB;aG23IK)$uY{el*ReeVLK2^i}+tI)O$thWBe@%I{g(#xi;xjDHi2PDfl* z+aNL{_ix@YbGhN`*}{49B7yA5Ag-sR((I)JBa zs12VZrUUQcmXyMYjZ=I#My2FUjENpqE5&;jiWqd8;CgyG*~)Jl-ET zH)OctHDs}@(N5!;uBj&}ExD&SAuX`QtcB5OE3CH3oY+~dHj*Djpw+gTgXyw&m&bdE z4d?O2w)PYbjWu8#G29h+4?vQ{L$y8L5wQtKbwY&e(GO96T^Hx$m)6xb_=~|A9$!A^ z!?m;_-kxtZuc(UxfwGW&M~b&s;}matjNx6w`=E|Tj%sfBk|I+IZ)AJ$n|C(Hu;N-# zH$)_DxY39_WN@2;w4=JzTe0LC?3GxRgg?fc;_DSsq9GM;=dU zz23h`t5b^iKPld=<~s@K>^Ibjpyx(g!MIQ$MFV07r+9BqNbwF&O!1C3QoP^N%l@Q+ zNdpG0HRt4^ous9+1asrp2WYvl_s{)Ma!GI;v!yMrrKo@udP6R^_g~%}aM>%D8~QJ= zpvz`H=6GAoYbh2phy41_2yBni&>k%dZjTJ_fk|Vr;Vs{UY4dkxrFncQanu-%MPsx& zC2y?M>d0Y*s7yCU8Qx7EZ|}w_v^fIR;Y^RWOSGpZ^d#JX+L1|kM&`ah_Lm(f0u${+ zRH_sV+>+`&qkS2wA2zg%kBw=+v;D?oU$3$_7{cjTW$bw5QYYF^y9TAA#W<^)sr^6n%A|;YJY8Hc9c=J)+k$jXm^TtqdAdBk=xBNaA}+50NT5> zE`HD*1J~N^PcY4uKNkiyyv0`3bv)km=#-jkXk*c(lRCA^Mk{1rM0|R!r^mY%r48JF-_^I&**Sd!HK6+|K-YE{_sU^u%^Z2epo1ch+O7`YnKQe_Z@ zm3dHmd-!UdOBQJ{EDt7W23uK4t3&am)Lctf`^l55acG`XK`**pOCyJMteIWUN*E7e z{LjykmC`Jfj7@k`P~!l$!SVxK)LWAODqOs`>q+S{Uxv?JU!r)UyFn7r#$Y~6EmquG7$EDyN!N-3`l;1%W^aj970~>Xp3S>}d9=G;c;BLBS#4hIr=3qU zx-7I>pjnqKR;B5C8a$-$#R}8+?wM>9Rj`;9=C`ZxUaF8cM0l!DCGQs$5@hJANPmul z?AHK1Tfxsmt&OMoI%>@Ba;*hFndRth?G__%U5s5K)?yP5{5=x4`aJhsE|-U?BP(di_*2al^uvFXD8!6~bow%;lJ!eO>3O_@WF$$ z_V`j`nhW}BPbHA>}03MFP|Hk-_2Cr*WM6C!kmhs2|^0B!rEy`0kIt~|M zm(l3ON5>==JdDlZ595{pM&2$*!#|9Vt~pdzJeA&G*P`h$I!W)eSV{}Md%Y zjwj@+eJLk9IX0eBM*BwalSV)28IoiB6DWb70(R9$nqy)P@p9Z%hBqxn>P4s0tUhFk zcyruQ7=`SIrxlU(P9z;j8ZS#4=0y!~BX;Jer4*h)ZhwQ^X`CX;(zdpEK)LHE?eg9q z^Wba$E6ehkX6b0^H(~iq|58-jlxCx z*ecdH7vJBjR_WFPBRoUv;lQcpGZ!B!>(>5vUPC$;H}S;I=xD^a^0N`7h2qs)c%iu4 zC-|Hq`)w>)b$f|?Pf*Y9OWkfBP1}#Iz1tJ`w(@P7P9`lnig`W4c@yT-R|?&pz}2@A zDvt6X^fqi3Pc}=&C_j$O9s}#q#uC)nR~u4E^Y)w1TNJOcw{)Z;x+->b{E9+oUKl59 z@MmkHt)%wD06Fk;v{WS4PYn4r+HiAQ3o3fvKA30X<}2;woMnB+hAV4Yc)UqiAt^y? zEi+K8eUz9_;a)UT7@2l$%tOQE!uEz2i%|6ZTl4d$r^L^H;97I)C`4uE(k~u#+fS)5 zz_{xkF3m)*$4V9*{a1_*D!5=@cl!A({ z@z=soEhK8<3#+NhM^Zh+@VPK42LEw44{)WuPeOa2w>rVR`8#S&%eRNM3}24~^Otxo zG26}ayO(PR?`b7XJY@$>e2jnGxkcJ{P8wxbR)S{ncSlJ5(qaD8(b<-zSI+KG6I z6&8rs*7Kvg{W%w-9XGsR(0U4rQ=*63Nm}JvhPxs>omQo|x~$@vArHoB39R)hPhpqn zp1xZ036-y5l6mYpT3y2Yir4Ku)Pp;^HmqqUApSUN5a>xzO_9|l^YuUZxop)G}Fz zmI4RUPeyXV_}Cnh^$##!N`>~K4#O~$kHcsj_axjOkri#A8_lG0a)w!JIW;b*)jxL; zJMzBN(eHtx z-vdP-Rim(uGs*!HCGokaNd0nsj6ut8^NQ&|X)EWiBYJ&_Tt9}DYHkICuP^26Wpw00 zsOw(7T>4x&yw-2MezY83uj8ZcGbw>T?ff|?0ap9K5!`??;X}r6NCaQg)|pW0b4mVs zeHx6n+aL4YZRIYaOz;F8vkbhrpt%Jm+*lp=&_u&S6OEgrQ##!oogG8dqQ+?SLkGHt8bcJ)tXXwBj= zlbu4lFKL`}LjK$)Mr|M@Vs1d=Lz+lzH7{TBQ`v^@Igzx6fVYW9|LJ;V(a=zj$LQ0jqv>~7{H)!_FT$-XXUnu|SwH`4sLG0l(hjB0;=hrckv zQt00R=#44s2{t0~h7PN1bV}awn%S2O%T4HcXZ8h?a%%LPP+EW>{=TlBiC+-q)r6mQKQg^amm_6`sN}V;sYji1E-g6HpoFqw z;N6{eZ{E+$tq=Z0U0O}!E(62R+L!U2wQwi~OMFk#I(cE=CVx@S9#5^pth=x{>Z|<$ zgU{H|eSE}*?hgXm9i3M9#%M2)O0*fi?&!F>06%OxlN?v_E{T^Dy6uebuybP- zwY~@^nwRI0_1&&*{cr;be3*dg$VMD3-{@-_yv+UGhORkCjDOI~?*pj);Q5qJ81M#_ zn-4yLCDBa4Glr%5;4$`!F>?TW_0+ZBzM?Wp*!`n{rEOM1l=(5ee*yXs@jv8?7km2GBNN3!=9eGSBT(CHlYp3JwFF=pye~DoVk@5qHp1ge>9jfv zjT6=^>l%eoDc+Q*l*0O0ib3Ht;H5Y41}-K=rxYgQKekpeAt|4RTLY*!#-x8;A}5XQ zhqPc3h+^400I|>-=vs;a9V@CyG-gy-SVZ$LF&Kq?I0lR{L8nP7Mwxu~*Ll`}F43BG z$onE4!{i>GLuR4j3AI7VuBBLhI??`1Og;9|1=>DDTO8`3SQaJVt-C9K3CrskcO_!B zn4Ex=W+Ize=-0g%g_D#I~~DT=nW96TUt)p_htR$Ah-X zQ*%2EWMDv(h8$uc3ZF%%^moM}JdBRWNK5seM~7s@;jzb1w~bO5aT%6f zBQTE`j2gL16Mx8Mcvtd4Lzpl~ZjkDck_@rjUHe>Qjz+W?6JOZ18P-eCEu)b)?n?U0XkBuET109z{QX-DCZ9y4X~cH( zYWRL%8<|yaMHEIsB=Odladf=&Mlsq^B0VXdTl~u()_jKM&b!g}(a?xqbS2P4goj*M z-Jl*nrEG9K#ed+1_kMPc4-7B%KP*X%v<46wt`QWj6%>y0hw(m|o85TpjVQ%p|HH^f zuVcRszj3y&k>j7(vk_ZO?q zrK?3E22Z` zne&C{WWK37*7KeyI@Pl;3f=?DgA#JR4N%*Lvgfkk+v?cq|Id0!Tdm;qe~U#Jlxa$T z#P_1J_>G|SeC@?rzhP`PqN0y{=M~W*`^20j>B(FWWS@zm6Rv&CB|+)w zV5cW}m!#*a;Pjkpr)SP_(b+dYC_O*F$@vO5J^h2zGhaAVo`?QV;+kibRm(nkqC@r> zTq-(g!RZl&tkV=6BIq^;(d9wu?@<_DKj%&s5=X zd#-IuzExH&``qP7kJ>OkI6XI1ogTY?Li_1@H^?x5zwUqFm9(EZ?+4vhEVohmYi$=> zt+UFumHt;mho0}GHKLRGYLGoA+R=y8ADI{;1&lvB*y;II#~)V(r{`QdJw=~OdiKo= zO3%*={N@NJJ^h2zGhaAd{xv=Gtg>y{Cr@<9K1IJsdeVZ^GpOqH1U%ojtwD}8FuTYG zRPuah1Q&}R=Cd6r{r}Oi#CKNNv(mp-bSV9apGo?QUJ0`2OQI8QeTfQAPr99+hTlkB zeS_1}-cHZpW1ZWy?TxXT_8 zP0Z(|a@kAeijH)(#QK&iIwjiG5=*KWi_;pJe;c+d8k?k{kp_);(in{EnBXNP$ku7B zKqe)ULM9Z_aI$reWl%_iLVr<6#5V_nQ+z#2%=i@gx)-m?Fol?Rh~{`W3YI1h(-FXe zD=kg0d=M{Ymh{MREx9qL0PCu~u&z2y(u>u~JECN@avx0z!MlRI7cTMcglqBYf=A)(Sc1iST5nWX zU4h99Sqrw}GO`n_ea1Y0L#OS67BA;~FR$~9WfU{5GP}paOH0nKuI>lnr8kz?K80_h z*k)Mz!y0O*dc$xj8wXCU#&Vx4KNn|HdRlLCEv-S>tDoHnd#dd0*)1&0mj5c}(S0{u zuqm3`;I;Xk>QOlRN{fA|u<`!62F@FT?J9w{cwgXAa20;)y+AmHv#+w?B^OA-@%=}2 z`18>w;hDP&;3|Ityw1c^*yd-1$6vZp_%q-t-v_UgPhp!M6(0Yd<-#}MD!((lPCkWg z{sJ5tNe{M~_F0NCDcNTRTr2(XI{7|?ZN3p6zj%@G7r<5iYAFlFK;dSyUZ1Xe13DE`9>hWs>X9F<_DDi47kc42(Ob*VViGaZOT#ptK$FhiST#9 zRsL3ZoqP)0{DLs~Ta^#j;=>!jN7&}ag~v}<`zP4;ZyRKP3fue=oJ1CmeP(L<;acg3 zHz558+x(31_)~Z2^Mz|YUwEDTfe73DsPOpn7Ye@suJR|q>*Q0|<}bhrVqw^)SOzfe z1#p!=o5wKL;Gt7J3fp`mJpNRynQ{4tYuN{0XZi;sZ1YVV85u_U)7J<;0j~1f!t3Ny z*yb06#~-8Plm7PjBo$sKpTagjEA&hR?zLt&e5;z-3X(!aDs_%q-t-v_UgPhp#15FY=J z<@$W#TF)0=Cx0u#Ha{*r{ymG-K5#Aj!0Y69M%d<;V5S<5eYE|VVYffNp!SEtHa{ag zeuwpv{>E@M{q^8=rk}z#KPo)_=f4Vn8C>Nrg4fBXu+3k9lfJ^R&(yDkp8;3-1L1Y@ zDQxqN@c2ug7XA#l%J;$Rax$jP&30v+xbL%I^%XlTTrrUl1n$YvsfBVDBy_ zzn$T=_%$)Hrf~LEJgaWa@HMWBCt)(r^HYr9qGkTepGVW$fn#!w^*L02n)S!*EW`Sf zYsvxIHtut$ED>>C74H=Bn&(7(Y=>xnDB>^C0utm)70(lKJ_a5nUZ-N8h-dE;@gfyJ zB;sohi}*Pe4-#=1YBxb9s@M?mvZW%sk85%<_5+9$V3=GTe1;aU-Yr{YB-9*OxB*?X&spA+#0eGE%fJW<47YbAL} z#Tg=Q{IWm_RD83DcW7aIP{r4Z_>CV$`!*Ff7jex4BJQfB7Q?l)xj-dllMfNr|eHvJWIr9Yb{=>;wd8j?FnJOs^a@aeEDJ#Kd$0* z5vPAI;xQ_w13{4PG=&USaZ3@WsCJ5q8;JOlCk4_@#V4@`8;}?D>0F@V??l{J?OjX7 zTSdI+1A+XwSu(#w#NEFU@nm`0v`B`LCW5?Tb|WgNV~L^L12QD&jf% zh>vWN%r6)5Zf(MLtN3LR58)jWo6R*U_KNsT&E=aa&JwZJem|q)fg+~$AIjwf6?Yf$ zbNb|msrU*Je}d5xY4=ibV-YXV);>YSks{u)U9_92_#pPWp+L0K{_;!}e=6dqUl;9P zHcIAKiugj+-lO7IMf~c1(O$3O$3^^jsfgcF@fZ=OZx!)$6%Q8iq%TA~NyRB5?x;`a zUKO_!@fsb?^j7f&B0lRwfpk)FEfL3RFBPleA8T^v>lKN1Jr#c@;@2>ZC&T_;BANe0 z#1Ckf@wJKY7&sFgr5f6A=*ne%1%&!;m z`n4kdUd3;T_$z&u+f+PV#Gk(^+Dlc;-`!$=i`sjRitiQed-Yiss<^j^zfpUSQgJ5{ zZ`Kz1b`{5pI9XeWWEIyF@m|$#tK#43#h=f8jb`UO6@M+_x3#d9t(VM~hm}Zn0Uk(nS;tQI^hDl0{TsUvX|Xn@{z>;ISejS#KI#eIJ|)ul4?x-Um}SocF=>nv0Nya4}b`mkZb8(feQuhxtDE z_bGm31-%dUzdx_>t=Q{Zlof}){=-Ell)X0Lifyl4l!ofOKi|AcGPe*eWo{l^XXYr3 zO__Mv-3~9ihvEG%zdNt|b$6o*vuEwk&g)zQJusDrZ&A9P`QySKGJm*Y=kF-$U3K#J z0w%BY@W#W{^6((MRu-u|P&gY0x6%FpSN;ruX^()OH&?}8f$?bF2tN?6;(NpE#8a4- zDg@tA@c#4cs^DLT&X@R2;VQoYyiPuaZT@aNcO*Z6kN5TUE7_3wj`CECN1~z1 z)1Mf(+vTac`%OOFC%KyiR}J{P zV3ix}x!j5j7HWTV|L5_gX5R5LN7rA07ePFn=qG??v^%JyUVfV59T)NtbK0j#sV3U8{nG}YT5ds%4zPbz(uh%?$d)q9?r(Kd9>EA3_J z$V;j_dA|v=+knb1ZDzr7gwDM>y(gp0q;gZi=4Q9pP; zOGW&JFACoWSNW6Sb@C}}^K--FZ^4+G(!U6<@?VD6$)~W*Zx$ZkgON1x+rm};CGa}= z6t?-Rd9}0J_VFxMK3t0rZvY=*n}26`{FRf0KO3&{pMuxPr?AbB43B@fK=@nXDt`^U zPCkWg{#>kbhEaaDED-)8xXOPSUMHWzHa{sm{&iH#@O+y}y`u8p0A44b!Zv?D7AnI? z|Aopwwa}mbWAHlp6t?-f;qeDxeT>rI8Lrx=9lTCHg>8Pb@c0XJgztl^{K@b-`4qPK zv<4f7eLNoszb#zlUjna_Php#XXL$SpSaxCiz_siHuan;nVVfTr9)ICXwGUj&KJYsE zlM%N0bFthRhJD756aGNB%I^)YlTTrrpA;T{7N%olp9yf4KMGzapTahOKUOTmNWTX& zOyakNtNcsgb@C}}^K--FkH-v)_ygfu_JP;Q?~Sm{Zx$YZ<-@|C4OjV3!RzEx*ygXs zqGlNOIgHgSO8-{4%3lL7@m-U#C;}n%?H@x%`&6Y59w>3R=3Tu2ri`LnCf-!f77i{L8%Wq5=6FG6PX zJ6E5-aE9=GaFst9-eCSCklD|8FV-o8?c?hMqs2ZW;i`Rxz#D9z zJ0P>|^AVOZo%W&eXC>+HUm|gIgsX8}4sUQAtst}QbF0MRAKzBOKfXrzyWuK-8@$2% zO_164If2TDJoxz)*ypcoVef^j?49riv$sKJ+h?}0{q?H~`Czt>@)2hVUL8X>>=<5v+sb+whyhrhEaav zFoB>pv@TqY<8QoK2#(`V$ZY#G2}*w@_Gz3e{1f&V`X?PjJL}g$8b|x<*K%H`sIvU* z(YE0uyKQ(E-r%&q1(|K1fx@nC`N@zaJ$DK(>G2%zdR@|UrvF-6*7NrPC(xQXpKm4h zS@xvZXC_>=|Ksom=ixEPZ2rvZ^P@6_f8YV0-@Et2b;2XiLGFbtyFDG+($&*?&9Gqs z^HbEXXgmG9=fvMW`#&*x1t0FvDSRjwbcm_7tmvPQx648*Xnh2(bA1HC(BI?yNo``- z-{WlF%9*XV5U#F|%!QZoOOt(CAE9tK>m$Z{f@}$w7L=O7wRp5XLg6siM;^+oaD4>l zGtg;~_&Y(vTvwEgIcLSCFsRwhc?14Tfd8N0zN6k2`}TqBux~Pgq3wGuuGsc{5_O_F z>zTtp6k~Ycs(q8-wd_ImrLeu8nIH>})m+cK?jgZ9g=?(`!t2C0K$z;XtY?N=Z$x>m zXsv6+c;TnQRel$EoqP(1Q#|gKF09^7aH)87(f*5y8x;=`Tw9|(lk z=Vt0<$NJoJ6~^H&uanW->-yYacy)cQAG~M-L#@x<6wp63k$HGk_?_XZecHk6Is=Wx9J>WeqTZV`c7|9#+ZM2Xwl~E5xB~u`$&&s>aINwQZ*clw zgv?HV@cbL^mn&)?{+ciRy>OMk6W(C{Hppy#)1dTM!k;!p_#@#ee+az6{5v4CpYcaQ z^JC)M^FMwE>Yx8%ea`qu;%Et1E!Cz1){6e_&f-D!V6HfE*36NDd{|3K?ZT|}9 z-_3_qKL36h=Arp_9$d%#FblzQ^F#b4zE1V-BYR^0y@TI}*GIn;a(;+E0N^|iqsNny z**0)xg5_=oFXfjyB+L)%QJCh3a%jXdY0&NYAs-&$uP;GoWBfHv@O$AZekZ(6JcX$& z3;xzB`img`h3^ZW&WBL`F?gMP3fue>RkXK3{DmWg?}MxS$?!V)6t?*@!{e`Tl`ahwqG={TXC zdfrY&P3G84G0AOksl4=tYuN+qQ}rlJ>r)%)I3fG+9^UWd|GtoybNy?*OKV-O)$@dQz>Ci+L!BqI0hg$c727?j$9h!bJfV3gl(dd91+IRw zIgZP%edGXz?em1L7PdA1sPsIcI*$t6M9ot8UaoXDoWgdY+7)=72m0?y`P1(behysa zkA&Cy9`r0cBnsR7obdR6yea%$aFxFmUMHWzHotLr{Ha>0GvF$JAiPdKg>C+_!1Fw+ zvQN4Wpc3FJzb%iUZ2ME#=JyYe|M@Vn&oa2mUj(l+{S>zO#{*Q0|=JyYeKYgt5bKoj}B)m>Og>C-v!1Fe$N`E7-@Q**{=l=+=lTTrrKO;PT`cUB~ zz}57(h1bcau+2{hkAEX7Czby=xYqN9*U4{+u+85U-gzE>^b!6pxXRxOuai$8Q0@c5rUB>ZJ?mA?pHC!fMLe_43vc}&&zEyHf#2Eyy)Q`qMB z50BsBPDy`bxSIZY@H+Vvw)w}yJ8xt94B_X%RsKkLoqP)0{2Af#8@(p{$e zQ`qLy(VbzOhcRZV@cYBn^ryn>!`|MPjmUj|q0PwxYr_Mx!NKhB%PtDXMOXDT1A#fLY5kFd?35gxzJb84Sw{rtV~ zI{6f~`3d3i=Z_G60bEW01bCf%3fuf${BpY5_POU);Tv$3-x*#fpTagjCrti)<-@i3 z@CNV^w)u_2SNQ|sb@C}}^ZN(#s~Vpaqw-Mw zS^!u1v*C5}DQxqP^Ct0Xr@up*@EgNbem!`ddv5Zjmpj|O2gX|`i4BSP(DZ2^F>7eUKOy3|D%SHw#%W3(Q?Z^evKHGPDBYt~tmlhd z=N0h)73=vT|3y1Y+TB#F=ZpNL*|}WBdcH^_6*p3`o-eYmr$8c9tmli=ogm@^Q^h8F zzQ`y|$xapP`68VriS~yo*7HTyJtpFLD%SHwnqq!V>Gr8u&lfpkpokw*v7RsT^DQDC zq+&f^BttWAs94VziPUm(rHb`@k>|$>-i#W)KrHbmCWn;BK?X) z`@bsI^Fs}JzwP3ToI2|v7Rro219*<3{kP3 zFLDSgOeF51Vm)8vs_r7bO2vABk≪Xb?4_Pl6gH}BuWjt zOT~J=$bQZIY8C7GBIAZjly9h5≪6ku9a-i!d z-zVBVRjlWWv=}Yo4l363MG~>2i`X$L*7HSDu&__!x+>Q5MJ7Kl;$!)ec|Bj`_Pa&= zrHb`@k#+je)~Q&}7nyy#XfIN+b-oCiU5fHK73=vT+qE`KRIzow$jzdip<+E>WJj`y zZ&tCMFY=hSC)cW2&lh>GpJ+E%v7RroQcKm@D%SHw)@xh!Tb^WI&lh<_%gI+N*7HS* zwH+*0v7Rqdnl4c;Rx#~uM?2V2%gIa?>-i#+^~q0Gv7Rr|W12vQt60w$X_zVEzAC17 z>tHvmdxwYM5PFJy> zFB0>hh!a(;=ZhTBO43rrdcMdgL$n*HSkD*nY8!hpS2C~Xiwu20w7*lao-eXh3&d6x z>-i#QXdAmk#d^NT722V{q~a3Vdg^oc*K`-CSkD(p(%SH#iuHVvaahtK!``OiJb{eX z;?tGIe7;DLcA@biqVq*M-ykOS?Od=cLB?$hWotEYA zL}Z^YvbKx=oriPVY{2`D>rry_eaD4di1_a(P~Q+wTIq+^ z$sdWZ&5sI?-{E25H-@YHdhj~=6t?*b!dovIqw7)q;VM5BUMHWzHs1*3S2f?PgT(@} zkBLr4`Fr7Y@+oZd&A|1Xs`z6tFd=?_xK{e%b@EdYw)q9&@s|!0{tURv_rdGrQ`qLm zg~y-j6MhC<*Q0|=4XV*U)oje1J|+-yiUFk zVVfTn9)FB>j{V^(KNVglpTahOL3ry$9Xd$*8^cw8J$Rjb3fp`mJpO#lim7}Sz*Ro& zhjQ{MZ1c_V)^qN;R`>>7<#&eH$)~W*F9?(0P5E#wKD+^Zgl&FYc>FOK=yLsqtNc`W zoqP)0{1RT0@~_ubRsQE|`6;l=&xD}zLt&er5y-D8ODc>FQf3BNyFO@Au9PCkWgepGn; zAFwP$=`Vq+{Ey&u@+oZd7w{(7YTIY3j^8ru@f&^r=j2n^<{RPh({GdXC&1P8w}scq zr?Aa8d6TL?{Z+MZ(;pLl4qWArgxATZu+1+BwVp4$PX0#-+x!yV1Y3Rkj8Xf*wd@10lRpw+o1YOLe`-77XTVkdKzN;e3fugs zF!@;Vq4J*rSKrqRgxBKJ`x*-C`bK0`M^+SjO9*PotH_Qfi; z)}O8w?I;!N`qNQ7OM)D|U$Ud?PuKPo@fRxA^`}pD$!jf(<$T+8(OfJdT7R05Dx%pU zqV=aUZxzvFBBJ%DKQ#GcL`3UP|LG`NLq%k-KXr`{x&Gw;p86Oys`$R+Q*KoKfA4f1 zf}y|fSV2v!|ND*;7=l&j`;OsPO4;(j)eY83@LC&+X#+Hc?e9D0@YoKAA?0KJuKamR zLHnOa+$s1}xYqu8c%Aqz2-{U7)c3+@|0>!H?ZLdAss`-`Q~o9JI{6f~`JuiSu7tl( zy9OUz8G&G5B0rpC45hg+6S&>A9$Vo zOAxmCp}rTcgn!{p!atSb=O2UD$)~W*5B0rpCH#e`on#*$T+9COI{A|kw)vsH7p{cA z@_ymZhO7Li;C1pTZ1Y2XFI)-#!d7aZmVW**c%6I-+x$@93s=IQrc>{ca5eoyctmwbRvi}y? z`Y+KE-)X;a0{qUx{Wp{Dzp>5z6D{$b_6sM#U(|=oXF5_L{|U&d@*!H{2U+N7-CvUc zzx8b#--lG-*FjdrCtBiv#X>LF_+z_r{9>d6zW`YkpJ<6c%NzcpppXwzLq5o=_!B@& ze0rvdJwlfKSqbD53UK^3NCkdNWC`EcuT4XIb9^VCTRH6)Huh87#`lH-|H#!Q{sCm| z_+R2XiElrzD*^wj&*%IvMk@GUfUF(=K71!-bOLdSdR`jg%l)?O{p{*~=P5IJ9fOgI zI(j2(uY;XeWA0^2v|ku9Qt|VJj?YF)8@3t=1se*WOmv4FPwP}ev#)%y$-u`j3;q`wz^-qRcj_pUqhr^ zn7&kGNtj|oV?6*N`*b}lU`z=9Bd*b`6UE_BquSD;o zKq~MXBdg*QE%EvOYS;LOui*GwkqZ3v$g226OMJe++BN>Pz8rrTQi0zOSrwmXiSN}P z3HgkZ@)>255783eqd!_C`tx+zpC{P*Gtm;?qd%I5IV95WIHW>8qmWhQL$t*A=#Lf+ z;rP>$3j7Jks`y05_#+Id@m^taT0ai?E%b)r+IK+FC;20yt^NpLiC>>FsJRP&G!@m7 zKSHYdBakuvh@I#05`K~MJ$*5y?&yzf=Xq@518C+e<^Y=clyw005iRF?YS>)2WxfaF zXT15C)|jcI`*j~uu8+(*$SV5q5l#B$d%``QhcQn)iW!Gg;E!UDV$ATuN3_KEcpk

~kqnf&VnJDn8K?pZjaq_>07R(sVhWG{H8XM6|@`{@OMEAACH{+-r`}kvK*B}-6%aK*_i6(#T_B@RD&*6|SA*I`^ zr;!?XbZbSl$MZ0r&r0sE>(DR(fBkh|i@)9hGR9xC`>7A`i;N!|!EZSFYuo+Q?&hp@ zzST&%z?x@rjoByuZ1|U&Q^9 zZ@TG^d=sqxD3fT3?=e1VJ&^P7Ln`D`2U(SWqGRHt1h>eiwdauEwiEFYQUj00N1(0o z5x^41M^|Jf?{6&!pjz~|Q;;h0(a(q;o%`Fj_(k@&AfAf4>2HThcycxAqiy)QA|{Ke3VIDQwT6ufpoYJih+ zh@Ny2y?(JBUcZ=e9^RMY;{A&cpAlC-mi6+d_n_LtUtoYej3`W;5A+qXcr5O;Uj8$R z)yz4yo5ZqkH|ynZVeQQP&&>>*{Qein8jr+jNjuSUy}XZOyIL<_&2JhrUqC9J=PzbA zjq-dNqDe_Sh+XDwJ@}v@ocVmD0>2HiD)U53{1R{YZ(hLhA3-YcBgm@wL`(dm-qvf^ z6YCLls9WIgMOMWpTH??5hCf+MDwiS^_{GSo_(V(mJdgPNraH3}se#XKs-=F5#Z5KW z@5kQOYd_3AWabp40)HH`D*r@F{>OX6f4&#jZzWQJKOI>WpJ<8i_lDmC5f}x@xkv>* zJs(o>iI(`wtn0zy?-TAvnLLu?mm)RfkF1Jc3|iusc*GY$cqvi?p9SHHel0=xQR{l` zWc)uYBF-sD1^ze|bV_`pCI9oi;ok_)Me^6AbL(PrZbVD`Ja71eZsGX(NCp3GkX7YR zw8a0|x?Ve(d?pM3Rx15lvCY2`E%C>D!@n_8$Ooz5zYDS||3piCzc>7gcu<*{j#S{E z$hG1VE%BFG*MldM&!BUK{E-^+M^@#(4QPp9;tl_bh8#Z&slfLktKt(a@sE02ul-F& zj=veHz+Z!`ichq}pYIL-^D{aATSx`|Qe;(pq9uNwH~f2qe#@kOhas!t6D{#SwyxKv z=W+b}1NJPD-XANs5aIykLEB)WYDfkDU657fL$t(SW?c`SOg`0Oe0)KUkBe>NBheDS#2fxMSkFlQb2C!IK9N=V zUjtg=AN96g`>eqnzoyj0KZ2}^Pqf6J?+yRWfgJx4q=NqlvMN5&5(pJ<6s=N@=iFaI!qqL(=ZslXq{9_mT^CtBi<_lAG$RKY(|gMVZ#{DYSGek*=5 z`#g5Gz(;D}BWuA2E%BFmTn{e#Z@%omZEXFQXo+9q4gVqxPGtY-NCp2VF0%4Zw8THk zCb3++M?FH%I7Tf$A(Gq{YH~cGve6pl`d^Y(IE%Ecb;ZGL*t5o){Vq5`wX+mBw~w4c4ms`gK` z#9zjioV%9KpffmrK2l+yZID&*iI(^!-tg~f&GE~ShWPnL!;m%b*?M`LH+1AzUBJJhb>{_X{HwxBWhd>B_eUshAM^1X*Lw zissvhmh){>SYLNL-`2VghxZ{h=0A~D;p>1VQ{(g79@j6l?kDh(8u-Xs@Igy_{yfa} z{O~j(o?%iv{cPePTH<@0pKqAO`9E@&$^QXlRsM;V_#Wryrw!rw!;lL3^g~v~CtBir zoS$EP1;?lPIDx+aSrwmXiSKcKzG*#QknuTKx*L86fn^q=jR_jaRl!Iom5A852)cWOn-5p7pkT83rH1z zu>z#Czjz71NPn>%UeS%e=rw@1t~F92uolP~4J3a-v=@Qp!^a|A@|{h-76NO8)W9Qw z5$#c6WB!OIFfEdnS~EDseB-B9H6X_ys_L4P6{-s5WcR;jkXCUxkIkW%=ZwS*y8b~l z8r7=Gb8<0M7FDkW71gS{=43-)knHDLI9)&gsvNv(dt=^+;X_Pdp&+53@GiaJG`#f@ zqoH+0+`*}5ejhcIi8Mgstn=BFfOOJ5L}{#2jt{ytv=B(TR!Wz6wGB$$i$1mFVezA zHCn56TE*HLt)k|<$!F-t2De0$s_AaJ41AW1*r2EXy=98R9($i<)*x-x;hC)YY0o}3 zFhy&(QG*1>)AI&;_z=p`^sdi{e!S1+omiLHZDBYP1A4uo*JQJ^0)4?-T_o&s)N~wD50Q z_yhfsy5G}rM~zmUPgP^k|K>O|KZ+KfZBPAgoBr>b@Ax$rh-)_RYc9k!%UB=XrqBOH zT$3ZNd6Hj4{oW~7AiX&8lWyl{kmToQcr)T>fSsRqlAmnBPl}zNjN0)tm~A^9A=j$cz^Tw}=RE`E(y`RH|Q{9GaV`S~(lSNmf&e$J5mEW=?D z#Pj~2Z2J2CnCW)B=&RJu&+{CI>}Ry#=hoG#9K%+P{&l_NXC!WB zNMCt&ey*+^KQE-%96l%U02=e*kSQyCTQGW_A^Kb!K|7~pm7Fl^P3&l~(2l25kq z2{Vt{AbM$)~Khd9R)!)nP{JhC=$eznD z;ry&HY}Js@gZvtj&rwYNlDtLA?TTcaNqQs9om~Yt? z3UB8jSt#6C3-k3<_(jH#Zr^u46~Q3|dqa_m_^~gtM!ZMyBhm7H)7$&bTMy^(KBPuG zkE{w`2Xw9P7pB1!i2Y$m1%5wdReYkogum}!!y#WnO5yL*NDVv+e~I=O{@(b5X_wY$ zQ<-1*5l?tY-=88?^t};e%>4pe@4O1XkiPl*3)|w6faCpwZN2l`=*u)0x(F#3Smp!B z8V!WLeMFPK`Lq6=Y%blh-Wl`7@zy&x#ZW`=CvcN5;D1C`g(sTy&EfCh@XC6gI%5*x ze@MLo_)C!r{HKvs@rjoBXM4k6&6S_I7^%Qtpy;2(L$t)FvyQ#&KkUo-Z-Z3ew?tOu zpJ<8i^nS+#@|kx7#~+7O;EzI9#V1&z=CkDTZHWpLiZ6@PA~Fs?7NdAJG!uX+3)a{MIN;_&$kW z$A(X|#CKZHo(NxbU!Uy0b!^?2Xo>H%o;?BnVRTO7f2-`j>uvp)Xo=6~?_ArD=l5Uo z`8(J6Vtz1F&JSkV<_CSo{2=!~eE!Zg{s7#Hk$gHJ754KNWL5hlTFQsd-?_$Lgxf*F zpN>@EPe4}1CtBk3`8(J6hp!d-MJn*uBdg*QE%BY!vnQ~hrow-oKuB%$FZL)&>0k6H z$-bUF0pyE<<$IB0JkFf0@Qd--M>LJc^8JngW9vcJ*NO9f$IlPC7>}tXG#(>W$77H& z<1vfBR^b;Jf4QB%d%1`y#5WHq7npArvWh}7iS`n}RHkysn~+ifa~)Cxj{+E?Jq9q( z>G1?+#;XMs=|NuSBUR+p1f;XP>Qmf@_~iqvzRj59HeP+3J8<73q(WW~AZxUb;#Hz+ z8?O#6=CbR8RKQ<`tO`#w^$-4h#N+(-9uaP@k>U1oTewZM7j+-xF5CA3Qc}0-uSwm^ zU!#9)r}v+}?`nPXoBxfcZuvZH_Hq6^?0Te%z6XGG)^|_*BK18BQ)-U!s%^iAdVfN# z8=y#wT1WJx3#oONp><=hp4r9v?a%*{ynUB-=k|OCQl))$K{~hZw{GCXv}d>N8-j(w zaQME?NU448ks8)U?IYTA`;PrPdHd@0=I#3$=B%`D2T14keL!|^w$E*UeO$C}8dA}r zZdaN}{gvoi_g8+u;p>9b=c5+wM`K-apz{y|m%_3T9|@V6tY;uGzqzrH9u{=G;^ zy&4NM1yHl-G0nlgewsd0bu-kt*^U4boX& z*Wwo`uOG0a#m#uIyAzk!YNSG5uOq9Pc?Jl$YE6fW3qPx0VLn!e+ok%l@Y$&~xAanhIk(akZ(AACWcejnqN3>>nQY z12!bD4tIM*48H%d4ZcKs-w$}t?s)2v_Pm~~0{VFdsiL2SAf5GdFPVv{AGh&jDVP{E>c5!WPC(>jwhf0B6<4`kmo`BHXv2nw*sVd`(7eHWVX+(|8F1^co>Qj{q-wF zhh!i`OZ)TY|6d7l`-mVF@UxLMBuMZ?OZ)Ta|34%t!Ty#a75GmhtKt(a@jd$gdE_;L zKMtwDABC)nPjrksOW^;j=tcpMHzOsB8imxrBa0&1>dun;|DDP0Y58Y7UVRX$Vo!5G zI@{Bo_(j^2>;6*6Th|aN>n}*v*3|{=xxY;QJbC+`J`)wAzf>Sq+E)(JxqUa|7ui0y z{(8$^9z4H-R2all$Qn%~gC<(`7jORhkFPoWUZetkJF+S~(bAqh`s>4cIQ~|oq@MSX z8sKDnM0@wwpZ_blehS2RdcJi$Z4!4pt#27m-Nyez^11zWMk)l@7FnZ>q#vSVI&6aY zHDvj>nGcqB8TtsORL{PEn5cmgxykA7Eidv1qRvF99+&h~r`ev$U#%UjZk?nKaU&DxE$=i-aD(vAp zWQ``0JrG^n{(86(hu?}+z^_MEg(te!{dEyVIbeS}g*8ymB%}s7*&fl}`|Cy9lk4Yc zgoVtXB31NL4$@gaH&YyG#vg9=b4U!}G>{7cuCoo`MAue7p)0xk+8`D1Es-@uNa`oL z*7`Y|A@q-w`BS6@IP<5Vz3b5n8cqCNW4YqrG`nCVXoT61}wk5rLY6OhjK zTpzzkdAU80vz2fN4W&a!wK)W$r9FE)kF&La_euCVHh7|?J@e<`?)QTn;PJsQq(a^O zkX6-9w8ZDn!(HR=*~RhKAQkw_kyY`DmiQj`vm8EM^hcxue?77)KG722<9?Q*QOqzZFNUU@5ib?i06*5o;{S4-hbdVgMtHs1B2HDX*+~wZifhk4|Z!8 z4OMjvRo#(}k3VD3+MhD+!nT5L;cr4!)3DDWe2x~rGd&b8&&ks|?aP?+8s>vmPQgF@ zsn)bX;HXwLCua$0ZSLCgLM_~i=tqbS{|ih0_3(tRqVu)Lz-%qjJ6oSFDD1W99nfzR z)JRYx_1DM!5}kkOl%nu4t!hQi3j~3bpo%;FTz+~{)#XJMo4_SFIdonq!fPoCf5ta* z{Iqm`G!!14lh0YL*pN=_&h1N^J|bvPsFPlPK~Z=T_ySc_)h(qc+%3JhY7*LZ6j^_9 z)eZhoc>kd^4Q+Ash7S3HU|sAYtQ803!-XAzSxh zlM6LBTkEv5ygfBFTMM6|g?st6s#93YX@d^F>z}Sw72<5Gu25@LA%3N;FR+z7j?-b; zcVcr*z`6wo`+Yi&QuljQ4b4d>qXMR}e`Du%+xp;(HZ%KV>v7rr*ET(;T3lnS$32B# z!`9#R`_g`5 zF<`Vs)^Nb=ejT)om%Oc)?%bQhH$y7m8zZa26J6`^=npYBuotPo->ys#5c@>Oj7JHE zxJOUnEZ>Qg#-j;H4Ss1nBHB70C7o`#Vx!qll2>-!wK^)&DI z-0sKTO<_1j+to;gz+OkzXdnrUXsK^+`>|iC=J7!Useqr2tO`%G)VIg@wRLmOz7MIu zuY;_LPqf7M7{9L8IR0X!0)GLrDn8K?-(&nL&Y$+l^QV2b^QSY7^QZZGERXSPXYn|> znS7kw*!DP?Xvx3F_*I<$?UUz!v-7@H`55PabN)TXuYY{R?Po7iA^+{js`x}p{yoO8 zhgWm_tw;s_dSq36qP_Twl^DUPM?FR(IsC-}qy`@O3!**xi+XEa_=~GhE%^(is=ojk z$6w$V=`UQ*KXl=(n}<{gY!*Ck-UhO{?*&_iJ@CKd>5nw z{xW1$c%o(h@c4WpB#gO@Fy;$v#!R&L`Lrw6#8Z!)kKRtRQqa#ENEQ7&3({FX^gbD> zAGh=Ezl-M+dytax?NA<0kns`idA@zn>g4TPUdY?`AX24$b3i(`?@s*Uy?w33ff)^v zQv2#Er)5z4i1ysR$!{lb->6e~`wEdN?Q0LxxqW}ZFS31Zl&m2e>t)$ zKG722WBelCXXl%a&L{Bc{dFon(GuTd{IW>QzfG6(Zxd|uZ$wLckMYacJTCuYq=Nqf zWL5r&miQjym(IBLBl$N&D)1X4tKt(a@jb>be{AOZ-HTMwa-k30s^9*5%|ZzlH_2QKCQVgpjeU#tM>>@QxzFVbJQeZRu*mvDvbK`I3H39?25 zX*?!c`U{WmSAemTzKdmlD6sVhqNTn)_O}m(JuQ{?L=Og4_KBAG9{Zbk--u7XZ-l*H zM8!AWH^Sq2kNvH)7>=4DHTr`xB9ZtT(}-m5Kk?Y#rV0FE62G4fpJ<8ivA?|{{6$3i zi`h1RLA00tc3KB+GT*l6BlH2JhPO8g@G zo7?!R0l23Qakw3C-M^8lts~lV{Bdk~-1f=yX@1P`*TL~XV=^vHd+qO+qfy5vp1z7^ zQ}wra@fNrut?R`dQgF#B6C17Kr@U;_AC>5_v#93%!|Wg6c@dvpk5rN00Fch|>xo~a z{M@bwoGKoe50wwh``R9u6D|FfxAlOl&*bV^j8yc;1;`p2qW(y<>@Obsai@Yy_)v4og_uO?r=U6valgkp80oVi^CrmhfA{z9{fdN4ex99Jw|eC9SXmXt)Urn zI{SBs_uty_ zFB14j4SZxR_@E{JERXmX3w)#oKC%{k&=S9eH~bL49n5TlRN%K%?g&ZlL`(d2>{SJ> z<+GZHADN3;_`&4AKnXtxpJ<7Hoj3f>0>7EWZ*0RSTH>dA!(V+Fm;YjC&_ZQCpIHZFAQOK(N6D{$-Vy_Z#&wne9UyM}X z7a*(R6D{#)dBYD0`L~hsZ)uZ1(GtIfH+<{+=9qn|@0%n0G~z$*AJ(x~6}XnqhZyb= z4rDGxD&+ID5)lwS(USk`yy5Q={%4K!Kg(_YhiHkP>J7iO@Si^EKkL~1C(#oBDfX%Y z*Ya82QuHsRM*l)qwVwr`C4SHw{)ar+%v_4pkUz32{?ni({#WUV&wsJ`|5y0q!^{YK ze8}u)w(|Ip^h>nFpXCjItg!!LY5xT_`zKoBxA2DFRQS&mZA|(6h^#6fq9y)1_NoHc z`klugw`GoFkK34hMv2F5#_QopM#Jfm8{U(}``9pEN5*+wQ}F&S>-j-8`S0QJQ05vI z4>A1ZA|6ulU!|DH#6Mvifs`D7k>G#2HBU+f(E29XhC6s2EPg{g**F2dF7V%%`0qI2uOfUiK0MooKdG_FyBZ%ZI*-eLI#MB@ z3CP;ze=EL|@>#>rSTf~<=iiC=-z>(+7v&iFgcu`L9Xv+kq-mprc^zhan?OG4{2o2? zASQ@J8@@!=-i9w|{>YTiadymj()c+fmCp-e zjI5GleE!g?z3;)-Inb@tu^|%*s z;DAl_$^JErW4o14ndo0dvVUFW(7&#<^snRaW;o}~RsTAl%jck!|CbK(|H2~wN8RJA z{(){#pRzHZf&p?dG2f03MJf!nT0drtvYxlj82BH*)Gs?D$@I^wE+n^&Gn3y~Ligku zb72=LhV#a3w{Drvj-mzf%q}W`2jAS9mjiq4^ztUg7N+lN|T^+s-RI7Y(6+ z_z!kN@(H!~2jzwY6EHraX?}+v=#^y*c5}cuj|a%#8vb0j-tW)LQOJ@l zPdKGGOz=dLt#Np#^ZpXx)3SPE|A^njKY*-?Pqf5$I`1z5e&`&I-v+7Rza_FNKG722 z>Ab%L`17)ae2^OQK~}{d1zO@eo%fdjf2@edidj6y)LS6pF+=`DOMIvE{u1DKev&=^ z$!vyH@ZT6&m4Bio{w_XF*!xR7`}u>fAJ5!tt{>0bZe2g_BU<9$;SpcRf3KAPcANZ( zmiT9T!*6{S*RKz$kWU?CRrwGt@mKP3!nJ(P<@kG%3jFQJs`x}peEz)0dcTlBztfs= z{9#B1em`VYe4-`(aXwbK<^Pp4IDQ1Fz@Lq*ichq}f7BbkXZzvv%dX|qS@?%$(myn| z`3IsU|9pPgHU6|Sh5V5k@<&#cPe0H!zfAtKd^*NZx{%B5FIli4}rxyZ={qs2V_TL6%+Dpks1o133;Ne6Y>B{eBQ`EABiV0IsShx#($)W zyvjj3%j;(R;$2>?cn9}2G&{I2)!M-`iS{C|Df}MAHyA0&tFO30p#g{FMYKnG-TiP< zd982G?dut&io6zrbe7k>_{F=tZs8r$7cx7fFKF$MnM8Y$*G}FceJhcYyk1AD+85Ct z<#o;9lFDlVDW29JB30xy8lNah+P4CvbNgPxFS31oF%G+G-x3x8`Su_+{0*{({+Pc3EuW9p zumQ~Nd0DTV&V5e=seqr2tO`#wjW4xY4>7F)#~+4N;P*pT#V1}`JzXqwm zUyiJbPqf5$dj6WgH;-+?@r#iP`~qZEe4@Q{$0}GPx%-=ulEsd)SuD}k?wIuXYxRQU z_PYENZm$m_RqS;RNN0P!6Te7%b=@CN$4jg|Xj(m2spdrlg@ z9J@cRzOnys*TqTpAC^95+h6xQ$D{phqp_Nj_VPV@pKU)|1;2*&*Db*vD_v6(w(YMQ zA^D13Im7p4%Jn(0I`KZM&5zpnIZN`h<9*Ig6FWaY-N$4={LI8`8S%6BUK>B#_%&Yl z`{mpDxrgJh{eEnG-lorq*yMA)!Vd*r;3v<{&(*c#=Y>aX@;Me^Z6|)ZVsxOoex7IJ z=Tm+S$>%8UK{*b`{_HXQBK?`$_+l!bVDSw#Cs=%atrIMnL`#3>ExuUvDEDX6kqUn^ z0a?|b5iR{0zyEeU{x=li@)2|X&v(E&|CdR$#P=9qOcVZcnDm$ZZ2ppHiSIGK_ygud z&Xe9hEabBtSyetnd-2Ebi`&VU#O>tMw%bXft^PP^d~xHwas9DruM>Xa_Szq*Vy|66 zI@{}&_(j^Q+wu4D`P`tUAr%6<9a&XiL`!@1HvW!X#NmsP3itwKRd}Lnt?v){e4uZs zIUneI+BzSYNwgPzpDmWi|Au|0H2(gm>_4UPmuRcLla9ZWE0gQHC7dqZ-<^U~(f7~j z4bJ-hmimc#f9G~Rdna&D9i%Bzp^!#O11Vr3TI$=|diH6Larj|K1$;kbRecjJ_08uu zUHhl87z&8}Vx)#WA*#;u-(fkUeLLo0I0X_9M zqGf-3#M6Akw8q?ChaolejjSO*g6{{q*7nqz&-eR$=6t`ej&;62lW2+WWKS3m3(x6zs3J;S=pe-MbociL64(`ae=b9IXF?_NeYRXT($Yhk=2E zf&=Nergm%F9my}45(RD`A)X(B?=K#m7_eQdYba#mndr zvCr@mCjF!D1@pU2A!a-28MAN1(O#i2xT6!l00EBawcY{R3=$kRVi`UYySf==%*$9Zp#?IrvfR{Sh|@0WJ` zPA7xk+>Spz27gFPTAx%){@+<>lTWi4{Fi5)gnWiu@w4xe9*@Kuo(PS zF7W%K1Lv8C_`y9xwa;*9)0F*W%75<7q>o5St?as%0M`ldj7%9!c^*487Jid_9v zd`;)UZ6H%sj(kgOPnX!+6A=}%j>GMB=1J(|qXjm3wTZ#sax(UMs}(<>Z{2Ozcdv@t z@DEQ!N;%z%uj%6iK2u0nD5UOQ`-O4!%H>p2nDuPUH`6Wl*Vxzsc6OeqnEagS%_fe&JtF=lG^k zW|2|eM0F_sH4}nb%EZ9^>)>-zQsO$$#P;~ae2cy0=_hvC+cUMc?IC?$WyR0Z7suk? zQ%iXf{+IV#_%GAD#NhAVU$^%DbA}y%?@qgXe*gL;@S9ulbM@&l_(SeJ3HiKppG7{o zdb1e(E#ZXtBHqQi1cE{*#poaInNG`*@FMoqC{DsO++g;Q4O(>}3kz9@|4nbzA#lX#q2jOHO#Wl{cDsfi)f3c^nE&P~exwi1dyYZ> zePM0%gLs0*$9LfJ6!`@7W-<6vA36#A;dcBrpV*~y%cIHho#OLTIJ6lGvG{zrfM@1~ zILJ457&EVG#OL_i6ljR%8siZQ%M;80iF+*a$cJRju$v z|NHW83;+3g7lF?N1i$SI4Q2uo@iMxaA8~UQ;$$Q_AajxCC2(c&otu zU-!k}hffB-w-tYizI3ZyK2v{5;4OuGoczI06^wP$)N)C=y#+io_m(jC%xm~?V>$$X z3WjmIje>K?wmS!m(24augI8*dFMfURhxYc|^5jYAySW{IdJKN6lfi#ywoTv7V(<^S z(6^I5uIJEJeY~@Ui^tT*;sO6teSC+e`aUauKtJ+UkI z0liLt`F*gm``jO3c?!za8e~A@;q#lXE z|NUg}Kbm2aPn#J0$Dck4`P^#7FVVMF+vU^XnUlajUBzFygzV>*m>LFSPiNd2@x=D? z>U4{IvUFbzdV}Ya^Y7#j`*Ud1AF`>tS2uC-uS~^q$f_x8;{N`jqNR*W2aO>GcHY$;PMe@ZuyT{>jpdWAM*C8T|X~_(#^+ z`9G9MI&t|o;vW^C&&P&E4a`Ljgtz!H#9bu6WySpRlq}q%X7gLs)|fK_)gIsCtz3Z; zJ`Xu1AK#VYyYcvLiui71pz^Jm&~W0gDX~6hOt#5;?^?S&T44cY+|ekmJcPe#ZpGL1 z=`r{(pA7yxf3@&GUT+qIf2b)gN%DNzY5cjKLtDq6ci!dVVahxk$}H|_#Q$uN!?=Ls zD&mcGG!Voc?|z!ZnqsZ5x4ph2T5alc^mjDBF~h0SUGJcg%KQdBkDJ?r>gCVl&L*Ra zx1b?z`_6Ex>Q<@>lNY8u(^x%b(2!i7;`vQ@m%e?;pW+o|^jyaHWBlN4cgDN!l*i;) z*HWfcjm;Uag@5Ev3VN{GQ?-h9>3aX8Y!(O4BzFD4bGiC!ST2HDoId&b-2Idb_x595 z2ObsGV~>icCt?LgAN1)Se!XQmP5Fd-XUATUjSI5%RB=IG>;;%N?vbbOpU4p)o%hSr z`O_%qCEO=~XAl8>9silFC@Isz)DS$Y=WmA_Fl7A3?Hu(w5~v4qNSBYKfrdbV>X+rMF!)s!%#dgiKLwh)?rRG z?=ThXTBhhXtmcL=k`^Y^r*$puCe%?~Td`jiLJi(v2e7H>`sxWxMw@8iOBs6-Gn_B< z5eC5ci{-9_7Bq?HL+garBew&x9JUxq8v|6W>Qq{^Gdw-gYl{Bf+nhfchdp>Z`Nf@d zfw`(D=4lZ6dnE0Ft{qdbpeQvZl?gn&PFiPN|EUotaH79)5f10d!jh+|V0vW`1{Tb! z3}z$AhrQUpm9sTUaqVYIH)cO>Sb7VyK)`l1pd|W1$E115??h!$EQ1PE-hp)y zclh!3yW>es!7QwfLQB$?aWWTV9>}LSiRUkO1hjAgl#2yikYC0>yXJ%{gAFs@Ebxz^ z?;ue6uBbBD2+w|P{T1D-7X)3Ht@i~Ub!c0Er3=ts3-k0mae<}3lBot@ssX(b{}~>F z)@V7{3Yl!X?ch8Li=n<5N!xo{N=jAV^vb?ya$lx)e7PB4YE^x~RS?QcTggfA0BgXp z994Y-(!!F+_Y3a$&J-2G@wKDJq_~v{W^t=(8>qZJyJ|9`lF2mD9b%RBK#L}8)jjf; z+?|?&UpnJ(y>$KPzq6(O^8w42ox&B&^)3zIl~>5kv){coGPHW~^5B?JPyZJVYG% z82wMkr#ZJjHZXi}jJZR+K~p+@wxdw^{l6&ut38Q3By+vN77{sMZ$QIMIZ)-Q0)8$1 zhsaY4L{DRVzhPC-Um0wIcCnVwi#lN!SkyDHzw%Po@L@RQQmwk%X12mH{97pe6`=0B znhOp!YE{Lh-P-*cs%jg;V{v@^!N@hI>U;8z&=8k4dK?M1TWJyWmR$^IluQ5e=wE(u zWNc0#R5flS-j4;n{d{>?po}}aDtL42j&O?*2 z3XCnQ==L$g?{uu(2Un|AYywM@^g~&pNH;iUyv4P6zkbOT^b*(UKmr1Ph3lj>TDTkB zE?C1GPGSGu_G_Ism$%fy9r43{>NepZpy15$F4}O=Pp`2Jg=-FB{ps}mq40l0t-dL$ z*jTS<-QiQTPJb3>^!Tq9-d8;L-{t3o!sAeLgJASuT4V^`*}4hunVs|!#g7$;DjfCl7_@Rz9k4u53Osrptd(-#+;kr&<*5onKV-*L?k6Sw^p zS0zvmvD1>VV`*$6`(x@43;+6G4o?2nar}V=ep*Hr*aMa~IiHO-vmc@c_p&yaNdQ;q z&*E~3o{b_fc56Hn8xIO|H2C?fv)M27FZL$(_gBWLiA&V<_Z0*w{rw!EI{JH~zrxy; z_31EkW)Q~D;*y{6IcI*)HnJgFoM_Af2rW_h0fJF z)zEvPGsL@~Q3gLlif}_+=~d8#KyQJjyBd6hP7geMlh1LQUCw+F3maiq#AC(A0AJe9 z1i5p5foo7NxeD^UU3*igM0YUT30Tn`b zQ%i6!5U8BmuxcvUG(x>X5$Y8xpZ1G-;aP@?wH8vG1tOfAuWxIuV}MDbxa=o{-2I&%ArWUfY` zFa<6+s+$xeyf{#K6Ii$vM%-Pv>{}5*-dX}K>oYF9!=i76u^?<*`2bnw zAXp~6_A5k$`(VVCv7rvBkEF}>k47^Q8Fwkfk}ZyA@!<$VJZXzjfJ9=85Al^UnozKa zwgq926fBO6k%xn~hCpJ*ueFLm)&frv2=&UMs_uazLmt7Z?s*uCO7LYFz8ufSHGEl$ zFQ+iEJUySpA_lXEIDwd_cd1?p!f@tLD)C_*#0+On{x_0#F=vZ8iYyG8Y&fmv@iMp! z;42zVjnNffmC?{z8Jt4$s17pT44D9LR|no%*YbFj8d@35g3VP1>HZ3Lp?TB?@hb)W ztPeJ%+butCw=zD1&6)R~80EtS+00tyg*mt|moCIV<3^PbMZ6nH8|cp{yJN^ zPZJY#*%-yL^;zNq+xMc2@R9Yx*KG<>OOuK;j2D7>5z8h-rkrZG`Y39%ayCGspbS z`JPYF-w;X#^ywm3qJR2t{@qCZ#Z8pM&^n(c7mc}vGwz|lv^TrmRDyechuuA2Z-=Ik zfY_|2^#Tn+o~Gj%2zEiKbv&vD0%qB|m+C(Z<`_b7*vekvvg zkukgxl$a{yy_P(KGF~{2FM(Lw*VKCpJTsz+sjYvJI`mfu)9a!aV_O!z`R_|)@d}!Z zIoO*-ner|~%{>G0+{&5wNtcz&}il@k~XZA4D?hjT$C=f(kO~PR-;wTNH?JB5ER909O|(+P>o$c zp$#dAG>+5HhSN&0^uZttOPEe2ma4j^AA&o^-cMwxjkqD!swSe{tWRnbpOiSbCA9In ziy`akAR8{&^yxYwa2h*Y=!*iyZmqb!@W5;^>FZQ9M7zEqy`tvSjC(#svv5YhCp$im zhUd+0(k3@WJLQAuSG<|GEU`)+&BR=1#P{_z)J*6OOS*6`Xv`Y(W^SOzZq&@5sz#(A zyp2@P)Y#kxW~lLR3@k>CJ58AC9(Xau|AIr<+jZNS zy*<*-VsF1MM#~k~a1C<}zrekbJyoOI9DEw(xtKmuFUA}hzj!k)=1WTa@FdJ`CQ=bn zyZ$&8f!8?`V}U>8%|>IY=ptqjJ&CVywLx|=%iQQ#hN=EcvkW8anPu8JmLVM<#Evjg z4i0%!@>G~?l?#%xKANHE`#46cW%%`mvE;M+#D0` z6~LM1WQz2;4XQ}%Q<1)AkvklVOtchfKt-CHMY=l{30R8Y#h@t%55drQJI`<|;0sT@T-gI}OD*o&&r?ZMkD)`3v~feZ|!XYmBRzi-uP@7ez3ou0%Js zNznN(Bg)u`PlHQxQ?ABmB0kUK^94Q^Uz(dT6rY#z`3;{odATVg@p%xRP52zgr*+%h zlo9wWz~?=DYVc`wS#HX3d>+7OBRXA#j-*vlxQ7{Ou0$JlzBQg|P7S`E;;H5t_e_RM!}vC93mf0kyI97za~~!( zcFPu#FCVeae3uVzh?{!&DP(F72yQ8d{wDk(FJk!j(Z!D56;G-u@Ct>0G9sq`!d-Ku zr<{?_ae;)Mo^o&zAyG~r1SI1B9I1I?996<2rW~A%3n{Lx8ex7l+AMo++_D%^QVw>q zlx1J#Qdt&0?t92l7Nw!&vS7pJ7Z~k0(nHQjr@KI6Bj$V)sh2a-#$L&JLc3B9b~lky zossTzfyBnpKPdKKa(Z*2qnz?wAhF?dxrsE+8R@@0lednIs%0k9`OZj-Tp;nm)S?oGm%blMw;dViNzLwn&HUG`Hro- z%moq)IaZiRw>cx}-IKSDMItwwNEbLGJ>de00u&|K+I_!c>jt<$qTuD=XZXjh-~nf( z`Ywo)4S0_2y2O*(t>&|qL4>iz(e2NJ}985#=FY)9PnddB@G}bP2b}y-X zy4i3H`K&4U-^=Ir%#)W-H^NZlb1KAZ&WHAd<`KWIdzZ!Ui-Jb{PD0d&g!#CGS>|Ff ze?)Uqjj0Tuo~mbhy-Vp@V=fDm4}6;Y;y2V=HnOsVJMoYEfIseaD)Q@cwFvQX@b6}k z_o;~0#@XC>FldpzG3O}f#%cZ;H)|MDQw|O0)lYYOG)!hI`EXUV+?{$@sj4&t7~khNK7MGaDbpUp#t-gT6^&9{R(iCRTmN z>krebVr0qu#V=P=W8C+L4mKR4KP+W9|670IC?9H|2l+hI*qwZaRXWS(UsrjPPo@pW zkWYl+{BPy6vXO)RB$f}Gtq{+8ds1=5Rgn3MM_try*`qFc06>qr=-u8KbN>s92A{lp zAS|W(^Lzcjyr%YL>U{DU5Y>x8d&CCb8^6EX3E<$XDgZSkF2Jjf054bo$N@P45U@Uu z0C@kl%<)jirYBhD(<_s6qvMJcFaEqe-g13oee_>_Ok8X~OnrJ>j)eg6_QRahi9Ikjo)y^?X|9hxpCIM> z=oRc43q564cXPUW9!c@rnub<=TE^d%5GTgp;9G3`omXUxzie(}cZF54@EpuT_rKDj z*akeJb9(H0a3Jt`2fNP(W;{eZm4TUVD0b)+IzL$7ger^!^>#<%D=`!q+rfA7k8@Qs z+uB5ftMM+N*kC@H<1CAVlj{P94f2=r2liz)9P@#FbhLb6&xiZ?543R)vZY6EN|u(J zay>q;;`1v$S3$eC<72oD*v3=!9qixZc>j0a0ocJ=3FF^cF`{PHl$LL?rsVOj4aXSI z)?8uHKCJR&76VZK$NE3&JNESeWI`VNX*ZjE9QS*uC+fM>?AM4pSoB-LH;UY^H)j`@CPJMqMGwO z&y-)o1V^5M2BKEPzJn;9>EKQj#OT2__{Sx?XNEJ}0GDt~W4Cjx`Ejt)U1F(P>PlD+ zHv%z%g7qeV?73|N2YdDyAN-ws27)xUIX32gchYT<-hTb5=_ESb{)lx)aI37ZpWU7` zf!i~_lEvujSfDhStzr2SE9i`c1c!uC4kWDD=5Aumod}3{t9sDhGi~KEBKymTET*2`g5RbVj~4z_i(oGG44p zcaW#Y{{0YPB(b0CraIftuD0IoCzG&Zo9)Ve4%TyMuSfeCMi|ca^Q5q!e$0*S74|dw zPG|eslb1y2h?IyoWdYvVaiAV>0mV#5EWrEZ4l7H>m|JAUIk_>H{L`rp@;2=2AfBn2 z!3&Mg6^HZX&Oj`g#mdB}e?H>md>WpU{?6iUJb5MumrC9ALl2*>4^d_&4D8_> zY`4Yg)~-2N-@ix_gR#)pNh=dxE2X*tHrwg z^se|BlpSTXWQkE-0 zPD5@3T1|{AhdGh|!2Sl>Nf^S$!3=*-Y=M9ns<;?vm!WlsVTfdcuZplKF^f2Ff<21Z zR=A4}#o3IFF4(gOew7_iv{eMSv@;}#i^K**f}nGAcG3EFDq0yt!>JhY175&S&#X|m zAEaRAhjAckZW2QC85>P2gH1z_csBi#L;EJ7FKlM%T2++Q75gE$@1b7D`uj+`@^bYR z*Z{|sm&cWdttni2?YZ*W8_LV)%7b#b@;Y+mbp*|Jeq32u*ci&Z67(6wPN&MkGeCDT zl#Av0T)CQ|T&z{%%B7>6TKz#C4jU_>HgY+k91S^gIy8AR(yBc%e-n`H!3M$-*2zNH zm44TMXy$Q*pX?={R{UTeIxR_w(^p|_1BAX!KVuv_@q|e~0O^bO+!-SX?HFbIzp_~^ zdP8_V0`RRW5dhoAlJ+#kQixqS)bm2Ki{(Lw035xkc%6y6sV8Z{IWbVlYHO{5P!kvvx9Bs&-b#gGjAEGa?9GCI zDK$vyJ5O(Z?>-Kji3~U6kpi}XGi)MxWmA*s{Gy`#=pYK$!0+lRQy&3={Q6Cfl1r|S znGX0vWAXde7JtbxgMWwq_j{Qm*B1HqAOKaq@BF~@m#+V#(vYv=XI=)LgPTYs-&`^e zCf}0iAPO=1IQli-uMG1jbmrUeXNl_DY1TI~ItalHy+G^mJ;cO0y2^xRKff_X zMi%*uu*#=Ye*zc`_9320*XJR_4RNLboefY2L5T*K{_k9dP47Qb{U0l<`akpfPk$m^ z$?Nk`oqlG_^%nl$wep{*&)9*um(2WMcN=W8_!s_q%NR$t6Ulo#vBdQ2s8{Fl>Uz}U zFfN$-HT==zKU&+HOYOaoG3j1DzusW?U#2|!JK=ANx!xkryM7^_%<(5(zi+M~#yp|@ zISe75cN6g?`P*A;`eg0v9#elJ`R5ZmUgiJw=*03*Fn-N9_3hwq!p^v+ysx*(JDc=* z4GLMumqhIiB&xqboca^AXS0cy6&>UkzJd6n_~q^E9pz-Phlg34OnbojA{ER(De|Bmsemp+Vuo3}bk)ZNUfZfbKP zdHT6L^%r9CwqEDZmSlJ@koqzAk^e{xf75G&w^Q)<$m211ZEAz33HiPCL=4{Ek+o>= z<|DklWwCgX+ThI>c$KkuU220jQnYt77LC~K<;aLyw6{d?HzgKtac%HEKFsCk(B9(O z;5{Pn^jP_w7+#C^`VTSwobTsec1BFp-(L8Zx7We`hB>1p?!QZfKJ?iB;j0avU)W0) z9+BAWWzDc!$j|UsFD#0|8&?}Vv%RtUZB`q+G9kb8*!FH6T8sAP2|O*9zv;EXGwiu0 z7Ozc0JnQ@trpw0CglIVqDCZ~5hX?z$NSm{DnB&~tlP-+n7h@g`uk~mHJ@e$F}+*Wi>7oj2RoL}B<1Ss z$V_Rp!{iF4n}{b&2$fl9$Q=3)=KXLi&n_(-%m!zZTJZOTz5xrT`KJJJdm0_D(e|`D zz^BQ=@aLeZ8jVc=9XxhR9pf36BR)h^!bMYYM|$1z4*Hp3m9HTPsnz(Xnrr7%t9KgG zz@|X9mI%lDLaJdrhysu2MYJh;Bef{waNpdzjKg#ip}`?!K(mB-BM$CgQ8y(yf2rW_ zSB%)4zgJ-RrWhE1cP_B=#~v!$`3vZ`t3?@qcVWX9NiYt7AOC~+3tkhX7|Lp6Wu)iv zWMeo7ht5!G7lkNO%iHU{z$!hUKSk6wlJvzGo%J_j^eC;TKBlgV0jD?sJUl!-6zMPw zHX4d_xdt1Y$W$*TQ(Xz$7pBU=LREPoyv+pfC-D>5J~~w+1XgeWM2u{OxfPMGb5U8$Q@#3_zvO zkyDdX3lD*h|iPOVu`0T%@>K@AhUin&Iz{M+rl+GW^}PWi-NJr2gW4 z8I5{nWi%QHde}ZpxZ{keZr@iH=2jMe4;es8-B3RrmR?L9TLYZ|8Z+?4SU%DVownO~ zpy5!8&jSq!b-NTalwXW@JExWYo5r_p)zN_$L8Qg!MF*ZmX-0HlJxZg|fyXfQP`pjQ zaq>RkL(0WhXn5507BxyfY9g_YFy5lT;%CeA;*}bH*H>K2?Or1pVz0ud)HUy46vgBQ z`qGdMcqq(Lhw>CN>*Y@6Ut8>49v)>E?`~a0F&x9RwmgJ~gYCbjHm7e2q^FFj4xC1> z!Aws@4$Gr5-t3iLsilu0rbMjJPaW)~l;q!4 zFk-Q{c>G)CKa$GVbt*sN88`9^Q2C969Q1$bv#!g}aVo#hRe7d}u1@7I{kxm`S%0nT zRQ`Tf<(d39UgOaI^PY24e;LVdj#K&jpLbJ!CYA5%RDQ$@&gG@Q@QGr~e&Hj1?GG@2 zq1Z1OtuRnLOlJn#Fus9``2_f*d}3?qK%;+zKZZ-nm@^CC!WIAHOR5I1g{Ue>uPkV& zRTcOv3$m&TvMUR4j$lD!=vY}opD`;zmOhR(?Pk$(YFOzxG)#>=3AvxqS-Je$b(KByVikT&i}u zD2Abqu1eWdK(93}Aj3yK8|OC`;#vG>bcmzbRJ_loke<@h zA&%yk+0N}}_Q3RYqQ6C7ph^=C{l|L)_UPj~*Xk_7v#Q+X$Qh&g+g420+K@`r7A348ee<`1pO_vi>Gc<c0F!r}D4i_%)aH4{$1fKTfZ6S-y!=`P*>Lpv&?*dO5WJHEc?BS$?5Y`6oBIEY z{EJfFuOHEPGiCW!hf~EIWb*P^`qG&44Lp?}7gN5MC;r>Slz;n>7ygg*u($tl59M+G zOHBExp30AlDL=$h`8F}-w;XZb{(yd@yS@FleCNJ=w!So`{GlJLTW8T=Mh>=fDrr z;|Sc&VgjGvA(>`l+}CEf0QdL@F`x+KPhg!Z1RH;du7 zSJW!+MD|{$?=7&m_vIA+R8JjG)b{qFVdyzgjJ3A|+BlzwN1f zvzYQ*uszZq52*U<5Yhble*;_yOn>J=e?G21b()li6!fIT%q7zg`o92{@x{3fWBGBE zM~jv7>BhEK3_{1#EeIa;Q=*@^+OF+RehXScd-LmSPOAJAeR@p!UN>5-ElK@dV#;r6 zb{urQ_pl?KA>;y zY?nu;v)q?2(IYYCx413eV&xLn|6>q3-fHPFp5%F=lf6B^pBvjA)&9Cr7`RCkWA=9u z>@TxgjOV^iKVks@J@gdML8W(;IfX^0FBQKaqGju2RD8rQzW3e}_RV60hIn?0$EFxc zE48K)Hg0^N;xqnFRq=`cxtk3Br~Ytq{AGNR(!fD~j^hc7=TCIB>;IOfvHFi!9{xY3{1y-8^YrO4~+#gHs8HM6l5A742_?=QF>&AvwjNv zDz)q?Ew@r@U8Ut!YVGlr2Hlt7kp*4?reO_6DZUzyuf+S>w2_sSGcAS@W8w+hlchI{ zY0oW}#mX6?S>#LZOl|BJ?XV^F$z_YC_df}LTc!Ma)VKE~f9R8L*p`8|K zGLX*ppiRZO*dcA4N0CYAQD9YYjn-m6&p)%6vf}C zw=h;8iuJrod$1j~3_Jh3OtdyClKIA|?FI99yi3eS@Xl$xE8B_rZTj6efcYM^Xa0PB zPumt)z*JbuTg#fzf|`KGsAbfS5gYWq)6foP{|f)%wAmBvtnVL(uE^y6&O2Q0>G9>h zW%S9)y#-h|#Xb~zFa-$Pectess^bJ65x+DiOB^AoazjAzzO^ew{%N!riEwgy){$wBeOWo!9Y z)()1m{!7jJpX!GC_jESu??Rrayjj`|93WCrbIxDS;B}!ISv|{wA-PRCX?-QKzLBVJ zEY){EH6k*rC#$Ig-mJB1%}bfl?5rGW^7;vXi3Dd>)MQMqzbX~WOX!=disJ?4t{6(n zPp-+&10~e{PDcCNoC3L5)TFv>xDb2N`nsF-wdh0br}}vNgL5isSmPm#l$5&YP1Mx$ zXB|IEia2-H@t-Jl)oN)2N%@iOZ##(Ef2Gm>ike>KSrs*RdaKbxeW`t^{bqe_j-h$~ zdwE}O%DXMe`;U$md8hsr@_kOom&y76PQJHO{nMy^*1y}ZgY9bS{EzKxklEhXyQ98_ zW_=Yk%y8-nzHQSf=EUK%hNt=Au%2sHp%dsPAebQgNPVIZ;azmbN`u?BzOIhDK zs;{%GuRp8rf8Bp%eLqlrA9gU?cg_Dv`{ek$?mE;r)U2;dm@K4O+61OXx5JQDaR=55 zKD5?&j4JiXwym~A^EI*P{?P!O+I(=YZA%Fm><9)w!X4S zgH!ak`wI|yYY=s=DyzsHDJ;&ZN+cW28&g;*1eSgZYq4uQQ&aYXr&eopS z_%(^zJ3kL|95(*F&iPqr*s39)iToOp&wRm8z|K#f+VS(& zhc@}tll*iQ{j08>pRd=kwzK{&_*u5bCZBitHD2u}*UrymjzjVpy^PDJ+~_-oeELg% zvc-6uZRh9G+VS(q7Mpy&S!?$99j|eI{%zQ*!OsSM4U@Go>M0!yc59}7QwN?k3UU74D;xM!%@C&qr`Y~y?S&V8%VV9Mq@|pcuXWe zf?yGkV@k2DrVLZi*bs|jJhdhIcXu0HZq*lD$hdr*ak*7LUvRlq?}!{7N<>>~ zHEe!8jxI_&Sxc}Vc5B`h$d_Y=5*r9g+wBf-$PcC>+@yU6BSSbTG=PTB#Eq5~-m1^U zaE_+*sLzoY1TWh)r!>D5c!L_zkzZf}H9z~Bxc{IB`Rvzhg zd2If<9h1j+L;{dUA8f}U$tv=IEJ>0vB`-XaEM=>HIWO4*i)2s|p+<*WVbV}R3G!|G zbzphugvmAAF4rdYIm%HCx7g|`9a;=*0Las*CLiUE;*JNui#M+w9y2KB#wPpJ3 zIjpvSk>OvM!(_Xy7w-{oE;4$=R^+ruZ`j&2YFFBt>C`SdQ5EmCX$!WIN4v<@*5(K6 z+9mtWa%$N&{Y=&}971p4{Aa$zIr|bjPK?E#IfmnWgh6?JyWM#0ZZ<7U%|vJ2{TBW7 zxqkf=(NXcH=H7Vf!+(8G{Q65Hyf25kF}>Ou59i)5uTOA)`>9duhkPD6U*ClL6CRj3MOynME=>5$$LakF7F#>P+ zcAvl*C2+9di|hXOuz`~ppsxUE!2oERxKKt(E3T?syhM~K1Ka$WIC?Bb`*(A(KORXa zcDMfi*;!KBS_>xaA2crQU5^^l{vJ8Q(LZ>eV9Idx%VGM$6zVaa=$<*o(L?`uUv``h zhZ6^2FExCZKkIZp&KAa&kM!5G8C%yfwm#Ae1X~~JrNkB-F`Rpc(4FMW=m?1a$J>{{ z$9Q%B#}ZN+6HAD;2#q${s-TE!bf$y}39)N!p_Wi;OKK}cl9G-glxl0Q7PT*>L#x)3 zN+oo$RP9>NG}@~6Ra@o%J$HMSnV`S-_4oNaF*El*=YH?G=bm%!xtqK8)TdS^1W6Rt51IysDaCH+3FDyP z&pUd`SO)1J#ta{OJQ(r{97!Zf$q8hcVe+7csGr?<0|mu#YqGE!W6AQCT*udWm$%eG zEtWo^-?xa0ceTJ=TQ(i_zUz8160PXCCwDq`T`T5nvgftI=*Mxc2ajp#mC>Bn(BbPl z3$P;B=e;J!M`SzQo$aK(J@bAo5CFEnk8+^#2v}JcBvG8wi_=KD@;gOcr~&3v?5MU@ zt=QRuEU9_<|98~~!q%_Xic-B<2RNuLtIF!#77<|r)M&1(cLF{Mn^I*7x&7=sV%-1P zTIqw9h3JEgo2a)P)ZX908nP|)0of)&V7?-tI|?vNJ4ry4qfp1jNp#^PTA~rTdD}OE zpm6i{QY1+wPTyv-<;QIpxQ0_H%c$^%?gSAR(zP-ZmGviGOwan~=P(GNQMYaxFL{}# zy;OzqvX}^)=g;B1#ChiL=(;s_veaenz;>+^FAM8dZF*1@^0YQzuyV*XjMn~m+M+Qg zLP$lWzMpE*Vk2QZs6wnh^2BqaJ4jX1HHAkz|GF$HSDW$(t5Q^R5|3OhOjIdXdm5jd zu5KYDMoebcu(#ZyRaoQaY6<+!tIhbEr)G0zDWBY@j0uXaB85d*N;=Wx=Qn!)GKI@G3#I8p^sDZo}hF6 zGft-*GqhaU-}%h};>{iOrr8~`KS~XARQoVc285j)z6 z{MB#9u%=}W!)ujU(^hlvrY(tq7$3n^!6)gj)YW~}+Cy59NR!`FsOfw{xGjUWQ8~ir z`IW*|Ofk`B-al+C)j3*b4mOMMCy%5HDmj68Q?4b57jVdteJ*au{NsXV#uTK+o#@I47wgDSk z3NdEmNvRB!nK%{$=7LbvRw@mr2s1N*4lxv3mdP`Xr8o&1M)?qEd65sme)li}!p<1q z1kaAS5A`Oe*Lpv-Zi-Fv`w^EaL~8_V_DmQ=klUJ7N6Q7ndo z&WG>L8>7f{GzJMtj#jbE?+|%9R|Q@+_|W2g+0EU7lV6bTfYjVR@;bCQb?RL0`7NwA z-1@bzgUAl|okyWZ2^su)qEQBY4IJwCZ^jP?Q}l`sufQt$&~v<^MO8(^@QM5W?gpzd z*QLe}5rBPXC78f^RIb)c$-iuT zlKgwBozA~7@+R)gKQFV3xmqZz)4j^mr{b;C8+CM#LZ}5NM#J0x7xKh)yXz7krN^$f z>h<`{B-n<_@%-#dcY;S7Fr1ZpBo2MNbXmrgPokrtq;j?SG+OzFK5fJ&GMi9>$Dp4( z3?|0(I|J1mRh9Jd_(M4MPU9h19vF+g9Pf@j1kG5!SR+QPU<0dD+Ym;BUKVeWm9)Hb zz9@euN4yhu5AWpt+>n(sm%r08-26_g7Tp!4z^3+)$R>$W`mr}$i~}E|BZ2eaO98xV zo$+AWNCW`JMJ2dihT>*X-X6wS068p7fBPHnNEc7{-aXpyLmA(hKl!$e@%_0*B#n7m z1O`;poAb11@d@r|&PSw!VN`IlWhJc0BZt+N5daf}#4Rc@T)TlKx;*hb3=I-LR*6yC zNtL({i8xf!PBht2st*I>4tK&u*ZKyTCFg#r4Q1~+hUl3++qI=CUBVbt{| zau_9iPB?7MBSw>vl*6b#fmDe+?dm#K@z&9}z!UB^#&butqQM+@O40mskeOlv#>420 zS*}wYaqHCXdcqKKjaxCvPp4RbIhLCyR*MeEoENQ?w zk%>tQ&WT0%M6)JT2V9bTRBQU6#p~@s-A8!68{p92ZTjTj+JiMi7)<7CwBs;uJj3r@58FSOu@(WuW(Kk;dkRb~CpCp>A5pS(7h6~S8fp$A#(?y1jPcNNAaymfcslN=Xq zrYUhYE^-I{QHj`g$Jq2(s1=g)GQ29S!<2+PQpzGBO{iZ937G*O+cYk+MhBRFxtqVB zYnb(#`xRDEreW%qW)=OR9J*SNMy9?`@jOnc(GJpT<5%c$MRn6aB;pXq3 z)i8g5@^SO`oJh;}C(Pd;u5JE)6H!wmzME0z@AGhpvLW4W@ZJ(J#yrHmH_S0p>y371 zejYIq29=-A9q-1`Gnt*vzz6%J4avoL4Z~wcH#R&z7M~e=ncOi)w4G1n#$JOzb_}+) zbt@8k%zvz4twR&QspN}kUi+L(k?87ela2>bK zuZ8c|-!?R`L+CRBf7;%FgEbXflA61lJ%ENiRSK1bGnA}VsB^j?i>?@*!aT&_l<9PE zc=L#4cZZUstotHx9`CAT$kATrz-};Co}-|B5a~<1Z4Rb{W=Bj!`Pc;(Vw+qW0GtK8 zX@^m=VG~$oKbyd8Q)(i!mUSyUzAuZcBjiyJDX4KhIA^VcHh0sYd1|$O)17|H~vXp zNT90S!@PFsXgyiGuuH0T->aX)wZoTvYgap5)$S#g)vh)CQPu7ls)#$ZxWF+Dqw*|o zHQ(9|)9T)~wq3zXh1Bk9A6~n6T)aB(6lJwr^aTIn1-cmq0t-E?b+w00#?$2l*d+r{W5V<`$m6ZT-jLPCJ~tX~wH+N+s3rz`M@XNBq@j~n+}zU&CXZVKC!vb=$c z)je9!+?780*rCXP_+q;q1!w4<7H#zoYJzN3y*=p$*SFfrH~7L4TY5U)^iE<;iJUK} zoY5j@)C8IHCCb@F=FHwEX;u|Ew+xgyqbO%>ne&TXGG}p-^YaXuvjpX&J#7qUb5;5; z4{)3xOq4l)1OvRs85e-_iS3f+A(7K5mcrQ5amjRmcOCwahO8SRG^BGMgdxD;f#*P? z{4u?T)``}BuO*b^pH*m#8r(LME6M0>v?ZDXr!nxz<6Y%RO^Q5E$~>edbIfY8BbF^d zM~-+}=*MV-e)PLZwuYAScX$8^2v!u)Hreer!%^=1h>27_uIt4%)7NmM&evI`^CANp z;OT`Y6VE0*C-Gps)5)n~Jv&9L2L^p~IArE(BOx=fmtkt)$}*vO*fym(?&tt3a-Zfx z^V|`W(6s!lfHdZJ3DgqV=mc87RM{Bo@TPY)y-wm)h39PAwoyR-cQ`o*1H$o#obKSw zb-R*vg|iX-EVX=QLNx2k|DEg!Cn(SK2eWipo%(%3suIg;L3F z!>Kf7R30=_sijj{dq*l+g32{oi{{-&c8==U7~&3Yj76&VS1_3U*bzsE@_sdly>(O@ z(X(iP_n1s?uKGxy)`ab-b}j|!9-02(R{4HI@%{@VkxuI+IsFYXy@p7?(iZ8XW%>p6 zemRjondo3i8d7}W1?vsOH+ZKU_3W%`FI{TGowi_*hndb&#gL8OnM^lSeJe0^1V zXHmcQlzvR6H&^K^#ryRr-6PW@RQmfOy&R>#E7Oas^fyKNl{QEpEz>XHLJ!XW5hDE? zO7AMu_p0C;DV{xe&f_WeZDhcs zc$(pP8BZFXrFiz>Igh8$;utD})eqF-N<83{Nr{iZ;mEv)Ol?6DbVN(+3?+^=Vz%^k zc+*Qqb2D8tRpsn2ayINLb7oM^$uehC9Qe#>#*3WuTgsf>C}&reljJkC8g&2KCz*WG z2{-j=4ly&K63jpyn1M#R8K{Ih1T%8E+W2`SSs`XB$vTx^F_Ta@m7}p#(Oj(&qjCVt zI#~U(S4!0TScW6oGKKmhWb%F>bDm;3kFn)N36-?AU4aJZ774n)|4rU#=)2XTSuqob z$q3Cm_ykp3jgw~!>Cbm83YRe@1e54)kopAvyf>Q4afc=fa&|VEN2%{n>O&I6y9#eZ zf%hGS_djHQuSoN|R^@y|W>XG`ZSfd_w2IdV#izQR27I9Syi#@4$+_EHJIqZ$OPLvM)CQ9cx%(v0Un z4Y7p$LckhO>Q*-5hDXy9=dSZ^JcQ*uqJ7^*R&zEod1tbmtQ!Mq@WsbjHwMz+!2uwh znQ#$k6-u^>g8_X^6uf0F3iigy^17^*<&_oX)$A_Ii=gtV%baUe&Ocw^!k6Dm=DY!p zc>l&9)~U-YrS-kYxuLJjd5CfzlsRjuoS%xEbNkDj%P8kknRBRex)z9>wTH-@uT#!3 zGG~U$nI>|Md{yRbPdVGloU2sMfg69%pXI+sqaEi?N9pz-Fvrx_jDyL24ys2`oq@2s~hm3gfV%&&7Zl5~7lEZ_bD`~2q z9cToSpD!N~R{TGWm=&-2I~WGvmyxy8;J2p~mk?7{9yP1!a6=OMd{ZpLPRry=|f)#uX8x z)xE#4c;N3C`>YMqj-My(=Gs?6he)Y_Ft z_V!RoJhEpuG>ZSo-X>($wrJr2-f8q2yOmpw*YLL(ti!vcBiGQ}%P*ul3g zgJ39sW6Sp09d)0PAwZxp#hLFkQmMX`oon`EzLm}mbk{6rCZqF?PUlZD6QGk?lnJiBEcKW?xHG$0sD%7ZtVG1%b0 z$*Lf;R_r30>?&)rRv}ssrW;|#*dl;vtw&pK$7&OF49oxdjoGnf70Hg}Y10SDz}$!U zB&WV3(4rCPq^^%@ub&h%X*M2W`TQjqo++Fk$4G=h#R*+O({wBbGY=W^2RdB<6V6nn z4(3oB4(46)-Y^cPvH(*=fvLp6AXJy5ef~2#ojbIjc;zIUUtWL4uSmKhvM{KjX*GHJ6J)M!^wkn1BUl3AXuIm^?!(ONt2VrqBd*^kO& zDatY&)gC&{Tfmk+4w<~P{(|M4h0Eo*(bw2=t)tq`MBZg=>2y?zw~fsCZcD5dWHH0r zg62EflIG)-GeYL9iVMnk&JP96&yyt0e}Lb6g9(~m=LOaDI#;JQx?`PZh&m6LL3LgY zT4btTyd}FEWoGm_Gdi6`4=s9{jX4*ciwwxe6M8-};CVa)@w|;kN}(=)R(tYLgi-zqwI@&B6x@>b zq%<{&J2d|f&Mv#=tsvMn;8Dh|xD=~BX@qdSh=PhdHD#VV*^^yV(!JV~4altZKNlY0 zeT!Z*+Y`I?-A~}4$)21m$Ie}3cAyMZhTnNQZcK4*Pg>-+uuw_Xru$G?eYu#jCLXrU zfLW#3!JLZ8nuPxh3}$O`{3(mVh2V2_(Z45N2h=?^xyLZhc6LDlZzY5;hpZs$`Ae4VSE9 zD-)8GoQphzWgb6rZk*+Nj=K20&hj-xW^Lsev|S**<{A+~*A>$xy*1sfBek##yzQ__ zKuqdgol^wa#GTP}v2oznzflV^74CgOs*q2?3GXLN9H8okGX*BiL$bEP$<4zg_G+Hi zPGh#}hK<{*bErF?M7oAgeDyQkeC!S!U6oHFK?w(@hw@3JD5i<|>P5N!Igw_OqR?07 z?jUe^+Vfb=h4ED2(F*bl2qBC+$4h_K(B3%}d1R z+N7vp^X#O{^gYdD9|Qz4^hri7Pa8QE^2EKBWO8Mf0<9r*DdneYq*;FMA)a`)ijX6^ zkDL73`d5V*t(Vf%S4z)XFpi|>Cmb1o)dsN`9;Q}m?ruTC^T#i!3k?oelo7)7Bd!aF z@C3a|!V_D`-I*;lxZX|4j>vFv2+yF4&Slfk&^CDh05J7~fT14a_3zepC%Jj*N61ZG zdW*cGWedqK;i>`vr!?o9q7flRKYsiI(-enFb4}stE;U6iK5xN@px_ISu?!OA+GFu)R=$Hv8Y5xXNqk9Ksn9S@H9^8gBwYLCz2o-N=wW^a)_>L1 zWvuY=(pwKJ_0$z|B_|t8*rr^gnz}=Km*a8jq~A?(>bI6iAJRFP+T*D9?nrKYZRvy1 zpk5{m6wKH;Pv(3~=M6m1p;67_C9A(WsIroeq&vkwE=xNl z;vdi{#I0@@Ikyo1C?&WxvM%G+djmPQ4DpXH#4R>!FY=_yJj5-ZS$kovc2P;Tbj!pAt=Ny)g#u|wwYE90WoDo|Ix*H#NcW-Z_dTJ0n? zHk$)wr+ow$D@*#9Z}Fc(`tgodI`t=Nz&!2XL}*a&Oh#+C(Y*-MY8>Zn$F4eO{z`bZ z*}Vv7MBwvgYoQcpCMjUP0|nkWsv#jdsy|3y+!56dwt_xSYec9FzQX`O@#8x@5^fO& zNQ6Nitb>=2L;cIcXHp)L4`1AjH7doQc8MUS=^El%T{w}2|;Kw!Ss+ELVATiKggE=_Bz-Uc=I;q6qKp+3D);>sYwIkF~@2IQO8Nod5 z5$vKf>gsqv@zZKW!bGbT9)Es6STz^awTwTj&Rb5l+BWclLI@vRkgX;h`%=VFcW9p< zfgP&Mt|i?*#rG_%v9p%j*+aCPn%G?1n%a&z_9D-GnTOi0FvmXR-*jQxQmdWJLEG^q z$7A5u@rg}w<5L{Ex9Y@fYIFJLx>G*o1hpIsA_s{6W=o%es`{HJ4byJrT8SOlt`n=L z6YC(wz;~Qr*S7djsjyt9qWz#C_3$@Na8iZLOV`isv_$zr$*_4JxRVm0v^t@|gSuOy=)a z5Wj2-!K*~4{Q;oc-;BNn>~9u?5i))z6u7Uq*B&OHzWCHc9GgsV2me&$Xn||?B+qTE zm@am>;G8V&Rarhl7QFoK@)yh=@LyWVU!IY_{GaOa)>o!_lrY!haUg4qr!}4)c!uJc zgy)X+!$R)cMZpf-XUpsNV9{Ep`q|P?Q99?ko zZu?T(AQ1sLhc?`(8y;cMlx`?l5E&4O=X8-;>WRbmL3mtvR^vH{=QljIfLZ}jc-r9^ zf#+>JpWyi(&s98?KqDH@i+D!inTcl=o-gr8`YQfam_EXq-Bl#X?%+=U93g!)IMCW( zUAm-uN3hSLW%(DzLhp;l1pb95*jWN&ku9CRFgAJX8uQm;UwD4pwQCSALjvzlqG&_s z@|rpo|H4UqX_Qm`g(s{wCh#vj;ca6A|H2c-8WZ>zo1XnKMT*tcy{AChUXVNxA2rfPYK6U4-X4mia&+e zNA90gBCn*5WZgaZ8b9wcRT&)uvY@Jb*Zz&&c+=?>cW~-;*1w-BY3|?uzx889bA2p6 zM?r~N0dw(ez>|aLCp`4qJ@dB*xqeOQPc`CnZ^`NVqU&4jG_{Sz50seiC=U?|YHbPi zt|sQ&9j0Q7Swy0c@|6F%g3Cj{znMIAeZVXawsczLXtZ+qu%O&v4mbVWP5%6n>F4J1 z=Vqp#RrQ`S{ajJz4kgEW=2OB!r!SYjFjdncDgCpS2cb{mIgaNto|33ZRXl~%pZC8~ z#P50}8aRgBWVpwhi?eW5!aQk250v@)`FcEG`^w8>QmE>F*QUL;-Bf2ky2L^StcHw@@tHC{LBAnmIr<+fO>6vqiY~}4!mk_c z#%j;xMV|hphRkC9G4^cJwHI$CfuC_rvQsL?xemqQ-rbN9#o}Bc3AlGx>-p;`1bV-v za7dK4p#p`21ApldEy4|$6BtXcYxDI-qTES) zCql`HL;TTS{|kIyTr%J*%klL|@Pn^hNrvxsYlZIz9p4Hl9ts@(@9|YN;u~I`@oy!r zQRU$p1OG17WcYe2e8mm;g63Hb*89WKZ4y@hK>E%<1?UlE7rz|#!m)>e{(USDtc&yyjVZMMj(-ci2LAmK!tf39*FO%!n@0aVMRy^v{+oVO$2YZ>U)C{v zg`O{nGka+<7cLpNlY;q2BYJe4{lItoX9K==9A7Ka zfxP*3`;ryG@HJKVnj7$GkKHePJ&pJ_1atoB;wkY7{dlDU1Nk1^e88Bv=xd#c&HRJ> z@8s``pA7sf%kdo`^=Iavz&G|uhVMFEW5Dngi-_6f5 zXgw9Q;s*aA$Un6IfqtBD!N9-6r5V0i)O=?CIXrcBxp;g@y)1AM2> z8}QZT_?{pi%ZyL7ZwYQ>Dl3rH3?TPB>KEjH*S<}S_-2-3{Od!-oAEh3@9~}H6X-4o zuKx_CInqD0{{jCNo-^?8j|UjOLH^qJTkK^Z`{$7OjP`kI4Zp1WAK<%v)_|`a$Jd8= zWaVE92Ef4ARN=e8EFb5kR{ehA>uJQdA&B>1>Z4YCt-~0;g?7om<_3Ju`-bm}GY0;Z z<@gTx>Su?iZc~QuHeJ5JFjue04d#LF5CNcWH)iOpIjW8+&zpkKPY_3r`yO z_eXJtZ>29jhv%J&4B9EW%Ye0Sy1_M=TE#ExnEs>lzPjK7kIs%RbnKTL%f~L}v-5P( zrnqGDM!f3}oYOuIMZ{-*kcgmz0}BFKvCGfVX5BpPjZaa~lyD@aU9;IT&LY+AETSc^ z4F^YKqp^e^E6vzy$H3oi7qImyahWYb9GN|X_D|`G*FFNl1lI%vFGd9=&>4;ncbj2a zqi)=5>+O^=YDlf&6s_o!bHl^Y#ktP6xh z)MX!tVx!pd({#5$XN;KhG}n}Wu%0rrL`v~`JM)XKFJc(K(hV(kc{@w@UhJe-=&!U( z)_5@Pgh-_0dAqVJa}eh9B5qfd?v==#Z0dNYa;eR7v=X17qG`P2O|WIG20*uSmiGHf zY8aeuNyp-go;U6sm&JXkW(dwd-JeDsuRO&MTtiTUSh+(E_lwEb)yq{g__8v389U_C zsK1ECNqd$Q4ah7>cL=njPULp+zO$B^!YEIcosEKbH3)2EM8<_$2Mmk44=T_}*!Sg73Uof~VtZOyI{IT%Vn2}N zs%C#%qPorG%)rv0zUHWYeMX`>jVumNZ9+w-{l(X56?(c z@vmA@-S|MFO17eED^PV&sNxu^XhQWAq59B*D!~U;lQULSG&9FhJugx9f5nRG!Xk<4 z8)P@N;MN?@t6lXaujs51ho>2#qNT7gAK{NJV*#6+i%J>CZv4&DHmw7gp!cCac`hAMz!FghHM;x=`dF&6UVcm9ZdyNFcALkncbiho>tc{{SCj(ttU22fn9pz$1d>IVl^xvXug?N^x^6UE2dEgeJ~-uAo!6XF%{`$#Z)I#VsctBrGLUP&3{^As>Lv65~c?U z(^LbdsoLxhEPSf(%cqhGQyu`w%d3${@J)kfxlbAkw(Tb@U4$tP8rlAy*F3c9U#Gj#gMy3mgAdADZ zk}xF_CYJ$IhIVYR1=A>BKH)9FrwtO*uHIHmy%e9Wp$;ZY&j?KM3e$09adCeMHd;+5drq3m&+DTSSt+OPb`dTq9-oRzt^Q7ccEW@;uFhvq3w*ga{ zwtkU?PrZCGp=St8`z5CLeEQv|GbE-%kUtZj9u$}&6s8Tx;_&1UrrG!yGu?n`vi67- zQx0zQu;`~?h3OlKDbNSgqYBe=R!pPUb3SF!ye5;UDh$&R!W2N5W*9I{(xxu7@Trk6 zCRi82r;`%X@SfJTn=xJTX$5qLiBA{SaZI;pE|X!(L>7nVEMXdqk1<&WOcS-g7FaMX z&GX?Cyaa(slbBBSuwuIDmY6D7F(nF2$qLhdpoSfuON8kdKE}{)9a{$VKJHldw4w_3 zMMXgbZrT2ns9O4<>ZedmKshE(ZClGZ^$pERGEVhksQxBYFA%C(7F5~uExa0)>%*(E z3e|0iYD0G`ukxlzUTLtACR7mu)pH8fSIFY<6m0`ktMM_0M)5{o)w7~H>udGODO3-D z4vQ*0?1QSYLe<`iYWf<^t7SAp%6L_up$aBc6$uqBRX3uVKhMIe*1o99D^wLEs*G+{ zUMdb?s8T-WyqZRHn~YbL z8LF2E)h!T@nTJ1el=kLa@aZn2w1*U;-VBi%r5(>zBbJ5BO=G3sR{(?;q z@_Z_J7#|-#cn>8%tV$kaF1eRpa)i0$R71%RP|5k_MQCCuNYLQr+iD0+z(+QQCWbj( zJjj6Ml!=a>6yY?^FYxQZ7Xu9<6Q33~!SGOo?*v2VJ-julE<$VYpu}e&W6M~BzudGI zdxweYP(xV4{)OMLMD1vwu*7I>?;QTR8r;9#y3oOW@)#-1U11hY!n|fT2il3IOqtj; zMi$IpqD=22_!zUD;ohKdw-yB(a63)7O@RsAqH7JQL}@`*?4KqSiv5zpJ|B*T3Hu+r zIQI8wrjlVFk1P%k0`dXgBz%n7!m#V^%#7JO)7W6S%x0gC2(=>A1J)IA6YXqmRSzXz zl^iW$Mb%B9V)LgA)kXMi4i8ph1$YnOV~htS$d35W+d#xR;?P3FB`^vCQ5%Mcb;SJ$ zmn7z}j+lpVN$7{HBkn-B@C2U6*ov8>XpB`$38X$iP9qVyzII>HvW!_ybkymmr0m7yXjaXY7K!)IAAt@p(QcT`|{MPgdX zFd;HU(?S=un-}wG)$%isvuPomm)7HPM7QejCChwT=%RKNoI$Ho{&@j%TIjQ2O9eti z1w1q#$|^7)Ssb3BRDn0}F=hv=fG*%`XIiR|;9CWZ3PcrNlT~=!hpqhvOSaauq8j@J zXKM|GssuxY6Si?$7)4%oSx|*pQC0Fqg;AP7HA$j6?6fxaP=#s+$}u(eh3y>GG)$3l zUJXMQhbMzjbs$uGET|@DS$K7JqmKw;j4e=2lc>h|pc4@pUR26L2Dzw?+)7<4$ z6@Hghc-M!qov|C7H}{(;$JE>>#B^0!MakF!4Aq~6suiL779~jkYy4Ya>RtRVJv?%Q zAyWR=pvN${?LCyOtq59r}YM>QWvM(w<3{pm-y5iGH z!%`%wGuGft1A*!!_E2$Uzl#ND$`Ps$@zD~p{eG&2Q-Aqls;D?sSz`Ll2h-=KDuX?^AQTZ&N+axBux+zqA`CLar#g@%YWT-OnmzGg< zuwts`J2ChO^75&GZW7av@m6Q+EnL9FrHVW!lT=j`nD%317U$F|WN~8F$K%#D3rhs=4!M0c0m?ShYvwe2HC^{pl{*4II+$}o(3;nL_d95sRtlY5%uxo~fRZhpJB2I`&ruZV-Gq-Z#Tn=Y_{c%uoNNW% zc$E$snFZ)m7SQaLr7wJ5o`%RM)z|{LA8tG&$kfb+Wob_fxSg>TjNqo!cX-aBAl1x2 zu~KuiIi_<~4N?gE!U&BT$-kpB~K8J^b1ni2o82WC@pwK9<$8Qt$dZ-mG1Gg#V zhiD3|Mr2aK7PMTJb(tMYdPc8H$`MwVUn}_3MJ(R`##o{LbMy+85*4y>Ym*GEa)i zkVg0mr7KbSn?cFb20h@b5hkLB&44{Z)zXB0bb(vYKTQPNY~%#%=jv$WdHp| zuow%MMj)YeNMj{AwRRLji~rd|t}VMmK6vX4@@?ZIB1tIFe}b>g11sDe z@dFg#yjkSlR)F*9-(tK3&A;ddK<1~Ww#E|LYi4^ z#cy91u%JCwZ^L?Im}P)s%b1G4T)1XV@B`_ol{zH6 zB+S=V38_aDE2MFxN!VJO$E=Xfyw4#8DM%$5r0oRh7gRWg!sxb)uN0))$0a?HZqCiZYtGEiBi_aT`}kcuVn2NxKYTY)8;N$~ zeK=98bV>GMI-1nD7r)rGqPCX?<&326Y0r^Gj{^IAVj*HyFXi%;FoQJqpP&_y#bu z$yyhmms8(l*G5^*Y}MzB3(tUDT9c`LS(w`V62QkigCCH^;hBO0z3cEX?b=vd#ykf1 z9qp&FR=AtiF$rRDA$GzmnC=VLuC4HSdCPLYa8JL$;aa=`&mt1A9L+AEl2~iWX(AB?VM;Pz1N07zgX#@b?t@s#o4S#GIOYxWM>YqmYsYN(8dHI@;rmPm-;LSE; zTS2gDJ5u||-}@7vV7_59%c|`Mx^azeG5A;Ja?sBT&}8smKv_x(Vp+j?+L$7~{d^*7 z;^QSaohr;Z?VziAXWMphkX zr}(k;Z9?D^^IZuy5haA{A42XO+4=|8>3Z(q6pNmlMkR7vpQEjV2b$$&w%1w3?7UGPl2~#YSg~Z{_5(j-mn&~`9Pbz5d?ER) z3MxuIt22^0+VR_%VYF<@NOEFR29`fS=4kDMz9~c3Pm6)gAg8|mX!T;g3aScYPM%hC z0zh#EbqjP-M{#3ZCKWAnuRiH@hF`bGy;tjUS~J5UrymkGq)%EB-f$MXf;#3ODm{gl zo|Qs!!QEjJRjVt&%nBP;6h+L}=nnt9N-uh4x~1q^#-gW9p`yP-sWG?l$Cj}Lf4L}> zwG_`r=z|T;p6-8^X63^rK3R{XL2BkiZNXPeGk0bV0Ns>oarUq;r-{x>JNRYlW<#pakzK83G!^m;Q z_RiEgZfBVG#RzIqagcmvI#>24YO~*tQ9E*G2JN>8m0+J*hR`-yek^$$eo1Q@kRpci zQPd0QH0|(Sd(;l$K%k-WdoUc(lQhUz*;MUt-dU&4z8)KbIhWaKM6?g`Mgd4!HZAR& z!kK=1tn4Of*D7&YaXYVT7l-p|bv2CT>tmq8b|9O^^4%Fn^nH*uw=PEQv}KY2i86MLP2dHw5luAok;!mZ6*wFI!-d0^9)TzC{rxCU4E)=nmhM=xFb+!}FRzSDDbw#ZNIyEa-L&HSmX_i+RV2j+q#y z)W%D6$7)&8?W-rzHL#+4SfHz~&{b#XCJA)ot^wV3upkB}?n4B!6z{70psTaQiVj2s z@1{z0t?F3OT~oZ9i|i)ejc3cf`Ut(o;g2S1oCA1Q|r)@kg$U}lXd+gysLG@K> z4FCJ5E#tfWq{S>MV-Iuv5&wM+Duc&=SECxXj1~CH``r2=TpaZH@2e12c+8eD-i*2d zsJR~h#TYM48|m}%S^uHbA6}HMkfn!s2Rlg7p|-rFcpjPVA_G2U{mh);>XFVNva zn1pNezAs$6ws)|#u0@~o8~I&D-o0<+H-!yJa@8uX=4kW&BfO`3 zi~Qcrzt`=;x$C}-yp|1;^R%B+q+N)47L1UwjJ#KPrIWc*MKF(cRw9^(8(<9q-nq|H z`^Lh-=fS+lrMmZWX`ID-X+lLx$0-+XTb4H-MaCfX58>LVgsX$OY-UudeO#DAU(6ur zb_qAwhG`*^gi_~aUJ?sGf#0Ie(=c_%t8N1Q_GIm zGdg)%cPJF&@d`9mkW`rS4J~mu`ME|O6gywxgTH;{r;P{#EgPYfM0bPy%or%;hn=sW z%a8eRg;!fh`QZaZZL!XS)nhC?IHAi=jyC;ulAk|FetKBsr@XmrCO@Z_a`|D!ONW3B z%|iE5y9P86z2f>$&&FdzyLh@u4|8XC+5 z6{RC*Gm<&lsLS^}!u%KG%Uypp@|o{ADCRr99I6y#J8(sg@YePxj))15uSiUE8Q(<# z-^|u>!oxu_t`9DYFVtl``!$PO&mF<-_V$bjS_|#?QlMSWei*2yS}<|#aCZVV4!let3#B&>HwZf zdw0685O991ir$uHef9SX)RtuLxW0;>uear`6iZu{rXqP;=4huzQCoIHkue?d$7t_f zHkZxx)$fZ6(^mn_2!cspg=pcDgwj`KS{ACW>L*Ek<)az8vN@O>Z9Qftxm(3GLva+! zHA5!`ej;R&dxFbe7K~F;I2+K-nt|CorWr~z@X%K?!|8Op^F*LgTvacw8DecA~m2frcAa&@3;G#6vuTE)B*Nxc5XGof0}HS|Mu zCe#5twVkOC+O_%eb=3!NU|2&wvmc*fM<>|_X8?uC7Jee4&`)8il=s15$l~ziqEIjC zteENeV^knDl6-+r#{fr`trjw{KKQ*a_%Q8sFF`_qU(=>g@EdX49(QACg?c;Xt&kyDuz__L=X>G0g}~aENQl#D4F(TM zRxb&m6Lu%*_pWl$L}1DgQWnjzM#9~q6n(HOP2n93O_3iDYNzup)M$-0QAZ-ldB*dZb+sNhw)xr}qjGa|c$pq7QgX=S9RSofj)+JfnEQ7m+AloP@T{ z@{+0q!9%}T*m1KaCrIpg`8!UK*fEM}Vw%i$x4;rABRi%M!Th$!G}%h+s-QLu)ItTd z(a2a!P)p{_O^=w!;B>@%7WmtQ2y*`Nbroh7-?O}RU@^!Xt#m)h+(}*v-H^PMDpcOK zdo3*a?rELJ;oEc`UoyxWlMr3r#tb5skh~4GQadiF5rbbis55xWATGVcV7OIA20uyE z{x|X#HJQuXwU;GJ(!Aqr>7<(`v6(ayxgti9TdP^v(XN)xj$PS0J5CPPyI-`q`wfDv zQ6ksFN-$m!B#sPQs&izTAV?gEGIOLd5o97~vr=m*sFBFk``&wj+U{TIyJizOvt50_Y_UG1YRbSEislw7eoZf0_in)E1SV1nj4pmR zpkTT9UH;iZ?S!C4%&fsH5|C>Q0@v6*6^OV$pLmp;;Mn5o04zrnznEIQNeK1u+Hq zQZI?0brt{kL#_B1#_0GxZXJKesfFS{-1mQqzx_Ba-S79jRFKB_A5{qRyPmf&KO{m2 z|L|!Y{OKu$g0FBd;QysRawvt@;8+j6e>Ri-lldbi<1q7_r5Yu$OG)}>#SOOd*voqV zENAYY2{1*ff7-1CiwJ_$KR0dF`{xuvkou>^T;77Z<^A)@Sqr>dw0;QA9`(<_PdGK| zp9A}Ic+@{3;+FooiU=0oKkwNe87ahLTzARbN#0|^A8A;qL8xu5MEa9DkJo>ui^|}P zLPf<3bu0YeGZvO)3TnjQK09;oVu!^ZOe2Ea z|Fu%vE2xpYeJNBb$=d^h8p)flJ!nD%3zxTh*QdLMJt*~()Taf7+k-DpSy<5(%UWb# z4icVJG{FDWNAJrPdoT%#`+sN;HYNcQ1_Z5Myqi7^vVspmtX6{0Ij#%FjLEuSSitXv z*1juvsZZ}^yxXBahwtjD3wO&q4|eS*Esd}uP_IX`d3rs1_0=1JjmLEF?-q17@9bB8 zv`||rsF8I4=Y74imlf3fNcUQzR(NNZ{J6*do;8%SWONq;OZfPM#=A+Au75=mY8di9 zZLPyagNdmt>Of+dU@$R}W)t%Z6t3#>Cr?|dpk>)za6~_mA}`a%enlGuu`Lw2&q?+{KX1tUBR5;f|?)sdzz@-QU2~-AC?mX zvKt+xKAcpzKHPlV!iq<+3|p#{6>sXScy2(o11PiTgci>7-XNInz`0g}y#zrg2(A)-FbM>i=ZD_aktXeUkUjcNwnP5fkZu5dR2TTy;@uEOS)K(m(G}AMSjGw`X#D*`AZU)R=|4 z+*PeLd%F^E$tYCo>}p*s|9P>{9{K~cuhNGHk62hWT@a*Bnk5KQCtWQFQYW>z+?hm> z>BBdy)G`G%(uXeyYG|>*o`RZxeHcvy?@=G#d;gz2mUH_?qU`^77+-Gw-oh7;q5p?1 z(-}RxtIlYPOEDap_pbdv-nHB5YKO>joZXv+F}u(Q_Y^-)>ceXki5f|LaEI~Q+3zfM zN-eDmPe+6BM0VEeWErn5=wuL{EGxlbf*=V`F@x|N?ZgTC5uSJ=$b{zwE45byH4>gq zg5@MUTLsJg3(rj`$2$nmy~|6{UYxrJ+DQL1q>%Ca)Nd_}y%D4{cAglwMgzHRbfLzg zxrBYEU<%aCzmbof!UYXN4dj$d`8(>DFTSzVWMxIYCc6wCz)6FCvG`kKI~YV{h?U?+ zf*^^=FoP2?&7fZ_{#Gp_$V8-?mD*xKjYOn|phhCn^p5)F81(HOL_}BS_+; zT40|{%l-6eaz4v7elQoBIq_gQi~0uQ1lEGIYt3v^{w8buE~dh=M;$4!ZAmZM{jFL7 zu4$9)_|IAFK*3o6k2!2mdt0yH4+q>5ASL^AtTWU#GWL(Zga-viu9I^kQ{-XFZBuMb_aNK1hd7 zucxASi3}_Jb}PMBI=z`Xy?q@OK8%=kdSw*7`JCQAd6xRN)#;TzqVT<$LLHIei#F2x z0-BUb1{1gSR$?7>VkxgFVvTiT5DXpMa7CI?Ih^?;spIG~in!+$qKR)+LPiHfo#Vo5&F=bKD2M zwQJ&sZ?m5-ly9+bf^YKQUF7Ziad+mQkhh=P8(9Z=s|0!b_y-|xD+XKn)(TTE;9EhC z-SQFrEF2=OnR^RH|hGyh6){+(+f`FCi5m4BNNvW46|zTeEh z0iP)Ti5!74$9>?Rqk$j(r8h2=e+?$yJO92+y&L~Zfq%rrD9*&MJ7tdhz{Fei{V?%)Xuv{*@bU!C#Jk8}M#|mzr_0~W)@Ig~ zhV1?rUY@5(L4(#6Ek>O#EQIVxq`lmpSeO6JM|E zhlxATvkPJ3u-7>g@8X{Xj<^f|`1qk>oRMq7pKF{a?Cr5WR+jBWv<)n)vs0ksQZcgrmu9fdj`q9M#5e zN3g3YmbRZlutA;fFbYVB#2bxe`>d5!isqzd5vh#5;=%WHzxD@ow}54nc$=4~VmaEfXgQ}q zi)n2cQ}CCsSO1k({JLVpv7;ch`qpgxu8l$0pn!|MZT#=!0d$CFY`FQ{&-G>G4g-GF zqhYJy_b>8-gAq}o?GY(q4$mK~s2uG@58qf~%Q%AK_)!z zkbo8rvg&ZqLUt_B`5}&uj!xo?P(IIswty%U(BUo`@F31p`xT+5`LrN5L(%Ds=+;-9 z>}KRSpZN+y^=5R-d#?6gL!71Ju3c(Nqk!1@1rFCj#*&*QQ_7^>ERym-+Rb3wv>X(p z@K5c{UrfS_4%eG3`?cWlW#|(62f!R##vIDN|4q7yovsw$iuud{t!`~DN9;0s=*-CY z%+Vn@fu%SS^NYoSV{8T&f1;e|vzTTIayDrP3**cz>P&M41?88fAXAiy(okotr&4Uc!_ zCAju)tAh8apn=Qt3ldxv^%U13{LEvAR9U(YdOY+C9i}vl3ZoCB$x%b8Nswy%r9wd} zcQ>|uy4paA?{Yrb!tUI4t(en2x`?yM{*eRw+p1xw*4EK@Puuq-Sk3peC#t>sfJ%XqIj36!(R zv6QNOK0EF8h|wWVTQkgU$GcDsQZgG}#QW~n;c-p!QYumf(%uLQ8G(kblz=mOv{^ja z9@pgSl*+hSAPzK;UOdiKAtC`ZLbPElM~9>Y%o@bGrXK^3v|Fo)nR!eQVEua7c>`}o zWCLa>iUO~rO@Y^>y9Hj`X(5jjx6oZO!!k~!Rv>sOkO#JSrBX%X=5xil~0(!9eY&HIEj z<2=<5sR1e}Y2HWD%=`e?F)7V&+*O*75axiLOqwBvB+XGqX@134Egf8y@_aSYk37#@ z<42yOA2fXnmmOrD)CU6x;AtSwZQ z>+Q@xtd$?Ca?Ai+q&3Nf7MOpXdW9S}Bu7=}rs!xQNE zGk7L+{MpToN^F$bo*P5e&(#WWDLD>3k6w(qOLxuV4H^cdeGv{LTMn)vb1ohULZf5w zWsk?;%Nd{9mrPeIFrF=lJhZ?v7^j4LAB=xZwdkB?tVQ+^UJF}>J{bR`iK@wqYeY>j7(XOHe6&*3 z#55THR-{f5srq32KbLRAy+|<(#*Y$?wdn!}8;oCG0}=8WjJE<3V&0Wng$>3}6RET} zj8$sTM^;H6j2F?X^dSU(z z_+gKT|3H-muLWBz_cx5`z$;i56%=B}<0#>z*;9GI!Pyjp2^w}h`O|GfG^qAag8-7` zxkH~2%<7ox@WkV7;^A*AL>+sR`cs=n!?CbHXu$L2$YLwIiv@#7`L)HnJn|zH zU!FGieI|nDR3(Be6tsv}fi8+k?ZvCmfmb0+OTJ*N!k|}WQzb)RA#TE}k=CAb<-|(8 zsk(@2JT9wI!~2Y`0bdfS4~SG-MkOS29FH1s^yD}qwKM09IL@hFa0Y5c;dof!=wQIn zN0hW^xe^&te?k-Y6RDF#sx4y%5;=|t;IL&ZfuwMr4CGj%wZ1gHjP)myfZ^2ssrVm5!_hdhe|8LwG1;{nc5Nrd0{oO8yViG_JZ-z2u{J~6 zajs^-?UWs0h`@VznX1hxxQU`R!$j&Pk!s7>#e7Kb=lBoyUb%uk`nLKi!akXdsM5C! z8XEO&wa5JG+bGVPGSsb~8gJ~@3;P?y9kSjA&7aafR3deV#^TXj%qA#psH~R!2;PZRRn@) zSq+o8hl|vQL@F0|>g7}Om9kCbI3fs#LuyE-Y|~Z5h*Y^YL{0Nw9HC2PI$j*zwbBDJMRwPiF%A`Cs*dv4&3 z>yIaDKu!U7J4H;QkO!V7i*2MJH~~j0nZ>_ob=Zq`xSCljNFd)Nfm9WKiuu2}+HBm5 zK8ZP(pP_fzGHCS4{j)hyq&smE7$TzVQlWtlg@X)y7>ca06L%UNV)4*sA;Lp+Qcx;e z3%Ok+fO~)q;@#8Pkeq2~Pb@JxR|{B{kN6n{?2{dy_gFExTI;34rAq05u~$2T7djs~ z{CJ_I<|r@JoWtye8lCvAy%HW+4f5EH#s+58!J$=v?aZe064`I^YKFr$DWaWT3RY;WD;t$|uB0 z$SI_Wx`~r@KeFbl8PZ&B%Pb~SdN!G;WQv5xDaIK9hMHre6fsvEx+7)EC@)b$Uf>m3 z=gSzAFMmkb$C#M>93r>|CjVLuCQb#YOHqJ25CQ7f;}iqN)#nV@Lpi6@XwmIRPrKG& zRETpMz61mm2k&i5caP{d>H1}SP3bY|`k(ZFCmtI1;Sg252)Z6)5;gF9GyO1!awz67 zzN8FA{~f}0$W1z}z}1o>-~3?mniVY)uy+w)`;mZ_(Ygd&p2H;|b(yMd6$h{F_f=(c zL)lp-_*CDf4zmOf`Wp=5=0aT%FGU< zpzewnTyQVqdPCP;&=ogaBvC*SFW?15)?FI`MN}?I$p4-?r@LwTWfKj4fFC6v+T71B+#H9SRFX_jg_SXHh`SAnNt*V$g5db@wO_ zhYUTsgzM#~MQcl-HK+GTx$A}utQ&AB`BtnSW?=n*_dc#Q^}l&{!ug@uQc`O4{4iQA z_FSVodUB)rp`7Q3r8uc)U%fSUewcYp-1(t7L)*W8OwSL01PU4T`;R0$KbZB)*z4AB zN|y|?Kb^INsx~>_ocgw$PCU12XP|1%dv<8|@eqw{~MOS@pv$nI&I8&aE`J# zSN`ix;_+a^$L4r&c6U-}k#d&QRCjT^Y-RWEc(CCSKzj{z#upe?z(+Q|z~DI^Jkm?4 z)BdPq!tsE{yEy*I?8gWp+WsQZmAnJs9A*6)Jze=H@{ycf=feK(y@lOi?VofW9oPPP zFtpwJQEh*FfkO5-{Gnv+&wKp-+v3LUHAl^yZhQSDi`(nukIeRZ3kR3bURmzMG(SD2 zy-t2OPJ3nP@w?UaO}E##YNpy?cT;l29lsN_*V~VJwAVSrb1V7giF$|OmwJaG)CP^U z^XAybT7XBLlru?B@Y7HphrCyJDY=PdqeL_c_ig zPYI|`tYq#fLOeQr7+bcPpCL=LLU>qKarF;@TUwNa+t6pftlnww?`^& zaPjvdYvL2F@pJv*7nO>BkUIK7*2M1&TH|j%&Yynp-M6D)@_$HSvko_?xjq>;u1*j1M*j0m0uMGd>Wl@hADi?>da-4{_h}QVI{^T!`@i|A2 z&z)n&XQDO!=2Tz$d2lkzUxifUpNOoff1)-1B!BoLdP@5ub=ntM6aQS$8b2c%zp3%z zK^dQ`^!PjxSreaVjlaC5Fa7wo&oY1b51udjN9yPw*(muzYx(z4*iYMMQ~K!|X8ZtB z!LR>yG(OQ9e}O;zalIJdLMr%ukTvBeTI1*X!(VY1<1a!g_z`4He4;h}W*mC;p`RyE zdFsDGq=G*)Mn6Pr{7L@sS6n0VBX#6QHcEcb8b8Ay{ug)=3dvtbFGS(>%PM3|e4;fz zeUaIRetgfr_~3{i{0IB7{8dQlXd8k96Onb~Z-KxA(Nix_Q3u+bDe1N*{nS~=sP#MS zzd8Fq7TzNl8+?dlF1eRt8yoCd+m6sq++EM(I;gAoMrMx}_QTA+577iFJyh7$%zk7D zvwJJ{RJ_bBvkp!xmCRw*Xt2%K|1sr@a*(idatO%j8m?YlYvi?%I+*cQ$TU+HLcKg7g(BV+%>4?Tf2x z@SFt{x*PXKRC(lD+-3u>#nYZfiiS%2gIb6aa%uQjpb|axEI>}_QPS=8v54O^qu|i7 zQ`=kBs{!{Vw~vC8I&QGHE^_Ore$ds^^=lvD`hBYw(Qf@d2kBkE4{1s5*6(c$Imy)T zDL5MFOKJ0wmWJP^D$Yihl~)>Whbj_{Q?m%1lj5q>SoXGaK3(eDn(ONZ!yNVP>CW(* zkP7@7WKDRYsjD)4M~2749COh^WbaC!@$kFf#`tMS1;076CO**`pT2om((UbJ@jLyD z@$1iX@%JNZ;uEd$@$pYT_>YDdexw$^mBU|^lf?{_-)T-{Jl9Y{!U~~e4;fzp3L)ufAJv3?~GLB zZ;z~rPxRETY@btRLiQ$1ve%Uic@k3UPVJF8cr;=VjUf;tMlME-q{fRU9%y>J=uwH= zl9Z9m3}i7z(7ck0Y-xCNX}BD*Z639-X=zbx`v+RWbT0|xGk}O~cT^#WEl&KoJ@sb_ zZp-}Q^yjwXn(UpcaOoC1k#(_wOEk3yOI2tfY5hEk*O(Fh zOr(N;3$i9Y(Hg(NAO4Z68Gk!c!QXg@&HSv3Z*7&o1 z;#UejQU@Q|D16WwUp=_cEou3WoG1E0>gWeq6MqY6jlWuj29m~qdH~}`kP7}BWKDdc zHU2gJ@Q-v6`H?#EBWvPs0j=?y`NO~X62|Y0RPfs)YvL2F@t3O5K=S%27X2V~^nwoUz??=|eCtBlQ;}8F1 zOnNl_(EgAkKe8tN3p6jf^H(!}_@jQo_g`DoeyjW_?k(u?sIBNhDnkd4K^2Rx0xUHQCQlEI(A z>w(NtwH{FOdtX@(nDSpjYXVpPnKAfS|HhNQ(-@Y&ezYt9eq>|i{|Y>fPfx&?bkp)D zz#oOUxSGF^I_;}M=h6B^&cHh5Lm1ZEq&OzQ%-4Gt^6n*GBj@as-v`JY58@;`=b zto#pyr|}>1fq$pqBP9oMDN++W1sz~9cvE}Avz=0i*vZ(jQT`|7Z?5&Dmi(^%-8Fj8 z5c%BccfmGNoW{XA-Hku=7!N5Be>fg#N!VSVw*=W}eSVqpw<{qM*5_|4f4d##CC~La z0tROMVfQIq*^Nkffs(lzS*kCEAh149BbwIdd`M*_59oUR9PMw*VHL-p-!q-zHz5`H zHOQLqMALZ1@K-i5U&P?Iy@By*zg+NlB5UFkt?>^xG2X`F^ZGnCXpQTU)WelLIcow_o9{aG&leq>F2qBZ^pP0SZD`q{(l^UO`|`aE+@^!hxF zXpKMJAO4XcEdO?-(!N`eHRUH-<8yo`{(KiB|3(-GjknKe`*}RZeu&oi9N$SAztdFF z{}fmL{m7c~6Rq(%zLPZmkwVcAQb#|?n)q8lYkZFHB#pmE>~j-Rr~e{r;;#X%@j1Se zG=AGNSpL1IyZAeiHSvko_#EF!8vk}UbJV`0k&667ku~v&*7zLXNgDrRjE#if8L8m6 zN7lqAn&LY&zEONfj;1lSVYfcV4IXjy^1?;wf&tUX8!* zTvLlP?h^A>KN#^~bsp3?zj)p)bnEbks8CyE<@{nZWU&q6b$;={WXR&4UtEaS5Sbz+ zIKTKV7MY~Czao__mOmrwY*Dm9J&D%m7k|#!j{lMHe8!2FF!&)vS_FJAvL-muy3x1M z8yS<||66e#<1a!g_z`4He4;gel|TG1WYVcaD)_6AHSvko_*wq&xBimlUx`%kpF!5d zCtBmH_XGOS4-Q{Y<1Rw#=m%L7KLT3gm(v>xlgF=>PQ47N;4fC4+BsYc|17FgAHoYa zeBjTMMOGzJ!5^&_SsI^cE&n2a_*>yIkbYJob@Z>C3XT6vlv9!C5C33$#@~ii@HZiA z>Yr#W|2BLH(}#Wz-Yob?9eiY?@Ih<*Du4L%`ZIndQb+&Dn)stZYy2#K_*>5x{Udes zkF1IR3}}tN@_1kRnO4F09WXpLX)55M*z#$Se1@E0R%;uEd$4`D6nqkXqx z^{VU>siPlcP5fs-Yy3t2@JHk`ejZZ6KNndOpJ^Sfu zNFDtkYvOkXt?{e;;ZG}I{Bop%Uy7`WPqfC*@`wMRj1N_Me3%$BJ`k<(=~FGn_}SFM zIYr|{KS&+@AZyCs8MMYP_lMuAgz;@0G8X*p$eQ>>Yy3n0&c{C??HknXJ2R$ziPrdw z{NZ;!o8=E675VFPqU9%A_aQ<&O zpZ|LZ2$&9D$FxuE@xq?N>@BUCJyh5?GJ7{9pwhjCeL1t&UB&D!!tTTD(Z?}6P1t8K zdwmhJ4?M?`q%-?Dgro@jQ(+&%CNr(K(wJQ*?9Z6JR7yWD>^GSGWjikYu(1Ea?BhEz zyIR(^1L@3uQP`W9UD}q}i-r9+X0Oj= z_T9q%9kcK4%Iuqk9b|S@PiB`3dor_EU(D3jwwKu$b8|3;P{rR}1_1!hVI>qr}+e z3;U1E{_8mmGF903F#D@>nLS3>)0llwI(Lz!c;Kzr#dNrQa3yUhF@h@}pZZdzG-?XZBfQv40ZwKbZZq=3M$- zVJ~C$$|20I681u7pN6#`-SQe?-^T0@F(ncEGGSlG?Bk_N^%QmqvqxbJr_!B-{c~o& z7hra(uuoz3B_o;r)t|ZYt(g6wXmG2r_hGY?ei2hS~RtfcFXe zDQ0iT;L=<{W4q_(%^@}{uVpfkfeq5;TSXulCQeWwB- zmx!_5A#8dhG1yyWmKrDQS@s1GXLiSi5lX;b!XC=(`$n+brwh9`v%>zJK$GJ`A< zww&`{D3zZrY&qwDl^Dbg!mehJTV*^Mrr7G7e~rv%`OKno{@ah?Tb;`+I_Lk3lbCf9 zv*?`vMQ1Rp6|?A^{{zyIzk7n}KUJUee`mbA=b_)6!0%@YIQt!gP;c4q=&n?t-q&y% zvT*yn_B&3%PkO&&b|+pICh@+84)8I^rT-pP7nkx&WKEZnXuaQYCSxbH-|-;kLISTs zD&P~5HNlD2{$$Chh+c#<#V7ZjZ4~qBVY{Km2K(8NVE<$X|-ADL>H~Kj06)RSS_H z)2iTaN7lqATH`PCx1U&hKI1P#D)@_$HSvko_*OK2Q|s{}__fM@kP3chWKDdcHNG9a zpV$bi#oA^X){7QfLTfb%fuS6>N z&me2!6Rq(B{_t1G_`gVx|B;ySpJdH}{VQhQy_eZzg?%-%pTp=x*n@>_F}u7Ev-5;~KC>5o#~`N( z`y^(clgp)B3%dogzm;2l`&+L39_$68@}01tqFa6}?Dv@c9=867{hF{}W%ea)nEkA< zpI~_xJ@QYUPBb{M4>N_CzW z_Me%3+xINV!@|Cw*}wk{^k# ztFW_~og#8)2>V!O7h_FG*oPnB%J0W6A*!?U6lU)f_D9UVQRLnr>~+ju_YK$bMPWa~ z?3ox3345`yf6MH$n6b|h z_8H9n%Mk`SUf6A!Jt4rQkKE6d|DJdL`oqs70skfJPni8|9+!So*tN`_CfF;4y`0%8 z!d@b5+25RwH6~$)gzfBa$}n?_uw{R9pzITl6t?VdwiNsBCv4f@oGIHY=L%c)H;<8C ze1foLe=}W5H{8dSm;KFcGH}?!mi^6d5PKrI-xjv)Z{8+$^0KgHf3t;bJp5kRvcKu< zN6Z(t>~H?EfU&0vTlO~xiB*jew(M`NK$MUqDH67`zj+L^bA>JYn^$7ar_vpTE&H22 zq)Rmyw(M_)C7Ql_A?rl;H$Rsl>|J5Y{^oWBatV8tuw{SqEJQkq{U>3|{^swFWA?qm zmi^73Xs}AyvcK8vGA@0Muw{Sq4e9fj30w9zzm+c4Q`pY_=IIR5N!YT#nJUJXDs0)` z9E0UC$^F#=uDtATj)PY~?5)C<{mn9Iv>IW{{^ntsMxPY6>~Hp!J;?inE&H2oWKNqQ zY}wzuTt@rrg)RG=+hyJ<6}Iee{#Lrwg~FEo&3k2s_*7xb{$`!DPC(eQzj<0J*YcZt zx$?5V`LYaQ9|~LcH-G;HTh&@&%l_v4L(G0!*s{Ml^+Lw}jj&~Z^Hmvo?+~`^Z_~BWk zPmv_sg)RG=7m7iw7q;wgrX#vVrJobF>~B_zle0+JvcI`h>}0mEWq%x}(%^uQ=Ul6vlzuAp%`G~M(e{-E!>|9~X{^nl9??{6ah3)Kb%E&fc*s{NQ zugvq83S0I!v&1xWgf07`KmO-W5SmG&8`PovGas2`pBY%l_v6wk%*@VaxvJ z1{r3$30w9zzY|G12;14;#C{g(yFSd7m;KH6r8@r>w(M^<$XxuEu?XTNPXFZ>Gqap@Lbozq$A;zPOZGw7>ZSmdteF zFPKI9o3;PqQeBxv`;}f3G568T}Y&RMLYu~huNcjP{wAIKu53JGqy@=ND_u7V|3G|Yq~BR{exesj>H+p{BNf7no@4j#Qf zjOgh1hXE|{`v%8Z?pT!Y`O-1%=+^4_(u>Yy4$CRy2N7=TV-( zT9xpFNCkf;vL-&!8sA2!*m!=aDf}-GN+J9@q>lcPHSt%0*7!kx_$#D+7wPtm#I!Hb z8b8M${u9~UzCompevmcgp9xyy*CCqhLq7)*QzHFrLn`>2kTvm%*7%kF@TZ;5_~l3i zzZ6*$pJ#`(5?fB0WuF{SJismQ+ySyO(Z zwfr_>#y;e)ZO{5yhE(tuBWvOlt?`5Y@VCCp@~=cH_|G6~;uEd$bNu0V-NE<)q=H}n zX*5338ov&4Zy)+8!o{Tj9HfHZIR>9-jb9m!-_&`F6>V7mi;xO_1X)u*L~HzjKm2(z z{#5GmXLQW?L$tB7Ck&65gWKH>r*78^S!=Lsx>!%#4;Flt6;uEd$1OD(&L?ny!f9Rhs{$6BFe4;h} zG6aKs=;w*9te+rKk$)z#CO**`-|~llQ0#M?w$Dv5_DQtHw^hu^{k~sQ{?7;m&q+Ud zNJaj0ku~KfTH^vM=OK0Qk&VI!t?_gG;eR3iVV(95SH<{;L~HyyJTYUm zZ&Ug?h}{p;&o-nY|0ZNj`H9x}mHzO%ivJKmD){v=@)ND`1OD*G$@o4_uY#(F& zrOu9`zh=HBhErl)d@U)M)^xi2^@$j?Ijj8ne!j^dWrC7ZZ`yaxVcz96u2$l(3;^9Li z@V!vj5)c11;+6z*o3N`nsQynxCWw8VVyk#~zHE+^F^l5iwEm$|eV9e@@P}o0?;K`P zJiOJ}e2WvAMe*=Iz%il=TQW<>!~gknHwI-s@8ib9_hS!Nea{1_5f5Ldwst+g=Yd~z zJbVjkmsC9bebu+qHX@aP-D+f=0Go=3gKiYC!0EuuCihRcCNl&piYkcgZot{ci%rc7i6RT1NHvV+o;RC?;kx3m(^2WG4CI3 zgT6vz$)1glzA`^U)~O%8f0Stb{?R4M7sktO=b}a2@71{P>y3Gt-UOLSX};v<$n2}8 zQvG^UqV-VX^*(!yhw<>cr|?jihE(vIBWsFJw8r;(pM3)SBdr*JJ5s^lf~<*8w8r;( zpM3)S3GcD`OOZPILDt0Y3tHoQz0W=Y{wNG?)VzI=3Vsh{O?;v?{%Yk4N56kD0saJ8 z3YH>upD9;0>GtiOCjASk zqaS2V{N|uF{%n8vN3i)%@^42f_*;-Q@rl;>r}@Kw^fT7~Or(N;3$i9Y(Hh_DefEj; zj{}fO|41GEBWvOh1+DSD-e;cxzxx`oPo$3iku~v~gVy+7@3T*U|LAL?AEb_ckTvmd z0j=@9-e;cx|8|@4M z#rT_$3jP{oO?;v?{%n8v8{tlp{XBzI@E=Fk#3x$g)0q^!!#4JP=keypr&}_91gYT9 zL6-2Hcfr#Xe+PJapU>-k_RjZ$V&?a@GC%IcK^wu}iEJ$XC*W!P(aNKbeqVkZ{M$E* z{U8Aom3xdqHufG@fv4;65Z}Xj zK0NAu{Lqn!Z#U;QcpWLdPtWXTOtz zs_-Y*s-UXtPreAUkw2-Ce`jau|QU0E-Dx3BwQdVZ#LS(7F@;>`a zqV;){a%Ip-pGWyX*+W`qqypa_SreXUvIRbm;`2Pje4JE5e@vT*RPe7w*2E`TA zar?tUjA6<2hmY97PkY66@Y9};cJMQa*8L$*4UWn7ha)_`r)_t~_p~iCzB}EG=%3u) zop}CEt4BOo`on$|D%RbZXg}@!67MdgJ&csv`#!a`zo#Htyd$kve$P-bDLs?`dZ=-QMkA;`aV_WmJ2A4$`~5 zKg2J(y_1bM-3ZTy2J{lw0ZJ@5Wv)4(i;BU{2u4?a_;wlR-6=XI@arx`=}?wU%eHnF&|$K z(%XNziu$#?KKUlu^$DLo@i=s zUa$LH?`}kACHLzYw?C&n9^IcaiPrdD>s_>0yu zk0kONNXflhgVezzf0*cK_YPo*w-d)@HEmDV{vEf4JryD~?CAoK-u843e$n=ntUvq+ zT9aybyKeBwF%3?1BZVc{e_hEj@U(}JlEM}m0dP_n(a{QPa{u+h6XPk&^@p$hUi5|3 z)ECG&`ob^%_0{HItgk)T-vU+Vkx705zIG+17NEWQ!y^?mxw@RR;NeJ^#yzRB;?NAIVpZ=2HonNvOb4yUu9 z#@}ZBOdU;+KYt*6>5k8c1;27g=`M3IQu(&&eaM>lMALY}__O`tmwd(e=OPvS(~&jt ziPre1`NMzoNyeXvRPb*>*2E`TtQ?b{fCG*ZDIimZuGw8p>2AO6M-jQ%kIpLi`;j&AiPrc_)zSB)_0v|?4|~;qnzGNG#(o;vC(#bC4hpdTDw8o$95B~^7Wq`jO zsmQ+tSreaVjenXy{5@M3e-l!{UxTcPPqfCTchDqSKgWy@qon`#(fzkaO#dZX<6q+s zf6qrEKT=12WTWHOZm7@-1tb0ekjbX><6jf--oP; zPqfBw>by@3{_TQ4TH_Cm!6#bdH+9}82LH(8EdO?-BL5a-P5Ft|_)VSniNT-WAo@q@ z=pR`V|60%*zp3*+G5Eg6=cdm4#Na=TU_Z5QMC}Kt@okRm2RQr5G{)UQdjjsa#Ygj* z9QXV2@Mqoq>KOd_uZn(gQGPv<+?N7-5wD z^?q`3HFRX|S0CETb@%|O+~ZATWAE_>c)AYL`5vD8;W79*(#FT?Ha@zlG5!zWY5%Ze z48C(-Af|nz)wAsNSVM~J`(=4)>i#QQV!CUj*z-P3 z=*O0T+v`Z>9j?oV#kH1ZP^p}v5 z1O2=>=ni-aCdg;VN$*KP!$LgU5OdxK@@MGwjdR}T)?;W%9{;@0&^>4=#Cv)oHR2at zKzhe7PQoubeo>HQ{BVQB51-cY!=*9tL!x#3&{m2}_IyLzr=?Zvz*;gOxlk}Wvf zt3;Enar`jE@P@zIY%KH{?`;1O30G}LO0kmnj93-LN{F7?)w*lTl%6HsUQa(YC4Gg$ zOB|2e+A?0aM8|iB(kx5ugVbyvka60F=36(u+YaNU=YA_DtKCk(83B!MKe7VbA{7NT zL)KIv(Yk$B`Z|yGG|wk#5jCH@O)8ut^NG_wMCPbT?>S>OwsUD&={zE?TZNW$C;3FG_4_f2axg*zZbpBKKqwgCT_X~~cQpPuZ ztfRVVPuzKW;H3a;$^P+LzNJOCY-5G%>?iMOjv?TX6`G;&@ibK#-Q;R@lf?L!MBy)| zDm~H&|L~=FPi;bcFMa(pD_UQ8WlV~FiGVA8WkO%u?^5~_b*;~D8>^y0R?~YISZ*Pn3X^@E@8JuH3Q(-9V3@GfCnQXw3w9{2tD`17HGVqs$ zzwF&Ds77MQsFx$tc3NA0WqF{Idsn&A4Qb~AM|DFvcp_P62bFJc6{-SMh23%K{)Pp+TNH;6TA>%aEF&nS zi;$M~{%*=~#i0v}tJgz1NU;0VlE_^3Q*roxD^k)W#~%6F_J)%1^epIXtM|4j?tP#*z36Kz{E2nf-YMPTKUm@3)?E!#GOh4icE;;pHoQ!#AmYZ6_z`z6 zZm2EkT|afJb=QF@y-K?MyLk1H7MDdj{0qfUZoM`8hZJZu4XkZ|^ zfy;_(3m4H)SsWUfjW$L{_iPQMG z{lecDhi+VHg|Es$<7X9zZ(RAo^C3O zn=02{{s}eJ6pYUJCy$f`)Tz%<>*W+jN;9avU}SYu&alG0sJU`!fDab{a5B2?K4ddW zLX**2`>3^U?*i}sXi2w*;_BK~#jC%@bH_(Z(u?Y?@Ta9{q7&76*9x~OXn5C(j0{)} zuNC+Hdg@oyd}x@1#jB4}!+g&TQybGTccNix-G=ExEgZU18YcWGTWR&WGNXak+VlU= zxP74d@pmfKBX{-jG@KL!;NOJ`puz&Ez98EQuQukNNb2F~7p2Iors}_XJvJGf5lqz z-)x>d`WO>y_)B_)T_pA1JETTvX4p;@SQoS>RUJda_Lx9qV4i(H^)DFPEL4()n$|SP z-1I_y1C4=et3nZa<9wpT`89rhl+6dv>X~_ zs!Bs=72~FST_>;WM(FDXAR3uE4|lUdMR}NFVB0WctP5LN)J<5p@F3J{K)}8l;p2JBj0d+tPa?a$~+*5^iaqUdW|uZX@jhp!D87d_bMqWAt5bx~@nx=$fm z;8wK2TAJi5)m%7cw9|7~38+uIX-V1Z@Msm0t$u^6|5>GMl??OBEOeV}1jkdxhOP_* zugrngFl611TjShMy3!hX9g%@m_Pga=?@6xC9>>nG*e>bp3j7TU*hhLFfrDF`7u&vQ zjjIFpDFB55Va7oFj#0CM(YBQ3`98LNmB)OxNRGywZb&{okRO~5(I-RnDXPI&9;f=A z6}lr38C+#|6wy_4D-ZVzY}zUh^bVMy@}RFCBR;ehy1WZUHgejd=cIDO>G*-?q>LG? zN}7lafyP6i@vwsN`A{#t+6U?#p9@|Yc$MHy5?(oYRaWT9Stx=e$jJgE7y-UbqiJp_ z%}w}i2`B7aJh_~xNa|)3u|l&~@^3Xr?9q!cl|@DbFdYT#NxwMK03sJeu6-R707A`4{L@2R)UWeO;Fq65ns1=&fCBHcQyCqaA{10_+HSu98EyujXy%$3o3oy5f z607(3Uh}B>$(cthw{C}x0NisPjnMt{R9X^uDup&Nc-XsBOK2+XSra}~5iFB**@YIiJ=R_dYuHE1GM26?gmET3z45igehEyQ8|%^J!`L z&O^n$#4HZoMTwo=7S_+6QMobk!ZT{W z*qM3R^kTX$trveU*8jQ{8VF-6lzuxf5F7|w8wgt~6k8jZ8ypBz8wgV?6jK{m9vlcu z3(tZWNZ8WCWNAPSwIMUAW=jh%;Ua8lVX?HaT!b4sTth|h4vu|z69^O#wFD)+TfFAu zv9$$R%~CMYp=(jkYBZT*m0D#vGwNu<2sOh+0qPC#nb5Z@OCo(fZcP*8B|Sf)DK0WF z%kF)7?7;NoqwcIov)i<68W$={LYL4~%g@69~g^iqB2+% zNdH^EF5`nm$6{#9GTNA??qbZ2YHlllXi!IKPR!UxljoR#eLDZF7I0P01cxCoW_%a@ zL|XuKBlBCo$%bMu=wYlTkCyf{>}A=f4~w0t7Cgd=!HSC%bE{HJIWD40 zSTTEH)9&=9#>$bnNXE*swS`a%HF(_VDdGGqGtfhmR28hql~BwmHDVv5gl|E@&rrhu z(v(BFO7Hx|6`tZA?4%&0JcvV9cp$)L1ngG=GQ-3XQQ2Q(?*aXV)Tq31`)hw>tIBx&`ajLrOdKf&W2%LIAAFD0E zi+wSD)E0D9J@wO8Bt}7Y|DH7^p@N)#!GZw(TH~)R{*J?62L9UPuLJ&0z+cwbexZVs z(pU6VmTchyvgG1m!Li`AChG>TweZ@2*H(CKg_j22al$)Jcma;L@Jwoon_NB|3SkJ!l8)sHkrr_Aa**7`%aBoZ1pAxNSlWotB zZ&aXY&tCxaKhvHWZ~m`t&s|m%?YZZE&-T3L2B$s$(Y(p_bo~znfF4~(?tI4(FmDTi2)}M}~UXw!BRS1V^V1;t8Ljxy~8~o(L#%{1X;KcDaEb=$X ztnhx0T8w33Fj*aGfEz&}HvBss5yjNq%*XT+{9!aNb*x&WfJJq%RoNI zBqW}W#!X$qWF^Q+AQv)OWrbdvMV1uCW3_tu0@oH^%s}{;g&Fo(6oqR$D7$e1IFW_f zc7G`l6Zj#7TolN)yGVij#t8W+kZ-q;0%eU0z&R@{vv(e48L*5uqf>MXG)G~Dy;=$& zL=jtH5(-SRmvDi5RBchl@E&Dl^mqEnuHtga&9$iO8T(&7w?K0%#yKNSDT-2af!SAO zhd^Nni(+4$NvNj)!HLu^OhOq2c_1^HMAZu{kjF5IiWX4B>R>&g4negFDnZ&zq7nsI zA+5GT3rS4&De?1XW7(2x@H^b7f=R1sCRM%2D18KpD+MfV6^UxcuLCm_L+*2h~y#OW{4jO(9&@JrFY_RrTJA%(fo)-3x>kx%>Q zXF$GW{PRfam1y0>@nBlMHc}vZ*#v|X!(W!DI9rQKma=-a<6d9^jE788g3W>j*;p{< z7uOE3h*1z6kc+=E@G8NZB)oF)s)|E*(<;5V_HG)<`IozAsf+Gjf&{xT0ejmQG?`q1 z$z)Kjy@3hDc?Ol+uPWj2Ec-cM3!KjG8EWTFAAnmLDw04HjU|EKtIei3SVGgRo2lwz$k}5;-`V?i!rE1pg{)obA*g${?GtM~Zwr zbS>LAjffQM!>EY4SlL4)b>k1J<()ZSZ zC44Ij;Ra|)&H&s{Xe=!eaHzAl{ef;zk!dWzsUTHB#4&~@_HSvvi@&~=`Q|L?;$)np z)(kXW7Dpv}LBrW&Lo;Z0x%n_Dm!i@$NZbl0F}uv5*<}cmu=^RXA=qKcSw|YuR}9GI zWm{n`FWU;w$HWnL*l!CEnpxrw`@0Wu0X6I!O+$nJj0$@r|E!v(jK=Di1-BZnFLFkV z)Ws-{kyX2Lp&^0bkesohA-S+*8kuKsiF}YWGEZO<;}1q=8heLS__1Hw9SU8~_WO|v zvbQyYHmS!c^kaCBD9gUNAl7=fKhD;xHi#^2{L-LX4pSiAjtUmFbple3X0}0>D1>;^ z3kQ|rR4794CB(H?9$%@yeQ=%hH|}n(z+?iW0ZO~15@UKb->_8`F6s_}jnF!xFww1& z?0RYf3jt^P%LDcQq4iWv&Hw84)I+_S@RuLG+lRmWdu|Xjd?Mi~n8kqa$t()8I53rs zz>{ZSih@xc5ZL*DCKv^u*BJ6Spp=b(Qno$iJJov{1(Z-(nU9bgj6z-tArFupFg04o z2_zwS)WLD%^m-wZx_Tt{zZ&JrwZ%?5;(34!7IXq?)ac{vmqj}xYU=rRj6y++KY8kOY*D-=ks6Ojuxz+_8g8zJ;I^S58NnePFf<2;bb={m^I)5U z0T(0lkUXc_j=x|W2QoI~v3{Qgm6y;q0-YKe>nP!KEXVbr-!F6xG;$5r@7I{?_iM0z zzoraKy-A0X`*C25UEJGdz>L>{< z-HZfXVClO^AzZutr1;s}K;h~g%sldqV%p5yhr~WyP2L;ruVPQ{(Nkzo?+VP$*wee0 z2`m|~r#D9t%Ga}GPw!@CkrZH2Vvho=AbrJMN)|L-RZwMVI+-54>unUFU+HOkn#J)e zW#!j*rq;#|+zv`2smC$XW+v5|0t$gS@p?~_ z>o?^ukC6G>^_Q_Sp$|UwkdLx6aZ8*P;gcd+_9qt^{*7AZmORAz z;FBVuTh(#`r#4t0w<>+Ou6bj3l-J*$>qq#r6R=H5At5@avEeF~dT&UbCuob&8iHfT z+x67X#_@q{D|C}()eb0Q`@1PGKX?-y@|z}sS0%iP{NS^**xnx7OVztOsO;@oW!=yZ zGZ!&)374G0OtNPy^z3qGUd>Ep_MvBM)Ngm!aS^h1hB3d z_8+9As!5}giW|C{68knOS>uVRxS_i#vCE|7W)O|&7aSeE8Bp&H{k-FKQT#W!!~lb(P=WJc@wr#Aht0i zFE|9IF$AVjAf_>-BB(-1n1z%{!2W@U_|gKBGobF-wDtKBr z$VjN~ZlQzyvj4&^f zexd0Wk`i1}f!3_#HlJPw-lVai=~Y(b`B|zZaP9%OShg!_kUzF34{C^$$}z-g514~I zW}tu1#I)`eBS|=_SIVe9AxNWof7l-mPayb9y&k*^z{?X}p71UPFJE~1!s`bf+D~0; z39kh4EyNrKmf4SFQjnp46*(Z4!NMvkFg{o~9nOQYVKl1KyYx)*CtGHcM(57hfABnS zHoJ`N?tiFd;I*Y52f2*t_vZ7B=~peMx8H{X^sEG(RNG(=x?Ot)d}J*-`~MYJg)Ehh zL1GGYXOZ)1CWI)}Uyvw8XtZfK+KgyUj}CN_Z(!8iybrwuO*k#jz8uBTiyHM3H9obH z+eK2(Rj7^PEpYI2)mWe%dszWBQ6Gt4y*ii&zCkB;&(|B&BAwcz? zJLPtf)V(_i*1P|xXe@3v1UDPv_8-+h63n-2FVmyCjtKDFn}Z3JX4^cOX0cLIil9mK zIwgs_Qd-w7b`tFoF(*+3(AO8{VTF{xzOWy<9xdMo2JG#}VfM=CpGzwv{Nt{S^1SE4 zQWX|&JfFS)nYPO4bJPjuv)7Bc<}?8qHCJmQ)O<2(J~QVGsckCz>#5}S6w%fY4uQI@Ga$nX7iE!00t=Tw*8s%gin4{5P2)&OZ~z{&DS{?d zIkmn851tTBs*0yPA@DB1P4eg__{TAU0hkDipmSAFxjiUY0$!Q$%H$@OgI6xRa^Z~v zuR?eg!n+>4O5s%sZvuFegf~feQ_wr%F%GJ-^V^bZHE#)~3>qNwgKFtS#R`IVF9lb6 zZke&q!uA&9+LB*;YY|)9|K%p^K1F*-YP?Q7zB%VFN_c#Wq~89CnjxJ%TiU#@Eyxvf zK?oKdm5)i_0WNj)R8C0r!*vUAq9+U8Jj*`N8k?*V28bT#pqax1otvdMx*4|b`6l#0 zl)A06P;&gENb30mM6+gm7;b`I4|(iP!?NfcgX+?Bx`{#zD=ij;yeN$7?J$f6@Q0;i zR&i)Jo;AezBpS{UN8MhJXYsIQjZqzc*s2~5_jP!{UR6h*-2%q^eb3L5n!lf53q^g-Rj_{NZ_oNnAoEp+K(KN?4D4Of4;sbwFqcta z4;F*z+l_xr#sYdWtTy$b4^f$04M zbAoh+49lXU(5nrKTk~aOOo?zupnxFjU9C{iK_V(X?{VFmP@He-&6CfnqR@Lz#rBgm}mdk zT+Oq5#LHT(h%(HxW%iF}C!A;1da5Dc(cog-0JEmy{;TsZV4;iA{5m8*h@dfCX%0)k z(WGODLn@tVHg0?-ETPu$rMl8J05X<}bntB@-Z=vAvM6_bQ4c=7_C~WK4dKFEayW@k z?q=U$Q4cq^gpeJ-dPGf{P}13a2R@%B=N%O+8cm*xQ_-dM1wHihX3-vM)Op7teMLL^ zd8A*xOKOtyjxW_gWc!`YvCEzzbq(s_ZFzx3yeE>*0Tz5gwdU35a2yXHjy}s|s-t=C zc`>7iKJWPcJ0zc+cVzi`ihTOSw)7{d}$Ycx`wOw@?3l>IFI2#t%a0CE?E?-hOUwL`4D^&#?>Ezvtc(b0e%@ z=PfA7ozt;Dj#al&hfJ^^~hD4L#ju7SM}p=c>CX-=2P%)Ia!i z7n&xh1WgH4VmVSN@w7T z(lr*de|a(8?AIlb{V1eF1jA4AuGoc7X;Se{fj9x9^4xo?hOw2MvU{52y>FX@(At{`7OCB#gX~S z>g+!dFMM|mczm0=%KG?DbCm_+60$YAgi?DlUqbfgTta#060*Pa6?c>Mu`qL$C9*to zyU+^_aYHgn=W5D3SCbNPHJPY$HRYYFQ~77ow(~RPou6Cr&jI6S$~!+F%Rf`|I9F5N z`MC}95RKZ*5smWr8CsvK+7P%7Yno61sZpCo0sd6y+Nm8I1FY9s5x z_AX0oDod%oM#>)YE=z1GOR4=^DNCb*UeuI?ZL$Vp(ojjMJ%LIVhjE69=cL#}NXow& z+{^K=`k=VXR7vf}!@CL&xgP$NJk){nV?p#XHJW3qJ}5i!3ztzhtex%7Mxli?Is_N4 z#J?f6?H*i6vk+jmanT(}7-k`j2Em0k{tYdp5g@ow%{`%o)b~RRsappZQimQJT1cHZ zw2=BIpmHdwot=wBpt6t+F3eLu&(5a=&kJlIXJnzp%ra(Pz|3-HRxtBaW>zwD5;I#f zvx=FsnECx13Ny&e1gLCbnM1=9wpD`YCw4nkwsIYGVH2l_5923y{p!=`^j2lgx zWDiq6N3Otv8}C?21sDpe)qi>8r%D`eSK@uO7drhVP08=I9zo@um!}NL4N|O6JsS0K z9o1hRjZ!;65N9FR+lcHBsS2td!ta~#j3=q*?<78UUJup|zO7n1jzbT{cZj}3**jeMM(e8z_gx;VFJSo(@bSC0IDUXg z99|4CIV&`|6SCRx>T?ids6W9w18=Gf!k@HZyZ5aSzFvk9P2hYdr3eLB@i|J?QYfdQ(Dq zut;r0T^TIuh--0TT0It`HndR=8eNlPPufpCyg#~*`cYXSe!LvVXUfS60irgL0CFXG zR|)Sbx*2#QF;rlT8C+p^1rSaJQ!nE(Du~F%=7qq;kH6MGQdWKpBa4$cszqYQnW!*h z%h%LsqYf!I8j&Q>IFFjr{%{?aR4v&EQ*lG{D6yAIN!7fKN-Az>9wqkOQgR!K+o+`C zhUQUXkCKwMXGz5k&7;KbAteuamQ>u(JWA|N6*n}G z68l9dsf-IH(dX566$bEo6)&`c5_>+EQv-JeIX5wHq~Z8ct}}v+Msf4JJ|3LP3JvMR z+cbF?vh&4t$w3$iJ2b%|mt&6xIdtFHQ-?BaJ3)3eUR%5qiy?g(sV$^D9(1FBt)ULC z+#N7$=r_FoikWp>Qgz!%>ff13jfIjsxa6Oh$;~rcbz6+9%;c7st-3At|CmYI#^tKp zMpDNyll41Wbz7Qxlz$W*-q@JmcqBwPEo$$Ac1JsR=P?nLnx28d7XC#___6>RYA`;B zk$%^Gpd*7b?9puybqepJ9-L3d_0B|p&cJI`-&;-kIL->=eX2(59-@O{yAj1dh$jV6 zg_PaaOBqP)%ov<*nAm}n8c{gMSm9!YgEMFC8rox;3+!%7vpHo54UbLYjB|$G(To?~ zk00N^^*pYzoZ_TF4yGbw$fxL_GYle_kCiv=spG*DIxGCgy~@96^f=DOWS=K%%eTk# zWDnQ;r=BO9^y~lC&yy9WHt{@JNtwstfgf@5F~a zU?Mo}p7$Ih3`u#Y0Zu;j{=$OY_uYO7v8d!Nci|zS*>0 zVDP%6XY{4rxdLN%t{@joI;v4%9Mw=~_N3pV5A8b3^p|?Vz~jk}O2<@TZL;<|rHfJ` z?DxY}|0(-jKJS0E{f3%1VZZZB8{2P^e@XezbOBrMFA7!OJ_(pR(_8&a>b#ZxT?BQ{gnDNxmC&0h;uQ9(H;)H6_)%FIyY=x*Edjos9pNJPg{bBWS(}> zdkx|Fb2e`}C&g;tfIO6*FHxM{^-$nh!2hK8B$8*bmfqgD zyG2R(Tf7x^*9_ouv)u$Rs^&>Je=W_1SVTrGy^b*@W!G>L1P2O3SG%l2_u3wDuO*Av zbyC!|iq(p)RqoM&X3>>^n>C2sqnlPzCEV@=yCL@|yv-FKlC>c8mH3yTo{9r?MiNkv zCuP?}7pfu-)Hb|vxGAYp3F>qgDl-mLBnc>d9WG_pR%nbX_(qDiuKFecMT>)7^IfPr z<3Jt!ThkQ`5LAH+bwM1cr;~s>mY@#6!nlIF8cvC_XvY|?Ndl@hK|SR{Jr)P*ge0Ka z5LAT=H7pL)hQBtgD}3WMWmhIak=@$?KzaAFG%Bc;M{X}utnJ{layB0IR!+Yp#J~%q zQ+D0sLd}i?b@;`mYeX-a**$JtT?Nw&i)f*!vwkS!oydBhZFnRSWR+&!mQ7m6TRA3@fL!tYMf%X@0}7JW6vLhUHM2 z-7qYR(u{^-fd%T8W(a`ZXsh18la1-4p)>Bo&j^M&yixr_#w~abPTkjPSmV6(u2V_4 z;1CwNU5mTbSrN(}IyHSB?ZOn}{Xd%zo|1ys^zd`&WcgO;?+cLR2i5z^tnjc&76Ic$ zJ2)2C6zcQ1l2C60DmB%q%*B7c6 zLIEZhFo-}33_e`p*3%Q_41(EnKuLpxNrmc7Q-Fcdj>0E2@I>X+Ywdjnr>Z{WX+L*% za@v!|u7>+5&VwdWPuVxzPoW?(pk+wy+fPtt!`5^&6R@UVN-ozPDLJvG5|G-O;@H!v z)Xwy%R%i$A;oLE--T=^Wf1SF2I9#KCW7`g^H)}WCPco6DOVn>VxO2Vpq(OH-@iiM_3)gEp<4hO%rjS@&%k#`COCo#fhT z_3C{4^E)wsL2Cid{WRRaL}?oA zk;fXE-yvE<>VDKWcXu@ETV{WE2kJ{UFV)O%s+wJ>niqa2)yzc|^YE9CJCo&PkKENB zceZ<78eLs}emHhK()Fc4V8i{i@klj1gaM%8e%hNP%2w14p|&Y%vru)4su60XqLvG_ zOi@dOTBN82LIo8yOQN=OHuiXiiER}+NU4SJ*y54VrL4WM(_X= z11H%>+dGE*o#e!j{{>Q+h1))loZz-kxY%d2{BD2zW|@II*^l>en#J4xs4uAgoTKWQ zt?C(8^=!C5L#TlIEk&q9${K0>QEjED9YSqW)MlYbK@IoU2(?mC%Y}+>?=%klqaCX+ zhi!W~NGrU~JV;l)rwreSQ{PUqLgnb6yAUy2_7p{oD&+e}`OEM+TlIq3Nh|S%B#aBU zWmw@!>I+F%LUvxMSvV>|jYlbUILrI}vg#-2{jv+Dl05Og>rjd(;QC=aPyBtP|KR&& z$L~9ZKU{^Q9!sdovEN6UKrhrX2QTDlzRy;R?0kBtMn(E@h$~y2-?T5epTFXjUDA8s zlnd#TP}#-dQ;NfQ3osU#Y7N(qKI(-x6Vm6Rkil39KsqIvLtCr4yYYk_tm>VIoBp*~(=dI32%@BY=W#Glv`&RR zRdRXujg&)0fu`==bECZy!-q9{9Z4DWE(fZG8ZRmg;jx=jg3q{JzlKFcOKq@=URR=) z(+~zx!7J%f)^K?j@+WBvqe8<*`-{iZn0FXM4^C58&i#-+pWhD7QLV1z?x=LTECn@3b`7_#il>b%Z@{RZJTzxES@8~1HVFaxS2In@6pf$nZ?1mAvCKzn!$r3#s zk6U=?$!RrLU%kER^ZxEe^-myQAl;EKuVF+kI>g|BJ--d63~sr6k!UtR<4UCMQCWdq zvcEwr5ZzB%U|%H@dFEag=+>vYZM43#ak+hrulke|gtEV!h7sAM->ila8B&{E5$7*o zCa4YiYXW^`xcEl9Ircr$8#fVNo@*aUUe>xJXPY>9jy=zaX@9o=U9s)2+XsE-YITh< zUYs{2cD#5%A;fDfp1<7n>WOWr%?!LxZjHt3=LhdG-VV`@D z;SsJ%8g!?fXoS=CXZ!55&#_M$;c0|?Jjv^!zb9hrJI0m9X|~G~q9wMkT!N1`e*XA{ zr`@{!=bf1TqsH&`xG2f-P}$FK8vzSEozc1j_SB-~k|2YEN zCQf}5^v_vj-b#NJ4I|2_|Ccq4pgD9fkH2I;PaorsZR+C;^ep!XU|}k;{)w(1%hTPJ#};|6O)QTyUbl(Sr|NHKscSv`m6J(WL;tG$fq%y8 zKT&;W9qZKBW4?L{P#*P7gtsJB@IpbBwJfHH^roaY6e%59s@p$$dgz_i_72&zSa99dl$ zi}qJy=6|od%X)(R-$!EXL*4)V&l=s|vA+#o<^L4F{Ec4af7PhG?jMlppt{EG|GD;? zH>&wNVE??CGi^KC?WUj_4FrkwmDj@27mw>So`0O;+DEyx+uJ)5*hiGS4b1_l$Ezy) z9-y&zu}r|`0_>-bzxgu1Rj

zAOF%BKP%*RFQ{u8DP9&B`g*kIb1kFvlWiXzA3L63pAgL)&w=-kXuMqeS>UN|p4srR zDBiJ;Hr~KmKCa)MT~7U$OZ~QdlBmTJ*;fsjZ@m6E1F&A>rPIIunL@gXX`cZ~7IS=$ zmH$y!{z)Q#`-JlA>!HuV(e@j#->i4km?voKwkOg?V*jDi9WM>5CA(AKe+O_PeN;D# z)<*`evoBQAnEKH6?N$DmM&+aGKTciajyI_P5vTsSPW?YlTz`$n_B7vi>?s35b*ku` zgb0c3DTB-%_Ef#P%Dw=SQU9ORFrt!D_E2eQbCUXn#+`hk-fL<=090} z`zS;RHM4_R_}C-s)v?}ZKJ=8{m|xd=+2gNpS_ugpx&9IOA z!LeVb|F%>J@kVR2{ed?k8ZTfEy51SDbHt!t{2-Av#NgeFF%4!#L*ik(?^p-RQDUVB zmfQZjfAng9b%ojfZuxg&%3BcFKBiImX#E|gdl>zH%yo{8PJP#HOI+VX_HPk9?8iEx zk^M{rtcUd{9#3%Q-gM5n`<89jd6XYv*`pa|Jl#1>zGk*%6RnPJT zG8@(R+_-qupQ83VU!tb8=TbjFY}}%QNH|jW4t?n8>lyTFX2g<5uEplDO2wYSAMjb9 zQn?IoZ>^c~Gi+|pKS(kKYV!j?Oamt` zUiJbLW4kOgpdu*0qPxiiQYq|M`0b+|U&S@eCZ_w(@&zpQF?(4y_yC{1d7Rj*Z zmHyOiBXXItk3rDi+(!0Mi>`Y^Ph{a#M--s#Zve*KRn9z>GWwQ^*296+s`u9 z{&J(}{u`(M(bp^c?dNsRY0z0hwKJsvDW-nZ zK(MTBs4OE`Ms4Y5-U+YayV9`d(Z1@&54`E2-%D}6r|I@xK>EGh>-yg%b-ile4qn&) zWui6)lmSQiK%iQsLW25#ZW&2pKH10pSbfXKr?iUkxgpdUq$7L(Ac($yPKnu>s8{`Z`jxpVjK zZdiW6=UKU%y>sS0?>TekOu2J~{j>bof9*p5_V+H|gY5H)zw#Xy1ygBJUQ*i@t<+04ny$kE*}xAFnsxtZ$UR@<)Oy&-OmK z)ldDi-V3JwWrY7df90#cA53{}&jb9GANryH^4ebYWif8gjS$`MFxXnxowunJ)=xYi zM*3~s;)kCjOZ?;WwofdTpW?6lqK|?p&;3aof8`w?`!BEKQE6GsjCY?1er_yYX!)OR z7POf12i&Oqg2pc`sW#jAr6yNc@c5faqe>A`M4~I9J-y8m15c7MD=oYjbG$#63BTe6th9v-;S z_TVi)&MyDYUlp6E{{J%{?5lq)DYARRb?EQyuRPv+#b5cBe)ucMUptZzOM9>Ba$_I= z7GrF4T6Paz_6zBb^Lnha&6u6mvlKEv=Xk|tz51P(Khk)h@Ns7FW{wBAJ{QsGL4D@v z19Rpy?azaUyg$H&9!99{$KQB@`D`NvdCebuzS_S(dfS5)FY2$nU{0}o)vVDy6?SER9NozNc7Wvv?(4W}7> zf}KXC8R}n}CZZ)0IVv@;O!Er+TIIL%xT1}LR{8ZIzn7HnDSc=RMP*l56TBz_%Mlqa z%sRMg=t`PwrK7pzLwFnf_z&v>Meba6i9GV3wL+D6Ql$j7rjK|QRA9wQl*UR|zVTJd zn?&-K`pC<;ow|sEi- z*&>Xv))9yuQO88=pqG?|^~S;Wh3PDiKCn6m6BjJVPk0ohKPSFR*Vy?i!K3Wp_2>Lz zfE1(ke;LW8)>>cL^q2jE>92KGiT=+=-d)T8U-Ir_|No!G|7*fOQx1bZIdd z1^ZWHVrR*>-u{L8q%Fp~jk%91#T6F`aOI~x&r$r%10Wd zeaipSz_+~B9?aj~Z!GpE{(j!C_-jAn`uOw7FI3ZHd{4`Yw0`a5eDQhpXI|y&`;`CZ zy2}5)+RpE7Ew88kPkqXN85e=0((7H4rrqd9$h1xvQ+XN8p+t^QpN> zAe|%p=sdQnk+}l;f*zL(4{a7%MPJAocx)F3My$=R7V?9!ivRy5{a^gY@xfw0cWCFo ztfs@`oDn~~s??b2Bm(KF*?r*4rIRB+ZjR!LE1sdR}gscAnHSbTc;FbRN z)}MCJ<m;Cx$uJOw+0Nw5e{Otqsw^#!1iFkdws=1G>8CDNe^HVok zb7QJ`%@4+AK_E^^*Kt6 zv1NI+kj-h^Q42W0){3;<_y<+0CJ?fc97#8UZ~vtxu#*43jQ{^J{om`q0R9zs!OOpB zixamKhMf|t^6cJ>g(dTw_16<6Lbr}adP{a7(oDNZmoE-+JfpSUrm?lzwLoR~^m4F9o^ zwT45HCTsi^FS6h{zVY++bN;E4u7ZE~1XoYQs*jY0%^x5Q(>BBg4y$dBLqo3~@%nrr z(pc~rwFcQc{7h|Dgw+o&TXoX=Pu;KAz;Su#ywm9jV9Yg&c98ef zlJ}hG!1vsZdt#EsJ&H_&jJD!IBKRok$*!cN1#pGxA1EQ{z$u>M2#685%xl7%c!`X>8ein&)u9u%M zJD%B7WWKu z+4z|#?zvumjBYkO%{87ViKnR@PdSYzRr>SMb~Zd`+p}KRi>HSj&xb+|`SW{8LihKS zud4QyChj4Amb4Q0q}uWHxi%hgRE*d7A(c*z=|Km^^rcf=2Bo;q@w+qdie?%$O#eaJ?&1m@|g z2!H%cZ7QAgg9GCTHBOPCw3`oonK18gzU7b{oKHj}reT;IS@K^#&A9ZyZiivvi8$!j zeSu=0$FesGW=xhvGrlm5aCq!v5=|>uFVwu34+s?m!*ul07}6h9$Zm1-6lq ziS848vjr3{V+yp7uh-2_@FL|91@bRQ~~AOnSgS7|1pTxr@jQoZ!v)m ziv>Bx$DcF0hZtRs(L$ojF**@CI=)PDd_Gch>@hjUp06HF*2OxDI_4oM1kZ}&oo58c z3sN=5hvAlz<0eoe0LRuIC^&uYb?7<{e#ZKw?G^qqq_$u?$C!*Ot3HMPL)e!-^HyQp z%|4^_3A5`{OzN`@ov-rEGFqShm2aXx1Iy?-N(z0x+#~dP<8GzTa$G6fykAM%=Gdxh z`u`)(W2{2{j}BMq(hAK<`G2K=x&&vB4@zsfNuRPk{@5+>AF8GBpU0KL|9v%$e|TGE zi-7I-)hWWa9<<qau1BR(*gnb?uZKTN16E+2 z`~_g>!(FDW0~v&spJ7<}8CS#7TSBp_q?qit)_=^3J-L$<%QiaK6pCdVgK*{YbU>hc zij=FG*^rd$Nu5dDpZiF;=g@1Yz)-^;7`C<)0++XE{2gM192QV;$=77bv9csOeMS)4 z?H3iA3Knp%xv2VHA>h?XoY-d@7h_Iy_dkuMAd=nF7W3b&NkF2b`Xu}@MCSsIY3Y2I z$OlF}CG&xnoDT#Lgsfl(UNB$0jTNM^lo7bKP8?(wo1) zO}K{BAp3~zQOGe5ht&7fedDHIg_IXqiopCGyil@Ju{`iv^AE+2$U&~%KPr9@%?`S7 z3?b!Iw}&x5h#y(T$`6^JKDopX&Zny(_{lPQ;Yu`xp4`r>vQ{FmI=`H>q6CWhf&F5g z&}<$3&FuC6{Dm~jGTw8cHaNq{%k&+~`W+&TbyKg>ur&&Q{>l7vG}c%7&&YKc+v>Yc zVYLzIAm>q~$^~!~NrnG-?wgO5FV5O?pvnAzweOch+UFXH)rI!CMju=OoWa>4LV5de z|A3Krj}Vj5qhz_&hI;QOeW!nYPz+{a`Y16t7BMEhvf zRebw7@x0GSuBf{TR(1&azU(U2BCWm#U}|s9F3zsbZqDvFnUR)ok*cc$MA2@9YjKoC zwwnjn$~3+X1$b`cxyGaKGr2`2_}?%8ECOdd1=QBo^Fo0 zu77-as)#aXwlVWvCbW4L5t?mOr*RRFFPqVo9ADzi7&N}zs>YWs6R{E{$Cpo_Ila#M zQ@3)!_;dl9llL&wt2jE8^|H74g8T)+h(=Szpm@Q<%<|KP%Ga46TrI4Xefu3&Hffts zwlNJ*SXmdYEcrp`rGu(>_Eg=SOZfpk%gaF#10kRM;Jz)m1?26|uDv0s%ltM&?Nc^JTX5x2j5zTfLjXpSJUEJw=(Zyvve>B@faaBWUFCwh|v{4L_? z*+PkjTN3aLl%`_hevC1E?sv-j@9}d#MixHzHyS16Uw+U>e%d7J_kD{TpCyWH;v&L+ zCDAOvE2!v;3|zY~lKGKH<|m+!;=ZYuSl)_UMzz-}@u!l51Rv1AerE3%}8KY6UfnVz1a*K`pct z={)0+N4qyzhAv(W)xZB+@^K_hA|HS8U)GVw^LM|=I_7Q=I(|+0Key0qT#2qn==gM9 z9djPudd-+~rM3`Qfpml%xQ&qWbC{M>=>t1gK3RQ*!-A`v2Ox)fAU#Lnj-e{{8ENns zo}=i9UsF|DI$HjkFjo?acaosz!bq_qC?6_+-IpPL9aZdf*{O$U){|LTM(szYu0@f* zd$As1NCf_ozKZ0Pop^J6x^BS24(2q$1(ComF)m(#EjaJUF%~RfTeSX;^g{f{07S$i zCtaaG@|(c^4)xKxs}|z~wl^ph{jr(9Zgxy7D)Lu&z+REoOr&bj(p$=|p}MGg%X(4u zGK?=o)thidp|CF{p@S$1?V<8lOoX(F!UDHQLhhu+D97o z=SZdtpS~TpZfYQEYKx{scI9O2b!64BLS0urCiZ=lZE@N0Vr`Y6<`|`@IdZ{xqb~}Q zjoyqR=8>Kv1Pnn47>N)t0com8QG0GMo_O9&7=rE3x?I)~;nIAz(A(<>e6Ep!QH^LV zi*UtFILml1hQ~)Wlq0_R4w10WsE0Rlsi`y$FYT$VNzE4(y=DhT?VH_8tYP>JjI47K zi;abs6zXiFl|X%ZEuqdfc3}uWsI!ec8Vp$GB<`!J+h(oz0b9p0o|EvIX&=CmEZc~= zk6U?13{Eg70dHJemiihRyLg&afuv-(P&_B9G`Ha+Cq~LKVp)!y+YkaoNuJF>Iq%tw z^81O~Y-1Uh6SEnA(khkkr$h`Wyt)PD6YLLq>4H-TYQNol7l>>P7n43Bh{pY`8g906 z>{WJ)8EXW=BWSS11gGOlP5Auymrf)y$tOf2(H0|He+xw=4hhxvG$(b$R8L$a2T#z7 zxx$UqbUA(Zv<2_}WE?msWX#br$R?^3W{~`qTDw=2dX!4RLEUX*ko05cpLM7eKiih? z$JHn0Wxnr0Tepn0?By-_ep_lna6%euEkI^oaK69fS+n^D$oB)xr_cI}n*#^;CiB=@ zKYmMq@g4(=GDIUjh%0WyImYJ=Fs}&JXC6g7Q7!pkJu0!!xE&k+xg|Hn4d>(y)T=CC zNX+dsoOn?o-C*lg9-)RO8~kU;lFf|PXYQOF@|yl=S@%QY^68(d!RH#CUSSQdd?PeG zP6X&e3CN5~2u5#2&=|yv%`oFyg@bELyOle`wCvmxtJp=Rc&A5rtF$?I_g@A%f z7MCT9%aYM59oS@9e)(cCA+Qc*d;&$t65*>yQ?d3?wy=5Ow90$Gzv*)i$7EZ!2Hk4%y{~0!T2zYR|MnJa3#{H z=l5gvq8(50CmhA)#zmwp^6iWiLoZ_{oJ;m_4qpE;S}4mk_B3IxF;|hn66W#Pk0eyx zxt7wfUZw;w{x>CL?Gaqfl@em5gcJ2C%0oinqOZuJJ!H|ovS|9<*DTsk7OhG}xe3t( z5;dVpu-9hJ5cV0fWZvbN`YrwHp1Ig^(`tFsBj!!7iJO+mn`p)QQ+ZQYdDG}Ikh0El z!+Y|Ejd*hjw^mqp=61^sbL9>1svD>|AC)&yb3VR+oy!=3-OtwMEN95v)U42);R;8Q zQG2-;W#$v$FEkE0QPB89<>wfKnCl70 )IZA_cZj@2-e94p(XNCO@2TI%D<+IK&H zR(CIh-y+vC8lcASWg&B6cn_ca3PI2$~GFX6ww2Z zfX~Ywc=JDbmL519Ss93-)fWHj3Bl(#YtCwp9-GA+-S)NM=no|9f};``Fqs@7E4inH z&Pt}fY0XNS_~&TA4xwFYjFqEn=OwYSTqKthtn|dtU$U|s+4nW`lIxg1l{-H^KBEFs zw$WiGbMp6Bf|DbdcV+H2!A35r(Q&QW~|+JM)5-cx7{ufIZ6i2l7F zwHWH(?=ZLQc!{C@y-EI5z5YhybE*4RNT&;)P~9+`JNaPq^A*1o`pj-VCqwBvybQ0}Nbo~e&&+myb@|~r09{&5PYmT*Z`jaZT#>e%EWpsrqVR`sf z*3mdWUMi<{^=zjmA~TUFj1+ug7n-Mk{Zza%cPk+EXpEz>Q7|CP+UoW+zo$((aiO< zr?{c*GyeT2-+L=o6${j%7yY@UnhI6pnE?K2P9nl~V@@$zo)4`o&~8{xXmgCESfL=a zImUWisrk@|JZ-o0^I#P2X9CWL4(vyE%Q4E-W#8m_I>X&%H24sCxsHTrJ9Oz>aV#P7tF$$!4aKb%~pVE%vUBk<3>N8{fK=acwr7l{9Q#>4eV5xIc2V>&A` z{&P|!+jtCP9Wq3=F%DNE2ym(qI&QaCrs!AK40M%PnQUWyG!)upxSU8rXlW{lmpy*#0~r zv|yUB|7V00`=2mo5z)elD>Y#1`j4h;&XWLPos;;$cj^b)-5i2Dl@+06Vc*UVe(%@j9gst%w?9b z8~d&~ROcA4!+j;5Gsw}KtfPk)QvK|OB}o45uli5n1GI@@nQ`Hy_JLQYFrt=>DA%Yh z5#<_jbcKE|#oV*|$4ElG&nSX-X7d22yRyk}pddU96b(pWH6obBC}KfW5G@Yji@-7*2R?^vxS~5tS#Q; z4%{hvg+P;w+aDIZjH}7Kbi?Fcw$Y-5*t*v?6+zYI9aNnI?el#pl?aa<58yqg)_7_c zV2P*Q$c<$@{TR7%!SOWnaj$q9ET7b<-a4i!bWUapPc0D??nFK>C^T>-DUAE}0tHqv zw>qdYQAm3$Jb@^Dy1SsT*M!EsK2<@`oG%yh7|}}|39o4#Qwn-n8C0Q z2z0J-4#NXtFxM!CF^$N$c=m95Hj&8lk5M~8kY)Z+%=VhIhn>0*f4N52>g1`O4sgxq zX%|5RW`}4y0OlW8&m;-GwyPOTn}kO<2npq+1kCwD0u>EhrnxM0q?)Kz%~_u1UEhrR z$B)VOdfwDF>lrE~yhReIt#lZqCLiz0B|!U(5#2?e;h6dg&GxxFj8g;VaCt|nyn`nd z)9EHS3(Y#_=Liu)9~B}-)1=~j%MEAb4IR`CG^w~m-awOzo@qitRlM%c&!pnLlMUoSgss2)9xDpPpm4+3~J$n^iO#V7JM|l^mars^L98 z{b8z5py%(l@#zG(8bPN@a(^Z41*Jy;@+15BZto#R%j3rJ6BunxMw?^YCedQOnb2Yx zgYw#`t96(do&l($Ck*sF*2k+!n;hdA-qa=bm3)ELBh$R%&_nn1_VMZU^hc#h5!t0L zAJ2+B@{Wjit+0?F;$071sd)FmIjzW&53d>Tu680tvW@q}t|`6OZ}$}~r$)9SMC}=j zv~Q!1Dlh4;JL*Z;~=Il2Bf+&f;{C0OERTbcln@p1t&^Md2$ zl3rf%GKl$&R}X0ax&K+F{lsEInqy>PNI|sc7{_p>{AbTrO;@82Oxgqa&)$W&1tJ=V zJzg}v5`LI%8K+&IZl}Glo%Ub;C;adi-qR%funyc>`r$+j5d!$33IRd4|NYDek2s^p ziT1yU7|AtO(V#}Oe_SD0jVnz*(C7^N(SMNbU5yRgwEiXYRb=zmXzoF__h0sDd(9Zj z=$bIP9HWXvmt!=-m6$ITT(AFL+w5st*5Ed;T-;|2y0e4edVC~xGJ@+h7~4x_%0ZcH za7~>1AK%&IR|ShctH-cD{TB-VYmWhy@V|bzvg)(^qSoiFv}@{9SnBg}MXk>nxU|%# zH3kzmO`o=VwS7*FW_{+qCG?pBe9+wX{#oX4o8$M|8(>kO@Q)a zu|F)p1|D;B*g>&5Y>RPVH^g(Fk!3tTipjp4p=KFnB-AV;ilAbw5`)e!{e9s$vA7=f zwjev&W`Q$xryhDQ+Do)iQx$U%}9b6E_uWARADQ;%%e-KT7N_drnF*XhlqQFD)?Qz?xJF6dflN#egj~fNFAXgtTieg`Fnt%tfs%!%e~o zeX4O3skrXBEE59O&1Wi5%YTE&_py|eOpm5t=6pYEC)MZPn+Sb}j$nEs7c>i@uOV1- zXtI;8D&UHyOt4#*_8UC$H#r37&F?KDe~@`IFL&B9=i62`Wnulxu{U(Y(<&@u!)8;) z(Tx<0gbdoqC9(%|%&_MxA>mFb0Z*>5gyFo_lYpJaaRVpOw9WH8W*`Y-!>1`>k(6*m zY~pIySx6||@e{(3a#R#eFw~Q6z0`JzF|yzXTu_j7ir1xRs1*N`HEj4#rGt$hZFUGV zP={#@V>8T|FXG3uSd0+yV-~Kc*Hq(%c75rNeMWctqE1_KY?(AKKxQ7e7p3@7;Qlo0 z20+YzY*#R|4X1#4>NNt9ZS2Irf?#GF2CmErHn_`twYY=5K~c{KF~Rot3W^}vMni1l zLR-+A2p;4#3T;Eq(P1(qwujIDy)Cl%xo|2j=GmI^`WXj>4CKsS(Oxac>0LXzQ3Y$i zDY=T6TqAlY+i%CK!hWkL+XpeZJbsb!|0EtJm6xyIV~_v5dd66PI#`hL05e#8Cv!Bu z^k*1fBZ;q)iLW89B&Y#(Y@q(&B{2r&DgYGaFW3FNT{{BDJyNc5`e_FD$~-~db6Cj` zWpoj6)&mRvb^Tf?wfY@Yt-tK;}Um2lKK5v(sO{91t zniLh44Hb1q%DO|$x+~yHEv4g`y8-mf9Y05h7X;~DR@fRteOC=gO!<;LIM;ZZHjB~B zF#bqyOyr5c(0#?lyef7#hxR9s$Shsd5%#rqgo8+!3&I906T)gJVf4p|MFi$YX@!jX zi*d#>F1YyBF05JoD9I$VDpuV7=_UonAm8eJJM~x5yN-CQ337IYrUvT7PG@M5SN~0cHVxO z*vT<6Xruska*Rc|lIun9Rg&={#~2J}l)%;?Z*H=#pb3$@A&4$Ioc$1QnGM9TiwWDs z!vr`PhEi)}FyBT^;#3N)iXS7MH;K$w|9Tkf z5(WEL>kfijhrl0{f7O*591=UQItJrkzov+KK9psG@vpVA%t%=#82@@rmT4)=1mj;L zWtrPVnRYh+@?*n9S>ix(4swBQXbBhp?|9MXv}w=Da~s?3DaQ!PyTIaYDd9ySq4hW+ zq4XC_bP6Ptp8gaOodO97=i+0>6^eJv+l*y9MRYnnBLY*!vxI^j?t1*qn!gPA&h)p- zh&BcHFDKfGxc@n}X~Awm^)KJZG81H(VEUK2vP?T!CYb(Zh%8f1mIa&87Dq$UGxy?bNF5LBm*-7LPoqbu zwTgR$$3=eaHy##$TQnGl&_%{WPu$SAgp;GueoI|y0kKU=$QC=X+Sgze7f}Wh z#uqH1p_Jg35;(qcu<^25S+%Zx@U!iM(alEN4^DlNnQCBla*81-$S*uDCe5t+4&lh4pwk$d>@Arx%&M>x_&7yNy{AaC;$vPwEyzN{?gvaL9ZkK(e-B3UMw{^L-*;9!U>6HNc{wJg(ImIZw(Xo0bgdkYLNm9a2I?DM17|o>zK$zd~x8i^@+Fx}LxmDAM&w z?H>WlEIlU5d@jpyLV8*_Tg?8>m!6`s^d)SWqS9M*>3JBABONHnJQrRUO0Sls&*{=*mEN9a@3C{qe$y91 z#!(?;v=l`6?g?U@&W|6?YWas>GQoS$fR67wx$ z^c3gpO{~+VW^;YT<~ObR0L2``AyiWSZW$o>M&@#|%ptMusU!P4Lfs)AcotanM|uDY z&1xlt^Y}c3H_4Y2?=&hIpTt`S~7whd^WHgkp2B-b9 z&P%+1D!7EJp!G~XJYhI?J>kKE_de%7HR4S?;7==sZ94Lr-S1<_owJQSo7IZuXQ(g^NMEGvCmOxE%0#7A4lO92y80$fOUvb8+ZTMrQ{SWAgiSS_y>0XiJi9g zb1|{$+~x22gu&RF+3X~h7W-|_C&>M_9mMnab~&`)7K?o|-Vhb;+)5QfciO34YqfRj zQn=R%4X1xJ?rp4g-1^R!-~ce+GYZ8i_Ox+0k$1mT0M_-W*!bi;C=^a6{}DKvPSZdeJfELkbGCEdbkkR(&c=y_^N) z8V{$isSA%LQ|B6|z89v>H9|J!X7|f#U)&-LNRaksVw2e+$J7f&Sc7u6VNMAFD{|~ z_lbaBLCRQ|%+TA(=kOYu&=YVKB=iL{1@w2YBXBm#AaGn$-DhN(XJi?)ek$`cMf$tw zDKWKU3{1(`rkMKsK2cp0Dhj6Ra)TqLVvUxqy_kxjV?;n|4>UP)bz@n9UwNY93E?lvRa*T?<=F`6A#loW!-7~4{F_yRT zLbICl=UihOyh5R=Cehq4(DY?AH7o{8k!U=!@b5{C=G76x*IwA5(7b{xA`t|Bgbo@6 z5|_V>rGS#KJ&_+M^EnaowirRsueA9Irb95frs=+vp8BOM6K^ry6ZCXiVADMiE2}>a#VIXVNqsp_RKE{oRHlt)gIiV4`Y6z~R*|0y2?s3W@ji@emlIf_4V#&%$eCC zs!pv}RfSMh!X}TWn>OjJNb+x!S?NOahr}kY(9@%Z2>~?oHStqAJWl{Uyn=x0$8}=x zxK6;SEzUqJ{aL0wClU>ISPhpuG;y-|BD=mio@UVAU5c3$QU@ZvHxj>6A$14b77rTr zkatwV9Vf*BC&r(6?JYfM&+HJxwT>6k)qo`d#DVYI{R1T2)6SI9BtE4sLh3mU!*bPNsssC%Q3KO7UWS1P?{ zRBRhh>+;~T9&w4TDAss#_>cLsai(OA3)pg<>?ytNiF@%+o2XdNL&Yh2tX_kM65JIn zcPvqN;8nKnTxWjgFuY70Z>~+nn`^@zFD@ou$^VYty%&4U7uS9YkjB{utA(6?%H>W9 zcis1J*r>;hUtWY~y0?JO=Qx4iXYBrxNI%`qmjGI_N{HN0j2tDR4ok{47SKjL>MY9Q26~Q+{(*gON2@SA#X~~KXn&(DwSbvR zZo$ZFaw#2B+T zA8&$iOr>pzF1MRE2;g^mGVe?LP7ofFx8QY@bW0}jA#YhMZ;6q&{KQJzOQbha)ZS9fph-P8V^xk0fUF4x>$hq*Ix9MOXEz9Ql0K zihITGPm<4JKg~CytI9FD;tJ!Zvk*CBFLzac<8nGZ;**i^t30qfAJi8IG@=E6iwLPq zCd)CFU>hR(qtN)F+*Q#}wPb}q{SQCoWl{f%-i7j?ic298vROC+jnP zu+V2HEF^YDPQ{hfXZ%i6pRdWs0_zh~Nl4v)TviPFi5ZVZCT5JRfi8H{v(k~L zL{SRKz3>iqVi_)iR zC>aaS7SSy!+<0$1HFI>Eyw!S;F<`NVhf-IYB%)wMR7WZ7-*qSq&__c^qh$xE9V*)@aPnI?Tn|$%Hp>d zWbJpOIpDYCs6oaAWZ+jqWldG~luf-=4%8hv zP>!(@39$@)@{ae^9lo*8OoT3zw*;FA(ShQ|FU{a1-%&B-LdNXpq>u3N;ju>iLg6Fx zJ))f+#VPO5BI9w<`iHMnt$#YMR4ko z{U$RkIyl->`k7%}VPlbDU2u_e6_jC}0=7fA(AGdV0>f>tTC0BURp}#XM?NYd7`gSyXxLVp%yYrpyS0+U*tQ(S8WPAQ` znhG&WpZyn1T;d1bQi>b@y(t(hGlLk+G8W=|dvMWi05Oe}KP5yz-)uI{zosf~mup!MsLDKfRS9e#%C` zq4-(csJSFBKW`PVsO_&aGy`{LE z!w{D@(p$Iu`@`Sj#DyyytLNT}89 z1E`gSOp4X|+8gYk1%hEi77G(#m-iE3U;jce{5h^9P`Uq*yz*EAxk^B<>|LS}gDEU= zE*NOy94jkqZsPR351cg>&RO0#*S#)qrpjV{asE7vSVH1Fzg*!gu5teRo=NC^1>@{C zQIPh?LBZ#R$4#6^`1Fn}V-`G2@cHw5z&Qa2elwp>m~N8IckVL2nuXqm-J~0C%6mxN z`IEOsXXXoy7Rm}{;zWCB)V!}?zPhPVGh9hGK|>9_D3*`VP(!m?G5ct!DT~-mo!HTpm)p_YwNFT&6766<0uUm@P}-!i@_J zyqfJus;30igJ-LxxO~`Ipz2D$p5_^5G~4DtkxU1&;xS{i`1IEV%ROYVXn|r!Z-HVJ zmJUSJ&Bc|={U0X8B2)N?-1X|X3v^*PVXzIIk1O6g)*{z2Z7I!HdqVFKpz*%3%SIf7 z9vzE!S@@CC;?jtYvMQXcOq$V$PeMfe(xUsQ{RdQ(1Q z^ghkd@ev$pTnO7O_+SJ#%FF;ar~SiI^i(hfl>a8X8Rz((-k5 z``oT0{`TsV?|nsR`GqXD7stLs%ZZN)EuX+LhtTqQTq!LPta8?{OHkbUCLUU3AVjIS zWwS-Tj9Xc|g_iyM+O+hI_0FUrbdLw+!eaTxs7S;Y_^b!i)CO)?IR?U8+8| zp%GW7T8JC(b4;mCqu=Qb#2Dr%Fk38Hdjrd=lr?4H=0~jaTc2Y{6&PYjr~w;4^-H-H?#i>xSgwa~YqO3+jeE^+w&0 z&TrN=A6ew*DX}Do`C5@Mi!r#%9XkF=>+tBHoE5r_Mn*I%L^EVWv)d_0MyVJ@$72*N ziT)uRdS%aR-hm^kp@IVn|*!{MwVzzraJpJ>}(JR);f)T;qkiVWrKj>1)X5)?sD&&t!?TjWK;T zbYF}%C_mHj?_zvb;j= z-sT8@IMNZ`DlEnG;w04PD2p}l@T5pb*+hIghdIhV66sjkD%!C!G1{5lDmpzW8h6Jy z9pRnne~-jF9c5d^pafkc#iK|Jio~Nxs?)JDDHUZ>)00wBrU#Xw|2;B@%Je`Px=0#? zGCfdc5Xy|BGUHHYTzb+tSK6sb$t}JcRnO%voahcq%z$ZIVMJ6i(e1*wcuc3#qDxX3 zzK7#GU56)n<}8L9(1!lG{^IV*>rgJyJ%j(rcv1Y5LI3cJ10{iN94nn5a4Rr}rGv4R ztxB{>Zxu#=E|Kmmf$t^p9seelbf!B?;`?psNhP6O;%)eT8@`uHPr8l1m%{f__+C0a zsT6%Ljqj!Ly-a#iY5HCU-^<{;BR#1MeRtry1K-2blN|It9N)w7y=;0?IDIdR?`84* z_VlE(^!;{xza8Jpr6=7^-^<~9Ieaglo>Y#$m&f<=_#Tm-RGz*^;ClqVS4dBapzjs% zy#l^hOi!vn-z(yKMSPD;PpU}YBk`R)q*8iPBz>=h@0IYqa(YrF`d%5|E8}~W^rXu4 zy$ZhLx(fbu2YtT--|xVes_9Amy(+#}g=OJsRTJHb(TN#OY(q$jwzALXXH5QW5{zOA zS*nY{iAgvkXGUM-t%)tRjH;06-kz8?E;4*XkwkZRiaS2sDAV;vB=mgPP>j*gVMMq&P4;T!j|U+QiGzB8RH_?!aY41f5( z7x)^O_;%x^uL|G(IkyU52P?j}$1#6TBDM43@41@H-^_N3zor&^v9}E0XQ>wc3JH8k zUH#z0ydT;3Ok0KT&wDk0^Jm{G{>oVK^&2bvk2tdXUw1LF(m~_H+`h8!rCGNM-!mO8 z{H-6u__ihc!8b9I`THzE@wWn#5DH(9TZS*Eg9YE60^gHeeDJwE)2TNgR{P3WIHLsv zzS>3sE@A=v;mm-9-dMb@X2m;vH1l~s+0<_De}uhzoA8QaB|`BT78o9lA8w$(dm+Wb z=Z;Z~?;zRKj&Ctdn0g}Cv{v+O#0-PNH^>u^z8l1MIN5@)k-#_JAHGwCzzRN8YzWjz7 z-@6%pNxU(9)vWl24`cqW_-nuCFv|qj>uo|SiZub{dSU*d-30r-;Iisx_uO&be;Wd**<)CTPKO{UEZo{0bMSJ2+GbiGTa_@(Y9wBKr0e8Yz@e}3{m z$=}P-4Dw+UWS=^kzasuY-k5z~Xl>zd$CIM{`sSw+-l6YhI z4!5%4Yb5ZEC-=A8w{l5_R?UPKWr4QkMZeH)f_)#f;+r#=`K#<3pCx~n9$=8q#wz|M zMr;0R`UiPq{4I1^_&Yy{@r|b#Z0E0iIfiz)xq>#uk{YB>zE%AF7jMDWN#Hw3?r+Dp zSJ?MK6W>Wo|7%RTRrq>a@hyKs@aLPKO8b@)?c?=(6^V=P*7j}fALNbMcTGzRe`N)} zgVYA>{JBc8egA8wpcS=1TQc!h@mI}?Z}>pw?|$kYyzxo?ZY$3qA2vbusipZV;veLV z@%O@m7XEfT&iMTJpTxH(g7K|tsz_WLrSbKD!7qt7hVO8k1z#h9Z@j<$?TsjgR?URA z(bDy9dEPIyn-Tx4_~r~?{uTu6KdPiK$Y+}<{wCJc{MGai^2YdE_<)7K^Zgm$6@UFl z8NuJ-#tPaLOV^u@g$h4Q4L5E8@21l$^Yy{-6` zKPK9*KmO{A@yEhOioZ4%e6CxDZ_WJ{{>ln`3w-&L?RQcGCh>BN0-0Y!``^1*t?)zQ zjrm_SE570Vn7{GVM!n;oGjm00hSuAJHoyWc%s;f7;D0aNXW?&0U&dG2AHL~$yD9SL zH4PPY1MrGcH9i`Ig$h5^-2{AxV=ed^34G&e4#>{mH;Ig|nu#w8ue($DwqPOP*5G^4 zif>LI!5@V;JHA2KS^)lDXrTCuvh=^vw+!FH<`(|W_ZI%=n;&5RI+l9%Wck+GjCOl{ zg?4XM&E|M4TLfbBM%RbW+-t$>6nJM)y6nxTY|q67%zI3j4J|NtVRgU{%o}UZ9jy4? z?!|nb3W%>1wrj!Y8TAy6v+#O5<&;fs1-{RkS@8G=_CIIl zRneY5tD~sva+jvAhks}{As*&5vEaK?;HyK!4R3sszbp4JeIQR`iFKC_?y|-!r!rnMf>$P-mEYBlbmRU zZ#Ujjr>Gl;g$h5^-2{AR8d>l;1-_D$Q`z}Ttik*>(D*F<-F_?t+!}lxtoYvU!Tfzp zIg1_NA%SmZZN*^q`DsBybWvux6 zb!Yyb4A_3p#*6r8g6xRb@hOmhU^T!G$Q$e5o@r>|Z+$n$H-qL}yzMLFONNW_eN;=4 z_<4lJ_t34tm(#$4?@ocQ4t4+D_^>~#3PUSnLR(?!dNZ+5;fK1L(0&_O@lEc^{B5J@ z3~zjrzq~dKa&VO5Z)kbVUpfCEZ_K_k>s$Cc)`juaq4dNXpEL7?Y78x>rh+!g()EtR zLdC7&?@T=lKBvI9&38N^`Rm$_LEdA6Y=}4BsrIo8s{wvM-WY!!toYu3NbpDLiJiaq z>7|ICh?#dO{$9Zw@f5UJ|IluN|9w{1!e1eQuO!7_JHC&w#Tod{+-c&&8*df9`B5C|w>>iENE1tpg z3BQl7E1s8s*&>4^@FVlT@Ba@QWDOE>Ixz$Hi}L_tjHaEKtgAZMJw=;kpEEbhQZk>Y z?!Fsu@>AB_hGmJ2YIML2JrMCt?=A*E84nl@>TF&>j4KbM*mb+ z=qarbyMm3)MHdFXJ#lWK7HG2v_mMw zXWZb1-f5@uGm3%iqK(&`F1)M|9Z@j}ciMvqzrcp=8j%Yx1=_|jx6 z5n6oU=8%v=WdHT9jMm{9?WGeP#6biuck6IsC}#EoZb(s>!enhs0#rZtn;nppuRv<#>L6MsYl8)g;;D7SUugqRHFe35H&$mCTB;*xk;|DqK^R@$}kCL*Mj zydRIbxL?2%4P(P_=HBQ=PEQBKx4)_)s-7beVQ{`YL^z`{`P8lv=q^G zDZSz6vi90sJ8WBVDc{ANG0dO+e6kvA9iz+ocL6O%?Xx z7H6iDRG>#y<2Kk-2(hcs$5(}7rV1{l!sU;=ykkZ?R$*5~y9)HohEk!HR-ulmLKC|R z9lsVtq^zKW`!SoRe%U-g@=?1E4@|N+?G{H^-+Ny zOHe92Ci`$Sh$pb}A*?VApu8OErIkX3DYS;lDs;jv&dlzlLQ_&<3#;J9|AixsKW9^6 zaD-1Ag#$_zdMg!1vIzNpYtC91&+)$`uOK9j)2j;&z#4ccF?h#gGh4iWInUdX$3g{W73KNwIUwf-y zv}P5C`=~&>%#{i!C}S5^NXJ5jP+<-_2QL*q{Zgp#J}rT=3L|ifGc%1;=!(m@9jtBz8sqjceANR&)9jU?$rNW=Ag4Ml`o6-9pbeLYKDoRui6V;En#hE#iP_4yf+%D9h zl7SM02&&3{(Qh(<uOa_V}X`Y>zLN)JZK6Jx! z|7PQ3TO}Vp%9yn;RD8VR-ETy+Vv|-YZ}&>t_^C{~On1j$VQoT~bPe(xFY*p97be|F z>zr)TMYzS8`3{lyA}-@*u?mzxdR&u@ZKrJt-Y3cUOU-=%u)x$&&Pn?4qxsV1dB1Fb+4seo-L-*cH@zY8so zf_)nHWui)R*!K;-P<}agB#$VHS%>nAfl{6}8E-vr!!n-W@t^&?1&sevy~clK$O^Xc z-+Tgw@!tgiPDI0($>El7BvJVgx3hX8Q~PE73E}ZawsphgD4V zDL%I$A2MMddp)qCPza5^98-Ts&0gcLJ0-$Ov~r8_mt)G0xW$=S6;}(k2pO-)R8ye7m4W(5zeW{v3Vt|UF-1nu(BhqM4DF*Txh-GRJAKjyynu`g2?-B*U zHkf+h|0Mmc_%ERShT8G>Lq4tiXHXZ7|Ky(m`CpI7e-qp9?MtNp|EBP74$OZ- zn2rC8NR9tevc^9pLY&^~C;k))20yKzV6uBQpkVsYvUV~IvxQhRu}08kp9l@MoJI_H zQv^-RtLK>VCCX0DODAP|;eh5*#T&27yFl_hp)VA-sj-kA%a(JY{c378LM>|ap!OVZ zPK4f%cs)Chx-kf>Zx{Hw6qt&Ms&hkxz#h19MR~ys-VM+;h6MH{f#?phj64L;*{3_= zrX$5{@LrM9hC$jpQrbA&I8aI(B%=J3s7VZ`3wjI)oKFHN&|6Nx#_G>VOjF{(d~3A- zfzG?78R=mldx>R6)0gblQw7F8_=97U(J&|^~_^9%Y*QulVbxi< z@Tx7QK;>bERo!OseR0r^JPLN@BR z)zbJc)zbK<&`G6m=V%pabbBp(bMZgMi_BTZ!IKIa{!L7qs>* z`S3jJ;OAnDP$nAfpvpL*Obl+UE|sa_@=TjVh+vpl>St?Ew>TMrdUhVgG~7DMF7v#U z>4MD7V};CA+?drw5CprnkE$ns$M|Nr8hPaEuf<3amt3Lvl+3!K95x4`XpvrLr+P?tA_m%Uvc z`Hlz(f02Z%tY8^HW2VBp@4L?aFHOXQq~ppT3m89z+Vz=^DRkwJTY74L{NzmF{tuBj zIDZT#pPBoXfbTx0oN;pAhhU}P{x0sS%`WdY*Ls8}X+5U=s`X$i!++#B{4xTl2=HhB zwMknjrBQ${{FIPJ{oR<7I(xL`GfPQY-~b#5J)G z<)-H?!?ZmXwQT8XWl~Fx4@%nwJ}L#0g%?YKWZ@}NAa&uKA0a%*@xfMvOEErJd&LH? zo0K*T(q4RAu#RvNdPaKRAkizSz#zv5<4B;21hYYf-$)?F3D?8-;%5clv4?}@`^;sV zLLWqHz8kgIZd7%o?xt*fe|*Bi_gi*>Z%cv1_fgqCiSHli0BCd%e)xWv1oC*Sqg~pY zQX27nd#vWW!Oz0W{qr400)yn+>hHs@)8CIuf6x3;^S`%1e}CqZjsFIi?N|QZsK4g_ zEvaBM94gv7eXoP~Z~A*xyTE&-K<2-j5J>!QwD>z4RQvk@L}bB#?%y_eQBoT5|FV=u z{ys)Z^Ur@e2@I0|>&a*0`L$hHhU<{xJ1y@?#}s-ud|KWZF%glL7onp}N0HB5x@c3Y zRGeU)@|pH>P)zyE#G)eX*8uCW-pR}gL}@db`Oq$~xD-gq%#(u!>y*qikOI*ei6{e8 z$YiEJ3zW%BH@m>HQXnNW8BYpG84-x zo5@V06V#Yg%<`Yie1(v1nlxZCgAm5{3??7w?}1T}CQUe?jrkZQ1MLHj_G13B+3}Hb zy7d%krCZO~Bf1l`4Ss(^tQ5(>@jq?Sx=Lx(blz{Gn@-u|LK=lGTQabaqy_YWH-M=jChF)59rNn0t+ z4<&Ar7MK!iyp6$}a`5@m7j8jN(ms_heMaps91q8K*1WtF5^y}c z9$}p|F}Ew;(E7~?iGRl4y!3#|Kz~@Pd#r_;r%GB!WK(YUGbz&G;H~*6Jh?E{9FBLG3p3jpO^a! zeXi^dLZ7eB+4PCD=rhhTzJKLM-Og zeJCLQ<%rbRv`6sxFG&8!?+SwdW_J9|DOZzCVqAj8Up_GY^N6fB5x;ofb(XPuXAt;D zpRw^jqk+b6RMz0PZWIju>lr`P7%y7Dr5&ovNz0p{25UWa8YLHVmj7?QsebFA?um101!^Zn(X7i7D)E3z>^cFq1h z?l&9fW5YG)skOD=tT>=Kx1~In5wPX_$7!3i5mFivURX*a!Usxee){*NBrS0N9(?2AUAw@NQXmak2TFl7WKEI+X~@dX2Op9{);=VVhpb)g((s@O`WAD@noxldnnTuV zRj7p&JY+3Q!j&Ti9I{&D`O)hdk31%4-&Su^{#n3${ODh7^cSZGa%KMF3f2BOYPXK# zw*0XXdXC`yGnn!By90%D{$8MHa$wz(Rv)UKMjdHvCD> z#}7up7yVHmyR@QG8U?T~y0KGkdQY|+6WnTmnNj8WnzBmE^SyFAwAH42tqp8r45nNh>+#wg_{r|p7Q|-DM``- z5)yp;edi@X$idCZzY7@e%{yVE;h`FuhWTZ+e{bBbX|VZsCj|Oy`gid7TS@$tgTcS& zxDEf$R{WOnYSF;>=OE1AMEs9Q{Euu>{P!hC^grJbVaI>T;)eTWG>(PibU7Qi|H}#j zzcpU2qdJ1ke;;~AxRd*P)xOd$RlC;yjt7s~%rf7l-Kvm9t?$ohwQQ~H3gWY9UFVM4 zq|KGmsC8{PFXmOKbv2aI{DhlNNLs+wCFegU{}xn!Flm~gWZXs_f_uQmDnGzm8fkBx z*TR|14{F&}nNJ6xpg*DfVEz@M3gri%xs~Q+iDh0pYOChO)}Iton%tcE+nwD7{%z}mz(4gz z8~&3P{L!h}t^>9N#P3Alzh-|Dw155~;ok=MVl&X>Jl=2s|7;d8z4_lEn;u(RYdgfq z6+!A(+T`f~Z1c}&5%Gn84z)|$D5Y_}S5N!rFOn5M{#lo#1rESL^HD_hNB^wRe9&eE zYOi+&fd3=0RZPzG^U2S{}Mz|Mz^s!6(Qc5E}?vmLwbx1Qe3or4*M-`G5 zm=9}vosBu)_^vMZZ{kRdgzaMY7@f|5C!z+?Q6t05$D$INtiwYyKgmJ(p8tU*u`6?3 zR@$W!j_D1Hz!B!-On{PkyXaN5O)J-vud4NgPCsB{Xz_(QQi1`kwr?P< z680nTqvC8kKNLnePiS+yyzjNVrCQ!3Ew7|i-X(-&rYP?@A@A4y zHhkN(yhpXX7%i`qRo)U)UOgf2HM_iAE$=oh@91}?zGbZPdYJNlM27)=+u7yq*7ClI zH2IsY<-x@?e_^J)mxR2(_u2G4pydtG^5V6;+pY345wQh-)S&_2hjw{~wY(}?-nsRr zzU8g*2AT4HLxY37?sj=6w7e|t1leB}Yk3u{@*+)nZwh(E?eYvQZ-SPWs^wu~Li4u; zA(HjwdF9o6ZRGu~g*DK^ifCb#t->al!U{KDXX%OD^zu`jhtg}q?7|i6g>=T}9egg} z(<-uF$jkT~$ER_ndLb|3lZy}S5W3Fx+iL{Cqe(@qR_!-#9&G5C)d`;KnDQU4(~M?m zmqH!WTaquMK}X#8GaB?uFP5)L4SHMtF&Jp&9vcUZJK$!~pzH9|3>zqat!Z$t20eDI zavv3hhd#i|!8h%;>DyMz zyI;$5Xn9@@aJnf^I`|m7y!Kk&Db9tNzqM;j{=6Dsb5ovl@Vo8uQnkDVTHa7C&#M9c zifFDK{J<`ovdy)y6fNv7EzB#rE--}!a`0W~8fsRl7cvr`4fvG1qh3gVeEuK)?CB=_ zIpJ&N&uQy^O1o6tF@2$Q-_qlci~gvF?vMW7Y18mhL(_e~;k20PpLCRR7~lRV^IPQ} zEkwNk&@S()mN!Jpi_!98tRZ2LDett1r`_%H3dflEs%UvfkC^y+Smi~U^4<{gireKC z*YdLNHJjILQ{J>m6gVv*@cVC+$}S;t#SR;VrL@R#T4bCSxx^-Ngemeb5vBXtMV8ef z=f#;QKmJBFifP+zBCDGs-w`6q*hN;*B46ZLC^mF=Epn$#SllPn{FHq|kIQwNp+T-{%u7+5T&mMfDtJe#efKL`a)K1iY*BSqRdPKCB zh!v{6g!ahK&riD)>zMwlY%vk8BfIh)E2k9RU$b5a0{=4nqXPf`a%}{3##t3I@K0`F z+GyZ9Wh3uQ?uAv#jb!Hav|V0zEw7Q5S3%43>X{pu@?_>!)h@56mUrwv6JLjKO?=T- zH$R-I@X3xTJIAJPKP|6c5mR1UEzhfE&ot%9j_G;3yn$L?SuO9P=|HsaP-h|!n(}1k zRo^aeh?dvr0TbT`T3)Yo`-Y#ss7B)&7H{)y5xZ|wC3Yo$JH9bf5kVH89 z59liHxU*i!Q}}#~PpP}=h4jSd6MX)~=T+PjQsR34D^$1$ZZ8^ItazAexbolYY`<}G zm8R=5)qdkXK|prQqLXPHQy#?sIe)`|Y@!^HMLc^*-@|tRSG!q$SR&KNLcb}G5N6X7!Ve0FZ4~{kEsr=V2 z??El^U`bQo&$T?Se6Y4DPvyUMd9Ag)8CqT+Ezc_--1nu@SB9BQTW$Kfw7mPZJcpL& zH6WXA%KJ@(nK5>GDO%pC5~jXuzcl&t3j57Xc`E<4%j>M=Ezt6YYI$B`vR}WD`f`{# zu*IfqcP%VM3%g4TyTcl07MQ{Ug_*fg^+HbI)1+3tkTiUD;ZyT&GM$a~8!?|m(=kk&Ux`;J$> z(A$)kD@GP6c6lFbd1Y&v`d-w5+ACiuW6GlwMPZMt-`n*4T+3S@W6Eow@p<*{Yd%-} zH5BqbwaZ(fE7N^E@;c7v9;zOkwAy;|NNtGpLXd1pl+eER>W zdlT@eiY06~sF8q#2?!eRMTrZm1~W+6W46$Rf=DR(GFuP9}-}<@vrZ&oeov&*`qNuBxu8 zuI|%qg;%M=8>Peh{xyw$c}93`HFy-N27Xst;qBDn)%iiA-%EQnf2+_4@2i!vy+>)Z zvuCrVvHNsjm*~QB)vGFUQ%VU7gTFdmgIARXz0pzO(r4`k%Hh=KJke&Nr4I9?0e_4arzoB0j4gg7@Uq60H z)vv`A|E{mQTe0=`@p!}J_IkWwD(#GHl$sM6L?;pdzDSdrJu6f~nnz6vl)2Da(%rhn z3hxgc-YYu1A|0N|-8%J(3QxLQKWwt#cSeVIw+_##!!x;C%QSe>-Fn6fFQmh}Oow;q z6|KD{cPm?iC*7@dE4)j*8vWMS(dairhi7uPVl;Tt-TJfK(%yPHyb(G)mk!V5Zk4^P z(oecuORex4>hS)l!#nY^)?Smlm8-#%?$!V+yvucX+oQDhmg?|K?pC}8@0idEb*=E? zb$DZScv(6;lNGL9uC`aYTWjC7(C=y;UMn45ln&42ZWXHVxV!bB6<7-$*jFJ_d813(^fP1KKLCA(PG`25Z|ef8MZIe+G#Q!Da%wQd=t&# zb+E#_L5KH=ZaUU)S5^I#N{e)10dVn2NPF(D$X&rh$B;|07O8!YXO(c#T#rolU>OJ|M|zn})Mjes}K3a_ya zFH0X>y#JCW1rHkGb=BZ~DICt$R(MzH@K$%y@Ox{UMn97S@zWBuy+Hx*z9>NsRtI@b7u2^kk(p9%0hz9WyhC6kTYwK!+Y`sKf%#>3WkS}N;-2&tcE67ed$dB|MUr)#K zFAK=3i4JRWFsBRDT_5MFQI~l9&`3Zwc&Dd;Ky~AhIiLNUZW5BI_e-V zwSZivfs~U2&sagG>L4#Wqp9>mFKSrQX#++q`)eTO!^qD+lXK6&8?#bs>LZsYNVIk>3t zh4E`GG#{EyT;iVawKr{U(J%${(!7gXVGA#_U{E4+JkczcsHctdn}CiC%gsS0nO z=(1m~vEcWB4)1Uq4c=p#OwcC`x;c7IgEvXQ3tHhltizkA<9Df!pUJuDrNQeU;B~da z8?D2;R-Z4~x>=Pm`esAN@BH&>d%q^p3r7F+mZiOgI=uF}J{hicD_Y~J!+TYOH%q`< zXoWXkhc`<1{J(!*?fJB)lMZi)2Cs*JmuZDJNr!i>4)4D@yt|C>8fx(5H;d=qw6u4s z4zIng?54b@(J#jc@15sV`bizK(h6^y4sW9F`Ja4FZSNGHMa7R$L2?~3*a~l^4zIlq z?5ORVr#=gymdqRhoV3hl1;oH{m6%-~t z^q2~dj{tM6z{+)CgLGh>bzml+{YDK~RT7VRy*XW5M}3Rm&D~l@O~&tG2t#$hkC5+L z|0*T0i%q!nNXQ$w!jR)?HAi3%GPpx`#02(Z z@AOMujx~QCz1Y>^r0Zlwo&3&9pdZ%h7oUlHw5<}thNWKGP;Zkm@k~@)RMewQmE!kW zVh7VxN~=vuarr5w_*C=9oowLLtD{_#PdZY+q{A1zSS8wV2U`%pu~$K{lPmVO9g%>2 zZj<;vw=8qt)loaDq1Sg6HKNza=WOUT@UWy;S(%kybp8qG*KPhP>Gjj@>giSTevRn$-vt(W#erUp4odmTUSp-#LkM0#zE-U; z)9d&}8ogwWpqk?X&}&<<4ZRxps-)M(UDea8|CY$~N)q~O__G#zH3YpnUn}J+=`Ab0 zp2lwFpx1;~%=CJo-THSA+cMStaR&z{g*+v^p{n-4TvYb zKQ&6Do6K>&n&Se{?VgD?bX#0fCEfb(0NvET>h%AnYUn5A?c`h|>0mE$%4O555~RG9 zy>6x3C)abjIhLz*6ZW!qh^h8c=J*M_ZgY!z0qAyPkqzBOLdjJjZ&z=xUf$j+H__`4 z;a`l={EMXg#>v@P`LW5_h50ebb4wv&LipZ%#z;X;_&(NzZ}e**A{~Ylg>OH&(-GaC z6Y+zkDiQC5@a<;x&l3@^B&S2>Sf=J6BJMUh9p}mE2)Ryf{ku-bw@(leLuRL=B{W|Z zMBKm4Abb$QYUJ;}cTM!H%3pizzeego{v43MG1zo~`)kRot@4+Q-B{6YpL$6poshrX ze`)e3b3CNxxB&9Ee7ueP9YbfXf^-WjtCzn{?^Hvt{QA&$r1Y8zxx4LYBjq%?+t~~s zd2*$9_EjtK-b~`eyJLw;JfZYvoz;jZb2!x;7l3#p$Jr2X6?$|P#LKA=a#xMK{js4M z`U!n^=^P`~AaAjdw>ql4Rj#y>?6pKrvgV6bk_mYmdPXCe%yI5Tnd1VGtn*kKl8u{C zCCS=s1<9(R*Zb>hM6XX~S?ERMsdZP${yBGrm0pR0UdI=i>DBJEMlYFTr<&se(5v2m zZ0O~MzN>(Ce4Iay%8Y+)A&HV!3<` zecnv3=l{^?C3AFDb6fy=jd{$5UK`L!tDx6Io2sW*^xDYuN)Y<~is=@5HGq80Ybxby z|57Wx4z}di8RhK8#` z*rMJA@v8S{pMEnk{bc`qDPW`;{0kbt54>E}|4XbSYtc&R|7TT_3I8JWi$*e;W1*Vk z0+8&pM{P*f3`(vFlI`4BegC}gjmY$h6aDkCCoS}%@n`3qQlBL+w$kfze78^j|9msO zcAwDbC38Ha=C}a#T0Y8#UdPaBtDx7y4b{`D)9aDxrRsmbg#k^>xSJRt> z{-0;2*Yn3UddVDJ)f^XqUSslX=(Pd;v#lsAFrwry}qAfp;sf&>-1Jh zuVtlHdR-#o+oAuO>DB!wjb1Xxmuij+K(DJFwxQP`D77l&D|TJ=^jh+2jp((e#6mCf zFOJ+N`(xqrR(dT~xP0w?+DtFUF^yg_$4WKF1)$fFkv8;d4W(8Ey}n#qJ-rH6My8jX zpPMq-LND_78(k*pr95Y)*N`5ZUeC`l)9c`m8ogwW@oJ6>K(BQpZ0PkDI%yU3TDhir zdZn$X5xwp#w$STx>W}p#z2X;I>2*TT>yg=JdaXL5(M#sYRC8Padifu;q1O&{(kkdR z{w>hUb>{&0o!BqOr62(6G;EkNlJ?3ufiqIQfnTt&X3i{{AU7W&?sC#%h23l}&NiR; zE}fSehj^=_WF~x8ak%=JPIMR$mbjLb7c>tl$?Tzr#4+2s+OgspTh4}Nc>Kr{T$KY5 z-oX2G1bd*8?JfH&!y@9P@!LD|q#!C^{;HRlS>Mk3PItYt9a2z#d&mW@g zLxMJ73lf)m$j~8};eDP?yOy<3w6_Qay@Bnh@a?ALWdp|fABbT*7OcM|R`Dn>M`n>| zX=Ajs;0e*n$)c4BS}Uibr_+?V-pcp4iB=})&HHtOXr80Qi+OjgiI>SHUUy11@n7yT zoO8#~d*lz<#1=>5QHG=KE(^%FedJq5$yxAGpm_zMIaHwe6rmaHmBb2HoezP)0u}b4 zhQ}5Z)9`q)tswQYh>37g0}lu<$K!|JH9TgZjKl+`hQHk=-#SW0<7F`yjJ5?s1QPHM z35jIZafK0y>j#E7^Bg7JjYxEpNL-;J5$`U;2#{CvZ>^dJD6+cFk-E6x`$7nGKX-rk zoo-s!;3Tn5z>5%VIwvIhb0u&D68#?NVU_5%ov6{<+1AlVLhg-MFKRNvy`j!T(uG}* z20KNibvzm1CtDPU>gG2r4%Nx8R~(9UO#2Sv<1PcKX{h!f?-e*74=}_=WWkBI0|9IY z`S_)7$BXYjdPUG(RD8ThIFufSX-006FMTOK?;=KN3 zuRkxY!W9EwJnHDh9&`xo04SDU@pE#5rFenET4R(hed6-*h0H}tu{$Q_=w&n^RLJ)I z2(6_Ag3FMLdQ;#-S`xuVj0S4m&}*mQxz>p5Zx)2u_~?<)kr-g_m+fv_aG${QJ>aPX zgJmei?tfYEGFVJK7?4^20fL_e9lgPT=+?adb`)THA`rrb3jEwkfI#zEze=IHq(k}9 zi^Qq&)P0@qq3$8>!R|prhYa3aV}124*k$Fevmw>Ko3T-6d^p4+WirUi+6(2h)Lmri?wZT^Dx^ZH*V)vgI|WqW~ARG!M` z)11!(&_k8r)xS)kp8V}_NApzGP94C!wCHp@h7&0!C+UT{Qe|)MxCuXawK@_fW zTU||f=fjey$%%|I$;_U>fOt=r0SUb0d5Y8HV~#fV1_dBbuy-80;|KIVPaqwWj@hTk z#PR8()*Dy|%IGa_Ua=C2_5?5DU^no-?Jny8+&qDgMfQ!8pj7sY`%NFQklTMv$rp~2 z`6%HHK1CfZlN-wSrD^^W5e+wIOHXM4Ngp1jX?R$^;8f9HceCijnjo29YQp5^*6(Iv zR*0UUm9Pn<#Vf7S;*?FNF2?$6;rZ7 zq+jZ){6286LCMx5x8wG$5Pj0SSd>R5JkUR0>C#{DRVhvbUmc`SbCqCb92@@~n5qOa zR z0mX#K?nRA`lF9flY8^?n26}R*?V6zCV*CD0l8}~6y`Brg;Z;HhCTRVHyQQ}-SM^{E zD^AC6679U-fK#5t>5Zc*PDjB{fzv*Y)0-Mj1sta#PNn3Fg2Z4(66F9$%v4!;nW)b6zn(8m9462T|QmYie-92+rms@ zRB~<-Y1_9=+V+9#1X^|OSG6r|S?(yAhyQ{uYw1|%U}iEKvXHA2>5Vwqb8m3M+&`0e z2d|3{nrPqLLU-9(tO4=}x5dex#<)QEAx_qLhswa4tuppi3xUd=2!yBz^!#!79Y}Z1%3MGzr=`U z2{LNtceF(1=zS_xR^zqNB2vfcNVXkYp?F7Bpc{tbymRE0bu$6eNfiytf*tt`C)o_*kyxPN;axxw8^LXMI@Q9_P4 zg&W+hxoGJp->Yu$?Mh(1>SBFNtJ(s)z3Q-aJ3Id|c~_T{|7Ctj-qm(m3CKMrM@bMh z8AvzzV{}q--!#~tnP5xzZ97}2S76RzuAl(SPmlMsO4s~Z&3!unz{I>^--NkuRXX4X z{lfRNH%CQ4?2(CCv_*EdwmUY4B#WK^?JOR6w_h<0jmls8H~FyJ*~3Y^$KETXYw5YOffRPZ=NB}+YwPTL**@gbN}t<&!MMb!5%S>N=Q z#`@Zb`bv%UH3+Nk_PwG$%BI)%(O0s*a}av1z9F){t@nubH8i!alcenKS5V*2rUp~SyZeHPbcJX0oCti%)CxP5W z0HDTydQ!gNbaLcb#WU9U&(o!9r3*PiG6qDI{zF#UL#?!lyXGVUQ(t-!Y39?$W zskf+&M&;~uSZzO~VweD24bdj5Y0q&%-Thzd&Fd>`N|ZIJ_L+9Bb}0es2my2iiaT+o z%k`~@C7MIzd3>~rSR$h1Z5|s-eZ?GwSae?0{-2@HRd!LssYXe7^AC~Ri`=5^?eZ@Z zLAN7AkWom(b?u1gy<%9W`RAdiPAUFZOs4-~3FT59ilgKg5Y3{`U&o_$B%tg-f1%HP zNN8R3)0eq0$sur|O=yD;feU$D<3FE#AvC#B?37b%-}4v-^YP_qlTQBNchS-w2svn> z2~BUV1s-Od{2<0EQYV{VT2yANB%5P0#hPdUo_~3Va^kC)1V9v#B8XaFzv!I6+i5O{j+BTKXA~GvFVHEsQl=` zM}r2H_Y4pHY-hc{()rPvSG1iy`-RGn%TP=RNiz#l?FCXa5g?GdAq=ThiBzE(saOrE zm4Imyk`@xFx4+bp>Lii6R72`96cb2Y&5;UdLUJq5E582*Ufe~W-p5L;zvgjb@oZ+) z?s!_ISD0N|%ERW{S#tww-6U!waLTmRE?ooERJ)Wy`GV8Q31N@ar;%x;UN8Gnqeqxs zxnTG#DKi%)9{!qddQ6OSK7-!1zz9uO`<-^rq`GIfvoQ!0)|?B`;Lm%--Y@_52L>3DA9XZk*KrKSZC|7 zI_Lja)JfUQq(3oJ?P0@tq|%^~`pe2Uex{RtGOunstM{o&`gSN5cq0J=z~b|D^XnI% zuah5Ld_Hzuf!2ueR|&=b^qp{W`1v_)9tR%9r|LWwPWsb1+zveKqnrCqd2#~UhrMO0c&mCkEy zZRwww-xfNVMpLGidS#{k43(}TU}$OSM`}yAqL}CdPvA}^@0*k_7~F$LEHSLoNm`{o zWH43wCllm7_=(=qG6IH5TWOW{K{4Sowoq%_NST7cLwLg$J!w_vIi1vI(y|IujZ0*W z4;gCQM8Htvx)0T69)#``&71%Ls>Rw$`GUa{c*NR-ReJPhwbB<*+Ei(ltn?Iu3f#?u z#rlANq0&@YX~DzlNa`LTv%5uYQD8G$6;|8ATSRRIx0q_WRMs@zP}7I9rqB0@<`o#G zkz6(-DdE2v;+v&tk70QRO(lf~IGa5j9^h2Y5_=IZyaSq(FE628OB^MB02HyqRSHod zEr(3Qb?f4&t-mRxtS2YZfEADPxz)O+BU!Dq9CIv>^#l>HlE_iQ^|&$QyYq~wx&(8t zYC!W1UfFK8cP|LRi?s(j0RlQ5>V7w;=Z>%0qj5c!SXyd;25cNJGb9 zwBtXt?NDlBk`hcSq#G9&k$-R+Bot>Q?`9kCqK#N+)s`VnUJASrC$|lP8sw)4*>FaA z#Q6A^Bf`b!f!_oV5BFBZ$IH3&9N>xeECKD{^bkQwf;!O<=#8F2ewK-c`Bz~ho?GrG zmnsHG#NlZa*5*Lc@PwB%%Tzx_m8tJwVN6v2j0e?rv-bORnOe><*v-c8R%Pl{6cd!E zBT}KTrcz+`Rmv9(mZDnL9+cqTuAJ5XlpRc0E6uZ3I$2h_VXt24>$1`qtfZ_;o}m(YevXmzhJwsgOMc7mX-lspwJ?f$uh_JR@G zX&zA9%^CrkkdS}lwWH((01&i0Bp^oNF+UX$WC<#X2h{K2?96|3#w{Btci}!ypJ^C#VETqr2!U3DS;-ilITEtWLnSzhM{%CCDIUgG(M^1Z z1a257I<2o0>#H7v&RCa>s@S;hg8ZauiTo|R{v>rho!6g}0Na^V7w?9P#dS`7aUI3_ zN!+NUO$3@RuH)}$aor#9exXh$(&D;L#MI#KIhixb984xbE!~R1$2u28|I# z1|c#i&vt8{v5@UYB|tl?jBK1(Z}&tk>%hrmQLXN5d+vYX97IiY}xS)b*9A`0&) zS&WQAt!(H3nTSV{<#r{Rz>abx5Qc@#Fu3Z%=2Qgjd5&POxT=;k=djR5a9s)XidR>u zVmAS=G-Dx;1f|ER%eyPt${E~a$Zsr~jOqy$KDnil zXWf^g-o2^nM2In)rTxb9mdkfyS$$v&|AItSHJUpfN256}HJWw{q(-;Nf z7KLZ%AN^3d&?W031&)$Rk{iBOvlKF;1cqXUHF|6ubiX6IP&{lO$c}vp{<{W12VDu?wp!M)6us0#C z6#0gK;{sk8`Ez0yeb0gI5c_}w9@mlbJ(w2@|JWy+J3${1X6S%9p709DXroWLV9#Q7t)kCb;WEYi+U@5Z#^34w@_ ziICs?#CZCKB!TzaVD!wvB&rX%u+&w<@tl}qmWQFR>27uQwr#<`vBD}r^xZlc(0V<_ zNbgdeG-A#h;9X+cnztL`Wr)u%kyF=KZ-IY6GxP9eqXC8V!ULP&63}e-Hqj6#1zRBT z`Ix{i-jblN6{4pb}ZOIog6 zZ=D5l=CD}W8dC{mLQ-k$$Jbjg$65o7u?lY1xKdXl7wRsM8z7J?c?7y&Wj^UZ=zXCV z#e6?~Ut*+B)Q7d}FL`%|_m|uL6#XTiqq2+b;HY4Y8`o_`d=AvmUo!t??JpTC!um_n z8r%M|mz(chtRAW|^_MBA#iqYBqQzEXw^ehF+Vq#&=##9w!s)X>cJhARgg)62Wz;9n z#&CU-pc%b3ovieER!o1SBrP%tv3Vr;CT(lB=N7u)>bc{Ik@n`F6p^s@jQFZz@i4Ntm=-Vcrk{;R3TBAjD zZE~LYT$R3kH%ZmEf3>&j+uMZ!Ht1U?^lh@LZ=D8xo5U81gFBp}@A_bUP>U zsN@hHP#?fFaSl7;6eQ6d=Re2sKESh?r%+cuCZvkwV@*<#^taRuzQTgNeh)cE7 z9eIu0*=8K&%&qiRbpl3yIGIctfwqKtZAUE z$x)K6**BQ(u%&F=ldp}wF6|etZ@hevg7Iv!&^Hav8ud+&`b6#&eKphgc2<3JbcWD3 z$-2IdnQW_X4)bxzF4h@Une3T@T5R-<`(;hvm~+%d-x&4vo{!A>`oyQT)7LqD!|69t z8lih{5%k+}n$z!o;SWs5hbBs(*r$tYJiE26m4wTl;w0qRbSl0#$(D*|CBuIEmxYRR zP?rrA&o0xbXwFd^DsoZd|LprW9}ml}&BGC$?g;PNhvn>hXJ9U7O;>>~juQTT2Va(c zV-q5mws?~rgdHnG0K4CHj-7HK->YtJ9*>i1Gd)B&@;BXGq zxfoFXXEx`s!JfHb&lJ_3xeWF!neC*lAYsp327C5dvDKcXOXS||D3Duvvc~qTHu}}o zJ6t~;`-14Qi>30acd-?J81?JHSgv1bG%bQaSKnk+4uJqCM@p8i8J0a^s~INBsy^#r z(G1_A78}iQc(JA#%sFbK84xexB+5bHw-SL(bO_pjJTG4H7bcj)57+hzCr_r-X4eB} z5iSx_|9n9$A5!h}a1!wlM1q+5Kb0hilt(fXLlYl2T#mkiIS+4;e_hMJ+^u9MFdjF2 z-(iaPd?bz0Gz1yMs^zBcvQKzjyV$2V)>$ld&K5}V$?+_q)4!lhh$UbGAiC}AVsacI z#ORmr5|iVYC{ID_G4#dcc#x{W~(&I>j z5_1ql!Uw#g6Fh;jbkK#2gQ)teCjGn6Ytz3!5dC|cQ*@zwe~Z+=e`%@qZ*NO$|DG?b zouPkcp?_zq{X5IhzZLcqZ7qrZt$hxLi16tNVf|Yocd(s6uHx4k_wSm}BR3?f+MB3^Q{MvvQWu+rnn=~jIg!GHgfc8j$5??<2x%<+;xw+Q5Rw-xkQ`^*27 z9@)2t)1%1_QRN_6WvZyM3VO6@rOHR^>#g+oPtZz_Ncw+?podBSkGIm}@$CY+ciTw) zf1<|pFxva9y%Fub+XJ##?0t~Chuc+q-wg<;!v{k=@n2rp`(N+1+WSL|s8D!Hsnqo0NBMIrWsQ{pN-iNMOw#o zIKJ85ie=bavBCwK6*K3k%8H3Ka5l3c=J@v>Yy4aK7Q;UN7bkm#f1Pn&nKUv57u4VAM~m5q~tM^S(5vS09A_Dn5oifV4Rz zwgO*uA@1~aIi?ztFk|BC%V$W6yY73pe^d-yoHuaw2JXVt-v?etO7vnRmB44-z&=m$ z*_cN!_68a&f!pJhF0u3Rrl5@y*sGLmb4>1orTCex_RMfQ)3qpW1&uw$<=DaM z$2tW^J5p^4cW+jTyS928)nLZH0j`-S>qu!@2e$%vW}p!OQyL3)aQ+toK6ME^rB?gY z`3T3_i-x;9U(&dsF%AX0$WzSf6dW^vU$Ieu58^7pPr|JcJf#b6R>98`;I;4Ts)4`d z4FP`%t`h!y+#2CiT8H1ccJN1*3HX_~O87l+YlKf}9sXySRt9-$ivNN20{%u^CH&WM zYlKf}9sZcw!C&yEfIl8r3I9>t8sSq~hksS=;BS!PvrreGSr+l3v<`nA7A4ezJ}cG; z{DZhk{3qeoh(D!u_ycPPe}kmYLY+RdEcBtY4*xW*)~Pvvcf2L=Ux};4e-Unt_)}Vk zKd*N1r%C)D(((Vd1%FEG@H^KI{+3k&|0TFe{O9A=h(D!u_@6;-*MdIdW()X(ah34z zz^xHJr3+dL{g6K%u&YrC>mB~en=<5#@T6RZ! zwb<%wAY|0nV=>}|zK$J)s~}ixAKV%U)|Apju=fC%2)5U;whrm&`qaiv;X3-%OabyU zTtTqdy|}9IK(MBiCW7rFf^Cz)>Iq=no*Yx@q7iHg*2LQrOrzJMZwPwz#nnKsR3z=` zbt~TJ^qL7dt_i)4N_y?k>9xs1FG`brBYHU|C-V-nSGR8wX}17OBzBC)RkGtz+^Xb* z`D{vQ>K_8U=pTCx_8}tt6>A0jAg&VrB-|R|Q@S?nUMDFsA6H`cECV@+-IT5+yPrW2 z$DZAK|9Et{+lEG4!-P@`9Dow!PS^&W1G@F}h1UrT@XFVQ)heu=Au zzt7M=iM^E8;n&iiJ(ec%$5q82wS4{{K2?N_;=ve2%pkA{95|6UUVKBF1Eo{!f%0FBYaBh@N4PMzPUuee;QW_|4G~$ z;Zs_NUrT>>#j65-5LXF*5^jy~DXqh=r9az5;{V5D4gQa~HNvNKZT#7KFAJ1^Bufc@ z_G?^Kc;wGg+U(EvkiOn~81CEpvp=k;-kwdOo&bM#7_J6;)(^=rd&d3Q+o@mF+Mmr3 zt&44qt6)g%wYXIqNDdUGYvbS~gTUmIU4<*T0F4X`AQynrwRCXSAS`6>0BHW~teJvd zqj5FR>s}=7>2(+0)Sg~rg#gD6(gZlRk6D15Qo1(u$`vj}tOr-3mm61={zNZI*OFdS zuymvvdhJ^%==BD!26`<<(w<)P@kXbYyN3S%+2@2X9Kcn|*IwMJ?IZc3wC?}YIwBe~ zY5r0~|NO7%0{oY_O7Qz|YXnbe(kH_I_Y3ef_5W`}=O$UcT6F%{rsmGyl+pz)$(`*; zW3%Q_HS%YFz?u|$_UQh4hXsN^m*Z;S&m~CO^XJU7M*j3c9LCn4wTx%)CNV$*Z^Km* zusv>#1f;aipHsCOpA8BM@Lh40;5*>f2%ge9e}uiN@%XF(d~HJiCtZDgZBbv8*5M0# zRb%)oo)_?gxJvvd;ns*hrFHnV9A9oI74R40D&fz#r}MC9qc?;%boBElAqS>)Uvv>yw(s69UvN!0?f{N`l>k zTeX3tPbjU+Ywh9*-uVK28(by$7PvKnr}W?E_c&=A2jeQ?-(fJ1gg&Kf!|$s`36#&| z34Z^ItBNo2o6=@}BNi2z-|1KxQ9j5Hk_G7D37qa6(gKcRY z%W3IIHhsvL#b#$Sn)#$JDuyYS;B&r3DDCx+YmlWq49+aX0vvz823{(X&2nx(KxYxW z@CSiTP0aTC3(70fDly_jK^&q^|B~om0%}VQMDMv4_@GAmG$W7o7)lieo8H<1Q&aR{ z(K1T&ID^G5^ zsGtRQ@R;ijL}g-z^9n+`Pzl6&yQGzS9X;@`)q6*8IJxPPf>y{j!yAanM1-_CWkXGI zc(%+t42JQ&%!@Yxn=Cf0Bh3T{`=j~0*qWtiDSc>Cd?xPE_DTrzTbX#VNtt*iDlRJO z(W@{y)RI0fQCe+Mipx*oM1kgxsi%P(yRHtV@=8Ma*@2QA5Z+%`3HC+@<6DI&T`Kdh zQ-V*^wjoOK#v)wepi+3+8z`Y2n%EZ|zChI_KFZ=xPYRUGz@0zc87P^onTL zy@+h{%%;XjMuUHKe&zf#GP=(R!R6?Mp9rx*CHvXp_Wz8U5x~hve8U^1;|})RC1@Nz zH02^WaSKT*?NUu2%CKG;S4Yj*q4>RtF*N6A*mErK8EU=m?X#HBtfN%8V?d^;b=gF$ zCoUHAo_wkGtz>rs5C**Wv>CzhvSp;l~Hk#r%cAlX(Vvyeo$i)}8FIY{Or87Go?NEXtk@fB(_FfFT4 zTkxq?Wc+uP8SoGGR#+P&_HNWM%_p!A#xCM{6@0u_7>5_LMUtf;@zz27uMaA0YEqIh89&s@sT$* zk>$6cKuY$%WyF#ZMwFfTs+H@`Lgk>Q1O@1 z@(ZP+Xf7_|O<55KR91>h1VN9Cf3LSp{V$2FJZ~Tf>rGz2*2$>Xup0>ntjIw>A>^;Z`=FT8#e9jOgLEDdo`D1(cTA6 z|LyiZEb7zSyYnwgd;cm?+uMWZ{U5bgk$VE*8wfgG@e@wfI+*T^=~%A#-RP0-c#>mZ z9iKY^>x9q^dh%}I>*@6M1Uui0VVj;i19xoz)LJhmdlQKn3VjqywnhIAfyuVy=!-)oO;{Z0V|DKqR*t+F`IQ-Dl9!SXa4=Z&HDF4kdAvMvN8u-KG zA5o?R?ut_a|Dn~*tCcPX^Y2EyK?z*Oai!&Rq#Ec-O2gCTWPU@%f2mTu6&5r7;ST9AsIQ}Io#hY=`-ob*E-oU+yNgkXArQld7ti>fCFwmJiGAB7i z0XG1S0);>vH+H)iMRYnEO&^{+y@B)IRv}MuMP1LP;}W4xpMWg4SA_apJ|Kl;iUP3?hCM z2hH}Kz+0&V(PgB-RIcP~C*e{Vf4#&>7n%<*H!vOtP{p$sekXMmK)$e;4XlHovy&GuoGfJgo^i=F20IL$i?Hp95J09bq1Y~(w zyhuV4(i1&YBq2n6lbS4%gk+3?#o3h2-o>6iAQ-mfF;NuKoB^mQaqJqDpbVU%djFve z3CNIu^{OI+GaLexWr~v>kQrRz8C=NVV(Vpwtndt3$dJY6%M2i}YM6++feiG(u{mt4 zc)eK~O6ym$g1;8gBx+u#ayPm&AaH7KQ~bQ$peC9Zj85P$Qb5fNqGltJ1T`~UNM0n8 zpk_uE_?*o~oz(fPb(5<3t9~;{#`@%cgs7SP1)*|{4ug22dkoz_J*|5T9gqO8!aN35 z6Nzh0?ejQ+5$y9naCpT38T))<^#9ZLdE3v`*ykPCOef4fBi=Jc>YeE4mr2PihkVL@ z?oL2lOOKfd`4;Y0*fwFRHNR3YGlDfA18a^`!61sQP^ZUV*Mq?ZS@UVXkb0Y(SVRtn zYA=33gj3j2*cvYkI=KQ=_~)gXDgj_*<=`~_$m}v{Q*8SYG_yd zf$p+68EA_S(B>oE2Pl+2z?iChfZp%{(qmX>)JkTYjNM?u-p={2zbsDzW|i5MEk z{c+r2b-1I{S2|e;N|B>98hS~Tyh|@Bc(N|6?3EdUqH0;r5UTYWLs`y{@y4>;+I`U# zhzV239A_gb*AYOx4wH1Yb>8Nmd`H77Y_-#HSz|^$sT&i9{#kL%Yq)+)cYrG)MXg41*Cs8>@nHfb^mA? zfPmLV|0o)|guIMAtq;C|O%r$@Bz|-M=(S_j_(xd+xvKo5_Vl_I{?T&5LDjP(dHMN8 zfjQ7u{iBSZ43f$v<}{dX^p8#-)$L}Oe?;GBYUjTPM<$-YgbQsYOB;>nsxvMWxW|l3 z@=bEaB@L-x6+h-qyn(~S0k{fY&@LGLu}bZM=({ws4o2U~alV)jlt;(7$-92$n7|oK zmLBq3T;uUG+EYMnZ(=;dX62z7II;T7qO+k)cxy?S=x|Q@mrVa$nZa?1P>lHJ!C>uo zoN(vfnqCOZ%G(YSaF z#>J$kk~PGG0(Ic=W@gBk~au}Oe>-$!#(Q@PG=UeUCsj_aIkMKQl+e1 zq-Oi5WH7Uwt&$J;XgZjAi2dB^L}-R%&FpgI@by21p=OZ+UMMX3YjU;-R;1KsefJE5ktn& zd>r`G5kv3dcHlC79Eg~Euy;IL{yp`tV00f|I6VntNciTD!?ZjOKXxb#1OfD&vtyr{ePMfM!j1lD&+s8?lC-G zD7^j7@CFi)W%hGK)D&=TY%-FQMbd>NDX{{PL=PWJ?HDeSPd^y4G7m`vDG+MB zbUOwP23glmA$PUi{=OHDVearVQ4fH}J#|j}A z8FJZXnW2y}h(z4%xmRv|1So9Lx&wrE`0a3rTgTE}lw5n)aB-O~UgxdixI z>K@Ja#Ni?s+)?oCv&+;s#;vp$iHgOm&gFtY~pOy`u#jz%BkgsP0PjCQ0_KIVV zR-O(a0pZ4Bph9k4DXAUwC^!2<)*u1p;UjKazq2aXhw7@ak@9_kN=6V7X z^1OlZm5AXwCR4pU-ny=ks^0o7spJ!=c{Q2zF5Uq4W&VVMH5+b%MeqdgL>KFoz+ROp z=*3!!J9t%enkmkN+0Ldtex@>v zNr&NNMjzV4aT2j*oQ4YSD1idS8z{(80)xwO7zi~6ZtnO)xK?`o4>4*GH%Esaz7Ah`X7c!q%joQ&t5?xK+aME0nQkM9D4#= zl)!YsE`ER;>&Ewv3j{dR!gBJb{wZ`}O=M2uq%OGLz#%}SXI}qHbYaKlam_(NwnE+N z-K`ypE$oTK6($up>;W#S9k*fjz?abgQ5DE(ijY%;Wqb(1_@R6%QiPQHGm?E7*~9%5 z1zpX^8+6y5_qZzb zO_ms4(YC6D{5!cEc|MrIx}LdQ=fug8T`>An@gM=pg$8yp7*m9eTcC8}!&L^{8VuWcj%B0Xr1aBq4@X@Ri{QVt&**=jf$5N16%4oFk3M40DcTZD{Dk znhpH|>KUUo0nR$-2vbATj5O!yHP1O>qA`X~$WkD1R2;0?(P$c_IX!{%o>th`p`xyW zImgT{=M~I3dIAS&Uh#6sjA6b}q4`Fdi|p)a^{0aQMn%pydf@TPrE+|}F*7jXl&6(p zzLAEor$4JEp7~dzVPK>AD{xgJ&R5GgNQMxdDyGaaS?BV|DRVdG%<;>@vs^smD@Tyd z#;?%hpF+CcQ^Bnk&A7XLQ;Ni;6c_IOW>27r_Wn*pO`I%4B(jmnX5Dz=X)53ePNxfN zg-3i;!AF!~6W`V7ug}GF>Yeuq{RRJ?J&9d9z!uCj=mz(qj^&tA1Y^_V*vqqcSBI}{ zp7|F9t!e!Jl3~0?bg;Vs@Bd8v-Z_Xop#Nv**Xw;+jl4I&wmsTF-YD-?kN2cJv=!VT zVQ2rrF4B?YVLsnr6&=)89=QDVttS4zN>o>~_&=&M#{bdj!{Yz97~}uygg!Z6KR-p5 zPfX}5)O#}Ritlf32;gJ-AX}Y2ScT$pC4rc#Zpe$%N?|n+Hwb-NPCfAT0ONR#=`b5Z z^Jr1ThHP|lbwxn)4Yi*QXa#^^N7!rt+^-nEBA~v^kYnh-7t`Vfb-LilbO9mH=&kKX z|IQ;M*$3ja{d7U3`RF73jFCDN{HcDuz`dx&uwLMO$g(y|&ErI)^*E7vy}(U+$#tBE z{;;xFULzQ&t~G%17HbWD4r;Xu24>2#h!e<2>a*C4k{Bqu-+h>S7C~$zx9cr2Y4j$8irYVb3E!E(J`xDZx98zBq}DC zSC2;>o`%=8h)222m{T0*Ie?&<0Q^(q>1RJSaFWNPmj6m)%2V2UgXJGr8;{cB2Bs+q z!~wyEkqDH-c`5YL>><|L$9Cp;A(ogMgFpgCr-)9a#miX1eNm~t`x3mtLPWmrkMmTd z^JQ*nzLsge`|&t0n?eS#((>^QX};m`)mD>f^-?eaZzQA}Qu(Vg8jpDaOOdcreJxV~ zO9{^1!`}?Un-mT%)puR0Zy4VAPT>t}kL~#|l*ekIz)qG}M$rV=c<6-O$Is9`M&`TN zAb!s+JbgHDZY^bdT8sgAvu@%oRYbDbj*@|36uOGum-(0%`)p!>O)tFu7wN)&dy)$S zcfoUMfgGfnW;NAG!NKl9G$IrF+GhOw;UF%za0F;MM}=E1TzAL#C`RRW;gMJ{=yv+t zS$Kj~vu^JD_}tk(cOl|2e3V-;k;d!7&*l*t-^5aCj(=hqT`DG)z^n)15prO)<)Uub~)aMzT(MzT^%I6cM{-laU>LFU%@ppc9O4E~^Vh59UxYz|jcW zC&t%@2$WMH-J`Nn5y&#bp1wdYM_w`-4X-^28sa4m;PR1Eqq zmsc(IT`(hyRqVBDyMn9CCODoQE<= zKZ+#SG}Hy)}+h4!qg(11!9cGZr)ATu~Eh8C6-Qj+duMKXiSC?aHN zT~s%_N4yq>mcDtZX1&){*@CITF)^w=y9OX&MM-99-CY(NzsI0`xgBj4Z?=W;YT2)+ z@Um2L9jBx_tgNGjsciHrUW67LjV4N#iXA0=fPmdMPhb%;Edj`>2{=^epj^D>?sqQgRh3+0eXrM+-o)P~Q1E zEr;q4(q%Z=bx2?}C_;p&$(NE%bN6F>DFgBBF8S;(`Rr~;p>>`@^XC4EYDrAtf?6gr zq(69OGS3j?Xj=2A0Z4ku_Q;%syHR8jB@>}Z(JZ!1RF(+!F3x877MrU&tk2laQp6* zWwSK#SS-aub^EsPB9g^#NEWXW4+V?gFtWG`=~wM(1b=XSKiRAG^%V-Q#^et!*U3;-R7YBj*$1VJUSe|N3QgA=jbhtC6QS(@_k4y6Wl88)OCyTP&SE zBO8s(X3;W(Rc*jw$wh`-_HB`$To`%VmiiJi%D(FlQ~tjq1#G$KT>fN z(@XY<%*hD>n5qntg5l2ujaa(K$9+|W+*JL0BH=&vm3=1qYUG5MWa~c#qeBz;TNo(# zr@`nGBB>ymh2&w81i{=nNbVC!kjI^ej@enLM7lDChB~#e4h@VT^PAsV8U!(0xfrI`K=!5B3`2JQG{-orYZIQ;GZ#zupO! z3?4W`0Gq&;QU-G{+N(#Sorp#!6W1a~qiga7%ycDUgbtQejYccxXf(_TgzH4@zJO^e z)+7DTzJJ+VO?+--!&=AZ$c~QcCFMl;fh5^ij3+^texMMP(OZSyh4U$;WD`EDH<-uh z!{fL{jEDP{02up3QaE@1(dab7tFsO3$!MaqZ^ro-KGW~S2>gV)`mG3E0fTjM{_}!N zj=W*UpXTx75NU*qkE=TFO7&lhNq&50bw57NO3&tQL7M-57l!Sa?7zRzQ!$m`s?T%N zd`qcgX8MEzxi#;I{xk%))Q9SW95z`ZViY{yjJqnZ%MMVWu=~mP+ zl?aTN<@!syl`o0jcuDk@CFxeaB=X}Wkzc-~Tltc>fu$EE#0{*zKnteQE#9ILQ)zz} z6eS+XqI4^Z9>OgZC6>vebSsN~C*Kk$wZ_xAN`f@+}F1EK9fYZBzO73jHnJ%C}eI7GWPQE(R5j7%6ZBBZMoOEFmWzHO#Q&@Y1r+_6r zlhVlsihOVu79!*+j)=&3|qxoTI5GU{V@Ctl=pvC%R z;gL`v{yr{WpBy|YL?nr-k{NS-(yGrarTQy)e8NkZNiL#C;j?`R{Dy2&>`et4aXABAuJ0h)uyA-*}fwp)s5HVWrfpzfT z6^IO$*bQZHB7>7{kr`kFDv}Qmv@m<&?nIR`U1KOXG!|st8^1?HK zFe!P=B{J}N-mpA@BBFs$bCR}5|%z7F9{2} zEf*H*uOuveKob&{nMJ5n6Bgb*Rbjz;LJnT^V!sd;?u`?oLdx~^i83hF-z`2%%GOtn zkVAeLGFP6eqP=FcKs&7?rmC@UJlJM2o_O&sIFbqYCE*8eG&(3UCL;+K+q_KE6R4nt z@^Q3KK8_7TPRl}hPvAJM$49}T3Gktl?0slbLKNNNJm~U=Wvx8_ik!bvS9ILo^$QHQ z`9cwL$@LW-BgJz01l@`D2JkU5dDLN_kz>_MoDyKPqyrxjcmkL=KcCs^y!s_MR+cD% zKfR80cmrS20*=OfT?bz@uY@W*T|xy|*Kv~8b^NSsI!Eg|enK-~#kN}3bv%Z39ax-K zeu}n0db}r1iCkO87tBu+ACco=d6HXI8cz^OT^_{pTrBQUkdzh?7H`Sc*Y+W-$}Ymb zKw>6b=(k$UFKtR8F~GR$|MK~zy=x5fOIsG|^Gh*<_4%d02GPAXzqF8N)8?1H5^wjA zh+%$dHzjL0zcf3KD;BN>a{tEs(%n6HXX{vwZf+RP|KBvfl=oKn{F427qx6+8L^503 zui!h`I@+%wuEHIIfO3>FtVc}osc6SkA2-oW8~wB|6qq*2*Q8C9a`6YD!|URZiM;~p z=Szd-E=R4f)fi#}vDZC9Dyg9ozz!kk59*4qo-s!oP%IuF{?S<98N0lO4Cka1w>T#Z8L!uvHa73t)eL>(dbT7bH|3Q&O>fWoJMQAeh0peomz zo2X*tssSj3ZKIC%6etx{0q4|1)wk{vz`;}qlpK5jzOc#srS{pz;L7D~qGsdw6@E8> zOL_R!l>c3YbgTTol&a(Wztl1HZOQ+moc|lHQ29?}Vy~|RA35+Dn{|#>{Y4+`Mv{WAOYv}=L8WGtS3Uov5YNB9M)`x$-`obcSPV|4y$^PS z!$ySIjN0R*%?Rbv%6M+2GQd_7Y zp5#zpCmel=MO(hJA`npvO2}d6GhX6Hrq|e5h~S3|`tIK>R#tnooh-7yWn_T_$Go z@fL~2%}T&eSQ*&a%tkUCQ|m%k5HX8hZ5D;O+X^1!r^OkV>!3!ueCs)!K;JyM@nrzh z6S|PtLwyY;3F=LN%I9AyQsm}qn3@UTLrE#R7^vx>Y(@7$0`tvE4#uU5t;;vosR;~v zK=oqF1!jQ&1J5Ldi!8vvN)Cdr47nY;nU$Ura%;<<-BN-Ap1e@sT;fkosBbo1vqF6p zy1GJrlZp2+g5x*rR5@-7Z*8(F{|TYK@l-x8)HlYK-!}HiCB6x{NEI4Cg&#t*Pl4_L zHJjneY21nTrT}*aWru2J)1e$w+etYnT!BtQllbco5sZpr0!8uwLEumV{6keEaOxjw zZ?y+b2R{)X|4G0Bx{OLx6qn;7L30>EJ|1R2ZKs~23Y^pj*=h~(Ht0W|PtZ5M!l7ff z&raGT9A`v0tqD$ngku&r;wxmuMa&&~!~+~z-btZgZ224Nr1DqjH%%@YqNu6~#MQQZ zJ5@gX)T!+?P9UQ&)Hjc0CpXkLhh)#mR(&A!j+DYuByHh8e@kuko3%D5f>7Tqs$B{7 zbdtAQWO9S&8DCjr6@)gnw=z52|N|g zQ^5eqDSLezZ#<8duq7e^t^BOKbFrE74pKx~c@mOU;P?E^Dt%US`jdnb4y8OrJfRe+ z$PoXyn^HxT>RX80jL1p?5vow%B+6&k`K#{lXEdb#SN+|$>;m@pRs_7-{(i3F@Adbc zOaC|hy+p!^)ZYgJM^^N!=S85_Aa9vO+WALgDPRjlnGVq_a=Pf_pype!aswN1J1ICYX$0Qj zdu1odI&f41(-QZS5YI^@We)+JmRKp$xC>=!kN_&t>hle$MY) z?0UKbzJPHEnQ7aCM_+~^#~#s08k)fAmt#PlqngCNtqg@6Yx?qSSDe0-7$2}kx*jd5 zYVS*_hcsec8S#>gDTqW8;Q|>+^dt-MS5VH28_fH+6D>>%^-CmUjeNL+x#slDF(56IrBZbza{pm|_`ZE7Ssy$Mtd@1dHnWxYOv?C2$ z@ufgMGV3Cph4ht3qgk0(BAtVDOQds)ZanZx}pB$o@VZ5Pi&EF%1kE~?M9!aSsdQfiCfCiV$1Z6D(@zL9#YD-;H+fW z?Km#qKqZc(IT^Sm&=bUiQxb?D3b0#e;D-zNpbLN>Gz_32lSRI<{sObpU`G*(t}q? z`Fxkl=eyt=c$c;tYy;kzyOCCqK8Q3}nRyUtv@7j6(%DEKM>-d2xQ_IpMJAerRY-v} z2hxQ|J76Dugl-_Mx#BP8xBkrLcuKYuPut-szx8Lf!_#HrX?Hy3xBkrTkeegmETsCG zQ2$#In6(OV?1S|DSX{9_s%CT@Qx(e@fTgq5c&l_0KckCX>{E zwnWgJ6Hq89o#Og@gL4odVKmqKZ>aPP}7|ya@tLgS}&zw;TqW2+;8DTv??XRU#9Qy9pQBD6bLfo7+mQ zFCjD_p6ZDU4TzD@)dqd@d<5u`+f&+Fg>T;;tn&^HAWy8fP5o-?hDEMl=PwBO)Qu+o zIN3GtLehwAO>tuuo67*#Mr=&*2AJW+upu{E`Mu>iTQHgkM&ftQO_AwCh!1)vjNg4w z<=^6WWlOa_PH!PaDxc3Tw1pZ8e;<*D%c~9lRJbqN!&M0s34V-}&*DuA`@KFttpr=+ zecqB!l-S8krR)*ys;)CqeJrU4?fGzlEuCu8o^p*|g`oj7bnKlQ8URZa=$#!JK!ds7 zN@#$KuF0VRu*aPL8#MkG$=3CWgh8bC#oeH`&&Bmg#Qvwq+P--_64Op=;eV=Iti?fPYnC&I;;LojR>t8`=rU2!S2ONG>^`;<+};L3D;Th z>lTLJVt}by`Xl4VH2&J)mr(=!j+^-z!=A$jNuqbE>iLrYANVC}^veqk$ff?7Q>EWB zXRW5kR0;AwV?*Ic{V9sbU7fw@Xa`l*&f)%GGfh5ef|kB8|MkC-I2H*%-?b`!y8d3U zMr*fAO4dwN0AkhNUvt^Ozbzbo`@akSRDz0sE$qYQrz5l`oZizkdY4LaOag$adq^aD zmuvV&(686k4nMDkpK8Cpp7VF{i;?&hZ%Sf`&8zfUR7*Ps6@|%#u5YA$)$q%e^4cRJ ze%A6j{mUf%FN#<`68#TdW0sd7Hlw@^TL+LPFla2bee-75pnc=C_No2x-zfI?Tu4hqYH!ZfyuFNt!`nE^rfmdIr$6jjZy*FVk_tP`zP?)3#o3Y* zg#co0X?XlzoYeLa^%{f?6`-Pg6=k?FAE8lK$jm!75D}TI3=J`BgP9 z-_NeRV|7jH=lD0VEB{E1$`|tX&#-I%Yc;8V8I_-7TmFsk@;31^Xzz8Lh`k92t@4w4 zxEpl*?5oH~@RQDv+Srp8Le+sb=8LvzZ#S&Y#F1R=!};gPQ1bPjGHOS<-x|QP(cfgl z*hf#X81&C|O5juSqtib;gRob0X%nG}OiCK6+^D9xeoj#6 z&_K-c<52Otf=V{~m&6XAN0sNNVzv2_#sn%xJ4m-S=O|-N>uxMk#+T{*jz$&wU$}kX zxB!vnK}BIJ{en#R=A%5n9QEq>+`F zjyO#VCjEG{^g3>%FNXL+JX(EQHGbEwTSh#%EDXbXsU{5dw$feI@X+3Pw$W#8 z?>|316S2JyP6 zZ^AciB#Bw98PnbX`EeK2@2&PiHATiv^uQ!GiBfD5Bk=Xp{4xp%0Asha1O$BK75WyX z?U`?)6zN+vz2Z)QE%-;$>aBJ=Ri%!zCc)k7bB^`(_08P=M3SFabN%An^s1`iA9Uu1 zqwbA#xfjxbe`uyIKt^+oDc%QAgSXGe3m=dN0F7AF^N9ba`me$tsA~vtPdb2Qo1(DtvJC^>u{r3H-TekIu)kYc6*SMH8nJ7VgGv1-EL%mgder7#% zirtgBfSYoy&QM$6OQk>;60rnel9XkJZEebV!&kCnz8q6l`nICwr}HamZ>F)4rkG?ELvOQSs-Q z%G@5DUR@l2UfuBT+HcXkRSV**@^sbO(+mMm|(;NGZtzdH+Wki7guTI+NT zK1#@m*W04@L)y;2&K6;{J+6-9ik6?cNm7d|1*b8m2*XG|!LNJqZ(LDi*+ExGEsP0udj`TR>~ps`;NEe$0+!D@GH5w^ zytj+D4#?$gGU$so0izrZdqA36>~!xa#F21&9rG)KQf^N@$c#8FAwnxUBia~}H<9al zajvM^Evt^wtB%DLQ4>2>A{Uf)&cZHp%mXkU8$c=^;Bm~2;shvK5w#c(9-pkvtfK_187_ev(^3P`=&HOvw>~WWN_CXv<#BvPzC5!D>eB(Tt zn`ZrxRtwQRdYXvk`J8gcC(jXtn!S$bmZw#^%sk4|>f_4orJXBj4X!tETp&~nk_zz+ zeC;hPIK;J+GGUY27J2qYyTTmHbLm;K65ztI4D!K7BHyYHB$gq4dK!u>A&q{V6hT2E zIOXhcK9q3k5gah#yaOFH%~Ijqr4+~t%!3n;N9vCgwH-H$$G72|WLlDa6W$Nx_u6Kx z)<%(Pvi-L}L(i3mW($U;oCDqW`q7W??uWC*_8}RHki)6ER{J0n0U}9?a9kUAN-09V zR%5mxa-FqA5#%vlVj|~jIk*CDah0h_P}YQCtvv=}Bv+2i0%5zxh0z;Gw@!_?bK^6iwNfAL!< z-eR=KWq*By%MMX*8{;h;2Y!2F7HP>b?YUnV^11SvC#6;#4x)zTYa1av3xCS zrl45sSD0e8FDgc~!j<4ap0){n4>2GOtM^5r-wOrV$$q*CJK=UG(v~1e@Hd=%dXnfr zj8oR;p5I8^+v{9mmlU&<G*!$0O0+3t{LNh1c&Hs3`0RZTkr$K}9Kg31n%; z!y8hwDkE}-DoPKJ+{6zbg*=NMY^t{BEbu8pn!Qio(dk#mydY&x^R+HqW??uD47J55 zMjapL<3qAwNXNjCPI4+^Dt2Ahp1%Jd*wc9@2|c!_O=k!uwt9&$&(q%jotc=Y9mJK{ zp4JaA?CFqorLd>#Ml;Bp;mUv*hCNL`Y1q?Rnb)aslzzrn|zc7nZVqCZa5 z&S3ioC`33Ow;V%Qko8U0ro$YVOlclO#W1Dye=OdViVlnVE4kwj^;v!t1@4wKr-!u$ zCxoKFM&@ffrwJP8t!C-y|C>^jhj0ZPuT(J1>5mXHHmCK44(R68spWmiI*?b9jno(h zd$R<4^;ZS9CRG4)ilg{~v3HImW3I5w(kf?2FjpU9bix_T!Bu>_SqGDcD<~jsq;vQt zT1wkTnBQ8!c;7rWp-Dfn36%Tu33nNYLp74MmP4Ixokmny0NWlfl*CtI7 zNY#6h8CFq8s*XbHkhTE~gLCH5H{qo&wRtd=IHv79BfHdr_+SOehU^)K3spO&tyUjk z4WT##kv<^4AD+W}Pu3*gZ#Y*24kJ4!`PwuRJn2gwgk!BYomz$dC)w8j@D5sH-%qGi z%toW{nGlQ-OlX3qFrG#*AVNZpmiGl{00|(096wpmAoPW{kjq0_z%RrYy1E5dFg7@) zEbX}4+hz2hWNT)gc6;krT|lO0=wYl1(%R-m<6QOSxmeV50Vi7?hV9-K(@KCES&PjT z_U8fwDq4J*Mx)z^GOcA9bUIXP;0_F(02;LhwtR_9C2EkhvfHWG+VDMw@XIY+EBYRR zcf;}oLE!zzY%AXEaOx0N1~LiWk`Vg&!`oKoQCVghl_4>S#Tjt1$r#wsb{9ObNsW$c zk;?;^U6Y5Q%a8L^J+3Wi4q-2Z5pCu!f?wfNuG5zj_emCwCAkDIz_}f8;0-r54BZ&U z1~bs52@M^(OFNvTcVj#_;PLHs#|M|i_~4z-lyc;0gHnZH-2Xg@I>zG|n9$HRPrHUI zT34XF`h?3yFOFZ?e@gOy9=sSTll!grr z_`Npk0ZU(Z3Il0a%nNKyTEj6nEM~AVtj4gxOn<}|^s%&0e@7t(t8>`=Q=y>3avqu} z_;Bo5B3iz7KL#qqhkPv!SHSazYwgGup;HLfe!Id$Q%B~XqNCFLya?^sQDUt(WP$iR zUz@^U!z9=s9c%+!LDsf#3YiOi97@JC89_U|F%)5j~@cEmO&%qp@@5J&ftd zo4^(^6bV&k@tqO$>X>%rM`<^yFN;ubKb!&RcpLv6zcuw`N3K#M^R?j^SL^-ZCb-aK zGo=?DgLkSgb81iHC2>X{NSl~ri+T9(KYYg%%Z>=`5L}7IN#tnjnHAjD{TLoFS5Dzd zup>`vhs`la{dZLr7M-*78{m&XCQGWUt3gzv{oLvL!Dt}5Hs~p zoG~SaPw2!1jW&@?$xbXtw9GWVo`m?5R1*L6FQ)%?a5F{!{qA_t%=?~ZCiKu06Yjwk zFzdZT2ozk_VD0I6IlfK7i*EXhFm3xl`Jykr(+9p${Drn;r<7EzRPQ4OzSMiyoW_#6 z=Ct45`vZ(~Rl^+^BIqpj*L#cc6DC5{CMGMpi1nmWqp7+?@!;{<26E@P^!`9X0e2Uo&O9MV=I z8HJ$2^}h*Ze@_;j3>jYHBHtfy_rsM&Y^8M%ik5);TW}BZD}B-(fdtP3Do8kV7i?p` zl#ts1?A*t)N8)%^S^A@AKM}$vwEC{GqDehvlkzcUU}5_KSD@dl<+OdVr;0MFlggP>>2wmud6$Sjof`beAyFCfgKvjr`z= z%d(5IkJl0=F`hf*FgndXUJH{SY&_xD;_oMMm0ex^&&lE|)ik*s$|o#~{!!dMN2{~n z(7){|g3qIuFrWKk{)72E5?9isJPd!9ShYTkLLZqwJ2JKllF7hD-aghnPdSD$hC$ve zL0-imgF)6LkkStvRhh+x^lrp*78|&GF;Gm}yTd+%lAgd~bAM&(Jv<3QXsGWT6hM_8 z)AnGMjx>8TjZ!2Y=WDZRc1@A;DE#2ela9=%1@?<*|0rdXPf0Kz-7mXu;yJ}6)d%aZ zF-u>#Wa2p{TlEh%O9%(AGD`)|ljR45>Ftj)gb!ulJXMa-rN8+(#^sEtQ@ag_TBdDG zY`1xva{jgy@sseqLc4|4-8V{b{n16tu^||DFpI|HN^m_->v5y#)?OJb2(0|g2H(l{ ztEhH;nyBO9%R~$cbmv6(Hw!x5TV&qi%*ngAoJJQZ0>2zwcs@L|0v>n*e|SO8J7ZARWV zjj(B->OXH9FFm_c#%xJNFif3fsZVt9p--}PQacu z-$p(~jE2k6-~=u~a^h3W1@NOHX&;#$O}h{zPQWSrYm2`wv1gfoe!o|`YYz4stdXJ=Tvr(3W) zeR^mx<@3};z$8fP@CNx5A;Z$qTqFcfzv(*|A;ePlX)gw0Co#`HyzGLPS~9&U+GDA# z(}jsoQqoQ`@eef-O9UsuLE5zk{o_D=cX&G|Y37w4jrJtFuz%c^zQV>p<4%d;Kn(a5dGo^r zWSq_~n+5&h978yWLwR84`-Tz)0paJXtUuuRfrTVC#d7=u3Be;FI35hyMPZ3V<-wS}y-v|-T^a8XE-FralBL&NzjQNM@v$P&xh>AoWdI$Isq3(jyYMHj zbd@ZYTe@QVWwD23v3;d0_N*+{Miw&!wL~Px$YOtSp3`D6wqUvzR$#hyo*RKUku16)1?^V0K?e983Ql1847b}?`$kH-j zYw?e&bjigQ%3@cqF>5sg^8zK)#Y^No;h-PVw#(9D>ogGWI=D8Il`fFQ=sYbV*L8{o z$YP1I7$2;ZM*6qyL#cno6X<}(uE`Ye9(g}05GH)9eyJTig8|_MOpYapnMa@En0ed*_iaxc zSNI>Ai$W5Tm_2vxrYIIUZ;5oiOp<9X`rOxA|IT9ak>VSiKgvmoekZ&{R$_tM^Jp+4 z9Q(BB9By@v)((i~X~zePR-c(oNaSe`A?i=9&eLY&3JnVWmcE0>iO~MlQ)mzddXCKX zf|!%T=#9Yl%=-*>^>++*E`x0@!PeBlM&OEo5t}Ha6zZmmKh?svBRD|Qw1^CH)&{+; zDUxkJ)z<9ex0tCal9?NK%9`G%`8JxhrKE!@yAa1HN~1W(v9pZH)Aarv2COtD{%I$@ zPp#zHTQE!vP195p614`h3F~FS?SnY}Gm9zH7lT%&%t%~uoR9LH!SliaFp}8h6xY9! zqt2si5#yt` z9}5rTQ| zqfpz8V@XJgPLdQ+;;v8mPK6V9;@DKsFEbY(IhN;QRfZ!&m_twZ;5k!k1f+$6mTe}} zxCqD155Iv1M%{z=IBS$^d$Gf$s98-$!B+Q=cBjus44zmK+wB6!?r!n%_bbm9747LX zDeAGW-QML{ghl$cRrm>>h>@9i5bw!cLC*>HW_%7%NJX46fk7n!6vk8gv}f@uu4uOj z&-hNK9rKcqBxfXnW1QzVv)CK`l{xxD@hX|EWsO-SQyx3~*i;&b|AwPw!O!8bB$aW& zTIe~BIyo{w2ZiH2vteM1XpAY-w%wb+H&Dtc3LMh3{z9sk&Y<##v}u?fAgMm2Eyk6a zPXr`W#4u16O`x!iiWsi?h$DtW@h#@H;;;{5oM$k}fXa#_hIPf;QKK9UGeApFvxUe( zkLz^EF+Ub>dUV-E*BTW7Es!Oy1n;^K3%K7^BP3Tw6=xD<4{=~mbV&NC!)f=F|{}-nS@dA z1n?oSRkn=U#&i`P(h;0HMp?xxaHdjvK{-c8h`M+kVP5g1Bf6&a%XsxJkR0V0A9!nW ztAO7fvtwHAiD?+%%DIJb_l9@}0WWVtL+$%%*tZVz0%0|f>lE*;_WkGWD2&!{E3G&t zU#2Yr-0_}TrcZXrPq2W@lkY0(7exB*bS#H49(X4mTH=@&3cSRrD75*szGSR69V=p6 zGUixN6W?khd)5mm_!hQ3-ZK$l`N=`h(#(r#O}u@kYDap}S~zTSjh+E%3;VQH6KN0h z3+E8&`aLdta*%M#(3TY&*bGE}NjjacMfVl<$~A>=_oF3b2J*F2xZ+-T<}c`YqeMzm z%q3iodrZUz&muU7DvWqiCD7z7=(eL1!-~8hsuJ_<1Y+d|>c<6$HbX$#Y<#Ui$PkAD z@wf!>(=Px45vg*DdP&U1V#UPdljM-5kvCXDf1Ic}nv3+NyYaZ*H|pzTZ7OCB@HIrT zk1p(0`Mow4YrXNV0dT(UxNJX7Pzk0tM1;N|6(WOa01^TR-9LzXAL^%Q{o`!Z|1Hr! z_3Nx>>c4)BtJ|6&sJ|va&D z2A53zsuILl0s(q<{#wz~spT9L^dvHG{z^Sg)M|XIlUdjtvMI0ddo2*l%q5xM`GS!f z!4r2NYYzP7f@)AmN#=EQe+|~t51G$H0W3o98SJ0T@4m@oZXv7dA1}y!UnAJqdOAH`wU7{!^B4=Tc7dQJk@7lhkv+8N8rmm z;Nk-`2a$nAUh}l0NK9EcC)pDj5LaPe(HR_kk5Db0dh4zB`(ypVSvunb>;5U74A+Qz z&^iztf`B^VvhAnwNEFEM;~9Ja2XOm&kfGptfEUdlzk_5Kgol5Y;LrkIXTs;ouUEwh z!pA*Igva_!46N8a>xnDi_omQMOsVz`)++813<#z*U;s68GZ@^C>hXp=D#85?N?cbec&pM#o|Yy}f>2!_H95 zYUGQUj{Mw+BZ!TA+E&$^bsKJMbY

SdirQrq3Z|G)s>Xonw)V>UYR`!fK>cAy4m}Vq!Lc1~N-i;o28;7vpUZbMi+x z_J=YmS+LfwWnwOn#d`J>#JunbgFcRN2D9`(xN>_=VNnON>=8hq(I&@Uz||N>LuY`B z%XG@a`c+g10cav@82R&GYBRCp6O=a^(HK8KIvt<*5y%lB(MX0EGxqPj1MD+FF)6;U z(tR54g=j=z8!S_6zI>Hiv;P|=!n9bnPqH;t^wxxx)S8|cqV&LMPR5z2JsnXY+B5J@ zA`7?Yt(~Q4k5eMD1ft08`SESwzZoo*?fHW4U%@?jnp+04r`gb%HPfMcnzzQIHKd%= z$4gIhX%L}PZF-*YG#%2@Jf!XakUY&>$kUXc43?jer+G+tnuzkyOqge2GjTdzBs-Zn z_e6IxL;N_IQ(9>iyVMJyWPyZMWO@6z*z%GMh2_PJ*(A4`HM@_j?`3RsvqWol8;y|~ z;r~y%%#RGn!e8|Tkpau_cP1+`U_-X)d{P=aMN#SnpTCLWloKN<&)q?pM^o=h|EXMR z4E@)V{;QRKrCi!bw`Uq6Sw*S$(PV8=ttIDT)stT82@;(6n`rd}5iWkxR6T((^OKw9 zldZv|avrQ}?F^Sa=J!&`0nB%HmwY;KS@ z5@#w$TZiUVSoJ)3lX81IUpO_oPPt1+tC+0@+6Q4$P?qq3{I3L(()Tkv> z7Dfgvz~3|Ydjo&l@RyIj9@w2D-m~A+EeIP*INs}4wMTZhpak#TDLowTxvFNls`kk0 zRyE$+EyWRhcd#RPNSGtITd<>s3)j8E95v$b*AMsiggM@e!;w;4W|g??@^Kz#P+WFUoTnFly5ZM}Q_Sd?vtIb^M%NI5dBmSMPqz5Uo-4TJ znJ2e#=Vk}L0 zJQ-bHT&I1hx5Rl4$6;#`q$1!fwglj-%^E`|0f~5Tly>9^a!doO9D+-To&nAUk_#yQ zFx8cFupY2N&ca^2L)0}&dvJ&bzlpC?;J}ghBUlXAq?U>F(0;d%2H6I`{t!zwM(< z^sB-6UD@SBKex9hV$E1UE*X81JRR)&LSG7PzKEEBV)V0c-io89=#Tz|y{T@-claVf z&jSa2@O9<95g{=A&rXHm0279VaL9_o@ZZVfBcn|8+~H+@@ArdWrv?JQK01DzFx*!Z zO!}YUcW9&uzebGT<0Nx_^*OJ)K=QR6iii#qlJCCamx%w4el5-T&0Q$y_pmR1uAI8G zJEJ$Gx{g{Z2K|bDq5e_(FX;242Tk-l;}Q5h>(Aa4H5K?hlB-DfSuX>>sW1B_-G2eU z|2$yA&&Bw4^p!uU#@~huB=>)$kZff_^3#|6BKhz5+sBOG>c<8B>QJ9%l|NU`l==d- zmO5(7FsfJljrNb4pr1LOg7igYYhqT(a0+EGV)fev#NCmCia~hZb_`dt*CfKpapl0S zky!0b1xoO=TXjLD3&QX!y|9)e^90^{-Iuk{b|R)1O|k6U)G8FZ9y#_(5yh={#bw6^ zyRwG`?Ol+BVo@;b37%PSmZk(@4}-L3TUG&vcC0M}&?Db_Mv4*RxeD=~-xIQ@$jJ9b zZC17*(VhE?_Es3 zTRf5mydl3&;x=`{Ak%Y8=21t+-FWB9X$KSw+TpUxQncQYc^U|Ap|OS5T4HHxX7yxq zGxx^QR>A??)J{H4-A6#qx3M+#4Y&WMKA9z&dY?~IscTeCU4%e@Y--!ps;QY`SZ``- zkZfuqCeyg7qwt9L~hg$FAzC(TVD2U#^C$Y{b_ zFRCUK0k)+H^B(0U9Ki6Oxo{evxN-(k6L#UU%UaQdw{XbnvzwS_jz%f2DCVw>D^dPf!t zfd<3|Z`(>1YOBRUHOZ9n5sh|83pGA%tk?adHoX<7h$QgrnDLnJ#TdTQsJ+3V6)`eR#7FwzfEvbh91Jd zq&<}(c;=w)oWhaWLvbAQ%&xASpfKVY#rZF3OS?;+UDEDAjs@GfdcefOw;KsrAle^u zUo3Xlgz|4k)djS2B)xE=!utg+p`{J)uUZ*+8yf$y!uu_pP-4RSn{l20f_GEKyP*%>k&O&`?~q+CNWbSfh4-6arUmck<}u#iVG@k-_Tm#)&S!-81YD*U zPE~lX(7wLihW95XdK5DCVFF{Tgvy33hyRXdcQYU;N8jx@5dV( z^nTl^<2~qEzc#6r#CZy)!-&>olYT;#x=s37)Ss`tw@E9?z5%*uvPr9eCGRX`+0Rg4 zNg&)OnvWVp`3uT%vg{BQ%3c$^iIHNRTfSDmnTAc8vNwgV19Z_3(spvqpw0*^Z(#4^ zV_Nma@AI{Kn9A|+E%0}{Jui}7qwwnd7T}O4FW&Ppsqgpj;bnS)@xqjukewkwQeMao zs@l6a2RfpS``~O*mjXac!#Uqii&b;!9~I(_NaIouF5p4Mw6-`n9CoiUl)%VGa=cfy zyt^pZ)iFMxC=EOI7gkI=e=e}@#q>kvGB2janeffh@zo=bdu3ga?s25@~TAjB9MD z5wIsCypXJmI~$AfsDAv0(XY2+Cn_5uu5lPW&HueE_UeS&oBE(&ij9ScPRw3lC^22!N)o>!q(h%PP^Ls z%YbuDXxXKp;P|UFxlEG@V&x=}kaQzyJ%MMoNuZxEBLhRt9rKE6E+I(G?GOQ*i{Pqg z!ra}|G_`tC_#=MyC&D5x@;-(@KOc3*z>V;RyqiY$GEb`;1^6B@CMxKeIvP1isW-RD zHLbXon~OlACcI5%I$bDuIt_=uq9`x|!ckDWTXzqDyTKW<&1gd|Tq6}WHi|BsM1lya zZee@0^;|rlHMT=LCZQz)+UL6%S`t3|ayCPA0~&^VwC^FHp(%OVT?8$=5;J3cU zXrsfQ6#bEOs4Fp##)l0h=0pd9xj~1Fb`oGAFqrbnkpgB}fu9({_X$CC9ndek9}lk|A^ErTAdgqig#-*2{2^yp@X z79yb$Jw{4sM2|DVQ2V9FFoIShJ>oq(-JZLl3~|naM2hc~R$hL8gy~cFc7s0Gk(UW? z+32&FqVSSF-Lnk()M`_#yew?3=+oE^?Qsc>=o9m%AupASr_Wsktwj1DzGdHkKiR+j ze|sMjq)H2=|E}Wn|4kbmnlv@&&}pARhrXh}U^%htKg_Pcyfpf+?}MwE#+AM%Jzy-i zz}?(1=?xqiRmf?lEL2K0#YO5+GV+z$3P{#zmMt~Dz=5u?2@ne;0v~>z0VV=q%l>Q%U>9Sf2_W== zPBZ|(2L!;^$T{%_UVPn#VW0#^8JM*tzzO(pc|Qi241gF2V<&O~m`ng`62No!;-htT zXaNEmdQ{W~fGM*G!wiw{h0o83R%e9I5x9^chaV%Zm+> zY$LfjJwnN2+hXML_-i)md@89Eg~q&*VaVg`mWE#1G3~0j-_!ch7@x} zfBHJat(Yc+*qhK*c%$rEtV7bSaxFfLEVc=)OVb2lA4{oE6GYfJPb+L{=u;~16)p6M zHrFA2N>=*RkM+sD&c=_}MutB9wUrw~`cx#hT!KE$pF%?S0Z^*cOLl;rB|uWCK@uRT)IAa)sg!W$43+u_rjk`^pdH$s z0-CN;fdZheQa1>gC9Bj30?xL*1eF3mF)|d%`G<*udt-W9Y$Wz;^>KZ3L_9f93u|KV z^Rn@GQZ)a2w&Zgkh!IVVz=F zv|3{A3j$Uxz*;DbV@xH$!fJ?^hJaOxV7*MR&h^9>9qoWlFrZcdG>ie=iO;$-pk@FB z(}aZ-UgVAe(7gmmi2|( z`)tEV)w<0vQugr=thpTj*r9Ef(1ic<5>nBt%t+Ifocb?G#px$|2?ny99?mWeLN6Kn$v{+3eHbVZW**;u=&t<;PtqOZ_ zo&BHmh#5zfz8=a#`!Non=)qwnSNi1+j>XiuIx?tdb)^@ycZg-axGI-A2=B`~GHDel z=vD1S8>e`0i=n4M*E7?Iu3}@U_ih!v;c-wEdum~8DDS}IWXxN_m@g@KoMG*F!3N7g z&$9)r|A&ZuF6Q3G~B zGqBZQF}d%aWe3#20MyR_)XV^ct;Y;NFA^Y~3{$vT;`<$)40}OcQp4HpCvAb%o9DNude}Kv6Ca+Ss0ohLJj%b)`iIKSkRi{dyv48&>lyN9Pee6 zpSm+Lz_V~(1b*BV4q*9~H!$*98)tgg(lzr)rp}og4281Tkv}d+#^k)!3}V`@*T?mtuxjU57WH;jOg8d(eQl)POf% zhc{mgk4$3t0UabHNZ6J^_OgR~$N>4DbRET8!xT&A)9kbv%M=~tY0N^P)t8>OwfYeQ z@C)-`6n z7+jk;zQ2xYxQjt1*+DKaKrWoAgDh89XV3RGEGO$A|HC~(pdI8w17rsSLQ-klyh+mLm+1>~tC+kHOjt zQ5Rj;Lw0zt81Pok(BaiI;PDn~2D}A2yyCj9C0Ef;#eWzX@I3y`0ef|!<%ow``~3A-nze)642Pv5U&Uwp7bx@Uuwh8W563@ zz)LdVS^Uf6bhePdPb%qXJG>rko#WJL2jmv z$b}2+<6pK>Acd0dUSezVvj)7W2E365JbP#KEuDl!tv*+rk{;a^8PIrlWWYrH?ZjUQ zL}DcVly6DDB3{B(juD&o{~+hXOe+9^DWQXUGBQh|ie z_ZPRr57IEagAolsqz#^66+2*42;@)zp9o(J) zn4-hhF%w&g6}_nSdP{nvwASV71voP7OUG{^ zIH5I(H|?l^{3sF6joaH@&`%{s#br+lb9(|eyRJjOv>8OYJ)vgO_3*|Z|0d+fWt?*6 z?Y&RSYGbEcIiv)GZnGCDx(&oR?1!|5vvs=3FNUfw{s(lsTvXSWZk;O@OShk~|IYQ~ zEz@}&dYR;HX)QC+Tsepak-SZOQOR3kYdhVVVF(1e_4F#bvAms~snbn<(L{amKcL%= zzx~jyVufPqwi!F;=qh_1eU0f_GX1I&{i0Z3@4m%Kzfh*%nv05l!BKYl)q_I``c+zJ zrQceln8_9Q@{1ol@{9ig{pMctL%-cn;$rkQ&0Tu>1>R+$-=A#nrkU(rP1w8CYSBqk zQ-h*ctOCiHm=!~;#Ka5(31fSmn7dknnA_o(2GAZAWc&s;62#p4xFY5t7{7e&o*6_; zu~C-%VukvGh^g~; zul<+((5otpVKMaD)&umS{8;^b0JXs#7W=cW@_aaXMSPy3*pxDI>;g0~`*q3z)tA?4 zVx}rzI~<6as*fo3aJVCLAXE|Cd-BqhXV9N+aRQX~CiH<8Twwk}3@_niG{-=HXePO9 z72>lW2*p+yVInuVdr-ih?h(-P-cj1eg?}R?jeQEfqItz=%2TG1KDMI_jq5Zx42$-% z>%^t^3=KM0GalK<;+?l|uvUL2SQY2#3C&L`)brUd-7V7hFQ5~mStBQbn*(rkx=0p& zT{-6vjf}%tP{Oa$f-x9CRG56Mg%9JfFkY%cks!GQAwew3JKY!XU}4r_(UnW&^JA+J zJsNw5B9Z51s%9qzg9pZk6`Z_@Ya#}4eDn0 zUd4P>oM)I5XTqdKczZ`^d!V|+;v9UUFN!QzQLI^!Yw(*0!uBJ$7lWW@7D~$8T z>1+mhMziFe#FYA!3IM^28n%W|+rY&tX*w5;w>k#}16MEuosP_TI?XBp5>E0+1bNbK z-LetSwIxtsGu47=hb!ks z+2YCbWQ!XYR7M$ryDO)tkB_R;6`;po3-US&{^}5v#(K#NSJh!2GMTl*Au`Z_jq1 zuc|JYs|(d)eX6@zukI-^CNQmJtt_i^nW}qGR_E2LyI-#^(UF;@3&BI;Lu}*?>2K_H zM`(5bWZ7Rw)KsfIo36M@D^g;RKq`AHA^46%*QCamvm>=El8O2zLJNup<0MjrGZhUE zKqQ$4$&SnybfhLS9ip|rA2v&7l-8%0kjw@1SuzpjLd1afA(|?;JeY@0Rmxnl*!;Kle7mdIvb_6ixZR?3i&3T^`*?@ zDkjP_4KgTmV7TA4h;1dB=VnPXu@*54wPP(J^>nTrkHon-a4u$jv~LeuX8*G4Oj1~z ze;LaZobZ=Y*aS!Bqu>t?z`cE1J90Besr|=Uk2fO@u_Xy;Yn^{%@g|Ru#JiO{I}`^1 z!^?DrRl>7TJ+hO7_BbO@X|fX!-Rfb~9%o_zd7Qg-Ulk6Ga4bzuXL)~4=emjhoX&YY z1;@^zfqtzldTU^W`4auj-(mzm+DZ*_`VIp2*3nhSseOl&;?y8u!7v|x zv!X=$O+*)jmc!p%OAA`i2NX_~on6`e&DR0K<^Vj45r~Xm7;kmvvA@X~g~PM{5m#v64;rJ=1$#5q^)!<2;K^s@b}AGI#J%otRNM2n&cdql14(wz;Be zbK`iZg-33GO^KbmogsHyrTvR(C zjMvgX&K997V{Lds5X%^17mD3UhGNumGVL}RVn1+>Wn>>&S#)f|-*J6MnWz2YMm9b}- zY){!_tO6GG!=Vq=!bezT?2oR35|Oitp@fvNx=l^wIQ_Rlj*KKFWA$L(bdt=BVv@Xq zpn#IGN`wPi@#{og#%LX%G(}b9+fU_NM<$&J;@V!WoC_U&m&dSH#q%P?)YAW|lv+Lg zuX3rC)BmdGSV*FwN8o&?sT&0Evjt8jp!dn~*UZ<}eFYR%pufi1@+3Kiy zODJx&S_M{F3Xac?hCdX%*C}?R)x99$M8OLZGUrW*!phSicc;69Dg0L6o$d+>I#->- zZ}eVUgS{q~U?X3g$+L%oJf65ht>q@*a~G_@S?ndCW1rHBv0w5lb}4p%oY{JVt5Aaj z(cs6LG19dJLkCjg_OEgr^w91?**h%-ROGTP#E&xKW%Nh96Mgmbq4td4uQ*GBog$0< zM${P^W3k_R&-$_76A}LMA5REc?_b?Zr+ZY5H~$$o3eR^3|Bne8`d>DS6g-J+B}-F|1lw^ybnVxZD3i~TMq zX%dGBh|;YAk|xW?>$+vK--G4bDe|o!`z_YP*!NS$tW+W`5>C>y+YzFkIDwio&l36m zPZ+T&Px}I=RPdew-5i;jq+w!zgbuJCZVy(rVzAxN>rT?v|3HF4OTE=d`@TEiZMm~! zqvO5lY^ue{zXK!T=~SW^Uj;GJ_Rza{Y>e#_9)0u3!APWzSc!ll&39v1Y{7! zJ^`}`v*+KrQk0RKI*bwO#t2dMgixqf-v^<(_cB6mstwy*Al_B@;9o`QU7@v8094o7 zni7u_I68uA+WEG*re0hVjxLimz5Bhr>8l5GO*m;w)if(v)>O@0)4GOCXSCUfp zy(4q3PUwDI8;(K~wYjwzpV}tfBsNrv#R?5Gq3gW`-4hgh7SQ6oCPKHC)qXi%68dIW z&LBzXCgYgUX``9#Ez?FYh3};gynQBUPlnS;LWmKl+O)Yx5FBdl{M3M3H&Ims ze%>#u**=!5QTzT-nzNIRiAtnnqL7KN5EfBPAkjLf76tW2aPKi4?+YW=e(XNcqU*O3_v3X)y{Z$mCjy)Y6BGk;ymd z100a96*aQUA3UIha=4xU{bb!I#uzkcBPz_( znm(k2vN?(|X06Sb-N~4(uwu61lpV975;OYHidkD7v%TV-$uJ#n&Qx)lFzX~STbQCS zqp^rIPJCD%8z?7ZwoYP(I6$aY%LlLaZ!pE^Gb>&neBxJP9+Wt}iRgrqm>v?R!qJRV zX(Xof^73tpue{tPc@}$C$xAzPe=M@fJy^29-9(hu;2S$b-rUBdi_~5(pP`}milwU_p1M2CRmk8 z?H4ZX&v4pJ{eOgZ@`PPrFF(%$YwQ2#?J8D<7RYMHk1|x~S5XoA{|Bz4LKhh$qw|mR z!D#fWj1kyj?q@IHC|p0CUu}ua8AKhFDZ3)EiImtVc3jsXD?LAIKIqGjLlJle-+J=5 ziXU&-_|czRZb?$qeBZ9@4%$jV@+81!f*~WDWyYD9b3WMbBVyRCsz}1xGp!nB%>X9g@`)RS%dH zRb(<=?wwD&=)KffO;#;F#B5x`wS7MSfJgcRmk4ah#jGP}}?r;xlXruLr09{*#-~+O+5a*>ES-<#RoPZ#Z_V=L69D$j zpSvBxV4vTN2qpo~*Oq((krD}34`Iq4@}cL?d8r*q0l%?Bd(ba&&7sYH~-h#+u-2Rm(NcTd7+$@ojb z-vlx@l?Gs}{13A2HVl-~WXZP6ZZ10UiNgs+KiPIN9CWxc$*WAcOM}C&!a=pW>$9Ka z(^_Uff3D7?Yfm$zqBA$A+&uxZ30c%r?uPc&qg~dQdc@0;a`%uUV+O>p3@LXOdAOc^ zX*i5XVht&s6b{@WE&Z#K?Mr#xzI=Ia$@b++BV}J&efs~}zO3x;-@Xi7Uc7zzQUtRP zX~Qwg>T6$$&>E|K$xhJii}j^d@g13d>`QrvuYIZD-@Y_9sh7Nb)@wP<$te(Z86WMABrH=GtH;paD)XVN17O(PrvdvB3kMU z1*biKb4^pB<{lV0ziRHviNbW69`Jn*FdivdN<5A7R2pfOdWsk=&3L>kE&II+4~)`&mo=>&%*1eH{>3vs z7xfvRGV069Bwu~matpJe+%eT1TjqOu3MsbC_Z&Ouhwt;i3jgyxq04;cdtzjr<1ovr z#Jx8vB5~g`=pT!FAAqol`@L>m+>N(>#r-uQ?yGfi??(-%`JNS#BuB^f%LS!@YCmiCXnpf5GLUpT2AlJ=Xd3lr)+e!m}CCe zAiA^$&F}Pa21ZMw^&KF217{!#Xp$N{hl4$-8%r&_Gtd?wYzol@V+}bQZoIWBgulfc zcM6)tPNgueT+Fd+ua#7YN_glyO_0Nc_53)(Ef&2bdoK8Em7AB z(_)Uh$8|+I4f^ALe;xy4s4cos)t!I=H9Fn^c}OrHkYUz?Pn-PtgNhoUKu6V zv88AtY@(6e-J2_DS^S6ELhvpA!_yyIWkvXn-M%f( ze>m>(@gD+ZoskHFDF30pTum{p&p+0XFo3XWNL{3mNewaH`qhv&=48KcYBf0zd609n z^Dw545P@ZVixC0oJnS!Tl7qot8glR#rU*FD-@vRuH&ZHX~W_{2~q3@ z6eG;8E-`0uRAz*zdd?U5d8Zwr8#^*WrhJj(SQsYqMcxL}^n8(d5|7vOz;M)5-cnNy zuF1$3N%yH~ZZy|q$`={dP1e-YTvMp5$%&eHZk|qyGEaim=Gw?BOKY@6Bhz$~PknDM zA-FGXsx9}@_$bdex+SDsjDOy5!B z$UTA5ji96$ZEP3W!jY&QsUoM$NwbA#bm8Tm5$^}+j6DC%wH;J&ogMhMG@ZonKsF?rXW=lTs)_&X@IQhdJ_qj z_?~xc_?LRtuR8RPW4>Z6aYC$_ZXex?I*E5InPZ!TON0EZeU$Y3Gt;vv=;_G(6pdn< zP86NrY$V$h;i%CRyw%2jL<-0U^9e`ngKOl76;ibJT3q&QOuD_qfqa}$lyFR|8Y0Z= z<^(cEF~@KUUoC7*)NoIX11tJm*tjar^M&}Z0tPjnLUFk+5+?O7)Y&S*g9Y_;+GwCe z_aLTKg*lz>%9#x8NRey1r8yndCbxv;A#TqHL;;B(W%^D7fOt=Sf@il3#^h<+I#BO& zll3k2E_tq^enBD_^DNWKDQNY+POF(rD-24ARyiaX&h0i@bqye8&}kJWj=Bet&fX-5 zlo;=iNLOw$i1ZCyW=W*<+nGp?%p1_}=!Ci|{Es~CKTO(|jc z!;Dc%6doVt$4KN&agua=3@Eb+5+;SBv1r~YvUah4DOzOh;<>kPly<($2{9oQ?e}cv?zCQsmWZ6IFFW_8k_F>p6blkj3Nt~` zn6itKQ+DMhsn3_m&+pPdN9Gjy0`>5t`vP=f8jsBZyRMfX5gF_2FJ_k`a^!1EcdM{M z2O$)z0grw5EwsU$*Bgq*+Kgzk{}iRQs3CasnVWdyFGZp%_NLHNB_q1drTnu28zCnCIa0pVojgSDE&3h;k{zOuXC!q^PM>d*~-6_7yjG~w5UYk&Y z(R*7-h;2y{zq02bzEnBl`?P!epu?jS@r3}OcX*i+p>ewuji|$OWG>QabbzZRvmmQ= zYhC?S`)~pLYIk-feQ8b42u@dHG1{ikLXbdN|G^l8AcrJDYIj!z`I0061le2Z8YSI6 zzy$e}F{2%@b%MNt6;3_`*|qk z#`s@(ZXu$oJgtKZBoGc$4vMj*nPWq%4x@$Mha5_Q*3S3sXdQmtZyL&%Im$OmvZJ-= zGCO30OlUQbXsvN7v>NGX&9$L*E2AZHP$gO|e9-D3(XwTscGJ>z7wrq}o?ig6n=Of}xcH703` zF4^07{yo*kG4>i8$r>Lr)!0qexcM&C#&&v*nWh?ha*ZikJ)at<>os0R0gKe5sm1}a#v@%+8_582 zjRZgqYles#7iGc7YVCb0eR8uRtk19}LRK1Vs&uHV^gg{(V^~9}7iyp}f-7A?mFE6w zZ)pR)QlDYXrx%&F&tYy;&=$j*QL@srow=nx!sf7hk&_`v*7n&^6=0Ic;(SXG6!>>~_w(XtzkpOaN3}f@xfG@OQ4b{av6kO%tQ- z%|%st+T2c{vM6>7ijg<@VkS8%j*RC)Uq{0^_+Pr)tx$xQ!c~<>QD}gXdYr=!bc&xq z)-y1|-DzNyT=Nza5p)hmB8g+R62i2%+Q5CrqPGaqe`ECw7QIbNlpf7u)TejiZ6)T< zZH4~^+$u0`nPV`TVA)?nVmOYiX0&j!6QZ^AzuBc?`Ua+sNh*jkpZ>;_soOsU|K*G%Ch9a27lhb)&#>d#Oe0@rc>cy1$u^q=@$@aZP6Cx(IlmfppC!S ztEq}zKD5S7Wh6s)XM!imIH)z9b{fOf8etilkcm;QoM1p8muXxF+46qaDJxN5d@4X9 z&`AT3oA9X|kLGKU7{MUgDSar@7nX>pk9J`{!&FICGqFH5GrfY}r->oc`JGrDX}%BM zV!hw^VNsEv_@kRBjkf3q{DRgW)Am<NYqhS;8kh=Nlozf<;s21TzKj@49hJLL2qC|R~xx<%U^?59S2?~++YPdVp$Vt1v(HA`|#|c zmlOC4Z=Ym8YtL__emGgXt%c}=`=qE@R`kIGr(@oJCi>GldOIgdHK+qT3!0$UMUN1~ zE6>>irO-mlsnj)!9TsV~0;~O5a?+~biN{Nn*VbbFvaSCUfqbL?dq>G@Qrbwj*Hfs| zX<`G2Y{Q0jk*zk?ugFejuv!C5k}8p%3<#v+593T}vI?oicY)LJsjlM9!~KXXeesV( z){lP>CJv_e2G(dx`uva+J(!DKMfcp^(i8pp9eYRD+JZo|h#KDc1wbKBEDncCQ?a!DEC*2}2Z)EJV(D%A?y&nU zJ$ec4akcSn&o!=BwdaM6e%lj?ke$}1lD$0v#kc1b*`7#Kds+huwP#vX8QNp^KMtR; z%J=Eh*82#zef4m`=71M7_9b9YeRqD0R+;Y=B=))Kb!HXu0KD8`OzQx;veacvp+^>Vea%U zHE$ab5ESnX{5@g-f`#{l#(NILJGuvck6X9r%XrVxxb(k*CRT{|)O36L1-mG@Y~?h44>`|_!Ppm z!|&FiVvS<(zwbQb-vz%4J}xcrai7+V@lTyeqyb4v09iYpQNGd}oCLXl!>@u@8RVw> zv~bWmH7dTvehI8HqgK#ZD7H2rk_dKNzmqXS~Hx6Tiz7@rr{VA1jC#5{X~nP4FAzQpX+e z>E3`pmv%ZYJ^YuuGyF{aO8C=pX@*bt2K+{4gMVKyhTjFh5`G(8n&H#E0e=Th0VxCi z=VKWDLHtViJ8@}-Pxl7=;bns#FX2ZT@EhCU)4c(|T-o5CCn=@456h*HA6#1SC%M$+ zXEjc(CKO8$;B_&dVJU%EHoyUGUt!#Ku&C4MFSpTMOVf4Vo|pSiJ2_>b+z@DuPW z;djHO89v<`@aL8d{#R1Jwi){Mj!nPl-hkhzZ1B&!B!BU%{CDEsfWL#5c$Hp% z%Z&f-slU|>{Vi|PU%EHop9v}x{?AMKnQ6$+M4SB3y#ar2+2G$N?OPYa zzO}L0H@Y|AH!2(a&JzFn2L3f|_|v@se@CS<(WkTIZ+(NmH6?!?^ALdr)2R=xPCSlM zeeh7O!_lw@!sh7TOXz>cO8byt*oSV?KA7R(MK(f*e~n@cEsmB3{wH^_e7=QWDW7X_ zN%Coi{{o&F@K=@|{`oG_{@_>HA6(kuZ^ttOewWh2|HLWr$FIU4mv;Cs;F-bWuLFJQ zHyQEJwgFfZ`(C2SUAFz^P z>-u#a`UFY*3p(ide}hXq{wMIvpic)I{w2^SH=60Q8o!c0PvO!I{|P)Z=<_AbmS3Mf zk9B3(L-8wN_rs+fb{{-5^lK)=E-ihI%R06gb*%SO$LmywEhdz&6 z=yO?&yAAwHppSM3w_!hiC4IKz(oUbPcxKT5nbO1GC+YtherbTQ+D7~UbdW2F_-!%r zP3<1vV&|w)mhma{E7-tagj96OJ3=l3l<~&6Tpy1&rdA@pQvtuG_|6~g zi;M64gf~Wf=P1CICcbkccNW#o3xN>voikD(CRX714&D0%Fwn;0Vmc{=IYLHp_yzr{ zx$sNOA$SzPpnGco1HeiSU^I;?E`Xua>$i4HuTSx7qStQR`j3Zg#T$cOb4y7t52#Fy z8%umZ;~vDXxp8!#)|8?%Z4jLq1$!>yUnMuMXRG3xXUN06eTXzc9v;B2seJ=*>%V=y z@WyE0-H@}=$io;J(26$#S}t2ai|&nhUm*wNN*V7v-ySBzC6>Us6Z9x2hxjzmnzkY2?0NFP=ED zChKE={F>yo2X6h#Ye&2>*KoZYb@J`Uvv9# zTTJ`##%SMC$aQJ-u|*gQbXELHfhdPdv%=85p^wpJ(#Loie~&cc?~QHoce?+_^88gK zqrVNm68(2@X-1#!%OcO0Z)K1t@Jk#&ieCkfI8OIgdA@Gq2GW@W=FX7k3 z?`634&+o^nC(!3xj=(=I4ZrI);nrOZ*9rD3E>#1`K+?Uz@2SG^F715FC$}*8x9}_Z zu?ClB@N{qRyEcO_t^NJ*9M6ZW#ILenxHQ9m0`~^|Ey6D@^?c5Qw=@1R_?7TG;?fMC z?hW`u$_D>=X-;P1SHhoYvM5A;x;NloE?fUpHHz{7xs?w8TU?s)r+Wi_8T-FCC44V_ zCI0hpX@*bt2K+Mie`CL5{wCm8!taJlGkm%?;Fq!gtGbKf|GZO&|1B=f@aeuR_M)~l zL02FbWG{X*$qU&Fx-X->c)Cfk_Cn+XP}XA@tb)kNJD>$&0zM-*t;W_{;bhW`{9rEM z3j?us*~kZ-?Zg#n&O)!h=|fRr^Dno;qn`Yfd{fUqkOXyus(_MF>Uxv z#SFFupS?)&fc+zUcCX~RzE^cAd|u*j2%khmAPJvD^^L-3Hh)9&jK$$2{dLgBTa5;a z+6PGK5Xjsj8`aSOA||0tla;vi*PeAPZSA>qtKOc9(-_x38r$gmDSt!lNyY$&+Ow*m zjlLWBo08h&51&vwKBEnMdbHuX9<<}r-M}Yt34ar8$EV>x!zU}!MxSHYut)Oyk8WJo zXN_$1d6&Nt^y$vu%xPew&tm?jtn?|o-G)z31E28uTvrb}KDQe91k=no_;sPa4WFV$ zx?Yw>{*EU@{yHIL#3FxN4IrhIzX*GKrZ5Q7rmy0sKvvy*;fA zRElelKlxkH!bab-NI_BhE%EtY$(F)r7k@+eTo}aoEU9Os?~D9RS@|7g$7isCPdkav z06RWy4SaG(Fg^ixd>sD_pQ+7l^x4}`r_cAWNhDjlm8>iJyu{xSeFDbuHxugG=rfzY zDJy-n+idvUY2b5nI@i_Cj?Ya7K8K&=Z%)^-;qwc2;gNoAaq?rf$68iJcIR)1zK7$vJ;C<&G&E2tu08(rAuGa0-(&T4es7w~ zb$zB}OX2e_e?#~rW44N9Voq%veHZgLCGlI2Pdzano*%{!lkjUAKRk$A|Ko>y@WvQF zlscXVUx5N3=Yg|y(9Yn}>_E|dSsbV&FN5rW-~VIo-Q%mMuD^dpTTnS(kRulfYNU#m zSVddF5-rh|sEJkdTR@2ww1Ns&5zD2Za%n*!R;ew5#0u4lN?Ju*E)uHI3S!~~?H5pD zE7}q*v5K^S68(KXv)0VoXL54RY@XlqdOd%wOHSUiX6?)D*|TR42T-R$hCB|SXnPKz zet>;{v|`5URFtm~-;#Wt1L@@J44B#Tbu#|qpRfCGl9QVZsrkAIYIuGe@YD9m*Qiqj zc^)M5H2^Z?F<-Pj^L4_}dGl3!GV>Lz-+B-#N1vFx{uNZrk!M@KbtnF0&kwrDI*okK zpSH{i&MjR7sdMkkpoXW%XUDWT{+IPz+16*^e!R8yTXh&}p!%k(A(g)vs>`Qs{A}wp za`5;5K==)i%HIIh<VR-P&{1ihfzc*Bu zPuuv})@S74ZyzN5dPwEhLUsAHjh}6OMh^bo^ELmFVg8}I{0*>;pKX0c4*sxvG(V7G zexSPi-ms0IZGA=#{%XyCmF0hKEdR8PpKX0c4*tSn68{uPjejguH-6g2AD(6XM-G0S z=BL{7vpAL?+Q#4CkKg_@iN7hBe+brJZgu7#*gw!V{vugB;mj}PTt8Z->qm=h{b*rq z{U~kY5Afsf)%xFH^?yUG{?j)8yI%>OODBzgJ5HYMx8Cwo8_N%E<4^VEe_#2KVf%&Z z)}LC~#y`%FzxrxFK+xXAPx{0Lu*)m-CHIT|*2G!-$HvVuwe*2Sz-_$eW zZ-wgeX&ZlkKmO#g!mohT_y<9C`LvC{D41W(T;H6d{mz*x{4tQq9|4tocYVwi@Y%EP zU`x2z`j}SMmyFiyW4T=)OZ58a^3UQmGFsaZ?46L1ul-xO^=~EGzh&^*$3^`3`ivaw z&$fR@@>36~`Kg5(&(9k8j9(DU5hq%Iw!OddAwxdY7JT@ujBA29;!M7+4+z%CN9zNy zeyj6PImVtL(J?-P8b8K|@Yy*Gm16|sw>;~&c55BoY<2V%t)p%ktYVR@P@cbr^@- zt*_5md^MuL{oHg&=l*0I%og`2=kvOE9sa`mlh=dyC62&#DeLnfyujhUe{=NZa0=`IsFM#p07R-PSNJ`pyvYc3hB@fJ7xyvQ)RuT+n>bVzv+g>$h;mkzZT!u7t{1WVlwqor`7eUh_zR)B@zXZ`L_hv^ zRO(({$j{ClqyegmZPH$Zjyw2d#%6BG02j1>MDNac@!>hftD zU!Er>=9i7q{6mKMhwAbRVH;nbCnn}kK2i7;kjftf)#cMRzC2G%%wLVgGA!RJNafFk z>hftDU!Er>=9gWh`GE}c1J&gh!ZyA1g7cl16B-uXPFboK?j=KKkN;x$(K?icYnY&WD%vV2_6 z&t_CH1{v2$^7cQFVDm8NLpA=lQ?ze6Eo5IO>~Q>X@GUvuCyo$!J4l5$56^_twn9&7 z;KzI?eE%RPfBd<^9|EcTa;R?bw2fbVv?L}WfB6rEe;=gsE1|l4+Qu*U<99k*_`ADC z{3fU_pSJOv_?ZvXwS@7{D-%8kY8w9-s4kzj@hkoK1NA1NC#3QVf}4o2a(+8S+xSI( z{FygP{G%Y1UjfyPpSJPqyLjbiWTEg&A(dYY)#cMR{uobwALT=ae5e_G*v3!!@n`nZ z{6L2Jf$H)rU>m<0+nsvUpN*x$UjeE7YN#%sw(-mT_-$nZJ>6Io@f)DJeA>ou!e*5| z@uPF$MQsIS7=Nt)sm|zsDl_>QPal!1e;bM5$S<|{i(~QAw)l(u_-%U#zw!7e{syQS z`GIZxdaSK*@{=$AjU6;UkYRqHy8LR`#vkLy-*%($*Fh@32CB=aZTyrUf97?<9|fuW z3aBohw(+aeUiof}i+xRI@{&?j>hJ2_QeAvdX#=C?b`I$LX_@f|| zUjfzS(>8v&AOFO|h2IWR`OSxA@@X5t2|L|*#J{UV_?sY=Uk}xdpSJNU{rG*35PoM! z<)@&!eA>q6em@@ZKXQ%mXF)1|3RIU*+xYc|d+`VBq(NUu<#YbP<hftDKjp{oGePqY8Rj3V%TK{Jes!>UNi=@WcYR!Yi}05~D!&S<%cpJpazB3C zPQq_ID&jXlb@{Z7-xO>zk~sc>BZS`*QsXax>hftDztWGtcAVx1GRzNDmtO_j_(gvF z!Gna~7gG5}P+dN4!a2E0X8B57JzSQgL50R@_&q`!sP6J4W1P>h3D;|KL7_ zkZ-E{0CC@NoVdHIdplOI;N&~uuA9GZtM0#w`&eav{7pIeHR67>yZm~yx*rjD?WN+b zRrlTEerABUA6NH8ao>yG9(c%m)jdMo<%f!Uin=cl_fPtX`x96~$`>Wy}o|a!9r|y4a3lW_Bf{Vm`u(~&i`y8z&pPnHn&jmU7b^o*F*IU&6n7F@t zh`9fv?q7=g!fVC-dv#A1_du;x^VIz#ao>*n6XxW0bzdm%mrfS(u>gai69cd{W)FiTh5i$P3gxO56urE|BT!zF6D~aY5!GN2~ixasRbU z-2bEQlNyr)23R`+~ycf^en<9=G*)5Kkr5_grluNU_T=ZO2~>b_Lmhg~i1AFI1q-0e;f z_YifTAnrwYM$bbIQ1@ZtUZ5@QWOeVx$`qXZ@n4l+AF1wl#a*YJ(%#eL`3|bgX+FP-2HA4_Z{jUEba}s)ggPVy1ygt z&$WJEuI`h>-J`Gk`doE)5I5J;5K^S>&++&WC;w|L`J>eRzPMl2V)*h@Ir(~V_tbu{ zQQdzM_j6hyURU>T#Jxb-tJFP9+{b@kBKfVlZxZ)ptv++qeVMqwg8Nj)eT%x!5%;YZ ziu($6_Y(J7Z6pKLofh}s50YP>s_rlF3=${5M}OT#-P^=HNSkXLb-yO=e|<$D|N4gH zWTm*@{2y_@sqV$%=K3GTU8C;V;{Ns5#r->Vj}!NgFyTc^pIas_Z#BALW|*} zQ{?1Vi+f~OVQ*CT!{V0rdtPpQR^4}rd!N>D)ZK)KmN@wdTEE+=`+voKgw~T!isa<~ zEbcqoNZfC!dx^M@)I&b6?t8@D{zUopQgu%f_ph`pf2HoL#Jxr@(YLC*Ox&Hc4vtj! zH^qH;fv_)9cXx5GEEIP?b+;AwvLA@MP~9J6^$Je@ZM^~>qVCP&9;esKoxSAbYsH+7Z+e!0P&XIk;E?xeS>C7aYs7toUPh;?`}^YVs)@Z$-F?M< zfcD6jsGHxS0(&WTaALLZukM4z{huF+`)lg{6w6-l>vy!nJ5=3U#65FA`Sq@^%gO&m z+|OcOf$YDl`}gAB(?Q%Xse7KdmmMPRW$Naqe{jg_wb1TY_qF2gp%=y(>K-KS3XNop zy1y;%YqVScfx3H$`)n=wv(?RyZ{v`i_2hf1`@ei+t}^}H*CfCr)crScpRexEPL`8j zC+;`2p1h~-C&j&8>q(uu7l`|>d%3;D%Z-0j_jGZeqFuoQf%}#l5yijsR${ieD&V?L zE7=5b@%4}I>b3nx;_3re2TkN4arJ=fOKsn0i|Yt|Q2J_P_wD}--y5(ys*D!|qxS~} zq1d=S=X6MCeNK;{G-LbY2J3UW;xD#7=VElTN!I7QjatpQ!qt%afcZ(N?gM7pwmxS! zy0Bogsu@US-t{@#(d`gl52^TCs4kwi-RgR-Z`p!^B)qMT;EcM3qASO zkjh^S)#cMRzUTUu)#wb#uYy$mT&OOew(&jJxAZzn_$f%`w}I;NX&c{jeM=dJHjKXr zQu&2YT|RB&d#-Qs&cEmSmeII>Vf^Kg8h;5?H-6d{zvudvg`WlQgQurJDt|0gmrvXH zp6gq>q0eXh&A5|Q{tl=vpSJNm*SCz;sibnqFh5XTehF;jd#-QkKUm@~fK+}5s4kzj z&-#`}(Q7j$+@Fh6U(+B%9@n?f_FUgG@}E(+9edr&_BZN{;TZetBO#ss`aqa1)>8)i znSZuF;)wRwNcw)K!!ZN??v15 zeXno*qqT%Z*S9vf4`aUGL-*rI&1^R=G+Y?QAfFqq7GeT(h?{<7w4spV@?EMK&3 zKav#~s3qV3eS1gAT|J~0M=jJaeJl>zY#*{8l=M%D_Y0Z)U)fKh0#f;dpt^k8#+Uvn zF@Mgd!XE>v{1H%HK5gSm|CE@&6myhljHyaUV(l&Ieorss=7|Nq6jBqm2x@qOY!I}qz4`6;GzYgn#E*eg{0OKnp7uVM z_heiw$*+J^{vfC>pSDkVuWTpC1&}Q7xsV}`7mwdNZU`-dDqH zQQpD*!)5r3-9Ma$dAqFrYixc0x66aGOLv2mgr$#w8lE7^J4M^>A2wl5EO!6E_a(yj zd18xIx9pVhQw^lzmqB&$v{~M=Ms%X!Gv3$A!LQpR{Ax($FNW&!X&b+bAAho3ThkSg z${z&P<YyFbhk|5DtXGe4D(8vit?Zv3>3pY8rI2Y)p>Yx1ig zl|R?%&sqIx8$a9qVJ|Kx$cO62KNq&~v)v!&;Fn=$jQk=<yT z8(+p>iQ8}8p~A0*RQ_V9E}ypXW&D+x-~J-uH(C5!WAW2AzKp*T^G7#I|4Z1;yb@;_R(b4`~=+qtGoGPiS0(Qa{nm;*V#lcZ!4B<~N$LWc43{*ZR&{UKn% zUcs%u|F9|l^>`VtG`JrB64JRI&w$zDdK}yzPU3YZy5C8<|00)Fph2YCLrQ_9_Jsdy8DpQZ>=_EVV52dX}bbeCaO| z^SkN&RP%qr`kLAS)s3IF@jdU?y!RuO{vvVw3;Rg^r$B1{$3k`Er)}{|f03B4-*-q= zN7KQn#hKH=Y1+n@{vt8Izg#a<1<~~~)gkkGnWk-g&-=B#m~LVHY=G4KY=G+Khqll7 z{f=&eybhA%_YsgGkK=dRp5ymUZ?@WBVCTi2=N`7E&4Al?cNl-jsHZR7iXAMG0& zKV%p`RF^*&w(&i`k2b7K_{EUQ?+w-E(>A{E_tEruQBCl?C}_XSoaaSsU$l+y`F*r* z7fAfg=ST7Hfa=Ci+xXe`-*N|cvF|h19U=T`NX^e;s4kzj@w4r}m4iR}W34}sVf}&X z@=IVFKimFWIrwFrB>o~u2w%MbS#*Zt=(50`5`C|3WM9xL%zLTdceppx(I zjdCk|ws(og_tDDUm-=4>8P-pzaejCBjPLP%v~K?ve)C5We+Se!|0DQ}@9}-KVe-9z zbaC*#0I8q)y#O~qr|_Er(cUp0-$$FH{pT3#KSyZ)>GH40=tDifk9MEl6Hg58iGy>v zLGOv(V_e7k;^-VE%DiIuetWL(i|xjm8Md*_kXpvCK#iBddiZR7*d@jf=W}EAbF$W- z3adYZvecgoS%0E2qUZO~hHRAh`$1~_r$CLze=>ZQpP@2u8SNiw`|GsW->6+XX=5MY zL5}j@fg0z(1)t?-51v<|9Y_3D^0WO6Vb?<{yB2Dky#_wZkLUN%c55HH88R$isPSX0 zhtKlUFBX4}{H*9H=P(~q`FBB$^Y4Vu^0PU3?3y<}Wk(CU2vXUFP~+_G@L7K1`)_eS zp&ap-o+8IM2~v;I9cug-UE#C*bcw~EgWnSql5AfG1#^}``~4zIem={{&q^$zOHhAC zYuzumx?hr|?w`fFAGI&f@1xDa12)EgEu`k>3aIh?Tn3-zXAjnjx$)=7&!+u^zY-%qY;GGEO z13&#BV?OYGnAzt8-@;#PJ}~Kek=b%VN{tRKNWll6hU*0>{2&u;p9zs!rw92QZcA9J=1*bU{Hfpb>+OdMz8+HXwNPC=ZMIFBKlPmd>i>Fh?MoFvD!&6% zmrvWLxKHXUAs-CM;%);O@>txoJ&U{3bFCG(tykFbnzWBMAf57l0cQ5{UWLC{c~3=u zkoEa>Y<H^7>9pT)dGG(+qE5uj-+*-n-`ODr1N&7z% z(#h9>Ftg|Dvvvr>yZs+6Hz29K!3{`|uTS&_B+M7>eQp0sS*tNWT?wh}a~jmJJ+XVC zz3=UxPnp0kfDGF|RF~g@&y}!W82cCQ7xub-;<2^QVcv0|wEycMS==KaLmrEpwr6p7 zs%fpbt^Jq0qU{6HDesOjvzPb5_=}bIX&BEZY5&*bX#f*e2B`@f05v>876@%C?@hr# zIO+Gw7B)$FOo3GVSg0^j6-VnQQoS?RPo!xZ-}iakwqMd>&Vq5`HzL@)tvO`LvDi`8=*0dvR2s zW(>}hzXPhvr)_-C=W)F@3qJ*^{5DWsK5gTBK94JF5PlJ)@(ZE5eA>qM9goQUeySk2 z-w(Re4tl>IcBiyk^hcON3$`45uFZMVV@twTZjz7}K(arY3mL}C{)l#Fe*{?W?}5%- zk-tCUvO-?3&w+IMqcdP;?~hLA{ZDlL8G!q@B>mCXwZPk3f$twHaN5=%H3m06N&BPi zb&|Y#NGQcMA{Nw!dUb*x~$7PWV7137ty1C#1r8J$K=>Sx6H26Mp;4 ztd*OD^b$zrR|Pi-w!a~5<6q>*AG}@S?+dB?BB*Zsw2l9<-~KWu9usux>2{FHZw@Yc z7C&v{-|ffmqz@r?caHc?P~G@x8~;>4{=m&zzK~)0LUs8Cu#Nwk-~KY*``_K@#~*pD zO-w(;-w;}6tH)}D}I zeu7C>i@!i8Sf&3t)sMgJZK?n3AeCPO)s3IF#s3;Mj`7IPTDfCMFM(8kRdCZ{@zXZ` zjeh)%7}2qRUI7`FZ!qXHezgwzBtM7y@n^0R{wPT0S3q_1L)+qi0(;AN$81gHE4s4kzj@lW;R_c>VjogtNhkJr1FcQy7AMt_z(Bv?~+N9^d?B<*9Vg%7C&v{KM_16kNW?7 z^=BI{-YnmBc73mjUEgUN{~|yBiD}`tgVgw&J7$(IZR39&yi^j!pKt%ZPCKN0cYhM) zrwOW?f7-^s+mGKCD`12Azcb=DKy~@Fjen{if97-AKR{}JDxkW2+Q#P=I8Ob~m!A`5 z(k0yvGR%K${Mno_{=CtXj~N5zryXR-ZyzgP*cSicnf!e9bMPU;?+dB?BB*YDXdC~D z;Nf-R`qKw1^ca6saR5yOw#(yn%xSTjY zBenl5wf?g>)_>AA{*8Y8dGAU6nEM1J`9-je|3vU` zJaK*of24fKkPkJ358L<``SHi={oRn@{w~;mv)sAAYk3{q4LfChq&(#+`$$&OI{Gy zEOBuQoLfE+*Dd1W7C1XFy5M0(h>Kg`{Naz{`o6fh15E^Esr6=G&4!|9knVpf04ALUO|DAxL+^ zinjmrzlWl8jPDnbF<*5<@FXpmuj0Z_ov#`I71c7^eAT!3Xf2wrnwtE3DEHP#mA?g2 ztNe9P-6~Jp=BvKu@jaAX7!0#N+hpVA`q+4xwza2qe%}+>c9ihfL2B?^pX>%t+xVmW z_?>jo;cn{>nqvI{ZR5A|<3FPJ)3fY;dP?kmnzr$m_h%s4kzj@n`w*H|~-6S3oMC^V2S$ zw()y<^7VSY!mj7lvFkZ)wv#HU3JdZv3>3Kgy3kkB`>TekTNv)`O2F zje+X&X&b+tAHVI9!f(V{3XQ)ZSY~14DcZ(glKDN6eD!CW-tVr1RDKOqH-6g2FU{oV zyPx2;hs@7zn@?(r%_q?|exu*_K00ar*^T39{7q2Z_-Pw|mLGpS2CKn%6H@u*vGFWz zZe>7ahXn!f$H*U8-J7^e`d49KMGRg zuYl_EX&b+tAAer8@Fzeje+*QYPuuuQ{JtkLPu4J`CqRb$U=4${uQ6Q15Irv{_2aMo zgT%iCQu$R--S}x6ztQh|AKSElSO=;68mKOxw()2A@%t>7_&Y-?KLyq0(>8ujKYrWI z!f(WrXXQ5p52Y>tw2i;c?|UL^muUVW!~8>ag8tL)7n@@Di?ofuL?6WJ_u%sN&x0F<-xpHjFM{gEPuuvVe*Bp)3x5=(@++Xa zeA>ou^m|@9bEonlLq60DK5XO9^5n~+)AT6FkRL2Mwfb41i%#WvMNdEewnrrXb&$%h zf$GLj+u~p6_q=qlUcdU<^{Xg${i1FBQJ(w*c&so`0f1o<9REK>*J8% zRyG)4l|yy;w2i;S?|JFqe+j=YWEekGmtO?i_@#dQdA}F_1W4tNf$H*U8^6)-d1)V= zZ|)4K{1jA|Puuvj{P=^P(ELD_%?{>cilByk&d1Q!`IxTef%0bkJFrLUrq>OuoKBetn3#^;0HSza#FQuM1m0Wm1gw89Zcz zy7f~gKhWu#7uBtwGWiX9SN{4B>ef%0ELkn?`_!$UGFh}s+*8%9pE8+*CPv70>ef%0 zoQ@~8bYG%w{glaQ{dIqJ>!(cq@ud9vYwFfdnRNe1+=r@LKV`BUy&l=SUXzp8Pnle) zhy1&`^;0HytdU>8q;CC`$%fyFdzrfRQzl1a6+hYct6M*1^7J$E>ly0SPnlF{S&mV+ ze#+#lcuYsg57e!nGWqdtft;;w{gla&RpRccZvB+WJ)esE2zBeHOeUd9lKt7Ma`O5q zlc%&S-&41K%A}W0=hdlOKV|Zj&jj*Eb?c{0y5rq6vL8^le#)dRuJUxxRJVT0X9B%H;A##r<`4>!(a+U?P{0j_TG=nH1xei0Nt;j3Xt)DU(fM-i&FH*OD%H%Cf0nmM?y7f~g z$D`+@`(}0Pr%dYBiF=s3^;0IdyejVRs#`y0@_-)l6m{#TOg8>Te%(pk`YDsUwRHAV zw|>gxJnafTsF$4Rr%cA`OzQ@9>!(cqrG@s4y7f~gPro9Ed`R8;DHHbJJj+UT>!(ak zz_bG0KT)@S%H(V?zvb7Z>ef%0e4+uKrf&U|$y-`ax~f}0W%34kdLHrs zb?c{0`s>MWualG4Pno2#i7tQrS9R;BOg?%|AZygEpE4P*UBM&j)=!x{s5!Y?-TEn$ zll~@wd;LM-TEn$bF>crQr-F~ zlgV0RC#zdOW%96gNef%0j94u09qZ-f^;0I7>-F+&b?c{0c4{krLEZW(lPWFwYIW|d)} zKV|Y8ZS%LOTR&yeh)E;{I7;36DU){}7Wc*K)=!zdrN2H?-TEn$=O2?_AFpoxl*xA7 zfRf!_-TEn$UulK-&r5Rh`YDsMwEDcGZvB+W^1T9Ct8V?2$=zDSPpDfzWinK2)qHj9 zr%Y-e7sxbq>!(Z(StIW2)vcd0=}{x@OVzEPGAUXj?qYT8r%ZmLm(df{t)DXa60-+9 z`NPz$pE4PxJ;d&Ha`O5qlP9(MysK{gl*wD#L#$V~e#+#xTJ4`ww|>f`4mTt`!(b5>Tqk8y7f~gudkI~-=uE+l*wi4zD(WvDU;(rl3$;rZvB)=opwsS)UBT~ z`Q}pjbz0r}DU&st!7pBvlh;p~4AhQ#o4WN=CZ~Qbkk{0$pE4P$jeDiK^;0HW|0cg) ztZx03$^Co)h{VoTw|>gxUhR~|saro~QjhsG{<=cl`YDtDJ|K|qsaro~a+}uJZ>W2n zJc8{xUw++L-TEB&o{z=7zq<7~?q}-$@Gp`ReU5vi-cGy`xP#}ocWWp8tho3bx9SaH zR*Q?zaSvW3t_9-abKIGl$eH5ebKI-78jcf}J;%LdX7r5HeU9rq-<-XLq_pxW5=KCZ@#9#`Sj-j{{;Nz_TY;9YU8uh^fx{9 zH?PWX+GKp7GUIb9b=l(S8;@tEa2U@+!G+@0#u-10#dDR#b8L{NR~t`_$8&c6c%tXq z9k|Gc?|)^nK>b{}|l+ruswb3m>OJ4Igpyg%8^H zK8fG^%>A*>2~!)X0!YPo2$n+0>)^!G=B@iaz0W*Mrmj-Okjn2JOkEkDc8m9iaLeA> z`;7C^Co<$o>>KgKe=KB}4!)v7JM;Y^z;eGoG;l`L7UIwQqw+4~VNu=(Ksx2U^KI7u zY~}qS{$l0*Ny7JsuKz^Nt_)HWHUMgPg2DTYu&uoB3)Z$IeSfGMZcUiHX50ZNeg{++ zPut4d^L@0*dnNn|NaYWL>hftDKim6gcwX4r%VX`)h!}qpx)kMah3fKYx2R7!kel}t zEP1t6r;R&)n(Qc8j91U<5Zd-`FmbWiR*l@^@$Ar<&OjzCq_~PxYB`j)x zb8*FHzHWwe+TYc|g*;pPy9|G^d?j5^^h=Bvcyi-7ZotWnhICJkw)c9XZMU^{diK8b zV%&f7{H8-X=Ql36EzNd**WoXAeo3z&%NP%pD)P%hbHLTK17;T?~-M2!J6Cv3|Zh{PXZ2z=96ZYcd z))E%A{~cV!fqcCYEV79D%NJl~&(|t0x$y2U57G9&-7aA7#x7vAee%^#>+A=dP(Z%k zg>>^p+cRIk{%PKPjl~@U^K}WNQ@_p)ZX~kxCuia>maoL)72Gbe!Iwd5{Tcu@JilPP z0^9l%zwydwmOAj|kYRg=>f%dS&e8bPbG)(z^Xuf-Kq`M3RF_ZN_@3jHI`-<|S3@eF z9lgt^-J&|>7_Xd%Ned!R=HvycQz2x?WAme(S)KBZR|ZaOtvcEDX$KF>_6Or9ldr27p#qZizTcEP?XMB{-pRj@wil0J zn7al@EshOP-Qu8a?Zb1wf$iG<>LFP+e{mWg%Z9f9egorw(pvHS|5l%qjwj#N>&a?J zp5W7vVfJ`}w7tiZ^KQw1eq%8i81(;;PW?MKm?O;E|Kl%K|C09q)8$>Z)YXt$L54yN zPm%4Fw$(qs{=dJr-2zC(cW|07@wBb}dG`N%F%=ZlZ^*EILv_R70NePU{r^Ii0@}|M zNaeF&Tt4j<-C2(Q|6-jX=ncslb+R)(z#2t6vpdV*|KFUyJ`I{9_33m-r#|(7nY};j zioaNWO4?p7$74?>tUn)r;_S|V470_vqwU>ZMvl#YesfpL`P~fZoZr*@25PWe0yGkf_w#&!^0Pm|s+U9RKV{x+UHEjFH|-J-$f7=P^6 zE^;#@tMuzm|Hvv$JF~&&9e@1#$E_tS8h>oS;|AvIDM%+@4+T#lvi1K9@E6Nh()N1) zr&8f2L-ORtL58)BCr8`6y)M6@wbQffcj4=Deg{B0=eP5<*6PED_=}xi()RlHpXK~k zLu!M15^8vgY_GKUwY}Ei5h=U7YDmQ|hU(&J?{j;dvt9UOAXz*=f(+p-9@_rxwbPjV z%(4ceBwv3=b?X=-}pWc?HP|}yl@!Lr5ew;QL%U~apJjM zVm>w=&o}lhp8IZ&LFDl6t7G~3jr_(pKkef2 z47PaA(0DG5$8);HbNiPP&wlZE4%@eQCX9{cXYEMK4<-wF?k`*u%g=A+H_Xq2m;m8# zZoDd%pWEa&zWHgqDHcy3i{}hHo#nC4h{toJ#dE6G=f97L#q;lLqGsi;F>s&oJMC+F z@%Pv#$^L&mpz8b7U4kAe>-*G);!pNI^>O-IOM?CXF5Me+OX+Vy>XP-7p@vJ!55bah z+V(#6U*wgOMEn1Zl!vV8Qb>gtLv`V_c~O`5HAeZp&(eugOQ;9CQCF1T1l8r!Hhw!l zejh$+1HW_ds4aNkAqCat(>DGRzxPdcp*@km2~y*)hwAca8^6?#|2JIl$$u77`G17! z@@X5t(eHhbwz@w`BUVNzzadyOVejM6HvTL>{#v=frI$b|zbd%K8K1WCd;0O`$(TJo z0aE#6f?>PyX&Zl?-}@$mwS4m$vao`SDN0^?~Kv4pQT94(5n0e%i)w=g0T1 zpG*ASXX%5+8MH5Jzo}UJrET$-X7VwglXHKyJ~C;W?hL8m$vbH`tiN%&$`V0|MKN${C}i=4uRD8%b~jQ z)3*3W`SJgZHFvB(4?-&cS5RF(ZR5A|4!P<>wJC-&t0^Q)1;y+u|?v{r3OcrTxz)>wozCB7+ax__O@@%ViEKeIKNjZ)GqCW$l-? z@q7C5AJOpx7xE~73RE|K+Qwh!xBp+KCdvP9OfD$D398GdZTwN0d`y4k++W#yKah5Q zeDC;|WbQARFaBNf&>_7EQu9+EJan+~rEU2s_2YYw-x~e)|J$hJhZQz{sE&;vXj}Yz z-^FA9Kkw^TPe1-zd1jhk0;&103Z9u-{%KqM>oWKM%U8bRgWDLqFDy4Mn4?ISLv`yv zZR3yfly0S_g$(m-X~;?y2JNfc8mK5>elyN zM(Rr=XRCW1-`Bu?*{IZn^i;RL@3JVEj(WNA2zBfGE{|=MUw<|?<9(Os^{t-w0(bDf z%WLn+FJBWE-*=gU@i7loBQDMyKBg!9n7H`9%f|QRSM$Wh_g!|PCA^;8YC|EyzG2_2l;&bh0iNqFa6m|ht1f7Az0S$gM7IEE&sy% zEx~&QrPGU_(YC!1Qs%?c_XKS_dLbf3o6jp`Zs@^aY`5XCV`iWb_QUr!+FXPB)gk=; zXzb%EOZC>E5>oNgf?ET_)3&CO@B7d({$A|E!mgpXP{O5w9-3I6T zEIG?}vJR~)AeBD|s>`Qs{NaB5Ie2rH`5yzR{1H%HK5gUg@5lF!e^D^BOPrrMT0h5F z{TvaipR_Ih0e<`~=?*P?}pSJOj^W!f?_sjfLLMne6RF_ZN_|FAHyTth!rnmORkjn2J+}d0JM%(zq z{rGdXX#Iy&{s^dU{Ird~zaPIpE_KXL0c4nes4l+)Y~wEqhIWbb)BbJYH@y|{w?cLK zw2eQ&k6(u?F5|C;)c6-eb@{Z7|86k!N*w=W?SCq){}~kPe`p(jsvo~hho(i48h>Fh zG`0Fe+xUEk8s9xm+CTT&B>71}D!&a><|q8NJ05wbzSxLkMEd~O1S3dX;?K={eXn~) z^A8#3A8MTc0DQ)ee;+!>_+bl%ctQULsr+S7SIrx21!Fdi{AbIb7gf@T>jx_?Q6dS?m7`cr* z2NM(5ToW(fgN5M0zhM9f+%VYS9 zt$%qE^)BmpGWPx3$L|hKHZ=!Q3M@4hs?#9Tv~B&%kf1^*eP6V0qTs6`6~7p&i>J-H zAnyn73F`9ePCj#g|MGI-7egw)H&mBT+xYYS_}ixozaCQgwNPC?ZR7i{AD$xo21w;^ zfa>yT8$a9nVax}#_OkQddz23u@}Xw%Vf!qfId8NePln|3nL@~r$K^A$J(th49T?qP zwfg?_)(3D{wg*VJJ-}?GJ>W0a9+Iv{zkjow-DF5j*iBHw6Xbd$+SVTY)}t@ILGYE3 zik}A6#nZO(_N-5<-xPior1IxNb@{Z7pRGQje{Ajj>0v(+eleu-dqZ{kv|H4t9LR~U z3-U5Z)~7*`A&>Qmc4mD7Ecg4<%g@bUpK5ufWv_$hU{Fzq*w_CmxbD7IK6^;#Fowg= zn_bHL^*iyWTY8nvekr(L?-x8W-w>|ni0-G+y>54|Rdv{qFBtDYmd}2Thgb|XVuMSY zAP+dN4<4^VDFO}wyt_+$(5dSo%IWRA@jendUzZYhT zn4c7+#@`028$WI1KNmd8PMn|ZI-gM=%x47g*E;hVjGwmghx_p}@3$mB4Vm$W_ghlF z`}^_BFbT%|6hUf!3Zc6Bp>6Rm3La%A&d=(%gYW*3BFeyXwb9|NiR838rUzXCqvS0(3f*Z!^E`nOu` z-`x1uu#b!KQ=FXNt6s`C1*!43ff|qhi;OaEkU7JQ{Mh~Uc^UW9cqFp!f8`jDLh3Od zfEqu>0{HA4Cdx6g&Ih23qx*I6`)VK5#rmK_wGVQ0bTIp&Xnfcu#&4zm)M@*ww)VAH z+n39JAft`d$edx6AKd?C%xA>nZ`5PFWXD*OKN`M8^d+i zF`Ro2T{(`6^0PHspoJO)c84^$vM3!Kio4C*ZF+;8I6vG>~iaWO0x7nXR-f@ zt})y*(w%S1SATR)`=ww`JGjQL(K&6md{=Q^JE}ijV)5t5Pa|GX<2k$psrgw0HJ+bU z@L7IV%A9Au{FGrZPIeKbvI}*5?#A97KFd#hzB5mLX6Z4mwPRe7^t$^b|gz8@}-#qdS*owc#~PVf)6 z@@-|l^Z0M(p6}d&O91D0-hg!GcjSGa*z@yXKg3nMW<>A%C4E2lez_o}CI=U!*Kxk7 zoAiRj0c$Y71G~ip2F|gyIkwU{LH<%FL6UbIB=bjJ@ID#r%n1y@a!+9V_w?2#FrxJa zTSrK~o`-bu^)$>@=ELw8%hze>-;>M_Uq4Y!t_)Hqd_b+cZCrVSb>x{6g5q-{UubKIg~69|NiU5l~$| zZR5}PlEK5gS?n@`Qrcht=mel?`>7ejUV zv|DsXIp$O6Yj-qByQ8tO?ud3~ca(QNb>uf%>yGSw`jVMA6ZGH5LpuFYN0=@8qhS5h z!T1aNBU%5%z3a2~N3r!!KmALPu=FrUNm%+~s7}ICv~B%U=kR7_2ClgBd=%vo&DX}( z-)xyI_!>yXFN5mhX|ud#c@_7rkI%>C;MYwOel?`>7ejUVw2eR1kKevl_)XZpU-?_1 zx_sKk-y`FEr$1_QO^*26zpDJ;UV@j;^j5u>(936vw(;lt@w;jK%@+TTSp2k&-_MV~ z@Ggme3Z&*|EL1l?w2i-6#`#I}(|@J#3m}!>0jkTVZG5?&WzKiz$p7B;!f$|7{syQn zpSJPkdX|`9S10^xNaZhv>hftDU#@3~`TQ(UaK8en{1T`xpSJPkdX|{)9lu=9lJj5C z{6L2Jf$GM;7`DYP*R#a@EiVbb22%OUpt^k8#+U0^V*bLl!k+@E{IO77K5gU6^(-;J z>{;O#K`Orxs>`R%>lypcaZ`97D(_pj)+MieS&$1L+272C40&9NL7UgJm&TpScSK}; zYcN)?Z4=y!M9<@*wHNbx=D(f|Vy19CI~~%wp7ns);(8X`k91|;yzfUYkP4OR6;-Iz zahVk=O}oVa0DVMj_amF04ic7H3Ca7BCn24LrDvFmNr}{_N|I}%j*Z(wapL}&*C;8gLqD8(wfpqgl+cRI^Iw5bq z7Wb8WO^0;yH4bL>d|ijXSiX|(Z}a#!<>cl-N`p*Ig&Lk8@84+K{aa%&F_HBCt?o*} zS3@d(F;o{%oBfI0zuh5t=X#p+{;lpw-lr$ zuh$O+pMuo#X#>^8)3)-F>s8|QSCi#>m8yuYSE)gn*Q+#b8z4g-t1Ruz?j-O1*S6#G*Vn}l zTA;d-+zkP3?^(Cq*kblp@t{O`byjCYhSPWy7yGUH$WEA$fL}Lb_*1+k1b$P6^I$>>4@0OCX)|I~Qj5 z^E(rN@jt(3mdg1pgyi|%3+bL8ZSV8z(>;Ir?YK(L?+r-j{9b^W{rpzpFLr)O=Wids zP0nu)q&BFjP{UIUuK%#Dz531H*8N)W)sTu`4AsTcw)QIbyUF|iO5qnnD!(^WmrvXH za=)9HKWCiq$3QB71XPz#+xVXIw_E-s{2EB*FN5mxX&c{j{&w^)gkKJ+{1T`xpSJP$ z_|31je_HrWSX{1rE=+g%w2kjMe%P{F^8*>?2dc|o2HW_)TPxw(&j3 z50k$w{0d0r4}$9QX}7qZ2p}Kh5R^FcNZL+q93dpd$p}PD*u#NB8-u5n+_!}UVzX7Vtr)_-S_V!2N*FY+N z8B~`~+xVXC&AY$zY;P|tlK3Bn)c6-bb>pYqqP^vqE;&e3{vrBdwzsWL|IGGAJF~sz z9l!NCDt~)hhR1enZ@+|e+S?46+1uMB{KeW^((&7D?O;bk^6a=Dd6+Gp9c}ON&ERya z=jZIlXy1Q4CbmChC;5NAm4C)JdA|7mV@LhX*Dx^U`%#~E42}`(=lQ(+=Gntz`$N7e zzwzC#vTr<|nZjW_S5J^*%{Vd^&s7%B$0hQcQ{(ZRy>Ia>=^o3^t|NnUXFNMs$+32J zh{f}U{D%2C_Br{@gNMcP^9T8jZ+<$*;~8o3T&?k39gpW6i)TMvQCX&k$KyFBe>~BA zVj&&_uzef=>9miX!MSEz5Aq@YV(sJggx90%e=QwK8Kib71E7XYgx4e5c0HOP3j`8g zkG9Vcd_AP%YoWS$+ScECj$gOWR6b##oyzZg>ay`j2%+Q#?1o_2dy z_|3-O5#!S~zUTGSo9}r&?WV(-=9(x!JD|Gxp>6SdUQbv5Q1Vj+srjD^)#cMRzUTF{ zZiMiwA(g)vs>`SCb3Oe4Jp@O1>)BJ_ic?Ww;39`SS?US$x+6IO~GGP}(hCC*Wwr9frlxi(u zQN9YFk$fEh>EuhUH(C2vmRppsq~nkK|17m(G9*uK9He`4w7th48{4;bdNzMQ=;vA= zAf5B;0kf6*fWO%JC7r+jsdm7_tOLF{)&bMD>xbX`eH}UvHl}LpUlzyu7uweTJ^L?R zuaL6!3aQw7g><-HL7v}u_FtoQa9s|m&7}ltSOeHxXj}ZA{nu*NV&ta^GVC9ry8OAY zeVXHWiaZ&THI@w}g$^@v)9-4_>0xor0wzB zizQ**AbEBjA>Fg1?cE*+9+dz5N-mP~J08+$j~!uVKfi3q`B7fZtSqPA$lK7r~cjJB1x z-+a>OqXb_LsrVA8E}piPx99kGi_Rz2*nHBm*nARg{Z_4`LHnIMfw(&i$ zA6q&}erg~!Kg*!H`Jrum&+EsWKM8*fr1D2Vb@{Z7?|J=b{~h5sogMMFLUsAHecId5 z3j}#4BzxH2kRgxP589sXZQB9)+uK;yBwRl(fpps2xiGW0w=-F>w|= zd-304dxILDAp6%(2*&<{GGMq*Ds000<)zC6UkR!BX;57}Z7Xlj`m_`eD;R#IJ-EuSdT*f7|5``LUrRG0lP(g%7NVT2SL6C$@;VbGUTy7(ax+-dB-F3 z_Rn9R78l~Ms87=&o%%EmX7>7Y9sXkVDd~9R@}uPJ`a|;U&VY2!j<)xBWchyi&u_#N za(?GPI_Gx=%rx|Kc}(D|=kVeH$8NY|1gUq!S|h_=Lr+q#^PDKH#nc*c>-shaI6c-u%cy5#5_|BI%el-?PAB$(_iE^weu)R8Btm z84{1@5#caD2R6#F9{MbnpXu@&=I6>z67xmzcz(EV@vQqwEI*wro^wBvcsj=8`Si2k z+!@d9Z)$%28_UnD@*Cgs>Kl(|rf`^_b2$lzvX~Lp)v&y-vUv8x$E*08Q{(ZRy>Ia> zIWU%=U3;SXymN)bvol_Q-jLq}<@Fc&&4d4m<>wFb8{hnNj>j|7;<@xFIrppM@tkAv zy!L{`b9g+SWA-hcSqH@OvvGHnpN<%hvMk;V>uOkDPswkXpHnx>Z*Jci%g-<5H@^AV z-6j^#K#S)1$4%Z0=G+~Y-w=jpJnhWYuW z{D%4YxIun%WjvlA?^`^Z_K)S~M2qMBU_SoU#vbu_4zPG$!}rmc!`F7i^7FU0Mkz*$F}`+@Oz-uq8* z?u_R~Jn7_bp7e?P3NVLZ>vZ-V?BDdlzd$FcnUMtjvbJ)JcGvSL^e%5{(_#jK}loCsBL9{bl*hvrV!5yehx( zEw8@ucxDQR`8ikPnGx32Fh5sWJkM^FcutMSbN0T)vm_j=hxys{aa5n5{*xSQXINLm zc;1lTu)HqP_Wt1ZSbqK>zwyma=Xg9LEuNiNJ;?febv&MPES}f!1_6I_cs!nC^2Zb1 zZ|`WrZ6D@e-hg!GCtiS=eSTsU{$leJN#|dVMy$bn-a2q`cexYNy}P9CJ^#|@-%-1b zO()p%+1|Bsen&z&=XW5??C19xu6lNUN#B2a8Ba@ieoG^9i2szwLcb_zjROp1(qdaNhjW-iPbtokH7jL`4npvq{crNsvAFT@ z{`DF^WEekGmtO+g_*4D(y)^!m#os0tKW*b5=f_`qh}54-NR59QR5yOw#(ysOly&0# z>_wvt+LyFjHsK9WT|RB&5BKA*{zUlvp0vh47plvrZT$WH_+^-CVf;mq$}fcK@@X4? zk?hOuykDGq|JSt=e?6q~YoWS)+QuK?$M2>5l=0id__U4hx&L?BTM~Z}WSAeQZv2I? zjqkbt_rm`b{uD^%kA>>;X&c{j|L;1E0@y!5Dt|FlmrvXHp8J1q*(&@RNaZhs>hftD z-*f-(VZRZ6F{JW)Lv{JIjqkbt_vp4#|H~njUjo(T(>A{6{@+{V;X=9wGR%)YUvT$F z{5_vBM0*z&%O2p-{+c8m;c2!m){_JXeZ&9Es*>dL2CSkP?;Z>-yJ@Se@b%x zoOY7`F_6k10X5FQ0zTsxB2c|sB!*B@L3tx$R64m`LX>MTkMa!WR>LT z4oE%5tx)5~m;|4l!%#U!u)ikDHwV8_o_VETf>iz*sB!)(_-uU0?;VEwo93uLbDome z$3TYphZ<*J0iWfkO4w0;@VqWp{P*paV@!n9W845WevIqjv;6dP;?Kk1t^Cc#e>J>-{KWVF&Qrdn2S^(} z2~v;I9cug-UE#C(vq!e2i{j6bpCOonW&Zm?D*qIyasJ8hS$^in_^s@(y!{Jd*F!41 z7HXWm20qJAeE;t}`I#_Z%NJ6QaUs;Nd_8RysKLx^0+P;?H@eAX>15%H1E7bTgCc$Ue& zjC-(#;FagZ`5A@jVV1#pkXi<3L5-KenebVDCdx6A`m*V*tbHB$Nmm{R)6B(JIqsmmb|6y3o>k9P~*p#1fS(+Xs~S2uD?0@ zXMQH0`9BC!`CshUvj6`KKI8AfqpfiKlPCUJizWVRA(ejx)Oh@t!DsyW$@y-6I6*Kq zmK^T?J%z~$zjwHA`+sldoMY?XJ1qGOXNmdl;~|~-;Eph}&j%ljzu0_m()D=PzaJzs zRR*aOwgaFtnc@E5w0#z6wR=O5A8e30+IJyC9_MIjdoIxW@5a_9Xrt!?(=hYPd|d_U z85O<EhyINR7X@v%Z+cOWXL_)0m$3QB71XMSE z+CI%~}N`D_QqPiS2LwxDKf1KuW^WQ=vKuOVMU~lMSdhwcOv@ zy`PTlZ$0^!LGscSkcuA!)y30hc?*7`;GOo6IiDKiFMUAxm5|Dx2G!-$HhvdB{_1++ zS3xR&E>xFK+xXe`=gyHI-G3!*`>&*9`>&+J{Z}ME+4kqo!C$>bR(S zmi?`B@VC4w{2EB*FN5mxX&ZmOAAjlnTE38B`9gL1(_kCFpC5nALmEG17(Y~(zYMnV zH_JFYY5gpFLHI?G$}fcK@@X4?q90%1FG<_`CF$7vC8_ZJ5~)93{P=U0Nc>|UHU1G$ z-S}x+{3~S~o-{wJUlM*5r1IxNb@{Z7FW2MNpGU>|ht)fj4;k{IX7FJfU#`cA`J-!u zUk<7K5~wbpw(;e9oS475QsajV_<=fXC=T#pm;Cod9y1*Gx^L3R1GjW5^Z#C&}} zDQ)j3rTIRR%MagAV*QNv=g!gPoTn){8IrdTg-$+jJxpB{vt8IOy-7DMZw%~ z@HwkOof{7CKWH1@bNt?IhQ!}IJ&Jz^R5yOwKI8ZKzYydkNRHpfLWVq!-)Vc^F0Wme zzrWbxFK+xXd@_vhgE$3z?FvI=ZIu7l3Uu|5UyXUxTA zd)}Xezh#;5YaliLWl-JtX`1X+xXd@_vhf(>BX)ZQu&LW z>mBn$+xVW(``MvMGA8GxB4C^OUm%jnF@jbuyJ$k$F%ORCt z0@dZyHooWgzPSw)`_E#?u>L@G`MqHq-}8Ilqh&rYT@D$>57p(Dz&5_;_r6E}OY;L6 z@}Xw%VH@A`d*8#J)BHe&`GM;4d&4%q=l8zb>$B#j`y&2UsN}oPs@{Rmo|VL(_q#Vc zvGv65@#+K1x5@IqRr8<0XBkA#B0awM-A(Ifv*mw>=HKOi#4?EZ9^d=!cDKaej6s&> ze}|60GWZ;WMf~{l{#^Od{>S+Z z{fs}y^E};;FU|e)e?IZq{coM zYCQJ4;IsUAe($^UjdF}VKaP&^5!CoGK7`Nm(=Qf(j{L0qhwvYT)N^q91>bUhBpL*Sg?) zv?KId7ZxvV<9G4n_d=y(TTel1e%e5F^F!PCGJl#mAD<&Xd@YguN=W5TgX;2W8(-#6 z6Z7ll2)`Oq`HP{teA>pB`P0PwvPr@(f>eGXRF_ZN_%eT*nBRZA@CzW7-vO%2r)_+h zKTXV^^NjGvKq`L(RF_ZN_}QMf1+XLJdfCeNP-i}sfBv+DcMj;UkB4;n>y9v6^w+`jmV@yZd)|_C|F5@K z24|OA4JiprJqa~D!C<`+Y&wDa|dCvuw<$W`xQ{Gp@%wFD?F%IwjB>y!} z&aMtp6ZRZbH(|7`ytC{liTkafem~ddyy>y)=fVcTPk~hYSg0QfGW|JNk`0?4pFL3QKr0J}wf%7N@RPLN$8S)V#UhCJ3M z+L`qUu-xmX2L2&`eOkKC-nnY@Oc}R-&(?=^__!$E%`bf(#cm3nA!8y z6@T&1*S}tuldFRa+aJ{M{FtxjVEg22f{d9`Lm^qgE_Mb?%olCXeEoB2-h8$BjpXaS z2Qu>YCd};lT93b2zLH*_j%K%r1)qDTNBQ~$s+%v`)?fKupSrCVeDg~Yeg{++Pdj&i zlA|t{-7fqhNGantrJ?p=?yR@}B8v*fQhEXN~| zPW$KxGkbX-jK5fUPsROm*89iU_nBX2wc`FEkUYDGAlREQyyC1w2}nX=O$Lmn#xZO;nv z&n2x@h^W7u`@H1qW=JPrSHsL+A1=dREMG~#r+U3i&ZNqM$(dlm#Q>e02^U<@w)XG$ zJ=Mv$HnF-@Kx%Oef*Pie#X;NJzuYfpj#qND|1HCWUjwQ9Wl&u{ZR5-Ra$>&sdLX%9 zPR#GdR)PF9qq1xKJD|Gp)3*5KemOC}*Tce3K`OruRF_ZN_;SCTn7>djA5$QeKNhOX zr)_+>U(V#`7~IVnCGn4eRQ?F4E}ypXJ;%FSuGIPisr+S7T|RB&`;K?V3*YYdQ?dK~ zba20q`(@sraed5)4Ja1 zaH!~maPah3pkiJ++j^tV)*+7Qc}bT}neT_SGT+^PZE$kwrWXS)53v<$cz%4|Pn+eT z`zIY0a5L5eqrYf%y-~gJWxai{p1@siPky-GUe^=&@iXT)Wq+o}Gvg2EH-*3d|7HH7 zv{!z*T`u`)zAVcB4ybPaXQyV zU)sj^+&`>ty58A3@40_iH_d-@Fh3i_zr&fIW&E^_@40{2(kT*uC8Wkb z4XPVIZR30HAGTE2yHwhGmua!}F0_sBxqsL&84sn4AvONqP~G@x8{c#PuriIm$l@=I z#ZTM#p8JP+uUGTjKWx~eQohBIVSb=yM?GG8b8J) z`0N~p$}y7cuP{pP`O@bF_k2Mgcb4AsxpnAF-uFf0!#%PGSHy2^e0aOopWC9?w?d7_ z{tkSWpQ_mYUc5f$$j|QY%P}@XYJOgU8b8K*_$)vDV)5tT&-$J4uZ2|p6;R{+%iy#8 zY?gJu`SMe@T-eo+%3cgL&VB$s%TIj&usr!0b&nk5JV-spSy1E0I1@h0PnTHyIr6ja z7U4e%sr(0^#`z22v;3@d_V>y${@FWR*bR`%-T*bueg!_uPep8hvOM`&q4j6J)t|ev z)So*u>W{mBSRVcoZC`g-`?@tt`3> zpRC;yImQQ%M8|jsYWx^)!DsbnbMpPScK=rRn<4caUV$3tuZPd-&%_wNmHf0HC+w!1 zBlcFParQg#S$+!q_9xptTH}Wdz)D(LGYO^~5>iFTGUaKM7Lf?+!H{e^>Y{Kkoiv zj6WA&+t*3fzPe{=UtKfWS3hTevK;wokBY(EH(7qRX35Vx8Ts*CPu#dzj`0$t=4TDm zcz#yFXZi71Pu%!ppXH}tEdCtrYsuZhzXMYFw?d8Q ze-eC_pUuvC+#LBC{j{*lA(dSMHO@W@KFd#hJ#n7=H2#kq<0VKv#u}*cW2}PD^3x?2 ze~$b#KB0WbkPo#5A3n>^N@qQBj{Nk$U)TkZ%I*L)&OQ`A%TIhgai0A2M8#kqcMzl= z)|v0e21TBd^PG`;hzV|3FrZkE}ZL$ zi{bk}TTlGn9L~A7zMiypX|@W@nqKL!Lj{$ zUcNz2b}6Jh07)-`%JU5uoYLm=KUwhmU^v*DfsF3A-(kyht|#s_P4Fp5#kYa#;%T$4 z2|nBVY3_JFwjOHxFNI$Zsr*`~E}ypXv%Q~|gTLix!moi;{xYa8pSJPyy`L6~zyDm} z7eFe%15}q!+xYq3PmA%(?iPL#r1A@)x_sKk&-Z>>jNkq$;Wv$l_*nzF5}3I z`Fyv(it$HZD*SRtjlTq{%cpJp{r&h$pAdc}r1Gahb@{Z7zsPTYr*2mZzZrQ_{tl=v zpSJM_`0?w0D*S3l_)CASFI1O54Yu*0^V{EP`yk=hLn^-(s>`Qs{NaB5)woFV zT3Q7e=0~rkVgBdxIvVw#`}^^SeOLI!kjn23)s3IF@fT%z-ylc(9X4J0kRcyx1|PQZ z2l(-q;$bB7Qwgd3X;580ZR5Wy@%NSqzX4MD8=$&; z+QvW5k3UTFQ*8O^t@#P>7qA8=bqaHYcdz6c9N&*NSNZCET5&L+7W5CjWAkYNpYv%E zKihaRoNtNs|9j8Y{6L2Jfy(^2@xKC}<)~T4dKu3P-0?P!(HMRiymWf;3az8_t&ZNM zb<{n^ovf$PIk@A=_;@wOpKy+x!%#?$CohI{PXLQHQswYP1?SeJ6xj3-g=vW_QX>kEJS zSa7nbVUSW_sf(dH6*^7Z){_khD)j62ep=4`N#}e^@M9nqKLVl&|XKH_s z@SEp(ww?*&$=23hx1XwfJjc-Zw?fU}!!~}l^-MYV+TK&v-cw-CTjj6!~8>a;~xRrXL;qy>4IDUiRO`-3mNjbo{4tmdM3n|dpY{d+w!kx z+IkKSi}vt5q|+XrhS}o&DrgUn;V=H{D__1-&Tc8BCTtPZ@C3O4lD4%6zx9<%=L^0P zQt{KEx_H`F-k$3#`)hqIfK+}5s4kzj@jcg9b{i=1H-9hU?||y^X&c{jePw&Oex#bt ziuhZhx_sKk_gr7O<@*wU4W#C08B~`~+xVXSQQ39EFM?ElAyk)7+xXe~BV3Tk7#H1M}Xz-k9JLJwLdDoV_1)NgG;AxKNcgAFM_+>*>7P$y9H|L z>^&SWybiT&_RD3nFX?>V^v^IYQ#SjM(%Bbqtv3u+K41F7=W(QSCk1&+e+?3B9;Pc)<9|Cv`leb`1gZRbs4kzj@i!iukss9OgL74$ zfta!5O;=Ay(AQ$nt#YJ|4`ld zt6&>{`7vJkIdP`&+d(S7`RAE@+QuL3#~-gZ?L#1yUmo1FTYhL8e^+;}_~-SK_$NRr ze+*PNKeUZM&yPP+^HXa1;r?PSpSJP)`0)pxto0L8<1c{f@@X4?V?joK^3|WVmk7TR zGds#}2qt|j|Fn%i-j9D`sn#DzgI>G@t1e=%Fl^I zHGar2{vnzCX4u9b?8on;{ZD7>fB1aCji0vhcOC5&|06$?_-8?C{8OO1eA>pJ=gFU^ ze8`XwHG>b^_hftDzmp$-`Qs{N-J|^0VtF!rug`{CcP^pSJM_`|&sa zO!zAxm0u0j< zmuvY#D!&-2%cpJpjls)F>%;M9zWU$kT;cByrVfI^a}!jTPuuw8{rDRzw0t4M@`dX1 zt6>|zlOKQP4}?DoQu!57T|RB&FArW)N}Qjzg~D$h1bV+xWYJmy{C6Kk_o+mqLd12dW!C=huus&yPP)^V1Vj`2|p2K5gUo@#D|@ zk(MuHSiVqQeg$mfZwy{iN}QjKdjGP*?q8~7_b;@KKi-eOP22A}Yri$I_DkFNojmyy zBtPpQH9s{_-Tcrt{_@}@rNsGZ`wQVW-WBm1pt^k8#vkm-KVA8~jSn@058L>=I(YT} zGd2EEkYW9S>hddK8-JcBU+=$0+5J~V?EZ_k@%#AkH|qF*g^mBKW8;6?#@~2^SAN!B zC;49jsrjjb>gI>G@yGk|H){E=fK+}pRF_ZN_?GEkCe^>B=Qq+F)#ed@Q5`Q~L zjlVh8Khrk;JU@P0tv`*|M*Ie-Zv3>3-^Y(XzNf@L1XANKhwAca8-HW)f>PrA?9%*i zvi#S_@=x3NP+dN4;}7=ZZ@WPF>mZe11J&izHvX>Q<)p;%&%9pvqac-E0oCQxHvT+M{x!;n z4Eazq_^^%N$B(~uxbT-iD!&S<%cpJpjls)FiSx6oi|{u=D!(48%cpJp@qYY~xOry( zTnbq>`*}{z7yp0MeF=ONMfQIPNM@VS$hr!OE9>gYuHxdc3Mv{73CJm~fVwIwO2@#0s1UjG|Gs*!r+X%oW7gf@ z{+G`uRMngAZ&kf|b-jA^8c`F!1=*h>UEC8Np>md<%vHmvbAJL}# z55ynJrL%=i#>6E@YD-~)x*PYKkX`2)Ouj+LtC{@uY$o>;@?V(zU~eX;2>G{6zRl0% zjzXTsUjT=jeA$zUeGD%IH`;R; zP>Ra8?Z)J3Lf*^dzg^Ab+l9P^$(N00@<1WK!Q?3&n0&R6pJ8%pMubj%V^4!okOddYG=)Jf6td3bX;@%U0ow|> zh{@k#UrgkmpXACHF!^0+v@e9*pULw|_~}X^U(RIrElgf6KwDJp-B6!2~#?_~0nb__B?$nP;Z@qQ+|g}ju>f0oXDiI5*<@~flx=?+4EfXR1C z2Ry!zD}O7KhYjSX_X^p^RN z9V-8*aPVFs)72`FAGngAzEQ|)n4Bg8ktyUCnS26Xy{OT;3HdQ5e>{cB@j|AnRlt51 z8dG}u)Dv9!F-*=8@;)ICV)Aks9=8iQoyp_JF~~|GlPN5)7sxdFtdQF3gVv1wwwG$&bqr)?dgkGkLVM{N+M^g2^kSlOzav7L#x8$=J<= zJf6wDWtjQ?apuVoCjZ!$pZ-Y58BD&*$K-c}oW$h0w=(&8A;&TKpH3z}EaW3t8KUw> zp;e(;P7(5#OrABA$%R7Rz~u3lGubQTSD5^)i^)BN{3Mg#mPO9lLM~zQy3_gTmWo_F z5vBM+n)ip_QN@c3KzdoK@dcBv18IOvL7SL#HAo4v@L0j5B#?&7nD;!B+KV~tHluVz z(B#Hi`)=NB`7^s`Ez0j({sZem+RD-TQ1D+x)Q(SS3qQ*5TaJ{YsJ;jVzXzgrd`esRQGVZY@wHt3 z=?DdX5~6l|N?Z6*e&6z?I~hNKQ1Is{Krqx`<* z=CO>w458pZi>Mu+(iVP{-?!Y4^$W?*7KDPo22ndcr7ip@zi&y)RKhPnDELDVwc}IT z!jJO%misYis`4W=%a5oXe+`YR!TvRy{lwVDr{?4gvp#=teQss^E(is`1EO|(N?Z6* ze&6yX%vDtW07Ai^gQy*!(iT1`O?)Y#-|P5ymOskxTb>xq<^LR^lz#`J_VQEODu0yU zx7-Z13Gs){Qw0B6MD6&Lw(z6;zUBV*jK2k;;IBc{j!$U|Khpi-2KYbC%lHKd1%C*l zc6>@(_>t}pH-NwYY$-oNv;2tK@z)@2;Wu`FIPCk4FWtxZ0fd4-2T?mdr7ir%?hl9I zZ@!K3mmw7VXA!mIQ`*9B?EY{V{yE(l|0H%tf`1rM!Z+_;(H#6w(8$i2=in&5Z}|?E z%_N^sBNY4vh=$`o44Q=>$sdh*KP{~MCp?V*IYPnTfoM4XR?sZ`D86sm2U|EQe;0&; z-vQBZ{C1#O_)&b{(wD*b-4P1@1&D^@p9`AR#!>pCNf#bzcr%NW|r8bdFWG1T72E~RlaqCXnKuSfp>0mUrweicF~`>TkC zm;GhXEdGT1qiLl4Wl+cphy)v-s0Fto+vf zQf~>yxZwR#+!aZeKG50f1MMR8fi~0!g7UKx`{O3?=N~SSAB3j-AR1owmqD}m6MlcV z5&o<=o%2|PQ1W;f(eONe1DeI3U(`O?YTpL1TA=fcum;-VerRgmA{_*!$bSip1gj4G>1tFpfC9dp-o@14#~*+ zlD9}6g5Nv(5Gu*0=u6IKVU9a-F)>qpkKzYJslMg~R!Up?lBoc0y1rz8lHz6D7K8%7 z22ndarAgLUUlQ$oMwW%RlW1(gKP<9f7N61<{z}ykL%)ZB_Nw>(a1NLMK>r~A*NEE7 zPiYJPhA8o&^TSvhcL1t-DgW1qhTtP@;YWF&@gGp(5&kNKg8wR_c6>@(_>t~2Ho%{5 zP^S}q974fwj;I}<(iVQC`-~0X@4trew;&Y!HHg~rDQ)3@5}m%y*PQXYBNY4#5Vhk| zy3T#Z28!I7xA<|#(6dN|cNn3GM=Cr@hu&udSi}0euKgO<-(5gGf%K~gZR5pHkp4R3 zh4NqZJ@t#A|0+5xj5uC|`LBBWCb3{QuJ;roB^Gq^qo^KY@3^{esI5lZnV*;K5APiYJP zhUoD7^i%Q_-vy!IcR~it@M3XZ!;rg7{w}YR9Lvg}*2|{E`4yj^Cnc7xxc@ z%&@o*5w$Tap3>1Q037`pvMQSw0AC?A@n``+=_nTf7x%7@VZrme3*wkxEfCu0|F-q< z>wEkXJ-;42r8;=rNQA<#!HAmmBmXLtj)q^m4>ROSgtTCK1)+&Y{GxP}{5q1}D8Gh~ z76S5>hS0{ZBqSrtm(oWB_g77ouhV<6Fzinc%GXzjn)M@oQ92raZMc~s|BR6M^#_C| z9`TFPQSxj3)s6D&f&`H-gf@Qtgl-y{U*F>wOTK1fT^@0L3FSw%%{f>#W*^#6Y(_|x zTZhnIIZ8+Uz07@A)mJ^6eFE+JY5k1QUcW*0)(^i}^&5wnQ>=e>_I(#^CtXG*M$wv zl#aSTj!0{~e$U>-^(#SWt6ve4k?VH{ezEG;)bBB86maXEgHQynJ)&j$j95*4je~!B)bpISr>1gD2(YHJ$J%EtpbrM3eydN&{y^U#{?~}w@hNTLN3w@$0RJ6socN~^O8FPq+K0+dX$wD+ zJxl}mq52s0?GL*?hVV^&4D%q3LCFuz4?+2fWDnB-{y%u}6Tb?fl;6Jo zA$+y|3F1exhiL%+C7z7p0|*6wj%_|7d`es8k7N(i5dJyL{{TW0A5lC1=OAt2-;7&7 z4e4vc`q#)z#_x+z@OvO?$EUP~-z+-(%}&N&hEVXIMbwT@X$wD+Km7*y)9q5mk3%T< z%@MWZQ`*9hOGBt*IbOS=cABbo;{&k>P_=}p3UsKEF{{$heaX&<82Uqqmpw(*+gY|ZEi$C?) z!(?7aYwr5(VJ5XiEwMiwiqNJH$U-vm{;)TGvG#{e)d!>uP|S=YMUiZPnjuQ{H4REA zZS4=E)Ca)umA0SD5DNUWh}z*PO|s1TxhVHnFI~y_0fd4-2T?mdrK8zjwLY66zdwuh z0be6D@o0ZV>CpWZ`dh>Ltr6!pzP}nmC()#zM`&yBBqSrZ_gQo<9n^3Afd1JOee8px zFdb2NZmkbtGy%b*Bii}#$!ud zff`$s`PL8_TTF4Kw1po@o*KZPe@ONHxCscQ{I?)#FF&R0$WsH5y{=%EoQ06~>m3l9 zcqC7h4wWZ>H7rl9&TCwr4%18pdHM*UO`g^vSx26feau@lX9ewJ+BeZY=E2id?czrw zWQN5LM%1hz8a$5DBu{L>vVsjvnrI)hxHZF1M=0=<5VgZon%bM;qqJYS3ujS~*Z5q7 zg5M8OJ3gf?{3z{LHj~x__~cJZ@JW$k$EUP~AEo_DpXQ9;1)<<~K-7*;X$wC}`xPG# zhVk7I3jPI%+VLrE;YVq|^3E}yYoA6a_zMuV<5SwgkJ5hSr7svifKc$~AZo{_w1pp~ z{mO}*jQ=@8!QX+X9iP$`ew6krBM&fsUxb3+15rCZr7ip@?N?67e(Q6!-%|EHJ8b(c z>b{h=@PFZTV95PB`+7gzzC`$Q^5bCn4sFR>X>`M$(zMB&CN()T6a zz)!SB=dn9c+|=_YKO1zh|D23_a}kP*tOwM%XSrylwDo<7b?oBZyid^}c%?M@QiP^| zFV*N4_|qYcJ~q^Uyy9mAAIIpF$U<9lUJ(BPqNe|?)6qzjwuGuxbogDrVF_>`l=7ea znuNeAKcy}F7ozj;-l>}LYp~K1`~zwcX5mxX!q15g{|Qu{Ce5i9e!k-r%{#aQ2QTa85g5MWWJ3gf?{I1dAA8o_s-;Gf4 zw;*cAr?iD%8S3A?G5)-OlXEJ68A8FIj;I}<(iZ;M=8l(z6&MTh@FDwn?uq2QB!ioN`lw(wsF_3z#oe~xxw{M`u6@*`@;--5J- zpA#Mao3cJ!h*0nYh}!WfZQ<_=_3z$T`A3NSq+9aSJxqQmZQ;+04nIc@nUfJp`Man? zW~+TEZQ*x~4!@P!W(4AmFN5R5=ZM<*Lum`YGD`pMGC!`c=Er4-+VLrE;g5|DKc_j% zPclN2KZx4#NuOikw~7vbEEe}Pe`yE>zi-(3pVAio3!(nq8(Tk&IG4+xj!^K)f1|zp zl(z75qQj4R{k$*Kzk6flf8q)*|5Suh{t1ZM%TH;m{PUv2-}O23e+5FpUxuh1pVAh7 z*XZ!4>|*?Ugo2-os2!iu7Jg-@fA_}t^JY8d&q9QPA3)TOPiYH(Y;^ehSjis00iocp zQc8Afe4w<2-zqx%CpIyErXm#l35eRuPiYJPg;4+Qjqzun^xq9u|6LW#3PiYH(U#Nfg#>$@~2f)b)1;2|r0Jiu~X$yZ|boe8>$@qX!@Vg^w zFF&O%{I1dA?^+}M3!&gIL)4B>X$!wH)W3UU{OO9tC5@jBgo1xEj6amN@W)1nKSk#E zd~1Hs4V&L7ZQ-|y4*yM@P*V99B9!t65ViA%(iZ*;q5k6=lfJ2h0CCqW1Dr+A9CpDDjUA{xJ(5 z(GYy3E&Nu|;U8VW_`4Ab|F7#ve*s_+6vJ zKe|fV7om^8U$F&Iv;6e^3QEiOD?U&T8KU`qMe5shcCpD=-j_Wmi@$mQHYP6;viO_7 zK%I1KGUfZ@xX&Qbhhr$mBu-vqPH{e)1Ty3{^md1 z$Yfo};&1*ZY2qRwoBrmd?-U4G{LMeKfkFBUS^UjEBCT_|kj3Bp!VmfB1R;yR`SY;Jr=J%xnTi5? zhP2MZLKc7X^Khy_AX9`a{^pmgWROB3i@*6ruQ1swWbrrOTsmM6A&bBHv!xfGEoAXG zp9MtN+wzU z<~#nf7v`eH&2e=+vcLH`c$4hCZbfLb_Zp@EBl(-Z4!>CTgH5#;y%Q~gy+xc4AsZ~j zc@Q-X49LKb(w6;TboQccYt_^qcK}T&@LwZpho>|x9sV_YQ4Ba#`~X71pM$6!pVD>g z`>Vw;S?qH*udky7%gp`=AXL+a+~G%C23jytR$aL|6cPCUrLr4 z{@jJmH|8edy|Sz%cXnC@J&@(m5BdDrOEi6Of~I?28rYn&T3cPyLW8k#X*Cw&T41zG z^A}WjS5jX1H&aXbP+NTr%dVYMCS<1_Svd}v#%uYVV>EyEcDz^AM$2OrX`2y;PO~%kqcA+AfFef?PEJ4Ql`~HY>+A5OAuON&_L?zS{_H)u`XQTtM1s@w;W1jtDF>wE17F6`$%&d?=}lRGUErL1 zi#m=e$>`=ReU36ISqm|=g<8$__)B@RNUTdxkbj0^CaubbK^LEvi_>!_vxvZpo;(r>dH!W!#{WsC8 z7o#dadrPK+Q7v=zVg)eyJde|LnzKEs|j((#Bh9yk}FAI&cp^Goior{KPjptF+i80R7Q>a{S z#)-)ncmp}jz~4h?hCSYr6V&9{d-_$joZ1afRPDll+FL<>>1(_xm0C$nGv}PuWNsUn z(#)(?#U5@@k z3r%-}dv3H_KJ~Yg;6xq`RFltex>|*G{Y*{&qQTtrjf&}E{T%{F{k?1~7+iPBQJ+poppHe6LG-B8L zv|73z_})+W4k@pkMqRH4{QzCBpl;VIK-c@om_0^yy=z0e-r5jB)%2Ut1J+uC`Z~m! zmW}_&4R*a=HXJnQp6s-}THtrYCaq-ELIl(YRXP`wE%m}DRQaYK(rDOviyqVq7Hawc zOz)Wq=Ip8$FVQmAPZ`bA_fOO@{MoyM)At#1JbhzLk-b7D+@YAhhX$wb1V?o{p1uPE zT*hxdB%T1CvXLbOCh$LKfpd7y*3aoI(=`p2TE_08&NQ+>7;DrZvd2fm*CyjS3?b_? z6VX1?7gk?Q|7&^#!WsRh4N_>nsil@N19l?Oe4+N{QhtZsbRw)grkvR zuo6W#J{_P6Fg!s4Pyx(w6wTQPzI@!^P<8-o;O zf}&(9N?-N=)$0E%=vVsZZrXZwmHyve&whgr2+_CJvy;4zXx6hOTUCGf@2qDpMl+!B z;p^FhH~(+0XRpS1_Fq`f?zxY+Sa&_Uw2(yOKfa#5S+Wmb&t9Uk|5w+u1F*FD|8hM$ zshB!UW9!*&qkqMEc3%JBq`G&Mh10-#HW!8Zwd>jT$hG`Gw4VK2Hbk+W1@gaRJ-Z46 z$^YSc_U_5tUwtVdg95yVLkf*hLEV&v)MPI z`2W`RtnT@B>)8SP{=dGSZ6g5x@_Kfo8$9_}*Ry-G@N%T}?C}Y-o_$oO_3U3&d@kbU z#!N+dT2Uq|$^`ZQSoQzS^lOCm>|IG^P|i-ps+p8%d7_;?I7?Qu+2cI=FQjtSkC8() zQqyYwVNjUq%l2U5?epK2R5-?YPwdWbQeu8|&djb!s~F?YHV}m#VGNccG&}@E8vDUAbwwdcc^M}lZ`eQL(6?o$c^&_vJGsplD$ynJa(>8o8^21dynDn zIva}QMmH4IZLy)yuEp}Pbg#2?6jA^Nc_IqA$R^1}I$6gd~Po3gzXta1ksCa+A zMvC_y%#VnRT!3P;+YRBD+kXxrSAbd2dr38I+V9Sbusbg9w$m3>fbWhM1dztQu3>3KIjui=R@ zW8d<9wb?y3W~B!XL28_(cR*=?gn>j+Z_;7vK%Tp!xb5s;YHR6%Ct+}u@x#nEo)%k4 z<~*-7%Q)?1a=rIwE1Nm4|M?TQylr|G$ z0)?h7Iz{L;g9^=SPy@r?r?V1^`}eR|Ko+2f)`vq_u|vN~({s`0<|f;=!Hxv@BMwH4 zbOB5TAh48xtpMOG1!&WJLWn|&sC2Gjs?X_!_+17Uap#w+h^o_*+Fl(fs6qw{m}@lJ zD^dyaw*pzhkl8gTsZsSAjuNsQZ)gR=2=mDttD?)LulMsBKCyHwDx3dcb0YsWX53eGyTVyk z3L+K!;k&6nWK=jGzNLO??6#4m@j03p>XF9Av@^?*xpBM~H+A*rk)_dU=%tM|^z8)r z7Xf@y09TMm)+ddP74aZW0E~P=)EF^b8l7{V1Lv$RW0y$hoD%vilAu2c=&IX^=NK|F zDm>0X6?1pI3yFwvYD!?xCYq8H8pTL^oQeaRM2r|1IO%W(181(o$b1!}B-X4nQfE{a zbyY*>@AG%nDphv&Qm1Q>%h^5`s>>-DQ*vZXxf&-GiC)s^xxBR%;EqFq?WFgRQ=ec? zeJLk54T$Q2k7-QSwOs`Oi&ZT%6 z!^8&T&=}-8qC!naPFD<$DU+QpjY^GaVIoTHmQtsBl=x#X?1h6I6e8Jp-Fi2l-__*Z z{IGYCcNy|tqVg_7-U|Vs8IuV>W$KU@6Y9R`pru3STW$4iZ)e*xBWS+VvkUDUC5CB6 zDSo0kxb0^w-uYwv#Tp)U+aFC#qR6A4Y-=i-;DJCIjBV!OeZ|5p(tT3EbyGxiu%r|*U< z!MSiyP;eZ^f*wk6hGFkvY2z75iRyQxA`ZBmntmft`Pm~Un? z6WNqkm4HbYC*2q(v+7|&|8>lScgN8vM|IAkR}ouk^hT`eA;Q?@eAt5!!!=Fg^;UV& z%eE?SE|e<&I80SJb)c=v&s@<^l~+R!n_A`D&1~i)oARo1h(S;$)zouTFJVlVGXV+OW)4q2r^aLKkp_M(5fpv^BM%3LUzo=@oj+ z%;xQ(RH64!2Q?Pb%Bl^mtlCwjqSS~vAASixW@C<|Sud;_!8)|G*Wqdtd=$VjfIa22 z)uBy;b?6pF9k!1WRvjI}!sIXxNUY5GMq*2iPY}b(&!6eSUjnQWa5UKh0gdMaTwZ^U z%WID39)Bwy1)i6;4dW?_k<>5X$QHwohz7G^J$D?PYWQ)&KXX|Hl*E{?9!e<~d@T<3a;q_ovJhE3@55p+_!GN~f_(kNtj}J zLWD1z;l(0sP4Hhb{g;T`vh-M&n#YDwd2%Nja~@W*9RHVLX*2~*G@8A-7jVNTB9Ui2 zw}^k$%wIEmeT!e?rbbaba0O9x({V^D%nvh9j$+7heEH>q2Zha{+lKaRQ^I z%a@T|0b?2bm$Ih%;v=hD7N_7b%v_FKxWze-9-D~AKwIj&H3kpmwpgt)9ti2is5cxu z-D><{C)lSC$8dbiHR%eib`2y7KiGB(k(N8hQ8uGpDr9bMZBf2Hw-BvKQai|@1?H0F zl$Nof=t3>IcxPtR6!;561|tWPd6tND{e^jKnGn>X1O} zDdQ-*Of#C5?so(Rw9Fa*sRQxsQLSY6a9q~{Zq^O!^~ri!??EN5p=u}sajxQs?h_9at#&( z*ocAs1Rus5;u11jbOTkfnaU_(jNjuZ^CTlb#e3xK1}U}7qk2N6N9EZR{)W_NAZHP6 zeeOBKR-aptXi|N?%KsJh@#+8Y`Uf~@)HjVXOZMk^D>E08D0}@kCHnL#FwMuA_yQMQ z`rT2O72WJeJD~Z;V@ey3b@uqgT>q_0c<#3)ls<}wAH5e12B~OfP4@usUUZm4h`N0KdtE;LP&G_s zreTKAPx(@6y(N{cysHnw0Q8j4nFA}LFJYon)JgekMtME8f7b#xIkejMy%`6K|4HLs zFJH=0@9I-6V1XvaAVCYX_y`tgQ=q}xW_)rfMh>t3K8-9(sp=)`@~jyfL(4ykLxvXB zslob{dub5ym_5Vq0mIQJ0 zzz7$kU+2K=F$kYGcg|gabYPInSk|3J!b8C!>mtl4;B(wXs!Z)PU2~8pHgK2Pl#X0x zIB1MITAAsZ}ct%O-#jB$Gy4(2Oruh`GOp}L(0C6~g1Y_zZKfbQ<7ZmR}5LZ`os=#YU1&HA`+x*D|VlP*iFjZ~_pK?@+ts0eLki&Q%kt1uH z6~(=k5B89Byq!#(9toMn0FOe-pdNyElvWdD`fTFOF!74(;N95-yeXl04&&Wdk4mwU zrC3RkVWhUOf2k{PZd4Y9gnSabznQW0_L|yqs%^Ws5(IV&Tqc!MO-XBJZ$#A|wz*XQ zWF@_0B&FCUDi~VD{c$LPJ1{|#fW=h0l?;=hYAmfV;(`@8hKRu~G0^tFK>Kv1dN%&{ zA{IiJ0Wd?{WOW|YO4HX3#{yUjjQazYzDs}%^T|q{*7HfDkcg%4!LdGG`ewtPi%vdh z(c9}@N6}@*JGa%;dIAGo#$@z%EO@sC4bXNRt*sUN@l02if3l;xrG^2CHov>nih8#e zxbox>s#WnWEM*TO`*dOoyobK@U+``$?#UrOA0#S={!8$wJbBQEVnC_64|ygj%AZfBmW;L zqV^?M(;})L7~l&mR-?REzbO^7K)P4|2Fs`d8^@c(@0nxj^1I}IN3)_U4BxH7?-rMY z@%u0gz=HfXhod0N|Bew)(~0HJ4sL|yoj2CY@^??SvHTSz{%=@5FH2ZHgCZ8ox1qB( z!g7dQf~LD`%qED?-)KZKUPlMz&V+?(2f06RIapfGea7rN^}Syd>HYVb^gazeM$bs^ z4?-6T&p*QWgVATD0y%gwDuG5;g97Stp%_540uIKfib2%!m|xVaBEt|WW*?Ix)K85^ zj}f$qYw~AiP2KVh#ohp81{NWhjBuuKeL%}Mu9vq{X>{m=(JWRK#gVpA^J`d>YK}4u zYf|11fMnYTXsKlyCUfinXeL{mwhuOqt>fT-hQw zEhg-_S+P&3VI7hd(3Tq) zl&Rf6EbzA)>$@uDOKm?$Es`UaDBTNU6A+`7t%mOW!+{~HOXg{T?yH88>gg_0L!qZA z=3;wJx(W=CwEYgm_Y<(UHc&o-aWaS@FQcWXWx`*MmzSrjm+6|oR%5kNS74`-Y@GR9 z6tKbYR$W&HuT&(zU(8K)5dB)^N0b*udt_ap8 z(0$p^#`z&&f2p+bgZy?A2l7m2*2fQdd4hVG`SHph2uShcv;|G&N7aMXAwAxW>w-ZY zBpOc1j2=5-l&lC!llEXH4@wT{V5pHjE8X}%JK$ME1t>JGY(|^ul6R5}kYkFWnj`9$ zZI0Bclc=iG@e(z1D*a3mnm<$|ks_==+};OFgwaBw7MPzzC;Y}W52z}}k8z_ROybI? zNgeo@dV=!Nj1hDBvE$d;9y^?*+Azib>I}R}N=1Qx#Eyin`3Q<4%EeBQ;Fs)hndk}S zX`gY1kC&5zk+x-9jlb+VOX=!x@9D9mLbdGKX8i6?-%{I1K5w!rlvuL4^^sbd59ces z(mL*eL=2~_1cSwV$Y8?qDO9XKW4nLoH3zx1&WDELXRqG&6RhfSykGhexKVPfnX_~m zBBbWksNwS9Yb$1bR#H07_0^CTh_AWiap4Jq2pMwo~?d-pH?X9#}fH*Eesg+nz^;b{k2-OPd5069W<`TrEJtz z{{r2`C(b$B&^xm9qaIR%K|xNf_s+SrB*c`!OYl2o2|jAAURnLAaR;uMY&I62_DOJ( zmH8oXL#meXY0)`a$pZt3pjkZuyJMeH@ZL_C{yBNH(GA46 z%0LP_kI|jJtxY@Pf1TA~m^IK`Zex6r8ZG}ya^b_$2*cJ=B`@2IQO|=@oP_b6rs>ZR zB1u*(&P?E|hn@%U#g9`j?iBh1_1|r(|L%s;ksvYV%w0>+fk#%L?#5qV+*{k%0Ale7 zE${?QELzEXH3(djT4}mTpyPnpVqCpmkG`ASJ53E)!SBJm(YCn;JDuLXnA&2j%4=ea z_gBZBeWYY-v$;o#ytWe4B}^{yTcp9DV&C(-V6m-VBNe+CBPS}l%Zm}~Q<$ExB)N^P zSTpHsX$v?Dkm&M>SbAXRO}lPh2SVQ~?d2wsG&>~}y*P=y6Ac#IVMK6hO~oU*`VVS$ zMQ8oN8yLEfyVTDMX!7d*a(`Y{q@rK8QSs8GL*SoQS(@aab2$8?xC?PLE|(_N;Ae=! z;-m!1A7LVeftDE>8YNl9hmjHt=ToX;xFlJ0n?65j7P#*5xAO)DLfcWAR7Q=1K?8O& zk8uK%`x0s@oHa4Ur$c`Xijki~y%bH3gxB9c8PVm4di?!U5v3c7i1wrv4(c&qRlwN$ zTdE+99#1}wPM~H)Vh4?><2v&;n>Yv_!yeV*aU^{hA!7jrb*0J4s-OYPv~=nUn~W@c zVoNVc1anGioX)v(!K8rJ%;=sV+sw2hK}C}PTT*P$NeA2n_=_EtC3FS!P0VPdR5gC{ zgG?PI)Pd;Y=2T1_{#GRH9{|=D(79(-q9>lbnzMiYj}V+rG^@UdM?5Ru23pm_h?dlJ zD4r3}P8omfBqgD8#9`tw9z{8z8?J7SviXZ$mDx(;%cWUkmgcTHrTLANrq~@)lF3q% zv!x_O7kO5!2TJwnZ=I)#v{6CA|Im_eRc(q|_Nb_Cz8ngEQXyi)lNU)NjPWVLegnox zq_?{PBgnmOHp~32wdVR=6f?_VMB=i~k9@;>%8 z{nh@Zkga9${xPf@%l)mEH>+DF%(qRh?}bv|P3KyI*B2V%I{(@yhw=|*;>5o@XaTGEx7`!YzjGiC;9pLkQ2vd@ zenb}G^29~v6aNAJd7KgWS9(Uh{JRo&S%Ulv+RKDn0E|;-ZTG7YCOF!+OQYd-n{oZw z-@-1b@0VCSU_+!oqlTN~t%}-}9B)?Cy5xAAbAAQ57kuyf9{k?9cu$|Fp007?!5Vxg z^-(-nIgh3Q`gRuUn~t>S!MafNP3b<^Uk3F}%7+b^h@kTo;_MuQVdQg?LL;yMO{VDs zvD={a2KFX3MrW8*mrTbZDJ@vOtE7B0&ib~tsyi9!s4DT`%!(+npXgCR<8=rr$V-X@ z`5AaAsbTx0I|hnq&Ly*rpa#HZf3!4%2cw}qxMJT-B2D(11JxyTbkd&N`XshF-(Nn0Z4ry_EQLjX-)KngE#z^ zsnAO>b|M4Y!m{lDtf|n2*HFugsnC6|{wt6=y zi1{E+_4?=0Cfi#%Zy^G8jOg*tn}xWiY~B(CcwhwumGdePm=Dmd2oG#Ppe$@o9{L%} z;Nhv>z@Sv)5GV4H$Tz-G3FW548+c?EUNE*Zi7-H-z*q%RxtGs*^J$S*NQ*S9`>#dU zyo4r*CfMUtvM~;fAI8B%C%?=CZ%Q6jYt28KDm%tMdlrJS*-P-hRyo_OIew<9;%6#T z*=$uiOskc%E0CtDTUxEA+QZDpgoHxF9_FmI|1Eo%L-YTq?O`^yYQ!F9^N_msFv0T+ zV+fXeke;(?_~b*p5;_nInN5_v*Zr%HLMI-ogim!VN$|>_0l$ z^F#5Bb|@aBBnwJWL==lDby?s-H?zs$rC4B z0!F7Xr`(rv;FjkSysRqaNU6q!-&g&VUOj<2@?|@9e zuveAo;wey{C}XBPn&dFkQQ=`>NHd+=Git5T^Wg4UG8?Ws`{&T}Em&ScL#}j<*irKN z7HP+n?k09_rYv$xleS}Z??vZO$0+75G%+hM=-MoD+J|!F83Vt=bW6uvyU}L2E~Mjs zT1O~tIcXyh6Jz)m7X%lh^VPwqaqno7nn3)bRB#h|Fgh(Y_Rmp^(riV;`4MQu>1=c= z;u9Y+<*cG3rq7Dh5mO$iG@z&GF<*|D6wWYK>QW)cAN*M{Yrd)yZB{#}K}#w7O(v}>t@CJ= zfwQn#2>vbS2k-Wk+IuYKT?Uxo2*ELleWjy zGxW;a*u_9aPp^cj=ntUyO5u&usclBd4BF!>6}|OCsIFUKKx_FNWi2ZDwvU-AdZ^hR zQQgL-qBjYoqK_*+)3X8}W+9e6)IBZ6m<^L6NUU84e=u02pbowoI|(V5^=qVZkq#a; z!Njq}IAYVmUx#Cs5FNZLMEzn-#VXdgK7P)%!6Bf2ef;eYDt-L9m(y&d^w_ZvTt@MK zqdxwXf0sUf!{sFP(dpxdO*8fJZDvB~L-g^xn>C=1=kYaq9dzoTzKNj6UUW^6 zxo$jS>gO@lJjMqZs-LxbKn-QxpXhF~m&O!1Dfo1l>I7 zEYyef*2-r(=IUh3pWe-^$4$jB^8OXXAxtt_;GtPm2E@@(hk<~Mu5E{kR?&KsQEsDA z7bqG~UfaYdc|e&dC~j!Ku@F!yV%&Nsh!a?%l~)CV5TgZR93UnN#6&>!5r{%l0Y8;W zQAiLg38Ffei*TcQAMyZ1Kzxp`Uii>y)IcAIy+)ywCe6aHtcjN^2@nrO1Kb@1$NKoi zNyK+(T+!v_n82owkECCHK11XWnz%^%>Aa%2^!%wsj`W2~fXsU8KX(Y#v(mvD#<&Y; z%vPiGxNhNk)+wkZ^sIyMh+R)zi$$8~S>=iD<`e$`J?kgGB-GVYpK~e!MPfUtFg^7a zxVT|`pmj4vtrY2ED0Xyw$f;I`IA#7NsEpj0%#+s-vESB~yhqAX9H<2p2fDB7MjF?> zW5$^0wX8XP06mfSLGPSMP@^Wv1GYlW(uWZ7`EiY~(7K?NPx=BBlN5Cw;J#7%KUp2i+PWJCT8*ewqxs=GG&^0+l-a>1!v6AAA_@| z%Bi@k*%+ns(14^H<`z^-EesY^-vFA%EmF};(VxK zfBa88QLjm7)AjAgu9BguUVVFd5)b|~g!}fTfX5B!+rJq=)22<|e)z)1^zF<0Dt-G8 z20>#|XzadkVm!)&CPsOnUSBYTw>RIDeGU=YliUVkzouI%bnO>o`KX@Z`u09?|3~`v z*Psw8H}&nOJ@qf^+b92o0qj@k+fztG)u_IG?wF9)Yf#_5=%G-3``~X?`$g2ZAHZD; z5*wv&|0yY4-~P{|s2qlkbQ;RSF6RCo9;r-yd#H|zRv5}+Iri>lM=@~(@8c#KTaM6h zPeTEA1_{*fCO{f+tq6B;@#i9a5!qVQd*`;1`@b)RA2_a=KKP2JJhqd zPbb+TOl&Y~HAXg^|BTT5#~GjhY^!fR^8ZQd8;BcX&p!~C$w}-IrzYYLs)MPic)lBx z(~)%JPs1O&S6n=ku~?g0*kGaSDKB(B>Uttw8{7CIGYwWH_c{Ut^NnOGG}g^%C#9b3 zi--2#NqlR8TY;FCGZWQ>i91#9vdJjvWX#H$a$9&Z?oCgIR%Vm2It4x}sc>It{?QJ( ze1=~_t`Vy84Gp~xtL#b>Y0-hZuypP965M!2JB@dlH(ryo^pmuJPuKLbaO2fMw^U(3 z`DIb@%0vwO#u)09bd6Fjy+YVvLURUL(VX6Sm$K&hSu^e65Yi$cH{)ngJFovLFK)yt zcLvstSkgdYrI&2{vzSf*rX{6wh9!I>R@Va1_4qQ3qKlL}ehjk7UU*OT>e-H57!2Y5 zE26Gkd;-L$*U(j1_({mszw@Ph=Pg->tFZf9;5x3)ne#1pl{q{F_j(%>E`^Nwq>xEEm@sF<@VEEWsj@Oli<%uFUx_) zyc~B~j^=!`pM$(5YGpYNa)9D3%fUUGer;8c@aME8ny)N}s+nLM`z`LI>6s`nhBd&@ zk6FNSx-#8|o$YhnW1N$BJH|L?Q~){H3zRM$BZ}fLi9h)O3DNX}%M+n|WP8q!xfawJ zaR0l~BOP!&I^g(Z|9JGd@i3?xkDlYnyHRN%WjWw6K#T%V3d(v2zVk%8mvSB(v?K5(4ZfA=_J(F;dujSF22l@Jv%eKpVk z+0^sAbGSk{&$|wA|DF5oiE!8WKYYLamul(4n4r}X8w+V$S6*wJfTtRp>kOX10 zE1foW+w(N?*Ey*RIiDkc8*<~ob_}J401Uu|!5i+k3Mw6w?Nj##0|OF_Ty;Y)5PQ4I zDKlC5i$W*Qb&+hr$QRexdH$l$KA_7R8F&&MJvXuL1DF>x6OFUv0o<*#Uxe2OU=VpQ z)j0l~dLIfaHA+ztNkmP1T(?-`l2U|rHOc1QHU|3`O^+>22`Z>6)L5zvs%d|Nv1HqA zigTpl$F0s_FJzAvbl-f&b~+Eh1!2|GQa_}_d|K>aXh>wo8KlkKorbdsBr%cua0O(e zBqx%JYZfv!-ek%XtQDD`w1kLzyMlvGbK;#0D^{DS^3^#5 zMO&QlFBPgU3I*xH2UFxCdcF85q4;W+=*aU%9d{{uKTIQ-E-?G?)Q|~p3b?z$G?&ou zHl~ZSw^2(4OQ7cK=~9sjJl4Q46IJanO^Mvo}Q_gj?AV0^y=$p4-3-F@f(^!VQSyGF+M zbKp!U()eCzj_(JbX~OtEED3^&K|bWeD(W;pAIIYx)c8o(N@y{4)y*dKV*(B39vau> z3v{0YiVv$3Bopxm4c^VEc;!y@V0J!+2v|kl?8cvlKa72`d5i(Q!p#_Lt_u-eufEQU zJGbPm%}B;`7x_z?XhHhz`&rz|8*h$ZpcOeo+aVuCQdW` z+!Pzt(9C5cH!SG!p`&xhlZ4h|X(%C@{rR~VVxwU^dYL<>Y(qxt3EPu)?36ACXB|;xm(e85@B~z}-!+rtJW`GJ;MLc{t1f`e zkH{~|k9gLrex9jqPZ-apc!*!`e@*;Se%HK(wiO1xlM2t{h1j(f8Y>q=+{kZG$+~=N zJw@LxdJ$fA%8lpozl?^PH`DFW*z-o2-C{c4g`{Ki6FW&o2cvUgt$^>WauTEM;AH%z zQhxy1$7DB181o0`fegmO#lYY~bsk^;{6G%3=!6MpXR+58r~*V>m>B-EF%e@;0?T8E zv3P@;e$?U}0zn|=Rz%gQsq6Qjlpi&+$NSAw)bIZr{;3LYC&B!m^-tAnPb1@dANb&@ zGrrSM9l=8agooM^_B#+CS+}L%Sie+2&ak6r3r}&tX1LBGL6L3Z%cc^--me zB9*6$9BrV4^9k0U?SS9=as>-L6H5aOA+!FEek-^9DU`*8|!N=1g zKHfd}I5fa9RmU*xFnY^~kDqdwg~3IWn5s>|$3KRw2df?|`?lcYvGh1y5@+;3MSOfo z@Npc$$5c%SK0YPl!ORJ`P1uOqDbEc;|?ZpAmc`c{5^}m5AhdMof>mF{zl<1 zfWLR}SB<~3&@KAoZxa5N;LjX8RR0ryI-eNL&pQagKAk4%Yczc*+^>A7m3&=eu8Ux3 z=)q!WO;>Nq1}#9*n)9Zd?L~+B>eB>eglE%6lA*G30Df^cS3L!_vMob7Zw$nKM#oa@ zzfSiiP_7xsHJNgil~}|a&!HUeksR^0A807lK%>qVjRz>pkbiaUfia|XW$%DEbWN=t znvC_yfW+FN2^6|&hdRoGn^ho%*e4$)pKPW*G!1<3Vztip$%)inSn&M)6WaNQTRB@r z3f8|QSpOqyniaKC_F2Z`>TMb!O-pYpf2CkG-U;TICpq5IV2%;S*P#EpLsSG>WP8We zjwr+cJ}BL2`^!!m%HhJVImOtk-9*Xi=x()|vwO9($_Ku_sp=H;-{&v}-WqPd{W>5T zzGbE%vQ;nCi$t($# zkFD7$4ZB?Mj_-O3D(-e>Yc z+9%z(`^ZjeAD3}EBHZx`g%LL?s5%`l1g|m_FTprB2;&x*j*(%4{A{SbCsGwve~KWN z$&$fqA4hC=GlP)w=7g5lVVoKr-k)v*+`rnNb`!iRZ(;3-eD42?kpsmNj0Gwd(znJ* z9S;7z-a3So|MKwizxzVmF!Q} zlutyQyr($WmCgtEK_?vhl?$r(l6A>zjVbT#Hs@&2H-aAAW0>!&FN0|gn*5bFo)7M8 z?bTau=l8F+-mg2~u1rLYjV$U{q@T6lzj1z3_x_Bz9^qwDoV=D!uU&?Ncpu!(!G2-A z+YvJc7k-PJm2pY31< z{#z%~`>G#?zyC-*^$UHUMg}7(QvT=djm)3W_tWY9y(FjM`TrFjEMzsKOt9b!HbVWE ztNKTJ|Jv{Bz8_(JMweVkf@q9ZodtR-Y3FQ6Q>Kp^tOa5p{zh#I)yXxEtTD3Cst>30 zN;NLWQ7_>k2(nuAy3vBT0Y$@uL?iAO-IPC#C&rhmPg(inOX9J&4v_o@m=2~xU9Uq? zV;p@$&IqiWLNc|)C(?e^%71i({Lg4Y{!^mJKiEGM#}Dk_W>@{=3YcZmUJ5(nxIWiO zKfx!1T$v6WjJt6r&IjYG%QRPgT}0+zq;=$(cim0Lj5mSdKq=}7VQ7^^j`(?41w4Tk*NP2QvZC_{@Wtd|Jwa^->;|sY7l*fKy3BDP?-~NFvjjtS}ljLB4l&| zW35pmqI|24niZ*hwGqlE{X6JSw`V|e8K=qHID@Y!Iv3qATRCB~O@r73JEYeIV>E1; z{W*x2AJFoQH?}gj6y7z!%T-R(;GdT!Rrr6=+R_*SU%mKC#9wlmmg?6q$HHVsbC+q* z(V6*$dg!f_U*CY1VDz`=2bWfH-MRdTy*GF z0Cj>{A3)djHypX>DwjItSNIQw23GQfs9X2zN7ub18>9M&EF`J>479ADGXI_FFmFb>;7>xb3z-Skl z0CuLYAo9n3>BCBJI!WAo{Mb(V#x+`jt{u_mRIj$a3#se`gHD+`lgoHcc9x z^A^#VYpe%X@eQb8&Q8fWz5blfsgrYBeK|*T2i3)xM7hEZltzX&t3IFvJKV{G@2C6W z7-+LGnf~X0sz2NK2mgPq?5z6)6_}W0vToo|Vx2meu8(y$K`j=_y67s9V7&6atpX=D zBB5?%7^~ptiu+$kd2cx_yu3zDH)-nM4{5Z#FG7>`>&n~AUS6M7-Z&~RF0UlO_Qs+0 zY7Wl;Ywh|qD2M30^aEqzL~+4=A*6=HZ{O|ezQ%Rn{okL!JrL+k_ueMYTqMt||7Op-kF3_pXzWRihYn*ZwfpGJpK->*s}Wfhml5ni4Vw(>m9c?}CMPnuO8 z*AjjvCcHe(#>->QFOa)9$M4`@e8Azoq5jD~xUJsHED&kieLLG_=ZP+x(+Bt#U!S6` zFDR!EcWfe^X8eG72ssRqk7u$EfvraSEc$^K@9bavL#jHqZh07vpa1wW6?fChKA#*v zG*gZraE(u0umj+$&*BjP-bnrm)Iw>i@%#Q1SEJC6S0SGY^XePQCl>~#Uz!2x)0jUC zTsTYg(l^-QUl}7EoGLsOsI-F%1S9Ta9y6^(fW@G1BGY7R_$d=#Q#) zuqp|}ZumP@j_g(7)8aFIty#ICSBo6i2%TfR&Ca#mUEs$Ep->odd7UQVK#y2t{~N5RS7OtwAv6K^Z9X z`g48lqaLc&dB!e5Fy{ z%hy&IXI+8}l+Ov=$A`Olh*sAQB&*wuK^~UXZN}}0X?g)BFLgsd+1Q(`iWR^AJbtv4 z-#pNslkvefQ|L`4<SCt(uQhA>3}WiS0Sb-t_+7@iIOgQi%Buza@T_w3o@~6* zgFQY_j$#{W-a;@(kEV`?Z(OWOr^dq@xpWz-bX$$;Yq)eCj84Kq=WsQY{f5dbP zfpFLVt%W~5&12!fu~t3{Ab27h`>sG9k;lTOjps)$vT&b#Uvc+ACvkVHkrFJw2Qjn! zSJIRzWBH?p8!i8Li@E#{kFoOE0kM?wcm1{HzsgqrPuHpPzuk_@e`jBl|FaP@%m4lY ztNgt_q~W?j{$DKR---zsQmERwgH`^q_$2PH;{Sa~7VcSG{^N06{ule0^W>&_Lf{`NurP{BLI~{}70y@c)I&8!W%vWhuml(Y7WSr^Z_~*1|ps6Q{Ppc==pEm~nDR@vKLr~ND?^PF2E-aUyu4ef^UF5&F z$@kfa+1F!#&@CB?J81S{b3Mk6xNPgO3l^~qeQ=AFS39$I$;PeS>y;sEG;Qj5I_7*U zk2YMN>NZ@Tr+S(7c?B`EKRj>i56%8*)}`KW*Id7l>vHO5E1!PoUeX_)=vHrCn${kF zO0;mVt5EInO=~XyXX$47e?ZLM9*?TE8?TS2A291sZ+rA3UrXpDy;U7#Ug?e{zd0`d zvfso|-qC2KfoYb!NyV6J>~?~2m90&Cqi+cx9!aT}4`!QI9j^$rziHSX*Uv`>-~x;C z!_X9eT<<OBOe8#74cYkH4VK} zeGdq*^U&CE&&EsU8_!^{4#5ZZ7-Q4}#n))Hm0tMF%MJCJm+^~p&TUxTT1x~B`t&i! z2i-FGdkQ=w3)bputG_S?ED4zcLga-%s#!tPSY>usUN6&!Lf9`OWCj~p^2QH?AX>L~ z!sOKL<;!A>99$U9(kp1T`xJUknmKcleVDJ*%*o%s!Se%PpC6PT%$M8nEFfAhpurOJ z8~pnnz)e6wD#x#C-mC+Kd2!Y)5trUTen8m1Bc#Ht^0?T+#s{D_u$rj z0x<~HGmzgGAiqzD{QebOqt85`QrV!z_fgxxtwzmFEWh^WvAD?&f8Hg}Z?K-9@B*Z@ ze4mn5$_D#S>ov8(Q#t+VC1T-Ls|4T-gS$yeC}Q1+IK4 zTmdcq8jZv-yfZ9ecFMi+lEexf6Ed{#9OI}eSBiXPPhegBSMHUIQ|=&6wJp#RQR zVDUbH_5Bh*qvF3)VE$szRDXX4D6a$*$_se?3B3MS+v{&i3%x5Gzg}LaR%9&5$7BAkUYXUgc#VsFC_65IE)rI% zSZ}T|mz5;Kw<;07=vAst;L5e%b_@Of)^=_6F??R?W9LKUD+}YXK?^mtshyd?O?UR6 zNj$b0=dDmpx1t#}-8N%6Z7VQbZ8O#*#!H21Nw{rw8{G_`dlL074su^$#4b0eMw~p+ z7nq5Q1Uar*Q`^TBCxDHcc2mp16!F-&FEJG6xYoPdH%mLxYf9=2_|+JZu9eKpb4|i0 z5l5u^bh_w{M`y<1zl3h3$w~_Ga;5394;+-G2Q7s3V;BT)^{|n@P9s?$e(-l&F}9V?Y1!q97+;Gu zp4vTXAnkR7!&%x9=JLiKnA@N-7!up4&E+oRi-Y8lj)dSxU{sOYMC%=Lu4rHaA}2Wo z$Ee~PNGI_M|rjzMWv-hLuh|6YD8GsLn&vznzJFZ zUHjxclr!2R=NTxt{EnKlgw@o2@)F8f!y{)t7P);W_%+Ju^2phpXzo!Vk{{t^&xSOMhI!;{L^-omxo;6UQ*a<^ z(L)|NFTm``zoPPdW;-tKJ%ed1!6UDz?sk3;;cpoJT=@GMe@F3GqYd2JX0-uz3j$3{so_*t9zOa+!uzUDoO zwk*JLP&C=evbg%<-1EN5x#wMR?zxF~nJ~Guj_tmweJHkI;v$+JN>m0B5mKgcY{0LD zW{Q~Ysb!us3JQi{^Pi9H#ICRDOPaL90;Aof$0gTPxNxQB42hn@_LkPqE^5o}#RHz; z59;Y3@C1KA`^TuHc!EDTseix|{6V4q0Z;G;EAe^Y2XFrBVgVTVo827G7*8E^{Kech{=VF= z!_S}d_YN#$8U6;fXZ-!%OyTe1w;F!);g*qM`}gsyrRQ&0=?RkWJ7wi7_NyL>`D}n_ zRhjIiWAd;1hD^fV{15u~+&&$CoBn3}Z8MT@ei&ozQ<}G8^6iIN14aLmj9FvVh?zrf%9dj8UHGW`A|@p;#e6}4F*T{x=;wS3I z0>o*cel%5?Z2OJI;S% zKEf{fy)RCRErnyunZw|E z8eZOZ!kB`Jk_%^J$ha6MARnfsJs4YD$PRPR@ATVHx6|)_5XI&o!SadleKd6y4<|CI zMD)-t@`kHS#_thMz|f-Xnk+fjhiBncYfd}35>Ud02&bT$Vv#>XC!Ql|ksqsb659md zgCUztLds*C;5sKbCeL8Tt$y6UTc>~NB@DZ5gp9ZTRY&oFS_)*(?aL~ieF?2y zzW&j8joQL_Oh;nqO?Mtc5K&eSOupkB$NK*FjL&0u5LE@^5k}`RL}D(;Wq2OLRrnCv zc?^FwQpKY^P(|aSBa`O?ej0=Qn4}@jW0;1K5PoEG41TKUJcd9zj{&jMgxhmB+xyAq z5jThGpg)h{y2_I3_zu$e(w-Xer9Y41dF(!==S{5 zQ$XdP$MAClb{@kkJ7{!q418aAz@OXco*xhJubhwkubsybvy-$w!>99+^KsH6*Zdb7 zD+d%P=Oat+)1K}N!;Q{IX6qFR5~zD>co;=Phhc9_7M_QlV?qZ1N}68CH*=ToUjo^Q zQ<3jBXU>K8xTQ;S{l&a5%vSYa(!=yte*_V0;oy?9dvHN_(lv3=z+wzC;1tVX`N$7q zz(_qD*@c-iemHV}yx?&p@efBCFLG9EaKR2oeh^u#IUj*qQ3KpMN*XIn{Uy(O&x3R9cQAZ1mViu7jc(_c7JPpV7>F{aiMQ)jU|hNGm3!qj;=$(yNt zeT|r+9X|LW4Y>+afA8={%8t=Uj?`QDj0aM+1ykQ+a*HE18Ck43`NY%{jHxh%sdMt? zg>{SV!>yyFslwD*`F?Mv zzUX6w6kZcZ?NyliX}dR4%~YnwAioDve;npaEk=+UM=F6ab&!~fVoWttm^vdbc-IT5 zP(!9ra>3Lwg{eo&Fy+ROB^Td5AnUbZ>Ai* zjgW#?3Z_meOnp}9jZ_InGC5OSyqVf?h$EGT=`M~`bH>y;V(JdYRJg*_DS6yGUPzru zG-8Sj6<72t3R59vm>Qun^#v-12T~D&sb5SMR+q{w5d0Ih=LIpgSdi@|rs;A1-RahBo&K;mubQrgel9mcnf68&* zOy&17LW=gP;Y^tnree!5bwFjxfzNm__4fhJ)N0JQaq-caTGpJ}#8fOO_3lk)QU zUP!eyWD1d3f~io2sRzr5Z=_oLXp+H$snLR|rYcjrkj0wQh?t^C2}emAg{c$r-QG;S z^OzA*wC@f_s=2~cdKspcsm61lH&Z|D=Sa=P^cF|zVa8M|VyZD?>VAc(cj&4>kE;tUj` z`{Bo!)1-5ZXfi-g(ZfSV|E0gg<2YEStROBPy)?|r>*F}EszuLvXaVOu8NCZ_l! zSF7Vy>|Pw#1g}=7SDUa`JMvfW;jgyEtJTM_S0BQwV?JW9w!*6joQZoBuePFBPktz* zM~*j1MmvRSDmptSloK~a|C4&saF}(W0*Jx!J|8SQpUZ8@LQQUWnKRzNyL2pAFGWgQ zRisRjn%b=#PE2#PyZjyXeYn~IYQ5S;65~bbDv3ZrA`#^tI)Rf&Lc#C+m1fTIjIELFh!k%EO$9J!3}nfN4;Kus%@KOqvzAzlQI z2A^jivGVn`&JK>=Gw&+(wPX49HI_zUM18$iaE%Uiz=nJcILKQM+=cfA%N5qw%JW<0 z2hQ)hcNBgrurE8qG=5)rRulAho6F_5%fHNT9l>wS%J3V}Oyjqs4&RXS`JD$lduw}G zd3=uxeRyI)CGh=5XTJ~VDw6vHUJDHD_ipM$?B++8{JR zRD3V}ZC@#VeX&=$Y(%n9E_qwCR~;&}SI@xZQ>xwZr!}^_Z_?D*%U(@g1ekU9>M22j z>{Z+6G<#K5kRW@7xHAMUtM)2}NGSFyS-em7YMjnq-MyGg+Sp!Qf=RBFy<+(BxG>$? z2Lof@d?&B|-@K)P*DiG++4#EcbIYz%Z+s+HT?afN)_X(Z- zxOb4ID2+F2isGf;eH1?bCHtJWjq}^EGW#JRTI09Hx8?HtA?)bCX+I`z;ru@H zhJtTs`R!lrU>(2A$KsB|h7INNdjWRz*8J-9-{}0!7F*SzI>YlfBT@rmk~;8nH`^^1 zF-?hxX|h;zs51(`{6iL=PctXyauCy`oXj0X!A%X}j3Bt_QN*&c_#5{COwa6;=LFDL zdp%u_#!3zv+1_a_?GwmCy6>=`kMZv9q1H!FWH5E6J<2QtwGGuQ9 zZue#y;5NotE^dvnMGu`fR1scZe^)8Iwk-6*%LKfNKE~>0!YgaFH(niJo`BarKTo`x zR8{d3IlfkM+y=a^It=jYlvOTXr?KhHt?xCE7FK7?LE9q-*yb9o6 z0k8j*w&&X8=K6IO5lf<8iX53rj@y9O_p=P}3Yt?cUK_9p&aLq3zqw+(f;e6&?|9)= z3;Km~5jkEFtGw~*%j@IhzdiBVhzKQtm&nmy$#EO-T99sl*I`sr#W{f!@T@kmC%dtY z&aLojkyk0a9$ess7uCnzn8alIRkG3>ujk>^LBHaWgWG+sU#}u!O5i1Ov`})~2E0bk zG{9?VM!9$m!6rTW{WFZ(%S*Ypz>C_;y1c#gpRWhan!~p2c86R*k$I#+?h0?*+QS_L zZsr>bZoIu5fJiBUo5*n*bHTUE?zfv^fLkhzTRD2x0(V z^@tfes&>IZQB!t>oa%sMbak%;&blGC25Qln3#E#g4dHfMgK0y&Lw21r}AILMUSY%L*1F=4n_|KgF>yXEwoHfr>})E@Vd8 zBWegd9<=7n6nLcGA@FEcR1D2x#k1x(#M8&cQ*-7{JmkfBDD6qE6LWY`BIN8Z`7{oW zPQp5xDnDYblAU<}4&G6j_?(S&U~6_chPWMR8!AxD%NMd zy98FXs`}h0m&&|T?w1LD{+4EO8k#ddCo#;X)9d}h2}Z0$%g+#EU|UOAEYe zoNB}knEj*LZ?G&3yFK8M^Ibn}I_J3t%M~9+n;@{9Nabg!HOD0Q832BYyGgG1s5($R2*v|uz!+&! z7k0``F01XIXAZUX%gjZ&lo`76>YZNV9_^KTO!xr=^KnZSR{-U}M3^%D0!wxf%Pv*P zAKyd>V}8g%t36NhDZKjTOq#dkgJH{13Obls1+wjn1Z3PevSKv}t^41`A~?i`=HptYe%w9~sgH@kCf1xkn=@TMPM@cY=iMk?3A=sk4;Y+Bu>L4>6!XMgq;cE`Ph}Ob zQ2q*I2@DLxAAY0g(FUeRm?jj+7RrbJA{Dxel+5!XsZb#`guGt(;X4|78Q(z{93@fa z%tXM5WyWLAw&&}^Ii7ihr-ksePtio&T5`s~y})j!L4LSmMQdI1J#b2tC5i%9Qt)Hw z7E6pDQvoIdCJFh5$*Q7f+(%e@=z}utEz?aFpM^oLA0O@qAy=i5%qlNh3J2Pav^n#2Jmz3-$0wjZNpkXMWbakQ*|eP%^8%pvEau~o6^i*^dO(VkM9nr=oFTvQ zV(RAksRqsd7Fkhur&ke0L=E}@pQYcnm7e4+w>rhS_CcWe^A|A42(XFQOy=+w%8h3zgQ>x310_d6pyY0IwO1bql4aK}&9uf>XayV*rRRgcgjKaJt$QiZ8(S zXNYFd1zp=+7>2}Afi9b+DC#2FKkO$-UxkO28XihxVNoavGGH5offf{H-KT`*E?zX* zK3(za>ZJ|G67gi-hKFO|RQ8)rZ6MYw&*2TmKKaR=+{lr5Ue)UK)10Jy6yp(015>Oy z5i}1B=OXfNA)Y>9JW;q%f+U&@s@Rdps`^jGXPN(0HV3IE^Lz;`rOBYNeG3J3pnzr0 zE~IutkB=WhO%3n~95dI%4cruLiR_*|3 zkuVI131DHMR+H~$@a~lRPE{Ph`e})rsZMM%3@C%Ma62kB96d~c1&sfgPl6yIfHvsB z4oj%VKduDpsKk)VPB{hMWHv8%U#NL+ooi&JAr)GP;prMxL-#}s4S42IvE<}bqlURQ z0sz)&efUf=N?0NdAoTiu4)veTGw&xhT#KTWHR`sAuyA9-r!Yv!98Az4$@-e4uuHbQ zh&@DTLp6EEITBCjUUGZC=+mynOl7WDPp##+?w?x2aouE|yA9b?m2E{>fI#UBSaCXH z4%e`@<~fUz$!7j2-|To3cigh=$7xk?SI++ltDS)==g0 z16Hwj$pgVdJD;&-x50xS@PfUAjqFzjDC^|fQ$)88bp1KORoLT8@+&H7o z08I!XiY>FAAFx`H_EwNU>QBrME?RAJq zMR^M402AB9w<(pas0DxgeC>62iO0VOvBw4*7mNLY9i1my`}hTd=f1ewT~A&i|9-HHO;KZtSR~>egbFArMJV|RKxpre~A#=t+%-$tL{*Y}ouklOi+Ob-d zv^q9NZWYP#r+->8;_YDP2H~8p&czmd23C1Ht_gV8+%;qqZaMJ;S8XZQL}@fg*l&Oc z`+=}Ma*wiqpLtD{6l=$7b<*l!pK!QmvVYns9r?kXIr+}G3i9o7t0zzCviUS^eL^;xB5o^R2NQv2d;vC9&YvYDXq~z7U&cIr+NtbxGMB< z>p>rBjefds^w&eqZ`r9d%({GHcpkD{Kdis>s=pRE=rw{zE z7x*vI@So>}KczML>AulFCGg*&;h*P)KczMLO%3Q*fR8<%hYnpMt@Va zviMX$f4#7ui!}Q=&&z&NTBASAH~KdOK1Vcs_ITk#X^pKpx~oj83ru7dwrxYhGdX^s9d8jqI(T34R zJ>LAAGwYCVr}#j!&Ic+HI&?tOp`Aj9^xxPNY8Jk2&Kt$js1R1v7eobt*5cX)vx_ z;Y__nd1mrggYN{HB$n zeiIxJeF&w~!huCK;likw;JOE2$vRC6HjNx16d zJrYS{c|SpQNR>Cuvs6ajhv+ltuC2#a0JZ|RdcY{{3t*$7IY}F?1eg_9g&qM$X&(Wr zhrkzOz|{IdZZP3>7p^+Isv&8N*R@Cg30{NfGr)@so4~6bZk6&;{h+ijcqPSfk{xj+ zyxQTa&?CGk?IT{lBXHvucnzn50I#mN>hS7-q%mHtsaUFhrB_zJM1@?BD-~{)t~OHP zD4o`lYEOIAo)p+)Rv9aIYWY^c4p*lBd?W1T zLd{;j=4CG_t=Y>Y*7#S}UY@#->&6aTg}UY8R#6X9H%e>v@+vpSm9>}Cc>l&UMD5?0 z`grzlLMW}#U*H@4^>7@hx-3%t3)4K|UntE9r8W8;eWUL)|30=S3wi&{^pe^?GfnjD zpM_A`m+Jn4Fpp0N^VrABJW|@n>V5?=8^+aLs}Fg?fB4ALe|V!@|Ka6-kb<6XrZj{#a$wztLCv33^SHXT2ojIoZMrmKcX9Xku%O5V+c{j2I}|1N_2GWM?r{6*8BR4&**KE8P#{ZK>u z=QY0hF0bGr)6@zcGQqQgn<%Y~Z_ei(T+LssaC~zbX)XF!LvZEt2oc;z}1^tz{)zhc6M*o08|F#19>j5h9zX(@Be;#i2^eL^;f5A8U z_O_gU8(anbX1LYUr?f`Dfp7H3L~{BGxC;7RaI2?JX^s9`-nZ4YKNZTik--0Egi8Mc zZuRsjtTBzvps4{tv!Jw6`9+vkwe8a~Ip@S(IupSPc$ z^egE9Zx{Oig{J=>dg(uIwnyobmow$jQK)=FTwzZ`>gedqn4Up* zw`_lG4MIw8WlxXOXW>t7##QG}u0pbmJ!Spx&xjAzpR~fSF|?;%{qJWvU?#f?n91r1 zSO}%H_EY8^WX+yd*qJ@thRMUU0aq>$(@Naxkcl zc9c$QMecqyb(Wi8e5w-ue*N>emd`{XpT3^*=~k|M9{xx2DMW21hjyu2;Y}ZSR`?J~ z|5N$g2;=0B;40*^2e*3pQ2HOs=LU=^v3~?tlF!dNV@vX(wD0nnjF^{O)t`CP5k&o& zgsZOpj6||b{bByd6Vx+Q{gK_6S23(VUjE3lEm#3V?6?YpW5ulwKog}ke`E@uu+i#I zh3(aST)#t1xC-)BbSh5m38giA*}z~vr~-fCFt7e08`SC_veL8qn<%Z(U+dd^%F=z!$WC}{y^X8pAzuz(BRMWf}heF{i_E4S_SRlQqkVJaaH)otq1=|YxEcR zMn6d4f4Z4U|2S^-^eL^;H}W?t;D3z3KS9I4ix>Ws*617gn-$PM+?dOE1Fiy}mAKXO zPic+5k-u3HeQy3jHmK$=WTmJ1Gf`TjZ{%-QK)=)dod3qS3jXWhR?k1BHTp*WW<~Uy z2>Q4x^l|G!A8C!gk-u31{lP*%J8Syc-b+6zt%C#dqDI zeE_kQ`h)4&`ijS`10?s-@LQxLW1>=$IGSCZr~_de|U6)-G@NaIu{oHCYM5VsXA7G6w6 zL>*Y;V(r}ze+ZD=+~)tR|EVUkb)=OY9>sqnejcbrZNrl$$?KL5=SI zDE?0Q`9D!oSAT3Vhpi{tv8^W(@IXCbrvWB*u??B6M2g&mc)=1x`!zAoxeDIo6I~Hy znOT~erHm=*f0~%gQ3JMZFgl(L0Wz{jW#FF%)&jE zmPEKRvx!Q4lq>TMcGH1jcj;>n=~XDU8hfcQLeP-krVdPgdO`O-$E6%FqybkOd}O~o zGPRyxHf=2LCXJJ#x64n)(`p!@lIi)RsT7Vm^vNNc9S0gk#a2LjxsO0R^k$34NHI8bfoI*PJu4n$@I^dUup4NZgS%QTm}|#d zQp}U~2d0>(=Yq0Y3Z(!PZ~Qon#1GIl3O9~Wtb`wl$Q96SR!`-?)?CWMR+mztv7{tm z*>wWdAJe!_D`2$>SgnCsR)oE7ijp5`Md!D=2LxhiWT1QwDG3q37GgCFKZ6GC`!fG! ztmZ{Bk&?->QzXaJp{+CVQF$`|gHrxRfswX z`Ya5Y>9Z02sh;$i*4E{E41F%JilemrvjB#x3o9ko2(v=kv$_W1w_vWmU4yy$cE#IJ z-$N}(QYr`K)F+98-<3-LCmaBjxCR#k?)H_C1+WI8QhWie=Ye`6IkT8L;f~`&86!WMFHbdWK2PsbO*ke+*-VwF?w0p6FHaMZf~~ ztFbwI2I^16z<#9I?Poq!B<%JRhBb^}aZCvl4^HcC4a#=su)yfkl5;e884XJ?IxN9C z;(hagTz2MLR5#Zp>=BeBxt;(|FJe{qq~%iV(bPd0FOpn$a$d1M^nKE1T9%zr|#-F2=wfR>6Nn&@wPWU0+jP~EoaEDpK++is4( zDY=d&puwuo;;+E3we%;+Jt&Y4d5k@qc7__Wj`qkawoQLm?cuI_3CyEZ1zv~E%|KIF zpfrV(!zs@FKqoW^HY_VZgF%%ZI-AIX_i=bGYcURE@0V;L7v&;3`_cLuRGR*M+0u&s zY;grUc^T(n$MH2MWYwrC*~wO{`{OR-GFK_AG=;FRR_){qKBp_sz_^4UA?dsRD7@;ihS92=h*#R0pfm5 za9zX!t-yO|nBai6MckNq2RgT(O& z5yzM`QDW2NZJsk3t&a^d|LtLj6i{Be zNaBc75sKc^4GZF&{ZX>GM4Z@S!TL;8Q;t)DR!IPbGcL&xBzO-Tq@r&PKmy(U^lJ1T zz$Kw}SbT(wwUl0P0juKztHvOkWQZ4ik1*?4K4$DdMlZ}JTM4hPI}%V?_QzNiO1 z1N(X!(IgnrEar_+?K}or$(#+=LzxiREo(whH&`QFSvzERwu5oP+G!XlcbohRmrE1S zW<({BF{J-2^q&MW|HUI48sS9x0nBs>v|%#~D}D*InpbyiWXammF2b~4yD7;M*N(k#aoRN^zd5?_I0USW!PITg!& zV6n9t{5P+`9c__krA;@hO76O}Ei@{pr^WWx#_ptztsY|9IG3Aimn})()}FIr`@JL^ z$w01mo~dNMr%DbPv{??s{x^D?UcP@oiwkK7X7bSXvL*G#j;U-L4@V3>sYE{M;Kt1T zfOp8+`7&!zE8D)WKc}?sJ2TNVC{{ORkbePgC8n1N;2JaulO*?z5_9Tib@S};y-@Jmc|aas2GuS#P{e$IosnJ+?L&ndEa1qL&1-XrWGY zEy?wGFm06a=aZMQhXz`Ha-*G7;TS4TvRZlg>nrrHo0Zo;$Lnyk3%UlPiT5j_a6q1Y zmSOg3YIbDwE4o+B-q$dDf|?zJTz*B@@C{Bq+%Wq+YIYiQDk@a7UwS}Sbd~qBLloX= z*r;fsnth95_FOePCc*rQ#;V!hHq8E-nw@%*MYMqk=Y5o6_Tg%F3@rE+nbqta4YNn9 z*|9>=ujp6&$Enve%wA2+j`f&+MJv?ohfqsZrBIRid9Z@aos@l+ntiEZ_D|L9bk0Wc z#OZW?avz=dG{LRAO3jFGD{D0;j4fykNsk3)rR_`EZ@8GQ7b>ZEh zQ`cMgLKqHk2XsId{1k&f;R{(4@$)CeWCePo_kfPpCU`_5p4%PpR}r3|0@DLqC^ek1 zlB;io6uDdJDPhU36(fatt!$B7B{$ucG@0DUhAO(OZ78jwfLDV*aM2Z`F|;06UWW~F z^xW&d_pJ6k8o3$SYcFhH&p`HK(c?%7dt+qF3jSoa42&j~_DzJp-ZM)6YAyAz-91A= zA!<-jDo#Zt3N$_~Vc(y%7;}0b@khA91y&}x3<4UvQBeD`okvj^x zE#`>0>c|~sj!3AF+!ph_{i~br9a7)CdO)IibwaDGUWr*aQv%GgFWvnZ0g3O|p&M9D zSHeRy1T~^PAA+K>Cv0^>SWqWcmA`{Z%;bML&p)*$JI_zv+lF4EHUQFO0@3CZ7*z6l z93X#rvwx~-T_O>N6ZRo{hwVav4z<_z6KFrN-w0oCj`JS=pl@D<&Vd+d!Qb!D7BJXO ztAD~?L6&={yX2n6WDVLQi!v0N#e_)u99%jeFq_z{wJub!dHp`-D*_+d5d=EJj~4Xc zZ;dB^f%3O@g{>$-W);W~i70})Oliqq(3SUXZ+g#_p*Qjt^i+8j|L!R-Dwo`ny{(s* zn*T?y{K1s}a%B1Pg|%4rn}>X2eJ@-6 zUQ+1*GMl}k1;VSLqbjD(2q_hcU~GgpCu0C|8( z%t2^vkH<%KGN|zT8(C%0%1_^quEh8E1y%n0x7;K`(Yw55EFqG%mMO=z)e{aCQ0}PEvh4-*Dpptm=HZpwML=e7IYi^N^k~>57AD0 zm{AF&UU-a?D{!YQDX2W^!r%1N-(>nwhWL<&{*F6Y8U3};``wJ*Z)>2xW&BsZFJm>M z_s3QK{rpxOC=dRP>QCA4Q!6587`^}KAC)P8GAqB)`-}gq%=@hBR5N=2)l+5PFQ@)9 zA{$$lt$%m_a_joHuZC~>@2Nl3^vm7o(~8|u?BAmX{FlX_S_rwC(ff;W66US#C-e03 zTNr$Q=$W$bmxCV@;tV393tVWsjkRWo46~@U>K&N`r9D&WCApLQV`h~r-Tlu6o$WuEGfzJpE%=yRNp@Y<_NP)0@WU-(G3SsR|Z@-28RLj%VEk((9=;_}JstHPYKsq!9Kd4Z!4(7xT^xX7(6A_4e+m{7qfTl+R#Cw+cb`xA>G~V6FErn>O%DD3WNAijTJ3essr~_sr@v+Kk3BH5yehB{e%d9E z+#vF_5P7=tJS~yuTos-tc%8@-F7hGj5@ts`dXo+C`8E`7NxWWFMx`+uB zD{i^ISdw!J0wR*baPR=znG!)12|4nA9PE>OZ74<0=B#*Q*0sl+;ZFH5!bGF@(A@>x z(by8AKKG+UT?uq2q7d8xS#79r6yJ~_M;~%+Rtgt)4zUeCplH=c-_M9Wn$L>UD~Mjq`FlDO zAk&$bn=%1@o&&}pw!1MT$n~=w4Gs$3d{d{J>5uWSVGFifMb7}yZWKqCjQI)dNlLRx z?vTADTsNoZY2V3%x(nT`?@wAnlSvIUCr@7^tQtPdE6=dhv@WYLe4Guf9o>m z{}CPkv!ISbfA+mxA^&1~-DFQ2Jqpglcx*v?j?EXtkV#wRU#5em4e=OI{8{&~at!*K zm*XzA9QWeR<{F35jMLa(oi$x7fFnX)Os_-T3#;H1SCDv=lL!?get1iP;&-|`gqS1D z>BM1ZWGhYSY`R*N21pXjO)Qw&Xp#ZSh`Wf)Wt-f_ZZ^+e#J^>81?`vnVIs{{LK|ph z(yyiPKgtk`JuopB+;kS)^oIUtBV>|^{9`AY$kMbH2%x`e2L5DRdWFd*OrsLnv><^( zBYKHmvB(qf3gW-q2u~F!t-#()iW0VF=;q>20v zF*Hg;$y)+lL%9H!oCuyr>yDz)Kors8@dFjU89$!CxrV>lHE&_EUn|2)@k$xWl}DFXIl+fn8ALm5Vx9zV$F6o)Xt=vZ z8Mni=1dRuEGJP1eN#O8mX1O>hK4Oup(BnuSHou#G>Q}^RP^+&lItt~BjxP09mlOPe zEH*kQ32`b#%Binm-Q2w%?dFb02rexu`u5^Q@Zwk>zMpKLIm3njY516WO875={u7IX zCPksNd~wiR=4{Bv#3oiBEfgc zYYH3q;Y6&|+LR@cih|0_&i7U6!#Lt#Ck0^DIjeKB0?|G>q5n>&_q z%YfP%?pDU(w~#R;RERGkhv<6dhfyz+-y-sttWooi{SW#dxm~H^5J?K4&|bqTG;~1d zOM3%RTzu)twY&r=qxhHqhIXOuplto1AGT5ih?T)C_MCav?~pYU?9gQBnK`32N}-_g z%=4UPLqW4BHZ~T}py1!FCSuMs z{MIvupazxQRr?TZ|G^1EZ{zi4y4TkT+|CHZXN%Vf%l1!m{_?UF>_Xwa10Aai&B?-W zsvht!;8#pSKW3^$_!m}0{Uc<#(bavW+vR%nKl{hVcPt(YcM_@nPokD0nRymP(T7Nx z5%1^f9b?BwBJ*reW-R+NXDr3XJp3)8=~C<#^X!I9N~FL0xYM*Tm5Zt;6V)zxXk8|% zn9r$1yX14!4S)jglJ7u=M)(BR$~9$5xb zqB!u{KL)j1R3|C+ym{6zEHFXHJA!I2r#`Fl6e)PB8bB(#OD?>N@$}PYoTtGmPZM#6 zLl>B3fy=p1w&H6#&hn~p09|RnGdZI;`yb|I5psOx+qLkLPj6n_lMWjig9XikmIB zvAyZfDem|RU$DC;jkmjJpz!g*GpE${OACb{r$$rFK&Z@Tn|}eW@i={|Hr6C|oE$YB zOEd?>NRAna!4s>&fI{bJAs(`}9dx3!bW7~ysA)$MT-}3hj_IMnv@PI+%-KeUTF8(9 zS~kZF{^U^`d6rw{OHWV%LXKDAY|Vy#i8lKXJZ4&I8UE;fe&$)L zVShAd4OQz|RIN$+ss(v&x&(Q$`h=bmT3p^fEexMYTImXC-9t3x)WLUMgYJ&7@}N=| zwIuEkf9p=PQW>-Q<+by(SIx7Q{>mD%jspYD8Fk?f$m3~RgU%-kSjTDs&L=v{D~CDb zFVHADM}(;HWA9KiD%*>2_Mkh!)Sn8zmDKi`^U6CL>7Df+?<}QvLis!WVQ7lCY4oVU zlehn_@NfrHntk%am^3Q>Qp+})vVEdv+xQNBd7pe2Wt*dA>q6OZ;F2iO`y$(^;?mNh zA*`k<Qb;@Z$$6AB+9T%~D7f5O&ACM6oKHDxc;w8doPKJ~*&^q2l=CPA zr}6m?<=l&jO^*C1k+U1+{MsYuc*=Q0&H3$c&gY+$)8&z~JLMdX$x2Rh{sInBFr-;D z%p+$b$~i@q`|~1ay}yw2A&;CFpk?w-HRtxH_}AA{PLoH@t&|hTJ&Lb?DRS<5!Vi@on>i@j;B2E3;9Ykrucn#h*# zKqC6p-jkcjR|7)*$hKlYmz>BhHMtWxlfLiBPezTro`~?xlx)++c79g;rQz>2{N>>9 zDE?~Xwu5)v&Tk0*=HPDy{tn?UU{gE4w)h)JS5!vcQu6;@Rj`sXI(Lh;u0Qin`TPV< zaY>DLT=P#2#BokMQoubBVU!^u@av@5gQ++>t#cUe1MRMW+VmSXhPZkSS2)TG0OfN3 zECinF-z+@M-)w?6_u`)3ETG@;<}$kC&7q!e5{Ixq>8BV3Bpk>cE)PH5Rf!FKIT^OZ zhIMT9Y_1<{jwxg)ZLZ)1mnB$!@4>y$3Y>#T%W2LJA)6U+Z4)$!_aLUx@kE2er&x17 zy@%;TN-mzU%o!M!N9TmyXTc*Q!HDms=Mz6XJn?_z@9zh6{PpJiJwZHp^EU(m=YW69 zMuoqV7*<#KlhbY&e^2W9TQQj92d($w4~M6Y^0($hVcrHzHdUEijIO)FWLIM*|2O%5 z+d+q4ZO-38Bm6ptG1k~QgiNL%H`7>K0+;Fb$oC#Se-qG{L;uzp@%MI9#^3K76!})u z@fUd8_?sTB!*4h9DFPaj_`LP6brZ&4ca^`9m=#b&I|^>s?ZNMt_B#IBasJkQYrx-X z&fll&75wrsYOe6Nb>i*f?-4zJuMK4KZCF;mk~IT-CRYdMk@`Ogpq zNsIi-IQ7KqY`i574do|Zw`XIAyX4Q%kF>H=L%WO9L8+yF3<$7e6UEu1yW~AnRsYHJ zq3S*H1NvGk0B6ulGo98~?s>4DN2xN0=6`EXp1WVCf1CO<>|UmcPjCJE3_d(idyt;7 z8hlY_Z<3xXU;kMA1Pw^QAYfx78Ve7DC&R)6uyQqIVJ0ZzU}Sc1t^6Dvs_x+DG1fC@ z&V>xz(lvQNX??~Liz>z_f@v?};C10XlCyhoL3hMqDM$R?je`NHuP@&`DBNV_=xcc@ zMgX1FX(+KjUQiDvE&wmVoELd3rqf*Y=@gX*k;R(R1k{Qe;MP$RsxVa|=l$))l+}&eVG}CB~2nVoW_iOr6E*KSv3Uspm{xmgnE} zLaM$YQ*dhqQ=Js1?%D5+)M1<%%Ek89@Cv}tfdJCp%s7y^p7Hf`$n0kUSb+^LQ zCAq3MQ?n48Ulu7^C&>@QjaQg*;^cJJ@l$mwUS-PPo2m7)I8v!J{l$zjAA$5AC5mR_gFx5w4>f&B+rdFco$dMX@{2oZP5=J-ko90{UOGprhssnAvRHG55mWEt z)=_eg!qf%1n>SONR~R7$trSd+QkdHIvo}&%7Zjwrcr$f#CTHqv%#d-Unlq-x5L0(B zrkW^BotKwg^Fr!=L#D`3ah;l^F!ewgrvAb(4;SATs2CndjS@_SsZ70sEY_UK#MA`b zI!eM6rq0O?y_s6D+z2UJCCizbt}ylfPu@s9sWL@VJswQ`ID;eQ!mt5H>ME>^HD?wv zbr`pflBNn%XXVVRUPx6lWQx|}a;BULQ-jJdHCkoLfzNm_^@w2VGUCrTQzIEuZel8) zG1W?8sz^Rp;>FasWkyKRieJvu8wyj8ml0n-Rncis%Y&)^PUlDsQ<>U@EY_U)#MDaM zI!YoGret}LH&X|{G-4`9Woog)lz*Apw@kHD1HGB5E125uP>_0WcNU7#!DQjhg7CMK^AMym&8;SZXG49&6%&^ z#x4CWxASId`4>h=(MoB~)Yl4A5B=z^=$Fp%+J}9k^-au~X`G=?G22D@lp1QyS<9#t z$`@wf;CMI|`lH^X)a^_p8XUqH3g!#M4sX={%SxZWiF)r$k!4*95L3XJy88r*M4~OM3THFM%w*q4l0kl3YP>HLc;yj+4@YX1?G*DeaD#FH}iQ4Y>QVW2Zmna%?)bs;g|V z1;E7H%jn$*-n6Giyrp5IE|g{;1zU!&L2`0cEppKafPlyo-V+d^J1lI6HkjkXg6jX+ z|3t{g0_(2Mt6^g^?Ah}y1QgJ$y*i~Ig)9lK^URsW!tL`mci;KkJq~z|W@6fW+mvQj zu`3Tm+K}C6gr6gs7G#76;$`|r_rbWQeJZwOgqPqk-oa!#eIM5_y1J{yQkN=%-S-1M zlyL>ddR_YyfZ#~i-0+z|+3Ku??K&`SnGv3aByD!piqwH65LNI#i3S6Z{1>|m`=#L* zc~rB#aA+W6By7&^5x8BBTkP2vh1*s9wu30gTvh=2A}b&bGk!J!K08JW=Y|s;G?F{z zVtv%(h2exC;6{AUvnt#oULq0Rf(kB`GK+q21$-B!f@{GqDza1x1{~{r{AUc7iUQt; z!W4LE%u{goVmzx3JVnK#_ez5iuwDHd*fGE278EwY5FB@d5Tp&-SmXmiNE){U2d-y( z7Pmz*^^K^w-;7s^OAJzRoqxd?qSMBTke*LPQ=%W(_yzXI(-oCAH$+cp6q}kIh$=b3 z!Zwx-xiFR6mS?V?D0O^8eW3cObub+5qBk(@I0_adap-1lx|Y-UE&9t*m>cT2A0Y|o zu*E>hUZQzB+($_6?kpD7LWPZ>!R8BobP9WQejL1>qN@9J1N+op;&B=@G=RDFcs>Zt z!@4Q{xeVteY_y9r>$I z^HU)2NBiw*@+VOK3(l&`{rI{Vh25)?g2P!}vvI>&FYce)LfJ zt)PCyhiUv4?IXeP`q7^mVMBiR-28X>t@0x0_nj*Wz7_EMK~s(2wTCr+KVcTmkl$wi zGQWE!bAJE4TnT@am`Eg3OM&*NP~HkV zo?UF^ENl|*BLXC#RMh+_c>nVoWT-F^#w}Gw_)L6~NT6jalrxEhVy*}r&0L)jGl|>` zpuI7Sk1YdUG>bhhlzU#(z`HMXAYoRweXcI9m`ozR!MXncUX=o%RcE(O(_$fTPwgZt zz1B`{yGo^hgulN~yie%)i}wk=FU0$V9&2Yc^j@a-dC>=lkM}NjrOW%(T&^sG{?f{8 zzGZpG(M*e|m%Vj*o*<-UP~L;Er)qhh5${uZYm4`(ye9F!L3!Vy_scDBo5!`uIX9lmvat~|ealemD^ov#GH7sE7u@72lWyN2cR z+vQ*8caIp|uBq~SSNZKdIsJ+rb=2ASA?5Qs4|e$0_@aNs>N_?&%_YZD=~&sElfoqU z|KVzoRdV!c*G<-Ua!r6)vRYh6Vv-`#rc!vz-s`RX*w)dB2yd};bI09@Ub1ZjR-3td zZk6YUU}{K-u#TeMZePHUAeYIDd60|6-M<0#pxO?nu4O%4j{Zsx>R|3vLR?bsu$Wh0 zDXwa1f7x=mz(2L4gm{-Ek9Zf$t>Rsxr_O`@59%v%Ljl9} zEPOdy#s&i>-^7kn+i!u_o6ReQ*QeLK@G=3f@2d#BM%DGk>x-rgulV;o@hU|xNZ=)M zv`})~2D}a&Gr+6S@8#mP1Dj9X3a_V{Rg70K*RSWVdf~7PuGCulkET z@!B<1#Y^P4gyoKGQQ&RB>%YGm;C1R`xp*zY7C5)U>w%^f;}yj5>R#f7S1st*=%E6y zz&hS|ZRdFX@vbLci=R~S5;?w8a@+>IUN~xi*Lqaaa_Zw)?6z|&yaK{1g;%{RUU*S` zTro)CwLjP!uYGXBpkHg=@x*H!BB(@t6gl2ha@+>IY`+-bHTQVAcy-2JJuE(2tPf}Q z9wVLbw??5yJ)Z3S&-dH{uhf8;q`GO-$><-uqzBEK!?wJ1hwK4te4y`rvo~&E!hHj7 zGZrYg4Z!HdPWd53P6^yZjv-2p+kji`BL=wjgK;ZI&jPSDkJ?ARmHlsAF@B=G{Pdz8 zI<%LKsD2Js?0+q9-28<7pReG?+sjf!BnjL^juuLe+ko4FLk74tf{`l+w;kBhMmN4* zwo5ijtaioz7iy%-jc3V=+bLiC176&>G{npbI!G5-A zg$9-1=)i&{8l(KY|D^_+tYU#ChUg1cGIInOs(uJ|z8gru2UN|HlS zacT582YD$VhwVes_fxhHNqm^yJ)1sDB}1V7(j%publOzATgT7EXE;tvM=SgcwdVLW z=lonrIaylVO>(`b%q~>L0~QU#NUuX|4C8xalBz$RIaKY*%tg7B85A1o5`9OwMcNp$ zS~+mT&i_)@Utpir18Qg7bDveV%=RFbVW^Vt!q(;#%GZ9Q)i)=3m!pn3GmC`pAmM+A zQrKusfdb^N!vtj9I0CUIp;hY>1jQqEDIW(71l!$8Kma`&aTqg5chHPU8c3~gvlER!!Q5=j2}-aVR6OSWcHnQO!G&)O<#%I2O{+`0@}oy zbA;8EkUDSR0qsWn+Bp=jgxx;a<3y?Rk<3za=BO%OU>q95!RY(600YxO-za*t9ObmT zFsv((EtIDrz{~Esi(GckhonM<J#au^|nI4KmYZ}4#0eV1+Q$pioTybtOHMshbk{tD^qG^VfZ z)1KmjcpbD6PMRpEt`s2vB7Sq9ymFV)5^p280{cv3@PIRmmicWOH-kc)9x7Vq z%4wh2pPA+w;T5Nbhl=<}nis^f%h49Vd5x_WRw5+rM*%6D9dwjdPp#=F^-m3Ol$xeJ zrM7D?k0jkJl$#+ZZ`7hw1D))ZVoWC`1oB$iJsjHi?J8bsI@#ez`3HnSI3Dq1tk+lR zy~w{W@A>5fi%w-*ERUfDKD2_+;kCgw4I1&Hh(jtcc*Ax|8c1ciA44=WuEL`|XM&<@ zHm^O^Qztq~{8Ps|N=z?}5}t(cOdxyOp~Ax42$K0pa;o44jZY*ssHbI99;)sH9ol7K zx{%s~Po)A_acl#&oS^N|xzBVIBr)Xq%5cV?e0ljr?ggdZW%L@RWF?wM)hMYh3C4F> z!IRNQY^4D%9@>G~0NOc111&1N-wfoRoODESK

  • a;9?F;4@GLXW<+8ASVW3 z1G4YngN8AD!8Ue3Kp$rk(ZTRL1Gy@E4tYEQFhz2$51&cK3rn^Dsoj-_Wv(cq%~CWTkv(+YVn49~O_awp z_$bo)DGZVqkbi;($r214P-RL!j5X!hV8&AFU;(I|OEH0hQNhJbWv*9Gt>w7xpIXCl z-DIA-4J@db#xqQJ$xT2&8X@d+YxA7N$Ye8rly7#ti92oqdO-4gZ`t#E$Q08=2<$Kp ze#6Ads9@|V2*A+7ONcGO!|^-^PA^0;ah_c7U}i)mhcz&;_)Z$yNtUzv!g?b77~Kuj zE399&mB<(Oz?z_Pr8QK!-1Hdrg9xQ3R-9k9Fh@H3a~t~%@}xmeSmctYnL@5a^; z=8S=||Be)9sdvL3#Pic*Qx^MIkLnBGN8*ml$SK?MrpVAurroPc%xSZ2}30FaX zB5w8cDXr1pM3%}2`TD9q!+fN_n)BZoSHXXK-0JzKw8p=`Z}i7}&FLrLD(H8?t)4!m zHToYQI?4xpZmi(+kKiik@4>B}KBYDKRs;H7%CEoE1ph-c{`+|GPic+*F+}b7!2fzQ z+oYe1a25Q|!>yiwN^A7feWO44OCeue75U;;Prp6V8vUjQ^ee!}F7&evu7Z9u-0JC5 zTBE-SF@N6pR6u{O;D4;f|8OtF!<0|l(g=QNPA&^=r7OUwZmaQXNz252-x;X`gZV4#8E( zw-0VfzIytP;WtgjH-Vcs|K?2W69Fe*_&~DG2PzRZ`haGmcM2P=|Hd}5(`p$O@NZ-* z_*6hYP|z=eqSNjP$3z8Ch}VFCk5DCurcJ}T+9S8=_RkUYYijf*#9F1P{I6?C#X@)a zqmi^{vN;pFL0hgd|B=Rr`2OjR&UwOL{m9c_eFMod{%W6KDK_L~JRyH|n?x%KUxUmH z{Z%ld_g9}?!USfrHn_O}fCzA7FCYt@Bqaq<>h@-=NW7=|!K?X{|W@)R*j$yUlAVBw55=NYgf4 zA%0Vy&VPjHLnxgV4lGim?2+FKVl{aAS$9D7*Hu}s!O#uH^l4vfMb1hGUX}MAsyXPN ze1)s7fATSs#`1oL>X0gLnwP1Jyax%uI%$Bl^8$?0z5tfQZKA0ot^`;+VGwDjB?64n zJ_0s-Sb2b{cy%F52E3Z%s>7=;lE!$|B%9_lUhjU&>&G-)Mg5q7TYdeYv@duq;Wpmn z#Fg+$7Y1Izi_$*g^*91$j1^49s}3v{;q@1!p~LGW3C+9z%k0TP5}S(G3fQU2=vPnf zpqTDc9TZbjPX{H0(waRE?a6u}jzyX{=6Q*O(waTF%FR_}?MV=~{if4EONjfp zF#jYTwCy33*61(rjlTU0u1;-m74)0oRB3PowHKKRzYP7~E_h*sVDcvUw_Yx?A)yw?l*i!}Q4yy#Qf z7kLj99>>GDlDymN+zpa9rG1q5fI+vGcO9yEWdA(nebPwYJ>XB74hnhm@xSxvry1Hm zukpV~`V2ZaLAde?65@|roxDwy*2e$l^A4cqPgOYn7X+q={OQkC^2c$jCr@dTH}89N zH0WPeFuu6(eNO)+Tm}0RajU0KX^s8?gZ^Iy^v9r4A^sC^74*B{R!^VO8vPf1qu+?P z4>v@?E6yKhKMQN^A6a`{_x) zg8uO|q5ng075tMS*W*KJjXrNbD@}i);Qu9!|A}7wQ(B|X?P;ayuNV5WNYkHrUiw36 zvZqvkslT#E>9UqHCGb7;nIQiRSJ=~#4|VzudupOI+0*Z-zp_o~pK@ZXZ(6p$QXN4r zw`xBpQcZ(B?Tf3f{p^OMar^l&o@ni-6@HDOJ@x9JM!v^NX9~iV3*6+7Tb;l|D6O@h zGVefY_O!yz-Wbt5C*Uf`cfqZmJf%tAynpKSt$(^5Z99Zx`T|#K>^{-8{nXe|I;|CT zCZnk{*#zS^jNgj;lTY`%wS1}w`J90Gb@KU%w8YTg-$r_(`umlY&!7)^0XyL;0Bna_ zJ%E({r}EkUj=&FBLHd903pUY>lppPq)53UMvCLg4ImrnuWMQ&Ap+Ed9;f9}Fn zC!cCa8q4R}0=<0FE7{*aL}~y9q>d96a22ll0#Z7yB`IKgC}0Z4$10(JfAqd}`937g zNBJDM>dKdjWSR0Yf9n~l3eZ39Z|%msilKe*^0x}-v+{*3#g!{a$OpJpibxF_r8R$R z3ZJmi>_dg^aVKtmLK>^)C!~(2`7u#iYY!S2%m-EA4-FRWeP>(+`|WY7XP?p<{k6W$ zr!*odpmDgVR?m0}8~M`}(BID6 zuaGa)_ABH=&-TkiX^p;-KV1R+!>@DxH{dGdyArp0{iL);-^ib?fc`0g&khZrJTH7G ztB`skVvGC!2o_&4&WE1-YlHIDxgTm}6-xYgrN zX^p;*{`7rsa{4A*1^p_x)zhc6M&Cz&ddxgdKLJ-kzYA{l^eL^;_tBr8`zohD7FR)k zIBxayDea3t?R<-qdipD}SI*Ha?5?G8$K1dl`;onf8*6 z&o;yp&0njmKQNV7XwzU^$sg#atIg!_P}*mIV4tnr@*zHv;)?s~w}o|_!ij}^?*c54 zpc7c5PfN~wCFf`?p&lJ<9*~Q*wwC$bT)!bAZi(b-D7jw5cIM;Xmtv2aGpeKKur>_t zkG%YIT8nT_x75U(F^~Ln7d9`VqcBEcg=;*nd^agNet7TC2(r9`b~9Rn z7awz1i-XPZ69-4!*hoC_M=DJO^If8F+XzYQrIiqSF}0S>`Jm0Q1tHg|;W5QcXtPutywku^G{SN6nf3V9D-U8or#EM)+S8*h_7Z;Ccz4MG6Z; zKq4+M!I=ig&e3v`1m{!1cGs`P0d_>EM%i4KZIM?b$Cm2SrZZI&V*i%R@t16_qjbti zWD3FvV`+b)5Q>M)-STtkx-j|<65o7^f)Nv?-$}7&()J}FSI30NKWv+BRPEue`x~<1 z!v!9D@F%!tl-ME*5V2PR$eT=VYy+W*Ae3!GbfY6biNy}$pc(96G-$It?L3|+6Jz3v z@YC9t5x3~{kIr>k1GB6_*iS#pTGwd}&9XLfTEiq)mq0wAh`>Pe>Tcmd$b#R3kxlUb8DD!Kl&yN-c!!9_t?B2Eje>^STcR_q8|qVThXpA$)8k&el-CONIixEtxT zrr_ZesUUqOp3(EH^ep@@In&>#OF=s67Jo0D);MLQlLDnU(`k{GGo6lA%u3JYKjq_s z7ugblg7jaJ5-)DWZC1LB|K*P-Bagd(pbfejC_nGISZZDq7e&C0vSvXK3A)jA*ABU2 zC|8V}$a8^VktHeos+q=8ebblUmGPKfB7Qz zPhQsJRn}bB`&cOC1#O@4X)FdGOTvYngXcR12qk~eMqif^P zqJ+Vhu_R;|s`2PB{K24(j>6+$JVxAZmq44dD{6kA)x5fET^IsX=HL`7e#^23({Hu2 zthMo59r0To@!MSq&JpkPW(TV4x`dtgawOLiuq`h}B)BFmhv7|q5<|G%NICA5T>ho3 zQF)(44F#Ext3CEIS@b*pA9wEo9%Zq`jVEd})NGIvl(K5TC@oZjq3ot?-VI4eL?9?7 zB47~Fph058gizjPU4bhq*sxv2YeTO_umMtnBE>5r*uXxB3O2+>zTY`BZ`sZ6CR{Ji z|NH)Vp6oj_?|Wv>oH^&rnKLa!qth!>qwnuR=ibr!dYeX{`7|l{6x#pB>YNVIJ15VN zBOibY)E<^bql=h9${azIJHvrK&s65eyxr=w>RKrCLrR(d#mc;{yq$rsyKa{jxKt|c zLo>f;#Z6tn`eP?+f!4nO!v+<1GAZsg4=Tm&zmIz=G;g6zfo~A69;~mw`~C-wIa=y9 zgaVfwsq+=Z>qThLqC{46aCG{L(3nMN%%W7i2yI!^%H$f>pR`NGCJ)&1p;32Q$cOgO z@s(2!vv6PuN<7wBkm|2>CrPCh3k8pk*rnBaG@0T_)jha8=8br z1YC<1^prhX2;Xc>4LUrC^m!nz{SP)tRN9$N<52qAM4dSv-|ziieQ)o-sOrGX=T6bx z-4RKJI&W-Omf*-p`Y|EVoirukx;^nz5@xTXI{GtGkej`K>kd{=)!nR>xo<>Y)*ESk zbax+8UPfA9r1jI?{p@M|kv2eg53r|QfHd?uY4)^%NV|{|boYg%1W`tMaDTb?yGGZ4 zJ#OQM{;S{KXlfjIiA#gyE|pC^rPdu!3#WW;bodT5JXAs~=opWGNPChmCr!^8gw3cf zJx2qM@r0wM=Ww09dJgs^XW*nl=`$@@pFxSmli?112Gs`R6#9&|PGPm)vAk||Ug$F~^qH1^ z42Jh#ntvbZtT6h_n+|#-5Y}m0?kS6vZVrVu95*2J}Hq_#YZ-e9$1v{bDAVg5P z?iA9QNYa$ODHR>#z>1FLRc*ba?Qn7nnyH|%j}A!wC=VGFkjK3pyA3A0-qj9)l=%5T)Vk;vRJJ*-g^ zL0@UX{nN2;n8e51KXtCO^-rx3F zIJCCK%4;0@eP5AijU4E6x~5!zsQHyyv+ zSp8alkgJDld9$Fbvh*3vp=x&&v8pAdg{{#uocK>65e%_9gLJRk|9!siy45fzlc0N@ zhVGr9?z4%cf3@^q8q~jw&m?=2_D6@+zu4EE1rw6&$;kSb`wYK`q<`}ha*jpNzqoxj zKmAvwf3Xuc)u=uulm z<3!?peaTMz<^>+wgNN65aWYECN;ZmUo$S^xPIl%6o{NDO%JGPuE8PW(}Q1;q|ri`bL9eM?2g)PA3XHN7qnl$O&DG`n)aYvt}8;7>yS> z>P0(!v{PI-72o@p@~DSIQ}fHgH7PeS{U!*b^)l7=GF21?zby9pw~0YWBX<@Ll%y1E zNbZ7UY_;Um->0Y{mWIzrQ|O$UP%}4qIme#BFMazjJdJO4j#=N(2|M%+k>2`-V%9fL zt8b`btZyi0ee*10-oTx!@X!JQdWaiu{J9QE++O~-#WWe^_JOx>tc-G-VAX%VjLK6% z@{&`;N8ezdZbHqxQV<*75*KZ$#-`RCA`^VDm^^_gA_=ZYl)w#zEStzYxOwp5?>BJ2 zfRpI&OMZ~>3K^E!dqd@q3fCV_`&{z>y2kZ~_^K3AB2~H1U97|T4y>HE%y~=t` z&7fDU#;X}V3v{6Ysv_Vo!@`%c>95kRoQY(K(Yn9YmCAB3Vsr)KQC7t2V z=%A81s3hR=hEr6}Vzvu)@<5ZWH#iAs!(rQ~n!zN&*Ko$7FQbuk8WErMcOdSe{Wi{& zd7{^iG~NzBeuTlK#*aUJ#<@i{#d1>hoHR9XWYc5$^>7+GGE-^rmuegQr9~SN()}Cc zJODkK$P$C?v8ecmlg}qVWxR2Ae-_A^1?Luy19IaYfw+NQ9)-XnaXXRjz_7DbEL5~H zG;ph-fpUjYYvLA5kYx zAFZP&J~Dc4_!Q^ztPFibT8ust>LXK+(MQx(&_|@psO)$*P-z|;6ARC>bX2epotuq) z=uMCgF;ZUhrqoQF-VEt*q^We4bxv=AbZ8Ql-qQR&0sQO`Z(hfyv~tS7B4Z`wG%pcP zbL>v4D|xT!DVEE$RVt01VxCN+n$UOj6f=<4pqCpwa>K_;o~a#c=>P%rx3%sTq<`H` z2tSWGYuzoOQ)6fpY8!p3$qyuzK@*hd+`j;X8xrb!8Rg~UsSlm|8|d-}kw&eE*X!`W zYpQ}Sdm78~!fR?Ryr$Zyp2q5dbk=3iJK#Ebl{0s&a{L$ez!5cI!a%>2M@{6t>iAJq z?c;^N%3GTwN5O7i4n|Em7&YZ!)Rbe4nsP8|%E72R!q8}5@EN#;6Xg_ z!D@QcE?9?$@xe-j@xc~6Shu}4!x&Z#PZg_V1jDM~#o`f;sA1KjN&tw(GKuo=1{Tpn z+=3*uIXl7BNDE^Tx;li<1(|>&Z{p7TP_;K&E!ucgjsEdfDcY7T3T0rRX{fSjno2yR zIe~^XYL3@bRlFvgbhf3@Q21gU;#74@>B#m9<4-pFhgYJv5ZXk~>BqFI!g(`r6oNn5 zQOHwXa1{1aK0%`g2(iE9eE7)G@R|6(1s;VMCG1oO_h95w<}}?UcDljKgW(NZ1L!0% zAaP^5+}#^N-F-eh$hx~HBn5t5xN+HQ3vV*n=7Ib@;)eZobqO^dr=EQnBj`QsP5E*Y zTbFqI%G1X%CFV();>&hoIG&PFlYJJR=OOKUm3F>L>xQ)MDy_Rp>w&bMDy^qV>xDFQ z=bRs?!ui4P?19sn)B311_?bFhx7<;29V~@DUqz}DWMOtkg=NnfNvmMtT54LA& z-A>jqU`o){^cE_8O{&^G2^Y;B-u0*clyQ#duf%-vZ|4D;YnSgVX$ytI04m1WQ;V&h7RJuXb z0td2<;7(=R0hS#-#ofrYLCa1m3D$q%#xJMu`oE9XYm4g**rA-)yrc9x22rfvYhm%h zIA^8RSbfq#vKI6S{Kj{uvmP;h#_$`b8g6Ag9dIwx`lL`lGLmo!AT4O%#S3rz~J|Xb{seURt^Neo#ll_ zYf@h96k>f~U+u$2Zz_!5!_w%Lw`ArSOW?8$WY~8Uy4X*5Cz~rK8lj!#cmYayF5|`n z2HSuTFLb<+14Tqw^+i|DK3)!|SA79EIbPJOzUA;?&gp0TLc_;{7%0erhtlvz`E?Q! zMEj8#KVgX`4kgxj_z#mdkNgtNX|<-23I~l$ZH-h64CJ?P%gNLZNOc;iP9qg^fWx!Z zw`9t5zTL5O6%%LFgKWE;oYf;$53&|9@`_giIoQ{l;R6Anm%>#@r}uMg?po3?-l%#*Y~>CiL8l>5v$rB?oivzTE;X2d2GyW5OORBmk_vTq8AObj3L>@` z5A~u#X8{+!i_y4_?D!wu35gy{!(vbi6`P&J$=1>-B%@Qqq4a@*6!A<6n_Gp56pDvr zqymu&u@n)QK)gCkIXa9fW!vZ|%KXZiZ=R_7E+0|98BCm*Kf})FqZ?4`GMrn3SQYek zg5K4clfyg;34Usf) z5h4Z!t@-$f^5Zx7L&{GhkqWFj7VMt}r|sQ>>IDth;cbL!W+^uNr%`TNr2}t_xrjwx z24TAHexz(*4_3=HhW5o~@X)2;AB*pE;9!Oe&zDmSk6j5fCfs;XtZ?D^*gXe_9I>wP zstn#Z;$a@k@9Ti2XW&IS?YDkA`E9aY=owscS}-s?MRa?CJvVun7mT?NEfB!z|AFC} z_-P!oZW$tF;wwZzYq;f9CDfdtbx*LtAfQisSuq~Zqf-hpU=XFoR~Ae$*a21y4T89C z5W`B~j?^;DkWnqz>t@uC2+Z^E8m)jQjR5kxcwYrhsYahx3cFRQgVviZ@vu$5lhYL) zTD_qdn^9x&q6Gh?_%Fi*q}W#k6nN}}1w)^WHHJ=DF!UZp{Mpb!aQf5A6B-cR3}zjR z?@J`Ti?%VnD{S;GC=stbZ_<15Jz%b2ztc43cQO|pMdatcoBjtCJXRPg>S({-wYHqm z7EH1z{*(3_`;fmq9<<`&jjcCh|IQe^$D3gPPQ?6ZyghOR?{FB&Zg4j6z#`eQp{2iT zgUs?x%~#;i3()ihPQ4%{FK{(vB_F=(e2jha9krf#U=^bmU}a`Os;?kTPGV&jvUbV7 z7`g=ptpf(F$6*4gl2^(HD_$ujU9KI^-lO^Q1@JpO|AqPKf0nn%_g#P`lvp)>%a(&lxLl=>_9g}L*NF*7-@{^y z$vYXH>J4&3(R6Gm()=^EzHe&&aqDok3e{pAfcN9MCC@ima7_q4fv(im0@-_L&k@<0 zXt{CVmFztTW6RMkP#@X*5#~Kd2n%*V@1ZMV$+cL$vD8{HekuEE!M_i!SNw)$yO3n` zHze^+{PzYo55&`je+~cW`kRAsnMZ8iZeEh?z7Wa>^R3K}qw24?M0fX%TtPflN}@4~ z$g_t>Fno1Dt*M1BymgJNSi$J(4LtvSGAwODx! z7Au2udHxS+Jo|^VX6P{-;;+%<@5zRD9MhVZwFVA*d7M`RBW(dI6<-;A3i7 z=r_zO@(|v%WN7rB>MKHn7NJ4iszHlfdQl11c})d>l_7_N=TUnWp*GyNA!RS8ERndI z-JEX;A*mO|1GcGNl%^MApFqXYA&jRQ&hBe?R;Wz<(P4FU0?#SUqRR z<{TG-8TikN1+0gSjcZ%~0@le)fo^jkGib6zJqOc1nKbQ#6q@xx3MPFrY0?KNH0Og9 zO!;Keln+v9#s?{w@W~`yixisgK?-zjCh1zFkgi1vbZsV0_8^6HEmELsGij;^DWq$W z0$rO)6Fo>FU5gYjawZs=Qb^Y#1#FxNHl`GCF{KPf$`F|{M5YWyic6-rWC}*HnHe%A zL#AXRB}=Ac$&_rQcw~x4rsSAYd01V{+d;z3FRg#w>Mx-H?e-H-(jjS}&y7ZNXPfhN zo84$MHyX{2MsuUl+-Nj68qJMH0~hJ;A)DQ3G&dT}O^xREuzEA~Ti6-rGSgV?BH2lH z^W2j+!lY*jP;==hu|&?U8%~njNKT_~CzSKBI`1YFXL~UWdnp_8!Rrv@&I>G0z}AZZ z)=dV6JH*ftY@%U&Fg#84krDK4!%IXLiumVAnPWFKD-F^>*oL=&aWVGxEh4=te!7Su zRx_5goZw=3v9nXBo zf>%|}YRnaO8^Zq+t7_mCg2z6F*W^&ZSPg~w4y?CPYy^)RccQBc4K}1*s{fKP@F6XT zxsPMPE-YQ9ts<6!$B3SyT&C?&Y4j8&NQ3u`5kavf7>mv790Ys{=pkC2tW5m}+W zF$a>(thQVkTtx#bS0l1InX;loHDm>EiICMV&W0;^3T1V>nN^<%S^cXKS;ZljgC2>} zH&escZek%ZJMcj1k5z1_BG0Se*>2Fx355r-zVqci7ynHX@5Uxr!Lo+rbVM8}RC9#$+`%Rs7VCIbqwzp4$yBzm-dr%2M1 zOzi_7hrT!Qf7jlAjKg#I7I-oa|CC{}PsDN#4=WLiWgtx~kOAx`rMA2QF;%*GzCX@= zv**8(@+o2{Ki4Z;=1?pK$v~>;D+8)tT@d3uQJ+t1m_KM7d*J@>ezD4;5AgoL^EUoL zyvqDO>A>_b-!J)h@b~NO@FsokrLTas@!(8Gtlu99Dz|>0* z9IdpFFx#&gQBAg=>eWbpG>!<*mP8=J%TI>t4>)}>pJVj?fw;G2V~M5rP!*~-rUiK) zK_6`Hce1Y-rzHG9%fAcBI}0U+6=~v`m*A_yt~O_0`r+~cbVP#F>+j_CV~?o60Ba@C zLuX<84BUn4FdPq>2pMYFNQFT(W>ra zoZ>&TNkWu4yGcb@fLC*bmK;5!LMh@=3ZXv!+hkdN-xfbi1j_5hdAW5iNN26-+PH|>~{iuM~chkBl3D?B6J4szP z@9MjbhMTEy;TMvV!y6d3MeNPOWJrQzM0|qdQn-roIw28zWgNIxJt1*eQbHn{CLwVw zVl^Y+2FXh<)Q6?$7gO`yjOGIgQ^kw7sOo|W8tNKHb;aZg$sU@g#5^Vf^{x6gRklaz z17>^37Ex~o678`QDWboMtfWYaid0hMOpZ|FB&txV zIE_NGakyY0d@=ME8iz15X-$fW+Xp6-LT%gbx;p=ec#o6c=Bq=*xgG<|S*WZBJ5xL|9qX zufO_*@x?4v5OTl|p3nF!a)06{w>f?;YDq1OISwAh;k1b+*awr9jO7wp$vEDn8De?K zNfc|ZyIUXzzNgq(x;p`;9X7}`&C^(@hjFt|4gajOMF?&A}rqZ&ZkC9M_1fgTH&AxP(*oWv>^(~ok z5Ymc!O@4QAiejpxAKLi+$p@I<$37|b53Pui)x79N$?toJtFu*v`8|yzdC3)`rwSE{ zWC}?Z=d!@!GsZKE6EYSTF@7XMz;DkzCVuNUMd7FIv*CB|LyX^5Pe}Zz!@|HpBWkKDH$2EmX&;-!N}k* z9HC_}GQ0N&f|0@29g^u49EFJ?T%Dzlp?*I}cB~Qf>9*yH6sA7Ce5IvNYyUhi2Gdwz z>2UhgH}vo8)5#Tza7v%PI5wI-t)xaURMf)HZLRg)gWOuwctKMu|Ue?J|=wB&#rEq>5+1ltrQE-YPzmjM0r47Y&CrdAe8K(&Tl>Z!yJJ zBY^lSBTnp#_=6m0-nnX)$$M%{nRB!WvH@gWWmFBMAu~T*yE?#?Z7I)M#(3 ze4g17d57v0MG94k*G4VTEbmMbX&ZkfQF#NRl!x}8#W1$|-u{Wv9>kv1sy~m2USA7; z2w5`yyY z99(~g`2HiKeGGoQI9w(cJM#EY%Dd#R+rBgSYaRN1LZemG9D?v^7u>#1v3-V7DNR*s zV^LVLnHUA-_v=G;`a#}ioB0{_D?gt6a)R48Ui38cGo&f`c=EgTkr4boDKqM8;J2$V zdVRzA^IgUqc06TI4pgtRZgkRO;*OTwFHp1GgpAQg@-)5+3PYW&7ev1acKTJV--9*~ z=|BIL&PH>Su;lQ#IfO#Y86!etqs<>YU;>A(~WSKkhB~^G~*fN948y+NY;Fkh3mo$}2R@huj_OrMH4GhI-=qAmSJ>!Ry*^FM zzMAz%yqJlABu}YAWLkJcg6OmMfuQ`r|7JD@zb1#z#w1Wse&>ef_sMhvEhE2O`O)bU zl;0J0euev0blUTas-}_O+~djbkR89O^{a{G=|B&t(4{D!Z8AkPwRqKyZ5eKI+J(;%qWSI5IyBr2>-;#k;u^s_Q zQm0ZQFAb~596{w>aBmR5R*2a$uR<|X22#XTW~L9ScA8i}Q;S@|@;!@bX7=}KqLa+l zA=;SPmZ)r-h0oTc=LW{rYX2m_iQT!8+h6v#_X(rFU8V|pm|-Hdco2Ph-4jHg5;5c& zn)<=f10%0giXsmIN%TsUe@5f;KiA&gr2mdhHF7iL@n>(nCbUso`GaUI@zb(k{&Wz1 zY8X1Ad~{wOR6q3p^~x`Ap!^_uEnpnX_I8Qe|MR(`PO+j+as&BA>#s|QT-0C7X@$EN zBTsbEyh^X`?n)UOUQsuirWLS8a8)T!E5Q7Hj6&2*Enj{RpOLz`S8Jeum;7@x2CcGv zH3c{kfc3{&MxzALW4K+us@4;};!L0d>`Fu{8AuaNWWXU}5Rhf9Q)L~=2`wuq{~e+2 z_xcq^4hH|cP%j4qQ~5OIE0cNMk}t|YT+h%E`R6oy`G)-i6ioX^hFM>o!(p<2WB~S$ z48Z%J=oP>@qR)|XQg=}ro64csHBf~J(oK1eVhSWcv>(6-D z>u=I)Sh(*!^}dH>o;NqwJZ=H|3$SR|ACv1pWgR;lxIQk+SpxS!u{^jE6G)}l@w8Iybovg3JgmUlUR=Skmsb3mXWm9d@0zh-~iS!wJu(da`2?SSe`P$sm{Mm z5zdd{9)g>g{44O);>108bJNIm4974IIfv^R4(_Yu972kC=vEdl%$X2Qd@7|nE5&6_ z9~k|kfA5+UBG@((4&Vfz`c9ygF!wH`f(CyrrKZ7!;!}JXXTjC3r`=g*04`fCN1k*CTM+Idb?ff4Mz_<}cSAriz@RDxwi_v2^BL4eJp0JwP5Tj0G;; zfaM7M3&$^XCG<|JgG`CHyr$mN9x1ZUpejq%dBDX9m?X%Ou~3vh?Zz} zC$$7lz8q#818lA$hjSKuHacF6J|7-a_Vr9;RG%S$rMNm9XSS`$8sx!Uk2$~bMOoN+{7;$CQXQ6v_y%v{0)OIGybmZFzvlB z0=~igRzip`4F`YCW8v!?4A1;>aX9#d#~TgbIvo6tM!~Nn{C8!AssDtPjVYg5b!j;G zx<i?lAZdeW5Y%E-HU%IQUy5z_Y${5ZE{chKZAP<-MTqnsam6^&PJn zB8>)BCwoc_%ZSMV9!4EYeICqTrBu+*t}yjm`(pk2MU#(bDU%TS@CO>^uiA4OFCWp$ z?-i!}4YxI1e$H`}U!T8Nzr8Rt4E+*n>eH`2{C=W;c{upBSY8y)9g@r*8 z>&tAKufSLyg6xlzUx{pgSoCUPhtGpNl`kYh#cziF0HXnvLI{*`HKolW!{T)flrgKT zfilCe@r|mhVdEQ{57_u-RX3b`k+()H9UP{<*8t~m^$nKK2Z=u}4hP?PZDZg|2)=bV z_-odMhi7`Rz4h@RiMGjKv|$wd)rQH&{G}-dQ>+E{f(@3@66DN)4b~8Q(J)}3o&ny< zY>v?YEkUrc9J806D>=+yFSLO&;c}G;mm6fl8Kx&c!|>lSqQ@z!VnO!jtr6%E+#Zz# zzcD>bd#+etpPte5)vc6Ch`#*E*Ra02yHn%!CFvU*|0}dvetLrc@0)Mu|9Hvuio>}( zfq~p4h{J=(8*V>^%N(DqxUhcx{9Iu4@ySaakFS2g?NdzclT1a2+DrSwv`>9~{2;-9 zF)$2#uZ{KFw?4c^@Q;RrzjbqC;MWoSq;T+yw$z7@#$TN&lMw#8X+gvMbwP*Yqd)T( zcY{x-NwS&xVhJh(eX)s4Wqkp?KwDv<9q-{>8ap*g67a%9pb zeB7<3j;~s;(~7iA+Jq0!gOw;(ZQBi_F#3U}!XLb%~4)O5-Ne14^ggdIXh-pJ( z;c3H4L?{LLNf;ie0tS;e02><6lEh;QES1dG^Ppxvp2un?{4iZ+Mh2@HGV2f(zf>`} z9)5r1MaQowpcRT!?f6{){H9C%`o2lGzfOTAt!w0NbMn3~pO&g?aHwf6UBjA5t~#*o z`zF>e!L25>qrx~UzDXj`Ka`#aFR71jkUq1uM}^3*2j6UbeoO!84MP+y}C4^hBK_x*`p*UZXPTc@1*}j5@|r4o)WbJ@UVVHc z@mH$&u1{!vhlRk`?{6RyeD~oGee0@kh(D=3TjWfQiJ?_VD=0VF|F8l%6FtG12Y$iU z#gjGPO>oSOrz2Kqci}#9GkVB)r z4uzzd3=ejg`2-uj18;~gA1sz(XhG;6?j4M7JD_`&2twC4JN_WhVpJ&{ie`m)k}`qe z!4+mSr$WLTLepSJ)8Fa_Pq987Ncwb?%9Q!(9Pm?{O7N4K4#4n5%?N-|oXS=+LuSr0 zAoVrc3H{98@=L{iR~TC{e@vB#a~bC&a~Olvcej}OHIV@NeGBq;)MoO|QZDAeu|H|X zp?>;ToK6SgD(~=nNMHoGJqm;7LrSp}dfRk!{V&=O3rgEe$V3gXL^VY;d6`dn0l%al zEpJZ~57iZPakl2iRS+(eu|u>id9QABjuT|Qn7r7($6t%HrCX0A&eAaXkQk#S?7O)$;21uah?0mG^pK7mi$U3-bOCGO})a8 zPXJQHG%C2ZdL?tZ6dUICCwm~>#_Lyt>}$2k&F!_9W17v%58d zw3`IM4hWJL2*G3oQ)I9^G52k$1{uzNu|YEQx-^sw$0=5y5p!3a%PjWICEb)*t$ab2 z9EG`GyyS0|d^MGP8cMFMt^^^70%(r8c!1XeZF;vf`29?Y%qu#*h$!Y={w_XWAbT;Z zD>KC^LV~ckpqJ4YcmA76@(T3;k+E1YCX_12$CicSmo7w+{V1gvoz>=QLJJAPOrXPJ zk#HEl%r(_?JglY8Taco%N#~noB%K@h_ci`~iGHoW2=bXfB}hK`gdXg(!U_Vu78{ZQpA1dfUz>k z6&ABObF5XNk4X4!472QNvnpJn2=(a^RG;7EDMYB%$Nh|2UA~IBVuB-b+mww8ZJXod ziu;Hw-Z-1N;&fA14?N2yuUL$?kqiH6WN6{XN79bMO9dN@u@tJqPRGLO#2C5s8}w&e z&jquVTsv=xJ=;F7o4ami;>+g{#@Nbr?uO6mFwDsXL4WRCgrprJ`3?0=7xm4_@|&*s zrYucp4dL@( ze~FJP6rbS@<0Ho-Z1T5Qd1g_J@DEo7wN;gBYGuL`Ek;e`GhBTt-d0%{^sQZQ(svii zAo^}x7gC=`*GHMV0S+Wf)K>iYhNLT4j{g^oDZbLJl0De=>}MKL&>bAMi7a7n)& z2;Q<2=X8p`ANn_>xlc*BbDiePK8(XZcOtV}k9FtFuGvE6VCc;n>j_zyX+Pt@gE0r1>jA{D|WVJWdGNw6a2bY>H(ux5A$K^Pq zZuchiWIXR+2uZ{DA7W@ww#Pp}zIAj_R2eRca^i{%T$6EAYQFz+KDc*+8%MweF*wdE z9_hZ=E!!|q`Ve+ElevO+{57;4^Wh5d|IVkG=eHB5&qtYb&?=byr7qltt6D)>BdR?> zZAhW<2x-1so`s_$^L#LwFZ(3~7lS4UKJE>8z$DpgQCKY*A85VD(RyQs!EgldbDOCI zoU2VafCFOtFjbL5$C_T0!??%60c-mn@ozTiTC4JyoFY+~uJUNbdH5#3WI%<1S>H#( z3}hI;2b3G-Bo9Nkx7f8k@6Cj{rvp!*vbiTv3H127s9Q`zXIIRWDN_yP4Sjm-)3JKysq?hlDvzA?}I~hAWVE;-3H^KD>|j23vQQ-Q=Qs z%fN>9nt{|ZF&&*(OOrWAI)_o4;qt|c7)@=mJ&%=PHr>hHzLn=(Q~6! z&b8oWC=>D+)!r^^C#B2*DN91NxGQ9NqO;ZcSm;LT!`eAq4C}*bXLEI$qdKGo|GbB) zL!nkw9i4r8)zVXts3_WTQ+aPj zr=!Y&wIhn|m~LWmPq~E!X}Y9fP3KoRe2DIra7YW*bonBTPQIg?EcI~-lj9;7cnn{H zCV=Rp?k#rR+na)@JL$^!U|o6gL|N}E7+&hiC-39(p(|qp_EwCbE76{OI!_50(m2T- zvRDeGRF;I^&6$t0_{i)!0LI)S{;EXoUjJ^At%sc4lJ~Tb^3-R!WK8Hs3gIlC>?F;P zThoIz%rYpE2>OH-v!PFj4;N8s5ZNbDPb#sOEHOouxNezI;%FxIt_^IY`38 z%eN$Fu#7){D`6&Od{k#9R&2ZY3n4?sKRt)ILdtlLZp4gHW&Dj~nOW{S zDo5&x9^a)<9()K>T$4P~i82o~cQ`#UB$)`mU7X5!1cqS}kMxboAl}RXD|(9iu1j+} zStg)t^62~&G{gM~GJ{QPt;#lm$g3t9ztA9WSulB}vO!O7@Mnm^wD=R2mvIs}6z90v zTn?IXn~3eiME$HO(P5kT$6b=B+r&zQNYhX~NO|foXPB^gf&Tr_Ip?90E?V_mEUmA4 zwHkV+%<|CdT$7wsl~aq`VZ;$&p~?a@O)CaC44knRQR06g?Ym8^VsH|sZQ^Heup)}r z7l9}S&)E%}M$pIJu?)V2>BAk%ryZC+A2gACa_yZ4)9DCtLxUc#vI?b1p+Jv4USgQ5 zqIE1!w~+1q-fL72F$+8%1n#nbVTL*HVBn%Z|bN(nPnh{gAnl&=N+QoMM4Hh=%OKi?j*u1jDz~&u#o79bvpklb z2Q!Bgz)_u~0CsxWDrX|tU$N#(Fzl^SR}gD94*$&+R=!szF*S$9NoxMF*uX!L@Mn3G zHm&jCh!s>4q(sUy_ECSDQR!zNfTg`^JoaTb@u zVtiLSuG6ejs7^b?xvEY(#9)LB{c#q#ML_;S=#uH@82Tfkjo!As%xvLmt^>BEDLu5; zYTF(G(wwZ44Z29v*rta*VENf0GE_boDoTC!X@Y@I^bDR*8N_l1{$Wl!ga`*Qzb}Tm zl{#yo)LBmwjSuA@Vh)V{Abn<-PG;Y(_`f0licNLHs=euYi|n1-GTD<(mXumW!xkQw zZ$?P6(k<|<^nVGeJ4Bn8B+;8Jze7-kt3XWFLHf`r*aO`P38lr*(~fPlRCk4lU25t zz?uR^S5x2R6#_H%bcuIs3B%_!Gy*K3@cj4%#&ZEp0|$fA@J(8RrmHJPm9>(At=2{DzOC&b;Dr^qYkbtp?C2ZI@2*iEa*3eb(Z%}8&wpT>mdE{Y| zk?o@3-&Q&Q0RMrqRE@81v6D8mKePOWk$oJ&{@$-=a53!P@Fz`B?uaA;h8p##$phn(*`Qn zvs>lSCzvs%XCefqg@S28FbeDE&QMrObTJmJC$2q(M0fXdjBZYe1Z~l^4S}*lqq-xt zp5f4d)ogeE)?6;Bb{E4-iTD6)ASEIdR=Xt;uKK9#`dw{@2&c_5^`uW_Q+{3 z`*OQmW0~k$hBA~}J86W`gk39VAZ{ zlUZCQUAD%Epn`1TVpy^zr83LatEfhF->ZKlTqHpbSUTDtjhc-q3;1ED3<7rqdYp?# zLT9Q=kpJ~7irf7q6Ru%WwP|;SEU2y}SLNs*GP)Qe3|W=O5aMc(1zwuxn?(4L4>l_q z18rQXCsnXSd++@uOgls@p`8a?f$H+Y6q)BBaJ7=EB`}%k^yK;#BmYXK7X@6K!f+RC<3F=jYWZuS!WQV(Oz@I;4|2)#PGTNHksh1QXnjctV0JO!}f`YZARaV;6> zJ+Hs{Ua|cP9JhNEj_Ert`vl4?R}z`?J*dzddPDbTC*IvI08a0lVB%&ZfB%YG*c9ewSWp z6_VDJo2~b+l74SuU?H1rA3{ogCv`C8_X!A+lHX%938@Cg-wp9oeS7!Usf--=_xCno zd_W@KlHi zY#+WKufMoQsccEodheXZE&1>-#Ae&XL=2pyKCVDW>EgJt&8bFm5Wn(t+3CCF;3b@6 z<*dtOW}8;ZmQ=bp5VtEvc_D2qp~9?8ctpW;Q!sMQkQ9Gp zm<0;v*T-ZzEgMnJ6U(IgWXyPLW# zWS%r#RqNmXL^({qz~IsBDZvG`fw=A^FhQh0AY7mLni`kOD z7BeoyAVUZY(pqLToEB)2!Jx)~BxH#GrNTCj0c9h2dE$=r(+b$zVH&~S=N&iw@4eij z|Im|}{%MCL{ddBZFX{gkLN@x7KZWQI9bcYm>3F+$-t1e3E2l%>N0}6ILnHvd0qzE3rOmCn2WPWXvD%s z<7G77QT~ZLn-K|QxA0s~;>DLj+5PQRJj{@F=-N1fh&bU2ZnijDxjkRYtPOxfFT1SL$bJ@4DMSjCXf~-LT)j;~+cC|6>*}dR1 z)lK(gM55WVQSia6pq#v*Ay+?%56@ogImY-RD++$501|#n$6NGDllb*!{I-iXX{5m%ybmEouP@r0^m+n( zt>|?OhI(}Szp?n7V#8$*Eu|KpBF8ZC;oU>d5D-UAK3t$_&ZzOfd zOJ#Q=&?S9(9(PF?z+@k$F3FwdQp1O%Sj`B3Xq%V5mm|>?_cLb0Q!$!GXV&9TJlTNL zkx7?Fp)p~Z?LpUY*k;WcIkx*WqelF>KOpUdVQuyH;- zRn*l~XuemIE2(6;_#3^d_WPYu`%9KKl~b9hGO&_~uC zpyYB0FXH!nDq(I^FgT%rr)8tT%!m0-{kliN3}^(*Le7Sf_(%+>~vCu|%UydR;SKA!uP zY+b0*qGZy?lcVY54zQR&wgg!LsgF_b9j8b(vunl>ZQA^2DVDqLmb_7{sJB!Jb`;Q0 z;S!)ymrGEddR5T74=U_!DmkR!Cl&Oi3YunMneKtXD^Frq0`cXzn5cYty~?Dm%H&^0 zCcdbwIb4D5yNfHm=&8nmr6@33kBAO=(KC$$YofqrC@@|&OR^B?-?C0>o+woQ{6|UU zz6yGeSt#`oRtFnG-qi~1&pRcqw3|}0byTo`0^20P7SPt+U@(#fltrUFLpw}TK#Lj3 z(29XLM8wEidu%FFD(aJ@7uX=fUpxbe`6>mB4xzrn3xRn@!HiTeIQF_h zn1>Y1Sqdhp5im0q%y)8uRZfRs7;02tW^dGC3gQ)p09K&hgg?zL=jP5dNTasRapD=; zQMOUgw=i@R1$o^4HPG0D_C%S~o=@i+EEcvshnyt)lj~)*hjZTv6W7B%KKFcoVCRX^ zi^*mU=^f5jvro_eL-NG=!K4do-kz#pW-FNPjez+^O_$^4H3>B}!sFgGfg#`NVw6pTm0kki~Q4qBc_C`^6X7s=itFD%WeRvdOJ!PMU8OZ&qI=7{qiBuEf zM^irg|E{0|3uGr-Pg87F8H|uvEU?BTMi(BY#~JmL9DsIWplGfBUyX;+$o<#`L0=i@ zQH45Slwxo1kg?5z{Suu;w@Z;?%?~mjQu>mh4J$bWw6$`JU93QrGN(>DB20=Z&Z%Ia zfJsWC!n~lISKrE2RZ0^^hgqy(Rx23RE~u8KxC6H7i|wUtYSb=-GsmkOu2(rQHzS8B zhYUf8XuyovCuy24K~1Ix^qwyibYSq{Bh)sQuOLKsf3I9nM{biWKF2Vg0{t_O8m3o7 z=>4Ba6jm!}+EHndIwIH_1y-fNbOi>?pZTESdMlJO6|`wBhImCnYMQ4CZLYu!F+!m? zsDV%vYw>&KirOyMZY|nx)HKllOz5lzcuRaN>9klu3j;bjd#zVsV-(n7i%vD>=p&*K zEK<;CO6UbgP3RV@e(?p6^=-wlK`j)UfN*8gHLqBeKz7faptM*()2x z4IU*8%KZh_&A^`)q69kg6!vy8obZu5jLF{WxDQGQb~YJ0H`8JfLk-ua;nHGWfneC4 z-zi<*f^r}pRbYc@>k`1Qwb_YhsF}7|f$jFmf~EZs7~GW`oh;^#AO1)=z#~GVd=wnQ zclW6rmZ}^~Ya$9vg@P$jFs3yT1?FM}(_O)s)MWELi*$y0C*mNCN87>-r? z)L{YIX4Hhhj8HJ?3Wobs^f(`)>wqRh!GqIImyYTPozGb+hu`MQQf2c;FZCBp-4dpo z6pU){sF?0mFiRB7AjxL^dw(J|C#3f-QaFb6TBj};()+l|VYte{CFz4o+Pb!ouJvBk zwbFhnqG_o~)46^tC@1^UN*BzYwYiXVI~D|x;GmAX2*RZyc~j#SHPDeY{u zbl9=$KNQRx3Px$?s4!P6nA;VM(#}y~auv)a3Py=%RG6*`rmKQc;u#gDse<`YuAUk$ z#WOnHzWPkk`gH{}B%DBou)`Y)W}$*nLL3#hhZW2y1(OjhiDBF4Mg?=Wg2`$G%qRu( zeU+4WPjG$0NPIs9@hU+W5+BtwCq@3hmG>9EHRXNkH&R*Jb3TsjnYsZhE)Cmi5f0Sy#&e_X@eZYj}y( z1QEwG)vCm45{55%WH9X4{hSJB-$I*jWnXG^X(5K<<~|bbt|}ASLQ9#T?w`M>>K@rA z?EFeX3%MXF!cZGU+Wmk(eJO$dO+XDZ!f~~~ntNXTnc4Pns_i4pzYTa1tby*iE7yRV zt;<_qn@axcrph1)gq@9hRcQh-o1}nE5T&dGx2cy z3;~wdoeN2z0ThBCeMQ2UAKol@NhyiDDT{`AgET~*|05iyQ|ztH8W+1aEU1$SzJsx4q}1O>k5ZHD;)N^aBjJX)9brWj9E#)63Ijm7F1sUUk+ zo*%WJgrqjRU6?fx7_(tdgWnD7+nbc=o$pHjHri zg7Wd;6PAqgmCVf*wF&cY1ccY$0ry+(#uEF^qB5N++vY(f`pys8o^QWJO4M^BjCCKi z2pKE8QlJSI&<-Cb$iB!rq$B%oW2^peIOU6k;H;a8>R46m1T0wtj|22s*v2aW`H~HC zEtYMp0M*uQmC_?_V!-K08&(Xs9e|^=ooWHM&j$B3;A#PPm2yd}QgBG~R}xWuGk*mr zcF9dX1klrLpa}py1kk6I7iXpdrL-kqtNM>*@_|aU$En&`b zG#st2yDynqGU5UN@xyDo>yB^!ALDg&9V7Rnnde$M_|sEKi-h&>@-YWA>Cq-j(Q*(q z0t`mz4;s=KK12v@D)Qfj!sw-w}41!=jH8bbA9 z1$l{tTwtjc1JdqUv8s5Zf;*ew|!S0DsHC5 zTWBW8OaX?y;~+4TX}5xAcO7H1$H20&OBe zZzjD^fF0`Npcf`XFU&Ocf`T;kLa_qeIZNV7y5cHU?OR3jin8_H6Ak68(8~ z33GV~kD}qy0g{GU3a;O7reTi_l7^cK3>toj5acDk5qRxkdu6Lgv+yF<0n=i7bXq*E zK>xa)tHiWuv+`4kOj?mqr`z3Brv_DvIhvLG?MLH)LON1Sb}!s-)@Glk*fj|UaXB@A z+`$&PFJ|J*qhv3+CmPJY8(w;z1% z&~QUT!rbrhiTLauzH0zXesnM4y<51-V`FHyUc%hB@xg&NDI*hR4Z)1Rk6`x54k$s? z^^=XVmNVEcR_x+Nsa#L_Z5OHevQe&eK z|5pbEzYo<|*!AFI$H4U2%s_xz%#|N@Ho64DQW>Q+!9+?(9 zT(V7q7(Mi}x&zuNcJg0{m>9auXtI$Evs>I>YBX7Ud~l#`5X`9rGmK%(Cd=z9n=Dxs z`t5(X$+oSPINUPKXtFyHqKbhoTi`qZpRGXf%ewO^2(YXRXC;BSdbc0NYmoV? z>tt)q#^+EB_?!#~N%1Q&5@U*kT&Ly}xh8>(SXPdUDlEtI0)ylSpO7TKgR?{)L~<83 zJ!w7A+G=w}YopD-R9rbmLZZz<|Mz7*?*v1lqsvba2M2@JAF*aP#A7>R;<~$nSiN;0 zNw+_D%M4z4hv|0b>oS_1YtZddgn%LR57TbYZj*M)X$pmCXYhs^d>Opq?IQDf;#x^O z_c4=r;6}QU3j12#qU^Aj0Id7aha@^UhRGtHQoJVdW~){n#aT+?wHc_Yuq4l*!PkR8 zgFW1188mncF|qdUAR0J&OB%$h3|8%A8Z3ED;_dbtG#HJLs{d_rMv8dniNB)q&S$D= z{xw5ZKLei!@eZ>1ewV5~!nrg-!_sQ#6;zthPWMBM@+a|jGu0Z8?6L8@Hl>^BwQ1B_rCLDeoDACyR%EbCBeO#Pg)MN ziQNq#VzJ`icGWG$E_&w=E>a~eVmkD}BRk<`z6}fF@;L0%Jbzo;Cm-WPIr;>bv-r2W z>n@6Cy^Mjgf8@EikHv9q53TME&7Ysp&`m78#Aln^#`tUTZ7;fNrTf;l$oRfw>Q!Ls zx-coF8C&bePQVGJ?nd8|*&)pdPhrpNS+@t{jF zx-5_^=>XM3CGh(BRND~?wDKR6FQ#LX=vK3Cu{>81sEF0lYp*Nmdt{9h&|>48ZPDqk zD^KK8lxtl{l;;#*>Oss_Y?iv1*k1FGz_m3a9OY2{Cu!B0@$m;+$bIfGq)LXphu#T_ zsoTkNLwfDC4+m{Mz%52$@I$71W$$@v!h#1;EQY1?{(8I4zqBg#)I_oc%@1$zuHJaE&03hu||r=NXa!)`WY!{M#|YnN>?MrVWi+1Cobz{ z2ba4;wB7_d)n-x@=h4SY4l=KrpR#ztNquAP$N#hVUyuKH@&6_Mf5ksF5eCQT)xe8v zPWUlC!37(X8PPZm4TP&VC{q?JtiPrMi4aba8}nZW6fO+dsF{Z6lj7zncFlbSvEsYSo)g)7F27E zLgGI-HSr#f)y!FiM9P<+dL=#dh4hOuSF3mY)GO(M)HVEx@s46{y^H31sM=$clYI{(A(~K+a2*#J-0i>!R&4uvwOkp?%sIc z2MkZ|`yk#2@xFR)ABy)yyf5PY^xVD_?}vCl#QW>H{V3ia@&1Sp&~y7!d;sDD5Whgr z9YFC55WfKNG(GnMil-r-hB&T8Powxi#0MgNp`JUC;uj)*A>!$J?u8UjM;zhw4MZv; zAl~7A9im_pkc=tVM0YnqyeZ;%dYb|ScZ_E=({r0r7R?ZEhB&TZZ$|Ovh&M;Pg`V4- z;w=zwfp|+jw*|#pB91HBGZJurHpLSVM>qkpg*I^%(a#tsL<%kC0MVghoRBRCWXlOK z(jk(}&?icV6rrw;F&e=bI>Z~QL%h%-Zq^|V(jkr_`WaJ3FeNC50^Tx|Q-X5Jz{{1A z+kE`gtLULGq+f8cjt8KZsOR!!98avGIJj6vee?tub86x}9IKhLlE1C-@l&s&hrW=0 zk*}0*#}f5izK*|5tYQ&&D4|RAQ8M!7)Wmx@Rx@WOe_P|@r(Q)5eIflK-#z@!u|z$W z3yvpNQ5^WHsE?k=ms1n(;aJU_qx@}+kDq!KJ@ke2YuO$UzrQ1YQv4uXNf0g)z7D=z z7QGH=u@3$Wr=HsZZ=HBc43O+2rl|2I<83kvW^yFKgiwM*z%h;@`WfS*)&|q$Qo!p% zYp0^MUC6YMax6rSg?erwV2TNbe#Su6C%TIPLjf-|{6)opDFsXg!BhaILeC|wU#Td? zPsuSztwO3~9DMGhm|L%+2j0!$cbtZI6vI1u;9WJp<21aZ7~aW5`o$M>DGl%VsaMfM zUr4`rH&4Cer(Q)5eIfmxFzz*bC*LY6TbE2*Gv_%jn$v(Q#qdrh(l78?O=*xO^<2J% zODiYkYeMMrVfBWiR6Q?MIq_4*j})RrCN|zQDt`kRn7m ziUEoqe(qlMg`DJPQ2>;{8$f-Fhfj$~jgMl0qKALZVf^X~Imz#%2%zWzD7q2Nw~*6N z7R3NX4}Bs1qUJ{_4K-KK<#bsexQvAiHCIs|JyCP|Dk1S6j@8Ub;%{qw{M4)Hp)aIg zDVIN@Gb4SD&J8XUR_J^cIcszW-Jk}sgGNUpdOf;M4IC|dJ#e)XTn({vLK0F)66j}4 z8c9M5B!L26*k>1|KoY38(MS?Bz-W4|1{g?_qlkXSln@LAip;b`ZwX)u0aF5)GJ+`s zOqrfr1{g?_qlkW%>r9nIcLhkG!ajNe7)I7T9ITnMjK8X3B@4PzRAmSt~K;79O zpt{2)#3n%!U(^nql7JIzV^TXwY!f(P6F7l!3g6mJXv4&1D*(MdDD(elukWp1??TUy zL4zwV{jKuu7-)L^O}su_z)LLC)a&=gqvjZoVZoy>Hy&{Z;uLmlcss;iFl`0UiR=Z# zRzNhYy#QMQZSJ5pr=Ldm_po$`;Qy7G16&57!UR7E4LAt#!Fui>iVsE{;laSkML5yV z7%*_6+XddGfERpwkqf+A2rw{njkg3aB^ZAoUP|#&#Hm}Ds#8}{&9j_@?lw*s`S0BtKYKid`{F_M_+y*{=o@Pas8^RYzW9mViYCDJ3f zKc>+lTJfr6v{!j@5}j@0z?xw>!#=9QP55IbVIDWo{vXCcijVPIJ<|Qk4Hfd z-O~fHo_anW1wD07PsDoZ`FIrc(mlNpOV#u7C`i>ku$r@b>-l&T^wvGFnX~)o`FIrc z(LJ!3v-|4#cog*2J+POv`|0_36!g-l&T^w&MGm9q!v`FIoz&^@q}voFx| z@hG@J_rOlhPSf-8C`i*i&|BF9^?W=E2I?M!U?yk7G%mQ1#>GGg;p}uhpOVsbPdZ|Q z^n5%D2I(H~PWE6uACH2;x@RzAL-c$+3Wn&OA&3pt^YJJcs(Xea=F;==C~)Z>7h-Nb zACCgJ?g1BMXXyEO6lCb048$_^d^`#=bx$T@S$aMm1zEZWO_ZIj=i^b3t$VT&^XU0_ z6nJ!x2eBMIACH0@-IGIOc@&7}Rd5o(NhHtdhrh1s+e%^~(`n_qFL^N~_-VRU3oI-- z87!5)rM#`zztfAWtg*t`>v!biDr@n{=eyt$#4K!Ha;oUvjNH|6KjO$JWu<^~M>^s~c~?tg&au}^LI6-oU5L)VLi((k@p#&16D2WI+ZZL#nZXPqeg z#@q3GE?&~FSs47Db25Hk(aH4^za18S+6lw&_5C*bB})9x2-m*7GZ{aRiQl8!E&NtG zPZa$++3}lk8q<%@O$lw^M>{fpkI{Zyrr#+x{Nhg-ezW)4==aX4j9)9dm@ODTrC++{ zGm^0;l500vM7+FnSR(#C`TgV*8-BedehW!P!{WCkf$_TxNA*i0cDCWSq0r@E9o|`VEo*xCwUpQ%`paQ$!}YvO9_wK|3JSy@Ue}4Kb*q&JxnqXir-t!8NaS3 zesi~4_~{+PlJ0+i-?5Ku_!UX~&Y+`@Lh&1)!T8OmL-koczOZ#|qQi;8Z@eA9=T2t& zT}WpO1>>jWW0RYa{1iv!OC(pkVG%JiJd%G;K3@OOM!!Uf-+$`2uflH|oxv7p<2LcD zTW{g_$eCe@`1kPZWXEsDNld@9Nqq#<&%OFd2cz~Foi8Ev-% zCzkQMq`rP}uYTYx#_v=Uze%?KxAcs#r28M>_sL!xe!V4r6YKMzd$mK_2UF-+38vr1 zT8n;L+Mg)=hS>3262tU6KV18suIxWLxu5Y%w&9m@!ti@wkBxpm)P2hKGqHat|6SCA z+qbKU-`vd>{q&?0MZaV3+wd!r`2B~@^a{mqv+R23)7kn=zpU3S{6xDGh2MBPe$O3a z`ejh}8j9a~I*u>U=BwXK{A^vXcEa#`eYcH%i4wn7bQ@eSeoFsU<}s3P6Un+)Eh0YB zHY^eUrv9_zH{&m+-?gMeg7I^&z9NxPd+ew|zf(3^sKtjz?SG(OX1`~n-#dRYeiwzq zZ*^2`jCzb#V@@T6^gH$+8-7I+zkh_ouP}-6n@O|o;-j3gMzcKx8BpQX% zZ%91j_Z4lEmHOF+pLW9Vd;J|7{Sqa9Vf9O5cgD|S;`iuUi+(E;PZa$++3}lkln-tno=%es#t(;#xhSc`z54o-7}0U`5fk#2*Q|zKn-CdM*4BU5-`3NPZ`Bc| zX9kVgg7H=T@seST>vMDt0pohjix#e@hsX8r^~bkwx6$*{Ul_m7!pZZvc8pqE6SZ=i zsZh}}G8z9Ke&27i;pdk4y+Jm8F#TZfYmDFZbnXC?Zr3Xo>GrfZQTP?u@q6fJrr(X> z`s0yjGk&}2ka@EAb24zTbCd{05l#Eq&Rd-?HYB>1W@+YdEH} zAGB@7!klh})4bvn%iRC-J?#;Axe#7{_iCs)5Ts4lt3VelIK2Hal(fK!SA)O7n}m7K z;&%~G{Lq(@!h7Fn8kpN&kHP|c?UiXeT%q$VQh@=RN5nU%_+3Rdl9|M z!@}i2o13OdRR0fmZvr1hv9%8mU|>KnK~bYuC2D{uhy#IZ5Rn-|LJyfhB3qCxDoaq7 zAc+JONlXGW38ev_t5Zv_PeE1Bs@xV|k%KH)B#!6Rrs89-qo_lCdi8Gp@V{FSj98=?;5b)v^SYd%S*wck9`muq;x zA^%>?KLjqQ{35>cNvgfI5wG0H8*#jY(TE_jc-CAph4K-6ozS+8FJ=~>f>>h&o;_Bzh$C5byysn?ge z(dvcghs zHsWo}5b#F$Q6pO;78USDeA&)u#6)EAtm%VC*ZT0WR}=iRHe%ZY_C{Qj6RjuUH;6`f zfuse&=9k!e;@TfsPozdPVqAu7#IM3KqUZi-W;9|wux*XlGJ!YZY_kzhAd6>BHZ@`{ zK9(Pw5noA@k0I>=y|vPSy9P#UKvU%Aayr;(Knm-HO;UyE_f>KhFHW`9r?;rj++`Z^L^NzZJ(s3-5&QFBBUKx1wg) zztzv8d=sF2v4#Y%g&3}B!D)Dbdo@(pvFnH|oAsn+s78>qZFy}@e8r$f^r2CFMI(GD ztK9*(_=;8dkHn(9^4}X3HS1bkTY?`k>)Miz)CiQ57OyEMeS3Lxqz6V}^HW^nD%uf7 z`}E>kt)NXk87s6<=0&)_t%ZhQAKhlX5{ka6HictV(|&g=)}@#aqIrU zu&^_holUkISl9-$S?|HHzNFUU{X{C(-#FHfz$$#0Vf}_|qi7deAOo8hGqE}$197k+ z`w8oZw%{Wg`FJq%m0)J`DZQzY>tuJ|oJ&yYR zm~%TVnLzFFKS6}?A=5_Mc55X}mO#q^+Jyow4;kOA;b2y!I+Lz3f^C#Y{ZIZn5eW9H*%KM5gg7T1cQ30&UtO9IXTy{}RW!FW4lM_94sqYUZViIp!2b1lFp0XjmdVcjaI1m)&}^3*oK!2#`3yr zlP&6uuSp~>uxvO z=tI5J18SU$(+m}@T%Zy2+{qLTd*yH3XwluoJWM#HI2~AO_H`6-V(%w7QG2tKy~<;= zz8Y_&Fzn5_@S8y$W^c%+V;@%W4-v*@2^|t(rP7zQJcS#Zn^q8!n6cTEK-rkFapV3r z^ydm9P$D(SFgAl!tj{Y{|o8#P?lChb-gaMJUAq!|4n*&gO4K+3poD4}FvqQy+ETt+8aSx|=k!Vl~=O3$iUj>EE_0j&X6*RX% zBVzYq9u(I{?FAa?BgMRrAhej~o%3J$!9v6VR@Q0UAHRh&U&s3_%m;6WF^umAz{#=mD}@{{3N#`|szp6-c}w!1LJl9H#U_U#kE_8% zAcZJz!p^1{zcVRzIbSH`cF}CQ;OY_gNTqtk!!ecW2Iz2B`?{Pd*axdW zwdWGh%Hm&DcXl{Vpnb!6`)<73Xy33H?JJ~1S*)gXyJd{B`F`2H39rYL+I>))4Qbzr z*gtnZZ^6pDq`YB#L499dJBY;W8td3%6`gltZN_s5MH$_6#4@(n+Ke*tv4xvHKs>}y z>wId4Vf*q_z$XPD>7U01AS5bowg8Nxjz56<8DX!6LoXTYT zBF7fD5uhOkk+$zd=(}_nr>|CJ(6_91KZt9PxDk<=6D6k@(2H9FR!N{CQ{~F`%7DfXuyEp`vXOXhh-{ z7D^IdeLqKwPGZvUb&%LP{5gT~+t0#!e7?XKzcKeB`uOduPZhcp^pS*4TO5J9&Ft$k=ib@0ld@GtO3H&XX{KWl+>rwG?PazBlL;8!O}N6@X*{&lZ4W0$;y} z1G)i-5rEYMx)>l0qLA+<74S;|NG9->dwC7X1l}kB^8tucSZwwWs#e%P740*IX4=1Y z4A8WHXEDrr>>q&}f*;fVp+AS5=y>y(&;#!IM!zz@W;p9q_%+S&p{zC;|KlrYf{Egr zBMi-O2k+oc+m-%!FM&Fk#W($T5%t)RbMni?t~BJFvy$j;8FfAeEnijJk;8rUi2}EQ z!_la-2Zy6k=LHngg;OiH-)+1}cMz0V?VGTwQ8YfG% zc#PGba;Kb#KecTXDhEIG+<@Uv-4er}N>ZC~F0HN=MClliM0vG}>n0+KG6-J;9m|?g zm-6QEgcFwcl{$$=sy-A_REN;-E-8a_VggR=*TpZm`-_&L`2Am<~ce@3>F{QOi<@^ioE zxL8Kv=MBMz@pHrLe^Gy4|9O>0{ZnGdW7UUB{a+BHTNmhmz@nt)J{zw!#q-M!t|p17FFvw5 zgSY5dxuI9eYm*w_93I}RwC@)--N&87tP;*&TXaDWO}D*(wkTqOX>Im{M-ut%zM_ztu!cMcsY+CGM6 zI)_dsQl@kGyPsNJw{tj-zzr2aoh6+C%tKm6EDiPtQpfYo?06?Slg)RQAM+vpM{Z!u zaA^DYm7ZMalbYhfJEW#)734ihnt~1I&;w!!{@`4q6S)IB-&4@$2{dvCKAFYQ$Q^il z9!HDf4)_QywmV>pw`?`|y&?Wmc{-=hsb!Mc+tuwXIo0-rT1e`gVet!^&6U()Lkvls z+o7#Fbza+~P{%LOh&pE$OX{qh6O%ff39Sz5*yB-!@Rz_pC+u(ddva3knJr26cf;Ah zam@A3XKkrbnwm|^_4(l9wp*#CY;cjViW%Y+;HeU;v!TI4n9fGIiluQZayBk!Q5fcI zY*@*#YJinvbvFKlwl?Rpu28YA=2+xx{KB*X8&>51>LMp-Kd=&UH=T{u3`;m02R15g z?7^|f*;v7`$k}Mav6=ykMgwgzH`a`-_*lYX^I4CnKn(7(++)!vZ7X9+%%4z)JlJ%liguUeHTSdZk_iITnfBR?gkOf#&a)v3iln(X_8Aa=jRq5V;Z+t3Ssgk*nZX zByux37Kt2`u@t$VN{JQvA;;w^PzDDgk?Sc%&c%T`0ElGQ6uFfIWUxRzA}8c+bwm8I z{6U-#3T`#{pu9HI@W*Bw^Hpa^!4tu{{C5-@-$c7-M6mAl*_^Y%NIgaz3ZIHCWe`0NG?!p^7$!p_%^JCg!-9{@5-y^fknov}Z-~V(JgeWYrLe zp4p|;S$3&5)#nM#Kdw&W{kgbA_Gh}$pAhO;!Ply4g<8X$vOj}Dky3w7VB=IAjtpw$ z+xxTPHcNl@RspXOfYhH?7IE@Zf3{~F&lIvc|M((|Kvk{i&qH+lzE#^~3qa~muh7iY zpO-D;97p}>q8dWMipj_836S;YQWZ^OXl8$E3#f*&KbI1w*`E;2$o`BYa6?4v>d%Ic zUmLTv+ne?GZ!yMyvBuw9-%_aaw@$qOT%b%r$ShTyFtnm}=05fV$Z3=CS{&IL9~6UvAMsSoOELc{BSw~I?t|6+sw zvEm0gZz}XZ5+^JF6!Sm%B9DHL#-#rS=-_%Q54B(&f4h?H^S@Oc?B5Sxs(g2yNIdiA zYeoCzJpKjUF5Ggab_xi*#f zk6Q`TREf-MRZZN_GenQl%KMlq(aO&_7|7usq6H7~C9fG<`Dz<;#VeinW0EHrHex*bMox`?$^>m+H6?*K4?1jZbyt<64c& z0kz<0`M>+u2#;&ry-fu4|^{bY6>1Ag9lD=W_Gt$o#Ka={;#OuWIR;YOIO1#IJ$z<|dCEJU^ zo5V{p@xJ8pJ50rUU*g@s#!U<_Z<^U&o4(&#XtZ}e$7`nIZIO6qNIa*+qlr$ly`?7J zRUGft7Zmz!mw4-01d7#fO`%yoylhY&iVuifoCIgaoS_AUXb4nHW$}0Xd&xE|(tm2$f z;xJ1s$4)jNhXL}k$#`PfgywPg@olg`>^;n`l^)va@BRs}Q?!($D zlQ1^%{s}sntFwJv{iLXPUrM|uZZumlQR3xUo3PBpTg35pKC4jWdx^JC8s=S-430O} zRGAuMfC=g0kd-Rr0SS4Rgq$NGpHv9_FSG9saV6AMg*+@Fua=Oh67p#Ua-|9R5Qp6T zjMDI5CFB9gVS8>e8~&^UImCn%uGoAP@(&5A%f9(=fzj7u2p2jAmaK(D4kYNdV zuY|l+Lhe)`pS#iEpvUN!P~7)VD-AzIidG*9*+D|Gx1(C*V59-bT(SF9yyg<`=ZPjq zeikxY&9)d@@LHO9vDD`Hs^ODU9jkEtj>|VC)v*NE&$u$CraBhmI)JMuvbvJ##>?tLagRKu5ORu_dXsrRf$?U; zAAP~#AiL*t))Q%pRXb};2|Bh)ol6~Ytv>q(`4B@(Z8oLRq( zlTAFECv}U7Cp>{?RJ>Ud?*WN-i^OYVtzUZ+Pj~{ORJ=PSo>$_vmv}bM?9&NGdxa;^ zO2wNi@qQm`w)az0No1a9t=}92k9h*ss}$nRmtf~fH*f7cgR9y8ce68km|(G3I=-!= z+q6_i1+MM5l5b9R6ye%{t2LNRTJIC)=UHNj%#M76pL^kS57_Ugpa95hXU13d;x_T~ zl}amDUTCuL-zCdsu`zXI@Zu9l3}?9?x$2*%;yowv?kh06AUNJ+Ih%9bWW0g51bCO> zzy=styl#1+kis*s2{Hrgn;{MC+3F)-l8?MtJ~B~0@=|NBSB*0sDg67I6$(k#O1w{G z$8Q>EHldRh&u!ufsh*+Yy(RI=C0>cd>ukk4Jl3e6km?R9-g=3bD)CYzp3R|HYT^m0 z{_G!0dpAkEZzT)t9Ba1MHeSdv@q|>*Rq;NQc=t#=zr?eR7aS&@km@T`yloOMUE-xl zJll9-wZWoHs{grMY3yeb?5I>Z2W~JMYa1-wV1mVx>Z;d@QXMUdQytghdJ@+kxcc9c z>Ua>>eq8^Cefp~xDh>M-H|iU_ZJeDA;wk(6!A2y~w0@p1p7)ghj(xl2qu|HWkz6z! zA0D9JD}DG6%YX0*rS+RHFr{6)-jvSE=9oIo=A@6i9;{ef_Ewr$ zHb3+nhP9Mq4OX#gCDv+*b+3sP5pR0`I;vVOhl^9;wn{k9XtQdWCLCLyYpU)$7*-sx zJY}`yEDEa9j)ak*GT*FJ%blqQ9#=@ZPd;n;2=iH8O@^AII;QdLarbe!{wmyV2{-fx z6E5pIgFhp@@oFgjsssJe+s7YMs`k0Wx;Ed$>Rn;<(411LgvFyMA}nPxOoqp#g*rih z>%$J5pSxdc*r&MW%->3jpZgniAq}MpDtW}|joVqoX(?_-#HpRyuxWHKE%&>oO*I>q zdA&g-yWjQb7}2U)p;31%QwVj7#Jf=99W{w=j}Q$o@q|XLRPk<;cpuBb%0DEY%?KVJ zZPZU_)b1)?sl+Rjcta(gO=&%A;t7rV-BP8!l@hOu#A_xH(AorxrBUH0`EE;fJbi1b<4;@<l<0@09#IZizzwcj(|^&c9{Sf)9`+ zv#H^)M;iQbE0mo=4)HCh=_Y^{9#WId_70JfgJs z3yF83RFr4UHWa1ZUJNkt=5f4A6>pEk>oVBXPaE$r@oXY-9BPp})mL)7?ke7Q67Mdr ziTC#rM*l`A@~2G5{p3l9;=XxUY4SfMfaAn868^0AH;hjdBwcMjLd~Kf5 za1ls4{Gifsr-b}dMn88+Cejti@h0SB^b6u2Dr74OxmN0(ITG@)0(pi3$pT5)D&FZ5 zZ`Clf)eCMj33*JxTMv!QMCU*(Yf@DKMf}FBRL3M-E$>KmjKuXcu0L`4X2ZVV`Vm*3 z(p1O2xO7}S%TgT+aP7s_4du7vapxzJ0PP?)x!)KwFih2O*|1N7^vd0pa*a7 z2+939Lrgr|xPH@MqrJkb4d17#^?_rZ?jdr zr4lbF@k%8gEqpge;m2|fJRxtFt9Z*Tc)4c(78V=U!M-kFrHLoxZTCG&d!Lke2jq<9 zo?NrNHh#%7@r1lBRPmmZcn?XuDv4)f8K;RS+chfKdI|RI z)h5^=33j6uZ1X_T*w}Wzu|L&u4X(#<{fw(mAk}d51CUv0U(jq@7v z7T1%-GZNzGjuGR*R*Q?6#Ovf&N@WH_tK~{V6*~CNlW`=>VgL|K#JM zRw~{kiFb~akkba5Jz^Ud%`x$w=6G*bDfOEs@!pdh^VR?p&lXw#yNNfF<4soaZjpF1 zCEgT?XN#hw)MB;svZMN5D zfiq3KNgQvMidQM|cJ(ytcZbBYS>U5k-&}&v<9L^;c=IG)K;m_lcs2|C4-@YLGG?K; zuNElnT`2K-NW8CoW_xWGc&LddG=50MTO{#nuQc1cK;qdnYEu(WX#8F(-UAZv0f~3D z#ItGCSF#NH361|lNNMk*63;8~4rQ6`wQ1DxCZ5pvkEnQ$OT1OtW_ur%cvoAM)>$T= z(D>OZ-bxEz4-;>I#ItGWjs1=G3XT8Qe5Jk5NW9?^?|6T+y?w0pyT!y48vhv;?*)n1 zT;e?|@%mcv+8cOGS*e>YWx<`758x{pIpNgx^{8YzSTrc4| zC4{wAxSqgu1Xte$sg6as_TlQb5c9FPw&O~MqMn9}Y{H59UuS^s@V|zn8}^{QdS|ci zFjkG9n?s^U@j?F-9v?h*4~q}(#Lb9rX9SggJ6AL9Laww6nO?KsY@XO#n!yL(@%fNn z=P7t?CEoJ`Oj7@Sl4<#EBcCZI-n|@exr&!8@fv9+-lI2}cs4n|z{JboctcdYOC;X& z{YhC)#+~VFRr#=uBo`@-<9h464&iW zdmG;!&HjJ-*Qi;u#!Xn;urT_B<@e1Cx%}SS+mPS5&#{Z7*PTp)*|3r%c;k&+f)f_= z2><<3g3ISB>~f4=<-$?$*f;*iTC9M6VE2WBTYQ9r{NwIubIUAG2N`+c8O<`;Fczy5&u;2T1vbn z60gF8(7oJw5=!B4rPAcq64ECjYsVW+o}&hS$D5EsDLkS=o+TlFmwM)F38}8l zJHvqF@lO@+ZxU~KhDpT%=?2%#Q5WW|?^B;rs2Xr@s^d{yhj3keAL5$0_TuUW_N~CR z9hbxTfA`1c=9)G$hGOi__UrNUQmVz_$*@obiCUmANejkh6nY(6>IT|4m!JAW@UOt6 zWEWnng7*b@+`+HX@=}W8((-bO?-(CHH7>W`C5~U>XZKCc@sCV)d)8pG60Y!>r;~u; z9bj%f;kxbNs<$B~4(t?j)nHRzUQ6tN47GZ$9Iwab%l}BYxw96=iw*EpEx1lA z`@@moaNK;RR{l;0yy@VW)^VLyUVTg}Kh}1JOE2qumcw0fG`{aw!Sz%mUrYT!-_Z3e zREeKJm*@@Nl!W(>q~P5nW7g}%GtV-Iv)J$XC42vfwD7|tvkjNe=hLl3^Q>vg<@4uK zLp}>fsdPJx(J|;2k1SUCZ1$u{H<9Cq*&@eDpxfR{qtGq+@|bknQEZXVdgwRqrUuZ@ z#pyS#kDY!vuF0<7Tq9NbZA)VG+j57Uel;si`iUIR7&%S?{gz!4g?{@WyfO6Ky+sYD zU%MOYrk~Y5bn)2fC+x$v3WNU+U#rru8ZQh0|1F$lr{CNaCjCT?$wrQoK)>r!qR{UN z2y+bj4ViACUp@NnyMj9Dx3~b-lB>L5dRwUn6VVzf?-d9pGZ8NjS4npsEFMTV_;!PI z+(h{PVUkYd=xXFR38ZV^Aqwdxc8p27b8ohgt|9)(@(Fd)FRumZKey0-S6eBFcc=>e zXZk0Fc`6Yfz`}IWf43P#mC}f}&&eat>AL^?D}bvlS(FdM$a(q?gE1Y2-Kw z^qP5b6neb@364Rp$y4g5SKQdT>1Fu8Jr#P9|GO5x825h%tMvNL!{{|*hMithmzneu zIffWHP6EBW7e%4h{Pr>F)oXJ7^xAQK-Sjg2-yRCR$p38wEyd`ya*#@|9o!i7yTwkg z-b+n-i5%^W94CQZ=Uf6nb@nQj0;auWqcLUd8!!(<_NP8*{Eu=tc546OIDo zFD+N4*S8lkdhMTXr`PUBOnQkN?;1Hy0=?E=5QScULP%rK>zRr5(<@_4-SiUrYv|t< zdO1O_pD-q3^h(T8>D9hJqt~l9+v)Y(!zR5%j(d$9CxKpp^P|w~0|;phdd(^Tz3LfH zojJO0da?099{0yC>~1BRXAKS|r}5N9FmXIyv}b@yx2yR$e)cqjZrmT6@sLS3kz;G((ZUvw%{Mdel z2Hm(n*84$|ZX!oJBgaXg+c|%WLbs7naxwU=)%g15bNPq{(d(723cbi)UIN)-^eXYG z^m^-5uK%an=@tKgNiUJ(*C`^$NuXElIZ^1<2}&*oy}lY-KfQ{tt&?7hS3?FliVDylVl>tJ4TL^K(bd7qmb-($ZHIeJ$ZvgG#fJB z>^|H^zh8Mge5M%>PbfMkEib94O|rvq812`(-<_L>%7ZcR;qf|oW^zDoc5S^ zU@`K8UJ&*z79%g>G4h8HCjnuDlMKQRMT~rlUVa}D_H2rgiyRY;97NbHwix+wijjxi zM>qbvG4fGo6Jf*l82M5NbPU4gUM~n+kG}hEn2nwh^9#bh9_?%;8}uFdZ+G3};>@^4 zQ<<^-)r@AtZZc@b_1(aGO=c81x*Iu80yAE6RupEObZ$(Voqru@R*!vsd1&4Aaucr= za9&$?nU!efe9Vnd@toI6`>Av*Nn~_ud!s=&ZePz{WYSIK_-mrbaT4hEQ=2Gs>jq^Q zgV(+rV-ezd_^o(I-SiXVt2v#lqyxX5L-y6M7h0xDw+@{c-S!t4bmRQC`)-qNBFDQ% zj*~#QwP!@3+n*5J7<7APH0V|jy)p(jh+acGD)ge@ZjM4gBnDy_LnO3BLA&5+REsqr>pdO2}_$m zuesyx^qO5|(o5tRXXH2u^cvne3cVgaGbX*VN7hfT?{e#=R~~mpj;2JR*IxMej9zQ{ zsPyWKB|o6ouyJ;J4P0o_OXTQo;$IzsyI&19#?N0=?$WJp8|db}Ix1C)1hlS6o0Vj`*45pLl3h6npte z*(Mqd;Io^(OvxL3PjA(cRvk5|td3t)O(&<0u)Yh5s^K0obeLzbXNYI0hu-s5MF|Rg&tm<_+B}rjKY-9`IBA+Kzru=~%e6qFFOZ*z zmyIRiy)};UeFOQooN;Xz zoQ1Lky++65^KR41Hc)qZ#&|}1MtMe#89i!!*Xjd%EzI}t^#AC{{$G4p^#55#|5xI< z@s)JI4eGWwFQWfnM*MQE8=3SEAU{UOY3To4^gr+NmJZw#HoDtT*C%dtCpk8{@thiW z7nF01uW|QqP>z(1?oRBNjqa|vcf<8}Txpc!N=Hl%Nd$)^861*m=a2;btPtlAjFc@L za`-yNA@7Zf$stdp6HN{&OOYH>d8^4G$5DG5hYbIblW!S99h^h@TR7x33iaAJ8MvQhO@o&z0* zYUH0`@MjyQpH^`G+%+_UKl|bZi)&Yc4tl2+cK#f9Li!1uTL6wNG?Z4}Mt2FSx0I{d z(#3d!_-Sb=K5r~tivKZrHVHhNV(@H|oo5sE>*sNvO|tRqRbv>>#>M8@Hi%W4Jo{lg z$+I8NFnKmYtHp&m&;EdseWX_Nf_!$KJ+s2(S^JL)FA1$i{R4jOJ%spm;)!TAH@9Sw z?-(f50!4UROyG^=Qjpku%>Xq1wBe?yHBH)g-&6ZG>zB3uChQA!-*^@bZm8FDS6=Gi zuR6&>1&e#vl#?<0!#D~dP^|j`vtSeW5^oG39t8|D1N?;oz5mA60K*zrmH>c5`7BV4 z&O*CsExLqatGfX;-41o+TodXt6Dr#R<&1>Nr>z-)((F*HB-A$`4X@Pzg6hK?7#{&; zuIUEaxpuS>5{>Df*U2BC7fTgi&CxJGR@!JT=LXur?`#xnWuO)J=k=nagpGP({z*k* zZUk@TJ9eb?=LmuoodPS^n7>7)Pzw@M1UXZXgGAPHl*LIpQU53zDpu7$X-&BP*>jqq zf386*;w!Jme{lJf*%lJEs%$eg9X@1QHb3GeE9Vf zEYQ2q6~4f0w&B}{Kn2)VU zx!Wo_TjwpGfVhcK(S4$#FXH{pynV}1j8`-{zLH!nUeQ`!QF6uf_D|a@+LTvxVYG_g z(SmqTRP>SaWJQ-v;T0`TwN>(u{k)RzATD84@&{4L(?lf=n?$ctDn*6xw!kE88o`E< z>F}<B9>k4*hXk+@z4lGR%x9VpE?ElR4^W64Oyc1H+ypdV@Ld+cAP?-+(_y#K z;$JSOIEODeCD07RM6%(z+#?`QsyLm)cNXwD1fNInAl4kV6OMKu0lt%jN1Hb5Ps72( zW;6^|?Je ze&m}hG_qN|+fe_yDcFU1MCIXTMW>aA8x=J#54Vb+|1>(?ETnzF3A&ncvzK0l{Abar z6~CV|qs42D5^@{IKmPvBt;&zhC~^iE+JULO{f9jyr8vz9?YTUpCF+y^I+Ib>MPqAB zLbdATLnUk6pc9eYS>txn07MI9CK1ttpFm0Id1LUbSvaMZsC>3rt)EyVW3zq^s>R)> zG%YxZc1RJK%Qqwui(2`u5d3BRzWS*ByW@BJ_rrgL!{ci_eHuATa({sDS1RAJCExaY zH;4T@?3(TO&Psll^1Z9_y|Yr@rF_SnyA2;vA=`JS^1YjapQe2OyZT)z-%0s?sq($A zQXX^Hw)$XgugM4I8dDD22$p!7%xa1nOm1%HQJ z^?3dW>|vwSqgr5^Gc+JiUyKnKnH7k%Mtt21nXdYh6k-!CFdd=8bRIekOn18d({Yf> zbVLr*dE_uK-G#Iqs&khvf8jXZCR*@oEilHZ1#75o_=O%^zQM&6E`?kn@2KP;YoxUN zV4kcm#YX9Mb9rA=9U5un>zo;>M}2{530jROQ4H|A^z~0m%0{bP^e>J6xe-qtx%x;r z8|p-(gdF;pNB{Bx=fO{2w6TB^3X$Lv2_@Nqmy%0~wB_$O_0PZj8ESW!%Zv3NF8z(T z-@-oNrNj@bW}7Kpp5P%;gb>p)XxwZN6_3|??k*Y`-_{K}o~i{Kh0(-{z#lte#VES6sk>*hCP`s zt>>nqi+w@tt)wp?PtXIzX&^Y<8V?>kF+mIJ2jYAtxG#7#yW?-(@{P^B>kc*X z^*pWxfAhun`^_8Non3jf=ycTB6Gjkrgi{OGczYf%K9pS&YOD%2|9E5hs4K@Z}Kjb7~LETk?d z)L(k`2+UA0SV}pO3)Ls81rK|J^OGsjEBZvAM>#1hUA`gD5_=u7UcbHfS&k|tzLmNS z9ov>MZzFulMqw?G3m*0e9?o_8bHT#7AYCqE0l981KpsHc#XM&YlJaonBe?*{EqQVw zzLwC|)xcd;Ig31luXc5Td+%{JV$2#`Cx47Bj~ekn4wL^~c*<#CFiwX!2Rv!0tD7-- zz?0(lAjLU8;KA!JJP830tfVIiS5B~x6F@J5`ul&1UzkmeG(~Ous^KU zdqvGP&W-6w;OP`Cl$E0Yz6%T<9GGMK8Fj&C+mTQJVCNi*yds|SxutS=8db`uWAw^_ zPzDj0sM{qyM@l-z!JJhf@wK2sXOL1zeCiL3lMR6nT;ldmO!9@=-S#vI_&Aq0FgXpE z8yAcvS>DIV<&Wv59Y)nW=M=`vsN@PRmugwzKi?HKl!*FZvlY@+o%4)Od;Bk>Fi z@!ZbE^IdPxABzuZB%VHq^t$6s`iI*5iprsOcJV}Wv8!5&XEGU*l%F7;UUEwW*+qQD zn9a~TUKJrwSdZcjWI2@{#O~_F_lkl z8#B)qNXrXM%*SnPU}6Dolg0-olAYbOl2xlj z3#=+7UJa~b0##GC6yJF1RepSQ`&Th-5Q@8xl_+D@F|dl+(NJ6&Ppn2xKy1QIA6){O z4Gnc_p#e_)!W}@*%*$o*WlmpUq2hWf%GUSU4V^OF;q!oy? zNuKyuGYiKPl0UPM5-0jIr+I^H9B#L25GS4*m{Ur1`g{f1tI&PaA}zFlZu*?yxoc(b*&vyi zd$#i)eNPKyp+^muF3ai9N(p4S{8{MFEc9o(=+CS)e^y=~E8m|rHjq`|&q8Oyo`>T8 z^$+UIbaW=S-GSg@s%uU8QrviF2C2>d;7Upl#l6o8l=Hp}vc`tuUgn9_lqC>kErSQS z@D>O859_HxVrJd2ANCf(qs?c=lX$feZyC9XQH_Qcm;!$_Q~0Y>z`Ij&aOI(BXI70& zaKw~?@im!wFyUlMKHJ7!KyZyqe;;4sU+tGi%#i2L%p+zP?#~sFbO|!__ zG5hzUu}z{2HUef*n8Y#hZA;M^|B?Q6O|4V^y8a*6zs>(ykN$1hJyQQNe=~lYp@F}8 zoNHk8);9Jr7o7z6Gmx7Eb)3RHNa=dQNs{BCA%iR{N7#H@o>r5wiOeh?4qf+=@st@1 zIwOyCy%-t6qrf_kY4DIHruYJr^RolR4qQ%Ls6oa~ZhJHKWWd)56dyKBuNExU$@F6S z+VF@nwjzI?x94v~t<3RCv3>xIh6j=pl)XpKoJ>7E3os}yJfJtVAP(-Nq8O^c)@JOX zk;+BP3Bu=yfr>9M6F$(f1E*-gS$llJ?|mKjd&@V#1v*GBPYAUuPqgA@FqHfmfWpQ@`h}Uoh;; z*y-!37h%|x4N1t@=?!E+KV|R4cMMQ6_TW1NFMAKZC*Zq|@1SnB&JflWQe-WdL9rXl zNM*#R_4+oPUc*N!V2lSoF#7SiWt>|SdrgcI@VIb6K21-W4|E#pkG=FEd&owQ(*X^U zi3h+aPy(*LU^ki!X7Oj5bGf$;zog(nGD3Wix=IP`r( z`}@!LSbw9huLbD;jsNYMSf~DnPB6k3{}Ur4wLi7+e>gm9zOSDCY>6{&qV#9kCPSWg zKN3}*tuh>8|Cy$T8=i5P&ld0r3t#Y`SRV*xd3ZAe$9g~Xsr1DAVu01xe_aahF5J7} zo`(BX$mGVQ;d>6G`?|rnh9Uv0W;|@w3^JAAhh?RZRbOBk_uZr;j$g=m>+4@e-Wz2k zzYQ6gi&j&%72lYXhhNB*L&lxBp`zbDOl>dQgKx;L^TdyM;$fb6j3=(;iFBYFaw2R3 z{x3`5-xBE?{C}P$i6^G;#4?_Ua5I%d)R%Hj;)#gCQliEahw;Q5o(Qjwa`xeg`8=_J zCtk)A3wdG*Zu%dSXiPE0iKUHB{liV4Ka43dd>((lZb(ZLX=x(uDhwGi z+~X;uzaP#)%kbjvp~OBSv5!bhr^LP@v9CzXpu|j(m?;wbQKBXiHIeA0#Qq|&zevoY zM4w3XiNtJ593T=0h{S=Em?IK%L}D%_ULz8(5s8B+aj-}nEE0!M;!u$|R3r`q!C?0X z=IIaD{2WG(%2M<-&oq}l@_cj4@X;H(msrdjT1YqjCQ*R+OcbDxqQLVk=e@*gC_p#; zN)+%0LyW^LV<|)ky}^Z)>J7}Lo1Xh13mk?R+ePH0ROF85`oa;D&mb->8$NvX(5H+_}JnHDuCr6MQY^w}b(7BwfOA}8JSAtGm9 z)SQ%xoOIJWikt;eb5bgD(oJt9a+ZjkFi;5D`hxI=7E)SvU{=G;$4Ofv2+u2eO9ZBh+0wQ+NKXlJN~1s3I4! zoiP}#Dc_23VmM1|=MV0rpE3TupY&Y$9{LstGA_h>rg`FFo=7}}oFDT<(sRh^WVdqC zbNH4>w@}=(JPYYLB&P7h2Y4dsIV7g>#0s8BdJc&iPn^mVNzWlMk0)Ns6G_h@k$Mgf z%HWBl=a5LiW+E6gvn9NE+}ex}%!I!d z_tkyO0w!sJnebs}LT}DQ>;+TZ2zM9Y_cz(^O|`%s&d|Ud{enGbqCS`pplPQTG*^1? z>f_-9m@BBk6sof(-HFLF$Hw%Qj+*p@YuU#(h_$DKd~mekic_Q~-N}PC=`E24cbugq zh_p7)R*5{0lb*=qIO*qTp&>~Kg(vBw|9KQ1Xf|fOIG1WiH%M7iHGp8=Eo|ig=v;Zc^ry-JCKQ;#3!5Xtqh;*6TRxdW>pT zH(gkL$BgCy6vN-Jccv|VvTPl%cdS?+qIlgKgLK;UiVIu;>u zi3kadB#V%ALDZzHNb4%nQjyk8q;(T%-4RJ~TYEr94}fE)xb+2#SP!r;ml{doY9yxq z*j!zw{(!EaMqP#nAex0nL5n~lLgN*QFz9E-Yt)snJe1CZ;NdsfGs&gTNDcQ5%xu}$ zKQjUMHn?LM{><}mr%8-g?qNPUM(Q(NxUg_zrW?-IOg@;~lH?1FGl%>h%=ZOotbVNvW*Ek}-xnOW6B8c@?}#D4FL((gagP}C zBP!v03$#&l0hkDnYY^a}s{*5v1(G3S} z8Gb#B=Unjy>qqcMtGoFKEs)#NpPLZKZR5{P4CJ2Yj~dPyAINnY^InFLWBfzm_9y~~ zxv2t;9DRynzQ~^`hJogErN`;FL<0gIw-&@`MBc5yDor}(>=&Vr#|hw(!K^si;+ z(~!Tx2=>r?e)Ra&RyL{${_JBj`b{}B&6YYyM8Nk+Ku!@u3do8dHY3#QzAAd~tb8&b zBpbLiTsf%IZS1FvOu3T!7@ZbXG%VBh zkP^63rf2}~`|OV2838e0&qLYq{q{pTvMcu$Vajb*zKqv;!dN^fX7B$jJ_NFotn|w6 z_^Wk>&>}16An4UWkrlkI0ZswQOXD3RFQK^87g8U{$YHjjMrP$;LNy=JV=!+dz4A~d zCn~*Aj7JZhI2Yu;nAZ!*NavCf z$V%{MK`!F%2vMI1b4AlN@OqIvfhU9XSzuRqzcf_?pV7bWvqq>!8PI< zhDmr5$zh~EIKlj0%FiU6oK37xS+^0oL%=pPp7p^itdg*m^X4;KY0T~XFU}|D4<$a0 zIn$r;|9CvB$H$B}V^8;Ag@bquyJs*d_#^jaMtXdT4|4s_j1shbtoh^^_KmbYnYJX( z+Ntk(0|OGhHJOaf5ON;i^!Nv);O?R?W$kCtdRW+rzxJ$^pX3r(L1hclBqocO{$PJDpNnaN#FeBnMPK6D3M8mwfRe(l#sX?>CO zG0D|8g&?N9W(lc?F+LUk<%fYN0t?A}c~pdCs`j*w^>Oboce7Q}tJn}9$ff}QI6Mba zfX>uy-oOwXcs~RO-qRSTl@C8459S7kz|*v@j=_KqYw=+B@)ERQ34BN~6L_s=P6eI# z61K~5)MeBqYM zjrod4$yYpNU%<9e@fB}@uej0l6*Gv>ntnvK4=d1CLJ?xkx62Z_!D35H`(T1K!=)dc z%e*Ogn%0>fj1P4kCtg`)iusc>Oo@6E1tCWmH^sfcK1Q7%G`WxI>((!JaVYAvrJ+tO z^M`fti&$NC_<2L8{vFRoR9Mlea4l14YZ42DfJt3=Z>!sXQ;D5#EUT)(II|_=)VcmK z#>y)GC}aI2&Sm`X)VHZLr}*Ax#ypES^I%>P?4F|c93G2R-o(zmDyCnQXaZZW%cB2R zuQpV1MP*b~%zBKi+S{y`;Z3Y;Fo56*TX~CB6k?Zyq20y$A37t!8rq@tAs2JzNUdfL zK}*a?`8{p0rXmsSngDao*WCsh`8`P(ZaOK<0#Ag6UVMHEz4U>BU}-G$f;5zVCs7YR z|FaoHG2$n6tUm&)lF5hz&%<{}{UN}X9AN}JQ4SQa@&T)hTu4hpECM%7lzZ}dux_G; zp98KXm z=>eMFL{zKL$Wv(KnT9+i$Wx;4evU%xbChb|>Tch1E#21$K~+(!7CZ>83x&^D)zFTgB7>e*KnHj9P+rI8LHUz2CnabMW+?-Z#~P|ej6eQ{@j*<+yp-hIrwwW^;6X00t6oX zxfl6!ll{5vv5wiFd#OLSlRvk!KiB2Y?ds2k6V+-st66rw7o&1`Qn2y#55Cl3T0tIn zC4Qzg*m;zY@5L?wL{q6x1}7)cKR9GK6$KvI;ABj5xxwlfPa{8#r$^Fwx+PK}>pT_0 z&Qsff0o@o*@WD4it$gr(4ke#!B%f;}|BaH*Gm`Bl#jD`C>{=HjM$gy#-NE!xlu>#Q?8UdbYYkp+vHd9~saQ}$ zYiO_+r6s)Z-Lsfml>jOw;zAU5S_&CUFILyUtkUY5HhxdbhODlsZ#`Z^*4HfUNBzte zz>{w;dK&vl{yWy!%zUSw@$2n4aLd+tFdGexFI4=4^&dLz(%Yl?!nQs-N$b@eng6Z+ zF56D9tGb^4`SR4r{(%8%zMPRBpPsvwY-s)K)g%35jW%}V(5xcj;9_R7#|i^?n1KuQ znF-{?>iaf@$qmK$Qz{8I%^1vrElW?(FGd;4kYsgOj$sp1k`}lvNk4`EZ0wPthhxBO z+1MsrmWJ}*K28Mi-;*={ulTPt{lA+3hQC!0|BY-Oh5z8zpu=O%SBUktn3N%ZtSQ$L zRxM9)dZFH-^;2+RhGLoQA|RH`)5ylYn)^w0bs6dWUAjc?Rt}SBI zGPJme;h3w7Sn^;a*<4@5l4*ev%RP*+^9<}fBY8L_Uuz^^Yb1}LgHZx$nU0cTHzsbZ!vc3PN#Y_zbC!X-s8-nPiGdL& zXVd(-IsV*h{JDeuxkLTAdH!5*PVPucw5@^b@mWNYR%d>_)M&`Q>D-j@g_;T2iM$Od zKH8uWxGo7-3N9Clyv{PRwfj&Ue6=R-G%{PtG4k*=ANx0Lriv{a8;HnmzXZJm`KmDA zWlm#e2ajOF|1hTIk`R%D%gLwZ`rG!?v333V3iI;$eLRiN%uVUVm={Pukjy(7^ZNr4 zO*SVnvH94X-;d6;v-Ws{f3itTb5%dvdR&9ZEq=m^?0rRN^7>hKA7lQKV!D{Tv~6$n zBBUiI`o-j>ZTE5fTsjkjb|7c0A$|?T4Y`@RLrz|%ZtKg2PG}j{IbisNkhf;gDPs5( zl}KKr58Pq?bwb@ zGckW@quC4((d*1tP5F)-KT!xFBVTVmjS009?4~)+f8l(!D*addHv=|IzH1&a#Nxw3 zE*9vLci2aYcVij}>mB%4cvr@DZ0vTxdS{;OMlvaY9OMS!A3-zaEgJfkaYvQxkHVVb_mKv;n9 zIrjK7U~(&xA3#og#w1n-Vgu%H2oIRQAv zEYJxCoqKG@h!ZoW98MW=hS>AW`5%pz3DJ&#n4tx1>X^jNFwo>eAupfR*J3Ud(rBTO zW?v|zDGP-(EELi#3xzPA`A~2E5@eyS?a?j6$Y63h{}92CvDSxSE|l$)<{ZhFhaql& zC1Mz&;NAwVA#4Sfhhga?ErS7LEu2gyKfPE^_uRdhFJkK`Fw>wf!#Dd;IpX{c=#v8IlfvjWW(}(xuS*OY zvl>}U8}okG7&c}SKP3mt%#CekKKlV27>ldHYko?O7W~T_JVYnnl)sDBs6SveDvr(h z4Fjwn;eL@pv7eHo_56$bsaRz2n|(p5>8D2ZxdxKYwd@(Nm0V;HU}G1ItDG9&PjT3b z1qhT##}d(9pF1Jiu!@!&%si&BD6>b==6ACe*_ex#twfnHQx5iG^i> zEMl!+##3^6De7lTrD6VS)>X>j? zUmH)qk*%R`zHl^tp`mI82(VXk9li( z*--wTzaR>KKX=3bQ~X_c*?%>Edso)O-@acW`MaV0*Ehua5B}C4*Rf9fKk&D< zcHI8o>~F35M?L-XG@Vby#nAlE|1TzT6xR&cAbK`)&@c$@}5GYZH)39|5VO?LC-i zchg?AjyNwh0jp3x8BNPfPSb*#lY+)Prhv7*&I1^**02vv;9~`DbJku2d=7RRz)Ylg zEjSb=W|QvRilaGb=i6-wHR-gE(oy?MW249yE20(IvBg>hnH{y&W|5Uqi#%p4f+{&` zLuQfUs70pQikw14t~HDFiCW|;Tah>_(!neeAGJtxTal(zy@`90Y$8= z)DHUq!Af!dk;F<(vBZP168z-WVL0T+yx0nPfS3qeaVkOW!aol6?(*nRy&3@3lAsot zP`Ac_`guhCwQ2>F1DU)^U1Q)p*#I0Ik&8LO>5v9v0-AYKQYBSoUEIyF7}sW8$8mK@ z?&cVa>waACNOBRbw{RH>m+2dIZRi$1(`A?gDn&)YgG%5# zWfg`86(Ee1rRjMcF+9O1mwo|W;zXaEw7G0V?Q_+igbiSE7y2v|_cy}CzF7+XdD)~p zsfgFW432OPx)>WhL|Z&6+@I^L6+h+KEly^4K@p zW<}pL_Ko&))3-GC%_Y8(NQCc665nWfUih8_@y*G;k*=q5r2516kR70JI{UVVeG9SH z>YaE~cw^g&cID}3+FRJvY$3!gx13WCLG#*KmmD#h&PWio{k!KF^j^wpKyhB8Uy0re z<>^zt-UM%NqEA?kL99`<{!a#M^1~OECO?#|qXy|8cfhg8!OgtOx2GL9@|PXlil5~n zqQSV!cWVwUmA$yEntr0~*c6UlxB>^Vhp?KFmS(;%o2*z|6ING>5MY!|tPti4wn0BW znThYB{=VcA{q__La{-pG_o3?GQ<}c>%}-Dl`1Vj7E z4lYHqwZ5~zHtSnOKN#P}iBuSY4N*(1`Vn{yCxsN&2YwaoSiYJ%Pngd_Aj+y0H+w7gpRG#Ox#L zir3_M16US{4{q|#((ogGp(UY2X`~>?8`rW7l|~IxsOCv}_YNQ<^G%dj<}v#0q57N0 zRU6dE{n|>6^@1AHB{k-=x9Oq3NXkK}`E2FA{$6|PviZr>UVT1Zz(ny6jJ+d~z~ zHqhgYUUCo7LX(nLnVppJnQ;uyYUE;c$=b4Q8B;?c;*X5|;UT?2gzUEZrglVt?6CeeK7g;Y ze+v)!5qEH`*xXUJVJTWi@8!|(z6>;;w36(BKpw{Qg-Kd4ZpRlUr;@7Df}gW9#7VfW z`4z`~YoYEJvBzVd4%VoSkDpzUOnOVJsYoVmMt@p}DJbd^`bnSoBsN?LF5jX*wevVQ zZth{0kryVu%k&08LjIlDF2D;DBT_PHNXCUoXP<*PpzwV5Om9E~l^3zkG)i!pPo8}- zX9kyE*^LfUz&?rj$*f%vi|ZeS%Mf}vnMlFk7co5r?IRg@CXdu5(6)MyA98&e|^yr0h1zN`bLK_%s1jiBgOgqtk?86ehUkPtpcHOod|XH ze+f00`7;IKVfobQF8%3OnJa-NKSrN;R~L#$-G6^XSIhcAvR}2+FGW9ep`hP)_`vC> z39Kw&(YBwu=-1XxzZCtnBoYYf4-?NV@cwmQ{dfas+4>_vA7H|`1k6j(VWRX0+Iz)q zHaw?(JjrOL(Z6FGjK}-ehj(OfLX|?UNxm+s6QQpDb(6@k{?)?6+|<8G`bgAJ^s2$h z>+X%{RkOJt)PajdgKs0FnT0}hdBk669w!D zz(!G%w))<0uWz3I>;+7I()8v0LxSGYtZ#_`Zd_-5ZTJiA^mXcQy=b)FYCXlT z4SfXuSNhATPl>=ATMwRTAJ&&pU(xuA+XteX-kz1Fuy<7ZFl>gcf1Uar=NtTD$lt!Z zPoO;=?DCwZcLpBUH!m23;`U^V9*hoL7k?yC_cH!)g@>hZdHLWxQy$YqhjsyS6i(qR zZqn;1)^>9yn*8@*EW(cwM3eHo|*S34_3EuLafb?fIPcKRpkQ=T`- z3JTjK_1R|MK-tct<&XO3)vB5dmz@Au9#3UR@B; zmb&OuMa@z8KICQGIBj zTmStT_Q9zi#s@CMtHp!952?Lxp6amGmY{QFJ`}fe< zYX1(74r4UGPJbhfs>}3&AMFd@UyA>{SLfh4Ts{vz&2>S7{tbQN{Y!)+N&ReoME~0A zUo*`@@A7pCdS|o#hI}ppM1$pXg0=q;p3(=PPP~T+a6A>#tYIgy%p~ZI#@s&6H^prW6pu`vIfID!Lx^F-`qXNE7yeLi7oW74C5oj{vCf#*8$5;j1TV35 z(kpGzwehcJVJR8HfPM`NQhmui{91GFUs}9OQyoRpXV+TdIK54@`n|mRWq&yAm_3eRZ?SHHx(7{Q%UpZ?uSBg6OceFcVik`#%LWV0^!+!AGiqW~TB@(8{uI%VJ%3=7=Reed z=TA6+=hNEGBn<3%k9{?VcRSP1UGO4WCy0rNd#eovLQf|+;uF%HKgYLrW1lA9thvsQ z067Z*M5^cr`?ZU|*SttP$Ywt-UmeL`5o=Gme(x5o{M*krqu#=(DgvYDjs;f7{EVw14);4KBYZ zTKUUAi7X$(ezHmoBoK@JB>Pi-L;dz=!q|q}pGf`6+g}=`{bQokKe9aQzeUl?@7^BS z{>bu-e+EY@-}}?Z@-gT~gG4=^KrHmj(1M@Q0>J&BvZ>~{R}ESQ4})h?;fFNBx=v_s zSoP5Tl%}_wPm{|hV71QL(()SnY93B$pacD_q8NkSewDB1yh&$9__JZ>$Z%U0q*n|<3aOz{X$xbKHmDg z%kaE2uVZEvpT6iuUZUnq#SRmihc})U<4Fy{Q%ddY~2?_-Ecm_@P!s%42d8 z(bh3MQM65Sp}p7^d#1*d-KdO)D+kGWxaT*Z`BBEJmi}_-qh@i!%l>}olm_%ydr{2n zugRkY{my(S^(6GyE4N$tgZiu3cwVcHcpiw+;Qoq~UyY{tg%J4GGC|Iy=W#)1l)<9l zO?vK*ztD4WKaXJwF|}HYwt)FS6IPDiAJ4`R8i|c%1q7b6PCq}qsr*>njGpM*POI6X zam%JU-B|9(V5&e*btmzc+uB-|t$+@2lv(XJ9vn6NPo$592z9%YpBP%deI9 zastok3whGAgIE_6YPI*VfetM`z11$|oD$B*M*Z8YA~bXo3Qe zzSj?UrU1MVtt7xK+y$T;AFY7&y?(&61mLPCIN&_o1>kIav;xxi2*5r)PHAmx^4S7# z@xvT&Chh`o3O-r^>3eZ!LBk}_aD05*3KXXk{u_;tKqd`N#QX?7PHle0mN1O&|mO_LVQ(h3!fG!+FD zoJMW8vNBurS7~adxMaAbCJ9=(WbT$-Ldz|sQhC46Ip^MU@0}UJmVaJ8pUd2td(U&8 z^E}UawzD;fYqy2%M>o4ckQM!F*|%jo zqJz<0Xfx)_Km8^`f7c(3IpO#TFlddH{)`LE+riTHE!w`t-IW1pfjAx~83k}s&Lg-b zhZ48r>7<+#4#wfY45y4|s8>=0aPar2ZOXm*ftsAF^6sU*dptWZIi{XU#9N!|%_YN?qp-MkTo?FnKcjCIZmRH}rf z27(N1nIc1B*<2NcfgFX6IfR>6_Ka}D;?~&HMp-?HVXzX_(5Xdn5E$^{^3z6MtlSJ< zC?C>)!=D#^M65CJ1GIgrwJLPaSU7F{ytiuh2WHydTC3VBM<$ZcF{y`?L1$_$Yiw%S zfzS1AV)kCwpParEKQ%OkAAo=cZ64N62+Ojvla!|32JL#tV=pRDK6@Vx>Jtns{$4K% zQfi_>S{sH;#us!FtgvlpK;N4_SiaiO2%z72x+-YJHwb;#)SK|*%6tEmA8`{HKd8f* z_%RpiLEr16HW~Oq_FTsgOh+O8c661wJx|S1+tWz22kh{s)Y|;R_H&cDOE_eB=Yix>GT@Mb89I6Uf^!0KDY|y*^RKPxbitrWP|92<_ zAz*8<#g^>yn2*brY^5NVw~S9kPC|e)7M^qp{Py(Vc&xRe9S^aL*0ECAbMOQ$R6F3n z{v{KhrpZ`=10MmS@U_zU6J^+)0(U{Uql3C=&qN0tBgagbM~oFD;{Lt&?qv5iN`WPH z&JVW-TVIB2hHX>X_!j_nuiBmgd@zW~@sLo0*$P6?xvcXKSnZV*=j@*d2QQ}GS8QMn zN#QunUdO;xZ7Icx&fBcBKL#)3T)q!Bg{E@uk8#%eUOD%`jWTB`!kF=nGWdILuzGwy z5$8(xPoYe6Aj)>(WtGvbEf!V|^V8>L04}}I5HBox6ijvQSE|6lq8C!Dmek2EOY;{r zI(Gp?0Wrup+fSV+bMB0DjcApE`Mz-9#$kwXQgDoOD$V=FIzJ_0`2I4}fWZ5TYSuHX&Fx~EmU?lAhuATT&UDW^Pp;|bq}9JJ^8xUO+xF;vzgIf#Ia37>_cfH zd_Lxa+tBC8;lYXvn)U9xZ@JI~k)iR96JZ?eRrF?I|QH(<(Ie7)3EtC<|z%v zdLKAMU8UWR577BTp3Qz6EZtKg#s^w}*p}j^*pMyzD{EE@G^*^Y%s+gsa~e?lT!9zg zMdXk*xBe)K9JZF7usgSxw8+CVOG)EAa=%LI<>me{1z2(1=?O_uO#Awy%LHWywV*XCDZYI@eAzv zN_?>A3vh$yui>NQ0Xz?QjXe*>2YYV84W3uWM@dgS4}G3Jx8Z|555^6i--(ZsW(5Bw z4j&&JK5hs;{S1<)D^I@#l1DD|5v;sznNMmhXLJDMF9n=P^&$Q?#*a0e(e-m97w?FC zkNwn${}hxPxok(|$Lyyd{N%r-xM9XgpPcxWJ0e$si%$nTvah7x?{JRHcVz#N7R^J% z+n*$Lc!-3YMZwq&XqR%=P8K2-4PYT+T<*K)K|y?!@(&mROG)Jz=MhIPV3F1s!+E}*|PrkM*ewQ-uO=_qDq(&tI7i(5FamX22 zN|}@ilzDjW381Col;m*v|CLC%P*mZA`TG>+J-Hqy?8zP6o|ucno@^1O;8Y2!5T>B(5i$kjO(fC=A6QaO$YaSjg-SLu z1$_r`Q&2JcjMWunpARV=_Nt97QuaN?8oPT0HMU53Na2kwQqplJ6nKYL$ZMkAD>6th zvGL54^Z*iOez9i4Zta`+Jmi6KQGq%hXxuNzN7RNyLkw$03-(N+orn z36_YmXMO=J)WZOG|KUU#`a<@*RNOU>#Y5m5gxR;*Gf)xe4alPTPFch~g%GyHOYbQ- zB0GOY&H{R0;E^)2N=3?db(mF}m&e+{jrX(l$?zXkf^H-EMvo)oy-U16#{2jvDtu6h z#u8kHH5u<8gz+v?LV-0$I#J0w432HnnK!fX7DDRTUUPRUhFmGIireg2g+yOcDn&}0 zCmE}n-_KdK?u^Q+J-8#Gh8xwvC!L5xJ3+gAo4%pCQ7$ApK`|UT0T+s_iRwmeeG#t! zc4I4ZqhgVrBsc;<6Age@KkV*EPTKEla{%aK3=!Y-F`P?;$dRY<66&{U{+yfR@L)Y+ zLy_`4gX6@mKEk<5et?sI7uIDn{`d=WtRqns(o*w#FNEj51#@0+NgveMqjr%!%8K!f z?n{SpebDPCPIv6{Pj~1S{Y8h~qUr#M_It)Q} zv}R*Dp@r!PH;_FJO8sBLsZ~Q5^ z|2#e_#hpGrIy71Kr{_}3?N6&%f7+wiYocE=A_hZnf{cO_CC=+q<+jH*X1k`bvYeI^ zR9Xt#Wrm`YpElGT1pTJ$C;Ht)6Dm3Jl76?|KOg@}lCbt;jD*#Oa1y>vF$N1UKcl+} z$Pd};^$n!_ylHClP3(22A7z_oe^;K&ycEaV%<^Y$`UpGs>y$rP*Q{M=rBHVvV_7R( z45n5VDeF)0Ru(BmxML=_K;!c(&=*6{@xj6MG6iHp*krW!Ni$i&~k5Fhh<%p@OjgV}? z%z$so>uJsU$)3g?5a_GHb_%Z9zOYCeM6Q%sofMEZ9bx%-)eVWyQ~vr=3gX+N8HX1R z}%F_{|jR$!;qb5Dz(F64T+gT4hNXJE%JBQ^f;{;TolQvu;q z0Rj680|zSVz04d@W`-!!qyl9wZS2S}jioY7^_%@2c$KyVI(s)7U9B~%=>W_9Js({W ze~A&gD@i^m3i>Q1K`H@ue{cX)l%w5lkqxzGU15%B z#NKh}WUkhC&%e{6D8|1uDTB zDqR^W%o?>Da$2Z{XOY51gfN!2|3<73*D6ISguboPDK1HZN?4u9fzQHPUMRZzLaA+$ z3e|LGNc6a0mGCJ{q8!w~Pb{C(fk?gsPo&%c~El&dpnOfHWC< z31H17^U(%(I{Pzpx@LdY%)P09upEO&1R(7O>*W1Ix&3JxID{aKg#C$_LL)3VIY;#{ zOct!2FSlTw1%yuAmY}HjG6$EmW3`rD=e36MT74596L@q>UkS$ih}wSZY)XEE2Cw_ON5*5n@^Y!5ojTB#MY1R~z@Z)G^@cM&RT`l`(1>(7<7)>tkf2cbRj5oE z&S-KQqe-Ds6A>5Dq)=&rJ9TWWOPW;8?_5$RK zkT?nMHAX;kb6pk^p>j`+XEk4Ip(kG}#;LG?hf?HuN{#i5#t6TPlod&={l7(0`-_xb z7%HIl7b$~rC-^thYZmQHulYK5;9f=b5BK3{VMXl&UQq3UP zlw3fd;70SHJlIq8=9uNco;& zj10m*8DR7wZemY+lgJAhdvkjSbX=C<#;?uJP1+Xh^0|`E4)*k&k&% z^ff~R@e196T#;yRBt-`??RKeiCE}TfC-c|&+I)#Od0hyW4k=Z{ga>Oj8?vOy5^lg? zpz?vux$Ybr9~x*=DL4qB1m;1s20#86O`-;yhwY1&`$1w!-}7`wq4G5iSdpaKlolw$ zEnBkDO=m&$sBI(}qEbSfb>5BG8{6)~YJYGL0>{fqf@4UbSVb?jF^A;07gy9Qg zgE9M+MHftl&q+N)i0$z&$`jjj-K6SdWUOeu^1DxoPdwk4ejlS+45M0+Qk^0!rZt;W ze8!WM^_!ZKl&2w*!kmQ@nqHEW<;GvS>=h=yMCi~uIgp`sxEGPTNSTOn2#!_`?s)bJ z<5$QyjU7tKC)&~0)nPjg0U}*!^PZo4=Q;vC}MCpf$Je5%m&TWEbuHE*Wx<=AbfV2j=Gt;=JN~P z^tF4w`ny#+{tsY;p3swHRUHAB;6LsJ|En}Np?4axq4J-hCq}>dp|)C*`j+F99)wto zli9=Li43v)2p&|VAS&YdvDvtj@kzv^Bgyo#>{gTeiT@+LMHgS*;Gp(jVA%Js!J`Xf zcFPozyd%oIBg)`75tfzP*NbXpS<|_W9%~G|aaLmn)Qd$8{b|13YPI4O~tr#lH>$zKoHXvF~&`Un8?mTPnD|=bhAC64?29pq=5x5 z`}#9!*xiG~bdT~70w=EA({V@ApypAM?jzFje9Rgq5BhwJ>WL+*1M811?Z^Ob`Awy- zdE^X~@G|~3`Whj_ZNWb53Ce6?`QvXNkR$_V%5VG$|5eh?L+4ifI!Psei}X9UT+;9P zct*du_i*~Pq#y)pevcB4J3ak^21@#+4yXQfQ~KTc0jD3$N96KZar*h|Z0S1*6{g=9 zjJB!t+W?3C=JeYYYM@^Q;={EcqbW@D6)MBy7};(MC$bePCCJ|s*$NdO1UCBlmjiTZ zK-V+nrtb!BA+i-J{mxNcVh-oI!IJdVH5jfwp~M6CIU&sij3^?#z_%X_@o~|58?LyQ zI8*hxjQTkds%NhZx%l`Jrkn-yxv5yhgibaXSsdTK4ADph=J%cSJ88fN12U24JA)Ni z(7|(+k);?l!uUntt1TczXzHl53^kg%l6C@_?6+gdaE}I%h+0WBYJ}0K-1zg(o#A#d zDxpG{aGq1Ysek}IiQ|!7zWz@Uy?_QAq~JwOmH&A!ubk#SKBNqw?;RJyO zts8)1{2OG~jS+g}A>$u5x?{X6wQ-_>e(z6ah6_w0&f<{Aosp%& z^bq4(zR6|ugI^f!5*Xu9tm-g9c2}4ChOps2#<T&%DPjdO{{Y- zdQcGL4pG#`*x+jYG=z`KO^5dPQT0!->Zx*JyH%3DDIok*%p1^KGSX|AXGED*qD)_2 zYs3IM)jADw8pW%-X_>a7Om9)fQGqg5MVZ>7Ouq`0IrS^&!(mLuLO)1| z<7KEHcx}%RHqi&;k)llh3Y1yG#!Cv7iK0wm1HDS|T3YBCIVLmx(6{vWE zsQ6A%jN(;M_W@P=s%p=@(mtYe$r;vEwn-Z@~uMy zi#V%WXMarAqh2v*`*BQrA`=iG$T)wH%EAsuCJ+lnM}Yk?u`u#+=t)?xHw6Ty#9;d( zB1k8s!Gg73(w{WZXs(F>!K8_tLR{|`5bj~ja7BESsA?6jMUzF*U{Um5$w#kc?iFRu zV%8Hixn~8+1c@?vq6}BJOyha2=dzHOEKx=%SWv_}DVDv~kr6Xdl;IlB)#ZGgAf|Ud zJTIyX6h)bl!|eIc1cN=V zVzTE!0?1ebQo;UU^K8kn#)w=*puVY92I0b1(Ww0a{?jACiqXNzrwCh%!M$MfAQN_o#g+VsWg_hjX{Zul>Yp z9VQ?&W_)mU`Cq)scH#cH7kyF`Z6=B~ku3CDrk^PD3!i|M(5wPw+K4i1MVa6Vl&K`j z%o1f^9MVSVoOlSqloI1^Eed;);0VbT4OSjFU%nDv68WYa+ zWytnHz3Xk?8d2g|Rsst_QfR(ry2B~@D;5Krr;hP_?ceF|=ys{S)o#~iUq9}FGyCVU zzc;MUL!jfB2Br0P0GScZf#7!2LQn}tRPFsdXQ@SSjRfJF3L-MXqu5c{KNJ%_fk(x$ z_7tc8L!$CKIL9J&F+pErN6J{mTSxg9QW|K|tjzS!Bh0fcSMC4e0x^l&gmR zWC7vWQBHtF&QJ1$q{1^9>@x+NXdj9)!Y93HndxE>d9oWc~Q>`zF zXemrU5FYAHYfTYlETT+O1zLAGnseoAKC>!ecm>LY3r;TNWuiwI%XsJ&J5KOg#_$qD zli@>Ap4dz0D6YNrq-i|pR`L@pzJ({YtS?E{Xz~reeDtRA?OW|Qk9S}R6Lk!(Ph1fV zz%OA<3;IggqJ(jbP0zv8w9vu5_3wUL3Qwi0P(Wa^x z5)-=pot@uz&c|5+3UgQfq=B#c$VNW}VO836yit~&Z_U1)%~)io(5VC2SrJRx4W-j=_zfxi->d*#FSyrO>X`75vT zSHi_B^?++P0cGjk^hz4EIXiZb@Sw-(0>Z8i?C~%>PSTa`E*`IM!5-g($76MmmvpDT zaZu@pO#%V@Hat!jkF5Y+?@o^1)cv%Gn$CT|o|2=s+0@Z#;}}me<-WnlRO(v4V0an_ zp~pGx!4BsD%n#33XNiL5S+}7QIiD%6-PRbauaED6`J-*{q@OeFA`;p>fB4C(OhN*! z#|YIuNDD0?@`;FJ4;S0QyU|htfb*T zv)}IdH%vWppQF$H^+*C9gNXnf`Q(sx7G+#&EdNOv1_l zxeVhwd+_6sc(WgyZ;bg27zN6BnTt!v9Ih^cyD)LN(2|%@ zsI0{~U)Cg1KM|Oz#Jf*I^ncvx)ah*-R@2{|WLF z@*iYIfT{`77h}s#*$~@-HblZgGn?0ZgNC12+XgMhBo3OYY^E6#oHGy{ z#@qxZnGL{|b_~P;r6$x1<8NAJyEC7ZX9}{qp0grKvml6-5=8&S->vm`@N)nXEr$MH z2VC;p-H7N@FY@NUD*F4V&WwRc!Mrz}|48lcRWUvy`uqKuxko}fdoiRF( z!zj9gz0Dt_S3#-gS#7-kH-)ZbV`$It`4pakviTIQ!1JP)C#?Y5YA^rjE!N9>@Lujf zFV_)-G3$?;_wtf;=;tSu7aLGNcj3Rv3bnrv#ex9twexv~?&|?`8W_|02LzZn(w+6N z);{-A59`o!6sGfQ^RxB(IKs@I<}Yym6dmLY`QmQIpS))LYvPA0f5zaBjfT?P{lqvn ztHBlJ=Xnt6k7^|Rdz3AhFvZ93Y#3h-H!{)F_%c~c@b8@;sCv%74mAb;(z*UNLt^^d z6t6^*(s*eyFcS+&02{!lwnt}2?h3Fz~mZNd_(2&1)OOg2(4Hn zlrin2rbM+u<&9;kR$PTUXu02@vCec)pdjHYZYz&u%IjyLBg=qrHOK`BABo=rM=<6U zDpmHeT6`CcP+t%1A}Z{TZc9q6p)&uC6J^DX)cdF zNtT-5gJL-8)r%|z_;RRug@yk-`!Fl(tw=)-Wri-!V7N$42DxDyjMP0dsm z7|##@-fhP)?kg}3(=hHQF`m&y!+4Q~f=7&huf#Ea^J|WA7wz@H+M>d5AaYzZLI~sc zp`*rFpYpBQBgAsaIwSH9Th6qG_B`4Z6lyDtCdiXY`g#yHp`oLj^DzG{&gH+T=G~;) z8g8gYFM{&7!E29mHqgEDjCjSl7tifw1O3QhplqCTa7XO-6fm)aqiid7u4$;->M78X zxfN$48@Ik}qYP<@ZJw}iOMExlER>{@02UZcqC|m>A>eQT!&&@ z_vI*OpgZ6(v(p00IrFLmYb}!CfqU~3k#kcz& zE>mA@M?@R2_UT@wW?FCzcE@$l?zkm(>jtH1Uw+gGf;m6hi6?+Ic=hi`TUfdLe?{&w z9tXUl%G0>zb;YBu9)a{dt&7}#_j|F!YooMax&1Cx(9BZ>?V)U`0)Kpp3M!HQWsTt# z(D$@%o+@amt6=6XkTuy;6~i!GLRH*@PfKftTbw%KlxY30^1+nUa8}vP`EwQ{Y?S$N1 zg#;Spy~9}vXNj|;>w80)*NCCB?AZbK zbQpU-KYSO**Y^vEaSccW{KQ)?=(Hm&?3WUg+Z&%VGeF6h+!)-><+ro=2Rj&CxB8s+ z--AD!c@}FGphHzhmZ=b@Z_)!osnFChw&x>tEN5>&?0Mfex3?d5+OyZPuIpWEOs>7w z82nNT?v%54KyFk(ZodF$|N73}^>d@@=k}|Q?MR%xgL0#Sa{HmH_78SAdj~smqj2>L zX4|u1CS$0Q82N3Pb#0Ub`YF-j!sdIf{vk?1<%_WEgJ?Ub_z>lDe1nmox4*fU)C}$X z7?}uIxZ-gi2UMYR0$XrZ%vzGUJ(=_{v6Jf)YH=`A63)YD4)zm7i@?8Hyj5%MwQ}q@ zgJnxV-<;m~+!~;a9)`H2PpC5?G&efby0%YPZY(|$!g8X+@GU$i79R=WInm+x);%W{ z9|_%aqPshseQY_g-7i`LqHT`cXd9k7a1>4-+$1=1q8<32m=lYSgv6ZaM0^{N6N`_8 z0XfkF@NHmDEItwj=0p#~xBGHp@sV&}PV{~FHYg_+9|?nUq6gvI;G9@|Bn-}p9*l28 za$@n3FeE2>2)+%?iN#04(46R@_?DCti;sk)oaiKc8BXED z3oQv_vinM>lUQZN@9%-*MXMhcamzh(dxiymgW5^|8NMrGb@=*le5YW6tO;LxUf&>w z;RCc(iedOtcZuObr*{nb{+&Z;@6HUOEcuyGB{rr?oW6m>)mRw1sFYm8oDJi!`=fH9A0f|{IwdN7Co*DRr?t_bEc8RD zN6~~JQExnH;b6S$cn)L#Kb;Tztaf>K!h9vb#)b`9wA_P_JlHl6xyiQn=le1^y;cKL7SUy;R43C0zID-=I3y zJB7)w?Tw4NhDDWJ8pWUHJ}~!DWMS+_EeFkkS;t;AWXpA2$H# zj87qRHHKP%o)4;Fpn&$q{Ogl2OO=&j7Jpm~a5cvjg6p5@gSVn}`ryKotV=y!M#M7c zFMHl*>Xxp+{={CU4}L`4t!k{CIXBS<|46^yh|=LVfa5o}D(~{>tg3z$YE|jRko+I9 zfFapShvezm9+CWK^m{;$->N4V{pQkgXEXhtiDanN)=+y72>_LT4$r7D3-!#4`@`NtXkK6J;=o;Nj$q4w(^Dr#AG zO8SL(M(tmq-&?(P^t_Ho{uA`8cRNEeMnm#=h(t1T)_*|18!UAq{L29xzZXh9 z$X^Xu3b1wsJ!Ac&uMRb3rbpEN1^PXp$8XhGM!&6I^-EA|hGcaO$+z#2^y}jp$$ut) zn{7J&*5UZ=cJIG}zy4gwJa$zjVp$uB-@6$eiTKa(Yo^CHigeJ@xoKKbp~RuBZMx1V=of|NeSe!%ycQg#2gty%nLO z--SmQe!mcnjPfV?N5`rR$rugEzXshwe)d{HIjl@=1)*Qa_UB*T`SPxcS;DYf`S(iD$q{xf-e@*W*Mw>-%3d%=^wPHn|dYo?*LCRkE1$unyI0>2Bp z>+oyA@oVf(KYQNwt_;8Fv`&us3-xvQf8+0FNPbU? z6B&|EHJ3!J=NZX=#@~72I{KX)#rrey(4+h{K=uWly1Ry7Q8S6(q;!u&{Ac+6+D(U_ zo#Qu!cxc4Wo_CO|>bGbG79(Al4z)v1dqj=%7x{l}K9V}61;L^^6tEYG7j@5~V(h-h z)`jJ6NJM_Xo(Cs|2vX`otr%+Ei!&E8HwWWUI<^VIL!5oHb9NHGTd|}6dK!^ZKK7$z z(jiA~Rx5={W6EV5@FJ`TMU;~X3m(_?UOY7Iwjj1C3*D+f867`B6G64FX6-Dp$xk7Tk?NUR2}Z3HfZ>dal!Du+JBl6pFyCLPJg z^&}d|41xAGC9jDp7B*$XuGuU{3i>Wa$RUQZjSsbvY%`9p~d_;zc za9}5}&|D{siFC>@IVm(b|M+L}+OvyJUY{SqXt7X)xNSU@N5LUL$MICV_iET51C|{&B!&w;4IV7U1Y?|l2 zJ^=re%2g?;h#Vy(6i1i%XKuQLOrjt5^a87aJTkC5`>@-cb4bKbV*UZPi4IU+-zz4t zKpNs#D$e^E6}B@fM6Seg*YmVw-=232E+F=)VK222-T~fkmwKX%%S&g_D9$yXxF5&l zB_)Mp?RXyafw)++>f;rA-cP8y_$qLTSOLte*)II&jp*rXY{ce`o*F^jm^b3A+6do$ z)CkPLn!|RI}%>BqoAITlPeqPb!ELL zysBt;`Kx$ExZ(BDPbyyD!e$uo3J`cH^HjXn;1zpb9m4BX+(xW6;dQK%5w8b4;)Pt9 zpjVKJ*ZT!#dezhL>S4w!{RvL5L=CSd46i1HR~ev3d}_ig%7oXBJWuoj5P{e2Dqj9> zcuoCLrPsTt$w03Y<2hb=n4`w!J`1nd^X?$L9wofinDAQRW2Dzz9`S+%2)yo6@k-lm zrq}7yDqc0scsT@K!5Us?AsY6)PJ~wxZX-T3;nl!|*DLEh(F^@c;MHBl>*!Zzyka%H zCZQ$+y;hFn^vaHF}xxOuWp3bS`%K=Ek=6XSnCNdC_#Z&Ulp%NH@rSQrPAvM zQmA^p8YJ*KPve{nuT6Nxp64LE-o|ajIul-J%IX`8!x)cv!GH_A5>&j-eIRCTYI?O@ z>tEPt6a22o7Ouh~=7Y0V? zz#wL{=Kl-?a`i^*s~~B#Cfvr|9K1gnLk-+$O^4Dp5O?Eayb&*A1eOzb6kf6CJwT1< zjoXOzrbgu6FcP=A$420YEHER5q;Nq;)K7}h!nLEQ;nR6yN_|= zOImSn;KbaOj^5<3~=bf!4)8HGt^;^Ne z_Xv)ETi`#F;lCV=^U{RDv~p43g#PIGY7=rw`)f^TUjq|yJvZT<>J?}L;*AQ@|6(r3 z|MAKy{uIo3!T;ssCj58YF7e;xCt2`Fd#@}wNyi73$AUN~rV0;$n8etM6C08@i2cLW zI9h+y2j(BpS$}$oN_>sCXdzC%a5_n%GK+^>v&fmrEWR%_dFCJFKcrUclwW)iH;}B& z$4t$-Mnm92vMyYaY==@)Z7g1qJWkHXafbbbiDX$TMlh3pdo0>YL&sz8ARQ# zKp9H_iSX2kiOE>-7JyESB|UBj2v=NwI?dqJZj0kCxcvVG&|c(c@KFWwU~e^0S)`L{jCagBjpl0g&X!(pbvRSs{=lKLG?#%Fi7q zV?l4V@9GGjfG0rM*W9x9LLY^oWlB}vGE7DCJwl67K%QXG39I_Wq_kk_76a&{qvAga zQE{Ot0* ziTtz{mJ~7ZGw3?+NW{;}v?faMv%Zm^Goki1e*SpK1hA0+Nc`M+jRPcpzAFF{KWiEJ z8Oi_(e!gf1SYH4neon5!C64&{I4#WqhQv?kV&pS5ejcZjffzp{&CuA+3rLFQfDr)L znqjE%^9GX=`f0J^i4G*4q%-s#f$P z3nxuDNHf2cSLa|mbZ)uI9ljcqM-S(TxH$v$*vWVWit|rZ7-trjfVioTk`AxmDPLW- zDlH)}Tz%qs5FX(Td_>SVTlrFTi7&aX73b&bA!r)<{ggjWl<%*;zu!a$g$CG#V|3_- zq(f>;Ne70xq{9WM^>SHSas2r?uLa76(hA`J(|0EPdm%DX@ek7Bzovy({O|sE@t>H; z>Hp`|3gF+`jQ_W~c){T>yHpb)IU%a#NcvBJ8ZMXqx1`^NMhHg>RC`^DE@jQ)_PUm8 zuOB2wsS-W)S zXx}hsntp%z7s61}?_C*^ntq30;jZ785b%Fdzn@Cr^7#1g6_Cf5_nD}ZtkVa}YD#$= zG?!~K5At{tnz&-}SP}icZ4gKQqsvklKQC9m@7Zf=$I>QJFRau#?Dq<>p>~+`dn0NG z)9*9P(3S{jq~9MB&`7`k`WF{M5Bj|T>R7PVlYZC7!wV44R9s)q8o&uO_mXPA1@243apLH+m^(mr=^HOE3)5nif_M8y9Jx`?JZ%8CDP#U89= zyG*Cv1?1VFL}2StL7{QZI}(jH(AgFb$#!C*7AF$|h!53+x!CTsSfStDw-%El9^18j)FA!#d|TN`NfHRG#z(SeW_J%$$-iEX>@8{g+(6qj#F< zQ?CorXXFVe&)3cqhp}6n%XfNxq7HVsW%>cfUAP8gkgGshdtQ*H_&KTs`7blPAPKMd zj0W$(B~myH9#Ux%-WUzuy&T?`J52aBmGENNh!Vr^SUn9t=wJ!2fd=m^WCZx7nc=n6 z!ISuPmH2_?65bBzTqX*|i#WX2W_Wi`o1jFylMXkMK_3$RE@K_r7(3hshwwJ&* zUC@ZP>NgEoiXPaV8n8-+;W=#LL7Ooqj@*WQAYLjCvpfj__)&b)JzXutXV@=cmMmP~ z;i9~S`ge=+IE@`?P@sIKsPdSZe>mbA`5JQ`CM^Pa3{>hBVBdqRN+&LcS)9+!dJZ3A z!LaY1?Iu!m>8r`*1g7>GUEivs@g1E{@~IhY3+Gd*FXQ_(GrW6r@R%BA@Ooa*NNbSG zLg-2kZyATz!3?jLglA`&GzRb2^BO#ZTu#^EC2@F1x0%}8SHj!EEH#6-_M8UKrf=_E z8azJ^&t--eBjHVu@Wx1ZIDkOX?-+C|Z*N`|M!yI%y#6|Pk{=BuJe>X_;myEITM#95UG7`VHG7NB)ljI4;zY0 z{5BV>^jpZ`H8sP_knkSdr?t1MzoxH}^zfe4;5j(FJztpGn=Rq3Vp%gLFCP@E^qZYQ z21$qFZ5qhmxv83B202%P-2AJC;)}IZ6xpGydXT%I%y}YISQ3-c4-awO_+5d-2|L^e)OyL|IFH`tzwo z|0~z8U&Xg7-Lb!F>dpVFPrvFlYS!|vZ4IbXw;r5?Tl5e1^Z=*fK)!rJ`Ujt8mNu}? z`Gyo6d8@l?GH*4gRC=rHHksrjhE~FHZ?%BU0%5%(Uz0bAW@WGSJEO|)Q(TKaYKGTe z!uv?}vW)7gyisaH!pr+fh1ZC@G%cm*=v%xm%}VC;5vn?)9+!HS-8Hz)$$7TFs`k*>H^*;xYXE%K5tP!9UTSEKtKKd zgVaxJGD}0Ob7+1$i(cARgPux0smk58 zDy(08vCahV3kmOC2`@v!Gw7)R4c^Bb-cx3H+ja1YG}by!s;s4Cwd}X~P}Pc2eU< z-f@k7I4n!z7plSgn(O8HW_YJ0yh#$?SP2gYX-Rk|j;ZZ^mc#31hWE3Cce{iaB;nzZ zEeUUd2CqGb_uCp%d(TRE-=5IgyX%Rl z(je=cBI@$w-~M7@{_W*TU9@cM!Br+X`P{DYb>n`GbPJ{28SF*~j1||*LQl;x!`rHZ zC$kvg?WtOpjWyVfq(dq^p{Kf;;e93H)s#_gsgx6g+~pir;R!wU^GZ{D3njb)Hn_$ z4W7_bS3fbe_o#&TgS6v&zt`Gp$ci{LctTGtHN!h4;cb-s-7DqAkQFJ__$&0(P&2%r zCA=OIzfg&vAuF;>gD3Pv^t&M8y&>T(knnIk zn^Y}+Dt=5)J#GeeMFQ(Df%TEVaBiCfw(+14mJ+Xes*+C^%Mo<%i{g{+Jzc9U#@`3x z{Uy3GEz98B;@XONJe)HcUYNOFW3UJHp|i@h3t zH>9u_jM_X6o{;2oADPN9;Rk30A)so7#PFHMKcKW1ZU+qEI=bO%I zxQm_DfL%ArJFFp8`Cop0i!JMlweL~dZaEI4$k=)H?DqOViO*!i`l4~PSTKaGGg98H ziDMhep;s553ehX-kcnQjzi%>+PjRdOa1P(M!BBO?~4( zpjXUh5A=F&t5B9G$n*ysw+}$20p)^r}hyF`^@vuVufP>2(>iVbLF- z`oKu9UiWJB5^uz-Z~O=JYV^4WdX3oPm0teXI;gz<`2O_@(QEB@CVKgUUf&h->nUe+EOy~G<$)i?eFdKGWtYF_l$QS4w-9=+18-JD(lT;I?B z)o{irgI?D6jPyF*U89$Ho<6y*EMufFZ5dOTRy!a z|GGK7YH@lE`Nl-A+K{hjx(j**oi)>IJnxUkml)~wNw`KY@y6%s8~*{la@TvH*VpKz zUg$Ng3h2e=-}3qI%%5=NCLwkni#%xx`4fSEmP4;p-|(dRY17H6Xt7UEG<#lcN~601 z>vltw%J$Vd@r#*mYnm`QTl$Vlx1mAgS3KQKqnmgmTYcj{pxb~v4|IEJlUKS$RtDYF zzjFMG{iQdjpYX@d6zNF^e~kL)GiWpOFP0UX>DCR7G3o!sD&4q0)~l;VH}OWi`o@1i zw?^wc&}{^ioELfX$EH5z>9hB*-ke@Zynn7OG|{UT=v5uQ0i##CVy4$b%zh^Q|F)4{ z)-D>o#2Zc3H~s^96@TV|UhSdeywK~YrF?p&UAZ~EgnZ53W1?3R&?}~ks{emB(`zwi z_mcj9%Sf-|oi%!iH_p8&-uMsbwSJ8UdR;?j^+K=ZW%Ws)iOn3g^=C(aLcg&M5{KC3 zwhr3%h_vC{SVRry9nQlzGaJVpH>LLEE-`G6_*D{OT;xDk<*PY{IM=7Nty;tx$}?o2 z$A9ho)}3s_kc-$bWPJ#JSDr;Dq1p6@NEsp$s!oSbbZdPbho`_NL>e%w)h;~3VW&wk zJ%%RJHiwmBGNY5kHizt)D(lC z&WNh`)tXIN0N&zjfE(jV7^}qo@*_XsgY5!rQ(|key<@`QC{T+L{%>lPfnu~HV-7yW z28^_KXpHkaZYa7H0P|9Q|3fQmh|@E>%$hw9Z)=SlG?X*tnq4%qzCF)k16VN1(TndT zlQxRa3x7IoI7iYKF96AOrE3P;_KMR|S+<04EtS?$10N{Bzo~-9RyEZH_~M@KTh)kF zE}@7(ZR&Bf*r0J6JD@cwR!RthwSq8DI6vh0W$y zf)nTIfh!?g`4D?RlBC(JFH_b+Yy& zu!5{HI0ed*j+(5=2b!!2=#;tBwKA(IWUZu+4yK~P+z?1j1iND-VENPtIIR~oD5hO> zxC4jXJ2FdsCN*Z|?Rg~tNKooUoa9YRtH)=^%Y)z9KASYh-S89l0Oz?_$Sq%TYg2V;i;Z)DxBfv`XcWVcYzw&{R4c2VQU)D-@{+`faYW#gn0+vsWfEj;- zz~2Bj{+G4G{5PAcktl2B@pKrWnqY3h^_;lrH7#)wqH{PN%u>7kr?KvBUn6zgi zX-(2Kq(v9frz?}p5B2yAeA@GF$8aFq8;weL{07SL5b4oG<;CXe#$qXuFT=iE3wv|? zRw8}C3l|2f!nCLKkD&zc1DFi14%PSK>a$1@o-o>prc#%s%`+Uid+Z;Ut#Csz@!rcKQ@ z+BxwisWpLkBSlSLgu7dc#ej~TPl917kf)@L&Di1P>Va`gpUCs&^)_Qss|;2a-pZfc zY&`W6iG|T@6m;PDRL(s+#0VUY&S%dtB23hE>B4t&G23|fjfgh!Hs�qHT!q^-`uA2C)wu2?+`x{@l0vI zob!Wqe)y9$$e+Ag^LiO=oz3!$%%^0Oa}EuM8L+8lK3w>ef~uiPeg{s~a2-`glwKG8 zeLJetsQPj{PE{8&8jPwDy0(9ywVepR;SR0Y@`0h*Y2&##vLtOMaO}}|IS#U#t!y$;@ zYn#7C{>=6KqE-qhfm}%SVi9XaHjH2biaZap^y8!>~%mR?d)DbJSKsbtI#*{U% zoio|C>Tk3DM=OZ6c)`v$Sbq-PW_>aqD6t<5wJ2JtWA{V+c3x zj?5^S_S!fudnb-s4N%Uv13w+kC>(Li_8e#D_MxZjx=Pl)N-Ns@c?0zobrbXLhyw2q z=4gJ3+=1O$zZK$z*ciEs`SU=GdW;IOP&wTCL|HsPklXmsxfji)o}<>)A9d+lo@J#0 zE082Q{zO?;zBQ`~LuNDSsCd_k41C03VV)q#E2w#A z(E8Q##_r;jbMFy(A`j*UW&e=Yok-dzmdQYN4fHZ{xZ@kra9&eJM$zRwZg;<5`SLf! z`RZTA{O>52d;e_NkyKiNa(Jb>{`MLeY0Ykp_Cv)4L&XHCD#n^QoVqR)GY?Mqn`B6N z{B^knx^EK6!E;NwekLWWb>W|@oBea}YG{b6n1glxd63dJglpyCI9De13^fK@a#{1y zYoX#emy`7ywzK?@yLelEMLf^_^nSXS=?`E>e!2>;KxxpDbTo_mjSr1(wKaPQn&C!_ zSy##W#p-IfZm2=?+&^idRbza^SPk>u_4Jm}nWZHWpg>9M__w@wq2J4mzuP$7<>Q;4 zoTeLAnBub;puQ>o{@7RJ|N9>Jf6&j&f3v%zi_hA&5x$NtK8w1f@!k-B-z9Lo0(Iyf zpREE`GCpe=tT97AFfu|PpRrcD$7i2uFf}fJg~&n(lYD9fe3SSr4*-e7FXHS^e*DEP z#oxO4EQ7k-PW_&(d>BJLOoGC*h+OyZta}q;bdj>}V{9bAB7z8h*a!E8Kf>6w!^!e3 z=+J3*tY3_Jl=t4{d|pPCs(HPq+Auz|cV(PH_Ug-Ps$2B~riL3rl?}J?>N_Egp+;Yy zusVyB={Qx4$4Bp>7)P$R9=SCfxl)b=kjo(Cs(C{0n>#sj^sW)PWj9phdYX}o5XilJ zmqad4Aa@c+dUE8dp%{1RXj?&^spG`^oa5(*pNV*_U5;?&u_Ycz_hU1T9ldG9?!!M+ z>=r{C8c6p=V@|rO$PlQc+aj>*qha?LigE1j1n{)SIA%NOJ(nv0KPl_t%)7dG(JG}m zNQO!u7nRP^Rk~YLT8INWIY}vY zoKD)VIS<4{5+sy%*hrz2NxFInk$Q|99WyU-H=#;rgbh4*6RI5aS93RSvd*hJQ|8$q z&ZEn11?EU}Tostx1m66{qEN|_wHeK$B%U#O2j4l9Rs%8+aFC&C<8mY_mPJNhv0O>P zpVxSkqpbEP{^R_EcTN86 zc<|5U&r+^;eLnsvn_f54kd0s7QN`@fniEZ$KO3qHzm3akxXzzlTkP4Ntu1hD(?+GV ze!QV45R(4vz(CFIln;zd?ijHf2g9&R=vUL%h0L@;H}>tdCct1gw-PV^*?`kONT**K zNZB*Q%Y{~s;|?Sy+~ehaz)I?uivb$V$l>MT7s$pBnL!k^lddKV?>6dVk8MtgWx=Fq-qg$CoZn(R`_2sQ;>S9{M%l z1ek@ihwuh;V<8vOGV-GcPLZ;rHpvhhVUiDs)og@G%z1bY&_SqEF~%XLZ^(1P)CX;d z2~)iUXdy~PN`DDoJ~hHmgYzBjfD3F>lbM=}@dp4BmO(i0l#5dN118?}gEox{j{1S8 z-36!j@0bS)!F~J<(1cH*;@T<`B4f=y11f0qS*CP{eAw`da_2L`1;`3}>XMAAz>&^j@X z7b(*sj1g;NR&!`%Y~(C8eWnIe(+*Q5VENPp_-zevX6e&uL%2OubZ025St)~jhs=T4ztY{ub#w#U+mReN!WRp zAN_o&SJFJlPZ;&P0;TP1nt!v9NzNajhRMH)stWlzf!~#D^F7GV&g!=yKd%R<_Qho1 z&uBjEhp5S5-(Ts>aed%6RY&OUdn~Xs`Zu#{XwqbSs4<@R&%Q#OSi`ddAWoU3)lzF< zK2xf1W~u+P-MA zyovK4URC)eX0c_KrdhL3fn*eSbA+2=Y5n>D;#b@}5B$1X$;>aaI@jV2oAOI-y)Nhd zJ?fOktDVFvRhQpjsbB2>*+}J6PhIc49au?!;FO=nBl*C@pC>qfsD)WA8F!ve8_$~< z0$}K#Ny>(yJmJD-*D38)E0cD&hEZp+3qAvO*y>~ENDw9S8{sK^wh*6p(&tVaCW}&S z{wsRZfrbtoEuL({<-mnKxBXw`KPTa9G64DPur&t2Cb*j63dYqES1Vj?aE0J%i>p1Z zyKsf#>SV!m6-=cPvns@4=a{ZScw@SXdHhayCV4`T@@OqCg24_aok=c^6}O*ciNGmv zjl@h?ku1PmE*dTrGhtU^PYsOH^4YH)7Nhg98C*7H-yg@(h1pT$f8lkJH6?rG3XHr+ zD!oWK*FY6y3;=4L!$&p}WE@2 zh#3CU;D2I(uX!gceYHxAZx}0K9!fAwjXK;agXz@(OwF2H&x40T@q>pW(S@Mv<-J_} z)#fR8{WYr^*WnvpFvT+mQLibUNk$HQ{X+b%JeTW1e^tAc`I&8NsP;zAza8_VroRmF z%(1E*$16x#xW_Z2DWR{;zinAX(_iv|QGe;<8P-boc;+z;rslDHRapZppBe$*B%T=$ zfTY)6tfR8{R@@1;eo4&FTtM>RVf>G&GfdRM{QiiDC)~&XzQ0C&r%>6q022XN`u8Ko z;idS`GmB4j1Y}o&pK@1qF+KAD@19Q{WnKE`32t3_jlN6&*_^txPy@pk$u4~ZV*{c~ z*M|NyWF318v>GG#!Fk)ro;QIo0j{G11huT$`++7$o5mv3rgM}hvlpX-DH+<*%|i*ypH%Ic*YN`p&-NPU z-p${*$~EV=^T3ul!3bwXR2xB=W@|PLo52o#{1~%q3;1|Xo!;p0NqDX-$~N}*&U}7k zI0VsF4KL7C$dDa22N^a$`cexxKU)2ba?|b zO$M;%%8sjcLOw95?}?mjoL*T!z&KD;lFTV}8^Fc5<}=-x-(Pw@2bE3}R3Vd|&s_qw zHX3S>`Q`vYMqq-!>iLK>g1u$i^%lS&A71<&edO8%d^Qg;1^IFVlW!I67nl1ec87phb8-%p1xf2Q8ok6c(@m;36oTw%C}l_Q z!C+O07_2%3aBz5om0^{+K?`v>)8P$?bwQmEG1a*U9)<9RHnqwi48*!1d)^RIEUv)0 zkKzrsel(aO2~38=ZV}4%^T)-qpiY%^5xlE1r_@gvF=dp}NAP!})iQ#wd!0m^&4H2+ zG_%Dc_yg$tBIIJU%=#SC9kB^$TC+!T#nA2%kX1K-nyvrpO7ykiHRaivMk#0u;*u)R z`?}BqAEyN7|+AN-}!T0St)I_*h8XGYwt z&xp=npf+{s7QAvEKK*4O6TFKjbI_l7B1gA$Yqt+a>r_pF7OiGLY3eL@;Ye%ZtZH0H zgX~2u-rdNG<>b$NUgH^XR8SibA(KDyvzCmcZ*mM{k z2Y+6Nll~{Ho8l6zkAvR_nT>I<|5eSuF+L=L)5pPV;ToG9NW26W-xxuma0K)e&4kt5 zr~etM&_dz&uW0oc-!RtWmaLbd@W%j5LNyMDK68=QCF{NGuv?YqCduyd93m#4t;|&A zc^)L$n*9uy=k+7q&;+* za^_Dib3q1~%P(Rw*L}2CncH-`PUcooL?C2tu;N|js*A~E6Oit3m$}saOWQZ7q41JN+P zf9jxSL}{LdA^-nD8HHE{$^%G^Xdj-KKyg#U<;*I#r2~gCS3uXAx z>^)Hh>TIV`SSVdFe`)Rg?#ym^oYSn|43od~4r4Ca9L-<4O5-~;Raj{<*@M5-&24-y8>l3A{5~u$p>bB%JtB! zmG1dAve?||(j25=60m$~1kCbn!5&kpl>v~@yZwgX=B=%F*PoZVcoVteb_Z1VPs50z zIplY(^x39U0Q&dOZ!QBxwrX2+nBH$HN85^XG8>C4qNNuwmt^Jr8V$ zG7KD8pD71NZYI^L)SIRr1NgKx`(3=k`$4^MYHrk63d=jY96?ISB(4xbNg*@^>TPMO zhg?70CAVev#}5uv007|ED8rITL5)p+_RwMWTmXHMgQ`H4i^;plG zuMyjJJ0rG@h~3=f2vw#}b|? zYnFm6P^#RJgzd|!El?8wQVGk)Gxb1Jk<`<7LkNnoKh^z> z={B`LZF>eyW77zYL(E+qt|1PN^f5m&d%oZQ%9Y|faTg3c1Y+umkl3#iCq!~d|3B*9 z1U{-F+aC{0L$ldoHLkQ8H5!+e07e62H`#8R4kWS|6f`PgP{e?V1VKy;fxdHX2`(cu z>WH)WaK{-(Ky(O;B#N@R;Wor&w3sMFL|9k4xUAmJ%-tYb2=gs8v>D*iAR-IGJ zsZ*y;ovPwHB25|LY>$MGV)?c7rta34-O;K6h3kh&(P=k-P)ZNp4{ zCuTXyOdcD9B)#o^ZCf&ER{<)#LNk;ht$Jf|04LDI{yFO#8^U7bN8=Z={><|(DoF&! zuBV_DOQBQKeW0ktX{d*hO=D@our{U^uYR9uajUp@wz)t&#Z&Vbi3zzH{P1WXjzp+t z#q_Cc9gvJ9_NPEPoxqrDAO~|_~)rvfw)zNUci6Pf6-tYF{V^bFm$`k42^skt9wL@EQYZ--!QaRVE18#RyFFLHKSahOeE3sud ziEV+J5o{4p+ziDQQnUPIE4wEvy>ee!V|4fF$RZEjB{aCuX#k|PvOuP-^Vr^Pdpw!* zpp%e!s;IsDO`T~C%ib6yvZFcMs~GL$43~Zz8(!8F8?O95Hta`*I@7P%7t`MUnDeA6 zRC|ZyRlTlp1+Ci~2g1l=h&#;z{8>4G+w-QOkm##@)Jhv~rB+&yT#0}+c<=p14&Jd- zr#4kzho~+MMdJJ5KIqHFYYV5i|XG>08d=xv-W<_1d$57|UT+zKn*Pn5k3V zKX;*$q!~ZZSg&Q&kp%FhwG5hf@@<$IH;#M@+3kNkJ3>Jk5JSU#Pq!C8tA(?Asi^!6evvC@J`hY zZj}3AeL!loW_YlL(~=*N=aUmrA{>9wj0F{(hv4VY^YP?#lmo|K^n6+!e^Jv2u95dP zV;uN6JMBOg4T+F3+Cw}H!Ue}QX~MZEVD?T_l%EuKoZgU~R!4;_q6LNm@#AZ|sQ1#D zMmK3)A$~d|bx5DryTAfQmQ*0``ncX9N>U{1o_~+VhE7F_-v*$rKRK7=g5 zZd8_x!)eNry`Yw5xO@wcA5cVo@=L`Z))7IhCrt#C5#S8soQUhSThUV@<4dW7KQIF8 zJvgx3Q?nXK=}^$e0*4^RsEcRhMaYhR=xgQ5_nqbI&e@6PBa_rSw#IpTgOS|V=%d?DM3KXXec{Ni##IVtKX;uh)$A_;gC^Nfw0IxKCs<6Owsk+ z6r-jVZ+foJsCihv43%~F$Okd4cg$vc<|j0p+0bae8^+1@b2fBgGqOJ}`Dh~wyZh@(?cIIP)7maN)HoN9`2@gh#fseOk!m7AuHv7;e+=*J*E|5Tdc zbxOm(Id1Zm{rqMUbJYFNh^U%A8>Qzm%?7WMaWyE96;gS`(@W!1y{2cnHOdxEo#YI~ zAuuF;8k0?*1mino2BJE<(dtk14+tEe_2*| zjyGGM@5>I)ABtx>o+I${<2MSwEc|lv_4!4?`kZ2!29Y!XOY-%h8qBXI9bL_WMC2lKVzVmfhl;PZ2knKoQg~l zVX(eijL-c67Qt+Y&TK89=lDFYW`_ddoS}e0pOCP01sf6YtjzXLC15xQ_YhW6&IrAiy&@G0Lx}K2f^xK==^4akPvDi2-rKnMPfO9!7s>d zM7A2l6;7Aw6ip-(d_4|^At+jw9%9%@KhnZtL^frsm;^;kdWc>srflC4jKI z3wUL(&{fbVPPni{)0b3Ib=Oyg@ldHt z!%J!js4rR0-&R=PmMq0B_9}+n`4#ivRj8`G3>rd#Zi`ft$B^uCBxVCD}W(3}mAm3_cnA%kS}PMtP%_ zv8yasGkQtxLANT#uPB&tfY!;oY1Ny+|K*KMNjTc5NHgHahk<5g;|}PMb9&q;hJo|UkZ~S*%uZq?BLFNj!Jy4}#T;fP*tEH+Ysk2LXIh=n5;BhF zrydDb*LM%D+uJ3Su_xro1s8vwk8!ylvKENqpxbNRTC_fx5iQ@7U-Nz0W%;Q;1=k(z za%E%yodE~2@TNJ~52V39-?+UcnEIwU*w4la_`BlKYcb^E=p?8H!6NE1s>61Mre#dl zG$XGFgH@4OG!Q+DhOFw1MfL$`*G}Fb<~&Vg=g9r$^pCeY^R13B8D* zR!rl_{z_dnzNbRj$!<3Fi!ka4J(e||-qN#~H6Dl5o8$I}=cMR!P$P4O;uZHJ&%vxF zz>Wj@96w;i`kWFxrt5P`@hH>hRNygBUtJ0O{_yGrc<8H%7y{%6r>`bShyX2W=+Ye; zfyZTF8Grec3{YY5<#{|bT`to>rZynNGIceHP<$s*rA1z50a;FRWNkl^hut)NzI!#r z7pG4m^)0)Av^Vyzt0n(Bsiftgdu|qoQ^8A-@lfdU++y$**aU;&+(+YSIFq!7U^w#< z0u5o%5C)|YXefh*GH4iqhBIh5gDy3-4LwsT8{y0mAms-szj)fsrJ$1PMan z%;`u_%8*iqlmSw~kP3#(gF;YAC8vbd^d{leRNeSQ_06B?jXzQ4;}g|Bf1)@3L`{KD zvfD_6^v0j4Ven}g9-NBa_!Bh~J}tLC(HnoFMuXl#O{7H(dWg41Qc)v~1hR&0@+mY% zLrTtf3wK{7e!%E5|4^EpjP4LWtiNL;MOmGb&-5dOcB*99N{N6YK; z#vMmqU+`ob@;c(0DP4+5`;7LXHV?QlJnI1rl>rQu0WUN)TO&K3KDJFtd1GJ5_yP#; zQmE^pkWu$jW**ESDLA!0fVBmlR$_z*q)YjlrO)wVUg^hN(^7EZm_A1XumsOiJj?K` zz;j*}i~B4V_Xtt{MTkTWLL_JqA}NCq$rgl2upn>!WMQk8Ar#VAlLUbq{gK|pe76^e z^k+zR;KM3@)bXPM52XDN(IAu>px|!f4?FqM$Pa-BqP--eNo^UJS^yLy&V{5}nIqN9 zKp3+fh^>kA(gV<*5Z^@<=xIWG0ovPy_BNq?06oEko?t>ffF_#IL=)N<(0(Sgp9$>` z=l~Nsz=RG2bdU)hWI|5_G|7Y}nb4B}J=uhwY(h@~^i&gistLt1_5^PbHZrdmk^Teb zffFz}4JB*hA_^HfH0BfqFw>(^XA)IF8K5-oNGOdw5;{*a7FJT#$`5S(&`b0lvNKr~mi87bPp|=CGE<-#OLxlZ zTGfb$oCBfO^5bhQMAN6B-Ytmf6RfVP*64iUNPeTJc#lkm<;^m=S!+C1%5F$|D;RlL zZWO>o3iY;)CQ|3)E9$MYW{d*9S#Hdp@Cu1ID-m-lIgx6_5$C~}s>{#VgIWXdbE>sd zQ9lh+Yum54%YvytX_!%I9h^~xXhxMin(9neOt^(A#^y#$s)EM-$pj^4q^G#ZEln01 zTTiUKzXc+3GX6WY8=7xJf2TDB2xMywflQOn-NZJEV~O&#w=_Ku2{T!e>v`UAo*y8{ z@l0u`n5yS#;k*((uQZ%jrsq|J^XBPBC2|@zsQ>B)b=j~%omDree})aItQ$+^yOP{R z-HBnUmjR~fhU}DB?`Gf%2Cm{q9X}fA5pj7r$~Fe>)@wgy$JT6Eb z?}b%&9zGyW3W8WKz(moSq+-SdTZkVXqu{}cB%V{EGh71})5sDN3`fm*Dtag8sXqse zf3$00I8cV}ut!^Wgt`N{D?-2D6f;H5H|~OgVUsmQg@Iv<7@jA)1B+l78Q?VKG%^H@ zd|yz{_K9;`vLC=a;WRKzzIKC1!udYVIjpqD?JZ_rkGQ_?O8fw8O2qZ0d@V#Z!#t-K zdI3(6Myx`gtsXh}A;w;XliR<*(iO2crowbSF)RZxv6Ip2w8nb;!b`|o2Gvd+_^dp$bK@GtI1c!342*F|m&*oqWf~5!! zLJ+j>Mf!@MzOs_)TVF}J!=siSYD-)`mV`-0|Fa7bTeO^GNEV8?wlR=+4$129K+H7^ zY+&Fv20qO|>T-zL$iO8G6bx);;5-IW&qGXQQoMzMWKslBnG~;LAX{ixN|R#5HIjj3 zRzyr69>`J(1JfDkXJCH-Q3ZQZDvduB@S}(y#T@Os&a&Vo3@l~fM+~fBU?l_BGce4+ zS_Zzrz@-da#=xZvT+YB146J70DhAdua0UY#7`RP77VYFvBS*>OD1w2_3>?nD76vBJ zf@#Ec1_Rv)Q7tmCHv^Lx=w;x+PO{J`4D>PZO9rMh&@Ug0G!7MTl(ihCh=Iine3pSF z3@l~fBMhuyU?l@985m|@Edy_3;8F%I$E;&u13$L$V<$fv@lbl% zN|;&e$wvE8mhlbVXXE!R?6h9kX|aM`z6D*E!3iqMB!E}MRUt1ch2nC2xARbi_ zid#o0MucKRMDI%C|LWJW)v!#CU^b8mg+ElEs)J1cvw_|;of**D{gFkoJrZ8Bne7xz{t8kVE}|Jr^!z*Sdqz zH$!C4#m8Hyje%@7RnO(2)GvbT4wGg6pPb@2%kUq;4O|?~#JC5m*fOFK-%N`M3c*MZ z@vkGYH6v2!w~9$n#H5F)Q!(ohXpNJgh)ECe8x?aK0Omv4|;n{X~D4^KJ8%21S-C+!!Z)7Wv9qA7jZEC+i z>_vYdD*rqEVekK5e^>|qA@Lo~^r8MxN+oE;69h$F(?fjnGxJ1cn=uKBnDh`URLt5o zV-gfG=^+-Xn9JIXNl?V3hnS>du4pqRK@pQ4Vu*@a*JezDA|^eATgBYgW=w)2COyPI z4sqEV+l)z2#H5FKMa67xGbTY1lOE#NDrN%4=GHY&P{gE%C{{5O+l)z2#H5E9u3~!I zj7d<$q=)FOV*1*QNl?V3hxoFE%kFP8CP5LC9%7Y>SBk5Nl?V3hxq0omwj2AF$s#8^boJhn2|@M zh89^&579DkA1%O;Mn(;c#R8hG8qGmtvC`7$A*xi;Z3tlgK@af;CB^a>R1~-HpZx>r z6+Ne6R3Jj9lGK zOqO1N`drNR=BD81gOL6B014U5bOikfzRf`m!2$%=aIgr$Vg#S(UH9VBj_e4q+h8xe&9F zfu}K0Fpx$=5OOn+=3I!GKs^@gKR;0^tKAgR*CaCV9}G-lpqGJfF))RJJ_f$Rz;p)s z8TcdvH3k;&gN7tfDCQ{hI7$fvOBr|z11lI<$-t`^7-nEC14lA&DFc@=Fol838MuOh z{TaB5fprW#x?dK$fq~oPqk1QY8ac|R97Qm&nSq-a*uuaBV)TgXWd^z_gc@Yv;|xq< zpqGJ*7?{F99|LDGFr9&Z`KZ=7RKQWjaFikj7Bld229_|el!0e6u!4b=3`}HTn1Qtn z{N+bk1xp#Yj33MSv4S6~=n-*k=a_X2Y~aT>e(dB&BR$v^QEirz{>fhSKCxquT>yshAB#3rgRR1EcV)@H`t^X^hL*}P_9)D z=L3C=xa9hd&+ox}uD_~v)VyL<9Zeh!gPJ`05Vb$$mv}@xp*|7cL?0q1qKL#=(TBn+ zR4GFhDpV>%B`Q=bLq#f7AVZo8`DG|wg?uuUqC#F7N>ZUj8FH&of(%jLq`Xj%jXp%( zmqOI3qYqIJrx11c=tB)ER3}5LRA_|^EmxssGPG2MYGo*_LX|R9p+coHR3bwWL&HO(b(O?3?Jj z*rpaV;Oh*4KdAdLKEs>>h>QZ8ryte{jNizZkK$nT&4djVPWhmJhNPdBoDzkrJ@QO; z@0zuca#G|J$BG=eA5m`YH9o2ph8A2_&Gyh!=s4bDN@23^-(P9%*_butgtbu8J%s z&JlkdyMx5k7{7Q%y}8Ac^u|RXexxEioYtxcF#;#HJX&0N{_#e9d9r}7{o1GXt4Zu% z@8$Lz@#kHtMv7F9Iv*25tMosc?N7ZH&>~8{kqRpKYWsM!Cg);?wx_(f2x%o>*PH(pLJdA9N%= zv8pI*EB(dT@O%9HOZr3GN+12CBk75;#D3z+`0_9QtRv}(Z^SEYrN15Xfkv*tmUL74UabB> z&dj`FKSjJt%#CXD6PwAi$3DG69ubNyFYWM`W~cXyNUQXDxgAfRBJx|M|Mbe%>AjLB z*>mg4b0b=c7^IS6eX_3XLM-!Mh!fxVPzOVhzOA`w?Ht3It|j5;#rQ=9f<6py2sp~i z(Ur90*8Rs(K25wpT{fnE){JePzxL|4NZj5k{il;VnEnjuLnTsMVK{U{3@*ia_#ONUYe9cf^77Htb8RcX#@sc_B3Hh`A0lQirjt*%IN&qBY#DgzWD zi~$R;-x1xE>&19L9s|`syJuaBb@lP+=l}r+ty>>+tDZqJWoPPug!)V$Ua@GMIh3Ah zb#Nkvzc74-^~}<6W|^K@5zd^)j=*8*1guww5iwjXoj9s%<-2s^s9q}H$%#Xk&Ku$C zKgsvy68=2?Q|2_kjYidByFF?%3qPZZVX zQ>B*rk)chQWq7TaB46jBZaY$qRuw&XQEU~BE~hGzhfDZl_^E)74}nHpmRw8+qn5~1 zt>Au-i{Xi#ZhdeUS=Des-@D=j+|P_E={^`$g5Zrb@J4!j170)f(@(B$PMiuV3XI!V)9!@aZD$~;JI3KLmSC6KAyEs z(H`;wNPs%!Y2gz%3PGy91>~KAjWCpX?0_JC@Z;17@$kU+qvW^YJWpd4?=YbAG)f>z zaS{Z!M9R`)BQQ3FXgkF{OU%M<5ocT?3w!eERM;)zFVApcw}=LM!}K5$&Xpo`s}HXvV2Os|_G2!b8+hpB{B;$4fp*artRX(Qi?lfHz77 zU!&)G5)%39@5{S=%Q`pp1D3bwzz$@z$Me97#*j5N>G54rTv;B(UY#~FoN>r=-!)hl z##*6tjlt2(u4~RXp9qNc@1kk2m$zD@1Fc`UfY!i~L6ee;aR5YO(726u z#dw3pT1=armSlq@z#4o+K+3$X1PPBk+dKLHJ?sQ%^yH#co!-_rvYbFG>WLdJO)B-Y8fJBzj& zVMa{<)MoTQW?P%l?@ul!m9%d)bMK*((K_%gmB9O-mYdSg#tF?D{3Z!T^5G}U?Wv!W zaes^Wws9aV{hyZgr6^>?A;#YEl9a9r&;CbMl@*8{{eO_1{eD>_lKv~tBhmJFvMhAf zMyd=t1%qk{{e67w-en91+3a=hI7vs=3J%mKm#XoNnCc9@bTkwr+Oy|cat$2=kPV;N z?B=vjjSYcxzn2au(6d{x>24>O;NVrnAzQ?lEi#j1P+8@T@Y;Lw5;`H_W)X@EJAB#s zDMrsLU+BD7EoD*B63 zQM;hO^_%bd89M#_+PV{fL=y!^xKVD&oC=8<%h6~SD7}`&|<02L_SE-~~ zoOIwH(kbb9aSW<^XOd{yB2H9Ea}?EEWKwMYZJ+A?YOb))-r*u^D(SpooMDvy<05W1 zv&!Qd?O!RJ@82m5r3%C4Hik!!jp4KToQERDAde_kNPZe>W#g)2BWXI1+pfPtQiojdX~VAF8Qx!G*l&FMv8 z6_}AGo6LTdqI@HzC5c}EiSOeZk>|q3_LaHLCOhE&Yyaz-%@qjN?RzyHq(MIG?e)K= z%eX1GzRk>_`rpXGC=2x<^uPDhV*6hl|Njlg&l4v`6ow((1W4*=g7`ESGu4SI&Cm{{ z$?n1&f3`|9yaQ>@Q+fO0EiN4-fRrwmoM%dxk-r~CrMt)K-Eq?8>MCZ`mlOsmA5bY{ zh7gAGn0^-5OOoUfP+LTqN?O7hhD>XpT=*QWOutGadlvI^yICw&X?m+P6&;|n;#RKA zoekUvDy=?n%Z>nT8Rq8;p^Hs73IGJ?M;$$XskRSkSI0eCyRIdJsl<2sEK&dQJ9?tRGO1JkY=bV&(|Bd4o>Yr znk1EGg-YY4G*A$V)66ku*b7kOouWQY3T{$0GDBf7wT%-lR2UqiL|oGMhHxR%R8mvT z`0EuW@sW)eA5(fi^%i6JVFMRgibiC=5M2Vw;ISm}iw&IgRZhCN(i8`gVLzT}%Kmm` za`TzYI~6LmEhtGUw43ZLl`O!?7TJQ*Oh&>4LzGjPyrL5ImWfpRoWlh~SzowN=`#_& zAfdGm{9Zj5b@O`Ek|~Wa0lgCw(7C>R<0dQ!O4Wqt1?CKj>;dECgyvhaD0Zo?;?BjVh9iHtk@|I5g|8MD&41N$oe1Jz%y~_9o&|+MHmTrZTpA7Lxln z+n?m^j45LAeCEe1WK+K@Eo_a?+*~sGUC$7p+mO zhIWp(p}_D5L-6CB(7NI`^k4p=zuRY-ahDIbG6Rx{k+Ep_)dlsIJguwR<&-}$I8w7C(hO% z7*iG5#vwL6HT^getx}j7|4uRC=?F~&^4EuX+2VEA#xQ*?w!LNIap?Ki&%^cg~18oZp@KhtW41I1NM31 z4bDa|=9SU-SVrUHJT*S1)ujhmfydxzj*N3=QF$=`m;Sqvu~5fl$|;m`I;F%xpGY|> zN!raEDIYtJiN7aPvLXJz4s!jLb#FRx_f0T$B9phtOJ}x-x#%nwyKY&)?0N-RYsrAz zPVLcH_a(#>B9uB>;bMvNLy>DWdW$rkF0OP$I$1^f%W9J|-s4EMj!37~F^@&8_I!~e zEptTDdXv=sP>5b;qw5@Lg(Fg$id5alj5LKK)j1;V>BX34bTT7d!I8E(B28P%dFo*? z;>jGT(Gh8!iu5(E$Y7TKiM|?(n;ntPJ&7f(=S8y$BpqWhx%!zs=wub?@~6#6&oL(Q z4m2aVRHSS*@OWzIbOMm`IwCbEF*&~)1U)r3a3r52(wg;Ly4#K%Rv90`k^GKGzgLlR ztVkzvBxxj99d>(9uFNy6NOZ>s@>J}=H0}=^Y5D-Op5En1rH)9sD&x7Yn^hpS91KB@ zNJCVl`<^u;RWqhq6^RtFpOnlx4d?Aqvy|V6{48@sID8`4(d$a!mj|@Sqsu7*dSNbI zQOwT%RPluH{cfE95vF>IwSq^tsrV-%zOCrN7I_;KygQw?NN55N9>PvbaX|v z{E?3QZJ#3Z_h4K3dy!T_BLlyoi4^MHCpMmC=da|R_VXw8L9$0-4Gp=bTJ$;eL6|X0 zz1hYO*>wCDuSpJE9i_2itEj@Qf}0j;sF_an3zBK7M1OK}cYpFSyo!5ofvh)gDaX>5 zoK7L-?4`&M2XU1O7XGa3)^?vjDxdRa^9*Ro>SpuUkMQH*8{LeZILLuelWK4-$%n|| zRp=R_?)ST*BL(tTo(@nWb(ZS2G(sfK!Xl^%Xa=B1`Jlim9PLeYcz2=?=b^#@i4;vo z)|z6n_FAGW>sIkt*vemQjJET)NG6l>U%!anC|fjvxQaSa7Or5eM1(B;6+WK_Pf~*E zYF24Qh+xeY5laKB{?S`z_9vRDpuzp(y)&r6k>}nVzH{!bXw#``(!440OMH|cAd9{d z6YvpMRn<%t2$A@BJh>6X)KpQeXh@TR!(|uelhL^y%rSmaP|RaHaF!%=U)NuQ){3hS zp998jd9*m3gMSDauOu%8EEpLZW-fi8M&4AAdzm~c9C9V%`eQn+S}jO!rXELpg#`3R z?}>Q#;C&O0Yr$v4!!y&S^2wdBaYRIoSP&Nf$ zNvH?(6L8Y6TZ`ZfeBuv?iF0WYRtB&ROd^|()MiM?z=@TBh;J^Vez_o-1a?r*Nx|z1 zywb_VczuOmhmy{PBHb^`B4*+CNG^4XPU2ca7N~}30rx;JUcjxOaMebtS6W3f7jaos z%m03PYzkL@5lw2$>POY5YgX0!@d@2FUGA9Te5K6rCGZ#!}S|XhCSJG9h<6`#6(YA z^;jEQ6^mvQ-%}1w!)2;m6_jJDil&~ZimHuNHdO^N4(E=u@^=?dU&nkF9${pvLMnR7;*hA3BxnqQ?v-qsieM4)dIh<&Eotdl)ni_ z-n+DTY`qk=0$|&4B4eY`_=;)JjetZ0HaWZ&6E=;oO&SPndUv{SBtE~AKb-YbiD{BE zysQ^8kNXBNvoC<4+m8F6P&eY4zKwK;Mzy?ezz>l}C!9N0Cg9UTvw;$FhC&TtARvz7 zTK&EY*Xqr{!L>TF1-#)|{2cz5O{{LY##0j@rjEF-q)CgjE+3;7*C#ik@S6rv;ib31 zbC;`CYgv(4>W_?v&&Fo))gV>y-9M6Kh`4?xz21rM6&v3I1 z$inwW;Jfe$@>|_f>{;{>VPA^s`7-0}sOQxMotx{2B^dYLSBHnz18(Q z=MpW_;gc-VJ}2oUi*yPXMb2ZKMftOh&!E{NS55k#Eqv)td<`Z~?A}Rz4)+(4mhQy& ztc|Z%l7%l}kcH3h#8+YAlVUL9S{#q>B?rE)7QPh&Eqw5wu&X-7!k5nZyCNRnY8&5e zvL8rRD7NvzGs4EVbAZVTLXP&Xy`+*m%lmf+z5!PL3gpltSwVB+3tRY>GQKC{@olj2 zonqrlu<=1pwDXs4;nNu3n0R~*HondMt^BQk7zQ4&s(G-U#r^;6Zx)$OlSUKE`Gd2_ z@7gF+POwnAEbd=eM+qIde9%Jq2S)h}O-Y<6ci1Rh$rj3=Ev{ME5Qp*#6J^s?$l}C! zd~}e8>hLuKEqr(PH@Rk^G%`7|xEHco3cIGx5K!lWd+9KVEKy?S-RucLpRI~uV|S68?0?jAiI zV>P}0H|6OY`)O9ZSq!8**m;zyd!xE#fM-z|*}Nc^`doSG+fbgX(zlR2+8+H9HNAIW zT+8(*xx%7#ja=uF{i$G>$zL=^+58%Y@RrrQyDt%mxSov1CmqWepMziPXgz~PYm9tL zxA3iF(LW|0-)VOK=Gy#UYU6|diJd=@Xy$Jw3a7PTfYUD_maqt=RZ93*UB17ja!5kM9B--`s8%z7mV`b7JIqi^nW) z731^7J-A!^T%(hAJAeJ&!kB~KU-0Yv_OOJj@cRRP`|umJd04`O_?g?%SUlHRQ z9FOl`4t$4jASmm@ej6XWm27;gV3^|Z%+2_=o)A~wy*9o)8(%XSlDWKaVY2a+Sol`) zcyVt$zWp}7Us|mEEwk|@I`Ji0_(~Yx#qszK+4!!t8MeU22iGS%e+@m%@=9X}^#49_ zt*9hu<^ky%Enh=;cK9d1N}c9Ul-WQ6u(+$9JNQ?^C;ftVlHlQjXV&PjolStL9HpvSm2M`l&X)x!tY) zTWsTtneQyM@TvLJOY!*5u<`YhRt~8@uCn@{aB%7q%L_U$XGEH;mQJ+CD5n zyx;zBAI7**TQPRw_a%Nqwqc%y-wyoFMB4TE_1l4Q55K?Q*ZDn+d-(kUzn}2afO{!^ z=Cla*V`;C$4McThuOq85?h;B0>UVlI!&RQ9Oqf_<#@)3?u=WhgEnV>(@Ef0}7mX;N zOSd>K>?vV$v8H23%@>XVPQ}5>Yyn3*yi+{)g|AG2WWw?BZ?!BbT950fW zIl=(%*dp5IPDY`+gZWXsFajGC zk5gaSLylQrOKFLXt88qKxGKXs!N5HzuB@_wXT?`p4wwy9_Hg&uDtrD8tIAZ2S!Rs? zg(_Rv+(wnXwZGjeyE`N9I5XP+#H$t3r0F-eJYqa9!I)Bt>SlW;-GQ~d8_9(G3NT1n zw++A3%oFkjhsk99H})#S^f|SgbTF)L>2l|7@ab@MMt_Wq91S;$DtY1Zbk0aMq>*LHW&G zW8EoUB$5b_IH@j*#heD4uE@pRo?NgekUFM5PE|z5nM85sJagBe$A z@?P*@b*|st)Q@h6ql9#ApZKyAA}VO)`f-{+`m9{E_lwuFktg<0;Q)kk@}_G00|~*+f#_9kx=!9xLk#Vxs|9H4XcHWV*H8u1xO0Jp z^0k3f8?gNaZM^o^IJ`7rHJPk}>)Z!Ss2=zNO9_x9w(p6pdMN}h7=WIJBcY4TOV%62 zoKL}j$Zh#`RxJ$wfooyL-KrMA zbQN{68MW(*PHe(uhQsE*t;k z07>fSY%U!nxs-Sf=UH=I^~JnvbtT~9`R}=sh-EBEIlGq>N3^sD30eWxOag0qP1a0u zH+e{nr~qFkiYsR@Ut*^}9N73m^rt^M8VxW9kS|imcvlMff%CuNdL0BuK6xQ}*(e7u z3_`BxGIYYTS&S;N*vtN4v4O%)2SqS{$x<#j4JuVrrUU267EX)5cEc+}@vZ$e7IFC% zXxk*TZKBn-C#$wSji#)~-e1cbxrpWc`O0;&$otJzYc|)%fLH^R$Ni~`myta#G`as8qq zzzc~EWI%y1E=1d!J}JBrp+F4!ht*!^A!d43@}#nESZXMWZV6N$j+VIs8T;qm9;lAW z*Ms-o$Y;0Q(ZpkHy2Uvc5_Vqyg?abZ8Z%j6tL5zB3chPGI@nXXf*kxwKM6Z?@G zdMgPi$wB2KxmJd0N287!TmY}MD6KI+o=h#o8(eSmLpRkN8(e9LoT{`1M*7ySCoa^NKef}Xj$&Oh0sichP+#YWZk)| zm*JE6YIhsb?#1aidq`<22H2DJG zubHLz-cxfJ8d@;2autxrDr#Ll)qPQI3bALXf`dgT0H15B$cDbE+HJdqEG0PUi7cy_qmkQ~Vix|3t648I zi+QC(a9odEk}!%WMRBuu`6f$l#D0vG9iE!6QPlVfx$j4C6e>&V0Wn%FDk}#GpnDX- zn922(>!}%H)z=iNFRCID{g&G}roMg`iE@{Nui=E+Gx-q7gIN7je8~Ap*o*36{gcaizNh8_$vPK)k7ORY zZ-mQT4+Ug3^*Hg)KigoL+=t^?ri~%qseLAjDO1%bAHy)e${>cBPVTR<45PHq58cEy zO8dOzXPaw27;9>uN(--HiYrZJy`X`X2eZu;&~JYk;JK< zr>H9U5rzg?1yDVA0zdKI6}LN7&sg=uR6RdaQ3se&JFa?41qJ$veO^kW~(&YE+R2ZsUsd)X>T=XX{)~P1wp-Kh75Rc*z#^i3MNAWvc(JcBbIJ<}@d` z{br`fo^DNQX?pd9>dFHhnHr=rb%T|ur;v;@bzb>YuBTHdLy<8>Vsq`k;^xo4-4RuF zFfE?kXhrVn+wD3StjO)V)vSXd7P-4ka>-1tM1&T{lY9FLvvfa8*`q8HRJy3*-Af(h zQWUvri`)hzQ@(NwP~o1Mt^k<(Wx2E$BGKv;d=$OEkoA5pF@v1ItqDl=Ap0d^k)ZJ? zwOKIZ(ONvp`rs~|VD%ybNfiMRB8w{#5`Vsdhdlb^Y%HhBYx9V=9xP1y%w1-J|)L;KWIvc@n4MZ&C1!t*_Y~=v}mPe$th)qz$_Dr)&R-}ksZV|iN zBKC=c*kmR~il#UrhFIlxlNcQnW)bV5h*dd=-JpoQJJl>%AB)&O9mJ+GF+s%oE^t=k zS!+#V?;UXvdwmD<)&K{wTNSZli`X(G;cDy#&NbWY4kp$@#9m4K+QA&(SS6e4BzA`) z_Fph1m<)2KBKG6WX35elVkbC=RWLC!V2PE_I@_!V_B646ap6>oS z)9*npCU+04I!v>V$iQwWo|M}E+=JR-0sd>vRHbkI*-?-Ew=su2hh1H=9-W5Vr%)fZ zD!p@@HE!7-;>N5KfZI{wsOm3aCGaeG9AaT)35sEI*VEkK1QJ^-o!m7O+abB%tUKh$ z=&!eOMmw7sg%p2QHTdWoP40RCNtnClIEcN(#HjH_=lh(*zJ>*diH&m-8>xsrg1uxW zcl}in`{D+Z*clcvpM%&cCKe`Q!(#f)!67Cqf7{|HS@RYyS&D<$>xx*JMeG$M;gXU5 zVOHZhCbpD_l~g-R*3)MayW2_ZkBZnDSSiesy{U+Gw}|Ch#D+VFz0Jgy6R|Zh#70`g z`Z$SAP{c+%h;32CephT(<0se#%_SoPhgq`snAj>J_Ts(HlGUDPmTVbPS`wj$BK8HW z17^uSQp7H_h}~`xJIg`rGbYwR#Ga~h5<&e&yMx$nMQp4^>>(uKYMk#NwugxcA~ySv&LKm$ zM&5}|VrMF1zq`S%#(j#|H`kdZJI5kc=^%EHiM0^1U;n{L>@YS$b3gm;Cr8OXkVj%| z78g2*{i2A?v52ik5-!<&4q^$|Xb2t9jai9!VZO7?#%wf+-RmS4R>bOH5-=I0E0EAk zueU`kWD$!vi1lD%NkpvpPtKCmewOYe z_LL$v$3bkcBKGDavt%xd*dq>N$xKWmV!OvWiG7-4mTWUlF0x8CP7&+vAeN$t6#m4Bd7WL2mndRQ*P11xla-j*qYh%jnOF%C zyZ9+5gLK02AI$nc>~oatHF;LpW--J;>~ckHzC{cduP9=_cM!XRiB%A>8=rI%D|^i( zw!lg3c17&X$#%&y6|ue+u|kX3G6yk@iG_*S%`pt}5zZ{(lAY)z=2gUs9K=G3*q^R3 ztMTg}%#uChAXdo4mJ+dWj9T!vHBvu|loo@$_ZG8$(L9C`u@8+qQjU=p= zRJU|5>xo6!GFNp=pLr>)_gy2Y%5w#<%P!$fH6D*`j5e+1`DBus*1 z6`W&=<4zrsVB6fOn&J<6r#8UW&2%G>#noPrMQ1n}K`N_PRH3@DMw>3rg>I|8{9nhm4>qVH zLA&_2|Empro>yJBJaSP&IM91jpicts-!ONJN1jhkgsu#GDs8xjJ(cF*(C!~kPM4MD zy1SQhWvgjKzma}fX#9_}(+*^jvlQBYRm-`m*&?oY)|`X)?44NP^dmYpvc4sEq>^8r zT$H@YOWT)mw^f05lhzf!S+kHDzE`~qEMR0w1+t)z>y6F1xcW-?`n^Z9kC|@}YFvti z0}<=$vm3esJ$Y_P_pKCqQ%8U=+l~ClMcYVzspxmE+%G-w6D&nwj#4U?piQxRwG@E@ zF?0xjz2H0?o+e#;k#Hr6XYtOZ+1jQDWVlh$GP z1AyoK6ovPcd=Ls4|BzH?jO6omR-*{yH#z!?a}wwd_u}y60;)N<$0r#14F}eBE$;YwA{wq>cjx0=lED$%~^WZ0NV0>CWr)(ZV+EFHI?#djYxp6ow{ zYm~cnzX=&X$UXYlsg4uw^Kim_raa-kSoD6b84Xi?kHFmZN7S%%zQ9wyq?j*WdO?@U zGF)rEVJ0t@HFaS!v++-~*g?Gde6GplxQRrJ#{3=4J}~DT#f{%@kzBsXjD8QID=vRf zr3`{YHf{a_i^CI`%Re5^TuvYEfdi}b!0p`BA9(kit?&**7g483X(Ei~!%2#8E!!d< zuNo*BCJ~H5977Hw;R3i-%iO-0t{S?SgaX><&pUC}pq|ycn3_}qBTI@{C`=-uP$C{1 z&+TodxN{}9H&T!bucN(@z}4q*+1_B$e76{IFuuJ{cpL4l+8L)i;2vH&veMo9jwlRy zxWvZw`+La@(+GD0}u_Pm;v91I6~0M=8%dMa2iz5k#^{vR5s<^o6frXaph2&M>w&V&i zlRwK=g*2k}h-q5c#OOpp#6xq8qN8KLTXoJ>(gUau9O0w~Q0zi9PynSXL<0p-h(a__ z0C_D$0|k(!LNrhS!vyZzDlFypX`i35N{(cbNpLa;?ly7trE?XLf$ueaT9Q^D@WQz@ zVX8jO?GH~&!S|=;NqzzGY3btY8R*NAtI@GWyG8CZ&5*%kWLuc^Akccq>x^_U4e8L9 zSYsyc#&tN(%8>ny?#T5yPEH|~t(J##bV|duV&IATOqH8FcQ}tSGeBl06Pd|Nr+M`_ zX2d5+x<@?c%;cJQ)8Te9r8ouqa%)14Kb*&7Zp zFU{QtcY+&WjGYN%>`X6yDVj0L9n>=u^?*Czc{OtYG^>35re)T-TmfTGzJBK_&A28> zGw$}nMQeqYv8(KQ>%Ny>nq(CC#w5Brxb`u$gF-KihGLGhZa*t}pu6zvfCrbYf&FB?~!eQcCcQCps zKjUEe9vc2H(^B_p>yC86-BI5o^N{Me)cog!#Ds)dYO}??Em|tB7p-f7BkJJU$t3oJ zb^R0IFbrqP$CH;+qUwzWPM1>=!l^rSCzA7z1}E1d<^{Z+cK5z0jx`GxVuK+HBUzn# zh!?*UYW8;JH|n&&JTl95f;=!p-kY9QCo$nxEoS#l;Q)~3__g{RjUhR{a87}qQxwjb zG*!EWDGL@W#E%+nWEqCDY+3uLL*yT$OQ(IFyN`_Mal;yenFBQT8< zz(evc3&=bxbBjqP`olTJ1Pg?7Za};#D&71A+<_moydqAPnK8#05ZpfP7&L z8ubBLfe=yQ0BSB!tOurq10{N3dYFcgKv_62j}MazSIL^Ap$%>P6!0q(LsMaQhbB3ah(-kaT!A1b)S1@cEW$oomIcI5rJ z@}wH#-wVr*)86gs51R)`ZKgFpesU*uiH`B(KkD1$$2%A|@)rTJWAbA=;}M1;9NI-& zCpO4aCOVOVPp5F|f!<*ZY}M7;ap4_a{b|4&DOeemDZgLU!+kO z6RA(-N)0;{#%6))^-1EI>wbU~$&@0>4>TlZvVhBznCai=>6`1H>bY~Ld#Y!C9WblQ zx^2mi9G<~BOsnHOsvJtql!nScN;u$yUK$P{djWqKnyF)s(oXpyY~*;X<|o(5168QO zN6ezu3Ap8?gv3WG15h1vyqGa0wpPXyAx08K7sP|;80~dR%N8i($l_eD_rP(O7f*2wucN)Ycpf39i8$EJBb*s6-ByAXs{=su87*s)?O#p>i_4qFzPt zwXR%@c9}l$w2FXfZv0#c!(66c)Tjus;KoNNK!gG@MMWrX9ibQzibbZ15Hs3Q`(d=3 zTPl+IbF232sJ#D9$Gi6J&w*`jBTba*D2lNU)->vd)L%ZACzB{$)Ko%Eom5&fXu=Fj zM)f*PH2#)sZIKCXI$~5j_&d_kC-@NXiSi9lwP+_giBK=V8t*K)@W>9Cq=bUS;&cxF zCQKQ@!JL(NiXI9m=QIE=BVbm`H_=+ptG}s3ApCIhDm=(E?FThYT>YZV2yKCUhs@$Z zQo8Tw;=u}8v641an|nd&E;~9u8n>2Sf87RoABbbF49yqP!Jfx zH}v`LrY@Rsus##^D7YJGt1;ib*eNgGoCyY)EwRY%*qE2D%_=aXr&k=@eHl_+gp`ZRBh z4JXU^31?uef(-{Oc{h%MU>nZ0*sltE2=|3J`%N(8z;W$2E7EpgQIXcp+O*%GzZ~Cw z0}~W(NpEh?eiQQK9%;vZLzkCi>{a%gQ0l?px}#mLj0~XjS5T@B*l+X~kJFy_A8Os6 z=&w2swP5Y)`Vytw)j=ks>dCkn@H*8+n*Tr3L&lG_FF*lPCWg5AXv7ty_%Q~9O%M($ z+VS}Vb^|s61~{K--?Pb+=db#C;1CF>X^CK+CvVvo&DU>E3F^1|@Jq)JZOQh)fS%0; z!9X~hC$nd~v0v_9OR;Q&;46~VNOQeUGww}iK7e(w=zqdi6E8U?TlxO~WvhO+Meu*j zQI|e{9FDsDU_3`j`S7Sb7=+|QpQ*NdAXOcf4rvU8MM|pdJ_Mlv6#7lBk@|a_HQ2U1 zWA$5(;wDSn#e^_QkO|o2z^PfVr@};xwda{WJmHZ$(~l=^c9~g#Cl;z_7UNlhXDOZ) zV4W#9lhk>t5}hrizfAfA9<}@+Bd^FTA`Rhc=q6aHIPgJ??F)GNX8WuO8dxhG zV7~<0^EQArfD0tJz!|#;;9?0bc7jU)E|uU?C%A(4TH4$SOExX8gIk}J`i`-d@@w(z zWYa#}rabJ3J$udp6m+FAK)nvx9N+FyFYhCFrzg2Vu{i^UQI$cODMLX{GPddR<%gvtBr^ z15&c>^$tDH7sfh=p63teLEXzM2FIrOxjZ}`6&-?yb6QxN~VkMGYseH?y% z9tUQ%;^&B~s*~gkaNxbg#~t5~KOXa7yk8zLffEnTJ|9T22={-WuO*!SAKjiG|LHjG z`Ptq!+Os|Rly?*!CbT>a>zHZWCne5WTagQA?HTsZHfYA{H0-Nx4zBqDM@~2~LnXuv z9!5{da?<)zXc^8NzdOo5?{juz=Xbj%OIG@KSLKJoHG z>Tj2Fi=*xHC)xTNm`UnvN`>ptdakk`zly6fXo^w2&NLibY7+I+?r;55oW6e0R%1TaLEnIuQup z?wcCWZ@&b;p$JF|2&^C)emHdE?D-R$KRE^2) z%3R-6<@$u_D|{&yB>xtTkM~RPZHVLB5XZMP_*LNQ2=%4 zRmb^bK_;5^ytv6L>;i5W@igg=H8T+g_$HT}yarYbYiSk=L>7b7>=M zLKuxnLvZ&h8iHwTCJ(7x=~;s%YIxSPUba>%)TW#4@%2H=zSozWo^_{-ALIn-g0>Qy zrC$Pj4UEC%TChI5K>B}W>*eX$;qoG|_mg8Kdl%z-34W#cRkUyayQGp9n66F-Po|4x z1llvNTwemFEVT?P?HU6+Vp9p7Mm#BPjBWV{VjZg;o@~oU@VEw*{?vbL|G@v5J>|Tm z$Kl5da1c+2`7y@d@Ap62DwJ);lQWqVF>U+L)J|CQ$Ex7G`EsISI;&cK0;W|$@_$?Q zn~YT^b*OZa1Tz-J5O@MsQz zk8#i(0Pp9ZIRMg#D(8UNDblwq`vP+9GDan0ZxA4fo>vJn0FWexBryaRV~+AN#LE!4 zjE=$xO{r2Cask|4Flc0_gfk%_vd;@=VyGB}p@JY7B?yuR$WVr0Y#_)mK!!79I72Q4 zB%L8}hM_o@0dhG*E@wyvAR`zuf*~UT`4vNc#gHo?yZj;p8)Ts~wyP4}HinhTc2&YF zIfA7UI@O{|2uYo}fb$>Rb;yI#ZdXokWek};1j zf7zZBqI0|9brm`L8sPlDvFG@b{-f#QVNn@L8+Bte!Ec1Nrv1KUjEiAh5H5_ex?CHeB< zw#xF^>&~*cD9O22l9$>{@=Qz;oS&Vrdq1=%F8;hWliU@Pgw&Yb>#QWfHj`w=Bym%c z2dpH6+DwudlLRNiB<#M{O7a!BwRKZ|zQ$Sno|GiTO0oh;oU8;N9@{Kk5r(?N!MFqXUI)Hrb6hT7+b4NqvnFLn6vgzNBIg5O5`4&rzIrNa{@ z<5!E{2K)}-7f2tTa6f+U<99lGw5gByNw0|LAc9EmU=%?J2JgP-pFbBN;<$4Zz8VW(mA+t z29db?iKKn85mf$QH2hii0_*xnf4K6(-~%Nm(~DmU z*PXa^XMd}vt^9pKlvH_NI5Dog$nS4e?ZJ4r`^fWV!8kejO9bP}_pt-tAWBpK6^WxfRp+(lJ|J&rz>8gIDa~IW5Qitm2iu+alxKTGy4N*^$x5Skn#n(@p z`Ms1mPBZjIbd2ajWCKC24Kg!DA0jgeh3aI8EGZOPAwy(rq0llJTB<^|G89&!N(zmw zK(xHl=-3i^7DvYx(X${rR->msIyRly*el+lyJhjF7&>zBAF=$3_Bq395BKho&$Vv9 z?NpPp{oT7yYvcP3+`hYifTBNcVa9pTEwx#o5e!ckS%_#0l9t-F2 z?5*KUcX<3(gnA&fEu7gSJbs(!)jVv?%-$Z(>>1AAj!-Xzc7!u~h4XhH1PAi$_n^3k z^WQ_L4?^#UGy8<|-$&7t;32q6HkqEk3*i)m_evJm^YlczW32YalsiE63r5gl5#^)!_1md(E&lp6-$lG zj8cmX)XWkElxdo@zE)ONw(n}2qFL^{g4*KJqU|rCsV#<@&Hp*~-1{yw0}TD@@8^T> z`_B8`bI*Owx#ymH?$!m*=uo6}!Sf6}Ux()zc)kwkbr9$zZS#$|3dpB*@r`It*EYTp zE$C|Vji^UgpKrvUbUoo4@e^H-_(mMS72dK$X3l2P0IZO){)7KYtBK|u%fnkN3oIfy zu`Ce944<)c0M9%XtLhQoz$(d3<=FHBlfxD#;H&#qAVsl=62P0naw0Ow-tZaysFCTn z9Utt)X+Dd!RXxao8ipQbYHXs`GMl0u017q*ZJAm%ip9-hj}5ICl4C@DWQ5H=F4|_t z#^bgo1Mq+a-L@u!qis!w(=Qk~x2+tBt`T-hC>k7BG#pur6_*bHc|mJ(Y`kxHY$mjm za^3VA3?$7nO~n=gm}J@vHj2O@RImh^icjZ0i29Z;^e7d3RD84*`Q!H(jDo^LretFRCoZ*oXwPrfA;G9r%V#O zR292GtIrK610=p4nN4>J1=y=5emU^925MkhOcskkDMgSgr>K7{g~04klf7E@V_0qC z8ANEu18rb~kEk-@BdU$5_?CbM>JBs7K)JSpRe?+ktO#2I8uUDA|8Cr*CGYcV0K|M}hrtZyJEx0VuiTeXR_NN^n|M?UgC|z?n2FuXFc+UfBH3Z5Xbc;sxl7z>;?7!`~P7tPD}2< zF4>FejjO^(+KT{ve&-mQ325#vEq1an6Fm%VW_#dUBxVFIB>S)w`hsWaH9Qn6+=fNs zbR%J8v$czU8`FT5YoFa??4?@&v{ zVn{258$H7}DjO^f$?}bYefJE>@Qq5RtIIdaLDxjzD7e|4A#uJ@F?5agjj}I1y{T4C z<289;j80|2`ZSo7)ScWM(B;}ifQ|5Npg$gY8 z*C0%m3rx;{CW?qyytb^-uRbCcxh7r`YYt*GO)Q>R1x)6;Nfa>`di`==9>XlIO|H zgUv0tVZ!9)iSo}0N?4cIMS_-}yyl5S=AKYhc!g2%1YX&`QSc*a!;mF()~sNu8(5Oa z&5%5`2YEl4Sju-qoUo&p&#pbt&>yew^MV$O!S}~&oj<+K0rVEtgx)BBdS5s2=dXXr z^n})HSU(~Kmo7o7T_uI8O0m?*Z0T!(+6sx z4+{MQXFX zwCHc?=N7!;vfZ+K3*G;|4V{GsO_zlo?RRFl!7@?!aTet^xBB?Ep-0u+Ou^OK1#pqR70;S z`7I=Nh5W3364|wvp43}o)zCb7ZxD$Z^5pjE7@SB}RHX>xk*snH;h(jyuLgNqgpA$z2=<dB(srlL0 z1y+7DwU28HeiOCJKv-1#)_M+kGKZ#B=3w9nepiW;BTW33JfTXj^k?(*s!H$2?^XWv z9tfb9Qw_bU^l>|pCw+8NS$(5skV{~79lS#v+U;R*8QItrNlgBp7DP3Ljj-Txz+ZlY zYpMFAwDo;Zs$5&E_IDQ3mi}mOUAr;6ff-co?byl~wD30{0H7KX1ZT9S*uIo&lBx;O zL3k7P&oaKSTC_AdRBO-~#N^KPIV~~%c#d|~cSpFkImj}G;cx^orio7wf}-!dgX}@h zfov$wBiF*QPvt^{@X;@_hJc8F^ptaAqiGAGnEZPqFf@We)H69Lnq${lACL9?NIHvL z;$5DD#84Y-U=~4aKuK@t0-eWziu)$}wt*2e&RE_o;R|_7zn0g*{<`3;AEN5(bFcKe z?AqfxJrKk8qLFZ6_S>b$dikAMK?bXMNr@yOt{IYXvbALy~C$iEQsgCBpGUcOhtY zpWQtvq8#v_cey8tdjNDVo^Oi4x#E$;ci|VgJ-mbBwJ<^JpiZl0sv7|boMXPtA$P0G z!t|T0xN@k-S3pKgB*bdIyTW_65c|GD7bjvpC<4cmDR7KaB}H7WVl?I;+3X14+iz3> zU`Uq(z=JFS;9)WVJV*q9#jdzaWDt}on3pnwpJBA^PJZLN*0{ zs!utwDcJF_)fBX(GC_Nnl05P^XPb}v*7suxZeJ%ZHzNkMV8kL(|NCub#LDj`>V|;@ zXyLcT5oo%BMdcS0BLJE(vg+AvXxHvA8QLcV&3|HO_cRHHvof>`hKG!9rG|Er*NX0k z;I#@vEBkMrL+mJgl+B8d!NB!7ouOY7wv(2aDz0tSAndRUU64(AFWHpeXzt}1Mm&gr zlm|I$!(~Pop;@2PR37)a?o}Gm5k8Lcb%LaKQ2OS<(m#iz!KzPBuDAB-U0hI0{x{(q zv+C0qQTj!}(%aq&o<0VO$@q?y$ppUF0pI>x1-{a>5V*iq;7fiIfs5a;eX#%>W8~tu zhGbZR10Dn~>S$qq+#uz>4#(eBUtWRNOTp65#tDQWrk@Zj{gKeq#|BHkU_~hTr;GAW z2~z$OA*GL_^e+WVzxVEoSx!hgVA_|*cx?bwS9hCq3!O}0-9!mN=N}m%f{gIH;3wd`Bmj1b&f%#V= zFG1wQtyX!Fz4enABTomBp9X%PMcjE`CMEy|77-_Ue@zKI7r1z@rX;)mTS zemGKc7f;^*B`{m(KNM!m8h?{k3N8iTQ8Op%OAG=tlAf(_E{eN4kIEcoraBQTL}s^w zN8*i~u~raI*de`aVHMr!a7bLyE_Zqiu5q{`R_02?)q$%E*K}MnaLvRu3)gI1amx$PV-onxlq=@uvLRBfpOrU))VXekh0@h&GC1-09Q<@y_i<^dC3VzZ6t+ivh6= zZKJygps|R=1XEDj!Q`1c(CdoRdYb8X0{zd3K09|K^%y%2oVxml^_*> zPd}2!=Qo@1xdK$Ttd=T51Sbk<;0yr{n^sCYDF1@~G=KV!{cH4l68;yO>0{;+;}aO4 z3ami_4~xALbqN)-?dqjei9XC^XvDw;cJbb>9TL3^2H0=(A&7qTp!z*c5)t~|2K=S5 z{45nvNzA|(fCk7*=)>h^dZZ7xu2lN)^o9R7eMt7Y61A;2ne>6&sN)|Dz?ob zcK(5O*o#~+7K(p=6JV-6LCSN3*Ojh~H0Ot*pU6U0o~T_>WDgA8Gt@D_LWROW0G_#Q zD?c4)D)DG=kiSYI8kH-cFkiC!B8>Ubzy^A!H=%71{+0{+Z#uiG^7^`U ztO*UW2YZzK|IhY7=lTtX9(nxQuJ}bjmH2&anc{b_PCt;} zjWp>V9b+Dstae;a@cZ|Ts{E4Qm*1-)zYekcci>?z7#7Rofd{M_LvUjtRu*k=ZK%K@ zMH{D2$4J~o?{*1GIKGg(z0)Kg=_CYf=>ThyWry*jAzxBb#O5(7ME|9`JfpBwVN^^` z1DZ9TKQKC?yfKaWriMj*e&HE_TLz{hKa zIuR6@8l)V+K@GM$+cf-`jp4^^G5omIP!t*)rgn-)tk_=B7#{q^oEx>ti_|b)J98FS z!U9DAOblR0K4~XLQRlaVs2aQzEnnFKXK6xy;O`T~?_zL|KOBJ{1ZQPqEE|L|ZtKdTkSdAEc zjhPa3UrEK7tP_(JMh`vV;}_{;U@q!od86LH`U=zwT9ESW(IeF1 z--LtN4q_IHXRj-NMs&nfSRicLjTIJXINzMN&$qQ-46563s)uJIrlNn+e1ve{G4dQ& z-J+Rjt=2H$B^KKx?AB7Ly!o54PD+b>7HeljdvD?w(^X(c!{7d&Khu-?Un!X`J3>r* zu?2tcil9uFYNrdq^uT}4bYCrXs9f?HUqnOk{TxNKBCub25iJDlmsv#X|N3PYVcDN5 z+0>C#Oky9!yJ?fw`59UoMDzlrzf=eiL1@oc8nKO08kH90vZ0*!)QKfl@Kb*<2PuKt>W zWC$*lXooY7pwk}pULNWR9w+Vlnofkp-5lJBm8}>`cAK3Rx?j02A z%t%XV7qvH0x~<#7jpob;>7X%2hHY0uX|O z@Sb@R+G?^cd7HDIMg$VRz=F?c8uMw1^WdAkL$3~K4Y8d9ozQD5EEQVJN2t;lS1ji* z%J4gX@iu>fU^dg}AivnAf8pUT5ar*I69pQP@{5<{7r9fwLxy_0?KRF}zIrP(^| z8lVaH#ff85%xiq1Kb6#nlR|A^zo9mluM}#71LjM$og+kjc=3K#n;T1%+T4vht`97< zwnA-$=NNu|ZhNSZxjw}B*N16+VQ@iz&1sPrum2@XACsuf!CXL+3zb=La+EYymbv=| zzcS0}BJ91xXrD+6skzNCRd{Nd`hOsD6*XQPE=ssz7T5TD_izbIv<0{md1F0XQ!=IE z^U+{KR@!Cj@#%W9%J8FUgVB8JYDw5b;O!jgRG5oXR$cB4)HSZM$sXX2Lu$?d_odph z_Z9AYw4uyZ2f@`I?YrH~)gJ8(?r7}^9i8C9!SRP+(s6LSsIJ~|mg@S2XHyVMbo4D! zygi!Z4^fbTsIWvykl+f7&Ou@ZEZ8Qh#kvLS{~cMdJz9iFM>5%?rIzYoJim^>P-+PE zn*{Z{2b1f*6K96A7FKJ&(g+YVV`Tv3p!UprAWs_%LQ$NqtcebXdg=!+hvXf}>RH`aAL>hb$=ur@^Dk zv)$EUr)$HR3s5C(1uIbx>AaH;8@boD)i&<{esXzQW7^LFu81ez6<|cQk#=ptP{DE5 zOy)R7=eQ?vOxmq;Ahi~?CtW-Jkzeicw-{QTo}c(=Z#l?ogwS8lF>Xea zR+yVnv^Y2kI1|D?nJT8mK@P>*Pwx;8p3muobkFqyg9-OyH8>ty?13)Gzj~tvK5>O0HXH3fYT}SaL<3uC`Os{n zx^F#-O3_hNg!=^zsst=`ox%?w8V@EQ3c1Ua$ougmwUcQ z&-m_wDggta-gd2D{ksSC@4omn&n=0v4q~?lVULWHpUI67TRfO;Qkv%|s-W1X%(YN! zwE`I=dp@Nq^6?NM%x%+Ip@(c&Rq$5aL2Hv?5pL-JjgJoPP;L3)`>1f-Ec`gD+GgRC zYf1l0wHHrPw%!r(^f2-BBff;=3G1DSh3lyv!nHz+Ucl}3KzrVdCSkeJP>i10ppQlG z+O1)S!OuYZR!5Us38#BakAL8biMBTVQD3nEr7M4Sx_v657o!qWJp<8cL4xm}_}b^& z+IxEZtgn*2kI@iXa{fn4aj{RWm+TQgqvn<<2C` zvxEiZbI&M;8h_Gk;Xvi$aFFVh_myT|S-Je_kRxl#kLpAWX1 z@@!A;utQqG9LK_B6$IKeZ8F;G=Y_OBOZGH6q&!TC&`G>vQW}f$B|d1?Z>lF9l!QtozNyz z`?35j0Z3HoLtF=jqzZAxNsfUQE* zqn((El&YO5Syf#-@nsioCsYTe2KtHJV@N;Oys1RAM;kXt6!@xpSU*o};sWo{!l~#| zDF?7pZdXc~nA~AKx5=BPL1#!A4{FWZ0Txom_PR1!(m@%wOEq+}?h9tVg5z7Y9+r2u z6qxjJxM(1G%bZ~Ll)7c2Qo>Upx8^l%>l>=fCE6V+qRjoKQkhG%b8zOlzu5$(7vAR{ ztu8`KR6Pq93Y8J&$j?9d6>re)eFCQ}#yfSi;o4 z`5Dwa_vq@{)36iAtu=@DGg|8D(?EbHD z36TDm%^(dzM}*~dGwui^iVZw=PnzE7ee(^Q5Ql;+gCNUPkm2X3x-nGYOSENWMn1nn z{IZc4h;D)5S=-IAfzbFL`I_EZ)CwDRb9_qq~_{Q_NQ~ZB0-Qa)Uuxj~l{4~q) z7mf0f7<^;G;O!jM@Y7~2P@6yu-t{sDZwMNU^)Jvni9tW~1S-Km*&ezAkLvtY(dDAm z4Z>^c{i=XQ^e~PLVEw<7pefa|sY4^|?L6GM-1i@ZWE+Z72|xAVJya<2NU16$X|(w; zOI3KO?_5O%D%B4CBnmMoo+zM-j=qb$)cfJ3_V_xTx@)=c_TcI2K_lJA%zutxE!Cco z6tF2VC{WVM(~Od7ZjouQJ-p!iyIhi};M*<)3La&ye!lUJXF1olOktRVSonT7py3|N zp;oeA-bh%dQq2X$hm_!gJ`2a+h(w^`u?uRrpCq5E<5$XiLF<4(#4|60w6xRCBq5zv zQ%E{{wEgJAkaYHF8tyoLg>EcFRFOkPWsfs)t zMSG*k3m#ul{--JUNTiRvNJwzND!-qQ-k3>Tx0+LDMbxb;aVJgdI&9`j#UGrhVr1t< z+i^g<>=$k~a);ur=qppC=%!Q(Asx`3P;a}tJo>)T6hynWJ5|90+ScD?vttdSEkOU7 zU7a}XJGjX_YM)N~#Y+z~Af8jU>n=Hx!&ay4+*Hf6us^DQCHl~i)ctiPI#}0|D$xIh4T?JOBq zrdh^m=9A}QO_p>rF#`ocKyIuO#Pu@Ky_AURZ#tZvc-UMxIro`+kmgMu9j4aNq?u#j z$D!EnmXMVx(M}!_5+9gi&6PyQu~c1j56e71<`kn~a!M$QoK5{+4EaeR zV4#mer(??|ZaE^iQT?a#+sw^B!GH6l>g2cW7JPvMwPE(yz5tR1urIQTrxtg@tzl*m zsag+ND&2hhaTdf^Uvni0DhR(cH;cBcM0;JPNw>nt=FBh6t&ed&xiU>=2x&&hG)_)4 z5SkBxljRcSA#usLn<`CvnZhPgR4yml-|nB(FF@NL^-Dr~x70S1{r6MZ=N53OXMe@$ z+N~vEr2NvnD$6iPril(AO|yqNpB6GrObBVpy`1K|FPXQv5YlXtX_m`0unJTKd(6Ir zK*>du(&zmos)F!jWwYjIsJ)WH6iES|GRYK4D^GK~Ow&uIfu}5Tbx)DGR-W`)ne^{3 zxR5)C=)e-!}}t|cmD(qAn_H^#+80QyX-=Wct#@wCFzwt@j@AV3#+Y!jI5=U0iiJ?<_$#!q@O9Fr zLe}0+C7vt7WPG>-5Bc;ivCUgXS(?XpY%=R3!hDx%%M(S`MVXwnL(h67?$pp|CWT9~ zQqdR4puPi4{1!EsfWV0gnvC&~q)WB84vEr*_rH~lGzV0&Wp+ntFpQn{9xovS-_{_7 z>wVHT_bNn2(2!!ZAYo218W*#j}@i zXQzSe?AQvg7GK;M?+g?o(Njg!RH`lNA&Ndl=6ac)Yi}dh zz1YhVB5x^^)S}#2y+X2u?0yeE#}Ub_5;fZsN#m8JmY`yIq7AbFss*(M?Re zoRB!6t^bkVme6#>YraUy!MXB0xWH2+m;MJiRW)97k* zFe=j;V3b4Mo=xT7Y8#@Vh1gGB?I43quh&yQkakl~cHa}@@`PVLMNUI2h|LqQo<)c6 z`iR2)wt};G&i}cVt>7cNIg6XmASBu>=ZgMv4~Og`49@rW_NxaFKgIYkHqG9ym5;?v zO|-ekPJEu~jqK;{f(zn}-eL7f9eN|&p6Y2~`l7A+0@L$6rB2__2!haIdko>%;qXTD z&)RKsGf3Bb8)-ILrfEuEOFHiXGm_2wSli|g#mCwm9h!xewWVYPHk!)S~bJ zpNrcJ+^-R@4rqs=b7Ig-9*JwiyI179kHx#3I-Y~rLCG7nTsB!PPzQvjXKIt5<*>s; zv3XQ%%wT-5Gi{i$MC_)_%0)pm%mmY}!8SY6tm&7)cmo3Rfn)UCoF;sM2GxOP@AI2Q zvsdrBE5bzMdXn;{0A8m@8Q70Rbt~2ObQQq9GMa%MhXDfyHV1dfV$K*vBx%%p%HB%i ziT6sAzHdKhC!9u`g(`)KTAmH6vA}r1U|Smk0QQv!8>#&rg>VqSe7U8l+-O5iX^~}8 zRSMf+hBLQ-{?vM(oVprdpPf$@qf~o?2Gyu)qj-NWVHNj!den(^3%#L3v6SG6@I;@bn- z!`~|Mui^_JmMsuFMe0KB4G=rGfDwC9l7G63KrCkzBi0ck4~$q}+=YnPK&gGt?Il(# z(U?>j4>j;f0FS`OIoH5v&*!QDXV6$zsW0CaGCnhDP)y=e@)YCqDyE{Pc~+5z8udj2 zaQ0ya;0>Ansm=m`dqy$<9bQ!cIB^#u00X4@JzH7@0E5UcG1r$~;1cEUQ(%-oO?M~$ zCM_2pVHw{#W$!<1W**>Bt!Y3r+WF}6pQi$ykyUUr6|9uBA;+BT8BeQ z!wSSlt5%4Q;9jq$8>u9pJ;WfrE;GsPC_oxKoI$FKVGgb(t#Oy?9e}W~VOJ3dz~~Ud zz_LrPrUS)Djhlg)T?;8Eglro9!R+K*RNkR1;+)S{*6c6**BK5=*%k0U%3`^15F;6R z2ui6+dlWNQsI=LC2ft43zxJTbzzw4pH4}p*(qBhlb(daDBk)D-g4W5ucMML8UYyFnq9jelv`Na z7=8*K3e~Q(Q5PXr{C|n~KU)0X6#vWdL)Aa^W<9S?SJ{?i3lhUm^_-$%c_&U#PR>mA ztWWE(AsK73(x~S^N57$KxoZ?PwS96%A*k=Y>@kc9QnfYNce#oSIOUbGISs6mW~ArD)REp*cTbOqfhMg5>LvyzxqcyhN)l zljAqc-F4@lK=KDhi{yVI`ALDvf$;*G206K;4PlQ_OIoN)xC_lyw21WaO(*#}|P zlfoqEcKhN4oH;v0F5!*z&!f7^3|~k8nNjt@Z7ypB9u1EFMw_Xv0>`LK6_bd=?OU-6^F=kipc|68sTu~=rM&a3OL5y+m(~wesuvY5GaL&YWnFp?p0YSY z)R4iuXn(b*t=j)(A#=QYIdeSgGQshPH0C%`=lD|Mn9hx3OEN)P5^(*FVnZCDwoM<> zR2F5&U(EL1Tbb?p>U(e0NSW&^=+QIVe=P*t^~o31Rp%V4lQzN1_GOao$L?cmwIx=t z{cI|;J@Od^^km#gmfsnnSK5!SSI7kgx`pI;-4^C}l>T{CtjzHD=M={&#PKNbXmFfN z9M=}guA7;A3Pgga6Em6PX3X)iLCo<>==rc}tihe+_(+=0aU-3Dpd8|~3cX4DT?Kpn`?Uy~-o74xtH z6yb_RGbmh<)M8CN`Vdyp0~b8ib0NhmFkrwwTR z=|HV@wpxF>@nYnTh%drKwz*Hv9Dvsh$ls`)KT}+&9A31ZN%FQ?RFUGX93*`39Uw zo{U|D`^Gto9C1Y{ari9WX|t!(e;E!Z_MDAJ3c7JQkR%>S9QZulX8_zjKDcSU#gXbJP=N6^p&~q-H zbMZW_C?%Jkr{Q@To~IY3Orz)Nc%JU*JEJINI;hV8^%;0O%bhZV-p<0?Sw$(coSvdQ z$ip+2{&%|b=we$rw*VLSgYMyQ5gzM%k{h`P;5@v(c6SOcgY88F>_sVd=z27QUeVff zpB%xlmq|D^k3tMM#G+_Gd{J7wCn*te2loIv?fn{e8ZLvcDH?DMmXJ7#(ysXxn+iKz z?g0>Dk_%f3C*fwWt7rfsWLO4Rl!ohMwYYls?*7;bDb=&X(>KB`*lg6_&1^O*ayG&_ z_h7RTEUnY+w1dy)?i4#9Np9{eayG}A_eCkqoj6SvZ=>a5=U=4;%!Gf#}}n^q~~}%qx^ll7NtO8 zS0;DGb5}ffD@y4~&)x9c4bKThDc$Hf0nZ6|?p~CVK+oOr+#Sz7ic-4Ma}PZCz;n-{ zlpgfl6VE;Id{t3OPkO!z&sX6&u_)y#dQQYM0PfqXC?%1ed*K=Pz3|i3souV*HY<~_ zPV-*x!0%V%$KFLLSJQ93@!T8F*A%7nrsr$$d<~xa6s254&wcRR2hZ0QrSzfaYw>(7 zp06uPxt5-yf7b`k`%1-vU^PtMf?m2XEv9{Crw>mr2v;>c1nJ#fa zh|Bw6CLEjO-rI97O!n+e#(Hr3)C+JHUmAGPIuE4nCO)A-fOu`ro#YXOccaB7!Y*Pa z9oWI)jLzbbv?IDVY9dXV79Tgqcmw<-aUVUOW2!RWIh%<^xs2lf#^1vOO#FQ_Mez41 znj=5{wqlF*TF&BcE)q;`py||tvC@tPllQ=tqkys>lm9pVen~R%=VbogrOEVG{3L%X zu^k9NY^(Fv#l+ty@PPhx{sx=*dw#OOZ$HV<%Ad1%cw@oZJep)JpzDqZzmjiaaMq~# z`#IgYB7KB2IFslUGVoKO`;b3E$U|Qw-~Ni5a|8|{u-P4yLl4hM?CoB7lS$m z(GJl0`yGLNgQuaal`Z&WRvKbwia_vQu#@&CqOXET3uZWs7X4V16MZyQ#HfWMn* zLbSl|E`%18kemG%{5|Y6;rC6J;IC=0`Y{o!lEB*5$%?fc3=1gMX3Pl+-M>&jesP%i zb25M32p+3^oyBwO2>veD`TG=6d&S?uy#I>7!DjxRzfIuxXrO&|c?UX(^_Cl2$uGVv}m5q}O$?Qv;Cemg;%s3m*8q-GvL#U-%^K?H;F z(aCa)s#eKji>jun-U5C{r{mp*BS{t}i(&eV3K58=c_Yq=0^fJ34FQ-ybV+O;@q{_9 zw7?Tl5QIIkf(ax)-|B)P48fo9a;=x6^yb&+x)=SKBxN<3XfC2Fx9(&+?X^R zAnuKFbz-!RVl>U^xv+45&H$I^xpcgzUTa5Slj_-(>YYz12-OIL$mI~c^`$-l?{wG2 zkn)uZ`hv$Ht`#^Hisgmlp@|2Y8Y&iuqL12befc+{{?K?ZHXLwa>baU-m9&(FO_Qs# zF&FBjSYLlg7xs=Tn0;q7iaVc#onLXGt#B=}@Vd?-UQYeeq&N~K)@((-vE`KLj;anS z_d@Y;80*3^bmXzt%dXXW8!86;#1O~|?cE7N9G41no3sKGnNMPnqrzEyoNdKZS%iDq z3N0BU1_V292jBm-k3nx(Uk5!^fZj}UJqhsv!rWGHECQGmzl-e4N^zTC5p65GvG;)l(_3PIY>g;=c$u|yOCp-d^g1KJvF)kWg56;4MkQW2P^*>Q~I0SuclPZ@%z zkBFzr$4oQkyf6r56TllRg$O8il>MGo-WsU`VMgu3s2?knWug_Pn+?Hvv@o4 z^eS%iD_SX@PHTPqc=~8lFr1(wlBZI|)1uc%*k+u5{Y~LC#Gj{8lBeYuUSpi%1y7$4 zPt62R7b%|p&|Yt3#p#NmJi(w#o(?OX!UA|2r}Olom|Gw!G0Se#<&4usI!{aRiL>}? z;%PQ+^D9~_o_^P&{CIk7V=$Z$X_q|xpm>^$BSx$^?Zhl7)~ELVJav&g&Bx#u;}juy zDkGlCK|R0XV#U*M+MI?~oN5K-2?QihClyZzU-9Rur_R&=kc&m1p1zE6`VG^}n5P_k z;w=81cp4>mxb% zQN+{J!tl3MJe|+swLpz3b=C(;&&yi;EOav4W=< z;;EkCsl959%Cu)9tT0==RAcmjm}p=!9`o8UuwP?c^c zMN(OaZmJO1y-o_K7b0`4D8wTHg{aM*jEkm3Qz8DmR4>F|xvCJWg*#^|#D=z9h?aUG zp28>2;+|B9`*E9JafK?xPg*m-Lj3QeV1ql*H zU8^KY)&?sCVi8gjE>(!amn@R_{6vL&H5Fn?J6#e}b666&36=u% zmIe49#@DC-InmDIRFQ3|cI4qB!UX2jfxlOKMJ>~u=oqZ~!i0zKumP)ixfjiU7CXw$ zIYyp71?8mcFQ(c@3s>+ImRht1hpFy&$!P`X^SUyM*Va1X+g1=;fu!_LxN;APnTc9I z)F7-n<0|f5B)%c%wl@ZUJp2ge(@l=>^_N3d7Dw1OTX%%5FLg)Qa}XT~%AWkK=FmZx zcR?}glU4u|)<*-kxtP|u;3$4_<*%#21^czQFh_)cIEhPx+zXw>V${SNH8`_Vn06+v z8OY^aZ(?njg|#(yQPxuJCWAlg7s2?;ouT(Uwv86*Fhf*K(erpeHjilPJ&yq~=AOrm zmr*B2Y|7x!-XJ%ewn%71eLaVkGWBa;d26DL(XeOgeWSW0=pcNjb;3&wY)Y97!4q$N zK*E+YlciRS<5369N0$2FKpUh7X)z}m(cekXhww)o`kdr=e3IrlCALmGi~)&c@36(( z0nMFt1hLspo#Sa3aI)BS>%lH`Ul4neR0v8FfyDHW?(MiourX{ago)SqZb@u3<&SF& zUA=XBQ`$IjKOFQ>R_A#i%8L1BITJjX9t%-A-HpWrGW7k5NWcgpw|7DJ#6$kt*roW< z?y~jcUs62B8w zhHjMyc_2{xP%Obg-=9kPlmJT;d2bW4&L_c`Kdt9f3>%cEM zvQ!EIoXE1pePRdFPOo-W@KQ`%a`y8GDRS{W3P4w%9UFeu`w$f*tQ`B|N(6nF|ApqF z(3jJMG9U=4ibfX^c}sC06R~zGZim^bxWph8_e?DqNpw9$5$0^Bq8UddBHopM3=2uo z(dAwy?FNmNq*=nUjK*Nm-Hs$|k>`yX+Kp_=F70rA#1uZHZf1*|rrp-lxKt($Ey;aN zx8+knA(NV6!~o(khvbURv>uDjaPo#9x6up+v2PpAk)yhW!p0HZ@ivsoU5~oSR*Iru zto{p~-;Kf$@6xW+`E^vz?|KTQOMYASGWfl}8%Z!Izwb50O7EU z8Q~cb5TQqO&v#|2Zs3%8ljMEZ|rEWJ+H9=GdATk z!+b6hY?sZ^Nt~1X7k{x9$njw=)_NNID{{Jpv;on!+5dO_Mqe}*4l-nE=QU8X1LUoX>>^pj+IlD@#f zkp3D<&!WSEXV_1R+(NIP<3$i*m-b+I2=bcM&M4=hcvCq|itZ<`ri#xh?TJ}lj;OG( z(D`pC0$97WopnOsf9ItJ|1C}YZ;3SI7tmxOGQ9{UaIrRKc0+lCe71VqlP2Y1Ty$UUN;JVJ`9q}rer_W)5 z7nU6dIZjP8^O3p~sc#gmS<(Tdju4e3X&X`_)}3?&sWBI6m$q1>UaqI^&Z$oz^;lt~ zlV~#E4cC+CX)@n{Xk6i~jQELC-$1F$b2#HJoRroiecMT}-2zD$G!#keAt|hTQX3?N z)4WS-Ba-&wq*rp%E=W3EXdI@);vAF+k+eOMLf?|EL(=w?^m|xM-5^WvQ&#NzV$d&9 zos!V?ZKIUh8|Z_uzfgreo*HY^k29u*?BxcP){kzA<0|WS=={!Y&Ib5wnBw==%G-~Z zsfR8b-qmqN{YbmAQh#AC414wUBXoYpU&Q>T==@fJ@6sj)zfX2B_)V%`DZcw*m;X(E z_cvmGpYnZOz5n{rT?@_`ROu1d`w6ScBg`+E>c& zRM_Ev6W^f?7~iWy;rDx!e}213AEwl;R3A3N`u>~zzR-gCeek@(w+j6|WAbwjnd)0% z<@`1ciC=U3zYv{((Cgo~B4&v8|1ZUVugdMkeqoHcKXm2_LqE>fsTA*_wf|kbAB|wV zTj~5((SOS})jxMTgWo9ZU|dOm=mpsM>h&XJfA|6k@1%2xiO9}S(`xtWkV z4Zf$u8ubuPhPgxZGwi4C4?iT+lRtd-<(!`U;XSpv+(G=|Hz@tT;13U#y}y}fl|EHb zAI3H}%DLk*qnx=HR4Sj^iqC(ky;Sv=&copLy>sRI|0?a0F6Hv1ss3JksUa7C{}=5< z_4*WgeVtlQ>c7r!Y~}oZhJi4}Z<%nsIDYZ+z)JCb0d}`~ei3a!v?CdM6y-#PL}*2G zSA6Y593_8q9724eeyDjK=B>Sh#0xTIiCiF{sz^5#FX$gEUa%M=b*fm8nySaOwTxoH zl{Ht7T`L?l$a;9;4b;stlf^b{}H6~mekJYJAQ zBtnT7Nc>j7`9{1&v-BPiynAhDAc zm#_#12q0m9=x8O7xK5CuUJjFZUy{fIiG)j-i)@gX-G;G5r=5H60C;#TqIA2ozhF)m zmZx$0O(H!agP;f!d2NYAffyeEl`CjznjW|rfB-AvvG`JiBIycpZxcBs7XsZs9#9i~ zUf7sx=!`!s^5FParXdC+{*_BJ5T#k^b}<8x2-de=Vwe>_eLe^CYS!m$NrLqGL~AAi z#KZF?39|U2#V{fu#Y95s^CX#`^!YlIK9@^P2(Hh$L_*=VFbHlnkAMAIo6)=acV&;O zXx|%|`!6O#;Jw%Y&d(ligx##(zJ+d&+tp%zAN(x@eqV|<1YKXEOoD!_b*20^4T)c~ z|F;6B$uWYaUWt&n+VxY9h|~OaJ>t(n@jcS1+VU$@HeZBn*T0cpQQtQI6$;ib#(b-@ z7w^D;+MKoDW0BDX`+VPW)f-0>q}^kWLTg%z_8Z#|d&3)x;?N$UqIZ50z4L=q%?7~2 z3+&6T2U(_Yi$P(P@X!Q>-4_ucf&z>O_GXk6>gW_~I)yBQLZPTUfO5epQGCP!qXvZ;IuH3eg?R>rGompNrFi9x&ch5dg`SE+d4FcWV-86Aw({Fo*4aeW(_&bQdR^Rmu8-u@R@plw|?V!>( z<4@Tty4JA%oR4H9Pi8_Tmox(Q;1-EF$g#JA6yIu;H znZjw(3(vw%FJPVinfHjj4)eX3QjlUS&Kaano_zSBW z>|ZVZvGxUZ!c7WQLw!0f^{K~kL!V0WE5dE_pO*R*c}KLc$Br_KJ${MCYS zgTjjjg{20Cbh8*wo>HaA3sag{Y*4t_pfJv$kZGo{Oi@tY&__n{c1H3xM)GWP^1Jlp zmFm$8sP*6D?{ckYSQh@?z+V~ul#0|)Ki;m(_9m*_(2rm8EBe~z-%Sx3vNtIgvc1VZ zF6>PrE+%`kf~NAbo?L&SUQ_@6O|NGbd-L!~g>Z9_=equZLBVEFSZh$Qn;}ZoDeTwV z?KK94JyALjGYtySW(o~-3JY}#>kJAWgF>P~A;wH$JB%}H`(T~IW`jbqLE-eTIu3DW z3iEUdjdTh-3<{%~>!sLzLZ@JB3Pn1FPYepf zjMl?tP(Y{0ps@ZIg@e(095g62F(}kEC}3+@gTezk1*6t~Wl$(J^kMTaIu4fB;~Jg9 zM!n8{Yf$hS6y_Qfu!_dQs zr>Qu<#!!bma^O|G_oKr*0*5c-Jj)DyF9rFYnn$t0C~ZH$&pJy@5Yo7od9xyjt|M z;&sy~9WVLCA3fw3{{ddT4hF$%)|Zvy)#=je@!Ap{5?-I5@WU$-c%AvPBX23XxV}GL zV=-I>yngC##jDFm9WVLC7WKt{fLHwkLGVibqEfuhx2+zp$68d4m!0+Nm0$eu68bel z>Q`2TKVBy>Tn4;WC0OzD4cGCKUp%J1_z&lRcxF23N zs*h7~nk8*nn^?~uudm_l0I&I&GDthID*IJBOvg)pajW{`KfvqtPlMof43)GJ`}GXA zkEzan^@yq(uSTq21CIIO)fjl)K1}LYL|uQpW?{Guc#XoeZ8Kia4b}0IU-VF4{0Dg5 z`$-VI)}oSDg4dKwfR~8x^7-uRWw0IoYZg4v>=>6PJiK`|c;$pAX2j<{K#gRRax-Yo zVp=T&*skt?fdx#fb!dC*_~Z60hUf2(39j*SwONev=x1X>~*sO0| z(skVA7hBX9{{e3G_XWW%6-KTSeLH_q_4V_yCL!VVispwGwU=cIudLesc$H$H1bD5& zLSZvrzQHrY z7#u}Oj(#4kI1&r##L9ubW{z4hM~ON|Gxqvp^hyK9DACH%f?|cyPv|{aILeV6H8OE@ ziR36l=V%3zF-HAzC$hvYrH{OW9a`Vn-||Xdg@G2MXGiCyTC%%LX7>yhk|~k2m)VtN zC;*&#cKua$9XY#n?UM)mvwLTiDqVg5>^?uvcy~5s7caA$sb{wzYRIKa${o+8>%rM& zY7+vo>#Jw?6w+BrH(zGA?gm-9=FZ|?GP{N{yWHD2s{tyjYdNcI?aclDB|ET^OGZoQ zOj_iS*<`3}uyn4k%;u$045C^(N0V3_w38WDsG(wF$Rb|s5M|jfBmbC#YH~a~CQD-T zP_V$wG7g<0Fmb;00aRhJSw?SLp*SzWd-464G>ttorWKs>i9IvqI>KdGKCqgoX}kB3 zu3|kC9;iwWcDbYF&I(%{jW8OOWykgy(YVIoihVS)*vn3=3> zTxU$&=4ezajJDF)tPi`(T?-uGb(46*Y84XMjji@XKKXD1nhuMlD2Eilqd%j@1lajh%=!d+y^#VHil zmt@Dq85Fz)MrRzo*$b|_!(ABs>M&l zmuC;FMD5cI<4yzxSS6B8D)BfFB9$OIIL|yuR|n&TRTXT7Zcqo}SE5Kt9tB>gLwP?F z-KTWAYv6NO~&f;f4kXXEB*by#fZk-ji zc+is#g1-({p?_*#mdT{he4ap)GC-=}vi-`WWZ4Q|hVG&KYcR19x(BPWxI-6dPmWv) zeVYMN+N>R{ZwIOHuqVS|PoN8do9{ru;C{)p2=Dd-ObW2?P)K2tJZTQ(q$64{B{}&a)|o3LlkA zvpPj*F8?dEB^VZ?j$Qk!^v!wB5%1>BdCvX8YS<647FNR)le&Bl;H;KuQa@c4tuL(_ zV=H_FIk6sMiq6HcSUqMdxRcazkcqx#p|7iCT_Y3g7uHOwP|I=u~w4p;Y0TavxkYKpTZt~x%L0AJ^X8yp}4Sz$NBN!vWLH5 zKS*vW4SRU_z2Nq6s&o_9Ah-}{5Bo?(VSD(aLsvrMg;h6nd)Nv^s@xtrb-KFpxeemR zTPyJ@6tBNjykUcbC|({Zo?n}6wTCp@4nv%l{cf={sOT8s$nU7h?89;YNL#i?^@^f$ zC(=1i?1g^V7M8B>c-n$tyW!Dmc`KB|yQMZ+0h4POC0)Zlh)^j1dL5|HDjf>v+F3bi{tF} zPJBjdx0`suU?ixKiqqEXmWar}Sj!RHat3pbDZB4vc6$b? z(ixqV%-r!%l?={KqwMAflZO;vX2tQ?csjg#4_&dMz!t1Qmy6lHZR zpk!}IApJTk{bV+8BBr50{6l8*X9}0f+*!ev2(;}o?ZJ#179+Q_wc7KL{fk$mEgFnN zIM{aFX)7fCKub2YmGUoUU~3-sXA5JMf6;n_)xWqC{srvnW7CD1jey%=$KyPHB+nxT zkJI@v4v+D8%;LvHJUZ|=njc+wOvhsiKW5-D6OX<5Q8={!%=1Xbrj^1-TRe|TFRaA# zkh=lCOtSDs)d3ppWHd#0Ksg*MJL?VyP4c!l94WFZw11GY^XA^bPwd-F9@**?grRFRPItOVLOT|cLVHX zE8K-*dR^aXt=F;q7n7xje@Qz6F3u(4N1%fefnVVgijC^&mbIrg?3~y@>#m!q+G9p4 zR=?6-6VEjl`=r=g17rAl@zgkEyD*47LvDQe3@!WcM$JZfIfeHVC4_jbYbUjpQDjLgH!Oi*c{M?Pn^Yd!AaS#U@X6)tF4fHMX&3K=K46WOq+9pl?g;-nIc7* zCSenXu@SDqFLJM3y%g`X^B-ABMN%j(x``-ud2O7k<;Lf#_)D9K;$Ke-F@qNWDVh!C zjmo2yZUV4}(H~$PjMut#47z{Nq@USa8`?gdor zLf$_VTZY;JgDYCg`t5HYnF9Y^LZ1*5;d?(px|tK{a$~R1`SepnIgW}_+l4L=ZfK7_ z!X}8<7PHW(sgTJ>7qUzO`X$&n@d6=~@+cOHLpuY%SQ&BEP^3hy8CDHty{)LX}np@U2s^yKkh?Z}Q-sFzY4SDW~)8+ZQzdUPc3_=;=3xPe$S~TQi z+3l)H4_%(tmsWY&3LivHZ0u*+3Of3Lev-TH-is zn7Wkr_6_3MSJtJp=uc?z(j6s?+rAAX8dH1?dk-gc(86pxQ;*ASi0r>hzM@ zB_dWF5RHF9@97=IcY5SY+rtIii(Wn}Mqg7%ARc8Q#o(UaU)^-E8856NvlY$-bykSB zwt}BYAJbArHJ%(Zz$m!DqWywgIu7w&-BD z1E=Td<6w(Q8MC$Pltr=G3ZF(^(gD4UtU>reZEX0o2MXDyx2tId2aWj?dC$rCJmj%^@t zZ7iB=V;@iE^AXyl3G!EbrW<_z(N6KXP)q?aZG(A-OfSJuQgM zaD&Y^+A1iM{Mo!ovbpVAgUywa&1O2AjdeC}Gqd?2vq@H3n|6yu>bFG*G#3Z3xt`e^ zqSzdVlk6m#7wBw03vbwh=D}TzW{io=b&}1=y%n0bAsM4N#a8&Nj^<`&^EF~~_F$ub z1CZ9&6Kr<%W0RFL3mriy=SvMGqVM7KI>~BAj6(D`(HxqTGflFZ+s8n3yJU64)r!@% zNXD$*WoC5`vsz57P8e!oHHujs5VXGEe6e8l3~dlX!jCXmeY=ff)#cCX#+{7n&T9-- z_eoYS)LCt!vpT~p{Lh)y?ZoQ6<1NC!qpm>pM!1<~Q_83oi$UY4!HU(f=zvI6YwN5& z1F9AUxJt6xMzM;J&tb{xq+X0_?j4NiExEUHH9Ep9lK-ilP9-!Ei_~{Ke*Y<-Xes=5 zcRjv?LHVG!0m^qWr&=^8=uC4G6A;C^- z!UO&Hqi_vZJE)|sms|b!PVB!29bXdTO4}Uqpo@{m?uO^3;Rn;eQ5J@yv(<2PmesG% z)E?}@o>!K|ub)syXh9SSI=Ek7fH`WYVEt%?t?=tl$>x+sjQ(h?`}G0+wA+s`I86|k zVfW1(!1=-Aev?zs>k8e4v%d6mxMV*q*H-Xq=>0T{e;soFyY5~t!ksIXe5cw9UxFME zJUUxP$d|?sVS8AYi%`RP{P3E$t@0i1s$~4o7?_6R-F>SgksNOa{!|=q?kyrDDB^hd zSp@Kqs205SZlPgcs;pyLy+m*Hyy$(oZF1Om8a0 za?1r2)0+~yW^g}VA5X!I*__xI+Kn~FJf5<4A8EoaIi51^edvRjLB&G=GDu!G1~q&C zD*qt>`y$vdF&C`6Fb$^hlv|msb{sJZ6}@f%Dm3WPt2->FNOm6eoU_a1;VKT4+r)u6J{eYaN4lHihel?2<;*h5-8Gye&;p3?SS z;R6DHt%10 z*!rA}L)xjl!HRk}71d@@)_2}fMZHCKvBcKE7qlfNS$h&F9O!O=y~ zZB*XvfhDCke_B<&eqCD8{QPf;4eD=6{0ZVsc7}73dS2TcxUnV+<^`wJYgf_ zwZ?0ey^Po1jbhhNY$<#S8ChJam$q{Yv>TBKVK4#Lesa#xU`EFSF7%>vx3WuhpRG`A zb}5dMI>3xZYf}dh8r;*z_TR`ryX!B(>rx@#0`VKo8(EKcw6!{Ui>U13c=ARK3L~av z!jT^`-}3QKj63kLLQbG-;k%LKySd^U;qxyf-{It{zJr~{y!x+((C^+ltftYd|$ns2Kl~PIpO)f z$XU1Qim+y*u=v_ke96XlLQaHRBq_&sooR9m-Hy(&RwB(EPE_)IqU}Xp$iFsB7z-TL z44Y3tw&MJ?cA!_SIZ*a2C)RE?WuksRx53;P?Ry(V;XO|(s3;Xwl#0k%JzUBj z^d}9Mn7mMOiSux+Y%Y~}M{}vB$Fds~V{|yg49z1C>j6pH=bx*UQ$PP)r0t=d zU_mGF(^@8Q69~9&k%O97+U7rpkCJUKZnot=hC4QtU*W6`7G2jDxLwJVa!bUzB$68% zNyyEG_$|4X^j{|C8`!aJcZ93=^>*RBy7HY75#r1~%K+}{T9jWGFMcE4e(EWI_DV5X(GEipw zwD8-Y?E$RZz1$v*cEBG0%zY778||Ujlt_d>I4GJ0KqsSU>pS_M!}NgL7c46AgzVn5 z=^z{HiJ0;N3e;FnisMEvXDHM$U5;Z&$YC*PwfPBrst-MMKsO3@Bk&6yGHOE2uCaqu z6$Q+}Tzu%On%N@Ew*{Z{@2u@--VguKp5G?pJwskq;5D%oUdsA>&+kF(c{UuO)rpX# z*7{kiKDUEDqXUe=X_~B$*)H20aWGC{6Y(P^cE|ri3;)<9!7cn(59-PtVBsH;9^h!i zBLX|AxhR6w!q17;mD~DKmlV&zmlnQ>t>8rUT3vmA=4Vj{l|QrlWr#pHCtY%HHTp9c zB@WZVI{5czKAs2tg`+Ke&ZU6a;-W8P%34Mo)R@*a!RN%(4yf@i?WN10#^j=J<=o;$ z@5#Zvr%jaGqgVRpmM(M4ebkaovdrcbI{B*Ww@qf#M`mLyyivA>vg>E=SFmOW>i2s1 zCuVyPbIkgD^0@Um3@5!ghKU}3exGl5rG`boSK5SYs^^C2RL{;-Tfgx4@#yj#O7-kd z&OaA1^@3DSQO1=>|N-ztqPmiuUDPgxlNPv*VlGo zU;Ny1oZkW;>&8v4{5~Ikf^5*UT7qkuXCDsRiF^dNOgzog1cd1sy=8O+iEtuSs}B2Y zZP-7ut*SNA*{e>2+@`Ml4H(DQYULg?kw3PV$?w5clHZ71GkJQ>?XJilA|>dsZ(@k_ zJML!sk+@3wwQ*~vPtUpSnSRdw#Cp{%Ke>ZR&cv1An2M{SS08ZDb8alKz(Kejc1U9N zx%{sDpH1aob2$n_%6c2ZOim-iaHG331;S%o6+ zNt6xbor+jd#w!_D!pn)P883RSAzpP6^r;4~Z%M7mp5SW2 z>wP>1$LkH!bKRc2gWgRj`sI=KWU^sTZuYY$^laFZ3=j_8o_x85vHJ*DslM;xR>4Q= zOV5TqIm6~ERC_XJKhy7ntEArzw`ThEY|wwQX7t~Z^t}fCxqkHN*`VL6X7oF5W&R^^ zRrV0KX8vpA*`Qxjdn@^mH2AOW$3H#Sq&k%CWR`d0O4VT_u8LnWAM{+q>hNdR%BsU| z-G02V8QG#f@=YULWqj8>2pi+P-$!#HDM5s}x8r+^PbS!qT%*A8OXVrtV|% zop6=p+u_zso}T})yuXy}e`K)#t{?mKToZYpk>>BPG=Ka3%pX11P~P?8tC#o24J_{$ zaW%<%5gr5NodSO<@}h{I2DhhI zuYH86JN7A!Fe{{|0 zza^E+i>u^+u1UWLetI_Op9#|5RKfpRYL$V{Gq_6nkK)#h4?P?7pR5`ESrY%T2L40+ z@TX^kez5kk3jUj~V*dYFsq_CcZq5ADvq3*tdszkjzob3-%CJZK{p=Av8}x&r|`z; zZ_WuZzIPuR)W|WoQg3>=$(mAcnx1nnr|4xjL@y^U3@Lv3DrT-%SH54Vp+@;W!PQj0 z&3FtbpXgt$p=Mj}UyW`Mnm=$K!H5bu23M&N*W=c#5cF*L17RQ>x<4@aT_&G~t0dnS zw`TJ6Z0Pgz^#j}MD*A74N%p-4`*Z!+r)Pt{vu5=BuVDT!!&UO%3b$td>Di$FO+=0O z-!0p_w{ey9U%;)IK0O=s=hTq?|D*0pz@sR(wi7TAkT3y>1O*8g6lIGb5;mOyLVCzV zqJl&LiHHaa8Zglyi-bvF#%3hATv6eQUa#VU;&L?zYFH#7J1T<8qM~+WF`zq& zRCo1ECfoP@_xYbc&oim2?yk2_opb8cskJ5jD;51OgwRiEh2Nom_+#E;{tQGY>F?gVGAWLm2!T_~ViK(@p75#}NIY zw8CFkKYx3nl#>W4pNCF7?fl=y=Xwc}G-;eQ)u{HP}S zCI6=)H0ejwjz1o0g`ZzP{0Xlx{V50~em_JB-!TuYz(wkFUW047N#+=5JAQ|w{g8-= zS_Vr76f=H1gc83cqM`WBaZTZWDCS@=L|Z%lLMWf;FDU&SFZI(-|81nB7X4%Ej^9k` z=W(S!-%0(k;~xytAzHRCTp%0$jzX+(z(OWD#%!2V(^wLau!74FiBR(B^vhLwbPCs0 z8J^~Mz@Oy7sv7Vsq>T3?BnNzVh=9on-%bMVMT1s@F=#b$V$gUC^s}kL7fTu}`mHgn zUt5#U>L`S6M3{xcyt`O0N6QrhuP4T0`3sh2m*WwwG{wm)vzI0&L(eol>elyDBD7vO zZnN+(ouHBPySdi}0Wh^Oqs`Y9(K#}d*l;){Uv zoeeCt&M*dVJ3xyD@yQSE4(&WoVBn3&?eWiQhBa97VqkF|7Mb`*H1klFOe6NA-L#bZ zhRFmyBoRAra!X26Hp8MJV@_fc{lnr@Y!kuThUigqp9DSluqWtA&o)l&p%(_?#*d+e z)3`A0^Z~4mj%xH}SENT~)53%|hDAi^_&|uGa5X^b(DkJOak6ttmMFuj+&mb#G^-~W4+FWM0B2}$9npwlz1G2@UP4IqnDjtcV2E6JXYk`nko0O4+u24` z7%5Z8@2xw9{Op3hp`4{0l|GEs1~1uXjQDqKL=k;kB|sWSUst(44~5gEO6G4QO{L|Z z1im*Q0lNeof@hz6$?Z>Nkbff(ek-hM5Ml>z5?DilncY|DM4eXUz2h#Nw z+9we0&x>~Y^6(X!m}f;64SN&vcyEF~uQRQVEyXcF(Hc=VMr?VJ>-seR2-^PvB5oQf zmICu>0p4So>db8Y50CyWs3}@O?~24ip=i`1kAGUMR_cnEtLv^B;+vL`PHIj6lIfol z%dwk*oOCQC*62b8{mZ0(S%5p)^<ZV1lml85Z9H9ivLb7kH9f`U$E-PE8*Nm3ugo*P!=5lrx6Tfz|Z$H9fKtMJ!09 zjkXl7qOkw(In6bHBh9-B%l$#{(e`vEjku-n<=qv_Pm^lVVVJzEeFN4LAIe?n!KKbb z4eBXv&>$uC==dg&*sX!RCN3aO1Fy>w#fvA$YPxYW%7afaV!!C$9{qHBmoskfrpE4d zCmMSC|E=j~JdV^eZv9Yt;b|P;q@VAq{6Y(ij@Bwm-TnX0J&}&;(bwJO7j50ShFYN2 zagYytRvPrVpLG4<3U`-MvvNH+-Ho-P4^D%Mk^Zfq66`(4<;>Pir*<#$EGqaFSAS`!_5VBFkqUi0b3 zTV0KQ(V9!!<^^FoFa4KPrinsVsOzOReOk3-v+q z@>0CKbdf%&t-RD$UIHEK6O6}4K!wR(LuW_J%}Y?(>f4L2H2o|T_0Q)mBP}XYNNLbU zCizmabt2X2OU2el7}zWDCP(bxq*IO-sYw$Z_wS3I=$KQ2hj7tJ7oE0?s7J^Xv8_uvoPws!Kf7Gh zZ*yw;90)4cAXA4Enax%?1vI2&y8EBb!2xlyHO@7T;^P@9&;T^V>4%N@Uv^;~b}nF$ z-OH`;hnhZn9~FUK45djqOzm(-kA4MQ)x+ea1UJLvt$6hEqvv__sfXP<@P171@`KyE z5ti*3THzD0Y(Kg61L=iFa$xdjXUX&ML~D%W5oK%qSMCY0HNEh7&cO68zq{A{-Edf- z)$g#+XplcKO`Py{)AgxnkUudSWXFOG_=IkKyYby*YLo*}r!FNKq*%O4H+eNX1Fj5o z_+eC@s{G1Co{X^kLN?}?aXc))@DXu;%4Uy#r$#)32UahhdHhrHg1_Be&S_{4G&Bcb zn%j|D38s-*37k6c;r+;Pc30%)0hV`wUVd8^@Aq;!49Wm=alSG>k;%tnD z`~2}cxMQrwf3s?fu-f`PdYP!-Ts3-a(fnzs8H2fI_|sy2X{Z-bw{;|$42B^}bK(a> zlty(Tl`n(!X;9a+N%&=x(Yf#Uzd~(vt@e5F(i-ivFwa*DyS(^%R3?2eEF=7VTqo-> z#Fu(?hy@NRKDQ6#&4k<12clt(sg*eXteqPrsO-v4h!&FUu?EwTAswz{p9{rzW#dww zyp-k3p9{tJ=lk&Am%kAIHGlqc3QF_IH%fEo)#G)xK z-vU8P;7NM3JFtiXV=(97J^*$BA_v7O#{}dclE|lq!${vt7rXSRn^vtpz4pxia}FjA z`ZHAhApctXbJ)@;`*U0b(O6)R-0^A8cepS!Q^CI%S5-XcYAVxC!;n@ zMs1j!jb9$r>JnUr4$K8JHUBFl5#zPr{;I?#7HT)RdnMbBg2cCQTeKf^8~&NP-4x%4 zw{D;BwwjlR(|)N$3i{wlOg5$=MaPV&uAu%q`5aESe%mCsJ}28Fx@~B0(2|(#O>i&J zgLbF6+usPiG3IJ$@ulgB-ylU#rhVKPVQf{>;*sVsJ6OA^9dx7XIqxs=ppr)U5 z>nEs3=lukx^mxPc{^%B-(HyD2pckmYSO)h3wf^UF&0gRc4UGf}Hzaxjw|90^ zEpuahjYmIR{#J=D--yHnPheVx+YfK3bf|gfLYMF61T8QvPs4T1yzakHTwT3f6lWA} zq;dv-Yu_k5{`6*X<0jk~EN@)kyD7oHxE$Agi+>Y$7gvZx1PwO%7tTuTJW<3ui+EQNrz4?!i|JGu0BIDI=99m|7JM1zJVMNxALC#2AaASBj zk48Ly8%l{M5|@)CP|1$Sw2&JV^K(k;1&Jgte#cm+-%Ba+8ZSu@cCR3jWC)i!!{?0W2+9>w?`=_K7tvhGog z?~#rY-;?QHK&QZ%l)|#e;%gKbBjhz7668n@p)@d8(KCW;6k|-%NWv@@&+as$@BJ0e zE==4<&%#jRvwj#0>s5L5yk3>$BIx3V-%EkfC0^Ldg^7lIT8*#KqvEO`+bZ#Bg!yPi z*hj@xzn22zi`EiVD00xK9ifV=elG>atLCFZy)C=0=@ocTT=TD?z{sZu#R%|HVdhOY z$2Hc4;|SytcGdW=s3SBUz4tN8d8G$68kp`&W7GJ>21Ye90$;&e`e!CMeKXNBo|z2u zG3O^?L!&106A@$} z{cG5GM%};{$#~)-8_%sqT4Drw6Jj1A%=rKs28R6^vH0X!$e1cxUuQA5zL^O$H57=+ zEFx`+?zIIE`?O}Bz@%8WKi%GPq@(3XN2{8Z?1s7pwYbgD;(DmX&C7E8hvSxPKwW-^ z%Qrkh3#<}K<;OuFR-@b8cYT82NBZRRy-UjBBc<~B$ocpCN<@64h?55SeB1C}3#`~h z0SJTtAlu^f2tn2=(k3@vVQcT3yYLb%P@EvRJsg?Lmfa!9TB3;?=fk~0tw}?}7iU~R zLMzG=H++*sP$YE4?;~BoBcJdibNLY;UtGl(i}<2Y9<*-HT#6jJXr^d{svvPLkxwK2 zVx+1du>ffdR-v7XCChlFliE2PPT~%XOs0mf4K5&_MZRN&S{0iW-S- z7g|Eh-1z5HnmSUmeDjH|c!Ky!9kV?De2U7O#Ann=_TmV@X_P6|e&DegOo%y~fYRax_|Va>lLHGY&CKA!?(Y)fHx z1A^^AW|y86SN-!TFnY-+eZ>7LPl~Jl`4kvUQQtxsEd{21X zK79o)_;r%EPZu>vC-M4pQG@gn5f?Q`C*k>YQG@*YVI%-&Adqk*NuOR$*Zq1l@vzhz zi$LBc$@=toy6)GL_;#|oO_KKMPQI;ikikJF1%aq1Vuc~h;)|0+;LYY#9zQaTADPP+ zNmR%;hA$TJ#U&I#g@z_bqZd3FkB(4X=Z^|>As(^%U>b&(r@`EH`o+Q1Na!e9b4WC< z?8fX7Dl5$%VV0sh1Jg=EqpGd^9uP1 zf2S_<7vC=s0+i#2B^V1s{gNZ=)`%Gf4l#p4BWHeB7H&&F$Ccr8WgBndgg0}*3nS=5 z#ef$^(1*$auj^xtfA%v6yl}LB{vBd^BLg#<8Abu_U~+5|4NztMPv$o+{a@36vR#-; zP>sKczLlJhdVId%8}+cOn~xHso&V~KS*Z61C(&>qrl!PbCk6wr!nL0AT2E>WaIF`v zT`jL&EwA;)wQJ)VMa;?y%-t@o&myq6PSt|WdasOm2s+f$1avl5` z%;KAi9sF0|a)Q%$FT{Os2HcBGwp#Z(aV-l7t(%eY89E8KvnTrTn4Bxh^s~^%_=bw+ z*LWkD3Z0rvglGDOCKKVe_=fhydIzT#z(=bCctF#Ki;4Saji=-d99;&d`QB{f&GXF` zgXo8CvfOxUh^DUgDUrnlqjW1kF}EEp#sjI~@%Uk7hiwLXi2l3Ve@`)HuwyZUP3J6% z8SK%H_OO;}q|I)BXvQMUdJECcm?LdTU(mdTSjvH+ICG{4>n(Wx8m`h1x!j`q`D=5Y zCo25>wa1ZquA2F4t@0Ch|6k<%wFfISY?C{rNVU#iH_52Q{xo~Gs{IM`eR>!V^ZWD| zujg6a*LGY->#0u zL&l#s(h{U{F^NEnhPq&^1e}byzX|DRa~#oz?`3VtF{L&%`e-xq?)|q#AH@=pUp4=O zvHo$=9*g7F@Gx;0o#pM{88eHsK!^_QM;3xn~x(cOBu*1Jcol7;9QJSY?gtR?;ZK z>dsi52#YKwiPV9?EL6nJM*A7%uomF>xL7b6EAJtB3>SzsFu`9|FM2JnPsCsNrOoIQ z@eF=t`1OY7>(RrkaPz{=+#u-%RgEAD)C)w7H(XhdD zA`hly{nU%Be4M(J=tGKOjLOHU*GZ`g2(j|8H*;nI=XB` z@qtPzV%YL6%I7vt_b{9lz8VJ zE)jXc#!E6mUbFGEO!z3VkP~TH#ylBIHu7XFmPwzCq$MRt;|iv>><0A4w}r7kPP6G= zKG!VPT)e7sR31t(JiBt#Bv3qDGoJqfOD+&gGVc0Zh+=rOaqezVeR@M=PV*0lJQ^82 zH4Iiy>Y-CKQg)q@`W1+};9mM$8A9l8k!yE4sb_U@M7c^LSvBpQAmrIx=36mHe zM)4P}gjml>^gS0$UxIOPvPqUE@jiD`39FD59n!Q(QV06Z1k;yk%-I8jOq18S9Eml)xyz(D zPXg~rt%>5G@;45~NBJ$ZWQkT#BO3L0Z2I}rOdCJ**A)T7=nqJcoMrUnNV0JSM`Dcx z>un|SZ5LK~TTT2;F!?K{AS<7m3luUSS;oz~*_0$3YbOe`hspo9DaNLR2qPVNd1w_K zQRNX<%b0bxQr6f6G%J*8Ix&9KSGyDr1{=bb`0$;R(HME#647UBvUI#ZwK)%XTgUeJ3cF9<){xYj~5_37#w z(PVo_wywXRRoQQT2S*!hm+F(F!W{;y%Xe%gXrD4J3PHX{^V+*S&8BD_t;aH{2IMq)WcAIz4=*P z@@G)~7pY!^<{$TYUGi@hZ?a2H{W( z3|L0{uvG*~D8~Kz`UW+@wWhv7SPQ4FVPIxG7UIWZAwCwD%hmboe8b{#F@Y{7*e-Uq zn_f|i!q{KIza!2t{!!CuycjP3qH6dTtpD+pe?qwYzlbG0!R=Kw_D3jjdjg^H z4r%``6<>4MY@9(ofKZ%5C}OBW85&qam9YF5S}cyvC+(#4gFJ3iORi%cB~hC?6^-Mf zX(VOZAKd#iY-_1AfyUuzF|iguQA}cYMl=b(Wc-|%2-omz6MELKW#E^IUluN7&0yTA z-^Jx@B=a=CZ!VC?TC)UuZNUsV%@BuQc(02WPn zP&015MZM3mxK;3n2ec&Py=!fp!1rKcI%P{v#B@P1HsLiWSuAq`u>|}&6Gzk=swq*G z_uUZCGK``2_w}Loae0DSE%}dkCHa`+J`IDXHS(~^`vwyK_71d_?{d6vEWZ!2wBLl7 zq9JWjp%uQ0S=?JE{QEV$bqE+ZmC;fRq zf{2>b3-ssSYu2Qrr^+kM6(DluNW7^*btprX_oWiQ8rk314eyJYQa!&&f2w^`75tm2 zJTLXP>5CKi0~wzx0(@m*|5;r&Im!Mz6Sx|}{yWM3J7NFTD^)BE|L!BTxyJs!k$B&6 zejm)pYbWjeL(MCdAG|<)^a)#(flG3RN^|<8{qbvqLw|F!khQWveVMDxC;i-cWpe0 zosIn)#Au^f<)!tn$Z11uu{SRsUsKSqpv*WGD+kAbUAsR?KwMv!CsNAz^)U8|As zeQ*gdw%zGs`w2#+?7Pz+9A@;rre#E_Sh5L+Ct{OWvI$v=b(%t)-Uzx;>ZMg=6eC=X zwtbHx_MnxS1oNFSZi8__zO_q5=##CydeqwwgckL@cAaHWPpqe+dN*Wg{r80}=T_rS z41sML{68;eym3QsqE?c=v@a5%8rylt&IQ#~>1_~9FHeX=K=USDCaF%ARO1xp>Znfn zUsL_;)i$bsOtz?g`C*IKWSMOJZKx4V@qTI~A3j)FP?Fo?1FV!n$+sE{zBoYVqYXnT zj^K18QlA10X^Uq%$!G51XD-7tNe}ZgNxS7UiSn82_!;_61f-utjd$?ZbHdZJ;!p@Z zXFj*+d2u1X>$lHB==qGFA$p2l;%Aoc3Zdssex|#>%^Lp^d=RRvAN|5t|J5lIH!~ zmxlJ@w#LJvB02Nz1C_n@P;4<`T7Xs!&Vrc7&${Blc=`@OTT9J&S zB(TOJy|r=E(?ECAt9Ke_l0}jCwdNxG-ZG2)PsC_O9*olX zQ(nfp%#W$Kk)pUMrPw$6G73BPyKbVe$M@qcy-vIJp$TsN=6E<NiKnIw<9Rhx~vx;b?d*$G5<2$*7UZgh(Uq$N@MvF!H~FU3GQUFJ4mv3 zuQJL02{D$`Y~+mEw@i?I$m73rC+Pi2i6`Y3(7O}#26{8S1BqU2wZt`SNaRxYeV$8= z>{fAEx>j*-cCc*!-pARA1>?VE$bRn#szHCzzd%+cPJO7tjQ%Gb^BUmn8Yz#)GD~Y? zEV5uvOkk-v83VFU!eS4s5}oOkUp}YBDZ(T; z1pLX=besOKFor$_8fnKBl;LN5I|k&RFTcJw^G%bhixJcGdoYT1+);1=WYg<3)-ph* zV)ENA*VA}0PUwkPj-xCCogyb(hNE%h_m1rHZDN-%srkqM5Uh$DeL1sp9FsElL;gx# z`5PuFjRYy8+WdLtVXIbRv-GS)?3SK@-Rr1_*-Fq@2}|`5`hV6*i(){}K(uuM#Kp)g1EHvZNG~=Xf6lD@ zq12G>=@~=vKlO66+jI<7AR1LlsJM*svsA?CWS@%P; zW3Z$x0ZH+d@=eH{=PHF-_M}+PN*PZ`3F@LniL8|$-jWkxGW$%JS!jGK^Asd_AoD6M;h%A4PpHg0bPU59+a_jr@)oX%9#ZEE$mpl(qUiC!y~|_}Lx& z)~oA~XS>Yv3Fk?@COA)uk(>$78p<%%EZb``$KxW0zL(zkCA1WxLo3q_UcHhW*v<_? zx_*c0YRG+trVz`zyn$6{>W|KMgzI>i7H`n`h3tGRO^kO@V zeILB+W6~}-UkO73!>=0>NR1>#$}p~vrin)H+Qfah9pNa@@t>wchoEzge=uqocjChr z8xDa``S8VsLRpPz`Jz;D-!_G^2IR$KFN#AL^9xZSuw|6An(9I)EIZLFVB4c&`T`Aq$~?ZbOL%7)a6EP~gXq)>G@yB!e{JGi6jE>n3)x1Jt|i|`YB$?}>YkfJHUlTY1TZM= zPbmiiwQdnmTwIImD7qm#jQ7N0mx1BfMwCk`XLtg=AAz|c?SR&ov(`7@K39dzd|WiO zJB%4JbF7tF<{~{0$+J%8Ns)P4)gjMfnWu%!6JLiscgj2mwhEc1whhjcQl6X%%1F=6 z()5=(UK2UM25`^u2wAxlV&s%j!Ulk8sR>~i86|U16}i!#XH!$2r|D8W7-6HM&2YX5 z^`9+&+a}RW$cO!H@fl;%^0OWxwUI>11f1R~Nx9-`mZ=BwB*D0now7G8O)AY^Fbeid%Lb^7KW+J>I5ta!AQi?$D=N}`r!U;tv4RIqm z3^)1|gF?K2oP2*4b3fOp;f;gk8@q6xMZz@|FCJJCV0{J+U-VW=No2Egl46oQe-^4K zUi{-0QE+h*480p9|BAsJVqgs<9PYtvTfw=-c`;S>2Cua1%{wyF{gjECung{VRbvQ+ z{LS%`&|0l@fa|ldBN3fVNk0t?vM!eNGAnghT|D{s<$?*{Zf5Dj>XG~gep_U+vD?8B zB>kzjx-EM|CL?p>S%S+12IXg?aHq&f4J0-7RqV;N-Km|&`LOcUd5V4fvM{Rl>1>u+ z&!AU{MtH$;GHq2~^W}e-y2?@(^Jejw5cASpQ_R)A@Re>%Jjn0FR zT5^ttszbCqgz}%ea`D%1V&>6ohRpr(0yB5D?_Mi&7s%XnqC_1?{&x~rt#p|!+RPRh zcoB@OV3*Arg^+xC7be*ub7O6q?WM|yg=CA6+4gwqTW&4UUG8IO7dH_K(Y%sXYaT5W-Y?^&i*Q*v5X=l5OCh>-p7LvJSsy89-GpLX7(o`Nk5? zs+wA&*j5Wevdxg${4$#u_g76rKd{R57sE8oX)<@3%w1fKtqZBcU1hdbGFwUAvPH>k z2i9@*Fk1*VG|IY#yzSs+EQ^<9wq4fSYUIrOGTVJJo7EW9%+Mt=TQX-`pbU-qHmVog zIk)`O`(>tvoarg8F7@K2m&|%mwLV~Esp^<7Pu%qSnud2=nVNn>22L%-Y4GlK6%BEo zyrW<;UJLCWTL485bnD&)vJVVgbVX;3`8XqN=l|QsJD(7wn)55ghVx+|oVdB4P~))E zIDCodny)*@!|&5DNx(B<3lPJw>^>;xVN@%0xv{!{d?6h01x&nJbi;EJ7{~Zn;L?g$ zoEaL3>bz7mYskv|Z`-)D*~?9lSy#%eEoIh~b8F3dk<2<>WW~X*G!z+2V~~fj8&C`Y z^7z!#8=1VPX(o(@nb3be?ia&TV|kh;6XV7iwsB(`o?3$rpPM!S%i+g61j?7jV62@K z!;hD`^+)HDp2`P4ZBB;aOJn?x@_`0w7%QyR++aKvxyLk{(2r5p{2mWGR-MnGY4tLE zS3y7R(OsCsa68?42_5wh?VvSv1=Rh9KHN8-w4+n@FfreD(vA5xPnUH7j+CSfvY62>V8#&FKLIY46@ z7fbw&EcH%f+lP1sog(N&_tzoc)0ijvXeero4>K2)n>>07%9U;_m#2TZW8SqGE5tD3 zB#d`v+2llXi$y4M$av?!NGj%hB7qN|#pQcWD*P`Oi}LOIgUdG;ZkB1Q4A8wZZsjqLK{#uI?iNfeJXP8G}d1vm^Jt;GwUYI6)>|VBPOfs4t9U3 zzxOOnr(v=NlQ!XOg|8#gveQ_*hTg(pPCOSxf1s#uyEW$rnY8&gi` z1Pe>^ks37g(sT+<7SW)gny@wvPFsmE!1n%#JLLQM#Zc!eFaBLJBTBqjngyD4_`E6C z`YGSB0OXi>Ac2e72^Ge)IWr1{&FO$?izQNiV*W=WTqzN9ZFVCTs)OP0nF;A)fbV-X zs7Lxj27`t)csW1>VV0&e=7FlrcnoVmWun&HAV>02dZ2TQgT(G|@ox6(v2Pg#cwF0D z>C&H=yYQnv5$=Y&D!-#`gIeDi(T)Q8_OS6dRw2^bUphP>-C>+JgSBIAJ2DkJj2GjD zb`+i=?bu=T#>@g~#||S6F*X%+#y}wIVmaC2gnc^HkzAHpG&o4hq4ZL#tF?ee!joVk zBHA$i6RXAhs7+y&uEiJn_OOwLJqR|w9D9)Y^11|Ah|lT( zZ|Z60OFK+LFkgBh#(c^B2}RgAL+BpXCk))ufw(gJ5H$CUohSGhP0Ar)J$YYO!Q*^v zk;aHe?=~1oh2w`?X_&6f{TOKPJt5Fa0rNg!cG_XS1kC$@X*rfOc8AeV!1#0VVD3|R z{X;hj@B2BxjH8(}f65}X_f!jChFZM|?Si_{wYZEE?0r|fPlWh$aSg36$%ljr0e8A= zaaWKw!7kuv9>lZ+bFoyQcNhfUGXe6w7c=`$@B|guKV%-*uc1L#?C*z^u@+m9&=Np_ z2Z=m;jjyn&f`*121#R#^*@Z!Q8d07Kk;hWyz7Md-TF95~j}s#M;5Qc8-I%;!kR(v$_vDAwW!`r`@kddGV#vWdt+=ij2NX;6N__XamG-@&$D z77^R-Tm;d*EJP=n_NHX~m&cg#4+}VEypu!^c|+!RDw)fSrp)(9tsE*dk{(=i5%YQ; z6cQ~Pc)f2fc>RqSMmJ5s4y257Y;UuvdSov1txQ(Y=UWNB&HI)4)-z!8O+$=TovZE& zq3c|A3!v;FRaf>2EDgD866^co|1k5ea4F_NEpwlOrWQUR6#hBr?<1Fp>Z6z^M{i8# z-7UpDNWcl^#a$+gFlUj;gU{g`m+d1{YE}17kutVn`M8Y-=k8}7{2tFtTy}xr!JJdf zgYFAW9t=Uu)Sb?>K2DmhC!DqE&Zkm7kG;#qzY;lubO*)1Igg8vXs-lWXHDIa>@=ND{w`K~r*F2yRV)_o1>#Q7uqLTk$^dLGrA5d;v>VM|#Rfu=rTt;i|kbT2yk3S?D7#7vI6^#^1rh=^WN~u)?l1?qTd~(lSEFK^^Hm zX!fT~^Okt`(nM-FF?I|W?S9R4)5eU$qKb_;=xQ5$%ZJ|Y6Y*GapNJM8^odBpZ}u9T z-?6q&#M}@2MBIXAlUz8gw=frCp>*5^FHI!p)I6c-kt|HDx$*IY3*GuIH`Y*BI0!e8<4tGs8V5;5{>Hf=##-O-zoU0fKO4QfZx{479aM#0N#?2h1(}nt zHOc%qL6LdKLt)AM-_duluZ_N|n7&tC)zSCrLxR3715Ntc+vwW>hliGmgs_qNYnH^F z;v+_yU(O@Q1FmWk_&`D6mn^BGEWyCZih=ZvONBzP#ebS8Oj|9{8dImtHu?j9$||8zhV{_-@HpnU)}D}lH> z=^>%2e_p9{U|e2U9-Dn5QNQfRjOQN{6$?fp$*gHKVkFi&;>`Ur7cq@qw`n)qr|gk1hh3cm(( zfZ+)|O13H;r{D$Ryt|l%f5Ibn=@;UI=tDLApBcDMHaZmy^XOYWf%%k!T%AkdFG~X+ zeABYuE`KAa?3JcG3i2VtRoI%pG?9d;Y!>>s4+S#tDS?(f`8U1ZbFrYx6T9rQD^ z(Mu{99pwF%@V6`{%6A&K$D*VQNci50D;pP?D0~Riqu-BObQ|`WeVv;aNXs*#Y#^wFn~fvS2tVOygI-^| zakdwCs#h5+#|Uvv6m=wJ6|M6?*R^6(iUHZA+$Ln>?n|;sUu7)E@B~?LL{s2vv0#?M zgY^U!5t}_iFh4)X#T)+^Di7r1D42~$T*Xk_h_Wn1y%l{Ng>+zOK-+JOX%t-AZ`Ot@ zEma#XZ7fi54neGO$EVWqfw2NXM@EZ+93Wc#svxf7?^=mM6ktJ(cyMM%s}OT@%tCxg z)Y}WuNfu%m9DXiDF&=Rhx1vHki>SAvzgdVcjHe(2yU1FHEd(r$EX2iTAs*cnREYLm zi1_}Yg=jiX6yjrA(MF}c5Mv)w5^Lb`u_RiC79#7PEQx*aq`45kf(BP{dn&|UM7^U#E5I3#~Ckebm7UD9q5PgFSaqF!@5*JjF#9OUJA^x~V7UHCA%}}1x)6GJp zgRCG)JiCkwae-Bc?xGM^QXyK1LJTqsvBQW7DMa9daD{*p%0gUa7UIQ?L6Ug#7Ey>D z#PA?>T7Wf%us*%bLUdJyxXLO7jb8;7V((He#P#s!SrRl}?kdL4tB5iWqTY%Wvk+Si ztzobvHm?p>2z2&kA+Xtz>%_;O1QlXerYMBFN+BME`-?(k_m+~lOSIQQv!+ZlC9whc zL4{}`3*m=X&V_gpkGP7l2|J=}0ixatjSY1`+iZ9n1Q()V*h0`5bzHG=ehC-iRv`(v z^b6Q@e`y%M@-sJgCa}Lc`(uqRz=#}jRg49 zN#sx8249-y1I6jDrt!ABOq1ey+5=8+%GIO@^Qd_N;}#s@H@|rf-Ko=P*;b$!!lY6Q zwi*=xy_PrGBz{6`!1(@7;|(38auW1ngy}i6!TR7$a2pL4z9NRE;Q@ydo<1*wLtqPkVPn;^U-l8^voaia&@I z#ouXs4A)+gt?q^+I~UtDQP3}G@!&8>m-_}z-6=Hg z5p}DG3)JkT ziNrzp-&nG*cr4dnW}sqP%%xKL=z<;u^ykkE+-BzmbY&uBMdx5wPse>KxNax)=$=6bdG_@F_}tnp1oTJnpd< zsnTyXUTp-QeGR#77v!|;Swf5TvuJUj-0WNGC8z98>H))@PC^x%aSsio@pAfeJ$QJf zvnHk?#F*0v+Ki0#q0LY#e`E4EgAwiB4YF5Z)|X?UU?{m8USe|pi~>J&BG+3sIOi7c z*~pw$JxgqBtL0Wcru!e%yh*y(Vfw+OJE|EEixJ(ia;!+w{m}WK`{=ctf3eJ;fpXt4 zk@IJwa;>CENbo>2%bi6+26wj_{U|?`yDCj6d7aDqj_?z<8s}4ay`sDo-BI3(YilZR z8hMAZyjMwjlR@vu?$yfak*2otX2|?h-o=wudE;b$DsPe)8nMbdjPh4oUi5#x$Lgey zFYIRlUv!?Sj{~aL$5!M(%5q*YTgkN>P4Yl4Vf68ZCX&t?_0glR$7%ow((NpZ5L+?C z_ycv7&||Sp6^BvLl2^C{nGKbSc6Ss!fxO%Dcg(-tX`jx3n_~+9!->~ zo{!GJkgP0*lOj%Hx2RTMN23^J`4+?)2|*IuIYde9VqyNnYUmPzIO<{&N@V_Q%lstohi_N%)}xsOk~cc~A@aVH zApY;ld-_w%y(=S3d3Uc~-nU+$7O|x5#nU!$q zWc$;l*7j!v4LL}Gzh%?YPdY2QL)xD|VE?T4XSmEy(sp4If(!(;KPgewwm%a^OQPhoAVFR$I67m4kZ!k(`pV^-=kY$ID$U5@fh)=(e1MW)Cva1Tqih#28Dh1B z&;T(M({IFz3_uK{i6J%-Lot>q^ns3q0mR2JokeAE)g;8b5@He{8cK+4Ks1&RU?Ou9 z27d&3eOrxL1aUN-N!TFr^VfR-F;|$20-kLNM6K>bWibuKP>i(7PqV;xo(mcXt{cIb zc7vE6+D_QzlLgaM_x57?yDXib|2!c5*Adm*k9)CQ)6`2prk2fy_J{M7;T3wN^m00^ z`u|1yafei<{vg*>rqQ+5r!?v!nD*l~MR#E$>rrP@j}+Y>z@A$6W2nqe^(iuk^OOCE zimcXtJVg0xvL86FNt}y8s)~vD)Sxs7zs9*S%8CIek-HSR(c7f8A0shoxz)%MxiK6dbEk9eUyyq$=RSkn z>nks(cVltM(4GjE9jI1z*DeaLJ;~86x zO4!<>qkTE+V18>4WNj=YpV9|e7j`7Ur(BM#(ASjfko9uPx{Ec$u%yoLdg;S?P0vlTh_Ejd-$j9SCBoN(S!An?BT!fWk;9n zVFDR5We-om>e}t$NeMyr@S151LH4j8Z3hZ(4{1EhZV!)12(pLojARJ1hiA?)L>PNG zg&<6Ocv|GQ?BS~J1Yz03-9oCCJw&r!)gHDZI8#jF>|uT6k?{k|!#J(vG0v0+s#6W^ zQ;whQ3dv(~ebhMJkI7tP`LwHB3efkFG(~`%XBEOQy%|Y^5Eu?D6LpZfdpsO^tGnYbCn*hPp zBoC)tEo$4zXpN{~<~Z9LG2%g$c5;+rN6hy*hBFgS6`)l>|zEAzG?!b0tnwY?m*eIJp%7nW3zT}DImjPR;L zXsr;Au&E&gY<|UtHi__rg)r1YcvB&K(aWOY1%&`vD1;j=1lnQ6G`y=29#;ri3IY3J z6+*0qupZ)Igw+b+28D2mLWs8`>^N)kfdtA3A1MTfLik2l3EI&)6nkYA4GT>KvwyTf zWiP+pV#4;e!t7FZm?@P#-OAn|Xy{C*r6kxCJ9Y!swah!zCt@RhjSfTP_&tK(HvGq8uDoP(CB8S`;J5GlMBwvDpCb^TPh#%$#i>|Q z&rXVQJfUZ&E2z#2?og{@Y015?^sHx#Eg4^{5UxwN81&o47K4Jcq^pH6+(Hy(D7DW3QZv#6_s9;B3mJ3*%4M)2(-qE5z-aH46z_nAng6a=YqQ-2S9 z&rMeEa;3i~y%lke1t;N-3Hx~W#lk)=`8miwK0|AA*gkH_uvoqKj47|+YWW__FYE16 zz%r|!QwZ;mun-2cF@-g>vt8Ud7Q(F-!ix$aS0TI|Zy{vZ5qeq(@fN}>3Za)mC{_r0 zc7*cZ%u?*d%m$a@4TW&>CaV8y3i31@g4A(x-p7D2b-_!e(Z@7RY1^ z)cKzO6FqU2f&B+&vntUw$JWQqcb5257jNwYYIEQ9}p0{PTqG4^r=!g~u9 zCGT1w&sZQoE0973@}1I?&LNcCXMv2gKz>mmP6e_|f$#=rMah*G2yu%={F?&lqO94f zR;DGHpBzHT53rXkV%3D5RUkhOw|H`o0?7&iS#E)-ChTto^1K4MOo5PtY1fm{CWzUD zHAF{QTIL=~=NBqr&PyA{)Q|;P(f91JI<@v%Okb#O+mKSx|d5%&{O9 zm7dzGxDQ&fzqRXx@VAyCu=!hQ&syARG0YOuB`3{#D0=ahzxDSCQ_MeG^(R9iRI2(@ z(9+Zu>LDp@TWcZE>^f`PNQLmBLinSFg%IR#J!BzFv=DAp2wjq`QbZ^kvg|Y@TL{Vu zj8h1G6%8L*G*t1oem!ooLRo1>E0Bj3$T#JtM8pT) z?I4pa5M>4KRUrKo$WscWB&5knv_O;d?T3M8}{9%+J@R$!h&xJ4lxbXa7B8t4lwgzBt7(XB`O zL>$EL*s(qlR~_#Y@c@2n@QXkd8-(9d+)Kc{@%X)rUjeQ~L^iYj8ZAKX(QKCBx&TQ+u=Cr140co?H3zA=eTS8*%}2K&VNVQUMPdN_@urdWY&p8SEf7?+Q-*8a*Ta?K~K)xTn6b|a_by)#D}I(wdWo-U2d>8t4@Fn#3x zBX)Xsv6%yJt!+0)k`cMDMTE29v}4EtT6W_}%%VjoL%yLkH#i3hzl;-4tMEb!9R0hliPoPf`;?Y;%nw#=iHgZx_|s)XWfuMN-P+6MRGT+ z+)mqUWHt%q+wRtaZ{uQ2zKz78`a6tYMp}H6PYg7l_%HBn%ib`2YxZ@ueEYBi_*M(Q zMz*e*U(J|b6HkQj%K?5h!C`2EU!9{v`Lz!-FVM3dI5d#;jQREP2#a6xi5T;V{{p|B z{vr&&zS&U-F5S<`e$~e)at<48LZ5SuMZ1T~a&0KDnSy{M!3-2)~+<{n{Y; zwdA}|e(iin@awtgV1D(u!Qz*EVz&9je}P|3_JrY=2S%+L{W{kc{HmqBe6nTD{Axz+ zWhS?m&zISm<|=N^?d6RyLEK(uVH&`G{FR@;jb6-{fO_ zgHS%UK%WkLY~LuDk8fUY@lif;E=oS}U*MyEXBa+iLnW?;kFzhTy}ri9*37?nwr`jH zWM>)tjc71ze|K45jfhZwHO4Yg@avcJOn!0u`Ea_$FZslF^NIfgzi!zPhF?ojiL2pP zdYjto>krLq=2x?vrpcK}RB5wV*^d2S=bTk(V_>Ja(!N%?Go;ea!z><{_jW^*d0c4+ zc`WA1CyLA`{tL`&yFCo^#_g__d9m?aX=#1Ab)Jy9ZZKrOByXAX=x41hb2mRo!wNf% z?)x#UAhyhT0`JrQ3U9?_j>2pjFbTAq79loH;`pi7D7d+QQtXj?7;~un-OyvGBpN1~ z_fe(B4!b1HAJ6+Gtxx1(2RNo3Z<B zEZQpB!0k=V4B9F=Ji{23fePT(Q!_Q4wn}0x1$AGp>I8wI1LUOj^>YQ@+C(2hxizww zRvrf8K8-Y0A>jy0k0~|Eym6qpPbUebPsc%cV)I?M2bfVm+=@qOPmIg9V}sUAF%Gg z@JYt1#kBosv%vq-*t4E@?Klb_1&T%CYq?C}V3WdDuHpa?h@?fMc-KzuIPb@_f?G3R z@fg1%&lp%_f5pyqa$`^r3x0}(KXQv?05%2vL&7IXcym)w4O=^{_N6ZRYVPk<`a1M= zD&!7h&R(pw68n1xItrhMpr8Z^?k=hE;$$puMFWR-FRnsmkDTjHyMBwTr$54V-u!z7 z)^4xP1P_fKsB|Hlf3dl@GgLI}=3ggP>}hm>0qqD*+T_eY=FLXGWq)8rK$!i$qY|LR zo#lSt)P!IqjyE1lXC+QxCC0Hkq=!>FialnXQ1^IIiKWZ$3SD*;yJ!(eAg&=)hqIhD zlp3GwXYKGk2SS5(_(s0QOl*T~Y`nvFm~Dq|cW@lK%(x`BjQG-%tn3hosRw}14FpZT813)&**g8QdRT1h$h*GhE zbQNdN`sP5~8-JNf_2Q38sa7OgN_7o}WaXwo-Zp+r3{dYhHezVQQYvc~-V~HuD3#oM zxYIZ`#IlmXH!Vvkm1-LpX`0Gzj)HfEjqKqld=RMg{Uo1D!>Bz6-vUec{ro17PlNc<+}MIzF6lk*ZRiOEWW z0Z29t09r9;we8m=NGaQt(xhN1Wf@PoSxVT-V3X3cOTe0N?U$?gSy~i=^YrMTK4B)J zeo*3R(#I0dQ=-m`&EqVdsf$=qJ7FZn+SPA~=YcBXNgr&9C-`Qtcyh1e2Bili(G&;9 zISL9OpISHfqtc;&AsiO|qLo;mfPqGNyhElK+7#yhD|>ZY(3MKD)p&Rp4iD5*vtjWk zNsI4vc+*6c>(mpvJF$p&k_~qh_QqA7e%O!B?CKIyhU-d$l|g(k_U^Ib^Q*M<5B>)| z2md1*^2;;jmo4Qd?oq@1Wh%=rThsI4e~9y3oW@&iNq!T^|5%$i7dT>{A3|4g4_ams zh#L-8vHViLhx{ry?(R+UySA{>QFt6rdjdLnVl2Nv7cTjo7^$$T*BWz^>p|+K>sVFl zr5s{CnTzCi0gc@T-z52MrOmFgdU^4tDy*FM5!EuW7f;Kb#N7KH?{Ehe&BgPE!za82 z>wTXY%T`xPliNFp?%%Iux>sVvfaz}ID*g#jL}bPF(oUO>18trpRlry-4pF?vsZQtN zO{%7`w)E#_>u?DB7MV%%a0q-7&+>G)Z6rc=8bfx#a}Z8Yr`*YGBs!v#=?*-)3yNZ- z6v~oWo1`x&Hr=gRLceS$GUQ3jT^SIf+$en+%|hZmZBaJ%^-_?H-)0=dybGs{Uc-G1?`+P+Ob$0m!oL&y-ci~G+FT;N_d;(AEp z9!@ujqxUdzH#rLbg9H^qi#F>54%T6-3wh?W~1TsZfTnT?4gYe=I z8&~m!S15bjBsvTaW-7_}XrF1Ol8o^^*~8B5;nBCVcYU9vbpggl1S79^6(>ttKl8{P z=ly7RB|G%cj|BVXTG{^hmsys}EVUd(kB6ZXD==(f>d9b9>u+hMDB2+l6RPFj z&SKD*$XFus*#g!~vA^5s_MWMgKccEyZ<;9Ibgk`89{Hw6tT(+QY;@Th2&@{#_PFNy zgu`g9`n2|bF4J%Lj097CD|bkk^5rxQrx#9=+TDphw!CFs7~OvHZeexBlfk+@?0vI{ zKLaI5x37~gABAxZlc6t)H|{k4HOyq_JIKbQjkS~Z3X_&+C#`!p(wa!p=*eKx-n6(+ ziwT2B+c=&1vKFHTCTS}rY0(yG@fK;fq5onj<=gaNATSqqjWl72RDBzLp-{?Jbns?y zeKQXSqeaMpxL@f=I-!~FFO+5;?`~@5GQ2H_;+~S?rY6PcIKC$-zS+&p%)Q&x%sW}W zYnaj^qBL?|sLfpTj_f}MA1q-^W8N%JQ@r_DzUi1It9jUiCDcB8Q(d!?+Bkci3Hq z&EPCt2CKJ6Ll$OlPuvR(k2hYt&g$*iT!uNVs&N^#zyb}gCyARUJGlhwbq%l4E2-)qd+N zItm)i8MJ6hB3#j&#CV!JPT+G3@WG(TPE@oHn4N49jbr$%gf2WLZ)M}0rryfPoG5Q) z%&a>ti+N=svwuCFWNx{0qWvPvQEZ<{k7kvN&VjZa%$LR^LMa;HBPrGko5 z5i_f|7PuLoX{Tctx(uf}6V-?F8I@0+sPs3cbG3N!IS8Q>Km`r7>otk!v#y9LO!R=Y zQxdU)Aty1xMif5eCy2V0H>ydZ7UJ_1ioeZ?zfHhj$HEt(d=^hOjbI+%Mo-Ia4|}~8 zmpnLgb!0+Ex8q;y?w`gb_>Kkv@xfm5y?O++c%#c2s^H|vpd4*5P&xi6uu7e@Is!MM zaZDKX_%#2}1P`^rpOOD{GYp+~b_9#2y+y`zqnL~@Hyo%u+K6S$B7$^iU=qyGf<$N9$g^x@xFf2*jjDevpvw#)k}P$`{#N8!IvM&{5$zu*uK z#K!?a#Gxi1*f`V<94aCX;RLln%$#g7s7r^bNq!B*zHZqY5uBQ}5>0|lMeJ%Sdkh{N z)ftHU*IUfHnJExqYmBs_IVuvQY&A*;p^*Sc?i$jnWY(&xx=sovzAtV&?|~Wuw^$D2 zD$OSq9uKF=gX5@^pvOHfr&Uj4(^t$rM?0ZVI7MFbmSm7Zpn~AY1Gm1#Sn)Y6duoUQ z+$TzCQ^ja;at^mh@_XjqfrFwv5z)ZB6ro4IHQu9t>TwK?YK5ex@Av3?+}=NxbX9 z1>?scl=L@1)Q(SSh2Nom_}iLE{vb5@gQy+<1*8@JIv78wPhI7^P4Z_YLK7d+Abg}1 z{_XX{Z~G^!|2b3xiGK=FJ3gfqeq{adw_!^q>HkWECjE%o@n1k%;XjYlkLtmnDP0&p z9ihY@gs2^#(hA=d27gfX^|x6g#y<|@BJsaN)Q(SSh5s$~hSY=pu9q-=3_^+D08u+W zr4@dD{qT?d#`4{cP~xvg)Q(SSh2J3zehvH?(2(hGhfw0TMAVK?X@$QITSY?oQv-fm zX@AZ+Ec{c5+VLr^@Ncgl{;}pv|8|5Xe-O3fuSZ(pN7fI2TP5>{-h(6 z{27F(oj;UT`1$q2_elHPP1)y;(mp%pffaZuHSw2_jZQM#;CB2DG2cY(Zw>ShIK%X} zLul$hqC~$Pzd5cc{12(8OfJL_oZ442e%Eu1AA?ZhH$XHL|L?!-_+#siKSsJg1C{;n zDeb?V{_a6-z&Y?OlzvAcIsy@v4}?$1ST2??hIMo@LRp5}5DhKEt+=Lm^fbSt$mCBA z_|ejambHUxNd6l_J9rZa_yDfu_M%V!4EA*S)HXgL@tZ1q4JTIQTJ(Q#85Ik?HN|V33UH~TxW!SC!)kyMJo07k}uByMfmhDN* zGRvOCJQi$E;wVk^k>U3XIqkOjGd1ELYt7_uM<~f(kEoq|O6OkA_&KvZU3NR(uMu)} zTZViFA;cf^7(x>dqK~6=ZX$S*ljP~LMS?Zq@{8_(<*!?^ZjF&0^o|nq%;Kfj*s%>0^#P%79oM9uQS*vC=2 zKK$|>V}4CWNc_4Tp@~NdM(KL;>pd(539n!lzrLfMBk31HyM7@Vo?ow0Khn}K+8kUL z{TiLf{2G8z^6M%@&GHeyC~dPR!T}1hCukpARAW!JVMKt`cO^mz{{o_RcuL#siSSQ? z?MV&zQ@DMMNw?a^m_f3AG|eHU75o`g){MEuYsWX4Z{KC3B5TWFMPekqXQ(EEQQa}8ql0UN%O8n`F+VLr^@XvB{ z6x3eSAm0IT%>Q->C4Ngp?f8^d_)pgl-$Paj`q>Sk#P5ix9iP$)pXM#mCe@YxzodK* zAe8uf5Vhk|TH%LlPix>$Gx#+`|8X>O68}3}`$yH6(pAh|4UlIqWyr4(lDXT1(4?2l z9i@ZK9l&aCPfG_?XYP1>k=oOFB zH>ayd-y(+P&NdT1sqh!=<8g4Gto9vmnMGC=uNaFExb%t}5w);^OKFk^<37*0HhBk+ z_l4m9CGig^{5>J~lvenz`r%Kxkm*lHDCr-BsGWXFEBtTI7ksHR{U?OIh&zB#;_pG! zj!$WYpI<-xW|uMj$2(c{e}||YpVA7yL;djEMl=4o#uol5MD6&LR`~09IJeIH`Bw4= zp~)Xa?f83;R`|Eq6JN^rfRgW?5cyJC;YZdFf68}Ee>y@_e-O3PKL}}sU)y+ei2lFc zk@+7$DDmeZYR9Lv!mn*SIs||1_e}pXgcAQTMD6&LR`|7zM~C1y|J#V#>8G^9uWdX!1b@JB=1)6>62B#)c6>@J{MyE&L-5z0 zlKe+#@*hz<{$ofh{MyE&L-4oB@z#|HCH@PD+VLr^@WYKqqdl_bV?yx_rhg?u6Ccqa ze54hAxbf&3@V}{G{0|XI{I?Oc<5ODU*ESvFQQQ6zuF+T!x54drOgij%SqOjD zO8dD?+0VzM{j}phN;cHO|B%OY>w-UqycE>mf$W!%|IicBQ2M)*Z(`w(tvh}*IbMHU zjE4&U`%$yPFvA7Wf_Ic()z@5;^A0{9hIZUyYZ! zgT~9?V`a)Q(Y|6#RJ@~m$e1X}_)0k@%J1mQ?+82IhcZ~>alkjY&lk5v^!Wt-N3zdn zFT)4a@3Z{F{XC{?;hXcdA^ds$N7l~(LaCqg5Dk^@99&a%U^Zi0`a}L_4gAU5&+oVe zp?t^nh=#sn7_KQ9x3SS*3;q&0Cp<&U2@C$*E9Zpm{JERvg)RQ97X6w%wfWBre`4CF zB9yd`M>Lf7+i*?sCv-fz7W(6Pye01JQR^Ki5Dk6D&$y=eb5@K)D*9{Se{v+(;Wh|m z8JZ&+ir*C16ux~tx)%B;l{1gr2+2UW5Zb}=njOo@uLw)RvAAM>nDbhUtq1DXn}dsu;WJ|>nBDZ$Q{tQs}QB~ z$^n=dN~`q~#ilVYfW&zIgZOFI$B^|C1Ef7{hfu<|MAQyXY0@=bo^eZ<`O6yc#~fnv z2O^aCJrT9zQ(EDlWm{fte<6ha*QLJ^5dMZ(UNX<-Z_wNmr4|0u^}}B)*}qJ&|FIDE zQ(EEotsnleeaxTj2qk~kBWmXlr4{~uw&Qi>&zK6ye}pFg5w+v@L|WnV_+6dXPk3ln z2JLk>gc83aqIP^rD|{Zmt26#F*>Q8Bf&*OJ>#{a95=|6x_(!U2$ zJN=Ya_&k1BXZ!)bGk!aS62B#)c6>@Jd>+56GrouCd*ZrT^F47LgXeoPCum;K9Aqk8Gp(i=1)38i9ZNYJ3gfqK9Aqk8GoDfCszu8Qs~bM z(w{W-htf2DNA`{8!}idWWep~+uk1oygpit_mbU&AO@&gL#_zV!eAuTFOpM>J$MQJ4 zKV;2^HSSUS_+86=;1t@MU%w1$Z;l{YrM(gJpI_mQny)ws|08UB1A^@HpQEW+!+NF1fre8mzTu(i*BqJL7|e8t+&7=9T-3I7r=QaG84vbz6^pqWA@nI`ysduGcrc~w zIUf9e*V^@II`vebPd6d7`7c9|46jf9sLx`}f4Sn)6eXR`SLQ-7517HQ*oH#rWG168I+wP1;E~ zl+L}JCck^p^z=>%&~Y zwFsqr-a^zYBTaBnTFIw=_5IlSqWy^3j!?p{N7N2aX(gX}*7w(?dIgkv%?nX4N-O;O z*7vWOJuwK)`i`ib{su_br@pu0?qkd!m8?>y5Sn-*)G*DjwIK4JZ+mrwt{nSpH) zN(Qz-)GQ-0kkbEC`OGR~_^}8j{Edj(;VJz;md~~WjK2~g$>-k)O>mMArRy)B1)XY_ z&)a{pd>%(=lTQJX;pOuX?kM@xbv@FvUvU9vA(RZ9hNxLak`JY;7@Qi~uw+cgQ5)F? zA@Qt*ZNiRtM(JRK1F)JKu$vRBW0?wrM!`1-fv2?6=drB!AsjtvMi6yH zMMb>OMP<=NJdkimKu*zJQD8y$pb-#cl}j-H@3*RYx@R&;X58QBzn{(LlX>;3`n{@p z@71fbt1H9;T(tgUy_%oAY0ppQh0RZh+wDWHkA=>6n`j@~*GY9R1ysdfgrHO1#BKg^ zeJpDJb52VB69EtB6~QJ9X1>xZu5`Pzjjf}8Hx6CM$53} z4B|Hb82#&sRZ>1X0F`{UAn242ahrdv{&kt;zyISP|8Eg=@+WTdkI}ylTPykZ22|zm zhMN{&mq`kuB#pfDV5#8E9mGF%BuV zzle6c@!>{UyE%YLV2>eaRgnIIxa}`u9B(LlO0?~%Wtcq?xAh%kdzgdHlHJ2ZyFVQh z)}Io$`N!BE&Q;ydNvu{X@fXrK(>c1YCo6bBen|1ylyn0zs>aZ12QlF^Gg8CCfekmLmHG(Bemt z5s%RzR^!s0$OaLdj~(JpDaTWQ4tcEt8d+W+aNjgIo{Cmp+dhz$`v_3U>rV(;^`pFq z$09FH%>gb2q=}smXz`=Gh{q_eKO{FVFYeq?UVu({0c}KH+{X*bE86w4yWf}c@&PJ& zc@VVfC&r(^?fxXT^)er80e{~WP_e%NK_`3Sw!e&Vy{xTL_kNU-y7{N0?9>hM*wq0<>ygC4lEU(j$V#_Pq{$Qx8TrX9*9$}Ru9&>-N zyIo_|v+ZFPPhO+F-Vf-g-yJ|B*Y75t!w$CBXzRCbsZ`zqKq~KLK&SGE$6UWQQPgk6 zN3wn|0XpjU1klL!t3irgzi7v|cW;;V^8s4+j-XXV;g5jZ{wTKbZLfDF`%Zw0eR~9* z?1|g{D8}*a`u8ONHvtv@c?dfB6Sw)tIKCZ)$rk--kv$*F4x5h=xB167zCBls|4(9) zq{@HDF@K`?iQD{R9N(`0i;@qZB_9MsM zwD?hA#A6iL>b8vuEa?Bc(Xt?~GXNd(Y7I29ypGe(V)lv4_l$B+Ih^ zDYABe7C+hp@fhu4@o9|-ENBnyw@Z8YH=3uz9{#~r9De_oJWs@S9JGgMigNm9(!e zv|Cgz4bT!6D@QzLfAe6Q#;Rxgn+ul6`n3Xd)bB@(E+W_OJB~Yo^^10YVkoFszg~dK z9I<0JQkgV-Szg9rkI}yuTP=B3q7E0UiD#4QOP4aW+zHe-Z6^ z(om(4UbaH63{wbk+h4@Co^d(j&VI{y0X`M0I8fi9mY!K z5RZL5>9rQk>u1v6rG9P)bm(Ug(8&5JKuYZT`FWlc;C4XOU_L|8DL~@CRzDNIlI({A zD)s{qbh0P@tMxNS@t+7t{fu=mr+$dXuAeq>&Fg30+fqN(fDZkX1C6YoyO3h*C))Lo zp)X1S_5xG_yb?jD0EyfBiEaI3`)(~-e-luZe;$I)@)NiD$Jn3rQq7~2-8|ZdH4ox8{}}rd^*&dk{XSP>*!x_` z;(e|d?nm=;;)yQyF3vR3ByIz=roEOH{^ZYKj6K@i2J!=@0;#@N7OEPJ)jg=@^S>N3PK@?#HnxjLg;My!lV8EPm?cC z?R!bG-vFrCuRzero;dX_*~j=k<#g%3lkW+-@8sJ;-FG5!oBvm_y-&GdwJd)CP?diY zg3j_2xA{L58~=~iNdC_OD*m$&bn+)|^Oy6nsNaWMuuPR7&?-NIPX3dC+x+ExENcGy z7AgG#TKYxM$$tfKo4=foMa_TMGm?LAK*hfsf=>R#ZT_GNADgEhZQNF+5`4cIywtz}tEf91HjJWMjE93?0QTo$S ztCT(fEqx&9WSbf9ri7*&jr@f1nBeYQCCm&sW9#)XCqPuS))r?jLA^|C|q`d?o@a`HVr($)C6_ zpGfx)G{N5|2OG&<0TurX9ODgk$HZ;^k^0Lf_^*FOmj6va#eW`x&hitt`A6z6o8bQu zTN&;Lcn(nUpM{{4KXIFXr2euA{tI4~`~!fB|0D#R{E6HABlVX}@bC4ZSJf!q9J>@PpUaSCBSfQtVt1fBee+x%nfFW0{*`M(LM_|HSo$)C8* zKgRxYfs%g!Q1PFHpp!rGSo+I7f00H06p;Pp3P6h=`%B_6_LtMXZ@#~r_ZhOqe6t$R zG5;tB+F<@6_6zSqiapRz85V2Aq1V}CvNkPbvaa-S!>8%E{l8#kQwt`|GSf%i5g_s1(u; zL92pPIPnGoYvP^86xF32!@!6F`@u0_qQHoU3JlDe7TBx*Y)oLm{<_<9l$W?4Jqba` z2ze*RBZxZ;Bi)aFd=83X-|vX;N#gFP=I(dw^_CDf zl5eB)b?1FjxVv-x8x*vUk znvVv=d{o@6Ims~}rF@9n{5`Sp-#%NGe<`3U{~`pPgC_WodR6i-0#y975p?n=Zu9>p!uJ81 z;NNA2gC_X5RsMg!n6HWU`>kWX#`a6x<{#<%22JqyDgWHn_Rkk6 z|LnZG`M31Z!TY~=BnTfDynnh0{wF??^4S5Xc5=)FJ~VXEPtoy`7ii`EPnt{m46a~;pKlAaW?;@@|(5M$Y;(x$$uiC;y(t#aQ^oq z&erkp2>k8)n;YDZUZG@kqb;Mp5oA;lBBNt+UnF>cc@zA#7iAqT1yptTErQ{7I2&>H z`0(j4{?>iWVgCQzO3C}=BSGGW5De%2J>qQn^tQH)a_#$`n<)SMDKZZ~pep~v2!`h| z4so`Qzmoep!SQVq{8LmPcI=rT|L+kD=l>nzZ23GC#=jBy%z0kf51?f~2!`{%7jd?H z!oP2T=|WTY$Cs!)dfIth9wCp*m`AXUy)TbJL?fT0f0A|h3Q*NyBZA>|_!M!rd~OWm z--vuZdPwqq4p8x)gi>AkGJLGUxXVIw9^q z`@X^BUvNpJ@$c=nd>Ey``qAGfhO8fb0W|XZ(WgkU*N>uIk38oUQQ5>3V!$UZko&~J@095?9An4>z+~yzSdgOZP z&lBGi{#=M>p7Q5b`H44JUW17>wuE|Cxh(SW`{nZ5Awa9VTwWs{y1WKvO)szY+0xkZ zn!Uc=ts2?Fp3VSttVgy68rhzXPeM6@>)X+;M-G*ZC$SfxQplC6{a6Ac-augRS&iK> zT{cz<%nQi%NDrV>V8lZO24+nQ?99&^6IgIPG8^3|<#i#TLtY(#MwZuUNU`O0ANs?H z=RL#jdmoQc3^#y=0V;X*N6@Mt+aGbe{iTSGHro5|_UV%S20+Dr1%giY#O?MGIcfX9Lt*}pxXnM3|7(K(_CHDfO97Sq z7a{1BKk-KU4U%Pw>iw6{*QQ!&AHEp#+tM3{}yppg!cS6prbuc2HK!Ki}Qx# zkizyX&l}!{IbOu}9Cm(tXg~-oxfh@mSn`z!Is}$Tob6d2cuTP+kCQP%vFDH0_%Q7J zs!#Su$z6l}QSt?${ZS%u>RYmpbRH1;4z7QO@n29Oiyr_~#h-+rv-req{*lfDHo@Qb zw&dRxQ1QP2K_`FWHveOC-qq;-OIZ1*Pm}!b0aW~NL(s{exXu6R*!Z7&kK})HRFMB6 z1fBee+x&aR#(%nO9Le_pTIF}N4|E5jz1aM}lJl-;<jlZb6QC-8djy^3CvNkX{aMuf zyDU)h0kq_Upp$<~;Ox)nKZD;RYC>{ua>UhyE;)IQz30&d)!%y7~UB z85rlw-*tId@=pX*{5i39@+WTdm;NYf{&OCe z{3ik`{$mhy@+WTdk8ymxZ;s@@0Z{Q@fuNH=ahrdPm9MYcOki zy1aXN^ZsbkJ;)a0>)Qbx{%8=;$o{ARDYid~_P!ZItyhf#aogXGiit{%-;*{__xY@+WTdkL0hK;NPoMl^@V5KY~vF?Sb3; zBl)YQ_$&L7=Rd@HhV%Rf?MIydh~fQx?-W_&%K+J;F95X4OMgW?)L)@|P5Y~BmNxIN zZkvH@(VlYv9qqXX(8%riGNjn;xj*)Eq8UGZNVkXunmK?wb5G0w`{cx_oJk6~I z;!AQbiqrhLX~hVSYLkX=-qyO@G&dfP%j>>2uY0W)7?f6`1$=46W~))#>t|{PpT1pd z?F;m74{D!(LfhhCWZ>%qF+sbrm-R^s!It*y&jgPAi3%hNLW zlg^)1G=h8YHuzrO8q#3JI#KWqoP!J~l`n_o`PF5 zKb(z>JjUNduBZEo@1qJMT)&V1zDru%zg>^ymFmNbDLEVhiZhDV9A4gX>;;;U zH``~#6@lfM6j6m{B>A%PYJIM3{B&Ni_u|9LTaWFG$7cGBgd(hOoX5vdm?Xr__uY>3 z_$!K9Ef*QznZJp`7z|-=G?#n;xf+AZwCdwYW3JTdS7=5N5|(RK$K!Aue#}`~^@>Y0 z!+TWgyj-iUJ*rh7J?}uWlCz^4t$^XU^8q6RAPz2JgKq>>$$cJ{5MqVl; zwc+>DjDNaC8M*Iq%gB9cn)&@WnSApp${GV_3oBo3J>ChAD=Y7&D7~2wxv|5hzvYdBAvo8GA}c;UX=Q_D9&gl^$iNh)2VL| z#J{;)=o=+L_0|6p2}u}_vF@1RwPQVqVYOf!ya#t$gW$SKUK1st-^e_x7L=Sjsm z(YO)0{`(Sg_50ER;UVwqfp9N`-GI4(8lVrb7;q3^3E(imQouU^%K%4_3H)Sy-%nXz zPleC_r%LcPA07-128N(|eG|+dV7jjN`ecmo=cViU8Lq{7m+JXfBBq;+=_X^kBc_Lp z=^p1Us$Xc4)Pb4=!L`lg{6Ao9sa^Hy>QeBe<5`>Zw+;oQ=$0{ zmXCeXrh##BDB?;MY^W@i&)DuoCL9F}@(dOuf$Dw5-nyLGv@)-MXsXZH18%)!@qB@c z3c%Orzcr!ze$77;mOK)cJTkS&fBRh5kXm$J@K?FUPhS7sOElxAB+VF?;x+DHsAcUe zAByjRYsPPc{51dMw7D!6;A}u|*5UHgHUBAE^=h<`^0dso=lKFMNi+V+rk-J@&e~M( zgJ9j1Zl+efG67u2zUedWNK5wyir`X^x9oL{o^%+HS_{qafZ=`68WiS9LJOeo_Qq?* z1dJGrUwobGz14MXyvq-?(z1T>x%!;cjGaa3(mIOs+bFN6{tGQIG(oHX#G7?s?Dy>M zdipva@h<eJ)?BbXe3tXRh6iP zze;Ca{8iHd^r|QDJHlT@m72u^D4BeSAA>cIKR>~>I5%yWN6&Ao1#U?42KpwMOApa! ztG^!n>_GX_csu&p7TgzJV>Se^?YVuls%~T zNNldeUX~b}sL%g;Er3>6wFW>H;`N0HgK9GX9x&wt2OSS=l@AH^5WX%pwupY_iyR7KDtmwNLjSfXVjW#Bq zzK7BGTG97f(Z6RjJ5Et-cAbLveT*JsMUSzf?`L$m6PIrwZzVHqCDR^|JkycPu$4>$K{5@*qGs4iro|w6 zt|OUYE14#QdQ6)SD62AAxO}8TB$Lx#SLts!(iyhW|A??R@YF&9rl%2_v-Z1~sA^)P>)m z_;rJV_ZyV8Zcxg8W3C8Oq<(_}#ek-kpssoifb5SO^b;qYH{c9GQ|xwBw^5_l+<< z;`}Uh^y-|cS-s77T+Rq2j(C7t!gNJTz%19_KM8$HinO41djC{kpftnlAC#8l#avIu zd;A^JJo=zCq*au7{X>w{$4cqw(T8A4ys(mH<-Y;U@)ff)byvW*XW$p2w z=|SfDOx`=J&%74DT427Lz&{xI<*EDz$LWJpHUCWJ;ujBl1A`OHu6yWY24{GU_2&69 zT;j#pHCcq86g9;x{uGId`XTj*NvbDBt z;}qu3F;9gqS|d{*(yLn_mZ_|}N@Y-`wo<8-iArTqrN*mN%1Wg&s8ZV?h?0pW&usnG z3^EagqDWB-AyU-w0@Q+~pdb||1{Ejnt1y)UR;diC)GP$SN{HRqV1Buqi#nX*H{*TR zuZMeDe!ujzwHRclV91Rzdb%|*LX;a(8M+vo3x|s+^yi)u-BW?5M$?)x+L#G|ad;(w zUNslL7{km4P{~UWL^2hqi?I!oYwhG+2qKvZ)vFHT7s+(0r1n=)k$M$%=&z!#@Fd0V zuM(zNMLD7bsWOG))T=TWS67t|Kpvo=0P$2Y05D2QuPS9+T~!GHpVGycNv{%Zpi1hy zirUnxq*AJcc{`^+>!bD8cSs?_UypnLzvZustN*9{^`*ZgH9ep0;*H?11Mz$A6ZQ>D zuYa%k`K+-@%x0_h3GV{GoGzEYN-*~=!`wH1(sgQmb#huQj7H6J(Jf>khr}_Cwq!LT zt4*ODq498{>(&AzHO)UN4GcG!`jj2@tMe-0IB&oR9V=TM|FIwI`Zr*J-Z#TM-u4g> zF7d&Gz{}sDadpCNF3R7`Rm>a8h?bf!N%Rjo%Y^Y-C7}7JiWH6$k#iZj*7J}0nXbiu zs0E@wk;bOUT?;phvf~Inhu}ZpF074;iQsfuQLIn@64wsBz??M7#%m0P+rB%~Yy90Y zMU1vRj2bNjh4ygQ;{R5Aa993Mw}-QSZl*n)n;)S)L|$Jm<{DT@aB27OJwiLHJqZ}O zFHchIKf$p}3*D2dVW|}Vu*!T*&&T*1%PsF^C$MhH?^OsQIf{?2C{Lwg%OO1ACl<<=rqNFlxc zK5h)4k1rO8$ zSP!sa;ej;(sA+;Zd>3nq@l2p!hFL6;5+EgJjzGkS#v2feyJm)rA`e6nn4J)XMpwrn z4AjB;23K~u5wtSe_BBXqkc;zyi`u*+niv-&Q}CaP|MWUfLK1SsYI|GF$WHM3bCS^Y zdt8fiI$(`1WO>zNd|%|hpUbN$SYA!FmREY7U-}aLP4#fSYLhmNHgtk zPIe>hFVcMX?z>dap%zKe?9fqQ1Z_TmT#Ds@*ORGx;4!guUgxP$QKfPT-RyH6OdQiMG1z!x8(fx=hoOmFHP4`7 zan&4q;e#{rNTxZBj|2vn0x31e0g>YZvG2q(I#!7rUC&uJ;{UGv(|Si*IuQmRt-Zf2 z#R+@=?#=&}z1KeYKW*<%A8N+l=k$(X?}7MBr6s_of4`vl@px3@mFMpe#x(++T3nnM zt)#;2)0NqChskW!3$x|-`ZOG%1h8Jht)Y2ag$rHHuD9X1#9FWv_Kn@~@WBa2^W`A( zPhhvL_PtVNsW5_SWN?y?!AZU~ILXK0Bp-v5d<;(Vt-(n?1}FIyVrbD4`% z7+Ul#F-;&=i_|z?K=D})(Jbw)o0!_i99ed>k5AwDZ?%uP<^R*|!N(hTl)$_c zQCQg$tkDNy&sDHzH-v51sej_5hG>=;42N|$QLn!Ylj0Jm2gUi6wlM7juL;u*85jS` z!SF4v^D0r$|7bkC@V@`)@vwhiGxk3Hnnvus;d!U9`RH3bFNU)f!oR};>pYmd2tUu2 z$_(Y_Q*=)z)>d>+E=EGS$7gQ3I?$UZW1ri`2o0N*hez}&F4p6gZd7s)5+LqH~%wBnOwWUY)` z1Ar%geu;&fx>-hUm689Fk-KE1DI-6Vkq2euQ5pG>jEuvoFftMg`+@k^WF(iK5t#yj zjAqG5E=wblE76FYC?mN%jYzI4BeG0Ja!neMnuxq=AR;yYSa|EjT(d?3m#G1`Xbn&% z9*gfHX-CV*3K`i^Mpnv59RPbQsTeDynhTEpfW49;oEKbM-bUlevc0Xa-rzO*x}h?+ zxqY74xW#$g1`lv-Qfz*x9w=@2Kq($5HJ=d=1aQ1JP_)@R@$vTMSGO7s(&+&y(p>}m>=;;#^Ol=bCY^9(-h?D{NGY(!XOR&fjPjsw`y6N%W+`-G-=K)<;Z9ZtotB>7+&0lGl0AHw#GSk zSbGtMF~4Y?k7+mtsEK2M8@;YR=r_LNQNJ!l#sQx(w!|J!ct`#OK)U4DXR1OEvXqpHD!^y+M2$U*uCN140+Av)?n1xw#RwTy*u3CxYp zOLNiHlc+JjyuuAp-MN`P^zuIZEs!hB(e_&b}hF&lg=!r2bwUN`2r)*~y9i z21mJh(77kiI^#cy-OZb~^1!x#d@BCa@z3t&Qe=(=u}q+Dpl3@|1Iq5^Hxk8C$apAx zd>Q^n}wD?TSST@A?B@H@P0}l{sZ{{yBa*OL{hyX zBWq>k8W}lLMzX8HlUrrvcp14%MzZ;W=Li|et_DxCr6RJwjEtk~{U0U};9RVXWLJa8 z6d8Gmj7*i0=`ymtjAU1XCo^T_$vL9RZW*b`NK;0#o57PM5{Opg|FBFx@`-$e-3%U~ zZJ;a*Wn`s{)Csuf%;__xo^nNB4mCKT!8$9!6%X$ZQpvgQ93Cie{dyN9{Ul|hyItV*3@r!uHgpHr#N+o=qy)E89hTsxIPmHHxr%y*uh%AiVpNu^Q^ zs#FZB)K?Jn8lv-sbI!mH%zT;H0~MmS)Yiyov9_V!jIowx1Z;HteEWd^l6_s)**OAl z#Q(utiDeu0YQ?Lvu-3{^3)p-D{;`mig8jC1{Ab`lQ_pwn`3PYCf<3na?7{iOQqi=@ z9CQsy$DAbH90vrG7LAh@KF;|EmI1to1BHkyP;rHb^QkzWiYrp{6iqHH1sk@KdbI1U zZ3hbRW70itwwQGP7tZq+-^SkjfA&28r8}CLUw26l?Q5wbb)Tj2l{x9C=)O7&)53c| zd@Cb0WUq+N!xJy>AMAwp^#0v}dPWET6u&_H{r&J1I&I9#tCzdY$tO0#)IW zlO)0ChuY6qEoc8@_7@}uyD~FRhS^n`J!P0J-|Q;Gl?f?XjSZ~g|xLus1{u%bWTw<6rqga;E@Uzpbf1Ew&OwBOZ zuhu`#P8M@ogZ;7j(VZOL8V0-S`o}3ZV(iW9AJ0%&y1-HumLf1pl}{!JEKXq@S=2wy zVFuGU_^5w;m%=zcseharVA>ji)hcX>z!oZunyG($uEN;6);~T|VYvs;Z3L3@#4qnE!P0RH9-59CEwX?Uu0UZq~Zsa(K zZz$pH5Hi_LQQ({p`VyQfG6&y|aiMSt#i1?%@>fTpjClR5u#-=CC6R?Xx{jU&XIA;n z*U;f&Y&fV;@-LPA?>tI%@pXft3~`ufpDLQa9fGY|Mbit-96A*F&xQHo!9ST^!Mbgjp&c|pE6hr zj7obQimXMYAjoAMl_K-{2+JyZ&n*9@zTTBIkb~cyuB4$UuB5zWuB4((u68(Skd$}8 z)vhqbwYV@HarJsmx{?9D0gU_J17Rr$QJ|rtL5OhS zXxHM$D^Yq~zFZh6>gc+3F#d;Mq7S~tJmoNTTXeuY`I87NGk;`&x+&_z7pwEWhF)+Q zb{7RuwW=0Cz9uQ`OT-%S^Un<0H*GQ4=raH9u&?pABP9^u0i~uj(eFw7nk2IJ;T7Qu z70NL0wMsEv9GPQDKBNz*TE#4BA?}8AVYl(MCZ8EnoFJ{Vy0A@X!hzikp7aI!?7d#Q*K~f+1M@TObR}vCW%rIZ#hdi65jZ zPOHA4py-ysO?W2dNF({v-}edO=Qbbyk>bacX)FSg@m$6D?#PUrs(&hrE9x(Lv8QA& z7MQ`F$~*%(Kpry|5;;X8ICFL4-y#}fI>e9^6FWnSY4_(1#1tZ*om8q*KG)qGE}xgd zB0Bj9Et)3|*DFDksY2Y=B!`glToEeY1oN%o;pOSjBsYxboc&*zzBKb*H{aHW*e)8z zckCgxj}BRiqc^0`7Hw&&#!cxjgT<%*yh-|l1d6x*R-8^L5l%6olYm_B|REM10T z)1k@Ih1LH^IKP{Rh0Al*XHC^s^heeEQsDrG=CW)Y{~lh^qWrWEl4yrh1+{ZzZP!QI z!-StKdni#g7|>*nHa+tEeU3vORm`2{n;-E ztXf+9e%utPmW`BeceX>m*ibj$3i8WTQhPZTelLWV@B16A`da>WP%QkWc|yupYMzer zq1k4d@iLHLp7`F9fUZh>Xk$|n2+_}s(E2Bs*EJ~b%T00%Yj15r%bR5094wtB&q1;9 z+vEi70_A^IL|{ubqd@H8`729nIS!4fW1C2Scbe_6im zKUn3nYPe!uQxXd)-!-A~N-$5q!IHn#zRR2B*7W$V;(AoSvHtTMFmAU0MEOunvN&dr zIbhY)(!|zJ8`f0JS3=e+-WO)ugY6XaD2*4*wAYN!HOyx>z0ciuPTN=FFou8;=qU>G zM_O_?{ecgop`T0ocO%h1vNRfcj{eN@Nc78=MME#j-y;%zzg5xDbKqzGNUIF5|J$EL zLof1wHxm6LYonoGL;00QqIY599y+))6Zd+|9@O3J&ID%MfcNSbxY#GAH06n620*QZtp1NlT>hB=e^~Gv5}C$n)-7FZIu?!}S+QemvWsih<$#Ni6Y6HZhQ4 zv1l_|j%)H%#G=%lu4SoPuFg(~tIIwWaX8bIofsE~h!(4}PXlbrnA5Q{@?K7YF5j!c zzEf^mPd)oo#GR&Riz7^6yu!8Ehv)(vVJd8^7vK~V7JXD4jxZJC2ooao0vury&$&3S z8>$AW5!!1B3!bYA9@5^IMX;9!?=rlLQf?yv@GKQC~ZFfVp0D{^!@%C4Lye!X6s1wk6`t)`TQ4(`hOCk{%`M$ zhF+9^awPgkzKw=n+J7W^*WVk`H`QO(uRt> zTy*h@s8s?&&yHiQaNh+kZqd-^Ybp3o<+wn0JKfjfd=hSelUQ(nGRVJoKua-KuXOOg z1YG~wgGD9(EX7}|b0@)25NmO^L*e~-gYu7X@@M&Xbhr3#d+0wa|4jj{#5~2x-wpn+ zbQAo$uU+lNE42{F2na{lFwk&|w^R_7iGMf#HC@Bow7j>`s#uuF9JLFsM+Nocn(`)u zBKzRV6}A*zlLHi1AhGk6swBt?w>@YHx`s2 ziLO;>etjk%uB)64AWz%ql?dwkT>K)L9t_E~04jMtg1Wwj@l98&fxYz)Xc^|><#tWV zuR$%wN_pZ6(9RVH>S=4m4qMaG>)Z*n4qa;-YkoP*FW;HprO5AOMpII2LQxIsBihfu zY8~~V{f(7cL1^fMvDsfk|AUhn$3%lgYwZ`%GR+F+Cf$&m4K@RAXw(&~P^%GjISKM4 zeGcB3%297jz3F+}lbJ-vSRHM$j5(de#O**fn$?Y8B1c0vnd7PssS+66JXTt=R0UG8S?? zmAwUy^yW??t=F#%AI1#F@NWtfSd7rd_ZE5T=EXK;$>OQHkQr<&ReLP_dl-gl% zOZp3go7BymX)Q3@VgbG`CnFAfM0GhmS_n{50tTydhT*J+Kc`gBxx=4Rrss@;&5v#& z_-fpcyNt3ymsbX}F2+Xuzgk;oH-tSzuJ6R-;q_hF<`Pxk_w!|alNzt@YOGp?))!7K za(yFThRx3)m?@ZJqB0ooLf-2>v*g`V+m+SZ6{fByG2~78U5K16EaHSIqPRn5j0RLvUxI{t*ebLhv2zwJnfYEY4cRhDT! zpF=5Dugui48mq-0_xxwINHJSDYvF@mV8b4|(oAI08l7LOI`S9hwT4=maR%X1Xu1j9I7;Ay`_j` zQKbNmAT{cfFJP7a1D~93R=i7}>@GzSR_EYog=JYw;5(cix4b?nSj9%#dtzw)f=bHM zEG6Z5n)SNHyTfY~qt{)Jnwaz6VXb%q51^OuG&yeJVgkume_{#vUAHWb*0_L||0}#W zu{q%^vm=UvYbj@=DEzCdo-1GrXuO)Is%7sf9BnRrildi{`vo#LkDs(9ul%hVZ=nlM zT+^!%`&Hj;ub*5yw%rG33U=$vuLm~vZ4YvA?2lj=z^mdvHMN^}NER0=7EehQ1u)4~ z*B7E(o6IK$sAn!x&)hGcxfsusX31yV{nRsQ>Y09aQN)pzrq8Pc%d=#7Sb5smqZMPt%{R^x_i%kdDfNAy=QWal|4UaPw4GOquO}ekCxkG$_u>k#@80|y zUJ)n)w+ZND1M%0oQ6tRNixGa{Uuh!j<}tvM?zNeoRM(TWOfB_^E5-uJx6i*=@a}#S zv&B_L%=hs1JLhLI2Vue8mQ_=ij&6RZKxrcKHjNMg7OyI>+4r%J(w|J2QD(? zh{0REbS^;Bm^NNRL=+iQXzAkdJUk9oxZ~iF(UMgOSYaf(#=MM4^`C?kHp_HP8p!+Q z4I#$Yy7Mg}F*rSOAw*c~3*c20`$Dt(-MrMyx~?`vgW~E3cgXk`bL3IDZ2<@PODXfR zBEI#73qZx`#B}q!jzWKb)u5Y4@m(B<>FpEL-v;x%45_~j=2Z+qV)tXuyx@7R~{uzx9Uk>IGPA$aFzygFxg-)5|| ztTyi;-qqU-dDboMESNnqL{z9>hTuVBMHPYOSw&N*X!v!Xts=w5X&zKG9VLx8bQ1+x zu_D`bgD9SOr-fv2vAya3@UE*YXr7r_f(D6?fDE^)mZoT57PL}?CX5B<3&CD@zSDXk z_50Jk#`ugP<92Z^A1pZJV-Vr~r)pm%8UY29TGEj|Ab2^ct=6r>X(CCVz(l!#eInmjKIn^&415pz9?7*87s3 zSE%;kntDWdi`Fh&~2 zG)z%1d@(8wudLtUsEOr5gEd+6GF|9K^WY%l;1kXvkbJ+&rZdc3`JT%2z?e<7K~1y1 za!u+c{1qDNM)Sz!ipFjFKtq2uC#@2-Yt&_#gPs!2HMGB}+9#$jb#C#o4b2~>ZgkdE z_Y(7(GmxK9_a<}OA|aLzM`f2Ys5MDPW$i^hlaCCcN;a9d$h>DCk$E4y%*y)|$sAB>m@ly<|Jg=v;P#!}*hlK+@ zx=d_dvqvN&?%fMUh)ynkPj-zd79&O$sXW{Jc=;x5r`WkEdTs z8PgxnLr8k5_y;)v^W)9@K>QaUu_4pz_JO$bOmqMTrHq6pj@K_1p7^K!Le});UEjZk zp8TF&u!qGvlqV1H75@g*#$xHm-y=1eT&8rcB<=m7Af4EFCooPCj|*naJn75>eM%!_ zc9VL(KxQ_BV~${cewk5(e&dQKFA+67Ly}FSu9Pz`zLH`pf|wGMKcJX!#{nvtS<)iZ zryu;YtmfuoTMZpx(Wo+f`d#NpGYF1I?uRcQ?{PA#m!0v?Z%O_C zsPunHQ2z+o{qaSuuAmn0q$(D+xCB9`DpG_q5BA4bs7~uZKdDDFQ}(SOcE~l1<_tyi zp`y_QP2i%R?R;yOz>PRKK&-V8u+>%W`ACZOA;qB}Qm$b%pD3CSMkDmdX8t zMLX?ITSN;(Km0X4TOJgUcaXy;Po`UTS$Rh>e!?guxsB?ZuJ0@Lm4W*d$mEgBB@;B_ zT=+gT;;k_1gKQN_juwZ%l*mr>WRc|1jU3S6J6$EL#%zN04Mn;_k>Vahkoxazisn&8 z^QfY^ItrRGismLolPQbX`z}$$iKZ`bRiF1+Nes+XCFK|;D5jJfWF=D+2e-@>q>a<; z8!T!5;gf>VWUg1GT}{D^MXtRclV;smuAhny2L4!aD3-Z`)IYH?npYLgy^5xUG*IYu z$|{;59j{2cE7DR`;CH&I0ymy(u_8TMDC=4lMM=9TnpKjf&uB?wX+Q5^(0f{@cABD? zMG8*bie*jnig!DU0bhNAtay?V_Y1-H)BD6<+4I>7 z3u}Qty(2j+RU9&v)K6Y!naM>f-eEEB45~b=1wN}dj8`0laYE&tt%@|BxvogviqxUE zMzb5HXxb{8QL4&aE>&`K_=+%TU8+bw^Gaz|DAM!0N>UX1mkS^cxGbw7CP+_jnZS`n zQd%=42hnvafi1|e%(T&>uT|9j6?F}Ia6!%H*tme_DYCN_8TT@xARDj9{;rAI&ftf- zq97Zj$QCHFnTia;*>h#HBEDEr-z%xbwGhk{Ba>%gQ4p)DX@vIGQqguJ?f-52Qhn3> zprSjy@;Upa;pl|ebLAaG-*!|DC)qJQ{FIzYz1oMulRoS;Xjt@Yf~-$Q1hT!yE)(tX z_ks+!ZwrA3u6p|tt2Om5U&z)Z+oN1l2y0IRt7O)l6%Tv}OSsUxRrcr;w=R;7!LrgY zJNFNeu73~SXy#}ZUnOG47V5aea=la0{8`bAh=RtWXsQ&AqxstYCM=&$il#`>+$AM+ z(LGR&?0Xv}J=9-TtGyx>Ex#F>zbcx)cKAr@|B1NuNXpgb_JN0VVK=SW{!(YFP)Xf?qM=SD8$9F^e&mEnBlFNI+S zu9~tyRWkDM^q;1w$bCwa)c!>TQ#&T4+&54{# z{Io&NB^vS98y}NS^RP$SIGi(Gp0KmyAhpC0vWja}rvDM?wcl67(ra6$rW6+@y!{KL z0H#QqMw>(!*=j}BSCQG)qUn8?DH8;cZ)V1T&6WWP#qD#Q09g zrzXrq!`eiaV)CqFg6&;lYwU+o=|S$nT;ihVUZ5o#%=P5FN8Yv30`HIZEUe=qRQi_6Xq9Xf~BEwd;A`6vrn1Bit**Ha(q{v{k*TBV! zAwwX(e4R4j$Qn*oOs-N)xXl|yk-vXK3h0;XL`|oO??egHx8xdOptV*JttC-ZjTi0L z?bv;BtOQ`Oh|AOHQ$9+oqj7bY&C>T3vO4`v zlOkxc>wQT{?&sb@1pV4ZLGz%ZsZ%ugATxWXtJ?fljnf+MwS9_ox*|=ABD+*YQ=({6 zNCWdIyD(@TgV#1`9+sZZR2M9ZTohAj~BufB%(jFI^{}8}upO zSENr7^Iz-|V*M!0US4}iR;oTrREn>93BhhUCn%N^b+-36>Vi9XmhT@vud{GWOBIJq za)7PwKo2PT56d}$G%WLOigc19y;hLY9X3w$TSe1X(e#Rf=J<=Uh-WLB>m&_*lJd6= z%l0=#^RH{AV1&I0SKT(PT%F&-04rVMU{?D*m_UDFs-=kA{*TuSjzgDg21g zT`P1d^qE0hZb+)nl@dviq~as0Q3&!ZmE&hUg-{IMN*D#%ah2OMii}6)q9EI*$Zl6; zyvHyKvX2y57ezKVIN6mp0nnI`CfQ`tY&R4#ehieoh)acbv9NV{9V4ts zSf1^K79Qw2XC?eYp!aY9epU*HMJ9tS zw!y6P4t1`n(?H=h&c)$&-p+fTIrH!~j;E4)y(aB2;}2phW8^lugS-56Ze?))^h<=; zJ*K0nPIK%Q=FLF4p8{88E%yo&r^x~ARo74$a<6dgYv?1&Wpj8N!Ovc#Jo8?_Mqviv zd*HE5@?czY&2zFehprYZCL*qo?ralCuY*?w3AQ`q_pT5<4Kz`-(>{okw;N0Hb>LF= zisZ6DalvzAkD&P2lDp>saxMj%HptnfazY@r zjoMKUQoO+ZGY*p%#QJS&a5jfSSMp4D=Z= zi}lNC4_%7@8np-U)zhFobTlh}l=d(`TTUNSpAhzN<5$ui{?yj8hdP9y6|6XoeF448 zYmn^Xs=Yp~I~~9a0sI z>oDU%sY8wvtiK5QJSg>fMMHgl%}-MqUc3ykw!8yQBX!K`5@&wBt-c=ZdrBc*UiKOf z7ekrXbf8Xq$2|v`1g?5$nNaP#v(OfJDx)0~&kF?tMLW%&#obQ+)ohh{LPt z{^85el+e`TZ$)`TJN6fCa%kjBkiQ4=Z(m>wT4!FM$Pw2M?Rgm9N(jX7Z-+|Yus{aF zPyd5{fqsPVTa%O8;+$rAm)8`lFT077l#AmDhkDAYwojDW-D#Gc+=deZ50~;f@Ea}3 zy!3;V%;)OyoX3P@Cj3=O=8ID;$$W>9xSwH@S&z$xP=mROWFgF+_OsJG1v%hj4!HFn zr{3@dQM_KE&SlUuZ-Bxr|En1}@_1h=814QOB!ycK%`>xkye~%_?+Y@Kr*ynon_N>L zZW|ZZ*XVK_NB{26c=$psfGZZO$IC;112cU_4i5c+%_CpIR#s=-FAn_;cKdKwx>h|d zC5i8bwATXTaSRPl-H4}fxDQE>$fWDlYm9CrcY9{|^E2=uSse>uhT>BJ zG}DeS)47?H_~&NrE@`PR{suRh8y|Cxs)z>JJ!p_K%q|C|*e45`b>{jRLhSK>kzya7 zV2S;Hh7Nm;ekoo9Uz7@!=*M8K&OfTNOj#RUQ*TDTn$ZjAU!?KZ9*}u$y-Hd{sm$x? zFJxXnw6XGPgS?cAx8vSE&5-LJs(Lq8()E09_Q%_{JP%mjaxa9LJV|kV18ry~dS%+d zFUPmxK%i@iSjDSf9ijAD2VIjiND>UHu93wW8DucST&frhJB^L~V=({`wV7ca`d-%N z21PdOQ6af?pUc`@7_3cCgj8*wKcb4@N$hx1MHtQz$@8F}0Konh|UFC}uYn-pZF%;^0sQX=hw8C`;q@Gu;! z;CRy=bQC;qBaS!aaU6u&$Pvqjv#9NLX7%NwamSzY0lk?_o2D{)5B9=_Kf_Es#*U*g zMPDx!U8^jmQjzU6|9W&Aj;BJ7T$~hbq^m=K394Rm72W*lLV(|VChOHR-V$Ixh8h!K zEm)73>6BkVLa6-a?vwIck|E{imiauS^7*W_mCtU3lts1O3)}S%cfr?pL_g66tK2*s z27iAZ#weFaNn#`wNWSSC>F38uK_(ASxr~E(O5trj(v{ z7n`V|INr;$Q5&1~$_hQGXnt=9!Oh<+1s4~r(3w_+HkzH;-~-9Iiex)XMV79cm5o?l zoO0MT`Ell_vbsZM)j`pySv}dxlHDH>YG8Z$k!^41S)BK;Guw1QA<(>Dc#o5O zVXeu3>@MYy6)fOm7_N7(-;0sXMGxRXSQA(Fgf%&v;|JeKp^Q-sZmJPNd3=);%HEb% zNn5bYjak!2sJr++t)o50;cZrDdn{HtRVYm#^oyJ>RXJ4!b9xFP%bsur0Q{|3lT`k8 z&p7FCzrpPg4u5-r;(9HN-f~@!{v`eFO*Fwqo1yZz_o>!<49d40c9CMRueI=fyzANW zeK(26KQ~XqB@HZwYsy;j(BgFQ5bR-(!yX3hky7rVGWk&#b?>@SN_h$<37k8vGoR&j z0Usr|Mm%?)rbayITd#PWD?>bdX^nW)&?`9NdFV`OA^*IT79vdpa}Er?Fko7EDp_&5 z6TjonO^(3|X34hsykv7H$7SQLlm_-S%s{q)42=I_U~Tt&hM_8oHxsTA%}%W0;#B?J zR$C}BW!*K!;pj9`_bWHZy8Gj-y1#&s(ECQS1MYxzC^u1&4rk_~Go4}n>EBYh#jU8D z#hMg*`A{p{Z+6RUzfp!!CA0ltz09_KFxzxH+r;lgYky0Td=EpEb$Pw2MOU=VwAfF@2(Kp=F2IS{C$S(moJBBM2 z`T2^Rab2&F#y1?TLn`DQjL%^RY}ActghQ!`uuM3<3MfW6zE(66<)WAWQ`yJmlJ~7s zg!rHNRNBWOjM=656Mn(CSI&J{g|DDqG^36P=5sK>g#lF)wfJn+q<#l?*w&dtE~eGe zb*2_!z>2}DwakLi;-IkkwtV@7;~6eyVUYFyWh~$4c<1B?b0Th}kI~esMDAl-8g)GK&Y5VV)7iam znzxkUWVCss_#G&Ii^Ojq@#_)4S@^XkyMTBf6sO{a7R38Hspd^jvB|01%ulk*z}fUv zv-?~`SFPfs&P&RTmVQrJ_uAEX*;u?M1iXqJFrunX0LoZ9Lv=qu;6}Wi{dM`dobDvx z3NOxhT8jCPu?}y@o3FgJ5vv1un-^bK2>D7wE^hkp8Ef(BO?(n0*Poq`>ssu=2Me>? z;;ZesdUjh^QvW1Z(v7LEr0gVDI}gGIsjhZj{0{(rQ>tsR7dLii<6|+N484HCOnmg+ zi!a}JaA{aJ?hz9>zJTLFxF^`SJ>bco8;d>Q=mtjyyv1PY2FqfQm68WOBjlXmV5P%xmuItFBb#Er*cGK)2Q+tppH7Zii0gf#pqfo-&Nmw<)=tqe3JprPSV z<5~r1U=tOtBw-1lm|2OE0?wAzZ&yj&m87K6PTWr8YBx*7wtI#Tq2hA^z)lxXuO!fG z_zS-C0mxUu*-Hf8u97(TDpXu+1HK}*-7|~@-!juOvWh3jn>wN+Sk30;KVHfL^F;`{IZ8W9I7VxS_>YxoNt@t6R0ui)%dfw!w94jm~}CxnhfY`bR!ws=y8cy_Ta zpk7I!*YFoPbJR&`3#eBTAhxG?#7ZNE@(>`6hX(W-5eGVANFzWRm%8;D5r;HlNRyHL zMLpb%Lp>CnT`cf+mBdjGh3bT;hlp+WjKCI8DizNz)&9&G0>>F{Zz*twON;O|MP!7o{xq+@rPpvH2QV%GUQ; zjY&&nnus*~#E>Q;4bl3+Q$!m6H8PC=Jhw_Z5o!2|flfpklT4W=A`L$=q=`t`uEA48 z8vdg)jQ~7p$w(8ChMySdM5Hk(MW%^J!%qxpBGQLD#*p~3*fIJKt?)&zec4ILq;l+Kn$)hjN)*I10eJc2|7kV zx*P$W3j9>vb1Lvt|1U>CV0$e_L1@U{YcW2-NB*+2^nz=NX93Rw-b*jQH~$uUdjZGy z{<3@P1-*#(2HqR^b$S6l|F_tC9dLa5FZ+7E;5y>h1HT@)TQ9(u02h1Rz}>(-Iy=wB zUJr1<>}_q^coQ* zy%z?G^Ci^+0Dlb;mXa8#2=p5MTJ6f3q2T_Ns(qD6aJ&^hCv7Gp#D(cvpr*7H8fVs; z@-w~0W-qSt!gdY5Jyit1Y(6{}_p@_4%P&2BR>xI>_~Uype-&F~SST3HWu%JLe6iNE z?GpvVd%78N zb8=4FW;`V>V8CZZ_js1H0E#R|EZ`h^qj~SR?e*0kr=kKLY(3-vOn}}M?M}y1SSc1l zN}1@^0u>q$<8398vB`Y-r|q~+r-B*o`KD_eKf1l0vcOK_9PyAB@49=l2B(%|UF2+U zbzVxs-uAx0WSJHyN-}5RLmxA};+^7>qv8kzzT{<&S}lY;*pxzclU*hA^uL>?6N*C$ zxoM*z^9soP9MlW~8H-9&&Tg|1s|-@+Zu7w3w$*$5zn!v8?g;q;k5bn~_)vWy`NBU+ z5&q@`o-xjxvZXvG9TkYO&us_X@$-+pfX&R|gy?B=$OBr~H{Rf_R zgphsyMJyi*e|QNCzsY>~ZfIeehR7CmlhfFX@=v^fu3o~Pum+1TzQ8n5jldJ)8B&&G z>&iZ(BdZ>o$f|E*)s3yNCuYxOS{~uRso*6oVQx#Y zvetVK$~QI>QM(YORWCaVfNM~&?5rXVA|heznVuyHEPWuk{$}jEcY8bu?8^H)iuPkj z(ZnZeSeMyY`&H!&eIio%#@?@9&v%<~tAwqM+#R&Fchf3a0@%5&=C=F(X4xOC;qT_%NW_YoQbz!ov65>)R5#Xs zQoY9A8GIM|=38#2@51*-l|8syqa>6$U4hp>6eGjCVGr?J-cVO#O-{?eBSpp!UIXn1 zw?h2j4Gf$uz0IHh#kIDs_ddgAXzaPcZ+-eS!;{kv(u80w2_WVl!$}Cc5MB)}A{o!k zNlRh=fT@Im)>))Y7h!&O4=uvO`&qUYVI}$wV|rR8bm;M)?&Z=tnz>F@!>L}P!RQ21 z{ZZOnDqeHt$QYk7Ic+v#%#>&8WhbZ22ja!&U=du1pa)-tMeto2#A~#o9@9ky%$Ikw zf^^F_eFts8u}&A_;0=iB_atFmZ%!H|2oa|{MNEH-##YRAFiW_srOpT=e(dW(;kpqM zlq_o@1Shf_@=vi!+I9DAOT6qORLL%@RSFl+qXLBWNw{;W&4+Z~doSW@oRDDs&y*mK zMYLlE6d~=o2bXQ%M#x6$=e4x+@mN zU~!FN0cGW5A4A-K!;4S=P1cRbP3=jn*tR^fv10+l!fq*Pw zk1P=sH9!JkPe_0nhXGVjL{P*H7Zgz01Z6V;S;d82aKjFuf(r&eK>p9Is;=tpOqTKc zyQ(!p+A;L^W+3)cae z{j3YhjGp|Am!8ZX5fm1Dk!Jt+MAAWygm_&*Bm<)PpBy3u1pdj~J6rE19xo(my%!LO z`ngw&B8c-2F2XA!e>(C%^()U0u7f5_Z=(x9>UVRVt&z#=AZ&8VEr4kih1S01JYwQxhK>!@R!~l)} zU^xdU06;cw#k;7}0KmSKd$q$E1n_|bXwCtC2fzy);2!`C<^aEd)fD806Yu*Aq>)@Wp{kF1E9_G$xI)>xjkAR6)nO*2Oz_B)M1nBE<gV;9X~V zelo!ZPjM2-1epngP0=8~K>2-}pg-})w)c6FM~~KvoLdO{&iinnKfyv^CX{n3-fIjsNkJf2g!%bi+V*-ax+g=0{V zTIr>_u2kuN+iBCB&eD@9gE&akW$S?%Ik8zU{<%k6DbWeYgt9BGHM60`Pe{NBA+uSi|ft^e6x!lqP`55WTIWr+Pz*+gr;vcw1 zUPj$OxO)bro6MXRTUzaXFZqGEqoQ;dp^>Ack+X2BtaOF70m~6yQwWVYwHo+o`WT~@ z5GZJs2(L?o!)P=(!YYOE`7exNLO3@@B4E`ug)m$qER+bV6+*5;Sfvm!YNQY%Btj2~ zuudU36hfLpz*1}q;X8O*&O>#Hut6dGt`Pcg+a?~+p;HLUB*GW6Zf#Krs}({mgUkB|^MJ$X5sh6hgd0NH!vT3m?gOpotG$hP?{m zE!K=Oi>jg!sQ)8nSR@g4NH1|nA%rP}9m=9m4-`UgiI6Q3zEKEY{UmwFRtTs>3L#WS z(A%ctDtl`sz<@`kL8cqCe+hTWNH|}~G|YunrqfZIlZWiY_Y>pOV*@_I?=pTd<6;A* z;I{?8>-gEn#|F&8Zx?H&E>sl9JU>H2RZ{eeRvOyd5MYV%;X^e70T6v85j@RO`b@e1La zlTv%fM@jlkHL15mSSb;@D}>6b6h~cB22)K6l?bU4Az2~xQZn>YGMFsr0NgIG2X{$? zz6#;@mO^N#Y@?kL zgAFwrjQj(MP@0EWI4cA7AHSP2Q62Gn8ozz`)tDF?kc{7A{Ep*Se^P9~Nc`T!@BiQ* zlAh!Kq0M0BAAZg)dc-z&I1Q{WL0IzG-27tO`n*bGXT}D2=FJMm!CCo>;_o>Jr|S|) zEN)nUav_O^I*~ z@1%GsiWI^xM`S53q{>oYtvrP=QX+gJ5w0nOHx$A<3c=*78c2l65~0%VQk$KXHb*Oj z$BZ(Z8K(2_fJC@iAp|OfMhd~??Ov7$f6I2GxodSVUh1E}AbXTX(iDi*TX&Wqsu_$`Ahl1(;*68V zImha-ufr|!ny#9`2NlReN)n})IV&ujY?2_V8SJb;j;o-cc(ATq{q=0!z01ch+ag0M;= zl-3NUEnGb#HsHaju>slm?ZB_fwAg@n{9O3$$FJ7(*ns}{y@Rmz0)F>Tjtxl1ZykPr z;n#LbY(N%%oAJAf-!k0$J${XV`#65T;};NK%D=!$m8%5ZbaQZ3{qNQElk$(ZR1c|P z3$0n}*4klpZu2`{U;Z+0kKgE{+T%}hi^6SlYr@5{{`>KnEM9l!nd0@wt4hy(uk!tG zPS@4QMkk~-H5#bf^%m)|(iOrl%3Hjr5KQgxPXly>DH0)5A-tgw9#aUW9^Xod5F-($ zD1;FTAxa{Y@Hayw$e+^R%v2zEDUcth=~R@cTj3JqeF?(8ZRc^#G3EJQRv7(uE?5am9XD3CY>(oKO-=idnOS$~}qqs-dk4P@`2C0Rh*P=TzkS|Q_isU?F`X^9D9ASVRVpWX93e$h zn1|aq$K>IbVYZU!X%wg$IZ`rh_HbSL>bgnf1rH*VZtUWt6pdWrq@H>uQJt%J|etwQuoti1y zza(iNS6_*8^nsGW=odxv>Eg@!N>szxZ`<#Rkm4ZySEa_~~OP ze%fo&d~UCQchl`PciV;BqB^#@d-ZtjzKP6Q*UUFr>%H`69$#E3kb1tJEEzJ5n@mjB zIi4tc+V?Ajt_tDm1gRyHo?A|elQ;VVE}QH54;in;D1=r@h8Tr_ z#Y&a6u8|09Btl1pa4BE%aJi@C0ZW%EgeN7!lMxi3-7B@6ieYi<~MMR!Ib!;mq5GUJ4=M3(3R%takrF{gnu8R=sL!PgkM+=XQKEZ%8eW>4go-p%6-a~vX{bP! z!b=z>St>zPq&Z4~oY*BLIg=zMp|7BfAbll>iZmZnAkQn1mlOzn5@iGll^`n8d`f}z zQXu^l$O;R{-b9@f6=`NDkPAw=H5JH83&e(QN?^Woa8zaP*zM?M`JkcQtX{LbOm)Ds)Cd+-nQ(OJ&`I}9W z_e{n#SBKqmDkdc=%b?nVFvT#n8itZregAx_UkNchK=t@XovOmgo4hDPyIuZ1os5ub9R=A z&ug5|af;8(sYKcHJ&lxg@y68vVOJJme>!jX-CD{R@WqylrKNL-udV3gfUnc|OpWu^ zw=R7#^83f~8!B%zM@83`HIIhM)36kzDYCk_1Q;~FL8%gzvBk*^+Jmf-Rvw2T3WNO>zh&mpwpQ{e?l`62aRYcPY~h2)rf_^KA% zSUU1NJbGH1TpynI4*o&BvB?DtKU9gaWIU=!Bp z#n;yT+1J*U5^}rhUt6=kVR>jR@+0UV!P6D>J*!B3(vHu~Tp%2)7~17NEA%NO@Wj{E zi)ccWH|(}IAU~@Lzjj5xw}_uV^D2E^{UEKk`xmk#dOh@!G5@;y^NGB~t3TDhuI}da ze3DFEFoXwJDV*|PHfS#8pb3WGtR~IhTJn#i_r3D#YTIm@bHcwaY-!6ohzRj~cLQ($ zX2>ew%`CD5`Xq&JzQc^38BGKwH0c`3wp`CG3Y>5|!*Fb@%%-{Q+& z=9|M#bnw!TyykA3R!ag>D*U4tETbTE8 zY>Y;r0z-P4zOZCjYNKnaFY6G#oD7LA>%bk)0_Av4PT)+m-fS==xwgSIl$$N~B)a(yGkO_@R0Y7K*$1ga{qU8MvdJ6 z1!h#u{a=V}-uEyz+1}kIlyI<(ZjRk;vp3<60%m=`B0|^{4t;CyH#J*dNTNF;(LFji z(VZ1a28Ufj%m#;LrqP1+3U;>d6-q0MRC4Azf`iZ3&{r1GI;@7lIX!Xc+@=>vf#!_o zR`H-wAbMxW1#-~Wex9MB&eI0$c{ln_(zlhLrEza>*hc!&k6HQsPG#jSmkKM-9G>Vk zSor2~yez#j_`nw~L2q3eVjPNMw(u!$N*gr)(P)E?+y?_P6D400g+Hm$`eboobr`#w z>74P}BraSwk9UdY@oz@pLG7-Ogq3Dg!Qv*B%3S?~TWQ7Z)9CN|rE?CRY^5964BPBc z+~56yPa>@T?rGGbO)+F~9quz*Tm$&KE^NJ<>iDQ7H3Hu`MhU&9hUVL&nO^<(dmq2! z%kM3i$t z_U>w-+fx_Y?3Z9qFeEs>u1lL?!Rc(+k8l{t7^dU#`Gv;PQ?P~+A^I?Qiq+4Pis30n z7(K-Z<|(?kM?~j$ZVhuA;e;DW7Uni0CckqEUBtJxowM|dsrk9=xfJxIK7laK*Gfw& z_Qy&~GWM5^aMUVa##m`OECAzucD2Nk-ulL%dkeo5K_3?}D}27Qvcjc{OSi%&ALBf( z$ACgfE9?u_%)aS6bRk6RYyP9zPK;LA#g><4wZZ`=U}=Tf3f+8%8NCcE91LKpE%6`t zXN9T-{%`hpb`0ln{{8qCkyXAt*q&{64tH@cED|oxF6{ApvPZHLZE!=gf9q0OJO^iI zhqH6)&MrFNo=hHaG%lv=7gO@>S^v=ke)xtjqw`K-9&kN`Ycdhi>2P#MgzcICXt9oF1_k7KVR~h@ zYP6=8(!M|Om$7|&Q+V_FO?Cah!1R9v`geNoddwsl z3Gdj*V``z7-%$>1wX!TSimcQVbnj3xmKayR$pPUW+oG}C)u7!%*D5m;=}TxcqUs%C1xijW_PQY@j}d@7?|KD2{BIzG2dP##jGX8 ztZSRSRkHa5iRqb{ij~GP8*QT6sI{(7egWTHBVY-kF~#TFvl5)IgspwtxK$8-GJ}<5 zHVJGhNqu^`>wviQtXL%*zIk?M2__9&BAKWf_$54{9q9mu^k|l8>qlei= zZgCS^UJ@b_PXXpRdWv$3TG;YhBb{5+*_PLYLKWb3*?yup4|~1cfiyRv-vC+=cLarn zoF8VR%bMtYmj()Gr$mfzM!<#cN%UZUi*K~`h*z;dTMy4CG& zZpTO8#m?O6x6w*{eNo&v8~Kb0-LXiYwFIkLdqduWy&+G67mzQ=>-u;>ZkwBhx}|*`9*TtnS!E9*n-MF~G|8w@xE<>i zk}=I*4obO={7n_ZyC9o5u4VQ#KaOLDU%iCkpP_XDykV7TCK$PwDHwAThClOZY4|ip z&}8^Khx6jS^p?T!uL#3G`?@szp2)~OO$(!>*SVw%Nzzpr-y3~mESI!F31@Q}!|afB zfLBNw9W5pO#w{iN4v;2EV}+!bFmNE9O(j$TGTIJG(l?NiOWN5sdpi=G)0^o|?}t>= zKcS-`UnkNLF*<1=7sSBLhg4Ib{!gb9foKmM0beLn~ zEke-eUK5mNbfd4clj_rKi5hoMJrXTc&aOic&bT0}7|p05Ad+>6%&nq8ytoNQ#ni&h zC?|8OwiHt|x|Hl1oXd(N2#y*-bK+ z@(R^FgOr@leq7SAPYXUfD@irHwGez>f)9|A9va5^3^qy{B_w@VNxFp`2jg?7kvnSDJkkqlUWiaD2-z}ue8J}jY2XHA1OGtSScX1KAlrLbIO-Q+Hw&e1Ss|GH24dq;JS!s~6 zosjZoC1pA?aW0=UO8F3%l0I$G2J|-B=D@Lx%iI#SIgZ}3VBa*C;IdZ}DdpunDJ8A3 zDmDI~kg|?Z%FaT{M_!R!et}F}%IQWaom@)xqV3NUFQbr;ZU#Tb?+BH_9UR=-!qVpZIpto>A z{~~!zg2p0tgrH4yL04idOep=WTuJAee?h15O>Yw+?9LSiVfzYUYbaqSAtM(ymkIkS z{^t$GKrU=F2|L{^?9j&;s|8f44Z`vozc-ZYe~w_b7rGKc;LEe5z{OWA0xuoR*{x+1 zc&HF~$a2YUJ~DEF=UUhu!3DOHz{|`6uO7n$u0u7)Ah2WOLwu-z|7;;_7u6OgC}DeB zg$)tHj-q#`Y?X2Z{*MY_*DRC5)m+(#qo%jxLMAkQ41*=wXUt+RaAtxk&iPnC zYyy7)T9aE@N8lHVD;r@Y_UEp`tIyca{d8Ar(aBtXl z`ZkIp$R&-W;dacHg^Y(7vXF5Dc_D|;t54kyrU*M&wN%vf*Jx1Ng%(V!%N@ELS|Ny?WT|$b`>8Uco`jPT`ZZXi-B< z*v*Ixr)j4Ve2HkR6g|$45-&(*!2C6nwzjU`^|#w*zYSiwyuZ?%6VIG%T!2kxw)Hy0 zwK<_=q_izLtn^NNGWG^E;&cb&?0@;cp$p^;#?TbmGp@3%a&F02)K|K^9Ivo$MqaTX zbqp;?ZKtj1hG8*wHg6>nFB`pKzxL!s|NA9$LT&oPe%qlFV7n|nPWLwQ@oKnFKE_fM@0mkyDH;z_c;vgX6kRB!aTv4i*kXQF2^CTBx*sw;0i z%=I$;Hl3rMw%PQdB;HQn3+HB;KQ)%-H;_}(5^E4sd6C-)2L^!7=WgvtRZ>hITZ3Q! zV`)TjjwwydQ4rNnwoXD#!L4QH_YNkJ$JzHiI?iqU8^1g*D;|pL@Gl6wk zV=#BgX`H)+aqKf>)MUT-G-+(fN)08Ap-Md^!Dz%M!{E!rxXsNO)pCmiGlFu9L#BI@0M?qc>g*% z-f-Yiox~!;PS03Ojq_1EWqC3pLw)$C-+6c_{8LRTiWonjq7+e4ibAHfaeDhXxsVTG zh8b4S+aSWq-+#Gaax)Ml1A;I&!vy0#LtJ4#!{{#pP(O@m`*-H_p)=-mDE4kP-oNl? zb2|GMbJ~v0ciDcOSX>a}U$6mGM@&@2YJ~WF!cmYzgI~K~wTamNI2z?T_&j|z!WN+o z>E4k(EK0;${6Q4>@V7Tu&=emV?9t|+1zYH@jPb8Uw2)!4+EFyEASZz8u)Z;m*e}#` zOzVwKffHXcfE{)FzQXe_oiy%eig&4xoPdJefvvV-hfr(^>UM;>9JQTpN4U!o;dVs1 z98Hmkb~~W)PQkc`L<_d9?-EH{h~io(au~1G#%@vJ*nra!o@SeHG&s#RV;higV-(Pg zH#W6x=oF1@MbmUZ?8wyu*IK$9EsfV&;aY2#qqXr`8(eGaa=jh0DKvC#fhH`^n^9h*nBQ9meNm8Ij4fgk%cF785;} z032{k027(c0tcVa!dM0m4!j<8@YjQ&*X2mol8+T(2(Vu;?eU>?zHosO(MUvVZIQt2 zQq)p<5{y3CiB<6Mh0CsJ2iw+!7lz71@;z)8&x4(6gC-pHPnexYi)f+`*-x~=eoDoE zO~+4T1+0bx?4t$_FsE8L)OI=Q-~g+-9fx`@$6e0c?GfN16g-5p_gd~i7z!B~mf26k zCV^yR-CUikc{)`Wm#}j!yHtbBj^7n3F4gjMsx292PD*CUy3?3aogk5lbEgd4E~Tpad$^Jb$Mw$R1Y zs?qJ(53c5Xx<)ykr>llcObTJNs1#Hl*_o*J%{j604xPXE4a;t3LhtHABHN zv0Y#mUEm5aRn38YW`g#7LJ^`PJP`(f>!E1{j#_~br4#d<_zSb^MC5>P3MJp<#9d^J z2`)!XTtjVP*J_Dtw>mxDB51E`1XqE@p^2VtPEYrUM0e*1Z3v!avRdr;?G5VBWy4uV z{N3Fv*ww3gn!8s`W=gO}cdrOnFCmw?xZHpE)CV>|B9%-K*ty$-u`NxB+UxEb?dsYZ zH7Z!kL2K>wbdDyMZ^v~iO&9uO38hHy#r*L&JfVPAyQEeS0mt@yM|Hh<P&qm8C5I zzV|C-)&FnHI{?j+$;J%oDnlP|WuhJ2cvy(W{AYFW9Ra?h1g&TuU?NaMfrC$ofQDR- z6zzw$|G<1`l?m*3gT1O)tr-kDu`5`=P>>d?)&H5bkugZbXtj{g8C0I8)b{G0|0Glr zgfek~8gc1M^pBXqa&tA+DEz&y{v?z#yh8q_@5AhyhQ1E^3WhCLjafr+8+kxUk;U_P zB!z5yobDc>t{&kyM7VlHC3>HcVyjbCZWudqOkUun&+ zurQ5ZY0Iy$AdO#%;a5b6M#$JNm5|%p`ftM*#8@ZWoutvpwl1FUaem0@8EAKUrl9XS zeYdmyXS<|O&voVPfcAM#hay&!eA%{>YwjuKw9Cs(WM`^4il>c-d!g{C^qgW&aqqabQpi!8JuIQ@~6oEJ5Y=qSap&jkud3W;qO?zmP zDOy|UbQY~ptKdDrp2@2L^SKqM;*cO6wVuy-f)jS-WJ8_Y^}2HC19SM{6?7c(!Y%V=ZTylJZoz`Le0=K+zc_#ryM9B}jh z%zzE?avFd^Eg9fV`0k$pB9^LIT#J2#V1O#5{r~zdY+ME5FbgQ){1lFrQwr9VH5Dr<-fsn*zn^2ZAuL^` znBUSjlss|s20)_EK8A&YXuOJm=0$*x?m;qjY+0Xn*v^G79mJYw__aTTbu92ZhF?Qi z&N%#D!B3Atpx9n}V0#6QP{84t6fg<{6#g*h3uc?VSr+3X*pG*Dp=XQ?x!a?)zrqe6 zGV30Ux*9R4@GMgN3G)8O2}Qp@OWVcoPu4!+Cs91(YMD_82>I&r=i@QKgZ)lA4 z9gYsQxdQsBN1rNt^tfN_B8GLF82_e?cNX7aYEWW||8R1S(P?9bR?R7|U zbo>ehPjFA&M$2V%UDANBFk)}Djof{-3yY0VpMx!zQS}4@L0jmdVVx5xiQLaAZ(x%bIn6wM%&$kM}6Y+dV-G-#b z#FlKbG4RJblh85ak6qQ-YKPY~lJX}wTW1T1Em~59QT59-J~WrJi*ia`kjY4U+e=x1 z=?=WSBQT@dW;^cG`u#~_7{~PF{X6r`_lMK{jY{0l#+&)jtT$*F%X0DW8w_&@MJQ4?438@Z^9J zB8vNmFC_kIY>pDZF9CR=aCdePsEJ{{s%;m;y*^4!C^zSObMGR zU?2AlEA4$M!?KjGEz4AD`4*U;5B=Np(n$UPURG%=_GvTY*|i#zPg<(Y>;B+%-D%(_ zXZu1>p$&qFsFJB#Z+;S^CGe9_%`T` zfm%@%+8%D*zCTn12c%_(VK88bbzTAD#iQ;AWHQ zark1ixwm_`_7k&Qgbw8C5hmgVMU?(Zy1>rjO-$BB_&F>>>~$Zd+5e`VSa*aTeejmZ z{V>AE#K;)W!@*eGDcapV*iG9+BbH@8KT5lsip5$hl8KF1A|Rn{mF?2q>;BnuY?GY` zOd_!$Qw+(32hrPb@{WTFUptG3)0w$}7WzPb=Ac82`I8X#Ufo6<2ct-UXLCaG@!lQt zLNF-`WeKJ?@l*r3-7((ohAw*noIWdHo7#Ztw*5r@n|Fh>A;&(ilJi4}sY6=8* zlHdq~*=zjzc%el>1qS@lhhs+{`N@@QeSGCVU7`FdD1U9A`L&YIFWKv~!$kPU^#_^x zGNWMSXa~PH;WHwzGR1Pf#wVTL{=wQWhs9Vw+B4ycscAE~W##WnjQwsRkFNEhM_c(j zSXfg2lKIJ%YqfplpNSWUzW9epALDWLDbzD*Z_QyZU089A_Ci*|Oa!K)TZz#kWYO4( z5B)OzWQYfu?4vaK%=VQ^upBX$W z9t^%}>BZyz#vmX3jk2Ew^fc;^h26HTlr=oE@S1>|=M zr}GGY9))ypAnvF}is&5d>coay;ElS#^K`0;Yt>wx@P-T?QCvgEeTOZyGYvB0Wrr9n z-|p&$$hyOieXW>Ehz0PQ@nRpNz+F)x7y}LXBaUchRpDjKA-J4c` zbnW~(UQmUw=O-$qM3ADCQlAa-glo%7pxyChrHaXe@?>d4O5~sVamn()UrD|byv`V{ zk;umQCb!jWGvga$q;4n1#GSz|CpG8n1)SR%?Q&vcL7nwhd+3#w=$e~bQ`uiq&+A9D zuP@}JvFF+GJntr>8)5d%r?chT$-eE}zU{DY%*KSHfqg3h)ES;vvOU5`DtjS+sa0|A zmy9jIyVzVaK!jVe2_tOc!RfgyStAv#~%={apoS3wYj zcmf>2lp?82KWGL+K&{%XrM^VLR}q7f<0vGG>|K;6Z|vmYjE-8A5I38iU=a5vwP3tVbK%gwTS{ zY=n?Krf>$n3Gj72ja|n}M?D(siwjHulq}q~-cDPQ^0eyzp}e%|_ZOOT!AbgBuIA=@ zU>P(4?FCF^hZ%IkAnHh0H(WZXEy@-5G!*wt;P*7bJ*jSfk3C!56DjWL$?vIzz=-wa zRX1Kpqv{ieTtb#i?-rnWY6=j{7h}RyQy?Y7TVwxSmM3ezr91_g?=H%-XfBs^*DOnU zUgP&rc_Los_oUCXlxHTtr()#+vGwO#1bI*ah_V>^t5W`rUQ4!{mHc1N;j&e+%Ksx~ zouiB-fAU0r&l(KwF}>>g_>A9Emi)ftiL%NwiQ|xcw9e+w%E%GV((U76CC|e7{GJG_ zJk86O$4CDynY{{N8|R|;#s(gvw8(@LXr%C-49j2c)@Y)3*xEU$vq%nj?Nb`)nc3PycHCw$=Oncxc{ z4R#=JGcqhPAQArFP9b(ms}r7`F^&k^;%)TzRJP_PO8V5#_n|QRwfgv|4khUtEs#PU zBuhrdWC4NE&6pHq$NP-IDtpXl4O#Xxn0E>enXr)~Bq@_0CQ|f86hkqy6blniKtZR{ z!o-&OU=`I@MpyPMrmyf{n7#sMbA7!%OxM?EI1~DM{T8V&_i!oNcfBj1FKR(8>Pkl` zidg3#<^wgIjaSkSPzR~$`(;8+INy3J&8DPRN=!}Ld?@Mg zR$}>pHU;0=>6ZE_3{sfht*j^pmM4H^Ec+}yB|m}v`6$n5W`4}{;L&-RYVk5bn+LV^ zKeIBu!gg;tsC6C689t~D!5IxhQ+awVQ04Jng0QSS^nEW*QfLT;J_W)2SSqGBtnDvk zbO*I}@SPjVfME}TbL<6)(`@zcgu@o4A@c<sFY>PU=1}Shwa&IMZ$CXRls1Z_wQr%jNoPMk5CHAimbqZD$tDQP|Fro>UDC zMNzf``3=)LPz~bND6f?con>L(SSoofHckHuUifd+j&x>^`8EOaPyLYdXbonqvytilCR{?Ren-F^+kbj1+6JP z6;6>MR9z|%O3(VF$oeVI+BJ)34f$<6Wla)t$7#BA9io@iAu`Tp89j{AJww>@!E^l{ zM!i7^wAB05=p@ew%-?70jH1X~X4g`jKw$g(7}y(V$%#`K6mP>?PZc<5!&cO&KpR&1W_VDDHHag1jnUh% z;}r3f+lJ+}g`1dzxdcWD$xP0TaJ3x{6VrrKX$j2NY#0Zz4&M^ ztp4llL+Tk%pJwHmFkQ5NvOFztCjHl9RhFFUdfQiOThZ@H?!RVatLN;1)d}s~R(e?~ z8c#$TO0fGoR)V$DcnJpd*ERAK&O|&BiP-~s{HFw&-;GG6&PsAA@n1#dS@fVPX$+U= zZXwT}e!4uTaVF%+Kz~xm^ET{85OW<-Z8`E7yn8ad`yuY#X%-N|lq|UpG=I_I?h8NJ zW;FUha9|o%EPA7m>=0ANy!4#~wzw&XE8>kjCc|O9)(Eb*{23&YI}?r$+1UM9RJr8+ zkBR%AXZORgQy!Rm`~)%=nobt9vp>w5wmo+zT{JZgMQ9x8nNJJ5?=3K*1V*J95~G+& z%`wQ)SK-Zzj<9bJmpW7+L^H{~9qkBk&^~COAncchL;;h65P0p2(-EqT

    9+Ggb6# z$;*zcrRUlFInT3HUf&S)3yS6W{Es4MV=VS17e3$FPw8c_dID; z@nb1nvOu^vjg_t|HhD5i8h0@!1v$`17^3rWzsT_^%Yo{VPSqpJ>DdyQP2F^SB199; z&|2C3x5thf;o*rW6k_`QAdw{ZZI3H|;(WE`lJ~?sQz5yxO*ObwT|L~eDw)mV36c5A zRIXGQu(8-l7s(JTc^o3o=OPbY1D2borpWV*$ipgu)etPt`T0j)upvB8*LvpXkV=rl zsFF`ajwUPzqyl>nO_nBb;U;p*L}b?p9IX|5w#fbK6yl-`g;rdj_>3fxX{|4b@)z~_ zxi$7W%dIgHVqmple4JvpRM_UM|9U_hM$%wrEYl3UlkF)28A66J?_m(6n{) zCOE&7m512i*^++d&ra}SR(wesz7^TdPUa8RJw+WvLEIwmJpY66knmR?JlIl~-V+F~ z3k2yYn3wdO$0hQli#*a(l#yqo$kRdOk)EQAJa&;MSma@zg5u=avUEe>2g^XHArSJj zI6u-;l#%D0Fs)}<9#6b8p-H@*Erx|RzfU+ln8J9VI2pk%u6k-0IlY)-jSr#{@r9K$ zcM4x)3NMK9Nm@VzYsVWF-2*4NTXVR+MQh1k9H&jE2~E4vT2#RwwZ`<9;sQXbhqW&n z|6EyyErKL-|H#mS(x{H=AMuF-M*F65QEuOR&KT?)12nL2i;>Jc4daEIpE-$Y8;g=z zeVsX%gP{8~tun>Pqhy1`$9QCelpqi~G6eEL-ZqcSBQ;Vp9(28utnE;8iQ0Z-ByXCE zvDzLzKb3ozOf+YuKJmxzxXgQbo&_%Q^X$PLqcA?j{F%2+CTfT7bbYkMjqc?ja|Fmj z0RoX*<%qJEE<*N6p4-WDv-!>?{UUsc(JwwMGTlm$g%F*9EBi^}Zv8 zP2Yg<>mX)_Nq=?((bonPLus;wUD~H%4na&!Xc(SNtEX$ zmPe{=UQ4dBk>a6E4>Og8u?5c$Xj`en!BqAY&ZuB0lxqkhn9A3%7`~6n$GTQ=Z-Jl> zM0`#~Iq(m;#sgZT30zyBUcZO5g+FyiQ^pzp;!(wTd?L|BjHBD>G!izKhV_W@CU0}f zzZy@Fz#z))q;O{QG<;J}?-WIi32DLU|N9#b zuo`Q40Pp!Hd5w9H`d5tpJ~)GfaQaLIaZ{uUo;}6fyD~8myyzy@DUw64#Ik)`Mogm^HwAG^k5diA#(GKzqPdVdm?Vs)CxhfV2x}>d@H9HhoP#s%!2zwj zs5qd_kTuQBLDgu^L7)J5`yk`s*(W#$?eL0%bC8TPQU1OevivKrmT7_~glb+(=f!W2 z+f62j;{TIHXl&RxsPjp^(n}K*gv#PC6p+abQWU@Q*PLb#>IpCY_w7*pW7MKZ6WEKC zHs-WmYky}iHon#R-&I*S+IMh6;am8Rrgbm;j!o;1t8aHrw>dVl7mnVrf4_!+!mhvsb^Ubt~d%osK$&Tk^#%nC#*?K)W0<_m1|-)3-5O z{IVHe{1RU%$i**x?he^pJMp;28GM<;&ciem#Z1KI^-1hxxELeoU=gY)fCf%bnMIl*p z=V2emvxzvQuNX{o5Z^X1r{N9iy97pq^C&*7Hnf<&;K|+P)Zu8pLe7P35UfD4f-r0M z#kA$8*-Db_cW2Z|@El6W&7z1e!4sO~v4?8kUEa?^JT@o3#a(2lLC2TzN20z=qfw2) zky(z7)spZ8Z&*JpmrasHYr8P&j%v@&cekaHeVRVco}06aHd#WxnONuq{MC{2%PR;TsS0P$%hJR{M)nO01fYjUl3;JJ9$e_#)uG&cf&>UbxjZQJY*(6aLBY#(l;DRXgA zm_La5{oasPllUw)eO?=%%7)v;7AHGsOOP<_tfT{PYENdpL*z3TOd*`A4BvBewS zx$V~0y8;7f*GAiH+TUI5_CTwOdBbiIqE<#%ffiP@^fitkURHJfAKPrNEJSNd zAwJ6VRS0Afg*d7g;@z)Aw5;>1)y0zcoZMPgx!!+>%k?ILa4y%MfOKp;NpgLQ(~cdO zT#DRfpPI?7=Tj~`N67V~F4x0ME_CELxskOQxgjOUor(2$b#gxw?JvmP)l?^!wi+;z zTlgR^#P{g(@j~3s3h@gSq9zsMAxj~SY&936e}*q|VOydQzv+ee?Mst|47-&TVmDv< z*kB<&5pwH=`1hE!km4qKAz<(3LPUx})RTo6gIgRM|DZz9DzP0MmO|9B6yn(lz6ycC zEK!IndLdpsY%0XkTC5PAOBBM6wF>n@v{8j&P|HA01DwiPv$9W8*a{ z#9W-_7S*xMrXb$y{8#I>#jJ%d$NMS(hRs9)s!(`_&#|-=riI~o2BwqcavlPeH ztIlN`^XAg>e?wte)MtvuxZ{dM8oi;9$Gky(zTn+(bmZbgskyP!H^foʒG3(qG~ zzn!flZa^C#(2{}HfQ{tQ%rI}zZ~Hi!6KEJhLCZ>LD9v7NDxtY=rqwB}@=_C8VLt9* zu4k{-eJA)3t2j2!7}K#maZ(x`ZLI~UN&PZGM_@li$LtF<$ie!xya0-h&AW9vw5OpG zw}Fm20*&bS3L_>&F46ITKqES$&2)?uJ{~$cf zvv65hca!%L_Wr6M2^tIPo3E-rCR`e;{}-Q=8u8T-0sc*^#~V#PPXLn1UwlHDd=&vm zCeQo{=ocPfG6A0N3ADGYXfp*`I?xV}%vG-e|5vo%lZV#V+id0ClE`NuNyf z03Gpp?ghNo(?__#MJkQT0?6WUhqvQwpZoNLSjV=pzPvPyhkuxxJZvYVJ3}+LjiiLL zMbx>I-J8yfK`b}dO7$uu;nrCh=pCgIU-T>V1G5(&^OsAAKZ3QTd$lGIU#xZ>K{b6$ z$4+H=$lBJj^h7JJTg*cvR9S8jDv5$hm`}5lf}=_5wyA#<@b7~Kf1R1aBkeU9(O^?Cc&6Jp(e3NA`fX^2(uY#Klj6(?r6qT!=ms^T!g z6%Eh8?Ut)j=(Derzi2!}RjeSctH}poK5hxsX0_lYN#3ITzpi> zTON5!@(d}ugU{j)z9~&-H)_VwlL|NlZ!v zje%o(S&hLR1gMi;vN5Q*zxY9Hd~$B1?k|R+j+NpsPON57x8UQVGR}-;nPoZU?k$(X7p0oSfh8?c#$c-T_pk| zif>0YBS*vI+Xy;AJ1*kewQ#>OzCB6Py^Vky1t5!WMJPk@?fEU-0MJgvV+IB5Ac*)j zl>v(Q)?)?yPykYVd-g%D6pC+`3cytEzq()=rXJtg2$03M9j$2S{6k(D-+tVc0A+le z#;jBivnYTo8Q-q^L};9PzH3Zg&G5yHy)R!t)G(7uMqKoMjD2@?-08W*d%0VqxJolW zK7rXYtefk|xzd{&w*~K^wXx+5#Q%<*!saXy$P>$1Vija?2N75sFf ziR(tq)MeH^yTuhnr_Qhb+UTrU&>%zjLuqI$#rYYM-tlA2z zfx>!)sf1ynnkcN93~L_8ddG@&kHTuyOUm^ceI~{xZn8#2%GHWt**VrwD^`@k8pxs* zR>r3`ODu$JO0HivQ5pZ@eATjI-KDVR$4R-m-^W^D;)_~fDc4I3YZX__!z?Q4LkSj* zFnzJJce%0xGX{{dSl3fTCeKc_aO^NV{}K88*EY$rU>2f!{vGW3A~K1$Vs%hhod!#+ zx0tyzeWATmSO?)c7Z!@hRf_X0ouvWi#>~SMmNOtgUVkP|A30Me6odHH@%Q{vr77Q ziX`{_fJS;{FjcHZdN~SDawAT%;>}lh0~B5(RZ%f@T=DYldcjNKJdSrQ%Oc-%3a_fd z`}Py5Fq0FRBk?+Lywz5`B?@m-e_7r+3J){Qm3(a_-UZYn@HfPYw_M?kQFv_?o~hEF zg}Y^TP`Hfag;?=cD!jT1@2qktn4zxZdtS$5k=?dQ7V_RwV9UD6!tOcB!e{a*5k{~C z308@A`jp*cWvH0v5_u2iwBWZ3zuJ-Q0!HHZ5q^O%GQICiM?dX(dVg-uKff>Sc@yn$ zSQKoVds?^W@Z-#$k47nb-apY&GFM?781Zx<00H2S444SETT+ zJS6ef)7&%OSeWeZCW+US<2AG5T~l~(E4-oWrFH}TdG{~q_{R_N%*S5l(htQ8>p&dQ*uPeZw!o zhhvVLT|2WM6HY&amT9Z{Xd1Haf#?o1PoKhUaklJ&w?9S)4``EamlIFL9ZC8fYUU}{ zJ;=BTYYzW&zOudLW&7oVz>HX0nG!2r{~J2~el`&mPc3gIYP8ntC0l?!@3O7SDVhsI ziwa{x>Y`U@LMnfwhlMI0$G8@KypEor7I)UBn&5Ky`{qR1{8c0V?3};v*O~bX<@`0c zs`IyEpOwFl5O{#U=1-aVd!Vl5Puvlr-*E%@tGUz%e|=sqmA{~$4g87qs?)JvHM2jg zR~?$*#tJO%2@y_D(Bk7|^B0vll}zu=wMOc?c;iB0c(MOt6$Wqj-P-8AR^DF6+c5C< z52lE7yX#w*?5-Fyl*EK*amP3M9XEitV@rJSR&RN!yzT!Hyp_Y(sAFaGRh{!SagBv9 z8~CdGkKilj3oBoXLl|ELW6gXWtRwjncf6tBaRc~z`vo6-T|nh6rJgSTp?tpD94(tK zVPEkdSojJ7Uv8bR;5}Bp2H~|3?CXWc&3wHQCixO~Wa@X^0KO(a?}M)`sH~;%^~Cq( z^A&WYY`%nj)p_5-S1|ZmtMhfVz{=M=yo~~1k3MGR>nTi%67^Bs5vSjA1Ncf7a%zhDxGLYu*Hd_v0KOg=W9I82%)b(Ri95pdJ8l49 zbr<>IYcQNzDfSg|x_rLg__}PqM15TUu7xk`6BpL2Q1F%Yxs|VPd7N?cXft0nO!X3c zi93FNRNQd`_$qwX2VYI$)Joy&)T#3M%KWNAe9d{s!WXrV_2MhLf zB+bm%=}^g+xZ`8}jvK(&re}QcbrqGg6uwrUET6Bq!)5c8!rRAwZ~Nejt#w54MEFiC zUmX#igRi$nnfdy_CixO~%+~L?0era^`rvCHDrqTvO+QgSUtwRC%~v?*tI;Y8U*zwP z{VwcF+ivCS0N&PsuSp}#e9f#O`4V^Z)$h0gd<|IOgRf=JmC9GraqxwX58nEQY#l+p zMi z9pgiCuhhxVx2t}N?*hF7(HwRH#5!`@uo(cBgFS+pMqNC%yl-6;ug4>Jf{*23jsSVmUlp zUQP5ilbRe_=&)@FNb4M1rBY_CgxqbFoVn)$GtXnfDIPos>tJ{69)rigIGf^_guJ%S zVRz${gC}`v0+`a6IEybB33wxB3@0`@Y^$FKN->nMp;DS7wo0wcT3FPfQbMj4n0dhf zKd%Fae*#AVKOCn?#HX~vf6-6;2!UT;;p5bVkF>&%^$-7QJjXwUqu}Q-PL24KR`|zIgZ<#A z-rXGk8p?=6F;YL)b)!~BmQBe75)_rH~As|dk=7Y zFOC9#7EX=$lvemJ`iDPO*iRCU0>2YZjrf#S__6-sSI1Nj;^$Yz&kq)UD6R16`*J_{ z8QYHIC*i2ek5iNUNM|Dq%}{Y6PtV? zz-n^;>%_Zv<$pIfLSg7_?S?3}Ry3^x&HTO`?Ud_r=XP94nnrt*i=&~v$w0D1d(#{3 zP1s|kceFQOIO(ISOVEqY_67nO+Z)eAtaKq`apZ)BJc3ibfM{>RC{69n4hFo0Df~;- z-UL#6Q;o{Iy<~gSv=fI9!BN0h!l@CS(xh(=&+X|;LwisrzNil&sy>8R>O+`bA2>d@ zCo_Jh*eXn4KIDIox0fMa*sD|^yd1+S<*&FjqV=?NT#Jq^dH(Vi%+?8(jHD{4>kq6I#Vq?}PW z>fodtN@q4E<+LK@)JMFDB#!O)Cf;$r5``*`?PS5KLkgC-y5e!d`c^PKkNIny97Rt zIzCQK_(=Ox-^aA#klk=3lj?+{jz=a%X+P`xqz2{N)4F@`Sk(9Da5U8SJS2VB_bK>` zvZuqSHx+3=PPE~r+k&GYY%Nap0+KyZx&&cmv>7oSIb>ZNiLjbD>UcyLrOku^tn3OH ze|Kqw$^PB=+MKV4aWwGN1xeq0wZmT&U*izxR)nu6!howQ0}iwpFr`)f3uggzMg8Mg zIBf(gAxSt2b#%h1P9Ld*(yD&&_}SbZmZ6)$ynh$cQTFdbTAKTJVU$+*Jbtb){=P^q z|7skC{3~&4l%LWH{|XOBD(c@8MP+P;qrh)qsE@=Cr4{~*{^4)o@pH&>89#?SYmT48 zD6R1Q^nYWcgnn_<^@~#@Kb??P_`dvK8T#EvUIX^C8b_UfoEq_0lAo}~J7qw|*5r`4 z<4D!H7LGa|RcA{3S)C_g$89H zPU7vHyky7MKuNb z8G)lgKYft&t)FgGZ=`+GJ*g+B4!a^XWmA_449sY{?+mph$x8f-Dv(8}O zq#sHv{rKsxPKtPBtBOa~S>h2&D||ow)!n-2_N}N-KOn{Z-T3IDQC@ z0>2VYjrf#S_zOa2N+Lw)!N$rAN}jW550zfgVPh;N#0he1KE+_sbk#ZrYf`hu|pSE8)}#PifLOhxc=Qmb#TR7&8P%f!`aaMtn*u zd_Tu$r}6kEY>13+!g`zIn-EGXd_Tu$FWkrF-;bk^e+N#D@>5#j`#C<_w3^@_N1cD1 z8u2S3t?>OEpKaPw;Nz&{Z@8u2Nu@ckU0y>N@*A4i>k zoEq_WAg%DZzpn86iL2b-g`JZAF6^+`--S?G;d6goVf-ys1wT0I{NU6m|FcLdeD1F+ zj6asQ2VqIFJqYV$ZVy5zt?;?Ot}uQgk1xZT$@ns?fjPbmp)~nx@(&dmpRFoP=G?u^ zUx)pGqs|BXbqJ-&U;8mWdmHAdlo!8rqK+K=^*uNm{B><4OZaOxK3k2tbuxabXngrD z-eysNHc!6r3du3Q@Cu`}ieLPTFR#|&@TYL(_7rj$r#gSs{!^Ot&BssujW2KF`1^5W z@gSZJX zDg9sd^PUJsyf_N@S%!Fo;3@sz^}{Pq2(?E{KRD{LGyNd#zkZHjUP*cNXI%)_&vQ5$ z^pl6AZ~aWcUzC2Hso;2Yd+zW<>Pd$mQq%14!ziuv6T>_FD&8sc{X?P{uV|*mD;ikF zD=4k><7a$(^=58fr*PEkCr))0vHFR$Kk;pBLk@X6j->KhIO=$$a!UId-~JL(zP=9! zaD9J>qe0)VBk5b;OYs+_?~3}%$KmZ+eZ*0(kA?<;)kkU&7ctgqJU@ zI*z=)h6Ngmi252rX|g}wp`txPs^X4#YzibY}c9@&P5K1e2U;X(q z@TWE4{0zZS$ln{MM)@hN@O|~?%fPSBo2Rf}W%CsFgSmMMp>&DN2cd6N-#4&x;7 zs9`@C#!t{>gizYtp9dJ5f3ySBX?@PO>RP#cf7<(BXqtMt-mqw#!iUns8{#y{b12D^ z60UQGH6@)izxQ_hDYI#!XAhf(ORM!_E*bp0d3@9;52p9-tHkxO8b{#LBUa*6Vgr}b zqz{hE_C6_Neyjz*!!>TNcj74UYvI(0Pickk;Bp(@pOz{Aw96cS2#x~3H%^WClveoP z-%|GcJ&XMHs&Rg5#je;@3Z{A1zVNWV!q3j9t6|3~suTH)vThi{H282`q2g7Ectg7bg3fB5@E{aUT+ z*GfzMqO_8KJ2rE&&hIV5{s)VAt0RlInEWjb@fOKXX@&oYfB4fb3IB$p;J-Icjrygu z!VmNhe_s*DUyY-{Ux`yAKBX1@tN3oj4}QkdC=1ySj=KHe)QI1S##Lnd;_wguDk>}C zpTbe#AGXwAN-O;DeSAMshJO9_pE>^F?<*Gk#{@b7ENkbfT^iwIkdqmD0zBTV=-Bq8y)>RqM^;0yh(R{C8j^lQQ=9ZP)LC6VU2 zS3v&3S2;f&aTM~m#Hp2^`*BU-U*q3+R0MzCMUMXjjskx;PObPuaZTCKav%7%*;pbW zfPdqJHd524(j&%7`HMdz7Dw@n`*CW0#(lV^$`H$+!Qwa4ZyER-g$=!^Y-qj@8+w{- zNXCc9_;(}{U;jSK(!QS**jp9$Iv?2Y6Sl0w(>b=}ACs}llHY{@it6wf6=Mw*F_zJW z22z|QZK$q6{&Mhxg$)({PxAjAPObbO$2G;zCN}I|Zv5O-#GfH5{;VY8PowPD|2Fb7 zgkx8fpH-qy>}Gvp*2c^bePZJ?rcl3F@^b~&XpH~Mu%DR9od3Ew3j3^qQ!78!a82RA zSaJNL=ehlF!jS^pwKy8V1K{9R<634bdMVmDvB{3KG;91Hs^n*VDp|keHwSNxXm?f& z4jquR9P?w{&+Y#<^ z)N?x`oSsg>_yc`@8f;tNC9*nh!L?A_X1rD#*TRv>c&(moL#GIrBO*=DTh-;b8`m1J z3ob_k!o#(Dum+IM5agM>zHE8qy+kVGvtNHlzY>(DVw+^_2@gPxaV87sq*4_)q7bIBYFK*cz%`6l^UTm$4bD zBUxOIaXC`l%nC=k9cg5O&H`qG^mmtThbxf4^;J0Vd^xn*nJZ@v{)c7K;%n}lE$q@Z zerXpDFyNzfD9Aa3gUGlWr>-0g|7%}2D56E~gA=eaSg`hHTQb`?)D!GH>2Tpobkf!s zI%|QuV(6|IEt}t!D(^~_cRhmK!{zni^7;r|A1SYol-Eb$dYZhRCa*t=r;Vnkjn-=6 zX-@BADr|yx9@{BJyWWQ6oK0mGne!qkA@b)%ZbHK8nN4(1O&aaMLerF>8^$_Zd6C;F zv0*k*BoQbf5k5x(k0q+;v2@ht;;{=8JiEwd)9GvaEON4rVUD4W!A9fN{gp5Kov`lz zZ){^@1ns&js{pxS`LERW4XZ6Avz;Z#BiC5V3X4xBgVA}Lt}!r+YDTq9uY7p6 zoob#7z8`N`3LNa2%H2@=_#zjU2^y~FXE*^JX&a{{B}!pUmsyRdscBb#-<1@wopwUPh5I>JRL=bbLRseJa?-;k(9U zI0SqcP`zLTM$QhP1_LdPziEM@Y`qABcu}riq+!g&h>!2n>qR`K`1K-uoiMK}i7;O2 zO2S#H7Xi&%X~vU#z@%V4#xs0X2WTjB2yl74`MKYFQj2n}VFH-RHh|FDtOJDu&H4(B zib5XSscC$fx-SdkrS1cHJ`9sUVh_o<|I8mKNg0kId6;jw?-Cz>{|2|mVQg$`!|ieD zrNQker1nK_lr`W2zU$tUysND=aHY4P-`>)|jcNE#$A9LyA%PoHxbi-HzESt3_&iJV zQ+3~=Wr3>}c}BGS;F%6p{h_injXznBFG<6I!PSN!h1w9`tkyub7Tk>>%Du*`1&tla8mmmM?-*wb-{wVVl{h$(Ye*yuu+AS~>&V~A7Lm$g`wh0zB5pURzKk=86~nV&B4!yq zB~pnimLauz=aOm z=)x5J!b~J#JP_SHE^uL%ej&d2a!sW_Fx=~JEs%l37Z{%8(}$;Pp(pBz9OU8SMru$Q zo`jsh?bHj#1#W*DkHGEE@>{pJ(4)11#&IHCzkM@)OG6Klb>t5W%RmW3GRz{5$nfd- z8b@j9`6SG#{Q+3@t%YXhkv{zr6u*$a1rWFx#pkQy57#dS%yRl#l0VSX9~hB>f3Hu+ zZK|Q?Ymlk|69zo>`jL!hIh{P#@SfIMq%wNyBhrm`kA`Iyyi30ShEY)qit$5(sqy>i zr2MVSEJtRRu`N8a(jVMltVddD@M*^853v+!NPZc~xTKwD*c}l%Qthe8xnElQ(>K$qr`yGne?>vVX$XtSl77EeB=nPVk z#O)PaZ~WSaquf5YGW1)Ca+~1hiN8yfT7qIJ2ZXUci8&T*bRWAN|{q^xb$UOvGTl zVV`7siGi&RX?Un?Vz}NwmtzB(HjyGb*UqK}&>J+#X7&dfDkWCMS=0c4tfxn7gN}zn zOl;R1=1KNq$zEb-Q#0rd%kXO~=^1U8GQY#Ekt~Pj<^GI%RH!ug4XLkCw~wBnMu2lr zOX)|72z}4AOH=g=(TA(DV(WxDD5Mck2&%XG0zJ{gp%9i(5pF$v8TGE{9R_h9@6=B04BD}GBuOT2ivsVRLPHIY7V5Pr4LVrnQC zjj08=lmNf%$86B}OD6R$3`6K?w@VmmWRo$A!%BT@G;WqC*AKZ@OO$JcPFP9N;4BfP zAv8b6v?zLF z#7?~-i_%&fGVxH|o*0O?D)0b2aY}EfqO?}l8}ydmki^N{2O6Zk8>lsPRzLt_@pjBk zV$RRlUWKWoCTUF%GmB|RB?VH^Z?6_Oi>>;=jo#2D2O9;ieL|x{c{&muO5&_s{YLco zi_?wT-rS@-yTSyimaaV~ziUi;nVneO!^_PjNAN)M1>@fv8ga0(VFi^Nm<%13pDmo4 zoSv&s&UN?hs`{#LVgaaNw_GAmeqdbkUSZYv>4&Tuv*GNh6wSy3MOk`Lf0>l>oODQ_ z2(!`BKv9KWG%Qe5sTW-yD5}zn#srG0^`h~Cq8h!ZHc(Wj7flH?*HdFP&m@6p);W9| zhv#va{DFby1suMg!;3ilD2G`Dn|aJ?Uc%`waXLw;-uxPV*)`B9gJ->%ffaZ`tY>M# z5g=IR!IXk&Fr}P_lw5fyS5k%`1-zhlG)XB%N`<6UNXjsz!2G9oDkbG|q*O^tm86V8 zO0}fGV@qX?M@o&P)JRG#QtBk7PEw|5!Nz*310iQVaXRw~S;Q>KqL5?}>ySmflPn5J z7I6|;#7fDckYo{Kk+sOmqL5?}pOHn37AOiy7O@>!#COS}kYrISAd8wovM3~3+$iE$ zfasHyLG;x}C!xQ5560GC?273x-UW6p41r5j_m#poult7aEaY;yM0FoLqSd-@e85+u z`)bKK@0(&8J1l4H9o5-MFJ_Ur>cvy9H?W*FECR`T1Iw9Gbu4G>I@KFk&R7%b>_62= zk>v8+u;JUyRBy}-GNnJ=pFyff3ntH;tS)2~S0ZM>G+l%afzv8^zI1Ojl~yX-)Zn2T zA-uSflrFlz2cL3XQ&@+g8B>MO&=jM0FPi?5eTrcT8isse_;`Y`p>ZSWp%E1ntuo$F z(Hae|$$F4zJS{2nNk}Mh5heb6+LvwfJWJp z`$g%y3&)<11t|iVAfAvT21~j)2FWL3-E*=F_Ot~Kq1~Qv^lv7 z*!M?^MTbJ=d5zQ)*d+kx`_OEolSHZzsWKk_JLQDA1n#1w;H*W!OCp3NBrb~V5n7X> z^0=k>YgbfnblI?mRW=A3G1ct9$~BY@35IhHql>Jm!C{~wiB>O=#N0p<*ohen_gAPu zb{ybAJivpbQ|D<*z|kqGXN0$wIesg@B8o(BFh?}ypg|v!RwIEM^%s_vSdL~t#xfY} z;%N3^-0#wpJ-DkK6oPI;w~&k@yTbL#NtV>OnvfEKb4td^vr-an>D(hswRihHO$lyVE6tTcyT z?C_Zfzr_+Kx=+DomTp?frUk^4rD?@6U(gRe^GWGuw}Z2Ml6QzcDN73tK8LF@6@6|} zHr~m_zlQ$`pg4xJ3f7`4RwAhi|JC@fG4fXKr=@8uG!#JMd9}X)$_6X+vU**b;WZvO z8sZz6xI8@?7kGDT}^_2>LHaTnNHHfv|?;IckH`B(nYu{dn6yz9_ z@ayPJO8>k0&$>`A3v^KHYVT-)67-CGwaKHztCyf(Bp<(n+Jx4|N^q{W6CDr(^AuHs}H}=E23R~z*bbagodzc)oZ9VzTPFmYa>9>>Df&$m1;h7$`f;A-g z6TYdm3@cb(tYG1DR(q?YVDEO41U%UZwkCbE8I_Ny4{ zSEZh!-(##_X>D)&bG}pSSEYS^c6O$O)~_x-lVv0J`qkyP;)O8jfP93Kd)>{fN9fG$ z)Z9LEjoDnnbQ*wo>mg~X@b#jY_GGO6TaGbJIS~%Mi|OEYPs!D>4v1A=A+nCa%g}=4U$`ONxZ2oBa%egeVh%Roh1!1>N)FzM(lOAmlA}>) z>lzF}OhO$<5UFWYSA)9^s`HdKoXR z#nXCeiF#=>W#T16y|ml;(iZj7K6-+b6dy=|m#PDHg2=)N!(s@~))4L(PyOrMEdf&r#y#H{v3DqW=9EtI`S7r3&*xgiD+HFEl<0wg^ zs!2ry}h%m3Ep+>w~n@Rodw)tuNBfP-$nV zv@?;0t#gczJd=d)ETo;S(#}?C{gBpQrS(^71CR#t8TK5Nb}rJegOtZE?GqPV6a! zgS`;jAC>D>qJ#t@|7_?e zTR$agKmI0#!hZbow*Oo9WA2mxU)zsI^=`+0JhsNwer%X6!ixP*|477sJXLp*kGS@u z+x+E+fWiWMmA2T!hJs*uF_x;$AG|RVoAF78X+J;7aH*b;H{lCR?!wDWblQM+CEI`K z?+YU^V^D`!vd508|>u7iD{IWW*g1EbR=d{Vx}W83yIm3nC(c+ zMWRNDnj^6SiItRC=}5%X-0rZTe-G-1ipjW>82vT|z;B(!{BdslJB!v}fGo%;?vJ{=Q>P$f-sAwcFXq%L|%dO)kvwJ`y$ zTGz%0v>IKj4QO?`Hl;MQsGiIS%x-|m-tg2F8=gvO!9nd+CU-1rBRlRCk{~6auI7ia}@zx#2XtVQ+Wpj{Ja5E5N$mAHM;e_a^A)aX6RL zhv2s~v{=K#A1DKQYu8s9CIMyXT5zp# z51|cDQ{f}Q*nm0yI>h}vG!y`GRBj+2qeB5Y))=H#0}uLIwWN$kN{yt@f*#(fMM|Bd z(1IRPruakinUmNcQA4OhyvjoRF|R}vTLPMeV+EStNFjjv^~U!QqCC1r3L`u6C?t7* zQ+dQ<$)k|ueTWc>V76oN=8uD=2;#N8N+EfbR^st0^B=GN4X^rx&AjkVm29LC-YnG{ zsS%Jxt-y6_lzk19MQwsCY81($kU&ur0Y5hpJUcf5Kjy5wr-7y|q?v3Fk7bvz{otk# zpK1)(hmNU;slA{wpdMv1DeDcfmIk%>TceP@j7YQ{*qC*YSuJ}XWTOL;i0^pUkau_E z!4pmA3Qa z^@eKv8WaAM1V3Y#bIP>G-1wOfEyP;vKN?^D+9~$>6uuG*`~LH zEE=?HAK}A;YO~gRgeL%-z8cC<3zQ*JhK^t6)yv>suFG`Oilw0%tnWnYCoNQiehi1& zP+%D9)rVqd=CTFc+#W4Zj>K}WUY-`vNltW~R=A-uTk!A)x@M5t#FkFzPBKyP&DKT6 z5w*Opupk}&4Y;qdsgSl+PP^3FRCuwEHWd!%y@o{{Nl^@k?Y_~-k#HTY#eTk$((h(E zpg=ZLG{~o0tZnRAik$~40=y7U`y^>)TW=%+0oj6w>|y-iw7tB5oLQQ)t#*(<*foPT ztb<3LU`&+KmPb^9_pp;Q2KB{?HKlneEt}FXZsU-TV7n)GuhqF1Q5iA!JYxJiwO+{w z26rHK8UUEZkP$%LIF}?Gxm8H2pc8kkzG{_(mT9QxT(zoCHAb4W5Bn1klm5B{S<;); zqP;j7kiS-dHq*l%;6dLLvFM|>)cjPf5LaN+@-kU(q{(SD#vQdC{OPH7B^}$B<*-Tg z_D$KzK-I;6HU4X`z1lc)@6WW!TbBIK?qIqCu;aToMS@r|K||Eh&T+E-reNN8Io_|5 zMtSH)n%5T8SrW%%v)}c)XKQ%pe`Lb&ST#OtKh_MhPaVyf`z;a|<{U;pMH2M5)+YVwa3{hHT$4-4> zEuGrzk5}N7!}RfSdIfxDhTe+^agkR3s%Ue4*jjl^{_U9dKS%%LSB9NIw5@&ifBT%A zLT`f24dp|Jo6@O6nU=mlF}=3;1x;YuoR?#H7L#~XQTbo|A_1{|Wrf%rTL@iIm<#S{ zctX|61_;D))Q&em)FO=4^ukI0KvM(A!GjK?Vn4#|cwo;%)7=!sOZdMP|5JQx3a54O zt!b)9Iz4Bo=S=l%QcqnyXR9Y|lPtR+N~<>R+TmxX;W0% z6qPm=Y135NG?g|T$71V2jU;nWa+p)dq^he-3aZRT3ck`r{7{(`RGG6RlbED3DX21= zC6hR(GAXDssab%Q*r_rps4|0+Njz4W6jYfZ$t1?BObV(@IvotO)Ep|4f+~|_0GZTA zDwBdL^G?a6hEtgoRGB0-fTYG$nG{r+^AS{C7OT!A)Uv&06rG2;agw8Fn*Bv}7AO!X z20k2~OXC!s5r^)^f0gd5X0=_5$Rvy}B+Pga*8&YJ%YgtYHO& z2Q?oaEW>LWScKQ`=!QfV;5EE=t%Ke`tXso7WRS(eyM|AlcYvwMqH7Okru`RvzW}J_ z?H0-(H|JKavRW){K@BWFKNvu+0po{Je~_OI+X2|8#_k6A*{~S^CsODr`yIbP54P(- zi>VL0v`<0}NQks>86SMbkteOuG<4t$ds@-JN@2A~!^Tlq*!-hTnUdm1?+Tm`Az%`E(SUMu+h@g>pRnV?S-tgx+*(Al*(BNl41?VG_s=xM=c6Z+`Jt>~vFd~4y;)p`lTZiG zEBWmA#+hKQ12(2%9U-6n-biD=H`1_Dn?;54iwaN4;MbtQ^X z-~AI^+RLdAoeGELFVXel>9q=Tyg4Y%HU6JpCDv#14p^8E5)hvgUnqdt6Y&?f31AT! zP3JYLe`50ywj?G{#$^(NF-bdiOF0(4z?&^;OCZ6tm`hJ1L(;aWGV(ZlQN7_tUNJ6tSYV?%~lty7{bzBqE^gP1K)`^~;Q2&1C zrvFpzjTV!NJN)TzBDkNgwkI0M6b|qm+y(+DV;X!{v*~SkUh)Y-zJ?#v!=7VTgWZ z780`&#(vW)?G{0ThD_`-eW)JI37;s5F*g>nYKG_!%|jfy)SHF`9$JJ4HnTqTs6?qJ z;T<}eQ5t%JRw4qyd&>o=na)-NS<}6Es$2@H-1}56dHYl@1y$}}RPF;^7tG4gMt#qY73nI74c?3r~v?l8e35hhHdw$OSYRbc8i zJl9f<@Z8L>KhOOX6PHlImeL%fHp3q*fR|%b60)}-46&V>g77wky(Gd28@w^4g~5VY zhiY71ZLgJJH>{dGkbOq_)6KvC$aqKpd#cr57^~!ojMkPIw(G%WXV0XmEl)bt zkS^ykpwOwgO=m0hN#s-O;X$p3M++Xt@C&0fjnv_Q?8T3zPR{*>u#;o%Eo3)!F58b} zd|@u9_7+xAi1+H%(Eh$U%AG>n0ZH-DoPh)6 zDt)bbZdT7NcvAj0dg6UU#lPh^%tIIiFb&O_7t_TiCFEUFrz ztupILn8#4%sj~j~rY8#oMwUH)X36d6+P6m1rV&le>Ij1 zT91dim?Z3AGu0?uWObHUq^*@KYDUDU74?Q~_>~1ey@9GEyADAaj)SmK z)2=H*&bLggmO5fPGM{hp0GD=EUP|LWkEeNQM?^wBe1qO@3*I(Ee`ipV*74o8FXW`k zr^z1Z#N9k~CEbUUDur;sbi4Sqow!cPI`M*&Dmd{1?}eOH;XubyKB=<(BH$Nfb0U!8 z_zYI!L&*m-GV9n2rtfs@CAiPe$7g`1RgTYWKg2?n9|P5j6+~BjR0pB<+h4=4P_?g< z{tDhprGpGM~va0|o zZQ6?=gWRS)BuwNPhYH3jBS`|;#?MDPJIi*&tTwgque-wHZ^KG%tCb8Dq?#Kq3x-PL zX$fQ*k4QkZ)!m3OPH=tYC}0Y7kp7GKLxkB8U+&De%74mPK5hFkd|W~>g~9_Q%=JE1 z!c60F5@s4xISiJjNI>a^UygEAm;6DehSB4cmm8ckv{1eOayHh6(@blE)aZ@-S$+ru1ZR;v7(=k6jxgo{qfW`~Xp##E+W^Kk8MbYhM21Q# zjKfe*NK~eAs03itSQ7QoaeLd0OK&qqT5v9zY_oOpW%$7>VUcJVK{{_ z{QNUx$O3dW{xNGVadK&MPxQN=^TMiN@vEQBuZES}=Q=ceN(`?t761+b&6q0zC3p>p zVgBmSM?YIQSRbvWR#!4blI^I2yG->!SD<>F$@N&l@PQSZMWz@-Fvy~%kSvtcJmC$@bA8%YYwBObE1>x~wFaY@Cyqr1isnj52rSnF%)c8p|GrR|8wr z(rG{Jid$)KO!7-4ntY5H)4O!z?H<&m*b`=~pb%~AwC@B-`30PkyFkMBo|6LP^3%~y zS}?iVE}sTPyZlETeg`h^sV?SD{Sf z2nq?ATo$e_xsr56!)hYNCX?x_r^dyuXSqs(E+n9up0yY!HHj}-#Fxg;ex+FQF_)3{ z9zuzwxT^$he})zumQhJfhegeXuv=OExRrIKc|`n{RHNxfkN~P0R#TBs5DPB|>s^Xp zi-cd<1FZI%=j2!B^A3JpJDJ<-*pb4oDteLmb=VQqWVdBxA;m~mk=-cP*mt<(P=7IY zsK_FU{DUK<8Fj`7DpX;-t3sJZ3x$NIOb>Y4jdW1MY9d&8iv63oZ4WXx5BMye;@;mh z2*B0-tqRpswp!Ee+jB%;cv!C0{h|DM{y=_xzrFszP4nO^97h-Y=HkLF?5Uh*Y_7q5 zG~+xsB%eFKR}yDcjiXinT)h_8ZsXQ1YPSkw|5iBHJ>C&G8!$S{lLGO^s| zNiEOvoH`6Cr(*M#XX%Js&(hM28ofMM9|jcIaF!)FK0J(AM81??ulNL&#?f2xkkB1C zX{2tj@v?>L(6E|nO84pVc+dA;n?h#jF~uX>qh>x|s*seC>ST!Dcm*Z!IV%TMFC zD3N72-6&hx)>azAn1s87vPyGWYOzp_kRSJC_=9j401t2P%!S?ur^!2q9f2BhaxspP z=pzN=Lh^bv5iulFgsWi6P8Nm6)fIMMviduT9GbiCY^%Ac(^*6F*y57x~>s zb!7RyC{?6%Gg6EK6(MbGWUEL$Mfz}r{9L_M2>0VsNCcG&Mw^ZKi3OD?3nQ5OKZ!5s zU3->AFUz;d#LA5hdPn{h?}n1QDtfC4l<9rgEA;Zb<8Bq9>KM9;aDSVuB8w>JdX5nB zV^k>1xQs&Kz3g#P8_r(FqQ*ZYU}?j((D;le(CJ!$6cuU9QWYsEVy2h9V%+snTbsvw zF|Ce#?(vRH^LPv1^mxlQc~Y_O!&~s3C$%Kav$P}=X>EFbX0YJjdfDeNC<6J|X;82u zQ1)-+_Sf_2T%t!W+u=za4)}|+J*lHM0iOmu*`CaTp1`Bw%}P&Z*(o|MO$#M|4^HW2 z9?#OUa{=_77ASZHfar>&K+wn<03uvc<5_xVJ*d}tY=t|#r{~n+_#btOKKxvx&_lc} z`_33Ffj5o*6d*2@6;YR*^@DWDZNz|v)h&2PhvfF4jU!oKhb)DCkZMD8*+Fa#RT86NQ8*Mh~KYGQ81^$iSM~%LwdU)uFcA ztBbg1n~bLz6*nk&`GwC@ZE;d?Ea@gaok^I`&Me*xx1j6~X zVn_S@`gy36|J&=0X@alPm?(iPW4u|yRaOb4E1hP8gyH`;5oqiC6ypk@ zm0HtqL7j5-zujtWVvEoxMNWQ`zMOW5$wgCMYTLmVkDrT6nV;~Sq_>SoQyeu3JqCzf zI2u;p(It-hDlg)v2eUjZL4A!)64oiaio@kq#;X#@HlCM&*I0~za7hOKO~wOX$Kq00 z`BxW*l}{3FjAX1LkL6NArBNt>EMu?)QjGoxgv;Y;u4RUm*V9>FYLAVb_bM#8D4W{% ztAE9!T-rDcUl{$3E3=IUl9m3u8v!A&S|JX)BM!rNNF;s#xM8P4V>as$cQlp&hT)s5 zIrvNU{iBmfmMMQfesuu#EqAsTHX<0$TKKY6H6J|?e4j_w_X-Q2N#C$`@LBqFWD(Uh zLZ2SV&`y17y?+ez#(tmL$@u!8#0}T?4|l`AH0phu|4LtPH^=81H9pT^m?%R_wV(|T zg*i8p-{*HU+t1{8|G3!He3@zVbZ@vweVXE(?0zIf4^0K zQ-WtC2oIV^6okodm2vzbw6uk*LkAqBI@;+7NJpzz^qqJB_`~~0mGO@bj5gc&Py#8& zdISW&Zr1;ccs<7EALxH296$8Gh0T=j+PK)9;=WYq47`Is^nC&woZV6%ZHW!Aqzt=e5!e-Lj zKQ6Wide01(rxasX+j`ZyW_x_~`2p0wITGIk7QS57I(HoizUh(phFbW{`VKh|e4Zf= z{;Bc(*FV;iy|)DP8Q)2mB-{8WhcUi?B7tne!P^B3?EL1fLRhKAKtZ~EejSlA* z^Qh0&fF^K88k zA%g!z|JOZtDfzjddsjI9Y5x)Z6-EW&3gi7BpT(vB^G^Q({mCT%XPW%~>@$=Z45z>H zPB;G3-aUu>a5SC#QS=vo7nlBH z!eyv^`R@k$_nvOjfBz@Z^ryMf&wB%H{mId2`b!C4nEZUQD=z(gBIp-?JcgZ2@XPpp ztDwu)f}5eEJu~@4cPM${KpK4x>en(Zkk>1am!ju&4di+Cydwg6X?otVdLDL1=V6&J zKLwdY51(H>53eE3i&vd#SU}8A10bhq!MAA5^E|y6pJy*g*NcG(i++?gP%rLN z33@R;&(3Klkvo5+niTT1|;DuNa9mRf8b{u>P~qi4{13Xg&2Sm**zhJf+o z7GXpf{DU(Sfv+U^m)ziQXpV-DK8u@+ad&wZA-RE&h_EvqgD}|M$1Q;`ua=nCNQd9Z z7aEabG_O!+r7?CY?;Q=JVU9df-uQE=e+Ae7W0(3r=R$wf*$*N8B{%pR^yvCW!!!SC z-QZ7{oe2D5qQAcz{BsGxljGj_@gtY|zZp!Vd~)0yFS)_D%}oSeBl>II;5Xfw2z(3I z-wl5HU5UUiA^0CZbgBQ``O)z4Yw~cTbRO+Q$0^P{s8l3$Sd)jV!t=UP3ieUsTspKHpVMR=Hc-#Q_1gKJb-7_1 zh*@7jH{pzCNmsoX$24tyg%g@3IHAe<3I{Y;^y{Qk~`-_iYLGqu+c zH~7&DquVPQp645#+~7Cen+SXzmB0FLF7!WlUn1~4@XU0BKjFb>_;~Vm0U?Qyw~NoE zmXEJ5M=U)sc?%zJnEuu8yVQU5qG zBV7CAWi_||doK0A;ju*ErTyLDM?W47AGiGpNksb}b5;WF|I&Zc{@Gmr%`WwSkaz5b z+Z*xdpH4_3=r8HtKK=7wJTUrgec4Ts9jPz>a%N0@30>J4I?)9cN9WG#c*Xpy55D} zGoN*Dzwq%zC-^aL@a4}%!^fy^79lx-kT~i~^NB~o>l<~$H`V#v=MGH2gwwx(>%Y#W z{+=b#^v9BaH~0r%Oa#83%Fl3vzu=`r;JN>O^{yNJFGs`2Si|6jf1Qvc@?f~Q3a<54&G@}<%Ii!Of|(Lcrwe(thF;A^=4Zt!i( z6MiV?VV|kGbhjEeM5Xy5GAg zw7kr~?)PIJFx^LNw?yl+F!&9v!WJ7o$8uk`51(a(qTr7?Ao#K<_$~(kpJsH6g8%jT z1nb{x`66nVb!#Fy5Lh0D!8w|>+a6P+uwDCl7`C|WQDF>@g5U9W;_z9;kF_TAV`jAU1<5tfFvRii3ca0b3yhwM z-ZxiA)0-1TFRvsy=#5@kVtOYKGSjom^w!^-0KIYV9-}2aY)^yXT!fQ^E47vTI%+v@ z-EvE5Xuwq`_f6`zbDpd|?p-Bi;{+hg?9u>^T~vG3lH-n!TJUWmtdf2zwBU#|EoVf! zT5~K)OWDz#)*LIaHtRJ)LpESfI0_5mOATg$Yi?es1v~Ab6{$`*q~vyOvDInf^MBx^ zl-j|@f*v9+xkR-?TzW!WUYisqE_8ncYR{rV;YcybGJbt4lI?+K+GqO#(Yxihoh;t- zsHg~fyB-+56-G%Ez58*MLwjPKAie01$&l}Jj}QibzA~I(>W?Gq!WfMH$SYkA`Ho)s zV)?#-ZY zG`%HJ^zzD;gWl+sET(q`Aq$fSZ=&>8gq?4z#)+fQZ$3F%O4}oXTU+I8>-0fL+{-rx zIo z0ELKe{o;TccH-Q>Ykk|AqI5JPeZRi(my`+TYM~>B;|dof(Q&n)btaQP+Y4>%Jd^2Z z{uf!xyIut^LOn+8I#CtgLlwT5@Wd?qg#Whi>#6V?QFv=3c@>Ed<60X(z=OO7J??ub zL(wyq%qD3o6e?(j5u1ubqo}}#*xZ|h zKMWkvB)3!;qd`F{e~_jU4Y`ItNP~oI6e|hztrR5W;z6M`jr743Zg7oGgWd8v^^?o_ zX8wxNtBiiQlxMxsmw!*;-(K`fe{A2S)5h6Qx7^A8BqR9mPuga-OiX?CNXEF%=zQ5H zZ7|=l7VF~fa=-`QHJ+>bRA5h1up2LpgthlWQJF#9$NjFMjfnu8FJQ%B{+LmIRArNK zSEYKVw?ciBymK<%Nt!3`UhCtu#=T?ho$9O^{^Ggvyo~=ceNzF18EN_ewr}la7@1SUu`=oSNTgjL-h0 zt>60;nt>2(5?rk}aSJ|Ux2npID|5zfD-8{9S)YO6)Xn%-i_!1X;Hqq2C(qq2I2gDa zUj^R`WS`%Y!N@jMQ8}<{7zY6>C>NNU4(iP?_bC{VjdJ6|IKb^eVOt>fRZ zX{Ay-gi|_c)2Uo)Z^2M>VtA=EqtGUVco*0@Dw)GQsve@>silUtPg$c;r%HLrH&=4Ob#$HfoOvcB4LT zSdAKs4PW0b6?*n^yPWSKE~-U~PKl_H-J<`IzAHM0i(!4Y<5jNC2bH4lru3ugkiNSE zAyeN$O#59)H7eMKVCLJPmhJ|%^j(A&c|1vU!sjEo3gumu9=c$RrH5{74c9{v8nd9A z=%K$T46OZ7^r*`%Dvs{f+oFOrSz5Rz>!L7>R2Z_uHCdVAqH_;loypqo6oDzqB^V5( zhfJbU%TV`j!}^~}LDZdeVM@3zZ2U#^{J$~8n&U|ybPhBlbYVkpXDi0gg=o+C{j&^r zC(;+g_GlsWZNJ6|2U!RWP|Te9;A63h+83ulR7ZZOs&gezmw1;?|-(XXZI@Dw}w z@>SH9>Z*jwel6yR0F`5^n}$D;y4hf)QmwEbG+3Bk8pH?1f@}SK-qBX>??{)16najm zhl)z_o0IfaH(y;EN-ksA5Al7jtw!qRKiY!(V0xUQwc+S_6qcN=6IQCK>?J7#&7`A? zGd^hxwmQ^VWN$Vq@5i0FY5-}Mf8qLVa2mH1tI#iAVg9{4TsroIEaBfqLr2KeZ|7Za z>$fdmwX5HrSu7p91 z0dv*k(zk*NrZNGT!&^m*j1ZV+lF)E4>cl9>Y0zA@LJB&Ofy5{rhaM!I__bb6-pA;~ zrZIyj*$-@wnm5SguC>hw8FgWca*u{Bs%LI+R9#{S{^FI4x>CxNzibQTO_9CPO zKO{r?zH?wEgy!;TH1zLG*rN;3zf1Aum@JIPwO>+O)Z#8AS}}FD2KszKzjvsUr^BY` z`Xcliid-+ON?!ei3|h!*rrQZgcT^Bk@SW@ysEjI;b(okaOt5Eqy#In=nxXhdSWiX| zV&SbbCZ`JntScx27E+iAm54F>mM9uqpy2`YjkCW)aX#FMkm-c`d|=RNHpJe2)knK`AkiF z_B!`BvDp_ycQ%7(shCD+i;VMyD(*;MKF?IGD<`Tp88^|)1+$1vMgSouWu5WBli)L5 zDu<3hw)+{?Hm^H>Zt@yEt+LvJ zYf>j-hd_^;-Uk}oqhvh%rw>tVk#|jQYKO+@SxM7Q@tly0u8zvO&o$<@owzf4nw`5KEdl`WIjnmV-6FQa!ajPJD1zzZg7s_zevcGYfBKkn+z zC9#IjewJC@t5hWDos&%o`Wzvp5r4Gx#}kk%B?y1OTyA&1f8g@)b2pm}_dUbJ%`6dl zIGu?jdnu2Iv;0Scf4EAuWvKV&PiTyG%0qs&?;-+k7=;H&L|8_>>ne*Q# zx$!z{)OeWxf|JyEnExUaHveTOf|~!ngpniu{CDb;R8!1L}nb&DZaREgpZqzW6rG*NunqyM8@4c9g$&JZ%o3&zi!{s&;rh z2>{mc_#QFryF4$h$gOC`b;z)jomR2CjB#u)*XjdE$TOc;mAk8jo8hVNv zD*p!4*jBw^Hk0bA{D^J;?Y8XfCB{bwa~U{~y~()sF|N;5L#RHRj4rA^n~YvmA7xmN zWot?5vh@YCi^jD7F4>>S$gVF!IS}KEI1Xc>B;EMro3=JmWfO6fkO^3bDZHxWu2j-b z4&RbCWYejY)#z(m-F zgV#T2`$cVUoVAjaJf9kElQFB1>rjG&`oKV-=K7Q6!LwktWA%w(E>tjG874H~i?dXz zu|enjl~ms*<46VCJ%QqiRdHVyFeA_i>x^?s(7T*%&;$JwZ2*2<3tQT50?VPIoB_^H zMJ3uE(d&C7I!T+58TRWV+$LZ7#6G)?rUq=UKa3C?zM^Dmi7|0 z?_WBIn~3fE%7?j$e7U0Ww$pTiHC`J+%D(?93&Wi#$ai>+ipQSgnWlF91H*m8dte~z&RawTUe0sM zPpJ35E*1%d7`^(GLnE*lMXa`5^Qef#jS9!vEX7vC%IqKlX0U=8OfZV-E1`v$Y9Tk< zMcl8b6LJrhqKc{nwA;910xd&_>Gt9?q^->b5-jUDeXC#pAPX#OeB9d1(9Y<0B2iVa z#O)y`3yw1^5>L)ms=znOcloGQ2W~H1mIVB2=>FqDZoGdFCdt}h%%$lC+Y5iCkg^wG z;Ds%1IBg_a)A;Fo8f?V=nu@D$Bg}>{aEFa_;xQ;fnGH90Y0qq!*(hd1?D2Jz*gu9beDjDsMEp=Tcj-12~j? z)^HoghIOXBL6>v8IvU^qiiV+$#=94A+jCFvjy{97C$sJ$@)c{|{yl zi`%b%VG;N$N9ljeP?Y{h$ef=;@n2P;dPAspHuQA({5+yJ6+J6G@VoQ5I+nj?`f1dQ z!{^QspvNlEmlS9s{+fNyNOAQ7lYqbGBLy*(Aw-kk0g;z}XTYMiSszQ2i`AEazs#}1 zhVlK=-)zyGen0cRdXOk~FP1t)v7d|(K4A%4Xz;aXE1rc0Y-7Gpgzltu^Qf`+ti99^ zHyV=$Q$=_MiCE3=V=F_{`vZTJ_x&#KXS%%KSG|9f%lmH1v4eVl`+3pyXfF7-hNMF* zcX=PvpD6mDSMLY-ed+8QAhgnmCt=Fq(uk3ERJ-$Q=V}!8fBY&vhqUF&d%5+V%ogQ& z5vD$(JgX6+o@367^;48$fNA^Nqtth5u?K|b#g6gI;T11`>QvUp&*gA!ieT09N_Dq? zloBR*HxvpiV3-?_ux(X%@>u%`(huhKr z<@1&P&t~~m`aizn@26l^D40YPe@_L|tY9J>^{$rQ5BCUd7Yj_0SD9@8Jc(M*>6yjI z4Z80Ib@ zM<7#R&fZ+X7AUYv0c&2Sz+k1ne7>|kf(JpmV;byZ6^b6J zfjw*3`pP>3c#izM5~LfMc_K(X(Ah+gu7!DS3zECh?@-W**~8<0wDn=Tun)s2G~tv*|}jR z(gEAIzwWU`?ZMl*J@hk0)Us$w!=hG*kg{)oEi%WI0Sn%swuoup-Z(=B%!OwYJDCy5 zzYnrlIp{Bnm7)AB7i;l{1>h5eVkAT3OOy&jpOF@ZN|bLl2KgEzn)Aa&g5fB$d>#&k z-YS<8d$Hqhqp|%gyF>Kl#WiAnBjy3^F(3UrQTuD=Zkz3y^O)_aX9(Mu({zT}z6l}I zUxaf8s*^56=YZ~^PPz-`?SEo_MQ_|%VtoIdbWE~7@0rUKP47z-Z7@zz6m2jD6GaYF z`F9_+hUlF47KZ5@cT+j-IP7`_%9&YQi6XCQDtEk+FwsI_sN3|{sA1_tS2Pp1w`o}x z^EWIU8;tWAi&)GvAft*cAH%q{+sa`vo4d$ug-rT5{(hU?*5QPXk0#7v9*sO* zc+`>RFKD$5#!(1aJc7!42g_`<^Q;2XiNCI(E)zbT5V3V==1f()sx!Gp<>(%mP6!GM zmiA6WLH;p~x*Yba31ktbVG)q-{9FUWjNo>iK_v=5&py=RXEV%mo1aiTF*ehHt%;3q zO*?JrKP|+3JiL!c{|cH?u=Kx&kaK*y{Q_Io#?m?hgaZ;no0Y6Z0|yt+xsU3!(Kwpx zq zemPYH>|vTnAzgx% zwMZeAfzH9+)}GRlSDen6ilCom&U^F#!W1#*6+fzD&U@_VWPNNfrZBijTni?;inBd_ zj^J#pId1~vU9>;#kR8HhGCH1`&0M}KQ*4m)Iue&D<06C{Hb_U-bOmIiZ+nFVM~nbh z8|0SBVs1a!M{!wM%+F<67W1Qbgv!(o&h^^>#REE6SaT4gEVM90fv+ii`pPv<84 z;$+bnfexm|cn~2qUe@BspBgW(L3dGN^#<(fcE`&DpYOe5*zz<|h#LapNQ%Ct=>f~r zK_HH}3jz8WE0+);lBNET1C}NC^|`U5MUsZo9x#!jzLPNbp}8A&;vM-i4JTtaV|5P$ zX_UupM@Vepp0b0iJX>0qKnEYgpi?)KCF?50pD5r@GR>l?Oew6&rLb4k`%lvQ*wL*! zrdn}~?z!V-1@a~VYhGec@)ivwHnG(_kq#JHR&&Hmze1Iq#VAB1YcanUk$m@ir%1Lp zK}%E~SAT8GV|5eD5~HA;ndP;n{iPwg%WOFHyV^6j3mWjgtb}Z# zKfxbTu$y{-ORNEBb4XwmGMQIGo4q&6MFP5A0X~lDX_bEC7oKrG%C|sB zciW~}fr;U5g(0Lc&};_1aKP)Bv!hc2L+?B05E)}F3`$d*7_LnutmxV0bMk+}7c0z4Q?MJh)jqX- zkPM?gf>PW$RGitL;?DXGXgncX4Yrle8$G8INxc{I)Ei}!B^OQ4wK9;L%r#LRNr~cV z05xSQY{Fx*q2WEzDBH2oiFzS-B?fj#Vnj0?*DMTpSzvfOqi`@>fFr>6HVN1?1!i>~ z>NT-TTc^O}{)5om&6X_11zV)RysET)CRk|jby!7J{CO2?gwC=f^zF3@$vWBcG}jWy zP~UwpSky4Rp)u|-{Z@*MwM`1iL6&&N9d6rZ3A@S_Sf|9mwkWVP1$J;^V9zM9FL2n3 z3_-qKiF-vjmm?T-s{(scfq7MFklNNW{M3<1fFJ#<5@7dvLV-duRw1D)mPDT7GU#{( zc7}j84~hbF84UN&6t3=1b9COAh9C`w_{(+dUUQ6wxF3hMX4Gkc*D~r!yyS8snQN`> zYgKI|>Q>6cnBa+O45E@`jx+SKE&$Pu-%sH#Y&82@2*_1*0VZlc!*s6ih_|Fo!9aixiBjT8gO8mv;&ej#n^M36%4Kg8Al1 z;eoOn3Sfo+ftPrMZ)oRg$rP?poKxJ>~qU?5ylRYS*%>a?KJ5sj-W=)#1sGZF`)U$#2^ zIlV0%~@vpf`2 z6^7RphG-=d4fDi2VSPZsNT&=9J__nljll=wW+H101_rf{#iaxP zOgw+^D_4q{@}@^bM(K|MCt!sdvPP5s*Y1-^zd7-Zm;gMJbqde;rz#AJ5pidd0R`h% zFswgdQcl8jo2*OnVVlK8X#I`XiA;1?ppLOUCd`*rQpr!SPm%hCV{DHJbG<6(F$Gg+ zw{J|CVg)lnV63qnHQOW`uj08Oj#be86|^}F0(#{DlP@uy7~NGJ_sSkCYeEI+#{HUb zH8gnN&7?wX=UId@cw)RT_j!fneN!uk2K?iAB@nTp@52fo`F?Iv&~(|XaE*i^W}&qT z>^uc#x)nhAsmjkD$9dCTk^F~jZ?Y$I>|Kai=pm}mRt09xj8JH&)7xeC6W0o#0t!0I zoTP*XoMX9ZV~WWmR|ua<6tq1vB0j|go1(yuP++nvSchLzCZ zxfzxvG6h$-nZqWnXGK^dJDUZ=>k31K-O+7lUj)oM3MQanSfN04wjU<#fZ#dkX*}Gk z*>Qv#o3AhwDGZ`sLcMQ+6@zww-W^|Yh3g#~gW*WnU2K4<&BeupX?l1-VCjqteVLMk5oNGs$ClT(FxJSd#*?CuDKK$`x3-0t;W!i>a=%6j+)93t!QT33jLg z`vUv;(CO#eD|&Io*ivEX$ojF?awkbSqv}l0j-y)wRoeur2u;0s1$&^fA^B}M5h+=PBEf8)cenN z=Rf2QGP=;PvK=PUTm9LerG-*VXlR`A*;2LwgB=#-RDNE8(SAfSgsQCm9~$uC?e;X$ z)u}vF0pBIS_EI*ftJt32Q3`AngE<>0#5-hM$Q-0VPE#eB76B{9*d=-V;*$NL6W6ZU z^y^|qn0_Sjh9`$VT}SOw2K&-QJ~k_jwS-W#BOeDczqj^lU?J(p@08*U4Za4nP;)uP zw+M^u%^RhmPmns5<2)WsGvfBcI~B~1j?&7wWuje}s};;E3I^9pkVp>r_Yv)yedj6A zDGJn^Kyh9LqbZm)f`JS#J6XwaXh6YSTOM7uq5Pvp7;~_~kgG5h9xE7t?8WQj4#DGh zOAlNv`>Sw!AJfq7tDb~`%pn^8UCf~ur;5c8WWe?(a_}9{U*hw*(%>F@KG%25;nW1z z(Nt_87KO-4i|r4Ze~t8k?>eCE{UMxy7skG+<{w(bJFYeJUXx+F| zdFr)~ZXfW6=GYF~xXeFPmAF!Y-D?fKalyV(rOj4g_a_FnPJvylz#d2p>}dsdtO8q< z7}zWY_Al%dB$hmEfyI@RaSH5N1@@=~7MCSO3hWjI=9s*HaIk8=P;#$7J2VpdPsF6) zXoci#MiOjVhO+&An%J>T-}l0$WH)QUgE7Z$tANoW8Nnm=X`##Tftt5)7kC~nlDm~I z71e@=;a0O0WBy;UFEP~PwW;Xy_)glEZgi6=eQMYE{h&_~T#L;6kZHU@Ic=@L8d+-2 zz6rC#?^SHV2acP8LFA>8#teOps4W&Eff*Dto=W*H^MDh#F`{RzEURrkwh zq`It$qi3d%C=4el43)O}vFjQ!Gi_Ed-|=k$q4GMRdvJLttJM3i4lgxA2uCRl&j<#` zq|MO*tP?xdGQ#-^>}CaKb^v%GJ93Qy9qPUNX&Jy`)HqckIZGi~>(=?A8TI`{Vf8P3 z6F{ihu)xeVrcoUAbS~+9sDR!kphV>RKFb9y=p=coQOrOXs~A#*xd@O%1v6L!I~7<6^iA06z{@!0o!z5t{^iMWUTeK=rYe% zkl(2Gvh90kdjXEy%Pz6Af_s7BWOH|%bvWMNU1eWA8n{2Bo+=ki9yHIof)v*T{({?v zuJWZc?(=w>tMO4NG(l?f>b4=lnKRO-wBucy?qtfFDR~Pi?^!!fqoyJX)<*#p9|Ybg87&%dD23-#QySQs<)-nO>wM~1ywNN>IkMDpgk z&xP%GqN%oji+%MrMaR;cPg%@~FYKbdx- zae8U@B)K`Zl5UQjSV3PvQ+=s%brn8>cENKfAFAyucluMKHS%VKMSP3pB7rUn0jr_C$-0t zZIhw}-y-woAU1Y_>+tD5<9jd(fcfbioZnF+d{u;RjNluBuO*iT-wEcW;5+a`0(mJz zJWG9DJxlYt>b|Z+^t`Sf?}c8E_tJEaH_z)y^&woG?n(9I|02XMOZP1GXW{iMpYF@j zi?i@rwhu7$bE)P7L^dEO;MV|>4G;~lSNZ@~37AT~xY8H&R|WH`e4q?jV*tMbK&Y#dN0S8&RB#* zpbPL*Z=i=hn|^_pT8Hqe=Rz_c2`|NgS49K#1YS-}y_aK4XRPISmj?K$H_$_$O~0O{ zGd8O{e(DYMKtJH59EEwd7OqkiXl%D=@<3iLTRYKdM-3Lp4vch)L%sd^hEtRHT7POEuFEC-(4Eu zr`|vheK!4~Wb$4S&-tl0&;zL*@X%+Qc@zUZl1RUxhgPzP9`#(9#_`k!ih~{%4bT(x zaBAwk99udgliyt$;HTa|4}CUAf&p6N3eKQkU!Z{=pr$__f!Uk}N+||v=n zCj|o(0Tev|MW0v<%;q#eQ4CP@&}VZb7|2B=ID>uxMGrvHcNhb+ISo)00~9^<+4PH= zYm|nXtLMT>j;A(I95q+b06kH2PEEa+V@qdL^Ses}{L~xhq0gpY`wM0KeMLGN48yKA zBaQBYN=NsHLfV6K_0R!n&h4XrS0II93^U}&{oSgn^;2Zz=K3u*#|==%k=figUX z*6M||h}G$3cnq!63(@lnCh28(44tGGPD1Qfy$p|`x9WwrA~sns!(-@Vy>K#OQ}i-C zhECB7ryw>}FT-Q#RK0L2V$<|8Jcdrw3#TDAT`$99=ybhsx@YOEdXmyIgywLliGGpX zK*=GA%;88A{UT=u=SXA@N17yweu1V@UZaQJq$0Fct!%i1=HL;t}1@Loti zm%{Ey^=VK=6!2F<7r`pItP)^sRa65821hkuU`Kc_q@RWLU_F7=KwYYEfSv%Z@uc3% z!KE`uhEOb<3edqUWo$n{OD|A){L~xhfz*X~=(Ei{iUE!u$RnSlKAY2klVZrD2lDRY zJWfL%#gIo2T9rn^|dT zL8-YBpj@xy(r#92S$>(NR*IFo;+{+8QkrI_7nfX015^1w@64Q;bBB9@TOYsgpTFO6 z&YW|2&O6V%?>p}-_YAv+dz8aHN^tLOc8^`dJ<8!8CAdeUj@eV$HQb{d?oon!@3MRB z8tzdJ_b9==x$GXhhI^F5JxXwI9ugi95igX(JxXwIKD)=R;U491j}qK_kKJR}aF24h zM+xq|&+f5nxJNnMqXhRBuzTzp?okf+C~>lIEPE=u|RrBzr1l?CI+%lMuBnwI#yrcxTmkho2o$v)xfG-WeYdkLVd$G=kj&kPk+l z&Vx6gzny+&5+Tr*8R+2PXUlwRF}w2zw!iPxl!|y+)Rxpb@y^}x*l-&ImGREtL~OY2 zT0Lq9`cB_cuP4$~^GzDH^uK!{#&z)Vk4X9!{YYwmN856-$pv-MFMo)8?BVx^;0wMO zIH5mWxbz^~@-;NeH|h;0-xEtc$oEr6CSN}(UnP@#0p%v&gpnrx z_PoyIoBAIQ^2G)+`IdiR@K@ZbPGegZMJ-5K%FWe+wM7hcL&Qm7-F1*U*Yre>XeAjMa^6h)y zkS}wf;xGG?^5XCM2$OtCT)ys}?4!D!$#$v4<6-_lnYe;;}BFHtu! z`Cfa^;IHcdC7-?AVG`F(H$rkVASaAuDhl#d)p21(G z!Ai7Yi@fuP`7PDL#hA7;#CJKI*u)Ck0GHIj9e#oY+|S#oNG{+(;)fHMN)6mNYT#CL z2N)s++>lHHV%rq#>%_j*-X!LbZ1I+VL=q?D%n7Ha4&OfrcHiZ4hy3@?_-)9<7wz+? znT+2Dl=!NBK3|#f+i$Mqmx<5I9l)fe;X{fVjSZ-HAN!xlH{o$}{m!;+~var15>tvR1=5)qi zcTfKDwrIxRbMF}Zg`4DyC^z}udCbJ$g_oFo%{}q=v5m>M?`=cA%)W}h><`O}zw1Ly z@+EQkwo#1W?jLQrC+=kO-6`ceZf^fRC@=X2o8?=Y!}$BCxcv(M-I@mxGv^p2zMG&( z?BZF-e`X)6A2sn;lgqcQxc&+Gx^`nEUU($}pa~1j$^0|<8k*%BHI3_E z@%CBB_hKZIFG5D&o-!g#MCqod*35Nxs%xzK^Jl(Cy=$W=y_1Qoiu+s%p2qS6=dUGRrq}D&wy^*{HjGqJD#FF(F62 zX^=QEUI}@#XCeO?fA2hG;_rfk$@c`Qm%Dtn+;cqi+V_SbT4paLTK4?%;_v!{Ci#-M zeA|liXUiQ|pHX+Gl<&By{dLVNFZl+Wet5kTmGuS-y?}izG3f{7k@tuHp$nT%jePmb??mTw~mx=qp9iL z@=kfl*U2p3%q+&=75ZL-UcYQ*OHRmhbdQa>g`4DyC^z}u8D!$`LMD^%6zP~QUw9DX zZy$YUfytL?YI?KZE-(JB4>ZY_#O1p}GU)P+!Wby}A9qUmj+@#y*PQZ_Z?IXur5TLB z=AQWbEttvo8hw<3@z>QPpS|4VTRp(UUrjDwHBaqFQ4EvsGJTPO$@jjg>0S6%dGXiK zEZ?XX8Gj#nvX26;fBmFT@NsPY- zrWfPSmfOLP$@d)HW7LJ4Au zT^P&t&y)RD=JmVJVaS(hQ~YIP;-Y-`yWZO*UlNyZD)~5_ztnn+zdNOT$4yPI3-bcy zBi~@Nd`rhL{+fHT-{3eV-)q?he_c)T*~?A7)k!A)YI6BJ+V59gnS7V081lV;kE-8= zn3yOZ{u-L)8#S8o_e62~#g{c`^#s*=iY@ok4oueWQr3b_O4h5G1n?#+1vLLG-g>H+ ziO+S!Z2EyaFaa zRq;yzS4MR|%MAQ+KtfIitw<3+h#QDsV>qhd*BDu&ftirwq6z1u~&BNT_p|JF@--9Ld`XVn%`Gv>ihyjsNs0tjj62PIaA|ls+2L6$b@>IgoPB?GNE$u2plj8MI(|K1-BVO9djM4 zuL<>_N1>pVLa612P^0lnC3i*7d*5KHvo6#CA=G_RsGFHkUy@LjnNYVILjCMY)P>ry z*Ar9Z?zq=jX9)GneY#MsrBI8>hnZbj-UZIoYMKdUOud9hY`L3AC>oo}D2OzKI_k=; zr!jSxN1>`pp>`NT^(-dToc9c-LUo~93!!e6LKVWx*m8H1P=|1uQPA2D>WJ%RU8wnc zJTZlN5W&=bL#V=q;#XtRPd)ZSQ4x3g8F-BwQ*+L9re2}xPR7(DOsF48sBTQCy9}WY zx?Z|TV=Bm_P}QYS#|)vui!oJevBA`DXe8W(sv?9cqB%q+)Gj=NS!EIm4H%eeZwPh3 zRajROYV>YTOkqW!VCt+P)VsxmI{T#|RDWHlXU=h^o{&P(SDS6Q7f7fEOsEcqQ2Skv z=tBLn%ac$TMiW967(#U~CRBkGY9k(ZW9sm4T&VA9N|Q0Q0FT&muaZ#NIL#=y+sanO z=h*kTc70MSZ_A7kczLmvr=U4h4T-h$sS zI$}Sx=fpKZx(2^;`H%v>*jw-cj{FFY6{%x2<5;_ZHJoE%#gutVC{)uSXF=(46H`LszO)~64vQ%c;a3iD3k-;4xs8B=q@~#&4HQ$2?syNQ1MY84MI?na-V=^7rv%Sszx=JY`hrEMNgv?bu7P#vw4K%^O{^WITjiJXDb;N z8UK)`;qrywg}6EmokBcUmCO$UCj;%+bg@!LMUXNP4GEgvKk^qjwVf52v45LM_tf z7*~ldd#(te1F&m`K}kbvW)QRM`>mPF0g{oQkUA)%uqJEEd-L{pNvg(6J#VS%?YQN5P-jKrBY||1kbTdQ(kKM7k1#e$Ny$Em7g~#4x(vDl0gr9zo5}sL} z5`H7?9aNg|zWGx>F8@^QL{TdL9Y<;WyJ*3;a7Dv5D_4}+$!ih(%2EX8Ps`{(CKd3I zZwvOf;Qk{$zb*8_npw>V4L*ZPAx0nx6`0+3wD{Q{6&$ddvPRU3yE*z7-!((Xa|!hdXkT9dG& z03`oWSpbs%xJdw}01zJ*>xvCN4F55m0Ga<7ucNhRXwrX#%yIJ{d3CAOCHs#y1n!gn z7)g_?f205R#wlLUN3qL#%P3s^0hG?==8!o{mV@E+RID8B`VYp%mx;cyfP_Tz9A2!0jC;3yD8 z6Qlyc-)U>0{3Bd@ej1^Pc8OzAAXtrKQ6Ts<$2titH1nz#_#wlh-?ihRSvuBvjzxjs z>J6-z6bRnTv8n)zI&ZQUIDoKDcgGX)I#4BAq~RDufgsnHSPBGxxSJKQ8TeXA5|}!I zR>Cq=#B)cG*?U>~cN=PfBDmWhu@Qx#1kEV`LCA=O-&sFu<@=EdV{VKUM-{?a#GgT6u3|XtMpeg8{1em0_0L{w$+ChYaW9 zHGcg&?M=Y7(`7@4~|7m z&JvDAO%63*vdMAL-a>5bVc$@#jD;MCnw$!1?4c0{LX*SVu6vAu$9DgV=!4O8;{05QYsSp0!~v7NzK)xQVX|8qyfVcY7wAgy~?pjE!r`Ik0rH8YQt2F)Pjb}q+0Bu zErpm`ta(HuYcdBSwK)AH6Y4Gi1#qBZYLQJqC98$e-SuHSYW~kWD(#NlEqMFe&`aZG z(ZydNh5~4mxdoG-x4+$5du@L=(mq3_HC`x1nd7Nn#PG1Q3Y3^HWjPLO#)$c6q^jOV z%-cPzRYk7|(p%mT4`E}Lyeuz7s$8mg z;qyOmjm-5o{8D;;owCIvgC5i>;slhyh(`)?ctub=@^N)u5n-@atv}qDie$tifjZ#N z0+8a74+S8_BLf7Whj?T+{HyE_f0d$1NHgptA;ly81R%vD)dZl2cw{00vUp^Kj<%nn z$#`VJGAgo+N0wKkQkNW$G$C-q%Xp1P%d% z(O8>=KQYX8?NVN^)c^UeDzDcF)GHfBKz)dDvv}Iki1&YVv=;;#nd@GsGS|rh&4aoA zMVkS6HP;L;AewaWAGLBw-Ekp9rtJHh}FFMvquJN1XZ;uf_8nV2 zEqai~Qyr`-5W(yL2NjIPD>+q2jaa;bVySqA?RR8Mp`9P7Vb$bV6tA>Y@rsROQM>|A zqvDm7w0)2UOHuJkW5Qzbid6@yz=0@U>A`_0UP<9V#p0C%@ZZvtcn)J_ykfSOwHTi% zdwaM32Gjx~dD;(yw|DKl#4j-ewEBAPR%IjA-&QtKrKfTtT6IT3qWe`x-H>=)ZQ&>#w{QIl~4CzyhzL+9ffO`?cMhNnuJ{hAhmZV1R%9{ z4+ubb5I$WuT8;k_ARqtL(b!ZPzI2xj9|^!a){umI&e8l2pjh&G(N+l046XPM+A5Fc6V587dFf%JjCC&D=n+8((_mrr- zrOt02{hpU70wprW5z>tL%>+KbnVx?mG?wNk2C?p;n4j2rzgE73Z0wa!aV``?cBG#J zMfpfS(R*Tr7E_!v;qIk=j?)3Z6M&?jC&d67>F2{0xea^J&lm1RISPDK@g2cs1KE;q7PSzs&&`=z!A&AQ7_rBMwM}v=e|t2=n7m zM-gy6PJpNH#Y6Y&Xj28+NT9ta(BNMEPc-J@4Fej+KMY0eL(8zR{*3^Qo&YiFab}%2 z;br%adv|hg^248of1E*{!}F4^oclDQm)xO<-m*XuedyZFr~r>)Z4&KPM8zn{KbBqo zSy#FIH%a-|ff_IJ@9eF~-;sV`C={i@WHz3XjN6Q}|{CST=I{0yJ`#m_6`Yk=*ebwR*$fHm!fd-j#IY{S zok-W9tH4$Pc824ZL$0lKtPqYxU6^=|wI7u*fn!k@29>J1Fqh#mWf$h>do{Uk;#ky$ zx%MiVYAkhO+HfrD!q8B#?81D+u$aTn@qbmvYQ(Xq3$v7CQ5WV!AuA(wVcG#p4!I5{ zEY^id(1C(E5OrZjGylORe-GCuy@)N=g$W@bLnC&(xj^?Nz~=aB3Htly{BFbm=6oa? zJ9EBQNB8{hF6jUCwL8yX!7!G{#_r~=ms}xB-(!})@Z(F%$M5H=m37fD>5c(t&aKlI zlW!W(aR_yjv+kks+8qD(J++Fu2m#OsJ_=4!SqR1U|8^8Gau0CB!*;egeGib^@GB6U z3R94|}9^Xnw5 zY#oa!nS86cJy3avoAG)|yiOeN4jr$u!fVV%ix}P~L)l7V!W(VIyMD2H5_lAh^I$pTKdvu1xoBf9*l68?y=30E_5Gj?GXj5! zvJAxWF^;P^5{^e%=HNJoqw}v(mRE7OaI}XJQ^e?_e;XmXpbO4Q|27|*Y@J?-HJhJ+ zxr~C^sr@qw8d|gRxlJd=P7RU3`@$OZ4Ic%Jr z*~~13=jP_N!8P-G?!obv+BNz5D7>??WxZ7R-KZDV_DUZ%R^t5yCR$ObkWmm|opKr{ z%x!MHk-5#t)5>jj(qB1Py>hI2<@Ag4l__RQs>oMn(@U_9xSLjlhZSCPg?Ep_d&rEp z;(|d*dye;xjyFu<{qUxw$c$0VMM`;eYG-Ux*^RpGs>@P?Z4Zj^X$aJ=hr zT6v#Qc+J@WB2$6swWUhAx%JKGjq(bI^ofr5yu$l|EoEeQ_ei{Ark*Mxg+m&kLyl9B zufHKF{P?^_K6S>gSm z;)SY8#Elx>1c~R(A$4&@SzgBR3y!w=QCQd#W%(AzEvKR^V{mN6AqSs*_eYDj@pvmF zAO7fN`cYE)m3{c%I(-v!NKfPcj8o`T)nO-(Su?*x5z-}ax{)a<5QO_0kinS$ILc6yr9knfdIDL5hvuf^}#*UUP-FPc{Fi&qxCn%dI3YDH2jdXWewj z+ZAMnf_y_kexzwbkc1S`*&jBo)a?{xq=Jl9kRNN1UrL=7&TyU%*+D@bep%Mu#nZCj z)a;wNd`v18?of5m78@1h`^DadIG@_;7g zx>KUYnKN9Zvj-xo*o{O?f z#<35FkMY=eF^Cs({2=z~Wph@x^ul~-uys1EFXSr=Z5jEPC!lZ2;LI;|ARbwXj5X`J zu>X5BE~D75F<3|R^h{afmQ%9E^|GhI|IT3Fm;gs9I$SdaH;oS(5S14KWo=K=s^%63 zm%!a}O&u;&!F5z{4@fw7@AQLy&voi+^|>yw&C)=B*A~Qr;?B7o>p_WSFwsoz)GF++CzU zlcEK$zVjWmLN!rX^%YjS!gBL`D^C(ZM<6XK<$WEirNY{+jQ#M`HR&ePG?nE`Cn3HL6$Lve$F*xCqE9-DE3a+z?fbKsj6}5t9q&rSfVK36v9RC&3 z8gch3xSJA3N~Eiq#yKmS8yLIxb_-cV}fJ99I@(H-4#|3g_WYPDr;EZ!#}c+ z$29k#dd=|5FZ>>5+5Jb9Wt&Lr;+*ny%)F@14~z4b;<;Gl|3UoP>T4dq_Weorrzvuj ziCEgU^wYmnmGYW#OQ=TXEH{kYm2QasndsVr;SpAiis>mWNeNn!0f_kOf zSU?T=%G$gLm)dJZsH*TDRCu>3ycn~_u0Cc^vXQqB3v|313a_TZ`$=kAoZXD~l*CKr zczt!e8x-EUbXne)6kabgUPFl&&hh+pyikQVO5t@d{yhnAsCJJxQBw5~f6rNkh{5FZ#j^l;sc+C`Ey29(J@J5>X z`{}4r-s8MI+H|K@-j)ilwZgmpi!ASGGu}%Q?-h=hrsK6%ct1~+<^4qBO`b&V(G=K5 zNl4MgHPIpORFE$z$N>tH*4&sOT}O;ki+;zhJG4?qDaa@V8K5B9^p8o(S0$wAcZ|~^ zV-%!of-LwK#|$DT>w}q{C8X$g+^R#yD#%wA`*3q4&@d9Q*zH(nO}>z`%8muOPP8<4Eu(N@RnqwwBUc*7N5u7+25 zSd{v73H^@fKcg(ua2&$XvLMPb4#y50^$Vjc!*P6#Bk)R;WeARCIQ;*LvLxeJgyTAn zo^ayS&iU9sxweV7Z)y9@{ga1b+}7#z1ubhP#Vm+U#>1YhnTt>~WR4?A?T0AZ&zcoW zEjfO7(pIaKu>I5WNWIO8C z2ss#5H;$F6V|}Ht<|-_Ih2=H@){$ZTMKzk^AE9GyQ&=0PN!7Z*KeK8|9luWKK)$5?@2|U%(82WRkXrLcXmI+VEJAbhD<77xJOt`dgzh@t>k4nO!h1{MwKU`1An~Sgyeqe9 z^379tcPhLd3NO-(x8Z<6Ni@g%NXPp?;hj*S!Cwbtd1={%427PRcxOn*v5r>9Tcq$_ zQ+SIM9xa`acsEPDIUKK=j<-bN#VNc23XhhXNW5q9Cg-Fj+H#j)v}Fp8{WzLch_*bBV2OD$sKgb zXip}S#f$dj9$wpDx6}w|OFNeE_GI)!(si{`+7oJKGix8TCx0r(8mVL5rm$Knte+K` z0cNZY4675z3fHmPE3BgrO1WNDSZ;=X7Jd)I8(d=!w9v}fQDMEJu;LY#TP4q9SRVij zP4eq-8Jt4alDxv-@SOgJZt4wf)EiFjmo}4ZF8Mw52DUt?l@8Qd0p+L2V!xw+>}H_L z-w9*(*uDP;`qptZZ%@AXMz$wetUaNiE_HCnbx5pPt*PIP@t@`z-@R)}oq9!CXyKoY zsnMqPn?=4RBfZTiNB&XXzYWnLt0>4M_5&$4DAQB%;uiM&^sV3}e+KYc&1HTcUGzzW zPJX{tA@lo>1S-Ej|5mLO1;MfuFR8)cANR>Rb<^f2IsLsX?=Z9Ky&&;g zalD6gyqXHHr^0(n;kk8LTS&aas4Zw!Egi3p!n>}DcSr2iNRd6RWVD17ef67l$aV^{ky7ILWT29=v651s-g!+z zioW`I9kP>x+?pl1tf8c&0NkuZT_mLFt2fsnyC}#LN{JrcE4hr+AkV`|b5);DEa&*| z57!EASCB6&$Y2Gjk3qj}K(fC26df;7;XSK5Xls=Q#b_cXN<43Y6UL&CRF1aXUM1Qx z5yvhZjRK-APvcmFqgK^u%cD4Qaa6AsZ5fPXDUM3jqb>L2_z1@p97dbxV}E_;dfwh` z+H8)m9)g*>#a9`Hm``L=3F(E@k7C`-2kEIS5nm0Yui2TukG!Tf)j#X6XDeend)`pv zxL#)MXu1_!pLXeWnExyXx zL0D`~5bKt8tc?n*wi>#zg|Od>qP=%tylG=tytAH9Ln2_&n3I{!6}XQ6hHumxUVKuT z*}c1@P3VI|hqgmt)>+@ySS$Hfg*9}X#Cn;1Ac#dLZ)m=124R)dS@*ra{`M-aZ+$n( z_=>5Kv0j=yur({4$5#P*3BJ5R>QvWfWeNIkH`s9Jdk^UWiJ#w=2FjC`Q*jz1^y z;(wDm>K5swOT1qwxFRFTD5zql6W6%m3U*#ZlIyWo5b<_b-axV&!+JDDZFuJyl=J`<&ETcUo_PC z+p6%AdPw;yE4&G2ya^KTC~6<&eN@N$M&bD>yyaVr@)irOT1ZF{uhr5azg3W*beAGN ztRP?1?DhbhIahoUudQjImHL2!9H1bB6=bFcnI$1byf$2iJgguC6y&PSvfz_7$TkvE z#A|hR$YTofi+EY^ClsVU5ppEYD7c8%^6F~^KdB%eQjj+)$f=r?(>wdUycVWIUQmz&pOOV1r66C@AWy)Z@){TM+Rl1f!7nSw$L$ibp@N*D zLB1>@MZ7jvhx|)H)=`k#H_3v}(ja3bq=?s=>5vxHL~ZCMr5vpwU(q1XZWIM)@!Ed+ zCXqP^@mF{^jF5N{3Xd&bFm-j_mUtz^Ytg~cmT5Q+;b>Vi+AsY7LObRW-A8F0{ z4+1o}rfqdKGA7iMt>>K&OENx_WVjD;zr4XvsR0~std5tV@IH82;%zt~ThCy#>+B-& zsspbT&2MKE_*_78Aawa zcwA9-ZYI{z7z~e-rnG3dRQ=%NMm@6+(aE8B`&!h9(Ya}>V>MD(LloAyUnG{B8C_jN zSfX=tGDMT>CWUq15GmJgSrhIizJy_k&dpmo)~yO_v+8;rKPKgJvyDd>mgw9>fZyVs zn-2OL+Nw9CJtn1{x<=}auG&TLdc1RUwzgLC+Z0w^CG7+$Z86LHjIc`S-1zRF8+^j` zEiG62=N5>x<@zrA_=Pp=ZSGMc^g_70O10|qgd}9;&ysSx+0ZYn5+%r|Nj`Y|1N226 zbMv=J;ibk%yjxcr1iP!lJc(BX%V^aSax)Ko&hXIZk1-D&+(>!oNA*{3Q?K+>uUx)L zzLGw9BrW4M`ARX#7oy|sQg}=6kwqA)@aS_)67Q$44NAl$-= zw`XvBiTy&_%ic;Rd#MR$Y|Z+fcUB96wep>yoo4wMQ@C;Cg3*MiIpN#b2!&B^wl8dbHHXJ5>?fBBW0wo>;&5s*bls;q6fqd?!{) zO71qR&|rxt)-T5Dcsmtdy25)+;YFMAYDm2Acz^p+4XwO;72eD!S>8B>*U5~x8g7}Z zKqkjqpyTaVct58|yvw<=yly7*l*DVt@%rj`hZNq0yCvQS3a_(SzJ?M{tY7rk@qSi# zqee=+*M5}x;?_ibv%)B^=wp8or15uJ;ayM>LuDynv1NQONJ!Dgen^KruOQ!1ke{tE zD4fg&J563TLPCl@wpE9`q#%1J$P@+1+^Grj`{hQ#MIZa?K&{|c6lB3*No0_Mq@N0! z>*hrXDWd(vsuc{!621&@;3i5qTN{0c-qW@=gyc!DcNFRy!vC<%Y?yrNyE1{i92#dDN z!EpvhbYt|laU8lM-4b!-WvJb9(A0@+oLZ& zG1?>l`hOJ_vF~Cy$;9E;gIovU*I!Bh{8sYody0;sDH&8vV>zsgthhG^N>)Dk+|UL0 z(Ce1ZjarM~ek4f8YpU?#72aTl=N4D(`^>;Qz(d1TRWQ+Eb+t- z&`0Qaw=29im4#m4C;gIJJ9ekU6F)$2pyRbucq`Rl#R>H(6SsEk#4@A2E(%t$4`+Z@ z-VO@yafSDq!b>*W`fCzTj2w*D@j5BI{3OZW@-JlljyB`PNj%{@TIqOQ6kdPjJ63;h z@HcsqW|hA$HHs{J#}8GsBHI<@b1Is7?}{PfWZf|5N=V^5rs$A~3i4(J*-Jrg(WFc? zAeryDOULW2@ZResSsW>~aI#CoyS7A>x}>$w;kQIvQgLj=QM*~R#(g(Ft+Mab@a|{oU#KyANYSR|u zJlsAxBGtcra<8-rL#|<-o#auB|F=X#0e9I*#Aw0&ld)M}& z8Ec@R7JNx4lD6RNflx6aC#X^7mPqi;uAKWr?apspkJUd|l;Esmdg7YDc*40G57>%& z2RIL8txc^QV_p8|>54IJF2`Kn?3dcX?(9SR=3WVY<~Dl~Hb%u;?ap=f^eYyu!FeXc zp0U0ec1kUMbvbF1B=LY(d6nonpuFQEs5Q%>fJv83= zB=%i>HUfLE4%y(k!xbdmE55gUi0!W$zqt$JFWxaAINtGOXuRWD;&0R8Qus@IfvDT} zxtY4IIkABt?$&|`OMFg`Ev`4d(RsVQ4&&`)C4;xVb&0pz>q*|k6Pt`D%7M44b3E{t zFxM+@*G_=9QuOWBL#6O#(zkh^nMsrS*7;9E-%@t!yxo5jj+(aD^6v6;CvW17l05N5i19=@kk|hW59G~(5qlvo@fVO+3SYk- zC=*|oKh^jm{}vBLVg4<5tIk&neiH<~s#x6ly0?zxOFZ#wQ42hXmZKc_y7hGrd<}og zD_;$cmCn}}`%C64hU-_}CmLVXz}L^e3H{36qVx45Z%6lE7i{Ek<7^Zn`4UfjVLVX| zd=zuftnUQ_ZVo@i=3Q4V}PKFb4NAHU|6uR(`P=j+nmlKBeb`c?TOjW5!# zLc@P;*`V{a4!_2MzrXQ{J6}VBC12u+ONHWza^S1OOb>jGgH!XOU#$*-uTtXKO?yh_ zi}jz9dH-q8LNjT$T>K)0^`A}~@$8KCI&U9_Fy4+}>m_slshL&sCZ1SjJW&q3`OWaa zTUR(YFT7p)0lXRiN{KJBc9+5**SFU`G*c(~PgPF}`%GS^^R^Uo70|a2|1@~x{_I?k z$|IDz5=QL6v_4N!4J%&*>bCLeVcj$10<}! z9=2BJZBPW`?di(~Z@mAsB2e-so=7yFC31sGv4mHWbnrIZDMuFn|LC`c%mG5>p#r{Z*yS0UU*B~U%I~i zy2FjHOMHB2j2s^dPOaNMIV`m{lrGiUJ~<|}8itEV2UEBX9)8bEq%F4w*TFky8#*{= z6}Vi@#*9+=m{BtPB5e0GHW}qUuOG&YcDdSCBQ9^GF(dKBR^tica+lkf(RCU#DvG(B z_jkvPf}F%A_Fp1$DD--;@dKk-DO@kBZBH#6G9Rnl_hWDi4fz7a^S816c4=3fgyY0 zEpcxd{NLtM_(~0GpWH4rp#2+@;Mus|<-cPl&z2j2JD~4wsdo!=b^gxKm;7^r{=`Of z<~Z*jf61SC;(OzXa^SD-WDooeoa&XopgrKP6n$HeR|I zXaXZmCL`S~jkN1qW(MWtLe3GRaj5tONOTKKmS7n$jI{S@gG3&f%=RM^Szscbh%}xc z693DAN$QJ4q86B}faQ82aoA3fX!=)5`+8};8=oHH6HpoH?(YiUbf*$On;?Hz;iy4n z?q|9_+OV1xR8~1vx7%RwJ+P4}RW!?V0n*|be^|6e@Ji^VtW2I+N;m;Vy}w$)>;;AYPo1-XenrKl_&gHQB{+9UyzQ>%t{;Gn+)(@`RqJ*N-Nl<|V!jv|Fa8OV zPxmmrp`F_szQiaA#NO_*s@J$b;r^Pmd$d>hJ$nDXr%;R_1j4 zg6YRn6mBJ^w=FIUY@aIBP8D4X3w0*8KT~9P1Yo1Z0NlsDxZurk?3AlX_gknm&js6^ zSdNpmHmy;Py_f4tsJ%pC>M|_dVu8BE1;`qM25fO%sOM*KRH6Dm3vf~Y2~KR*6f#-p za!(AXIB(3_Yt1}_M{K!0@xpu(xZ_GDdmc`?>|M=oCD}LJzwG z%<0%@Nn_CfEk_Nd-NP&6?pow(@Z|$Xnk&IEo_>UlB}K94(V#a33~M3yj$WV6V5^zP zg^Wf;^TMt$LD`B!p~+%UzmIi;dPG6Bl2ExOD0^|J6alrx9jdN^ItFUER4WOpGcVx1 z#h~P`Yf#47?r7Vm%QDiBH#ypugw~0p^(&6H1P= zc1LP!Af;Anv-WfaL$Tn|M%$fSDQJr&YSIR6Fj_CtC&V{>Y+S3{W1KnRlkhec=3L=n zPPe1QHK_+{8g{wv%RGoJ_&%kWA!7|0cx!7`Gv-%X1srZ+iEVq_+Ndl1+Z2jtFw+1xd2y}M2Zc(V}t~+X4Bz#;bg34eKRH`5c>&_4s>~fvQ2G2amskFq8 zFF53NY{WXYLAHSu?PxQqr>dZD|Tmp3@DF^L1c6Zsv&;jB?IUFk8z?GxYvBk)79Bo|MTalYqC?wYNg?gw3T{%vLm6$6Y%ykz|KUT#LI0Qp=S9hj z?IpVQjomSss=;+^65@!-WN8@%RZ^eHDDX=ikx>vdewf|)4n2^NGntGLs%gja%owIi z6sF!6PulQ}YwtzU)H>=h<0k19TaszVmrP@r!lZWRAux(4A|w>So^xO1=E-EvJpqY5 zhUVrl0bR-Wo#J|ydV{Awa}Er*lY3G~CVeyO(_HA2IX~%gQBe$YSG+^!9(E6-IvNea zOzQR8kC2G}f>6@f{9clByKDZ$gGKRQ!xAl)qKqnN{Vp76VZoYM)&a{Xs*+kGqsT9{ zYDQ6zb=pomBmv?RIKYDdus_U$nWczeQg6s8xZ67AEj$}RV0!~+_ zu3U<1!(})yyR&B~`6%kb#TU44?*j*x(aDn5O9~s^lMDO#go8!-VTd>!tbFJpgxXu6 z9p@cTz7F_3n12E`O0Q!_%oVgu9#wj|_CAvK1Nc1>yr z@ku0v_|v&=Q|C0F*~Ko`Qj8|BzUfd~?gk)`%e!{%Ap4Wl-e?qi2`4KcVHu?Id3aPh z+EwS6`!4>3bhadbxrs&bhQliu+B`&BHdku1{>DIm&G|_Ms4jAr*qqhWe@r1dq0OnJ z2ji&u7Aif4Jmv;ysjkv1M)OMEHO?4ncn*}MJ!wzhycT)|C;I(u%!$5pu^Ag>7^?L* zPO$GvxVuqu8gOs}fNl1l+YvF&V6|{7_m}jl)Lb5Kq!1a<5)vKGgH)v#JO#M_S=e~Y zeeUI@5tMk)XG7V7PVR4EiFY_iHEf&H$+Ns32+sm99SQeRlga?YXpbjbEfC(@?!Sdf zh|2(gi;s71bq#xoM68G~^p&+F!2na8l=%L~ioO3CT39CDKeLs3|Kj)M`}rr*%e~j|! zlNesQ2fX#{KE+IV=@}mG&trJE<=JlMcr#f(GSAkU=hIofMxM>e^P^ZkFwYjm^AA!! zoxbUim+puEaaH|;{5JM{K%T8Cf4&WSp1SLK=~*7+sm1PRv-=JY_b*HlJnD?(rN8O{FP%L>Y60&yZ!35{t_>8{-o~fANtYvrh z4z@>yTnV#V(puS_+w3$RMGbIbi`_G9))khaT{={%kX9=`V{HXH_6tip-Im-y*nkaq z%~yBeHE@mh?tSkJ6+B#IKmR8H2 zu?~Z)F2A%hCit)M#Uz4%8>xVwg;O&;<@Gd|@Neh1(1&)hELM{3BAQ#1a0 zCjIylZ} zM_mqIX8%E21!dle)UZFCn(^0@9!dX1UqV-o-wLU~Z-P@ZKIIjDe;@JN3Vfsn zK2F{6kyrRW`qyzVX5wcMQi0zar)GT0D|{dQ>o_6*ASHiqO@7KNd>{SmaM3;_s`jC? z);>^P;rr-ccL@B&3V*(aPkCS5MO8uhsSey-97AgGP40s7KDvwNu`a~3yHNhMb2HR5 z{Oip~P5!kuvY!1#HQZ7DqO9>omvF97;Yfu-)y1h%Kr(2`D}UizyfLR1haZnrz(0di zGd$&0efww+!*AgDiAV*0XPlbxDX;K-w1<{Aar_{p0>1)I&G?j8_&(ahj`|#bF;am) zAE#z~$}4;y?I9tQ7sUR#Jr$zzE9w@Ku!Nmi>GREI6 zTXOgyq=r7>)C^w%c~#%kLGz(~YZ)Q%ky7ROBQ?OOawwnHjDo?o6bv@9lqnwETy&t+ z`k8enub*d;n(F5fWIfl<1GuB=C%ugE;39I1XaJ{?A4CB&k(vug`LtW8fNfB~p)<-< zzLQv|QJVfebhR7Pzb;5k;`y9}RZ-HE)Eec$Yjs?DdzLZu;;YvYz?chC9CVRj)ZO+|^qpUl(v{ z=8N*a@U;*PI;ogLH2CRSgHL%M`I>ySRK6Z)!1;VGa;zuuOqjI)^)ylgzTQJ>;_DS;J@Yk{#%*MKUDo)uoX5)&Fs4uD(h8}l zjwU!Yn+xTYKKmHIMqfv(0{jL@1%54@n(-;G@O_M54+(o&g;d}#Gnovj6Xg}YkMV0D zf-I8%tm-}-)4C6oSNOihuUJ{i_(y8+k5e;0O_2A+9F~gsb(V-i%)rl@1wpBL@Yq~9aXr{Mhh1x zukd};*Bv4pS&UT3KOd)N`6=&+4O_EJ^=eR(-859PAlP9ty&K#;H+2QYgy*U40!c`tOOV|K3^a zzf)e-x3Bst^ywPJjc@(SORKB2y9dYNDRSX6!vQi1=Xss70xC|^vUN`M?AdMpnhW%^|5t}uO~ z?uu{v^yhD->r>~7T%T@6YSO3L$QJW|-7()AR1J4XpZ3_ZwpugyRQ597gb6qEeD7Pl zLPEwN<%ETd!l|i3f+$b=w2lFf25>@)y{f&gK=Zw|s6N&gpYKfwVf7u-3aNl^f>Sd* z<*B|od|eK2ny)Dl|Kr*mKL@G6e-Woa?yQ!J&5uO{~(+1bFW_*w>SNyZZ66Hwo?CD zn)*{-;g9hR{}8nbz+Z(_@Usl3W_~EI@cDdYndSdj@Smgje^KL~@(Q2NSC$z+p$3<~ z6;dI86P%jmr@X@F^Oa@BuP^w&CfkFMi|*|~5aktqA#2XcjDJYruR?0@k5jY!%aB+2 zJpL*({>G}Dp9M$-{%o9@@hPwHd3#xA{NcRu2}wjM@H?B@AM!txSNOcWEHnQ50bKqp zqym2|PR;UDp4vRWrqtyuwfSfL}s9 zHc;4mM`iDAG<&DK!f)&WzXbVP3iSz6>Qg~eAIdBIbya-gCpwh#-vFuLzZOo-{8L`x zKj<6&*8=}-g+EKfr@X@V^9_HvXipPWd)irRPbshP=Xr>SOW>cn2c(~uDoB1#;nd6z zlQf66O-n{W6& z_eXwa>-WkWkNv^tV?w@{^D!aY+~;G0D6iyC_YHpfL|JU$k8 zR6ITtb>=Z%)qbzggOeH5Qj!_eSdjTlMgDsQ%B%6v_DmVd{Cfo+PX@g$y8H56Y4LJm^Jte;z{lV&j!1Kvq4+r*u#K2By(NIfm5muQXms zdH3;3fR#L7)9r`S`zL$JbD{tB8B$YyzmKfv`kqaGO!mLZx;~*tATyqzmPmO664V%{ zMgifxLMZPGVc9$;3wj(W5%!=dAS1#k?;~M#4tgU@+Q&m@IbU6nn)qsmtY^NOPva$PxyFL znScLOpSNE@*D6c=i#RpoQ(oco@u)K6N0V1a-8Vog)TtIu&G?j8_&)l>fxLYW>L}ay zpf;j?H{3bpeNoqgyh{}HB~nt?Wk?NqNnI)LuC9o`OZJC%eeX?ORr}Y56p8c|saao< z^`fuW%=TT@_OG6(@T;oAFK87`d8MzuwSNPt6sYfxNJV{9!3_RLUn&2$>w7rwF9jva z{!&n9_x@4{<$bB|y271b5hHXLwGleXyVrN=?ccYh*LUYXd41oE)KuTKk@Z~P)o@4o zr?R$xi~P9*nTFKx=QuT2NILSq5O&}Muj7?S$v~DOHSowlDDNX-b@qBAOtyb}uW-IT zLu%sdePliJH5+$)=j$usu;wU-HB)m~l=p?NWKjhjkP=_5P5cvIl=qRZ6T3_0>)0Qh zuMJ2|e0`3rXTCnd9pCxdew-`A$4G^K&BLjo4`lF^_l2)s7dT{Vq{P>)NDVyVi}F75 zwR~5peC?%*r+5^piLdvO^~~37QUe(;l+_+zAT@@A9Eeo#m4s8He8d;!ec>yYY8sGl zQq_X5nMe&h;*0V=@-_LJQu&%M{8xs%|4Q}hzn*aOU+L%umZiV82+<7{ZW>Z5T&5}d zp~6w#=lPQlcX}(HYLDj=tI&rGq$YhxMb@)EJV7)|eJJbiU!w|n<<&f zpuB32ef$0E8LB1Fw-c#=UyoBWJmpn;?BnlW>;J{^uPJrDsHrpM6~2$Zf1Osq@kbyP z@;`)Av;34-_&)yr^{SBnFj9fP7pG=?$}9XrJ{(|L4^ray3*JA&<@HT9>wFYa)RfP4Tcd5qpB zJn|Tn_t70bzqNFKvHmb>8vf!vq$Ypy3bLO4#Z=r;{-Uhy$1g6fP#cko3SWs+vqDkc z7s7Idj=qVMwI3!0W$gzksM~_IQUl<)E#3&DPs9cAuUeVE(S$D+9mL0&emi;^ALR9G zi~q(1^ zABe(txahsCEKEN7CY0%8Zj9O}AeS9D7mN}q4aj!U6yw(PhE@!TWgxktov!*Ff5xHeo|8;QS76@Qy5 z{x%KQo)g!e6W5-{-;Nf4J6inhI8`0;i^u#UBp~BI)k$Uj7!jdE9kzgMTZEww;3fu_ zBC~B!RvRP4VN1@ofeBlR!}dtFZJ5J0Jlh5)Y^m8cyvJP~cL0A3@S(0yE_#jj1ooGR zck~Ew|0-!O?8f{CeM}O&F^45M^8wP5Z72_A<@y;2J*}CL({#|`(?to62ScHws5Pjq z+vm$>=~P@*w>w_m>6~4ZtZq0-g(5HRg`+8A+N3IJA2N60DI9Ud(^qK-x6`JLwt)r z?dz^rwCB{m1PLMHX17hZ6P*(a;#+K%n{J24<6C=M8wXit#5?gh)j8n{sp#T!v&L6N zT|0*30n@i`=(O!#ROS%2d%Pdc-v04)ks~P}I|&t?G7> zQZ4D@%BnA^{1s4X$0Hc>M;e`n9{)FDeyomDMk*Iv7=b+Mm9!huO312`!4^ zQNQu1UwhQ`1k|tHd4%fFL;c26{Zid`NNDkAJnFZ*s9$Pk+&5L9h)vZ^^-JGU%x_dm z{hoQEc>SVI3$YtKDQb@YnuFxDZHAAf+I7IYnteoB>+^GLAP-Q~=Mw<^-_&Q!d;jYC ztlO}Z`mF!B$NKDmJ?MFTp4-=l+xBu-IIphRqXJR2Yrbbyi_hMU!Y92)h2ew6Vw>}~M8~t# z+@dKM8)o?8A=XBdsAclzkL^*HO7+K+-rbJ&cDOfx99kBCjJ5-9gv*;hPPBHr?!_O+ z7v&{J{VDvhy~R2Ex@*+l(%u^=RT=zo|C>sw?}3jNuW#1guE9R++=5$uXSBEQ#3%^0 zwQ$P3y`@H$#n0wwOy7BcxAi4!5 z2oVX6F_Ad%;qEapLvcRD7GPZ-8=q~%h9#ZRZHk3>fw+=@Kn+)F^DDLa z6(~mM`us|Leg&HK=m8$E#U8ae|HQThXgwc@ga)-waHhE^U`sIKA3KlNVtWw;#c4q@ zPD^v04o%33wX+Z{@u;ik+oUmR=NX2G&sHTkA3cEZ41s>^QHsu*Bsg!iJ8|wcIIEQ4 z9C4JzX4h0~_FKHQTT#68FtyK!RjZ4zEWT)SLR1ljWoIcYyW}30ZE|b26P+UvmTi(@ zS<`suPFI^yXaVFw)ZryAYxl6y6Q&<0v8z1SkD$G$i>NvsNr8yG97(malR_Oy^|MJq z&?{j2f+#epJq~mXk^*F4CgQxZw&%6|m`alW-}687|8M=f{ePWO{6WHls-8vlP=D;r zBBQn&?Jm{-<9VC(9_M!P=SdGX+k(k+{oVR+$%UZ$2k8H({eSb{UH`R9tN$S$>woDr zS^wXZTK{FW=Z$|cP_6yn$*T7MP5b{kdGmj7`(LY+`W`r_czrYf-t3A| z2InUcZy;0|iw{|kKZ1C}n)xoCpRsZ@{&(F1Q>6~QBesYJilY*oZ7IaSCT#T|pxwH1 z`eCrAXPB#o$l=@eJ!4!JkxM}?#nrj*(V`i&`OP0FKouMl6QizC>~a^z15lFjM_BAK zF&?|yhVk z>X)fZX@J6?8}S%oofY`g=TX?lL|nFp#bs<%1@iH@%)_8cC5VLEKj zIt=MZq@$ri8#j>(&6@<3NpLJBEk{Co2q2+BaMyded_oBp8{q19F~7(f+%58=%~~@y za;Wv$0|7&=6V}?YW833$47(g-zHG7ZOA_% z>N>iW*Ts;3?V;!hs*Yt|0*yb2@qV}Qhcb=#AFNu6{vPU6Tz^?p?P$5pP(YXB&>eJ% zcMZoKMEzaE6SCs~us+!3w}{Q@!!5C!?ZwS#O#1V9{pd%hnTTE$L{ZBad zm`C91-k*MYHB();xa@BRWB-lu^vLXz+Ox#}@8juJE0&_qfjx`sGmFQjupN!hzq-Eb`jt}O^%K0*_wBO2&wg1-eY1E6;Wlma z7wKV}Kek^bEhYPwSGeKm;GtaD;FCJrJ;Gei(b?uM0dPtd>~Ix_Ig+m7$=O|)L+YR1 zr7B&lCN5SZM}&*jm1g^{rK zVV5dDo@S#oa(N{!c7nyxvPzmov&C>~?1Bcb_Vpy&)g7z!cu0e22I>m}VB9>gF)d$Y z!iY3mKDT>VI~G!cIX{nY!t@{3{Do#?w*)rU z8%gimQ092153ey8??+!S{T@828}uJ>FJ_G#{wF9OLVNFp*JLRd9o0R@s2jE{e9vP#(Gy^louaR9>o1FU z&e6{AOoMkWCJn}{lzY5`l|ro@N$s-Px*?3W*tmLO4N-Pd3Z5Tr-<&=P^~htGq+!`J z`EYJJAAv{gIFoVbm^l|uAxCPJodg|9YU3e(gnfAEemPIsorSQs^n*-VTIQ5ztA=Ik z>w??9;m`=u08y4QCRDKU!ke}A6m`CiZWY-h#)|NnWt=6r9@=Xrmw&*!;(pYH{v z+nR5Gi~kYZBhFnS>XCCUqQLl+d|C5TjU>Ft!4AT%sj$)ZI%E-MxgW zxF&jg38J@`P@RoQ-FBQgQ;aCU#-s-2C)^Du>L{*t1eWGQ*Hz1)6j~ zlldv>IDjG<$UytIN4QZUnm&o@{%_jfw9NnN_V@0yWyG(}9ev{$^gHO7Vm-DuNz>Ql zeT7>&QRs8y8~<1Ood3vwwLZuET82Ky#aQZd+2@KryS{$S^f~SbBWfIv|N1qi+W#-( z@k=xIBK!ESUEenOR2ll7*1=cbe7xloMdL}Y1~NWdcK$5ZLyZ2E6Gr|lULRB66TK6! z8Adqr$4BGc!SSu}*A6E!@b^6{C>tJSPjro!@Ry9gRL9QvXuOAC6yF9f?b0CBsKeCU zCX|u{CzO%|C-_Z*jj68tPYJL6BGVm?k*ev**Cxm9_z+o{zZ^G7@;jo5QQGpqwWwPe z|F2(I3@hV_?j_h96e!>(^H(qLiB7sv~+V&v2!r?sP!+MGmMQ83F6R`DUle z_@;P2c@eLWFR|2eY4&QaT=n+z+N;>N9%RFJ%FEW~;YePe)%uIJrB(4-qx1SfLEQuZ z+RNRCm^1=g{~2ihbN&D$YK*Vbm;Jwrul5K3tK;jh0qwlk-zOO8~M*9AMlSKQt5+wg``ZqHk z*!y2S{{LMW`W)KASDzLW(W0%v7#PO7#Dv-%yLe1T<2E@AbJDaNM!LUSNKT2(HhUH} z(#HPI@7}!4>z?z3T--TGs2Ah*VK^W+d-cby9$$4DcL0VfG}DkUs3~&uDb-& zZ(*23#s)`0#eZO%W?p2kWsx0*BDAM-@fNknV#^{=8;Sr@P_aiXGRm^Za6=L793NCX zSS`}VvdCSABEeLosanMQy%qbHs_WUu_YH!I&qD~D{e6~2b{dM%@JDf>TI4y)A`1*f zLa4}Gwa948B58&q7;gzG9-y{?6gAGdwvLe+TfVq<9dwYbT2Ze2k6lZyBvEWMR|q^LFrj zz?~T5?Hf%?RzhfCZbI zUO&!@IUbtqFaGL*Q^pFk=V=_b_#=z^6?El8)rtg6lz-P$-??p^JF0KInV!neUqqGj z<4%DZE{8pW&Gi!Pl6R{z)Q(qy93|-PHBD^3OY+cRNyACw6A{toehEh}icN-E>6fiO z+!<>J!M;%nsh(kFk-D8o#d1;+f)v|oYG-U1x|!P}hHR6irlG2CiDmG+d#l16N}ch4x5{5g@s-O;#hN`7>-7JX`Mxqb zk4=);=zLZ7%DT4c5%OP}eVBQgP+=RRe6fuYR=@;j-vSM{-A)Z$hUET&ZAH~07ShE2 zLW|oX#7$j;5(Rv;dRioA2gtz@{}xiDiQR<<4kdbeE|%BNqIW0yVlyshWQ=@sAuVXZ za(Ue#dWqzAVg(o4_;mSh6rXPk8xUd(yEohx78e;~tA(YlVa`a&R;yRItyVv}g1x$I z>jp&G);Tfr&?_pxAF5_MdOeO+DvTDUqP+bg(;!%?b=xI4Fm3YX1T$^-$v2*aN#l+4 zHQ-yCxt-V_j)8jUbLMGw4gA*^{EKB&6ib|u5wi3Fy{*?TGJ;m@pSmCAJ;8NI<+z(n z(u$D#Q*Ahnl6$gx5eDZ(E=3(w_2REk^~~*5i+(FGrcq{3$!ygSRW+>8>vei!!`L8& zv(uK$c5DhR5m`#28|evHfP4~Nb~G~BrHeR^!A;z;WBE)!+JVW5%bwtV#&8R16-2c>m&T2W9yM=G$M@*PiLz8!-c9a z8^nayWfMrk0Jn^`Jsey#wPDa7w&@U1+buLX6rCSO%b>P~z&dxyu8%P!VGHXE6C1+p zE!tKK3z1-Nc3Z8U%-(QiD9+aPW%h=*JILOW$y}pIsL}GMi)3BUGOUqQy!HgQt{J5A zob74qrg*lnZXv(hYB}(}ka%f`?HHjtq)Gl)_Fp6Y@B7H8|NHz%*j)eN{}uiJ^r2Dz zX@1a&@0)1;k@V^R3ciyC+smgY62COXT zStlP$-QZbv;aL&+&d7Fp?}D2%?^1n9^)8qsIh4-3lHpyco49ll7|FX5hbz)e8^Yrq zwNJW~DR_Ea;Z3=b%z$~|iwIHQuvwv4G-ke6v#ih?E*q}@QoV<2#VOd@U(YfEt^_#D)$;(?+YsOe ziU8MJ1h`Bkz~%l<++b2$1h^xgqr>9C40ob?2yJ?V)yLmckh9_kytFXzf_Ah^TNtGh zpPO1SqQ>Xqf`1>McbpT-5b)~)KDGWcpbA5LX7MiqcF>mWfaS{X3&G*JchO3wU7)&{aa;((}zZk!>go;XBMhav+2W#APp zkjmczMvMA4I{sc`h4lOx>L0k?P=C05b?_-sZH%aPq;<6-Tc!B~9Y52J^g`rSD!nK{ zuTFXBbzNt`7b4&5LvQ;*OR-qvyJ)6Y(}!MWdFcJT)_^Ze{&)Y{&MiU*(kp-xur@^(Z|9v=&Ann7PA$TKMi1|{rXcqvwb!ARdHjb{yJsU zZ;;PLBR?VXfzxJs+xL|&AC;e;jF!d^=}Df&O8ez!;0Ff#j*?FfK&s*C9VWlp|F{Sg zieYxL24djHYvd9pKBA@B6;8X0epEVilcr(v{5AyNcs^1ffa zLc-}n5Kpr*J`IWBz#xx??;7M0CZFu5$V1UrT&dJd?ZX2``9l9b^v>@tUH_%UqaZR@ z7LTI510xW8dWU-lhKabO0A7F!EaH-)Km-40R~z^bmrwRp_*dG;xPO5+ip0zCO5TBX z!mH&KKgeockt`HuK3D-;rRsfl20!ba?Hx$NioNafp`X~WBEs)Z zI-;s;Zd{7TDC^v`)51DT{%5l15Vts>m60C&U!|wm-}!B& z^IMufzN$J~t7NZi|$>^8}on)wAWb#t=$Oz7#@(-*@LrRe66@*DF=chkt*`Fdw$T z4hxp!L`8UObPH|g`YBCZKl~!S0F55#kZo8k#eP{nVJts`%HLpBzSR=z@)77rbN=>| zxhwp21%EYGGXB6Cs50ij7voQ14h-X60>&`jC14EWT>|QWTQO{bmzrL=pQzZtZ>yKA z@f!IhQB|fVJ5vW&n1W!9Ay!)GhZz%h z?=YHS!iNah_g*l$hO6?IleO2O#b66HU+TDvh5c~-TjAgQrZ0Y~688r47m5YkUCM|BR`H7D$v|}_>TXS*9U;Y>*Qo-?v#0Xft-6Gm zeQE~Z)R70i$`*05xqT}kYT;*Jsr7Fz^sT>b0QDbT5qSNi4<=7$K}l4j5`S9bdq$8V z@*#Xb@HG)zOW5zoT05eBHOeQQ=v z_2*iZZ?!Ry@~l0KvntUq zv))VPYrl;4!>Z1us?GUSR}1`p@{u^J@@EhE^6y)o+0PAD|TP>+4VONKx{v0*;>5-vadq^ZIf0*Fz*V2~hAqa$YGMe-VDG(T!Jt zKlwF$0o*4+d;(7LHR^m&d)*l9F90Y(-=RE z7HRxECP$d~i7@kX;q}IhV8@}XF24S*F21l@w`Nn^I4UpmUh%q*!Nfyp`*KvB)&W(Y z;Ou_TQQz*Y^6F6w@~{4pUOO#xAu{G-e|XsqVe< z4K2y^n1YYDSB2gZD7f(?EBjU2)umNT?j&!=0Ec2j?5m92hSK2-8PE~r&No(&mdY(T zD%7}N{$v9~wP_%s+ArTPQ0D@%h>FIKF8oo%2rC-U|lsHpOv_ZQN3*^CGsW3Sd7Y2RqHAx5rpBaTA-gYy{v#tL3%Y_9@ zAS(xOf%Iw3)wEwu#}Q)zjx=P;u(5U! zV*|_ONvK#3^21o71EETu+X}W49qN?(bFyPQ;jhHzyQRWQm1xjFQol!?*t}3GEWxJ>w@rKizT#n}KTCAiI4&={41XzszciJ+ zXn%a@bUOY>p%CRwDxB9!QQ@m}M9gE&H znRqrA*YSKiIgsFa;_bvU1%3D}fyes*Y4nB2bhLeT;yL$u&U5+s9eb0;Z%xkc#lD>1 zms=|QuBD>@`R!6dfnV^u?{9;SOX0T-`G??lR->}`UHIHT<#$S5jo$`qnSQGXepk0p z_}xKA0rIl7+6Nr@#lm>b63HF!j5gzSVzga|lAxX~%Pi|_fFe4}n5 zmF2cF(=*00)jD0mgrW!@E8r`NbcS zTuHK)CdL1Tug)DplJwcoC`RhXzNiHhYH$i&;)fE2$3Wq>r#BOYVJZbKf0e>=L1DR| zP=`^VqW;TF5@jA1Wo`|i%=gurGNhfT40DYbXgS)bW&3=cen(Mm#A^DS#rsAk{hG^j z{W3u}A@_qsA^)kj>D7xcPfI1IDy=lWpYr50ns)c?`v>u_7E>_G4r;#36nwFlh<|q~ zF0z)60*nWD_t)aVcoWa1#Dg~EkHV&BAwMrY-Y;Cpxh@C4NR_F5n-Zq++W=ek!V0Sh zepg2+{O+J53+5Pz&2^gRyxE?f#@75=>Jiim}`^7h?|_qN_VZ&nS_%16VC zL~fRcguZkEELgwmLz|A7>IMEu`G(T8$U|M9;v z#qj-dqu!{C3C$e2krDcf|7SFNnNZ=XAy+U{(Z_#sN8u}jk#d)w52in*MF_}G>D!dj zKOPWDmdLwLm)~Y$`@RQ>?SSm2UIXhNFT;`2H;#W$6ItPUMPwd~O<1P!-E)cU1M-<9 zt)4b;Ibr>?!%>IYGeL^0^^F6=zo>>rwM+*LDbls5F$CbXYU;MLj zIR2J8{Ext81pXqV(Ekem=hZd*Q{H0ozdw=7zq*RQkq-ZknVS4394iz5&L=qjhn!kH z@4*WM{wn_#|4lml8&@*?%O#G#C%P}(e(uAOBL7$I8vdKhwx7xZ|EiuE{@-Da0)GNh zdjIlgA+z-U?C-QHi2Ach)j*Vm=L7P&HyI;eBydKaK%ay&vKU9agU<(w^80Gc99gG0 zgWve!s@Rk{!?!(97q(q;CxlDQ6T(=x5yOMy=__>Z1K#8a+(B2XhAepop^Kb?_<%Ry za;AibJyJ<>*T&n6A#&31N2x)3WDj+d@!sv=Ptl06wHfdCK90j(xS4{RawgsJ?l4r= zNq%Gj#jgZpCcRCWji31S>w8U55zlY#3qt&o)&8sx6*Ybxkh_x+|H|8==aHhjca+wj zePfOxeg&XE4AAiL2v3Njzx{ISH<u!d^zpx7wx+*2Ys=K%vLtH% z5dRZNeBB>e z)Ms*K66LYH6Isn9FS@-xWG$cSV#*1ua!A4L?_|#+C+LoxzVv*mpNm^T`T6Y_tnqtt1=oK! zp?~yMg#PI$Kz<9aXgW>`Gv+|0@LN&G?*QcVrSm&7pYt17{xIMMaww7iEN47^?;swL z|DbEa!~QZHDec#v?X-~5s0)T&S<2`)f9O7yx4&oNw0hdWWrP#YMvCsg{p#=N=iq&K zPx>O{=6<|x1U;#toKs1wswrn_jh(YpfX)VI=>U$1r6}~=UztWM#m{znT6kB{ zDD^nJu+BJ&pNC{euxGGZOb)S+8T%`~5^3 z^?qzM2EC&$61l9GK@H=#_?T%?{AQI}JTBMmC5S!5h`C0+3?c`CsV2vSZ?}%er&sA+ z(D<)W`e&^)F4v6^rK3gZB9z7+*pFcwCVa@$L*K@TuYzJWtr#xXJ$D!9;F3-$OJK)P z3gq_(Qex7{i;>@eaZK5u3;t*fy5e>*VD7*dO^0C|w_M}pzg7T!;lNKVV}>@RD|e>b z(I?{06oVsu`xMnvGqy~qri}i{otMeK_RBN7p)Tf>=AMQB{z>R1%{N;Y8pkrtRMhr; zzdV|pM8u+v$i++VpX|!jTBLHy@0}n`ekn_t{5syl<@X(RB3S>f1V?)L$uLEdSu!lD z-8*HFlpd!98Sue6H$)m1KYVxhkLW&A?wz}9A+^^_1O$zvexafGS>=Q#fk!+ z%5VK!vDJg}=ogu&dv_#JACxbm3qhhjD2HNlgNvHaaWA3e2Ex^!+pYAAm9Ci29CzhE zNz@1B0bPW^_-B)7miw>sbnB?R=^KdT7!0p9tPrcQcW2ha-5CE{*o76TTApvt@?PCjZN{KV7Si{^>h^F`=+|?vxjpP&(dCLOCFRhn@fl<$zp*BbKP3 z?L8ew&P&^-dRj!iPPRuI=K4)kT)z|72juw9WP2zFx23|O6im@-mUf^hWm8Kb(zZd^ zP*icCNKu6+7VAs&G(<`POm)AR1AM4FowOmcu^R9t#1I(9zr7u%tT@y}L!{g# z+KEJROu^_9WaXtZ`qosfasNm5{NzQA-7oT=&vuv4-caw;L1+=^uh=IJRU80+;zciL;ltj@ho8mmR0-r6T z7WJsS_6yMp^q0hlhInARcp&$pcmP{kaS@7^;(hVJa#{(2cEr?D+{GP@1-KdL9PpKi z$+}e!Sn!}*vQ&P5pYo?>4-KASLa5S~+rw(=<1l;JK}P}l`&X}$OnAcZYvBIgja*D< zdlAz3(%oQ1_CNLaC(mpAwp_^gt=C4_Ke{Hu{^=+{e#hu+yhU)p@vRRzo8b2~16&A(CyjBNMU`~QBDu!d^zu8_L6cwP^Arn8mEZ9nMf`7Be)%nFqsgyA z;PShPoD!Hxeq)ipmoC5T41@f%@p882Eg50?ka?_}#fD2x4_?!7^`}_gE}di&FQdzR z-v%1V&N}9F#sAh8E3_Rkc0O*-qRcu`W?}$kI*Kw+@G=S6M(*N&i%A7CtehXF z$RkRWNTw1rF`evpxPPBrmtE*A3vYE$s6|~LM$SMA;A3BrtT923fcMVVv$UZU`+8tC zo`A47H`Cb{Mq<6UsVY8QsVOs3#mqw3Dpl1&lLSkT2?};A!I{cb5Qdc~$|MI+Ciq)! zN_9mUZj5AwI;EQG`STlI=36XkLW7b3$-xEGGNd4s&?~4&lvvG5U{!bqEeOw++(Otn z+mq=P2KsEGG5^zPh`$y@>s_6$v6k9TdtjR2fACOz~q6z67Fp4rA zlfF4eRnl|No1UjBd_fXB=B8|HI~>*BRZe3PDP z%KYhJ!h@ANn2;cgqkyLcYEzlMqD&`ICXAKw+%W{5Co&djJ?4Fq+hc0LGs&%ypm2#V zwCWubK&^ky=SX*mG93dbb6k{pN|eD{gVdz7Z&aI*W|46$nrAc)6R)oe3cUpd%{csX z_re^G^cGP@SOv9UU7DggyL6i~L7{}+pqhvhtEfa75qh8D zpPhEA_l%3&fQfTjkV4bIJQ;YAZPP2cg9|_G%D1hL{|~|f(vJHb{JStM@c9z-X`Xw3 ztJmRPIAds^EU3?Ln&7tuUP_2gZvWEb37eZ1~xU+@Z#(;O9p(hA*#;u^rHA-;;QxX4F=7>q>~5v^SSE`N3s`%Yt= z+Lrqj9w`0-|7m6RP?_btOvdphL8ta;_g2xpi)%>&yFjv07Loj19<|f!J+(@EY&Jc1 zNPX;!8Whhym+zs+W^0e7(PM9_k8Ki<)x%@O!|3f!Rq`F^$?58oKOQ6AKbL>S8|}qy z4NumfC;O{UZWB*#qbI8xp8T#7o@}l@xlBCy96k9pj7F=yfS#g9_IG`Y-vp@x206RoGkdacNEjB+g?=YVUuuV*599oEzviIG%37? zGr9UYgZ0-Ci2ts}5x+fyA%3O-N8Ck4+!sf@x6M2tuD6Q%TLp$I2~xuZvxuuzkbRR2 zTpGw>FKfhI;BMu4Pu*Ff*3a2A8Nt4bU{^K3{tNCTFEk3e|2JIFJ3i+=^yhR2`{ZpL z_AK;4xS(Iekq~qRHo+B7fcAHggDNBj$p1mb!9RUvm)Ay^`QW&oFQ7lHV*w-g5J zuKJ9N=n9dq3r}jJ1}!QH4pSj5BWUy zve{>A7?kPk64WHAOVD8aO~l_4{B6hI8T^I!>Jroqf8+4C2!C7f_ek$9L3bv12|9tl zHfSuUA+m*~ggD)Wwy;6iNxfSLeaXQV)&qN}C*rRU&IgCv)+J&W^=?s)e0x-Wk0?AA z?XZO<(|@UU2R0UpMhQBQ@O_Cs__V}ed|9GfvctAcN=BLF{2s{;x0LGcmg;cXQ*mpk zt4Au`9g4d{ah{gnVgG^hP%`9draF#^F91qGrCvCUyNie zIop6%@;sS_z?s--SLRKL?n8+=*|aVtH<~5 zK8CN^2p@bq@hOA~j)GU3Gmy)MDIi~VYanB-LH;}WeY`>^zgiq$kNbS^ISMdgPHtXV zg|^~p4cZ&Xh^~+P8tCy&*vsW-g|F>h4BzOXis)|8;S0HL_#R)bli%Sz4BsA-kqUmi@I+3URtJ;-??23-&kM$Itm`Yo#Fdw zkb>`r*&4ol@)P#=!7U7=Lj~DY2l9JlNERUfoqq4t<9oM= z$?q3me2#*@xNE$Ys>pA}EKPorHMDDBe;>cBlV2^4Z?JEC5%SCJ%;Z-=1?kPxKvKST z&E?lXk8i?GCch{AwjYaQ8NT}lDncBt!&m8g;CuWfo%{~(VE6_joio{=qrldMLEAY% zfwnzY6J7dAOVM2e{hnN+!`GVQ8|xcignsi{Fp!N@kPUSpw|!*^^56N#J$igkZD;bU zW)+{`>%gGR>aWNzQkNP;Swp)9@_Xq;o&3&iWBA5W8*7X&j)IVO4Bt=v6nwc)YWmIp z(o%HS0N>RYbof#@z8+TiMz&}8x~uqp(6w*!iR*>$UOm2dw=(&yw2FU!@ci_(zKZ6&`H_Z9lHM**{PSElq76=rW8%s-A>!u)sm9(qnE&%!MX-xLbRMtKT+%Udyg@1`hX zT#Y`yBF4Vg1K)wgI(&^dzURs2jQAV{D;h9pH>uF-=%5uGvlQJm@aL9#d^0yQ`E8_d zY{qvsn&F$6tcWi2aZPmL*A3s?XLa)X_G5;xzOQ~A1vA<*e4qDL@#&i4?4#F9erFcx z@HsfXJ(TX5<#)l(@O4n}wR=pH-?7iH7rtJ4e9Jy!@*7M#G~?@smrT(gS=39B-@<7c zzL@KVZ`Ct8`BmWfF8lh2@ZVwF2+z?=Eo>m+>{Jcpg3m04`0wINO+CK*K4kK1;~TFX z1sA(9`3+E^_0vHsIbsRz8u;%+3w81<+{Ex*CJaXX3i;LK{gHQ_iu_hj(d5_H8sxu| z-+=`>e2qB1=PAZn;#=C139*)n&!)ro{->5g{CD_T>haCo$mF-Nrw=|yK~gOSZ6e)c zrk6Qc6J5A9v}>T>xlill_w5FTZzbhaM)_eVi|6~F_fYU1$=2{?e_|=RYk=>}Q#yPO zj_)$5&x|joA(LMR6<<3YzGH{47rtJ4e9H=${OS`1BR=6D6)?DtAox_GBE)%vKm#ysY5|`fvNr85Lq6Tg8q3b2TntFWqt!MHZOyaSWU&H!Lekm%* z-a3$f9JB=a@8tK;Je~Xs*D-ugTD5N@J27bM5)}D;kfq5l)f(D0@Q(v?b@&=_e9e6E z3HvMIAZw{0Z90(eAGi+kYpKUKb1jqK6uF~u|H+-wyI{8)L_%@RH8{>pMWj*H4G91QP-N@afmrDHC(?ORufk@OPO6jVmY^s{xJbUn**Xyc`l{tA2m@#D>=Tgl7Nx>vBOcx1LbB5_o1=G*+6N8OHt!Rk} zDC0mr(|MYXWODidk2ne{)&-_#ahOxmOu_V% zd}fdl(?elaa)KlTrmCRA6rJ~!Sx%pRt6=JC#v}<$X)2}&hAEUVRbrT$E0}(i2b(Z` zVY9-7MMVNr9R<_5`DRRARZMSHHp%IOqg+n=Xzr28X$~H76oeC|hjExwa+iYX2YF|z zQBK`0F=3&Xz|>H|G|UInTlj`Ox2Jk$Oc4T8jEboQBpn5f3DXH2=9IKhFnuq#F=2YI zrj?vfhrrZK!L)mxSx)s-OgX5)1OREBN?WageiexYN=rQPJU^iQBDmk zF+t-3Q+owddml_WUn_Dt3tby9m3+oAg{hbh;Soo{-Gu3V9Ojg?QZRihS2JOHGSo^= z@K%Azu3%a=*DR;AClyRX%$P2$z#g^P3FQ8+gP~(3>#1ahOxmTEXz;*75N+=JS=TAv%br5bc_-A);}8r6HOinqV|U6ERi68=^-5$sp9JpK_rt zph-_A)V_GcQ80=a=)f3=Q5ZNTd-@rL8fwWv4V8g$3Ipw!qE!a!at3-)zF=U05=Di9 zH5oj|0Rw9>SHKx~7perC9%U>2+LpuF_NG3GXzH?-Mus^XdowE5Kx0K?lb5qJ+X8k=8f z3-?*J&*p1#PUAHTtmxxOAihUIZ^ERrom>XttldCyCa>XFP?gW zy=hogh~p^b0}^)0(+_8;B{L06EnQXCR4~&QxRoFD=L5w5#1)ReBk<2;`1irv{IGE4 zKPDF5rnOswg~iddFrTw9EhoYs3-1mOfCZ-;OCM7p=0tn3oyLRw?Dy-Vj<$lG2M59C zb9f3Kn>nUSD|ldLoiikUo=rT_MPT}LI% zM|l^jR$)R`KELE=0?t7aQcxK@0IT)f?ULW1!QU8FAChBYF7ZSApgq%#h;d;RzLpq zPCJueKBl<=VR#{e6$%MQbcTne*m_CdH&pOZT1XJ~vW5guWS2{|mqQ1*y+nZnx0_sO zW-;+#%MFDS%`9$>E4JMCaV4j?LguiXOBI;$^u|pf{i3ajB^%ADf~6>Er@io{XgpX! zuoMC9)FGC@XFu$-2-(dYLdJ8Mz^bP&A161T<-5S%oGn|B(wpE$gl2ZCut@HC?3{8K~l&@XLF{MKRA zUX08~Z6MfnU(Y}Og#)iO{t;}HWUo9pr7ZbJnDJlH z_(d2H&bbWXZ3dmPi{DWsWxWs-TPNhY`H z66c1prq~zyX)<9w3S@_(FC9f(upV0zGqrF*jbw88XHE^-WN?z8W+9U=5TE_aByjt_ zeJvNr${vb+uk+s@A0K5B!%AAaqxh#tWyv&7KN{iBz8fjP%j`c`e2>;gpO1=k^Hic{ z-Cy7m>5c{d;}Af&T6`xp5j-RLlKR+E(e>b4HVQ!mut^xx@;||S?IDRQ7fhQ zy>Fks{g{t|QvLaF7`6*s-`zHFeQ%T$eU}oCA8TR~)rrQMsE+-riE4#TRHppAH3EN` z@whzw#k9SggOUVIIiKQ=T`2e)f z`iqA+OVnR1PU6~+KyM72i|G4{_o6LO`-_9j1dj@WtiO1W6Qus)VnLAli_t_79xnQe zp^TvDFNT;2ek%yF{^Ds)kot?Qk~u=^FJdbbeSh&ognQm!+!$%%_Y+1&nP}sUfm$y+MECe3UYMs?gZkrt;7r^BCip0F7uqAjHt!vZUPHR9L2R?- z{fbMFtsG%uqCdSg>>BnB8k{(mim;uGYB3gQqqXkXnGAa{dHQ1>YOlNufuG?oewou- zY^H}#wkY&Q)+e)M^llzUR>|l=A{xCEm0oYqYf*^*a!M-OW_Km(i!o!dbo^GYd(IPU z7Iq1eD(&%p3l{D$SBZ~HDOG-Zt6Jr252{rnU}{yKMC9izdBI&8oYt8a0 z#=_Meq*ca3s-E6lmEIgqFV9R5pKev~J;i2D7`>edD!nv4y?a!8ojJYsW_p7)dgu0& z+c0{sY51@)oW}1N#755VY1jk!{jq_G-{CrXY~+B^Yog)9HgOugmsEN$a(d60>5bIr zEz{_I-d*JvTgYkjdMWhSc)4UIHbx`1;zyO)35hDPY(23GDzS=&X)S!VI)mo6hHb;1 z662ok67(VdYAomyG!%btY4ZdE@vPv}5L_O|W3wyaD8U zxi{c{N6sb8W2}P6aI-ybW)8x^MtUl*D_6AhHj`rBqnD4kZ|1XHfGK9}T5SHo4bfoO z!DvM07eC2q1(|6TYP33Qw8m((3`V#C0eyb)J)G7Dx0-OhqtQB4Q+2rZ=@AMpgO87A zw8V5xx|!B`jn;|-s(ufDpz>(f>$ef3^%|36@rNYE0T3)7(_hHVv9h^_omvguv>G1P zYRJ&nuo+Qw{;34`$w#-C*#1x>bV>8OCK{n+J)wz2h!P!LS4A^JvNPphIqmH>ku

    C?ry608$6&AqxC0v zhWf7FY~nFgqt#5K)m5W~L|x-?J$-qon6hf}SHNTbdWlSqW*>#IJ!h`uR;`k?tc$~# zudgwmuCJsIRlmeL9zsL_aNxd5_@aHkC&NfwpyX~q5u~nWXb%$N>q2w1aW_ovO^hRp=%4Ch6A@-a@ zOy-Rr%P&HK+n8V2N3r}OY>Ad%?5JmAp`}*kIV~TktW}BeD~*N6)hb1Pk!7aWR-^aS zDODsFMyRR{)6;9I(i8c`9cFql8od+^-{`KYh-38hPSS^o$W)3&e(~8&CVsnU^eSld zZqn#sM?{U^xhg%8U*wtTC1~`PX^vM}@t;DDfz{|=eq>m`U3W)!rzDZtMMZ84E()` zKZ^NI_m}K@(1}H{TWE4S(KRG2(S zI6hoO3!S2{JL&Lk@~@fL2CNKu<&7;}URAlg7CB7v3WdBTBUxbbN*!XB*DeeYKwj%_ zG|KDj>#DrO6VE75TnBmWj)e>-g*VE&GH3bvSkk`OkMtRM9Rh5@`qP_COb&%JXCKmE~yP02k4VzH5y#5?ry1c@; zeO124Brj%PD}=mu4K&NEDkdZ$ucl!}c@1Bo%1b;EtUPfYVojsGS}j-QC7$?9dEz?At7@c$yqpMX ze&luKA;?QNKgrrhyw!w^C>?J#Wl;P0%*Zn2l^Gn9S|{sqY9yC+(hJQ|P!st)#P;+u zbT9Evwp~u^Zk)Je&n`eJmjYQ zE2F*ae}C!nQ{sO|z37l%kbhpP9wp*`KeODT&|#tYUqg`_&o4GFRpln07^OUM9pv_0 zBMZ5G38(cVH_y1T{qv3y0m-Yw-6nal{NiOL{`WD<>sL&rQ2eiMl-InMRe6ag+AB|7 z2YHQ&u#nf=a9Tg|8unn>^7=C^AbC~B`~82|rfd1@t+21%ioABEnB}#P=NC<@8Ra$n zB~@PHiD2c4>maYY8(PR~T4TTRYB3h_qW#Yu100m|+i8`4w6aP+gMCQs3#a=M#w&VN zrJl(XhIcgEhy@run$uRuZ_)dReA#<3j%;}{q8Y|B`2zi2@V^aMF%l%-ir_(0Z?veB zUf-;WeZl3|5C4s=g4s+YP4*?a2Zkqh8W@p@zH7zAoP_X@Q#R@rWG8xhhshhU=i~fD zcLF|@xr2TCS1OU$;WMia{?;0e9&Zo~B>MrLTUSDos_tlQqKHT_fRA^xGQ*Nx!jg zTu1%R4ffUV?_z%X$)+a#{_LyYXK#moQ%S!=8(8VLJpOwbdp?@=`}s+0|Lr9(?!-WV zum8RXRGNN&U##j^yJ1v=UcZb>U;QpsX{!2tP9v<{H4-jGzso_8^n3qn*HOQ#Dp~0F zCGHz5?=b22Ghh8S!&3VVTQF8CPrKDZzXOk${Wk{j*{;Or7+rjhmg{3rO44tPEbDh8Y5J}Gtg2t_hEWZA{W30n_1jjZsp@ybB9*Xq*GQP@HwN)J+9y7D z0724k&Wh`zU-q^076<5E7}rWe`}>}d-JZr6`eyH&<#?-P*39u%$gG;<4Ykdg4SlLR zD*P~)Tf>WZnyE|!a_EbuHzXy9Z@_6CNp(I0T^Pf;`D(g|F$4z&5 zn}6BEIei*~72Kw}>)Pk8Kt?vD(Aq0+T&Swwc++G8p+ao7+;BAdj+}dfGH+qQKhc176TF zeRRYgmFD=p=qu~^y=pbbSQ!H$zW&_;s5Jj>vq05@cEhLxy?-+lak<4>!E zwYx^brNr-cAV~hbeCa>;?|u&cRXAgg{bJ+{cnD9kC3i7CH1;#zxpcZ-F}U1=+qnq8 zZ-`IKdRj!{k$C#_VfzvLf3f!aXZ3!6dLu8s0>yda8pOk>j*v52liHR?JzzyI4S zuqA}4Ui~TEy6M2`f|Hv8Jy|%z!|YWZyB& zF_aR1WjrOY_%Zh{Sb-^ieDVUfj3;k1#Si+-kFT)ovKopw}^k!-!x|Gn$7SA2eHM%`0=VN;9xNp{oqFJ<2LZ|~^vHODEiJ4c) z=^9Dz3ddtr0!F$p-q#Rxk`U&xdOL>b9YmTppN)KEj^l6qr}4cW9>f%=VZR5*P)wP= zMB$yrPimtYr+cr{GmFwPA?O2gvYQ0WKHX$|f`rY!+{Eh2S}1vLTezt^GSMzcV-z0x zWp(E~+@$b8YuhFINDuJl{Hi=;gU)eCNvKFGUbI+=rb;VsQs_2LxrQs-7{@LqKU!!ZojBc;oqn;_gd<31F z;!7spb`#@&H7(*x(U0c%5`q3@l+wS9(Dg6F<&D_mk>X2)u7COY3G4VW7y2RRob{Yl ze3=YXT6}pgUkwA=4PzM4#}~$>Z+v-7rK!f3K^kH0u8}Z{FA?ZpYMFsD{x<^ziG{|C z{!x5k>&>GL`>(*D#ziJm7)VuDYa_6X{lizs4Q6opjjpR?kLxRva`Vts@D%OimISXm zC1hC*JyNpVsRmEcBz1Im!-q_}-D8aD*(-amcwJSfQQi(}B13ah^r`#$bYAU2bot%& z_$D-4Sw(y0Tb{utG_05h#du0vz(CDZK^1XO1c8Hkt-2XhqyU9?S+ri|E;&?yqFr%V zpOORWAOPK?1GHBFdU7ELq-AVa@*=rO#Mre4t5CK_4_DK*0LR-;(#w3NAV1=5E|f2B zH2GVkZ+~wSIxQPwAP@QNY8L)Bu-NQxrS!jhV9!W%d%p8aYk&LrEspUf45|3$Yg>Ry z^S5q!s=sMBjBcU#H^!x}zin4(s{U4-s}k1k8VQ%uo)>{2`P=*W02ptMuETiy)w90( zttfKc%e74U&GL<>DGj0DW2E1GAr|_5wmkYB>+;oa6F>UB_j#`04j41>)$ahH()2qb zM^%G%!>9(mei@g(`W>v&RP|d`Bdpyu5-vr*!$6Sq`|14asNV)>eD(X?GA_INVJ7`f zW%|7cZL0HS?IWPybkgtX$`<;aWF9|zb}61s?DXs#_{j`qvu3mDQpl;=V&ZJxVw}p4 z&t|%2_jJwYz)w|oF2Q5!^jRwbIRPUmzUuB6p;z~#GgWnKH;h`b(YYNYnfv90TB41YE$*s4d$k5@><@0W*eKT5!;pab5sQ=Lf>2s6xGhd$c55= zj$sw;l}~t-_Om65ab?tHplEYi-l#vso}DG;XtQqjNMZ8*KDcUq#c;95jL@1MQK0Ps zO#`$qS8^{nKTm`9h=68Sp)Ei$4y`_eHd}=@i9=&rM(fU??W$xJ*&+dr9y3DQC!m=c z_)!AZFdeL^0@j;z%F)0FHXd`e*w!UE`8(wES07j5UOf~ zwYx^brNn<12(tM9WO+jY>oEnU-v+X;ek)Gmva4Usq~F_p^(!@oena4&^64N8{SG{9 z&fiMuFFiSv>o-Cd@OS#@FWozlV;q1X5nuf#0hOlTC#I_U)ovKopw}z8rqtKY*aO;x{%8e#3O zk#H&cJpzKH-y3KDBmLq<1?*E1`q&Sozu1)Kkv> zkT<8wUQd{=AV92RX=q%#3Ixw$#DTT@bsPoTS+#rR@9_aK>NjU?;**hjBDyglzws^G z>Bb1;Aj#>TY=;0ke@_B53Sf(f9x=g6wo?N6+VU=`GU$98>^_z3zRus=?q}dc<$w5F zjDO(`5KRV_f<<8{C|Vf`iV{OX8CVJyA+MgsO&>d4Xq|X02dlDCn19woLOy(IxS;?z zX|^zbTW&vOpt{)~2LO@_DD?KqFHBV3zORqOj{k-_CuYQ77aRXgkNzu;}CjESJ3-m*s2s!hzg?`m7C8U79jcoahetoiZL&rtw0>gTUaRX@g?*Fit!kpHdU z_{x8Vi?bJAQIY>#*7R%s@j_?FKb_kB^CcGYxAC5U(LXGQZb<%N^1R7h{^6=UbNMIu zk^k5E9N<8VpjgX)DF7PfKlM>n{>GcvUjBz5f4zTfIT^S=%sJ_+k1b<4yZJ$iK0aUr ziJCr^w}3vv$sa~uw9rSZ&E@k4?<8w~IQp@*KQt5oi=ObOk2e6&sE<<v6%2(bqUgPo(_Z}5%5!RUGU6JG+Me;uXr-v^;Mjm$#ukMf`c) zkG#Krl>;1zAqQ*wui_)`sTr!gjW@52y!H0J=BvQ%{lyc$@{btL*;{-?k^jd`{?yUn z9se(|ivX8@=6MVGuiok_|7YhzT^M?zuC_AtM3=5FPH4={^<3SjL($l&m+Dwp3naw zaQ%Hr-|jKxSM~{99>@Mt^!J|0f2Kx5e=(4-{K4-Q`t$Db)!)EU+V9?vTF0v@h1T)v z3#+zn^{j>av=DIL9oEeFU^l6b1jsbYlAzE@zMkgRR z8#~%M@%;hG{kxjP56vVN4oa@s)HjgFUq0&1*-UfjeI(Cnn$6A{mgwmf#y`tcKNgQP zi=hm17wcUgm8a$NPq1XQ!YC@HvTA@HeIW`Tv#Nk`3-%7e1CD|QC`s3nrXVZF*PAl? zV&8^Opg5ZPwKG~T69Cp}!c;oVsy7m4s*WRx)uRb^_YUO-N$ViJs6ab<*okD;I~@4H ztb2htf+N0z5NBf=TtmEPw(`-K$#5=?dg7xh>YmdC>h_L;I|YJgCkxb#@F9qX3?r5> ziJMczOwfC5k^hUCG$rXifPn zYfo03weW|R7hCv4DgBME8QdSt{f+f+S^L90u|&5DMl`J3lMX)lZ1b_IKNxRb8-LKp zr*H82DO!I*K0#|wb|EAxpJ{{7WQVgZAHCc^h`M}<^a&x?EHX>gU0SdZeL#-C2tQ$K zO&Vt<^K}}TwaA)jt%)bN`HH~>pvm!BpF zz_tz4+YWQOu!bc)tjHc>!?UL56Ff3@Yow5qDd$`oRyYIVB5kO0v{RiI(<#Vrlc=tJ- zf(Z4Yqv?ewS^=p95WT+ApdbCY{U_sjnjCohJCwdcWYXL>f~C~+O1z0;Lwj0(!AAYJ z8IY*l?vzEmv3+I{Z%XOE9ej|-8*~5d=dIT9rmFz>EXFLX<4ql({@bQeYP>Ptyf*PB z(D;6u-t;lad(Hja(B09Fx3Du-I{fo#fq5wvhMN zpIX>=GRE&xmGQe|-T0j(pH1iT#@a)}_}$Nb^2@JTa<*4qk1+>p`@RBzMtPqYp~~BM z^V-N;A8)?-(HL*m{ET?h7maI#l+&f#bKQeN&=fYtuhTskZR;MVEjG9gPU$6=<4{kZ&NcdXmyiC6t(<-yeg*z1IMmapbB+FS7(2uhDE?{NIsIYy74-Yy zP*0!Evzl`GWIjfsFJ0tsf?v|;llUcdKB1FGRj8BBvm&9(%xGux-9)V0-8WR_`jc{g z(dlnv6EH*VYXZiT&_SrEC{{Nht=j7&S*RBF+84h%dyT`XwY_%49nD_f4bWaY&EeeL zieDkHS~%1TjLtQCO$Fh=?RDC8p%45j`oN){d>@=^`o2^?dm2~7=_lb=(C>yrJ$*XY z=$F$U`eEBIQhs~<3i{1(sHaco8vSzm!-v@Rj_5DJub}@l4)yfuT%%u3f2bjh_gBpy zzBBm)otMWS5})Ugo8g!I;dcBgc*!5=+~^O8XQlhYe=xvQmOoSkO!9~CAr75C9Korz zKkOm7sqyN^1=F=grd>8DUF^!+G) zb^0EOQy+czKzkiJ7_>K2Zwt6bgt3gz?wIse9)fz)9+B;KGf}^whwjN7~6+X zI@jnADj)rY8-)DvtH>XRdi-N?uF>c1XTbRX{)p563crH>Cpgs8r*n-yZ$AU3pIN}^ z_s6fG-vftw`gE?*=j~^}^rs2@!!-PTO!({xx3nuMsByqH~I;wPPwT#-lLz8yD4kP0-A(!A9zl%t2e$I=hT0$4sN|CuCzTyf zyRC#KsQ-gsT|BLWQ=fRs`#-p&wV$*Jvt>Lr^?#-=V+s!)ieIkq&=ef%6keCkwf0ly z3BDFjOYQ&6d7YCVk6%H41P=A&>74Yrj+cr zrDVThkmx*=p5F|_cu-mG-Fq{*eiquB2pK|o?CePy% z8H`_2c^~{L;vkjNc{%f&2e2llEPYRTpX+-Fes%hG;?!E--EgP;`hIX7=gx^=AutCH z6$VLQbpB8E9jHE3e=MiIPp{?h_v2T<--<&$d^#_WzD4{E74etFTZJC!TZz9~f4hyFTt{`lh+bK;m!CyIf!+@hb#22!{%Tq;EPekHA7^ zagxP(+(Ev@uR@OmM(5>pknUI{W9=a7c(v#4$S}-@Ni$FXhLlMvinsIGu@@s_kOE?> z&z1P3rqp)3L;F-?v(IFC!5v3wS_RW#(*4p6m=1acrSaBrjb!zr=c#PWqqzFjz{k;@k*RW8 zy}j57BzPINJD_=+RHrLzOHuqTWbi1M85vFgMbUo|s4dPNeCQ1DV3G}Zk}~9OcTt6& zy7jZ}#8q4o{ng9eJ`&It-~V}os5-Ubk*O-oPz)PQzIj8DstPbOY4 z0TSd++I69@V%F{0-D0uR9h8I#rke;fX4k@;o#MARZQbx+^R1_vTqwLDt2rKh7P;w)Aezw)9TI4RuHF zo6-4cN;6SX^Fk?SO9^(+YiOH&3E1Su2QW~b=gmxY=cPgLt}2qJH+n32w8~EEv@5f* zESZz_I=;x`SyBk`M#-*H4F z168b=^$RAL9obITyE8~RCu{u$3myo4V9%+P_hqkbeM0nTSA0}{_h{R?_&f8vx5kw= z{7M^sr7f52d{7OGuN#$2k`IVu#lE$y3@hc;71#`btDxF^$2Rs=ZPX?}liwTl@ z9x+T=HCAX;@P;|vze(=7bj|5nM?dn@dB0Eqz?>>+29wjUcFcF)J6zlB1>>|#pEReS zn|yX3hiJDYFzvP7ExCF^d9hr1uAU+JJ)>Mbqj9xee$URXp7#8naju?Heov>XXL5ee zey*OW`8|iadZy*~9O>$rp5JraXjf0tRYl;DT(Q}b%T4$w9JC7iiy&g2VSDrtJ_F0} z(C(o+JXpd4G19xwv}ByXJ>H#xD{_Q@QqWEZ-f2PH%4Nn7hTV)@lfz*a5%`V5FThTQ z_8ia`*6Fw$AT}9Va6s;pA!$bjegSJHgXLoHLE(%RmPxJ+v<_`_k)uWhq{iJsMk6jt z`Hm3Vy12;1d`DGWt0t~h6W6NaS`BfnhPW0gxqF0@vZ_d=ESeuLlH8E1D>hs%&S8q` z73KQ?(8or}yTk){Dc(#0Y{kaNuZsupg1Y$u@Ea@1v%~|bz7IeUv8nPX@j$xo1CUT` zx*R7Sz>9_EDj>SpY`HOiU@k4r^LfV2uDWvQN51p~<99AemY(DWEMa#zx0_vaZK5Cf zFnE{2)wo7 zN`XN*z<&x1!T~l@U=R*)lLCX7$q_#_gFw1wGF)gMTu+f%aC=||i~Xk);S{v%t+p#y zGQM`Pn4%)Sb`jxZ+pN4D&(N{foW;Ky*iq%|%wN1t*L_$$F(Dj(5%`Oe+}%PFU9n*< zM~K6=F1Aj-qehbJ{-w5oTi6D|(GK^SB-f(_5~lnl_ml|io3cjg^mXQNTSI~hx2i6Y ziP1YiOX(cH41A|QGiyq&%2LkG5b~v%Qw?cXEzZ~H)c!}yYkKZMLoyDz2810WxtbbCJ?CPl}|qZ?2uygRrpxHt~Hi@(p4=XL~YR z-XXTQlIPT-7R>ms?I$oD8#f&s4V&?c*Od~IpHc&+07jtk6tbWQ{6&$%{lq6&6I+mm zrjO!N1Bb9hP>DgyXJ;)Rj4hWK^Nv=`R ziLUW6__O0rf{H`rr{9v{956lA^yA!r(wZok=kOTGJzbb7j6c<%)hBkkP^Q&yl=fhi z4`tYvR*%hq%C>qqF15h^tlnu$xFW0`v+>o1!Ass9iJi_0gLgK+m{@qVQV&m^KLa-S z#oNj-_!qD_j>+Kt*l)6EU-6|)wm)}QW+F^)7vSAtun(cP*7p1f5w1zm_WVihT$5t( z)7dr2j-NQ!Bnj4a%VX3EQ{FQP@fv#E^Cp>REMf(kP9(b2Bs%jG+Tj{vF}sGGid{oe z6>AsQkX5m3akllb5^qiukXKQ&n~;cWJ;b#h;#yC%r>uEXniGVh-U#lKQsw+)Vhp{~vx2XBYmDN14kj*(wVLQD`#qQ`)&wV)9cuquIz$iF2jE<&jCS2$8CIhwu-} ze2R+{owPVOSscPTq#Fi-{W6uRtl-2|{Glx%XYYoXN}`EnnT9hz7Ef;tlg}JHZAzFJ z{s)A*Ji$vqtnBz@g|Cx8d_Bs6ua`BxuT}Y8nGy&-Z4Y^47MQ^nkW$~`)lNKyQBcvk z7OpWNh$>O8F|f`t_=?{cifhR{-i(2%j!AWmNyE=b*O+wtATu39nQ1yeL78az-<(11 zhU-n%EEdgNiZfpNO-cvs`ERmz#S`3tm6*APKV3jSp5R9O;ud~!7k=cci5I+yo&mf+ zQuvzeO>}o>j*#x64oO_(xcu(z@Bo5LuNZkLe;|!ij|b2nU=NH$p>%N#Jpy)Z9M=66S@ATDwYdIgER2VhLU&>pgW0hZd%AWTyx!y6Jki-;r1!}2w`39ET7W5kf( zQDJt~HH&`aF08P7E^(*N-DEt+uKf>pe*zw5k^F(<2@;4LPC$;R9Kj731tFXUVqk_G z%!C9I&Tt2pBM4%EM1qPWCcuot2#5!spv$`8jqA#>D&bfTkwa7ncyNgNhH#4*5SZVm zs{1|W&14w9?*50U`~fZfOd z#iB3WvM&dV%u;&A<>r>re8qmzH2j1;0Di49W69^~mGh{haFt1FC z9_CCL2Jy$%yebdTMg71=Q*)F8U{yOOn{8_S08s9qp!NIc9-5v&ZKJrhp{(g4zhDSr za6-k0BOfY02C7|C^W2V>J5N@x;$xxWq2|dF4Z^++M$_-L2GsN*=YLbvo9){_t?pO- z`#S3W9h~iBQukl5epnNy>bKeXEb1VT!lv^r&5cwG7jq<5XOK{tP|cZEsI_YB1-rC& z<$S!~eQE*CWC1)0C-qiWWJF?)9R(v6XYZQlkElUngz{q^Gi5)va#fzKgi?>PyB>>D zwur}7Y+97?Ww*8=XeOp2(0_OhqMX|I4BztH4+@nG`6#tLfyZmPXiVo*LY)XbP28;6 zKy15WC_x;hNO3e3>V=2w9bBv!vZ@}>a;2~yAL&dHdi>+%Jb;DRUqy*(2kXum)elzK z^W4ApY2<$uZ>#zrla_6^7$H?MBb+qrh0&rZL^5VzAHfU4#K{ph49{l=;uDR1!w33` zfjCTRSF)>*r#L&ih%T42ZQ#Z1jHkwtAtBuR(A~B;QT(hZs}tM&$?dYumM!z_$b&%Q z_;&j?o^Z=2xmM@8MJ#%G^Ee)obQTZUA%o{aEAb)1cwVMIFU2jMAHfC4E9tVWC{ySxM{OzxS;uX=yaT?TEX5MbSb&8 z+6@L8_X7U@jAac??MkAl>Q1uUN}?C@E!;#lxQWy!@D!;};4HGiS)@LJzes&jA5U)4 zpWLE9vEWIB{v<+w(g05y>Q5T#Pj1DNM*5RR`jf_Z(nNpKM1Rs0Pa^dvk@}O{>>eQzkA+#hlCVaH$s(ATb%ArlFhR(*4oot$`nDfNSgb+NKmWR;36x+s4aS=2Xp zi!RDDl;wUplKRQlOVkg_<%w`*buNz#@*c(+=K0c*NRwUs346n=pP7Si?)3i|4i>XF zPuOb@`>?QgEwQlNqXWOtcE$6rYmhaSL_gx*sRKenUC0`PP#Z(VdaQYG`5hUbGMNqu0rY+kyi0BSETc!8J=FPt^JK+*&+uWhcAFDM8GQB*x*3L3W=F!aZ?~aOMj|(jaaq7$C)R)Io z_5?M1f|@;%vUAjIOa}z&NtFGdn*E@fJ(;pG%@GxuqGmrt*;Cc*scQDaluZi_Ty4xM z1ny~+JzdS7u4d1m>^wC)PtDG!>_^n>N7U?@XnTR$_5$Q`+aJd{dxb=QCQ3;(-HT@> z(bWBTOx>?OrhD}<@dF+cKd6uCUVTgqg2ya&Byze}9}~ym@p4>LXu4M)6APgo^H<_3 zno`0pMLb7OmPD_T&)+gUr+fAJ+qidlUig473!>?&Y+6cO@&fUe!?PfouF89q=U&LV zNRx4CZp8tOLYe8VclfIOXEJ1+!@b3De81SbW;(uK$~)iL2ur)V?RlX3UC+VH3Zpbp z&OrLcI{Ri|(FU`tkE28EE|&jzd{%!<)N;Bj>9Hql?SnKRi%F;B zWhNeE*?`K+=E<2R|H+aOJGE(lvoK;#2v_Yt?-g|Mx@N(7Fsq(xRs=54l~_XZgr##) zwkVh`G5EoR!b*|{dokhe&B60~`MIL0zZI$e6d|1%5(-YSdV@wlLgA$ z%Fi{*scXhrYczv+Q9yUFP z8xV&{s#W=>$3=bNIPy7l;h1OCv2sQ&myS6PYsWmxmW#)nht*@w>k4DuYBX6C%)G%d zQ?1Iii2;pyjbD9R$K&_M7}2U~{395z)Tmcc0H#xD6h<@##ntX6k413vxe0=VK$yk| zZQFYqFY?+Y1tAwx-$ zFMxl|^Ve*=kgfbhzJQ_cv!sc&Z`WhFN=@;&%KVk*Z@=HgeG8I&Kb|Q>^VfZRE9b9R zj~7Wa7}IpvT_TC*VSx$$P?1Dq=s3Et=S31#$NHuxY`#dMqFCnS*}RXU0R zbv}&)IaaEy=Wz9lbZkqBVwr7o^$WK-`^DfII|2WQ{aT1bL7Cv!@8s|W+Mu;}GdDZK~uLRBg>O;gg$nlgu&M=>>;AywBkpjM?|#Nc=Fq>VJU; zcn7|-!HAYIu7Uql+&|Ddu+NIvHb=ZS z|8)A?i+SB0ZBHAQfT@R#OTg*wM=Bj{w`xnkII?-SGH)eZWHcQo!wvCUMuC9ci4J!< z9FWPe$|Dc3IrSe*9kYCIJ@WDbM5u1T@mN1}ZS&^3ws|C_D zkVnO{dMS|x=1T$EFm)_7M{{}Xd8;mSOCi0YS}?=^VQ_gsQ-{Lt+LnlT7}PB>B7{?o zC=+%}4x7!%@PZ&(k6j>1(X*V1H^Y`r<~SK-a-0k@>ry6sAN(c<${@2oWy0;jnecfq zxP>w!WF{Lzc(Vaz!r8%Z!qdTT-b$IU-8d6Y4$f>$nQ(D%Cj1+m+0@|~90>I*lNYn>_-6gyUcJ~S4 zO&D?~li-HD32+?bU>xM~IAG6$a}ojq*;9adJ+Zrd#H)Ll*HhoY2f>SZxV(cTa!C#X zjOHW&+lz||MnV)Xl+hE!vyLWe6&*neuPeAHzdU*Y>TR%e2ONBgoV$aiJ7A|sWs!3r zOZk*j&lLiSCV_NSRw2)_X6{PdGuP1slM>9S>TDAsqf}4omjW9EIwk0Z$LR$Y;hyKH zo`jXI%0Mc~?V8d<9ie=&Tr= zmMD6SV+IQ_ms>=&-B!F57a`U-RM5#&$O&Th=yFrjojhR##C8Fpb(f1*@SJYhS)P&9 zS;a@_Ejh1*_P%e{1wT_o**;Z&55_3fV!GH11{I#nXBuHMj^Nk*%|xU337;+nMH$%+SP|qBh2bzLI*R_m02>rd7TBQZE)KUf9R7?f zaxlUFoIH{oO!bfplSJe~e2Uyg5OY?{B$17GFqKS(36>On8)e_FX5X%6-$B{U)a+(z zc5}*Zp=P&Gvs+Sjl$sr-X1Aj3JJswv)$G4ecC?xut!B5T>^5q48#Vhb%8pU9W7O=s zDf=EZ`yMsBEoHY;v)ifJ_fmFyHM_l<-GQ=U`U#p~-Y00%k+NZ!ifkCBBD*tX!!i}w zuuMgESM=px5wnzBhJaPqV7PO#tPXbp&N|LNLW`N{x`~#YO+5pPD6hW5Rm)Ml6+s~R zM=G#vnvAb0!74+Xc4YMD7|QtygBOdayiYOB-%DIWR#_U%Ku>ZRh34Iv=Dr(lgECqU zLu4KTlfpSPm?HD0!B9L~Q8Uf`P#OHU4)--j+pBiO=GhUOmmYuG&NkWi6o1z;%{@N5 zN_^h7G&0Wc$eup;6d7p0*%7jY7(EVIqR2a61MMLgXfUxv`25U7hkKXu(`#&?QLw$k zIF(}KEDh`p#?4j^WJ!_aW1fu|wOQGLV|k3`8O~1(F8*@L9a6JkH-#2|`7p})|D*WJ z*gL78{Ttu^FNnXq`Bn5yp!myrimCHd`+Co9+&NIL-w)B(FaIy`mvTLNNK+Nz0w5%V z9Y>Q;KqpO}r45b9$4Dn8&vH!~0jm^P>F$e{upB)IaEma<6gFb5VnrwnM3C8iA}aOy zo{zrpOo={zO`2;02Kxj|&%$0DOifOngT}%Rdc6>J zz=f)U3u{I@X8MtOq0y`8a8ZCJys0bPN7)P#cLP6lf#B>D2f;ZL zi8$aaz_q*064A$c-ezf#Vx3@_Q5HVI@wIgm03$;?4A zb1-ENk(one=1|I{^%<%_mdqSRnZsq~aG5!RGDpfxTC$<4j*`-SO`2=`Hrl*&AlZEq z_rEyYW3nCYIXP+W*@q$LEhR62uF*+^w8i+=dQyQt!(boT}5h}!tgOpm{sS3li#A7<9*{n>|EZ(ynA z0LXtpInsjST^{;{t0VM=W$r^@MJSUqcK4_QcGoCs!vTP9!1ZvN>!EGb4u*b)J_iZ4 zvc?{NHV=ETFiUKK>aW2!2T&H)4_(O{aF2k+sTeZJ_|6`Bd=!Adf=vc83$Brb+Q3yF zzXyuxVY_>2AqZl3ujRqv&fi8F5z(7)3Ug#LF>dlqis!+Hr)0c({x;DvBAF+BgHo$G zwJaY90j_IARF3%GojwugSQVn~8w@IOgH(yogK&+Xg?6O4dk)(rm54fCvHPgRwD{8w zOP?zaH><=up!eoXScH0N@#;b!CU-v0>M*_SZ^j7T>#0Nd#dazCUl8gLRB-xF(6}q#S4v8@#g`6uuWloBK`wC zC8B+t6u(LvATl#unZs~_Aj!L&zTzgni8(BZ@(xG2+L+wY!EzKzPeI z`EaS|u3N-+l_aS9PYH%1fx8IeDvN zy4%NAv&^4~DF!iU*XM{qJz>fHnVuSrI`2zj(-tjD&VUOt3ob~sT2QKrdFz)*0HMKr zMCpE;A0i1GHaV;FK8#H}tRFZkG;(3{3GS=xJuwXD*%&?WI{uvA_7_L-7VJJbc~e^a zHBjrA!;Rf1$Mc#4Z5GZu;PLzo?LT39T_OASA=tOrgOctWl26~O_qA{5z`oV@px7MP zgA(?v7|@`J!?;ySI3Ek(d@N8drL%Qwaz4@suJ{4a%1`(&oJFdAwComjJbwyU3{peL zGi_GE$i^l&PuMc?6s|!Y*%;x7Q1^s6MRpdlEYT; zd3eovpOI^G{|;4l*5MwF>DCi8-Qtnk$Dmv?s3g;LOAK1Om~I_WRyFyYG~`(Z_Z_t9 zG|%!kXselL9jP+Of<}Q!#2TfErKMHy-`8UQlh7ysm$_AI8mq3w%zMe!YBxZ+zr!0E zYw->1i#_#J{u_? zL5QM=T$7@F_Pk-^kHa;2E%v-cV9#5my60_#7{7L5H~8*%3nm`8v=IrOYIpub=t~{; zYWKUTG6&NKfBW4aanzkZ|Mhs_7Z;*81I@QyIaH;)Y5&(^t+yX`kTfw&jzD@_6gpV% zR9#c(7-1XD(|xJVxQ6s$1_$0vEMAWBN2S3^!wf>s++INXx_qLjk{ zm+IrX2u+M2pGkz$A)j3Tw2lbRo6-uYH0&?aH=N1+W{@X2kSExEBA3{px>RemguSim z5*rDYTQolo-WIzosU9p{C_XH;A&D1ooj@lA40c(fWU2^k6n%xwXPc!TArqEHY-e|0 zb+}JEuxGOPKk(+9f;Z<{n)`P+bk0EC+2O1ai)^Z%v&Ub}Kg~MM(e`&=A5LH$*PnD; zD-X*Vb&<`*wxPjrh5Qxqu<0%l7^>9n!y0c()#bKJ2TUv~mQMZnmzUh^!(0>w0p?1S z%+)u-$$QelTRs~^z(Y@^5Dz7Swcv54t>~`4#9A{rySNZt1J5wGf#N0ZFsVZ!@Sx z^4f~52-*mYtVZds$%}-Q3J!6faJUApgljPhuEiM0#N}kA{;Ad9_btSlejHF>P2p#Z zs+Kto(<%&J$Z6~Wmdpu5>>?Rc#am&BotB2!c{ao@nmE%De@){|pB=#0v%dNeXU>1h zhcg{kL$HSQFk*s$Q%02hr0O_w;x|4Vd42yP8=6?o4;x#HyWgcE-|pC!EQDaPD?cvTnV$t!csP-x0J8Bs2ftkW3dmlf{opoNve*!Ab0&*T1k-ZG zCIT2mamqL(eB%SKQJl_dfi-|>k9$t879ijwy_Pfo2fs&rLH%l2MC=i-UU&uI5BQWI*QF0NVkqrM&+%NST|{Dqn)L^1}J;=e1{N6Dlht_D2(+->4X>A4D&1q%jZl?|L zKD}vK1v#{+f*i#9^rjUR1FREqn#Nz|6IJl8jF;RfYID8)PT1cBRW%h;!xR~FG8Hi=Q?pTpySNIp zNp))O1Q%Z8IUbfQ&HJ7{o6M1w=srAT-!Df@cE@H$v$n)AgVI!`gPKZvTMmVBKk&?-~o|c}y8E~K?4$hp1 z!zfT()QIxm-`JsIMR`YMZ%}y;`7O^(k8M{~dTgiSmXrz#@Y23_30c#N>>j3$vH(S) zu^cDh9aw<;zH!P-&h+#R=hm0!=+zPJGnePp%A=)q?-JS+MkOdHNx4TLBv*ZTU8iI78c%Bwr;2jiAg9y_s z+-37!7Vc;urA6CuXXU#%+|ghnPdn9C+f>Hw&)~24x~D*=F_62 zi`-(U6lgG&7!(wOhyfv#yXrvjpl&$eMyr@4Gt+lDYHScOVf{;cilYU^K0{giSf#@{ zFZD5+O7vbmmgYXNV=oJWBNGP+RvG1>dLiM*=&zS1C4!Aa0_vBgTzQR-w}akWz@0#c z$~lVbhJcLA0W@MW>}lF7k2sb@Y^CHAk|MZ13G30%4%cI)sKJ3aa?vNsC<>4XZ_~(t zKw@J!98`b}krbVW$$b}i3o)PXyI0w}0Fl7%zSJAB=nc>gFZJcn!Y=3yXByt6jzF(i zjlF?hsG*Ww?F4dC678uYfGUGR3iejIQ!z*oQ!7{SF>or~s!V_5JX5-8%MmPNE{r>?yqM%c9MLdiTT4~)s{b4-8d7hP8?~C%a;e{#`0$N#Bo9csL z4P}|Ui&Mg0)w-QaK(`Ml;%+Ymh*~*y{4YnIp?ZGtNV~R<>m+@Cox!vx4lD2d-M-iy1xPuesObX-Yx5$$fu*F+CR<{%WY(MSV^>L zr;yS26~n2FD8{NZtMqyaw*LC%688LKpabAAoUmB1B}xP35v#+4_VX`+_BepY6$)ff zmrBoCCnUC5iETwdY-I1L^#Q&YE)qV{;biLtuf>&aFYoYLFK(k|WO2bem9|_k8?>>8 zX84phl*`lVAFDhOMyvvw{`Arg*^ms`kZ&LLOO`f8Pw>-s7gc`R zE1UO5Kn#KCxA%fdzZ~yS=sw!zp7tW!E1+a=x)W@lD~q}hMVTn+L%%V;{T-t`eUt3( zxwsL-z%FrB6!>j;p!!y7^^NiljYLKIM|g*Z%R0tLyi0)BR7Z`NxCw+mMB^uw9&yV3 zO9ee5lumT#OOLy%mZj4}^w%rDsr?lNBa&pt`I&wjE-M+Repzb!U9`v1`vPL@(NxdE zGBjOT@&Z?M;RlqMClct-$K_qPGM(;3{mGuCs!T*xOtcDA{!+Dkhuu5WO8gR~yb}ro zQD9X^a)YW^^&SX>KjOT~k5=zcG8@5#pFFSCTIHP8k5s93aQK&N_;bBObBKSky+gC; zn&BO4r>iK}-9OelG=|cC_^d$kSzG_L(EA_qcFwOp<3CP$B1Dyc&#CfH$kRQ_xA}hA zA`rcD&#Ckh^(A^WLkY4!;$%&WfEkVPFaHAJKXO*$7t;d%1UL0cuF?k8r#q|COx{H* z4e3sB!b(|k?W!f~^bzCZ%6WBsoRvWP^86AanDKE&rHANO#8fEtyya@Ga%2J1P(Zcx z(Cdf(>q7)K>Vwa&m7DZ$bimpMmN%uRMSY7mMk-$~A&UA)G^?!d#u)+X8>s)5SJQt5 z%Ehao3i>Zw`Q!?p(%qlr+j*5zYX9}AT5_QB!ex69>fjxUS(T@MhO$7G6stTb@4^-3 z8I4m4WgEYrUQHW)`r|$-K<|$@r9E(>m`El6h4Zpw)bZp7Mn7hj5558JwG4;C#^xsE!V*D(Ug>Rcyg(`u{ z%TUY1v|Gr}NTnW?B(T~g)@fC-YR&PrhnAi4p-;B**&j^rIHffz%e8KX8$w@yJ++RM zN<*OcL--)Z@7|MQJh&Y~|Khwxw(H#eS>K3Oh_~ zfbK*Ys*LYbwG5u``}k}4d}w6_h6+u_;Xy8?H7tC$c)N1=4VvMx#|`nueDwpr94%7D z`Gfba2nIfu;G_M)Km3ni;AzAt$BEC)^>4W<82Ai=U*Qk_a8U5s1V7Fn{Ft|cDPOeT zAN-tmf`&g%Tx)Ls;h^C6a{K+k_j)&&@^iWU{@~w#KNxr#*GjZM_+B3b15ct(ISy8@ z(tgW_!N7Cju{w%lO zAN-#G1OuN#@X`L@dug#ZUXsd=m_O47cAOy!Svb@QVn3oIm)52ZMpPbNl_l_x~;!_(Fm|KG{$E zEk6VUpG)v7{K0oP5)8Z;|Nh|nAFB%Q$A1YEb{!L;B_VN_X>$B8cI^Cs9n$Ap@}!2@ zkCT0M6T9OzzaLPG9xI{C7QI0UJsxJ=k)#Zd!@-=fv6s1chx@1XEgUfDwm_FvV#$kY~m zjH#u^o~>M+B$|Lopi(+Jf4dT&L*E<`_^>iswf)piK0!e#mB7^gya{M@)1%yIP@!uS zsIbk-C!x@mXM5xXmp$Am+w5uFn4WXf?N(ex(>;x^wd8D2z@CktfdbXF4~^NVH1}>V zuBPD}7!IRq`fJgtP&%G3O*{XX=$YxyczE50V?;x(X*~Il|7jZ4WS6mmz z;<^Y3O7UBY-*Ws`;`af5Yw^=(2k>teCzQqUm%eOq>Fz8np44BBG<{fZ6|U*-z3Qj4 zA{=gXKfX7H?EKdF96fziu&METS_cx|}V zkOCp4uaEGAMEE&cPYB<}RU%xDTO&eBUmszGL|EQcAp9IxiEsmMjR+}yeS{|^!pQal z;U&Gvr%g?!bbfnD!zlCj;_)%g2Kh!}o|2e*_7a#|;wr1!2)D+nQo2f2s~|ir5q{c9 zAbbs1>YC?qRk4MjYbc%HhC2F=w6+^5o?U(~K2+3Cd@p|O8A8{<MLlyk!^`f5JZe zn_Qft$&~vbqKD})5yWMPBSviUY!Mrsk>+V!@D7F`7N262eP_s%QM9=f$nEiEdAHfY zKE(x*;nN}Uu&oPw-m$3p9lTUq6Qdv|v9ycNeT7f&j19|!YY-5YH)AMb#<;5k%Ou8+ ze$9+jIz2!_mevBXs5N^661?oH^n91LY4H5hs<#KrFOYHgR*l1bmLqIEr`+_4DXsa(LfQ0*eDfmT`@<3nnpBU&Nr zfHG;_H7|WcEgxSMVtiRY0l~L|D(`%=-%HD{hA$mhjVn%e_ZB`0FBj5FoaXDw3b(s* zBJ8f*NV}^5!K7Nf?H?%b?$E29If<*?Lst9PQMKBYxWk%1&^!(*dG1|m0k->A#S#uO&+r5}j~%ya#|ChDen zMn>m4+#?|ICevmF(Cje;;QnaCu~XNjZ#vNz=l)I_{5zO zmFDgj31#SLyTiWm(oMu*Df0V4jKbdY$cXPooSrj{uOApEdb4wn7%u`>b4a9dx=w`F}hFY($WQ%(z7{E z1iO*e@>)jNZL4uUIKn=Z z69*1bccw3;y?3`)6&iS=ya_MY*5tKV8XjE8LgPN8(8w_e4gX&X?2S)4Dwjsp4WVd+ zjZom&F9jQ7xX|NC82leS$9g>PA*sjLlR~VxcRgvHiZ<&>S5&lIPlCN7ay^OTiU#XR zj8@cHPnxdcCL3?^U8KC726h#t+_5q=uZ|m^j!G`wn!F{H3cg)rHF71N-I{!Xvu+bv zk*?&*t;tt7D-v1tHF# zS+*dz6`kO~D^_+{glgX|oUor`3F+7zfFcImx?DFKOO zW}RhQ)X};}NgT(cwOtJ%#J~Pdm4+v9#}Ht~7LejL_hIZv1`&7U-G&i0CjCyd?ts$y z%_}U$Epr!8dm%cl7|svfE`~M@bH`%wxlhCtCPOr1yo1Vd$#HUgXW=89Btr4H@tYS& zHSAGdtHp9m8~{o>!*TOnTv}_KB*r=e8@aKSQfid<2MLYR^q)ebRMeRJZ62bQXqfzU z&wg*kZ9Ja$C>MW_A}~kki+pMl?9Tnv2g%TC=~>>v6hW14_YS6YLiFl|N6F8Mc6$eh zQ_gnf7;%Cxci1P;yiE8gs3UFuC4>@&p{qWJ$ z>*|L|EaP`68*ALSei*xkbc@gr({2Zk1*ae0q|qYv!{slorys(Tb^QSP(Tvz+zT`p` zpH-#3QjV7j-Y+JC?WYx@oRr8~;8rfK^ zV&6^yO<ps!+hPpUzV=nYvhN>IS@u742UDb9ButSA=u_41fR-G{ z^N5xupf|S7NfRZ0r)Az|?t!rHYf)nb&z+JsiDm8_JY>713d;Dh>Fe0+i9=bjzGhD^ zwOrUc4?$k8TCMYQ$G<^B8~E7_Zm@Uu6H`fkz6X{*w4t!TiBQ<y=c`b656pD|m1LtVXj6qELyKLlG3+Am1EM|qI$h_tM7NC_PI zfEsl`$wkB^D*>F_DGt+Zil_VJ(@viXg_KvTqQTs6X>!5k{87f}*p%y!*?=~=(3*x; z=`#%f<5Ns8jAOJ+8Stq-MlX)!#vHyZ8Z#f07%?My6?epBu^0!7Yl*Q1g%`FfM~n#= z7h;Sui`vyOitNS@JkW;6#EGj^j=*tm{aXpg6jGXDt6XB76Any&Xk^3C^uh7NSTR1| zWE==B7kDIsl^OyJa4XGi)B$cMK|z&BNEZmkGXnPr49suy=CFA{9op{`s+*_r)>olQ z(W$3LFdYtD5_Fh@>4u=gbGVb5>8X|^hr;%x@yNy;kz&@Bai563&8tz-5D4=n!UT*n zviZ6D7H!+_6+O%InpR>A;!%c@k4JtdHc|{|E}>xcZQj52-i;Kk3YD!|g$aRZ)dt+j zRwc2%6^FS?+0{U_P?`0XNp|H34(B#~vem$n;uEn3ZoFZA`{{aATk6}f!?`n3D~0en zzfV+qml96ZHq6JC#tX*GuzQ*(O(ez~30_i#ewF#y-8D#l?NT!T;LgW5mGioc1QkzU z1eKuzL4-sA<4{Ztm;J13ja$c2MTn`@id4}Wr4rBf%YsSpZ8}IuxI~N-L!*S81HK!> zKtlRHj9^!mkiEo=&K z8{7$x#_TdkiZ$f%bm8C!oVz`jghujS9KEOLBR=^o&gS12sKG~yqD@CdJR31tV z3^Va3A(?hEjJq#9IQ>yLRLcdwxQ>RpW$QY11j@~%m zQ%t&gu2J83SG<9FteBRae4fRrlJ=JRhFiR$(WQpelW)B&>GBXtz>HN;ZR9FZhgVKw zNRV@`Kb~f*PgBN-@~^3|q=9qkDQV!CKBDYJIA)h%O&WL>v85E@yEYocoj(m6#CS-j zbA-;b2MS%e^IxDjP7I^tvmYMJG|&1qCWMk9n9g9^H}0C?jwBvm#H z;nk6C7}fZT%$fZ#BPR^ae>+N&Y7|CP!h>T-P|dDxJlt_rVEBu~(1|e+X!S7LUTVdq zp7~9b+C|p8Wo=pS>OnubB8vNnK#9##aEuJT-ryq>9TO&4H2YNZmyJhP+8BI4`^z$a z_4SvT5efT|3I9CtG$@SzsDSyb3&E;GOSycXQ3l?)eSYYl+~F*IpBTs;KJlDTaTZL) zXprqvTGJi1UfSnIjnLoMK3CgsnKu_B1~hP8A{i(&gy#b(?vsUvFrxzvaFQvkayg8e zC(%&&Mwv^(hivcqQcdI$FM>j(C$_^3b_cYu_jgli#PTQG$3LITr=J_N0*p6h%ZJ1& zLM`MBV5(%E6{6=740<7YESM-sdnKCfm6sI~526raL~Hkfq%@JxsbtMUdO31dB% zrXX^Ml7IW$Jb(UpwN8!UnM{quGlCiwm;(rEgi-@^w}05V%QU8iTRLGh4QiwHQN;{8 z&k}Qwl6s!YVz0||>%DW~rKa`o)cphtEGi5t7TMW^h}Fo)+W5 z3-7!b4~@}k@TDEH@OJq0XlTr%#p*Qo(}lSBiibfH{K*H)yr&7k6L$5YK0fM~OBvCR z$450dF-q3h-A^y4lH@?SU=;&pw$s{PIg0z=-E zMLoYu87d()!~Kz(q?p9e>9h(j`3#*%v)gFsXn|)T;i*nZCGmNM2LA@F=X_d8kU};$ z_*k-zT+i{ZpIA>^q=6u%Z|XW?szB>GSsitz3YMRe-X&rR`KzRH$9;K1@YAgSsQk1L zcj|o6%ufSpB~9pul`!!G@YD6?3%>Tz+wTCcw2%6Wip8N~WECC3d_~wt7jdWCM+s}L z5kuh&LQnGrLx`V7RcGCFy)4X)vX%nE3g z9R>$e1NNLmsS^6vPz`!ffrR#?z~PaM@sfO2cvg6hGwG19t`-wCb01E|>W4)!qmhtW zWj)a{Z=R5U)3|hDBYCF$A@sam*av1z!am@Sl&g~Oay%8kUwPmqUGlLJl?hjXG@{=8 z*vO-PjHrLLmn<5be8K7>PWZ8xDX+f8+`#@5TPm~ZJ&It{eQ?zav8Uh;wj8gA$J#wz z%YG$xptHj~&7+43`4U6Za`qXiic#|!9ekrT#^@fUV+HdBmX6qY#Rwo@0zl4xRY3lJ zf_mm67SS-7$7h7x+wE;Xmn*%Nk`?F%&3?7F-6Ym~w_4_XPx{5(3{wMM?}}00U&S?O z953^B>%Z zetC5znjwt^n_cw(&qBZK!l^ z#gmZ1VnyhwcKI|$jeaK8_n56NQrz~kz*DXWJQ&O5CaS8ZszCn!l7M`lAgdeUe)Y>Y z3@P->(T{xfi=VNr#tS@8V@K+j6EL6y>zB%V^j`F@U#jsh9Db81A^h6KDcpNgjtgFH zglU)H<$G|)yu4f409PwDzaQ43#WerwGNQ}@5%{H?@R-hU^uxPL~oq) zqo6?q=2e0QZE#0EB+T{iIFk%UW8YU+Ch;!m0P?w4(F@7x0?n+SsRZHodi9TF)$i3~ zdQ0K=VsCpDXp4l7XJ~e{bNQ2h*UGo{m*q>}o5^!_Fin(y3E@zpeANTyNwoT@?>hPZ z4u0Q_lL2KXFYStQ(8(ds%5GExtRl`~$5iw$ShyDF=8P-w~y%(=I5Zp_yn(_^#e=%~Sl05x;C3*UAEK7zmwIzL* zp!gI1nrw)rgnU*A@P&MdrGHQr2z^1EK$1J`FC!o@aMTBk+y&9Jn5isYN_6rxo^%v+ zQ#0#fmIYp&`y%+<^DMtevgjM>>CFqLDbU1=2=>LSw*kG9K~2Gm`GEiMTBt;x$MziN zs2PeYM&Vfqj<=v!vF3kYFR|v&jmG&E$W~8sVtyVZKbB@bi&*#RGF2|6c@XOB8Voxt z?07vkUliOn$Yt{d4$$PYoxgQ&w#8Y6giEf3mlizT_=VGC1;hRkkzM^ktb9V^y}-Pt z;LOIavG{=F@XO%mJ?q}AMy+WW#!Czyi2+{Pd^mSoH{V12K3)j`+Czd4kf3nZ0yHp8 z3klOg!gLD)riO$$ag4he=Z$j}6W-d#LlTYbdY~V>qP0c}Q$%az$_hcIl@bF65!G}y zS_dbdB#a5>aS4+rVW4k_FkQbsL8amwHlBo5Tq*{)e+l(SfRaG+57SM; zTstb-nnf_^(Dx))1OTloK{rd#Y+2zM@KADvt1tD)Nl{a$1kDMerk_ZdK?0^vu7FWF zCi!e!7Q`Bkq`>iPJ$rgCIg{|v2eM^!R2n1E_WNg1I=!Ct6_G7FkAH$Zv-r| z*URquB)SknqRRNWz!8&>$~eDl%Js(2#8?uLyOo6qOk5=BmGG+~*a`?@`?8$INb3^| zxqBAXsFd>u8hzszL$&}qlcDJ#e3h*{UBh_TRm)wwC1?`~8VpCiDPfKs7Q7)jGU5Dj zZ5;e!_Z5GUzK418#U$jF^_9Y5fr)t*Q)N zB${A;JVDWIyOj!rT0zVAM{M+UVV3L=UA0ES+#>j->o2FMvc3}7RNU9y1%o^;K_f(Q z0bvRrzlW=6moN>3fO#cGz%-IDje=;FQZ7hw+L@`!XJ!Tp!pSPh2#BQaV#2{pqN#mMe?vXXEAz_&B!B6^_g!y8Ex#clI z#odS;1amB;omQfO0l|KGRDiu8!Ad0<1i^(UlOU*C=sF2KOhC`)wG(DawNR3zsHsu= zjqE8{GMa#b7?U?-KT6xN^0YAf;GTJIJn6nsP*Y@CR#9D3?-sRr9`Rm_h+t^>@NE*B z!Tf5xZ{1@2j$trQ|17~6T^H&`(KxLAsKSkm)+!cf;;o|SJ0y;gviQe%B^46bbMJO6 zo*4~KlMJ7ATny2JWnvhN6FnYqhz^!8f0r;5f`I8LVWvqKDZB%gQ(wX)NSFr&g<9|0 zEXAZM_p1`-*pH%FH6-X1QALBUs0y=H!tAE-Cf02vwBL6GC{&j z529|jOPEd)CNBt>YexkQt|2mt+Ve;dFvld!=MtuXVLS=9@ zIt7M>h1EzA6CVzfV3`a?0>G2-FSbOu(DPW?VspYXpH|rXjKVls^9T)rD(yV;#n#a( z1GljR`TiRwkS6djexC|Sp+X=o_1T`O#=jg94PD02Mv>*2zubQv7svvq$O2btv;kv! zy5>WyX*N?;{v0i#+e_%TjL?S3mq`iVC&7LfF;#pv81*Vz*`=9mrKjt;?0`C`hD7qA zKr+8fmJR!94o6_7OU>d(S~rOognEQvRcT%AT!nljHzcoB`xgZKXoECKJonz6AjDqv z_R}0Ge-9&YkA{b|pJ?dneQu)V-;N5S;cW>c?Wce+151UBo+)9Z{nYv&Jk=nHRBdt3 z#tO>aFF~dK6cA=nOQDV_9+8@5u%D_e=er}KSzqrHFw%Ys*sQe@X1Ros_ESKZnzC+F zB#f}1Fwgi!vxO#&4#)> z&~M<~2qfBc8E&FjJqfx+f(p|_m8a6%VuES+sbKR(0!EYj5HnXBN-8H;7Wd9>bir8KX549zN zf+m<5^Mp;hQ^N271>r}m7gPif?!|(IYLoi0NOycGN_9yLw+jQJ>$<~IG*@r4y(U5X zNzi6uY?DN(c0&88gt=Y9;A5mTp$!N#M8f>MOAsb12$)V1=0gc{XAm&ANSG%iOmq-1 zC-w^RrAnAKLBMR4Fij*(Ob{?{NSI?Hl&b$dLBKpAVcwH4?Sg-1?u3DZ!*2-kaHJ~+Kc(E0}iM`3{Ukv?~ocl>zpj!TGl7$T^l&SO6K@t)>B zr`j_Zb{~DE3a{p&v`&c0B#(FD&ohnPJ|RL5Q9R-z`sOl`8b~@EQIUk5EJ2G^`3a|- zh#}Hk`wmIObcsRL7_&c@7-%v}qPMCm@aNrvmd{WC7YdK#e)c46`c_CR%%Wc)IcdOP zGOfxaZ8IbWtE_$qY&x>U(URGJYwc70a1Mdes{f|MaEru{A$V=J5}?#3YX#8`A(W5m zJs=2}_oSA1Q^E|AHQoP>R?|PYx1^#1wM=c@BK7MyiD5_(r7o8+u@WXL2$*PD(<>AP zh1LxZ0wzcHwv4m+a zVEXj*h4G`Wo|O<+D9$Q~aiJQh6hkDwUw{KN=xi_t4hFeQkr0g#25`C6T_MWBiPvy= zg=Ow(GLhYVW9T8pvs@ZS6Q={pI{AFJcpj%dZ#A2UbwGJhK7UU<=U5to@BWy0K1)7- zT0G}ynp^QaK|UYG&-16FY>uU&XRYP41o3PLo)u8J^z3M!z}reZ>w$QBb|lHiJsuU0 zYlz2p;4!^bR;otX(K%{&U@26O4^L~m$$|4$(&G_-*9K2g-CYpxfe&@k zMu!ehGCMb3xSfRVE@e+Ej@MbcfdXB2DcLWHc%5C!Be)|d$RIa%op8vOIh+^mOP;Vu zj|aBQ`v3$-i&wEVA!4>p-7n)Y<3v2B8HwDlk*)UeLk&r(exrPoi%=Qt*N{N;Xku5eNV=w#)}l4EF>OMzr5mbjlic9C*v!cGr-goM$_5rK1@O$ zU(R&GVeZ|Z975mJgu(G$dP{tLCb2NxmAF(}LPf@MM9-vq5(}Y_3HrC6`+igeA3mr4?O!PRcjm4*=i;|Mp! zYFg$})F^tcYNNU58gsm6a&{V>F5(jioJqTdbbi4DIWNeGOAcM zrw8;sVnfXc<1f*Ep>!VWM27zeSmi&&x3ul91_fok5?x5O9b&Q)-6Nu)h`}hrO!4=zHVzMX}|mx;F0Z?yymVwKzIn z5%4s3FQm^)jc|4@#i%aD2c@>x28{R+VN!GfD9K+XydO`OB4NjMC4Tti{6MGj{Kem( zRiP?l=_I%e8ic-I!&?wtNHs9$V+3U><(+Zxja&a7R`*Cmzo}m+DsqGaFx*`OU)Q7) z@>m~JjBZ5H*l-N0mT8{)R`^VDRAL4$;c4!D^a*q*>olCl*M_{Q?n6m*&lbY=&=RhfYZBUbAj~lmn+R+UYdL3Y%rU(mV-g zVhZ7l7(bLxr!&sRvP?J}|D$nD#|IoxmDLU&QYx!HuClBe!E&`@p{gPx&m zfF8hASr5<;LJ8OhbTZr-1iA{KkKkUGI*zgdnue<~$3N(D>XG59_tMp~BMlpX=xizQxV zQ*XcR{wIxZD*asnz8+}_zLFjRd=ainu?f6WsURP0o+)d3hWrD+WB4^++cRV&elO#9 z2)`uD$2JJD9hQ%KhdXWIxZIrN>>WpD~G-~;H6x=7bW zx}Gz&E~V=sjc@z)uJ25(N9p=VBT&0{q%#$ph8>X(e4Q9c%y(0vdmJ%H#~_VqUMdbN zaKs@Eo!HxsG)x2s1isCVbQaQfq_dFDLK;SWY8KKtNarA3fOHPh1xOdz-B0q=!j)R! zaPwC`9IhhHaX%?yYM!DLo>2KFgp{M9+GdyjE4@x^zo8f5` zp5mj@y`x>JQS>w#PovSV&eUi;jlolprFT2@Dm`t7r|poAb*8qXbS%>N3S{q&&eT{+ zcSO1)(w&^C9Vy)jX?%RTcV}m6CrWolx--&UoT;5D-34iUin@1KXKEKpcSX7@(%qb? zT`AoSX?&Qv_kGUPZj`HCn5bEe)$={ThEnd;u%ovCq@?v6C>yCbUyrF$Tak5>1N zccyYW9_e_b?{}ug)ARe0#wV)}; zz1^AGD`>6;M+;6TotP}|zc_d@i08h`1;3k=cgF9%@7i~AoR z7h7Ot;YC{tF=obW#(tkaQNPi~`mO#e*RO}Wy80bz#r5l`)oG!wC{L_#2pLnK37ZMps^%^&!$g@?WQq{9nVU|~l z&|~apT(0y=rSs`MPZI~&fqTbZJV*F+o2I$@L?~B!Pz!i|o1yf7fGJ!?6$A%h z=9#=44*o^(W-Z;C>;wz^+8CHTjd#xzO~_F0rzXH@OdCgzJW3M?%iNCGA7YK0y*)35 zKHUmFN{Wt3!y6st@t1?>yRPXgl@A^}=*3Z}MMpzIj(G9W)-J8-^w+xEE$hph;mCN) z8n*Eh>lMzf49R-FQPG^VurG2 zIUSOE*6vQk)TlJSU>%KBrKpaf0;6EGmK6~nKt~x4ZPm|gJyu$dIj$YuTL2whV8zc4 zpq(N+14*dnf^7V9ko}R!&P5Vuwu&}o$Tn3vnN7nAxje9(J3YrcIC~MU;-FGbdWwIQp-l2LA({tMQL!oy$e*CfgC#Tl%Y#29 zPj4~SZ|rEU-H1p^rYY ztzFumNtdG4@1tfq>9YQ3_1oRmP`_59eh*Uj`PNVB%iC|~O1@5P&HB<}sN_HM{Sxud z(XYL+enle%{i^bxZEdYST(w$S)$;Dp=@;q0YX61)eY%T*en&@e{T?i-j($g4b0xeot1VpX}e(ILaG(W8)mPejN<;`)bDjpnm;~^?Q9d z)9;>Y>9@86*RPdUzlFEy^y~b;sNZ{?4E-A_>i6W_D*bC)8*b;S&3i&6-GxZKYD=g4 zCEb64|86nXZ|pEZKO&Fc@jEJ#D|vLbTFL%~O8z>{ZzccS_?_C(K);PyT)#T36@BEN z4dx|KyCl*{Q9+f4fH%W zi0j*fYT-*ySxv8nt2u3!O4P%*>eVcM$S+ai1b&1N|C^`VAm)?6-f{ zbmK}co~aVi+d!}6-zNJd;-Bl^7RLHb8zA_P#EIYfJ%y9zAq3Z$pGmzrQ~CKcL?acN^;0QPi*c@jJXN*Kc*cO23wd z`fZ-%w|-d99)b`Rcz5>F>>S>mSorZVv8MgxIgyC%LEI@irO~Uj#=J*4c@b;O7hNAk zSJLZr@RL}mRDK2bVROTL_VwVH5Al4DQc;3(MG{Lum~t=6fH#OjE+%!N^ALBcFhKr3 z4F5ED)2a{Mdr`K{J0RR$<|<*-6kv3os^D3;7VaLU3&IW(6kx_0re`4^mr}f;5>Fzg z*S5RWjI+qNDgXAu?lbc170wEskzcEDR*k&8usbdm?+(T1YcdVho9t7)^%30OJxX1@ zj=pdBt7HBECQ%v=44u)Rxoe!{E^8WSSV%Z=!UFmHA%hFx;M&=d+SK^e4AF;HWyCEi zk69J(L|*@w6mOM7Jxb9F)OA=8kHYt*VkvR~Uqey-vsmwz{cEiW%tTu1U#x7y$v+wW z8}>jqZRtA}ucW)ru@mnQ4*bPhHauM9n@yfhkp}l(Yfal-r@*I%eXM+65`C7Od)rE) z!vRcxbRU6xD3g$_=qx-2%q!86R6edzboJDXx1%Rx_DQwEN(v%w}=+xb}ZlqC|zby1F5Me@5v`Sv`iOZU;?<+f<-$w)J z>WwHV&9D7$_?AK{TGKH-Ou-IUh=TUHUUAY6k&wo$GMmu*Ga{=Tk z&cNH-inH*)ycJ5N&q~@Lc+n;i!mB7kXR-+)+Ot#nxF!%*^v6p{W^AV=wp?KAHD6S( z05ASpQ&bPm$Q0}iEQv1U>I|Z&wVld%Lg=dfK`8MV5fgld=$EQT)ZSHHEs?Dn zP^`DAR;WHounJ)uC6Cc3msD9)%ZxBuA|zS#C8AA8xRES+_b-BT{m7zw2qDX&wUbTN zyIW!-S(NyWz(%s@9}*kMA}kA-WYIy0=b&T}4QV6&_maQr2IwDATX2-~lBy4i%UfAW zJ|Oy+4qWuuk(DaFi^{(Mi>o9Lt)hG)jhnkdG>#1M7q1A~M}btZYS|hZ6dgsn^A>7Z`DLms-ZLYdCK1|!u!}^P zffwx(p%n*kFgEG$4H7OKNh7h%EvB7BtA!!6OFJQm)st(S>vcatk3> z#}ai}RjcZT`m<8>XW0e4KcmoDmXZkW&nA5TG0G__Uy6I`(i$wmWS2HIH*q|Bh$eLh90diIBRKdjMihcIgR7U#&~?%?Pt4 zLh907iIBQ9S|X$_WgfvWlU@2EA>=N-%ZzOZW7E3yFmIaEx-_Es^}Fa4TpHraE*!82g9zIvHmzO>Ls5V?oEt7evRzfsR|`&>+ES zvga}(rn#wsOj2X}LfRAC2R|P>dqLViXpt(P4zhd_^RZ>%WL+%D`Pjg}np$>D8X45G z7KWCckQ_oSGil+OzZ1*J`B)7z!tW(QQVF}B7o-BahP@~el1gAwf%oKmtPLS#mGIF6 zrt1A7v5`vXC1nzLH7wqaJroc{Ilu;ur3w-`9~+DzuCZC5`PhxfkG+zEmY!AVU0mKm zRR(P|!uwMO-;XslYbW_~rQ}$Pm?F}2v1ry8w+Y*aBnML+OeU2KIXZj}g0 za@-}Y6_OnBwATp8NpkSC8eJhJ#|OU=!d2iBde4k-qeMuOWB;q7h9o&o(5@jMMDK}i zL~lsRF@_MblM<$&C-WM0DpmKX=<|5AzLB|Mhsfb4EvmyybiwfU?}AKz zhEE(ZXGI#YZ5?AG(>D?ujh)338#*j(l*Hy|?40;jql?&Aqt_QCxeKX{ zsGMk``geYy>6F>ObCbCVueH$$^7JyDAm^J1&L)De5e|-&{++w1393B#aI}dgFG_?& zlLU#7X!5#5NHpQ00*;jOWIrULkSF8J*q)WxNS<_fMpO?R9QKD~>m0$>CV4WK5UR`< zNS+ww`SNz4gplXK*_($2OU9kl>Hk;wEG;E7k?2M0=h=Z zmkdTI<;%AtO*Nb(5t4kFV303QN`&Z5(XHqmDPO!0yh6Ts%-F^;Hch?^UPMjStMV2lyc33NAY=@hgi5w-#sq6bo>c)=@NFCUOq=%y0A97 z)Kan<)Gj*l6%DLm#g{`Zb32gF8vcS2CTcCA*lBzP55zk72(^um&3O7(>P;L*!L-LI zc%H#!)Rp_s$hMRp1!~|MWybfkj?bmz>#5_z5Y_R`)9@`8`0AVSHnT=MFCa0umlXv77PD(eWis(};ZOw1y9svW{<>hVOBKuX32FekD4- z3%MG;RXRRQ_jG)%G<@v@zLjQtE*;+r9p5k=AI?G0@qGy~F53GYcn$5%GUHpSmiuSmnUK;R2E<9k)d_w@n|-|ITQ3?sgd8ov7lzO`8<`n_Sm_nw9?Q^%KO z#CH^8Q?&P_kYPDyeE-n#m9V#u`6X1xmup~c zHno0i=Ms1$3$W_rZ)re>aA)=vUnEL9R`6u}8-Q7Z;HpYiBbbfmo z^3t*}13hLbxkmIUz7%08St;%sGMO4_oHk&PsTXQD(KxLI`*65N6YFU`>eCC4DF#lf zWyV!Q$93l%jZDjQPV?c~4vb53+WLW}dR?XESup}qp4D)@U017@k4pXV7pj-!w5euX zP4s%zVbh4)*izB>z(=^ez_=u*Edz0@a#}re2@UiTVxG`y`*)qwd}Lu)DuFp|^8iz` z>*61SP=Cm7>X9L08NOQobJ>JnKh8@)#`d`@SY8daa-MMYnp$k7_L>}QSsK7H9#ZB)6F3h{)! zX2#c0$M=$sufL8DQ+?eM*aqn=G-I5=*UyZvsg5sI$LIY?s~?uUb$l~5d=#;R`d!N~ zwYQm$?h+ti;iHHowD%S>zFs=Mm-O-Ft*wn!9}RP#hL1vAfbX;ZCi)H3@ulkc z-q-NWQ^1wRDjtVG6kR+RDDQ1j6O39}$1*>e3Lq}+d^2BlH4iY6Hm#v-R_MIIBnva+A46>W5U&+7PA>G&EN@wL+MJtOd~G~?^4<6ALatKTpk zU!)P=m-Im)w%>XSd|76EJ#>7>pVsg>YH7U|WyDvc;geD}+>9?t$M>v`?^2kC&qvC3 z)bPDQo#_c%n{J|?L&uk-<6EWSo5wyf1Ec;x-wdKAR}28Y95cRtI=(I&wDu0u@s*mm z>S+yMbyjBQ3q3=M@%swDzx>uSWCnhl@w@dR?9Sg|cjC7Lznj5##@|6azpWCsD1Phk zQ*DA9l-Hg^LSBb`tIw~$0`FTE(ihY$B@^(!_(YU&(iWc>Y$^E&O)NSw8ge0TB+s}v z)n?+yr)6{Gd}mhC2u-+Z*nM*27r*YC?(++@2M-!>gz-Z+gv&ehQH`B*R0 zG<-z@UuCMPyIR>g@&>{P^x}`Sj+t8R08`2CfD5PwR~JsBcevH z5ch&7OGA4>>wfM%3Vtszm;Z&{o<^@D~FpX|`_g=+X32z*X6zHfDW(K^2F zIzD{PL&vxJd$qkAF=9Z!I5WN@I=-*<*+cpFTK#-%y0IF*X#$^OH?{XC9pCXW8b7?K z<9pCpzXlqr2I=^2*74;T@fB(K77KjgW_&m4V{T?ym>!{(g34Ci)O!RB0 z<12YoYj3F5zw;=xz=-mPLu!*x3za|KjIybYvZIdjJ*~;}7MW1GHIy$4lnu=&o9QUq zzoOOhZM~LeEgh$!vWJi*z)v-Fh{54t? z*I#Kt^@91y2Ur@bc&1FYx>_gLqPwrb2ElI!ez$pHZ{YU{ewL74A*=rA8FC3f$CaKT zFXC5@U-zp$LtOYB#P0#T^Dq3up<}Y}TZvytXpNg{hSj&QM=OTEyI3u@`Qab%*2 z*q=3{?&bxBtl=85>zApWM~ftS&&@pmN|!$%E4*TbzDBP(AOE)69QK|Gp++V zt{A;u-|yGj=rflY%(yxUTt{rCHh!n$`Yuar<6<3`&usQ)#`Uuh70;S+Rp_{)p44#7 zy`&BrT9niK@zZaJUM~q;b~CQubX;E-X}G%UxP0{0G{)5rxQb5DeA80$2RO6%1ePgj z%?~$uS+KBqnX;WIalh3>iL-i%({+n#{x=#`eJl*`*HruOggAQ2jO%9|R};PVk5y`v z@R=R{lW{E)xO$p#9o2F57^+d?%-34IeEb6w2^V{_e(Pmw;65GEVh+Dz6ZB0TQG~I3 zS`Z>K(f#^O{~zk!1U||l=^qbAGzyrApiyBNHEI-rU|02|8I5mbIv3L-=FXQ zT|P|u>FRo_yQ{0KtE>CzeibI~k)4JoOvdj~{Py4%=sY|jf}g2o4pP5#Q}d@+Uw8Ub zkEGUIGzo3SOV9A9Vqfn+z$>`z*CLSq`%3iSNlZdD+?_rxBE(5aZ^|I)_zy`u!z4Z3m z^oHB?#@Y06QIJh<^A@wd)0y5_FTIZ4toHrJ-U-p!rss3gn`6=I#q>IP=^bj*d(fu$ z>=uiExM0XG-x(G?wJG75!5;o~wdswv>0NHq!{tLZy$_(sdD5pgC0ypEcce`(T5h#( z51Sq?CbH=*u;{5x2}gP99c|Nl+NQVub*sMVPI^NvdTLX`x-3t9kGJVvY||^V>7DMR zw`;RmU$rUWIxjt+O)uG|muAyD!%6Qxi=Nt)aFUna$u_;0%PjuAz1ga7eOAZUbUCr0GnPPo8BOso@*0}yzhwgu-uezmY3Kd zo7kJzS(W{AlT}&Q4wj3}!nHmhJNNM6311&JJYgZikMQf?Wq88P_-(=O4_${RT#esL z_#M%0c*39XdkVi_@f&r-@Pr5O+lgNm)OEs<|Be4TxC$+2lJ;Ct4tfV^zuo_&@_(;) z+HVucGFvnmvybGtUGNuH8!wTMh1rojw*wg;a*6zL$Pk{oOM8wsW+c~)<2lP2fAomy zirfTq7;LcjMt!)^l7vF1*pJ@`G2KzkDza&ihZZ*fnzVkg{dTi#5p{|DVUpI_OzU

    nLl+#-{9J6eGON_eC-9S zgRd%*ubMW#QYBx5W-GqlKsM&<2^U|ZnXhE6uX7a&;OpLt%vZ9Luc~tuU$lnX!Pne3 zSzlQgun^S^`Wi3!`ev5m>pIQXlQ>K5&t;fK=>kautxKy8@Sv_zhP5>aF}^4vnvHf) zOp+ACY!tI3#on6YOUTBWpifmRic^^4D68yhH^u9M6-5e&9TYFmXBpqZaDb9=x}J_yo&1Q&0?$;aW5D5xrLv{k5cv=)02W-8Q1HNTQ=PQQ9n)#T*5qo(x)? z%7ouw!n29+t3tonyLUgeyiwNnKH^&m-NWw?ovtWa*)Wv8l{qRdCl?tKRKj)WC#bIz zK0XHiwg!EgnqHW8D5$FBbrOa(l!D%ryynhS3M!#_9Vd95uX%lsd8MjrRfx-jEf`*F zFt48cyvk2{jzk-!84k5E{OM@LFppe|t^wEb?0H+E5b3$h9C?Sy5Zh)F|q-Dn!VDM~nF7 zE3&!4Vh0`SS)=_2u!6_q1LITavDI3Hw2$%X4f+w2^=DREuHYIGmY8A(W_tRQvd#< zD#2FTY-pXOCxeC?xD;CwVSnasBp^RrX9Yd72A3c(~4Ig)E)>OGi7=Nh<0dhs@j)ednv9VDx-y&$dSA^M`hRV+nBTyZ&% z%6xrgzSON!2$pg+)uYF_1iB$9M6*b=JzlQ7w8nD3^~_;RIZ;&P*E}|tJTAh(fbtSO zC9U(*RdIL0`bbrOdNY;2OyvSm$*soqhp9||S+%6MBAcdkQ995#8>In~Qb1GsLyRyS zJ&FUxS?aIo^XYF^B8Tr>bFo^E*ZuBMBL|-gt1z>|BXEuJI`W1xdWg1it|ObZkJmkV zhG)|$nY}x`)oS{an#}t~JhLrLi<86?UWA6_(lly4DNLO?4H_1c@N;S|H_KtW4_`2>O^~cznyOeUp;`Mvux3UR$$LX< zLk(-AtVzLcttIo|mq_Mh?cH*y=0be-={BuBELpozu?C->Em`X&S<5#YIh7Iwrj7zX zR+FmkPV9vlu*>`l*h)xB?_&@{mCuWk(%%7Ag7WEw%tjV_e5>{qPyYUE_(5vMc39pJ zWu>2i4Lu)uZ)m>x$e-YhR!k;oZz#?F)q}WX8S{j7`%T3lWTEO~wu4t=0+=uTBYaDQ(d?!JA0uWN+9H znmwPJy}$7`4slZ5&R#{y-oR|FHxDxUh2AFS{Xz_;)5bRbEqZ*^eSax*vvn6r`2uZA_+r+N7~}K* zxndM`e0r4IR zoPW3rAA$?Cf$!a!QUx+4q>T#?9bP)Y-wE?L@uAi#e(v?f23zPjKXub2fJ$XrpGz0PABW$dg^uqf|*=WSZP4oFXRT1yy-YeeA zO+p7wzm|J*0k7qHvSyWqxDQ?`i_dwB)yA~KUcOW%3@l?I=AJO{+PvHyLG;>J?It*3 z<4YaPRulm%g5pG7{h+bzG^+Lc)}7yJvu_7%N3EslEJI4b*LncD2bk&$bq zFz$?*C?lqQ2h+}>LOb2*Tgc06uan-h*0mSWd;{0<1^+kJb+4&m_IpKbqIaK~Ns{F?$zE|e_e+wU6v>p<^y*MjO?sDl_Z6xE zvb~tNaX0AOmoUo?#RC$el7dKGC3$1!|Ao&;?Z?`UMOtutfV5lkUfH7%9Dh1Za_q?% zBZ7VS0OIQHo z()$(ONn22BN$(y*Zyy>{rWdfu*M{j`AbMYSw3kR^wx;(Qvg%T~LDEaH)9WDVt%19d zu}FVSuZ&H;E=-RWms;yP*y(j#u4_p>JH0PHWqp>m)9WGWwK4S0p_a0IH`(a*W_nb8 ztV#}jMsCyeR#F8gA5P^rSkikb!=}&2CB2{U=};+OrluDLdLCPie3EHW&|=+PpUP0z z$a~s|8hMD`Omo!8dA1sPX9Zm&cMSj&Tq7&nnLP3dE9F$Wjmf7ZlT8ehKVxfCR!S|K zQbsU?(ZpcvJ$57O^^z|1cac>qWtOD(oSoiCNpJf^t(0M!UTvZ$-Q!rM=OcO{vJlj2 zyKk(OyL3S`Ae#1-dk;yvW$bh(NV@F}T?}kXIqTTyW-#3@M0c;0)6i`=OUwE>vODM= z`Iz-PjV3O|-~cLdwxs**1TF7GP4`Y4-Kk7>AklqHIt@d2$2VHuW^TIEB;6`@x-Uw) zeGJ`l$jEI}V&E+bS7IB0z9-`Z>M=X6S;({kzaZ=Qxw2$zb9GePq_MnV6{q&JOF@VY>Ta9_XM+*0;()m(8+}HT@=d!Pv&6cIm6<0~Ee`HgWqd z7dJC%mBpB*gxPh`#$>W&a=}E!B#QYRzz|n|jn~EeDl)0*JV|UJ6I(#Uwv`thZb{6a zu8H-r6T49oi?I{?P!h{D#OfmxwkpR=be^@NscmNg9udO$X(zp2C@}DSbeEQ*m=QkK zgxf@*M@xo=VjgZ(L_B?3__Tg!eo_#59q0JaA7i+fHvh9HFTUZg>?^K^L3uKs*S3TY z&`?*&OHsdk-{R%7!l(x5Kyz8%<-Fsi68szS>XO$P_CNok8WkH2U|G+2obYK$z7A%4 z)filTP$T`17^lYInj;%?_AJyb=i@{tt^sqV=HsHQfB$mvwd&6cnlH@9si2Hvwd}CcViV_i;#`^styh@3nh4pA)W$lx>%Fm{7FPOny3}} zj2e6%>ZbUPq*&cX@gYg^2~F_kh?)9 zayK|=cY||wHv>?CC*aBo8zJ2dF6_mI^*iOqD|@=rEz{g*x!m?+KtsrsU|Wpc9y~e+ zR)U6T$K!mcoexhHtOpZzC8U=@O+$5wrH-H{V>2Fe*>@%qI?knTm386`Diaw2tg-61 z5)nYpJTRIazXmZms_bKBT4WFL_~W0;j=ynp{P_}bIaS2+ys%wYkSvh2#;Sasj0x6Q zD|_+Eh*Yz&!q!nN_Mx#-?9OpH-N6b~qq|0PQKmHK;dXKsynJnhH^D!~zI^Sm4KhOR zDf6Cwmh+}=bi7sClWgxXmbed+qRbYMsAuZH|L8p?Hr&P4D>X~Mwdj?6Mk_usiPT@x zN|&@e86BZqu2$5trS@h*gP4%$=gby5RhwCSyP3!KJsDMzQxp4ZBr9bHW;T_5KP`z> z(Zr7EFg3+SEQN_}C8@gKZkOr@zcRkX$f=3FD~a{A5gR3mEgYpP(`Zd>q>b1(CMNnA zcRPqBpZ-TqR(b8jx=LbaFwmeRn<$CJYGNUpn3x@tYRqI}7D@KiOyMr5!A2LX!&AyR zeS=U_OLl`KmTn{Vyd<`Jq>^l&j)ukVBa+xOCMJ3pDYqT88OLTVS${jRHP3LFRk0D9 zA&K?X#2RX1<7{f2&BV&WCs4~!B8AW6f@5_$f>@AB0M9HD} zh2s~o*$deMA@96-1dh`eg+^-5A_Dn{LpNX zYJTXJX?|#m%X)b*H$U`9PYA#dKNTn3_e12DZSFfRr%g0T6jlQg35Wf7kapPRyRpOe zWQ-OOvfK-3L<*9^LD$3dsi?*Fy@1w1A7&|Am;Sn)G7nsBR1Fg!la8U?OMlnJ@aP=4 zf!MEX*0h<+cp!;6?M1say)a5y(^n#Jm5d%6!HiCN##qyKS;n~|R2jd4EbO&^wh`OK z#6}UZ^)u|mK7CFR>t`qSx+E56Ble9X)>{+1R}&NOS4wwtfQd~eVt>DECw3ma6t>>; z7i`wsRuWr~Y9#w!5<5FwNwyJLSTgYjsU-F@6Pr!M>N*^0`Og)x=k3HwNn$ZJV!ugZ zS(;d9O-#JRDTy6pVhf0v-$CpLO{}_|*k{AJ%yLtVWPeCvRW-3==appQ#vF3uZdYUVpW*f1tRwR z&30lV(DOsp(ABi4}Vb_03tSJl!^ zvlFw1vKqZMVv&;A6iuv$CU(|F><%UtPQ=>QuuFFMh$42Io!D!V*f$teP?FV`#A<3{ zr_L(LF4>4RU}ANN*k1v=WPdMEroRk1wdp@1iS@S;yI&If_$j5vNt)PY8?hKBM(gdY zcO7NsdtVXr*@=~q#4Zjsl077e#cN_=nplO>CVXze#C$}oTs6BIFKZ9--Cs7zK7E?Y zY>JJTPZB#YL`k*)S=c~4HeyLktP2rKbeMkb<0{B}%1&&6Bv#W#teqq_NE3_E#Aw=G z#Vn69v4KQvS7p0oxAs%SO4x~2mBc=N+NiOcB=+xMC0XvDO0rvR#CkEYQADg{bvv=r znW~<>gq+$yc0R>wjJFZ%D~Y|JiS^dR?z9mb$iyZSv1KpXt+5K;!Q%F;j-A*9N$kK= zMzX<@SfnO)_Kb@ADk~ihV@k7$(q%M}##gPvkSRzuPL!PsuM9rgoG@E+a0 zn8v8h_30(f>$M*_ucv?Fyq@rx^EzUM^Ezs!^LoNs=k?O{d3lAtPdzHp|EJI2)tBgh z){7VRN}q&y{7GxQV`ba^EVA#|9$AaNhb}xB7tuRo70rZ0=h@xJpUWbDdgKH=(_<@3 z?iFv>$=xflVrwYg)4*J7{;lbTVn{07TGLxDa&Zl*Wc~0D50Iul68_A-vD~0*9*TE%xxV=0RoQhc@7t=qW|lJw993OmrC?k^7-3``eMQs;z??KpMSeA<7-d)Fe=4*yQjx_mIw83{y^!H zsg)Aa)|T|89W9Z1yy05tDWdxZkm>$B$e^d%6vrh0S6D0&axYF9Jjq`Xz;unh=HS=} zI2^!<^}bT$t)As2`o}#`x_oLSU)nm%)mSA`PuSqcKE?2l;V9wTwTry&s+H`p;p5bSk86Y9wRrd^HZ%TC93}pGoZ9i}+TdR#2UK+aKal(f4F8i{ z{L{6;f2ElCTbcg=j*|aLIJNUn*9QNA;^B{dTIwH1rGK2-@!R9t;2(sWDvo}JNd9qD z{NvP)KMB{Vb=ZDV#*t}W-6U5mV8~Z-By)ceM}=1o=1$kCk+AiYsKk2PBv?7NZ(rIm zn|*(NJNaC6^tNEkBx7xANoDxP{h0bZd=JQ?K6k*;R-aqovf%pM1W!zTo(NJ!s?WJB zT~i!My8CdnOGnqKx07@YAYK3IMUw9bMnA44U$d<&Uo9MM^4)~Xg5@iZC;x$bM27qo z;gWnfI^-kN;>uU1aQWzMrLy#e2=d9f!W;O%rFAtp^&c<$Ar)|Rayog!{B0` zttj~E5cGdf!S7x?{QcXQ{~R18{$iZk@#)&&)8gP_@SnAX@dx54@gKvf9iOfZ{%gg<9|_|? z9SrM&qr^|bsU4rL4Sr1V@CQi!`;7i$UHYeMgZ~{q zaa8t?Q-}TI+Th<(Jp9g5|ItSO^YlFYCyhA_DsK0WR#&-aOC;j+vl>EoK^h4JM zzkBiU8%zGf4gVo7{^{D_UoKZH{#&hM{_El>`LB*syZ-6g;J;Qp{N>XB%r^dq`WJS5 zx;FSR#l!Esn)#2$QSx6Or*?e0Hu&FRV%6p!u2sH`rT+;x{wKucf9Trak8$E(D|nl= zp7|ezqvU@GPVM~DwZXroc=*d#GX88FC4K;>c6_=v_$$je^m8r#_iteQ92_P7Vw~FX z>Du6TFCPARss95;|2tj!r)z_M8OxDv<$EpuJFk`YgQKz^oZ9)Xk86YfniKz8_A@}n z4?Yt=#Jb`Kx;FSR#l#og4EP`JSWxgEi&H!QbZzjz3wG$|TKvy?Oxh=o%06*w#~*@g zgFmKt_>G4#emIU2KLn?Ce7ZLHw-gWmd~e1-fTP6UiBmg1T^oFQlhVFGTX>n@sWvzWvz%zP(T0ZqK)uJju7$$lEb|JNya0y+GcM zx6eU4;3N&kN1XJPw}0Z>SGw`-M0uMgL6ADE7vF9qZ-2zM zS4->~^7gBIyAEm{VV9A&)A)8oD&IampM*~x3fz-Y@E`crW4P5#s((A*YK>cUWX9!u zt1)hs9?Dp6^Q}nSI@5)3y}-9B%3;M_*3iCs*v*u`ZETTF^?bp{BVlwHUz~xXZTu}A zmj#c%jm8r*{?-mwSd{U_9a+M*Lq5P!4#>{OsTzW#`2xB&^98g9ga&2h`s`~A&VB*E zLBo5m<0#=@6t0ElI(RyQuBmGBbVM=7!<%L@esvrrekGjR*{5rRU(E6FYKSX{|9{qK z{6BGO$ERz9U(E6F6Q48wP8=ow>v3wwr|V*khfBy;afGW1dC`U^#={BEF&+;8boKG@ z<;mJ`#XOVEX0^Tc`4p1CUYp}+v)B7@S+Kp{i6_Qh<6u@rvDeEVv%zq{#KMqF;KOCoac)B*_oz3t?o!|O$8RIX;kqYM>92Gbf4qd0><%X|Q z8q#D%O|&0kKJMz}Qw3}GGp;dTaX5|3X9JG5^7#~(1((l4JTc|-HRLQx`P7rvcLR=6 zfhBAPNdAPbi(}ArzhIq}!;y4W0!O>f=-O$}=uli;VZT3Cn8LI@Pm=cB*J;lk3$o|d zG&j&%+VfW;3K)hiLV^0igp+-~cFYnXTv!hrSzlr8aH`~kzC!4l?3u^z!$sfYYvX^# z{6Hm|&$3NEsOjJ@av1(~93}jVIJLvmHQ6)6uMna8*EV~;D*oV)7(WR|iQf#Tc6_=v z_+5*Mze3{UsPJ*>z{j=0zbHcYBJVL7(|C=uT z)3w2Wpm_LGr1=an=F`VzK6GvH4~o#e$olz!Y5`)J0FF}sR59%Or)z`%Z1M1m&Hv5C z!*43>v%0a*N-q1PYr{XUS17W65#U!2H1;uKSO|zsrur4y#J%!kRPFpP*$q6rVN3(boP) z;Dt6+2SkM~YJZ}s>`zoT z{fSDh{sdi9d2@e){ZWzEAKlQO**|IU54-T`+TgQ4Dmp%Tq|~1{i4Ln&&taU})kD_? zznJT%5+#0p93}p3IJM)`wZSju`l&f1ng4M(O8ntCwd2#Z!DoL|Wc|FI!uT0DO8n6{ zwd2#Z!DoL|Wc=^BK8LK*^*Q8YXMGN%YlF}JsL1%$-u-{HT?t&2Ro90EMH9iyB2A^j zqSV67!q==B0UZJqbEDj7^Tlk@#Kg>$(41)+wQTXtEY04sY_ZL>vNTOJ_oc$j)VH)t zlxquWI^X}Cd!KFQnPI>_e?OdOyXT(sKg&ILdF~_mKlNXo|D!lG^H1jn{aW@H?|DPg z&%>|6r#lYK^yxe(y+#OW8e&PG2mFvp-i=>MuWvW;OI;E=x2D%M_7|sNXP~Jy^+#?+ zwTMTn@N0@kAK=tJ9=(A(Mm&miJ>;AmDc!^PRe+7gp&2kbH{wxJt>V#zJtX;4SvvWn zI5d-|b3@;?_2)&Beh2(2_AkbvnLeEx^lRzQ*B40ot?;YppMyg)eL6Sj*V3O~7%1sa z#IK_N01nOc>D-`SOMlMot?ip_%>zI1ln?^l(Eh(cP&a`53?C&+nP=Ab+NFt3TJ+UH+(71pZ8siToMA zW`D+M2!EzHrLS*}bbP^!XhhNK9{ei6Zo{D&FgmXdU~w-?l9lr%VEgc^(IddzeSG04c^>fEj$adAt8r?N*T>|CwZ^Mzo)m5aeidFTaj411`54Y?g_j~(`I5p5 zzZyNp3+J`OYd~&|cx}UQJmK{|eoc72!lU$d>*t@x9RsgO#}^kt*<@c&;8)>QYO)8y zi_VSqqITnpf4?Tl@5ZkpzYT{Pd_wBnM|jbB zZSbmiS(03aU&8BM{A%Q{u=t;;0?5S z7RhZbEi9Kg`xje(LXKOi4rRQUvJ%7Cz-wz^w z=$$JQKi-|FVf#=kD`~{amBb48puNY6FGkp3?j%0qT;+}=+{dgf4ClRF{~B4E&^?A80DG3l33AG_|f|jCj9Wqgwp49Nnh6|gIM{h zRi7Qe$bTJDpXC_}#|(*M25`(s1q18FwlBgeQq3`jmY3}7^k5sM-eSW~hno30XH~@f z*xA<@J61OR*Q9T@uN(g<`>GdE9~q4pYOb#}?CaFOxIWtD2K&`u*(Q#nanvX}gn@;$ z=UIbnpg#CYfP8{g4vxI`Gk9un_MBx|~>C6j(1Szy9D6?M(+rr8q**fj`S2q5Y>k#wFEO4FwLZSg1ndhr&k z(m9A7e;G`e;&*dA*zJ1aL&k5<1=toTRDcfe&sPT2$MMAzP+vRLw_MgYyc_`q>wJYDeKehy-4_|F0G;D z`0d>nQwMuT{3iOF23qXBNOTCI-){dI(7(@0KUHj;7s&q{d^(`^?T_-;CV}+tRrI+5 zzXT4kLk2t?{cixtiUyT@)>FdHTBAFLu?NC$I@65S^iv{!dnr)9Meo%m9x44?X{Nu- zO)l>Zs^LE$gsCC4J+uD%TlAkMIs{Q)AC7uBe9t+q$ z;5aI2s4Dr>*WwdREa4dU4e&Q=qv-0XG{{7bthv%d(?2x7zFV#2%9-+qF-}r z?Gc@Su;h{S4Qfk>4vi|{8X2C zr{Y0tGyP?2Nt+XbYWPoOm>RGHktVUebJfl|Du(CnmF~JK<;;a5r+FP@r>K!8?5w`#M~hIi|R_B;?obk zt?{6MG|+|WFonx3Ja~%Tq#j(~zQ0zU;XqLe4KD5vXQUxK7pHW)T(Lx!ZyB> zKQ)p3NWA1%rA87rmJD&k6=6I!gg#Wfc{?w_pW=h4&)IMW_TI}%KVQ7{Y#{etH=Y6g zgSi&|OGI7}{q={!L`&tbcK!QVlC<6*V^=!(jLBU81#=zJPBu58#*fM!4ww-2(WDZ`Hl2a~uC&s32wxEWMQ1{P(@hrsk^ctK_nry;`>gZ}#Ku{H_~eB1&YIebCT9A} zim=vCj0~!wvVGnCKih(jL&OJB|Kw=R{u3O(RJ`wHrJp9=ddlQL$uQVEQ$yx!5k&Kv z@Z03F$X6gbsQQiZq(NsAf9|u=FBBV}4AlS0GqJBGX8OzKk;{(^s$t#cFdi7*zu)d@ z!6#qD2T>onB@FeN@b6`&FZ0<&GXoLI-WH~Y@cbX_Vd7unlM_t;_b?V5p8j+*eHvf? zZAKvX?Y<7feNFgW8A#t3M89fB&GhZsi|ttqjoyAy8z8P!4<`H0S!O84`{FW~3T za6V$FtW?YIMv3Lq1M!-0CU~9BH0j&dJ6#M3qF;3;^k1~nPZFnmf&8Cc9mbk!()SHk z`e|Zr5dA@C!v7B$7JL##w;=jwWUr4{>8FX^PXyu~_Xg7cq+uBDYqFoy&H(<01kvw$Cj7r>r4Rdm zJdpoE-_#tBg7vHQ|IGB4RZ~csqiW!g#3SDL=uUusO|vNB_4|Xvf={~W_7Cx|?DG*b z{bfsu|6QIyghqTD2BGl$w>H!F^&TZA22mdwK|X2M9;~{Np|Q3Htrd9&{{plJA0})4 z2by1u!qgI8KeOpJXv2Y_=imF<)%Uhrf~D8@N9(%O7i?e9508J`U?XG~s?;?8LGxF> zR#dO-zhn9;^tdPM%MQ;mc2#Yf79d|d*P~DJ15X-}4Bh>ccn%oo?C%`l3>LG<<+&$i z6h6@_#l4@YM`P#KIME5)T4TfkIm$A1lqxpkV;yuYUHo?+9eH~tVjTtEG-=@SM*9;f z!CvL^_QrHc&qVQZx1afuEKahq8(nO(p0NPzw9LH4!J<5Y7U|mLu_;9K;j6zy?!kXj;98NS~Zw2=NZOIk%FETw`a*r2ULG5uig$S3_{{tkhP#xV~7LSWa)k7Y^@ z_js(U7@vsCS9KvXbYiM@JS2%tmZzyWO~YwZd5ZZO?0E0(9>=4ez%OA*W=bwL+)ntY zd*W~!2?d~ZE!*vE>hj(c5Wir$IRH8%S*%Q#0WKhZ(F2HI8EImkdcYFD$Q2!MMTaPr zw-GUUeN^Dgp$r+Fwt@4%l4OLzJRr(=`oy{WK;%BGcHBb)=Z;fIol>gO#(c}-WUlPtALan#E zqlPLL%%u_WAS0@Q|L?J<1@z`8`PklJGT1pqSfmMvK4Pzw|VMia%8-^&&$ zSxloNxkLr~xx=ktwFT}Bw&Yvf84a_&y^_#Y81kTDCbNWNWF(1(BoH1+4QwIcC=*h} zFP)Wl!Ym7^S*5-9)0{(PlNuSm51R1(7+=2$hwnqOz7Y5V3Fmo?M5h%T>l%BUiEih) zTG(`X`lY}RuxPV?U%=W=B|6?;fo}o6I=dDr3qCWj4|J9_V>&o$fGY8Qv;ufYTvn$) zb3LQ+{kGBge%t8eT;GV)T+h9Qd7iOR_>03I$Y)g~3|w(6VN%xKEbr-D&)CB*@2!b0 z??Xv0?^xmLx~DkDGVy#9VK6 zRgB9!ac{2oKyJIAv&&XD$X@v?Hk3M@m(cTo%eyCU>QBWja=rJW=ChstuU)=DaoPSg zd0l@Wdk|NVJ@|{eW6sKi-^WY3w71^FFgqXYvoP+JG zy*P&md3$jV__74ffmohk3VqJ{nhYh2dS?YPjdKnjHgwRCRpR#5sE)k|+B?!z)8mbu zINrx`qXR+|`MDK@B|FpbNAb_>ee`{f@3TEQamc`QTPgcBKf63*HW^B`XHaskw-S|X zkVcp5Yx~{RKl^h%x5ah(&E*+^N=BfP5y^R;JLXB7$V^Gg^!}0U8M#z5ifr$g#bgwN zu>Xo-7gJJ@lmLw>DYNmL-SyAnCc1qTr=(Z4$@R%wY$UlUX=3r;WF?eg;lFgvPTtD( z-kFk`?E`{7)J;Zm2^$HWP&f~;64ol?nr!5cNNgm9Y{WATO3U_s>GHmivXDeCTb*yH z67-!d>R zo3g;|L-r#e_f9tly~But>DitK)5RZY91}S$hObaXrl4oA7rK8sQt`8b%~0ou(lg1< z#mr7%gH=O3Rrzi&6}m#Tx6eKcc(r`D%Y`+yx54?9i@?oSNtS9P_sL2bVL~+#s3wW3 zLln-TTZelba>xuyEGfIxa>$-=Y$Qmg9@}BSo{SR7V#ZaLrj%+7>;kCwTkyRls$I6H zDp#Q_g;^*93)Hrn))_%tvYo8~PbJ#W1Q|lg(9!)4Uui+u3Elo*X<^#heK6Ypvx%h9 z{!gKAzp%1x+JC~|LEivMrl2D`dB|^J+~AM8fUh>u`BSkCnwMF9H0AleN8suW&`Cx# z1>j|0#EE0K!oGcdk?7{8q>5*5qG+6%lIrSOU3`tpo8a=&36;TZC|-U z27ifE^c+K5;qy=LQ5jmJ5~a3O!UfXF2(Y|p1|;3wvbu03pVrE_o#}38f%xeuL?CYu zSQAoFr>6(!qJy389*teT0f~sfiDLfwWRnBZagr{c#t9k+HY{_jWqYz49~&uMR?7k- zVyZWog7um^noQqr{6#t+4f@@XM5O-wUOdh%QG%rS#BE~FW?1q{t zL|Q7-vV*%yi8wsV1rw> z=@apZJV=cdjI$2NqjWK19m{Ht%F;IJ|M2*ZqBOO{<^4rAR4+-*WpzRaZ9LjMbchk% z@SB{8@P^;^IM?G0&eQORkFSp}f__JlC*r&SeA^Nn8u5i}3UA$hUg;2O2S`3Px zG{lXx$L(y-?r3Q~a79-t@)5VQ#8WyM?6^w_2Tv)9?k;7aJ*D$-VpgZ8l;n4pvNAoT zB($c>zyHU^x?UVZS$Jrm)rM#fRCB1$S48X1VdV3AOMqYwBkds@!yajFvKY52>>wIW<&SHpP${$LG|?U{IzZGg0Dw>*(nJpm`0`Pek}kau4_Q@jo- zud)uZ3uzA$0cOR70O&k!d_)M4ZDt0xmrw4ZrE0 z5m;9~A`=aQOT5g}ik|y$p)1irJjkk! z>$Hwu#B;k6bA5$L*`Sb^jm|TtQcic{6sJ2k1p~Jwj%-hF-07)qBskq@8GR*1E?jo0 z%kBieIGY?EeN0@>;K$u(yJ=d-O}_7TufYEvH-$5|djlVD;o}|n-{o6aK|dZ0z?Emo z!g*2dJXEz9Q+l}33paYm8%^B3l0EKJTz0$LG;XU^Y9Vby?1(= zI8kJ{$6bh9^uGNkk4Hs0sS$B`b5lma9-OAZ7AJaE{gbl28$@QK1AZJkvN7En49e)HuddUQYzeNM^&v%2wbs+dGw{Crc~wl+hs>+r#cMLIXDm4t0|b z)lGsY+xHB^^zdkR*=;yvo0GO=G(I$#Y?x z^R>KKCCVOW3EGv(gb4oJ2tC~JxGYT$-!ip0xXV^ox&mc9rEGPjY;~nGC^ zpne!Xk_6%GF0H1^p3+1TySx;0c*V>$elX&z`MzNw3e%*7b+VtMWCW!H)SPsy^pA#?ytSIU}kbX5yE zAL8N;TOtHAFFj#}G5;KX!>tE`wrIwzx1wz6#<9kz1Dg%kLyM2jC|z>8GgHv!;|t?- z9j!k6QoD|JA8{lbQy-+g>~cBJA@5E}nari-^awpe&Opzsz%Lu66Bie%hsZnVp}q8r zhsY`PhqmCv>7J5u7{8omTp6p`0L`Z)%QF~3Zc2eThtHH1JdrXPWyI+idj1)zEZg@4 zS1O**qK@e^M4PVBuXqgCU@oi4TwvVhrAG)dru2f=2Q@ryvW!~fE2@j4Y~IabMH)Ih zR zk^ESAK_in(&S%3*LP~&UF!nWh${B)Mp@9qmiz_hd>(xd#!Y{lqMsJ;J^wt@6^!6H5 ziTqfO-lDDKzAcTtreQQIO*EIcgU4QZeZ`DFSsZZw+j$sn_4H|q(36DIA8@L#tbkK_ z`lQL#7w$fgrVmC|Rs7TDodYNJk$aGF06g?s)v(ykKNNU06h|?T?N{O?r-~Zj!}K%J z$8(5NYvfVB=u6`VxK=1G|Co-@4vxZjpgv-DtUJwb_2QvJV|1Wg&T#ce7tJ6F0fZG< z=Jk5?fD385OB`)3A1DZZpa2gPh^^{@BBS?*7q3yiDBJT$k$8`8tA3yI2@KVlI)7+? z6<&7nbJg!AFELOt=Fg6P39&Jh;1EI`<%=8CKtrK8cNyJ9hBN4L7DMZ&v3?@#-^`O% zZ5_2Tg}YkxZ$6AN^=}r+6WPC+gA)xVSMXpajP3&ETr0>3YY{Iv=m++19Co?AX|4~6 zHYNH~j~X_aSniCAL1ggW6h~jF-i^bu%IJhCXk6)__Rxg<+>1kh=xSlV@tg(a-= zAeJz}QPr3h)zASkMx*DRF_2t!cF-o|+YP~zevbg_a!h98A5Yk?RDe?`jzC|OM-4e9 z^@RnOw~)SgRrMX+X}F;bqz>Jq;?g=q5qH2AdA2Z(4F?h_DlE~t8;=a zDw_>6*LzH}r~_zCC8a0rDK(0K5*ySDM2U_>Pf#NMTM#n|A2l8BNhHQmC7a7QJjk*P z(=XkrmpwaVS+bAHu9mWVDV55ydu<+Qi-oI6%~+7pRDK67OG;DiDV>h5nG#t_OmBeY1J*DciYnBdQbdRchT&L98 zp3>V9P{OzEqbeObrK*0m(%l&WB}&aI|AY%l>E_#0Y7qe?^0vx1bxH&6DQ#&~Gfqv3 z((O8>cza5ZML-FAmqt}45had6tNMnDLD+IBs`3~fGGY*4+KWpPnQ16%6H}ui;Nn~& z{*+Fsn?0o^4QoaQ8)ijSx^zm%Znov=o(L$NN0d(MnZxV$lrD~d()mQ`1D(<^drB2? zHA|O7luXVhr?eS*K(an7jT`1=q3e#Bp!5@*y1 z{JoFAQ~2vS-Wl~I{&wN7?L*F}`|-B~e}4SQkx}_SQkUaDBXu%z*NJxRLCi75C=e7}m~2`FbacxxEo3tQ{-P?wi-QWcSEd)c}d9V+E7bdqe#L z=xDv6jj@)z_e^_37;o~$-m>2Y9}=(@`0W2FGJGcXvd8C-nA+jfIe?Ca&s$7KPgDO9 zd>WE$f%a2Ne0Kk6#fOqQnZKjIcoQ^_{Qcch&fnjhq~-5ahsenTV#s~b4bM}#FZ#Nb z)cr??gbo|%v8oL{tM%#ik$?-vnnwc2$|@`HpNs*&=GqlGP;4$jd{q8dFS3k^SZ$mK z4?5Pf*rwJeGX@W+gRaIRs&0|h-)md_zb(~MQeJhrY=yhg^FRZAe+>=l$CQIC@-+yb z5poD%_{>3%IHRWF?_>P^hQBUAdIbKS!k-p1;13=Dml~{ZQdlkgp%u}HAYR;?6NDwl zi~Z5H^M|$pbTogM%XI!(e{k-z!Kaq~@K%KQ)W*+fC`7iu4HBlE5Af0cc6^B2-|A^v z`^#fM>$Bo4ibdpL#b*3%Q7keIe)}+Ryp{$IX@Kp0s7yN9LjeS}f!3oZiJ%^ewC2+o z(j-#aDBGPnxppDQEr^gD8D3>`o!s}CR&h1%`b9{N?51)J{*%J`LXeA%kQ}%D4@p|i z5VV$^hzvMN5UQ?}b0&XeKulAplyfHUOa&#{BY_7JsmTvH=DTaEGphY#&Zr6a`wD*- zz-sQo-@EwRgFnqa;T$_FV0(f7MFv=lc+^VSZ%zG=RwS2A7<%To#ae^IkQP+bY|Pi) zt#q{ZGLPx#MhdGxquChle>lIh!H3MU7WnMn2^yw&O~pB02lUTQIjwTRyxE(_R@V-n z4+H3E_;g@8|13TYNwz@ysU<%B1MsnF&pMmhv$Mnw2Y?D{gQ(W3@v;r#<9nrRzDiG9 z&5pYSt^cxh&7dv;w`Xl-dv>d;xz6p`2s?k%+Or7e_b3UQN;FLNWJ<#R1_lJxl-J}z z@c;%6Uu5A#V9t&9P&E59GAKBJE(d9eY;Fj0tN)0M9BXN`q!kr{R!M}k%v$>325BFG zS_(?ktaD{F-f;Q1z&6mHYnh+T{YL7C-VqBPj~RPEz3K$E zIQ!Y!mBbFVpX{Txx1Xs*D_HD^>}TJ08+mJKKc|R>z5TqT?B`|K#EOAcw z2;yM-sytMC`)W(H>S$l8%P85BSlmca;-A-px-;15X*0ag;ynyAYM z&8=Gx$vn~2d%$`wO`k2#r2ZSi*Pmh3&-Gy?kG8i259xihfjNTtIQ)InXVR)zf8SL4 zP4@Rqnn|nNwN0vYet)Dgb=A-Gj$!ed^{|eYUSG?v^!mzHri#pucVKNRHZ7z9m&!Gt z9PrB)Sbx6jCjI%^`^Ukwu>2jH5X@hdxjww0r~EO!CV#w_{P7W4p9>8W`DH$>Tv(Hl z4uJb&#jhlV0jo${yOSi9tVpFwQnWJ)?SLZE4c4vpH^|JtORF?Ht)@zu|Ie;syd0`h zUhuyL-*5r{dT4^KBH@3GBt`S(1O>kUvW7+tB>yE3>CjvGUtez0cY)5oqozuk|I=48 z|M{xY0tuR%f%q>SZ^M6}KmM%wqh~G1_-C!a|5)1Worzy@Q?E6&lDY3F zmhnoG&zn=A$9#(S6!*3tZ-2O_{eG? zp|xMeej>Ot%!tvYE7Or1i@7;#Fk(3?3CC=%*lNg2FP@piv`1|v9wOB4Y!?@WRSo53 zM1tJX<@qELhYt5AOvgLxFkPe=Nwh2I#DLJA_Fam09B6}_pfcrUM29K>Wv1etwUBOT zl*#vMqXff}}a2 z2o9_Vyqp>X-rYngUQ)`3Q*p4vi?|MuNn@tS5R*(y+2)ZP2i9Cpa!$aDj~Qu-nyw6K7Laexc95h6is zK&b>YG&z~hv{*@C*X*zFq6ks_C6#5vt^qPs0wOFUQlT;;UuC2hNHPwP;V20*X&{rV zBVA*&$Vd;CWbi(aY!X2RqdErCg<~Yr=pCe+vO9W7dgT{D*@LHDiT?b!nNUr-%snZ> zS@bc9o|O71UAYA~h}}KmzdkQnu-Hn+-dScnc_-sW#Cn>2+5d;0x`Qfg@J#h|@=_*q zrh587k_oA&rK7DL!R=#U``=~-X$)I6W{1qfwKmGO{Bxgc<%|4%3n`B;@b}H9UzfkH zgMQQfebbOpaQ>V&sPfOOHG%o_`-Uxe`_!eqd!sD?4VP|2y+&qnC00q`^HbFGJ8Jp-H4#0J zSGs)h9hVbJq5Rtt4}7t|ek%Eo`HE7?VE$oGrN2&QoHNz-gVaT&*JDdx@%z1f<7gK^ zd`=Gg>SBkfzK!Xv`s=a9p1WVl^$AOIczZpEJ0lT$E;w-Bl>x(T2EDa2+K1MmtEf2>N~ndxjL<;Emmba%z`Bg*9QIMiZ^;~%Hu z73vH(Hoc`{c#S$^A-f3_AGHROVKa#PV}I<@62Ft6C|oLxa<0j!KuYrk-mTA>DZVK; zHtQ-BYjHL+A#q?_LgKKbghY@@XxbAexp*_YY44`66r-&J!*2C2$v1ayo@oLiChM zI9?a(s!%jj#VcQE&Xp#eD@}8*Yov2s1LI-qOP9_CtCG&uMLJg(ob#K||8i%X1MvQZ z^JZkhUELYYaNbpOJ}ixq&gascuRwD?`jo_iWvPfJa0R#(H5pJ6j;PU~#Vv(~Whws( z-m5g9*WAEu#IPNN$go86=X81_3j2!UFb(^X;uXSXWyhn(Ugny*i#D;&iSsv`iB~3Z zcCI@6IFUhLFACd`&UisiK6o&1FDlp9I1D_IUK;fu!t1~PK>d4L*Rp>3F1&Q7&QEDJf3AuyZt}5S#9mTK=)4@ zdmjX{cKipwzpwjywN5Y9KQI}Ednfq^CMy5d+_RoNUCl?s;cvtf8-5pEV9&2M-{Jj$ zY|Fr#{8~JSLZR@6J)Zv_l`+}l4KLFy05)hy%T+jfsiYp3*Tx>^*weGi(stAPR zcQLt$VLw)@$+71vkRR;zuk1w==$x?p1eSk6FJGkO+15OqJVtr=>y1`_O%u~!RQjCS zIZ&Sy?8%11XYJb>KDK(a&u5yUo{-)a++GdV<=>*oe{N**OMAd7>;U|qs#W=ib$_3% z>c2T`dA&W$c?;l};w$;JIFHMk+p}=^mgxR0{e|M!hE96?(hO>4voMGn_8{@tpvzN) z(OU}CkD_>J|1iqKo?d&CWYXh*oVWqpSfk-JVW|b{_Z~eTS*Y+mdQLcg!r@gwkcW(a zAZufHhI|sAd$85Il&D(qb9mh{Bz_c7LN^*5hAwebG7bfL88q?{mmyVZqWzM^O2Z@)FR zl{P$oGZnq+V0)fh7kcv)J$JCYd3B)|r^y@4->I|fAn%sfLdKW3>Oya}qL&)X-;lb{ zTd3$&1k;PJ3q6OT=MIhs%Nx}JzY66a>B02w4NK2D-ihH`+K(2)gGK5~&E8uQUA_*{ z3!t8J7Mg{kMdJeak2B%=MJuWmQMPt{rU`XPUwTTxP zhdx1>s@Ite&cH*WPb&PB{S95n({G^4o{b(iZL5 z(g!s85}LB{aWTc6MSZX;-#K~0TunSxb7Cw>U7?|YHyZgRzZe&x>dnCJcPqxW@wrMw zA9GRWaPwU;%wZfssBx&j#9W!YC?=|A{-VL(wa6$Wf4{;|br_hx7UKf>Ln0kj7091M zylXBh`OA_BhTyO8;j_S>+N;@WW0rkNX-~*ben1&re2wsC{p_a~IxDBwbMFrJt)s)BgRWJ;!1hOFT)hceR-jt z5?GN#ZR6~qZ$J6&Nm+(Tv&Fy_d)|F6_q=-{WiOq3W8dwmriHSuW24#$B%*-CK78a_ zD(yOwz?1cn4#k6$35sgi6yEINmv=ylb%yT}dxycMc8yK(<%|-i8U~d7^$oMOS#iF+ za`E5S{n-D%FDB6jVMZ-$GbRmjoVN!PhnP?6kMkjWFadyC>mQcU z2#@$Zj)1`4(S#xP7THd&*}IhHPT=x`R$+&5{rLsLw8~iN@F1lQEk&FixDih`(>mmZGLTP$fc6z#K@Z`l(|ft_r9>3-xcG zuj-GT{~3%PlYO+=IlTvu2_IN+tlD}9VHa1$!*~ebn)$GBVS^u6{Xqj8{9dxbFKDk_ z30<*W`ALrk;~%2@HFo9Su_=kRg|b_2vwG>-5(Wx_`}_~ryYu8hgKgeAEtUEHpQxYmd-xLu9Z zwX_MWn^7I@kCYbI5#`I+voHvH>& zCzIImsu<&qz#HG5*^NVL5{LUhI|(6JJEpIYJFpN`eL&Blf9YZ+zWo8{@pUff!tF{@ z&|hGIo`*DS@aIr5CB}yTgtAENo&7D-uKbLM%5(iOcI6L6RG#Z!UC)O9`={9RpNs~4 z85i@ZVvK(;;Q#ycsbudu75d2%q^T_7vvuxzQ>M?uyt>wA?DR$*&OpByE>o3!;{EhBN z$}|5lcIEGnsJzsFw2k};o=EEF_I8S0`THX(UqJfHv@7qAsC*&o->&@q-bnao{jH9& zk^ibEA}P=OPq8iUi==!J%WqfyP(_`iDR$*& z%#5VG)W2PM|5K5apG@_~*p;6&%f39vuT(0w@w5~hsqGeOvil>$>hm;(u(Mp=FI?r_ zBAHG5A>~($SlaJBA^5k( zADRdeF?Qt-Jsm86xP0mJQ$WL%@BRyDjG0AfaQn|+)k(yw>6TALBia3S?@wWqOg(z@ z`Z&usEYOfF1gavFst#=b{m(_rKj}vJ|F-f^`EothCissX{eA@baxNaKWxiZZRZpR+ z1NlERJDC6Ad^ertw=2Jy*Lqp|E5YSQQTZ6V@}JL%r2ffNe)UNk{@curq&!1E#jgCG z$jfKimGAvh#P!G6m7g>};_|Cc*vS7mI?sXq#bErU{C4GES`=~lOuO=v-i)|>j9vMw z-j2BZ>f<)@C%hAJ`6+hg4@F)+)2{qg??zmIj9vLQ??qgGb+wKBlOiua#jd;`3&SI{ zpG>>*dp?Y~e2iWB&zD48e)V5A^1t&@#O0^hl~3T0=F}9w*ncwZ%6}et`53$Mo9RnN zXoAh-Jt6#e^`AEKPx>U{@>A@}zw>Fti0nTy#ewE z=RX+6JgyPRAvBf}5t#-tjvbIZ6i=6Fkj~Yb~I4` z6HY~|ITbnH8z{fa=Smi9R56zSYS`!gCp7tG2f%h1$uLmks0RIZB5x?5+D!J<9QO5s zSK1d|sS~2e?+;~1HPFu{`>j4=rQZ(p+p|FRhGY98xU(-OQM}xX0)sCnSZr#1>%Wi$R{;;%$ZR23Qgb*-n( znHl_rvfnh(EvWpi*vQKx{v8U$XJi9w`S9`YCUT;sM8ssDWIw+?#`ei`4g7K{&G-&S z@W<>Bj3`Yk7!GryxjIajU_vTH__JFNWwsxVzv%(>Q~Z6?E&U@*{5^v2+WZ6YH&rY> zXqBJpzs950F9SjbMg(ZG@%pbAl+0=xU*$aUy@i;#Vk6{Tj&6*(JgGPY8Y{6F;8>QMe${qJdiQ;}G`- zQTrrPe$bw!i4H;K&u(tvCNv%wEfXY9RaGD&J8!Hjz6D}#5VfjE<+*4X4-^gxqHxP2 z77f(`-+U1tL~YJR5#qyZFgE@Yh)zzX1)b3NqI|ya1(n}*N#ykxh`gZk>oL_In6HPh zS04B~JBWgZXMOaH-v&=}{+Ge|f2D+hmd5^n`jt7>oIF0_2WCrR8JRDQipd9yuofALyXjO~&7i`^b!d&JSA zx&K^$ag^AI&pBG#TW^Qj$ma_xKPTUUc36B8MP5+(u2)80f0~F7D&I2F^2%P;?+--a zmOCsG)WTj0#Ka(K6C&jY_L45T1(hGvF+w~pTDFw@`{Yl7@_4ScP^dv3%OX9Ocr%FH ztyte@3eZ+^!ST;RuS5(EqW4|5FmTsEZ?zPmT};)~RBG+N~3 z-AQ{h^sH_Xb&U3ANXOm`sZq|Qw1N>|kXZBvt!|>Fow4WObqrV8D)gZ6gsW>sackPq zAk|g&aEc?*m5_nsTz>r=10xkp*Z9|DpeWXXV)+xct&%&%fe?KwzVt*CMlK#`PCL)x z-STQzyOpl871g}kXp&g42l}L41ZXAL!5?u_wmKgh5x#Q;@3g}HWs&FRg#ISqX|kd>kErxg7lRzjds5h zhjuq$zWjgK^EGmz#@F%$$ya(Le9gqeR=y&(qgG-Nc+&0Y)qQkA(88Fo&)Ds$+O|DB zz7mZ8sa6*J$w@8_A>8!WG~xC(k-|mfB=6&4t8ldh{h{wA=#T$y5Bi_4YJ9mAUultm z-ZF@lvMd-(=6|RQ$9j zZ9IKUliK0N%HB+0j~F<>iT`Rc_lsv;VDB{P0M(%b)@E@T9$wQEMfHFcxh@9NZ2ZCR zq%KY$)wr?-(%W^uK5Z=d!qzDqNW=0q0}t1guhrz31HhN({mD37Q#J+vgroKr1B5N|NFpz!*u zAS~=Iff+elC^O2criJIUB|cjbnaz+Rte`C6aF4A}M)TzYGMc;!k$kq)O_Ix(RY4fE zaQXUIxXLCTrWUS$MXonX5D3+cG_~|UtafFjaG6(OYTfLk>1ZW7&FG@vOz|Hp!>x#`Q06_fr zTZzqwhb-8{NNa7Waq}Q*(Tz1cJUMk{s2MSIE*Nro-Y0WiQ?>&C!-dxJ$p$(pFQY+@ z6?ff?yF2It8Cmr~JLZSZS5PjClgwA(@fy&ajz?txsI8?9ps+OX8;Rz>Z5i4)Pcf9L z7~&05!=rhsL0uX864Ht_UsF6v1#fH0+T(wmr18l$bb@%)aSO#G_~MS+WjLZ;VMB+b zAFTMqJ%G6!EgD(e(KZ-eC9VZO2u6jdgo06CH6@+n5us$VfOkF6E>ToLKpL`2v`eOd z)Rz9&{)LK14|9vQq`4^+9VgrP{#T1_D5t;aC8dhF_1QKspw4=zun$4&#aKKivxnLm z##fM4+^|C$MlV}#K7CPflc2akBT4}=BsV|D)|H#0hs}!(R~ZpU3-J9q%IzP~V1K7QCY$1ir5-d>QBeKYTmJ zq5fQ|pZ%=^e|W9>tbf?P2I}&5JPiB#{yVL{vT6zg)f5J*;~&04f9&pqmmx}Q7Vnv! zjGx$w9*6p)Yp4F2<4*^@;v>J2{hwj2HQJjY==>A>xSIh*)EN?RELy z^+UeFMt$cao)ov}b|d{nY-Kgp=g{jrQXlgDTA|x_=^FHpUO$1LI<|S~ajv%JU|wT= zH|q6mC3}9D>SKG3eFfE(RmYAye_1;q8)4f~V|_-vc$egBtk>6}&;Lt&HtJhR^}X<| zCSQlXT;D(KuSR{WzxGCbl){(&2jKhda9!V-agx^^nr&(NeqTOA^32;N z@tuq@1GWjxpJvEsYOC++Q33q)H2C?Tf#fGMke^Eoe)cM!58oERkN>VZ>ANV9pN}LR z()ZKnOMX7kY+b`=mVAcrnY>lvQy9q4{dMD~;{E`9E;I2{U-FX@$WJ|kpLyR(ezp__ z;Irq>I^p9A9`?rWw3ZSZudY4o4T@ zedke$+4vBq_bA6{*J9D5-F6IJ&^9!i#4lfM#~!rJ7ohh?rxP-^`#Wu;qbG4h1KBPt zKiq#2V8pt>d>nUa(^{=r@L?eiE*8*qE{$1XD->E9>udg9A|3&WA4VGWT-<|>dG>bP zwWwo7t`FY>$o38bZ)1|Oy+88C+&mxSFy@DOKXforknKIJ_Ss<)Q?6jj*rsN)NR<-o zJ1#p8%eqSmHjB+T;`h6;FGUlGEAG1*pDnLI(})dTxTr4+&+d|3?dy!DnODu{yKHtQ zSM4348v%bmU2gE_UdISK6@M4#{9T2kTwm|2V=LQ>a+lz`N9JC>v3@ku1kX@#BqBj*a3tj%Y7t+Pcbx&4)%He9=xq`Ph%hx3v|Hi{XTCWgt%{WeyW;O~3QUXZOvyr64BxG6mbb0~G;q{uqhDMWAxi~II=DAVi!h{tH^RG6e zkeuxunF`NNgJ-L~iAb-t!{fzE4LrK9VLVR$L3-UNw%?%PQHdin9v7@O@YwxLFdlJ% zc(|V-?QRrl$P^$;Z>+#4WKDR$#tF%wk_VPxdH^N=L}N=xrgBM_FaGO9vM>5Tj4%Gk z(UyD+oiMKO6f3Sf-jGxlGZl&J?=V({Yj(#7aMgUq-d{9Z!*n5f3`byVi$(XgjP2JH zK@Y5EY+w3aM$mEHB(|G{4@WLvFWB0{+zxa*VZ?xSur(41a;X>)6Nv01eaX@`i*L}_ zLYiJMc}XXBg+XWMra(GD7W++oNoP9ILA>_%N~XPrnj?75xrJ_hE8ZWY0w=zb)(h+Q zjm;VEyk(1nX zhf&vbn75MY#|{B9899mOTl5=ge)7{rTnjhh?v*T&^N94W3zS5g#Z@@c8vgBc z{-ZDj#amDC79umT$JgZV_==14_nRe0F!S}|&lSwkI~b9r(`j8K#_Ppg97%tt%?W+6 z@sz3q*L)mzTyL>Izqj0`ZMi0j>~FpJ={9f=_e^O<=h*$MSCUwP#t*qy3NE+OFQftQI!3BcC$}Zyb__ z_Gr3hXtQy|i2@qb+&`!>q5T(q9o8}c_fUo#D)If}S!rbZ3#lGToMd4%C{zmZ&n{hV z$<4?n@eY@gY56hOhEl%^*}5fN*4%9Z8rUD5Lrt%DZeTEi^3!{eql1}33cp2pD&>G# z&{E2OwLwMM(#L=Jj3N1phu}Ag`>&IbY!p-J2ywRuzNOhC5qsIu=XqBiuSbzIJ-gis z*UIX8uCA*dya!6m_BO5%t1pH*S3}#KTz=%#LFKycd|<81HvkLzHj3(h?eHrGPLU-eh7FvEKb3>ENLy(w$7o7@{akH3@BdvXYCc%iUM=B|Q;f`G>vp@JZnf+#Qa0u5!U72)o zTepCSmJGjACOsAjyQOi}qHSdIJa(ZW&lOUhAFHH1pHRPo<=KiO*+GtlDq8L{xroE6tPy~(w7>Gp>-_1$wy)76u&gGhZ%&2`;DGlRg z>YlJ+EX9#Isa?9;FpO);0}Uf6shvAR8b89E1t&tv23XKn$zLuKbLpcU?WJr+gnSA zDV0ucNJjImDA3AMDxFUu{(RhRr0zbh$`;qJYKm=NWwX6mWRTyfk(B3B0z4sfgGK%j zdH;BN604VU=&P5qdaHgW^==fa(xiGfik&zz=g`N0Hq_hvOHzy8XW<+=NWuL$nr#%x zx3FTcuc_*3Z(eHjEL*+LB0mLvn8~LH0avd^JmR9xHpR1KV-OD?w9s_ zjQS%8R~tn`^tN<+#&}Qm62l6gdChEvo!Fj(?C{RNq&?*iV1at3MQDfVs$3G6lXf^5 z&ZR(k7rAteb_hKBJNr5Nvyc0V=3`sxy$JYNEq%T*6gCPTR)XHOo~h@x5ev>`XgE{v z`2j;y_!B{c_78mm)&Aj#TCr5LT>nF+j@_N7<@!3bSwW*d_uvDk+=yk(Ky}Yi6PDF! z9Su+7dh>t(NuX>JyGXcPU)$|_TcXUJxaS%B8c;rl-es<5;ybW!7e+F3J!4;z2|TvN z#-7?bwJcn2evXjM?Q|yQx$7km*$kd~NuIvV_1s&I(g*-qdrS3go!&aak;MWXky=-6!Z#1wNh#Qlh z?VaFI19HwG&cQ>FnnyBUa9%S*86UsL${6!Msf--zoNzL78;-ck1Ht#3a;kK;$4<#{yrJ# z#-raM1KkW9F$e2KOcR<~2gY7nZ7tfi2nZIL28aJavK^wg&f}l8>95XhY5?z)Y@XOF zf!~I%f&^aRh=GT#UXQsxt-m@m7Ivk2o*2Qi>v^`CDS_{NGu0E+Uqz&_D|L+Xk4?hg z$KWmluBcQr8`-%-`ftw52wmf%ea&@^i!}nh2qUfK!g6kvImU zR!F#z)YpuJ^#9QD%$(-*Xu>eC_y6)1!?0kt^!^FdG2w2)lhkoh3C7ocBf;4BU5)YV ztXTxZX7NKW76RXhS9J1zH0U@#BRKV3)UFTu>>)|#Sw#meflPSXnz}5`j|1rhB|PWM zk#u@79RfHfU)7MskyQ7+sf6+vw;i98ubZM!16VgEz?$?%Ipg zAo)eg2PSU8XC;I=<;pso>&x1LmigG+R!nS9E=$rIpZ@?2Dy&Kw-37hODph8YDpL?a znRiNMJ>z7VX_L`3S&LZv}2+Fvd6` zEzf%gatEHs8)6=Ar1`v>+B0+id}AXv3+|tfeuI&};ydYhXHmC?9WMz-=KguoCc|l- z{-{P{KQ&1j`)xTal+iy=dtZ-bt?vAQ=!ETMFH>|bP;?^ipHEXI_uK>yto`%C_lUV~ z#qWRl{oDiBr>m%sec~N?_fo8qrMm%r>^)?hs*l|XT?dPY+BdQh=tuWkv=1E`vVPcY zw=QJ;JYFH)_IC7vq}!I@NNXQ9ATVm}Yw{_=H0=2JPDW;v_%fU7iL`xvO_iEqUn)fV zI#!jsg-gj+WiCuh#g?PUX$?z9B54a?WmoJCpmnD4TRG?)>-ijv2%7JYOtqfxy25%s zp}qCI<(1a+k!jZRL7lDVC$F`hx9k#d-qmu>>*II~FOB1(H}<_f|B7;TT1_oaq09T7 zw@=*EZ3$BjB6O6Uh)$S-FH7-DgR7SC%TL&p0k00H<9$%b9fjDo=xrz&V~y#ebjz3i znHU^Q9tIY3eet8a(YKKB@W-?_8%+XjMkbu=ZDx8VPkRP0^Lp1i{Wr&9zc#$(oX_vA zYHvBG*ZAV<9MmAS3>6%uB$DqKQNAcG2f2=i)o&HV(kg{K(KYBBi z71;?~(;I##J_u0cxuhLm^M`)d6uEShQsg<;vmzIE4OC=(Wb{gr>X|9pGiRvCmr0Q~ zzQBsSloaXWuThN`3*OiCx$ca&n5STDBp zuynegSccDX)mbL;6(IYYml6elMN zbkVZW^vG5^>u@K`_BhiWa*Qmi8u>#7RP)?^l6aGNDU+iWjgXDq%cYS=AnQ0xQ?CJK zMyfI+RT+$pjopi$_(@uf>cNZRzSyM2gam3(6l9vH*ZQ043tp}$q;ajjZp+a8D%LN3 zhDSnl3Ua7Pr_fUI@Ny z&JPZ~=Lw7<4Hz9B5{g8g+{hX4nCA|VZBf9ET1+DMV4{Q;DBHb`5-5Zi^b$P(_= z6%qi-L`7k@Q(A&U+EQoVd}3p)2vf9&D*Cc2S|k-2woD6E<~~`*Yf|LN^@``v%>ML0 z34WR?O(9fP3cLW6W^@4_cYL2LcHF@-^1zT(eC%UbiB3)jZ(s0cSj#Q(Ng^L8B3ld- zyoguqfJkV&zgBVnpeoI;@U!!Dt_QhmK>8jfK)Nc;@7uH2gax~cDi*DZ(d+Y4z1=pw zqI+x=3_c9!)qADfpUMSSUV80bVvZOYTHr5Lv8k#Uzm5-(S!?Z=&1e5-=+{24L` zv;ShmAMHng_jOgg4I|#rhn10>S|1HreY#4I-Dj&Z?Nph9AZ-MfX}3oz@vm-N&y2~s z*%Z7=zSnoyO(=7d!0}4{XLOHnbLdpu_*&BP;4wZ~eN#Qn!mRxMbm_T;i z)O86{UOx-DSS6COFJRq#unWcbU?m+K$E~;Vb~UAGeHW=Tt;CHDWHNmj4Uq`^Fb_x} z*)9_2eyMV_*ci^yVy>1sT9L1B0~%?%6XV&r-t#HdR!{t|qk4iew9PWrp1OkD9q-dA zlTknA+zF3%00U}!t)d$9?zVVX%zUarROO$L&E>s0kt#p`!~Oos{e0nWTo{Y*0sJ}k zQeQ8Z`0W{_XUL;@BSlOVuN657l-KcBRgb~M;%Lx^C4BG1HZs=c4{RdEZWcE`&)v_F zUtPwhKSDq`JaC*u^~K)G28*6*uSD^x;FV?FaXGK-SV~}q}y>^ zN;gGOE&dNn=UXSGi`AuTDW$vT22G4au@oH{uuRf*d|bPnETV0s>xSN_lJ0q~NlN$N zR$V&U*#y%4y+KO%1WmJ5wh5MQl<0^x1XkU(=^R43KdYs5&nl|V&SvS}Su3Tx46_(g zcinKL4edA(sas)qnd(5tD|X$Na$Gf?vh{rI;B8E)7jVB4Y%f<8OvRchMBUh|ZWjO%n6A|?yTn8CG8sXEW(4P5qQf+XDH2RYqW2btDF$CpPDEvE*Gr6wc=n5pba_2F zxATN_cXTLs%>qjJIP3~?sM6IGDCpy`V#aseW8m@9Lh41z{adZ#>E@h=4adS5vGd%2tY0zRB8ySX=0Y(O{n`O$LWbHbD< zC|Oy`szitQYW>M{_2j(!wI^?-CkJXz7X4SF*;+mMSYPc)YL_cJXir{=4+_cJW7Lxm zPtcyMPfyYw70hR*Ui&XENj_hGKzs6gU{tx2@S=`;i`O)oThx=)cWY0+M^9=a5*=R+ z=*VJ9j!gM=D#jxchdx(9atK!6VMJn2`@oKDw|KoHtDgBpd&bm})xxAUE}`u>mu`xW zwmbM-EQ);%qU3Nx0Sz}Se^Oem+n!W@iz>A9{jzJzuoww z@$7+^FsC7H%XGP44QnUit&wDyPt`_cK3Ukb@+d|H*?w9jOk14DsH|Eo?Pqna#eP1; zC#|FgyL0aNjrgjkhIY%QKsyQlv0k?6PbRA;7iViv(x*Nu4^l;>!Bl)Ej6PY76#~Az z2BPwJ84R@i*z+_8gYK&-7;F+PpaMCLn1&-X0UyElr&e*h|2Yo76Huoo>m4j!N9Q@K z97Fn>VO7v4U28t+J2IzDqO3DVfX*#fa+*N5+$yhI%9C8gN|UJV{>n_|lLmXn&OlG> zmo+zle%^C9yq_$`lQ#|3yo73AqiT4GK-M&n%U0x;T}vVIbOK4MQ+dUpa(P%P%@ma} zOl2uk0cQRFW5MjhV-mAJ_Dbpc&tlA)tdf`=I9tQ)Zyaf#TD}m7i#aDbW+h@AjU>L% zzs+BHGu7g2zEBZc$g^E^_w;Gpy+-39&B{YZ#Y3qow)H9I;qfmd54Y<)l;8-lH=3Wr z92&l!J~itsv^&Kb7tc~X8)(Yh*ZgWl?qZ#b61w{~-6iY!1s|z1SNh zC@#Lo1cJ1lqd1bwV%UP3eI_l4#to+M{LDL0EtU`K%}CZ}WkMzN;tEX2(Mg(6#b>$+ zJ+nvN8Vl1zG6Klfp8~Vd8ner-%$`0XnY~XHd+|wzY~V@>*;P8TSypCy?9`dvUKXC& z&9nmWwZLBfdnwaeuuaKQ-WwwuEcB@LikIZCd-&i4;eH26g64}`} zQhxaxubs;xzwA!q9HITPXJHHGv#O)yvuwEzYN4tyS?BY?zrp95jTN6RE1$0)mY{Y~ z#j+)zXDL3vi_`c#j3dQomci%qG^i7r&l|sycxEU*cYUh!xpud_MfNR~zv(3SjM4av zVm@hz`E7pk8*$$aT14D~`OC`hc@h&geV$dKZx2a{CaDU>&0yryK9|VH=@PXjiTKsN zu^(aVpv{-m=^OhwZ2H`JJZNLsv>J@iY&0Hcp=e=a+63eqV zK(D3Om>@H)N2FwMsUDD$M86H340gulclFDuqMN*o&7zy1*d_v`Vc^>3Z zv2+Wa*Vp8G)GA*+CEqGVW`U388@yb~cTIgwzMF8wliUcC2mi1H>-(vK|6)BY*qNZ{ zoP-HTcKXoWX>^yuv81rp3KGzIC=c) z#!BsV4aDoNGqv|Px^7N*EQjmDgmB|(k;$BnO?UarZHjiSeqarF{#LccJ$0Vvq9ahb zJx+(vN9U_>&N6(?5RwDE&LzJQt-5Ot^dcUroTEMYwH54Vf0fccqAI-h2?qPnCsNw- z7){#UIFjvr?6x0tL%M1ij|ZVq=afQk>y;g)(aQj^qqGhLJplIhP8SQ{^`;hW^Qm@_cHTWE9M*N%qJ7`()(w?`!8C_ z-v1oD|GXF2`wdS}-miJW8(&F|?rX10kSt1%S&Z#0;xS!H&_l5@9kwYY_~}pFZNU=g zInIjZdZv^`?=^+Yl>8O4`WXaZ<&OFahb>kdw*De<*sY!({W#-r#m7>KXQ68)+n*#H zDI6$nb@^D2TLYdWHcW9#4d`oe>vc~*)*mDK3;TcQWzqj9S7UCFG<3 z0OYU5DzG|P!Fr`qg7v8?mg!-zPA!#SeI2cVRfQvy(fo=u2sM(?>_d>Za2a4U{5~Jd zz6)^)64XvWG?X=q7EmaL-ho4*7*&X-nJ8>OjivF>42A7?pJ62#=qM#==uCZ3l2~~; z)vMfX$6<@H_D3J0(u<)kAh%4l*!y4>61nT>?!9!EBI7!1thif9J_X7( zAep&N6?^V6W+q=Tld3aw12H2FrmR9Yn3?Z~4bLBrl*l}J86(3GQ+$m6R5$fM5uUzO0IS_RMv^$2NwC%Ci`EA%5Wa*AyYg!q0`WC( zM{jGxQQE;jrPY?w-H)^Zk_FFN(xngfO9*3Bv3^q-!uSuRKKCQBm-;-3Bc;#7q)%V- zt=nZyD`C&Frt_($Jgufmu8CURkNC-N#I(U$t4nh?m2I^r@8=jqPtH|Owi>QINec`r zPvSqe#t*s6Pft!#Pd3wscWB?~O5U%P>~_8WXXy9z{Q;@ydwN-0`}@j1W=YJs3ranVRxw7{g50WvJ+Z zP$EgBGKdfv4MwAf-qFLEP@?iE=Ko!L?S1w+=iV9azxaH{IcME{zI&~;*Is+?wfEWE zor|srX|XN6L&LCIYh-BWj}{#NzJ@|OT`O)vlO^;7 z?%zPHH1q(tvqOAHD*j%=U-ypjAwK*a#NU8e#C-7gRHyimcDKcce22f8aq%JR z@VDF@ACeg#A5yM!d`KStPT}v(F7Y9cbd3+$fWIHR#fMz$!S4z2A#?HfNssuDPCes8 zlJPeWfA8Us=AA_RQLO)oQBxN=LSyAuZ8qbN!}U6#O0Wg7d}I?+QL${EC!=n?u?{E> z>ws#~>%NGqC=!jRTb%LuYFRWnSR#a|+vvI+b&Hc_lW*)sPgX7;k!iZBGy$V-19@iR z1ImdH{)n>_QQ)oY*CVm<*W;L(m_@I79}o9<(c42X90&WP8TU=Di0UmTBE-SOjdH}n ztlh(4#4WO^3gIjDJY#bkw$2pKF^?6c;l?b=p`IVk|K@3&&$3LM(`^|iwTxx;(HeRi z!D3MaScQae;HaH)WeLv`iuoq7f0HF*yhKP;{_I9;iJg}#w`e0xTZvVg>nJg-^Q97N zPctK;#CETeCAJK44V2i1I`$GPFe1=zm(xiy&C@DPfa#=u_&8h4C3PiFa=9he4vCE} zX(+L3^cp#fhn^v)cu39(#TkpgXRr7W85`z=I;9J*c;-#=irC)?T#{ETFn+?F+Ue

    oqhT$nVTht);;Pxkv!EHRQ02*D zV(3h2F?AJQm$>trx{5Q-e8+6QFU+XGSnwpbf0E5+CYzlEo0x3aZ=60XocApGN;zVO zOXn_(7c4gO1n~izSwf7G&Cu*Z%N=SxlHBdfVlA?Mf3(47En;5MoMh++jYCa~*K8?v zduOGm-w_{@P&Tjlu*VyZjxx?rLUeTdI_m!OqPVW4wNe*Rb)L>e`>?Q)IS==V57~^rpYZ4E8z0ghfA``~t!XH^ zed+Oz)&A5vQ@{3Q&@6|yLJW=6bqy7m@K$wSmFkMdCO%MCrJ8ncm2ZqfPg%AvGR;pl zWSY|2m+h3(<$9}iNNmiX0B`jay=HG;;*4^Sv9}Nt-Q2#c)9pg1X=Ht(eHqk;4KStK zv2G5OWMk{2PL%gHm8IjuMJr`YHBolO@mfe*>(ZNeu(vLiw%S^k()t50tiP=Cdi^O! zdCAu0Sh^~&(XYtzTHIQc*Im_}<+TC*Q(0azOGu&5VAjPE9v@Piwjw z3B%>}qSSPN@`^U9`Js$?Q2_@8wS?Zbm)BkIIm#>1`?c`!3A;Pf_Bq7~ z*@GezvL{4&yyc75nFWT08|Sg=gqLz}hW8Uofs@q@wXdR!@HR}BT-485su1C#;;`5R zN2Et=pMtMRd_D7wmCIxS-q%tT;BzinfO4(LS%kBtcakX{RVe~`C)qi809;&lbsLJr zM$>U9K3d1@@#4@eZ#U7MYfR_fK8uQIcIU8_SDw*$6^@TDi!iY#yBl@sewa+kM^l?; z9O|Kb{!z$Z^rNW1Ho#<~iyz=L^bf6o(==eamI`n_0Y2>y7-^gy@8qygt{t$U27L4` z=@b%^+t2NgM0{@qd1aVZ@DQyX^ukyZkt3R7Z_pqUM`1w5Xm%L ziGgg6FM6wxY|Ua{xeoivelxIr(N3SjzWmH;&Wr$N^#ZsOX4PkjG^=}C3A1un zwVTyagtVnu$rKG#iqgy~G8nU}LS}VfEX?Y#f1yPio!~FbKA$kFdN0@uZRbSOtop<# zD|nWyV4eV^;3=2gw3WK-Dv;+cwe0Q_xCKTczIe+y*4=6Z?JYoC$T5`)R8s<#B_N9t zw1#K_jKJ7ncQ{yopx3*_376x^9;g-_Jo<(-iRn$!g}A3$7jvJoqHE@BR1m(192@mRB1(y3X3U;AzLYzxBV@`Oa3VMJ zIe}7+Qz=_!Qc4U~#NIo@jo%OQDB$@uO#y}db0>&Vz^a$|u@UAlID`{}JNjAx-;$Jn z?=6Zz(MO=Z@>xrG0aP?^TR^L#5YFh0{7`ZTt`bKHz$q z8;vFppreXe{8>%XNepImQ z-+cUaAA)!ZtWxz|=~{CC^{G{+`vadP_FrF|s(hY|k01y_)nFo(l<2?S^`caw(M%{Y z0q0bZ5_NoJ1wz)cKP1y!r_%hl{h`m21NVpGj4op=&6ViC7B1C2nPrcW*@^z^>vF~} zKz}IGxcHzGrOLA!rJqLmsWtmfTYo5rc(C_}64u+@6Sr5q9ydUj=(Clkf8udHEytCM zamDctwBq(X6cBZS4nHYNE)6A@jL4RZIer22M}u|1Sn|9qIPADU)}Mm|IH=%~rS)UK zGX%b6lO@xPQE37+S=Lpz6#S5#p-Zp2ZHdIj)uT{$Vu?PDmfK8}&IfZ_v_3ecfSpej zs=Md|)OuJrpM8tT`4kw-FY;^lyArliS=sS9Xb7y?v6Z0YAv-FaeoRI@)lZ3 zS2R~(*?PmL4DsMWR2mHOIzv~=NJ^xBzd$^48)clDK!>9_wxC`Qoj_<%{rD4ptRTze+jNLF+ z9x)9=rnp|ED9tc}A5VRL4-6x~cq-E9I+6=hgfB$L_l^T)ZG|~e=w1|N7wFc~dhw4d}G@inG3_rk@Z`c7hjwkC79FCO3?G(p&>eq$35{yT^ zE#2G(3cvy*m)5OW%*_BR0nBaDYP-L2+E@E!f$eLA@;83tsoNfRm{oO{)%ZuGS%p3= z&1yM52}kqvdvQ~nzv+YExon(diUO6QG_$H3jK8T${w94m%<720kHC7Td!1JBHGI6) zM?5pmEVQYz&|K3?vVv%1kssh72ViRrIPUhqPRDpbTfrEz!cv`1;lsos&ZDbrw}K;J zC4dzySY>lM7JuU$U*E7Kusu{Hd!SG8RkIWGn8OSxTJtj465i!}jx>X=F~SUfxnMVg z9^aZ~AXDV26s4H~wb7Ryt)VWJ@%T`fLBOWs=m=+1@slH3v+E(#49=HOYOS8vrS>lB zK38q#Va0WFHieVb`UFA#%7aM#>#_0j#gs>^FC81C$amYwT@<;qjeL_L-)JM( zR^$k3Za(<1uy|9tV5Y#h_AV62?#{$u$nMTzyyk@@&Da?|?1KRhVSNeya`3kTe_QeQ zDgKV*kIzTLa3czl?vI`+8;?-A*$o`Ao;c)mN*^=?8l*Sqn}+*xtWvU)T_ zvS_y}yf^(fFwX6&9v6)_=*AO=SEBJs9Fq5TyWaKm#yh>Udi2IS1L+<5Z(uULGZ634 zjVBrJ48%LhcqfhCNy9s7Sv}HR;nS!%@J5cjK1X9typvAPuJEViV-{Uq)#nLn^%um` zyVI6{2)Hb9%}S?B)>HJqZ96TBN2%SxO_P@EMevOv?O*oPaIDcw=#ZCEJHdM(AtNm^ ze07@F`@3<>750WbxkJc zJfxXy9hk{~r@u8bE&2;({%V{HpudsV3f89lq4f91Sk2mVyRVe~s#*CPv4-{ccL4re zT?BvM(g8D~O#evH{GEksAs74Km+wO}Ec)C2hTyM8ApRP375sHF`RixlZ{QW?d2=| z%Ukt?5;vYyO1$|2&E&xk0y6pU{7Ww@e@j=f{sNV6LN~$MwI*wA9?`7D1ZGW4Yy3O@ z)=abLFO>P4=dV9^?kf!he^cn}9ASUYjMMx*wTIJ3I4vN zgKPwU{gO3*XSZJ|{vMiY(cku!g1^GQ{Or%2`zx1kCzHRoM``{BUNQdmr(5`I$o!2D z#NUkWLVt@-DE-y4@Rz&oO6jkKmA|PgSbyY0?Df~3TaNAT;&GEdOV=Rsit#u5NsImt zzbg1!MLgK~ll~=_zED9N*krQceqG2D-Vdn6e^-Bhonqn7&HM%Mf9~AtJ%Y8ZbfS!? zA8jnG9oia@wf~_0_OkM~bh*&qc=923{kd~@)EE3+Yx4KZeOh%fSB$?klP&rSW&R2S z^$+q{e^cmO9ihKJ?$!J~x8+LdubP#=5w8gSwW2!e)L+EaLVw>DDgOFd_&fXFmE!NA zNf!NWf0^qqm7$$KSwF6d6il`^nSApet;9P5Gx_i8$Nq^H{u(lWt*DP@=g*xxIYF?t z*iia=d$eXPck`9fUkfXLQqQ6k)uP~5*?vW^1n?i@xu>TvXS$i(`O6jkf zmA?@$3H?1lJUGku0zza^-M2rQ{8`$!vm34ye-Axo(ckvPTz|>EIr-~@U4Ow}CzHQ^ z7XAiaG5+>HYT>UT^Y;Mp;N>eS_#3MEv$Vfy?_4SU{hDIo&&~YJ3sk-* zxar+`Sn2N*OVfMk?JLD!FDrjbUljTqPc~+^KiNO%TvaHsuF2#aoOh=RxpiPB|E2$% zV9{SF^Vc^}`|%go-zix2#s2RZOZ)rW`jYi$-QNq__o`TG*CjlAA$IV^NmwVbpg+<3 zJN7HM23aI#FYAqP4g={fLFeeH6m>GqiGR{W0G7sZdpXYBQtxH8{v}+7~ z&bEyXy3RA+*>tg3%-}xZ>a%EzwAJaN>D3qP(rL9D!4`h)RVjY{eHtk4{HTICWDUG2Z>W_P| zlUFT}V%I|nuFRv5bz?aGGoI?~CvErFt}yiYG+V`c=wT8x->BUKC7i((Z;C5(4H)!!<{8Ct5D2c!)A}zGNYuQZZ?Y|Z2r4eV?|^J)fhS5zV4ASA=wqNv^uj7 zRU@C5YtwGjrVk%tK6~v&fz+Ye)Cx)5xl@sCQ3P&d7lCD0=3DrmYf%@KvxW8OH5S%) zcja0n*w1pXk8g5@8=(rqWd7#KB{JV-oMQeN;R-CwSCY)n%~#B)3Rf_Tm>)92m=_g7F#oh*J}KN7*HjL76_Vn(bxIz+&73TTHF=89RIm8)A2u>->z7vuAW}$nT=plyaRrHy0?!uG)l1B3RojAoGn$@IO?klsoZYcj!0|jvw!>4xqw>yNHDG zf7bS#_v>5&JZvVpp`-@A$07d)y|yr}0%L1e)u6|228=874gAjNnm@jryZF(S|>mYb5qRkguC{v+?b6MF)BWa4a*~v53`^2EIniu0W3Eu3A*G zmS%daDA@wzPnzNs&GfBE;?9jmo<;R>8@omDO<&70-^V)m@ttPl+txg{^XEOlDKm_5bq;!8~d){J=f&@W=qDxt!$k~Mp;5b z8xI`O&_;H(G_*&JjX9#vQ285}V0PD|XlR?Fmvl2v!gHVDsL@X~v`3A*Ft5Q4?U(qL z#HRjVA0RU>Fdn5DQlb9MNaD`zMj|Z6Z7eaLI$Bo|aJIqHQ|ckigN7*iHpbPd3m zt>{`4@6gz0n*0<+7lI`2+o$mzQLRU3osNc*#sD$%mSRJ*+(J3ZAjwIeTW2TL;}1o z1klyzWIKll@8|fH1L8DNgj6NM7xA`oc)}+{==r5n1X|;uM2P5TmciAg2rs%EBD^_@ zMQCS=FbPTAxsQ_w!*CnB-66tFP7!ALi-1sx6d@fr!UN2=i?Csq5FzgirwA`tMCf~m zDZ&8EJa8!-5*xHw9PsgxEJ6y+v5HdIh$L7mLn181ZR`gQ5gxduqP;fUk#2le-SX^lp@SmBAj&F45=lHu*0t|&|(E8!rnfn2p?m9fJNvFrfhX#)9thIAcoG|IKPK+ znvJUi_c2!kO|BLpi92^Wag~nS*gS_~dpWuC`E!N$Bv-2ySMBVIJ(MkMWWQtX7@ref1DvB8Qx2a#)ZG-}6vF!~!UQm7D}|Z& zum~wC=^*34%ckb83)wj5f{aA3N+tAg~4zB+8S1kGwlB*vS zSI^oNd&>-=*op_B6k83Yd3L4PmNfX_e#~c>8erQP0H$n;eQ-D{_B2g03K3$22uDeT zYe-r3k+&5en@hOvn@>bos<70!_s$5gzJdicr%O;TiNXY$B{2 z#v(+UBBUaTJNFccFc7z~2f>c&%l?npzeFz@g9pj}Il;c!i=I5v>_x}lX6r>aCMIMr zx@kQ1Wq(F@F7^|L@>aJ%?$*9+&!_$RP#AW}+{;9hE)eVMZ+CCEOc%=Qeh_)u%Ae-B zmGVBOpq4CuOdZJb2U9lXJvbB?=*OO>`A05)Bys0fK-NXqkO-eTL@2t+A%e$W1lmN1 zo4%?_ghqA|CS(W^b{0BCps8>r!b4D`6rrXm!ZYaW+eBD7ghhxpMMy;wY}7>}48(2h z93cXC#itt0oC2)y7ofH&K%^3&rCorxrU?N$`w2jELWCAVgjOU%brRu- zLxk`C=MbTVzX)|r5!x#e((EFPP8X%H$J*=6zj2?Fo6i2+pf4b~xnFTp)sLHrk{b%JTE?aQ zBqv|f+$Xd{0oKt#F$1h)@IdXxHR}*yMQ~9CSZTgy2{M+aC&pdYd`$|Swul3VFjezA zrfSaYfEpZAHJy8rYVwT-afAg=)x^@_RIbcb$c%e@y_-@AVY-F_MPkpBDKjr(PYX$MNa@=u+a zWk(qO*F3eO%QC&{-`0K=P#c=|(_t2>d}ocD*VVZksXjVE?c9XDvI z{a8Xa($h>ieN*-J6T)fl`T)G~VuvyGG1esd7^^N^Q-Vs^)6LB%y>$E2s_~)k>}~b! z#{?E~3}$878~qAduy7X4ip{rU>DiS@(+F%h_cYNmYkqY%0C8!WCleMV0;78X`+HN&?L5u$Av8IwJdaAG07qqZfvp&^ks||Xv#bm$l*NdNMT;W7gx%8>_hIRSsf6p z6d2#G_IDoXkdXI*dXOf3W26I-voy4ynY5=RNND*`l$Kif8`SEp{swi{!@7>TQ5jUm z*-5G6eV!Rc)yAyUJYcgSRpbym3;;V3TC8XaMroMsMRX$ulIQ(jYJCyS%tt@F-p#_KmzzO>)g=bJ5^&;=iT~_NC&MySA_h$=EG{82fmVlQ9&DWNeXQY)m@sO{{jX?rpsHsHiJR z@KaQ{y*)SpG6%2GLGjPw`XL`2izx;A8cBMA-o|pAZbt(d9E52kU?PIMpu?PAU}!g1 z`AB>!#ww3P5_j%WlB_XFb`p75RX#W>fXYW@J0(MRT}rl6Np`A@Q|0N{l8IIRA(GqN z)2^<}*gkxN#f+^$5_j%uV(cm0#-7H1scAe>wYveBg1GR=RFQ-o0+MTz*bPd!CXCD^ zQ|kp&x-!)spexgtH#;g*d*Ve^ruXO=wPQ8qtS{}&OjT^gN`Jqy1i6*$S5%V~cs+@u ze==YbIB@h&8jGUKH}adJq~%hQo~}%)B0kS9tDVT?qH^lU8l-7_6*eE%A`IAyT1eVoN^CE zXGbXw$)wUYwe~CHXya+Wmw&%ApweETS}K+a`Sm^v`ZAAA@g-*(;)kMv*F6UkTEH^X0zs4!=n!si`pb49$qxTsl*-gVNt19O`$jB_`y&~6qW5X*! zm$R)t_qKEs1~(b*!TPXqv_33N4LWFj*tB<{JV&Lzwl^#Eug0p-si*KT^%Q=%nuSm1 z1y;J7U|$$EttFK;dA7l#o6xbZ_G}@|9iHvY+mRi6wtVBrO%y~tfie)?gtaI+pXX`g zL3_TUeP8fYNejEYB75COz{0LbqnUy*I|wt-5>Y23z^b$k2ph1u`7KroA$Czub1}Wi z=EjSa<{(pEti&Az9c@@sS1Qfy9jq3OaNvbq^9A$h9n@(qn<_O5Gd{glaa9Pt*c{yh za-i7A(wpa;9F8tXg?VASG z%hsc`9QJ)ta#p*cvhUb`pqA7WZpVx3pt!tw)NUoW-sZ{NlL9jj#ex%<3aGup;n8^o zS9&Wla|)BQnfJe4n|a-44l~c9T$P#s{Xa5u+Q&Ke0%iROXFZ*=rhLg#!c^zMul>n( z08elt7T;J$YTs(bS$|Nqu49u0_lpXA(vn};z@)Q>% zxD>>C-nv*i6#F`mcgKYT2E`M$J1z{b;I4Z(E&Jweqc8;#lF=z7MTQEZ$#!XHo2X$Q zm@D4@Yz-Xbzvx=x12#iJ1T&d(-elkX?^NTxbjnF@479KbxkPL5VB1>%vEK2Plu?1v z1{tZP^>ui0kL)ub?o7eW{jSEtRoU76&YS(uqM?HUzp_3nAhIj9k}QG_;7iYOVh6pOBN4r(UW zQw**~dfTApz|G9ySxhZ5gFYld{6;buM+{dCoxK62FEmX zGI+kOV(=;_gEvbC2bc^V2P5uWM1F)(zw{y)q{Gx>S2`H%8i>KQ=-OdeM#}}|NL&vK zF&V=QUenacVEZV=Anj0U)8OnDtigBjX%}m-r(h6Mtb)OdFMz=o#2}8*u-WS?)dOho z%_&X>^$-!Oo|wU>1cPcs9&P+@lo*kpegmwa!H6c0I8H|5LMoeM@MvQ@I#fIck2ZEa zsm9=BbvBtc-NZ5-!Gt5plrqtsd#jYE1>`w4!v68Y;Em~2aSnzXV9QV3`i`Y?jk!61br1Aa3@gHpQblTR39Gz$C&U9Sd!`wsZ#3~tr>2t^5j=qW0}8z>HLtN*3+|4-t>L;3yF z3X;hF{nNFbS<$s4Ow+g(I#QkR;;SkOB_y*==rOK66#hyZ(xr~x4eYEt;q~e{I^nO! zBTE&%yNF&{PEjJVjO`#w^exjQGwgYbaqf3dTI|u*n|VX9pluT4+<``%f-ueT+WsX5 z!cWuKO_<{c;K62&XWgu&1M`(Rz9P(V9WpJNN#@vzl$OdPmygi15)FYIyi`_$7fZW~ zhF-P+xendci`TmQ{%VKr9wtVV?sn9-Mn1O)oC0Ik(_-*oem+;~;DP$rG;Aovet1%r z;v@GgN9GRuX(8+<-}tPC*@)0?`^tXauLM=lAg=Tn3HE81_QQk6NVnF(*L58_*sSd* z-`HA@?1v7Ki5=pwpU(EYh5fwr1lx}Y(J1>7!#SLT0~T!d6JvxZ2-ALM@CwL$UOd$j~%zz{msgbx;(~2ILhN1%2Jg_FFJ&) zXb`fDr4v`JAKV@+XUkjoo8Qn~CU+sSxA~iV!Gg`-L>oB@f|wToz0fo&0LR?P2NY!z z?Uk)&)3^7@qT7*gMBzgvoIzcZ8h2c!R=>) zdH9=$Mc)atwr0)VC%Lj16LIue2PhF9a5knsRY&McpqR$=jeyKI_RR{e`6{9PN@+4q zh4!gxuUL%i9aZ}W$C&9i}vn zvQ(y2wlSO&|j>l|=ln}zs9n%6>nD#ooVoipdoZH7#X$Y;gUD^>?GFT|hm*(nyr zZ4TsSf94~N+ZBY#eA1K>nJ-gIF>iAqwB0}*$^3Wt!phn;Xidz|CzH()%%_`L{}i!N zGgKfPNX-e(u7U2bppwAG;6T=h6S%DoWN(dtU4u+%l}VB#YK_o}YO6$-QJC$lEdStn zTq)ms2ksv@{Ku#l{7rE}d(co%zN%=NBArO4y1qLvvO)sRUqEfL3ZL(2_aF6d(f;Fb zHHZHQp)8gE_@KJ!Kb{bUq5X%)nz!&D6;K%dfsnGXl)24+L>gE5y*wJd)d2pZOyEGs zpcvN6%lHCI`Hzao$n+nTMXs3NobmtmAAaK%M|o{{&cD1mw`0DVS1`-#F-v*Xx^P+L z)xuF;W83KRYFX7$UI%WmlvmAgDlht|IyOy|7lwt>Wj*(gCGQ%TWvR3NC$zd@2=;`L zsrb!$wG&+Ef@`?ZKr*AZ6-ShNCoH54P;@IQ$V%4Q=Ch)RUzoIk&$dL-U5}6HMOOJn zn@m}+;Qpibf;F?aeAsI!XDMK>Og{M?(wXNtB2w-aaJclm+aBE%E>aKN>djp?vNj{;OT^A?H zgZmX=!Dl}qZtlJ+i5v^o|N;IZ40sF4%x7l}3wXl*50 z8WOgbXvwVH=}poFJN?LK<{Lc;koC(ePqC&^n?w-)s;~-c_v+%pOZ(gV=Q?z|&Qf2V z>!WphVVg>u?J!tDk!kno*X?+Oo z>I(B9p_QzU%WscQMX^F|{YTmNR5A~1|3&vFGG{yVum;;mss2RrZCVd)e$jex*u^?{ z?n~PD1&z&&F5i{ zay|65DWhW>hN2KkYR)dsa)?pWQVeq~-J+y2S`1O4v^oBd#1PHdS|?gHiALtwS)!3S z7E7fBXwJTdcPzymgYdVF>a#*tom1txyX5lx)9X;g-ul`e^DJ%ID~)tp=CH?xigh^$ zM4fKG6@-^>kA*Fm|6k53{;N|_2Ch$So%}x;ulbMcsO|B`pLIbx_#Xk!eo1@0eEv^W zWd8qW@?T2-HuWio{y+6-{s-Qm`JW{{JM|?T{4a$k{tx*t6UqEPaHg<0LyV82OHh7p zwuAY3_y}1!vuj#u=0`=9Xgoi{YhIH1Ap3K}BUpl!f2k%aqo}j3KNo84&;6d|5Tik) z7NgDI+`7h~`mX$^o;k*=Veik?CoxoiZiy4{Y6(dG;D__NxgH<^$sahH>%H*C+@I^~ zM2nDUAgOq`1SFSx{0IXEQ1NI26kX=uW;ocJDbYy9 zry6J#&%RKaiX#cIWEIn}#QYbGzL%6^eIGil_5E3?`o7jF(6Am_-wmZeWYSwKCf&@g z?;dDBOnvXmbZF>q2}t^0+k`bl`ufzt;vHZCCggaJbx|80JK~ zVA1w8iALJ4CecXSqE*oSTQ8ygC;i*TY<+kCeyR3gWrjlu?@_Q^2FtFxQMU&Jt}d}X z_yj&%uw7bb0<|d7yTjw{gGfL^Tv7B@$mX)+A7Lzx_oOP{jH2$P7w&;+4!NozT&mjWGw0ZA!K zBp_LQ8wp5C5%ot~{PP4T{CNW>+8~KW{-v)(BmeSqCoZsLu0M_th=&0GYyVQV0xSEf zU$wFmO1Hn>=?-llwb)-{OF!%VGrEJ~7(7ox+rjo%#))>sVt=2u)b{s?L|4pS|t-zXJRnL-)#Lg_md8Fyn`)xRCVkUsg3XZKeamI?8Y}1-rY35lT#dk zYb78V-@*D?BNfjvU;yK*M}WfkmO0U0muO^syV^4v8DF0W_JV zm&k}k-Y?o-?sHA2y)NLdT+`oGj!PL1t!aY7!<_O|kmHqRD4FI*xsi@W!VQPmEkt>I zGtvP@wi82fs3?kzwnWR3Q*@r_zVdHRa_A^jVtRo2`Ol1rbFj38XYJ?|*H|vL4 zA^?65znfF^8UxN<9nt_I`IeaRs^oRB7YiX4Gha3uGKyd zU@OpI+M_sWp@yN$x0LZ)%ZZL67*LgpjOXZ5PUyau@vHU+j`7=JZGK%1U*+d?8qJ>B_GLdBxjZEYgi5A#Io+Ch2GyP4(9DCADTz?Oa5fV$XyB=U~ zJGjYk`oJ@pzG>3S+IZ63cjkIwH2r^q%0-m5{6NeyW}J<2%{*NOx_k~Z>sjGjie2wc zFZ0T&_z>@`X_IjAl>MmqFc|ke=FnF^?EHt%l)i_6kJKi0bv2OeRZ#`H9^&p;*OS=j z5?@SU{WUzjkgO<+GV_&>b>iKn@fvEpJ2f8qLmKZP6EBAGPCV-1Z>Yxm-DUDO`vg@{ z!5>D;8t+;Y&)}wJkrVG;jkokF6R%exnVY~vXIA6wFH-V8$9PFjykw2nN8?@m*u;bN zYP=~Xo`>-+q&nmstMS}Fk;@e2@$+#d?~L>iDliS%+=Tp-e({xG<%ArsA%FeRgnU{< zQX6E2JOqEwrM!$G2RI=g(~v#2)V-^a`ynmP5dOo$Wu}5W))y>RbmC3Yc!R{ST1dUk zFs06Qu-MkbE5jR<4X5=fm@q|^p`iDW4_pmGYQXSk{T3hcHU4fq86PqUe|zy)@AvqS zhw--qfA=6wNTp!@g_bFczq7NYC?PTKlS@LFhURL2zc3HPNAxCJ)Ypa_@a)+*OPGe3sA)jH$ zqmMYG9;qRZRW>2Bbp6P4)Q<=g(#??1I3XX@kZILS$hI2tfCF;Jk4o@g*>|~}kmEFD z*9s=&DNJQauW-l#`LGH3B18T<&LMcJhCEf?gnUUuhR}cS`Q3M> zMNU6z`kH1A$UQ$O!KH`wI3b_Zkh3&oOAQ(AfPB=1Tt+JKmH+c$hv3sSWRVv9*9xYG z#mBWa!5b?`;bE6M@v=4EIm48C=ntmU!yR}Bk4UMHmE>V_Qs9^pPsfLR_eXq4t3TsI z4&kr)U-2PR@b@wPn&9_^`29HkIwH+1{AD7|PS8WD1@jL+7s-XstyZm4<*TYxRh_6H z`%hypaQ`XdYt#SUCHhaDT{A)GIq7+iA#)x{Ft~oN4MS9gr~! zQkeRtF%A`W)ObVNnIf+*YvMUQoAKSHOnqdI3q~;JTztrT_#1}%y=a^3;r>nBhgA4~ z{0l8pp+Z^pUb*tho)f)ai}iyEyE|{A;Xpz*2KCtwMkZuWi1K*Lzf<+r5Krr!6bKpK z`h@oazNCo8l3K*y-ErP;Vg@!#ojB6KKTd+L zXP%LDac6PP`!JXg+RKu5SPAb;QHZJ!KZvi%eONQ=>tEO7-ETDLS%`B(YgB+8|FQP4`wRFx!yf(^!Cc$67|-5cu_?cGeh$rO`SiYuVE8+HfK+ZZ^x68u^H8ker0?^L`jeSP?? zLtnL_uZCAeN&kP=sjtNdmXrU#->$C)T}^$-6iF(@70}nYT>>wU?nUG+=!VJmb_?9wyYu|KDfV*KeIoeaRH{Rf;R1uRS{h=&K5xTnYNx z;<~gy>tFs7`XYbUoBi2{udPaR=OQRg{;buf7*hy;7WJ1?Z*{|j-YVX!^v3>dL%gXs znc}B=WQr@Gx49n#(Ay`dtR?6zvzo=9U7|gRD0eCSRfhgZiD|6FdS3-pV);*$62JPx zsl*AGM2GS17-3i9c(!S*+ExLtMa;!M@a6!)tXS3q^uw+B#NKRCYX7`uH=&;omxbX4M?F!{SQXwm?cBbu^VHQ*2Wyu7L8!Yzd&eH&Js-P~LFt;6r_0+S>pF1nkdB(|1ws zJ2AJ15&C(=da8q6xxoQ;F-@eCZz6{Lcs(`=prJVJ*!JWeEVX~1z6E?&gmd1+Rs~~K?I-(#i(Yp($lNb*^itSvmFG%XmiQaucyb6e7Z`J}MJP|=I z+R+eal-!LsDT~24piJyMb|1}~jA??%0Uhjuc@vD+cSgI1VyiEN3N%51E!j*YH zf*vf%h#yQzx*-rDB)P?%d%t929!~QVk~Au6iFX8_?%ZVgYl{5Um01fvlH@f`Tr9@c zx3__hX3WPJ;^V7EQk&S$_H$#=N=&A9!afb(BKTtNUVG*UMGXs#?{=&5S*t{fVW<>> zT3g>*Ff~ST!MHMUqK6b|4S;0fOz5FSN|Q{#k3+wtNJH_C6ltRTb*cQ-mFdQhYeS1V z;v&`?m9oFaNppXld3TxSX9{-hFB}f7K!S;H3}~^TE0Z=ksw|kn%SZNp%L%L*2#fl7lf|ScDC*^ZS6(8XJe~{ zWa~2oCInlx+_^_2Ta6@JsmWfUsf^-^DU~ydLsQCU6jz-z#?)zLVJ!K^Tf2ZErs!`v zfqXK~hCUjWE#5qK8|xPH1L!Fy#TcJA&^CC`*f?L{7^=D{ zTy=S;aIt@KKX-q5W=;-rrp;G8Fco}@ys(Ku1aJAV=cFI!HAdJxhdy0IwLirta@{|` z-&jU`c0Crm>^HvHNjoOqbgFmLkglzZ-QLCIurmIxm{Kj{@6eP=8Gl!G&4NKFzlQyZ z4)BXh@S@v0LnJ?2b#gV@SG5xK;>vuMlJA}|5I_Z(nB0iPQ6a`7o7v99X4LSh%@VWI z!m&jH5@3Ut1lnbZmV@EHXpgT~IF=!Yc{=n7$4*MwWjq<~u&`rSQ7|*w2`keQV-gd9f#1s|cxyFD0!Fy8R;0LNcoG)jCwONcf{u)iw~{gogdxE1 zEIP;q{AU+bPOMC$KsEN+w*;z(Un)@D$LReIX$#dQJ2LaD)LNwI<%5KAWd44EJTp(3 z&1#Yk-BJ+yv5oYCtb9{yYr2>(^mdK(G{?rBWCs~%%eXSeLPrT(@L&4J zz)tjC_sZ>}R>L@^gAfuDuy(h@3uc|U`e)8?$2O>xEBCf(8E2ciW^Tdz39grSxiY9# z;p%;xM^*268=w@dYs|uLWOLz(*-^5FR{%-YaJlYLrStZW^mOPSCF^+C$gpEI5`7ZG zhYg16$B3$)6q!WZ({okdlZtvQ8ud4UYx2FSfcdTrzR|+j6fx6CSWMTQ z1KImE5Z-SCd%qRz{Y2OFHG~iYdcV&Se7A=gZP0sX@AndWzxQq4??dVR3XIpIslwJV zz2ArA{Y1agdq{b|Ct-i3d%w?!XX^jL`@wCI_lvfAzXz3lOaCWowA25!58(e|;Q!*3 z|BJEszi4CWEyDlVvJ1-p9Z~*oKl#7U5;CT+|EryZ%_NON{<$>&CsL6A>kj`nhy9;u zO!h1Pcj6l^)<19iH~w!eYOd-3VoBA@?_~e?oA7@gul9Wt-=@SR`o31%j(u!2{=0&j zF`#w^Q|4+AWjW-cu$O72Vy{0qz=$bd>ETnp5%->2N!u-TBsx}++|6o@-h}Z?E$(9Z z%&iMsjpltYU71s0PG&cd_Csq5SZa|95Z@3RBcXTN4k$#srXzZ%Vu#i4c#S{Iy;)?} zjI--V*)8|WuIvLUJC`%NLtk=s!!6mx$?R5lP}v=V58%%5a{x%ahkA~jV^_*?eNCr; zeUepxna=ue)yI&X z2J>-=7|eSTv+o0IzOJxO^pg;T20rMB4T{3FHKwd5 zL??JBs?#mqgE7TzHY%TyMff)=OPZUFiamv+QF+GWt6vVg^>}=-iz?NZGK8mgV;L|A zV;QJwc_=DDGC)@>!|Nw#NQ%9Mqzr@5^_4O-E^3EHP_|Fs5e#I!23}E!=*q-qe#NY? z>MFAzRAx4X#i-1NA~UPPe%)co>?0JV%uKA_MP_So_NdHkHGbvHYN*VPtITYY#i`7y zJ0zQG&1{Iy>~|@dTW59~e#HR$R$LtRcbV;N)#IhKw_!c}O|lpnf|c;4x@+fWZ@+i(x3>%VR(l)vRzQ1;<{0crOu87WZDKt%#BOhE04GH{ z4F{?0?GL<3D!WZG{r|GJGZN&N#twU<9|GAM*PNOnG9Jew{7oVhg;`7H^}(uS(4CWE z@B2h_8Xt9L4k|T@@BB>%A{x!_cteBOCom` zBI9JJG~>19EV76!ifw8~<%;=&&fzkQA|f?;M)U`vAsqT>o9LS@LJWxF_#y_%JmU~# zaf>>e?9QDkve|EVTgWbA${iR>_ObM;rz1sxUUiQsvsZ0TVeeI22PFe(JTjan$!JHd zI82h6y+W&fjU)RqhpsmN_BdHlcpPRlvHz{riUtcSD)3~_BsCk8-%#~vFIjjNLQZ)oqgu+I-bHni_)%Lq_EShLkp|7G(g{=*4 z5*K*Fucmybb_0h`qaOnJv^RLdZy!)ohl1%SX1WeB-N?rD+olgdAYS@_aWG-Yc>kLv z<89r!*GMLo-Y6Mwh=Oh)UBI>S$LaD%SLXG=Bij!&w@K~KV49ju(NnW9cYOa#wGdX1 z3SgSLThyrivIZDOUZ)Da-}q%O2UO>p7QaaFz!oo#(cG|%Ej~_F@?N(BK0qb!9IoP& zc}AlV9HvaE$zQbfHfMHVZzfZ#H*x*z2X1&8$d*o;zpPiVezHQ3&=m#?Q7;Ql_Z!{n zi#ni_sUOWcK*sKoL$5KSoxo?;>{8T3v8V$j=<~W*e|>I8ND&HD`kc3l_4z`+Q=c!z zX%8awIcljxpBG~;th%n7^7G+|dB6LymlOasf`#RhhIB~s3& zXo$}}J>zWK$HG0E@DLJGE-J+1dU?nA`=_2eiN};7Q_r2IYk!WG`&l5FR#AORtbEVa z0hC24Ol1kXOL-X8d@Q#q*o_RP)177l`JmeVFF7n?VcWnK(LF}ju(cD}B2r&9rQL#_ z6jkc-kd}+ze?f%l>*=Nhdv8k>+~GggZLq0+*$TGzRe4T(FA|~u&SH*T*!yFP9nw|1 zC9rgz5$fW3jy&TCI*K&SQM&)A$4nWuz)kS>{+pbns8BaR5z>!l5nitUu-bPt**D^Q zcY4%BM%;7g$jLpllg;p+nEyhHO8WM--2`8dn7zT)OX;?oR9|4UcvUs0OA+L8WiElC za+7r9)vzdE&oJZI8fr@qVetnqTFpQ8F=ipl52m_=ep(z&ny2G6PxgCastPl^X`wh8 z3DX@kmn;^#Zdix9a)|E-T_ukOL>zPu^+<;B>!neeD4DO+WrC`;IHJ`}4KO?9bzVEm8lU zl6!Obm+f}_$G^<_@3E8hzW`;<-ZLkW^q-MORtyK)ijHfo^@5`aUT+z=2*hjJ%S^&{ z6PNZf*E4Iznq~i=QkXCJ-ES(4O9 zAeI!G2OhwkMosIAJdndbdVkt+i>Gb z{AvtdU{S3YOjd3!&$_X%@|r-SBFxjNJ#}Qep0P7}*ax<`uqSpf8%G+!GuOdtNz8?P zDl*PDT13G!)4_$CZJh%F!ZtFXq8$L2KpQqWYB02MwMCAH0YoYu*+9zip_;Iy=|eeTnL@e! z;g?(AB+e~$o-LbvF#yRo);E;u!h~L$%%&K}yYk%VAUO!ThA2z;hqW3C~w`aJgL)AO+Q)+Y~=KC}E zxTcTB7XgXQKXPp-Gt%9@T=mpC`0lh!LWU8VdK@Rvh{?u`ol!VfBO~^eb(E7YA`@2{ zH6fcPaI5h1H_@nkSz6V!{AB$TnK0Ryv@Zj*kyKl>c|p=XUx8=+eGk8fYDa%qk4C|SQex_-qv>K8q0 z{G8zMXU=2&B;zXeGX%F*{m`?7PnS>de->kg2QjRit)p6mG~DN?K?ed{O}<0mrHzH75*!B{x9HJs0shhI_Z$0#)U{|2{K{^?ocA1EK3eqNXQ!By!8 zw^saEJZt=M!Qoe&$M}YBzrJy_U-Yc;!|nK&@^2fYe|}E;XP?7A)3e53i!Vunu%D*e znEx8GjGe;BTce~11r z*z}(h9RATQ%zqxP5`PPBt^Cuo=07?}{0xbYtHQ^v4Ij@M{{R-z2ce&%KS+FB6+Uil z_;}X%2gD)cID8)9getq~4wB|E&9o|E8(0)0SZ;<2{m|XY_lWRzF29y8B2!}xa9!4Ok z*qJ=y&__%%m^1{WKR;#Cr%dVrQs1Ra+QFoDAQgPUq&Jz=1f;!(nY55e)e!}v&{Bah z5pf^{$jaCvDmva8cLzRzjzWaxR34O=h<*HVP4wQ4Z}C1#bagJj6OSJ67m41&gp9vM zET@LY+ZVB%h)wt<^(K$^BTr_bYx-1Vm(=_~j@z{%WMpSjXpMx7ZTQX)3O$Cr5y%-t zft;QY5N&DI8%a=C=c-L`W#lApC7{xC>h*w3X_eS~5B7E25K6(JN~twG8QTH(3zv_8 zlQQNT3$SEF$|!!&;)(gdFcq(Q=rhV(#H$i{bh%!uo7l~w9$+$xj23MNUkg$%wDR|&odw^nd^*7Ye5;nE=L z>+YWEq{Yy9Nk@Mmsi{A64u{t(<+@#$IPhXsc};7P`h!Byhlgj*{>=r?cs_-#?Qi4;!nn{6`!6pz9%^R?o%1R8Lkq)K5nh}^sMm>+8*li`5$mZ>IYY) zAKY5;Z^E<2r^(bH@E6Qr{4`u8{#e{v@#$IPHwzAb!%K|+9Ig`Ihg&N?J!||te9#gE z|1)VLc3G;= zM?8$4HU7$4LFwmnIbO`w$8G>6YK0RxEPjL7P<}-d8t`dJNZmszAtnrQD=1beHV*E&4C4N=h zTJh;w<7WkjUuQYvpMAx|KY?2-K0RyvX2Idl%#`}aRp}qMR{SA&*7$kB&6ftP0e`RpnI~5Pr-%OkOC-pE7y*E+%J6@>V8y z`k2WNNwWB$(-(0DUX{cdAjvtLI%++W<0ScUCZ9`V@(q%F50jUn>Jmr|N$$zy7dJEc z??e{94U@|)Wb%)aT%XB94lsG2B-00PkaE5(`FADxH%yd*JnU&s{gNafVse%&%PdLW z&g6y|dlG|>Nb)KszaUk0w%KoiJ~l6*gtGv_inLXvwid5X;P zVow&n9g`P~<eOPceC!B!9(ZuN2-Z$vc_6 zGlx^BNb(y@j>Xgji8Dl!=QH`$=b7A1lAmPqFj+b`OL8)kJ-M7ZQj+^Hd8%YERFZFH z@+xU3zw}_8G-mRI?F@2IlB+QJxU`e^B>7KFaYFe1`J8&WB!A1~+4Gn@TatG(nHn~d z@-azX%jC6EC&MNAc_wd^`c9DKX-qza&<=sLlH>=O+#DkcB3~oP{g~Y4H71vn{IBPO56kdPRB zLXy`rdBPYb-z&)rnOsj=Y@#G*GP%D5X)DPOF?ot~O4myA04DF2QdX4YI3}lW%b0v*8iVweWG|Dik>n1NoWkT<6F7AfNgl%FMGrH%sw8(~@{BAd|J99!znRGm zWJ~g$Bu6qiMyAe_ zGx=HR3i?a(Y$jKe!grG7$C%u1Cv(zNl7}-nM79m#lAOTgjc;@6b6r{ZR!rWJ%H$)G zd<~N)E@pDRB$s1y6Aau)__rnb1g1hEyzfIMFOuZXm^@$h3T8<1`%Erg$EhEd4*_Ct!?4s>+t+9ZX(^t}T(rOY-YX9whB# zkR=Ngm1M`42F;wj|%qW=OLAoivSc!IZKjvG5J&Jky9mk4U?cqzRK#q(AvY zlB+U#i!946lKdA>s{Sm?@>NOxj>*GbVC*@PoX6xmsqZvNmh-slWLb`oWI2!f)D{Nm zA;}pGQd4%zTMM$7$BmLTIEqO$kL#19s!XDJ++Q*o@4TA?PNjL=qtdvJGKuDK+sHQN z6DH|--1TM6IZnMY9_Q1l`P=w=G3dhlZDU+5^S8C|7)(Yx4g{#7&8Etw_Z9+5J(U{S`toiKSp=Mb-=d;c79uJ>F<$VXPmh$d`$H3)% zD}D*Sya%me={n*n71k2BNqEOIf^yTN4|&^i1W!xHP5)uBHBok9kVMzY#q>n%b+1tHdvZTPr?2Yy1(x z;de}D{Q9^`{2I8m;?uLn4-F1~FxnyFKNeSs-wL-@e0tXSOEG*6LO%;9GyY^;CH{Ea zTJh;w5Z{gO8PtO{EYH;{t zhBJN=t`a{Uw^n?5*7yyB#7ED8_)o%B;p5hZk7td)9fQ;$^fL(~G{PT(tHke%TPr?2 zYy1(x;jhL(h46j2O8jZKwc^vW#t#h+|M(2X--oNj-+@~zK0RxE>8&)V5axjn*Y{8yw4di1PyE;>42L-&x%MjTkHXzoLD=NA`cM_(Q1=Y~p`|0Vrg+ z9Q=+GB>%W7{&DNaKWG}C#?)4PtbZ(t|F1VN{uW#%{#&?p;{P9cZvq`vm9-5AG#Zqc zfS>_EA_j?#v=M9#B5j2PxPb%$2n3meB1Qp41_c=enW`*G5%dLA1eI10aUQ@CLb)op}W(V?2d0}e)SIf+YMlsJm=Fm zz#MiSdWbak9E37KX?zBv)LwGtF~3TuG|jK%()>D6=+1mP+~3yA^OisV($xaL457j= zMAQvWY0_5$Kd=^i5rN-qs^A};V&nges2iWs4*ua<^lb$Grc*$EgWn`M{HZI2{vikzzYn5rd`dg`>qVD`jdz?E zuwPMS;uw(E{gnRrifpXt?#+qcPq}lk zG;$(BJz{hXqSg@|x}QR6=YGmHN!(9qJxsvU5Gwf5q2b_^b~-&>3D@(7u-|d-qgMq4 ze-%Q-UxuigcuG6?Ym>V_G7rR&QK&?y_(LM-r?i7#njHRxDzsS$6+fMY)_Pe^$8<_N z_y>}^KXPLap}!oV;+G=o<`1PE{7`cEyB-q!bqE!IEuwCGN;~*%lf!R)zu>1KRQ#hW z!tp8X;BRX}4!-?9o7&`Omm1A=2rc^AXgd5Sd+OkiNe+LW%4ek`pF<+#lhO`;dUE)S zy9<9NAyoRuAnN8nr5*gW$=x3raGT)gBUJphh`RA9?ckRthrf87(vQ%hA5k~{7^EHi z1L5~aYVF@E1b-butA7!7BeeL#ix`glwADonQOs?V!(aTU z@&}>CA4J{sk3rg@e_L|*M|RCr{vfpYgQy#SEz%DDnB?#W7=oXV(BcoGZv3`LJNW6z z;aA-y_^S{q{xU?}_>^|=*Cuy=q+7Az=OR@6=7_rSDed5wCWn93GQl?xDt;$K-T0Jt z@DC(+f8@rAf?tkM@kWX9&^`{+Q(Oca;eKI)sY97Ew1or5*hAY{>Z%5${&Ole-L%!4?)_&FHH{r;hO~Ck5KWaA?n7bw1a;jx%(qk zs^3;Q`fXW+extO5A4(3t^-`ff4WZJ1G=l$>cJSLKhrdhtzs}+R+6ewr+QHwJ-2IVL z#|r(2uCwVsfT)}Qly>mPB!_;3bA*Mo)(hh!Ua`+F=6?{KJ#h-?#8=uk+{(k#$>ARl=a~3!_Oj{Uji?)+(hh#xV7bl6|UV|6DHF zdo(*mvfE&bfk58YY`x@i=R(PTMzi&jOQ)Way-c(9lFPSX6M@XtY`x_2_+-hxPP6rr zOV-trU9Q=B$>omGl3k$LddcPc0?Gc1X6q%FU*P#tl_zVqUUHd_U3tnr(o`C+mt5xP z)8A;eUUC`QO`hJa*?P&P3SJ9=Jg?b$$z{Q{lD$H+^^!}y`H~&bY`x@ixn_^kY`x?% z>K=J|kY?*8mwy&Yc9CZ5C6@!eCA+O=>m`@t21xcPnyr^ydUciTnkLeCz2uUwU2JN$ zUUGQ{!;4z^j%Mp6m!_9V_6wS=mt5Y1CZ(qz)NH-va!wz~p0C+@$)y#RWa#OMnyr^y zrYi@BYPMc-IUY-|^mI4P)=MsBH%oS&X6q%Fk6`oY=_Z=3ms~nyDo5FMHCr#ajG8Ce z`?7>5ddcOPNs|4(X6q%F5d2{Rd0Dgdl1qQ>w1+fXFS%ss3Gv%CTQ9lf_7jjvnyr^y z8tB!M;hL?NT$=ji>F%1Xmt4-gMzY&$wq9}>4TD1jHq&gq zRT{6CT)rD6*}F7bFS(5EDA^k{TQ9ksJwvirYqnl;d1`@VFVt+km`@nun*LnQq9&&F3&BO>@>~ROD;dDD){LXX}n%? zIbo1sf2`Sh$)&IM{3gxTOD-2{H$1A@ddcMt_|-)BU7D?zT(&Qg?CF}Vms|!Y_Enm# zmt4y9Pm`@7FBOmunyr^y-c{_Dnyr^y){K{@PthZ z-I}eJTz=E1H*2*JcOmt0KMCrdP2FS!hdFHJm|so8qT<%An0`x?#GODk%Lo{9!k(?!ddcNwEaFr47|qs8E*~l- z{WV)Jxhx+dPhXm`?;l#<t(RObQuF`E$ z=x)_)z2q`c<@;I9)=MsbRXMp&v-Oh8^A`%;^E6v8xvUr|*<&?ZFS$%sT{Td%^^!|N z?aR)Zt(RQZz(XYtw$W_8-kF8$#q63Dljt(RQRy;ZVz zXtrK**-|dq>oi+0xy)2Oc)w=rC6~Lel&5diY`x_2pepL|nyr^ywyL%ttl4_WY#rddcNN%qpolr)suda@l#iWT$AhUUHc{O|thk5T58I7wf*nyPB<+ zT-K;__M&F%C6{OZCLk*{TQ9k^)lLg(wqA1it+PCRgJ$a`mmNyUFwNFWF1gxihGy#} zmpc0Nd77=4T>els(^RwdlFO!nQspt4t(RN|tHZiKQyQ`QgH zp0C+`B>QC*w&t4MQL_8@6_DdJJ4do#Etc#bGo-AvqwD;Q5^Sl>$Eop>@6jQ8)bMNIO&AB+s{uhB~IHdMQH1?~JG$pVAI~ zlIL5F3=sU?2o?WbMBVt5cJPxt-|`Zy4AH*~q2ez@)QwMR2S3U4EuTVZ5&p{v75^zj z-T0Jt@RL2?0<%K+Ll7!{A4J{wly>lwJl|4+@kaP<5h{L5MBVt5cJPxt-%@g};v=;1 z5e>sf+QB~zRfaPbiJos6JYDcRAyoW!h`RA9?cgs>4u5os;Fls){LYBF@hR=#cSsJu zz9IMruwbG1dk}TwQ`*5#_I!)-r>(=EmJ$4+bTa2#R$n9}--?jVx7>ozqLjprj&0iKDd)jqOsly>Y}wOqJx+c)gT$2xzv zwVlAPMX2x(AnJyvv@<>?d)()Uga6W4!C!_@@fRZM#;3G{-y}KwPp1j~%LolG+8L?;;?Q5B_N}dB-&#i4H%dGBUgvY;;BSR1y6JxaX$SwX$NAPc z_!qYk{N@N1zagS-d`dg`Uj9oQ{AMsNME}vh+W0>s>c*$EgYV_P#KEtRMJK{PaG8z2 z2T?aZr5$`P|0NFo#c-qvzd1sSKZv^V8zSxCd-*SM@Jn=jwROf<%ZTwsX$RlSe~E+t zDW-r#|H}w1`A5`E|5Hdi_+I`?9Q z2M~4RQ`*7z@?YZMUp!9mn(Y;8TMSG82~n$o!uXGhznvaJsQ9-a>c*$EgD?6bVfc*$EgD?6bVf_7aUnZU2->CGzhNv5#(hk1pi-hs(R|x$Fu+OLXdk}TwQ`*57eUUK! z{>ue_8$yeIMBVtWA?@IczDOAV;t_)19HHVjMAVH>>15pZy?+tNw-A#1{u)9HkKA`k zC+WVoex-JO(dX}|R^Hc;hbVLeO}1JgiaT>&?`vp^ublTabl@W;wZ5;R8H^X%pQBg? z*1LE=BWkse?xj(h`a|xDe#u8M!sq91WgGE6h^a8Xgg=DsGv62OQ8zxN9sG@a+9P599Jx;LcOz8%cM)~t zQ`*5Fo*aIOn1jY`5h{L5MBVt5cJS*YhhKk+(0|}28-EX?ZhT5R`1j*2r19oA5%Mz_ zE4{@3P6(C$c8I$1Ded4FB!_>F@+aNlPu&RqP};%&Qr?3Swmua{{?Dlt`qL3A{dEy_ z(@$v!e`a#{gHKofAhh^{s2jf>(hmL^$>E<Q8zxN9el6%xx~SrKSS`xAXNOz5q0BJ+QIjF zpGzG4tp$R=7NO!lfT$av(hk1Y`&{DSm)tD)Z4oMdOGMrHly>mF-schr|IHIQTCq|Cc%ZUl_rEN;~*o?{kTR z|EM?@jY9~P{#(?)aNo6`PCkZx*M5k+bH#q2LLB^aMhbt@5h_0JdozFB_bkMq6&ekYdwz5x7WnV~+=*^Uo%y81wF9yKLD$nN9G zQb!{1Ye;Jx3CSt>t=9r^jeLw>#wlb?^|o_lTlDajPt+agr{v_v$LKc^$l;ZNlITx#LZmh+{K z)d(&5K{T?CyOHPcr%43;arl!vO7QC;RQx}$iN^l}d5-+7mwmw6_;Un`k@|KwLQ8%S zjih}$@*MsQ5$r_eC;tkmqX|N-<0M2Q>)`i!+VXSQ^}dx__@ApjVm-%4{If6`{}1Fj z{9l?l{<;xD|5AiB2fhQLn|OMkO9*)}-{%7QGoAj8@jjPDkI|ew_WNA=^amAKziW@s zwSJd_r1$z=Q+(sB-zB>L*ansi0+C*y4IaNA6+d9f?bR1HG^TVi3m8U)K%R||7BJ30 zNc2xf!oQ2C8=lfMHvg^n$xgjQ@P{B&{62`f z@hP25cTespke4B(?(T!o!lUk{bdueD3>iTHu!^ z_vyRY-n068SM9x}z9{YBC%Hdxu?lx{gi3!ymwXd@DDB`Uxj%4kcj3=8go-~7Q8#}m z?cgW5KXBv>!QYKg@!v(%jZbL@|FEd5MEPIeC-?^(eX=J)pHSMtUz!~L)H1;zf>7!2 zgQ%N+N;~)+lEXi8lJWf;|uKp*u%wX~mzn`AD1`#xVRi#We3`-%9*(MO5; zBOObnbKe<_y-0_-+Y760;j&A^u*TmGWz!PGWr%N3B8a0!Utn@ zkK;cq>?-{;9-*s$Mj+|kKbPSfr+*s2P9@SmZ5m1g>myVK)#&7B18&y8M5(-yIs(jhl$WGae`ZoJ=BP+wb z4z6!NczXhaa|~(Jea~~F+M{KY(?Y#`=Ft>agU&^T^UvZ28G%VzR2f#*Q$_|RrTP4m za`Ej@E^p-F>->Gk7{My5wYXhkP?LwD$zgvn=qVF=PIA+;eibS+M=3=HvG_zIxW%m3 zzb;hXAtNw_8H=jQoT}pEKlWT$dvo!_p3+_i{j_-KG5M+V_YB9+GS}9mvVb`FgZ>lz zAD#`PKg%qQ!oTM~!M`mWKi52fyP_oE4*jDN!1o$I?FHH%KP=z3DLjuKlJ7CCMBM&U z`PTk;h)~7*Nnx{pz=%Yck$&*)mt`KOuJ**F2IV$Y3^}(E+e^(zI6M@hC8tTR; zekp#E`oOC_i=Jjy+3n%_emLT457qb0ng34zc-41iM19#b*r&VeBL(y88BzQTrJGL? zsrV5VOG?63Y!dqBK1Qlz>AyVl=)WT6y~pf0(ovf}_&BPj+eGiWM0HHvE!tb5TxSQSjH|z^HXb@Ul!JcvDt!aQqWS$ImAWf z@{L)W(ttW~ZAoxMPHu6iG}8#7ZlmLt31=F?4n~j?a2SFG0K6Wi>L8+-C4uWROM(aY zr5eGhIoM73v!qQ;@vN%ji#Ps=_u~9nlF{v`5&XP#PR)c88iP#fesqi81KYyZ3J&VWVER=W^FiR%sSNK z#vCKK!(94nYRZD*;2TEp-W)QmFq&lr!wQBL3@I2qZ0L|p=Doh-QWk`b9>{knwZZAk zdc>}KoW!jl4F`M!1z=$TSYMEB1UEWXp5>{pbft}#G^ZG+1YqN7GLB{_CGXD35j@FP=Z88E~F}=Szt0XWrXA;EXy~n<; zDGjtP4h+-c?YxS2x?77E2fCs7jkzUMe`(;XV!PTue)p(0)hX8%^Ow{sQJWFymTv@x zK^oBYcwO=F1__oB7wn0abxkun;kgBPAUooL;$W{dBEf8?59CEX&=U^;;a_V70Vd_m z36LU^-C(s5?B%1n%}?cPboJ|b+?mvs z2pr%3HzRPP^77l?WY|~O{m^K>Fmf}v0ESF~Byj1rJ-GC_PT5DI%C1`yUN%?C23&qSO zilR&V-=O6jii)89iu~7Os9o;^gAJZTATtk{Wyq{V=2$DU9GNtnj|I&of%|Ffmjs^l zORzu!(%0ybFCU?1&0HawJXyH*qVH;oLj%&FjnmATyY^5b4~aZ;f+Wh3C^xS{q9g#V zZCi|j;18q;e8s`#R9A8ERjNz$JS<1K+ia|(Z=jc+ps?ewUS@;8vdl(c!s`%$(J{^&0De3s95&RwYVTdWTj z2Sb!s9C(%jvtTuZo9xZ3*UMdYX3!?H{YAE+5z&emnl#^@(oDwXn?|4qWT{ZcWsfv} z59o^?kfcJ9q(F~6e~&U`L5>PVjsiW({XNL4yt0Z!WY!F#G!SG?2ZG$QfuKs!J@Uv3 zd4$`9H;lB(|BeQxJ#Du&3eyW`B|@8EN?l@$=UGp-Y zE6N#M;O}}q9?8ce`Q|5!zQQ9tE8RU~79*oLaBZcz_F?Xm&7>|XNGMrn7C`l=(u~<3 zZL~dJ{lQ&;*7QJY3b{4@9{K(r)Rv1;A=EV5g8l(x_b*N%A+i}8v%aUZxc@g}xdkl3 zuke8lRRws_Cl(;83Yrj8Qa^u)zzedwwBJw?D9A1H7eLVzoPbY#d``kA6Q73oG{WZ; ze6mIs1qzyGJl{EOB+Y73fH+v}FQ|vS6EyDx%{vi!^);`)=A|R=B+WZX^D>Z^sd<^2 z*8q79HLs!Oos7Ijn%7A48YAx%%{xW&PDNgp=4EMK6XZ43yr!CWni1@t>-2L;aDx%- z0X18gYrgRhHY_%q!{s+zlb6|=+z6;=NJ30r_kAaGCnTrQL#?`@cDU%}Q0^6^;PDx2 zF1+Bo8WCjZ=5OACAcy*kZmvecTOAw0p^(z)kQ{QjBNg!qk_q+SV<=)CTmu7T>8us+xi)%KQcKluacOzW?Cgi_=w6_-j{nPVpwHn^v zUi0rw4Y+IDdyQu={TfQW{y`qf<@i>HbD+mq8q({}kD)7x2p-?j-lsvnNg0%-c%dVO z7)V@wt^`vI4D896QKkOt0UqP% zo{Y{-eL|9zNRCDFeo0O;0zBWqV2W_#t1z74`xIuHH{eldt)AI5+8jTh9>~T6*=9d| zAi|BO2cWDA^UU-00bewN4-fdvll6hJ=m%ij3d_u&?-v^2wnfr_?kKD<-_Zx)l14r- z77vUypO6P`n?d8oHJdnO1cRIxc##6rFVC@0ZP3tjt*^F!7o2-OgJlP?A$SxT7`|?5 zACC40!!Rujr4~vO>?wdVntHw@!Hj}@BwI-mO)oHzJVladXaO0G<0Xk^6;vX5Xa!Z$ z8;vNKgvq86xP!uNK^jCnq3Ti!K*XmcO9b}4GnS04)rHzpa3OzgqCwIyA_+4j%vAHtK1f(S5RdcM@iD7cKj5t=DB<^?!Q3ZZCctm*-Eh*6a4;wVxjAb=TY4`PF+wJJ+^e z=Q*E&)f}Az@9TS+&wNr(MqQYQ(Zt115{9KJUoj+%GB6#0^+mB<^bdF9BPR2-N~ z)34&Hx#XG2H*;rjp}8v%uvliz!xSde56&UP@M{8VDNXs3R zB*y*}@@~GAB>HIz+Kl16VDp}ujOV-N$uyymCx^xU!t>y`#B@9E1qeoc&zNq<6n%i* z4!1t9pnA>0@-_PkW#lVFC{*?rZniXbYFnncw`)S&JI&uacVwV96eW8GC(08(B*`;4 zvV>UB8~lT3K(@bkMKr&8X)0nyZm;j1$a2g6Bv(s)3Lfh!*+A4wD~F-fgnH1b zS!M^N96hEx=8NZ%?K?yds7GM0?mpbmfhbqq#d<$W)}Z_L`52|da-hm@hefxkBlcz*-Nniua1{QdLsA;*6j zs)Ze|z}Hwn>^~NtNmzh{FE0y_ynIFrko7U~$ux)FO!iq3xTLF9rY=df!^7$in&Z-?@T`#h~D;UslRu=zc(x&7D?GCRN~9A_)H2j4&V{< zCw#ptFKoSwta=F<3tI0wO9<)G{%dGB$4C_ghGPH?$I{wxXVQmE>|hMX4#x0G@)dLk zV>os&hEKxQ1urvKv6rA<@oq+u|Na$JW#ImG2#l(k8xU9z(DE}L*g`?z{+$RQqW8a# z5XAj-2MP7eYNSy53(5RcGEK=mh`{{lOxgsY{U$A4G8J+SsRej zuZh+EAoX`3C@c%HWfRUUbf zX1%@Oi#WU2Cj89`dfYr6W!XK#bR2U|A}PX!Wc^T8hx-PV9k`7c5amB2%NdyPCH*lS zM&?I?>pyu%&jOq4Fhe##*SNfN_ne2jk~U-9lO8LRXFW3ie}ULSOWv5(d?N{&)l?&4 zO<}+VUKsUW9fCd!r7k_fWXXKST8_emhN=XWK4j5y6m$|#_>onKES}Qvsu*i3OHTrC zxZv@mrXUL-&`L5rBIjarL9Q;f$@sx}kbj+(QiX50I-GCWxEU{%f$xz?YjUyW&Ar|` zy+$}2N^KUR4t1^fo+uevm=$H?i(G^>75e9Vel8zLU%Zvtt#}R+6?>(2jXn@_rS?{R zz~>fO^5}h-8u-jn^0nvUC^*FOy8KV8d7bbyH4iOl$5CA$CF3Rwqo+wWtQ)33Y|DIB z-w?xX`xSMV2Gf?Yy!B3}7>njPMy%i2{}8Q&b>$ zJChK$!2L#X@HWcD+5!dUo42yPxSh$1dXjSSBn9SjeUfN)_cr!RZ=<~8z+)7cH_CIo zXgSt0D|BQ^`^Rg4Wt5K6H*vbn-vb?jor0=D?T{Xse%cq1{Ze5%ZeaLBVTRiBJ z&(oPOxHB&KWcq9gtwla{KjN(4r9a`inSXh|hDgQEr8C;Xq!4Vy2qnz2rNT_Aktqquai1vOlqCBEX-`LI7eH7L2r!&hZkK5B#NF=Z-8 zvI3tKaIH~i2+@KuqI_Vq#%s~mA z87>YSha*^Nbb8EnX1Lfob1=W>>+pYZvP|G2&kR>MXAUAxe&NgnUT=BOz?os*V4^d_ z*2%BpHZ=y$3>!EzT#92~I5UhhUvw_`WOTgiys$y%h4sAG?*`5b8$_Odg8&7|I_PVx8xXZBJDHobscse`4*2w&%KB`=NW*(#$Z{e(14y9Ksx>rP$s-{Dakk-7}~K z9`nJ1JaMM;ZB6RZZ?W5>{?1UX0Qyu7qdgVo{TXoa3a+^@57s*$PK*yBZoFX^<^*n6 zPu}MZcXsHxeDg0Th?e!l*0eJvCPx4^dWvD5C|^ezP9b0B7q1?$+kbQH_6K^SLYz`y z-@s5lus!keSI7Uvm~5OP&fD>EJGh#m)N8rAqz>F+owX^gvo`ZGxybuJcjyi@H>e#;)OhWQ)JLJz!{4(!gs2 z39erqG+n^fnvQOO>+vOCU6<2KoxjE=p>=xcuB&(Gohilm5n_N$}B zZhP3M_QQM?%fkU94LcszWic%L`PT70?LawfSY;Mg^X16Gl6^AJREu}O^fV10EQUX6)mCX(j~B5bIKLpf=xv^ zxkkr>6D}}U z*=Njp1J2w5TmbtR&fJg2oC6d7meFDc4SFNk-oRo0#zt_vIkxRPH7`u!%($p}80GlOcM^}0{i)p2Uvyy}E7Cxh*C3z29rwbNv_PhbU2?0RRB zGQlJqA8;tlJ|S6#PkFewi~jQ5-zpD3pR#DL)7iEPb8m0C&ZqRpQf+^9F!r>ntn(@T zu~Lh@tx)Q%lSmHuP)c#&fBa}L0$OoFz$-4;S}`Y%pz)zcR4OGQi@Ae15q3nSa;w9| z@`xiU%&%QCHc)vwDhC&M>q&OL=y(KjAmwsE1sh?!y4{;Mo#dHvfA2|HmgCMLYkvn( zjX>6k?jWiyw$?JARD1A{5=0}%W@eZ@7;$3^dvM}Pmp!=l?S$;Xg--h!HlF@uUPRb~ zIPy_KM~rEO^l6a~o~qjH#k7>Btza-;$iNuA+DB7WgcV?TrA}YVkT(_>*WEyk#?hd_ zYUXudrZ9RnGdh&oi@)bBKRmL6J7MN34p#GmTqyM%d1RerZa`ozy&AFw#mo1_nqB@C zRzfpzh$rJi`lmBtf7g7<^-(VV*|`P^mZ4yox#$5}9_2Gpu8IFK2JMGQuE@0c$V6B& zJjpaWO9c9)hzuXnGH2+MD~Q;rCpkC3r?$-g`Xo0p>PgNG%%#9QN1xoFnAS>|2`V`+ z@E8T=vGkmJ5|LxZHU@~q^k+AHC&tg-&*PzDT_3`gA#`>RpP#&L9A~d8)V}Uf=Ete_ zQ0nXn)YXOP>fj8}gJo9fYPmfWN*%%9^G+WgSs{-|R|mPhq0|C-M7lb-fgXW=U2|2~ zN^DH}-~NW_kLMnSQa>Bd0-4MOnE#*qIt$%IW4UIA#`4WMFYqE<&rIAa4I2-b*XcT3OQ9rkr-~kcjqH|f*3kzd zcB<$B7|(8b<`>sUIVwhJHm;$otL2h_N2C zhkWeu@;Rg6$P*@;bleFiQc_Hri3t0=54r9jxCAV zC<*-&)hMn%LI2xu#Kp^s!vDy_Cm$ald=E^gQcpsyIBr9(NjW|h_*9ZlZa#Z2SykOU zE+53sc^O=^GV{dO9p}P`-aKai;#KX-Q0m(2h#?;K)$+%B`}{a%6TtQ{FB_EO;R<{z zYxN(3I`w)_dy`y;4FHPRG+&2zu;4IAx4g~W+QE~Ad;Re}duoD(dFUDJTzBI`tDXJb z+SzMA;S)$O>3XRlY`(;>kQv?trwwqBzqz1Y$|gMDz~gz5Fn-!IfSb-R<(bE*SWg zE{cPzc#h;9o2j}O&Ush}=e)jgr|UF+&lBRp_-(No9SmKBoohZwZGiK=>F7alBNib* znVttoaJ-a#%3P3&s0KFKa$q}pzWVNP7*uP%`c1iOzFLjMe>`8^^hq+rbOAA5>SC+U zv+td=H#m4kx1En_Z5W)BGodT-QoWR5_cWM}UbFVr$(XYc=}@msbI7xp^`LeUcHx`&Up%^qC&{-3Qn1_o_mA`%%h1Ltb3gI0B~)jxYl!HN-f_ z8Np)4!P@~E)HI~I>^|s9Tjz2@5iD;@>=$ zq(@IEP_x7$&@sjV-~-MlEb0#-(y;-7jyl*be* z$P*c2p`&T`Y$n#y4j=v*jI)ydf)RLrk{CZMb23$yJPda$A`-A|BpEG;4qKg+q$(@RVU-Ul?tde-mzet zVqDQVZPuY?8S}nPC1y9?_|1zo!TGo3XBVXy$GlbZrHtG`PeKD&!yf~_KStpev)@Nw z@oRCaFf#W(fb#P2U)>L9SP$poVb%>(GF2_?9Zy9_>6rg|0{GA@r_jPx#`6tE2IwLB zYHxRvXqbYk&vCDAsc)QFZ&oakSnLYR~^>Fe%{FmkoqcT?8?dA-u zb~gtVr0iX37dZz-XdBfk1%-+AxKQfKk>qLFiVg~s6kYHTR{fyjO7JEP=r^?rHzWfP3%C#2Q3zQrJ7&hO6({ zpyR?CbOIIWZ5R3IF)tpx_o15yCsL8q?II6(7FiKi1V2odvUeW@P1-r$v&fjRBI#6w zUO+2Fe4a%v3M+!2H%!?($1alYS>*VzBBTuW_OXk6yw{;ag zup+p*k+OF`Y_zmxf@hIy!-_PdBJ1rU1)fDZh7~!Pip;f(oa9*~Ev!f*D$>_3^2wuK z&Hvzick>%lk!-ujD$gPhgcUi3iX6Z{Y5qjdBG-i#IhBgMU>E7^S>)odB3V>qo?Rrv zvq-(LB6!nC%Dw@j8$VxzwnI0b9Htwa(i6C3M~ac-t>oz^^=WucmL?_Vi5@!*MXV$VBac~K7JV47kh?*nE_5PVy%K_2Ak;hd1N+!!CTGtP9fU| z<(FbU1~3{hO`Rb?XV9v;@nmFge^aQb>`bpuR@}|T%8LOfMPeNz=oO-18V=^+8f9&&TqE)IXec_ z{Ru#^>$Ap&`s^Rx4eXx)6uU$fHq@dRP$wn;#ja9gf+D#$4M2I1GIo#-;u&X@an^2R z$w;XmgN)gOYUeZiQn%Sq8&`TWr$Yiz22}zVqwAeUQS%JTW?MJs_CUL4iUmfnFW!gqN9MS{8a1!+kyL$`auzly@Jkg1 zco*gtBUEsR-=*B980#&i_rf*9uCW1%u(&BNJ=|QF4>`t*j+ls+Ai^yEF2aTLr01&F zt@ct2Yx+(CNj=8a^sS_@qNZ;-g=IB;4GMiVee)^ItLd9dVRlX5EDAGg`lc=5s;#{W zVu7x&;(bJ$Q3qO23$QqZL(RpH31XQSO}3g#O{FHgo7<9_JME~ zod;T?HLv(K)#^};^`Au7(PqZpwXMFkdO|vcPAKtyNH(6Fx5=T2PpL3j=cC_=4=&1@ zc~F)y?|6(-qHe?8sVO+7EB9{6k{E#(7a;KY`F&>SUMwb}y_lonos>>{y-}Y;NkY8_ zs5p^}V>X5S9vGj03JxOl#UWo|9WHP=P&jlJ&AMv{=1hU{0ft{N1DHI(*gXJosRiat zg86hQQ-if$;XYuXzUZ_Ux?tEQ^NX*g3q0j(2lYL5d~tqF-#iG5RpeO$_?D0vyRLvq2|G`DRm0h!_np2_R zDum`a>sTj=s%jw#sH(;q!~2Xhrds02^R}wu0b=v-?F}~nk{_>+EoQcP^%jlSr}x<7 z)w8{i)3_vg39RGxKB4WU7Fyak$kz{R7STW>bzEtlho(?0-)yb1Owoi{t~Pqs$9jO} zGquRz!VK_SBLW)i1UUJpI{l>2}$p zzAw4@&sM6%wJKFs3)}Bx{`eq!G?rPhZZ6D&!bwK4vRarWP_c%J|8tww;p4O8t2X_! zHu}uhPltXB^~g1Y&EKVKExdi&5%gpkZQilQBzl(b%TCXQFN}u~M1I#%^)F)NcH>|%lfRdU;)Kb#dq{nI&krt!W3QjH26zQ>=MSe}qpcMIGp&n&s z`BS9WEYV8bXy&2`@r>p+krYU4IaxGO23MjZ^K3RBb!ETD!i! zFF5t#1d`>SCZ-QwS@6H655@~rEPXKPlW>OF^gsQ)i~d}j{=|HfKW}IHvmtd}zR598 zrD6W_09T!NkXUoI!3wpsTPe1mi6G>)+QoJYT$P>rW+ z?#$VV0IFp^|Ad4Y$Rg7*KZkUWxqs~@Bua8B%sm>*H>)Xzbq)Z0foF{NTg_Ia9cR8y zgoPiGVRuz=5mes%)2NiEMyA6!aX$5 zXTDCfx|+cJt8fv|U7Kr8z|r1}=lb$Fp*(+KnjgGDx*nZ&InQ5M4`~`3IAzLgg#Bj5 z1@Q_CTh2KWjthIdN~I?JV>M zeoSjgdptGe36xkzi~b|=qHMfChJW%WwY&>0%oc9J13T$RXK|><3iFt8(bwq?5n+}5 zi#q0+D6}9WvwvDf=FqH+Oh{oy102K3EXgr48uZM{XaJUEG{9@2GM?+7oAF#pPPxBl zF1U<2IPTU4rsKm{qjU1m(h3YGh_1Qz5$fm7RL@u%Cr4?(L*zOMOgQ=JLvFXR#cF2!GZD*@8H8!OB_^$s(i&U(xEX9$bd zTYh`3&V&;vO&yS}CF-}?~}iJPRrd*;QX*TI+e-fOqlujL;|usjsV;>W}2OEZVs)L6~D zG%gz5$8ojy)u+Pn^30R0W~SP}-zIp&*hP&U;==r^s2NaB`mL;H z09nXhqW@@oY+Y&dvr;SEINP(QBl#KG-&S|rg5t6Dfzw{}$8u7T&iG9;x1SWrzw_gw z#n->tq#n5atlvf5G*v%cBQg&>PQbZ)E?@P(u2kU?TjI@{ii`aY)NI zj9Wfldp6kZ5&0m+`O*VoEYi%UC?-6!B;(;*qIl-C5B=F|O;~@Ho7Vz^_3@Pwf&D{7 z2AbV|fF|C4XM9-trD5Fi_Iz^9YNE~YA4sp6AI_w@6ZIdmZ2c(XCn5h~JgV@}o0bA_ z_$U4Q(q2n{ZqWX1$27+BkmB`k*;-5fb8BEMRy{Q2S$i+&ehEPFc08`qHsjHlMrfsTGGHy^9V z{!Omgc)2x64$u?ZpA}ZdmVc{`aWBW z_>|J&s3PWwh$nAZHoj3az(?}z)N`y;Pnp(pc$!B&4nJhP9r@N8Z2x+*Z(f6{Zr$$-zg9I z{Elh1{crfA$FqFmeGd0p@@e(PC~w$!{4BS}kJHc10IV9!lBWhhjww%J^nSiFLjJek zW07g~{_9iXwchQIi~LNr`CqPLcS~FZhn`6JtI+bDlPZ6)-G3{zeBA`gqyI8!Ksov# z&+M71{rBwM7GtdbTXT~qV4AH zK9jKDPfzx&$5M#4f3a^x`1oc2;sz8>+`l+T5Uf8u>_r=II_&y`EZdI$$Oik(-zFtf zfA#%V{VqR&aA=yp22dXSj_m*W_IMbp1;;TBvHTaOJn0i6z>&u^^RG)RG0a!AoVaN2 z@d>=EBJn<3Y~fjA^!|;WVr_M=v;Necu^j$pf*|vMxU{!^M*ZhT);~0={!44A-{Ftw zi$}k)^tGjL8pcJ4EdOa#`FC%K$ANg`X^F_IS^f-`nq+j6)RVMK1E`0zMD))k06?=y znTrl--@K^%T{=cKLNm`fC&aU4E=s&f~|-eKd+6 zV*pw^KW-!dxBS0S^Hqd@mJ^q{`19e42ZX-r68yeFczNnhKTcv0sa*OM!2&Zbd;wR?lky5b_@dvvSw^QrV^4Xoh~+JwUa9IE~d zek5l~OSKr@Ho0NKxj3A1gxi=_xAvi+CLNu>NFZogOg>*gj>-p}p#D!<$xUEX7T5<_%7H=+d(#%jAA7eVJg zxReG3-VxWs^L-usj>ikj`KKYV135TH_Y_>wFah$ApK@+L283O&CEwTG8cl!n_{ie+ zdzC*o7+pSY`w4`8160RZC$zuKJ$C!;mlWV-ue4Xaxenf^nT>5vyykNDDPPeU5H|}j zBprTOOz>#GkLX{C8`gHcR{L-Fpg+3(%)b#{4kLF)={i}%nug7`N z|7s|a@|E0vukt%?OQbyWZ-iI*n%fg8FYWg%zaZiAUtjOh{$UFfF2B;Ne2Ybil%GNT z8{t*HCZY0&sC$}{~dy~-$#%MvNi^q=ol{_%v$bI1R4j7R&gyDyRYClUXj@hZPO zq4Lsx&+;o0so%%_?^XWX2NEe?M&l##@E4VNG3 ze=quLJm@F+=kcCN%|1Fxnr-{juP=-o?@9X8@%VE))fT~@r@2D*$Kv@T|4dJiKk@3% z@TmWo#Oj}rX#LUph2`tcYdqwu*Mo`3C(HMxUgbacC?B`|1mfa9`NN}bx8;*xM3#wO z(4ThapHe4huyyHw><{00wMY9~tW2c+6(p#adX@h?q4F!Jd?T;&w?C9f{oH@=S9;LD z{NY5(Z=w3{^eTVuszl23_`cMu{Ns-#Qr_V9dzJrjjdyw04{R28UnR|E{cs-qft5kl z4~9MA&P>V3EX1$ZeCV@($7Un!f27^F=L<39lWV(g1{Kky| zzBiCbyP0%KJC$F|040UCp|I)-9Z3+AI)ooyewIU z=$@r{%{-Xm;SVukBb2Z(e<)Ueh1-L%)UX_{^5;J4-QVHm^QrvTS9-|%j~?Y?^d}4L zasqMnC+VB`fwntq4Sg-PztW88dc&NU9g-8809_3^3k3nuG5SM(M zX$0|J|1IY8jrrAx8v?@0c&iW|<0qfx-;2J-A4{Zt>sbCT_h?_Q#}g^fO(B8j|MOPh{y*jjeyDNql&@>rzeyF)Id`-*Yb56Nek0cil;Jjnfph0pL)yPd??~qR z{#Z>Hi*DIdyZ^d{j9l}fVXpSHMScBjUY~~g0Goz718@^iA3oVJD~ZCtn(({2@%sY* z1LapJ{l&)NeTm*cUvfQYBQevf5AhVD4>S`~3ZalrMO;4K$ zdQ`M(BZ!0wMB!z04k=E|Au3w`@mRt@I%EAIG}b&#N%PTAsz=&&?<^XH(yQ2Maj+=n zv7cnnmKP0BfVK}AS>~1@XsxJiMr{nUekThQPvgubm)F$ntBW_m<1Hn+gp3Praxy<2 zy{m}cQ3MXd=FnU3={ne(i$!mgeX~eyK^@aP3aw2zT5NhyKFi!aIFg!RQstLLmEV^{ z`CM~IRQXRl%DeQP=##Uwn5|DzXZ>&K6V}h02f5^(^mFJI#!p^9tNwH2k^WmIc>fFf zkM-**k@)HVTlg7s=0a*ohd*_hizj2zhQnG%D7|%qaGiu^v3+6l!pbQr1G5?S1-b$6 z&~-F|6N?zny53{!XYeE2JkCvPE@(Y4ll!mzo2>imLo@r0M$pZEqnU%8kp4Fa|Dk~{ zUbF*#^P5HfLg}aB2!5EDzzA4Y&bBm8ow3K~8S7_|zUZh`Ir^gbUq|BTw@7}lz51=( zMK9T_kWKHXjO6WAnd?4X>d$xCx6GhPKN^{FUFxZ0vQmD@xEYhk&A7dmQm~HRQG_=_ zO=)quTskyAn7fHqjyJ(p)BU!N)e}yqix z4z?@p7yHodMObWo+f8G7*$M7e;U};*8rDx>WtrnIMbmM8%%JOIuMi*jj-z?=a=seM z{10nS%kcJq>?OHbO7_q%-(j-zh~g#&=G3z$Wu=Wf#t3GX1VJ~59W^hU*tBu&@q1nU z=-p97MgkOX?CYYqzC-c0`#>?Pgdeq-)*cLLtf)%dH{7SXG}AfiLV@Z-0! zh<+}D!)fC#j74-44>o7aTTY^y2Es>Hb*tdMzQV5mY^}dCcKsJb)t?;Gnw#_cxR|!9 zKP8AW=xe-8XVEfn&J5B282oFy$jv_%;y%|z2r({}k`O-^Xrj`PIh%wygctXS5Fd&y z#5>HdW5>;vB%m6a zn-BGJasMaQ6ONRxy_@8l^uJ3#1XKGgaI^ZOD*53a`q5Ep-RP?#xUQ|MZeq3WFCdsy zb!H;1J38avZXNvYp03uNOsx}D{r*x%pnUy|;C^Xhmz{s&t}`9TtE4N)W1$8|-mY!! zf~(0aRr5!3`?{E$yHq=d=;thIU1_yh3VKO5LZrG>)3|Ah-!rH-W=%UtMyOwPNwAAa zTD_Isu6_sg#R)WcORHT5$b0O50JUNMP%5(Y=apX6jIgMA^=6?4f)tmU#duC+J6USF z5j7Q{2CKi_%JHKPfo>J}5eJfl%PrdcU8;*hzBDm{1Zi=bz`JVW&Cd|Bx6Mbgu&c6#{z);`By#Aq#}A7Lw}A9$(YR|k{^58`)F z`0WHxg62g}@1!3M`OpY%Ge7I|4({(YUVKX{Fm0Q8-P=2B@B>(g&7s&Qc$GC?)Q8tu z2e;5G4mTb?hIUNyi`#7ApGobw>4pj;_(5^7ezkf2<#<8sA#_4(qXvh*qRMsrXxtX9 zwBB}Lqgo$5|!nxE$L@V>64XQ_)hqZo_!O9Qh@10!zxJ`;&rA&3-O9ch+d~vgkGpB%Aq$er5!jc8CM zR`SMTC2vx;OIp#e&=bH^xjCPr5KnQgj zF^w9BNe}I%mABuJk6+2UYXh~i!fITHZ>VwG%rm%gp`LkyBO@tp$>X);cL%xUJu&E* zg4E47SnQ2ob@$y;^+NWq;Y_}PIJXY6I@Lo)s@9jN2)5*~js za4-sA!4HShLK#LN#&QEl>67I|#0Tb+SP;Mvu9;Y08D4>rp&k0{3p7q$9XbjfIzGEN zI3*VyOXGA?J07Qr$?J2E5weKQWj(oDPo6IFx^J^3uXU;%d2RKK#n4b{?$vtJ zuRVX{7T`5tD)&d9bZ`z|hKE@0EzvkOQZ(8r&T)#9Z{gfE*}O04RN49eX+|-#eS!yA$Tx-P15~|jHdkcu|`wU?x`}K z#=T*UCqH7Y@swI#WH+{Xqnn8NbgbE8T2x~vkHaGvPw&9uLVT?86iVF?v~c1BRCXe! zY%>=S09&ETl3>pYwnA@OR;Y_L9yVIG=qm8@gD8OzOC%Rj6Y+FNc`bVmc(bg4#txWdfR-a zdxUm<592}yV=hr>Sq%B1H8B=&QDTojc_zIWR@a46-?_2Y@%PY2)D7Fs?fbaZTu(!%0arbT7H@EA6Wct<`azU^kLKru zM;v};NekYYEc{&kn#Ipo5ra@H_?!nBow6`X9#9KzS*R?gZVU8+hcIPOuM>bl-HYBot!;ipa z8Nq&;5O$-@TPo}sv+31yC818!{XPV(dfm_jLEB6OMw{0}{x@gLrMIvf!Di^?U8FcB znZ2l9nC~CIAO`F(e>Ax6Rg;8KGwizm2QgA@xh43QR}vVJlWnLoz;AQ)S z(0IR3^kzpdO&)LQrI@Cv>ANC-7ktNUAk!o`R~9%p9m?=fm|svQ(l5BcFE~GZ3mmdg zj?cg5WBO{BIST^G7QGj~Ewk+XUHWa~`&13#C3vuG@CHtWqPktbJ$0#kJK?x}4d#4e z&l+};e5p^61CKw0fpaE3Ds^oQBmf@?ULzRh2RK zSkYHdlOKwsvwS6YOXFc55f8VUmq^uz#!J;ZF{_ZOzeS8ExTJI{N$FtITqZ9V!bLfg zETx0&#%J6rXa(N@9bE2kC#7MD@#gLHdzI65_cg?$-?Dz%ZjO9a`jsa$>mSFez$X*i z7&VxvMm4tM;fz~aTMB8rc@9cSANkA~C`f&DZw_%D>Ig$*6o$xn43Q~NOQMnnZ!+h# zcI%^L=0{^5v^r{=*`Sa+>aB6at!?H5FABG|nd=aP?N#c>TcqY7 zm0~AwES4g$7vr83by(ochn%$t6LRKu{2~jw)*_~f40Auf1K&9Q9Ov^^c0XAojQs)n z?OEFwa81)KHHWGC$8-oHWNa~Cyq~y0;`g>Wtbltg>w4<3x6Om_^GUwnHjl$}i|@4V zFi*PxgC_X+7my%h&Vh{C-%oDZJs26RbvHkxefR%V$@B!Fhd-^(5%93hD%$fTGlmwiDnQbv)w2mh|G=Cv=>>#!`2M)p0w_hc4lc8+IM> zd53x7I_bC_W+`HpP3iqG4HI5tX}fGRv1T+4lUQpkm$jw#VLj>#sz+Fpy6tfbLkolB zUZdp=Z8L=JAEQLrd@|kq zB)G|A0Viz)mLL{AiQ-SaVxG_D80a^$^H(AFav9?Nr=lSKB z>EgHd20JT9?=>OjZZp68%xPvDj5HSFTyqB8?=b(!QvNP6^p-zb-?N=g_(pS=aRuyj z{-qQ1@vG6q$L;2en6!vddZaK?l`Y~L|A@~v}b8WD~dln&k{Y*d?}dr*nabpzloX~4C*+R@@3&B&sT(g7#pkt@DfdJsy{TDIFKNMt|4YCL^p4MzL&9hVR zY-z6LmM$ow*6%VGq=^ohAkNa+3fTd(d9u)KMCZechqE*WZf&-ugEINSU8e6Qb$ZDq z#?dm->wo-(DBESWw7w;m*k{$K&F#p& zikgqD&m^|)Fjs#}U4+u)FHa(kHH}JNGm=aOmxji8>6qaz2TMXc(Oj7=vXG}mE0pw<&Nk_PD^$`IL1sWU!e6#X(*?Pe~G_O-zVlpLH#3X1vfH$+>woVaf^7MUy zAbgJ>TBC`VHF;7=A^9drL6@3vnjLco_rPP`O0q(K&}Rww;~1|rajG_VFLtD5=7lUR z7hNUN(hyr2A}zUyfe^?97F$S8e8hJ;j1@|KiCTepF6$%eJZtg^gGSk*#{F6dBd@Pk zMo!E!=KPj1J8axvN`&Cy39aSfe_p`EtQ{%D%)!(|h`9$b9{1bLu~>x0*t5s|5}$B% z$+2PM{tSgIpxrfV+~4^Ck9&+=M{ksC`Esj#_}HyO!-vOinb{A;oi1@{Q1{q%_eV_q zS?p{9qCZOihu9G0MTMXK#w>W`N@2k**ncDgqkE;VMc}|dj>32E&d-8nd-!&tIf1NR168@D_EC&C!-bnzV#^<*Z z{*4xpRtjcdNq zGpJllrm>*>+qOJG{>9(FwDrNZMW9VJ(Dm(^e}B0`_*d6%dKOJ~-1?x<(Fczb?eX=& z%+rJq!`~M^1ikb@5fOrZxc5wX`0I8|%(Bacn2FdBkbVdvrutw5`vHzV@Lw$b;D^>_ zK8hbutdQqn1lavB8=k-PgQE`&EpJ%m!}Y;WEJox;l$l*nJRyC+%GsCD`3G#3(@xAq z3#~4}`G@nE3yX&n7jXUo^C02^&Oab#1jlDWF8C}%&&=@Mr*0W7W}_9fA8YSFjmA(t zJD*r2`%iaFhr2`jPtEKj5n(X2|J1(5wcmOWa)3S}BD=uh55_$g(YG`1QMO}_TM43CzIE~BPuVt_aLA9oSc^B2np45Fq)EDx0 zXl@@X2*VTsvo@yt5;m+%_lS#V965AHI5g=S1fjVi^zouQqRf}CN}0Vo(N-1|>@aq% z2w$OcAC?&kMZkw;p7&t@h3`y;m6HW3?xIggBuP80GtYx7@2pQ{N4YJg@8qcEsjW$j z56B0JUenuIK(Ms3&3xsrEFd=ymGRMw<~ck*uB2Fuv2lrOOwgWezrQ(SqVy=-J6Fqb zyeMi+u)5r4?jdPJ%Za87;DpB?4n+;6?cVdx$n!E6+(zO_%SSuRkK1w^7Y(5{Vt)>^ z2+@Qy5tI3}>=85=CTh71vY9@J1k#>+dL1kI;aF-mes^O#*M%SO)Ctez3+anp=6N%9 zI%F-$9Hc2W8=_pZXlaB3)akZ&`>gr3efkM&27N+YFS|a!ox^Q>e6X}}9+vl|jmr?D zfo`ogwe97!@$AcLZQ}_IrH$WiLtP{fn1*O8Pkc>U`QkO&N^)ro`j%XpUpLCP%k*2z zSyz+%t%#TC>m?DKu%>m^d7>ESqulE!UFS0|cunK`Hq46$2N5r}n^UmoK)l#)-hr64 z-~G)k4j($q0Il5DG1u-cIEI?D-TZ8;Q%_5@LACjfaK^*d2b{GN%O8vHPsr&#bn3Jq zKy`qeAr1NXG8vptVOAr9a|>eDV%p$NPD8TFtqzU3-an=;HDsIFm>R+Z+y|YOAFk61 zM~=j1j%EL%&jMDq4OefG5U%z2qa=ws$a}-pcJ!Oa9KalQQj~)89uJY@z3Z*qFFfAA zKU?~Lpp1nnn0d%pxC1e398A2{VcVDeZMMZ)yRDl+Y};Xe_7>OUjP(yx&foZ4r?u8t zKb9J$+ zG3MTBpA?btKi+ie`nzn{k&0dfM?Z#)^F&(zQGX@AetetX>bGrXyIk(KeFH??H^I>t zasLQ0dyNolC{50$H559L5c=DdO`GvvhcDjx@sVpp=(D+Hp>BDye#{V9OGR1l<=-t@ z&fMZqc@D;&j{2E!xgCzcUVAM6a{tETM=7lX^K@d?#$5BZN5BI)-H~fvKMz$E)293m zvvF%?&i4Ky)DK}ABSQTWVwO;sjd6tfbvQh#)MVo)df#sNpG{e)>rwN%@X?e!qfM7w zK5v5cmFqKF055nv>c{W;Vrw+Fd$9gNBQy}39KEwkf}JysSvO^6((SE=c-u;vIrcj0 zsK$47!+63y;wN{#jmGecTR+@N?b?DbC*VtSF}^A0;~#c~B^?irTSN+}OBwDA7~u-3 zv!^~9#?wihO|H&`K00WhO^!lPcZ>KqhDOV8;&g1h1H*E&bxJ9^|ID5BqSR4>>qWLc zUpt5Uke#jGt+)?Q=qCcc2U7qM@I#2HKJQdAmHJTjURO+}K9s#zSa7d>p=tl3KHO&h zKiaMZKIiKH&t=T@85tunwlSkK_?<-j-T ze}5fd^tr{cx+9?pVNV?Xc9XZ)!u^87PO9?+dqw$Q4evadgKSlV$^TBmI9oDz3_)?> z{`YJd6LZ|4gTJE3pL`jWk3V-zmkj1=1M4#egL`qS^#`JSZner_sKdijHm6>8IFZOk zg0EG>`~}U5dmah)%;z?%&pwm_2~co0ul{*oIj?@-cG`<;8VM?+(Pv&DEzZ^M5fUOi zO>HZA+K4=7_wrI>DG$7AkLEh=Gu^4}z2f#45|)t!>N|6$Vse3^<(i0=>y9N%-)SE_ z&0}d>`XYMjoI|_bWWZfsB$_1>C67abm8JwYUgA<77$_ognquE%N}!1Z0WtwivF{cM zC~BX{)*QamX8z8j85y;+ZkVfuQV&2(gRyEl0&XLuaUZMdApwiu`0bjWmy?YlO_nxg zD)Gx_a~p&(-8s{P>&{0QC2-yO65oLJnXRn07<2?`7sbS>ExjzJ0P(Ps{xC%QQh)dh zs)~ng^@pL_`})Hp#DjA{gzkQ?PGOB5REs6YJ&AQ0psoT?107IXd?S+`4~=lmh=3Yk zS0uh?#&B~GC-(%nZ(X_?#FcTzZdUQGVen021T}UvZ_TbR^VSrLaU3r*Ksph;Ov3Sa!j)qj;Nqk}P_d zjP|Po8}$qdl!qf$_qKc6hxI1w#(+_i3<9cfm|wTN(A;iW8 zTve+zA)*W2l+yDrvZpzk|7TPVZ7krKMXo^4UaYRjmHVm3T*01m{q`p>YYEH6H=DBc zG|pQ~j0G%>D(3+#OGMuFlRF{)zSN@=8Evd}PuD1O3d^rs10mom-ps z9c*q~q<%go=0$RLvT|^eA9^jl@A2sft|1G@DjM<^DV5L=2LgM;cv{r=ZsW^t697O& zNmpvIioVl@DtbhlPQw#a^oX_?-(}% zth?n1$f}6KgZswEffR#};lYfL1`f{0EyU}bk17~%$$I=e%&5nps3Q5;dYPM!0o#mn zR`V4vGP&0gwR@?DZ}`iY@V`@o;UC^$6j>B{O2b|IrRsQ!Ph{$rnI93D}QgXDqyecQ6`1;i*3}E>B)d74Ht4Lk@P)o3} zLolldZGq{G;g{QvnmzsadJgSJ1o1sWg@j>)bP2B~P*aL1o^3|tmP}v&$`mrb*~(>z zl_-DzR$K>IBX+6v zm%Dl%6d9jp8EK^{M_Ue+L{&iBUkIIzCh#7RqdyeB-^IMabCdR45^oK%-Sew4#p)7C zigiS*kM#%cU&8QBpP)m47bhnk5s&OI zg%uvQX$Fhz5iC2c`W(^HXqAiiu9FDl4QgQJJO&oR-uW6oemzzaldGlN!-#3ok%-CF z%3*9o#N=vq@r}k4*j=4g4P$ofT1u`cmZg4z3JZW?0O&1Z^c7E}36EBl;aSyz;~9@N z1&(Jfz6m_9Ef4{U#Pg(qXFXzLZ+JZ0Q@K8c7|huJ`I2Pli1rjmWMhc1|C8c(7Mk3~ zH?!*8*MSIZU1M=Q(Sc-KV)q-Q-*k51(LG0vc zXYoyJg700)56Z=oZ-7<_&AEd(mmg*kOD8MD;Y17lO;N7U5hm*!ix<-LGhY(P6{I*a zcQ%~LM!r|Er#r@lW8gCToP!nnx+a@Y(a?p|qhYrsZS9A?87X z{=7!?Y70aH01t`|tbz>Q_t2y(pUC5jeqH~Q*Jm!z(^=6k5AAV8k7^Yntq<4b!?5qVmPJifF? zUy-NaJ>UC#E0HIg=jp8UcMok?PUKj^aum{rA{1f2{=fa}kuG|B+QaA_8;kwsXF5d5 z-rk1oRL{{0us0B%rAMgMK5+Z35i)!*;A%$Yp9 z;V%07?>x`DB9AZqeV@qlvdH60e}6;d=_vB}(%)Yed2Aw&Vt+jYu(Nec66YUC|4Oc7i0(R+JZnUr5qt|)k2uypUE%G@=^Z0ZbPVZy_~2Og z>O+Kt2ZV%pYY*pELCMovmuuRo^|Fti?5@4l1)J^X;Mo@ z9ui|ZWul4bSbmHGe`BkgbFe%{fuA+oGh&4$l?1Sr5%nA^EG^ODaB@GU{yxGmtT%oBI#rLqkISN;5GGT30vBBRG5yrolsdEcpQtf z=_7C?Fpg{RLuCh3-PwkNwoP!nEDmW2nHlVd{T7v0HM}3cka&ApMq0KuGa1wO&U;L0 zCdo8765g3@FX$COlcf>1g?LA%H_dC^475$(L)rP6-w{Qg8_dq2-uicGzr0zj)bW81 zCzb`!J#cYHpw{q4X~sAdPF#DkdK$Y%q;mkYV+JFXZC!lkTnYX%RHsXw98QarQ0<3& zRmwvqDWQfGyj93wdo4*5t2jM_PQ^_m49+*%*;bgjLknpSL>Naki}Bx6eI2fm4Y%O{ z64p=$qinL_cC(84Z*DCQZEgcMg&sZF9*~-UuWjZTyeW&8$$V%>L8LQndhn@8znD^c z?FHwkmuj!#@>x`MZdcNsLzrgN<{jlPZ`jg0m+|wGJ&VO5p%EKrLS>)3WYG2 zF|C@|{BdyD?K-~xU6vHM+eH}p0?abfHXOgGR$pL#@FEZ#L{9R5?N>lQ^XLU$lavPy zDIXLnB~wVbv7Ds5WtDQFnT};xp;EdEDIYQ^xcr9KF%4Jwf{oUAn)e$BW)&a(I(<1o zQ?RaXHMDcju=glGqQH^=F>*zjL(E zeV$WLkQXZJ(RZn(9>Jm>&kC_wH(5Q#Jjm-2jim%$kAe6m>Tv<_xTwecGKJQoyr{>P zH+Vg|kcZ^;xYUK~!A10c*eTQ_d?@O15}U9X-!|O8ZQ?ueY0mdq57Z?!&0 z!1wNd=)cjmX5wCI{=A-e-kP4Tl+Rz#pH~vkgXsBG`Mk6K{5G9|f%g3SFrLTD=Z*E} z<2&=`-_Y|2`Mj+D{D{c^F+C5F&oAPha*pp)@q8gY_mj^L>d!Zb=gIW^+$~YRb^7y# z;&~r>zFR(@sXtE_&s)>;mGb!u`txM*Jcyo8mCrlt&-;t#e`n))ynNnRf8I?z|AwAN z$meDC=j;p-@b@u250TF=vVKkdrIEU==LhxYLE?EbJwJDo>aUx>F%Rk{=Ni3M zkl$QF}`ys*?zkVO{#XQEhRFqcJOciHt*p+839`@YLe?&L?tOM_+%^u_-x-BgMwmWYKGvG`Wa^XZn znlObzP+941dKo9P+d&x4v+$=E4S#wNyM9QO0q|EY^vaFOD_m7mBBT`lml_}4aM9S~+gBkAM z^_1_4lp|Zplv^p~hcad4Z7K6rk#b85nQ}Iz%#nT%2$|kL4%I7HMK$&vW9Vv6D zNcp>-GK^BTW+`=j`J<8E(#iBLk5_$Z&ctDTb|LA@Z%`&yTfY*xMwNvPwM2POJSLGH zLZZCSWy(iO%9H^j|)Bo20Ml*G-%wTq$fFA zhXp7K%hjjqu;mUsqAQ=1(Xsq5UZpX86grmwBNwP+MWJJLJIkbrX_t$TMqTS6c7R=u z_SdT9Qo8a*Yx(OCZMvEjKOmG{s39eg|32v%=qzMz;o=otaUrPgmesW$Y zc22VimH`7{hu?1nJA4s?ges>a{rcjw44;GeT*2qwGm(B#_>9J92|oMq`3;{M-$(k{ z@tKLwW_(WLBjv;2HB-T1z#CUTKWiyQw>un1_rL---sAI)M zhcV(zVjYByI5YQ%5vSu4-h(qnoI=iUH#u433^^f&9Q)T?PO^E-`48o`jyXSWVH$H9 z?M0&pMAc$=>h$l@*xX)tW$_qhtJqM}-!_w`XAn-+sk5WN?wmdK%ukVi(WMR*oOjS$ zf_OI~0zS=NkIYpJ9SK?K^BdHuaUD9J0YUf?2MK)0$PP*hYBhs8U9MJPK000AWIS~^ zy98?Q&6c5SEtcRrZTqLZnzpolNR;=KOxZzC`A<5D!ue);%I1{vA(=A6DP{g3QdZv~ zW%^Ufk}~Csy3Cy-Wz0^Q@-*=0onUPboN2nu)gonmJta*|mIJ&VZwmqYGKclde@*BPNZoj(~x@Ss?#a4%!bHo zv%-opBK5V=7hpt;d5bLA6h()|G=~mdJ|F4V?#D>KA^6P2XB$30;bXQ3w!oeNG0tN# z&M$3&{eo?Q9Rj+!re}Z)TNQhNEwD?ltx7aLy#j1io({Hc?a;)wHM)sCqeGL7E=`a+ z)NTvxML(X7u-mG12t^M1(j@{}LXjl`Sz_(BtzBY~CpM!?Eb_!r9{TZg0_BNA9{SQH z0eRw(Cjogw(GFw@Lly^;qxxH; zQ^lSDne-((1v0_g(AMBHSn+)o1HBqP7v81!&5%)#6JCsyC+Ich@ z_epeu%IXK!GZ92?%~d+L*XlccbZ)AmmV%7Od-9lkqNP563pe5WvEQ}EfdhCIQb zb<&|lnxJV2x~RJ<&{#M8clZXF@ojF)`K#gqU+;1Z-`dKOy0`KT>Kw&}@3Sf<{;F_% z9{3aOTfP$mSwaU{aNPj8rl&^|{~dpI%=pHHasKXg<4@pAZO8Bpsw7DqXu?;jIPgsl zH1T(=4a4^|>6pjlo7P5Acp zCzPLSR~ERFKp)ylqg|#51)2p#LtfY~t@qYliP8(WByf zjN|)Xd5Q1BUk1L6?jEW85AfZoWWv{z<6BzG4WH;A(VZEIb{%AU6Ud*sc?9|I`tJZU zzRiz#=dXSR25oIQ$zLSa3Z(0Bc!u^L@b_6o6Mt1WzNNw5_^a1}fh?heEWqeof?N|* z4E)tG;~Ue8@weUGe~9*7+mPWK6d*|)Xu?;jIPgubVB+ssOWuF0dgHHOGlp+ZS&47g z6@$OQU5kOgAIh8Xwcz+(3G#;Tvv7v5o{q1s3E#dh#enY#GrsvP7=KSw_f+jmFRU7q z{VOA>YiNoOns|oxAM}sqeja=jVR9;y2e@ZAY8;p@rq zEhUare6?xL*A>)B$9KWx+B8RT;TvGax4C%{{kPYn4CJcPlEf9i1DJ@PJ9-BB@9gtu zWlj85;rNyYy74FM%h5*|z7jgVg5L~$YdU)*@!#RAW5ze88RPFUulQEAX7~n`lKc%c z;VV@f_$HSz@ptTDhR-{HjxdIAPf3Yy*RKYDgF6)ie?Rz}@U`IhwtJ2LHnw5->go9E zn(*z5Dh7N{nDNbji1Bxdh8NcUEA+1t$2YBn&fxe@){omcV+nOI==QMd_Q$827Cj|_%=Vt`J?9Z z$ln=mq*oPSv4hPStjII?>sTE4J}YVBuL{R^isnKFQhS}adW<;@q-@? z8lNlLK2xZWf`y9WS#S9Lh6$gY zmb&QA7um3Iid*q@4 zEzC2t|Db(0=9~B{!ST%^^I>gY!C#L+#^05{B*@D@7$6s5wcM(p?y7OnxvIj9}TmO{Q^)`hHah{?52ko14 z&4jNW$M+7IH!FYkta|q_eARV)A6+n-HVX?C9;o{d@HI2zn|2@LuZt&qSsdTEtCGKJ zCVaughHuW_CjQRX=Ka?bz8v1Z-(HdUl1#2Q1q&6$!{6_Jnef>;zAxSFpFJxdyQ0uF z9@X)EZE|fVun3UkQ${yeIzF z1~YuuE=zoWoizH#Vk}e?4}X=-_y*PD`bX|dd@KYM555<#n)usO zllNc3pyDe_J5yajTYs1Q^)|WQxMIVXbH#+O9>@0!VNmg1 z_lNTv*7+Xsl{B1G{TYhVV*MV2lWpMT^giXZD{R@E! zo7pyIqokQ3coaSrPi*Pw_~~-Y(-!Wf&4E#)v84|0qm{?5TV~O|jwt|ASWj6$fG}ZCIyQiJyQtl$#_U)JiZ$rHw9NjEp(f4kS=TXX7VZ3+ zC3@{NAYrKr>6c)gA+ru%`b}TWHW-__RrmS40$aPt3Zx>5J*y&BU?{$ZXRr!zQZuxT zpD7iXw8yOiW%UZ&BP-B(uuAI3mn5l`RZQFGaZL4fOqa14!JbuvFdfI&a6)5C=cLZm zYN?oN?smh3jXpxj>PSqbp0kkp);)~WhsnWPNF5krklOx~PHH3;M>wh70Lh{iH|FvR z45DRLW~-X93e=|xRG|vc8@;juGqir6Dx^AgxK*H>UV#T>1y(;}slZQFSp^DuC*N(Eln zIA% zE)vrX*8TCepYABz=$MW|vn@PLba9?8(DEh2v>8e4S=|ZKYxo*I$AoFRc4oVRse(Hu z7&3vWkHj>@4bz(cNuC~8F=?|ordS=*eGF4S!sJJo=9(}~(;O{-tfrjhs>PVe_gcQRG`Xq&>*Putzv4lZ9{8X+-- zyJ4E}v*f9oifOl#^VCGg^f$Z#7DEWr349Ho&oEK%+lILgKdp|6s+&71O2~tXaT3+K zXH}+tz93OeMmZLy9u%lvr3F)_Q3DyOR|r)HLiMVGDkDqb>XU75T+xf39Mv?5s)`$` z9y%%wuG)g?wOO32e>zH3Um%G+E1giihp*ua6jWC~QBc)$M}<+IKs8&Un!wDgx%X}R zNpjUoMRg~WqZ+ECYQ<2^BUIH1)oTi>XH`_rEH|z&w;)h0lBj-uT5Z7wIx1K`D_02u z)zJ=;t7S-H&w7JUO~u#ng$k+zTNSSU#&AIipR4JpR!dYp+)%lGlw94fqB@?zxq3`T zRhFSzOQ?Q9KpOtKf+|!+HP9Uu<~amc?@LtM`l(!9KQB?uqY;LApz*js^%kvxGHoA& zB=)S$gsL~8TBM*_`mw^*7hB!9!t91Xl_gO%a6>gnM|Bee0Sl_NGdWk4byTO3#GbX2 zP<@84;fobirBzg|+)-gnE>P{0s9bR>SJ~$zSI?`c0tKp+2+36xLv@f)H6c_>6jU#M zq;R$DV>hlalOa&$NL1JRs;FA)sB$ojvvBpw49?Y$w7|()@B<{l5(S}p6<@=bDyU9; zsGutAj;f}P>ZC+9$PLvB+@i<_i(x9N3+WtHjE<@%L-jqO`Uk?p-@p$!aOy;eiWn@` z(h*%?i1fkYl3(I;!-rrRfwQ5)Pi=$718m)$$_X(i> zw5ZFJJC=o}UtxTu%BY`3N4I;N7RvywYg$#k}pE!_x<%2Mg(v45EW zdNbWJ`vX%hO5egt$Jjr1yLf+H544x}kuCAF8mui4W@Z8{ZnBm*zyipv)DjygfXra1 zGV#;p$k4`qpkVs3tQ)4%I;Kx0rrK_p-qA7jR529@BXf}!G#RFr4AUOM6hxSIF-!(i z-)~eQVRh zLq35DCvHG*(SD(BTz#gaYNVq2iYyZB&W^ScRT+kg&fdt&qfqU01=Z&F6|SbbqXNeQ z)ejQYO*gIr`bw>ui*hW^D_o#zq@zki5_{H(sQ!W+)`HF4 zQ2i4pxf+aeEL>F)sBX~mBtsR6Bv?y=w7kan8lIz|y8Nz!YNI}izn5+nrsNQo!^|X#^70R)2 z)kC0aqobORB=)SDglY((`UyOsjFgIZgazAOiDZ=F*W&A#We0&iRm_~ZNc>J6pm>DEpjqUKOhMv z-U!nkd=)D}@8T=11Uc6$Je9BGhRK+cXfHASwU?!mbKF69a_QaXEL|ay-@#N`P8)ze=s>WE8|hfEDGu52cgy}{ zD|X06C&Zeme8G(!*6}#bl*lYgYi_?mW{k_p*WBpXn4SXR5?cPOL2GVjki?$#9E!}_ zjIXKr{cP#W@Wti$L|d>{1>9o20T{X~01xvFxVKyOs--;wuJADjOf78!`_^zy=dZLD z3b0A7>{+8wl-|;btlVs^X>*J-P~oJiEq6O`$Z`Z-41yCS_Je)4bY<%9q_TW55bLD} zpzwj2$pO55pNyvVjY3fVY{O8j1nxXTc8nb{QfcbPWXNz@Dk%!+s5Fp@bM?l5K(U_7 zB3tIq6f4n|zKONdO6}5HmU7urZQr-~QY|a`U=&{&W$N`TD}EHz3%9UiEYrZ{2-en1 z5&B@}+AT0Guqz5SVY5`Qsm%PF+H6xV&Q2I!6ypjuh?)O*6q*-_uc`Sj$r;$?T1#`O zY(+2PEt)*|11qT4a8ObpfFqAkvlkffZh_jZPGasrYP}Y{Nh10kYH87;Is(yJyn4kE zg&eQ5S=56>?|DJjOB=?8ik*LSQUx zb>dH4U>p*b76Ng2RHsl97*FjAb;{P-lE6znkf@C+t(uUQ2x;|&v=k)VdW^G-Yr08G z(i%=>aC(!PW^3B}f@qpUBPKD2hS@0Nl4+B|+zsCmLpk5;*BN|IkbKWZIc|Ip{X*e; z5giF4T-lWzgYRVv4Yg-yY8h%@i)thJ4pIfaDg+YWyUXx?M0`KKiF_l)Pi}mF@t)-S z;2{N`OGqQWdj)W5#P^-t!uU=hfz&a5;5){-*Wv7mc8`w8oB9yQAbt06U%8vP+1Hno z-*hd=7x7}?`WWDE ziU+d2Hf0H4@cXQf9R>Z_s}z0g?o}T%_9>P4+~iHio-rC>*Ox{mnDaBN`{VE>Tpu4( zrR_Gk(ndlWnf5V48tEeokqlS*JB(xD`Y8MzjfN0kXobcXiO=vB&01;ryXS3bl_=`Y z!<7=WM1(I%@iNNjg(m=*xL4t&9j5Q7ahsrLHT{$G5{iVo{@}_P;&9EFN{FDSVH6jH zkQ=W@mC3tF|L^jzt;&2<$aFyFcQ_xG28FRmI6}yb06Q#l0cE{ul$)&`g{7RAw}A`H z-lKqQAp|Bs;0z%!5dv!of$`Fl!Xfsi@HtzXLIN*6gG7^5X%8`JZ#K+8X%N_&2~6Wx zMPNTG-G{D+Ej)yw6>Nv=wT4saH-y(G;nJ&8d$~Ic#4$eWcd3!QF)uBbjX5oE9i%3` zK&|J^fxf+4VJWl&H4`6;A6;mu_=UF&JEN$0KUjFK;(b+VO@%ZvxyQfa(n!U>J;*zZ z2NkbC(!85o-|bbe!JLp&%cQ+}m+0{9KbP%Nc-S6c@DTTh!Nae=89XTCm!2@}47nJ7 z>Ek0)IC|I|AJO}m=D!mkAkFZ7d=T57*D(K0qsdpGjF+7Tg**sofads$+?j*v#|E2FbFNSgQl zb~pOCyC2ubgr$;_)V$$R8GDg3Mwthz52)yeVtql{p0s>}i}m{qE|kIQ_bY&24xUcz zQ0RD82qZdE3%Ed{qpuL?!Tii7flL`^snP}sX{3xlizxw8#&SX$DI>^Ll(8KNlxE&t z8GW~Bs|CB|mq>e7Ko+tM?QfvKWr)8I*pv}Zp1r_>0p9997XfsMWoJ_7!3Cnx($5~b?4NCE;6X8V@r#bao8Ph z&24EE+K^d~lL1)@56I4DDOLNOPR`2g{{d>2eT-@r^$8R;emC`_sCCfO1pMBGRl#)> zi7bZyn3vat%UYny%Hy(fA#30pOctHf|Mi3NqrBgGa~&?zpcIRxb#V1n8pnR6MdU}Fe^5=6C!pvEL< z1PPM;nVQ%L+a`oy6PIQ8*4>N`JBR`EgA0!qq_X+eR$e;yA6peF-fd0I&4acbrdf~X zZy5bT>D+I@Mi<$+q0heCr}|qx}{sA94|mQrOoxh(3BXO}Zs-$7O+mvs=bVj=4+WE~_~J7I3;<%$0I$wvyV z8C(|i$3NM)E$TXCh3(Y)V-v_KfUJuoE0M_({c(gUYZ{kD{qehf3|9@vs#Kq$azWG|=Ws!7AZQ=6@lkI5@idHPvGm7YkAW;8T{>Ut^G5V` zFZ$g7LxtJ@nOs%eXNEqX*>1!#N|&r6Yf{+w!T0`HRp380Pui0SUcj&1qJZC2#^{W1 zY&5{v^$x!G>!KM71AkZc5Eoe=-|=5<#_`XZ;{*O~ zo0Rs*G|gWI;GiFA-{1VfEB+GyEq=-Wmo6XhyFO6xk4IZe|Kt!$0bwvpXTJA}-wyZj zAM*d>Bb@*8zTiKyQNh2sse%8{QiK1}TfN$&X|MjL_@5IKuw7;sWsd??@MC)z;Ga2c zfbaaVSMd8`wTmSGuI$nD7|#DJrw{tm?R|y+z1XKF^(TY5ZQg$mf8@0aC48xZ&*QHK zqWfmgl0nV1ygYJfh0YJAzo*oLrZ{9hLT4IHu`|UOM`93cUe|961I~wFZB%Kr{gI^6 z5bVbpTpA6~Ulh_j4A3vZe6oghUl2rd-bK8+r73UE?U_Eb=cIQP9KSMTYYTi&e-@+#Ug3a?S+ul*?@QA4nNvDmr3^-}n zG^H&^!T9U*EeWc?wn88^X9FRSn)8zrTp%?ko4|>u@j2TZP@4p@`IcI$wB|w@&9{7W zio>J%mSI8~&9{JJWxgdF=27T}r_BMr`@7?!!z`WYgMReipm6&j=5}R2NifBKuWj<$ z->XREKIq3L>NrKM?`(?Z`f*~0)Q@R-RWK&ArIp9e)V#8MZ-Zr`xCfqqW7m46J~!L* z`p^r?0()!LUArLyp=RToBVtr=?31sU#%T#HYB7-!2 zeaHU`La49rG8@pdq)9QQ{b%`y7EV!y_~a}?=P@5X+`iXIk*8u0y1)AC3&Ehfye zzvC|A+<=FS3-RE*L$NlA-_zK`pwkC^ZLm9s}vfV;t&E! zgJv3HTv+ebUk^$bzzg%&zTLd5VR8$346apz;YV$g8 zV2YQVLLkLUvDSELH%z4-FYQ>aAS^2cQoK}VKNm>x(o5MKp@(>BGznz!(kNA0NhVE? zm-?^(OplkAzfG-Jc)V1VgiEjIHD2=BK7J)8@lQ`M8uM{d$U?`v3zsP@Ev17oMSu~J zV)U!S!;EpBVjiQX5lgh8w6iL0p^!%A@%U;kjr_%AA&rD77wXhUx6= zR}4N@2>)5ntGh^lQ{kg}NrR8jmkmC4CK!AKS_7`OR0GCG8&z5rA&vOh`?kTyfK;x7 z9{9Kf^H>NU=K0y!YKW)%IGn%oEw@oeIr&Nj1oDO7wh4k$eJ*7gGDYtx<|5as76b*$h=G~d8C6qYiY6HEQip;}ERQ?;Tr zBwIO!Y87>Y2L(}oU@ZiP-eqgSvPyY}i4T{*O_k>|dWNJf|Vg&yZKqEH6cu_YjviT9voRkk`(Tw`sCo-^ylrO>}u@&>>OZx~jZ4 z4SAO)>h+B`f9>>buI2_l6-a(2!TvEH6WsM+O7s!q%FHD#BD>@wHHCN@mYskAbL9cJ3A+Newo;Fd|_f0PE>|&+9n+$pH8uCI6 zd9)U%>&s#(j}2m8RfT&0Y3iF{$@+^3j4wK1{Hu-e_x^ON+O* zG}=jFPt9v>OIy#sl}LID&r90U+w+!QxJY3#zZF`H_vAsZ=q>Z@1ikVW&F&6ogF|Py ztY}r%pN6a;L)I)qmZjH~WU`*%vTnbw;L0;(eKB6g^@Je{!Jg5=TVeF)$(MvStFmqz zvL+d_uD+tz(bC(7Gg)gHe>WaW>Sv#JV>v*wna0<+KK4*c_}wVsUZaG0MhO=C6+k7h zwc#?VpptyA1{v1l%o{Vq+Sw3f>Bzfa#hGC+Md*ee^6~Rs>X+~j>0_mT2!9=wx6SPd z%Lx6#_f)NQYQDd1W_z-ga2P=wmcwDpp8nS0C^(ES3(ms;G^6u|&9BSdY^kf+P3Bcu zy+)7Mo50eX7gI#N@`M5X;Wb5GX@l^040&}8c@|Y$q{|ZqbdD;ooFVUNLtbu*j?dB! zI_vU;0ewQ1SJ{wP-jFxNkY`c3>o3dt3IqE40;Rt981lA{)4M}+L!L!1*6H$u0bQ=j z3pV5pH{_jtS+B3f!1tB%m;vpn3M()g_dY||tA;R(_LtX%c{8Ac2SxdPh)=2KqWqr3 zXAM4o;`9Hom#*3%5+TUPiBg|acb`ekFKe5*T&QoQU*2Hx&iay$iu3HVJ$Osd2eueQ&f2`8S+LL^89ppGp3RuG>L4ji*#_252+$wHbe#+BHv#u zDV#wb%PjK8Bw6dfxz#;6PpS1pL*&PXzp0fhm3YQcMdVyvr38x$IyB8pGQoA&t8104vF#` zf=?Dc6`;b;;KK~R_;HuxgJohAl|D-LmvFqh4f{_g-`LWgz)xoXF<_V?1`I(P7Bl;Q zVK{XlVgKhUP4!y~y#w7Gqw_j?tmKtu5e)^s_>ye;+Ej?k|A#q>ysL)1cMN%T4S5!m zvq+aG1|V}(dDjhjPaE=bU()ee{7GkBo)~~Uq00NmkXPQ2H^q==@h8{E$oh%_$nP$t zz9kG3yFF3ouel-5;!oD;@`V3fuF5N8$Qy3RJ3B_Nuf?DA)#VBQ*7i7qL#gKP7QLnFM!0>`D zPx#LPs=Qi;yax?=D-3y-F+&Y0kNM9ks<66-uY;z8qbYg&6z-{3kx8 z65v1aS%c4?_;ef=<+lKzpYUmg-unOWr{OixQ1GWihDrOt<`2pn=AhEj*O)*3>%}PD zpVoCM&6^dfn}bWE^cu&H)|WbI@FschHb`YouP^L_?m%9B44UT%CnEIGd@|_pl-FT|-`o zA|WD2%W!BL!QMPtk>lUbFe~{cg~PE!jN}vq+VZ(If&Ec33JdxmG`qD?_NXR zJVTzv90W*t%p81$?TG#QXz3Tkt74D$1`H zKCAJ$icbf0*SYxIWxU|3fR=(i=rcsx1OJ9NMk_VHvTf#7iUes!F=HOH2q|Ntbc;}F zrqaS!C{pJ05KCt3mG1N;&APfr*awD7jhV~C%}-}2@~#>3q78Z1dg<~k5%xG;o|q>Y zrOKl-_5{ARLv?&V7#e7aug1<{0wg%{KpAm|JcUXi6Ia z(UEkezI0BM#J5hDSH`Gsf?3`SDUU_1Q&nN*4Pn2o)rD>ADao5LPl;L|)#Z7MTGK{H z`F)K~!^9}RBzy)z8H)PsN4hFVXO3rMoM+g18_@?l;+l|xg6K>fjgmPcI68A|h{NgM zXi*zKN2~p814FCdoVRh(S16AB!B#ALg!B8bxQfXWhT2B^Kl)+~zdvnL@WyopP7sT9 z;czThP`STr`9-_B9@6q>?k$+N3yS5JIk90V9Ub;lU3v?;Qr|QjJ?z3}3s;|-4rh)w z_v_q(7-w};iqZ?Y(}b0f`^Qfoq^f;1!**P4Jq|zSBE>f{MKSPI?nw`P#q{;c*KOQFP?UZx zT;LO5Ylka*RRv#dpSh3s$AmPMuM=e%Uk9gJ`6@W7^CeQeEmIT&UnhHd;H&miUimum zX3=~NdDSPr#tl>W!mCI@ZLbLZ3QJY_a^h$h=+~ktR=#p`b-qN3WSOEE_}UQbfv;cD zNxj&wWp5PCSL^vc@zp6o;fwTZ7!I*u_C8>`%2%cOjIS3aTlrd%qw^(FM9CDzz}NU5 z9{AdcPU?lPQA>;F%YU9vd{uuz;VTe)_54lnbz-W@SJx_xuQrpce2qS$^CeOQ$rQ!F zS9Es|e9i9Vm9Ow6;LEh%g2fY#%s7ml5)l6r@`2PlJ z`@0gE1=b*~EG(ZFGP7PckqJ_Zh}WWKTljQ~Z$-TJ)L=7vh;MD+uAe6QZ}22l4-Z5z z>Rui%spIkO2VdxVC{py1DT+Z4GrM@u!^7y*UZ|V2u;~69_e;zFqt$8o)@ z{hXOOdzR3<_w%IQot~hQcc>vF@39m~9`D329n#4YDS~B+VjwRj+5>rW(X+jf7x5a` zyCVAUH<^X=*Tii9;yqF~{b@SNXez?E>I$SF)AA>!0iV zi4@CZieljJSSJtsRf8S$qI#dtH}O}5z3VfxaQ=k78#=&D9qe5t*t?Y`I7S={T04~z*o%+ zg0K8>DqqQ*ufAige9hgb^CeQWmMMyXuVJ_z#C`q)o!1Lr{pS|V*WYP{^Cjm$o>lm& z1-|S*3BC>`t9&iwh5J@7TLvsbMempQrl7*SAkA ze35>gKQH)NoTT!VUXS(1>xovrn(xv15-GlsDT;xwavePI6$9huMZa#(E}E}}(|zJ= zZ9j!CnqOPeMb3YWRrz`gZ@a_p9~^Dvt6-PTmq_upOi>Jcos96nS8W(IFMJ(w7R}d? zX+H5aE>7X=9`JPxM_;hQe7!Kr%GZidb-qN3D4C)d_!|F& z2flWqlX~H6R3`W;A|CUfQaE2tXgm;0L0Jk9$|^o(X3m~fi3eqq=vWLElx2@r$?MF? zdvK&AkBkDdi?qMq$2p^`u1&aGi!*)$ev}M zk@o*Zm9j_aq)^O%50{kjc&zyjoidT)8=0aQC@c542g+h#zr@>Q@+=S!q`Tc#)mzD_>ofv?&ya$fj4l3sNG z95SJBzSwxZ8uicGynl}DWoFKvW#j!bxvT7-O-HKa{rM0hZ&rdNkN3~LSvq+lMS@IG z4CKAp)&qHG(P_PqH!sbn{@Li2BKYI__GnKtYv`Y}e$ekbp>O%aRmz57SrYoz_XSBA z@1Ju&(J2!tTFVs0K-sV`50t%!PV0rT{;5Ux&%aX&=S#-_u?k;g&o)TD4h>WJdI0ZD zgRjOzt$YpKs`DjM_{$W|tczLrfcny=PLh4UrsSEsHD zUsb?YKd0!A0Yg;2F7W>N!XPVOD>mzVi4;*XMKSO-zNH7gcA}Gd;cL{SqWSV4>l0tq zyC{5B0ADvA6Z&;xu*%nccsm^St4+L>uhE-yzC?;3nW7l@if-Y7ui34=@)bT2d__Ff z*ZvgVAC90a5<^Wd5aV*SXy+d|%Q=Q!f%)t}+HhvQ0&`wLLu~%b)#Ac&BEl}Zzbg=N zsV#j0Vz7fV>2}MBPtf5mI8X*x57yf@75}d_h1H<#SqXIMUOBohz26tN3g$)QVoZnY zgLq_$aehwMh~mkvU;bei;wCqbaUO}m&5Ev|+M>+;nCf6Rg1%(Wnu<~gN8qQpM6?XV z4$$Asq$}c5_ea<(xQ!D8HHc<+#2c{xpj58YrZim7%89O&pld;u8<0&;3TPGyx z$*Xx?tFpRMop@bm^16nY>e?PX-dfjg-|)JI7?oW58?U4-9k=+QY*EoC?{IQYV~&DV z^ig}3Q&hC^PEpbNc~y~zfwyPP5l_pBr?&LJ(ViS^b%0GC$br5}KwaINXb~srZoxww zidI#}@fot|I4<4hIG!}&cwLmVVuy}n7V-!jOT^P@;;Ait6dtBB1!Y9_C zWSv@2HmP!IL5ZYtsRfm6vwwzC*t0-6Em=Pp0J)IS5;FK3yRK`#SV&K7u0PMZM z<(<)V@n{;muZ2`D#o=<%-7UDREWpvOXJ8U`z?XES+5-YERiG`5DcbbSuwo9Ui}rF- z-*VzU+30+2#ALM96X?Y=@c()xl233VMzuX!kQV^-nWEm!l811d?SKU*%MM=H6ju3kd1AW=9?MV>$>aa~Hm+8_+>dc|`f%XCR{`O}F4!~LD znD1d0Y}&6=QL@8wM6LVZo z`*drEfgqh!}ybGdn= znpYDg|Fhkw`5;zSuI9+%HMgZNK{nojk14o@a$L;X09SUb?SJyDDu3f!2d)Yb3L^HL-{3r-~9a%tXjKri&6E(MwF%OFVBX zaTYHzPJ5<}gdWk=pN?gE8Owb;1EAgUUA|0n{ zspFa7Ijf~jB`y*r#_A=mLN?CoC494`FT_vYmT&S>Q?z>`jSI(P8is0Xrm-8xe|?Iq zI6@gZ)FzRRKuNJ@4MGK?o!`=gZK(E`19tcX|Ng|%+=9$H>8HsonL1}*0dgSbH)KPs z6d>RIh|^-eX?!Z+;S4+My&e&Yz1J+-5FW_lf8@ERdZhJc!=uRBO~hF@Vq6dZ)rYLq zI~FSy@Ezyuk5)KYn7Pqzw)8Qmlf!l2KfTEfT^MSsn+8derTETp8gckj+xcK=X0E6q z$XqpdWCq7%#s|YvhF}w|-_Xd+_<#cuO;Bh&V!#N8{Ljz>5wXmzU^9JMLyfZIH;IXM z_6?41*EfW@l<3sX!2y@5#<;{YSC2rg$-D3@(az4;eifI`ZiJ`ZZzZR)2C6WGH&6tf zJ~@?%-O0R`J!>m0f3))(KCix@lWe94ZPDV~0z0*nEqxJkh_>p+0>Vq*aB@DxT!Ec6 zRwohYQG_=HL{Nk$&2p}G`Yk=cvp&>=JUff>S_r1W@!}^N;oVnUeT?YB;pA=Rn6{rB zr`Z>^+4+Q{5{}bEypMtdANrO1ZZY*6?tndWET8k!J6)m3gy`PyUh>B$) z2#fkR)VR$fkaa|`45Ly7luMzKl}(Hl3R8H2eRzTKRA9qxREqXlV-H0R+sBKH*R_Hb zdtA5z#THZ$a#sK72||GXmp_`DadMzf~4e= z%4cimnu7`!hrPq7pqs^ELN;KGY1ji6L=HgPZ;K#C-n*YO!aB4JU&=<^q40$cYxA{_ zN3PTRcnbRXSG?2KnTXDXJ)Y>?I~z_#dGd%^d)B51QopZxy6Wwqe);_S_SdL$KapNw zOTUgBB0l7ud(L%U({C~Hz&m#rhjRy!L7jUrY8B(eMIj>0%+~I#q|SYh`$Ov7*|gJ> zb#7a_3niJTOZx_$`%+hv>=!Ju#qcm&TV@nsO<^q{8E&9+aCFnofsQ@-rSSev$+5M> z=x8_uQ{xTZh#>{DG^IC{;4k}owJiE*hToTX7xv}t9`5#KTON^`tF3xi_N2E(6_gU@B6R$A)G83V+VqXqmL|?+5H5q3q=|(0Lg9T}1zJ662nJ-b8 z#mGD$@Lc)8=wYJ>0WgNYFOAFsWaA;hT81`5NBa^>8zn>GVC_%?uHzO%^V3_r*N0ep z{hP;RaMV)8wOQjl^)ulbCvd&}p2T&FG>JLobqp7|Vb0yB zgYu4r2D~rxF=(0Aq%|`ZgE8&|^6^dER*%$yt`e8_ZYJ(5gS}%3b?brQ?;$Nb5?qu` z-)&28!_>jaM{KxuC}{7GyzDOTgZ3Kf$CJQEc~)Sy_WC>EgJttWHh#NR3tM_7=>jvr zHjYeaB-|52R@V*LZ=EbbI6Hm>-MVS^&repP=!q6bt>u3dCoy6SrRy?ElPS-lq3UVI+H5G;iRT@qG@U5 z4kyU`AD@e{PB|vBC>V1wR~)W~fA2zVZ;gU~JkHDhr3tKxr&*Vopk5CbA`kG?JCT~# zym?XuK53CR010`sJc6ZQhpT&lmVV$497nz*^IeOlz4JMjGR}}ty1)WqUT>$2+wM6e@DJ{{HuS2!x(GvkxvVZ zTi%gA5&^L8Bm2{vs}>)5YKiV6tq&C!R!PuiOAE$)j~#PDN%!!1RX(LkK@DbLbjCXz z<6L!Ve3Zq>H2k8eSCLNkfAf5t596T=4)^iU;xklIu6FKzIUX8@DH}8@214B0HSdb{ zNTK%Fc^}#XPDqYn&?Ip%E|nnGky$Dxb8x_cj)91<1_vML7(&0p90xl_h(XZcCI>n? z{0?@Eg(T>Sf5BHj7GRbq4$0#2Nx&zO%u(MrFXBKqOu?O@Q73|^H{AwGwLA@!3YO_X zlxd)J@+IbEpNr#8HbNaJ!PTa~)xOllG+O$+g>tRBW_FLlnzsssCwCUHW>H zvao4!ikTh(ZPwA!`xqOD>2T{qWwi7lcQ?aqX%l=JCg~9kJAc_aD~k$y@&~6nx%-3e zIb7$yZ73sQ>YTRpbo}H!e193VoD=sh!j{!_IfAu!?}b8Gyuq+HSnuoYUv#kOB(xPn8hplr?gmUIP1jCqxTnx=y~!aTkr%D2pVwZ;sKpWQ@fQ|`3H*sw<)uV8`EE~l4_UIDj-X5R*j}z0WfozX^(JgK1 zPQB`tBd9%QOvQgt?J-3ds|D9mo8-XjtoAIKm4ILO%2sidB;7W(id_`G;cbJ2s;szd z?eEpHRp>}w9{JZ+pw-~esL$xoCe>7-H5Jf!*D|+FPaPT^nPq`?;AhTDWfQb}1+=Gi zXycHLL%UCb7Q&&eG@u1*KL)GNRxakOQ8FuQ-|m;J(W;dNT2}#WEapXISko|q8Yx@b zg^Q+n7of>a4y_IZ$T|N9D4lB#1uNQDjl{g8q(mE}7wQ(VT)V*exU)tSiiqW5QD_%Y zs9VI+l9!f6rTx84jaUZTJw`0=iIQHEB_U#YRFrfMS3~>WGk6bi;Qn$k{$h$^U2q7* z{Ek?3z_KakcN%qYAAgN!kaD$pAxClbBwO<21Bei!Hko^{Jgn+qkuE@M_bIO_TNKqs z$ynW35q(gI+p-#5R!3Z#Y|r`)xyeJ`S%DhTis+!0yJKAXeLn_8^o^QRj5x@5bKP8@hSvsDLc(oc&95G3Ycu^35YB7b;eW{ z+UIJQR*7n0y)$1_qm8Ua{k%tzM~tLziKjKiQ(JlsJmfeUm~a$u98I)8c9?P0*KwSK z%hGY&D{u@p;V4y=)A_-2L1+EE_mD^6C?lTE7f)^JbMcVlXb2p(^i@z<-mK-37R?%_ z{q+%Hku!G@+J)iF>AxRYxYKVWkE5!%rQ45y!zD#zDV&9xcDh6cIXLd;t*W<^^xFJzTdz$O@pPYfYD?dPhgeqKiC^MA7B_#L)G*dObZg$;-8D22*173@0L}07 z=*Gw)>#;46I(1+*)uQFpV8fwKfd@MUAcgShxB?m4JuVP_JwUk7Q0=RG)Xep8S`$Wj zodT@3@Jn0-&5hb+NVM3(DZ&=Mu!5TooWo6OWzWh%L6<6QN7N78$5^S^+VwYt zp%a%?M9_#VmXFA2N}CPT^#75e0Q+qkuUT6?!QuSH;iNaY$3!4BemtC-e5Pgew27^r z=W1d19xZ?^w720a<|{%lf0ufTR?KhFiuo<9n199a5?>f)F8-FhL$2nBe9oCHwbpaP zb#!i9`ddUP+gnlsTk-kA_=zgK>Eodc=7n*1dbuzjNozsuQlsur8_!GP@!IHD5sy2Z z-Gk-s46KKr9)|VsNw8|Q^pVa9wrZWL#n-}O_``t3heZi;ahirjnXHzaT+0IsyELC? z$0Y!jZnq=)GKjuSCH9%pSkC)DQvjPG*Si(>1J{!P+*kQ&N8`~Z53grJH(J_cCyNww zw6|&^Li>!k-2s+t>4%8d8MJ37xg7Pbfryw-CpU3*P0_{&61`~+Hz5fzT!{kFM;b8u zb*W^l(~e9e=BsNFTJ53Cj=jy)fv%;}S9v~St2|=xG6UV&A(wgr8X0!%J*;4`!Ao-M z7}p${ec>~~r3LQ8Z^(g5f<0?IgPNn&SR&?9lb*yPOizb%In|j)G!v16jc8_&C^3zj zqkTJz92z^g$(n+k8auX$P0h-X+2lImHZ5y>=JuKQJ=zBYKpb8;vLV_dsbMh9c7-^c z{m{n#H6KG8JBLMJM}n?O53{AcY;jh$RykP4&E?P+lAptjT|6JhY-|SunaiBUA;X?& zpNd%_h7^pM!r|kr7vX+qtZ}ly4l&jiNMZA5i?~5Z{(@_0D9zKL5tGnhsry6ZVg>ZD zkorWob+6C&eA-3U=ZP9}_N5uCObD;c7nmj1T5jUr*rf-IE8Fl8&O>F=xm@iCCNE@V zjz9`krl!x8L4C-cx$Ogrb5Oq_TZYzg`6q_C+p^~maho)5^t@i{&AWI}C#xN0Yd3nQ z?~77Abo%o%^iFS0VeRzEOC@FK4)G40r%(19TL_t1_Aown5I<-~P=kK%B-88v@S{Xc zs)d?*qC-9ayrj1+TC?TSk-Sel#iH5H#zaNQ3Y?k&s#0OLMep z07rUL`w_8*%=G101k)FTl;6s!`qFh1*OxFuUlI;^)R#e`s0~#WefbWhc+i*4X}Z2x zQ{0Wd6ko{p4~r7ZzKk{j3Ek zq=zTx`|1p!ABEJXZ7cWsxUBx5ndkaE)C%>f?^d6AExgvJweSa@E->m73Mo{da(7c7 zU*p?nTaxZt$J-m)Ld=I96t6=J|Nd= zhw$cJLkV0i4Z^g*b)tvsOSO}mp%rKk`dmv%7q@eMKA0y;!X(!^QPM3JFUgi3$D#p> zWv4vHO zxt$_?j7jrWq9ltx)DU=9%rP`?AAx|ex`b<+nF{HeCw2%N;wVG3C2y%}SN0*HcCT8B zIm%WZF}|0@Kgd9n zq@jRR(PcErU;;t@W0sdDN#H1hwK8keCP{kGW0QO@MgnioHY~wNQOuQ0X$kJ4N$$Em zS~YcV57|GOmy_+WP-&0P+sO7~b1xRw9@Rt_ znTW+wX`H_x5NMA>8D82WhocPE#xax_i0hX5LKBbeaYS^HAXyB$$Z=83AW_U+b&qn_V8z+yr=f~sfDRMnjxx}?Qwi$ zVeL^`K>9V)XpiQCs4!e9?a^dC!cm53|68HEJ}!?2us7+3yXo_`DSi`mrO^HcM2WycCiW?OU6mbwt%xUYH(y9)Ts z#q@tlF|Q=U&5#)Wx)A_)2sh)shnqF&xJiVYm_6Vx_F)cV$Wv~!s`W)QT^=~|8o_B` zupeLzIWb9S<_hnWrl+U|hxYgdCdPVFhPv zPv8n`7U%5Xa}w?YceB22LVQz5{I;Z#d;IqBCyWCbzs)IS9dC;Hx>m5U+VnR?AJgaS z{%C+cCU+KCCm+Ar%DKJIRH-(QLVORyJb@O+~&U$7dfjl^v$%4Qq#y@8@|QpJBGu+cJbk=RBgrM3_3vU#;E7XID0Gm?um8 zyYU&O{PdR<7Gv=cIuvIFTbU^#dH~!H>rbtFH6VxbiDiJcHj6{)4k&y;6JtxKjjPYq)YA2@dHZuAeP#GC#lyv+3v?_}r(JE@hM{>@*-VfHJ?{r}Go z_}ahEp!2HpFQF?rfD?BxQRfODgu5Q;ja*M2@d$KL_lUtF7GH^cUie+4>u#?GvVV{H z`!4vMlK~0dDfXu$HXY76w1{V7xiV((lv$XrD|jXUybYE^&^xUzF_pg$OG}O(XJLHh zcVb<4e*buj7oCEl!EcFsz4L3C-^voPbp-Nx;n$eovNx9eR{85L`0ZYZ{ajDyODgvB zqfj?ytBC3?`R8Bgui5|ZK2fOutyu>YEAzdhxbv6(w=$r}ecH76C;aanOao{o7pnd@ zv9?$L8zh2?Wmry?K}AVK=H!3#CftSpHP_GYG~!wJ)iZ~u^$*xOHQqYU%we|nz%3Yk z;Am0Xy#BEq>$46gUYL=4B1>N7>R?1#@qB+<=Rni?$EKp!KZc2NH{Z+^t6}b8ls*ID zWBt0(y|PL?d7jPpWoywWhw9h!UUU5t16loo_4?JnqSkLJk0d)|8K1w7e@I*Qfe-Z) zme3V5JZ#W{Of)kZU zP?R81qKHJ%HHhd8Nyv;O5Qsnkksye{Gf1)o0U?CIjN>SX3a+AfXIDi$R)fbH5J^xW zcr7Tp1dp{56}%8socFJ){*E~^B(DD6d;G}s*Zp->S65e8S63fj%{qb00Nf$9;*64$x=9TU8Qqc#+Hck65Tv`#Dw#Nz~)4%@@(g#~Ugg&VHD&5wH)XQ&@P&n_b z!#pOP<}Zc3L!fHlx??X&z)q#ahY;ok#zF?($a7{T-hn9HUl4f5TlI_MhIV;@V?2Qo zNuB}8H{(rtA5Y*7PxU*_1>a%c~8y|MHDc{|XN=qI0 znx|^utiw?ZHk@3FFhB6N$C=e>I35Lge&A>zra1N&W8sewF9+hh-ftW0+s+r-OmX*b ze?<8)o~pHNy;Z7B`BygdFBc2?6$mx@+wo{ePx10|4D|g4y?LJE5cse8>Ov+zAECxS z2#fiq8X6XO*QlbB2gc|=lc(miEczG|OzibY%1}uq#a?ChE zc|Jm7_t^*ye20VG6faK$ugfy>dT-Ro4j1}7RbSfp`y#pqYw%^*z5+Gb)?mD;y=?L{ zVgibVJoQ6plczL9W6RU=cw@=aJ1D9p@^tkmsa+mI%`i6}jS7-HQ9O!aabze{qwI>1 z7o_YI*Q03!#l)=O7xJU#F8CnEkJ%{JMvVLI0bL zQ1fdV9_{?1cx(9Oa|+6-2#H@45gPc2Ulea8zy9KDj$iCwkX=nx16Ofx4}6F{d$-`x z6F7kKlPmGa8;A>2yj4H5&N|W)7y_Nu>95rHGxG4MyXuY31wD?TzWIjpg|?(pjxO(l z@7`G|1-lY6NNr6ZwY7kx8O2<|()=bBGZv2){sEmRUVfH=`}Lz4_u`fyuOB1GYY>8P zLcRizcH|T%r6Pov2y)){(*ojiFA@Cd2sQo_@o2|SaSK0P=|ha^j(tTfz~5_x;CCR@ z_zw;b$4_w!e+_JrR^b0aG+1&2LXH0wR$@lu4(LR23%{pz_+Kax`j;cr_=9+~^M~RV ze&uWx{f~_n{62&l{~SEp@l)Kw?`tLgB8?xRfgg`y_z}18r?(Qn=!|3^LIXeR42%DB zNN1Sx*>F^=`16yN&ux}`ZiaSS_CjHT?%8`WMA5{EpV)-wABtP}eXYa)6O;=n=WPfze>O$vABtP}(_4qXgYLfy1HZ=q zG1~-|{8QY*-*9BB`16?7KR!$U%!$xH6u0n~v=0A_VZxsxgqr?*Jlf@l;ud~K>+tXK z3jQq!HU8J}Xva@+3xCZKt>RC;Zr>WKeOE-ZFU2kVp4Q=Sz5b_N-PZVcNcq?Ox54Va zuSE1;id*#iT8IAy&Hv>V|AP_yr?`bby>EGu&urhX@n~;fid*;_u>H6d{HfRc zsj>L8B7#2@xA2#Q<3E(~_Jy`j8Z7(d6+GJMr?`dR(K`I~7mNJYAk^}|0*`k56u0o# zbO__mq3BxXLk5gPR4F^qo1E&PfWfi3wz6#iU~ z;7>=W@t=rCJAR5=_1zw~1`?Yv9_|p!K2a1=U!(NBS+2gp**?k^dTs*%9f7*(D&hAq3XWE<(!Q>2# zzvR%*_-7OOZmXvP1G@8Rz)8tnb@B*FK08;E+v?;2k{rmEpWUS#y!(OqHbZNZJJXCg4tzbTN|7*ML7iOBF6Z4@r+{ z)_fsJX-K-msJ|o~t$m!0>e+JB1!Xmc&A)jJ2`&6}-=pp}f8A%yiU@!C#pHYX5O2s| z_clwx0hnMh{hM&O+WqCfpsu95KSC(}y5zU zhWxoU=a%7)f6FE4pG2t9KZr*=dWu_J+b!sA{_ObpAp%7HlL!s`cnrgjxP^Zwn_lm< z6#p4$cf#KZp~l}9k9PbNxA0fC4*yr0{!JGB>mul+nCJ@dqvZ^CR$6+`_+> zO}iHJ=N8?**IMm+c|`kC+`>Pxb@-n^k0SmD5o-R=$D^J96u0oVX&wGEH2s|{`rAg( zPjL(X18my0m_PUGp=}OAP5%u%w9#4@FGqEvxP{-{I{aT~HgZsFg_ zrdNyUKj(bGpNvrBKLU?-{1mtFSGErSTNpLC|02}*AH<^_KgBKlJz9tVmK?!0TAK!BParA?o z{`(S5*g^?{poAF!8kBlQDwZI3RiMj5>RM)pq} z{3TjPcoCBA?$!#zK#n!cP6J6v^n>MAmW7GUlqr$+$q^QQw&6|s%{B8$SCc*ItcH9f z7?q>_o#y_FqtH^c{{o@Sp1cFm*z3PHUyS=uHZWX(Pz0jWS$MPw zbTY-Q{TD?n&@J76@vDR7t<%Q{HTrk(Xh%Mydr;{eNA`2GmYcbnVa@l~4O--J-( zUx!CKeu`W8?`|Fb*`Ek|#v|1DN8r(ppW+t&R_-79>P$^PLW6!h+VQVL+`=Dg|41DE z{MuLZAECj2JlgTUgLrF}_r0lt@^pmg9-U4`XyBveeTuhod4F_?Ik)18NUZ%MXYWBv zpg$ao(AFQ?BO1Fu{QM2t#oQ0k()~zpO6TwN1VYWQ2Xz0}24FJ9t^Uxu{Yc%Cg?R@% zo9Ms8qrpGgo*@jDgT*!`%-y3tF)`OSereS>Mqd*lN-$g=6gaQzhU3nw&f>#0y)d`0txxJ8s#`58i&P_@&@G8bs0Zm{p}Tyy}msZZBoS7vpntSC@j z495FAc!I-V0alkF;u+9T*3%Qblb@?znTMn#h#1H70@W3Wt9yP}i=z3uUXMRFJy5-v zu;gY0s_)>3bC`EOo)gx3ahvV%kyIJo&}hH4&vN_O8+!O&Y30Q6%SCKZ$Tl_k`!)%S z;V%pXN#Z>H-cpxsK;`g-4;IPF^(3jr{l)4i+~l(u_h00tIml+P-G&zU0HuC9i|z() z4y1cq7%)<3iMf=rlT#l!LxgXtpgqq(mA>gswO)vBRlY;*MD`b zCone26S$EMKCSi)*ikml*&Wi4y?UV4W89sAa5)(59k8$LD3AXzPt^v9N?BUw?(X!> zA9|(le#=l9S?h5Am2@?JGCftV;mdP7%Ad>&OioMp;{F2V=?-64Ec zWSqkjdfhui)cw{{l?JO2m@L1Mk3+LA@J&4p^KH&okW{4}?x9ts!ib$(mhZ|(0y36yhHuzHGDJ^ zvNnScU=ZX4KvEk4a?NTKp#G&{`D2?5JNq;ZOBZ7THHifocaw;>9qB zdi$ZKkn@F{j42okOMJN*&gZk!ruuTv!dL-)wy~@O3yKgD80sKm)W?5ivBqE$o&j=? zRz`-Gb%tWATk!P@!-|OlwL)IkQ#Un_`tpbVG~1cqg^_o-v9ddWPvt5=MU*2^Si^jvD@T$THb5me73q<-riQ6*Yr5coVb&-E0<2Jl&|z1c!XWz#j$s zf-+&jivW6ZGp+ldGHL$Q$kqj|6CCPQdQBgy)T(YgjwJAS8r7cEXLjX>)s$N8CLn-- z+iSZ0mB^Mmu*;;Dy9a7Y-=7F3x&)fJYAG zDlix6tQl@{1c#-ork5kDzUo`4dOd4~0PZ>sYbbOpY{SN9D%H8bgyC=~HF_5BTk!4;jsg$yqBj?PdJouL333e?j&1NxjXLV5!Gy{t-Za;V$o zHO#Y1A*Whmnv)k|dw)Y-5=R3xCfhHR7Y5t=O4ML`szjOX9FbHh+T&zh2929i&&Q3wJ8!WtL4S`cllnsAGJF zweb^w-K0$%Yhxy?4SX6Cy{0$H^!ht^p`XdxxTThadqLVf=tpxb?1CA(jPn=^^I&k0 zLL%UAt}{)QHJPMQ^J9TGjQ&N29&N91$0G2j0B+bTG#^q&#RA`Wkp`!cE5b(UbB|@C zRA?JzW^*>mFxV)$4%Hu}qN_yND57~_qon8zVTx&+m@t<))PZXmo<|3^59v$9#yH;0 zct-kZqO>!Q1vdL+ChU`$uuo_pm}2EbF=f7ye@Cx>%-+C7<+FdHW<;+b>!C8J9Mw ztAi*e3#8^6uB&}iPt@g>nljk)6Wge6w_mPeXjpQvUto77DC&pdwomS7CTx8B+6Xwr~FeuL!>XnuFMP z9{(k9i3N623m4N*DJrzdXw5O;5Y4QEi634?b!^8I<>?MLS=Z-jI>A<5$In@#@Hfk| zV2$RbrKq#_VD^m9SN;v~`IvgA=R-U)=qHnYT=~J-X;3`)@nW)e2foYO)+^7*L@(!>t@-@CNeIQoS&bQ`H%ig+5uCZqAPLG3lfNJ%P(IJb{}sWj2fX z@rbbbF*%$Fg?GSD5i{d%^f9kgb6VW>92(YUM@);K&%>l2(_(y*xMlO=nV1*vH|NFw z&FlSzw`x7+#b439INzE3U!E6#R)+Jzm=fbFy5k()(1!d0Kgg7LAWfv#hGwn;z zIVINKzOX5=bJ4?`sZo8m3d0&1VG!V)c~s>BPp}Xzoj*@qw|^ZN94tgH&R?mDCAQQ@ zkiq;qHB2YeNJ5jk_4|K^7CWC`T89MR$o-gV&hwxxJnE6ZHxVMBJfWNR{1u}gvQuv3 zGmvu3$yq8Z*ORn{P0P!1?~XYwZ$|&pe4(J#_2o{3_fk^QLJZa z`<|W$!Uq=|mZJP$v70CH+ban;Hyv|Gn8Y)nx@W+6pWva6P(MP^+`hl@gap zv=mV|LEy?9e0vkf#+@fo(>X|8R;HQ)08(`LqL|$;L(@5kW0ptd=nO^C88G-~6{$3x z0iL2r3?;}=qT1;U6_f$f9P$xj$`cq;K~$>GCNl**Tl2KYzlzFUqi>Wa7w`59SQ`3$ z?Vk#RXlh4zRFl|&2~V$Z_B14?di>XU;Oi}rr0X(WzUxqd>q?PUq0@?8zE$&B<0K9R zRUZFBR!II;izTtYB(m$$ziOoQzp9Rdg$)whLP0R`t4UnK zHc4!vATY>5TCxas8M(|Z^$kX4)+MRR#Z4h^a1^8g-~TC-NHHSC>Pm{pWkBKVhcA+^ z2tpl*cy$v>LkGKcC6yD_P?VEX{R=5jm*|{alc=1W>R(8KI$h_iLnIm}r}`ICpb~V> zEr>+t+Z7do4CPD5T4sN^*NDhkvp%BN?o(D#rBbE2>Pef{16lV7DTXTVh) zOq>G%|8R$Ict?+acq+W`>C))KlYGO`)$k#MdbgI1;hDbS5RKsw4YwAJ;l;is^H8qG zU&$hYd-{RT<6p8^5?LgIi7Aq}QW9Atf{E=UakV6hNGz$77>h(Ov1uYB6Gl|BNMK3L zzoZGdj2Rs3|G4W7+D`5%{h^s956q-oUcKbu#+nEI3XoQUv{G6ZLA(fm6Z#{qO zR^BX}#~D~oSi5BAlOthd20l!cp?XWC2$3Rn5=ZVN0B`VC3e=HEVja&GLDa$p+Gr}@ zq1}cTYEpb|htHjEESF$f>+-oXeC`6I@OlkWN__4jpSuDnOgb8en!{H~#rY~%;+Iw? z>no{ss0IcrSwc|WX;L1ZCKOWxz};4dUuX|(20>e;3F22_~fn^xFHhg7C1X%Ac3MLNVufKdiVoX?{!?zQ}SA=_6w5(IW z@^MJ|{>?W=3#O}pDIR?nw~W3j{+f$PU+3oN3no6G3lAplxvXXUE4E=Qm%&o1FoF=)YM5H=iUdMKC==F&xe?1vROZd+07OuZM zcPa4&R;jGNBtIHyn}H2kg{I!!6T8dKlPLbG}dk~49MEeg*I4jz!e%6 zc9EW$j>Fvp+TN#f6OUw&EHvPBG~kcEGz?|bvj$);DJ1Vz-0BVL5r z_lcS=oB!i&o7HQ#@2_HLvF|fTC^tSV{IFmrd;(IN!?{Ovb z$YyRqgHeip0QY7dc~jS78$%DS2V|kdfe%dQ`LBSrpCdMDw*QKRY~K~BdBF;JDy~fO z*5~rJgdAV59N(2lE-lLUPeJlvoqTGJZwh7ytLLGi^6&;`tAXj%Y<^Ws_C_9Xc{HwU zU$1Q7@&uP};Wv};CX3N!`+8>kCgF{5Ki;T`xPE%Emvl>Dlj^*Xj7^N`&^bjpJL$Q| zi=97t{LCXdZ3OzdnzG%=HV$&0DQ~GDlJ)Ks4FnU&9c1c?yg(BTb;X`QfL`SJAEH2g zTEwEGmup}bptq2dm=T-c0(PWnfLYml_ZOZ;eePhsW*?9eYU+D@oU!>(}G@&u8ISZ@PXu`yYM)N?C!JdRF%=tzvpgG@= zOpEipMFJa2;A>E2$PQYftd2v_qvx-e;Ugm>3_K~;ZVVar z5Zez?{$w%L1{hVb{3S(PjMk^YA*Jet`y(~tBdcsW219&`vH7AKVD;vUH6>_!H7g4C zzy=K~%NdEgMsmxgLq%qwx*tju%{0LURm#lkz|5mz1uW9z^fSl@o{6rtWiXc^mgo!_ z#C}@_jMR{l+zeH!Gq~&`LIb&r%2vbWwG8CgSj1}-(*I(P-{0cPCM*;)q3vb7JPIf< zN|VgeI9;l)#WkHYxwW+QxF>}h##jrJTVUV0gkcF%IC)kS>{G9Y!6x3%AX(t#bmHV< ziGq{U!Aaiz7O@&{=#x11CFz!Wk-*q1FTCcC*@(#e%nbN%3j8yRu}g8atb{{yAVLx{BUG_>-x0za1cgENZ_f$f1}Z6@jb zdm=@B9=L5Y4QHW=Mby6-ZbC{E57w{+rcu)#yNGSDiO(^JZsKQk6W=e1(!|f&o46V2 zx66N&ew6(}fzx%bw)A5r7ZYZ0-ubsk4f(90lWLa51bZOQ?fUQGOb}Xef;joX5FZ@5cZaY+nY%OZP}aG z+hN6@jGF!d{^YxKBawXo8I0vmt{O&cH~qOn=XkZ1v-RPRv|g=n)sIai{P zSNM~IiJ2UYP%k|t(WYLI^C(GNNgdYzQVj)FFil>V72h4bbtpG$^X};9bp}kk>_ZzA z#*iX*N8hP4M5-lZC}DSWna&WcmdGKURiO$cgWSU&SxT5%I!)&^)KZv|(~7Bz6;mjm z>vbzL0yqtcB?ZQ5!Xvd+^2IQR-eP~|W9eE_6Q4v*_$Y1L0m!+D0nkkY;BE321EAZ5 z=sbyf5G_D-nnb}ccQK-uOBC#Jmm*pyQ80t8V5GP?WeMvVZ7gH|rzCRS{id_czl5qo zrWos646or9J65<#cyB9t?)%esMQEO9t*iYzkE+#+7dg+7q|2ksb8mi7BTYQOjgw;f`?*GC`P7N)g}=n(TWvR2y|{YmU_lGlY^ z5)^HRi=cdZyT~hyf9*GUAi~5L&OliyFrQO_V~|9lTVP!Kr$ecTRUI{Dvz%FYV)-si ziavvofinoTv|&WfAm9Yi+bE=u^tFCQRW8UHTqD|* z;>Io$w=V}TE-#_28F-VOCcY83zkQn9M_Vd_|B&%12iPVqTJ&PgpR8^F z{7docn_tY&lkuAue1^_DVKRuKwKoS}kH_jus(=1s&dev9=F@Lpu+xjVw7>FZI>+eo z&tEBtk4R#TB(9dk#gbSniFJ}VOA;F-af>8Qk;HA1*o43vaACJwR*HX+!|i-NtDA37 zM_di>N}A$EqHjUAW* zPsH5E`{yOfEQj0Zr?bhybSLu}P9-H#W-s1;AW`NjoJwyX3R0?xn>-OAr$MQ&isCXM zsT#u-s3uO+WV6CwMUV7ywy%mfPw>QhnaEVpqXxY~znx;erAPhtN<4y4ZZ8nJ=Y}RG zg<46YqDP&12_C7S+pV|ssNXKtZ>d!^EIsPC^nF8uy~}z_kNWL0Ji@O=ZBHr~pM{71 z>=)YIzF&wuIsty+ucAN&a-fTmd9}_QZk=$dzls7iQRl3SnUhofRTQZ6bj~d?b8@P` ziUQS1=WNnBZNqbb)BG<{pgzy$Aq5uCy=iP<*xi2kHjSxM*#7B|YT7@5ll9yw{^3cm zglz7o;VHi1&{D$-pgD?U-ZtFj8(xegEEcj=qf<+K+NxQylDc|5d-miVFYWr4&=8N6 z*amsM1pzzxmXHMdmTZ%^d*$tZ^KBEJd`l9j?*1hy6x3IyA`n=TZ{L!1dFzt59`kJm zzb(M;6#o*EZT}M197~ENiDcHlgk%%AD=0vf5D?j@4!>Q@za&<$;+9hoOq`WPL&1`j zl2{{&QzUVI8Ce&}M zm*W{3sP)|b>N<(7M}X|qm_XKqz{pO`j_iuw_^T68Rb+4=poYW?YIp=mNP&K=PN59` z>I})3Y2{1BBl5WrP(F`DFP0!rf}sciTtY#8btwXaiXzESfdI#XpLLVbRy~jM`T003 z67Q45#ge#Oa{484r6kr!Vwohamc&{~oFIvHlGq@L7fa$6N!%uh=SpIeBq{`;Wv|5c zODqAW%s?64#fNuE5=%hXNEi7=z15@&G}BsuUz7Y)GO&{i`>Rg^N;9OMSCz8Yt=6ct1qHCvi32)3fnDU%#i8Fy7O%@qQSdQEzG= zqu%sPufbt%Fi>1Xxq?9ol>cht)NMY3utvM>811&>2xA~fFLW1BD=y^G?zZJRvo+dL zPD({i3exgp z3O=?c{Jbs9w}eyx(9n2eT^VnP{30pk;WTjNtYOnH^_38WXY678gGy|QW8nFP(K=P07nu8YiC0xk2t<1tODyR zWz6v}DF7Y5B{bq#=BoIY;_ufJFVpwOh|D#+#7n!w>vQ!o(+n&?%pfP;6a9&kbpCoq zF`_FZ3h|o(Z|w^{l9BpFi%r>?QQ`8vK%&Ne*uGOR{PBX%uncuFMFRQ7;oTf=vth+3 zpjZt8YIuF}ODTiVzxLua3Yt->dh+YwNH~axRjBu`;00YwMlK~cTC>*^h(GhEqmBOd zaVAwKhCg#SDsQZ@4bSkwsQ0_cQ~iVhfJ7|llO>A%ntrk7>vP6Au(O~-SNL-<>a_3&ej3Ut#bwHw|zvFpbkMmnM8$AUPW(e=AM2&EE! zT0#Q#{+S>h`xyOv(FVkhThG6SS`RU9HUFBG6bmLkcOEf{Cn^9~O^JG;-5T=1eZAVg z5V_HI;RjiG^>GldyzsNRHfzd@G}uS*;cpo~;p~qNM0l z7D~>;r8Ke#ZtQC+q7z-Ie4>jS&^sY>#Yu*g|3#CX(+{pF94rdP;a1~4pPB42ydPG^c=K)_(3XfU=N+w0^o#H_>9wI`;2Q*7g|l{ zHW=_@#91o7WrSZDUx9w(x3$o7?1~P*W#k$;PL*mojq?Jytb#nqSe*#JW`s``1k~E*r5Os`7;Dy#qq!-{e>CE9>v={f%es z!FHZt=dV!>7{(jI?itAs{B^&#H|{&A+fP?0%@|BuupXERx3DL0i(E1i@N$fX)Eiij1&1PY4;5|WQ1fw#j~sd8rjI#3LC&tRov#?sksIGUUxB+}aGs*` z6tua2YBxSwQMEQb_KAyPcuq^mI>Bj+0{oTwuY=^uc?#KCE?Sz8UEuV^N@Vq~s=+U$ z?v1mli||fXWah5lD*F3JjY{)+yn2>KFv0Jk8qvT%rccjwWe^_tnQNMj0k2p@kjS{A2VPH$D ze<8h8iD$7W-pUOYl~Xq(1!{YS`zzF()BLL_P(jKU?|=-CM-v=|VjqwE;!nkZqEVOTD#ll?s5L9C8i zM*CO&m0KtlOx$uN^?dDJl?|5I=P8NOyt2I#=iekzTC$S+Gxn29qJvoEujKw5Oq?x= z)G$co{v1raQWDc8k^6HnafBoa*DJX{^VmszwG4ca`S-(wdu&9efOMGL?o?8D8{pX7 z;7+$?e+&7SAV0f2i3AKRYd5$%npqBEZ|cj$rsyJRvQP&*0833V?lTkSTNj!w?rOX6 zqu*Gz(0N(hLnA9LJ>whIOjkQU9D03P7N@^TWG2x4AAQIYnD~F;{;<9K)?ys~|Mvc{ zjngnFdjss7s39qeyg%$M+}C3sRMyQT^3tmP=rg&g{@>q^{`M-{e)I*SX}pvD=ncnN z`_W(KXLCRLc+O_-N54o zIsY&1M=yOcdOv#X@7G@g?I0UsaHin^bl5>%JGzf93Cb*y@N7epB=OQ2J(O~l1 zkFE&?ZkgXOc5s5H-5a5uYm$&jU3~-g9pJ7$7&&klLs?j8zlK3>8l>JejfX6|D zq_HPtuw!>e+PjMjwP-Tr~j}E~E-)5qz z&!u4@VHaJeE2!Q@@3Yfopc>KwRPYNW?7G!N@7{jnS3)Y2r()|m7z-6E7X&y z*mO0`>9Ai!*T_x=u549r<31Z!{pNYlmky@=e*RsC;{G819V@6}5l;L|0pW+_Uw5ht z@z39c`iGWo!!NiPAiW)0+Mr`~9IMr_)f}U7l5(!(*m50P%rPIwf7YnB9jgTjzkzdBANGuWm6U)w!qxR17ul z-l^>p;18_lO`v2KVlOO_=<>b9cmjo``XXi8zG?|=Y^?MZF2edZVCDU}^;vxG+2zC5 z-9Vw)mEgFuP{r&@SF!vH8kfwm_qPL zp+d)EhP6z0Zul7EolEZMxXM7{r};!^>3;AXsFo^(++62!?`9!2I(WAj9o)I7ua*Oa zbH$6vG5k^!;i#`7RN@wSi9{X9>nI=vrje6;$4CASa!@-42suzw{{ZSb1R6Et2nOaM zMU7uXJ;4w-t)GgF5>jH2KckGW_Yv&a4IWF{G@gvOc+Ma^pHE>bXN8L!wJT)BMGZ7z z*P4ZEL#pX%QFt-i_dK&{sKoBpjs*iH2-SEL3nWWDh}h+f=e&B9iY>&nF^*cW=M{z! zy9h^p6`|6S##jPNQzMW&C>|F%FetN(n6G9%$WXAK;D@Z{Qw9Xgh1P4T6@CXtWF;<)j!b zdWM#!>R1ZLl61_$u>>9453Yxn?!_;`DULPi*fx%B(Xj@O)#+F*$5!iD4aZjM*m907 z)-fN)=5Z_-C_<>#&lkbWM8w{}sT7YZJFkG{)DkyePO?*9l>rF)hetw2t+9b6i5l5q zpqGyp1Xvp4HS*^C(tWffqyK52{$<3l*kQzF320 zOnUnMV91{bY=Fe!mna~9L*jHSonzF1^e%;CNjgUC3oRvn(mU#mkT^}b;#iZ8ZR6M$ z9U~@(c$6eK>SCd##1m-sz&wO%_B@s&+$cv~Sr1GFh6KeN;CfRN=M}T`WEBGmL??@# znj5kT(6U3)#pvh()XMX?)mElGL$=~W-+?E_d?uAkr}<3FCLxeBuHr9L-_IEjJYa(n6Ec*g!e+e`n{cwAxTdAPmgp98sET_bV{$yg!{vFqqFehK0G zIUd~7`FGsXS;vB%^MY|nXA{K(iT&;~F6qo=yEngH`D#NUXHucVnKUlNnUvG$JUR={ z`8%9P4@q$zJreQpJDkrCNq0V<|d#;DV7Xm&c!vh5aD~hejY9PBaZL>Ce9#P_vh4y zM)pOw&+io)*`2~Jp^;7sJA_7(S(o3aZkkQK06x3?T>2bKBRVzh^x~>kuCGIlZClC3 z{-tXG2ziyAGbbBB^ z{wduauX2053OYe+P9w+!@%fF2dl27&I7rXmfp`((dk`-|d=KI!h+}F(7uDpW<~Riz z$Z;ZGfw&X8mc|t%b@%xBFg8-VBXzl?_C+c``t$oDwMJ4eLMlJ{^DhFQzGXh;EDMc1 zk6Nv7Xk;%6yN5=0q0ku`*@41PXyi{6?g@?jg2El4ky|Nj42`U(R=!^?zcH+pccCX! zD>DP}(H#_SwX!vz576CQYWCNm(7xB&ly!Qsh>2`eBgPUq%~Y|~1Wq5iWyJay3ID4J z@6zzcv=AN~$o+=Khy$4Ff*7pbsLMXvsi{fV*w&AUM-ArB(I+WgTr;50WCoKPsyH;7 zrq9C)LZfN=Jj@juP1EOL4t42FC^TZgQ7@M0B8Q_$WWqihV+v;DK)mvNUuli+O%08v zY4)(B&}fIoZdB;|qBz*&*Qe%d1ApxL;2w+6XtG>}#VFsX-Sqh7N4D?1xSTayKF$V$ zmdFPh;G!=h+V`eUBHQ<~(ebdw=ST7G`23*uojoI}eW#(w-_^d`s5rs=}Zzdg%uTosRb0tR?)Xml}!MWNB;3>fAKjiwP|SY~K6#s_Mzx5~}-nx|{Gc4V`)v->ASpFQ!V zA+Jh<&j)x*W^`hGzO?E3q@|3uce{r^zk#b$j=L!(PbPGajllAAlG zn{rd3IpQyj!I8N9_^-i_IQ_d{EUe9skCr^r6ptF}yAkmuARc{npBeO7{pH>p%zC?Y zy_cYX7?L0~#>2n-bHR@T#wwfeg5x$xGw`4Fd+|4E{Me$$<8R#Y%A;%Z+VD8FiSGX& znf-sIMlc@;n(zPd__5ODcN}@>**f~}HR+>iI?2N)1;3ZRq)!cbu(gt*4+20NLki;6 zcbnP%>FT`?cQ!Zb7%g*JtP(8!Ao}zSv%boZ|6%d!8wuahv_FdBjw60O6Bj;S{Z@Wr z$ajUBe7(qbxMm4r-~Yw@hIERHp2RjZgy~!q9)qh^|BqMx-kovUYx~fcm?Qb|mC27< zEk6$e@OR3$DL>L5gSd?UqixdeHilN>GDRzEzg3-_}78Uw9Q}c+Zr|g z#l;q_zn(DbZ;Th~^5WJ%&itoDtL|;XoXU;`e_M;- z(+R$PEciVwf-fQX^(4hn^aoo)KbOBC7W{SnyBX-V%7G ze?7@@Wc~NF2%hO*5DR|p9W5?DI~M$oyIKO@!1a#>f6?-mz)Sr})+6gb_nwx(&!h4e z#Dd>(Z%g16!Dq*U-?O46@HJfjSn#i|jE0Y)Ptg12OHi*40TXD~nC{0HLI?ix5e;fM zv4J&f+*i|N7GZc>kb_`uYU>qd9=a=>Md%R5lfDlxygZ zxer9sAN4KiH4NWA7W|GF@Nw&ZadiDZ-5yr|HqF+5r^G4aU%awcP$xbY%a(etk6k(fwcKKNh^Rz9sNv z$gA}^G0Jajh=y;5e`L+8xrD^Vzk%T2toJPasm~l6hc`B~!D*3HtT`^^~JX8G%n6j?{a{kgbl8aAP6HDmaa1W9(-RYFYN-K z2j3T>&93rm4o&Xys#ro+33^ zQ-|Z&b!FLT#wXt;sd0GfT|_RYh(g&5?aDwpHZP!i>b5nX4%NOM zI_U~Rx(7WT^~xY&6K~bWJ!1`O){ukf(1H!~m}vR1!DpyB(eP`3j)I5$n)S~OdeYTk z4aW8FgZg*U^$&J>X+LQlkE7p4{9;wslY+lgtD^lj(kU(8C`!B4o2ReGni_CSZFfi3 z@b2+pHEadHQdBSs+mMZM>+7su3@Z4cQmKe?qO%=yaruYmSqm z9*579?(r97;He24l`;f^*fI4bBDj?F@lqns+2GcFr-& zj6M<}I?d=mn|yoJii;v^zn$k8E$bg1H9iV{z=G)dhMzaE_s$AhUQtfv_AAC8a5%R8d*J&0Wk78dL25cs73+p$sq4{p-! z+3BSp{-FL3{g$FW9vIbr-$eJ<=J=nYRz$%c8EOsu_$c_7S_OY%6#SbBzeKfv^Ynjw zL1g`BwP_9fiYWMd+O-CLd=&hU_F?cg{~X500M5U@p(;LW3@xZDKl;UJrCa~Wt|gA&#@Lgi(i&JP47j}vu7LEtF`nLMbh(_;358W*7Q8QHG)4?l85+H zTr2bxMA9?i_tDevNd$koSoEydb?+QW&-Yuo?nF=NOF~cGyAk|plsv8FPi7=Niv$nx zrz}&-TJY}({!FsyNqAB6WJJ<)Q48n^tjA&9QSQ;$kvEUTuHNO79biSU%1dC-l)|8? zNX-xIrEg{ja8IVEMxA;ec1L(|g9)zxcw=BA&gCUnUE33azFCcXesc(i`0+H2p0IT* zC&d#OiTPNAr}rD4wFlZ^R_0tl*Nfx@2R?bng$PbL?Dnn+Q=HwiQGV}rp0)e&3Fvy~ z!uGs^(G7j<-yVEdI$b@rf;VL(&pPvXE^C++?a)Ox{nIFVAD-xdD86_y8+V4_=5O51 zgkcpExKi3%R{_i@7k68L@}tk{%Gieg2iS2LWE;kgy5W4*wSiwkfo(8)+wMLFS=;J@ z|5}Tz_`DxewXp`0vAw)EE>ek6*#QTf^Lx>?(!#9^04adD4+VgM*Ybk*rp*I6-oUt2 zZ{X^5Z(uquaG90q4SXse3wcc~OMNY*ci?*h>qqM^eW50<<&kZbPv5Ww$Ecke)J^wt zJ7E&gs7}6s+iAcx)J~1++2@2=jcOyFu#XMgnT<_n!9*{qEN}{TOXA3>UHCbjW@xT{ z`vMy>-Kowy>v$?m3`_@C9!{s`XjDlbbMxe97?^fsTbPa=3@!t!U?MziBJq@HJPjXF zLj=lQG<{(fKYtHnP9CLmj2ggox&CUY%NNfYbvcM9G~t)05=C3_(U&B3ew*L83CsK7 z#pmXWRP{jUpuFgeI{ey8>ToZFc5&c8yD{q}iTnCdZrf~t4&Fdw0#@c1sKLi1B#>C3 z(e({w$;h#uacosZ$LkV1c`1LR$_3KhZ3EvE&H{Bea0WKy1#wGsc$;&3hi~_j{XH&g zKPZj^7SKgFu$>{^-hkrP#%BwN+S~p{Yzn+jW%fItS@hLZVbS_$3>JNeCtSUiM9z_} zp!)K6xL#_+USWr`dIhA>xSWgXmC>8IsWNnq^0{~mLv3Rjy**yPeel1UofGjE^D}wd zUcbHLmyj?!3vUaIx8I#Em>>OC!=3_!yCf0$iq*A8XjbCTHCO9b2rG6fQEi7mLfwaa z5CwD|9veu(5zH=Kb{2AfF}{vh`4#!{Vs{&;H{ES&Rqov=ggb1b+MUUKe7HpTIQwaX zkGInku2qVu-a0|SK)r3gjn!MPU{}QYEWQGr$@O-0HDuEUd zD82+bnf46RXISVXSO6_CK#`n0_6!02ivdcBA1~DS(AT&rD%6IDKu-vFcSJE`z_-r% z4nzGls(}J?OB&5G)olRlS4Rqv+6A2fitlPDzUeMQ`SDlw)Up$Pul`%c4JrEXJkftw zYW??=(U2SQ6sG_FYH6*JlUt(ydW!Byf*ApZ*!15;7N%p};MyVdpT^UGVLL+q-Nl%b z@6$O({YCWO6s`YO8Fe{`Cv>4NdvL!J{r9WxTcrPT7y&89RJGHt|FSjadm&kN{r3Rt zzl#96`LERMqW@0S!(#cVc=5F8RMLcM;Egg~mK&-s5BMzAcOTHjSAD#HBTC=lngA~u zAn2hu-%g$X;X8>VG^REx&$-NviB||WK6ujL#vVK|$#1Gl&d?egiiCllUCk^dTn?hj zP$Y6AfvH2FKSp{2Utv=|hTELg)^J-2)2IU1%aw|01j?X<^J~?SM3~kcPo2Yrl}r}G zTqa?oh_E1iIB(82jIy}{NltQ_@OTG{NzNARXIK5|GTrTYkj&Ye7erbx`Cz-_STj8G zK2r}ZE*ReT8yHS}a3YE9coTyR*CvL0W=QXyq%mY_4DZg-7@7y2tU=Q?Xt4&ZnQ}1OE zncg=9^sgwYPGh0bs!V5?{DbZlXx&@4*fLDg8M2HFI9@N`ct;UkfZ>@7gxF^iWN0co zZ1>SH{~+)zSL3KJ!ZL&?tcI0L_MHs$NziL4Fzg^N(_!R&DrW*nzSy2?UdFs+(qWK* z2>xcZ4^JL{`8EteLm(M>{y9x~!E;waap(EV zAxC5i=O_sDUeWd}TYXYUX>3;Bcc}z|CNRmL5hH&aoxf|0{4h_V@W0AfQAp#kRra$!WhDalo@631U1L7a5=v1{%D*H|n`f*+t&oYh@1e z+F!4Pz`W1O_BQ$%~1LBC-yt<=P3NrtZeHgl2G!>M1;-0-a?v!GtJD zU3!yN@P;0}`f+X!(xY{-(wozxhS#EX^Ot|!#%;ml_vL-LEoNydzkkf2@^DZId4NdE z{KbDAsUw-c+<9pW#_!Kgkny`<3s=P&zq`}qTVpEhk8U4-{I1b>9E2xq{<7~@#+>{w zo#U=Exh_v#CLHf&)@2}`!12?Mx5n=q4Mjxb_qB{b#_tDy)+&tVFOxOqk06+~@w*RZ z1W-=n3Fl#~w|M@tuSB;ZO>C}RW4wU9jf<1aiA||trtcPV)Z9)H6PxQ$nl-xD!EBB{ zy6gS*QT;J`d|w|Vj){Dh^kHuG7%$v90J~r0(}|gs9^cD4^M@RAPGZL4%oiQ{RI6r1 zNb4(*6(|pq)?EB+)IVR(I$o0(i8NA zd<>2Tpq|~BLe=vK&FRr3x3H@d-@aO;tpLv}#)#ayJVBV$5W6C>&5KD}=k(i16K}jp zu3}t`>byqO3e9Zv$*qtgUCT2tr3f2?uErQN9gc=iWtJ3MUl{r^Vt(287H$-th`rmJ zt9;8isq*B9jYhcoEvY4Vak=>-Rjt~sUkt-+&zw;fNDk%tK)=PU zw=$!o@%QX=8L>M1fV?%vUyn=>w?igq{G}%D3-jM>;@C697L31n{$h;TO|U-s3#9o? zs#gGf@CM!^9r@INaa~o|sU?7FsQAye)Q@ zN)E>BoLaPNArE_v>eV-?oFF*kpHqj?xB+$@Ls@PZ6K4B4qQn9k1|#sCI!Myh=d*D} zsN2aJi~?;3+wV;HM3bnT}xG!MG!I4S%n0?iNHgu|Pd(qf1{=qHH@CXdm$ zSDeP&dVY*>>&yoYZe`;MjeAxy_YN;MZ>Y*Wy7@`*rI{~M)pEmIK#DKaPm2B&Vy6`! z$~_lWI6A~QK;HTs%L}GF6^iaeWA!!&x5WC$=FoQI;aq{OYK22fxdah zN30YfAC=B*bQTF4zgTIo@gSZ&EOeq%K7P#7DgKd$PJu74h$a_?C$HF0C}+MvylPZ~ zH=-=kTSKvNL)=8K%Jfh5o+B#NS^YDyCm1o8;iHqEe3YbdI0M z3WEF0S^d1^C^1SY*Ey=c6L*ob`VPs#-$f<;IZo$zNaH9c3*X+9BXow74UZF9_(oF_ zhJzVG=d|{^t;xc#p<=X!zeQ)*qDS5c4KtI3R%@6|u*T!5*Jk{8(c|5F3%PZ93Q=(? zx9(Y^q;(I!-)P*0#TK8u#aoRx^F|Rcw&}NUp{S!Ur zu|HXiWB8NLBr4gdxkeISlSh*y|bL_IjSpUY`ZRM+)I=ua75ti0t)DvDYKP z#a@Sfx=CG*Qg?SoN#gq0q=r*MyX?SEM2AZ~2#eb-<`Mk1c3;2t`>NFr)6Hcx59tR? zVa&CeD1X1XHX{xQPp!In0k;uL(wS-8Mqd<)B)y7hgbYsa<4I2vV-rj?$ z9HOc0X;RsrsMI#`!9v^kHPjftf`eI*ESuOEzwX+ff?74Ih3lvsHk>dH!u3&JOx71J zm4+o&2|V&0hi1pY{|-h`z;hwt;c>9ouoNaGv4x^0VRpc##MRJn=1ggqe*3;Q6Uy^J zMFrPJibuU%w3Ze={@QH%rx-({n)Diq7Mq^g)ehZD>-8d-;ntu7Ti#eSjIn^!Qu(=L z9-)`{*8c9?GEWZ^`SD{4A@XxSo@mrDcrn^3ycm5@^P-c+FbbXkV~G4mAf5<`eyjS5 z1|R>^hWKO!s@EE~_{##v$9xH~& zFVJzcIGvxK7syY=rRT;VfVJKcQ>I`sdI54^Q9}E51~fVseuFrWjo}vhH^zqpYWz&Y zlA*5<@CtAg#sT|pSmO!Iae46F4JaPHmi_5X+@8rNFt*LA>Lh0R1w)DHn^kACHmBoB zv(*VztsmdRzDu@4Wnub#uHa_%F($R9M$EXGG-8-0+N@qe4nq?;kwFBBMx+>ONS)X= zVn}MKJhkWQi9FSu$W@z|FY?qMiy0zM!|^Q|1sx@h2W3)V-D`jK2pn2N9#E@kFbvG&fHST6$<_Iz}suW0--_Lg&%7SO!zxa$JHoatzCaob_pI*DIIJ25LRh4Cuzp{$YqP`z=gQ zgxR0a)4mu>bhI6#Cprf9VVpFb)+_r=IO=!=1Dib1g0}U_^J%=ZuUB@ba$y@(JtO1y zt0!>T6}s#Kv+OB&;uA_xe^|4eOly|cV9gSWFw;H}agicV1;!N<1>-9(qXbgcNTe@6 zVcim~k$bze226^?XNgF(hKG<9+mXT9K*_=6=Pnaur3NxeYXdfw`3Lb?cdgg7PqwjtiO?1tNmZcGh2IHEKPa)vWTqB#lX~cU&(EJz-vjd6k&O*BeFQN9ng&kjN+I1prGri!0k@yv?d(?Z*KTbf} z9h{Mj@#L}4%dp$&!*H8b?py6)*={d8nzGR4l(b3j?0XuC6&m>^RhlscYU*!0*x7yy zSBdWJ>XO_JAiC0(>xmf?^hco4Uq_l>JK!~(0xYX+v0R6;PRLw2kQc=9aS$=OSv5Orr_Gd*pw$=MHo5Y`8iU-*?|b+dYE4HG#G%qj zFSA_Q|Ki3b0`mf{-_>4FGYjUD%E6izd{k+m)DO3r)n0m))*$PiuSETaUXb=mBDMjt z?=gY|P1n8$t;JnyGEw{D3=Ho-DBO5OV@S~$=3qk!k%1O}F^j~e*%p6XW0<8exHN`Y zcWMmHgU-{SE)80uK}%(kIiAc+-6u6q6wuoiYnegi&o)SJzThsp;QHs8Z@1MN5*Hk} z;2N{PtnEOe-mLt6_<*o(zDCkyAo0f)+s8H75DiABdZ^xTyT+6D*&3{~2Fqv}SiT1P z_@7eKA`J#UjrEz5)>liK(WxVZBuOJ#u9499*mYC=IMPHisE3HFfh0m!-(4x}D%42m zJMLWX;JNdh#Pf1gzgan5p`nvCw0!@axE2@eIt})p=cM|y=}1$)n=LI!c=KX1xxJ9Q zQbR8`NRD6V;kwYN8tnF#fqinnly0C1g*op!h*h1iD9hIpv1ZlH^!fV zXIw17(ZBri+b)C>oD9zF^R|%!yRP!)L>T;YKrc_gUJ=>`y%gt8uy}wCu?_r-5 ztdZN;Q7xlIkA;SGH4FVW4Skn}uG6{>YGnFi1KN_!2=+|Y&_x=$!Ga#S$bfFP>=A`R z`SBWhuc2py1Gi#B5bMq0xt-g_Ro1)i79{Vlmg>{3%m%|ziT`xPYYer9R7JGaQyO}i zhE6r1_%f3mJU4Wbp)f73ML?%%=+Cg} zklLHR*{r4I=`PVckAVJWxv=X|4NaeV7Iu-kZMM)?HQ4nUj7~`DLT{O86xytq1U2+o z0=>u@t2&*OPtf_WiaPZkK=ZJCG*t{cZG=Yg4K_y|LZO+SPkCVdM#mGHx2$_wiBsEutgb|E;if7?Fo-5JkU54Ezx=(>2Tq8YV?E^vHlP6w+G?#TrL?`)dre zUy(}1hc$Ur@#_%~7&br@?HD3x_+_uqy-Z_B*BH7Onj?719sT24iFXeZ3?ns$0*xVg zl39xpzlGBfF*m8wG#sljR1gOAqO1;P1Ed@$4bV(4&es^;mW^G*Ze$D*+>hu8Cu*1# z0%Oiiz_Tys8xq~DZT!U^sr3X6ZB0?a^+rUYbs8*Pz!tH~FU&-YF_zz>fxds-Ci?K% z##kmMiT|DB`M^88Cc7Uv?@;r}^S;sbCz>F68PaBbx=$n|*V63bQq1Dwm|zFL77Qn9 z3`Npr0BzoEdt1Zo!sbL$ee;X~BciDz1nfZ#_KXIz8Y^yT(>2&E0c+WOaFra1m%SLf!)am)+x+$NHx45oM zmhgUM6ZBp6@&x_%GQ8!D1q3^Ig}~lwymjF%Zz`a-F8wxXJC-SkcPHbmxuM{bB!T_p zJz?PPwqTNY)vss9zo{0{;+nA+^TQj6jn3+S!pFla2v`%&$>0@)I^OmPuT!pV{h)#O zh0^-LQ8erZ-o?Vfe)S#}mT5hFJ9Pp&IF=uY2FnKPa{7G+k7jipGLc6J01H_B16fJ) zDvnMlPeEH>-V0pE9U5xM3md`EtfURDqucb`*MEA(O{YvjKP$}iRLv?#x}iO;k4G6< z9?sl(81AOnFkpJd?2kRcJAFh&)hjCzB;C-#6X1lrKs8&Vg!}WM)a->tKvgQJihv5+ zd>Ygnc;yYPx6zq5pvgJE2!}o_A2$@9u}Bqmvh9^!>+Ie}`+a=a@Jx48_W zWVWh4S%PJ-WNENvxj|>S5i&=#kP97t*KM{eSL!UeI!l6NQMN3X>MUvB9AqpXQ%m3r zB(^MWou!S=@}gv+kK`DYK2>M=&)0%QcE$(jt2&hBSn%ygo#iFYQeJ^V=o37~>mRs( zZB>`9BMjwZ@S48YW4!)czaA*B&&O+z?e&GOZlHRrI@3+OC_e$Oi}Y(J%AVVay4Y4V z_w9p_(6E!tVds~ry}e0v%tJT!QBX(9|G6~wIm|tL@Ibe88`f1@)l~hyv%KeRgtR38 zE%)B7%B$c1zO5Me_uH}z(pf$nCt0*iJ9N(=4xgv9)N>Z*aEk49hJNkfLRhBLZLfRi*M5t` znYP!*=+`&?hnkmV+M{0+haW#eIQ;nLFb?DU)VzP#Tc1@&ivV8#xD>B{da5UoIHtc| zE1{Eibd>3Be2#|}-wM%Hs&=(;F4zS8{4mXUNT!Dac(n$cnc}=YF)!)3gzuemG2m{% z3S@%2_Bdi0*0`{{+Z!CxppHBpm*!%xaO(S~(TY%~Nw=mUK;9SWt`^$VFlGj8-3`u`#m`I zP*t~|K8osGv<{h-@29p2yOt4H;0E;S%W#d)_VQDLLn_q1pW9+yL#sX*EU{^zL6u!X z-#6K|yDiqH@oil&xGk@tVrv!dQ)ra^1*%r!)xXp_<7c6*)P_AT@7bmH^JN`mdqk?%O*sjaO z{A=2>nJ!zUWL777Xj+!@2Ea&?- zqUaq)=h539o&XBJ=4dLs0sOp`b8b~fyep{6+tTVE)=X)I>s(Yd;vfyyqt%zV$42a2 z;}`3f#%46gm@ISM%cnWn$i=sqZ!X5tpm#t+*>T>$7H?HWO41GOyn&?rfGbH|*J~}P zVVg5Ut!0}c@#n>Kl?tx_&c^9{*p(IT+Eoy1)b7y$-hpWu>XPI}Fjt<7u9THaU2f(2 zd0@3Z^!vZjxA{~XeLaM}5ATRU--=#L-(e*=n+^Vzb+qV9`P1mT^%NWbcIGjCV~K|F_J!&yY2&WFo7Rwn$!q-vk&Q=ML{7gV zCKLa+_WdT!MxR^gdodVApSw1@Gn00zN!mF!(zZ>GNg8*N|Bb$(cKRL|!uS^O&8=>z-q9JDc9%#=*?p$OLx#w_;$fc8FGVy=o-%)n@ zCSEM^hrum^K6mX=*kc6I8*GyHLy|?>{>x*M_6M}@btl{Sx7I8DHx_+YV^1dOzl8?t zo`a9T)PH{(eVcpO=<6Z$eRxX@{*@lj^c`l>*V#s2?ZiKee`nh1tMoAcekL6pE`RRY zU0s>JDb)u5%HYs2_?Pmh(RXXAjek3HnZDy=@o$~T--ZPSeeWG+(N|IYXYucw?l$_| zLf`qZMABdzc<7lSuzw-_HerRvew;To_*C);v?Jlb+{KXeoUEX@UN_`#lMu;r2PTo z+pQf@vq;XLEoybHvY8{`d%a%i^;#? zbjBo@ymO90-<}Y7rYCVr$NUNWJIYSqL>Ke#Lt;-jeeT-9IDHM$2Aib)U>o1|7sVv) z59lA)rP%nl_9E%OvFO__^gTM;VBIA)`ilNE`Zjm5(bq%h`&)GXb=TqqGx6^*lfKSy zVi-+ZJGy!P(fa0Sy<&zXeZ!ZKvr=3MboQeZo8kA$X=^M*J~RvdEB}M|))kyx@cvM- zGtLBC;PiOvTNJb?6|buHcX3vKh_^w{0kvF_cPS?m?hv?_jv)6^V$shyi-*r&c>RNu z+;A|}FT!Uu6Mle?49At>oS5OruijVQYt2gFP@^>h(>paPF9es_-reo;0^jHRXJAt? z9dBN(ejCV5ID^b2f6i)b5!#DG)BD}EG=9;EU&?ggS78kv?;Eu_bpWRaNrps%tb7v#Nn}V^{T9scK$SRcR_}RP`vUs?Uxzs#*>AW>{5g&ycEa z!AhD`bqcb$Yuf?SE-xMj{*9|jo@uG-hW|=cO)4L`7&n@WyU^>uEXj?k0!~-;2&M>& zr91X>E~B*yF5uSMNSz+7g?+@jwP?0)RAI<3W^3)e#Ha$fGsCLzV{fTKC$kCB*MiqQNn^ovzRv`r3 zVO2O=SK;DmMk_QSi@UZfRpB)}4y@rSJc&nX1=r^ht?<;)s48H}ud9%1RH5t7VO4nJ ze6GT4tXAx;KywbG3a=k9t8i7Jv_iQnjQr`ROA7=_h5WKp+_h;aa`%xhcISHZLWGpW z8`n0%fA2r6to_+_yW6gAW4muN1KTiM#xC(oC(tHw=%-P*VAE7gVGH^xqLt8F?@SSA z?Z75DYxnt|ORGVdriV8deFZD8Pf727olYId`$l!abs$%w)$f#HE%tuWY~+i-xHqYS zH}e9o6V>f8htW=Y>xIod?_a&aA;CKD=6t?mTTiIYeSTg-s2q3o?{8oJ)$YU-_El|eQ@yXu zYoj;Mq?f<-Mnn(8#6}Zsy^Te5c@kF>_t`sA%LCxfF)h z^Qh=WK`}G6(rl3^txS1b$_0HyrN>8Yx3a}nElaaf)GSaF6a~~w&Al=&YPpn#rSf~v zIp?0c@SxD|`}zIx^Yy}e&%NiFnKLtIX3m`DBA9Vtyk3gesE5rUgdf)^y843S>9;ZL z9v@q$-5Ou8U6F7r>5qEnMrVNMuBzIBCrRF! z(F^fJiwh^O41uEn{}qGV6}WX}^@_#qSNyhnpLX0-&MiVNcy(!S*OQ51&7IT#JPJaxObLsUvBtUz^4vnV%2wDoDjTF#^ zpyI_i4h_59dLf*m*+xJ^Qwp@<1TCvN89~dTbmA}|M7S8AdQM>rlbqan06)hj$h2|{ zY0msdf!10pEc2`*hCG~JuR{*a?~kCPSm|i86ntdN7jono8y|k8?2X{Vr#PQR=fhos za^eG{+~C6pzYEIk@L5!D{0IA8IeC8BjLUP>amdrdN(}wzeX>IR_~wMpj8E*)`Uz;n zj1QX{`q711S+>>H-rt`hXcaS~O8tH3Eu0~D{HphNR|Wn3%#$`gTtq~s^P%s9hEhxm zK9-d|xQ7qAY6 zdPSpc3|n2O0tn^5hn8OyXfH8rtS11b0bq@~ z9N-vK3=;rH0N@A$IFSItUKeQH3E;{5Q7P6AEr>yb2L(0&T=*NQ@=QMK?+bZ|Y4gnJ z3`Ps7AmSEw|1y6D;KyKPg(Awso(*4Vm~V=|X@vn>%arH5x;&4x;u^W+s3FgEWhR}y z%~sK@0ui`LAEC?hZZ6N1Q8xD9M6)qMo(%>2nLKahMho(sl|e1Ch_o)XNf+s*Cu}gA z3z#I*Je;6LhLA*hzko?1#j0tuNONF%7nBH*ergBUSO6rEju!w)q%{RV5-AHF43R!f z0GUXK*`Y-;Xi}st89*u0Rk76YtBbTA0q3^mDk5d_w7s44 zxQ*viF@n_X%p<=V_IA&)3hiwY%sY>-?yy6fB%qPK?c9J%5dAM?OK64u_zG;})$MJP z7b~a+AQ($@mc&+fI4U1+t&HXjT6;*hzt2@*f5)WR_%e z(pz#3`&)VXUlalKKL>UCEAk&J9<$M(LlZ56{#ru~`tPck{&d**|7-u@jNlT8LksjF zK&0+JuttyjkAQOi<4CHlJqKFx_QXK5)*a<~O7`ZKU$~ya-t@xhi)R1v!Ov)qZfxe; z0qzk1$=E!rae!oO4*kpl`Y|>G89-rd?z98kDFBkO>4JS}WWC7PY!BfY2y$q7HKp=yGjIT=Fgeys$!4EvIHE)e?JwLO=si3>BJiUL%@TN*cg*i(_qY!wgzLm zwl>BIwjtnRc!q0s>B`%qdV>BZ_Em!Z#&-ITndsN>nHzna6MWQgH8%Q>!f;=c{z~iT zmp60${B*BwjHZ`-N&-MiqH~1`I_P1W9P(-zayZk+XvePs6)NbB)DD)CsBVY0K|mt~ z-Pzhu(0-e_RQ-(C3SdmHqM#Q2#G(Z!PUfSpF_=zSkr@h{H#0_NqaE1p?{?Je@ z$3Z;8?qrs&NI0YV24R(NfmV7zG^ykj9&jEWVT0GkfcNRm5?;*r#3cp~Ho<_mM8Zqp z@aEg$#TxMLH{k8vB;g^_G~f-9@Xk|E>kGNd4zIHTFP@DaSbK}ht{3!)XxIQ5B0;{# zL7sZh*5o@3klAd=#6WhIB+g6JVN<0U&zyTkXH4P<8t(#JtIvV#n2DHTzRmQ;>3K+@c^ znU_Dq1oMX9!9i}h-`4O@1LP|P$a)4yez=aIj`Jl*%wki+$J;@M86X2)lFAzn>gqjf zh>gmw66DJqWD7gUdIre(btK3KWRID}kKr+>EcsDyxQl}grM&IY{328kUEc>Itc z1K!6HUPZ2J!2yIXZ5_QGlkv9=e~kiqJ4WO0JN(rP?Cltdzij-~3hM0`j=wMP7aZK% zF&KZJ;O{d2QbKw=-o@V;{5h`s|Np;$z@XreYSlw))T~uItd0_1w;txdsuo{Pxe>BO z$k%ea?%%m{pZ_@wYWh%5>0?SJ^YgxtpYFA(LG2pSf?mH#s#Tj^x~BHBxT5!W>YeGA z5N7M1x5H~`z_bUVC2gDYbUcp(NnB%>k;U!CW!q0cI z!)s{3TfionS%CQcpE|r*3vF8UPm$ha;pdMIv^6=(0J%LulGs2h{;V7u$d4sR;pgYs zLAEwP-q%Qi+(VzU;O_2>4dgu%r110cc96FiASdKV!OShv1v4ws=I#O{Na5$TyKN2c zWPtn%N5_dCdaFStKfuZm_veK=FNL3f#SXHI0dmK8lFHu-C6&zenl$Ks2~zm^?skxO z8X(&n?(QW6BtP-WpfXf~6n_5n09(U*7$6I_Nh+NNNPY~K0rG3uQyw}9KflNhQZ+!% z*(E{#zFjuFpG`auOOV3PC)z69_50LPl zKO?)2J^1`?n`rgP3jO?(p}igJ@fTL3w__OoKEvN-{3X|f@5bMs`0G`xx8rsEox;+_z$Ze#Z&1U1-w0dkj z8;6TNp55Kw#-sabjW{3A=H4lJR7dtQnocwr{&s<`7A?8?%e2EAVZeLFfcLG`G^_jQ zC*je7{TM)Ww!<4~z`NCOsy|Adu#RW1Y}M(bMX!K&te>sDPZ;nP8v~M5gFc)BX0-Qn z39mDU_lh0f(+0d|Y$XlP2mGPySg#l}yx|hwF&>d8*x{uc@anR>KZ7@q4*2Hzg%mTq zIuf49be&JOwRe&M@78s)oA%nO_o-eJ&G5e6qVrE=x<0hSn`*#2x>mxwutmbd>0t){ zo|5o{85v}U=P}@Yahue?-%jcLo0Va691SJN_vj7IDX@c_V}QKVAaS51v0SDrKVR?m zl<8WTWMiSvfcM85+2kMt-X}H^CrWq~nUT~5ra)$Nlf=W}bmck3wxwJ%Ta8bMZx z=X>w!Yh(Gtw7r2_rT9yd<;5p-t*~09&^%phMK3tr#|G~)1Kzspq?W}km%S?1thL!N zuH5;FUhs|`-e?2fCpJ_gZo#%qjlVAXnhAifoC>7`5|JfO9OgGV7?TC)QdoQy^sorNWzwdH- z55^6NNe_t|lH#69N4LDNH9{QSGUtJ4rz<;**^h`BpP~s^HtW<ftaCt`+XSnzVV})~}c088WSzm9eF-5OItE~(56I{}(Ih9p^pA2$#xZu2y7m(gX z9_KQ)y`Q68BK#cXG6Cmwd=cny&b*-XJZL&FBzTo^UjEdqX8q%R5UtbC|Sm@_G z9JWwfoQacg?i&1aKS!*)cZ->IJ$(sS4;=B(C*sJP$Y1Py!?ZW??XliE-v-@Cd|Q5t z0xn0CZ>nREqoU&5~4YHJMYzVAxmaZpm$Bav!ek0^}j z9GiQD;x7hXq;IU|{_P6Z)Zm=71GHK!j&@w_MV&pTsWW6Np z9%JutPPyi5i_`uRy}jXChLplV|Qcxf-Ml6eTY zxp;H1GbhnI94CkFcgOhp#%Q;p>yn7GiAwzl!+=v)OnZ`@V*jTU%FeRwbX=PkeW(JV z++UB-h*JVLerpKju}HB6_Ld~?cD`Nwp5Hmqb33CNiDI%VdlSeczVGc&R7Q+VPos@# z{FE8-#o1Vd>G(F1_)w&fo}iS56L|o^H=(YLptb?pv(ZwD##<>tCcuSUfKDZIhU8fR z<5@49rkdk!v1SFHYYuc^GuJ|CXa2gnbVz2elqA~silZ6xwJvMR82L(OH>4J2i)WnT zEq>|V= z=y=C`PKq{Q|7Af39rY~fXdvjQr_&MX%Kk}U8ZI%-V47Sq1s99HI@#`3&nYKuu@hE^ zEnpi>YuC=`8;nDi-9c(H!=k8BCpZVPSLk-Av6A_ck-XlLCaZTmon!?)|MeS_rQ&nxrNA_0!Sj<}) zWoXsFZMrmZmV+V9QyOn#&klxGO&3jEaEsKcNJFb;inn9MTP5>fF6#>$C55E}Uc`w&?(h7cX$McibvC0ln_ZaN&Ep?KvluOblNgytnr^ z6XoJWF_|!;>iZ+=yYDzrQC6ZNB~kaYdIwUrl{e>lk^1$G=Nw&>CqFDHuQh#rB1749Kc`yd+(VLm%n zQ|syHR9tT-wXq;|Br+d5{{{{g%gD?(n4{I$q;uwD z{LaFe!oN6YE+ApR(A9Tkj}Yj(3v}*ujw;Q4H%B#+qZ*=(d6=7DJ%ZSyT@jtucJ{+; zfo8sr24_D!4k$SLfxMP0d$hn=*rvj>AENlKcat|{cDkzZVsPj3@uGH4=*OpeKyeXN zDVa}0I;yYn3$f7@IpPxmJ@r1l0uj@iA*iGsSj<(FB0TEM?bNJDeBcIABR&d=XPcdf z8l5o+Vn)D)I92{E7SB=~6h9&rDI!l?35Yp_4D=U5_Q9Eyr`R1QVlfA z5c2Ewx;i?wHHr)&-v9xY5OVuj&YInA{e_TU1Ee*CyxdTF2@~%j72E41?^)REh>m{j^>N;&W=nN()6BX#ete9bFJp=yFTBI0 zY>6MIpSWuL_~Lmck%HSQlt>o#Z^-!3^OYfyo9dL0AAjRSCn2Sx$B(0EgE3tD!WiNA zsvbW+1rRnTe@6o;LgTFzACDio^xk1?n+`E>!!VYyjfar1-*MV^Z(G^MBAPqy{D(y} zrU-Jvkbgzw7H{_T8OL~=hafG&+KdQtylC?WH;FbkFR5<$`bpyLEb&&!gp5Q4`7Wq+ zKgcPaLX=Vj`Q!uU2=bQxIvro)XEK6}6m%3L-JsJkU0`Zt&@m0a5%z4RczdOlZn7U{ z%3U%Hm;V%BCcy~VLPn9H*e*wG{u*@MDvtPOME%{2MbY)2`Jk{2eu($ImssC3hP>ajCNT^{l)2x1GYxrryvh4s zK3PdPCU$E7AHrnu#KkZKo2&WYUkqXoonbcXwGI{9taH?J^f7PIaxh6GBF5FwZC0|k zkdJwtg7AgND=>9=&Xt|R=*0Q=Ed(zgvy6E$-W}yMPIwxQb8y&!OM*}u@@@nK=nYaF za>zS7Lh6n2)~YwJbGFgf4V28q(q!ckIlkmb?E`%O#(e1i52qO?!VoU_9sMK5n}{RP zPvfKn$&MTh0CaXd8mh;5jbNT6OOk~t$!uw;SAk&3j^oOO(cri-#FHY;uKw%!jrP%5YU9@Iq4t-BaUG~kY3N1 z9E+XPp=$hqa7u>-svcKp=*c>i4kI|)44nPAfPY76Gs`3-mTL2sgPuDfq2oAx0!rrMq8s7L zj_#HYCjU%yw5YGpUEL^P$3`i1#=;gl9H}Xoauvmg6&MB7bwBDWV-Ut5;l- z&%;eEz6+PHjqHs`qdJ`i7sQ6pUV4}0%|lxMK7sS$X5hdL$P{7-U6&y$&^~Vh4zQnX zg8*pZ%&DAz%4X)I59b73&j}**lxm68x|JiSZz3m1C2aJOx_oWPGyj%(?n1Ad0HCth zony(Q0_~r-kemjldKOGgI3|42O<>xEb-83Iji&EN;F$2`F&)#D(E<~l`5`gQ5ttSL z6W^H}g4assbcfF9Rva6p#dr#7WI1f_pGQU>jK&UlGov5)0Oo>mjE`+hjIJxtUTi8D zjlpkghNwVGXv`VyevFH~J;vEg8>XT=Ls+1B8tA5CKS1(s6$k+C zk({vJRL?h$x#GboB9S9?`TSQp(zh5vCVgJZ+-iZgp^?#T`U<3V1XA}CdbbhSQaCmW z5VSQN>^I9)anD8!OjyEcqd88h=rA2FPKPiRY5M_!3gc@#f{b z%qTV>DAfL32p8}z1zOK2nZvt7fL()?kqc3q^y`KCyy4=j|Gs5l1GFfk>(%6a5N=L9wqr^ad-5i z>Qzg%-LD|tqOrY_c^P$+eDmlnpGJI~g*k=V4kQNnG-4ms`!>yVP&l52)=(Is!z$J=W=Bl3nJ~gt(x=y;3HCwzx`Pxn7HaRmdUbsYl=^hG z@zwQdKh`aAed_P~|5~5chxym1%$F+Gr!@yS2c~0|w7fnYp;cHGeOg*w>XY@QRnUBD z%_i(XrMy1JBwoM05_*n8S#x|MHRJGGtR<^NxX3bE<3)UI&>YemFq9vbM zT*%uz2k8oZY_nLj`G zT7DHQs!V2%5<~=G3*#XjAR^fl{@@ za$Ss;@%n)+yop~Sb)f5Xq-df; zZ({Qj^LSmn{aKMhhF%~o!{*~FE8niPk=wT3B1Nc_I$t-0)mV>yLH6kSSf8(_WYF|6 zTH{%E0oQt^A^``yUrxY>w)57ns%r>1l8$+X6$=#Yt8_xVA#EOD2g(bdRHS|GkODT| z`V}w@sC5B1<*n2OoTlB5-ECGi{(4zC0YALNuYenhChiJ11l&S2v1uJ?v`hkSCEf;z zw>%-k?S(>Qie)^liA-O=7%kgnu@~>?bZj!)i!ZlvR`=EEfW2rhFufM0tI`Yj2{(`J zbu=A0nmEnXijOVH2l#Ip!^OXZ{z+q;BvpKE(MSo%!DYVe1fYUEZ!| zD2=z)4&iTc+rNxw*t-amCl z_llt=k6;3YuS*R!Q@d;fXWY!%f^nesIzeqQJ~zr6i0{smN5EqU)O_RpTL-+jBDukVVyhb0O3$qtTlCGrt^ zzJ4!5RG?kKSHO7oIRrl=%C;>v=j#u0f(Sj&*ZZc}30l{I6J*NQ4;e0Uk?gA?+33&6 zxP@-ql|wUT0Zw{#`pczjbJ&=-K%0Y1gHC@SCXh)le!%xUIsN;=EuOBufsl#> zYIUmTo5!ql>5KG%CiB$8Dhg)UEJwL??I?ltIvpuyIcf={4+^B^(zW3n+q)#VnvL!0 z+KC@ z2~VR(@+A`mCn=CBrL}sO6SJma$;A6Saf&bGB=6Cd6)_L_VFVeYggyA0+zr@>-gI+< zg4F>#qRBb_$SS@+4_ql_x2gu$cqee)lI+C>H2RucXF=|hNLH{2>RDHIH5N}4Xlw8( zQ06I8Y2|i>TP;-YI^uw!k5aQW03gX*lB*#0Q=Obt!SN`spZ%i={W>r9KnA2Rf5v3NX|KgL3cG$(1t_mKZI zQXM4WKT{;}HJQtZ`2k}^*9PQ(Tvu0)S*XZ$%*&mVtQMiK21 zeQV++Y21An76?TuJErsKXGBVpM=`57kD`JEk6c1GNbHTJQjpn6J}33Tcwx~8n03H5 zm6!zDfkt&6H_FyVu~bSoL)UzR6kUPRWdB3ZHDRy z0~+CC8Bv+WQyCCf#p^x!`l*(XuzkPK(A~t2BJI{`dRm|hQ;Nla$7Ak91hJ~mw-ArD z{rH}u5dz0*1qDntFQd&A3C7ZXuQBFj-jBmIih)wBw*GmroDGy>wTFJyBj9Fij^DI) zfAbHVq^a2WrH?X`i3pIn^@`4u6Qs3xGUP+%$sXgx-p%S|uArCbt}SVn_FgyjME;36 zvRo`N*{n13=d31K8NO|#APpXmme|Y%0BJ4<34+3=>OA68@be^(?&D~44793tINcB0 z20yZi_)My4tU{-m%;K5)SSp;oGcjcMF3ylAk?_zNGF&iZ&1Ib-`$z-8kUj4+hCIR< z@(8D_*q|&@OYle85gtlqQcZ&)Z;WINaZi)XNE5_3rs(5@_He`O1Eiw}m(RBs5VW%q z!ZC^sbbGW1-x5OrtN<`IE>gf-fE{IemIN&pcd+2?*Uc2Xv3l0&>b_I- z_~+LUQUKG;afZM?=L+~BR<=CB@FD*B7kpq5%xCx+nWlPgGa-w$0#9?gsEd-;v$Y8$ z%v3Rzf2tKz`B_xWn7hyKCxX1Y0a{AAo}i||b39(|@Rk|h1deZs8Q+;_Ok802{%Fqe zQ8fc!WFLX=XPhA@@x8|~r3Kn2&+5FVDPbkkD|tVS$`F%K9;l z^+C$xKx|=sOMyHL`4gS>9>Myd|LCmmfS(cT|K|OxJ6DN0RL?h$`m^?ACv)`t^f=Mb zi{{X4Up{v~xsy0!yI7zt;LxZKYKJ?Tp*^E7L;BPV%`2dd12pc1p2JV|SbQOec7&jP z@w`1Op0-pEi)r57!jMh^?4^GVhAa{cQ7`HYX@;M1q?1iZ7jvX%2x-@HNNY-@zc90J z>HvrHIA>;?kbWqT?kd%hVn?z-I>m(a6OPn@ms(zyy``^E@|Jac zM_O(~H%}m4g$Yi*nOg+XK#9~C(Pa=)F`_HvNS%cALTla;d~yL!@Qr$3E;pjyw=cnaY=1jw<;bgLKh%1~z)S400yu{JmOjGtD zojI$=Xl6UB*9fb*%$=%xswe=psP8O+_Yihf>2h7pFyZ?t=XLchf#v4PJU20xoIDYL2Bs5OkAk37NoNsDi}l%F}v_=yp^-is*cTqmXcyWJ@|g?g7_r-ncHG(em*sM>#qQ59vSs->iAu$`){Y%&G; zD-%_@f~wEY=~P8Ys%F@z+RUknHBohYIjRykRk2p8=F8YE*X}Rx5maqM0zv21RzX#y zr0RL;FFl~jor;WG9M{1j)YZyvwwt-e5@UZm#z2AbJ`=`W0^>(#bv{H&j5BqND#y5& zF#5`2{B*M3zYfA!So+rrHj`4IX@44RJRmT3k{GdhUFbumj&TUbc$6?UEQhg+#0V2$ z#W-AG9B;ySOkmt_MsH&$iIKik&$yb#F`gidOJnR@&3jI7V>!oMTVM<}Vf;g2OpzGL zF>{?KKg%#qrWH`$wcXkkV>O-qH|M*OJR29VL;L zbIjoa=@QJ4vX;U=*APhm`h&OBHk%B`|956l+3#w3W9C57lnXxT$4OH{GeE|hbbW@^rVvHW1j&{j?&iC5s=u#6vOff*iC^=OgBEv5(-M@eBhJAzj5Dk zk$pOvkBYv0g%OuI3fWEG)m|VSe3C2Qeh`RkUz|2M+OG9A$8+|WVl`sTbpn1H%)2ty zw7^^=K>;HsoZ_rWSNPc>hlOTrVQ?R>geV*Ep}ho^N~nU218OmOBc{ z!OrKQ)54WZBbT%oyWmxCrdWN*Q&=xOOxj^fVHJLcWh!bGt7*+8{kjMpgGu{#=0Hv9 zmXdck{$_s|O7bDYSfo99QdbfOIZ#F&eKpuj-6x#7d`ORcC`+)Nf5;DYv4T3PX{D~0 zr0#X*)=bom64ZHqH>mquP*-$9r|w~LYm7QFjArV-Zt<)`f zQ|BE{u*5qPb-%yOd3WrTLEUOW-K~aHTMZ<-OSJi3TS-=v|lXHwsB|< zFjKqP0&U#`0@`W3lf5-WK)amAX-imOZs`vkS~x*#*xcOG&jtx-i_Oqhzs0$_9MHH_ zAI59*KGXvoA`L{eo0}0teGx{imiRTxK+pIKKwyz#%VnU4)i!0Is?PGEXm zVA37rRa35(`AGfDGP!|!Q8a10c?-!0XGluctn0+})a*iSMQR~UiI{hdL@6Fh@?h7< zE*w)uySv#IlSlAO$)x}JmXUNwm@n}kJ&YToV&Ek|+Ws0_MyjJ;YR{|@v6cfznDv0M zB`6i`8DZ~e&&a-me99`4pIL|LOgeb(%au$km!0KW=`_x)`%0WyM+ex#F}-*iHP}y_ zNa5+L$a-R0MVwprI*71rI8ndh{2GCIQh9Ej+;B1pyr6Y3#)gwQduS4i9j|PCNfTMd zh7)(ka?GFM!z30z!0rgBsKfzwI4Bw)#SB~j2Q_;RO}MTI*l3!uGJpRv7Q30{csQKK z!;w7J^5OtnU&tha;T`H!z2~IeS^qITD^jy&6KHMfqxuZQ5ck7$@F2IezenO-AeLOR zRRFT*h2uOP@`<*-@HmI5)y0e|iwsg-*=GTPy85tRd9O>q8z=Rp$j$Z)B$!MShJT@| zT#(ur3&OBNSojlD4a=${y=TdskV>H^4>Qcn0^iL1TCkE9VjADuE(ZV1<&>|iWkcxp@?6RenzPFDGpjs5e^{62GfbYLT%NNV zK%O10x69Kx!mm7s3VFIP`>V^-3kW1n-_O^S=R8!E@=X50k36Zyf0gG|^gZijd3|s9 zkwxF-`^4&qO}2s?kG9`wtfeIGKIS~JYQ>ih{7{CV=|HThHB%%66<{P2fr{8#>% z^_ld^T*eN5OZiB_RrRgQiSqn>@;wVb?;N4?a|n%Yy`?a6T;&Fm3Hk0iJ4?3@^UKof zIasamXM?4Kg$ZeJ>n6c7@lXGu(e^d*E`EY zMpfF{0ZdN{v>P7;lh|UxBtB;2L$K#rkSiAp#%N~;@$svZ{4N_RzB7h}*!IPOrEWfG z*T1c8wtjLrOI!VmJ|Jmfe0CIUr3q2QL-QEg0&U|Vu(djj`8qyGGXpXC8;sXn_hJA) z0xKi(;mqK0=z|Aikba#QmE=8#_T!f@O1_X9v=KdPmW2o1ULgt!wTR(}Oj+o`6YQC! zC~UWCZ?4Dbw zj7~u|dkUdJHam_Qx!^Hmvl-mz+yhFOQ(_Gm{7@|UL-+m$Oa#Eo$C;E}fLJVt!RID}pONF8kq;ZHx z_;z#}k{vkmR2Pa_9t-wc`8{TjwVZLtT8=u#?XwZuMKP1(3wirj(r#ED??2Mq?EHeB z6$mS&y?-ABz^o4MaSN!&u_YK+5a41;%iQC}58wibl|AldoC1U?E!$+rACJI%!)WN1 z2WpRw!c%@0%ag!~(Jmh_EKeXla6;B7@h9E#5a;5^{74{{crE-lD?f66x0c^MX)Uif zcU6D(_%FmDYy33j4SFWy;iraH~gb2HlM+ID|-`Ch;NtQ7~VUD2vrj!nQ|d9)%b7zY#^I4^K^T$xSJ!Cw9^+c2DhqrpQ`kT7>V0tZ*j7B zNMxet-_Wr^$=>ipuNtn#huw!)?zTzZEo$Z#Wo8!)c9YudT%fEDOm%e$uIH|YkHz3T z$&vu~sg60M5%+IYJ>8ZS0Si$0a0OgKF$1>}HsDg(-ARXg6d%$6TpWhU^Qi>Cd&Tf; z@82RmkIv+4F1os z@t?{D{G&)}RDu3)@S$MFA6#|*;MPq4izplLr&kSrqn$#&27k`k_(Np_ezU54GY`~vhHTaj%c;e4NgFicM{GqY|zggAbH^L{L z3I1h6KhN3plgbACTqInpAm0O9IQ;dv3jVLeE%9HOfx#*sl5hVU&)l)P4<5#Gu=A*| z;eY4marjT-D&RkiTRZ&WcxJ%AT#dD%GVm7({hWfUfIk+ucKA=>nF0T;%EM0*{nPRLtaImC9j~hOCxbVT| zHrz*kShisj$HC$^im$E$KUBakF>Lf9VWZ9PeWI6KiA+-zOd0t4IBNou+e55Z;+jq{OMw&|0?`hBH(8k z@TdBL|180m`m+yds!H%D9Us6Y*$%>0*oQv2wcCeYcxLDicBWQEf8vDx--xTgQ3tnn z95wOG;LnXV`me&DG$G?eL&kUdk?|cQW67U2G^=-Q{h2K6=P<*5-tEVJ_9Oc#``0iI zyR!Nd`Yo41$$H73L%6l`=O;Wf_(Lc2o9Vv_e@caq*=P8eLO(uctHsB#Nk0>Rt^z+U zo6~sM<2OMM=p1C_>c$ZR9)vGL&c zGCKYadg0KGH}b4beLVi&qo4vQM-Q$^-uohxyjzo$9wF%{Vr-t|-AN>k4NCIXQ@wr2 zXFq{A?slqo2OEz+1D}-Krg(u%S?x&e(Iq(0T`$p-gF}%|1h`M?_%I+pDH^*C*JS(_ z?adYKrNMq(0H!jg_`JCcaHQ_+jPba6ysufu`-}QcTQmJDQ8wTYts4AAg8nH6{bOzPQ`vye769AwEmyG*zkb2# z{~lLC|61Id>8G**|8?$*D$AeA!WRw0RlvU+w`TZMHsE)u8vILw{|62J@3irs$_9Me zQVKs;S^C>T`6!+VGxRgirk_-H-^A@_`V_#nr(kU+bLcl5-Y5>Z4fBpWO|A z7EzPr4u7^)&D^QX+zGz<^=ELdW`DM8Icr_mSGaP4hb_ge-ar`a2r3i9HUKa&Y=^Qs zfO6KXjk(BK+ZeWFB?p;>D;O3w9akM57#2ZgV%Sb%*cJh-1~Dv```hvi+q}CXhDmijzS4R72wTm`>!ajUnF_(kQa@GDM;;6_}DUv*9VCw@`6 ziu`&N%SQYwnB-UY`J7)Za5eF(K8pVNRTFOve$ft~%IH_Ew>ZB}Et32?id!?ks7&z^ z>6bE7V;z2nF@JGYT^pUm!6)M?#L*qMX7E%dd&0qIaquR4a#i?qsTX2B*^|`mAe)i6 z>cB}hRCeD)y4;a;xv8U4>iqZ4io|1zXMJ2g9$ZcGNk`GYe4fA?Lq3?0tdx94y~!Jx zgsWhn3%7b3NuQ}~$fuMU{L0E_TOSVoGh7Au_i$?lPh~?s++XdetbCG$eA?kE;5Rpk zh{&h10iXM;O2cm};D;IT18wlBY{2LKs?zWuSjPF&4Oc;b2i%(ZL*=TNlM+6p58H|> zsq6+Zo~PjnsVtSP<^=hxtDE26#n;x?=Bv2A2H|Sb*S`=g``6bK6h}*cMVl)sV^8Am z;tXqqt6*4N+?p9iWkX-%s-&+EEEMvEl58^85--%l@d@398`FN(%@Vg55jScwq zZ1AaUz`w}5TV?I{=;fULWLyRP-EnKCpUMXOD*A_QpKt=pPQu z;_%nwD&Vigtr7&h@k z&ak1l62k`Is>36OQMrl?yO3WI!(@E^;wPM6<8U?c>roW_^XopmG59sTlHCt!D)eDGZuKUTK2X{4A61KQ8wqv0Y^d8go4Qfi=>Ju;UrE9~wlnNwbDMpn zvH`z}_G|R}oIT073ifozt(iSkHsDv$ekBR`?F{(MZSbjFmF~DynDpmyW$}*5p0jv| z?71bqaLxGkvF|JDj)uO{Fp}kCa5d>`eH8ucYfZc{^tH16v7vCdmpT!q5zz^&dy>W@@5`eW7N z_eIZh@KbOV;K$H5~-(Py=c|#J-MPz zOHrpIuhR;3Vwdqcj&DVsXi-No=)g+lSia8LluvN*<8>(SS`~V<0vkQI8}uyugtxtuou2DV^avgv`Nl@i=^QDi3hD8j zicvk!hCAGK*5cE?4sD(B8_%Ygjck7n+iwuXcb8y?1MN3RQ@tT^BRV_Oj`)H-op*yX ze!OSZtR&i>d`~piAz&Y0pGehnkxhyQCSg)EnHDCW0g^=Tjzn(`o4-!=#I;XXRDCM+ zObOd|+9pTcQL1`M%aoZpOx9SdOn_8xP(NQVHnbS!q@fc?X6k#uqCy)-#A365Hgs)?hT@NQ}=-Qo84xf6>?1728H?S5IuSL(Rg^+7u`G zg0cO_;ppS5pQz>ChUNI6!P{3f5OkqJ^%5+9PH}EVVz0fX~%6^QgcE@OvfU8 zws+ydjoM>R{+_@MJA|M0^JQw{B_J_LVoWM+<2d3m$y`6qmATh*(m zWgFD#|2V=OjLXN9lu_;5LIu1j=@5Up^M-5N5+qd#}mQQ@w*6nK|I7 z^72M4zAFi^Q0vI9z^SY<^A!8F1`Wn09$(sGoNT>SP6HL zEV1-IbBnur$DEStP{9N`(&P&$ZmRNh$oB8*JN{IrCESqE@dCDayQ?SW(2TTbw!1*MTO_RgZ4mez|S6+ zHi55ule`Ig(58+%>1?n5IJFRz=YjIW;Y4{Jy{2xIus_hT07thRW=eA_X^b}+C%)(E z8h9gVA05}Cw#kL{VH&8+rUPfR=?wyLriqO|-a$_l&?Yc1Olzo_2+ocuDpd9;|lIj+^hn{CQ!lG}0ZTmG`Q{_>C3rk9KP z%hvkK9eBAw8;k>X7H9+T|2BZVOb7T7q?aEtlXD@Ck#mbq&Z`8M{j>I$1-!rPvGteb zLo4Vn6g9H`ayxFQzpRgqVEyIq%?ZaHqOU-mx@U9^aOhp+xHh2=x(Ip{wBQExlBVJi z1$T8K9m-Zl%9eZ_%Jz3sP%dMtcsS^I64;4qhqV{?k|Cgu)F^>G2YqX~P+Rs7iMZ6- z-;&7e=4)ec03|8yf6=smfI-WX<);hyPq!3^pT^>+!tBcnix(-t2^T>u%gP6hh8;)*EP*xSYa*u{4)Y_q}+ThCl zIkac3;=BN2oNM}4{9mT#xv)mv;pmw)Ab2B>U+wf@85qcM_1IG8mDF@Z>6{YYUnj@o z@=K28`#CbCOQRDT$0T|+?ru6_Yhf2PYZ4A}oP@At68zGnC>4iZA@sw>Q#usn*GNbd z1ssxvw-Zq_h*&pKjX$r<`~c)5IEuo2B{^VJrZvV zv}bSo9(;p)_aXwyJsPZ*ZBbinMLdKj&qb+0;C_*sTLP|QPik4d+9E&6*J(R(2v0)$ zc)G?q+}E!OM_KDnM0xv$CT0cKp_iWHN@7sgYRal=bE>OlJ)(#vwQMudm`R};i{T!i zSe6d7WcxxNlsiMYO87g!G?5PH!S3?9l(w4eb%kQXr90z}0QVRKfq`_^NsRU~OwYUfau3vtTS(eO3tKh2vdtwhAJ^82Vuh{ctU7-|_1L zaoh+G2ieJ+9db+sZZ9DO2xD|K+msrGP{YL(89Rd!97Dc1cJrR-ltgb~viG9)Ez{Xj zWi@t7r=k@%dyBJrg(hM=_QPMB%6hWrs<#-m)vRh-cuS~M5U;JQKB%nDPi?aoiz-q* zCj;Y4#B?v2!5<-bNh;J@t^uI-AZALpG6f>9x&oy2sNM`hTJ=)z}q=~y}h zF+HOrQxUd?<77HUz4sKhM2>+SUct@&qUdaJBtcnS3IfqR&w3_>hNRzsZiBUijW*kWpEA!NX7X55xim6U*qZ$bv@K2&&hflj-e}t*)CSIu<0`446Lx$orLL4 zJ_6mnDbeTTx*MNAp#fK2RMx)j_&wqnUY)9vY0W(X6^5Du)F3U<*9c0xg%pi6zXhV* zu0nSc_Ntz)aZ-0*iXh!h-m7K>cY)j3>-j}dgBrzc4uZS~ouL3GYtR|svXG_vy89#R zCXhwHqUu(%l3L^>WhH2Re2oGtN7kkKe#z=Nr(@O0TF~MDjI5FV$x>D&beRJUt181T z-1>h;SpoW}A364%6QATwK9g9Mo0OHz1k=M84AJW9B}}7Ly&eQv^s5Tx*w@!6pmK8T zbBIY6E@K*gIB7AR&7 zh)d0Kb%HHO&8nN{!a(V>L#WV}wE+G^ANJvFCEcLy1sII`j`tIB?9AwQ@dUgqWn=Ao zqGLRh+B(M9Reb~E$Y-{?EvKwx1^vhe;U&erIxYtP%fW3wKv1#lNtD$lz$dIS~NU?L=)B}Nh9~q3IuYBIO&K!r^!N#&1o>z?P+eHc&1G-53tSTdYOg zl~d*gQNan=F5t-O(H4cEoU9&9zs>NNp4I24oYhabnYGsysRnHTEv`tO!9~FmFCzdH zM}3chjG8A&8I54!udLPrr;Q&VL!i~ zFhMlaAewmZ;8;A?0`UwW(N9^GfdtYw7}2{RWES{jjJ)5yQ&{kFl zPdd;O#7xHc0w&98&v{p1ADIBg+{RjrpoWcK9zs!!9{~PORw8>z{62<~-@!~}+BdPO zy?v?l?VfLm!m7wf~(Pg zrjv#KqbRDr{utQ&NEkXW4A&Yz()@UQ;8?|7Q(4_TFtv*-aBNVA9312;y5we8HPA_( z2a&WZ5dS4&6lwhHm_s$P0^p&5IJY8wh3nZnXJ|DVF3{L_yY_NpVs`1w{q82J?_P*t zyEdI3`R)an?HCnkW2qR#Vte#2($lKyXK}|ZWf{|m{=M!dLeSbeJj6Y)FvVPkq8wlw zK3g`B64RlyXDgP*PTavV;~1{pif<9Zsr60KZZ9n>>xgj2vxMwhmWO%LEDsGU@`8?R zIWZ}(NASh9g?00KgwCDe_$04KZAagwwa6ZOHpQB)<+g3py96NyaJy1HlY$-YJ8-Fn z$;FIGp*ik$8Ix*YrY>VrO^3T##-v&fcf$;vPw9@xm=xx4D;bmOINUWdCMmt#K@cB= zNR6oAyipk`Xv`vqtnVcwg$z7N_Lj1vpD0s-!J2lV5lQO|B`c`7ry((oiq)u?&x@{X z8u^d`riUGGV0AD^yoJWcvyb9kYMVb&U0JtGzl(U{9-Mt~EuMAh9qdlZF2sRZxUJ@P zWlRg5>yFQuR%3>{bH+5Z^_GljwLWp*oG}e;ZILl8tgpLq#-KuXs$w`|&ZX+7?8r>&(XOqk@ zos(V%`~8Uiao6)UlD(W8oq@Mxq{C|P0E4k@`lbbVOd+OgnCk&JQc94H`i#;{vE%Ql7_O&bkcw$Ex{YDCL+BR1EFl0i)LeXnpdsmY%H9*bbO?DG^MJ&_AAT+_ zQ&yd!NNog5RNrnSszJLcT=Sp#z7OdbZFW$g!#VRpdK>B`1UgMy^fwMj?bTsRhn)!> zauPahajnczR$o?DpLeYz#Xor`sz$2uMd{bm_vJj(_#D#>N#5S!+PjESSJe7q>B_#Y z6`#1inBiJE_dC*?Z%L0_>qx13W;IOB8W)_J^<1@{a|VX?oYS|)<{mX2J?HeOwHdu` z&cLuaee2BWp-{Wv>yUuAv+kW>h6M>D_D zOmO{%w=vrNfJvIh#0pJ&zZ%!H90JHSjWkRfoXqmy?Ek*_-=;vYR59LwZmffi5gp7G ztgsW$MJIDrQ!MQrUjlOEW7cxM{>+P!?@zqZ<4lcShw7$AFJq0N zM!(1IsL>1A9W|PclLuvJ^h|b#Mo(ppp2!+KmNj}b21p1v3$(vtD4HV!j)SlM@7mpt zjx^K3!lmSO7qhwDF}VvbDG(Y$x5ZC%YF`vP(=UogiIm#iuB9Ti%$**>!!z1yj5Sb% zJBFt{qb)(vFy7+fBW&1k##^1Ub(A#LO6E%NM;dG;^L=6$jJA^bI=dsb&S!VT)=YK> z13rxz@JY;ok7EY>NoK$wBLl8_cWXy)gm8m4pPbCu*+11Y4K7f{1ul@>LJo5a4wGAO znB0PcxdjJv3%!_INFk`7{t1o(YOC_5J{+c=xHFN)ZK#3)4vak;yvuL{C;X`-Wc`Fc z77tJc)D#aOMGAwskFwlIZDT;shwUug9fz`0l#$z>geha!2vG*$+%)YCSVT2z9jzO} zmuBc#a{hW<3~uvaLGgc&V4VL3^MFAU;X>4)e{zHQcgo57@fjiuaP&^;Gco`Lr;8^U zL){{+bp%@PJ(G;K`v$?i7ip37BUP#wjRsPT`gzE@Pd zBcjIDCo)U%guebjPX=5^WYQCwW~C>0$tU!c1Fq8a{Np-QGY_#y9W_38LK={#w#i2* zQis~;9N!Me0cMB*6Dd(WfG3QwA}xp>A{<57V+{%Zad1N|at?Y(Ai{xYI;oP}t9GuJ zH5|B`ET=ER`-L73oJE2|kJkpP_*V56nc7MCSkLU70pAe^gmn`#O}K@xl)+K&Nm(Ng zBO7*{sZYA%_b*if8IquIJib-f+GQLmS9=Ru)?k7wo__h&CF7TtgUEh)`UQucybm+?Nm%cbDAplemxSr4WK5YfPxR)i-VOSGLI|Om zGV>rwT?oQ`O7JxOdi}=@`C5!3Z7RSoKvS`T!M3(w`8Asw4T`nh7Xw&i^Zi?#{haB5 zSiKy?)7OMZJwo#UqPJHtEvay%_w(cjWTD{ehe&f!kyZz89xqRJQKiZ#GaJ)PnqX&q zL3&+tE44*!IRi^@x_O!B$Q5PnnNWi0#XGL?O9x}9qmC;*M9c@ZuWl>{)Zc8{+G>&d1(NAaUJZJ17@?18dRXo55}bS zkWg>$U~VrJxVjh(13O1*&|W-+rEDT?WPeqA5O2sv_D|C~T|hrTrNO}$HiV8xCU!ol zm(~q6@QmJU@bwLkj!IQ}7BHWc@w3zC3PlmiPfTBAvW)-OvCfzQ)Qw3tsg*Y*Cr%g> zWV|r!OF|ZumfXqACwZxtLC-o+;DED>@{OvN_zeNUziF-u3BjS`pGx$-MHD7^pM#mv zyLqCgEOcBwwn&Yw={rv+=Ej}8HPQRGTI+mb{9lPm@4qnS$Cw1`)3n1aDX1##=i@W~ zq}5*Jn~~G^9wfZUnPusUYjwcMFvEez{ClRL_;rv7Mm=ZgQM7 zHz<~fiEw@z7U-aN=nHh3fMgo(9J~;Kg&kNua}2*q^h^zRq~rW(YA;Om0UYH@L&6mx zFVVN2^>gn8G*gUD?joe)6eYYm~l?bQ?GPoa_Mvx7t<|B22)2Dp^1 za!m3C3p!b5{X3)pX|6Se5}>N5Ae6NTgLVM_j120ww6@n0RGMZy9SK zPa=()U#)MaojxCc1|im=#5*+qb{II*tjP%TkQTXn^B_Y`1)EZlXL*nrfV{Mqr*FKa z+MksA4k|_OMsI-r_6wzGjLs(JPkE1^7culAUA{o4Xoe@UU-VP8!FWmiqF^sP+enQI=1566-DtxET-0N-?#h+ zeJ>Wu2e@p09YBh(N{Hg>^v%0!3tY zzbEWY>MbmaMLyY!nL&}Zrv#C}FFqxLnrwNXcR)DuV`Uq(b}UJ}i@IkNdZu={p-f`$ zq-h9X8N!lubQ-p2lT!~%scG!r9E?A5d(LqM^qi9zxY-rtFeeXDBM;1@X6B0LL=UFF z%B`0Xoe{eKQ!w!Q1_#I|B+l>o!$9L9B)Wn>46;0YlOD1}ALIn`V=d;=f4&%5FbPBJ z!_t&C{GItjEB+|{(2BnnJ-jCVtLB%}LKz24`Tl$P6LY?wKfzQGx;fMD4)o-jIdi}K z7ZWZS$YNvIsOQU{;YB@@`Yx3S!GM6ZQMz1z{M#q^ z=Y;5$)e_&WOg#o#@ttbm2j3ogSb2PuwS^QkCu@*g(RC{?!Va^{cXM8>EsEDsvAn$e zwdW$)`$DZQ=r`7j1+kJ2{5%rI-oZNT<1BsbcPb(S^Tt@{OG-iW3$AQO2BIVA2cL0B z3{J0+noujBR3sR6osP8*r^A7VJ!@^%AI3S-LsMO~a_DEMqdL;7r`Fmal+0#tSbJE! z#-`AI!uc~=S~FToP=K{l+A#gLcc3;v-Un+5>>k!4HLG_uv&A5Iu;0kK3{u&`q9|xD zn@Zl7nw0>XSu`gB26s@nwzJFk7>Fb^qXK`deMgU0_rMY__K1Ff+S-!xHDBR15jk6G zPAy+^6t7v$R`Z_nHC=c_T7`f?Bss870z=M)WRQ)?j*!LeE%}4&GQ3ai8J{zupFS&; zFmp?K9WJ?^5CaJ^n64ra)R46y8cJJifG3StaB?2fiBurhIp-cHnlBdJn{YD3RFlQp@8HA$QZm zmHc6l<>6a+$YmsG5&Lb~6jZ1-HFh^%Z_J}*BN!l3E>bsq;_A2m3i}WhM7D-jc>YK} zbii(eR^=^#6<}V#G=?fSv}8K!`?asaKAerTfS*wr@U%Y1(gc0I#`II~5?+dn*yzO@ zQnRg8OUk(MJ`@UUEVP+Z$qJhFOYIo8TN*N6l6X9B0`J^^?m0AP&BwRcR zl~3x6Cl>;AIFaJX4-WlF1My^oe9}lfSs|Y^5l`NhPol(=MG|tfc=Eh_!WWhxUn!s9 zcu;chS}K2%>bWyqnL&wcv@q61-*QK2wO#x8U#!6oD$PEFuA3SF)6myRAy!Nh{)_6V zteVNjyjV({Poa2?S6FRj_4TMYM7wVYO_L2AqQ(y#fi+OdYPjz0+C3a(M;Kj{;RWYL zlN6{=m;BE9^t&jE2!S` zIznwTbO;irPHo@o`PdY-(V2<>uAIv2`_Xfq$ct(1r{~jVDbt=PeLqW9EuO!k{Vd(P z)E0}CkS~gFWJ>IBgFe=_=%c^>w2%A40L&PA2eNR8#y?1+dIxfUSgIXkCGHPPwLPpv zAvT2=TUZHeWLRk(N(d4#$-s)Wd9i^gUPcxYZySl?AH3K^6c3~59SEnxe)BP2aN-Z4kbaz(;Nht3Jea?zMI&(-zAPm$|(#Y`G9{jWS%+xW)QP&;;c z+Zn_1T%9&$-t-70;V0iM(;1X+LOSE@P0}#XWE$qOF%^>JJuCAWu)5&Ub}jY_HR%jn z$(8847g=s(jJ9h-X@r3EG!1#;^WE)To2$XHqn{a*bJb4r0W-sBOarr=uO|odm-$NO z*QEcOt2qD}T;Hy(yiC~kq6oHc*Iv3ry^M(Qhe-L=R8@&FUa;t*G()CUi_~ zQ-Gwkg5ShpQk!Z#NkD19c?J)=iibnk!_6gqke)%$dSLHmv7+n6QrAn-ib7b| z3w@J!y%g=KzXKc#@RQ;4CtYnnS;T*``wjgk@%V}Ct=qO`ba78bS0!JwCZ<=yV`)pu&2Fg?5%JqdOjGSMc5i81JQ ztsg0FP-(`U4)?QO#%AiDL$vYujk20Cnmk(`2E-^5qiLj{P2*$Vy#}M{;W!0-=Uylx ztI`<&y!UoxD?{+0REs7mpx}J8I~t>1D0&*~4~D!nszRA5x_BfxLI!d`U@8kzaA#RN zLzO6gK`(&S;4uuH$JiyneS^Ll#~p^dV64jtHm~ZC;8}n0H}{jzm>O~{TK0tuJkfU= zl%%>mSSlXeG3VqomSro_Hf|yH+>H=LE4@g!XOz`JYWx|6t&B)*vpF>@NK{=&Reggn zZYt8Yp)PIWi_cYNV-}vKhiGaA8&N5FSEP;RbjXcNl*~VWDWuf*8#E;bjk&LnGhTH1T53Va^2( zQTMm2>kD1c0xGl=+agE-AAqPJvT|!gPz=)d$>O{{wusx6ll6D2|&K-FfW8p>XB z&d}uz}_PO*!jTMS4zNPbv$}dtPY-TtPbEZ=-#ecDc(}hqce)X8a!I1u5hUL z8Oz@30TZ(xf>g3vdMPa>_9+N?p=t7y&v+A6geXm%>lzrz;H*6a@vX_^uzjwm>)|-R zQXkoeq56!)Z=sF)+%y0{pBd!n4w1rCmz#`17+891`U#FM>f&I4Cc?@y5)s*zOzy@o z76#=%$n+a!U%~*iNbb4dFOcD7pKOx4#;E7T8b4Vuc1q9D zj!U%TLzU1}Q9JOckj3^s4*DH9&|7~Pj=7`#e$NkJwfr1rEiNe$Rg#|!R(Xf2G_TWJ z2tPN6>O6LKoiU=$bD=u-iaITA&_5mx7`yi!p(9__zP;|u(QPmhB`aIhw`bzhQ=2Ax zj_BP#Xc8~>G_rL;H@QWdBQFeQd&+mZ+e8P4qxX6 z^#N)wNWNlkVOy1_A#hZxF)r&fLgzW5e~^apINk{jV_=kFaQB3hGUJ=rnJ1b+cBQDr2k_I;eUTc(&2~Enqww zwoiM9V5_IT|C_Mg1=!qZKW6T&1lyqh6t>>LKnwxb6I;BA6M}mQd9N9A?jXHVubzabxWA%Dhmvvd%@_2X;$zsB7$pZQlZc8D) zCBi0~zQAUIXp1ZvJ9ZaYNs^1O9K5iq7T_evIEsFOm~p?PVjO`V(Z(uUDo-MWip2)+ zuM{e)^zA?|mhW{>M23V1F?47Gbe#MZzSifaz(j~~0~TM>(ZmaM>c<~$hZ|PkvRQaZ zf%Hn@XIlbE*Zp62{7$%sioFR>;)6Uvu$-~Y;IPeN3M36f6$l3;u{?sVHE?ACF3E?% z&~I&o8S0@^RPB~z_&va{RSuw`&ImEv?7CDYPew~(AnA+0bjMkGHK7ES0n<7R8spGo za}6X_;~4?AQC1K+J@8)Q%oJsn$i0(6S6lnU$240v4BhA+m^i)^)yu1~U0w4kri}ar ze3N8~>DjRv7%1QC!r?k4mDolVDe`SErq|B*9#1MjeIOB%J*oQCOVcxWi+Ba`83j>m z5Deq-_Hud~42SeSmXUcJn5DHu8|uG5*K^1ldj+76YF8ElXBkME6XeK2r)$V&AfqXbAH#nBG;Kb{zlkRpy@0Dj^T`?WLhF;$AI~(vxlJa@4E0|p zso?}S8dhHdQ=t zZHiLc^f|g-e2O5Rd$C*|a3^4!{oC>wWW;e_=--D0Lksg*Y=Pcw^lzs{h&sKLQ#ApT zx&#UYl$A!Qs)xMz0G%ZHVK^IaQclS=Cr#2jo23ms%Z_{C< zQduVE7+baU4qkC}l-_Zs-e0rd)TxH(bULQmLbjr2YXg!OLeIKl{qMoVfcsffyw)`J z@+V_J0qT47ksGU);uDUhxS|*K2IRkb0zr4I!&p@BS_4={gH5ToDZAj5m%Z>phqBWO zCQ|c@!LvUegXq;+dZnfUAJ#y%1JSeywzn=mK>#e+)_f6R{tB!JgopWT2Sv|YT;0XN zk9m8sv!W}z#`v%C+>X;WLW``qv)EECRyaa|72{EcP9PD8!IFk3XH_}|l5TspJ22#m z_wY$w7j@dpF}ix)U|%UWqjtsY$}mA{WVP_;WL z8$Dl-so5U~Pk}&nr|qcf@$22&eGiGmM)1j$9)1*cVZZB&DQSA1+wRDG9q$`FU&kW= z+VJs#v1QjKb_UP)1oZCsHFVbDpT}eO8+nAlVIEF=fKm)!w+_a0Bo_j1ZM0j}J|(a8-9t^{ba6@bB*|y@Ly$y?WvM1Y)(2Fsp55L3$-4UJ7MX zXuit3s|Oy}R{4YYVpER#<7t`Olqqx0GF0 zfW?koGIFs${mywV_C#Ln;bq>1mihaH#j{tr4JRYbm$^;(Xq^tj75BEXp zpOd*y_l3+OwLVvJpXNeOQ;L5?>wOAjQ^yIdbsWUa9^NK}473yh6rxe&Zr&HSCgAi= zFj*;zt!#V#lyYDS_svuzs@YtNMdll;=N(nSM$!N+#58BuINehHbExR>KHI=AuxRx* z#bs!sLTHaB5fQ1>s$CFP61q>z(VgjRDjjXomE?g^)rlZ1S-HtVBGqWxscFv~7!vSK z@w7G2>yRcB5nIi?Adqwb4>*|tHDcce**MfM?W!$gboOGnAreGgXc4Zt>Y@0K8F8qh)smU-r<;B=%Oj8p;p5dSWZXp6VMLqux4~_>#+rdGWu573Y7M_~E(nFg5nS zg@m@o>YOD0pb{LvjW_n*7+Z@X2wE zBm-in(t;Q%o0HNcw6r4in;%$98`0@z(yUx$e$5$kBfdkN%Mq2PtLsro&dwQxa(7SU zF}xv17pV3cci~fh3c6tzdI1Y`y4vFiYAQLW>4}nOlFbh$&+P~;4hyT#34cuHUZV6_ zSvRD*daA2`L|yYdu7ET=5f#Q^pP~u=$`6u4pr|u-wt6oeFi@_sTq2^`q|8jGr8$yX ziO>`WKM6kU?Q6bC45>(6OoJDi32y-+A_R<8T`~xH34BRw77P1TntE(6+pk*aYihsl zHFSLKGhP4{UiKnw;`qdhNeg5jwnguFoU4t8Ts1xmpBebH;1hD#_e$W584XDB!jF=Qn4~pP*Y>1G^=0wKpwKQ0r>k2kV`*LT?I5HdHR6Oj0pgdkdppeZi7Z6gE z7pH5@#kQs^oxcFyV>Exi!@NRmH~s^WCTxnlX*#j$F+o`v6y*b*Gl!?r>UX%eC@XlwE6 zk8RYuI1`)pU3jyVgMw38n=@WX&!L@&Fhl|DE}=PCdc8%P8|G_7Ju z4kURV?+$U`gj7Z$dVsZvl$i|7OKJ*C>MoK<3aAK-l1venK+-jM1AH$H_olf9c}~Q* z3+i&`aNaP@ef-200SQt0^jm7_DKXd#QVg=>^b>FtP?S>Y4vl9a^oMsk^^V!#Fy<48 zS)V^g2SvvJ`W4kdo=Wj-)$~S~eH37$DFWeAMpMdvk$KF!I(0kMp)|mMqA%IQr1B^5 z#W&HSKK>yMYPaky(<)WFX5n}TyD*tTeM#3o(*qi=tmLPWf(pmFe2ka;Q3hXJ6If4D zp=X8(BQ}nGn1~K;S+sKVAP2CboeK?{H0=o~NRns4pRTzXiY3jPo5jq=+s|^W4pS$Z zJdU)1e7a4EHLKCIL%Av0q1=@cO7jsxFSHae_mES_{zg-_{n73)mLQxx4%Uz&e}U|s zUnKjm-IMB#C=e**n7dr?0?@k;Ias{87JPyiipRrWT1%C^{q`}w*Y)U;|n(eH8FtfJi?8 zB7NlJulFqmNl8#9gEM*O771IucLI1_7V;Q&-s}i)}rmG#WnRrf| zahYkOxxBm@@=zUiI6cnD;z15zpYQ@@Gw`jU{axiNl zN&d+HU)p{LQ%dtm5->WS(oxuURNg>*1- zq>e|B7^gVef_YE5sc8`G+(9^qC!~l})pw_^4Z5r-#@rYUBKsKLr;sL>voP){H2>o6 zfa8t2rjZyVL^+Fgs1H0?3!F1d6MQ{noPo?uvHBbVFHS*l?shFI#W;L&jO;~RsyCyF zY(P%If26YS7+d6!WS#BErdtY>M}^4XC6R#yrSu)l5_f>&AR*;4SDa7;7U+g!H*92& zm!hJ2^~(lqqV-Z45u;RfriofX)Tva6l-aa#(oTwXl!a*24k#Z(KVVO=V~QS6soG`cnd0xE#5vSrt)S$heGySNmZ)h9M>j(N1yJ-JA zkT%MElmg!E@z{Fxa<(1bLv?P0RE6miNu96XM1=P&FD%erMr2aw5Pu8D+>k%s9;jhb z)i3KwcF^1;E(b!A0 zi{!ui3eCq|cRI6ki^!p=QT_21LSUU60d2HrU5n{RbX`pWv4!4IBue6JtB>sUuq1~b z<{)G_xRIIsrA!RO&%ul^Fcx2#kAo{B)=J~! zDWD`w(fzZnN)tN|lc?s*&Tx0NdQMWFRg$G38+d+zFSsUiE>ahR%CQ-{$);uWoYs?C zy{r^tve8oiOdSS|6G8^!0l1Xdg+(p6nF}qDx|68~klr!@+zO^Zjr1UrYos@xNsmNu zm|Aek23f@0$&Vp*f*}IGXeYRvA_a33H6??LbjVX6>`W{l(wY--dJdda0YZlXGxd28 z7P1`>UApd7Uqe_OV44{*<_tCMHXbwNb=Eaz%L-jOFv&$r2f{(*_=8KQ<@hII{OCa& zKeojQiGC>(1|B|Z#7DCB6C>o}eERS*I{;tK$%8cE znE}b$n+uR@Ap}-455(3NlpliY3%V!}pZ!N78P{dt7QDvD2cLw!ZrId`;pBUwi(|4F|-4}Ld(pAwZ=Z4wL9r-Z8hY)n^S@y@2^zR6%e8b5W^E*YqhdV9&cWV4b@oc6*(! zsRm_Oyx^s|L07h zfGGAWv3ohBvD?vTT?js?i(*E!qo(bJ#K6I0BkkBe(*b5QT4CvEO zlJr*|SagvbXq47>hM+4pMSUTen*xh)w3jFO4@gy0G$94V5FA%2K+ZMOYkoe8xxlp7oD$?2O7@c~M~N$H&qPRafgvSV8nI`$0IOYcak zm2HXcA1nL$azB0Pv@7fwTpT?Dzz$U;ztK`9LmC62V@IEQy6ywEoQV*1R`5Dmpq~^ixbb5( zD~Lf^oz$)rcV{v)8l2vd@V~wb6t?RDm>85TS4-<-(3%bt${K&$e>@!i(aUx!Hc54bzodl4ozDY^-*Q*I%3R1S? zOy-X$vsJ1xXjw>}jrPGm$kM8hK+6tk{bAYA1X5PdWKtV=nG#KWM7~)76&K-0t<&giY9x}r;Lj=SYRO=Z`zo$e;tGjl)5BdU-`wqu9S+b(-fNySOBcj|sz zxB^`}u~CnsLjVK~^l!ADUCW>To7>?3w)Wjkv z3crWkQB4H09T)$gt=p|x<4kS`*$}X4WB-O;C0y{a4O;V+L&6T zPXAueokSW}oV8+H2Y;-?GY~OT<4k&M<+u)GvtqAucY0F~3_)00<43}4{EbEKr`2%9 z4~~4-+7b-UX|6%b)za98u@#*!A+KMcQlt067g*ECJT1NGZebT-rGc~dfa^Y9ZDas-~#}p&bBcls7j8`5yto z9yhcPcB6w7*-qlv{d++i#)@3fhV1FDtIIX%D|5+{nVj~p=EHgKEETlEgx+)3F~M^L zGYAtLY?%8l-^4`Kg=M214~U1=uB#%C2Znp19uK6cojNo>9{Blwa6hl%EUQ2Azg`Wi zKY8axSYBFK{m;40>MBUgLR^Md z(98$fmo@K2HFq9esdfTN))G1vgPsbF6hie_I2VjTtqA8-2;*#vV&~NUc;--W3(e$x zNWF(uo)$=ws8u-GTtS{Tqg(AGKDZX7n+SJdg!{kNj=YsgRxd)QbY5*(6M z98?&aZ^P|%WXG_>6iZA}?+4Vd{A(KKN5$QBXpee{uWX3yXH;GX__uNwLuB7<@YP0j z1A;GQulvQixD46w^A**UbO3f$a%#%5UF=F7ZuN~zU8}PC!ROX-+Q1X&UtUG z7;myw?w8)VrGxUZbxjvqM<4?=?h~wbUtR)e20MELcDVpaDxQ-a=iYC9j|OV1xIHxk z!_3NtwXUSAO@DjpaH4{N^kB5VAHGB1g2yNXp3-~!>ndaQ6>$#3zpRE&pdG>FjLnh7<8-MRO+;pqg;W;@7JF#~mCn>*cG{z;5@F>QV5PE_Mv)txXI9o~ zTWYeur_hM8rM}?qu2Xhbj_<$?dQK5t-qHa|m}ii#a(58gStfs+_--Aw$2|>uOryj6 z(cIpeVFlSM!T=R|QcXI4HzCtFluv-k4eB?J>Oh|1Uo@N8YIo7>%9PPEIMr3dcwv=Y z2)3LDbtgTtMFxA3@P2d}e)4xG=AidaVK(CLz#p5|G$)0DFe)buZW z)tY#Un{dBwQ*I{@zy+zpnW-Vmts$Y-2Lh!u%3g}S7OZx-f#Gs`rn0&!9lm! zAR{YVN2@3EAciiLzZpjOATdDBXialE+?F-V6hd`0iPd0LK8Yf-j*T2Sl=wl!?8kQ) zWe>P7vZaS`W5(FDxqfvh;l}j{p=3DI6HmCkJn&$$V9`K5Bh7EZ$oZl6>iztxR8HbN z61B$N2^H=)j=S>y2#jmvZb2gZ$lEYFo3z`^u+lH=0wo~3B2JKjzbkC}qak*KR-i9o z0~sBpjGW{U^sf&Qlwl*vAVRlgfup)?vTqvpc=wAA^H;6`>Z>=#=*ViL8)b5tN>66H zO?8G0M8^2{m)7VjI-!!gTb*GT&wdD7!Xw&N313}%*)geX05&NNaap3*@@^<MNPb#X&v0}>B5szv~-f%!nX0J9umTKSxsDIaPCi)ZHn>+*YBz-p@~ z2`<@Q_R8bb@zSJF$EOjCfaUrqNQ&vz6-SFSfW(`e9pNi}ER~Zj^*o^sF>EXw}VyG}Zq|gSqc+-BuPsH6A>Yu)c zdz`w0{+?U!(UM(5J5h|O2O{*IA4%`AumcOu=O?d(*joYxWd%Semcts&vPg~Q@wHcYLYcj2}0|VM`uE`Mhp-x8S8QqC! ze~80Z%xcVuu83TykIR6yp)Q66bi4Aa4GL`*m?2E}NHxIcB+fws?hzoo-^wHIzB3Bg zysaOR$|+QZn8Yj$Nb7U=K+)%W{|T;--w~x#4c8{ujsF3b|AdxX!*aa4BLVX?4omz- z2;Lcbp$fj2%3#`8EJkGY(`I<+e@)09?ew`Dp%flU#QCVZ5qDTGu~x!B4gBWJA;b_b|h%zFp0R=A2pYGi;3X@ysxw;cSp zq6mb-Vl+rcgk@c=N0PJR4p!we>l)}N#88i@KYhTQwNqFpJR)?$3+7H`tZ3Tc=#n_x zu{+#<5lO_P0wU|M@wMqefjCeX*r;iMtAZL}>F8uAfM0V@_E71W*yN@UT9lzC)IZwE z!|ERy=t%vW3h=F!btIEx(~D*^!&4Gak+?0xpBz#EpP$tot|&)?8lcs42KH53MR5m2 zV*w*L%_5}ONBu|&X5NNKwQmCysnB?Z+SgsEeFz$(qx4m(-wbXRsD(zf3VI)yf1{cY zJv%g+xR9N6qp~X@`IG$y*a|mE;4X6V>uxqH*{zjbNW06C5iUp9HHGVr>YVIG0O(%U z?m~ltcGuZjx(MnW0vPN3@3P`}9{Sz-I9kGu>i18Reg~136tK~>&qK+Bx|g{(3(AeF z6NGbjXy0cp^DPcji9!oOp;^$b$}htgL7`IFh5S7@M^f3hG|xim`x0NdCyjIbncHzc z>GTbmHLXA0oT4M!=y}?l-kTYX(uMF4B5|p*f!Ud(}1{yNa7VeWR(zox>$K!a%rX>eCYTOv^hw;26~cevo- zNP|1#?q>~b4S_xnqtLo;N+Hlmg+sR*$=sbf++Ke8!6YFaS_2>0;954^Z?u7qf?Ly@ z{GL?)77>AO$OAX`C))W9gWftL%Ai|JcM7cTSfkN6+AzEM*M-q1_%WQNYfu`*Xv=P3 zIT29UDi@ID@F1tgr^}tRil6rrYvCv~mESCBoV+a(Buxm=cE66U|3t=EiI!X2{W?hH zqcG~axY-)5J%$ikd*!dJUon}VhV_&dI`Qh?3|yac02k+GrHT~DHtfNzN>T6M+B$?r zp-_pHwAvJ!v;hp4`}e<9L~@|d@Ve3FONdDBUbvNk7Op+q-8+4G$v}<5_7l{g7{Sl- z6LF6e7R9YMXhw}77d#Ku?(OMO#?)e2bbxbHE6ZXisZgCld@oR|fw73KfIQeE;HI>n z-56REFki6l6ky$HCF@T16*g}gRH#FdDilsX&aFZXRcAhdJQ&qM4Qka>80k4QsGHzc zvRs`^e_Nb)i*uvxpjgOQk^0lYPeS?=E((VMb2nY==$*U-I#UU`s@ybok=|H+OqXJ2H)W(VlbX>Dtv_U@4q_mVz zVWnjTKHw-9Na~0e@{}`l7KI6RLrDXEaYssTvD(P!U71S&WX(5`*ua>Iy7xsjyOvLlKvd+BDmFi< zyc;!KrRRsy66lluN5G)<7s&$DyWS)C)Ni^)=1&+}w*-Gs^i9Ub@mh6A!! zZ*Dn53>|eaDlguhW<9^0&}L_>KG<<*p0t z=6|}nTHl9_N@p|gcS<&urqjA!oO-$I3q3Pe(E?;82Z>1PE9|Q>k3mdc;vm<5uYDz0 z1PFhN`bXGD;ibST4=!VYfH-rdt@17$h8=dFKVnzi6m3?mZ_p0-~m56!__U%{OjBVN1&dGoW*V- zD6zn!PnP7j}YWV>6zG!2)!p%6M7H%M}_qs+HVPd=slgRm6YA2b-kxv(|fWa z^q#-pNP5o+_y=&CR!@NSp82fzkn7V4;tKXrC;7Mwde64dahIm|h_OZ2dw!-%zGzP+ zy~kZolURU>3r=VQh=R5Wq4vOV2sx3FNV6YQg2J#bDnwhA(7gr2&1;0e$svd51fg*U z1kIbsWpA9VvZGbgj(*Vd;TQBE(TI%>zeZ39f~GVDi%kpqmHr;;(Rw6m^shxk<)6eH zc7|mo1Jma>n|3dl|K$!#F7x@*avwmrZK=8|3GcJvX^{ zoD7z~CXJ}wd_tDSVh`OV*BpQ|#e_sPaXL9egCG=ojwlCzSCl8i4L(u!z&lG0P$1<7C)a_=fhD(>okKU9ga5TM zRlq)T(`wbnU&r`ie>a>2=)P5>k<9=Uu8t}!E@@bv({g1us;JHaDQV(e?JopgSg`S@s6I7* zpJ==Szp3&4ljuMuNJ0;Y#^<(Z{N0xscQGEsCkM(gZ8t+QFd&ISfM`zuvcaxTDcK_aP@XA$Su zkI@P>`SU=WemSz6Lw{$OcHb)yX41OR1-sdR2aK?*L^rGOn-F&S=*Tr^M@qpwWgGYz z92H=7SF7{%(6Ay3X1zh7(h&u}{|f}J4l`05%4G0luwb|vPe-_Yn)*pGG2U9zKA$55 zc{b%oZq4w2y*9$V8kf_agr8ys)vUMIGjCLk^Xh`S<`MWP<|+I6p5c>lv~>mAL9uF0Wfc~ulyaax)306RpE7!gMS7wh z7>1kE)a~#H+e5d;+7#sDom@ritm8+xebefVTg%a}*;A`r7iR9wp1R824c7;Ep$wqi z3z4V`HT)ez4R^s>bSSvf2o_U_a0X8oy;Vw#O{Ltl@M!^^=N+MQ(#;hhmBpI~d0`aa zglvFL9PxW^VyR~~-qbsMBnkY2uO^2#cTJveLIZ`Pzl0a_e7U<(_J+fEtr`qb$M2Vr z{uXY0_=`MU>U3fP%F%n?jxHQ4@y(n`Tppe!J%QiA~Mt_yh|_ z5pz5<`W$zj)Y=?l9@yrfUJ3;bF84ISI62ttLWnF0Z$#+r8EYTTrq}*9obAqQ6KDTE+#1fF!OM}0Lc>`ZirdCn$9CZCGuTbffwOPQ zTg4g6p255ZKE#euMv%qd&xRH*E5<7}YS=1=2#tdBYW{#&`lkl^Myc{-<^ApWjwlX_ zO-sX-<{V{>WHA|ZbV*12DeCh(0|CA=&NYS7S-@;xO|{^wNh0#&+qWSgkrzu>#A+f| z-<5%sl*4hQJP!Uc;Q4@tTmxZ>xa4Q)#_E~_F>2~BG02a;`6ubdhM%RblD~tvogHUt zxD=cCbFE23NhezQap3z{U-|VkO$0HqfXG~+t>UFu&3_3m-W@@_ zIHTajzfHpnQrc*E86fa-Q3PK4058delf;uTI;sgiXuynM;|O8nZ5UCRKw85_wWoD# z{I_}GbJ(Mhsb?v(z6fSW%#-*dF+#urB?Qi(E%@Q}$e;p6VDa~*1Yo^g#1tvUiVeYa zjd-H3i3qjZQx_KDcyuJ6Dvp_9{rj=J6+V6B%V_kzCtsy#1qYOtn5Kf-5m9L?n zyq$KSKHq5zyP8!_n-7~(eBb1$c&-e_+(R1;? z(pLFjdvJEy`@aom|2Mu(oYfp^4QI3Paul59qquFHz1$9*y#R)H4xFtjIX|3{3m(?v zGEM$G@oo@j$C2xZe8mvW2_f`5ao)i~iU^fi2q9&H`L-i7t- z_EM#}k*yGZGH}@c(ayb0UI8bYRb&99fFApcSi4o~kY{m4%X+fZ!O*xW@^EPdTi!mK z6Fta(2-dc0f>{O27k0h8#<_ho&whwo_A2z$NIluB3cY#o^#>s zri~H?vLl_IK4{L|3LaGCKOu!bFcbs$w-vVAC?0XvWtppzi7MIu{u=+qnzPw%Pts5{n zigVcomcPQ)J$vdBcNdta{!k60zPa&%O8;WuujxS;J5?jRM3$?8jr8{<{3re$a-L^Mo5ltk3&sQ@^_xldjM2IA*Q|4OqDU9B z&TX(o`jXJRt^lf(9&JE6{eGQ&tYLUJq|Wb@xy@uKaN3p@Keh_<4gEv zRDUexA$W&o)0gx!ej{)&kaP(Z1%GdWrR>&tm?n}siQhsQ1Jy^{FEr(6Dp49;>Du)^HA}LI2z!cqIhqpxQUCe z6~$kKia+P#(V{p!?k!wAKoox)s{I}pcM-*hLdCCf@$st|cr{e~XD;3^ikm{k%eZ*6 zDE=-~T*}4&5XA!jgxLGJ_!&|BYpC{ZTwF%QUgK2!AiJ}88c4cF)Q&ULBvK=&;Nmf&SQjcD$i-=*xI?J8Cl_}W#oa>1CNBOZhk@@MDn4nXY4}DIr-q8Z>4UR%$GhvLBmzW*qUy&5E&c9}D0vLZFX$kk>|2y#` z&cA6Kg5lB_koRj-8hFzOKr`~hqaGi=P^orDi6>|GKZYZ#!k|FXay*umgw6O3+P^Ut zO$0W}-h?$&;EhGPG`yv5n`Yp+b}g4nz6_(D1tFgqkb<%xu2^ukjYAXT3-ngz2e7>B z95eR7`5vbpIQy`dZ(an45Q@B2_o69tt*=18AV%4Jd}T^*Yqr_Or9{|}DMOs?UQy55EkWDismBFN{V;JnpHUS1sRdAwC z_SUjl7{QF)RBa%ttz!p{@?Tsd6?*{{c1NLkx3sJiK1tJ~CKP+VXn<`L)XG(8rAcKW zWQ%M-0t)1;HaEz@~$51q%oTux&q&X6oY^1>MyT z?k4z=swo2gdV(L;wSenE901aY=#U6*E4Z73VR{4Zt$4voux8N}Jr~0mLi1@a0EU1s zkZ&iHrO|^Fe*(cpKruLhr1C5ZK1Cg5bP3S0_oSnXvkCR?4(dW~pQrv?qOXH7| zMu4n~NTRt-z4bCsS^#qPO)*HV>TVLIpx~J%Q7hPl4D}k}Bw!sZm>>^5pFKv;so(y- zPxnA3hTqtCoB30odOfIL!QO$})^|g%s)l7_&3`L_N~1SQ0+n@_M6H4L)-5a=t_AoVrsqcM62`|cF}@f0Lj~Zb6i7}-+M+x68uHWY$305rJ5i3rC{*+W zvZqkKlcrTDQ-4ABnCNHVvqN?-ZvjSZT>9$&m=Noy};W|9$^I zX<>kK8}e^zv{0dJ!@a@(V_JA?0`=I87Idq(1;VuO!|L|ZLg~v9v=GdzM0^1`C+tdH zp*?$;D+PJ`-~p1WFSMFF;KU8wem7Da=1Ntat%V4zIf%HT{h%>Uuw<)nZzt1b%LGfS zaHfFt6MeUf1WTmYeXKs6-WpAynKvBDF>GRV_d_^Hq|Mw)y)^bvU(}2w67Ol9Bmh=C zZq7sOgj5wHNET7&H2*9;G#M-c(?eY1n-*N+l_aiF}j_^*}vL3X#aD*l&BdL=jr$EX; zf~-z-?1398;JNXMxd-lIxIVTxmMn4N@%Io1@i+~SjVqJzc#3!|i^m^{$4H}`hg};f z;eC^Fg*&E7$5&W8y$fX)-YQKMc^M!di~82%@QbOkTj-5KzA$4lq>9`&-dd==g*SSU zU|_vPn7W(8n~!|N0NH_r!7wzY0Bjls_9Yk|7apxlM4v}1Chr&bX-|fjny0G$MawEZ zEA);_=7)4|k8kpRew$upX^dbH?;LrIVNg+@MuSs%9!(25WeR2hiU^#^c0+(}Q2+WU zIKR(*8Q)b9C$1`(m>9gOU|b4aRWL41ePD_K8y<^@J>UjlA|I&_r;sN=qq^-BsNDlA z4W^@TG^LZP!@8Yd!aU~E`taHl)rSh2y`N0)S8DG+BHmA?_a6?wpN#hnc%Pc{+VKmI zkK1vZ;}0wX^W`d(J@!yA>g0CFrZLVd3eTc5#GU&5o~&=zJ{eUE-a;GB+M0Lm2vO3Yy*lAK*0Mp z^&Zihgw_y;D;rdb)pLL9^g)CM)ec0$*eufGl)Eg*85=wts#Pz2IP9kv@-x)5%@p}v za1#1gf)o3|jv)~*S@J|msp;zanykkw96)!XM&phclKHeL3dF~L@hfID9g zHzVX+*O?C?{dU7`#Q0fb08&U_@Lo>DDPuvV5Wu(8s^2Wz5ZJ1&eJyN1Jsai?L744Q z6;30*V;FWxOE@}Ai2%B>xF1Ja)eE4J-@UlY)eQ7W0rUykM+f>_)K`~pK!O$7dl$%P zKCp&qJnZVs-X>>c<)gx%Un%tVxEF4|40ETeTf!_W51x=c8wbhh@P)DBEBtmLqBg2q zZY7vmK|&_gObvXYD+OUb@(98F!K(yw6ul{EcL8nQpBSESxET@rj&y9_0B580&_SN` zJCgH!sTaWJA2IPDz|h32Jn`5YTTc8-Kz*L!nA1B8NVtWNKnJOqch70loCz{+b%2;K z1Lgt{fZaQKBqkoF0d@wmjf@E98FYH* zC(=s8f`fM*_5()POsPs-P9iI2x)Cu0wg&RPT291`-;h_9rk3IdG29fjXI~U+c#J^d zB#i`5;u0@Gf;Z4A!Gat$4Jf=^suIb6gN+r!0E3>u=E}65V2}|#yp6~;LgqYLLt+Kb z20kre4&CYRgw9J9ptFtj`(UCRiBecl9qEAXM@A{MO6(@LCOdq6dXiP0iIQ2^Cp4eT zx1Hww%)&0=HBWq7V`1CWCiE|R7bSxx$H?AkVA@APhz=hT1$urp%>n!u(E@(K4N`$9 zf7sPYsmAIS37kfF@VUKa(Y`Av;5C^$=wB&UN?amW=XDX0M5pTJKgxMs3 z0q2NqqgEpFgkCX-%SRPe<3|W zyDvI?*;n(s0;?7YobCDneP}pKr|*$CdkmF;v+gJ-oW0c~aP|s58E3y776Y8Fs#H_S zX`+I*a8|Jxb=!@z!L8t|BefENvoix2XYm9B5K*K~<{?GH*-cf9v!z{wIQtOcf9=4T zXQ9AZEEkh zCZjOUp6t&!D@X0tU4DmB34=`tPd-&P+L;&r^*+s43>|Q3LFwSnfM9`Twq#|`K z4L&N)HoV0+JDL#0*-#ja+CgWB;CDedTSdG{!&!Iw9*MJ!s02DYg|$dH`{tm)*v4bfz~arS!u=zG8@rtC1zhF;7#+ouhwNG+$qN5z@)560Ph zor5_01t(7Jz}Z{#1kS#pJ~W(NN#7%J_6RBgXZ=u4I9v6Nz}buVWSqrm1DviNq?*XD z-JZ2sMl{)OoL$ul&f=J|!#Mk;ALFdMHl!l;8Xi)#wK?TY##u$DAkOM=Qq>Nel@x3I zjG)wT_7<(VNSxh>O2FAOC?}lFKOk^67oUu?hv)^Svp1-wl5;;5v_)t6M3e2t*|tlf z)7efYqcG0uE)x7q8&Z+lmxmM$XZ_z`oL$#3h_lC#F~1!+oA7|ZnTPt&aJK88_#TO~ zfv5zWZ9qBUZ2Z>(XJhcmIQtvDz&Kk#HIqF4C8)ws6!P%dgjKVm3tS{s2 zEp13eYLlCW6b)xbUT2)8bO_>X+KhJLtS4F|es+X-lZLZv>3by3esVF+%qSA;= z)(M}CvrFg&#+l3m%;`!6ZQ)EM0%$kRejvMD6q)u;CZjOUruAW*_0xt_q`pmqkBYN* zUt^qoA0NcoU>J+qL1*906*x<$J~W(_5TA;~*?Lq0oy|fy;cVYm0%yDM$vB%xFEGw} z@BnjisGu#JttOgmH_jHdg0qoK*XT+N{oaNH@NSsxo5^$D|a>CgwUkaT41)q$wZuA13u&)0&IK z+4ZOdoUKAR;jH)zfwTMY$vAtGUSOQPN;Q?7aw=#GXHKHYcH```l;~@78O;esvJc-QadrtR0cUejPB_cm zD{yAUC*$l!dVz5^k7_D84k~C1XUPO@yK(kVD>!?a$taAoM|v{Orf5SdQvZ1$4JjJV z{4X)i`WS*ZyK!o}aMm3y(jL&8`p|H8AMvS3oc(Yw<7^7b31`yh0%!5~WSm_^FEGw* zJiweGRL~aA4iW*h8)rjX!C4`bQ5a`8Ucfk;pbZK4pU~i=;;iaL#+j-Q;%p%7OYNYu zefMbmjCfO!pV9Y7oUKD8;%6u)obBB$aP~1i1wW$~7-xw*z#Kglw1u-bh$h>Ov-QaL z7H!|Wf+;(Uvw=y1pJ_uXQWw(TqvFi-H^$j&T@YtK-PkUiy>hp}SuOD<4QD;+dnC>t zMkU}ZfVD_CdvTY**-Cse&c3BZ$~gOiYAQLOQbAidTR=3~Zk$bQ1!re?mclsusXOEB zXKhGDs)L6VZEa5aE90y*kjbM@Q`g_nE}RwLC2&?xeP}rAP2VGN_B&Jp&I~9goX!1A z;Os7ZGS0rEManpPiE1i2d#Io-oXG@jyK(jdU0f1HKKqc#D2%i9-56)bwILO$Nj#)z zIP3j?j5Ft%AkHca+J&>+I|a@%sSgcjEB4@fB+f2ECE%vD7-xS$IpM6+Cjw^%d@{}|=>^7_g$J1PAQiNQv;9N> z?Z#PQD>%E2$taAo>k}DgE3_dMsjt!CqvGtX=NV@QPX%#y$@T5R+1^Vq`+s5mQmj&b(JFF~CBa2?}}?+ufc3*om#Spbku$-0M5qbH=OS>j8Y zdb#+Lp$?=k?EN3SGn(JS#pHOeL-0La@V(=^gVnYB$+Uh%{XO&)d79Mi;!BEJAFdxQ zXA+%(Q6NDFIBL7{GY?a=u2FrAUh)pb9J)r!%D%$v%U!s%tTv`FI~`se>9}L5Hb&lY zN;V*|6=HqIz){;9$Bx>3l!y4T2K67<59tgg17YNJ;$)#Ss4Rk%k~IWj-D8ugHgfnH zI{qDuNR{Pv(;SfHq;s5W`JveDY~NheQr3~<(ynOXgsU6%l@h&FZ(m0`L*J@=LTFK@6GKP zzST{t%Izq6i9FY(1(6)SR~J~A?od>?i#X_58QC_r;k5HApM}@#HV^wZ;qIXNvm1rz@zDzDTDU@%i zAG~=e-+&$$s4I>{_4UtaekP@;e-&TS)Mv$)4E1sP;xkqx^}xKwAFI{764uS5vq>D| z&b5T5l_Je)GMTP|{djt}=x1E8pPXPn!-M^#i+)m~_0y@1ezx>&)=#qf)u%k@k9$N6 z8lo}}di|J|gKjqFz=bW^dQ7ynBwAZ@&e4|V!4yJVJhcZzV_ogR!ciQ_s)brq;Foo! zX!!jXrY}C@N8KZ^ zkfC8=%~dV2pwVh@?n*9d(SD_9Hd$R9>}Z~7|DMS93$*qN+G>AguNLhO4z_=Bu>EAw zenPbNPvo>Q{+=zz|KZ1sjSbx*u#v2d_T{r$YliFEo-M|@NVGLKT3geix79qxBSrT7 zJ{gP+%kR!aEX6qnS?RSNNhZMlPn+g;kP;0Ds?hs0_>1#_Dw-^=9|p`ij;f zPenEA!IzpnHaMb0F@CXNID%^s+hUK0M-fs1uY`{w;y0?`AA6tXL^89Ok^*OLreKx? zYh`TeW$7=S_T8X&0nvM`iZyvH-z!;TuEC=8C7rwsS7aisPSU^d1>U2GcG*_k!&*AJ zPlg+>+xqaG-Lhmu(AZYh&_r0aFIzJdgTtkO9(Cmwr#sLTwUi*vW5fY%F3at`?@t;Q}%qu;qc6D!-B;#Q` zB5%3LbV1=hBAr6-WU%2g@x^^*uX`6mP8+IkA-r3*vG?3{?s`96f?%t}KKmK`cVtUc_EH(H9GUNVvUN3K0K~-Ut$>GTnr$IafK9*i>?F;|TLp z#vmviekA$mL>@BC4h~lVAiGfofDjnXbA4>!2gvAweAA4Yv_R4;++Gk3DS@P?QGm^S zzteoob!iAc*yR`F0m2L5o-W2OBM(45T(CONMpdU|LuzKg4oVcp%Ol>`ea=PJCO1|26q45?Wo*w{IaEK1i%rsqal*v*RqWBmEn^2nv_&wD`U_cdR zzCpYJN|8fh2(re4ltEUZ912k{e{!g=T&dR;O7|Jxoz#Pp=h%QPkCL*;|$>Dpk8?Avn>5733z4bxWtHm--f{BOk2}tjG9t zo*A56b7&$qFRy|0mo)W;+cf|3TrIoigp{Cvd2R;zm*-}2SfjU}Cl+#{^4gLFV&8$_3o#@lC0=21( z3PVb3FdSE!!!W2bPh%7q4sZP*!|*It!MR|#+1ScFWVV2zx6~R8ml6!bE8Do&{WsrD zzdQ5XFgz983JmvEHlK%G9b1E8=9d343_aR_;S)nEFudYz4nwVA2~lY2`49icFyvox z?s-UT4TeJ%&0#3%(AqqFxw(BXkcaf*?*(VVF0RQ5(1IZqoXk8%*|3Q_{}EKl+?i_n zCeBlR!$Kfb(=)K88IhbhFQ%1gNCgPXStRnV<^+jCGD^6emv$#4U9#CI{uY+QEo!Y5 zyCbY7JzJfte>Z4wk|el>MzVMljgd27hW7FEhwnAqwyiDqsPNsRZv{TvlIZZ2b)u>2 zRF`YRg%LsczOe}S8u_6i3N0r6kKp_0@^i!I)3pNM?GHzXFEyUwYd(L^X!Ey=A4Y?3 zME(C}{tgd4H+-)Jke4SxR`S!d8w2v8#*k26RvsNbTU?a+dsmykW&AK2e3R?W4PSWm zou^#TISk-)x+rqN)-$aD_?NQgJmgfXWB=m^7<()l|6lD#GUWer?Wv~LVA$tr4#TQe zVfb`Y`(S7%ALL6nNHcs0Xz@+VQ0cP97JLG+Kw-_$e!7)u=mQX<@j;Ew!aU;081RTF zoZ(ch23a)D$MRY`VS0(khhSRCFcqk8rk@4VoJg4N|FspE>jbzzs!0l+2xU{|LDK;u_=tsDLKv%}t8}a7O|d_g?|uXS4dS&ekTcKMUTP!RLl| z@u^neEm#~K-h2b|igv;KRKM2X?X|HDc+Zb_NM+vOM3?eJC#wyYh5&z#o?#P5bY_@% zD}HGO@LNioufHqB`eT6Ai6ab{+uTH4)AG%`2#2H0OpzvxG}Th0L3R$ta^Ctz6!_G% zbHn%2$yVSiDQOPhq`)Nr$spjncX$XsLv;A2SGNm3tWRq&LRZ|gca&zK-o8>3!*C{H zTre}zz8<=w9GP6{YVye?l&3u3s*Fnx9tc#^@oFzlUrtxzA@CP5w!73cWP)xw0?V`` ze6RSD$otG|k8~qhi%d-0KZmu5;!s<;(EKS>ZGLA^_(JmqcqSu*tq|EY|H@w)d}ov$O?lS63;Bn5uxhA(lj zpdWJLm^2p4(3dm^A2`qzrt>ek24b2U)jQX63KRtVBj@VZ1aV`b*?wBPioBazh%ywM z5_gB=DP13~zBdw61iTjD=1J~YHvEKJJ_)J}yYer-MVv3%^WE5=ufLWRTWY?z`5Gq{ zFtb^L##c_1TTf>fmAb(jM=z9?xS{UtxH^7-J{HJ9lf{ zATEbnxPcB^I0NvD4&^KD+LlKk3WGvkq;xAdg~E(9s!#3*jKEA`HcmEWPfZNw$N=vG z_YWA*AvwK4-f>d)oa{LF9$|d9;TFaW#B^t6Uzchr>1xyCvT7&;u7UJmw7(y|^R?A5 zfg8Jk<5kA$E8-l6qgKOq?cVAa9iBj~1`;LCgx$BwVGbu8#w`rtwla4j9f8T8g!7cloj6g^u9bdKeWGTA zxK`TzB66p1pe9cuouP)O!YW)1mst%omF>Zz^BeGkoI?ghwoOA?)XBP*$;`0FpNRYE zhUxv+p{^*zI)u@FuWM{&N4izb>`33kS5Ai@r7NdXP=l|W4wsr1bh2fQ)h|Nw*p2@6 zwhCwJFv1w!n>GdcIO>8S$DD0APkG=3g_~=aph-(6K{TVZaKFcn$=Aa1rMfowG9YUP zQ+UNYblWk~{FoyM2?sU1{oQa-vzu_S_$wmvT6a&?^C>Y)IyIx4n(5h&OnN=Z+q4v&7261} zk|5)-8GiB`#aor|NoZ83T@f0~7Gx|Tx`eNLKwu19C#&gV3=Q|PA4J0pgiW&V#|?z^ z^2OnoAJJZ>R7>E2XmOeat%-w9G_Rh%St!O%yygV z3>k7@i+_Jjole;ERP1%9!5HhZUOFwi9d2$n|MmeW%xoH!~NkgeDx1r8qf0p_^S9}Ae%CA z6Yz=(d+WK6JuX*g^a);($fsqmf=iI#47&!|NJ!FXc3M_|Y@y55-_c)9 zmTn=N=;+0I`w~zT9VL-$vj66wY$8!M5#$!4D}b*<8Y0CG!31}p(Dh7mNZ{Z=e;f~C zC#PKK*BlB-9Mg8vX3u9#1xQmw%(U62KM+-0lQ=r!nFHt3zR5TUr}KPB9LK(;rXxDe zj}&!w^HVnYTQ?GMoh@a&jVjGMK5?Y9K)z z2?fJ6n*8+*rf8NnI`0WnbR6#ZP4{ zwx1Ji1I9-64be`cdo2Cxg7>vb^F^hBRE#v^)S2GZg?=p*zXI-#^lR@B_>CC(3f6ZK z*{ll*F_uUnW;8ZPTpO^ko`slIEGky&&NPq|QzN994Vo0w1Ct{r1~Sale+n5UB)+^z z@-9e=vb8`G3X3pXRIzbGiNAbqUy|9;VyBzQ+)qb9H{ixgN~3jt%OfQ2togOiZ)Rhz!|UJpqsKVb=m zB$Zx~EwiMOkAz&}G2oYJDdh^eWHja1V!4ffV??ggG=;C(fvHM=*#gR>7N`a7fA*KxbCM2eO{wWbGi78)fZ7HS< zP6uYttFs0+@iwPb zvxpY&AYkBj+o(=JvzW8C>2R3c{4d@CMw|$fn-v{Yab~gm!bADu)rcK{@>|lbx)XFC zoPT~Um2c3NLc=G#gpFcXT_=7SV8p@my13bz2-gK2KoGNr6a%-`Of6O%L9!Sx;*&O4 zsr(Np1UG8>Gd{I$?OOf+N8Y=~MOkhCxfSl zZ>Cw>Z=TP(o96ik=|4XgaBQT{3&B@{%$1{FqFEki25QaD*)eA4+*nG?B<{!jZV}&& zt7H7ZBk9b}1ts1fFih$T56Y8zhIDuxpVSd*g~|Lf(3D&7(@>3?c?Yjh1Dw&7}Vdvg#=$9ouax++KY3MDBMeghOehwxTP4lp6E9Z zpwE$)){>G_X^+GnkA-nVXqQKOHmr3}?Vdyl3iySJi`;9gY3$c>C{v*-?}Mt`{RC5$ zPc-zS0q2RHfG@1#uWYKRmcIHYu|3Y72fP2claQ#!v=m`SSaf(?g1fu)IUeFkn7tc4 zf!$Ya#TgAD(!l<7;6nD|Lz*tQs5rUbc!g&}2Wmc9%!dAFU8CDAZlRDUYH9hHdYBM6CD@XxP*01M2!G~8dWqKL99|`0% z8lAAZve38;N2{MSL+bTq+B&6c)Dd#`zDbfNXBo*YM8#p);)Di>DReNszIz9o2KT9T z?v9Giy^rhM=F}Z?$76E8>^Pg;^@Z(lKIRP?dw5!+O|ZZPW11Uj_H1Q}B%kqJ#$}W@ z8*#vud1;BcwuMk*y-&`DC%W%bKSWQ+Ilg zAzR`19rp_MAg^G#p{U$7fmH2fQto?YG>)m&2)o4`TP^)3mZ%_;Wc(X^&iNhFAUjvW zfV7)KE#k~2HXL{6Lo~T};-UxuaWmNdfG%qrleJvifOCPgjXJc}JNZyJW#|;r zHh!N>+J?NRMZN055`1UClkhi-BAFUM`YYpTI0-19Jqjd-3?@vaiehTD?JbrF-B^pNkPy5aGPN8Tr7OX2 zRmk^^=wNHDp)gr0yOl&IeJD0bPq9z+VvQca1tZ1g(^;KWkRT~J0YY zcI=GfFvqq~biaHu=lm|ba{&V@wwp85J5noseG)%l3lTsb<1W>aI~ zb==P`N;Jj7vx$c2bS4oV(11oP#;0rrb)NL&d(?4Ng#SFk6(ik;>ok-Ly8TASUZAba z1%j1A3l0`?MZ9-}sZFoY58wZTa!KVJJW_=>hYOCM!eB2MIz0q?B{nS%TV0}HB_#;? zSD~qCj|=(GPBdxrgo2Mz4qt=``S0K=sk~@EawkJ_N_QeHJ%-~{n*HZ-$38v2XEPQM zn8^|z$LtqQD5!hS?`Dea<@zElI@U;U_5xrIsw)F!gHW~?61WMlafh-MsJw-p9*VVh zgFe!je}Fku1;fwOJG4DcS0BSr5*t9Z8NLlmu*$AMU1Ad+XYdZ2RL;?Wr?(Sc>4kO2 zw8Uq#7_(ssFU43Zd<1&Tdypa-kCW}cN-;PBSv^5cV_eonq5;Md`E$9jEF1CmdQI7nb()F9D>zN|4 z-JH75)`b)&Y|^d>g+tK(vngS_vd;PlG^Qm z?;VS1KLu8_4TYU>K0@K`ks)raqREhpZS|XFkTu3)>@=eWY|2YZ&b2L2KVhqunoh~? zboEnGsFH1u627_cfHSA%J&^k)*lOohrAqw12&zgIOG60*91H~#z=Bvq5MREGSb@=M zrxgAQqgDPP$Pwn*$07?l%7{T1Vu4nb1>b=zW<+ER>Lo>qub*@zjOZr1s zr^)(gC}~z!3@d9nAvfnbGdXxMtNMTLr&tL~zQs6|O4zsF0YjPI`A%|*0`Ne`$FD9Q zC(=d!&WK6Z1?l*bW^BFd&bSa9Yal!|gr2z4>)=bOgOb-|b~HtTIlf}a0bIs9`5v1Q z!%ZffBbR>!!T<8uo%9lC?J7KC6Mb43cUO4Y+@zLo;dj-K*5I7>OIp2)#|P z)8q$N0zD$y)cP@a!eD!c?R>xipFB^;r0GnqyL-~>sY#6n*CQBzHIf~`$eK+(ts1nT zC=J>gWzgP*L96{PV9>_4I%su;HjLRW2u>8Ek?NLk(lHP-ms2AxgK5tEXk@No3cqGp=#eAMghW}$b zCU^bfofx99+M&|0S*GOi(f%_MN;MTBqM^)HbDQuV2ij3QU)bPr?Sme^brlA zR&1`rn_IEDcCZ&MY_9oVF`FxsewfYmCd&QMHdoW{R!KHAi(&GiyqwbkZ&2xTc~^-^uFJHI4awPJIviXlR@)#iF`|0U^0 zBbR~CR3^(s*j%2=c3q0iRsJ_%;BRxirsEWVeY#Uh+|OwB{~McY-fyJpU!2XA#=iZp z+FXmj;H<6KT!*5;9cr7a{H9%glh{SsToZrA;#jLT*OoGWo9h@B+gh=?Ml$qNHrG`^ zuQi+NpMY~No9nk8^lck#uCG4}7_=8)b1i+ICh8h#-UxCtGn=b3!%N6--R7DO%r4C4 zN(n^q!fdV||5_&7T(xOL6lQbH{7mkL|CY^lJFxl#ZLXas{B5p+y`1-h+FXh2+iG*Q zlS`h%<`TPMRGr)AitpOO=8DE6#pX&$CH4uhxt{)%&xIyWn1cE@TI4Q_J{1zfT> z&u?>ekV~G!=6bek(6*~>u0g`j%;)eDaln`^}Iz_!EKS^5cYyUOM|EVQ}p>rnI@ zHdhjW69LX|b43vv=d-yisEyjEvbj?5=z?sn;&r^et=L>^YcW<^vAH^HnM^;o%{31I zg4+=9ORP?)}Pw?6MstUhnsR6}9pRs;l^#f> zxmHanF)Y991j_F!?k(7}s23hjVEJ8>efeF5(oott51+OUu92rpyLof3+9R;h^P`Z$ zyAe7>=?-~odF~kbeBKNsz*%|L^ z&n%XLCrkRWnAS2IC>RL`X5udve~9c`kVspKiRKnDE18{f?5Q*+r`?3qxSmSB=LTB9 z=*9GTEi6|aR7kOFSi-3?C+yM}wHsL&egonvSSmB@fSjnM?a8q5tEEf_+_Oca43vj4 zqG?<72A=y10P2t&HN4h%Un90Jhii)~WbJ#}8T(?og?&mZBngSTN6QD`-Xz4t)UueI)x}EjQHvIe_>z8pI<$jr@ispMA ztMTRFYItl<`i4$cjLA7K7O^vT3{*Ts*Bfag*a>OPYb@C%oK%(4uifR2Gh$rPA?8*= z8BoT)qAA{Ky#{M*7Pz(Whk=wCk9ALMt;DBm@hKvuO|B8SpLRzumswn-H94wbdTzop zU0?f2{d#g=o5Q}*^B~ouIldn3MqV(id}HHo6_!tm+82hWn8VJP6TY$kVscK#G4@6} zU)t6Ad%%`%!Pufh%)L)Pr>8^t(|8Kk&fIETaUH@AXRboVOWOL0@<>>ND40^KxCL%- z1b$gpNxgcYxuwQcIMqG|Ukp0`7e|Od{EN%oL*Os=AiH5DeC2{L(7F$_GWPu$-t!}( z@fxS`IHUnc!;XR8B^mP2TX6qfPwv05Zpa;%Hzgki+gzPlT%eA}ML^WUQS6f-xm8Pe z536&l=3S%otejhQm0xaE${9)9tCZBLoglsfGpk-rF_9xE_K`fnW4)I!dEC*rx^{eU^xtjndIF6IkFr$JyM`Vw;=;>UCdz9>W)bThpPOpN+4Ug7zr zCPobfCj=x$B~5%BPMb!KP;c;tr-b%hc~iXlHROA|gQpM;Iq`RD2<8v$GxOMdDNNCl z4Jbqmi*`_ERJN_1MUwoJL8fi(N8k@evk`jm9EYe*XzGXy9#LfU$!JB13X4OLr676eSQ@QwP9tvW* zD3+%Sgevjr!YrPE+G`L`S;RvI@ki`4f=LuA1^5+_%*#`az<>W3o3Y+3W~#4<9=-hU`aC$Qwy-O)3}mG z)dWWd%LAJ82^{N`2h>_3-GfPw>3n14JgDR0+p*S4DV>$)ayrKG-gJy(SUScrl#bEE zgz-Mo(4M}X!Xg?G>LQL9N*E!^LutW|aMpq=@t9h0>`~r=!}w(_2v=IrA1%Q5ztRh= z0mT+lgU}(hRKvBXLEl&zDdfKtO6?kPcrI0gFpPO@zVp?0C$Db{-cx-!a(#BCzIW+E zqS!|$2tcpmel1o_HPVp(0J2OjL^UA;o2&EW^+c{nH)4Ud`mlL*BK!0KhJ&x_Lt(6` zx5-t9%2l6wL~d$|Qgt$~dZ4%J((hYVJuzt2SD|X+lR5r;lF6$+h{x3GC8(14Bv+|= zD_*cxucw0G6Wp&&q*kX<)jmGyEAz=PR(pGd__FNR$OnO>#*_|8?)Lh~0J{Gtlr`Qe zV-O)@aOPpT@k131Qh@>J9!K}+XWR3HkkZd1Z(}b7dZ}WfB^-FuW4w7Q0hF3otN=fV z7p!^Tq9B0R&^>^UeL)TUFpJO~v5sD;054L2FXq6Xkb(DmQ4PEh zz?1eM_s+=`ghCZt5#3w2yNSknL8Xx23~DoueI6I+f>eM}5A`=f7y;vCG&VoP+xRJd z*+A*2pmB-{io;IRP>-c9oPWr#3$K#9aGh$X|Lb!knpb7~^^M)y3BIwrGGOd#IZDsT zWA_FbrGW}c^OUiBKMI2Ev*;dV|9!EVGLN7JjNMove>;%?=jO3$8tt>xz3`@nHGi;N z*OuA5`Rnn^n%_gI>of`i2+0jTZl9roE5Fj|gEn_~g;8yy_n@6sf6mt0X8GNc{<}c2&R%gpqpL~F~`Z#`BtM5{( z9!xlj!^Tn7^N5+>{g&v-=Pg&n*0tzIC{b|^N@MM8zjcg(^2W$AsrPYG>Rl0$3^nNL z@E5QN>9mz$r3t`F$FZu%$R>i^BV#p9!K#*qJP~9W6%>b+>R)mQwbN@n7aXFuL3Im4)=m+{#>i&JSEei@bG6@1zQA9PR*-Gdj4{dlnp z8jF`<^isum6FKms7_8J-n+*IR1^8YX#njlhQ4rs6qI&>;=P5O#e_&z2-=~)<;EmX! z1Fl{s1HViLE-1hkDZs59_#-m#ADwF8w{zgr0)W5Ffsd4due+a<)iVBLux)X{q zgyJ+WiY259#>pt2D)pi$bvqIYMjk`C<5oP3+;RRGy?cwtQ_m8GizEI`(nG}wM^7=d zUc+OeTxS`r2nDTtDo>Of1+>svHo6C!#XPI#gj-MpUfvx5{8Yza1NY;DTb11;^Uu5ge7a9m}hG0FS9Hdbzq3 zrMd}pL2b!q)eY0(eyt9$q{c55E?^{1mPuTSjfz~`u9d#W92uZ(D-NMC?9_oV$&BpG z>$%T83C*dSLHPLudR{Z5^)@^v{9eZ|sX;GOF|r0q=z{Ruhl2RNnC?OAWSm3p)3Lra z;SLUyJRlA)C3z@yEgU8+PU?@fZ9;*Kddz*;M6DU-zK^$NFMg>t)%azt*+Uo9nkZ_v zIBX;CxouOpU!k_2ZR32K4yxm}O#vik0JQ=*~EYP+oAI(PMmQQZ424w#lHXMXwF4*fzUa?JCq5o0 zx$7N8u$D;Mt6H;dejVi-y9=ob)z}@%QJN{EG)YFus-R?1P!drPlu4s|Q0Df>iAfcE z^{=SG&$hXeRTE&_RQ7<$C5T_2en_l%gQoltuSwQ*XcdVZ+D(+vZj(M)D}owrM~{B*?!T zLE(i zw-S!xuzpnaJYwcr=zEGhaz#8ym9}cz?Ejuy5$`h8RJKiDj@4%v!fLE$aIDtjF%hKT zPEL><{4#>PNkg6p@(C3bhrNJ%j@57#Rw~=3dLbLv*b7_t8sL?`L!1<#;76wbXK3sYS$c5b$LJnpIh>;geg%L->;$)MHsTXCXWYW7 z9Pthw6R~E?Ro`B~n+a|Wg$FC~erhWzEj8<)%t1@BRBySF8+uVB- zHDlNjj1@JCD}ExXjHtz9La}NZr%E|~8C6PYY!Ow?QbBRp3fyzsCTEv|qMvQk^PgT6 zrN4X?3VF$Fo9c`fwoUB_pKVh})u`A^%h7sFM(YL{t$_+!Qx&xCM?tWeiSE%^Sq^n) zJ%SqW@)sJ3D&QX-V{QH#kEzX{P33LgfnV0H2Dv%B^KmH5y*Ai36pPd1 zEK)46<3P4!SY^*l88nSzS2nGKGY_>?OGS6l3Omv*mD{edxWcbs`46h3gLU+pLT(5H z|3gNlQ$L>d1lezb4XH;pWQgK~uBqO2BAlBZr7Sw1w2BQDEV3uF9OGE-y5EF!H74a? z&sb#W$hF{!j{ao`r5`T=mYLXk6K@jl*70rrchY8ddFy+mF@Kw_rzd*a^K2y+DY~TV zvWbc6+&w(eqkK;-O!n4M_yAUCeH-UvQ3Oqg=EqiN<%k}QC%Qde$dQ?)-ksq;{}t8H zQ~m_o$m{UrWpRJfR|#K%@`(n~ZB2Ppn|-BG++s}_qs7i&tdZ`by+1XQ?k)tX{)5Qw zGL~ZhR1HgXS(=xOeZ{os8TeSUXr8Ywtoqte7Z!c78Or;0I&jO?niI|xb)@t!H}hTg zSQJjgqA-%KRL;G|l+Z*da1SD(u{NEm8YQ26xu1P$M^Y~&Hsbw_4q^NGD39hUc|YGW z!X&AY5*twCb;3~>@mXeIO5133G$t91pfW-cKf$fBeTS<>f+H^A+&4d=oh z0fLl&UW1Sf>%PV@F_E@g83u9(?Obp_H|g;|fd1#{STWLn17%~N4U!MG7&R=5nG^R`LMj)zF2MfekR zPDIR+G1Ymno#&UVY<(=@&)k1x`k;2_d=!a%|oDS)n_>`Jj#@sv=y zkJG8(No+ezIBEY$h({UP7?0c;+vGfNCy-s2GJ0+sS!5W51_}9H;O(b04;2s$l;$Ci zev#$@NkWn4!9JS7m+MdQtGYki?B=bvGwQ{PxLhw-Y7nYHYk19`ElAQ7KBoXM{Z0cr943VfR|t%TY|m}q{M)dAx`!}^vDp|kYIG9MzAS~&Sgn$ z5|+HhzPvpSad5CP@TG5{#(1KupP_+TOYb!7U9Q$wb;3d05DZ9&G>!ldpCE?&ERQnm58I!6Ob67x87TC!5$(1EzA!An17b5 z#(X{sSW>Jjgr};`&~u}gH;l^&5(X^TS}4_WhFFG=8M^f^u;S_az)Hs%EA8`E45mAR znOVqBXj%JYzuHd&h`JVxEiZ!)QmSI~0CU$LM!X=!{($RD7H3AhuR@H>-fZM}zy4_v z_404>@SrJn0-A#JTdn(~Q*|3?)dv!>fnAA{YG@<6a?~xht9o-j1U>53B$b!*Fp%2) zT%=VR3TI-DsF9WfAZ45ottTn8tN}VKMSfCP$cLa-ybjdd@;#4$9ExszTu2H{`aD`&+#ukT;aKt zIesbX`UB?pu0Z3Doa39Ftw8hjA3Dbuc_Cit96teH`h)^z zz9Ub0XTG8AUEAjPNGf~DbNt486v|xG9Pdzne%?9$Oo6whx8TD|o8u$ZRo7qO9ABML zera=j5dipfqjSyi8A??bHOKeE*R9R*J-<}u_)hHV!sqy}*YG+1Xl=k8|H*#8Ilj~S zbIaGH%bhbASq)lM-vj>6#o(n_I;W-WFe#UNLwCABm7X}t7dEhT=-bcQ2ze3Lr{$un{K0gUCHN4Oy+er>SXk@?A+y#jj-+}K&73{d?06z3(&Fmf)#|)MYZbT8L3Yv(6p`Xe zGvl01q(LL4W_#u@?_`c~hEKzOBsWe$04_Lu9ta>Qu(V^EQZ=uY)#+_-teK7qY__E8 zW3m%Wj`=azX>@{Gcf(j$Z+O@AS|slvcg#+>43m&pyE4<+DaqX(7AUo^f`xI`NM#dw zB_JQvb?-hUy<@w_eYqvo5*KfaLHj~7Q$ptqBXVvGHM0b6we~|Wk5X%e7eQzg(+kG! zN#zKfeG&ikf@$L>mifr-){EQSKj7g@#K*vkdPkaXNid(OUMI~S}X(i-h0YS$yc z8qxC{3{U_#(?%ltbP%1vh^3FjTVtt38x7Daony78%26@g-tU;1(!tgV-V2jU7n+$8 zY5$d=Zi3cKmaTdNQ^tK|EVEC8q+pt*|A`5EoyR&myRi-#L~X z8WW@r@6oCT-(r35Se9NU++o#(P(GXtjcud}iKQpd%`9^J;9Al?%{*^nj3X8*5=%9) zOFD2vs77q>>}yJ~#p!IFV8cfKtQWe5$GHg_S;Xy`NFwsgV#dLBEJKwAz|UhHTr2(K z-_%fql0D7ZOoqS_2oo3pOF;q_27V`wIi9{rdKH;xXn&(_(nNNoAkonEP+T)Sd{h*U zmr|LI*Zn5b(Rh;4u+9R5Pc%NtHOy71@mUbCOLellH&EC}zi&4{S`|Aq~2P zCm6DY>m6M}$io|ji_rRKsKV52ZT4m4i{$nt?GZihQ zYD)cfP7Qh?JdV1dJrW4P(Da#TW#{XJ0n(KpQ76Eu$}KTEFD{@1rejyn6=zuooSTO~ z{N<13;dP}x9=_=Xwq5r;JZwRhJa~`&dHAyH|3n`C_JbBY+<$co5)u#Z|Glj|{NT?Q z%fp38N{>AQZ`G)OFt<=!z5RN@bHw=oQGu@GKp;rm8A&D zTu6~hS&B#vN)H@|XVNNiDbkEQosWXL*$^hV&_;A7(S+3vD@GaZ6~|bl7*;J@e##D&g+n1>A+Da@-*eG_r{! z4D!z>W4N$5PSQFBvIB%B;`ui1KwR)MIi|Cn=vnwO#O%UEES|z;q}e%Yjny@_iYB&| z_|WPawI9z)%&v(NJuAjD+^=K~H68wADv>hCFNA3V{fu88QHNzP6sNkKpi(7DwudT^ z#q>C3o;X(@hadOvV?Nue`gmsWK3+J#wLV5a@IJP_hCYTKgbqe9>^5kaj6u-BH{)Y< z2T$Q09FNDk^<3$iRp-i3R2C2RhwrRdfX< zE72sbuf?@hY$mNF9t)C8_rj88qGtOmsZ5cUK0u^6&YRF_Y*XlDpP>fW2>2L&EgWzn zg`M6B>5SZ|zX)C1n^LfxX-kA+H&kOENDgmgvzTN`)~4bDa)WIL&wE-uW)ehH(vXw1ycWVA@zsBr)?2 zTHkd|s-+o7_mVuY%SjXt@QT8r_*Nd)v=iC4)_nzD%z`JLT9k911G+LW%KZj zVq?&p)s{J2vmR()a9zqf&mP9cz~FPnzQ=;ntQ?Qk^K5XMUET(obxAuX z&HBE5VKjr;OZq22%Sw!x^@Bn)Sh4IJ3OHGyg#Kv3JmIH=j@6wU6{FE%DzMPKf$!T1|mS~d>Sh3(bz*`d9$?GU7a~eBiVjt5!MS5Ck ztRY{F$(d8>OvlkbIZOD7w9DXt<$(<|cr}x}3!{^8^pJ4{slrnHQL;;DCGlUI$tz;T z={?q(xmQpMARvSeF84~o2MH0b^)K^k{T8u?YyFr{YoyfYDf4*~BRrbFoGbqQy~6Ms zfM`kiu6UZ9z7GkI3j4VKf>tas!cupk#k4$Iim)eSa&Q^zTo<& zYR%&v3HO_LThy(cn8H{$H0ma=Qg6h(zXf=)#n}5+Fy1AW^w;Wnj8)LRD&=e|FFR zjt9YiNAqpMvotz{{1N!?sMibmQS`h%M97~D&4pcH;|9O@7rO|z<>ImJYC3$RAfL1x z5tE>!Je*>|xYLd1yHpf*KgyrEfCD+>=y@li9&?rQZALULeM{o1W5+6I$Ht0Kp}-BG zqIH6!xs!eaN+Sb>0eLr!8BSAVeT}a|jAwO)m!Tvr@=vGcvA6@A1fmr%$64#J9qx<8 zl=;V6i##*9ozzf28|7M}cOQr1!)>HLZsQ3z;{-?fvDsBKI8r_8hvT7KB~q=kDr-^Y z^SsJBR9Wj59rY81{G|X-)MF%^?x+v7O{Uu{q<0buZuDX91%q@VV809+J)rHKaY%N> zjYb=W?v&pCG#Z9C_4~k*!0t?5KTSOy-p-3qCn|je z5w58(K`~al4m_vE04+pgsahy9L{5+u(SksW(Hj4Z4W8&nI5xGoZC~Gun5y{^;n`~$ zvsDtaHQy`b3+&=PA^#K9C_M8Qb~|&?0!Q;KA^&GQb2L9_yVcSBuuyP0-nHy5;wFR3 z{DQB){tAJj;-%&I47}ul`y@1dy=p`xycrSus>aWS)Ww&7ZK`9jeDbUjTa z^CKJ`kwXsi$s!0VV}?T)*@;E6)<~Zx$%;eA5ZQT70Zf|%Vrh|FX@O34&?)p&%BTLv z%H9uWDY7?lN?9wi_ZgIFUG`?-?f)CH_c}E%{7JI+j)fN|d;f|}w5qXuA+q-}UgiIm z?9I!(AlbWk!JjI7f1b&(`Cpg4-(g3!s=xk3**gz4`DE{R^DkcZegPK}Jf{C^vUkHX zDjEfsy>ro=Hp|F#weooojJfAHhg*h%l_L`g%wC9(@Ipsny=@DAC#p(0tERR+{hY7%MF=>Ne{43rIQ6d#!Gtk$RtvEI>q5k(OB2SP=x=MW5JW1_q`l& zu*NWjoPMO?cvVX>zQlCsPIuC*j&NZpOA|<4i&blz93R+bQvipQG*XN7>j|s+qxfe? zbrTf(jR>bkx`r9DhTyL-`}PLB2ZbT3ou?yxQxC6=M(;QiVoyLQA@mmZv8-*A-eRO> z7C3pBy)~D8>0Y3;qd`%TsU1Pv&>(BfwY&{bG@rl6Ctm2Nbeu_qSuF!Hd!MFm+098O^KJt)j>zhJla2dLB!2-1+jWkG{rG1?qf3}B@V&mLtWdsCxX zstGpmTBN-6E9!zorDlDuQ3F3Mf7@GPbxK^>*xAP}@AV%ZUTLYCLtm^dwS}M74un3&vswgu+wOEcS*m(FER&kKE>^drSJg zcDIjyA0We&+;4rZ_3K7~-STei>jM|ijkf|;>)m(+iL6@Xrk*M^uJxg@Y@i<+h5R;> z;u3xW8K^6ls=)?!W!YV9d<#T$JGMb!Q0tQ2c6K|24e+1?)9A9E@%Dk#a|s`o?nU@6 z%nrLru_aoJNtgAk@4Ig?2ceIUFqEp*smv|fe!#5?#xo>&TACK%9#8bybRXx)UE_$C zHR>)Q(5Qh-GQQUYDAZ7<12UCDpZ=p|`aM97++4NN!Lg)Jv*2$(nSL`$v?kO0;~hxD z2MJ_)ciab+=|kpXVIx4MKl9;EFEa(m^y)iVpI@>}cL2_%%k+OTCb$@xKAW@8CCT)% z=|1-1!eG(|KEkz-=}S>uk?Fm00FlgbA3VnN2t}sddd5$)&+K@dn)V7OOxqcu#=iptqYauUtoLPrONbc(Ex>W!8C7Xhu3G%p}{+3x$a_VYqT=HP&%7!(2Ivt;3p~(-9prTWfaCjWHwVKVkyV1QRX# z98w}|2p&92e# z(%VQim$hrz9oi^N_ zM1?Z`2P%(ibhtl!@}a|}?SudEA~02$8+KZ#7>1bB+v(dirdBF&Phu5ZPlY^)ykWpC zWTPk!dOzS(eZa{92UP=V(-!3@0Wi*NY@?iurJ)6I!m;B7^mkHB!yn#fNx&Q00`*zR zsIs7arbUs~`s~-+>0O)qY;cf1oAx#-5<&XxCBRntEDi@4wV}^;`pD|*v!=INso+Ll z0qe6(dr*iNuJu04@&Uh~J_|B-wSMwoN}qGcgP69;1AmzPv(6z8g2M!F@ff1k#DQ3E zrl1UDwLWn^QSkL`UbZq`N1g>FQwR_RYf+>%wt5Zk9B;-IV@xVOb{>@H6$ipKY`9uz z#Soe4k;4kfUMM!%RIEt zz?4*F_EeaKRoktpRdc=*EBL+$7;O>NTjbybTHtZaK+KQDWlqHR`$?F^TM&vCD>Y(W zO<0YHHmrdN#=S*I?oUg52)_x(x*cX#9qrkm@d=k1*3`UV{f?tl$NlO$AmnI4k#^mS zO-NYKY)U{(|5rHjMvq{o-N&(A1z8S$$5v`vs>Ssf&LZm0kg$ro$cGTi(2{1TFv6~u zeYB&$u&2qh#e~CfQjgoQbcS#P8Ogh`_(V*J$#y#aW_u60z=j0iE$Vg7Q0!Epc|qL= ziAjLc*8MACJ80OnvVSGfe7^lFJ68L3?GBX3{*|<#c*S1`UbCyufmi%_@fsR{SBrCi z*CIl)4*iLklCrb3p5~kiB`w0XNr`#!7zz>e%K~10wutozHhC1TiCpa92Wuedt21Yr z_izrxx45lrP+OmsCJiLaq51?Ida(^9f`*!vuovy%qdH=7MV!4CiFRDkZu()X%~L(m z&!9w7qps*Icu5?q#SsFwKG-0__Mg$VtnS#maT>d*?2)?C5P7}7!koHoE>K0+VwW0~ z3L7bu_Rt|z<49(T*4CL0xw5z>oiV3wwEu+V?7d$I7rVZcTOLa-$z3kFe#|U zS_wRlV2??r^RZBOH+c7~M+`+ty zq-SXp8?|9MTjSLgVxbfVM`UMG+$t@b#u|#yZSeIy3niXTX?<`F55lRGN{TnY=%NTb z4~c+~0w4zcF_8q#;?2YizDN@aAPvehOe`roeK^nPDioe+&v=HC`DEcNmL-T%d=^2H z>A6CDHNsCG6{eJD3fFIXyuC2x%COVjaW=*E6?$RW=A=fHiqNCSkrQR{*~0D`&D?H3 z3wK?4c3F4OZfge=+&}klrde2o$ohz{Gx}-P!QBKlu^yDZdUB)3bl-m8c`VpXrDn|A z#>%rzhV;n*nu!@_LMaz;>KMc|+*#M7h@9@IhshV%!rpbqJ47aY2vw9qA2K}AA$WqW zYoaVM>HYb3%bFxlrZWc{hEBK7?u+P}8k*6tqX<2Sr(!j>B2tNk>1DJN5iwOz;`ajm zGU?gg=pL{>+ib)_qsmYn`tP76jAAYi@_I1{oVRq-;1CylNyoR8NuO_}QJb>@f2&Zi z3=fw{`Fa|BlmvsNzc<8XAP)|LmccQIib7O?p%Cst6~{p8%N&EU*txU>?D4ELjBR0| zS{D2d2{M29+U_w zXH4vcB4^&ei^-Y4(~lx&2B5_MWjS*f6p2ffGevJ88$vKSb7JKNN^f$pa^{Cm6ggvh z)lbg6oX0ullI6_)PZgfI06Fvb#y~mqWqJ!a^S9@N$r;<7YB@7!(YfW!kE6YE=Kf)% z)wYx~l_=7hoOuWD{N>Ecc%sOe-}+ptoOvF?zio2nD%7i%GtF;90tCvL&Ho~?aLID! z1MG+*UwxU>{S|*XbKjzK${Dr?5-JP}*%c$!uaj9r-nzujA2N#O7)%$=5j4Vo#C~qt zt}#J6{4_;@J}qzH#cpXB8tZfrQPQ&uH)44{%yeHZX|6iHLlsvULg@?gzTaKU0K?2c z6KG8(PKr zz=Dg$`D;YH1mJvZVF1n~&uOc8JN&7n(6R35h~*e zsJqC=hKM-_QKeS1t{dvRL(aZFrCu(N)MDRnnC3nNa~>}Y0NfcHT~IkGiet8ojagxwT8 zM)ABIUnvK7jE`aWlTMOl{V4*I=^Z7HqA%&VzOFXRnxt26XJsA@3H5SWZPp5}6@p%FDK1)$^VZNrHBK6hrPLDCP86EVFS-SrC) z*ci|4G;kjE6wS?d-$k2;zpbE+mu>3LM@#>#{(Sfu-k(?F*Vmu@kyz@_>d(}dcz^0k zEMOnjpGT9=+n)vVE~!5Uq+DEo_5>@d`t$Dj=jhKa<*Yx+FV4kEF}fRr@xzb3qLA!$ zeiWMpa!JA+#NmfCyQ3J1LniddET15~n9Zb!Q2KOS9VA&5W%c%mWk zGAZ5!5>S?We{*@I2-QcDZ^b;qRq zz>_YhW%hx`FJAsZs0PZvY=&{GGJDd$y~J&SbMy~AWWw@!CI>5}!EwIk;&F~|iE~N| zoCEh(pYVz870lKbBcA?98RAI4io}n!NdU^m!`b?i`WTH4`6P!xe9<;G>g z*hkl@kYlMHbLFR;DUHOM-eYs1um0E%$@PxM6J zL*+@7mp?~&zl^0wAWEq{E6HGcH<~3EJ3%4pG*j&!@b`TR|GG8Wh#p55SxWc=w&i*Kw=U+|eM>{i( zM}*RdFL0fSV`||H#4))(w+PP7t;E)kY+-{j7XfVTGM!ep8>f^T-MBjTi59idyvj`9 zN~stssR;=o(F)|$$T`SeBqU}qJ?;W~9idDb($!CeVq8_hp@M_I!w$IDW0v)nH^OTj zZUQeF{ zz@bK)@Y`X`K-6GlkwYcc6J3(Rmd>Nd7mR^t|60y1y-ChBjifhx5g2~ni><@L>Of|w zi>xE5kye2fk2iOBn}jiE$;*kIX%A?HQUpkTE~UMOOb^a5@@BJ|PTGHHwKc)o($;!R z7g7&|1L9_#L+=&RLSl`5@9Yjg*rAo(=r zgeKE&kL@9tIH^sPbO)KEkc5les-Y(50wmoTG|%0Y4eouWgj%?~q+$OiSx+e^up%OR zQ9HtAs>cKRt|PQ=)9zEI)KfS#%oTn!bYUqcADl(sppp+wsS8+sAC(8!TNTUildu55 zF&9)z+diVY7{g!&dWiBK+2W>xYbc`_bY5ydSur4i&Qz(ZQ8^`kPX1{fuQ}#X2*R9hV0NqqXN)sp4-`FMpz{nsO|8wje)B7b{JbSSNZ< z?rq+@fSd;e3-PB5<6>Bk$L7t)X^NEEtXaQ-TBBPXVmF(_DB2320xxi~Ma20G<+ey% zPY|^@=3`I6o<;32xog~=`R-8Y6;Z>wA*pz3gALQ#m=4f3u+?2xm>rq7AW}o%I$jvK zbwhpNMlo>x0d8)j$#JvBj{m6|TSs?0`n8AYhBPu+s4If4N2%l}aW~0CJ*|TUkt6U{ zHvoOC+K`L;OH1m;ISbLa7-HYl281+IPCK(J9N{HYpn}F@2(3%H(k38#Up9u-I9Irl zLdKn-DN@zj3;+A^&NOnx;Bc2AuUjV^T63GyBUo^Y4eL4 za5@0DKmC#)tdxf$i`j?y^2%&_ptF#VNc#t=~w#C zX^mAq67v`g{9tZA9%#Huri358;}w%LCbQ$Ff@8MmqVD98c;PRV9yaQ*NBoT44V?-) zHbrBRw}GAffD-|rMB}MEJu_Bp!HX1N1)+l>XaKGaCb8bu&MIcbxWn;3*5s%GzZ^tG z`nJ6TY^e zFgcAdM~2-zyt^iE(d6*#aEtgjcu)n{9QHLkMYURb|FjJ9ujd09Z*pCk_F4~soC1(0 z@h%e$x2aOBWg>BID? zu(<^z$sRfzB0GEwh-H# z+fK8aTA|rl)=NH`{XB@#Oq5ZYC7BsYOalv`+4v2NW_d9R%{IW0Y6H!(^Eu6~r#fVs zeg7-2)ik>eg+Q}vJSRSzdz{m3Hhvk+KBNyA%~n!Lam4HN;CwVQQES`GXS(EEByu6YMS*yA<%3& zo)gV({)yA-F?5%V?G)qclr8 z^dzAajAlnZVKj^BsnBe4R-0%h0OC@}vx7gQl`_qqr)xFMeq79GwgAtGW*v`lnuXz) z(d=IOfYD6H5FBwUJvblD>WBf_OtYUNgY((FjE#IWn>>)wOpsBUCA~+;2c_9Z>ln@c z(?g+Izen3dvjcgYW^a%@muWVIuGKVKjY8nFoAI1zw$IIJR)b$gvjOx0qgf}0;D~5? za6X#7OFY?Tn!VBr&8}md?W0-0ct*3mBx`}vENMO=ACzXfYZ=W-x+^sM>ESlfY(*}o zSuWKf(=3Uu)iiq&g+Q|_@SJG&#*dt4f5$JQS*VO)hP0nbiX%>tq&pwY<`GY}nP#I~ zq1h?cOFo+YG=R};6=A?=W@IP@8=GU-Fq$pwrqFENLv5nj+(n#b6R8fFX6@-(O|x+* z1ezU({34n?TF+^AKYkg_z97NI`0Pz8DUR4e56(w31GTozGz)EoW?LB>`DnK8YDP1M zjM6NrD?=$5%`PitG&6NoX!aB=AldFE4K3E>iugni?UnL3hLE9e)=ImMLq>?>W2G(p zB3}BGUnEK&(S<8w<#pXb%JyWHbzX-hD-^Gho}Wg)%+i53nYNyAn?|X}q4TRJM#|*C zrmKO)%D_gq0LE-}1=h_Y{a|UO%Q=QIQdfQvD@AhXX9lZKohn0@a1ns2Kdv_h!e58& zsc85rHMAHR+AA%f@mMab9o141Y~zUc+UjD&*q6~6NpP&?$5k;1?FrqPZ%XCzptigO`g8p^FhzJ#Utg*AkXVY6Wo%_V;VKa1fK+EB~5zx6gOy|$G$++X6~hFpr^aRzHc z`U$jw_~OrML#Ok!VaLE$+VI9I|2DWOq9%SvQo^JB+>i)T|WMS`+Ht$FO0%1Qsp9r<|oaPhd^y2xp}M z(aSVOVM@-v98M>U%&=Db>VxBQJ1I0^4PnBM7@z^e;!;>})P=Y20Srues03}_!1z|W zNYhIDvdA0Z?6`H5LE~$m*o(LC6ZSF~FYf;74{6^@q73!la$LB^O_iLJTeNSEy8q1A zw9>xV_k#Cd6>lHkrot8j9QVbd#ji54hDCU|F3_X%kKtV7jIqeMMJDBS<5nD1sD@GY@Say$p&8Pr_J$B65_3I#Qj*Nj!je zChXE_LKQ{u%YMotevon|KO6G_9a++VH)&VfGcEEgXvW%|XDdP^XzrviM{P%3z+to% z;XfL<^DJ@6a*CIQw7Y->eNgZX!hy1A`pyGDoTh_iT$3ld{tDVaOrXN*f1#RUg?tx& zX?;W}D8m(BBN6i7Vb|Ve7h0L1WtYdp$h_nz` zmt%C_Nq(@5<-yKb0o#*UeGl;Z@FWBQrYsNv zJ26!Jg#s-Txa~3ulAY3a4?lh>s z)n>8QDB{S32I=@0NLSCc#1LLsUezRzinLp0B4fMCIf)E^D;7K`s-`2F%HjBv+E9oE z#1@44rWdxZCfFkik&Lo^+F-kY3!nugcT0!L&tm-nd3dU^tR;;HeuP(^aC)bz|_|1=-QkxOpf(4)^PB^KTj4++`3WTwyg^*=y zxqc0tmgK~*L_|!LV`e#YWozwLEaGWjP>3!zNe4bV>q**{Uyi)Lg0YG|M()}wTTe$$ zxyG*5r=D5ZF(oHsVLNsJLYQM)C<0OCwB0)<&@e{Ed8)^;IpdsrKi0r@(4t=vVT82` zru||hM`&FN=ORh@2@Apr!SzkZt4y(ma86Hp$s`u!Q3bFSGN9Sm;)Y`D**qNetuwe5 zfgz`3Q7gSr9b)#-Wt3Ceo`n?xmo-o7in)t2zW~4lcUSgk$WOjUw3Kj-_j9c$dN4l6 z{DLqe8@2^$^b}Q~@kIB;V?)td+Ch`7D`dOz?G2v@47KzoU7@{>&i`YJ+1Qbffr4#1 z-}OWwztax!pB|$xv};_Weij>m2by3+6LdN`Le3BU_wW(4Ct%(&47M(!ot(xz!g8=0 z%OxlkbZ5&W?1eRt7ICq85&}9RcPNw?SM)>lgWxz%^erfZB?K5~I&4!47aSj>9Yu!T z^Kf!?Z#v}pCaj~-A|Feh2ihUF|bmj4tAu^k5 zU%_J3>MBfaT;N`=FG3hkjr8lMGT+rmGuel>-4=>Uu!u7#NCWds-oo&CvGyL=QR>M* zz?O26IPEkeIcarR`6rZ(`8c81Kr^ej)9lEBeHd;Qtw=XNQ>)pEtHnFuR*p5c{Va66JTE0za5TeYF}fZ_T>Qgp zaOyfbyCl<@UTnak8xBP<5#es!O_No6G0DaPti!W@)w{Ao3`N;E;l9y6o_4UoX2dGb zIYl_4DP<9E0$vOZ7nWn#WXWR~3`LE?>g*`-3;mjo=yn`#F8vjLcETpZbw`k3&x5Ui7nv#i|og=k4bdQedgB=eo!%)~M za;pKsyUdzkkuiE#RtN>ZZQ=drC)UtVVqGHS z$C1hq!D=yJarjQk3y%;{f4XQE%>_UVn`9K33L#$()BwS{U*6TQoA{**u{zsTN zJB>xB*zl|;J&t;9&JAYQBoK6y3CEmhHJUlS5Qho*Ivo*n2;M5EJ+*y>CE8BJQPoo7 zXkupw0RzHVaI^&^fp7f8c%qBDcGDE?_fl!_F0LWaflK)Zg#5E;UGkVnq2MSkc!vx5 zpRsGD(}n!k`90Li`j>D?H6ic`sHU_D)tMLtgld72P_+UXYdKMP&UI$jt!Sy&StPgA zjFuugN@?jJd@h;Uw~DNzgX2y0H)4L4MW4(A<9G7bokI6hnGAYu;-{cvQU2ZQ`e~By zj zjA(1j+*m%MjTq5eypq?bp&?y(XJm-G3mBed@ZTvt`yY&CFu7+n3H{ILGHVBGUOu*5 zc!*^gYeUY}N1(kyb?<)&D!f^cl`<5Q?~W4kCGZ?mXMqa>cnV0Y8;Y7aL*9uSW9r$Q zZ}V~ylQs5&X*QtMx@oF{B%IpOM?uWQ(!+4xbJ@7xlt7E>j?*3H&V+RQbr6$|5PmWl zuWFr)OftGDh)<9BBHFV(`g?4}^g!RMkv{rZB{2F`b85yAH8B>2)#Yd|BZpwApfOs1 z7<45Pj5j8n)FXDC2h=E7AXJsab6{s?R)$9=YTRA*A0)Eg#Q7~drHbz`og%hj3s;UFqdG@B)8aB$|a$`x!G#l9}OV zJ~beRz@C=zeyc;V0bQ9IdI2(lA#naPCL?&^_(*pIyDAzJl^ka8RP?30gHnFT0eD)& zZDSojoMvJJ0`gY$Y`LF+w2HbW3dr+{jnnO@fmM>A2Uj^}){^49UqGw38p}0~AI`7_ zia3VH=e@QTpO^ga0IKwDY0>S%lhf%j6Zrvx@G{h0KLT(4yIALm{-h)8;z;nuIlCA|m-3=o%q)L! z7ykv2l`gxeF4j^PAHRSuj$^c_k_O!zw2Mz(To-=^HB5i6QmrP-*=;8BFy>6zk+zFrT-RZ3F#z4~VTo zvBkS|c|;N%Ic0CpBRWIbDAL)+JANorSg`H*?Epg3mJvb8eDLDPoJ%0*0A&6F7S$)@ zr~l&d@b*u{m4Ex;H2ETuQM^5`&N#187ZYh;AWOhWTVRDBfGPD5P4KszYqApe@_1xF zC)Ioa_cCpm$=O$#CyT~og~(V8TCQOmU5kf9S)yo1=Ig}aYq~IasBq6dfa%{LELnnE z8L#!5Niy4KTpU*4w{JUE6pyIJ6GnYWVGPdD^x~dg%uo7-Hcdhg(!9zPW-T$Le#wtF zVWNGiOuCUO(T-qc{RD#;=?+7>4P(JJistr{?y0~NOtl8mz1T}drf#&9?!&{7Oe^e5 z8d!1f)4*a$q+i@bGc$)kwjK^MhaKaOC|R{YRyJ#mvRO;w8@?qR%zd5-fdVXPLO44d zY>Y)|UH#DpOz*IT3x34~w9*C!+LT%?JXL_gpj{nssza-q%m`VAJ%tQS2-!2%$+sI# zVK_v6ziouviW;~r(cAr~aUI389<;S5U8lZx7W$~MiRvJTZlaX;t|dUB;9g+Fu)$$~ zi7?7$;a>m2V2ijZX%FcWuisSZsh^04(nO%TL$c!kQfUnPuV?>L+5che|Ml$uK>Xh! z^=H>tvj3OS6BbAA%}0i)Z6%7_ySS<^lIZ9>m#IXWHj~B43SCE;c(C`_sXR&+Pi7%V z);TImIz|iQVgq~v7Hnq0Uo8IM@m`Qf%OZK8tVPU9X5q@7N@H@`P4<)U4Kfpph;>H| zeO?PqP{=3OH~H;B#VTmj`l5Ct3&U?P(}tkqA@&B7bD|ap$nYhWU3-v?fAh*_N(-c=Fsdb z9L*uwJsnNq*hk@hcc6tRMn20&8)<8}fxi9YSiKJ7)H_MlG% z_Gyp8u-!O^(Hyo%40Vpu>GF@+IUdM1rc$qAVbmz0=WJIQoUcnd>rOX`R~i^r2kZ(~n?Vg=HCV>#@Rn3fSfw-K8~ie?dMH?3!LYhA9QPD= zU$~ddKm@_SUA{}|hdT6)m9awpcH%1W%EQ}Ji5PYYhW6GqmDjZm?}!5P<+>hI>MFqt zMuAl*2q49{UkhbQBV9*wMQ*;9H^1{&S5osM-B#FpZj-v6hH0!#_sI2hmFtO8>M<$x zjN$bpTdYmtLjH10r$DC{im?vv2OVBrUmmZoc^hxn>zg?ZU&b$^VI5wu zcI`t!0IJ13Z`b6MmhBoYw+p?v#Yf?CNDh4Z8i7)gG=f+Clw9=yx#~Vj)ekFG-^r^^ z_f~x%xnhFTsT6QgNm)FKts?pIJ7%~6};MQzKCKGZPO2FpXO9j_fL?IAwYu98t( z+XA)vnJ@^|-E8vZBAgba{yCYopz&_SaO25Tf<5+~>k%*Yv- zXb@3sRnkTxR;vgzg32X0iDq&fwO8$1U$wTr+J0Iut$?=G1SAO;5%2;?m8fk!aj+t- z0i-(LZ|yTPnZ$T$-?#7c|3A;C50i8D+1It#UVH7e)?O>4=Toi9caSXeG%s0seX8>3 zCBKlw`>e_z=Uu?EYe3H*dPpr)r`G%tU{@=2qQKvnben3gA1}7gQiGYFZ0|t3g|d73 zs|Is%s=cqP_9ji`{h8TC%h6$uXFhnatb1H0O#M=#q;C`W7Gd~*|A z#JZC>RbZMh5OqKJg+kpuLXZlu0josShn{2Um2yqf)8@a9TcIw(DJ&P;R+ugk6}CMsrxG7}w{dt3@>puWOU1h% zT+K$r7U)6NhmJ@TUw5cbv}bZ3q-3iAs3%^OD88gW^$fM%dxRX0PnSmRcLrIQR2YvC zDuImX$7A`BJk5!(ZQ4Qs zGL|_5<)5^TY&y6+bhaflZeG9a6kU4`CckUpiF)|~dSLnVmR^jd7ldueYN|p@eEtqq zF#Mv#C9UFkQKs&dBK(OGF}BP9xJJKP{dY@0xEL*JP8qtdD!fRf45IA(=wP7@L1ZaY z$|p+|T5o}ebNzO{`mqqBU_A(Tw|RMik~G|D$q*lrVJFszyVv@DDVBDNA?ZU&lbVqx z#plytEJXy^A(k%wmqY! zG&G^6Jak;m4WVH*i$mk%m4TQ)OK_0uoaZ`y?u~)N*Xudm@zI=`A4ayBQ`;5S0y!Hv zm$owrIeyK*240^>`+{EujYVaU`DG)5?hkLs4VHfx&w)=j=9H{>N4%ea;S(ZVQ7E%{PGoad?6S6kYT$#!&7zl)=MQUOx8siSC)fZ#nU6pEQ@9wJd5`j0R>0IGS%l) zb>pZ`&v{cX|1?>hf>vs6PUt20GF!n8Tq9_=2_b2_uyh=jNM`THbc3~LExVFLaeZH* zt!;~Z+RP{EN`I^6yF;h=n51#4X>V$p9+HgZZ{i16W=M*t0jb6Z^gq>ij`wtDK>xob zbtL=W>z2-zqt5{v!F{yjJ_Lc59DlHpE+M5(oTu3-l}lxi+UY^EXgbb+h*|mHV<)83gIhi`v*kj*_P3xAJdMSpQtc=puyA^9v96yq%O#xkTJIQa2C zCloLk4Zq}TolCh{k7rhN_ZL>wLrJs3s_0>=c$_LIk#u}F-s;QtWEJ?j5H0cmlDufC z`Qg{BtMyqP>w5pY)IpJpN>n$>R2`#aEF`S?8Xgc(vS8%oJs?`>MFEkg{hBI*(MFid z8%lhwC#u^`miMGR<+6CwPLYM1$ut@<@8QPgUFP@I@9paMR`uJYes5C0A%4~U;hC7~ zRn!_=X&jjkB%_w)i+x@cUZ)oO2oWS~G*3R3sKMQp?J8(^WJ7|#I^I=Ys1V=mnSRY( z!u1UHEpJ@#97_N#`wK3~-{vi`e8ju-$hUE5Kx>h2bH`fvr3*`En}2-o`ONH=PfEF5 z?(M&-;49U^NwVcOUYTUvnoFC2M8MdoJcaF(=m!T#(6MNhy+DjhE!S+yfa^lx;8=-m z&C29dv3Bf+b>{0k<P=UVgDtxDp^= zHWgkdhBZ%QX^+6!-`!Moa(D`#(nYm4|Gw5NOAT|?&<+ewdTv+eck=$ zf~}AwdE-r&q0C@pu3i9I1^04a!@`GiKg8*-d z8=b@gEm1Ch4&dSr_X$|y)L9nT%26GlO`RsV|NenGNYrjIn|D3OIpP2S;SE*!#=DE`x53;%x-i}^tg`x)_b;|SvjCK@@I?|lwv<5t3l zdoBrM?&y6<3F`dyXsR6pLvtTVPT7{e3C}Y)SSiw_&DsB2EaqVY`}WVoVm7QMdvG7O zC2mA|XIhFPiC(^3e!fX~^Uy`|G#}Bo)^cWl&wG;LNnxFafq?ZASQSFXxhQG+UaM+l zx$fn-%rS%`&foVGGI0N1YYAE*7{?5R5%L3D?{;Vb0Qo5E-x`a#(dy0rdMxIPICW>> z(!Vhl^PVjdl&W_Un-1W-$ab8doi%Sm1gn%?s7kO{9x|p_G^vU$C@uHCEg2+?GcK(p zjI$~X$0mhgM>E4XZ!#CFlD)r{GRd)IL~>>4( z-&NyK)G6MeRQLZp+#^&nP+y-3cXiq4NMUkrz9X%u--9F*B)=o6@qRA$j5CVh|vCJ!m`mh*B9I6hL}z{G0#c;BOtW;S|#K4}MuJJ@^kE95DDE^{TbV zMeBcU@Y!G3ha}=F8;a(w;cGxLqVhaT=8Lx!tPE`#Ww`_YGL30M7sV5AkU`Wbmt z;i^GppFtQyICv4=er~Ml2REpgnM1^?ZdG5BaZUeKJl*xDp>X80Q}r^Eha_V9el}pL zPFJu09X!2w$Ub})PfsD=|0tfm`Oa4x{A+FL!B2f)z~HN_R~3J?3|##e7tE|L>_`Tc zb_zy?zo(?R5Z(9<>V2Xj(<&JEVDg$7jC+$gtJ@;3@#T~o5RCgXlr9kgIIA4SJ{xECCgQB#%om0sbk&h4Uj9~6-=mv7mbeU+G<>d<|o#987t?IVzw;dxrifAIHTyb##glUf&gCJpz`#6p=hVnU-q|8o80D%bTdeX-dghnhiRpKA>iUYkJg{5! z@)VB7X1@3d6V=_2;X_pqPwnra+<^t3ZTgpnd==au6!+JuuDEVts)3rhw*Cw7@!uck z^Y3q_QE|q`p}E$rWcfT)e420nWGu_~)(Se_ZlUA0N_@h8g{YJR<&=m^ zJ}akuXVL&UWu{ycw(+z1e={h5I;H`BW3DNchz30%xai}OQnqI=NJ-gJ(V_hJBk>^w z&BGFV4nf=U46)DMnPQ()-mp#{cbc*FNpdnsQCvU{w8UZnFi=ta_dm)9i7B?9OP3#i zJdR^&@w@Uzt!23PZRGGzOrSrlUgQjo5ek(O&>>~Zs>%vGysNUFV~?ZEn>tdwh28<8 zHEm@PZkf4JMAfzX&5y;lDOQ^;dTUMH-rcVw-n1W-s$MdZib!PeL&mpp{UixnM zEVhvkR4Je^hN|9GeYUJjYqz)g_qS$wT5rsX7y8<2_fuS%N18Vgv#jm1{WSkP|Kwt_ zH2t`F!7I;$$Nu{*mjV7eTQN02(n#z>&g{Nc_RTi`A|#=f@FgRvA@_=EA2yfoR-(~= zGGxw)=5H9k6)i!9v-`*4KrF|f!&0U3G9F}b6 z>q!DtZ$8l}1S+*xYU~G)Qo43Z2odfr;0>o>CA$}Q(8p}oEEoR5f9lX00OmPILG+L8Q!3WD*rqaOut@E?qGs zE}?|w-Wtesn>q0f3z=A&gH&S43ynkS3QjQ_3sTZ*6;bo?LU04+QS!#IpvnN{(KoSq zvTTNe91<$^JD>S+S$KyW`;p=5jRJZp%0WV72_o=!A&nVCIg)P-y=VXU|_7B|xMqP<7qg`ZwjfuHroEf^=>@`&aeoAe-p^2)?>?*PY` z{cP{*Sv>p%Uu@-TwjKyJAmQe6_M3VRru#+P&G$iNsQyvj*m(&pu-W*Khb%2{(EaJM zHH18lI|$6;HGG6{p)VfGr8Rx26Sbr)0o5PnGv}Ld^9xlh3c8$Ie6QPP?5o`7HFin} z0h%~fLi4rKmq2u;$-f@{!TkTQw23r-bov&eu94Jjyp||l^lG6kezIA`7o(eWw31R1 z8*PxdOm1mddP{}V+<$sm_G;z&*aB1C9Q3Ap%H$UPIFnn($VwNNO!^a5EG*RT(PIT? z|Ba12r`@o3aCN4g!IWjdl^6p8&I*Qc(NEp@jF2H1`(zNDQFgsT--^w9Q30yH(JATj zE8DC-03+@LQzOpthk#1~75?jRnImnVY`Riye+gWwl6|UAp$~9@TnCNUgT_|Ta$OWG z-!?^CWj~sq{G%HqrkB_Phc`w#T#b5$TKDiKOtUDGf&k!-(hZEj}aOAo%s#}y4Dvy$yn>g zPUTg09WB@uY-l%EpCZT}p5{IjIybUD5j!`_eTeI|@oKON+0siKNy?BfJ*#XeWFd=A z`et-w6gtd2?@gPn%XS1vv>Ny?=R{^^r&s7~0dc*U*{Nk}`OLR?VPd#fV8c!CeuqlR zCO(#E45g!97MtlZZ^Q6|;Z*?JiqKK~o|?KQmtVPy*NL&|Iht>08b)$%k^`BuKMqEP z1sWZ|lFUF)Cfk_wB zUUWvI`-t#ZSd?s7(D3_}>&bs4U^^VJSui_i^!mtKpJIXbXQLxNQ6L8ZML0*-Tnd8b zjk!t46}>Surl+ zH1NF`%rM@)T|zJBJ0u>#4Gu{=D&XF~NDId7XK;mG?k)9>6_9)yze%hXD!7xZ73!ejjarUdQ&qEYIg zAc9qM>li6@-Rz+>422u)7K>cSZtG`U{Rh(eej@(CNYPLKM_g2rRQ zXA%3N0UM0H(OJw`twXK`I+b-rxB1FmncE%l;gLfL?e-T~g?hu&_fQ6#Nb;~BzGyz7 z^6VuKm&$H`fIKLv9CAJBmt=ImsWpqUmdK}B+MRch5IK~!e7X^PfJYc5tOx$MsSq-u zH8-k~%c^l=kiB3$yy_92s-;JSj`dV6&SINw8+Ddr!SJ*6EbZ3Qr5}W<_f%Dd-%`FV zd&{M8-?Fn*VKL9J3cFNcJnz)n(xvyyaV1&0N3Gvp*~_giF=2wjLd%9r4|#DVioF{- z4m9*gFWbq=R0mdbYft{u^c)zW88AW{^wI0}<2QuP(^njnXJJWxF(G1bHS zH&{TV3Y)?-7NIqwTHOCAgi`}b6o<(PGb3XWhqNLc#o9GCjS+0sM{m=Q-x|6|?&Qk| zPSs>W+p`vSyN{wT!xS^G34IzID z(3@ptFphQBok5`k*hjCIafDpPEEH}m;aUe=g371}g}Jd0n!lI2RJg=qJvM#sifRE> zc)0li7kI5N2}BaH^HX1P%~$zibjF9T21_JMI~AAdl`oo32(2EQ3jys93OE$qkQG$H zDq&wR5XXKfYh+Y%jg)+#)`;HV6GDX5R!jS`k?OYEOXffRnkB2@ScWuO7%ILp@O=EVTkAI?(R@gW&2)Td$OSBhg^R6>qIaSp6!XO_HqX3) zb4C0p^Xj?nFleTJOtw^MpV%JHGY@eS?Fo$1C@N*Ro+$PP-0}U9RbQ&EhsR55SPC6x zjws8PmptSHmv{3FBvR(mvNQyW%)g(gATS(w zJxzN2y|%PjV$zPWY0{$1;ByjqU_F=N+Fd@vbETXF(as=0*~v zEnV|rjVgAh%8pdw&+j1l`u-iG+xPECbSpGT)oJXMN;aBNYi`6k&MZF2LZs7(1EdaQ zL5a{X^POV|reg*K@SjI(K>SOp2pP_<4C*6>gr8b0ikXz7-isz-!B`ms7X(y9PFYrQ0i3ke!EYbfgI{J*%Y$Ca^ z$j7GSFw3lA?m0>g(;){Iqg##h2Q+VD7_E9=M(=NuaWT%a zuQj&c@??$ex#Ux-yE3+wq+#BS5eg!fSi$xq=<#`+=jkygcD0$xQQgBDAU^O~nYrH` zkiLjjvZY8$6wi=!CTF5>5ZsUAjt9pzG6aoonMTeP$g?;v$qSo;sy0!4oT^T)rKRL9 zo|(zGQPSGq)<|o=k=81)+;6w81sR*UCnR5Jue!fIwp1<+^|!~>DZKFxZ0{+GCAuPs z>?KdC7B3gGZ?(78;`9!dMCAAo{-k#g1p&cbzfpqX%o}+JJJ|K!J{vL8wuTP(qEM}E zsI%|i5zN`j5ifZB)Nn{9Bxc;^!c)Kv=FYZ_zOc6%;^qR(#-mA_Wl8f zPN{Vf%Ux6qW#;%D&BE|0G~(G3dSOn+!BhI^PEX~(jP)1UgB5;JX%LRcQCqny$c&T( z%eT~OlV6@2G{&5OxX)JWetF-*BOARd-nQ+njs4UHH|p)oQOV&Cf(E5o^{lcNock0k zY>d#C$p~(AywQq!tpbNt<%#DTs{tH zj~~!;2vM;Zs1nd}qf|U!P~a#o{YY!|suNhQ6yGbeye+=nYLta1Av~FBDZ+?Cr8EU) zNsX&cwIyfW9kJ&f=}j&`^8tGxgY*iT_ht7kHfOsdPNG2%t-r@1Pd+e zEfLBlbDNe$xD;?)fCbhPR^i9gCGJzY1zE;YW7`h2J|54itjMJAwz11;E$jHym3tX4 zLITWrWWt{7d@}+4F`t#6t^BZc-|-Wiy2J`D=8w7ZSj9$+H*>A*F20{(eV^JrK1l>$mhkrOlu_O%z< zyos%e+!atb1tW{+R{KygR;LauWD9yGPx}8u_B0irQQ)E^vYxhsMy{9gaMLpr-O=3B zg<3jcmlZIoB9j`T^fT-;OBsy09cIQnn;u3^m`*y+0=A9j@91OYHc#72=Brk3^9J>Y zUd%~$LbEzy?a2yvlS?Iuy&mEIanJD~Y>QT1{0k`T^1RCS-o1<6c5XgQg3urbCD%aHm49L~$bxbFVHplE?{r(rr%2Xfwq9-`wp^tJA|{ zv$L3kig-~fZ=(44bl>B{R5+6gmMV*WF;kd~quYKBEICwZ=y8ioMr{=3e7n z@!{0D*M@z@He+w)dR#;MM|NuudROeb>e{)1D0g&6ZlGqn&)6xXfeY68VFYFc?Ulsy zK4I@U32jpQuq<1sY*PKOY+GpDr1|pa=-ej`{)6dsEh^Qq+LQmmeC_8Q3yXY4?vuA8 z*p75(`J%c1#bZ2=wEyH`wIH&4?~)TM*J}^bv~fsUPBp7N`_Ax%BPo|nxof2gQi>MN z@5&udUu5-kwoS}g zSZ!#y_Ig)uL4aUxVb_({MDeH3%BKIHCfW4Zk9P18R*}s=QM^aKK=Er*n|`cEeN~zI zH-0=e#Z37itcKJn4=&+5f1|2y>6VW$2X%V1MVgV0s6_8-kyu$gRZFY%vs$`kSS47K z^{mvoVkjPeFOz#Xq}% z<%q+bwCpjSH-wx_#(dg0}m&vt$Ik9d3~%&B+uxb#Y%EB#KrvO|A{j_@C~AJ0o=e^VT*I$&qVN*BOJUEdF0 z=MIxsNP+~@EVu*`&S~K!T4QXnf&lNmdr%eo9Cq{VAG{$C*_0EWHkMoX zV|Nl~6&WJ-Y2GhRWKffA{E<6fIf7`z62)~gdy%yS6y3d`*P=;kBT#fKRd(0URoPeg zlUcUtbIJ-AC;ugB8KJh50I%1|a#xKMKJay|tl$so>7X{=-%k4TylLZWxA5Tw_2}>6 zbuTC5(Ad6gX9xy$xE|?+J7T71SBODmqWJqVKgdoo9x+)(7#Fa>a+wO5F#e%6+!ZS9 z%W;HNr1ZQle~-=clPsU%-+>0Y$C&j3zI)NftwItA$5Ri-!+o%uIdl>+SbYm4eV@O7qn`_Y1`+@O?bsUDEy5ItZ8d00TUxcETuFfsEjUL0Cz@jD8* z#wGbmeNQ(}Ol&kKtD5qEN;UPUgj@B7bDet58uw!RvNzm|9m{tNVjt90rPmW14aZ}A zC?kA_11WoGnD> zc)-3#&dp}g$x>**R;Fkr(7&d%L|MorHOpROaXucs0(d@?%l*QSnzzzOEj&89xabjV z&Y=JUP7tcM=y^Rh=B_}_9EbaA`?5c~uXZf&2^g9>lPOx+{9#rsw+% zC(_8!k%3rUzTS`>aIXoCOu%WbDe}74FLP9~9)sbFaDu+2Z zYtfPeQcH6%N5ZEo9A^1nD2z25XQs`MIx|}FxhiphZ%HP4{f22A@)?c!<}aB{lqLR_ zKWWYH16!PlIuK0-8!mGCjCSHB`(ocnOpoRN6sK&_bKN1QeOaFTaV&FqjhFq1z1{@* zN5N3(F?&-WR&z@r=OFnDjhAI6{30MvgfwHSy*g{zamG|fwb#Dg=B=RmwDkIf>^aS(Q6Gavrb>B z3%se~45T^b-WxPs^d;&dr~I7n1a6kbMVU!)4fAVvtG(2t_RKnK&wN7m0V8)pITWsv zb6Cp*>{LPHM-EAk<^C}b65u2O-+Z*9sp#w2D0^I5VZh02g;wZw@$TVWKG*T?;k};s zI?dUt`djF&Cy7PcBwZxOe627lU-ak-Nui-QvakS)m9f^b`>9=)=X$-NWv|*;l>ocN z+GKsDi?x+4NzBiEp?QuFclYes3rCu#$)lmqX3-;1nC>u-mxSnS zkToql&7jl9K{HzwUOYQ|y1AcioT&G+g@ArdH@*Rd|Cs1*@Sf0`BjWFyuSo_~nXFz# zNz4U5l1Wp0%PLhKGNiT?EA8i2nn*Lm*dZ znT-%Y58^#X(%vRo2XXH;&ra24TvlbCnykPqlLzDCDujB%j}xX&q%%2sePuf*!YToH zg_;(o#HAzfYdBsCsFnR0;}_YS(*O0#8!o;mAao7W07%rnzx~3pOd+Fotl*CzX3*Fs zzA|sPkYCpgU)RgGE-aWHv!gQV)^7PD+-qRP0m-Y~s`1j7d;1EGW?J(FupaRTG-vi? z)=&0ctuSk{Rv66MD?Ceo`@C^WZ`iRb6H|=aSJ<9tvjuY2C*DfSBiCxHMl?npba8~v zAKrZ0%E{Rz`C2{MYqgalS{-Zurd^kfxZAe2@vfket*x5oAk(xF!Kkf~{ma*?k63Gr zkkZH63{~E)irdLA@2e*B-sp>Z>}yl+Qhr!6k@CZ^Ny#>>YPlU|vue#xwzqN`w}5S} zx}(4SWYcSrbq--Ed^@8dCb<&o_9E zfGW>C6*~159cnVidz(nV3p!ZHBnAtg2qe~%`2iB2ki>RL+(Jq_DO)6^M^g5NACoEr zk)GvRSw}oS)vrLrbXuLVhsHE!v|s2|ZA;&2A&l?n9xYTbEoO%Z2A!ad&Oh&7uoUol zY+5<}EvLUF&4qGulKQ3Hbid2#clqFcm(%a^0sW@9M~auz|MCI-|4;4L2YRd6|FvU% z;C4>8jBPJ$m{Z2k*P(?ld1C?u=6s|1Le!KUwdHG*Ko8B+#%IL~m{Q6E45v1JxT-_? z*`u%MO~Q9RfUB1eb@IVu!MBb?k0e$|qKo1cq_`x-sX6lt!@rgqli*DO^yo}@W=U72 zUjoj(3Y-pX5J%t;VkC=D0GXx(sfYgZ7jryO)ZlNwBBwG_BUAr(=z+F!Ti}_j=_> zr0Z9RV%4uOgZdT1QT?mng|raA7xYb!2ObFeb?(tZznWLnLBEg&gERoo3mLmhkIwio zI^$qtbjByGGZJg%{qNBk|A1edv0oDS`?u(fL-MHbh4+2Y86T7XQ@%OnUn84DYu$*{ zcl9pm$X20?oQYsB)-B=8WSwpnJccl@V{?|Rf3LF6oX+35N_d?5S}cYdCS$g_tFjMIYM9=@;7)6} z#+iSvafQYIAn_VVaJu<=R7oGmx{DLxcc`@vIG98Hlvoz3vSQ{v@u$w-I`m+@%8&-r#KO00V|F9ZU}Id4B76AdX$^J(Yrx$ZDoAvs>UcB$tbl2ilz3ubiJz$w zVw01zB@nwDw0NEVfEHtp_R=HJVvQU#;&jQ`U*Yq;jdJ2Mx_ayR3&j&Q7b&nWsaKep zaR`#AH1kDs1qOQ~n-D@Ec1n1SydN?nT(}~Sc=xae407#AI2c$k%TWNQCu_&~V zx;-4HdGPu$!5ah%KI1zaQQr+}zSol#%}!QS{*@}yT6$RhhPr;CHXnZo8jXd{1i4_wk@mwuBzChQs-Sk9gNx zk7vE^r?TQ_=oSK3fWV!Cz~0pqLF&1(W3qAKsYT)>U|ZAMSTl01M+SZF> zOTBqp$cI|RS3MDm#Ou9JTInA&iCSBA;U58O@&KeebC{M4JbvQ*g{-#bm@sac+ z7va-;^efR7h;-TAXo0j_79y^b%1214Tu#JTuD84&8o>e%<;p6;UZ{Ve;^he3(3A4G z9dfNHDndA@wgcHoGQH|av@S!W-!(Wt=Sx;5x~u+hmXSSmN+s75Y@(e1}Wo4SMLA66ejjK|myOPc^R z@(b*&9zu{HO5A3Z79WAk1(E;eV0pJlUnUzthrO>OE6gJAQgMqmn@@0>jh~Ebzd-q? zvNkZ?dI1wa@s!}=eA3sEjluzY3LDOf(S(T}R9XG*KH`e;I=85dB&w(!2#WVk6g)>gL1`!)%!$?1sPWVbCjf^E^RH(bEE zHh*}q!9JoEnw`@wYhn-0XRWBZV9J!9&|xd8YR~8Ih!s^bs?Zn=A1BjRWO0RUnZrDj z$An%1X_dpaSteiVF#><7Mafm9E^}@2IW5x@b#95JLv6az0bZlZ{xB4jnFcn#WQ+od zi${!t*!fxJ(pP10%0h8W5YI-ji&?_m=4;v6B(L>$o=dFMD7r2YCjR7F0Eq+vnOSz{ zWCt12Vm~%5j{qanW?edf3_t=Y4L2{NY%=(+09%P7H(@EtoJ7_P$2@enUcRNxaaO)F zJOXB=d3|_aW&7IE?WmX5Cg%eE^n=V4;>zVW4?*h9!J1X3@UF5*(>SI$UxDAv|Rde1)7xb3#aYt@5M! z?2ylY<#S#(;gP?1jLC)&~wR<2)i~j|FayB&+2>qCLK)QM-0cqc*?Y zW}Uwf4Io12Y{}WJQ44i9>e}`WUHg4|xJ-&J+%2O%svll$Sqy#RnvfL8vc``Z$g!98 z@0D(7D+&MA;WM_-?Y-WPw;hqUG~dWAu!o2_U+&?S$F*zrY4f{9yTeO}Zp`1x&vhH* z&C#gEyBoFbTaVuo9tSf+m#*88%;`vGw=%GtcWb}j7RcG+t2&I09rF@V^;j|~@l6IY zuuh;9!>TzV-rug4O!9j z%m3czw>Nr?MY`7VN2r%nQz1*c%3Y~N+F+TCPxTybd>pa|-FvlLenlQ$9P$$RPhKKR z4iWyY`TN#mepcv6KIf~=Bap)lgjW+=xXrY5S!l&lo1&;?7y>@ceI{Fo&9UH7p3M9I zu8dwsCF7X9m?-`c$wu&y)4Q4;APm?PZg2p=I!b5P=FZv|(YR)UNft2y3 zOdeeLWw?){*muaC=u|r&8{j&r##rw186yMb|M0p$)FO|O z!;1`Y;c}mG89ol*afOIku+0z7p5`?+V0~`*HrnxkyI?F2tj7Zjizwo(_HBfy@RZL} ze#qg4>2+^eu*qwz_q(@-&z3yYkxzkesj$Nn;$yki^JJDcI#u^cImTI=^MW_Ag^p5+ zpiV{yoxSBEHf9A2VMt&^#1;D0pJhrcx({|@ikkSc(CyI~!DT>U34pNN+=G)Adj@wa;%+aP? zDa04PaBuuFqu_pWm?P*9Y3DuLMA_K173O#8hfxsWTXI*yK4y#g4%Lv2y>o5Xl*RB1 zoG#v!dJ2q!i^8q!qcEW22x=$})ZVW<7O93U1_`yczVUwm~0L zE6O?ed3#pmz^CDnh&d(H?Jd-ni4UTh1F3eHkNrvD<$wnpBU&1d;d9_qEVYL=T!7nv zEML@~jT|IpGvpQWf{K&e=Cy;0yO%iZ%j{8pGa*4IlTe52zx=W;S!9RE^r{? zMsCm^^7;&K5%gUaT?MMBjnf*63dKjb`}GAZtPa1sdx0rRxWm1%KmxtiM$UZBWN+CN z;vbpXQj32X#Iq=Q2n4nwZ5S6cdMn|N7u!QxZNp-_+4wF&)M7<>azAgo&p@xaO>15R zDe|KQD>SF_nSB5#*~O_jN5PjoRW}l#LhKl-Z+3(o)ou;F7BB84F!^#kqNcrlIZdI7 z-o9bZ&;(>h2d}bZM-Z$t1Ow%adJ1JkXwrP5JVYtf9iM|vIW(F8o@KyEYc5P>QI2k- zqvGdKV^(Ndz?ek_`uUMeuGF!Ihgwb;qC0(*E_)-(iip7Wf8=}h*;@01@?eY##4d7} zk6`0Pdn(GAw|ZGgNDDMvUSeMV7m{Q7Ib3QmUNUymf$(X8>ZN5`^AA(47(9@-NUD)e znwLpc#ulZw-E3CUaNI3rLRZOI?+Qptp?Q?l3vbeJE*9(-1O*AE5~Zrt-nV1)`u#f- z9mYWs1{hr_MKt;|!ZE1Z9^hp1+Syuj{LSo;rSfyE{2VPm#r)i5YVw;&hcb9pG3>_f zZuD@7+ft}peziVg)*Q~useG@xUlo_6q3~>ku zTpz^maXav5ix;P|F&*g+`~5l<2X~XXyGOcwd+8Rkh{FZ$BX&z}AT7pf>blH}<{NUT zBG(Q+p&>J>%`0UYH=LI**YAzy(kJ-9fursAq_5>yTM@i)9ZL?Ox}2juEU+qGaJq91 z+Dh4k&FkKlTCF1}vsIsQm=}I3313M>iu*JeyT#(e+`Wa5kBdYUn>&72s z(~zrz)IU#|_g+}K*gx@oF^5*#(oGntev4gxtFIL`9GZXg+EGd^4vE!np93T1o@&=( z7xA#dExd@0Jrg!(F5(a4*9e^AN^qua5q{WkO9YLtrlhq+oBx^CS<+1{6?qwt=;Hlocujk*pPzBXsn?=XM&mQ2m`3M6?Pj%OfFSR+U|-+VCjfkY$U33<7K zJ7qOyn@Y#TJ!nkfUg&VJ9SE?4Zvmcnndg8pNK{V1y53a`!gMI>~Ds@>NHqQ_aww4|Pyh$aFy``k<6)fcd^{mt)d zEk!cFc_+}hV<(M6ilN=Y?P2ELWebfmZ-PkZ4d=TUvm&$%beu7@w8PAPBui`FN!OC* zH(7sF2GT8^B&9R7$S$O6Dl{vkCP3COmCCkI**4*_ZW(Fe>YWtB5DLvKY!P=@H<=zP zY>NrB5LqcGVKN}J1&b3QE4tVwdTh*675`v(;mD9!ORCFej(QU?OcDgX;Y?rEV^U3c znE+McEkHzwW`P#iD_C0Bf-O**7n9#STed1$cwrxx6S1J%WG*D669yAPiuy?wzP_JA zSh3OEDdrSlhWYngSuDlH5fL--z66i*o6P${%BDft9w=L8vBS@#*;Z_#cG_N1&9Y@_ zV4lRmOdNu1%`0it{1qF9&-m^l6_hBl*l7!0D5j4&-xDTvhiULxub%BB%+89ll~Ct& z9+Z>^roz8GIeK^-Zg4`48N8T?3;LLM(@D6Dmh)&QNi1-4wDe(%3d|%GYqjg30S~L9 z3~YCb2$*wrDGIP#D8Q-=3b0>`$Z7=fc0&Q4hXPEc8>_yY0&GuGfG)THI_*wHZ4G~y zP=IPlkh7(pbDjgwhcD?JahF_Eh>iIv|9%p=*$(0c8yf89AKrjS=DZNkMe0p73RuO_ z5D2jP7kofW4S%Mvx(PUj1ARFjnP>$hqKIBBfH7vB58<9I(Sz%dHnARAa|(1GYbkayZK2%0JV&ThF{eDrZSuZhc1g8|MtPfuab++s zl&datBJR&shub6GQ5Wk;lklk1c%0igT1O^y}3}hMl-V)54m*VtKuYc|%A0s`Em{MvkJHa*wia zN-0j-|AQ&+n`&>=nuVGP9%{|Ek{0>Ba`*zPu-MAs3SCYO;WLBAxh|-kkd9G*gRK-s zBup0f6c~|fc<^zIFt||r8tk%J$v)G22C4Mu7@u)|6`@fn;FEmr>6AE&C*3%|EY7B~ zR@M8W`Qz6TiQX(eL~hQvA*r_dtmym#SL9}B{Nd)0UstO^XuN_#iqMZuk5IeiIYwkm zNzr}b`7HQ^uLCwY3$Cg@-*v+kx-qpPve;n@9cEr6bsFba1RG{Jf{=Rx9B-3g_8x6z zbE!qtH?y1|!!Vl7%7#xjUbS{L&Jvc39NF3em_D$)I0l_^2mWFZuUonM>3C-{H{~rt z{t^*AqzU#>RwZT4N1^0t6si{;=RC_l1t=s}Ch8Cun~7`Hc`z*lv2^T5{dg$-{NcR} zFP1yzEzvcxW|CHLDP2>MN=FnM%RShWQb)nq%ALCmA0YEVO@jG~hYpu--0u}D9UR9d z7UV^Ear1Y76@G6XOye~ipdaH6gIt%Wh}!wA8;k1n=x<9`tLLeD5_}SbZYp9rsFeiE z5?_}r0`3hVxi_zpI=FLY)~kovW#+}I);bsZ1US1OA)`LpF0J+`3Ky(iK07p~%i{CF zBb)g(m0zE)M{if1L{~_Z>bgzQqKd)Xr+^&YZV{bq3p zHgVHK_R!7dkJQ<(S=G#u1(BSm#Hh0qBfB6NJCE0MON@)`#wg;kw~6a?KqqveEXbsK zQtgQ{xK8*UWMG@jZ!;W@=HZDe&Q>zUlZbO=50|p|(pnpghd9K2kG9z)Mp!)=$(wnW zZ0XU(F7s3#g3);lNf<9=CwPOCi>e}nvF3k%KV27vq=iR814r9Cyb+h}8EM++Vji}HwWOfCyld&|NFT{!|SD`%yZbAs0hkh5EYDZ2uZ8!K$# zqs*V6AVln$CPh(!=15Sco40>mTg zOXf?A90^G=Bxb`rz&|RBh9L0 zjigwWcvlN3)nTdIe2O(79#S^&Jq{K9g(A&@j7ZP=U87gYj(!h_l#|fviP{~q$C=l?!jMtB z7=9>yeSRSFf<2h?wmG{$nWcg~{AnZb&9m%6y@9*J_9j8F*=8k~0>)((2uA}A_EJ6P zfSIq#aeqNJu!dSYneUSGMNYT5vrpD$c$7D>Sz4jG<$s9h;FC1b=?>ep+pkyakh`MZ zHXxN@XzNNZ%eCg1s}zavAFtC=^vgU{zAsGH_+@pKeP%O}T{!i?{d8I=Hrl+tKgq(d zdPzv4DK~{+_y6+qGi>IQ9PGi`aS2?!bQZZ!S@INuSqtE4#zjFL!R@)g{(Sytb zhcwvq0!*|HfwbNig=ehz{fpcxTm}~U@O>MeeLw^B*Kk6hp~6INAD#mMJ}UV96rexo03N^hIRKlD61ykpl0Q83|ds_L~)r_4vNgR@kvj8_%!n3 zUEu=mIR|cQRy~Lx!v>Oi5t4_CZCp0I8=*n6;$Lx{J>cG>wVVr%TONCkK@+4hWvfi> zA*=|x1Gn9-#vUJ0d)sf-6Y2&~kInxY5iW>NH&CyCJ@nfaU@f`#?Qu5j&tkc|d0;s6 zmol8?BK@OB;zmQtev>O;56gg(&oco7bDPAmomBHArIpN+n*P(O=?tmqbZVjw>dH?Q zzC5F%<5Wc%^;|FYWHTAmbD337-xBJ1ANlK`dXC7bXTu70KMk(Wy0a`hTdZIL6&ME@ z)LN=g_adoPBhkE%>X0iif%FWAh#P=soZDz^)MG7MwO9pzrA{Fi%AX?s(Fh$?VVP54`$($vr5p_dCs{XwCL}cm_HbIBjC~_Gqb7z7bzp1RzH4ru_&&)cu+sAcCcxv5y;T zsHJkvlh;}IQW2|JmqE=lA*kx6DtcXYQ}sllurUN`vR`oUMg$W>=*tV%LEa{@mU>#L zIj|STBqt8xas{67yHqL+k_b^gT`qIpqV51i zmFP;3S#Obc2NO>}l)O2e$KM2t5F)-X1uNH!j&Gw>A-i&-cr}k=Xa(b$FHUCi;J~Y1 zU_^#>nHFi%3D3%Ie{ZQkE7Qfn<#XiDU$kKEjMUx94EiUksiY%PF{1r_;Zc$4stYrWfAwD#mDqbgrVMu3Y!AK%HqG& zxowfR&I!D{0oFqfZ%_dMr%q&mEdFcZh3n;j%9OawnczHFM*l$QD-gnodQQk7)(c`~ zOFQD2WytSGs_%me$?8}6Eq^VE;+AE~6Iq^ell0(TiS~Hn@GFM7oB?#S6=2mz`rMat#f}Hj6Ni& z#GiKcN1T4J)))Jt4=MEq&i9bvqnhmt1-yM-S)tm>H;Tp8|>E$uhv63{fxg-1C|VK3h3Yb`~c8I#t`|9U4Y)v~YZiqhHa7~q{J z^0PsCm<$0U`-E+wlJ|Oe?;8&f`V~f)BIepN4 z-kLd|;g`;74K5dw>$93o>`T_?ui*(Z=k%sc|L!@J`TWZ3 zbBZ%Ppa1jgb6C$;p3N!0`HHjoPpr>HAAIRt&TmQ2<#$oUe#!cL8<{}nT>hHKTK`^J z`%kaWJdCK4^!DGeK2Lk|E6?clPkzN29lSo%G6onfF|L<0x4s&pEdMPR-r2q72F-jr zB2&li#}PJuDdt|W35V&`PdcFR;oXL3SG?`qN~68@TXjJ(&-=xy1;MvAWJhwZo;T{{so@FY(Zn=zZ~F#+Qifs_v~L9nfPt8K7f$XpRm z7%LR7u+^-^0{|+XVAQK~@5`7`)v|4QE{2Ms)A&%iE$XfE8f*9et!Yh#&)CuQarLr% zZ(GM{S?xW!_PlKB@#?rbNCaRzy?VS|;P3F2xBH@A{Fiz4RDWo%o{r%74HIGMS$~(< zV})txrmw0?sG;?k2Oiq)t&L9B5utdEX;m%jtzMl|xefDRZ*;QNE&RSqzZxSSSKpvz zbZm|G90IJ#M2z0R1?E6xvi_;O#(%3ih%PIz^?*M*xlX=hr{ocX`^fdROt5A2ajO}m z7l2KA2-s3Rl)Efvqj7HZ-xXMmU`M9D-<)K43-96fP)&qGjmzX*T$*lLm~kg!wkKsqc@*B zFXAp>7^-+wONF{|gjaiRvw5kG=o#zCVTl|gCq67PQpmiO(B=MQi9)XmIpuI57N@gF zbko{G`m*f0BtcqI>hv3hp0mpm)#@FK;X-fZAnkgz z=e7@SyDBY5>2rRCbOC+IOTmrXfGh(5+%;rF@mNwyGyQZeW&T^q6@_^#;1y<5uYpY1f7Ah>3PGkcdx#qu{VguyR zKv^;RGMMa_Os^@O5f4rrpFC}Qk%*X|h$PFH=@NlL8D~5$xCTXpf~;+3NzkD2naInt z^=M3bpblY5aV9_W&!8+i$k_Q|F-k!G2W{^RsvyK`bXPy1Ow4?met&WsPA;D2N{ z!bbT*I+1%i^u+qMteT3@e(zb>IL*LP*}v7>hU2F-fkb<2w&Y69O-jB7&_C9m8*WZG zA&d1m7a;+crdN(M@4Z}^MSZ9}H_~*fZ;Qj&->#*Xd2L*rX|=kV)#hlWb8Fjj+BUQv zE)QF{+3=x-B`LXB5*N@NLvb0+}arye%27 z?EDhTR7fx1?2DZ{-0a-OX;G|ar#gjZ4>!G1I6BoCsX9*Ri%g??Y6+6)=+u&Uj%Q+@ zTuU3q1;p%VxpYidTk<2trMwTvfASmYyIMTcJNo)E_SEnfCq?S(JbX$2TS-^QkfNJNd=w z$PeUf96NdCrg64NLmmGn*m^IPw8WH>$jxPFZ!YJpZMxT(IU(llsrkmDLhaWk8*+!X zGFa9Vc}qijzCLE(z{S&*_OcGs9-T6Q`%_wT5Z;k}MM?Rw%GH{;14;Gp6YC)~PmFcH zAwOmEa|C9)T8kKNh(`R69Fx@L4|zEsrn6U6=}k9#Pm(JVGa2_rvxx(K@6Tj{B2!$D z@+mGuKL8u0zZ9Kb6+bo7P-Rm}167K9Yco%acV}jePCu<>{f)yT(<|)zck;qqUDP(k zTjL6q)f^u>rlvepRC97@L`_9_DtR1nujGuo`OS)-&aW$e3cuO$@sWnp09^(DYHXcT zuzb6@s&mSPwm9^6qxo&L?$~@bPgi7aN(rlKx|h4ZE%!(Qa2_}%Eg_PPDP_H5`J1M- zY5kw9FbP7^Cp5MCNkI=xjAX{DuP+H7X*w6Dv7`Xa;>fPvU-B`rLe2U!183c}kw{<* z>!J%M^eW3T`cl2HOuPLeN__E@8=IN(oNfaw$RFR)YmZK!5IM-Ciw_&IdHS17aW9kp zTI%5*>mhWdu*2VwpECJ50ypkjOS$wPP+g7es#gqpp~B6 z9bH(%(}i(_VH?eN@NCH<#`T(yw|?mVSKuAbO#Q#ZEo)j35LU@v=Y^BL*8N@kuyc`eTe^K#7O=ItV51lmfAn zAM4H_1Y%g&PYAxj+ZSWS(1bvz+`m8w#!2JA^I|lrX+j`TIfftvi;yII86gm1*?*r9 zOkwgJSg#6FoXKw%WJZvpoZsyD37nKUA`2Y-e_)C!klQHZ}TOji--jtA&4mXCwbA&;bB?DS7N$Jzei0&+<* zA?ia`Q%Sa>6EEm(OABYFjCeA!7Da~!3t}GNK*^a@=whm7pnv{AQuJv zRpeqXO{s?mt%uOnLL@GipA2$wm-GVE_=TXxamkm%1vQF!X^h-FIb)MZ><2eKp}I^e zklG}A-&SL*>h0mLRnVdtmqGu+vj@eMu-cF{LbC9=*9Nej-o05m9;6k;i&89O~#{y>R?^LKx1=1n;y}e40L) zXlhzZrJ$ZQnJKC?eh^j4?MFjhI1SNAS!|X0@bzgl`o*6WCgPe-oeMH}!O!5K2fRw+ zVPk&<4O9RgI{7#V4?ku?!NVh77>I|0IQ@9IhPSVbhekJ8Xs^iNR34?c5GaL(!l@`M zlm~@{uqIave{%UCPNhZq02UsDZYqt1F$9)FVd0G*{XZ;JSa`u;EEMYlHI;)<@37BD zy$RQ)QExmpJ#2?NlXecsit#A;3X2Vd$6{QqfVP?5esKjds^qc|kwp=bCEfUetRM5g z&Sb43wNR_e9+_Sy7dQ_ypU3tzNpXMA)hKnB6C)hU9>Qu*G~Kkv3Q?=o2S0%v&04XA z>Hw|kER{Or$H=~ZBFlRQ~ykxLG3v&_3!NTUWjY$1BoS= zCej!;cMRKP;wySqyk&#j2w#p}H-aB zsz;}kaQ-VYANy_^BERDPjRc_SH%)>+Eu)74FGp7CAyFR07<$PO0mGB*Bz@Ee^zoX2 z(K>+49j<^j%$x8);=BnT0Lt zt?88$6=mTsY`rmlto-x(^V36H{8cNU*Jg4;vTX529%M*yc7_=xZP_)I;Uk-F%9nk_$RF=Q2svaXc?PiU zZI-WBF1xwrs?ZfR*M=^sxh`~O&HT{lnuQ@}O*nL+=d8}~mCquFvBhi6c^u8-v%0)h z@}3;Fzpcyqe5w(sFgiNSTyJw%C{KH~H!nK9;#mPK3{u=_o=>58NhDC=d{%&o>5=&e zGmYP?pV1LSmw7DdSq!=9W{*v4krN}gKr7oD5!u#NCR%-^7fAJXss8KoG)y%lSHDh< zAMI^^DU>JA0Yw0fL(sS;;Ol(I2ds62kyHULP z>4lw5d~~O;rmn(s)~hHN&U!7J<7xZI(;BLoL2$`z|31&pJCkMvqNFM7mk*(-|RxZ@g+@ zC1+M1p$0Df%#l%);6jMvVJq{xrz#}Vd9)*Z$3}Ata}qh*wq!KGvT}w}IT`w9vy`05 z=6bM)<5b+CG{648hl4@31PceB0#N@P4*qG>e**_Mvfu~dU@6E54vvLvBysS}G!CBh z|5Y4ZcpBa$%gPtlC2_5Mzn~-Yj#Hh^r_{W!7B>J2#Yh{3V$FwrE{drN6pAgP0t>~y z$I6W?wb_=8^%*lOym%Y*H*Xg#>u+runZF3jGUXFVJiE}Fa^>McUF3Z+sV>4qPPVG& z5Me?%cE+yl@x_)!A*oj^nyWRxK`PH)t@$t3)09v(?>_C;-PZe5?bc1!)6CFyax7oY z=Wm2u{6Y(p+Y{9A2{J(qmkAAgfM@do&YitKwu)Y<-Fln#bXDkDN?sfK7QfepChs&%N zCZ=iRh}hJV<$FbZv?7zM%Nbn!{S=uTj?xUjQP4?|IC!7gEmjGu)`%#_+tM)<#f(jU z-uwFsfe;xo=;l~4_gYfX=zcXc40W_OoTIJ!s4*H^LNq)@IfD>HsHbjGNQ;OT;-~@| z>TSbfezSR_c%A@lRboHdR>-&O!9%EAnlc`hq>SkrUXfg9QiFxJPeLk$LVF|C(8o;N z9o65UgX{`(gJ@(><5k=t6x?#t#PzhRJ@}49ub<&N5?qdWMb+SS1r5&u@r5?6mLPZH znZs+$sENFn9db#;vm+z#4G$d#qf`)bvZYUGc;o}DJ>tVS-k}Z(Mgw|tI|0z006SE| zIVo$a8OLE$@h86-XIm`{5gsyiIX_{6fk}w9hB9p2lifhW=XL4E;savrcM6vd(HQrI zPQ(LGjkapWWbvxE5WWo&6YXiMG~{wLhhWKSuHcUT=BDeSvWQNhIgvU7^|TUL@hYO0 zs*^38l}VgH3=5Btfq6@JY5J>nS#5$q@d1_lCqoDb7pnzBf7(ZeK@Y>73JCgG}Zn)VPb(03;uQ4(!HGMb0 z#8#!xkD>cayL{|3gYH*lwKI>SEdIcB*Sg1Ttd(%By|Z~rXjE-@@zn1J`$LV9_&4+U zCma?0e}6uw{%7;K75R30rjDD>2jKmc_&03M02OXL;iNj0V-1KLnXwjwEJsZIp$AakY+E= zSIx#}@g{j$8#yOchO|vAkQz3n8_a82b(Z2q>0EknZ;#!fI~A?SBUTPF@M{HYxmTK= z=xv$duB_$P2MgH{{4y1@glQa3Y+MJvvL)6j<}k539PbzWgOvQ7O#IV{N6M3lrvO;L{q`c5rDy0H zlWWZHOw2j#5nPSWnZ&)T z@s9azraF;L;vlDvX++G-rk2s++pBDH46jnJn@~ojNtrA*FMC-sy?24C`<$Rrr|Q%h zE`c}p(Epd_@y_a=dBo|t%;UHJ|2K~}%CX=+^JqVQ9uG5pY97}x=RNZ{PUdm75R%qp z)=t1FKbT4Hmf5V0*#FIJrsgtjGxw4uZ0OSMa{zg_0(nG8^4*D3Us4NiLE5SrCAB27R$f%nIB4SxmjswU zhTKY@{R}HgQ;~Qchz^nU6X~f_44#)8vk?A(bwO1^bB+?4b9DG{8ta!GhxJbpnup+t zdB(G2p_3|gUrnnJg63U6w8ML(-!AQaYmUaxiA4{B2gPr~F=L*>(_J#&#(!6YyE*8d zraP;xX6lhSAl!DLLleYWWcL{>Mq#vLv_sW&wXWBQmz9k(Xv#mSFyT*U`1~1Z=+!!B z)i|JjZk^K>9FJjGj`kupRuEO}6_s{2sLU$&ioLcvp^H3Q@Gq%H=h!{YZA-SfjaX#H z3CLMF=T>64hsMm@XD~il!JL{mf>Zr9E&gc1O&iXIa~S>0(M}E<$J|kO26joe;>Iy1 z;oD+|`-S&T;e>V*p)B4c1|2>Sea4Qu+a}mTr>8Ry!`fMobrK72?-a6azzJrPpRDdf zQzzSlL(Q8n?E%LdTLc_a3KWT#b@ZOdW}kKHt3B+ot8Ve7HntqCUbt1mU4`269)qNA z{I_1N%&o*541+RAcE$577f6^|mbopaB6@3v`Sc&vs<;@pwZ&!Pq;rNpsx)9eBSToG zUR{~S6H989<+T$_LzpwXkgB4Egeo%cKm(C%cHUkUG7{KGp{Eh=pNJ-YY>B}r&{u+J z6}U~?3m;P`x(2IIRo=OjCkuizWx|mCyiRs|A$QoN=ch^96O2*!%g2pT@W0gfEJLzu zjZJXbzaE!+{-DO?oStzxU798%qWY>^flOCWr@Pvie7J)u6n&9 zCSzcY(;)Kq=~wgef7P$Pwq9l8`(T%=;>Jt0hWmQwydgE`#@7}F#CX-RuesPa)0EGn zsI~nyO_((kSX0R;wN=<&vRG4!NeWGw5}c-bFs4T_X(>pLH6rji+6e?kju%CZ^~T zjfmrymV_RG|_Khu}2d(`e|ZibkzCcH){Kj zrJ32fy^z0t)y(WvGr!9L4<`{e!df!n@Yp#?bL`3BK6H(7{19H6CQ`+5$~=jlS7YMF zLta~S?ysXS_<$kX}>fOnG5or_0daa}>*4wT}15mKytJB+Q zPTRmb#z(3Z2UdK&9(8m=i8v|h@4Gq&d7aM;^ z)=a~vp&@comOqC=!`#OEmQf@!o&kykk;e`mo2OC&$3oV6j57IJJaE-X0mi$2aOiyH zc~KeF6QI(GhTEYm%|P z;lggoJzRGtI5GVj>yuEa`J|OSF%~XsB>B#kTtm$WkDG0$(iZd181!F;<>IDV%;uHb z3-Nftj0z)L=Kh{UW+Arrn|L0Od6fvdWe`;&R+}VeAigW}b*`9J-yq#!OA*PA+A@+9 zPu-4<4#2WIRAdh7sX8&xw5ywwr5)W(YVM^%h?#hKv#N`lZU|3)Ww;Z;XM@CEC*Z*{ z0wP?#L&7*}Yd@djcNUEK#aNqm$2kyz60mJOPYUEoc#P!NN?JeH<`lg7hxcX#2}n`W3bZuw zY`wG}@VbF;ojv|_fR$YopxyBl9hA%z%`ZRCL3OF7(473yCt20grTp=yTj}?B&-ln3 z&yjJ;Tlc=|3UggO`b{fca1*6-KYqV;zmvQS;GB;rCoB25dbfpgWN4^&u5@4nKPiLm zRTJ-5H8>qllg}ukdi15L*nDYf)@q8OAN_fB%NWXLh~^X|RM~Tn|Gv7Qkc_HWiQnlg zuyea$m^l?EXf$MBT%1Alj1O@BU+c{eUa?zW-1l0nYZ;Vw%s(zKrmD^RA1>OxLMjmG zFv`tR7l|d382)-!Nz3a;^0Q9n?)5LK^Pb?UYJUAlb-|D2;gLCcZmzF=c<^^w?T_`m zowJiqv)27p-t2oe>*;hNnob1Mi7V5IsaE2-tb>oGzIu{`s?Bd?jiM6YxF(+yvZfGf zkAD1DjCOuW9xZ%`)|)F{rjxS#ZutR~7hKC5nz!@y{d2}YA?d{2kNCaC?`__XAM#hJ zrt6h9GHjuhYsTlRC;Ofq|Bu~P3&w9tCtgS=9#e^f&wl*+o7Jx+uDDN1D&ae+NflC> zE+iwJh^N18B|*OZukW7o_Um8F8K3hQ_ixVKK?8Qss3@feZdXABORW-m@v)RGEdjyI9bc<*TljdU%2}N?#JY~3+4Jsbe7sUUug)8g%D-c$ zYU6SEc!0_WK9(AL@Nt{Tf$MP_I@;VFZ@R~A85j%iwTFfXJfyL+1%H6vqGRy$SPEP| zoKCh-VBWM;GoE@_Ep9URBJI(iS#44?^e582bJII3Yppy-&C0FTGc_wKt+bkl3spKj z2i32|uabo#|I+IR{P`>`S#Y`^9;D3t`cH6mP*4ID`{I8TOltj0=eO|b|EyMvY|#b_ zp9YLJ7STaSnLH1LY2l}tU~bOlW@&)LDUv7_WGU}Ko_W7~DBb;|%O_6@xS<7v`byTG z-c0HG!N%iT-tECR&yIhN8^N*Tf09ltPABGB`Sz>V)6~;lYp}eR8A_K&J4#eFMAE1ZZRXE2VCR3A5qWPe@e{LAF|tS z)Jwje=CG}ZZFu5a#49g}#q(F}OVT%v-eM4}_)XzUiZC$mco4~GbqUWcx#$V_Z*>&b z$ns`6ZRNYyv9F0FI_0_{%h{~?oAsI&Wg-{JDk76<(1G$zdL(Ov+)bu+`h?MgNQch0 zvQ6&FB<>7dy(XQrod@PgR?feX#m)HOz8pUMgyt}^jaW~JX&X%Po0l_jz{ zsi?qw_=28_env$y4;ORzMM;_SP+Ltjw?LjC=*C^|^>kOv_r7`t{c?->GoRAJXOSH> znSr2 zkcE%df*K0$)^omP2dWOtO!$Zq3seAtXx@ ztZZ6N(w4~PS{Tkjs-c-GR;lcJsqS042-UXKnKxuyh_*Uu-A6O+Hd;5j%?@nWWUc4o zkDjNr%@xX24OgUz2xy8GRr$+%uBao32kGaCv14YQM!q*ou5`n!U(?SM> zT+0gxiA-zu-$>JDf|f)Bg{uWoBLjz_1grL7n@^Nbf}PRrE782fa9;Opjbg)fPrN#mw$4JJTv#5P?p?h~Lez zoT9!@4U^J={X(q>&Z_@XDGl)1n1RU@+OWqna5ULvzxC9VN(*P$_?<-mwF$-6dVe$* zp=n;lGv`Xs*J$3^B>WussauRX47VsQr8_%W-1Val3x6md;L1-4k}$>873AGQf*MVT7O)_%GnI*o#R5zEo~H{5x)3uPp}EW`)HpDKD9`}}XQ zHEgoR6ndk|8dxOj!CiF|ZNazd7=k==Mb8HbL6H54}Ddos_Qr!o}M<-{K? z-<+87Lg6Ty<{g>;oeG9TWRF<{-j37H#wv(_`=+~8LJogC7?9rJxt#Ebmo4QL3QR? zam-TG+n1Y9+?RtCVD;tEPOC3JvicI2K;yu;d$o(PiI0`1@sZZM@DK9sTI1oJ@@YmR ziz7pOQHTl!2ZDkXPD-zb_hj;RgibNPI=`pipZ~^^1vBxk)WiW?xisMfiz4ugV-`hY za^k;V6ytuCS`;Hl{BIY<%-*KXps7bKir*|xFN(}Eg7#%uX zjTL&*K}Zj^YNl`onzfQg{@#71Z+Iib?SwN@`k{S75seVZdx3z<>E^57=^3_{@N;9q z{CpX;9(UE>!?7n3TSP%AP&24}ht7KQb#(ZhEw`5HSOx@#pi98$`qSG)t6=SblJysT zvo5?JjPz_1Bw;Yis4Plkt+7F`V=+ZI3n|;DJ>L~D-Vz6@MY?goZ+ymr*6MG855!$B zMiHs6wfbL@+h4OFA7AuZ{e#?SjSI=;bAIO0rhXN0ex=>z;XXwKl!(8~D{-R>jJKYb z?k%cCMxr3#{OlG?l3A0j5`l9RYb|jmq58y!_-1o7{n5iXeYFK&BjH z>E~R1&eyfO9wMs{MPNX+p++3$>L&#HDcfj~IB&n2A)A|4FFCbFF$qZ3r0VzAv{OBm z65kLwFJaLMp|v1@vxkf} z{y9{Knq8dHF}o7cBX==6B%@pgQN|$NLKd~TC)m#`hvw*|Uo+)KGr$r5v-z1@t*p|$fD_h?UDELE@1(Y}ACE0EkUoIfr!jf7PAh2q_#EvL!(PIZt;A2)3 zpW^Jo6P6TdP9ezh8M2QX!VUp3n|0^*<->>yM%47K<(RhQPQ;=hGVqMs^TnFJ@AjSE z1JZOU9qSoQ#hirl%}>kHfFMLcs6Bkm&<=Aipp8Z8_2Hyltg`VrBz&@?UA)~91B&DO zvH(-7PZ3T+qh#uE^= z@h?~m0uMDi;-;(%nX41h{|5yu!S*AV6yz^DPO-1%*)dUz)%Shrb4)NWqhS4SGhaqz z;5P=kRuaH&TA{dClW`6h{R8lF%JZ5zRu%q^Yvpzb5cA4M1=$D%Zs~7RTv)1(9($EO z@so-$+6WkX@dIW>D3KinWGXB3Z1d)`(-UCc_*8l&R*CRnp44)K0Cmsa!ot}Ud?US0 z9P&H&E_{`^JgI%6pVwGil<4PPXYCZ-Y!UwyYY^ENlJsE>(~8mI&}W*0Q{g^ogHvmK zk{9v}bR~GsmNh)mta0gM%HS!5N6 zKe8?6m!B(^W45Y@VAK+5cp$Cq_(~#Em#){HF(Xb!ZK{cZPPJ)6Tp`>KpZRQ&WO*pQlb+yRF~CH;X?Ab7F!%=^W;lU)x@hJuZ@gscTGhU1ToU6j4{)i60>Vi0|0+;G(_7HTrBQ-rjk`|g<$M;On z=3l7kQ6>(;L1JLh0+)!jgtCsv=f0Kuy}i~GJ=PMOY78_9cWIsjI4538;kpyT^!=ap zfoTh*@8;1_3~l=R<6+vzz6e~yGyT2WyiP3zum&cF|9nZnR<_Oj_7&F-9iu4BY59k2 znL*-V%X8RbeN_7jeW(qhquEu&dbK5#>n7N1A%7;zdTGB?iRKX9JWWarGX^HJZa)YX z1b<9Sl_aIOm;>sS+>>2(ai|IB;`2 zaVA$I|6^Zq@U1*gZla59GsTz#yDBE&3etL=xDThI$!Yn5`#WTv+M%_-}vf=Z&que#5ol6 z5oPr$L`1QfS%BSrysy@ctgr6xHH5@)7V-xxSmm#`v&f5K?1KOHH2O1(d=9j@t$Kr*SFLt77I5zx?yM>hDmUiyWi>tfpF#8{e^{6hQDAeuX9;R2(+VfCV!?8~nw_Y%u=mpw60 zE*XhAa&aUskxOQxQZ88uk6ijCCd(x|alTw~5@*Y$e*znt1-k|$#>!=2VuW0B6DP?f zFOe&kL5VE6XyrRlfz)cjSgrPMlP7wKCS-OQtJ$Ny3^}tq)Xx*W!k#Et1FOOY5z|Yz zh*xB1%&q-ogPZX$jk%rcwY#?S+PJ&nOV#|XNo;Z!blIf_d;BlFlG_Zq&4~Xhb?cB@ zhjlQOw?wa`Z*g@xm0Q)iti zP@waCpri*T$|bEjo|`yb(s}YcFELWmgCspDp-Ec)?9vhr?eb0dm)08g&{`(wviw@@ zN7zjTQQf`U#4^JjC-icQSp!~*callQ>Ya+qIQJs9KD;$`dG$UwjHC=4FxiyPMCUKu z;3;jxTd%fo$yDR+pPsi^rhF@dsfO*aJ#jsaIGmCAo?INNe}^*@RdSb=@X4iLVyaxS z6HdA0B+ipd|HOE?3`l%SE&~%|uv`WuWNZ$r{_UvM5^eNqvs-(SRS+x} z`yTw9)N235Z(iy*zlph1(9yzvp^?{R$0I98@>n=%Db@>?cL{N$3vpA$nm_<|-{H_q zoBh_Awj6#Mzmxfm=2y(Gl;64hCh&9do5AlwezW<_<+p}k3%_^y{hi-e{Ok*7+Vc1f z=XV;vbNEf>=i@h<-!=Sx$Zs*fc77fFy7^@RkGcF#;x~fdSbin^&gOSMzsdYO{3`if z!fy`0o-=2%Ll&BkpVoue9(g!LFQA4AAGU|SV3R{oR3;*TMsr{lL0+d>y9G0WLa>N2ATc6X=dMeNFPr>ie?=Vw`QupSp2#-OnCM zoh6N&a{u5zGv%3?uB1u>x8@U2?&nacjpKp zhmkPI&MwxPSa1?%eVdtUlQC&m?&KtJszl?YwabM~j0P&q`|^ZDJXxzB3~dtbJXNdD zAwkgVinT(ln3p2lMs0|ckTq9iW-a5kDSe39b<_c7LKhJ{xk73QGdhgOo8~zb&t@`A zRl)RFRZu2XY)SlqEYisDLrQZ`JI!A%wR7a}Q1B7+^V_85Ca1M&tMo4Ae>%`kQmI&? zs20N4OAzLO=oJ(cph38;^bx)T6 zsMyO-P^?jz?=zYsi1dgUJy?%@m<2?Q0BqE45(fFhEPrIui1;w+iyF*6(VTAl8GG$< zPiM(fflsJPQ5mKcL*^w+IU^|)AR3`S326Y>+b-H6%IgAs%a?@KomZDLh_KDg@EB!eI{6S6ijn>I5`$l-W~G zVmjBXKVCD$mY76kYYdCo0n&yPkb-crT+QWCcCYF-;ZVvI4!B!Y?C|rv#>?ZT{-!1 z-G$NId>OKEEXOx4=4;pxe5<@^gFX`JRtpXb6fSn@H5Mi|hr>ulr`aci?Q9FdxvW|^ zEDmqYIn7oF&y|6VNo2YX>L^-Hd9v+ce=D+LU2F|JpaUDdRtC(+_&uL=XOTo05C`w&_=opLm>d%#q*Rrkww%P46_O z$0_IEwdtm#+BEnZ+Qd234c|CU_)Pf^=5A_Fo9xH7DFusr_b51C!zOkdEN1d`4;-rn zWWl0r0)-$pZI!(i+Wapu<-W2Shz1u zYRQx&fV8+TP=sj};Sd85S4NlH_^XJR@};}kl6(Tf%QgI{X1P7*OBRbx0Rx-zss_{vDt3pl6Ww!{wx=rFww4w_*HR;WHg{u@r)mrhHt&T1 zZMGrnk?}h{aVgA5;v#8hx}WSWG(5S1t`&wl66I1l&BuKbTT*}NnCLgnyL!sZGo3wU zCLnz0Bs~?^cZ#+ou(u~L$p)eMs|Y@F6wN>B6Z(?K}K{g7JVAkzFBS9Zt`0SjWx$a;kC0M&AkqtjXoKo^Be$ zY_^w9rYngXh0*zod0YBHq|m(8fa|Z5eo~O4-GPkRhyp}65|VRos@~I0FCQ6&39lHx z@bEhvp1hS4_AeL9$Hc0X@imL2+5E8tJeD>{UluFanW4R zHCPIbdCI+tV0tT7<%T!HlmECI3mS0~l;>(dmG6Mcj{hFi!FY*w@ht_8YOI8xOr7?4WR==Mnt6(lI!ED}y{+`Gs z@)Y|{CKgWXA(;i+d|FZj#;VO8NE4NsYmBoInGJlp4L;unADS# ztPBJdBR)-w)*wus>W^cyj;0tP&n-f95?Ux3YaC3L#6kL3bjxr(G8o@ih)^#ES}!gH z%@xUu1^=K+lFGTIzhr^zlrNfy3TE1G$!;7>If*Z%1~oq==B%4plPBU$)?zOpvsY%g zauvBD^I2k!`=6>q*zY!I1*= zS6}2xtWj?&^hFjF3EH+K3M)Q&Ql`?#8n7%S>a8z+h$ntyg`m;$-M&cWGhlSS{)5Lz zc#JRP&wkdlR)1@jth&XyLd;Z07ueks#)M8O-{BWL=3bMD1k)F-e8zmJN$jq*hGAq^ zG_@!}5)UXr1F&9g{``k_+bea{reqMtR&$$ri8R2h=M^T|JX@Q3)^5)4dG@qb2>Iq( z&(_!}#k@C_b+74_#}jBBhr?0HV4$GY-=`9P)9UY12{wskB*Y-0K12em17ky@U3YAA zY*cjV66_`jclAJV9mA3=_)V6CCf4eGh5Zx-o7mW%RM%`s@kcO(bBp@d2I5WeTo=Xvelq)SD zs2{>tzGy=?Ev$_cx*NZ@yz#2#?#3tTc+mK`{1yCn!vsW|+MN$_n;yl9J_?JX`zJ@~ z+kt39Jp!xM>m>)`KT7jrb&ZK2*ssy<*vR}%{)(4N{=uHfS2{7Z@$NDTwKd*dA{WOtE7P*wAkU175upvzZ5rTSC$BXO$nt&p zZf&sF#-BjGmhUd&Ntrw;k|$+6aq*-|p19;m6;I~zWWGF^7jPW#IkwAlHc$8bz6DBI z@`6HB1xi`+ghEpVN?Gzm6+h1x@y<8gi`)_KB7CtesU@+*ZQQwtez~>$JEebI@5xu! z!Tsb}k(ItMUtWkhg3_iJ$s1SdO_{u@O1*K(n|Y}>RiDeN`Ked)xEp-oe0OB}B0Lh_ ziAW0Hj*;n0+$--yn20sd^krIpgS5eDkQQnAQE7+_9nYm5R$rsi3K>40N*k>HB7Rj* zT|AZgrO(JWqEfqzBLbnoeAVv;RWm(b*&y{cdJ*>AE7b~NDkLY;IXf;lQOVw$Bac_a z1t`rSHwwnNSK8z&-EKOp+rrfCmp7=lQjTe=GzcuhLc2>9t#)yVp9cu@Ov?2|?-UT> zPKwl{4XHaRk!)3w8950Agv60EAEZDZsP0~M-DcjUD%ff+=W2W)=1?I?ZAb)kV};cf zP8+l*bM$D|n?D{)9S^Ig5xX+H;_2iE)YBZPIkLiPK-M!qm4_>&0p(2*q5>LsE0iy4 zwk1yJu;^pOPts(lzi)C|d2|fsn~Qf5ApJh+WwTdk#(B6B*vg!pejc^ANkx%ggpU`3dgw+*XgdPR)-@vQ2f-IqZ_tZ`p zyzumuc6VduDX?IIX%RH9)rVIn zD zAOm|+JojQXr>V}J1O2Lbj63Wwfu7IJ#KlU8aj#c@c&9GC=DRye% zSz=&ajrl1W81p+y01uyp$Q%8Yr?K2Tg%%sO#9ZN#o;UNkQ>+*KQ0_7W9UBr;6$7;! z|FF*HTTc^f)v9E0D4*)i&V{+=2k@MVgG#)i8_n)lg?HNMDNM4!X%x=OutM!)se-Ab z3lfzmKpTW3`sERZ0a~K)Xmes02<65FDTJc*0O#TXMd{W82G&)Wg^5YMRv#AN5X-b~ zZPm&C=yh;};jc3>zw&F-_6r7m4%;T(Foih`GBo>xC;2g%b^47apYfIq$;z3u07F&| zAY_)-ElS#gFbx|sc*KJ1_LqLDJKh)dYf<8HjQOI~Nnhz6U*rNz*%FiF3dTy5m+z)} z5igcdwfSACQz{%OLiy~vC7Gv-n>xo%DLC=AC<`#4U|Pxq61u)a1JdTtX%-TPCRbw? z&5*tZBdQmP&FXx;+10ABt@0EjUWtVBR^5M~_!$|AsJ_$uG@?-E-NjGJ6R?mYJeDC~ z-&(OKSK-g|{n4y}TPMm(PT$A0RS#JE0gQC9G#${$h&aNXnah@&N#ssOeq2~VJ*;pk z(wQ}aLxubm&Y{*BTX!LN-_zOLVoaMUWGMgYf>tun2E27r- zAPi(6H(_kWU=0DhTsAzsS#2oafm>sNR8EGPL7K8wBqNc01nM`Wg#A^iwPkReWUlzE zf$K3AU~9Tx`L7jT8|9vhxbH1Gwk$%P>K!}r<+WMP(MS^mBb#uwmW3{rJ~B=MpTdVL z9Y7V3xMzM3B)WQij@^cqFLJ48e);|65xDF-sbuT`NXu+HAX*4_YHJ0B(6q9PTCw5)tLk(Ct` zfEPGpQgKCzC_!fCn-k{QZH-qm;#c#@)qHYwQG5{713xiapKwKCXnJqnJS*=SHaC1M zaibHDl-0pVjoi_(Bm7~m_CTy*hxR~I;|xl?s1OvCZM+wMRSnsUd`SDm6K=HQEM=Ae zQoFf`wzj&X7Y{JMMi__%ISBXUWWlHo&Vsd=6JQO^U-Ab5%~FYv>USQzby~&Ms_hr$ zn@g`&ZO8N7`Q{%RYjcuzghW}X}(%|*4~O|8CT$36DF4^uvEj93sjJpgr?j1KNL|Vq^%OuDyg?gK5F!NVS$4w?+c(UNpuhaxc>>qO+ zOsr8DZ%}0sqt+R}b!zV%bX{fj0|NEiCu*3kdA1%q1=seO0@bV(ER+#Lo*7Y15^2}c zRXuZYh=U`w{H>gQZp{BB)ZC_3mu#nLMi7ugOLe>M#6K$bN zX~YQgv7S=QhdCaiiXyjV^S=*`E6B=T>v3idmUuL=j9Rgc2gi~_wNs_U;DaaeJzx|W zBkJ*%@9<10I8$o6-Ky!_-kQ!nQB9lCs1ByK%)tbsag!KO>kc9UHZ1F~w;Kcx*;o7AbHgdZYiIS znshPWvMkb>d(mm+8JFSc$7n-5lj9r^EKN3HvP8tkTRxAvKMi*dUf6Fn9Fc9qikJt8 zQU}h%U4z`(^d^h}J+Vx-rC#_iGP=yu=dhA!SAV#_X*VNiCK7j3aiqc=Brl?)OL-<# z2!j9WA~tvyLNem82(qv`3U0|3_f+?mbL6IUITjd-d~;o&_wT0P7g_Jq>#+!k!Cj;Kcg^16J}? zy%ZX+EnsXASA+zF3lVK8^Q78Hh5|nNH(ms}p^p=%9rHX_p5w1t{0#g}@Pa5MhKM+` zK`d@nSz7J%$fa|-z0sq=vxQ{5|?ZiZ?}XUH}-$KqogZ8vVd55V>~ zV<8988P3J{KyX_6D72#J7==Rf4iwY;u=gy7HfqS-E=0+2NWZNH2``x+py+hj?^H z%j)}!eLum7t0V4ciyh8L4em|rvrAj_)mclv_`!#B+H~3!sVt;foNhh3S?!qeNANMQ zI?`zUqh&oNf*5Y4bKkUnQe;-9r?klvaftCBn`sIr1+LY30ZZ?d3Qs>lMW;XLUMthD zuU<2M$d<44a~k!I1O8~{Fkh^b0mDw+oZ@#hi2-l4dV16-Wq>>4o@iwf5a`MlR|jJp zE%Le}-WPCUrJElPf9PX8c;pQf*9 zt}EYXcN-8h7r5~)G7C)@O5u@u^e&YTXVC-Uawb`iGu<2e*##w4q)+1X;m6_&$pn6J z&7PG~@In!#fpMhy6|7ns7!PvHmJ-64He7kthQ9Dv>9*hz%bqDVpm1I9SBb6q>K<#% z3E9i{n=|1yl!YI<-thGmq>F5({m+7E38~0trED0BQV+b=gCcWE>cM&P09pOouiaIa zjc0Vl@`3+MV#2g=o?e4Tg6QmaIVKhnDeD$YF(n%RW(lV^%IBR9R?Lj^cI0j^!hhl|!Rb$3&*( zMpwv!iA)>SJS`s?4+_{w#~l{@3!BK$KI~gF z@ZG28Pag2@Q>;kcu|B-l0c3@WQsbe9xnCbsUBqA>@<$$`r*T+Otf*>Rxla0<0X zGcSql%>c91tdHED&!HK~DFrUh4>#w+Fv(LXpQqt&s`wq%`<(6CUB4uu*EDm`{ELUj z!tI@RhxsB40z{Ow+a^2V!H;SF9iV7+bmH9sR~_GV8Je9GhoGb2*I@Xj(J{ zdU=rt3S;pUvy7wc*071-24P&MFxs~kixk|F9$-?ipv-67jwoD3Zn|m%pD%_U-LyCc zg7^7ifC1FXV1ez2^^UIcO~`r*wV%e=vVSg1hKgYn0!@JYqFiXNMRF2;QGJ347frb4 zKx`Ee2GoC34Cl1R7Boo}q%~YZ4q4WH3(J?nF!bD{H6j^E_AOA^Hvh{4?W(|mGozV| zidQv`@-|6%NM*$(kCeAb8rY;o-sIj}&nd|J1;YLZ+Bbat8-kAC2w&e~Go!z=aCE)Q zJFbt-->L_pgiiw_g`FWco7FIDb$0(s*NxJI<`$e(K3!iT%zX71;sFgx6HJs&56 z%s{oXAQYQuTTlgrQ}vBfHBM3lV{{S-Qu#`u1ue8-yf}_=VTWDCFXcN1K~lAna)>1( zTOLkmOmWqa7-^oGs&HaYh30o}NT15H&d2xA?pR8~9=ye2ab-x8N!*GnKtH=*o@i5I zAvxLH-&Mc5g+7P!oL!-!Lv?ke307u4!B_Cae9CEGY}vtX8-lM=9F{LUYe^P7@KHY7 zVdyu>f)S(``t9cL7&4CW(Bp;FA%o2}80(_PGUmB08$BEdha<>kH|@_6bP=>-=X>-R z3+^mBT6SFKuZcs(o=TxU+WLd0LwI(TQ_k) zD7((zUXhu|s=Kbe;>gVCSs8xu3y+fFYc1@icW%X+xmWg^G(xLCS@2BsGP`?XQ!ua5 zAv9rfgF5A_JKtVVggx@a0f@_xo%2D*fCY0Ll2(65~tmDT?0Z{8yy1@ zxf>mM!0wKzjsBL2RBAO}H>_U!abj^tnSjZSkn8jLMtANBHm6#G8wEFVpWkC0rQTBW zj`PqS`(`)kCyTB1zz${y7ok+k$ZTh=U~M%u24>HMkA?2zm1L&yer)! zOXM-j3@j|35-iuTKzeLS z`u$B-gH}J9GO;PSk9IK2n$#>1yH!DK7kFqWNHnW@%|sjBY+;sLD|D^?Udf%ZJ@F&P zP-B4<9>KD)3Ep*JV)`1Hm)c0Z8tU4}K#{>jM{5)`b!B~~oUW;i4sD%j4zi|Oh>m!E20xrz(oF9bp zyis?jw1?qKysS5`C%1qV!|gC<6&&|f@F(8r#g5cRC&@=qt76JH$s3*e6_32pnP0~d zAPB?hS}o&}+qu%yCBW9-J%Fxs0d2Jr`C2diKyNz|%_N@AYZZM!P1)R^NUocXc>n@A z7!aG*ZMyNX`3MY*3WTB6Pg4^FC3D*A7jf8Bmf;~i)(ys*)D$r8{?c|sgAM-`UHGra zK?V>%N%BW?QIgI{5`Sh1TgGn>tV@v3qkVgU4@lkU44 z{aq8ohcj*&ywbs~FV#Lq$QeHD2p#uy5=E5mOyqUECmpZZVgB(Xwlq)i{L=RkD~N@x z9}FY}YWa>eqDC@{AH+DJm1Ye|7I^k3vGO&a0uUkuPFGjDq3*h_$zONu9MM#qk>lx_ z9L*de7@WQCX3<;P#p0e<|gxq;FYe=YNhIPadaUBi1OLU+IMA$wIg*^Pk2O?|SX z&f#ip$MLm{iBL$7aCJ@|1=`TU)*ecL7&z7hSAK=^Yf?AZF)~9Ul@9>4y1oJuTZ^@Tr~=damE z!~w5iy2Jk@&VqS5<(40cl$jUwR1iOm{Hpwr49+f69_MM@tROA?1~+(m@I)`fC;b#5 zlJo#-k7(YWzp#Z0JtT4^d>}Gbxv{B&+uijsb|t=ZuYhM_#DYc_&OJCmH$IqYcn+c!cvI+?igmCm>>`g9Kgrcy+7_Jb zcD9ASsI)q0`?55wm>S_NnuL zHuV5|+O?QBK(a%q6snXtn2X;yBErUzX1*#~G=b(vA4^YiNX92pfhbhoP`+p$LME() zWmNd`pV|0UrkbosAjW9@%!ub;nIwRYgJ>MOW!+S{*UF|9yiG=MqI=@{;C$51H@h3N zlUo78^#KPcr)zrSrR@{F^}B|x1PTUnb zJ)L)wRwjUl7R|K-paPNn%=Y#ndDvEk*H&<$%4r$cW6wqpnSJN2vu=ldOM8P z7V}xqCtk!BF_sv9%g514GZHQdy$HDXDKlLhB_|7Z|JB+mKPA6s!f(}g+Fg6NbG)o> zIr?1s0J-y~)rWi1?e*6*2Tv2HQ_t{;kP>YsZ`9|kx-h)!feS!kfPYMWaT z1~`;a+osRaR2$L!(HY1=I(-~RT$dmq4owt7Gs9PUSZ_-@l1gPGy{MAu={N*H|A6Ks z3)**yWlk1Qd7IgTTP{+`EE*I4CCDn=`9rNioNOB1aWNrBc{Rc;B@au{)BBa14k~{4 zvEo1QDL7?bpB)jzqI7C~QA*S@^0F~oZ~^aMoEAci(QDqLH{!`B5|BO6Ys5hnf6-q^ z5<2G}0f(tauIlg``~8t0t`eN#i~Y0TOrw6EY>q5{59>r$RmA&ivjToi zfS?+SF|-K&$kONeJ%}$J_)Qw_k4_#%yWGYOcIRek05e({%{=I-xU}Me;6P5pia}5^Yl-p%ch3QarqZbY zhvdZ4XO+Kn<5V14v|j+edU=BE!R}7*n+o5cK zY0E{?p$B1ovk^gHz0P7Ed;#Xg&Ucr5OvhNq%L?Qzstnz+9aCqse+jI%C{9!zAyj9z5NFxE#PihGCg4TNJP zw1@Ix)B^8@yU-)e-XppjsV!X<$n^Pp(>47!Us1frID#+fXx1asUr5e09#EYDoqay} zP%JYzmSOq)g1UW28oipeR#x_dPx*W@rE87e{6vX)_zP(rz5r_{4AqwoVWt!e>|$QQ z!WrWA1!F2qglUI)Bm9}_=9hw90>2iswDR4;5PJl&L1qh)dcd4}jqMzfFOl^F^Z_(Q z=D~-+OBix#^_vv12i6H&rZa+yxuiwIk_9*K%tv6jLvrE$3g}q+ys@n`@QG}utS1#$-K#uSrf{3YZ7mdE&#SA3vbkptrF*4&bt5YykV0+s z#V+3XYsAq4$lncKQ}UO*ozG3Qxsgx!9Bdu!vQNT15#K4;iYgy3uvql^ov$zWk&Xn> z1$Viicx68ofeVNARlKnttuLNJ9lCSpEw~&IA+(a`l;RKz`vnguL0|)8 z)?~qvx7EHogy|}?&&YIcxJ47+VUH$o-1F|6^ckaL;QwybXpv$52?d2%@=EtGf+`{a zJz~uL${X~F$G~<{dJMWN|J@k8^_%}>47Bha%zV!{oC8lSCT~~@3<%|iXXIq0_|k#O z*uvtKWl%0i4a(*|g90<6Mg<;Djf!J8kR-d2i==g6xlVa$MD;N53P~rn^qn(!8OI|naJrCVU>;> z(aWyUS4*#dlzdVhoSkRcj={5`TfoDt?3fq^7McH@sv)9kP}-e4ts3G%GQp)mYw5pE ziNZed#lEK7A_U8gPhA=8nt+aFl6_%+aRA$jf63<=fUb%n@u+JtFB#@;XehB61nRHa zYfgC5Vg?+7<)c}jJ*}8pb85xh&I&Cmc-)-%9X9rqbCwAYSCBD;rEAuPK3OMd_3IT- zXZ=n+%{AFH+h-d7u99TIsep)d@=0>I>JJ5%y1KWy>bmXPU1w2N`JoG=#ovX*XhqoS zbN+L|<;GQSi7ZZA)lw^dJ__{zg zppO-SJ>F+%A6^lY1^rrOtk^aRzT9fH`YNKSp#@=c_Oe;=i_Ic+g4wzocH$LMOj*9_TBZq5bXK^6S#?uJ1jm@Cs4qs*d-Dr2v)tlQ z@*Cd2m2R-)?T=Y})(Lrr|7;yUVij!uiEC;d|AY!z$G191FJ{p$_^+eZaqTZpxQ=}+ z#?ui=i>dz63wcgY!REKEx)S+H_#zA0BQvX3@(%f!r98^aNwuh`_ruW_F-re#E$1kE z5V2iDd$kMSu-M2NpPP?!!dxBQvNa3-aGk zEb@3hNMODrdBkYE1+PhvLDxRT7>H72OJAi(-F0mhUt1~=vEmSHqhiy?f7GoMUU6)H zMDc~`AM|GYBe{$J=)7LLN!jPDNrM*RAiv1eIHa?3C+ZQ=dLtdGe_yZxrk(X~k?gcv7ak!I{s<=q2KD3u#9#Ndd{a$Heuw_b5mn0kkFP~H{weOHotcf0kjtna&u z)H}?5;Z$bWp|ubwUm#~{Fvl0`uJ+pS1rtM)M1*t>{+S&MMz3VtwwpD4VP3W?nOt)! zQys~{we)wT5T&;gH``b64*hdRqQ88b$*I4I;26*;n{|iJIFL9M66Ne5R*#)?g9G{d z?NEQ+_$-m>C*rkKFUkQX4GXnH!85Q|7R@O(HpbF+U?-rDE;v*i2V@;!OVB+tdvQ6Vm5IXvWi zN4s+%8Sub`DAsHsTjHFf3QL_bl8he$4`ej2R)x)=uv9yc5Tu6fELrnoc%QcF8R=); zDDrr$8 zkOt`Li=VX8ptpKUNE4Z6N?HUJzR0ZAu*Q*T?d45@NM(y><>o+ST9Yq2Yqe)(lX<2f zwlLuWduh1iVEa&y4U<+c2SgQMe?r21<1@hq?Hp^-!tctPaA!a5j;)e%c4~LNMj}}- za5E7|qPKU0O(3R_^e^;Am)Y@s7@ktCH9SckR3}*r&Re~eRTpqHyF2!YGt5=%YcZvW z=H}NrP|1{T606xVz(DgD5V;33bmx%;FH0GrdGh@&SFFBC=be z{|EXYB>TVa!yS*Gun%V+--qMQ@>_UY)KulW1I9b<#^J)ALK%LWGJT?RP;80vT>dfQ zD1b&}yK`Hi>GB~Xad+*?Ml|0XI+X+aIZShv`6I*{kZBDAdCyi<( zZo7LOk8LZuY%T=Y7erUEGLmbP>oDzD9~>>W-I6Mj)IUjuMq_4}C>+?Ch^?_ha2n0y zV$f&Vp2iCj8I7lOG}~ZOwEB9x&34FZb76{0%J622?xtzndi?JknM~3Z)Z|hZEJrch zaGA=JBeY~CNjIm_260B|*14=7tw9LWb^Jv4Q!gx*TaGx$G4(28ACawYGuQoHY*Ci= z!<0eu9Fe`&ODVz2!<`PT;VyEoKuUk$rFFKDhxW$>e!WJsI!R$Z)d{Krnr~A!V^Z3W z8cs<{6ur%y zo+>K%f{f5fJym=={rqvjdXDz$AmfO1NNCX^LW_=o@2ir++yn{S(5{i2R_x<#-HI50T@ufO8=MIUY&YU8e>9 zNAM>zKU|rcsjdA-?gB^u%6t-e3$oC6hP8|rN;M! zZwGZBWj5)gyD3;;+eN;Xri(#EPdy|mCCIZ4A|X+PY$kF1hVEGDZ>=~K(?g5OKds-i z_!dvp3x%~g37zhO8tTc;e_VTWzH!l___jI9_+^iN|D!pwxGR2`snJRpL^^9dgFx5)}uG9NuP5M zU$4=f&+$h(42l@@$Lq&H76cBEI9(*k;p@+45sFdSM(=lR=8aX-6>o=owP?yc6I{8W zlQ=nG3r-bbZc6-`_>MVzmYUeY3a>gS-1ExnXJV-OhK;Z11>F%5x#-j4&C>B;76xdE zGYs!?VKfZy82AjfPJ}Mo4DUixC5HD$vdNm)GnB^8x~1Qhv#3aU&B78CpGXXaFq4B7 z>4THE7X^$3m_hEB^QYLaVc;V2B>^mt;V(vb0ss77O1{*DL|XW=?HE=vnqpLT^jNBx z0keBl)z+8_ZRa)iFWg(+uLljh?`2pyU)VLSDFSl?ARRo){^E-(%|C>EIqRyin~a*z|?SaNS{34BHe5& zq#=pz2L`YP_p0;TQ#38_NHIXdXuuid`7bgpTtX`wK`7Igrnqd_8*#lDCW?8MhhIreB=j>J=Z{rhj z+Wjb{nIG|4vkjr6EpBk{Ss7Y|5mBh0yKb8+(Vsmvlu0tj&?HpFLn4$^O9M8?2tjya_1V==+4JP` z!O*6a-sc-VZ4-`Z$54XSfP}}Xwk`74clHe}D9Qt-W zEyd+@`u_$uEL6DH!VSVxoWKsZicR;v6WHO-{fQ+7Q8uAzJ6xDgi5)t`{1)SgIc}~w zhc3S)*0_;Ez#&0l7K2lkM({m2sn7Z8w7pjmrx2~sRWNy+Mvt2>Vr7M{HagvIZ1qdr z4(@g13%#`62eQ%XKcXfXbkwS(a0`HQk$dhY>3&&GiMpZ5QRR2~L~^P;YeWCF$Z8S8 zl7w%q?DCkRl%g~B810Dx`a={=AeT|TnJ>o`wHA8cyo>_E6i41)daY( zbDnCB>@BdJO@%fCj|3zjPMA$qKtWKdeEYZ*gng1rkkk?};JR5PTS3uBq|B7&BHvH@ ziJoQoiPZfyF=CE%b7J;B$`2RWR?A$)#kL$7V9?{t3W60D+~gyOS2XX2`xIxS&W`jL zK*uZtXdU)_@lexe6=Pn*Rk5`RH!9ykk2s6O(KL$)`oLSnJxU~`rue4@5$t4dDKQr# zG(ec&FIB`TQiKIM<_IUlDaV?0PBmFH?g?P^mymKNg4I9VdjeQ3Hdg?RYP_r0V)C$? z5kJL@Y)lPv?rJs64|8t`MlEylGuXNQ4{z@RA60cVeCNt7gcFn?h>_6*jRZ6b*1(8l zU`A$iqF50_MWt0ERcmRO0jw56CQ&AbQERnN->2Hv)>^IBTM+?8GYNqN6auIOunMSn zhVjBhfq*dYf9-Q-CXj&oJn#4MBXiE#*R|JPd+oK?UVH6hC|Gt%WG=RB$+L~y6FH)H znKtAX{w`@lK14wIU)qo#fvIz&%h9GdXvX1Dbe_8UG-*5DL7xbGwqt z3M|(5AoSZ(QYz0g-d>TUsOAzyQ8Hu%GR6u^ObASFi5n3MUEST7wE=3A)M!vyQmm z)(=5lciQtdGAL)>f;i8m;Hwr=@wTzT5ta4pFt|g;emui)4YYr(F;W*}j8uOi#{2z? z+I(5|Hvbt*nFC_c-b<13W31$ufMFyENmqh#l{-jo)L8wEP-BANe#R@@!cxl9z0$2_ z2V*XwSk6t1Q`OFk0P2M8yzy0Or_4P{e{c3%oc|Y_X#1j7ba`uIVmC766MeMk4s7!e zSAkM3r1XQg9QNoVzlBfxM;kGwPdbDz^bs<-2Qpt|(3OTi?grV29jPq65z1)Xij}1$ z+}f}&@>|k*LvNatcT_+r^w?v*S^FojOPLlOplI;fML8)dpr88uE1!xaF(E9BwsNPJ zd&#H=KQ7^aA2~HB2cYDrh#Z-1rS|lVSbm6m8(DVINgNU2$is@2a(+Z!a5vSAW?*l$ zJLeS!(hX+o$J2VtQ_n;}F|7SQ<+Q-G(#I^f6aL~f0)bT8^Imxn0=dH^kf-a8C6G%M zfylN~s&4{xa%3W%rAx8KIt$v<#^IMtWGKb!`W5wl16SH&d-vosEW zb0pUMH!u1*2f-6#F}@C+*6}=GsXH(_#Z}j?wvV^an4hYe)jsh})Ew!~)Fi%%dvX!h zQLe6-jq4)Q$MPnJ><8ovOTNx<)LmLo7IGF~kd&@G+7Bw#7PC#|GM2%3Q;gBm#UwUe zl5!|aPm@^A)w=`Rdce)GAxbZ;!vwT6HTotO)~v$P%n?|ZR$3Js?$lgZKh*oW@loXO zWhJ8;2WxyHm;x;bo%X$2?ce!=R$=Ft_MF|5&DK?c`qpTEXu_W_9T@+9HhOAk!duDj zmS{TmXTZ^yma3CAoV-9ezdQO9M_mujGf-Q|@ys(H`7V(J(jZBIk60o|R@36U&{5LE zH_XU?OZrV=&&Gi|S}agTPj%FlPz;#`Zq4;RqeYZ}oYmgX9spBURr?QwR?d=)bl6wU zyue}KQ|TJ(1&)ToEB=q)MnNf{*`o3pE(Q&Yd*jK=ge=B7^v}hD zTO3>t_F&G7#IASOUK=0=I%>pV1*W~W#&`thdQ8we7%wZA9zpS|?+&cRw&(D0&9yr; z{=JIYu-pzB&q}T(I}tsF>Xzn^eAzT)bI0q&g7hW3d3T1~RgMEIzoOH$+FKdioJ!iN zRdXCOg;Gb)#OAosQPdcDQUdIowZH@FWs6pgwNJ{@J1BzSnY~C>)DV$fR|;s;s%J^; zAuHA_q+Yp}AbPV_eZ54_05ZvJMu#I~B)4Q9#mkc2Dz4)a z40~|t#6DJTS(TY7wQ3(|G*eg3iHA*7VV6@=<*o5Bwn1Y{OW{-!dR091M-sXX3jzr( ziHF(<1qDlUQ2$gEh1omqIeSo~7okf|r$-gSzCEhsW?7}58yf#s=-NM%Y~U<5nhy<} zl?h{s=0H926>@CTCWHg^Eexveinm2?hh7{@KB6q`wH!CMA-aQFXxuXu4w78jk-^~_ z2$6yf#@!W+t&_ZPjR1>}#(ACN4WUWL zTSAm<(P0p4Qr|y?5G?B3=qTD45n3ba11;b;-#*f+Yk6B@(qEg95D7O$?vy~GYlW7d z@fC7IB8osa7PUrXUuQ{$Nm*L;xI{c8;($b;z4Mb{Z^y$oEtA? zfC_`u+A8mehh<0!CaJYmPKt+q3BfEeNv*B&vUsRm;d(r&odsr#)<<*W#5R*laX|IE zxT0De;|gp4PzX*@Tc6N)lk6b44bf8}I4dA@4K%ktu|TLXms>Gv0CU#suO*0ZNl`3Tx_@O4 z|1fWGY{IEN>gmL+b#;8!!kvxGT4Ati&025qT19SVEq+sdSM!_Zb2{u_&2s7=20l(R zu2D6~q$LUbC4qNhiAvz-34dJI$LAl-9qgqyMQ?W4znuMsDsJ6@|3udS`?=qp5tEnb zknfX>BZDjeyR?Ojuf0wt?=gEFL`TKc^{d4ROx`^-A@9YykoP{jm}tpPOgZY$2q1$Ww&gS-JIr_=KwxNw|I{c_tpi%#|Wo< zA0wRdjc|(3I2=^@E_T@0%`65_Jv@kf8b>tOd+Zx$^&li8+LI6M#l7zIy-8UbAfk_S zlK18YE=d#+<168a9J3XJ}#-@5M54nZhAoBWK9hQkgROD%r^w&r5fk&(aE% z#C$tvm`}G%ReXDYVm>Ffn$JmF%xAexQ}I)Wn$Kx6F_He(E6nF~nUeUvYnS<)Awmz| zK9O`1V(QfiG4*LC;kcln#8h#7!*s6&?ols@sR3S&7gO($NF}D;Cb7qhsUjqpVk#=e z&SI)q6%$R_=Ss9Gr^cn&hDf$VizLxgy*#cu#gt;DS0Z1~M{IK11k7sD^HtdNt*}cgml0N~!gMRlS@|?!Zo(?>m72Vj zzvp|ReBUYGlPd4$yIj6+kngElbtR*UuxS!DLBeh|1r)-jOV|hryGyIa%1hGCKxBvu zrUR7M28s7+)yyBF%{_rsO3cZmQZ#`lluAoZES3I9q|ytGf4-O)n*Yd$si_suNhH#; zTkwu9T-g*!JqPxfQYj~%nNjF%)6To0d9eJO`sx<;ylq~Up=e4Ie)HZ{=~Uf#d5<1J^%Dguo*S>|c4ae?~; z2@dmZ`McF7XztKF+}&>VF?Kim8lx9!uW@JHq=G`@pqt;3C*E#HczY}&^}O`(BMK@nd!tC?>o*STsDN+hec;U=I3{hrpd!m zW#TINSI;K!b9Y|nPNjPz_tVj`@h$I2A~=jr?)x0y1)}16lX)=F1E(2UvWDK&@VXje zSIX&(!i4{Ou`!c7tp*W^`GFk9)fV@@%tYwitI^afHW7+(%`f@nNG@p10E=x!Z5$Bp zbWg49x0u_#vNtHmQ}nNFKG;kz6lEz&++K`AH6+>d-1u2y0Cb&JEH`ENlJ*}zAnl!d zzN6d@FzCra826QrQ~VazsV)CV^wUbPB=-soOy(k|Vx|$J_B<7+80Qcq z=}HW>)@PGXY`_RKnR0QQDF?(UzRGw#7J8-ZmUEJ~q;KMsW-%e^5GJ08F_9CX&M`(N zfw~Z&-1;#Ja?=R3P@u9I^BHEG5mQiMQFC^lRB(*a+O01vkXq!x<0bFn0GG4U)8%{q z3IRvx|9JTRkaKeQ9(_82wBIr>pA5e35OxRn_MRNR|H7N!_ki!9c5?W>{(AzxJ!~AF z48HSFsds?y$0vvHz=jjThpmwF_{%|TUj3pneH*NlTR=FGgR$roKy!sE`a6R*<2qoA z{G6fhs5{ex36DFNwqR<(^wPS0+Tv(kV;Nf#=Xmt)a)Hm>zBmz33Vdu^TxD3zaHa=4 zwRdE*3$vnGi1Th;zNVX7U!uIP8z2{=1iMF{6ROJ~iDf3j3-(O0Nw}l|zJ~t=5>YDbqxdyd30^7TBVx?zjyll+% z(B5ne7{$@E&=|50XMSEEJq6Wb;`0&|AIRt21#%|ka#Y=yxj;_AOFgkh>ft6Ycks06 zzd*f{opttb796C394Z<;K&zGYPzQ8j)K<5~W8dq~7ht7Cvjj(sdsgGfV@kU z6mnQVh6Tv8Lks8f$oBYi1_X6?JOnyeDj@Y_fj_}LPM*}I_QP;;L;_lA6ma6t5 zU-!E8Rqez5z3RAUR>-h!J-zB!RtyM^(Hs1y2(A)Q;tps}U4vt2gV~K697P+z&^QZ2 z8v?roL%SSRhZKfH3v6kQd(Av6l<`Lj3!O2}{-1eFdEJx6MxTHE8epsoCkhTbiW;Dg zV^Due$YIe3Jz-)VM*uU`7_uOYzM(fBXrqJJAZygy1mEXUliZLK?2huTFS@&InlS;;0zGA8U9p3uY|Zu?%}O>WLbSC!zEO&#}Y@P8$tI9;1J#g=KG2i?GI|<$U-cvy~tuZeKRQrNt{-+*TLn5!5JBdF-_4+l%g?OtgP6g=b7gQ z&X&uHnYtkCO-2)^c%nHSL)M^TF*h&+mZ4nyil4U?ixVlk$1x5N=YReTeG0F0jrc$mNF}~O633k`ts|Y?` zAcKwtm-gCWKROwvsys8w(K6URoL(_L6PWmT$bWM9rm|9wyVro*5Z?Gq*$>!BXq9zz_ z1pX}jUT6exRN<`K6dgnZg}J3UUP+}r&IOOEf(3Qc|>wTu1U zoHBiTh5aLcKeBa12w}c29d!+;=6W#HWVdU78~UsQ+3`}H%ZE)iv0Q`dnTKX@O;9(2 zZdF^e>GkBRq6$$^nJT!Nf*QVMd&!UbbbUpDk*qHt!Jw7=7^GyYD+A&UZJJdyVO$a4YSmGrIuQ+*i!2`Ew$cAOReX& z)Oub^tvAt9>rJxMdgYc{Z>pu%n5=5^t$BGL_J|`i>tW_K8Woki*wH*%1BBCmk=qXc+ORpCT4Tsk}I zlJH5DnQRFO`T49I0XXo=dTzWs+Pf|`ZQ_8qdv%9DY&+ELOD5^qa z0kykG0khM&Z<#G@hrNDw{wt|o`=`F{+~vn9%N2}1gaONNf)O0~lhW5LD%cGQ9Lq)E z!L3fgbT7j7ANX+AStDHUCNq73Tx~ulDL80vvfJ5c4{NpapiOINvqKISA-v4K-G7!0 z`!iliWv^RA2X*&fqc9mpepD6dSSHGI$8s624mC(CI1gOiB%K{NI9f1JU$iRn65mQw zj~@yxpo}YouH~!x{}AU4dGG*>FF2Jx9I2A@rcRL*v-vU&1~_>2T4VG>lA@rVM(`5h z77$T_mMwCH9+lqF)L+M=o8sgOH4C{e5mu7Sy;6~D(#V32iL6S zLkm$k#?2Zg6BEx7S2>nw)nf@};g8yq0r4d1g-lRIo@<5=Q{h1?yi}{!%y7|-n<_`A zR(;r18;+DPrEWOE zC~tT|#nZIvdq@RQ{=XpCB&||qWIN=l2-Kw2IC(0v^yp)evenscOogU|lN2K#c2SN~wnX0P^^*~}#DGLa%TXtmR!B~ywF300A4h-9)ERaT}dGMP2Rvx*Jt zbfvkO4Z&aHsB6S8ii>OQ14x#=`Mpg%8JMzVgUFT*Be^ET6fVWGRRqjQEYp-G=yKc* zc?)jk#-|pBCE1F6J-HHzm*IXad@wz)rxIj|^`@jLUOFw#xWRw+N^|}+C)W;X>6z8O zUHop)s-J>dv2al)OCp6vIHQoVL|99Oy;TcvfqBXjb40b8XI=(^^u^m}0BWiv0LrX#5tW}RrL{)wo8i&~kVdo^n*2lw6Nro+thjEnFDz@_3 zc-XFF*khL22qnIo2xV6RDvzfY%eo3X8Vs%aRv~`$Mhb$btZ)X4*9>Q{P>#%0lAgiB zCZwciurycBkuU~}m=_VoU}>(rRl?j_HKZV643_3fl=*BIY1Id1U^r#4G*@0KVGNc} z2y?h>9Lj{?CdY z4i1F9@3I9NS^|f9%^b-RA>R3{6NIb~nR68LYX-RH?{F)*O+~2(ZYgSqli;w#W$F zw#t`jgVZc@Yk0VlMHWf0$(u>^oP3#kj8-Bgj&L-GexXKP;!P&qEVLM=QlVC8bFEhW z3yC#(bhEHj@BO0@kQ+^?(5R;((zDRP>Mq-1d(y+q_d zy40+9W#o_$i$k)CCyON_7fP&IZ&O4LBN5%ARljdhRf!cBj=ZHp)**gbQJ0#9u8REK z%mpg`Vnvl&x#}Y(E2kl~R+MulOdyPBph_xwyYg3xBxR$AhOZFu!)uBk5Tz=AcwGE| zk&E~NVVdD_@gsb!_z_NsAM9|NDUTCBI@6~TKTK)`j=1u_hC$-*=j(XesTwlp+5%@w+{zpP4!Q<7{Y33o(KjbT#{7Wq3KF1GPv{!l2k!7q_n>*iT4{j4hZp4*PQAaB;A@D>Q>`m2Q{=~^rPoJlX_Q*uaCSv&zn{&o*poL!5w5>j?!bK*R6Ie=+AX*>Hc+Y zeS|y4<&`5)ah+Du-*>8U&u-t(8pO99=&krOHxTTFH2M% zLbGE09BZ&N7wIG;F|LC${jDknHA6aThJL6Sa*Te-O8QcXI{9xMD`LyTJa;0CcTU1f zsmJ7PdpH5$dl@JcR(3Pza~culz^0WPO7i78QUB){|43$d%E};V>tz4!*nJ~!aE8rv z)C7Jx7v$Nq2s6OGC zL3KBOv!FV#5_`Q7vhE&GF-owVm4vMau#v_R63FdFi{J?MK~e};jI%Es-DcJ)uZF7g zF$?Ql(QOG1UQp6Y-d6DDuTb5epmP!}=+6yJ>HdvgeMIP`p9M>PmYrxyxD)I0A%V6)9co&@hA7^Nl%<2>%`L%{?X`aT%>8Q^`y7e5X@Zp#iE$V$_{;#41%<;rN^_>>$lS7 zJ^|?X0nk#R=)aqvjnNUIU+3VZ5Wnz@JDE-#qx#VGk1SLu{#}aM^^7`GotG|Ib#67K z_t_zg4;`(>Nyjr4Mb5Vfz>1QsRQx_MNA)!>qs%xBjHY1RL0x7IilT@ZsmLgW3QXpp zDq3rNN;sV|oJwWrCu+n+8in>YBDw-}SL~=o3t|f;r9ca!wI&nUhblD0p^fMLmznnk z$t(1r?iN?VW&3%)-w3Bb&DSiK-1^4J8|rSvvX2r5?d8WO5JyW>&|${3Gax^L*%(lN@J*03tL}U;;7(Km;iriKMji!RDJAow5m&w>r8=_Lp6H z^Muil4(yjEV_n_`@aAXxD2+MIX-#Tr&INtpvl;$(QKU0tH@;2tq>$P~Ar%wsj}9!A zQnJ*mTZ$Ph#lW;lZE} z@D!gMo?ac`k$q?{-Xq#GwTE`nv09B-!-+qphj@w?pu6Q~lKgNOFIB4*yQ#Wr**@Ff zwuCfQgIe;N=Z9gv^Bln*>i!fn8gZd&UWYUe9q&KstFxNtZzm=eUEisc{ARA4k^OJc zuG_dxj@wQPQ;g?_Kyb^cs*AWBbmoyKi92DP>8tY_q|Q|8478*wXN!SIH(!M`X|nu` zq+R}rCoI4OT1gfrDBkoI{rhoF~nW+=E)&`CO|C>gC@&H@8XB12Ynd-6FB^Z#Ui0 zIhz$16L0nT%^vnp^Bde*&C%E6P3x3}{`pg_h9y<`5iDp-OeP(ROsBgTh*BEm(32hB%$Rd~^saP8)K1Xpa{rY}W1{ zPmFX%Q9F1qIuaS7zFQ)NJTc(af^w|Nao|Ho;HZhSKY~LOk>ZE_3%$v+@l!|Wsu&pb z=10E|%1Vq+uT&@-WTFi3esrz>EDKSC1X2A3QJNqsvkZ@^nP4fJ))6CXPk<5CN|{8U z5qxu*{7lUy(%xCuyVpnS8e*#~;(@*b;d%DOnbGvb_!oBh1GHf%zZ`q*wviudE`SpTdZ+;_1=7%1NQH^AuzdgqG zEQMyl6y4$NBRyHL*PiUeUp-G1zx_0bUb3oLVICcr)$HJZu&20iG55;g0LR{#mso>y zA(XGcmUN_!CEi5+kYjl%ZE@8d^y-`ITs>&`25ztj?8pl=oaV3}nSGvfRNq;dx+6oK zrw)utot5F#ui@gd)sCt?_-5K}V-ir8gy2Uo{8eUXHg|g5`f^5S0!ozmq}}fb@62RN zbg=(N?(oMpNBaAo^baJj1E&%DwVK~ky}r)HxoK^2*fnaBp5fG-_1vIR*Nl6OPowv^ ziVTO|tR^>C`fg|XUdEz6>Gh0QGedG4XP)vmfngb^8+VYS^JqU9St|IV@o-RtJ+=qY6i=MQIi5vX>*KaM%cdA|EaSM)57=h?BS~8 z5*6^2SP~%ev3g0UIU@TH$pTPtJm8pnah@-DSnOZte=fQ?tj-#CU5F7F9yDsFp~Ful!^uGJs#H}fubeeum#-RGZwmjLYE)UcX9I@Y3y8(XVE(^JP1Ye!VP;+W- z4w~Yv{$^bQFboc)6!Y zt8sJ_&UvJ#Rx1lUIqz~0K82k6TCRZRB6hvzu}M_Mec~yr|J%+bb@VYn1{bPe4{Y59 znpl}C4qETKIIvuRn>q6=y;eaPtf`d(oVo(q5nJgr!H=E-@YZX0E0!Z!zT2r?pcu|= zcaB&+N9J_1E>&^6Rk4*p{JOd9EBzZK=WsaB%$aB6l)@Q&;{=s*DfQ@Qjw9lVt|^=&*Z6-ORomF2WUax1h6 zjU%LoM#h@)ZlEn*7^sfjiG{`DMS%b>G6jCj1)+_h3=~nJ6<|GBThFg?#R`ns@PGKx zqL@3p6CFs+(ke2zL%*G|Umhy07h93^HMkn9HhR?`g;pMuypF&j+~Ui!TCbH7<)Q|E zpF|TQ1B7cGM6Ajk~4hv`!b!&u0#?y`H|m$lVp@t!UCj-HJ?36o9$ z0gsM6q5>2FL~3}aqk#J*f%^#|jxw&!!u#=v{m$THLNqRYub5$$E)gREFd%8X><)vu z$E2M`H}>_Sr*o7;?x|=z8Z&~w5oOTXlxW<)NARO6!}VN^9E}Ye1_$D(R^cE`K_evY z)i-{B97GNXQP{aaNRhrv-)Z%YTN}?cys86S+PEFcxR-@)kJ*;G){EC5xFevO|JLY<0n~ z#NWCsOzhN8Q=FfICou%NBJiBgkRBge29pi*03Rm-Bsq(-wc z$Voob=%x5(#;j_CSuVG8+noAlENmAc_aV zjT4fERA7AdMv^S{F-(j~cG@hm_~lm#vXD)qOJ7Qb@1Fm`B91v~HL}OyEMhC^^>gG6 ztAR^dY$7nS<5UvLs7kMQ78zR26AGs;0bKxmBhPi>V14ygSK2n=J6w2}cxaMyzP*$olE)s1;;qIz%NZr!If+r?`8+X7gn9C1 zGS7n)qL}Abyu>GvAHqDpi8D_{iY{)r4EpuVlhbKwAv9SgB&TNUopv| zX00Y4&|;h<$=vY%qL^N@z~qx1rIK!>P#jaX5*1N>%}bo9e%R2`YMv)=oO6DsWO6@= zWriuYv^Km>^Xh4(C6zsVqgnJ?IxDw4ccf#p)TlIc|~$n=uPsjG0VAan-RTl9Q(Z-cKs zj9wIh=usXfSj#LqPBIynagn!`Q;9zh0GN)18S|Z|ua0p=+9!HVNK$&!w>g7PsaGq# zC;T}g$tM3MGWvduA7>@*Q~Oi@3wU1Wmw*R6vL@jC8B2nvSQ6kP(HUaL2b9+SONN=P_nO`I{QJ1s?Pg;>;C*-}1L%iYbX^Mha z9Y|5ex2LG34)YU7@eqDgZA!*(j8pqEUQB9t9xLOYyaka_qN22Kvep?6{Ue0?^$u;^ z77^%?;HO(4vdS+;vTv3d3UQt#EABu{=~w1Wjp{jT9#KF0o z;G&RBHfDy%dxUnFpk9?ki3w^l6O_}=o#}z6PB=mJdmuh59VgXyn4c_hURTQj|5N7l zG(pXQ4kUT0;(JT-W+6#IeyP}FC58DTG(foQbfzdLR!wS(!Vw<5EUlLQ3@V~HhA*6> zn4{`TbH@3cVwhS+7GWF*6CA14K4nfgrAdi=zu-#LvD|;v+F`!YYGhTcs9H_`!U0zk z5~qnDO4Y)o;#~0h@1W@Dt>1$SmcYX;$`vtBO!U4-uC!z>#XA?8O%mpbzQh#w-?iAM zDeeosTlJXY{tlOYm9X{ycMS9w7?Q`UV8SYQD5b9~vb^q9s>c}(EUNyc*1koyQN>E5 z;?&AW;W+R~e5Fv5WTM?5lTJ*u)MTQ+Ui+O)RLwlKG7TA@zoM9^i%eZJQAyiDyYl=C ziit{IQ@dgSyRPOkrCk}VdP$To7SA%}(>NuoW$4sCf)Lf*mr~!7xi4}W-2gTEzLI;{ zcXcW2sG-r3x0+)`6m0J(-s*cUuv}26=3#|P=3z->)y0HmAvwCBGc8GmW1w7&g4)U{ z6gUYAv?gtMoD_=yftE&?lm3K!!-`d7Wc+f6d+;$S()cCCfSIlSMCpR;@4@D!`yKj!x?uAH zMOSS8JyUNdY(9sAy?Ue*n-|VyvH7H;FCsRU9oYP0Nt9socw$emdC6m~Lxj-K&UC#F zk#xtbLnI)<=OwHEZztpPN!ZZX$VW$wjeP4$LwQ0zFS{Sd@cDhnNG6{*A=#d$2*#Y| z#~BV&ai%uEVEHClv*I>7i}$*eLw@Zc;OgB_;8jm5r!(7Hu0J$|w=V-AMF_{+{BPHsj?~ zb^=>Ozxco!pr~olY8!dl8=d+ZwHfWy#x=Y2%}#rZZ?0NMA;*-;#8u+LZ4K&FoKV$= z+#L5@HM5sfe^k{OO=nk3e6{t|A64Qig3ks={=1~+s=fS88+WmH!v0g%hM<{2HQmX@ z<@j@8|G``-{fXsuu|kg2H*!RaEVQ(Mx!g%%`^nzy-$N^ejkxr7)MN)mJ#Jt**vr=G7;~1!$!jyVL~aF7Bw@*xUYUaRi0~apJfx$nI?W3kZ{#U zxzk)A>#Y&LaOt8=E;azi&lHrF3SBttt-g`$4GELfSC6Vu1mf@E;L0$2tAD3N=UUNL zB>QW>4@dC>y|$)>%Q{{97MK1x&Yy*oGu7;%FKO+`TKVRY-oI{ zHlZ!}gsf+xIN3gFcgo#VOjU|Og+gixBg}L>RY?g}ejKkb)AUoXk%psVXtAnrjb9Pv#qtza_ zx?sUscLlaAo7u-5(SmA6KctW6de$3yxCU+ThQ{MoaYvpP+Xyzdo$05R*&A^mwSTkH z`@nL=AYg+#ztugzfiDaKR?j{S-86){D}$Zx4BUOAsUw&F6Ob3}E4b|Is7oQdre3;2 zqINm!0>X>&pDKs1Y{te9q$%(i*_v0^@Umab-6z&DZgD_8|8tuRI30Uff+R z_HpOe+v9ZS?=!e^HN4a2O5fzk!m{KuoBO~Xy zD3puGoWWUOH39*ws%;5g)kCU`Nu{E5XAeqyU>7eK26%4S;4G?VuikS@o7=weK97Lz z4rR#34D#uR-l8^d(T7}N@LN6AF)AaAB`vzh7&oX!GD!cMNR+#Y8Ta+>TUtH0gmv%z z8IDoj-)GDe0ZXYbMBfg2U$;@9OX5Qljym+aNT)3i2cIvPM!YY}@%mumokeY!_~=_5 zMO&R5l%GKq0;5gF{3TSQzo)Meez9ibHoPHk{M4D%Y!wiQrOnC>O*q16(w+BbY&5bA zD`vzOuFwo*s82;Nx>%L`5%&1_&ZT!!8p#FOhk%*k#`}yZbnO(hC_3@AqUA zCHQE;9FnQlg?FyDtB;5NDQfVhbNY7GtdGlN6G?ctSAWl`|A%Gm zRmu+yx!r-r3~g`Dc-QP{Zt~^di?IswL_M5M_<*u5nR@e0H_8zj?&yv* zEyl>ivg3(gP2Y#L1u7(@hd#$=#9}!#c|as+$CI@ zjVS`YUX3^Y%x=IMT<@@xUjH{(D+!w9vfH}O?)_dreq@uL@Yzjz&!ZDKg&QSj$R&TJ>I&jg zeT#P94CBrE80V_17_IvITH$Wv)BlLAxwl|4_eL(+Jr85}{ANzX`LEFmR~jRUx?nQuJNHzo2E zffd^M7yt4VTgtD~d~b_w>NKh0XPmeLNz-b#-jglZs48l-H{W-0G)tt2dGaxDa;V?H z`G-=N?dDy{lXlO|p5Ksyagj0g18{Kp{6p#cW3k_GTiuk*K2)$2ZD>k#B*AFMej{lS z7mQ*_`-yQLkI3cH9fi#}#>)J~ep`z16lT;*(Y68O-CMQ7_i5f%nV<@n4J1(Ys?FH6 z!R&FC6dbVE3c16OSxfn86Z%uPB4G@*MXp1FjK$lSyEcX^ucJ4}c9IZ`ad_QP<;rWi z@?QtDG3NgV5|g&nj;lk0TAq8{vZjb) z5N{rn}1lK zn_0qra0WLu{Sq8-R0aP=ToI=)5EYQN_>6(#s#>dIw88cg{;(r&^F5-zBIwFl;6fU9 z8459l+=E47;iCvTi`NRY0F2dkFvAEANR=G+{yp8xTT+=u71VSPyEVPH6Ou!F)2MBe~)bL zguitVOb7f8_}}9%wd92OtGxaP;Sc2h0Q_Ck>;D!0l;6si2aOidl6m+pP^33Uv&@4_ zoKFthFbfT+3!<>`$H!%DB5f7p&`c|boh0qHL|TR_7Tlk=34v(y7AZG2yu4BH7eWGK zO7f{ts~yyvXoQm*0^{5tmIt?%)tOBMzGAPQyJo2^r7XWytGNQ@g4dq;9N$_^NIvxJ zS$ud=D(RVz^QP1_UVHX5m1GxFnA@IvuljgLma_I-Nw3vZp?f8>hYvE7VXO)sh(?PF zFXDp=z4qK568un_N}W3>5!}9n;DvXRx{NWV{j!Zqe>aYlOMm$~oOkvz8_oV@E3@0a z3T;NS2=Lnd4c;CnSm_025 z7#=`NNqta=wN!Avj9~47evD=LdPBadcfw`%YCAvkhH?jWJByCW>(}EfB#51Y_uM6_ zpegGsw7J{etLn$n-}zD#sF;%doQlk8Eo$b*4iaee>}GYf%Q3pA)ur|1g0%WLqR)y&fVFNMJ%^N;Hd=Uf0qq&1=0yo~7*&_?&?7OQ8@ zF5w<4$Rw<#6(;lE$O`Sy@K=b1g1(8o%2q`JUoftF7R4FY)x2pBdFVKT>&)OX5t*}> z^WoXJ%UhKDx};g~9^?x5tl&dV!ZBo~d30D}?(>AqJ0C9joXQa?%V$6RAEYMeFNq-W zcAL59-()7|L@;|DQCiJlAsKsasroqE%(RtMCbwPBn^yB2X+SC!MqXu+A(TVgg}Q}T z<(v_QE0haYnDQ|reu$T{i2I!HZKPxTOp$>p!}=YbaUS;AUX?8G7od&c?2Fa2BM&qA z*BBLEo}FpNQ)E0%d0yXS9{8E?u$=e!g9%Nk=Pxs?K$!yXC}$9q3l9;(KNOFD(gc+< z%Uc1J@bYi@gU93yxmd*sPnm)lckcdn0h1QcR^iE0x06UJq0hVIkth~2*l;t-wnN{-U;rt45|0Qwx&Ax2rnCE!cYQ6#Mk$YIM zkzZXKlRaM2WaTYXNo6v;h&Q+9M8lGOy$Uq*-^sgH^D4WpfR`BppvZ-k6CbaM^7g%~ z%DXgC-VOq+^17SlX|-npMul6uyCL!gM63-ig$Q%kOTw&4(2>=)+<%y5?dD<5$iL^! zY+LT@5{Fz+dv>C%CskQBGTensf38wUlWyh>3n4~7RQZbfxQ{e6gp+jqB6IMYJBJvj zp8d^BtW}5gPfdwTR0UR9P<$W;H|2V9uc1bFWen#mKUpF9zv-B+j0FfD*NZ zQ>Z`U<44-dz-%E@nyO@tH~8@VgwVh7LXcZ?WiH{>-(T=lZ?T=X=z3G1(-C$_0e_eb z>Hz;7av8tK1^nNVI^I7*EcVQsh@&sm)At75{ulvNdN&U$)oR}ZJXK+2l2n!CUuEKJ zCbyfJ&Z{}|21!w(hs(ZD-m)^U;2{HCbG2!;V+7aIjU3v^-S#3eS=r}VneDmj2(Y^G zYl+KmEz?|^wOYB(4`z3Fqt)Ejc4>gZKkdzYiL{KCaAXPL$MIJaz6w$ZJ~da~y}U-x zOYlcC{_=RdGw%joJG3tW>o&YGGUV6@+cazkwIXC;xg^I5+Kh~7#>%IB8hyNu} zF1|MM^@aJh8Il@DvaV|TZ;}}A;mj=3en9bim}7GM0eY<@SR@JBNYHc`3CqSWgY%dL z!7`~z76kV&i$c>jLq?pb`8op9iJQa^N|N}by)5o}2C!eyjx+CH;&;(9v&t6llyM;%Eqv!NHq6HQo^2S z_W3-K&_CnBtg#yjplRRK9V_PFfK1=iUKm;N-iIzzBWqIjZ?QY z9nQ&~B845EQs4A(`9~{uM4rtqAwazhj=yw^zesiwsGYwfd?B+pZJoNKY3r1a_}kXhIAs^@*h|4{Y0C%v{fB0+ z;XB;4X6l}%HRbyh^^}ro%=kB@T4Z#vKc+t)+5_8QGx9Y+zN%l5ufs}4pM6NsoHyfJ zpgXkl?G-!rEYCcZL{04-1oWnTQ?mQ0z(P|vry=Y4d!PDO18rt1kqFa*zRXPC?b%l^ zH?f)7jZYD)Ra{R#EcrV5ji9YQh6#oaPia^YzIV#7M)~dCfMosHbCeXm7NMIKzq2Ad z6QNt$?Hh}rtpr&Ab!0=@ZfX~4yQ$rhwt4A7+D`I!@R7NM!cBRb%$fguLmDoHM3=_p zZAtYAsVsSWHc9-s9qWren3T5}YriLfC3c@c-tL$=atR~L$}fm?Cm@LA5u-SMoIfE? z4VvbQbpdLj98=QJCPs9OFHB~9;WyW=l<@dw*q-zB)k(((e-k*u`{!Mnu`&J%GIrGAd@^s=EPAiRiO3^+!Dd@uM z>^zl1nlzXt3_W66&}LZus({CFQ9N`AbB7lK57 zoWrZXzqGC19LP%AHsy8ridj!?)*F84;S#?>L5>>^5dCO%Sa~OJbAH$+ey4I z7KZbnR;~6E;8Qh5=99Yvf1%S2N{-y23T3=qUmv+iy(|2f^4Zg*koF*7zRs&DU#^$8 ztjt|J1bs@r6gM)8ghjrrl9;UQ79J)te#x8F&5x>FmV7xufMb4TP7=Nr`A`YSs(#pM z=0ws)R;w`d1tRbEw~9obEaJ73Jh}g=1iV?qcO_4LOcH<_W|d^m-9Uf^+yRL@p*;C3 ziLK3B%|qnLJ9r+`Ycyn|AygFUZ_4Vz0^{RJH8XNV1mzC$n@}0s6&~;8sbnAMsX{(jESx&z_D>n!N*lF`5dDd9t@s zOMALAmuNq0uF$^v0>vE9xnZZ?qAlA!SX;Jd@ECRh=V^g=U>fo|R(r5ABPE5MBo(|r zjnVm&utUBVjMWxi4#8DuGg`kCRn9;ZRjjS%uE*qLSYSO{^7C6#j;4!pZJ4aNT0{r* zF0vgtwva=V%IK3fnEIZr960^#fQZ(jBth=0&KjApdQJ|dx0?G+W4dF^1M^b`b8@kPG~g&VCXk0ov3`vGl0JGlWw%}Yufnk zw!PXY)%<8R+hM&!1mAQ(%9Zm*YcF8gBof~I z)w1D^vB^a31%CEv!`JWAhHj9LQtf=)D@>qi>$lA8!4~fD(^OMtw0%ii@(!Vvk*?X| z)|TxZ3zOeYfEIAD$w4#6#3WiPT*Dt4;PUK^N{e&T9==h@PLZ$;ybHQl(|OyS;O;X% z(Cn5E*`N|nLAffC{Ro@#E{RrCu_$$?QbPHbh}dp)9KUjjxi)w85}L>z4f4BGnjAQk zqIuUl`O~g$C4|F&^S4QaWBx(DuGFq>o;O}0M4T3vI_5VEN}Or|q;TTYhKKh#w4tpD zthk!7R$AZ2p`w{R(W;7Lmz1h3K)pN6Nd!DkGL))O_s}h^#wZR^cIqXWj{>p{IRWyQ z@gk6$L&A5Odd7T%Bmb1hM1M*{7G6(Kq*B5kroF1I$yT;%SFb-o3rl`*3%i*uG@I2$ z0~iH$wA&iT4;*FOs`s&4%_C|I&u!M0Z5v!UzzVH?oY2T?{8;j;9Q;Z#dy8K>N+|We zB;M6(=HWCKU3z!D!l@t=ybeVnW_+5_1y19Tyh{;^oxo~pUZakPg6CoI?YmRq`4H8O z)oSmN>DB@A9XRp9sKd-OZ+72KttD5({M9KbrS#R^8-U^&v{c5;T|trTFB6_w)8$z| zZ{{?8{V_${CPkdlRS_0`7^`GE4@#~YYgK!(o|y}$@oW?DIcc&8??z7vt@6QRP(z`)j?i}6vnTq_`A`83+NJNe;U!s@UI8szHwGwg&v!hVEPrhR{cz<{3a&U zW9HLqyP8igYdY9@LM4nDwdv6C^-a5mZctyPO$TL8z1Esjn-1j+Z&Yd@=2Q@q_cR~U zLy0*xM1U3;%|u6^eBq?+YnnFZM3KC+t0m*cn<9k0*R*j;6m`l5-lcC=lX$zcY4emJ z_ei4Xl=V%U%ZL0%-uF#uQ3)db);C3_fLSJ0O54Di{ynJzFqm0$P$sJR1qXF{8$hO{-eo?(Sn zR}mUfw<{(2b%&|dOeWJQHSyP(#No&B+P*%1{v>@k@&ciP-DLSPpWdMGddQql{miFk zA+!5-s)K~q6bcA3h2DnR$T;JO%mc^GITpV(i|RaoTKR`a{tv$Gf(p8rKdn69phGd9 z={k=&f07XGV3+t&^XEz8o7%tX0<}qesrlk$`45$!G{2CsIloef%&+;;^Gv~P8l*75}|zB+7j_yqsK?H;{N?`1S!mXh+YTOZF+ zlpMF7g<;;q2#;>Pr*R4l+pCYa5jlXEGCf67^fV6jk@zbys7qyA%k+s%8q(p!v&A|^o`N9-$QCNE|b)5EEzto}zaS|F%!+!j83<OGYXPD{J{5S5;97_4A{z-9QL)rTej>5)LWy{>fd;ChRVD=|} z#G4_I1+#lSabb#%bHeO_yhKm4D!5Bkpz8W5x~zwF&FBeAOj~m7JLC7>QUdnu2?Q2{ zK(JSbX!5W-ls8N23|+kLaVo2=UYjzW+^UcO-bP1i5PD9K)(7%eCo+{f$)uj_LbY4~tzf$&? zhW8~Y`7{pC=xtn|XnebXZ>*Sq%r%o9g;+zyUW}YvWlUU|+G(Zj=9ET~>doWul z82XObz`fA-{#7{(w&*K$->8&Eul|9UBr2%OLRaRLakNU>;|X0mK$_zTUD?AJgsedW z3dL5R?xU~c_kgIAT8tF)nsa0E-Pp^10Z6yGLxC!QuNYP68^r$Eb%=U`9-A}dN|RH% z`dVXi584$9h;^-)i(|=ZsvEJvtw)UCRvyI!8dvb6?EdbULO&?*2JGkiFXVh#T7_#=iSOKH zIRtW&O@MTUu80{a!v*D9ErLc0F4~u$NkkMsqzBaff8Nl@@wl+R43{BO>BZ8Sqd8v_ znp~<5YrJDL4l^@{RZX$;wc7de<_OG9^M_{O!Jv(qT&EG&|&dfI|I3UB#p0Q#6m#s#q1_2Zh86y=q z{vSyKtp;b%G16-__+N~9LN}#xmv1QdQ3OO8nYW^_5O!8Okab678b2W4D<=Ws$UhU4 za_9qM!i?PX>m(;UYW@aXoWC=DldEpU|EM$Mo~z}gIkdhhTFw3;SoF_ItYhA|XlmR%U2b=b)(+U6K>pe4pQ zJG@a2qQKSQ8pR;*A1uer0lH9?ByTGHbQZ5|afi;-(?DND{R*W0fd$xbS zXZ}$^-%KwY&7(J!6*X}+h0KU4MXO~-tT$&wXvm?k06P-iS5$wZWT#7$=e{aXz&f0I zJ8nCLU2~vwm9Y~+RG{@bSiiODBiW*{KlZ z74Gv1m?mg9322-aSAgj&&3VRdfhAu1WZDP`Q3+Arbe$qfA-aTP8b<*S8!`2kO?7e5x`Bl zBpr!lLU@XJiCnHC70_(65+9m)o$-Jb`4=L=`B>lCOVrr2@1BYHr6^X)(OZohRZ9P_ zqdmn;q7*L88NvGsCJI3!$S}F-J%ldBnxVXmQ-d_-$n7S={TD!p5xnRr{Eg~;lm9?x z^nH7dYDWZDj2wnSWP}x3ldLg-yY)C=b1Z92mq2)^5) zRN~>;u>IXyIF-X3a-Tebq0GYn10UjedN*To6-mup0dlzmcI<m_a4?eLR4e&P=a3{cc{Jq1*5R{&wiP9Aod(QtECd3xAIBGHR+-DZNP%5eB0K zFb*9X@2Er~(~xLkGSNels1Wj#M9-*12PILqaeE?B6yYMb<`EhM>0mkky^Gv#T6UliSq_;VZpVM2ldP>@djrW zMsS}@FRV54Ro)X8onb~(^zqde8-|dHK7P6sFJ<#b*|!u%Zl!F+<8Doge}jK-@;F)E zb@ZP<|8qJ2>((>t^n^6E8|-q)y;?W4(z+`? zO^8Nv!B~d&nwu-6MnU%FX;=}p5vbKh=r{2q-%RC__ZIAG-1@=-=?|IyZ!Tl{*B>t^ zmmZtHLOL!f2He;P?^y3;y#=Q*3(@%vb_OhEqn4qo^4oM$BUz`F8>JK-E0CRcxIxK?)>1)1iM6rE#%FkZKDY&Yb&l z?H3qE%Q8d^d}O{Z;c2`N@aD|hVMQ4H9f2YoA48Lf*R3)N=YKB8Dxu9U7g)4eYopE3 zrT3N{$kE1SvxIOC!Wm}>@TFFR;UOSae525J@zxuo;Cr|h0%)z~N2-_)lr)F;YawNO zp)9+KTDTDGa$4WhQPe7}4_mEg$&@Z=ry6+pT8L~V{nu{>L>B7phdHJgf0!fC7^(s> zFh??>P?dohz%9CgEA)k*2}z4sGEu*}HxH*fjkvhB5ILKP^XRegk1QQ z05GU>l&|1tID}e>&_rX6>%NM`t_aqsvLMqm)1keHQ#g|ePGE9<-=jZdP!zt@H#PGd zHKDifERXf!h}C<73spF`aiXe_D>(0aH#(S}_MPs*d54wI6MR52#}nhuGE=Lqrm^~j z-mZ}Q*K+ce<_MP__k>Nv%R)!!nrg&v8^I%3{tG+*XblNJPFEDJg)zQm1;33Yjgqap!ws#+8VC!pf_~HmY^fr)Cufv4Np+6u2!3k$X&rtqZ zdP?(y6Z%E7W#Ia|o1gIc+)Drrn!PfVajRR;Xo%%r)i*~LfH#Y@=~gI?cZ~5nNJ@fP zwY?L^urZfF!kl1M$>TzWG9cG_%mKMT$aMY+q1KKAl0CFfq)jXz+`h3wVsUB{%+0#r0q4HU zPY5R$-XJ%36e7^bgGOPl`YGIkD{@db@2G1B`2R0&?*boHbuIp9G6@+V;RGcRUNS9wtW-uBkEx3~88t(8}=nn@%N zP@Yv#Yelj34C5nen-Hv--*@dZGYJUR-uwUj^Z8`XKKty)+H3E<_S$Q&z19Tl%0WQ= z0IED)#&TVPw)^sZSSmBZ^YcmT3JfzU=eyRjshXE>RL;YzrKhD_`9htSk4L1IZF;h8Eq$rxd0O^Rj8AJk$f8npyVkgeXMO(_TI25tcC=Gy5*>6&Hy(SRsYThp`McwdZRj{NaFO0q|?@U`Stzl0@?Nbi-H#mxcUNVe?wPR|7iy=8}Z(F(mjEYvofk>NSFqiXnCtUf%| zS<(@o7P$<^wQKRf_Ecxcx;}np|v^n3Qen1gZ;EcGTsLm2)@d< zf>%g;eMvN7oD9h9N=___J@g>9#tgw0!-)c1@m7k|TXwfZZ7k(zPem1ybU~7fH^I@E z`j}qd|8XQ;`f((s$IGW~O+2KqAVL#+z*OVN-6ym%8(URtr+M(=cNPOY5kO)@W3FP{ zjOHppWFBH11`$02_pUXyviepxVk-VOAL7E8myFmSgql(ixq1w9pA?6$TnS2{Q&pjp z{Mec@jr^KQoQwM+I=&q}6uO%KYh1STa)vUb3uxNb0s^BqIc-L!r;Sje-Fiz$eSdXe zOnrZCU_^cYZSu1!ID+9A&*o<~))#j_T{{L7iLjd239q0gNvl0c()e-@t>Vmd72cK? z>-$RrqvOM8?1>E_SLsqd2~eCtK5dhU7xXy?gO})!r6=2oqi4!c zP|iq$B3_~QFm`sTM!$eVw{tt0VZ*)JQ*G5Ho$+%b^JMglkau0i&)E8-di`-b2DM7- zqIj0hG=py(vHD6(e}#ddI+E-0R_@tU@xN(LY#l^c-*y$q#Z|R}M#ioVFlXbCc*syb z1M?o~S9`V#6#pU?zemgC-^BV@-y!J)U8_d93kTWzgKKT@law#r9cN>yaB_YBCyZgE zvPbT>%rEpdm&V>gL+0Z%>67|Ytw3Tu5;8M{^riv$1kwvR(HeKjrV=Z5tcKq5(jYU& z@>M<)e2W)@))Ceke?}VVqKmixHZGx^>u1@twi_)rjHhBe+KU4`QcRMM>=fUs4v*Bs zD>37@c}Ki-tE|QG8C!?TV`_~sNOEM$R(%<>A)Y@pW~`!=B1j4)rE^JBlZtn9CC@U~ z7ZrM2*!#?S`OCjgAfPk*@pS5q-01Yqd9Y;B*|=*SC7~sRv?g_YB6C-W_`R~I%u|cX zJl9$%?g)EDVo}NUCP%ug!qpdG$*|qqtWmJ9^5x)v8Rq5resdng3J&}7d|?tt`ptcq z=JQo{t(|2D#W3YmNM<4cc^Tm|7w7vb#|PNf%!j<_r=TNbPY27Ar7>9K~xD&4E0g1otF;ppBWOmegbe2A9;19B$9hL}Zln3Ois?bA%>- zo1Y81X-`?VxOJcN;EZJoPZC<8@YJMGe@Z+R4u#Jqe+oVf{^C!&S))X}UuOp&Jq^66 zQK*VBXr@aTfNo#d$j5}K2o7B$I0QNLEbjuusT$piyZKLO^ws%+-%6wPKS+~ldi+N= z&z~AMfucgCFamqZjmQ7^((e;3qstOr;alGGng{34d3eGqg%t?}6jpw(u#zUVM#X)p z<=S4BlAPhlq)%}fJDwKI6}B~xrCeX=xKpsQfWAlXL&grL_A+*mCMU;Ei5Dl$i z895MNzYMm@5%$6)iEqG=5l-Bbil8`d^Dr=agBnZUb(r4^$7EBkKny)Q$3vKI|j!i#Tu0>^8;+m zRIwmvi^J3Vs<_RAvi?S}Wh|vto*H!%2HKJ{j=npQiQNhVo)P;2Kl<-xwCvR9;OSEo>%A0{7y!Z*SG`HDh_QEUg*Ell5rLFb4F^Hq)J?`$M4rWE7}b+#Q%6|NcqvYK^Nz zn#}eob{hep3BIBXC9BVm>8~}^WcPLnG7Q& z^dO-iTX>s1Fe3dGY|7ZAeKHko>0%~SH;-f{HdN^q<5uV&TH{`G)xxViFGr8r3cMlIal|Q886^uAeW&(Bd~oq_@~#-#Czni8PH( z=Wsd_i-}X${#h7Jv0|6|-~ju=m8@!iLuBWOU#z$M1Nnw+jBX4z==N}IW2ybAwThGD z_!;t*c+SLJ>`1R-N6M_CqtZmjU$HzzbRJ7jFjlOe4l?%f@3Yo+;{8t#?a73}oyFz3 zW0A|AfAphZ*{MtVq}|3p^vB2dbs$y5iob~7B9}3ElY6Dsz47VnrSv)NsfeG)$FP|i z649-8Q#4|9Q}5Oh3pB^vQ#nifv^kMXno=13oN%O`v7 zcN9gnmrXlQWZt8Xz8a{aOkpS})0gOyLd+hRFtu@@q_tPs^YrpGq8x#Xlbg->h2+go zbOxpHrPzm1SRq3DSSA>u@Y z5FrTZPK4kKmR9awy_i07)l~M}ts$0#yV$=5``CN3;=|2-HQI09^E)|eJhAUb%4`-K z{UhEu6v}r72S98Ey)}dq3>h<%JOiB!iBl7Oy|>d9yvQ#ETG4%Pv)fyK+c71RJDe2P zQLK`C4X4ojppzshV96~dpZS80^#2KLo(=igg5s`4ElA?s>EPtEg=cziJzP>-F^3@!+l?y*gNw(6!BlqqQ(~2ISc_RmLtIK`n zeT0vsWVHwi(X;b~Z&bX3$B5{z4kW-1UwHl@6z&+lI*NAJ9OC`3sPCA*bw2d)u(3)^ zPua`L(&{4eTh@c{%jIZ=1-xho1THDRc}^hfw~lzZ5qhAWX2SHSr(qhLn|BA#u+HP` zDk;dDc`vqtUC5aiJ?;oQTF@E1pw&KN4JpI0|0fugB{v(!hf*+JDlqCP80VZ8Ml(AN zWAi=02m`8sG)@I2{FjOM?L}~4r_xctnwi&p-*0w%%NNfH-fV;#l6X;1zq#mG4bE=P zx5f?DIfgoIOn781Gi(jRlMeKI9ge_g4y&kEmE<*RkHxcmp`D2u^mfnbbz}vY?s_3o zJsJ1x48nS$-r>x!ew8Jy6CH^7cm3uqo*MH*pLrAm;ein>Vu?VOFY?7i8O6L281Ae5 zhpjOOr(fu+T$~@+plvP_&-0vrg%=k}u8L615jZE*pA*Qspf%1up~LJ59nQhliL<3k z-Jd(~`urBJ>)OV>@zIe>`$EUE*31bFxZ?~I=G1w5{XKIsf};$4pp4d=FY+Zijl^?C zqBC|c179H08Vy3ROZZ{70fj4Yroa-+4hSE_boLLwb;MADvCraA7r3LSP^r5mH8WWv=`^wSZ~o0&e#@NTbtm34`;xLkcRtlqammN%aAnIpl3BZeFT42BMKiB* zfh#aZzzzTRO;@jwu1@W* zQ+Cdk!VAO=)#=L1Tmkr#LN!fzCqELRq^w=^!E9-}_2Zv2X+|S!M=kFqjTKs17#3zG zJH8p9Wu}(f+r3ho`Bc28;>Faq3=K*1#fmTI2WK!hUEwc}sSAIZjmVcL7~wCw!(T2Y zI5Yg^(iT@^cd#(B(Gk9Hj7l<=hu|TRmuXDawr_9hc54V0!w9;RR z=NpdupuP)S68&|eITw2inQ{Dgk4-Nhtu<{X2ZY~I&an7z!W1HUTPibHcGZ`ki>xHk z>S?|Y;6$T;msJK=A|k%qrOSBV#k*9|;;33193iDi%J{IE^B;XTm_^Q+l4>z~2gy|? zxt7l_<^0&gvlw&u%_u6o)ZotWl+Wf!_a;fuIX_<{Bz57{;AJ&cuXcx5gO}Aa!>dbU zINeSFDbi0H(iTTE1H$Z}MGxaaqtkFk1q5sED8a{q!n%sth8BUe0`Gj6LhEOwigPKz z(=u?HTArsCn%=x%yc8De;MLSiIi723T{np}WaE8$q}CNWHf-bc(6O9AE?&)V4;>pG z7+2QXZtBJK$yJzp4_sA=hl1+8ai8fcMs~1iR^SpivCqkDndVPytL$F%{56Hv z_JM)aqPqnxa~QqYBVfP?-BX-_!rQ;|8A@a?%khmU0k|1IblnXgn#r1HL>9QM^HEVi zfc>Ts`a?6BGt9^35u6jcZ?;36Kg=%_YR2|DILz!b_rynNn~?{I5ST@1K1UkrTUO;B zS&q6Sy4UFljE6-*AL9&bEI^n8_!cMtLbFqR)+V=e>47ijyy#9SgZysus#;pfIllI9 z4**ACBbuE11DAx3Iszr~GgW@_LdPA!O_A$evE8KEE}Xi3{2GfAEZZM{Phs1dK|^DY z6D4i8H0ggdxLH9(k9&$bYZiR$M!PSbmwt63%=EMzlUa4IDm%V1baYtY7O8om{7k2M zwJP3NmhhC{GbfPE0bm>-6jv1*C0DtuGY}ZYFHv>=yC{H2ooA}wtg=M>XH+BuEskd< zJJ4cH0>*fr(wZmILO+ceD4Sk;t2+cgRI*NnK`837GC4S410hVV^aLIo=%sAo)>B=f zdU%|I;aFB+4C?wW1vp!`UDj$G1jH2u*ddxUC)a1MpXyXzh@8hfYDDfKxm~}xM{nt| zkozbIgxKZ?0GGLj0zkAmA4Zg8WeCbTaTz4K6<+k6M5kYtlv;F%i7S_gQpK)XXTAsi z%Tc8b3g=PaDZkI=J`rE+6}TTqNG8xOlI3`rP|y|NDeZH>9!J_{RMcOzMlv?)LRITB zHY{QX$9kzS)Xnib+s@=>u29=NzXHYA&+*k2n3+r?ShV+Pl1nXGG6&Qd42zaWEn2{r zDJOqJy6S|!deQXFW}ZVwAPgmAIj5sp}b``)Y>=a?9t>3DRjHnR_kK zcwMqn^8;sVn-RkrB0Li~%W;_nnps3)knDvM7%q}RGa!d?j*G5YN3XlAzc7kFd2pNr z_(^M;Vw7Z_A?BmYWxRd;pBAac+s_yjYP65H$2PUf2Z`fa7fsl+=& z>4BeR6uAVhlB#ai9(WI=XpOJ(TXoG^j+7@NJ*(2S#uf6MAGos0yC%QtGVT6F^3HcL z9E8$Er=DDM^ulJHB}aFM_2OoIW>_zcT`Wl#;UQ8Ay^$hr(Hh4~-16WKvR3GB^e;Pg zQR2Z!l&=_rCYeDene~Y8qrNCDOmI@BxZ{p_GaWv9C_Jwe*|;nA8d=oRkQvM_Yi*u4 zGopX=bCqHEkn|o$=e$xDT1GMg$$75W*I4X3by-!{)tb*Mv%>R=Q@Ny#X0iR|&YV%XJ8+#3@_1GK zy^f`U1u)1)w2PY2Ib9M$_iI3Md@0B##W(5ByB!Nmph81xZazz&`)tZ(wDLv&gg3|_>-j$$c zC8$~H4zC0?D`$pRmc|alj;PkpG9ujSWdB#$Su?TK*SA*>9d;X)$JUPNJwxd=?lel! zq38)@o!=4*znG%i4VfvF0!Vq#X5> zJ#}G#Vo5hb!!l)A_818W#VL50w6ugZx}jdmMqq;0b#RRJSG>a}1xZJ~ARF)aY{f`j zEenM(Qf~DtEL*5BiPsjc@FEVPym0&)X@2y?AAS8O7Wh@&FJhhJxY;bmp5V5S_+YpXjz z!rMAQRaPZqUU;1(qf--C)^in?gBdO`Dbqn4UHwCUIQVU(S~b5Ru*C=mpSEr;mr{07 z3YwsGq1*Nls`)mWiU%`7x4p{$n^3;n@I4r=7XLDvc#i9+-iI3FkqoQjgG8c!!vh&| zHV;&3Sz^sOqPF+O6sBL~`$f`vq=;@?ig-l7>E@+Ldd{JAq+scm3N+_i+0y+x|2wxo z!lu}ojSfFFd2}NCu5A?=iT2QkqwYQc{T|L$#3K5T9j&6c#_}kc>e&O1r5J);Mq+x& z8(Ic@zP)CclV?&wd@@Ns*i2DqrmKp&5(Q_HE|HhVXGX)T_TYht50=?RhGdzq9#LhA zj;J+dBV7^6^Gc1OXNswDn|vkee2Gd-e@rD-Y4;eCmemFYr-x+lp}tJG%lh1v(w_`) zQM;p*Q_{aup?&=#d`B9JY=8@J6*Cuefh*AtTobLojAfvTbiOq(PRU0&r0cSr7bvY! z&PY2>b*(3Ks(Z#|oPsHwDIG;XcT=&ckBM5j{>b$2f}^MCMw&9K=H~M=JdGW})z(Ef z;*T?$oZ0f^eQrZ$0wOpo1Q1Hl2# z9_y#-WgzewdHD`6Lx2d&x1m7H?5f{Tp0Q!Qr2XX+s_Ni~t+>|Ah(##884;Al?7$Hb zR~aE-M#hHelD0mXR@0v1gWSm)u>%S34l>;GlrS*jyPYmyCR25h^|b{GK<<03Mf6~M zO^Sa<+O#NMjO0jVsq9!k2Crga*~DlVQ81kBUbHwQZjWVsg?2F7^`zH5p)pWgE=VbP zkXjtOgKn!(6)%zxt6({5qtX&ZE+zBL?N%v5%!h<|A1964a!i87#A#bP;|G)bVtXHk z9205fTOMfE&lV+V79-W1HwL1mZF!GAc$95-XkPw+){M&`s>u|39Lmg$Y3g;4HDNK) zky%rqdH%?Si@nHm&=!yZ&={fw(Rys=4VT16-j5gtq18Wq+By9xL&dG zGNIo^+EX>O@1PYCm?>@9*HJ~S(7A5x*JiRq8oD{ z_W3uSpFvlab%$;{oDr_+X|DMj@}Q~Sh@LIIA!ozrulHD4mrFlrO|nHb7aor1E5R1- z$a=yH4||(~95KQTE#K+KA5w*L^(dukepBT&?oEsRVJF&;{^cTR8*3y+&TH{z_xM=N z4Rd6(fI~x3ubYO*8BaCN z7js29$&6ih)2YY#UB4I{=W7PX`EsID<6N!J7KmX<9I;Ii!)3hoX6Idhenw{C+->7P zc%tCYpEThwa<<8?>bV)VKyP~i5?wuFWLnW12NK(4cWhOjmm$1FS!=li;|EA-hqH02 zucE)+m-d+1|8Wfj&g_<3J`a9_99V+b>gEYwJ;hf7hkd99@6OY>9)zCYe!n(vzt4%` z=B})=-7z;1+%NBq|FyPeAw?qeXcbyX~%o-cJKIm zVEB%Y4n~_=cN|+Al*?9b;nv^aqTJ|sZhZx^3v~%4fwQHq;JdN^q%g$I+Jj9Jcui9$ z`$kC=XQwB_wIGr^;u8Q1-kb(XyS^K^dXjLB$FLQ4Jp+z9?I4p*0flx#SMW^*lnbC> zq-}sch;wBwYqTE;Sf0eo4nqL_fX3sTwcX6V;%dPs`U6pg(q{#gy{#NBk&n@eo^qGg z_#+mXvhKQy5nAK7WW5QsWg0kne<#+=Tj;eZst0JL@XpfEm;KWY`S!(YDi73X^Ij_J zUJ%JzQgYWsweX)3|FFH+`v+G z11r@H?%0!HqOM|mu+*ryp)fc#mBuRhD>HN|AH%NZo5^x>q4{D=G1zEdH5bM)U&2OF zjF(6NZ-E^=@Dgo4C+}|S>F)~h+{ma?Y135&H`rs^qf$aAL($te0X}sA9VyEk9R!j90p4onK_1=fUI#;0lxC z<7dmdV+=C(4JV%ci^&vOPDqWel+k4!u9HOxv31$oWz4&0k!k!^WGFt*t4B6mry zCsnTC)hFk`{!VBh=kABlAz&kS={=Uvu{KSz`hX% zn3;HMk(>Qu+5ptOi)7>SX>s{5+Z=^U?wtrK4I7mhl3|g%jun62GR!o9G)3b3lq&8J zg!-H`pv~ovd^ywagsF%*g3tOQS2(P_b5j`Q5E)d-zU@_`p<^#$8@Yb-(np3O*XMk} z`qt-cmc(yHI`Q~h1U(y8;q>@9fFYG(ony7+a`O~%h-+7 z{H(@=Iv%q6*|Q*F_zkz{z2-WO=*2BKN(g!0=FiGy`fRSRAu74x^)#Ds-gN`qmHtT4 z$7-zTgzrRYexW?~Fb;Vfa{iI zZogTLiXjRZ*h62y-ok&gksHM*cZvb2paFi0>pi#>>YMEl4!8w^>ZW!0p z%E9eNaVNEr%=%I#vincr4Q)ji< z@ERsYO!jU4Mv?F9dS6UOuxTFBo%^E4GtIWBHO0AiWm}H7q{~iF(jAKC^u;1oqjhs< zG?8g`N|IyNE3XYC5L>pEe9+Lb8uFr2_r0SYUUQf8g=+jwQsT~NY>IQ=%AGkS@9B}| zJ4xx>-4{ElwvsNa7>nJ5^&Amq1}5>gGWq5VjN%yYnBz60=Dzsjp`)3ct{r!x zY(P%)iu_RjNbP}ngj=eY^&YC5xWBG%e_iPH(nK^S)8D)T>!pGw?SaW3PgIAxjXM$D z&X0fKO^xn_(Wx&IC()m-fy$@ONY#9lfHjT`g2LhB>=c9yMdJ+V8Uy~(L3I`qg_ zCHdAVP4TPxV(OA(^mw+}R>ywNo$UWxOS)peLxgBvk;_qD=-64>1OG<3fIQpLdN^Bq zs#T<|?pWl+G%M{iLz|@_j@?E&zj@~(#A?4>>CV6<28KVH?xUIIOP6U)cN6fN8)_rh z+=3R5EWgUi0+u6`fi-I;+&de;d~5liQ`0%7Q5UkNS5~-LX`b~}ObJY(M;&!?!JfmJ z9C%&qKZIe7ax#6P^Blp~r0DIR2XnRw2Xl|AXMGXN#%`+{JfV2-gJfBgFj7#*={{Q; zyQFY_x}Y~yLARZzpn6r1)+ky=pSrMXPg7V~vM^M>64FEt1-9fCiG2$J%olpb7NjIw z___jYak{K9ZS$*UN(_>QcLzpjYt@NTVGwcg0=(Ry?MGbFpA#Thhb)zLkRLLBD1k_En7kq!CMRzOKj*vS=0;MSmjK?YHiNSnyQuR2n-!TL{sZ zhNzIOhJKsOWzZZ&K@}aVtDe}}7pv3z_5u_JW)7F8mogz`hauxK=47bbM;~T&ty-*O ziM+vhCMUptpIwQ0n@5Ha{7gMpS5{Yn=ALTXqO0sd~{SIH%@^SR)W5 zn$6!Kz;Rfu%-0E8qgo@Ai-p$sA|F*J*$akEYR(l>^E6*V$8W%8JQG)cQgEkNKCeCS zAk$ZC6c=QnqtmrUaUvEvI!SB%lcX0`Ad(8qOa+#vrZuxx(gb|+Q=z7_7r4zUFj+zy ziV1K1#ee_zxqY#H$CHCNl67_Ta3)Mrr21*i+ZFpRShdr~nhAcK2RH({hwuRX=un-= z1E^`2WCYYaQ_6m^c7Rl!Oa_2HehpZCb<~ulfV#QA`5Z^~r#vX%Tq<*N!&9}%H zRIBhOuAHjyJEd?bkr87TnjC|y8c;9g9@p9b!GC`_<1h}xK6b?ZrVu8`?|Dmn+f6fzg>&o-mN zv~{sc!jY+USEx2L)tU~CK^OT=%9Yhudteu#6IWnSp-Ha5fj_3`R$%9;Xx3{mvn;#X z15I`*LzdF-sBxp#@xWKpr8J(hl-L(V5G0F!q@e2NG~K+G*i=rfk;^YIPp4Y_vDnMl z&kFTdYWIH)oX7e=cH_?;S8oQHk7pckDNq+OvF_Gq> ztILmxJQd}S{ZSbVW28}sqCaf=QcH>WhhQ!i>gEexbK@9p@yHys?t5R&zR&8BD-+g# z{gG``$(l*>BHJhN^@>}bR^j+{_Ul)W*o$gzZd0qSmKiVZnUaun*Y)kI3%!P-17}Yx zm@$ntFtv8|s3|Ec*Y&}XEMnP_1;el!)~(1u!!dhDv5Q3B%INx{SxDM?*^``bNY9`?YNe9mCsMr3wm2#Us>su?R8r>a$yExP6aSJq zD%4*Ud+Jj)<8kyo?PfGk6V2GTgl0$^{z-*kh&Fs2F|j*9hvkJ?V<{5$?4xF3Zrp|$ ztnGWz&lU_V^_m`IBA4UnR;*hwxEeY(HZX_Vk%0?C$7+M4Majk4 zYB&%poE6j5=&b2c7L-J6?-+*2wT5AmAVsW)wMAL8S~6(0@b+pXHfcG`ko!bjOwqQW z_*lcW)iMsq+T?CZR~^>#n*N=xXLi<@6VTdqtoh>BFW~=zI~;xS!NJ7lx{gIFlAB-W z?5-=pN_Tr{ogSX(3$=4C-(kLlMz$~PXxhJVm=v=14?gpZn(&19Satv~2QJdW^jmNo zScYoLM0@J)zr=HCs=wqA>1x6ivh6Pvc`3*fv~hH#jAORfR616_swcXt%~xSvuJkQ$ zH6m3Qv%EmT*%wESJP0SEqJooQjm$5NJ2{-Hn-|WyNJqpOdN-5u%$J(p4sP`=M=F{% z+~>&j%@`hA3u@6FInh+pDme-E(7o$8Eq%B`PD{}$u6Fy)Cm#ZJT+s5HzxocL8uK-O zxSGdaBV6O+0uVdSaZn{r0?a3W3yF#66L?etIRqXdpooHA@l8=E)f%4=vY~D9jM*mC ztIio^6NDgmm%vyFpp{fzD1j^j69}-QuFfZn zy*F&AkM@cb+^;0y(dz+XjD$;v#GZ4VYL3|>TQ+5g@jEgaBL+&>Q5nS3_63$14aYNB ziPn~5XGRmtFC&btJ>ZQ$ZW0~tv2IU%lrTyTgBMZm@F*LX`$12q^I1+g;^R40wti5o zYD&uAw9brIUV#9I+OZAbGhbF&eyE0}-E^8!#;MRA)sB2MtyD9P191FI)r`T&TQ~&e zRK;vh>|{JbWpYH;?G}6_SPC)V&5>ta*x?Ih6=nJo8VQ>AZvxl_Jq;BCM=;xZ@*G)f zS=Zb~*>l#o4{4D}|3_{cG}y|au-{y0_aIB1#zwb0z*V21tH#U`0|rm)EgW*}@`?Pv z5BY4Sb0`dN*tT9_!aGCsGenz7ht~GU% zA)@QCKk?l9d8&x*C-k^utMFSfv1TA?k)w(L~`9kt{NWB%w-Sv=Ty%0;z-ByX|> z1F;J+KPsWs_@`>KOx{yDco88KpPwPyI!M=c4QNenr- zs*YTi?0Xzh~&gB8kw>1 zDu*&T+E>;<9Vw@hgRjp|W8cB06XUc8UkLwKf|%8wA>uCO9OMN56dUKt;mk>E{i*um z2bX_BU*yskw%l&svj2Tw?4J4weIc8Yll$V4)AU6(!lM6uU*xFVpV$|sPUS8UX$hJQMZiQP{I-9Zs#uRK0r&^c)kpI1?!n8 zw|80pohyp%ah12m{3~mVzvM4ifLB@1@8ybz~F@xGP&;<*+-&c}SJU^@?P7e$_~qCLwE461Fl0 z8#e<4#D7*sZMqBzS!0rAyoi(IGC~P$@|yp+54~6^YwH+KV>%m^Y-N4ootWL#ebna=cenK`>)lb z*p*M;KW$*k#+z-EJ4G>0*FTwe|LmkzT);AUa_{@XUzPoi-)xeHwNxrWifJDfCMSb@ z8JrAt!UEXifx&Q671)A4RTZ+gq6&Ff$N7;8MCi`wmNn--7*(taP zzu6b>EVJbX@PXXDP@dGzzfj}`|4hGwJr|lCgL=d#oWrj|cY__UZ6P|T)-}$m$8SUO zOmD+%an})>Fa5zj{SEk`8NxVoez=f>lbS=;2f8e6!CF!F5V8N^q_PuxZzNJE#nU2PBr|JoM0`oPgH{ciI3 zS4DaywV~-K^^%Dlr`B{cOrLB$&ybcHB}+@=pOaUo&bhWX{MqWpL=YtxaRzh4(}Ja` zfECZTYShbEUaZT@M9Jk9bVquWvdE$IEgRg0U|5-MPBMxoosA~%zpw>oQ<^76T3w(z z2x`V#Z$CAV_=6PBUHRArD7+yNkqe9{vieJ+^RY=G;u=Ry#FtqIxCnGmfWS)s{^0YH z{nwIRf%-JML0gxvzVk2&olY@b(3R9_W1OHSJXGHg#JrFHfjQ%3+mEv6Awf{1+>OPg z7rLMRNJA?Sp*R}I!%tl36PlVjtu)}*>jTIHIqOxZ`LjR+mpodTbU zW65JC{y%pnr5(n$Q)^n+$HjRwumwaZXUdATR%6Wv4RQKByyOoAUxxN>?0vj zHFuaUHmtJ|hCT2ZTx@oQUb_Tm1iR!LVu>@2vNq#DSCX)B&q~0JWTSr2d>nilZ;P}us>Az8H@5y%MSz^VU;fH({4 zs1}_#h*qQq)wXIkVG9A=VZ!LBR`;Mdc1Y+viEH+TtN)1aA!{MRkkAHqhRkl;q-*Wc zcFGidr|z)5XyyD5at2IK6=TaXYx*+2nGX?_5k2bSN&)Vb3jY2pT48pX2NDJE6QqQZ zl4@6?;BndqPLg-1QQRv>D#!+eTeXpbx=Y>YVkQc{MIvx8Mcw2}#wQ9qQYg_bDQCfN zqy{ef2}K!}C^#Y?72dH!koQ~zzBgqh;j*D4_5iJ-PR0P{Co*H}cr~;COOl+tUp?6$ z7bc0+8gdBNT--tPh0e+Fb>iU*q(Q@wicgR|wdaDj>o1ua)I5!Edp1w?Xb+?5+8M|4 z6Oz7{134`@+#yS}YfoK7G^#TH*dUxh;Ea>L^U>4T8<<2X!QWy+-W?dm@9^M%N+H8L z<|h<)w#RcpZ%dAxP8ifi5BDfIlk~&0-P_ARixx8xR=Q$ zU81!`tM6YD_*;Gd)ZpyKwjdSuiZ8`09rYDcgV{8bn~nR4q#+&qtav`gO@LrnhjR(7 z0BDBlTLMDhQW6DSz%aLJc%TA=%u?-Dt!=?Td6zYMNK;`KhG0V)k4>!4t2IfL&Sga@ zJ$4pR(g2KqeI`Som!aqpQM@6d_*xOgFOsfS=HHgIr^eD&^2y&6@!ne5wR$eQ0f?`! zuLq^~)#n+}*PIyZ>w>x)eS3XaFr4Ibb}P(S{{dxD%Yb$588WMFcdzznO6vQG3|_2h zsR>&u+vWGf-P|>d1*OC0SToj|wsjy8xp^$>*xBfmnIFb3Arzp$m^Z0G$d?{vUbJ=xk5<#X+ZGe!wg>(ByF{Tn~4hNxuEJn3q?f*V_enKHswLTlmJ@In{)Y)pPqM;};ql|ENe52qy z`&k}z!fkfF*3xvH$#qB6=~=GRJVVN#8Y-P-z2Z`mP2`;{1F37t(I8>UgV(IJPS0 z2ekDb!h%&M5QT{HzuX33BH1Xmz5Sx3sg_FXH#0t2@s!= zB9(_dInxNfB{iRstR{&_DZ|EPQb*Whm~*e&Afp{qr4Iupb2JH7K!Jlj8&T*kM-IY; z2|}fCTCGaOTW0jFMY2X%<_fA_E`#vtB&K#-2QN$`_sWxtkn@@xrh=U139D>fP66cp zj7+FqR%4r>(^@Ety6p4SA&u6wni&(ji62Q*&d1mlyhxk4+l7O0qcZP%>ludG)&ZG& zA=`&@`r8`&8#D35Z`n0`5R84ssL1va4$3$lZ%trY1JiJ;n;d*T3R5#xlB$ALosqoJ zL|E$urbu3%gdbG!+40D^fi>@=`|M1yD&Ax5%m2yqBLcFZ;AR#ZzN;*23hh z8&Xq?kN13@i>xioL#DF2o5GeQi%w|AZeqSs;Rv3=RPP*5Qvpms!ubGOSZF8P1a-eY zxmWP8auXq}d=2BanmJY716yw;S^0&BVdvf9>S8#5YlK~)XDJpMvVX_OW#zjZ_%ULX zqG6G|*VaNq?y%{}+Y(+zSQ(%YI}p$^3v-pJh?MQ4$rA-uh~lQHa+gD~Y?r4%yy|6%j!gdA+0;P3nQV0}lGF(OgWKpCucn6#ms%2(q@QbGg(lxdf0my#Xjs(qKpjwUvb zw;ucDpy=q=?vII%TC!X?_rf9-JeDmsdP~GcFOqYe<+>w<|Q}2;nsw znn~P~$Y6C`LA>2i8^Y7Ajc;vJ`8DA%hFkx|5+wqTb5F{h|cRQM_q=6(A@CWI;F zxp@2TWT7n8hr$m%st!sdzFDA-Ts}{wiYzRy3pb0vL0$>A3GIp06soVGM;;+thV>aZ zA84ewTozG>-0my1kjMxHMyMh44lGPa`3kpS?kI1Ubv5T2_S{Id*FzgD+RVQcRbb6_ zXDDYB>6XfuR0|J>t8uXGkn8!m!Xsx&c_x`n-zw|xszvH$k!20OEVEu7d|6@b9(*yZ z=-^AO_4~n>b=J?)FX4J=^0x=yTM1eZ@B<3mNfdx;Q1F6m9g!0gc?`U~p&~1Yq|q!C zf)`o;lk*iK0NW6LNRR`%W?FwhMrfG-rXniyKKe4u?>IX2+OhWN8L3>NXIl>=m@>jY zwDY~p)p{`dw~%B_i}sT9+RV!$uh{N9*ZSUhl0xl{CYyP06`aq>kM*32+-2RVSleCJ z@0b8~2c=*YwlZG zseq3UWpLEx?5!w z@asuQid$4gy9E4QR;~@cF0)HSQ0Ya(nkrzPw6Aj~3jXaog8K_8Duw&*SpxW}aId9+ ze}^O|;a*d~zkTKjxbGkxz&}ps*tmZ}Wfb7sNeS@(sVYn2{z`Zjk~0heK;eEH(Afx2 zb%3l<}PB1LO3CLs$#-tiy?zzY6{T|32&v))7xjjrPU|F_ls|0%qO zo#}C&<^{Mpe|T*bbJ3Rk;Cebp9tdaVOJal+%N;@ecA^fVF$OQ=WI>_5iy zto0Oa8_Z{=Ra`*2FVpf4+EgnZ#Cz23Xe=IbqV+ijf;#V*MZkkSZB0mm6Wc2sqfI3a zyAsM)p0yp~t8TV8tjmpkgwT4bKa%&mI|Uj<5A4ErS>L!qI;M+72r-(`g&JnXqvezl zJXglrFl{pii=1jIddgwOg_fcRo^)?vMwJSjwpkN%N#)jAP3kuF)k+|Y)l$53^gA}5 zr&qqW{#?_Si`CsGlwv!#qmPpT_XaawEJV(2{jNr!K#EKsXvT8*Zk&8v>?!|}BT!B; z@sPPgS3uYWB=h1T8G?q;S`}g%xz_EJBS<7$(-F|3r_v8x)^Qb+Nfb$*wE=cXzPn zG2xd9f3!lz-YT$Pt2C)%>xH-p-Q^^XLlUHowxkgysKG7>o(cL9)q?fRvqyvURw@v5 zIYYzowoMU6>Z`up9bS=bWc)Sy;|;P%MlW zcV?=KtveUl1!snxxHr(g3NxQ!c_|lb6qQD3tMpVx@J`GXm2XQBtV5i7sqlszAod3G z=w=z?d#s4{QNqd(p!*9om33@CLyT%_w_0{*^?*+uzWb z)Yvxtf|}1CgZGs;fp^J|le{5v(?w&!pWGLbwMNdPmHf%N%H|`=(>!|i2Va!leaWcE z42(4!gmY=ic8)$DQ%Y7T%`;9hm$Sdk>UnaWJ^3onG8mqrd2HVy>@ip7`!FRxRIhH8 z*;v#ChB)tTYV|gAu>X?Sax@<#S)AsV^I8EblTZ-&8X0{q}8PdPrlp4gTLi}n&< z|DL1uwe0$6Z8PatIAc|O+6q}GVfQ^Qb+7**8K8i;v%`75FS6EwX;<+9 zDqa!TvU9ob7$w2awcsZhHR`jp`y)hDqt5HwCY3-?GMW+_KTDCwS$xx?Qt$z*PDiym zbgW{H6W#dcVTnELkbKct7FTFm|8dW5xrMy$vXk>*qK&j+8?7Q595acL{2m=QhB=Aw-fFEO~R8_7C@ZI^L- zTcL;_oQP+lLAGE0x2`|W*gEpyPgczxaquUS&4~rt!JC}B4#Cn9E#jnR4*t($|F)>^SC#%5Z(Q@$U=v|a<5OD*M>Bx%j*5L5;bDY&l6f- zFBC6PvM?xk*6&`#K^>* znt{=KvtPTiJ=8kf_znl@Yd>pwaTKri%+N*8XtmouX*uI$Zk?=YIt&%`M_{oTf}fu? zkf{G31wBChUg0q?qilcZVjOW}+vi}@%NsdL<+Lu*I8f9B%atZ&(Vx34Mu(x2}(~>S2KPZY&`iR+2I-P48!@75qb|RmMq68Cw6jU4LrML_!4P4I+H(cOaj(c+SzC#`J9kaLt zckB9zTgASG-p5rRY+ER^78%!MGHAUV`QWCO1afOhB}iR>%ecn5vaOc{-i-NKq5mnW zr^?LWnEHxRSdYk64t*=L3muzRK1!r5&AgUALFf`O4q@B|H+j~i$#lm0qE#8b-0Jj zEUiQYIrp8#$*j2c(L>xg-&6!AWp|S^)lCZ+)d#GH{`66z!&ypV?h`G)Gz&f6rrwR* zQd#NvSQc3`p0jQuhjd`^5IXB>9;t)#rq+8d?mMKw3}#h!Y{=xmu@|vXqO-p0JW&;1 z&fz82S)7or=dA(?@-OdDD}WSSa9AM`qjrjKbf?{-ar`A*jvRc!fGv}=v zh$Yw9`wI1>;j7_Hi!jn$)8f%%PkDR#Gw&JYiYCZxcl|=9X`sj}eu6w+CZl}9yrfKh zpcDh?iQQ_x%LtrQAtO*$!uZeCgm*FFV`%YYfDvz^D|GB1>o2Xe3)wK&TiLTAw?*^_ zFjdmmJbxfX7*42+S`;CG_kt?89o8Fc?Bj?{Y$C$vK_bHaQM+)Pm_(A41o87pl;l}9 zMMEhGLq|<=F`|f!gxhFhPN@~Z4Kv&6WY<>4V648RM$C`5p*odSV|GCnSD&SKu$;^G z2@VjUy2bgGhM)EFg$DisbgmomEoV~~nGRd-+s^CHtHx{0QxrR+7o)UWBkxcK4 z9?2x;Jm-GSZk+90o_m-7J_BZ+=Q#c^@|)frPji}!Q8Uag_HtTLxzA^IYu{@1MzUB| z_t!YvuaGp>rFdx*?nb;oeQefVl`Hy<_Bji(3*lSs@dm$-0jgt39u8q;q4nIi2if`V zkwSK3Ww1rUCm#_$`OkjSrgt^$3-%EfvTI-O4fX4RyommX(6P)l+0~d7cUHGRF&{2^ zlq9`vu3(_XL_NPf%?lWFg(C5IlW-`V3uPtlF{bGD!y-&y+@im`j(gfZ7R*TOIEBMNipCLiAoWd(sAW}pgs=A6y2z^hnM`JH(X}$aYSC6O4>FHy zS+1g9t^vuSO}}d1gNAdLb?$#9C$Q6Y+nfSVSHYI*zow0t+utDs3-t~eKtYd;xTcXy4a+#RW#yi2> zC&(HfyNzL-VcnUGznA!*5}(Na&Ekp-bN-m0w`MUGm-jR*81oew@EnA)O|RINkx#Dp zJ0jn~Fs$_>LdkC!R$nj)FBnp;@)Qsr**V`WZU6AL(A#P&~m0iXqs$ZmCKD&@>bVD z9TndeF`5$v$M4rzzk9iv6)5_=*7!XEm2tL0ZG|3`x8;RKWL4JF8E(SPKUb7%{&Kd` zFYF#jRL=eWGH`z7+;8$={&Nfb9V1kk2wcYRKtS&u#@y%~=0d5_9GNIM=K*z4#Ex(W zB=nXgvfF&li1rWT?3vqvU2s9Iat;&r?kjE?*6iI^E*HhrZ3o1R?>d4%5tI1>x;PP z$%#+ftYMv=LWySIh8A6D02^zwRH_qCxL_a*>3!yrEu-580nM;_e#r2A8DZg+=aj3u zT_;$lz~oaSN38{F4#_p;xli06D9f!BQO^j=e3qFLDyn3daYWYe zq1<=A`$Ythu-_>K4f;a<6b$*o9Cmxd*>~TBI|J~8ttIWp;jE&q4EI9hORi~MtUXzf z%UtZi&MfQJ960)T-EEBAD+kVQ8IW$TnSBBIi-uJVt46M+!_7m8z%%(b3hgLF zw)f4?xHIZ}+D0xx?1K8w_BF(1TV7)x@Zmqi*Km|mgA8BaOAE}b(J12OqAZbXXxn46 zeW5nj2lKTr5#9G1YCc%otuwTZc!PV*7dnztr>#EZ@;PB5_9J%a8uHce+-r13Kc~hf zR&h~p*w40m^%P&KD zgklIZUi4{C?hH%P7NhigW5#b*rGM;ykMrHa>*X#mqda&?b??n4`W&3IenBYFW6<(oS>j@f01+$)14gBld#6MrBU0WdUr2Gr- zZ%MjY>ihMxcBtnfi}*hgKe<}H7e800Edl6j^S-IxKcuy*_s*`<&ddHi5o^9ka+26t z-k&N}E{XI19RFmq<42H^_ZKDC{gR9P#XC}8pCuPzfL;>k3F1!7{U^Irau@I58;B~F z(k0z48R&cEz-`E%$QYSV**Cj0o{9GV@8;7p4fhV6PtUy8pPo-U`cIxusjvU%`2@u{ z?SvYCnhE9k|8G8l&Aax0iisiVx_88`oqjhxwsybn}aOLp$)|7%S8$l~ih>it1M%&z56L`13o z7wte9=l?G|US4wKnb+TYvf!YkII!d>)xO13vbH_*`o16J?dF3}zxHSKttdLn{_0ht zVj?SgmbkO*xK4@7RB?>QMauQ`GQS)Ii?Q7#UG3S#dRuMoHKy%k+{?9_)B9=^6Fn!Ry&)&1i4bjamI{ii=dUk)XE!F`ll)D-oX12~{2WH^Fv+wTs}8{}6#fmdo7(D5!N~3= z@rvCEEDL|evHA}QEd8NY{5~A<@2M5W_58EhmGEg(=(cwUILP>+v_#J2f5Xeqyok=( zMiGVmA=YXwOa89TJdpOEk{PQ`Vz5WERDWZgp{~*3LQQIyur>;my38gK_jn5(nJV6CB*ez7|EEG!Cfh&q*8{9D)Nerl)W)nm`%{xg7lo z4%UK$9KpeXCu|%@+tN4y5%(QVBSLsG>3M9R+dfJ{Z{akzSDS$ntNCJ$c{p^0jz8)( z`>P{&<@ZKifw9$%Z`?Cl7bD!`s4#S-FZMc}zm5LP@HX}b#<0%6F?@BN)z1(Q9r-Z! z3}2s;LFsKAz}}9)LW&Vu=)Va@uE??Wk`Pl4+cK7c4))>8jJX+ZRLd^m>EU^nY{b_| z%UFia%bxto6lrGmug+$jT@t@0{UM7FYcG&bU*}VNPWnUqPg641Op_1y$cN(ehyC(l zgnU>eA2bPFK}fqkdtAwAY8hQk69!^(8%FQtUSeZkh7JBmE%X*aGGyvzBKmHYc75-( zfjaH89rtoo#Tub z@guu)b64kWb5pK0PJMV+D`v1Xp-!=+XdNCBJ9Oj#AzR~KU#grawF_qjrBUaL_K~KL zvUT=+AhgP!5R7JM_cKPCCW)Urk=+~I#7k;sxse;`+)&v6bRL%h!&hZ-(3>Bwg*M6~ z7vB~6+`i=HX*OD|AtTE{RAw>?$)iMNDi0TSD!F1vR2ETL$y6X&qFh9|l2H%YQTa?Q z{+)D7PV{hA-`+Ca6*`=MzUbGcJ`9f@b|yc#PWUhaYhK9@StooL>1<8LXA)28QWkDt zl93J~tzC>FT;#G#S5<|4x%s_qS?L!prHR*AnjJE7vwGX|(=T|yai?D#rZYXwE>2Ff z&m^ZA-d3WxeUKttPPth^z>Nr2-ZSIl?00Sg%ex~ES(NYpkVnH`5u#;8|C-(4o`O|b zi5jj7!X{gJ$Z$JC8$21}II22-`)d&Uvuo+Z>QYfTq|dN)#Uo@aW3N}8e|GIMd6=WZ zMs3^>Oz2yW$O56e^=Yl4uFSBmGAo6}YNU!ovoFlYpFlF%JXMZijy1xywboupE!QI= zHTlTwxG$F|*tkZv*1YSkM+IBj_Ocua3mORzm$2ZM@CXTK+ToEBb_B8|KG$@>Xaq_* zItfgXpHZUTTWmCp6jBzSB5CsYDH#<%Q^KPpoCoR}rX|=rE38mwZFrcVQ?E6`92DY3 z!`3TJ?YeD!wa{B2gDC^=P%6aqv(sD++U5d*{R46jAL_SMDp&Q=w^PlifOX-F>Z5= z6w7cp%Q3xC`tm_VZS3VpE&C9ZB{I2rDdid9Ia}Jmvz+I8o>dUBdO#s40?tM|DE86Z zmK==RUc%NeNm*y*=I0c~0wjy%=mbq51#u(oIJ+c}P|?fE0v2lR5&d6&qXjC9L`Ch?L?O2sBJ=MAJ3!)6#*3b#qxI_JK+=<8WYfX`A{3zPZm zEM^y?4|hYqXeR_m&~L+(9#^}H!Lzc85!SR_-+FA*U?1qy_F|W8FUhG!K1v6vm^1pg zaFfFgB1Y6OrDfaB#Q|FuWj*<02En1wkxQ)SB$SdivDPq(SUp&rl7d^9`+n=IlBfsl zmz%r#_BC{Gs!t@Q{Xh2JJwB@HYW$vLG7w0@2}mG_NQ9`-h(rUD7|5!o1(L z&rB|WzR&Y}pFdwelG$h9_u6Z(z4qE`t=%;IP}VkB_mb*yBR(&I=QwqLgEv&5ZY6X4 zlntJIiDVNmiR^m~-5J7Y)x|UAYl?iK@ulrILyn;A`VO6$J?doA>0B13`k-dP)v+N& z=ryX`lEl+tj_5h56R974LK$sis1M>Edwh%8_BCetw@nBdf8VVEiM9_ydC`fxkDUsT z6p6U~`DU#XcM>{rkttdyPFv$8@&dOxYH{09i<`ChShYBKVb3{A4A3@m*g@!3>UpOU zg9SvHJDV`qu{QF;X1!DbJdbDJt}I7~ywU<^@;?4|iDS02%F8SkHwAY#RhF);jCyLR z)G=eTbE2%+MBd(8Q3GtJ!_QO3jONTF2RhlGQeSt=EN3n=yV@#t@~a5(4)7-1?DtA4k#DgE94Txt>ZDt5;YjGCuOh%swO{a)PfEx(yPg^LZ}N*63F_S*AgOA*!H z@WqL|Sw9s$tSiIg?di{o(vTbh@|K-c;8KHss8#vSaH497B3*f$*b_vsDYYi@4&9>b zL)5#M0oK0v0_vH2Mef}gythX8EPgTytEmr>>Y}HC3hrttNY-g)WPL`k;!~scY~T$r zf**6YA-*0%7m2qR$-9+qO38C8Ezg-Gul6!L#}cV{dmZAhW^K0BJo(-SG)Utks3(n# z@s$MH|HT!$wN}ryw)WCCQ3ogA`-;vi_t4rJv*R+FC7^AZg)wCB>CpLP&$)R>fos)C zw2mPE8p43au%S*?=CndTcOW!;_wx9=15gmj7krks4M-JALrWV zx@66lRBkR`mlu$q#RsemhtL|zr$ zi=QhxhFjF{;f$>&YEAO|$%{WO@{;?f=ARRJgMK0ya~%Ckea=hzkwG>t1aWH8L4}Mh z$WR#A`7)w(=>>iu2&-D*DgarYs20trM0jg8T5l)vo&#y(9P~v%p+{#|7LL+{S*{(u za_}i5ew0akiO^d0TJnN@P8X$6&I4WN|08$~Eux?&&4lU1c7BvA*$J#e5N1O{nY$9f z+GP0MxrWQB$J)bK{vp-KX_RXI;8gQRsb&>DpaMpNsMx9H69HE;{5NVz^+(sUNa}&> zmU?b->iMzMbL+A7{IN?tSLk{)E~T~|I%QH4qdhzCLa9~GIn-J#)eX~t*=cQ)o@FNT zuAr_sW=8|4N2ap#^5Z!8>FqLyhw}lM#?QEf?7UC;(T+{j8V;UPJ!{-yl9)**bfJTr z`WjiIAg9z${M&Lf9XZRvzahX=t|m6aM=b1ue5sRLBJYc2cc*qyJc+!Ho%6A@8{9)6 z26NetILXerwxi#ZoqktJzq0_5>LLB+I*+dBg8WJ38zmhZh%&s`e&|(^Oep@b12V7l z!4yQB%IuaLO=nzEKZi$|g4Tf=RA2I=9y%bcb;pn<8CDWQ9=M6H?19~BMAtdkF4gHd zc+IJ}o}X2HWGv@P?F{5}VKIRr1Ojm5=$z$I!~i-0e>rWY0RIH5@%sV4I63HJ0pE#( zXv^9;Rl0A2gA=4voY({aBMGZV#UDL=%Mq2OZHc@c)EVcUzH|A7@nxTadBGH96J?Hz zlPTL2RIg|$i#nxA&%pr#4r#KT&?*tfs&i>eHzN&Zp)-)kn<>qK^6oh)lo$3&z~03+ zj(c~i-YxZ<;B@_Usol<7&yRW+oq?n0E}Lq_-h*A;YH~P_;UN)EIbbGblqQuNGlq5 zvYhs^rM>>r-VtttrJeuP{pB;Do!Vc<(aL{kf8laTBfyNK_4~Wvnt(2vCu2b&FK-DU z{VXhSoJ&}pD`Rn1S#N7sB5$^I!=r{Lp_U|f$$k9c6DZC638vN(rowypQJ-;34nR^? zsvY}&6^VM^_d1z96uT$*Uw;$N-5lHBAZzbDCpwj^(Kk~c~6U!3IkC3%38Eb)}y zEI;r>v3tlO>*OwIo;~ix3%RhjJ+FHCsc7WXaA+^A_27+W+xE!5VR!)$O~Xvb?%LUp zYc_^QV&%N|0!mm}a;C}URyiS7wF74fVHK?suKUqnle$ry*{w~El6odWYh@2D(F&o? zR(9tS4jV7a0g=?giXm5?hjrdh%$aDtdM+buTG^OlZ49T!FSmT?wd5eI5j&wVPTB!= z9{%0LyeuQ(7e>o-a;gxX$`X0=W(tDm^h)I}+AP@WIWU@-tK*^~> zPJYR4rjwuPX#8{?>OnV9uL)+VxA6uh`Zai*(>62c>qOnr2>?cvBs%yZGjd9D^Nuc- zQaWST_BtwXO;nxALi1lA7U~R876^DSLCAngwwqzDb-=j_Qo5LV7_im8{T7g zkL^9WLcXGVef^K|g#g4E)i{rg86%6CBfcIbqi;kQkfbPpsIZKQ~ zkx4^3Jc5<2%Ff|==$y&@iM5(gfXHbzo}1i1{54tjBftz#mrO&+Bwk43&+CVX?2G=Q zzQv`zqwe(lM(Mn$LLpo;^KqS6k8$wo$5|rW@|UQ4^iDlgw5D7I0+P*YT?zF?PmX7p zcvN!sC^?mjfi}!Q$7b@Kx;#Ryw0_w5TRQZ^F8t@=L~OEbA4yCyYR09$vY*1MyQuY% zwp}s1y;~!}{<*P}h>}nm@s4trM?KPyZ1Z!)^H3(jV{cti+>Jji)4G#SdlYxl^8 zGNHiPW=CS?1V*6Lf>w`l&k7(7ET8HTzD`DZ4tWKEQ4rj$3iU_wY50MB=%?XFUo}SN z&UqR>O|l?mu(Rt?`QcVB`851D@0Rd1d|Bb$WA6@oBzFW3kJU|Qv_RMhJwJcMMmFi)^09r)&yduNu+ohh zBlV@{NA7KonxD@B=F#(WC|A04J(GcE?NHUcOD1EIo{XL9k4u=0NzP=X8Tb57CSy{6 z{0B21*UHu7AIOed52jeIwonozO)5M2zweYp^;vXqF_9)E5zyMk8)kw)iLmPmIDV+RJDcJ zh&uQiu{ejTB+MZS$)h3A)~jKt8g+9Aw9i4`Tzh|F@{;RGRgKUO#BWwW5D>NtN(P8S zL=oTBIgiPMkgju(YMI+n=X)PGb;iD+yt?vjKyxQFZD#AD3_%v2kKQWMdUeS!q)xH1 zUDzy3L0d9HGmB}lQQJvYT7%i&ZV*Z(1KlbhMhmdA7&k4b0D}2V-nvk8xs-N?0(hNE z3#00n(X`*+JWgK^?UK&RWo3Mp#8=DWsmEfEaG$rY5UCK6|y060_oyC9)4V=-XR| zbGD3a5N484Gy~eK_F@?ZzM$Did4z_^-O(J2Q z=X~(myj#m%=V)xcp7*L#w~ZY%q|+Z$QeL=nDwwLy=LsgBOJQR#+X)LJ`VBROUQGqQ z0`=9_o$N%wx>Z9Bgo^zK*g*O!?GZ;dB8Dr*6^^yld{~5}#mE)k=Wznrq#6$OKwY!a z9=nle7lYOV@44pGx-POVKUjjSR{Y8?*D;k=%S9Fb10_bS!2BYs@&H0BHh2Vy(h2yj z0uiBj6M4DUX!X{R-T?vgRyC1&WF6c9BudN*wPd=^icy;I2wt=HvrrkDD)URL%X7m0 z5g?O0bU^OER|3=y)-Y13j~4Cl#+{ z%N@X=PEhlpqfQ_oM4h07ClkCV%bKDnn}R+h#-A5FG1T=;9NXYzx^4JcPR1?z<= z7~-owpK@jzWtw!EhM*;_Fx2oraoM^qR*YDMzQh(dzemv`H2Ao=!*AhOzTA; zdTRz{1Ltn^o|_1qyCZP!-sjVN)nzWDW<04rV@+n{z-7kI|3nd^<{th=Vg*J`f6^kc zEFLpN516M%^5yB6-WUbQt0*6l7^vA{)P5-0vvT9tae>$~_C8;h`zfzcD~mbO0k zxNb+RTE1eJhj_`RPw28_$Fg{YIo2cDG0haYjnyr^=3j(nLGO5_<^GGS9^RpX&pz>S z0a*VMWA*%utaxt;7aFVQW@P!EqyFvj;i=4h$ZX(hS8B?hpKP&+vZ2oH-G&L7XPjTMmZ7x%7_ zBOn>tdvs*j(wU)eeCQhP+$6&Xof)2XGMq>axo}})r0s^fG-|0Yn7c9>&*bBjFp2vyvyidKn2`0B`8$w@|eumlZ4WZ%u zy$w&u)hu?tM{HyThp89*}n23qb8t{ z9R3d^zxR(s8#T53^%ZaJL~;~%(?S)3Ti2XP+vRNN}|4Ve(N+pILa17U+g0IjEO@$+f-ut*$0Yj-UAQjS_tyFX;{0`? zNg{dW(gLw7T6v;`SOvS0d|Y%tTOO}(=fiCOPy4p%*QvhUb?X0zz6o!s?|+tc^7vft zy`w%v9$`)HUpcdBe?z@d!;P}bs=%zpx-7Gp^C{dn@(GTni6)MunBfl=Gkj~K`f)X8 zdac47Raw5&eq-l`Pxub(0;?`iJ`ik=yZD5oo)RE&%Hy>=y80CG> zly@gR$ioN}x(pI^lA{KRO{5Hx=MtS!4oQx(hSpM}6#WgJ4n209@zcL|oXfW)$GNg| zoYghSaX!&yoI+!TnbYI!t;d;uoN*@ax-RLD*$KYLL%g97zlLM(Q~LTBRkZT7&_z}- zUsYhtF89$QEhrc5CobaPq5YVgC-UCEM01v>=mt5WB=Ro5RL5}5Cd;Ip%rqWP$8b!G zrn;QV^?8mZC+gCh)Zxt@w z?qk*BjTo}*uA}|p8i9u%?K@pYD>}c)(Ly`^yQ3X8q}ymua6a{DA49htRz;8Ybh^NO zxv^rK`Y1Wts~N4a;@H7z-dIm5^zRfoi|u($&LOZ(H@)PD>FVlhg zl@`BoF=*NoPLg-NIk-&7jNVxwW07&Oq`EOM&_}Ia25qh>tR}y;hhP`2v8c)U&bc0k zaC=+$V=Dek-(4B?HmkGVr3X;&0yTTC9;oPp8A!LNMb0f+@vEEs$idS+JcNN7vvok! zm;2+-{SL!HoGYmi{pI+T`nuSQ@^W7^^gix2zqcBzlMcnldiOV`p?N@b@A-x!S}o9N zN8$yfrQ<1*w5<6j@R1wpy$ZN-U$a*#KCGkqOL~XO>_5S#0@*D_!~Rb(t(S|em!|q4SXSL_+M&8yH(X-xKBL7?pE2bFXUxTr)s#c zJ#v!N8=Veuw@GH zXGm;;8ucby_lldew)!X(g-e8JcyZmW+l1rh_u5;mX+M(eCAxLguKS{krM^K~B7PFc zb-BpLkO6r0NL1B3$(b}!%ltz0*H5_jaKb2hv9JZ0VnN@^kMFwcue%zJNO0-9;52L9 z{|lTx0%ekL(qQ^p&_{#G{95$fylORFB=#6E?IS%5n9{m{$=d-Y6BYlXz!X5DrS6}j z!Q=x><8)gBCj!7{n}7|sRSuYpAJiK^*y;ew_yIf&YJ3H1{kH;_AJl7@6;PqT%yeKj zh@m)DreO9#?RUd$B>?0<%y|*l$`+|7D^t$wi0KDNjIN9r0gU5rP*XHx#XGa{n>l%< z3nEHrJ_;e8!u2IQ2DFjKYfNLs=HU(Tvr7}Q^Ln)`V>VI@m@RORR~P(NgW6s#ixw4g z*+%1A9MzzdU|zd76v0QnJoZzdb-kB8Exf-Uvnndj9q66&q${V_)p`VyEv^z$wYd|zle_5bKUK0s4 zC4F$98k>*bFy$M*p?Xn^OVX;EI^GfDacYqJyc$QEB4bS1s#jU_i;$*(-%AgSew{HD z*h}B6fR?oPT9EBq{Uk)zXZ&gHZJx-1Gs7cGcf^aA9(d?&)D_XT{0mZn+XpW_@Phn) zgdd~B#J`(#f9B>DY_w*eRVf`87A)7Zf?vKR02vQx3r>Vk6s$U&z`_6?ngiUV?Q*;0 zo*g{_@>GKNT}Q44kA+;VtH}r?|NPWbRH)xUokUn~)QGU1cC~FWEWbM%|?J{ky9M*9Y5nbIf$}hN|?ARk=$&zF2B$)@)2z#6Le`0Zd(bK>B!l zIj(NfZl8p4g^R}>R=RdG?+wh-)CSetOl-k!f+=*b6a&=R!_mN8m%h^VF5#@E+0iW1 zeNbY|$Y)&UT+j9xEdC%Ey};bgZQ{E4;GlIFS9Qhl7;)-MO!yslcPSzGbU6sj5X#*t z{?ac;{Z9sI?ZSY1%_2PoiO|C`yok&O4`kqw#@#NSW}ZPWDP^5AFZD9^R5Qv=T6EEj z%IK^)ERvtDkwubxCHpI!gyZgt^AO1DQhjiU3VLQbK6R|OwL0RAZ1qESGA@kR40@I( zVt@`fBXF(fEY;=tX>9wQ=cmv4uIHye0hdLdntXdYbVu^tX*BjWsZ;Tm;AlmL`gD18 z8l^_Tt|@+N8_qLypVSU^FaU5qThKg2%D9Xd_htG)gfejSM$D^%!*}^*U(ydJh#j|f z{-|bf0JYlDltebVmu{>vhbFS}(s8J<}N8-z%+sX7mCcA~$N^ zAz3J*SD!ffz|9pRbH(Emay`U&C*bc%IMhQTcE;aB5B1#Bq?KP_)bxR}nN}Zr0@COv zN4E|yM3-`%FVZYwX>pqLDV6db(S)SmKWUJe7AdmR6c+{RWwx|RnQEhEHR(L1qKTop zmo}5Lb1K&7{_dsNOk_f!UvQ`&&@;U1ZzDf^7d_;XC-kx`--?~#iX?8mC915w*~)ce zp-X6p4xiH5%4-3c@Os`$CF4H!ulS?5fH}ih{n-%NF|4;_lqG0;NqPh6(!M@m_K1mx z(xgzjo@RxNezBO@Tl%`pit| zJco5Ok4ZiA<&HJvw>}BzHB@DR*Q}vUI}RtTSC`Qa_dh*lHCYR@+kSsP5sawHdfnPK zcn2sdxA8X?7Pz3eiM47Jl$3jfRGUppr7ILm8N(oN-N^)b?WI_hV8b>7m$#6qJ0oY;NP zQowv-rDa#sML$n9SUY{9gldi#7474%t87~So^>^CkzQ9bSXa;|;M?UTcV}H4Gat~j zYvHHDu%3%pkDlMIO3g>6IrG{XLe!$u0Jq{c7zb&%ir2-rLZkH*_&fF;0HFOgZDo1RBCbdh3Y1*Q$iTwTh{>%>%invCdkv2oLT6-q z*)QA6l+Jh$@p?DOG)uRr>wl)P-V4@qjsc79S-C0p;M#Qp#106?AM8^9lj_y~f)+l0 z%=s0%^c7mZdN;?JIh>8Ua4V!Jx$h7$om#!3n_E*T96pjOA`tYvO~kWA@Kqvu;!nv8 zNe>7=?!*_U1)MJMKsQHwk)!gi?jyP6%XL`Oe>ys}_R{=xk$-GQ0OvD)y{>d`l20An z$*1;SC2Xqkr-s|geUXD_#*2MR4{9FuOacy*N-Rj!OU75M~bt_#(l1=Bp?P)_x?^9jhKK3o_eVPluy7lp~#)=)_ zipVwL_pXi!%1iENCElhxOFv8u2S4iFI9_E7Cq}`*ql{?6W=avxRFO}MM2E!?XM2w2 zftHK0{bk_hG}g8jQzV>m6aKJmtqZCY&T_m8_@1wimlFkx8_u`yb`>QO+KJii7x}cz z%lCXse2}EKB*J5adCzq%80pix^uFg?tE@eBYa2f4QFvi?wQpHQRxlDz3xDS8y`!{# zSzme*#KUR4zwVUsb5GWV%Z-Rrtk?v)mBP!UDu()+Y!=u%=twM{fyDs_+Jfa?EsWn@#JL!fLuvTfZ1yrde(T z)5*a`dJZj&a0m%x*P##{1l4*=mJ5uCzLHmaw=lMW#k)1kt#u9UL*>S)-VNQ7x6!(r zU7%*8?*+7)%^T**>Ul1g{EK>)4@AbM4?z$bzN__j>zC*S@-ONM$+ztpy^_rjAMJd} zD>=Zx_DthL-nqFX`RmiamM5rxllV1IEj9)2qSUGGeC2RrrG((MYJS6q74GlHUvb6g@)aenaCXILAHPOTD{w0xH;cv);S!!*KF-C+!Z#W# za@+*CxiwbgwMqI4&wu#w^ZBv!JLDZ5J>)ItGiM{eO!8DAE%3~UD}17pFZL^Nqhg3! zr1y~FbVpx|Q`hLnDTHQ{v0~fSZl| z=q}&Qu6R!ZeggDuD%so((a}G6sRTTj&R^f$^<#bR*XK6zciT-3;*8km-r&>z6QZ8; z$-!V>%hN;3S>^oZt#E#aJjXAMKdpa8Kgmyc0ImF*0D}TJb%fX+;(h44X9*uDus2%U zU@QbrF2SS0XML{pS5 z@EN~rDBb9bG`Q8j1#e5Za2mdks|z2xnRhQ%H! zf9~9>%(3pOjJey#x~I8r+N43wGst}^ayGwM;_@25ZvA z6jCRQnFvn0$w#yh*U?>`O7HPX+XSuRL~b2a9|m}I+aB`5pI=CL>r^DcDRBp5^&t`0rf#tHR(feGTpD0r%Q~8%K`~Qj5E};b6*% z@7%RL=i<1cCoik{ikp4z9d6v~`YW(nvB%>sc`c8(hI;#~<&RVgI%i7AB!uh8c^-}q z;WGg3seapgAU;%Q4OlfDL#ok3^1Gc2fVmEJ9?PekqriH%NzQrlcXSbdh2nO|U`j+Xye^t^x+DmfM1g^X)qq1nT*3j%lg;N%!aqsX4N=dx z&zHFF$nm(YIn9&EiSrTfH%>n8>g#bmvFBjIvx~T>=Pmg=x>3??*&hnzaGjd=n^)** zckYWsOn{sw`F<)pq`HB_gc2EmMDh`HJRS*Lu~xI^=Bbk=Ma8-?jP$ zhocc;=07wdc;!~YK>$XL;V{7al0nS6n~0d2Bp`W5d>HRatbJSDjug z_s3c2)#i|imt1iYj1atp6BKm0Ob)0e2(^kX6fm+|6u?&P`dS7T>Qf#r31f`x_AZ-u zVH~AM0wq$`k=s$4TC=ECE(@hTszMBu6+j4v|sMV?;Z0^sADWlBUgG7@rbpABL9@-U;^0S*Adp z{ID!QQDN2(>}-1oUa|#O%SbS>fus@96ozmWsa#!=6y6pW>F^U|l?yozaUYl!?WW;> zUmPPF-m)3StNq?q8R2f_CxG)?XCFg-rPKctMxAY>AV1 z{cu#PMDg71U)GP4ZaAuo_nElt@L3RdQ;Rd%P5$M?Uq6 z>!gm00l~`uyei@faLagUr?=*=^g-bh5pd*66ckJD(k>ak0SQ$-p!Dc73&H}&*19oqr>7v&GLC|FT6F^80W8;kbNJ8~-G}C-H_lO^+t9?PU=rluyqN5Ac^Q z`aoaJH74c$m~F<-Q*XT{R4P2^nB?T;RR3cV0*H9*X#?eP-6v4o5c*w1ry*VRQ9Z*c z2)WKSY4ZeK7Ju}CRGab9>PDx*{A22UnMLV}AKRYK`arvfnD%dxgP%i_NR!&=Gmo}Z zoer%?e>B(Zu8Pet5X{6v!e$({5&g7!ny3Fo73Rp3&^{H8Gf^uHm0S{J{rZQTJTHjHx$ zsF)nt&!k6m5zFB@#rlP>+VUd_)yf~s6(6~uT)E-Xs%t265}?r)yya>o6yUfs^D4*uUIh7}>a!OU#H zkg+0N>?{;*Z2+o`tr1R$uV*1@sq0eEz$Yn{W?># zr9=bt7wO4LX&^pGR6PmPXgtSPeJBm7UK$s_er@f*EX!z6d&@^Cz}wlGhy>oybWh)! zY$eXA^93}@h<(l4N3vR%eKZT#ioG>>tQ=)M!`5&DsF&ps!dd3z}_ zy^PxJe8b^*{g@c&X3KOxG_x~|G`Y#^%Wn+LZk^E~cHfm1^FLSoMyb#N)Y17)NmiLD z`None7YGb_s(99$0W22Ayzj&5NROa~t4R^WR6C)bA)f=a zq2w_mvj(~ZY|>e@W$<{Sb!s|5CmJ*ZE3Lr54j4)U6dTGbXEKEED>#&bL#3cVH1?=d z@buL4Xh*duEuBt*(}k-P5Xa|8)Do*|iOP8ojwwv5BjJ*pzOTuV)G$(-l)lB!rpTCM zx~MN)r0y|ro8%uO`DHRS@R^Oj#)rC8Ff|7+7FLtSrKLa~`U{~oYGlzR9rD8?1oO>` zob1O-JKewgZ)-oAt zMb5KM%gqfov|c-nA2 z0aF4-p!6d=CB6J;i7R$16XtuBSl8-@_`_|cdgMhp5z86;5}K?+tbp)heeCz-d|9R! zXP4Ynhm*NlRI$$WQMk8k!6)+(Z>}s~BTX7L7b8T_vgR$ypDfU>4lb8!6X6^w@EIT6 zyvNaG)n$VA#C+}N1LW{&gM3(rR_^T7BT(3&J%w1Y;@2lB$>^k_*mtLsUgXnu`bVW_ z?N(Qlp0!)@(?*GJ)j(?LXo>nONcXMEC$`G|X&EW3}!0BvuZaPI=V2`x9Y?$UBCy&s;x0&YPt?hBnqa`H9gOLCC|FhnS#Hw zI91B;sdXBU)e!x=P37^cPXe(USqVXFnyW5dl&SwrwYJ$@eW2HZ0n2(jOE2htOA^EX zj@hJ+tq8+_tQCX5I$kZ$L=6PfuvRB){B0!VX^-H5teUKtZ}^P9J&as4m)|M5My?l$ za^Hys#FR)(2{B%Y@e(stVx|%^Lt&z$q$pSDKHtSPs&Vz*GYX&=M#}*>T?F4GXl}G3R(0acOW{Fq*kdEX2;!{ zpq~3$^ykJPOlYLeqt+0vjINR5@@mh2Nx{nKOOj6{+FnPZ zJ--azop6W6rL%v8W_Ru#y`ZeC9@g8!k9GZ%Gl}`T6Eoe3;eI~n&rZxlCuTY^d!3k3 zPRtBqwmUJyBt}!{?lvynlmNXbbZHIl7_YQ7o8=E{l02AzCer=<)*;g#J(L>#)<0vX zr-Ow0S|drGx2kXdCeRS|2%*axVm}~@Y1Ik@QaEA%tj5}w#ETSKq_84|6e*lYp+pKJ zIuN1*A6P#Fa#iiU&aTj+DhO58ek30DwyLxF(5Gr&^rS+w{P!{%qejHvtK8%G#++bR-N3X61v&i7on~c#5dE)dGRrrsZpmX3f1Ij_YnmU>G#2Kj^U#nBd z!FuPow^bp)1pHgoXvTn|hZ@1J59a~wVX@DTNZd5eBgqw>v#fW}{kC4)pT#d_VSjm? zg&qHZL*?1O5!aH3v~OF_8GM-0i7X7yX-<&E<(cUOSy-MKPLM@4Dz&J_fCEa#(6OlO z7X5k5qSEmyTr1T7fzTmHVvLfPFFMa+Au)?+C_Z8<0$@uTIzb z?R#g?6Rp~|K_kp++IFcg-tMg7-iOE`l}L)tqbqqsXYnN(gIcfla-bEk7nKF*W_!}(6r>~BPTf?bw>R~33e%|WE;*z^-N&p}6-qUYCicB9O6Y4y$t3+pXGBJD zvCee-5y0G)ILVR5%#QxeqkloWMvF_S%)aw9T_4wz_GL^vbsoa;LRKr+8`Oedm5j z7sAWv z9fWX^L8e0wiCNSjc${wgx(sUXn*txHL2mE`0x}`eBZ`qxt=1V*qkgvgs3pV0WYD`@ z)`rwRhf&P2Tb*-OI-=1{3pRPoU7oNkc(td*S$i0h?^~g)lgkL6N6-#?gl0~jr;2of zCHMycKGFFSLBBoikjj!z%MysI(xo~qkX5HUVF92TEMeP{bwTBO;E(u{HNe+q=c`%1 z-d3+VUnPu`ufIEAf(p{q>+)Cy3qs}~FF-1u8&G5#sq*HL~W5xqi1PA$DddDzg;u1E`=5KNiTGZ+dsq{jhd zgZQFuO`!8=Ep4F($$bj2EEQ(1%V(EeOi~4`9jUgj%(t?KB$ZT`0hX^@#~+{ zNJRs_)2v8KvY$6Z%3R@Vz(=R!8*wp)4oP1%Y_Y~ty`@g!HDPi%W9i7@>XPH;Z*&f+ zRH;RsCEwNINNU)Vq%p+gR;IuKN92-!rISCGsMo5AFpIaTC!Dx^$;Rh{&ZktP5dKSN zWb8`LAEy065#d)IK;Bu#k)p>h1(=gs1?>&N$9^)V95qE3?V~2jZ)6FuJ;Agt2DZFL zCpkRoES<6;6GQm|F%bzrCs*vwhOUj&QH-V-Wu_;uU!!QbWPZ;#|3Xz7gLR*vegX~bsr)LqiMq-=!xPo(~*r3m@^ zI7bSn_NG+r^aD96eKBf&4MgO=wbh>%?24TkM8JY|pl9kkg`cVK)J!?wT`}~z`;!=& zoy1Vd!s-fgu$+G)!Zs8gvJ7_R9O|u(j+dh>PXiJ~0OaSj1z$DN$Iatwuli_pyE zYB(rsXrjy*674}|#XEQ{Le1wqGg>ayj*#7en&LtmpN2MyTdMGT0RQ6qWZCQv!3=Iz zza(3{QLZXF8cXR(>UURlV{+GL?Y4TW`m=T4-5faq{xa!#q@J^2&dgQ@LsxE*wRx>$ z5f!kSeD>7EoP&+NX>trU`UdqW*y!uihhV<-8JKT<1m;_xfcc(bx;If|9#O5Pd#$*Z z3BOe5!b1OaEYMeqS2VS2*5QP@qM$=h@UjOEV?M=p;gV*#ukX@J&mcdnV_nf=r~pO>KyaOg<5 zU!!LeVZed*#pNg9xil|w=y14yqvwT==+Q)TEjKW7=-V*v!w^0u$YlrTo0nwMJod>}c?kkw#7#tckT6F~#iK+O-&6Qh0qvkByWvu|$d20lO%hD3{ zv|h2{wr{ZSxk3~wuHg0Hc?I!de&eO_X*_Kj&#BltzmL_h!Jj>^fETGNnr>&`U7M~C zp4if7$kpRK5M{w4=RjlE&I1yqXg|S-D)$>K;2R6Q+6-$RrL=3GUkR{K`4mkS zJ1~!}vP7~M$q8L8Y(A<8_(^ut>Q<_D9>eHf@Ine|x^LPKN+0&8r-ibrEA#Vn>nc6B z#Pjy2r-%B;cR}59&n*m8vU*z+&aASNz=?)Dh%v5oW@tDu{7RXH< zugDI{=iaU$-p|+ZUBEjL;;CU-%^;~Lu~y*v_HB)(W$UTo7Ii}~X>ZEh!DA<%xfNSe zO&6Vaq8Yz9pK}zLyxuyVb_-fO{@tV=p;{>3yP8d|DzVxt9TMiN@Md5=SRY%-npjoD zh}EduWl;&MY1GIq8&`%U`W0=xeOAkAWI%WQ-_ehtyGck}&|R;on_%us-D@%}Zvn1N zQARq29etrGr4gOaCToN z9quB%!&5~^G#kQJTQ-CyE^59FB@&Hp;KYdG6VQ`FAf`*p$Np;B*V4n${hqDS5?5Nd z8mt530(i`>`iL<4RDpJ`PFw8>9#jofG(c=s3wFrruPi&dWz+;^@3hDYIgI8Er=Hk( zL^*p~H+GNZd;q^@}SR}%AhD^UxJkvVW zpto{(mFjVeV$j!cC0uEB9W6w2t|Ef=Zj<)xoU0jy8TC|3WHe_qKkAiR<-nLzP8ccj z^J!?`VrhRae>ZqW5}Bs`2*YE@o$|{Z@j39oS@)7E;5}lzHq1>D@56L=wdjSaof@Gv zp=v@HtgloI;Fs>zmQFR7flK%R{DfZmt*?XDdV6jfk5|`BVb=ZbZ`jXKa696;Ext4% zhAl?T2omtYfxqJ%hX{&)*p;H5QqdkhTS&JYqNp``UHP&n^ zt~ZOfguk(-WGsz6AsBUbB$g2>h{SS2{VKMIy4t$~wqegs381&< zSxdllb}5W};?bXG#BotWrZ}rTcJY@i*bW0Yf^t^b0-KGa_GPga${x$O+}(D3M_f z>60Ahki)y2VGj9J0t|D=UILZHJlv>f*0it4*7G^p9$Rdz@DFUC9ZfgwOVb6MU&ICp zCNjaV?Tqsk@hAj1dCAf=!2It*MAUm%*iL^C^EdXX|FjssN z%E3Y;zpLfeOnv$ods=(i;&X#qkCWAk579)!?D6Ge&G3FgNHeBu1SiQUGHrl%K6Q#| zE!Xu*&lXK^dgdJ4v{#Pnk1@EtysnF0bdu-p8)S0nl6Wq~>tw_1^060%+mMO#UOCd9 z=mfYN{AwoZrAJ5Pox+_ZlQ_+5M_6?ct?oX-(cTkl zTWdn@Di_TSZ>VT6YJQ+&@^z=%b~_+SLZnOQ&(@tcYChHLHaUQ2e&kd-(5VzBmc8&J zRz5dBG>tHz(hG~I+2v;#wO`UvE(vCrpS3vL7L)NXrPzS{1X?JhU?&h3=IL6#84#-Z zT?Q08Qz+)#{-GtfCg!ZF7t&cQqzZhj&z0g2=;GlCl@`xy;A&tas;HsiBJdKrp49ld zz4z?MCpXNF92~R&EziC_9xvY~&L6;JU-?*4b|x*b31n1O{) z>PW4`=ZnA_!DzpJnuL@BYwjf4njhXjJ(icOY8ZDEk!kPu2xM%%ibX> zXey+1w-dM{=(MrXqOGN$mS{TXx#i9dL@&@W2h{6x1ko2#ad$+|7evQcf9Z!^ruE8) zLG=A#U}kiFu01g=9_+x*=2?0KBZO=^h&AfsZuHV>bg1R&eRalB%vr`!!_|FaxZVq# z;YzQ&aN$V;+C@+Ogk#5wn44Q6>!46|5$`<8$Yz(HlVq~(yqi%XSH%+?+*wK@3{U$n zM7*?FW$Q77E+*=mWYmEhrMLJk$M2(7Ki{lAA1{T&7p%^5xzI)dk5ZufxoiyT+=ukS z9m%1#1TweCqd6I&k6k%CX)mA3;~%fi$aNLOU&3B$FZ1S{tszS5?&##Oe5-mTTPa{% z(737Ujo;{2PWG*oB-y}7+Nu8apTnZF+f$#eL?yXnuZ)jnM`Di@8`}<>L#Uzib}VLx z;<-bhx3`KnhYoVPrt7f2uHCWF2M8_dl#Y zN^^qrA~WdT8jKq8-gkKHMTxlE4yRSLEq)EVW9#NZ(|7ay`a~kT_vTO)?htgwo@x%92Id0iz}NcAXXb`|n8Hx17L~!( zUK&y>C<<7H$`cIM=42^(wbe11J67;$gn)h^$%#%_3u>i_8y_MGb)w0(}+FcLIaEuz+noRrEYJQUY z9~HTlarDkh$!1nb}Q?R7zg5FxIzT@RQ z5NZwxRpPig5#m^hvxpAj_#x&W9p^y!0Ig{t9HPLFMK|U44g#60WA>;&&6NE{sYmoL zN7j{(vl*&uJnW42i}XzBW_eAd$D~NFUx4lvNoWYEMXuUx>iraT$^v zRn%{0=*3gONv?&Lwr5wAg!*Ib#U)DQQ19DXBSuDaL1uJ8hSjs{&Y*h-smv>PNTr^C zEwGqd;3%)-ji4(Zwnx45L#}XPF1hNFoBI2Op)sv=hgb`9D{Ps=WR8c)9DfXx=}10> zZ5w}5^v;a(pXG;(O{=%x+68Ob3z-9+O*>i3n6Q=yG;6sw{(it(>yM6y9m&~7vs(U? z$a5w7@Ra3uvX$x4imqIxGjA!`^d8kaIUbbMg}>C}Ihx1R)R`XpqIb()8p3PHw*M9% z?2Fbto$4r^o((-oRRwWEa;d?C6)oQW;sk|^!kkWO~O~+WHtE9Z|@(fsGK=bvy}z7TvF@L zrX9&XEV3~j|G!bgw9w`3BP^1?d=xBF#l-&M5mHN$)xawd!?bda=bJr(>iMA)kirS7 z9~4yIn5Jv6dUoMA|K<$DfeQTQLis*sC|4YEh9auw(z+hXxNG&w8qL!m!fN)U`}v_v z;mCLcWU3wvdkI}#FI~NfuKu)txJBb;e5hm&kJ6c-YRMYo_$XzpNaEQ@*ubv@EueHc z#_Exo{_+KK;JCiaLXBtoqhmCw5@s&7WPdoi+mh{I=EO9&gEl4kwj^0vaqBUNlzqJ* zPpit%za2=lUchso;QDd#sFRmVWJXpD$XJ3*Q zA1;CN`($Z^085wr%~xyC3`&7!EJy`tdI|lyp8qqCPrs&(>IRII!1eldu-jZwLpHb| zkB>pLE3Y45h2dGybLAd<+Qs`gJi2E==E?(n&vrNacx>KSvB?*yZx%itqiwmnejVfQ zqu|<|M+{vCe;Aqqhc^|Ggu>iXI(`A)Cf~xReOsnEzEiA=GyV3Ibb)M%=Kd0S@3jjM zLnDOQi*qZsSxxu>Ox;Mb>TC{ws9C&3-m^M$I0II%j}!p1Jo0rW^KdkG*c}h(uZ56V z<#X1-^M^FgyVZ~jr*_;@_7<#VLAE3Jq7fiRr>0eKBoB$!mA}&ZxlAqK6vzYt<*_Fm zL~3%v(Kq({Op$)TM+D0I2j!U45bDZOc4uXexl8Y0CE07*#r<&%9unpa{&8rMf5i9O ze&HX3R{yir16K*|gwB9vyiQog#c36X7B`<;FHrGnzELxcDMpcv%?`k4ZU{zu;?;Q% zKFh=#ti!=ND)4OOk)I~lOaKKj1o3dRU#hpS)~g1#I2zDG0? zcWiZeQr!Yw-8&MzIhp4Y-Q;Ao?*}qyTthOYR`ugj2{Y?2FJ#Xbk&zFU+s^s-eym^E z+wT^hCb>ah-^PX)Xvx3^kg>&2Xe11xCGsvH0hv3}cYisZuh~l(Am$=5*v4~B(^?$I zR{CvRhpSyl7R}0@OIg`=o+QGm`Y74dNBf=FUl6Mmg;5SA)wF-z3Xz46^Vzpf<4Q`+ z#l%1?dvDaKzYz*as-%d$0+DOHRKZ0TBwBN~iM+CJ^dc>{s#K+YZ?%)Gnc76&Nlw}j z)BcV0o|{8^$|hV%G^>wCb>lM~hopZV>71fcZuG>>ZkM~E)Lk|g*=>ftFc@-ZF0ME> zi);7NA=|biS>L&tJJk`nGACNzUm|#|-|(!o-W5^2eypI%o}61{<0={fd(gftpI>j# z=7FW3BiWz?u4!mD=O9TYBK%QJshsBb?+Mw@(rh_Q3-@!Ytal?36& z;eBSjSNT;L=<`GxP`%z1{;E_|qr&~vo37M_l-eFToQOYT+IM6I&fTv^fH>VAcRSBe zAx^i)&5}Saftw}JlfYyGX5@*&YWl?+7yCn5+U1kFvX7phF%s2}j$HO*=BY`~Q>(di zD-KvN@Y2@;;-yY*tbDKJa@LL<%33fE2ea?a9}~pCp^3t&R4q3lCBeuno)f?MT$i4Xowk^fhXcf zeQrEXiND_jO@n#q;dDj1-rE_?dpUv?Jl7?+j5hQ_dND|Sd2#r=B}#v)-)zbF+H~p%#oEJnSws=3PQQE7c1 zOst4CdJK!P4~2^xb^@BYGl1W^w-Mz<;HZnX;n4jXnXfX(TsC~?)AY4dR@@~ zwf-mkBI%~Im5;N9F(7l$dY88G1q@giTRb_o59BJde~_a=KQbZftg>%M%llCHQ&E>c zBFF^dIkwi!{*10yHqddc(wq`yj=HtW{YV#mk1js4Af8+3%7N1T+Mg^Q&i292d&@?h z5pL5v3$MAE?oZ6NW?lii9SwjiVJc<_QvtsV0i+L(ut1(gTUW)~NnCA7SAVrg16qVF zctY7)B|_p|07;_~gU;bMn*i>23 zx`5~AjLG&{=b6@9$amCk$dcgjFs9~rx~9$Q0e;tH(;#un2xBUOSHc9nZKXk7zn!i4 z%_YN+bRlVSP-WVZ%=l(K6I}$Yf4wCoH!0}498q>@Mr_52w}e#!f$B3W$#m7qb**@X zMdSA6v`qR@K!%F#p<#9DXN?>?0^hC1ntIdt)4JQZI@+p+oG0a(qz&Qs{dMWS>h|+_ zR1XoeSW{M1(t{{$M)#Cp%WOYZ8}XML}UK+0dfFgu*@EyD>{2+cjn zdeSQb-VNgCtJfCG^oIu@Cxf$4;{%S9ghMgN&*L(Hy04|Vs%IfE&9(L7$x9=>X#}yuCDioX$Wpo@%$q=VXXdwfv=HD{@ z-Onf=Qs><1jB$GB=;k=1o7!!3`#{Om=#I+Jb#zB1>Cxd03m)`aH4G6nM6tTIUOb^P zs_OEy!+q;~X}Iqw7<+cOhqvsG^w0pt#hOCPS`E>oqSdQQ6W+2#4}~&i{q4LI#KJW_ z)GU#A+NW$>dUoI(YuS5P^BILf>vGK8i<`}cgDi`$LT3bv-xdT%=ix8#)y|Vl>h5AW zEmkjj$mLZ0GpSfA-5%@Xs$SHjbv>${RX-%2S+ZFa{xU8xoC z=3PlEop&vFp(tUpB<8XGvLx=8YS90>A+;o`nKmEJZSXI$(nDCJ6!Q{!tK-6*hWjV- zrqdw^Ot?+7)?$ydXvCG)3^Hozext~lyfW9go{&G&C1NVtU~^n*>K)Dm7y0ycgTLIH z9nN#q=q3pg7bK@SUak(`spt5_GEm;ZfmC8@iaXTrI?J*Cq`zM2%RIFf_LWL!04*7n zK+7t0PVzEr=hEg*B$1*zrFCr+d6zOy6jTmvDB}Q8<$UbtBdLTUa6FFeU-PYryi>`K z&?}`e^@PC2YUL19f;O>mn2x+@A}1Pq)I>9~LDbdH3x6aIEy~Q|ujQA$Vne#Q{RrnZ zjtAPuvv^Q}%s~SEe`V5UDo$#XO{}0FoGM6yqH}%dY+Z*OD5MSwbAenW4zpzn3RD&a z$ptUl7Q~Sej*jW&Hr1aBoDcRxl!?H%n?7+4`cpOUB~A<2h1hc)ku{8Qif7M1n(e_u zUg>`89p}Y>aDTP#o5Q#R(dMv>JtihTtH%M7pp{U=O<8`zdK)!MWiBcjjhcl7Dy`8U zyox4J#pqUkymfPU*x}~FdEtJ-R{U9KU~BNaOrq}TQwf(OINf`g>s(-b664&e|d@zLMDqH74P z30gg>tbbJ%;~EC%LiM3hY|rd4LRuDuLhL&}=h0WD32FU#o$mfQz(aUzToG?40jF;4O(vZT~~r z3+F4RR;h9y;BhSVpQK7*R5nX*g3-|XnU&GeU%kx1$2wBZ(`(L)Wdc*Vwo7c7P&R5z zia$c2rJmF}YMQB>1Va(DuSge8XZb`;C>C%~4cb*{Ftwab_Fn^?=edF5+r7(f6+)_l zD|EITbrw6D^-a<tL+)x%G|wlST4{IK9&BV6_aiD=UVM;n7UU zskpdF$(p*odtH+Bvzss1omymsv8Jr6sk+MR)(PMn&2j^^dr{!=Vyys5ea(l)D)r=i zS?zlKXm#r+)i0^EzOF28)0}!@L-kl(t2zv&iSIadI|WKNGTRrZV#WYUpbChZd?khL zE7H`ZaOtv*Vif^KNrmBmKx7hl{sNdWxL_c1V_|`aE>hg?#Mul_HTTq8${Vq-4|VJ< z@MYa}orB`r9kH6&|AY`m<7B7i!a2PaJ9 z@9)8d$c^JA+S*B&+lu(%-h-cK3E4=wD&yOP_#E4;M>iVL(?e)6^Xn@{{>0o zZWsTF4J`i$>jAjv6P{YgCzL&@H!Ig{C}JVU6w^?gYgKFtT`o8DjxeitBCnQ;;16U8 za`t~e{4f55&M_-K2o(|4&YN28F7ddfWoenE8xwh#Nz)NI>!ZP5(HMUBT%KWLF98AQ zZ+BbLWYd65H+>>1RGPHwih8Fis`w!MajJrdh-5e*kNW{qflX#<-Zk}QE)fpw+yu}W zs6(rB0z^x`Jo4d+QfED1ssTpZ96r#|{oAKsS1$FLN0a9Q^)Adb{{NM<7s z!+i{go3j1-aHc-g{#8~7bN$cK`VDEg`rPX?E?$SI_8}<3f^7Aolo&>y_#2|d@@mk! z3hA>iZ9`f~{1oFQgpL!^YBsKh>bZ=-cGK{$^DP6GyE$a~5}T=R$veIcF4w{nt1Cv| zl^4(8qa>JUk{5o4`0HU5kEP|op60& zW1C%wKiE&;`Z(j5{;9qqw1StBSLD@Dr8<41lkBxj=&qAL6%XTAO{V z5~9$(nq|j-hRePz$1pd^d86TzQNC!O;PCC?ykPCxaBd(v8+Cclk6#<=id~5Jq98{W zoW{PvO2Rem@J*7W;GeF`fF==#@*MpE0lpAmPoCO zcaO(cZ=`*GxaV`IvF=^q_SL=Ni@bpX=X~Sd<2%xm^Rv+~FI(i(GJw!?*4HB;bD2 z2SV-K=gZn2y}Y(2Q1NESV@<1$KL;g;&B%`2XxF&36-M|!^vTB=)^AK|m0I^l{;a{} z)1&i8U!BS*{n2oBW37NqhTK?tIX|Md8yiLxAlmZ(gXnl50{vXE1hDc&66YB;XAt^6 zbnHd?anMn;XHw{Byb891ie1o)htvd}&|R>a@ztzxWTI91po1fRL7DLyWztJ=D}A!h zYG`Ol&uZevaeS0qfr{51+^Da3U+`efc}%Qn>!l!w=qqlsj>zB|zVMXpz;9{8Kheuv zr)G>qL;d5STI}bo+q$zQS~EnJkKbOBh7cl1BOs5UOcIBxgdLZ$y!-~^qy<5u%8GTy zy{{07k&TpA2hKd4h^;4rm8M6k*VO;@aEDH?GkP6ouxlfS()4IY|My0F+u6q-ZA^~& z4li;sS=3e~jE!t_YV$SXRa7sZm0LJC2GE3B)=G1}wtunD+IfqEFQCQh7TW2zTKM6v z)u`DH6jq)_1^$Ybfb}WMQVD(Y`|Lo%cxn0FcPHlJtMA3TBm82g)edLn%!r+V0)U>j zs9vdR%?OwyJ7*xxm<=EEU~|o?Y6_Y5FXru+ADvfTNN{iFV&iVL_zdargED2j_mSqj z{cUNI32TT)E+#||C*~qcgqM43+Q9IDP}0vOfMX7;8M-vyTCOJ-6bl-E-vmDn*D*fo zM6wwapvWDl*cRR;v}jaB*ExUwiB_#cYHBojNrDdN4)JB3O`lsI6QZ6>j4dF{+M=(| z05R+Lf>Kqo;k2X&tb_jOgHj`i7xJ#`hII7{fR%%A%Zj+H;k_ggsxLo_Da`tJ#}sB> z-7$soqRl~MCg2SlWNO%LRIi7<^M5kzSO!QFsK80E22;TLccuM|V1K1CAx6Js6ai!W zhsh~2jS1UDhaC=<{WM?%b^#CCV>Sex0<|9*HGL^E!3x>PZW=h6o&tD{+E!pP{*)K( z|41(TjTMr)9mQ|x;XpWr>42mw--^prWT?+ix9$3*AoXVC{+5f}Z)xbAZo&7=s zM6jf25&Qsx6pgZC)lRF3rkZN1trk~jouXyduG67af-)6sZP7vu;#N23hQhn5-3Jce zb@HLGh87GUNUz0;dCvbl=lkQHE20oZ z>uuNEFOgT=3>~!?P|RA@SzHX}q7Bj<|1pa}zgx^=;0u=03x`l2mtm>URg*?pHQ_&~ z&C7ECE*h*%QF&c+C)0wVsM;8ugdCN)wl2A80Ja- z9P~X~gJ~96H|2*Mc%K9?)!f`kTW0P=e6E`3piw=$a)zt=9()VtRwB&Yny%bReGb_& z8;fXN&cU5VlNa+G{z}>8?Z$}7bxl}|CnLdcx;J>#*wOKw=5Ed1JE+KL z?mUR1SIyniSPP76?w%Bmqk4$u?nI1)sMpgsp{|RzZmp>F@D-ici)rifLp7F$4!@YK zoOD-UJh^HHUePPvgjbtY=5(z`eUP!BS-T5X>1T0S79KrAoA!GmG_}TT(7y6va7(S( zrK&Y6sL983QD#%NdK{PG@YyKC-aTd+p8R7q>8BiW(>`-jl7HHQ}7jWjaXDPV(aBtYG#707tPn&v7Ghmu_d78wwqah zWs%H!(RRsZ>lJv=Hv!{FG+YP0s^Jn<&^4FdBZh_xZy2deZt_jg&^}>wPs0zh$qL*p zYQ%E0A3HsjTKS_mBZy~JtG^lSn!6C`?pnWo5Z=ysM?W!e zSwLkew&AN0-EUmmCx4R7pBlCN#2B@l65rHzi7`x+-l6H67fVyhKsB0* z#>UaLCF*o!5~*7Bl(dw9=k4cJIOZOhHJIK4*7ev!{gdCvMuwMGB)T?W{D{}`xvmV; zdu1nm?5d%K*_<`>lm*r>eVFQro_(7&an!2+Jd(8W`AKN9I{^nfS6Tt#07;mZa1;txJ6+=|ue zD>B8B=#c0OkPW3kdytcHr}KSNV^DIj_PIZ2<-ZX*W;$3_I`X^KHv!NCF!^_G&!d;GzUvR~c3c}g;}ZXb?{NFl z7}xR>$COoTIXGi}a#?lQP1lCImM53FuEFm)xILVN^kW$&A1C7iJlt5c7k3|&Vc8BB zIbm6JB@Sq=#S6nHL;^T$n}c`S=D700xPKX6v5=70l#8eE7U1bbddDlC97*1m6ZCz6 zMP@vvP0O@yTKn`+tro``j61Mm*N-#v?)(Pt8pl%X!EhH|A2RdAs&8q**fp2#!oiC1 zOef|YPtOCuXKfWekyHLqhG!}6pI)ULG8iX0(MHq5Kv?eD?U;~uPT-8W+pv-X!W+Aq z=5E6)5J5QNo3vrhJ0Lr^Y1SqF=j6jE$xYz84y-q8FX9;-tVPc4nsdsek7tj-rTzJ| zExbkBcDg7qXV4=P;z1_sVbDyh&{`MK``ti$1X!D<<@m80p3J3qM^5fQBCx>y97Zue z{VU34a#PR|7G~v9I-!G97GR=(Ny-f`(q7hl=+Ka0Hm%E^rd|ILHT$&brd@YE?$W2G zLoRn?Wp=lJ!bTK;VaRyLFjWFhLykA8B7p5k*ENvjR5!&FTANl|*m-T>LZPzlh*K^1Hg?8f;bs`GAbAZBLNP zcLMuEk6|7iF*OI1=72KXA{0S&fIlXLec4#nryXn1jDM?!_4yyUnJS)tL5^bRfz1ZW zN>ofNhj%sS;Der4K~2QdMs9q|!He8|IC+!T)r=pJSz(bYCm?U}2DGh#^?1uyaIH}g zohW&qd#WdoUxaOrnHNd_W^6b8dv1QW0+LsSv$^POaI6CvISt>bQqgz#ILVr)v@75h zd3gw}kjO|nJtQ*8zg_z&rcG~%0!aHibR2eoe^T_ple9m5U~+i*I*ePe%YvNrSFfO) zOqzL;s9QM3v_<E)%2LKKg(6+_gZ8^9|!tcsGRgMOglc=&{4q#C&5l_kX(w!e>-A0ZhSp&F!juf-t$k|Ib#$>?>l!BF7iWMuGho#Wnj*{ zlk{Yy8gJXcv_Zb^)QeYeV4GnEUK;p%6J4@j3FG)o$2J9hdT6D2Qc=yw2TmcM^q+^< zy&n8157#Z6-sB&*PQK){zjnuaRFckxt~g(TI+sbuJnH*X>u{TRZKsz80Wo(iV4srr z`Sxq4Vnm_NP!v;4xXleOVC%x`)JD_m)Pl5gi03TilLnQSIqAnqn;slldD+OxR8q08 zhH+U$TZD}fgv8#U*i4N^Xh#*hU&&^f%Z%CZ!^pvGALToA^5<2!#j~xMcsDlQgNmnv z@hrefJieQxP1$p#Yat$aMF~1t`$Ze?yp`h^MfBc0ddjkkYS;n1T??1ipGe<~Mk< zPafhN*%7)%1skJ2db=dv)`@QLN4S~;MzFMiSDeEYUOb=DB2MT`ffk)TLnRR>bj77x zqE8K`{7}fgJ^T{ZI{2gWILLxZ}7BX@GFc$@el~!>V#v?Utg1n z^FJxjrRM@>-rY5P8ltWKX5h>_Abk%~Jd+^ouOvF?;PFc+r5?}X;JYU&M;wp0Fh9^N zgSxQ^`ws2D%^MJeC2@t-dtJj{ge7e6V|Y|7J&Q&vwta$2EPL#Qcnu}k({8m+ugp!u zhB@}xwEg-Kev3Mh^CA-SjkstjiLQ95bS>4K;AXfNqp_OwN`mBT?X;;>Ev$!73(-(k z?WWaV+?9zu%vt4y%7xp+=ob4@=}z>!sPyC3=7g?o!dsPb{r3tQwM9o`Jn0n(^*fr1 zQ6#o2)~=*YBp+V6i}6Fws-zOMKjYR0&Y7I##-m%OPfqgUBLzXlqjs*`jZs|kfYC+t zgq5@pg^Oo4=7{sNShEU$hMUI2VQo;(IP8V34euF%^ZG-!ir-G4AKH@@8Z1zMg@yp- zg!L1XvGuqSzYS>}(wZ{_y(r$j*?tOIy75U#NloG1BZq{Ctfe%Iv{F(b3${{}{c#aO z>t~3ddQU&Z3uXM6j2~&AMF0mtaua>0Uv)`sNNW(RMv_(0=TN(ZXMJ($55~Rl2Mmwz z>bjySr>Y$cTv#X?()3SqnD8jXr;Ll_yg}{dq;~>iawcuUk8aVZNfn;7ygDB~A|K0-eX`2cQEAt*RPYzu3S2AEj^ zGQ!OIGWZ;usbrlLcTt%iSvKTdDtxJBLr@vv5NNiVe#g|KYWEdMU0vgw@JQW|2v4%a zyULKVr0{1WtM^rCC3JAO)<0+52FwIDu z4Fi+3%q{8+1|CKD!IgAsBRUQb<6n+ii=Kb^3DE49hv#VU>CD3uuLYCB58yZlJDygreWyn})65%G0W^Fu3Y5s=;vPr7@$;j-~8W`C5#e!dBK864(0bhj{WNm+~GI{l7G&xEGHXDEdzZDS5@$3NInr}`ZG zpFFdVgCB*cW*GQ&T%-nmHR-ANr69Ol9N@=o#h7c+S(oA3P8?8B6RwZE*t#r6<4C96 zKEdk;FyX2`)Zg{E55M{6{UO~?R_FaS-77vD)3e3ro9UVO%%AsWx`#eP4|f%~{&plk z`CE*yuLs$GsJ*vUEV>QAT92Pce6WPPtuxJ!KA|v-gR9lYhqpy2d9qYO*;6H z+eHIY)T4LsxJTFU4NY`_*YCRFEZuQ0^0eLvRG#U>`xW@P}xu(muPCU65 zuQJ5i3XaRrmBgRn`2pB}s9sEI=mbZXB!&@$Yk?PSNPh4aZ{y7An{T@TbUabf$2G>A#OcFe5Z&=s|Acp4uMe*6j~9#3 zxgEOn^gl!u7AYx5{z*xhbFNH40nCiSqapOyEyMw|2ij^|t^9Pm#%_@I<-5!w@l^sznuNnbyJlZ{x>LA~7-I5!`U(N5SRc&YWJMEvlA z0(wr*mHQTkvhv{Gq{B1DF3g+og@4kQ4@#=idEqtUF+)&2{J`mu=S|wH$VmATC8uNY zSmKy~r*zigAuo~lk50&+w0FjEymRR7Oq64h-E>xwN-2`;s{R;{J>&n~wE;#7-oIrFi{H*;rn3<_0P4m8B<2Tu}d$?xu|DRQ`HjzI~{ zo$t)W>u)}!mNFkLCFq?=^r~BmF@tN0>e@92zcIo%(2QWs6LlZvV@YUzS9_Uj#)ti)CG^ohdJBCdM{lGL zNAx=S7!dW*$H3@h`WO_wh(4Ur^XTJ*sE0lVN5|5~kmzajabomj`bdeMNFPI^1L(tr z2h>)%(6*Gh0^u^(2Tin2LlbnL>&*z>i#l_lFLdKq(cyTE8-pzIYLmPPn^078T)$dN z=as^f*1DdgtCWes9AbwCb~%) zf~y{rCPwJP?$B{U5@(-x%zWFIeFx4D(3D%W&E`2^5o$6*!MVY3-URfUO{vKG)Q4W3 z&{}=S_0Yq?r+$t6hosK1IPWSUW2W{!r2w;w79YEhdxj4+&n85xp~`XMKf*&Y(t1=!pHNbgcO+ z>h{FS<`1r>wF_Fvz)MT2f9Xtuzwng(q(cu4M)QBb=RDPcHx^(zHvwlu-^J-o|AbZq zFqgYxmmM*orJIMUaUE`R_2g0Wuny>|`7|n4^>hqMuuRMA5ap?K&lb&#OT+c<|!H`;G=K?*AigD%{mFQx>}-HXLMtTK$y{?%-z>O)))B^LamkI8jEbeAV-Z*YJW z2oSxKR{JoLT$qW*goceH@{w?y6Gi8Rm4?mQZ$J=>ev^V;T;T!<2G=<5y%{s3%$ybC zDk#j9JTy_#uEDKKn4hO;KQ<%5)eOZ);EiJOiUsrl>X{;XDM<;Q5eVLziks<1;{G8w zp8TQJ`Oj$`9)s7DOdFaDM8(<&tsI~|#v!X<%7I_eL)tAKtQ7vSk&Z~qH4HbFZMCoV z;jNy@+Q<9xaTV^)KsY=zEXKzq51ycn{0gbM&Y=}!GXruY41K5%4;>l${}vxkS}VM#?1IIeW!;eKE&r`SarZ@WDO_%$woT47JIt*sTzM{{Gc>T zicZj8Ie|_eMq^DPSO2=GUy)Sclw&SlIO~AWZWq#Kj)b8&_jd=^V z;kZ0nnX4${-|Ol7c^NzK>8hD4b+&%(`sC{}*Uft&S?7Ag$?Ug4C!6VSbspL_=793JjZWW)meDsy; zmW}vB%k63Z%2hn-PVswj$^wbjpN_~= z9e8kK_$gaOq-kpra{SL_h)^1BLxCxB=f=@tywm;O{g1Hr_31XJm^{Q?^ZoLzvXzZ{p$( zg#8cbgJ9|p{{ReI$ow6nr2cKqkhkMEba0-xm3<`amM!?(1sNqOj6cXZQOKbs!t`y! ze9?&l$y#G#&8t#9sh+*>vqrB zn$@!V+d265-Ka?jyYA2@U$6UiM@CmOzJGgO#zB0#YI0DT*R_7R7r&rv{~M(jVTMnj z@Za4w{_php?Rh_(gw*0WCMiuBC4Sv8YCL`Jp7C|Rb-UX(P+XC9AMO}`AHqUs{Mn@Q z_-m?kuhXN$XHxk6(Uj@>`J|KeK0?@iL(z0jw%C})4u zqQ&n)v~s{=5w>{kx^K;VUI^Xc4dVCP1}vk`Xz|u{-`&0uzmH!gVoc45$e8!9`?`1o z;%sf%qyK4qHGZTo8PAh6dQ0oN9k=Yk=Qi>E-CI6ex1;z!>vr7s37kCYH^Rbg&G@Yy z;ZhE)h0cy!#vh^2f8R1d;D6sTY8T<}id*mp*AzF$FeR_L1i{;e52DZ38QZef={tts zO*-Ft)~;(kl(B#Whfo;3SaA^LW9CGpB;}K^D34=6L;DExjTpPK`kMRy6neW1{a+Z< z{u&<|^Tz>yf;ezCzAU6KR6dvEi)iXl=9@|DL1;xCH1CUv$?}X!)#qaAHuMX0@4*3= zokbI#b^dv|9{-(-sDs8~nf&0=27JSIf^S|f`ipOI_X76E=A?=t>IUu3ZDLP5dP4Pg zU9P8gpnUu9{KqnA%soJ1-p6!XyF!H7hcMW3dulnt_=5jfLH22f0b3ltV8w|T!#L?F z%$M=|q+PC>c?d@5*PagI2b?o|%#RabsX4(dUBhpEm1du=n&}7vDwkBxPVN7|Ik+k5 z6kqmTrv%3MvP=5mPR9AJOPvp#aH+qa>xs*V7nY)Y+3uOU#j3h~0VyAtbE!~1*Hm^3 z<_mkyTWmOZ?#4KL6w#nuA4Ml6nQ(QYWk1oqB$qPP*^ z@Caz$3iRyspUa<&{k|!9@N1*EHfUp@(2pYt$g77Y;x+^qWC3#*#P9$1oI2!fKg& zi?$RuJQ6*+vl{~d4>APTz#t9C=yhf~o3wkyB6$Q<#Um^fdgA` z#2#m%t_1tFxb1+`N{QI@nMwqWA(6>*-bxk;IK>~_sGTa(u$^|1%rrDp8t5U^z>jKq_gB>3Ue-;=vy_`SZNQf z`tx%6j`{uAb-`F62Wy0Zb8!m0-^`!;=6ScfZpIK}SmD-O@qT-6Yz-L>4ChE4Y3foK6n;x!|5_Iz}(@WlK{+a4Gk z^gEL`=Ht}aP@Hx~08j3uO%LqBW02Al@?Ucv=f-dwoBeN(z}aH#h2qjJG-H7?=~+~< z#Hu}x7J}-6E9gz91?H{T=#ixksUkOvd|grS6O4K<={M8u2UCA?xGK9a7X^9P${{GG zWtaFz&KxLOsb)z;TrEV)Yj_s;a}QF62__v7%@z~HuHkPZ-7rqqY|*>!Fj2vD%7;A( zEGD)3tM}lQjS&=)F05MQyxWfTivGszJZBs(bHMU=YV42T|GDc;>{+kHY_V%hW>SAw zh>ANlKX5>W%;v#nFcRMF9D;%Qz1X(H(6l0gM=&UkCd7elhyWt_0OE>Pj3u!+qJG($ zGY9?@dQK%CtN$F!4A?|+&HNN>#iB%x>(V=uyfaer@7z$39D!wmffnp*q(=8( zA8$DhZG_=93M^6~D5C`*kB2Xl{FC?L--pJ1o#VO>Wfh@jB26=4I*QK^!kBH1T7kVV zY?a}f_0+(4+(PIKoFST<{N$$SaxCPa9FmMU=E;`}!g^c*6UB_juU+l2rH|UAqV&`s z-9(x158~P&dRxu2qHV#I7KmHBXYd#oXk zX#On7^}wJvXgLzElbyeqaFNr*Lhd-c%84rQc<1bZmFS!PZ{|uf%g+uvGslF={YvBbInipZH z;?dn6#()0ce7~^QqrO*5veOUEFC_hr?^OE59TeBY!*;U+Jtjjr_pgyud}bn%IpgobF>R z^gAu~(jJMo*KxC{FYVuEVqq`Mz_I>7J(*?J6BLjaFJ3Jx$?F)biK8j9z8PgIKRA~P zt3P-X)DZqYBm5Kb;bZG3%3@qajK1(D>gQZpWp6?ymi4pkd{sXunWjV$74@Ct&n;Jx zmuOcSk)IH&(XD+z3~}wlkQXWbZtX*n5&s();>o1j#UG#kFAWM$m`dH^x2FH}#kT41 zG)zr0O>z9O{-pHCOpuO?a(bjs<Dl_*lMHe{QlbPxTiW>DS`ZuiB6FJ5~KK>I3}nnP`Dl z#VN$`MWHXz2EXzqMm%_alj_b*<=RIRRmrU)#qQxhdf5ms%C2_qLFJSw_Tm3*2|qYX zrDUvq_=hdw=U=G8@Bh@6&$X8De>TF0MR?_(PQyQ;`J(-4EH&Gcg=hkF(|;;_hb4TA z5k4sU)AZ|2{RYzS{HcjOgd163;Cj}tgdBH^I`zyO$&;eL1NP|dIPBL`<8Zm|og%{5 zO8rzlX<95U)H81on9?KcS9GC&49$-K>uKK}GTQ4V!oGVXU$cK*l}c)O#sVMO7j56G z-pc5o+P*RMDLs-u(xl|TBXxHi_UNf`I9pGO!+w1qe8l?2db`9L?CYf*UpwKtyRCdP ziAFF)Qtk3szHa=Yr?Wm`!M9S{S9qje5r;i`NgU4B3*)d~_r~F3JyYV5G(KuPX!<9W zaL3QBd`pN%Fho*q!Mid3-41~sVEwIx>#h31x%9gn0;N{JMBs=&RN&E8-3u?8qac*0 zcA zi_s^mYGEU%l?Z*R>b7m_F`Mf;d~4O-gZe1WUND=6B-W!>#5`Bsuo{#in~M)K+BC6pIa zH?koq@-5gGk?y)hq?^KqolEBiY&KW}9Jm5_d#Pw5Be zmmBsArG3JB%PpqdOY*94E&Y6WV)yhZc>~FJ+Q_p>kd|-SBMg2c^<@}ifj{Z%bq8cd zAwNX;PL;7LzjaIg>n-teVXuVjsq&H)FW2iCQ-10-@mT1$uhk4xM3e_4?e~}6n%U{U_ z{|p=cN-p@%POLBZk4nH_&tiVUAC%wT?*2`&v9J6m_)WFp7wg}G#QMU2du_%qls>&q z4Lp#aBE7_K@p6&>D*eKL({08lN-p@V#t`20EqyWURfUEBmL}4t_}VeJFv3@di}hu) zJyP~7lR$H}&G<*jBP5@iST2UGt5Kz`{K`qOG`{}p0Tqz>pnk^iQ{%-^iQ^M|4kz$8 z%A?@3C=nk=xA?t!re=;;^~S4YLcp&O{6%?hlKxUS)9|0d#ronHxoW>c_{r)I5xy$i zKyFE~;jiTTNM4XwU!-qy;_;$r|Cc6~FQ)c?uT6bY@kdC$IkCK*C~IP6y;Z8uU>*M&=QTexU zfD`(=yU#zAdvEb@AmTf@iWptM(alXL{y zCz7N6O4Um)M|-8>bFe)R@k=-2Q~QenmC;7~M(tlkJGXyTVd3wkFlm-$`l8~~Yi#1* z2b++WNIp)z^2}K5(KE59#B#6hzWB{9bNv%rC~|RaMD<;6>@S9>y~QwO1wOR(h0qjh zY|s~i>abgHr(aDxQZGarW9$`6dui2o71Mqt&Jsyuzch`>^oah9>@9?V^~Fs_2BnuM zQess}tPohcFxCpY2z*qKk$MvaQR~^pd@siSb1-GvClF&lReKkS;blcL0@x?MdJAmR zk8Cg3CcR`;n-^;de1v|TF`qK_TN#&-eTV8;4gN)Hpn~|zA*cBY1zY6qUOtq(f#kEh z$yI#jd{Fr(&9EO5^LxFK`FI2$Lmr&(1s45vsvK_;)*E*p68-=`mP3c}NIfYId-Q!s zBg?b(_Bia<&di=UtCr3S`+J9QkTm#X@# zaGg;>>(h4Q@>F{^)hadXXv*=Kl5nlTW_lLkq2_K6ZS{DgHE$e=*^f|Csq% zOgPJ!-xz${*w2H1mOUfm@3Lg$nOc2U7ItDn5d_ngB3N9jX<;RMm7ddgS5&5N!)v`v zU;bZ_zVnpUuWhts`N09n*vQKk#<>^I5lQ!c@|leOs=u4LYbHb)5@AjEZvG3RU#7HD zSd06IRaA_`hVwHkzGoj<&GwGp)hebLjlJZTLHtsc)@0U-KMw+Wy^DXnF8y=XieARQ z^v{TYq0-v7+|-Kk4^>0qpZk~pzx{KTis|(?%$Tf>j?cdo;z|VQkJIwvzPIwQ2hJQXHxnvX04d~nI-ebt+oCm zCV$NKU{#4Bf6ZQAX~>_6m81W6L!kSzRQscFy@BJ~$AXex)!(yJO3rv&q@Q{rGyhfd zXvzNuO8+M^{Y{%pEpdL3CjRLkoBaVLMECvFY%j%lBaO#Pgv3!UhH1vbWuRvNua z&yN+eziu&^Sq;UfXYwmZk6URKvKG6+E&7|I*LSl#zmMLJO2%GkiF#2peq|`WJg@nO|EHtIu-P-ubmEdwC&-r9yw2y}S~|67pg#CsvO7 zMB^tkL|Bi$2;MPqv0jwmA_BkN<J+U4>JBpHi@9g-UCOj9<(RthA4sezQHgT3H&MIQ{YMQ3l1IsPw}TJt?kU3^S?LgFEPe9>(Luh z`Zoj&GJOrt~YVXIZOn@pJwwOB-DY>Zzrl;wk-Uh)}5e3Fz_n6DmDZu7#NW&GD@(sk9DjU%jH39Hl-4xXI@a|6OQwG-Te8+i zOZpd4`jyu6tVQKPbabT~)p#=~*N=)Ai}9wH5+6?)?M!ZrveM zna*0r=&vV~rC!HBo#HRFi(jo@*1W6ybxi&^fYlyq&;IT0r9XE59(76wMt?l0 zEM1k;%lM~K{9dJ%#9GG~{{bx9Q2Kw(mX2N?c0Nz(S6YRv6*FIy<6E)dqrLEoF{I-0 zRIL~|`?OR?#v^oZw4FmlBL>Qribv==CylK>dtavW>_O;SzMO?7Ri5J+56xTwilm%%I{8IFIY(VSO1Rkhi&>ER56cMF+XuNG3j0U z1}i=n&t^WNvUf{gs)}Vriu9tJVu?-P2fso3R=p?v^=XX1V$x^J|MfG8?^%}=uP6QwD$An{{#W&$|6mp0cU3*{PgSw37_7=a#S+W^gI`nm z$I21;<1aDxEd1$tIx4<@z1+h8$)~~pZe{PG7<(4} z#`C!-;uxtWUat^yP8!pkqHI31Kyd7Nz5MV3FlpZ`Q+6wBQF|iBr{;K4Vc!TfUJuFr zoGb$y?S;E9>uY5y=FC6zl5YX=%~V>4es5|W<9z6ow`Ix;dmI1e5aM5^v`%BKnE6l% z+E!#(q4v!4G2>UWJvR0minaTXDlgHd993Sfoo_F%l<`++!|dg=qCk|j~ zTg)I<{$h%yy=o(u@yq$%0#lCiM4gV_(rk|ZslP&hgY&;D#d$a}-%B59&IbuYj^_`~ zLw_XCyXg*=ml*O&DHr9n!zhpD^E)H;5-G1lc)f+?0@txU!Xmy*8J=c^dL4%sxRk>a z7U7d*c)`Do!~k^sX^aPo)+&Fi z^GQV$E#re#a{i9;y8E{=`fT3~nlzx%!bg>RwI#7~#4r63HsjBx^tOGg?q`W_FG7n& zEWN*PvNVjwYjUV*jbDT{kCG)htfRQRKb=F2tzG|Q7%|49Fb!WRD=b$`p`_X$=@D5W>i%&Ry2Ha|)2ztS4R zTGU^b5WkK!CO&r(eMv_4?ZUxYRNn?n5e zVa7lhU8r+xVAOQ~H%whh6+A__RJyaiu8M9 z*RGWz5!S5V85Do2(u%ScwNDzgN1cB&+n)x}UNNS7IQ8^Zrrb|Bjd3ku2jg9(yz4Uveq${zx7Qr{t1~0 zq#S)_+U-D=Ga->rB?N z^cU)WJ9_>E1Iv=7md*m@$sB)*{;0pa56^uV;j^{M<=w+m|4QX8i|=c56E00N=c_{A zW|5~2H|1h{T6a!7?)1dtdX{_0zGIvz_Y>}TUDb#9@*Y|YA*y_@@6-EyksRN;rkOb( zJG`a(CdRXA%%_s#uODRcsURG~U*L33PZPc`~M)4F7G$2H^$HE`HrH0tciX8L^pA~ zzm4%R5%mZ2GO0mT2kmjiwGa0Q#~iocs_lAHmh-P)H&bmPoC`C4Va9B0!?RJ=>y_q8 z))e_y_1U%lp9ReBzU)H1*@kXU!YZKR2)H1D_?2f=`Xo9L1W)!9Np~)e&sf z;&7Y%8b*9N(SK2kwsWPK63NFXUu!Jo%fLr1Ut$n=l=3x4#rkrS8LJ&%Va6<9(;fj| zpVIsVYxcr_J@NShy)t>>mACr9r}bg*X;hliSu>uG+%Jf`y0PM?|CBX*1eSx;9gSx4 zRrrNyj8IuCw5yE3pJ6$JFLcEEkC)o3jx)^mO^i>{UopoYVmy+@xK@l;7)Qi-+52jd39ZHyy? zTNrDE8yP$4`M`R{9>R5u{e){6my72K8P^gnW!ylxh;f9lkFiELi?O%}EuFE4E)Gj$ z>?iDCTu!+2kDPwO9gG_Yw=s?oZegquZe;9q0@pM45UykFCtSn0oN$0~E#Xqe4TOsr zM+o~EYlO2Hi;Kk48GBBEJdLrRu!C_q;m-fz^b_u2+(5XEafEOSV~ublV<%nIRnOQ% zxQ?-(a1G;f!U4v$gi9GW5H4aIA?#zU5zb=l90Huq*h4stv7fMmaXI16C7gc39gG_Y zw=s?oZegquZe;Al+mQ8o#va0TjQxab7?%?cFs>zB%D91W5#tD9A7hPh7Gq}$a5`fT z;WWm6!VbpeggX~=`U!V1ZXn#oI6}CEu|~L&v2!SJJ!22yI>vs&HH^y%2N>59E@j+6 zxQKCtu#d4uIE%3pk9_Lsj6HnxPx&6;Wow*!Yzz7!i|ibslfG& zJ%sBR`w7=DE+-sdTuZo=aRcEZ#u36k#v0))#?E2D>5M&u(-`{+I~bP}?tFpMPq>3| z1K~Et5yCBuHNuUIohJd;GxiX!W9%nf!?>JqfN?G1QpOF0ix@`;`xtA4vlu&122N+} zA)Ln8PuRh@oN(tNPCwxe#tnqq7)J=VFxCh+GIpi`*E9AIu4C*cT*J7WaDZ_w;Znv8 zgo_wQ2>TdogtHhshXbcG_7F~E>?iDCTu!+251f9&9gG_Yw=s?oZegquZe;8{1-PEE zhj1NZKj9k2<%9!_YYCS!ZXjI5I6~ORSR0U2jgzB%D91W5#tD9A7hPh7GvkB!0C)V zgwq)N2|E~<6YhMT(@(gAaRcEt#u36Tj5WfIjGdTdogtHhs@md=_ow0{-8e>0U2jglu3p*D>}Ju3=nGIKa4;a4F*k!bOZDgnf)P!dZ-+V}R2c zdkCj7_7iq6E+^diTTVaW4#o|H+Zaa(w=mWSH!^m*f$JH22-h+86Ru%gPB_50mT)QK z2Es**BZPg7HNshponwL18G8t)G4>O7FfJ$D`5R6@;SR}Ju3=nGIKa4;a4F*k!bOZDgnf)P!dZ-+O7FfJ$DS;y%o+`+hka2w+Y;TFak;YP;Jvw-UvdkEJt_7kpQTuwN^xR!7! z;|9V-j3b17j5WepjGbo#r!)2tPGjsR>|k6@xbxSXe!?A$8wj^Cju38PtPyTx?DPQF zGxiX!W9%nf!?>JqfN?G1QpOF0ix@`;`xtA4vlu(i0ZwP^A)Ln8PuRh@oN(u_IQ@h> z7&j1ZV;mve!dN5R$k=%q4}j|#dkEJt_7kpQTuwN^xR!7! z;|9V-j3b17j5WepjGY<4>5M&u(-`{+I~bP}?p(;}C)~lffp8n+2;mmS8sSF9&WXVF zj6HTdr4FJx^E1IGe)P7&s`; zUv@q%)6e^Pv-*jZciew*U+jLKy8oi)b~8Rd>>2mbrEHVO*u>gD{R2KqzKo*X+nP|m zo#dMn%f&ML(gbqdVepCHj|ow%ec4}qs#5N+{$=hz`B0OYn%Mp4xeYLF-XBPS?hjl@ z@!@c)_G`Q+-aHk>22B43bIYYN&Qq1ses>9c_#CvgTVgfU`Bs>8>lO3B$-LhY_hA!O z`P=rCncs_HL{DE}mgf?}rd-`$=wP{rth$|!h@D*h5~Z9@iBVwfXNb)1*jl&um2Fg8!|%^A_Jqv+BR9^| zSi_%(i+#j9pCIAU@*WpEUswqN?|c5l3WkB|fyy7WLMrTTN3UlP&Sb zzmM&22H&$xB@sS0e(;Wqf0Bs5+xyi5M*KTw8%gK*W9{`aJwC%VK^uF<^9Jw(?a9xg z(yIN`(6}X5%uqSYROyy}E8jP8ql=CIYYbC69_?HD|6*^ibAu`x!5-{c^XCy^ zuUr148~i5qV9%P~>+JcN_M(sUoZi@i8pR=W<-gjP@@v}ry^TH2@A&t*-Dfzd%v3sR ze!C1OTofPvXyr4Ahso<@q@!>_W0KW&`~f4&H>&i^-ds`Kvhc?`YnWApsG z=uhfdUQERn=XCU>4s@yJeO9yM{@Ml)YI#$zwADqQF8Iv{b6NBIzPr=us z`d&~pb?J-2rz*UUEg2*@@+T>XxS_mW%u7CnuJR`{+j{mW%u755JX=pE$O# zGqGIUN549;T--;WawMUBag1T}_X*|VKKf8%eQ_UsD6zh{k3Mubp?z^IVrpXjBnRc+ zcM0`Jk~}4`zPOKmZ(_Nh^a~R6D14-o5=oA z@@Ko?mpFame)Q>y>xVeju`{uM#eMV{2iGR5U*bOcosY|5uub~Kee{Rbu-HcK9Ekhs zr|z}SUp-*7ce1?^?OO#RWB-cuEp4~gNBbk}r*yL)KmS2ra4rUrvG)(3+oam#B{OW= z??UYm1|YHF9}cVV_uGfxXbJzk5kAL0{PULZhm7#U?7|nz^YG}^&>`iCL)}L?Pd5>( zI&^;R;zycnClLN1y(ripe>Qwr5uN|TdI)L0_pqrc@)Yx{Wz^88{Yz$qah}-mlsP~0 zki4-{VT=F!#{XW$;+02D7M2dyhX0fwfj_PP5dU1(l>7}oay(I>&evla(*)WUm%7GS z&%dHaB&)+P^1y`5<{pB%(u~EWYiGrXFPUI^pS*?KSRzO3Ka{dhIb}wEi}6SLd`o^R|MiXE3s|M0SZ=KB1HY;% z;798}qpO zJAd5=KGTSg&)~zFwtO(XQvN~C^;n+1z^VwPa>}y_`M`{&Jhk2cK8;GVtIpJn=cCFG zw+Fr9bGx!y@tm+~Q~$(y=J@t3hxpL?52fTH);tb;wxGKstA)Ss1E1Hf2cJ5nc?xUB z^HJrQ^Q*8I`E|LnTJ?hIb+i6UgSjwc$*-}*$DuScSo1jWc@@0^`6uVaKJa;_0DJ;U zbFYPuxn8!a63r&6`7CY9PvX~OXHk3F$?Ly_#d=}oJ~6)$@(x38w71INeQQ6q1ZDcJ z{GWvBgI$ZiU(2WbSDJg5n3}f!?i-)WmDSw7@EJ>d97=NtYufVR@>tS~^7txx4a)yZ z{%EGsS{`A>;-6=(qx@HzT|MyO{<}h~&&M@s-TLp*%IcoKCgL+!nz2wiaxEzBo+lIY z5-W56ouwA~Ey=Sy&(hO)ZH|iKlckCH*|cxdh@4Mp*0H8-{&9J#=tcg0Q7e<|T9%Lx z%vhY&ng>3OO7p$HnVPnIxI7j1g3s;Bs+O1!%vkv35TA6V`7746<0JPgj4l#|>*(ca z%ahVSzxunGN=pIAg$)az*Zkm9r!>!DO~J=(->~v-zE8wM?-N;!W=vazVRhUt3g$<( z)ZY1KTE=IxJ?mq7jyxgL)Bp88q-XavNKcE>{M|oHO*{Ygu|C|Ztgd>)v}*OQx0`>b z5T7iiS;?BmfzPhF(m!{z)t>o;uLhrbrJ2c^$AQoF%Ic|XwP!x(6Q4At`SB{#v&VtY zni}b!4Q#b%K1*`Jr$%W$&6>x7&qQVQezw{(pJBwOvs$L)V%9tkd|psi$FkL)`BeG9 zr&MWvy7GAD*HC5kN2^V%J@eUr75KDaZH9XG6Ik;&_-Br?dKz2pna?!h<5QaLZ<;CT zflqJ7FJDy2RQ_;{Y1PW7`}n2xO7Lk^n%{9s;`yMT!hAK5&@%IcX- zf=^-WJqOZYE^Ju(n;hbkt~9lOnwpZ2TF-IZXX!tViQgJ@PgE*ST5HB)`YR#7B{|?% zqcpdNO-(z08TUcJbF>WAlfNb^tAC1^RxNzyN;4Lh4JAtZACrl>nUyi#Gv*62Iep~w zf-;%6sc(Gdc)@3yQa-rRRF2`}mg^rpp7L6pWA{AwP-XJJl8@c`2h3QUv;PW^X`3UR z^EzwB=hrdunWLM{LzB05X9#SDMi+rlwK<3qe8ePz&p3@+7~4 zS!Ux@ZXst^p4L1n{q@85%vdZ2>A-}A-;&ATSEDq)Ycn+sehZ0TV?eb}q50W_OK)zH z`;j4eAG$+rd|*9Vq^JJJN^aEGV=9kdJR;L`zf4c>%46$gl>bWeV%Ch$|6}5FyRtf# zt(yLo25rh?4)IA>nx9JlQc8{kpDhnd|NNpad|sObK6Og-Qr5KPgJRf+_1w#q)$iXI zrN}P7;3iA?8%ul~O7oAbDfy`K*6}k-|ETh>Z~R{PrS#XM+xx(;>QeA4Rhr{i)7D>o zZ2y(jX>7IU^0faF@M)VRQ*t(I#`96_M}?Vx*1?Tk`!PpZU9j711x!BDpw0MZ8u9Td z%_7z`@=vVyndd2t_TZTK?RrS2dckLX;1|vYzj~!v#G1#!U)L+EAAQ{iKIapkG^M$i zHID2RC=Wd9Grrw#ov`RDhnc^vr6 zQC8lRZs4Ne{zUV zy3+g`YaRzaTON@9`5jyB**~vc2tIX6^A6VRflo;<#-Eoft8WfS=pUG|_W#7kp)|`` zvj;wCIN~PjcKz9__e=lmV5>d*=a~z@C!jQ!u%<1aY_oqwPunA((aP#qgA@7(W-R{c zM|?UeWJ>jV|)m}}^2ib1%&+bg{ zX;GR1){N()#v5jSiDUDYEbBJkyH{CVak5CI&3tceC1yk2C|ysK&R5EhuyV|L!7=gK zb+7c#inPA*S#uuvEK$mjuyPC^w{`uZ#Nr&g`gOfB*)`lO1=jinGnV{1pU9*s&A+f_ ze107hpEc8^f2v3HfzOhO;8UYC&tuKwz-OYe`t`^@@EJyYI)5Qk@*-9EHdRI>7Z^$sX3pQ_z&^&#+G>8vMe4qE|15K*G#;a?AJG% zm@Zn@J2||N7yZMOi}qtP%ejb?_GJ3o8h>se``2w1lgtae695dJSyMH@cOl z!d{f`d+(9Cu;HGB`3EzW@;&7T$iFP5`7~?xP@a0jXV=}5kK?{R@Ci=@rbDz&!<~{^`?H!QC8Ph3#)ed z)xEw?BR)Q*S<9NXd{E6~e)Ven@kNvU2zSzHfYPH%va; zH$ImWpRr2W&B`%+K!nOOO0g=>{$A9tEq6)(EPg@ov1@-|#?n5&b{5FgDa|t0jL)xQ z;&ZvOn)yl}_>3h!4yAeEWm7Yr&oPzfSJ4YnEt%brD8FpZBR(@8d;&`I9M+8Ib4>mj zt*qX?%uJ;@UX%uNyXRLw;?r@bOi3nd9tS=Pl-1K#_JPm+>EKhOG}~90n(=(PB)$GK4y8CAs z@#(xnrlcbgAGm}13p5w1Kc#I-i;KF==U-4(J!^!2Y{oxxr5Q_>&2fX$G^N}s6GO`A zztnzbm2wp;$Mmo8Gx@7;`FF1}IVPO2Ji)HTSyPBi zmeOo#GBsuS4$T+)L7ibW|1;)iR)6(s{;_4M^jF5FMEPkm|9EXQ_|+-RuQ!^S@%8VR z_*|~69%id%`y>t8@EJ>d97?m9HRJif&y;_CYY$$%P5S3?=^wlH3A8Nv_sl5p2`EiJ zYaRzaqm|Vg*{bOunLwNUj()_a<5roHk*s+f_$*LXfAzLmN_*yW{~6#@q%@0J^EmK1 z@)McLpR(1S`RqO&d|H&Ihc#{a^s)XctB2UCl@GGbQhufopDd;MZ`QQsW3ILZ_=HabpL(S^o;7XxpgO4jWLYozlk1h$3EL9!u|MB7kthvQ%3rja z%A!9J>vcu-miAFrkC^!pa~&^@BDu3TytsjKyEioChpUcWI6@r1o_)ZiXfbG?zM+)9{Y5f;oBwMncTbbH7TqfKQFm{5fkL2R;+KTkV<8FyhmB zolMC&$Cb|u%4!~4?U_&2iQrSJG`r3-bK2HFeVfk?RaT$A!nA7T(|ta>e+c-rp}(V+ z{wCJ6<WPJ)iy`k45w@k@VwbY&m-Eja=F zYLw<9ta%*D(?n(UQ)#t#>yN{TPv)c6y_2= zhXo&-_F%3wV{y?$qBKk?k7Q*ro@}D=WaIxPSidOLcAs>#^@~C+Y%i~bS!^H_YD;3} zSYILm?sHf5N!`bt)z7?7y^s{?zVD_6%$KAbI9qQI#mt|M$$vwAGCxOF_RW7^IN-n5 ztE6(|F;kiSSET%>`09Zql^$dL4CR*gQ@DO20X^1-+f|g?WR!OM;V@&#>>MJSt~8%x z&G_yp(>Ue=Zhk2SDw22 zYkxoRYxAm_!WC->l%vsuQYcAO-KmWSmDK?YOshTf z8B2T|N^?`l)QsojmhH9Qn4kA*J>}KO(m#KGR#>$ef7-97EI0y6_bcV;tlWJ)rEh#j zE0fPJ>KmUUhrws}Wil~SS-Cr(zRmX*D3edHNi)Bs!)?}g?k6%uN;97|WqyU`SI~GO z>)iPD*mReAU%k=)O7o$`G`I-%^WRzM@F%whuT8Dq;P6*J>`$7RjBnMuN6fo6HF#y( zxNu;wxE=n{)9I4n(16p{nI07J8vmH|WqTa=e)r6sYvq0Q7n2dGVF|D9s~>2DOyQ80 z@TxpkXg~RoMnw_4BVd+#RfhJn?^Q%wPBSA?1To$!C;y~n95U`tC?V{7(HwtyfpMSm zNV*SwsruPSUd(;#nIsP-mW%t;rze(|kp8Ic*88T7{E_|(Z6z{&$e(|mD)Z;<598~x zkpQIML+P#gKt{~_Z?uexYh`G|Ry#7t7~-1p;9OegH?CxRi2!b8D{yPq{t^DKZlSu3 z|1jPo3wZyy@+Y2`AsnbPaV5oH%9zHtcz>-aCnCB7djrB=NZM;W-z?AM620EQLHRt2 z?`%^p($@)AijUZzNH^r>{n{h-Cb{1u;;VVM#R%^u`yJKI0(1Iv(`DjQs_#mtlxJ#{ zq;IC2VvBtrP_Eky@220AL-Mlch@I>BYk-P1tRDC#rrQRV=>-;5r@n5tueSNTua%q8b6t7 zqc3KA?1g`GFKqH<=U$!Ts%y%FIi%?CZSiO2XKAe8nRRY8Mh1;~#qm(J~X^g5cIYrap6zXFR zv?7M;7H{mS1W9W{ZYZaph0l#Kd@ec~pHmedZ5h`5&~r#0zy8eRp?xs6MV7+_Y1En; zMULVIt!*Eev_yR&59oo%%=*$qj_r8HtPeuo*`mrX+C$3N4#wmgJxl4E^)s03HyYc! z{B-{%nbA@ZEUw8x{SX~V{aVw$C^((XCVr0iG+rqA#M`I#CAIo4KiU^*f9ag=_Nlz< z>1@SVzI4Bxo+ zl-l1U3U6tD!N)7&o86PXUu!}b8+}S2-sfxPr>H1(%AQ#msQp4=_|xa2FsR;7ln1ds z>bpSYzfpKZe;yie>DMAW%{0Y-;Jc9G%QEb%@mo6MBq|@J8@W7Dcn8au3C#IZLb&5m zlfS^}ZoB@apXy(zf6COBLC3})B0Y6%FO%%oFc$s_Fc$L0G4c7|w!q{s8de{N7Y%8a z1qWEalHyBac>`ew<8s2CkC^F=5bj{C5pHAbB!9Lr&Lr&E(5-%;ys7#@{cniOY9Xk_ zxhTGT(#z{mpWO83I*L}Cdi3y475*T?*HZY5qlZsb;lD(9N``j$;iK>wpOl)EL>g6h zxx2pXLR~HJYp0Kn8-$?zRgixi5zZfA)K9;@n2bv~aJjxP2CM#KHhz)?S^XRD4=P{e z4{E;_Qu+#x##j2=81EEoZfjt~5pSRTP2u5hT!g;wmlkIrJot<8NBSsB`CsLxWCjZ= zv|)$8<2*%wD*RD1(NZ3a@E&dV_p#xP`YqZ6dL9&A;BdTGq{Lr6%b7HDu-O}?iqXnt zLt{rPG3i|S@>&s+#F9IU|5`A$DR{Bd5=~soflKqfX&i-+eSri!UnL{!DLwZP{ zJ2*YUA9br#|7rRoRZn_|{E?!cd>-acr=|SjQ`_I_& zygt{B;og9W@4{~~oVEKK%_8MLl^=mO%>KTT_|!M6{E_<|@TXJvQv4=H{~w3_x;qZz z{cSN=wLgbvTG}7j6Y0<5_y{9DzrGcLl^nQSZ;HXn-clQTvxtA45dIl=+P zRIv5Nk!F4fdA)(n`KL#BpDW6v7vZtqP)TYT-Qri_tHO&(K1vk>Ra#O0Rek9UNJp6E z%gk@t{sv{kuo=PPvb=kEYENl?TcIts21cy$;bZ&9h2W=6x2k}jn~2wsu(ZFy+)T4P zX43e>t7Tf1W8+&z)j+m?2fyPqsQRk=bhCVk@lwYOvwd(=|K4U``My9sP4S6u53z`Z zaa!E_Rwt}}!|wf)^+oC}Sob*N+DDX+Y)WtAFI4=o^$GMVv_Ipf5V2lmyi3!qE&q`+ zHagxI(jQ;pNdIm_pVzxC{;|^Eg>@UXu%=2#oPNw2nV|Bt5%0^UUR-z)=+HXFm*czH z(7V^vQ_&gg52#;m-FrVYyQkl<$LSwr*c;v5o<+YzyW7wwJ~x$XtBl0&#ySR1)>MC7 zqFrhU|NM>0S+9xkW`E(-n}U?m`Cck$)IK#m1+3OH0u^R?@>Bk{JY%1~CE7;Z+#=T_ z%jw;?+Ve(9$x-ns`>A?U?EbBo9|Zfn-uL+cN_1$zHGf`DmBO4?nE7EmA8G6_lRwS= z9|Zy%49_-Dii2{5cF#&t-m#8-6I>{NyV-Er9E!~_Ej~s5#@d5o+@fz(+Jmi|kVN^i zvD^ywVm*hB?b<0mujI}pJ*z5Lw<4&Bf663{NE%wxWyyb4w--YCeM#gT!9Y0cX zv%jmPpEs+YO`jO`vFK+qd`y32=}-Jx=CHV_j<69EKFjQXvSk00WD_3kK_(HYNqNf{ zZ!Q-7Nvheumyo>9Wxj8{iEt5z7xT+{4nK?JSu9T_dz~km_Nlz-4keG_8#jK#$qB6x zHsd;Tq%bCYwwbI7%^m z)cag8zQFrjh<_&192Xe;!AJC;=^Xzz#HUon5BW0UQ`DVLxjA1ir}=sl)U=GF@IiRR zzntdlBK+Z@iTNYEny;7Bd|ia!eDv^YzFtoAbrF7%HGEwEXk8D#1BbXor5c!IRMMk{ zcjc=}{eIVXs-5n!KL6$Jx9r}B?JH2Gf~F}^f8ydd+L#Y8Mv5EKWQy}%g8Fr&uUOpd zul^kE3D*6^XcV*L%)HQLIoF2HaOMZ!@(15F3_f_zTU`tDgU$ZnqUVr}{@}^};5%AU z4$2GO3*?`dEKKh^Vwg5ws11GDR>}5ho>PR2nBihNDiu)J&krV}m0Kucl0DRa;gyB4 zan+bMjvm)-6i#?b{$usmVi8I2_ghaC@rDMRdqwxULNRdtn%e-=vdWLBeu)5TndraK znWbtc&qf|uCVS9F`{qGVz3n#D{+RPi%+F3iWsu_|z2#O@UPwt$`zNCiL?%@ItHMK0 z?SVdBshMF|F8Z^*Hv1>VWMAxW{Fw4vtX}|+)ED0I7Vlq~^BbP8EF5mByfS@$X)jx^ zfSmnB^WoU_qYAC?sQSfvW;gxV^*Aa%T8h;~e0*-TUiGn`=2z`$N8>w7Z-P8le|!>L zYOLoS5$kys+VA6y#D~XD1Hzw7>wkwSyd2Jz$EXn{P@e_fvUUY9r5tVNo8IoeX~&^MPX=FTaV!78)<#@PD*jdq7oH z_SO;0X_Bz0teFVQikXtRj#l)dYiZF#1}7_~2ZLp04;d_*>_w24Cc)rD?;UVGj%YdwA1IOe-@)D9`n;x~~8JWSU9G$)@G|o?}TUwVxTA zPvc9ie`GuRQ?KXZd2+thHOD)o&FlI3F?_R^)sXOd=XikU+dkK;{lXj=o1#9{^Jg_b z(EY~Lv$Y@R3wu+ZwhPf-$M!6=w@uRi2DDpYFGlg>Xg5;fLHlCAw2=Lx@T%Fyda+ZX ze-ZE1BNfg!@OgR+=BRmasr4Nmqp6vZ^1~_9Zl2|MUM}VvKCdsY$bfpa_H%C;X*}3T zijSVZ((Ns{|I&8c?vl39XW^f8{y6{Ht$);ZT-e@vp#2@3@4)_!o*z`Ww|I{H;d(l+ z$-@1S$o>5A>uG(}|0!hu1=kawnCA0(`1QmmrujS=a=o#? zuYmKVV)w;neHix-czrzK^)$YaKU|;Ub3ODo_Me!)s-~{N{ug#xOBc>}n`szfsfz#D zpN@}-kDDyZK)Ln#N?A)D`YWg`eEjp!KmEcrp81^GUyA+}RCYf2j6vYvkA|s_zfkyL zKdXKC59VKr{-1^h`fJhufyYnt$H*%raf)X*(uFEMo-ftH-`I}ZRnpD@z3s_r{Fw7| zMJ+gc^FGz>+vIvN;%ewSHAy%!?(2GV7{!14IuYNq9y!LZasP+UziW5(**~a!<6`}) z=;~#@4}2~2UHr1(gYRA#|H1qy=If~?bidxm_70==GFAt)*T?v4zmoYZT@w($TztQW zoitFdH(4N=UH#K4x&D;TM+xms1GHbRFK{-5!ti=A#7;jE77}?s4dXq-ZpVeCe7;zp z7BXJEcvQ`{IQW^v_AHzjQn`JxKD1uxIq!h`QGC7%>)ABCpU#8z>>i+M{T7d1RjESz zhzCA!9{WQR@*#V;-GH{zSMGNz8t~#?yl;5LR;lk*qh8@g9Tfw5i1FxnzMp}5PVJ%h zQGpNUJLl(RN>7phOtwY-W7YNW{12~R_)FOz=J>$%0oQkY9<24)2aax84>`XGJ!0QO z{@NaH*P>1DFK+80KIQW*n^_}2H_HcWEdX~?hhWI&asXytwRiF2fe-+Y~D=$PvIvX;e2bK(WwdMQSI%38Ld zzakhfhQZKayco8drv%2Y#bGllIQ|;+4-NK<{Zxfd{8HqPdbOV;^dUQDHyd`o-QciE zuLt2zS}W3D;7PCjg4!d!&JV^5y*?-mj4$+B5$qRw{p2&giJ#ExgJ8eV>wKU1qTUx0 z5b6WRhh5FKs0VQ#1AkNXgY{Qx*!gy`!zMk?r!ZPmg(p3K`ioZ&XZ`ILj2C*Y2*wLN z9}M;jJy*aKpt(_hQ~N^C2ZQ}W&*OaJQ@sth3+4PmcFfK*?0h@!ut~2`KJ8Keit+k- zftN4&#dzI(cA#JARS}FAdQA`Z3%x3W;|sl}2m6IyLw(|l`Ws6?RevMdt{MRK*f?D# z2L3qO)$MZqARET}5W5Pl0lO3@j*;K$^*j%+pUT&xEv_%b>*0M`^v{H|57GZH-y?n@ zt%o@Oqn*Td46h$g*X#Ak^?pOe#6oKe?D6zQgsKeqWgvdt8=61bf=}$nkNEs=`852q zc>n9|A2>`G@eB+hV?)T=<^Ci}uF5?8%RQ zt^Da&Pvey>^$`7^KI%iv2l)v*McSm#5WD?v+YNuSv@N``AG=N0dl%Xxl@0mf#xRv_ zF%Z{%rT069=y&kVLwpj}rw&?z8M|%_7#aMp}ztrPJ^#7bE^ms1b3H&qbv^@arscbi6`{SR|elcFA zvfYm3q56{Ts@_ZS`gLrJ@w6`M8|AM>eq)c)c3fP~wwPa1Yjk@8pE^cgUyAsVPinu2 z*SbjCVm_Gsn6~q9yv(^&^XtO)#y_t8;`-EwwJrHPqHWP$Dz_)DAA7XsBd#AmR@;Kl z)Gu{^i1E_;fQ+Z>5#D6d<3*f@V>hYsvKMS~^>`5u951oY#CRba?*GBo@zi=7v$nSR z)wgJm#!D8C7fj1q(H%Hmnn5NQFEOjmH=Y_VF{{kqPva$KP4V|*8HxDg{QWeZV%7+M zKaHoDHPGpY@gnpeyItzf`sAzjI$rnFN6j}eYl**~=8u@Qz~4{fH)hRn`hiaj8n#>4 z%kj&6==!)d&UroiDZjWi!rzb60_YdF2KxK4S>fNX);C|$BW|_$`x_L#&fib{6SvBo zeq;Y79y@;jfpdSR^K(59$3lyJ;VMR$;IKb|h`o(&T){3ydlTDLXs=_t80}WJ3(;;= zHl2SY@%|e9V!zVxIkYd&lfcffYtg3Xg$rlCD(5fPe)Jv$)2UDM-(Hnl(w#YFLl6DZ z2JBz&P#3@VzEdCLdZFKP(@*=)O;-^gz5j~Y>A=ys|4cFLA$ILb-fu2sd|c)qv%BDL zj{b@3=eKcjUTal-=G#9~e~PE^%iD!A@Y>XrR~_{SdQJm}-S{8(c%bVGtvew*u^aB)XzZtJr5%HKqMn;i-eUM0z-GSK4KP2X zTPrt<<%V>P6 z_Z8`&5&YOc_V~}gQ~M#^U$tieU+IVZ;Qb-P&ag`j8{Q8x>>Rt$u=DLaw4LKe%qN$v zH|85SZ$LgXQ(u#Oq^-_RN1YIO9y0{Dl|zI58R&nIwy9V;;y*MBSQUI)u!**8ASJb8H)c1CqLGwSosI~`w5?8ZD@7m5BcR`K4Z=EBzxxWIzRNQ z{6_ikC%^3fV885t+6L?Vp#1?@7;}!aRQ)#~pP6KHe#9U8-^D+M*QYXG%-5TakntE_ zjA>x~Y*^{cpXz<`Fr9A|#v9Le9@=A-O?)?f+HLS%$F|@z^AqhCe8wx=F<--1^c(Z> zmQRI^crjn6XIX|n1#Pvy!A2cLRQ0)u4qCx(K)$J-{6$!NjcUV7j{I4lENm8^kF|vQ z3#~e*AKJ^u_O`uF{t)0-{ zjL#8#D;6U@Szp5b4C%*eu)3R7%Ftg+;V<_1weJ0ej0Z0aw&;tE_KHP3SQhL2{qvN+ z%-=8hK>bbe_fx+4);M3kYdyz8E&c-^N`38z`Z{QWr)7WfxiTbmsG8BhLMR)@boL*Qlo*6T}De$}r0rz+bqzolGd8}ruy zX~!@yKHo^$XwH8Fz-E5a6#vn>aS)XK^YDB`eE!|v-;gwr@?YVbf1!%s;qR|f{w4nY z3^*?l?Jw~6#}$5tzn}Q0Ta*0##6R5{?e9;Q@zbqg{(j=0Zf$+RH-F-vZgu$kwt)N8U8bVqzJ$E)VgT%GV$8>QJ=l0 zZdYBA#1{#UTe=&zTCwNE`eZ1soDAzQ0uErHBuf7a;}OS`oq9ceUfsFBhw_Zb?`1e@ z!Pm-v`9(B-Pd`okZYN;-=Nf48+c7?eQ&@Ym4jZc1eu~eJa7KfPG%&C~_&iEsU->c` zpNgkQpDPGh#Xx^P>GFMj`1m9JendR5n1)l#J+=rk_}x8P92sUpTvyT{#pEMcaZs86 zNG9}+KQ5s2_dNpJzlS1qa3oh4NBgs%Bqc5&)cuSCC3rrk`3lZImxheD9Ia0*kl%J& zX8N0LL7g=rruEtQ1o3-`P%U3;l);bY1Ni-~=OXdT3gnkhEv?vjZNOwOAxrZ+QSm!~ zP?s^v$xlD8SMRT*p4R5KT}LdUqs}-}eUc4kh(c@qtKuoXhAebln$g<=p(kYCShYIQ97) zd*P{T<$j4iUjXld;%(vPKX~t##l{7`PXhh>y(za%7)tyH`*rd!75M+iZJBbb_V9id z{SQ*JK7L$(?4Ldi#K+M8L9jm`{rfGF$38ysr{QDP2ZQnR(0^mFe=+*c5B9G||ER7& z{u%g~?t@O3pT}dK=sh?uS<>jNce=lu`rc>G{<7CS?b^TUdW7>a{5%ERSQM^v6(gv^ z?KPx7>Zd zyGHe2*}t6iqQ|2c&!c`H*k7VQhx+&nA+VivE}ft1=P@xm4u1o_!aw;*S%0t}%E0UA zoJ94a_8;c@N^|qYRnDy%{6vy`1wE&{-FjxDTtvQw8G>#yU5lK)T+h{aFH9a_T}Qws z2I}ge`IA3_tJd4Zd=8|rpK{oQe0D}YpM4|~sb^q+@VSG+zQbV?^10>_;ByWEYZ%xc zdtJ<8VEGf6&&Ntoh6AK?lJB#r-=FZWpF&4HZ-kWqw||dJ4%&1~ zRF~^|UR?+JJVC(A80gSvhxwdAVNX0OI-etv&%OlQg@OISXCG>(Nm{wG{b+^Mfck5xR=X9s*WV341VO z1*_iFk25+>(J2)3gekq^v$Y2Jtb>ISRoaQMedbe2F%P(?SA3=*pYeqKWU9vYna>tj zyfMdLT&iQbW$Y;L}LhRns(9@}cw6ZLiDypPs*#*TS+3w-D)8*%OZS-{a4) zra1kuUdM60PI^l2CtL*8`Gx=dh97~J_a5!mAR=5}qzSuYsmpbypFRMYzWQIO($x$U znaclR{^>HmEUWHuM}EM6J@TLPirgrHjqhXGjhBX=$0W{Y4AH8;GI~CHV?N)%NBJ<& zk&j!GLU}*!&qsX(4F}sJ6!yid1No@SwZ3!j2R@e(u#kcM!DkN&d(*7we7?O8_`LV7 z)F+*RA$*F%^vQD6-)suIp(K!xx?JmX3Gz9WfQuRE;G^qL-%qLg`vJJ0nE0k^KLPcZ zhxIoW92f>{aU(nO690OPoZlnsrEF7fiJsrwd$Iosn883te(rjV%x4b@JNowMe7?O0 z`~Mx8$o6s#><>P(DeS;IbXa$8-u_2ErxI|@KQz$6NB95oY0#}Ozry=}k2>cc`uxSz zBjt^iz8=13NWQNH^&;NCZiZ>f`k>WSFZy~FAD;g$bi`*r-d2etqPkFju~io8pJh#P z`n5*s#`&lJe5AJAI3Mi+CtJ9<-Tau4&F2u*dw=%rUD*F{B!s|I80gS@hxyE=u)X1P z3GzAh|A)`laM;pYecrhf_$()2KkIYh4)8e{`TQ;#pD6c3YJtM~c?(W{P@g(k2KdDV zy6-8Lx?IoK&s77T`v~|a2Kv=cZ~2_K1AGoaKD+$?@OcInklyNZ_Z`6JIs*2yJ_qgq zpPiA4!g@OZ@iQ4O z4*I6D-G%5N~9_*BpJ>GFDU?B7%4;M0uPZ)(!{4Z!x+ zk?m;@_tRFB6CX$XLdK`#{-WApW4t+@csY_!DaI?}csqI?cVN5h#^G(z=lh)(VE@DE z2^R8)uWO*+c3?-@)<;7w{uuMpHXgV`PB2-r+)`NueM2j zUSwc@=yMf?wK!}-K4&AJqY3y=2JR>yHG$)NzwvdM=E~syQkQFeR#yU_CkQy7fji2l z*m1vb28F$)LzksnA9cCrb0qTFmw=};a7X#5f=oA9R8OVfS zJ>3o~h&}Tqy?$lk`ZHD8=6cc#zHh>cj_bmZ52N#ac0TaEmw>gM8ffrs7kr!kn zynloHpS#uK3^4Y~`>P7E-e>De+!E6JA&KvgzFs5KJE~i=bjR|H=XY*{^p+EF00TKa z-Xr&Ry}XdZ{*uEcp>f;ETkk8$7fzNdWJhFfJ97thf95x}JosrLHFUv%}g*Q<2 zV>+#nJ4WR3bq9sr!eQO9Jmc${TY=9x1bmKxnoS>`4-cZS4IDNhpHFWAKCi-&5YB_w zFt9)PTt#88<**6)oQ-^rCSaU_{lRDBN}1*<95x}J)pLN)69i0QV1MvAgTn5^VH5H> z68Y>)z^>2xwVqePf{JBebJ&D@7R?4e^9k6%!2Zx@j5lmTK6@jd?^~#z`m~ z)Q3KwJ+hwmf98Ga^Yb)a816y1EqjJwd?r-)Nwd zpW;L3eep0pF$bSBDC}!JBCOx}qq<>OG;Q$BqdGhDzd=}jVeC88y zA_Mz_&ln0@KH&9$mt@5^VB>L>)@N_z^Zg2$$S4N(2cJhM?BxTa^O;)$d@dv4PzL(( z>Fs`c4+{IR3>)qF$Bn?}y%(fD=P|H9_{^rTZ*o}o`10(BE z$^IKRDtiCDeI4}QG6D`^Aom~ZL7!jBvlh&C=n4HH^lzQ-`#wuA>hBLkW3O@1`R|4N zzgsF3{~)e`%zwxAe3-)Sb*2vM3O3O*9&WuB_*|;^Ox8djJ~aQqZ&cvtU;NKE)B=se za}P!5&myYd{HHG0!}Hr&K<7O;nZbqbrF;!!I()t%=8K9uXNglA(QQ`qcPjxod)DwF zSHkb@z+}^&LtmTp>>2BSt`fh)4&Q`pSvl)}rUcCQi)X?5j~^RA{%1%U@@toFZ4jI) zur=$bM92j+?x?JnE`Wn#d2?CC1 zpi?h+{|V=xISYCI!RJMd|J1g45x!CF-{|vdoA#0KXY+W<1NQ3EBH44)kizpnj6ag& z<3w*S^x)1B_;9`OCk>GAYpC|C`Fh;a*drfueV&3o?<+s= zou*UZ{7@FqPt319H>><1zR+uOCA}Z7_N#Gx-=gA7_>>PUnV)>)Q`uDz(0V`5S=q@a z>B`=1|5EUq^`;hhtnaH}0fS*Czi;O;$PNtn%=UQ?%QC!whA8g1^Rc_2R1U8pJEs7n zpq&luE*ltpMsOr`xi08$W*M)ZDS?lHdR7yXe z`JwiIJ}P2$Sak6#5NzL zMZF%D>r}enM6Gn9dR@6hN-Uy$^Mo*q%FFz`rHn zxeR21wLU)enDVucN}?Wjn&?z1>jbTmw;t7c^$0Cd0{=GbHg!GTRwE@k@!|fcN7ddK z+1}vY1EYG^tG#D{T;IdWgTuSAPSatz0_y3Ltv*W0`R_ERQpw}AQi7_1P$wG+94;!EPF+0MKXc zJu<6>eb(n@*}&lQf+KnA=iejBV~~{ahd$82m*q^f~D=(C4=VtYl!K`q}IAAbob7;M6Dk=*ap!B9|~(KX1z| zDCl$hT~eRcKI?OWY+&#W!I3=mbMU30&o2p>#=u1Sd}9ac^9Ae}xqi})imcCUTEayA zJX@>A*A;h4eF|IpT0aNK1_logj^xp2r)i*%Efhm|br3QTtyF=yWPt)O% z^*KvUeqMqT8r&9d?}a{(O$B{!Bj5uJ45}afeN6u6n@WFi z|4&h~gA-Gi>-+J&kj1KJZ-(-W!xz`{RMjBzyMvl3>IJ`R zE(Ct(5O5y`vRpgPXAp(0=dkYF6n(ANrxyU9SLrzA&kXDjK37rLZVsD}&)LZ5Xae5L zz(79g{O;h5LF4T=u!H9LDEAMM$J;Y<36taP6S<3q@%BKa93`)}_I14dNj5O}mf%R9 z4m)BB2(%9Y4`m<=WNNJR+3BMoeSU-;BI}bmI)+ad@S)Z#U3#rdzau*HyoOip_XXvWF z>a#ng`EoDx`KAE$d6$l0E@xn(`dRg1kUlTK4w3cg&WxAT2NJ8f?})-3KT z`KZgaeyh&~K2H#^XM+Yh`IOW5AI$UA1AU)9e*X>rK01DE%sL+~GoPQ8&tEL`CcL{o zBEOG2h-emW*EHR+JmvoBIgsD0bV76p1D*M~^p4EuDhiv8~Gefz)!!`iS!4b zjdak{#bFcjS^a11e*!LIV1MvAgTmHw*o1tJL_Yfx@Dc|4@e$8MH#ZOXT}Hq*POLxl+JnOW>g4ErzWpQcd5=zT z>N%1A;4_=Te%=c{mmr^030TQMKR$7JzgTE&=3M8KIk0%B_eZ{_gP4c%g+6{SnyJh6 zeDqE(@L5j48GqJ5C!dP>7Oo$gZgJI9RDSAxgfpm_zh0)B(c_O|AwT1Nt0R%$z62b1 zxduAoY*d9pbx*P=eXWy*L@Ij{-73E)bB!S<}Pl=-Jj}mt>4MW z?{@_J69b+6TzW;`ue=2d0HO3qID*ffV-RU_R<{T|YY`pU>vXM9LZH z=r7(6<3=C$!!fJnOviqh{j-$6&gs{EB=47D3mP&WVvd`eGlh&20Hj~ea(aOQBi;6&T!Npe7}7h3eVp32Axk!Tl{`j;jKVL+bMS5 zjc~ZCZTNnCw(Uj_9)2(NO7r?=wAFke>bYWY>U^E9VD0vAO5p#lJRJYaig5ovmEr#1 z{yp43tSa2U)#c~@D1_fXfc}VEOC~w`gZ=ZAe}U7l^+^|>uNZvdouYl*PKo~*pC{*& zxHTyZf3*t_=M{yb9`0&W_xl-WCoNwkZTWqm;`d@>H;Dd4KiJdkbhK6f3Vtx%$@vNo z0(?FY*`8B=+fsmAkKQZ?)yMbibX<`pr0Z$7>O}lWop}Oy1p&($=%{`;ud0}zh5TE; z+~|9L6_MXyYG%TN5%_I6f%&a1lZk!)fCl>V8-LE{ec^WzHS=hVZYEg2JO{tS2zVL; zO@2GppZ_V9Y42GZflu=|*6RTRKL3yghVr5P7!IVc`kFvtJA(Pdb$!Jge0C+^KN#2_ zeExlt)TfTay8Day)W%t#8whv-1N(!|K@|3gIxTxJpA-k5FG^%0Tl$yJofLLe6h5WL zvp(k$u#|!Qq0e9nd)C7d^x2ZleAdDmiMxdq2KEP^t10X!95%SW3LSioC15QB`-9KN zF!f`a7KaVy(|#Q5^ArIWF|a@QoY@;baR;B@{QvNI`Fg3(E{{a0pN3;upW6wzs(SRf-wv+-vt-&AJsE*d^HHqV z0|Y#bfuVe&uKyJF(5C|V@Om3_@Y$7s@AWUAe_tc@c`XW`+AP-R1_EBkKtmti|L5bj z96x+LX@cYa!Zj*ye;Q29?)lFM`fWLq`L6w&O!WPF4K(<=`OtZCqWgubDQr)p z4(p2KxL+uA@Hv)%4>Qo@L-R#-zN9nb-*oH2Jyai->$4rLa9M5%^Rc&U#%zz=s(a$|vG_v?qma zc_{*)0S-RzUnTV^U|@gnxrM?mSQ&v&@mSX9bOL5F(BxAt?~lh{zCzvKX-%qh)(l73>Q%%2}L^jVy@;pMmkJ=PhQxe>ti}QuC|N2z6PxitKx($01 z`91M!fvr{KiC29BJx_q&tAQ)*IhX7Aql7*38Qq?+lP=Wl<>2+38ns{8sTXO#;G4vF zVQ*r-;`%u*eB)HYlip*m)_M#4NVbKZ4qNzBm7nyPyhQU8{-hVaH1rzj(ld$qiR)*& z@M8(j`l7I6{TOz<>MW=n_LnOE)@)z@aOLlC`k}vt-i-~CKgXLVug|dR{I1_rDD~s( zsr?LVhU@wm1hTjNQ|lw_sf362gykX`M;6My*rF9T1% zk30T&*ZV#CeQf;wU3mX?VzJeA9?Tc&hbn27(fNt%hsfWnjD4F^QPB=Gtf$=&$Mwg~ z?n;8|A^x#HfUr4MsrzDRL#$e7;18a{PLO^t`pk6ro|;k&U-ZQr_+!!Fy7L~e)t`6% zM~D2e=(dT*k40lV(tA$Mi*h`v^$Zq{&mhcV8Kw%O=Rx!_Z;pAzn#*DIDk`r(vly7? zS>Igrn!NISzETPlaQ){Lc~t22qVZjfOH{p8Urh5I{eIINwy~q_ksIHT`IU?D2oH|7 z;A^8lJtrRnQ15{r+CK!p_U$+d6g^4zMf!+~n~WBA@DyG#|7T zpXok)$S?RjeUVJl*&g`?pQnHD@*%(A^HaW;PkaFINn$=|D?T4Q>(z(+g3o?Fe8?~O z?B~OW{DRMPA3mbL7H-h`pbdOt*dG&p_>eyb{S{Na`jEd__`mn+Lw*bU>w~ks`V>O@ zb}I8hTk%=(Z?8V&7kqxY(94JXg3nLidHIlE@R{htCq4l9%<0nlpso0f^5H{%!DqS; zAMy)6(|!1mU+`IRmRBFrPmHG(je&Xy|ARh$iZA>(`uHin=>PM5{DlKJ|Koi86kp)? z^YM%Q$J7{opO@UPi06UD13$&*f9Mx>`?*{Bd5@g$USa=I<2z{8052n*Y@OTqo6sIiLIU z#dm~!`Sx5weD`Qi#MgMSsxt%lwh;L7-8GojFI>KMNWUTqIp()Iq-#O(*Dn|Oj3)3a z85$gsPoO@Xusq-~@EOPJkU@M5eVPsdK6M1Pvo%=rDf^-ds}7f7`J1v-V&ZlpQI+LT z;M5Z#a9Jxx;;)5sM7~9~;VrlQk=`#T$|EO)M+xK?sM=y!G*Gp%Cxu6L@-yVS>0sb@ z0YzCkAv{VTzrayCgd$HqB|Nf|9|qII^}~aJ-%GF*VU`yU1JAcl8B%SAq;3EaY9=l#9dCX`Psw1)lOaX+i? z&z6gAKzT(2%%)a%rn-dv5?`?t{cS#e!Z)M8-p5b)HR!MO@e{rs{Y5^0!mmevu8*Ja zUFgsB@k{)~S=KP^gu4vRkMO04?;aJHKi-yGZ9aa&ef)$M@sqXRRbKw}>KH=Kk3+UwO$BoN)IXH4UXAfnvp>{p z8G&aoSj;ztkfFWqReHWh?=LkT;W{6e`z!VSBnS(Ca1Soe{F6*g{_n9sz7WPczPi(Z zZ^!vE*}EC+8Sg%P9O8NSlu*b$7boOn=vRPz#u50rMH(E1PuTq24JR@a)Gxh%b&rX^^r5AKobna}Ib zmSW!WdqEc8;&la_0Aai%wQ@LQI)lJD40g;{bM*Mg!|}6irCc95-+3~hm^Jz!N4~D+ zee!XP1W!JlXUTk)#1iIXjD)7WA)h(|&tx#?vnj4We=PDzI>mK=u|xW2Qj>%KkdUu& zf02xQx1K4JT{BvPfv>9nKt5sm)lkS8V{}MYKwS@pekFSWpD6?$%U~~`41NEa7ok3r zDP-(OcXwj znbcG7-LNWQikTA=@-gbCEfx4IA@F}WnJ9e1^eLc_X}Jmc82V%*pAiIpjgtxE6OT|o zZLq?kKCk8l@_{hk`l;Uo_$(lB1%spT3DYN=Le4)UAs<7ZG~_doz!Mql-~;)r(`bkoszZ3{Qe&<6F#;Z@|?!adTfe&DC6h2}4q$xfZB;;f0(=!bCY{-+z z9Kc`)ADRzACejD~kZ^shq>$Yg2KE<(@#<5Ad?pdNhQU$zgz3}sN10;o)P#HteL7Qs zPYZ#2ddDYh{wbo6^@;fy^G`1F8BO2<2KQB;&RnTa@~0fC=qa9{PwrjSdg^-iBOhp~Z>9_xZFy8sO@|VD827#9`I0~Pz`6rD+9&xGACyb9#KRrW$&xVs_ zGT-%%Pgwm_Qpmq0=3~@P5%QTt;G-DaSABX;k|{pRA@zD83t)okFGHWsoq)FsJ7x|1P@KX$q!Y8bLIwwedPMeXCkD*V~PQa&*z(4x( zq470M@1OG`jIUe@dB@DadWJCG@s){uh7tG>20Qc#Wisn!GI)3wg-@71H578s>k{%Y z^eIUKK2sDQPR7dzx~&)YU&$2m+Uo=PfbL#>x(5NDjuWIl`!hHSpD=w&DCE62B;;f0 zQ-FNN5%_opN8uAT|8$R&DK5J)As=J@Y5N86Swi5yFgOaIFntOrd2VSlj;0C$J(HsFdo=X=jS!Ak1FP;1JG_9?*9H!x<1Dm?Yy4*i~RZ4uu%UrYwNCxjM3luf-ih5 zpu^uU-8nvzQoIVtMu^`Uc8@B$>l^N_8_+%eHwU7U2 zb^l69;OcJY=PM(uM>WUE`uX|k-qmwS&rq2E3A~)aeXZwY3i%<2bS3Ct&)q)(pN?Z? zGWRh!3ZJm~wuC~y$RUIH81rob@)<|q>lhq`PuO_xK1Qba5QhxnV~qEjwNUGyB|w>ZN1?L126o7bW#y8=#tFy8%A)Ax{X z9f5~181$#lt8J?D|Na7ApA^5a{>Y{#YPpFZenx+!A-{nH&Sx<5s~!^i{f#Je1pR8V zq<)uk6K;NL{WR*gtic@@+dpO3?Lk6uyRpPksx0D+yo5cqdu-x9$$fucB6@AN&Z;(%=QVR{7iR~n^sOqWi{C9u}R=&YXqfgT&iNc;`Kiy8BO55861&Mpgx^{kov6MDIp(2pQf*YPaT1u zV{k-1jxCX?PcDVLV%LOxjQYt$KEnunHiIMb3Dl=)wA5$U-4pUL^r`s@_>>X&+hH2) z;FG>1=ckzz@*K&>@BK61^)?y#Y>mle_G54qJ`Qm_@6*&!$jdmS9`7LER0c=k6Q)lI zg^a+*sGkDlGcJ^mr+#4ma8EuSeY!JciUal*`uNokgz@Ur_9gIHLg1xRAOG{y-tBJ- zC}d$`K88No$Y%tBhcnpGUmks6U?kM1ZIsmK7!Da!&&K>y-wk{g5cr#D`Y1kO^^;8@ zf0dYzp-&p}8A#w&PCmSUq4(MItqtFQkBgCif5LE~%^CD;Lj5WallomcDzLsFjJLju zHUr;D1U`(x(4TZa)q1sj|JT(WI4ijLh3VOSsN{ETWl zcAoKAKq2q_eL_A)y=5bx5d=Pu!BO~x>C^T*sn4=lLOzB*^`8Tu1q8lu zYzlen=!AR>ebSK6Kmwn_;3#~;^r`=?)aR@}B;;f0Q~4S2nL*%v80_W4^QW30!s;iD zLLNRQkPn3Mj<+5g_-x3K$!zZ(pD=wYDdgb9d<=bxkk2Fnujw71FnxLsktu%3Azc%Q z-k%ut(`f;p76L!P;3)kSrcV)te1k&<@iFwtMLwemJfFc)_=M@xd9c*ypByrXkD*V~ zr@*ITY}`Enq?FughtkSTY^6Y?|kYT5|=>Ii&0gPGsL|M`EOw|Dww zQxioeCFEz!Pie?+Ac1#faFqTG)2n`j)T`&TgnSIWDn9}~GYI?ugB^UJyzzXwm+L=; z+%7}<-Ot7S>Z@l1@Y#?qlUd2&D15^7sicr=IAo;xsR;Q@BJdpyc0NCf%k$Gx_&+PN zTivqo{S5i>^wmlZ^uzP^t(z6t=R7)3ochu&1)RmXhq!rORkOd8aMsMgdVm<-@mE(L|@PTI5>chh5mwI|913e`}iq7-o{#KK7NXi zuen$~pL_EqdF2nqYqh`b&cSIGbAqK7Qh#h5l?GKk<*FKh4Ka z_#E{2e5Uf(!%?mm6~6WE7~*EV*Z)S=`}*4x*1I|XeSq^Hf$wLqW4<9iT?4Qx7Hl1FQf3TBel3c;_Q4^*m>4s(U;x7Evb_T6MM(7l2&f zG#>FXt3+SIej0D>=r0KNuSb7&u)hKQX~F)b=l%8&WExom8r4`=R>bQlA47^D*{gmG1(d83g{g zcYMP1Nu!V_B<5r2)3YAC>~9Oz~|F8N|oXr}G`)(?Z~T861UAm_9`m@-Yq>#K)+gT;wyFz?U*O3ZF22 zI`@?N{Eb5f@iFvidK>uE5%?$uN8uBuPcDT#i9-hQG4#nqKEnw7O9n^b6Q)lSta>;^ z_TrF1d<=bR{sVl<2>kAIy{hLheKINJCmb?}kD*U8^4YqFOy+S0_f?-73i&LD4B}(x zQ?d^DOd;^K40iCL`}use_(pmkE15#xD*Matydmy)Khpgc@afoH>T?Q%qwooAA>hSaKI3=wsxw`Anupw`qnOaUc>t<3?r^@F|Jqd zEA5c}MJZDM*)QuUAt+yC{N{E*zM~0z6odP!f9GzJ&w;BF@-gbOsU7%}HS@d>NX zTnf1|F&{&pOyo0+z}GUkulh74OMNa}-8+41-T*#j1m1_i4nB0hSLL|BNc{bonH2Kn zHv}KQ`J~uyeoIC^TZd9I40hhH&6D+>XLbD7IX+aqhw*g`ar1t;gqobNJ|SPDz6#oa z?>GW)d`E-(s$ci6Qi6}WbVxn^WP<+hJGZ?Ke3lS+HiIMb3Dl>6Lf&F0bNN4*tAekbj!BAj~hnf3`?pqS_n#(P!rQVfh63J&}R(_eYNHfrG+%c#yT?jOF~U z3Z4tN+piGkEy+5*$KMWVSl#ca6g>Ve^tbu=Gr*zFE9-syap}ip)2j6G6JDHW7Ww!I zFU~V_gZ<*XGE@6q-QCOQ2c1J?32eXUEhVcfp#S}9(<@Lvbp(Ef!QS!beV!3k&$$$G z4TlWkW7Kmd@)<_p*$fWjQy5`BXxdrovtnAHJ`lz`AJnV?K4k>{BZH&x3DYN<=`e zZhaIVL!V^ivvnt#%uNh-@QKUwGQQt{nKR*hSwkUbTq^X5JKtxP0sX%(y<|1;nL^;P z435GlOrK;5IpVT}d<=cMR{@`n!BU@1z2g(MpDUq|9f|oE`?&(-GmgO34DPEw-AOXV zvdep?Put7DX9{9EDF<{j?2|`b^-E z?(wDg81+-%3Vaq2cnE_XeB|~De`19mE=JjpWK+n|e--`Zx8GIkyHP)B$Y&sd-zw5z z$9j2s#n7%TOMf1>6u!-O!18qXpPUN$;o9lG`;$QaVS1MQLh3o}DosJ_N&8L3-_WyQ zCGa0d;AgJX;J)hFJy7yVo~1(u@iFvldkOd~A@HJWG&l;MFntOrWX}ycWDp-ipKRna zg1~n(*uiIq#$($6sn5qUWaRN!-vWFV5O^_zqwopSC!0e4n?q`SWP*BsV(62Gd5I&yOm9UMkK@Po5|GGqQd~&A@jOfp=kWU-j$hk$m>%kdgH3 zd=dDx5cs{hI+-YZ!q&qg3Tbo5AU?+U%SAq;3H%g;qwooYpA3b}Z`mfXz;!g$xiOyo0+z-KZz3ZF22ntqh}3@=Z}$Iz!{1@I{& z@XNj96IMT&6mni-K1Tf{BcH85$Yc&@a9{PQp^)1-WKe$@`jor?e5MfiQ3i+biS#l= zGKGBW_MrX>d>P{N=Ydk&_fn!87>_sEj{jWg@%^TgpQEJA^ROa{e@8_WeuiYHA-_z* zAIo?LH~eQLevT3|`L%r~^FO093O}R7o?H(6DhdB%-}nXUmr3#W_6Z~RDdeY53qC&kOXqLq84~>pDRpm?`BXDL>iBo^b4X^+pOqAU^*^KV zGbFqG-@q@I@G}{|Bm5jCX7cO)TIRoKNfdsDey=qGzk0$?X8exu3)C-{;?I313O_@? zLy=!H;m0yQ0Y9FAUA`+A1u>g?|AU?afs!aFVZMv zVY3eD+5l)ihFCrS0zMnI%4B+8)Zi$59L43~Q%NC@U#&w1@iB_42>DDR@CU0jI0~OI zeR|-82jAZ*d|ihO;$!I3xdiyM5V&Wp20Qr3^{)b7Usg+?`0h7v6`4cua*BGwCK1(V z3A{xFy4`42ugQvS9; zKm5Mn677VB8J{ok@ILSYe?P?+?~51dOWgR1^$^C&_3;zlLVsqkUp!w*_VG)872^3) z_Y2}YIlE8dm^7~eLd?%e(}65 zE!Z#g>Umz}tIIz@{W?aKS-($imP6`<@1oSNF{<$Jy#(N+ihf<#Tu!KTJ;A1FNfPBX77@x5Dx%+dO;**@B zE(n>RzdmhG0iPuVp2pz5>Qg`=uji0Kd<=cEk5n{TDdi!skTRRXzrMW)Qf6!BO~x)lXV0AhWS_pg?gQN6Um_9`m@;nZy>)ACQ8sjS$`HUv;?hKB? zC#-%tKa%~I3x-`qr@+-1Ae)L&u09N@C($h`$L)kjEpG!4E4R*{QfqWcddiGN_ z6!OStbVxlw!`A1Lhk(x%#fOuL!pBj39zMy6Ph&zpM)7sm0H2NzNFPon3ZF22N+{%! z|4zuqD7FIRGfwg0WW@Y33+t(Rsjjaav=<)i`hGl`U-*5qLht10(XZ`&DZ$RIg0Ii~ zsDCfY(69bM;JbjpuddW!hkk*4!t~3gke_l$U0*Vw=40rWhI|GR_z4C_;S*M0_5YRn ztmcqGd<=am9{@fx2t1#`QTT-ElSUyIamXM(hCV&_1D_4=$z(2Lu!B#!>-@?2eBU9F zYyPK@x4tY&z-Rv#`2NA=NGX@_S&aA2uXylhCl!BUeqLZX9xTH7Z54Q}q2&n6 z$04zqPt&_nqE)M+&{Ebi1 z_bZWq;cJ^EUac>bFT7q!_s8%ie!~0Xw)HaKO>2Ylod99Ho1^-BA=w24Uc_Lir;7RQ z$baDpntvhM)hD|5hqC`BrdyL9Q=JD|x%Juk#+rr-i_K zGnn(4`h?bB-(;DNdH`Fa?@K0`5N;}Ch{Fd;6)7XtA0&yOZ}?fNyx|0ujX#x zQ%2yk87%Y@^*eQ(t_NYaKJKp{lpED=VTAfkrY0Z!AdoMF@z!tmUBI{FKQh^K7%cdT z`KFrq@_FTOC}X$*DYoh!38_~v|FC+^B?=Mv8+vCV|6yVLlLGYhjwi?D?io+@>!d_U z8v^z9ogXUi1b#CJyt+$+`&yrA6tZ!X4(XaO^n7LL)l&_8HoPU1xrV_}_=M?GNg=0N z3Hcb~w+Q)6BJd#$j>0Fbo_gMtDW-mrkdL8H=N-VOg~0E8uEAk^V8Tndz7$c&&o=9j z?*4)>-tn1>d`1)aRt87m6Q)mRhty~JmkIe8`ZWCm_|y^jECze|=EMp z+TTQ}zwS3A-^{Or_)hSxzqTqMyM(~6f2G0D-xc%4`oHOD_kJc_>__3etL(v$^?~PK z#or;eXa3D33d#S|6oST&A$BtI-`XaVe|nn+Gyjgy%%%9p{t$(qq35BU z=eHyL0`+TqMdts)z$p9-{hpi;{3;25A>)Ji(Rpi*zQ2K$z&&|-=YNXdlO*{0o&Q1@ z@BS$n$!%RDlWSqHnE#7mMzkBpxaQ092{HZs3$Y&fY-lZ9WW6g-@71H5Bru)P#I6%($hy zK@sIt>{&7w_)H=2z6_4SCrqDY3c1_xgnSHrx^D$O9WP6Lp4eN19ek+1r|J61i!feG zDC8~aBBbAVg)rXnT7Z1U5jcmzz^6j~-s8yUZ1cP?kYAWyovkwEgMOQkpP^UNEx@mi zz*dF^JNW(EHU0wmh1FL!HSzLj-Gr`p8PNatywZ^0KmyNWaFqTG)2n`^)a&Y_6Y??i zs+S=IulUw2nveqnlN6UFMp`5AhrVSWP%{09be zesk^&xZg>)I{xmPAKedSSxcOLonN8oKl)Wzd1NV;Om8omTgr1=WG|HGiC!plzLFqg z-cpN`rq3*qbu(o7YriX$l2qUEmhAK)?@#UC7b(C-XBezW_46L@(28O z#JB!V)DMSuG3&wcNw zo2~;sbp-y`RT}K5KXL#33;F$pv7g}nIS-amYx<&oy?;(43YFJr3R+JoNWk|$UJLv; zES1Usfx!+vX*@&vRBvj0gw1!A6mrk&5{?gJzAHjLlL)-*S`9YzOrPCFdZweEany6a z$Aa_>@wr8Y@ov%ndo@sMBK&tZX}oi@4gXf>5erAS?hoW}nV9eC&oKRRslAtP*6juL zr=edak{w3izc5(vD+QtKnYX#`_wcn`xZ#dj8_Gh~+urG2`Ha;2%{f8*1NFXqCZv!{ z_-h&O*4wpz>7Bma|C0R9oEyYXpBEVVwp|6}mJs;MTQykdE6xk57s~S}eLv|rKSsT+ z>9y|px?;Y-Z+qBvUPSey=S%1JPdKJbv)+@5;;O%Eimv(z{C5$Tx$RAswn)8E;l>s#YZnCZ)AeJ_x0N%1+zbN$ox$Gu*2~8smgjyijY1xKM?yY^SUttSXTv{bGC%)A zgQM_q6rYDrC53#dT8DHA?ypY~@|i^7zcM%qpD=xT>Sc<*xho+bL!ZvS0-qKFe|V<` zd-=dFllF%&VBL$6N1q}JdGOsjq+1^d<6Vq$kY(B zvw%x($NWV6;*y_3HIv_yPf5vkzdsQ_MzYvv(Gp)=udjTXXaJCjKV+esgMoqP`NevC z{`HUm*t5OU+9OC|He89C|2-G`_U+3eJ z--tRbnX3c!_m>;|nl1x=bp(E~R)bmZ)Bt{5&#=-ZoG-JfiER(-CfxiWjJF=rkl#Q8 z-@#zPFCXinHCuju!WE7`PdQQX3)8P=vDB}1VM2a}ekGRzzbOR1kipDvTQz+i!nNPk z^XbIG2>SKFaSPtBZkA2>oi9QduYR4=fL{xNpI|WXOUNfouObS$-=jjWFg}J}xyWZU zf!~Y7C(`?-op5}D`Ya3NLyL`9qUSFGN;QPPmhpNfm;VUV%gN6nnYq|xQ~WE7y{K${A zt=wS0xQ)yV^iRyQhG{2of%Q8N=ewjoyd<7~a(i3g&x%jy3@;z@3qDQ3e!-{4>o1>> zC*PkMI{TtL`28CAVzA-`uA5)vr{)t{zj%F!N0{Hz9+CaGzD4Now_kuT-s0=I5IS$e z!xDTsgN0t0u{|}}z2A}dyYTzzONy0Pk@!1`&$B-$APP%YC**GwUpDd|LEzIE%=|}Q z=lZ^Ybh&@w^&^VDO?6VD9@&K7eC?}m%>}@(jKD1ncJy~3pD?{LDP-;%J>GNy$$x8kG4v@wKH~^Hl)+K>gz3{=BUAkF za&VNMjBuB z1;A$kfy)>ig-@71*%b0Wmguj@`lKPBfdsyX!BO~x=~MrJ)aOwS8A+eY^MTI{0#9SG zgAdI=eEtV3VZ!+*jY761za8{_br8m9{W}l%Y`9-0vw*=-_=M?GNg-=Eq}E3!sNYvK z##a&YnMB|z435GltbTg#lPMN)$RIw({L^_Z@M$6NXa+~&6Q)lQh0NxVL3|8-a*@wy z0uN-cmk+F3bRG$MC#;{&d!;^?qy*Lvgz?r-(>cJWj=;ZTa1=ga`s7l`YxYdY$IvGe z`3xiQ(F~5lC#-&&?veV;-8Ug0qkd}s41CH6d@6&Z@Cnl=lS1CTe?mTnKFP>u>)kS$ za~SO9)4TbnhC&{7Kp-FA`KKfw_)H=2k0UfV3ZF22k}0IkAtQ~i?z4eU$6ZpNrx+ZC zPgwnwP{?~ZWDp;tehQG!I0B!?;3#~;^y$7+rg#d64B}(dPup3*X9%=! zZa{l{nYP=}9?SL?I6<*TvYmqOJEyXZO4vzk=b^o=RL3hudlTDLXs=_t0qs_{x1im~ zb_|{n*$dguL%W*oVzlS5U4`~cwj0o%%62>2liA*a_IS2alE5Czb`0&2Z0Dh!%62i@ zNo-f4z3nEQe*@Z^*ltIA9ot*bZe=@VFxZW3$IxELb{^W*Y!{x1c?q?UW&4k7YZC_DHt#&`xE$80{ps ztI*zdBj=CyCbrwrUdQ$pv|HIu`6bwmY{$@E$aWsu)od4|J%{Zov}dy2fc8|j+tHrP z_7=3qvz;QwKie_1N3xxVb}HM&XeY5{ zkkfY#9|em6Ju}`K4JQlP{^M+q+1`w$Izz$`HUlQGlQe>39Fy(c{0U{ zA-&V5?G)g%gur0EQp8^WG-!BvLG4#nsJ|hU+6~>3}$3WeIb@LOzB*l_vwA z83bO!;3#~;^hu+T*?T4AW9ZX!67bn@i%e!9gB^T!=y^sZg)EREBcIn7A)iSE9>L%! ze8TkUnM3u=A@%$t6ZC&x*f|0Cv=De0gMklyAN$Prm&yHO`TRIONT1!3VOL!V&$r9v z?>Vhg`%U$HTQpa3Cq7(;hv6}6_Ntd)>ruYO`X2f)r@TF{jJ-F$RCT-8c?e+FgesE5l9J`e7pM9H%1?sL||Aj#)g$tT}>WQwc@ zQ|~($gE-K?S=J!c-gUaYc2xF<{fzu|dwKBuLAI9%{ab9^@mHCDlE}Z<8sppEnK0i& zV|T5jdJ>8`(+^8jtfZIKIXD^-DzYve}0IpZ~_G$9{?;jNlQH-HG9L}x1E|&enRSjEi-o+^X8aWtluCl zxWjt!2uMW!qL!X}@E?7R|3ZO`pO*Fi6aPGlUvgAHe41~@E`M2_C*b@8>p{BR{x|4Z z=?6P*H=`}}wYRON^`k=0*OULV%JqKMEK!*iwb)j?vARhLhy>6Yn9^&DYZBK>R zLQiRn_VZ+WVoJyM&uddGl8?GN>$Kh`fkL=-g%&;@;bg*@OEl)vM`NSNn z?leUX2(W*+@|XGhrz!swr=Qy&Vs8PBINlm{{b=X)>=$K>e1`e^^AvvTslI&kmA}K^ zU#t8}{QX(Vzrg8-d;`Ga6~5N6huc+#one^t64FfDv7bc)jt@iSDuRUOWF#q#=eYqaxv zZm&W5Vf;J&&iNz`@l^k{zCrUR^=H!ax<18tS;&4&#NNd7dpg>4*q?*;Otz7zJ(cZy z(4NdT=4X#*dm7qvI6h7!_DJ>@qMhopC-e0&^lxj^`3SsPk652LTn2i_tgRD#`y)^J zJN*5_r62A?{QddLzrg8N^)j@Rirvwi$1Gi+;?!v9%mK7Q;L zgB7h}8v zeLcsc_ST?3JJ1i`S2aRAfxjCMcZLJ~{TLYPA>Z0?q7uiz510OFR*SzsU-|2te#jSv zw`Z=^^*9afsce^`J(=x7w8yg@M|&*W>1dB6oAZ-;!_Iqzt9>M9H@>FZ&q8|>+i_vP zPU{ctzZ~r?Mt|y4G#|+I%}$!G=l5Fhi}`)a6-yoKU)=7Jc9rxGv76V5`6dJ7C2@O* zx7SUSzxNFDQ?YTqwujpdh}U+8U2E7`cCoZk2+)`EDHrty{Dv#P(0@Gpv3)ULS2cLI z|MaV}+njjvi}=%n@gn~DKK?=o4Ed(mh2R7}WT)GC(#G*A{Bf|kzJ}wUaeZouJH`j# z7X3ZW<2F*|11`F4Z6p78m0tzi#w+0*PQ!#~R|l{WE>*~OPF#eB%l zw+kIM={XVpq_xC@OR!&dR(Pww~vFK;yMQNjN8(5(IR zE8cn`yoLS>AHUF#;=lg9w|(-9_!EQiBK{~Je;za}>Y*5dv%Xn&pQ50LT5hWT!lxPKr!ZWkNZ7rN|X zyU^iR^$CA+*QbbA)>1V9_>Kzp*P?%DkRS6I@Rra^#6$hsS2^bo><=-2lpSl%AI0dv z`6y+XbG*U+->{4AElb%?_45Jz$(@ggSJoo>e?_n#e+k`wFxZdZCuQ#kDFnpF@9(mI zdO6Tvi2e_P{l(~C5$rET|AWE)D)iqN?5{=t`N94M^dA@OZ$|%q!Txsi|I`|oe;4{c z2=;G5|B7J0_}b0~ef(m4VZC)dE9!x4SfAlyo}Z@Kg@!%LZZNKg@#L^o{Rg#I)=~>) zY7Y(eH=uv>O0OP*Us+2t`d<(Bx1;~*V1F0-D}w!7&_6xcKLGWf80=3$|EOSpI{JtD z_~X#97{7V{cAigd$3Nrw(}FC=c<23urTjDe{VDK#M&Kv;`(waI_(%KuseO13j7#r#=l>-{a=pCpl=`8G(tu>U#Ikq^W}hrRAeeZO3a_RMDY{gTAX?*}T; zApnm;*y~P^`(JKvIQ$v%n`KSX7sE{C_RDyg`V#i13w#Aew~~GQ#AhD*yN^&Q0iX5o z7kj*i56T4hj|j7x^!3~x@y)a9wA0|b#(^)pUojTiy2aAg@yjQ~<@tT; z?2F>?`vdUJ1agmI?E}Z6aFmV@SH=A*#uN3}v6uF-t3%Dvg{bxn$L2nA3XV4a<~#t;^VUYe0zYz7fURC|=Xe(DY!Sh>=U2EVo>_WrNv73Jl=X3J>+MWzPkza*;9=i~HlrQRKkNwM1rw#h0 z+v)H(ZtwqCdms2J%liNSI9!5C9*0Y)u;XwE7PU4hs1J4AT#Y_brx67feojLYD(kdK zf`uM7mmp!sO%f{dI3$@xtr5v8>@WnSqK-pS>O-w9KJ8T0ag$GAAM*SDcU|Y&eeJI6 z{_*qikbCdF@Avz8zuwoM`?~*}vuG|n%ATIfKS6q;5D)vul$~KaoQr;s=4Y{?exvN= zx$ItA&yZi%Cp#e}9+v(O_~K7N+T2Eee;WO_T7KzY4}4cYUzm+Meh}CQDb$<$H$3_J zeU;gsa)0l#t@`?RI>b|bLN`%;#E$0jOURD0e|awdW73BQ4*O5fRdf~BFD?6)=Q4Y# zepr9-L;JHGXS*Vo=6qr=%B2ij>UCUXnf0Rm<$7QVglHfB0QD4q7BIQF{{GYChePtl zN5MhI8{*?3TX-iwYV*WTyu)Mo`1yR)0U0alXHQ2kM_W zhChw@@%d30oS;|i$+>)wX~X=Ewtl_|&kw&1?W66AT$cB*Q~A2UF7)5!ppVuwAA7UW zzaf4R?4P@Bn?65cf66@zkHx7!!1qyMVIFzdbH4nc^!G(WmwNI&kMUO(@{#Z-ANS6O zY1mEOFaE`w)FBm)_i4lb9qkvrxo5w}`IP;D$A0m<+K-^z2Zayy9m2#|@ARTQMt!;r z-a9p~a6GdO{}p5SSFs4Z+_SU2>p$5aTWjcj=Ke8k@0+dm4)gI%AG%WS496$+hkC;O zhED2_apXPlYTbY8(7sIaK|M$)o{y5azt}SW-3q_bW1sq;_V2(n^S%B;eX`)E{=N2% zs`z+(`uTcAF3iU_9TQ#qf!`CT5FerVjcM2ny;G+EeFVPk*LH(B8=J7yRKNJs#^IU+%>t%r6`-HY<#uA=nJv z_XZ^yjt753{W}8u!u|3DT~a<_TBlXJ=M(|RM#`QdryC_mhvD%iQZ zzp2+l6|jHq$@lxzdk=VresPUHetAA{zUT!#apo=0#rXKhmh;VA_?5T6i2rE_%S|1_ z9|Z@@=PC4`mBZ9IRC~((o#SKpF_79j_I;|4*svZQWyAeu2!?#*m;SxcFW=gIU3fgV z`ulO9=H~nR>H2%7zkfOo>xuq;8un}6$IWEcLyn&=n+|Wc>n;Axn183`m-f6$5*O-A zde>O{%XnJ5kMu6__mkea{(jOs)!$EgH_o^9MzMX@?jya&AF=g{pY-na^W*hR8k~jx z8_uOh+3{S`u+{ovjC^rE9;(-Te?Qf0<{172#?$%k2AZ!ZAKgzi_&6Wuw-t_e?LHis zx#RFF-52nOLi>?_?-+jKiJq~+FC1d!b;DGia|6D&mUN1(#3CEkn{ZW60 zpQnfo=i~pRdWa48e>-S@sTbVuW`C69;e8Iau^}KI+#iQEMqz$kg}>fFe-?Gjm(82h8S7$2Y5iCq78Y5pNw=9k0p ztI_Rcyx$SVc)8xZ`N;v=v2gqu7{7G>yiOlHWGeV^ypjLPvHkscn0P<#ys`Ze761FI zRB=Y-->l;InSMClC^&L|c!G}??CEGfTd*@|e}A)geJbs-1H40@)+r%AiTgiNh>xKC zK*6T`cPm@3$KiSHPV@X%my3PJJU_zuX_UPx7iBvI`JsI)auK%UY_A$+%ltnPb{XA% z`g%G8VY!n#ZGRN=N&I1dKgI7H!!P|Qo=brf`d=FJ;dn`mvf=&@>rXJRA2zuqW8@Qm z9{qFu{WO11_4kMId~){NwqD7P{V8|c-(P|Ly<_;Ja9~icemuUd{(d_CHU54&{w4l? zI{vx-emefC{(d_Cv){7y%kf7^zrR05`u+WJ^l$a|C(yrU41XL7NApz-oX}rl%8rh* zXXi%S@P6Q9G=60Nx?B=JXr}vHIG5N;^KY8-!TIPh${%HWcCMdoiHG<5*_QpMTXux= zOFUff@&0knSC{MU(3w%l)810g=+aSx=)Eg8d~1_#t9oU5p%^NZN=T(r}i zKUU?!#_`MZ#))I(OL0D!|M~dDUY?5@wybCOcG|})`%liLuczY?dv-1bI~VE?>;JEr z^@sDH;n&w^cK#?IAL@gAa(?;XoqwRhDf|57X#0APeQl4P-zzZR+I@N0oS*!^9mAhB z{7;PG?>GG47{ebn{CAGw$HGDT5dWqz{2B7Y^RVl*b5#Af{W<;$y$iH&5(8!Y?%Zsz zm&N})?3SB)oqfF_{yh38e$yUb;t%0`d~&<5pUyXj{rwS)-#Laq0bsR$IQgJ`{NktM z-{_4mwC~fHW&=M@`sb@v`$K(VM*fXsGY>3pTu8ZrJkt{O}`o zeJEbmM_c{1bbvm%U*Aga_lphJ1Ka3)AvVm< z+i1QPyDry1%7*7VqwM9m%qV+RE^XNA{V4dAo?Gz;s4wML=Rbe{9<0X_e?Rtz++2S@ zj|YGM5XPVF@IAiM=s)i7$MKrm>+he8{;mFgx__|7-#;7Um-zeZ&_C1Pza0Hj{r#)Z zfA(Qt{p-+w+~3dlC;a_8Fn+7Qe-HZC`1_wm{}O-y^XQ-J?;k?{RDb_z^q)=p>K~7v zuRZSXr_bN+_4iN5_^tl_+2~*6@2^Au5`RB_PC7T&-@hFFQ~mv`(0}$JU;XRQf85`{ z8U1_x{X5XV@geVeNRR&v`q%i!XVE`@jQD;Wn3t{9_phU9U;hpLJSKtmRd?$9A#! zmAt+z?4LIB{X*|w@F&?n1e>AnjNwOzT5sMrh9B1p%Kzyx{AnZpePj5aCO^FI{}%1! z^8@OE_JYqlech}#-2dK6=cfwx!}9_5i(QvXoq=y5($A;i`iT80++VIQ&VJqQ?@_~l z+~1GKn>##)pYqe^!M;YvD|R>+`ZBF2#D??heWnf9KadQLH->zSPjbB2t8#Jl>-%e< zpZBlh{o(l#KL3&aby=Z*Auo6B-QN3EX$;%2aWia&p19QLKS}sa?hz3N$CJPvalO#B zhWfwQ({mMk{9?oX&rvp9ZyL6&m(FhVUGL4t`S-ZLKaT#r{(d??ZT0ul`DNx;?fHj} zAFkIh|J1M9{XzWr{$B3*S8YGl>wz!m`6Y_=QtwxeaXjKDy(hn9*F*fI_pra8^zQWc zlis;oY`u~{i+U%Hp-24v=s&r|)+>Ih*T3-7`>s3vrqI7; z41Wv`48|XP9te_yUOFDM<6sx&?}$3zyf9G>W~frZpN9N&K6++s|02Z5^WE?0U4S>l ze7K)*ulam8!~4_u=}x_WftOia;+5QO1?S)_Iw#Od| z?H{K4`un3)-!c4AJW#A>n4jNJz2$k*{4w@V^Zs!D-$d;pc3m#>6`H@rUY<*TrQnzQ zWm{nv@A1?AGGF`)e-~hLOZ?+A=%4HF&!T^-zrP>-XE*sCUkK}W+}}_2-|O#>Q2Y4% zE2w?^{nUO-{QWVEpXu*Upns~rKZ*Xc57_#nP#EYR@P6k5)Shv+6S<0esDFw-k&BG7 zr{^+hbG%@EX#9QP!ZF8ZO8MVn`r&+@0bcIKHlA1t<7*urhO7_&IYFf?_?gG!>$hY0 zB_2oj&=cBU81L}@;1_8g(tEbPRvgh~Me&r}&Ly_)~nm<8z@mnfIq-xj5_$`o#~QS7JS6%l(U! z->{EY{254_+d0#|-xgyYysreokYDUrE3I zY8&R$7ScZ*__^!Bhl$0Xd*GGczi*A>na0z37pTq;`xp8@o-fG%`&Sr#sDBn6_`D>N zqVX*D^jtng>+62xUsmGn-;rGCewyE-DxUV&{Uw^~f_N`q?*HmTDEMXk;b!QaWBB(V zM(!V9F@}E;`;!>|&tfI9kRKfoPyXL(Kj3C<3 zal8r6zZvsS9K$dD1;*nHnm@#b`EO&PKdJlk_j&6f_ZRMlSQG~JNF$G~Z(-+xoyaBF zCcSt)7$0TB`)_E=^RMqG|2k^C+}5n^6bd@1l-+N(et)~CS3^#k;0JldgG z7V_!(!Sle4RKEm*;e8_Pk2B#{m`48x^%eiq=%48CfBxV2htPlcOTPI}qkrcZ{-|+$ z8~y!se7E}h>G=MIpN?;)e>@%E#4-F*pXGS`CpY-&TSfZE@Qc1W((mtIg#L~Ge&XNi z?kW{>+heA{;B@{+2}vJ-d8`h=W%~OwdY=cKegvpe?PV7t^WSaq~G7a zgY=K#@4~`fC62=R2cCa@g6?Ob&h9Db$e4*UV)7h%3fAXe-&#>;$v ze4TIosQ+yB_fvgu_4iYKmiYVEk$!*w9`sN3_dkvPv-kKO|MTcS?(ZK$|6YIpY4mUP z_m9W>Yis=dlhMD#-#;DwbN&6Z(LdGSUx)s)U-Z?#2>r+X{maq6*WbSi{agM0>(IZ( z-@h6COZ@#iDF48(to|A``sds+;>Az%&)HU6zxc;f`}_MRQ~Ue-r&Ig;`)8wnjlaJR z{qz0(>(D>f-@h6CQ~mur(0}%BU;WRc|G2+@Jl21&zkf2dkH3F9`q%jTXQO|KzrPOs zbN&5`&_C7Rza0H%TYUAeLjQ4p|2p*V_4jW^|5mTRu)Z4)e!5*J?@~BES~kh`+Na0x&jpwV}-Jj$2ec^bxUd;RL-&IKp{w(E#?~B`~ zop3@c`0;!N^{5zn*z^Oh4tdum<@!N?-f4U;bLAeqenCH7UuW0SdR%Py{4e|Qc*&m{ zWzWtf*^aUw?su~tM_aD<)<8-;?dt!4NBgVm*D?GF&Nn$1;e2Al=f6kU%X1;amh=C~ z$R3MF@$z|*!~Xsd&KEn!@YC_)=eJVeRL76^7n6o9{9FCvg+JflPyCtw{v?zoH*pMq z930R-<8%4f(eaTj_w$a!uXOG42RMH5?|`t})JFSyUHn<}pZ%=YukZiB_fsKH+wlEV zU>Ex15X95?y!4dn%)l@B_bC4hFOKP-On&|@@n7g&3h_^~A7u=EXAHmamk-^qoul|k ziigi*f7bLvebVTV`fa?^?!Phg<0QjXuoync;FWA^X4R` z!Oxq1U}VhpiIAV)7k!i7rO-YZj!z6-s+~Z!{PCd|hK>B7pY&lpA|S3{PtJu$*>$-P z*oAylCj5N#dKz|IiP5avS~q<8l7D)!$!%{`vm?<>=q| zY43Q`d|D4p{DR%yBpj}XG5+M|ef_i^I_&SyqrRQ5@zsy_b8;K~{fp3l_*UQJ$LF27 z`TqP0^w0G7N6|mg-ycK&$vbTQ(x2e_z+O$`f$X*Ws6F=j?Z0+k6!mQN`V0MO2>dWU z>W1EuH~MeEABW>1|D|L5V=DfIzl|B6f%c&B_srP-I_3Y~*na93IDYRR+uz0Uv7yhJ zewYuYgCqCkMf!gJDzu+1*yK0t=&1em^X_midx!BnjlTb0zW*kI-+vPa{X-{T2~9%Z ze*<7j^qZ2?#-I*EZgms!&|g)ZU|&?1dlx+2hXI_zpQqu^@?`~A!_S3=h)@n#7_HL@ zv{Qd8f0(|Ne=>3E|E4lN z=Cfl&cKn^nxYlP!OU#aoRR#Wyn7e#-w8VVKXGcrSOrISsG3VuS~%7^mg2r zhM2Ke1$QLas{%R_OcFO=G)4_a<-$K|b6=_2OR4xVK11JlZ$BPM0=x#}THRT%)tz;| zPB3~$Y13JIvk%hVx_&M0kqt?rVdZ9EPXLi-z8(BVaH1dpjG>t2(rHc5x__x#WR;8}`9Bi0SC$nn-Bnt8Rb= z%?%rBr`K&*xCq)QHuQ5?yrj4}$Jloj?3;jnm&3mCq4Ze$)~%l(h5zBtht$IV+Q)yV80}k?nO!^kl1&-!??LdQ8#dNP;1Kt~K@9!wYNHLP zG}Ec)z=OW;|MSetE!a)oUbkT@?!5LL*oZ6N(DM1o=dUc^P!pLMDQ=(Aa=PgD$#on4 zbNbM4;I%E7WiRSJuWrN7h8BXA8fw8;l{e6254DX9HIa>dq;5JK+jLz4IHErdox~XL zArHL^Vp>*Jgzg+abS?b&a$SXY7i^xo4HM|sx#(Rl865{)ynAlC=l896euH+V9yRi_ ze~b=_4xPSpjDxA8id+a;qeIi?{~sJJ{&aZEU2*lc%j@Bmo*xHn#S-{C!k%N54*mtt z?`yF`(t*Ag4-}?Enh@r{3#u!(e6E9^jqXv1_|h4Z0f)WeX4aeogk>4CpBEr-)Q+EF;p6{8&mWwB9?<$QAb z{-JH~^;9xz32%+bTNH>_DZDbxo6fvTHLuFz)tbCWAYShP>+Ala(wBdU^c{l@)EM;b zpXt?iihNSfEE>-BtQTIj=B1gpUh@`MyzM408HhLVd)C+2s`SN}H%IdZ;p?YHx8FjO zR}qNUD7*&E3o$QuM%A;)%bPgswQmX4wH~_d2I#AE@aH!?Q}@hEb>sR}=bU`QhU=(v z&U?etbsOYgh8%WK{OJvtP^K8incFozf#W|{dha^&w#4=dma5vP}li;;JA$cwQBq? zf_Rv}ucMqezYR{;GG#oRn2f_m#zO{;e^bwEa6H@&C>V!dhyC$C_;CyTcnSP?u=o!A zC6CD43b>yO?;P|MiN4{aufA~wpzxNM^_(53o^Ail^=#I>@m$XrUV&|d^=yYV_UQ3m zizQU;7eT}Md{HL663xqB{uXS%W3XY~G>dmD`Q-dmhlVq+`!}qw<1SUt$;>-X^LD-7 zt8XT07v6X@oO#v4tJJ*b;cuLRzJ2(oPN|+X7H{{fsGdAur_g}@`EQmoR}Ve+YwDk$ zg8ij`u7Dr8f4&!g$+&0X3#HVoCjI6A8}Al3-pw{|6G~F!FM)=OzP}$MeK(*K_z%Y4 zJou6IU4y@5eJ{edQ+f1l#6P&Ic+1iFH{+epf55|~;e#*m{P`{jJXky({uR=_28oGM z&$-Ow_2^_Yocl|OK#SI>{y7AHBNh6~Gx(=cslQArV1+mHm86e(wS*(b$?#z zo6Wo{HE(~JSKnNdH#rcmUU=1-H*^WNA8fdu3oPDA^2z-2G#bwJ9QYOM>$^kg+swSR znm2f*SKn5Xw<-{?QFslSSI4}!XkL@Wn{V=_2jUe8Z+NxRcN+RP^q1dLpU3_(&f=Xl z$HVi1#zWgtu4l96?O@*hn%5rj)^n%HTNj8|CcF~OTg1HUG;f;4TVnEN2jX=<%lbN2 zse0mk0rh-AkM~`#^Xi*u@`i9n=l)qOyh_d6!}H6-npb1-_L5J=!{$J|z9X!!_jaXk zIrBcCc}K4B>buqC)dk`;2(MoACNu9m&0A{mrkcFd7YC{5a3AX%_?*)BG{i&ueGk*n z`C$aUPHOageVBYw&mDny&BANcyj9HmnC7)uyfr3oQ6OH4@QO5VI`b~oyh#>srpX&0 zh}ZE9*RyS&CU0^eUcK@JrU$*QE4qX5L!O8-%aV8r^>7_tW~5+b@KM;>pdzG4IE`9xnnLh1Z~Y*%V!` z^uUJoHCeocKQ(w2XgKqVgg4x%^o1ZE>X|#Fc;hTy`K<;ogoZP(?H63nX3fifiuJ*U z^|ep&)^p)1gI9ruGp|f|C7Kt4c+_{h;!U%7r5S^l|49&D_hHu8@mW>R48#Mk6Vp)t z+%?&&Z~Ko7UJ?ywebvIN)VvtP18)xH#QCMh;*~#O@Iq)f^ZI_y`g#*eU$&jw4>qjt z$mL#r6`^&EMX zSKrF51}}z&Gp|{AjhYvMc;HQ-oXBgjc;#t>7ed3CS0cP3&C5Q-^@I)AbCShdNNp?g zX9XJ0ypEr8J=;F5>KWqxl511EZSc5v^!#~ZIr@Z`LBp9>DZDbxOF=x;b2a6}dRAGy zWoA92f$G_Ni1l^fs`P~+9(ZSTJ@>;y*wOk{e%{a*L&I5Lz3{3vF9Pw{UnnQ)TVU~8 z*BZPy8qU0dr&(X$rbV8e(D|Xg z#Hwe);Dym}u4kF>N;I$kGh9#DFmIa0JGH^!WzlfvbsuDX9iPzkgm}=mo^oP;*#%#h zHM+m-rgNjTUkVLpUbXNlH7^eFz?(-okym5!PJGtTmqEjs*LQ&R^{!C*QV+{}+Pr8iZG`d0h~X{RPude_3kr%1wQtK>CKCWPJn6mA)+WH{kV9A4Gj4 zmw5G+uQ2q5&~UD2v+x=VJf5$6^nBf7@s@qX;6>4J=9LJqNb|xF5Bkn*!knmYlEvF} zkHJfz;mqsU&-HA(Mb$G3@xYrwIgz*RmEL-uy2IdQ(QxKf3a?D_(hv{4^^_BNRTgg+ z&8;&2!e}`2dV5)4_s5mKem?&lqH`+p_QP9BqsRMpI`<1NiH0+;UU=1-7lU}vH%G50 z7FfJly+%F5XgKo*_OZUcWm?}p;vIqw_m{zoz50sR8NB{L{iRWO4Vu@*{bh^pFHIJ2 z*|!W{6b)y6MZz1tS?LQyJdTIQl)iBmuQhJ);%GSY+A>_vX3eXBc;HQ;oY-I5FY?y2 z{Kp0_goZP(On4=lm;Dj(dSD~xKZ{rTZG)E&RL}08u)dC^s-79HXD6oN>p%F0s?p=& z)GY=ti-xnlYT;FCUK-+Yyi-oBXN|?%PHPP{{?Ksd^*zD*dK;9!7{ufFqnyY)0$+zU zTHk>NLth#VXI_Kw>NPI`@xWV5Igz*2;=c^|e^MP1Kj9{StxtXNmBNG!N$s;LXtebCSg?f7H+y zLc>{K$B((5ZE;o4>^F(m0~;O>+u$3hM)#Lxc#A+?|3%So=2Z%>O!LAJ5BkpN`vp}N z@2I(+??S_w*ZU*Z*Zp5gUlQW6{U|54-+uV|snPmotu^$8(QxL~3$I%9`jf;v1RJjB z0*iOxCWDto!DL9`voIoTzW9#XGRn;HA-U<_-UV^$pyp^d%r3c#A0~ z@kNPMl^0tM%^*l;zH#xs|q2bJ{6keI;B_SSoD<~)Osw`f) zxjqX8TA%fPpY?SwQu?wVBVG?|cz)UcGJGf7niqq3&^L#2 zqP_(d@4$BrUK$N&-oP%_*Y{ziF9GquTTD5TH~3GlzGa^_cu_Q*d5ywr(7Z6j1MdvY zS;%X$c&F|)cv&=@c}2n-{*cm_hIrtur<}+eXYq>ZUbFPi{y^*Nwr;Lxv*va2`g)6A zU$>w2*0a?-zsCce-^+woqIne%5BjE1PSiKe;vJ>6lp23%IM=iLd#tZxp{i$+*JmsA z`fS(#dG#GIuOHHZt{v`lKUVTTuW%SQ3G@R?%AiR3bOF}&GR!~mlEwy;X=JU<|K+mg&zsvdt7ASpP{Jd%l zrlIxH$V*;*t^Z}{i=*MJuUUAFnpXkw*gq*J>T9uhn`rH=uK&<*=9LJqNb{l)kL^b} zkvGZWwSLXihlVq+<2zi>wt7|13W!I2loNT|&Uov2>P~}~MZ=j_DZDbxOG7;H)>BU8 zRav}qcs|ypZ4l&eZdh1#Im{HIE z&LH(H6JCktbwNDTa|@>7>pz>f-Q)%8pWTnKzK-{)dUkRD+@kyEu2WupN9o#0oo@qO zk5vn=QuC60J+?w$kJVVbO|6E$1RBo$v#*o&_0CuNq7V=DoIyEpJREt^tFLv7!Hc8e z%xe%{z2;RwJdQugiM*vYuhHb8;mjM}!TJVnQ2Ht$9(j}#c_SlUecQib@RDda^O}X% zsChAn2i_dYiM$qzcMk7slnAd#^Q`wZCRx05c%IYoDA%*?KUF=g=Q-Pkz4a`9pHa{L z`9bPgDZH`*58|PoTQCic_bQ85`fh`luMNWM{U+<{ey`G(fq39`Vj4dGz2Mb%^n(Vk z3k~P~QZKw}%}YW&@K#Vx>@N!}-liK2UIGng-oSR&*Edh;i$Xl`W>8M#4d%W2ikBI@ z{+omF8im)Od0h~X?T2Zoo=p~S`;7)KiH5VjBH<0!DSa`B2i_dYiTcJ_yjh@``uSD}Q5D&agOvC3ti?`C8uVaDc z>+Wr=uj4(co)Mm}C+PWl*I&K*Hmx`GCD3rzS1r6s&5J@j=$k<~vHfZ+Ug=_kmtPcw z*Vn=Ndf%<|Wgs5wiD{^wM^1Y6)zZ5aa(<7X;jFJgc=ei>e}H($V8gtn7Vqfw=u_(n zG@NxoGgue`?47ed2XUq_nj*>=6EXSSO3^}vSPZ`+@}^*pfI;HA-U=2Z%>O!E>D z5A|G3IkBEq7Vqd63?9B;<<9GUi1l^XD1AwY$NoY&k+=U(UVTT+dUge>XT9*M3p|KN z9_2*d0*iObyq}c~bU$n08?3LdTIoyk{jBx+e%4^lt8byXeyKpix&0c2*PwYJhzET+ zy?$x3dFJ&PUQfC6ii9_OozfTL>#^L&u}@$<$635hbT3HemqeiZOKn@Zp3RyU<@-xB z^!=swA#Xi*x8Sh|FNKD4JK-I<{~<+vcizrXe19>nSJlw*A3d&(ilAynLYkSt-0S&C78A?9~0U z%HkD&z~J@Ag6Qkr%=)_jL+R^+c1_rt-xP#5@F45!dxz4Ofq39`Vj9vnIN;TH4$sFLh1Z~Y*7LC@n@8tHnXmhA z2%@h@c*Ad3`nn(<+Yi%_zHt`s)MwBqyet~dBSwzxLmI>v_O@ zpEiw#Gp|f|C7PFjc;GFjoXDGI@pi8_^rg^n=5=pkeI0XDJ>w7$ym^!pdAs_(`fBS8 zUIYziUbXNlH81}j;vItxw_lCLE4{@>{RIg>)>! zs|cj8S$K__7h-+6TNSUx;+m3td*=nvQ;(^u^mBK62yb4}VOwsF!DvP(U8IMJ^9~#c} z?7g4$b*;IXYtPA^9bGdvA&KwyiAha=B>_06KSu(V$|(E7STc=ejs|9;{ff(`SQ zTD%jVH1uWAaMm~cCDu1kq4cF79_qQ8a$-G4p7ZJ}e!IczpA&@FEWAd|>wG9rv#9PnpD~$F_qT$Rd6JCkt#ULJdb0{aa-!zN2%pC9deuq1+`ySTU z@dj1TFpu{$`uwn~&(cTtf~3DB(QwvRExbz2i$OfhBL44i>$Br z8l|tF$HO5#9*#WY)wl32gI9ruGp|8-^_mxgc+i*A_ji|Cyp{M0m|8Ez&~WArx3a#0 z8A@LS;(<4Ta$-G4vR-}XaKEQnc#WE8-S26!cqgti^kvX+)>k6DBF#%dJm_0ZIZ@vv zi&y$4gO{Hfgx7I5*RyT9s%Hk`f!B#?`1wyjP zsx02DIQrCljfOL?w}tg}U#;}@bALIc`^)}cc=erHYVfjXIP>a-SFL&Y`5vg}ddi9I zx4`0^SZnYyXgKo*npt1p>y^F~#AAP==rS4 z;w>yQcok?k^NNHwT(0zmARc(RD={bP8)xx~n+;w+7Q&g=wwCMJta)7!54MQ*y`b1y;BSCl#!mBUvARc*`hImUY-mK3Xyf7Nh^&GyF^$nCMefaqv;2nYu^F|JN z^&P#+;B}$l%xe~2qvjTeXgKpqgjb|_QHTfL49bbTNfxh^ zYOUJu#vr_oHC)fOD^)!+5RdJLX{i0SJ?*XMve%$bcu_Q*^;HV5O!LAJ54L&KR@FT85a3qw5W`qs&n=IZk zbNvzxw0*S(tcbxc+DtbllI zKgx;ix9dr-zTztlUVkJAuUdGOn%4#Kz}tdpsDIX2yoKiYs|Ymy`c|>N-q$L9_<3P$ zKRy1A?6>sYZtBAiT07UXL3s6=*9GyY57Y4Z&*B|0$9ozLXWsDbtZ(2oN?!uvfw!1) zV*8EsdiB+o8~P$>IP;o?*Qj}UKK~snoc}D|IlNz2BD^Bav)-?pWbtNw$j}!?!&zU) z=eVA2uU7T!Ur6;l1RFX3?eo@i*3~8t4QF1Z@X89j*E0_`%&W3^yH^^#6dKOF-j%Gc zdy3MB&nuz7%%hxi{>ymvop`gs%b?-Rs~29i=A|GWc&jNV@)lUUqm>4)3k_%9z-_Fr zZ?e*tgm~bspq$7X{E1iJGJ5ww{{B%E4VU@)c0t|qC7!P@hrolyA^2As?v4V;Ghg3A z`uO}npT~3IT_C*6h4(hda5Pc8``ru#Tef0@l z$kFw!jHF*@9#3N0u2}5 z-xI9w0^wZ%fd`B8a2+kYmwx1MzG&!{>)d1+4U!6XyCXgN8G&<1<{;wn>VYf_R*-DJS;N zZ9mjy6<#s-7akA&c=OenS1G(Q&Fg}A;BCP)v|g&Rc&%ad$@O0x4QF2Or&(WjiPBdA z@xYrxIZ@yK9@Pd0h~X?MHJm>T9xi%gpwR25P?|;SGnCzA(4nnM+Uu z^2S-b*2#vxI2z9S+CIhgY}ULAh{ygyIg!`?xVN4QXB)fkVGMCJ3)tc#WEufq39`Vj3EMEjDkV z$qRISTOz!o0*|k6JN5PLB#XC@?xoB5p#lx(dUh=5dbVAx>KTG~(3iVf>D#u;s^+8Ev>BIQ~c&jNV@&>=>)mM6!B=cDW4QF28 zQr6ddfzp?U`+dMWM)v@bcjP->eY-C<^rg^n<~0bfUi0D*54?Gl6M0K5UMtOYYCRul z{v2*#eFLvh`YL$-oTBH?k)2+Br$UClEE>-GnuXV>d1;6Ted{SF>T9uhyUp`o3Jqso ziSUXvFAnioPs)kBNfxg*X6TEc;mqs!7}v9{Sk*Jn>(91}}_;Gp|y3 zWt!JtMEVZFM$Ug0uXK*V%Lkf2d*iIH`+TJ@!|Ur#nv=1f`@iMY*BUW+aWtIu)eEm$ z^C}=7+HVTwMBW06cj})Npk2m877b_Kz<;s6zHv%l8sf2kQcmOzKIYX|Zr+~=1-d`c zD7*&E%kuq+9({kJ$>QzCTY^eo3Jqs{MZy~{Qu^W$kK=)IqP}q!Z<9G+Cj!maZ8vc} zn>8=W^YsipU$=L9>sf2gpOHZGXPNLyG%tS<={p7+IsaL_1N3ZO`b!!O=X!Q8VSOFv zsd^?L9_qQ6a$-Gq?eOX=HrJp1xNvmlRSU0D^SU4&cv~(_V)zy-Ufm2d<^~--k-KK;9ucg=*K%SiS)_yDm0w?OWTLJ zsLlUS{UrhMcz&Rqcz$T_&}EhWQcH8Ix?VxUnO7#f63xrM#Pc<5(Q~^ z`SWTBg!u*jl|nxD4PD65^Jlrae!=yJd;hEyXxZOY`(zAqmR?ROLkUpNz zB4{{|hu(S?+5NwYmwyHEj=@IGe_ORo;guE}ynLYXS1-J3&CBrk>(t|KfyFDQW0CnY zgod-efe*00zEetH77iZkNgA+!4u0LMZ}%yjTZNZG!2QBLGFS-f+2 zAG1h!!!Ig**87;_EZ(wdM*Bt4aMsrr<9ar0UKrv*-x>YBM*G*i^*llMVx^uLG@N;5 z!Yk3d6yM)nt?%zn`~Q>I{eIThF{0{e@pgUHt8X{06;*!;wEnCXUZv*6dHp$0uRm)n z-m-U_?T3bQJ^S9r`g(_zzA(gN`_*DjI{$6)>N|0j!ONiG%xe%{z2>DL9(b!MC-RnB zyzOU<@s~uynKwM2^$onB^u-_^cylNx@zBP`uW%bi#N-xXE;zj2j0v2`u?i)_5Ux`^AK#fzYK2j z>RV~P&kzgrK0~AM8ZoW+1^%?vt!Y(X; zMz7CSn&UkdXuP-0<9arqRQ1IBZ_r;RP)_VG?GJeCxe#CJQR@kOzskM8lnJjy^Fk00 zyxb+26M54t-llm5FM)=0|Lm?~eI0*M`l1kzNJn+_2PUMZ;@71?*f}t;lhBL2O zc#WDDfq39epq$8Sv3Te3`Qj4c6=|OJ`Qk|y@2J^dy3lae*HO#$Y|E*7CLtc%k8+~E zZ7FX(XI*R5GmM5auTpqrn%7@NyhE_z{#j-57QWTsRiNR_>%E@!bq^_h_l^ z_J7%{?}Yh0Clly-PQCD|H4mSs18+6u#Ck5Uc&BJ=s`X2t@jg()`uhH;^rd;cuh-*! z@IJ4;O_v$-YoO^W;oFE%_89q|Buqwf0obhu;KnP z&f?XY*JF`D*JEwfT+e3B%X5D@MtuQk)!a)0U3{iVj@ zwe}nJjHBVq>x;6!-ajaP6%Y^lrch4QcVvTCU$MFV#Py>)uR(bAn%Bka&nU_4UqWeciuT`tt7}eaB$K`u4B$>MN(ueyH(| zhI2jZg;%Y4S$;m6=*o? zYZP9C=7k_0`wQLkKz&UX@5D)imqEjsS0udQ-zj}5hzH(k%89&j7H`(&*tXJsVKkh1 zZSUZEHfvu0tEj&mf(`eV_Ah$tSxRF?c=eG!NU-UP~typa~Kz7u~m+Yb$Aea*sa)VvhLWBXA~zftwfKs@N{#58>VYxdT&wZiD1aWtIk zSt-0S&8vWT;7y^NSkEepSN^=wejzlRdA)CCeciuS`m)cFz8=`HzWr;x`j(w<=!>G^ z%&Qk(wdUasJJ5FqUz4SJF0gnj-)!(=XgKo*X0g7$V@h8H;(<4Ta$-FPlU{wTFBgP$aw4z&E^j@{FEZLMgoZP(On4=lm*x4aN6%-|EZ#!%d{hzWeAHdV`Z}Id z^$hX(C^x9a!>&8M`et2Y=nJFatgl*lm73Q-gWB&9YSiGZ0jQ-h$hBL3PlJ)ie zO6f~NJha~m%8BiFWQ|wfrm&$efrc}$L3s6=ho5f+-VDl#yrmXz_x~9BQfN5yhTp>a z297FyafrwMNjZ@>@&&KHa=I2(>-j*}x6Q(9)VwS|@9)vi`&%sD0rPq~jfS(n65$nT zUIOAl-(t#%`X*VtW#;{YXrTKA9Ti;9wr5p6!+gKs%t z%&Qk(wdO@29(WV<`g(!I+x;hVJfPvs8+a4z>+4hc;t-GZq?}mK!PQ=Ur_A+WHqd&o zQFslSm*(~0dc7WOvUsgDw@N+ZXgKRD65jALN?!%UgT5(xz8+`s4$#;XUK$N&UfWEr zXS3!dc)TyxAx1QV0=lw}EoOxx!E780d#Dl&$`g(er#Va-6@5$qfInKQ9H?qEt ztg2@Q;(^zx-|yLVyH{WFWE?9}&;CH;y;^vcn%BkSeTyFNH5RX&?u`mBgod-ezBjPG z-d`$xS$==FN58*&>ngjcV5*7#d$@s>RYT}0J0iiWek;cHmmz%P`(FvLUq zo%t2!#PL3|(yMQwIe+2@G~9X3!fVt#oPU9r)AMJG#jE|Pp)Z1lv%V7H6=`1n5a~Mx z8`d|;;w?O3@G8)7=5@^AdbS-_^$bBg>eKfpw%z8f=Q&(IR0^+5^Q`NKDvNjGu%R!5 zhO@rj>8!8&=Sp7+;z8eP%8C7Df0I{V@m~yH|DS{K>V;RWd0h|>ye*i9um5bG`T6O7 z{NS^*zJaS*U*FG^zApa!^cMa3>A^;?zD-XX`Vwe3^BRTMpm|Y<2YoXrC)Tsc;;nqy z;Kk5z<`oHV_@_!=1mb}=fpQ{moW(o!tij8o;mm7$J=e2Y^U@Fxy!Dh5dF`L|*7F3- ztukL{&~WCJ39m%+QaoR;*7Nl=i?`6MXGNfTc9*lhjzg-RA+Bdme_nJ~!mF>Cu0_@P z4_|z6)>kdOO3mwncpMLyhQ>pU%_~Bm;++?S*LM}`>wQ}3>wdHX-*)pvmIRjU4phI4X|lgP*kYneU_E=jGk?H43jm^AZq``tC#RSU0D z^CEmcnxM}|H5TuLdHtRVbp75pmG$-RQ~L1pJy6fp`uhFIa<9J9kTL%9fz}fZ!mHQ3 z46i3TF%9*Xr8dtTfB8V;VfeMIZy=-eWq3Sv>hUmgi&x+FXN>-tM8mm%HVdy&^I{MW z^_)XFv46H$yjedpcwsc0c_qRt(!74Segxhjx~4?lB#XDuygz~8SLn{`cn#OH?I)_9 zA&3WFPT!x{_Hl1LH<|hpf%H`huT1lz5D&Z=loRz;S-hj>^;j1g&h_klHS6nsLg`EL z`elV)zwBS;)mLl2&ld^wK3~1?sx>eFSJHP3Has2{SiE9-H&o`A{y@)<2BxsSzP(Cc z7sNw7x6m^wtmoj(mOgs6E4&CA&h=~*UW4Z4;l@1hj=_fYHCen;b3LCAG=CNeZ}`Vb zUxw$;PCb8)vv?wb*+9q>7n>8;5@t|)t<-~fnFZI^*9M(%^!Yk1{YrQnh z;>|j0=nJFatgriW*4ObPRnLCDzCEO`Z+A6#_3eJa;HA)T=2Z)?QuE>v5A~c!IkBEK z7Vp4*gO^6bnb-F!*4O((r7r>Tz*|f?k$2={UVWSB+$jA8?{~ZN8iZG`c~OW5-VDl# zyrmYeb+@4}j)t?o;ZoK&(4+KKKs@lKP)_8H#J&1je`xa1aOO1&ud%>`c;rz|ZZ>+L-t+e)*{uvLnp6{K+`nn(2`glD*MX%@g-{jR-oHgp% z|H~lttQTIj=5;|l)N>1_q4nSbi&tyD-xCS+e$PM&>+Ac0(wFDw0mop&yul@2edqA~ z8jZqh&^+t=HJU8mfgc<7Orzo4KZ}Gnyj$r@Ks?lQG3CVmInLs3BJFBEL&KTZb}84h zS@ZDu430lt&-Rac>se0EUW6Ay!q64 z`>LM($BB0cHq6`g5wE^eeFiU!hBL2Pc$J!$hIpvwddi9IS7Y&7hYVgE4QF28C9JP^ zm(o`O@xYrxIgxkdMz6kE=KU;uAJ(1MAiR3b>*weFhxGIQr53LgUWwD~mk)G*Y50|_ zZ=hT0%kcfBPJMrAWU*J@re7HKOrYUh&t~B@YF-rLaXe5?tY?eG+x{nmmqf#vS0cP3 z&5J=i@a9lX1``ijl(uq!^+B(`m0boehK94g zYT;FCUIgNSH-U0uJ!>r9vhN$bC>qYZzVWQD_uEQe7~-*>x_=&7;MG@ZuFvv;`b&fG z>NPLJ{iRd)m!%f3+`K;@Lc>|#@CB@I;9E*xme=z=dObfq z;`P9W=d*1e@Yb`{To1+rtp_WGSEhLtydIpQ*Mn6SZl&t=x+~sb>rgXI{PVsx>bH@i^WoC$`@Li&xug@FHk9^9IgmeSJHWzWhGo z9fJ+)8+^Z4-wC>RDEjbzqC2lqcnzAD;`@=S_5H{ui+A8rLth#VXMIJ&8-7&jOF%r- zb1~(_dXBSrN6qJBU4fpDwTpfJFi-Jl?5Ke zBad<-ug2n?__?7kgNC!dzVldL?{=jx1@XXJO*xTw)G-0>6br#$!Ch&wyAnX zAs%=$C@1o^z1LgMg>>$h{!$TWJy9vVGR+I|dLq}Y^i^5BqdznBb)n&`ulJvc6M2JmUVWR68@vP>&iWdK*PwY(h{ygyIg!_7@k;64G^uAk(0C{k-f&v! z%kX&U#56P>##y{mW`D^B>Mw2o$MtO1yfpWh^}4^bzsFn8bNGBmnea+9&-#4FG>f;) zJRjlnCinL1{s-&pcu3VV%;%#sFRFU(dbd|!@nh(d_UrEq!mAcurRH@(JoJ|>n1MPxB=*vGCL|=pO>NPI|@u060(~!QU7H{`g4PFWj z=kYguhV>0>Rr=x(54?Gl6UX1k^Qz)hQUjr;mqqe&Gl^ix~?b0V?8M+^0w7@>v`fg1}}q# zGp|y3Wtx|Qc;Kz3oXD%Pc*W-XyZHXCJFoZetgriPN*}&I1H3JmhWh9JYOlWS2Mm2l zG@SL-3$I%9Vh|6!Ig}IiEwFj!{g)&f&b)#DWqo~LRr+EOk37nWyus_d`dW_~`r>Ff z^BRTMpm`M#54UJ4CoUXk#Iwu7k z^~^v#)Uy-Q(0JJOF0Z~)bG?-R?;yNt;Z+uR5RW`e!{(y8Kj8V^gHb_02h1aNg8HmUB!!*=>Ef%lVyq=B(x}Gi(UXkYI;X)dC$6&*}Nfz(G z!-l>z8qWQt;{~o~+a^`d1jGYxG3CVhW!ryv>v<0MTPuZErg>TJFNOQ9RTgg{&E+y4 zD$sD&*PCa3-47^zA&3WkIT~ZAZ~r^I`br0ldgcd$@alzEt$7)U$Nqw8sJ|?*cn4^% z6Mbnkob?U-jrH}lD}4!`KNsuybMWn6edSvWeIYcQd5ywr(7Y@xoDaJ!W(W=`jQY2ycLv_&VLrKmaZ+No{>P;D{X(}dNylbeh2Z6!G_zfeU7)D zrC&1i-bcJ1*s#7Di&sk5GNLaZsDJkTh4uBOl)enaV?C+QV}CjF zHm|GwlM z-s;s?OFlIo&~WB83$Ic0@;TCX3^uH<#o{eA$3q1g&b$)g6=_}w;-Q{7Jsu`myi&Ti zruxe_gYY{3#Pw{uPt`L6@z{QthT3o2EN?xF??s>R`qu~HRSK_6^SU4&cv~FnD7*&E3-kPW=6gzClf~O^uIH11 z*7HTe8{VMw#dtkGN3UPTS-j#D9*gRqf#&PBKXN^rHLnZev47Gz0Q*aOrBzS5b`o9` z4d?bN6JCktg&`hzXAY`*PP2ID@IGeu|FFJ}dsRKH_c3?9#j9`kPNSYFG@SKS3$If1 z;t&t|=21?pXN|=>VP0=$&~WDUonU>v>y^F~!~<_N<)rgpg;(D)x_6=44-IEtgYfD# z4?mBB?WdnVEVXzC_8Rp}qv6aO{sZe9Sf}(QARc&&DJSY1d9zpF_AeT|BpS}VX5lqz zUJT-aH-~Z}uf^h>%lE$suSoOk?|-p)<*kOk5E{<uSD}w5D&c7x_?fyd98-N z3>wb7?%%P#juutV6vQKsa-zOn*Ld~SK4|bFXgKq#g;%M0`L7V~7;LzI)>ypVv=)|n zrUI?6`+m#%dYhHLIIpkg>Gk!I8D4#-4jTHhXgKR@5MI6Jr6C^bxt?-jJ(pU%6JIxY z88n=E!^c_Qz*?m*1@YK^loNR))4lr2&HLpcG@NNB-O$(n zNDy9$@QO6A3*tfF7ED9)*(8g14(Fqe|K@tOB~?AG^U=1ez4fg9rlBu_hI2hDg;%C| zc_J4Q9bdRAGyqs<1d3k_#p?{8RN_gzX~65@fkf^s5n|LeW_4t&?(rO|Na)eEm$ z^AZpbyv39gc?&Gw37UJ<{E3D$Z{XLgukTK!&zjE$%PoEMY(oD2dm0UwzsGmGpzayI zC^T}(UB$OU;KAZJ{3{*vjsj@(-{Y%YXVf!-hO@pRfex=x`ttX1e}N5;hj9h0{QctH zUodznG@N;D$GD!&niq$7Xuo-s6Wg!-DsMfvf7{?C(QxLK39m%+Vh|6!Ig}H5(=6Uf zvwy|{_0R6-SzpH&R6QfyKPTw^xoetN-+`YR`qF4P>#G)CrRF6d9>)XaM13_DZyDXY zkns>j!NPLl%l#8J+&`CEyrYjA zye>4HdBeYAeFJwWeMyLidaj_HSkI9wz4|siVDJ)XIP;o?*Qj|>hzH&b%89%di&y%j z!OI7#XNmBNG%o}3!0V(oLf#~s*JJYb1ku-Vl?1a3|cxg18dA-lFzV1~@UjpKRx0rHbJ@>!Pt8bHeK1u{S zAJq%5TJ!LF6?ii!C-N3pyb~EiUj_|leFH~WU*GLYUkc)Zx0-SyZ}1AQzGV*?yeJyZ zyhhQcV`G`1=O0KhXQaMZz2YoYL3D?+b6iG}J%GS-gcb_sINNfrhib zwmzy!NTydak5*(_}pnL&Ie~akZe{_9tFXTn&Nn_kH1C5q3=hG8GO`x2}JMtQ@zU}7xk_pJ>w7$ym^!p^=+GC z)$@?Si=yGos}x?D=7k|1cxRr*oXD%Pc%^24$zySydA)~OU-xH~z6``;JuwaO_D{C- zZAG8VXHhg<=CcnA>Xs8cpIr`t2a7}SuYhhWfJV<}=dd0e_&MwAODKKTdT{V^ufEy` zNFV?G=?EIm^=uSggXZPish-DR!}V;kc&F&uwVFTCaOM>WZ}>AxUmD_}{nqQ};o~e` zxw)PQ1zJzE{fz6`ta({@IRbb+uwi}eud?dN*V9r@G@SL739m%+^6(;cEf((_ z?(dceuSoN(`@54Y-li_2za-Fbu4l(nT+g;o>Uu&v>Z6>fZ(E7Co(m5eyb3g&d6mK| z(>(nC1K{NjU{2&!S-e^Fu7mU!e4p8!*L#rlb$>$X>;EC~4#9?b`!DtCYrP+R!i%Hf ztgl{p)tXlU@t|)CD}51&2YnMLC+Zt#@oIM(ya*c3ytXH~ zp3Rz<|2FG`4eM*a#9PmW=6a$c(0ZawcqN(_f_NMcdOb1C;?>?|>O;d>U-y32*Kv!g zXZ}vs2OHM6>y=)8yT54gQfN5ys)bjnd2xsbee)$bni^W^H(%{9=aORZ=uSoME5D&ZwloNTAEZ$M`egS^p zmOHN_!}V;tS=BSi_X}3&`vu!B^49Yd&2@5q$fDt_uTpqrnwRGJbG@EFt1Mn^+Nfs) z4QF2OPgq~~Ql&5d5Y_V-Y`DMdztF4i9NsUl7hbjIS?`xGuz0&4H}s{@aMm~Q1ncW- zQ2OwJ9L_J46Z^~H1h2kXs|;Qk4QF1X@ESC)|90XXf(_TR$>MD?*Dr}c>z5+o4S!7O z!_R|(z8RDg^^LQ52Oc!^rO|NK*S44I*{pd9h{y3xIg!^s-doSoTMSp6 zJzUSWC90m*_mylr-&@b49n?Sheoq$~&f}p{cx9TGgm|du3d)K4sx02JhfQ5J#U9Vc;5#8m3m%S0FAEa0eUtl^Gg~HXMJry;CeRS`2Sct z|G3zzI{#0DWVp7`AZysKX^?K1yG?^+n7h#+-HU5A4U%ED(IDM0D;lI5W;G4c4Sy63 zl3`ZkAlWr58YH`}?b0CEFxzDZ*&Aj>gJhT$4bt_R)%X2A@Ao-#?&oX|&!_w459ag! z+J<8@KO``)<^`DNQ@jY|1FuPxiM(2a z*QoagY|r+*>@4ZabV_||&=G*QsQSZ<$I$nAT^|P4`ohc$DP9EfQJ*Li^|hG1kLf%N ztaAmz7F)&h%!;%_Me^lhTpC8FtFw&nHMkdARl?6Oymt2yd8Z#xP*Z< z&&NEk;-#s5j;QuorSYzR?k(>MdN%L;*}bAldA|SNZ(a#Q1o!_hU?BO|et*v=pYl|C zJn`y1*S0;mXDGL8&nv&bXJ`%%pM2@Q+Fzxz-2dMu{e3UwgWk7_GEwi?pPc^ke9z+> zPSnpZU!2i)?GJvn3s8IRE58cfk3VoY2#3#u!$aj4<4IZ`o?gN|!1@}aqCSaNiGdC8 zu5Sz8<8M{GO*kap{dkgicRsD;NnTyQ#`9oc!`n@~hvSO33WvnI8&4ANJd?-mhxCc| zW5YWBqo^cPjCohWU(nN8ylo58+ATonrEOXn%zKY{tNbciT6GpD%*>!Z8~Cioi(p{GyYCy+Uf})A ztA|74orEXJ&wHOV^p%fkytR}i?;_&e1Mg?vK{zDdO?Z-c7n;2BeHstww9ywy@tNxnC+q%t?w~u%a!26lE2#3VG9ZwSP3X`|9U*j!dU{il5 z67LRpKl2X2A@Q!klf*m0(_hPRt|XQFlR1M_=591`y&JW0IsOy0_SG~P4@HoU_Jgud(G{mdJIL*iYA zCyDpq6NbKxL5(+ufemjj@ot9qGj9S8*-t!4yh}~qu-JR%_SuDj4e!X;guZieXoer~ zvk4A~cN(4~-V@t~zJ&ozUm61&-hSd;1@C9xARH3!VmwK_tN#yPkIuuuhIcCS;Qf*Z zhs?v1#5=|0_0WDA&wm)$@NTS{!~2<60f)qU>=wm)WXsSuPR|<< zuMYzo-ag`80PkmB8yphv3_MBtt}uBWZwG`NKZ6+9@J?iX@P4Te4q4wtig$v^tGiX> zc`&fy-FU0;^I_azf*%-PR^gC%cb9gZZup(yXSrT~Yhb+`82b3{o2fsDzi+nT?IqsRrT%_Y z_4kKL{ryst*GSKU60Z^i8{UyyguchGQTjIFko4V;C&|wz9yj!Dyj$~g4g(wBe&XE> z?`Jv*zisz-pTNOS$}ZI^;ep2PceCoeHyP40~_9LY4Y=f zinj@e>?fWieYgJF@UvX6zcsMligz~g?kUyZK~;Y@mFn*-lQ;f0O!{>vncoz}xfzo<+QLT4xFRgbkG}PUr~HgyV8grdOTy1HaVrph@OlLfiFXp7BtLKX zmFee)HJ%3p8{RJBJzQE}ud4O+-KGA1y2&dKYrM5LSn}?=S?Ie5-p~3D!XfFq2~U!~ zJ0CUlRmU~n)`u*4yNUMzyq|fCa7et{@g(uiGkN^^T{J(e*|wL%UnG5{_Ht0Qmz(e; z@gDr8p>G%^$@N(m1~&D#mw4x*6!^jGF*qcBr{PKBU25_c@RC9D(iqtAj@%^lU4>nn zc!O|Ayo>Q9@t)W)^!;u7k^71FO#6{no4miReV$6ZXKJ6Pn7r{%YJT=%VB_a)6T;66 z;Qj1p8yu3KXW&Wl^VUZUKgX}oc^KI6&SoCGU-ICPd3cg|XPLZ>OElgb1~$C=z9977 z4DV;&1RN6YN<2xtd)G~U2LzAq=k{SB?;r8aqZeFo?Hk0+qqbN6V9)h<2se*jjyH9p z0LAaq37;$PA2mZh+&`)pW#av#_7afq=ahd@ZZykFYIjq?C)5NXrJ3ZbLyM=n#N0D zVC`p;d2z+V=Mk~Li!#yAA%i!pk7r#NSo3_$^C}+pC*akHGLcth@X9~0>029j!^@<| z&(v#_pOBA!Vll$c$)7s?Y`k6L;q!p@`a;YLC?0;F67Uw){Lo50JeShTq!%ltWH)#6S@MfTO{Y9A2ozd#F-Z>@o0XiSMx)^!5fC%Ll{3vA3nflug}Z8 zVuREdgnZCfBg#ZS%M4zl7z>zJ>1upQeU|)8D&87&E^MEok0EdDA*Y`!w`lsNF|e+` z0P}o`mw}q_&k|*#z7~TwMe{AM&oHp&<*z4wxmPQFkPo~jQ6}=1f9%w^@nucl90u0B z81tfvhu^;iyg^YW^12OPxmcTW`&^rF!z*4#`U*j*ZyNG}H-W{_{CC)?Z$Q@EM;~97T#YZe zYe--ApQJwgejLy@qQ;l`6{o%)F?X;&@%b0leny!WR=i4@kB+MOq21u^jB0)^VPMTG zjF7(kKPr8YkNQNJ*#FiaH1z4~&t?p)d2!~&6t5EUfp=7`Kl=?{hrT`wVqnelGOu{1 z)aRl3Xj84v%1oZFFX&2N>eJ+Bvcw~On@Zo!qJdw0^<8Wtwk?N?3V4t^4Wj^P7Fl^D3V4`OQ@Z zuSbjpa=gaCy1itsCR0wHJzF#HU=S7U#`$cM>CyMc9t8}O8 z;u7fC_SvZWS?S8pLX!05UoQ2n?HBqM;f1gNe&p2GBi0(Sy|`Mx#F-aUyh>WX994ey z8@#E{;s1qs2@I_3&&#}GozxeBe5k)BQ6|=3nZaw+`vbOTdtU03Z>z&xMgRYE@Sjt*g&sIS)G9mnVAWfPC4qhea(;$yn0b4`ni0+Q{S-O zUbUCf6U1fA)SR znHN_)59EVBeD;RtKZ7>_*KDf(A{bb=7a#Myisy%X;8ln+(a$QAr;le5SL0dcW8`P* zWztVSjb|02Oyo`e!0G2WjOj{W9|qR?Ld**&UNhul`xIp&ufgC=>G~3`^yRK1eObTM zhyDPsN$H!v&#A9N%pJ15U|_8;%Dk}Rd1yY`{1keI`q~X%BkdQ^{9cKHHLvhd(wBd! z)Q1}epl?yNm-RzVeFM6m?%GS7c`?N^+DpH|8>Z)pc>RKbwLUNNiZ7A+f{+jTYDAgn zXPLoU(8uevtMNK@CHa|DygnMQJJonSw&3*hIKH1Kz&xMg8Q)J-Yw*VP^+cbm^+a}% z^krTw{cNW7M7>&1%-rkLx1#s=X;=L{%)F4|C8)pms{Y<$@H+JR3%aVm{6|P%?nP3c zhw5)LDf{2@yi?zR-rpmx`g@FdQN{C9f3FZ_V*Bhic(dZ#iN}{w46OS@aUba`yin@v zf_&%?ZK6!%ZRec&`18AXe*y<0o9p-ejJol&e7y;YaJ>n?c_6!{1Uhy-|FMst*R1dD z7+CA`G1RN{y#n$<-}6P8sIRJo>Y0^)8eg=4*qD%+i? zccfS7y8x|&ALxH=a7er}@Fek`xYN+Lqx-pJ>*s#r-2v}s-T^oy-ZglVcvqXe9^KDo zTR%@F-izS<%&UPz;yqRJ^AwY}q4&Qz+x~akdxf7j!~2;x0f)r95>Jx8TW1VETl=*7 z^J8FBe`gc#>C$+1RE=j3mBzEPOy1wNp1*Ie(DzL1`Fpd5zPk5m`aBre=(~t`4_~JI zT!lmO^KLvzeqLzuW?{5b{b3XX8{VVu5&AC2p%Q*@euqQiosTDp_sF*meLMXcZwUh% z-ag{p0qr0lc5}wZS3r&cKtzJKf|}U!m#S zvaP?nE*1J7DAnJhs=wPy^>^pD41L2mWXkcn3j-TJcN6bi94g@l+Gi6SlD^aMBzQDZTy@7})TR#Du;};Qh?&ghS$;gD1()C%$3m8>aOV-+#csdcQ6SQ2cwY__O8y zSrGDJ|ExxoiTi^?B_Qud9>?c9`k3b}@#ub4>GK_{3|=E%GRXbbN(`*^W!}yEpXE~D z8dM_aTf}A{_6H~LP=>O;;EhVY183Sv5xh~%SJVENi=Sx7} z(fv~2{MViOTJ`4{{H~s7h%zs%cw2C33%pf$AwSy<-h%L&_si25SnDgii}dBoq`p3? zzfM(u>$f}gO~LMk@-u;fH80M*nBw6L0npbZ%EbQAZ}3*cy?NF*je#}K%ePyi5 z{$6#zzs%tA=XFtk7oXQ<%}f0o`I%HaKP*B)Uj;5>MSmDO;Pi6=R;S9(GzQkZ0P}o` z*9ZB)>l9_8pS1>WL$AL%SM`^DC+W*POZti5=K{PzRev*IbLuPC#}^zQ?Dd727gD@w zYM&FTeYTi9(O0;=tl|EPwV(M*NMFt)^-V)Q=$pV|MExz_=G4~+vz4m9N(`)dG3G@T zZw;1az*~eD;&mIm;}}1S?;w4JzntW0n8U|-jq!8)t4@7&djIpd>VHY*#T9Rfp3gcc z#z-;$8N61U(&c#V$H3Z8AM?D5hwD4=a}{35&nkmg{d(?oqrFT{IsL4r z_QLz0Skce0ei6?{p3SJ;@YSDKarZ&uq4H_?&BD$pfsVbO%HQ`yJU?vJSn=-bBx#2~ zM7$#~g2CUDz;EW=f2$I9EU#R6E&CttPgvJql%e52DL)|}`yUn~`d@nq%j=11owwzR zS9m*#%s(x8bHqEKccjgb*dNq*R%Y;eK7?L#{WW7?%}ZTGekK*K67qp}RP1?Re;>;@{Tvr#IrDJ+Vb2RN z&!>3JG(Xg<`JvX}9mjep`!>>-c}n_ete0kPaq8R9+vgkx)_#VW7gD@Y$Ok_MMVaVl zi@~cCa|iqB!N8iA?;w4-qf#I4_W|!9yzu;&cIq1!|0e4X18ZK4c~Qk{CSJYbbsM}o zeZKX$ns192lD@)|N+0-x`h;ib=k`~e`glK*)`Ma{(pq1Vd2z+V{bB46YJE0j@apvS zlE>Bcn2&j0#ap8Oa8UJ!DuXwxx0g{@?IqJrex{B{KfB1!Hs$B!mz{og==y@L^o5ug zP(1Vp{M=Of8VufXe7|=tO8T;YQ2H(xywdl3&wt6OZ;JLmsl6mHux>9==7kk60{Nh? zNtB80v)$m0 z)Hn7;r=NVkk^B_*Q?30BFwduW3Aj}Syk2;r@w(RF4e0e3aaDiWw~)Tfw)E3a^;eGC|MwE$uwivt)+W#a!gBV!z@^2=6xuVqPfqdX? zD&F#hQ(v9%TF$o^So31ciz?m{JURiqgYZK2*KP0?^z~WV)%vXXCel~$6VP zKDWQ%)W`eREmaYtMSvvJa36d<7bT;KdTJhg3e33 z;$vYNmsNP7_R?VT^!1Y8)p{xS zucR;gJE?Dr=J!=Kzt4Z(sjphJUDmhd>iRv(ys+ZUK|b_{17c4A`+K{=`J^xZTd5D9e*#{o>VNCwPJPF5eH3S2O!18Cqke<8ppR#1SL2zNdBxu-eKekR ziZap9GJ{ussn$N%y4|$TR2%u3RJ>`(2R|pU7~225!RhC$u5Z+pz5w%liq}Q@+LXRp zllNXt-zWyw?IpX1^kp8Ges)1V=xY;YqMtKkPJL5wH&XTY1P0c;F!Mr+7lC}>HHk9C z{AchwbY9REFTb1g<$f*o;r(CWZHh4qdCMuMz6G6!-?wG2FUGv6;^F;Y;B|^Jk=JeT zdSaTN%@|nwS$reuD?BFkRYE@Sj=meqMBeu2ocfMq{gPx}T=9(c%aFmF)z_b+uGXJE z=6Mybi`Jj`tPkm{GI;#?-ZXxS&-b?WGt)|brZ%OYqhKWXIjH=c95wvx)#|Sc18ZK0 zc>%=>LO$?nM44EB4F<1VUoWlUMwB%#cOL1>{z~ebhJ4^nsQs+@&pP!@!P6?G{*Hk) zFUq{I;zb}Icuk^A)YoqC%EjEz^X(cA-qyTA3+c;0s`NoV>JxJS^434&)Hf@}a^{V? znjhlKiz!|g%@1vAe&{!NQ#vo zPOm=?2G;c#V4hF$mZ<&?s`{%ncq{sT!L+OWg6tbeUuHx4nV|gwe0GY)mznFF`lfUq zzTaM7n0X<^ix96#@mdVt@H_GU!tJvQ18YC?&7?2)h}0K^d>mgynb;qeuXXC1eTT*y z#lV^uV_sD8x*#8TZK6!%bsM~4y+2_8vF8NfjyU~ne3!MJvNE8_pc{Q>>3=cQgpekK(!LHc@?zOhd^{jAgbpT|}I3oy^8cuS=3pzsXa zORd3M(DkKV>C2u&`Z7P0e)f^RPNi>V*r~5v*SF@X{=&=)Dc&^cn^5{%3|_0=-~F!o zd%lVE<$fylZNc~i?PXPrS?K5T)lPi_`t?}E)%946c~Qml)Ad+|C=+?z2Cq?ETk!MH zl^EDOKXK%>B<;kv((??Df-#56m*6*d^rwcDuw$QR=pY{NCu3mU|B?)iKP>(9KtA}n zDe4II4VAF+`2x{5x&JL;V9oO}&#QQ8$Oqnt>hDzsuT>w<{I15c%-LjW>L*g)7WIc! z)gLC4%2w955CutczD;9btuMs9fa3K*KIrQdWul)A25;fH80A%u;L{kA9%f@Oysp2JpO(>ZlA8&OQDhUqfUJj_4gAY z5xyVc&8okjR018_-;ZPbOr1r3CVwpbG{(=dPdNP??m(}(zjt9^-ChFB^C?~s^09r2 zGO_+@4c?1CsC^#9lOJ&Nc@WtK(w8|b_5A?yf%k1JMzoiik303vinS?^*P|Fb!+0$| z4`Mf<;Ex_IhxhaI`n_;S&+DI$Ckc062`4|FVS(1y)LzmU*zgXA1n(+%Kl29Rka!p4 zN#Z^DF(ps(2HqseYJ`8MlM_w)TT>$TA zUK<<|?+iRiyeFb@ss6-xZNs}QDEzz*24?1sz#;K2!;{3j^`nNLb#0oT z9t>=FXA|$?J&Lyqhs3)ZPZIB}|AQySa`w}Mfer7zR|$O&!-W^?TZKdB;Ys4%d!?bT z;{r`z5Ca?DMZ`N9-p{-WI3(U<|EhQwn!EvBU&L15qyHrIoeA$}UOgNV?<71)`W_iH z^zFP+)3=0yjlO-vy93_OyaRAZyle0z@vbm=Q&79A|0OW6;hjjlOR#Cc5A?rII3(UV zc#?Q0n7kEQpK*V{z=n6@KT>~y_cLz<4vBXeo+RE4A2IywfZA31f*9EFb`kGnY#Q(b z`YPa%c#oa0c&D4Z# z-HcL5-vk^I?@ByLyz@+6x!5b={=S9_0UO@oR|HonK*D|cH5(69Fku#|NO8p(zxXdf{_a_DneFM6_ zh^@Z;#5)t-&-&`&ka#EINz!+<$(z#qL&CN{oJzb)O8ucz^@nrtB=Jr$d9ApFkn_7A z0~9BZT`E$@N*o86v@NuH!I%R#Jd2868M4s-Uf%{=NWjC^qpn$ z8e279B?dP7?t2Bbm-7^F6Arn(;7Q`$+i&PA7kkaJ|KaA(Gw|s1uYreuD!R9su2=4Y zMEHDt_|2q?H4#E|H|4YY4aDJ-Ul{M_$i7NCY1IX5M4*lCooXjc)s&(6^6y z`+2&gLyPyz>y;qnjeSVj%Dh%xpWl_f0P}o`w*`Yg@Nlh04Ybza?TEcY zxxeIUKQdd#*ME!B&ou2vj;Q^}nLek!9cnLBfA03P!psYmcu*MVEA3~s7`z4HHS0^e zs=xf{q%ZdasSmHOfY+(&Z~22xeXTU#l0H8M*6k(6yr|-BLF2>v6KxRNOSi%M9<5)9 z_XP~BdBs}NSGZ5=doSbz@2#RtH1;KV!cH3 zAEWj*@q7e{FdvmxN*9+v$L`l%4|{r0f5dw)23GT*pQIguuinJJr+hsm!uQLR_6Hw( zpAvQ~Zx|)X_SuDjb$f|3G8PJO(8Mt*kT{+YF(VdjMtF9`YAUa%Ok z-`ZmE-r1?`@4glT$-DOZd-yA;tM^>nCcc7t&nv&bXK0STg1Yus`4^ME-1nuv=RiL2 ze*bp4zq|Zir@m@^zh}$#dSx%5U=ja7>3U^RU9a3;x?Z`ogp>QNJvy%$gJfWZ$~+XRQiI}J|~?-Y|ag$Ox*CNQwkciRhvpO;|K#Os7Z;+=yh ziFfOJ3_lxj3q-z@xZl)h06YhBY(zh8+biFbm@``g;*jV~ZSpP_x;&~5nnqjqh){u&0><8=U_xM|?KM~>GYfqWRR z-!00-`KY!83sH7p8x(` z^6>jqfY&R^6!Tw931r^X0gacyz?v6kUP$pGkPo~jQ6}Ig`%f~#g;u)WxRb}wT$2EO@ z7+CAeoI-x4zAOD~hJ4UhFUmxHlkal+c^seb7GhpN@q*V0Ug`7Q8Vp{we*LiJ>UuL* zMf$RLNqu-d4*CwL>&^LpbLyMDO!IRT18YB{%nK`C7vux4O_Yg#wi~=1nr~@5Tf)Ga zSMZU({CA|jG~{FZ6lEfB{hdyIb^7ye9#_x1#hDjVJRC28cTn~BeuFpse$CG=46OBe znOB^Z`ht)Tyc$s^>MJvN<@+?=+K1inQqLzplZuCb&kno^EJj?fj9udNv;1MoJN{tu6z`Fjz%nK== zAM$~RpOs0x7K1mX@9!pD?eFHFNBVLzQeTAjcbnAy?()S>eaG?rcroTh70>v7yl#Ux zAm%E*9*bb`4C_y^zjWm9N!p3V$R{H62 zKJPYE!t#1);6r+Q!N9t`_?YKaJU`@Pdl6+~f3Grl<8=Rs#!q~n*`AkqE}5G8w$#@Q z`M|3eWg>6#?aEfx*NB(Ua{sIn18aRD<^>dQ4K6i-w+JuP9~unair(L+F|g+4P9}ZX zX{j#(`M~QHWum_Mi=6t(Kc(qg8+OBsGB2!n_<5JWo4{hk_|k6hhCitB@b91P^%ee( z^yR-L_2K7b0Ix=riTc*x=G4c}+faKE&)Zo08E0Nh@$h~Z@G8VTFy!?cyjHl|s@jVm z18bg_dBtx^eOoPpw+b)hXPLok%xJty46J#nlgQ7c;;r2xc#H5tys-|apZtB^oSo;Dva#2CwH0n!aWXta;fA(wF&$^s^H3q5h6GOWw?dPJJCWYrG%^ z*1RzDLW<{seBf<%+iWUyONC#q&Tu z>Qnp4-3G7qlN!&Dfi!beOsrq|^!Q=0zr2Avy`zdYKOZSzNw8QY#n_|7RU#yqlHw(Kz zqJ$m0UK;R z54@w7Vwqz8dyA6EyyNJ9apuJo&**>s2CqY(|AOx3Kjsy0llnZ6kK;>e{xf*9Z`1r7 z#lYInR2li1RJ<<82VR>f6a5@}v(wL>*K53H46Jzp=J^z_67sSB{sqfKUai3^@6~u~ z?{&k=dP!gAtJ2SD$Oqm879)5wZ*uBu9n*Mz46OBqnHN&Lt(4%c!VB?Q4Bp0GjW>sZ zH81}x(wCc(`bHri^bLwK(a+@zocgNYrSZ1lPc!U!G3G@TZw~T-cL0kKes&wYsjD?! z0t0J(MGxsK+$!}&ARl;5qD<7c{jW}a3t}#o<244>yd?ADiq{AE!0S}=`;fsqj?dTk zG0&@b#^>u-8N2~8SFyeb2G;sAe>o!VKcpt5pMJ;(eHEfi^mFojr=J7*_!4n7zJ!<; zDDh}~sZirfgTbrAM)UpNH_)K*A{bcn3V$Mf`CFtuKjdTmi88VN*7q3tMm1hD2G+bd^J0ou z3Hhk+vsfnb`VHQOKEKbon%}+5E2gEsQJUWeMVZJeGkA4kZ=3sr2Lo$;si(=$q~a~n zdj6oeMnK-!Zl|BKV(rbmQ4Fkk0p|G>uZ!06ZE8JVYw&i&wKntc0bF}t_K&15^A+i5 zny%kR)b;z!8=d-gK8AHGc^Fvh3o|cN;z2&Nml07W`q^Uedb%`TGX~bY{8OYa_hqTC z67sQqia8E>%dJj*8*quJ^vz*l&5JQFs(7Pxy*Vh#L|(VS8;)x{{CqEaUhydDD||`n z3qn5Vs}W@)Z~Hu_zG^X7as6$%8qbozJ3uz}inA^Sp}J z2l=26pG_fNmBCxN3jd9H(->IuGEb79shg#r3CIUtuP77!oNRIWSx)-sdTi}Yz_Ym? zJDX9vEBX0INQCDj;WrCArvy6odTij`n!X4I*7|ZsNMH7gQlB64L0^R^6ZOr9o%#lb zbsh%RyeRX+B_8A>Pn3zgc7wOkq4DN0u;vy1K>G4GNqwV`54=H9Ci2$bVCV~Jya)!? zyg2h>isy%X)F;YBUcbR>ZP$2y46J!x<`pNTKD_@6yj6Ii{!nJ{j$`~x?U0{I#WTjw zv1Y?heLp1PYCj~vJfGtEX+NYw?T6GFylQ=ae#=$+%sxT-GGCB>&Qbe3pxWom>z(=* z^!wpySNFri%nK=AAKee{RQJPM3|@!cUhsKz`}UIGCVjaZr9KbjLwng&?Pd92ocdP8 zy+}EJVqo1qW6X;xUIOxg*DK1z{?KjkI(B2*WnK^iYhJNP`U;;{`XC?m!C&A~f7t$K zr@q-wXuMGjta(Z1#TBm$@`2YT%0zub2Cw6j8ZU@}HP6R9ui|+iAN8sAV3omZ)%QdE z7+CW%zb8LaM9+7DS(`yrF(I{n;vjizr218ZK0c>%>sLq6ym5oMyE4F+#~m&WVE zz?zraB7NB#q`qdz2VT7>6M6HmbLyKFdu!Z2M=`MGMVS{?ye`Pc_M-Od+6`V$qo%JJ z18ZL4ccd>rCiPW9KJbp7g=M0?^>dv12K4ncejc1XFV4J};^F600k1-oiM)P;Hzn4J z>}SH&`qRt2VoK_Z(E77Utv|~Q-iAJ2&$$|}Q@EktyxAwg3Z%AL}bIMN|ubb3(J@Z;fHLv(<(pUJb)R%yK;Pr|!k+=OCr@jsS zdAB)N&$}g=7gxMd$jAO5%0%9f!8?xUrF_iuDxUGYRF%Q2dxhqw2Lo$AGmnv2QRameFAe#?8xdt9uifA+oT2g37+CWPzaoA4>!iLu$Om4h zC=+?>4NiUIVs4cE9Rq7#oOv8A(sfw!sJ=gg~}`ZjcZ_8=NtB7aZiCnJ z8jaVCfi*Qx@zw~ny@_{!f%0%AeKRNv@ z*T?HMSL>G$^8$*8>mT4vsP#*O!5es;rZ0klwZ2?|^kqLK_4y$mcom{d)HnZ+hCY4# zT*Hk8YhILjVa1ztIF4ZXFBx_3$J-T z>T*?oapuJoFG%%Qqw25U;LW~FtG`hUto`&duXwf8*9H0DXPYP!>#xkG36lEfB<_xF4@yj$G?qAyT!psXPUNhvQpQ23UwHUlvy}ysT>hJlV zk-l6~>g%HZ-lqEda=lYuM~$X0h=H}AG3G@T&jb0OZ}SCMChF@pc#X9huMz`mUh$`- zukcB!Z!I8ri||6c?N>PU&5CPZZl9yBuBVgCiz^;}{sHJ~Q`gf&Ca+b~H;RF^J|FYE zB_8A>Pn3y%RvElQLKg8&q@re>o3Z@u;Q)J ze!-&JFK9P;Vy!QE7+CWP50Sq7$ECitxX`x!MnJ z_8Yw8*x&UsulO;k&)DBBGkC}Gc~+@a@-wM;#^+g$o$mB=yaT=F`s>5My8Z&p^C@04 zHjNr8xyq(wLzpyjkPo~OQ6~Di9B}HJ>d|-!46J!E=0z1R z0{Ose5@m|{&)}`-^U<`c`Kb86q_1$L)R&<7s8`KL+b?tKtJBx>9t^DYC7BmjJp8<1 z(05R+=Z6el>n_btKL*x3AM?D5xAk(tTZI>DFI5I_N5B4Ca(Df=LVl(OrJrfK{u?P> z|M{JMR=-Enhu>douP?;Bfa2lvfY={YducFu17a@b{t$6Bzvmt#ec6vleSVtXE7bfx z|5B&E;pb`kx-hV=zbNyq^9swPFTYRfOG7^JMnsv& zTYrgD-&BRhOJHEli!(2#coE14UXv&jdHn`&rq7RowY~uJe2TaAN}+ERUZ}s<8oas}YCI1H z*1YWhkiN`-^mFMn!8-^qJpaAOsjp7&?;Z@Sd12;-N<8ZC2UUM>F?h$ZADLeweYq>7 zK4U*}`Grn>3(wX3Ok-fJFUGv6;`Kp3w9igaCbrLRgSYZ7jW>;fHLv*Jq_5B~^(7!5 z`-3PGdE2Ks^{wdpA=9q*Lz2vkmw2=v(yR7Eh78`uJ2ZWB7+CA`G0&@b_DPY=46J#%ACbQ7hors;KGAN7eck=JhU zHcrxba~N3j3J;LJe4o@e3i-er6lEfB{ZyyEFZD$rAM`beGO_-aPciiAyir%Y81tfv*G0TG#p^bB)%yLhty(wwia#KIh0CSB zImicn2e24Xf7?|~eJlEWH0^3WN-{65cnO-1dewY1Wbmr>^~Bc6ZuI$>=T*Ep$VYux zjL=tQ@CNkfr6L$ux0lR)xw_sgEReo@uhf^O>&+2$y}4fL)K{(V7i_)MjlMYZVv08h z`JnFr79-kczsU<~er~tyF8gX$-7+*?H2J*(?1_KtAw# zMVZK(`Fp3njf*ti90u0BF!Mr+HwyW{8x&k^=+T* z)HklzU!SY`OENF6c+FIQ_+4w%|Aq`+$6vJZI*5U_J|FYEisylR(6{+#IbK(pJbnEV zbhUoT%#oj|OQoM4TEA>QU+SCuJExyJr)l+v`zQALLd**&UK;X2--sv^>#xD&3GMQJ z00!26=KhoPWxJ)mG~^>s`8j`*Q(uq1-fecZ-iKk>WIsC}+iIQ5OcT;ug&VC`p|c`?OnhJ5g|UX+RT*KhE4#9p4P zKMbsSUgj0wE%l{oe{e+Y50)9c;UilA>%zdAm--(0nN++W^-C}(4nrj;f3_I7`!QceU`w$+RyyIlfK-$q`nB`gT5wFChA*$wo~7ZKL0Jb zoBx;>RlGFKe-_dgE=XSYM--5WeE3a2v z-7iiuFRplfbicS$-7g+8c;$M3Si^>FtCaDiFtFyunHN*MCF&0cRe$I=c;n()l=bytV9oO~uXwT4*9`ff zuU?di`pOL6lo(r?m%zZ9m--I*nN++8jn_?TydHa&)6dqw1B4vU{1{mC0?hL%-WFYN zuBz+JT7y^pMvb@C>V}t{C4HGr>E|5egP#Ym7;!y4<8kU67In*hc41(xFU-7<;svR_ z)Ts8-V(C0az_02&(wofcZ___W^r@lr}x6G?_)n4Mviz(h3&9{qczU?=7JB?cX zEn#3?e_rMl+oirV94*OjPtM44EBEe5Yq?4`^0>1uyI{|(ZYd#lv92J1WEEs8ZC@|K@;>Kp#0 zR)1X>SnG>1FRFM!$Om4HC=+?z2Cw7qH9vzGSo4Z^kiJ4h>hnN8@HW-{?)DLTy<4e67Uxp0car}Lwk9l6jGycA@%HYlZTC2ZN46Oake4YGEy+!)j z1^M7-nQUr@nIidUNe5H-1K$7goG!$OnBBSd5sD+D)EV>vQ{DbG83cI6(UH zZ<6|^Y5!$H?Z2!);ncUVt+kgl2G)MYnHN*MKFG)V6J=uk^&7laeLVBK8qd7UD_$V= zZP9qPs>ZW2gIBKWTf@bgwZ7EX$j_wWO+!A`pIGyuzOikmpDTL*n|9Uz0?hL%UV{2x zuj+rb2CwI*TKzR+V688E8|lmZtMs!H@Wh%(X7 zA%i#d6VxvCVPLJ#$2_m%MIayQuSt}Nyefk?@F$HI!N8iAxt07(?U8=^As=`ZqD%ZSP_4SCgo9yoxSl3^ic`?PSgnZx~t(LrggSYcz&Cewata)DM6Z)sKNI|wgS zf3*g$THoK@a&`YbnAg z4PJ-no7_Hw7+CX)UnYHpu+-;)e9*V4_CvNeo%(jfy)))5VPMTmGB2)pX~@U=6J?^G zLk4g7r&@pL!oZs6W1d&>f{+iq8c`GWjc~ zp9}hWFzsqR7-C*P@%kVic%7n5)Yo9}TJ`+`zpMR%+|8sf+bs2M(eq%dYQJFqQA6J; zV4)m8(->I$8D(Br@%kVi^@%c3U%ScE?{~O+p0@Bs(wBd|)Mq?TyZ%e3z9~_++#eDc zSnG>3FQ#}A$OnB*s=f3ZykWh)bh&CTUgj15Md}Mud#O?FrOeY7O3oe*G}#>iQu&LHaWP zEd3m%>xV&g{V?;0Q{TplHlEF4VC`p^d7%;y@Oy7`#^f`9Z&{=Lhp&Abq)W zrM@kC-fdMq@3y?|)VHJehb342A;!F@;-#rSjHv$5ZSaQIG(WpAu=cZfBk3!=PU;In zKKNN9%0xf63r>A?`h4VZH6JCJ7gxL`*eC$rLA75nWbj(`{)hd?UZ0P7Ud7vbmgo<4=SV+CAs^ePC=>mh{DsrcVX=3}<7XEJ*1Qn&0*V); z{m2@%AK75=cJ%sNa#er1anhG#=x3axPkQLUn}(`ARlL*EaXbG085XI@P4@bAH} zy{P?=euLK``ifldVqmS$%e>;*QlE$V-=^9RDKmJ(;@@QZ#K4-D8Y4fGiWh`@&{v~) zV?T5HIi+8(;Pr+*FTgyX;zj6srAb|{)SA2_T6;-gV688kB7K?HNIxTx5Bi!!nb=-t ze(KaW`+&w9#lV^uW?o3~x*#8TZK6!%wHUk(aj!tO7YwX<`OlHQT%*+IfqdX?9z_kv zTYmWeqrMpPqKaqe>o#~R@XU%@Ur%FTt*6?7W>F0)+i@ANyVPMS*F)yHaqcpz{s`pynt8(7xbO9TUJeR1Z+6weR&pszxdiS4uB;0^2hbzK-(^SsO}2Bp3rr9OR>)qK>fsS`6N}e*M?y?)vW< z(wF-usjnIGfmbieMBeg>Q{VVu&Cfmzto6m17cKE1A9XhZb>iLx^E?<>>+>0x7WbCq_~L3mtMDn(mp?=5!~HPe9Z>sO>;L1_H>~g1;eMOFzBuz@iWj8) zx*D}#*KhDTs1P+@gT6LVChD8{Z>PTF zxL+J*UP$qb`^7B=Z%1!0ORm~Weu(ttc1e9{YA++AOw_mhUrv1k;#o27fB1QR_I}2g z7ganzJ%3iAoGB2!n5y%I9O`=TH*KYD2)cj0fV6Ct43DTFZ zmHHx(k33N(^49Nn>f6xkZ_ZWy#hDjVyiuyZK~X01`VHQ|cQkzw46OBenO6)*eSXLX zeHEfiuNm?| zU%e<3d9?Na>A`t{13tLv5GM@e7drBdH0U9SwP>y_<8hCXp^&*Nt^2G;E*$-KDYRYE@ac~sp$ z8Zvk*`rpUl^V9Y`AM?D5m!Rjbd)4#TRR-@k?ssIaBtKIxk$xKYJ0=&Leh%pCiHNK9 zM2L9-#q-m8qC%}F8Vp{wUVmF?ymkHM21#G`#ZuoK+XrM@o62VR>f6M1C@Z%2$h+~1clu-2E_M}8(1 zFAe#?8&TugSkCEZkGK~i#}^E&c>(766t5EUfp=8QIb!}Zc(Y>fka?pRSo5+UCViRH zl%J4~eu^@YH}id`z7G9U!Z(9uBikKT&-?XdwHa|f6ay3$4 zg67*^HQz4JIrUAIYwL*w2G)MYm={&N2;_sGO`=Tnv)kY;d`s(pX$-7+#Vbf(;RRA( zALIkCQzUSg%@|nolFW-MUM1vX`&7IkgEyE{k^dCL9IB@C?n3^6aDcxlK7eIuew z)Yo9}#`XKDeXj1O=HjF;`wvoIGu=IY=jVKe_OPRrI%xb(!46J#nKJqiEcx&G#KjDS1|NhpVYTR>$8JueYSki(5F8ivgK<15@TLe z@#bj#asZ1F`vu(wZ%TijA>r!zp5psSU*Y*uUxc3TX%b~({cV5Osc-f!&CgK`to=+f zFRpl9kPq#pO_YheA%nMYSmUKJu;%%g=T$ts9}B!rQ6}=L4Bq&%#_PktnwPnp{7h9! zKbs*R`-3PGd6RcJ{Tz5e<3%vA=7pFSP&_~61Fu4qiM$4bw==KtmN2m9<=#j7vd@$H z(vT0l5m6@c=D*|ASN%(kx3%Gh7iC^p@#Y{Ocn7c;(I46kUWd4s%P;&nkj z@Y>Yu9Tj6T>Z>w%D__xg(->IuGCkyHszUh*`RJ!8 z6M2)v7O0mVy0KJZ3FnaFD}c(a?DzEKRU_2n)lec9(oeK`JN{fRP> zH~%fCzK-u}ydVbFyeRX+isylR;BC%fnaFE5c*A0>lk)=x*1SSD>C2xe^#vgxcr|ML zT>qw1-@=bHeQ6A=d2!~&6t55Rf!8U@M1B1RZ|Vt+m%zZ9=Ve~;*-~Ew@`2YR%0yn7 z$@{9#!@!!Cijkkm5)bl`C(1S=`M_%vWg>6L;7y6W3t4{{ zSo3_$^D171_CuP~en^$UoBh154+Cpn=HJNAlvn!M1^K8?l!^K#4>eb1Np$)%wUUwEFKhbz7+CWPmyo`^N9x=9lHjev3;DTzn^Rx;9U5=#>uz{) z=EW3m8uCHk1QsLeuixMe>-xG}>GLwL_?HS#!`$}sK2aWoeDqV4iS<`z@XBw{^^LjF zmwE^JnN+-K$VYuxjLS`1!?*lXtg7sSAt zm+vHfxj#vL9>@pY<}_+R-tw(ZeZ%74WPiuNnipeURPln454;-1>o$1Du^(A{JLxMt zE%h1uk=v6_eLLcBBUs-O2G;tL%!?~t8uGEdh%(X7A%j=0x6ie2xZ(Mj=T*FE$Oqm8 z79;Af%HSQ(-@ji(ey08?{WSmnJ>&GV?)&(EVL$Qu#@^2m^8$*u1Q$l2@1VLqYA|@? z`h3*qYCg)njr3)olKPryKB`yq(fln=edF_*zCH}B+e?&r;Svw>L0`Qn6WdF>!8?xo z(}fPwmp>}?8TY5x(@uRWQ<}bM46OCVnHN*M1muIhUQs6M>o<5)iyAM1fi=&|yyBBm zUj*`j*CfhBUYW_eR_9@0%}ZTKekMyi$VZ+i6M17_ar(KTuRrHptv>_I^C{jatv?6V z`m@&HRi`w4Tc2~IFWXM~GDoDJbC3`E4q!22e3|*OQ{V8o#_Phs+RrfaLW&oJeBjlH zGSSZ#gSVlNFLSQOmwc4;<^CY`jY2-~21S|3TmF($-;}-{OkiNGFUGv6;zb}I+lwd@ zdEExD{6925*Iexv6yHkv3OiEYG~@$s0*ev#w|%oy-}sL-9`4uJ>q{~(u6WIm54?I& zCh8k9cnc3{yfg;Ze)^c_RlGjP2VSQr6M0nzuTHG><$Q#JH7^q(KT}UgKbLM6yo2yU zeolVT>1U7bC;DN}3o$RCc$MVm(FY{2!Qc)25dV$!MKG||mwOB8%Wg}3e#i$uD@2*- z=lo4heRcaao(BVKUX*!Z#asFm`3W!NXS=~0UeI`57+CWPZzg^DqSP0Je9%`T%0zwZ z6Ha}t6B^Htfi*AAyqMx`eL?V6;f3_|8@z>wHC`G6Yo3>R#otSPeUOj+L6nL5$_!q) z-v8Ecp<~TUy@~uxD&92Y18)M05#!6)7o2`}{HLZbh=DaPz&xMgc_1Hnn_`SaeYFO! z^*W8`$H1DGy@2#(wxpk1*HZn#3+bD=(W!6Y8yYW-fi*A8ypZDcK|a=>C=>Oyn7q8s z!@!!C|5wtN`<>L+2l>boWg>6+^Gl0GI*_GuY|{IzpMQh zAM?D5x0MpSRd^wNRR(WX-%lQOwV#}6BR^BWk$&QSH0Wzn`^l3xIQ^W>Xnu}jVC`p! zd4UoS@{uRXL_Zr0-jqJSCtS_%xjm#W`?%B>fqdXKi87HlKjzdouKU^N%FihC!iv{S ze%32L+fCkQG(Y<=u=caCoAl*>E%h}+KIp3#Wum_Ilv7`azMjYRxIHhWj3Xs_P2%lgx{kc+UOZA%k}upQqzvo>%dj4-0*z&(oWG&uI*-{mg{P&(trap9#nZ zKYK-)=;!41PCx5#i97TZeSagaSFOIk@oYxzzL>th@i44#50%fsZ*C~(lt9ORe`ANZ zHkADx18aS`H;}&UhScYQeC+R~>%Z%q`c}l)!@Ow>ta(x9g%vLW`RJ!86a8#Ac#R(w zem*DOxaZpER$^eyD>Re7{3BA|+LeO02rtzC)~|Ky8~%jG>%zdA7iV5f@q&<#{ZEvM z`uYuC<2N;4B?i_!FY}7)O5Zm~AH0yhGK04>tMQgFu;!&+Pkts9FAe#iZ$y-d`o^wt z`q?q0@q!pw^8(ECDV_)Nv3;ukS8MPZ_4Qz-tMy>^Ur1l3p!~d<{Dc?sb7sV;uTlIP z_lHUhto4PN7b@}K;s^9CifbVBv&G;od|LA}je#{U|Ief^_Y0}75AuQ6Dau6N@~55p zR&LRF(->IuV$6#wUIOxg*DK0IUbn&9`K-oU!oZqWJeTwp)}+2PNs zVPMV6okRMvKa=``kPo~XQ6~C1KkU?Z9P@3Id11vf=G%6IxAOt?TKb8BwZ1|V>C69A z>PtgD`YFmped|{n`r;Zdh=DaP&b*l7c_1Hnn;*h5k=JkV>c%x5UN747yv!>;EcGqH zg(mP0!VAxT2Crj6;{`FW)|YxM`I%Ha59FghwZA(y|v>|5AuQ6Dau6N{KuX8Rz9!s zrZKSQMVS{?yaeO}uUC|bymo_Er?(f6tM*a|k-q%@N_|UoeRNP=AFY4Psjo+0?>4(y z@5Y%IQ@l!A?;cfu&(&}67T&M;fH81sQ z@-wM;3CPF#6J;WA>?)_9EBgK7X;=4)1I+W4c#w}gQ6}mPc!M~z!;1e1zf`JWhKl5&UBl)=t5)YME!f)nX^VfK- z_X-~Q>Bqp@Pai|QdFkgCR3P}dip@aGM^z;(``P$jjaP|*H81mzWNPYvByWxS!=maB zlOIvGGH>Gx8gC8*YhH+X0mU1IeC&UsOl&U=2CoD9OliG@fi*98Ch5yANqrv32i|5k zmWjOieNKI?H)}jU2G+bN^TLX^Mf*LgYQLx5;0;`^@gf*l^9rvdefj^E`uva&`YJ@3 zsBitlPJJE28ZU@}H80M*nBsXLAN{-<%S2wk!CU#L#+$~#n&)L+@xP?L1mpv+SComo zGK06E?=Rv0kUcMT2Kkv(ygu4r>QwtnV*^eFG1JSy`oIiS8MR9 z#kCq=KWyQ~p0%IZdeWEqk@Ry8^1;soSd6H@nJb+7X79j%W8NqR*1RzDLWU zmWjM>gV*{kjpxU}npfOK`U*dk`nKr$XjNSwZO5JZrmog_2@I@xN#?~BF9P|XuSt}N z`i2Z%(766mJX03(&VJ#t_t3Yx2a} zl;Qf_9;>gBuBZ8V4GgU7FT~KmysW>qkBjkF~cCXuYf(|JRW0^dybQ=#fUGSlJqq9kW^^Qp{=%>4aIW5h-T1hIBgi zL_==xV|llRWSA8V$uO%mBEz0&$T7UFn?_`m)f$pvPisU*PyXKT>;1kiE46J#X zr%+K-idUiIzxBQ2zYA4anKz_gkBhjv9_MGCPw|@QdfWlgrr7=&yd}M!lNeb0<)2J` z+3(7FCLkZzPthjwX5Z%Y>lEkiWj!&l=7pITRJ;mY{{`N@pY7A}i){AcjS2Q^*-18ZKj zk^IWvmVP0~2VSda6aBW|>hxRtw8qO}V9iT0FR6HV|2^;qM4QMPF?e(O^^UZw>m5Gk zc@-~4*E_n@^^SUj*M5QKSBHVMU-pSq&&;=EJxgy8e#`Jc{WsO;tmi)NhYm8&uXx7& z&}{~9{8gG?0t0Km!inUU|EBZ{K|YQb(I)oaV%+Ihi-)vw{*_{Gcv0qs6)y+*z?;Bk z#C+&Bc$@n5=>=EUr^`{SuH5_3RaGqF;@{>k<1>%nM*(&C4`UJyVM3q5ZS1 z56J!-i#hALpZi~!=TkiM{uhJS@_zhX*w2H3wO{`6fyU?To1K2+ zT^cWefi*A8yrANRARp(SXcPOd!{9Z1UgK4!-SCR_p!IVg)p$LXVpi3<*!S>I>-mV-PcLK?Ke98rmxa? z!x&ieQp`&#UIg-icTlv6ej^5NNI(A>ad-Zcd0xe9qVpjK)cKHlgV(R0?+Lj&-;;eD z)iX1v>IwN+Pqn^GUEr+e+H16W<}k3XXOMY*#T$lv;0=g2v7T)PZ~8ioH;jQbuTV#R z`L9X82;^h`i8hh9_y(un^q9`Wz?v6jUU-iO`N$J(BCp%vE%j-X}l!CddcB1ENjz8|!t}a}IX-)%GZjfi=(1JfGslARl;L zqD|yA8@&G4YrGH!*1Y^<$S?a^uff~*6%4F-#YdB0At(JNAs={0)&9%sA;a%--46q6UYvPR#S1|``iVBt zug~ChhBaOj2G+dlqsXuP73o)bnc%I%1I>r+*E#*BKcex5F|g*Pn3q(%2;_s`-uEGm zm^?T~s^$ZJ9>kvKW1e@92l>boZDKv^4PL)~ej?=R{6zMVRL{(pWj*U4A9%a!{KQm` zvz|SNHNOA`*7XcB&#!nM$Oqomd$3LPYcqK5y&A6$18ZL40Qu#=B>hS>-tZ;JERkO=3m z;U^dJ-fkuK!1LD)VlC(Mt(9{ud54*I1@mr$#ACHN_{qG>9*oy=jaE+&2G;fTGPL?d z*?%iEKId_mi}6ykhvoB;J)IgafPpnHb37F_rFb65$MN}c$s3ERvNEs#y&5lsfi=(1 zJfGs#K|anuoL0iG+2FN&T;q8#u;%3-PJY=NRXySSF!1KZIb$53v#)jf)rwm4_Ne6Q zd_kCbLB+$*(*kcotuGxWPwd-B-X(7QinZidn2~-t$VVPFL&tv+r(espdOb0)u4kNi zQN>%CpnAds@%jwjPE6yiU|`Lw9!GxVFG#;h$OpfpqD}0-?bkT{=Jey0w5#Kl6!Vgb z7o+2qE_J*zV(^yqdQQ5kr;mAF#Y;dw`1Oi5(XZa%HHd8okC)1jn|fwzsGgY{WIY!k zA9yp^j2JIduXfh6_6n{4@csw;{tGhCuXs7S9zLP2hqoELIdLwQ{n8j%kC%d%{PLfd zelf@gzb?@x)^qVyPQT7q2tV2$HDO@0Jvzjw3*k?F;`Zo1SU8W>mf$BB^87uJV|#Q| z@aTG~yZiad4DQpIpA}cv$CAv8@9}8;oKfrNpuyWYqWP_0VBLRS z=2fqkev^=o^If!w{a0h~M#a82j~D!WjXf{pp?aniF97+#YZPrFZ|s%MdJc_hei00; z{rt@HDP9xg1Mh%n6M4-BZ**AW;qjt9FMt1E?|<6~@2bsC$$H}TF7y*^B5(E_r(aKx z#tUFz?H6WVQ1LvF54^4OuubH37`*ALHQq1=*1Y1s$*+)=ei6tA-a*kO@>aW?e(hpk zgU3r92G+bd^P-AZg2fnk%VJGNUZ271KTY!sVPMUx{)_y|pOb!dkPp1wHf$4l+h;rd z<~}HRw4S9guvyQpVAM76r#^8#yATrL^A_-vL09g99=M*hd|2>kJ@a5-?dM~tSNW~b z_?%bcvwjcD`=7Nh(0HYGH@xgWsh*ihS+38QT7x<*etBSnGJaL|m<(LFV}t zuZh;r18V(jGk9|^()`jGSl6@g5Aw@@R{F&tAN;yRn>bz;U*Ys?Kcw;S{JK3a%Dk}R zm0m~l0UoHH-3D*&c^WT`fwf=x@8nnfjPiqg^b>8O-$tj?Z|yvdm&3rCmtuBeaD_P^VR~QKZ%#a;34WOc&8KZqws#_ z9fhaFyBJ?2-f1Rph>iz|7s0@WciVl!?>X>(=C#68;yn^yB;KuI!*9G-^Gjf0!#hO0 zbK(8W>w>4mI|W}P-gzdk=h+%BfPoF~p1%seN5lJ>cL1Ie@7_}s@9viwenY2gya)z1 zyu-wM4!oavt?-n1kHicxt^CsXa@h-y`iTAaanttNkiM$^a0~_91#QXi*6>kfk67P0= zk$5jRd7Woy{nvzn4e!ov;rGvjinj|-iT5*nk$69TiQzYQw#G|iV8gqRc$dKYxt;^? zlz8Xhi^O}Y$(yF*CF;Ln3~YG!RfXRL@P6j?!c*d%fiDv8FE2Lyc5um*_t&mqV8gqD zcsJov3IAaGFauACcO||^yvzR=UWd-Zz=n4s^WgoG2Tz%YFB0$ZCU5#ejW>*e4ey3O zQ$6AR%iN^C_V8c6|cz3;6@z&uf@ovEviFcaGn~Q6_GzK=j z+bY8E5_muR4Zu_4or5nD@75O?esi$esqvD=z=n5-dAL-VyuFtG8v^Y_B< zIq-hwwZc>4JrZ9e-j7c={A$Iy1@6Dnhb(y)67O5^e&)@?Q{r8VFB0#qCa<6FhoS9X z2m>3x`+g_LM7(qHP!|3{J-gs3@lL@PiFcmKYZ%ga72ElK&u@j_ z9eeYAS9Ek7s>BZlQ#rg4^__y1~$Co ziT51b^uRx;XDd7<-Xrlv;vHx5=FZo6X$)+5*W5$%0p8EN0eDKhbMQstT^%&)IqlbY z!x-4`P9oj~@P6j?!c*d%fiDv8nI>-zyG)MHGzK=jn}0)o*j4Zk=Q}(l-Z}Up@xJza z!>|2pjaP?(4eu=C{r)V)+k&UWyB%L7-pfs1%WE{A2Ll`4otre@U#)oS@RWGB;ETlj zalr6vc)G@`Jk64KA@S~j_j5g$;VJQM#21P8R+G2(B8`{Bz{c;syM^CJ;r+}z3Qvi5 zF}_H=zdXwA>w@$ z-Y@G3Ps#6Me3AUlGkN{uS_SV9DI@LdEEcP zd$Z2Nz=n5CN!0Tac)#SqQ|94|#Jl?0Mm-zwkVw|EVtc;lB;wt%cfMy?o$tAE?|jcQ zP2L)uO;@}e1~z^-|BB{2yr2D!!c+3Q7+)m6ubpD}t&#QRG-}9(9c;g?$TJ!bB1P0cA*}JHo znPF8=$Opex(I)y$o#d=%=V6W4gn>0L$UMK|Rj8ips-A5IZ~BPF8^*wzSNJ*kJ|ONlxET_U)lR}s zUN}$L1Ihah==)=b^m;~I)ieK7^2@$o*0YJ~c|g^3w%PEb^Aogwmhk+9b^nE#7gW3) z%R>DkL!tFkYn$cVqS8O2l?Q) ztJcpEgV&?iGvKP8KIVB9&qMXxQsbrG;H@PzzZ?eE{g+*%dS;HudJaQA_zj3QaebL; za@KQ{>PhoGhJnp|Kb=u${ekBD>5zD=wh4anz&v9Q^uYPv@Gi}-@=iB?g&&h&{=L#~ z0rJ6b2AdJ{Z}I6)zn(#j7r?-}o>At770(0tz}r&mOSi!r*T)OaAA4STmHdi_rC*4~ zORH#8Z2z9-^c&aLmxQbJCCR+_9*@?SR?#N%1`Xb{n43KRhB2_Nr6V zs`*}H@b)qPGDWIqO7V>OH}+I#J*VMr4z<1vV_@y)XP!^-@C(h+Pqc~kY&LkWx>)0# zjDa;T|0D9t4#|4{Z9wpT4G%OQW}o8pYY}S?_n!v?YhIXnLB(64`7kf$82WV>Jifn& zwzuN`9&284h5QPaO20I1AC9Q`xB6tK-;0Gi`#li@YhIjrQN{c1MWUWRf(NQ+pTTPp zzl*FV2G+dl|BzpKQ2MRVe3)1BVf#r=zYmDtg?X>Xz?zq0UQ+Q+CcnoizY&AigQv{o z_BMclHP6R9uj1kPT3kQzwkxq-*BiVweLmz|&4=s{sh*jntmiP~18+dIiQ{vs(OJ)N z-7n$FFUUN<;)Tc$@69B?HiOrXm;7WsLl{`sv+x7*%fDOt)j>Y^?Y>R&7N6+!YtYAM z1qYTjFUq{I;w{kloKfSm+u&{L+xG^!qLRWWQ^lpbGgwza23*<@In3YqM@bfXxt9XWAy}`SxM*FykGV*M0;_bds&JK+87w+v6o??!x){O+zZ{6?YLiWkGchIg2FXJS{uKj^=M z@RWE@!WW5msmbenlg4Ypz=n4`@&5Tn#oL9a#QPb(NW9}rUITQ2^25KcV8y%UR;nkw zpZ%8MDe-Q^7m0WE2}V78Xnmpi5Wv93?L zgx^E0FF$^a;kSvGh~@s$0tPmI7ZUF}yfh5|U_MO1Q}VkEUnIY`n!IuBGRaF|V8grb zd&2Kr>?-1Q!BgU$f-e&9FON3-{%`Z)3gX@I5cA=3lh-e{{qlYW3~c;PB;HeS=#yU~ zJSD%s!$yYv9&hqm-k{afgMkh2h6Nfg=PTYiJSE;O_#)Nw`bU}dgp#QKtJsd0(}{P- z-gsG7rI^E^7wrL1G#_pkUTH*s&A3JG~@&Ch-edeH6{;tArub- zYhLEtF!O?nmxFxZO<*&0{mMi(x z%sUwaYhLl21qUShLV?_2Evx9o(c#-UMi6~ev|ZTqIw=s_1vy?`YquuuJpsdM`iDqVqQ}55|9smy`oL@8!>pi zKS<+K>%U>Y={TFaGKEuolDxQbN=N25n^Y+i+)#~eY$yGgzUn9T5>!n`~@}Zs+qK~lu zR`36-__7i>ht2yhYvOldzZ?eE<0a0#sNxMnKJW&VU!TES5`D`&{Qg3FUUioI%7>(1 zg2qd)8ZX=bcKU7V^<2Qf+Aqbtq~hV{ufgw#XcOx>V({AOc#O73br@Lle9ZGIUI`9W zfVT_}G+ycrUZ?m!xxQdv&CBMgo|)IldRBS`Zyg?pH}x-PJsb4#Qo+v`Tl0d<^DEv0 zFW;m54v`-`5O49HPQQJ8KWCJAVZ}4PpR?QG z)#~%1CamA~^_=f(&&x#Xo(BMtK z4*!pN!x&iipO<;nZs`|+eBd1vZHn!m!D|ri%&WLsuQOkvdZrX_f!6C8Y(|XFvA;X( zx!I%nEnr~n=VzWz@zRhFen&)`=+|uUt~yWSU4(%(FaKro%SL5AUkLfYdxmHed9%At zzkRG{Vde!D&sfho4Bn`|e&Y9)+WQs1M1F6_F51L;_8Gi2eLmz|&4=nu6eCl;2jZdV*hRY#pySy&%c)yH)#~H3+yD`h=%G+rju zc$uv_{ia_d#wT5Wz`xh@Q0M2x=R3|~)S>Uv{Wgan5&k|c{N#n~oITJ3?%S%pto^drQ#~_ht9rs<0KauHCdBsdPtJP2xYP>n z?Ds?rB<~^bw+S-OuXw-xRV(s-1P@ftHiOqL`j)S!)?r|CeeAX=aeeIfuvqZ*G2Dls z>tna$i-f!Nk4jIT580vlK=XYC0~_8U;@t%Am)GOqDe zlNEl~!TXsv0Z)l{8NNuoyZ>PL4bk`{UIYUh-eKZB2j0)TR(MLhN8*dbyVT@OV+rN; z{$UJkc*hg(0xTW;gZm45;VJRXz!!;koXM-D`9OXpTi!LF6ZQPo9&cXpuHEBZ{d=RH zwOB&whx66S?O7~})5OSFl+K7+T9{g>)zc>5QYe#ZXG z_LkGHAMW;3>vaeNYrhopl8RRc`QW#EF}8_*BL=VMCXE-sz?$b{o>%cakPp1AFG^m$ z!Rx<48;X3lmhm_wT@>9nvi}yJFcJ%qT;%fdynHN?(oWD@dqiX(j8@yU^u9^2I@b9zP z*R%X7@+-bn`sE-WcoX8BF^luEY&fd?<(CSO1-^!)JZyp|KywvPrc|BW#t(BVZlNeZ!&&;({ z&y?aNARp?9+g{?0Z940@pU?j>&!>3i=l={|zxeDikCzYz)_(a3^2@$h*0T=salXG- z`pw?$^y?hO|6?BheHwdSn0Z0Pt6VO4>+nGJ>@avshczC4A%H!v_(}3BoGJYhkdOT* z+7#Qr4X5Ae$249H1M7OmnHN>O0OSL&QM4(xe+F;psK$$6V9l#uLw@BKNxvq@2i^hE zCi1q+PQMoY`k%+$^*`n%6%W5}7I^dUK>asj@RqLA{3bE5_VY2%t9S{>$Nm#-qF=qi z+qp^bXgyoOz-B$W;S*HKo8eD!;@`Wt0TSW!NAQ!yZv3?>wuj~Qto=j6kJisR46N%}7$?d6LCGt9Q1F)Ff%k7 z@3*k$MVS{?JiOl#{AREjvA@)9@Y=<>E?!^iFtGM3Urm0+7b?H=$PXTfxA7~(@8kG? z%&Vl`@RH1nE8YU+qaQXS{00qP&ovq^fPuB2mwDCGr62zNP~dHSLh@=1-t-4F-Y^E% zyv!KYGo^SD$Oqm*(I$@1v0pmtITX`)5e%$(e&+cU55NB$cn3tA$ZIxu{dkH%_Fo7C zYhFG>e%TkudgAwa0&n*$Y!i92zi|5XLv{kQ#dr{B_y#+$^znwMf;Qt=Xy54>K{Ch|rM-WpDE z>6gR6n&)GlSMi1+A9w?zP2|-Zyng-oA%uZ7FZ(g7XQoZo6aT(6@OIVl!_?25_3X@O zeoYuy^McItD_#W_W8kfeH5vWd4BpzSHC_$_YhK~M$S)t1e#4ND^%QL)Z*kq}H}_$U zm&U-F7iC^p@nVn=!puw9vSMy6_VD0B+UNs>7VvvvZ6m6nkjlr9q(s;udSo1O;rFy0mF9P|%J1E*j z-q@YadbTGu9)2H{JC?EqKfDKF0ZLuFm)PnCDfzVaNyGfM^qW^#*TF zoQswF6Bt6^TLW3p#6zP(I)b` z4c?Mid)RLh18cwXe~@4C6zP|MeDLd4>)FPSoPKlq_BQQmdz)llT=8PGz3o!l+d+f3 zkNaD_%&WFaKjZ$^8iUuPpPvZ0IzN#arFy0m&qL=Yw$$B!r`DIU5^=ucsy}$Q6`#(;<{!ioY!hRtPto_2w3o2e6 zDA4Hot|5ktK^s9ZD#w&%~@Z!viDqarq zfj5E8i1n<`;PL0R`FIl#6s`TLDe@~nOZu(Q=L6=|=L5EX;PmVKi00RXfi*A1yrkk) zt`vUj@W9(YgU5fbj{L;mtFz|$nCDeI{C*CoXBRvWuioG_gf+hkcBVBi`(dhQrbX6s z0rG)2BgO=dm#I6P_1wqzSp}KrS3KkUtlA7-`-J9Khk>TQOf_-qT0&(a&+@Z!viDjt4*5dE+j+Wr~5cG0(TzPlPP z)%THK`RU3Jz6cO_%kV(F?PG?YSnH(UHE#S;%u6aBp3g)-Y)1Hv7`%O)AM`QLt9Zuw z!Fq$&a~b|F>=(emdc0&Wqk3kZChO^eeDK>kBK@Y8ob?>n$4deOYhI9fe#HwxKJZ#a zo4CDgGkBw;nqLe9YhK|9`Q@J~{Q{5=yhhO`@)mD(`tkjIwErUR=dP;?+Su@OD2c z{RRzQgBVLZJ}d8a!}Bt)`ef<10Qtb1!Dht#t1)=fXX5`cZx{n>zszB(XG-xRkPp0r zqD`#lSiz|0DH<A728B!v%%{;SK~EdV9m?Fhy1cnlJ%^-Qt;N{ zfq1jubNV&BNaIz`aKj5TFQ|A6kdOU`%?Q5^gSU_UiQ*9X6&j_Vu|Ki8;Pjgl*Xnq@ zq+K14#hDjXJp8;O_;rakvH$uEUhVs|dX`|lweP>`rQ}zBqVj`$;7wpNqMqB|b^48q zZ87^LTy5V|%u6a>h_>&oYWqH7@Os3)Df0ptSdUL1^Sp}Zfqd}WQtNfS!JF3S->|Fs zmmQ>fW=@p#jL`f$DB8sSoBEEkp8NQ`eUN#6#WOx{-)8Ve#jz9D6R)S)*Rzl$zx)%V zUjXug_!{Cg_EYZYxGZ{u4|zfpaB#$1ihB=h2mhvOUTDcVHdpuuZ-j^^jVz}nBtyz1kn z-^#NEZyp|KzSkJMB{5gH|0Xf8=4BF8&y?aNARqjC)%+X#rn8<)`ti!7tK$_v^L%?e z$VZ-N6YJS*@HU^P)pG#@Yrp)v$S+$j>zRgp;2jZdB5(EDMFf6_e{V2G+bd^P-C9 zq5IFax+SmA;0+Dq|1mFufi-Dbkt2cN;CDo{iGJM%uV3uzGcSaJHLrXz`4t~4{puhe z>v^*D+n96u^|WYy0Sv5pN#?~B&jb0u+j^$t4H~@BfX0hqV9oO~ulgA27l3@=HHtQ| zo;3zc24af{K@*{_9o!*J1F+pQZO72G;#oypa3~kCJ{N$jAN@ zZDRke=AC{Guhw{#SGnQEnHN>O1;_{93^pUyvp$2@|00bS!ob?E`Zn?_KT`VDK|b(y z)$#Q9SDk*f;@%NnU)=ru#uW3Cif8=&#u0Lhqseg9oZ-y}{djg;vi6 z46N&!?WcNX4#;|@As^~_M6`+HWh&>aXZuq%UL6M3ydd-ZidTAy;4Q-gZ~qKlkG_2f zxY|Ax-b#M?M@T;pZ6CJO_F?fWPQRWDG`|1_)_zguh4*-n5B1!7gY@e*c;jMUk;i8O z18ZKnkNk?qOTQ501Fu!>e{Ou)={I^<^NV3%%}X*bu6O~+2VSFS6UWP-!Q038_js9C zeYo^9zQ3o&;59r!^Q$zt@yo=io+-s!fPCCDDF2=~OaGdlr_ODmJ==9si=egp{iz=S+d9FT#*YY;4o_K$ieLbsh zCckox^jql{^_+(Xs^|8NPQP}sZz}r_1MB`vF)yijrDp0scp%=0!Ryz@OUTuD@iEV< zcsSl*yzHv+Qg86~vA>&r6V)^0mGw0Ccc*5Y_1wqbZwxZeuXx7aZ)`JoJK|h3_umQz z*8Nv_Bl+bYCjBNMAL@Bjw2ABW;uj3R*J0l>&x3(AFUq{I;;r=1_=E=eAdPdPQM0yf1-jr0@i*>=EW6n0rH`qGirZg(BRGK=Xde% zk=paT%&Xr22v6GreoQq+=Xbl*`P~|WH?D8r@$=92yv!S@o+-r((e}MnZQsW}@2qEk zJ@ze+mkE;>?RG zp7DM6eFkqI=gX_FC%^JPrC;I&qMm!_%eSYTew+IF&jokqKbe*y1m3}$M2i^oWBi7H2 zNvB^!m&U8OT0fJ_iz^;}UmNgd)cQGS@J5?7UJL{4{_`@g`ZwtpfPCOJiZ-#HH3qM} zPUF>KV9m>%NA*l8Ug-qETZRX!=h$bR^;}A5yh#kKd4A^k6fXh!;MXhKM89T(w{woh zTfxAZm+vOO?0vGHlaLR*qoPgZ&3?w|H+{Uu8^*wz7iL~i@gk59yn~`m*7})SGWZq%soeqh| zYMbCE^Dcfc-uRP+AKhPA`s8 zj~DeMUIGIf-VG5d<;@q7-&v4&tTq5Y+3&_rsX{)`Z|DtzNBtMUz`Fl}4E6s-_Fog^ zL;oERZDRkm?P0n9c03wy1p{kd;WZ?g-MFyiPm>llx0e7+CW%ucCUU6t4pN zcfea0`+Ue7`=qm;ODAi*Nerxce&+cUF9G?$>lJMxui4}^={yXqdHHk6FI$oIOh7*J zM4QN)y~gR+aG}PlxH?}KW?oS779byZGvXW|@;Xf36LsE+Zv2X`B)`I+q~8MMBM+Mq z<8$>BPQM*}e}2W){(PKyQN^32@p4p+mp+5H^nA^45(Df0tDZxCxSoJo>%b}ARqe=n-Tq2Z}2*w zs_~jIu&!sei|U#AgREx-F2n(E9Uh1`b+u8?lQiA}2G+bF^ZbgJhJ4^15p81swHdr6 z;m-Xx>8hTEv&k?2d+C>;diJV%E{-|<=JfOBX;Lve%%Ids9&pR z1Ow}Omd_%;;_swi6XXN$fM^qW8yTnHD4a4;+lLqi*1RP1;))lb^Dm8}P2>%lyfbwk z2G%?;^Q!kszX0TeU!!Ofc{K*F{a>f<`PE@y&C9%k>X}l!(mzi{-ZDJUd>H$*MExU=kD_z zVde!D&-i>thr#O!Xgs{%$-bV&my=)Nx6;o8`B2X-bv>!JF3S!?3IQ;A5Uw@gg)I4yyT3Z}1xQ{lUu9-S}n0RL{(BWIY!k zAL==S&4}&o)K$)Uw&>eikE`u%ka>Q^TX~A$&BFun+6>-M4gMeh{f7t!HpjQOy^PfE z?B(+zkO=2P;3tD_|ELms;PGw4{o49j`L~<(Gs@8Lrm838V?D7MQP1u@EFW+7pDz4p z{)I5Go)6^^Nfz&xygJAS-mcmnZG1#&GH)NB??^H)u6V}hI|dEj(vvkmasI{H&&#~( zhV;YpMc~&f+7#PAgE#bSjTgbdnwNPg)ib4dO^^?~1ENjjja})i=h722-XsRrJU{b% zikE6&ui4;jo~QBf??Kt~@-HF3Y+2Sb4f()3BHBdW>`|xRkbb@(f`PSPn0Z0P zYl3{Nr)U#-9R_b&Utfk@tuMtFlV9Q2(k}w}z&j|~MBeIuI{n)9`G@nz-Y?F)sN$7g zAb890K=ZxN;O+cXTVGZ%u&!tIO!6z2q~9dugWplnCi-n(;q+Sy;_o7lA26`yrI?pg zyaeO}uUE8*yb*)fc~IjuVPMVkG0&@bl@|)$Iy_K4>kZzH&RcQC%f5)}nfaBfC*)&2 zMVsh1^&if9HtcHsSNWTp{tGhCuXqcP54;&{Mr^m<}oUC+W9Io0TTO4)zEj>fyO=4ipi!v{)cnQeI@gmy9dUl(!`9n5*%UWL{kH0yJJ4)p!{+c%2=ZUlRt_eqQEP?~;C%F!diiQ2*5!yrti2 z<8u-NYhLDsRL_*+B_JQ`DcZz(j*U3$xw)p6G4Ha^oBSo4C+^DABq@^QR~Hj&q6 z@Rr26C%ONEfinY>Q(2n7C-3p+sFCqDD%RKXPm$8HhAOu^^ODv)_&z6 z`4xX6{X&or^=uVwVm&uL;Pji*&kv?uogYjxFRpko$jAN@Z6a^b;0@{5J0h;GcX*js zU6X!IbiLz%y53P^@OJd^vf^sIWS&p;Oex+ZjhCZpyo|lyS0z+dqT1rthESTgi*iSMe4gA9yp^j5t23H+V}2wDCEKfwf=uxm3^0k7PX)kPp0G z(I)y$z1OIxzCVbckFw_lndeu$G~{DFMVrWLGkEPanjfCPwC5F`Lw@-c=~wa!-ZDH; zJr@r<{aPNT@jMt<*E7nzu;StUI^Z`C55(&>cnz=6c$H2!yz;ZjulPUGZvpagykIk8 zyllM3>9=;0#>-(~?U!U;T=9k>A9w?zP3*rxgV+B{ZG8!0V9oO~ulhsjR|omP+x>-{ z4>bm_<#C#y2Lo$f<`k-DO7T|esQ=)B>Nz&#tY^=!G`|1_);vG+e2V9ReDK>6HN$!~ z8@xIFd}P|y`N(`L`DK3~>lvf-kzMM1PeZ1scjTbNTs<%nMVHz(3YP{4KyndhN7s9~W zFVjr*Oer3Iz6bnvaWg9B-`G2y^<2{LH=T5Kzp0;jKE+EwKJa=)n^@0ggV&(n&rrb& zlh%HDKlx>k$$Bn8KJaF+8R0kk4yWJfUD|pU!@!ysW?oS70+0{9M$snvbr`&z$KvlI z*B1<|dBtatUtvl5O+r5Kj*2#sw|a@wuU}t3L$21(IP;>4S4ZpT?y0h#eFksnUag)H z46OaCP2^X;Rr)nSKKLCFZKB`y+ns(xn>r5zYhH?Z$vqzABTux6yb*)9rq92etNG_+ zo>%dPY5om}Hj!6v@OJe5>lIh~*V(62Ju{24o|CkHeN^p#PF?J*=bZSi9Uh-)46N%J zWS(E~VvrB@>{8#~(`NAc@6q}%gn>1$@HFzv7o=Yus1>UIsF>MwwU{`(&DE7lFW-M-U8%< z-wZY*>N#lemh|~I>1zIYnO9ve5csu(3=ZdTS&&*S(o+-tfr2WsMqD}0- zu?wB`oO=?w%lUwT^?30!&!>1X$jA90+C*Nn!Rt9*;{`CV=H;JEe%bHJdU_xqcv}z0 zHjy{`HmBcGQJW8w7+CYd%nK@B0`h^^E80X}hr#O?*XFsNAq=c}#V3(p;XBf=j;{Cb zs`FW^{r?aB;>?RGp5fPL@W#cp0`^N_VC`3JB){^vrC$j0p`NXxO|0kkTb+LWf7kji zgn>0L#k{2A)j>Y+cEvp)$Qvyn2)OQ=Nx_H81-_ zs%Pd~vYt(lk37*P@}~Nn_3Y92cLT2WcZ1CHE1rk;cem8`z0KfF>+@mQ)qE(NNPhWm zO1}urhl8R`^jnNO{W>3}tuIX&Sl2Vkys+X`==|sU-uX|1w{wTqe=8VR^U6;kzv3;@ zZxZsM|Bi|_(Qo4|PQT5cYrF*vta(Z1#T73N`M^6O+C<)Do=2i5Vz?3t4XYe}3u{LiXnlP~D73;~baI^HQ(E00ib^dzwO-{dB{d#H%FJ4*m;>?RGUJml1 zo)h947><`dgV*y1t)2l4ta()*`IWye{XCElysh73o5$&3U`m~REUd5Y)eBd1wZK7Yj!Ry!04~ATwAIv_E>Y167^{k`w zgS$_Yep44X>)9gKa{fGm2LqeWBb?5tvs&r%2zSD#435<So5OH3oBk71W(eTVwF{@qHzk$5K60if4RZ$yl$mp8fyO#%Blv>w5Z`=Tp2o$jAN@`|McH zW`kGzSZ#ck9^{n$ybC3_b32cUr|6cF(YZu4%JYMQtoi7M8FQ|AW_#iCs zmf?YT9R_bnzaD^pZ@|8u#YdB0At(J3bUmO~T@P42${K{XEek*i+b6#EF+X7@ze9Z|PQT{!LFZ%04BwBqXgQsDsk<-a8TCh7drQFVT4@jR#B_+45(6Bt<6 zGs?WM;)Ng|>e(vV6x%<8w}!V&$oY`Nz?xTn1o;(jl77RG54-`+{Kb-us zH_CeA@fGk6h&GWo`&y^p^glGeVGOMO!psXQ9*#HcKhY-gIt*UF{`tRhLE`3uso z)I|Fe@Id2p`!!C#A^mtW;_7%a#k{2AHPP|r0nsM*--yBMti|7j{hBba9xp!Tc@?ih z#}Di9z}r8A*Px#dskpj-H(NvX%-kUBiTD4)c$rc6?@qniSuV*D!>siJ_^-L*Vj@GjYwVsW= z(pk^;e{1!u!@#=9mwDAsOTW@rgx@kekYA0#8=cp9F$}DEnO&-9O7Q}akMlvaiS- z^jo?c|BrciKaf2y%)FrDB_JPoy`oL5XNSSt6vw`Dd}3hjSG3ZIgGX~+lO5z!{{ zR>Mxe(JyO$F$}DEappx8F97+#YZPrFug~D^JVIN~Rxq&URsTwURf&QgpYY%#VgVMip%02NaWQU zyiW1i2p%s@7+Cvdcc`A330cny9gnT6{;!B-={S5g(lV5gR)syaL*j4N2 z?3qr#(P_;uhJm$Tn0Z0P3qU@MmqyVhj+YLDHz(E}_Df@6%_~;OuW+^W!}C+X>k@4u zZ}mk^zn*2yFMxqHFV4KE;&~t+cw67cHj&q7@J99HhnTD5hw7imuRJFG0(AV)sE!}D z&oKO|x*rDCektZ970(0t==W#oH)8NM#j&AWUof!d`IzTbyfowk?}%s<>sfE|^zpgi zYJ6t@NcGHQWIfX~K98vJId#xk&(Uvd^^9R)?H6R8U-1Hv4}OiJP4sIscxwfXm&3rC zSNH?@O{`~)!K)Sb8u9$Y?>n&PWqwEXOetOt@_{#j&4~4E>;=wxZhlGgTfo5D z&(A!c;-w)Uct=E==+|uUmh|;{($#vMznA>7|E20l>vgYa6M3`kPQNw%d`QmK`Q0${ zf{Hf``QSGo+C*N5!Q1(fR?ig-tm|3aBEP~_(r*&-fp=82iM-X*oPN{dSewVoFb3AV zIP;>47lC}>9TaUMug~DM?`nQ^7+CYFza_u&N2Onh_OF-K{`Gd7({EH9Td-fu)$vM- zc}c|!(D6#6I$jwuctiU6x`?aubw1{K6%X&fhk70mZDKv^4PLE&|3vARZt9u6hw7R6 zh^%K0@_{#j&4~Fv6?E3K=Tln$1u(GgzaaDcisylR;B8$id2I%-{fio}4g+gm;Wy-$ zzf$^@ZWO#_cp$&U=R5rx^!2QAlN(-?d11v{fPCF;Ro6Re4BnFNH;I8YFLO85Go^S5$Om4pXcOx>_B>}jr$4Fr4P#)<^E1z< zcoE14-a*kO@|q1^k2tpAdIm7C=H)lYFMEZorw8(Zw{;sjAaC|mr{9`5_bbOI2G+bV z^MZ;u4Eewt5N#r_!{GJ&6Mq-!hk-S(SSG*1e<(l5N56kazt!hD{ieUA@rE(5=Ea#8 zRlEq~WB-XZ(XY?ot$kDDFg zjnA!bNWZCPJL|dmam{Z518ct^^ZbgJhJ5flBHBd1Hj}5H|6Fi){_|JlmmiUS#`S>3 zQ=ERC>zZE^2G)L2=7kln@>Air4iCKjGkD|r=c^K~K3`S-CHWOo(k}%0P|sG;Cf0MK z)#OFs|fgWuNP^*@8RDfUfy z{anDnnwR+n)ib4dX~@U%DcZz(j-BkR=lEwdzXS%>JU{b%iWh=>>_5>a@|q3an%FkV z?GXmny!>6{mmQY%#O*ck21J|4n?1?t*YIi0uX3FmUYL17#an=U;LTt&V*Ttec;n); zf$WE$C%5-2{+#>@ACi6{$j5q$HqmeOSx&!kTr%bMHi3b4J>$%a?(rZWd7@3^^%=aO zA8Nb^2G+dl&&aR*LFtF*i-31Pw28d!7N=j2{`rT1yU#x`FR6GQ`uxL|y1#tH;O*!7 zAM?D5XI}p^c;h!{^-N%3UC-<~)id(}S6vJ%h~iD<1X- z@ES#%$ZIor4Zqa=KdSNSFtDy?lzCyrD}6-x zEyDwE{|w%oem`H@)%|?sJISy3KIs>Oe5hxaXcOzX;WzxIbUzHN{gTX!D_$u}e(*qk zg9dL%9EX7+CuSndeu$l`jk4JUkGu&E(DC|4AMO*1W=x$S*%6{Z_s}Ja{19;!~V{ z4d2#y6&%RcyeRX+iigKnSWj$5)U(^*bzY5Gc&YTOd_wTn;emJ?Pj>qK z;?b>G&$?vb?2kO=8yMJpf5Bl!UGdvTc(zaYQ0>Pc@mTG9;U|MG+XFrD`wQ0cnqLkB zYd1ENi_{oBLx-!~lB&-WxSu;yj{hw7P9yb$CAuT`{(ys;-a>)AP} z`88o+&GR$Qr+AgmQvbmN^nH;I7_?+WH!b2s@NhQwpFG5E>6D<6#4FZMNfy$)euJzjha^(JKh z)j>Y=->x_Y!v3q@!}5IJ$NiYu|E8j5-X(d){g_ivP-T@ov9Hg5C0Fw=$UOfZ5Awlp zLd~JNf0`Dg9PHEO_(qz}vqD!|w`>SNab(yeRX+ikE|Y z^uuOo`)BZ`zpL?vF|hV4FOy&K9nvoX`M^6U+QfQpJl^mV_d3Y_b9MbF$-KDY<>>m+ z1U4i51`XckM>M|$46OaU%&T4^{nC&Ren&)`=vQO#*1o9mau`_iGT*0qrW9`&@_{!X z+C<)1y|bRy!>tCmwmgeX9)6-+NwSNrpE=0z1R1o>D`(I(cj&)_xOj=u~0Rd6y|_g{61{K^B;ZvpawHzVdW z^0w=oew}#9UGkbRu;!(hmsGq8eco_gU4I`jc+)@Ec*7W2^L)(nDqaNg!SA4G6aDH9 z-rBVqFNc9OFMBK1Gjoxw=P=|0Z$Pw(yr~nM^{l;1$HHdAZ-{NDPex2{tcug2s^PJPHLqMCzvA1JALOH-Iv=_57^mORsK$$6V9iT1FRpk^kPo~AqD`#lpuw9H$D%yn z(->Iuyv(ciOTQT81FuW8iM$$vH?*qzVPMV6e2?mxQoJU}M?cXf^2Q$RtmnA67l8fn z`;+W>e&+cUF9i9(YZYxGui4<$-lqALj=ACG7sxOBR$0#+ zesvgF*E7t#pyHK=1#cN1h}U88di4F>fUEu8;&;if&?o(He;NF?)c)@3Bb|QZ1^iuP z|6yS57iV5n@j{S~{U_SQ{_8V%bN{XJ(im9ts^1~Ma$NewARl;LqD|y&A8`6L==W<> z(r$Pu<|P$x0rG)2gUyKXGGg$SuG0J_F|hXYG0&@b3CIUtuV@qf>J47|4H~Zw18ZLP z+f>iYTVy>;pBKDkcp$&2M;P_g$4ljVZg@fF`4w*g^0A)SjHqXu!Rw#J|Ksy@Aq;Ge z-*5XCsonWwI(|P95|7n-;3tD_KVFGF@O;70kj9H(V8c7aybGCk5+ok0t%IM;JO9CW zJ(p;_00uU^d%j72_pOrO@sN0|w(@qxyZ7M_;>Y`+bpA!`f7H8BASNjviZ;)T%0_oR8 z`x6J${={mH({FP^^IO2c+Aq$$sN$s|AN-DpHqo!o;LV9zbN{6=u;x{7Ccp9KVbnnipiAU-6nCA9x2uo5*W3 zcynLZc=&lpdtPCV{PMlhF9!KIUPPP7Tl6^nI#)Fw?*H5KqRa~`UZp5_>+nG1rQ6`m z>DPUk@0&l;{1z~VD0B;o=@>2kPm(bMVsi?Z19Hk@e*-0Uh;YJ%f3$5vx&yb0X1G`|K;@S z8P@y)7+Cv-nHN+%59EX2)`zf7^y@Hq{ol}dAq=c}#jlcIp-1}FK|b(yZ(kY zXEa_3Zw#>J#hDjXyd2~MZvvYUetiaSAM>G_Bfs)_($AO=+y8L-jlWy-OJHE_mttO0 z@j{RfeyyTS?7tC%Hzbaoc)mw4u;%%g=T*EWIvzWqj>qZ^UhT!2UunP%FZ&g$XQo@$ zGY9$Df7p!Zzp1}F>$#+_FO#m;mmu@}ikE|TU@guJo)ob_zKKn`SdHFArU-mV!p2Lt2^&AjwqTlRaoqp5v8V^6eXU_{WFQ|AC z$j9+1+C*N5$rIZS?!RFSto@2Nl3(G~(k}w}$P;ZMZ*|A%*YhRKFMxqHFV4KE;&~t+ zcw0ANo5<@kcn$jYp)&1;SDhih@~fmDe%}f3X0RE-+y0Bwum7|7e{w!xVC|P;UQ+Su zARlhn1x25%qdUwq8-DxPuvrQYDR=>3QFxA)6_f$Et#SJra{Iu88iRsT(GJL}ma z<|fxOfPr;AgUs_Qo`>f9*7?{+I9}QeUcbKm3%T3=-9Uc%S4zJ++WzhCZU3rHzv;{I zcaifC18cu1^TLW3fqbavLD44qbsN0?uV_5Hes0ezf1dn`=O{nO$MN}PY!i7Ke|GxK zT_kvP{xgk%)%j0GUGW_{-+Cb=9;=POPX=AK2YTS~=FTC(qx+XuFtDztm!Z`z={E`a z;CEECiGDSESUw-wkkI@pc>cx4@0w{Umj#w+20ur)7#JxONImi5d*KJX^688KdF|D-f!J@xrl z!HHwd3o|dMcngpZycsqBIt<><$2Gqd46J#@De^0vCH*ELAIFPm6YIJ9N2lMk&Kq{c zi!(2(coE_qRJ=Zex7n@vEnr~nSIv@N`4!SH4f)`AM6`*1+kbHS&E2B$(im9tQp`&# zUJUYq*CpCS-iX0#AJ=$w7+CXs%=0QE{Jys6(i>$xNLHTZhm3I;ao%jt|dYo6AZ8zAvmZ5n>^#5-dT^uYC{0j{CJ_K2@n zU24g@ZIaaP{06UQkO=D;{AAwkzf)ok-g|Z4VN2d2=3OXxkO(~Z$-MI)j8}WP#w+0m zPi*RW&u7W+zMIMKW=K3%I|)CTckjIq;x}}y;L-Ldf`RpTNisCvA;(J-bQ3KQWAfHP6euYFP3jkPp0rqD|!07`&c$Xnp|_i z*p@0Q`wd;A@gf*l^Zd;7DIR|Q1?wr=M89T}7twhbSo89qCco^DQ9bcpeO_d12-S6>kN0D1bMQyCq_K+hOqL#IYgof2J|8<`u6azd}g*;rE{duS>Lv zeyjI5{f6+6LGJHHFtFyunHN>OCdkKniZ+qgXYfYT8ZU-{HLv<9@+-eo`UM~#c#Wb> z9-`tF4uDs18ZK2c}c~?{X5|Gs`)Tt@?NR=O=4ip^D)o6$Af(2i8j%%-r%jh zS>xp}u;yj2rFv#wBI`K}`M?_xZ6a@K(^=2Cw`sgI2G+bF^ZbezgM8q1i8hhfX7C#H zVJX88rXn$~B?GJ8jIQ{nV{XI$M#TC!^{+>aD*P`E_<#Ba?mX~?e z7fHXB&x`(>hX?Av8iQ9WYR&a5-Q=d8nQN$?DaFe{K8%+MY(|Wiv9hzCEu;8919rplB0$v%hxwjqBGp z6RxgrhM5;sybxXAY*p7cI}BcXT=T2Lz}l}kPJV@h(y#Ou;kOJA)PJibr{6yAUy3s? zs(8lzOMM1!{9~G50t0Km>eb{|exdXWK|b_ft7sGZZ~IqHztQV7UJL_kUW$21#S1__ z@ES#%$QvaDNMUTkpa)kymfP;!Q$6@Q#W$(QnY;bsoash5ec^u;zK0S3OPoRbYGr zZ(WRe~V%sSFTy1at%=0N;<%{G857d9n2CpTf)zgE4 zbv^SRBfo5$tS6pdgnG`y1My~m=Jaa`>pTpsd12-S_joTO9y}1Q!{Ci~YP zkzXMw{X&oreyyTS951WuPQU3-XuM$zta)+fMHMds`M^6U+C*NT!CUIkc#{}d^Qu>o zU-|jcF9G?$>lJMxZ~LcCzcsPe@%YTST0c|FODf(lt)ByG{TwlP4dPghd6jeA`1zRU zRlEhr2frC?hPHnOZ|xGTo;eJx>zVy1)iV>2^&EzL;0=g2v7S?RI_o)lrpAk5V9g6M z&#!m^$Om4dXcKvD2CqS!>yq_!bw5MlBjlHVp7dLw`x$1i8Bx#0pE&*I4r_jC46Oa4 z%nK`C4D!LROSFl8-3D*-eHw2818ZLSO7bh7D*e)s54_&rRSlzgTq?FY(NQPO_962YvcAEytFuT#8bte+J#%|H-^SiAVQ;Zhu_z zS`FU94Vu0QG_3XIZynnbe^cBvK`hwsO`Wi$`)VKLFL!W4yTt9QJ+Ixa|F~ysp_I^;c_aTEfpwB08K47oU z$2_m%)zW;TLd_?t3|`lSmd{2stn--~rhFzFWIjFM5BXgG3dY2IPUf8X92R3S=QDza zH7~$Czv4B5Kk#ZqOyo5gyyX^6Um6W-UiNy@mwAQM7YBdf^@^CtJM>ehzGi(qs&q9T zg_##pywz(3ZxLQ7pPdG8_AE``2pZP<3PYqXzgy~yfIsMK7co)a+P^#X)$h}I9yF|Z zG3G@TFZV9Nn}Zk9*KhC^&eeDmXjt>S%qzZJ>gxl4(6>*-M15r@54u=29!;QO%}XXI zpNSF={E;VOB5(93&U}uEwG6k1J~XU(e&+cUFG%a72DLt_Gk9(KdaTyfdMxt^(wC~2 z`P?AhisH>Y;M8|i@2~Om&-VI4%nK;q2=&*4s=sbEcvJ7z$}f(Fbw2ZP(w9A5>gxc1 zD8CjF6U%Su-<M6AM1;ViM(!uw|s%7FO7yZulRA&SE!Tv z;@}UwUJ(;{oA*2Q)zke2{QN95ta%CM#S||$BzSZ1LhXIX;5F;|DqZRGG0&@bt9t}* z5nhN_W$@bi@NeAyYSFOPm--mxGwGN4#QWtSpDSv=b#l>}&#CJ)UK|Z;UVwRi#p?in zte+w#mS2;>tHxW1q`r-t-SDy>C4HHfNqxAV3A||xL+igEJM|5SwIS!T0}X3^VdjMt zuNM4)S0Q4ezD|R;pszP4T&*_?*O9(_t<={?>&<;?y}5S8sjurYEuW2OSnG>1FRFMR z@CSYC5t+|^gV*+HjaQ3?HP6eu;!CBzjT;4T1zxE9$_(CcLgPiyu;wK{LitQ69zK5r z^wo%%Sbn32o%!rJU*iSQu;%%h=Tp2&@CV+u+Rv&pc*7sjco8(Ld6{cTU+N_?pN-&; z`b13BH?!c>x4c*5rO~kFg_svmyg2v+uUEuGUaP^IZPIunXjt>|gQPF}VyQ0z{=jP& zF_E`)pHtu1yER@P8rHlh^TLW31b^T)h?vOhHh2qS?}Gc62{f#E#cN1k;WVkQ5B!0* zPsBvt<{_uPDSiJXj)pZa!MvE_b$~zcT0~6b4H>*)F;=m@2pZNrAM?D5*GS`EO==Lb%{%qA?bdj;Xjt=N%!?}C#><7i6?mcX zsNdi%d{X00pkdAPGOzeTsjmw3 z{?M7vf!Axi4m7NJe&+cUuNM4)S0Q2|ug>5#>+{`8SM%LWKj}-IBJ;UQ^W8-?-<|n^ zQ{U0|X!_>Su+|r1UO@3iz#sGtikPUc)!;4Mr12)uu;%4sq%Zpdsjm7Gsm}xcz*~O@#zfwsdz|{V^!_vFs{af#FQj-A)PEjS{b#4aThPmI!d3Yd z{)zPEeNtZ^_+$MPF;U;zoKxR&T+3$~4eNZym={&NIQV1viI~XiH+Wmk8ZU>2HP6eu z;`61x3GfHrK@k&qWd?8HpvLP!!zcoiZh@Nm5@U_yey-#6;fGcbxj_KcewGXjt>2%nK`C?pnc{gBR*w zx(#0WX&P_!MQ(V-D@kABc~V~*{6XJ1h7tYQ=B!iS)ax`}91UxI3FgHVuLJyn*CJwK zK8FlmwOCv5c)O8s!}BrEt9bL^54>p%BlJ}nysdX>`tW*;y}nd0IE2i`#u z6ZK8r<;>^upvFt1VV%za^Zbez2Y=x8ikQf2GI&z~jTcA5nwPzT^ktqS^>u(hmY;}; zyhAfiea)}Yc$H{a^TNyvDc|#YCh3#@RrZi@|i}%I-g$V6;G7<;^2?Haw`u%5p zXjt=-@27kw6fX$=z-tgOkvIBnXFdnS+?&g<0}X4QpLssTtEKsTg__UT8N6kE{g-yP z{_7!qsS1@(@W*_Ln5b_i?bKHu(aLZ2eQxxHm={ny{CpPh#xacO&sq)Ml-T>_e8$nR z&S(B|(wBXf)Yk$2z-tjPQQy+Hocab}%USKebf96)i!v{)c(vdUyb2K$dEEwYE2i;s zXjt=#-K4LuOX`~df8ZSyF_E|VO{c!ufW{j^!K;19fZ5fgbs25$?e5OTjR zhlVxJ$2_m%O@Ke@6ETrjW$=1FuJM9sSo2a*%4hPKGM|;;54`PMn$R^*evj}Hx-=TGcs)PVtd{>0hf2;avCzggIoCD5_Y*Es6a zc=Kr3@SeDor0rtfE#P>#JPyB^_vGzL*s;7RnqQN?I2ty*8<=;?)ueAPI36w!!f)o? z_;kE_QMUZN5)T?Syi=IBn|TkNgS>h8&Ad~ej`x#WUIB06`gsQ$vVMO0M;CnJNl&H6 z6RW=9)9rt`U?{u$f>-|Nf}wdh{L4!Z)crQ~Zc1wMZ@WBA^Z2!<*ML8?hs#7vtS^&a zRcV#ayBO5UuLF(a=sTnR(?9<0*?_v>NcoxYe*A&M1~@zk4iA@~h$pEzoK?a-AbBV0 zJTz>0M=l{AykGL*ka>8Lc=t^yd6HMXPvdRiLfD44mv|4r`>=Jw*wo+$+WSE`B;J*Hl6dEvyk=-EidTt-4ez0M zQhV5|c^q^tGyMcI*{G;Nnz#;MO!IQ+h{{P@z zqVv$O;hn-f=zLk<3LG*IPZIBBlQ-}Rjn{#O4e$1gMLy4j_cN~n4vBXno+RFFUorC8 zM)$u^`PHIf!#kUJPlXk48xD#0FrFmdSthUEuj%ukVZ%GpDfB(^GR0egL(V6jB;I}h zV(7!qd8zi-frbrlFY(TV_se|3A?FiM67OP@_xJUmkA;Q4N`NZd*S`8Zw?Mg->rC(^j&T8{=WWt7x9kQU!P#|+Vt_S77d&7yX74spHG#>zil=C zJ*p4T?1<|nKJ@j^= z?=*Nn>#Ko7;ynph8=3dut%g2+o-yT9JkQvMx1V^=frT^ka1Bko-$AF(yvt4A)D@b( zI2ty*C*CIXT?+4K-aa@a-nn>^^7;6

    IlDYvuV;91R=Z4a~#T!4J$|@R}|2@FelB zH+e^2qv@MR!-jVX@xBD_XWlp*67O0(NxYLy-tv_iFO7x`@AkKfeBK1_XWl_LB;J*H zl6bd$!N}(T7MW}h_yA-p-r2-E6N?IdaQz2|#5)mB67MXNw_Ky~(rDP|J8}`}gZDG< zARMwjJW0I!ZZY&N>*IUcc6{H`!mbj2a6S)*tPf8T?`o6R^Ve6EctJF5c)N&q z8oZx*HE>A0C!d0o#5=*{4d~-hhwXTD%Y`DJXTtlL*8qpaI}uM3@8&ThpR+JpseF#0 zVWV$1@vg$54t^k?y>Ljp3-KiJPB(dDUX9m>h7IrTcA@Vgct7*n;gEP|;7Q`$b+e&w z?A1CC4IADb=E3_V4-T1!Cy95y$(wD|cq3@o@E*EA=(`Hu&%9nZ)`#&8-zpRU4kcxce%;y`d_U*G@@a{dt#5!_Z)aX^D5wwc)!C&LcGV5 zhQ4~3?W_9fLBoc31Mwcg4PE$w`ndv!#Ji`o%X_`aE5BIdt=jgVrx5SnQvW%p`p;WS z{pZOh@9!JmZ-2AM=cUIP-*5YzkR~si)c(-0;q4;cBd03f3LFye9z03q&aX2L2 zwRnhlIsUFYqp%sAYaev>eYCSXjt=#LE;r2l{^pl18*IdA>#V< z=BJfF=Jk9);|0;M<|UXHQ@l#>2i`WUkcc;A@Y;Gb9^TJo&+{?Qt9Toi3*HL65USw3HThQ}4;VPenH;}&kZ=}9H@CV*L5fj_r+NYfQ#xBGEh5NHUG>+51oQ_TX0Hbc` zqU+&%!0~W7ete#VU0VVjd;R?ad13beg*ty-ic4g+tTxy zbCu8Jd6dt@s>~;r2jugh%ID|}&V2p>cDo>-R9}9KhIM`MGtZ}ZUjTpLeL}><@~bm= zU%p1m=QU{9u|cN@HB zy??26)xQ*5NMGSsQr{|cET9kfvZ;UByxysAK=iF#KReK{F24lxVv1Kw{dI-vuZIlY zi$AQ@&%X><*3VNIwfh}ZKYt32hs(bUzggI+CD5_;^QhkbF#q=YQs+=UlaI)Jj!^p> zRPAqa$eGVAF?Mi1aXhi-1(@eoya^hQ4yy5}$>4SA^`+5OeaW6p`ZB+i`aIwd^<`bv zmqQ7szOH>(msnpT8rJnC%)C&E2mZ)=7skZ)*J<#o_4dBuDxZbdk-q%HQr|q~b6Vwd z?GsLY3pD;we?5VQwZ0hhqKb#(C+OQJVxqo&gI5oCAEf`Gjy#DKSQ$M533zvA{5BhpBjA-xO2JctmvqG%zyJ%SJ zD+Wkk;pbA{r@$Y0A5xz`+We?f-wvK9mtbB@@r>um4H>*<+W(|{R-$38&&NEk;^F=& z=v!3ztTK2%>A+lbKJP%onwNSl0 zxqkMcVa@Y0ub7wmg5VFl233A#2CqwuRm^L2H~zhv@|jRP4~>88VorqmMhBhw?9s>f zpsVrS&pe;vRf0e0+g9Uyox$7E`_G)K{xkC`(wF*~%;yC4p9fX{IdhFu->_a^BChI7 zhCC|vK{e9PuZa+ily9(+D^Zw84N4E{AbV_{-C`s<0O`u_u&$Eel9ZG>8NbMjT zlD`pe&!9rA?FiMlDgBm zc8h$T2hNfQhs?v1#Jf3WWGo5bqJZbV|GxI3(UZc#`sYy~&$`|3-}uaWrgrrx5Q_ zltMiG&RgQ0izkV9vdJ5UtJjJbLBoc3dmXiRct7)6;E;Hy;z{D&_D@DWdvM5;<6jUB z8{XN(I}L|A_<{1PfkWawS!xewnY;n)q9v~b4IADOztDFkcFn|VfJ5S)h$l(kegA0a zs}5;Ad_KMvZ!hs4fcGH9SeYi%s4DRuQES4I6!ry^Qo>)qo$!CqAQu_2Eh4 zJ$jX)uNhM)d6j6`@D32~_oeoZ&zK?J{iXXOuQqvY7ihd%G;Dagi1!p073tfCL*hM* zCrRH4Chs#;KWTn_1sZaGecbyQlC`}4yHC!q&jEj!U%yPm6zjhasD#SvRXC-V`!9WH zSo8eM^C=##AAyH+Z4y{#^2FY@Tu-B6&C9%$*MEnkz99G`PsBuhGgmtGHS7D4m1tP= zLd**&-YRTP18-66Q6sO_;I)apSk_nTYJWHX5?=phr9S+82=G=)`=7l|eOvl|LC)2F zL6mu6#hal0f`cL^>gzUmKe-Ugmi66%hIKxRFXr{%kEFh9z#sHoCSoFQ^9rZFqx&`9 zJQ~)#1oL8wHv;~^8x%2-H)Qa}pf^|g`p~fE`IzTbydd}k59dzQ9;ysp7tMF6z2o!l z?0KovD4)rBnNJV+18-fm_sRXve3t9=W!2U7u>kY@ikGJA0pn_asmb6i==&2BuJ$Lg zFCu-JA4+|Fv_G*=?N1zfzf<3^t}lXyb@_#v7g9Xje}jD1h?rPkIt|{e&Kq&XE1XLD z@;{LJ@c#u~yW*|&IQ31@`hn_891UxIG3G@TuLJyn*CJw~zJ7z(tY43-M8lfrWnS_7 zQr{}+TU7eW3|_si&*Ms8vWD`RP`n&0jX>WVyiofaz1*449=(1BUDZ!N^L&bj*Gqu6 zjmu=QKVN6?rf^9l`_DKU*7?l5ko2YQmHF%de=I){6U%R=+o|tYIHi`n@1kMN3o$RC zc%K4);C)EML|&`G+d==5KZW#VzbEw>{mW9+sc%Y@EssZWG_3VSnHN^P4yrFLs=jm^ zyrX)5J@2Z&F1~>D74DJxMyS6Y6frTMo0mED?cjP&f_X8;Gp^?h8N6Yd?^6E~LBl$q zKIVB9uMzyAzSM}AsISW4_2~Tze*cC&FI7$XOwP%CV*iBgPxUX85obOZV79N?!vq@E z`U1@JD_$S?18<**iTauh-hk)}xPEq^Va>~)O!_k4mHP1W`oODD{mY^EIrUBH`r@wi zg_##pJpB9_@LH6v4rD(wDzm>7(l%rR#BP?=|%4^(F4AzQmXpRXpQ*c)!8p z&ref(5TBp6EZ{iCx#4QO4KXjEc=I&gPOI^@)!;3Q|Aq6JcBL<0N&2#PNqxBg2KsuHzNL3N_3`J` zD4*i~K5#)k+R*7|(R^D15=_=CP05mStR25(lcFC(t%OX_))&tyjC zGeY$R_m-(WOzv~$^XNZl`sUHF))!!&U-3r3AM_21m}2}hcs+Xm5=6tAmwhhj%Y0kv z!{;dhZ(H>*hu&rA6LpvC=R6wLyfE`Zif7#4(`oRUMPDx40~*%6!gEMpJ}vdFQu!^a z@>|>M)YtO{K*;%g5DjZyjCoPTs|0_{=Xn?t%dg+y4U2m@SYHGUYo3>R#cxS{jo^>% zLERrxX7I{&eXID7S@V+5rhFz8FAe^{8&~>9-|5Wf(Q{C{tS@L-^Zd;7Dc%V90}nq- z&FepdH=wT{I$W(EGAEM0)Hh{5Yia#Zq1F#GT~2)iVyt3)xL&l^7h+zZ#G~=AqBQ;) zywAK&%jXqnSm!feLHe@akowL6f5_*{L`RUKl%jX0d*7-~@FQ#~X;19fgA|~c@ z$lwi&wj$fRtM=z(o>%c2sr}Wc_E%-_n)UWq>8kyuc2Pc)Uzhn@C4GxZ-(=XC&tbd; zMYi_{8rJy?Fwd`ejo=UYtPwHA_-F9CS~OlG8rHn*Gf7|OYf>LRj}>_9s((534yV3) zJ)a&|`3y5JqNCF2X05}iubk#*bUl0(8|rbc$I<8i z7ygu*;-aZi%`?GF?*Y-w@SBr)GQ!_SM%Kj^I|0))z1}GKZguny{^yWN}rE;Ud79izB#3@ z%H)Z<%j2!P=d-6gl+WaCGM~ot*(cxP%x8~STQDz(hIRP`nCDl#N?NaMtLwK-2CrVP zpB`8BGyAv4#q$|5lS<#KMg5$E7itfOE_CXfYSijy91UxIVdjMtuLJzC{fU^^9y$$P zxxQb%>Z-jL{+IOSQ&L}=+WWX_?`!RbJ{teHe?h}qUyONC#p?in)F)!1zJ7zZ@G32z z6KGiTyv!^9tJK#A{@A~Wn8+(Lcs*xnydWCZyyRagp9#gQ1b^UdH(^ZVjb7l)XZ@KP z&x3|F&(A!c;^kf`cysVVygGxo+^q4^Xjt7}U_Bizoh`vs) z|Io1Jg_svmyjto%D^&m4YVexHT#||3mt+Uy=G&Y5liYTK~P-sjs|2%jfDV z-0-5z3oBk4{2`y?7)I2WZj%?(d9KEX;*+GW@Gnwd8vKzb#vCla%{HgL0e$_@;cESm zU|vk|YH9sYAz~tL$l$e!y36HPi-vXi`IzTbyp1!2z7=?(d{!B}X3>|+`htcvFSSki zOnzDBbCvp+Mb*Ddp6|>jKW~luPpmxFya4n3iq`@DP<}0<4q`r=Oy0{;JL`+1Va?0_ zh4f{e~|9nU_PunipnXNb#`02i`%I&rXvk<~EXthBdG71nJ9v zQRyvm^4W-nH7~}zsN#9RAM~xOeD)i>S-pOaxT>FC<`r+1`Xb;D zymk>2%dgDf)$8Mf$JO|d{BO!_Oo6?vm?a^`bc^gUdD*dN*F)6YDg;>D>y z>s9?(oxvLpXyu3B$7avVY>~dyxXfoG_(MKxL`>8-6LjjU*2kj_97wF|ONe;^#ha(` zXj+X&tp;yEpMT=~(Vmxoob+YCAobPK{If#MKbPL<)HhtG=MxQUeNpCx6|WKeF`ptP z=Cj-2wdvy#jwklK;wI@U+#>aD!2T5QR@8ph=07;~mFw#V{6129UV?cs#Y0p|G?Z-eH8 zrS)`^!J8Frh5MHgSM4wRXVRA$Q~Id=wX61b=sc&so$P-yFQjBCPv(z^N{?Hx@}@Iv#!GK1GstMP(pSo4y9qI@P4uM+%$xBXJd8$H*V&mDYUvY&ZA z#WTJyxz6D2puS}ONcvJqnNOp>%(OW5b?NiLMpyH}5c2|x=b`!Fx~iY825(CAt=!(@ zuKMfzA4p&Jb5dUi_17(`zg{}Wsc%`YFKJixCCa?8;>D@H^op2b{4;p`{T8%-5Z`ZM zT|bMzCw+wxsjrgON84)suz9vq--13LoNzTCOfWB|czxiH?Ont~eM1JXO>ghDuG+hg zd0xfap!Sa6-NWlYgV&|=8eQ>H|3&#sepcoazh4OStt;N->zw(V5_>_iexhMregWqB z6|V#Qf!Ct;mzoUT8%{y(%zGgk*1YWRNMGikrM}<3K=6JBFO<(i%}#wg_`cRK^FoRj zq4r+-zSd5IHzwBhtgjCZYkh@v(wF~?)Q9Z}^4TC_it+C(r@mo*e)e5&1gLm|WT78*E!#bbI-%>skiZ=rO zz#9}XkvH1p%xAN{Ua54oUhy-}r+BNRZ&B&1Gk85ZFX)Pwd5rX>J}vW!|1ap zYn}QQ#N3A4AAVo8Juk|lHDvzEl~!1${qj!qt9O>QTyP z@>4ROeYBsoPsBvt zZ}s^ipNsIq3LV{=`iy`iihiQD8E6qp6)bwQ}vp@I2zXa3I)=a|D@E{ z0sg>i5izm+)?Ve**Zd-lSBZu-FUGv6;;mBoEvoYCH+aLkzKAP*Ugi~trM^beSEKZm z8N30#y?3~3@5$d#J`;*pOYOZvwfE68o%tNl=bs&}=AVA%`AR&Re^!W?SblW|uU=oT zcwDVlGOMI7b-m1Ij{564)nCuN(y4DjpHEDmy~eZI8ns{Q$x z=T*EkwZC!I{;CY#l-?e2{cWGm)UPO?$xo@|p}@SEb<5{fdof*xavp}=!0mm*Rev30X!PT!MDe zzB+@qte0OJ4eR!oSs{I?kIH<;!5?_NA|~=?PIu~Cc&2C%v|l%YhBYt5yny2Mfj{u} ziI~W1HF+oMJT$C%`CpK}>~&IKANV6r#6;dwol{@=vozl7E;qa=^TLXk27lmyh=_`Ch>NEByHvLY0Q&pP2I2zXZOfWB|cpcym`dUOx%;%87s~2kv?q57; zSo3_$^D15rx^3Xii7^0qRR-^gSZt^Rrb~>!UD3LxVD(Y4FGPAl6)1ew`((>_2I|rT(Q64eRnNJV+w**GQfR z{DHR)<1V$owU;WH%v<>T`F%j1JOfFGA6N;Axe=I+h&(W7S^SP|=Po!P#PxzVVQ@l9%1Fu)aM16GzZ$aHAu#eqMuybv{GP3n<RUR^sc%;AKSx~kpHb$86)!^lXS?b@yA57>8MaOCuUEZp>Sr-W`U+P| zeQEH=`iWu0c)R%`r@n7IS9{*}r_hk)ciiV~Czuygymx^=@ZKb1V)+djyrW_-i0AY3 zXdI`%7SG#01yJx1$1lPA`FV%qa7fQPycSQAypu~f`8?`j+Ml5DA%cbt@AjVx-g)qT z=C!~f@lM5)#JlZOl}^dq61ir5IW%l|XA|#Ect7)|;gEPY;z{D2W%BC9T$p(tG;DZB z{$1#M1Uf_Jt-vAi?!lA9yRXL3*NiDt&&Nc=hPRh^zsCU;XU>fq3=$3Kl7&Hkn@QrN#CO{H1#1u=|jVYcYt`m|C{>$>2)|{eRz_1SDU=Q zufFVJeaERUCz!k*F;;PX38G=6@0JHdK2L-9b3SX}kn}wXqXX-^`4l6c!_Uz289~E_ zx0`t9!TXul0*Ayq6;Dz=Pd9nXf6=}_JdK78@9uvS`fh^vGw&cA67NbpNxZvWVCdud z3-vEz{$j)1L%fS%qQbm(I3(T~c#?SMo4nx@^n9XW!+Yp{q3=9+Kl57Pkn@QriT7Z& zp>LMfx1?_b4IAEm;#~#rXI?KH67NDhNxaKVUOCMth_?z~-EPHuVo~V37r*KqexQGu zgG1uos(t_a$%ei$o!5tkjlLU*cM-gwdF^n><%cIp-}NSMnZ|e0mqx>ecM9=tg7-7; zARH3!N<2xtlTF_2e{1bw1PvSB?LQXzyb9jWyk0ou^23wFyRFK|=aks{<^Cm(h7Ip* z;#~^wXWl+IB;L7rl6YsCykV3i`|AiAHoPN8s6C(*_<{P;0*Ayq6;BfHKA)kl=LwA$ zM8k%+mw2ba`u-v^IG7L%MVWy?*x-q z4tv}xpR3Qa(bY^?)D2Z_woAg3b}qT_6ufCQUZCuU_0CUbWbpk=Ivn=4t

    yvx32bICZFTXXSLq`HeA)00Q3BcH&69*TGTKoAO3zoNiKEuolDPAqrmkL#1It|{K zeto(R4eRnN{E+nJyQRJ$_(T0{5HT^IYbQGOE$j6&jfOQZ#=NNF#latVy&@*^`VC&2 z&Z~9B^D?g(mHIZQJ*=qqP-gJ9aLAMMr5qZ^8IQ#CZEpDirSkTl(|-Bw;CQ%vq%`u~ zTA>no?0$K@USB+}>WiPDKBW);U&tqpy;MKzN?0C`w)Favb5&n5-zSl&%Va($sJn*m zQ{R}*>vP46GB2!nLE<$iUbn%k7G*2@GgswT{2u8myie+zr}CRt<+u4vr#@b<@c4)8 z73=a#FfXQf9pI1SABLg(Uku(3`ZFK%yozV^XH^ET2dD6IKRJkowZ7Cnl+WaQWj-sx zAM|aj>&27h&V0^RXuJ_Lta$Hxd0gr9GOze< zsV_&oImIh8c)b5Y?Op7@SnEsPP5DeHUL3YwKwmGsPWiOwKE)fM z`ZB2MOP#^{>*nrKefb3%Qr~f}=VZP^`cjw3eBJ^6pzm`cCYImKGo1R`U<+Eczgjeo z)BeQuoIQYoO_!%i`@7p}fA`_i{_goDoV>nLk6WIyy?fBG;XO1<`yseh20wsafkRqP z--9Qq_#X5qd6Ksb|Bd3M(Xip|C*Dmcg?IAT+KE$I7M6Sn(Vrx5Qtlmb6ceuHpG`Yyqf zl+Tk*UYBT_ydT+!hE4h1K12D$szJO8IOKemuE*W>zyF`|c{cHmm(R0I-h$r#CT!c^ zk&MuH9ZDg6gK)_C#FLcI`~GU^Yu4LerEUA$OT6Eg^0}_^c|V>c-o+;G@2fA5eVgf{n-Q>HuZBC>%&VM@Pq9E z4!QjBB=Jr#dF5C|ByZKWKf5I@@_BEmKbuqi*{!Ai?B@S5^0}<@@O}g~blk{c7Qs3%;n7=H-3+Y?hcItcj_0e(X6H(@c z70*~7bsM~+dOqh}<+Jz=(pPwg)Q8Vgg7O;_F>(H~`4^|Y`YW}3deE@WXM%Y##mn^y z-WGmAN%>56$b8O&Kk%k8 zjA##&PdM{A^&X8EN5fiQfO&q!>i~b?wTPHleoY2%jMjhD{`%0c=4HQ5`Z8~q`fvdV zyao{yd58Ynsqg8ZXLa265N2LT@r>tLbsD^*AuXTtXjtnje2w(w-zN2qfIsLP6fsfX z+Llw_(?1{cxcXwuiz=S+e9V4>x2*3krS<)#J@pI3|P zpI19>J~MZazSKoBpB?mhwHEbxwV6$)zMeO0`hsX!>kBb2pm>$w5Bj#-Fed72HF)I# zjko$*H@y7qq%ZpxsV@!wz#GRfg11z3>KoJZiJxD$*B518Sn-0C&jyvxZiCl_TOhK& zG@@ah&*E1}U*STj5BF0*-@4il+5EGiuT10hp<&HSFfXQfLGTA&gNTXcH)QbIKA`bx z(Xi(EnCDfz4H&P1w<5-HKn0X<^YXpDb)rgo_ew_wy;T%oh1RB=7!X)X-?~(fYz#n+~L`>wZ z{n4rKC~lEUee-Bo^J2`4D&7eA18-2oL|(tas~6W=xxV1_WqY2NdBrzNeL4Dkz?`~1 zU1sox->m72pkb{qnWB6q6t5BdvHV0#)HnJEBcEcf$og>pXwUOA&!>1JH2)k_^Upei zH~c|e9~##BGXF~YQf)Gyjo^>^L`>8-^LwYhtygHg92(ZV5c2|xHv#^@J1Alzuhrl! zgf-p-8rHo01nJA3FZK0-Kk)X6n8;iDFQ>j`@mW1CKm7cjJuk|MWkS|5qePh0a+|3djphGaf#Y5c1wjeqOT zeD<8K}EgnHN&LN?MO?ze(!rG)z7uZoce~}rsXq& zhIKw;%!?{sBltu4)rgo_Kl=^d)@2$mhlVxJ%e>+nrM?O92i`#u6M1C@@2Fls=Uvs$ zDU+N!ZJ|o}{JiND^`m>p%PJPW{?Zo3lB^uVe5c2|xx7sMmZxLRI*J|*}_4&&x zE)=bK`Ek;heS_4O27k~uuGX7Nk2>`Y)90C~|HKa@+w-E#3o9Nz9}ajmA|{q!x51lw zFKXv}#?i3WSNsC$E1W0wb$~zcT0~6bZLT@>b?NKdMpx_G1oL8w=b`oO`b$s)@`eoF z?2~%^M8jI2k9l6ji-14YPZ1M&RR*s|e72hN8Pq?oecb(!)Gd_HifIsjKikPUc$>8zlS9t%^ReR5Vp7dqTmHL9z-WybV zKlB@?zGZ!UNV^&z!psXPUYy2ICL< zZPlr->jbU*8qu)k#h4dWJiI>vczCUo>Px@DtNx?b9yb2qragF>S3F1Rn+Jd3O=B2Q zKg$eWxww~#+r#R!+~`Z*O!-VGUK;#?H;!QhZ}ivBd~Q7h|Hix=8rJ#rGtZ}Z6W|X# zyqAJ_bp~(h-5M{BhBYrUO8Qb~%Y1f#Kk!;aOsp?6|KZfvb)v>=M8ldFVqQS;Jm3$! zb#=d6tHE1%wZ@x3!I)7|(A93ni_Uk+}tn-;*UaZ6ef8>dn z$Qv?vZRcyeS~RSAKIVB9Z=+T4R^Wy5S!M9*Pu6%IG^}~45z1%sESb+-mEg_63-Km@ z>CETsUX3?`hBYt1Jip>az#sD2E@EOnn+#shxf(BshBYtyS<;tjlKLvaA9&j>7!!Gi z9(L-h|C82Vd(g1vg_##pyc~4?z?&0e0P;Ew-ok%sya_a{d4+!_effaY*9ZQ<+b3co zZ*9e?Z&}nO?yu8mSo31ciz;56>SwR2pZx}}>t$N`HKJk7^D?jaTB*+i{-AHYR+e9x z!K*)A<9X1q<|RKv`AjHYu8!IRyik1^{e?51TW{BRIW(+!e&+cUZvy;5-$4-*%dgJh zwLM$o)uLg|%iKizQjId78#ErRh%pX%GY>iSHS6~mRH9+c3o$RCc&ld#eT(oy`D`_K z^+&b#;6cNhm;W^B%f3eH%RNf%4_=73^mC`a9kjnF^TLW}w7+hHSFQJ-8}D?J&*F`w zukdQAZyx-izD#2n(VuNDJN1oq;NQ5t_n~2(&jj;giWdZb;5CStSYL(=-t2F+@*6?J zn&)GlSMeg?54?5}6M0nz?`VUjZypV6Ug{v_Gx;i+&k^tk-k^wyyvYZRe2TtK<`WHT zUVwRi#S4Nz=2OH(UX#Il`p-8WcYT}v6zR*HDfJnjZ#=Z*)VI~H7|-4c@X?`^xbM4QpQE2GW;*rPLP(f8h0sn8;hpJM}HUO4FA{!dn$m=(FeE%-3-^KmA);ursif2fDeO|%a2QSp#%M9MIKA(uVnolG@N%>4DUL(yX zYSesU^k>d|4m?-OX9pVA`uxoEDPAr3Lq01+Ow4DU!Q=aBIiGkxtu-$*O!`s{DxcsF zynPr(^q(_1r@pS=YyDXx8rHlJ^8$+J0e|4F|Ci*o8oUL4{F`t${#{S{vaeA3z#sLA zn3&I{pE~u8JzFckJ~XWLMVS{?JpB9_@ESx+I^z~SutMyodc`?Ncf5ux@|Jk5f_;iZ=rO(EbKROyrH;uhJ?%Pf7KK#-k22ta*Os z`4q1f{DD^?Vj{23;2nLYt`7}sUgl$@FXfl{#OHmXJ`odnGmB1rUH>8KC+TZM!=xEyqMz6gFo=5Rrw7WyxE^?`5ZyRn&)GlSMeg?54?5}6Z2VR@OE&2UFsv0&*V#G zK8^e9CJ#IF$n^Aj4xxa=Ta_Fz&H#dZHOQ2)>>mA(BkiC}lWnLon z8TT_BT5#%{eNZnyG_1=n%)F4|MZh1+PsGIX>oj;%r)cdxj)pa_Fi86HFP8f7`QX57 z5iyascAryU*XuN1BO2Dc81tfv=K+77K*O4sIY9bSFOvD}1ApM{6ETrDlXdFr(#MBJSK~v7c>%@q(D<;f#)npe zSFY<@t#+d?|6$UXJyq&UgFomS$1q~NUHXwz-+;Il!t96pU<$@mtbB@@ha*5m+jL1F9z@EYcSVx{)vWl zK7GvdD&7eALp}#ZOst<(2CrV9U*r7Po|n3s@|k?0%x4ZJ*1(%n^XthUI`dhs-`~3W zxSReZz&yX=rNJNTCx#LAv&rB!i@$L`D_!xj{iH8*iqyBdDR_(ULcBviaO!K@rIlYT z8rJ0(W?o3~HfVmmqUP6~25-1b<3-T0<`rV3FaH9m51)Sk`K%E!vA(Q*->Gj(zrGoF zb$v6&yr|-JfIskBL`>xMo4k`Wefar3dwpK!6|1E_d>$S0L`>wB8NBKTuxz=$Z2X&> z`kDL?X$&Lk=jgr8d{&EVS(4Y}MxUQ~z7h}ok%wUfug>5Nh`BfOI$X`? zGkv5lb+XK7EzRdE)O>#Cdrp0`cuRrI=Lj0s^)tl0fZ|2KAM~}0m{@+T2Jfi8-#YJV zzcv3s(wD80`bKEKbx_1a-qJlzeO-sO`qGGowZ16x!iwhsf6%wSAnQxF!5cnH%Vz`) zYhLl6NMFGx^)-S&@M=U%)VDe3)K{+GKe6g+d`~bhrg&)@-^bPXK4kEAaQ(r@Jg?#z z*B`13-t4kgej{jD=QH(>l+WbzWj-U|kM&c;#C%SE*O|{Y+@h21p%x8mUVwRi#oM6$ zkQK2;M_!Z3)92SXKep#(uOfY!N~sUOPZRX5zzdImcRTfs>AXHyyfE`ZiWdZb;5CSt zsISxDE$jJAyUJ(b1Eep1lGGOmf8h0sn8;iEj#FQ?xVK66*FHD-j4>~&c=O;7ylD(0 z`s;p!S1;Cv%=4gOU0=M+D?U%^%TaruQ|-OX;0=hrM~)9@So4xsQa%%kR}222uR`@_ zqqEL@4(sg?+mAiZ&pe;vHB$SlQSGnJ;MME<*B)2<*O^|@mwK+s=c`2d&A|(m-^^W3 zef9c$(Bo=87-C+a#H0D(oSF}|8oa3n{9m~I;%HcxU;YZxmwk@Z*8%=eek~#PWl+eSX&lB=qp9cWnRGr&B*;?;sb=2OH(eN6_h zTwE(>eXGB7Q-0YV(wC`_`qJPJym1U8`s+h!r@q-mt-g$)VXZIBypZBWz#n++A|~qV zG#VMb?DxYiLGW6;DAtSE#Lt@N}Dqe*4LrULw-EZ)!x3qk2 zxLUt^nOEE;_05AnlHDPH~LLyKF7rW z!u7Myl|Dc7e2Nz&eGN)qox$VhW773F@qA2ceVHifOFdKOGe`Rcb85d}<{O5-Gqm>J zhlVvT#Jqsw1;HQk*&t$KK3fgmQL)zMeB%1so|nIj^kvJXz7g;T-k^wyyrnyx`sz>B z^m)**))!@7Sn+Z-)L+93kADVl2m3w62&)^Q1^p%mau&P#KLa9zMx^9 z&%%31Wd0eF*9ZPsUqno-FKc%wnanHK*GH?a=DRWGMHMd%{=gd-b70yrM_y^MF6_)-xCrd1VG~L7xv!xS9_pFQt4Y6c4|T1M?|jB5(9|BcHF(%5T+G z`T3dWQ@k{l-?%EjI)m5tS1q5lXjtbn^KR0Y`r9)-P4jr0*2YsJpDXY}`JDNxQ{S+D zKLg&6V9yINFQ9mhbU#Clx}Txd;O*e~A^A&4U-o~cKI8czOH)pLvwzd_If90DKBLSF zD_#Wrp}w?>m{?!B4PKilTYg@1EgClc*%SLn+O8P&XHUFb+&>7vx!|6>O$j@;KP$gi z=;Qk}z6XX4?*``G@*%!o103Og4fxHx8=sE1MLe3H<3q=DW|?>(UXf zHag+V=j;(p-v}DkJU{b%iWdQY(AO?vVtcPMc)Wi`{h8Q5v+2+7zL=yPxr+L;y-;F@ z%Y*Qn6M4^9lrTsCIj`wk{h=FuA%+J2BFirg{-AFh!-(>0En&HTsn_>kJg)X%@|`3y z`-J4>ek^!%@It($e^D}-H!MC|#_a(=Z)RV9QRameuMzw~UyX<<#y^9%{1E;x%uAzT zU0;e}(pUIzsV@%x!0Qz;k+=C}r@pBNG+rDHYhHqRF~#cuf8e!5EBTjTYiVa>~SkiN|0QeP1Kf!82nBJa=_o%-7J^$}kG zvFC-E7gD?p7(aoxBF0qYbsD^`+cbTRXjtnjyq)yrH>Exg_+vgNF(&fXZguKgeo*73 z(Xi&lm={&NIQRpvSHwhKzrhhctP+7UW15#p?in;I)XD$g4AWJ-^g=K{Tv+nYWU@ z)SqQOE5RRl+Ye(*a-qI~jeLL7sjxsN-c*cHmx4~Y6jK8tT5eT6?seH&j9`CNe) zD!my~aczn9t**P_`IzTbyfpX&Zydvj z`dMZ0cJO?#)P}S z-T2o|`Z9lz`XV&`wU@@fo1OaFXnscX>smBy=GS`}wf{2SpMV`6_!5`|&G=>rFp{#`E`TW9$;E}!wG;H#D%O1+- z?eC*}9soz!FNfa@x;6PU`JBC739P_ z7W!zs?Lfo2f62Fz$n3hTFSXzg^`%0@#Qu6|M9Jj(vaHYN)2`<8QRameFHZCMUJ(;{ z-3D*!PEB7N4QqYH^GRRfw^CmR_=CO{5fgcvpEdO9^Xs&$`E`PMF~y71{JK}f6yu-4 zYx}LHuNDn!eLm)S6>sA)p>G9Vc>FVX%Q=mgM#GwyYNdQ8ACvivgFoc6SHwhplmG0@ z=MKs*z&yX=8Rgex^1iO=i=$z!FB>9#ng5jfI=~<6i-?K(4t>U{ZztFPm={t!^ZK8` zoBffdZv+i%eT6rXzWh7~j4BpZEHQqcL*1Tkp@|jS)5%34zpoodQ(N8<` zS^fi!xB7iIJU{b%ikAj|;EiJ#F}~Lsyd8WVFY`vyms*qgG(L|vbE8vV&#juiAR5;B z3^6aDc$MG}`nJcVzE*>`gZriO|3Lb(1*y-tUux-~Q{S?Fy+7^hdViF8Va1En_5NOU zy}#SwHCJfYt18j3&S&urq_6NBsSlrT3;A3W_grHA-29YNU$s8|ZQ#a`H7~)unBvWY zKk%m2{?d@i+tljI240A<=J}ZCE%E4j&a}FoQ)TeVg?72#+~p>psq-kG$yJ$8{QeJY ze;7uzzsVb%`8kD4Lv)5NRm-OZTL+VRYeHmBvWo_80 zZwK`y#=K~W=d3UN25(EBzvNuaU%bpK{z~ebp!v%|HGe5Hc*|n0&+Q?NhIM^OwopD3 ziWdies4u-DrWpUOH}bim)z4K|0`%9_M_`L5@ z!l`ddpTFeLu+|r4URd!az#q!*pooe2>^6AyztGDM4QpQUb)>KGu+*2M>wj~l>wlkc z>MKubyw%US;U$f^pNBr~)K@L~0`5OI9(KbEGcTlg^WYD>X$&LEuhZZSi@j~; zMbNO;S7;)A`G=&wM(_t-jfjc)T>F?)-_e8kzc6ne4QpPEc~Qk10e|2PikQgjH+bdW z(0Hq^_Itd{EB;*SOVfVOxZ3Y2Gk87v=O2RZKK~G)d?pmHl0N^i{S(xH`bIzM%;(s= zrmqhT>wNl|=Tp2O_(MJ$L`>w>8NA`o3Lfo8M$oX?kG%V}B<)B$?SGyPj)%)@;WrDr z=Q<_q*!^<8f0uaT{#_g19_H<3-Y&7g!Dr@m&rJz#ydub&C##T0K98UpYZReKmRcw_fz`ufnYZVx`@c@-}R{@5Nw zOl%KT25(EurDXY`Va-dun(~><%Y07I{Oq8bpG^)r^SJ|FfO-C>=QSC;*?Y8nj-X+! zFZ(Lem-(607Xg3BXS;}r`8;%uQ{S*YpT`S8_Pj9jLWnof|`tmucZvy;*cTmJc-r51DzH-qQaD7?5%?&Tcyr|;g^#tIJV;Ir?`VHQIKL6}M z!&;x0dBvYfeYM~Zyb2K$^_3aCE*c-``cWeq*1Y5^DW3_&^MF6_*8f@R8~v~|pJPk- zH_m4t8rD2N^L&aI1b^T)h?uCa&fxV-YrG&D*1XIaq%ZaFGM|;;54`O=FedV52Auk; z_5GKPyWH?X%nK;qJop1|8p8-)tHG-m{|o2SgNC)fd;{sr{zU4_!39;|&A|)tmacZ{ zYu0&{u6R-Ag%xj=c#DeHZSbm(;{U?>HXe1OulNemS9n0`n+Jc)Cx)T%uivR}nc4%* zU(#sU%wKL`)Ga~2UJQHo=*AN0*!j}%7d3qmG_1?d$55}**9iWguSUeg`dL-N z%K6K;G+qu3YhG$MKFbW=?0;#z5j3oM$>0F)^Q`A9Ut( zi|PyYFF7=9`j_2|Ivc*~6F-P|J2)OL$FGZFVP}*;$M!E{ztr^gp<%5rQ%CwzM`S+n z{!!4^AY!7vnSXNXtJc@=8?M&xA?5`XZ=Tlg(`x4jkmGthL>PoO!4NyAN64vp>N3GHQ%D~D$%gk=VP8%@m8U~0N$eL zL$Lg+3|^bKHqY~kS~RSAsancs@;;f*jYYv*ffv#@`2lA>%kS3otzzY|<^`DNSG+X% zgT8SLBl6i~@Ot$9iJ+_fiR?>BU*?e1S4sO5+bPLAbfuy1tGYg1ELrOdGcTlgY4AsV zV$Fr+*J<#k?$da2G^}}rmyo`ER_f~jf8e!Ijb7o*=TW`Co_Ez>`mpSI)hhzMANt7YQG?J z8tF^T%Y4q$e!;ZbFPPcy)K{+aR$cKz%nK-9nt0=i*J|*pKdkE;a8rKy7m>c~50yUf zhkQix<1^9vaX-SQ%PUp2TC9K zqdp8H^lkPy^$o9Sya*cByae-Niq{DKz^f54u{{hKytX?uUM(8dJRkGCinnpQ;H|(5 z>8mn$vwa$G1PyCms)q8J{JzX*1pGl?yNHSUCNFp9v-}~Ahd21!^8(ECD_$D>fj5p} zX#6vH^?HBian+w?Ur72g_ey;^>d)p>e|D(bsjo-OO?f^MbT!`%GcTlgl{DYo{<_rH zY4Dc6tmQL}hIRQBP9c5y?@4`e@P~Z%ikMh_Yf-1ZYLRQX|FZ0c7h_&j@#euFc+(h0 zlwZHW8`JxjK3DyVmwCl|q(1DQfY%^mqP{YNH!RjNtS^Fwbv~0XpnN72uMzx#S0iE~ zZ}c)FpPxtVGM{5^cz)*j6mK5v$8oXJ( zy^pwR?}bXzm%mHui%@%SSM7c6-A;XNU(oc`qG7Es#=NNFZP0kMqQ;|sgI9lr#`B!z7};q-{>XId@lb~)0alW zTA!bJKE;cJKh&3A5fkf6ox$75^}pwlzEno$)4cw-64( zb`cZxwHmzTL5-J2!s33j$Z%BQ$;E(lF#6;fO#ZG>zrm~ifX3Un(hbkcyyBfw-#qwZ`C%B*-pdSLx#$bHJ*?jB zhL?O6 z`qJQ!<%eNJ`7OP}sc$Q#@p5Qb=QGN@u;NXCKkyEUm{@+@25&(hZzo)hx5aYOSD2Ri z`e?k}r^egO4yQhT{wG~eUHzULeF^5p6fX__m`@BN@;PMiswcI4Zn(;)k9l6jo2PtE zt9(`&ysd9(JeT*soIv?Z-XZg8-v9D;XFhwrs_}woSl5>T^Zbfe3I5pr)c#A8!K=Ps zHcY`hJfG4eNX+pF#OdC|>Rxf;R^*q;K>hXFiYW z^H03L%AV(Eo=@>cz#sGtikPUc&fv98b6j z^H}J5v3MSf&Gq6vjM@ud^@-PucmEi#7gxe>23=SJ9ecfaSoC$QFXF2I%>QlkZ|^_p zgXP&tsjrdx&l=T#E?wx<*CytsGM{Kz=QGN@u;OhbD4*~``Rq1$WBU59&)xd(e@R~< zCH3L@5!<_niS=c(-KlT(-T1$-z7aI6^(B}WQ@jZH1Fv1gMBb3WTfSZ6rO~kF`IzTb zyg2v+uUEuGUX{U{9oKjxXjt=7f2DjT|5fHQ0{*B^#6;fY1&m;Z{=2mYuJ!w7wAZ+7b2!SlUi%!?|X@qF)ogEw|S)7OWFbw0h! zEB=er7X*LM*C1kIKFbVV^Jg_)B^uVeg7~F;e~jcA*a5ruW7s- z8rHl7^J0oO0sdHDL`5%=gEw}o#_L1FnwQ-o zeVK8o51-!zyao{yd53~deMjG`@#fL6=7pITQoIrH2i~BFiM&pO*R1EW(p5eSkCVRq z7o@&bT5m3@_2$|eo%*&uuIbC6VXZI5yr|+$fIsLvC}N_%euFpr4vja0hBeR2yy7iV zUj+QIzKEE}D>HaKdV2`EY7fax%4b6HDycnem-avZ!I{tME=}LY#cuTZndeiydGH5) z(-=ndpLGUr>RlQyj)rwUGey#u`n=3%2lxZ8Ma0B>&b+~?Z$V#APqoygu*; z-aZi%d94O-_)<+@1PyC_`9G7s?3mQo2>!sU5iyasbe>aRkH|HTM?qKR7iC^p@hYkO zwmVS+^12OPy*~bV+>L)5q_1$Z)R&|2Z>}`{z22#BSa0tUSM5E)yqMxOQhTpa?S07L z?O;CdW1d&>($4vOmBAakNvkh?Xjs>m)SoDy$x)flAoxRlX%I27{3g$J=5s2e@#1J$ z^8(ECD_#fqWBU^^k=JDKcF_K^eK16J|9Hl3`XfNGHsS2FdV8O@m~|tfoP( zVOBIqC(H^5IVa4D2I+)Z(I8hbZ_ywbUT?l@?X~uv?X&B3Kfxc&vmTzcK77~yy`N`h zf{K>{f6zB1VxqoQgSUhAO8$RHU+xQ1pRrz9eVtR^4%%Ogc~QkP+Fy^sTN~5zIfI6E zKE2E=~5e;iz?h(?L{hZWS2L8a?{xZfy-eSE|-`E8j zuOAI-UX*!Z#S4Ky@ESx+07zb4KKhvzv4}RKkyD<7*Rj#4Bl9i#_LDJI-l8x zNMGg}sV@ZnSU*Kf)HfS&>RbDu#+yOInipnXQ1KGr54=7R6M3yB?~6JQ4QpQhze!*2 zYN-#OA4Q&siM-X%Wz6x#0zw7f`$j@CV)j z3?u4Glfi5L0RD~pvr06q_2pJcU-l}g51+RJ-m;ocEWXOAZ|-W1mqNpu7iC^p@w&ku z^C@CtK06HFh$IH*5M9(6H7QXI@P4Qs58z zhD1!%H(>DQzNYa~Xjt=n%=0QdMNH(C8@wsew{m^K{??wC{sZMRIVkfP0e|4N zh?vM5J4ChBW7csqDLIsbdomm84!jOUYAPj%{B zJ6+Q^gNC)f81tfvmjHjz*C%44z8-_utM7k?-0goduMk)IX#aCpasSicRqO4+dSDAGoM>}J{Mf&)6YDg;-x5`Ln@zD2Cw>KTKRd zz#n;P|7CHHQ{R?eUlv@|mnieXikAX^;0=kG*d96z-kKO2xj)0_(e3pWena~5pOX3# z;E(N3#6;fa%M5)fEuRZ$Sm!g&yqMypz#sLAn8+J2cxz{CycsmCc|PWO6)yq)s87U1 zUb(?*`?|)fMZ=nxzMt}${G`mM2mFDzuJnyoJM-E67L8YlhBYt1Jip>?yjk#;;f2~? zoxvMCOXEe*u;yi#Nnhp@QeQ3jgTCD&CgyYY6sNwPms8rHlp^MZ<32L8a?{y4@& zUaQG#)_G`H^YXtYeYq>7zB2Gfo~kdaRZe}S@6dQFuI3Xl=0z260{nq@0K?Gw&)_wS zzD~~P(XiI%WnSUqQs2g>1#cN%h*x6prf$&mCD5?uC67=(IE$MVB4qWmULcIsQY z9RJ4UH-UzAK7-5)C|*DK1FuWO#C$dxy!r->SB8c)FSkVcvVBtD%IgGg9$rY_Vx?2x zm|lMUuF5aUys+YhsQem4Ow`w5@)DZ9el)E0749Q_`Hx9`A@GNMHi($W+kB~0-^e8z zuNw_(UYvO`#cKqA;MItj$Qv+ty;o|y5E|AzAM?D5R|)>W+a+QmuiW6ZU8wQ!ey=?* zy-4{??w9%WfIslo)$^^RFLCB`tx@C6pkb{qz&yX=CBPqeeIh36t221LV(j4d7ed3D zm(7vB%txiZO7O>gikQfoeX&zt=SMYtjc8c&!psXQUK#iUZ@U*`BCplpjeJDob)#X; z%m0$}<$9&QM(_t-jfjc7)svk1rfM`^0u5_kjCoPTi-14yT0~6b^%%U0c8#}zgReEu z%e=y6Qr`^t18*F|hVbMi!|zUmfDp9c+VeL?00 z6mMa#&^HY)RDMkcZwK?2+|Nm0HYW8M^OwclPJNwcYx)||u+|r4URd$Uz#qzQTkT(W z7`$q6uYmhA4;t3I!p}%w{v%S~0<1rPH!apASYI|@=+rm$W=&rL4QpPUc`?O{fIskB zL`>uj7`$dNmy+{cSMxI;^Sp|;5fHp(c%k}IZtw7|}PjKdQfN8x3n-fO&q!YXpDb)rgqLt220=U($GuXjt>IKP7#c4@-Sz;19fQ zHJ_h-fm2_b_#2mBEgIImF!O?n=K+75%&gE#g%O>s zTK1o4So3m+NniE@Qr`y6UzXMUWzpxT2h(j{VI`E?k)`VZ>) zM8jHN;SlM|Un2Fb(Ej|q+MnNizEfYRzJ6G7wSJE?FQ$07{)hTqf5(}=Q;H)`89nL zXjt>Y%nK@BKllT$OTb?TctP1Bb` z!&+aAc~Qmd27l1kE@C3D$KZ{%_M-%KgYj zG^}}{vi4KFuC`mz^EeG}jhyaO0U=v#b_Q{P;zrZ0ttwZ16x!iv`o{=jP&F;QQK!RvgZ z#%n~wnpgNS>C1OWeP!T}<)`+~Hji=YtEkX;8^^oh#hDjVyczHZ-Z+L4`5Z8KBd2P- zZZxd*`IzTbyhiW`UX6%}`7AehOE1@W6KGiT(m$enCZjT+{ooJ0E)f%Xqr05>Z2OSL z!{=A*c>(7670(0yz+1;@kjQ79!5a)}ya*cB`m#SHeVO-4eYM~Zyxk%u>YIJGQ{Ui+ zbsielyfE{EMIQJgPsBuCtHG;ylg8U{HUG@tN&0dTsc(knpW|x&xq7ry-^fcfUN;)n z`eMwBDqbV_gT5LO6ZQ2Nyoz%)-Uf=b=6RV{c#qNt{=gd-IYVBF!JE?CU&2-UOa6fJ z8CSdrwZ9hC{)V6B%;yf?kKkvXPw|ZRBUBl@5wW)C@u3?H>wISJAbsg~%X~J1KbD_} ziTRu?b?Tea@2@0W-CqeZFQ9n%em>x}h?vN0GI(Rp)9On<8rJ%9)1)u^E~zgB{=jPx zF_E`;lv7{n^EKW|nHye|d11wy0Ds^ez%Zge>o9n8$7#G28rJ#>-zR7|(OPu&%!?^r1pKl5L`>uj7`#rgw&(iUh=w)K$2_m%mC=5|_S;Yc z^2$w~*qf0&G^}~)gOtzYJ7qr0z#sH&_ekET*O||?7vtZUH-m;XFTgy%;w8Wzczq%! z>Z>z&y_aab5E|CJ?Dt4t<^rj&68wR;OTh>7J_W$>oNUM07`1RB=7%p~bc@00nAfIskBL`>vO{@tl> z?){p+6dKmNAoBu>*A4!_YZoz**JSXT8#P`f8rHmAhV*6MF7<7^LGYI0h3d=V|2g#y z>i4H3Xjt>2%nK`CE%<}J-6AIH>o9m*dVjXysy{1ym-OY^q`nmOXG5w#+kDcguU8+B zLaxT6IP+qPS4rd1E)f&;4H&#OF&F0gS&N2sK7GvdDxL@YA)o7NKcw8?jWl4{GOrsA zYhHSS@|iqe=Ccv}fmb79qQ24pb>_44JsPhO4QpP2d49z!1ApLctNyIc;5C>b6r~vtQ#?qG8R8F)ylk8z)mf;e~iTCQqO5R=S$+dYM;v zo7A^)Eb-ulcqImJNuLi+xS9_pzeV|sD_%d%2fIW}EWhEuIrBO9Y%QNDG_3RKXP!^- zy1^gnOS_1PyeflN@dk~D?+>=;Wo{#V>5$Cl4EO_Y9K(qD#N^{neIx&=@w(Bl))!=6 zK=B&EA9yt)ChBW4csqE1PVSqeFZ))h&v<{%;$NNm=1$P`rO>d}7iC^p@w&ku%TL5a zeH{jG?5Wcr*W6$CqhZY}+)DcLZ;|>!;19e85fgcvTTXpD_&kp|^J0o;e4fXE!K)U1 zIqUPFVXe={Jg?#{yi4SB8eXV=mK(e!eSJIOYJHm?r+g;gEc1!?DDuTAvja{h^iH81&Jl+U>0 zdB7j_sroYf7iT_~yqdlVG^}}k=J^z_AN+yWC1Rq!DudVQ*LaO+So1Ptq%Ykf^H~P| zz}r^ym&pyMzPUDymqNpu7i3;Q@w&kucT5E1^&ioAct6{om%EwtW%o*bE8T)O z4=>bzF8mG%CD5?e7iC^p@gm?4`dUOx)YoC~n#EoM*Uw5cta*h|(w9F+>f3m= z;4Q-o>D&C1Q(v$68}mYFSo7k{iz!|u@pdWRfWfQSgZ~TjHeTk2=VP8%@n*mu@;Q!S zX#dmXy;A4lg9z68(rL|6}A+tbJuZ(Xi$PnCDkKV?AAG@S0E8 z^i`r^&C7nB^ktf*zKuGnFYrS8W*>Fx8+lTjpLL^Q%?mRxsCbRw5BaPSF|j?g8obWu zY5E$`u;%4cq%U{2)K>=nz}tSV)VKOar@qej>O3^8c`@cii#+g0UPSVG4Bpzdmd_b9 zta)DM6`G{J1o#85PsGH0mKeM?y}zz?)n6ySM)`~@o`?GD_4B2^;YXbLYDzEsUxLgF zDBcX!mvIau`j;kyH>IyP6Ry^qxv!AE>>H)N2(33;)OvIAVME`hRzEiiZt7>0d11wy z0e>jJaSS8$br`(*fR@iPG_31O;U?0TZ8@|c@^`k3ccyb16J-T@3l(%!^L+w(t~vF!iCpveUhAs-!psXQo`=eBU9>UewHmyN|JCZt#uIMpOa1`q%e`Le zn*o2&H;!RMeOZ0bsc)`CE58&P*5wytUR3eA!5?_-A|~qVF?fUeeq96&Yo3>Rg|no- zTJQ(nZnfSlF?ehLqvdl34QpQVOO(&J;w8Wzczq%!>Kk5l=5y*4EuRTAta*Os`4le# z{=jPyF_Bkg@G8W!O>%yHwi{mN2GW=QcbQN8d=B7^V;E6iCi6~xZU6dyL6CU?#WVH` znhf6D|7qoyLc=hqVC_qx#+XI@P4Ccqzf2QZAN zF9QazVjuoZ>U+Bzo{xE6#hU?t)Q4ec{4;p<`g#nXm$5Iu^!1d_n)4;t3IF!O?nxA0QIn}!$4XRFCOPv@aw&C4fAU+%S1-vZ5dr`3FS z^|yw;<8>Yy*1Q<=qD3CfC#KbWqQ~Uz)p=-G^SsO})GK}PFe#MZw0Ncz%df=X)$8@8 z%vF6!eu45CSG<)f!JCH{D!<_eocWv*b(iaB0u5_@e&+cU58D&yYY{O~UzNez!Sl44 z1nEnkF7r9_Cc!H{PdoV=r@po(t^8`yu+|r3UO@3Y;1BxNgEF5@2CrI-9h^@O8rHnr z=Sg3-PU>4|6})M9q4Hb2->Gj0_rs&i3oD*+KfJ@>%?a(SFNKD+zQX57Up^r9b%Q_T zvt8wLbJ?k{SF8=07ed3D7iV5f@hZU|c)LVQte*o0ul^X!HS@~Qu;%%g=T*FwU4l0c zFI0Zz2Cw-q+I*=J4QpQdI?8AAH8P(Y8)81O3@^kR{k1cnb1&EQrO>eE1(@eoyl(Kv z@)I#JpLGVWT3;V|(6HuZuO)q%TB&b=)<@H7eKdQ-sc%W&Kbvs1e->t5Q1SX{|Ex>I zM18FWZwH^BoWF+jSML?^Ppj!&lvNfins6_QGV0#LiMG`;EjpB zJZ=yDXjt>S%qzS~>I;EC)RzVk6Z2VO@S0zt>8nJ;nwPwq@)=jWjZ+108D2==@RBp1 zz50A9Um|E&mtXF)q%V7#)Q8U>LOyq^`RC%IQ{UXidPH%m`@QCc>@No^UoTu5e;jek9l6jD+7PvZT|^lBCp)wE&Wa7O`u`TOMiy) znLJhIvmg9{*Ck>iZ}gYWeAb7st;q2m4QpP2d49!Pd8??O^YB9Y>I`0~&co~NdD%hI zm#LBZCWv=H@n#pC`lkM>eYuxQ zecj*>ymk>2d8@y0>Ki;t<3-T0=Eay7RlHj82i|TG6L~!bulEmHK0|0&^SsO}?2-B^ z!5?_LL`>wB7`#%^R=9qyxZD36pnS#^Z-Vwe4;1%5f9}lZ(!-j*2{f$r`I+ZayngTp zeO)3Z>Z>w%_2S-=Y=5rqS7qX)Fa0u^&lQ+218-i;p^-QFGpD{S{rQ3gG_3UnnHNyJ z6!-&gNW?^5lff(1$A=YH^(FUd(wD84`X;Ep98mRT@m@opKHlPfjlI4o^TLXkqVaY} zjkg^JZ>mIVe+e|K^I7O8efd+Qz6kh3K3hag%;)A$o%-5N(Rj6JSo7k{iz%K5{DHS# zg)xygVDOst`E{kM`L&OEUd7v>`Sr4zUzZ!aQhj~2f(sjKed$k8K9f~4pA)n`I-u4^ zqxU%Txr6z2fO&q!Gv?QI25(7UKTNnl%6q%U`})HhQp^c6qPYV{{heM_&^+QS4I*7{=1 ziz;3}_+vgrOw`w7@G2Iyd~W32 zSG)=E2i^g7|91GWGoPiu*YvIY&JEAcJYSIq{>Z~HLSL1^tM+Q;=Rw0-U*_YaFa1)P z&xL;z&hOfd2m=bZXR^!nM2hBYtBys+Xmfv$7`zI7e8B$Qo>%B2efbwl zeKRyZjH~fs^KPfUwmL1JwP;xDi!(2#cpmTvee2>G9@IBr@Ty;+@jPf)^L)(nD&9f` z)lYb#`dM!9I%_muBO2Dc^v5Wl$&+M0%fKJ&i`tJIopt83;w2hyRh22u02mFDzuI3XZ25)3R<8`B9%}e%DKI4kl2>!sU5iv2J z!!yo&Zqf4^WwF}5*BrNi##7n7*W9)D(@%KHJf2v^-fLR^ws#=AXYVWS+B+}BW^dzNSOd7mo11so5RCg3+Wgj0*4r@!BROy8gAceOu}xs3FsUnuh#qWy^m zwLdZWW2e40y+5mU)t?2K7f?Lx53&4If7WF1O7-_w;rpZP%P-eM`m!fTeG~M2>jCwA z>*9}``Ub_=$n7D5hIM_3GB2!nwcro>c8i!;Upfq4v(V1GN;Ir_g&66}zd-84&ocww zGTz1){paQno%$*cYwcmLgkb0$1NAfzdN1z-1?)YZvhQ!eF5hA6)y$;kk26z6YEQz z!R!5{#tWfg&C7O^zRdAbUnTehZ9IV(`}J{sWcY z3>r4$(G4G>RNnF#D!&`R@la_${O0nzaatwv>E*XZ{TcJnu;J}t-Wieyj=+Q8%scg; z@wRAu=kXQ|8{WYWlD@-(Jl=vMjJNQcd3SvOpXl3qzE*w&1ggCiCjW-?%;C`-kj# zQRameZw20X1p4OH`;R&d-qx(vpDmzat*`I_(wBdp)RzK(%%_Nn`P}@TQ{Pynmd}1P zta)+f#S{YKgY(5K(;h`74n5oTUc@oMRQ$8L4Mqt)Qe>FqD&s{Q5PPx^AlN`2kn z5Bl0gOw_kJ>D1S&mtV+L`NfzQRlG_nzg?>QdJJBvxEI3pW#uJq+Jl#Qh380p6W|Z} z4qzBD|12?hYcIsVF>eM9>-LbmnDQA{yaf1TeGxG+pTikvK1cNRZMUoSt)F>5#cQPX zZH%?X zfIskBL`>AzWbo#Gr}0u~So3n7q%XTm>gxu7;I)gG$XlFn>Z>?Gt1la_*0)jSg%xjx z*0B~Gz>f6{Q+WRuRQ2EV% z%c-yPQ7xa1Xjtbn%)FrDm4QFxb6c%%TMb^RzCW?zYJVdCUecEdG z*LDZ~O^y#}SnEqhD4%h~^MF6_)~6+J_?ymre(NhQEAl>zhBeR6JfGsd1N?#aMiEnt ze+F-f`WIUNO`!42>%Tn@AAHZ|Q+p4WUJKXb4;w}%JmUF zk3zgMG;Db15bsfV@Pv8ma7es+@FelhHhC2~Zv!7(vEdzgx6pTQkvFe+w-$N#jT`zZ zet~7n`#l>!x8z;SJh-0q&BGz-yA@B8zKcv=X-4C%eAklq_`8I@JK=ifO~WDaZp4$s zd+ZyAzL95RUnlpo(6GtpRm3|Fu4f*;Cx>{a;z{CNY4SShc}%J=jcC~LP9WY%a6R*O z!y)mWfTwAhcf83Pyi3bx1PvSBEf

    o(0!4uK^B;cOsr7eK+4?uK zGl+LDT+h6DI3(V!c#?Rho4hs}|A<$Mh7IrVJB7Yu;ddlU~K!hC|}rk0(jr`6h4dXpPs8h7Iqb3xvK4;d<8B4u`}$6HgNF!7)Q$ z^?z&i#e;?oZ$I%KSX1?784ihe2c9I}WhRe5pMlCxd_IE>?`Yy(3L77+uL}-|cP^eJ z-ccs6R6M)I?R{n2Qr`{j)W5*>%$tTo;@yZRiFf_YMn1Rxq~&t~4I6!Xh<6)Y&%ALs zB;M6{l6a?>yg6**vOi0qVZ%H44x#S~Y})Vx<6j>f67K>$Nxa)f4Sj>((RdLwY=XK)DWCVH4SjR42VBf28aDbaCf*frJ?ra(L(V6j zBz+f|ywXQB-U{9yv*A7dcB-FnJ@cmFka#!ZN#Z^Bbwl5j-e2Q>h86EB;#~^YGp`E{ ziFYoZB;J)KZ;76lqV_(4hK;@xh<7bq&pdoaig=gcN#Y%E^6F{6OT02PY4xedE;=%`NWgNyUgTG(et~+ zOQ2!HJDPZx!u8CD$1KSsQ(Oh<7hs&%Aj!B;Kufl6a?>yk2@fgm@t|Y2)67Lv1 zNxa){GW0e7Sj%T68aBLhi1*}=R6e)ika+jwN#dPt@&>aSFM@^*??_1KI}5I7eGPC( zyc6*x@$UPwp|6_m$5B2#XxQ*BCf)-@-m>D|QRH1@@}|VS32yHRG;DZ}zg6hF6uV0J zf%!`p9Fo3s@g(Vc>_$UhuLlrvz7#^khIbY5PJ`>2R|AJ!U+^UHt~7a_-_**l5e*yO z3B)@Iu4mqEI3(T^x2p0x-sCOm^Z5ze`TQ+!5&66pu4mp591`ymJW2X)K49c?i=OwU z`m%tAjlMI8cN<*Kym2@r-qm=Lc&D4ZYAiBYejYSzc!%FC^gZyD;w{4=@$SHr#Jl@T zhQ2v{K9RDWPwXS!6>vT4>w`n$U4SQvcfQH%#35GdYed6F-$UmKeJA123O~>ucEcg@ zp7@L6J$QqmZ|aD~OQ2!H+fTep;d}E}0KN>c? zJ;b{Zu4i6591`zLJW0G$OkRa}7LNPRjfX6G2hSDy?uF}_HxGxzyA@9o@AeTxU)xVK zeYI%V=sSma$HMi@+XaWjd*rapq!@HPyxD^OLP(N$nka>8Lco&&Get#qNpW^+EHoV98QvLjc(l-r<#Jdqs z67R8LLtit@_LaU$G;DZR5%0-jd*4>={r+NmztZHb>AV?R-U-CJ39jdS9)LsAcR8LU zeaD-;3ZGVf8~9+AjlNsXq4ogRGjARaiFYfWB;L(QBcCJlT0Xncu;HCSyz}6C=C!~f z@lM5)#5>*ORb!Qu_0xlf4e#)qguVxg`-97BfAEgt{@~qTF!XJGThq6Ih7E5Y@ot0b zS>HGulD@0)B>H{q>E-{`xYL*ZC)n*NBFVzN1+mTrc&(A?t&8qjNrwGI{)Y5Y)ej&x5ex z-Eg+Z=e2)RydgLw-X(aF%J2HmoB0&)y^{N_w)^vYh<9gke|}o+&)|CrqHnAokP4UaHxYHsGogsNW2U1 zB=OERdA;A)cp)@wct?Ul-)V3?^J?Ibc*o#L;@x+hp|4Y)UpLy$uP-LvNpL;$cEcg@ zo_I>}E;4!5Q<^>x8aDbKf1}X%!0k%kG8_``4m?Tv9=q1iH~7CAFM@^*?<(S*1=q8_ z1~??%iFlHDSDL)F`!(JS8aBKWh<6iQ&%6V0NW9DOB=L?nd1GJIc>QSD@NQ`o`MeOW zXI?uT67NhrNxYk{G4i?gJ&iYmh7Iow;@t$-OMP(2`tT(2PB(dT6B;jth7IrV8-%_q z;Cklu!6ET3z>~zg`)Whq$k#PqHySp)eZ)Htu4i5g91`zTJW0IsP2Lt(NjbhRpkc#% z=s$$M+psFa5A-kNa7etX@g(sc95VE6iO(|O{(1oo8{U5A;n2f8IAk84B;I8vZ$#f; z>bBiqI+}Rr!S&2*fkVzGo+RE;Ca?5oT0U3qwbXaR>qS2AgzK3%4Tr?L5l<5D`p+8q zkd1%=1j{LjO_hhj>Y^(Ngf3ZE>_ZdT9#q}C* zW7v{+G4bw&>$$$n!y)Or6;G1Bi%i}U4hgcoPoQC=@9{H*zH4zPfFEe@LvTpEOYkJ| z9vd|DEqzbtp<%aBr!rzZXX~Bpcq*#5=ag+ogDqX!k!&UOil=+Cv!{HoP0^ zg}z6N_gnEhm`L9}Mc(!ODxFf_4&J}x2PpP;zGYc{#`|}wia@TPo%qO|Y!8iSSl5@# z>BLL_TJp-kAL`4tdcVTtr<6eX{Hy+XEoH7g&nw8hfa0yt=e5kM&ueKicx&aFz8N&E z_2ueFU-pR9mjHjz*C%3PdszIWQ{NzNS;%}w(6Hu3nHN?(d_EC)yG2aobr`&6e8fTW zD$%g!6#}F$|0}6)<2b=vh8Jppo1bv%>($FI=iNhSSm!hS8p>yKN#?T>{868XiM-J(ocWv+ zxn^Dp4QpP2d49#~rt)i7TnT&n`?+`U`GjGH2Je&kG(MlOwTR{ZWem6MWqasH!#bb&SCh!xqU43ZAIh&m z#KiJjyoIt1RDSgN1~X__>+>?Nkdyin;19e$ z5fgbO25$%NS5Ll*@)=h=;^E1z2%nK`C1pI;5B4Q%1!{C)t zd!YUdJ0z?A?D1ESw4=|a{_LRW&r-$y?1_&mVUGTc_7hki8rJ&a42}Il<}(8Rs87U1 zeFH@-_b)qW?>^>v70+nzh-0}RecFC&#!nZ zR6plc{j4*1JNQ1{Yz^tl{7mXIzK?hIGN-;Nc(;aXe+e|K>r0q z!7J5yEC1$(mw!3w%iSyWO@Ke}4qzDZ{=n59r@k$HzO>+Kz7%6#RPjo#~3-I1K<#RaZ z%;yfq2S4+Cif4=uRR(Vd^)vG_(wDwR<mfY*#Ft*GswJv;?+|Bxm)$0 zO$Kl4ajm{ApkZBpxoXmvotOIX`z)Zo42hUnUlzNa`by#5J*vI0{LKw7%Dk}R;r(`O ze;9_||8MX*bzUPH*7^#kkiPs+q`orn2i~^gZGPCPZ%Hq|30LJ8XI@P4`l^r;5EbUj4HoMG_3QPuA+P<56gUR(ENH?&96s4;qHafSB8eQzO0}0We!Pw`1$BiU*=W+Ir~AUzD~XUHM(kl zVde!DuZ-H?_FrXtXf=3ko0`5_G_3XIPbPi2IjPSB{-AGNJX4G9ef3hOz8&yl%!~eW zUXQ_B)7v|KU#Y!5FY^j_OMMAy?|mYs82=33lFplO#YuP=EXP!^-JhVPqSD&X)W$=3S`Vw+gUotNxed$@5&q}Hf1& zFUY)r;>{3mT=AL=UbWE9{fh?;>-La)3F*sbrM?B~ucuXiz1Zc{x2E?mGp_oVDD%RK zmjHige|;h*=Ci}#?PUCWG3m?SCH0x(-}?=HBG;Tx%)fm;_I^o>~YCLL0!@7P380w!<gBhB z9lJFz`yvvV`LX0pfIsjKsPSR;eM%0DQ7xbN zc{%p_@+XqM+>fNbl|KsJJiPGwuhXe-is~othoE7d&lvNfiWdQY(AOejqP`x3w}bx0 z%e=x5r9Pv7DKU7}qOX(vCmPoJlDjFNamB;uu|VIn>d%HRa^`d7Pnc`wb)#X;^E1z< zc=&uU@M=U%%x9IskkU8V;ncUJx4#KAtn~$%7f`%@ z@CSWeA|~oeFnFa~T76l;$%S=33ojsj`8%Y(3GfGf2gDo&^=-b_sc#40XBTH)O!18Gvl}pY zYoc$JC1dy>RW;T7kKkR1M+6y}UOT@(TD=~Q04*^1sM;u1tO`HU;x z0=yL%>nFVM{^z@#`P|a`Gpx_{JU{b%ikG7HFr?Z;mBH)P$A^%s@gehk(wCl+`K+Yz zVV4>oCNFgA8xh*&_>P8kK7-5)C|)Dwvqt5!$>7b2xiIrmXjt=dWuz~AyVTbW{!o7H zYJR==PN%*loj2i%7iC^p@%o9^rFb0%Z|h;KORR4J4QqXc=aIhrq|}!Jf6zB1Vq$yP zyuhiCKhK2bOW1zwd2!~&6fZ>WuR*oH0fRTUs_9FiVXe={Jg?$)gFlv^h>7~j4c-{N zznb--Va-cFm-3m+$b5#tA9xKSCh|txo%vi6YYQ&F2{f#E0p|G?ubf1pzmZ66ZH)kytY4UnxSpS{-35pA{OKdG8st(uzKE00pVt3D!B#`xAdOGdzeLcm(YK#?XTkN%Yk))Iorot%-(@DRSI=k2HlIfm z?=-lcc{OlIykqbr@s2Wi{C(V{PkbM@jlLU>ruqUC3FhIPf_RtUN#b1}HuBji`X27D zaeil&&ppID35yDTu>9bV%dhx(nx~k&LF%u${Lrw`cko$4-&t@y^BUlg%MVYIzT4ks z=&OhSMvX^hXxQ-1A>N}!-n!!5Q{y2^}!*RAD*Oq9%b_C zp|z-dmZ4$8yTK#!`RJ13t-~Sl?!lA9yZ%3od^U@F6}%p-M8kT1?FXoM|I^KKKEDBP zC5QR-GQ1G5stDxy{G8YulKUfQSo1PZ6$CFmDtX=D54?5}6X)}j=PH5Bx(llrg#zX2VRSaDb{}mZwL3sea!PJ9)4dB@QU}x%MD)XI_8?oZw2Qs*80*H{0_9%<~s{wEuIUxc_7D#;AVMc+`)^Gxulk{-^&X zX-D9zI&uGHA2=Q=#pM-O%zNIXggt#fWK7gu&L{3K*y{^3H25`{&k(hT2Gt%~i&*Yo z`1?Akev0qwv@XB=6C^VCRmn@hrU8^+A8tF)^WV)%Ci8Z1zbwYQsNxy-%X&;6jklz) z77c5CUgj0PBK6^X8T8>^1?ej>dHQ~Kt*ia)LBKGG3eAcsOyWk(idf3Sn+DXA9(m# zbUgkUyn5WilIyWDG;I2_$Nx&wj)t!W#s2Iem;)XvT`0~3pLnAZ_VoU&8m>|K^q^s# z&p1P4H_Ci2z*HXeO~VW68z^GAe<{T+C0TweuFB8HJg?$SQ28CeFrq&zH+W0Bz6n?Q z(p!|&L#AN)aImxw9Gzebf-*2kZJO#PYo{A25U2AJnpJY3HKZ%EabI)hg&{wC*x zXjt>IkCDF2m!!T0YJbzJ{ms6?sc%X2t<0N1! z&C73+zT6E`-v%rKfwzpyNE-kC!>O-c%xzd-nXCCyjCoPTTY(7$@bI&AiPvNBs;Rw` zJ`Wn!`n=35d{OGd1`oVxRX5)`~~+WN#F46o%w7QeF5jQ z5)Es8e&+cUZv(b=vHakLcvS|E?>|sJ#r+3sUgj^PFFhjjIYaexT-DFXvz+?oXgy85 z6dKmNAoBu>*A4!luU*8%{-w#_^@_U7`3#|9&C6|&zU=ieKgU{M`cIV4 zWK!m{76xz7w_A+iV*G1x=CfY371@8HVa*FL&#!oRKOcDW#qrPJjV)r`WnMoT*1YWh zkiN_pq`naN1Fu2EM18ZbbLty}-9yETpkd7mGcTxkwcwBW6fu$4YVf9XeF<0k@{f|f zTte!LkiHhBZ}kkPzNz~(eF-$I^~IPME%Lx0^tFhXsISN1_3HXC|MomD^9rAr`YK7^ zE~T%;;8iba`aEb@>r4KT@)=jW1=2UI^bNn(na`bk|2Ok|iiiC#4o`-`AqozEci0*Y5l`P{AY*<|oK_5Rb{_>fyC zec9`zK4W}XJl(0UTJ)`~&x3}wz9{p;inl=H?X((iI}F~OJ|3l9jYoxtNnie2sjr*H zqjohOZPq#Ujs09}5B+FZ>x(llrg$On$Np2q#P&X5@OJQh$3EtH70>v-<8qUyxAzTK z^)vkt`^9M3tl!UI)HzR;iuL>B(1XF}F~M)1n4MV! zJ$?P&`AboLwEx+Nh7IrVf0MK$e<$7v;0W)^h2PA(=QT>$(|M)(d~n6p{3XoL;MFpp z6EuIpdx13nY%OAWJw5hQp^xS-{b*R%&-@yR%neCi2>h{rikMhGS8J6_xqjE{%Yv)% zA;!F@;-$bJctawl82=334*C}_^9rAp`i%ai#NZ9;{aM6Sf0lfZ@)=jWTJQ&byG2aY zH~ea6K9}h8mZ|(E(6BB)Kl6Nw*AM={>k=`MS7q?pbba{$+4C~1q%VDy%qRBuz*|@S z_2jFZ`s#C9{VYSnT3?WP0mWN^1_-=)Y{p`LqRHT`!MA~^`R5E8*1TMv^kqLI^(DX` zczq%!=5z6tPJK&4JCA=8Xjt>2%nK`CKlo$$seE=Ayk;?XV;;`u?0JPhkiPt&)VBfU z0lZ~VMyPM|G^f5T>aVGO;(X4Y7iV5f@lxOqyde=2c>@NoT9mDvPoQC)PapHVinp*J zc+>Dg^`+e4jflT7uNw_(UV4S{nY>cwvypf;iZ}WSXFfaid^WnuXMlNr#VezHZi_mB z`K&W|BYJ<`?W(`d{+{$@29!SPuWM9)J$tHC-_|cM*PPDE0v(Cfo?e)c&7gf9s>d%%{f7WC0D)jcS z;i`UmnOFF<)Hg%*b6nNW5`#A~ry^cqIrUZOybV{pDD%RK zH$%K}#p^J5Z9+TuFSTe`=d*A>>C1mo>hn-O*MBVYxmoShSE{$a6<6&q&b*l7O;Gzg zpxWPn!K={qZQws;``*zjhH5>q}1&%j?aNdo^A+8rD27 z^9q+sUL*JeuSUc~UWvi`;qlu0oxX&IH81%qN@`s3-Vgr3dz*-fyy25oT3O#5t^cUL zq|kWg^4s(99zelEyH~*V^7&Rcw7;$39&ru6~zg`Nc*) zr>Os=d?wJa;hjOeOW}If*9C`Met432r<=Sb8sE9SqhZ54{7Y)@a6R*e;E;Hi;7Q`$ zeUhPXa8}D_1PvSBKH{AP*E6pH4vBXno+RG+|A2>0PCgG7LBodk(1Or+7B)5bf%eb< zhs?v1#Cz~XhQ28%UByeFVZ+-`yi2ia5U&dkx%}`X@h&rYBhcF^UN;&xyrYSC9(I+) zYk@=Jor))kca+I%gWgW@YSFOa-S7*M&ttKxB;GDKB;F&%_ILe>Mm~G73CQvbp<%<@ zL%h?l>JzU94vBXRo+N#zn7lFUG9?cuSXR7)KNtEg#IBNf?QlrEGw~$xZr^R_8`Q_6 zi0ycE4)M-{>zUU8hr~M(PZIC!f55{bUFwUVVUy1zKcn`5Lpl6ldw@gc;Ys4%_d-M8 z)}+Q;K*NT2G4XDL>zOwWhs3)YPZIAUllQO8cVYaySLnN<*dF>+d$^$39v(Zv&^Pu2 zOuZNYt}l3!^j&H4rVeVn1R6HH6Nq;yT+h5NI3(V=c#?R>o4iha zKdVvS&-(Neo-&Uo_QLb7dE?*q4rKSVyy7Q&ufxN?y>$P}TCVxY!|9*$`tQSXevSM4 zFyGx)`&pwePzmMv?mz#$zGvhGnCDkK7gf9z_=CP75mT)H3|@0y<5i+z&GRy^aH-U{@dv?M zh8NOTV)DdZ0_&^P_a~mQz9fIb>%SuJC&Ysn;tiKO^EswJkAlyW*z5B%&!>1HdLE@g zJ&#gl@J5c{|HAt4`3HMm<}m3?e?aE55&W@!ikMh_lRl@uYQ2B)xawbm%nK;q0=0)} z)gGD*UMKYCN?#)y*7YTKi1cMIk^0KOAM|bGur2O4E@1H+U^o;c-%Dk}R8P5}S zm^@fLDSZ=YSnDgyk-mJF)YlLGps!2B#PZuLbLwmU*V{v!c`?P?aJGj5gEykL2YlYw zUZ0P7Ud3yq_E4kRL%G45)Az6Oev>^feK+MZ`F@$tZt#bEwu_jU&(Y^O^EoB@0&af^ zG_1=nz&yX=MJS&wA|~?c4BiOM=V^TCM#Gwyoh5yli>1Cs@W=KpVj^$$xlVnZF#A^Z zvk?tzUYL17#VZ4UY=2@5M_#MJYhKlOm1tP=@>$ZCd!N*|0pknsmc^KZyw&5J`s#Ik z`2X4SV$6#w-UGLz3U)kp~_hZtR z?U4GqX@1tO=4Xq?IQ3QFmbEOu4Sj$9na4log%xjx_UFgd{(OhQ8`0;3-LB??g&&c= zd{pXdr1oB;+WY1%r@qo(Yx-7P&6ncLiz(g&&6f_S`O<*FTl=2In?b|6J@}aCRlEfF zLwo2GF|j?A8@#sPYdn1ar9ChGL&|6Jy)vI3@CV-d?=U9vMxX7>=b+He<6p#8J_F42 zD_$+-bGOQ8ox$tX^BHoL&+MI~FB6gaDk-14R6b{qcIxZZ@85>dur9wa^MXYl_(MK- ziI|wrR)g1xTUfIF;qw;uy!;PHU+z6pUm5rVZ(EFU$Xk7uQ(wK_UzfS+uVc)MD&7j* zJOSRkxQBwg9+Ri{*JZByYcKN(@0R-Tc?jgG{<_5AmHtZ0=ZgNk)HC*H$vY^YamAaU z=cNv)=cR^Ao%!5Bf9+?UPw|ZYy2{}3=gHB0P<)=8b^XjtlfLx3WIplzrdU7Wh1&b% zQBHkpVs69jeFhC{UXXbK#Y@n9sZY(9nhajGUOzpq>Sylzq%V7+)VDzOb6VBU#S*8! zsqbp_C4q*uz9{p;iWdQY$Y+a)iS41o;PL$`DnD_*%9>X=Nc!^cRQll71MsHdh01T! z>(uwp-~aH8?IF&*nBtl5e=vAE=s$hT^D17Yv;QnNc+L8FROxCwN`H^?nY=*ea|1dL z$mg=?L$Lft|IL|Cz8}u}b*{#T0Q3Bcw?g|9^YB9DS7-1>GFtuYM#H+kWT!}9rd{f5 z1b@(1BVwYyS&viS4(7XI<^>hcnD4e4ydBKv^S6_}+&iQ`V?Mw7RN<+oKmXGC9W9@Y zXjtbn#=NNFm4QFxbNkyEQ;dHGZwZGyIlfPzVa@Y0udq+*>j!_}b%~hBD=~QW`g*0z z)p{j4N%@Q`-U_Y%=Ea&4dBcBq=5tPHm(MSu0rxxpe_hKdc0Do*bk2I z{1W`;M4nm%J-z&vbl!w5?_h?c9fq&sMBY_`*Ine@@qbF#(|OHPTKQF?VO@Sfh6dg) z%Wva$>R;f6>Pu4*%lB8RZ`F7nG^}~K?~=%Do8&Ew3*I!m5O48GC6jquIgPh~hBYtB zys+Y>z#r=8kcf%(rNiJY3GFlYEa4L)M4uZ+m@V<^>fm0{)m!5fk&-YViK~^WOizPE_2#&3}vZ z<=!Us8P9vK{>`axPM^=GT+QcW%!?{sH_hkU)qK9k;0=BQQYgp22pZP)#ml@xNb0Kv zf5_)<5fk%SV(^x3(RdSRSo4y%Q9k2}*AM>K{zOdV4L|P8XT@QSw}BIJYo4EZKE<1% z`TV$=&sQ0|C9#%~{U;jMyv#RAU;3>wpZ&Bx>Qd{Y$-g@Fwdw1zT373_AoBu>hwC}W z=epuG8N4mAx6S$%(6H8*yOs21-y-#;z#n)+A|{sK;+9iislNVOnQ+64GB2!n6W|ZL z0~kik2RjTNKmS7GLkcJU*7^$Lq%Z$wsSlqg175pYKWskc)VDT<{|o1H1`TUooOvYlP+IyIJLB%uLd#k~#(8r^Vtebr1|BLkH&XxLRz#sF8VMIPx|KilQ zq__78G_31qjCoPT>j!_}b%~f*KYI)wKQBz}T|6&r&GRy^&?5Ck=zeO8+TSfPcx`j2 zo!eh68rHnz809mrcpmTved~%hyy48}oaoD$mqNpu=VzWz@w&kucC2uY_051k@WwHW(6{&}r@lG8f5HC2USE`XVa3D#9?MVlFC7N2IgS4d z*Oy8(tn*n&lfL|$q`r->3*IukkiO0Taq64;n#N0@VaZ=5Q;O!DIkvIECr@kG` zm%_{oDxNW4YBhLc`hFemm)h&ge~t9znxwuE_+vgrOw_mfh*RI#m$ZELqhX!T81te< z9{3|q#6(_?!5jIS#_LAIn&)L+At?1VfwB7`$HbtRMF;AvCOc$*)pAoSM??H71Eb}qs(W7>Pw5N zFOv^D^=*l@4Ciyf)%qyNyny1RXni!K)<;bSulb8weW^sly8LoCk-luB)VDDr%5NE7 zc>H_F(5KG_7hKH;qs$8{UW(>}Lux+QVer~+(Dc=!VXd$5Wzv^_gVg5%f2g19B4=1X zH~-tIZ|=V|UJ4CsUYvO`#p?!t;I)gG$Qv+tWBPc6`wR9wAM?D57ozc~L5)Y{25$%V z$I>@aK9m0;^J&~48(nkea|h#XfO&q!GsfFGgV*~Vt^7i0SeIY+0O`xTUh1m^f9%gh zOf0|I2c7!HzO3>3(Xi%)nHN;N5cmVHLBvE}tHEm?)p(U?So88y?Iq$mTZvOtnQ+uyFZVtw*v#$&OVf}S5E5Tbnd_QDNUtjdQT3>|u z{|T!9Cq(Ou1`$)}FaAHwYx|0(zZMO9{Wq}wf0z0_;1BxO)%s#JukhkQ=M z3+bC&aq4RmYY*ntqG8PoGB2Qb9$L?=tM<@j@T&Ft;&D}9a@Ui-?CX@iFOWWX;qm|X zPJMG?FO&79(6H7QWnNhEy1^gor-+I5v%}zRiMfHCPoZJWD-4sq{25Z8G2htyouTjZ zs9owq!2VRYciM%?4x22Dd3$Dh; z>=#I1re5kxfj{tuL`>w(KH$_hrO)>huIBq;<^>fmLi7C=HQ#SFd7|&(`jSAyI-mIj z>C2ri_2K#p+WAL{0{h$R``$1mj73!qE z6!>HLiI`Y^B?fP7Qmdc+Xjtbn`FYA`T=7ES54;8u6M4h;JM+1N^_rh~KE*TEYgGns zO04B%eL=%oU*>b9FCCEijL`b9MXe7fm!0~?#9WGb{b*S8g3JpjUI_d#pK5;AWbl^s z`Pqc4`C0Bd(wBXW)Ynh*vo1A1Tl}@5Z&pXqdpN6^^N|@na^f@Kd;i&eqMlie#P5>@(13s zs1wMmGk9wWP2UU}*7~wnlfKNWq`n0B1FuiSMBeO@Q(xzmf=8dX(};%6^Njl#b#a=W zFFXMp50!f0H%~k-D1x5;eBlo6XXS@TU+$GspK(8H^**P*YJEKNxEhaQ%!?}C!Z$@e zr{RU>*F6Sr>^hN8x}VjLhIRRQnO8VX>I;EClwX60iRD*f@CHAl@gitg^OB#Xe8v^8 z7W{#?Tf{`(@S-!HZC7i&S~RSAe&+cU&jbFzTUY%{mBHJ=eo5vk(wBaP%%`zmGMRJg z8ywg4MbNO;7i3;Q@oK>z^C@CtKAQ~Qn$DYX#mjw$^kq+#`Vz$JQ@q7rI`y^b_akdv z-H(hiFRXYT+J9PC_ai$D-rA?Me9oX@ozKD`>C4wBec%uI>=Q9DpPLI#eN)t*@$(00 zSo7k{iz!|N{DIdZVj^$A;0<1->5HIY&GRwOt9Z5GkM%{wL|(bU8~KFB>qf(xm%ftn znS8m-XCwFnuSUc~-smr!`J5Ab2|OQ6p<&GnFwd`e-QW+rb`cYKbp~(klbXI6G^}~q z0n(S*BlRV~A9#HtCh}%~Zs?0^yc8PNyfE{Eiq{SPs87U1UaP_D9MX7=Xjt>|anhH2 znbcPX{=nP*EXG9M>d&0|mc-w<{3g(_=Eay7RlI)i2VR%r^%%UdeobFL8rD27^9t2c zUkLnx*C1k|z7m61{W*>2LBpDt{50h=u6PSH-cGCWcKBXrK6}OAIG;E^+w=U)^C?~> z@pdU*mBHJ=`XSR#`qHP!d>ZSA$)7s)jZyof`Cva9HuJ%A7`5+9G#}gtj`024@S7{< zxkb>^=Yxa#{g;TV`!Bgqk-lt|)K^RQUv{heFN^m$^)>75uhLcfi!v{)cpKCnmQ{P` zFnCLP|2g5R|15lx^yU3hUqAJqU8?`woOkN$9MsxFBO2E2A%cEz#n)AFpTKW$_-vG)lVAVLugp*OMim$nLJtMvl9G)w@bvt{$=zh z&U{wr{n>`A`AdL#e#OK25Aep-{H4y|HH*5${Yxbp*7~wnkiJZ%)VD$NiDfmPm_6*& zH>l4iBCh5WVde!Dua@Q$yVZQ6)#T~>$q`rk$@!0yzT8WtzFOK(-mUhNR}VS$_0s(n z>d!)G*z{-n8Fke#^=Es)@la_Q{N{>zc@gyV{%lNNkM+A+k9iqdc!|^(qV-sVT91_! zv3!4XNpBAmuG&NLa>{31@vy&#`q`!0!|rjW#A9IZ8cxo%sTar>HR0pSMBx1nHN*M5cmVHLBvFT0|swIZ-3pc z+MkbkUd6)+6Yy$O`ztqi&3b#Nbk!cxAEkUIPn7xGp!Tq=+QaBw&V2TYv0u)2(Xg&B z0p|G?uM+%0-!3(us55wN`uwcc)%+~mOZqaqr9Kb%18-fG-|UQ2Uxk=!u)Ymf?Jvx{ zpyJI?`x{s7uhrn~V7$#=M*4Cul=_VEcJ;@GKK=O+e7?iJ{9??DD&7p;?-*D2J9#p52f;!YiN8w8XOOm z;&h2YH~vT^^6BGysXm`yakW41XQ)r8nM8-JMGlhtIy9uuI6W9<^>h6lICZ-L`>wh z8oW87o$HIc{nq>kNnh^yQlGKky83;mzG@mDsQ>h!VO>9C%!?}C0<;x2yG0ka+>c zYozs2janZy8N4Yyp9xp_%w0nIvd@+JuspE*R6ZA{ociYU{w(Eg{9|5N@w#dJYZo!G z{5njYzJ5r#T0a!JNMHUqsjr*X5AACGuz9;v-&C(wKNDzJ*UvcfVu}|5f6S+diTVZ% z-iVl+%K4J3`L2(7Ud3yq`EHGx@0J_9v5Pc){b*S0OTVA;nLJkJGX(yiuR+8_eWR1k zeAesxgJrJv2LsIWE8YrhJ^*iC>_H%}&fv|(G<_*Fto3CtCViRbNPXSl54?5}6M3^4 zr@rb=jpsqbnipnXQ1KQhpVKOztp;yRpI^_onqTMNNBVNdNPP*KU-zl`_3C$>`lh-x zeF-$I^~IPMRlErJV|x%WF`qpKucAZaZA9Jhyv!@?lKN)AA9&*!hSq-?@4Dl@5IN1W ze)AW8q`#k~`C}Tt5)Es;@lMKbOz}4;zsoAW0~5~tR_pT_4;t1yAM?D5xA1A9cN$*! z{)fREr16RNvm67g4Vldfa9UkO8Cv7Tfd`(J$=2qMeUz>3uxHz&S2g- z%)12~50xh1H}lT?XT0Om)o=;-rw@M}44Kbs?vkIgSF!h+7V#B7dtY(a-hmnVil3^7 zvmM<2kCyf4``{1t=j#|o)SuaJE1A6Btrl}D-aqi5@eKM-#n1EG2PpW`sRv;HjlaKW z84l_Di|)Xaggd{8lkc~hx&+IXc?mRZcn?Jd?^3v)d0lYG-YSZx8XVfa{rueKzqfz>~x~ z#pJbpMAKJ`h7IpvMCdyfu4mpZI3(U9-HLbnHw}HA@78#YXxQ-1A>K)FJ@avhIa<>PQs=JKTuzG!y)mWfYllE zPB(cYAJBN+XxQ)$UnumQ2iG&N1rCXKDxM^Lci&>@Yrat9Ria_T+ef@7->G=pa7euS z@g(uiH+j8p*LWc`YeI3(UBc#?RRnY;>^lPccEdn|cJ6YpNQo_X_dNW5F|B=L?idA;w~cp)@w^xbd) z_KJg^+t{*eP z-aV~K-$O+|m&DI~ML+Kzwe`X3P3mtH0~g-;#5>e_{ydvk{a%Atf`JR~k@HC3d&JKr zI3z#!;YsrI;eWRDb>I}M`(HfWYo43d0^}6zoB;JKZ z-cI42jweaq5jJnuygnLry*|33MfrJE@%pGou8%Ijlf=9J+m@eYwBJkX-DTJH*-6B^ zv$#H+mi5_9#r4^VHm?=CoUXqb3|#8(j+oMSGB;LJvlIrjNn=O6A zA2N8I7`X5*Cf+&le&#j7A@NSelf=8o=2c!`@YZ2#!HM@|v(k4Tyq|e%lo$58hf_4_Dpe7Bi=d1_R=KnTmCRm7ize&;|c+y#$Bk=ka)wc(>eS`8fr9q`>3PlVPCuBM@8UVW>kpEJJvOfWAlyg~A_N0q7We^|UJT2F9$!N6HxfO&;=t*;I8vAw7= zkymQ*4&(XZ)H&p5Qh3($!$UWC{Tw#y5AUzJ>kBh4D7<>Azip~a)K_Kk8cklv7ccWJ z(wF{E?dLi)6!3FN+RNlOy!u{&OKROd|Bg4(o$D{kyom6A0r|lDAr_vPP&L(}?|IqrHAs={nEl9kDVXwYLlQ-du7iV5fc=-DQZ<>e9-qPRVKF2K8sgv_V*HB{XNLM zfbix&t$5S$LiJZ+@fywg3;C+Q^jYL*>T&JoI*r#$Y7RhsV?$m)`_2B)hJmx65$1)3 zR|EOrC+>xkzFLd-M_OOg`1xZDoO#(Dq%ZUDTHlu;AL~z*iTd`Zy!vKU-{kf=>Z`xU zm=_gZC-wK8(%)Mw-lEwbCVcgW{5wfs?lG;em-@pl=?^Pk_v+*O59Fu1|KRLrf_ZV_ z&BMeFeoo8$-evLb!Yx)ke%^?IGcUlr!kX513FHIsTvaC4U#Z2LHQVQ?ulAX0BtMhF z!~GQC?UeR8H0bs7gS5UTKi`ajv%WC%g2H<~Z>#TEcfMSlz9>1EmMD(lm5_P@ixuzdfwM~oogU{*+;a#Q5vrY zWV~MZs#o7(JP#9RUQBq_^DyleZ_g);{?Lnob9*U7NnidiT3<8dL;Y=6WnzEWxX!EZ zu8R%cjTkudlFUm8?-Ixd-nptwv+RkQwPeAQo&c>&=KQvLNv{Z&}JZ_$1M^}o+x z;H)qG4)Qa#s{K3*@{_p%ji$bkFMSc_g@uQohXLM_%ty5rZ`f=voxa*j zwx0B59@hHmsl9BI_OkygUVR<7g{8;qdJLTXj4>}NymH6~eFtT{Zn1caX8le0s=xf( zNndV7>+7ZZ+a>k4a*bDCt2tiR_!_Sh%!>=JgvRSN8Lzu+p3=_ii5d)?{R}X#kk|T3 zARqi(QySF#XYn@ikwsm9^B6euQg0(alfoN?eBceJGLbhl;PtaowO!V??yJ3onHLn^ z47HbWEQaPki?@o85NUlg7&z<8yp{B&|E&ESgnZD~qsl~mlVA4gD>KK>Wnb+x%Djm1 zuzdq>MA~PA#j937V?RrL@p5O7zU;ErhxHG>=zrtHcU;a;`kLqt)>TlyqmOi?_N%KQ92F|=B^Af@fK|c7oMU{!| zrO)EEDz9~a$H18vWL`jc`1~>O*5vu&3X9i)TdcZ2)MMbxOP@}Drv6R)Sq}NYJ1F|b z`n`Vs3b)8L?|T?H^CHX(3-2?K54?}4GSSaki`PxhPjLNV;LOWzCw-YeYJDNd$NE!c zB5(iIUVZ(hpKZSUj4>}Nyc+Uzt11(DEf%lC)K~9IU;fRcFZYnvS5Ep4;$tRi{9Nht z>T6U#HqI3~G;?%k5tjdHQ)_?hnLM{lSH|gLr2^RS;0c^W`zp)Ji7v2MPbUz2)uX%9DJUmIf`+F^Yt?)Fe@Mt~&*57!^=yfE{E!doUDKI=*yzRKcNQ-7!RULjQyOzz?m0iUPO4k#M>pj28-8d>I?bOmwP?w%jUE` z91lU?lJFLKy!z@)Ub!z`oOv`P^{3`PXFm(CBYpYbYJG#m>k;0@ zXT170)z7&8u)f{vFUh=w@J5L@AiO?{*N96NeSH+dz*%3Ac>&?A!z6+AhtrH&&sSKy zMS5PJ{G7nRnU_9={7lVjKYJk`c)L`YIKGTs;q|lMBUJdcK3a{4U4J++j zf1MaO>&w2D^ksgd_0^M~+r-cPpZ4nG&ySIx>hojHycqMM!o&3s__-ZksQy|k9zPF8 zJoP-7GcSKK>C63E>zg6oxbRlGz52>bKbP^1&b$Qk;=-FC-iYwJEZ%jOnAb-bXx<^O zj{?jq{7UP4GvtGxC#W*j{AckN&Fjqx44iqXZRBTCc)gI1{Xvz9yrIi2Kh6E!Wpn@R zkov;R3kq+7_RsLMPt;zjEZ(A;8})pIfwR8MYe--EKJ8~O&9}Q`zMbsy>gzD~BkRrm z$V2LjGA|-Le4Z2hJSh8-4Hoa&=l4VMawn0#>@T%G9PfcwoZlA`UVU|ReMJ3Feg47O z&p7j9!ds^G*_>JvVS8z}c!yDcg;$fl{JmPAReu|w^6Hy4_akvX-@UygnU@e=C+$b> zl=|zlc$I2y!z% zV=-zyvHz1^eU0Y+e8}9NKct^A=0%0KPW$sqvOnKq@ixg%+FzQ-0IsJGfjZ&QN2*BL zlklfF@j=?XkOYMkaukb3;m*21Tjgr0r(YJA_S6_F`@Us~MXMIWL zC4?7(e9(uVogsaF7O%tX5B0wKLy&m^;gv%^_CM(l6&7z%{fz5x0t07#=~t4UsjT+1 z7xIC(OL$|uynep>y@sE!!N8dpVP05xe}9kS{TW`!&svMOY4-PdU;RD%3euPPxz;yI z{e3|C`~FM3`Wj6hjt}noV$6#QZ=LFINwo>=e=QboSgmci{yKfFm+~(seYqK}ub$RR z+ho18ai-9vQz`VlGw7zD@hxWN$ zm5F|qTD-&P@2QuOpGo0a{e9@8UO)Gk?WNaOdkHfyC_J3cP@gIj^;KEC>SpXK++IpB zaP~8EJn2jSRQov({TF!Cs!t2ZL44ip!=Ea1!PWqNaU%SO?HS4d&SN#=U zO8WA5YJFJ$pl?m;Z=>C-?-fmkzQ3R4M_-b83E}+$@`3k5EJn@meHL%^e1kWGfwP}M z<^_Z|2>HP4QDtKNRam@kHMVkpXvV;qmp+dCO#MXriR)KvFEU<_#l3z`sj-fEgBUpT zBFqa5uZ_mfCK*3#EnclR z#h4cr-tXV3ct3|1;@>?Q^BgtFNE>J3r5Wfz$OL zqjtle{>1Ce(;)Fc84edL?8+kOnb(_*wB99N2m=@1k<2@ec~3$|KTx&||1jVsz&j}YZ}LN4eRb4ccz+NBXI_+f5#cS<{4gi;LxaWZFzc`0 zSN-LJq%Zp;(MR=nQ1xjw|9#M_uiqSB+I)>KapuK@R|EN2f2vI6wOhPRHTLNKj)AkE zg%^{){FK%=O5@ppjAt7cdi7N+ubEeZfio}3yoB)PN#C^S>$7-^=6pMWfio}2ynyg} zAs_tQrOH(EpT(UQnt{F#b34KFlakA1-F=N>hdv!A^fIP)UR z3k$EA=7;SvKh#>hMss`#`5IrcFCu-JNv&_4`uma^L(tFt7kKscM-4yQFmTovV_sBv zHIR?}L6wQT7K_(v_J&^av zfpdR|GA|;$8py}?qRK>l4K~l5Z`*v$x49RPzU&XQz8dm#tN6L_K1-ju-fi=>-iXZ4l-Qv}$zRCTs90O-R3rCT@{P(rKWt!jT)S3bP+-SA*ne#)NulXU#yoB&- zARqOqGLhG3@ix`m!TNAMan~1QUO;%GG#?Gfd{klaW|em4;rid5m)=5trv6p?*-3ux z6hFt#^ZI!h^LvDOVc}Wxd#%N5HT|sdlG)t~G#7bpNl#t8dC2Uj}`R zFEQpth1W*oOOuQ*Ef%lCJR3UK>u3Ml4Sj7GIFDyx<^_dU1Nk_vN(%1B>&T>IGu z`M_(E{xI3>)%Vsn8Twv|fio}4yom4~ty8?;!VA@3gT)&r9^aqFz-7PSfg?!TBk-p< zaerb5B*Oh^_@6-!zE^}jbAO_P{3KpI1}?mdnRf;Aj)TMlWhL-G^Dcch-jumM8}zk4 zE0mJR{9dU)$jACqWvcn_JtC9uPv3Padd=xCD|@TKTRy{)cLnk8g!i+)X*eX_O?Z-cm)pGI?FO$C0~dWq z67L*%Kl7U4ka#EKN#Y%0^U6#=m%$1r-VOiw8~*){JBxl!i=Q_Y{k;Bc%g^Drnffqr z(RUK@&Vl!9eQ?P7@FeLw(dLz5mFfPljEf5w-W~r-`r!S{n}$QKKRiji+nX$X)oQK5 zpRX#xz=gMicn=lpZ%OKJU$Oqqw0Vmr57#?Rya)bA>AM!*&-w=7kn~-OCrRJ^XIc6x z)m*GUKjzxsFDBl7#r{4g{r%Qrf4|7))tUXT90M0WpL|;Bd%W2H)};U4TkL;N?6CAL zn!E{D-frSu3-8x{!Xf*KC&|yNZC)b|(Yk$xFmTa#9PysU1q=Lxu6Pg*iT7Y}6?3f3 zE5j<&yyaR)-roPF{s8Z1-ZUI?f54NZ@0NGke&Ud#c@r48=sS&g*WyqD|8PEnL-rF- z67N)-*YRe9SC4@U@1CcWzL&%MnYR@ViT9K-|210rhD|>^F>v9XPrP%m>BB$J*93>e zI~h-szVmF})awm>gBZB*9yzG=T?X%G-Yz&K-r0DPcn_ax={t=3(+Pm$=NseS((6y_ z{&ZIn$m`G5tCT*ve>8)E^LjAAyu!`GgM3&I_NX#(Jy>e-_TZGD*SozKIP+3}Cw)ob zHA6n|wyQFcH`E}8vc6fmejt6L7&!C7%nJ&y6Y_z#QDnDiTx!&nVUzB+f;mtrk=o`mk)b)FV#hX&k7V7I;44n1l z{)_ZwZ_@hOARl;5s!a5A;T>LmtCt!2@b9a;^Ww~l32zYcf!CwTL|(hiYc+WoIO{8H zlD_F;uj4|4htJ2k^ODR<2(KLSfro$FhU%}+;ywH4MGx^%d)1>s z<^_ajeO|P};_bmpKI!imIQyA?g8WR~sQqk)e9(v2f~0Tk?UtW3zf=FK$H18vVP05x z<&ckl!VFKmT8r2HA^aKlhh_|%dD#upm$^af!_U(KZ;L7u+spp9dG#H}{$PxGQQ=wp zgDn>CF!q!41=5%MhSq28C$GHKt8dlxbHr1#slSn*N#QNi{nR;ij~3g@&>3Do`Ff1{gSsAb z=7pIT6y5~Qw<9v&R$08oa}7TyFmUE&)=6LbdhKT~j^)+ zDDxu1n}K}bjbkx1|5?25GYnoc2G06&|4I6?Lt0-5^0B|GGEv{c>0W(P=KX*{U-tvz z%!>&R@2>%`NtKDbcAKZ_R?qJkIO{9?2kFbFw7xcKFHO>3Hnw~9E!G)+PGI27OENDZ zyk5x1_M*x}eSH?MuGQd`W8lmSGA|&!$ z@nu}bm$5f{{oG@&cYA%UcO%RT3$K~hyW3^GTWj+!H2mzvz}e62sfq}EW{J)dF+}E_eUdYGxsmersD{u1Zt2Uo! zDDm|?LxOp6;my-a&aj zYa`;-H+#OJZxjP(eM#megx3lAz}u&O+Y^IMz9#w z|0*oro(~%O@Osgmm;MX+nYu>%*$nx>+pfw)ePeI*`q{tB;Nkb3yYnK<3kwgwe;IgN zRhh`EwRo*~3qW80)nMRUf7w;iml@Fd@csqx*5D2V`MJNwt8deM9%bIw^C&UqMTLjY z=K*g(m5KUVEZ*X44Sf?BIP1$lO!{(P*7|xOA9%Y|naEptgI6Dao{R4np98!@@3)@t z=oO6G{qzy^`3FdZ&p*KbY~+geVtk% zKa;{Mq4o8eYJ=$K(CfW^wtm#8zZwjj>o3f_V37y;*giY3OypHryfU*tEMr4<=4JAv zFa0I$=LF;fZ$$dTYwtQD3{odoK5jPk8jnWs-K} zLF#`y-lm@Kf&aOoJoQ=;_RRiQX0BhBBYyNH8Jf6S`#Aym*j}(0)js=*Snhw-YOSd2 z4+H1=3okHpBOmv(tjdTQ+--r2=cLgsxqK*^ zgV&3JGcUrtu<)88A9&kUnaHcPc-3_OkM@^JFmUE&|Bduzl3E`=uLHbkc;WePn^)g( zlcBE@17}{0c~RljLq71fsWMSti^bbib<6dK_3h5f|B>|NzNqz$QhOPY_OkLCufG2G z8T#5VaMqV#UR-!JkPrIsZ{d=kT^4UjtxZ|qAO_C70P_mHT3;LF1FuPyiGG$^yjHbW z!n_&`oO!8-$j_wkN@)LOtwrk_I?3y2ojJagW8lmSGcPDS9G^hnoQyA37H{gq_`7I7 zF>vN({y_TDUl2bbAN^EiqMwtm7Jd6daA*0P>yEknzkl$Lv#vX)^*yJQoOxaJ&uhGreXI^fJ^kqM%^>so% z=-a8vM12bPF1u~FsKS8a~3CBDYjB=ZtQ9$jBd%k@Q{#p^!X(ASKCv%Vnn0>TSHKGfe9RVLP7 zg~jVQ+2GY<;LJ-uKz^n^tNkp8eBd3F{xBBy`q}tKgBQZUnHOPRSa|C-injzW)Lv>W z-mH0jkKaG*&ddIe^kuHp`a0?Qey3dD??1t-Z&tM>?(d@*IO~fsFIwbL``jt*v&G`o zskONtUoddy&b$Eg3ZK#XdLbWpyHuITE46r)RR(X}*Lpa0Klzyy-VCjW$7MY{^eV5P zv$(|2evV?`tS`*Gpzt~&AN1{1Wum?+i^qTOo1gz_^~1|7kiPU4+Rqxu$NIx!)ObDl zO0T{;^ZAN$U(Z)WnHLe>GPRdEX)g^HZ}Vk_pYs?v`Sm*0=mB#hZf{s=tkwd-e4n zZ}8eMaONeMmk?eJ@xFZ&zP zm+8{_dLbWpyHuIT+kd=QU$xoa@$-`IycqMM!kef5J}v#d#o|?-Xy{w7^25vjn)Kxo zTHg%hgT8SrMvZ4HTfO=g&oOut7&!ZxU|w8!y^xQ7sxr~fE{j)rtifBa@WTr*ukb0+ z2l=QEi&6SYEnbJ&|LT49ztpeD&!q6mss9~3Me~MU>h-hIY@h3Jk?8Jcn0Z0r%|Jft z!(x=aDvQ@2#GmQ)3kJ^hm${Ghr8~8sHINUyt*T6{zscjg`tZ6}c=&w}?z|}TBErM( zM*!a1yRl56J9;} zxlR0Rw|E_D?%?{X$H2M%3ipz}{3o=&a>xgL2e)c{8f9NXI_$d3E_=G zKJW%qnOJ{)7H?Qxt1+(=17}{4c>&?oLq71fsWOpQVezKkX6PHlz?qkxBR^9g*M7D^ zKJc1UnaCSE*6Zi2sc+Pmz6kTe!b5+6w^Q`hTD-&f{CM^kq%U)s)@OZwe1C;kU)@U# zKg%(2_A|!3sPL9)Jvb-p!4{jRe#Y&k90O-w{vOho` zhQ1OEoOuc6#f3NjYQ>v|7aCu>EMCW{2Cp6iXI_ALg-f-*a>xgL2WvI2)Z$eiZSYDk zaOR~Bke^B6&A)*3!3*gdda>8fJufnNy%;$2!psW_uNm?|-*#0d)?byyJB;?3nI(Pc zUD{8peNL8p^)0GvCvKk;7&z;TGA|;$UdRW1yHuH|ufgIS#`Qz)Zqk>%MC-Gz9~NHZ z)wdck>Td=EXMJ(z#e_Eq`Jk^ym5KV=ZQh$q9tO_5!hX`1zgX)VgnZPn<^9ajUD6lv%}mkulKcI9${Wsc;&QTeo%O|HcyS^tgjve zXMNe9lfF!c)>jVspzokuKkPr+tFN^Vy=Gnw2F|<~^P<8lfqdYt!LUvB*JAO?RNXRf z+1K?-eunhrF4FoY=z3)Yi&5*{l^1yRO}*UEH;93=z6A5)!fS(k(AT8O#P-r<@fy|d z!uoJLa_0q@S7_Jz*5N`7cuR6UR%-Fe%=WqLt3RZEMt&xRH$nYjMB3-jQC>eQRo$|_ zb)1-;{R}fNC_H?=6!eYD{9a}88sB2nUkC$dUgoEyFC7;@;lc?0gcoWrlUuy{4&(dg zqRfj3uk)RXSNy)Y28&l&Zs=Rbg@CiZ++CzE`w^{g2J+EQEQYTCp6}JysD7r~r!QWd zc`@OwzmWWd7vi;BybiTD!@PQ5`#ps_NngHA>no@Io`bSKzj35j-=2`+XDYO_}TYL0{|n^iRmo)Q7d7 zZIBPVCRL`I|DNadv(apyAq<@LMVJ>B9=31bElK;VwRn|h7=Et%>hIZoq%ZR!t#1bM zfj6$k5Y)H7%&Tuz?Im#goWa0ZUyONC;SEAQ@Oor_qQ&Bsoowh^_VqkNewy^juQPX$zVrvQpKa9tnxy|t2E6))pEC4yV&JSV%Djm1>LDNWZBu2Uz6Og| zX5L>}uJKcUxgU|f>;+oi1mpv61dE~h@1MN-Doq|fkKnE^&b*lLW{5W~ympIMeI))a z++IpBaQ3q>Mf&nPwZ3`kf78eN`S`vV5fyd?7y!drf|@^cPe$j?5DH>K86 z%p1hOnHOYUKzMDmK5LToS%t;xH}`wmeC_w7Zzn%f@7I3TKt8mWt*T6HpJV@^huw%-^Cfw!iv@sPLw zf4%zlsC&s=f4vwu>x(fjD!gXM2i|s7Ch}S=-lDnxg3njG^YR(emwTVq*Gu~^yJY`m z<$t{TT8{yQ?te8HIO|I=FD|?i$VWe=y>wZ;Mst1$`I;XB%qz5Ned{nW0B=d=hf<5T zXpYwtzQ*g+56RD@@Oo*y-X-Jp(9>Q&SIzb^REW!*NlNPFV4J}@bLT2fVV}SuWz?_o9fv~ z=FMZ^%qx7K^yOn(-zek*Z$Ooa`Zf-F^;N39F6ONV{qT~^O9*cU@_{#w#i;c}pT!&g zyHS6g7&z+-GA|&!ddLUfHdQ9-tFU<8>UYug=SyGuU&+tZx!TVV>Dwau#{Ta0bJbig z&0yfHFT%XA@CG3t^!2DRQD3da>)$l|Y{S5rm%WYjWtz3V8psFUR#hhQ_CM*>*GTIn z`g~vr1DDSSp3kU@@21ZuJqar$_N$+e-ALP@E)yi zhWh)s^!HMW*J#d1Az$-R>Q?eIDZKSplArKG`i3^We)d-y`r0sX_A|`9pzvxSAKRxY z6WeE%#ak^kcrzF{^D^V4Fa2)q=OE-`|5IfmZ}JJRzK&NIym}0rc~Ry?gjWvvz&j}W zf2Pmi=K}#aMl-RUQBqSkPrF>L|?nb zYsFgty1&<8;LI!RC4KpKX?-P-54<(i$FTl33SNDy1=ZhaJe$G5Wjx!>s2hGp{o(x>cYP7&g@rc*`M?{O`m42gvv|u-x0g{2oc+x1 zA$^%9t*;aEfwxnYsph|ROP{&^T*vm}%!@HEDm-j&s1J)#_19wY8qM)Dx+^Gs?V(@Ji@d) z$H1AFU|w8!%e20pll66%#cMS0hlhOK4-YV}P_Ol^)Ah=dT(6W`yiGM0aQ~afz*%4F zX7V#Byiv#pKL=!d8G6L)=cZcQXr8b2QkZ$cB9GQf1F~MKvUrQnGy3}k2G062-z0tM zw`)J~{x9g;rOL$iGWi!vpLzW^@9+ALc@g1_()HhfDie7P7H{!?vF);-6Bsz_%iTo! zvTqZ8kdOLQnaEpM_3G<4+e@3T_7Z1aOn5caUbaemX}5T*=KL_@YknwJ}9FM9*&%e+PFE1~*Z`y*;V-u}E--=dm3bpOM^SznBKQQ`GMKDHN`k6J9= zVa!MQZ;-y+=~|yPAFce^t8b5aebnpg`Y6G?xbT|k`e?gcA9Y#0R+Crbix*&CVY}8> zLcF#A*7a9v@m9^}L-6@O_xei>lb=c9;qxUpzR2?-L(5)2habS-h1*Lf2F~pz%)FrR z>LDNdgDMl-XO+dq%ew&DzgV$OqnlDie8=fAZ>URBK_@7s9|^n^M;ndi?Zty^f4TF5%nJywhUUMm#re*QyuPWw4e z{e4>c``ANXKg)h^__^$>{vyl^3vYtzZ$#>^*5b`RY4AodaMqU{Bz>7vwZ2Zshx*&8 z%2e~;AH4c1k2L&T_qD!`F)u2-8CqYD%lf*-;w?U8=$pX6SzrEZq%T*i_4PtNwog?i z>RWlxt8ddB&*puNX9?!Tg*OWMIDV=!k=JGM${sZIEid`e7hql?qV-KcKJZ4c7`1*W zwRp4U{?e$g{iW1b$7Y*fFCo*#Va3o|b$ymjbYpl?a_G2~TQ zyt3b!elGg)Gjkp3OTSV4gnaZ9i&1_~{@$yvZr_6_j+_j`HTch<2Qvd6b{$JW>`g~50d_HIY{a$^Q=6Y%U zFMj-tF)u2-8OVqF8^>bQ_|jtWhVR3lvA#|Wob~0uO!{)CXnpmN54>%vOzeLv3toMj z=JS~IzMjWSFfT5=QOF10fGQJtT^6sy)Q7*HyS@PP3a{1r%1PhBUur)~Enc@83)s(Q z44nN;?Iu5y!VA&(vPH(1p`7LCb6-z{nHLnEwVtT5cy-IDo%NMt;H)q6CDNBZS^K&C zCsluQ@WS)oZ@u~sW4|ZLyom6u{hkJk*KgiWZS!?MHP=u2vfH#ie7+gl=T^C&x-jq6 zH)~#Rj{3UZj59ALyiU5_+$q3HaZwX#_{`-wr z-;~+k2YvPTB=Zu&Yoq?&B>lb5;tiYkr#pS!pAIrFAiR3W$MH;+iQ`L!#hW$nKaBdi z|B&t@KT{`ZKRfCE!%n&XF!pP&pN;1JV93}0V1#*L;jQPX{@{h`uh!yK{uzJ9?Pc9p zf6pdKU*^?X-wfn~pW|u_K|lBZ%ByenX@fU|fphzeF)u1SeEtG>J*rIPwOG6<_3Q!b z8^pkwm;WN^%T;TAZS*`tlRVF`a-UaUt9dYakzZTUD9Jo4nVnZ`14# z^S=5+lz9>1jZ%LYkp9qM@#^M``YXr4+0WePNnbXs^)3HG>6?QWs=tLfuf9g}dL`uR zdL_=hnDEvgSG*;7Azr)9Gp`>)zOEk%pCf(w6STf{xNv~_TaxRCjbC{69maYo$-IQ{ zto2f##p^y`)L%0O&h-~$UO;#u$OnB}RGHX5D=c26+27ZF_4o8us{g(*y!opj=U-9PPh37w;r|v~+9tO^SWt6zW$#X`r0sX<|UXH7hVnI18=J;6M0=0Z}wLPZxjP(UVwRpS7?2mkdJ<hV-RhuKk>c`2~2>YR*C4n^#v%cIFq%Zq2t*@N=`$4&Xw2<}ctNwSR{z@=#=Ea#86W;t|&^+G=IcBwLvS7Gs{%=vcE*L<7qCO=bKwV!P?-!{p7J2vC>b8)|^4+Cd? z5$1)3*9-ZmPnC)KYAxQTdB0;G17}|La?+Q1sn$0N`B;CdOyuqVnO9$jx&K*@fio}0 zyr}TXAs=`L|AL+&uf^h3)BHf6&ndycp#B50uTo{|tKUry}f` zpU;_9zspm^8^yqdcLnoyGw%vWJW$pK|1vN(K1KS{mD*2yUI%zP<@#arPOrYzKcRN!&0yfni!v`F zyg|qZUXLmh^)*<$IR_j})@p?|i>xG|q^>tJKqtB}~W8kbW&b*lL zLXZ#owx}{uU%SQY&lrBTVc^Uwe3JC#E402E$Oqn5RVMN__IdTy{mtN&W8ln7GA|*# z<#olIgBR)#eHO25%HS>E?uQp-UO;#gkPrGsuo%_v-x$8@Rg8WPcwV!R& zKAWU{j!k?0TvXTg+#e<|aP~98ys+?kAs_VZQe|TO)mps6cs?upanhH0vDRljpSAzT zUVXE(=(QeSFmTovV_sBvosbXucB(Q_UyH@-C>XqY44irS%Sd0YTF1y?KT{tg zKa;|1BR`u|naCUZk=M`0KN|W%7&z+-GcPE-^@o(cC3vC!US;!EOdbZ#yv(JfFa1L8 zr*;2fa>}c3Rb8v;`40nUUX*ze;SEAQ)L)M(6a8$kc!$wGbGt}i_86_tYM%?Yd-Wa0 z`Yg`8nDDIiS-Zt+G_N;9zOFY5myo{v(OTa+U2iVQ_2$N;SKp#pfB5{Ed;KMumk?er z)!#0uzdnmMyKJ=2Q4E~hOOSa1;dMejj-RSbY%diSug<(bR*r!)FMTojnR@; zMnT^GAA0pw{?+99n%`s0ixzn_zmLoO-eU89WAc9OM_;~!^yRjQKFCLXSd3aPtxS0J zt$xqo&0yf{XM%Zg;SEAQ@Oo64=x3M3+w%v5*NcHOFTlLQ^R>Qa$OqnbRVMOEEnbJ& zKCykd^HLX)pGo1BQ~Nw9^U=@`ynfD_evbO`Gt9i8@H)xQo#JPe#oK(;@Drc^bJv$? zCw=K7wV$Jq4}K1)GSSb;?|b!aj+;CToa-;jyhxD;`N&gcBCo;X)tT21<-YoRE>8Ng z&(r$w`U7}#a{aLIua>?AQy&J-`r^!s32zkgQJ*Rk^|f2P#z})0!oZnV_z3CCmuY?L z8O2+I7wYdDw|VtV{n+3QV&Ke6GA|*#HpmBkO{z@P*JtzYGkF*|^McF^6nT)3JXI$0 zDlFcf?;E^c44irCHu5udg!Z!;@`1Nqm5IEufARWRsoD~+2iJYoUxayK;mtrk@Wxe} zKwhoEyY85;-}c&)wfnzvm-+X$JIwV=y|495=EL0oOSRr|TF)H(J$i`z$y>d8yUq1Q zv#<31g&-gFZc$|-ufgKA&ZzpN{mB{(T=pj)_z+2Z`y*8 zF2bI+#6 zgP-TBGSSbC?}<#_pPXGa{2ayL(E3h#bT^>Rx~J?act8GwL;Mbd7s26yvJ3DeHJ7W4 zIQ{qF>%L>~$}w=^9Y?&!M}@Zrhs3)VPZIA~o7eaggBQZUg}3)YrSIu|!aE3u#Cs4= z67QD1VyD(ut;Sm3KQF<+g?Ae99{Qp1mf(F)Nh*?M8BNtHn zg!ePA2M&pM0iGn@!+R`!m1?Zz`osCtN#7O3yAR&ayg4`|-mQ3&c$eF}x(5tD%Q0~A z^GM=74*TECTZ2R5-HRuQcZAJ*ZuNJ=PUYvJ>hJnnEI-SBY3N(N*HPa|#JdyT&-$j} zko4VzCrRIl{|8U)t#kb?x3o+RFxHm^)wYiNCVq2r?Of%8cpykF~sL)M2UiFbe6(zge@Tp#m#F>v8s zOuP%RtHD2*A8?PCc&Fn@;$8HA@P2CYFmT~L`97uZLU_OC!6EbTB=Mg3j-{`gt|w@G zX~w{Xx0`sU!26lE4GxKS6rLpB)i$p#ZRjhCB zycrB!czauwpEtw%nKuH5#Jdtt67QB#%g@FMgBQZUg?Ae9p8kRG4#FYv9>kNxJJsfO z!)z?=vl#;y-aY3jeW&154*#HiZi7RvKRijiyZ_nJSG{QPN-%KYolm@n?ibz?91?FI zo+RFRHgA^pw|M@;z=iini_&)$yr1>;z#;K2z>~y#_}iAg#qS&XCNOZ}T|vBS;r+}T zfJ5S4iYJM8xy@^({ViT!W8lI&l6XhM`AU`0mY=gYgz52f6ayE1ClT)|9J=5iuCL*c>km&7??jt7WzK(t7`X86 zI9KVr4BpSYU2sUev+*SHZok>mSN%IfUkL^-ydA`Q2>K86mf(0zc6?; z7`X5rXjb};hW9gX3mg*fv3rDf|2Hjttz#w+0~g-K%!Bu99vm_c27T6dkdXJ4gNFlARH3!K|D!*K5>(!Zx0S(x_$Oy;G%Cg@h-%wf`2%_!y)lb$CJdn z+UBj^WbkG%aN!+Cyqn?u%o~A2;$4X+iFd5c>&7mw^)+MQ!rS{E<>x8bwc#Jm4{%7l zqwpm0ZW*!sT)n~I&0yfdJB@fZ!~2;x0*9;*PZIA`o5#+l zhs1jjPm-Sx-(czMm@;_v7`X7RAl}R2{mk16hs1jdb_AJsxy>tst9xmm%dYM7NaEdD zY@gH8K5r_v&m(N!EVwPaQ4C!4-S95u=T%r$@DJxBI3#@+;7RiH`fpf%&cg0Yk%xf` z?8LcqiJt=eFN-$Jx|g_6hI*-0!)4*wR<|HACO}R~_~3Al`lOe%3b! zhotXTJW2Y_w0X~MJbR#t`g^gx{Ga35{nuOist*|YN-%J#zl(|YQ1SY2Nv{9)8P|U{ zuk~hwSA&5I@5!^2zN6v&?B^CZBtIYfrug~9kfpB`dZ)C{8Vp=`yP1bw8~#Cm*aC;l zgB>KUzpHIt^`OBk!N7%g9Pu84#>TuQI3(UaJW1{4Sey6U#+SW2l%IzhUv5cReh!=M zrPH;&oJPEJ;Qg!*pD`zWC*w)dcdE^MZvEk&cRKZlyT5Mft2F1Mb-YpOQh(hB;N zQvE%MC#n7}w|V_3qd&A^;KDnScxS--xxH+ML*gBeCy952&0D$5V ze&!9pA@MH7lf=9JYnGpz*BiWf3|x385$`s5Kl8@nka*YNN#dPo^QQjQ;0nE z>AMWx&%9l5NW8Q0B=K(ls->@N$lxuz*53}|-C3-^X{o=PiuHG<&FeSUXKk+Qvj?I| z-x+i<9ginT-~HEF`kveV(#6C()c(>%Hg6baN12cC`Bi zVTmlf84O%_=M(Sd;`(|74vBXqo+RFRHm?q5E8&%6;KF<4ZA#zc-xGanaLDZiPZICp z0ZU)wjRr4-feY^n;yqpT^Pu?oVA0RZZC?ME3|<=sF1#a&cLuzl>u)<8lD^~dBx~q!drqv;_bte#Jm2>mY=Iv8@w3|TzDrD?`C*E>l=YXZZCL} zcqiJtMQBaZUM4Vb;oWhD(swPqpLqjtNW4q&B=K(FZRy)Iuixh}aN+GB-fi%H=8eN4 z@vgy>#5>dGt(w=HGZ?t=9(aq=cQalpz(1HDM&OYB#FNCk|4Wv>#c!K_V&KBNn0VL1 z`6y5Kq&&v&B;Qahj1fU;%(I?Boe=IGjo!NNN7s}coAD&-o zQe~>=--5Xp9o~$)SST^#K4&sV_sBv zZIF-pRGG+Yv3QNN-%9#I7&!Ctr;)zgAGE%8*s25G61-4@SxI{J9meOo63mMW&-#2< zm&GenzY9O_w)}HH`U1==JgD_eKtAXj!D7_&ilr8h?;nw$>i&_lpQ$&IpGo1Bz)d9J zt=*$}LtpgzS!TA+Wnc9dW?oQu6OfPkRGYx|Qf2XmO>}uy&tvWZ%VB<}`s>BO zSzqo{(wF_c*4Iq+w_TNq`WC+6)wlUmgExySqb_cu{=OU5)CbBsi!193ilArq z_iA{L^!E}Boa--NL;7;}Ykl+6s{W?oh3CJ|TKd$_cznU{cW~z=m=_mbFY$H>ugl`` z{t~qp_56~vz5w$I3tC?Y{DJnlMR|tpv((~of1v$c)gN5O>l@xcR_@(F^|u3B$bqsN z_@9lu=}Iy3nf15&6IFl2o58?^cM|hXW8Mvr2!CG~{%79F&&F#d9?$O>IQyA-J&8=` zw4WuA4}PwRpOZZzQ$Ig%_V-Z?oOw~^MTFN0`M}$$%EbC>uy|8u`yBMuK69@lec9h? zeQne}o1}d%e8#Jy!tlP@51`<_jBhZnU@gWDCrvzeSH?M(&VlC8qb2v3kVPQ-$38E zw9g8QcNp_S`nBX|>Nna?YknB}wAasWx_;;J3B z0}3{oZiDype#JN((tgD?c#`bAsEE^_pLuTkX-~d}ct0%i;E;KEl6X&ai9F4lqWU9! z=)aS`-Nd^L-p~4W!6EU^#*@Um+U8Z?j%|srmr5`=^n7^IqsI~NA$+s|{(-eia7es; z#pexZxeo-V*O#@;^zZlsy~zh|De5$ z!y(rno+Ll-|G1@Z7-kRQbzt8HE-4w;&_?&{}p ztgq|#^7El$|67v&x3Ad$Zuywy=W~1h<}~6R>iL^f zZQiiCf8L3KUJripsgm-NlEh2T`N})~epX-hq^8&Y;;ifN@b9m>;?+%G`NgBzSJ8Sf zvtO?V>meW3gWFV@xE|bpsR-oj-HwNppR~TN$H18vV_sBv<&Y1&gMYv>k=J7J_Q2`} z>W_H67&!CtuOxlBtk%~I`M}$*%0%AEF0Z~;oMJT(zfaAbmtbC8c)0!n-kKVdk=JGM z`qg(Uu)a17ob?5mSNOTshktJjcw1GO$SbvY9gBv(dJLR-saKGnN#Wu5+hhIRk7Xin z=n}7=vvhxe>TeVSXI_|jLE&{mKJa#`GLcth@#=DhzH$tld6}1!zVwXtbNRQ5HwQ1I zZ}MWVzTp{z*NK5MFUq`#@aiES^lejRqP_-;SEueZaeFDpz?qkO8R^UZO!U$HfjPN9 zu<%i@zH0M+3*PT?=f#;96W%=hzMyYf?w7S&yh?LCTQ~0q9&$V@98dc4Kh^qX=zie1 z+z;I7@apTJ`GLnX44nN;GA|*#a>&R205b%&mp+SEY1ZF58t=>tGA|%JygvlIajCxw zi`S~g9&Rr+7&!CNTglJVUE0qQ$Oj%iTS5B9F0%amG5(Bs^%ywwBFqa5uN?BxPc$MhUzf$3h20=&FQXVZx0e9( z3j4IaPRNJ$vQw3byi$v|hvo;`@9D(=)`S1Qq2)weD&6oBvT`r{X-<4F<$OpyP*xBB zb4R%8BVyz;?|;nF{tM547&z+-Gc;J#2l=Q^m5KVQidg+T3|x(hpKTa8^D>nrGCi&R z#LvS3Z>uU3d6R7-lX+#PzGYwSCCa>r@UXoBZ$#QlgT>oJ*DJgp#K2i!?pV^7{jt{9 z4Eey@uF6Dx3m^9Ct2FPotos_z;>?Q)Z-&ORan+}h*KYC3%=PYa#*e;21?kJ*q4iBb zKKhBpsP);#hrIe4&HM2o^M3sQuT!Y&ha~e7!ds{H*^;c!`Yc|*d4H$PyuWiuUXXbK z;nhGswog?i`dMM|x))G8&kxNQIJcK{ko-*jNc$OreBf6vgI+%u&G~%-17}`@ zd12x8LO$?zsWOpQYw^nV8v2&M>xY+pG3m=pX?+urkL?AEQSD{_gLDL^+f#}*~c-`r1ybdt0Fsb#`(|Em2#_Ljx*Qn~2{S5hPFR2%ipGo1Z z?@{`e;DzdM=mM{wt7@CIpq=#lxM%HmC#>$5>$>$A)YNnbjn{lvfj z1@+e?>$Az7UVW_xjP_E4fphzeGA|-L{Cq9&*5DI6C665 z^wD_TB;)nM`@Q-$&F5Y5?_s&~;>?Q)Z@W&(sgJpY^n#wN0+a#@^@kv)b%`CBFJ!gn41%;q#WD4?hb< z{h`+4wZd+*w3iwToc+umMfx(|*ZN8zAN$|9=Iw9w>gzZAdz-KR9%EiqcsO1FZ>uU3 z>#xP)wW{BR+h+|1&ie9ONMG(>MIYp&KADeJ&hzS9{I20At_R$C3FgIx*9-Z;+oj4> z^Pj~#jP*-^d4=1wK5P9_YVkVE_KDZu?)p;CCqI+ID~Ej0cTn2rP>a{kvN6NYWncY0 z%)FrRCaAxUNPn-gc-7{9WQni+$jp(XFa0mt&w0`}tvti}n~Zt&b*tZn+b51k?tVs@ z7ZF~F^lcG+4HmEUn}(k?7&!Nb-1A6Z_ExR01oE*z+=OMKzJ+tW`c~E4$ogh5aOTCC z7ZV=N*TCyhWg@TL;?-Qk@0>T@m>-PbK5~+vooGc=a`!eugk`=Eay76&}_H@Rr2S7K>MA&VS3kuE+8L(wFC@eBiJeF^5pg%_g!utoYqm&NPYi*?J-+tg#=vLAUQqmF|=1&aHT z$3fzOvJ&{88_H2dkY_(qjRmZ46a!~{sed9rlY6wEoix7el<{Tg9Iv0Vs%|w817}{C zdBGx&+RIL9FI5(AQ{C%f-n_5-N0}1Rm%c^o8>Rb419Jap@?Bni!{1c(N8@KF2G07T z%!>%G9`d0-Y*S@o|7);#{c5ej`r0sX=H>peu0CIx9n<=1ARl;JW&N^nwpSm2p8@Gp z-)G>=i!(1Kyb0os2(R7ZJ^SB7JLLXg;eSbAJ}vs_dZqaH&^DU9`l@d*>aPR?XMIWL zC4@Ks4dv%FywG^vXYq#r+2D0z;LHm$FCe^n$jA1g%Eb0kVevLc4Bk8j&b;*hke{jV zXg^0GA9w?*OyrH7<@IxFO!4@6S`1vqv(p&01O5~!j%OD`;(@Ye_@9kDy$E{dcs7+X z^bKO*tS|dC>C232efa%Dpsz`lsph{OUVVqLe->k2RCw0@S&PNnRBcI*XBar^%l|j& z%l)&~H%jeuK-%ZZJH7g*zGeD}fio|`ytwe%ARqlyWul*57O!#C;Ds=7<^`Bn__o%! zPW@p?`a`MBGxddh=}SFDekO~&o0YyLc%lA2)adndR$W`@`40nUePQMWh1UuB;O9=c zUa7Kp{pR&po3HD!%t6wZ{+9N$hOWo9%JtafnO=R1-!bZM0t07#QRYR2*9-ZeZpc2+!K@>9csN*Bb3*1_Nh5gUkyEZxHgq z&mL7K>Z`DL)z=%m5)7Pq>Hi`>Q#WZp=Z6$;8eYiHv3Gd=oHEyggTB^-5$1)3*GB8X zCRq>GTD&@Qd@1)ezGOE^UuHz>Tc-JaPUiRh^p#*rh=DUNz`Vi@T3;LF$M#tFm~T*I?h&>m>}F{mc|dU-}!`&r!$+KL=Eq$eVntSKriE4c;II z&b%n|BEoBfe5^lJCh{6AUYXh7vA??Wa(^Rz*Hj1@Q$yNM>we?d>6V}7 zda%UTdN9Jgu<+*LdI0@Y*9h1jYAxQBIUf!Bnvb&oLHaT&t*?#dqb8Y;_HXyXRe_}zWPTY0lr-|&rw zzD^9Bc?sslg;x*xz}u$E#QN*9c(Z2xjryv;0P_liT3;vC-%hE&Qk!S?cf1~U*Oz*n z{7e>kkPrHHsxndE&}m*jtIheL#Mk@~W?oQu^VccfG`vv#Rav~sUZeijzu-q-=HE$Q z`fJ+H8OR5H<5-LuKPTVh)wgNhubTIDzbeYSi10=sA9w?*Of~;mys|GE`j%0wbNkFa zM*6Z})%qqNA9y3mGvqDQS^CWN{JgLAe4KeP;f>OIen8gq?G|t97DL}42G05lYosrK zoz~X|`Jk^!m5KT`PW9^RR(tn6A2nm(%u6yaA-oXe18<8e6M20WZ}!WEzEKREc|qm{ zgx3lAz}u8m+IK=D&k7AFaI6tFOb{AFTJaKbT-%yvT!mXrBjVKI*b~ z{bqYRK`fUI|iYP^2( z->0SaqW(UuGcU}%V39|D4yZapeN`5(e-tF?^>rHt&b-XSq%Zwt@e}gVPgN%JCf{J` zd+vTlnHLeBeshnODe@zWkT8z7og>-kQ3{hrEr~dG$?w-e@m_7&!Bi%u5Kb4f284 zq{>8IpT!$Cua7!?T^|LR7Z6@OynfbwTKP%$|H?6Ny8p+h9S2L*{l7=L@&4aD{Ld5Z=|#{p@Bi`l-}Ct5>;7$a zne=6@*7`;vAM_1Kd)fb5ufD@rzr>gq6`r+zX|Z^%-&TH-z8Vai+h_hyq%YT}^_4(A z=v$NVbLC{OzE$vC#?KiHoOuc6#f3Kr`M~Q@Wnz2jvUrQ1HFy&kIP(I`D$M-N-f?VbN{8+*ZxcD-^kCT@R}hXc-vK($Q#<`^|SkPN+0!yW(-{V!%2)f?Z2o$ zoCJvn%F5w??hhvyLC@?D{a-P7Z5X)l?)W1~yJwSlr$OR@vJm{wynU|`VbA2PUa5H0 zK4&m+uD>WlBVW|@HwgLIUR0UrXG0Nt)^*4H{0jKKw}+ok-}kmJ1mARW&UME;@$~oq z0Y4jtrQMm=MgP3^Wmq-fuc&{1KmC01OZ@Xo_~-oj#n!JIe$`;$;@9qn$gdloAis`; z!~ZyEk)-to`I8&>zKnAeGc3vcfq zNZ%bBq;Cf#!uNf`|IEAf)z6}D^D4v7c??{5r!j8_^Y%jGfwDpPpLwT08*fiS@u>av zV&L5VvJaBT%;$CcYleL6&#FvpfBUONCbySawfDm7lTi$uc`@cih1W^@IXh)Pr^Vt; z(fC371~G8v<(Eib?sHmS8{~t&CRHZtTRG9Iue;aqvl#Fc$?<@jSDDueVGSHU;4A!&rzDc2W0-9414wQ_(FcF z@x|HCDDxu1t0zCViJuJ?uV4L)`(GOd&b-|3NMH6!tq%t@sK2ekTR6e1Z_#{SVZzt* z3UTJegx5>YE9{cz71}Lc*<~O}U%xJY%#XgpBI(QbXnhlq5Bf&17`p!z^6J~uW$=12 zaP~9FyoB(YAs=|#Rhify`Yc}efWd3Vz?m0hUO;#u$jAPt%0ym;#p^fchc;jHL;8O5 zGxZtmXAR8{TV;M2dzIzqCk=hQ7&z;TFfS~;X2?fBRhg)-*5-ZO8nE3feCTkJ9XoWQ`DmtbC8c)gGhyj`kH%_oWU+y=gFWaT{)k8k$+osAyeGA8X_3gRZ;PqnQ%!@NGCcI|I2i|s7Ci2=X z-fYs~jbh-;EBu=DZ1I`EP4+{GxaI$=Q@pNOER8~z0~XHqB)*T z_!`e5%nJ*zm&UVQGM?31yt#=NNT${`=x%R%W6Ef%lL^mEzQ{GR_M>C1gm>zknYeMIK>m6v$+RjayXeI*z; z`+u~SbrNqufEMbtXtMMkAX8U$-IQ{Mj;<~1FB5q^;x_|v%Q3TwU;3C0>WE|8*RW_ zf){F^6*kXY4~8&s)|Wm&ex@$fe&Tu(d9ofHd$HHgO7%1LbKTeeON4o0;ojYt;O90~CbrL&7kTwHe$n8CFmUE2m=_n`dN272FFgO*yvt1< z2F|5 zBTtoyygrLpXRas8eXS>g%nJx_ncB;oYJ-I7xGb`Diig!SiG{&7`$a)>zDjpq%Zdot#1PIfj6SoM95otzE|HA z+;f%nAl`s=*Oy>kTzGAe54|;e5k+e#p}Q4S^9Pw?Pb|le~2rbj^w=*Nl3~ASNQPOhAt`1> zLo&>YhGdx48j>CRwT36dtkw`u$E?kd(6ezTemTeOG{TbzagHFLyKP%e+bIixRI-@s>PJeeENfzB&x7^@W)iQoMDz z-T{4w#5EA=>oIt%`uLK@z?xV5Ht8#zEA@>*KJbP_naJCCoKs)#n>Br{7+CXS%!?>q z732eNORcYm4c@9=e`#0s=V4yCPwAuj8&dUGZSZPdqv>0B)gKZE$j`XqrKvy6s{Sxt z<@9qz{F@xlT=D$O^D3T?c(sbxWbl?>rRhszU|oNin@C^kjndC3MC3`iE0r*Xy+Q;={nY{=&=)Rd}xz^|uBu)LwcF-X6x!;x|cOp-1X7#?OtvJM}fc zQ`1+4fwjIE^CF6ur~Sc2wLds)@Vd?wJbFIfhk?!W!iO{J=!5ip@OgT7(7P(3Euh4 zgZE1w95N4267M{d*FfV7^@kD;3^u%nzAE(H3GZj#AvomUf5nr;d+=|DzJ{|jeWiVt zyepUo@0UC{WFDR*-sS&+_i~;0GE3gk%!Bt!9vm_cPZIAalea4FWpV#YV_@Uw4L4GI zf%h|S5)Qfk@FelB-!c50I7idhkAV&E6ylu*?`K{I91`ysJW0HhP2N0Knf(6XF$`>Y z2loqoZ^o*EKluCEa7esU@g(tXd(hC=F6LtPvkn6r-Z{j302Y4C+k!*l-GL{GcecqJ z!77vbx-qcf-S-ut??kLB_yhV{;E;Gn;7Q`$yKU$@pwCBB7W0wl?-vvALU=#(hTxER zXW>cWU1aijJx~2ztmkd?9ZtM^V4=c1T(c1G7CcG3!%W_UKECv0V8grS2I1#v@P6iX zz#;LD!IQ+hx@`D4Nb5n;7sSAZcO3Da0qjiz#nLzlW<793-BcQd6CI;ef=lK z&%=rL2ww0JZx;@U_p8cP;9(|j8M}bgm&CwE-!)0$=VjRRi8l&|#5)&HlD@0|Wcc~t z%}2)(@3H2iV@=-bX_~$?1~&R`{-V%#6}+GIO~N79AD$$AH{EaQdz;3q!@!1j2Js%K z__?M0yrbgh=_c>LThHJ91=3ep5B|sX{9RjyzL8Tjecc$?=sTZyC&K&L&lWf&KaaqZ zmXjlQFacOkr=c|&kWytD8m@s2Wi^ZI&X3jB30*26F%DF?qRb ziI;hqp25-J!(>I2J zwZ7sk=_|Zc>ch_;0Ix%oiTXC~b?V!p@to=}kAXEW#=MB)B_SXE6lEfB*yQPc<}tA5 zd6-u|P3lWRKJrAF$g4JZ^B3rTVqncne3tx-D;|Dc4E+>kB5!)b>E|-uBA5H4`22@G z&(A!s;zc1JczvQwQhV92+RH-Gsjv4v8m|=tYd=HG z3n*R{+KWUmp!lW8Pb`r^!sDW38C`MAO3 z{X-gG#Qvc*&&xcI;;oaPheRErpY;Z>SMTqwuKIiGYVtGjV(DiU_4lnI^bC1(zcc(C z(EY@~T3>*9e#I-1zBQ$<&EPeQxr5thm8yq$BfZkdlUZ&H+r zyy<(Keh&6(ydVbFJU{ciidP5uz}r0=%S2w2!Q<;g8ehcy9&27^iu9#UmVS=G^&;?w z;DvY#zjo?d?$h)oF|g)^m={pIDC7gLPn3!JIt^a?J2hS%2G+d7r$}F}P3l{x`}2p? z{rQz&IrVkv`h2eRMVJ>>yb?X%yQZG+9WZ!%_&k33lccX0kot_z<8QAy^*!nJnxB7! ztzvsWhDWfjA)-zID&!c$wybJJZMVZ)M>J8rJyEI-F z18ZLD6Xa*&h0@O{$Oqo2C=+>ezjXTfdE7FT29aK*Xa6=ccm}PypZBO3|ljx@AvRR?WM=yO@uW+ z`!TTgv-ok+S9pQc*9!T-YZPUozKvfv^$p@JPg#HXc}aU-jCm2otAl*t;odCi8#Z`d z`grDZHJ*8xSAM?KSEBK3O^s*O25%4R&%~AFXI$}&_2=}e)6YFTPvvKxSMiMJshSMl z9`*||lcX1 zeYq2rK3c!vvli4oS5}<*_OPCaFfXil#(HAF;63v!t^Yl|&rSa;UqSkc&y)Io1o_ba zzJ?RFUj9{rw+Ju98#j0pVyxr!XFmqkJTLP+iq}fx zXQLWF>kS^?Pp0-M?k8LGQXeHh6DLSNvoyc&SM&Sa&z*h_inR^v3u0i+3oy^Gcy+X1 z+Ewkd&EUQ4Fkkxe3yjX_5MZkPq#pMU*M#zr0i5j=p}$yIQ}5nHN&LB&}a2 z)%vB!;O(Kk6fY-zh2y0@qrGhW%&BisU+)H8t#@P0izr?lh4b zSMk!co|wgA==#s#ZHm6aer7SS?hlzb=}SFV`Z)#ppl?+5zlEPT_3hz#@DTF?iigj8 z0B}`seR=vk_oDhd_sX4yKGBxgPoJyy8DU;n@k(%O7xlpl z)!%@@8`1k;x2yhF9wU9lW2HX4UIkvQC=-AUVs{S$`AbqK4OF!{>R^TnF`dhf&sqa8gtG_7>to4PM7f`%@$Oqm&Q6|=3r@`C9 z{7|@*^yQu<^%?WS%Cb{mv)*2?zU}ozm={*OJk3Xos=W*tynnt#^YfP&So>KXC4I$b zN_}5}eDL$rqD=I2`!=V(8G62u=A$SE*1S0LVu}}peBiZ+GLbiK@V$eUYo`Z=icg06T0=J^$` zj(EGO|Fs#s<(F%ICNZ$~Gj}oR%RF7`i$Xr=>l0<7zNMT~Uza`~`7p5Ng_##pyb{ev zYid5~F?c6+X!@Rjfi#fsc%`d zCDxb3z*=93c>%?XQv2*v?X%P5iMe0$FtFwohDl%UXsIs>`PkppdSd1KPJQj7Ein(* zANITm^TLX^PP{{kH(>Bq_3PtdC_&F)c z6!YJAo%%NQ^={VHdN<6xkmBKb8F={YEsfVb25$#GO{Cgq9s_HA#rKlFLcP)l`KV8n ziTXBfaq3&vuWysCu5V+^izr@{u5bI)_3g01t7+5ptq0ub^DwXMmHN_<5Bg@Y7@GeK z-lo3Z&AM9eCf-AS#uaah*1Mx>y*s_=^z-X4(DZ!_1MB+pGtaAdZ-ji%_X<%a)?bss zYuDEkbr@LlGVdmRsi#Ok*J(X*NUbLpzT?z4p|{U|SM4*zyny1hQu}OF?X%P1HR$V! zlB@n#xRCVa>ZCsGzu@P7)&Ev*cIq3^=l5<`^LvDOVa4;&{9dc(_W^^q1E0>S^mh!b z>#zJS(pP-4)R%;O?C+vXY%km2cIrDI`U=nQQ?B}7oOv!<#=PxZfXgV#>_`183K zJjUl0j>Ye9IGRz%jnns2+y@sP@cXdvH+S@7DxgPy|Hc8m|4q5-f2j+|&&2;oKl`cw z?Nj}4?ts(JF49NW(>@HW>o34Ozv7iZAk^O)US^5$tj*x@=l_W(KL2mc%MFpf%#)

    O-_9i`ueQj)%q;VypZCx()z4Xt(6)NXYrk+uW+Q)mxg@s za~6xC{m%ubzLC@L-?%??V_@xPjCm2o^FcoFYDJmY|Ar0T%*!-h6a#CXhk4~EN_|1d z2VRRP6M5AJuUYrA3Il6i;(YQmu6TL!b5Z#@opJivrQZ+mxw;?VXP#H_@bhWdAJqPC zlfi4($Fn+D<5}h%q%U=Z^mF}%f_DgBsJ$$F%c-wfzuv6Ez}n9c^8$*Or|Zo{b-meX z@Rm=(|BJl-!@!zX7$kkUTB$Dz`QT@tC==VuO4_NfSD$ZNF|g)Em={*OD#!=kmYQz| z3?6?zknfMVx*jW^NBW9Skox-RdTgJ%9^3w=Q(uGLA4=Get@Xv37gM|}^@shcKa3l^ z`4+AI#xStvd70-?yl%(`KRZO3Sby~fuSQ?Lth;J2sR8mcak%s|P3>h?wU@bXIQ^VB zNz>PlfwjH>^Zbg}3i+U~QIv`L+6>;H-rs|+`g<-y`ZAA~`f$7e-mdEJOJ8^D+Z5Wl z|7BhI8D?Hc@utYnQRQck!TbENnxB_oVC`q|?WC_zBlVpL`JnHGqD=I2<7-ZR?V|0n zzB*U^A;!Fj;;mEt9a8l-Z1DE5{`4@fe3;Z{tUs#_-sW+dpIHp7{Y>FO7jU&(A!s;*CK*@PlTN&{h2v-b(s%9;vU6>TmbCSVzcP z+3(c1^E|Eo@)%hA8DU;n@sf}a`X)u0$Qv+tGkSZ8x@s@ww~)T#vyFu&b*l7wUWL@rElEeZR+C-&X@LndYR`@yeY^BKSxEG=x4pb`{1*+`geH#q&=e2&J;Vqnb+Fwd`eQ;?7PM48BIGk9Hk{rOzg zU+zt$FY|9tRa1FQRxKgM8q~kK@ub;j zJg;i&sE^*Ne}BR=XSMIseE73&zE88<$Nm4GQtyu-ANb$GV#N5ieZ5m}!|_5d?Z=dG zJbjG)81el(R{#pW6yr{KKYxG3AvmP(kGK&}67KQ}PJTbc<})>376TjJ(ZstB-p{;Q zI3(Vsc#?QWnY?zoKfwD<7})S`c%#tw09-gQZwn5IcL$y%-t}|JPN}a(tR4CLuhv^F zd8ZKXR(L=27U7V1*WyXyoow-ghS$8fG3G}b<*&2My##4KSVLG;T=c3SHt_6 zw+{}9cLJUy-mxZc0;^267u>J4;@x~U^#`mf_yg^w0}hFI44x$3O8!s$(zR^O!_&7fer7WF!gsFy5JA?cQ_>8sd$oj4}RXz zw@m9%>JLc_Y}o!`s)lo58#w1^-W=5!#jm|7vfY0f1v(` z;E;G{;Ys41Z1U!@NlM-r1~$Bd-PB&NDH5*_4!OPHN#fo1IYVEs*vsJY4ELw3c;^uB zNO(W zF$`>YH@}A33pPdK^}!+WPQ{bNyXmurzKKRnUq1#myfcV*8oZx*9dJmzWAG&LPB(cq z*hFN1Uq8x{clWD>zFXn_%v*#*;$4d;iFemEhQ9yq`sjS(J=XQnc_yzNySUU>hk=cs z54}q0d!RC&ZK?6>j>>rU;Aaedo7e>;FN=W;K!2EpL-O-dJV}0DZt@O1 zOXE#pV8c6_co)L^nKuN7#5)U567MLJ*9+>EzE%uucsHCS{5%q^gFm3J77mGbe`S2R ze#Y=~=SdnbkAV&E6ykji-p{=Ka7er>@g(Ux+2l3o?WJU^@8CY6@6L+8LrUL`c#?Rx zU2W(aIa1Ttje(86bBK2$yr1>8z#-{70#6d}Y?IfFOC;Got1z(P-FK$YcTbbzt-&Gj zZo!kpyLZ~q*M&^m(odM|7Q(e2sm5;^7l#d`jhT=iuI>8 z&%?a(pCm5||6kbe=@S}ozp2{bjflN3`Fw+`{j|gxq%W>`xZeo8TD6}xolu6dzCYuX zC;j{p2G;ug%=0SVXCWVW9}#7uz9xgm`xAWs822Zvd6`#|zSRBF&wj`U-aafw?4K=s z+Np0@?3K#<@fcY1Ld**&9`5&J{i*%ePJ?$qv?b+g>^ zep>TVo#bcYKI!LoARqkvk{FY*{^maE^s`s*@2#%-dw_X<#jB$JzNOkro56dH_`k59 z$Gg&(3z5FeAEdsAVQK(>ifL-H|AY}fwiAu=7kjROya#z@p=s2Yw!|G z*5C0MSo4anAbo{Rr4KIMQ6IdJzKyG#`bPBrhtHST^J2`4D4vh{U#;qY!v?RH_Oocb zZpFY_pNDznd!@cA$OnB}YJR9Tcpntnx&GdWfi*7?BtPSdcRcy|6y@ji$DMxi^(N^P z*PGTnKl8kbhx=imZ%FiMG5;C7m(qSR@t%f(H81mW(wEwhe*O`*l7aVgc;Wf)N~gYd zeSE3Iz?v6gUO@5IX?(%GE#h^WJiY(bx$1v~myy0)QR-WV{sj6Ci9UvYu1q@h_3D1M zy7Du^ys+X`K|Z!m<>!FG+tJ%+-c|c7zm)V9e=qeVseMkW_PPBrr@oW$5=@RSPr$&s z{^HDwDc&z(6C3pX5Vyg_dTHF?&FJ+Pbya^}=6Mt^2>HNk5oKci)f>D`z5cSU>MwN~ z`I%Ukeoj&SjfyhG{C9=Z&v{+nm@9n&=J^$`oAh-keQgGBLbN3w&-yX2uD{$%NMGi6 zQeP|NgP)D6eJ*{}sc%A`kNREBM`7lLDm?0cjjI3k7`zePPxQlHU-4AZSNN^e=OaIB zm7g0EPJNrYzN{;KG3G@SZ;JHcUMTg4VT1Q1{dt2w9^*!zhk51SNPXXde5k)KVKJir zRU5qDT%tW+@Er_fdwI;?>r8ZzpK-k?yZOa}_gMGiZW>qeByW@YAM3-wM&B94yAIwj z^}!+Q!;_@%bd%SM7RvpQRt#)-cb_8k9f{V#AKcG^L*m^Jt%Z4a#SML{a5qx%(iqtA z&L`egcq@~5lW<793-BcAJI~}bqlHpm6$UoEhh9YcJ-8J}yfru^-Ys~Ncn^NW&^P}y zjW>pY4etu#y&2xmygoQ2-l=$!c$b^JF5DuQ`g|DJ@Qx+L0J z+g@&H7k*w=X)mLyy_}0DN#FHjhM$|b1u6AqF|g5h3h}PPtw;ES`^j)feqM?viFdNe z`|tM451uUaJ=T8tZ67xDjp+5)ZCiim5bs2IKkI9OL(+Eyo+N!|o4i#qmh=6_GzK<) z-q$AdU4>m6{(zs8a7erh@Fel>{g9z=56>^g04nxB@0RnC@%-X&1t@>NN1xyGuI6_S z^UA-Fyd=%ki5Cb{?J?8HPB?3JEDPA4q!~D04%Vsg(PJd7t%KF;H zTA0^obr@Ll{LJ$z-Z~7Oz&ivl#A`BmgZg?m=xV*2c_Habtx7-ZXuZ2DJj3~Y;WDSb zd40V!=4!nZVqQS;x@o=Cq1H>CCJ%=&dA%}*fwiB7R??TdOX}-}eDJeFl!^LQKH$_h zA-tCBYYeP;5$1&zua)YrQPtmo$rEi!@-VRGm0v*miYroIE98T|M%6yIFLml$*7YS_ z>5DTjrg%}(*QfN28@v&n*X@euWu8aze8j6&yn2JTtoOg9tNxdIKKYp_NI#>H4}SKE zGR5`ZsMF70x*x~;Sr}N?Ux0aj#jApR;NiVo>hEm^Z$@t~QCICHcM|E#{9Nh_QhRAp z?Pci_r@kGWf@J^8V_>Z>%)F4|B_SX5;oL;}dJNtk{4AbG`U-ie&+v2OVnZKJ=}I34 z*7{=1izr?a@=>2C6WhzM!RyuiY<1d{zthhH;@@~Yo5H}F=VzW*@%o9kPw|=z-n_1F%$2^(38XLeQ|V_n zkBb2pm<+_eBgarl!?4fgEyi3iGJAg3N55B_YC0natuMm7u;L{lANzwS6ZH)kygk%k`FPS-yi@8k>Ti44sjoqA zFW8>#^~ISNQ@kwsxnKD?ZtzxhUK#^yKfTQJC?2+N@N-C%iGJ1_ya}Dx?~0c?j{Hpg zSo+yYyhg>Fi#h%L{5!P$rAsi7`W|zCDZo6x;++ZkpznpEOw`wA@HX}5U$Pk3Tpt~L zuDCwB4&Kk#N3(Fq*PD2fhO^t=r{u}~o-Q#L^Yxey0~_8s#CrscW8N+t67N@dl6YsE zypg8>LS9dIV_?I(uUY6j5#GXFPpKQrHj(E4i`MO!0~_AmexdK4 zO8u>=`n#o4e|Npx(AV`ujpxI_hIc;k9yvnk+l52Y_bWU}`p*0R#e3*ELf>QY9=y=d zHv#IEpZyrv=(~b=r=fN52l`(J9Fo3c@FeNG+~n=(^_RD;zoUuwHF!Vs_QN6ZuEdkX zJIds3>h+hkt-l+5)F0se%$tQnZl8FPc-Ozn@N-1(@7);K_<0KPPK5U}uLTZ?cLbg! z-pM9!6}!0X4`~c+cn6;?^j(Er8~)(_ARH3!0z65)+b%Hl&FI(Dcs;D<_s85n3j-AQ z2SZD8J%OK>g898gT~GH^fV_V;f>XL&Uw305*AtJ)D?W>Og`DL1ARl6?D1)6W^b{-Unx&(A!s;svSxT2%ct8N3Pcf06rV z7+CAeJcIP5veM61($}c;Eu8Pvw}$sgKu7+&*!Bu;xXW7gjtUg?Jv!${hoS**MLhh zIi8hV=}R?|pNa2DKeME7ztT5%p3~0;y}ygkBUrbW0Q3A69$a5R{q3*pe;T|^QMcS5 zvKUzNa!(_DnOmj4DaZ%jsA?}u15SN2`hG~%)qY5rc_GCM(tb#b+7Ib5cwM?a>_7JU zibs>a!gr;<5=`x&Zw+3k|7}DJeRO?G{XL3-wVyHOMHDYc_1B{6Z`k1NVSmEIyz(tl zpRqqtZSwT`>vvUuiKmjE@d}UXuTj1)NnT3_KP(wF;=)K>-hpl_>I@>bsF)VGKEA;P?{;u-V9fWhlJT+`>nz*=9qp7a%O zmikJMr~VEvWu8az z>L4F@cx_F*dV@D|n8xeIz?zrxlAnohOFw;(54>7YCiaK9w>bTr5N%hkKQXZ81(@eo zyjI8uUZd&{Z3b^fufM3P`62fd(w8|P^#vgxc(}JkelES)sc-WMnx9z=to4PN7gD?_ z$Oqo2C=>ncF?srWFzaePSga#`g`1?lDOwMXiZYS6@g}FfRo&0DD?ek*izwb0`8lNg z95#8nzO*ZS9_E!7q`ooIH>C7c8@w5P{EWI9KNC+TKjVrQr17&w^}p$Joql%dJfAC` zpLt%zE5Sew?PX1k*G&d*r&?>Dc?_)EXXbxMUn(R0OhP{JCPkTI{_At=e z2=l^Pu65nN{s&`y8h}-XEm(uGk;6=Ea#8 zQ@kmfk4D8DhxIpZ@VbO{u0Nbl?Dct>=TW>8wa+!xKI;u$`@c`9%(rzISnEqYk^D@2 zQ~J67uM@C+9)cH|ALicR^m9<3AA+vthXC{ZidRST!>(8pp`UFAujX-D`&_Sb<7e&& z(wF&$)R%^Q&^L?4i1p`EuT$TSt}pLOUzm9z#Y>XDNl_;1>oIt%y1q09*7aAcC4Ggj zOMPRI5Bi2gnaJBX+o`Wz*N6Vw^J2`4DBe0$9JUu#f5QfEQ?w=S4_OSX^?8_A{+iS` zMeTD`wa;pUw}<&5@dWZSu6V}$Fx}(yb6MAybfwSFJg?$KNnfAR*JSVpMcZXRgRc5R z=5W%N`l|G^j{3u{7(=kVEQFo<2LGXrFF_2f>o3H-K!peS&|Y@`F2|QngSVrPpLti~ zXW{XrFL$HVmxO%aO^Py6-^%Nq`sN?j^o?O)tuMm7u;O(?KJYq3naCS3c&qw&opv=| zmupC0alh0z2Km4nQuVjp?bKKEh^BAdRsF@87gM}6)!!@@BgW5hgV(I{sxYwj)5|=M z;^m3AsCe}TZx8jCI*j~Gd`0?c)Zg6eoPHkA>u<_c{RNokSG<0zzkRCy+6>-=K0oxk znjdo2q%U)W)YnS$L!+7>mR{@Bw}<)*GcTlgM*Z~|ya~Pk^}FhSMGxsKd|BzE{@1Ab z-^Od4`c@y(`a>E6>-HIAUPST6ARqgmC=>hpu*v(I&cnc(=V4xXUg{fzeB_BTkymZ- zHg!LJNVAc@-~D^WS1+{xf(Z`uNiAYJAC5 zk-pUR(oY}cgP*mcO!RZ%RZe}IV(gLY7YwZHFT}in;!V+bHmb(6PJ_3)qqi3fta*ih z|3%z?&&^4FV~~&SMU;v9R?c$jn<;C&CBS_%iMJ!8c+c zd5`)0VEJF9ub7hhj)#2UJw=p>yzPBXeG?_2kDg!Z$H3hIb0_?y2ZoQ~GYH=sVfu_5QEMYsJ8ZckmIR z??`w*>#K!B(s%!#m7lkrVd&e`d0AWDImElJ!kbmROYtPt-`OT_g8DnRPYi7I-S-b_ zpYVRx*8zvzKJg^+?tP`94}Jpx{*j-@T>pzD?_%QJ3h!s$A{-L$T0BX-i~a-eL7lg4 z$vd2R@P5gIL+0U0;vHu4W>AvU7sbHF&ujiJ{CqV^fj{`XDI5~-1UyN+tGf(8577Kh z^*4oq4evPOT?p@I9?t2+I}1+|?^u&pgBD7C>p0Nb@NV7}`fi2yGj9ixJnibFWZ_GH>-U+%R z6$8xkE8ZC718+!_iTc_M-h_U=((meeCAUNRGP6=&D_yTNs_T`dpi^J7zCVxm&+YYv znHN&LJnhdfs{Q#MgSXkO`I*JQ+Rx&Hq_6NW!T{D;rjtkSZ(kIU#aN}VqooOVw?PoD_$MsgTCD^ zsc-saPCpNbzQX-)%2ogKGtaAd{nY>Vss7hw@K*KfzqGsSzcT4deMb5@M%RBsmFvHk zI`z%GNcc(fdlZAm7(d1D8K1$ZbKs{x@rRerfW+HtTH$YQC}&kbkN!R53GwV5`-#t! z*wCb;=F|hVC^%wFpF)jU^f_xl5MVUB$&YkM?bL6>zknN=#18ZJ@ zd49$7K|b(mMVVs$Gk9Ik(Re-#ta-WrC4HHM)K~He-Wt46`&{a9>YEpPquf66ewsZm z%)F4|bwfVr>kwt4z8-@&643N@V_>bX_-E2r__WmLgM9Q;lqu%F7d!P0>i7GDuI~58 zm={qzd|m)}yXyYRu)*7eZ!c2qC5wTzJ`eNCQ&Qg)!S31#+pCRT26fX<;z}t_-i1kvZ!Qybe(&*581^TZXH{N_)Y; zy8g;rq_6l1sV@ro!0QubB5(U-r@pQp)Xx3Ehk-RO&b*l7mBPZ$HFzOE#|_@#X&Ntx zfi=&|JdfhlK|bi)eTn4N8@!qaG(Xq>Z>z&yX=wL(7d8bz5{e{BY@{iPbO4g+gm?mp6&`MA`#PJSK|b%ea7fKy+MxHr%3 zWgYi-t$AVQg%mFh`RJ$EGe%yI!P~?4Ll^%*`U+P{ea81gZ@kc{Z&j>KSzj6hYke{1 zMHFw0*1JP$y*q61HpORmn3r|+c_0t-%9B#x6n!3ORDB+(+TiVov6XpwSL1bJll+V; zUXsS^Ni|+iw;Fzmwj}+;z}ing^Sp{TM(uM*wa+Gl*ZgA9ALx3l3Im(#v77HDX$K$i zi0iStPr>Uk{CRio=(oH;348SQ*!&rSNAuAb2G;sQ3=Mot)?YW|Lx1QHWnzEmtYCS6 zspd%F%v~XQX~@U^hsDtR_k1N&?q?mZ@zNMr>x(citaxLP54<5!Ch8k7 zczi#H{1o?dta;@k=_`Iz>Z_vpZwv0|kiPAcociX)y<~2mV;ETT;>?RFUN_yJ?ojuq z#|>UrtLCQ<18bg_c^<_py+HW61}~(q-r)7tX}nepta+*5lb?wRZ@tjcyju)*unuaA7Lu8%y-E61h26765Fsr~C}gEt6c zx?1lBF|gK`_$~PvSG+pN2YtJ+Z%2Mkw>bUW!~E`No>%dV`Mt^Db^Q~^I_?iX46OBK zena|FA5nhN{^wd{|MPgKzApXq4?cIFe_&pq!lV6=HMJkoY4A4j7OK>j#lTu$;U3bL z8Pd z7`#<|zD>KDZ;QVqeTB=UKAf+y{?vTC(d5*(hwJGW^CF68Tu%=hyyatcKQXZO)5E;- z2c*6zn0DZOaLgQJJ!P`7h^AqQiq{YMz}qLvL|&)Cn-Oa_9dF8uEU-1&Dua(v>jcWa}{cNYc8gZ|OdF!se z4?fPknBt}B``~BQ_oa^;ydAOE#k{<${WCA~Jc^g3{j*86e^zhs_HezDS|L9Z7fU~l z>y^1@IsKdvd$F?qFtDz_0Q3Bc*9!U2UK-W@Zkxdy6l-th1u?MZ$%GoAXH_51HtuI|5wnHN&Le4XGe!V8UOJqB-8Z!frCYOk;ObJABBk^07{y$q@L zvhfV3zQO0=|3&(VfwiA8=0y~*4)W2@6QsUjgV!wXO)wAlYwUR*=9Mp!`tq>R1H47G z-&1Yymc?EP^O6`?>r3Rx&$!}6As={sqD&mmrl0QgbK-@XpZyqE^Zd;7Dqbt(1Fun( ziM%F**CpUw1`j+q4cu5Sbc@gG?6)y_; z*j_}L$Qv+td$`^#|Ah1v-zW7M*PGi*Vj0{+v|%nFQ#}tT3^?y_4T;H8`RgI zL09WfFY`Q#S4Zp5U9}#pH+XyazP!|(i`{Y+zE z-QQ!(izwb0AK-!1h;As={sqD!#=HI@I%Z(?>b|oY&jun5*{bXP&phqxRXM+Gmr&YtZM1Qr?Z9nIDn9)P>T| zEaZcq`>`0&J{Rhp`u6a9Q_hWTG^?XKM{5!gzdNd^7UW1Q|vym56K##tkI&C!ZU-@>@ zSG+*#^Fco7s}*IUzU`+t_3dFjA7@@n@r?ESxWTK@_dnO~b)(PAJdfg~As_V3Vlkq9 z)*HM7`ucjx)%rTMOnxSYq@Vqe54?S%O!RZE&go~DzMtiDwVxGWo?r1wO=A39gBQ}* zX7Kj#{BG_x(wBLs)Mxx2%F>ga`Wl)=f1vrVLHDn#=x4F`61~`4N5=9ARl-`qDkT2UtQ1`OVgxR&AelE=WBSN;L%D-K9~NyrD@q`E%ZKEkPQMqe*QUDaQlc`?Nc zQvJ24`WrWRy-(D}&sGeq^?8}+QM@Y12Yp*&je>sG8@!P}>h*_#H81sj@-q>Ue)=FE z>ra%4yt!J#&ozw~#lV^uV4h#`f{+iq7Evbh+6>+vzE3>&J<^wXyVPfVpZL-foci|i z`+v*}DW3WJe+F-`sQDShz}nB^t)#EeFZIr?G>*x-%)Sku>yfi=&=yz<+mJ|E;``xIqjd#N^ftJ@kcje#{U@m=yWu6SdR z54<5!Ci12q@AR`-fBw1(18bh2d0xfK|4Hx`;f2;OO$M)B?3Hl+)nQ=G%iKcxQg4-h zuG9X+A+RoBy<25(3Id`{lg=W_~+q%ZdtsV_;N z&zTfuV*RZg=G3=buZ`FE`xN$mMwk~?Jp8_V><^+$lU zZ&H+ryn2)Oh|a^nnwPqn{7k$_`k91$0p|G?uk;VWTZ0$A z{xf*Jw`=-ZF|gK``!?yzoGbNJK|bi)T9&+}$2s+F-lOrd7+CYd%nK>r6yyVMRFsK+ z_87cX{r*bY)%}&?0n%6KllsQ!{>qRj6L}j|PJMg$eaaZ~A{AbP=H85A(`zl=`Y@e|JmGN7W`zv?U&2S~0M$zr;=CXS~9r_PM3LuX6g|fBE;L_p^F` zsP8jocj3p zFlj$T{2rz?FT}h+g-7jW4PJ=XY4GO7T+H={_Yds#6*8nR_Xer2o96cpHNUU?)2VOd zJDQ)}7+C9zFfXilKFEjqs}*Hp{S6qrF0nRceLf7VdF5}BzGAP`S6Zj~gBS91`w^$U zi3LqxKL*ykIP+qP*9!TduThkV`o;}jjlN!5clA8Gmw6t=OVji0vseu6e;T}YomYo} zwZ2rE{7jrJ{lxz-=sTo%bN_Jq*{<)0)L~%F3oy@L;nDTY zlk{bJq`n~JgT59~Cf485-<|q;pNd|~@e>1UUYL0y#jApR;BBe?-ed4q_5H!LtNp>^ zH%MP0EcM~@+rS%A`-2<1PJIWyt@$~HfwjIE^CF7Z5Bb2`C(1-WhYcS8J}ix&>rZy$ zr-ymv*Gql)`w_sK#bQK%s5W>z_i6g_7+C8|e4YG^D_#=vfj242M19i_JN;bM_j}T= z_Iv!y^D5pL?e`3cGLhG0@OH#l$L%wZfwjKO*GONgTl$%#@pDp*p9>E;^)+NQKTAJw z!wWGlpmSlD^#Qq`oxdV|&431aIYUPJKK2^?Tmc z^?QVQVZ}>AKDHN8Cf478!Q<~Eqy8YikIcIM$~Tg};%lY8=(gbX!3*iz-ZAufwec*E zfi*AAyqMx8As_XLGEv{S!5h)%_ik77yO(($#l!Uh@M=Yw$g4Ma6JOWbOFstI`cnJJ z&%|q_pRJG&yhc$b^5!0N`q`lG7nEH28DO4Y@$maYhL2ZqJRkBS z_?v~DRRKNvdU|JG^D~cub^R5tCw;jyrM@KOgP)V4Ol&VJe{t%YI819V{TNvDBFqab zUMu8d`xIp&Z@}QSi@A!&mpTlrdF46MS3E=N!|#6u-XVD5`R{)Xefs`czpMSTIP+qP zhx>1+Pn3!J#tmNYFSPn=#lTvhmw6t=tAc#sZLLau^#-r~uNtoo18ZI?MSdn;sr-a5 zM@B#4h5VfRv(wL=oW{#zV9g6K&#!n%$Oqn}C=>l`GkBZg|HADhi-9#S_a)Mo>5}@U zNZ+W^xAcHh-&=mK_4gNJVAJ2vVbuAH)Zd>BiMQ80ysrBDxfRf(`#X=H^!%9^KW%vT zB}v*t-yz;X7%^|JNyFb7Q0HM_&C7g&^rb@5&oRhHo+uM}3tLWoo0}Rh zi-9#S#Jqsw;pd@&H!8|RUZ=rp(AS@(@4Mj@K2Q2`uaNq(kPp25SPWhN{n4p!51${4 zFfXil#^=Wd3|{+BG(YPwu=cZj9qB6urM~q$g}y`Z!t>vKPJM&=eqGSjeqEe-F~!6E zKJat*=aM&W@VdUF>GNS=tfdgVWFUhjktX*1Q1o{1qO3pT{BfeI9KFuXjn~wPIk+%Uw(QGB1<*svsZgZ%fU$ zOPfx869+Y3KL*ykF!Mr+*9!T-YZPT-fA2APBRB=g{nl;_ta-&*(pPw?)aQeI;MIyU zk+*TLQ(yBpG+q@3*1Q<=B8r!%{enfcUodR&mT%K|Nerxc9_E!#llr2N5BmBGF+VI64Sm<+zwz~75(As{(ix08=bN-XyBHF0ujz-s z8FW?!^yu~3j6QxwU5%fG&yc>{sZw7M@MhvxHrM=C5VA_e~2?Lrg(Lb4}R{7JrDGA+~CcN zu~qgz46J!x=6Mva8}fnIp~mZagV&V-gd9J87+CXCSCgNK7fU}&G=8qB@pJBXPCr-w zrt#7kSn~qR^DCb5dv0w8Z}2va7sSAtmzySinNy^`I>^WR6LTuo-_mcL`bNZ9!1dSd zYJ3SZFQj-r8eeMF_|jwWdPQGhUaPDAS4@z;!i%K7D(Zh*>iNix-#GOhnAQB8!ob?k z81o{E*AMyN=RQ#;`Z;Xy27jdSf*4ryJj^S%OMP{akM*b46V)aUA3>4*A&7xBFY#&e zGhX3AKJvsEiTbARar(Kc^U|((e&%@|2CwTDjfeaB_PoNUNMEi^>MJb@ z-Wt5n{J!!lL*Mr_ULFH$eG%q`6)y?-s85uM`UVVMv)*2+T(y_-CrMv1Aob;;VFGVa zwa@J}r@om#X!@cUSnG>3FQ#}w$j9~~%0zwR2JgTpHQp2k);ursJc`#3`M}#J%0ynh z!JGJu#_PwxnwR#gCJ|!V9E6ALIkCR+NdnjbAwR&FlB8#xStv#h4dSyl%(`UWZx_4ja5?eSE2M zHNJS5SAM?KmxqTVfVU`~kwAUb2Cv~h&Cimn{+_s!{ERDJmiqgC)!(OAoql%BXgnVV z)_(e#=T*GY)k5DIywG^vWb&@pc^FvpGLxh)b&~Y6G)Fvm;p@MAs=|NSd6%y9x!+l`ue5c)%vA;1?ek3PwH!>^-H5#zibzr`WkN6^p#wVXL07m z6faBT*?ufW=o>e9%hzhWBnH;?=VhKp@uH9qe)fqnvHt1}-k|6!+&+UCSo2aJB|j4< zNI&Z!A9%adQs3Oqoqo<-q3MfaV9g6K&#!nv$Om4FC=>Oy8NAJ+#>--0&C5-YzD$eM zHwF2?8x>_DZz=E8*ZdoeSA~H!FU-7<;^nEoFRK3DWAK)*(s)S>ta-)DNnhc3sV@ro z*j_}LsBhzEPJMfr-($>+D4sFD4;#EqaqorOC*F^-*XLng`8cU>itgu(s{1+B25)CV z^D~cuwV#P`@-wb@NyrC3Cq{7f`SKeLbzy#2y6boWg>6mM^1gK;#!91qcjHAycqK$ ziZ=%Nz#9@}B5&B>&D^W`8O6Yw=V4yiC-ns(A9yXIOypG?yw#6tyfg;Zyu@YXXI$~d zARqOKGLbiZ(C`x225)df;{`FW=4C!W`clu9e%3)g z@OIUDaN%~RzLA?WUN;8Tyb$vOisyrT;MIyUQD3LQoA|EA>&L*FSGbh)<(?(=wL(7d z8bz7NTUmDM>%CdywPIk+i!d*&cvX-Oysd9znaCS3czbvrr94XdiqDk#jOS6dZ*%Ia z(c8;9R=vqxWQ}RulZSrfi=&|Jdfh7!-HqQI|MJ}XT8Dex>4i# zFtFyOE+Ib?&yaqW;QtG}HK76PZ*Ixy=fux6UOxubya4n3iq{JHz-ts`BCpNhb$wXl z`7p5NgzFh^ZNKX=4$*b zzMu3Jj*oE`W%8gQ= zaXnUT^1h1>b^6)-5sg=cfi=(1Jg?&A#{_Q?UZ{OG znY?>+9tPID%tfRx^)%@xem@83TZ9+lE&RZ#Z!@d$vKUzNLd**&-W22mZ&Z|tes&tX zJ=_l{43oax(NdprKVaqiPJO-N+KJbLtr%GAi!d*&cvX-O`nJ@3J7Dkz4{3e|F|g*9 zW2CS6RH?5H@`1PeBPiq{YMz}qLvMBcc;tI>Ju<8F9f z=6Mt^4f(*E#bSiMdV@FeO-)}n2G;sg?;}4G4bo2^Z@v1Pe=6RS`_DX$u*q8_2qS~LYHh9bW{kWv7`*Df)ke_kIi$Xr| z`b3$iZ+g+`XV;~gJ|70w`uxoEDqd++@Ydjk>aWS*^@_Pzj@KAi^D^%yeW|BNKdT@g z^ljZBc?;ih>RT3Vmw8DHta%~k1r#qz{h?3whfagH`91uC4qgeN&K+ z?NgMA^|x}fQ{NtV5$1*eZ{C2x>$*(S=fl8SU-@06ulQuCuk-3cO!4yYU>){9^?cp9!Rx(9(9Ka z^=Ik=@-y*2($6I118-84iM+W3PCpOm`%6=<_Ll<8^DACI?Jw<9`%7&GZ+=Aca|{D( zKXXH*FY_d+uN(3~Uxz3Y^)21x)YpEK#;e1?nipnXNb%Me1n&^MQ2q57ypa!UylxDv zdBt~f2aw>Kpu+#tUL#&5JQFqIh+X54_zguuS9)8@%N&YP=){ z);tgM%1@N~qL2@~K2av}s!iU9bsh%Ryu|tBXS~9LeB_BTkvE-j`niYaz5UGdDxUGY zcay=}`M9PpkAbzm%sWV5>Ims)67oUcq$m^hEqu$VZ$~_P!1GZa18ZK0d4UQK@{uRX zL|&)CYu4`{Rk^x>ye#B{zWriP z4)qNfysq0co(}_SKg;KlzTy+4zS5H5t-%ZF+y16gU+?ENUMmLHyg2h>idO~spl|Cs z$s0F#%^8hXg@HBC%RGq|cssCVqSm|ke51Xe#kZ5bLXFgygnZC9Dau5B8((wkJMck` zH-&+9{l%CUQM`W02i`tWCh~?2-X8k9hk510q&}m+R~x*Y^EG{W46OAf`pM6@;w2#; z{S;-QzUi+z{ha@_#v8-Hn&)SpSMjH9T0N|^QK(QM}@bNzMMzu>! zpPG+W_B-{}Bs4$QUDaQNd11v%Q~k}V`WrBK?Qhq3br@LtS$+%YD?U!@TkjY3cL-j1 z{`-nkUxU8hEnVS;7iV5f@v@K)?PWg}Bj$&3gV#Kd|Hk!Kg@Ls`FY`Q#m%m={7U6|> z^#-r^fW~XZz?zqOGx?dQl73b}KIq#L*Fe}G=5BEMxg+XUt_NMUmjLtpikGDJGO5~2 zo59<|_mSn^MEWxSeq2>scKgX6t}(ukZ0XBReIxq#((P(|2{SLGcs?3mYSsACWAOIy zeLBT+Nnhb#QlIgCIvev&eLG*)+Dje->-G|3UZlce5 z4)TGwtNKHy!P~h~ zqxypv(l?iM`ZxX>c?Gt4pZ{rJ2 zeZA*uyjBdXc`@ci6t4>Mfw!f2!v=3zU!Nsit!r^e6e&pZ9B5ql+aeEE_aKmE+}Dqb4$!OvMNMvN~_2Cw-uTK!dF zU|oNi*OR`~j`TA>BY2DOLcE3Roccx*8m}7zYhH+X0mbt{KIp3zWn%qxn!NYvJPfRP zg>KT9dr<20K|bRW!3#!F>uM~JnBqktA9#JDO!RZyOq7+MpC&)yh3CInr=NpjZOZ*Uh=H}f0Q3BcR|omnUOpgs zZ3b^ftfiP2#lV`EdkyK!{8j1;()z4Lt(tjQp2cBa6$aM4F!Mr+m;b!bw+Juf zXOF=f(eFQWV_?lIzMAwEN>ZN>^1;tqQ6{#Rjcc6xHs6N-7uJ`>z?v6hUPSSxARl<6 zqDCp2CV18ZK0c>%?%gM84pdzIvM8oVy?>^Zkj9|qRE!amZM`?J(n`ikJK!3*hI zx!S3({R{YS%&Wt|nipYSSn<}WzaLWleZb(&T&wZ$^WFBm@|mQs_<+=eIP+qPw?0Pg1zyO{af3G~_F~!3AO_YvFY`Q#R|omnUex$fZ}67I zSjW612G+dP8RTc;PtwmQsMVZK3`m|GD&7j6xKhF&>%)F4|r6C`9vsjE+pY<5L zt{#o&!@yc!v5WK-wxqsNSn$^1g?JlNPJPQC)p$t^ta&l!MHDXz`Pg1Wnds-R!E5-e z#w%UphUZ~k`Hxax7V?3&ABz!wRvWy{eHt%|fwjKG>Evfz@unajc%!0B)HnSpr=L6L zYP>uK);vG+yo#5EeBe!rGLhG0@D7Nvfcqb=KkRv#PSTgUPx{#p`M}$!#+QXpI`y?* ztLdx5z*=93c>%>+pB21A@Iv+1Y4Aqgsqwlou;vv)q%Zdesm}-bps!YxiGHqp!l`fd zQyMRgfi*9}ys+YpK|b(?M48ANFnBZidMS#5HLv^%(pTJ+`ht)TycSU=^0u#X>g$@< z^!YHb=Ea#8Q@j$~hy&glyiom(8@z_sX}r>F-SE83^C(^x@`1M>ixK_3-r&`Uv6cJ7 z`hXi=DoB1N?v;L~As=|NSd8G!ecb8i9zGusV4h#`jL!$O8N6lDmgM}7fpz`mUQYTl z8&Y2s@npyD z^c9LyU+HtyKH-IU8JylB@A0@lx_Lu6S7*U-qlxO*bb%-*NxAIY^zCrOU2lqexJ}P@&gn41b ztE1;bcGY@tz~t%c-Jq-WZuwNwSNyHiR|ol^Z&$5%waQOIYo3>R9>r^geBd>TGLctr@OIv=@$wj0^HLq;XW}=~&m`mn zZ&H+ryt&Jrezw0s%drkdJ>r6Z8ORY&i`)R!1C(1$66+K3n;)Q{T*xrZ0+twY~`R!ipD!e5k(`Q6~C1 zVDMJ;@iXme{4BSTzT(|d-x%ZrZ%Fm`?GHKiZHl#qoc}Pe))!}9O!1~5A9$l`{W5Ow z+Ar1oti!;X=VhKp@z!a-?vUEAt2cNP?HaEi18ZI?Kz=5EA^mKHe9+e@%EbDc`=Ha$ zk(X<{ZVaq>0p|G?&j1FQRz;kPp0lqD|R3@$h~g=v#vq;!R)b^t0yU_;1WxztW99Kl8kbmxg@c&0;a)`l!j^&77|B zq8M2FnR!0xOBJM_LC6PQizpN8Z(-D_Zx8o3L(B^(o^gM()8N&_G=1y%;EJ`r!bzkr z_j9Q)4f*IN79;#zxx}fj_d<==ih(sR!o0BJRY5-Rw%#Rq0|sw1sPVEGSo6v!lD=YI z>YIXm;EjqhvHrF%cIw;1{o6S6Vv1+nza2MuqU~~j2)gPIUgmi!Jn9d-lhV(6gSR}W z`I*GP+RxPU$j`*jq@Pj92S58nnds--`<;Hy=<{vV)qERZo?r2TG~c$U`L@mAHS}uw zN@u&#mpg&RT3TeXhSG2G)LtnHN&LDCDD`qD=I&$Kb7A ztm#W*V9hJGkiNoCq`oo82i}k<6L}jKIrYtiG+q<~YhH|b5ycBaKJZ#ZnaCS9coQdT zynYOAK@09vlAs={+qDNKFiIduXsr6n}U4cjfyg{eQrmc`bJ)@@wzdv=Ea#8Q#>E! z1Fu$;iM(-x_tHV__rsrtfz9tl9?huZ;HO3LgKB>{4}U-Wm+&_mc}xZL=--PRe812~ zzvmsqz=n6jv1H}V@Y9>fI~o#iuc?B+nRnxRm64C;HM~;uv()9r&j3UHKa%yAg?wx; zSd3^dZ56EiJ?|F@9_fo>V59F~6Y0Afe(DqTodJor*R;al47%ez|A)RVegD(vZvT^^ zp@ULi=^UYN4PHoJPX){R=Ed5E`}-IM*6p+CCy|BQC9fOu!Osp+CbrLwcPp99J8+Wl zlYSq43Il6ijCm2o>xX>c?Gt4pZ`k0?h_x{5i(+8S^DwWxEcFE;A9yWleO+zv<}cCo zjbUKTOFW1Cj4NI@1hq0`Trk7zu6KF*%!XP#H_(vT0lSuBR;KZ7^&L5e574m`CD9S`$r@@jz}r0*%S7JF1x|hKEgG*518ZJ{d11v{KVI+-!3*&Q4Bj5r^W|re zzG6=5GuHFlLx#S$==w0Q))!}9O!3y=O#0x3^o^Um6LlU2);ursJQd#ahzBpkt2cND z#9E5SmnjUad8ucTpNStzKl>pc+RHvsCbpNkcRKyt?9}vSF|g(ZnCDl#DaZ%js3;S8 zZ3b_(RpX^Gu;%5SLHaUTsc#JOfj1<|MBdW*PJLbbG@cIwYhIXnA;l}v`g%>RuX_w$ z`*|9#4g+gm@#&sL`WnvAcqLrSSo31cizr?e@`1NstclRi zVS~4+_rI*G{^wy{`TJ7e6y#%j5oIE;+TeAGxsm&W4+Cp`iDSsmxZ;&A5WF>bAwQ=F zoqpDQQ1f&BGB-Rw^Sp|ehJ4UBi^b6VXYh7(ULFH$eVInmm-?RcGYR>?oBV&QopGEO zMg9NR!%H#E^$-=)S`X1Mt51idnAv(rf|;#{q?qPBTmhlH5rdPs_Bt%sy%mfImI zX0;uXp;p@=D3-Pzl3`ZcAt|P|9in0uzj@F5HFMi;KHSfjAAj)tyk}?TdGFbo-Tmxm zKXpWmo@e68@cXkR4SQ-0Kq%x_}JH|F4+&!C`ke*Fh*Lvo zl5Z!Tck9`Y$Fu7JHJ+vC-IktL9M7G2KBNV{X6-9IA2P1w+llAP`$lqpy{lAyrRU36 zyT$y*pPieZCIyxEUmJX_+LwM-&d+rMydI{Od~2F>zL0{-zJYx?zy6=8{5;WKtcU5c zPnw^b&MoFQ<}=dA@23q4s=S|`3)QvaPkqw+>8He9>9viq_#cT~F(mr$`vu#+nDZqR zRPpTw-~RC3B^s`648;HN?eSK=@$$Vk)}Kj14l=ojmLvjB_{Ez&O7!v*Wc#fQ&8_(>_ioW}sIJHN_ zpWYosI z1CJ;BA_^+|`uE`^`&KHSFWL*=EZHaRzx8M9G}Zm3vvT=)6jb)L!`G&LwrDSWV`ZP@ zn^E$uY{~fo3M%^sP0nxNK9!#<+6&(l*(dq7ezut3oFj5Rhl0w!PWU>s&l2s0Z@BD} zeDh1bHTmm_u&(QgCioh(&lBy1Z@TQ0d?QM}k@8rF^`0G4Pkudn^LTcxP~#bk_QJQE zx{>p9=~>0`T$Vq+_;np$THtHeK1Z|{z6r8V%5PlBH!}bJD68vwqVHXtUvIC@kFO_| z>+6Zt(~J2{8=0FgH3}-vmp1rXwa*akMSffMRpU9e4^5U{$!uD{#JaZnBUB!b3U7b%Dz_kTC~p;?S*gqN2pKo zO)UAQjmY_G6jb*0@4@-?{Yd3!i1xy_rAhhLPb=oPuk&Ds}=_9DN9vQHY%aV6iR{c=8wg37+W-8jGAAE^8?J|AtA z=Q#4MZY$>3cvQ}pj;qJl24Ac8MWVgPubaA&>wRj;xA~x)FQ%Y!egp5|{QB=v`30iA z@XeEbQhu9GE9N(i-ZH4;XN`i&z7F`>wU53ZB79r)^~>y%ukrYtkDiCE?rVT=aJkAa z;_Ja~eLXm=HYt*9>2i z_GNrN+NjS*qf5T=AI*)YNkL^_@2;F*&)sS~(_`iSTPMKtbH%5N`E7n@&KFZq+1CnR zi}nSgJA{Y5&bH`Nr&%^BELW_BFxRpnZuceX9gGzY!(h%!6}2n}W)|o?Uo6 zyOyc(G(~%n-*$ccTzX1zJjckni}5rlsO)QjuUY$&JvcuB&Tm}FH))q#eij9leSHS! z*L$bRFEgZXqX7F>f3le0%KZKEpsxGnZSb{fpUd~lr|A3TQ%ktS}uw{2?9 zmrzjI*8tyOkIF9;?S*fl?2~-MO1|;(SdRH=Qc&5~^&cM3PVGx4NZ&dE9?!*7isLym zf4yW=P}$cEUz7HkqCKs@amqKk}p6{vg3`Be3nR`yB0aV6i%lXLk66jaWyZ#(DL`yG{^E85d|%09`r z`ov;>V?LPk85C6ZwZYe_eaQ!;Zw2Q=H6G7S?Th((V!6JaSln71&&~P$7gJDqzBI$vqxt?5 zdSYV9H!}bJA)^cb%D(<>oL^tJ&X3%ASmwjrNrPva?% zA+-Nylzh|vlUolp3M%I}_zLGYaI4DC5bcF;%fHon*!uBeev`yGS?6a_P}$cBUx)T( zr^);_3h;cHU-r=>gK9kMdw#G9zJ?)R@%h0KCErdQuY0!gcy`^Q#j)bimiHeX(dy`;WTe^IyrgIlunmy4GI@sIRBM=OHRo7JPIoN`u@)O^?p<3N6#CJ{Km>Y zY5%SMNHM=P^4TwvFa`y$a^_`0bZKL3?`+vK$(@=GYFJf02k4c@5o z3;FtUp}zhcR`M;&zaR7KdOy~+g~zi~`{;Q&k>3RUer)kk#qpf^_uTc8O+n@Sn&E5G zK2x+8zU?nipS1r*mwe0epQrj1RQB~g&-wM-pvKb??I}OmC;3*4E9N);rCfd{1(kiR z@U>`P`l8HlodD-IvFytq&**qm-Pivd=hwGL<(KmH**bkZTi;U5Z{}bwKbwNe`L)B> zrhTSpPy6qmD!&;e-<hl}}*uhH7X`ZFo0 zoL?t=9omJJt38?$FFKZAnGzBc$;wJ+iMxk}H^sX5<` zd)*}NTWon{?+16#M-r27-0OGZ@UrDu#1B}8VVrW~Uat)M;SRBFjW{Nrcw_5dw_GQ# zBB;LF{v>Z-(tHGOzX;oL|9{(Sx%Hh;P&uE@O+0=b*Q)UgMSC%R3uT{j{(rDIe%tc* zcapm9?=->JFy!O=I}2r>??sl5g4}x$&$~P&vPWl=JJqM&)OS_F_D@$a?@Zo}1oZ z%x{|ftPJ_pD5&h~fUkYXC)$%wzyF$D@+}kVQlEc(3M%^=;2WH;@^eIc;hP})r2K}J zd`slD1@iMKsO;{^NiJf&G0p8A3d)v@|!OE zr2IygeB<-?A597>=hypZ&abCajc3aDAJ^&ok1NI&^Begptrd)CwyhptD|{{57mM~H zzva}8JpW8A`8K>SH=Yp%mGkTW6X(}=waU*I?S*fa?32cG{rigfjgg;~AwPqH%D#5^ z+O#iW-zx2!QSz;PJ~y5L1(kh+&v1SNzRJ%P?L~f5WS^AZ*29bW&CGxPW>Zkv*9l*T z_L-u+@NL(hzs)cCCcP)O|11hB`|1(RaXc3smGik2RQ9#N*Q|Xt(O!(_DA_0Nzi}nsr2O*)R$b2%^gYe_ z^?ps|m;H;+e*!rFjVb2Wn7_VF>$<*egRfQlBEG)u*4MXFOTLx)>)W8N>)U~ioL~P} zRer8$PwPSUN#nWc&|-cYWbRn+5e1d^Uk7~c+UN6l&eG#KyX0FYKYN7Fr=YU00lvX2 zRep|WFY=op`=tDam3-r$rF{#ZNkL^_*B^L1JGCzr*IUB3PF{nNZ}I5jc+Pn)=W{5i z>}!UvN&76(UigN~KFK$_RRtTPx5$nU9QH{677X=xa^aBOW#`@&oz7H#xta#a(*rFHEW+I+EaeAPx6f``Nrhm zj~NtH_Vumj{CelA{OJ9^@U7DC$5y|mnBTO$bNSUMsO)QluT}dD(O&qryo>sz{HB(C z3-Z_3E(Mi+1O1#||Cd#MHPK%9M#(*tt2g2NdM;DrY4Y<}+mE3f$hYF%#r&onn9Hw5 zLFN2f;cL-8L$s&)GD`U-mV9$QlJhwfRQC1%mh#@}cuz$+zaWx%@&3D(Bbp zIFD!7m(+NAqP@s(y6ltkTY5loJjd^wo1Z2Hm3=MnHEUnWpEs=2pEryv`KC4Hd^HLx z`}%&v`Sp4#KSQ(^`EAk1&(-@E^P8E!UuV~Kzpf3wR_!zSe%*F?kCVo8YRNZJKKqUN znH^eBegnVe{Q56d`Ng8W$Zt7yBadgB_ABPMQqCp#g1Y8s2Yl_?=kolVqUY!AlCQBL zxBpVQ7_Gej8sHoJqRKB4?L~gw@|u>$b6Cl@?Jv3YkWf(B*Yy~WXQ%dsqP_4flzozK z@yOzM&KZ`=&!M2QuNl53?XyIC;TtadB;V+guTg$Bf&G`(b^ok)9p~5c1wEd8|Eycz zKU=YHF~6O7Ubhv#7VRrNuRF2iYs??d(kJTKfBlbgetnnd{6u@2FVqdc{~J-vZ{}Zf z^Tnp1^8RawuTA?*(O&qrr^+{@Aa_pmKhl@O2FNM0@hdKFK$~SCoru1cm%Dxu(nzb(y?P-3>?=;YOjw|`r zJer%IAqACveQP+s-dQR?PqY`l>9SAqtu~AKjm+O~rTeATeQofyYG2Iv2bb&ngHubs zNo#WXSrk;xZ{T6hum2*IU-q!fZ=(Rte|s168zb*^srf=dWnTw;?b?@!5A4Nwu9D9P z(Rj`-`6lg_n=cjxm3ET)Cdc8oq#n%D!g!nzYXq?L~f5WS^AZ=#p_L8JUB|Ol_*%3t<>x`x>E}TvmV7hw?;mUmD(Bb#E6%TPrpnJ0 z?ZtR**Vkw3_blc&Mjm_AdZ_Do)(&5r_9eUW@l$}ub4JOxK&}<|TnZ}ZHyCq%1Lv#! zYP|kN>GikuoyGh%$a|IW(f!NnzE1c$w9n`JpR5KMazRZ$+l5goA#qr#{I_HZisO)Qj zuUY#7(O&rG$v(+9uH;*iUw>X*>#y$@oL_Id%Fh<S6vlYFa(7xP;tj|JF&J_VKY zYlE*<`y4*LOwh-dsU_dE{CL*t8qa~BbAJ8jsr(Ec&nCEu6?m+FUE5@bt8SV%f3J6eNWfpYk+UiRr$rDJ^82`=^Iw^jnBXTGwXZ*_YjX~ zr}m|PmcDfY>|4BBaXe?{-~Z9~TdL2OX84-4&*b-i+vR&^+JB=Z)>sctUHh*Uz83AXc>fL8`)^{|m*nzuD5#uY{{x&~ z-{(|*mS`{L%W&BzjpzEtVt#A#&+~@{P$KKk4{aJ-?ox@pyKft;RDE2TqaSDt-K1I;=RJjrsf6 z^?jee1-@qOi}?Nf(D(Vrm3-s*{U-l@5|e@|zn|oh`#H6ze!GkOeJIa~3%j+AiTEE2 z{jmm}7(GlZ{;B7MdHu03p`eQI4EQdD?=I0${JwJWKYVAsl@H&?VW0dyP8HvCKjr*h zdxG=3e|O3+6#v8b!Y*%--!geD$M2W%DX8L`3*WWyogo^oZM4Pz@Llm%zQ?y6BC24$ z-%Wv9e~W%K`RX?e(=a+lPF^(S^~v-54xjw~UrnALi`( z=gB^4{S6z^V*f3Z-&IxlQSdhT9WiCmqtD;6^5q?qA89;W)Te*q<#h3KZ}D<%h}Yg6jbpY&b}9aCI*mwTf|HDJw}D>JGAUu$=_GO@9UwUitqmW zWPX>3`tZ#XFWGl86|(QX9sF#4Zas|Q>k0N56jbq@#J*=}f{1@&JU5D$?0aBn)|^=O zZCjBW&xC?1zNc2m{O%R?;ae_VvhR8-ccl&yky@C;@t{-`<8v%?pMa(=u151+hN#Qvk}$4b6iek8~9 zc2QsX#7p?7kbO6AFOBCMd9PWm2MVg>cR2fw6!qa7D_*j14=QBep=I9^e%=(vYYM9P z?*F08?-WrVzA54*`;MSO_TBe-DZiES-V^c*D5&B)iG7#Qp;G)4=f7FvCHqdMLiU|l z_D$L>6#95gK^5Oq_saaMEPTtwOZHt)h3va?TWLI}$$MRxFEt9P_>N}Zo}xZ{!^KPXy)bk=m{S^^U1!) zsE~c9mwhAUXA>CD?9Gbf`P|(yzu$=Z@U0Us*>?{WvhUfgrTiA;&+l&4^ZQ)(9VhC; zH$l8)-+@%fzRSwK&HVib>^};sjOT9byIs_WuUovt{-Z+n?OOJ&k^qAJ*?03`X*|a~BzBoPUKL5U(4keP*5em3)y#xsE_<+iI<$;$yCVsonQ7%qf?OD ze>DoK_+GnH=C>!Edc;35KZlE#?0exa+V{#oO8G4jTeZ)lpo;HW_MJjqvu}!c$-X0~ zkn_9dfB5dn`zWa5+aEqrU-`sK_^6P5`<8t(X_u+-v?-|KyKAW&&x2@JiGN}|M~Rp0 zd*fB@yYuDJcsBCyd*S0*`a(tD(d>Ij)Q4}Cc*(xosF3qJs_a`Jjs`kEmx3z!J<=od zJB|(|;-AQGf_TZk1F4XG55H8-@4lQbT~X0@2Kyco_2FA3ULrp#WZ&s!-9pWk+cd{epeM0LN_(6f&|6LC#?tkvY->YhduSxq#f3IqE$+tv4yNvtE9tG-tGHxaxaLS?+$KM%d)g<^h7xm`bGJZeCzdzikpt7(3yPRKNtIChQ&mepgWS{c$zb(c5rsaLLx_s^MwP_#yz8K-# zLT@AG=hHJvz6JT`+12M&qkr&ap%s+IZm z9@Mqodv53P?6TE(y1d?}==Hwzx#D;($gc;tuJzCYU$gen-2i_NC(I75S}`IgoF3$u}l{JfrXPRQL7X%K7yir^Ykk^WUnW z^WUaoelzpy!LDmPw8Gb-eWqwn`%kZji6!5H{CaomTJQb0aDIIsRr%5PcZF}1UhnG% ziusM9TS{vG85C6Bf9>$KX2l~EsbzdiZ9Ya2zpJVm>oL}-a=EpOofvB8c6MPNY7x8#@>+u{> z_T`VCXf-V2)V>-Y zUqOYcpbU(a|o zp0;RD>p}KO^JT>|#r($S$J4B9JX_&w(Y}(IWC&qoXO`DlL0H&cB2qUWbgLFM_`1Yd*pnWDWI&+Y%B zK50Bhlzcleo;}~-@$71O%kf;gu{fS<^5?I+zNsbO zlKlMi>YASeH*kLaHJu;N&#`)bZhESi-?IGq-LLEX-T_~`_BnihpPLe8)611i5vtY6_9`g^zQpDgCL znSO<;TJJFhmB+IkzBcU(M0??zC;O!FoKf;E$RA(m_Z3$64PM9j4IHWRt8sp#WS`{Q zy1tm-n0$UlUHNsw*P(s%eOi&u;7`e@pv|faUf+nMtpe68A7KL3?`+vKraU7yu; zei&H5`Sp)g`O)v&6ZtLF=Z8&6F~4p3`I6K%UpnAxAM){hS*YjB?6NPv9+JA&Lj!z+ z@6-A5dRVB}!?2QXbKV!%JOj~Q_~ywz$+z^^#qnJBQqJd7P}$c4U$gc(qCL$|*(dqN zm3&M1`4GOo_9&?A>${5c>m9A~qv!pFZ>+w4S^Zcszs>*1+1CbNtM&z=J&mXA zlk%Hd^6f-^17G9(`kUV}zfJ3k`Ay1?r&ZT@cEH!JeHkCm=-C^7zcRbz+llYPHo!M{ zh{~_@eb`|o-%ecbc72t{vs3#@*Sm`!Esp0-{Jn{0_?on@^!Fx4mwemu=f9-B^WT-6 zUyr56lYW1;n4b%W&VP>-^Bd34yYc#?zfV?uJ+#8tqJ8wdobas^;Q2DKVdm2yKC;4WS ze9Qis^Z681_6=Ua`3<~B<>!d@!Z$(oNxrRXiuo;*V~zZL3M%_L;p-Uk@&22j_uu@I zZ&H4KT6N9OCioh(FXQvWMty!5QSwcruK=n2SEHbEem(PeJi887<7tTYVm!C#`Lguk z;&?8|??1P${nr9tv-Z_^|Bcf7Z(PZ@jlU1X>o1|8a(;c6bAG)Csr*9Gp5~|Qljh6n z)y4eQMQ2A z6W2=}@U?4S>3V5)$+t3pdSi~eS8^K@-4`(2e+>E(Dh{=&ra>5 z^(6M+DA^~?m&Ly-j_3IN@rC|=SoQhY3}2J>rCX$LodE8CmV7($`|En=aDF|b)OePD zf8C0>nBPvUzgGBKw6C=OCYF3-^6Ss2YyI_K#`*Ofpz{;wYq9@U$#XdEzxBT?=J&(< za=)M9IttYBrYbR_4EN zA5{Im{r>E`gdXh{|HSjg=`MpSA zRT2Nhcy19dIlsrKkn?-^p;CUE|CF0AF$Gn|^9=UgF6zVAEnc$k3MypZ>1E$|`bx2y zpY;24EBT)DIKQFq18vdY2YQSO+4t;&rTiAiW2;(!6jaG?F8huX^^xBM@sjg9kP6v% zS=l#+mYmAZprDFxH}*XfGUoY7dsN>n&em|h=Qk?%rsN*Ny z@Daze?fQPf;s^AA;{MB={QGIAuJ_Z;@HJ^4y&o68;o3L4l25*9Kp!_Su}@Se@V0lJ7g>w^Qi#a5)8) z^Bb7O`StIm@|!H$i}~_l*(c4HP4^Y^+br)TU_4_AD*HO%YuCPj?@!Fr_a|nTd^_|0 z55B=YRet67eMzqJXz2JLgiVA1(cj+s3Fm3$jy?l_*&cvK(Hp7VJ;yLMOO>GOEb(&M@G$Hnnn zBah|qg>{`DTHtHeK9A22)AjjbT*)^+?=$Q2_08b?dUsR#rQ%kB7|(SA{Dx)qkBa#% z$j?ugg38CUHuze#ug3dtl-_?+OTH!f`RP$m**DP6`Srg;X}2@;<6xJ-=r7nzYYi-*D|4UGjb4kCZ#s-|iGt z9?xEv^Xu7FjprYpmgD&=0Upm4KPcw6S?*hPy;RqHX@##v`vRUX^Yna~Sn@UI=SxaE zx^jN~=W>31!&H6|&lmdLU7X+gdy4rr%40e5qrW#$-PaCZ+mKJR7xS}Q=0NLjM#;B8 z+wKtnTZCuS5GxK0j>N^K*X5 zw`5~3KaYaS`8C1UpnbMzPscOar#%0ad~4*~Rp%oLD*JlQ;qmO+MUAJ&>tVWH4@>VZ zj^|DsKU?5y*1pp5b6nY%Uw>&`pO5vO&H42jD!+(7AM4hikFCC|nBTUia{Di#pz?UO z!PlyNp=dAm-$L0Z?Z2rd-^%>{3+mc`1E1ym`ga({xOnT{S2eo4|EB2ux9R)E{8s)x zmtR0Z<@`F}YajB7_9DM2vQNrycF8vfi z?tfBHIlr#6csx6`&lK&2Z@akT%E!;e%ZlSUGM`^o*ZymUuSxq#f8Szs$@i%zbNlao z6jaWycRJ_S^KUhtudkQ+{Z#oId$bXcn0S;@Gq4gjSsB{*(dq7_LTCI`&Q*gLFN29;p@;oljqC!el?!+OTL$W zmmAMVDX8pgg0DgQZWZlCepkyrDZddV-?IFA@atL+J)hz6?0Q3urz6@6-vqt?mVU1| zp40NzFLeD;J--(CnzfI9pS)o#MtMPb_(&M>0Eaumk zUk~*6VXEiX24Ac8MLeF}dOW9=eB1bXi9f$hD0rLC$K>w|dhT>i?X^qz`Q*DqL-F?} z#Q#|6FWjLM`|szIH*F?iE^6duS z{_wpf^Gk>F+vBZ#JFyhq-;z9#Lnc)kqR z^JR3&x8%1%p^n$|_o}P=dfPa^o>x_VwrDTb-&olv9bZ;_rgf{BQ0Y&o?E|N%x}^Y`SGNn z@_2T_*D>UKoP7f9n_u$Hk=xXIprEp^3BCsHv)DIW`$m*}OY-Z_t84xBe459zYpWVh zo7dl1z5bToRvgdG^4yR7VhSqf*8*R&_64H7*nji%^~AW6Z)eVbr*eM1gDSuB`LDZ} z-%j}2;A?$r-_(+CL;n08)pdR!_!Q^Y|4)^l&*%49`ux7>)?$7;^Y{PYYuCQ=-~TK5 zX8zx=KO5j1%v64*>(5~&--7({#jWf3(sc@tXQ%enM0+tmN69|vc((YK;&?83jE)6Z z4;}@T*F!UWP1-mQsPxftJM>)vz-?xhS?Zov& zD|{{5SGt~>zfxLJ~^xxN?=UktA-t-s>)O>l{=S>HvaDD?Xsr+^q?Ztfg=R)d} z_TSc;T`sW#5Lix%?sus`&1jEc3fT)Q4}Oc*(wtsgU!#bFm&y zmEX1`=d1Gf@#J_O&Axj@WB8Vfm+ZTq3fXs5*|+SGoX@AAN`8-=B=b94)Q4}nc*(wF zsgQjSca`#+)|d0uD5&B)gME97`tS`GFR}lArG2OW4E72jO;z4&YG+ag}F?=dRm@w}|;+mQD~Reig$?*>sH z`7IPL*>^D&vTxV2ZwwzldHop_RLSp_Npd`&p#zxsC&qK5c*(v8hK_1C2c_{`KvPof zKbL|kzQfsf98E>`O%N~HcOVsVeutKQn;*{kVhXDG?mtoHce|($U$=P4zALDZefNE{ zl;0fMWhy_1f-1g~*morDD)CQ@=UDNQeS1(L`%e5HJ~4ZTd=ymiJvCA0cO*@H_{2;2 zsE~b6exsD%Br$un&!V7;??U#yDXt&j+b&+R?`bMz-}z-<<1cf*^cNL@bvMD0J1f-3o4%f3@+YKVVg|4k7u*>?mLvhSL*Zw{rTd=3Rw zeEYNSNJ@o$W5rACKPqJ3zGdJ4Ex)@?kmLDw`Q3R#X*|dC`&&M~m=uWo-saNfkmrvU zz6Sm-6%TQOwV`^*v&<@2NA{cZX=Ww(&ag zKSuJgMMIhWmv3|47gzP20pEr2-6DPdkngOw^8L@_%iHGn+{Zb;*UsSl4wvIer!(aD z!u9`O^P3CbweXelyW*{Udx@igUJuXH8;vUSWjFZthwqo7;o8Q##sA1}kGJw2d{yrH z`t`5XbA8=)JP&H;fV#eZRJ0e@*FT|d5u**Ou}dLkg9jK|z)LE@a;`L)R}G_4UgGL)S0omwl7OR_(JWsN#F=qcXoY zhpu+9X8sgTF>m9KMtlW*MXU@?wcE<5+d9rjc)Q?0+BFnQ6i$%{U@`{ad>MGX(^BKFvhk^71b4~V}`Ew=vp`MKm@bnr#g za={S3wf?hXhj7WYF?q)1T~E2O@h0m3#>RWZ_e@S+xU2ZV z8?T}gvGK;!vet#C@A9VDx~JGGlA9yz?)621=l8ng#T|iA9kW^-;)QFKDBN=PmkO@G zA0{@vEDoKM7w!40$va}v$>gsbB1T}3UBwS7GI+<1k-O2)yr{7z%EjMP*`woe?v;Li z(QwP2;^(J%UeCWLetV^?{tNIP@HX%ppbuUK{tZ;FgP!1i-Ul8Fwt*Lbmw}z&H^30w z6I=^E1HJ(M2izC_X0Qc39(2HmHt^5&#^cNvz$d}A;5}dfUIG3TJ`eG|=+8>HzZURh zupPVtydLZY9|jZf&)|#TtDyNi?*CBmBj6{%&wv+!mxI@X-vaLe9|r#bz5+J&v*$4I zSnxC8#o(1-7kD@L3$P!2790fkSkL_*03HDz51tC11zrMP30?=@3f>E@1)l_;1z!hu zf0DiXfk%R^;HltQ;KksT;5WeUg7<-sflq_agAJG$2ZBd}9|2pz)4>ZsAG{5G6jbZV zzLknk8+#oBR^vz$L1ua zbrQ2S1?8V)8mBNbFgcZD-(dzAr{r{w)6by(nM~ueO!FM3buP1Z9@Cz|bY?Q$3z^<5 zrvG_n@C9agDKq*KGoH;%<}lN_%xoUhxRPmpjcNJJS|`e{Vfw$u_OE06btwN0Gg!n7 zZ)7H54fDbU126_N(E28~b3kA5aW0Qk`~=4-VjJ_#1AR4bmvBA*Ti`9s5cLw!z&!PD zT%IAex;S<~AB?~hG_ekBFu;0?!3?wxM1PSU)xxf(d9G z#QoGj7Yx7{%s>n4&;cVb1UiWA((&$)^QDV!5GXy%R-)@4@O`Lnm8WVpa&+P z(TqGn7Yx7{%s>mr6$kXe6f_S-o}dSYU;-LAF4aI648RPu4nv-x4@O`LnmE4Mpa+Ja z@jm1Ux?ljtU!ZjM^uY*BLGw6x!4OP9<74oFE*O9@n1TMcxxRHg)4v@= z9I5i}aCwT@{5a~}!L$*3V5qi-ygfl|*c{hD|9cz7hIX6RUlX<%hdSD19pfQE(xnKasUK zxea=tzY^_!$_!Qc{V4w#xC(rLX?&Vl16?oxV=x0PhwD3F1g4;Q8gI8j4-CNsG}_<= zT`&W!sqlb47=bBho(>=Afgxy2g9r2<=z$@afVIzZJr@kX7|cNHYbin|O!3?x!a(y3+z!Wqu;O#c(fgzZH#)a^L0T_cBXkEnh9MA_NFa^z7 z@PZ+jfX2n}fi4(;F_?kY=ivn-Fa^y^-~&A{1QXEs0=%FL#$X0oUxW|z!3a!2^HO+0 z4@^MAgAa7U0F1#5w7vu{=z}R}cEAUEULNQ1p_b!Gtim~Kj?!IXkHF4=z$@afW|y{K^F|b7__c{5A?wZOhNN2@PZx~ zf(cl=lIyu(0LEYjT3>}1^uY*BLHlc5&jUj+0gbD8dku8K0F1#5bbPMwgAtg5=GDC2 z20btY6VT}7dM@byg5yBNF+9Iw#wgD~Yd)7dpbti13fk9jJr4}Q1T+@#_8RDd0T_cB z=zN{)`(Om7pm{BCw?PjK!2~p}LqB~?7jXc_YWr%`dzhJ_+*-)71NvYDrl5H}*Rw$n z^w*%@wcsPn5Ze>bSj6Qu&;?^K1Fajlo&)+|1g4;QBiFM*|51)T6|X}-e`dO%_g9Yn z-!daG1zs$5% z{1238pep|-;z4Gp%C~ZysQ49*ji;D3(A&nbtKwHV4iLv+23mjM?GEU@#<8#B*E#mK zGb5Czpt%v--(cD*2177W<^SS(#?xr`CbOpEe{<|24pjMnxI9Ljfz}_n+yQ+s0=*r) z-7|KP_uaf*m?^fK&+v8|^cqkPaj43Nae1QRT{$-X#O-UK3wn*bJy7vGIF1o#przL7 zZoJ*w9aQCi!Ox#E{e#gj=ndyM1QQiwyRipvuYoQYfH9bX;d{8g^-iV(hVSLrSFy!$ zgg8~@hj6*MC({PQW{y1-gNceq^LAq|W(^Dv<=90WfH9bX*1Nc#1NvYDreHXR>zR8q zZ7@8H-Z#qZ;K^F|b z7|cLxU-&^EjKCB$N5T(!U7_&Goi48a66 zM&aiGT`&M+Faxavxqf&A(?RTmk=p)#)H{-yqTGBp%0IxgRs2Dee~9U+axhVG4fQ_E zG!A0cKo<XP|WqmphGm|ec(@UA= z!{8dG)q!{|vvwKN{xZ|KoatV{^sZ$3Utp7qgMqmn>=fMkxU;-NL@PRHEfH9bX7S4YT7=bBho(~`BfgzZH2F{-~&;?^K z1FZ{?C+LF_n1beo@PZzgfW}406Li4kU<#TS!v}g`2qvKMd3Zq=48RPu zE`bm9!3a!2^9x+h{4M;5Jun1~FTxADU;xHo23nWG5BgvP+8%HBzz|G8<4f>?E*O9@ zn1N0Q*Z08)OhI!tZ?{1Y48a66F5`MG7=SUDfz}+Z=YT#KfhlNynd^CA2qvI0m$%nI z7Yx7{%s}gMuJ3~pn1bd!-fn{)7=j6CTmdf_fH9bX)>pWm1NvYDrl5HxykH0>pz&4s zKo<vQV^uY*BLGvcA=Yb)ZfJPT@uYoQYfH9bX)?%*jgAtg5X2RRe-+?zX zZO{WlFaeDvT+amqFa|Tw?B{ycx0nv-gAtg5<}F;$14A$Yjazwp4RpZ(jKK`Fy1Bj& zMqmn>xAArx^uQ2IK;zr+f&mzV8ED-{zPC(-xF0X;+(;T}h{v*eMil5=w{1f_8RDd0T_cBX#EI2FalH1{4sC0K@T)HbGi99@Hy~#W{7$TXhhh) zh3O&=z*ud6fwyOft)HOX-CQJhidy) zY=4EBpuDz%V;2m-7|cNHKCb70J{W;1Xs_gY9vFfNX#AA7*FYBxz!=Ox=YFp5gAtg5 z=FfP$4SHY*CZMs3>$zY6#$X0o4{$vP^uY*BLGwYbXKrJ9h(lHWDz?AItnJpo-vc7=z|fMg61%;XM-LXf(dBsivIRy))2d3pthT+ zw+}N$d8W2Eak_9D|wK{yyFwjb&Pg zG9AzdBQRC*5nRt4gZA%d+A2O0rC=bB|G_b#GpbJJH4OoN zg60o+yA66^2qs{R{xZ-)`x;{J0q!RR6VP~&%WI$u24DfchRqp*a1^80*!mQ zzWF1j6~WibwC`g&KSg{$(*r{=0c+^b1p_b!Gtl}W`UQP30#ne&&*gz3n1IHQxt|*7 zf&mzV8R#HCAB?~hG=G9TK@SYU1T-){E*O9@n1R*`L;p*jP7K{-)GjI2e&eV4>QAYD1U_+jc3M3Gm{C-^rOt|V@$(lnypOhL}u+1OnWlZ zIhpC6!t_pMS`ITgjTud4#?w%K2Gcx?X`RiieU53nOsAdcp3n3yVEPv^gNvCV#w-0I z$C<}8W;4w>OlvN)Hjin4h3R~i>0ZV3u15KMlrKQ}wM>5@Gr69b-oT8%f${+HP0S2T zyAa>ZG;U#<-OTtlW_UZZwv8Elhw0sc@>fC33m1&R479$-^&HR#BQOO`%qtu8zyvgw z!Uwuw0LEYjT9}^>=z}R}F5~`e&;vs-0Sz_3K^F|b=tJC33Yslow-`d|d6po!y!4SHY*8pk3}&;cj==z|fMg67BJ1wAkX6R>7;Jr@kX7|cNH1b9IojKCDMTe+SGhF}636M1_L zbin|O!3=ax z8lOgnSCE|A7Zp~9FBdkwwmJzajME6=5q5irVZBC zaO|mgEyuM-nV~9Q$Fb3d?Vt+=U<_uUHI?f-pbw^?c{*>mK@SYU1T?0>3%XzcW}x*M z_&^_wz!WskfEV<@5UiaE-(yS{aRA0(23phM1${6AQ_wz(>v>=ZCZO?IctIBoRQa!Y zdyF^(owK>z2O}^A&2xCW4SHY*CZO>-uIGXQ7=syToy+wc&<7(h1x=Uhd0+@8pm82= zuYoQYfH9bXRy)`C!3a!2a|Um>K@SYU1T@Zv7Yx7{%s^`<*K1p_b!tuMg``d|d6pxFU0=z$@afVJ6N&jkZ8 z1~bsQ3|`O&BQOQ+Ib6>JLofl2FZ1>q=z;+lgBj?|<@!DtfhlNS&f9I!14A$Yjd@(p z1p_b!Gtjz%>p7qgMqmn>U*UQl7=j6CT*=#OpbG|I3}&G9Rj%)Y5txGJ*Lb@PdSD19 zpm7zvU;xHo23kJXb3h-Az!WsEh8GOM1T;F~16?oxV=x12zd`-Snbv%!4@O`Ln%D4l z8}z^sOh97+`UL|p1~bt5I_f>abP)Th{I^^lAx=T_S}wQ25KKVhI`j*=Do(gOQ1S0L zjuB^|wUEmlFam4q(eIPYRF!Yw*u0);gSFqI{!>g33}{Mf#zb~Zi5~ef(dBcjDA5E48Rz)mcR%4U<9V1 z`7L-s4-CNstlh%(TrdD*Faxby;RSs#0#nfL=6W6&f(dBc#@lP4tKz?Md7$C}jx!Z+ z;@J8&(*bMGa_l3Hz!WrZ=j}FF+sv`2;=dujn^}8~nP9u|9h7eYRr~_Su8RN8af~ne?lKJDFJ;zVM>!aPKI+AY zGtk=3_5B8J@2D7zR6LBgrz+l+W51DUzJY$;!Lg0lQ{}sHd8p#uIZhB8|Kj#F&;tSJzK@^;@DI1-W-RB6IE_syC0v&l>cu@6RI3Yv#=Jsb4E5KKVheO#{wx?ljtUA`d|d6p!pH5XM@?NIrb2TV4}7= zygfUOX&lY0fms{2Pi4BQ{B({36;Iz<8P$ zb9oK13kG1U>U|#lT*9=#azVn>Y?$1-COp z^lN^RW6NXKI+*rlOy|o?_j0Cp1=GKh8GMZy;peMe&9Ob7=`3Kn*D}3@On(tGxRGgp zlWE<=OuCrn5@z--rgtkd?q(+6W~Sd^W`|)s?!fl%F{7o-7~^Ez&2hRMF=4@ADG4;ndYCE)?b*lzcOvi17|bG?sH6U3)BBQGkA#^{(~9)lj&|{n%fY+ zitVp4Q_y^!V;l6q5KKS=^RNcGU<_uU^#=FnfIb+3DQIFo+n@*5u%28n0Anx%tuMd> z`d|d6ppEt7fgzZH#--d(4RpZ(jKK_au?0#nfZ62=qszz|G81MAiW126_N(3*`r zK_8636g08^z5mDFyTIFV&ins^A}F1@hEqIlM^NpwE+=}5Nt&dortL`5Hk=-von+^t zN%nN_q)lCpK@k*#A}Gc^sAEt^-3LWb42rl9ia2hAqA32~@A|%MSnWa@(%EMWr!&eaH}u!bFU zoV(qLcFrW;KACgy3}f#73I0D>JGvW;VUGQ0+J~LN5;id4obUc(`V_nH{=X70u=;B6 zhwf>XpTO=$wCl#S*ZXf`c7@%-kn2kZOW45RVv8Ta6c(_C9dul$a#+C@hR?KkG0b2I z8yIk%i(mn3*g?00{=*zru!SMl%NUlhfx&a=Crn`hYuG`@bvJ<(Y+-l_{e&4TVFQEb zQ7=qk4ZFjbPjBB0`{qXXeEJV_*v(KnOJEKw*uwZFrpsV=1noT% z-WJ{t-X7k;SW>Qm!AmV(1XEbR8oHO!KA6J_c6X$nI~iO2;Z7^p%_aZN#@PGsVs`26 zqs(rwgO^kOuI7)teK)gH?85t@dj;);l$4AG+7m z4w%ChhHs#Ln86Y@FnA;N!|oo`k6l3bCewBIwEP4+hZSsL_-6F?GJTAl!P4j7+wvQ4 z-^c7|mz7UpcVF`t*tPdV_ZHJ9u$yQ4+}rmvyTT6NO8f3_{_X+B*!z#h|3G7gzl048 z-ez$kn8E^f&|OaZU=AzT!tm{;i(v*!82l&o!4wv-h8=Y8pkA263WgQ+!3>tLfx$be z7pAa)HFWQyKA6J_wlI7*^}-C6uz}GPrb}S~YuG{e9_ocTtY8b{|1w<$OW45Ry_Vk{ zWAh$)`&hG6>;l%%T}k~ghZSsL_&(FcFoPv*VETU36|jaKbRVETn8OOTF#MqDGFZX} zb`k6Rc=#Y=@F6P~!4wv-h8;{kZ2BBluzRq@Yq7(Rm@bAHEMWtK+H@%_U=2IyK5DuI z=CFb-3_oVN43@Bg!N)B>f+;Lu4Lj(rGJOs!*uwA=mLJ0mmau`rC#e?}u!bFUpE6wn zb6CL^hP$a3mau`rr>PI7uz)q}p!*ESU~sMZBbdShb`P=hyY}`&xla5G#P5D+adKF} z7KT5v{1|4igbfUSOnYDfYuG`z*K`TYVFgs`p|SRU=&qx^Fo)eq zrmwuc$n4hJi_MOIYvnW8Eir%T?WJZn-af_b;CEK8dz9G`cJ2MAn!oe*GVIfg?)S7C z=CC^*-J^~93S$9->W%wYvv*yPkp|1&=hPc?t@H28FQG4$iO8GDPd^yOi|I7Tpq1?-?p zt$YG=Siu&C%ts6}Si)en#fe}F3s}PrI_5QjIjmr~*5bvmnJ~M_j2ZsY=bumhB*Y)E zZX%fabu?wV8oPsT9p$$g6YSjkx0%1fZoU6P^M|a<7-q16!3N@QH%8d0_g`fG0=tGC zbgcIT=CFm~%%S@@2*fhOm99`D5(N>z-x)`q}Wc#_YMq z{CURW1;+S=#`?|1`X;SP%v z!wi*KL5wnYr8q1H9{~crX3GDB} z)>wX;{LdPr&lyu#z#4YYecp8O_lya44lAGkeammL!!J+{X0U_}3>fbe7O;jLjDKM9 z+!tvF%wYvv7&3nuEd6|5OS^sue`IXP55A0luQ9?-Vd3+CV)-?82i-O1Phbu!82>l% ze+qwQELkt{&&_Vphkm_z{=)Jz?8f_lY5w4=#t5dcfHmx(``UEe!oR{8!V**d=UyeqiT$@L}2kQ&_+ncF=LIC$NGo z3~TCz87yG~1Fj1ZOkoW>=srfjVGb+U!q8t|UIgD@2 z_5UWu*82}LJG`3lfEg@d0|Tzt#T~3%3FBLtU13*uG&{pz!UhJ1TYdynSil-~(B0bf z3Cv*yTNvKPbTQ0e2^$z3LH#g=1*~BQT}b^fhZStSeJ9gZbB*DV#u#R>y0iI9>;?w6 zHGc$CSil-~u)2%s-R+DC%wgsEPnO?ehqpJoIttzu-pv@3pTQC~Fkqe|nEG{aFDswG z>h5N@Fm%L+87yG~gL{}Rf+;Lu4Lj)WNxd+K6>MQhyV?htzJm#LFozY4?}PrIjlunl z;RB5I(Z=Q&V;kW=-q^vE`U_aY4!V1rK7l!`U<*Uq6FkE78FuOY3(OxZgeMsrpYQvz zi2TKH2|O7tg%37HluKa&Yv}H4x&-F1f-MZ^nJ$JIEMWs9#yN!rtYHV;{izq`u!1d& znXe3%uz|rtEKcxH$h<}{_!s>1jVb;DcF;W#-NTFtb`C3_e}d(=*dgmD_*e7C*cmK+ z{;`%H!4wv-hQW!Z>#!Z`GI+T86YLyTFg%X>VFpXsz<_lf`SlG87(CMA1hFx{#8|)t zI#@r~@;g|*)a>%L@N#368JqvW|6XI88|$axzt~tk6aNll^BiOQC}X$G7@T1YA8m9i zjO9vWb(XPSWo#ac{~TlSIAfU_^VQfNBY&+iTZjL1aE~#1yfNN{|J(38kZ~%Xhy8qG zz<9)yW+z*X=>^7cyRo~-7(59-;}^pWmN0mV=^~iI0@kpDj`2@m4l5Ww)#Al4gC%TW z!2Csi9$#SP%EFl9FMR$B$$yct!|$GMb^>!)zS#T~b_+w+OL?i~$Jm+ozr_3vcJK_d zBbdSh*06()b(p{$wlI8_#VcP%{n(lJ!v+Sd=Ln{-fE{$tws;B5VFg^7h!4`&G2Vz*h#mZ&g_IxYtdYdu$ zH)90Lx0{_}7vBG$=C83k?|+B+9oL@(=CFljWxDd6@Lk5>x!CVEhW~DiVFt@9&|x>; z{~q%Pk26NF{4cXp>>75^ooo3C%wYvvSYBzmFg3=oe4p7Fb_0Vk^Ox^8M&AB_*(r7b zYoGr?%kQw=YT|qde%P4cuV4$qHI^U443@Bg!CKQrFooqusHZm8_&eyv&7Z*Xqh{yW z6>NR}$1OixXN+M98yKv&{PHSegq?c-C(K`9*RX?bgXJeMhZSsLxY2Ym%wXyHNy{%k zWo+;VkH^2;m|_>Oh8=Y0nJ$4jtY8bnO{U9W`DyCGZeXz4{1GfagYL7&6n_D0ue;jv zJ8ZYb>;&epf-MXuOc%opmau_oX1W5_u!HV=>Vr9~U<<=Z(`B%P4Gg9%KY}SNU=2Iy zwwgYN6>MR+&GKWI!4ftwxPW?L`FXPo>>75^U1<3U%whQj^OudW!r%J*FOvTy_+@wv z{E9K&Zp>f_8yH+<`4LQE0c+@{e*d26FHh%)kZI87yG~gJVn=!HT#Ab_zRK!|-la&N<58llty$O#a!J&cnW+F^3gwVNARXmau`r z-K~5CQ&_+nb}*q`Ijmp{!+Th~7-q194Gid43JX}n4!V2MPng3BwlHLTGFZX}2KS+# zFogxIVFw-KoWlyXFuX7Qgc&Sh0|VwMf(5K$2OaYj-k-QIgC%TW@BsP)Q&_+ncF?hY z6WH9s%D1%3*uIZfl7FT#xDobQ zknY*qGrj zVFLr!O9WF`z#6*STbu;uu!1cN??AmUgQfRB#PS>Lh;^F60@kpD@k6bgyA$nzIjms( zFVsKZ*n0m7W`}dhhZ!tk0|UQL{?+smcIy2n66fLY5ytS(>?6-dk{=s0{3UE)!2XM1 z3JX|6_gAjpFkWDBbLo$wi+WCpKW%Gone=-fx#-u!4wuS-e&nVb_d;K zh<|}G!Omd?TNpkTJx(kgFcIy4x&0k>Gu!HU#%3lPZU`(g5p9r61Owi}P z+>^~;VYlA@ALbALo${VfF+0O9VdL|2^iPFPGX{?{Mlgl()6HLC*RX@`T+2^j4l5X6 zZ22vAn3^5K43@Bg!5F${7$fWy7O;jLbgNCD!1$SF=hzi&eg3m7KU`ysVFpXsz+kQE zBACJg*06(a-1G^|VFg9cE|PrT0G@-E)i${$Rb?5lmqLYuG`z!So5tVFggq^~|=fA}A zYwXVZUrPCx8QuBD1m>`UEet0q2Qyg01_u7z+KK+<#>o3$VRrdiV+G?^nw`NCHZZu1 zIIyN%id}d=?7aOtE9YKiOkn+bvvceUwlI9P<;O6CC2U~u8q-BEg$1nNVEOeM;hW%_ z;V$?VNVyKW()w1<5OR5c8r~Q|J%(UT!9|e|7msy-8;-qp!=}d zId%nG7*>`a!wi^F?gpjf+=(#Gk@XjkDFb4`zo_LZ@>RuD z{;!z7#STAdb__FE!UhJPGF=2ySil-~(Cs#T0&`fw7KWduewe`$HZb@M^}`evu!bFU zpQV17L-$qlSJ*8KuQtE?nlZ-CUl!YvK2d zG5*Zwf8YEicH{j&pxm{_2&NM^@4XJ2!S>(GF3&MGF!*<~BbdSh*06)_ai$L`AHxjh z)KhOVT?gG}vlE!Z3bruZV!9Y+up(}QUBZa|1u&s~X=-t@)y90Su~=s;H(+lx*06)_ z@#fEoSHafz|6I$DVFpXsz<_o{uz)q}pc}Jz3Cv*yTNu)x7?!Ys!5WJb!4wv-h8=W_ zO9Cs{!f>2^!VH$MfdS(h!4%f8gKj!4`(B^B88Z^nR{m87yG~gCE+ujbI83Si=q`em}tqwlMs$#fxDEOW43* zFZIF{7O;jLbU!hD0&`fw7KZ;#{V;MSn2l@vySi%Mdoc|F_VGTRz z{zU&^4lCHgkn2bcGuXi3&-4$buz)q}pyPU!z#O(P{44#087yG~1FmNgOkn{#=x)S$ z1#?)z7KU6GW0=7b1~=iHgefdw4Lj(#z9uk-6%21`@nV?45;id4`W(R&7O;l-R*UCu zZp^nC6K}%`w%&h%>B2e27-q19`GuC>cze6q`4fzhzh8Kw*(r7bYuG`@{X_zDSi$gC z7AJ-oEMWr!e?J0KSil-4{yq*?u!Z4ms1IhagbfV1?@3_+^CwyP8oProG=BnfSiu&C z+(%`wgbfUCYjGl&!UEQ?gZYz9?`~(zVFgs!xn~)e!>ivuz|rns28TNfE{%Aq@OT{6>MR6FY1LE zEMahO>VqjPU=2Iy?nAvWhZPL}nfhP`OW45RzSIj-Sil;(dDI7USiu&C_oH5z!4ftw zy1(gCSil-~&^>^9VGb+U!uV*@Ww3+|3?69t5lmqLYuLf$7}Mvlf-MY>wfq=nu!Ic^ zBGaX?fHmx(JI-_o%wYvv7#?rB43@Bg!GkP6f+;Lu4Lj%_Z2BBlu!Z46EI)=BEMWtK zhf*)BVF%s6SbhR?Siu&C^QjMJuz|tDs0XI7fHmx(JAry({vT%NPcc^bTNwVU`D2*D z5;ib6(R2|^VGTRz9&Wk>=AJqAW4GS_RP%?AFy>E#PdCQ+OP~J?@}FsJ@CT1HJAx@J zU=2H%#KeIWY+<;-@?)665;ibcXu1>@u!i}wsAq?0#rpsUn8yGAm z{-R3W`8}Glu{K0FD#e3j?86*6u&xbYapnIL^ z6PUvawlI9X>0+3{5;ib+1NFlc7O;jLbZ?}7n8OOTFnkmB!wiMSn7V3u?EMWtKw^Bb$VF7E{LH9Q5hdHcZ3&YE)A7-$G#d|Hk@%EKw2X8k< zFogxIVF%rRnm&O!tY8bncbG1Q87yG~gNpiL3JX}n4!UU z9`jo->+!*78CN#OX@$fH&p)-NYd&lFSDtI-hjqjD&2ii(I3;*!@ZezW4BG`!aIE}T z>g&{RIhuFRo4)wYHx}-AN`^8B4wK(@itRo6_hhQOiSXJ1-A%Pbo(0>LlDuw?{Jv8B zJ{=*ylwx0r!|QG)_K8pJ>ux1>CieUxoz`>xfKJP~r)9y0A)WRk6TeT|k6di;@%4`C zM*U5Q>)qCg3Abrt%lcsB zmJ7xX~xIfKJPG zVmqNGU$0sHf7L&CM_;G$HQp_SJH_vl#@{RU4jew7a?W%5I^Cb4*fvxBdR4b$D#`USR#Lg|`s96S^Ut>aQvK z@wDDn>|xyl#6RbSecf%uPG2-rC+=xU^i9*$F7doLP z-#(qUz3Aq?!R9R$?&zudy21ACk$fG$xo?~qPurJ?U*qo(>NqvR{q^_6H?arqZ1C#$6&n6cUirAg--OEM%5d=#pWXux}IvZ?h47* zap^|r2FGR5TWwr&;r_;@m3)oo-nRdGGs#z7bpYLAmzypYI?-$L{nhciO#EtJCp=OZ zy?y5R4ff+&$=CUH|GEEu; zJx>mQcR!x4`&8^$sL99E`3ux7@Cbko5^12J;_eJmN>rU0o_sx7B)9c>FAL#4u zD0V0IPSs2D@swA6u&>kpH)1=XCa+WfVIQ*fca%`qRVs{BB+2Xae&C!B_v2~*E3t=l z>OblueVvYTCbko5^6|9Z-2*xu=XQin^;zAIr@HN8JE0~YPwTyWK&R_8_~=ZXmR~A< zpH#PMgihn`9MGvVX} z6MdcbEBNHhcPo$e!lA3N_0rptuGI=z26 zys>lRM4`4f7Y<)PROjzwkNTqBho!<;{F?kYtIprYwvw;sru)*&^CcAjmEzZO^S^BO zr@62eTa%Bc^X}*O@@wq+u~+C+B+2Xa9P;;dCw_(dHK9|Hq(Pm(ulp9dxnG^B(|-8- zx*d|Q{b+#yjdo~p0Y zbvk_g4Zk&WU1@)ZufMhE+)zBd{^sBA@AFf|j=pzr*WdaFGq1mTy}abwemre&EB2^< zEc;1~zfWo>BXoLwd(wbTuTQ~`N6+u@ z^)1{xvtBK~O8h?QI*EUBaM!n8|2;FFuB)rX?~~f?LF(rGbY{HX_zhi;=FOrT9=}y1 zblRRP#P3sY9>tDuXnlHJP~CL{I<@EgY-am(J)bCkpY;A^r`W^$O|L888qnQE?BwS& z<7s;q{h}XF_jxMzaQk#!UOu4fopWLj*Q@1E{AE9$uKP@EC)709-x~&W+TXC7sZ;&% zea`$5x>5beL^s?It!KF2YDBzI_3jy=8x=43)xq^+-U!{Oex#xs?#HP4s6=-#^AY}f zX8W|>CyC#u-ntTdxL)n=)dM=U+Y#|bjo+N#%&b?-51$*+2;Hc0*)FH(e3M=N$Rq*MK(KlbBkxkT)x z2cauQ=z8@G#MAq&;7>E(msVXSexFoVh@Il_{m|=WbVFY^N96Yj;eYPyv>$WD zPKI^p6%k-{9QurMQJ3eEXEK_AYVt z5Kryh13Dj1>$!eFr*?Rgnd34_w{(PVxP4l0E;=XFbk5A_ef59CEbxSLQOuN`mY$!Y56@PbjON+>zsZ(wYyu) zjHl8<tea*yPz9UM6`-k@&2vwD=)&8bKjZba!FZ|UYrGx8;rZ42_lVyowOg?r zj#2G9?DjS;k#IQPV7-~-_xf=F-ClIz9rhnDmHb{mg!^mXHRysn?q9b|^0mF&51_k3 z^0nSpINaY+_c_I#X4b3YID8)L8PNIjK=;x0;`d4Id2?shtJkyb;`d4IYJ^Vvcle$A zI<3cvolwxvuX5FZPRpfYyCI#H-#MVueO`+_{Q9oOn|GIfy&5kP+X*#kzF+slufMDs zp*vFa7Z1eKc7*>lI^Ih0`=s@57@^bphu=3SM(Bq7tMjp2bffw^9B=MXGux;8f0_7w z>a|bo;qy=1H~hLqIU=6whF?c&M(DJjpAFR;+;wLA^!|3f_p2sh6Tc=OPun;Ae%a0ux+6t*mH2(qb|m*09q&@{`=s%AjnHZR!|QMN z2;Fdhbv}Z7j_&VpyjXNj^^$ylmBa6=Wg~Rj?n}h)liKA7-Kh1~if+{UTXnB~Je{{f zY)1vYeOixyPQK#acHXzb{pptev*|M7@cPs1KqY>k)NaIfIDEaj&u@R|vd@ zd+mTu?P`Q>upe{gas3qz#~ajLhHm!=oz8oBzkd6)-dOD6{;F=*kggq}(|%ud|9(7e zMvf6Klpcjk_&lo5zE7W1FVNrSR6tZHl1!l-1Kb z!^Sh+X^fv|Y#(9mZ#*Aqb`66CW{1Zb9rX6n-4;K7=IHpvo!j?dcoR73l7&ei4*7~h!ve+qwhux4WIxXUIsZefQML;7S$f9A?157g_{+|Ny~ zFGY9y#8x-HWn$a<4Q?tMThrS!A`j+WX?nlU{=rkGojd>AWEHc#b$nC;t@ z{+fOB3R{n9X7uaX)9X9phlds?`K84vzC@fSnw{R%;xw(X-C^x1HjVCA^D8Ttec9r~PcXZ^ zE9Gx6rmwW}!TF=(w7<1-J3mi*olW$pl*%yrA4~&j>mdmYNew;Db zh`rJnF)juE;;H5@e@eVpSUm-CLdLs7AFU_uNv3OkJ?zipx4vZkV@`I*|M`M9J~LhT ztL1vOYAXM6zW!aEr~VxDteC&;U$uSK{14C9k~lTztK(eE4)J`=zh>=8Xis<~`{5AJ z*L2VHIMHnnEsj55sR$-!`|~w;w)y?}8jMly0OxDD+s>i#W5)XZ zoJ*XW|979S;iqXQ=WF#{t1oY;cj$aAR#-oW&)4uw^Z!rJ*LarmHD-VIo+sVLEpBpr z&BWwdcgDJP8`q34nB2N#(a9$-lqbXU?7W>-w`l$PlP0!o9ox8NT%SvWZ`%5a*r)le zn9rXWo98jFv)sR=+`lB>wmAOWsOMVwgS{^+xqq2Qocto@pE%t&EnfU|Yfr;E^7nO~ zK8`=vTKebXxf?9*Z1Fz2BMMPj}}->t{zlYvSx{7jb55m+zmakK_Bf zeQ4a`8(X_(iHW+Pv7d2g^Yn3iKf~`@yL`O( zult`*AIEcFyvwYgbH6{mpY0*`v!I{d_olbY$BDmV^@Pvle3<3F+sEYF=zVAps!L8dUuMKXTa&mc?+?M$l7Bl+Oa-UG%((2C-@tm)JY~$;nzw0|3 z+B)**=}zLr{+uVy!JZ2~jvwFTN7gPMFa6X0&xHe>^Q(R`y`S!mht^Mjo<_v+?ecLB zwx9dr@H+6`p>fM^WbK+QoM+ok#LUdQ?RuJ`Zj%7gj1Bq4ap)pr_^(F)y-APH*7vT+zTR2er}L@f>*gJQKM~(YCs$JI*ZC~( zx3v$n`szm*W8QZQU=^ExTm~mg_I_ZdbH3BM=){4bQ7XZh`kRxW+2`2*s_ z=-bfz%}Uc1N17d9BmVP<`&?so4`c8uWBy2E z^hzt2JkQuXhD^Levci}>-gGH;iJjfZ^3%r}%gylq zrVk!rY;SA+`dDNB9Ak_fU}r~@zkzbEH9M?`_ir{&0qqUmWckro&@VQ-euvrJv&{}B zDE~^cW5z3|KP~+UR+1kXE80|36sV(2pnc<*3hLN7xZ|?AwDKVs~$}dL8}g zUT=2#G5W)J#Ege4Y3Ca(Kf4v>Z)q$ZYOF7^{Q90|hp#YZ&o?I5S$@(P-DAw(G9J-g zDc9OQ_4kGT^HH7w?{~W?;xIoc{RxRzo=1C@(2nnzoh~;f?4Rsxvx^^Dy%qV*x6SV; zmtAZ5-FHVb&+R^U0=Q zg}pa~rrgxFHS)PAy|c1U7Y4zFW0PCt-th$U-gnAE>C1~!&(;a|pyS+{4P%pIYqpM0 zPHBCUYfhP^DUvInyPev)-~6o`#wU9(Uv8O@kL+!c5AeCckmKiXlbc|v*T?Avm46Pk zoO___Jqz0X^5ppDi3`S^1aX_>!H8RKe!4?Hf05+w8V%+q`;wQb%~r zwyCWXo1NUKZywt^r9-cuRUKbz&)no9H<8;SA3j^Bx3lsrwsFl?xsUG^+njCnU%wj+ z-MAlh}Z(LcWgJO|V~ujD+x#Q#grFE!62 zG56E{`6Z{F;YMr!|Mv4s{aI^A$MZ|_KC}JvOY~N=ho4{E!;mHO{L*~Y>_dHisaILKc(2u4uQ2;ipI>U8 zUzYT4qetD*^=_MHysvZG)Wo96u?ywVVbmRf$HJPgRsrrGkBkFT2?pW3is(=3XUq;-kh^lqHeoBElR zEE?N7e%!;N2am|o>Vu^l*N&gD`th@62Mfp6oVP8TH9I(49uy}oJZ@IO!fhKj$rIX= zExlpwjn+u*^5rYXR?j}n!J-vQMwUBC{+=fpTR+QFKoFd^dGydP-1jcP{E=~2Y|DC6 zqo05r^%rVp;GfKYu%D|+erM0` z^RBZv`#ulM=V7Yn-N{}ze7PTB)~dC%^8i?j6i z7RP@MygbCufd_oI z?7xFur~W+H^;g=%c@X@K=fRF(v%O!zc@X@K=fUn9PmfdccNm9y9_+o5#R=Gd-4Uz{ z)|WfL-`)B1VAoA7jvwdXZ#)k+&>lbU=^@U$KM&?`9^|a|mi2z9=fRG{rjN7x8_$Cc zH)WhT4^qy9_zwrS|NMEd^k&3i|K)$!Pt=_h7oxEKk+HredVDM`xj&}0O_J*-cUW(r;@9gOR^KWYNm^``g zfgwuwrg-yMcC5U1J>!4)_mZ_2eeWrMe&fS?qM&`Gv4ittvrjk1FEHjWHO~EQj|*P3 zWI-S)d-^Q16~egC#gJAKmcfyu@8pFz|9 ztL{kQl>@rDV#m=;o$80PqOa4uz!2IKi@tC)DJ1gY8=?`C9Le1Lzub;X|g!i;u8z``>;&JNS*w+m(MO?TKhl z6x#Syf3Wt&Feg8`-uw;z%#-|>{1n?^hcH6l!V(tfb6@_~)Who!{`H7MWk5VfJ>il6 zJN-+pqd&B#`ajga1@eEi-6-#BZ|d!!AXp;rgO7TFXy1KDPhjt0YY~5Ltdf1>lkUHC zXdlfu4j1IE_|r%-$dxB!0+>;#J*hoKI#9Dr}&qd=cnq!`F)+XZ?4!*s7dqP z?fyRY`TzDg^Y>Q2`-|;^j(u4E)oge3!*iXtA~0rij5+$?rsQLX-oAzTQ`jA5c0>7$ zc+ST|7ehy!3UK3c}HMwd{}_S^qsU+Fsid)rqD>tZSA-aq!0 zt>eF!ebpUcU+w$wmwb**zuRppllR2dZR~xnO|IYrpOlluCuwqG>saq|aQ^v6zXC%) z zpDy3(dzRQMqy>v4g8r^)QBS{2;@ej`Es?mZB!7`*i{9$dxGTiBQj{8b!M@+*Gj5{s zX+`j8iKM->v{<6apQlNitUb#l&dI@X`<_h~1Pgm{wH7U<^_`4XBWS;L+Cj<5CIBD5s;@1|OB`w$S(J|DtQfla1a-Z4D*Ez7Hz18wI8#8gSLF6)iR zVrhlVf%Z>(J~)25f_(nTy%9cJ)JuC6pWN%;8NJ{2pQXL==+CD{TPY*9yf>OU_qLLj zKwW3Letk-0rE2Nr5=YzWllER$xli6wUB9)u&b8c0v`+g!J$&3}vp)%npC zWxWc-w^(xe^_?yDVp&ICzf|*-CfkSJn!X>^ zdxosAC8E|*)MV>lW7wIXzb)&qXE!KQcPcI&v#y{B@`Lksdrt zw4~0v?hv0=%E;)9`J}znvGB=SdW=L~Fm0Sq5_?&1SJ{~99_;rbkg>6ysiUO*);P<> zrz=mBo;xQE^vjRf0`cmc>Yh19e%H}hMtR-CmaFq%N$b=dw`|{d+6i?$`8qRpf|*0( z+ev1&^|n7^OC{3a33JwvZTss~dST~JBK7+nqUZPEIOtwmDLq*tQJ2dIYD@LB_x|B= z_2WH!PT9FBpSSLv&L`13U0=FG`|DP9y0*PX&&k0ZnMlqV10EgICHq>h>sQa;rTaWu zpUsI?sq0L4oKM=j=!xe-(R%{&qTFPmv)>ct?G}8m0Q?r_vvy9=sBuqyVhr;`sZqyN zYtf{8_mtqV`+BmZ*Xjk*H@m|1?VeopXZJ=-+vKl-7N_qw+xD%M>YsDN>%gCP!~PXS zUm+uB*QG_$i__#kf9mTgr)Q$BOWps|b8WrrDmiszuJzBatx@Gy^iH?42U=)N z((%zcwRguzd$b+e+Ufq8?eY8A??c_|y7CuG3{ASOb%gY;M@Quh?o@PD>2<@ev(tJt z+1P4HyZ+dngI{|ZPsgf%+S&flNPZukBD>M9xT@Cc^K@H#VE3VR&#Ciwx{Rmx{umk6 z#q2yguk;*WDm~B|EG=Zc>z>hcy5tPrf9U$r{%fzbH$Lh5d9>8*?>uz1Yi&OHbIqR^ zek3&BU?h#BJ6z8^-Lp%@UM79?$i^Zx!ueHyEOo$)HWuh;9B_w=t{=Fxp*Ct)vaZzZ3;PpxtN^MyT8^lfeB z+0qM3dLN-aBkdJfo1^83rj9qzebn|iuv%l(eF6=e7Q8sF|K>;%hF*IbyP<}N6_!U z>HBgx*Y=avrXxEuSJ#`r!x%h$`{&zm8Q(we*EVa?bJJF+j*wmh^-5`1aLw<}sA30ZIQIPO>r~~Efi{@k zZ-ck>T=Dme+5&G6DwoI{>j?Tg%l^3Z`>65y{=w4Pzr_;ScCCJw)zaQt(pj25c6LqE ztEoPX^<(>MosGKP*PJ{sDt)E4!mhv5BTV<}Rc>&ce2u=<-nMhtzZ$3O*UnMBMlA2e zuxAauYUsMNXF0tGv^Au2qV=p0>TKyXez0DB7Cc4zq4$jT9Ia={D*1U#aJ=a4`mjoV z_a5s<-=Cl~zpXR9JF``+>q^gM-Q$|nwtElL+j*<|-Oh3I>bmL2P@j&A-Sg>8_Fuu% z{_05h{^@Uz7QNQ4_p1JNKYjkOCpW8MbF-|wH8Y&WV{ETob+V3d)n#OKbvnI6CIy^-gJNe zF2r7!^tI@Eu;=xDPpp28<=47;wA@+Z8~xPPKkxcFi(}`C&aTc!|6X0!<>2cO`Wmrb zdnPcc-ue0)xu2r1_-L-nn(UVKp zwEk{mVM_H5KEc_T**%`#7kXREYE62L)in5;$8etJ>)nYxb*p9V(fK=uQL^(;`{A#r zHhSJ~Yek=<2V3jssXq&YbFB5)xvWbb2I)oa`J zl_{U>dAVUDR4w8&18!RK3jMR|d=Q2X^5X|cY( zW3MDzOZxfxI-0J)>Hhxf(pt9vs^QNcW;JY5WkF8#xKYh0Q`Ga$g_dsJfd77Y*nR6FWUf-L4_sV*UTN$rq&Pmp$m0=N;X9OOpR{)Moj*kjaaV(dsvC zoSONeSn>OI-~Ms^c5C~b*s)NPZ}*Mm_f4PyIeg8k{r5jw4B&p^DJiQS1kPpHYq zQ(b&+zkRA(CAJf4@;dcjKA<~X>~@6irs6;Gmzn%)N&i2+X*x6B&BcF>_17L81^sOdh+TC z`J>aZUhd4#@h{oBZ1vQB^B1q(fBEGHh=0=RO#>ASw@=!=Y~z;mmTcZ+Ega5YvNe%! z(%F|i zx;bLI_2&mWg_?XkJ)bTSzfY>G#P;{9UZ?wL?uNeZNU<}qD++p@w(n;f`#Rlca~?l^ z-TM9x|9`Pp4d}G}v+1^v(CL2JDSn@{9lHl~zJ1E!daobQ`FfQ{ooD}F`$a+>mrOV~ z&i^XDqvhwH(lSz)o0D#x|2UZ@n6TZML(W@;l`~SdVhnVU)!3EO^$DoZ;+bW zsF8;C`*O$adz}1ND;4bfV6W|4DH_a`A9p7^53c(${<&r!KA`jKX@}_VC0ER2_uaLa ztxs_G(14OO-`<(EPnz6IdZky|e!hPlXK~MWFS!!yo%pfxYNTqkygeIQi6yZM{Gp=Po;|XKR(GjjbJ9KQ^^yY*PHEo!s|NY*|0C zsaIV5r}zEx6;f*_ho-WV zrnZi43C>+`cF&(os7}f!rdv2U_Joa_#9p|3U%5oSyldO~G4ZO-`lG)upV-{%<+;nP z?&aI2rh0u`erB)indeRF|FS1I_sj)7`_zqFE*g{OZdp4PoV(oW*ElOSOuzxFic|Kr=QR2Bm3+1EdO0Fxd=~HXFW9u&+Oxp=vSNI4wY6tOPqX4e`KGfi zQf7sfSvmIjjpx~L1m~`NR8O;V+vIuUI-V>0{a>M#N%zlPVRLcX#N@=9H4{>|^=pOf zrwwkwy2*`ebjpKsA8UR+kMust|9_>g-^AZ-Y@T_(4eEACzMdz$N9gqYo%7nPcOJVf z=LdSurozE`@2c#QlTavZ*ZJ9NWRYFF5&*-?Uj5Tmw6ZLzaLvA zUvsz{x825hhwu(!H^NM)X;goAU1ah03SCb%S~vd* zrrR#upYCdObDlU_w@Lgy>2*FAJH;`oeYNCke}gB@T+f5+>Kw_}byW)I?y+Qoijt>fTy<9KcU%d1`EM6%b-sgksYOmz$x|;Wtne`6pwoAU&d*uOiF1LD9 zp%cBPQRBDhsiwPn&taIH=ns`P#l+!VSGz`}L~-_D{F*TP8e0>_V6i z=?3G?zu4NhUFi0syGrtP{DNo9)aktW^K_}?>pCce!}BqyyH4_T{YB5*zwTnm*Ld{- zbVonSbeV8}_3lCEcFfcbj?0yjukE{D=!BX^&F|7@+qmoyx}IvZ?rO=`cype!f88p{ z*KyuCLZ{>B&)sV!U&qBgcjmep)LkO^s%u8*2Kzhz64rsxiC)vF{?_P%=grjV_4XX` zYq`sXcNBKQ;qy<&;hN{0?ywh}ALzLm3%3h3`FeF6z9oLOZxCwyxS07mik?qbi(hru z2~`)paOVCP)O}F$RTsQyrf#s_OC(=)jWAKYq*3iV=f$Qgg~K|Xk9%Kg?K@GZ`*gc- zf9F9X`Pz=~B{Ro)aNZKhS6y)cU4t%s=>g(NelOkubPc-jWe12S`Mr1t&^3~;^Aqme zf4o(aukm&sK(|NoHQwBp?>}B9`Kqf%=yaaKSJ=EQ72ZbdLKx}-kmT3F;Cw`{w0N1& z^;CV`V7x~1HC}kx{^M1WukGuE!|~L=^i|frOsM<3QtqdH?$s7A6%NN6?8lYpt{H3 zM1flZj{uH|!g02v0?N@3$rJsz*8|ECmj=AQvK$A0FrXARqlW3mn_k20Q{d zCSLwoo+6JA;B*#>jYEC)kdO7cfQtY(Na_E)bqUI`9c{qrz%fyFG2c9u&=&|CmqUV z{Qhy5pd9Pf{{^Q|K;R63)6pm-PP>;NpGp|NJ3Mf#adnKiKBrwJ)+GkO`#X+`pd621 zT4Dbbf@sK$EqvF>=;xw=I?O*hpx*xF<%5glG0p~UDsr9Z=5rK;U&OKf@ z`=bNOu^pP%`@gP@fpUz~9pL@x6D}s&YYLp(KTf;*NL<-pa0)jFeRjb6(|4A{H3R4N zkF{RDNgS7H!0|pq8*nCYOuYJ|=oVp@R>FH+ao-p40GuOB8*hDSP|li9fgALL%ezhB zx`1=HgEM~ScL-bzaJzo=H9|S|Fa2)cbvx$ognVrOP2hO_OS{+i{EPigU00lia-0v^ zfLkIS5*0seA9Y=^zLdZf0ry~`c;n3P6Sz3w+&E6VN)HH}BXDlJoVfQSPV-@39B2HJ zp&aYg1E+KO$BCmqBF~q=`@ez62@z(TQcIF6`wSSFO?I;;&i_xy}@sdbp^OCm1G zz`1d})Z-1aZ;qATkbpehJ`IspGkayhb zjnjM67l-ZhfP5;U9Ki#Jt`arJ+}d3+%B#R2b6UpMi4$(`A7=pN=${90ZoBB`&2j8;inw|n zILxQ6%fvd!b^!0szxz;*{m})S^Ze!wPuDoZoj!cv!Q0b0l=a{Pd`^rs{=7Z1aP$}H zT|sh7PJMPBy?n~IeQupQf=%8kb(U1lZ_;DPGW^}Aj;XXsWy~>wDy+2Nyx|AM@TghalW~*I~mXRNA+-Pj@>Ui+9G4;~sjop=zoiX!vx@IcNq&nZe+;psS zeWj&#iu)EFf7>CpW1~j~KP*}Ks!UpPzq#C-l1(|2ZTFYNMSiwjYIC$wR_^UqN&l9& zBRgev=Y&`m`=}W<9qi1|xnwdr;bUcd$w#%QrZ<)K{wWOolqIQ_uTH(a5z^9mv?-UN zImb0OM(tFz{)Qp)(o*Ljt5ZGDR=|0kb}%yqN* zlp>@1)TSajE=$^YXo%zS7bl0NylTqZa@HtWTh)C})n(%g(d!e6oJ-ulFpk>}dAluG zKP8+oLb*t}P4)=mRLNpvE8RCbamUMpZ+#tlARTBylDpCMc^?sxA3%qPzIwf^i1R&0xG^BU z!j-e~4aOSdi3wYkD{SLFZ#Dj6Y?K;Te$4oy%?+KY33E-X#uyxzd8;p%>11Rpa#+7y!2C~p}VIp#}(R7qnrbIwaOKO60@U(|}EZ!o^(yk{Jd zdwsj!zq{mPQ?ho&+s|VTGU6FKE90~oCi`{v$nQ<oQ?bL%huI|}Q$xE`T>TJg3T7GW3Sg+ij z@R31}G&-PcVrKlQvw&gXFXukBN!oVq*P+q7J3r#rf;2)m^+H_OS!3L1jv<3StvU(NYLPhT2zG$hrdH;5t;ju6;!VK*Xq3d}{u84fjFS%Mg z0_W?@PsBby21AK`u!_V88Fm-!c@;3ntFTz_z(P|{ZjL)yQm@N$hYcKI=S0}z(#aQJ zmesS7CIF2+{R09?|JsA&qbKTobq>7kDE&mu)c9D+L*rD&mK@9CJyokp4usIlBTmFg zk2U_4<3D}yhQ9Nh>pU%{&lc%C74>wPD z57yB^zTlX&&+Z3e14yXr1Rc+d5! zP}ZY}qyU@Iv$pnR4SaZ0Hg4NPIub(dkNO8F(N2ziRD1OIRvF^y8t4H!nXosGGxQaE zb5^%dc&v_iIJH-K?-sE4CGF8bYzIm>?(OO0$?9U^m%m=RpHu2T(ffz6uXnGFju6)m^;o@^b(e}z+kA9ePJ5t6rd5NdZqMQJeFE-BZ zC*?E!w=s4lM9c|D8L4xmlTL`WQmsTK;b3nx+Xh z$*-c_gPQ!S=58I^^eABjYkrSPaFUyykg9C-w(aEti8noYJ znx7+c=Ouh%STl+u{Zp@X>W_p|l?`{1(VfrVY3&yIJaH2_3 z)W+8AxpSTc?-xTF3?-hckEr2&zO|Gf&bK|!vy;E4v33g$gx`>myBEXn*L+=IXE$)5 z@0MRIx zqlo1ntN#)72L!7etmByHrDHC%-U_x*hH(R*ctTiq5NG7(9SEyMo*V38xfw20co);K z9QN2-2;0ce^Gxy zH(=#Qj3qd2BFU$aJdWfvDn*bVBK~wg&*Ka4>v!(^esTX1SHy*59iOayvZv$uk-d{Q z{IU@@LWfl%>wJp-;r#&a@6BnQ|II&xKj4^$EEoXI8M9RE`_hW z+rf!L|4g}XRvz#}4mLexHSURKo8m%0MCO5IAfv zulSWgd%5F>@!=k?cHer(g{!@b{N}oN{ISuX5BJYOPpG)3fj%nXxXJ|Ck<8%ipJomm z9$#%-exN?=Uxn{%eTdTonGPHir#|j|c9?)uCty7|99L&K^x?h=^dG$A#I3LBXJ372 zpL;%O0~{UlF>(6G{e6w*ufF$55zmct`~!~LzdXQkw-@zs^KX6tO+u= zKE#D`;IMyUc;I;1E&BuR2Zuh?FATpCqyxuB*<|f(}82^FV30*ym5|@PbF-x2gr_O2Bi<<$Gsj%4{WEF|WNGZF?}FFoSf8lQv0!63kvCp_JbgWlodT^``psD{9fAG9J$tY0Kq36# z*dO0V@;4yM?;g9Zo?r-epL2B!<)IV(#O04I{MH)oJAnEiypDtG|A6WAxfYA8%@!@4 zM=hYZZoFVUGv7choxdPS++^*);K+D8xe`liR?z6PX3?p>CQ9 zPlqc>-$392bkupJZplSy!$oPzyFlS>VMMLbBI!o_vnKXj0W5m!uxM@2o8C)6G(0x&tnn4cw7ZF zA==npP}!%oR7dn&Zy*rA9l=3GRAoVW>|xJ>BJ_>n3HQuk5Wtb`A4Kj~jnzpAPe8Bo z9;0kSy#^!9FqHp2_F;odv`r2{70Q3q3q=qx){B;)BIu;Ex|#*)Dd%#Uf^h2(@^uS^ zEo9(}3_7)?ChRN|gs)>@C2l;IT5^2xm;{#N=%U77AAgBLC}-)Xt|8$z03M7GYVs-) z)=R^P`;5t3i0f>}M1mW{61?aJaotV3PH=-lf=ApUxZ_QN)2|YoRzUFN5`tHg`YjI= zGPnNZd?MfAF3Ben`vPZ@`Iclpo?oS)J(3da^E#ei6G5f}$Ass3YW>cA9dZY7oa;gL~Vl2bs=7u+ZdiokMuB(Wb7Wyh4G zK5P8|GN+%2gKE7J>IvnrgX<;4vEsp@57)VA95}2;*{$HfVZC}T9AvSQqY~ji_j{xy zjfwU&lkKC*lNS>Ck`@G~@+sa%jw^~Yor(UYWCK!fvMEvDZa8oIne&M9YA*jM`}L$B zlwFEbb|}tmUz5~J*{A9`jv)LfGAHaNlYZ7yevp2~k@;mL&Tzi+G?y9AGA20PF)5)>MIX+E?uyL&80%UF+ z=0|YgaJzQD-9D!e%9E zTv#fwf8Du)4s;9p(&fK^%9ynHibLc~vHngukQhg6YoB{`qIuBt! z_xsfJ{($S^vTMnKLp>N5)awEHRKol?9yr#x;=p12ig@7gI=_PhhqA)3zVim^vxIyq zvHF7t4#)iw4jjs5Ak)c;R6Ed)xguL1wu=ceHx7@>Ob#5%Z9H)3pOF$6bzCo@oA8+rbr&P#tfkNqjX>>YW2BKez5Mc z5v2WQ(mvJxxD!M24uPBc_KeEgWwFfx9Sb=h#U>?*5phWJM3Q^GkBax0?~mCfFgicgPQ}u#|5xc zA^c!|BkWM)Olbmp{NQn_2{Ik^K|-5|Lz^)iI2_MuJaA~fnFEJ%7Y`gSed-#0?V^1T z$fpv{7tBB4IM;`)`HKe*>#I&A=JlDt5$6G%4jdEJUc{A=xMtw2cu(q!Lp=9&LFgZF zoc>|^(|F)8UYzGo#I*rV9XKXV|2#C=alv^w0%SUZAW=BvG%Yp`^$UY+fccO(aoqkT z0*=l?5x6pP{1gcgJc(IF)E$vJS!HrV+f2;#~I& zXk>nw9)Y8dmkKU>U0n7MXAOQ#n8NmJGstB+y!%^t1{;U|(?K=`jtS$n1mf>RbA@;J z;x{wi@I4J3zMCQD5<0xIHw-8cFh1n9q#0mvo^gj--hd5&&u;Mj4|S!v2=rhs6UyoYLh2;NGELvLA#0f?oytbLEEqt+u;eC z+@KxkF@D2^7;Hbb_0I?ZkvNP~5bHST8Sh4?a|gtAD) z2K(Iwa;t2^^7k>g|Lsu66cIdMZy_$yTE8d z51nbN0gdAs>$?GG_g8OwbU0T0AdbZGfoMTIQ?VWwdrLCTY$$uMis{ge*5eX^@%p372?Q4@7*D8#IegO0+a>&AQHsUPxVLd6uw?7qcl;c@H(ZO0jl znA@oK5aWTEC2;g0+7EoB!zUamIHsIfGldVU_vm1eeSA__&fdjwh*3w5M=>$yq6au~ zP$xA<;28P;#y)jSpiQb*iN56=CI2UWagSfhf-kfJ$H@e+L`BF2BId)&CEmDBj95Hl z5JwGlG*j`_*0gt`HdJ4cn)EEz`OU^XGWZ*-C0K` z6>qjy_OVEe8Fnq|e2R9^8uliRJebof&F9%HHxVA^qqHcZo%=4=N*hN&M>|(>*BnFX98>q zH4C8!K~Rcbg+LAV+5*pi_#6rqKX&_wvj>g`qAz=&UkpJLyB)-NhG->@3Ky_O#Kx5z zXrsXn9aiAT$8yZ0^H?~dCZ}iYBbtg2HHvWFzk(s^cfGmL9-LK(^A5%v zk6Uaj5k+>JxO)xPaM(kh-Eexlc@ zkwdLtxaTT7uMjaM<`?$y*}G3UBSeiS99zBpTL^LCUIF3A4FV*#5oc(;mcW|SSsZ67 zoL#7Mhb@%&!d~&jddm=wrMXbncmBaV)Z@hA12vxiIg&UsiSsiaJwz+n zqndbk1D-GN>H*I{&a8G(D>)p|YaoZX&Oi;scqZ1FY(2eupm+TGw%rQ!pl9s4mx>#8 zmjC~+B}5OI^1cYV~z{*$gn;5iWk?0xF`4p&CF&ZMqx|GPaL$qe|zS?EtT@r3bT<3U`v z<19&Bp`u>m`j3dn99ReZDY7_+<8efcdYl*7wb?yQoW=UngDW2Fe~b#TTEH>XTUUSe zIivZ1Qjb^PQGWMlkL?+bP@Drf?{E-Tr#N@w*$-De7$ItW^`{qi%jEW-h#uZ=_;Ww> z_6Ltb?sF49-HZD%QeOO@=<7Y=7|bylleizFFU)m)S6FO2gui&d5AS1o%w*rk!|(S(L8cRsUiV{vaNzKMpYW`{II>y~ z@xXEGL;v&){%#j>OddGQKMVO(!tWvO z@W7#enHAY{@yj^=pDm zCk$1&+To;17tdhqU^B75eE*xpQ#6# z`+E}ny_=B{TOU4mkO{H}mp-)XF^`R7`3*9+KD3|7fkQbDWIAw6lz-Ttdd9@}woKqC z7Xjzihrg>)H(}ew<0t}TP8<~>j4zgVao{ly2Bv-cSpxERLOzx7J;pS%-g;3V`uhU% zsf2N82HAkjpxT3W9p|%gXg3XHIu{PdT^9$A^}DMDeSe3;%Wfv%xbp*>f~rxLa&nFkL0t&IbR`VAKK z)yKr%E|#6^Hi2abu;KhFL@Kl1*7;~p>d95`&h!D!-pPwIIH>N$>{=a8=u=Yc#D zC;5Po9q$pG!qM{ynYf!kgVp0`xcb(Hd7elp<7Yj!-u9C35cSGR3EoE9!`hR{+MLfq zba6u*$iXHNfQ#t9NC}!kArqV=K3-WYa&YKPAEDhH ztC>?zxwM?v?|M`_=DEblycc03TAtR&)RZ3>Z=NG^b^V2KA&tDZ@x!mhxk}~^|4h$Z zZMx=id#z#N<_#6khP`Wi>9aVyqT}|KCs8(u-b0Ggyj<6IJO6xt*KNCn1D{Ndx1fv5 ztij*DhzrNwq5IBQDd}n6Xz2LVe~tU`$BhGLnpE&F__;;A+$(#~sc&i7Q@s?`Yltb>SF+RarG+C8{l=7q+hVnb7r}ySp7RyZ%M-^* zK5gB$<-(eg**Suz8m}cyuE=XXepe`TN;hrrt~8MZg+z&leDT#AHD>t;AMkdK=W}pr z>R9aMAT>eov z{H3#*#xvRW^-p%XnOA(bbIMxyaB=qZKw80xSDN`1hNtT0SM9H!<#Y4#$?qMNPgb{h z&izs2JHxw*0J%%QlH$nmEJZYVJAjD@F9Eybn1S zuN@M5l{4^A`Gvq~CQtu8A5#90tlD$_D7hB_(xNV}H_ve0H+!{@c$)p{wW5zC8vpq% zvUf}dZP10ILK}?s4sI(yA-vV&GvA0`#e$wIY@NTBy1PZJ(eWPoR?y2gSh3<){rD%_ z?AJb%yg&b?yI`z0 zIbw%*mG2QReEKH0^~L&8b*7lf->7FJAIKGMTCR4vvmqqYFT^BQ zp~+r2hPit1?|U-@84jX+QooP7?e@%Y?t1du%W2*tZ@JJ{gOWd%i&t4k@h>XAIB=Si zntSS3ImfbvCZ1-`Lwsk?U;Q}ag?(iWL$uDIZAP`ORYpPjt)uz18y{tvwEWK2RQi1N z>h|I*_cZrjv`RT~NmW3n?8;ujst03jYpt)j*QiWf%ea^~-|6N6MUNHx#`}%aEfl?U zY?s&##X14|*wz6Wc>Eh`DGrTv*3rIUr7@oWmbdG?j*tz}srELv6AUecx7XY;%P)Ss zy}9*UX-&s#F^lZ83&S(AcWFc&eWaAQb+L5ud`XoWt0&Bk&^?B&PD`sYCdxEr>sDna zDkW@=5?Gd~7^#p>JN*2cM&_YXo%9teLYkDky?@u~8&({Zuzzq|b@Tq$vPnDX##yOO zA?bxF4b7k4mbEvlM%CVM%ewXKbjFGm?~;s-)bD%wdH!SuXLxB%YqcLopCBS6>Z7M5 z-L7L?mnF2KWQ{fRgQlBT$Jh38`8mZ}$AjXPwoOSEiu+!WB!4A#vqV^J`e?n@teL;V z+5-wrn^$j8yk$6ZT&RNOtq@!?Qs6)d(WyN#Ck>k6Xj`zkrB`LDrvjIsQamt9e);#JKvys?qiw$C5XZk>OLvN%Ma$uv&02)^rK8)-6n{HQe!6d(+!%#Xo)u&Y<`X}~6>?O)EQ868}k+ zxcDML_Ov3+`i;Go#gBu|&Q;Y`VGrdk8q93Mzgh0rs9IN{bl-W%_E?Q2`3Y0voAXDO z)g%kPZx3I2uGr1QH{R5HQnFQ0vySxibRiLy)z+%Q=-spkyira5avelE}U za(mHXAAU<$#Oh&7<$}I=P8(No&xpof|vD#ZLJV@i{pjjpkqRbO&N+x$3 zhmQz3K631E#}Q{mCn+9w`Y^1x?u^2hY|o*0K2MeYo%nS~irNLKc=G^B8T*;CDw@A! z*6zxaTiCc(zTSADUe$!%({}B-JL7Vf==7N%jr2t~N6%g|y=bPJ<$zgs@+)=xHXPB_ zx$$f&U%JAS&DU(TEsjwkFRe0_KPGFoXr$GGu%P()KU``pN=1|w?a8$_KlL(k zVd9~i#^>7vO*$7D%)71{X=J4Rz%amWu)(+{vpK_e?wD)o@yXhKz~rT~3xaG#Dsydi z7Ij(WpPs(tmCSm}r{RT*o2R|9ud|{rkN&_|c46yDyD9PSRt)?;*1>+B-%6iJ=T=21 zPHo6t^R@otqYJNUP6fPnxHz-PtLE2RZTGx40^(~M_2#R!4yHGLv^jeGy;FzdhsIZv znxDjcXxXlF=G|2X&wtzUhWxx;{`kjH?*qTm1(*JwAUW)t;@ax(b8a5(4$5%oGHs!? zZ;UGbtTt)Fo>zO1R; zk#w=HeAJhhZx-mjs2208YGtHX=2W*#`RFtH3_@Orpyr$kDtBRWPN|{W|x%3Tc#_>Zx#1{8l7DBD*eC}dfG#N z#_4X~lV{e4zROr3J@&lxS-*3mOU|8D*z_rN(!0qi!ApZq8tUhsx;eHhxqa^RW2b+v zKk?6j!sBHDH?!Xk6}(iKYLK(-L1eDj^9NZoE)2ftJlO2QQnwwM9?Dhut4w9D2zFZK zX&s5bd}(`aK~%lc)n_a1uYH)3Scu2Jn|ndtjyoc!Kc3H)wmsmyTf41R_r)r&(URC<_TlN0HtF~oZwjOvh>+#lTw@dZYU)o#jex$EHIV4)L z@!!`Wc1y&oKNxsiTikW5Ykb?yqywhoG?ncwY>&R`^fTMISNO~A4XFlC6^efNEGkQy zIzCq=_Lf3IQu4-eV}_diyt1BdIAG824#}_0rfIY6WDeWur>W$`4cB_|_1L!6kAh_e zr`~2HS^?&7%`<`na?+Eta6_g zA6h=XW2EoifnU{TFyanH#pq9p|6sRwthJ-jB`u*YvAVQ{Bd$F9l=8lA&#!HH6OG;F z4_gmlj(MMN+P0>4lKEZDi0W>_{j82q+g zG&-@lGazP1hFq(zT$e#4|37197pRVG8D$u{^x*lb`W^Q&9VXAnS@vP&<2Oq)!!1po z4t@XId(;eP5#z1T-nMApiQKh|S#k7(`i1VrajR?^Bd2TGO^*`Uo!aC(d8F|5XmOvE z>Deb646a^}{vj}FteO1$MPJUh2P^Xmq@X0OZM6tW12_7sDiS8 zwd!Ja+qh^tbyq6$A6g#;hbbK$Jvl0=OJ+#Pw`0ud~Pf10u%MEO}J@`S5 z*BCU-BU*FHGFnK&FWg^p?57M-4}Nrnx|hv_28Za%U=^G9=vR=_M^7>sPvi@J456eraYXelYYi*yVSfU{ekpNQTf5~^{#G_R>$I1S7qToMu;?ez>FLQMzupp5eyI6>2wpFK!E7U-|LgO~1|b|i~G4uu+B{U#E6L(6isKB&(&Dw`~61e^Olr&_r)XAGw-i`C>FTS z=`!P!pg=7i{~OTr=}it-G4&jd5m`0i@cNdPg_PD zD6feT$uS=veqsI9w|N>uao2{&56_i!U7bn)+E=Si+F{QsHu$`3eAiKty*TR0 zmfJ(T6K!0*(u#gMcdy;moormb6MO^I}Fi{*~OynlaOj#=;ga(JEWGYzwyPu918uP}F8nB``(z1)Qm~U1SA}BmwkPB3C7-RecYitme)r`%zg>l`-SWAGa~(5x zJ*})f(R}Rj-f+F@;+qzApO-w&cmI@9VC$}*E%?$jOJ_l~`1oh%2PvBC44mI-$iLRH z&aw4IntR<+E#F?rA`-j7BHfQjrJ=~UgGge=e}6T{(MoBfyx8qE-w{On{?~S zjKZv|qUz%>+3#_UU~(*(0q9HAicO8E7v`~Egi`HDx=XIl^pOja8 zs(3ZWG$B(Oorf$ds2L&4!hls{_b+l z@O1L}{Y1|D(Y)kAuR^QD%ResSkFuUN@M3YQyP8v(quf_BPm_hSeM6pSJYGG&rqcd} zL7gZ=w|YifdO?O&ZT`_)CRvX*YG(g#xq9`p(!DFi+pR9{)l|K7BIQb%j=+N|!M)bC zwqsRl+^=0^tetq%X@1@c55)oF{KoIQBwDC@Lu}VEdx1JdjRCE(c>E7l)H2l8agH3X zVRggR`xgI(kdApa_Nmbph6%Ut)NB`iT%2$At+jdk>yDbzv)LA6*%{#rk497k~O z6)S#wdn;8K>eoH6mpHnAv+D7kNwTj~vyAD5=^;*^nj2D@+soeGsEty6b}P$m#fps6 zM#f3+{Jid~2QzjTqzO^278X8ySLugA5D zbG9kP2gL~`Pmxb5_%5+I_R8q=+OU~ft$G3NVZT>5n-&`0QruuyJ8ouMn1w)#bGT8l zg~rzB)=DM&WViFhO5_`)s5D1i)2k`gOTHyOD!;>gP(teNA+ZS$9q!Xa=2dB#`hIiX z5z=6F?@Im(>l4Y|vN5sxmGKD@2WqPlEpOjXmwMmut^CWk(!Ku9RSsTZO~VbWvul@G zY)+DskhU8vt1?tokNIqtis50mpI)i!;Rb+hsmSO>WqPiB@fjx+wkN%soO*xMxPqUK z=TsZcU(zr8m?Ryg5iOGCeb-d=OqrGJzu&`+$G&n4@tC9^)~Tavnmb%XF_2$++|&hD z1)rCg#$F6_t7STdw`#p@YX9}?XYsYCW%29pmnP4O+OG5MP`pt7g#zo)v{bigGolg~ zC?}>563PB{S2CkCW>xD73*!!N37;DM2Z6;BJKOE0=l*M`GT^#5^LllNVZ;HQDwACr zO@gOr*|!Q5H*a2JxP6$1eg5*fAQ-ZeF{8WtnObi!ASQPemxo2K;gaw1JSIZDfF zM}~9Uo@}efFFS6@-E8f!Z7ojS*IASBG()JMC08jn?TA*b*A}<|aL+63!xN_I*{&6e zehtRsCNgSu8aCb%N`}jSmxb+a$^)|6-zcURpVZtO?>;suS*`I_M&8fbr0&Z0`_msa z|6CW5?p1Iw%l>CplE~~coAowMP*TmDDkS@9#5iMZA+3-AQ)a`Z#a?A!)*46YxU9$u zDg9QpsJx+Ra5vllsIS@_dp<#Weom~4=s(HKJDc+jw+&QTVLVLFTS!Y*|E9Wx#1?mp z#5v*C=>wOBeJe6|F5R?A@7Bmfm5!AcB~t%6Et~M-jWtd2hlQ4Xm9z7~hhbLLW(^kd zmfyl{)>UcjcfPMwp%J@%$drWqB_s2j;{}sz%2tNAzc+C!KId&3?;B*5JZZYLPP2-L zP`a?H^=c`7xA6(7VU4>BOi!JRS7cn>K5oqC(t`STWwFPKe%3nIG_|V86f|5FPc8eQ zwmnK;KRzp*S*Ci~vsAWgPLuJB#Ay``cjz4yNmVkxa7KtH?^9Dbjv0MDWmP)au ztqmf>x?P2<_gW1)sxe5^!DN<_+6m_H#=9mXkB5vH;W&J(;v~_t!#+42Ryb2vJk&G$ zi}cjbcZPgT{4I4sEk!cGJYIIDy^PE+O%=JkU2EmnHZIg#Xk0&S_k^k$clYd?F4}cj z-{|Aa+0mOtXBJIgGHZaPo6bskJKZB2{H8v;p)*Axolnd5+GfrDPcLde@%neN6yHl# zuQzd{(|4ziY1R6rrm_64it|Eq<>WEz=uHQeN2#{Ujtjk{KK@GW$gw{hjn!ulTBET> zsbj*$;2RUa+&MH!_xL&Hq1d7|c5lB1j98Z8|6=mNkiDaof)`ti50wApAN2I_yzp%= zLN_kRvDhFkEVurV^Qf?hz>}eKM(kb7pL}m!$-ST61rsxU!i~22>3ys9{TA2al^yN9 zI^_Lw53MBwJlplAI-lPt?BXMR# z$uF=PxoCcTP?$xn%a27$BBkc`xqB8SzC2}o^H8FRVB7h528%k4B2}*&KF~HY7;G0X z$E<1G+#NfITYvJfTsnDxyKPXxY@6Il5v#7EolB;l&bM4I^J;Nn_*45=)0&slt?HIB zK1AD{+c6hZeRbi{$JYU;YMN$Vba?x##_LU< zyLRJRae-E~`FbB4>4V=NKWg*AvBRl((yPXn4>3>PozdC;ucyP+pF{H6empL}{p*1D z(ceo2)4vUqobbJRtz!4ln{&DxGJ@J^EvBD~qc*l}o~8E5*jB1T#Bkr2((xz0#_s>t zY4Q6(P3Q{8>MOdo&wgx^cs~2}wAwXa3hFK{BZJO;x03GMT~~5fRO-`xBcZ?t(LQq@6+IdDaKL4a`11({aXvpn_Kcr1ac_(I z(1euPM-I4JpV_bc@8^B>5x0^GZg(9GKlkW}-jIZUzJ(o2%=S|~7$Pv_uvY&3L+y_@ z#BQ6axpToPp5t&V!UOaoe zdGCGeEsIlJw#q9^kACVep8l#VIgNhhz-b2m!!sv+yEEQ}u0KCkdcirrv(jhJm5fgP zv`Hal^1DeVgO&!L%GEba?izdZ*z~#WC)WQweZ26%KiM|}$}R~GeVb#DT9_O8U|ZIM z=VBKJUzl;hY_N0Y4!5QGRmvV$WKCD)S#=6tjz6MRP`mxoRi*ljq(q?S5D5U8~>*!2HTNiuWJcCD#fS9HhycIvqxf8n_g9{Q>6Kev&oA*CRz ze=_&`R)w;o!yYw{IUcZkPG$-HtngZsyUE(;XDjTwvwYAD_w1~#w6aN-dY%W~uM*p` ztnJmTHwU)5MQ?rla(exxN4qWTLnf>1|Jx`Ty~Hl$wZVsK@vgTsGrPiEm0DSIkD+^=CEn*RU5~bhsN*q9oaEM?d!m(Lvf7wN%}Ek_u759 zWaMZq)+MAhVqscc%BM$He(kAyZ#*$?oAqIN_xEF%1J<;e=HE4+RQtR;Lepj5+ofLm z$w!_<-R{1w;~^imeXxJy3f)qN2Fr{^*1rupn-fQ8?1%}F(`}XGk2L5im_6p7Q7t1? z4=xQg+)-b3ezHU6y${QBW-NX4c%_MDc;@f-L!Ua&80GzJtFg!(?UuL9UArRHKOC)y zTiksive9PMbUUr-sk=p@Mo#u^5|6$voIO3o=c+-&Nr4~H*X7N|PCEZ((R^*?;P&lD zr4kay7lzUg)C>>pxVxapG-G1{hPqb~?2BD8CTg0Jz3?z53iG zUmaOt5v$?;iw>Q7IQDn$x@f7vw;KZYNY*?UceXH1Z>W@U#HnDF>Jmnf<61sR|3?|W z?giXEY88&xM3R`Trcf=GcwF}SQ z9jd%`vAd*2bl$O@L)#>rkC}T4%{;ugaPt_Q=LvfbPMtXMm!+EZ<%36?Yk%xqu||4I zgIq|u&cugO+s)1l)Nh)XAGL}8x;{R5xkKj=vzBE)KP{b|=p89Is$#a2QOS;nr^9vA zA60HN)bqWewqkwowu?9KeXLwIywb1X*o8suG9wxnq=ju7QtDZCCPX6Za`7<-zVMQ1 zN78>qsLCFEqm!&7x=U%XZ!|+Lb@sD0#S{E$C+vH2*-V6gQ`?2Sru`?x&DJSim^fl? z`E1kgzRNUPo_F3@>>i(TKQnz~pxDE;jLS~@Y6S#8(Oumb-mqm0op@mw$BUJ;rcIlw z0k2fjrO$VB^40M63u4kuoIJg~!&qBkEp+ntq8qw;!`2)$9?5aXkO+LdfFJ&Zfiibf zvH-l(L6}1pq|xDzUCs~Xk~I200xyi8@sC4}pha-VbdYF#R5?lm_-OoWc>o{Cl9Wun z7mae+5g)b@wgi%-$p{C~q=n#ZGQvzCO&U$4h$blnPuU1N0?|QE29Ed$AOn!=p&Xvd z5r#Lp2rGabM;jtE13rfW!P7e;Wi%-vczdF-2M|0hBa#Um6bQ!vnS$H~_4(m5{6bz> zh9)cg8tRXS&w)Twp!^Qh7l+TTK&l|80Z061AR~~Qp+4$^r{{!~Ku)B|2wB1B^*}R0 zu7>u=!)I@x2_WYI7X#V}WDar{)Q6{WgqHwGgZ&d=Uj;tHvQStX%5Q>wc)N_SGmtXK zCxOG$B*KwEb3kr{`Vc^2d!S(;?*sdD;WNBuOL#iS6<~h|d|nMS4&+O~F`nCj=7Zb; z_2KCpVH+ShngKLrh|pyC91H|+=n}aP_6Ngf29O%aXMtn9qk)V;eh>BGsXgJ9K=9Td zkt1N=1wMxZ%?9}e*jI$lzCiFCv`7JPcxq617tkV*f6$2jUktJov_FdM|1}`P%kxBv zK|lKI1T+fdvj06n9t(07aP)T@kQvCI zp+5HKQXpBHr0@VfqW|FuBH^h}evj;bH;_kzd>S~$YYWgkkpG4H*#GcKQsLnsA0qpI z1IV*Len$4c56BuIUjdHeDHdoU$lsto_CJo9A<+ICWd8?%4E-QdLiRt#R0ZS|;E0a` znhSCh)W`l`4g_%)Ng(@w9mq34t|a^43uGAAB00cuJnaBl0CFeP$M)C)$#e972*|on z{*df{caX<`oBo@_`gf`zbjx=0iO;W@tc8+KyHEhsLugN3FL!h|E~vmCdf5p|9gWx z0p!cT#ejAKnSWE8Kz-~Fd!S(;?}a>9sf_r{`Z9Pu~2>yIQqK{$PDCmsE_^mr{lkr?0+}Fj0XG};25thK=VL;2lcW4 zR{#wM`7qi48$g}~@^iBPeL&U#IUl$u1g9G zfcl%D{!py1ASED#^#x@GoUp#5qyRtGA1EWBh4nS11;nwwn4G|MqCQQECXG`HJUuT0 zZ{Qn56QGI0dP$5nkR}dKZc5PjXy7r8dT%mo(^ER`N(`AC`2p}kcX-z|QS9yJ>mKL< zlQ@lryQ%s(`G&!6d6&5@A7kghX{%^hbzxCq(){C6$MfMJ%#Qr&S7Y{dF$OQR%`TB+6jypa~ z*q$l?_XYBCgUyg!iIoer4hn&dW?)xr+{uVlz}Cmw=#tb%t#)WM*uv$n_Xjy|1rCI@ zs{pKHgCVas4v^dlpN*hJff?rQM(KgYp z)A;x{@xcwjfqeXYf_%b!VtkT(3Vd`vO+EuYM|6O)P1&Sup%pp!lZQVA_!|m;!{AR5 z{*>TvIQ$vFAB}IoKz;#1Az@(=kwJq*Ma3YALy~|r7?LEJq{t*qrXggK;YzYxNscSY zb0vkpq@jOF!~T*K`%g-&_VWt}2tpEqBupj|G7aKNqFf2%)nCF`_Lnfu|2GNy=>I0c z2$GVP9x?>G5xb7+E~=ZjyNA0w{u2IS{fA#sQR)9O4gbGPcntNI@G$430U&b{++Bd< zmrZbY1ZEUA!6i4$FKmL3{U*v5WrNa9>7;bQT^yLTXfSUP1b0cn8^r& zvk}Z`@LmX#;BE@cGXLKt^b>tVKQO^)f?FOUf`bG^`Nal`50K!)y8-MZ243z2G6%X3 zGy&)=kT=kKASIw9Kn_4JfMx;}0Idi50W<(85@-%kF_1FQaUf@)S3qE$wg+elP&tq` zP!^Cs&}X1QK-+=l1Kk4}2Xq=}HPF96!+;I}*#kWTnhtaYXf4n;AVHvLAY-5sAT^*A zAO=tqkQ`6~kPT2JkPc7|P%uy@kOa^!phZ9rfhGcF0Qmxa1R4Q!6lf(-EzoSBLZEP< zUqF07n}7^~t^%jxG#cm>kQ>k&AX%XOKudw10!;K;PSu^06zfS7Pu|&D&SSXb%E;w&jp?fJOp?M@UOtX z0v`-~F!0^LcLTQoZUOue@JGNW0iOi?Jn-|t{eb%cZw1~8d?fIZz>|O{0bd1t74SOX zb-?w3>jS?A{2K6$z&8T_4g5E7oGA=|=s=D@l0cR~nm|k-ysu~qqz>c(qyS_Gqz4oV z#1CWyqzdE;Bm-m(GzBOSXdq~a0-6hS14sqv1dt2RYapD7C0V0b0CWqmR(~?U#ekH6 z1^`I|;eE|vK!QMWKoUSBfcSu?*g-T- zgUGimBsiLaZ%BH|QN~opQ9cA@>b%1$gnw|OO zIaSa1|6%W4;G-(eH{i46Lhf0DlA!3Ga7#cgn}8UQ%W@COWhGIgqUg*)@vUw#fO~m{aWqQh}b4(F>2oh)V=}9+}f%{=f=lG zo7b(Yuc@ccw>G%&UC}KXu^PU36=8r$>zW3y(_deWZ(MG2`Dj5zL~$NS@&!H?0sc~b zsc=*MkfG`z9n(7h&R94?^#ms#%6X&=`2|0aNBV@U_-njXrB{QbvX=%M~ahQb$kJnqFl-=KQ*-0*mz=;JGm6CbsIH}nfb?hxGi@?NxHq08+yP{1#ubkmr3P^X9LqpU{K zQ{Uifq|S&3J4Q`ul1?98KejfKE@~I$aO=}0$}6Db(RD$%_3c3LM1S6gaN_krs*q%; zeQE;;I;i-(HQKz(*H}^K;*Y{ek5M}hxnk30#OpHP>DznqI(D9x6;h={!H^y~{ceO) z`dcO551TJ#xL%da6T;uM2MdI37=5T3xihB_3Zxv)egnIZ%9i zpNvkI6?#;jQp$h%LfpV`!!qmy2p8#*$5RLN=<9{GSNhN}J#8&tUf+n#Kz=>7kDI_3 zhTOZP>nR?6`#Xqm;;Hq~@sxXf^%v3Cyxn%^de;I(xWTXolRg?h@WpTutu{Ang+5Z~v)W}eEQ#yo`>JwbbUL)_E1C@Z3?-NJP<@u+ zI$>yzWQW_vJt#j5wX-;z@Rv??WhbDzFq@x`l`@@RF3fza+~`!~wOA?8X`0%k1c4F% zh0s7>QgLaQEFL(cpUw@&d1uf?CqC0zP=Z6mg@}hvo2Tvi$jH8-8_8J!lrf2DRM zo!idd1t5K^;i^G8e8>yw6h_3q7AtlNZQucs^ouW0&>5|i9%drpi{M9JVxUuyBb*BD zbZk1Ob}iN)loNK2JjFw&;j^5H*dw{8`l0qK&jUJ8Kl*WCIbM1g>_*AL<95e^b|Clb zKB+xnFMK`j9`U;MfS%=}@Qxujl>Xuk(fv*2OWdzo5KjFv1gY}tsNJn_`PRGW)@;}t zBkfmCcdx9c*&T0+sl_Jxft+sDJ$Smy5l-p$LaLf3b{|;L>|PyjK1=zM$Gt8oo|VlF z)q@P51LLRC5NW$q&S`M#(?R(%iq8t3ew-CNc|56;^flt`5}(V3=P+)(YJ-O@u9iuv zyS@Rh&D1wxQsKlCmRfv?-lw*>n@BdWS7_``x66;$u;Voxil54Hr<9)#DSo@NscEyv zR~t`}&?Da$dZql@>pYDve|^oe#&sSeT|!S~W2Ag3eJyb7`(3

    i|z*4|bG>QQqM{ zi;At5FYPq8Phf2({we<&!g?L__U245KJM|-8~iAVSSK8aWCjqOLY zKjVPEFtnc@gj>v*s6WQjm$orlUqwZwVaDltqj^{vu2*@)6i-Es(d>c6PvKSI3qx*) zbUnpGyKq4rkJ@1u-17KAwj^8L9Edi3e7 z@c8_ToPKA#3BL$8NGfGTYcEs|ZO|(W#oGoS+Bq85r$2u&acg9k@;yYOlR;JGcjxlW0Gp-|XJZ<`X@T`g)al zWi5>7fE%s%~wLYCb(ywfdO+V#BzW=ou@F<@L;4h4} zmwj<`K1F?1!e1D=AJxIF@8`rL{|9wE8t1zWcoeVql88R7{^7R4pNyynyrHl3>UdM& z?*6_{2@(lL@JQ|(9??f`@1?QnGvc+z;mPCpt^|4A3G&RB#iozSVJrNFq5j=YJW4nW z2`Xo*rkN`FtqK->zjV)1YG zs2;@aY^>FmEoybWRsfnGetRGyj9XsSKD==6@{1jYxV&}EjcooCovs>ZW07C2ZmxIN zq7tY^Xzir!#QA;L`V#Rk*y49pXwQ^p&GLG@*k&r3Q9L2CR)`IsRys)dB2P0OAn6E8 zU4F3z*x=dZDiNB+`*(K#dez!eBAVpDdwJY{rbs8t4?QGW-$?u5A~)I(C1`TNUgtwC z(YJxI&c_=D6#$vh0F#)%;>~~+cq@T8WEP_htcF~P{iPLft-$|<=LP`GaH@s zWX!MCYNIwvgN1oXy$3%Bruiox7_~Iba$?iJ#_7ZEq7y&8*n(la5s&Pg^^LqH=lfCo z)y-Ir)j69~r<;~)ThwZoi+0eRwaP#^wVLKesyzIB*weVB!GoSa&*(f&^}6;`wPHDb zno)}%8B>Y4YPCe+5Bb;BInjt{*VKild)kI)qX$c;X0I2sN5);&==6Gh9AC>eMvq1~IJ{1;U&67j>Ie#=6o0xg1#=UMQ_&uM&q)$i1P z?ZPjp*n+)MK5S5)=~^%}KILVRixwW}T%3OU%nX;HAR;7Z{DuBng+J(oZC`PRbxU`2HPB)bKQOQJE zLM2VjptgQ}y`P4-8a%m;)W>r68zA~MjoX9nr*k*ep*DCl$_gaQiTd3licS17h!fB* z@syUHvEXM)$fk&4CDOZ@o;dMlu-aAAjEA_JFkWeCq~ERAH`Y@UHBGBs8=LFt7f?{f z8f0D`|*>=Q4^wVSye;IH9eIcY;hZ8I?`XX&4__m)J;xzGlp9!oVO7X zO5vK2Vv`b*vdT;4NXy z_4tL$8j+FuT9#m~(D57zWv}|{FnNpo-s~*OuDTwDK>g5P=hQby6lHxwv$iG7cy7cI zLqfH265?jOT92zqYoe^FyBeDtaI2xp6%ARJ?}4(Xq_4z*1gLdUtkoWjKGfE=!a?|A z)>`D|k8;u)5M8Pbi-zflbT!;?sKX5megpN{(o{byQaYGt z6JwF7^lrA(*HniR7k92Rn^2rlNmB6xbkujOe`y^5X>t6g$MMGx%nkM9hxdm5_(8Uz zzjm)PNT+tMqd64K+sLS}G~Xk?{XsAOGDGgYSH{l!Y5v#?e__b2UIiXq07F8|=f!%d z4&fAEka&<}1dry6$83-2Bc2s*dEQUFH9DR)KZRR`KN+Eq(j)d^_92{jeUSS3qe!3Q z>gagAaI4^x5&9@S>NOD_tt+f>tB_;_kGW$1s@#j_wW6H2>GV;)f(H61-n}{=<*N&B zIUkgs&<`T%OM|-uZkea$V@HHX>9N8s^C&-Z`U2po@FyekYZ$MAKH?Q$8;O_dqa1EI zUh;3#@#sCRZUY|0Uv*tXALYvdw+cx{pT2`S9+iuFeQdmRy=bQ`2&ei8L8_2sggz?& z&)_c%?YF4G*mVx+3&CF)x~?5=FZU4oNXq40a6@do#7nzIT+QA?ZUIj&Kbc4M+it+4 za_)t{Fk1cGXdG_<{=$&H?Qk2#tLIVqb;jZ8^Q)En4`bt{^lgK`Fj{+tTTI?X`H65L z$-nHTh(6KZD4r_#3q$#>gWD({?KekwblonvReqs}m-1)+QG`eJTMW0XkMhy2rCLfLmlc%t5jr{7;9eO?_;=+oNK zHm|1t4un&Ab{>T{>L-j>4yl4q#z@~y2q*m=kaGRf`+3SweF~-54oT%+aC>a|QTV70 z8#Vnq5l;2n30VwDhT`2-+z=oszJsMKI9798Couoc$r;T3;WAB%?_P=TWho08zm4;Q z9_H@+C6mfRe*ME-FXtCeWct1Hxj)x0^af61;UOMwK7;YpH@V(P(c#^8?$5&mJiL=% zZ|B#0#r2bU{&={`!|goW#>>UZ%cG6+1LZuu{JH@5@8GDIzpmHDuD7Ag z$+YrtFE1Bs^RVc0=5FCHq^Os@MNEGOzrM3)sCIp*oas@jS$y4hGHL&cNt}j)-+sVO zRg|f4jK=?S@W+QYNywbp$oC?eXr3Fh&{mdJteRY6oiTmJjWo0MNoUF}K z6@~5hH%%@nJ-L+h)p*&zXI4y}U$Jo6GA)kEC6i0E*(Jrtf3Fx5Rb+un*BGyVwdL=? zCIGE`Y0=A@B5NwvwA%gw_8w@HVX_K+MVgApik`1?ipEi7Fola(RxYbNN5K}xKx8V5Of4Q* zLKe*}nxw8rR*ZRC2=-KB9UMoab!8p7IFi-8H|ql9*A_4 zwuD5X#axP7sq_22v!+hnym|AK&C{lMeCwx{TCF8hQN9(}9B6P(77KW;HuU8I;-_UTSDO3Gqi4(YY%{ zMWV1-dbG9e!bS5d=by*+w?vEsjRHJsShd(I!p@hr9YY*?!&BRGLW8LF)L^a5_O4bf ztUSlQnB`*;_gA$ADeX2Tq5jq$le&c z3)y|BM0&GRv}pFiKe|mby%8w3f3$p4UTF_#GCC}61>!^_Wp?3tqR5o<&!4M^wRbU* zvF7I0s95XVV7af=-8$nr)!W7+Lwr%MhyHE-lX*?k#M>jV4gOW-CykA zu=_^kszs}2(eSo*_2Q+AtL$qlDpxOCxl|OR;%af#s7=mIC@gFh^D@8zJ1D+d(&zFv z)ngb`v1g3ezO^RocCFLeun#qkx51ezTCdW7>Rpj}9nG)2aI27HXxmt@95<2;OWfYS51Mad!DaO?l0dry-t?j+0BguyFPT!R7zNUX0A8hb=x`5aTFe@ zG%{Kqi~_jd|69UoEkb7ZA@;i~@+pAR0a%QsEI zu+rpldbJxY{WI0oxXI8WKu!h)Z6)xfD-+>IwjVxvr9ZR+!L+OT*}53vHnR^ zIx5(>w*4Qyo?oX-QGy!&6gzHWMS{AM1X%HtF1 zXs=}P+PPGC{30FYC;xl&Q2o;HKu?7|2et+FN3b|~NZAkj73?rHfT^%6sUg5vVCmkl z2KIZfx4`a#eG~Q@*kiyeg*^jSw6DrvMcN^$aloxYk|DQf*8v@m+I0|a{rWu~uhW1> zW0TmQ?z@lePpkLG?k}W(w+;T3j(Z`gpL9X0kYvbzrE{gSY~>PVGW~&}WgqQR(7-@b zPI{Nc4olCQD`6{O&xM^#7Jueo@-}{Bv&WBu9`D3MUrjc6soclA$ro}xlasAev@H-4 zhwuLDt1GJQ^KQL`%%k&&hhK%+_%cL!hIuF*$^`*Rr!YhC54m@7|E?q!zLpcZxm)n* z-4rs8lxRI-{BM=~6;t?4rTa)&F_oC6o93G4o61e6necrs)9+0$ntDwKP2ZTlGvyDl z4{00n*pR1&T$yxb()Ofll6C;sCH*Yv7fCNAbtb)$^e5l|@MoYKcrWQ|oK2IJoRhpN z`HbW>$rmJFnjB2tll)xr-sBgO_a%2Gf13P7@;AwS$=@cIq@0y<4&Y3=GNm)+la$_+ zuTlzAXQj?hJuP)(>LaPYOMN1>BlV@!&eYdZUk5%&{V+8peP;R`peo&&ent9@^y|}u z=|4Y{hjo8(|gnZnx2C5T5>bY8N)M*GbUzOGfFe2Wt^Nb zBcm*1X2v-gYcehXd>Q_XD>8nNaV>Ct#tj)i%xKHFC!;;%HyOXpcqrr1jK_g)ASE*^ zGdI(mIXtsCb7H17vov#B=8VjlnR9?OndfJ&&2(m7k$Fw#b(z7;8#8atye0G2%$>kb zGjGrQMdlruZJGCE-k14M<|CPpW~Shfn4BzgR$f+d*2Ju7Stn=B%yMKov#!Y6k#${G zFzd#wwyb-yew+1B)}vW}2D-D}%}UA6%Ff9)XXj-XXHU$YneE7SW}9-R zoW(hp=3JJu4Y(?2d(Jh$wZKg|KhC)&=k}bR<@_S&PT(%!o}6Fh{5t2poOa+hIls+$ z9O%f|lVi(Wn!7BwJ~w23#@uQC8yzn>Y{;;rVJSEWJRQg!mNhJASl+PNz+AuvEC*Hs zcA#?DnZwQj)(&$Hs{vfVdY~R?7}hw_z`Gw@TO4fqvs-?00KJu+<9u-^f@hdn*) zQ=k|47En&S?ZnWD-=3&gjt1%!1AEwVasmI z6Ts7!J(g!J`z)Q7*DP;X-m-LCKC^sfIcWKt<*;RZ;rPOdg(nqG0Rn}W70$QbWc``- zJ8MeGq!Q)cU(hfJV^YFl%<7UBCpnUwNtY*InS4Xa&r*Jo@@UFqDUYW-2|ShZbjlv! z^wia56k4a`knp1uM&BfT=cI=v?S()7#I zcLPrVPXZn3d(xjv-<$qI`itpr0`H~&C4ET7kc`>DTwoqx%UF=HG^0G@^o$i5-i(bI zmu6g^u^V_I+`YtfhI@Nj$a4SHy z;7F}c?M?kQbzQnA{loMx)7NEqGCs`sGGkq)C-bAsFEiI=d9pst`Z8->wkO-3b52fY z&L4Bs+zGjzLpq1N0$i1JRgx{$mbxToNzSuCiZ#VrVm;aV6YEc{hpqjH!-6v@ZpWD; zzs3*glTd$er{)gL9r|GYL;0C%t~ybjqB_(X^+MI7DqTv~_umS<6@E)O5PnDL4)+25 z;r?&Khr&&-n3RiPO*o~2tP1;mShjM=RgQ$2Wh(_U+{`8tuZV-nBYr#-O25N97w^zr zgfndJ!5rWroK^EX+*{s2(*LIPDKjvhKQ-i8luP%J_lJA|T$FSXMs}mI{hOq}Cmq63 zWS1sill&6KZ8l~rDY+?;ar>&MaodJ*yD`;+u{$zef06oS>UXJ!Q^SCHsCj7K(5XXL z3|%!eF!au$4*75y!7}ei39M?~l#`TSv8_|O<|BsCC zk7qqT=oo)R_K&h}&3+*Jx7m+nKMr(cKZ|i+jQLCc!7)F2yr({KAm{BIEO2w#*neT} zcJxujTxcF+E;3IrPc+-jXPVjlpbz&08ry%4ksD)kUTR)i-jcj>;IzCIdG@@s@~VJy z^Ulw6+m-i3UI*}W-ZOc7^Ipp9%zGoREANZE-n^XQ zW*~3)vBL|7pEz6{zGQg$@NtT1Gh)+-OGn%~A~fO?9AcN1pOZf^0k9k@J~Z*rj6-FIW*?dh*bdDr^C;MpAWwrel`4N z_)p;jVK%~;aF&fp$%Y*dTMRo3b~fxB*m=mHj5A680?Eov=TJy&d-F+};WKOW3<%?}fb& z_EFf!xP2V*_pr~vro3)ahQemRX2Tu>I|6nT?1`{5VNZpf3u}X21iOUW(;)4zt6_if zhDm9I?SOq6_D`?}V84Ss413I*&@~1$u=l_|4Z8>S53u5t zxi@|}L?Ns64N*?`Zipg}_3vooJf`(9Nk9rP6i5d$fovcb7zPXnjs^08k-+i534jGC z1jYd4fFfW5a1t;XmVnK)Gp|>2zQPunIT>r~u9c z&IZl_&I8T|)&fqT25yerI~z^rY!o;19q);3c3Fcoo-GAut9Q2NVGlfRlj9z*L|FmZdhln!FMvCNyMVia zUje@c?gt(KehWMVJOVrlJO(@tJPAAn{2q7)cn7 z;2q#y;4i=jz(>Hxz^B0Hz?Z;Zfv14Dp*<#A1JeGHSO?NPabdy2f=MShPY`RuQ>~{CtP8ziZ}_L-+ry8U z9y4`dPfXsQ(yw#=|259h_ptu8HO@b}uNA$-`Kc9Za^o(gQ@B;7^ zu-$UKrPXq~rOk3bb{2PIM{yr^5D(KM6wT0n3)^4$Gi@2tR1Qb8)8XuNJbRic1IPk$ z05gyW90QC13V`E)Q2=iLCKVVBj0MI6#lS>h5-Ta2h;%<0&buY@B%)-4{QQjOj}If11<(G zHC<-f23(2n>t1d8f$2Ka4W=KOZZiGI)N0yk`ibdwQ^@pl;11xIrn^jc1NQ>=neI0| zVEV1;A>a|yF4Jyc5AYoDJn$m$GVluU8t^*sCh$k#E#S{UH}D?tKJX#X1AGE}27Ceh z6*vg|&D4kI8Q+->1N{K1e+ZdmAQeahu-!T&3&;V?Kpt=mFajt5jsr#kCju%k8W;c9z~6yy zlfJ{g+|*wr4oLck3)0$#ue_<>D83vdyz6}SWl0M`IJfa`!Da3gRN@FSoV zxE0t5{1gZQKL_prehIVz_W<_-_W|v|Z-57Zhk;$d?||LF6F^7uQ^~&vo&lZ%{s6oH zya;pxuLAplH-IkSPrw1-&p z3?K{00ca1C_Ox)QELG=;$v`TQ24nzPKn`FA@_=K25kLWO954zXqXMIWvA}qs7?=o5 z0;T{~pcI%6%mB)OS-@;yE?@%|0E>VnKsj(4upC$k*n!nRC2$r{1)K}40WJU>Ks8Vc ztOM$R3jsIK2zUV>;0HDVEx<*-iePEKY9#D**cGsKu$RKp-c_ReR}X>P3Hvc@GUnBT?OT;0Jdu4XH+WaThF~9s z-4FXYY#Qd`g|M?>&xG~DUJWbux8B45w68S^b8yGr|&Q3Z%$)i0# z+n#)N+-GR!)MHamPpukwj`nBWGc-JU9BLhU+R$GPZO2BIc%EkTEG_mKnkgfRKSMkE zv$OXy{xZn(v&#~GezrSncS6t5F3Y|=`+4By?ETqq0A1PdWPg?Y^*{J*O*~h-3eVN( zncD8$XMsuPQu7S+O!HahbIf`9$K;phPtRYSUy<+2Z_0l-|F!(Lfy{#Jg1Z5AXd)wSP=M)ujv1w(4OUV12OPgS`y)3fLdO-UItxk^UD`>&o6EK`Q>u$ z`6ZS8%h|6ClsP@2{5~+rJjq-FlmTa%&o)1d(t0BQnf&MS_vVioIez2>t*lB$P8(S^ zQk2U&TM-l%7$#wlq+Bb?F18PnMd)Bf~>+ zp#C&i70+14z@El!2=}79VPC=+9fqa+$azTg89Ph=#^IE9k#35c`h^@1`H|6=9hFsY z=2w{$bEoC{P!5#;=zOn@%C}Ko<$M<63lHP)6_-i)a>XpX6*muWOP+@(QEP$k0T%;5 z1AYZO0z3vh30#tN3EmXAD(T#mwJBGpT$Azy&;k4&_&ViaN>*xi>hXXDxG=RLbw8jC z%^q5t?n?Ip2eS`mugY1Kb8gOgImx+sxwCTT^;-2hb;6j5 zV;&sy@R+)y=AsXaJ}tU@LhFRC32#j}JmJU$lQqejW*ufd#%i&WnFEA?L%`f4^Nv{i zSNB);JNs*ZI^e?o4gIEYQaB}?5zY$dhK~y$AGU0q_7DfhM3C_z3tI_!QVSVcUc&f$hLGzz*O# zAPC$D+ywjxXa)WVyagNq(yi%MytZY{26BO6z_CC+fE%Foc;G~o;XIVtjQ$z@Wxy<8 zHZT{k0SkadKsj(Oum-pQNDrr@^yX;g<_J5&H2}4D)*g${BB@PI!h431cDV*`U{YJ8 zb{N|Rul|?Ypi%paZF?yNLwWlfq2{Zq)&|SeQ`NcZe6+=-T3f8p+Tz1#f7I5fec{!a z{>A-E`j_=D@3(91>+JruXk*dsYbaV6wXv*lj;@`}4$lrdfm%RrU&VN$d>%l3bryQj zY~VKZn&Z^tXsLz1u^4^gV)Th?(I+OLPdtb|QCD;!;0782FW>|Gz=uE&@Ck7Fgv%#f z0bB)K4g3JO7Pua`0r(+sGw@@e3-}Xo7)V3!!mESUEP!6N!|e%u?HKC_pa3`yI02Y@ zWbToZ`%msa1(*q(3d{lK0rP={z*68G;5^`bAT6ARes`+Y=hmXfRRh#+gc*x3+nfZ< z#v8jA01jX)a0&2pe5nbK|M9)32b2eahk;$do50_Jr-wW<|65+34D zYEIggbVbtNfXk9EOU_BnP5l@+lG>m8Rr=TI-vNKk_-lqY)0_Eq=69L%a^~T4T}ipa zbMteL%eCZA2W9|ez!SO8=dL}39QV~r^s2NVGl z0D4ES6qr?bYN4%gQQ>KYrxykbi^rTa=C@-W8PhpN89RQgZR}}dcaHsdtTHZt{K)Ya zj}MH$VSH%(&&HdIl8aJ{(u=b2%e4tbrx&dNRu!!-It!>Ox}eBew7%#jptb1!q6dne zDC#Wwps2U#vI)0Lcyq#m35O>1PslzgFy)phw@vvP-S+jVy;BcOO|~Xm^Q^XqF``7i?1Igj!a3(M+d}4SmU<1|w7XaPi55qm-FT#hzcxP8< zhG1+adkXA4Sf$gXd;_asPBR{MB5W<}g|Kee%VD>{?tr};_CDCRVezpnsI@Jrx6;HAQs3tt8H0|yJkqtnJ@j#0-Hj@b&_M(uXo zBjcU|`o@LFdB%IjvvwCQQYPrzUU(w45z#(GyAbW+z3_YCkHepZ|K0WVOMGeUZs0zk z9iTBq9xG^^U}HodMv3n-6B#4K`0$VR`P0zjZ!Wy0aA)D|g+D9&dEp&}cNX4N`0K*^ z3tuekEPSQ#HQ@EauW_3lIwot3Wz6U?G&X#1%*A7FH5eZr9=B^;$GE4*{e7G=p2mvC z@!o%7yikh6#mY&EjS>Io_<*6|$ot{<(dT=@pX>Vlzq`MyimHTwz=*(zoPwMJMa@u) z)d}iUU@d?Jg7zNneAjxHvyq)zPiI=qcYEvb=?a|Pi(kajugJ9@kJ1mco0R!JXLWrI z>&5K<7|!JRypzWZUoa4kUkBGa8_78zCtYo($YB;Zo9b(pBT_8{Zk*?a(4f#O`?C_l&pjpnvRW7Ykk?zs z^A|t70_W_p{81d>t;V-gkdmgT0QmEy;pe$_I+L-7`s$g2MaXisbKtm8oS#tR_TX#^t>0+J!`0VN z83=!r>vH;lg0BhnwE~Ie4Pi0Puk&~#=~(J&bop>xwp^o2T^@Wc+gD#xQRnm`pK#+t z9<1Li^*{;w<5GOsVFS;f_P?$ZXl_Kkkj|PUZu5ms`pG`0!;RBQH`EQdsTwxd*U|xc zwM&}aZtZ{3xN%WA&Sq_PM|FwQoDClCul=j3W;|B>IBk!@n;SjgxvG7x&CpZ7zRvEe z--P4(a70@LYR|JC|BL3Mh3kFG>wTz&MyE*kGW-02=1Uh1wD$TMR2^ERcC_X~af*kg z_jG4tbu%AV@c;UjdeOxc1@1;?trODk+@Om`xW#uT^pT!khtmLgg0%ldP|P#v!ur4uHWE_M7F%Xp}Lu;10Py)IeiOw zabVDn_K)cg%RQU*#f)E(BN>+iw7s@YUhBi^3`t<4R=*j zgR>DXqxM8a9_bV0(!1y5fD4=-(~JzjAH%^WN_|CrBaUlyDisYl=75rU7KSR^$wb9h z;Ghuo+t~RWw&~2PZ@tu+z;7m(`$wzgA;< ze|`1q+X$)F@qAk%nWxNZ5eybi5mjLPcA`KkF*>+C>q%BS8#imkjsLa$RXXdJiyIgI zuWEKSo`y0RXhoII2JPqGl`ePldUT}9I;S=QKn{$HmGzhup}fzeTY)x`vV!3^+l9EG z7Ue#_8s8(shn8ppL3bW@GXPbq7HSO@I1-e8X3k4K)<2SCis2mH7{%O?F_pP5L{`dO zElxTvWFSk*LX^qEb#$MEMO@24UXFIZ936W({FeJ+k=GUAtw7)oRyditpsl+ zICg~D;kF~(4qbMXhMoMOuL5Bexam|tUj_Wm#Wm-8VR^p9?~50;ixHB&>28NxrG&$n zV2PIvxkJaxqQD1Y&k-8}?``lGCJFzv!d=Hbgg)YRO1y5kZ4!^JSAP@HmkM_o+^q(@ z9XehL!rS2PmUt9zuZ~ChmEXqZmw09H7lwG{20Z$W?_M2`%0+!JHXoGlF8B*W`n%y) zxrZnhif4I0J11_V`WYB7LJaTV`TP{B%UZ(+%;>~)5 z{oZ>v#kObS-vobQsNO-?;_Zc-&SW4XcqEs1M0k|{D!AqJ z8R-jxr`Na8<8E$fq;tYN&3-x+9_Jg;VcIL48(cI!z?TVT&8lx2IA(noPSK|?7~lwL z94AKyc+rt4bpAdTGx(AnrIXBRe1}U`S~5^FSTErhs^@5@D=_{vWrh}7%ACr;r=_`G zO4`6D6}(uIV3mUjh|)VG?N`FlZu5&M-g|AXEJmG zleSSz29M+6Bbn?dX3|OpbIxmVUc75|ax>GV?jQ=g93E8^Fm zQ=|1?10MPB`y@Kv?QwVy!e1D=Z|#l4J1p_czc)^w4gSJVI?Cae`}HvR2Xwq+;WqDy z?T1vJv!9Xl!ELBd$J6vZ8>^4XbwB)tq5Ss2t#S{FkII?uH`eDOJi4w9?sADo{`+)1 z($@>Os^d9kuybl`7qa%RHZW=1!esBoOolFEQk=IcWCy>_b_&xI;O>rpQqRD5p6Iww zd?s?$x^?(M#(bZD$)cqd%hB%2SUjP6mL5kVlifUh>IUXsRed3**Z4MLobNk@xSrm4 zdfZIUiY5==H#GPt8_JRDgUa>&gOT=3{l&UBwjCS?|E=&BhVCEsKg6D&L;Bo*i|C_z z41p)ND{2p2@E3-z>xNt99-_TaJD>ecL?5}$&&TqJFZbUv10Kb*=!=Lx%C8qZIeo<2 z`c;HS`PgN^qj-DaFAQDRXAm!?`|y_$edI2FAvzzyS-gE*!tN8n?Yy0Q#m@azZp{o( zd=4*@q8$s_aV6u|aXq#z(R$3+uyFI0?0Tzva6RJOEOjRDXI!88Dy}DvzRn#i+H=(cdU(9FR@nC_w-fLgE6jiC2c=w-H zseKISiwrEQ?3IgG*_SOE&_n%lFRl}Y+F75ZCtiHT`=Z<9KzuRdnZ3e}@r?A4em|}g zhTPjFJtDp~>3-dAz@zIYy%^C){murr3Q30Azlc|y_rDe4#A}myanrwg=@Ke9wYX#g z={!2GRO3;+bbmdlOJ5$`ftO;(58_#0j^u-Q9dOIz4DsBZ(LCjqSRSo&+u$$EaQxE? zx5_<4xsblyuSR$jul==HeZ*7tNArSk8>Mgd>(RVUxMd#I+txQCJW5XxZWWS@NFU{6 zmySp49p%l~`#cX{`2rCoCH%9_>4CigF?TBll)}iG3YpH6)GTF795Bucwp0Xpil>^wNE$ z1MVtFG9v#}PFY=%d=XEDyO>BYdY-J$3!Yw|$_}ul^OtdsZ6qDC{tg5E6i=Tn9h5HR zkJ05T`mG9oVTe~8hbQYRH{j9rZb@IjfJf!huH(_XvCDu*`LO;el0I^m!CeMPhTO$- z+5IN)25SfHuQ6FZ$JjrcpJa@WYdLAbD86?j%A-;jAGJ#d+$tm)icho$IiEoT9$mjn z(${Igqjh)MTakQHzp=w@)Nb_qhFUuWPX(WhNFT+Ub|9jU#!nS)6_Sje=a6_U20Y>) z4sX=1r9V{9y9{^~PmfL?jR)qpWA_8;dO!Syp?qwITjd`5^mXcZ)J}Q~ct-kce~#5h zdiDDlR8D~ed0hrPidWpHvfg3$sWM1?`xNa(@V0SYy8(~Np}3pvFWMogT?8QYJmCaVl=5X~0MHuWnsBsQh~1R@o&3?UL##?Y&5PiD!n} zh-Z~}WpQ}&_*Io4uO&fVYaE`Ok6m$ia{9XB@!&5Em5cHh<8o2qFAVXD#p6l$*{V1^xjtIr z@Z|bvHQ-VHgRb>F1wI!Rbxc*NBNX_y#_oghvL6Q%8T4(aLeUS z`W!kQ#ajor3Q2~-Mfzl3s{t<;{4Sk76>j_Aqt{nLpFSUyzPi5Xc-PmjQwQ24eR$dD zYxeSQCWEf6BV7ZtAh^Bj2j$meed*M`G(L4;ElPUy{89+Evy= ze6gO@^Tpbh_}ti-G;_(yo62Jc%0n2cmylFGRF1@x??;^mJi5M5(r5lQy1YqW8hGXK z7lzhDLAd2{mw3u|5gzqN8{9HaZm*QyHt*CFW+jiKvKgsKyUhs_ap&p6OhZSxWddcYXA@k}C zcy#}1hd*7X_WKlio@9sI4oODnBRMG?iI>W$3~m*YjNp;K7)K{zEkW)oNI4%y`a#tr-T%B-vin}Z$7CJ9FAD!o?(f5Q=xY(*VyvP3 z=#@U~L(vLJm^%34t0DO9=v1Hy_ryA_?>h1S6vd;B2#vV50oSa9+oz2qeje(>h%yzv z>j1jXy70W)1KA9g3o-c-T8eVB;;Hvk?GEfl?0#@P2yH@K^@yPfVRgzDEiND8sYjT2 zZ&$SYn0}6OQF$grIg^yzayqyQQfAMgI`#Q89nTr2uR2rv^7i=Ct?PU$F7lztn8{8`Q5cweg zJ{^zhtvJKDoW1ZDhSC>+Tjd@?ALZj-iPsT_*CX-z;_%eW=y3A8LX;TRdJ@^nBG3k0RCy%F&I6Qeg4aVWg>FY4yQT@u}X-|T@v|+LNHPUBIkY`Vj*ODNwH9=lS zg1qhod1-lxl}mAgJbN6TJf3IhnF@yT3-R&DvyBbUyPGB ziDx(95nmqHS`y^7Cdk{BAg?PPPZ~G+;_;;Ms^FN|axuzpSv;N;Zjo{!&tN<7+UsX8ta?{K&~;FjYh zUd!>(yl%Kv_>&RwlH4&W!lU-w3bzVLM(`*fT{<4^iucChwW-nicEPQJPe$k?sqb$T zZ%-Uv-Q>vqjd%rxvHC{9zY6}sOu|3r(M{MdU`E8N)$f=HkM{4{;Z`Lc@#XhA3&tkK zvl;NHKHTsZCLjNF8t};f!Eq7Z6u7UdP1?FRa2zwMxocLLnr39^8%2Z>X-2SWvJfrsK1y7Vb#Yf|~QTyw)#>Q*ZUK}N{JfrqvFO4lfqk8L_7ORia zr%sQw0~-Iz;Z`BZ=<^ZM@o4+ z`>fb_iI;Y2G|vmS3V$*pA0$W3j_|167sIVWk`X-0hdi!T8SscNx2x@OcyhbiWx%6$ z)dzoJCgGp%7=}7`3aA0gu|%Hd`cK8i#E2W9x(RD~~UG7sSR(<<|#)VW^zb z7RJ__Q9CUIPvsYi`k?V;EBu9_@ue4TEB6q*X>iN!N?9D652JQvE{{#0QM>8{PnF`O z_~mvGSZ2(V+d;bl&!`>rf|tnn;ypb!UZZxhYeg56>m=`)}~sGZ43S zjcKjNlM*l70SCvDA*wHm*cjd3ZwI@X4DouB{kJdU_4hdAwR3(O*AtZdsXS@_*nUPNy?Jnl;MTWC!CSss;=!#? zui(l0>=lXWQ!0)1-3xzVD1FMA#`^Aszc3o_ti<%SgJ+aqS)b$VXnpOxysdlKd!Du@ zS-CqgDtWbMbTzssc~g~5cxG37lqZIh(RU(G3TxrgKPjAoCx+}9C24ZOPDV^Vu;{G> zpZ3(yr8MDeNcJ?6mBzo89xw7xgJ+HG&4?-ZpL(||p_u<2@ef`ebO)f+I8he#tkebg zwI{JtbnYqI6Ips@8eKAprLO^+=xvP_8nNjPQ2Mf?RdRm@A+@GCssbx+bYoOY4$;>jBZ{3z4Xz@L@8qLlvJSI(|aT$jcn}s zPxnW^HYU=WCXtr&pKLFKjmLhpBsMxm((<3q|6u8%J6Qw3-olYv4co7v`L|LPnOD$! zJq>P^{9!0u%u6Tfc(lH=8Ssc-r{j@6uK`cY4oq9ac*T%3zxG0w6A4D}D8J(Uxh{m$bp_`em$TqiA)MAVtp+^uKL~$e zD81?hvGZE;_rqTp%5OW|Rop|QFAZ+%+6a&K8@zDaB%VIMqZ};14oEq_dfq|KvpQpW zM)_z5PoAF}<-=T^SU!T_4VI7DH7p+iNI4(+dOL`4%9mPe{2q;{w;;mlx?Pa^e3YHW z)@x?vxB!)V`>{-h4zhKGHO!==pReb#ShzQt^9z_vJKb1M;M;#pPgfj0=D!>33FNZ) zgK13mp1@?)a^v*$9{R`h_+0B$dNIDak$wn|6A>?R)oLf-@J#^<$Bshu<^jqP{!_5u zu-u7P_-Ety#hPnLy|0PyB_M2Bt-S&!~RQb+P$1;#m{q+2io!`lW-eRbJr~AN3=nc!LS@+7sk;8t|xo55r#= zx-XgQW79|eJK--3x%V3IC?ERwkhS)6VXQv#m-jcz40y+b=ZC*Aqw$Y@L+pJ`gbPXO zXmLm4rSwuc(>~=+_*3|PNZKE_HpJfl^t{~&C!V=+a9#-E#Opl@Z>xv#Iw9rzE}er^ z=Vj?D+t`FJ=it3m$QDR4ly1rgjh}r!#xplHY45GuA!U7(@7?gH>)wZ?d7A2v(?tBqQ>nk2mWw z#w&+ZHI^~&CeG_T3a{XDrmqTeFnxD$UiVRW#oL&^I>^EF?c%(?qwuP(VES4i2h;Z% z=M`T$IBzS$shoE~%JoL=GWjaj4yHrW?=`%Ta=hBS=1%t9D|tI>r#8r9@X459sU6UI zWX)ZScQ3+eAHNq;UY}5VZoitvt6tNj(DOkDq}ueSpO}Dl=DmF*9Lz|M;9dJU%fuIoN1lW27lu1g-nAq z2V?co_1oZ2yaSMQ-jI4jZ29T)u@~W#kF*;H&u=Bdi5E2BQTlq|FAUu$(ta45K57S5 z@Tc^7At@j2kmZnM$e-E)#WU(A##;nQ_m2Ri+zx0RuHGDpm-6q0yB(5@&`0BYuZ~C8 z*?tr|u2DXA!Cx54M;F|6+(YP_3HS6Lv-BNqZNfK+FwWi5r1VNWipRe*THju{<$gr@ zEB;A@NBIcCZKDWbM7$*B-=io$jjcDz$87iuL-}{WE#EJRw@2dj!Y!wdcx!Ht))#== z0e>1r;+aFSyb|yN@E2w&{xSbNHht7i^}n|#{dIT5wksNU9)!Oz^xR&(Gq!$7 zU-B;_JZfhJaC`ZMA|J%NL&u|dcfnmO@u)o~KhDOhg9xYgY`rVC{79cXuWJQQg+Cb) zFU{-r!(W)u_@})sv3XtB-4T71FX~77`PyNGQ#-TY6WibPyaNa)p7mFQ^EwbtJoCMS z^L8Sfc)bQZ{k(4bui3n=6H;!cRL){vSAIX6*KLP18aKqe?jXXc-CNsZc~su=yeAQpTx{tyueuC+%gB(oX zZqDmF3UB$7Oy71$xtwW!upjo0q8jV&^3^9?SC$`^$;VH#)#m zrF>BOuNMBoQ2v8(8?}SO5>I_4cKjoK@_Zv`z@zzw@@gbrnr{SOi%lQ3 z19`sD^LlLk8qGIsZ^YIc>67Oh#cw7y-)IF-ZdY{w5c7@w2v39C+!b4XG>_N;e_=-B zAMYO%n@6<%DN?^i^N8ID*Y5jo#f~rfdBjeHYxn)5@B#-IuM@JICs_1zy}mVXGhRES z%+t>!%Kyyf5kbho<`HS#Y#vb#DeI&A{)6zRbR2${-S=(p4SwJ6e4p3H2gdC{+%NqI zr}3~IQiUWV@~fX8WPQl=*&)jqZGfjAuR0J;^`v|h+Ya=+DuffS^(egeIZy40O`l$$ z8{wp{?I^s1oM-)baD6QZCw;q)!b|>y@obPP_+&)+>C?BJ^Y$KvH|kTSuL@Gtv>EHW zm-Bicg0_P-@IuC@Fp9HEwc;bO`e<-D}i!FiPkr}h>+3a^Xv3Wg4@&y8?x+&v2KFz1z}#g?;v9BM^4wX<%>xwFsy5g$#K5ai|aBY2ev1{ezA}A%v5@Zb%i9j8Xkg%3{1aNL6D+c=~zq z9)#04q-OgQ8i(v=f6Tg@;+M}O+XbH7o{e}t3GxbtC8n=DL0(IOytV{+Jqhv(@?!I$ z@8^pUPVK@AIoP<-!FfH9D)?lme8qaTZ1}*BMHCvB%HdWa$q>)HlD(G_`st_uxor;i zzDgH=Uq$%$Ucmf&Rxp0&L&t0U_EGFQZyuBFW4O#@GH?zLAIYTcb|ym)GkwYurpH#s zq%xOD`zM@dWzw!N|K5+dzn@*-y@Bg-GTHuj?qA6GjxkKC7A8X~lkML!o_dH$>+?){ z_c7VY%OP+li!U&bODnrRa3kY&Z)Z}ygc2YEetSFw6hc)j+nW$7y8^)39Z+`pXjyI*1P zcu!>dtj91Z>eZ3W+@TAZv>nH!axYIe zuUE&PncIFplR;juj-%Dgh)WIM0F5U)RF zEYsV~>(9pftK2W`FR<%_QvJp2mz_5=zUY_Tck%0a{e`6Z6aBKIo#m^W*I&oc>Mu^e z3`zAD;`O(W*Ix^-C(-}fdHq?>;Qcj&rK7iy$@Y9M`MBC)=IPwQC9glZ|FvJv$~QPW zy8c36aD8$5U+<-?yu3ap1HAsMe7sb6zq9lDv+;fxj8lKzy#Caen7*U+KT&_8|Jm+m z*Y)!Hv+?m$jH{ymS%1UwW##u9m5-Bg$JIFfuU)D?(f_)5{ju}rrYdXkI|llV5uHIP zelt^zcjrC$RoE1)MCjbhDFYn5Uj%o2Cia1~-$DHM&(qZZl1V<3ljaQ3IoIcqLMc36 zX|QlnYRnb?cPQewdP0hFA6z@de;$5&OQ(d=FHGp~TBVYo5!$4jKTtO!ez(V2t7;!z znx$^`_%>8~JR9iaoqkuNU-fUnYo`W3#>K_|z2A$_3CZ+JN;(hK755i)M@wJq@ApVs ztmZ_2#TPlRnU(B7SvELvTsXc8H1Gkz=vR{mcs`fgN#FBss;l=JyuWN%Ptn)J{%BfM zGUWeC|Ds(j`u$q$@3VA?jY+RpJBOY|6#DI}8sgkl1}g)JYD}g zDECUjLSbF1Nd>c*4MI@y%X*=?kZ^ z(;NFLUO8>idIjy=4fKPfj6HO3p}UUQ>tb%dAZ&ut;NvU50NJ#|JnIkbV;$9eUq6DW^}* ztL41lQFxu4*LM_NSphF+NI70gw_Gl*;HmH@L*dj8NXq5XA@QoQ>~Xr?o*He^jrWiF z{zH2|TSq%mPSEyuLkg3Qp-cw3yPdn0BaH zF3nuFb7|#zY+RbTRJrWnyiP8IT!y$*L^zK>z@?pEZ|C7QE*)HUbJ@%JK`yO4-AWqE zSBU%DxPKs%`3Ly*K^{*x=Y>SPoUaOff>*-!g@cD!xpwh-3Wa$+r851UCMF#seNsJH zlUaBN5BKu){C};Ug8%7yI?U>Y`XN1U=|R5}hTO`?*#1i6NiqC|AzoP=UaiDyiNm`? z;_ZsVljH4!Whn4}VI>VMxlCtvEKn`f}cbaJo*J5UY>MZw>rO z-&RPiy+9h3^P-82R|`qJ5Twkb^o%`;>w~0n?tmPuU4Bh;dRL4{VcT zdHVcrML6YmmjO>-epypk`Pm`md{DWF{2o9!usrwPOq#ta3bRe@|l$N+9q;+3!?S% z?>+lmPQOd7TCtp+Ik8YXouaaM0`1q(85H>XVf6m8_N^w`Wz#}qH$ap8^XB4k(R&4sHoLk^847Hb#0gvLbo*Lm% zdkMg;LXr{rC4H5%BRpy^0k~C2GJO|)Cz6aVe8F z2b1OoCe<6cyqw9<*-WJDu2|7_F>)n#?oEzn(AH!5OWQKKSu6*VGaRo0D&*xh9{D%R@yCn{oHQGVZZ&pGeC zIrCm;3U=51eZ2joXU_e8@44sxefRylPuj08?Kdy&H`B+w%vP33Y0m{|zlA)R)Uvl_@=jx{VG;J{kRfO&k@i!TXi;}c;276 z5uv|lOTg~NF+)-7Z~^)S8?R_T7yn0wBH)A7vInC?)#xOI>B;^ujY<~zIY>51Uc zx~YhG4RqX@jNnDtn~C6&y}OLP0}(v3*YT1dUrM(ax(7*ta4m1rd`GD}hG)y$*CuZ= zf)`aU(-FL=df6Alv)@%a*d}jrD!N{}5wC&#O~vqR{beF}lzvCZ9`%FW5j;BH&4qY$ zJWZ^OK7M8puYul|n}F^~gtjl8ug-^f^j+)Js%9SLbIj_%9=-pNhVDU9Pn_A(K?D0}q?UQ~O`waM!|r`f+Kdy^5osQxz(o^9VK zdp#SQ^QC%OGgG0ea)Ipc0ngeao;@E~h_QFVxj}o7ADz%WND5>}j~~`vUkuOM+Zn;5 zd~ONlOY_>kHhG=rHTy^D%ZS%N=dV){JQ|1I`2mmSzYKH_l7g0(cngM?OgHmrT<%4@ zhDDSPx~_%P9+fx!vVcea7NC2O6qHBy>~UchyeND2xZrJSwnxW>8sat3abYfkM}A+| z8}O)J=AnC#6x2T|$HeA<=jJ8o9+42jynTkZ0NwUevS)eS7ew=HzLVg2lqrJdOXJ}- z#A~4A!a{_-C|+hubG}i$xi)#J3!Cjxd9O#j2I^H2JsrmkDW0* zYi~~s&)Pc>!J~Xmcx8|;&6C~GJxB`bUlea=1dr0sh3wIBA#rK5JsO9Th}S^#-)syo zooVFNp?i{0{iAVdj|<6c^gM2l3w7|q_7-2r*G*==Dd+dke%2)AQ~yua=TBlibF<*z zV>$IHmi3>ooP8nl=1*mrRNg79cZj{o=deC0{M4Vb?mg-lm+y?qFRo0$7?Y0opZXMD;I{VriZ;5~AcAh-Ia`w|K6F+A;FXLzCH0e*$Ps%S~Jt_Sw zeIn~q!taprX~)}w^zW%hF@HhETjB|#%XrHiC-!8#%>Ih~sq1)q4C8ejZ%-0k$J_C& zr*7qR9S2$Jc+2Q`5`PkpWPZnO%v<=Kq`On}6Bzft!}^?zx6HR#ugiEVOMN6{K3kCS zHsf*nxbZeG<89_o?dHbYA6vV{jklDHH+NmRGLmg|Wx1I*F&Mu3OkbtbuT0V5IIQdY zfpo=q%w0bYo)o8dJLnmHx?0^2ls@NfjjnIgTVz`s;wYZd za=u}9!0&;5^6hd+svmtaLG5jUpZv{4e#3%nQc#@U3EhU28Z`a_SDJuFxd){P;x{9n z-kT*qsn!F3qdg1oXwL$?(X$|)Jqz?k&w_aC8JBPf{?d0{lZoZ>Wmk@;a?_Ljlq)P;n4C#Bo^B^gZPWjS$ z{oas0y3XMZ)SC7gqkOMJyavj55A>8okiAX#dpZ8dE}b_n&INo*-wEA=q@eke^!_bq zLrRy9;gv)7h&K_#3!f(wZ+8Tb;`fB?k$-z*c=s9JqI`5Y?0t=7o4j-ckNhh?E|^=% zzj6%Ee!pxghG(Bw-W$WS&nq8{;dz6N?VE(|!A}a>zEqAr!z;w_t~wa>11j(C7@qZS zZv>C>UkK$(ejIF*=M6QNBdVXKB6v~#Dig!A{i+_rn?<|^s+YMKo_&5iQHUXJ05^s+R*XyyJ!g|A^NK-GihM z?x$(P%f#@mGQ6n>9@(|^yf=oo@V&)*~8o~@VZ7@qZSZw$|V_vt_k&*r;mYjpitUNVB``nj2((=j|dKTk&RsNHP+O~>)f z_}JSfZy|qHI;8DC?zwC+O+4akT2wqej-ed%i>eZfKPQ~!-{5%)IqyA#+?_eCy z94{BwqU*)hUn+)Y+cy)#v;IxS@a(vpj^Ww%*xM#=p-o=LSaiMEe7oD^^~LaP{Y|vV zn~LGtcAJgi%_Cj|^`8T6@)nIZ*9%>bN+MnZUDxV^ZlCud-b{!``o0JrjSu^Mt;O4# z^QHUZXCqz%>E#F><#UVS9e^I?U)MyVy$p0uGN5{*>uZ$HwBhZG;88uCv^}s#@3my0 zdyo{=o;!Z*;O~wd08ajPUVdm^4Y;e%7QCZh&Ab$(N0}mMzH~l*V}-w8S_i%e`W$38 zkr0$e?*r;8Re0zcS>Z?A-&L>Sgg{vpxDAKoRj|{|-pnC%xnKhqiaj8`xeCqz66)^)FnGy71;8 zqx#jUZ{&P8Ly{kLNLznldmTG?-+(lvwMX?bg?RE~4U0eYoP1ybI>yq5iW=N*Zmf@HvyS4JZcaB zJ3hc^9CZ9ubGuRfsl6I-@?!?lgQTGOlD)EiU-c^4S0A#|u>xM$-u1w#9p@oE!=rXe z{x!F629o;U6lB5hsDE_5m3ccL={d_;$dutxf17$6^Y%f~b4FhM(EWK2aPsdUqz6es z%S-V+f5Y|)kmSb%u7QOuMTO)N4Q>&{@Yr@^;1ZXj3I>WU5|LuZ-bRG9FSzM z4(Ssh*O5*USssD+4EcGZDP7y^g<^`32JEOZ{>e;;CG>K+=4Wc*mi6Mc{7U zh~OC>Hl!(`C$H?+-}}KHs?#_)$z6iIF)x6()I&aUsF=gkmO$-vImla zwj0GC^RCAEAOqbVXQFuX5j^Ubm%N+vy%CbWU%CKUfTW=LZpQC>-ow1t+)zur9r`R} z9}y6gN8jz<@d4r8SWBD@eHL;rkr0%34u0SDA?BU>ky_$S(94jW#vawv9Uo`j#!v9L ztwYWso`Tv7_m|gvQs!MqThCPgyFSJC?t-NGpyQV2b_?5^22SmBAc9Bp%c-AcdpSt= z96Y3lcnVSeb$*8J6(Bvw3V1aBrx8!-_CZoRdY^6Ph5g$Joc!Ax!6Sc;nPq!5NSY^S zAU#M5QT|PQj_vJ%^c*YTk$;PBWqaL_bUd1bwDlbJ?;vpUulw`S_I4tk{MZBOo)^8X zxj%>P?F8=13+W*p1uX})@8U18y*@}<*G)kl%D)caq5NC)W%jQJ(gUA@+H0s6;FRy)2wphflfJ_F zW*`rh@5CLP?;c2xGDV2W_n`2)|D~B1?#~mzsXxy~@WSQj{3_>Lfb=L+1kE>WZyGq+ zTZrI=?e+aD+uIH4kue0dNAuskh$p>ku9i3svJB}#QczylUh->fuMFuqR=^9}y9GGe zOWfJa3)`CoPW?IY^=4k!-bUbLuO7h*+e_cY_Ue!x*+tNDgzen}oa}kuXy%3O%>yU@ zyt|uu;r7S?r}mhN;8DIOe3R?B2ub~M1~LUnLH(og+qaK-yCFNE&qLaNO7`mi#=Ln* zvgiGKvpwSNMLgMG{2#T%v5*S+Pe=1c3$iSIFQA0*lL?rp9=s{gwXPxd!{pVtv}$eqwB zXujcoRoKt{Y8ujWtbj-UJb-v-?*}}O*CG21FKn;-0Na~@jIwtJ;>q3#Kjh;~2GXvZ zsNEJ2PrOAx;`y`((%PeS()EZZ-X;H4OPm5Z1!?`G@v!(O%*#MhJ5E8`d{0FDj-N7b z*Uxx8J_oszGC&}q&r9if*~HIfodf9+2|;<(zDNIp?VSWkeqS-zK`p<57Gmlg4%QQ0pdyD2TASd{i=C<&~a)v;)yp4>CR{FZyx8wt0SIx zdmtU}*UkMj?B67CN;eB>=MC2$2iaZ*lIFiD$R0=vT8^;2%x}27Q;?ox1-wPj??pVN zJL$irHjw9E{+RKRw3;`BJ|xL+^v6p!TSqk9k7C zqj@t8Jq1ZYdDNZNfyYZ~WE5r6NK1K!J^ zPd;U=slQM^>N-B)dC=#f+wxMoEnXb($iF0XJ1&V=4)LfycSi6i{T(45)#n0q50Zk` zAMsL85Ar2m2D%4HL3vcKw}g0foi+80vBV@K1?7=H-G3I?qxQ)_x8qj&_(m+UQi zcEF=?o`&v0Qcxb%!@VKisnBP=v8MF_jhobofjugJ8M+5aLG4lb!u^!Wu@J$dc1k@r zut(!#5_%6L1-0jnD<=g!8uw-BmPh4X{Jeli=WiM4-H;T*_U1!8>KDnAo6Ae(xCikX zTsfc@Btq>GZ|)-%rMY<{_55agRDTa3UIVp9va{L0`w@Q|;x$x|(PXl@|55(el)%zakNr}*M5U=Ae0v_qz&@GS3Ywv?ifaf8eg4(0O$K3UjIY>J`!sXbphW(p`^pKu{mY4j~b;)sS*}pX8q3qoPoXUF;(u1U+_GmuQ z`(PW_jk)_^b;v{6yJ|h#+Y9NDF$A?2E=NZX^U{z}{YvkH-3XlgSb((k7q(a4!0Uq< zNNbPkMel%9@YmN4_-|q!Z{w_NA(DmF0oOrui@a`3!cV4qSN^kFj)xpakofb@&l&<^y=JHZ|=ymyBz-b)JLE3f;w{KUP?Uf-t@F{4%WKZvd-3FZOC0^D%?}qK= zfKxk8L3+eTP3y&T;MD(;o0^X^)IV-RJf%CXcP#N#$TVaMl7iZ!`9SZ3B{z?` z>m_B#L-prH7qEXlkRBOBPJ}fS;M3D(EDIJ`=os#Ck&6SkF2?f>+jTy$J~9eGUT-3k-f#2FfR#7 z?OTTQ3@_ZibHJ&dI$qJt3)@QrCwuh>UfA9OaI%+tWwSl%=QYGrykNw_J2Gr<4wB9bIO@%d#( zj{QqR_JB`8{iE{Tfp`t>x_rL*xDdsgir`WI)%##4434?`U>V4QWT5$OhOYO)HV%!s z`(Sm*L){14TpV-v!RnBEjlFZA>wU26N5|ZKuzAQs-3L3n%Hwtta?aQb_m|>0&sWos zww|f}cWmSKy$zDq*@=nfb_?6v4V>C%Uj&clmlL+Lz0HtxAEyrKK~m8A3)@?KIos=l z^c*YT(fqd?@sw^aB(-D5tDAXYdlSIPzdaE=^5+4>lfB$)c%Gbs^q^Cqczb=V@LIMv z4e1dHL3!lgLBx~Z`MNQ8U#JXe>pAS-0pR3c=U+zKn?O9-n}#HR7a+SKDQLc7dlQpV zUP#Ze0v@&RqSv#%9!NSrszV;izwS4%y$MKbFI?Wez-hd7yz$WXb^@n)X)mO;NB!-j z9qiwAkaT@w9`aEB9efk}*L_8^y@q-LPWkSM;Dz%&?n=%#4SA@13p+XAX-Hd+aJ~nG z*ZJmVUbsIOfKz{-iQt9pEq)8<+Xrd$4cprdob1g<@WS?b{)+AGgtYc({<{nDM?s!+ z)tI|Zn1Qssus!du*TGWk z((=Oo-2t5Z>-d{yUfA9oa2mfIZ*S&>+anE}+M^!9qkQ!~*fD?0^KKe4g?I`_;g9Aa z8ozoU>>%(C=&4=J{gmwKeXs@K)W4HgH`^ng-Ur(UobE$-*EI9!IIZ`==7H0^?p@ow zt_$;a04INEA$uSxXgP?d_qR^k&Gs^oosJdFyG3{hBY5Pu-UrM59gp8BNV~41`nu!q zxj%1w$C$ehR)@@(e5pP4KG^lw$vPI&`bXu)U+NA9MG?Qjpd^8V`Hk%e=%5-2YOL_V{)pcqhG& zd0o@89)~>CeXzy<#Qya`dPq+}{iAx&`(W1tck^TfkK*+{*d-qrbN9ifAgzDldhWZC z>v=b%hx8OQUz!hojCj&d_#huIGmvQ_At;aPRqun%1E+rGeW-by6Ho7h%>Z}jJ&?Aa zhW#slnCoQ*(jMQayo+YozceJxe|5+nNDAs-*k1Z0T;4jQ=U4%65%jwdPw9^PsPt1v z%cJ(t`(Q_ZOs<1K+I)$p_ra!tlfMg)wmqny>h-3~O>$lVX?c{scTL1drC4i#{KmH+Df! z+}7M*=zQ1S2b=psbAO?JWbcF3_coW8{IU0~X1>&14&vGSR*5e+^XT|?3F0--{hE2` zlM)CJgN@887nM(2CXj{K`m zLiZ3)LG4jK6NWb(!K3=q>&o{5C;Q1CH`}B6S?|wG0;l$#g|ziY{Yvl8bp3?alVwOd zPf~ilKXbxQ`M8>awD!XO9rrW#FAeD-Jq0aq_;`6eaI!xSc_@1u7ueoTNRNyms6Cor z^#05}z-gR%KR>j+6Mn(=`XD{>pS?db z8^g2rXF7h}Jimm?+XtNd-3{qMQV5sB-cLy!Y(75<+baMkd()69GKQe`sQ&c&?$N*D zewBi>^-T5RU%vz?1*Y^*0OI<5&SN>|fV!*}pQR%{R>3BfNu< zp0P*gZ~A=p<_GxvvJQDDd(*$;d=Ee#%HEpav%N`3Yme$r&%37|0H^iFEaXmOFMM8mM`T)Jai7y z+M{u(&tvvHcHCVDsY6XpE=TgX@uu?`S|`mSUW11p>8Fl2 zJuej=zlGz+6Rw^hiBCc6nd-rwS9CmWJdq+2g7TuChnoSo06Cv2@&BCrm+FdsHv}dI-2%4?(7kf7I^!yh`^n z9_N#gmPhlIza9ea)yWly8rDNEk@XPdgt6BFUGEzdQ?ed{%orZEhrb?LDeIwC zE!IQ8-FgUer?Jfoh}y{PM=$qSmx8?_!v zT-e@vX!@dN|7bmAuOrQa*Ju2rdOYyouaa1PUVcx$*&fx)JmNJ_J1)fV^m@)ogM1uJ zL)!KY*Yhsmq|ZVoB?E0=lBuB}U*h#Z_Y5y=?<(M=?}4=T!n_B7Q@`yj9NNF#z$x7< zWY}K$V)+j6i=I14eok%U?>lr~#PRhrIo_*se2?&FfBkI7PhR~TCl`Lodg2b|mp^%; zi|=^#$xfDMSg((>UVn?=qtA1A{R+X0tS8?o`VQ9T3X*O_~CFk@As@PJVJO~%$vJR(%;Q~E*vA}e>(HLVV0TQ%<~GO zU(5RJTH$?9>}S}{?1$Lj`dhgDGXE|58>D?^S)cuPPCx$v);q3YyYtUrePIjpy)o8j zj%IxF5v-RVEq-0bc2YlLKjycxz98jK93}j^vguw!}?5C$~za3}xtuQjT^`5DIUcVw=d-LohU=;0L(HFj5$BhFqxgR->&eG3 zKKT^ZQ}b+h^5?=oo$Yvcvp#b+>*bX)UnE(dI>31OM=a-#7e6N0zx3BxmStQYsIWfw za-Nqu#O{L3SG#3inmmi`r)tcfR{n3<{*=sD$ra|e3bQ>ZKD5` z=vA)Y`jx_$`D*svtk21OmAH)4&6QYsS8}@K+nJY^a;coVit9D=4#su9nv?lzvWxwk zdn(uWyv$c+ov;3b>(P_>I{iJ?>rZCB&R6v-SYKGq`0OdHcf6bPPfW2apU&|~>7U8H ztb6a~bm_OSoOwORCuAN>f0y+snXe|F&OGloEE7-XdYJTB&K)J?{w=4=$oQOjfXh28 zdi_DxCm+MS$@4kg{Dk=XQ?57fSTf^BJB*#jeb6voc@J$$aI>{9l&&Y5rukmz4P_^XIHDh(3Qh>oYQ6Wlm&0JN!MC6b@aSM@K5{#e1E%KDtlR|~&neOBhHg>SN+ zd@_umayLO6UOI%D!fw|PrZ%(>-Z+ig!pxz%vT3x{?T<*W{i0=m+(B+w2u0@ zG!eTA?u~&R!-MZVL7u?c)OUV z>nC5njqA^@qcTt7_R)2e_cYdZ9W}4>(tmP&9jSFx=Bu2qcZAka9lvAyf2eg-=Fi06 zKeBaHUFN04GhM9fIx6`E z?&tnGY6*`ET}PD{%RD0MsQLpkFWtrCb>=FTx{fN(Fh8+|^V4uK&3; zoKMG6*5lSu3-4wB=Kh^!S=Ji~Igi^X^N+5VCdZjqe}$~C?0V^!QqDQfH!;WcJ#z)m zBMYBkePO%ID{mG3buur#S@<$9&3}OPw9HGHBBx8&Sf<{>>B`p#&#af~e)=LXA zFX?)zyqMcr*Gp+RZ=3x#x5JTIFV*joaejo>OS8Xc`+unQQt|}0H}yxhUP{RNDD@<6 zFI_K{WnN1Bn)~A)>w0PCQt9{q#Qxj$(%i?m-V+7JJC?Jq>!r+Bxu4JKdg&}47rI`m zKTB{~FU>rb$7%9zksn~G>!qoWFyHIp{AOgmH2D?L4|lz^lIwqR9p{sf>nd^UrKwwF zp7|C_T`wIY^U|m9`>&IJao>BM_fK~fcHP$X@B8;2zj^-$PR{TD{!s4r1j4|MRX?yzOzwngxwO{W3*wUf& z&`G^lf9#^~ZMxz0-@D_64_>|h_S!YS%YX08Z(ni!@%yj&@;F<5^{xl*{nGXMr{29O zclC4MescbU$6tK&XYO8g#g1!s9lvGEj@87XFTDNou8$7o@BZ5Dcm3e%b!)~`-+lL% z-we&)diG6c-G1veomXFSZ^yAWUHR^7w{KZ;|7-3~y?x8IXDq+-6Yp97{_$^L@uBf| z_NQ)Lc<)vBf8*w_t?M1S;CS!YRo7lU{-MFO$3N}b^1Fw>__HgX_v<^aO?~$#>y}(| z(emG4bMH5Qb^ljSe%bhE*7ctJ{gW3eCm;XqYu@mKxusut{=oVTgKr(Y^5m&o?|uHh z{m;9-{ELnEzka;y*JIZ_<$asKSnsb~_|*MBzTv4iFWLXSE7#uM`-#`lC1V$!TRZm5 zU)}JX{ax=n&*f*_{L81k zas8|AzV@1{m%sBD~ zz0p$58!U~D<`M(>V$mB8$8frEe19=Jy4ANwU#_HYdFEWqrMRn5#1~LU6EAdntpH;# zajulFjy}KU4U|S}+2K(yiySK>W5ulFo1tZBqp0H%SIhJbSHfyw5?aAGUr&b| z#6S8f_SYn=f63M%(Ib8?F^fV>NG>+9~`!+fA^h-@qM2t|feRmb~djUes5qZuzUD zIalJWDFd7S#M`o!Q8eWWuUZ<(d*y7UR`s^!k#BYD zaJlTdsxvv79m(gsN_KRp(WP3pznG60Xw^aHDqpUEhBERT0C1?PDxbH!ozz^9^~qHuU;SB^}??R2TC!3wA8zbh@$qVIY|S3KbQR1Kz)G);a%D?#M+duY+@~W;M+&T1{yWe&4Ez6U? zc%Twm@yWd&x#Tz;atN}Z!C6RQ*FCpK%f zpdYi|BQY!SMdX@Z?;RA}aoc@Mk61>l^Y5(uXZmdh+8u_(6g7jqs=k$hweU#5*6BIWTWi z46n~;u7(dA(2FR~_3-^%yUO0QW3Hi9#e~LLb^Cyy=9!V z#@@yH7UZ%CmZ_E4Zkn=mf%wgMufpK>;*ac*)Lx7C4d5TuGPTD>;A@e?I(TgBpW|0Y zAe_Zo+?`Lmx@hdlWGmdW!+N;JDL&jjfgWZhoNwXwpqk!@)+Yb@Pzovog?0FKzN_`d zz7~$RW#n|!QdB22PB+6V8lOQuu5&h<@fRWm^#tv^+{6XQf#;<@mzHL!b6u-*mVw^bUg7v~`vmbD;eT^~ zA^ZaPsx{YxvZdWj)I4{Q2Qm!l|Zt_T}`f z2ljel^}LXMo(ElaKzdCb2Jz=7E`;T^iF1(p0^~!1dfj^HJl-4YlJM|)-EzbA8;6C{ z)0pjphg?%+J>gn39M{OF94x;v?p%0Ia{`ST>N8r;L3}T4tOvq@SY%Uq=OOKSnIEHC zI<97d_;4*GLN(b7pMser;8T2%hFgM;o}1i!xDo!*(Kd~=7a)$tzy_4@Jn=v6m^7Qx zsHM4t%1*Nx_n2s$@{7XxczaIBLSy;>R|||&E%K;l-{{D~A?=PsZ%D93pwL%(T8eW`07?Ntf128{~xj^|<3d2}UQ-`s>e^$5<#ZY~>@ zpJtX-t~RM3lOH6s|DDTsykwaR zUw_G<3;SQ<;GPpxOxq-~FQxk+E#Nsa4M)+B;ppetEN^iPuN(0ij>eCk7~WMO-lM>q zf}WIwg6k=`#)1>z>hR?_3&zEu%0OXwJfBEhJY4q9&5x8S+r5>=VrjsgU3u%W!^N=* zVCOg4-37bk&mEAYAB6NEDX8C6ubENiO+gZGFQf-aA)Po_%Y(p%?9rlT22TmD<7tn)$g1+-dtty{NWsL zBI-!qT`d6<2Bd*PtX&-1e^_YtZPL&P4m_9|~7HT{kq=&x<4{#k&R9<7ZU> z#Zv~aDd2nD_(Nem{`Hvr$AqA`ZT}M+%{6IiU*$t>A5FhY{8PQqlw)Ir@)~0UO>vbs zn)Ui+LREam;Ch2y@tX`@46=&+rRgF;L@KWJKY7`g5)VH3;9qL|y^^1fr&o$0#Sa+# zQiK24;2FW=gxYO|EAPfzxj(D^3rVQ@jKP0t@Hx}o69&J@q`y4QF_SKirhc`;^>}H= zLuXvV!^~gX`=GRsu1B|t9mN+-bN$jaEehAN@XvQT1lRL{-3DK5@aqij39jc`?=*PQ zz|ViZu>*K*DtgjeYZ7^ zx1Wf8#V-+D>+h#=1vBa5XlhsGEi&J0`z^#JH1@T9XT(1}fBt!!={5g^^bb9MeyI#R z#TOg=9D^qXf1>2OQ3q~}A8J?IHzn!ycyq3#S3GU-^9-I5T+4sH!OI3u8+=l5y*~Cb zgVzndN${BB`SVIET-$F!+E3g6pd?g0E!Q{nc>lXN!xFFcJNcFC;mflY9{fuNG``jP ztkwE!M(RWD+4Wo8`b_zIB)yKO%~GF=&l>!KKTv(E{rcy5yla2E(BwZQ_>-hQ`wTuK zxb~Ne3_dHkUaz{?;B$iOeD-pK?-Tr3$^R0AFBto;FnB`xllu2cgCAq&vr7e+?3#qu zTN5A=?czF~3zENH&)y*UD?VZT?=|>N!L|Li7<{+j+J2coQ2F$F$t_}E%?`;A#b*WA z_PxU3dj;3>zt!OTO!{jKJ}FYa1ng6ty$U#z@-X{hMEet7qoaC?b`F*nf+%4z1df!mz-Fb=E@ld~x z*Q=efPSAdq5xpQ%vS|`?a^U#i%3tsQYX0{8`NSrV8zZzH8)E}aakW1${Xx&4CxoE* zg2As-1A)ngUoBw2zo`8^(jGcKe=OD%x9h#1HRRT;9B%$c{C=vO|7-pJ%9Jneeyf&$ z!dyRiM2iBpfSc;SZ0_%$Ee16INrV4IiwqQ2nY#ZKlk{8HYoC+yE8gn-a);bs*Z#3W z6E-)!i)jJ-7E@!r)T|-=mJi$iww-(I>fmbbkA1lmBsotN)*j$ycKf zH~;Hz;r!M9XHEVyg6sNs*5J38^q)8QZ3h2>;Blf||8>1`ojHHQBaJR7e!bv2f1VYW zvBbBVf1DXjuj{O7IX>(7YxnuAR`xZYBQ-xZJSW!;8rm;>BRRTU{KhYB>grrERORXFx4oDbf4vP4R2;1H)Ck2`hll-!NJp ztDQeq!~X>N@o8*7kjH!W`CNlVAKx%q%U4F>9-eW|4#67^KE9?jFs7RX06J~ynM==H zmh4)(Z0T9clgS{TbH|Fc;hazQ({IjKMutbTu@>g z@#mNGL7E2KA4(J(vX>qk9VlR=Wh-<_7~~`Io3mwCW^!+!Yjl`*5z(2IS7mPvE`$aK71r zt>|{+!=+%nh4Ho6mm{pN$`1{X((VJuJRH9%UmL4P&j`ndhe|lU*X{VxT&{CV1&3^hjUVsq_2GyMiiTK z_RcHS{3yI7GMcY!&h}%bsg!DH$Ki4hxFokgmIeo1$|`JB^30QXF;YBzX)?L| z^bzb~f^=$+@}|(*4m=+o$ZMOhv4;H~+O%W*aRoxTa_muSKcdpF;Vn<#0d3-uo4_Ah zFNX@kAWxLhX3jbMw{!_+Sp?FtmyDaN28JsGMYJ#GokS5+6uNW*TO_z7)q%=T|LUS& zT~$#F)uM~7Zm+VW2FM4*a-~`$4e2qVt@7KiA7f^y5_I5x^ow=FbY$Z|{d^op*0M~N zLluTGnhl`!xnN8R%k05Y87*b#BYeG@2~?@ zztpPzLrW61i6xLrA(vuaqjldBk*Y5fy-Va7B9|vniEdA#!BVkDemW2HgM(O^4DyUXyZAWsiE6$G`@sQu zteUU5rOO~UaIv=35wTOqKz^0(R)l$bv^I>1>cYY>AEPmAWr;{~B#TXL;7Rs!e&?+} zKkODj{ll2;5Rd(r2BbOYw_8W7ERK|Ln1Ie3B9YuOTq@>K@cs&ROk#Hv{bQBl_6tiT zx9C9JKsJ}Jh5T~muH;b+PB2g?VOO1CA(0)cl`be_(-YvBqy71t=4(0@=PPWC^y+X? z-AoKrhDWNH69%?toh!Mm%*$~_530RI+Iv;o9%FFhtsQtuDH3ao7~1cMQ5)!OI4=4YAv5FVtT_&+>3V- zSE5qg$`A*j20gd6H=mW`+tTc=Yu418+ z+p4XEV=BDM<@4nH>9qq41>d!e1B!w?-ytbG>+fB zsNd$RHNTp0EFUOThq1#G4rA5+Ql%snF;pm3Ym#gTEh5ng`pvE5#H1l5m{ynI*ZltGdyP21-_dXCcSUv^ zva!EF_xl0c3%3&4Z)|tywS2zlw_~y9XNzNNu)d_nYy7@Jv(y_Uw zIxWblV~?T@$TtcjGHP&0$L~ssYKiI`eQsrF%1KPfxI?`274m$405Ly3Rw>hA-UZ-( zMU)3>{&_yd`vU?@U`uGRK=HI^*N_wv@k=E>7#Pf7O2)wF0m5B|>@0Kq;oK-4sI)>6 z-^KB`T7d1ysFe|S2E|br!PaZrHb& z&eaa|ZslQEY^0eUac5B+nu$)G>HM0Om8@e~)sNqF4({S)hAP&2gaw|9lliH(#W72v ziXSbl#LPQ5tjDoYoMC88ZfjttTBg`_KChfD=KY?I%$LZT4fBr6!{IWH3F8$Vm9^rG z5*}_C#JhwPA8wdjwps|hK;37{+3i`>Uztjbe3xO>>|4jY20nYhIQDNFD5S^Ssvb){ zcYy)t)NXB-8(lL@2kf%Ui(_TcvD+J`rt!8$SYofV4YP;#4#F>xRIn53z`3nKx(dy| zTLT_hf-Bosg^r)wasi+5?b%>dWBr(GOkd6Ba>aaLfy%8Gs-Ytg#fMW?v!l6i#+WsS zR!hB5zSV}=2l~kBLLRd};<2AtunsN`Njw&5qc~_*armI4A&$-CG`kit5S=c^m|O`H zA0n#Z!Atp#;LLe2U#ksM?$8^KYGfzCtJtBDSv(F_g^o+r@ZblD%GH23%#z55=Djr| zw6saouymjkGf@+C$ku$|w~MBIAZwVNa31Im`n3|yG;xfnmJ8UO4>tUxFWM^aE^{Tu zWu276fr!S}wgNU26vNomadZgww#hyN@4?`Z>T>c(8WKsKwlX zy%u>HJ&3&#E-&%^0>%7Lc3}JYIQ^p2?oxRpt~-)J8_&5k$GdBkmaj%^{JILRShA%C z`)b7USCw#CXT(`+;B&k)6cHb?rv9e$m1>#R`Qza-k^xTNh{wf;4L7BeGB?FbnVaIp zSW|qc%#nUb*<;fAF5)U-p)^#`dKQ~e<|&7*6=b}3#nggs763=V#J zS8|uV1ALxP8+n02T(@w}_&BaJuEajCOQbysr_7pgscA{?JJiHOJ(5EKkExcoRPt+z zmwcMy#jcHC7Gq~wjGblDpRAp(7&~2Jr+;i6#xl=7{M)pL)MJ;}FPRx8&^cY8a|WV| z7g%3$ddc0_*}Bg%@h~mvm?x=ETe4KHvS2L{%nbf8S+exZaJ;h~;`u(1=b`wO{Ux__ zbOj2jnN2q7E?Y+U+xI}%$f4St1q)>;FvCtoQI4;WLS z{1`VTnsB-wfh&N(fh;-EyR({MsZ)qsl;%|EN)e)PRSFZD_wQ0hWJtkwgt+LM)=#c^sKJ4mY=!wEIEU7ya@lp z=_$i7&(}l#E3OXlHDc7~n*Ox!6zur%7vj8=?uQ5%igzbt8qei~5iwjD9>Q9(BFE!( zSe^1MW}hea__#;-QmU>*KD%Ufp{iE&cuu&xt*f~2YLLDwNMEz*&!hW4Me@Meuc_B+ zpKJ#P=1~AB#N8z&}*SY5N3b+%8Cj?5E?}mp)FT_sq=VmLoi;25?9CEmFhZD5X z+WEQMT3q^TieESE&OS=HTo1kw;9nSozOGc_a~n#7)1A>Uf%Gr|*Ga3j5W(p}z}{+` z^0=*t)vKGw>Ex2ygRb4+l+a~5D4A8u%iOh5YCBrR;KuIAxwrGPP`F_+g9uuLf?fxAOckf~4XpXOpVXa=txk9?nY-pbtD?XFIBH7tp10Roq-tzfSW{T)Pve z;Yu4_Y@_Eq=x~KoRqCg>M~I73u2r zx|>V%><*1Jy7pb}r8NGjk&Lf_iBT6{M(ffAO}g4e1*u_|Ly`lvN@6LlP}0Rq+|TZ# zI0^;K64aRV8}S#Bq>#&(af3aCtsEU%iGGIG(lb%VL!Zsp&|RxFz9-~lFI5Ec1b;xT z=lYMwELnaQd4~It#qFC*{+dsUi5SswM}1)H1*1W` z(fQ!|JYO52gmle7b-FH1ai|KqpPb)-y%=$-s8b9qPDb7d@L( zEMi5B2B1j}ou-_>yyUL+5Es|HH&jbid~qaS-5kPj*{GHs3hwt5@)J%ipq|6=r2$rR z`2iQ5!zz(~q5bjrKo{~LN&Su_Js&}m=5dnUBI#l`=}T~QbrM99OJQIbH`eL*GGOjH z4Rl+Ta!%jw5ZYU^(RhWrj9!T0@Y zh{Z7s^$_-V45K+zY`6Z#w|FYbp?X-2=Q+Z04gMIApZ5&cEU_{FxaUbX`mM`)P?@X; zZBX4-Dpd>Y#lTp<>sR=e4(1E=7g~|6Divu`!137KOu@PfYqelpS4S}6Zg-DNxcrB) z+3XM%0(YrsLEfNa{NZ_l96j$!Pa9DJKKjCbwm7IyfzZ8dU2xF#>R#6eQ8pahXnMrv zwXR>S!h>{MX%UFv+C3CO^+~ELP#Bj8+UFH%{heNEe_ncad#X}#&)(mMePJI1-K#Y3 zHyh^d08YG_7QExC%u7MK0~ONHv&WS0(U5x(uYuk%*$3T|2<1`y(Y1g_={)F`NBsM~ zP{#ipC|zHhyq#_G_O!`6&?ay3SbOE@X_Gh6CU3e;-o6;#UVo=x-pjXRd^|zNBnsMY zQSFfe&vUFp^U7`VrrPAqwaH6tYtO%Ao4ib$yn36w**19#ZSuT{_R5=XlQ-EWZ>CM& ze4D(E?d_E#)h4gpCU2@u-dvl!#O3XkBiSY|(@6ZSpd0^6G8!X4~W~w8`^c*Is$kZSp4D z>w}GN3D#>ApPUTJLFt~i zVR;uloKsoBr{41Td1CGQOZ{gj$!vB-_$fBh8=qv$uE2?W=)tz^itv+c`2N@WOE=4?yf4qvyV zOIrS=qgQ8fg<<;$-qgU?CP&Jp>M-6Q!c!Q;BLz;p&J>A3Sjn|L8Godb=g41joUR&CrwYRG%T0>aVHp$fN9v#wVjy=O?3` zKWp8i(B0@{t*%$;jxR|HSP2yYWk=Uf0so@i;% zsXSzF)fg@U;n7Y!z|Y^xHHXmNS9=d`ETA{&dYP& zlrFey$myuixQyzOy7IWYhir-T;4Y%8@1R_uxc-Dsn^H&0uF$t#g7{_B!I-xNm&r;M zi9otu_o&nA5>8I5NZa`41@wj&F|sT44GgviT;9a+bzD~o-pJs7%g-1Q1NG=yVRZrb zesL~K1eyqktt4fy5knY|az!d@)lU<>AD<}=$vB<9QFUKNI?^F=3SKH~gUU6r` z(vDgkgom!!5}&WY!iHQa_0!R~pqs!AJ$%nAMkZ;#%iMgjlf<6JU;33CpB#I#i=X^5 z%NgONKEeEC-|-Hg+r)CJmu2$O#`Fo{CqB>V)XvOi=BGs_B)!_{$TZqHTt5~}`iJVr zT=vj@WTbp^3y+VikD30)^sW4u)%Gy;Q6FfubGY?U&NZg@#Bc8~+a;ZEv~#$ABnKPQ zC$&EvrXL+cjdl*#kKGS5{Y0TL|A$(iiQzwtoq1#DaO-3CvPM51YP(ErZM1W^eoPh{ z)3+Kgaq~xJq|wgd`jHxKOy42>wBs=QsaI;WbGUv?oAeL0K9c2!=SRn@8q+`2{;^=} z9BzF~RQ@o2(D5!R&@qvM?!Pg4e8$b|kLT#b6LcdC(XG(*Dv#9u7HWS={L}qBrv*@a zM(|_A(f2E09T&X?oKRflkt$z|dw%}fKL5Xd59HyNFSGsk57Kv|Qh)!!2WRt}67+ZA zk=Nx~)obckOOKkp>=Azd-}fZ$|3^#0_e#U7e-C#*;Um?5j&%S0ll|zPr1hfmPwm@S zPg*Z3|5QJJs-JKTXuk-@g?}rq^8b4OSuFcY(!FvDPi5gB=T9*B@doz{{xpN1WbnlX z?-ZP#C7|$h7JmLogFnOI-3I?NgQpCBg28(X{!D|X4gM^H_X$qdswq61h3|hx@I?~u ziHsB4uXO)KdwhRRTtbQ0^eXN5J^rtJuSv^aK91KvTEADx`d{%0ga37#=Ld1ssP*=6 zarLk3$&Kr`SBqiAr;PuvG5ECLy8hD_F*W^+;5vR^XVTyHLEfKH)64ey{`WR+GWk!M z^s|C%|9!o|(;Zws#ou7?JB)vCH29q0^lTA@9V~qR_8I(52A?%iukNtN&LUJZ=2DM({Y%?)cX6 zb)(qV`oGxZzsKaCHTYhG=M4UE=l8hp&1pI3C4ap>;a=u|4~j1s|MYIG;t6y8;#J~* zoX~Vye;txu>rZZ@`Qv-B!RcNv1x@dn{PnJ~;z_}^d{ZuUkp4*3uVm9CwERtgL@2JZ z)%Q(WeZR!+-;77`T~PaR-!~CjlhAZcfJC&5Yx``J_R;y_)nY*LKEZWtUTEKq4 zR{IH=zcv4Vm2xP)NO0|+a|Z7aT(94K+2EeR?=W~$aP6P}V(^sUI{$vv;H{3Y8A-3# zNAEQ0%Lc#8;FE$sR^snAcwKO9pM3`3Ex69l|7P$h!L|PX!{E~<|Nk`j9+Urf3_fe{ z?;3os$^Ux>pA%f`?~$f|o@BoFb+p0fP5zHE_yNK7`2J{vF9@#n{}_X}T7M*DeW~e> zG3h%5*Z%b+gL{H&|LidMse}iqus^@VByStne0ItFr}g`lIKvXJ>EdXAC|vE#$@ORLzh95b z_%Qub`*#`p-}nRBk29nB>imC)^dCKKT&jc^0}89u@8hWc&6so=tvuDOR9xke>K|%9 zuKpFDH}@azu?`zu)0t>rRb1r(WB*$|Gx~?0PCDd*q}Suqwwy`ur1(yQ zf5guz`iJJP(q51IJ4vRvy`J{>2Dj_ccSL9F$EsaF!u(KN<&nOhQa_g0i#i`Hl8iO~ z-Gb|U`&ffN)bClFV*9G*tMW*fzt#7^c1!=#`nlEjH2R179gPOpnUr^<)UWpM#|fbL z9>Mi^@OTAcGH3z&>v82xN%^#WZ;P?3(V9+mD-~CHr23cIzeDOr*Q>u3hZLVP_yY#N z%ivFtgqnVz!JlaGxb=pnpO^G{z2tzcFr#Za6YZ;tt31-<(dOghk?y}o+I~&?j~<_XBL&xbm@xQ%$5o6;7e`aODv#9qUG2A8 zKOgDqW&hjb?|-X(vm>?v@cd^8%gX3wvyyPv4TCOMo4a^dz`fY9>w$9 zhj>4W_6l4zyivBPW_@*j7;iuh5zpc4u&JNE=SO_nI7))U@fMfW*A4R>H;3c%b8d4! zwYMo>cFscYm#ndKo!jcFzc}V{g1^}8bJX9!4!TQ~8!O>UVR`J6#(S)jJRh5y=_ktY zHtY84Krw;0>YPjXP#5-BE99tBXuEoR`_R{kKyQHx?D*LK&Htbb_TF1!ruepgW}Y^j62;jt-R0TTLBP9|~6WNaC6!RZot zhREe2&lK4$@+^^VFD=RonYlcXiIXtsBn&zUgHFPrlQ8Hc3_1yeBx!#(YBwrBwf83K zzt}b&*`c3e12b$yNEOC=FH$V`TiPs_e;2WTCB8|8E>_)+@0LJrg`|MDA8B_(ysOJw z*Y%essL$sab#}0Y__S7V`3DqTGHU8Z%>g^ zwEg7rGtO8>?UO@yrZ{ZARx9AwcI>-E5mY~Ty%gUMDkla;%A{hf4xtxvp#2hQ^SD}e zxJYtoa>!FEgdo)rVN;FVkK zT{y}g^Z-;I#{OUHP<67=CcTeNV}79Eh7jah_b&F>#!8OeeQ|JKV-mk^)7smb<#PA_6x!hucs+?af%s#+ePZT_*B z;edM?ddV5x81T@sA6;!F)faCSxddNM83?_=>*f=Ec^8)H`)j&C9L*grGyI3HR2if1 zfc9_<&G)6T%7u#4e1}~zu}Lj&eCgia-wbgjls@c2d(`TV_WXUX)p#wK zQlnnr{6KyqzC6M^OVa*WMOZ@Nw1zBYM_cD7fJ?lyS^!^1u`?hH-$gVAFg_UmXkQxn}k zQxn}kQxn}kQxn}^(F8i5sfq5Nsfq5NsbRmA;3N@FL3d|tB zzOGbRN4aUAoL+oC*IgkHownK;bvu^x&Oo%^4DoOdUy&F;J+|aohpQH9pU)7`U)&jj ztB-~qZIs7n1~fkC%z*j($M0_u=I#_D)_rl9upjDdJ`)}Zlv_7Kwj zQA1okn^0WODhT8ARzlqG(D{VZ8|=6<4DcGyJVbX)H@0LQ%)bMJtOo{>&Ygz1dI_D8 zpkKJ!#9rK^Ra#uL+sHS3cHzq9K6D`40|5`8VGyoo3R-SGV^G~c^Kj=1)K2cqL(U`6 zA83Cqw>vi4$Uk$S-+bo4cEDR1n&@~BEI=AhQwnzR4advXD?iE^LjH2)OZ|h6lWf?* zr`~a9O1pWLw)u$=-z!`8SN%vzT5a6dLHC8|C_R6Y*6~S|G5Ze9oAjRWJH|P^+G(}# z&}{9{ex!82nixNN#v0SxeM8#yW6s#I_0h_YzVSvs?0y~X`Y~_pSUj?OM-AQnypn&p3H!EB_+OiGMD=Nl8^-I(55dXA){ZP^=UKf0k#NQWVSEJRw z>Q*YQ`-dDO{%imJwh$CQ&fwow1JF-aJ{Ps%*ia*rxqUo=@mFGh(zuw1E zJZZ+;4_g$l1?-n!`$vboZ=}y>eObz>xM%P?44xERk2n9*@3T!x{(3yT+xS-(T%TXr zXYeV(^?2|<{XW{9Rv1=sb} zrwsmZ>+eX-pV~f0+J0I3m#*JWkc>6|*9fll`%HuH6kOLo&oX#ja6L_Zw!!1}i_rXc zNqW^ilYY0spJVXr1lRfHM1x;1xR&p^25HN9#QXb#hKVB&5 z74LXIAAfcHzu4dj8Q)s|)dpWAxY}Q1@M8?V*5Dn2YyGV=_+r7eeb*bjQ*fPsHW}Q` zKhKG)xQBTBxK6I;X#anY&^A5>kZy&ezpF$d;EzjreyE$M{BRgzRUPG{|fFu zd{rWm__D$GnEfQ)ZSaGVUdP{848BO#C))q+FnFu_Ia0@;cIz+BzgFp6;o5(Cq<*yi zeqriovsvH$(%>1B{yu|0)cz%A5-FKqbo|~g1ylUtUXNWP_VxI2yV%$HD=oOr-@lHl zSmT%a*J?k-85zIY|Iapd_6n}+$G-@LY;EN5u&fuQG*BiW3aJ|0LWAIDl`laT-!QkDJUgwvW z8oWnv?LX%jJZ|~QJQf~0b9UozU|}VL#>|}_x$`@;aU#6U)R6K zC6stg7e`ZEWm)Q1=l8G0B|J>~ab`4M?SDJv_@(3XSY2qw7|`@8kM#N7k+$FJ{rFxby zyvpT*;tzHH)%rV9{rgY$qkD+fi^~72^&efj;5jE9U#;#>wz_}VYQM?_nLl)W`xvQM z&HqU6CmFY2WUKno_MepTuj}`U0x<>@*7C*eH>r55>tC(b*L&suzMdbAieGBq9v_|) z&?ci zuDHrp`wtwc{kt@Odwl+%dLHvg=dbqT+F$Vrv%dTXZKxQj>0)4iTq-Xv|5oWAF0S*_ zL9@Pky{vB)PssCGdVci=gD({;HLgPA^RQc`PF}kUA1$hp2yVsvCo_LNXDAKC;d~euWc~+se@V`LQ}X`v2H_8#u|XF@O9bCj=SVokmL5@ z$sNNJ8=_Xszi7wy@$FL=j`QE-#x_238J?Kkz}1;c==V@m-$DOoXrq~nNI7k86pcRm zZ)F`^CZ}@KQ&U@M|Dfq;i=DA)>U1hI+h@<77#lWv zw$DCplw@1BUqn98Z+q$Qv0>VygnqRkE+@BNC9yUfx5S%F6SZyO8PbT4`>A$TLWeK?6Lh5Rh8`LN=Z@2!H5+K}r`+%~^_nTXQgY91jeado{WUdx ziCy0{O&cRonV^M{kF#=|mg5#V(vOzu_pzMgk?1%*I}shX(xzz_P@kVU9S!?ncyfeH zoIQ(EY*XPHf@=Teq1XJa3UB?K%+fqBlX~ zmys>9U`|9U6Sb$^;KoiF<^B0sU9_JRZDB|I_zhotL17%}CY!Y3(|L@T64ixJ7#|(w zedo3hUl?uENB(2GzF^Ca@d+CH!NlbG7~8oQ)jAK9^Ge8dt^UW>G?+4|wx;eh6TlmI$z7&p^A;644u zH|*p^FT%*r2pisM)-2w0fD7+0#rOJE+P?#Z?=6f+eajqkXKH~t0m+$ z6Y|n8OBP2qA+MN_S53%kB;*AzPZmceAupehS4qgLC*-vf^1{oK#hXjWD<|aD67re} zdFfXqizAzmS4_yODjw}0L96rVc(k`?v?mN-`S89O=4vO}*M#?+7^CY|+7xegd`xir z3W)jk8JPBJJl&jyr%yL$Vcz$H&pxzgiJW=N>O<|KGY;W$q@6!_QujpPbo@f4slO?8OtbcPX7|OSH7o z9-osVW061R)FT2zkM#2bjC}C9iwpKeiWcXnjx$#Tv%XDy%VYMZ$(h|&2~zSYz9ON0 ze&|eO3h%qpIWw63Mkcr6t~jdGUZ3N9Nktnbjg6iuAn6q&!_mzp*M+C$QM;JX_yxWb zkMir-!G-K>965j6mIyL>HdQrwh|j%$-j3)g1NQ@;%_I5QQ?$n}E){s+6+TN3pN_M%87nv; z(|#|}*?Rc&_?ep8#m>~ki_W;@r`fLsWAEhkY?l2u@~F45+bi4RT~wp1h=>>Ek2&p~ zjy6PhkKJ;f7Ll*f9U_gh=$eK6l6h+G6iI*VPEqRConmB`{NSB7J9hwWd%RQ9R$Ohc zJ=wWQF3qc@_`W3A*CcqG*)OKo{wnXpFHHEk2bXWfu8E#r`_0sp9_>e_$G$fM zmnc8fzBftzhi6J@co$TC(QTv@%;M>;u!Efg5&w{7Zsip{I+Iz1Yc2jukZKg zr9Hl%b(}nCg#Du6cM<*fQg~V6eG0D$evGvLh4N27-+qYjdexB_?*)JJcU&W}GCEn&+usXKWJ4ozAqI3_<|b0FH(3-;V)MBqTuNNmneL{vOlNrYZd-d!F$E`mzqDl zexJEP#y_tAz9jym|9V~j4Sg(r{nJqG3xebN=Q|1?QucqM@Lu!hfcpLEuT}fCo)#U(@%nFQzgd6KKfm-1ERjq2!4Z$Ir{4KCDV($%Hen~Y<~PwR2{B$4 zCEjDD%_CGk4!b|dABP)lQQIGpz@N;%`1stf#z$6g^v?|n&#CsmQg~jq|E3w-x--y{nb$VZ>{jA(tmq}w-laIcp&#j zi0`fnPYaIw!+R(^6de7xPH=>yj}pEXx9h+$ewIZ)&hPhD_L~YnN#QGkV=6sL;Vsqv z^rPfI=Ku9_e!}E=IRb1)9RH&S+&(`eKWlz|Il}Y9VXrsww6tr;5As`;^BcPDwIH-x z#Q*34|K;<0gy-)|r9H0i{wM)rd|amRn-qRaoxhK?|Im-SKVr@==>OLX0KBa5Hz@p4 z!Lh!~EBrErUjfDOVb!knfZOA%-9Y_;_UOM}`*R%e_2XaZ{6_q}_CM*h|Hu*N=LqNL z5no@+{&g6i$EfqyTCK0h|B?E?*8cs!-v4Wrzaw3L)w0#DV*Ofc{TQFU)`weq{vYZ2 zxhd-p?qBYy=6|oxf7WXJApgCdUmY*^AGrShN9F%5_52Ov)3?7R@TxlhUn~P0_=3VO zQFu*o#Q!pdpYVnF^Ucc?z9{YS{N@#cwgY|JEacJ>YhJq5n$hKivO4Llgk73y%Dc_At-`Zrexy?NQfvhx++)pFCg3 z?+<@24nTjudj8*1_<+LyTj94<|HFU%`&+&LUa$4Z_k11td)=Qe-__i|;QsBMDnEz2 zev6u5MaDPuUnT1W@Rq{gsqj@bKdx5zO@d>6yGG%@-ygz$>cb{}JU@GvYQIi!%%68F zyiahfkMB`$Byy-#r80dZk|=cGNZ-`_6{fe#6e{C!a2d4+#S z;RS`?TO5G?qQdX1a6P^r;0sLTh|fm@j`6=%=Z{|Yd*R5>=ts@?L;l|(4S^R0$N1W) z@>f#$CWV(3{$z#EDf}r4uPFQih0iN|Na0n5KULui3V)iyYYKn5!Vh=+h?+qEet1Lx z;J*F0lJ>9f{Eq(Zb$+hN{v+@wk3T#P^nlyvXV~xM-{IPaAJ@wD1=gQgx&8*eEI8KR z9SXl*wcn}mmf-k&V3)!J89$g`C55L1hy9Bc-X}QL-%AwUFZf-hKc21d0m1Js_-=*g z1izc$&k@|yyC)_U;mr+{ZRWK`CF9nf$M|k{*{f7 z6}i60^?6$S!}#fS{l6;hF~07WFh0-lYtIkZAC&8V%-{c&!~$Qd>jUUttNRO#kN=xr zM>fBjGQV(scw55phx6xJt-sK}U-@^s41C}X!7+c{uJG#w$9UO{KRgqt2i%@t_K!dVS$Ze>=bE-@_eWh+jWn!2Vvq ztH+u7gY(M*0FQ%!vA(U<`@5ijNY-zBKjqKj0C1h3hj{#k82+QKkH9g0dyVft_5GIl zgyUP=MIH8!G(PC*HGf(%fAIa8*Bs*fS*z=BcvNK=ud2`EM%W_(lGEy`QB|>|=c?ihi`$`FQ|3 z!gEAka6CbMf2yG38xS1!FG?66=Kr9y$Mx+Sq&;x`eD-+?-=zF2C$#SgzkPnd_?naF zYw+(((GPrHaLn(s6yEFevyAi~&aXvDJoM}M_4~nkJ)hS7pLG33|L<1gdpco$G5+RM zd^6G>xc2V>zK#(&{PNL&WBl|wzvN~7V10Q@!uWdGM|>4EKd(^nU#ar@MulG`IM$Ch zDSWN+hw-PcUw$YF20kyJUt|29CW!&AzrROY%0vaY_Ww}F=UT5%MHwH6@6D2bjIW^u z^Z72u&)XHQ=kL*4zc9`hWqhoYyuMZJOSS8Ob{L-xX%GLaf1&Y({PmijCCNXY-&GRE z*A=)35I@G>RWg1dKSg-J1C^hq5P=`=`0eE%`e#smKjfuzj$U4LI3QN z-!F>W!8Z8=cwKOuzhA8ICBboidZogbRr}W~yeT-ozjLMFz5MTmqyKxYPrcT+J<`88 ze_x}{?|-fRi}-J;`>Uk=qo0pGNE*WbUiocG|6u+5y6T@^@2_g9{{4n(zbZKH-@d8v zK(2pq{dhp(X~A*+_?E&$)&4&eeuCf_f8SR4fZ&*a%L-qs^&S1w>;7j!#doUe-^2B9 z+bHeSHpKh0PSXFpM`_K(Z692D9U{?TzS$Y5TBE zTwgynF(!M(vkJt|`gV?w?c(jkXm8~9KCrwQ`~_yqW~K*QXggWEPP+lqKJjMHGviA{ z3t0Y?@tG%0PVlaOv>)sEOz|w*$orz1Gb7h$3RAn*Z`d+1!#fH_yXKm9yr1xfsa>?c z@9_9~+9Q^wyQn7$^lxU?bmYt~bL2g}8Ru=Tw~d;8R)-7bNPQXoL7OW_5>6Uz10Cgb za_T&6ugv>cQ$kFiOirCYCEZN&v$@O0&YUSm=;YKBX!ls&H~joDd!OmasdGlhXLGzS zU=-Kn)S06k!yxTVJV9GEw)IR;Pwgs<4P%F5$Z2cG;@GB(iyR2`c@8^v)3|#i$3@4J z<#>u5PnF|oa(t8=A1%iLIX;GulT*Bj9s5XqH#K^3TmQ^#w69{6Kl+dSq5UQK_~glL zl%2_`^}Mq&Z_CUS-t+eC;gLd=@6oZD5gM9NiFUOcq|}hW?D=lwETMWZTQU~8zXxfr z?XzUVW3E4iwzIVB^zH%LBQG)$F#hTlj7vWW4*D%`;I!`VV4Yie z(@Z;FvomM3Y39uA==w3*MwyQ1$oBoTpZmm^iGmtancA8gN1sw|*N@ACA`|4sGr~Oe?7Df=~NZQvHN1YnlHzzw z9i7)=>S%xY9oq_%JLugg#-}aA)A%z=1=VfyX53henH|&gYLJc%skhsh`C}SvA0C;e zZN{UrHAn9j8J{Vbx3kbV>736pLy@BhwZ z?iV`AnSNmt%(tp$9U^TzhbPYDwUx$UbR4Cf`uPtULs8wg4|zlFW9;JvuiP1g>;M(M zboKEv33>U1yh=h|Jt41^kQcrxS-iP~ymCTbEg`R|c*CdjRdBR_ZFEIS`}WEeDfbx5 zab=3S>^pnbjtRPuY;P3Y-jCME+e@&L^8(8AsIz~q;Zq$~zOaKUVD^Dm8a~cqKjw4C z$0q3P%rg55B--EiiBpqw~EK-q{a%qj`Tro(4~EkqwCzLjkyFS*|c2QG7ne6h)4SI{2kE+UKDTp3Yq!# z)hO3-MT+*gGPUZ_6{=N_u2ijhbj51bqbpad9$mp&_2^30sz+C}sM}Ywk$>$gT8cHO zt9^vA4{`ZBW{X6FShIrobZgBwimjuW2miH)pS+(Dz@TTB+p88&ew-o+9g$Lg?{-OQ*6`mIS zE|Suk!b8FFJmv#}`+A@U-2R*j`8nL@jYrFVM&iToUB0T~&#L@=tw(@8;I8;{q94!0 zKCkSr_4oPvK5oVb`WL@PK3e(REb-xa+->A}HTwUSivMWEcT4$?{H=BWHKhNrzCBp= z-?HEsKMy&|pGWliy-7j&cOT_n?u+L8LKuHntNB%w_P3P*aevjmBskW`P~me5e}KY! zeV?P(`DtGCq1e_n7aQ^%vuFLiFSFMBP70zt4vD$143VI?Day`@UhX z{^^Bdee3mkoZe4iMa}QS{k$Zpf4x4>>6859`!YZM3;TDZ`-$}0Z==_KhrQPCweFvc z;3v}>G*DG`@Qma zOZ%5U&Ya(lkp(rQ#_ymS-;Y#yPH#Nf={+amo z<3oHW29e{s!AAp*`P(Z$z2dK^_#UnNuL_R*JyhW}75{+3>#F_36y8wnAEWTKUf++n z|JS&Gv+{ff=N~+0K>zQ4T6})sd%?hS(jNC8cb9<$T>l>H9tzJ(d-VT0g%{QHqvI7` z7995v4^{Z`x8m#bNebWl^mu%S`hC8N*vI@mSBeb56?ak zuWIJ{#-<|4lNaN2y-Gc#7Cuh-Bkog>uX8|dpU_}F{G`kN`+C;>(CmH(#C zUOS)5(UL!WF$NBY)+9M8lD;r;VVa^LrTpEe zP2=0g@WFkQCsYWJ>J}l&i;eTUzAZe;!&zgqyTC+uuBFzo2>r`})TE%|*m?q^Q)Ij-9I zXt3K0$M0)SmG|r5dbBJJfmheX<9mU^7X(N97b?6aIQs8Wh3|i_>0h*ek;3;X`!7~_ zU2t4ayhP!-wDBMKoWieF{=HP;4Z-m|>SYRFR`|;m-c{JTQoS%tq*;e&$1|2HW-r~JE8aNi;6{5{h4Ka&BYf4^}r zQ4C!Fe&f~RAaMQrjVlzcf4_nKZ_!@=egnUcIMVofwMU-y`!mmzhQRgvGY5T&RXZOI zdV@DSuKlOY&0qZIo2&E^yX+g^dvks4{DA)v@m3&DeBO*_xvUKyr|cFL{x7z2$KTNF zfFcoa9OsW2j=tA``!;-j4tzmyJm1CV=e_hFDUR{9|L$fz!g`4NL*V&6><zYW&0a z{JpZ@Q21&>`|#s$b^SvAi*mn%{=@s)fR_}G_qF-bguLK*xYv_tf4QvBsNW5LcpT^f zx91;td*t&&Tp!#+0N^!+uT%J5h2IkmkCK1ai+)@m+)>$IQTUw{euKh~J<9&=QTw%z zO58A`_fsEJctiE?R)z0X`nP%V3Nh@Wu8&D^jQ>^1AJ&iOibCKib$)uY!qbA|{Q4G! z_bL4C3J(Rx`ROW!XO#VS3hp}~ejN3Fi+?W-f$RNL9ss~&pa*g~5jrxVs4)r;?-#{G?-cjEt=VM%tKHFm#VzfhDAAute9B28$FSY&i*+aYi;t$rp z+Y11EN%@-spdFDqVB}k$zwZD-kM^Jqeac*4z`wf)0DQB;mpytRM!O^R@8+9te%`_` zw00k1ryDU6;N|<=F5opCb-lmG&qM+6(ml-h#rgE-3cpsKM*zQ0;SGgm>(+&FMKZk{Noo2@AY}N-mmd2Y41B=e&eX$C$>)-0`GObdg-3{ z^;P?WACCjj>w(+n5b(i)zOSLufAjO`I{DwP^0J|yKO5tM z`dZzut+jq%ps+wG-Jg?gS za}Ni4z+L{~`UdS@uI%5m*Z7b7i&rWy-&5r`>WA@zru$T_HSu)Iu=4Nhi(F7GT?lXC5(C9Gfg{ zpP=2bwhzxzb$Z)Lqh_~_?Gq=RoXI@uq#4?)h;}Z+#*OK;3 zqJ8D)U-b7F?TE%Z(Tz-u(}qg;7OmNzhOgb$RcK==DLgi^R1c-jDa1ZD6^qAneBQ$= zoY=`H^A;UEzUEu8^hI;_)jNZJl5?@`4*octEmTkMB9lR1fLM1w20LaoTe5qDIz#+%Elwjy^lj z{Uk@>yksmM?6Q2w;&JrGkXkMmTS-x*}+$OU%!XpcX(yF|Q@ zj$C{^mZz@h@DOj*$oh|Yp@YZr0g|I|J!|o}j&;NKkL5!a4|X|!B}*UI=PVxd@i?kk zJgzS}c+Bq_2OggGFa5^uys$o-$94xS9{kfht`{sG;^p=glB4kWUa)w!K0S|G4xUS2 z|C>5-986!)!E@|o7Ks-|tPYRo!;O|cUN^!w zyXS`zg1s3io%(;xX=;zpQV;;@SFiUY0B#^s$|$WtaPL)xl%E1J#ay z(RiVHNOCUF$H$t*WB(RCJe`-|Z5@3FizBpnu$BikuhJov}{R7j4(@|wkie^LG{UbOzb zv)e!RyG(Kv=2fZQ>pFt-6kOe{kL}xe;d;Ntv*Xx6auj}sTC{kGgO56Y4F?Z;aO8F^ ziwC=Wz1w$9$1XqP$x%I|BNy1^yfiHyw_Bxpue@;H2N$~av0j~*vc-dcuJN~E@!%gH zbzYVoJoYDeS0~kLOYPy*q;;X?UUdiY z9>;sX_r>GQQeFGUyamN;P(4Y!nfG_}Ar3y~NRGn#OBT+<)FnoSpF&wo@+f=a`0HM?H~IQe5B)_ZCB^H-@)VN zcH#De77y`8^M>RoEH7C+*yVA$Xz_U6Z8~`DclM(leLUZWsNU;5!*&*k7t)c7?cb86 zkNsV?c<_&p`hI5B!DIh2i*f%3sXj<@F19{>Up7y?Fk*Fh>`%#huEO<22aomYep`0% zqJIBa+`m4mht!^n?Vny>3Lc(4uDJcY#Y3K1UbF0SebM6Cc5PnNA0FPSrH^^R$GhWj zt$!H@kL~Mt%O0M-Kd(7>oaZLVQP{s#2aoOQIQl-(I}Tpwat@v=js*`-_uI0?L%(tU zZX!7f#}V%9_K)pmNshw2K?jfXVy}NZe@hOYD~=@(Psg!p@el{wUH8eje;KNWBJ|_2YJJRG@$mFIp04+fgZm?6 z@$5J@ksO72d5Z`C*dIOaD-Is>^|)$!cY0=`rF8g;K$x*o8O33T`Tz4Ei?z1FE;r!(tJhrdT`*R+iUe{_Kp3Yy> z!_)ao@9)Hc{Ba)ibG-qJhy1zXC^&eWmkP;I_&TxX;BmgvpYQN^UF)ZMlIz40@j~Kr zK^*s`zpu3PJ(}v}FLZbZi(_!9oA*F!znkPJ=g=ROFLm?S@8y5*@OZC*^tHY3yV>6c z@j^OsvHjEiR{u(ehj^KvvYxAOKQ3E5=wrG5d?xs6N1x3*p5!RpZot8d#<}8^JiMzE zukPTn{iforICwm+?B@rZ_r9-n$HDsa{3tkh9N*<6N8$Q{hqq+$SpTwv$MTlNV|}X* z9?SJQ88(u|k@xWQc&S)Cj2G^=8p%=Ek0p!8{^R;eulFk+p0=C*dM6IpWxe{m)o<}^ zyP7xX;Bg%KbFjRF$M*H-U{wc??d$7}mV?K31M7Z^ zz1Q;%?zfhu&(5=c&KiEx?Vmm$4LW!{-)2dU!s~d|!#n0coR^_`uQ)hg72<_rz|Nl@ zS2c@=csXD8bM)xBkHxd~>3I9T)oqvct|vJPe^<2V;Bj7>7LW51{73Ke7WlVU(8qdp zynV|ZyNH*^xqV&2@~p*!e|*&OmK;3pH~l$D&BI&wolai3f3sBYbzQ>#R*4tVk&Er0 zj(5r8AztR|{%u)2Tc3`%@4MZ0x!U3-V)W5^l#tyI(88U+qLH<+s#_M zgT*oD;IZDlBuC+S+4S%>T^Hw-sotyK*q;{hLNS0iSg!A*(%t5y%cUDIm$oLAFUsE^LX6f_>&Hg ze;bnduionh`&%PkNJlPqyt;qOKke|)zs%S7JynYbecVs_zGun7WBv-sQMg^p!&_bM ze2&e$^h(D+*yZEWo#;#BQka+V@Crk5Ue3d7sqb+YJ-iCZQP}Rhho|$m=;7JtBi6U< z;IaHBWjFmZcV4vJjDyGebiWNbc${bLU&+C9`B!!DT>9z`o=e|~gXhwh`gwO=T>3H| z-X@ZxaJzzo$97lMbAdSrkK6B2`sxlI>(l+#bnsZ8?zhx0y5o)fQ}d|b!DD?JNRGnw zyo1O3^!zP5c-&s+Z^6NH#k=I-x#Dd(crJbE8@lu2(l_AXu|B;X40(9^ykGY4s$1jh z(7c1k{_P_<3fCJB9{U%5C%#U$96WBn?w4_W{ZtQ0&V}{hd4$$C=-|2Z6&*a*tDhHF z96Z*ipBFDWc&zWn&ll-`Q~3I~>EN-xV}BKoH>7%KnziHQ^W1ui$MvFv$9DDadlno# zm%fIB=Za(S*WLcPc%_8A1rJYuKGSgUIDa>i9EIztRxl>H!-2Pgnuj$~q`YrgaI}Y7%p@*mQoOAHl zKYjgDbnsmBqneP{bnrM{y>5iR>s~ipc87=;QhP3}2j^d{Z{DGg`8t0~4t*}W!S9pV z%@R+qf4rW|k{pH4ck@)QiolLT`?u_|t9hwaw||;9kdRmK@brCS#lhoowU^{5TwikV zIPMk2YdLt_e%&A9`ueFJlAMd3KkeV3gXi+E=-{zl{d?z%gU9;xbkAz`m%c#{uj_il!Q(jed|M!%9{0@C<8RrakNwl@cMML^;}uUQTOQ6yq1IKT3`Ba>W5 z8y=pXZ^6y(I0i|M!g3M_J-q7`Z`H%Q z-!XB08LEe3fb)TMT=!ef!E@!Ml#o|-@Yue7-c)z+*zWZtN8$RagU9;xIv(EE9k1r) z96Vl+FC{q&-xpLJJhrRP3(E<4!R_4sX?^`3o<7eE5iiMg-JD0Cw!7%zX}c>4?e^W? z9k1?>K?lz{{v15lIH)G%H5@#)tLJZ!>W;(ZU%!LL{^{rAgAN|+)6d6?4xTIC`GmYB z2aoOQ&)-%ZJhrPpFYCL5J1<&a*1>bdQAo&}Psm$x@HpPC_0++0`4`@?J6;zr=iss3 z-6Tihdd0zGefm6IbMUymK2I+@c&tya_p1&b>(l4y@J{Y{^|~?W;JMb*1qYA)>snuk zmtee_G$1gXhv$bMRdH8V;UI->QS>(${zA?!374WgR@1 zzPy9y(l_Vex%4eKcrJYn#T$6e_A=|sKBqrAHpa}cCi2{jsh6K&j@9Q1zijH2adYe! zc_8wv$ormW_~9R^ z@qci)kvDf5c~R`vAuk$v{b}a7D*7{`r!i{e`4<>H<>yL$n>jAM(8%i|uZcW+sgY+z zo)-C{$ji?&?W+ZITzHY_5qV4G^Dh=XBF~9D{SqT@%$oL2B9kyj z#Q&`LKlpOP&xySCOtCNWhKz@njE8~CgfDihn+?Av^0bVTK*q_k^kXRT<|W?Z^NpU? zvrYT5^!tj)Ga_#aKPUa37Q0!o+y4rqry=ttBmP%K9*X}(@xSkthF_NX(vstASK@!MV(d0$JhVj5 zipcBYf967yzx=BWKX`%k-$mw_dySE2pKt07;V+52Eb>tJ+1DC=UF1cPFN!=6d0F&i zE;szD%=d8E*jW~TD$-wpjL!w(SERq1A`f3Dc4eFwCI7Uq>gjq9R9ZFzmg~JxAs<$I zqO$z#(>G6yZz)Y|o|)P)Ju7NaS06D_Y=4PiUi`|)_{r?JTeMym zx7;y0w(ENz8ml)>G&uV?L)!SbZMwJ-icNjESQsBUcY1jH82iYD^ zhx@wtYVzdX+OweNdF+-+ZvAF+;m-TI(p4tu@vs3(+F>b%Q)7?J5=x#r++6T`u zyzsSgzHglLy(w*b0n;(hm!?>SU?S12? zC`tQDynWF({#1Kk{OOO!^&x+K)wunvXa0EOSM7cFTR!`5i`y?w89(*-%X;!RuiEEl zP5bOCwt*`@XB<_RB9c z?VGPRN93daiFh63XI`}rF@Ikb=Lf#|_s+O|*wg(Vc*f7XZZFpfx_!=b9_qU~nf>rX z@p#(ttM@=llBKoTbfYwfy(tzJCRJ^pWqmx!~CA{WT4FA09sg;__Q_XtzHg zI6q_O@;h^A@l7ba*Zkfi?J@titM)a)@qVvKh1Uf~{-+e) z5FGg}DtuXR{w^PvXDPfXIQ*Md_=>VWqwpJ*{#k|Jr1b9)+<4RdKVYm+bMn3?jE@_o z3Gnp0;_oZkDGGoGPdDQi@jqMPDZ!zCx5AHA_;VDV799C|uEP5SNB=%h`QI-%-ski@ z)&6kT-||oXa5KNVHT&C>Z&knW*6s6&et*(d@kh)CvyyMr={00gLESeWh1PXIyDmTk zNpbY&dO05<-zWJLEB&zZ|LS^<{4B})(y?CMO9BVp5FG2>W04q79s%Q6I?l`|B=$MJyD|5;zd!_<%W z!NT7DqpW|e=ige559Gs_f8b5&AI!fm9p(I8yDmPy-m3b!sqm`8_4`WSc9i{FQStwK zLj72uTGAfZGuKLc;H!e;eEyY$`q4kW@dv!5-hcg$g!+9n=sjZmsdv5&t^rvW^!nmC zVtXD1u#5hBVge1#Zs~Xq?2XT_%itIsRmUE1yPs6Eb`|aM z{_X|2pT+g)KL``NQ1XrI$>SA%g5WqmK1ksMf@3T_SmA?$WBxrv;W>r(D||?BT+cpK z;RV6r-@^p=9S}FhTT$9$;5=L!0zcgAlg=YoF`|KYtc(3t+@t>3SI6rQX_P~b(NB*9q@Vvrv3NI*pi^7WvA659_&QDPj z?2-Ey)JG*TsMi!ertn_(ziV}W3;!y2H{%cE=RcHx^MYgkd|Tn0KV_bGV0VIX8|3~A{{5>c20kP>;(Myku*l&bj(a42jL+{V-lE``zu!%$-$#R89M`IUp#NI& zALsY$RD2DEe_!DT6#fH+FDv{%72a!oY)X5qKMT^{cR*adaPaoY`=v2{o~``5rN%$} z)7M|ThZh&%+21{*%zwlGeG%&a5A85NeAk!2ulz{-`txO?0JvV?UI7Ch7XahfYkUu= z&#QhcdeQz2!Et`MUg7HnM}B^y@C|}ve*c%k54Zo}-;n6X`twtz|NpP^PtwqJK;AIE z*311b`tL(sE#d;Sk4rl>;LzV|{2%G~o|XQ``ua0*1%8wi{_~Ej&cD#k36c;vj@Qck z#r!x;8UkMy9Oth`Dg1iX{?Q6=36A?K`?moR^`mC}!2EiQYM&Au_D@%MpWs;k|54%n zg7Z5Kxtw7R?K}(!es_`co`+lze@^h|T~#Fi=Lq%xhjti0M|%BuOW&WZ)$?Ir29dvB zIC!`8`uKnI_iuClV*D)1{Koz5V|@cp;b`+J2S>H0aeKYstY zMfKxm!4cnkJ$Zpx+(WhN2pq?K@_ZE6C-3WO5f`8x@>>)Cke~O*>0LFn$I*BH($!D| zXb1awxxT{n!G8-6ctPR6@hMjNVaGTAeQMCI7Y^S4UEi4bf2h|t$X`>|N6e2s06ZN4 z7~|t`=dVY7`?{`)4IF7x>*NWs1_jj+8hG_rSdVSq1{+9VWJ|Q^nuZ~mr;f_!ApYQu6z4F%!hkoDl8{kD1|NVW6MUHkp zT2dVOFK#yL3-bGJpJHVncIMNjJH!4cor z72Z_szp3yQ!EydNpm6>Dm{%$M)VrDah4{;Y`wkdCy>RqTul)9k|9G{2eM1aGe@o&= z|9?y2fy4*=dkRkrj`8_Jg@=M;eE&${h0mG$2eki%;JyR$hvSkwzeD|hr6KD3`JVv%rSdQK zF@ByP_K}}Cg+DQ&f1s_^_s{-P`g>j9&P#qUf1U})j{74yhiB?;HyD4IH$1e6Gnkcr3TyyT|&=4j${(?~|%Ic)aE`ExWu%rtjMA zAKRHDISS9^8r6qHV8@}~6O~SP^szmTm*ddyQOj67Tc3U(SJA=ayz2MUR~-A;P!_)Jv z>EY>dnm(=*2mIrs9WU3j77y`q9D%j2aU2DUXY14JZpFj1<6!-D4^PLj>fmudop7&C zp4sm#)ph?ePxo7ycp=HTAP)9t!P3X^E;)G2*YUO-yl5PKb|eLc!<|!H@J7Vf3Eyx96Zk75Xn(EePb@w!&Fc&rE48@k_?96XNWMv|kj{=WNm`^WYNNshwp ziVhyzuUb6rp9K%ko^Nco;o<2xg8Oy*$JZ+ZBuC+T*~7cu;_)+w%-?nE<2dyDKj%F> z-ET`4&+fPDNshvK3I4v@F7x|Ij>37)Ie6?}>UEuQ!1~G#o@<=e96Z*i^PIYWw|~sj z@eWu##LK)K$x*mIWbwF;acc88j*^ErZ|P%R)x*={YRSXX@vb^}e9wAn*olMdHL8bn zGRQ?gXiksnuF)^ujS$Cc^*Ev69?uwuP<4Wqi|e#i^ujb&sRSdk9W?& zbH%af;JM;hb?{i<2@mP`$9`w29@3GE?VlYlw<}vb#LIGhy|!TSpf5TG=`%yW`OFBj@4S@vu zH|XH;ye?Wi_PgrfarOHs|2E;$3p^T=@%5aQmmn-;l+__~Yxi63J1xKk63G zjyGkk;~ZD|#NKw9m$7)T%X;;E8?tz|T|J)X96Y{0*iUj4{*FNQ5#9cAd_yO7c>JB` zD%C?ea)Dj$cYXgmnCa#*U*8WF9X!^zKysAmeunCJG6K7N)baK|vfD1_b(G{NoYxZ7 zUH89>7LVI4IrOnzeZ9Nl;IW-kKiFBXIF9h-ZvR|ylsr6p|9T$ZH4jg(Y@i@}Y(bK1O?ArQtUa}sZUJnW$p7w9v!Q;3OkQ^oY?DA2& zg1iXeAJ5Cxt2+G=-PaN?R6OSEJU1;K^2~YB_W{A9-THJKSqIOhujt^he_CJ7!<+j| zCthyX^zf>0@9@}0yWh5y(chf81H!Q=5aPjVEl*Bm_7 zw`}pa-t_SFb=|6i7p)uC{NQyXb4Ic_Dh?i>2bM^V!s~PJPu==BzN<)%!uhN_cpP8l zKjZVa>EP-9V7uvm?zZddk0B3F=eg|R={(Onc&kZEyZvK-hDeUW^@4-P`nvA-9Xwb6E;@KF|AI4<`Im9< zT>j-8JePlE2hZi-l82|?U%u+#vE9-Y@&4^Qt2g`fBL$l|Ljg2xGrIye$UpR#bccBYk3_ikQ{~ORR@p9`I5!sd5~J) zu?u~C%#a*~;~Mbr>^PV=Wby1c>^!sGIg4l8)p=fY@HmbZ$x*nTIj1`gmS0A46khKe z4j%V==G-_hNA*w|!awHiwRjxwvV+Hb{ak+4!Q=es`?Ab=-F8`@&dZ#G7mdGnbmj;9 zTX*nSpPnBr2antL4aW15rFuwmF06;gANOa~;_-M~q`Li^YCM0j#|yVlJ+7k<FISTvH_b;6|;2-DV43eX8yOM*){QCDh z{l@*c=;7J{k*+y@i6{)oUd4RIgZqmy8UB*OFhrdczE{s<90(95B|C4 zZ`tC(KR)XDyWrrl-+}cx36G1Whqpf0$up1BJk@oc+0UBAV}F;a9@3GE?O%3Ze7vOo zwVTKO+1Hb7cfi48y?VUNIe4tEPI461x9s4tKD$47T=bvc@elpM&sjH-9OdumkA}sw z_~3 zPwVgyFRv3>lA|!MXz{qt=ObPh=Pe$$YdUz^F85FW(>r#dkB{rD=QP|OIS7Q{Ie67l$RpOQTTeb>EN-SgM|){`zJ^Bkd9pJIPAPIuW0e?yy*Uzw|KTb-5*O19{YXF zc*j4k=cyjjkqh*({D8&d-}q)O?B+3F+pRfxd|tku*qT4Rp*-Ua2)?ak+SfB2Mv~Fzg*yVW|Qaz+2 z7x4I~&qsqEo*pkn4^Q`7)x)#nWj`7g5Am|!Es~>f{HaNI9Qyflzk|o^_2*1O4j%iX z7WIQ|_N8Z8X>#%u}qj0_D;cYH< zc+vczdMFL;ICNgZXLWc7%gcbpv-Rn`9P;)v!Y$x+zvmc_H<(AQU~9d5fiFBuO{=OyppMc0`mN8x(I!#jRwhZj8`qk1R} z?KpH^7A+p~!u;^Z@#k<2i)ZV*@$LDGu*!uM6JwqOz z{k@2#hyocyp)LN8ZSDIn!~Ouj;6=1?zi;rWd3D| zr~Px;EjskMcvT0_HLe;S-s*B^{o}l^dU!hC{^z*k)p;Hwo*pkQ|K=R}INqf{b;dLM zSM%_iBuC-(z2)G!>}HDJn>xpHcxUCw!1)e9j~k3Rub9`pVw`d=k@IGJ9%Nd zL&U4nk&8V)^m%KZcwxjkIBzK-Z#5yWzwEYapN}|CLk=Fx_2)fh4^OY-3l1LVN9ScZ zAusiOcO3eBo=M0X^zih2DR{LVb;d`hrW7`IjMHlK#ji)K_un<8^yK z$x(RyY9`bdzNp(j9?yEc&k-*a19pGtaa!^4bidUT+HE=XIj>({?DkLFEfG)mhb!I% zhd$RlUvcm_KiY2il4N#s#7mTC4^P{zC$!u0=+ph1nd|n?mA@eekMpv!+BvUsKUO_F zeg0@Tc&_tw>ZR`Uw9ZS8c&>4>53)xTO_IibFqN1x7f z)1l9`o~B>vjzjCqCgc?p@~R1WjfA}5Ro!v8;>|dCJWh4L6^N(%jrCPYj>7Y!Ms+V>IIImFOUS?kI4iArxnO{FFIyOFI@|8?|6|%`t~1B_hm5>&qv-v{jl(F zGWGQJ=GZUt?4L}%BJ#eE7=93#eo6mSaFJ(4UKDxiqlRA>dAMTubMH6u;;oII`p=Af zUizz=GV;c+j65y;wDfx*{l2)z=n2LDro@$z@lY23TjGD^8u3Tuxt|#QtKw&R)zn-6 zX^v%)SAK8mRmc~Np0vmVkrx+@JSY90m+_Dieopv#;SYXR^hp0^q<>e1UlDm;k>^CdEb>t1 zS6${^?mdRzka6CUalRt@YoezqdX|J=7k}#FPx=c+PaxwqE8}@innUQs}DeG`c{LF~|L$VInB%ejBKTF1LP5QAe{n!+F1OEKb z^v}?j#7|kTS|ab0d0G*EM&u3Q=fwY__@9+^pd$0Gj&)e(S5xv+mHgCXzGP*csmMAr z_+{fyL&j$r<5}iWaC;dKGA}}zFL{yIMP3&@b&>e_JcFy@p|p6_L-lW z_W84uwNHILZa@6_A;z!TXMW*sUwd`jAM{`98*%&SFP;Cor~O>g_OJEW|E9A48@K=I z*Sp)#srHQ<-R*t-mpTx)U;n+kef>=y`>K8VCU<+U{cpwXhkx?4f3wHFYG1y!;ni|+ ze)zU{z1{!+5x3vGjp6D3_xV4k+P4m|ed^nB`}I2*`{gIc{q@>c?aTK(H2+h}ar>3y z4z2y1Y9IX3(|^A8?>lk(8BhOb-V)CT`fpCPZ~5B4)!jbzU1i_1ezz`nx1Uq(!(Sa@ z{NIb)Pyf>0zTsIv=2ZKZtiP4@aevd5cpdpmT^G0STmPEA_*MJh2IGJIoVY#T_)UF3 znf;nCe$_rm8@oy8Z|Vne`;EIDTKhTG-j~0|d*b;B?_=_m`p>xi>amAtU$xKQ`Ow;@ znsNJ;JDK*)3*!Fz`fpCP5AR~yrJtIted>pC`^EnO?4+nRRi zjjH`S<8`bbbE8s;)w4YP$>(c*v{Yh8d?NdLE+xM*>tt;K_=T!Te=lU)8 zMtA$vO5A?FCG&4E&iBrL)!yfS^%Ze_$Y1Jbar;flzs_HHjl2DvYG3`e@n5(1`JeiE z+`iBMz;phbQ|$w}{w_Z*?r-i5@p?P{UnH}i^|YT;?OUGvhm5Cv>V~-e+KM}WRp0%O zYM=RoyM5C$epA1U+xO+arOuzo-<)dSl=F}7|Ju7f`Tteie(UarSA2S$?;AgJs(tMq zrd@S&vi7N8$L$x_iGB6_z-wQ%_vNqY$zQ4!x9@A;@Z@h!wQnMS%Ky60{(r~qx1|5F zPmAZT?z6Aj`}|M8E3OaYC-s}SeP8?R+uiNwRQs0a`9t$H?)ItwiQBKq{huDc8Q=P+ z+85>eN4L-V?tgBK+pl|`9~9@^{+p+0{{Q*2H7m5x&&FU$Lg;m?_I zT2~G2kgqe;`y9`b7Qp93KYu35;E2bd){LGx>Bwup#No}0C-(+%$ll-~9?-R`^2|ep4-eefKbh zuSk2W{|{GqOW`Ldd{yBmDm-{b{QU9=g{KsLlETx19I;`==^=K-%N{a+<;i1;_k)l)`fgf3(7flz#()8*jV+2aNTlAnmcfJVpq> z*XsJV+cP79f9>`ClV*G%f3Fb&@P^>X-|L~kW1t7zwLb2b`H%j6uqZ%&8iM2cGOO_G z1c%+1;*TTr5Ah$f&*TT^Ki*@G3-Gky$j`|J_Ws|)y>@<}znA?!v5)cfjvfYjz=v!< zFXIFK^R6BS0ONSAoPUwu(du!43NzlVGN^4Wm?q~oI`{lo8;;qoRZFx9UA0pqxEjX8he`NrQ%3*bdr zpK<=;cinISe(Yj={)7?Q!4IhCGY=5lcYt2xw@>b$F#aDX4coZb2mVNfA8!A^kF~zP zs7U|e`s9sb82zuGPrXHO#J`}{@3+EnPl5sCxLft#DV}x^qaEzeNqel1ryiyJ!=66E zKJwFR{j5oTFg{)j1zNGxd%*2+kN7KU{9PpqfM2Qd`%Z;lB{X7grzV*Wlcp?^La?DoPD-}N#+F#m>q4Ml#a z`gcowxPE)WQPy9T@dN$O`Ww@~Px6ENk16pV{j* z&K7?|DIH%wCKNs={fF_hUEvkMaeq50xbFZz zjub!A{9!+WrrLk7pMKvPigWBM_D|9K4`v-a&XInPchSSs@A0lXcx+$q7npu^$3Gs^ z>>u0hCpikY8?tzagP$RkEgtt-%fZujd2P?XrehcS_^98HGUwshaqwJTuy}}r_38Z^ zmo1)cSMT4LdTqCVd``@g9EI)V9XyWjDvQVWdUXen?RULL_<=e=t2;Ge5M8WzvzAGb@t!5!}a$x)b> zvv{^Xy$%%}JZ^ubrH}otIe4!AXjweO%X!uQ_04zUIGBF}4j%hgAUO)#DLHs9{}wGC z{9}Cs`u&U+&-PEhmpQniJC5jD`Ys*+IR1=-$9i>t3^{nLuWR3b;^A7%_D`>CD-L}e zuYO;3{~P1`Qth1dHk)k6{3cJ)5wsW)}=xcwO%#|+6)xISd@Y`e=3?eI9C6$g*ct946XbiQ=( zSg$@Wn`6?uOOwalqrZ*1(l-5OBOj;)QhNV*7U` z$x+zfx`W4jz2AGw!_)niep|;b`i=e3`@&}|9{l5@o*zXIPus0pJlJ*RrEc+TyE@*c zho|kP-rgNA>m5}4JBJnzcG=JMBuC-?C^~q2@3mm@_*qZO!DGGpe4c$r$3NKRqrMI+ zdU(1&stz9a?*Wpda9k@?&xpXbYv+&K^#JKl?zbfmPv>vN;@NT7@0H{69WHd+<@X2a_YqY* zJpG=b+`GE<@%&1^yAvT#NRPq$spYo6pN z>|fEr<2bHUykJkV`IaYMC*GAtEFR)@jlZVFL%gm$4}Kt7p67@cl6@|)%X;;^T(Ees>&o+zgXhZgs)NUR zb^bCR?D%Kf&66C3*Q>IF=gLcqcuB@z=0hF3c3$-U-8qW~|Ja{dlB4kas5^Lk9z1q$ zhsV#di&PKk$OZcNsNYN4aPYW4^m|Ez54-j0>#LlD$NDZKISQY57O0*if2)>0JAZmy z^?jti%8v@N|Eq7dvslzi53YISR{%96UZhUTX2!-z5i++qWzp=VjHyv)4&( z7k;ecAM(s{eP5Bac#Pw@qs~jw!Q*)K^Y)sDr=Pb6AMf}FyRQ5VI(V-9l^i_QtMga& z@O1u`EZ)KLw_@=S2Oo9*`aa=~SLbiY!_)a&aPW8>-9&N}uJ`Thw#)wM`{}HQr}L7x zc*qN1@9Ou`&sjV>FM55cIe6^1zMgD3cx-pmCp+=-x?7^UUWa(zl&*+Be_0}4NOCT= zfBHGxiifB3lKxajAM)a|o3VHYvzznqwB3@$gI&(c-g7&7VLz%C&$c^%|2VJi;Bouw zNshwxRR@pt_J6v=<9^Ig-PIpjU!Hg&@wwRkX?+!kKIT_e;{Chm(Wlq(rh~_MTqQXQ z>ksSQ{_%KQPjVElmmNHAudhp%JUqQVw>&((zJ#CY_K)q_`gmLnIe6Sp^CU;%IBE_a z>$ArnkAvW|9lIERe0|nWa+K)0)8ernoM&u(?8l0Sr$6URf39QKr;q*1SUmX0a{atB zZ}Dt>I?q)HkMnwfeA3#k2KkUcox9`i{b~*o>NRGmB6{xP`WqrCo7A$?} z4;}~CTKc$u!hi3!%lCs5BuC+P4F^x#<@mGLcI#uF{yeJS;psT$EFR);<$2NKu|2GR zI?t)Ebo?n-|&s9q2O^zm`sXX5Mq&^NpFG0#4q^SCH`czRsb96a{> z29l$&zv%VIX{Mr4%<0|}CN1vT%eIGw)@sJm8Um`gQx1XbWRs=S$ zVe#1Crb8d|kN=O3KF(i;>LDGuKp!7R6|YEjSG@LfF4k9d=wpBMd-;}$S0yXS_h&F)zxO0ZypWYqvGr+Q$-(11>-XbT9X!^n{ag08m+-tWU28%L#d_33+|r>COv}^DN0x_&ivkdR+u||LXTNEjsiu zUyp+o4^Q`R-*?^PPxtR2@j{1x+HT3i({>jU+FkbO)BdHt=k`zY1`_fL33>Agc}otS zYhJD<?Yj#uY7PdxiKt++1H{Z>h+ukO(2TK`swS9OdR?O*o$ZvS+@6^WN*{8bb3 zmK;219K_RcxcY722i^X;cm)TK=l@kCN8$5tlj>QX*i`sXUp4!{1p_CRx!!uHIS%~6 z$jgs0_52CuSQB|&t!$%l-Hkgd!56%$YN#@x6-S$Xc|0j_@ z(i|7T|7TOLi9B;FqbDo!^vMQa5P2Z}WKT8n@YaT3f2^qoBA*v|S>*Lo44%G?=ofij zh!cR-THzAk2 z*B@;346bgE@|l%9R3+ZV?~S}H{-hf1Ni?Cqo*PAtjMz>U-^^hmwv2DKj!~z zSCN2U;UouD7ss5eYZsv}0 zzk@w)ziXcMHPs&WbleqB`^=r<_Uj(|O;7upYVWh(@U+hy8@KOkU-z`HsrK1xO#bpq z@%-2BliAOB#!XGN&%NK>fBDd3|1Qbwhxd24uc`Ls4@%tE#^VqE!QDP{*SP)c zhfKTtSK{p(p7u4>-q(NC<30A%ar?gZ=?A&n*Ali5Jnb`gi`%b!#Kf)VPt)UnO||#= z-}1CCjZU9F^2D7vd`na68;c^z+&%7}Pk-&;`p+&+8kMz#`U1~*hri<^#=*=zlKEGE zfV=-h-+9x+#lrZ=xzoej$0EhGgnF}{b%FIx?(9+91vzW&O4^kwd;{JF}E$JXcL^U=4S)l~bcXFP|#`EXp^eo@wwuKD2U&zf%k zPVxJTasQjX_4rqrozs$Xp z+0S{-C$)s_TfXskpJet!&-zeP?Ss80ZaseLp7kno-?;tayWH)I9{Fi^+skc`xnDe<%+>CA(w=-8eK{<* zk-u9e#*62UPeebZt||Tb54iO=JoDA)Z!cew{{N4?vw@GRD)awU!R;#Q00pC>4p1P4 z0>gWFlPPT>NJ|G=AV85!lWAw@Br{GXG-%PNs8La);%-&csHjmpl1F+|8WKO#LLDF8({d zKQ-)VkF5hMtA{q55C5)KyyG97@_P(tu)mhQ_H2JKKXCp_J(mDE!$<5l*A(l8;Uo1E zTtCgJ^%(2zSLm?g@AvnQviEfD?`S{p$ajF-Yj5^ocm`i!~SUW?;dE9cYw41{+IAhaMs^{3)lU_|EOH_ z9}qr-{m1Py2ln^qkOC6-e&c}$zTRf;qZ*yzr#^PUk5^Ua0{)>ttk0s%2WLTmd|3F| zG!S6hCJ{4SsN;bn`&$0=e;WOn{b5MTHzS<;b%ogv;~dW;u+Q;$2l6N1F8njX$H6%t zepdJnaL#9+6TTCi>!3;SF#jpGVD0y>7nm#_<(yrae{BB);)foVIDz$*`ieh)a(>|c zjbY^p~sCd{q@ObJO7=STz+oq;!9Yp7Iz39^{9j?(v{EP@ksZR%*gRd_mkY@ ztWiHp=F{Q;66TB3|LkD%@vc|=FM`wU&HTgRApK*wVEr>B|ET3#iT$qFpWYL(d=I>E z#!LQ@ySvxt)t#U7>y!2lclgO<))V6zk~3Ur``Vv3!6D|a{du!GEOF{daxEH_b9`%i zwbv{K|3Ui<_4^2CLXErw-%r>V=>q`dN#SLJ;OtwDcb)QmhC%4_c&Oz&%wdKvt3`Y{yp>`u6Lh}<1Klc@C$_}!0j{F_P09X z@tWmJLZ9cSYoJe_5`K~JZg8&m*9tERPYE9e=lT1^!bgQ)0`8Z#^3`|u=!vD{?eY#C$9N|@;ji<^M&;&FZrbKOC#0?^+&(xugBQlmy7+KuirRqW!WBG z!l%I5-d6}8gMIs~y!~A%d;*;IuM$29&hx_!!Ykk$k5>zy0zbgd-g}Pl8L@wja1Z-c z)4y)v`+>84(%{IhC1Aa`03<}^9FJM#&-3#OkU#m5_`gp02sqpSvU&2K=NI}txh(9H z>-XeFgzNX@MuqG5&mp9{+!)6P_V!l(F2C3=4C&tt=3CxB*)8>- z!uaR)`M%x=ZoFBd+ zJSF_a!n?tFy#AK(qVT(g4})`l_^$9#aJJ8s@a^DSk9<$~7&zPi2g1iC{~rn8A^HDQ z_@wZk3D^DUe=fWNeb(P&(1F;0mdN+L_7OfU`Rn)1cY$;Md93KqfV2MpN%;Mu{|fQn z!}r;#zn|#Gz}dg_`_pl7_RpB;F9YZJI9PZV>q**wvhb6k&-Q=5_^;pZYJ)z+T7nSV za{OKJ`;(6Qk1dWPVNd_mhIPt`se(4JM7f*m-hMCJm-HC z>~s8nT=L&8{(VCDnD8C*?BAkKHTR!SO8$$%>HnwZIsaSl@bjnr&q@9h;GAD4h2J6i zUle|)@GpV8f;}C7!;AgzuW)`iN5=mMIFCQckPJd_%lIFKefDqtzV~+V@7$0KLU2p| zTxV17IrxL)>;BvQ_T~9!TDXV)&HC9$LyiUt!8QN5-oHi8Z%%|=@>{`qd_3KeFOwVd zZ~U8_;Xh(lhMd>8c-}JG=fRk-hRlcIY|qCBGWku`c2Cwklam>+|F12r^An5dl9%r9 z8L-#xt6`0J-ljr6U)Z`Xw-JsNOPQWbuOIiB*>j_s=6R(;!J6=T3q4+cp*Lgy?l1IT zR4}g-qz9_zZG5@?)8x6nl6vhHrCRuembAq+`o2H)pr};nAyB0UD|BI z{@#^2-=;}RrF#vl5)(qcr(CKXj_lty*@RbEJ2tGw3;q4H)0<28S!RF6eASu>tG2Vt zOPw}73)^|*l}EgUcnR@hDc5&ip})KiH*|{Em(t67ddioi%ejKFGmz=2VN>RHMQhyr zOuDJuTGSgTXZqHgH$S!*Rz@CW1RGv}@Yx72M7SE^8iW@iT#GP; z@M47aN}08{4xwFt*tlJ1*zhuhmm{&dJv^bGc8`pd_cGI`sE z{R7!taUfbgJ=t`rIx-^qRh3`qyJ-t!e!c0^mUHui)iK5RitE#Kzsk=q ze!P^v-pbma)jz+K(RhXiEWa?D-jeghtMY5on@xe!HT|{u+;tga#41_&wPpZshDUz9 zC!4dGo1cwelIg96>(cqY0y47c>oRFr@#WT;3eBK!Rc_ z8?ag1_+`05K4a>)x1of+TdG!TMefb@RsY_MIxy2pw%kym)%c1+DV?|8n|+TgZ>ZpE zyjH{`wKW_!KF*KYlnb{RfmzqyWBFAS4^ zx_a3Dy${4bkC0rSpL9Pt<111RW?BMrhL5yQa}}{(np5jBa$f)SaQ~F;$NT?vjpo0o z&rt7gf4^D0B}Tou=0ABYuUPw8(5_zZ9)btt>pj=yr1+ER*a(p zi5V{Re0i7LPkWP$lWE~^7Ou~8yv0#2CbL|OYe>$}Retgz%nz*Jx2i#jQ%{m>(fQ)E z6L!1}d!OS*><7U6d1ugY&Ew`jLU8Rq8RcB{+ibNSqh39w`7d&Y!yoeRSJM9uf@ZZ^ zECfI3{x5X>bRXo;AG{xL@2}V&>!Aq#L_gWH_g((ck9sZ{a)t|CzJ<0QHomr_{y0B; z!BsIxXT7+@$Qh2oKIi{CU5c}`pTzvT2>PEEJFCI@yvH5FyTJLp&}W2a!C60_1$PB3 z_ul3_z7C`QS^fz)Mm{3^BQD309<_Y5AND-p80vRl*xx4pjf1oQ+#q}cob%@kgx~o= ze}1L@3x(e<`40=91ZV$xk?<7GH^^TsT-OgT5nh3Pw$F{ir-Z*$xUN55Cj1`Jf4T5` zg^vi=^~)=S-zWO76n?+(R|&u6qs_;^n}qKp{qxnr_Y?ja;di0^*}q;Zybbznzfs}s z!e1x68~Y)#f4yFK2lP3Ayg_(U_|3vQ!Rh}Sg{Q>7e*t#|9KQ^2#`>H6?`tkaq*Ko& zHeZ}}Do^r{{~X`nc4fSW{?Y#3V*fkyY@hFoFu(ttXZs7)e)QK>KjhP>KlcA0&QtkZ zW|%LJFLT{5VVC&-V^_vV*ZgOo&++{e$kD&u;2gix5$!Xdg7Am0Jb_2c6SS}gks zA-Hy3gK`U1|FnM>{AacN4SthXgx@dxZsAXWBK4<)KT-G(4{W|ZJTCU9p}!x}cOi5I z%r}fvZlUM5G4wyaZ#ORGp8#k1-bcqA1qi_{{l~SR4eji$@yq-ds{S3-SF0b+53}8` zkp72_&kpo&p10cM@bN)X_?En8de?;wH z3$ z&aeL?{dfa7=f~f;42zyijQKLu{X}M5iejJF2PWVj*9X6gsL%Xo+kVuaYyaD}p?UrG z3n`~-edj7B{hBLh{l=f;`^WY9|GEr|-!3uw$N6nat{=S{0_1buFE5Gv_w3()5 zGhFEMKV0oQs*lz0!ZrS2)$eSd2XqyHeluL?_A8?Qa{l-amt#n$UoJ6nh70ZgBleqH zg7wbuk^1?+SwAP7;=eO`f(cGL(J zS~(IC<+>xvjYgE4j3_q~Q7-;J(aM{OC^sBYZX%-GbVRw>Z=#hW8BwknQEn`vTqUBM z_uFXYNJNzD7CG~t(5g+FGG^nA%%)5!)8CWv=QoqSJ~LE4cQ9|Z4p^6aUM7_(^_blb zIQzBoLe5g8+r2xgq9&d)+m~d@D+>8SiQ4u1V!9tp4-Pau-ngD8tXpdSi+Ws7-+jA( zKF0OPH4q@b<>Sr#YT^1kd^a;_&bAf{!L{`y^AGcHq4MYX;(lqr{JdWA6BK}avGAXT z6fgwW%3rH6`6H@6{fomtK9Bp~;{R;RNBd#>D4L5Ik@7!~V6c+izc9uf166 zTcc6^i&{TP)DP`;XoeD}9K*2rL9ch8CiXN+yPD4Ud~w=YsP!`a)sXqJ{qI2g^LoSU zAV7X6ILH6%h2I6v>oqqEzgz6TQTQ}CpQnGb@ELGkk9-TbmWy#>hI^}i+5Zz)`s0iD zQ#Zpg@+3IxpWjR%?-ZUB{gm))g?9j< zn6G`mv>WAT{coD5{F%=}^{)rbKK2i1e%wfoacw^?@W^$4OW?aLlobykITyK9G77FD0J&{9%=W)N6>+7cr zFA9H#@Y&7}EazQVzjJ=Q4))2XzjQ0{Ln-J8sn76{_VN42p0*F` zZwK0s>!aZZsr`n(cB|)I@dOU*me!_!i}rnVr}y69-_QP{_osi`qS>54JI$%}SX55A zhwJwiS${>mzr^|MHE3`0A>pr$*dJIwkBrB;jmK$>N3M6?6|w%=esi5q=X(FS1Lx!H zU#a>~3;c`yhT%Q3UU?3*$ae|9M)f9+&~ zdX+T&6@pvNXTti=4Ehhxr*7WE{K}SNuoD?DpSWC4x==2r%T%d6(8e9XtS-Xy9@|gP zXRlTTiBq3pm%I*q$$A4d%@htpj zd>ZBBdZQqGM#^6l?j7vU&%D0g}iZcQ?U*)}!9v-3;yus29d5H-!4*`NpqZib$uPON^Xh5zlY2{kH*-4}o+3y+Qb} z@D~Ul5&JI`J}Uad!nX^55qMbn*gv)YUK~+Bs{P&aKFLeu`02^{>W#t|f%Ex|mkMta z{g-hfcR0x6F>HH(^L`BnL67_p;Rg$k3xBfkCBoZ;w}bQe`V`>_;ZGIbA^d5=lfn-X z-YNX)!c)SZA-oHm=i|>5-VM(6e;nKuu-@4}XFLBzweNZ#EKEO))Bhsg7i72ml}i!n zEI-2{o-bkj9RfhU4V?4O(}j7ya$R4;6k3IOo^H zgx?Cz@*OTbY<+wi^m%+ZLi8uVdHg+6_#`;%|0v-VaMo|T@F{SPkEOz=!Rg=8!gopj z#|Xbq>@O33zt}$(+|><<*?&hcf3tra2LbZf`~3Nn^YgQWd$^v&@~;rS2%Pp;3g1uo zD&aA3*57%;!>(twL!Z|}FBbj9AM@9bw10{4+0IWe1(T|6_%R z?U(A>4;OB>1TbH_FZFPLzE0QIJU?MMXM267rQ(o4yJ7b;$xp`pPWI28V&^Py9-sf+ zm9gk?{LglNbY;Wx(f*Bczv-zIa2N=|wSGtYuJ>ac=4<-QXP2Cx-757oBmCXMcY|~M zy+`={;B24w3U~D{`nL$jH_rd>6Ma4Yys%Fw zblP=^k-Ofz9hLX{Tym2U!E)a zo&sn4eqDH%=>L~+J>R%TxE`;Ma+b^oPI4!`|b{(jgekAbuP z2j(e%o-c&$2Qm3^-#^apy=eci{vF2I|97B%dA@a=)c-=a|Nr&zwNUlPZm{e#&HXor z_9Neg<2T0_Kf_ACThB^G4dhd>xB;szf|~$ z@XLgc3cpO=dH>+$_X z!q-dxda>~R#Qw`8_77Jv=s)MD1m<5JAMb{j+{5V*k;?r^Wt137-+ZNVtdo!SX#x zcnqBDrvrt@!P$O`!NdAT7-#}>V zCG*Eqr2VIbA1{0tIOnfZh0loo84=qL&ESO{KWBUVWB==fe{BCZ!9ViZ&c9*(Ka8_~ zhMoV+xqr^_{N_gJ^ZLZ!Wc=JD{C?rn;GDk?lK!*%YXA7i`S)w0ugBl0=l|?q`aJ!a zXc+Q|4SxPS|2#|hPH@hzXA7Sa{w(45Px#Mku>Q^wz6<)~N#QfXmkZx5{9NH4>X-Ic z2wx<8rSKRy$NwtfZNkqJ9v6PT@OE$>e>#Qh^X3-_?|?qX_p^m}g7f_GLg6XltA%%o ze`~;90s9r#&spfR|6c?}@=@83 z_I!cE?-c$+aL$_>_=m%R5ZrSA#}93OgraG~ZOmOt$N$&x$#^0R%pG1K4=Jn+B^!|H+4 z3D-N5m`^!gUI78}ip=+~rU6Gr><13q(jMD!KE(CPDNtm6j)61VQ-#mAzee@16Y~M* z^S?@e8N+KUm}U7F@69`P#dreQ%ZP z*|!Q0o4*(O_!YK(^W^w5E&eaGf4aWY^S!Y9O=0JAVfSmo?ze`u-$JcVI6fA7{4JFI zu<^_JJ?wetNgN+J@4QX==ad{@-!A+faE{-P3cnYe*9$)>d^b4PXP+0o2+!M*e?fSg z@GlBq0#5&ua{Nz#bA7NvcoLlFzbl2Oz*&E*gwJ+-qZr=a>OY+S@4@TX7<|gh3%L8Ui0$={LTsawkv(k>mR(Y zOrC;1$2Y&TL9Wls9w_~<8~SWN?z2k$A~@%lC89qJ&gZJ$KhBf+YYd#@r&IWZ_`gy3!@YlXAKcu35>md-ANZW({{-PFaQ2TAg?EFqf1D(| z2+sC7S@Wkn^Mk@?gnvl5_kDkSQ2)ciW8j>BCxpkrIetC@9@c-uIOpfE>l1tXdD*!>&vm!F zkNaDx-`UR3QS0~4Pxt`6UKRd>H3}x`Iwv^T#x!89~b^S;S=EOAFmX??90vV zca!iP(C7U3YVfe~g>lXgv%S6$WE`0!2eu=)w(te=G%AG9BKeLU>^GVJ=)-u8dC`Lh{^aemG5T_SKaATj3; zeV(=r0_0))TZTOkzw-;t^GiScqJ147hdTUbGW};xX|?EhjCL+pBN0f{Gxw#yihg>1&CC+~fb$$HdlE3%E z=JOk#2iNKc=hr;{(d%oj>w{tC597>#1CBpDem_QzPbqM&Prrl)rv8|mzs=Y4y`b&jRfb;%ehww?!KU#Q2^iLPQ(8rgqPx;3W`v1Q&e=T(W-6%h= zKko7U*IC|Qje7iD=<lQoueULZ142zyijQN`IQInZVTw=B7G%3LQC8OW(8MZc9UtgerBW%d8 zDslId{PyDW;@hA{xoL1d&-W6CT_#hHaSfw#mapR@{{14(C;T29c_%o_e>5^6?-u=I zLmVJxsNb9B_fE+5dwTrd3Hjafz3JOgA>^~|Pb{B)Z~C*aPp;pao)oV0X(zZVpxi?)5&wItc?b5!PkPJd_Oa0w?hu?l|pYtXE32+{NI)&dM`p*`A zr|{Jw4iYoe_c8cfk5qdtNw+oWw6X3kxH6eTwoc-$a!YjgmR`VqI5BkSY zpXYf2L9lwQ{T#T)X=Vcbo9%lk6vEoc0&Gd=K~Yg@y7ztbN%3^?QgHvEdvB zLU67B(f$njALkFg4?{jJ=3$5?*--u(-OFOu)w z4-41t-M@$h4{2YD?XCK8xL5063+*56cOTSzJ?9tz@*+5o56cJ~1qi{l@;TINoc$wg zeBCeeKlj@Svrj*7!}E%aZ-ye{6T-8?EAR2w7nJAwYK-gm;tzH?CU#w7v>V1*f5T`$ z9v{zw0rC;yXNP1!%#1*$cGv;V^P`(1`tK5Bz6`_qS4FOGJGzRJKHgS*nSsK(UCz2uFZdx8-so3e<8sf?K{+K`Lln{_WY1;ZpZi1dH(t$ zSH?)Eo=c3JVcYxt`IqPax}Vx1!gW8jxNz>LM*B;I^L-lfc5t>o_v0W>2BK zz72U&_-g>jJB7bicuM%F@Gfw+&+CMDgL8bpo*6qDh?xCnw(D1i`Ii3ap?`6F47wDN zPX8E&9ly(X--7Z7iJiTDd|&qA=Ia~!eS!{fo?l!E|JgpB;B4QkgzNtN*D4qN+k_8c ze}9gT4}-e`)-%JoULV%A+`w_7Gw+iR?L&$Fz&hLki&j{!DL&$Z0NJ{_vC>xaDmkrTcQoYzOL72W~P_0bmLo#0&GLI;aPC{R{#&I zfA-HJ^x6NppE~($$A8rP??C?SpZ^U1ng5+qzQ+l_3!Llw{e<5w_Maep8l3Cj1BB0j zvws{29#%ezg_E|q!xxcqs%0DFhGU0QrAD90uUs>kY8CSuO zPCb{{d~w=&xZay;AN-T>QE)y#xrmC61`NTq z`Q4#jxB=4bNzFJ@KJCc|M|f#mVXSK$JZB&{L^AVS0NRR3t+kYG853bLC z8`1ul+=yqsJ3rTaKKSg2_FQ7LJ6BFSv%TI%{hQ@^fN#4TLpt?bV&n{Olk?s0h@A=H z-xYql@c(pWEP5_6`o-`LJP*wI;ue>p*k^xpJx}g3!+aUugYt2_e^v7l{x#wE3ct&h zvFN$P=vNqL`Cao3`ItN}`xF=^9|vdsKUMgIJdg1-;dg$}AD`4eMELEJ|I>v}g7bLx z4B=tNGd-V}O&gzNeE;ll3`{UyTh6@G;9u;a;nqJNa?3vU;G%SW5% z&!ximk@K~qh3_Z)7~yxJ{dvB=On94|&mAkgUHEaryFbv}zm6B)0e!AV62gP6?l_|MXM$Z~Sjp!H`Zp`mg(EzE}Knt;eaa z`#XL~^ux}VXIp+(F|~ZR<9aLG=fA{1{a*V)Fu?NZ_u7vauHS#yCVaN#V>#w}y~Q>E zh1Fjer+=>Zal`cI%Go|scwU;v$9rIyd|LR6rG0h@e~Iw9w%{2gJ|pXg9|-sGJTI>o{m|8LqR0A=$^HdDf*g69@Sg~eOa9Zs6W}c0PleC5{YLRT zFxPLRu+RG24$k@Ib;4(Re1@5pfcdrn$(Qvz+vf$CkE?%$L zQco4(|0?`$;oF5z34fDt*ZcDHZyNd>Usprl6;LmXQ?7WWf4`FFuPFd>{r=I#!bhOb z{(p(^QE=ApI^nM8Ntyr6&}V$T=x-N(sqkCCdH#Hv@LRz-J}(y@wjaW6(C7IiT!JY-!JyN!Nd9==by0k zW9)tY`3|M8{1C-ld4|2eF@Y>!2_KmG(L#1N9V zfwMpTTzEV9{z$(Oj!{1e&i?ua;j`_JEdMUqU+1Op!xhx@Fu-P@&-w0UQoh~bobO)l zGK_TEXBf7g=)nFq9Pe)vJ7Wy-G1TwT+$wTI z=$~8pM;Ny z{XYvI75&}9w+sIZxGSLFtbbik{MDr>`MSi^{>+`t_ha4%MdqKvdWiGq`(1`5f9A8d z=hwY8{#gDo=|A^NJ&jBM_`C24;r}aq2RPTW4+y_g^5+9m^zSa=k0O8_4T#x4X4^k$ zrwjd$>x+%z{|0cb4|>!giPNqm*P>B5%jejX^Tq#RaGsCeAbb>@^M^iPrtgOji~bn&S^qBgUzM!=7K8fj;a1wW1&PJc5Vk+o=CW(T{<1etC=VI5^Lr-YR?wlb|MsL|LY*n`7xl}%9!hJ8Mk?ykRN`J8IXHkC6Z|x|5Eq{6c>Pv8#e74u`T;<+d z=`7DewddX{*FxvZ;llch%lDf<5aIy!8HOECW_y2<{@sZAl-Hx41OLcJ!MR?_?V>#U>NDJ1-vgunMeGmA`u!ptCm$Amr>kI6KQ1wroA$GKABXerrzHQP@J|aL5`Kp( zW27^GmsnIzxv=>!?0NqiZ}YEzaeeVQmt*tnKkI+;6V2DRKZbnBE5biMPyW&VY}c=> z|ApRPdH6%k?em#=D!m2$lqQ|M}ZO}an5Ia9sWIZ#}gvG*+U{eD;;^245dXU!#>H8BwknQEn`v zTqUBM_qS-}NJNzDjwm-8QEoD#+)PBd`2Eq!n~Eqm98qo}qTF;ux!B*Ml_MEZt{72n zETUW`qMY}?(aMpCDAyfPZZx9YWJI}{h;s14y9Wl8c}XCqTEbGx%i`_l{XbpZaAXcL`1pih;p&VL@P%! zqFgbe+*m}pN<=wtpJ?SsM3n1}C^s5WZZe|WOhmc(zR}8?iYPZ6QEnol+;l{_*khxW zBN7`D-<*RLw)&8g;HO-Y@(&j#~0H* zTg+MY@h2t{ryk#9d^Tsu$Cj@zX6$LQ*M8NZOO8BhL;HrM8;;&^%(64izIt2x5mzOS zJw1Kwrsc<;cXh*`OSfHhM)K-ySEY}A-tuFwG$I?0z2*g1FFgic`$4<;UA3Y3{0j!o zO%LRHR;SCk{u_?9DJyzzc%jYbtY;;coq5KF4Tl}S;i?T+Z#d`d4bR_j!-jzk<*SXY zrAv>WtAY0R4Fkt4J^D;Pn6p1;&(WW4?T4{Os+Do<3F`)nMgKy@4bF->Y(xKs($%Id zY+06?z|@sg>eWk^9(~wS^E-N}sd`-L@ER_uR2yW~kZJFMT!H%qt?)a*dei<@o=TU> z7p1G0Q#_kk?G%1fR{!PoFg{=8{nFnTyg{Vt&pnlIQf`RYv0{I;x9Hc+`;ptRW`E={ zaNaLDz{k#iY2PIfl~XQ`{CPc}&ux+?!1+8O-#eYJ{9X2$e^Tn_Kv%{{r=CkJDrftw zM*jQ4Am7U+U#RxA^Rm5%d-uDps};pQ6A^!W@Vq}dT9>nWDTiF*XM7{Wzs^<+kh9m{ zZZqlp*?Vz21LSO7s=Y<~wfYxiuQNc-`hBxW=g-#pcz~SEcl9gl*9&cYSA(3@v-MYf zhUAHSgT*gz>QRRX6tFvA-AZZyjE_v zkxRf4>p%NT$4~0^tbgrK3@-1YhJ3ADXMmi|XY|c=d$u181<2X_Tgnk2SFKm^Zze#_ z+Ef2xPiiekkblVlxgh^W9CF$Zb_B@TeD5*o{8i`f*pQb*0^7reOTOFO|FT9d9w65% za$`nL+t=FbcvHPSY`o&Ir*bn6Ilb;4+dtSpl}kpHD@K$Xizrud$lddb=6YUqKx;W{ z|LdNq*Pm_2jsQ7Zuj3+DG;$p#-To}+cvE|05$#O{*t5@sEk3Z`uk0~5W#UPjq50XM z?V0_<)#$qu)i6Hhhhxw1)4Ol=hQFw#e1e@yJGIAcRT zw{a-HVW2Qr>d9;<6wGpcL!sDnESBcgMc8pYMNG@FxSwz0s`jd%iNXD=VR7T*n&RA#K(L))1QcJuW5<8hvzS)Ox~PP z6#56Uxngyxx;|anoGGs<*qey{-zLQ3_JUr|v+Lhde>z`v-u!ccIsa*lU(#UE$~4Ap z23((T{X6-`JzM{V$)ihp-k*HCd>%1ooiRW1{lNJ=57&?6i@~eMYNN;XFZm(hcI?{U ze69ajKS|i<^O9Vj`?r5ZT@!tvFn_j4fBPqqZt#A`>s^m zz{**lVvFnZij`|Kah0=eH2JprJZjGgQUP+-o*wTf0_1|$U%LY2tUW#M#tv%r&&pNa zQeVGX`$>nK`Zwf|YyVumy!Lo7VdR32yXxO`fIVBUL*J>}v+WZ*xOH7%H1;JA*btyDI*tD4n2-9dU9~SD%TNFE*l_c%UAw${kUuEWz5Kpnb7_k z%d5xTT}DoiyHkGD;SlG*`xSn{Ji zJ>CvWzRV9*;_3S%oNvh&E$JP$fAf09Vq1~sN4^-mI`&QaK~?JhhkBeZ4-x%?-KteW z{hAmOnBIMG^ZS}dL6AIoxL=-sLVCOKPH;On*q^;-Wq;Ja5&Lb~K5c(T`$3KC``*o0 z9UX(nl-!-sCo;up+Y_E%ikF@)oC}70@sCha&u^f0wuvC12VZKHT@8{dHYLedd1?^jZERBkD8%9g_cY=#!73e{%hF zZbbVoG1?_(oM966$@1{|X!3T9zsJKs)aRpFUnfJ~9^>rqY(J>2NA>-U)4*K;{R-pE zf3EH2s-LL&-?qb_Z`j|HE=8oXd<u(72D~~s$F2y~x?=r*u8S3}Q_ z6p>E97|yl*$`~K?XXC>xf1SU$e-!KIMmaveLhA7*;ja`v*ZSQK`@Bx`sy(b^IjG>xJRNwSJmQRgbY;oL}{O2D~;<*J%EW`V1GUewuTw$Cz(DrTH&% zhCjso%K7aCh?7qXKe5?dON@G~zX^Pwmg!G!(P&PfTyttYMo#)74}&-`y*ed@!{vv`Y*>1!?_;6mtp*|d^fgc z*_6V38O}ieagZt?B=>MVhwIy-@EADnr#x49T=aQ0pZ4#U{WUV>)|MBWEc@doDtKU_DK?$fQ$+ajsL;arEl{LxWKd8t4 z>pH&+)~?qp?Q~%M$MeVML6Q7!>@P(Ae3xO-bBWPz7-#uhxUfw*DIIrfzJ2!>kgS8 z&XN3+;QJzdh44<{=Lt`V{q@4Tz&U@Ug=a;7oA4qy>+c5P+ralh`b&h5fU|$RRQS!{ z96zrSKHK{X>>qqyW&-0F=39b2m2WX1elK*s90zkv0i6BgMZ#U{7y6fl{u7}0VuY@Mdh8Fg?SE12yXv3$yY4@c>;CWOBV+Qg z`O$U#oceov{+z)4!1Wc66ZCHfIOi80=g1ej{dOXM9^ZMKWBx^)|8jkLhP2NZ^f|vi z%hhp^&i?5VBWM2G5BJ9x`~Pd9NInkEtacejI`e1f>ObT=5BJ9h=Z%+%ooV4O2X_UuOaFI6|8Ye0;@=?rPS16x5ST5sDy|j5p@cN4e`!;6Gu0!@^PT!nYO>fwT z$d8*08~M4_OsgqXzC54X+;4YA@_hYN$z!a7-scC(BV?I;gJ<0Qsp0d@`m|hma^k6w#Ks|3B%vEc@Y&LVUdD-7!f9|=1nH7aW zQwak(V;7CFHCxDMs=4}d*-YBB*ChpBuPPVH>3ltE+O}jij4I>@`}{MWe7Y&>b0fd5 zZ1%Y_CzS&k^IU&#J)uFLBGrt2Ip1(2sLFR%om!DGt!(pai2C`hw@y}Zl{Z9vzHV@1 zwHyt8`}wtkayD1$ZB1^r(@-DHcIu$XPCeP%m{0d_X^1!0$KXa=`?>zjrbe3TqXAUy zqM90#>-FB4ShHg?G-aw=xBHEma<(RWMf0lkdAUr!cXfJWCO=S*UzW}fnzv&I%+6s$ zn~ZSQX2z0fZ1(p}>AqYZ zC(wn#az59e@dmQ#UfW4+?=mm=8V{;_oMrkk@0gv{%GF_SZDYeU)8~zRUv(nz$KOD8 ze=|Ei?VM#pf4&;1=ijx-CRgM3&zfH*)!3^t%j@IO$Z*h`^Z~mQ+PZ8egOTWuQ!7*T zV|5NYu_0cyH(*{_w*?w7Q&PtK-?;CZ8RWU=nRl4^Mu#nDu7@$>hZ*yinBl-VX=^E6 zT;DJc_)q;_m$|@JoAK#dGq2?~UBB84tJQwJmU8`D))&sp`40DG%=;z&(6Yt!N`4Pr zYiD&E-<;{sluY)e+~%y+fIU-B_C*u>wso$5urOFHSGiC$^=qbhbFszrzv=|im+8$7 zns{$|AZw;!o8Gg<*vY1IRr@|)32Nris=SS_EZF?4p83mHl=blJWb!&hg#O`FXiGqd?dguR)~rHt+8wh-oLju*aw)wPqe39Eg;Li4Nl z2W-mcCwt-V`wSFq9h=(7l>74jt_6MRYGwI-$MjWGt2}a~>xZ^#4x0w^`K`I$a`wV> zIlaZ~C&+x$`AtFT{RPuTrW5fM`Fv(mwc)GjHJx}PKR8! zLC)$81;|%AZP7${HUIds;6YhqRW%%H`i)uNP}S8z5)w8DGzT#h~`)B*#u#t{mNXI)65O(jixz z#0ia&vG%6|8}FpY-pMx;(Vp;w!J~Fu^ifNlL2x;?XfFB&f3-f*M4Z-Kjs@`uPZ<<$lmq< zxgdKx1LT72EjldNznf)#?r_LyKkW{X3(9vaK+cv!^Q}1KG~e9;azXia93HK_S%;kF zI~pJtlyAi$H}d)VIJf2ZmbCh3?G?Y$JbvQ=azXu|Ge9oLzY&L=&XYR=Sn8LC(f^2gq4@ zoj2k~wwA-@)AnIrVemYAJWe^}#!NbY*6#@u51S{g{h0=PEU)!%*Y4)_h#l4H-#;6< zq)F$`t`9~7-jd;i|+H$-XO<(?Qv?gN$1b@gJOVOwVvPBTrb-la@tQP8|3I;(0XH6gB<;{q4vMn zG4=9N&e~mR()ruZ{84ns-Pa&jU6(8iu4k>kqLGUu1LkW(l^YF^v*o?rr1NL}oeGe% z_Qu}XT+gv%Tl2N{k|v!$d(FE$K+f9Jep(5Tv*T;gadmsvzcv$((*L@QT-?apAKSN@ zZ-YH+f4D);a<1#NyyFhJ#(rh(?QD=^zBXOov)^sxk|y2$8uQin=R1$Dm!nZm-=7~g zazXW?@5N6z>@~ihZvEZmkW+iHM6iD)Bgzd$lpBvIHx*HC(TT0)u>COkz2@U!(#TEPN-@8GR4*d|_N=_t z-;RiKyCTZ9ozz;6pnN+c$_+)78;>YA6;W={$*twEbNXAUt8~|cHEB}xuAJX_s^Pk3%aa zMlNX$m|tW4rOp`g6V1PNzUngZI8v(OOZ@#~Qh)UKiHZNl4~LLm{0sJx`JErmAbke% zW00R{_wCI5339*n!}g_q`o!P-c=A3!97B2$=`(-u)7y@QJo24JzKf25pZEK6qp&jy z`NUt5{(C>H9O=uC!p|c7?0}yWyM4I?>~}#vhJ3q`o;?Eo{2BIV{IK&VKYa%Ij=}#) zq$gm18uHV$1Nju>hf%Hs>?a|=8|gFfCxLPmm-+b?VP_iYyO5qh{ZFI3-N!;6=}EN9 z6w)VXo=h|VpZv8b~_6}PA=4%?0y^7|OY|dx$s%HD@f9iy0KPS)jU6j)A~$Y>9kj`PgCyHiOv3XpW^GOJ^I7^7_W$a{7hfJ zdu4F`s&D&=xox^G_q>d41}}9|vp*Hs8(kIIp4m##JV<07Vpll|E{JT8cR#C-L0IE;Z;iiVzjy}hu83wobxN~;6VLMXBDbgLv%OS5 zb$PHqsZ*Qtcj?C+{j(BLe?rC``=jYk_NfRyqT;1aYxbvdn(y}{#xea%Tozm&YY&g6 zRQqQ|>``CqC+@J9>S*@IrJr=vZ-x5UPj&dK`&Z}vX&jg1mmlmO2fF;Qa)}?taXjui z9r;5)`53?4si*s44003eeZ3SyZ=D|>^?bQ$u|q$opZvs;fqsm^PWFsuKN6JxqOV6g zE9q>YB=g`g~{g9wCJSLhAAPOntuov;dvPBHbmnp11u`U-ysF{jGHW zsCZSouJ7ufw6FU|9VPm@e-xkHpuX-OwN&(V|EQzET><+C!?})seg9>(D`TWHUzZp; z%dh)Kz1*d^hxT1&m_I|^e`J~Dqx+8>>oP2QET6u=eLzHg`Zw41)BU5ah?u`ijDE3v zy8p?+P$Yk3e(9|q_wBV3`-@lqePn)N|Cnw6WIxp78}IUv>;7WHsDEM6~Cku#j@_|pB8 zxc^OauJsu6t*12qMb7z2_fI+q;^cEZzU%&#CpWv(5~F`D014y_=UTtIztVi|f5ZCI z{q0V270gjS-QQ%B$m#wln}x^P{o}KJw#NRleo#Aqj)U80ne5NJl2-k(es%w*YlSDE z|3sv35uOC+d3j!V3jFa%H?N>nf6Tud+&&9tfBxHU_4EHCILlY?#hm}ru1kQNq3+*w zu}cx@)MNX*&aYf%sLxRMZ+foeqx&E5y~i;7bLA|bYknZt{hJmeV{+ZU=@{Xi%78 zphvFzcU>f0um7xdQ*X>r&x*e7a1y z9^WnpcLgjz!ySkF$2T6o8t>s-8@fNj@i0t%-M{Nf;kthp_dlb)?r*a}^mYF(?teyo z-M@?bpONeSUEKeST=(zlmi%@9uC#F7ziXp#-M_0xxbEN83+@W&H~XjVKjGgMtj}M% z|4b2vsXyEKhknd;{iyr*oarh!(wQ&Au=D${{-ygT@#!$y*Zq_DlnS|P{Xnk!C*k!` zXDO*S*Y^cQ2n=7Kdg{iLh~QQ^k@6w{(Sia zh`kIUx$Xxv(rm6JruG+l-!pZ9en-uh`t*CQ-yCtBe$jC9&(=<0vux<3*3UnJN4iCz#ff0l3e;r@KU{fS-}QJ?wi_t*}TawcKl zzO!S0hx+@B@b$x!Ga9y9D zFI?B>o#3v3Uevgg&mXXhPJ#3!?w{xoQXE7wtF;hS-2RgVE@Ha}-g{}LvhKP#6EkhA{j{tn#%a*r``y1&CnfSk40^4^|9PWR>T z&T1`(wWs@Xv<1l7b93F7BNZSQ(hv4Ko39)oZ`9Z$td-;PUFe4e@6M z%jv!iokp(l*(JW$(D?qLE&p(Xy?ssG%I#x9-H&0sLC)&Yp1#*w36Qhxq5GP6=S17r zBxU5{M&JIJZ;*e(0diJe{TmOEv-WhKk7*;P^=HS8?kA8;w)z(&Hyj{m{nPO=86X#A zZze!4$X;T3H2=B-Ot&#&jp^4fOO zeM80@&42k7~U9dh~}@6HHvHlJM% zIrVSRnrQxYM3l=$l-nLrZf8Wf-2rm8|LcASiHoA`cQ9n+;zr;8{!zP)N0gh2D7R>B zw0t`v%4H+UZI39oGosw?069Cq=za(7sn+sZIo(en6(DEZMaSick!!p+%JZ4~WIusP zBNsG3>wW^e9r^0GY`?g*9M(S_Z^ejmV-e*l4mtJDyCm2@m1}p%X+3utxuAMhdm|C; z?TBb^S44Yl>!SJBY2@Ojo$Rl1oNIZ9BH9~|Xm2W_y+!MT{nLJx2#^aJN8JH(b{(eg z|Bo5Dq^%J1v%w7BYm2?he@`xXiyvms^xt0!A>ZfZ`=}aszmIQr zPA_G8?H>F6o2##AS6|GZlKhH4_w(WVrW1c@&R6s6TGj0DD-*tX-{;@qRzvz$t$j@i^zk~B* zd1~eFY|cN4{xb24X!=v4pZKA#7r!T(e%A%f`A`1L*Gv66n*NmNPb2@-e?`;pdUkXE zG32l9$NJLxn-YC;)%P6zr|ZJz{9XE^GLGoaR7Cy6AA{?oYjtz}@t^u~>i?J{|LTF| zAN+$uPwn|my+3_|J-C@4?+5Aq=~KXcsn&mKpJDgG{`V8B*Px9!-+v|7`@4Mqm0a)d z^8HtGy}!%%U&;0UF5iD`_1sUPUKpob_J_U0_HRBv&gcKhhrp}%FpM0Zk0l=gk0C?7 zKR+h+d4Hbz6X1IPoqQ6U&o>SuAMy(LkpR@d;hww4s?-YKk@OKH<=Ou0xJ}&z226qLlcZRO|4bu z2tP-72RQpb-*2J)PH@g2Nzq>q&hfh(+!fI7T={&>pRV=CT>WD?!;Wvdf65kgbn5H= zDUTv>I2eL!{ld!iI&9cv+UctL^QhW-QJ+UY4*s$|biacSArErhPvyhHbw8B};kuv7 zM}+HsDjyZD@6-I7aNSSkcHz38%EyH3ekvaq?mFJHesn*T9ip%MseDqn?x*r8;kuv7 zr@>tT`vJq-G2VGRSOG=yNtrKJ3a^0kc)3dWG&tvz^IVRJo=c2=F&uyIHN*CAbX)I8 z0P?x6XYPgnkAXu+iTyFGN0@&*Gj!~9hc9~2)#xc1N%FAcnLf||`C3lFf6#6)tsjRd=c?Z@ z{V-1Z8&Llozpn=%*ZnX)=rW9S>bb_2}JUIgd+J%1HG zEc}0kkAic4;RM9|$H2K>d<+UmuFoIWpPE2M60m+2y8kbWK3C{ZcrPP;3X;;%3CubNozAIn%{b&AtP^A7eIQwV6@Lk|MpZ+@>q5f{MUl9F8 z-|+Ki{S<|_f%AIXbA=~_mxOnMvwQ=>*MqbD%EG(BIX(u3=fQctcAfCqu75bbhG3ud zyA}4yM}!Z7vp;A^%y6ORKiUuL9}AtozEAUK>7PYhPhYcyK9pEgFJb${%)o3LAe*ru_a*{~xG%68y)W`nMbXpXWy>Nd3er ze*Qc@ohZB=oa65#;T_}stAlwuC&!%CAgT!3lC!x>reIW$MQ^HpZ?*`}mvPO7O_(j5p z!8v}`3Lh1o0(TUzc6_2(9QDWJT)|EBOsv0o8h0pB0#{~`PyaL!NP5tbe)A&#ABX$MpK{5d1#?4t>w%7}9CiB^H%a zPWM|Jm3+dUx7q$}fBxe9|8vm~TYtNrR|zX0=dU{tXnx-0r7lJB%O%EoVd$!#F#Rx2 z`(gcS=5D`!IX`_6iqv<_Ut#%&aoP`CzlN<(_xAcRY<>7}U;mB$!0#ViUvQph`%Qpz zeX&0po_rFV{fqMu`A+b~(BnKyJ`K+E6Uvd#fb;lykmTQn^KTx%4;Jp>c|#r_pDa8E zekju05V`{T#rdNH`po|+P$cgJr~l6s-UZI%(-K$4NN4^G7ccSKkH^O+1CWQEAG)5m zq5cH!ztI2N2poPAv;0GH{&O@0$Vb3w|5V{waQ46Rm_bPX6muOvAFT7MyHS5UzP$;K z(Z6YM_MbNkKlwTS@rmtwfbbb6n?Kli`yci&pGF?A08 zLbjgXkJjfY^6;1EqwkdR41sgJzf1TCIQ!eJ!ncF7zr9=dI5_94_XxlJV}5(lzxN8? z0e!CL$H5)lxpux1#%X4@?MZ#tcnQltjMKjESG5|76boCA$NtkFPwYQ8LXrA$aQgpJ;T_;SPQFZd3Y_Ed<-)tb**`~wXTjM&Um<)* z@_(i9QQ@x=J`T?E-30Ea-pKuTq30XAISv0=zaNqE?E>fg@loNs!CC+RCVY{sM{XDH zTCdEt{;Ynt%ZN#b8=h-?lPBOm>t|a0cdZu|y8Sr5b>CIy%k!-1_xRUa|3Os*qKAup zm!E-!GKqUCPdn@n$?y5cGajcuCH$Av_DtK3z@6u9prMz8#$Fl_kQ*!8v}9m}mcY!amQ> z?nA*?z6vv<(UkX12ob%JKgtvopeEeE?2RPgJUg2TyD|SMk{r5?t-vv(p|3`Q)IOmVw z2+x9Z{Qg$>kl3FQJ|gh+4tYm&i# zP(PT~*XavwpMJFAeMI*E{V~5jSozQO_^RJ)yMzUER4_5aB+AeA%f|u8yTCbqJ|R3S z`a7r?lD`AD&R>rAX~XoxINh9r|2&_+OUgF`&hhtk;fsFa&!0TLd_#B}IOmsd3U3GJ z{8j-E^FNH!Ob6_9{;F;|Zj{NB;OzfTmGws_ILr4m;ay_?5aHe6>_1NzUIb_TKSOv@ z+W(otN5p;{Jgk29l(W8E$J0HvM|s+1sPpNbUjKc#Ucb$hN`=z8^7Z+QUo*MB%$h=P z#w!#vrF6MaVtu9a`NGz7^XdLAe#$_$uytjrP+VEq+HX^A{DS`CV0leuU?9C2*8KEU zHV;X!=DR*uw)s~7Mn=U_p|4o>f&aG;HWf;JgZcCc5c3c}(Z;uC3v}P>&Gh8@(s?hR z8z@`Wn=V&M0bUD2RY1wpsQ)Arn<@sWk3YIsYCZywD1 z7A1tb83C7o!e6h`?jH!uIO{5`C zk*eW*p~o-0pN%blF`vHP%N9zx=N0

    HLaJzcIubxh_*G=Xx~N)KeziYwB|VX1vX% zT<_{!e})OQ__|EBod%2z+d!Lg<@JTjbG^2G?5`T{%;Yv_t72Z!^sTj}-V8hD;6Ns2 zb`~=pt;}pn59Z6rpeK{huPF5O8E300)jnqa>NWj!eKym-);MnM7ffj5?8oVWm41m$ z0n_DG{cL#DL$%l&F$^wRZu+EvzexwJ>h4XTGQ@^%!rhK{U3gzlHZhjWN{-yn<-_$Jh z6!I6a0!4ZM6bh3Z`=#+u7W;rJM=N*|ZHzAKX~VY_)$i{^G%Oi4AP!8{<~KF>d9r$fP;^s{S>`t$btrdLz5Ou(CP}UuNzc|I^L?CnU`OCz$_@p!uD&+}7d%!}Cj~CQmvq zpXN++()v<*)23X{YCB^LoZvObPxMY&m)mRy*h%ZI@7q|w;InoS_j57()FPiAQy{4`&5U5nXn*F&dTEgdQ4_cG!RkVq!`mG9)5VNYUU}K_b*WV= z)?c$??M3TXU9`TcZ2qaGUtoZVuU)sMW~eD&qauUJR9divUnRxDq=+NSsB zuA^JtKw+@dlUZ-(H($e#Uy|7b1AcsMb+)bQnsJruuO7-wb!4i3Uy>;fZp45t+JnY& zf8O|i?7a z4^4#o8^vd@o!UIU(=1{%PA2DeZ67roEi+Y(oHiq<6_9z}>}#-}xe%_*>5O`o;-h9) zv_~drQ)RRIP7bTXvd=N2Ysh#sZn{afE#YOBrD3CY*39bRnxXCmc3m_vqXiN#vII*i zjXhK-oIhl?N-~bm92qzAmS|=()1pzy^jzWex$%is91NRHV<>3oyM~Ib2AUZg9i26b zWq)XU$40v3PdDr2==4QqWs^0?j3?P?=|HgUY?k)jL&MSsb}wko5jC}uS}INVomZbW zX*NW$>Id7+z?>_DT_09pW@z{5nME_SCWj`>KICfS;GEc+3xiuqtVXk5jpk&HJ8OJ& z!t7Y=F4C@BVfh*6I8y^+MGW`Frcb6vXU1Nj@gfE_($1M3-4!Yx9vdCL+H6P)#>wsD zW)0B=K*p048~K^s`0(tU`9tKVt;*A67c)6&nn&wAVs|-a%d%_qVlz>o!$-`zI65g? zF5|0NzfV{Fc8?p?!))e;N6miOG<;~sgzub$lG#U1OC0Pl^PP#9Fg_+n%`9Osi4E~- zXyV$TJw{6Abjk11bw*aNF*82Hvhm3|*>RiodP+7=GIeYwWO#e;~$!5k( zPt&7?q4DWxrjmX38D>meFlozVd`P@Y8s6}z9@Fk&)FoQdUMm}rbBx|^htlpu1f}o=>rO!9zEz}ovyqM692i|T-lMYXMyIEu zT)3YazIy9aLCwnkW%%mTr_A=$-UzB+=bF%;Fv{U)m^a2%|9PX6b5?_lJK2v)O~*zj zT6$;9Y&17>dTXO3_f->HbTTxeJLV?CF%3U{FE|?{2%PuozZXMbw zU27Z}xnOc)kBnuxI~!4|%s*H^M8BB^O~t|p%Hfu3Xm}_XnLU29;3Kosa&Hrcy-AM` zWlV0`{AFmt_M*%!CMwPJF*Gf^M0?3RVMmY5Lvk{;EsxqSdH*&&Dmx~#-n6{1e7WB- zXIjsNGqx#`{3YXN6RtOGlD|-8MPhg+oNjHrnR#|%YI3KnPEuzs0JHOMfO)JSme2PBbrAIN{`zf|E97iktc~!O6#G ziYJ=A^KqHuHx*Al$?U4_b=+|$9$)P558F*j!u%;lfnLWQ-=8Up5b{QO@wnq#gyY2E zahoY`V8`^-b@H4&Im=(aJrwFa+NogjX_Lx@{t(_mj3@nAbMSbtyMpOjC$XSey^UJ?iW9^RNK$0hAj zaPXv@-}|@V;qmyWIe6k9$6v6my&hrwnsQtsm-X;QVm$G;Lhs0ya!8^c|FPm~)QvX#4PwY-yndB8sKCOa+V;;&qGvbLK ziw>UHS&r!w`G$ih{vB{tq%Z6rlTVv+x#D&k-;Cl=s>d`agw!84;WL)(*cp}f^DCgnz$KFRQazzJE+J)DJ1rLwM zdCkFd`M2uf@iAF&6#ps z(%)4FPvjdhp7^`!;K_J6bR^Ozan^70xcPXXb}1QN+VJH9Pu79Y#`H-(GwSBuYRYjv z%KVYu(aw|lWzLG?RMz*ZgD2y1`QS*O)VFtMyFT$VwIRvtcko=}t>EB^K8}~VgD0QO z_l!k$WnYms`Ls#pLi@S&EjoDO-)BD`%~zto;on)c3v^%xWwP!h3)!; z*JsLcNq^)VJduAT@yZ?^?-Q3iJnoNG2k+6w?%`KQ{z<-S@@bRGC4R|zB;{KtBHlqJ z-!S>KN#z316{qE0?L6tXHB*jD+NE!@ohN#?nQ~mh8*}iaoi}|ViUS!R6$elBak~Ul z?RLe#Y%H!M-|yjZ{LMRfVt2)qAiV)9Rgq+S`5PphEFA^vj2 z8}#sayp=pWj=!pdC+pe5T(s^>e$~S}e0Ri?xX)het_Sb47aTlkf1aP~4xY46b1AYb z?br11xLtaSZvVJl1{^%8UvqP0SMp^K?}jrYo~#Q^2QQ50*nOVlb9>zW@q45T4xY?o zYwwHVS^BNw;7R*&eVY!R_;dJm$vEvd`LrpQD;}qX8g{MrEc-zZkNczK;jw>J2T%5K ztEL=RxUYLryMI!Ciz&w?`~BehcAnIi=e2@^=W4$N2hXK%*~8;`vgzQt>}FovUJv0N z`1q*4lFxg1YoCtdMf@!~c&_!M>fpKjOTDDsKe5yQxTJsm9^P1tCvt-hp4jE_QFQQJ z<73gmbJb(b!ISZI%uAzs$bD474ccxV@ikH%~??+R})#*;kSZ{Sf8Pvi<7UcA22&J_ob<0{<$Ie229 z=e7PfpKjYdUzMFTM{Gx!zZ`*MoVI&pLP_ z&-=B!gXh|>l^r}+JytwC-k0?JX?s0H-~1P&@h16x53dqif2F=T50CW~Jv^SD%MPBz zU)7Z3694KR-hDBi_}BYtcYT9F`#G8D4Exc;sZfd>YP^4xZGP=iOxoFO18NMe}obU*O=m+AsUM_IilEk>etLGJlo~FJn@< zM31Zs;XcQd5aVIK7kwO83o#z*At}ez zvV+H;*GfM1`u2LrdR8*!xMZJGGx-%QfL)R2&vkQeXxAt8tC@0KQop)`CwjSEQg4j( zp%tt{JiSmiCrG&sW-Lz=c-4}!ISpR+!U>Y(%)sntC>`;2dZ!I=I-h{V0h_J zTcpob--3fD?RT>&$0hfDbqCK?-~P9>+jaF@(ePaT#_?Bk=o7mff2$6j%=hUVqk72a zIC+ytkBc7cV>$jBhL<+DT;RFtk$!7?J%k^>Ul6%L!%Le~F6fgq6T7bvUa?Ewf``{b z`j$LA_HU(2-ddNu-nY5y%l`Fyc=vr7y%YrDJmlfUzn3BHSN8B&-%^*n)h>CxZ+F*s zu^EkXsYlN6`b{cVJPz2ul1Cr&svaKOUG36t?}ED?YMro^XZ0nM*2j5zsXlfpOlwkJh8iI@-^a# zeXeiQ@Y2K+yR*NE;!pJVy{p}>jGH{g>6qcAO}SjCujsqUl;aY8HHSXoa~uRWwd)fe z$3e#MI1a?W<=;m229(^1ysrS3}F)!OC zui)Uh##_a~llpQyuNa=IUD&^#o89$beObeE>0@5e!ISy@7E_K(;%B)_yFGv2o!zX5 z$8k_FytFzZ?dF?@Djt2@eszyN<^>;c+hty+OJ2T9UfILrcBy%I+`mo3bHxGIBmKed z>YMA5SL%{i?UL7U@MIq1b*p#LJr8kx^M>b&E9RBE)_tJn`?;Uq|~y@h|n^_IkMd%Nd@_KaTs7M<4gw zqJ!s}pI00_@%zA!MDw4-S;pimCY9@f=AokDaXrK?@9!54FD=T<1${2wii78Bztk=5 zc3u53V0h`!YGl`?Z{DF#c-+oQ9(~MP_3(JUO8-TBJzREkhSya+Jo-4Umb%op>d@!v zx89Gs{bRcWUGfSJo~wT=4xX!j8-^E;)0J~4OTsIcj}Oz_OEf*tmKWY+^K~s>*7Eu* zZFzpirrGmV&ns-+`~Wi4x1{Aw)n8IQnF}mG`v%J^U2oGxEw8`P<|{9@X*y^5^_Sax z{TiDtXnFnyo6o$+rl}XGKd-m>hL+E3dF@Yad3MgG!G)Hef1S;zud``U%Trq4n%1kS z<+WE^UTL>Y$F^8Kjn~?IeUD8WTAo#YQ|%6Jwfxd+EH7JBIW5nr|5f#W;3CVfX}e{# zeQH`BXn9K8v;Sht&#L~~wN`&s%bVK2m6zJ`zDq2>tnHsy{S_^*XuV2Wuiin+&uROl zG#<)YUeb1M&RYFFms);W`>UqyT+;IDTP&|uvgw+Z2dXEhdJ30WJ%RcYs6VS(UU;*W z&#IpM<(8k)I1DrnS5W>c%P*_{xowtT()MgN{a;ppa_VPY{ajLhP3=}SelqG$R_)d`KIheLM)fze z--97*x1{lzQGQX&v)ax%ZRe(z*VLat{U6(I^;9*k(yG6qpWA?@mSOH%+JpW=be2`Yucavqt;HhddezSh1}(Rp&x}SPq69s zhg-kq9v!BsuiNsB=Ih5={ETOAn;73-oY-a$lG!#jWq!%NZD!ZRvEi?CpFUi$&*w8c z)IYV;yvpjUe=4chYiH|K;VA(2#Dv!I2j=%NNxhYRt1o*~*Lvl6fEwcgO*&E^abb6^CHmkFw*x4hNrD|Ff3nX#l_jm!5=zDn}B6ZTF%GoG|x z%I%$emE;Rs_D(+Y!leEDbN5cZO7hL~t$g+`Y>N1PfH*vF)Eq5l0P+qaMOtZPPh6>@9SFc=INnp_2d|HUoesMGo$rR-O{zbb4PcYGlddb&G(>4 zZ}T*(FQ_E-=6&(8?KN`Kb1UUR(B?6j=0a#cxR?)g?vVXQVHryAO15(Y2OC$D_9fRXIG;<74bfR39{HR`` z_4;JjeuQ>UH|MYIG-rNIj_9do>WGXVIbQ7yIWNeRnY`)$=wus{kNPhPiy$+XY@gaG z>Q|ThjVj4kF1GT)$GfhVJ@n1&vdj^!=66>~e=?h`p2p2dedTW?^R0P|}g){pE5yY}ZC zbCz1`V7|PpXo9;90*Lp7lR- zebRpJLR$~EU-!sYNj{_dJeJRS{Lj2NX}@}b+kVYwpX3WCS^360lKqkK*f;ZIe4ia; zUZVc!{cP#0_CB|%_r>KK?emY!;34*YSfAeo`aCc7(xiNP>PUN^yxXSGQ+bf}5BjQG zt-g%vuc+Q~a9k+gB)xm_x5td8lqK;JJ+!m+$Jzl_z}LMvKdL5#$;oywm%E#x`1c`Hrew+g0A?+W&`N zc)wY7_h{(9oUJ0)E0h4d^hNtVM)((fif8%!KkMIDdFc5=^*`$0n6vF8-({97)n)s_ z|F6$ldHF0(u1jswijVBSUy+EP%Lre-&dSSo;N`m9CN23D#SvfI2wx@nD+pgB{7S-m zUX-l=RfIQ>u<<9~nU*Ub{vWjb+o1A@pCQ82ia$Ziw-bJ<;uv4&5k84=`gcSHf&af6zo^Il8XwTV-uFB8Tx;V8@hSHz4|KsU(*0e({iWYmN7M`PmC^YZ z@%vK{JPH6KU2p&7Ut;@5ep4jZd!g87+x`cP^qwQ__{X&PIh6q3ApG-f8j}T(L;F;} zWY-^*FDB`2Iq=#5EdUPv`MZY`^Y5`*5#YBh+4tvS{yLiQ<&?!SKV=9Hj<)TC_%m6} zzgO1_)c0eA-%9;mCH%(AtbX|Sal&s>9Qr>&IImZqBz%qhyOr=j>yP#LQ-mL=IPCu= z;Wuow{f+kfE5gg_zjkx5MEC;L|I>u`s(r-UX9z!>{QGOgeF@sR6OR60*l6pA`D_=( z>!RZDZweLl7}#6;Yr38z{_tK)_!nHC+|L}Pc7dl9hum$1rxlm+BiCcpLC6-$rRaz4T3{fiU1?+Re3qnOs<~*u-Uf%JHT!F@g94~l~p718+1Q} z@&6{mf1&pq;J=yhw8|qs-a>draSW>)3GZ}2S-HoKU+8}c$*<}AT!G&}c#pns67l_d z!fUD@^Jj_he)S*tTM1v&_CfvLrnoObJ7RopR{bb{y9xr|*Z76LdA*;)erj9+;0ual z{JxOz3gK51zTW-bBKbD~$2<+#0dB>=N4$kYkI#SL%NuR{VSMh;jt1T!d?y0I;{fE) zziTRw{nS{O@*efA`ayqP=NCCEQ?5ViQa}9kwU5=-{y*ekKdbh!J{{Sm{dUc^g!SKX zt6d-DJDhTT#3rrzd4KQM3wpnT@$()ysD5w)80m(?ZG0V|#K$TCe6VhD%+I}q59s^> z`zNa&$mbNt_60F1PGWYYf&b^Zk& z^jRGHn=OQ=6i54RB|J^?7ZHBH&d(Ts7ZaXQdCX6j5S~>W_XmT7=M;a0w#TJ}^ZVQ{ zBfOyUsNdy^dz!bkzIMXVzFR+M*C)*1ul5OQIpi=teD~)*HIPTzf0XTCwEqvuj&J|n zNq;9C_Sd_A@I8jcU zVf?ke@a9nf{Ycl_|Gv-TJmy>e!~THo->|{gldMeY(F(dFYwf{o%t^?x6|*Ur-$DQxD;b zB>ynN3s)tdZ}oNQAL_S6_8+eLfv>my*E>E|bbiME`l>GD5A8dk&;N1%`X|(WY3*P1 zPm1u2;;{c{!Z%%M+aL4aK``v;2f%3Gtm=n<2ZPW--UGMh2k7s6aq{`f%YMiDxBl3! zpV;61s7w8zHNS7=(Y}w-iUIFku{hf25MRYf4)yP+&u<>rr9A9+`o7zk&X2f%K1t&f z^0}j}|A>#LDFA$4pD&>Ojv@RO#W8>VhU!^W9QKceVoyB*qkRhMKm0p+FUQw<$M-S1 zKS2FP_R@aG?<;Ek(7xwV`>p8r9T8tU2wznk^TSTU*GPVh@E-mA56`E@3GY=L>-P%@ z?^7K2|5p> zoBfae={wx+e=vVvgMrl6v$gv6PAN!FX5TCP<=W^tML;sTAZ=*k|N&vo0_@@Y8Q5^fBPZPeX z_(AHx*9Z^vc`Ww(w-bJ#;@Hprknmo`v7h)c;eCq3{=I}}6~}t_bHa0E|6d6oR2=aU zP(0=pKUnMkAi|4^qy7Jc@Oj12z6TM$pg8th8wg({yqEAL#nFCGA$(bJe4ptE!hcue z%@?0F-A|)^{$AT3d`>&St^ESxJFEK1V%?hdk2!^~vw^en$b|1;sHw z?jXFR_y#rbUBVX>NBrMOcvW%4&s~JC_xpY|)sOyLA^mm5G5)?sctdgY&)tMK703Aa zKH&j9@3@EXl;U`f@B_usUz`F){Os@eFCJyr57d8B#~=HJJp4o2>GOb2-zTem#NH2~ zeg9bPLw~=vAL8c#!Uq(`e*eLQ4=RrOJ%sQv#StG5CA_FO;=hORvf`M3A4d41;uv2K zC;b1$pPir3KRo`HwEfWkkD&HjRvhcgfrPJ+{38ipRUG~QD8l>oc_8MOzeZqUKu`+! z_ceY8_4}-7pEtk(@(WqONIN}m^!@%1@?&Zr&(nqgz#yf7e_!phr1zuPU;GRXkYC6G zM!Me5J65%Q5MMu6L#Y3n;+P*EqK1L*>--P@OR697dz{(_UMBnfgjW>D_&SyF>UZt> z0sn7-V&!oH_;*#mvBRu=tRK&!@mo|J?SCra{Cl@NJ4|`@pP#osTlJ%U{Ji}+g!A+E z=Mv7(+p~nvYyB{Po<=x-pYn9V`TLk>C{ERGWl{fD0sR3S_0Q@47xA$G0?8rU0dDPo zp}$|B=i~n9D5_spaoistL-+vU&mcTU`cENzP;tc9X2Qov{tChiiX(onB>Z~C56}i0 zCVXCTjPFsxZ&V!jw-bb~cYf)#|9hqGFVX&6wS&>mHxNFq{sCX_=RFImAM^hURX^g5 zQ`kkiv@y9qzE=f+->3S~zBR&cJj}`iKa1*DQ5@sKy_ewpy+5x$~0 z+UNO%Hxmw#=Fn)&0JX3-KHJIPH1;-Vif&7J#{Ty7Fg<&$QP!^Cuc7xNY{s!PTCaG zf&%KAn;wO3L8ScLp*^NLM%Rwr_;@+kH9mRn=;Y2>6Mo@k#!VtGeuec_+-M!0o*6a% zj*iYs5NNrn*XYFt!GM@o*^ZXMbQf05t1rx131G|p@drM?%A4o{iZ*&{L$ zZpWdz7sybW92uGxJ<>2X9?bj9=y1WINjr0DyoaMj_!FZ$X3rhkJ{lfkYx1*Gg?Lu< z44FA7G-u|_V8}RRy57#0=g;keA3Fb;xkl!>g3MF$4__+?M#g7`woi5VpPsA z)sqpYcI=oL)p2gd!NgEuW_09S6NnQtr%jJy8lDM;iZX-RD_nbGOH6A%QO5Ax^t74x zf-%z%(`JNUt#UJFHZ)Nij*qG7@txylLf$?%JBx$a#fG>oskket%rCGj`S|=`+BtEU z@!X6Z;^UKrxmh`BQ2hyG-2_f+TqVm}gT%(e7L2}DeMj^V?+H45JBmX&wQ?rdJw7wO zeSBgZ2Mn9>KfY`Hy3y7;ZN~e6srYr~Fy5hwEyLzO-U+E&I1iX}iN{Rvd*3X$VYszl3TQKo6HZ-|&bY_c*{}B_i!IX)`Eqf+qX$UXV>oZek zy~Y$aJ~=!wH)7)5OsiW)XJ?I(ux+(`0Mj}`)XbBKcC&tm6_I5zY%g7BPB%j<%**;V zH?v)`Vg8J%UFOh#8C^2J@7iU;-8Ap)l;Dy-e`>N7SBjrDIigY`WG;#a&12RI=e@*6 zAQ=y0#~!+D`o)ZPJ=|FIhR5*AQL3RCGahF~x5yg`bdx6Q^?9SSV^bP9l8+y{S{R?a zRK`wx-V{ypzPkfV+WWES8{qN`t>5I+CY4L}vUo3EwX!=blmBE3oOkdZY|1x%BH}&V zm((L~^4-*9(V@>(kGhA)^$0%E?w{!6dh|PZQjZB! zj!WuMGI_3tJPTPSUhqk`-P#YLcoF^m4xZe*W}*d-^YfsCCw9|cN{*v>2T$6C z>rr>`MBf3Qj{K8)^qM@^L(20pp44mJ7U%kPYMGT&DnJXgD{Ie4ylJoCBs z`iefD#|IreiI*EpIWAdemQ0@GK5W<6coVsv&%5n%{|-2KE`3D@&($tV4xZ?{@moFFycksl&`B?l(ey|Ik=r4MBJl+;Oyrm~b{U&yoJUpI<>JDD`O!!HW zz9$)dL9M-A#7?=KZ0F#M?L3K(j48(@^HAQwlk$}quh--=Un&NJDk%0apPu{LXg-zl zp1+Cgiap^u$4878*Vi^a96TAnMN^I|tiOXNpE)eWc;ROdw-tjv6^z?mIV!nM=L|1R zJf1g1U&+A}y*%Dl96V{41HT;ALq223m^_bj(Kqp)sDDF03@>fU67u6`l?$W z$JLmJ7vI;3e-#H$>N|2=G#?1BX?Pre5?32Omu$bx*V_FPUJz?%sYk)VllI|yEPHqy z2Wv5&_>1|V{M4vFq+Y#Wcl&owj3@pMIC$b8&(8%1FSPTqsQn}^Djr_th{!+jd(H5; zoyBgvzM{YX8&N$_U*WB;CHrGA#uHrHMaFCP$jGkrN7=z+yV5SJ9$xmdNxP|UM*hLB zr1AI@ef=ID$HAC`C*x!7eUV+MN7ccT{o{sjMfH{M(&bFPn|7`nUfS^GLOX}!GNw=J zm8wTP)K~2Gn{r&?a}@_q_?0I_@gn_O_3(H-syle%XMBE^=Y+xS?f!|~wsv;##Gji? zIWEy(HF;P2@jTvi=o7o~c$R$n+mU~0XGsT4IWB4ULX0PJn8!K(Dh{4}2jcLnBYl#u zdw5$XBHlrUSNcxmAM8rI9CJs+6MwTN?`jvWZ^`h|hA$WDE8}4?rcdfyi}7Grc=yG4 zl23g%(g&WT%^mt++x#v5W*t0<%e*PaC30m4PvZI37*G6eI(QV3l;e_dUWxHgU#SN_$LzVQ-LCNXIp&~)Cw_06h{mP(v*h53eUAGz53d?q z2g7z*Y4=a`yl*NQ z9?u8ixHjduM6Th`C-q%@ceK6W^8I-+#*6#M_vaN4FCH&qr|#g1KRhneKW?vw^zWD{ z$0hY$H2Jg^z(3Jep78nekBo;Gj~9{4#dv5xDUa7z+Ortr!9Pj4f2$6j ze5ZNUl;e_o?x*ebkn*paa$K^1&fMG16T5w1h}KJKmnFmN6fYvT8quWgliGTNfxd3%RSdaU<^RK@Pp6DO+@YrtA z!{d4^cFC)Ic-(KnzjfDd8N*9!OG&*DSFA7JrM_~P`f6S3Yj&wG{qNn?H)nX=)VI{7 zzN$l?#B-j;(Tam7?al3+`i;9D_q{Q>pByke*Z8>iHA!B{@VLG%|Edn2_{VYD@bEb9 zd)C_R$~-jtn`qvUah^52ib>@Xdx*dIye8wfucQ7D zKS~as=wrJzk6n(Jrbi$1djG54KUY1n9v=HwG(7HKm%c@hKJMQY2hY`hsr$RD$AE(; z?SJ4$qWF{XQ8K)WN#zp%F+O;ovrPJ`ubM0gzjXShFl`)f)4o5o<>@nRK6Ro^D_UMU zTg&@x+WTtDuMOCI^AwwwwLHk$eDxVN?U`4*rz!6^o0haZdzQ^-PqOKnme-zV^SM)P zT6m4s6R4hM#+I*YdF>pV&p%7k*Q%dd-^>ZNd_~K%&$s!e>d(DS^=o-W%Zo3w<>}{I ze(mWhr{%THHs9D})3KLZego~P^=fE&?F`GyDnC#?S*>rNb_ZW!^<-6lS^0G>50qck z`Yx;gC2h~L+FiOq>vgWRTYk3MN4fT6P5Za@O3N>)pABudevO~3wtrUpG4p!$Q`@W}tU?wQt~0ks>b-Ll$UP<~D0Ft2{5-l%@6|0RvXd6cXErs@yM zY8QG=wsyzfqc=@$JQlZ8KAI=9j74rlyL!OlH@_u`}|Ur{kYKTnIPvWwHakY$t!Y+fHgB>8DS= zaHU(mO!D;~+j^!_Nq#n;%(v>f^{OqgpPB`!cXa1Z_7bY5yKecKM?Urbr2W+GR=)I*Wcy`2@qfnFtK`?TTl8n! zt>49#NpC~vX>Qk?Z(g`L>6fox>b~{N_~kkRq1>h3lBd5@f8L#68Be{+B%k}KZSU-( zlkHvb$eZ?-ABVP%Y)E||=})8K>Hlp>{h0sCEU)utmllB{GzxvQ*ee)js62EdRLz(pW{3!Xx@rROrl)vTfhrr`UndF&O!}&xc5Zn3$!hWcFV70(!g)gb>-|yIO8ft8 z|F#2$!uthz#v<1nZQ}hO@<{pp$!Dk}@Y*+%=LHWCe&3xVp?!G9`kzm@@4PSQKlMe{Kj=S?i0_XlcGGs+~K<70dMR?(M+y3&I zrCit9q@};4IO6M-gwHFE{(A%A3yP!vzC?IR{X@NOBYaWif!|4Z|Lu1C!T#NZcX~f~ zr}IXa$o`|WgV6qI^*^O{A4B-E%7@=6H=Gv`?t8x|^slJAd}l?jEhOJ0|HcRpzMY)E z_7L8u?+XY&+cx_7{p_9I@4nvmxA&-h^xxjTe?F!4L;Jsk>!FPyARJ<-1XiX;AC zPVxha!@t)P-mm?S@%a|Qvx-Cijf5}UX6GNo_ge|iZnN_*^uLYpLG=&u^>)I?6qoPn z$@Ol+b2R=cgcnKwhX~)-^D?bB?fpRBJ#f0Y-$N0O1@ZRrO{g__|3GeiNXFl)vSdw4; zhSd-Meyc-DX~CgdKdj%El6-;uzl`wf6^H!ggx~lXJ3q;Hx#ZeL_`J%a{#Ph&+3o)W z#`w(LW$TCe?@A>AUm*XlB79MC$Zsc{-_N~+@O_QH_L|ueRo|N5%CtWYzr$;&s9#la z#Mej2zl!2m-#$us?`Q4$kNEf);gut8`$B)8ZiHdKaD>IN|1V&p?5QB?hjgKC?PGm@ zn#uvsUu$v1$1#K#6vz5`Ea6qvkMnw;PWZCoSihe^_=@6azYO7>&Wm4D|DgYPl28BG zw%dF~W`@~Z7IGCnjhwKFO)=PXXoM%nOO!-3JE5gcSI=d_yh zPR-$hR>8=)Ir30XiJh5^&KtDnCq@T?+B{BMG{0|<<7}tq!m~F;6Y|0so-k+ss(;}* zuI5zGA>_?jp3|+pByjcWXLuW-2@qchsIoDxXMc1DJjo36DD;ny}X7gi)hM;>d)Ao})Vxokt6~@L{%T zcXMFr>^M%HHvNzDPqiq14!4Nn+)Y&@=N~5yB9^!?XS)IpTIYXiiF~gtTx(+IR)%|n z-@3og#=k%9bMQnyZ_07WT2wUo_*yJ>We&S7#uK?UhdzU+#}Z z508ImwBq6M_X|@GYOja1>t<7qOZ*-*dG25Fv-#6$&;pSwJM_t3wMP0MHHSXobG!6DB(jTkIoR+fhN5??cejTNT2A> znta-%a)BplId%@Av|q`=lk)iQi$(vEgC}vY;o*_paQ-rRS3TnWA%2t$FKtq}&>xcW z@5~otym&q0`o!NA508J3zUJY@^@*L{N3{DVc6wvy{m8v(HpYwl$MegAgD3Of9i|*t zxR*b$yY|Z)URnjweqz7>9ntsQC0~m1;{Ijm_g4!Z-r7oXUR(0;c>Y`Q@CIm}T=VeQ zZto+b`o`@8396X7S&zf>v!V4bNUXPPaamJM6 zl6&FipX>?pS`e@A;-e#;=&PE1+QEy*v&;we7%v_#@p(q>zdejXs9kL=`*#6&*=2P)I*sv$aI(YRMPy8J)yfpE|{^55< z`oeY0!4tb*H|4m*Zo}kV^V;E$iFl$fWAZK@|9)f4@cPw2qFv~BRTT$M{Hv4QhRLT% zpY;39KaA=t^Go^=(|%&mT#}^z!hVk<|91O*lr>I;6G%(vRje2)$<^ALq~(pQ6j^gYbH$G_aI zNq>Cplk)geS9!!i)6+j`kGu|*fZw0`*s!(y|3S{j0FHEj>F;D8&(m($I8qW{!a3HY zPw@$AIs8Vtzx@CIi~fO)wtZ!dkn3=pc>hPeeFWf0_jmjA=aKw*!Oi-4zpTA-VHXAe z`18tWRkD2kA97rde788_o8K>r?=1l5_lwHCn_R&8{i08^a0}=6i{kSF$n*O}&n9_( zzvvFa`Te3h3Fr5V?joGuFFHjyzh4x0+3=sAw-2klFKP8p>kl`RVc6sMksd<+j%`SO zzoeJ&dylZ=P4+-?JW^nJkndId`26W8l0TgM zJ6dsHf_6r_`~}-Tm@h|tf?5taAMN*rqkT4iG3oz^&oS~Je)9XU`F-8|K5TqG2zidb z=X7Zw{`32=pR4k~`F+@@5zge#jYw^ZT$j6VC6$K9lgK#vi^PaF*h}1nq{D zA{NnoogM_CQ$N0XK@cVB~em~_h!ZRw5&(|*}JgYd?xow2!6n})4 zUqN_Yag6UP2`?y)`dy{CFKM-#hrl@UNVk5@w#S22KI_qgV#pz0ee)ssoI)OH|53^H zWJm>o-*Hv4zqYeN%0rHdTiI@L)Nf&<^-rE9%Y~;Bz!x`K9R2yCkmdgm_L1`U`BN$i zd|CD5`z!^*8-!n@xG#ZT_`jy|7|+pDNw)^byU`$g_Tj^%9P&tg_4nz39Q@DUJsjR& z9iRgEUUVmU=vlA*;zry5*e~GwD!(uL%PBiPP=9=1s$2W~{`P}Z5beY7Z$F1{et-M( z2#+{`Lz9=l8eg2SGTLBAmW`Tgw|sUUEEe|w&B-A^HYyS@K_9|JmnW4(L2&v7k>9Q+$p`S2OH;XH%< z%M*@gz&tOP@t50}oZnwa^4kBP#jkIEh5Y`G?@rHW#xy?B|0ig>q8)j^zlm_(@ALOH zdB1-W$yas12>T~{`W40S3+-1>|FM4HvlH++g*?*ruAj4dzmEIm0X9f^*hTuk-M(-9 zP_?`K> zvVQyP^BeiTsH|CcydR&)n0F1E{Ji-dKw5p2Hp2Hx0&OfPrei8pT zp8KC1)fe&XikEzh7q2hJ%e;pde=nfK!J>zE!y}`93&*dA7ytgB_}i0?>Jj&k$4Az| z6Fc$uoJ+po;E7&-A5z)Fi~A?>vgF~hf2$6j?2Q(tqWMMgnWwbZSIV~)BA&!W#le&M z^&A$(v(&5Cb?`(lzwc_r!IS#-JT>x9?m5yXpEjvn@K5Y!kBH($Es8vV$jfe__gT$-c9vuYEn2dhqxdG`zG5qFr2Z zRd(=%&vCWn;E6td|Kh5HC;E6jN*&eipR_-}Z*9Qvc>f~pS2pFiq&!rxyh4|}1qV<3Yuk5r!4rR1JUou)H3v_|*D=Q?`?p~7uKgsx zhpA?GX(KO}_%HL2t3TEpJl8nNKD}L^=;d)V=HN*@-|)F;zb5sn7#@!!iQlFv$0fYX zGu(FL^RvuLCBv(zAnGe= zj)N5sFW$dmr)N`S7ws3?DM#Z&{LRF8asPPU81(S?zI)#Ac)W@IB~y+|{AhUe#p@yd z^`02jBkmvH_hdc1csq-}f``ZLTygN^Gh6=sZ^Ogm-~Sd)a@QkXUx~A|7%$#$>64@O z6JFNj(h0l z7q=_z5}eX*SM;V$IWEcf#dvYM9QRodkK?{zcpUdGy9*wDx0-TXB3JY9*uNDIkNxX; zX1jl``5u~c&{yFV-4v`OVcJzV}(v+X=-KmHwQ!@(1M{5#UV)7<*WTdo*P~!~X(5>_&g1vDRXjZYU2om+`mMTzKDHZdZnrD($M03l zIC$bG+Z{8!ZtO02^l^QcJv^>QvrAt3%=Y@qyvFb68+7no^<6N$ZtA=2(Z}^z>yp=Z zR(n0fKh`(cC2!urlQ`J4DcbK!e#yZTyZk=PRS%E->pi=>dJJ^QD|&bwSBnmwEAHzK zp46B11q1GSWK20OiL-u_cg?%3Z>&pw3tj44_UL1~O%IRjkv^xr9rM{&u^{sZPulM=g`8QyA z-L!MDOMQ!7>Ra*X<9-XyZLf!Ge$F^}GJa=GIWAd`=N&wkzPf|w8s|OdwfiSLp4T!S z9>>d=;dRp=3m$#kezh)nt6lO^=eO5a?mIUe9IXp-ACNP=tTcqVB$070^TDzy$0g5) zn!?ip;bs5Qo~ux}>ZFq7)6cW%l9pGmu=!xXrkTI8{M2@vFP&@CMJ>+^+kE9bo2Hj6 zzp4D3mM@?j{PQh8^=Zp*jM#kX0-Fwe&X!kp*nIf~Hm!eF^{f9i^}nY4V4LM-&a!F$ z=Pkc zy*0}(D8H%gQ`YjFwp(5KJzuo^indQ$+h^>rZF%D|>tB7dP3N^eGitZ0{ue)E`DN9g zR=Z6t&*ZIqO8E`dUm3OKrJPLz(OJ4aI<(Jg|>XlZ$aE?vav^=l`S$<9RH&p+!mZ#O9y855} zvgKDbPO2IwOIn^${S}OtzqS0P@>6Hq`YvjDLH)04dHO4spV9KXmM>^|LG`EA|J1VO z=QSQ08gKJj-cbJ=+MW+^p3Ur@iP0IHXVdd{>W9AX)OX%W_Q;dNc>{R*@lOl$^CX|T zUHhBPd%<}zkVn4ft4aISyR3Za*ER*e`Lv{c$j_5}>U&nMabHp%eCR{I=W9v(!1+9$ z)Uh7>B%lAjwafCb2mQ$Re4XsyW98HT-ktyREU)jUZL{C!_P^&FN&C%j?4AGfB%k}5 zTfXrWkNs~Z?FZj<%cH%x{pLx&d8b=GceKa;x03cVcX;F}{^8F&$ye`o%U7T7v0qQx zuW0;p|22H^Px67se%ceiJ+~+AqkY+a;E|sv`N9uu{d2#uDfBg;;i><(llCiLb+;ed z8~Tu+C;6=Qf9_XF`{1*D&v%mc^D9=a`mf!|&y##Z<#ck=Tj zU;eI@OE@d zs88KzpX9;k_OJQse|OS;(=-3qeD+B`Uw7BP;p_kJC+%0Y{_KC4fF*M0TB zCuu*W>p$CXc;-*N6%6?IEcm@P@ahjn!u?uG?+NjKF3q+jki+kpZc}-=r#6E544l^^<2ja=pqXt@F9~_o%N?+?V+5qkKTeGve`O z3II=EmmIHn-yrae;_|FXu2+!!rYn=b&wM2WExql3z-W)G>W6=?0-;UP763--izknG zE8f?O!#@8$KdXv?^Y8OtOE~{N|8<1(@AGdUoPVDmfA%R<{(b)IRo<7tZ}iX7oQ)6s z{_#Rg1Rez}&%f_~gGUa${!#?H5Bzdu(1ct!E>H(^G}2MDh! zj``}tgqQ2Keprw2J~-&FsXW&ETS&gHIM$oLAbdq}=*Rowpub7_KTh(2zRwi?e}eD> z6~}t=NyUBdW5)Y-(cYZGFD^&ETO9FO+nszL-E+Gff3V}*FTx*AAqV?>KE}IQfbx(> z%I62*`~l#6egMud1J36MT(9a zYf1pl?@RqU;rzbTZxPP#OZ^Vv>%E`j^FiL&s;T=AHQ(CL^Z6jrr?(F*4?Vv772te6 zNVn&AxvdAS{W0`!INYx9^4YUouTcQ_psxQ|zh6uE)`pb_{vTFN%TD#X7RUZ1{IQO5 zTnX$Ve)xUx?@|JAejohJgpcX^kMn3Uim4h07pYFYc^ZRsvMmWDu_veK3`*i=FaDJceD&hP--G3mQ->3VJg!B7! z?;)Jur~6NY^ZRsvK{&rp_m_n8`*i=AaDJcezYxyv(`^#Y@6-Ji;ru?`UlY#n)BRV% z`F*|3$?S z-zmc9703GjXu=m1$NF>-;fspHuY(D{^;33#3;#9{zNGSaKJggEJc-CUL^a!A-qiZ8sUqIqkjLP zc&Gm9ghS1G=Wjk=^RIn|wH$VRG~kHe_1@pDw|@LShZ-F8Q~>brYyI^-zw@})_56x@ zG&KIOzj%_4Z{VwnWBqwD;cJRx{G^ZTpts|Mh{`4V_p{nxMvUP|^C zsQx9w`TbQdBb?t~^>W313E~#%*o*AvF^Jzi3IN}Hx7`omdD(S@`}Px^?4x~3Y9IGo zFM?r@0>DVK-?RH+$RA1LuV2R}J}>Jdd_Zx04to^gV~S%xdoXEkV1q0a^eY@yq9tf6XUI@;(~$ zBkk4u3AFD8za#%U*+=~ri*|m%{l-sJ5cs~{j}LZPk511sJ3a67J&!~CuJ?KUzSbZ1 zkJ0ZN;eNiP?E>64|90xXPB`@Y_Upj=4!7eQ^UK@1>^H>6CY6WS+w~9N>utZhu1}a> zUP0~0`y1TXp?(FG$MdLH!ck8HLe2xX?H_&Z+esenlh^zGN2$Q0y7Uiz7PWrpzc*6* z%qx!ZT_$`%aolgeiSR|mv3|XIFa29@`|x@FHDAMOIoicX1CF%Q{Yt0rcc%6Gr`VtT z7K%L%07n03R382R-yn352W?sV2m9wC>c6_;@NYZeONzt(c2x}h4aKp4947fy!bb>i zDvt3xN_e2(mjk|o@RZ`%pY0?(P52n$8O0I5F>|Dy|IxqLr$Ii@@57+|E~5IU6vzB?G2w?Qj{A#C2=7xI^Aq+Bu-~sZ z;^R`1=l6vzX~ROk)Axx7$^Xkp|A^vPKQ1SHOmWPg+Xyd`{woNdC;2N0Ur-$T!>bhU z6hEl{dgtG)?oY9<-nf_cJH;QrFXhYBfBe3bza@OV_2c)Ye8tzWWYvfG-n%7~w05WBeUK_^RR$si zzc&!RtT@K^TL|CR{d2eRnb*(D(Y{BkAmVdOaooS0On5IN@H9`W{+)2>Km6Nve}nivlG-_=INGm|@T}s9zoUGHNzO-u zU;Dd#JK0Bk+^g}8_PLzm=l?z*uG{LqgpZN@Q?bx_CJ5;Dz^(ZgyiUId*x&85zxC&@xBF+z z|5<9^g5tP;J&o{^;`n^ybix-D$Nu>Y!mEm7f3=zL1^qrW#@AiiG3cKP;VXpKR6q7# zXOjN9;#eQgBD|qEo-dtEcvEq--vHski<9>!=MbJ!{16Su=PBMPJ~2P<>;4Drx8D29 zo@G!^!evjm(e(w-hfbmK+f*F)x6dTJ=SQ~x zFuy&E@Lt6+Kb=Z=pW>LGo~?MN_V0wFf97@m#Qpo73IJd4{JY-yWs&^*9vt&j5HQmH z9pAq1bHRR%#_wj2-zbJ0@|*%k%D=ZeO9g`ha45RvcQq{YkcDQ@t;!s zW);W!{c6Go6vz0OCw!3fzlQL<;#i+wOL#$XjNjK0o~83^ZXkS~^uJ#5R)f$VXcsDO zWq~8@^!&Kf@BL~YvCm(y|0t0E{kp$E`(8u%fZ}+*KTY_c;%MI)!p9WH{4`5=QE}`K z=Ljz=j{W~`!WR|C{C+Lr|F=K2`!Dnl?@yPs{m}nKYQJU0G5_x&e1+t%BYahH^#6+p z@2Br~;rnZ?0YQIYTwr})@A}>8^Kak!06z{_|1p1_M*eaZa$Jslw>Ws6e(#gNb4N+I z82=ZmA;@={UkWOZ{mUgJKd(6AW03F#lE0MjD#<^A@S5Tn--i-jC;2B5-cTI(mro&l zO>xBkVTAYGW!n$(8x{8@XjjB%TIC$7^*3Lh8zM4`1c&G8Vtou96UymmF6~z%B2NAwX@&^;XM)(H8d-VIe7(b68 zoWGxaBelZ@mB;*W2+5}vN8CS_@KY5(K=mF#_<-Vw-(JN#^$+52P~}m-$EiH<^~TqN zem@oZbJRXJD~|Sg0pY&;LsYX$`Y$B;PW$ga^!~Wh{N3sIn*UpWZ;Af%oreJY7y5f^ zkmt`A2MBMfyly*!a|pkW@aGY}M)+AU>=|HyF@A3TwEg}*%Ac=)0M8C3@rwz+ zpX^^k_pHB00aCGwdQyvxV&^{ix_528GxP6`mz@wl8+|ut6Z{g^l zf_^_0_ooLUkUR=tAL#-5{Xfj#8I=QmpyF5`k0X48;<$f4p737Me*)oY#WBBbBD|0A z6A8~Kj{V6=iu)4O>ko~i|L(ZejxV&|W$GYso<9aVQ~)qi-}gt?TYu zDb{kx`Dnlq#_K&FcI+NI{&9bItQvrwqT+ad@N~lG6-RtMgYXLJ&k$Z!9Q%vo2(KxQ z{p0b3*A>V9`UJuoio^d+gf|I4QSnagzg`^iThRR*_P>AMrG3x}2PenJL#cifg!d3$ z*Y9Uy{^}=u>*uU~;BTWi?ezWCC0#!;|DHnnSJXcG@0oZl#sig8~|MN(Gp7ftj_zfg~0pT|io+JDw#jzf}fba_87ZQFm;adpj-)C(l ze39fYQoK|D>~9?7dr&{W#Qpt$b?F~y>y6){?td}=Jr*71X#m(oI(C@dA7K2yS>=Ei z703MY7Q%hcS3Kt1_V0XN_ghsE?aSwNznyUY{CkggwJdJu>QQ0@SxAO5Ab&p z-qiUG?RS&nz69-x)HnV+$#=q`|A5=A|5$&Xrh>p5`u%S7?=e2bB!~WKsyycRW0ePd zO>vBmXLP9_{`EDi|Iq*M7YT2Yf8QlM__pm|*#9}nM z`{=*7lKo!7-${5%>xcILC&K#_NBsSg@P5S+|Nlbxfa37)KMC*G{>S(Xbp1#DvWi3h zg9u;H^Li2Ae?)k8o4r4T{y!#sQ2j&y9zgh*;#fZ)L3mF6gZ)PmUL^g85WcVX4``pd z&Tsg9bhoyz4%4;-Fw#!vNq2gFd*flr^{t{7p}(Ry+V8!D-=a9?$M+Gwq&VX5{e&+Q zely`KisSR;KPSAYIO6jIga;dK{eXXv@RZ{4Z;|k{;^?0b5uQ;T@$+HDeaV9qK>zde z@sAK*((`=~-+#%tuFu$?4EPLdIqW0l{o^gf6(U|Hlc>DvtL51mQWwAED)+Bs{M;;^S7r3yPzDpHkeHpj|uR;C1?bR;TmW zJDmre)9+WK{a&YrVSl~nd6!f_;`0X5UncvnC%i)PZygBkG^!JCpbuNuKWy z%7jOy1(mm|JLdLsnh*Qr}$cL{QRN!$DQ`K`#XO5`ShR$Ci;5B`|g#8UBNZ|MB z{sZ>@H*-LW5RvU=b^vT_y73$*n>&`FVsH#e+c30{rq=L^<#hi zFw)=it>p8&hZEkbIQH+4AiR(80}0=xIO_LE#n=1$YQ%R|^`m}&qWXVl@kh^x@2B{z zD~|o+ZwcSm^J%;Fzem3xi~0FfpCI{#_DiWe{C{?r@@VEx-;Z2x{Qg4Q7xi19_^Rml z4>0Y#1CDv>(E-Nv;*kzoINC3N_i#ycVt$!aN#MTsod91>+2?DJeK zMDqLl`9-Job6?kY^i!w#x1rDP(0xKdY)A>(7fp@F)O` zw5jon`SW`!2RzXA6XWl0!c&BQpK#y%vOMm!;Co7RGl~_i327v2SeX`^SCy ze0qLY{Jqt)xBl;M{d?O!_kZYD-#%}9u5}yQuknHBOFvYH5nsONH@>M%m4QK>rS69?eF`W zg^hOo!2Q=(HSREO7Zu0;^Xs0tL^0wMsc-y%&ne`%9C_eKed{OqoI(!u^X+d~4tdBU z-KO&s_HX~A0C3;$H=&PH$Z&A*NA>zjrsN)N&vpU zpC{J!`)JtDy!?+`UPoo{A8E(mBkDc`_mf*y735d+_l)TKCnx}XRdMX+4kdhzxv_Oj#4~|nB-r85#Obc+2=hdKU)82;p_aow$tye>ff;I z1>);&wGV$9isOFd`-FEouWXI<-$U{}-?aA8em@|*S8?paen@zR@E;LApg8K+AbhLh z7@t2TJg+$V|0je`D30f)KP7x$pQoVzi>e>_&ni1Q#=`UQ4TOt+!rCA)jyEm zpr0qAeNH31)9)$M^m*kOB%e_n)9z-%J3Vji^n0Ft{XGWi-|6>0{pvsZ=S=c{P3H&H zZ*PC^xmoqYpR@H3^#A_ePu_M=^7lL^!;vVY5`T4oTlX{YpU)%5JPo{}&qFYN$J83| zGCeQ;2H{o3A>XSV0r`sJ7~fAIy!W&Ac{BR=P{IpG*!c_l#kZoP6Ri?u&^|~zo!7qJ z`D0AK?}+*7OKKSP-`Dto{{{NKVO;^>CBknfyiEAFAs97T;xEAPe}C;CVW-pY`F;LF zzSDVp6|Fzk*E=AXsCAS9+^PPNMDj1lBlX?Sb-F)*eB)a-{xLpQ6#zbvPktZs9|&)% zJnH|C5KOw=$^n+~d|9is{SWZk5nBQr`wFyY-;0x)||7wK) z835J8Ne8&K-vH0|d>eheEYZb!#6i58Mm+*eY5r6L^d_ZxG@AtznJFfW-a9jWI^K*=I=;`$NU4ecd zi++T>@AEa_zV#4zN%f6kA7PLNQ3ErKJvu&N>2?*d<9dD#EBz!z8^$M2@VJHo$D2;AY{Zz29q3Vb!=(ElmM`(2Op ztDk;2n{oObUuw7N^Ly0K7%PT+opH>+yucd*-!AYb<2Y{ZusJT|Y&7`Q56Ak^;?EN> zK3jJ4e#Xe*`uqd(SJ(^-|6xDF^0+>D6Z3#)1wI>7Kk_ih=a)FXe3}8^DaJ8=pAmTC zTRJ|>pU(>15&9RP*y1N(#Fu7ytRJ6a0&rL0pBH$Rajaio5O`VO*9*MHIL7Y=f!788 zMaC`R_0I3IHUjrcHHbI$8ht&E`8F$wLT?|q=MVJHi~CPMWPQN@+Q&=V_vJ*`y)B{`3nU; zE98p;pJN>B!Gyq@LjR<|TS9+H;2z^x&&vY8oAFgVf)@$ABlJ%R-1&BRy`2_#g7E`c ze}(a0!H7Tlz`gk+#Cp4s$NYJy^LJ)){GyrsnYjr*fL2PCTygsB(j^;aCPypdrAfBf z>)({ymM=Pv5}Mk%CAY1Z-!Pspj%~#8xscC|<)@VV`s#M-9LrU5{AX8FPY-wY`0Mh; z;^xZEBKtvd!LFWMuv2Lq%@s#yin&UDY+b21GcmcLG&Q02ogN<@97lDcsEO{B_J=~y zJ>C7W@#%6gx3ia!3gKIJmT`XJ`&*istT@j2 zxhqsH=PCt`V=O-JkY23FhH=TdZ+SA4-b5lFXWFcSmchvs)WF@~NKjoB5)8m!#i}M?Ke=@%# z7uqjPx`IOLoXOJUnSx3>dwwW=PO*e2oL>JX?wc-@rquBD`qglC_qP{IIqKh5Di!m& zNviMsmT}A;Rqr!X%0E4AcAQa~q=fD`KcCap#($%KeXbij`K!6Q1I70e{^QJb`j6b? z&U4P*NNmR`<|cQ{$z z#!WFSJh90U(TyaqkT>7 zb#+ZWW8Zf^nbxe?FJBDP-8IfVYp0Xs9>T$Ee8A_?sd2%;qidJe`!MqyhtB011|EH8 zxT5;8k)4DawM)FUsvjHKbqzd{Upm~kOT4myw@US|1md7`gNA`e`l|2p z<_*0h8V8+29QE3&`d@GRsU~aSk==UT*GF-*4Ls7f`fNWhbdKn%{iJGXBRw>32dcIc z;5|$2*EjEUJk`<$9<`g^T<-Rv-`nEr+gEjxzOFwNKhGq$9N-1@jqK<1NX|LO*B9hT zyF&q9(C*dW4CiGez=J-rGkjN=S2gg6KM)vSlAE*ex$wUw(#x?@F?D_fk*OAMlBk=5wB+8QT@%$_~T3a3l`oX7yCS#Z;A8F z@wR5eabzvLW+R-Js)1+nZ{EU_{yCYbe>DGZ|AOxy?Pm=<%HNv6dP@15HSlQMoWT4b zeG3L2>67!QZQ#*7x#|YrKZ<|w{GCopwX~5Qn!jYH`W2r?{aM9Js+KnJXq*-TJld}- z-Vl-01|GF?-EAB6k=->f_17!%FQxXAs-+G3C@)t9cy#<|s(l#;@fvkM4$?pPvZy}N zTmHJguF-g;4Lr(URrO<|Yp#acha~(X-kPmGkK#zHed%8}-W$SoT35WJ;?o9w#B&1k zobv1$c*K{-qoJ2a^$}05rnY{0^G!d0Bv%gb;2*^|?D;%8zRwwW#BV&+pXZe4 zB?FJ-w|w2_(Y>U^E6j1ocxMef%HNHu9~=4GR{L^1OnFIN;M)!6#Z~>-D2{S~hrCcL z>%MN`$?;eS@L-qp6~wyh1$eMa_2J&>j|au;Wc@h6qjunn;rbgf@F>3IfA~D|r)=Pn zJ~NdAYD-;w4o}8|~9^FrnIO0{Y00v#ucjLkbkoQUQnN$mkS2oK}!BU)sO8->W}7l)IZ`~ z{>m^fePNVG{;VnbyzY3Y{iN!rE$E-DtD1!;^Vc-+D6iG;hS!a@;-$%`+F+M>UVuk+ zJ2YYT?~w2L`Y5ilg*PU6^NMGxzx%#gR$BB%`j#yEByV6c>L1lZ`WD|mI)0`Vuccbr z5HGb-->gBOiML?jQU03H$F1|G>T{>k@`{H+;y z@J#ueGuWm0F5lN*Pbn@h zroO~XG!C*W*WI+@B~?Fdgxl(`Y~jiL&BwI6WYH)68@Sl)pR}7+JX8HiePxS2$!o;q zc`%`WAbV-dCi!-c1&JkXS_JlF?r>fyhco( z7nA2)8ZVAiOkOr7uO5@viplH5)A4uKz@y`wjAOyVlX0|T@)EC!#zDvLYwiu7my9T0L-o@Z zJpRh#TV3(u9N$_7yQEjf(TT}RzBU?%NuL{&S2OS^FO}c<=XKrlHN|VFe%c-^FHX&z z7dgHu#Y=Xzh4sn2WMcAWWAYYa@|I)r245F1j**zWs)Z-(uc>%(>aT6lC-afyoQA*>&3J1WE?9Np3GnB4blA3{gGXF`sep_|Fo=lX)1WNQ8Rn{WR2S9l_z%F z*6Vfa+@br++@IzC;UDP!)LS&K^9Gh{GyhGz|61KPnculW@0YoM=!dN5jk>?~YTXv@ z)cqZ{n_&IkUAn(@x#qdd&v1W-?UrjAA7OtwtiSvk-QR%SS-sz4{@{OW{Y~a4nP2Dr z6#L)e{(-yM&o{GP_OruzYqCEH*5Bs1%BrZliYOKG^ekNb1?W}NrlkKM2 zZuv*rpBm@KyG-+!xxd4DJl2!_AI(o8&pf_M+}~t=o%!yMHNVW`o`xOnPrYoYTR*8= zwcYZz$Ljr={kyGqw0VEs$y-0qN=EldygF=CFOp zgD>|zAz%LH?#a794cm8a*Ye&<*ng{iAz!;`H|_r{Y`^neE#JB~rhOrw{Fau>cH+sq z_k``Yzo+Fozm6yG3Hb!uPyRBVy!-R8{p`23oUHq-rG7ji?{NO4ytBWh{(d3sduIE! z{mk;7kVkz=`*n-F`^&KX4(C7ln{fUT7XLjVU%x}kIe!StyB2x19%O=Fm32E|f4u)P z=c8#oP$&*&B9wJiCUvY%%A^c_Ij z4$_SS|1ylzXPUG8k)4+l^F-gv?$$o-JB(SV~}V*ly0UfPb*O)tI< zAL>BXOB9QA#rz(*KI{@yI`jL`oUfoB;3 zg7EX3-YW1}q5o}++ZyEMk;Y+1{vPvmn_=#UoQ(z?tz7@+gr1^!U&DI@KF2uf8}H-o z>1Uk2n@k(t#|!+rPwVladlR%>qnloREwDW5=e>;E8tCnZgO|Nb|Go~tuR31XFEdWp zkhHDUP0zm?<7>G81cA>negOABN8nAy5#NadpSx81hxrw}S3uN;z)uqLE!L0q>12U> zjAQ(sEATesn181Tyu_dJ0+;(0>P7kGkk9G70exUIpsVSSUoPfXhcxgYXqZSxDb zeBYeDD%1B6NM-9|`uF&V{~}>$nB&9v;@dpXKf*ZX2flR;Ji|EhPrq@Y4S0cZjNgog zdw7*`)FHLbTU;h4fy-kq&;h&8L9R9a1*5iZx z9A^`Ji2CL8lP`~{pUzh@^udZ{LmYq+kH_)gcv1qv(n>v&1|0h3^AFCF0%9NXqPw>X z9Qqgdd7wDoKBLDp{{eY3>aT;)-)8+-k6&XG3*1y2N$H#odaRKoy z3jB#|ANUgEi2um~UuGQjbELqXoqE1ty??gAS2Irc*lAm*o8I%<2N}nDwo%|ijKlsW zfu|YAd_7a(uCV_KfoB-U`BG8fS;ld^n-qAJapeEi0-t3Z`K<|jj&an-8w5Tt@HYv3 zfpO%oF7QRhF@N4A@I5^r8sz$h{ui-+TN8Kw;C=_5w~Y7Dpl;=RYi#yx{STXd4hV6z zzpsyv#T}V*e2T z238Dt`M%y4GLG?(*OwzU$An%R4R+DW=W+d`O;G4Z-KDwSF|O~9Dc`ft?;FSX$>(j_ z&c7f(!uf^V!NSi1<5*9gCh#ibs5|*Qxw^pR^W^3kNBt&+{sqQyefIYP_ZY`|`3!;E z>KF01SswG^nL>Vran$`G0#Dqc=O^NSmcWM?$NW1~;KPi={$T=l8HfELffpFZarkh7 z*BHmVK7w&ugS_;^!8_^|;rl1A6ZY5Ns`Imo`(JNUEaYr7*hQOV{mAbdg`R%vOPS?y zfAI>NVWHPXgI{Q?tRMCHcA;mMah&hGL*R3a<2>x00-t9b^XF=tV?xeGgWqTuSwGIV zE)aS=#G}hn7kGkktZ&-|o)q{F zfu|Tp{tE(6GmiMj1@1DA`TI(N7li!_8MieUw|+Qyi(k_Bk5K=o*#x;CayA-pwEgCv zd>*VT?cAZq5BYtGz!QvPew{7wgBi#AvsvInjAQ<75%@6UsGoBLF5i!FuE0lF9`oZo zfoB+p{~3XgF^=&$U*HACu|B+1;8mgjWdffS@>>Ny$2g8}FK67=VBG2V26Rt-@xW@2 zy0`jkNqrA0$vwoy?-CMg!n_p&kJcdhT$j}4QGJxFS=En?>@+OA8v{J@uWjIwy!;*W z;2WcMi6?(&m^Sdpzk=$=MshU^Z&!dv{^eCyV}2wg(sh1lDINzm-NXz4;y%t z=Uq32^HMhOy8a1X-N2)Go2nlh$+axJc7R869RrW#M=lKKCGqBHymV~3W^dmv?YkD< z)%*B7I_9(uJkz)p-V(J-YgSYBW9!CY;C1ux;cy&7S4H*F8nspRW261Hg;)6ppGVh5 z9kriiL9$16O8&^_@yxz8$|HWT{%C*R!jtvaGVsXmvg*f1`zr<>*^$rp8GKvRKT{lO z3$LL1v5{QWz$3fzxjl0Ro@qVx3_Q}e@HBs()BaFB8i(YOe-SyddN7O$$2OcQ+ zd8Tuow1G$Cc75Qv8YI^=@Ve(b;`u%U?~K|d|K#(1QU)Ha@2PA2^_22lR=k#KX(K%} zFUh~#RX;ZJFL8DBcj_kp3W}FxLFhC2S2yrTU*ibhF4c>tcymG@jgx%t$MC!2`BziC zq|j&bZ{EN&#k*wSne;jT7`1DRL-A6=Ka<^>L7&O)yn#ph=2QNBqdd12uPp4E{2O_9 z)IT~-uMy8FnpM1{&`16SpIbru%>a+;lj^Tq2jaO*O939q5szB=d=O_YYM1owdWV>o z2A(P21;sOshkS07^PZ?(lYc`7p2==j@uXdvhesV9o*zxc8&dtW1@j`GALjg1)IYK- zpW8ER;2G=Bz$5!|9hx`rXq@G9#@dP}<2BV)>Yt-=klo;OPRQS^g(shLGH2n*I$aF# zP^Xl?w(7@5eslsnj7K+)YkVHbrPO|s1;L|MUZ=PQp6PtDZsE!E$>e*@cI9z(-olf4 zSqkuw7iv4I9~;Fr_`axJI?kk3KQ_us*}x+g@+rT${WxBFzZ zpZb?5kNjzg>!ZX6qCE0X=EV*0kQdWDss?zZ2kV-gM-2my>gs0IkB!!cj@p;=$Ygiq zgXTD--Lip4c6X_MY-G2k_N85lM?Oa>u`6nq@_dx)$42{U1CR8zQWem;=V4g`kIri@ z7y3K{?ZKkD<2Rr}eGMbC$bFa7IW8}*O;md`Uv{#%qs`sDMB3I-nO z%bx1{NAWcj&r}EU_jzrDKC&x$iGMfyCwXZDkNlC(J*p~ROZC%+Je%yc4EjvGj)6z> zP5y3n=;QHzH(OS`;jVWN?q5Ukk}-H*OrFz>r!QsTb?ZPpcP4A#(Yhg@n=)tMnew-! zc#RnG4t^qD93wG#)tJ2bn7kzmPyQ}7@kw(X1b+`p^*F3}Nkd+OJQ|;jg(vOK8tjt1 ze7?^@Onn`LKGQr(ekvLV)r)-YQO3X{eKOvBu^C zT{I3;yk!ed#?i3wWE`I2$v9}-R)0FYJ}1?Fob@@Ycu6HsTQFYfUp*#oAttYF;mJG? ze8%jb;+g*V(s@sd zc&eq1c<#OW_jL8WPO8y<=ePQIjf?2thx=D_fBM&&@9nGm+ke#k3*4VrrTZJd=if)( zr}-}TcesC^`x}nt*Vu0IH=5u6la{ajTDNoD-}tlMZ``Nb#BZ7ZfZlKaMz^!vpJ4x8 z_TTv(`@``z*>08l>w9Z|9OiepKk+EtpT1w~FRZX0&V$Q&Xmh{E`m?{&{LJq)-$Q=> zp!+@a!%xo7$R9Mn&U}~oE$(k~9@?CT;Xi7Amh+k7xSHJWvi=6g)wrMab6g(BHN^cc z=b_2|5B^E>6CAI@@z%LN$@x!l{s;c7`7Z0PvHlwOXPIAT{tEhe+`W5se##GMJxPw& z<9b-;{s!|?+@Ezy-8#-P-{t%)aetltZ?OOFUYehHv>x9i>~lYUfA5WHT>j3~_B(L< z@9!@uO+ySH*!6^ba&q_lboU9{PhPlt@}7`S z6n9VFT@|+PY}-9~Pso?EyC?7N8@69(`D~r_v~-KSqwVEi$h$esufIJk2fmbd9~HLW zC}_FPJLAcFLcTt#<>J<<`{=O!&JHc#dPhwALO!*-^*0cPb%hNR|ZJUMuCGma4EdpO=oIX>g z?HqxxFplqIo-6QyJIA{7tNR@gC4U~{U1f&<;I{$lb^%8#pBM6Un;`c?&PD@{cBrlW zr+fdj9Vg;T3H*404>OMMlO7@P5ytU-+O-0gzo$8YaqUg?fA}3mbPsT}^7k_TViV+k z$k}Ldam>HJ)%6|z*FLVluZ_4rWJ}D$oIjfx_yPa2-_`Yt`TsPrJ{B0q`mx`rRUm)-X2Jo}r+umJo;qSo=0588$pHHA3+9GdN#xdSQLVlKUxWERXY%Qw2UR^q(g1Cgae*PT&hde!awR()9xS&tN>xc$zp6 zN89;u`1c)$nS=s;kPCE${sfM8`MqtS0A`%7rbkSbbfIdK0)NSd{Fp&>p23qPybe5uVQ^lbFyH+Z+*R1umAAxd7?fC7)Sj*|6%rjj@N%2pGJiJU5vxO zjRLow?<4-E(ElPK->-iD+T*+GR$bp1-=l^9s~JcAA0zNJjAMN|R^Wp|e@fs<#*zPL z3w%i6#|b>ec!KNlc*c1*(qP;o0CxaK`$%1{K)>_p@bP(H27otSqvsFC=TQQm7x<$g zXbG?n+*{Yc>s$Y9AHQ$?58+>nah$(>Mc|&mZxnc2;9nJZN8n#$+!B5-zJ55=;CUg~ zN1b8+>X(M^$KiL9z~%is`fVL;z^@he3-LRB;7x(A(c(S%``*8`MqKdmJ7T6q8t@_j zcK}B#?{_XU0KA`nvtJHhul_{H_sh>3K0aVt|5V8D;`>eT=MN$dd4BOTA;10-{k$Q_ z|53=>&M(22_hau7`sMk_&mm|TfIe_&p?)6R z&wekCn!f(R^Hs)K5O{)deBSU%fhQTq_0NR@PYL}+fu|YAb-@JVwg!In!@43cSoX&VQ~Dc#U!7=S?=pgq)2AztLXB`f+}9rO-3SIL7bI0-t9bD#u5KN2z*J%zg6JNjN`iSZ31_A{=t4-;0eYN-`g3tHON~(96a0l4?M~C zQ6CG!zahqvpU(+=Sor^WffsKIpC5c!;B&X=<1_4kLEyDR!}8Y)d}S#te}llUW*p}y zUljNV`;YVYFEMUwkheX>vHr>H+Yhi};PU$Vg94Y=cOSAj#{KXgt?l>#Jj40HVdG8w z2k@-|pA~qPaU6fH6!@6H-z@Nc_pgr1>g#8W?*r@@{JTG+ag6U0PJu5mj`O9v1imclt^F{qN61gV^|IgjfPA0Aw|Qt# zxAJ++U-pO2_!s;#f~pfZTKT?|Bntw!t@r)(_rsyzmY;s|{c!02YuB$WKKQrv27SGR z_3(cl=K5UW`iI(EIdQOmzrb%3xWoQI{&s<{68Ieg|689Q{nn>tjvwps<(ydLcZG3W zue?#N9G`PtDeyAm^y~}T-YjwPKDLMJ`@7m& z^nW(r`~G~t^L6=o+uzFX3lL|&`m$XwLH?nx-;kf>@yGS@pLwDKznXDePdp&-ImU56 z&tW3u=NZTR*h}E@e)ir1Ul98D5%{9OS1}%~EZqaY`r+XHwT>VC{M%g|@${>=e(UuT z=NtDA9`!KiTR#8%f`?iE0I$dRp7K4MNaQEUIIdrQF7OoNsOMh@Jk2;h|M;cAUB+>| z?+850IF1Lu5_nbUzgOV1jKlw53w(}oTp!*i@Ogp%M&JvKWBh+B@Rq=TCve;KG4j7C z?60uAt$|!W9K5zzFP^{v@Q$eOguqt>zQ4d7{(dX+dw{@Ki|;odDDXkXv7W9G_z>gB z{}TnCVjT5#5aa#w(+`K5!tMJ00_y*TVm+=hj`|xB_$=c%pV=tzhS2{afj1e)@#@6_ zZ!wPiZxXo2IIb7Z5O|w$_6G* z)T2YY`|ER+Tz4<9uU_O${Hf9wuwjk zTgJ=X_SEThxpHN^G^zS0a})VZ`AMhjmZphUrX95v^B3nycp{&ho|(!!n@0=ziQL)w z?F6drOeHs6&W$Ql-A&`0a+5n|diGT+bcU4Xu0N%s+}~W88ZYM+PN_R>d~$4jatEn) zHjEeZyx-Not~5EBA0?+ZuBVOw-sK16H4sYs_bjyW?q)vABf>hHWNMa4gTYDy{OEjN|V1v^w8$}^Sx*r}?YD1}O;eDbl! zmS?7l$CO5kqsNq{b{tzORVRwaPL~yDY`T!oSJd7_Zk!6|LHJ`+xl7dWh9%eQPG@Fv zOjW;nj&Z)IqT@-V_QxkxW-2_1dbr-tjg2{HtUupbf5!RF`Dd(m&NzR)v;O=uob%V8 z;Y?qsid}7|tNy8}QD;geWNP$cXKH$~JAbFfr`5jd-#*bDfvMbfXKHLx_3{2i74`Ra z9v#QYS5?j@du5^OWpcVy93RW^Jff$ZbW^dpG&7}U#k6izJkyo&NwCy7bo)0`($t8k z_@1r)9jE>sul}v2I-IPiOipjkPmG^2Ud@luIIH=A{xeIHs?^muGq1a&^kAPR)TCM} zuzy-HH+f+I59(CiJ)W*ee}Cg-CBH*0c@yK4YCW34H0Sjxus^Q-QR`OMm11df#}<_= z(oI`8Cu(gO=RDN&MIzGHGC9~A2LpEo{MDU9UDcNBW+a>Yw>JEu3R)zWcF#WA(6j*aCf{d&~QQ?2U?Q+c4+ z)sn)0sr*qt23cd>y{;S$(v&)KsQ&4^8u77d8ZR|{r=5bTGfLS-GfF<+{nMGwUD%z| zs@oamBf!}Bbh((@xk1IzJ;3pL|3Y$$cxt^-c~i%klCFK_Pi00auBdLR-%GmLqvMbk zpy$BRxzACrt&(_m+fV(US};GKtX{vES^7O1O#`n-;6L_Ktry_!tM>8yxuJLa`smQ# z3Ghe`yp2WQZ!!T-520>$I-wec_+gM81*OdG8SI&x#~1NH49IUN7KNgb#iXT zpTD%()o$`Q{{-weSi79?8`VJd&>m)(zq{3_Q7>Ql2~m&lE@U zE9N+4UR(puq_1w^QN2~q@#~7#p+y6a^vQK?;Krzb#FKTEvhd`%Weq&K7c+dYKR@W+ zL&L(mTksNJjptw0!jt~Z8+hc;9Gy_|M*D3GZ)@4-(fNk^HM4((m-*vCb=5NPs9zp0 zmn}S5FNv?4?aFvv1CQ3lp{>4u-8!@I#sa+V{4nrHULF@(1|HR=e4n1P7%z^jg*Om5 zPbB|lEj;<0-DXT)J0>sjf6Q@6yXly`a!g($CeMq>bN(}49I2SRY)oD~Ca)Ef*NMqX z{@-}+Hz{wo>>9j8}+%wN~&x@1K08mgr&=%0+Eu6QyI zvYQp}31}JYns^-p&y>HRo1%6pj;*R68^uvm`wi}Rus9YC`iL*{yrOtXgFeX{`lgvD z^OsdTnLm@=x<#L~+p_Sa-IbVjhdgr}(rzXuZ#E`xAtrA*CU5Xt@!}YX$*acX&Bx>| z#pDfq+Z=~nH-;@dSqBBhi&KAd7Jae~77aYpI_Z4J9EbETt$1<#D_iu*yfiGlNE|VF zD;A!NBXzSm4#_K6cruPT#WSr#Qs1IQpNx0KqEGUMzH7ECc^Lzb*5mSfs=RtS4xQK5 z6|coTwC)WZsGlR-x{IH4dy8(H2k8Fv?Rww+o^Bi9-=_B+?jKyE`40CdzN>MMpHu6w zeuwq9_SgLSt(w=qS+^tHUt_xs)<4Yt)L4I$_1D>M>rO4-Skmpl6WM>}XPIB){ub-+ zu>KY9&)%WsYv0#x`5>*Q!TlchFLQs5?Ye9?`y|bGIj$zhwZ#1n^Bv~9gPNaY{Ylnu zeGa~U{Jpcta(MoIa?Qy#8qeCXy2bN|lP87u@%-YECu_TquRl@qD0}m+}W_Iro@&@*@X_?I$_@#&hDy zFADiI+fN)FPk!WSVf)!9X}R{ZD)9 z-PSu>w~fuZo&S5b&+_%VdHvj5`%%MjV2kFv+&U}|J$xvMG_)4chTqf3@5g_FE=B@) zVU7Mh8Qrs_ZAdpg`MVF*-$$Zj7;T5^rib@?zPNlI(UC&_8h&08^dBYg4%>%+M+e>LNlNq-)7=N_3?*sOe@A>x&{r!3Pcb!d;`(f8ci;IKzNIy?N&JX!K zo;t^m`gz+b9U1(yecyLaOOv+KkBuCKVV3-(2IJI z&-b`Crabi6{1aw-yO4u@Sr6~$@#qPNKOm3xy0)Ir5Id1B+SCTT#W=qII4p3F@zq+) zIZ5Dc#<5=95;H%nF4Dj+wEgP!zFWfaeNfbEgXz73S zZO`X{{(jH@X|jI$t_p3fhk5)uoL~BEi?)MAew`oa`osKqlE4!J9~5|!@dLDa=gExo zZlpn8A^>*)M|&N=j{){d;Gd|EMR~qON2=_JO1A7r*U%4Dz=3iTtI055AS>2g>I6 zV*beUo5PR@ON+QHaPRo^mx?cai@u)3{Q0(+Kf^qKaQyg=z(*K=3I}wvzzd8&p7HMr zyvjI^f8P^$UEtpr_&noSKb8c(!1zII{}zFJj3d5V1#VkEFph1O$GUx+kY8bZ4cot6 z;0ZqeL;QCLe28(Ze|HLem~q&@OW-c!u-_JVfpPpE`Ue89F@7NX|3k)kH_{+45r8{@ z_p5L4M)>%P`FFpVf13pUCxN>H|Fgii2>bzoX9Vtu{A?BYUINbwd~bn|349-c7X-da z;6;J&EAXm$xT59L3AufJ8Ff57ZcuAhGT`{B@^W&N1{hYS1tj<02whg<(_GtB+4Yoh^2 z+wb{2-hb)*V153cm|tziaenxHf%khq%!<&zB;*Hf()N+RTLeDHIPS~bD)5xRZxi?k zc^7vy9{TbEm-jJ-_au-oL>8nJU}I@&7Ki4}4bOZN}r)N0sXj@f|Pf zcb0Knf2&_4{BZ*BFpl}PTHwxY;raJ?fhQP$JjcJEz>@-h zg1}RZWBd~WPcx3|-~9#dGLG|~0|Z_W_77y-HjKz?TpWC~w(GID=S%Hx>U^Uf{#&dk zBmBHVjQ8CF@31`ZAH|&S{o+M@w)@GzFXQ_?F#7?%-viv1AK*2X$MN`sLVi~0-zD&? zg#3pDezm~=Rp8e!&fU(31>O+&yufz}{38Nidx#!i=>Mp|=Y{;oK(q`H@`kqG`9$h4 zZ6EdVdtu+XL*tl__X<40IF1MSRSfJO%s9sHH$r}haU3sxC-7m$u^#?aXkCE&|ek$e<|=;A-}KCKgT$(Cm$7ay+Z!oBlP$o z|6h>yhcphg*9*Mg`{tS~kK@@5LVkhYR|EXrVtr}}d=823Q{NW2cf9YnzV?&vhd6AVzeeE0jAQ=2SKuRzWB$F5@qYQ~ha?L+><0;orXt+__PYKjQzmz*jR4{Y}RIQuEVxe%Nn)>4#%}58S2KPmJH)V*U>@j{N*c z;6sdK{QgJa&OQ43JGfu{V}TDcj`3XG8$*Tqkfx=>Ih1{rtoIlr+m@ zefbQ_19t`fS%GI6$NIJ)@Up-^C-55MsL#&}ye{xBFy1dd( z34DZc%&(&bo)P+w5qOqy9Dk1$c$sn3M@ryn@qE{33%teki~9J8Eiv4WxNS7xXl>VD z{p9=M(BJR-JjL&Y&+nfp=I=|civV0n!H;f(i-uOE*1 z7x?@L`u|erU$AfcydQXq*B{J}JWnLx!;EA7*e>u9#xcKl2t30$;x7oiz&O^Iae-Hb z{3``ME95T}_#ESye?@^eh5iYFw}k#lfqRVO_*4@3-HfBG$^!2Q{TB(``L>=P$nTWE z6O13o1v$-lzxwQlWBhIR`+?im58!{T`tKJXj(=6o-vKOeam@T7zJA}gs((k1ALiF( zYzOjljN|@%6)D|B=4F?RWk9*S@~&cm4Rcetp>Q`SAVjKiIyHhWcrKSJy9&&qw1xV<|w$ z_0~Ueef^KT{s5n49Qxlc@B-sFKl{XPuAjE!$6xCDeH9;n`Lx?PLfk)V@6_*`MSMpx zZb@(N{x0&@VR@|YPiJ}HD~#j(=%|?bF^+qBeqH7BUz~p(BG$iI#xefS68PWx`FX$d zn*@I!81dgDj?YQPaen!8fe$l|^NU{y++`f+2S4J%!uVzwNB#X$$QKyL^-o9ORbl^E z0jM%DWLANkd{&)DX^;4d}bZR-v4o&Bl4ABOYk<3+t! z8OQn7T7l0B`~-nt%{X^E&k?x$b$!1R>&1xzzedOp3w&PKKS|&VjAOkyS>TI|<9g${ z0$*Yr^>~WFmxcc434Dcd)|?qXBo%%uNQckapdoGf!Bom27%WZNBl1oc!P0_--y7Q0^ca`7UQU|7YTe(;4c=q zC-6-IUt%2jIfLp?#p^RvnK3$ee31+g!Gf4Ix0SjgFE(2G{S?`W9;;Jf(uW7z+L zO|h`Q%-0z*w!Tw*nzHITqKRN#AKg{tjen}snF#dzK z#Bo3TveAH}mGAdGjsf70)bH2&`G@+g9igwcu)cqq3k`Ukan$$cP>2=-hzso@{QFFZ zy-eisK7M~RhBYhjC9Z$?mlOCh<5-`!34Dd|B=?UBJo$5de8&0en81e^$MGdE@D$@% zx3>#?gmE0-cQ9^ikT>K%!}5r~U=tK}p(lHgUO$oF;{-4L%<%o9;{`s#IOfM%fnR>> zXpL;){Nn_HuiZav|2d4?8u;B02k)W2pBVYIJ?|o}{la}O@5Yb(ypsjtUxCLD=U-O~ zyvjK0_gw;?732Sp0-qD|?-uwj#xeeL0&g;o>%sR3{CdVw|NkU#+wUU~|Bb@_HA3EF z9Qk>#z}o_UpTIkeBY*E_+}6M^jQ{;CkN6rkLGFhOCi0@Na2rYIXXMuai z?|wMq+td2C&HsM(`{9UlPk$dUz@JB=em`q7%>A&7w%_k>c5Mx>UzhVlg8c9ydi})u z*L@iOgZKbB8wI#}FUsbba=D~lhB9`pdLN2@`;~fcNue}d@n7$v_xW{0`LXc|=^ZVV zcS3(TH(kk}inlq@`%%Moxn44Cl?tb@;IkXqRbCqsK7pK=wskf^1`09-=IVI!2 zO^D_6`)`7B#qKL>R8LorcyG=`eu`fG)!o!vUB)XL=p|)={ea)Z{F|4k(-`Y@7SSS<>~cDPHya#Gi00IM|DQNk|QrBl;0Ps zHmCM->cn7DwUer)Z7P59I1S45sl^?osqso-qWfAezkeh*T?o91sK?)&D^`sCI zq2H6XalJ+zhu$=_af0gd^eX-DmqGWfT-~uJ?y25mdo82@3`s(Wc13g%}VCf z4V!X1OEX;q=+{FRdaqj7q<;St6`b}!z29d#uY~j-jh}kq*62)S{9@hJeXkwQk81Ix z6Tz#fcRbOHh{(Ze@wikfrD{@5CEx}1POvSxZN)A@b<#e3A`ZRnmt z?>hCG__muj3ivG@TSF6O964{s>FRFS~^{Kp7 z?>tk0JC5_-T)14FLby!TJC{P`=}e2dq32oCxz6G%s${CW?WO+r49^8!rTSN0;PXgs z#lR!^_DvV7|Mf}tPW zNN(Q1>&`dTkF6Vrg_pR^=aJly+E20|>BsZv<@Me{{|6ZS&_F#p~P| z<bmP6vvW*M|HLKd_NA_PyR3(FZG}DQlCfT*f8+u z9@#*_=g~E7>c6AVhD?s#_V1|Hd2Q2p4*-;RYh_#>a! z9bdJdWI>X{JSq!b)xwkORl~xQb?O;-ru8cEKT-dPC)X>_z@v31wZUK4=$g9zS>tvWWxE$3d&m+jLYv7SSnU|)4NB*S)bw&Hj7M`rX;h#kPqxJME z)sKzhoj35vKQF)|xg`s)Iu*`~^V6u^uD*Ysf?20~Jh$*L1Ocp?mziQ2k`pep0oxk^h(<^#G6ZH)r6{`SLdcJUV_Res0z$4?83T{(%Jr&l;8A{L932CX?8x)t67QrO9md*ue_ca=tSc%`R5vVlxMjP%^G;5ue0E< zYZTYKg(uf%&%%@A=KLxe2i0?Dy>FNH(-z)Ur~5ow{~87!`F+Tx;W{0-H)@ySEw^yC zr{51cWZ}tpT?63NeFz`%qv@N_~J(FBw#g8{QZtXFDy&~RFfJgfnH~C)Xw1H(UpDYapUiXO_kO&=ID+eBcRjH1WW7`^yrD0J{c9?ooR>7dmpwIHFKvT9QymQa z!5oM5Z^Xir_i3sYo;=Rf4Lr(M@crv_9@aAOOyisQV>FKLcY~kquNzNS`dkB#^vQMC zy+5jtc)|BacGvNkym<>R6?hLT>064)8~BsiKdEmxCa(~aHy4w)XyFClJ4^Ad#N-YA z*&MGNk4#M7Y)sxlOy07ANAvCA2mEtagnCsj)u)f3jgfj9f-VKfiQiYMne@#VTZ zAJB(&*R-yA0bbCqT-R1Cyv*bMc|>syI+q&bxJvLwEIheRRxLca4mB-2xem20Jb9d1 zG4M>s{nTFOc%^@J3r`*g7c4yKpJ(9Fyph*OD+V5ov-B^$cQg*F8+o6#YT%JRd7pL8 zz%%8~Gw@9QrS^&XNAb>H?$0BV%UF0f26$AbH3N_22Lktfh}SUiC@=DJE6>0)#WA!h z8VAiwSM_5fxw3&r*Ew?mUibRYz$5uJU-r)@DUQs(QM<$o&Ns?u&BBxQ(lqesHwH&t z;g1L1H|$t=#W#g{%}1I2lk+3<=>9y4w`$?Zc{FF>ndZ@=foB@u#6Z+P(zi=|K0RXK zkv{o3cEP|ioe#|!cqadr4LnmlrydiH!=!K4z@z*(uk^>4$Z}EBEJQ;WtZ|lS1 zcs&D;s7vgv|qFED*xc~66D9@qx#4{dH-d>z%%*RHt64$Y zrY$^~zk-D)^EYSU(eZrMxIfQnzir{&9N^LCt=R*jaZr4o>c>WLwJkj7K%Yl)3ALYO zL6SpVEx#{(9+9%}WL`2Bp3KXvfoHn!-LmlHeedL&XdI@xs#$n)J)Jl3C_gfeWdo1q z@AYr@*U4`EJu&JZ=^H-Y|D29^X#o&)f1OAA z3kDvI+d_ax`*p<|QY~#Hhq_ui+^>6zw{6fT*HhA$cv93qQ@jNOkH%y5SN%A;pOYw_ zyq+drqwe#_kAXq6-SXG{>vM`DW#Dzk{XhJ9M0w8|c&0e!4Ls7fJQ)Y+ zlh?n=Cr9HTe}?by{i8g)if0++HS@Dvpr7fs$ zm+Hqx`W6lPh`;nJUmxioI5?`0c=N*Uu;LA?e%fG{m&aPG4(YJ`b_?LG4(l5 zi~47b!@`qwP*A+2iibADOReP1#pEr<`GoTX^unk z+?c#tOkOi4uN{+@`1^Qqq+{~R2A*kMn^(LB4TjntY&@0?`iL*AS2PbY zikDO^ZLmxAGOPNr(fZs}`z`JOk6LNhd1gGjDaA|1(3iF7lXX=$=%e`LaiL}4nc`T9 zX?N(5m~kkcoR=oMa~7T)x5b!tS1kHu{)V1qjzjV?F?q8wc?&Ul%NAbn`xZ3bi9^kC zG`3H3wdwEEq%6Ehyat|WJ*_KVi!IQ&Vm+1Pwq(#}s)K>UqV-~`=V8T58tlq>SvKe+ zyVAdgMW4*eqJc-}H8)=FpV!ek=M2U3FRgf{`62C=E&3#{5tHY|pKf@ND9N$7r-kgC) z^Vd`T*y#ASqV`+d@nG{eeWW>#;5;Jvtbx}(uBv`)WVfmITigM=G;gkXi=P*gbB;2f zAINz=qIhxUQC0Dhq*raQORdcFd`#Ywfk*WwuX_fLj@qShzjjwu{jWEQKW*Td&YNnA z*I>B^i=$=GXNtEIlb1Xu8VBi<b7u*=GXtoy#Lm1oBM0`>wWib z-DaMp`PuvQe(iSMdfe~+LGL@PXXH@LZ{N%Px9PUU{mI|x{p=mO9X^cpbAOZjo7~@E zyKS~RG^F|N@3nm62i$UhgYDKi-oe8)Kh1F^Ij%bQm;a>Y6P&k!BQ(Fm{2KFX+@D~( zNw&KJ{sUT%_dmKVAIWxkT+*z6nfpD~ll`IQXOGhSrWrUd`I&W%bLHy{q^7J{n}l+O&zQG4fdzO{>*c~x1xDoTer!S z=6hTZF4w~x_b0f&$^Imst@$<1PmS|4%l&1JE6aXXkJJ3rKH7ipr`oQ={R#Fb#r|}- zzsY)|nYC<}$2ZC2>v4Z`Z|zTt{TVrd`N%WtZ*hN_ z`?K6X{2a~C{#N_ZxKp=H^m9F@xt@nk)ciKrLz3r91N}UYT-GxlCMuW$9h5I|4hdSq>d@|eR{x;X=GWWYYUNs)C>~l3g#rzuc zXP=?_J@~`p;_&*`=K5@7zObGK=fPqB-BVcq%Z9r1rTJYwZsl!{?e3>$_Sfy%r-b&s zqcy(nd-9%;PklqnXNSZ2Oj+{lz94MB^=U2NK0KbhC*;dFX!+E$CB{ zJE?f`>$Y65ekym#_~ed}4RpHZ34LkSS3f$eFKf%ksbPPdMIBFTZCKuxPfy4%;cbOJ;d%{)K$|W-VWTe%M~!X8-iC{p5dY`Q(XVd8>UP?|p{lkBlepZV21YeqPJF zN5zx(gnZ)%TE4M9p1k|Qu>Azb-#HHp8%<`^f{qTf*itAUdAN9@Qc(DG`a~$)R2tWVyy6#Qih}m8T z?4lhxe5`xkLEnv~?K3gu@%-8h%hPu!Y5Oe81J4S4A*TL>()GXt54^Uk)bJnt2LyZT zzZ`yE{F6Yiv{H|x0skp|h@rL{577DMU1ziIc7R{MD%Z^?efC4!7Txsl8yScEIRal4 z^5-&cYv5l$9Qnzj#iZE!ziP5aahXb`ZTWh{^U@52P(vqJwF zP#_iaK47%>u{_f10_YJpbr7LbSaS6HV_%{)b((?rZh& zhkm)-^qadAlt|B=_Db4i16=Z#%&GqjCN1!bFrq^2dpp0t+H9x z{jh6e0Z05>exU0M_4%im`k`m`((w8Fw|SufKF2uf=Q{##2>fP&?`i(#g@4~={r&O- z|I567;`r;bAn=;NUt&`%X@^ z^nrWpqeZ-jLytT@;QSf5?fvk;<@&e3%`o>v4)a645AH)Tgz0+wXnsmvjB2e!nEn zPp=aA>v{c#{ymLvj`icb}@$#qWE?@%1AD@AtmUA=dv`mb*yE4~zNrQGqwuf7H*%1YYO$3-j|@fnT20>l+TM z|0eL84+~#k{ky=|vwx_sj|Ul#Z$8MieUSFArZmPh_SWfK&3 zZ8Ydd`$*L<{BQB`5y!8$?&kd3)A=2_|GAs?AF2F2()sT<{um#R&tGx>eFhWFq5yuQ zeWdfVr{n)nuP^^n@jcS{d!+U6>G-Vh=My;oZraWBi#@jgJbnKU$ImzXh3zN!^9{s* z)^6Hg^?dC=j&J|K@~Gc?`2GQ=^;-qLTFAdm;MeizbI@NGc)#n{HLRb-oVN@4)i2Y> zci`_3_@Iz~r@#*u_|*dMcmFE;I(`2Q`MDB~^jZHbaPR&@KOF1t!i>It#Q5)xL|YVK zT+zzwV|+gY_}zT|fUsV|$3Ng}57FmOz&|STw=Cq(7V`H9{Lkz+^mhdQfWU3{4$XzZ~J?KdyhT!bGtsKwi+U;qxbq-xih!-tYJ@$nxNy6VpEOv&ZXW zPOmSpzf08L|IQD6euwcz0U=+1tMdc?@9Fw`2+tqnXFvSWXZ~1Vq_;Oe<@b+Yf`#6q z0C8F1i2gR8|Ka#`$Znqh^*jIm-}&?Z=lqFVUqi1Be?Iw>hq-=Je180RIJCR39}fR*>kshyYxVt0 z9Cm+fQ_TI4!}t&J`7`eC92C=k=-G0E&OhvbBc?p;+rEEn3j=o1KGgeH{q*<4VSkX% zf3Pk+5cB#uu72D7>$vi^`spW+@fqOz1E~M!B5;cWz>pu|`|C){JMc#zc?%plKTGlV z2Qhyyf0&N%h@*LjUccz~v9!HCrhdeKBg;eV9r#15i~J9}Xp@|Ood0cR0QeB&n7>;9 zL^SJ;K5#F;;O%MsWN#gye!{vMD!R$?!hu-8`BrLh<(TVt&icGIkyP zSU%+m_l)I>;}heR?gJ!7OA{1ccbm>njE|OzC3eHPXeL)2-#(tlTcsd}ee!d|c)mEM zlA)gN=1k;9ow3riQ>qlYGGnEgZN>acW=a)pcv?LH4*R2J^?sY&jxI2fujIyZl^lGY zQ4UOvI?jdVac8vRINQe^XPesJuKrDT_m$0ardir?c1)FK%4g&!wkfNV%9j$yGpYt- zW-9M&FHKG4l-zWF>f-#=2HsQe`6=t6naEYo&P`sZ@XGr9_VLMassW{Ax-?aRPo(mq znf%nw4LOy^F_NVc=x)S2ZReJmGAB4UJ(`~!Q^7Lc+ds8fE~sRWqX+&w1|?`5wUc%)Chm%Vm;RNuaem-@0FFP)P$4Ls^!3h)L=ZtbNG<|x@iUgUeW z2Tt(ql0D*e4+;DE&rhc%EEV7d^~v{aXDqzn`}Iiwtc54@+%oV?{;e2zwpv*TR$j%^G-g%5(D_{&*Wdzz%%)`V&IX!wV(FK zm&QGHN_1YD>Y%E4NyVp)>|s5XbP1OmPewcofH`PlV$rD_)#977Y4KakMQw8Al==FOCrdkK(vY^<$&)sH=S$ z2d$rrpA5&lWY9-($oFU_PBr@{<49Y0^7v6T@MwLK?`vML@Z@`82TqInM|oLuT{zyX z;>o-i>(rpnG`^mNC-dU0i~47*Qv;9Ukn37m@#4g>V9;lZqix~II1=mQ#W7;wQ5^EU zur`iAccA3qihJkr;`Da>24@PhS1$1UfD(Kt;0r3^gN`DEF`ljoCd1CQbz zc!vMJYw{yK67`S#ZhGN(3kDvo8`m`a^Ih7XGw{expGp6$U30@ zfsN5POnDx$@TA>pfCszse3#biMu125aNZ=>`(*=PEzvkk{*4%TCjVwF zJn7$pfoJlsZQ%vai)nlZ&WXlh@^8ezGuf?Lc+zgez%$uxTX?fy_Q!+d2F^9d5#*7- zLl&OQbH>7x>tEHtGu1)Ez%#~c;F!~S@d4oPv9G-pyB?FJ*xPQ?<&QLukwnpQi^Yk@0`0EFj?;PFihzPvHrme`coawadVf5K zS2OU)@6anBU$%@*=QV8fAw`YkNg-?`$^T(MtTs3te1>|NBV-F`_X;%Sp$#s%DgODc)|HgaSUwp z{lokxy27O(-Z}a1ze0qv!isSAp!@PkpKMv?K`8RCg6;(er%3n?G zo9xQ>Q@1So?h*Q&d^~+=#Y?gyh=cNQ%Dw)4qxn%b@Q5$-+*CZ7XUfansvjH0yQ21G zykzH^d&9@U^mg<6>ZRRT#glf)KbgM;#Y?Jw+7Pda*EaAdj;nqh_Ajv`8VBi<_3SEM zQuWgov@3bFn7pQiC*y5fc&(KBk{WL`-UEfGf5v(?@J#tD7QxxtRJEW9nOpsc&e)9IqT-*TR!|sVSZ*FLJ$V8uU^9-L3kuQT?r`eK{|Qcgkd# z=c;|lqk55c>x!3D{j?E|^EDZ7D<*H*!jpCrrKnwsL!OtU4LoBUF?p?+yiQDBvK)=W zW@A1#8k>2bB`u&21m+OA_0NvkMrP~hk>-*__*U@d8`K?Fk{nU!q zlX->KlX!yeclOe)$NetbZT?yFM=sF(^rM-_dRp9HU#6F+H-D@B&*s@r?$0uRiTj(6)q0wL)O>fl z=C=lPfA$Z$fAKuF%j4p3J)|?bKgD@-Id6-s$K!EvcpTF^G{4FG4)YhdKat=#Io<`< z-{Cr|aa^hMwH}xKud)9Q*I|eCr@0i~4yIemG z``_ZY)}6eyIKHh~+^T_iL$T#1jdD4F8F0*{56t>@*HOn_{Gs`at z`TDEP@}9;2OgU^nb%j~Jwq&s{YL$xj9=!WuzmM6nkVy@{Y#(z4V{f1@ymSW1cEb^I3*uM8RbN;h;hvUKc zEeZLSrT%L_Fw19V!uFk4ne8WTGRrRs`Shh``IJRIb8*;yVt4He`Su&k_TBHA{m)zy zwx6t-<=fve%P$Fe?@F_L!m@s5s$u)tH=5&ai#k{L5P8mxO%n zD(z?MU&H=(ei+_I{bnu=+pq1^Jh}c@>rcohdHg&761HcP&%7#Zzs&hhelVW=l8|q_ zPRrHbA5T7WS=fGp=YQwJ@#L3;eD?KPuGNSqpLuoIzWY`!7d!t#zRmL|`@VSg*KN6A zLusr`;*_tK_QsU2}2FEht?5xcIE?o5rUr^i$^l$KLzE zNpg+r^2zL-Pfb@8oS(P#APcYJDV3M+63cc5$)^>Udp5FdBD~Y{kgNK< zG3ft4B)_810|5R!!h7_2>+)HrY|kgWPR~QzKzP6UkLNACi0~DC9vR|$FaBfAwf#k2 z@jM59o-Cfb0(`CStNK+p0^%MkNtqouc+T&l7Dkr ze|VnND`-%g`pRXkRXnkK5!YXy?AL7fXe)#vQF69y5TAxR=NBak62cWpi{C0Yu z!1<(qP7?())nD7^)ya3iWP3N^^NJ(???Iw1z3ngbBEJ>25B=}$QeJ-J{6h2Z4znfh zkxbw@x%2vdH!Y*YSJVU8-E-qeP_MA}z%K2<-#PUc_3*(i2+t{w=Qlrx@V(8Ss`0MpZ8YtF zA&2-DbiPD={ISdYLeE;q$E`Qn@s0XE6^h$k4_W|YpZVj9g7Ja=$*3G~-}||M7qq?* z_BZgK4)&41z3o4b`nLMqTm6Wy)A^+B{e3D3`6Zn{QQzAMUsfFFlb=!k=XCzV{QXRl zUm^WF24O&D5MVh(fv5 z703E!h47Z*$lsp{Ptf}d{z7zaSyYkfX) zr~2;UkLA09QFTK!uv`8?SwBp(w=`&KezZ2tL^X$`CIG! zRMh@~|5wxaC=vcG!YhPdqqr{&_>cWs*Dpm~-zC-H3>14D0F31P@P3^iFhBMZKA<@6V+KFoH#Q(Ys5t8Hp(I~W9P{792%l9P^ZUVs zR}?=$<9ayZ^NOSX4k7%1&o6fVME~&lWkK_Y{(l7JZ&C3FX#P`#FOmGAgfAjU+5BH^jat$yGKYW&E5RqX?R7RlELA0RwU`VS)gN74H+dI_(qe$?Mdr2iPzkFvB6 z<4ttDKdEZkc8DAGyXhp)ww*C)RCk;cBm?fj1O!x#$D69DAkAHUyx zo5}-UtN*^wf8a+`&%ZdoJc!1Z@AE{+x9I$R0Ldrx{xtNjBRr`%&M${*-tMmPo7DS@ zu>WAS@9Cb^`a*nr>mTHO_cuD(NB^hPe~jOQyY#m;rig0|Df^Ht$*`0f2|;~ z9tD80Z#_D`K7X+Szz5dZ^XtK??|Q-uier3VOZcqfxIW*X*6(G-(SHq+pCkM_!sivo z`SAwA7YN@&_@d$%UpEroQ2Zc`|NDd&_45bFH$8brvx=|2pLkjIV}1C~G{3dTzXub( z*7>i~{h0;2zc)esceQ@s4eQS$;fpGd^~p;K&*tLScawxKsXVTarU+kF9Q89z_=@7F zj~T*yD8JhYPb!Z0!|fovPjT3vCA?p8)c@IvqaJwA^|5e8e0_gTm-5ha^|Zaeg6ps6 zQ~h>2e=n&#&JTH#UsfFX-9q>Z$!{gRN52n;{1gc9RUGrnDB*pIqds0jct6RXMfd>W zV}uV9zK!sL;_!c*@L9!C{}Y6l6^H*t!skf;O9`J>9Qm0fyrDSGUsH;6-QgH8&ab6Q zZT+GB!%AGm>G~6&<3Jzpp$B{4`5(BiK3Ol0AqW5Vqt8#z(DecEwalM~z^G#nKLFhw z_CyzdpUM0LGT2}*ca!}-560uc0F=i&!0_)V%@^j2&39wI#P+`GPmT-6h!6X<+F#K1 z7RKxS@8W#issB2Shn@%9^%%}KTj+e#t2p}qG{XB7$9(X7!uu7+dS)x(8O1T56%QJ-rWuVQnp-*@|e{rhZt^nJ=$Pd-W$jr{TV>mP}Z@a)k)*cT47*9)kx zuTy=@DvtX42I0Qz4UhTN>rME7tG*8u^V2s~Kky!%zYzbo2+uyo`j5-RYX~p*SsePW zCHxY_p}#?RO>wM;uOqyy`N4YXdcygA+cyx-@9W;9c&GfK|JFMHt>}6d{@)jg@Hhaw z*ss<8>?3XeAis-uF@E3o5#Zl#N5=I(Q{w`D!C`THn-&uAs^ZAcIN_Hlj{2J*d_i%n z=iaUHLH{D*MUr1q9M>x^CA_6L&L5M6Cp5pnrwC6f4*#YJPbrS`;|$?x#j#%Au6V+; zA#RNCgpObM_hlL%rSI75Nz6|-GQP(3>RRi!M}OZ1|3?sDhxkG3v_9xmUs=sR?4LvZ zvq^D`ua^GyL5mB;$v+`HJndwYKOq_6G#;d`Go>g$pPTR({Z(^Nl;NsA+_orHI) zPv86n`}?|n%lbZNjF0u|Kk92varEB_gwK=wiG&x=wE4kl;m)p+q|aa%@h_15XHkCl zwmx8It>bt4(RTh zJC8(o0)$=c*J^)n^AG#J`UKu{xXnM#-;dC^fOooI>iayzlb*KzKUnRfTMtt~^nX^b zztI23`4p4iJ{sbJe&6*0aQ^+~;q2dGHh&oZ&meqIam+ve?sH7r;UD(p8!9HjkUuC~9kND2h@dbQP zaSXfH5x$A=GT}MW|9Zk3U$Wn~LH)gx@Fm4@ee^EEJN>@(BR){uR9+s?CY_65gWtE+l+Kaop#89~5=yU(`=hzYhel_v?RvuOs}EgmeE~N_elz zqyKIqe68otPV-;&JNEt~=FgX@ebjGG=P!((a|s{R&yyhka>YA+-VOa@svqmOSCIZ` z!e6Plr~BIG=Mwo}QhD@WMRDB!_z%L@n*UDs5Bo}X{35?E)xeOSs``idZIbYL#c_U_ zB78w{^v^Wmovu%k`ulENKW-=aPQSNXRQvcn4W6ou_?n92`|{>dC&31MMezq~JKhEd zJb7UJ`($`}E%21$n4e!p`YSis`3?C!m+(H7hy9lmJ}@8uKKv^P&!{}shp!|&t2p|n zM0ied-v2^zhvf zv#9lf@%awh)am&nMb(e_^H$PdQ2%g!{42uCDv$Hm zuL+-}^W$#_uc|!e=N93e?$6a!9_RPpl6*q#BY(dmysq*%|NNftPUrUq`F|V9AFTFK zc7Gtesqz@Ve`g1qVmYkUljKYuhsP<#)ofwcaq2W z%+l{^{;KwY_vrl@_;)+udpkctf2ZsJz181s{QY`;jsAOs77F|upzHUy6P_i!ibC@^ zfPVA9tNjc6dmBIObef-h-#3K(lAgbipC75?z?T)r{PknPR}@G6{DkmM*XLZHKPCB; z-haUOT_Ai}`v>FqXM|T?8Gqi*e-YlJ;}i4KGU2^6{(nw*pW^sE=PwlZ?N;-u7X(?A zM}B{)f~b$2;>hp)RRQpG703GbA%ySi`tp5$2yu3*zj+#;|EhwJ_g%kso8JY}|8yw! zC;*Ior~4P3#-GoB==a_K@VIxk%^zd=@vYN^L}D^OJTx|Z?AVT>vx7_bvC;9f@*~IR z$HuG&WAdoa(Xp}9hQ_z%P1Eoe^X@Nwj_2mHg6Dw-#EIZ(pIO`(_TZ!jj!^F{66JZ^L{KUFwka&jWjH7RzD^vLMc@ML~k z{u^vtCnsi#Cr#(K8Ly3OV*Ak8Oy2%qTP<&9eDtL=`RveSemuDK5XhaJ-?lkF8N|C~ zbaG07Y4gRnsr+y1 zC`{~FKQujbY@j`n*gQ0qKXEiaHe%HU$Ks$Knz*)X$s6Z})m||_Ic!{AZ<+(joOc32VQcjJWp=Az{Hr12o5@)X*{ z$mG!0jT4#-CiE|`>N`6OBK4N0bRBB>d(RQS* zi>btn@jiH9uN6<2r{4}8H!(Ag_$DWIoHDaoU5UgNGj{Y*xq+hLvC(4Dgf>02c`R?- zoY^)Wq;hy-+cwkhDDT9!q1n?5`TVqi+eXJv3-&{^!Cp*HS=2azLU3wm zyBTFuQ#&Rm0}bPOd#7z;eC+J!PMJtyB=Ab?2IKtH@eLD0A|Uc%ub6peGCyMSF*-D6 z^FK8@zI7~r`smj2Q-g$!Y__SI7#k|e|90eU!?c-T z(|&qkVsd(TX8PHAGZ@YBz^IvQ$F(2L@$rERC+Ej!Oq)4gpEpzNXi)~B<>$wW(ti5% z(DcmIaYMn3Cvvt_L%-~kpzU$+oM#IyF5sIlW*U zdSG{>)UsvCd&BN+ln-2wJHd&>e&%?A-e-mPi}8DMmmNI0_j34Ip*}fIy|n#(ThhL9 zEaW}N95)<1SvsCOi95}SgshF{%yHW6Ws|i9{NwknE*oA-NM@5bg(v!2+i+(*k&sKk zo~e)*)mN-*K^l(m`W!rI-)P#giJgKu?#93Qh(7oy_Lo<1=il0`M|kj0t^ryRyK+xE zGwqHeniq+G&ckb7Lv}s9==*d<-?E3t@6+v_Y4=a$H=1^Aa&NZi;7NXVM|g4#(K5$b z6+~WSAB|UzbK66^$g|kV-5A!N@Ma@C=#zTe8R3b1)xi^fa$TrT>SD>mi~1+=uS9rJ z|1y_{{UQGL?+D|7f6~4y!V`bX4xZS#*|cL5-im`KdTXB#?MfU2v+Z_;S2XR|ME|UZ z*Asc)x#+7pcoN5+h(5VTm^}NOM9%DGL%foodDD(f>Y!ncGui+i`zLlY=d{Nm?X9nc z{U&lb2T$TlT@~^~uH@i}e61SKU)8~rIF9~w$dmEhaPUMQkE8U<+T##jw620UB0SWU z>}MClIAp#rM|dKK`E-TqV8OwYJlr19C;FESkLN$JQ~zFQSLFK6b;q&%{xC1X8*uPM z-^zzVp3Hwm2hWwiMGuejw-VtYe^RG|Uk~Gu_SDPWad6!aI(QOCE22;8pyJ@U;%GT| zk}rNgdEYDA`$PO5G40qyu40Z;+JHKcd16|dCV!s+0ZxV0O!;7vDL|@gz<9Th#!4tptKQHVLsmDHZ%=3%*$9bMLyp(B| z4SAOSor~xT)=?22^33|gkL+vCNz~0=wkU7lta#ne8eS@3#d%TxB!6=e9{dZ&S0v9e zuQejPs9nxq-)r0Lir-`DuwEp8IR{Vd)=WD#k!v`3uDm2(*KSvMJdgKzc+q+hyMrDc z$6I#rWS+S2o?*OlT=(!UxL3%N&kVEW_Bh0!n@u~mVBO^4abBc<2VNiQL;s4tqG`t_ zymEvW?cd4|!|^M;c@K~C*YNN-e~CAQ{=u%C-`dul9$wqJ)4}7s$njEyhrCFgXZyqc z2=W}^!M{NM$oP26ysflMg?J@1x#J`qt*{Cw?wb{nZ^jiI3O!EeB8Zv47dO zxZ{ZCS>#F)9`Y=HH{Tn^A-uT=PmXaPWZi`!Pvq(jp747j*O!5Q50C4wr{a!-why2OD^}aAK5`QhiL;iw!^8F!C^0MUM3BN+T6%UW|mwKB! z4$fcJ!Rs}4ua4N2i9a=S+|4?%714({T>d5B*=|>OoR@Tj2Yuq-?2X|( zF71PcmoaT{-XdH$t9_gINbp_|=Dn{)rz84xZ#8I#0^_yyf7DKCb)0xpw~~59gb9Y~t^{ zIqs$oRwDY)Z$bVmVZ5S0_3n1N;$QKqBFrWv-T?pHPhbnsm9);zrEydnCQ z9Xzo+^2D$|gxCL`_PogTWy!Q-lkt{#Z~J{X(Kl_{u}NOa<~XGd;y>;q@qK}shsWcn z5#gafL~k@+>7SJdFKUuL@esLxAnW492ixt6K8`o%;ECUJzY60Jf9DLZn|fY~=tDh= zzQnIXed0$e!b4t!myYn{IQb!W9DJWO?cj-hKF{PFJXc;8J-ogzhx4iQcj7rNmJgMh_4~O}acnjt@W%jZmf3oNMO=Sm9;$HvQFn{v- zQQg6F#hd>fdi3q2c;`Gkj<@FF@iFG~)6B7fe!!}&_$N`Bn!AKT3up380z z#anXd6T9pF9L`r_cfrAve!k7LV-vZ=CEe9a+VD~;7^@f3S8(VPI~SUEY=M6seVmsS z!|Nt5eV=IePwXD^yRd)7ZqC7z`nb@vW0U!~W{zF+0oOsxp-=2w^su zK+P77m*dFP+;K3k*d?#(;7R{p_`7htNxdu?Ue)Yni~7g;OMS|nKlU$cc&R{JTp!PC zB@d7F&3DOLa`0T^DEVo(e{6Ta!IS)*Yud3%{;KAeUg{m=Y@4DaVWPxrFTUvC?f!JTZ)kf<+fy5D`@nh1f3ZDoX?tDUTQ9Kfxl`=E|239h8??vO z4R&AC_SPBpIQ<;E?|ZG~x0IheS>?1n{X#uf{k^YK{pwHdxfZWzdux+DuAgT2J!Q*J ztKDSQwwJWMru>}pSHOoq>VNU|>gSnOKK*>VU)J_C@}U0b-k^3>e?{Y6()OChl|9w! z$-YtJQvHqR+4e!hOXEp4x9fAv(iB>Q7qzS=RQJ>aVH(+}qTy_HS1EcM0v4@!?AWHM zi5c_DmQ52A=GQ=*rnZe8{rKUcS)wnhT>6Z@V4PKcWc#PM`F_E1dgg(_zP9C=vE#<$ zEIx37#-;M$vwXuNzu2XG%OgMVj=25YcijG`UhMXNk>nfScgwdnyX6Po8MmMOww13x zB+hSbiXS6?izHuE|5FFY`Du^;1MiC4FaFr=e`0G~->Q9<_w;{i#4SHC7q{R1uG@b0 zOt<_Z$@}Uj>9hZCvcJb|zv0V2$)}gy^0k87|AF_!?N^qpeCwfce)2`}oMy>a_K`HV0BBwzoTJN}HPeg-a#+s|nJvWLa}t$XsfNb(I||D6%nhx`q^FK$13 zv-Q7nNSxmsiXTIM*!-@={BCX(zsm`JpA!5I=Cu5<`7ITGFSAH?YCm=7DecKqAwOh( zvuJ<6COQY+ANRZY6RR(EXxz_~N8cjJS3Tpl?wdD15VxQ6%o|OQ{36Nw>MrT=f1nz- z?~_ma>Xzhl+V6bcY5L~v5610Rf9USdglFDaB>9r&zxjxG{}uD`W7OTihvN2II&Wql z9_Lqc@ngs@l6>|ixBpGgyf^Tlar+HDZ*l$-zIlt}t2*zoeA08?nw}`0u==A-z20!` z+M`)06;wZ{u$>tPN~`MdOpt=w!P;<-e)#lL$UTHu%}(U*cTb zf5C4i4E}JEFKYi{e4a>nNpa*iOL$pv*dHW(PI1gHFD5*x{$YN~5k9Z-z^4iCzs}Y_ z?C&7Fr8we$l-yi08~SfW-;W6S;|X6N`!6T`DfK^T)h1p|_@c_g{w~6O&l84!ODd1& zEnZIYE%NU=!V}lW`~OFT_v!mpF@L|C@Y&sG2J;L0@12B~6-WL)KzKoM=>HVqJ@kIp z3gNwkzk~3k#)tg>jPO3i;Xm?&fZ~YnHp2V0|1m!QLU^B^{~-TY!ZVxf z^PVC906ISos(sYYzYtzfTt1tZ?V*HcX?z_@_$=vv4B>k_zhNFreAd>FhMl;#0>CRe zzvBG$2pxaGJ3UWzPUVr`6v=mb-pxFn9}Xq?1;tT6hY{ZCc{`n+C$~uUA4&R`2tQnL z+uQAbkvG(Lr}=NK{kzul_nbZt3-$kSs*gSTyd>1mA%ri}_<9844SL>OitrVZKa}u= zYwY<&hehHr!h3Z6i23c2g!d|bkapGKgr^n9{PQTnGqgT^G~rpr4^aI_5I(E#cZL2w z!pn-o|04-6sD8{Zk0IQ*{#9CHmgFBx@@4Y>D8j3XWBz*_;WfpvK6pIgzUN7{j~v^g z;;ZX}y6VUHPb&fAt3mja3192@>iGWCKfWk9KchY~8W`eOJjb5@(SI*c0Qi#Pm_J`g z_%g|#LHG*cn+WgG^(*@CMTGm_r>3;TI+e%z`%IEgDgH2xJ4g62iX%Tmgbyf=@v#|( zRUhvFqyGn09`Ow;0r=kbe})ayG5kO??Df+1b`F7qNPE^pZ~{2=_a9;BL(JD(RX^~I z;y9ld2p=GPl<=(L(Ek#`2NlPBbr#_TlHWmiQE~LwEaB%WuFZ*;6JAyv^T8_!zd&)+ z>uU(#+j`)B!7=xb?|KY;-a{Vy(ueK!a<39!MC*~N;5y`fh@D;^zJ{(ruvfKY6Zq#q`BQ}0qPmHKM@IJ+HJ|88#)Ai)u_CNgW zw4Uv>9xZ;`zTX1%`(dq5=)Pd-BWD~h9jE+)K6^7Dk(NdBXQ*9rd^ z;SIt+PI&8k@%ss%)5IV@HGMxZ{J(_c>xv`(PY~W9`A-twRR1u3E+u?Lanxsx@Z^&1 zU&w!o@TS_w`1v&9D~jWM_!+``)IQ{Q65glwF+Vrjhg_@$dBynZbiLAPeD#z4&#HgW zKcG1J?{dQTc6`QyiX3o!o$lwY^?qHa`)Qr-SN(V24_fQ}l(pV3+1vg{Kl`qSA|(;~ zFXT|4O}(B#eLfF_m{fSs0d8BrEni~KZ&+WwOY1+>82{g0)xV(YPw2nmA3VNx?>7`& z58-~n3-F(KSgS{f5BpB%&ra79^ZNXH%>Q3k#n7Lq+5F>r^&5mI703MhO~O-(O_URE6b7YUyu{VyeaUUB4SlJJJ&sIMu)d+2`mj|uOk`|&>^yiaj?cCBo;5S~%| zp%za3RB=6Q+X2S;d6UZH{>IOg0KA|$^80JT*Sfywbp6-ye!RXv9H)JG*0OAfv#9HT z2w!Xc>}`w*{CLCAM{|6K8a`1`+~N&bxyo*{fif?yj{Z48@lNj_ZLe(Gg1n)AGvxmu2p$E1vG?__M|^c&g8hEIzCe8*4aFV> zfU#ez{fyrK!};-HP~4^cPM_!a-aq6~-y8pP=@0)eHzr45eBl7I~zEZdS)B1$HKZN@D zD*oe90K3?)_57CA^BczhA{76F?Dy&QKgRdp@2dR{--qy>KVT-S>l@sE*iS#-1D;bH z`T2^D58%Bw*zt++e+A*i1LNQKdn)O#^;vnu|0Tkgzh!aw_YA@h*7GCE=BsR<{NGLZ zxr#&nO2RMrLj3&vHNwj(kNB@r+*3Yn=VxC3{8i(_{4_`YFRFgv^NQpA`Ax$4`(W1+ zzUJ|Nr0pN9zdz^;T-#AM@ZYyS@u`74_L-e_{(${^QGNL4C&>Hizmt9VKcMz8KJHEZ zx7PeF-Ds~b5nm6*$MeTV4Gi(s^!fqg>%J=AZG3y%Ki%rD>-W(yep(oa9tDUC`?b#h zIi3G;|L2}v=I3s+ul0lV&3*pC_IZ7INSF3K-P1n5y&``7pS+9xTi5zUe!kwNJjUmO zexDxl-%xqri-ccG_>$rn-`5eotT^t!{e#$G@%1K>&yxN7ko=(HIKQkTJf}FmfAnC&XB9{OA4zywapd<=gwH9C>ysl0 zpC|k=gfA$L{5^^AMa41xpGNrJ&fndRkA}{F=)VKiekb`(_qQ-V&FcJy{<}gI1JCOF zqp`j!5uQ;T`F|zhCAvTKRl+NZLw+~mRmD*sR}x-R9N+)>8sUqINA5URI{#F#n@0IWrLg0yutvurU2I)^K4*lOGyiakAkE;pqR~+$w zi|_%(@%i{Qiu-o(8}mm_<>CLeDhRwt_zws#DUSFass^;s3dW@9X(vUe7-`zZ`Nmt?#?7kD{L6F~2+v ziSQ`U^mx!j+xlU!WZxf;{+aMfS^)a7@AUa$<0E!`4L<4=$7}t5Us=C@g#H=Q{Gk5# zwmv$||GqRKF4&(_|B&A|l7F4n5A!OI^+l!2{)ZpF@7H$g|1w=aJX+VUh_BQ4C-*l0 z@PDph*SDyfN9gzip40oA$j@E9KV4J(n7VlH!=Z4=22&`2+qa!aLoc zP5sDT|6~0Uyv){g9^zl7{2W306Z(5zoPYZW?{xpzcYhf6JAJ-T(fE1AAbVjRke@!(~5Un|7*R!JxKX~y4uJ1S?l;%p!wwjogdIYi;83Y z`Hn8<5BRr4^6%_YzT5n+_4~_f{eE(%&kxr6`M_Ggf86Q!+?{@pz1I5b^!?S|AK3W` z>yuY$;i3LowEp`K!V~j${f_zj)r2p<+OAK4pGWwL;+P*_LwNE$D-Zm&g!d_q^ULc9 z&nS-T?=sI4Q)^NM5IzJTzW;_&|+gm=1rtdsmZNxq>t z^7k&nn~Gz8og=)ZIO^-&g!gf=JfGm69h`v@OY9Pz!M@Pgu4 zzkY!5S;Y_33BO8sMRD}+2MMnd{vpC^ilhGilkmFY7=ITLUeM1!G5$YH_>#&ae;*;d zr8xTcV!{(2i{HPPC%jj2%pV^mJgqqD_hW=-2>&?YS+ai#;RVGp{ystYtm5eZPZC~M z9M|WU65i?l&h0znpYPR3eopnHK0ZbGJmH@vd_i&4$7cv1(C=sC{IrwsPQNc$B>kTy z`6a?HBfQh^|CUuA`CTCS6~)m%pC`QMbMknh#cKQKR>MtDod2j`5}LAcvS$49r#YLpPfF*@Mp$1 zPt1&u96vEOvu%88Lw<{Dj<=sSy0u_|m(JuT&)zt+c`SdTSe}9(Vf*_0SbjP`qVVw0 za3Mc1nx7n+94?p-EraJ?2bh%{o){k)oi;8Fjh#3#xorr6jgD_08XFx+OcbX_w~d~Y zKRLf`V$#Ux$HjIS*rW|HKXRP?M0E9d{m^v&q^Z@9aW)SPpS5*TLVb=zVDd3FH9Efa zr0M*&sSU;g><&-njo`>?o+g8*b02R6En}v*b<#Xx`_%E!g&>gWnc`SJc%HY7Yig!g zG+lQ3%;q372|Ye`Wc$$gaDHU{=GkG(?ce>i5<$5 za4&;6O-7n znX-!Wrux>KnAA*SWOQn^xHpVWp)3Nq<4tZ)-fUC4eROJOXbf7d-jip>rbkT~Y#7>{ z4?5Q<6?>w8{p3V({lpHNG_<1#%yDsYbbNZXDpX(4gIOb)pPW8>LMBvEx~*C1Ly>o*0WAZ;@FeE5U9YogTCGEVf3?K#VqT%TI32i&}Lg zh}&f1g%jg}kQ|?|tvG$QDOI7Y9-EmA#{>E-d^t8#=Gf?XezmKIC$<%bhQqGkIyq_v zWvG92oAF?3bUW&AoAzyxNjnh-BgDjO&8$|kSPSBIwg>S`VabGk?9_1HOn;L6Z6mWf zSJ?g;o|&4S*al*B-VDqpjNQN$dz6sluoJBP7;gF@hD$$331-v`MUS@xlkt@4KboJ_ z;BaBcoRE}c>;>Z!^SsVek_Q^MCyj5hQ?leu&kBb9+$rOZ(4}6S?dEMV$LGh!vY0=n z3iDMQ;(LBX-~?&o;OyT z0u@_EC#R;5TRo|)g615v zkj%xQ3Jqd8|_z)Xw{6;GTQAC`$L#SQuGmld{+MKW1~$Y`7J|cO0Xx{=Z=q>{7W?^hQ`JsM@G+B{KU9=9*(gjAHn$; z!#QE5xnMX3$uNJm1?Ph2Nz~FM(?M~WcC$_!8Vi;bmKh!gr}o5_V3ih*udrXNsc^j@ z!$H?05zA9L&trPSJS^t|(NGBH|FENHf>hYF;LIhS>3l2s2u@D2R+UZk9cz|Cwl0q| zp`3M^%;@$wYo>+cOevm~7&0fT(+$^3nfIzr6y^N2+GPC5pOO#fK+UI}sg01S@NJ?E zD>b?bIJRt)=U|)#_47o*BgapYwsfTubCP)=Xi5A6Snz(xQ+;p<$cZjng3Pkec`Fko|8xgj6`tl zjrTh9d#48+Jh>E~HtpE%ZT?d>$7yYldl){u4TnDAv)vU3Pwv(9UKZL79it{SwIHiK%$)5d7e5su$em8Cm;}Ad64xZ>c{HBm6^*rm~ ziN4&iVgAJ5n&EMsioWthyx*1``h>^z(sOxx906|$D+OBzeLh~~z3k%efR9J|3Lakb zM{&Dl4{wF^&3kx-$Hnz6dU%|dWd~2@wf(;w){FF8(Hy7DUN*^_j7#~fYd*qzs5!3G z&q?%|y=>sgzW9|;Ur_hvI3*;rMS0P>m)}gzMR=(Dpk6*6)>ZJ?>lN+#s=cwm|@rs?Y;c;FhZuW06q7VKB^1lhs`y#g-;URyL*F6!Q_?NuO9ml$_ zgmH+!{T^Q9z2P_)eFYDX^D^h)xz;&N50BS5xyAN4#P5qP2*;)5Y1zSZ<+<=S)o2Tu6uYJ$3otN46pdjcK^g~w4UX-_v(;`JU_s+Cw?006J9#PlVh3h zWt}q@;mLX<=imu{_Gh6!sf$GqFY2H0mLoj)x6ZU5{a>LzIZk~mj065j`-RIPPv-lk zgD3rY(KYcpsGH-IX_pQ9WZ(KpINrp+o@?8Aa-ON*Bffs=cko2tKp`9-qOa)Tab7AB z9`YjV%nR=s+Lhx*goik!{epXiJn8RTqdgAEOJ%>1C-vQO@I>!LmxXzj5DIrUw)U0y#I96Zs- z>*A{6ab3xIzZIGP#GfUHJ~{6V+&j!)@ZGfUxvzURjfeB3_%UdBDYKUi@yed-U^c=- z9UNeIV?*IQDaW-4FRG8nTjAz*yCQ$^aHvntpEU+ToY6<)g8?w{C?){7jM3@>H&vY}pN-@G}jKk1+O z2rn8(RG;{}+36IY+xd<=nUz+X@&3brzKWEOv<8|kPhc`g$(-|ZXmuS4K zuiwL~EXV6*uuI;ogD3ZuE;Q}fWV|$QY4`8(roH#4A@2$1xbidi{M@@7@`7<{j#Gv& zTQuHiy~uo!iSRJqr2aNND6Bs@PgEm3=nLkZ145pxKTxypD+7<;nsKcy3jv~uV8qtakTW?c>m5j^od>OH5@#N<95@IP3$Ir>9%{@l||4J zQU_VXOKA)8BK!GP=%4V)hS%@lvAzX|KIyl02ZZyf^l#!;vwjgnW`kX+gT+(A{K-62 z5}w)12A=HMZqx8mLNZ&F$N5YCs+}iwdC?ET^QFwES;J%hL@(=`cj$BZ*XWX$_;tH~ zE`4ba@9+nQ`ICMt7@n*CIDc~5|v?yY@I-^Gnh2I4`dGr6oL*N7T?$-e%lX9oL3%kJyiUiz~=PW{gA z`#-GwzuM#UAMC!S?IqPy`;Bey`-tUdR8Ql#w!MmW)l<98w)bAF`fs<#nLpb7oVI7Q zy{>kX^Oj%wo8{G&U(xoA`jb(AdOm9TiN7dc<0@%;3GKhP_=>h?v^}Hk#gD0Q6%ZVNToAXY>X2 zRvgOM{pR}x`}E8MgMIDiwjIZf$65UNr*9e?-8?(CX)5^6|E7rv^Uc;xQ`^R#^7!GR zIo0=m%G!ng+^}1J>KAVPb0l9JvAos=aenSs@niVc`{}rS_+O;>s-F1fx|C0P{5Rj% z9M7+Q%T&HUYrbh8{%m3Od!sV`W$XP++~2Im%l>9P@#^5Hplw%Hczat;?dW; zGwx3<=aKj2kK|LHc&fkj^xtQ#{lq(-601k{KjHCzPUTU5X^;Jy&;Dic__JESrMJcX zZTaFS`SfNhmwjtozV4Cl{aoC>uYM~Y|L3}tZ~E*n#O;?n`73(zANyXlsY>%Rt^B0< zanuI$jdH2bIntle`b@two}ZFOfA8nx{${gw1d2R(}Yk^M`LIYZTe=d%ywx zy=!n!)wBnnO-As=BSwPpE7vx%J;d%p`7hb``32Y51{);2xMY7%8(g~?Y@G1q_v6n? zs1rV@{^9qcuhanGf4Ui$51chRfDh{Xfbo0XtSm|+c=6FTKDp+R?JUCi_rT+Xmoz@) z?=^%ksQ+?pEnANof`1iypVa*buPF}ykCMfx*&tt49Ql0$;T81{{g)=Z_&u9H^!u5F zSC6pyf&DFnmsDQ9+aTNP2|xcxE06duBD_ideTDGeUG{l{@PAQpYpwk+>O1_s&)$s> zJa2M9-#07w;AO*eZGaCFj^~{KFDQ=u;&~-jTl-)5-;UUpyNb^rX(b@n_?KKTL{RT_ zpCN6BoR0<^`#q%p3ZLL!>c8y+n*#q~Z};7-{{nq~hg>tu_Bp%r{)Hbt0&who`2pV4 z{GrUh?o+Jokn_=iW4}!Lzv&Ys{g`iBDv$a8YUKf6Q5@s_TV3k+(ct&q;*jfBPv$+J zxTBswEdjo-zo3`*kmGh71IPaAb@B1|0VM)&5?&?z_GDcCgD~XTL$3#3jT^kmgRFk^ z_f2GfPI1)hw+Y{L`I)i#X31xmZt6-oHbBEGUli&v$)>NzO-uU8%7< z?zrQXBZgRd=s&IIeP87pcCXfWbeWR4nfz`L{(Zvt5RT`cL;n)tKP35^53u!wdTA2g zRC%l?<`wttV0W!J&eywk+j>QQ4pPOy>xyH3!}Ak?FDefI-=hu!Um|%tUk`Xwah#v= z{5s&-`@bX@Pgw8a`EQ-#N1k?l*2ahYzf1*z|4$#!oyJeU)*tfw6N>*B#nHdF5Wb%3 z_osw!P#p8g&j{b!{GxvbRX^tA|04bWe;wb*Pw7%y-#C62<>!3D2Nd`1pr;cK-q@A# z`Qs$AUnKnh_!N_zj|RKg&*}Ase8w$X+w&V0Pg*#E=QrwM+YWl$0Br#N3ms7W{(-}N zf+X*wK|l5l^&jKwK%XG#$NX8CiO+wyE(2av9P__?XG=EVOKKn2!+3tCWwrl>-|dKP z0S^70{9CW@cgOsN=VwBGU;8(!*GI6A=WD|LzVZ)wI$Gaf0sF^mVuAN7j`@2%;TghD z@O2Ey;reEP?4PJS;2ghv7v|13`0e8WhyIqX4{-kel?npS>imN9!>@gcwH^9>G~m#G zl+K?Rf9I0@e#LP=?B#?HD30~?M+hIBx8oD|rx+*s7U8ohkNAJDxNnE}I^l@FNbk?R zmnr~WB7DCN20Fm2*9Fku)c!?&o=x$$2oJyAsi zzunnMtmYs2x#WuY`eH-{f!7Gn6VC77*+TeElHclcjO2VY_=WxAm#zPpKk*%(PV#HT zk^jVyz5c`X3!XpTNk9Cb*7YyW&p%f|;IoAPg7CGjkI&r{zka=#^!u)FJH@wF9QjSX z*!qY0;Ws|TU>zj)RPm}!*EAHDN&Q3VuTh#Ld>gym?0KB0%;(KNX10CSi`hflgs*g)3 z{#}a0zfoUc+J0B<`^Fdi>(TLt_`gK{B^Ag0xyuMo5xzipT5(+eeV*`);;7Fr5S}Hx zOn6RloFBhTc#-h05MELo_4!r8D~e-&y^?UAKfgwJRprsYi-gaU{cjMyK=!X8yiWMF zgfEi)2H_3Gk-zH*KU}Y$;s5o7H_84DgfAqmsA6i0pjnDC<%$M{$#yzo^!|3m*T2|rrpk-rk*#}Iy;;=UcmzwGb8%XS@P z@G^gRQt)4lcYGe)eDmg#0JslPxzK)2y!fiEK|AhGVf~$ai{(2^1x^1b{rmiS+H<|^ ziyL|Fgd;x%{X7Bdt=m-)c#-hG5k5=!-+hL){jT~~|6IJD|3vm1gs(Rn63_u|JD(3~{&7Bd4%?^xF{`#a-8#T+_Rm-Sn2$~;`*Y;q zM#8IvKevMe9pExxQiwNIE@@EphoA4nx;BmDB+?LN0-GA9Z_RI8r2fUx!V}4bCCmi{ysD9M@*<^o? z{5z*ZfF0mf|6m{IAIRbTfxvIyY5N!VH}L*H;0djFtUvJnzfSSP-aqR85A5yj=W&p~ zK<~HX_<{J3C*Th7YJY%tiC(WD-v=lFyhivs!gmt>UqQ> zgq}_~c>B6O_tp0i&F@>L&4b3X=IQxCsPg+s83Wlf!%qx?KJ_jDsg*WI3Ww&M`&9>oa@V;GgXIIRXm~eG=d7Tf;cyv*?zCCwZNH zTga2|EY<#aP9kUavPJDie^)QS2`&C9k>y`=!@{6PvV`8JV#272OK@I?N?_r>*<96Xo4s)Hx>wH(nW#|sXg^wXxub6sU#OD0~H zNSVECVh`s_e*SC0!;99b#8r;)e049phKI-bYejhQFBmr;2=f=r_xEUzL+tlgL!Qi6 zSqD$_)*?Lduj=7(yvq?@G+vIQ=br8Ux#CDUc&<2d4xTHHnuo`6tVDQ-L;TCo^Py7r zYL7$gM)d`99v(k$s^H;8^#yem;lV%Y_mzl$(!ccx5A`B@o`-t(>l}yJ9f28g_&l@Z;2H7QCU#aLJoqR6R4xkrllIiT+v5%L7vaf#P;~Ib z?>(j+oA6rZnAgSPPc&XR&i+$qH|pPpkA(io`lA%#Mf1mbX*zgDJhq8^;y&$mr9O@_ z?bzg6vl!vQuEg8CIP_1}dC8vc;>{Ue%J5}FysmmFM|iL+dyaR(!IOSVd^Ge=`lIRK zNgSmJPvXej_hoI*Q4zb`ZxzE!nReOkERKZ;FB(TwpZL-8@HpPy`-OI)FK{CAN80-% zyr_SL%fh@!`(T6zeUiV02v71?b@0UR%;!RVlE1|LyUSnJ@KVAz8~l@f_R>(F_)(1T z;GgVy9aeSlg7Hi9U&Fx@eLVm5?H~FVwHxg>soTK_4{?ayS<{Y9^IC!G3ZM^+UdmQ3l^!c>Gyy4)9 zKF)K+!;99H$kih})RnAHmrXl1iK92!?w`n~*T?Is-@y}onajgG%W=WO+ZEwSybBJV z3K5>@!MZ)FPk0p%kLz^7!;9*Z zc$Xr)XdEeeZe`*@?Rg3OiCi~Ip3@GV#KUz}a`42Tou(a|__OHXah`*IJ0SEg8V8TJ zz6dXx=W^uz4$_`+@Fd=y5nj-54xY&KeXfdwCw@ntJ1c%KIC!Fu^S9#RMf+Fe`qsJg z!uOjp5uV6N{fU1!UlG=+92dIeRUAC2`^;BEeUiTg2T$ztyw>#aqW1|!U(bWXcoB!} zIe+~g9_OzR;i0a?4&N`SM0j^*cge%sQwi^jihSZgcN|e(P(L0XKleT3;JNCr;NZFP zH}B!`bNQAWJejv|jhy%8yLHKf-0^Z9lpH)+H(X-cvB`Bn%fXX4dfpJ`S?aOU+ue1* zqT!_sUpCZ%;ic5T zoyAd(@Zg{9IgSMfFUafeaGVF%GY+1NqvVw#FIbm6th@Di#qcbf zJBy?I@K7IkPd4(qOgpx%=0CYdwDXQK?e)V#-jF#?9saV!yb3~}?0J6491-e6e+aLK zo>x5>;X$9&U)z005AX16!aR%Iyn`qGkt1Hi!|VB2s89NB#laIlxn44TVZ4Y#;vO^Y z*yOuSRS$37k#Sze9QUgr^vRy{Tr<3s@}hZ;J{Mf#UyAUe`Z$inV?ur4iTqKf9h>B3 zz`>L8abbifl44t-*m$4B}J?Qw8jiN3)I@6O_= zICzrhU8Wsda9;56)~DmVqB-uSt{R4yQUiC^A1e{woyC!QVyF*1sr$@#WsBP7{wPOycNRx2!i(zT z{#bJGq<<4n3H_7#wAUP`q}^=LC%iG@mCZ57D}0V)DWVT?a9zpzJn__ayP}Wd$T)bS zcm0j=dMP@1G9NS}ykI^syl%#M=4qjSh(r39@9X6vJmgRIe7~gR;E6uIKA(5+L?2&Y zE<1RVXTDF^*WZ4hPc5LFuoHjM^JePmTr?>kjJihPK@8C&Z`9ABQgD3j9?q@wbz8_Kb@VH(Y9v+Y1 z#52NpQTO6sE%N>`Iqr?{=qn6m%fUFC-ukoCl?(&m%e1C-9O>+{fLZ%Cvouoh=PMB{_Q^$et%8okvRuX z>~g;?I(V-7TXFDQ@%A6yHQz{UN;Q zJS27pBRs(|?{Z$s4xU_h_8%P1LvmdA@NS9l#cw8^34WWOq8~79XzP#i)>)^@nLXJ*_cICL@;T>~m$dljF zrA}_Q8`Ots$0od%gD3v+dp%31wCfYz;{B(fE+KiTdU$oyj!k%r9v;8%blJn}IW?{? zX^vBBK>WhESv;QnYhcw(2=_bU#bD=(?%xZ_=33GWk%{(c8f+SmO# z&dWJ?VwdZ*0Sh2va~lc%}kO`CRX!t3|&IF3ON zZ(}{4mst;w>#FMERky_FjRgl!{N8nI+-}psll-N=Gl_76c_?vudtOA}x?jch^*MMh zeFF}jOJC8!6Mg(WsEUIp`uKZL3l5&>S_C20`uSCJk#^S_IO3#$ZcUA z$Z^`i6MdZLK?hIduO@wE2hXLi=HR*FZF+b+Y2DOwMti)jy6<=JT>cduJQ+9Be+u&_ z^Z&fzRn1;D(c_yBmL2+p&+|d=ruKPAcss8T?FQ>z!{hse!mBLDd1b>(nReL(hkx9^ z3l5(2$Kv1O`j#C$(aZXJU*xvS^V)!i$9b7GJlA<);EuR|HN)e)NF01VYIbS2_r-3z z9PfbPrHmcfqIu?cXFWXDSM8G5=#rN>)9oMIO?S!5d3d~jE<1SAAH069Ie3yszCLO= zc)`3u*GDT3p6Kh(#OKN0Tzg(b-!Y~gn;d5yJkiI`IVn1LBG2p7IR{Vl@jSlZ;E6t- z$D0nGOJ8Eh9WU$abMQnT*GslbUdh3eIC$Mz^YHk-#gc<3^CI83NNjG8*A+*fgD3v+ z`FzmB z96Zs-^;~uEL?74lqJt;;cs^}8crJaZt?ls&kLzW?!{a;`9XywRb6xTlyX37nc&>Q+ z3hnWVf6?#Jirj#MC+)XK*2QvMbnu+1gh@$&W2fQQ$1J!p7*J?OgLuXU-f z)uq0^ZSFYOzk=bhf3E&r@aW@lzU<(+;!Taa{o_0jcF8MwcpPud@Lch--KIw$^Li$_ zizDsfv41(k>&CxIm-^}seNy*)pP}W^$ML3$-NjpR@LYA!?2?yyX}eul93=JyZEtCNUE5PvT3+H3yDzBz#<%QoeW%?gcd6ZL z?Qur^FKc^4@y5d{z0{UeflS z-L}1<`D}j9@=MxYQGP@DE83p@hUK+tc3-?w^QAcv+@)&gDr>j-ReRj}nB6aGds6GCqVRWv)W$Q_7!b!Xn&=&y|_p9tKF>nleU(7r(*cUh7FLs=G;_>sd2rldH6xxkF=-1Q=a}VcPU@;^}`S2_A9@1``rX zCi&D&?))_$?UwKPN!)(pyH-Ati1V|)d4S}7`KvrCu5UH}x5Vw&zhmv!|8Dot=gVK2 zS*x1ZMYSnl>N<0tvtjaIJmx9;S7eo6Mfeb@XilYBzQFV|noH~-v9 z_C4pnN}s!a%U#N6Jo8u2uj2NzH@o9+9Obc3^64MC<$d+r^Xs_%YSS%W^PE4+B%l1T zTi$E`H*xz-o&UK1(!TkR3&sXJ1@#EF`r$zR49me*3{+nAX&Q0#Q$cFc2 zt^bOBpO)O)k?jd~=lu(L?Dy6CkoUEIyzlZTeIK}dw@bFi*#eF--A^#=KKja_p6V!IdWB)%j|NqndFMac(MExal=hSY9hu>efh45*8 ze>?bir7MniUSY>0j<>>qXAhnSUaeE`idt`|=SQ%AIs1NH;HUT$lbnwRyV&pRdcB(7 zkN5%dvq^ZBaDM;r2YrE&oR5aMJK>lQ&ei;*vQG91l6}~jKEU=L-!o}-#4oO@CM=ECwvd#KOlUG@E;QX-#xy3^{;NW?U0u?fZ|#! z4mUCrJ7+K5FV8>i^O%Mk!0^z@Nt6gn{{?!KhPq#RDw`hKG{Ko1%WRqj{0~i;kS_d(+F=Vj{c8+hbW+a&e})+|0~J& zC=UBiC%jkj{k8oWg!d^f&%}`J7`t1ozkbE>9_fE0JgYd~L;dfH`*z6N-Bo}8+dsBG z?rQ&_9~QL#us(REuj8oS@2>vK{P9I4@dfLfU1VoppP&A>e%4k$O|2iyPoF?xdFlx8 z-Bmwxdj7!te3i#8n%RDW&OcuS(X)p<_MPfyS@VPS!8=tD^8c@%KRn^Do)^~If8FZm z>z`4dptd8g*mvrmmi7r+fR}F9=-m+{B$VcJ3kwjKTL7o4tA0M-ZQK`&YzD|!Bt%S1O7z9_jdi= zt$$UT-xkS!Lvhsqb%Y;I_wTPKyruHE|8^tci3i&J0RJB0NyV{#{So0Q#gV@s6JGeL zy*~l@Un=g~q5rTym+D8}Npxo$hm{e2OV5J{b6Xe13e#KiGaz?c@6Neg7c)o$`Zz z@|}Ny@7D7(?%&);0pN>t{_X+baR4ytz(;6(^dQ2=6vzGP0|{U2`QZW`zsTzY^*=anJ~%%A z_7dJw9Os9J5T4NUFYX^c6pB3w1dRM7RUYTZhbaMgFX0Cho+A4XCp@h<)`y1>zPI`H zgx6LdEA;tQitH!!{xsGvhY{YRIM&CHB)pg84_CaCf1u^Gf1&>v1%MY7$NlGj1K=^x z0bb1yc(d9+IDdWIqZiGP!!hrHW52KGw|%X@)A@5w`v>*&Vg$~K(c=zqTmMv5Ki1#5 z4hlNJZTd6%{U^*XgQ@^}HYkqy;RS>bDvs;Z7ZP4j9Qio|ir1JQkN9eQYsE4D6*t-W z8Rv(O`4nq=hwxVYgZ`5CFY2rAkJjsV)K^L4fc>iWAMW4&2jTOI zL;lr-*A&P6avtHkKVjD=kbe!~JIVfQ39l=T`h6YYS-t-Oyi7QMf9v&xH&j3R=M97} z5&lNP`TK?E6MhTHzlrc$34b%;{QbnY5PloUR|vnI@V63v;iu#4$F~u_AJymE3E!Xa z3kbhj`yci74#Im?9{u-D!utq+7vZ^&$Lnj3@P3uY{Pb?ZGlai~@Bzi)|9c6~l7AN} z?%QGfVt=mAKNueut03^Eem@QCzj>cxlEe5uPxZt9k17v%MRDZ6)}?+Q4Sqv^QpYF! zzl`js2wxyPtvJ?~pC>#+g!6vtBRw47YUyy z{of#bf%IQPc%ATT32!Kl`1t;EljLt8`DMj1zwaTu)BNN+|EQX_9qLD(V=L!melJnM zJXa*8Qo?odM6TlC37_8|Q*-bnR(`)+)4>yc{Qj7}DYt+8KCVFr&!un9!>gNiY$CVV z1yAy_?BP{E6n_q3&vbhnuDtX+c&<1~9v(jjspjCx*jX~|*hK$|hj;Ky$P4Pn9H&%J zXbb^u7d>!Pu3Wj%fmd&@rsAHE5ehxWng=I9Fmty{yB_S z=BTQJC;i6n>rCuu*C+Ymc>6p&j(5<*D$}^U{p)kQeFS%%j8SbV^)_v)ys<`)vChJXaip z4xTHHIR{Vl9d$(LpZMKy@I+rUUXe?l6UKpfrJbKs*B{}b4kRzd2ZwegFF6NK`21eV zvWLfYU-R&|f14g&G+yx|`7(FB7hD^!({zM~c%A*`;0d4on{)6aU+E*m{E1xM!ISx^ z7~x4j{a@z31y0WCjQb72CW1k*2wo&C$ubC55=^c(k;q6w79q2jNoHj)V=u{uXvckB zJKCsiQA1N*_o-5=RR&S3bs4IxOIaH2wv?$xyGq;ddEWDX=6&bPd1cyu?f0EuCTIWW z`Jd-@F7IV7?~sAV{Rcce$KQ2syb=f7^&VIGoHK0Tnd0a*@L1o*L)|#o?tp>EewR&j zc|3ot3yb|@yZU|*H1Le$Vc?nK=rQn2dC3}htWTd;6<=}Vkafhzfv!nzyiT4yJk}$} z!7|TrhT}^4@Vs`Jm+|n#F6-6T(U6DdwX4t5@~^sa2+x$~Y6FkQ^BQWG!ttklcn{8T z^TPVe6UBDfe$Re|yeb2aGAd(c(=elQo zc=~zCuz_c?TXku1ylhuL9>siky4|FKXR@0$@Yrs@=Qzmyh7CM!&v|&h z1JC4Nmk&>$_q`sT%zK_!`gv!+hsXA09qGrJAs?P@H*mQduh?b1`g52nJUp*momXw( zaU6rUy6c1Icf`PB`&B8I$NOK(z+?Mq50A$!XW+42>ybiz_7!ft-Z=Di)aAp|pR3bH zJpK7Gtk;`o_HW3ePx8#|`u&Kq?qdIR9^;^a$9DDm5n%(5^Wr^k;`6eEfyesvy!0D* z?2rC@>tP?Bz8_RwX^vN4ZxI8}Gwfu3_Rm_ z78+g1<^z)%X1J9I~ zs%y+~=;t{xAD;L8z!@JOo}QPCfya5!&%=fdJdQ*6ui{#B9J+sDAD-@C!ocJB($p@6 z&o}xB>*s5{Z+_zE^SlomcqaeS1|F}sA!?W6_}63hFZqtUKA2}4cuxD1 zE{~7rVFS2SElYdDA&*Wdmz%%(*c5|_R%+s$csti1~+x4x&@vSlNSf76U=3V_vjS&2-lr`_XUU@w)E!@Yrt7 zz~lbGS*|{gxBS-PyfDvue&FQE!}E??Z_w4p$B#Ji;#6~CJ$~bs_2?5G$C2~+$2gEG z_K(}InXTD1@YwIc7MI6%`VBm8k3S<`tM@qv4LtsAMNg}%k8$9(V*j{(S={CEX9^Mq z9^3WinQ_j;lRTT^D7(Gbt|<=Nz+-<#HWvC9_Tjza;qm!p*1$8xQT<)lzb}g;;^DC# znJ?bFaQt09Jbm1He0W}cY^Tq|6aP$k8T9bPKj!IqiEMD=6&}~R-2o3z>^kGy;f@FQ z%XxTSefoKJ+4qX=^1jj2>FQ%#<-;4l+U4=ON*Z{kIEFmDFN?#vqu4*zr^iul;PLsM z{yBhZAD;d>fF1+S7>9=^aWF5u+|3J*kM;fHIM_d%+NC)C3_Q+%hlj_<-?V|J`^WqE zkPpwQkzbfo`&FQ~*gst##}V}KBwmgq^Bp%{-oGLq9_x{HsULs)4Lr8<1+`0IJApfk z{bOEc&n}@k=L2B_kMj^(@A}96k_I08sqY7A1CRBUO;}6+tHQ^vK?9HV>G6i{DvraH z=eUO_dFI-_!Ht9GL63*$&9i>f?DfY~Y#VsJ^>64$e!0+NC)Ah=FH{ zcgVw&cunILxTn~zu8;c#eR%r#*7)$e`!46H%fs{fr_Y15hvyv+eI5kv-EtgkH{{`Y z?N;6BjvMo09-h~(zE5@=c&2&KXW+43J&v;bN{ge)!~3#0A|BqC#gQ=ZOmUyLSO5(lr>Ydk#mH*MfCU%x)j`tZE-l>6m8Jn@h1dasY1^WwBQ zUVVIHK0N*Nggpix+x_Avh1We<1CRXUY~QGB0fBQ ze3J$q&&!R}E`{?jKzK{n=g#_j(DhI9$KzB*?NZp^xQFM>-+B*^^EY7NF@Nk6h4ZES zA=j?x|d3KC;oBmeLuyy4)yT7`tnd2|}QL%sQPYtz8VLxI9 zo}}NXcjtBdjA)ZY&7q5Rs`;dXh{uS**kC^r8^CfQJvA$kv zm%?#m3_SMJJ03g_0zY=`%6Ra1T$e0znCTf>*F#QpD zw3x?!H~rM*1qi1JC#dEk`t&#$S3lHc+j zc;cV4FM95GGVby4y#DF$Pxl#kru|^Zz+=7oeh_$~I9}H0y-&#F9VVXKar648=dahG zkK=3bydTeb7$Tl&-)Q=_n`b_52cInVkL~O0sK>zL^|6uKr8vJu`c$z#_HSdIYnS~? z5>NM!?ds#3_2`rFksX^Ej4OU-jzd5G*7)%B z@$K^PWPEwP=$mVwW~j;yTZfs+SQ-aUE{;kpKskwJpJ<) z9ItM-&qts4eG(qWAp_5(ue{%l_sim__TeRm+~Wt^jr;KQyrg`19c$fr#rm?u)8{Gs zsq3?zHOHanIY>NHp8Nk^7)QjQkMlQpq3a*dkEDTT@-OSd)BUr4ZuYO|D}{Eeh^Oa; z*I~zB-8k641o2W-bMcO^ZnxjZ?z$^oyBz;8@oZK`Mf7pI&a;0}%wzs0k3JsXun$ka z?oO1*OB;A>=hAK5I5ma~wLax

    who_H6ig@}wW&iYbp7qhE=g)e+ zv^au3Jl($t@k;S8Y0zidhcX79X*_a1Jl#M01+#zpxP^&lQ(n2SJ-L6c>q{8)nc_&7 zsBg%i&lGR@i>3KjO+0-(jQaucQXDLmFN?R|ppW_byc#z6$9cKu5AHt1xFTB|2e*IW zIest>8+azWT|PYhb0et|d3`1FvL*6{O5|BD73YQH)#E7l;py|a%7>@V=NR$y`NDQ} zeLW@W>n~B?aEbaVUM|hQ8sgdHHy8HbZ~b!H8p9|~Z`NI2-ex4mS@Jx1lOSC)aqfgIs;MHRPOm;)WD<#ieKKgXKy*@lW&jTge z4ZKzyhiQDP4Lno4-Ne)5<#E%`+xtq?m-EqAG2q^};PdAy!Zy`h*e{+h+#Y(}U6*{H zAVItg)m(&UiX%%rJr3sS<6*sCY?pcZb#2gxr|XOO@N|925_$b4@~k(^ap>m}!4i29 z1J5+CdJH_%cnlEFG#*EDWJ2A)Zu{p-@=s3D#y4t;#Pee`*+x7d%g zfyeFo?@SCBc$`07->`va(r3SIj@Ntth5LmJJZ>L1(%r8Z#|%97Z+M{acWk;1JnldL z1NS)1IBnpW^koe^lfGdC&$RDWykp*X_4AxA;@RXU7xv3+FH!Hz@B<8ES4DFeEg_EbKdKm5Tn8MZ~RmVS5deUeQp}iZ=eYYDFF9SX0 ze+B<6)gGLq>Ll7D=O~<*tLm;lDSis=gJ>Uu-QZHi3r$yb%$-{SV{^{4D(GL3fUXXo;dQKME-+lx4^f+Pk*ZNmcV+n7AQRxe^Korv}Z8x)tgm&5c4NJ zOYyURR_$@*KZ*Qjz|TNW2>PpF*TTF?z@NZ&$ivx6Z?am|-O`SA9e{qTO!0GAFFCB2 zF0{wtXAXYm(4NM6OrNOq$3`hVAay0PXPr z{KPu4vA@+|z6Ifb4*m>*AB3LZ3}rX6GxVT6f%fn&syzq&8R#DXe-QZ`M4tP>x3M0B zbCv!UiB~rw(@R?9|C0t9HTJN+q8;Wm!{WU02hx z_SVj}`slLO)~;p(9c_*E9kbeM*EF`QJo2#mc-%tCX!a5dmEQ0*h5G&Mg~n?Bp7F2w zo6-7b&ivQ}&l~GkyAJ&HY1r z6x#QT-+tWOKcn@J9Iklb&O*NL_?H*j4G`)FE7X_Izt%r>sN&_?3i%nI`5xM{ z(7s>%0l)aQ{+Xkc-S7p4_I=~ut2Fz;M+)`jNj|$*8f+9I6wXq3hig+DPFp}kRN=d5KI4z)<1Eq;$<%^cgPR>-&BEX2}3qxB!0uXy&=h5X#Bg;@HB4%Y0SqDt{ZLr(64w^;{nk%L>u(3qe|2g7Lx&XF&sC{@`u-h%x=>#}eyxAV=lmu3 zQ*-~&p@sJ2IDgjdM+VIOGg^Ne>qqZD=y(1%QL~TvtM?B*REID(BXylvy&9h?kMC(9xcTA{A>NK;}kFO)k41QlfO`~(7s>((>~|#8LfY6 zfwHTQf7oaJgpMe*pE^eMPpvETKm0@?&d0Cy_wzsG(?4`%q5b61X8(ge{WDts$V7Ah zu+R8~jw-aDK2r4$oL?BP@BXXx_lw{5@jo=V(07 zNnBAFf8dveSjJ!OgN(o*Lk|`{k9P(HBF|~^nVNhU@~xq7mL~rK@@*lXt;yfowb1?` zcw)coAtmSUI&hhz^&bnl*gr{=mqWgt>TXqQa$D0sSCa=JAC3O=G=5)*}~@4?`~Ne=jA@%d4PYI`=RY0) zYWOz_1MyuLmi+#^i>3ry<8QAvKT_hjPk>tx=i`_0+0yz+!@lf~ z>$hNF3*x+eiSM4>3Xd<_LV?KpAeZ^SgC_6S*Kf2PLk)%-h4lczQLGELqGxy-+_HTg!({yCcbIZeJCa=%LA`cLz- zCH=DgGg#kpeE$X<5P4SHe{K{9eGG_rL_jj8h|*r8?bmfadZbzU{jc&7>nwbJF8@Xc z7s*E)ayj1Zs>FGDcWqsQeU|k&7IMEz;@gs3;@^b%B*(j2zm91CSM{eJQTwsPci#Ue z`X!EaxE>Y%Ik(>1T!Ww_cO?p}$J+qu?y^EBoK4 zn*0^*e(hg0x!?WVE%_(;8-jj`Pfln>p3~%8!EurQyXT{&`ZsHN;r*B&`gPRuBKb|A zzl{I%68lSh`t{5V^cQ(I^vn9#tjUv*OMbV}^4I@l;r!b}lmEN<{a?kurTG3+|Kn$> z@t3o&C<2rC)-lRt>@5qm4OdA1(?Mc%0O@6qJvYVw;Q zm-)F$lW%}r;%n06TiQSFL4Vm_nzjCE$mM#tMU!VBm;ASC@+{<%-?%0pfLxC6=V|gm z$i=@lO+KXAZ`b6THT@l${0mKgC**$HfQU<7-+?>T`jzXA)leY)E!r?B-&ZtwIpi|F2WtCM1>|yF@Kvq9{(hfxFe4oj-@m)QtuuDm+WP({ zUpO`CgIO#0eU(p%=OVv>Lc8?yqlsMV|F(Yp`u}dt&wuxLy`}iJB$x5p()(W-obSkd zxn2_IV_*y7{J4t!2JQXF=};i@IOMXQT%^gnH2KAvJfX=i(d6Bl{8CMx)Z~|G@*Yio zxh79(@+&lXuO{!-%jw{m~?V04uJ{gBK3?Fvmk zpve!>hzVsZ|Ki*?f z1|It}evQjxY;7vG%lay)T?)^GY6Fk`(|_kS?!)u`PAlu{@!{$7px=k*%`^Kk?BPkC zxn2JqiNO2C@tSzS5_w@C-tc>EWL*``bKJn&gW6NnE@dbBBl26be?!zRh4tlpc;37) zFYr58pEoc1cvN|KoDbPI^zn!pc>LZ(Q>{C%7^i)B_3Cl-8hETv|J~dH1J9(d{10aTs;ONH>#s5JSf9Q>cNuu5{khk` zV}1JmoHg)F`*Yxf;{BQZ-W+wugXd8f@$`L{$8GFS<(&@o9H~Cy+0@R3{gQd5&%Z$* zo<44Y56$|#^PcU5JUs8b*Y|@O56|nL&g&|X*Ha>|&%onr{Y}&^h0ir3e>BJ2Pwi58 ze6l_~Z(f*}^YFZR(Z{3wBePw7JgN;m_FI1*VA6-DKld*1aj{*Vr%7s;!pFC?fyd|G zo6dFTDfcVS73<@1)}LowZQyZ#{df8k1|I9v^D^ke^Zw2hub1*anf=qpt=hwrapV5E zW;b3Q-?)e8ozMDtXVSpq{`&rxG4M?BTAyq=4(=E9@FWhd=To~B&U=@KCvos`AnoDt zcn=wP%-8q7ia!_o$MG(qb}8&fjIh41u|9n~dOiBQaXjbI=gc1u&l^W@vul^*h!M7_ z<{~_<^*DMBJdWcPk3RNih;S)!RD9~%^~Rx(N7%y?|4if2ZQwEAn?Ihn{XRTB-kcB5 ztB>Ok{G~V!)A)vnS4v(I27R2L4b(1$$2aTYdGk{CSC_}*8zO9@qwu)a<4qWN9LGH# zee6eua4B(E!>(N!U$(0s-)s+0{NsJLYYAMxRN_h;_c z?cquOxLqILUJp(BR%`SA4or42k&{ss*^jziC1 znYGTcshx{AUOj(75AVzJ7xwVH`tV;nQ^*w3Q# zQy-q5m$Zi`d2x;(+I`Fc56_zyec!dVGRL7me=cO;vE3yrpzzn6IW{=(~~>s#(T zWjt)q$A0Sf*UGmp_K$h`Ituyl^m!2X;pur!d3cg%Qydu&&zomGjzJ%u?qAtRbG*8L zRUV%B$K&zf9CtjN{mR4h`q#5xAunOzv0m?eTVD5R1CR9<#j#Cs9PH1g#|rIM8F>2m za$GSVo^Chg!>f4Qwae>rfOw{Ps{2>AZE+l?c!NGX-ENF{x?R?%|6Xs>N1y&XylDfE z*WoMFE`{?R*seGZK7XmAb}2l*2?LM))6ZkGK0JM0T4lv{jrlY1oN=diDeQ03z+-*h z^}+GxJUm$+%&XSU{{o|m{p0ibiYMLq!gfOjo^F@tRj&_Ef1YC2hgTGbhbM7xeENM0 zdvtLeraVUsJobA%wM*golQ!_UJ+jfw3m-qN?ag)vUntz~Lk1p?@5rZJeVpgGfv4x0 zz~BIpK0j& zo*M^WZw5U))+6_otBxwXp6T)7>GP`3!xOvwe#{WHOW}AUJG%aP?WU+*3g@ZUho{@k zdU#@&=b!g{gXe*@Q?Xss`z~=Gp8mc|Fi@{;hL-W3KO@4L%>=ElMCMhra1zf~@e^OW}C>G5VgJc*b6Tk?#nkJn#d zY;hcHS3lqAHt;yUS^cg)o)`VZ(~tXX{~iyI`<3rjY?t#e=Gj7hVFQo-(~r|V1|H8B z{eDx{z%#`g+`ZU8&i|61yZ&)papLLmvOax0(jI*>9y|}8^XTL88SwB}56?f|7n^?J z+U0)1J&OI)?Q)(|K0N*Tul+teJ&qv{PvS7;*)BKxr_ZZ|f#=Mt=iPXDUS)_^N}dCI zx^~4suD#Fq<@|*_JjpZH`t?l8z~gn3dcpONe^VoC;IZ8Y_i~RPI}jcuTtzh(uU&7R zxjnLXaU9&P@6QPjPxP_f4_|Wq*L zr=J(6e0cgi$QpP&560}{=8unCLBclGT*NNNck?T59L!4*uax;>?d$53`NDej`xX@* zp4jF6pzBwzUG85)yb#q~yu7T3=ZuFzAM?k*>gwb8hkSSq8qeO(9IyVImoV{c(#u8s zAX;hym*PcREfN-foF=>8gGt6&vO;=^!4H7 zo<8qQc2fqsCSKOSW4pS4WfRQ)>GQOTcsBLt!g}OLKh&b^=Y>*09JtwN)rwm*?C&4(}sp>#T zwI?rBINPe~WR+^qqCF5-?TO=5d-$usZK^Iqd-4*6BWqOM4gKLu6%Kcyo(6v|S2%RO zs{7HNM0*15)^x?sp*@ZEF0==)Q2ldgADROHVK=ZAa`3a4DQtm1EdGO^gr9Nf2_tW5 z{v+PZYNc;b+L5iPo1aw zWze34p8@z&H5+=?!EUpvBU4p-9C-^}pxOt}o`s(Q#G8hmF!bc0r(%xMlSF$E@rI5^ zdqU|=wX3@K1l1l!dl>C~!pFSIU|t2m&w`%=-^P5-f^VU{9P>7e{D(20Q}8p4@v<>L z%TH4N1Vj()Cefb6JV{~xlvTrjv`5gMKzl&u8|Ke2+Ox2mhTRN)FE)$uO2~K}qx5Hy z&jj+BMtd0J62kn6&sF?1#xa3$Okw^cF;9Y+Cqv-pz|Vpoo2T^1^L{d)VxH`ElCxjP z@8O0!3$gruZ3)l&Im-LIpCQej{gJYl-J?){rnL}@z1Ycx{)&J4?=^?cGxs0T`dfce z_VxZLpZ>A=CED-uv9I;FKQr4;uQm6NEhw}f{+sHb8CS^n%ioaJKk&KgpWCOj{;^XE z?Pt+n&!4Y-t-s&+<<2kkCqMoR3+?;$&-&zVNb4U${&fGde)hwfeT-jn??Qhwe)jeL zc%GJSKfJn7Uq1d*HTypO1AgYXnB%uDDAXtOXGrUx#(uBQzo5_f z#ZE7@AO29;Pwif4FXyv=4{81V*6*NC|Jc$(`@a3#3jN8)Ut<4^-}u)Q+RuKX;t%Xu zXwPr_hP3{E{#$+k1(%BO$q>_YpYznb$G^vl22Kk!F$f7>tr z=M>scZT9K!Gk=G){(kW%eeCmf?Uxl?`sROsB;LHrIgjP{WVrBq23+L(Sdkb93 zRh5@_Yx2Dz_p5aK$(z;hdnKBbAAbGBpHlf^rw@Ahy+|$rRXNxG{AWMpd~bk@{4TWg zAAnr)vx}nT`wwdR`MrKF(mw~e8v5QJ;@%OLDQ_|9Ii=ZOHHKZ>j%(Dwp{dL45Li z9pn5Iqh0)tb#%n19DaCveJt8s+kRMcV|`m|d+Umh!|Gd`4{u$uqOm@D_>sZjF^5N6 z>f6@FI~rSC91ZQYO&yCH&yR|kx~A6pRi1`b(X}%gJKC*SZF|hqY}Gf$W6`$hO)Fd5 z8aramz%ygDjV<&@S^E4B@m;B99dq>2M;${(CI^q>%7PowhU(_p`jew;#ePBi>9tLr z@QnPJtvqjaKFC9OR&7VE)j}KhVSr zmdJ~g$V-;U%lPmr$~bye_&)uxfyehrXC3OkkLBF2By6j0&f4MpG4Cx8&)M517V_$A zTMq89>swn^N838=HH{5XyQ9@^?riF4tXta=wfTv|Eh{J4@n~DDHr{SGw$!(_wMFYY zY?^SjO;P)-Bjl%z9qa$Oz9YXxpX(Pn={UP3|B#aWd}^ZjrEq?`w0y|CyGP^o8F+ku z`9qCoO)AW<=$lOKQrK?Dhu7obvHp~S$NjS&-Zq4X3_N|lv%adzLjR&|ZLMuIs&-qn zwt+_4u3k$+-PG8!YC&sD0=(-+2G-Ezdphh=*az;$MbWu zhsX2NKCI9`$)9(9v;J<4=O4$yx^rRAl#fA8&!Uy}(fO_QQ)o#v(K2Z7u(*TG$*R_; zgCkZ>{Kso|um1VP&tCYqGfv9g`^xS2-@KtM^YGulanLa*{`I-Z-+TX0=M5aO+sJ1Q ze5(AL+kAVwT@vqoaPR}2qb`}W*WN8>rWQ?o^@oT2=I~1wzhwQ<{^AE`o%@T&j+-~X z=EdyCcYQu{!BLmZ{%otShNs=yd+K*XU;FwkRi8fkqc`>s{PWK*KR;&I50~FKYmbfJ z|H|{N7r;MJv?f7L+{_>u>>u=b!_ILfqHedUz zQ|@d!ee)lp=igWMcdohZ${im6?Tpy;Z&mJ;UheAD6oykhcoGiPml`}e4o|?|AaS<3E~z!}c@&_S7k5huyZK;`Q+l ztUl}Zxy@IUpLik)Az&K+h!;2`?a5+xYJfo-2c<9N9=mlswvm+JbmHHxBhVBCojH`d+@jI z-@K>efZyGF^kwgTcI?o&&Uac)`qN(L?Q_V}SGGP}x8q&qkL~@%=_j20vzOP}-+nXm zkFMv>+`Qkfdyneg?wKQguuI^KgA*SvkDU6|JNJBO-VT-TpMUE&p1t|w)Zo+w_Z|9a zy8nZpOuJ<9w`%v8IPxn$Ui0cf?>3IDKW+ap7hXGJtC3{^JCxX4O>|kOOK9Fm;d#_W z*gGGY$L)O{9$lSDAbQ8TaRJQF6T$_5M_I-&asy zg7)8%U#y4s7S_qvA^bT-wz&(vj-=N`^y0Hrj;9v>{)YNB66Wg{?nlt^Z(pjJcL*t9 z`@f=t0_)@J2X43N#rF7E!Pk_0UeE0u1Gn!(PI4Whx`FEHR7a^kk?IvxA5Ha2s`sRt zT(M?T&BucURIj3X4%JOmA4_#J)%#M-KAuW7$1s^{&h1#L*@uIuW{w`BYy;^-)w`L$wr+kxS}AbzRIk;F1C6TyV((v(H?HfVWeSoKXFF+_{tkb1t|9 zfjNg-H z5Enb4{N=gCB?v6nt<}Ih*SXXH%XNPYnCBdqE?}N>T)KgI?s4e><~hiv7ntWFmkjV| z1+6TwT;L4>)AVyn4!8@r>>?G9e9PYk<~hzK2+VsCmug@+sziXdRbs0PnAbU%9$?HK5O^4v*B+O$i5OUrd zxKsm=P|%71^IGQ81uSbf34ECnTfM-%mvQL>zFa{o3w#CeATaNrT!w+iD`*8SQStCz z$|VSVfPz*S_^ZG%;46U>z*hq&fq4(&k^$p?^*ETe?@!9u^+UCZlwRTHuhuz*8kGHmUM4hcp+1VUzq08AuI@j-LZKdm4z7LXbZ|&@`TUXc(t<7|c#IovY z8*JEMHyym9k*{!Moh)eW?NQkVEWVx8PR^~S8%Y#ni|n`LZbxHFE#FU) zc<2)Fyw1ipr4c>o+K}wFcD7OPy3Y2sRs#|0DM&RG(dM{w_lAzSUD5i^4ob28oqVn6Y^isg(?&ejO2gFILW5Z!!_Yc> zx^dCc(YT^9$__WTu9mzsHZ?_8);8JdW(EaFH>!99DE2sIHQv@(OLsXMTX|x1w9z$R zD_#CNX>rsNuY*qQI^!~98e3M^HZ{^5z`Ri`)~DLrqfsZtq)|=@m4EGat({LEoolGM zVYlNRUQ4uNO>5gKnrCaALyTa`zB8DD_0U^dXmkh@t$cah>fVlIp5uT`^GVH}JfE&{qqWWXd8Fn6 z^E>NfGBatOc~_O=k4NreXZ{e|lS;>s=##LW_3vRR+)kmZwE^t7#tImF_Xft%me$Ud zG0ICb&36@!m7g9q-RY{2Hpx75+Y6SfhtC>mZZ$V{@LY2F-0p5^Zu^?nP8vq%zAo9O zX+dM$Kzo>S#L?8=&dZl(extZyGgQP;_#YgH}hm;Xdzy`oQQ*3<3L%l4&Y?@;G4^1K|W zH{Rrw+&^}iIvz{i1RO`*fw~LzI@Af&m!cNCYwGBjO0Twwbp1oGT6(ojtfRl{ z=x-9BlwFSVFs%*%C;p`T8w)J;IN79{W?aJ!f7Oo~LC; zxptY?U8mN=bN@822YKJScVx9QZ)>(zbpz^q(EiposyzT)2E9GdTeFptcc9*|t-`a) zR4t$D>EBUdYmBNV@1*K!s3(n5xO}v#2T*U=Uf~4v29G%MsL4kkb8OXdwRQCk(G@FW zjpwdvYHn$bpV!vj(Ybm}*IHak?Z4a3d{1lp(W6IkDN|)TZ=pPuu5bDw`;XgmkKK10 zyX!8y?7Z{Nfk0p$|(I08Ta!o7x*ly7}tul{qf1^7dyg$?suL=fO zpIxukbLuj6JkyVF%jRO;RIB>AlT`iS9MmVPIx!FRY*o*nrRwKqsya49)kE_kr}L&J zx*5_$H5YfiR8E{7_2TI>X3m;DN3F`ri8Z*v;qrBP*h$way6f0RcMPL+H}NRiMP+YJQ~UHLI-gRA?mITM&uNQBxjre{;l5!`c(E7HZE5Uiq$`f|qciE9@x^+(g|KiboOexDw^H3lVO* z4(s9e0z1-3?V6svWKL6Odn~N3d6rV9qBESUB0iOK3MYGhV_jQq+uEhEXp1 zwGfL2VP+@2vE9-EC9Q3zbT-%J-~U9OaI!d`P9jwbJ^d(7y4s(sCK$CZX{=v0v$eCO z09iaqw_$7=^VPTJvzOeyKn>D zM|S5)YfA&ol-8EhYw6-v-TmP4SrwgWkZ?OqOq0klytpYEjTcF0E>>Q7?Ji!ll-@X9 z1;O-s=UxIDXLr@p_%yDLT1(p2`iY#Li|CT7wmn+Z&+G@$U{9Z~OX*^oMT=Q}CG{&)cSvzgkZ z@V&mkl;VBV#7h}?yq}Jr>gwZtI!L$z24w%{T0al$BA#vF^=kUkKD;k9UfDFWzG>7h zh5f509MtUcaiYt^8%a1x*c8We9v;UvK-hbH;qwf(qaUw^iDy$g7w+eGJ`y^iHh({ab!*` zj@J}NS*V!D`a;w$g~u&SxEBpxyFD7Om$2?1-}}#bcx8m`>FcZ-gFbzHyNG9NJhq>q zb}5Ye4LtVyLl2Mh9GFq8&y>HAfoIa!ZQz;o^%;14p7#Z{OJV;iW)}O$@x7v*566fX zLPwU%yuX>+rLZ5pK0ICDfDcdC7no(XTTSg!*lw6`7!Bf|DK9<5vrFI&l*lWeU96Ao z>+3gS;PH5@r*mfu^y7Xn@hUVP>)qtB%Q$D? znd}A@6x-$g`aGyH@J#v=2A)Y@zYkA8?pvo6&jZ${ANNDV3sE~4mh(Q&$NdDgOX1^w zj&KqU!ZXE@U07OP%EQGx))%IBDLfw|gnQB8wcD%l`Uva(Iq&(O>gwZpA0({r8>TqA ziDzqe*}i_<&l-5_w|?9oHtoHR+2RcqV-*1J88aA2RSbUi~;-vAB4?Fi$^D zM|^m?zN8ON*VpgE(~tYslG2X*6~wd2Z!YY=oWJPTA8{X^e*Mu)yr84a)n^)ytU;fN z7dXxApMD=KLcA)?F2|$uQYG>RH6B!3QxOkU7y9yvv?DE-&OueDRAcdq0YeZYFk;%J;-^!_8=Zke*MzJp(_{P!uX ztNEn_v!eA==;Z*{p()m4`g~oBC3OS6gR_><0;|<&RkgG(A#RkUs&1!ybc(%{S{tZc z)qEGvl`Wz7H#(g@T(@~7a|kt(MAf2eG3o4}R#kHkB~d<4vF4GS{Z(}*p*F|kIb^lY z(Z+Qf*%HYD=P!l@G<`!nEnz_@dWo5qZ zr0A6IQPR&baNR-wHo1G?xijWEIC!S2*P~9KsCZuhr$P!pc(&p-p}uq` z`lIeWSJ}VjDzp8YYZSkHh2nMj_&IB5#cNom>diA$-HU#H_tCSn6mQlps?Op4_ z8tO>we`AL}u;t8)jsN9%0+=s@SDNz{Kpui8sQg&RAm1TXS4>lN?{rnC4^?#pAx@b!s8%C93`q z@()i@xC-@>(-clLsd2G=^5r+rx-riNF^>YxO3x&p^|v{o>@}RFYFU3N^z+NBtiN(? z{Z+Lndw%^M+*R3$qhJ3P_%W=Pn@>{xf^ACwvVU>D>UpW&!uqRe{omM$#s4>U%Fa`E z5QkO4m2%Qy#1{S`THMyT%1s6PiU|w zRNGVR2@CkY#rA|VxV_mvoF(+1b6PfK`hqF7%~Qe)ro{QSC|v%Bd&PAFPR*sBz-ziNvRRB5UG5SJU6B zDeotrF)g5TnOZs{nnHIj`R_RWE#=|`&$QLfIO-(6PAR9x^{2bnwfs4T$kO8L1=D?y zEb&bDLB`a$`uO~%oUndfVY*JKBA!irF5FM9qxAbA2?Nihuh+n1y}G`f4^O`jQgKFU z_dz1W3y~cz5(nQ0Nm08L{!T~W%;NhDrZ}v#O3O>Nfyeq1)Gmdu|C5AMXb}HQya5A` z?}OOOTzx!W!i2*Hefs+!eZ;dh9^2RNgIH%5^Gx?GDhxbR{%Q<7lfIOJXVRB7@J#nX z%Fii|gX7ijThtIQWXOwt-y-S5)AeP1c)Gq}AD(_6B)Gh^@vR}AZHPm^50diX>Gz)p zh*!#e5Gzt>w+81I8(P$HOTVsqE2Y|N9#wVnAyp5dpWk_poG&f8P4VS=CDE>q%YOYf z-mdrw^b2%+IltmZihpyTs=L-G{xqL>!qB?}@yPXxjrL*0*N@uodL;$F{@Zrao&TG7 z!mE{?oKN25d}-4URG$0pRJHw}s*`B%0G_r%wGTmWxK&|&er^7-YTtiCm$MqSbbi8n z0++}O>T|`s=WvMu^Rbsp9GLemE?vO9_i*V3cJ5UZP6BV|Na=HVzk9uza5^ z3~Zx+4eVS+zl+>e@p@&0(lScp};9%`Al~&@Fd97 zz?Hy#z=s28fR6$02R;@!3oPe;1Hi{YJ_vjQ@DT8cz&YR$@G$UnU@NP}e^TE_(^z zivTVM-T}A*ct_wW;GKZ0fdjxbz&iuSfOi4z0^Sw48+a^m5Abfly}-Kz_W_p!_X9gW z`a)wc0K6CEL%@3j4+D<_E_+$UzYlOZ@V>wm!21DL0o%aU!21K&03QGx13nPA3wS(m zH}C}D9^iw3dw~xI?gKsqxF7gX-~r%?z(c^3fQNxAfdju(@gELs10M+-1fC2W0zMiz z415f51o&9sIB*qk0{A%KB=8jA6!28wH1G+)8Q>Fvv%n$XLE!1YIpCSV)+;LBS-|DM zvwm)xaZxYk;={jscGX?gAbS+zmVixCb}@ z+zY%ba3Ank;C|rUfd_#10v-b12iSU5#XAW&06Z1A0{8^rD&U#G)xfKOBfukYLKO!d z37i1l4mb%s3OEHk8aNF+1~>z}7jPDMD)12SD&S$@5ja6BdrieV61W_AJKzf7QNUHe zqk*e|#{ky=?*$wKo(kLrJOU?p-M}M(dw{nC?gbtN+y^`wxF2{7@Br{$z(c@Ofvo`* z?+BbQ27pHa+rXoNgTP~eL%@3hhk>U8$ACxRgt7~G6mU22Xy6{;y?}dxrvhhyN7(9w zAqzYTco29ra8CLITdyPD@v46ScoeV=JQ_F%JQX-3{VP=eu=EFxNPpnC@FyvLLioT* z;RC0HA5{Fb@PRYJ2hIwAvf>X4A2=s`VCxOUU#0i~;L*Ug$fqfJP~^ZNk%yE#EOOw8 z;8{u@7hJ7yLhyWrlY+wvr+`PUQ#cJwkLhzt23XDuXQ*aN&cl&Ls~`j%o6mU84*MKX4Uj(iK{uOXF@XNq8z;^=2fFA+w0^SJR4g3~x z53pPZ^a4Kzc^~lO!2Q7ez;c}<*GU7A-voIMcolFQ*CBEpSN4|5M?K^*T&K!)eL3Wq z237^I{LV`i@WY}X{pCJD81mVWcSAlBI0Cs`*TjLZfL!ha$bEtY>)$yMg68My}fiA-`JmBcAPmbCAn*STE#dkXyf2`Tj0&0Qh-e z8~7gJAn>!mA>gkAhk<_#907hBI1ca1!_@ zz$xGtfYZS50%w5V1kM7#4Lk_^I&cp7XTWkFmoW5CZsF84j;zKz@m8ic$9{0ig~r#)5<^7|pT z2G#h;eGj=$xC7(?$QJ_lLSF^24f(mi5yA-@4Q z0(>g)5b_fMjzhi(SnhjO0w*AE1D5+*M*t@w?*gvE_)P&$L4L9Hhy9&_(~vI)mitO4 z0%st<5?Jn|9SNL;d@XPi`J4be2>D9jZpg<2=OAAJY`v?-_d4JV_!EHxkT(O{z?T5a zeY4|%gOFbiEce}}3Woer;33!x0*4{L1vmn{1~?Af37h~v4Os3w?*g2J{F}fj;3dFm z;2VK0__Hf;2J&lx%Q4=^0B0fp3UC?vj|Cot{B+;|y{E>bNBF?k0NcQ~ z0tbP6fy<$Pci<4@HPRpQJ%GcIp8;Hr_@)6zAioSa4*Y%K1n_F$B=F6^LD<_9I0gAx zz+I3Z0Gx)r0XPHv7;qN&Dd0iiG;j{M57_#R%I7bD1HjJ!SHb>Xz&7N|faSdXH^4#2 zp9HQ3{wZ(-_zvJM;BNtkU~g~WB;?-)P63|{Y+*c(0!~AIK5z{35O4AV`EtRqcQmjK`8wbj`rE)k$m@V> zAm0}_1bGCw4EiSnhavwCa18hY;1u*744iq@;L`M02~MAPi%9kbAE-Eey5Kvtk5%BWg1&a=SD)BF zrMCn2^7r)CF0|JuOePM+2f2fkUzZl^1P^|v7b(V zbK&_>Y0a=sQqY+vmDX&`4w)}YoZn|=3eOjwKWBo^^QMwMVSjQSM;$yHnCDR?X*x7YN#A6c3pvj##=__MRY_7gFXwqyNwfDf@Oi$mT+L=4_YMayft=@GC4KK8 z49t0{ByUAO&&Nvo?ttiTp^Pw=^HiRnmDF40JWn}a(x2yRB_ZMSyk#u@@%&|fh0pVt z^Dp`0`CLh(A^LeOv)Jx)GUM2OCIJ%s?xcGdhzl(WYdilIQc^*n$d7bh+lX2tq%5jL_ z%}$&P@^Q91^U$3aysp_l$s@0Co>#Iic%3trb;awQvDoKz&*P%!f%gIL{Hb%|cKzc0 z!RsgQ6JE^wMIlz}N8;lB!z*ug#^2S?`-)fIuIb}_hT|4}^-i28(Tq}s_aE;#s(r}S zsP-eCaVm3aUt*1FhMh<8aAsy;WLlg&yW`sIjMFLkJgfa|t|ixTa(om2_;{v{cgjEd zrBcGKzkFO{>vGvUA1_r=`-LlSarC+KLhTP>&%EJ$E~XV)IN#MeclSN- zx|r$g*-ef?HSgU0K+U@u`TTq5k++}ZaW?JMTvVQB=jWr!Q+0lQsXR^3`>pacJ-?5s zJh{gOm8Y5c_1Nyr8x^P559Plbr}z~{hLvCQ^Xo|YwK(sm@@u}w4<0|)uJY@oyx-!N zjF;MfXL$T!;KzaYOah<$f|Wc%*?Q}$=(_djLd^|#KMUu<6=f8~da ztny<)-cObPx%qjh?1b}jWoH3Kmyh#2&&+msN01q+>@3O8A7#f~U&_v`eEeR$h2z@n z>EiqbpJgL$2uo{y)U&S1DjW`^?XjJ#a+pPAoRB+s&6bAKL*!v34LIu+9K}_N;6|L~3qF^Q)?R(9aP}m-km;xoQ=Decpd1 zcjHmGG4G$k=jO**;TBDQJRhHu%T<`z=!<-pSt|KRq}co zGq1e9NM6{Vey_WL&);YE_GhhLyfQz2%3dr#Zxn9Mf7eUlmi+iBELWehU&KB6y^LlrHZ<)le-$~J`3*)k}q|h>aJIX`F~Z^b?~_~f~u(Np_Tc3 zsq2?j`Sqc$6I}n*b@QrxzT~`K80vawRem2=*NJjhg`aiA*O79!h3{YR^_IIH)%Bj- zRbe?_M~HUDybtpKs;KJ}uUxG+SI)ROKmXMA9RIJ1y3UuoQ1miB0IcHQn zVm@co#e83+HlKfW9;%Le-s7sb-FrM#?d_EJN?OBw4@`}ux4n?h^HZ#Iyo|+L#(e$G zzqTv+VV%rSM{af9?dF^B*Lm}=?&HYaO1^K&(Yy0U-Pe)3m@Mb{;*O`fkHf#sp^Cci z6VD&N)pely-y5&D-5amEPqUi5P(|HOas5%}d%T~h9md6K#tN4H3di#PDBPSsekt6Z z-yan2$R9t|{TtW5JZC`a!DW{@zlV@GTh%Fie`@24>U%i|!z%Am-w)EC^XEK2r>(7) zo*xrkLyuc%S=k|n0;g+zd-LE3QR1mb;%}S2SLucLP#L&o()cE%L_{-xO z?W(7r@u6QH7U!r={XxAyl1AN!x*zob>LJv_sLMW3{l=oUQ3p|nP*VrN7|onaOTy`!0Ahse<|Qi=r@RZ1KQVpqV)9w-y{7| zH{p2}4+6)4`+x&KSN$Ia&Y<3ix*zp(sI#bFK|O%_E!2akH=!Ov{UPcc>dmN!QClCX zcmt?y)D@_!P=`@RPWZA|SB<&`bsV+K%LH%_>ORz2)H&44 zm)FtHVK-FBl3Ko;o)%HxWG!DFuWhH_rFPrfI~oW}!}8@Fu|_7KVfpeEw3@wmweuV= zX(7E$Z2-%cM{DbFg0Xyg`gENj{{^_-ObkGHI|=neHsYMVGwJr||&ghQ>v zsnY~{O(XdU^s1oE{wsvfp%=d&eb7Nv(;tVDY$ClX>2)~0CeZ5y>M)Hu9z=hyqt`j~ z;u2ZC!g*?$yq_FdU8iAA%E4BIH`mq`LbD?DTmH38^!#Spo$KwD^b2SWjx54SXj$p< zR`d8#l+;d7dTwolB%;!3!57VQk3`m^O zn7sv8)Ht|2Hxst&QpA;isY{Xi*0}SOzkFDpq;cLl8#?Gf$iMpU3{zxwwH4vRs^bO8 z)wt$oMIkni2G3`nuUyoCL+4uJCA{%m4A37(qq{(c-xrSR7)p;uGFsWu+^c!E1%Bi)98pU)$|}l{w>C}p3V-# z<_8?`j%zQhJC~NY%}+OQwj~WBk*4tX!ZWS0gd-m*YxEvj%yY5sf?5c1LeQWO6U~p-8I~p*%jQ+REBC!Y+ z`k{b$7nQQ@sC7Gwp3OueV)H-lZEc%KT%NcnK?b(IJaPHOiLu*kLl!Q(?6Pg>x0Qm4 zaH5+YrCo7wRd{KFdXSNDxSOq1B)SvS%OW$eSgfpUJNluDHSu_n{tC((|E6P;^E7aB zmrwoaxagM9lF#@5Og^q^9Z_GmSM7sY9Q~LTDZuUVtq;3u&+p2|KcOav{!&{B2sm{G z#hY6eT+;t+b8z`4^dFS^an&iL7J+4-SYA1c{QSKmPh7h1be3m#X`hbk&aWzdPHIOE z9sf_`+gdr1|6h;yG^af6#6`c3w8eNOP8IjZ=$BWYkl$_UIafY`r{;5ta2IGiCc+!? z@VGrkxZ1r$(K>OSpU$&-483TcJM}2k{P}&BZBH+e zv0m=WHD7*CO{>g!aX#`E$6e{|tJuZ9d&) zJMPHAW)6Oj>?Qb>T`$5|X?(oD54F}&||MT(p5tE%Q7`ORmRUh=CM^ETBUaOdmC2d4eB?a%LD-?7^nnH}!f=fkGg4-NeC zx1=p_*}iAhE^KK$^n&tn?}bNBoc!yYfsn0iO4_Fkg*y-Uvf3oY+UB}LN>%y~-d-Yp;o-sVG>g(34V}E%0BWu2Qe(gUV z-sRj{8tqLx?{n?Sr%t!`TR-LMV@BOn))@ckW6{<22OAH%>6W3DyS0qk?Usq39C_ZZ zr&d4q!tL+RUi8(yIDnsYt^ey*nU1}$vCht=JAd}(ons$){k?bEc8bnFxnj-kgMVp$ z^7@&lzWD472cLHLd#@h++uob+_<^%+hvsEJ+??w^@T*TZkFIGQ`S{GI&aND;F5CH| zac89dR*~EM{E6Q?Y|qqruReOkti}sRw0su0<@CMQc5e8ZWxe~rBhxy&FaE~vCqBPw z%7a(FeZ_am=FDCY8*|5-f4}}4~!za^*cY5uvR>Di2dTrPrr6y^NHUZx8ULD-;Uq%#_`j4fB2N2 zXV2@|b<=CfDWQe$op|?Wt!ow>^xOMK^DGM-aoXLZUalE)$1e`5J^hMH#-01b<|{f^ z56znN;z_CL-`S?@*%P+?acZdl#owKl`P;h>%o_1=`YZPM_6cn-UG!Psru(+pZM#t2 z)bkgfz2SwUroXqaxp}AkKRN33_fOyTi3vBp_Cdv^AAIwdYo^ZK_rA*gPO_`+{pL$A z{OzhYpMU$5%QLalZacg2fh(u&GXA{T7t;1KecZwG_GnppU)_gyU3tLAzyAF8A8q>h z-90|}>58Kg-47mn!lb^(uYdcVJ5NHm*15<>wx2qy18?^^H0A1_a{}Z`K;yJzYA@@`^Mp~j|t?Kf3kDaQxj%f{n@j( zT)%z${p@r`Omyx*Ee)-_dwwNp6C0YKJCiDX+Jt6 z`^saV*Bo(i-`0E1p1<{R&o0>W9_#7--pkBidt2h!sV`Oj;P=A^G@tYBE2}OT*mLa* zZL5FQb?YPVuRUe!^_!fn!?JGs{VU6wS})vm)9+rN`q^!*b!$$YeD%+U&Y1Xi&D+yn ztoi4h19n@twD*k8-yO7g<(fU}AO7tJ%SZqHH;u;)9d&eSo8BuPIpQxfciM0NH)ozX z@Xb&6zWeq)PmIy_Xf^!f!p9CD`RvK*KYse|8>ig%we~khZMylRg)4Wsb+75xbJ@NJdC+xQLo%^p^{{E+HuKxM& zzI)c9!?!+u;qPYf-fjhcy?N27*=N5yP>Ylb~57upkzWz$!Pa_{|YbYP{#4%TVes|Z{L+(HIi{ozmV8U*}iSxJL zaqHWrPWwm2kH6?%Q#12BeH%6%-~Qw$bJq3Lb$o57{r7zHz8`(}um{G5@4EKxhLF9 zZ@m58MX4zV241_f{jymD@4*zk7b~{_k4%t@R4W?|f=kRabRaSEt=If$qiKIu&FTEvi+= zG-R23Y+9W*3Yn?6k4f_Qt1Yd!_WW?^!MuZAjyXEGf4Uc5ZGKjUxLV%Se^w4X=XZAO z&YTBxp1kRn;TNn~c4GBa)6l!87g}pOjKuV{?c@vV+czvWf&N7|wr!oXx%J5{Gki8( z?HnWNk=SqD$qdsoX&znOFYW2J{`k>vyC-&S>E5a9HB;{3l5f$rxucKGT3O%mtNB%z zvd4BWZ_P0bX>?Q1{9C~x?$2FE&PKgAYI>4Ch{|@JktO9$D(l$y{peQZXvoVh z$`NN5rFnPm?%3R5e*G7xzL}PPuU03)Kj^FN-N1?RXGg~3$&X)pkhzKYR_3#6*}Y@y zJ%mmhHs`I|@0a(;-|DzQn`LY6M*FR>e17K0gc|i*c5K!{5o(&TsrRk9vC|3^Pw!v8 z(BWxF^`3JwEdHs!H1KU?|He@d7cQMJBW{fC>d5n54y$a>JGRSOl<=p;liIkE#yOl` zoqTsyN2gr#SISMD`j&?EP3S+vX~(OC0WZI{S{;2){o%&tYWKG+JP|G$_x!*kkFAkL zX&cu&FOJLdTvYCLA@1s(vl)(&{<&UPeGc{b`%^Q_~dac;dfF0ZSu)7`sIql3#z-P)e; zYBROdgZUFuRm$F`e?7ETx!s7EZjf)W3Qy)LgC5(I`s_T&z*r)sF<)>VrP>lKO&O{Lz&(9-&xH=upu3}@@Q^Q!%Xm(}Be;=()<%ZE=N zV;L7!+{pQP32zhl=+Ov6R16lqkR!W?<)F75JnlaWdj(wk~Eua7W1AF#8 zmc^l8%LI1a9?ojO2dvSrErR|3zej&hJlDtDO8CUr z!@)xo=@+T>7c4I7}`AS>cWG?;Tn%*I*b*9=lZd%Ak_XI z{o02_j>E6aQ_n-2S__zlatVyf>Bp`Vu>5gMarncb2~T+N7>DQgIDD|vXzg{8G1H%e z+KJ-&kSclAd?!u(4_tA5C|oD=Dm?8hqx=<0<=_<>2F)p6Mau5<R&IJ%-`O za@lDV1`RDoD2|UU!?f(Hpct#f|5#9J|2I&{e$Xscrj`X23GLR#vj2qZeu2xV9aZba znCdO0r1KX6QPqx}UV;$OC!xoOUY{fBx?G4A$tu2Szf|1!plIPf2E$)0fGwh;eE$0X zZUyrNWLNO&RTwT+@Q?Qk*!sfsk3R8A@* zm6D1`HRXIc*`(>DsiaEMXi_<;4XKn=M5_5h<&kERrjn{iqe&H{GEy5-DXEB5^O?#e z%_L1FRgo%56{K=f8L5<1LMkFv)BV0|(oE7+QWdF^G@4XSDkHTam6D1`HD!GL)uh>^ z>7=QoDpDnBG^v7AMruPUC6$nhNHrg6d8FB->7=QoDpDnBG^v7APAVg{A(fI!NJXTY zQd%x)HfbhlI%z7Yid0D&O{yT3lgdbKNTs9_QW2@9gqBa5O`1uXPMS)pB2`w=XkrDa zoK!|?LnPS5XDA zyo$<*ZK|l0SW-nr#DZ!HsQy(nn>e$IrV|UAO024)N@78yi4|2;PAsU5*rtj~i3ODq z3o0Vk(D7YRHL;-C#DZoL3z|-xT18dFf+~pxjV2aUK`f}8SWp?Upf<#UN{I!P5DO|I zuF%S}0;#$M`}@vm49mrdnJr*v(~T`sFLwcHSyGF#B!F$Z9#;>TKa?tS^#kh!L-t+$xDrtWq{d9Famu_KtXbmp+lo** z?7zO;(BkcANPO8nqo`E?^wEZJXs#Bse;hPzZ=Sc<#|sRW^_Csc9|uBs()84jBU zl^2;UaRry_>FS}mW58hCi#MW?A<*oO1N+w({tO8(SiFBU1in^2ZXOl_xi;S{^J1J} zQv+MWdV3Ub;Mz+4jt|4Zu;1({4XzFagPHX|9&!(arWePve|=zPjiu(B+WUc>x?qle z^C(yotvs54XB4P2lk^R1heLV?Tl1rJM!<^qwc43_g~H$OK1o-U41?AiCj8#MFa$;~ zEcf3X?+GIs1|6J|6ABCJXM9;S-wX8D*=C36M}S+;CW;O%e}i0QxXe~s18%xH@AqFZ z7RERw)OyjQALt*Kw*Q_T1P#M78-!&J2hUIU>-gG7g8r0?cQT*&L8tR3bLMt+1^oxz zQwQmX!iaY5H#IZ(4a~PVuz&WjPS$H)o#DYSyL!jJUkvsE^HeeWXAk!KgQQl?Lg2;0 z)IGmV9Rts58d*-7=K`vOEqC7O9}eBL!5?mv>-V-j?g>eQYp)b<=m?fRA1*YS7y_3w zZ}0i!=LgkO4upSeJPZz)J2$lt=?r;0TIyS@4~5^0y4bb&-5;8kKRWle|468razPnV z(+%|FzMU7XivrhSukJUG34s=Nruy%a{9#y|(|?{>=>tcf56~-GF9);Pe(aweDBIT5 z%oIn$(4*4=N;-vrjjVq){bl38MjI4R-AthrSNDcQ@z-j_jpXq7b^NV)Rt`{HZJL8` zb|bj=QE#+GPz3CloqM`&zfgGEFgE;>n#el~1yb{I6$Om6aZqa5s=)z8Dv4ut5W8l%;EuCVm5i2ZYd zec@BP9h?Y|UT1dG;Ia15DExH8@YA+%@y6yZJ5}9*Gicwl!L@GC>1&OJX|dg*QE*bj z;3QkH-7vnPqNo=%RCTVm^#TVs8V`TaeySskYguDtmZJ;Q&{Q9B?$7|}^R;e`jN5}@ zr^nF?sn>==^@iSxq-rBz&WFQWvQ;A?YMqztdE{>pGT?mfoEr*o|5Mt=OX3fkT9qtb zkPrZSl!x^0nFK?W=PK8{v!USfV4t4fmIzQ(^A?X#Hh|Wv4^%&Yn*&9im3g;MxC4K^ zF&wIu)p);pSVT)*qUOy8BoGocLdhwY67;rUnfAHEcNOCGV@-4nSn8^R?-SCD79C;fw zfB7>X=)L-pm!HQtcv=f~4!jx)Q!K2mT-nkFu@L)LW~WY35m0SvQE1-CA)x1JA#>In z2Ns%AC%vdBsFvc@Qv7l_)Y+GG!)#F?)RT(Yzpl{Y^fZHybw|UPl<4pAuS1~mrn6sj z6I{VCVfpCmZ~Wj{FFj|UT9FXspA@T^?+JQCA1qWZ3xt*({_K!=p(nU{zYm%Df^D}x ztuwpng+smQd0q89hCu8gFR7tl0Ms)}s%w_i1r(A|QRCW;f%^q7XV$9~4kHb+G)_H+ zg0Z>Bo0EM4A!EVl$FRCL+?u$$LDQ28uyb1!Y~Cyq?)Q_je_k-fE9s$WqY#jN#91P0d`@*-D>aQ);?6@_1#nm^5z2JC@Uf1rw2?3Rp(s)E; zIdtu?u=x;&Kv;3TVE4XOjxb}w!GsNYW8qrePQf=d7BHy!q!sCFd?7D1_qY5pkzlae zF}1zHC}^2k-FML8Ft|S0(jdQ_t%q}0-UNDuz)XpwQOlWfuseHq{4g#Eg1eoBp*H>D zT&ZQDU04A0emZ#J%1B4JQ1flR?6E(%ILKnBCH8`Xd6zn-EFB9H0|)lc2J$~HHi%m2 z2T%H+eY@GV6)dx-3D*`BKRzgS)tg!_S-L}9_1HTG>X(L}-AAW4{&IuRzBB>B2NngjXz z<>_gei($f67pE=PmqL?$cMY2ySqUji_O{L3um(ik;%l#&u>q91t>@;ZZv@4OZ%5{= z-wb#2v-bMT+Y056x|Vv!ZHKqdvugi7dIy{u-+26E$6YYA#>07GZTG;ov2`U0pmtU4GrIRxkAJ$HCl z{|ns1Ud+3t`3tVqn-Vec!C`2*rprC&vl+0bo7BZ|*Aei)JHS5TkE5{hpY#q{@yEdF zqR(Q_F~{Mz1L5~fold~ZLaRu_wkN3`r{LI|hh3JuI|Y#=FV|}jlnEmjWlx=cKNEI4 z2F;x1dKyxLI^VTAd>XEdGHD#u<_xqhX;C(G`5CyKm~VDp|188UZZ0h!e-^ARyh}gx z^ei-=b|t*SpmXqI`066tqvycx;Kt`K+MI{k(v)1grRU+!((TbU-_OI4Ju!~gLN7qG zTa91Uxpx7!_LP;B$u5F%u0(I{u8Z*2%V}d~gDj|fNg9xvm<0|I$xqt-odpL+6t5jM z^b-93Wm+fOW0%1HP+p7UtuI64&dKHP=3j=QQ%a9ZMVDdAp~dTm_*{W|3#{X2pSc33 z%@zy~ZhsY8tzLcc*qQsM(rG`x8OS1 zj(l`wkLEh`oHB5P$?zM{fg2NHcH{;$lkag3ubmAJ*$0$ZNhCf@aL!b)owz1+ETqawl|^nHs&D`bQ7Xl-?6ThaudF+3OSvUbrXs< zxvl?Rb`t^^2Oama_V>>uvDKIW@M;q}%YuIb^u|w%Z{2czWyLySE{K`|Q~^26v$TYXhqfUGKn| zF-_0R_qzi(jb+N}synbTe$sN^lXoCgPtkSdyE|ZAW<6(*`Cah8wdd?6x4RHN%DK^` ziFYCIMsd2;mb-A-*!$Fpn|EnD-i75Cj}*@6cn^x6>Bk-#c@Os1U(-Bm_C4U1^=NhM zz&*&{*kR`)^*yltBRebIk?sA*K$SV{&1>x>3^db-Cbg^hhr(D;L~TPQ7bglncv` z+#Q$M>;ae@d!drKJ%Bg4VJo)8Jb(d4t5?5U`vCIOz0a6kd;nqbu3g&~JOH2a6SbQ+ zc?kZCuTJ^c?;(sS>a*@p=BG>9`mQa$z!$_s8HlvLn}H_hZ<2?zBPZoyTzKZuM2O${$0U@Tum>7Ei!nQgGUM z_a~4%=boQq+!HAAO9}YA<_TmjaJjYW>=P({EW03m`vm@}zSnngy{9m`dD8J0y`IAE zcF~_(`#ps->%Z9!NPY?}isBc0?|lj}4N9eh?>&W-VlSgkU!TIf@0R;M*Hy#!?5$ge zTB@P9|Md^+?bL9q&5m_X2dZJMbDI-bWtNu6Du;A*=S^e|XFs=WZrWPO7u+rUneUb4qD7!kRQAX2e zaQws4<>Na)1LwXLmQu%O@aAsut+SrbXg_)e8&~BVdz0`Cs^2K76S?3SL|qCx_;UR- z*sy8ZA-<6 z{PZ*5dalcZJ+d~M27B{h!J>Zu{GFKx>mPLzAH0hCQ(+$&wgv@ZYNf97A$p?cSk-!EQ#4qrx$57oAV zE$#N^IXFh$oayuBIsE-d={C7$KKvQu@_KQzd^n|i8nL!hJ_KF=l(zx$*?!P%$ZB~$ zjSu;-XJT5sE-?Sr zuf6Q8@8`olpTl)?Ugg8zZR9YyEFZ#x#aB&@Uw}*ZqnTS8zkprmecD)Cy?|+Jj#S%Y z{{m8$tqQUj_yVrgIOw_5=LM`PI&k+>*b7)vU|Zxh^##mLxOQmIf)_CT^=Hd3YhQr% zh92&+Jue`(=_{LQCtg56qwq)juDyWPtLl3_dHez0`^A^&U zty)`HwrSh0y;X;f)}1<6{@j{a^*JB8fCyse29?J(mAna4E%S z)S9NX3-NYU;&bK=(Awoy;zx(MYvY5f#Ft0&@yaUkGvoPqcQ%ucFMHza&i*j)?8N4$ z!5EyE$@zzPe8Mcup;Vb3=PmMJDLq+^q1tEAd^sL$CYeDjekgl3?W9wVCu58kiTa9o z*K7PAz5V!9I6q+=d#-J#&4d5(Y+VuK%X|eovUp$i>4XU=h(%&Cu3z?Hs`H(F#XzzD z@4jn`QA?X8KTNRJ$7yN-~0*rrT>52iKl?cVd}-t>L@4;(!7*WrvKM~@vp zaq?8==`&}~oxgA~>(b>bSFc^ak$v;l?K^kx-OtH=@bJ;&Cr{PS@}B3vc=_t}-*4W& z`{(@!O+jH%aY^aNvQMAClz;v9{eOHw_|F6We|13kzuo@-+spqSum68LApd8(_JI6< zz5PFpf6|KauiYtfg@qhOx^mPTVc&&sX#cmC{%Eh7{=aK&Wh#lN@;m=cd%D6r^CH;$ z-qG6kcyNI9(~^j_kG<2)KGy7mKAQIIgFbZ~*vFE6n7>^nzJDVG_Wn#J`r!#-MHODi zSl4}RQ59ZXg;iCUy(jcT{y(bl(kgsV@5l6qs<8I`A68kxjZN?u#P==*-_ZbehBuD+ zY=*ORPEj$=?EP7JOcc%+!hVPN!$752Xe?8871ng*&vPxTdCj)w&$k6VxSP*!wue{s z9zI<;sZg|3!`m~;cr7L^ugRyktHo>0v>%t_K8t6e96^QU3mi=43*3%aNS96R+D$6N z3+J7JUntXd!nr1v#aukw34Wf)Xh(lf{Eh+bg70TQ2lnuhkFNM%(6Vi8!{Nd6nYE3kYqS_4Ctzal*=XF?3o0KZ6)OTbvsAio%qLv#$&1knJt z`~effMGg~!M8g82MT6OdAs$f^Mg0Q&wFR?0Y%Yxi%on5m!eUu|fAoWAWrX0E$I1x6 z#H<{2=f<)o#L~PYtV}i`(%66)G_b(Rk3wS0(2d6BRj|V#kx0%y7zPdMJZ@a)1Z}y< z<5=h@9mIkZza+4L(IPiD`-lj89C7(Dj9rnVFZm$mQIG1$7%S<;{vW4heojFb=Gz~_ zco;jPVU_uOI14CWE}y@W`Ep`e8GH)9yhv7RWgIJpEf34bx9^3N7|XVec6pU?{Bkj6 zWgMm(z{f-2%4Wjn~mxjRT0P6w`wY({y)YGv*^oNZG|w1eecZH={WX(0&PpQVGRCtWM?jz z2LGfLF_@B1?Z)29wr6#WVE@OmKOyk*n^yi#L)GV-K_TdWGUAkwe#yJy#;M}Z75?l~ z0uwh5p8m&4!Tzq3o$9amEi3HX=UKWwG~7|~e3dW%d_{Q&YTy&r%IB-2x!0_Gs|vgL zNqEBZW)~~Vd)oP+=;f%2N1>VZi2L3(&Pf&ey{cdfxEy4F4a3X4-=HP z3(rvnt$3zeaqcA?&x9wh!g<84mfaGk=IY7D*bQ$#Ikb*!!uDf-AN$%sc5MIEllCr6 zW$J<^r)zq*jO#J|-1L9;?ie_r{gYQsi{G7JxwpmJ^>+@XB_^!?YS#C0n~od$e91jH z?O^+0YnS84LD4Y&yKi3NyVU%Tou=1~x%JAu)=O{Kmj<7v-CUhHew%5%e~#X{Z?x&l z+HL1zc26pcb#rN(cFdx&a$ry6zcZFRn%&^TRKwA?Jgz{RCyP!h0Tq3foc8AGW8k-31kigzYM*uw4cHpKV|M`M35NI(|(Q zwzHsotN!=5w@{9t!g>)@B=mFAOzMAv^2@h#5;Qi1&4LoeMlW{k#896%h@$QI<378d z(S|r;e3KkQJaH2qMN^4e5YHqwC0;<>l6V<$ZQ`}WwTQP63;lUFv4rdgiP`m+HXJ8z zPOP%!>tBy}8L^Z&g;==$IY;@0Yq_h$4JiE`Vw~Fn!z1FxJc{y(ac%|-?}%|u3k=1? z4S5um6Z7x*vUj(7@%3#*_L{`4i6z7q#Px|SiOq=H5KD;z;-f{;QIkaBQEVpTsGu%5 zF0gHmr#HCWwaT`=R{gLuu;7Os0+l)iYFEaw<72c3IsX9dX^|)}JSqy0)q#Fvwdo_G z#^I}QqVRFJRQ7DZpEvjhCqzfFoPjI>+5=O-QM+9kE;*O!7cl~hA2@6Fp&N!6s%K9r9%l~he?)0elaNY$h^93SsS zsvwOf%^>}8exRS{EyA-PJUhU5CL@>%vkwV#7yVoQ|LMF(m>=K16qbv#9^tkX!oMva z-}uDYwQ&Y`oV69(foGt)<#iDXWBR{e9-b@3va+$Z{H(gany2aC%Ez-wtTCRy;yD`5 zydA)5HI9)`XI%HfI{3Hp_;+CO?MwXqtjc+(gyZeM=l@^NJN4h>$JvgxK zYyIEy^F0#Z_Z9MD>xJ6?`}T_0u0_5NV+q)QbW8a4@^N{>-6WhFI*y%(;~dL4lQLf; zd@~qlTCTcAe_bBt^=D<^wGF;w%g@J*+Xl~^1DOTq_7eK$k6XI3t=LTi*jvxIE`FS6 z?8h47ZxvyWk7C;#=jo3BMLmTs|KF6S+hVNq&wEkj8pWQ9Z&KrIX5A`!>3^P|3~Mgj ztHV0|di`N6-s_BFY58Ahz$+un`}3&8?-|1O66)|{xmDLAdxxD?h(k<(OGtQtLv%>2 zgU7J`B78R)Z8$BQUrfL-?d+A#@!I>381Ec8A!1lUEW4)0iQ>WoVwnvCp5LO~B|O$4 zoXw4gaTs*sU19i?eSLF_m4T$N-&$`Jk!oyF<$-lpi z`TJK)XXq5eCN^ZNWEh)8kIi{Z>jke9wCQ45TSLbERFGhIcN*juU9q4z#tJofu7M6;o#g^4$ABX5@c~p3ae*#+(bTim9ASNOtQagL}pn$kw{#fttA1fN} z>0&K-65#hPw(icuJ^DKh?&r+*QvAgd5%W{~n~H z?yyf0`_yG=ZP*8AA&OuhPfYl8NJW2E7Og;kR;F_FXJxAOXJslwe^#a<^k-!v)%vrt zFX+$8M2Y^aOw-Yym1!#avoh77KPyua`m-{LMt@eOO7v%Cs`Y1OYJ>i)Ox5Vm%2bN} ztV~tt&&o6%{aKmXpg$|qRP<+MsziTQrV8|DWtxrttW0I-&&t#W{aKkx(Vvy668%}3 zW}`nVQw937GG+BRg=&NTtV|{7&&o6!{aKkR(VvxRHu|%o9sOCEYS5n*8U0zAYW-Q6 zYW-Q6D$t*msRsR7nX1vBm1#Emvoh8Cvoe*TKP%eNpOvWw{aKlc(4Un_D*CfBRiHmB z(`@u-WvW7dR;E()XJslue^#a%^k-!%Lw{DLD)eV%8jb#}Oy%g$$}|)GS((bvpOvWs z{aKl6{aKL>+g?YOqdzOtO!Q|(Mt@ecqdzNC8Tzv_RiQsC+R>ktsT%!RktW4$T z&&pJU{;W)F(4Up51pQf=W}`nVQx*ENGF75KE7MH$XGKPTR;Ft7XJslue^#b4^k+po z`m-_>p+74VHTttMRiHmBQ>{NMD*CgcqCYFsO!Q}EYJ>i)OhxF=$|M^7S(&QPpA{AT zS(z%)pA{MXS($3kpOtAU`m-`sqdzNC*8j8`jsC2RMd;7UBo+NxnMR{OD^nHvvoe*U zKPyuk^k-!%LVs2!D)eV%DnWl%rm5)9%2a{=tf=VE$}}7OS(#>{KPyu?`m-`kM}JnP z8uVvnYJ>i)OqJ-*%2eym%2b5@tW46;pOtAU`m-`suV?{KPyua`m-{Tpg$`z`m-|8pg$`r`m-`sqdzNC5&E+-u|a=UrYiJjMMi&CrXuub zMMi&Crs?R<%2b8^tW4GD&x-Nr&&pJT{;W*1(Vvy64f?Y(m7zZ?+R>ktsRI33nX1sA zm8lZ_S((bvpOvW^{aKkR(4Q3<{aKmH(Vvwm8y~c4gZ`|Hv(cZGsS^EJF&+A|GF6~I zE7Mf1KP#&b`m-{Ypg${98}w&onu-3bsOZniREqwrOhxF=%0z+wtW4$T&&o6#{aKl6 z(4UoQI{LFRm7+f@QyKcRGS&LCGR;PRR;F_FXJwj-{;U{}{;W(j=+BCZ{;W)Yn9qf= zHjHwT>y1f1)c00oS=}4bmwhb<9Q~)h-uJ#94~r6}Do^$8ur*#RRiZ#mP42g4v%c?lt;hYPH}urxucln{yJkBsEos4BzHL?zd&P*0 z%l>@t;*w^Z`^|Rmnyh@*cizR;TN?h=fE#~ls^7M;8~e78$UL{izaf`#F8g$ei#2z< zw7|Mu{Z3r1zyXe~QDz)BVUl{GyEWHz@U7`KH9K*)Px#N-7}<*JcB$vedzURa@m!-- zmZer)_WpanhhH$`>KuqVa9wG}ZE1A*!p`Lu+=4k0$A^Axxz4*g%wBZ36PH^nVZycj zjk!8^Z(n&ayd%|PU*ErYs4Pd9&Faj1S*E~7?@%NwxaF1Gu+^?Ozq?)-{tz2g>N?|Y%auwLg=zV_X}{YIb9 zD|&G~ZEjlaz15VfEp2pSW36V~g!$WQIM{UK9H!Pzm|R%gx5@X?*`do#x!fT=V%&l{ za^=_BEPW!fXtQI!hN?5-ZQ<20cW9T~!S&tene;%?ms8Am7rf_nFV1Z5 zuIeAZ^x;}ZcD)dK9=Mh_W_1}O>BVKP-S;9<+?V@i`q(Y3MPJVT)pqZ0e@VHfEf?td z+qB^nE7NBOhj!xhuPw=#Z`y}5Z*{oUqz$&*g0bei7f&nc%dek4T&Hht-){|Vz#Z?h zC47HIPcFi@>7#en?YRXz&4*7tZqE(uVIC_xWXpY+8>a7YyDL|xlfC)=)q}Yc8@`y& zS=*YEl_qt39LjMH&}HZH(N5g3tEDrX*I96jdl@!$_j2VHuD|}oC2b)0D){)`4XYY* z`r;-poR_$BCbRloDO~T$O{n**@5T2uxRfm=<~@o#aqQcYuaSvGShSq+KvX?r^!=x^to=ydF9kzR;NWfZtAS$-`d*_ z;@Xr9c(-wPORh~@vx`n%{kZAf_WZfzTx+h&+*otj2Yar)mGQ(U*IRN2JCyZXd~`5p z&h<(3jq1k@47xPix0)+w9vRkQhr>Xw-NZjSHSF7u+xN*-)+n$aH+Jp4P~&R7Iq#iy z8ieeVaoc|@Yc@Z(50|#M&J_847w+h)xDsneH!eT>V@IJ(NcEt#EX?SiT%0R^;E-Oj_AhSTbAhTcep0Ed)=tCpuN4g4Jz}clJ3r2iMK*J=X@)! z)!MnBx)!SETbHYL<9d%nw!mFD#GOj~(wX`n$DKV^()MkSE}Ylr(tEFJxN>#} z24wZgcjuOzIJ@({*qu{IRv0ck@61IyJA69c&X&8?)Fo}dw>!5w<;#qEhTXWe8fECN zT8>=vDZSit%KC9`>qi>B&z5nv4|-0I4{pYlA6;^Hj-M?T^XjN5uzM?RQImVwlk|IW zhDQQ(YmFJq<%w1w?xWYA%b9n^dx*Lpmp^Zx(Ui}Kf*Ykj#HpRQ~fG}MR7=+VG#zWXSyw~GDzD|#n)`Ix=YH~_?p(RSm}+(2`EYxVs2cdq`i*Pf)qBwhX;ELhl9)!# z=8ob9Z9n$l(m$=Z*>dqlW7R;evANFztBpgsS-Zb#X2sicOD@>oDIe_1?J*gbXKyi- zyWK<8-Za3Iv%GJ;?QAa}Zpa1$+2d_KoN-*E`^}pPCIJ>4Oa>PE+`BUXz<-Ke@Z*G|?_iD0BBd*ocBfA<#_2&ln+*ug$(uFe_zGckNKo9Oj z&BE@TvmLqQ@dg3cZ@6$7-qtf09PY(k8hFOyWe->GsrloN8{fKe!-tiQyvUHqr`h0vq1@o3=3VM-9?n@7w)bz{+<^H-d~O;%Pq10tQLEYMBeg1Vo}*QT_aWZ??m2H4n-*aD)YXn!waJLls@i8W&vWi* zRoT0GA*NGIw&T?~Oskr8>$RFX>y}nU->Mg3x^$yHTD93ep4W%lwJO{8M5|JhhQ-?Q zj6AfOzG=2rvmcz&YV`h3T9tR`UV`atT%)v_ZMaLTlBic&O`mR2igu;lSgk77r)t$^ z|5L51C$#v8cKKUhtwz`1s8ySyJgutcT9%<*l^d*8*^Avg|5>2b^qxIGY3(znX;r!8 zoK~X)YktP~bp7F4m4~g@s%pb)K7LcTFKE|HOw_8X`BklEuW4M4@zR1It!7IPYgJ}# z_!Z-`&AhcLdbvZZHY>}us_w+kE0?-=%QsA?Zt_{H@`>{A$jZ~(waUJVM4z5KIxYGT z&RKEyH+ILzInZ(5U!EEM6z(b3uk`n?H0LDVPE|jfv0?iMsS}_ z9x2)MIhgAbk?>~4(?Cw?qujoFzAbmJ*`(c#&nvi+->*fVdlSyB{d;*_(OfUid1d;{ zDT$uk1PhUMO_dL~>!y!Yr2jb1CV$-L!%`>CbI4k&?QceN7Ex&r6ITr5EP})O1zQAj zK3!*S$cq6k`{6m+z_DiBqUwWXMFw8nnA#K8rsa5YV{aT>y+3XgSI26qAva+Zm$`pU z$c8(kIK?0PhNh`PxusD@Th2N-g43T?=6%Mh7I%Z2Yf*QHBX_c+W7iMmBf0Yq`M-6) z9Lzm)Ir{2kjvp6#^lPgP#v{3;w3D_qy$5q9aSqA7`ucEnH#D$ZyJ{@gJ4>8vIX954 zug4Fn4|m`^Y`ntXTaD%B=+9e!Jfl5l(YMitwa25l9(m7|Gg~-whk68Dx_m5SfYQ|+$vwe;0+E~NH}QQHrVO&F98x>TxR^`q^zY z3FD$1m#x^eH=J8(Xmv~aG=y_*ZvL@eopD@^g9B^#{}{s6Qq1hIEZ2h@;c}(q!J~nk zd-2+w?;Xc*>!x(PI@`jT+XC-B4xS0;j5l0Y&U+NdO*i>_My@Bw$MIm(&D&jZJQ(6rFB``Lwe^laaXgqZWLh5_ z4<=lRdW+-1&LhEHa6GuTU~Dpu2X$&52VAbhkOB@fZ=lUsdJjm{I`Vfu>ZLMtY z;&`yVn>+dyV74r69)eLz3PCawFGT7IYbuD*lbBImM;e}99_ zcj5zvSHHnq@zKf3KfgiHVa={COTIzAeC1a2xNi{mLVU^I>l?(HKT23){|%aJ15@pM zSKnaX?6T+gUVMei%~BtUFMoxHNk=9s{`?B_5}UU!{NpQh@0j8F*QBqoKW2h*_vo)Q z-_=(z_bK1pvF%rg%ZyxnsODF=aH`+v$ii}{u||LHh@5hGbw#`);$%52c{Zlnfi30W zIPc4-HuKAAzN>PW-M`k&W!~kWDLX4(3@kpiQ?Em9%4xo%Nd^`!aRGMIN~!5m=|p5;Psj2yZQ{NP0!D<>i8M-22TETyCI9$ z&Uf`0a=S^EFM9V0tb@ZEZMgpl^fu;u+&uFM9!Q42vH0^7@bj&Hg72A&YIUCV31Tv8 zmgTegFaMnMyvDK7pFsWhz4COoPw=win#2p;KSBGv?EYWa{FirC;(CK?eS*(sYZssX zR0hzqVDiwHWpLZfW}*0Y8Q6axtGs@y40aZU)j7iUkF|5frJ1YBU_kmV&5PM(aO987 z<89;0Xuhj5s9!z)jA(EfJU+R9^2$DCkh*1tcz_kNYeN~$cU1;5?Sxk!q1oV3LoC_; z$j^865vGbe{c+&rM>zXVZPaSdN0{I1udtnKK0?-(_$2pvAEDNT)pd;$KEl2o-SZy> zeT0Y!;xm^=e5CoVKElFp4(B!9Kf>`RE{W|dK7#SowGr{AA8Ed;kI+a_*icbe3Kx4i zg?)Th3VvBhZMNMkrTMN(p|AO7lm7ckK@~IXW}l6vkeQuq@4AH9weww-f_adbO?g!c zpIQwGedkvSn+NosHF#(#&39D_Pcr9ajObPhva#YxpIev0vOl{7AE;kS^Ierfxpn*Q z<4Q~5RfFsdA2yC{&3kt?D5nIxBuhIaUn+qmpIt8;KUxBrqr_p=c9+1;tE~(C)|J3N z-bpsM7M0L^S0!K{Chzml_!7t)I`!yE{}P&`r3AjsIQG)gwFKVQDRwjNRRRO6rH%M* zRRRsl^4=IWD}nRp>ON~#hp~3Ps}fk_{&?)-qGIS(t@C#Ei(+u^_~@ilPBBF8wVac2 zxfq@;-u9R~Q4Bt(hNj-zTMPrl6Za%;Du$r!{m*+XF9xNXxK*{}Vwh6@PuFLYiy=@k zvitRjVpx5n%2!gc}UKO(O{o6*5w}mv{RUxFxt;HsHnRZMX^yN|^ z)a^NH(WjGzAk$8GRS4Bi7yZ$6MT~3nZ9mVA1Kt)1|y0NgVY`xL(`fVd3k z{UNUaP7LT2RFYEw&5}0lseYpXMyi{Zw>n<{?f-F+4LDW+&yN-cP2E=jE2fzH9ob$0 z>+7l;i`N&x+D!|T!X8K??piKiIIaL{ zwVmMG+@}C8-Tk`x$dCf)ea)n{uUi3FxOQJy8w#LqRuA^C0Cs2oGk1Q+0_bM*+bi$Z z1<=NAdt)1OX4i%SP)funzZf#se3NLtvGX0v1E2pX(SU00%dnDn8mOz7F}!-d23EK% zPLn>=fc^R&Bl_LaK<@{~2ams`f$)#dO}Qf$frDlca4L zQ2f4k+rxDl@H7_pg5?^>3z%?V*8&aAcg6TkM*9s@G;ragt4W(!4ScDWu=Y@>2FiC7 z+!{1i1G6W@q`qh8Wd_~ve_T041LwyzyxPCNhUU9s>0Dd3p19UpYIBk+WD@u*LUnJP*8T!q2T?V+FBL zA0@HSzBC=i`e*8}J7cvDWBto?7~3Zeu3SIbZN2bGAUxf~1dy;h+m!C$AUJ=;-EFH%D8Xd;`W}*D@F+JwD zBgXZK?e`|e-!edZJh2D!yco(@RfRKj82hN2SkCfedn92(dx!DM(_yrG>oC?YUWW%W zPSs&-PnHgAol(Lo%XeXRsSZ0ccGF?p9??3C{V_#{@$HHX9me+L=rFDyQAFkPaD7X4 z82g8t4&(X?)?wVxvq5S(_=+?%^3vA6& zq4#eP`$ZaF`BHvPhd!$j%;ym6gg(gpTWY^fhvlJvA^%&ie2G<;i@#aJ*Iw}Q#P;I* zPdHNzrnc6;Yo*&}Ea}I!Yt72|^>+C=9j@1(^YiN!eW7`$zpD9!t^KQb>1TT+s}Y8(`Ou>p*HExX%5n!*^hj;uU!=$N%>R}RdajRS zxf0k1e=TS%;~=JdsJfg9tVdw@IUd*IujBn#Jk|*F{HHDWqy6Vz{G&abwKblVhwtKH zyJJ|5`S4@9SgjYb?t5@SELV(n4Wn<9da@asJv{h%xNc=U%xFXPG-KFF28$~k<{#Fu>cDSZ- z8{t~S{ThEUi4RrNVI8roiQ4jhE{7j4Dt~9HYJT)aM~`mo8CWAB{3;#qqb=2L0qk)Y zs-{E#b^f=xgb^Oo<2$PS?_FW+uk!JJ?6_y)_W8M79JQrvX}B%W5Bxu+!?n$O<@4K3 zXi?RA^5Zp*lDI|qeeqZI!cj4vtr=nbs#=cVJC462_N)B3MKLcfg|C}7*-z_@-}?Mm z_N#KxURg#0UkLlZYJH+vebI+q2tV7gH}b!8CTvL@yQ-$c^}_dE{{7>s_KB<%Jo-&$ zsc_p=u4ml0@My~SV?4%1YVG(tUAUae{ZSYj`6CKnWBiU~{dhcLK4Yvt{JxFlRUR*e z<@#%nJlNa$fVIQ32i&J{xj`&HzV8wzlKxZ{=D_}dGkXZ>h2yz(l_NT~8Q;&q;~e%y zA-!;%!S`&W+A&afuf_2I-|^u0#>%}J<14p^wYH78N8)(x_8mt73_se1w>)q> zE4oLz*E$Mfs| zufM;G{`TL$gA?glF{?8MSt5U4uE(RujaZ*pPHaHzOwjscFQu$(~MJhd6^6-?6}uNi4h{nnhfXH;b}~O^I`e z>l3Sq8xX%H7Tzb-5DV{{mJti@r;3#P`ZlNhM#RGVyAopI{Z=z#;r(AJvG9IvJK`2p zo(-{-*p9d*v5dGCv2b10n%Ir(7Q}L5OJZ;0HpB|zw#322?TMp_t%&1^I}j_0I}#@o zTNA5@I}@i6+Y+Y|_asgu7T$A7C+1~oB` z0T^Br<5+<~LyXtl7|Mw8npqo?`2K+RxG)$I59CoKA!b93Hkc6)CYBNl_bJ;E<2?)v zHpIexNjqY^M}k2{%wILJ`zFMRyjdhC7SjOWO{_;8Osr2FPi#Oe+)u4WoJ{uW#3{sv z#A(Dv#2LiK#KL?wHHfpwUXwV7xEAqi;@ZSz#C3>`X7KA@LTpA{msq$@T#s0|Pi#uu zj?&jBwj*vp>_*&>*qhjlIGDIGaXhg(aWZie;uPYh#A(FMh%<LSyAbCPyAr=9?oV7sJb>6}7T^AX#Ad|q#O;VZi0z066T1=1 ziM@%35(g8HAdV;YB2FeAMVvw$K%7P#Mw~$$PMk%YM4Uq`rW26Y#0JE|^B+UvGO`;J z8_nj|hY7J6aZTcO#1djVVpC!_;`+qi#0`mqiOq@QiJK9th&vLe689#~Am)g(h@FUY zh{K3A#A4xuY7XB%17ZoWA+eO$nAnEcgjhyglUPn{POKpAO&m`gMx0E{CaTni6k-G7 zG-5;I3}R#AEMgPl9O9b9uZhix%ZPgu8zuAY7t;xz8L!?o(->&qR?ziB*5)5IK z4`&&{z&{Pbbo_b?hXjiKTG;gZ%~B856UB{l=P=Hk3!UmO>c2XrDo16!sfr!H)gMnpxc`J@zAOk(<^h z1Ea7%p?w(Hv0ov35@Ua|W=~*+{E@6h$b-p_{mYu&K@#lP&#=A1^0B{JGZNBcze65Q z`LX|DeT4Mb4{`ko?Z^IT&7PqO<;SwMjdo#uVE?pcwWZygEgj4AtSArrE7nga5Bn{) zPZ%EX9;h{|jRVyO`!m*mBr*1DT%K^fiv1h6pRj!F=hm!t!u4jj*6v=h{;=QU@`Uzb z|F>qTh3i?|53qgs%pU{p56Gj~|L%<9sQ=;qq1$h8Ke1-Hgmz&%YnDrBN4$2uR5IQt z*0tmQrOUXVVZRdE#n0;FQnB4|zr%J2^^VZCb5KP)`R6N@{eqvzW>Cd?#QhZgg@k^N z`zx}rU*LX=EG!@QU)(NL*8}d)y8UOYw%wKW!u?#gp18m3GVb?3GQWQa?ZR9l_kX^h zIaaK1-F~B+PgrlxY^=q=uNUWv{>LA;(L00>{CdLQz2O7Do*XL1Eq*=mzDt;bUr$aI z`=4$*b?d>`zp|Y|y@cP=;p^pIvET6Z8dgzHzFzJ+^}y{{xm>LqM%e!O+m zsb>T`ho~IU`Q`Vk=s*1O@pparAS}OfJjCT!_BVd{P8H)Fzx>Mj;#_LjdmY&Sy5n0c zJMv;Zge}Y0V^Bps`Sstwq95|hkyqIH&i^pf&Pk+4}++&3v$}h*WqW|#AsT?=? z<@Bp)zizodZdZKXS+)Ly*`CA)zT5#ijO$@UMSHOQ7$fuyzFs3M?0kNwD*GwUL&OKn zk6Yr${K6=L=M89etk|x?`V+=met82b%Hz|c_mNP4tR4QU6Ce2Wyl*DP@aacY_^>=(SDe;8w=yAaG$;-B}!ezUzhM_+m+9ugfh~} zoKAeIo{C6*H3BDNvkK`bLaLM$gfN30-zL>x^l zJSR{RUnRSW_!My}aTc-g9Hc#QI@#9{XAy@HyD9nhwIo)P-CwZNb0{&fhU~(5plA)B ze;U~(#D|IHlwXgy9odEbCz$L8WVa)`aDL-PJcsPjl)f6VH`#@8I-cypbH!k?Z=&?^ z#7l^iiG^`Fh4=v3(};HwyCw1M70wqk$UdL!!gESP;w-WY&uNmWenw=^A^T?H*TmO| z%ZPUq8?EJ+e~H+P_z&WC#7Bwkh|d$d5g#P>CcZ};Oq@*|Pb?hYlZi9Qo%_^#&xliq9}=e#KOxQ_&Lz$wzCi3v`(tb39I^)x3(qx$=c2F4&Y$J6 z`xTVG4W%z5doXbdZ66b2qxJmyb0Y$ai0z2C61x%qN$gE5 z9N&Y9{~~)l@o{3|Ii&F1HJR+mWEY-`_9RXryYL(`joMq2>}g~dt}`;Iy`9OPLH0Oe zBeI(jXOVp`aSpL?-H=Ypt3~$LWFJhdr1IJkmytb`SVs01#6}zV?c+zBLFLybHX}RT zhO6*Xs6+O4WM58fM?8c$i^`J_yOCWuUZ+ugtjX?8cHyXs&v4qA;d*XPq z&mhiD?f**@1aSGWN5(|C{w!~>;@89rh|7pK5F2ge+nXlXsr-h-W@Ps!7Ag7kjfmTkoxiKV z-dCXQ)rahMWS>RsM!cQan|LB|F!5Sq2`#TNaXi_5h~;E&MVw6bal|RaCyCRD&k|=4 zrxRxpXAtKQUm<=?e396UmTyj6M)uLf!hQYc#73L=^>>C?O8o!O_8wraR#nt+C}QYA z1V)MkL>P(?qzz?WLQw;XL{uC^AyPC{W5b|ujffgWB`RvL5s?yX#6BQsR7zCPAgBWt zLQw`(44^ouz_->(_MJ6{bMEDT{_k7QbMD#iyVqW8@Apk+Cdu4;uN@yxjgK$0`tk9F z#vl7_Ha;$o^Pe3bSI5V%A0N++`MZse>*M^p#>e)1D*5qobDaP1_&D|6QNL5;b4S@$uaF`1J8{Zp`0ed^|tSA8W_s{2t@ug>n9@ z@v;5hRd#%w{_?2* z`IE-SGjXyqKZG2oGAKyJbZjO%|c(!@mI#jbK~O|kB{fa z$CdH%=>1v#%l0FTUhlpEuUqx_xRm`oG|Hba{?x->Z}Ye8m4DLs(;ds7JpNS0j!zkX zdSb_?;@y6&KNau9=`r8)&|~|pQ>%ZAmmmFZF)K#>^4(6Yw|BcOf2PdKcRfe%3LY=- z2ae8+{^V~1o5JXQ{NtAEk3NU7PwV)(4Bvkk{Vp>*7`-pWzf1B0yhFRFGy1%S?+%PG z`n-m}?QF+ynR|}@7o-|y#G;tah}mJ|DKfUos4&z^w@s;+Vm>R zAD5$g`xMUdi@$L`$}c|7?bv<}7`-pUM~nIKeHs3(3q3v__iX90pI=(f-;Y*4|MtVu zW4qrY|2Hkaf1~3v9zDuG&Hek`JTuDkcd|8apFUcie@kF#erbP|<&WEu9^V~T{yV%p z|2BZ-`T59+a?H;^s4~Ln^C*C{i zbj&|ZpYOx+?;GjyY0Izo=<|@p{zjkIEIuzspIf+^WXJs6 z>y+isztQJQi~ZZ@KX!)4mdKMJg=wbN6)v#JdaOX{`ebx4#+=87=1p>zl~+b{Jd-N@iY3o$bL(K zzpp@l%r*ryv2S-pEuiYHH?0*f%9>1f{`xg5deV()U{23iD&NDjZpCgPu-?rbj82#SF3-Ii;uNQnD zpWlN_!H!LV$NZc`^E}o(uc&oIKCkHFF+WdV{2O(n&of5f_w@U!p4ab(qx1aRNPJfC zcOXVzdG-8KK0hBfch1XW>z2p--1ii@KGY;*^pnBp^V-GhJ^CMb^q8Oj+i$7x_c}QJ z;^SxZ`vCUaE6nrxym&uHpa1jktc@`GeSymI=ga8PGx}5K)$=;<==1$E(8UO&&*2yQ z8GUZRuP39g$cx9LXOJCR{ph&7yr0oA|JK_GqvN+N|N1aGe*5yD<3^wRFZ%NnBYyV9 z|JTCaD;P^*8$P)hGa9~U>G6V>PcKhDX+J2B&#baMGYUq3?`Hj_XNTVLqFiddKX1Fy zyMN*S{rTlJRXN_{Q*W8v>xy==Jc++zzv02R?r+D>PmcT3{{L7_^GxL}KiU`nJ(SV0 z`*+(%p+A5-TUxH~^GE-G7bY zoy)!ZmM7f*Us7uva~_X}C;#AMj`zN`KF)pc-S2*ad-3pNFW{bf1RIAy|u>F7rA$?|LsNYc$KSL+_QIm@JrmgtG@bTx4&ttFLQ5f z@OQV@R++to$AhVJF6ExN>ZO-)&%f{4?*B*WHvi!E{(rvQ=K1bdPQHSB|BBpKxT6oZ zr#^f2S9#p{=(4YI&-~^9_y4H0-m>~Pcw9N*2Df*<@xd#3+@0LU-S6SH=eoV|>wDau z+v%WhGN0f5Vz-z6n);U0JK|Wk56aiNy_nnV+dMyLSKXew^*3&BUHQWA@O(cx-|gA= z{?+ZdcfQ0u9!gt%+3oq-6QlitqrOM}@b%wud*_eqeV@mvXP@Nu(kef7d+xH$XWjYL z&TxBf;#Y3Z|7E+Yc)oF3&F!sk%()%c=W3pB9b0#MrGKZ}JOA7B2Rz@u_oHsledu1d z=O5VT8lJDDKkoL-y?=3g>+Jom<@wrgKJNC^-~QtE){po7ADp7>UR&qWZck1B$nBZK=iNR$aDyL{-d6nCT7oFwy+Ub|Ly_3Dk?Tzm};&$A} zpRz9du>(hY|0K899&Nb2w92g82g5(PJ$L;xu5)uN+sWZk;*W*KD~xHFJa8 zb07Je+w+$_>w4DZE}L?D@gv8$y)kpH+w*IG#qE_#elr1Ol)rDm?UgTW;r@S|!GQ<5J%7_1-QJo$&+WO-T*ktlP6s z+~M|I^7v>!X-oJ2_T=AlfZHpzxYPa{laEIH68~oSpxwmchOFka(JaT*S@uS^d+V(8B5BB@~XwP5c_Sy^o;P(Co z{~MkE(`N4f7wTWQuiIM(9_{wp?eB7X<(SX9y>ZLv{~;Q_@b(e!oCUWR2W$78{~4RP zJ-7OfZqIyZAGhb9aj4q|)uY@#yr=B;%8RRRueCnt_RPbdc6)B$%iKPE_jlc1{LXc5 zFWr0VD8J46yS+dCGPk$3Ioj=&)lPPM z@s6t7^H+S(?WM}6-QL>eQn%ylgWJ2G{)yW=$t`Xl{^?G)SKj%c+e_)k-QN26+P`K$ z#SJ%gd*!2(ZqKCla(nKS7rDLv%U8NRwc~N4DMHCUi!dm|2e(( zkM7#9e9(2%8(exr>E;hTHhs~~TV~&U+~dayOj@pxjX%e8}Z4^&Y5Jr({Fw-b@WEbmET>hvi%3{ zoIdT#dw%<>*JP5zA6Vni-b*)3zJAS@zIew$8z(zF@bB+j{>CkmfBf&?Q-g0kI$a-D zZg|!Gk4%62=liU==37_C|KG6PedkxUNbbApE${r|om(cQHP*WPN86>7Q6C#8M;~)? z=Fz>@NM3r}Sr2V^^0ShC@Xx4zD_Jx7(*+yde@pJ!$*!&QGnrGiNDg@T>a{=r!Htt0 zuet1)RnkvRpZca7Zl3<$_Q_6Pz3!TwR^2f<_{2Y+-QVP~=`ZfJ+G|Srjgr!4@4Dc; zTh>XIU2)cSCw_gCfQut~Cz-gUp7*W4x9=dK;^x&GOkB%eL} zZI566gKd-dojdsM`Tu-;`crEkcH`%Ed0w*NI%gK<-}cz_=`%N^ues^DN%PPn9=m^| zt&-VYcReb<$u7wrQztzCykBjW)c$_n7VTrVOzypX`^OGDberUYb+(?%HlLNOdC%&f zEUdjl^2CXkef7x0woHzH#h%Y;tg}_J=XOUuQC)vw`sbVXo?kyAlbrna)6Rb7rv}rb z>obw;_sJLit=(B8x#IW#+HB#qnPj8iyn5UJ+`UQiqkF&cqrV-sZt~^*%XjQ@-WJJT zd+qc1A7{5oR)5wv-mvVP4U>!3zyFYTe`Kd*i=#fX(eQ!olRe+P>*<$$IL^tpZxfH*8R)z`zOyn{uQ^c_qm;ub@n*!IgRISpS<^& z>Qw#BFHEky?5i(3`RIL<&CmGQA5PwSIQ{oc_u2J#hwhhb^3k`QHGjfJ$;2B!{LtUd z-z|CL8Snhp7e6tb%(gx{+_$iIvhB=Q9$fE_`zBZKwdzrSyl(I0#-IOnaQ`ElCSO~3 zyK`Ro%RQ2-uiD|2Z$EtRqkpP39_de7Ra*RC_ZkJ}{+ANl)to{#@mruFNG ze|g?5nC~5Ht+VswR>{vVKWeu}D(fcC&$l;R_MRP+=YD9bpPr8YpQiYZ^Z4yEIbn<6 zePoYLlDz$b_ix=hW1r-n5B%wf8`hgnuAKS6;HFDpr;U&dH@$?S05w zKebbG_e}DxPd#HQ*?qN(9@zGwU6M7A{Mb?ddgb0p;kqLi-u&Y|lYhS9;q|xv#Wu;s zublo(_O3mWBOm_I8{TuoKFRu@zwOEY9XXZU@w>@$c3vl!4DLMmg8qgNO<#7@1M3~1 zd496N?_Rimb?0r9UoB)dy*>H+^!smq>9Rvld|tBE*K3DVkA6mS!s*|I{eb$ccMtG(s8b2phx-f+lWHy-zj2c}1lzg?618DHA*u>JN*-aCE&;L`aWk}J2` zcz8o+hvbb%|MBhTJvWzJ@TwpD?akR2B&nMYf9rYQ8BTA1_Z!yU@_qX!S6=hX>prvT z!t__Z|BKB}olKHXuC?_cYac(Eyl$t9f4tG!Pfovh&CTz7(W~}I-hbK}3%S4So9un+ z?ZZ1Se17uY&iUVb|4n-)z4micr@dtNWXoGO{$hRqy^;^^aOS$1*X))&y2=~Aapo=i zCU-yj(<3uqUMKl)`t!$CCa07A-}LL+)YbbWmz}-+FLv8=r)1R!{&C^dxmzWFNoT+C zvzzu!inm^S@H0|V$z3Oxw*AS+cTDcw@q63e`K}$3pPhbA@9;Awl3{uMKTjXNWpdA_ z&V0wuOaGpJ$t!BNE_>turr&($$z?3Z8p z-|4q(|Iy7(`p6#W2oi8CjNh- zS6y)Lk9OZLSvz;Ydc$u{CC6{}+j9>*X#Zr-x9@$-n#b>x{OLJY9r=L+cTX<6{adSi z;^%uNn}2eLea@NMF3EjjllAHw?3X-o#AzS>!}PAnCiidsq2D}+$LSwWIrkGsZJ(UC z-Ok4z_WN~{>-Jb;IeeZecw#m+C9(4DC z>u#T{a`=Yn>~=3pj{eneH{Q8=Xi|9N9cR9-cyO}S&4)d3+Z8WMuKCSb$4#HTeX`+K zu6gWr-^?a|JmXi#XOG@BDQx$ZNB;7@?UM`cfAXIvylnqu{nyT)b@dPN|8!jT^2bm5 z{JzOoFFE#om!7<1a?9V>Kl7(I9h3|X&tLbl?)J$S=HBtHm%c5ZJZs~@b*mq|S#m+) zmp?i2`h0Tp9=9Lx>>GDWUcT=sul~d(Z=F8q4+pHa=6|xuKX1Qh&C2;ZColT&>gPSW z*-MinulUcMM?9D$*PeK9YRyw#H2(T!suMb>&dLbEJyv{>cp7`SA?SCs=`S=FA zBsbo2$p<$3;meW}&uBk!bm#fW7Kd)S)=z$UKyuON@@pM?^8rbvxNYyqJztcRww~N$ zZrNVRudmAIuGwUp*VaW-*H&-+3k`YFF)X< zix&Pjy=(fRRWCnetK|3Zc<)&+{rbz3weCCqiQGvqPj-3m_8+cs*8#~VHh<`x9m_9B z&bs9H^@pChPx9znfBb^oAIm49_haT;_qmV1*Tqi;lX&A`n|D=G+nhRjCp{f}|7H9` z#Q%>iz2@1qkaXvhN4xX0Rid73$l6&e{0SK~GIhdRjieEcvR$&mTyBC^31|FsLte z73!Pa^z2mrs#8-FSTXQDuNlc#5I5!6>ZoPf>Q8+|0X%|lg(|P>@f-<%P;*Xl^AeL| zdW=`3XT6bEK@U?`pPI^G#lZLZijuD&j?GRDYVukU+6R3U+D8X9UF4e{$LG&UeqLho zs9{iF>MH0vfwekMZie}PfcddvAg?I-D&iJa4{IprpHdHPdyiE6p`Svp7tcFC?EdxA z$CdH&2v+pCQl9^~;&tG=#?BAD=C8ryA1em(W+Y!j{B*8EF>)Q~r(i!>Ec&!i(?`DT zagcK0bzKu{7|7?ZJvHUuqcYAtonA-kOaEjq_Hl*YNA{<%IeAT$7n;-RhR~ixZw;&% z_+08sejc&^*k>)Zcnt~lr@n%mCYHPJo8$5SLp=VmLg01g?_C!q-$wj@`x?``h+cS4 z3GJW#DQrfb>!4-<`M$?dKCfTqM~fPhh(p(pTBfc3)K`$h-$ms0OKov>stUcL=<~F} zu3tm)^N9anTtD^_x_<0WVKeev5j9g?+<&YXI73nL6~rt0`cKW^*MHHVm-f*>O&9s5 z$I+h1pOgH&#N<)Kp!biu3hLO`y#eR{G3LjL!97nTUq#%)TG`isYV+C=+7JB{dcAnw z`C;dMQRwx`J@@R?kUe->%I7^u|71}ki`c(rW4t?KypKg$**G`gX;A>o_Ug6MGyI(;`<*~47`^!lCL6;%|s1q zhMouXQD`4U)byz9ag@);$3XJw>+t=KHJmSSeXW+-p~oZrLSXL&Xd6n1{cFwKY~=Bi zlUnk0&LL_#$k#m%c?R~{ll(m5SP!hBX6Sm;N1=U8Y=r0k^?3ec#X!xXC8?Ydhps2dY$R3pqC+=#n*rM z6tF_DzUq>n{r}h(JwkoaSFxloe2q*043ATfqkLYkEI5WD;xxWSJe{whtjWS7)E9jf z+E)Ryw2-fQ9Od)5IV<@-`GK!9)G}?oU({C^hv%xO$^QJ*)Pl!RKK-Y_F%%K|@2xOL zEz?$i>MM-Hb3R^Ha;T)t~wbNnj-iD3 z={$$19s2q~KZW*F#Cud7DsntGsJ!U26&!yLk+SKU@-?WrBkJ%>rxK9C|@p)Zy;24UCt6Y&9YKE>WeH7WP z!;gcO$Fmx0&Pp!UgU(lm#{z2lQfGR$bH27lJ6s4 zz>3{JYKG>ckD>ye^`c*gv$rkfSq(L(Bp2(!G+8$bk1A@4QfGR$li!ehOJZ`UVbDIQ zt5Dy0)C`gDc^u_)p7d`PHL{3(Z}O>S+Uiezg>iUp;`w;}1HFRiE0;0vYhChf#C@#E z-!9d)I%hTzbyP*r^%1uJlp#BiFSE?GUJ0mRzg{oo`~>vr}!< z)TGYW=HsR-`2pheTzo!ihUTM>q6D7xqW3ok?GUJ0kX)<>)1*cl9(B}|q|Vpod@ad$ z5zk}A?jJQn^U+5!jLet0eJRgss5vRQSPwei)OKg5%Baapo$1-m`D&7HA?{(t=A&k4 zKKdwX;8`zv|ArpVYN(mMV^Jg4gK4s^503(BvQlSywsXFcL-&P#iZXf)Jzq-D4}qFh$*ruHPUOCHMMHhq%bet5bL#cx4D5F(b*8C2_Cnu@ zyPrCn@``v&m%+&gc&5wyQj>feaUUyp&x-F0wL|xXeu{<2eOd5$RzuAUybUYsCBI|% z`7$FKrp2B2r6Rf5oO&HO1N*H@ooOnMz0kL_65ax?UFzObQ*!~H>GHlzfMdubE@Snu zR`h(KcIdv)Pf+g+mc&ZFa5}U8H$E!b7wECXeecC2Cl>pClc^x{E?;~EoioO3s&CqqGk0QHM_;H;5%Tk`zP;*Lhu^#j~ zR44HM4{C~1XL`2tao3RiEaCxH{=WE(tfhA7aYsKz8FPlNM;iJeP%|sJmG#n!T*tC# zs1JLoNiH_0UPsQrew$Kfn#yA@^zE*Mm&Ucr%;V>u0MB%JUnapZ6cJak=D0`R`zM#$ zq5DEV#eC$xv^<{GP;*vtE9)iug7D)zb^p>nOrQ5*H%`{;&A?2P+2Nml?^|5Vx_?e_Qc=p?2uL z&`&WRxi5W>XEoHEm)y#F$?Y6|zU0t<2)r)^$;IZ>>&+S1Z%OJ*TY2n-zV(&x@_0zAw}c-52^P z(z}H3OA7iSP;)|ZE9<2QeVbX|?<$Fg`tZI~B^R61G+E0T*l$DXOjCL6g}$>Z;Wfca z5ApL=fJa?w^1fujF%%F#o!@h!cIdv)PoaHxQPV`e;&F^mE`J}dBl!X1r~A8`)S(Aw zBJ@7dSD}3^peFYa=EjPFvlb*@M%=)PeNCZe=<5W16uDgZaW(7ltcIF>$;Eom`Ks{9 zJdB_Jq|Wqg=X{gk7z&6hSh3fF)C|o>A4MlJU(@4R4K+KGi}j%MEx==lnx52|p6#43 z{m5c(lZcC0vH7SOnvXt;+^*sKR~0YiQ?nttSPwd14IX{ew53ip8B=#&^ZyLbMlI9U z=Lhu_#^JdhYKqjuih=wR%O^;_a)a*zu)`QMhg2xawJ*hK2+o_xW_hN5Z#G%=!W!n1u zpuWO5Jl94|1$qV1S1w~--@4@6i2GQf9>}L===#z}F^u%P;PI@6nwf<~jaUyl-_-7S z{-b76>P*je_xzW99dU;>zg_e)E_Z5%=A)0I0-p7v_hZiESq(LZl8g0Vnyj0JNA58^ z|FL3l&wt665jU`6^HDQ2AAJVi=jPDqhN`Wq&kdapv*(eAEohN1r9wD?Hy6v_qg~QF5^! zbiM*S8mK8tov+RL+LG@f9%98_Ur;kNAAJe#C)NDvD)`MxXwh50uYT8n#nvC7^U-D`E`|mld*nHFs%|{=_ATr+!v_qg~MRKto zbiT>G@%%?kUFv*o_xzXqJmSnM@%gA3nvXt;5_r~&-oGhmhd|Au!cHEpR=O~&r|FZuN9c>ZI>=A&k4KKdx~;8`#Fc$651OI*=%dJkXT9kCn^^zjtD)vlaDkWt(rYdDHi@{16`PNmq50^e=tt(OikI@K*^peU2c2(Xe|-N#ONVO5j;9djDpi9Rf8gl8g0Vn$&2+ql22d)cM++uP6C=#F=&C z^HDQ2AAJ;q$b3`K4uP6Q$;Eom`6l!D{)d{f)cM++uPyl=;vrV-{!ueDAAJ-h@T?cT ze-rC2MGQ?kD7VpyBiOrmg2FTBP9G|}+ z`E+Kf9yJW=OI?Nf&Z1@pIyp~E`FtK%B;P~KDdN57aO&o~dBijI9SFvK?d_~Du5I3>>>udGY49!O$MFBkPMd#~!JgcGRoaACX zm?rD0@R)cOzOG80>DkWta^M(>h^ttAIcGWU)C|o>A4NMdU(4fJ4K-&a7wcgTx(2;& z3sP%&?z|qE4HtX!=hEv%ZR%u&Z(7PrAB3;};1mKp!?|hobPR(QF^o+rq&e}6j< z-Yhtc0MC)}2Y7qs!@rwSPGHQmt@6bn~ zee_XNfo?&3d@i3)b;)-SKb_w*rFQ6fOFxD7lY23~mTh)gYR=;rpIr7c0gfS$`04aR z?NC4TQ)oXksA(Wy_BhJtHE&D4%XoI_XL00H%e3`zLVbmCc&>(;%;tFi%j5X`NpK8P z67w824C+f=h5EKpQ%An!aeRJD@*RoEqlQ6!sjE=mIo51}`|oj-&+9z_jv_5R1NtVkE4A0HznUe?9Xmmrmg|+uf zLjm!Mt_L+keb7gteWVKb{deRm9!L4?qa*n~;uT#FYKHotk3##%qb8fh&nX_q=TCuS zC`in6)G+AdlDZ1@EpvY4D;`JroTVfA9%A2{d}^7t`cq$F9G>f-W@0P6{`ELMKL?H> zFEP(i!=S#@RjBVAY8uFwJ&y7@cU$sZ#J)HA)G}@Lr@q2CJhy~dU8=?LSpi$VNhS{ zD%7`(nlg0qo|ezANxmU5dDJkdFLf2_+d$0#`B{(S^A{wa-hQbbH4N%YU4{D2qGkp< zIZw;yS0rDPm^^A2)R(#n^&Oz5k9^zXD4)-_dCl*D$DJOJ$<#7!^{2kVI6Rkr8Q!mj z-XvBGMnjZ2kkE4A4ygbnSj_4E1f1FtjHF>QF?Snpw5_r~& z@`}(7ftqE>#dB|nGQzqY1j+S)Jm6~^JYKKv(lLY^xE`sXD- zgE-_*Ez?$ir!U&Z;i-wkFhBHaqAyezy7?tP7xAZ-X{$f=6~^JY8PrU^0C}zm-29TC zK^&T&TBfc3PG7W*!&7{W@$pm>eWNO`1?@gK?Ep{t^O9eXm>g;tv_I-9)OQ{=g`M$! zDOL>Rmn2`2m^IWes4sOD>O1*zeExxa)8qL3ImypUOdd51>PuaP`p%$cY8QO|ixmU; zMah>WW(_qA>PuaP`qog>LB8&Bl+VXuPx1rA>D*FH@~LIo>Q8+|d)%l0|1;$RnyjN{ zL2@$^GjDo~)z{av-pK2rhciUph?>b=k>`ql z-(T{QFCmUydrDA~Jrml8^BJ9Xe`+7u!*TziTNfXpx{!VJBtO5BKByV$gFXuFqllWR z7vk}c6$AN2$(JN%4K)lpKXn!ATj%`9*FBEU?@4}6V)CeAP+#gQ)VGV8$=#6Wioo4} z$(InSq(LFl8g1A z^R?hnK}|vGOwV@CSC@PnaZH;v)C|o>ABFZYd^O(xLB8*Cj886KTW0oL)R;p2bUyc@ zHfJF8`9(j4_ES6(@Bc%;B!0?eOwE?$yNKtpV!xM6&CqqBkD>;i^`iY|_FBrb8fs2T zF4lu-vaSb@GHUWtXL`1CzMAA)hNZ!E3_v4Sn9Yh??oCMU7YwI$r@E z1=M7vZb=U~pl(U>Rq{7l^f5lQOk3{<^%ch9xhiUU$hSO>^65X2`~u?8=j+rmZS|+V z!Z+ghmu=aFT==n znL_^|u$Q9bVsq+sJoZB0#!7hYjqv^tII{ts>GHlTNIttSzCL5Mv0~3X z)>1okU+AZpnhD>R3iLyuW?gbC>!k*LyEgiG?Td!`@V?ATE;grWvX(Qre)oH7&&p#j z^qpJ@uLoWgoMM1yy;8R!`If}wP{W{eQ&*w=4N)^hzUOh2&+C((Uew4U_PxocmT9X$ z^%ch9xrw829idkcedRKC_h0gD#C@z#59Cub^t`8!A`hPRqWvy-JgcE*CRx;o^?C-tAR5U;2EFSp(*)U!~?9@b)aVGI?zXvdu{mfkj^jVSq(L_l8g1A^U;HP zQ&MMo$}59c2d5O^8K2joCHXGmd92uVpl0Yg&_~gZT!+j7OL(G{b5AhHyb{(i0x(@VFWRDI%9wrW4%Cj13<|G&ELFc0f^$JpF zddjPS*94~$;2EFSp(FV|;svbOb)aVGI?zYaja-N9K}&g7L(M74#d^^B=s~@r)R~_0 zGOxqGBMnY9z%xFt!>r`z7#|$J4%7@?2l^;xz_VWT`^6-*L!f3}bCDiQlN$7(-i+3b z#g*3puMJKuz#G%u_sy>42Z+-zieCq6hOPsB6#d9`$U!>p|zE2lYx)XWGik zydLj=fm09gjL*kIPxAAKV?D5jnxX4JABFZ&M9tKT@!AC|2KG^udr2dFZ#IbdOWM4=A7hWJ(woz=s~@q)R~_0`rzeXg4dB)G4MLfNWO|V)&n)D8M+Si zQD`5TWAOSH`Ig5~KKmGGzJQ<8uwwUvnxQ`EqbP!Bz3BZYLOTR%mL(VK!8EBs59-yV z&a{aG_2Tlpl0Yg&_~gWT!$HGhd|AWP*Z~L6jlt>tV+ItcvguOY!v-D+bO}kbDVoU5>4eTBfaiQeUwUnWy9N ztcIFB$@$*qNq(+`YxOd`t`ffK*v@$-z%k?y``3s$YMHjqLw$vDc&>(;8uBw9NBQ(` zO1^{GpUJdLTm7l8Fb>Z(PQd(!VSbNed~*5z&;&S!JmNAIzg~3Zyyb1DHlJgJ_Cr6# z9C+4~@){n`YIr@`lCxecZ+rhaqvt^r;;LKp{;mkU$sz1|%!~dgv-IyBvS;>}dHK>= z$hBD*XHUfQADpQG&$zt4Rmryy_po?#g8%W_=d}{&ugN#~bnb2b^kv$GpuqEBOIpyJzWFEbUeMPC+{~AN>?I zAMc^w=g@rQIE?$w1^kUdUIDxsI5Pp>NNDuANmKG2#8vOwnwDv6pVU_vhv%yBPaT1; ze;!Bq?(07|h8*Hyz@J*Ct^U+k7>DONoFDlakE49|^NsvIp5nnNzXyM2=1it$1=+|&Qq3r4RKqJjYuui);_7Ps72=KdpxV5 z=Dg&5Z}TL-1MTdq@V<)hO~-c5GX;*Jh}geI%u&mT#4$|5?fR z5&JWlmT9X$^%ch9xyl-$5B4NhD?EDm_Z!-H$=#xCVM8d5BeyykK*xo{{#7& z$5B4}=t_QoIQDOSu#TFcKIo&+K1#>o=iejo^DkBm?4uz0GU63o4{C<`ppQcP$m8da zS>ziYNBQidFZm(j6ut6xv4$ z_p*n4%i}1YeGD`|v*LeOgqoo~=%dg+GPsvT=uTqAz&^^7uOnX3^`K^`5Beyyk0E-W zL%!p2l+QkflFuBq;_E@pP#^SBXdivNz9~U>3M&M1-Os<0Zz1ksxu1Vu8?K`kwK)T! zUq|StDB^3V^`yL^$FmyFm=<5_#qzdiwiLhp_8W5dBeR>CeCH znf+B(!t3I>(gmj(;8EAE@0{k3#^V!<*SCf}25N_{FZ~pa$n`Bow0SAYlCxe^ld)aj z9GY0!^(BX}>(LhdQD*7&WzX!dzY<;t&%NyH@cl2qqpn@wDR2xW#P*n}%X!P&PVLb3 zrJrJUoABeTdRzQ)W_@=&E$Z5HfpH7Z>D24-^GbkcT=)7P977(l-LtZsx4iAt4$VhD zh0W*R=g@q1pRMnPr$t@P*T!Pseca~(II{sB(hmH4XbX~`JONVDkq2M8+bgcq2_|*Vm;`5 zU3g5D@cs{044khh`3mADR_y*!Gc+H46!}xa^L0I*)lhRza)3crPWsY0yEr)mp zD|Y{=8JdqiOK@6vzM6O`pPEg{#d=sWA3Wwz(~&yWWX$=7lFuBEpVP2n_pb!a(0ue+ zg44tEm7pC0HLH?~^{`|Vi1`x5A6`BIU~7P z4?17&&G`Kf)KsL-*XDd3$@dX2V8!kqHAC~!N6`V#deQF>*%O!YtcIFXl8g0Vny#*b z?|-N%N}cK1&iNXW?;xJzihTb|K{GTTeH1nDtQVax^~R+P*je&R3Cq1Mw_Y?EX`oGr)upk}BK`Y2l9SugrHDnL5~YL+Ay z>%lasF@#48HC3tewK?Ccc zkD?2n^`i4NJf781vn{z;52new%scS!AEKr!b*5)K=S!Wk*jpBH0V{U@s2Q4%K8gl- z){D+p5ijLavo5(<52nf50X%xBX-S=GGUj{(&7X?bu~@PDN6pZD^ih<~2+vo9b_mog zOD@)f&ewrQ8#Ohl^R+o&SMmeI>C@u(kD8(R=%dKJGdy1o+96Q0Ah}o%I$sSQb@nQC zzBcD;NxqAC9xHbLs2Q4%K1)yy&zCvfckD?!$Z|L!?hMMU&FKWbk(D|}w;_rW zABFbOLQNm}w#QLE`+!6Hnsbti^`P^0;W6=6y#FC}re{0n%YkDkB9478CWo4#`RJq2KJsVb=Rf4D9!L4? zV^;EWh-2R~Sx3!KAM{aZA6?W;z72V<2-rtn@+HJ|tk~n3nxQ_Nk9bth4&U#NcnRHU z_9PeULFenkBmH*#{3ms)$(ZwH!7=0!m$71xXKIG#qmQDtEIePs<5>+g+meg*pz{sj zF^`(A)R~^`oG38Ds?{SpRKC<8#@`%e=vFA56Lw(Rkkv%8!`1g2LL(R72Vm;`5 z9eB*6rYm)(XFKOhRTq29A}(OXp5N3A%|{=_@O|O=D&nPlYStwe>p|zMor~8$sA)-^ zYBJ`01I?eg;`c$Q8Jdqi3hg8HetfP9-ASw%*hg9Nb;PmP=uQKgp+4xN&^~IYnM1zg zag@(KhLX>`YsKHMs2S>mJ__w4_W}I=19YdbVqhOt$u|+lzNS-ynxQ`EqtHGEsF_E; z>v5FNK2q;q)W{-^J-0}uW~dMPD724k9bf;UTM!@RGG-rj$+yYJV=neQq-LlO`Y5!I znGfOXKk|K#MGPX^k>O2Gz{uXU4{DQP&0>o$K&|? zq2`w@)uV<%eW|NZ-x6wy(3$kKe12K-Rf)-?hCzL)t5Dw-YI?}GJdV#FNPZ|WdDJkd zFLf2_J48+XJ$PRqD+cmsBwv=8HPkSuFLf2_n>`Po{~_P-I6l8G`GLgbQNy6V)K#eO z3~F*Uysw581NjBX&q&M~Y8cd)x(fAepr(y{&Exp|uH^d?lSd7M`chY+zFpL0-;2)^ zJdV$w0>@C0nCGZrP+#gQ)OU!QCh`@JN6>C+}(b{F>w&5|c*_gZffep}uw043MAoI6i+t^6B?4)uV<%eW|NZ-!5uq zpp)~oe11jpHHpcihCzL)t5Dz6$MF6y@@5~>nW@l z$S+C0A~9>IVNhS{D%7`%nlAE9kK^;_BtI`PdDJkdFLf2_+d<9L2l4(dRt)49C0~-5 zHPkSuFLf2_JCB+U@^z2n^Lvt?lbAee7}S@#3iX{hAMbzGk>`ql{Ji9g60?LF2K9Bi zmcXvQ1=O^lQ}wij?)bBk?@3G^H4N%YU4{BqQ8V!&y#MWSe0~lbLtbK@qlQ6!sjE=m zHfkEkmpzWpZ%ckwV)CeAP+#gQ)OQXw=?~-mFOTE%v)~wV67w824C+f=h5Du&c>fRi z8IR-ho04x!Odd51>PuaP`c9!{0r|ei@%fqa7B#XGlSd7M`chY+z7^C|pi}U)e12W> zO^L~)hCzL)t5DxIYUYvedYq^5KeDKik(fMc7}S@#3iX{sO$j^JdDJkd zFLf2_oBlXn|03VMGQ?jhg(&@cI`k2J&YlUzV6P)G(+obrtG6K+P=j4UgmV z`;s3>Odd51>PuaP`er_X*T3iE^)FToT%JZc!!m%0k|okvX>I(bja=hr0PkeEDb7}S@#3iZuifY-ms&w3o6zaaVa z1xxj)VNhS{D%7`#ni=TiJT0GJk$g>J@~B}@U+OB`PtB%&q%(4IOI<)(^h}#D~!W)txscqNn8j}?QPU-A{iA%AL_w)#_FVH}<-H8DT(O^>5|H^1bEh(rF=GHvyz zzQQ;>m%9-2H!(j}3~qkOR}hE%sb$*gPkn`PcrNo<%#VE2<0#+FFZm(jkUzCdTm7l8 zFb>ZRQIo$A^JB%}=9hd0amb%qrmg#^Jf_MVKG?rpHmfn_u!n#36rbnYQ{1;*dYJOk4e_uP_eJRW8Q-$TvNX^4MM-Hb3@eR zFT(s-F}V39UqKx5r>D3$5FnUU-Co5A%AL_w)#_FVH}?8T!#5u zm>(+!H^1a7h(rF=GHvyzzQQ;>*SH+>Bj5Bm%6Icieuy~aPc73{f9flY!*jJZ=Km7r z$BMztFZl}MkUzCdTm7l8Fb>a^uE6}rH$9H>-TaatA`bae%e2*>`U>OlT>dMV|6#^Jfa*D?Pkm>(+! zH^1a7h(rF=GHvyzzQQ;>*Zl_ON51KCl<(%3{19=-pIWA^{?u0(hv!;XV*X1pKUNHG ze#uu5hy1B!+Uiezg>iVU(!u=5H$9H>-TaatA`bae%e2*>`U>OlT=AQj|1!*v6@!~! z@)g7(e`=Yw`cq$F9G=U53-cr2^f=0Q^Gkk+IOI<)(^h}#D~#jLeH-&%j`^`-Ab&>k zWrMGQ?gPJz-HIL)-yOQrqOdd51>PuaP`p%;!dj&rK@Hjqy3LHa0VxFUhL4B#KP~VB~ z;PVgUD;~$^cO>7Hm^^A2)R(#n^(~+#^A$WlJdV$w1jjHXG0#!MpuW^qsBaZDb>vGP z$LF^s-;tO+Y8cd)x(fAev*xS#{KMn;{0VRjlM?fs(-MGQC3N>ZuO znm+PvkK^;_CBGmsdDJkdFLf2_oB19-|M&(z|Gh8hO-rLIDKJE-X(U-vjZzbE-Q ziOHjeL4B#KP~UmfOm>jxih%sQwd$kK^+*-(J+nN=zO#4C+f=h5D9JQ-Myw)AIRs$u}h?j~WK`rLIDKTd0{wzUy(G z!vD^qMn+=ts9{iF>MGQ?kD3y6raUd5UzL1aV)CeAP+#gQ)Hi(qx&L(PA8 zsU9^9>PuaP`sPtngwCX=<@3vuuS!fFH4N%YU4{BqQPV@d<#BxeK=MP0$)koreW|NZ z-wtZ>-^1%)tQg3jk$hQV)=uT|k#Be$pWm1KKw|Q!VNhS{D%3Z7HD3RI zAFqG0Vj#aD`5B2>Lk)xaQdgnAGpK1JU-LLVzbpB^#N<)KpuW^qsBZ%`*;%~)^*BC% z3LHa0VxFUhL4B#KP~R?Un#fl?j?eE%zAG_#)G(+obrtG6L`~)@y#Dn#K7SG%!<584 zM-7AeQdgnAlRv=gU*t<3$LF^s-;tO+Y8cd)x(f9zvF2*L{`ELMe*zrCq{KYuG{#Bw zrLIDK8}O|nU-URWzajaS#N<)KpuW^qsBaH7L*#oN$LFViu&6O1F?rN5s4sOD>YKg> zuYaMF_q2R|P4W$i$)koreW|NZ-#lst$j^ElpT8ja^fgQMs9{iF>MGQ?f|?oVD-yGY z8V2>Hu0nk$uEpzLuT+ z(5ZS_LLa^Um3&WP@~B}@U+OBMGPXhnfm>3ci*UkYAU4Q)1Gn zVNhS{D%7`xnt9~A9_K0ipDt=-Bqom<2KA+`LVcU4DM4q-)AIRM$=4+&j~WK`rLIDK z`>2^izTzcJ*zbrUjjRUuj`e*q5?{R#7792xPVxFUhL4B#KP~RGAYRJ!c9G~Bmd|P7js9{iF>MGQC z7BvgV_dSl!&-{E*BP%g^)G(+obrtHnfSL+)3Z9nFuS>ouF?rN5s4sOD>O1vQeE&zj z>v5jK|HYz4Mq=`)VNhS{D%7`(ni6!TJT0GJm3&=d@~B}@U+OBMGQ?hMHOA8y?5!_a#4&m^^A2)R(#n_3fZ0 z_e;G0jTHlbt}IBtggEs3cGNO$^{2kVI6T+59^e0wuX`Nj)4wPA0pgH9wM<+6sjn~& z&sA=~{J+BdSTVTyC0{}u@~4(*t3UM>#^JfrjhG+#y2nwzn_uz+#36rbnYQ{Z(Zo>S?*FBE%-TaatAP)Ic%e2*>`U>OlT;*oW ze=Fw4iowk<`4ZxgKebF-{i&}o4$tL(iTRPQdmQDv`6WL<9P+1@X{$f=6~^JY%&##2 zZI~Y`1~gEc zKUNHGe#w^*hy1B!+Uiezg>iVUa|`B2zV309@8*~M0CC8lTBfc3)K?gX=NiAp{J+Kg zSTVTyC0{}u@~4(*t3UM>#^Jfjt(YJAy2nwzn_uz+#36rbnYQ{l@u-(vnb%#Rg= zn_u!J#3BC_v`kz5sjn~&&ka!1LB8&Bl<(%3`~Y#tpIWA^{?u0(hv)jg!~C~neykYW z{E{yr4*65dwAG*b3ghrxXAbitU-vl5ck@erfH>q&Ez?$i>MM-HbFJGk{~eegD+V{e zm>>DN$5FnUU-ARQA%AL_w)#_FVH|hvkC^`tm>(+!H^1ad zh(rDQ8-zad@tK59S|WeykYW{E{yr4*65d zwAG*b3ghrx>t4){eBI+H-_0-i0pgH9wM<+6sjn~&&(;2n`R~H~STVTyC0{}u@~4(* zt3UM>#^Jf*Uob!Nb&sQbH^1Zuh(rF=GHvyzzQQ;>m%9)1-;MdPVsP_IzJxgBPc73{ zf9flY)wy~k*|9k<-7SMKR_JvrT{T1^gU-vl5ck@erfH>q&Ez?$i>MM-HbH%@5{y$@WtQg$#^JffKQRA&m>(+!H^1adh(rF=GHvyzzQQ;> zR~uq}STVTyC0{}u@~4(*t3UM>#^Jf_ z!#^Jd>YC6c* zJ&y9-{E{Ca4*65dwAG*b3ghrx=P}Ixcg&9!gPULSCBz|rYMHkBQ(s{mp6mPv^CMsP zILdePOMZYj=npN^R)6X%jKg!S|6=|JF+WxeZhpy^5QqG!W!mabeT8v&uJ%97k9^(Z zDBsO5`2pgPKebF-{i&}o4$qYy$Nc}m{8%x#`6XXM9P+1@X{$f=6~^JY+!L4|`MSqZ zzMEh21H>VJYMHkBQ(s{mp36Lm`G=SvD+V{e*H{(vKaBaYVsP_IzJxgBPc73{f9flY!*i9@FhBBjkE47y zzvKsqL;lnMM-HbJ=HLe&p*ONBM4k z$qx{R{HbNy>Q8-zaoo8zF#kU>KUNHGe#w^*hx}8}GHvyzzQQ;>*GEkU`MSsP`8~7`FY6~C3YpyFsQH7wFGwc&7r0RovN?p@nHu0nkqsA(Wy_BcMjE%{lA$)koreW|NZ z-yUkx|HkisdmNvi1;>z+nCGZrP+#gQ)Hju0mZ~8?<8gd`Q}S(z9S<4?^`)*teWy^f zfPCNM`25VmqDEF?@~B}@U+OBziY$LIGYKaiL_Y8cd)x(fBJqbB!1 zeE-Laf&7BxXC!6~H4N%YU4{D2qNa^}&Exp|uH^d?lSd7M`chY+zC+YxAIHCc;&FWb z6gY;0#5_k0gZffep}v!AFH1F%uXr4v-;sP*V)CeAP+#gQ)VGA1%oF%|&Exp|NpK8P z67w824C+f=h59y7Q%An!aeRJD@*RoEqlQ6!sjE=mE^D5|zklL!eEtMDhDnKe&S{L3 z>PuaP`VQe+MZV~9e11dnEs4pahCzL)t5DzUI?M1H8vp)@$MN~;)alDlO-Rg>)G(+o zbrtGcLQNSuc~8sd*CgMNm^^A2)R(#n^=+VLfc&h-@%amqPp`66j~WK`rLIDKd#IU# zPR`Tv`4!36Bqom<2KA+`LVXud(?`DTaeV%~c#v*_^n1Yz>lZwD@WO+K8RX!F2M>Pmg0YO(c*bjd*82C`li%I%oLS$O z?``&4|KGYBySM7r>x)y$@}BS@15S<%ipKWQ}Tl|V~E)~ zGeYb&mtya5sIPy;xk{{@zlOiY?3@`P_L@tvcd9pc@|%=l-ruJ@!5=)oc+YwC&oIuL z6>RpKPesPNrQXcMtIX_?`Z$1?n@8&P2`{g$&!+g0P{@?|=`^^eA z`^~2!<6ZsYx?j9XpFWlQ;jer8%?dXA&8H&c-Q*>7zx*a;m@oIkAG~1q{bmK5{pM4V z@veGF-7j9HPoK*D@Yg;4W(Ax5=2MaJZuC;RUw)G^%$NJ&4_>JIezStje)FlwcsF`! z-7j9HPoK*D@Yj9)Vg;N1=2MaJZuBy`Uw)G^%$NJ&4_>(EezAhhe)Flwcz4p9nRt~x zeJc0EU-$Hz6>RpKPesPN_EPuDZ&HT&azFgRi*(;_RX+C3;#K+?7rWuV6)$RDl%pFin?FCN}oQJ`{A#9`Y*%^Hv7$| zBIDgrZ|>wbDZ_lZAO7IQy6-nD*z7l-ii~&rSJM6BRr>U)+z)@<({EO=*>64-8Sl2Q zto!9RDZ_lZAO7IQyYDwE*z7l-ii~&5k?t3-(x*@5e)#L2ezStje)FlwcvruQ?w8-B z4D;oF_=A_|zTd21v)_CwGTv3Ms{6&O^yyQ%AO5hJ>-+U@E-VI+(_sefmhWT64-8SjR#uKUHS^yyQ%AO5PK zezStje)Flwc-Ov$?ia7pr%&a6`0Jj2vx3cj^Qp*qw|!0BFTY6{=F9!?2QS@yzgfX% zzxh;Tyj#7N?ia7pr%&a6`0Jj2vx3cj^Qp*qHy`VM`Ay0&U+#xLc$x0|%?dXA&8H&c z-Q=}(zj&2CeJc0EU-$Hz6>RpKPesPN(d+1b`Ay0&U+#xLxa_{)tYEX>d@3^Do%CiV zUZqc;%Kh-yJ^f|{oBiffk@0T-y1HL}lQPVg`{55>w)=jwg3W&OsmOS@c|F}PUZqc; z%Kh-yJ^f|{oBiffk@0T%`nq3!lQPVg`{55>uKRwog3W&OsmOR&zk%)-uhOSa<$n0< zo_@1}&3^N#$aq)1q3)O8qzv=re)xlz@4nxxV6)$RDl*;;E8Q<%rB9#A{qWa4{bmK5 z{pM4V@$RHIck-K*VZPiCfA9+3_nQ@L_M1;d#=HF+>3;Dlefm`HhrjOWH!IleH=l}( zcbli_e)&zxFkkM6KX}FN`^^eA`^~2!*pHk-te9=Ka54E&O}U`R0-r zE7@}BS z@11(9SAFbapiiHipTeJE_8T)o>@}BS@9;`L|0REwGR*tG-+TCXnsc}FW(Ax5=2MaJ zuGX9JtI7ALNA91%pK0#;pSM}TW`E&>9T~5xH`D#%t-wdLjOBj#cRl@P1)KfmQ<3p* z@aDSz)#dxsBj+dZYs`LPMu@$I8;1VL-YdP?igTShJ$kCg(@W zgeuJ5nGs^IxfFXZ-a>!>FMpOYIe!Cxhq>g$2(i~(ioKQIJjicTCg+E*b!Ln(J7-3S zz2;KvUFgkHoM~d^{2KlZX6MWZvDaLRy*s_Rm%mS$r{u?H#t^e}W`x*lF2&wEy_t)1 zl~_4{4S$WLYd^{}Bg9^FDfV9JO)btiv2uO^{~EJ% zW`x*lF2&xZ-W=p_Qzqw+@K2bXGb6-ab1C-j^k(up`tz?oeR6&Ve}UO=%m}g9T#CJS zdUGp(lQKEq!arhm&WsRy&865ocq{$+=XLexAAS1d{1pBSv)`BzVz0Rrd#8G{lfO!t zoZrK5F*|2Qh`r`g>|N>2==C1Ecu1L?zfvYN#q6CKA@-U}vA5Bi8~MwW$@vEU9H*z7l-ii~$# zy?Kz|rVR7$AHLz4G1lDm=XtY&&3^N#$auGW8{IEn4L-A;%l+_oJ^f|{oBiffk@0Ra z(f#tRpKPesPN;oItd@oMmy^<3_Uzw7BYE7`?l&vg>^Gl^jCcFD)BWPr;4|yF+z)@(({EO=*>64-8Sgf4ulwb< zDZ_lZ|7mB&Saa9?W(Ax5=2MaJZvGCsU%VQ8W<8ht;qQ9-%?dXA&8H&c-Q*p0zx+03 zm@oG~{md9^?z-QsV6)$RDl*;;-%0n2SA);2=W;*%T~EJR!DhetRAjt6>dk}vHf5ME z_dnyz7;Emj->hJ>-+U@E-Zk&6`^BrlXV!DMAO5bV->hJ>-+U@E-fgG4Uw)f1%$NJ$ z_{bia5t_{@4P_ru@y^qUoI_M1;drtIEb_sefnhWT>;o1PhC z&0Y6jh!t%1n@>f?yS?6Ai&ulstmkq+{9RAKS;1z%`BY@Q+q{SFm*1ug^X2}lGh?i| z>wdF>&3^N#$apt@Pu(wG4L-A;%l+_oJ^f|{oBiffk@2p2FWoP{O&R8&NB_m}&CZNU z^ZM!fcSWD})PF}HnEo|e{B^j8dgRyfKKlNbxHI%H>)F4K8~C@HPtVZ5E8F+$5VPyo z;U4OdU&s6F`+sk)@BgI?^Zs>=lnG5V-#zpH^WP6KyM7(+q4?`)^kyS}kuuEt*Rg|t z(0u!>{{McM+4bvi55-?c^#S_+?_21<&nc7hl`^3TX79`h@qZu8rP#aBn~nTM%H;eG z{w-$b%m}g9T#CIry&1fv{^y@EIX_Y+RAKhcj1YUxrPzDao0a@o%H;eF{2gZJ%m}g9 zT#CJ;57htt%WqRA=Z9}~W{fa9XGVy<=2GmP>&;S}X=3I48vYGt=gbJP*IbIdH+pj~ zf1ff>$-niPF~sbg86ozXOR=}ro4GhwiIwx$@Yk4~Gb6-ab1C*-&h-6X`Ay2?{E7bC zJjyd8#9nhL_RjRC7H6DTIlq8^joCRfLhLn{V(&(84)V7tlk-RTC(O>75n`{o6nk5} znN0NkUw!)I{0#mAv)`BzVz0RrdxsyS@Bhl*q)g7Y@Q;|CGb6-ab1C-D^rm`Seg9XV zJ~=;yKf~-dW`x*lF2&xB-t6SBQYPp3@LSBznGs^IxfFX_y&1iozW0Xo}f8 zGeYb&mtybWgZ2Gi`OB2a`3C+TvvX#I*lRAu-ih7}-(G*tO_`h@D-*iH?421Q_L@tv zccnLL`SX;?`7QhgvvX#I*lRAu-dn$U2mLuNWtjJ$oi3FLRho0RJ+p$%e)Flwcz4p9 zmHb)CFz@~w_>JbSuS3iVHv7$|BI8~AA-ew^b$`k*U+z~XRB7(&H!IleH=l}(cg=_D ze)+SMVZPiCztP;)Z&t9`Z$1?n?^YkC``=0TrwsGueq}NhLc>^Gl^jCaGi?w3DH z8RpCV@Egrt{bmK5{pM4V@$RHI7gODzGR&9zl?hdvyZX%vHv7$|BI8~Ak-A_0EM=H4 z_rq^AclDbUZ1$T^MaH}4qjdkf=>C*pzTB@&sM6fkZ&t9`Z$1?n?=~N;`{mD4hWTRpKPesPN`LlHYyXpRvVZPk2OsLY_)o)g?*>64-8Sko()&25kDZ_lZAAX~` ztKY0(v)_CwGG({W{qL^(Q-=9+zcQgpb65X`Sixq$`BY@QJL=6!{w!sfFZaW5GRpKPesPN-N)(v_t5<*lk=C#gvOY?D~u;i_L@tv_fEan^6Qkz`3?LnX6MWZvDaLR zy@QX}fBu{NL(1g*;62ZbOU%xh5n`{o6niVZS%@=9tejuL-(Ysmj1YUxrPw>yo1^^O zl*#!A_=ER)lxIeWz2;Kv-RR9soGP($ehGht**P;p>@}BS@2%dn@^>kd^Y`!{Fgs^P zh`r`g?7i2UX|4bKH+}l#{2cxgv)`BzVz0RrdxxK(|NJ-kHz||zcku5qJ7-3Sz2;Kv zo#@Tgd+X=__34xIHT*edzcC}kUUMn-F7>97zfPH)Kfu4k?3@`P_L@tvcdIw!_mS^U zkDQ;tuQB_H86ox-ZW#I}dt1HPigTS@}BSZ>2XI`HPgv`5pXQ%+8q+Vz0Rrd*^yHct3srKV@=$q)e#7?421Q z_L@tvccV8e`LmSC`5X8<%+8q+Vz0Rrd-r|J3zX|mT`ioFN*UdyjjCg(Tsx0szXBg9^FDfT|-%}M?tWpaM-VQ0oAX6MWZ zvDaLRz2l|6{uO7ESUJCfzrpOB86ozXOR=}so1^^Ol*#!A_=69BlxIeWz2;KvUFpqC zoGP($ehGht**P;p>@}BSZ=*M@{9VfA{5|{!%+8q+Vz0RrdyjfE{Rn;it52VtpTl2b z_8T)o>@}BS@A#AS^{@P!l*#!!`1hEdGb6-ab1C-LdUG|`*T4Go$@v=o9JAk;5n`{o z6nj^C)5u?^OwJ$R-(hynj1YUxrP$l(&G;kb`_m)mC-7^`equ(5y@eZw{>k2>-fYFW zPAtTq`}HsU17_#U2(i~(ioJtR*4MuurLTWeCg&?+9c?$@!5op$fBiW`x*lF2&xB-mK)$QYPnb;O{UyXGVy< z=2Gn4>&=7wHf3^t_%Ub32(xo$gxG5?#om+NEXA27R?e^C-(Ysmj1YUxrPw?A6n*_G zf1ff>$v^YV7-DwLj1YUxrPw>yo4GhwiIwx$@Yk4~Gb6-ab1C+2_2y1~lQPWv?^RCl z2hZyMdlj>S&3^N#$auH>RQ>)hUZqc;+`ojs?&&ux*z7l-ii~%YPt*PKo0MU`+z)^7 zvEBEZ6>RpKPerEeK3(^VSLxHIazFfaPydBj!DhetRAjt6>dl?}CS{l}_ro77y6-nD z*z7l-ii~&L&(QtiRr>U)+z)@<({EO=*>64-8Sj?Yx?g^iGR&9z;SWBp`+l>6&3^N# z$aq(MrtTN7(x*@5e)#L2ezStje)Flwl-+0Pe)&zxFkkM6Klu3W`!B=_Hv7$|BI8}F zH#6}nefm`HhrjOWH!IleH=l}(ciYd_{qmcXVZPiCfA9(2_nQ@L_M1;d#=GU`=zj4k zefm`HhrjOWH!IleH=l}(clGD$e)&zxFkkM6KlsG%`^^eA`^~2!f?yY>m)FJ7fjpUVC4*FF7a z1)KfmQ<3p*yVCvgo0MU`+z)^7Soi&A1)KfmQ<3p*`FXluyh@)wmHXkZd-}}^Hv7$| zBIDiU^L4-cCS{l}_ro7N-hIDW!DhetRAjsxeu3^6uhOSa<$n0+bU$}nH64-8SnOAsQbmM^yyQ%AO5hJ>-+U@E-fh1~_sefm zhWT64-8Sj=~toy~Q^yyQ%AO5hJ>-+U@E-c7zl_sefmhWT64-8Sh4G-7j9HPoK*D@Yg;4W(Ax5=2MaJ?xZ(&@|%=lzT6Lg@G0H* zn-y&Kn@>f?yY@?Uzj&2CeJc0EU-$Hz6>RpKPesPN?U(6(`Ay0&U+#xL_|)$E%?dXA z&8H&c-SW$Izj&2CeJc0EU-$Hz6>RpKPesPN$yexp`Ay0&U+#xL__Xf(%?dXA&8H&c zUGxgY-E)4T6CE7)dd z;#KxgY-EGrI3LE78&h>^Gl^jCY%_)BWOA`t+&X4}aa$Z&t9` zZ$1?n@8(~x`{g$&!+g0P{@}B^?>8&h>^Gl^jCa*H=zj4kefm`HhrjOWH!IleH=l}3 z*?pt#m*1oe^W}c{gU{~1|3a)_v)_CwGT!a=W+q;xPoK*D@Yg;4W(Ax5=2MaJZuL#N zUw)G^%$NJ&4?d^+ezStje)Flwcvs)(e(@@O`c&?RzwYTbE7f?yOZ9`#H;k_Q@J1hx~Jc)V6)$RDl*>fzeV@UZ&HT&azFgR zbGq+0E7w-ebze z8#5o^_5B)n-^Esc|NVsi{#&0u`Mw(dQuB@9q`x=$fA7WYy3ajS`#s(F?Nct^n0W`U z@7KWlmfx$t|6S?tfAKDO@lW4ZDHEzS_x<`TLZ4O8$$^ zj3H*{%m}g9T#CI%y_t)1l~_4{4S$W(eLar|@T( z{l<(Cd(EZTJJp+={8h^2{2qRb**P;p>@}BS@3r2HzEnT|o-#RqrA%mw**h~r>@}BS zZ=*Li@|P)-^9}qxX6MWZvDaLRy+^$newn@wNST};D-*iH?421Q_L@tvci8CX-{sF! zCg->C8_dp`5n`{o6niIr^X2;a_ms)`OJzc1%-$8olO}u3rP#Yv@3s6oWpaK4e~Z~U zGeYb&mtyZ$Z%*}~aCARAAIGbJTpSr%m}g9 zT#CI9dUN&F`dVI}J~>~*pJVnLGeYb&mtybe$My5?^4BSo^9T5Mn4L2t#9nhL_SSkc z-pKc-N6t^+*O>jpj1YSZHw^ugy=%SMigTSi&Y2NnuelU^Z}sN#YxMPR z%H({dOlX4HJ2OJ;HJ4)VQExW#7b(NMzjv{Nzt^1qvof4FE7-?6(V&(h_{syyiW`x*lF2&wTZ;tYBQzqvh;19mxQJxtg_L@tvccC{kajL}1 z`6c`nX6MWZvDaLRy*GN(%HO3-&fmj-!0enEA@-U}vG<@i({I%8|N8XF`8oV0X1_5b z#9nhL_CDy%Uj9wW68EebPa!@x$8f-%B*0s z-+U@E-VJ|RU;oSBqzv=!Z{go-?&>!y*z7l-ii~$hy}7#4{rdE&+z)@DxvSr-V6)$R zDl*>fe@6Gq-=qxl<$n10n!EbV3O4)Ary}Fs=2rKAv+mcYPvw623(Z~qW(Ax5=2MaJ zZvL~nU;ZX#m@oIkzt`N=Z&t9`Z$1?n?(i%lKm3K}u70zE&3^N#$apvW zdEGC6lQPVg`{Cbf?&>!y*z7l-ii~$By}9~U-LFrd%Kh*cn!EbV3O4)Ary}Fs{ugw= z{7uR*U+#y0ueqz=tYEX>d@3^DZGKVrf1B>tr%&a6_zTTl{bmK5{pM4V@oxT0x?lb# zWtcDb!@t+u)o)g?*>64-8SkoJ*8ShE`}OHlxgY*Qb63Av!DhetRAjsx?sdQXP0BD| z?uUP`xvSr-V6)$RDl*<3_2%k3biY1*D)+-*XzuDaE7!y*z7l-ii~%o-_ZT?Hz~t>xgY+$=B|FT zg3W&OsmOSD(wnRA(*64MsoW2Lp}DKytYEX>d@3^D?SE7E%ip97^W}c{_nN!<%?dXA z&8H&c-R8G+|99(tefm`HhriI=)o)g?*>64-8Smx?-7kNWGR&9z;oocS>NhLc>^Gl^ zjCYgY*8Sh3`}OHlxgY*Qb63Av!DhetRAjsx{*LaKzeyS9%l+{0HFx!!6>RpKPesPN zquyM7ukP2UPvw623(Z~qW(Ax5=2MaJuK8WvFMpFV%$NJ&-)rvbH!IleH=l}(cgx?? z{okki_32Z&AO1pfSHD@oX21DVWW1|>U-!%3qzv=re)#vAyZX%vHv7$|B2#vMp!>gH z_v_QAazFfq=C1w=v4YKh^Qp*qchs9(`J0qszT6N0UUOH!S;1z%`BY@QYyMF8|A6k- zr%&a6_zTTl{bmK5{pM4V@ov@Xe)*e}VZPiC|6X%fzgfX%zxh;TysQ66_wRJSK7A_p z!(V9b>NhLc>^Gl^jCaF7*8TD~DZ_lZAO5}Ou70zE&3^N#$ar_uo2wtx{rdE&+z)@D zxvSr-V6)$RDl*;4Z&HT&azFfg&0YOw1)KfmQ<3p*^QXH1Z|Q!0`c&?RztG&( zZ&t9`Z$1?n@9IC({qi>{!+g0P{=Md|ezStje)Flwcvty*j)1N=M8&Y2NnuelU^4|+5H5&8b~$oUEU8nd665n^xQhM|A5_u{Yg_rKy? zCl=x*e+&PBx#YwMvDaLRy<@$({89b=Z_4C+rA%mo**h~r>@}BS?@Vtt@)s$S^E>#r zn4L2t#9nhL_HOiM(CFu%Qzqv}%7iM+-kA|%uelU^_j;kDnQ1&0YOw1)KfmQ<3qm{kytfyc&FFJ(v68?|S;p3O4)A zry}EB^Y?VW{5EBnFZch%nK9Pfb-!7`X21DVWV~Dbecdl!4L-A;%l+_oJ^f|{oBiff zk@2qn2fAN=n=;Io`+xGx7;Emj->hJ>-+U@E-c?84FJ28kv!2WS@OM4^W(Ax5=2MX= zyML(r<+mxre7XOp&Wy3<3O4)Ary}EBt2fu;)!;Mh+4&9pEoS>>gxG5?#omj5 zq@Vwge@K~}AN=&0af!L)#0at1T#CJw-YmqKWELJczkJ7-3Sz2;Kv9sCph`Tytj=l_(+`AV74 z1haQ$gxG5?#ojBu*~nj{OwRA%-(q&oj1YUxrP#aFo53&W&;Kct^CM+K6=v_u2(i~( zioK2AtmMy9Cg*S9?=U-OMu@%UQtZ9gn+N%A%H;g;7tf3lX6MWZvDaLRy~BU1fB#XO zX=3I48vYGt=gbJP*IbIdQ@y#DzfYN`CK(|CS`K|ME{o`<(Uy;uelU^k9t#!Gfu3WU%CNa@_3uBXOwL~^6PjZ7&WsRy&865o`se!hALTDoCg&UYd(6(65n`{o6nksE z8UC8S&P$n`A1f2O!t9+HA@-U}v3I36Yx(n($@wk(2D5W!gxG5?#ooqmeqI0mL(1g* zr81#0X738)Nt3(i%lKm57ou70zE&3^N# z$apvW*ScT+I%SwI_rpJG?&>!y*z7l-ii~$hy{Udz_v_QAazFgJ=B|FTg3W&OsmOTO z{2Sdbf1NVSm;2!#HFx!!6>RpKPesPN)xXvKzo+~4=~KBM{#ulwb% zQ-=9+Km4QSuKo+Lg3W&OsmOTO>P__rx?i6@mHXk(HFx!!6>RpKPesPN=0E6u`RkNn zzT6N0sJW}(tYEX>d@3^Dt^T9#|3lrcPoK*D@aLMl`ppV9`^~2!<6Zrqbie#{$}nH< zhkw-E)o)g?*>64-8Sh5_S@*ZPU!Oje`{BRpKPesPN?SIw%^4BTDe7PU~QFB+n zS;1z%`BY@QTR!OiKi2*F^r_qrf3CT!->hJ>-+U@E-qrt2_sd_W4D;oF_(#oM{bmK5 z{pM4V@ox0rb^o8}etr5>?uS3u+|_SZu-R`u6&deNdeg{XrwsGue)vbtUHxVSoBiff zk@0T-KXm_}>VAFtRPKjA*WA@_RNhLc>^Gl^jCb?@t^4J#Q-=9+Km4QSu70zE&3^N#$aq)% zAKm}wx?i6@mHXk(HFx!!6>RpKPetaryC*Ih`RkNnzT6N0sJW~E;^K+Ue)B2zw|Z0k zh3?maXkm zJKe8OpUVC4=bF3v%?dXA&8H&cUHv?|U;a8}m@oIkKWgskH!IleH=l}(cf-G-`~On+ z>(i%lKm57ou70zE&3^N#$ar_un@0XRWtcDb!#`^7>NhLc>^Gl^jCb3=sr&y*_v_QA zazFgJ=B|FTg3W&OsmOS@d|urzf1NVSm;2!#HFx!!6>RpKPesPN$@A&{zoYy0=~KBM z{#di|2EM;>3 z2L2ASb7q9tYc9p!d%by(-=<8?507WY2(xo$gxG5?#oo&oeBxp$&NQ)dehvQyvvX#I z*lRAu-l^W)%ipKWQ}X}t%ot*J&WsRy&8678(wn(BSBaJL*YMYvoiiiEUUMn-9`xo; zev>jef1>}79_5)4Vz0Rrdrx{(i!)BFoL|7d#_XIKA@-U}v3K-BPh1@2Z&N1ckMK{J zoiiiEUUMn-)_ODf$NKpfefs454E_SM-*IbIdN4?p}U!_dW@8P$YoiiiEUUMn-4qy0*i_t&T z&%dNh&R;1Lnqv0Oj1YUxrPw>sn;ZGdl*#!9{vNY)W`x*lF2&xZ-VFbl{=AklIX_k= zbcNYFGeYb&mtyZ$Z`ShXDUd@3^DEniIc%WqSL`EviiJTu0cyY4qD*z7l- zii~%Y7uWsb)!;Mhx!ezb*VAuSu-R`u6`8Vo3EeNhO&R9P{r~FB7;Emj|3a)_v)_Cw zGTya%b1hyCKC_<7{qT1^{bmK5{pM4V@oxK)x?g^qGR&9z|Mi(M*4%Z!S;1z%`BY@Q zTfUU;7q14NSdk}vHf5ME_y5~7W30LBezStje)Flwc-LI& ze(`GXne|-mhrjFTH!IleH=l}(cdM7x{qozCVZPk|@6L>|=C1qA3O4)Ary}EB{c^fr zyc&FFJ(v68?|S;p3O4)Ary}Fs=;d|4{5EBnFZZ9$jIrjf`^^eA`^~2!hJ>-+U@E-tAvO_sefnhWT>;zdtj^n!D~dE7|Y z>$%(yf7jD*Rkd^Y`!{Fgs^Ph`r`g?5*`?`k(dl-}>~)`8oV0X1_5b#9nhL_OA41FaIWGa{dnf zJ!a?32(i~(ioK2AT>TgQ{I@=Ra=wN?$Lu#|gxG5?#ol|pY2>d{Cg%_E?=U-OMu@%U zQtZ8a75)9sf0ge~kDQ;tuQB_H86ox-ZW#I}d#8G{73Vs!5HI;#_y^3+nGs^IxfFY^ z_2%+HfB%y*IbSIgnqcv z{ALx2Bs@%Y7k%H;f5na~wx@5~6X*IbIdbG=#1pQlXDZ{atXoiiiE zUUMn--uTU5d;H=qWpe&fna~)scZKn!$zF3Q_8!!GEx%3~=F8Xr@OPSXxASHNoBiff zktw^^)bIcD+mvCxeEt8|&y2C=uCM|Y>$%(yf7jD*R#+tkCH!IleH=l}(cca(Q{o>W&GwZqB4}aIwZ&t9`Z$1^7 zvU^?KFTYJ0=F9zm^UN4)?z;a%tYEX>d@3^DwR&?cUJX98p3D94cRl@P1)KfmQ<3p* z`+B-xew#APm;0ah%ouC#y5Fo|v)_CwGTyCTU-yewgU_tzazFfCPrq5gX21DVWW1~2 zK=;dUQ-=9+|MQ(0W6fRnn-y&Kn@>f?yU`o!e(`GXne|-mhrjFTH!IleH=l}(cPG7h zkl&^Z^X2}*nK9Pfb-!7`X21DVWV~xD-7j7ZKC_<7{qT1^{bmK5{pM4V@veCz-7mjQ z8RpCV&wpl&HFw=_R|Y>$%(yf7jD*RhJ>-+U@EW%nk!U%VQ8W<8ht;qQ9-FT@Hq`^~2!3;EQ@R{{o?uWnY={GCb>^Gl^jCYea*ZuO_lwrQy{~~9` zSaa9?W(Ax5=2MaJZuAzqU%VQ8W<8ht;qQ9-%?dXA&8H&c-AQjAf?yZUW(zx+03a(?(?XT}I~Fe1-h zb1C*-t9L2RG_i7i4gUtSb7q9tYc9p!o!;Eb->1w|@-Kd73^6-rMu@%UQtZ9co4Ghw ziIwx$@Yk4~Gb6-ab1C)?Ci?!j{3c~`{zU&J9_5)4Vz0RrdnbBRi!)BFoL|7d#_XIK zA@-U}v3IRE2l?BS$@wGv6K3bk2(i~(ioLgbGkM9!FD~`zlk+q93(S6FMu@%UQtZ9g zn_Kytl*#!P{t>ftW`x*lF2&xB7UvDaLRy;Hr}$zP>R z&hO#3n4L2t#9nhL_Ad2i^wN)CJfuv{UnvusV)o9A5PQv~*t^x68~MwW$@vEU9jrx$Azjg3W&OsmOS@eJ9;7-V}UhJ(v68Z+rU93O4)Ary}Fs@||_R{6oqx zU+#Z}Gh?K=>wdF>&3^N#$aq&zb-#F1@R{{o?uWna={GCb>^Gl^jCa+$=zjT!lwrQy z|B7eENORZyW(Ax5=2MaJZuqXcU%V;!%z7^O!{7Gwn-y&Kn@>f?yQAKm^Gl^jCZ5=)cx`gDZ_lZe{^Py zGFwXC~;z1Qes-pmcWzF!0HYt_-}%?|I#^z8fY;SXN* z@rz2IdCz@jcHQS5YW3dT_szual9@|*eZL0YcT`8CH*37hZ08T~?=U-SMu`9OGM8fS z@O||2zpp0WpB_0sfnQ_x6Ei~WE!;5lPxemqW-HEhVj*7gx9|^`oiiiEUUMn-F7@W} z)gRZ-rahX;`AV741haQ$gxG5?#oime*~nj{OwRA%-(q&oj1YUxrPzDWo55>5esN5h zoF6F@sxW(JMu@%UQtW-uo0a@o%H;eF{2gZJ%m}g9T#CKp_tp15<+mx5^TXFXGe(%5 zGb6-ab1C-D^kyl}G_i7i4gUtSb7q9tYc9p!jo#eL->1w|@~?Gf3^6-rMu@%UQtaL9 z&0L(T#LD?=_-oA0nGs^IxfFX(dUGegNtv8K(H}p`Gb6-ab1C+Y-%sEF6la`RIlq8^ zjoCRfLhLn{V((0E4)V7tlk-RTC(O>75n`{o6noctGkI-&|5KknIX{EH!0b0>gxG5? z#ok-Jxs|_3nVfIoA2B;;Mu@%UQtZ9go9cD+{ZD=R@}BS z@8t*R&FkyW_9>I|m&%03n7u2ECr$R6OR=|B@3s6oWpaK4e~Z~UGeYb&mtyZ)Z%*y*j)1N=M8&Y2NnuelU^tC_z3eVTlKdgS~BevR2r z%m}f!aKq3)**nvltvJ_-h4^#7{)KjxYc9p!@dxSa zU-`3?$@v@jJIv0R5n`{o6nksEd63_xOwJGA_{&-#_Hf3`D z2>*oHIWt1+HJ4&eDCZr|@T({l<(Cd(EZTTkFkE{wig1eh@}BS@4em(-$GyircBO{ zl?h#8_RfqDd(EZTd-f?yZXcQ`@j4)WteyW@U6~_vF5IR zvx3cj^Qp*qH~MhhFJ28kv!2WS@OM4^W(Ax5=2MaJ?xZ&l^4pYQzTE%TXU14_*ZpP% zoBiffk@0T-5xQTz8hmCwm;2%Gdiu=@Hv7$|BIDg=uKVS;DZ_lZ|835UvF5J(%?dXA z&8H&c-TWhUzj!tH%z7^O!{7Dvn-y&Kn@>f?yU9oCe)(<6FkkMUoEc-yUH6+6Z1$T^ zMaH|~N9%s^YVeu$T<(Xz>*+Tu*z7l-ii~$hy?Kz|rVR7t{W&GwZqB4}aIwZ&t9`Z$1?n?>5iW{qozCVZPk|c4x*|bJzW51)KfmQ<3p* z{w&=uUJX98p3D94cRl@P1)KfmQ<3qm`dHmBzfBqD%l&VEW{fp=-EUT~*>64-nX+5x ze(`GXne|-mhrjFTzYr_f>^Gl^jCZZxJjicThWT>;JDeF~&0Y7K6>RpKPesPN?Z@eU z@oMmy^<3_Uzw7BYE7hJ>-+U@EW%q2|FJ28k zv!2WS@OM4^7h(mQ{pM4V@$RTM5AxfTVZPk|&S%D0bJzW51)KfmQ<3p*|CsIhJ>-+U@E-p!Y~U%VQ8W<8ht z;qQ9-%?dXA&8H&c-RP5azx+03m@oIg%b79O+;zWM!DhetRAjt6>CLrxHTcYWF89OV z_4Jz+Z1$T^MaH}RC+mLsZOSlT?tj-aW30LBezStje)Flwc(?f!-7j7ZKC_<7{qT1^ z{bmK5{pM4V@oxU9x?g^qGR&9z-|fs8Ywo(=tYEX>d@3^DRiCE&#jC+*)^oWZ{;sFr ztYEX>d@3^D4L@D?%WqSL`EviepBZD#UH6+6Z1$T^MaH{UZ?46w!DrTUxgY+nr{An# zv)_CwGTt?xq5I{xDZ_lZ|2@u(vF5J(%?dXA&8H&c-RfHRi&ulstmkq+{9RAKS;1z% z`BY@Qt3Ols%WqSL`Evhzo*84!UH6+6Z1$T^MaH|)XX$?NYVeu$T<(Xz>*+Tu*z7l- zii~$By?Kz|rVR7t{`WdF#+tkCH!IleH=l}(cl*!Q{o>W&GwZqB4}aIwZ&t9`Z$1?n z?>3*K`{lPO!+g2FJ~PIeyY4qD*z7l-ii~&5&(;0n)!;Mhx!ezb*VAuSu-R`u6&dd) z&(Zzz+mvCx-2dKZ##nRL{bmK5{pM4V@oxBp?ia5HpIOi4e)zkdezStje)Flwcz4p9 z2l;KvFkkL}pEF~ux$Azjg3W&OsmOSDT*+Tu*z7l-ii~&7=jnd= zZOSlT?tkAiW30LBezStje)Flwc(?j|-7j7ZKC_<7{qT1^{bmK5{pM4V@vi;?-7mjQ z8RpCV?{{X5HFw=_R|Y>$%(yf7jD*Rf?yVY9v%WqSL`EvgU zo*84!UH6+6Z1$T^MaH}OOLf0^HTcYWc76kYi`l*zA@-U}v3I36C;5kz$@#(T%(%qt zoEahZnoF^_(VK-hlf=sT75oim=gbJP*IbIdN4+`9zfGB(e}F&uphtOTgxG5?#oo&= z)6aj3Qzcf;FX68+J7-3Sz2;Kvo$5_1f0r^je-HlwvvX#I*lRAu-fO*?ez1Q2Q=dLL zKZn1>>^EkF*lRAu-dnxd%fCsPoWFyAkJ&jhLhLn{V(&?Bu0BLR|EW)(oUh@}G5d`f zA@-U}v3K<4`uR`!>y*j)1N=M8&Y2NnuelU^YrPqNsC<8V>=PPAG6U^S35n`{o6nl?)vys0@ znVjFjzs2mF86ozXOR;zK75e$l57*CsrcBO{lnGUsy)z@kUUMn-PW5Ibf0i;ie*=Gq z**P;p>@}BS@3r1M$Zu07=Z7D0W{fa9XGVy<=2Gn4>CIA{X=3I48vYGt=gbJP*IbId zcY1R#f1ff>$A!g^y2(i~(ioJuc)X#s4bCp;*e+_?)**P;p>@}BS@0H%%$!}67 z=TG!M@==}{A@-U}v3IFAwK(I%%J~KSYs}7>5n`{o6nnRNbCADHnVdhuKVf#xj1YUx zrPzC?H@}BS@0H$E zAFZGN)Td9*PvOrn`;8eP_L@tvcd0i!`Ky%4`91s=vvX#I*lRAu-ksizK1M(PnKC(l zrA%mw**h~r>@}BS@15S<$X}*R&NuM)n4L2t#9nhL_71*UKmYkmeVvywIX_k=bcNYF zGeYb&mtyag-mK-%QzqxP@Egp|nGs^IxfFYse)BB-{AbGK{G~FXF=p=y<4Kdf=2Gmv zQSY_V&(h_ z{syyiW`x*lF2&x_MqmHRzfGB(e}F$&Jjyd8#9nhL_SSkc6Q@e7oL|CUVRp`p5PQv~ z*t^o3R{kz!a{eCv17_#U2(i~(ioK2AOg~Ov|LW5x=jZU3nEl3#5PQv~*n8BQz5JV$ z$@x3@_n4hCBg9^FDfV7|jlTZ+if_#5^#rn4L2t#9nhL_Ac~h z@N9kkn=&~+QYKVk_RfqDd(EZTyVaYO{8`E{@9#t3z;85neIMGaV6)$RDl*64-8Sj?gru*g3Qil0*Km0~>SHD@oX21DVWW1YvyYBx~-Jdedm;03o zRhql{%?dXA&8H&c-RL`Xzx-LsFkkM6-)QdYH!IleH=l}3*?p((|1{m7GR&9zl?hdv zyZSH03O4)Ary}EBt2Zn8vy@@J+z-Fe+|_SZu-R`u6&dfEt?vJH-Jdedm;03oRhql{ z%?dXA&8H&c-Riq^zx-LsFkkM6-)QdYH!IleH=l}(ck}Po{hy)xQ-=9+zcQgpb63Av z!DhetRAjuXzDM`VpQQ}*<$m~$=B|FTg3W&OsmPSw_v-#@-Jdedm;03oRhql{FT@Hq z`^~2!<6WyaEBUjOVZPiCztP;)Z&t9`Z$1?n@3!Bk`#)3nrwsGueq}NhLc>^Gl^ zjCZ4*?w3DH8RpCV@Egrt{bmK5{pM4VDZ3xk{hzJ-Q-=9+zcQgpb65X`Sixq$`BY@Q zYxQO&f0i=Lm;2#2n!EbV3O4)Ary}Fs_HXI_&(ZxU!+g14nNX#di|2 zEM=H4_rq^AclDbUZ1$T^MaH}4M|J-bx<6%@FZU}Gsx)`?n-y&Kn@>f?yG^6}<ZU+MmoVZPk2OsLY_)o)g?*>64-8Sf@PuKVTBQil0* zKm0~>SHD@oX21DVWV{>xgzo=5-Jdedm;03oRhql{%?dXA&8H&c-AQj&@@FZ-e7PTf zqq(c!tYEX>d@3^DwLhu*KVSE!4D;oFWkQwau70zE&3^N#$auH?DcvuBmNLwj`{6g5 zyZX%vHv7$|BIDiir*;1q=>C*pzTB@&sM6fkZ&t9`Z$1?n@1{Sa`{mD4Cg*S9?=S}= z^6WL2V(&`55AxfT$@$?Io*5&|&Y2NnuelU^cY3oFXPQ_!zlMK<**P;p>@}BSZ>u-= z^7kq8l>8T+8AHs@nGs^IxfFXZZuRp|;#?(G&R@e{V=g%{LhLn{V((aQ?&LQqlk+F~ zU;HS~j1YUxrPw>yn_8T4V&(h-{xxRj%m}g9T#CILy*bF=rcBNs;h!)&XGVy<=2Gmv z)tkwe=;xpG>67y__zTQ_V@8O*=2Gmv*PC1Uo0Q4<7XA^lb7q9tYc9p!%b(THKdtri zPx|!9`6>JvX1_5b#9nhL_D=O?Cx4YPIlqVBVs_4q5PQv~*n6!vqc7FZKc!60Unvus zV)o9A5PQv~*t^r48~MwW$@vEU9sdCKJc7Jh@dI6qCHxg;=gbJP*IbId zQ@v^B?^1?&|9SSF{#WV$ukycsGHh0`*>64-8Sj>QQ;Rp&r%%o=;9q0*8#6-eHJ4)V zR&NgSw<(kJNBAeq&Y2NnuelU^@APK!)%yKkpFTN1gTKJ+H)e#`Yc9p!i(k<1|ME8} zlk+Y7Bj%D5Bg9^FDfU)+Q*HG7zdn6(ehPnv*>B7UvDaLRy>q?U$zP>R&hO#3n4L2t z#9nhL_HOiM^fmhZKV@?MN}13Uvv+2M*lRAu-o4)3$X}*R&NuM)n4L2t#9nhL_MY@+ z__g}|KV@=$tW4+%vv+2M*lRAu-qA1W_ka2Gl*#!m{06ggW`x*lF2&y3Z@x~y|EEmO zUn&zCWA?5vo;2BOF2&xJdavczDU|x41)KfmQ<3rRs5dA1hm>Ky-2aVd#z=G5 z{bmK5{pM4V@oxVsx?j90_{@4P_ru@z^qUoI_M1;d#=GsW>VEl$lwrQy|4nDcNORZy zW(Ax5=2MaJZvJb!U%V;!%z7^O!{7Gwn-y&Kn@>f?yXx064-8Sl2gqxf? zyXEide(|Q@GwZqB4}aU!Z&t9`Z$1?n?;x1Sj!&0Y7K6>RpKPesPN z;qU8y@uuK2>$%(yf7{b64-8Sk1u z(EZ{~!DrTUxgY+vr{An#v)_CwGTyEJQ1{C}qzv=r{_i|9Mw+|sH!IleH=l}(ck@>F zi#G+IS64-8SnOgto!93Qil0*|971kBh6j+n-y&Kn@>f?yUm~Ie(|Q@ zGwZqB4}aU!Z&t9`Z$1?n@8*B1`{f@}hWT>;cb^#}&0Y7K6>RpKPesPN>d$n)cvJA1 z^<3_UzwPNaE7hJ>-+U@E-YxEQzj#ydnf2`a z8vYGt`(}jLYc9p!8@;)gzfYN`un}hsq z%H;eJ{t2^lW`x*lF2&xp-b{W#-~ZRAPyWBB8T_T@-0in!1)KfmQ<3rRR&Vz5Z&D`b z@8I8K4o2kJYc9p!d-Y!J^zVP`(@}BS??k=T59;qf^y!oHQ}{E?eq+Y}W$(?y-#_2;`_}VR-o5v`_FDVhb?Vfq>Qi7)U+OBBgpuW^qsBeXHK90YCM4XtP2gfiZZH_sOkW^plD%7_Q-*Mzi5hvzPO1>^_@~B}@ zU+OBq%e2*> z`U>N4tng!8{~+ItIP>_Q>}ceqZ5qZ`U+OBPuaP`Zh7A1f8KsE9Q?$eq7q*QNy6V)K#c&8*`?SuScAi z-;#V=+T>BgpuW^qsBhsXxc+J2IK`tI-1U#-D`>~woJ%d!R)6X%jKi@K<}{J7MI7bR zf2ZWzXlH$%p_XZ@KlK&H;aK6PsQ=TbACGQu^-I2jc9uW2Ok4e_uP_eBTA0&Bz7}zm z@9LL)8|^HAYMHkBQ(s{mjx~OU`fot}cyxoSU-A{Sv;3)L+Uiezg>g7mZJ~bTYY|8J zu71h4(a!RxmT9X$^%ch9SouFu|7TD?9^K&TmwW~7EPra5w)#_FVH}PXe~$W*uSFc? zyZR;HMmx)&TBfc3)K?hCjr|wuzY+E0(G9MC$ydg7GgE>v)YY|8J zu71h4(a!RxmT9X$^%ch9Sp6Q<|5?n|oC0{{1%b!}Nt^U+k7>8q(U!Z>EYY|8J zu71h4(a!RxmT9X$^%ch9Sm~Fj|8uAxk8W`FOTL13mOr&jTm7l8Fb>Cxze4@U*CLMc zUHy`8qn+hXEz?$i>MM-n#%59fO{gD_ZgBNWzJhj^e*!JjR)6X%jKi@R%xNNDi#W=6 z^-I2uc9uW2Ok4e_uP_eB>i44l9jG6VZgBNWzJhj^KebF-{i&}o4#z6LM*YawB98K1 z{gQ8^o#jt0(^h}#D~!Xj^gh)8dDM?bH@NyGUqL&|pIWA^{?u0(hhw?>Q9tsvh@*U0 zzvSC!XZcghwAG*b3gd9BjXCKTP(L2s;Odur1??<8qx-=h96qJBKO!PPJM3ffuz)G}@Lr@q2C9IO5g^&?-4I5B^x zMGQ?0pH;-;rl;4x`F(XsFC))K7m%Myz9eld+aFw1n>XJ0w3XZStsL zP+#gQ)OP}N@?XK{w1^Y)i{KbiX>*Jk2KA+`LVcTXL4B#KP~YNzr@mNt3RFsLte z73y33AH4s64e$SWbOZULk{^>c=TO6-zSLEyZv}I9AU_##V*ZTeThbHu0nmM zFsFD6{{DqWH;_Lf`B7MGQCC+18bUye92zb^TPw8^7}L4B#KP~ZITG3QqN{VU?c{5&{@ zA!&2WX@sQuQdgnAqwpO^z7%m{{-osV(k71@2KA+`LVatP(?)(e;>7&k>5fKT+T>Bg zpuW^qsP7Esj6o-jv|@f$@{`ggj~WK`rLIDKd;fsn|02I5;>7%2lJC83t{ycE>PuaP z`lgsO3Y}u474s{SuS%OdY8cd)x(f9j$DA4Dry@?wpOySBX_H3{gZffep}td?GxAOR z{}1r!2J*|2uSlD7s9{iF>MGQC7IT`&*CI~L-zoW7X_H3{gZffep}s?Z#OL4J@%a~z zZXmxT`LeV*hZ+X;rLIDK$1taX{6xfw`O}i$DQ)toVNhS{D%5uhbB69fo{ugdKb3q* z+MGfSgZesMOCYLm8*}Q=8IQDt?mz!Zep=e(QNy6V)K#eO@GgA*{T4p|Mx2;m1jmp{ zn`6{4s4sOD>RZ8_N#w^OPRyT@{0?c8M-7AeQdgnAQ<&5HANc$mabkV}979ps9HWLo zeW|NZ-xlUnkspmXF~27HDQS~O4TJhpSE0UzKjHH)@-q=9=I6fM(I`lpJZc!!m%0k| z9mSjqbVeerm_H%;nzYHIhCzL)t5Dw>=FB4Bj5zc7GaZebw8^7}L4B#KP~REMDMM#C z(u(=xlAn+^dDJkdFLf2_oBK09|03UrI5EGi`R~ltqlQ6!sjE=m66TbkGZbmX{4vRo zOPf4u7}S@#3iX}DoN46i5hv!iB;S@cdDJkdFLf2_JA*mto%sBVM>mi^D)}*Ka}G5O z>PuaP`sV(E&%ek|Mx2;GBl(uJ$)koreW|NZ-xPC--^J%&Ji3AW5y_8An{%jPP+#gQ z)VGQ`Q^;2%PRwsgen#5lQNy6V)K#c&6LSi8;q!0AiTT6e7)GScF=`mpm%0k|O&-GM zU*szhC+0UK-;}oFLBpWF)K#eOFy`dGhtIzeC*}`Rb3LKK~*=9dTlQ?+-c}d1;eJ4TJhpSE0V6m@@{QG}4OsRmo3En>=b5 z)R(#n^{rt}3;7)pC+6>xeDBV=dekteFLf2_yAyLpp;L^sVtz&PRcVt)4TJhpSE0VS zzv1&Q@>3Bf=Fdugm$b>FhCzL)t5Dw(=8XIhpMUY_2J*|2uSlD7s9{iF>MGQC0&|+k z*CI~L-zoW7X_H3{gZffep}tMb8U7JI|KiaN%Sw z@9oo)Z=s#__jYQTw)#_FVH}P%|BmyM>o)aMDk^{v;3)L+Uiezg>g7GnN*Vo z@)Hq9`L2G+x6sb=r`U>N4EM0*5 zk)Mb-%6IikzJ+#{KebF-{i&}o4#x_6q5hwsemuIt)i3!n+FAb8GHvyzzQQ;hYhz9W z`H6_5d{@8ZTWDwbQ_Hl~pZW^paBOBF>i;R~$D zej?&1-_Vb zBH}3D)i3!L+FAb8GHvyzzQQ;hEA*rO|3v+Gbc3s3@@2HM{HbNy>Q8-zaopGd>PLPe z;wazMFZmYQS^f#MOk4e_uP_eB+L%-PIqJuw8(jU8FQc91Pc73{f9flY!?D&<)Q|i` z#8JMhU-B)qv;3)L+Uiezg>g7GvkdkB7wX5O8(jU8FQc91Pc73{f9flY!?DJ4)Q|i` z#8JMhU-B)qv;3)L+Uiezg>g7mUxE7XLH&4igR5WiWwf*Wsb$*gPkn`PI9AP}e&i=2 zj`Cgol5e4%c^uST>X+Sqn+hXEz?$i>MM-Hu@>euke`S+ z%6IikzJ+#{KebF-{i&}o4#yg+Q2(z`KOWuS>X&>O?JR$4nYQ{DI z@?HIsZ=s##Pc73{f9flY!?Du7sDBpqBGgQy?*iHM_o zSHI+2XlMCT%e2*>`U>N?vHem1uTei9-Qen%d>QR5{{&j5t^U+k7>8qR%xNG$5pk67 z>X&>A?JR$4nYQ{Q8-zaX8jE5cMNJ5pk67 z>X&>A?JR$4nYQ{Q8-zaX3~z81*AR5pk67 z>X&>A?JR$4nYQ{Q8-zaX6M1P(Sh$5l8v1 ze#y7c&hn?0X{$f=6~^IMZVl@HE$YXk8(jU8FQc91Pc73{f9flY!?8BzG?1T&ILdeR zOTLA6mOr&jTm7l8Fb>CN4n_UHL;ZMkgR5WiWwf*Wsb$*gPkn`PIMz4}^&>wKag^`s zmwXHDEPra5w)#_FVH}Rt*P{M5>c^uST>X+Sqn+hXEz?$i>MM-HvFhQdANh%h6Z5Af zzf;<#VSM$au0nlh;5+o+$n((!d+aFw1n>XJ0w3X zZStsLP+#gQ)VG8=`3G?SQ^bk+MQ{wMv^ho%gZffep}v!tGl~3I#EJP+lHVb1@~B}@ zU+OBPuaP z`VM2xF63t-PR!3e*wH9Rn>=b5)R(#n^{rq|1v(>BgpuW^qsBeC#n(Rcr5piOE zTl0UIt49rk`chY+z9q~lL1!q^iuq%bAD1?H)G(+obrtG6fjQI2*CS5MZ%Mu_ZStsL zP+#gQ)VGN_=^t_b6CT|_{;1@~q|G_hFsLte73!NDRZVsvKN)di{*2^X(sn#(7}S@# z3iVAfr??C6|9Er*`6H4al{V*4!=S#@Rj6+jbEc55Mx2=6l>Cge$)koreW|NZ-zMf1 z{)GFVB2LU72FEZWZH`gHpuW^qsP8V!sUcs9I5EE=`KGkVqlQ6!sjE=m;iIcb?$5Yh zi#RcV2pq$(v^ho%gZffep}rN&nLxfAabkX5@(pQ|M-7AeQdgnA4bJ%s?th9nF+UHE zVMy8>a~dJ3zSLEyZyUbj$d@8c%%7BeUE1VP!=S#@Rj6-zOf_jEKOJ#me(ysajl8tU zqlQ6!sjE=m3CtOTP8w;&{Ho+9rA;0+4C+f=h5AloP7C=R5hv#Fl6>!9=ju_zpuW^q zsBiDFRot(I`=27Mm|u~6RodiH!=S#@RjBU>=FA{J6>(zztmJn|n>=b5)R(#n^{ryg z$lq}P6CT|_ep&JrX>$%W4C+f=h59xzr-^(m;>7%&lAo0}dDJkdFLf2_n;ch7hX0QH zpYZ601xS=6KZbVv8(cRRTBfc3)K?gXVBXZP$RCmXsI)nU8V2>Hu0nmAm@|buK0PR9PMiFuMGQ?f;nyErz1|x?_Jo@$V;0%Y8cd) zx(fB3!kjVaq>)z4uS$MW+T>BgpuW^qsP8Q1w2OY*M-7AeQdgnA z%hKi?Y8cd)x(fBJU`_-1iHH;PrzO8r+T>BgpuW^qsP7c!4D}+m*PN9ZD zeVwi)5Y=}UbL!9;kF^BPVV0s9{iF>MGQ?jX7oL3`bfqe_Zkt z(k71@2KA+`LVeQ>`2HLDM#PEvZOt#6t49rk`chY+zLS_!g3eH+74yd=KQ3+Zs9{iF z>MGQ?g*ns6*CS5MZ%Mu_ZStsLP+#gQ)VKJ^YLYImBzZi#f&5X)k4c+zs9{iF>MGQ? zj5#}ypNu#$e@5~xX_H3{gZffep}sZDDXzfhUp%^j{1M5IN}F@2VNhS{D%5udbEc55 zMx2=6l>Cge$)koreW|NZ-`*4P`8S8pzY!~(N__r}I5B?+9K*1*IYteG`chY+zB8CJfqXgQ#QeJC8`36^ z8V2>Hu0nl#PpT%#-uV0*abkWR9K(>bIp#D%QhlkbP~Q~3&zjvRGMqb+FQNy6V)K#c&6LZF(lSW#~=l6wG$=A@%x^ISBrmg8r&si+_MX2emxtAF2)Mjq{~`l)5w>Q8-zaX40dH0p<5D*DQ0+tn}mS{Hw6 znYQ{uBWB&Z?hUrmg`U>N4Y$iqh&`U*Mxoo@oC12~} zPc73{f9flY!?DKWP(Sj`h@*U0|6oTWk9Jo5)G}@Lr@q2C9GiSR>W5w``pRY7)i3#4 z7k_G*w)#_FVH}QCo`Cw1Z$=#DyZZOt^U+k7>8r&X{aB1spu=0ZCAhK zYhC=QW!mabeT8v2RyZB?Bj1cT%6Ii2(9y`FomD@zOk4e_uP}}qdm`$GUMl*^W!u#+ z`C1qM1X`x8{?u0(hhuHbnMJ-CagW5w``pRXS z{#D7>y7*JewAG*b3gd8WW(4&k-;6lQcl96C(a58nRX?>%Tm7l8Fb>BWXP|!QrJ}D~ zwq5;_uXXXKmT9X$^%ch9*yNK@Kl06pqkLEY!5xh}+FA8e%e2*>`U>N4ta2vmhh8fB z%4OTtFZo&*e`=Yw`cq$F9FCRGLjA}$BaZT2{fBfk@@Qw(Pc73{f9flY!?DuYs2_T% z=qs0PSHI+IUHqwK+Uiezg>g8RJ_Yq7-;6lQcl8%K8hNy{>Zg`zt3UM>#^G4usi+@% zspu=0ZCAhKYhC=QW!mabeT8v2*2bJ!MM-Hv6+8C{m3^Xj`CgohjujbXlK<=Ez?$i>MM-HvHC{T z54}|MmCLrPU-Gps{?syU^{2kVI2@aN8tO;B8F7^F>OZWbkw-hLerlPv`cq$F9FA2s zp?>J4qOV-GUHy`;b@8W`X{$f=6~^IM`RS-1`DVmXzN>$2MMM-H zvD_%?hh8fB%4OTtFZo&*e`=Yw`cq$F9FDaxXBPQp#8JMh|A>x89__69sb$*gPkn`P zIM#S3>W5w``pRY7)i3#47k_G*w)#_FVH}Q4J`43D-;6lQcl96H(a58nRX?>%Tm7l8 zFb>Bmn^8aXQqfl~+pd1e*Sh#q%e2*>`U>N4taJ|QN4^v>S*NA&Z?hUrmg9bKk^it7RF59kt$=AC0Q_Hl~pZW^paIEkg)Q@~K;wazMe^f^!k9Jo5)G}@L zr@q2C9Lt@H`k|MKzH-@i^-I3i#h+THt^U+k7>8pm%$Y^L8F7^F>OZ=pkw-hLerlPv z`cq$F9F8^1s2_T%=qs0PSHI+IUHqwK+Uiezg>g7me=h1rz8P_p@9ICMqmf5DtA1*k zw)#_FVH}QCpNIOPmx{h}*>?3yzShN`TBfc3)K?gXW98?ge&m}GNBOS)V>=pow6p4` zmT9X$^%ch9Sa}QThh8fB%4OTtFZo(Ge`uMu`cq$F9FCPQqfl~+pd1e*Sh&b%e2*>`U>N4taLu=N4^Q8-zaX8kz5cMP9j5x}7^*^Gc zkw-hLerlPv`cq$F9F9$1g!-YEioSB$cJ)iX*2SM%rmgg7mdNJyUUMl*^W!u#+`C1o$YMHkBQ(s{mj-?gUk9;%YDBsn8 zLPsNyc2@n=GHvyzzQQ;h%e@5kLoXG5<+APSmwc^@KebF-{i&}o4#!%UGmCsP;wazM zzoDa%M?0&2YMHkBQ(s{mjy1QUe(0s5uUxiW{gSVB@u!w)t3UM>#^KoHC8!_yX2emx ztN)Q5jXc^}^;65V)t~wb<8Z994fR7W6@BHh?dq3&t&2akOk4e_uP_eBN-stI$TuU- zJpPFtjhwVi!}#h;U4{Bq;ai5zaHJLU$0a`@ZStsLP+#gQ)OQEw>_om1abkX3^C!*K zqlQ6!sjE=mHs+L|GZbmX{4vRoOPf4u7}S@#3iU0%4EKK`UynF3za{y$w8^7}L4B#K zP~S1kNr!R&Cm!8E{;1@~q|G_hFsLte73w>MIXjS_j5slWM)ECblSd7M`chY+zAelt zo{alH@#qHfM=b5)R(#n^(|pe;ZeB% zGvdVjVQ>s1(&iX74C+f=h5AllP7V1=#EJP0$v34<9yJW=OI?NfHZdo63eNixC*}`< zV;Gh;$EaaYU+OBZVC+6qDF$_tY zV@@L^)t9;o^{v2n9QjhjiTRU~uS=UeY8cd)x(fAeU``wP>4+2admr7=$V;0%Y8cd) zx(fAeW6l_K(nu@jS0z6wZStsLP+#gQ)OYCR)ue^|j))WUcS*kYF?02(VNhS{D%7`( zIit`iMp`kyBKfMc$)koreW|NZ-#X^ZAU_pxV*ae;cS)N(Y8cd)x(fB(i8&*W#qS^S z=mzr3lCMacbEsiZU+OBSX>*Jk2KA+` zLVa_WSCcC8qY)?O*CanBZStsLP+#gQ)VG8=yO5uWI59tWT1TTGZStsLP+#gQ)VGE? z73hpaS}}h@@-=CbM-7AeQdgnAJ27V#`DVnK$3MNJk&`xg)G(+obrtHHy8@qop)(w5 z#r$!}Pe_|QY8cd)x(f9j!JM7QHzH2VZ)^UEbM>fUP+#gQ)VGQ`CFl%AS}}i2^5fDb zj~WK`rLIDKo0v0=d_CgC{Fda~(k71@2KA+`LVc50;`8s5@c9>yZXkbD@?+9=bD&{R zU+OBmp2N2Sd<)G(+obrtH{ zz?>=Ms}U#WHzhwKZStsLP+#gQ)VGZ}g){K^H{!(nVQ>s1(&iX74C+f=h58QtFMR$* zz7la_enaw2X_H3{gZffep}u37lY25g|3)0;^Lxr6a11Hh=~rHC-QAH|rmgD6Rn&hb^dgS(UH#w~Qu5bbWZm77TBfc3 z)K?gXW2IN2e&oj@j`Cgol5e7&!e7WE@P7IBpC>X&>I?JR$4nYQ{MM-HvC0JMM}92gDBsmD`6k*~{?syU^{2kVI2IcV=lAlpO zwM<+6sjn~&$I>fNKk{P{NBORP$v4r?@~4(*t3UM>#^G3QJL>-z=tUgmyZXT~q~vGR zPc73{f9flY!?8BzOd>xPag^`smwXfLEPra5w)#_FVH}Rlyb1MhgkHo^zN;S`LrQ)| z{nRpT^{2kVI2>!f8TBJS7IBpC>X&>I?JR$4nYQ{QNF7m979Te zM*Y+>ZS|+V!Z;kOzXkOpKNfM6@9LL)6YWfYXqmS9Q(s{mj!jOY{!P$}ILdeRgJVd^ z�eTrmgCZZ%6(A3cZM zhLrq_`l)5w>Q8-zaX8k-oJr)zB98K1{gQ8@o#jt0(^h}#D~!XjnRlT6XFxCFDBsl& zjv*yKqkd|cw)#_FVH}P%---H>AB#B3clArYiFTGhwM<+6sjn~&$Ld$3{!!>f9Ob+E z!7-%dXVgzE(^h}#D~!XjY7O-xKNfM6@9LL)6YVU2YMHkBQ(s{mj+Nhq`kx8Ch@*U0 zKRAYz{EYgkW!mabeT8v2R(dz;M}92gDBsmD`6k*~{?syU^{2kVI2=o_LH*ByUc^zp zs~;RgN`6ND)G}@Lr@q2C94lOl`jH=tILdeROTLMAmOr&jTm7l8Fpe9059;3xy@;cH zS3fw0l>ChP6KI*X`cq$F9FDayXA=3bh@*U0zvP=}XZcghwAG*b3gd8W=Dn!@9Oy+H z<-7X9F{I>Y)K4wbR)6X%jKi_U`%pjfV-ZLBu71fk(a!RxmT9X$^%ch9SiO$=pAEf; zqkLCCIEIw`jQXi%+Uiezg>g7mc|Yn$ek|fB-_6 zh@*U0KRAYz{EYgkW!mabeT8v2mb(u1BR>{#l<(@7d=u>~e`=Yw`cq$F9FDaxCwDIN zB98K1{ooi<@-ynEmT9X$^%ch9*p3gPe&oj@j`Cgol5euT<3gplHnmJ!{i&}o4#!#_ zMEzyd6LFO9>IcV=vYp{iEz?$i>MM-HvEC1%e&oj@j`H_HXG-$ZXm?wKX>!eku7f@b zT}Kh?$Uhf<|Bg7y=Q@hu7)ogWqjgX-YaR4a=sHF*r;hx1#4$d(3-QZ7y2o5J(HMId>-`i=myp}BKb1fv(5SIpq6Q?KlK&H;n+^hX&^rl zag0yyB0Q!gzYFcctrzamo=}G#+*3l=MPG%kEB9gC|MPtK;E@G#sacl%1loJ@JW)IA zd7_^}*Hgiqoya#Lj`7LmKD8xZ*z)l9i5^+|L|=ujYYKBJ@EO4)3%0Ha$?rgW;$b|0 z^vGHlePhs%++C6@ykO6sml^nEJufZMGC%VvL)$R1hd#Ty_>72_X`0WpE}zklPA1zXRkB}WzKZsqo{OkSkF5QtuR_;V`UqbC$WKKa+$ z9z#4{hT#!Ic@1b!fK$%kah|QaF8OJ+_vH0R?W}dvPoe9{eH7Qf7vlMfIL5d26u~i! zqP-{Up?21K=%>*2R4``>`D(;5zOAPz`B}90WIfc*S`Ymcx}F;53}1xfACD~9dP@dN5wDZ z@;qOY{0!Q=@OZfAd3t4?=jpF#ftU3>7blwnF+$H$FBH|dITplw+;21{HemI{W=#lmO(pRDDDq+qP^3{lAeA}m{| zlYOFg);`fsq3da2&hR$8|KX7ZTTe;y<7n^6dZ?YX9{MSCJ-JWf_(#4Tag0wc&l@et z=Ub;_)&bamZI*8QRm})H8UdO@2%AZE2H34TF9zrmjMLtC*9H zqovGagu zO>0M=@Hld&F*e*8djiLjw}*M2cNT|o7_0qY_uQv*Z0dq@RPR|FYs?ut!+Gq$*bs8w z_YCLJn#*%@XXlKS+}t+CTn%n5rBQk$7piY*l*Hb-V@@wOXKa(x%g-HiyaL81&&(z3 zwsP-K!%Y_^+rGM2=&#*M%e8p^kLCV4&f3c^yKKwzu%$`q3Y^yv*KOVQ{IzF1&UuW^ z8GDxVDC^iJ&l{UF=6My2P5%wg?YLjd@a2~$<4d6L`fJCzmd0x?PnxG=>;;}vx$W}g zRIb54_v^{|IL20W#!lc^6Jv6WY~WbsTbCzWP(YY_BFB=}gK=+TRkb(Juoab@y$B+lJ<+T+}=H?K^}=&##)$=2tu zEk1&C${3r)i!6+}HFNx*p=V)FvhaC0uPq3Y)ZQ z(~@M>hQ-OM^|?yV{{6}R+xn9IF}^>>_s97D>-TN-^e;^M(e7WrxYASVO-g950A~d_ zE7lKGdiL#4_T98J*>}T0vhVu6+qu^A=I*uK)t?mpxFoq6kK!xC+UE4JwusZSZ!ff# zd99|ef6dB;$;x{Ml11RwcP&W{{u9nKL2qs!@6zB=Q^$Mq{Yicc9-I1-{D$5nzkXGF z?-puawm4aabuU}r*IrUyTyp!l4f}aQZ*n0X_tV39_a}>P>2qV-G5(PA=DzkvWAyJ& zl30Uh^k{7G=q1TMJ;h{6Yf)ukd9UJvQj*+%`x!|EuidRZ{yXY6&XW%Jos}H)SG;I| z7b7B_{3P_p|Gvb1pFQ}f<;k(*`y@kStC9nHj!9Oum$e3F`kG5Bi_43O3rp0lLHp34 zU4$l4L8M+a^#4}it3OGuThr^tZ$7lwy&paOFyFsnZLjxx%<|;8@pmLgjlDBDsOR{e zEWalF9^dC{DFl7`@_mJU>`Ib`J|nNON{GC!EQfJhCx#qm7kK}>_VVk@FZAnLk4QWj zk@|lL{YUir{$mljgZ~oxmks#3ZbPK+Cztj*-;XZqb)OmXD}4XhT&TC$pRC!CPgXyG z*IuiCrnkAcvZ(C$b(YT=H0Yb$@AtKh^>bf~=y!`qCnp^5*MBx5_v3{{-~R+6PS44$ zp?~os{5mHPskd^yU*9o^?0*lD=*98LemI|$22UJFhBh3Wwbv23riR2FNBMPq=xD#5tB&#O{^+sZH+P(0M-h>8yB+7l z@U`PS7km@M-{5#AQoIYXj!(LGqa=Asc;5HqI4?t+$2swo!~J^x2a!W7j`ZvL5F+~v zP!DS#+=JtJ0=hh&6+2e?`5(mjnV3a%y8HP4{)p7SJ@k9_^ZgZwtaMH2KY4$@u6H5w zczopn{`tM^Kz}^W9_0HE9qi}#EMJ@~-_V~dU*F&EZ7nXZdGx~M(KvrE+SHrO+`lCG zGagf~@#oyReW-(%L_B|@pqc_pDf$tl)bA-U9})wpCkm z?d7edGyTop3eKg)nV+4JG_YT+o%>>uZGwBm$F|qv^CzN#*M=kLeEHY@yw-c4KOX)a z^-!aQJm(D#?3D~Weo1LD-W$!!@5zAeNoCFQg~{?QeovC$ElJkn@g?}V`fllW{S;$& za15Hvcly{T%;i4KnahQWmVXcF_wOMUyod1p@*a3@!MxutNsh*&_&TpYw-0^r+{KFU z-249rP~S3tUBKFsN@pKwUq1EhIs3`|;A@TX7I>wIh7??055M(xye|SDM0EStzkttm z$@JB42!4d>9{BpXy49e2XVASTLzg-|I4`Zov9tpFxMD-NW+>r0VpF(|urcl%_Pc-M z;);8IHuNUBU-u;^;4u#GHCWG_KCgYisU!b2;mqkDurN6QoJHFfCk31bNATeF=o;=; zG}g0%YwX7w`;rwK!?o46-lY1n{^YZG>vQ8DK_vbik^BGS(4SuG^DFZUaSh}5iO=15I5x^b zr-I0NRYV>WlZbpDsUz~d(m>?Rev766p>iwxgU>4(9{0lVR*jB7AK4ETu|gSVjFwS4|qJ+wsDMn>Inb5Pa_fs z9vO~<1NOpeYiY9ZtGE^!T$~KzwX4TX{w4mLb>Q!C{sO*nt)F){BJs=6kB_$$^N33( zJa6~$7CvwIa|4dIefyGu{rZy0E5q?7{rEL97S@s*I6L|6QC@eq&g#BoIp*%xk$$*_ z3g@FGNfYOf6(I@#p&o!(3wWhlg z@UP*~u%^P&@ZN<;pInIaXP=-hj~l**8F~KVgRgCJrlPgg@w|>;ocP{L{JM4_5*xPm zxz}?Yks5zPq;CEaf4(~(k(xh)2K8M%8~ytt*W9h1Dsu6<(l^iDvm$DC5C-;$U5^^GEOeJ_SqygsgBC7(yUc6qLz3VU3~XAav#&gCAS z{Dgit_H;yI0+G4v5$XTmVLU$GW}r#j^cuh3tk?Q3aE@8&>pB&Yh_1!TYgR8#R-?Au zCcGcx+H3OGf#frIj9lekOLO`WxAe_{cRE-N_;=Da{aQleIDNZeFCnZXTI8>eEDmLZXMVOe19-^49BltF=a+2@lIGd??&~Q7$?#jkIYavHy7|ue*UclL zj%Iis`F!%ZBKTZ2q;Jo&y;hjl*UDY+O)+LjF_+hahI=06-v|3o@$Z9YA#(nY5UJHZ z)xR&MkM^HGo`uNw)Q=-_P5%peyN}CoJ<0Xk`L%@odWD={weLQ2;5wP#EqOk!zj1#3 zFdi39`u&>Ich`Klmcu#v{dm|pTl?|3zY_Mc6s~tRhU=X&BC*n)KbIv-H@eR)?)+H` zb8^4;*9!$i)>=g5o}`G}qcS3EZ~e)~D*D`;IwG$(nuy%h7NT?e!&wPmeFa1wohjl{ z#4_SC#46%)#5&>%#3o`6v4yx2G5OTEsHq z;fPhlBM|F|MsYutrcK!5-D_PRA4iO4lwjYzKt5&7B}%(ymb;`v>COnCn~b`jn`OG#f3p4*E5 z4sI6tr(toN52@Xe$3SI`f8VMf=C7+8A#$9@1Yz_1Cs&-y{qR4H)MxEH7PvQ)Z}Z>9 zPviUQ6#dqrXD6eGY#W{ke~uZR@m_ykzXFl#xeAf{yCd|U@jjn_4Vi5c=-(_wzcRzqx0FM=VMPu#fID4=zr5J(=6)_cE^S!ne<@ zZDweGZ6_Wzw>GY0(oDD z2@m2-MD{NY{kT5XF*tz8657 z^<9rh+#dRW4E?x1){#};M5vFNP6+?-wM_6e&Nc8g&d71&aV>%NFcoqr~3Rg zh}^%gBXaGzNBj9lBeI5VSPR#F4I*)S=`}2PC()l%~8+?td)d7)f zs9?NX&2N8qr{)yg<_YtUlRnJnu|qsF_0Q+K5xJk=LS((knwZ@A(x( zuH`Q1v+lnj630NBeSMx;+u+_kN#FDQXWJq44fLenS=V&d&Fhi+s`=}_H;i%a#r!T9 zxDt_jaU*inx*L%gSnd0|4*Cv0c13dB#7W7}_;9jz?Bry1&$eXFU#P@_m4p&wugQLkvn~7 z=pXjVes?W?E+Xe2{F;8Z_7st8|2IUg_fw(&!`J%!iLdkgUmJQ zF#cXR)9U?PwhZd~XoH2b~|rUVec; zPkaH9&&vjkb3ZmC65B&x*FjJI{dMh@6Y=+eN8)?2b@De@f1YfEa{+{?>4fl4=~%DX zEtZkzIjMrE^LYI7*yr(g$NM^aTtL2>x-=lp*E>rMW+UHAom-PJ%O z?m^`7KJZ1~KM0Ypztckh$%tIXxrkijrD6O^M6T$ zecey)mHX}n-x(~z-(0H4_9t(_!+js?zH?vV`coLI*Zubg%xhog`0Ja4aecG@?(3WU z%g#w|hp+A{zXvB6b)5BZFBngKe`mjO%1sIf%-`?x!x+-LQ9Z`*R0 z8!<+WyAg?jjN_kvgKK(|HCvV?2jV`Pz`O~ya<+}ypj^>K~04|MjH zYb<~}?{yl+uD!*-kA51F8b1pCiE017x&b_DZbl@whraF`*Vb*_lhL}XE4r_{blu!_ zC*a2GJ|m1h)b#6K`R{(+k3b||_f@~{Rp4>mryvp+gubquYa1LMNRHTYLUQPa^*G-g zJ@0(81Dq#dV|4Ee%l&g%M5ITG$YZO7s64*T`I;u@*bjDUn?%2kzYmNcrg#{B9mcHB zxcalcu2T^C{5%bjdhbD`=W{;S=gud6H~Ic$pZEDUe!7T|GBw0jB)O_5AmUFi-b4KEK#nxj)x_sI%Yh{PM{8>pee=aXp5Sr~23H zC5ZHTcj$i{k^0{X;~OxSKARDV?V+#raLt3b5A3jQ1IfW#`jf#8_#52DB`v<5i^v&l z-K7tA*33O_9W;NE>v;f?>v=nJ^#39vabM``dgz<=nYoJb6R^3|ag*^+x{uc> zA#&f#h&=wQAyz`PzkgZeeDXM7_4w-Gim5eyeP`dx=r{MC|Jv-se7;_<|FM5v{TPwD z%YWiue`^r=x;ht;@8@+yz90V{k-Tj`^{>lcBN7My%%7)@M0d=eRl5shh`Jx^n*U_Qo)F)3^OP&z-h^?k z_Z5i5$3kD9UwZ22zL|_Qoc58qYsh7M?t7+u?mOYX{5sZ#&wFQv&wH;3ef6hbd|kUM zV-3^M8tVJc--mm{*ttjh1qCa^(;i(Tdt5%dkVz6WJ(?i}@q`FnK~zU#5;pWG-SkG%e*4Znrrx32aQnU@{hcWh_e!gGN6^LBV2IT0!8Ijl?`nn$ac6(jbGS-y; z_}n$svDfi+%)MdkE1Ud!?nmT$Zp1j(b2lO}aMJw!q37VbK3uOnO0HM-Dlfpn!tdCd z$lneT>NyeoQyBI-MMNHBcFmHa&+C*DBF|rCM4rDYh&+E)5ql9Q5mk?`LOXxO_p^O} z=G+0dzRB`{Ti4ak9dPH#KW*{-2)Uo@#xz&Fk!2R;C&;91S zK4&q`YYu|X3D?QTE~%HV&&GlCpWi=)u?J4~=ZiN!(Vs8giAYQ%QuE$0ehc{2z7LT& z0PpAQ>v72S=<750^7*gNw|}zpT=4Z!%(#Ylc^IS5eoyl2IW1g2T!2Vi6Z+~;zpQ;4 z#(35~6+YEji`yrh8{^l(pTd|k#XlQQ^Xs`6k;mH~LVpPR$o)D4k>j^up4%@(;()M! zx?ZkJ_p6+-U$@8_-F}7VEp@8?pO=R*_AU+2=V=(@dM-dDt_gkhr=NTO8QUxA-|FwV zn8;YeNTah)Ttj_u{yyCs#(ufR@6V0s)BkQnVj#Q^sXx62k6M}>HNIDJ_}Ic^&9)V| z_FInY&}GT8xAwW~&_>33c1G(dg!jJGIr)Fi4`YSH{dzV8|ILWR_R!b$(93^LTsrUb z?aqvKls_Hq%YGUA62^XUuwTc%_}szc<3^0T{XrxK^1iR@p{F}O!gG^cHvjc>kF0^m zZUH(Yh$$Y1^TQbX&j_D;E(z<{5PUZy65B)Hts`8w(bwPiwrux(Z$lVk9W(eoGmg|* z@KRsrqY;T0hW&rjc*Rc+f*T*-7{x=b+^Q1HV_h;J?*+1+o|GnCIi0r=_kv^X~ z+wa4#5ZV7TB7I-}6#sqmml4_jHX`#+Ecx%hUx-MoJggs|=T>76@w=f7`y?yw>}})k z+wMM?dU(#r<6cz4b2k}c<6*{T;8V|V#Pj|7pM%Kf`DLMh@eBNVUyn%dX+-YR&hK2tMECO_d^fjzNDk@x32u0?{RURQu5a+)7Y=)h2sWRPN%-qAMZt6CsNnO`uwRpVxNq@({jE;~RRdHgq!f4)!8iKo7<7tTOe+cmq^uHAPPh0Hy!H(=qQ4 zh)+a(WWUd!k4U^W^zT5-qyMx4pPyLj^LHUqZ{@N9x4*APWdDri18zS*iOBwah}^#? zukihs<#10W`kz5${@T3G!oDD?MQ<@Ht}9*6$=(0>9Ve@Ok@(BF#4AN@~;{`(P6 zM*rr}pF!kx%Wp&f?}!`GKWMerUx&!wF`O0p&qn0?-z!4@O^9cr|IyI@A|l^Uei-_{ zM&vz}z59B-LBzw+KPmJ_5TAp7zHSvS0YwDJCNw7q|v>aVW~A?8A~?*TPB1N_7HJ3}#JKHon%kFfmW_xk$k zAM)$$|FB>8V-UGtTM#+#Wr*CLs}PA#gz;Mu`MI{|dO!ZaC;f48#HR+_=hAl|a{l#* zWZaBMJig(58;HceBl4bspM`!Ku^0X2pZ2^GBCl9_4q2ESg1`OYxAGN#FZy!4KjS*{ zt^W5F`B(Vs%))BFe=C3Mulo)`B#sDu|G6(e=ksxjxz~Wh*MlSDpP9e-d+Dvu=al=x zNAb&@>v>*F*M~E%=ffD%4yTRzdf$UcpRb4h4-l!nD~#WWdGxp&kr+7H_w{<8>+Ko9 zJ(pYXTS(l8K7bRRyN?>bw@WYWPo9m3|LrD}=8YwDI6Y74O`d|^Xu03^+i&uYU7Q@d z4ZjJ+J^Q#vyKMJ#C-25<6OW}|@qc60{>lRG%iXjB*OJSVWn24N{QbH6dtZ27lE3=v z>E_@3J=N*oeVjp`$4Lo&#uoZKuGnWx5PAJpKvaD5R)3#wGR>nUNuG+xeY+ZwI^RI# zar+}g>h#^_?=L5P zjXwR7ef{_MtdG7q^xeAAXDp&mzY-$-Du~2u7yIkYI}rK&{~VEe=@Nf^`$j~*uHS>m z`41uTNak-058N<_zbWmFzbSRDL3d!CuSTA=Ah_7V-%hOmhF^NWtA6GEdioY7ed|#t zzHM8>-#|Wy`%?HD6g=nk?E}fJc(iZk^Ndv?r(->bFHR2M#{F`y$D%*>mLxM5;l1+W zf#lexKR&eYey_68|6ZjP_B6$3+CMJ$>sq?Pe=Zq34*#7C)Hcw@G1RnQ$%Vh2T|U1? zt94JK?TJOsBR>2azm6~e*6;UE5xIA5L_Tlseh&P$b04fN>-Y3US(|AyzTh4H_5QVY z`q%$Gh}8W9BA@q_NA%Z*S2*0g>~*hREw4J|6|V z9#>>MA5-C&04;g#GyU5V|Jicb2^#FLBgWzKIIDanU z@xkY|vCco|b&PY*c&_4eJA-ldn<3vs-W^RiNAcNdW1Rg~$hVN^Uho{uJ;)vJ`w61+ z54=K%DdOJX6_IzpPeEkA5cp-}`TLYI`uu%L1(E$y$XA0-Jw&9E=YG@g&oQ_A{aTMm z?+XyQU)Lb=c=>wh-yQO+@9^i(mm>1`xD}DdLo1B$LZr?kzU5!n|At71|3c((@K6|E z^&g&hHX`@p6Nr4i|BlG}@bcgG<3&X3Jq|I4@zKyfACbS^sfPaN5xFOWGx%Ns@kNNd z&U_6b$FD)8&RvMyn+@N=-?kB7hse(#??vSJXAsG|1(Cn$c_8%Pd}qJA4*fVH;lCf- z58sdNi}$qE;r+s&M|Xwek~%y`5x0KB>!!E*`SzY)!EbG^k>A_S>AT-$ElFDVeq;pq zpV)7=wC}$U?EJ30aD_jomBaU$rSQIb`3mpfM0Dpx_xJr}`1?Mt|F$l!@V$5>%$>yF zNM9NLe)=&)*3pCCO+Rj1UoyO*H(8GFZtTC0(UbNkDSoSe3a%Y<$n$rIx%Eq1J%xpM z-G=MQe{c@21kZN3{&?GW{Pn`05sA3I8u-MuIbTl;(bdD>Ylio~rqzMkFJ0t$Z$cz` z4((44-Lf<}XcImM;#vg1acnPaEvWS1zXwy?(uez!@p~w~Z&wzS+;fEY=GMeOa>5%2 zlKQRweOLQEhb~GE-G<*RqSl3v$9fCAPFsrWH2n9EHg>MlX2ZJQ^<`gI&+1$UxMbGP9+II}OQ;4vQln^klA zJf3j9T7F(%@^U=vzdxdVzb>o^&*^H^#C5H7-`Oq0cXmthnE-!R+v-0Pr-*!| zEPB8Hed0T>^S@8rfmp!!j}Q+<{1xJ1h?_s?f1kJmk>{(d-zQGsdH(PQe|-ASsdImy z*g&4YPvmpY_cp#abFIzWJD*2W_VK%=QAD;4M?}9ddQ#n=mo7r&`{*kXS?^TnKk5BG z|7Jvb+=NKporv6zhY(rE_u$3-*f0FP=oCcu&kOzd_eHEB>-T~?yVQ2=9dm1&#P9Ut z+Wrv6V7nWqeaf%@MTlJYD-c=VheH3fhR?qik@bBNk-XawS>OL4vc3;NoAvw(kr)WS zH#@1z@6A|8*6#(A|CRmRUH+}P^)>N3y|}(3@EaVCDf*`T`j1ECx>H2f_oC1r_=wM+ zjmY{gMI`U7h^+5Ri0=7=pL_no?|n`|bkASt$Il<@$T~KMy3}{hf6T2fhx@(b`d${s zu&muU@-t!mh+Ow`5Lw?u=pT8b&tHVd`mRPK?*>HH_hUrXcX+tJ{5(Wrd+6U3`f+`% zBdfkrsE-<42d|syd+N96)|cXUb#Z+k4r8G2#*rWN@AqdTQs+5{T>nJqANe7lzX*}9 z_p1@fy8)5@KSpGIPlq<^y*m7!?~9@TtI&_@V;$~0ge{N5^+k&7!c%wOn>vo%-7upr zBps?J_uew@k89#O$SKWq_GB3S1YE|H?SM1FnDxi;dpqLI;rDlUBhqL1 zG5-6<3lZ5r>apSbNkrl`q5r|qzY~%B^$;TYtKh?Roq|YQ5c>Lk8tcyb{azj8{QVxG z^%cLG2Un<`;g#^S3~U z>)(z@d@=O(@9tb@x8LJUcd6k)sUd}KeZ&0c=-x0!-`nszIimjwet#d0$mhC($o2mS zk?Sv<=KCKeK8_yT=#bWd9{SN4E^^b^7HJ?p?~i?eEx~=^!z^} z@_D`CYVY#^BA@RAYkqvgyFBjrSHvMPc!^RB}LBAx6-fY4*Wia_)kP?^xx+D zJMQq;fp>-9sr)7UZsi!vqld1KYv{JVv5fV#qxIESWW4sn*d6#C3h|$aTwl-EeE;eA zeGT{TM)0_vyAg?jtl!meegEY5DU;yv_bG&)Yp?x&XD=s_t1h2^uKi{hbCbhAhkwzp z^Grm_J|B_m`~)J8>x;kSzgHamvhQDcv(LY)>E~SyO`fm5gh<>U`flID{Z3r7-j}x{ z>^1rHq~AF|=&YZ|W+B}FmZEJqKa8<|Zowa)lZf2k4aiYzGa|7)^!53tZ@2q;TN!I= zM{6qMJD~Xe`6FSh6@H)bQ22euHjHyU*M#qlZV!E34?VN)d+vSJ{MYW~JLm3Cg6|&V zwVV;gSpVa0^ZWBwMDEWj{ziCj!IDel(@L8uaySX2B)>KA+ za-aFf+z-PT(hf^n{Pw9+|MT?66YXtJy(SB4VcG$+>A(U4}D!P*VS$RrZV=gbobo-E1ZvUxz&O{p8PTmL^mRS-{73gc&LIC*H#8uVe+7}p-;*}_{<9EyeE$HE$M*qG^Zm~t@;Luv=<~l_&;5Pu)BWr9 zQbhKzMCA2M-@p3nhqDpcKNpet??1y|&-?+A_(%6E7G8Z$^2>1l-oY36>x>f-xu5GU z@_J81WPbvYbUg;E|J^%?>o{&2V3EfQ?=3vf z56_Ft@4j~spE1}cwOgzNoo;y>f7_rxUzhjy=kKkE%)RLVf4|^$i0uC!@epV(J<#{B zJJ|E55t%<{jqh(mWPin>{(iv%;^~<8M8qc|z7CQ3&m$6dh5mtu`TGU0Lu7vETAyEg zxbHs~@m%n~ANub)!rw3WH$?JJInv)R_-;h@zcJ+R7u@S8-@pH8f4^Y=F}{BQBCq03 z4*e%1@||id^k0t1`vtEK{V7DA55E!mKS1Q?&fkar;$!{&f@=}!|4786kbhd}Z$Uf` z{a1(n+Youb;HN|XtBAZ`uoe3MjmY~2R~+Z{3Wy`*5B(n_o{9dSLw{hM|DNM0M6UNyi2OV5Xy~7hcsTlR2>lu&?-%@B=zj~5_Y2+^ z`VS%UE%(6V{qwdb_X}3=p27PC6`!;F1LfMwIb)SJn~VFE)d5zK>TBxo-9uClPra(Lhw}|4sjQml7iJ zK1A-zuMnxT@9qBYJx3!_=b4Cn-@gcvdY?w*%*A*7wGoxzry`s-0$DcdR@IwEBBgnl9N{W{8@;^Ke}IO7<_6KaX-rQzU}wh^*sf zh+N5ALjPMK|7%3nv)A4Jex-d7Iqw9-Wf&g`{TCtf8GBpkABNxg|Fip*Ch&alm>_Nm z_a{B^T>reEhe)57BXU3f+5JilXgvTP=TMKa8a|uz_;AndI{%#4G0r{XYlVAd_bXM8 z_xUFB+!MY=xF>eM(qzcDkmosv=K$_O4&&_CLp}*Ug%DFj-gDDLUhh|G1b!KL-fPoB zU+-6%3HfT!sfP$^@-N@@`*Xlue!mVyWX+oqxnJ86dAxi!^luOOMc?zU-xnbA__zs? zuiu$4K8r}5HQ)E2GhT&AhwmctIJiHIFZ_Y$JsOd>viMBcA-6(Yy4 zLnQA;MBcCT^U%NIZhybhwTQ$&x?gFh9GAD^{v_(9(|%rj|4s7Rx%U^9!~I3auJrRN zhlS|EZRL-8sn@g0J3_%k}-A>Q_!V+r18}h>8QR z^4B|`nDp06ulhINzYme6z7^q-ga$a$WRLB_ooWV=@SN^~K}xTJq2+>d^$e+3W^x0hzUaUT5dh^(jV z;mNXm+E10`=>a+aFp$f8g6aTBds+2cAmiGj`e%^smf^(xjJUtf{FY?nT%&QhysN44 zz-mV065N~AzJ9D;v`#pA99V}s(639!NoySF{DW!8}|qXqT>)`Yi!je%U(Fvq0*_ zAnSX&{(l_hvH#QV(SBMZD*d=E$mQ4-WIw(^bvbC(#~dfq_haX@_A}P z+*``>oFL0@2eNv!xJNVLo?iH7x!fnDIY4Ts z>I*hXJIx1K?g5bHRlTh>!lv^K+ZRKgXl>h^&HS_zohR0Ii|~c zu<tS)hSu)p$m?QJ|5-#&#Z*gie~ zqO^O~OA^mEka7Q_I&($(<dSK?W)`!!?x6Kyc)K?^)10dsB8WQ~p zNWC94r?L`DbHHpt@i&zw_n|{ z-m{$3jni(FVXcpMtQ7ydK+ZRRmFTxY>YZS^_Af&jv_DQrySlMnGJkTs0nOJ?*E283 zeCG3lbYg~ryc#Wf(crLHH5xzCs_!&R{G2S z?OWw%*WdF)}K+ZRI2N~fs)kSUj{+haJ-(TZLoX;UI+b4+kNs;`9 zFKzOLGA_IT(vE;!KBK!xdQl^O!$rSaiT=lL2?jB}sAC?!^<2$3qog7H7AC%9-XqTw zErnn1m(X8S-Azaw1v|iZYg;C-blEXpfKYQI++B@dX&)dHl|CQ#?0U zKkajK$5H0n8e2f$$-*{a-Kj}lANpmc^n>QJq+eVHa@q)x%i{^vi$E^x>*mSy7|8n7 znJ?*o_uXaZ!$XYan4j}F^JE#hK>DI4`Ocuu3niZ0LFRo7$`srNjP zRx(-YeKW{h=WF&Fu-Mo7($7iE%X01855`i|xGKi=+D5Hk za-!9I+2-?I2Q@|~t{Zb!2gtH%7Mad>X0S~DxZF6c&B?@=LpWc>n7=$JIw17t4o5`lb)o$Fi|lE=+$MqoGbQqQ=Y%YIlkz-ILEs+#|Ts&Z9YGmp!p0f@&w+?!Mjc3dFm#+zYZRHf zEe{}`N$~a5ebWC&-Y@IJdmt^tfoGBVd@}Zf_&j(qzeCUGa|hyi;CFJ2tMH4Nabc}M zx{;JF*J|+X>w($0R+D8Ews-h4vNMhB_Ogd+ey-AG}$mM`Dy@FcGN*O z5g%>QIE|;Us!@pZk%fqf*V#5tCy-|O4X&O+Y8|lTm2)a~Cvez+W@K4NW?s&j3BpEkG|w?M8Yl&^&vdwlMydUEM^ex}uJKbQ{Z?nyIuYVxhZ0C1D zz9;1;koO%lKbUQ{`%572$!Pjrw%N}A1M+@@LtuSy()ZbNe;vqnKMAtkxBno|=YIpT zy_ftb&*^Uj+1~g3B+u&yK(=@O&)McTj$43i=Q5D(J_c+F?giP-R~*VV+x=zmEa)n+ zY_r{qK(>2NknLUyo&(DD#KN@KtB+%yn1wtXr-9Qlh~o%zy+FQXa{lCR%B=iTw%e@7bjJYU+{9ymNYb~?S=J>N$#HZUNc#a~eDg1s z{=W}oJN^Z-zkA%0UK8gkIS$#6*Lou6qNM9WKBPT_e2kU%mi;zQ{B@Zx{>5@czFfL@$w0fC42~SO*sj2ylj6=#>*Q)j+gU6j+eVY zj+aM{%XoS4gp8NJ{U+n(_TOc^T>giQmskBMD}smRTExuJQr`Q}%x7QUSx&n09kWu)@137m zeniV(I7Z6CtdlS(v<&FQuz)o|IOQ_{9_=^H%jycY5cKVYk$wczHX6if7h<% z8jJZ3Ds%tVi}^Ud`Se;{0DO13`1uK>wRut2kBY7jO;1xNf33te^Ty)Wha%TY`8i%G zzvnQ~Q;{cmIk9ZhZ{q%@dA=Z&#_#bYztKazjh<#LaKFtE@pBTSd54O2T7Glz?$t}O zJXKwKPKdsnV%-{3J5~_QkJJq3`EtEErtjTpe3us_*4d5gU-Z4culV^Dq`l@5?YFLv zCHZC9=DSNvabJbrH^}1z?qeIXWqI+vSC5XB@+yk474lkUtt<5k6JrdZ?u?Q4nJ$M& z1?|D|D)Qw?<7-NiFSjm>GY3ok$AYv=uh#a!baVM9wFk?ts1J-!r7OknuORKoL88yK>TC1MvWuFe-(QTS@$0RVSl58om42r76F;lc)Q@FV z)Q9TLN$s!OlKmj|o^%51dyV*c1*H9mUijDj&WV|me> zuyq|~o%#==Tv`ZZSz(Z6MM0KjsQ)nT8R5RU6ME!k@xL2n-XB5cZMQ}I4g;}7jLpmE*16AWhyUT#WY#*GYTb+J$+SBOl9Teln)d9|TYywFAe1 zB&T1$U&{X)WE&n;-TE7OPUtp}c{hTzuT&R*E6*il)W`k#<#|SZY)9&2J5s*{dQ6?D zy*`7rK7QOY-m#I^2c*gQV6<_6dH13pd1)KyHaFq@lS{R1>pnoY zzGvG5a`}2eE?*zWzQ|`q$N;ptoI&nqGo6e;v*%NjF=#G12Q>GyT_E?fIi2)?JRd|& z`)QZ-qY1lZz1jw{rfWWv{qp~UJbzKq`OrvGef(PP?O(|H@+QdTVO|%Qh3f*g=M0Wx z-nH7kA8PylU4L;tF8!tN@3LGbfb0izRDTSz9qaue(_aPIp7Jhlyi*+KK6&r3J&v9z zb60`n{}H5}?)}_8Q(W3wdbSENhquKd|AK#3(_iT z_b~F)PDEsUNbZ*hF`aR79imzHJKx$+;tGLmH;Jnm*3Wur*H6d1A;v1?GwYZ{m#&u{ zrB4~CfSBF5{=eeC^D#L;b3e$k=Ym{LyHx)Gayhm;F4I?n?Ejyr-Vd_>S2-cm>w+9J zB97MM%@8-z4XC9tUa5K(^aEAm`l; za-MHNuBVkph^_-lJXJBqByNwq8jqpd1BY%8oVq=5>-NA4THB*ln`AwD7o;5r8Aq45 zWxL=98OLtW^vmyFRj@spuKwM6Z=wfeSzeHJ@`EfZ2-1HTWSLR$_cwKW_?Gy+7i8W| zAoCmsxt!b@?-1~xY>z@#o9On)q1&SkxE{l0wN0F8gHq!yxTt)rUd0gFTK`DD#-EZ@Cq0KRn1o z%XLV(9*}-zy-(eKj7NUf*TAw6lk;N^Je|(?oFLj4kG1`H z^mFOoUxCTXcN^vzr`wH(|KWBchIy7Ft_eC`yaJlbSM^Dd?bq`+Sq|TT$;-3e6GM!7 zx}A7Qw-XhO&u-+UonOKDT!!hamo+|nbe#UOf%td+!|^$QayUL)cJUFJzajR~x!kV< z>E{lR^;xU>1CaI2|5c{X1ld1Usonyze|)3*7%1Zz?-NNJU)O0}To^xTZje5mAbogr zTxB|AAT67Y{dVSkT=(CXfm|-{fSh+X$a%g6S)a-}-qrybPlg# zQSC>ls@X1Vn{CY#k2763H(?#$&b?07mn*IF6}ID9mSu0JXpd~;d;F|86LmaJdwNEV zN<2Ae1pW#GF4ZH1o|LxQ%oX#n#+WAl-y<31A7ZS#k* zJm0r1(?lJg-=1F77}wIubB!Y0C&=eialb&6$CKGl%DQb|CPP{zE|Zv^Lz+24wwD?9 z^OO2sJ(iPi-q%pasI{s_EH{cf2EuZuCH=TCo$H1h=e1}akjvi-a^3KOg?CE%kAR%^ zG015LKy&;uujSkB3tDBKJC0b_@&~IAhx%};50~oa%BB48K$c(i4kZ zWAZ}Q3d^rU_HwU_sHvYZTlQ)nRC0{08lY@g$` zu7CN4XB&^<=Rvu}DBrHr#S}>sQz$7Wx5mWS59xXDThheEvhv&J8Ev;*nbEp@U`ET* z0U6Co`e)S1_*aH}{Z#ggk0T%ZR{+=kXl{@?2y$74^_pNrbqHM1P1<7v$UN_ZTn=A> zTn;BdE(b?5vDkH+Bx>C>;;tNEDsBe%r&Imr0F2buRT zknt6DmH1pBr+*GIz9yGQd>L7ljjWO?MphK}ikSCG;hB`u%0_f%wsFZU9MhkL<;k&Y zU?o%gkk*E2EG;Ds*JCj~o(B<>{M*aVFRpGB;~YgJoTDhhIf~jCd#a78VvapM zwQZspUuZX$O58_pl6u=?_Rq;S{)3-AW@^XWY$IxmIWZ0IE=b4|k2#?{_)gF|o(Be2 zGoHoI&+lF^4fUm7gWurRvMwa+lzFgSa3TN2N##%v#4o7jBy0OT6@4qir|sv^dzYNb zO$}u~B%_fW=XD3!FDfc$zLpcz`;Q!Yt?1?=DQ6i-`wBc&PD#E|Ym7P0`>J`fJsdB? zT22h#Y~Z@*2ASVLdF-Dom)e7L_Fo^!^~;HLG62nSE(EeCL_l+YUgPQiy!4CjLE4lT zq`z+gS^i%j*N=0T$olaK$a43A97m6VEI((d?BCxAviv(i?&r(?Z|e8(4r;wTh{LRx z*24?Zuc707?lOt5K1iDcvc7MF%ohb2pV^ntFFZZ6jqC8U_B9f;ZF}$QiTw)vPVHAD zXs&~@515e8Hh&cRB;VWiOA>W_etUXGL8ehqg6q`nYsz+DAns57D92cV-;i_A_xUY4 zy~i>k9rd&8qNbIMtc(JK-|F^7<-E|=?Q)#^Ey(uC`b2aQNXx)|Z}o4e6Dy3?ia5eG ze0knnPmT-Yo%tO-yf*^RFWA4MHy`Cbg!$(0lyU-}N;%2*dxSOLjELm>AJFtyRK+M7 zU&*LeR@um$gnrPny3rE%XV#sSdJo+Ay)vGA@y^!uUr0IizLIiY{93g6z9oELtj;g- z{gcYxO6EEe)cGU&%}?GVPP6Wlx6_<}KkUPnF+clKx_s=zmYpsik9leB4@$h3eJAlh z_Ps2RO(1>j1leC>Ag#s^lHLa7`a2AyUHzlHui`Lz6)$Rfy+hj0r&&(h(9S3JO1{CkHIgR82XT z9YcQ0*eCfbZI`$o6~r>*vB}2WQqD1uHup2p?_)aWv)_lna^)UOxh9|d4CLVdNPmiA z-X{-Bd7D6vGwI&P>_>jf=!@;0+kUj!-rEZAGg@(C7m3r&|JC|w8s)Yl;-|||@l%Lt zEUOzx8>iY{5BjygH+yNCIOZh9;k+m{j?tP%KhGT3`hu))38pcQ;UI0EYI_{?%W;6; z@8fe!_HiJBX&eVw7UwrwlGc{qkSwzm8*~i$T`&V$~jy z+oju8PXM`|Jgxd=kS+D0>OCOWljOd19Q9`%V>-4}|3%uj9mw=_{mHp6wLc9hN$gJn z?K^Jxv}~`YQBOxdqW!7;X|eX79Uv_$&2pq)dw=SgCXW3{afDC~*FQH4Rm-?o(kOq{ z{*-@0>bph#9sy}Bk(cdm?@#obUr>qPY%}ls2z)DT=tkb9e@ML!foA*J@~uNY%UCAY z!#U?BwwqUDb6Xj~m9}_4I4R|OFbcB#!RBa)-D-_<5lGvm+8#Ik+uJXiCZ6W!CB_p| z-)^&1`P0=MZ@)LQI2z+VS&;E$VjAn#0i=ykZI6R~i(I&`th9moEOsqC2bUGaH()*T zoN@MnzrR1$e%~wo(ii!^O}FOzJN|FW{U`b9Gb2OVZ9!#RkA+?jvL5e)+>RbpeFEhE zXx&Vi-U{UUewpe)An&ifL-hk7@2g&{`c;tkQ``Hk3++r_9xUUYe@ef43}jkSzdXZT zexORH(r>G{O1`PmB;%_p=5w%-%y1=LPUC+bVtkLA_n1Gb%R8nty2|o*C|&xUYp11^ zZcF1?Xqr!-V|UjO9cmiizf?^XJgeq}%zRECscWkeZO#+1e-8n4o+bSd3RkJ793 zDgDZTGN=qG!^(&KBZq7PzIGDWmp+e zMwKz8(Np~^ol2L|t@J3pN}tlN3@C%jkTR@{D5J`l(zsmxE1gQ0(yjC;y-J_buM8-I z%8)Xwj3}eZn9{gH{VSbHm(s2DD7{Lb(yt6CgUXOHtc)n5%9zsVrT&#prAz5ndX!$J zPw7_%ltE=k8CFJ=QDsbN^j7~$r_!Z#D?LiD(x>z*1InN>qzo$~%BV7?H2SE2rBmrr zx|JTKSLsvwl>uc?8B&Io5oJ^vQyTwL|4OIQrF1JjO0UwV^eY3(pfaQkD-a{*_LpOX*g6lwPGz=~o7nL1jo8Rz{RjWlU)dRR2n+(xr4OJxZ_A zr}QfW%Ahi&3@anbs4}KBu2la@r_!Z#D?LiD(x>z*1InN>qzo$~%BV7?G_F$rN~hAL zbSphduhOUVD+9`)GNcSEBg&{UrZfhrf2C9DQo5BMrB~@w`jr7?P#IE&l@X=6vyDG3 zYsvA%%OLGDkjHO11)?W_JWgGsx?Q0hmkbAKKY~23*R;0i=Rux({6h70b>z4u0Mhd6 z=9=d%x`DLWAkX`4R$a569M^OMX){2cqkKzsRuSL0Vi*^Iv`HZUTdz8^KJGV#z7V8M z26-OvHPzJ{f<1fquMu=>7zhCC%jDcw;-Pnb~cjfLqQ&A%~QP- zgYyz%PeHe5?w{9lW%fMpj=Tv_UHia%~F4M09 zn?VOue*`v%&N@S;cL&dazF+n0U<>G9Rkv@EYd$A-D@a=g^8DjI)y|f==5u4$fV6qw zS>SfnHCpAG&yn>6X;Z;A;9IKy0MCX#?@XCK7Uc6~D^!0EwuNqfmP{W8;xd7;K=p30 z9dxbMGQBU@9{NGm?}8nmjW#m93s?d~@9I1l3UWZ(x8?+CktpK}&2UIsN$u+-ca~()q0A2=u zs=C&>xkeA@-XQHkuqU`#wQ*jqaXIt_AZ;9Y1-Mf6&tNa;Rvl&fjbLx+XH|a*awM(O zNv8J&{{{V^>SbVG=zXdypP!3+1F?R9w4q=>aGvV5V1MYts`D?%H3mTU0%;?`f#CD1 z-vO_LKB>CNg}KI6&{u=ByTC!=vF9)xOo~(Ki=!M>+`cH5ebjOP&{~+)N=$Wclg2SPI zP@Ut>HABo}v0hupIgu)m1LbHSU1E7^Gbf-U&XTdObJ}`iSa+9=Ybba{7R@+rYcP zC91cAcSC3Nl7Rg7-n!yj=3P1@DKxS@nb91nAAG_kn)sMpsDw zF5pDyajNHmlc2Y&J`7HVZrw}r_X4LtPgVUqI2HP9)hEFRpwI6u`L712LC;pb8k`RO zlj^)axyFOgJwVzB@F8%a>P_Gb=-*X0_*bs+F!Yrm?GEq}@DnqdG1RsMQ zu6i;UfPO>u9&jdfU617N2+o2Yt$HRn8~Ov)KY(+f&*&%lF9qj9Pf-0V_&D@us!xFP zpgZ)J`~$%G(2uBI0X_kJKy}uDT=Si^T|wF~Z~?eL_3PkM(7&p#JuugJ8oDn?8wEZC zE>ry;_$+kgD`k2!FbF+V^?l$%=(VbMfzLtbUnTk5fs3F=s-6KZhJHu&H{kQoO$JH+ zi@_J5?^68)xCDBK>LcJ%=(7h){yyL`=xM5#fXkuxs?NAN*LV^7LXdVX_!2l*^{e0t z=tHV&UXyFQ41GCByBT~1T%>w47=r#&b)#!@jg`=YK-xHP6}VFMc5pRx&Jda28e9W? zqw1;PtI%(${u+D@x@f56KObBRJy!K>a2@nVs(%94L$|z6^7jBYKu=V?5PTi_3)R1a z8==p=Uh-cFz5)H1>Q}%wp}$jI&6{hy1>Fs#4F|*E)2iP9H$fj$U3XZn`L4`4AX>d(Nf&;`RKe+O_I^lhpi0pEk(s`>!lF!pQ`>9{0O@3jgr4F_&?AOs$K?u482cv<(qPGuRpf`AZ;kP9h|3n zE%*uaVb%E~a*Z9(y+GPXa3}b@>UY3Tp--xAQkHA{8~SRHb{Dt{T&;QsxEng}W|@9A z_!;yF)ziSwp*N}C3w{CJ;1^SQ z=w_oOe>X4&eV^*5!NbtIR38I>fo?ZO^7jLeK+jP9B6t+~8`V|D<{H03UkuW&2mcE` zp?W=d4El)bg7RGBICLM7b{lvCT%vj__#1S_9WuQb{2lsQ)%SpZK)-XSJPEy7^*%BK+y8NrzYCZFJx=vJuoCok)rY~#(5=Ty{$5}v^iON50EwjtPZ_U^(HU}`ghe0?!oat^pzm( z4lob;71bYuHK42AE7Q*eYeElKJsEUBzoB{$m=9g|KFQw^tOY$<^-Qn;`UBNJfQ8U! z+%Ner1#3f3Q2i`e2l_MBC&0SU9VSTr0bo7oM^vu>i=Ypv&hq2HuNFYHK*bDANq2Tb~D%(dXehQpbPp>)s3d(_#b)@NE-*X zhhC|AJJ<0a!>JPx~&{ZCj>1TkKLSL_X0(cqpdextSJ)jE$lD`Ak z6Z$sQkARm$Z&iH&yaKv-rsVGm_JY1g^#ZUr^rxzS1^Ym^ohAAEg8zbkQ1vpfFZ4du zm1pDlAG!-j8w&P=o~L>(*dO|^>iju4{)g@b(nf*N!3l};`kr>YLIpp zI0$;R>K))<=)A{e`q|*s&?8h&1FwPJq|b|ZKr^s}np z0&jvop}J@Rj{l(tfV8n-8T1O(AAvVRXFVm;TY|Sh4^ur690~op>My`sp=&=a`OgJ! zgC3>&G4OWi_f&rej)HFXjO6bI`k?Pq{WLfldY9^B;27w3&r1G&;8^Gxs$T@lp}$dG zC5YpH=*}SRDv|_G&G3Fh+;3lZRzWO3DsL&`{r1~1 zpJfP>n|`C-ki>gd{kVsxr)J8_lX3^vka9M??6Ce`im8_|-?@i!z@Ftc3aIs{S`f!vp?CwM#HA>T@Sy#Q!yZxijP& z4|bjJtd2fb%V>z_;p^f3EV--9r=ZMtM;+Amu23v|m+c?G(R7XJ%o!*D~U@l;tuV zekLJ5=S}xb$@N>L+?nr)pH(39ZUJfEs6Gao>rH#SN3Wy-_8n`bd}lHAH@+&0fqt64 zA%4r=l-=RQ(%B|NNd)MeStdo_?9oZ@Oh=rPKdbt>1THxlWn2 zN#d;sGT!r4_W)@(s=gCsymM4P4>I1(s&|5HuU}MGep{Bu>FU!;>x0=&**MI{c*ks( z`2!&JLXh#jr8)xAepY=FWPFXZU!DUpzTT>bf{ahzQ_tsn@w}71)5n82=)v-z|>p}NbJq#>@_N$%+Hh?z2TZDZg^Sedfs-EI6GL0{= zUsUC2H6!#X&Sl~kDAngnk#0{**LQwnMMirT;zvGXLu! z`|lMSrT??U_*w5!w`=nmo^n3tkN4E0jxF%rvE=8wxD5@|7;0W) zqJP(qy-_;Gos+UY*T~2-yyqvos}FTY3N zMt<&Zv??jadY1nEW9#7iIpm}7h~8^$eK*T>O&{al%6Vq{bTbdJ%FE@uR7@ZAJ&qqZ4P_*1 zj28UvU2+-7XD?Ig*9P@#nsywCqJBJo#rk=FkhYCpEqx*eGIj&?Bpu*}L(=X)fK0pK zuq^*;e-T~hnDm1P$m#DLm;UlINFV>?`%~F9ho1WWl(V+%H#*^){nXPYPDrD{ZxT=a z-^I^4e~7*Uq(48%`5pxs&tlcDg6y|No$(&LlB;pf=wE5u$AwsKz>F-*jTmSy+!Jrc zqV3`ZS(X#&9K(IkTn7S5pQihvIi0lZuiANLS@r5jKj{UstbfGzsLgenj)dyvIem#s`{d1yxHzePx%VWNX#v0IASq@{0Kr6po%YloX+P&z(#~5z+DEF-{#w@4-XQDt0!VACb+2FEVhIMxre&NCwTg%MA2yKJK!wh66p+*kc5-d%)#%V~R8JK3IOv9LA z%bSszVPsC?wj;yHdK=`sdhpzLMy)KP7QW?F3*Y0ah2x_fpLLv@WjOlPG{)n1Ye0^3 z?bL+L zv6sdEkcnw5s{=?Iq1wK@=r`T-lioD(Je3qrWJ+p0#Z%+)ygG$@d)WU18P9&?XFLVS zL+b%j+vB0%qPAH^BkT|4;=72lH1+rv(|BE##(vGdPL|vrZzmUY5OMANL#Mj9uIvM@i~2rUrkGKJ*y;#+l&~#KN)7bwMrAym$sN% zp4WPFf4gmUa6|i6r`BPUrajqI+I3!YY1hRd z?SDX)c}UZzAiueOgR}#x?e$=sr)%$RY1(_r*u?hsJ(?y~O`~7;F=^k)Xm_^9v)ca4 zRZl@)#=RP(9Z+qLlW|CU7bYG9XnV&neStZ5;@IgbkH^aX>RFW<>q1S_*^Rp!N_%EE zmiDa;(k=!Wr&rTUF(2D^Hb~p5+8#IKI$hlL>cq!;864ptDOiT_(c_PhPa&o~N@ht>n6w#PxgMfEaqjUms-ot15lgMl=$OusYU7H*UgQ@{M* zvaTB>mX_Tmj^QBV$V58*b^vK3RNLdAPkVc;OA|xxxWpKOYg60fu%^*ZvyKu+FOYGp z!8FFP52V%A_OZu7zeUCP?ijWW4bdhw#>khX*+-&jVhY+~;`$cA*vajy8$ZkTYT9xg zcS~@VkMS(ladrnt%L=3}ANnjhvl{OAc)&>9(o4V1t}DktmM`b4QkE-;R=P*iE$xHm zF?$fq216i^$-|m205Vpqd>ly|Jlf$n@YMMD@)!>tSkuS6FWim)E!(SUmL_MmlI2qA zOc`HlfV4Y7mODfBLXi8Dud1GKmcu;WngP;gw|1DvkFS8VL2Vr7`H0~lZ8yleInH*N z&m&z0(*6KhkJve)7b8a2X$MHFjyhAD{bH7k7i{O#Z8uz)ZW;R+>#^~!c>8cW?V6i9 z7EjbP&ge3P7 ze;P>t%`uJs255ZKRGZ6TjPwioHLr`K&J9W$+yxeHxQ&v16lS`O)tcJ^wABZjZ|0{PQ7E6W3aPc>U!4vzIe=B&tl_JW9~X$(&#tiTM(aoFh3oigdkf9ut)7_1Or}C93WI z>F;#?ESx5uhbP3_h4BQZrN(nu)9AO;BRYP9>>o>2f2ev5@-ohSAgykiI2p(3wmS#Y z#987`jMJ~n%58d)Kif5p>XN1s=i?yboTJNYGe|q8+TMQjn^6njIUHCE=lt-F&{g<~ zun+GN=CSqsN=D=9m5tit@y+cm4kPe=o-z7|JYzoMGOxjvRWbFlAM=ctn8rO1%wu34 z1M?V|o-hx$`Z_H!9qW&+?25iE<|s-XGX_tLw-L83zK2rx+cs%hpQojL#ylhKGX?2f zZmU7s_o~hI=`Z6ieHOLEySP6|`1ZFsUUW(m&p}%}UX&TSD|KHg<8Dd&;bMvB(Mu$r zEy&Awj)1hYkdNAoXO_f6pG9qQj5c`3v=irN)9p)o)5PVU6mKUV%Je*+8rMQiD_bDr z)637w`1Aot+pD@1`54!1koLZ6dz_4+=&T&$tkUVY_BsvsUHgsr+c{-BJso-2Pt8K` z$Gcd{^HsnA((Uje+1zHoL;bN_V+NGqHp?REe$Funq<&lMoGy`9(w=D0Avve6Xh zvKnD~$z!|qc^_<{Q3)F_ zo|`i2$Im%%el8>ahD?pO2e)&<+f!pWtZA5h${K6Cv<2C(E>V30$nqy^`WnnjKl?yh zU9=aqJzmBp@6N4l#@ecaShF8Uj5RPnHP*eFHt9-fuZ1Avc^hP$i!q)4cYw4kv|n;O z^ly*HQ$alQli~@Xtd#wB>_;;#caX%>9%LMD)gF-XjnMQh8qX1s))Mn4$H#bzT2#S3 zg@uM(NswhczJfU2(~{av_g&ql2l=yC)2yToUrM|q_ei|sLE4ib<9%Jz7wi7(4v?0$ zA~jydmE0eL6~y{uQml?N{c%{D{&iw9HWfmYWtp`YLuLu3x_b+2<;u-Q_Vm#h7#|8$@E(2Pg5 zJs$eDw}(4TEVn+C*d8(U>o!Z3KV9#Y_^5tY|Cvam{|+E+glfBg`YUR~@9@;avtk&V zu`|K3xeV#)&SM|9#lkVfNOPRjPt#W1ChO<2+hu)y4WxYqGOm-FUZ}@Q-Sl{AoN9ZV zj3-^3fePXb&WN`eSVMq%rBcp zs)e(BRlQYopCG&8Q1h8MmS+}%KcV}iJd0syo_~yh+;5AXhW2te#_=2~+dTY8yv@f$ zJ5feY(2bvEqczRaL;A>iJ_n@#-5~u}`Bx2df6)z6uLrqbcvSTheQTKKJ3j!2gq`t z?*4dq|{r}Fxj*%8B(tcG9~^VAZ;|rdd*k89Hfu!ApOrl zIrO_3q#aXjuP5tK)G5zsF+Ly1A+_)vZ3`oQ#;%GtQ`a{?^6?p9d%a@c_cqHt#fgda zrf)76#*{rXUTbq3y%W~}Xh$Ph`Fe$Yjdo_*o(muak;=N_8)MxOWqBF)xeOiIE3qaPV zRP|z%!}{z1X<0aLPi?OcA6|{FF3M z^`u|jS|s|%hB7|v#JnuCGV;?d0IALR^?U$hv+sBIgtp9zYrid~R+tzlPmO7>rg7e{ z+e#dZk;XE1fV8YTMBDw-pWVMNjsMcQ@iw7<{{yN1w`&^xJo}LNpMx~|-we`@skZy4 zKfC|=Y5ea`^6wj)>VK1_(a-f-|0zhL|J5MvfNHyc`m_5Fr}1CCf)p z(KxmLmCj47f9$?g|6T8wH2PVL{UKT=(&)bfNE@Nr?w|hb?cXVl|NTk+J|i@o_nXm!vL-d@M(6y?Y@f?RoaA(*Bo$Z2v7F%ROhEOy2~uU3aVg z8D#rsub1hKK!(!;WWHVS%l5CVeWxQxZLcTmaJu&Qq-p;xPbId0U`A^F_G%j38P5f! z{oh(B?Y|h)80QX9?pA?~`ht_S)8XOlKX<0`SLyy0T0sXc}mr&UJ`w%J!P_ zbUc0sX7as|8viCuV_EwbOZz_kg0$~zAj|2nM3&df%VhdA%tIfmLE87K?d{FDPj~${ zn5Ml;o{7iH{_eUhHQtGuM!&6drM(w|Y=iEY#ZXZ{elr|Z495-TH~GR5O{ot-7l zSGq`?dqCPvxK7LVyt3E2HdW7=dLGJ;a#>HuT~bey<(P%ykG*d?gYjj( z6x00UQ?Flc*EDPXN*yJ>B9MNDfGqQsPLiH~zUX<4;XneofG*A?3> zciQci8+nqqTe0V4SsJ+3X&T5FoFIL=R69U>-8mldo<6Qm4Hw4i?m|VpC^LC~Wu>Me z`zdREx2%5yK-T|7kiH+jN7AR>EBccAMSlizT)k>SO>;aPHA$vlG+CyPgAc~E2&8?k z+P=Q94WymUL_4)YJK4_*>A7&^Nj@hO93$-%0qyO;`ZH#-`E&7h2tYfKH@O{#X&NRQ z^P0(WUJJ7RCqR~Sesj?SLE0N50Zg-u z{^|RmtqvTsq7SClp&jnCV7( z@7Rgtg>%en)a%m3bnl{gyV7rXdTLDh8YlgJ|ER8dJt9Nt>U~I8dHlvrH~i{=&9+r$hTgX~ri_!(`L;==uIRhh_bI8KgD&Me5N8q|L*8^syPF z9aC+#uZ~ZQ*M8jLg0{?xv-J7IHjVgG+q4+x0@(*>y{?w!ydU{kMuDC$>;WdXC;jnx zBZuu9_LVXE^V-*7OuH8I+uP2CGVR)mk@d`dAs(j-IyfOU&cm99$){}el@f2sRkD8f z2WeYD`r5Agi0U;cgZ}n`w7Q6i+TL#&dqw@$pQeqs*~( zbhg7HkhV*;Js$cj>QK!nF7e=tw$*3FHdWfL{+_OY@)P6b)74?&jox#}0nW%_-0$ojh!q-_LQ|8GIg zmwTtA-vTnO?kJ!29t+ZzsJ6EQ>si!1+h|^18*NdDwkR+hzf?1yAwG_2_WDJZC)Ss~ z>6gEXV$+Z{yrdWIY@s4k&k6g25B2q+v8?z_HoJCG<971 zBPk|Fn)Q8{ZGG=PP}ZA&gN&m&rm>C#bUmJ?+8zh}%Jpu%C(L$Tz9-UWo6#rUA0Aj9 zZzqmHzGqY0X_Kbu?8g3)(mrc$mG;>L(tZFLU#?!ipMv?=ZmU7s0oC?+8JGP$mM=}a zmAn{_k;^iI`yrE;WwGAdKtGv!AH#m+V>|_VA4QKe_fgPay6f%p)5NhcDGqmt-Hp71N&GCEscFrMqKioe1nwd#z48vwqF18o8gydkib zf6g5s%cTWKdlIDI#j2-ZKDOIxkaj?|y&jC$-p{8)TV}<%#ug*TpU{fbex6}l@4M)F zKUCNIEy&NZj)1h5Y1VuCwZ{=k6G!Jzysa3AGff<$HI06L()%3qG>#IDW4OjKPqlr0 zqhGl`Ss&LYi*S9iR?79s-N<8Kz5(G0A(De0a~&O^L@kIA>(uH{5)v(G(q-vHBm8m;*M_2Q8V* z&wM;rK}#m5Go7@`wRBL+4=Jtm5(J}C1=uWSTJ_5R_H;Vq^?HXpAb=fR>71$Ni3$}=MgO@tuiJMUZi2)Xz5RmsK`umf~GKCAi;zOpY&OP*r0Pu8&kN$ug?9uj-R$K?=<6;dm_j zN%Vtg*q`$BzQS`rvwwkHKQprN+}|qm=?qVCb|v#YXYMm=828{8T8HZ`4YG{}M{!MN ze>J1VPQ2%AOO83M$yqgwjhv1$nAffo=4UU%Glz+3=s76UK$!;0G*D)8o{SdwuEqFD zcyF%5DC{3UF39p$^-wlB+tptz+n!J}S>}gB^&r!W>f_p3|2$u=H^;?esBMVNGIM!DEZva!K0T+NA7j1+UrE2a z0%^=|-+yFTMNYhv71!nPthf0LDSgD!_{e=d(MJsH7xxj**7ED8DWB!Y^D9|K0OxHF z<7d5x&aN{GvWxdB?cdoUa_`ZokMgI^tIf|LmJ~oi6rzXQZ~zwxrlS zw)W}xwY1OOY2s&D>3q1;_-L~+v3>mNW2KhAJWcs5Cr#bunV(YBeGlr6pBH7Db+_sK zhS^5LQapD!Fc0e#-e)*Vwl`%cll{nzeIuGjdG8A{K0FT6wt>u7(fjQJDCYw+r|e_1 zFJhH23g3ty*SMg)x1=6lt<*Hm{@ZUHMe!ZpzjXWqX(vGT$NDElw*guHK-J|agFY95 zv|Xz0{g*MG?tO9VFx@ixV);9h;`h%^jeonQao)@EUN~CIGiAHo4WtcKJqLMN_GXaw zn`(QUjH9CW#YNM^IR4Fe8*|?(yfHP#{5K@+;Q=yUEWSp@kDbWNcq(H$?E;Y69uIw1 z^d7eC7O8EP{Z>34uJggyQ;+)(Yub}NC7wfFh@J77||;-h;#bU#RcHxd>#O*IVhBkNu?^ zNE@fx-j0mxbnn|5jOpo~uNoXqY|p4(GjyAt;_;S2M`os;iz}WbX&tJ``q8$AtS_BG z+Fh#mV_ue9fc&%`Ahj8%o{wW3=6U8x@P+NsQfSMpn4Yr5#6Ia*o7yLbX&UGKRNoKQ z9BC|L07#pr+TI`O&pf}Q?+1&d@!#<6c$>IUj(2^k|CO3XKdbfqU|;I{!OAg>aV!F9 zyHwlbpx@;8gB?#3%hIG+{2NkZ*{*48@m?_65s>|V4$>LNW{`GFwLK2{w6}+|W$N;1 zvpKOnT-Yz-*yU!SY7;e$a<;x7>~(!VSa(cg9AiP+64mxN=(nQxgY`@kQ`i<0`-n4; z8q;V^yW2df!TYi^q~Dexo$(9@Y4cRu1<=O0Q~X3CS|!^O{A6X(R54u zpn0t3!+hAg{$ITxY~z;r@)(bKBPfgOt{Xqgicv1p>^8Bj^p9Ua*8eZnH@W2fVE2Hu znIN~%&#NBQPWET-0cn%l%YN>&AgxCSc|X_ykhTqE-3%NL@VN6bkoF_UiKsoRX1nuf_n?a8vgboLb4UmA#MY?sL( zZLMmvU$mF=?epRHpT74htTEOaF5~1CAp6X5)y1Wv9|Gxj$xWi|>*K*R_1ySwyq-NV zU+}5aG5fHlu^wASi2nm1{jb3^`r8N6>OL*ntf!9C^qcOTGrmK4M!#6%J7=gLJd9)K zt=yN*PI>1{!aO_@*LTh&rej^Om0jUGXIiC>PancByqeFyb1X1sq>cssG>wz@;C(Z+ zN_X`hw=Q~duP(bb=(%04`oN6PmQbH3zF6)v-`bxyH7_Mp~b27%g{RChxfwJYR;AQ zuPI3D4RYVeue!k#a^J;;Anjiu&nMlhy7iNCA7gKjmWlWEus&Pio9E?@fV8vVm)hPw z)7d`e`+uE@*GgQne;mT}Bj(()zh)h)h2M|Yb1wyK7u+cE25y%7YA4<*`i$Eo{@x(%I*=}>t1d)2^xF-jjZiS=<#POZ;qO*4bQpAF+B-Yf2t`gHP(-V3sgvL}kJ53)YpRhOU~)@L|Ko2S}d zAIAAlp5JVReChg|>!Wym*x!P4QtNYA)65|7=eH7BAL@6O^`Rw58wRpI(^WqSvOZf> zuR%HN8~Z?7-MOOe^SO#*VtqW1r`BhorkO$D&)q#G{xyB2KAS+=?;z{b z6z3ypB_QiFM0F|3VSQ$Uw5_V`^(1k$En`_Me~m5XR?yBnQul90YZ~WmqR)|) zAdO`V2Wj(EoBnmbhW_mSgK7Mid>n5x`gcrA^*>D0=;!N)q`x*t8vPFdY135O{nMY_ z|F$&#*ChEj%2WOK(=_^dR-flAL>m2f18L(_+x^p@-G3~N|B^^z{bN&8{davp(&*=U zt$!xc=)VI<8=>0npZ@IkU)4J+&GJw3@4r9Q|8`BIpZ)qg3DDpFoX2?Su1XA1MpkI4Cl%r%SO&7FA3>IN@r9DU5Tx#i{O0}+NSmkHj8~737|-85KQ$P6to4V> zi{~uN<@)b<%zXaIy(qPvXKEV#TlRxKw^T4i+Iu9(czaKkcE0oh(Uqo)egb4atMi~d z|J3$jnf@0@8w4MWX);LLpxVA%SckuR{>hI#>GtU|cg5=&K>5)zsr76(R?_HyR|{DV z$3QNh^IOV(>0Kc89FX>BD>-hcj%&@d3qYcMf?^I&Q{7HS&j-7rVu3Oyllm0}vpnhnyns}))`yb z?syyXc+`n!ddfgIewK~av_1O#&733Be_jS@O^(XA(gvh;M1Gb%9Hh-tZSVh#r=sU$ zj$<01kD*y@$npyRKla`{yvpkO``!ma2pJ$VIgAO&q^L2X;vB(&s%VU<;($hsiq_g= z#93=Zt<-9bs1?UX>Oie+BMxzxECmlAne|;0{w6+b12xOU#p*2mVUu|ZhiNuck%79z^CPPxu;KHc;`n4iul*2S(ou$~*xo-J9?$Sr>pZfAVw?uZ^a+bj!B?d>!^b z3Vfxf`x&qI#%aC2FX^lE0p9LgzkhsGlf~z@pv)bh^t;E?<+xWkW`Z)OdpfG8^!dJh z$;F%7zT|)jf9`zF>aAHXSUYz+D7m9n+kVg!LD8dMw0dt#Q1nbtF?pV+?*QfEV^2?f z$=uh0a(~IowjcBfQ1mz8PPi|9)#x3;ouT)9&FHH^?FYT!b)&n%U7@SqF!}|sUi6zr zKlHBc2Oa&M(Tl;|`2MA*tKYZ%pofE!{~J*G<6%$#c%AJBy#!P__zsl2V?VZVTnLK3 z8Z74f-JV_nYCq`Po*wjx?FStX%KZ+Y_7TqU^zoqf1zzmwC7|{L-skBj!Ew;la0}?0J-r;%e$Z}DzXfVP=y#qj{>=7+)`BwMw;yym z`A6pEA-4Yd(J;jZ`Z2LdA25YcC z6jXjY2^f;SsSu+MP>`y5BKRwko+ z7?T$db#;q|_UvJd(i_{uxQINWJ&afFV)<&9U2Q#g5vcG!UvKNR=j>+dw97!X*OO-0 z_hwM}>s3(ZJ8$3LzOzo`$$fLizOzxcTRpKYC^H|FyOQADv&cR5zFcg1hsD!jpv+G} zs#qVoSX2|c1-W8P1Tu+|_>VDWuJ$)mn^nA$E zt3b7k@$CxTg!#H-B_nPc>|A^UakChA@7!$ZaQ$yA9sZko=?wfX#IMYrx0(M{x10Zx zG5NgrN!{PryFY$l^MD5J@9Dsw!r1j=tILw0(mVyeS7_lqy2$d;tsvQ&aOgd$9eKyT zHhoR3!Pdl9!m|}7;wycG#kH0;|Et*G&yh55WPfNcYLCKyCDoiJNx(!q~ zZua!upvvWHPrnB${RaQb{KrAnOFMXaUr_TAKlb!_pymNOJiQ#ugMQxAZ-dGo_HIl* z@5T&qrFFLFH&&eMinZ64edon>g~?#=E&I?rJBr*oerw;;nmyX~v18sa;wD=eO_2^N zqg$O|{j&W)#mD#M!>TPUAC}!>`RM6e|NDGckKZsK9<ngRky4B88$i5bP<&h53 zOQzGOTjC45Px-AIjPKkVP0qET!hIhY)LZ?8Wlol`w0)Q!&na|O-&*FU$D5otL7Ay1 z`0&il9v<;88N-`MEk!QgRLGw3e3#ogAfYg|`7pKnFx3*453e_Vn-U(GJ;5OT`q6(` z7X9l#O4q+5qW|RMjQ=7~=0#5@`$-S+FBzWehNJh8Mtg}}x_5isyS(n*K0T74;@cf% z4|fDr4>y6q`b0nRu^~%*G<=*M zAMK=7n4SecHa$)TW&YynZrlX%o{>MrzrS)(y;a|G@%Ieb^O>=i_=WM%R!mfJl)Or zZ1E)C{nc%WEOOUp$W0t>b=&R7nB1$O13CEvblxcFzlcwNVOx?##+*;n!&Xb39Oi?k z&NMj*?6QSN{DSsc=R>0H^@3cNxUR_E%I_-p*AO>RxsvO~ zWyq|Kg!i{|O-}w1Cih5C^?!3HH=|sNe}Cbfo<(*`Dm}clMTYkh{SV%kZ`n)@?LryAeBM(0h%C!VDr+>nKT z)0Y`>20!J!^M7gKxFpKo*RSGZW0WDTxQTjCW0aveZm7&9c$`Fr$#2@-NU;o5`q4l&mF$Fx3{b^vNDVQ$qfBFBl^Eie8@~894arn`|zyJ z5+3o6jVk0kB0u7I6mdMNt}0cTEblJuDo$ukbZk=>*wZ+^k zFF6AbxA~^%+2`rrjr4hWuDRO)%Gmu`mE50I>INi?XLH2;x9}6+7Vkb*p6AM2hPZO_ zQ8{_1ybk?>x3MbHcyxLmw;gHzzXsL5jc7J{Dj3M$YB28{mAYZcU|iCWUu!z7@&2bD zW9}D&G9}~k-ME%vZgf)-Z$=in{MOu5PSX0}Zg(47BzBzbp7wGIjxv8AfeJ@@AHJZc z4?h{dGO1(D-Im9hKR4g#__RUXEl}Y~&^13{IyT^EVc^TT3EtmnpiIg5d^f(SgftuG zidu)HNV6{8=%>7N2L4)(Hh259c)dpF^}d4{2~&sH>*rpNzk)JHo#6EvH^2?%zF(d5 ztKOqmpB;W=-wy$0;@b`3e)j7L!*$$`aFq-4P=keIKK>R{WE4NiKhF-_hjTnBPY0I# zdHW~EcT&RmJ_RaWC!B2b8c=*Dw%U1@C7|eML75Lhxwm)vde831x6WfOs?3$7dUJxp z)aApJINkU>0m{U;MngojXbWr9XP~VROHScthr+)=%{Bw_|9|tx5iElBOaz2WE+Lg{m$EJ7j zp1pIc;T)&(^V~B{-gThlB+fGWEl?&~{+tf4Fn>0lVeW4OWn$Kz)_z|+PTtGnG4RBn zi_bPb6VEX{z5x{vr=4r`#h}K0w}P_250qK$zrPDAeg^*3+?RujpE^&^1QkC)yF)!( z+}d}(vjLqt&NKdRgED)aZ?x6_d9MBM#qM!_;d_r!x@33`+W# z`ma{j>OrMxGpM+01J_?^{?EF~;>Y$kY)1RADZHkTZzhs&EYD1a-#9VAJpFqVJcLz`4j;k@f^Suq`zXAVm<5zJImX-fq4Ci>;iIaSIhqN$iZuq0= zJMBI@$2R0oM&~?WbOosMY+HlUZ+B4V*XDWp6i{(?g{PN-GF_g29#qtP=4tn!oueBA zirIS8# z`)g~edB1vXfg8CZpL<(|aK}a-duoc^v{%siKk9qIiSLf@j_)qxyXV!#yua~U53jZG zT41~q$zr#J-@YL)zB|4BE$}-jyihu@W9yH@W)_ z^S|qxUS2=$Q{Me!xKldLCfqW;^Ygs#9?s9_#a!MD)p;?O55_m64@_GVw91kD@vDB& z8*cZm@x2U`*;stlNBnK}p80zl4EzQ4{0PdcfAhD&!aE;73a@nU&bKm=0(bbz{9Om? zTmA;4M}f-6JA<;f_M*!x@cdf7XOAxXs$Tfa(~f+scpc;O^Om6Mm27?GIX=vMc6+Qh{*Qt(LA%4< zgk_O?vBGt~HvB1E-9CKkCnVoC|HIxf|D!>!F9U=0p_vMpW z(!Za4^54X(bjpnHOjJ(@wK$GP7A zm!R7FJ3akpQ2FmwPk#*30=s;l?$-W=V|cyHV&x=3_!r{th<}^B7eJYkaolOwGKsbS ziPUw~F0AV`j$DEt>7F9r{o-@;_ZTR%%F~(Uxy#FW;AwNeJ$+=ELqYL65mY@g@I z*VYY-_njNWui{woFF&(#TU|XEnhyHMvplhSiShdil-c@PlXnv+9^ZgU*UIZGza9sQ z=bP{d%6nv9NwQ1EGS|{l=|(nHFh(e+-Bw@6beqn1>E1v+D{S_t@GEZ!t3NY+W`Z(j zfs)q+%FQdF^x7_E_BA`_xSf6ft>cnn_cXs{7ucLtI*qoz9~ZTc4Iko$w~TPZo4CK0 z_sNGdo-9UR&5s826|2(cdYcJ@^w3XwNVjE!)8p6urFTAi%t8y#?x4)0p!~L6VEX?N zR6ITfDxPaDH2YoQA^y?zc*(Z@;1D;A{;2wc!CtMkHV;{k-=p~z=d}j&km)p1aHln~ zsC~(pA(V{~HZPOn4!i{K_BL30EkfRl?WX?*Q0D3@OuwfOZZ4 zf7t&%>#v?q*MINd&F=NT!=vVZ&&Ry~o_UjuH&VRp$@qN`eWPL18^;QR!W!Tfy<@n_ z8;$=gP<~DT<>nWl;`h&M+fAQ~K=Ho~)VCF&^!b;kM=mqD``&5aUk2s=J1{606?v|L@>an*VMWtmS5a4D z`+CTK#lJ6h+w;3W-|}gcwmlESdiuk`d>^`twWH3FDF(a9XR>=2lsWrK)8k4|_K$%w zB_lLm8snnlCGqU=Jd3G=Wl~>S8oBlR2H`9Q6^?39<+B!4`K$-kZa083wfI+i)eI{C zCw!eQdzpscm_C<-GVg+F*9YBd?OG`)xGf>${C<9$@re}- z(teQ?I}w@()KYKkljru~owGezXBoPJJp#ns zTf5iouU?NoWYI%>`s?3x{LuP0%G-)ZVRB6Naas8N|0F*9KNhd+|6}FO#?w{4z3&~r ztVD0s#czFU?&HC2z2uwH99O!W*^@+GL(R;5H*;;C+io@MA}jJ;0rP!1l!MvrUY}|1N|7fME68yL(}uW$y1~hsl3d`VEyqxZ!p4_R>?X-4~+m1T0j(oOx z6S}R>af4Q{-*i@qdz0VpCE`yViM_+E<6BT?;@;st>dw-uH+;+HSp0qB!#}RkhfDLA zjf1*_c}%Sd!@C^b!&Wed0N+9IZT?}2yM*7$Kt7|M9{K3vWv96rG{6m7o9h}5EOF=a zs~u$P&*?O+c7_{251I^g5fA1{yP8YfYy6r@3A^qvUeDdkO?iRcr`R{kp7fEMD4pg{ zEhGNIx!35olCog^IoPYwe2C@gcJjc;!+ky+OBs%B=D347p|Vp=CaT%H(CxiqGI2H0 zjaWO0yQ-PDXZ}8CS}hk>l(@0{)_J|6bbJhRV~cG+`66WPjovCl-N;)x*W|qe$}T>I zd$3uT9J)Ner}wLJ(}}-By}u5hS2Z7at=IQ0Q29LH^NA@Qr^Q%z$zyGtb?9jYZfK+N zRQt8Yhq>AFI`uH0FNQI%OFR!_FICW=57Hx-b0sBi(_>0pvdrQ=O2hibI-+?wHejA;tVU%HQa5W3~N6#UAMEpb!JJf_+Uq z^40xbZYU>||J|9sUOmhBYzvCd8J_;Nr)_^q8Eb6p1tCloglWhs+nU z40e^G`K?7lJbJF*&XzjqfT!e5VRlFbLYBme(vQ2 z<)Jq%X7NqtH@`4{QN9Vjt@iw)_DisryspPAT-~5_OM=S7DNtiUw_>&%v#7-8y~g`; zNS{dUMHf86cBc6Wi(j=j2YhULoC}KQ#8155lX6`Zb$n2VEYAsetb<3`<}mP+L>I0> z>1|M%T5o^lUya{0pmh8gl#Zogd}Z_li;w8bTf9E_o9UPHl=0gSl!@1B-gIOzH&jYn z5R6Ev!xh%)@LG%;#hLPgupU(SYMI*(ldcOl|d>wn#^e+K5 z&fWzS-=IIp9750^JUGW4%>2Qi1%qAJ7bWfmer}{MD-k*#qz(JyecCjmZ??1%|7cnv z)_wIy)32t};^RP2dY%g^95;aSS27}(egp4AG+G<1x_A+C^eyS@mXxn+oXJAIf|HivK|BoxuO}0`@uG%G~EI%rD;%Su62#Yw&ylMdY^OaZCGVFi3Nc z36E`{bZ!TwbBD)nP;(wK^w>Gf-%HC~(z{bzE;@?Z%aG!`o#tZS0JKb|JMqT`~Xbr;tnEMcBzKnRTw)6Rf6u&jIWCh2~FL?6yX}+{xr#X7M&2l$qh_>R(#C zUIHrr{MOSqU2gd(1xklc+bvyJUt#H*zu3}se^6n%3RGBjxzgxAfuhG;m-OHBmXx?6?9T+{{#sDyI)`0r^fsX4c&F=) zJ_;;_UIUiN{s!aM2uhEyLAf7%BYTg)EkMyfARd(#zXfGp_H;1+(`x4!){wV!m; zMD|tiDvISjcVzEAn>O-{OgpG}R5=!^&K2q%L172>3U9)@f9EEP_f39n=`s^kxxN@w z{44_%f8C(U*LqO?b>GW`X*HZ%9pT^F?VaP8j9!o8R_^M(oCdE?R4;w6_22I&UZmd! zQ2C<@y`)DyC_P$0xwm^)r$@@6&G)GuZa}W?hLXGR9qxAO+aTPa_;&jGx65NUsPHv| z3ZG1fk}o4vnNu0nPw6V2?bYe?Z3%eH!ai!&-D7%heXr%mBSHDS3Y0#-xX^a7g{K2lIC35|dLpR&b`dDP*Ms{0dr)EO z_H=X~x#BapKY8(pR8_LFyS%G3QPNx-^f}JpoAgnV~F(@8miAR~}{HS!WIV}3i%omh1cHu3fL@=IjWG0x^&>GE)F}E>@ z`GV9f?8Cmb#BDN8Z6vXVz2*_3_VG@>U13PC&lGoFdN_!%P1k3(EY; z(>DLX+edy3wGw|aga2agcK~H(dpcgr+y~>!=sRU9Ns^hu?>yW}PB&w1VbYf)(K0vQ zYZh#y)Pl-S^`P7rgKBrw|H+2p7d6+sW8qi{D*sGeYvE`BmET_gRsKE&#jpHb%hyvt z(ffm{x6knOU7+gw^`)<`>l@Pwd2Ivu>^cS{4>mHX*?_U08DqgkpI22U;pAIVB9|M){ z?|`aDs$a8uyC!q*AL!7o9*UpMq^`(6i*hQ15b`*ClBO5gth z#nLUAOws>=U5M_2r)aJt+TAfzs)9Z*Tj9$Fe_o4Euve2m1$lc3k^@ z%l(Aq4#~h&qmzvCp^VCrOvy6SbHg1br|@^aJ^*Fj_`S)U{Rg9)LGjbRL+x3})?Z2@ zcPW15E`=On5>z-keVT6d594#lOUCzHP~YDH6;EGzdfF@I?kG^-TRp9H{_ zF=yV~UE(_UZJ2E1zcf0Si)Eep{StQwzwmr;l(u?s`*gj@ebT!Yy_XY6>5=g9)CMZt z9Uj{wh;@&tdCc_R9h6xI%3pki#piCI^5{HJ_CJ2Y%EMw%^uJe{zdFX{l7A2w_}84a zAJ@%6zee23EdJEo{SK6gXPH-M^X|p3lX_aFv%}oK0m@$I=i)k-6q(mrhQGgF;=gmg zCga`2pkLIDo6ty4{qEm1z5mn3I5_P8Y}RJ{nn9VP&Nup2KUR+Rcf`BDvx6J5$gSNh zU2YdVX9ZH|e_Ukpo{!4$>%Zc)v2%LW^Q`aJiQfqejn6$7n%=>>@q%2}{qGX@IlqR< zT7#kF^s%GQ8Fl05`IBE$Ut_=F0^73`rAw;wdDnFq^YMkQs4@KvRC9~z`4ZjK;`##P=0Lw)cUUB{As5TOM-JnGHQ#j9AfSt0mUyqnf!@v;oG7r zr)#`!^7FtZ=Kg(9?zf&`@{a^1|8%fF`R*8>zJ%{r!_3_?pvlafR+cnC-N)&g+Ff@q2m+s-2~3;RWt9; zJDI7%WPW#Em#tYec-`C4UHl|FM8$)CN(W)X7U|`q0Y726+$q=eIRKRD2Ic4LJhPwX z(_ufKF6ZG_e52)6y4d}dCFsgKtC4fsnjbsE>ni>-&6KB5SJ6>jzsb?ik9)KR1Dj{|7z2*3)gokG@~#cn_lIvVtLw*iU#Rb z@AXQd$45RMzpeK1P{vg>AB)gcUz^|hkcl>OWjudf_H0W*EBewx5aLQ51YP6>Eei= zlE}JAw~xg!W7I zR%TsLeVoPPYulQ?tEQX3;G8|{!o~DMf^+uTi{Rt2n)<(yU#ia1G)hOqISbwjUmM}u zc6;N$Hz;$Mr)~dG`kH$?-+s++&eq01N=Nn^HP>jrk#u68NlN_qE%JV%w5>yMZ#rwW zYOn4`uSRr`ZXM_*(+Mix)s_nDL7AC5TDdwA4BAgn{^C<}S(B-BL%*<7ui~48?^*cK zcjx_Qt{44ZPlxgH|6`E9!ZH2-Y1CYS@_Z;KzO&UcJA-PEe*!9hUkPdq|2U}e_y?fI z<0E(BtOvL&sQHSMLCv>Z4Qf8=Nl^1GAAy>08NF+%D*|@|HQ#aysQII7K+Pxp4O9>Q z6Hqn6*!t37zGWt;`Il2c&AVI+YQE)ZQ1dLGftqKj*^PY?;2xmnkxmCS-*P>u`J`vS z(ctHx=3B@D{{$yM51VQ3M}ZTe zxApW)a1!)fPoDrzhQ83#SAbKXf9L7@!A+r8dHPLoGw829ox6Lfn+jbG%4`m94({dY zCU6VrlRSMkxFz(}o?Z&pLO<;3zkyppzvJl?SO=ZIhw&c{ZVkPar*{E$&+!~j9|LX! zeYU4>1h<90+tV+C+d+Ti>7qSLgTCz~P-YsqJ-DBz4+D3AKGo9;!5yJ*@bqs%-EaMv zr@O(Op+EHWSD@~JpC#71L(XT82<`T{oE}*y%V?( z^g*6J8q^Hcxt_iRRLgXWr|$yygMQl6Yry@Xzwq>TU;}jJ-X?E6cmVY7o<0g}ggyy8 z5WL3Q+rAUd4bi@-ZOfbA+qP-`QEgn8Z!?Rzo9ph`#{Zw7>XS|Pvvx8zc%U0RPdgkb zv)dNBZCUr&jQy0=?76I1o$KHkP`d@|(V+wfW6yG&M@N2NORIKRx>}BklrO zGrX+L^4(_4qg3Osf_`W|`3%w(tM@K1nV8?PD7(9!~>h?gQ07 zdEV0}AYW;59VioyV-roK?pA)`*^YFY6q?38aS=Dcemc$~WZtW|!RyrajP-{OJHq6( zf--A79gp;HtIwJ1zBtI-W!s-Ii|^7o>BE`w`N$#T_#ayM&Igr`vfVq8@cyg4PPL%o zq#l%?X7C5dm)%jI?7Bd;Z{a*q>PXs~X6p7l+p8O;^%hF$s`Qy$m4PM5JpmrlUF*rh zaGhK0E`biLlL$pe&Hk+xUvofx-}MyJ>p)QSJ)rbk1FHSqbb;B=1tsS~PuslBFy;q) z_a1in_z1`G4U8NAd6fAZIM3v635w6*pyXZPY1_xxdk5$`c*)#K+{pdipv+UAj#t>8 zUhSb%y%sNvxtyi8r&M&w2<_t?raiGizSh`U*jqiJh8sC3|G8Z3awB47_d_@yw z1OL(SvHVZ>{@++=?tgos`Op8E(RH9qd|{DW$e41$+9G%2ilJ^EXCU+6)^27yqbj}U z;LgUo!~4twNLDklPCv)^o^r17t@)|Zr=Mr>x4g}0<5QNVZy4r9@VS4!xqBXzDLKje z)4fXl+{4m|zgg#-yI+Db-*`Gbp14OlGLInL*Wg#_7UqR0iqC^*7~d&p8sCpVxxel# z3)dEB8~sC2lXKkU1-UM_j=K?pxp4Y* z(^%_TW$npi{LjO^+;)WJn07=aN!eN9)Ad82u5&N;`4*I3cY!iDEi!q!3u9DE8T*0L zVQS?Ys8)O?(}+hfeL$c?6}>} zjc*qyeLn+LzAG;=`>CLKGp_`kK*{{V+eh}CH`kQq zy0QhFKcha^e)EPKO5FwgI%Zhg8l~e^gWQlu!`t-z-f;K^_2k+@*L_u~JL~FFw&pTd(Ninyj~gM7`$iiW(^|&Z%o$h~?7T?{M zSUepJ$}9zyU+x6O_jOR=an~9>3RHONJ^c`<@!xBp#(z22nY%qejRSuI=7B%=_MM={ zgRg+}oZO)6&Hc-u#)UERAH6nL3o0Hm({29uq}xpLnDjpclsOAjIBxQENfGVPJn|xS zU^~1dqno&XOM^{}Kc|@tZm&~cw2FJ$=sYT1SZ5?dt7HZnk)z2+GuhL41Oe^CM8a7lKOfUxU&mx~_0PVbVT@ z>IIw9Mo)3WV%*)u;6i0P$v55IB|oYMh4r9hv{BzmhW6|zJleA(S+$_T65X?-yph+fO0dr!}4JRDEeqn`S21?-w#TcRiJc<$C<~Z@1*-;)EB6i z-R6V1gJ(0&Cr@?*e0Yl6xckS4r;Rw2X$Qrl15|iAL4~Ial#B$Z@YK?d3DwR>C$05& z|Hk6i-D3Lh1nS%IpwjCJP(0$)*Aux1pz@3K^#R54baV>m7sL8fV=) zp}WlQnRHlZhPdK(i@zkOu;(tb^k@PV2UmK!?za}sBS6K$X`svlpz_r#p3c3)!ao9( z*%MSe%mbBvSAnWWIziPR{|04t{+-n$hk-I@gGJy~U=V+i{%Jk-b|2KC(R~@LQdpjC zCO#h}F!I+yTFKmZtMR$)Hse2t@CJOxFh?CjN9)xFJd}UVz)wxy0GHRo{)T%QQ{0EY zy{(;%(pGM`_ioyzY2{`SI)vp$RQy)l@58fA0qZN1+<5NO8_RuqWwB}to6rB9==E>h2lCh>BdmSS z^r{D?S2HNR5}s}VL-XAqP0oXz7LV&dg=z3zmVdql<#*z8)As^UVfh0nceC#{|BFG% z>hScPp0++^8GTB^<@=Ot&{^X%nSXlsdH0z7!$5^0R>1o~b$*u47NO(ZWmE8WaMwUEpQ8Lna@jf2mLl4)p)Q4-rN1wA z7kd9u+VbEe^58`B;JBW;d)EJEc*8uXa4&zx!u>X=a2Gyn`ELtQ;a5MmBsSg!Jx;&R zClQtJ>wLw#@`2)A>92TKeo?%u?NGeSDBfjOJ!R=U{%OlUCxX&z5hy*b2W1`v13k7J z%>LIcxId3`tOhE;GWk_qw!sT~scmi^`>RQMr^ZDwi@UmonNHClj_`sc!aA z{>|iH1xl|@Pwq>60haHp9K}%Pg>4ALYdarg1unP_;1CX+^An66UMJ_ z*$U(LcToHWJ#O@Yp!7c7(+59caxMa8;+yL&lwq8?WNnoFB;ojW5%Tut`|3B%{l7t( z-IGQqK$+MMd2WaG1#TPW7I_CEnbXA@c(7K=e51~D<8I0 zJw=J!=D^=t?!aWtwe96ncOSo|z#q8`dzWD!59;tZb$AtZ_;BiQ-#&$PIAK_bj*7D+ zc{gg*Cy@!;_mB?Vv_5a)d=-@0Yn8?0(V)zb7p(rC0Lt6|sw}+j=~Gsl|64(syFLAg zr{kLsc4HTeVw^aVx~QtBE?R@m%W*HA!}Lv1eq_SEi^b3?fA!v8-}d>d$vX&?xfoPF zxYpAzg31T~0>!(!%kgmZ|1v23H+cGxM@|1@K$%uhad3sFV|h6)uhC|? zOmEH?JXh)t>So;ED7^_iOi)SDA~+V=*+7WTQ+cao|1b^L$R-l%>} z`ZV1BNz-!$DE(gm_5D3i_3!YN_C4GEqGzB-9c~oPZeIr%{@KDm4V3*sp0<0~%P8mc zF&7U@6(#MK6peQ~;3Kz5&!d+9+F!iC@qe*=G#!*F3HF0<7KM4%Z2Li0!b|2CzP-L3 zlsS#OBpI)RGBM5fw^G;n{gVmG(WU&t{gdgm@*e9A5jQ>a&W(0{KIOyE>EpEXsX7b+zWrkDFE8lDnO0VeNv8oHL?v}fK-?Z;@L78m(YwL0U!9zY=rOf@)7L?K! zl(yQ<3h^mg7deZ$orFt!@r1IXK3IZ`9iOQE*YQ|zOI>&GO~m@%NrN8CVSWOIYbNBm z2@BA_g?B5O22$4#aP6O$y2HOTjs|d3%Da`L#ca& z-y-?nq|j}`{P)5NVCI9nt)gT5|xR|Rrdu$c{*xfPa_`1Ux#2`M3(5*7ZRj$7)mbYSgtn-^vcQxnX%MZ5l8KvV}6>(4DR&H!l zEqQxOH#Ro8_pXYB#cwSc!Q9p0t{Qh^aaYyHT_@32Q^uSQbDz3*E3tE#yOUoq@40EN z+jKQ!{}pxzhwKOJQs$NgIuX}=b9_s;XTB`W9ckm;g?D$Q$v}P@O@imJc-}UnjQs^= zK7BK2l^^EGyJwcUb^L5^8X2XJ9pk)+n^+ZhvD3e(qTf+9ZE#v#=#JG1)2L4?W;p~+R=17`o>W=zRu`gR_6BjZCOv95vBcEx|E%z<8GFAiWn91a@28&NtbU7IM=|Gn)Vp2ajO=822udmul|NO`mVH5mC9iCvI)N zt0ex5=>H8`F~l`rU*=l*?LNrX6r*&kXs|1qK|imjq!7o_9eIOR6uIVKl)1C{)gNlQ zN9owOLN|^z>`L0dl4*smq>fsq+ul8jjV^Sf13e14zZy4nrK#fXpoi+2)_m<{ThsDY{>##6AmkyG>_6^LiH9KqPhj1R9 zyUw2=-47#$%H`uGHXvMcdwMWCVq#9JX$jC7-vS@#PSAd{zmJZ!C2PHFFlYKsZ;oMh)DI-(X`$FK)-f!<%D9cvoks$VU0d-5xs zYjGN-V?zgMpLBE04Bn4l&w2H=F}KO;0dDMyfv%i9Q^OGG%TJLb; zcNl)O=d-=L%>9aAP-h0^G3F}aRib;!;H__e<#(ayl}Sha>s^XX=m(c`$42jppUnv* zp6ES;r#tA?-w3gpzOT&XpOgjm)t}L>K%WH4-N&H%G5IN@Ye1R)-cMVCtkB4xer-pj zpBE@b<}B}MzmJUXuR)o-kBx4?jr_(l_SuWS#$F>^hSR6vyc&Ip9P*v!m)(;#UKF4D zFO1KPpp1|pu%?n803rKJ%=p!M550n$Qio9+}{Vv^!FZK@yfpWwf3m={F)#yYF$d^ z(0?1>TR@qd|1tW;Fu&S+KDK8B-WG3mC$zmiVR>~r-xlLvVG7HlF#lWQ*99t^Z+ZGl zP^LeA9iHDS-TCKQ{_Z*Y!h_4*NBrg- zZS6=J9rQVexQ4uPcRs(cuN9?(y%6-v;OXZGShE~b?taAYPVw~p8_{R;yWh*nq@#W| z_O3|PQ(59Gj1R&X#-rk6YN3Vylp;$Pd%vEykYd&8cZ)PwKCg%O7oLaii54&2554J7 z<8x}U<*O?}eY*t=%6C8KMCZdVG;*h3vL(H|c1FtUZTZIc6HsRR0;6BgQeMS7jN9g_ za(6nv@El!~4#plWg^WAwJ*lcjyWucass8j(`msf>vXOpla%i{uvHjJZoj%^B*L4-9 z*N{qI&NlD=U7$4)f33JzylsW9GX34R?4Ir$Z&k;p$6G2AZ-Vhp{(^Jp!_&`mv(6Um|H0oKIFetz%Ox{#toc8u+WZG^8`0N{Phh?*9YIY^=VSCyALq=%iPQSe4)AM^Gk`G60ZG2lm znI}AbW0rg<-tox;xM$Yhd+df*yanOt2eb8cBxm{#Cigf{{j&b@LDjRp`9SG^`i|yr z+)h5egSS7^-w&OGpD;bg?riSQ24%kQy}=IrF2$X~)b8gnJ3+;x<}~lv#o~X;uEwvT z-sl!^0B&CL^n0MpR=b&et0So&nFsK7WH8q6uU}K&ZT*t`J|^e)-q+j*?E&NHF6aYim-}=1E{*Q*J?E-3Ep~+Yy91PoZJz5kXI>!R_YtG{bn*-4PrAviu)lhu z^eE%I8@RE2oPej&^Za?{en5+r$MK-}Zv)DIPd^8G9l!8yljaEBUtM%RGQzP-sCTx0 zzP{aXjLH4rSd*K7oYA8|)e~9+9^W*QIq?y}xV(4At+g*nA4j)(e<#lO=@DtSX07gx z|3~?*aDEO3@f2~_9&xwycysqWnCWg!#NEOZ%-vmJ;4Vu&Tm53M{Ga^D+&>MJDxe2<9}EE?r&^ z`BONAVc7}k@58A3+mI_Bv(KjQh{uya(QTl@7nbu*=#$T3te9_O(kPwn&HHue85;4? zZ&qu1UEe^s!+!kHXPDfxunXcfGF}j`_;}umWL|nK`z5qiUy#%r8N@H^zqK#<{y6V= z$)tS#2?+m3VNyO)nuqyH`9yg{^44bP)(#KNF`jU)>2(t*cSC+^`RjO4ycU5P$G->4 zJcqxaA13|%y*|>fzcJh#zA2wbKlvACtHYz;LwEl>c*}Vft~1+wKJKS|UxI#W4~|%9 z?q3CE!hBJGLAh(@XLA+AC~Z}`olB$p>!&4=qx$Bdi%ib4pP62N0~PjHL7D#Qt66J$ z`?qrU-^5pR9CZF7le5>)Ej{~7uSLjFd<6U>V~tFCXI*0a+%LS|k#?jT9!hhWReYD< z*rh%lHZpFndbzjX@;BVe-+Px?ejNNuqvK#uej@Vb<1dugc)7Vd9}L`WWFD;3%aa`G z`u_?>;!HeS+D)Imui%YBXuA(>cKZ0)?~~ksK8<8C=~4ZnmGxRs;b;K)n6~rfZ|{A z8w<~wpy&-?KKPScj2?Zf@xKDp_nvpOy68#LHr8+t)~2kDj$F;%-a4N#jXSt*XAX~F z^XYzlDMAPH)2$V$vSdlOy;fBa+>2KIO5b|88~^pl3{3}d6RxMsSz>zK0m@u|tnY;jpX^y#Wbb=My6grod)BW^&Xu4{+cidC){k8A4&*NG8|Fk7xhpc{IxqMA zD^1RJSDD=BK;@U6`;jZ&C6kM|Q)VoCh{gnS*=4jxy{8qdO&)Mq zK6isM3;tkqGvBl2EAj46Zt<&q^Ykqla=R(llDp`4CTATev(24G7xyDqytC~Uo{qiZ zvjcxJC){g%o(5&sc{(iGsx z#@=uDZ;{v9SZCSy@Rh%7{$l)&`>XM@w`_*72Y4uZfP3E8N-E!N@L}#E%pY`_zwwWl z{Ifyn8}tKsGc5(Z!=vSHNqDzZgtoCc`@`5vpnDxPHV@8dG6x=>(M*0>?#8Sy?|Bm_ zN`K!Nullv#_U&IAOs|K(_VKil_akQEFPs}qtg&=epFk!PCwyl7w)(>2ZGTXv8B}}o zQ%_$GDnEC6+Qx5N@&4}AU|*5?@CoEL;z;qAc**1zd-)HpGyPu%Wj+DLZ^j2k{~DA( zJ8!uw^~JV**6WwRf2rqR?fKSwtOeChc5ZF$WCtiS??dDJ6Hw+uP;$Qn<$nA}W`7PS z`WjH-UJa_99r%g)kLg{ymLfO0iG4Zj#~IxiPYq92B;q>_b6cD-)NML{80Wh-<;~RU ztZ(IXq5CTMDU8W5ZqBqiLT5%LTjvX!-!*+wp!D4RJ=1FuD82T3-{|dqJO*oG)9j6< z_%`gLjb*=kdL8mV4C8K&#Z3osCK<^Zlb<@o;;xgoFeR&-@4}FFFQ?PB8Fa_E*}<8v z2IfJd{yO2KyMpvxYw*qZD;CXu<4kv2&F%7XLli&V6(l|ZqMuNCOm_vzegr7~AwS5# z%>B;d^L9|*zT@^G^>_Ysrs=xcKrBV&K`Afr#ptq8*O2B`J^(!oYQ z1Iqu&dAw}~z5*(2Lx)rZVY?jEJxDi)biTR26;v2M2XzlpMS-zE~*H^I04jsNLzdQ0Z@AU3sl}3G1T}>2CJ~&1=RQbLEWEpil;9DmA{vH`T9fI7=>FbkD}LSDwl5yH^ytssbnkAacNd)( zZ04KBC^A?6kCn^ipiI==qKLag|6}gX1Os=$yhbH^WJt%z9+^(>=ZJrs`%6F>D_?%i zS?534Kc;=1N%;MTU-d%kS43%BL)f0R-`Yt3srM|>8f3Nlve@kF0_A0u#WqlNK|82) z>+rPlwoLQOrr&v>%s)W+8}f?P3!i}Uch;*`e-*!G^uD0@o(wAgpZ>bhtKTsH$GmBL zuK@M^Mo{i+M&`30l6}n!cuTQ`@Hg4sX19j7q50X~W*kQ7IQ7wp*bcpOV$Hqxj=MKF zo9V+|OW0&oXDbZ#VOTvK*5M7_o$#h-E!@w8%I}{(XY>x;7LF4^>3ub*c=)}i=Ra@X z+d<{~2SJ(ZUa;`~8I(zaDhIo*Hu~ciP0r+h7#$zaIm1=ybBdD*(+T*IKF;f^`}Jko z|8D+vc*f*6fiku~U=n#`RMtGw0MD?!==OcH;xqfU7Yd`!&&cSz(oXG(!l3pCWRsD=|AM7_78qoj2ZWGxBdqs<#=vntxxSc|GtA_;iG1xW84qfy;N~ihZ zyX5rng^tRO&bOxCpX>frtJZ}2cN6V*tR>zjr}dxI@2y&Aef?C@;<)-Pi*wBzDlL-O zE3Rs>7cKjDR~g^&FH{8aT?Z<@?*`>|!fIEoyq`7%k5#XioyIln0$L4|Y3SflGe#qVC8UJNQN)_OWVO7A)NIdtV&#z>0e z`;jMq`YBz+Gr1@|j=SFIoe%lV&c=5QD7U-qVsdW=RX=utO3#vAO|S3pE51Q``1xPS z49;0{?zyNnSZUELPqW4XNxtoXd+A>Mn$K_G_!^UUFsN@earP;&r(19J7P4nucey1x zD%@%OcDk5z2SHj63Fr^8Yx}vC9et0|Q9pJU1n>TmraHGm6mhPJJ>S|7&p2&ZV?m;) zU2n`yl(462G~>j~d&l!Wu=3L8)4m=2Lzn6OB`9;!BSzl<2KhD1J^!`vDH)sR#&R}m z`hQh zDo!WkC%A)Id$OD84^hs(<`4VJk3{XYc07K;XwC`sJukY9a6Jg0Xt+AI zusWfgJx0pssSo#cYyN2ZKXjLc?;B9xE?aK()7zlv$L}_G`S)13e*(%r$iGd)39s(_ zwRT$=GS5Df3lUpEuZ?NcD#nKU+Lx{t^$H9?L<6E9cKb7cYmg z?8KI8-Xk2#I;KAZ(Z#%umov-DkxmM~jPjYntn?6XrNeeNnEZ;HOx~fO7}|$dYyH<$+-`diQQrK+dNQi)`IHK?D#vQp9W>h z?lgTDfC}TkK!s=a?~N|`gYmU{`wE%=DbTsegv#_1bXM3B)E77W)!aE>Us#`kwrS4_ zcQe0mFKmruiW-7?csdry_7ZN47j-@r_sZTc?&W!8go*Sep@LmQ}g$wxQYSAnAM0VO9}e_$PY zghqb!yY%w(wyGLEw1zs%_Xo}dW%kBi?xXzz@w5KsSo%GcY5g9R<>HTe_iTmpUtxH| zy|=QL-m+I7lD*8)Kece=pJ(z<1SS6~Q2An?HlyDG72em*xA5<>(DKM81x7Cg zgLq**eDbtv(keQ~-dnFvkLav?EYnPWnsTA}Z~vL;^9(3`$}TqgXi)rr_H(0S7w5T) z7YuRd@y2Vu`Z=`S8++%w8M!ivUm2hKL7C?~U86BD?Wo%6F6z2Z`7PVZ`e0Go-o4B6 z-U<8I1NIj^y>+skNDi3s58@53!?L-gW#L{~wP;Od5<&)b%)gLkD-nOC7SwUP^ z5H}T^-K?l9N!q=zB`({&u`dEob09yo;-Yye-oSDowgTm9NfoeVRZk zzO`3JY0}kY?(cls^8Z19xAeIhRQgPO#?og#DEI#Xl}?S%8eP=w^&3NcERLM~V^6dC zH?wdXyp6;fWxOfD2N5T`fWwjMnwwf8=t867em6bM7Wvd;O z>F}ukFMid+bK&b2?%#n5XE!JwuY=<8At)XL->~wv4XE<=BB=O?2mQP;^fO1(&y2jM z=j(#`=z9n5<+jtyZ+P4EY4g|##y>DUT0rTs#M6&|X!`sMl)3#Q(`$#1jlKm8^a$SJ zDrf$;tY;oi@zsv}dH9o?ByxW7iMb#CsrmmC82BgdH(T&M?-6DROP3E*eUXJJ#FV$M z_F=r>Et9tnRQN`|ZS)FI@qNHMMt=w@-iNI<`oecD{_g>0=D%m@umqIJA#ZIg{K-i8 zi{G*NpL(z?W&REUWiIvfcAuMmFMt8x?F!r!?wjjxJ~Qvr-ucW<+Etk@-|nV7EmWA? z>y{sDLD53xrFu|vjtP(&#&vjFsP97EDcA{WttJT;fyK;Sh!*O*uo$cbwMNtFu>sWD zOajzwVLLc(qJ{edQ0ejfB#ZZ3CtG}9G{y4yQ=oL(byK6S21VCRwe_MiLFw{^r}y35 z=m}fey2<6BByC!2@!14Q$6%g<{zPz&u7W%7HQt`aJq$mnaGUe%xX$W}G&-0wVXS>? zg{!`;!p>34ZUN`zpl9-1?fqraef-d8NbN&^fM0MPJK#Myphxe^n$q>Y{h*&9dNRLS z*`a$TEgn67_}+&vvZ`Av+`jzm&Iy-B_ui2`jCP~%9oe<6^nvuwQ^OY(?jU}_SvG}>coqF)ekmV@Ogic(dN=+YWXrVIo4oia?uA)ub#WWt z_71)>U&JDrbi4$VDJR2;?(f{#GS63TmH+g+|AzFjQakIZ;eOK#OD)_FfHEV?jJ_8) z@*5pDiFbc;yR*oxy)j*GS48gAa+7l^D6^)*=y$Wo74QD`z--7OcUgwq6g+1IQdobi zG&!}e`0!=y;}XB%&GFX0Z;n@gX8A>|lm^)_sE_y%Vx~LQM=~KA)tgrL+|(M>+p4?O z4^hUh<>46&aczcpq_9m?d$o4<}~aSKlPyn_hlbQ;)eLZhCJy!s_e4fill~dg@54 zzxM$Z|F?lMe}tFhM8hE+YWB%<`>f7!doEy45BIs~{-G3p#*AVOs8IDBsl#{2xA5+u z^zWo&#C=TnCpFr;_py=egKQk0sBEsNjZMj={p>vtWBo#6cs+F?zo707?jKa$MLmh# zR{WN9`1*J4kbs_r-JP-{Ec)I{6FTbXG=B;>ZbJUC++crKs-}v2gM#~%=$HPJI+9=E z&0Y@uP|7B=X*!hVx>DAn zi_k;knA+VcT@$|^{m?`70W&IHXG9Othw}To*CUfo^MlMje2Kf{=t@^Rrm|XIzZTgeJClz3>$wlGnLFA_xN~(qdmXt$ zNcWt(%_`mP{5k_Z)FgZh-eBzW4IvS?v4R-)&oV}wQtYOzAM7Te*O=ApX}zOFY*5Ja|=q{BxFJ%~e*T>$axr^lwa{2RelR3@)4x@7R{jFzAx0<`hRX{;Jf2{SVu&^$I9|t8F5=StL=N zJ_)<40^aNgz?JdZTbAG=AYa0JImLy}t*e^08xXr3LmoZ+A;+;8xL2Ice z$5y(n`OUc%`9b}`Jzvub0=p*c=gXdSl$$7>=1=jlfO~}|Rl0}y1@)t9@IH2o3nFe} zddDU7eyO1dm5X#J8qioB~+W8x54^H3C4jkZD0)S0FmOlK=lcdpxRQm z*7^q3p!zZOp!x{Sp!zUv;GTO_27RsLL7D48@%rPQoY4lO`x^4TG5MYNlj#B_zZ;aF zB=}H6WuQZx_v=UL-lH#U)<|ReTKu=-PJOoU?qMip4z_*At?+cz{j#Wgx^sbh>(;pyo{qZjj=D#!z`d#GR(RUSZHg5c zYrmVA2S2aUUCOWO4$^N9%VL*3r=ulC^H!|5xy(~theWZID-t%CxcW8((7aSL+Tt324{%piX%4>Imeo?Pil zPN{Tjysl9?R+;B2<cOK>_oV%u%-bwrKu9*Zm{d;DP* zv6=6}fTp z%szJFAa^3|5O)yTd87)~Y>4|pUv5%u^gYg}4e;TN(n0^YbwIL4cNSC6S48&tcb|nH zepB!C@e`qA$K<(VkTIHc%&W7WL(o>#F>BiuoX7WhjQV3PZ8N_!#7Akiw$Pn$By9)3 zPR~2)#@b%qROK$%3ijbttSU){bypj4|1iI>?uydEyb@)fd8G!cp9Z_yM5X&7zYU>m z`lh0f<(Kn&3s*W#UMAl~{q?LlBz&HuO=&-&(sl7`5RY&jf;={88uzGU|1Q77J^xHP z>etR&6u5GDme&P$OLkfR!Row*<15`#es_9aX>?dWHksS5(`hsLO+PVQyX>W71+2Z> zS(k*xC3jJuS?Q*brsaR|=^LSgG$1?`=v6_O)c>(KW$(;smF@_ByL*3Ww9v8hD4YlTaE|GH!6ByiVTYQ2%R%vb9+du*ef_j0 zdW&y#{4d??-81&wv&NVC?pghgN4Q4(NKd_uB=dN!cJDKfv(@mxKECTv&WDWUd`Pt$ z9h>Qb(EB@H2i4je2=n3dHUSFwd|-T1_14#MyP00i(+v}R5BgfjP`t|sJFySvp!B^1 zTH&eYYy>Tflm8GQd&~uU3=iC0x!3T3?-QW->_2OG&>uSvl)o>2VBtA=Z*zYUsCc{y z)c56}=GI^K^e3R^+~XU$H>#a*FU5_*-Od>gnNE+7&oFss&m114^`X04ylP)T=@*d| zJbwq({qPF=CVID4CiT>8_nuFOMRmq!=GLB1u>XQPsbgcZ?v+Wx??ZS z`MVmwzko6Y^~U!EP;xKW&CAjKk1dN)V))bmOCHTbr5%mGd}J{6$&>7@b&Prv(r0gjk`AVS>^RGFK!e){$no^d-`_*y}Q>vy1J#CEdy-v$)VE>Pv? zB~ZK$+}Zpc3Ceu}l>Paj#yi11&$KmF^dS>D8&Wr@Hl{c2Xj`giudC|HlbSs& z;a>WQEk&-T$=1+^Hrl%s8n-PYPNZWe`S!E-tR8H6-|D~MylhK;cxE;c>@f)2#M0sJ zTYjl~)W#7r*mtGb5xxi=--Ny9EphgH+Z!deLzH+&hi-HT;)gIQj)Sn@o8HD06VG9N zjg!DkEVuZb2g>{zl;3!T*9@B_wY2`D~w4;i1Q!GI6%osD4)zBI;O&t&giBMErudt2H6 z!`z#|SvmLr|5w_k{j{h#HPtDtS{xO{os2!V%IHRkGKj`fPDw%-5!pw!Y#DpDjBFtc zLT=lTrJFFsUG||6H~BqZ*ZX~%YtEd>{rmoY|NrCnc|4|Puj{kDKkv_St>?Pz-fs$~ zeWCu#|97=kI_;0OU3F-GqqGH&*X-W{@{DJ@!l(CJ{a-!Gg3j-F{V=Q_hV`%Z z`akjdVOYQGTVYs#rPu$d*Z;ZI-?|I$spXnmYo2GX{-Tbp9kCIUf}cpIdUC(8`X7bz z+gDKK{*84_>*!3Vb@Xx9Hcv9%Q|a&77)H6bkyho#c;}KB{oRqu*YAze@yK9cUt5Px zg^Irds{RjMe+SinO}DrBOQ7=q2g)C(^)vlGRQ`B>&Ry!UkE>$#MZPDZeQP21rLR|& z`SI|1ajU;yM=QtL$Fl>`{NBF#J*LD0<=5;@pXX*1hZ$15L zPv5PJr7wkBD?ixX+IDU)OCR*!dip+|{!`K^6!!7--MFq?Z>H`gls71}-)j}p0p0rM z1bvH!2HieSF=nR+4GunqN!uaVg}<_=*q_Dt7T-+nrw*ANZkx;YmD*0(N>i=rUCOAD zR|Z7O%2HQ(qC@a2f0=b@+n(Jz1VffvT{X4URUAo=v_dX^YaPpFh(x))Sgr{^?Mmq@~S^MXgPD;P|4t{9bh)pO;d8 z`uM!W=W+qhhH8#Ui+aZD_^)goxeO}2==wXTdA!5dwyx~;jjdyQerNjEUoGFH-%NM> zk7@herp_C(zt?#scKt}XYJ=X_CF&Vg*&{9L8P;@IM7av@dHFv>*){Zcx8o19tLjhF zH#al?)W?4+E1qo1_YP}+?_TRk6}C)J;e-|snf-4=g@q5B-UJm+e8k&V$Nn`pzxMt$ z|Jj=R`?ARX{;efe-Um=&&j+m?B~b0#47GoqP-gA=KFj`9b=q@-y?Ji17talLseX2| zz@Kv@O?n(8*>@@wz|haG^PP&@Yq{C87KVKSWzXqP+xE>+eb(<8v$q^7?C`Anrx)Mq zsRq>?RP=pQXb+QUIM-0UlWvhQC|VbXI}-X&1` zoy7CD{R$Y?(~t9k$vl_EJ=Z**am-tqTh+d@UHELR)(qUnwHWT7GiF+_@71?Sw0%C? z?V44ipz!Dp!OQ%W)VFJ6Q61NJc;B{Xq*YdU--COeZ6>$i9&wwX@Q@C{9sDJqv-K{j z|LWbki}#$g&2yr|>7Z^2%Zw)|dB z`BY}+d+DNj#_3k>{%2UZCqU(y1Lc2v7f$W>Klkx^hMjHc&p8hxu?;A`#`O@FVU21 z3A&$NdS-{?`$P5rNl>;d_3iCvS^p1(>i=<2 z?Y;r(Jmf9cpF{P3=hH0yT&Qr7>z|?8+HtnUUkUa8m}RbCgX;ecQ0W3+huT5)f9vqO znXPz^y}9oBRqA)wS|5tMUy|N01yK15Vd&Ez?Kz^fp!7zl`nUX+nCpU-tgYKJPUmm1 z{ZCZa)$U~(?M~Iz?vuRTFl;vr+r5?Vwtx8u`xrKyGx4!hX=vD>8`!uJnNg0edW zH3P16eLD=tarfwZ7@7s?_b{aJkwVk+Eq@VIe?1B{#@_Jl+1_clki4q1koli~p5;Fb zD%|Qib3a_}_4U8d?S-l@-lIP6IOCh7NjuhCPrA8mzwshV_bpVg{?7jWpV)rYgao$7VmGq zl|9L8tsMtKg*e}J@62zVn$s7y+F5^8c^9)q`aoq*iS^0ey+BmH1I4<|^X48wL zQ`vi5Z}z0yAKcg>n9kppwncR7PK`KzYgXg9F(HV_^TS^`+Dx(OTWoq`D?bX&(zU8Tl;NX8TD>i zuhR1!Dy+KA?3i(f*LyV76D$7TFqnYrcy?*_wdzUBZ2rkCv^4P_}BjSd5mf(qbuEww6Qr zt`f>t#ft%yte|OyBW7!+S$FegC z?(q?XAYGAmO$C_Je2?5gtDvNV)Nf{D0}vY^52Z5J!h>Njbz3ax&NeQ$Fy3Ds|k7YoqpH|c2T{jjxv zB2-90*>wh#T^B;x^%#^r|AgUugtDvABj%@$Q2yB;%ASc())FXNOQCEnrLAH)TDDd~`A*x#0LoTrF#%<3 zK9sG6P_`;wEQa!-bUIvJX8wB}DpW$*^b3?ttsgS~?G0ti1StPafwJj(C|e$Y^4}*= zwrqg%U$E5tHwen6sZh3@0p-8@p=^2rZf!lwci;WD<4-=8y_w@r+oR)8TK3j8{uD2J z)8kJ%8h&FxrujN}iTUpzQ2v_;<-b#)`t(jHd!B&u-%C*b+XQ7#^9Rj;BcSXV3+2Bf zq5AYnDF3|%WzWB${MU?rlK*mH=)ds%ruMV-Mee@}@B2#UKc6vs<2yCxIqbdpZU2ZM z`W}Q5@}-{@t4fcXA8g#lpxT&#YNMX{67yXro#|)lhzh1WYks*1D(#z4{`eHiA8pIc zANxbaUj$XhJy3pr)3>jM@@MOg4S63%f6ke<5A?lxt>4SMtp(ISeTC(F7%F__`me4H z7mcpIcdK{wC=^oOLoZr+>!A9%#miRi4=ZhZ;uX{J9h(N-`7Ubso#V*!W8t+8%1+;R z)isSU`0;K04J&6jRJZ`Do)=u7`liMImHo@y{s{Zr_|~oL-RGL zqfiQ!M|~zLgrx7Dq}>W1LT&rq{m_1u>Aq0o_3y5afEw3!{M(x2-&oLgM$KncE8QOz z)O+;1?l1kuhqV08D*WAQ!GY%6#CWsuxPM#wWq^S{ig=Y%PJV?7FHi5U3H`}7QSU=hx)S2G zMwCLW5oMl_{|3K(YV~*h%<4Y?D(z`dX|IA>U+;!0>p7^h-+}6npIkRi+a3O{hc!3y zyPhg+K7+IhdwgZ}&4()II@hhgw(^HV1#5q2#ud-0r0N%LQ()H*ato^0m2#f%R4ANc z?M`gqzQTGdw;z-rFLb>G%Ko~_&EHD7Ny^Rr(#jnHRqm6nKZRkrJsa^Y$d*CQjOyRt z6jA0N8A!Om+qL62mcBLbr*Fsa+A@zIHQ!6fr!w{2rxSQ2`E8-{OoQr= zIj-w!N6tZZ{bH8ebt_bO(DiFjb~pF=9=<1#`>|RlH2P$3k}{rs-|GDqD*VT_UDx3n z5PEn13i{Z!@TksK=6JX3SmvSHGt1}WT-Wg)IXtr&gY4E{ z;**-!W0K7CkxD=q_>tLr_QzJw^-$p;(kO3uJ;tB^SJ`#dyEsd|3p45sBK5ZX(CWEw zjn(@SROptaUX^Xv=^F4He1~8U{)+uO9#I|d!@Kwewky(FBOy{ zUxpR&Plc}&CC}Ns5u@>%2U^SIhsl*SeOMT23(-N3Pt5+EpwjQ*`go{uc$(|8D{X#V z3Kh<$9Muu^v+NAtb34|a?9{s#>h*8Heb^@9{qp!=eiJri7oNG>IY_U6ea5o>QL*eV z^n1xEC|eX{Lm66aQqcBNPp97&XiYERICI=avwt1bdLRGE*82mY%1*gH8*2TJchYrr zo^43l^9QBc7J0Uy5M8frgP<+HJ>$KaNlTx*C4HIV!*{0f>;czU)7MF($1i2HO?Aiq zGdkGZFW3IxKbM>}k8@Ugx)Rb&+QHJLU}n1DA68z)Z=-{=x3_d9Ff&~r(w#lP<6&le z0r8u$BeX3`{A|U0{@B3U`AdoanC;46l_h?q>i71Rz|8uqh*#bu?LFJ=D9PfN+=DG$ zigfv2-`Fhm<$Jm+{Ic2o63bF=5$Q&FeFa(SDxf`rKo=?@hT&I z99ru2rz-5cmguky9hY`!V)gfgs()Xo@>5V{ThLu6>F$&o(Eh=BJvz&N+ zPo@Iu`!JQTGpvGLV1Qj+fzoTcbhn5uWxMj1J7dK6L?>V`n1sDyKI{WkPMV5WyTt<7 z9~Qy^Fa-y~;xx&pc-5!!^I>@H%vnOZA#ATi%dbi&2EW)oTK`pO-^#|xc~JebON{qw z!+${a%dt@TPKN4_^-$M&esZesu{qzx(zrTX&r$%jZ z!*|Oqfzr*}=7#Tm>jI@mK=sr9Q2lm1)JQ$kb&1E9L4Et^dDrhj<=+fdU#wkj_`RS$ zP`ch?6&_2=PG1_&TWH4f6iR%6zHgxNHliNsIMn*MtLsrv>tbE|g+l6IO1#QQ?-$CqvR`=I_j4~o)%S0x z@?&mCe<-~>lpRrj%%`rA>HXyJWv(?gdcKA(JAg9@Pfybx*)N)Rum&@Ehx#b}L@5~wj&3N_}+pyqrz)S8e_elg{& zV7u0sN~kragzeIz@|8KOh}W7C&<@Sv7}Oe&fLarhP-{j7>9t+DTSQl}UHM}i7mE4B zYpxeS&7DH1xtkW?P59l$2=P!hjq67!$zq6L$fZnf9MRAc6+EkIR$F}aIWh+p!((qsQtsA zuDf=%`P>((uXcv&t9&S*kA~`_V<4|M37REL9}o2^lQUi42-R12LG|5BP&00|>u;gr zTXeJiLsuw07^?ikq3W9oJHmOcuZHTQTcP?ox4W(PJz=>1L-qB6FaeKpJ=5c_h8hFU zLXCmt8*-({{Fh7yy-i52*T%hpPWfsQtrLuJ45E!v~@IemT@wc>`+w-|YIJ z9=4x27b^aBsIk+wr|l1VLg_J3>v^H;8BpmLLY03n)Vlw?>vy2W(x*^k?Hj1E)}@#2 z4+cT$E8!q`yX$38>EDCO{~tIQw&-oT2UL9rK(%io)Ve?0^*vDIV>#4#`4npGZh+cP zH0xu!6VzB90<~Y**Y&v`{|MB0eF+YOzrbB!^S-vd-S)o!NHhp?mWJ1+!gubkW_=q= zy5D^N(R{G2>w}=y;!B~{x}~n|{zu0)B2D9*!6<0f7tbe z0Z?mWgFj7ogG#$M)b>++`%>S&66(0_Kg^{1ys;G*Za*J$a~iZ@ICAPTqo>R zJzfg@9G0@X`&cO%=GO#&_j72ddJ<56PC^}j%WY`!u0o#O3A13qB;uwdar&X-1+a;KjWZ+{YIiy(0oDlGhZvo zt9%9YakUtg=RBye464r9!8VRZKiBDw>(+;v|3*ROp9pnacc$x0p^m-p zb^Scl{Hk>Q1Jr)B)db6*fI9vg;rc+RA!nb(!Re_Zf~_dlGL zvU;w9%Kt3X`cv0+!_}1a74aJ9>GQLEFR!lq$1&pN+XPe}Ct*7LHqGkqda~7j094x3 zpwcda8V5_E>U<5#&QGAmPvCa9iQ1jzdSfuL_IYL6?rhf^RaZ8)}`a2;#3{M3Jn!CIQO+TAEPe`9xEg94{O;T1 z!}J}(f!v=Qz%y@=W2=-MTa{48c4SZ;NgtyD*C(X)eR%n%fbF8Tiz(N|PK{}8FU`<} zomikunNzCEGJ3*WP?-zir#Ea&-#q#e7r3|h`?5i~rwc~Cx) zc23F-M*eBX?onN@O=IriHVN8P#VYN~R~*0Uw?ivl(<{EZC0iRyUo=0Wcjt%B||TXKxsg8Nh9_hYO0g>8k_ zvP#;Y4(d<+J_ zo4%L8Z!GDRP*q6pGi+IYtr^rX4qE}v2WrOEBB5fEB9Hb@Q5EPM(tJE z>E|d4j>-+D^Ot^(BC6v(cz1C6*^(L6Pf^H!bhdD|-Bs zDy%;KDZ9?vvl+?{(d)YlN!RWQE4QxWnR3#6Mn3sEeZ4#Jr}bgh`=FOwc{@PWcPv!i zb6hWgn%@t*ei3T^)^)vmJ@qg3`qRf#F|R+{amg=!T+r|`tG^di`Nu-pajxsDVR)Ru zds}*h-;-@qeg2wa#unH*8#}7{w_e&8D(KyoDoe-zgRi%8&x8tl-(d9~2^H2trTq!Y zj`laYzr)|dcIVwa9rf;>N_z^*>KsO$&y!a9($ChEHn+M9XuCqnSq#;V64%qNvhtTf z<$vAvCs6gby4u#+?oeSQRQ?B`_RCMXe%<2-U1Q}O3l+|Q;r#8sP0+Yr+wfj>A@2^kGFilJY(x3Vn+K(L zfNEcX>!YFkP}g`{P5qhUE$Q`V8*kV7{J9gVzL%iN-v)bRM;9o)Bm8g1TX3|Ew-UyQ z@~`&sa`R1A{xYaA{APSw{r%VCHa4!($GKr) z{PUgn`%c$deSe1vM?lqkDb#-Zao?Wn>&*dBVWO`)ao*3^uHJx}$Ep5p$pRc_->c0d zO>MhZNA31&ce++5f5-e-C4D{Zy4$VZUGFe|9RouuXMDFZIHvkq zUHW>V>QJ4kd+5EE?<1&fIrmvTouKsXP{FQ~b>cc%NA^?pJl&RW6Z#s{hq~sHR{gE_ zuPNx7io$dETRCf%Sh>juO}Bi=`eO!Eh!5bsSVOp%@pkz8&WfCJyJ{0&Bcl8hNTc#A zeVx#GfWlFaTDjjpX61B!+;m;vtDQ|*6TB=vAAIaBmTz{c*>fjU$UN^aC7;gSj=jy| z?|`x=p5?jTm7Z4Rth&|GeE}6R%dPUX$we0b91P11{n0LHv!J#=awk`x8A3gw>vBWzH4O`kG5kApgIx)tg;xZQG# z?*_F!J}`&x%D1=Yg#8(0jg1oQ(zD|#E9PaVuZssw?EE0%wiP&w;YExS~x;x-w!Ixgkk>3?>%ykwZ14}ElJmV+6c>c5ma~#X68$JzE~vR(0t3cKUA0n zv)Mb|^HyZod&oS?KLsjW4YTDhCcna?7g+k2p~6O(Y3E|EtDw=Cpv#$-J_!|~{;we2 znDZ^Z5Qg#L?>FrESdH6FUhk~EEZuwSmfjDEbU#G=TSmOfu4rguUGwDe;a1)&P~m47 zj)SoOnpM9K%=4D`xGSh{>&QN5SpIQP;XIf*j)EeqH_13s{i?Tv`>QWhI22~)>*M)i zk$l(fX7$|z72boH`3lIl$o*87#ZR+|@8a>vEb*npe|(nJQw0^GeqO2aeLj?BnGaPe ze~#r(!p!`+#}n`6C$p5FPy8a!UzR0*k>WjnS(f}I#1EWn_2 ziT~8c{f6|okBp<76D9@gMp*t|p+c`Z*4HFy73R4;*SS3_U}nFKCv9UdH}2)`3p3Ld zlkR2e(^&c!RA`j%=`z;$#a{oNJ}(~kdGR?6%gsn%;prRt`q;tO$Gx+xkDEyQv5)^M zAOF#Dk~ncvaJjE%rFE@mq*2&;Z)?v;s1PkDMVck78)|Pk4C6D_*M(kAdtVp(WLX!> zN%Mx=Q(1>S>%E+7-JZo+?1`PkI^*Lbkscoz_6#G9!nMq6*}WJlMB7zJnt|S~{5sk- z-^)34Pb;SgW|mV%nm5j~_)3@=znXa2P!?JD_8V^L4}%I9z;HZdtb4&!%bUtr_pUkJ z^4|>=R>911+Q;*jy;^;Ia5v*rwmbn9{tYwp6?nd?h`qgcvwXWih2vmmzS-oPv&DY!gJUeJmsG#l$OZ`uxADfgLOByGZh#LP+$k zEv>w9P}`PMyT`d<*wg=I^M49{J)a=Gtd7kz5Z2v*FxE` z)b)!nJpYeeH_17<`npN#QcM2~R5{^&?U{qQemIEVrtQc*fc|zq@8^t3@{T2;>InG# ztysvuU3pVbHk3e}Q*70UI}$hq4U`&3wcIdx-M4vxyb)DVuzmDOV?Mx@rCM7 zGlt*w44ib73AT4(yX+SgpN&bN(7hUDtcXp5N>W<*^-I7eLj2Db!3`{zCqg|}d9v$EpvJ)CP|t6E;Cj%j_8jNlQ1NHLZtx1%kHhZh*Ia)CHMSbRX3uBF zq4aK0`RBl%@N(Br!CvUsT{n2$p0jKZm3}nr1CMllE$oY4?0OB{9{q#syf^GQ&K;rh z9}fG&sje48jn(JiK)A|vn>Q`}45;TZ&v*S4Orl?RU9ZBP=WGvE{vJ@*Zw_@m2g<)? zP-~Cf_io2~0@?;`m)3kwzor()ZC{O zW2_gtwxQ>z#iZ*3m<}J5n?1SD+4Z=6pz@A`ns@VD-vw32GN|!Y;d;Htk9^+d<3y^)~d6)~Nwd=_kX`Ke>EkoA>*r-*>qt|iR?>ZP~>2smN9hnf9QIH>%2*pe+X2V==xOGi(EhE`V-f`xK12t`G-M;qg$HA!C^ zRIbK!>TjciGq?_@|Gx;8ui?I?Gp`>eQj?S|IB-{sp8^$bbe)-gq^EB+%+l`w6^?Oj z-@h2d^QV2X-ak%}e-H-Awt(|Oh1ltS9|G~v(KO1Vla=+_m zp!O^4UH=Ak{M#=t9v=5jg!08&sN>w9TzBXk4}VY67b<=fly7c?^36j~$F(oG{=?(1 z>|*I}hdR!E!*wOpaqiEq59(^|nhRC_m9QmT3>8|pYZNq_QT=NLjqinw8TEUqUq3B( zR;D%ML-FPG`-Y>f{G4N~yq%!p{to5mQ(a#O)nAW5_0!kB{ST;qYBAaJMV})n$Bwzg zDLg&f;v1iC^+eOHkEFZoG)wnBRA}A4anR!V@Y(p3ed(8DE!r5HZf#T=*&FzEnuIey zecgs*7sZ$PTu5)%F^{(E9Sfq41;uoH0r?fC9dGuOLHT2a>mQ-~5u9N0NhrUJa-D+m z%lWP!ggPF2+V!_kVIDXyrA5h~r?&szyyz2S|sDAm(b#Sfq z%YIPpp9pmxeX{GPJbuD;R{l9q{t_hHn`(<#$V(<7Ga_t9&jdlB0v8{J!4RQ2kw*zRwre zbI&{@;_v2B{?(p8eH~Wysf{|X5v7+uX!fju3LVN!mqCr6mt4pD>phIy+PmvhHh+Q{ z)z4iNFkTgOEvg1HxBm~d&fOH!3%t`DGv1g;4F7=DGxGom%AjMX33( z%JolB^P&FbR^Ikd^I@3l2~hK)$n_Oa^WkRK&%$t>a=j61K5TP^mDdAm91U`PIMlp2 z+4Xf$^W#3(PeS$8UtQ1aLtkhud-E&1Ue@AkJ1@+GYF|I7cI^b!o+F{!G0pWFsCInq zdarNnJoFH#^ru0!<099OK(*r~*XyC$@tf=3-`e%E;ZXS}L(S{cU6(@5@1?Fkftuex zxbE|vT`$`eD*tq-`F)=2C!yx~Yp&~mZ`aGVg-X9a)cl_0`XZ=#yvX%)P}fdBf%4c7 zu47e}e-u=YO>$ifb-iqX>m^XvZ{COcz44c>JO5zU%XWZ@KLG0b&uLKC%WiP}BTS$h z{AlsJ!fxmTU7rTKqc3%RKim%eGVB5W<@yhgAHKn^myLm{?@ZVWUgmlQ?2UfUb&HL5 zy{s!#`a@w~SmgR9xIOwI*K1%u^bf8({bbk620-O6f&<{Wa3H+O_1hjl=x4iLwl@sz zgSuXJnd|4^j_CJX*Zak;m$ipVKOD-RDX96dwd-XC%!PEgVV$L44Ydw5TyOKD1Ju0O z$Mtbg^J6yD_$hI{*yD4)wE5B*YW)}qHD9Jc&G$L3Z-<&EkGft1HBTBdFO_~6RQ|19 z&zc>v|BTPg{$)`1e*u;M7byFCeqnlFDEr4l*`IPf-{aRq&G$cC_xZQkvmccGN4P!@ z%KmFyKM!U9x2}8O$I$+a`<|t4^MQY}^=b-KxY2dydErV=zr!w;{y?a3p6kClFRUWJ z&I^0@vHZiK!c@rS;94ku-Rt^YD7(LO9qViBeix|p`#|~cG1n`h{J7e6PCu(>Ae0~X zgzC?Oq5N0m`cjWy1m(xqTz?GZ$DIC_za!Loc>vUUf0l2rKfsQAwuP!^DAc;Rzw48r zjsu^9S`XiXS_jvhoIK!l~5tu`Bm;I z)$?ocah881R5;c3#ZZ2I)b-0y{jm|MANozPe7ix7)3eUkOzCces8V zs{BgVvFTP%f2j5qK-DwZ^%YS4eY5M=q5At9*KKB)e-cpnkA~{+S*~w^>h}j+e+1Rv zzq{^yiuHFtsQmxU`A89M)IK~KZok#?KMED~h3j9S+S}tcYiB-GJ(Ho@IotIuQ0;uc z^*d1Q+~B&)?bgozQ29@WYUg>bmq4|1x$Cu1?cC-LOP_!m*HfUz^I1^i`3lz`di)u8 zTKZd{#@9no`~Py+Yhk$mcirwTOP_=q@4G{d_p_nK`^~Ng-fi*uP~-d`u4h5*|L42D z52}4@U2k-~&0;&g&xLA-T`#M799=@cHdNk)uJ42D=hs|+3^g9=yf07vOTGT|??B4E{%rT<$2GJ1 zkARlUy9v71@4~|*KXvW z5~wzm!O$;GU7MDFV(z!3vx0cpRDc$<-H-41micEqRN3>O%DxWDKQFreH&h*)p!^ei z+jJkO^z)(obF=G}P<5_@TBm+@z1=GF&rVSBM??ANGS@3$=%38{@$QonzlYx9XxqPb zg&Iq{xz2XKu7bSx9$@Kyg7W1~qfBR>S8XD#!kd0SZk^ws>r}^iSmIPmf6Fi{?^&p@ z!S!FAhm9n^&coCO-4|2%pWdG4Xw#Qn0 zZ>at_7^)vG@$EN5&GQFb*LD85(Chs8Br7j5)yf|NW&hDo<)>ViLe;a}btP0i8(nvu zX8k34wY_uX7ih3fB1T|WTT-%q*zZ_XdfY2%h- zXY$If|G(~M6?5N9{hoP0tAyX-XnuY&5AA6>_8wtg80bv!y1YW|($ z`c;oVVUd-81(aWIg_@UTu2(_L%THZ5xW&>Zp!~H1)cl+VH9s$N-KEsxlTh<=FW1LG z&CA)YZ-i>!D%YR8{t@arc+RbUz8hZ0tG-XQ-sj0Ke%`hpR2btr+kL9oEIS@b_`Mz7 zr@HbY%eMlmA7g&ME8F??F!F!%klEXOspZ=b%Kl2Ie*f8Zw);?p-a}lcpzJ@}bt%-kvc&bfP~&&4>xNg__-zXnc7+A`fjN4{FLi|LizQt z&fDkH2U>e}*lg#AQ=!^92daISK+Vf*pxW~+R6E{qJ^W8Qo;m<3{&uK#JnH&=sCoFM z>vn;)qZbVQ1J#ZRt}ldY$4#zRK+VH{xen^td~5@ie|M<)c#!M)Q1kEx*Ka}1$F;6I zZe#PZKUDr>pyuPLuJ3`GkI%UN5^COUcHON$zhy`74&||fT&JMQyC15@o^f3Xb^qx{ z*DV|HJ8AS#sPn`9U7rPYet3oJ`=HK$-iNyX^qcFk4dX!qJsB$g2G|Wg==y!w9sP~# z=8fXv`C)I^gYCPxo(PryCfE}$as46eh5puckH+!v{BUQe^iyFUc#iAGU|;k~*T2K< z(XDeV{czY1eUR%jq0SF4bG;G{Kz|Ac!VRtmHL?5)pw18PaQz`nqQ7?AsH#$Onx{3qAl@t^D;4VC_U z7}}q4|0y`leE#O&tbf))g-*l0zcSMI@$}F7{iaX+{!`mseZ3pnEa*F=?&lH<$glIB zp-D?W3M!lh*&N&jweCOZ`U@z#e|4SM(boNeQ0WhW^509YS3~)6z3be;R?i5iaWEFj zACsZ{H{1119=`<2k850i2j$1yA(nr8sP*!2sCDu(-`;j7TNism)w3Vex_FrDIZ*53 zt5ECVr%=Zy8(a_A+2Wsr%D)O~UEJ(CHq_R|UQqGpLd~b8uAhTir&mLTZ08TNz3&vi zYKrAw4;8j8GQB+v{pxxORDWCz)eo=w_K%>(@wcw)I)5njI-fbk$`58*`R$lBx-z`qH{JTN*_Ytn=Liwk}_1jSW{cqQ;W?8>?hN^!wRDYl3 z`ZB2gzR~r6bN;ZBHfkRp4G%B2@?V6C`pI?Ud#t@fpxRjgWyegYcFuSGAXGb_cKtb2 zJL}(T=?6l!bGYkspxSwr>t~?G_iL^)0Q&w_1v=DSkQ zg5}Px-Y2Oa^;b5g=KIp}Ikp|C!U<0=x8t~j*rv46_qVC6=>4AYr&r(aDSXE4SOUX* zb-bslm^`0Ru53=<4=dwbQF*exr|OI+tlc+4rCAP@_dVBNLXEqoPg;B))O@V#e%NB_ zUrM~nNZ$`D_4>2j54&)g)qf3C{f|MFUkO#l@2*?99Z~;OMEq0!w54zP7yj9l#Xl8W z@z2FinSJ*`+4mZhUH^9dE0ljaF1PspaBKcaoKf39g(!u)YE$uc|WLruhcp(C&)Xv1@8-OzU6(j8ncVBL3t~wR}7jO6VAYYU!L!}&{^y( zjid{WLHY3w*BhbiANstd9}Bha-R=5WDE~Hj!Q#6? zt$S-+Z-iR+c3WZbhd`}+alNlL@*PjTQ>cP=A5C1?X5KTaP~h)bDyK~fmCm4<=|X@1 zSi*I_GaVmh;-6osSE0j;*8agzVbDv~-u-HFHCh2vLQx_MChg$v&?eG63h(sjdk&Hgb^<<5k% z|8duEL)qW^J&WHR%KnR7-wI{_5$}6`sQ!A|^}DdH{z{x_{YCQN^wnn9bx`&`?0V_H z%)VEkLfa3_zJXBTR4Dtdas57&eLuP$_MzE#AXK;(%Dx9&&st;lT?Q5IfLrtLNNiSo z=G-b|+-Q4xZY6x~75nzmG_%Yt)q9Wk>x)qBfBBzg$0tys@2jTwftp{JyM6?!zkYGu z<~8%j6exSnf%3=8u0Mh5ubW=C_(!1p@rUbe->AF4Qr=%-JL{NV1wH3XA^-RC}kneiW+z-*w&LEo<)}s4yF_5%*0x0{} zx&9NXzxJ#2@}TU``_%J8*?*SnYhYdTt2{ElcKOWg8V6|5%36O?_ezOeX1pzJ%z_0In``$j{B$uRV9?_c|(ZO5?OU!X#db{#{%N8cBcd%o3E(P|9uEwy@Xg9_1f`J_AT zM~lA*Dm(_&kD2xqkyc?|8>|01sIUTt=_BndA#HM7OSdOfh}OG|`0Kp=_teq;O0Vx4 z+9yBW4He$W(%zhTlY&Zb=Z{(1nIwLlxARwTXD{l_*3R*yRoKb>yr27dCd_PSF=>mv zoeR93;d=~cHVR_j#e<>z^~kaBXh(H?U=!Xql2`Nhj9hHezI`!euA+XmIW&ZSlHb^S zS<>%>uYB5nuYY>=?=+NF<5go+!brB~^Op`o8C%*G4bO&G z5qS=o_vUK8j)yAuCD*?}l^?5b@!c9&zl?&ixdCO$hQ3hYFxS!Z1GQ1dH7$6rzQ36_ z{C-bGmbRzw6|2o*y{+xp0Qn^9qiEZU4zJnv5^raIXp#N%zHiHEZ}umk`uA|CcK-@h z=70{SUxBLs%v@{d9p0{2pu(@NqwQ3C;$8Tr(9-Zt8kg zeQT(!A7zW`9ezZ0n+njytRb2G`A^^G*+YD|(dKoNpKZMNh6?9HmHU+I-=S=}nle=9 za;WgV>u9@Vf4uEBLDR8~!uBLCusNgj@}bK8CSq?NbOGaU7|iD{9j^0j(&K#IPG+0R zxCkmd;X15;P@@9*PxVFXADN~8lO|UCOZ8W@tX+SHNc}f%HotW8b>wr>%Z?^)$1Yjy zP`&Z+`w(1HsNx&w6^+Xq>Q|Wl4WJb9Pf|v@uf=Td)s??fZ`v3b+rq}zy-?fBp~hjC zmZqmb`FBh!OK0!(?ah0AyVQCg@j~kVjI^p(`+_J7{Jp+qQ1$42xT>e>FtdaIhT&zO z*Hu2x8#c6h$3gk$c-Qlw>{C+TH#eoM1Szjaid`Fq$}p!bER<5j1$>Qub;%}SpWxBB*i3X`D9xEadc zGAO$$U3ctc>1RTfSprq&Yfxo=0(BhHKF{=Foh|+2Q01l9|72A>7{_0F{g3KwYr=Zk ztDrJukC-g19>bdRWvmaGbN)BqMsygS`qjqqm%rJ3Z~PzAlcCDI(e)ZA->o3O>iY&N zbY0R#81b673f*JYzh^-Cr37kReCK*-YwPzeeq6M* z`B+G~pQ+GDSm*O0*2KnVPpEdB1~pDEa(yRMd)GkK|0C469M{zJ)ll{oHMjinznEY1 zu|@N1WEV?+9#mKaRqsbo^;JQYo9JqKLc-EN0%b=9lpW2x*?i~2Z|*Lp+$mUwRxxb+&O-hP?_ZL-vRT$J880`HbDn`EjvtBY7D5{chvuus>`(ody-& zfhx0^?*~Rf^~1qFALc-X2VF{bx>gi4D(0MR|-6DRd>sq z+Gb49dzp>fU7*5oFk8K|(|LExsCN&q7b>iP+47fqJLm1=>0y{2X4<)uw3~Zax>!$3 z7d@}4B7RXXi!Xx;(fHg;c)za4C$q%o6E7c@@tkD|u93_4cmw_O`2|Ka11pz5VOF{q3^!=VH=6)5F?V0TrVCRYCkD@2^yr z{@O(R$KFp>S^6n)*`y%f0U2b#SXLB&4-wg1??!1k9XL+u}1ch3pBbFZ!Q!A-fh-bCk2 z;kz4Rm)m$($UI=x(TMV^7FNHa<9O`~+ zCDeV^fO2(TG68jeH6ON+=A2g4d3sdqn-+EJ%e|&{rb-dvhn+#6^uvc?=vQ(#*eN?6~a}% zEua6VLublT`eP~&z6R2}^ux9wA)>^g+;~9 zZC)P@)xJ($Z2MtQ?c0_-vUdll_U#5`$28Y>d;FVFVVeoH+oyKKw{Ofl9E+;26(ns8 z1XtJ?P+rxaZsQ}-cO*~_bpWWx=@z%IH>q@pu$qu z(ebHv*!wsi;GNa?a}D{9>NVfnT0ok%6sS7Gg7_!Jx4{((pw`H;qixME%udH+xrAIps@>T1)e(S8Hh5cB8|!vy3%9)KF`suG46ZOps1%qtc18 zBiatFi&_iShEdb4@3fv2qZ8DXdG0sWw-LQ1^qi0v=AR5T&X+^ky5r$_VVh?`^-IGe zOdkog|2x<9>rm@hy@?h-25Ntpa=jdCzgXpZw@G>7erP6?PalQaA9X*{bTQPr{iy3V zq3rp&FfV8ck3T9e^kK)N^Fp5ugnG_s4wUb%JSH#n-LT1dq0bJ7+MkrTzWms{aDUS4 zIEycY^7SiIth{TAto-4}TfIL)g?=aac!siPD87{MkAw;fTu0AGHTL2?d2XZLVL|=W zHsLk>*=&254vY3<{FB(Yjdo9_FfyO&7jBcZ^`n&d4P=V8A-SWyLo#-(l~>uc=2+F( zlHXLSnpx<07lyly#P?09@#*|%^XpQ?) zju)gw%_rp(b)2X9lib~oGnHT4t1?*WYm4Gr5+9pjYfZtIww7qS))Z|INqL$dDpyo} zVj<5fh!siSzFkeGx2Myk^Cu{$3;7bfYfUV0opP2qOS_K_pMy`mKRSF4zI^rQ@VWOg z;(MrG81-Low)Npp<0LVwdhA!Cle8&wO*_lC5gmrYeeF1C2Gscf$@Sj*bqf7`(a27r z|JOkIb;kak!u9JyD1FS|JB9wA1+{Kn;`%|T_@AKGtM&(&?g_PC?c;hJRDV1IwbqXv zWxB)YPGLWs0d;)5)b%@1{{Qg6PT@LK1*H=Oox=5NCn!A?hQE(@y&P)&f5UadgF1!l zQ3t5>Cqs?k^Ibm<<(b!9Hyhh2(2VH}mHtSm-$6`weKl0SmO=dv;(6EK!UXzH*TetO zDLn5S1C{3rf# zcC9_8*Z4MNzhao#cN5fjj_+dnOej0&xxRxuvi}XJQ15S%b$zTI&&#HG_&e+B^X`1M zrGv^>84FLZwoyK)7+!mQ&g1&tFybbRFnjKWvgZlcpOZ)BwIrRw9x$}ODfdZz9ai1( zzKysx(k^K7wte?pzALK3cgZuV?aHUjk{MZi=i5}L!i`_qe&JE5`d@Z^>DRVDydEmt zLB7y`P@&!_wf!f%Y`>Vyx<4o({uC;aAHqWTr;2y3C=_09`-Qq#Fv*U83!%obe&hdF zjMk$yN$Zf>F#gPHKNX?NC)V!2=G3G9`!#9pZ?>cPXHTfmc#s|U?Eq!R9xw;acm3*M zJI?zAD!$baJI>nNwyO*Ylv-em|67-l5I%$7ZOoBkh%r9tWtu;=8s8`p+B?^qJhB?=trbI@Ie? z-M1WYX*@0?T^sLL?Kf3^`u)EJ>@TJD4sEfN{ixcZXH#Uqp4X7w`RtcPy(d>pkuN02 zO``IPCBB{ihC0nM%8jPe{#aW3=V*8{X7lhAO|6{IKLiPXWu6J*5>+(TR<;{lL zUq0-51=M=|q3Z@6Y~5}Tm3}uUf2Ul>hw1+LLEJwt;CO9hbswgz4=d@zztLdjA$u4! z#}uk|FdwFM;65$p+N}C8xZPODGYRsEuGxt?Ruh#!%91WMk7=TFbK}|7bF+lJh2+&d z%;zs19`J3_4~2Ve-b)A7fA#8FzqW{>t7>}p4x>>2?Trn`>X zrFt{>|KqdRvM^$c_W#NDwa4fj-`4Xev*RSFe%+hxvSS)lxYc#EUsY$O9mQGfNX)JF ziR>uvTicH2+uOExela^bZ!$aHA+7A#3>9`HopjU=)tPC>;w*M7&afl3Q*Aqz`?l8I zZM+YJ^2hmXSG`N1!l$mIcBszi^IH{JZ0LVpO<$A^t!=~azD@O9yq(!`CzKs4h?5=P zL4|I^YWqX=X8L1O7F(8O*iyxMnYo4y-_f=m)Ya^m24zPBw#$xzP~j-oQGck;s6P@5 zYR}=}=hyT{a&T=M=J+<%^Us9Y@dcC}dlM%+ra^^UT}SOuz46YCg3d+tIli~w-e~@g z%wo@L8TJJIYuhu*x2e9_zu9=r`H#zkp_W1di>WpvO zAZWfcC)K#no)ulsHsud9@lXD7R!&L6ztQ5l5JuB!U#$JG_NgN;tm(%xuEAyc@lW4& z=bd)^9KXws_xnMWk?(pA)N#f2uAhXe>owP(LWRTb_Unn1D?5IG3cayYI@%9vquoc^ zHi+Iwid{7+xGK!Wc!IJ+f4TFk+mlp0=d_va8RgrW>}d1)P$>T#=lW`>G9UHr?fm?B zgr6TzcOA7;_SpTBQQR*X8Km!*3}gFX8Ai}Cla6;J%OiFcqVv1f9xs>rHloAu{sJ2} z&9Aci;v=B^dk~c0u7EmztAIMb>VCDQyAG<(*fo}aZ>aVj;`&6W_RfRqzZ;-zT>+Kv zVC<0HXG4XDTt~;J+8N)WF~=)=1xmve54pH{Y!r~TvU6>p_b2~I z;uN}HWd7O}%0FXWe+=dK?_Kx5*!;g6l&wcXo$rpg#QZo4%Eoa}HqL{xYk})Yms+~D zP@&gl=J(N1;Yg@{xd5u%jo7W@-!ATpgP?S@Kjd?}zjYY*x5jf`Q&8)?W*&sqLNHybmGSDO{DHYeF0txtBh5~%#ILiwrt4W{pcvT5HNZ9W_f<-aaBnSLKC z{(Gpg6x?h&0o7mAplm-I%Jv7L>|O4<^(~fuAyioF`e&%I8Y{KvofVsc9MH6VhM9Pnl8GJ{wC6vux}|NvyU(J zZ7Me%Hm|XEwExKV*QY|wkMmrA3{}r}uJb;&^n;*mIhZmvj?ab)54n!EUu}#JXdHAJ z(lcnu?C~8{bCqEurfYvwsID zpY9D+-gMW!AGCHoLSEJNF;r-cEz;3;$#%P5yK7|KtY4VEk2#z8S2Oxn_u|7o<=(sM z)w2L9SNH7Y=VBP{)1cM^JxidqQ_m7;T_`@Orca{B3soi6J}D$^)rqz5ZcytmByf8G;zz4R3*J7+#+`s%0cy6LEA?E3APXYIP}&o7w% zWQCRg`HNO=1M1hhIS?uwc--Z2uWp!J%rd9ep%}*zU{R?eO zXwwPf&5n6cV{N0)(=Mb@I0&ljX#c9-%=L9;7F&uI)U>7eI_NeWf zygjS?DgOpL-j3a9$J?Eu!tPMz9_RXV%2D|($*Zsjl#co>7hCOkyEAQIfA4EM(<#%qph+^df9S68>G5M4gKcAJ`WpGWKOkDr>qyL@JT9RwAo zLzQ`x>sO%a`^NQVsP^_;Yun$U4%NRID(p!4($V&+UGY6y1;_*&}YaVL0-L` zvwmx@h_rL5Ky{Y*zAN94&kCX1S;}_Vm|X485)8JrsuYItP-|1+6k`SHhwf?Z91WHC z2Pivx>}Bi3p?ll?mbakRvu*YFp`zo{ZWhyXC_YwCq)oO$uTe_e`|bDunGpD}91|>CmRH)xQH&+`HSGU5)zL z`gb9e5AKI*&j(QH2KKjnM?rgANH=Nl^aHuB#sI*cd1o?}oDl}_7rk3~neDo?D8Y*&1hYdvowU9h`<@6lP}jO}CF zlTMY}lk@@kdx02~PC5&mg-+e`=|{Y__lG4=?JISbW$4W9>G&wq{k1dYl#_p`%EM0z zJMpJ=NPQK%-qtNWCtQgxWX&82)lYh^Z$13kxBV~n-UUvl>izrQ<1ofx3?^n6$=w3Yp=cbX~vEJThR&+mcwvq_$C&_9Zvi%T;h$8lSb@1DM(dLqd8h295w{O$z#9^_?^{ao>V@mC*g2z`(0$H2zWuc&?t#I$B? z1$lf7!?@=0@jA%kV?M~^VwdVN7~{-usmIL#)#mwC@2_%xjJlc60&l^yz=pney7e3s z@O~9>umS&+qfeWL+C&<9xW7YdW#&hp)lHVU> zJTI&M0AxIeR7c%i%1BIHWK<8DZA9di_lD<&<&;h>uQfMb=XE%emO7Bk!csKSx(MG?}33B;WC*zZj7B=}9-zT_EF) z1(Tsk)-UY!W79zPdB43ff6W7_PlDVh zRlb#Zs}5Kix~1ywU>Nj0`{cX0B_Q|J0g&$}omKtgcamRazkCn32;}**_V=Qn0=W+- zg4~BcfIP2WR^8+W`R;83$n)tckS*8@@(jIK^<|LzaPEQ1=Dzy~XHX5oBOf} z$bI(`7za*Q{lJfv&2`VCAoEXy+_z;9RW|q4B#`@VEy#WODOd;GulfpD4|>eu%H}?N z3*Wp>CCty|Z_Lk0IL0TS4DH2}GH-kf20>p^UG$X9Gx8o_ExZR<6Yl{! zpLbGG-%)H!e|)c#Ea-i}%;J*I^AqQcY>auH4|$#mczIa$AdvlH{{G~&Se(aQIFDDuc^rR_&hI=v6aBdX z+p>H(`h~`8Xj+?_WnK6hNZSFjy&V%pe+im?VndAbUBZp>c>kgNv@kE{_@v$U8E%w~ z$CIdU7B_~m4EGm*LKgY%S8>hjdN%NWRXC*;-Kf{| zHltQzbE9%llYsr%jN79y`^);iI-7e>kav<}2gFLSsP+h-;oLAa_%pVEz z{IX2-MUdy2*gG^H(40?I?*}=ro>zTuOF94a0NK(s)nh@{e*onE4QnOZ|NCkW#sIBs z7o7(jzONpKGW@=pMsUBA;Y)q@KT@Fc?v-aD90%5S(k~|kJ~P>=X((nyeJ%4teURgJ z6v(=7|3=aWgN(m8w&D1z26Fs002xO&)iX4IGe|qH+B|;rISAX~^nG-80qx84YoF`U z!1k@tG`Hzh{`pJOs8+c^%|8dy z;vTczuh#al9R+CDA0~GWY~xRw<~BXcKMlG_x%3EW$3&3r`w8U!n|+g{ z9|XDooNhC&K{N6N7_VWWE_y6-C<2ix;W#5-YpVICGsm=YV z_qVvO{J$qoMjF2-rm;T$mp@%s`u1Nkbn?T2<8rp9A=`Mqvc$CvWIel77p)@Wu_wy1 z-pL?si)#CLV=RSzH=K@qem6|x*kHRUL$ZCba^830UBYId8$Xuy)3oF7NPMyLWt=?% zvaX;7qOXCB|Iv4)J&D+ke!79QsjAJmo9Odw#O3roa2C=#ejw+uCqY_a-ve)B`{0c8 zlUW%5@cMxE-~ByshFjK27XQEg9ykl}@LmF+&yajRL#8VEe1`hJ@;z|EYTr2VqOLsD znFPA=W7!>ugK3uK>Gz#Q9+UOJD5zTh9SR=N4{@53Q{lXF3(Xyd&qtEJ3+4ddV-vH`u3FX zfipnrY>?}?&s6^favm!Cl;pPsIe&Lk{W{3`W0C5=L5|>vUQ+&EkUh~=^(>G_%zLWO zfxOQU^t6;An!MHQvD+6f}Wy!2N(-|NOgtY^4z5c$nE!l)xlnUJys(z%%mP<#8|``71zfzof6kHTqfEpQ}L50|!9v*GnMxPwD>hJfbGZe!m^$ z`ui!6{XG=qe7^u>{Xc=UKS0h+6`qszVhN0^+R%+aS`XFs`I*OmLEi)CA+N8wW&U}( z*!#XQ?MA-q_P{aSPt&;h-}=38>Dy#Hj|XYLf}D3Qs!qfj z(s)erIAoo@*ZKOmH*{*Z!1K!{O)Gh;#8U-iRh?83S*M%> znP2TTS*P3#QuhYAPI*D~HjpvyQ~ejnbRopmU(y~$o#z^=iO7PD^!vBxCY4lwjld=pX!q! z`?pxMU%as&e9b`XtQT+nQW&C82@n)&MH&psHvXu1a zM3DVlw6yf+LXf&`8R@TQK}8vqm8@pV}1W=*M)umxgK>`#{Odr=^K3e zfa}cMDuMG@wP;DZbBL__9(_^PfyYqR+z-g7-3wCN=PCLu?E6ozLrkSN=8q{8-*0jq z6Ci;A~Cnaz)~p z12T@DNT=V)AZ?3k`}m?y|2R?{;#lk#hjB~b`J=6-4TzKRJ{e>j5lCkoEkW7<)%G~( z)BZkfhC>YXKg!=1ZhXJ#e~mOr)9B}i>JrCAka2WD9^)7R(pIUq$3egT{jt~~mi2zI zWZ)Z4|5$ct+Nx?2$1ad@Oh-E7_!y-9rrI6{ecJmY*CB=$ALs9noSOq-`flQiLrl4TF?r$xV_L3hMZc2qS_@=6X-KF4xgc$i zYI{8NS_u`pt>K(^W=Ed zOF^E;HmTkN((c21){J{P>gD-u3rM@H+P)vy#)7_+OGO^PlcU+s`=@Pf;{BNHn81B; zP1DSc^`G!G^gR4KOxq+J5pk5%=1#YQ0e@gb1)Zbhs-f1d?uvDHMI{iNfAeeqA$}>}*$o1ZpKF@d<8O&G1LXMMigea< z7No^Cv>o?){-)1@=Eai^@tpLFCl7Oi|M{XtZ%tb+$KxoF@f1Tk<7o)ex~sMykMvp4 z_gmp}0>9r%eNO6ReXRT6e807PtFKQPySIN}8|tH8=GkrTA!*M#kiKp@Eb~!yka`5j z<9M>_O(5-SknO(!KO8qPsGHUiq_(%8Z7k^ft!Bvk$=p)L29E`fk>Q{D+LHk7ekQOz zlQc~?H!)?U#P>GH_}7B0?}+Ld*%EgbY)fAwK-wzR_P7~aVc%zYkk9Y4Xgn5q{Lxpl z&wa6bpfmNGDL4La*+EVF_H&8%&=(T#J=-MSAGgbXxaTYB|BE2|wfPRw$99S?mMhoU zn?N3?AMcUt{9gM+clb`~@3LR&U7+7f?E+~*&&qRav)u#bely!;U*C*_wv5eX8>7GQ zwUNhgswZ&&Y|=DtyCFs5_!i{28I3&FwF0CaQEl&k`t_ervK?Ys>=#RTYG5o~HEkNc zo1$fdj3XZDjH5kBdr7rD4*HbiwF_#v?cmI)F&Wq zFG#;9REI2+cq)VJ-@8@++wXCVx$ArAS-R zeL;@lBdVj?Nj>G-OI-i-{Y-86=l3&l4WxW4knKC(Q0l4JNXF|7kmt2cApQRWvRumq z*=_(xn+7udpT2iVhTp3wmsn5M&uu|&SE0UK&o6Eu_aQz4*{?S@l>DtA_fcWrv!tW$ z|M{NfzxF*#_Pz2wORh4xjp+XuzGv}%C3BedJxj(tvWDZhw7zGlh`5uW-T1MrpQcf} z*2{QG1UbH*P<<8T@i*o}xi9q=NWBN-JpL2N^;MA#qN{>DE*h!+6XZIs-A1|Z*Bzu@ z0P=ajl}++orp`yAU;9{|w`>BLe;DM-sq$udj#3Y#z8mBb_O|M^Aj_}*M4qSQfYg6} zD$hg0w~Fot^0~?&)$fBY=r2{*|4g2%vZs=D!Z`JUx2kol{?x?sYWq9=g$pyz<~!Chbj@Q~{M zUrE1y0rEZ2?^RddA@fOpko`U%Yyz%V-D9VG&yorxmk%l(r-0E`fC9;1Rqk}7ix&U>>k)^CA+AG{U(6y)0Qtm+0Bc-rOg6)9GnI@?jPtQ*Bhfj9)H(Vmw866bM}Mmr&A!?ds|;A-vu=1alh|3w!yEt zzmQMMwaWdA?>F+W?NM_pjN>kHUfK+r^{7sKP|i>1K_2%HKO}k`$m87gu;`mXGd_p! zGa}#iy|0`5FTc+?F;?1ZjFWbi2id(fRJRA|&jT{9=T*-E8P_t^g?$gL8#Tvgrhg!I#cAj=mPPj8I}n;YMqm-6R8TFmdF zZvp9Vk?LI_{r#l6(gpF?5;Xn&!}k}N@cDo1`-?1mU%)ZV?=3jSNgfjQanTb&?)U4eAN^Uz{a}#hJ|Xv|I)Sv)Am^d-CuJTw4RZd8 zJtev~$bB*k97}9t`rmh?qS2{^Aah=k4~Y z$Ad2D)nF_b^qYKt5dl(v1@b)ogX(_g<@<{%U`?c#{$0MmNCbHvz6-1arl?K_>p=%! zknbxhgFN5X2YG&Ksd|Oxe**HnyH9nSixNlVCFzIpAZ-E2^Ve$C--0}ji(Zy~sRTwM zKLO;i(+1@AOkdDE-p%NIgeEQMRawL_HVww@S?t>W@+C) ztv(a~9YNX@)mb3@>`{Fb!N$o1lOknM~8LUe18IeM1Vi zorOFa%do%sbMiaiy$r5_vT;v@bmPaeYnt}q0rA`8p!k~r(q@CK^CL~)it?=cEJ%yR zeKKnMeFetzZ~iV^2Fexmcj2<}-aqR#%FF#M7s&DA205>JK{RKE#^LoZQ%2;{t6;!Y_)3FQ1cTlMcC*WtbHlKc-q&da-1hqjS< z=@yXwGeFMM%T-?jIZwykE%{G^oR?ly{WZvT{{ph5*Ho9jN6LFZ9)Fpt{l8yWjIlsF z{E!}}4&N{2qKwn`3%Nh|u6I*Vhx`7(_rt%@G&h~7ReeCpQPw#t$8!si<9!;)dFp|4 zl0Ft>{12iYj>G3bj>8v0j>8qIPiTHw)J?k+WO?)W(EE^Vhtu~9R|;rf_5r{4J?79p zO>@(!TGg(;_Vstk@%$3V_8kS;zFD!7{yk{65A~Ss1I_k}^n2PTPxG#B3Ti>7*eNfWeNVBY+rZuZ5?RWrW`{sjeU)M@HkAZC8 zEBZac+aTNb9?13`Qe6r4u|2Io+CbIz{l_*qeZP=YK-*G(%-^=W4uNfZIXSRxJ2j1Q zv@I*`cmibm-Ur#f{^63I4YGa3u?^#|2C{t(K(?=&>KU598Kj+8ZEqjj@lW3`q@s+| z_X}MQNn5$kGElz<@6#uNZv0sGo~Buvd}_E{*DL_pu4^FMG2lhHzq$@&JMJDK`fZT& z{ub3`M#_EH)*#zG8RU5&TlF=N=Yxa{$$t^#yt`KQMUeAvkC!Ar2jo0>QFYl-63;C! z%l8XQK+eC9j+XBY`h%QrH-Vg2_q-zCBczX!?-OQ$oIi6_?;0!LFZ3EG`B@;pUnn_2 z>iZUC{lh1U-=>pfKlcT>|6d2$KZDVioOj;_X^;J)(zeqkokoW5U(_WJf; zGV1fZeE=)!kJju3;eKnydO7kmK=!eyPaJ4k&$$m8)D)x*Is=5+^z<8vGjgb4qb-|j@tyB*NnSTJR1)fpea-?kEJVWA)8YTPl z9+2~KD#-mh5#;`u2Xg-02y#E3qwW{GacJzZ3YZdE9YdjO+u?9f8+p%QdZXEAjsf$bK85 zIt}^eybIFys5bkri9GkFZ>R4Knjzh(?_59o;&P+T>_HBFr)l&_8+Jy{1FwUOXOZfD zXXQLF1f*@nc4q&9wAi%3{$pH)y<6;Y=*zvfn46(qPjq0+D>aRNSL3~6+LtfM^+p=< z823Do_MK|`IHcdg-Y*{K5LdqwzP@B!F1#P?zaHwRY4n?xDsd$Zl(-W0ed2B)ZK`T} zT=eTd-m)EHxnhfj<1Ja=C3dr7wb`0hqld)N59E03iFEeQWRSK+wSAn?r+*y#9pcD1 z>FX25;jJ4u?(5f+w7vR%an(O0jteNuIAV}b>j+ZYiXa z{&QTkOVW^STCF!EuC5^07n4D*FXn-~eme~Ede1dO?vo7!S?&Z#pPrer{dAE1{I2Sa zAlvsX$nw8{j5Xp-+3px(W87hght?XTwzr?{{HOP4BNsToKil<;uP;(jZ!X>^4d{!w z{C&YV+AWs2`-5!XM3C_xRo!ce= zy81bg>*?XD_q-?Dr>u~Eoe#1f*MZz0xvGzX+%F|pivMH!zHAuUL~9L(f%g7nU-{2J zZlqa8KWy{Nv%bFLdBKf$VEvD?Nt*VFzCY{L_h-8xo%M_WX{%J*k2Cr#=(z9g5KrxM z`QypJJFx!o?9epta#`QRy(jCP=}2chAA_{tRNLdB&w}0`%|zZ$=9bbo91HBDO}3a4 zpmU!Ij48UWr0M1+{?3;8%C3_2Sv<)4I;t+QTH-#2`sgbRbH9#KE5y)fzwFGGcRNLdAU;lCCb%-U;FP5y-z*tUe+Ig?U z5q?DCSc`PVaR{W98z9;q2YnXyzFo+>^1dCn=esi;L+sOWzeyii?`ehKC-VZ2YwJC& zg_`C@nq}8C&C+DTUb${*19HDUr#kdoxqf>CV05!=wqtGj>`3E zHIU`qU=6VKPjcOS8RT_x^<$#%2bsSYek2QeXY(Q^S6L?LHEz1-vaAFzX#R_ z4}lH9v#Lj&kbeFS#PwVueaBLO~7rc2cDAmwK72F$NVDiYt;v-_kkR9 z$5g-htK4@v2h!qCi@puyd7=x*`zHNB-WPd8^)it6FTMqNf8-3v`;L{)NWa|z(qCJ! zA=pdxFt9Q7yQ(*UoVSjFJkIN3EZ+isH+U=98RYRXLiI&a{u%1XG?+qf_^_+ z?oD$2>xz(h)(!GF^?*D+Ge91nSs;(g9FX&a7vy>V|CQg*7Iv?!8}0(xU)w;&>q?S! zM+1=Sj@}^G9mBvdaH8sUAnzaTR2_4lJl|{xviy@E=buTc%iS-}H)BEOr-K}~zp8HW zfIQ#q0y2LJ$ouOXRTpn7&o>)`W;`Ir^&-_L!AR&L?IizUkmG$I$d-;)Jwx+<1v#E$ z+Dm!==bITA1GJToNVzD7=bMXB#_9QH_GRCBA_aA1wherKRJ~o`efnoLjeeVl$~bQe za(ur7avVQaO44V5jQ?HK&GEMxosEBYL>RHU@; zNs#S}j*|9u1gcKRd@~tj{v43!$JCAz_Sa{608G_VYxL$M5?f<0*l@iHnY<7kxS`ECVBJEGb? z-WW?^&o^fx|NqwWP3!lTS^WRQ?=Q={?%U^H>?3#Uz+?7RP2)bKg^!l?aU96~zEE`@ z$Z>hs7`a}W3i3FuHCCQ)wg9Ok$H}_79>{gITXj#6`Ab2rhrUw%1IXj?s_N3?<+)lP zkjF`h38Hs^Tn9CpDC_j6LF(}!kIRX#%Ja=EkUAISI{vuos*`2?-UwuVKalI35vtz@ zdAxn0y4n=EUP}a7{%MdsGhFpXkVnW))nzl~`Yje@`8Hq-=mB}%Hc<5(&;`9x^=U8` z`nu|yr^4ivsUO#uxR)+zj>RMF+;*s;Z>XZ`>%k{<&?8tnZ5< zkNw;jq&=y-%hi=o0{Bupys21QkA}u{l;@Yau56^>ts}_(GW(~A zey{Bi$2f;La{b~+#WO+wI5ufo7d%I#&C%zHqmfR(D?r*2)%G~()4xBm9pXqSp1(g_ zcqZr{M?Xz#TwRX8_8`Y|BGMU0H;^_}wLK2{wBL8#?-0X5zZg9F?9gr2D*r6EJx?4O zFLAsMGLAHTemEDT?NM!ygMR({!&n@64D}Aq-yd0cCg|TEr!{SWOX8ReGLE(S{O}M+ zD|d6?_@GaFf7Et};j~{2-o(Hd>Nk}%`q>aGaeNChjteNy{St#Rw2q+vIHli$o+~6f z#FSAYf4^ktvqQJ(LH^mHY1Mbgc)b^7Jk$00;m08DH`Vt2L!SjbPfT}+Cp^R#5BE=w zK09>Nfm-R>GS@x1OXA4{8P8sQet2DjJgSjBral1jT-wvv7{JxZ557LUR6I~JH^;d%GJ3(Ie^#SQW4Q&Yn=Yq67 zs?GhY{mH)aKmN8k?AMbeefyR3bFMx+bF*T#=teU3tg{kQUShrWVNM{`VLE1dk_Wq#H!k(vPBA>s%f@Xi7wqN72o~L;pkhy}# zmGwOBlBT)2v07W)+f1^A(w!&k!C&<%O``pPV4x$T&I;ll)Nsx8RT`_qagE-fgDSvf<$)&>p(xLdJk9^I=P7C zF9qvCe+2S*+F7sxcwP16qH_Q11jy%Uf2h8zn2g8CAm{H-!6x8-)uW0>n}5$U6J&nF z;Ar#jdA0zle+D_`E~s8oLhi%;4bl=rMBfkcJkb;6bBW;~ufrFr-U#yg_&CV>W`BXa z?ygl*?z7zk(qC7wA^3voiC|;s_f>xha^AWC@;D!c@y+LHuY-J^HXr0UeV6Jo80*Y$ z3DO3rHjh6&zwr1f?0MRHJP48 zaQ!K^^8HYb_C_J)Gi>FrY5AHB3a)>#t^6dEqpj2OK@~%cie18tiixH1w>0qg6;sQ4 zocbVF>xgbB+us8g)L&O@{+4U`eOCFZAx6Z&@I3s5uiVg_kkk^M;Dp@6_ZhBb`Oi_@ z$0_C03^#*S%P8lYS7+4}|HnaEa&6H$D8p@|N)d#|5wxB6~TL;O4g(#ESEZ22u+%qZOi?Sf~k?s739MoiB#MpT#5 zH~w}i^HSlLeVB2romp4-qwS1E@lx-0knQ+RbyV3RMsTMhW}V@i^Z#znoEN0cd3vwH zcwW{B;ULc`E|7jqC-{fw5v~zg|E3E0`#1}A@%Ua)ieDAr{Wy^2?dMbax5v}0fOrz% zm&c|Rk6YtOE+n3|5&7fsYCI98C7wq>|9I%XT!kV=Xea4&kH*9PFb)3LR`v(uVSik} z@1W*95f#Pxp%nH@sKLK!%l$GA+grx%_;buJE)VM9IsW_WGCz&`TjnGCyvKT?xbM?S z+kJTHBiq48(oOl>?n2wGb;Q)-(*C=HtIBZ~YPL7osw*lk)QC$9Gpb^oMdDZv9T=Qf z%v&Uf`THGwt@ZPjrR_Oqeocb&aZsQi)>D`tBPX!mqATWalUMz8C@SqKQ!LOA>v8%! zF13-)aqL0A%quC|y${ly$|r0243-bo@}ODXHeS-T9LK9^AosZ&F|l z;Om&5uN-YpwIbr@N6^1Ltfw$Pky`@$t!-rfelxU9BQZ{Bci=ei_rrRe_P-nHvAW-z zTKnBR-a~P`m*jkE9`C(b4)YxAZL0HLxyr#t<-{-IUL@^AlqBiVi|NLve<{%vt*V%rjxrCbz9 zy9acNb3Mw^UO^n}&lwyx=)OYZB4()VG_rqAZ?WD%J^$+_r8L@pl2`SVuJSXdOVaU7Wx5zBK*W{iiti?^z|kf7ggW|IcU| z{run(|2<-*{fWq<->x8Sifa3Loqp|cWH`ie+Aj{{#lSf3*EIUsP)*{fj(E7AB9O;8 zT7b0YRNLdAU;q0CiydM~kIvsGIYR?u2^}VBcUF-&>PJf)dr_8gTmxy1P|kn9(5Jk& zf@`p#NTZ03yIiEN!8UAedycd?%1`bU}UeKV0KnsoLJ}Y*#_|->x|H z{}o$1c&(lFQeZoN(X2DoNsR0J4tT zR4)bTXP@emAlp^)K1n}@y6Lwx>Z7#+sqO7#JLLB#SM>cYUUTM`c`gb0^RbP+J-H*L zKGL3UZ|BTv`P=D6*?@7TY5U@&eM75D{QE&#vv_Imbda_mq`%{;yI^~^XE;b(soLH? z#xL!&{q1O5`%;nbe>@qZrM}F+Wq?ft@cn|S}k-2X0Lzpy`2 zb>4R4|CVjA&E-tHEm7Lv9_0RgO!ZWdbuLl;1<3w5rMh|3s%E_7L0-3ftvdY{sc#0z zYq2G&zW{lE@09B1w^lXp;|~MbhOMeon#uN)LAG;^>d}as?OYDh4y(5B5B9fxo}USA z8QaG8?2YyHk$G$n2^>4WXd1U2s_TLkx=vV&JoESlX=Qc3wZ}ofg`MAXkUzoP8rN>& z($2~t?M~JGK>8UDGH(C##z}{^Wyj@jn^(^fZftK^-Qm*SQB}oXzZmg$ftDx z>EGTi`gA&Pgm05^&h0oxtn-1px-TA{4>HmN`}#{wSoH%VN(L9?G#m#HZIkOI=j zJk_l$N%>A7$IEooNB^5Z+Bwzsb}-(;=A~xHpKoq0V}|~?55nX9+LPhX9!=BDjf%A; zz6~JT6In-eI%tkZ)sb~2{u&@{I_ja{O(5-@YI{2vXJPY?$F^VW^Td8zJ2+2dV@~p) zKd)+9<(3jpLy+;`u6h8-_{XbW1Tx<3s-s%T{LlyF{IFVeid*U%403)LuX+*4`C+^2 zsMaz+JO(oM1*)6fDcko4xxZgiy%q6temJf3Yc-sosO|m5{wVCY9EW`CxJ)Q3_1^~4 zdZ?ZRvL9xH=5cAe-pe^_erwDJoT2Q^}xE8))w;>kkjKqD)va~D>jbjB7j!)vt#Nj6 zn9ta*g4Vam4*kF1)((!z1cz(Bp_+DAL+SsTjU=8nx}NO^(%x2W?|=F%Y<-)K{DRiE z+#hVWSvmgUF=WlZnRW8_zem@yZmTf3)Ng$|1nX7Wt03!oOLge|(wiRabp08in z_HaE%x$%F?9@R8U*KIECZwYe$KA`#~kp1(f>JLD+|9jPSZjJLDkzrI&pr-huq`hq-vtyP_LhipFrY5x$3ee^okt_T^qoiZbUk|& zq{ZR-p6za{*ZW;T#_fOJaH9^(thQw~$ltb9UCX+yg5U;CdnZQxO~QQ|`Wvn5+2tVZ zuxfj|=+o)E(HrR;=QNHHYkli#=!=KvgK&pyiAQbM65M{Hu2*-1Y}Y~6Wg?{?Qb78c zr@D2Nw4)QqcEqDT`fsb(A0t)U+rfAXo0l??KOc3_*!T2D=J~hB;l9VCnug-0t*a~X zJz7uNvmT^H)|d9Afwc7?Cd1Lhq9JVnFVXdaApF?2{p?XMl|NL)9hQ$o%jK$ob(N)k$|teNTg&ABL!&0dju$ zP<6?BWPW%6WbD&b*S=S_?*_8JURK>j*R#Vx+Dg^-{$hXF@5^WHl>72Ic-9c}sMMDL z((L87q1>TIBtH+NnSbxdye}1j`%*gap+(li zKFzt*&SY{CDMwn?u&wy(1hVV^ko`GQ^)itCxLNfXkp1|l>iBjN_x&KZ?+S81y{LK$ zXwEMUN*Gmo2HtCr+~vF19*%a&6uR<;`f(q2>Tv|T2)yZdD+ zKN+OWS6!}hF+BIFV3a&B&xY2kk7RB0rw_|^52na=PlAlUTzs$*-?M_@N-S?goG)WO zSMut%nYwKj$gT>^_?%u_I*Ll_d`_g1sPY+2+1#~4Jn1R!D@>|H`+uW)CCdQrX3nB{_DIV zaixJF$Qh-&(iq8)2ifkHs#k*Sk6hKQ$4Yy9fNak#ol?DLExaF76MqxlWyoHZxhw;HbROHXe6EgJt53W-mW^NA zn(bgZZBKuxzua@uo*0nr>;tmzCaS(ERq_)+*541LeF$Xjh( ztNA{$!~B|ycJQ7G>u_s3T-pxKuT?usd@Vti=?T(r8feyA$o{*c`wzu$*l%f4Pvhrh z`<5W%9S?H30%H`yQnK=)s~3+CQ#b**_oSJU~0D=Y^mS(!XUv)^j_^ z{_UXpMUdlpqUyCE{r{l)G{|_%B+K^Iz{2`B330H0Uqw0E3Xt{f)$Nbz_641%Qn5YD zC+K;q&nVe`9!T4(+G+lssoQ2?e_qt{QcD~kw9eLX;_x0)4z??<^GJJ;_M~e6^VCU{ zrG2C4qo;IzGDz1ePUolaJ-Y7E@s5kp16Abr+D^E(K|a zK{XVpmR^S!?~v$&I62ZiJlLRf{Z^;^`McG zp8?X|Qe8Sj+R*^y_M<@d%`%Y3$%m>Vbe+-~G{<29=ge`1#BI%~7L)&j^UVm%Asac7e#}1VCGz8hsAt3$FQe9(^ z}Og~x@_MXq~G=+ z`|nMV{kKu|-9seb1Jd7Ykah}W-1UcwwqG~R+}F+6^@Ei6g0ylG#qzy_m4h<0np>n? zGmz&09@I&cqhI%UnX7KR2X#QUI|0%n4oW=!e!{;KKfQ9Kd^$+;_tOmJ=*Q*f=i>LW zT?uVRBFJ{z+w0M76N1|tp8ZmOAZYrry;n63<<4rpfqMP(vynep`z@=0e%p^Sw9mCY z`wM7~v0uv7(0;mA`>7{r#_zX3YHRsmtvAxD*A{;=%JfG+v!60Rn!O*=k-tLoa~$%s zkk4&%i?=tzwIAXf`e_^M(fk}M-|zjnJgv*{+h2F<{(4yZcQnZM$~r6x@03--J0-k! zm$h!>_rCR{N6+zkD?6g_MmU==Gi7|{r_F2+Ui^Olf+-_n2sZm@xP>cGRS_t zuDaB5J+FYYaUkd4E2@kCEc5U4AZ--L`S-l)zd>G)^*bT?LqOhN`bzbWAn!AuQyq3v z;w!ALGXER;%IcFZ&xpUqXC=OtAkQZ&RBr^?-g@UGzZuAJwpjK1Ap0vWPx2dqW`C-F z4P<}3t9mQQeQcihddA>gtExCI@H=$%xLA+2eS-2VlQkj#IAF|C4Pwl^`$1Y)kpB9q z9;^9Me>Kz}ldpbnA@yg&-~KvM|8)E0Dgyu)p3&wF>(I|CZj%waFNkJV0QI>vk^ce7j z$oY)N66>M1+xTMQZy`v_0eL*{QhiACFN55^T=5ul|5pR48-ZrK9OB8)cu?$yohl{e zgG-A)7f62%Rks9L-@_p59{_T^jZ{5F^PSqi*umd@6{NmiAT0x=zsaiSYW@cx{p|ti z@387~n(yQ<*TLVC3o_n62WeiA{?4ktuKATN%5l>eq`y|GJAiC|P%ysB`MOAgJP)ae z_e9Izcu({S{EoslEXVy!dO`Zh)BWD8gtWUeNb{&30kYgoknLTldY$IW`ZN;9Q2z6U z>wwRvOOMlJj3w4(jVX%>w&S=t#!f&w5d*9&)yP5TPb&TaHXV#Yeuo+~WJ5~P(I{9sedT4hY7QX{P+DO&@ zemz<~rKb293DVE2s^@@af0}>iH2?8B4%?10YsYaHCgs+Ev>erkK-PB!Wd8=26$oz*v`WXOnoQ+gHMf087Q5*h7siS6p zNjo}&G>_^LApOk*S^q-S>oh;APN-2OtsI_Rg&S28%NkXtMdaaY*5n({Fyf2h8`rW% z$<;;7XBWxv*$MS5t}JnfMoYU|fo#W2)&BR{(y<+Fj923P0Hl4UTFRHd@%$(Y+z*pguh9G)ko%<|KW_M;MYyEC`XH?($okr=?yvb7pjlsJuo2m_ z9PSl_8zHNU$@f|svsbT&a(Rin~3exX+)fLyu zd|4M{zjOmRU-nZy2jn_@nd)*5@n&kgIsZYt^u_os`*NlDKMK+=fQ-Lbw&-|}+uQ;& z{<~E71bG~$t6m5){PoBRI-?%Q`kdOcUfYxPUuaL=BhAgv3?_ViRe zTJzrk*`E2Tw}NcXe$~P6NqZtd#@h;Hd)lcU4Dz~ZqUwUK`@LwB^&BZf+f~?g|MV=0 z`!A63l%FR$8D#%HrTSx#as90N3dnZK`iS=)@~_`Q4*Rb6Gc^wT_5RFv#Lv$l>kXeT zIu11VyXpr)(~tQ)Kkza5QrQRmm#hV^9XIvUcn z|J{2L)^=H1-v+(juW(A@c7cpDQ}rB>{Z!@`$*&A@zfVv-1LQa?@vG!VfE37MG2iad!RnG<4pLwc-E=Ye=0BKD??q9iIfZzR_h~IM)6nW!* zL@wI48s%6fSI<@EhWLjupVIpcl^e==ranl2EmS`Y`s%NW`tkcwZ1rC$r2dTZ?Tp2G zzhM_hI|H)*KUJ5quK#&ouV-NWF0aHtE>7ZD0n&DYtmlC0Up2p=en|34J@?g@dWM3u zNg(T)t@;DacUteIq7LhRM6Qnif4U#>z1~l_1k%ETU#*JrGlI%MyQ^w`HMjM+XB+xZqfWJSpSXt5Fygu&LGXBdIZRFGeP=YsCu2|7j&K9%;qy$kI#&d zg6~7D4Hdt8K>GU?q`yB@m&E-jS_6>nZms$;kn>C*)k8qGub{X*8dpSlsjo3ee-D84 z_lW8~n*ShHnA{Ebt8X;I>DDoB6JK>GVo^>)oa1JYj*u1jcDK>Dkr zy18Dj6x6kp8->9tP6ic-3!$g|%O&ywy8^O*gY|w{MUe40)w|7B?-jkDP@$64>jJr5 zOOW-ZfULKd>K8QMsop$Wy(w3uKL&xc4ApZ%*1H~Ly`QVzr}<9vW8_bP_aB-Ul{g;) zX{jLV9ie)%<}U*2XA8)2wp;aK&39^t8~#S2EUnpfX-8*}=21NYq`#RU>tCpPo#sdR z-CyX9I(dJgc2$XcLX5<{8DxJ)Ruk=i-Jgl=X!jhEI0l2XS5*67_pe8J*2i~tOsg&R zM}f44s{Q?V)z6qi;^za9_L*vbKOx5?t{lCe@I6R7tGb};{se5t_%ikQO9iP(T4KD! z+ZLpC1KH30RZrIZERg+Pke?Kd@0d&Ky9Uz2Vx_(qkk%5U|76gt&*6GKLu1bS53XEbLw8?(Gy;rZ(?^q!II)SuIkpA9PeH~<+HQ$x|W+2-k=l{U_2d?9C z|6sqCuengRPX=i{K(_Z~)vtqQeF>pPR1p4V1b;JLZiyVcF#v}fFM-0}A|*T#DWk+{|>ofqm2$qml2 zzwZ!|*Ui{~^7Iw1zVf~lU#Yv>86{dvy|wQYKX-xj^FByRxJ&(@J+XN18ooNe7xTS! z_~6`3d#ACld{j`ZWBXH3{yfSurtCOruM6u6`VC(tn&h}iMmqOj_z=+~ZP(2bU%f<$ zxA84;UH}s$o)1Mq@TAyj>9N(zcp}-I|Fe)iXa(x z=1GYo8)V!Wx-N=tA@w%}nVtvIPp>;9eJRN8V~ZCtiYEpe;iX;1efU`)I?(+48g}i! zX3K_uZkw7Q_hZB7wl_K?RWs9ig0xJKe(moK?Z#I*85qW)cYMsEB0Gpy_qP>{&iu0S^fO<1L9{0NLvW{ z$Fp9ybKADNx2qPJ_?n*9c7wDu(5ZaL@6u1lFH8B$AT9n%V0#i!mhH%! z*WSqZRmx8TY5vDRiq@O7L*jlEG|SoEqsu^<812Ud?MM4~Sd9Ey?PUArAgveZ)Q(*B z*YvEm8>FRyW_kO2=KA~Zu3#IsC)xIU=_1C)nrSsbS`O&s&vili?TzE&Z!t*w0W{0o z+L?s1D|FoFIE?#L|NQXTd5P;gkXG#Xz<%=Rww&MC zUjClI6M9_!p~q#-4$k|3oNk-2Gr!;Bm&9)+kk$tD-#^*dcJ5FqmkrYF{l6dilZQxt z7U-XET*7>-`7Ve2+RWGbT@LjpBmeC4QorFaKGKojUiX{F+Hbb;mBsD#d|;p+|M<2c zzrWU>;gFw){Fq_lKLPaLKJs!mBl)7__W=F#-N$`MP;tDzCGRxlv`tM&a%C5Q~XNX0Im&Wm^9temaBx`5DN6>5SyR2AcVP?;kH#Kik#M0S7<1C{s?` zQ{8HhUp-f}p7FaR-dUjO&o*vce;{7%zs{hU?^jO}%FwodDfJuxY4&!fqRdO@v|XTo z{!HW_(SG^e>K8vhIqGNpR~j$qU(ZRDY5a%yxeN5q55J0WuJdCC=%3#V`B`bQ{c6xZ z--G;07;l_=>VUL|K&SCH4rOWYVx7bCALzR0n8Ug!8)a|R_0@g4zIvg6b<2LO_qeWG zF6+7_-r>Ar{MpSItn=e|ogdeMPVv@8S=#ehr!d~JAZ@L~x+NK9zr(tO2u$8}wDS=S};I1ZfR-KOPV$2x@dF9K< z{GIkjuC7at7O*afye9pyc!$Kj0i@Z-vm0eRx-J>$urBG1{2A?J`z0W4AL!JMO!aqM z*Cm&AT@sJu#4PV{{#}o4is|{bB1p>yo$B{${rBklI|Zao0L}8Y{T1>T&OT@K?v z0r|TIN`HGnTE6erblsGKa$9l!XP@uW^+3u5=lC*Emi9c(_bfjaq^$-0<6DffXL0^x zIm6-j&1HO8_b}fJ((L=~3i6qkgLRTy%XM-n=epj_co^#lmhA)5-T=lPk)-=*sWufsYa2l?$a-{X*f68Vh5i}od}pB@f=!vDr~ zr1qm5q}lta8S*D%9l^S?K>vIXx7YQ8+hM&h4*4rIKgS_I8~NRIJ(23Lp4gB4tc&7* zHR$gje-+!9jCF(=A86+LoiA#m3~eFS5iGYJq}khx~lS8#}b8}hsBdSXxk>xn$|*9Yf!`WpuN#~&H=gfUgmoAa&nrtNrk zBY%&sCw?kmJ<%IwXmxP@r=QzFn!TSgQKtI^Y4;$|%=hc>^;*v;gNdb}tzRo4^q z3s_Ht6w!FT(s)4ApRHX9D6>b`6F)huCsL5#Sm*h>3Yh0J)XypP^QVKK#VGUAAJXpE zKr;^8@9WD&KKsmz>)p?{Yn*=1y{@RAJHM3ts5&K#Fnm{KzPIBknp`A7-raE(ed5M@ zR>su!rmt|2W6}RRed^l%V$3q#L6%7e8Oy7xv%q3V-=g{(koT{|e?`OJe-iw^gM8MJ zxuqTc2UGuygWJ-`jN988?Vc6CgFvQD1G()Y)f+(ikBTc|lnAO|{$BD__!xyWTGs8= z&GKhK^LR7+E%e5F(lb$(_2uTtJu+jm-d6~X|eFj z`tAW)t~1Cu$Ac_42c-YipwDkv_zi>KGDfLs;`gNbP1SlcK-QN9vc4RU^?5bFaW|b$tnNB6W*57#vFD89${3dqBL>&>y!LE7e9WgP7VX~mj}jsn?+yH!67GR_Gg8Cj8zZXU>SYV&$S`G-yu~SI($*!@8IjMY25a&%Q8R2Uy*q) z9(k;*Gf11D+Wz~R=-2=Eo{e*eW!zA|SiBCgXj-S&V@-b(LAF00>1G_D8HZ|n9P}9# z%io2A-!8;Ia6V@m*<$~ z_@(d6;l6(NKqr*wVEztBH~w$gOPXfsy&K}p|9-nM&TQWqkoL!>IJ3@jABpbzah!Qv zy#&(sZjLjLt3N>6$(%Uz_%gPLo(?k3d8*sMFXJ2p(w3^W?^pH*{{~l?plU|2*L*sb zz~@%Ak^U35v9~+nbX&6?&pk4S@tjr!Dc+Cd+{SeF4a?cLV+ztLw@ z_2NdUqb2f+d)aHUcHE}@W*^7y)-uljJ7}*r6tR`U5BtiSk$=A!p1}RmQPWV|w9fr& zn4AH!eebHi2(r#9&q@A3kjF`e>X_6T=5f*VDE6`$6{qUX*7XMNx)!8+c>f>UoZSzG)|Jpl|JIP-x!pcyX20U=ceW?<*}(Q3(KOa+S>ChKuEzbPU9CXc zRFLiY9;Ba=&xu|D(iWgDj+bvhT4;aK_V%((Q8l=}DQ8%%<@&~3z`kNV{`-tE&_9_m zCVv|c+i~kP=TA)37b~rL}Ie)@cuA%5k>|q=ikD~&%=Fb>T4ja%S6#nRW5YMD> z`Qyo69(b+^dQZ~mZ)kZJVJrvPKU-0r@%#?b>Y^;QJs$e?zaCxe5KH9v{IMiN1oq8K znpOkv#L=Dx8AltW)9)aVwp6t}4*HC09%j@^4>PLwE^AZ_iZ#mSmGPF!mA`FUJh_;; z-pob0uTcl<&HF{J11x4m%KVfUE%zaes^Ty08@Ycl4diw^K_1s>dnJ7*$o+pBWd2Rx zN`3}N{TfJnPxWTd>_^^LoF?b#D-M0uc7m_ZIA4V$o)plHAIrLH8ujf*#7}pSe&dlx zKb^H56I7f1HZVAu=O_B*@A0XIzbjS+-+hJQIFkD{dXF;X31b#3hp{fUlRqbIvGE+1 zaG%5e)U@m$;!y(6`47aKadif1GeOq*p{BP%dDcA$q%Bo#-_I_@<3HY#kYf&S}`!bEt+=x7U{Q=dS7WY(pk?MkoJpedmQvB@6Si#oDWkpz#$$@n{!n9#|v^lo>5)vC+V*wkm;jQp8d53r2V4W9w+1R@2{B-{k7f} zANwnFS>Rl8MAL36=b}4f0W|yR8;};N^M&0%eMQv^HR|<@GHT&>dQ~}Z{w@OZdX(cY z2l;G^SpojZ{6nr`{AqkDbGTKG$6s;$u>EPT`ua8<+VhG0eOWjDZ`mqMqi!|YWhQq7 z8UIVFUjtd+cGU;KqR=6)xXk0dA4uyvM&`#f)L9&QK1lmfwb_1M2eW;$4sPPO4nB$e zi3q~p2cF4#zrv5nSQoS1JYUkUyKx7T$sn(Dc>c846M{5e->^+HC;R${b4hkW;JP3P z^)PQ`lX(1V7+-+&cMzn%b6_x7>SobVApM>K=_@2r^c;}oA8aby7r#a7YXmZuhgA0l z*}qdj*0V;_KL@#Aydc}N6|u4%zk{^8h?Cmh&+JFOPaTi%q+R$V_M>GxD|BJZyj<2Fj|NbY05_%#v zfN;`iA_PGNY(Y@bRR~S7M`0CvRCKYeL9nhRlvPC64T^}at`QIwU5#QvY(Y`6M*&4_ zLD6+l*XRA2>l)AGocMj7@9&@A^?HRjpX;8v%XOETGiPSbZ}wF0MEL*pQ28|JW4a?$ zJPvhzEL8ljhbs5q?%%(kjlVxY*#f9|J?{P`l-V5p29&jW*mOKzibec)L586tQ(mgq z%azIY^+nfzmcAy8+?qUp_;7Jvm_<{3%3}zWo$flmE~vcR0a-y#Ms5&ZIj%`w+bbjO zarTSHy|R@hGAx<^B`?{e4e2iZ940cB&L$~n#b&yug&^Bt7+C(qy7 z=jWqpgB@Sm>0Bm!CrLHF$W)&4>^eVLXN{%Ax9N30*L_vTKL7o(wJ}!zwUk}{{Mg_cSi)aq zPrL7uiN>X z+7qsOobz_bNHp5!pjG;{@)Dj|iN_%7C)M-W1ziMXtm4%(M2WuGW9YHQJWGq`yHX@wz95TYeRNEl$-N z?Rk@m&+NAeDxu;i%0wM+irFt@^c;`pQ^jwX>$+bR&xf>uH3_4hcabh(J2ANHh#(s% zzZ|Iakd)scuH9e8ex30L=q{kL=h&btRDPoB+YPGz@%DAc*MmRBuI%Py-&CV3hK&nm z!V>->+u*)P51MKHF&Zk5t6e_<6_?LoQ`qccI}Tq2b$or+b+1co|I?u2ax+x>ue`J{ zXbU@EX1W5lL-+i%>C0hz^a9r}Ld9!4RGe`m z(fAkzWf!}Sudk|S{Jdc%Ib>jzmliZ>o?bZ+V|Bf5@8mT@F|bkP`282ynK}x zk6V?OAC;~8&q*o2eqDO`BVRI~%31YsLI~db*y7XdlZ0e22&zx^b={PGl>ZPYJKc4> zeyUGAK5H9^PvN45@yUKUy?!UTPvxAwDIo-f_|(pcPkDco7c0#<8eK{ z_}D7$XXCPp=d~h>r)T2SdZ4z}rqs2vZ~EufkKGsLbzWDS7gs>lcd_eLPH0{h z`d;Wd^FLPKj_j}cje@evT*vFHy5;WKnrl%Vd6)DMu7mcET?e(#BPDDzgaYHSFCK5# z9?Figywk|NF|smeDcfnSk`_zG*?xLXRBM&|V%)DaTYfR}NBRApR(@KOwVkN#;`P>X zO>3~?)%0)4J}5=k9GU)EGlzPQAx*Y&m!gm_LB;RE!RVTGx+teI3;C?snG?LfP9;v8#tV?ltLTdN9=SZx@3T&3EztK_KIfF5 z`bzz@v)uyl0N6obsx#W{t2tkbg25A<9aCDD9@=-w#apSUa5S$p3X4(w`HK{3=IdUz}EzY>VbsDf^@z{};QDS^ zgb?(Hs{iAz3x6`b7gWASLD@9+Rax_)Y@O?PyB<}$_GlR-rWFJ|CgpQ)Tppioxeu`1 z*0ws*KVe_Bt-8Savo2x%Tj#&+r@U1kS!0a0tK2ntoYJiIvlC##LMN82C&U)%mXD7y|S|J$L;U*-BssP*P& z*LlBM`GcXhKN!kRfnoUr^|>{_(Q#c&`K{SW+l4#vkG{8%MU1YIq%wLQyDHm`9b!Bm z#YF3$>Rxkaa%|C+LGiNmYbdkaM{;P_WF|ts3^V!Phpr2nnmz)`PJ~*oZ*~0-*bMzX z)H;1gvjqS0IiNYexdw}&Y$jA4Z*ct%RQ*47o!!F5@!n8&C{$a@p|%@Mebv76q3k}_ z@pVq|wa=Zy8jb%H(jQNWf5i}sXSH9mF3z<46FlcCi{f69qU+vmm|l{S9=z8uy_W6U zkzWG8SkC8Bv8K6cT^pCKqCPr4l(3yx=8UID+jS+qm}i{DD)JG3+s^YN&K8m3p=+ED90Vp&vPO-g#D*E>qD zPSJIbH{8EACA~gHXTRTY`{EQ`nxe~7bY+UJPSLd~x;{l`f6%ae^}EJ-7zF;Az~4mv zGzTh|Cg*c0-q!O9Nl*Byl_5`fwJRaIG>^B-r9;&*`s0okx|7uP211(B~bI{2B_-}kGXyo>bk>EusbZ=-?m#0Ro@q&t_ytRdOOscY4Q%p3v{P_ z3DkCzVJ~>K>jO$GE|Xva|6C}~M^Lr{=EK1w^8y`VPJpuWVIf=si{MA@-vN802OpRh z^noWpSvl+r7sGz=SNC@ul^66!kB7U#KSSAkH~>BicZYAfKX-IqFc7^Pl$`(v!5dxQ z1&h%e;9$7L{R0ll3-&lfg@=pW&Ju-6#dZz$X!eJ(rz-s}D+VF~&hI1=_c z)VGHRqR)k+;5F`l8IDGO=sM@Hyx<^oe<-^Y9t>}E{WLrT{jTdCf5;2x_CP2*2_6bB zcKtFu4E>?&oWt{iKcI(0*;uGEip!ynY?bbRAC5(T?Kyg+AkM?l%huoTXRGn{zFU)|aK#lXGSckN3&4#kouH(mP9f$2W-M`V}bOq_7$TYql zR-9@1Rkvu!@()dy`fS;)Bee7-q-Idi?F!F8d>6JYD;1 zJFP#(q>Fm@Sg1W8X>F%;v4nby%2!tH^;AAuKcwUB)f%GpLu+^C{mJ#e4qd~sBX#}n zNWSt#*6K{_pD|E*Om$rawf;ZsdK1+8|Gn!TXW9CH5|o_}wfrZM&bK;@#z3J09!?rB8u69?Wok2h{Q4 z1=my0v;9{<9Ut~R-}FSN{+JGRe7M#1KcJ2e??D|Gn$EE8=0Vke3Dj|6t?LhUvg2pkd^#PMQzts0HOYukbN_hRF z?E}|Uk6Sw;e{_By=_pRss~c`tky1|J=hamy{+bjWozK>#_@ndKptZ#>DnF5;E4?0N zDfKQ%*{;lWg|o_8Fyp54akQTv^aDs1QDQ2WKl)1jp4xTLkF{T0-DRq&2ImvktUodC5?-2}Bh zJ?;Ltpw_1j@8*Z|X*iUPg<7XBhgzRjyZ>jX^{L%^w%tgmb?P+Ne}?VQ55o4a#{K_+ zTBlmSZ~N^JwN9Pp`p;17(}Pg!QjPn6hFYK6eco=gzU$?sM{84_mPW6SdaZu~i4A<8}txu1+ehF%w`Wb4SDXg>ohC`jdUgY{l zm_R=T^WaYRxBoal&>n|E*$GhRuQx%Rw?5_m4N&K=IiKW*=dC4BHW}*t^;*}r!M^C1 zVL$k*`*Swshv%B4F{oTL7lfg=Kfcq&R<(@ zvF&<7oxhHQL*Oaye-7%r^d2%Uv&kI)7acb>7$9QGU;hqu-ujyRH$$Db=55Un&s%STvL$eT_@?V^Q0K3?pIiDsSb{zoj)X6||M_kC z!GY*cpw3_a?Yj3D`QiENFsSsCq0V0~aQ$~ETM2a@TkE>rm-*p&Yyp&whdLiQ#dST@ z8qxbJOaB#W{b=*G>EV#2BA5#0znb+y>&Yr8t9Kng?&-K@$Gzf4k9)PGUqYtJFU*90 zN|)JjF1j8Ot=B=yI$G<;k!YPR^W)s_twHbhcG2~i?8h1& zUs8`l(RG-*l>IAxU5?6)j(0(J!}=srw9ap3(Rr!Pk3(Bytmrp3oR7M0qN=B5 z*Rf=}jwRD|D4F()$9*6^&9^4}l|7O?K6IsjvT2LPN(q0Fo#ehq_iv|FgwIb}=Q`-s}2FsN=^sP{)m49c;UyP{)mP zp^h83xc`2rY2z5StBGmEW zCigFaIzD_1bzJDx+3N*$d^pYZB~ZtQ`(XlpbUTe>%F=agvW<5P~-F**dH!*-L$*qn+tWk*wgj- zP{)gFT(5#UUcBV`q#gy~abrG|E!)+u^FIt_pFoCi(59#9K8#z9^NBt`uX7z=x3n(V z^M>ts?!Il%?!4r4_dk*rnex?GuUws+FFJM^|4=`l!t4eYlC!62Tt)wfReV*l!JVGka%l*}}ZwJpQ6>8ff1pF`az)i?(T?qkL{5 zAO50k%3|8?6X@{U{SS$@4ex)b?`7*+*&=J#?@?`zuS1&qn(vD1*2j}^)mW-LJpDV* z&F<^4MWd7T4=SGfyPgP@*X6Dkz)bWK*RMdGufFGcmrw1!>I9T6hN|BZ%2B=Eg0c=r zm=61C5BnZhF^J!nG6o%4G*+H?qG6lLIi6_DltdfCr`;#l*9RqpU=BXzvBHl(+g!)X zS9!VJoAQiFPSEOgyHB({rC-9#_(%PtxCDG(D3ggNd&PCU{c3AG z{tFw4|GrN)Y(vHO>G5ChK9$q+qs-gnS9!Uenucpm zi!!^XFS}jCbtl|8_D}g3%P(?8I+dCaS!`4{$ymX8RH#$tgU%&%{-D0Orlw(AOV~Gc zKFoFBlARX+_o3!Nz3Y;nY`vKPWpkm%`CYC*fm(NVxK8|R_e<^pb>4G`>)BABm#bX= z1Xb6zzu5NqP<9wpe@~)bYR7CS`F6JpL*# zcTkI9*P(j{ZHRsNZj3U!_oTX!_$%(pBZ_-AYl=+#z4*TztA7dGR_vD^|Ml)uUXc~u zZ}A)jRptp${cxu1%RPM=RKKipy$!1We{|jd0qc(il%e>qfwG;h- z*@pd5{Be4J%yOT~+5hG|AsCHM?KmIG?sFY4U*%bUaQ{Tc9u4{#^8hLqkyg6eEFIrZ>rZqJcII=*_GoRZ@0Z>`BiUbRaXY8G_0LsM?OF)cKM%QX z-ow&+LDgw6RKJXKUFGSIK-KX@sCs?kdjDN*|8Y=tZ%Q3h=OIvby6brS6r*_m^+iXf zI;wuhJ)dl^=2Ngez5m9$Psu%x$`^u;_>{*eD7)BoynL1Sd+S*#XAdTc+vZP*w`n&(}h=V+mBh zt#bX9r_XC@+usY-zQ>{F&+D$YdwOOwJAc>{$_{}#?>NWxEU5F26|SFyI`8<(^{-Ip z8H1bK{-dB`ae?dmq3S!D_9{N-L)m?<yok6{7q~~A8+TnPvzXv zJWmLQ;!|9wLfInM@$yw(y!`q`%D+9O{1U#uQXiKnQ@6S9lN@_`BJ|FJ8ZVPbQ$1$; z_g<@A$LpbT|EKZZHQUC!GLDbCVJ{_PqdH|Xwo~hNlKbXvE70!2eNgpz0&2Xy>-s;Q zp8bV=t~(TJyiJ1|Zx_0Lz|$vuY5AQ7HQp|P8gKJlKji6apw7F$cirMEyS_IF%0@zs zxAR?J2{qmxaQzh2c-!te^J}}lwlPXjQ4j5Ix@vX@woow zWK1>QDxOU5@AdA}zU|IT2*Cn;%3}?b?Q|V4U**NipWaCMZC+_uehv3Wr}k-%uemCx zr?0OY*iPkVk|rDB>ukJyl^2%ppJyw*eD$;XIBb7P`LzYiLa1c~~ zOm;mJD*vloKLj-|Hj}T)>_A?!!=QA$zN%k5UXL~suYF%_7_X}1((Ak3eJbaUgNlS; zB|gP#6O?s3-gLZtl^2g!T_f>&BBlH~o<&LRufY@2<8|W?7O%UZ;`OlWjZpFW)OF6k zEnYjwSMezzFWE6LHD0P;JYHEj>Erv%*BZvFd{g@PdfI&|XaC#tgkTOn#cKtWZF3!u zm&(gcv;V?<1eE=67|%y*i;iC!yJKn_ zwymDLQ~P4%?&f>1(Bl6sRJ&Rf`SBM@4~Md`Q2leM>$y<<^OWliQ2p?u>$bh^_`463 zl|rqHGhAN_Rp&=sH>EzR{}3oU%XK`iie0>4r!>;9qt`cVd*$Zze*M^eD(Ao6uS@W$ zy>CESt1YJE<*U5k>(>geOS~UyQ|eMYFufmUxi2h~e~#^E@j4HxK37Ba=_1#UdHSnR z{qeKwoc`7y2SC{*sQ#Gg`UV)D54o;|>W>|+TkdB4u{V^Bre5lg^P%hk*YS9$&GG(N z)<}PBc)ekNR1??Kv6%6x`Bcu6f6EhsXFdMkL0NycQ9R=1tGwUqkJ?81qwI}_btxZ| z-XBl9FD#UQ-rL>c@hw#OEe87hfYQUEY%C1thwHhpDgK9DuY=+IaNTy0&kraoh2i{g zeJu>5pj}8pfdXll1;r>^_zA=i975rr}e2=R?^# z*YWaI-tYBCVi#M3WHPRpM3k&6+V-psy^PuW;H4Nv6>&HC(RT$0>*ExCC zAA3UCVKAH@u5W8=AwK0X5z4M}9WP(yh2{HsPPv!gl}Um?F41Rpz=M~^|?^TrO8$aF^|J&NHJQatkVtejPzZ0r@=zT^iSMNJgzv_2IBgXTIkH?C)ld%}XKJ}C# zmhczZ$R8Wt?>g=b>yLR*_2_%1-48YvYW%Eqy%nmgU(T}h(zES8vJcL&{r?NKf7f!; zW1#BUl=8ykB9xu(I*gw`XQ}wubAkiYo)fGgZE8yF61*cqWmWjIbP;H!_r!l6wY3wOh(byB? zag2|-9q%OLsIgY{L;9H8?mm)(HYeNo7zfqvm!Qh}8mhg=O*MTfR5>5JE|_NH?Xf@F z{_jHVzr%I+Q*6Agq%4iMO;Fa2IUpS$Z;Fk@ZCF~|vODlxDjCPy8~s+Uo^?~1Rcq~< zR2}b1QQyihR^|J3-4Yvr((!!aaU1Yn!?^KKdD>hZ?>@5r&91Muak3n$F3&=ZzpRH$ z_k|jNqoC?E8LCguayL4{`8?n{|9Bf0 zlh{`I&W5tpuEYADXZH!Hj`qI&+#vow+A^=Z_KVlCK32z4(n|J8e@Eq9_i10*w0kVB zmq6vU(slP`7UvOAHi`Yh`a;=i*YWzQUb#J+1kIP*`{b`d9~*Anu$~J)NXAn4Y?j}b zevE$FeebnPggJZ%RljlVO&<@{S991-^;!XC+gykB^7}1Rk9fVRf2Ur>A2zI4>AmUo zTI{}`+9bmAI<&QVodac;LDg#-+o@jjp=_P&c)e5)dwzaIqxU^-Bz+ByR(@e7{8RF* z9jD9u{qmybmrN`rJ=ANA^~1-8>sUE{t!I^=(?ER?=9-S#7MVOe&pXC z)|WJ#8@k6$_qVBy(?3eatqNUD*;;!`_=_xqeC1ntZ6b8N1l6D2uSr zs{cMv>%x()i?2_F^*<73;h*k$9@ILJd4r{of!hBisCK*!+bI1;)44Y#!fTzoL8TvB znF!R*E1=rB461F1%(e83p!}aeZTHN4)A!wM<@^F=gKn|yU!d)Z%Xd)LpLR=!{qE-% z>R0Rc#@~w;bWDFQS`E+lDqi}nd6}qo)(^G!pU9{6wSGVQjUYW=D_zERidS`QL+X83 z@~2YU#mAf4toEy)OFvHb^K^6>WsiX+{6+SV`yzeU;kJIPhN^$Y5q3PNgR(wjP2UPt z-+w^$`}D$J?||y(f4M$zf_=|$64dtJ z!nQDHqUj?i*?Y52fl6NpRnESXt-dp8pW<;Bl)dXZ-oNTUdk=Qkz}}>2-!JvW-`Fun zaVf577gU<6 zHp(uT!=QA0y;A+{y`Bl)>)DICPjYrz0PCAx;t&{QhI!Bs-M-j%Ja)j$rx!&W|L>?`SVHcBl$Nwaicv)cP&(1 zZi6~Mc^PUPZg+p_JGR{!P<6TtYJ5EA`X#7w`6E=lroWfRzl;;8HWgB~>N*k1u5%ra zuVQES!S{{DHM1;wkNQl~_n}kcF$go`AI)RMAzBwS@713Ae2cB_Cs#f6K0DRFnET?z zk}r)>y7p5&_5M4po2l==(_GP-pt8!gBx7EwZNF$_-6wzbM`T~Guz2LIw0Q3Z74PGq z;(fLIzk#Z6tA{P#J)q)!wCgjV;=K?m-Vd#^?Xw=S=Mo1()pb2oKADf2|Deb0ImQK# zTmL)-70)-IwtIm#sD0l-S%2y;9iQLohxm1fDs*I;bBfKSpC)6|7hQ2|`scaz?$f?E zjw}*_1^AT58YtW8IzCQRo*h31Habq$l77bTj1wKlRX-i?)m|O{MV&{eA9TD|Kj{2G z<3s83@uogd+{6C=EZN2~d?iPx9}nibkL1u==36^=gUaJHsPYdiwD(6H4W*Yu)u&03 zy(g+KRN1$<-mAC0PpW5M+x{x3{Jw^=+>Dd~IMm^=Bq&vJp@^-k&PZ`t!g>`?G7O6N5||7w?BKGybW6 z%jUhV(7kuSoCDr`<<#uv=k52=0Q)a}H_BX9bjPa~tv#>$lF^q!W1-KmC4>w5au5>2YdaYh6=0 zI-k++{A5FwFKTv!8krRzBr9XI0j)w3#ku2FR@{~{UFGITa|OC3KaxsT+~p87;j zpYXgnRR3gbvfs1Jh8oX(T~C2ZZ?W07&xeY~<52OqcuUW)z1yJ1UFN4f!}X#QlD^ZL78uYr2L=S|nw zZL{q^g^K5HUzl$5rR8@v?0|ov>j$9X`xI16+kIvFPf+Ez_{M(6vyk{H-V>qhI@j^} zp>bvRkMYjcq1^Y7k>EVk&d(}I`;PtMeOPm+tw}o1l2tP16#MdPP1oYLF=x7Z*M?(2 z@y+5-V_?Qt$uUrZE@t1<^RQX&BRROBwwDmx2-Uw;Fq~JeU-$Hk^}WJ6b%5&kJzY^yi`Kx!v_>>YzHG4`uhcj?Z7kD)+?P;E1&Yf`cC2J=kyAz+l+I zLBWt~ii3eO2M7J9?-BH#b~e9HcNXWur^M#C#rje9UqNHyv99{Nm6vc9!*Jb(;rxbb zN13zQS>x1x8ozokvbKvTzs}bp9kCq0=69{L0&3jWLG7>oG!83AnHDwvDr4z-?kt|J z=gpK)w7;G+i>F6^&D6L*9)|>JdHkubmwl5QGnEX2iaXM;t!;4M*i!57zm2!?@)eYw zHNnQslTh~HL>n*vhKg(dNj5%aOt$ec{7BQ69Mvm)PHsKab8+*IHviL5_3wU6uOI<8 z9BclK$MLxbU3`46Fis^W^a|(WQBZNa466MPLB*}jiM_(-^SYMx3ZKgx1QoyIptida zs(*4%>J_dNdqVZkX;ACQ4X&3$ZTCIYej`ur6^?`3pw_KRrkVdfsBsYdu~*OzY(B;O zFP>`Szr%FX{m$rR;~y%&@6NP1J#&`Duj|>p!f|^GaaTV*4@0BhrNepR*C{p5eg{t2|*Y`o?RpYw&K|8;h z!+t7f1(a=b9dC!~oI9jtkTuImFj^kP%rQ`d@*YIKACEH)ZwuwE``|4cx_1w3REhrDF{pY%_gsR6o zQ04BipIt{82Q}VKa(yjS`iD^U`U$EoZTB~QB2@Z2Q2E_kXx+K-muRSJ?&RDLWoY$J?!T<@RnGbm2L} z=C3y?*Kg@9!#9=f;_cN~ltt9N)$w%ozuKyHZumagPhtDsOz)?;?ql=d(iV9_a3fUx zUvm8cRDR#NZjoi5|4)Uo%Ujxfy%x$Qk*De~8_HI@j<;8Bv)>o#N}IcI-j)1)ky_Gj zW50O2^t&RmXzu<`?SA=(hV3rzlit5iyD!Yt|5@F^`YWrW&7TC6-3%4i+)k!1gR0wg zt{;Vp*E_D~khj{u0?M|zj<;WJ4CmQ-{yS>u$ds4jz2M&s+fn;s`e%f^b;)Z+3+obL z7LP;KZ!_B~uMTV@I}A#P_3-QKKdK(#^GMx!{-t9Oe;z5(#eNe^d4(D9&u{Pf=K7+n zEQQ&;dsC+OZflK_j_)5|J7@fuY@g;~RcZP)k?rnNp6j<;{I^22V<%Lc+J0+#Ae5Cr z_18JBXF>JH0@tgd=HFV^!FRTP=0er4kLwelY&BFH>Rhj+PFhDdL0LEM3zd$?Rk4e& zqhrvKsqU)xjQ=FtuXVIGJAIty_fx+rPHMxjohfZNq>(o8yr|Zn(zh(0r$Uu`DO4Uexvuu~ z=b-v;hwGMaTmSWdvN2Hocckn2P<2}DdLvYQH&YkYvx7gcdIXe?&qKu|w_g^&>yumG zrLI$Lhnk%7?6UUZ?~N}^iC1M;ic&bW^rdzC)nwEZ1TE{d`h&wBMuZp7wiGHKeTx_q4i2b^J0`#}d+O zZ);>-xjnhAcoxA^BYTDaeG97px*lksBL+k1tx)zK7{;G`Rb~hBk{t%6BR-1`*NuIz32KrQ1#0k zZ0SweNBIwdveRA1>!~`~b%NcvPQY&>Wb_WA>jc?dPYenuAU-A%<7})%ze`YzR@9;{*=|mQg37V!?f%$(B>!fQZL|6EI#l~NL*@5x*ImD` z^aG&kwhA_d>s)^ZHP60x-Qr8zemc~AyVUiqQ1!jX^;=MF`Nj1T>ZZ250cEX-g>*c= zilNS?&MwzsY!Nj@BO0 z$eP9espo&6Z?*O}`P|~!5h}kvu1lfHUIZ1#f4Y7Ns{D6cXL-LI4pqm^l&`vV@c0}C zrNj96dafAQ_g#&@=evyb)O(+z>!YPy=T<%IxDKNF>6k2*`dAEZwU`C}Hh;pk-eaik zB7d3diWGm9>zWjQU8FgF#PdnGE=lp1xvog@SGlf9@z+J#*O^LhkA4>|LA7;#KM(4j zuY6d>_F{=s+bcbR76YgJ@v+mFq<;JW)j+X^n(d7%%*UqQiH?)hbhvQ%d z+x{IY4%c?I>j!s0>6f9#$H%TawuZt7q4 zsbW^xEIIcp(8bhc3@qU3YNsmOctN!KSPSoFN>x9+|#Z2=qJ}-2BqcN*`?VFXH7d7b0`D24+ zu!O(Jwz)6TVzUi4KN3*$Vz-c@bv zx=Hkzv$C7zUClbIGW1=uSlWoz{$=>JMreCc`|I35`RSZMeo^^|$|qItGRoRn2xZ^6 zzGJj~P8~AFp8GC=s>?Bl+4JhBLFvn(`sr@hiw^hqP(r0Y1+}hiaee#-YYf%@GyOX2$Op}*eIM_b5Q62M5@9=EfU>4+ zqdbQ|+3Bw1<4NVmf7h(Ek@~!xQlHXJ>0^4a`&7;=ds_ca!>97+L)kjl@$yw(PF^d< zaEG96ee1fGwJmD&R*=l%CZ(ElGf7w9MZeWlyv@dOjZ^P557V2E4HjovoR>q{Cf7Tl z>QU6v()WTIFVkQqTy z+_d^@4pveB)s&(9D)zCu7xTLY(h*BWnyzJSlwWfxN@v&KtoNaIU)9Hl*?m`ELv45S z;dcMl-B5Zp)I53K^$la~{;YpMrEi3?A6yrVv-`P5LZwfDidVVooNg_HoRb^$PO0vT zRR65?{?WU4wXfcNFIGKnEa#mpp+8D*gkfd)r`ZI1KBF6y9qYOrsy=tSUJccMUqSWX z{u6D#iBRkNX|5MS#bK%IXQ4g^zwSDd-)qx)kpor7oWeGIPm~iRCS~)id%Ga}yf*c% z>auE^*EF@?5B0WIdYhv6`Tw!bzOVQbl-&ze-|gD?;WHG|(=sBd4_wzhRm%kr$U z7RC0QN!M;RzDvKcIjVbqWQv=t*uS5NbeV4#>FBpSA|3DwRO}5(aY3vPUW1#L|xB%+&?9J}~5bAvOOV_)6 zZojK>2$W5M`doV@)OqSX?td2QeD!tLKSG_C_Sk0oodN?cs)U+>eSJt+;O}I9f_}H!WK8?m!?P?n% z`aKp|r0d>ksB5`TGM*m1+fYaE>5lfV@v#``puXYu(fhii^b(&7kuE>LwvWbQg{Mb4 z;rT^6dVhJOOH$IyQglU%u1e80DZ0|*6y;x+k{-?NC_S3nkuE!7Y%oXxq#dHJGsUe_ zYgTdV1f|^&KK+UV7w!S^oyqXF% zuU5JL1*m!T9n`$)+s?Kh4mGb%f$iWu?tcerUVY}eU3>dIh&`d~V5s?Z9@OW-d))sh z)V$gPHLp5l+xBNe&8tgY-wAcS=xx_qq2^Vm9Q*x;y`k)7sCo6S>x^CO_aBO&Y%i#J zbu!d^y2bs=pytz?P@hDab+GMEfco5brt5hyfqudDMyQ$BtfT$zLmw!c2n*mzuCIoL z=;vI&1$89P>}0?HFd52DfqmdSsPo4+-Tx`z>_h``qDegWYEEn`+Y%LBUY2(PhM*UGdK< z(^*TR^Q5YQejen{8tZokbbQt^N!0HR#I=4$F|M`l#I@F)xYoKOt$8GB-HB@*bK^P@ zOQ(5B>uu}gLs0gd>w$gjIJN~UpC4co(u?}qaqI#p|5Z@)?qR6;_PzU?_p{?!G1Pp! z0EXK`&AW%8=G!*+{{%Jfiu&7e>^7+F?}wUq??KJCPP>`EH`Kf`7yMGnb=a(%| z^Q_wd+kQ8w`8FA9o~>|yM*HSL`)RF$_Cs3+?I*M@*LB3cL%DXsJA#sDPMKv*ypJpC z<2%`3b|fdv9Jh}ARcGBJBSzz< zzDZIm-@DJX?_VB)vdvKCf<>d^w?Q{3!T}~MXH2Qg^m~uZM6P1zp+}an- zm$Y+xZ@+&3Dcs&!?*3B0S0mC?A>1xv{bJiMn{qTh^&Ex9rTns2@3elYgR-2vOy@(j z^F-I>Q0=_i^(q)1*P!NC|0TBHK2Y=QRM#_MczlDJXItF=Z>V`zaJS8~Sy1hp4>g~b zxXxH=^XgKldf$4F&8L4r=_jDt)n=LPZ}TI;{D`f8<;nRmh1f4=dzDqmZ<5QZ^KE|U zSrWA|dX7&#r;UBCt8QH2x7`fhZcn`!MB2$jdlQ2jf@^=(l7{G;o(P3`mVD5(Cu1ZuxZsD6IL^~+HG zT<^L`v!ZZaJr-&`y&h`6d!f!_9(SEPpc(5>r=TU*2Ah=IwYFu%>k77!%{jND#IyIbce1g{Xfm-%k#5O8N+x~A@{Fu)lU-LdXz{(vu(w^Tw5GuddpxV93b#8}@ zpy{1_9(nE1paj4DZbhr0en+q1wC{Tb3wOPM^ASeQ&{Q9>ifxm#Ys;YH71{Oe>e|${ zs>v#EQP#Y)S+QLg_|eBtv}UBO5q>O>*0XBPg;m$+7$5By=ffvid)7f&yOT{9K#iBl zu1|;5KKL8Vgm1Wi3)DF2G}ZR&1GOF;12s+_cK^i5Q zRZze+gYH~2XnS7rj$zHCL=RiXf14lP?np<+l1leSy2Q^-6pzS`nrP*p31xRcwR@}k zcS5yez$B~h1yJ>U9X7#V=eo^gi^~yE=_f+PWiD(6KXZRhUmef+4z-cvx!N|y+osPk z$|toi^|>qbb4^36a~=7Ad!EVHj>sRK?}EsFM!VjJmb3{|DT`Glb;I-~w1lyw5z;^H#_qQvx_a}^is^1@AHt83@9Qd&N zpNG4kzkxd68!+Cs-w$>~pXT~v*a^J^hTp@x{|BhgRlO!~tbDemi zIkbI{J)z;*qQ+KvG`9R)KDxfB-}X{o(K=D->EcEESUG=zvX@Q2lij z)cSD0`=5mBul26~1Jz$`_p|+SidqFl+)v%{yoPI@>bsEo{z4k5j_UWAx(t5{)80q4jDVk>wBHQy%cK&=Yl+A#u$HVS_9x4ty zpyIIiOxu18R2(jZYX4UEmtSPp1O9NaZTB|RI39GV>G@DPckk9gzoA1|H&ULZFSTRk zR@%1*6;V4XxTi91dKa4Nq|bn&o~al0EQMIf_9{c4A2es8@2zy*^s86>Jo~jmQuw|c zYM+;&+Vg|!vuo}Cso7BTtnGTc-)tmQ-ix93TLCry*16scWj{gHeZcFs-3X}omAbb3 z`naYrl+R-seCJqh?atnnb8EKKzO@N!cO6up)cO0%_;09F8KqbH{b@?S=rjAC;zlT2 z3YFKRQ1yS^b)T*FJ=t)m^r=v>JKyz{PM@wVRY z2jTOH%Fy{@$b6&D6Q!ePV|BlX>QK(Pi(;;0LD!${zNUUq^`GwgBB=N-b^Qobe|`ov zKBxR*`^|>RYaUeIcS7~=k^eRSsZjm-XV(uw)v4{Ty{z5;57#NmX!~;ZQQLJ6F4MWW z?C|#!q5nQ8`xGkw<33181|LD~mz@6{8;$QZl(C5I*Its)Zo&6Z`7FLHAsN&|<&)8Z z`&d-h!-P!O*Or{SLmf+T4ootXc-eTY3eT@mJPI=W|4Yw170e_~P6yt3i6k z(l)`;%~?U$X|02f6SK^{w>Jton?ve${9GIF&AYb06!6&!OxmsCKvC*Yp6Wd}l!I ze*@IGxYzXo``NfS7Ak!O)cAPL^?#uDKW%?Y&)rL(gRjkK@XZ$AJLsw>o^|QI)2Bsj@xmaouYMoj;HIm9M?J? z$F+{baosIN_lRk2r|Xw$hvF-pNYVKzS}S9G``#(KZ;I}pq6ehtfhoE;MemWKhov8Dle%_jmM+7G*-QR7P&DvasmS5Y~ zQ_jgye(B)UalthAOJ}1`aldo|J>C7%#pu)BFI|E@)BVz==(F7)ZqI$hHrOVMb zyI;Bjz0m#AmFPw8m##wJ?tbZN^d0V(u0dD1U%D23r~9Sr&`aDeU5{Sse(B(}apC=2 z@=Ir#+Wpd1 z=qKDSU5$Ry{n9n)8uv@rqMvcUbRGIx_eaQe7lt^1|3(d*nVoj||re(7TL ztL~RBLD#xpx)lAo`=!g!8{98lj(*Gi(iP~9?w77azw3VKD)jsAm##*C=zi%Mbe;R9 zYtf&$U%C#x+5OV>=uh1*9h@;PytiF`>1^~i_e&?xU%Fpf_t}5#erdfAx!(QK#ccnr z`$cUZY2w3F>_a)SM#NId9b;GVV+V#Q%q0SE`yKZ%pr4NP8@gD+p9@(VQ`~zSX z`T(f&$er#loNLz$_lEjB{w-8Jd(0~eKbH@JZPDAH{2k{Pg`dm&!1m}*p!{tX6osG1 zdqI63e;3N%^shzX=kYGE1NwC+|Ie@^Y=3i6_&NM?DF3~%GkgN-bNGN;%zq^8iarhM zbND;%&sU+(rpz^7PJ>VL+D=fU#{D;Gy=o6vN%>L&7=U@W85$3_pi){P- zVLp01EPyw;{}EV-UI&X{)@`V1^d8R?!OoIMLz-i!JY2Uzr85@o#H*AzQ;Tt zs{XgZ0q~!2clf3IJN~UG7>Moz2f;r=ZGQtShE;Gd{LuZ)?kxEH$h-;2WEt3MQK`*YziI0p`g&$xdZ9D)7??gRI!vhAnBebE=f{oqRX zzYq6Ee*+JIyDzrwC&Lo-bT|?&b^ojIK=j9O6zp}UZGQ+HjXnk*1Q)u$1|E!l10Di% z?y~KN!!hW?;i2$4_b-Qsp`U|)fSF5d``zH-=>4J2@Go`$9dIoAA*fHm@3?;(EJgnc z$HRViTR!{23FygiBD~!F^Wh})GB_E&=KeZ(B>G!;6zsgz^63Mopohbw;qmT28y}wK zfM=t>fak!j_gOvzU^#j;JQtqp{wv{m=)b}9;X3z!2xp*wfEU1me^@?y!wb>l;Gf{7 z?yrP1(aYdP@J;uB4lhP$++P%20tZ6H^FVkhJO*9{uXg`!@XzQK@N!t^{vEIa-R6O! zU=|z>mCq6I3iwAj8_sk8QaA_wB)k%S;r?IYRp>7NEDElMqoMMd0imt9(WJj z;Qp;}89G>56x<7Thl=M&cpp3({sUg+{zdS9^m6zB{K);^!GEG#KU@?%2!}!Cb2zMq z)8IpJuKVwX%hCUWE8sTw{}--AcV1N#JPb!c<#QBV18~~q&N4x(l_ze0=xCSnF z|MT!!^oQ^{*!nTcrx$!4y*GRTPILcExE5UrUxfd1|9ZF%{W*LIc3y4y^oK8_4}`D4 zbKE~0zKXsLz6RI2|9x1C-T~LcyvHq{J>l!B2{d2|APj{gX# zd`^Pf;6?BYxYYft;g{&w;aBiy_h;7>h3D5r@EiPxL*;WktcT~o?XcecU7s!r&#za) z@9;n8dJEiv{@!)RXNrRF(M9lEcoI~;v!Sk+(`B1)jQ2XBFdNow}x%o|k7Cbkh zcFv@XEAYumcn^fOzY(hbIbEA_JvaGYt}3=wdTqU3$E?1|;!y)tUL91w@dad9P6Emv zn`&|S5Nf+GptkEb&FXUiY=)iym48k_R!}gbZP0UCn;>^+>!9^{E$Z}L*;+5Z@yY$0u8U%_&dYb@1{J_41F0ipO~{S#EpEZAZCngVyt`+Y(xpDEo~vi}R0A+ccvd+GZc9ZN@{z`A)B2P8W^+U4rm<8e`$xrLeB`_wsz-i=;|@2+qUTSwJL`fGY%vMwd)lJ4p68JX)ol7m-X zv2nKSRU02`plmx-y>@xc{FB&6`Ok*3)vm*O`g^EUCwu>I%Dt$?_FZgN;>7S=QTuCb zY8)!hM`Lv^L)WxOf7UH0%Y37s$!813?;87F{dg!l?OFR?eHN5m{+xZkehZW>dfvWY zUk+urzF^<8KLlk5t+nsdCqUT->Y(~%Qm$+Sl#cg{+GD?0!*`u^;eDjx{bj}YH-&py z8(Z-ICj3>6O7_hd>GRV2X1n`*_h9eKdx!tM7^*+6aa|9U=kSW&;rt&3rH_Z2|Fc~m zILr2*0u}RRQ0>_0`tmC*{Q;=`S5m&}y9vs=ogaJOlJ~RPr}@!!9^X~gW!JW=X;a?1 ztW|gq;}p^&Q+<`^!qLfg_eGaBOYh&s?%R7sez^PChpj)R;a5KMq3jjc@qSR5xqX@k zU8lDQT4m$}dJB<`&lUL32={6@NBSO=tWOE)W##Gp@R0j{_>;vaf2PHM43ymiwVpiW zdIsC8t#?7$yRPH&L-onc&*FRCoFHdj_zh@Hbj(`TNZe{;^;F!-e@$Oko_61`>n(13 z-C%K>gI{r50cBsgj>k=9<`y&yT7S}_KD_hV=V@&$Zmrn2HGgVb*})CtR#}!Fw~yV& z=AnIeeo@H1XV~@NgP`oMP|}kkx=9KD%Y!E7Wz}yooCwh(4WGeFl{Z-yXD7(&eyxyu`?(Qv9?iI@X z?elqdzTGdR{V$wn^Wc3b8#v$Q$w5%|F;uySEii4r^VB)8vmHCH8%BP2hFdfCZm{$0 z#;Z5^COo+Kw~ z{yW%Sc@?mY>=-B=#?9Z)rg9sr&ozzI=gcD-)~Dow^tF7h`&3@54hbRH7pnb}NK^T< zp=`D5czslE>gS>AM(XloN?mF?rpG3ylldOz_Yq|OhN{N~wpBecNtca)sc})6xx?E9 zeP*@`3Z}OYI%n|AO?}(C*0n9e^Ot6&O~do8jcoUNm`n1X!nf`7>48w?T?RGp3OAbn zGN}H&9V-1fsPy7@Opk)H<6WNv!}@h-614K)B@PPG$4i@W$^OxLSG8;UJ3P0$Px=4j zV=HGpR6SObrgAnxS+}0CxSVJ25m33|?+#CI#Wjc?Tn~t@L)pCOOS-P@%aoVeslR2h zy6G5Pb7&*|b(s08-!Ehfp2PjX?th&KWecJ5e9ZkD$U}K&vY%`Ol#Y)l)hBg4l{ON) zF{R1aX|4ran@~MV^nbVU?wh=~#qA=fxOK#@dX4hy85g^b*F$C6^E_SoOxrPtp68i~ zf4=7*kJrXneK_24@wAcpxNrB(7N2sc`dsGv5vV*jy1ygaD?X#3>|)pPda6FD@v3Sh zUNgrxj923R^tIqz_dS=B2+JFaR(+;I*&^5R@>N#uZmojdrsW2Gc)xb{Z!SJ6j6b!f>4aomW}>s#q`%+nB=?aVd~;Po2r{ltg!LH=Wuu_-yU6ulU?%!esPcMT zli*+8vv;knXNBacI!uJJ8(fF&@z0H_ubmg}(eNHzKZmI&{VxPX{T61zKV>)CwcAwc zT}P^iep657X76F|V=oc~8OS@IBX`Lw(+OY?$5Oz7a~FHQcr@8e#jt31z=R)us17riVer_e7}uX1o7p zsBuya)t&{^OYK+#WjkHRCxl=-)c*OqB_xBPQ0+O*^(8QjA5?i=1|;~G_owY{=*X0p>eXX%vR!@A61D%LD{>m<8f47?S1~aJdfSA!TbCxNsEqU@pjBOG8xzK7_lln zu5;a|a-SKL5P}U*^>1ICkPQ9~HNNk6y%DOM|G0k=d8q!gp=`D5ct5C)wqCc>xj}gS z_)&b3sXXP`_o!r@H5RJBO|NstcjhZQHb2~b6;%B`bp0&*D8KKZtUudJ$LpiA?R~$E z|L$!a=@YdR7LV!LSpC*2@rAMBJrE`OzuS2CwSO@YdLDzyY9~})e_Us}{3X+yUN*h* z72Ce^s}}FxP}YU~6yH%$cCqWQJ+IsOj_Mn(E1Uy%$l&?6-`>=eSr%QF&MHb?`&4~Y z7yaEnB^mPyboB_kKe>eeN0zaV`64Z5-ev1!)lyskUV*Z&pz`m+?{}+TULZe}^Bt7+ zCok!+{`0K4A$ z7t)^-mX_&vs#=R%?e|7&68^iR+%Mh+e+k=(!Cm&dbjmLWsb|tdQhtZHc7HbQ?yUXL zU4VWcwJTJ9qUzfXrvAQZcYHngQ>;pkN%m1Sx}1Gy%Fkb9&$=(tzg}nk(eW>KJUa@? zu7`@tBT#XA^Ljh39eRU3-?acLKHosu@Eh%Si%)@S|KywOcZxrS(xsL5JH=l^>2Y%l zgZ6M5l)e>a!>6I*bi%yC@czx4q4XE?3&XfITTmF@zqub&95erF>AT%h7~aqM64dtl zEG!J;ISGdGgo@+yFc-e(`j}e_!?<1o70Z9RzHpK4w-c&gvTwI>x*t@#C&Dav7L;8B zTfyZ}vlfE`?cc1oeenmnEc7w`ivg^yC%Dmq7O7_th+XQ9ZsDpHTy;MEp z$MFhuWKkVAr_`^Oe1@@6Nwgu%d&Ycn4V;}2g3WBFJUWmjI}A$4%U5~vxGnSYqq0@s zX~#E=PsK~=<*#?2%31nJLI_@h%IAC6y*62V20+;Y_EG+8plqk>c>PqLczkLbiBHoL z8rHAs<@EY(cc036)yrRrPxadbW!+v$kB`c;<7-aP=Jl-b`1&Kh_}HrJ=j+@e%SU;| z(=*Xp57gG`l)9F%Z)#u8bsw9DwmjG7%QH~*{n+&nPWhbV@c4B&cx4SQ_EdNaSkJaa7sQS)weKS;jSGgXw)9SmD{Z-#h zP`2wN)A9PMZs9Y5(>wA^;1I6!@mm)4-2YIc`*7_1ehk|Tp}=_TYscGX^RlBX?=?)zo2kvye9_o0u$#r%Q+x{}BnBENA z!DX)BhV9XxyZ$efoxH0(*DwRh?t(h5JnZ^2xC{C}uKV`1=Nv{r*#%I2aU<*mt6aYZ z)gK?b{sGD+^s?*IbD(SieV{&D<6~{7>u?lr^_BW*!^z41*72yC zF`2qXWE^cil7pUkR{j{MF*MHgv+Solzk{;=>?0kYS1RAGPoz8}?AIq2k{*2qit492 z&YYU8qv}>%o4)4Ga^HX^d2GS=M^N?qz;%mE`#jed%0HUzmG}8jcAx8beN`X(o~3L0 z_bjBX2=}x&YHTaN!fDC6YW~!-&Zow6?yG)E2*JBhZ9e1Ygk-P*N`DHKZ;M|N z{L9+TzA9@7l%4K6Uhf*!dykeuVp;+3{z`vle=F&qu&?4!Q(*lSZ^bUhcU{Kc+ULD^d{EPr52K9ljz$3{Mr4WsZB{>$#@z*R%zXp+WulZD#tZP;x0~N%r2fDNx6eYhB*~v$dV;uc3|~y(Zgx2`izFLzf?E?Ui;>>rbJM8#`Qg zKg!;(I~wY9*LzU=?>5EWv%3;XzXZF&51>A0wLIE%PpHqYe}MX&HN*W)j5LzZ>>KzwP>_V=Z1wU;_WgP@X}@nSV6QN6&(qvHx`c8mJk#1L}w~ z=>L%R9^h3}UD);sy^{zc0fYk~p-2f;M3hie#1;@0c@=`7AfiT!0yYptMZ_Qoh_4z1 z6|n^?VhaL_J%9zV1;MTuiVac!`82hY=WgR*O2XE@LGI@krh+jYf}&4cIay25VwPk^$yusgih^=5c9`fu0u zE@&PcKl;OC@Sg=`kHVhtW!HP)vFHk;Ed2=B3q1fH2QPR3EO=j=K_*+_T-oaXv%cq009*C`h@51zYg3uWWs0C=72 z)$nBWo35LTX&yX(*8$2#!c*WauJ47XqThq3!D9Ef8{0f`I{J7hy8`M6caQ5Qp^nQt z;UL)bV$0VDYAw3L_26-Ko-hK+=E5ZSEYyB<66=uGt%*>!%5``h%=vd6Y+LSe<7U$P zsZdP&lJ+C5VPnU~*TG_R_7{ok;0pIOnr7`A3bpM-*9B1P-$vK_pw_?2S6lveQ0w0n zu4h86e@k80y2jSQrcgErY90InY8~7Uwf?1FYq}@YI(V_`>!8-bC!yBC)axu?&Fd|G zt)SM!V_jbfwI0rL{W#Qm_>t?0({20pQ0LXB&M-X+YQ38RwLU)V`UR-<@dv2$>H0TV zzWbrt|1{M3^ETH%L9L5N&a`#07gWAMQ0wAM*R5t*JdS}{Cogcl8)|*5d84h1M?&dS zq3qJxHlLgN`0!8OYgyU(iwlnsNLPfJ`s1~s2{Ld~PiBvF)N%EC_b-GxzHWv(u0{@6{==b;uP3|y57hB>E^Gr|asOth z<7=Hi?S0!_q3lGc$y-u)6_3KU7UqG#2scDwK1JrSF1k}29i~H||TE9Ma zy&G!%YSuC>ShvoAve8iM)-tGd>vi{k3bk%kPq%zcp^kfJK&@BTyMH0ndbJtqIQNVD zYh(t3mHXLf5x*h8H_KN%8hgzRfTBQZ+(iu=T8ftyI%k?8r>(i$&3hTDEd@W&f z^hnqOzT*D(p>kAiWBD3EtxqSr9uBoW-428GsjcNZ0JT0fI4UhzmyUwc7eTF0Q(WH% zwLWcf-L;)uCE;FDN^Q zd8>Io6Ux@Q4(~VGFYNyIIy?teJ5pyt{5hyd>k+|r`bWEt=KAz26(W^+cV6+5 z=8?Vp#qyNWo+p1SPQ$52^j0%zZ_%tv2LD@9d;rdlyYU4`WlbI5!vBmBKnNnt4f{pn{QMN5R9#^<;+E=!}wf)+T2fd);KG5}SsJK7m`Xi{izH)s4 z%36G5`*T;yRXavO**&hq{a0VZ@y{G&2;N^EbZ$>vi%$KM(p zJtF(br}(CkCL0F-T?c*tQhlk1R|?h~-v1svch|5@>2)XAIP_2M04p!%is`b{{-E=U zV!n42r+;#~=`#C+&LwpIps|^9P3gWy&Pwd-Aos2K%i{eh)OeJ*&idQdo54^vA8MX2 zcl{;Qy0hPP^dGw(-WgWMf0FB&Q0G1QuK$E;Yi*9w>W_Vz&}UEkeyBd}Qa}1Z*|o02 z?ShKKKTzXZ`&H9XC_5RdzH?kJhHA@b%2XQ`K-rtF!|_)i!|~56C;kUR?bk6f z>y5$)|o) zBu&;6N{8!LeKsC_8INA2#-m!>5s|HI5RS9nfvhsJkFq{xLCw*aR=WBu9o|msPwX7* zyczNSXj}@~CXP=M+bb<>b(>neGoaeg18RH*xqi^oUx8}VW~g!b*>zSk+x{G=HeL+X zt{Yr`?&&{6wS5EaQk(ZdSzFp99gd%36du1!bj;L7weQp$;{Db5i+5X!o|1VVgRklpm80zq+u_%}okBRo1Le2xru6ZdL zrT3|nsy04tq2kdCs;ptIr+RuG)HuHZ)sJ0Jb&C#*Xy9pJNCJ*T*J;g+Cy1ysPl{~T+f7x#WSvdglg~m#6a<>NWW!0 zp>%khHICu=R#eV>t2H|wTkXFE?3clkE&PSfU*@1g2H2sPgt{cQReD9eT#zgwW@+X|@p_N?olJpGOm z%l|Oce0u?EzHM>6$I~nBvFm%?pzI{5`F6SM8Bp`>Dc2jJ&U1fq{SVZ9>$KOl?*|ow z$*v!TYVUsfuKATle`Uj9+4-h8hR1sVI%bNA;&IK*@tA79CBKq5-Xqw;jd{cel`g6;v|6rN=vo|N!zs!BA=ekPGg~(`ps(%5Lz3Dn!zv>I>_s_FS zyncJpVDC+@L{)w)yfZ8usP=@N<3S~7| zFQmimRr|v6Dl8{n?dFtjZ|3=l?VaI1)${iW=|ZGGKE-Pyl&x|du3ztE--pd$b0^xrH#7edY7$*z|`#p^-Wo1x-0i!v0Sr=aY6*Wvc6ec^Z|w@aMg z=iOR5UXfji^J|d%RL{NtwfR*apW@XI%BHyv*RT3gqg8n)J-?07H8oO~=ZLH2>O0nx zBRxn{KZ1?) zdip%5@p;kpW~lM`$94VIc0BF@Wv4-{hgZAKgIX7#cKrran}2h?g7&EWTcNCW2h-uW zDt6&<%_(PGyWUp1@6oRk$Mp*Lsh;8Y*tmAZr~Z$EvZb!W^{c)^jqACu>~41B3G+ z*U9Z|Ji0>J$xv;-%JnXfe?8hKI}K`l!tqd_!{bp<&UkE?S9(0MzD^vE`R-FaP4Bhw z7=lmzp9y7aU5D#eeTN#4ZRLzd_U)zHlAM`19wXfsRLVb%Gc7)yq1tm24E7J#Q$2ki z4E7J#o1w(VaGeK({loPeFxWp_x1?Q)|CvyBo9l2q)aUScMA|2= zdqeU{$DsJj#PR5~(|oGu^Sf<4_LEQjPa{n>3`&RVSAB;XkJjFn@cvO;rY%{lfo1oP z`R)rU<)6D-Sp1%Zs{eHu>>sZG@bo%qzJEa3AgJ+}?0OCi_7B(Zz+nGyo!rv*4=6hs z2K$HWA+$^5G1J%Wmt2SAp+1MlBfFgO*fqcOc;x?)I39c4r*>R-WeXwlG(PozCzLhv z>yF|2RbNoQpXW^R`V|NDU2z+IN9p=A`z4OS4EK>e^7tzjkBw0C{R7v(LzP>l(9%0W z9iRHMt?HTxWvg6=+o^U1=lxwf@$5_MglAv!N$;Z0V&VA{T@Y{k0Me%ap7{ObX7>df z^Ur&^7Qe%;u=nDugc|pEq4vK46HJeVs_WW`ri-BZasFi6{yL~8EpfdGs=o`VPxE3u zlpSy#^w*!0P=D+`{|*WF`EMd^l=oHbQkyhRwHC(vs(mE6Z{j$ObRWt8TCEptJTjq* z?F&`jbk}!4jpL)P*F%kC{g*8NdZ>QadfE1mG^lcJgtEJ#`rVSc)z&kiY>w;jIIC~g z@74+ZE;+;)SGqIaZ;f#dzilXH@fWkz?vsA>A{(Edq1t)L7#qKNQ0+VDy2)4@-x*MG zUJupJbH~~C)1bCr==ueyeomq;jqh?O+wM9%zUqthvqwTd8+PD14i$`PeyJ>t$B$+D zS(uf0Z%RrZ^O5~ud;4h{hrLk6R(i(9cL0>d%$n~vpY*Ng+j!j%)!(07UohOpYZu$A+PkGqlI1b8o`Sb1d*iJSOmTjlnliIXG zq{@@_KFmDye}delW7uO!ynVXIE%Hd>F=deZ-l`i7O4te2zTU~EPlFog`s7nP`a#(= z*WvwI?FhGP%^})VRHj|U4=1*((<<}*P&*pbSFw(@YXp>C3e~RtY^!#qkzY0p{u?j< zURCX|=f8TEd!JY_>9K3mx(7=4ZK{kZcg5qEk1pJhxaOp6G~cepQF3sd5h{MCEQtpD zTlc%7!G6{sYX7?gYCoIpI%lapCo>yrKU?DZRjB=_%iWef1#0_0p{@s2{ckk54%7uo zpL|a=xDNCmC_VLF`@P~PVO{h#sJ>lwpQS$xpkn>F|E8I9i;`e=kP0j`m&*jayI%{}fiU^B4U#txQxu^SasdvGP^oPrubG z>bH8u9P%k%`mNe9^?n5DvQ)lsy>-Z={%f3b?v9W1SagKC2Y@X7-))flVtVIUErb6a zfEw>UXWRN3J;(fGp!)GKRC|Ab8uuncZCyPU%D*3~z3J!Lb?4)u{9}fhz8fn2F{tZ; zue<&nYFz$ueZzn3I`lHA{GHFU>(GOs^rG|aJqr&)>1|N;Tr<2S|8ktCe~L#xD4XUw zJiZz~drx3PzNfDE@4G=V@yFJ1#Z&zj*ZemgSFJxe&n52XtKIi?=O{Vo4^%vRbcqIK zoB^e4bdB;a?^S{t$1biXvAybB4rSY2hu0;w&)%C9<-JMGc%H6dXdSTcdxwVlpg1eG z>cchn#QQJ+UAQ~34=F#JkK}*t_D}6Oi07f={1(*l_8`>Zm9E;$DqdN zJJ)|gtplw;x91*~e9;`m^%1D;-lsikYem{1>j|a9{a4>~UR^J#%x_3DD8c)bNk3LW z#=_Urr`#Lwdmd>yKPIk!tKHZ1C2P;gQ2qT6RDb6}_4hgVH+$Lg^@Qs0sZjmB#r54# z{oMpL4m)14{5=ZoxsKsbZA@Bc{w`40!zaIL&w*^%VDb4GYMxZwX!)+9o!aM@L)muM z;rTsXajM7r2M61|H!IOGQ+PBV=H3^NNo#cSdF7mcyHDHh?vpM=TH;d~XF}N=*Wqze zeYSpf2+hxm|L$i+q+jCWq?jpAYEv{n-liOM5zjymfLZ*-tog9g=Zv-5TDv+xl`$S_ zKJ{&9&&Qt&rJsZv#|rK3Irr93buV_^y@Ne3-!#+m&xR^*HG}XnYFY0w{aabvXX2&*IPh2jx6( z8_gUMsYvHEuYy8C|KxpS=N+-%G1l)WYCq8LEh>I`Z=Lpo*zXyO;c~*`SrY1_#xX+K zVwV2zHpqQ3z4b8b=YFX8PpxPB-D;@)Y`g21>f8P{?r=*V-oW(x8eTM;}&^3aoh&EkL;0}=}{pv69(-eP3821vT3fv zYPiQ=& z%`Hx`-(nZF{wh7pXphr^^+)ySIIG`kPll>rRQ@_pziA^XUH8{#_AY(Ds_wDZ{q<^V z!xizE=Aa7}CC-y1+N-(q#m~B1o^z=Z`~8*XP-SF7?dJnrPx16tdn|unsCoPeR2-J> zZ5s5u#=fRO9MYiXZa3EhpyF~7)ckoKDh|i*ZyK!A*-&~4)H*)Lb>&~02L1j9Dn8L) zn+9>|2X&sg(e+NK=MjE!z3Mm1U*&hpe+tz0?f$Ux=D~XCHLl-*it86pvFvcb^kS&E zw>oIQKeK^YD$e_$tSxbr4$pthC%fN;cS!Nx-I__!fA8O0LfSs^hv!<}a$AFnlB`Vq zR=Z-KS;=%h={DC)7aUo7?6n^&)*83^55~tn3mswG9w7L?G&ab6`v2rD&4kEYsQvO@ zsB%`jF7ouhpxRV-tNs3aCn!A#%Em#p@fxUczTI_!r@so-&YxV@rwwXzKPa2#I=tU1 zR;eRWBd2X@7dc@~`^a%CJ4AXc=@{v9b7rK&lunVhV>?GOMqkG7D_qJs%tfJn+szW165j_E=KZVLy=lW*B_}m4x-aZ30KHovDC$*=W&VU-n$xz#^gPI48 zXEY1etv_!tf7_YOf_X3<)**fLjpjdjw$1+qP}@IzOS549?}O44Z?!n}oon%10ySP$ ziMz(ByU*KP*TH_`*QYek!{;r&(h+Ve5--$6_6WNp#h(0(SaDbtq7_vNfn?wk6Ade3z{sQNd#-VRk( ziR+vKKR;nR)zc5krnwHcQ*BD^Qa#eVYuiY263_pZaMxTRzao=k>qZaKE2=Uqytd{( z5|3dPX$74VW0=&%eA-rad{)bV*-%B!cU=J0{y(7FJGhU1?!FvqKFo0aFjV^AQ0r>r zzIL6UJ(Rv4D*X?r@?Pj?^?e65ZX0N$*4cef)|U23hvT9ChUZU?kD2nT%_?{Nqw&6L z{zMLzGiL5n^5=fPdwqN=qaTz_a~-Z<_1XJ$+H*g|QQQxa;n&4&JZ>gEjY8C)pb-9v zo@nz?TIJ`|v-7n~{Na3BdlXOgA@i|#AGDU`osc+wJKRTdV4rNXct&5d@hf=U;{6s> zz3H25+`2&Nu~0SxsvRpRPxWtwvKq8cI^2KtFEyhQ@8IQkC$?0`)o1Sle4~ObY`;-I z)QA0{KIph!wjw6{#3n| z<=;g;YC}EBmJNi`;eM#i_CDc;^yP?B?-Sle+TFpHrTeqt@%WgiKatjnV=~BnN^aD^ z;yV_q{nK6l3f2CpM_Br2Q1SoXb;E`>KF2^=eack(`$5?>*Wv!C&B1;#!9Mp#Iw!8H zvz{p3{+u@x&$U;(PxZ9k5fvh*?1%>Kn?#!C&2lK)?mB3Pe;=rN?f&=1-2Yxb5`G?` zHE9djPJImu;Gcir`^WqGWU=@0#hCo3`Sl(?ts&Ck?Za!{=z@6vvdNppI|T=b{Kag( z`=tBqxA+c)>eo1^ak|#^y`EkGHC|u1-UBrrm4319+d}OpJzVEPwe=RL_APe(uBW&C z)y6v;%7)M;t#dP>Y_02XTot?Ux|dzf_>Nv3@4wc)oRq}*x!QfIXLrXmAunBV1A#XrpA9lDey3OKu zG*rE(LX|PX^>k0a6Kec6xc(Sw{C;%Z@M9al3@94~)ut<4uY_vv3hGrmw?bL%lM|m` zP)t(WREtFSrj{I0e0Wj4!j#KI^0gR$v#&f#pi0?fy#M8?76sxT@ud`^0IB;iM@w3^9&oig31Y0 zwGLkB`YI^f2DLx^=(_qITNjUjvJ;{Da;fY3v`y<_KPa2#Iviic(7uo7-iMOdH{CWL zvPjc8aX3CD#8Z9J^$1xs)2>@ctL?d`mp&I$Kh$RR|HWtH@zg$=Ls>fhXYm)a)$WUF z@!X%Re-ohUo&{CjV%LRGb=TN!acl~ukA_w7Ap|BbF6g_^%xTz>;K{;BOOe+Q_~uOpzoPr1eY_d;EVd(-t7 zP}enTwQm+&m+J;q-#}OgPIWyG)hpZ#j`sQf1gLt4L0u2I#r55=A$k+k=lVVFuaaq>_m6?v?sTZ@Bv(VdH)Ngr zKZJU(QT0xiuPM}Zhf|+pW9 zd1>EscISJ}Zd@x1e~)DQcOH30B?UzU?NggHcSo;{&)wWwBRP_kXV-_D zKovIzD*nCa`|oN)>8Vir(8O)?;oybEU@dy%c06^yRd06 zk57ftTcPIhFRrh-)2=h$3zeR}$gVS=1f}1Fn$IP!uUc%^i|>L;@3zFQBcB7MKZTmt zf4iP}mtB8;04lxhQoFus*p!91{^ZZ-a1Mg`X z%=3JxdH$>Gi|@7k(_th0FGJ1q`uCY03{_r*{HDRY9|Seum%A>3O0T-CX+$G;D%4E7 z*YyuD*#7>ektqHwsCjpX>o1_ve}$TtU6wZu_KzE(^!HHd`=I81ofW1BKF=42XkO*RZlhv&KGaOyENBdx|ZVUCx7PtO|i#MbCaY_B<} zdQN>QKF&Dz}rs^7;z)l=hR(+js-e+E*P z>YfT^&$~{oUD1B)lY?UL`{U|U=)31)v`lrW-TJHca=h)W(K)rtIhMMwMb$KNaQuhC zaSy-BSPo^|U5Af*sx!4$U9P#OaLxTN?zPB_q$XuV>Xg(fu2EF2u!??{l=kYnMYXOY zA{Ep)x4q|EJ(Y%Az3)NQd)){-&#pJho=b~DwWH^S_B`FmP zgCZ&%5e@1&0?HPWM`f;uvIDNeRH6~S!R32R=l6_-~$bI}xxz^q(71pU8)xOk( z_GylUg-r^y6()S?ZT|y>cW}Jt-MAB1b0i4%U*o#kGrS7FN%#mQyv;?$3>Ovuh@W zKiizwcjmHOe|9~yqWNPw$MeN>LDkafk-JLk>1FcgrIk*P__di>c{$Zfr)QN-zsS-H z{rX(Q&)xpjFP2U(>0essdwZ0B*N+yTvwpI;je(jc3!ujHEBF5fHLhv9?LMpvq3kNC zdAR~=9KUk^Z&2fy_Osm=G8D?jL9L^Up*}bK?*1AjcAwSJP@fmhg0eAC-{&uYb>JrV zZ-@H4P<4;JXZL6*dmQS#>P6RILVaF1Vy~sQhWgxa7S#FFmF|BT>hr?euJ=NHFW+jP zZPx?peCk4|&kHxXe+AU})RV5aL7hh(bUk>#y;nB}%4S1-et5z4+fe6Ie?XlHH2THz z<^JmPwqvbGM~;~-l3GQMC^@{iUQtS6-P}4kwKHo4Yuy0mZrFZlV*6>;BW?fe0yT~| zLfK-daa<3B^OvUPZvZup{h-G2M)xm*8pl_m&Yvqc^ZZcb*bizP7rFl-sN>pJsBx?o zwfw12<9H&}INs#`=b^^&b=SM0j)#Xgx9u{Z#&a;#INs#`B~atI5o#QNasTNp>^-;V zLD>yZ;nxG&WBUFH6pp~mkSsPX&C z{l}-mJvI#H>A9B40YNWq{%274L@^yh}=svE;z?SF-Tt5r7((i;Buv;tJ?nKxM zJpt+*?iu&L2KD)FA8f1qtu6ma@F?^|*bc6A|614{{SE8@JGHU=&%lo8sYls+ZEu3o zkHb#zQ`djDv;3*Y)Q%iAiFewMjz-eBH};6|y|I3-m&@FZ9S12QuiULV!j)};%f@?Qxxuk)ei^DpkN(#6)NZcy`h98~_Rq2}`gQ1iHA zSM#Sdsm5=d)aCoHT9N7#?3)@L=a%?>e&*SzEEdMB|`7_D&W~g?b`l!vHiyyQ3b2U^y=0c@^3RPc9W{pTI&MTuO zO^cfpH7abFdqhry?8AfaGLpO7c}(WncHOk3g2kqQ^9^mAQzquq%jj(1F4vj$wtcS` z4e8&i*!g3vs#=BkZV0OEE1}|fv+FmY;`zDj!>ZZ&ZA+;9r$EJZrR$fVjz9aL;(1hc z%a;We*DnEY&TeF7!K2|TN^3R3ZZ!d9ezaM@$zaM^BB=-B^J&4y0)gQ(UX4Mq#zwsyS7% zD`(oZft%?^1~^+c%ge8BZusPX&>YQIRk$hPYSE1@rReHE;XUIjIdmB)Db zP~(*8dOoa*e!%r-P~*DCbxK-|NE+w-jXCG9Jt2OFjn={f+8wi2=Ue%`pzJcJcCT^& zo3IM{AXI%P47dFEL-nV?^`}t%I&y@icZBNKNT~ii=l+z|H6yLNa?O}`Zp1%{RLrTs zF->jT7HS)tMY^1A<@JZMNv>~%YUeYqUxR8-2~;~W&av%|hCzH?UkTNoe5ihX;ry1({+qQUvvF;MjkggWn@1RKC--2WOp0{t^=2)mqT z`TN6E^f|6mn%0Ok?OHdIJh=2|Xe=T}kBHoLoNf0Al>O*B>3EBOHyE@7D*jhN#s6*h ze-0J@J+4!GTm0KYZI_Z>Ba+U2H}xl!-p5pbYwG{Jx#c^fMU+ywZw6|++o8t)d)K*bT63}~YZdv^ueHz3-JxtW4E9s^KMU25U9ci-b)Dt!0o9L-pytmu_vc)1 z=ljP_w|uWd&8ucNn4SrxQ;)70X~StdF0|O`(0AX^8q(c+wec5x30W>>m64 z4t6iRp2bre3%U1Q%pt1#F^*Q{pEp}eB56V)u+WF0`Q2lwR?8l{pb=f0*NX1(dx2)%G9Ve*h|e$sgKw_Puf9Z_nk^?=Q)xZA-Y< zBCzIm%_{bra`I`6WMRhA!@oKA$G3Lfsm^z4LH-P=ZF)epf3WL^pknsC>zz>j-RHXU z_qKgHRNHL)(iy)-3G0^T*CzV$CfjfN$G$iG7^=R85u2xNpyF}1>oHLAUko*$swG*z zE>P|23)P;%P~%ahg87etihl>!BViKyB^b2x|Kf8)32l9nZDiv=x9#49vMOI#dDlSM zKQJiw-~Fr1Z#DY-ZP>$(>0__6?e2tXSD)#o^PtLUzOY(kVb^Mry8F2fxT^-&0jo!% z-!zL{%3n?^9h2!TX%W&Qq(#UZP7i*Ebx0F_hqW>9qNtznE{ZJLafjNC75a4@-On$r zcPwg5N?tEbrN?aJ@pj+F$58eIR6qW4-K4jrkA^DiT38X@<+@{*eNTJ}RQhtL@qNbi zcTjCPw~wW#cGu^CTarp$N#r`L=G0jF(wUQ8<);Yi(?zy#=saEi*mF&KZb|b=&oik# zvFDk>TJtEZbsP(8omYpoj$2`^<5XDd_!QQ<=rqEzz0M{?XRT|zw!r3=YHud^mzA6XQMB3e~|yT(;~U1_0q?w8I%Kka_$T=cWBzVVD}0^yluEE<_i*U%CkWrTe9e(YxF)U4s7F z{nC+3&WL>Le(7ZN_wJXDqJMP1w4M{*?S5%JFI?jOAf5bs-7hMCOe6ob5$o-GO1lkq zedj8u?T2o(>o+$*ogdukdf;o8J_%OAe-qSsVBgoxKOR;?Uk`O2*mINlN5dNEtDruQ zc7DVB=fPU&%b`Axwtdt5Ltq{B7^u&qE#5N!sW2Hm0_yW4J@fa2jnHSq#_%=wm%t|Iibd(c z_XMM%;x`vIh4(?7seR`D%A3=J^Mr=5IsUVu@?QsA!1*u@zUThmU`uq3E$PAc0t2A( z=fVs)6Sjiu-2WYHjXnt5z@A$z{{^rudNMo;KIQ&TU_10~*dDff-|`QE9nfQ7NBDsI z-+`IvVyN#0ntovUPlTP(=fW;wVo*p?L9u3v6Q{Zqo z3XXtz?q30O&@aM~@H_Ya1usA!{zZE5TvK1Da?XaM;brhbc(?nXfES@(hhyM=_g5=U z56+{a@M8R@L6tKSj)PO-CGbJ_uZ82$Ti~VeANSYWksh319R)APKNPB*@h}(8f>*%R z?%xO}pg)5XVT~^>e^WRK-5pMbquhTLyb^soyb8YP{vtR9{Vkjd58r9!w1Lymec;vb zGWXvAuR$+`*TUD`{|USfy$@awqr0q}u5dc~R5$}pb^mSf2J{1PCfwrwui-58-|$9w z)K^wcZ#Wx$4!jA@a{m%|Gr9oY0zY&A9ykYG{p<9|t*|>(JO{$L@B(-nyxslF;XL#U z@OJpE`wzlAbp3DABlBS&sB+GNcfd>G0=U%ukHdxN*WjISpZlwRn;xA1HG_-sp9)n@ z4qO7Kz`NiB?tdOGMQ?_8!@u2s*mvo{d0|_45B_tY%DDvI3unUnV1fHLzv4&?EbIdljy(TQ?Tt%R?hM8Y4q9f z893AZi{Z2AC*X7NQ}>s^HRx))(<9HrZcy<&8LovR;R|q{`|pP@qSwNg;5Y976TXbD z_j7vW6_^E8&Jb7#$HR5-F84nMUqx?(>)~GaS1Cyk&Rd(pjrdQ2DrW?I4PFIbhb!E_ z25v$Z!8hPv?oZj19-Pm%fp6hI8>*af@NIYld|hF$_ch8x}gG2D*c13!UH z_ggug;iu?<@H2Ro`)`GxqnE=kV3GTG!D945xC6HN#mYGjeu+K{?u0kEe-Ye;ejI)U zKXL!h@N0C{U(+Msz^+j7900$CIq*ApoBNl+@6pf0AK=&SKLCG3ANE^%9 z8EG-L8sB*|j->Eirv1WZ{QlWIuDMMhf6pK7I^97i+x?U2UAs-EG_1rkQ1R#N*RY++ zFDmh8Ip^7Zpwsj0+I=QE=r^oHdAU$FbxhNM_rePN?-8hc-$CX32UdoM@f$NLKP9bN zByCddNYl}^BB@<#Mrux|TCDF%ioO2gxmIo#^(L`h@@-x}4C;rnWfxg_uR-P83RQn~ zum4D|zcY;2TbFw4P;c!>%{#2#YR6c=bG_UguQ%W8E%bVeJ$?0sR^BG4dVhkdw=MOn zeaA!f`%DQ)N~AvGl#VB@ZOtJKX0% z^F{aC{29E@=2Ip7DyIvSjdNY&pJ)Vw>;P)5^S$_=x<@DEm`QI z#);3#HE&`*k|XE8mnKAd6xsJ2XF}NwsCM1&{#}%#^6Rm!Y#@{l+Ud_pt4;Qvr!wE| zX4<{!D@oU}QKnc|;ZJ1@_$eO09CUWI#Cx5Wxo`ib7Ubampf~J$yV`G>PJPS1x9bFD z*Su}t-z|f({qNZKcd751uJ)dNj~9iqr=jNCI@hDAPwiU(WpBC;kBj zD198%d>-Yx#f`Ro52%>m4ArkSu1Cza^xL4e?@#?|??fnDYw(HhIiC2IjlIj zs7_(6+?qKxf_rFwCoN{N{iF5I@qV`^v7~b1`1Yw{zUQ845p4eMb2c88@CW+`lwImN zJPxWewN;f!!?9H(HIh;ydWu%#5bat1Gqh_$?a89dlH9~`=yQen8cenL^o2qEUB3=B zUpBk0M1IAu3zUs>9gdsYliH#h?@LOFq}&mF<5L)0(*}?hvsm16N=nBqnNO-c$dnb! z2uHea$!!+5Me{6fE%B?IGlNgJ9H(7}+pCg zPKP>9EGcI^GxwGr&w{@aj}u9MoA0BWZ9K={V&l1iyo%pGC~HeT>F{`}&hYy(3d?E3 z)1fwKE)@??9K%i{%%^%LTx#)H0u}%L2C#F zb6pQ=z0&;3-WQKg4mz)5V%v7OkL17}ddT7wS!u_EeGl7lpw%i{|NBCfUF8u=&xNvk zq5AWP>lKu%c5H>R8kJ0k$6M_Vp4+*B<0|JN$;T${v-S7K`=I#dj7sdoYWJz0UN>5N zC*e~ZmqXch*WvnAUuv7Gkw%=q*5=$bc<#$%+Jm%-!Iq`Z2UdjIqhn6)_{8?CbDuV! zcZscco1ogW+x4*Vw%*Mmuj2U>lzs0y+)lN{o?~y6@Em&%Y3qY6OOO4jzr^FFb{1Tg z*v_QO&F7m3$em#AT@BUVS6rt|wBy;iP;=}S*DWVm{tc9`@!khzZ7Ewi+z+)iHN6V4 z=Dk3ngfQaK*oZui-~2xay2Og|3QzfWCf&$smQp3jT)O5Cr;{}zv}&LN5( zOI$mfKW;wNyR=?Zh`bH8pYI~S>aRy0*+3{A#LeF?pn6k}sS{~6rA{PmY~4tMB<>|H zsa;&NsCsamuAE&dIIn0;zAZs1+&{kEo_E^|RZsg*?0L8Mp~k8Gr*_}bsZi;Yq2^h! z>wQpG`!h>#27`9#nN$B=nCx=man0}XcxZpgY?}Cvl^O0+`HjD{dip@Mqd#e?XCjoX zavj8Df<4!zdV}A6;djy+cWuJ&n>L74Esp=b=@im+txl%0D)?W+KjLlE8kjvW@w{c3 z`wBj9Ne-TC`NHlWI}^&5K$ZEt`$v;s2CXlVt%-3P zx z^A0iIL;sGqP5VP$i^TEX;l7l8X+iyMq1w|6YP^TJp6cm&P~-UqtOR#KjrXsv+wZsZ zEl~Cy)Oi01HQtB)V!9KQ^@AGk$*ymL8t*4uuY>yRxX*RvU+sDQ_E6RvYP_#-JrioY zpK<*oRC`y@PmT9hD65f{_z#A7@ZowGmjox7{uM{?w? z;Vp#7mr&)jA7T1_7|aLqs@&yJw%v6wAN+W#wv_ifM#YC{V-DY7D#n}YUmJWUozpAv z7{A(mL8bh&!GEvl6R399UuFB-)lltR>Ut8}1?`2h?XJV^RlDqST>0J*ROr)Vv$zdg>$goW`wC>(RrH+VdJ;!n){ck41y~VIG1?{}{^O z_i@YDqQG>Gr>vgyq3m|3{A1{63S0nXZ@LcR?8hg?(c)bGc}phgvGW$~3#wmZH@!kU z&STN}{5H%0n8jbr_P8&m(?-~Q=m{0?8Bp=b$ua*!P&##_9T$#*iu-v`>%i6S?|Ol) z_ZLFN`#Pv~<)KlgKY`WIKS8YnRY#j{3Kf^*T)zr69y?r5xX{-9`B2+`c#-`+&eu@7 z;TWsuMJRik{wW?ip{!AN)8Y6ke&zi>&QScZwL$Szzr}48<8kHVb)@9E#A8FBHRfB? zHA)VC9|kI(-$Iq~kL$JFqA2`|NzS%rhhYnSVOz z<^4X)l1lOR=TUYEzo}AoUiA6Ne5b!=&uLDD8oyhijtehBjr%w5KjU@FHx6nZTmv;8 z&%1sLY99O!HQp(2SpKn4<2w&(eed+9`A0$dA9%~258nSya}?i?zia1HU7+Gqm3C^* zcY(5TuEXQ2IN1IZey>)=oY;3ID@ngZgM+EfYNy7iuyQ<3Ip`e!EtV|)AG6hEexId! zXZyT<6jT`(L$$MSSG!($E|h)}DvlMp`R}tp)xFqt_wIJRvS|;?KO3sN-B6Z#jD6mp zuwRyNeQj&;4n(@*-_ z@?QY8|NIFx?rZN$mq6_|t6Zm7 zu=oB|t!VH2%Yw!uZ-)|QDe;(A7$cHNLDc4&(J?R5`Zl@m9xOH=V7L;8EHICDv#%Y1; zr#<~OsP^u0y@B?r?famtEp3wy;^6DK`uhLp_cR8uy?#$a7UfTSlH|=b;<3u3)A{^H zfzD~O_>0+o_nm&5_3xf}7N4J>?9$sUPA@~*6L}V&-=N~tcD}`9(j69$V-}dcdZE47 zaWg!Ue0MA||2n8Wqw!*U|Kj^g%)jj}n`fCzZC+*FZSR*n2Wp;O3l;a(@CaDzzs-XC zgd5&t@008ZQ}Le%m2V!@JWjpW=5;ry{orDF7`)B(gHZW?f!eOmeYW4-4Yi+Lz0CZp zppHwC`)!`@T5kR~R@ivgd%$#?m9{@mgeq^}!xpDkS6TcTK4SaFbN+h~Uqe}Rnf;zb zFfaUbfyTA$?>6M(lWBal?ufay;^W*Jo%em>KC#1nBnS3zfo2K!wLzvv_u_tG=yJR^x}zbt#|6YTN(%{e~r^S5#$Kc%RO!9dCaYX<1zoKiAH8pSG0^ z@82?DE>w}LT^B*cB=rP4U!4FoPj81Bk7cgk@bso9`t=K_Hl61BKB)eto@C{H0%g?) z*yp7ov`72#OekCHI=o-2zo{*&^PVl<(b)A!-hJr5W0-5-6BYVcs(osk+TE*8JQmsL z>=P4XvCMrW|7&0Q?;Esw!{V{vO>6(-Q1Pkumc^j~lpX+OqbW;uFMzUlT!;Iib{^_I z-`{#4!t*gww@e@Wo!(hN4ffA6_kGFxyk-5e>^jA(P-WHZV|ui|*Lwk!z2iE(pQsIo zde3)qR{VRVa2r>I+L%STCA@!o0M!3u*5@AcNjE#e_TTPM@tXow-h9^sPPFuMq4t+b zY^(Xx1d@biyM$@x6^e?wo&Y`v6pWyGQMPwWmYr51`J&esg`@WA?tS(uDcZ2`)bdE%D)}z{Oh3W8LRDmwacN>TR&;(BR;ulb)!nX+?X zplg?YU#;4k+M_n_iB0A`vF&(=ChvvQ-|)$AWNU@qv7@%d z-Y22ob}p;6UFFVl~Y#Z4s7`pTeqHpvRPA2r%kit#kw2p zy6}5YZK-vmUC)j}>7$|Ia=z>FH`#UT=}_s5q1K6)T)#cn*3GY>`qJ+P|Tfq%KK^mwgP>F=S&=~ve;jkN0@pFpKoyC6Mi zPX?4e6KcJ`!u1VM?ap`ozur&Un)bzPgTEKD+i%SS*GW+2OoWQ-M)!XNwLez;-L8wB z0A=SuwR;v+dp5fNBdB>*@ejN1(F4i`Ld~PAp!SJv?*ATYJ{)ntu7h=hvXh{WGZUfa z(MtEPg>}*2K+T^c{hpzU%&R$S<0n|7ycD)j696x{>$KTvP zx0}7Mb19UqgBr)LT>lDnUeKbuy|42eC>skkes@BR-$wU0J=)&a*$&DE!zjGT^%AHV zu@NfAH}0?3!`|1~9Li3DIL1Xs)fhuR+=Wdhbg<+v&Y8vilC$`ZxYhTkoEOn$JrP+Ispb)I9#c^_;&f{b{K6 z>2;|2e8b=7e-vt7zXCO%r~PC86;SKbb5Qen0?}4I|AlJG6HxPcT$1@0Lak2^LCxn2 zDwuyR)O@}VYF!#u(fqTZ=JR5xc|5q1`LBVR&$mOZNB_9LP34SW9`}NpzmGz-=R>G@ z{2kOfbZ!;%&xD%4i=gIhm8#~?gj#?4LCxD0?tdF<{(b><{(59J%YOolqK87w*G2As z8ET|A!!%g8y5&C_YQ7GHnx{9rzW{2!u7{eZNi{5g8>so(3u>NDbN~HN^Yt01dAiU2 zjcaBE^R)xiJRJ`ehlNn{^&zNv`IY-?*UAWe=t^}mg6GHkLggO^d%|nsvG4`=?}WY3zry2S*SePf zJa|0%a@ZR_=Kc?07W!M*2WBK&{?lP!^hnqb-sk?;VSn^?cmiygV)?V+iRd%oNpQaV zpN9j`Z^M&ejl(Q|XE+dj0z3uIbpIppRP@X6G8JR44c=fFkoe+UjmKM&7^pSgcG9EOe@ zo)J7h-U_Om9`HPP8ay9f<^EgYaP)Ghv!f#S?}9n#gK#8l)4<9(4qkvh3yy*}xPK8G zjeZqYrDC5j;QM z8>*Z$;brg=csX3+{zqXhdIP)y?s0$R)QsS{z9Zp8`~#uN84f4GE8%3g-2KnNE79-4 ztKdQRCpXFno*!=wr{X^gs+^1AG&loZ4Ig*^tMD51c6cqU+Su|phS#CH!0Ta-`zOKa z=(%tPeBS-Q722`+*o;9@w}{rPYSdJVh_e&zl@;8Ju-G$Xht^?0aq2E+ftaqu3v z*!_>dd(rFReXzv+m6~Tn^3hG;GI%mnIp@Rs;bgcR-tYcr;R^J-@B#Rz`|GyIh&+gH z1s{S#pvoBwSHkJ=VfdK)*TGfjkKrS*N}Aj2Ldi$Bw4ZRJ13@aaH`BUL`bSL-;9Pa)J@Kf|0_!)f8{cpj~(L3Q6Fu9$T(-Ib= zd%+#>V)tJQzeL{&cfwcQ{~_Fk-VMKkjoVu}9pTsLli)XSlKXFl-=g#3ckmte?||Q< z|A0Thj1E>#PxvExF#HK#Pqz`f|MnHjbh3=hoPB-vzhZ^_1c~yC1L^t?eV|N+1el z$6V4h;BZ)h|6Kx=?_sEXufWQ13k*INAL6<160bjRo|T(V`AKY7h*r79FsPq)$VQH{ z@@7NjTL6{s4XAvdLDjz(#_LUd?z>@M>vz=4E%bV`(JC+3`<>_MS6po6-3(RlV^I0N zhpP8)sCw(g>TR6(+;^7O8GG(qeO6iOv&vGRRhIg!vLe)d=2(mK6sSBmLgje@D$i!9 zIJcmF_4iQE^NpqMn5j;c6=_@g8r*cA-R^-qOKEPK-Ivev-m)$G?R%qz{+#!EC_CUf zeBDiTmVNF!58v`&i_+g4%?-6Bi}ai(iQgNocAsw^;3t3Hd(&pS{+s z7qtjn7jCxeJ=a3nEnDom&oU^xZ>wGRc@E0fzHirmwm{kQAK3Mu%}{pXhj#sG0+j9d z=e^UYS2hf)z2Wguf69CQyBPn@U@PlmRsLUrzsz>=ehxqvPD~u5lu73E%_G0f&Itb7 z^Co+~Z2*)NK$ZCi)O@aZv*{zD=5;^U6>hQo4WVK_7OEdhT=$-1>6b#4_dab>dn?io zSx+b(9%uFMP|tr?>zBBnv~C~ocWcVZtCIL#_YU_Ry~g5y`dS;075KHkZH2PhRYT94 z`t@nmS>E&CnfNaWwko}^tO>Ozi}dOKthfFjv(4`7KF#8D0aQC~cKr?1ezC{(LVwG@FczT5SOQ1iLU4VK;=YF=ODdJ)vTea-c+uo^mJrsY2y zR!7fv{VY^pzjnQWzNz2)psX$Zk`9lj;&iCv#maKVGc&XFcxL&t-dU=^ZGP zjh|!VImDm$o(W}ZU5Ce0b%vk+E-I%DPlwu|xs>bAdS|Inw{@ZCzqk1F-@p6w-?RLA z@28;bd)MK(s9rk`l>hwq@1(!wb!qL=IBPCscZ$a+2OZ@Z?6ULg3ipv5*wK$#obsUN z*UZQ5IPe@)*;`yMdcx8p1(v@9)O_-G|JJ5@S8XePj=83D0%Qwn4T3YuDXwwe|5oQ1&`h{QI-L>YE5&hEEU@ocdqL>}C@b&#?&K2^_p9;U;<0Vbb~%qHo@=jmpUQ1pKPp7dgQ{;5 zY3kQK_0Hn|F-vJ?&x=Xl`lZ#g8miv+{dw<- zCqWUTphg7@(nZ>$ zQDTP$Mu`ZVNTaBLQA8su2C&KD2tXj>xB615&r+872M5I?eBaQzFFhz7YfWmwbG`%~;a$&yfR~M!kDXdpmhN z$T*%u9_#%Gq{Mw}#G(5O>pk7~z&_-EL?@60{A+}N?ECCXT>W!q_;tW}T_kN0zLTcB z0MgYPAbnJ-{;TGDJo4V~6(IMkEU+GUyXxySe^jFQy9JCv{@ozYs~4-jLGyQju}J?} z_4-ZZJHT^6N?(xY*V9#>5Au9^o$7Cb@z8%%y-rj44)6kyG8yE&JC3%qUpk__lxslh z=KNznn&Uky!g#-NX{b**-odTmytpnGaKZ1FID|D%`XSpe+{bT_|pmGcweac6p;B% zeieURL5}yOAjf-@>bGhBJdoqPN%eO?UQhj?daaZ4URw{4G63XwPf`6IkmJ2U^&KGR z{LiX)`%U8MiFR^)Zv-hzRX6*Y{TOYZEJL2NPqKg5H~jZT?@%9SLJ#75Z89DI9O?VB zq)~6^?_ei)0O@Cn>IXr4KERfKdw`Tls@rku@szPd`u;l@B}RXrP>kHmgT2DP|L)s6 zbc|=c$MyT}hA+zc?+;R51R3Wp)$5|19WO|kq`Da|8oCQUVZ~|9#*T~ zVY7Vyy#(aEtpHj6+G7148|1uOqWbf%$@kx{gPfnAZISP~o4hXHb*F(Ir0)Zn-{1{N zp9XSXjw%uTl5JAYqafwYZDM~yzxVEl_EN3^6G6M5_4veolzxtU-ja@d=e&h=HpV}W zU2b})pR=K-;@f9;Ki{iq$hPIiY?%*tf$Z;XAp58A7D+z@QonkV92af{+3!z-?9bOV zea5Y_->(9>?n}VB;GxN)x1J*T=YZVz2dO>|WIxVPz4lbu_uGRU$BiKOfe%%0kt5%K zp9wNQ6J$NVgOvXIz4vsG@`CDS|FZugegB<}bZ2j1f3n?VMc+`rrb5rfx7lf6I{rEG zp{5PI&}%1M53)ZCK>Bz|^+^{={sSP_-xAdy*YCY|fRvM}+i~mp0^^hO*~s62=Oh18 zRthoC7YZ&9#h;J7T>aKNorWqOYTDcnDJUI8O!{ z=jFZh`)`o?Mv(njySIM-4YI$UQvJd{a=)@&y4XJe(%(^#lH6CW_v@m5_G=H2GD&r_ z{cNAKKl1nA0pv&g{=0vu{cLw?Mfg5_ucq0R<3CN$ka6k>GTzrf&XXTO&Wl!F(NBSF z?+fikU*19H)v!)deiq1a?hpTL-*k}jg6d}b7{9bH^7r4d8BxCf9uR7uAHD;9 z-;whQq|J_gM%)?p|MmyDw8n#MXAa15%~QQt^CvbG`};typVsm6J!mD!ei@t~-;Le~ zvOi|3o(D4j-yqxnE69CuZX@~rG#{j1407GQ;@v2aeZ>C0Zcu3K(xIp8x8D4JM;1l;{`*rIk4Hd` z-*S-tHmF{%`KLgRXXAY`Zs&p2M}m||AlL6~kmK~2>P4Er9b~-Ut3F1*_nrq*wy19R zgYM^S>;LBa?@W|`nT>&X@sBHsYFg^@4uUDlJveHpS=GI^nznHOL}Ip z%(Ehp^Q!bU`Tlz!Nc|MZdd}M--+w;>CPOcHUB3T*38elxNV`UF$UOch$aSy@n|7NJkQ!L=~wKK@m>P5{PSGF4_{|Z3vZ)4H#9H$3BN~!AhywK|cj;s6o?_8u&I3}EzWX|BwIHy4O;@fQZ zdC6^>hHP6t!*|`3??6lqd`BqyB_MtJR4)Y?Z%_T+`$mwmRCRM6Gq%%x|GftJ5x@T) z5{f?^zRP=rU)Q$pDQT>mGB-oc^YTH)|DozZknvx9g`BT0202e(0`2it{aelNGg!`J zuLZeor>OoW$o{=}i1_;rq;wrB*Gpd^M(#;X5f^1JNZsrYwm12F{2kk@bMSkIXIqVH zovFWjE5CbRj{J@c9>N$IA7f7+8tMIb!X$Q#oF27vvS3C?-uM0c+?EzAzsBW$o#t`j0aPJkN=SyacYmFGw;WroG zX=i}^e@8ylG)E^t7%1!c8<6p(43d4aFG#%_q%_FT_j>gE?;RlJr0RD3dcDUO-QR;} zAnjJWgk}3>?EIHCJk+=8&FF{JH zX2$(=jgv9`-S^-*u(^>HLC(a#F8D{kZAOIR&V_C*3GeTbn#OEL#&6|O1IJyEZr=ep zA6Ase`&t`7>Yss}$KR>m^iBC5d?U#G3Xtpkyi(EofLym%t9}6F{$FRC%C$> z5ac|(8|1uiiMhtP*$<@LrMkH;IhX(Ld+-9-ysY!x+{@!fh30!H{O3Fo{yq3EO=JCz z4ERFkyC0<6dqKwiG{}B^4P-qF0-`rNDD7DQU!4E1fs|iWPj-C|&UpVP--DOJ?j-!o zTPgd*6Cfq)S<&k}C;Rj>YvsP|OCaMsvR>{dTQ7;;5@cMxRUf)R?j!p_+TQ_kT`p67 z?W?j+y$y1lI&PNx$~S>rpFgR-qFC-9_uVG*(u*& zTW?E#OOWS@y;UFbp4_Lt6J-67o<|=>-#EfCVmp2x9UAWx=!He$=VCu<8q2ug z^fMY{zpm2s%^>IhmmueV=h|X_5y-f+K*qC5(>H^hS6_nM=acG){aGOA(O8iCd$FeP z0y$q!fZW%c*VTAHUT=>EIgj!*eJRNO{2h?<=Y*zDtta2>&ITzfLGI)GR6h)IA8#Hb z-|b!qQs#o(zaLS3BgpIKL#kJUEunX=FW>DB0x4M_uYabgUI22Rena&pvGU!n7o-dX z+kkhg{s_qZ`!$d|Po<`(#>u$+-S^jiV=PhJ+LSK!yaRF^e*$ZR1Nut(Sdim559B!R z)bvk5j$@t6WgG{9l&e6F<9#5gz#{=O?Ov1M>Q@$p9J0K_Dd)?!BVaZ*a`Ygs^1QBCwLa*@%Lv^9kVFP!GJ_0xTSU4(MZ_t#(OcOPrdm-ov~fSk`2J>)&> z+CAmH>gFKl_b!n6$3gB-^)EQnp3mDsrXK-0um1!&pSN5n>0g1|pH6_B&l@k2^v^-g z>mNYQ=NHl>{bP{((;<-adF92D{yxb0`~}E)yz~-De+#ttC6M!Y@uiaf2FUsR0m%L6 zvR;yY3&?pq8|3^wqUkMq%lFq^LGDBU1lg_~Am{I=Am{DCK9ZgTa{rkJa^8NW>G7Az z_t$5DoVVA5^fMpyf(0Pw>!+Ij2gs35OqcJkM}V}y1LS;N0CJv|X?hUke67=0zQ67Z z(*72Z^K~}JdAdc@4}$i519DD}s z2Y#XH^)uxA>sH_Zq-TP(&jkm9OTaED4v zq5lC61A7e?`*GlK=(m9*z<+A`3!o4Bo8U5YF;7wrb;o|39@Mh?Pz=_}tP0s_f zp%;R;fV(yQ05}Qyui&lVnIpu{CE#S}qrfTPJ(|7*oC^I#@E>4>rXK-wpx5=u_t)ov z?B@aCH1K+GI=Dd7mxD8)zY5L-ztr>-;O)>GkCgAPdx7-h180HR;GN(Tn*Ka^7xZo5 z-QZD8uRTh>zitK2LHZz&ey#=Qg44l!z(P%b1LMX-(Oz}($5I+-{3@WHTbxuuL0LUF9n|m zzt{9y*U0zR$>57f9|+RVHQ-us8n_Nzq3JJ!>!H5~z64fldi=HW{dFgB1JXx=^m7xq z5u5|Q48EZ0CEzR2KLs~|b*>Zpmf)+<&jmMw*J*kVSPVT6d=1>B>FYT=*z*K z;Cq_>1^71f6W}{wryImi8dwJ12fho=(ey>&F6hsL?}49c`hUUqq1X1y_t)ow?9YDS z9`IW5129k1p9agJzXE;;9?@BDmw@y$9Q+u(8T9!P~(9fXg*~BltP=U0@Y>Lem@GDBoXq1iwJK52T+gFaXX5 z4}i~W`d08D^iRMq!P;43-vay!dUx<^@LEm(2lx&22f;(&E1F&g9)=zOzXcO+5&uM3Ui+|Pga_sX&Q%~#|7y297 zV;Wk`@OQdnrq#CpPIiS}zb>5C4z*x^1nD=qV_nBChkql_8gheuKE=FJ{hQk5VAeHq zpKd)!*$>*~JH%Sa)0zjH1`^8~mnP)I`y1MS4>tvV9I1u>;lH$-Z@1E&M6l@L&^rkK z=r8_01Sx|DivB%pST?y~9joEx^?fm^cz%YzK}r9~jcc=gc747G^{sK$SBQ3G*xqqo zIZEo;fHd2G9Nz!e`~URSKCZ46_f>tXUe6f(MsYi9I{tZLr`dg8Q?HAY`}+96zNTGb z`#7sT{$6=o{=IUHMRSZrgK72bv6uz_>^lo}&m1gq)Eg%4t(6>yzcY@%HGY1LKJ_I> z`3}A?Lc0qm*6inWqurxNNPXiXw41(?yTx1GX4SJ&vSaYO&du<<&P}amdp*HMf%qKu zds&3~JlQqt^BDErjCN6OA1>`%1X6lNsGq*=dET?Gl{=^%&bixJxpQQmn|idq2u6r) ztt+-1jqQD(#IZ0!9Q2de)SeIa+{&0HGRX2+g8bA*-pq+A!9b~&(n(MeCj-(}81 z-{Ef_$L_6b_g#Vd$wzsPe=2?-^uDKLeJ=s+ekl-r0LXcn*eM?4(A@HlX@+O4O)byH z_+VThwmha(e3q(De^dD_Q<5_J5%JUeQSmzuWSw&sir;>Zi7x(|!haL^PqaLXYx+N| z{&NsB=fZt=z>pel5YZ`J~&eT1{fD zCSww;CiuJdO-6A>HT28DPRI%(&%wcnbQm3!aDLUS2RJP*>ZPhJ3ysz;>}c z6t;)sOmWEi^WPa}*P9X`r(-G}ry~VJh z|8kJ++7Gf_L6CmU_AuV$cGzPV%ik6ELmvVg%5~a5=KRk?{&~+xKg#>w=U8lg9lw+> zLjGu{{dY+F>5FagFO+en&iG2vZpO!S=CciqlmDMPx#oUTgg$ikb!6KzX1T<18^|(` zs=f|nKfI^u`$77ycGBUC^?wGk{_jB6Yd$YyJNVvx(^`1fI>5gRS|_!(Pv&j~@_2k_ z9iD5XP5hlg~T z^NR7xdvRT@q@F2O!&-QEL)(&#JonmXo7e`niFHyOvabKh+J9wg%{F=Ai*2gJe5LPd zknuOu_M{=-_6@Qfg&2XwD{#w_mzrCOd^*vo>L6{U4@YWrnQ}OWJ;dZ^L=gB%?jLv?R_m5DU*p__swX+U3KPTf;f0eYW7s&co z!G`{~f^64&Iz9pLuXgEq5aX8j$8nE0hpSlHQ;c-J*F%3n9K$GV7u!Q|$XH9uWFO0g z9qaR?hVNs(oSNE!AIX>n(Wt_aWsOK!t`t(j$?1@K6YF}KgR-@CysPaiB#pRv{s8+}dxHep`XE^lOe^3hIm&k1s+z1+I8Xjd-S`9?qZDAmj18Eb-)kjOQ_s z@dQB1pAq6=ozdc%6(OFK={5Vudv~aRdb}d>Oa$%m0ok{ynKnC%^yIfY(TJ9RPn!FZxRMvr^D*hwAgzOSwfLWd+Fmbs*cB+@_XQccsJ@ zgs;Igf|M+m7%M?a)(X*0`=s|n_SM7BL>+n0vh=bQGpnPc07wmoj@xcwKK_L^S_+V;5V%@Q%!r#ujEZ8NY)2x-!0Z^+q0z=zgNy^aWwGpTs;$IC%~@l8X50V zAmw+}&3?@_>e=?V_^kpd6Q2l=YmI5I`Bk88kDIjac9a|TC7NFeQnGL}*KJ>I*l*MP zDv&a|zo9!(#?R8(S0&V*j!~F*h`x4Es1Swf-!|jtk4E5(W&94F}6W4{? zr%;A{O?%C+0&V-3!tL`-d(E!`ZTq5d`(o2x^Q%DH9uHC6^EqJJYkn1I z+vDKwwvXK#>YozLujEMpBnuB?-1e!az2;YfwmpuQZu?Bbew!Xgt3b-cSHtad4f_(! zuLLPso5StbnD&}q3EK9>;r8W*{Wi_70x1(;3%9Q}>`OGi5~O5p3AgutWb~)zSAw?v z>*4kproHA@g0}q|;r2PEz2;Yfw*A&{`vTKm^D9Byz9ihf)U?<9O3=2)`Hg#g51aO- zl3xi@vbKfWdp-{J&o<4k0x1)>hufza_9dEM2~x6lgxmW~d(E!|ZTq*v?eh%#ZJJ*N zQYP*Uw=Xj7HNOh9?cWZ!uQ2U3zY4VN-wC(3J~8@7^Q%DHzAW56#kAM_D$urnH{9N5 z*q3O2B}mEA^U}mlaW(HJ@0BY(UgOO|dCmb3u6-!!U@g!G)&{)^!>p-m&t#Uh0%YDf z>*Rbs3#mLU zN;3LK^LK%iG2e#Urx^AdG=Dcp8T;RGd!K2q`MW{e{=0DdS*E?_?*?uABjNUihW&cY z-vv^}d>?LKX4-51F3`3=8g3sn?KOWFXxsk~Zl9EF^rz- z-TQL3X|MUaK->OUxP881zd`eNgOss9h1(aK_L{#NwC#_F+Xqa0&EE~$_CJT)$F>Uf z&j!uk4chj~gn!g*g?W@D>b4`2A-woRKzlPhdG3?iC{w|O* z=47~ixnaLS^LK-kvA>1eSDW^lzZFo>X#Q@HGPYj0eV%Er`MW{eJ|^70$gp3p z`MW^MnEK)N6^8u=&EE}D#>R%*TWv%AvqAHBgSLHxaQhU)e*JzK|6L$u%opMF!DrfQ z{w~nA4}{y#GVL{g7f2a%Kd(Q+Te$77x zQXcFOZl7k_YyK(Fw(l5j?>FrCYyL@)a(}0A`#i(`faae9DGzoIw=Xj7HUAW7+n*V3 zUt!v7{wdJ5?-Fir-5Bbh{hEIgq}-npZl7YdMv zwAcKTplyG4xP75%ulXlI+rC@4eVJ*m`6of!{+w|8plPr9Cqdi3d$@g4meHS@e-gCq z&keUvH|!5+{wa|1U~0I1wqd_t^G|}5`_Buv&o}Kg|0HPJpC4{tY}#x7Nzk^(17G)X zC1BcX{z=fb?-_0%dy~;Wntu|s?Jo$oPc`i||0HPJUl?v*y*1>2E`Csp@h$}^oqC1a zdrJ&^&0h-I_PxXHGfaEUUkcjxeZuW?Onc2=3flIUh1(aH_L{#GwC&Tw?MqF2&0h-I z_I<=WC?TJ5qL;+@7gT*o)yHNJfvf4J^=d;XN4 z)W50iCf;K(WpURO+x|t6$Je)2KL*x@o_Lnz_XZik)vC`2DT&7Y1y4PxJ0HjKv2&!{ zWYBGw2D_IYm;7xYh3}zw@vPKSs|B8w@~M_Qlk~%OCGxo@0>4O`0=e>>w9OA!STFoT z{A>j&AF6%=WV{V?B>!=c?I}{-j5`l?G}d_9YdndaX+gT zBOmY26lpt)?vprz%0i`+?wKd~?sP{lhkduUUG26F1u1^j9|0NvGpfG@GX4tHFKO4+ z9~L*_64w`kMdf>ZI<4v?>2x;_voBsdL-S~Z5TX=)PGOLrwhn<#;9HfGX5&ne*k%& zm-D{Z-wRTITJ`lH=kGhJ?*rK%!*`4Q4IuTqRDT4dtWtdw$o{UsN9IWzkoruJZJ4Ke zq3Uw~EcUN;XT^-CJ8R`B@w*vhxwlnMw(qxv>{HbKr<=rH-Y08=_sNp}dY{Y(8$KqW zpWJ)o96BFlT!kRhbFdaDKVB*ISyzd_#vtw5gPb>)fb5@4kmc-mw)MW?EY!1ol%%`g zFDOJF?MvrMJ^NdT|HRG>thOs#1e*n#lzU1W&V!FYj&~~RXIXRo2DQHQIU}rz)1@7=LCWdg z#ZRg~-g>4;?AL*m3pR*;9Y{%RjlTni_lH~dY+^M$Chz*Dqa54Cb=)pd*2_SUGE;T? zcWZjK#XCGrp+gXInKq1b!@KWPX;N;33z{Hg3P-B@}JUmV3v!GmGSb# z47YC3ef~CQpHGgllCx?aLsQk>=@XW_a*EV@3rLxx`g0)Lxl#4R7BN-}d}9zhN=BRO zA=9ZJ}#cZr?f3K2@HeLh!4c|*Y zZ8<9aRObiL{UF7?Z>~W(N^z{TXD>+q->7ai5WN{laqpw$TK?r*!skOZ^6q!`HRC%1 zZv&YRsW?yRoe*9w1NqOP93`=B489$S!+Ttzcdl}@d;t3mh5J@5T?b8d9VFWG>aTBq z>~pgMEtji%Hp{WCr2iV}r)eN%1<3I;=W!{@x77LHEyDaijQpvX{}fs82{=ED$N6DH zexGB<;E9v|9yD3%D+DP;s=NC)P3q$UU!1eU%`k%Nw$8dV!S5Alo}j^~6?ntyb7`8yu6k^E8gC7BU~|wUqhL4rHCD zi>nA_+m%TDXMvPEK(5#xxI+a^hU13=0+)f2sO`29V68#1OT<_h+F zeLsuq-)cDCTKBxv{~Ab%e?jVR4^l>htp5hp-Swxy2j%(%see95S+08G*$LL!Gdfva zvN~EFd*U}gYPAU+cl5aIgAewVU&kd!nXAlK7AomK^EHV(3#67*Fp0GvY9s+WI zxew$qeIZD3w_}#JV_9=)$4-#4U-iV!@mA*amWP1u#cb^xPX*;I=*2VVg{=2L} zjgxx}h1W!sz46j7$3WI^ez%bnk9l%b{TcgJI?@?a=?-02*gse{9ps$xfsEA;zMCTc zKLTk}1=8jaNSh$Y@ku-@-a0F*vDJA@BV2dkTcA;mg7Ja4^4L;&uQXfh4Cr}hP|rIp zt<$4*dO`Z*9!7bki_~8Nvi>rV_3s5)|9?Q*$080MZ(3JPUb zoGtV5X^>)`#}>mbe~hHB1=(k{n#WqrXW+X(?BUJF;9m8p#DIL;7Hj#|ceNV7)YbB? zxZP?GU#4z;ZxeuD-cP1KKfVW`EPGP?mx7eWPl@i{KVuWd+xcVlJbyY!Kjyfn!sh!w z!^b@n>9lo@GeI10*ryiGoBMYVKf^&vCdj-AAp6^XzW`%<2F5mVR6?*}ph0>4oESgX zP_Ftd)Z3OTz5bTN ztP{73-}pPkuQMhAthW`#as&zXzmL zfNa-6@bCIB1LYm5!1)8~J*ejqM?m`d1*D%i_+$TE05r13F ze)0XYtJP#_s9#Lo-7f|3bLbi=U*}rw7yCS>A&yOPf4w_i3OmN0iupuI2N^rZz2Z!1 zM~tptJI;;r9?4;pyCYNl#$7G-B!l#2w#U<0{O4jm4bpXcU4(U;20Ndw+v{}Qp6+<= zSHF?YGuRI2yo3MWXs5*03Z&c$vW>Z_ZwEO}zk?j7mT!yQXwYtt`#c17Q>t3aaiU%u zIj(dBY40A3BDFt}rQ>mv`i*k`u0q@9Tzim|c9%)H!64(mS@p#rMb4}3@67G=g0OhrT;5I+BWz~`hOHiy$GbZ=TU4E znIF&TJldx7s6zFhqs*&RE%(vi%&Sbb`=htSaaJFRb0EmLrh#@`#`#_@%8bSMGk-E@ z=l^w|CUg&V4eV%>gL7*#ALoarp4uG!G)VflUWSZkQ;;_OL5}Ar)wh70uVt#A06CuZ zbpLRVPdVy##wV~+>zyX#H}41cOZ;`eka0K;}pCHF)wd(fY zU$=kfp^5!F5Bw&o0I^Jh4efbOKze_bd#&lZXLGDfx$s+Q=T#v6&r|(Nkp1_w>OKFf z^BAPxS3$}i)!pl?6tPei)R%Uy23f8|b@#X*R{I^3ejxpu zFSUP47gBVl#bo2oB#p&NkyBC8z-`=Wvt0OXgw}Gs8 zzUqY_eSZrw-frJZ|6K|)-93&)+TRz%N_*YoR-yS#Z#n(AS6GlmU zT7xWi1IT!0sQwYizCNIOQ>-F^bCQ<0C)`4x8Orn9S%|}VUdZQxwrDIl z9c8~Xp9g;Tjr2#tAsMGjK*qBSWc?dd4}z3oho#>pfRwo)?cL*2sQo?NSx*tJhsw0i z+}A@sTojx<-LB{qu$ofxc`afQka_;+Y>FRrHQyJ&4K}wxwx(;2>DYMmn^9@qp zMFmT?!O@AqOB75P>?bkWZWA;#$BT6?s$u}{y8lrzEvQlMD^3f5kT4X zdL6d~q||>$;%Ea>hJuXaK9F%N)O2?ou`Ojx=IC|aD!uM2QT=prq@wK6?K+MiWzY_Z z<2sP?2*^0LgN$R3rn}?F)Hs&4lK$8UQueE!*d^ZT@>X;F{#Y~X3>*(z<6d-QxfgA} zyO4|W9KXN2c6P3zd%h`gr-PJ*Aoqops+WU|yKbq(eIdww_i~Wpj(?5Dzg6#>f35e? z|8VZ3w~KszQm%2I?)rr7GV@t~`q>iyWRUWx>aT%pM}_KjyGc7bg7h;219rwgoucLcix|42_{#SWr9=r`w zDpjx7UiR;nApPD0a-5c^z8z%yK32U~2f1GHfwbQXvVGsEp50NdS7w9E{{yU#{3e}5 zcV8c8pnbePZv27t$NA;bA9sT+U!l7D_?m-ql%9Wx{S_eXGgY6W`fSw~sqWtI3)D}) zn{^!Q-+_z#+^Q6|3ty6YmV%T+Am_*Ls&^}r`H==v-1GXd);Gr^{jmz9l&D^F9)!-_ zJ;~DE?w3pb*MO||cGXvc6zQkX{hc%|_rBiGIjQ$|8sfem`^!B3_+i`f9!c*8Qq221 zdC0%$N-Y=R`l1N=^y#cEAD)N*JVopq=zW~FdLO4h$oNO8F3&;vd_6SxE7YGemy7iJ z&C$6Q{t}<`XM2!xuIl4J)-zf4a**?Tzv>A%ui^Y|t>-uH>o==a==#mMCh!{91m}M( z?HdEq@4c!Y09o%3s&~Qp3grTjedL~pDX53ivBr5vJno$}nD(6wlAsmcx$4z zZ??8C;(Iu-V+`qfUddw`WA;HWep&p#1yYWK%p38FjAs@|Jr|@r3EJ&(-S5pt9hA0u zzBEA3m&U2?9`Ag$Z+U~Z%Xp4gtnrrPIbO#^&5zJO0odhxB!4$($7S3fiESh8_Ts+! zAv`Bw{_py{;B?QSQ&Dc~3u6B+NNMw;^uu`|oo2TvAEyf5ck_%@1Ver^*Mc0u6>h= zy@UP1YZS`mZ6)3*AmcUrsX%>j|LrnU;_n4gqV-p)#`msXUwi^mI&7AHx(K991sTVK zs;>Ye_0M7TcfDSJ%m*pYM!6pGw3Ghq;@3D`*DGnrXFd7)yxohvfaB-%N3Xjij+r3S zBfY2NhmS$q#cni6c|vvf_~vOmr;>FY==pd*Js)?EZ;{$Rc%#N2;X1TJ+fa(Jq?Cid zb(VM=ovHn3><88v+GgDUtUp`w+klkBE^$_u86I2w zv;PUZy(@nGAp376$Z`G@b)RR>Lj9DXcT0cG2kFN=FDish zyD`#U_c)em`TAMW$1$jFjCMbPbMikp4zT|kHj(~o3sO&PQk(BSrSe`*l6SndwOZPqV{fKPj`$tRp8K7O>UO%Dp(R|o2Js;2RDAkk2E^dmp zGs-?%jB=FZwPN2Hq}&d&UmsR|H^}xKR=p?oRXYyXaW|m;mg(_irygIvRK4c;bm-hN zw!Oq3(Dh&MX_+s*K+0g%-Q$^xa+Ha>@7@jCaT&+&OxRo>ul-=8=W3nYiyJuSGo1H$ z_pUY0^Abkk>j8cDVvQ4@p6dmTV;bwfD@pw4f$X<`gZ6wd)_Xa89GWii{SHzR?cX_e z9ow`n^IHGwjZ*GMkkaR6sb@4uxebgo9^MYpKXaN$f35;4C91poGehmij??&z_;ZlA z`~j(_2&A~*pDKV2<4DzU!uy|Tu&e*Pw7V%txk`2S zam5c?%GP-4@2^41AF8|iJ5TMOx>ox$%6*g~wQDz6;us9Fe{NQNF-S4@l?s%3Dp%~+ zf_DC2*NLIEXLXV>bFSlf4CWX*I0s_z3SU#sr!XCLaJ)R|=VGk#kh z>pXr`y#Rh~);_+?a{6L{J{$c15$z7p|K#_Seq04oN>%?3WWUB;Ao&-79M3VTSAZPP zdKXH52aw0>5vorHdH(QE)n5hqKKhrcTNlaqLg#=S$H8DM^6yanaj*gOZL04F|NXOJ zAnhlCO_2YT>aT!Jp&wBF53m{Zvo96<46r%$nW`@aTR?wP_0PeU&>Qp;`!m5L=%ZE7 z0h6IGQ++eo3i?;7o9nv}bG7AM@zV{YB%ayOIy0+{)uCrAs|DV#2z>!3?^u-S{Pyef zrCg<>m+zN(@96IHJ15;?p{u-;{(p;Z|4uyrxBSx&<Hs=oyCe(Vm_`&}&G^Nj^*UjTAF ztW`bclCJi8XazF=X^`uoNcHnC?P{-wfgtnCK(2?+RUg-@tGynkfy_S+ay`WM7JUK8 z^{`xZZ=bIAdguw#{#B6cVVCMdFY9Wr2S3RCgCN(#FREXZ-ql_YLqO)Q0=XVuQ+;0F zuJ(F(3S|B!kn7=H)rVZ()m{%bfXx2_l8OT4N`uKr(R}=b7koiA=?V;Dv_feuf?+#*JInPT2dR^u) zs5;5H;ym|u$mib;_Q^V42U6Zry>5l<$4x=TGYaJVTcrAns_#&JcBSmkdqD2X2UR}? zvV8o1B)=0#eFn(=`eD_ttCIbCCCGehzwRrp>-D70<54OkWwmA9dVR{bBUKdkyQs&7^OBh?S9enR#5dg8A& zNJ&-wGS%JZ5$W3QFK^aC-d-5ka3#FrBp4OgLD6hGbMjENIBho&PJlWJ0E_#|DC(V-{+uh7vcKP+hx4f`7NmuWc4we0rFUy-=S?7Gp6c%ToTK(*voxLv_q7XP!#;E7f`#@n7Pj}!WQpr3 z(4J4mdMHJ?E;FPZy+De){=-`T=5boT(Z8OQ@m5tmO?N%7NJAcF`7bh`&F?b&$m`!p z>KzVJGC{^X0kq@ngx_(*J8+S{v&cjF%#Koi0!Wz*vi$8J%P#;q|F(eKXWv)-r0VAQ z7s1~N%pdk){9W3fGh%UXubI^v-<_G?C|78^*5Wxl?TbOmW!t3wCqdT#qUvvflycRN zsP3K@R#)k->yu?(%m*pURZr~L5btd#;oaPpxcAWle|rb-;{{^^{QZ0G2Pr7ecvA7q ziL&%X@l&=={2TGkaq z=la&Zehz=Xu}tH4&L4w%-s;nDc$sd>&KsmX-Tl(OejwwX0NV3F^;ICpW3%d$#>@HO zJs|BPz26u_ER#@%`Kfwt;MZrEj_!WHap{lJA6r1qyF;o^Jtp(vA&~z51v0)@Rj>P# z^j|ZO`R@CvNoUEt*xNwb=^npy%^zLky4iUzA~bHh6y zxXkg)hmV%`N%?LdrRF>d-Loi$E!$(>qcHV+;~ob6Y?>tFQ3+Cxs-AqSjOW=P%P#>L z_iEKY1=-(+RrgJn^ZP82_U`)`0mL-{_RMqcV>tIU(nrXB6^`xezezi*K>CmSUG&Ky z>%U9&*Fg5$JF5Q)QW8#yy?Z=k&zA9Q-cZ_k7RXpGR^2_mscQe_t&#dWG`^W?7dKq$ zy%3~arMfwexv(93ueJxIB%Trdz5g|^XN=C;EZ4QkYrk)@B>qu1NqZ)Ow0#Iwiu4YLM~8{VMrmLCQZ=caPIyZTEZ~rHxzrR^GX=*pv zC-vVBQl3=Z93MYy_v!c?amL5KUt9BC{XEz)CTG0_b-m>9y^vcZ-djM*T-BF>?1vXs zuLRjohgFX>E=8!vJubP%yEgP+>!h@+JxG7URbLOXzEaf_u+LFC>%QmShbpw6mi$eB zTHU4JbB9X3YeClgf$G13these=C zv(Mv0-?ElzeoTAulYDM{{GA-H6<@2BW#5(e>)$wn-FDQ&I(>S*<=5+wT#zy5gN(gU z({n&a>UqU~3y}Ta6J(iwAj@0{vL7aCelE!SA}c`FY0jIZb7d}AIEHM#UGm=tDUqJ% zrNjQ~En@d0NE!CJ#4!P++y&b8xSpqGqb#L&3z-i$fs}cwo7X-0u>HQF#u4ET+irxGj(1PyUV~x@u$L;Ql;jQNq>i`o<65-=RBvi|IW1h z?mxeg%7Fb~_&fN7)L-vOsqY%lZXfqC+}AOFBgww6lY?^1cisv8{}R#Mzoh6KY3JJ@ zrAqamK=!|m&puej6Cm`?Ff2(@zdGh?K4M=~Ng1lcpLiMR&Bk1?3{tVa{ z`X<#s26?~!uS8%&C2IB>xC#=eLi=Z^3x%zr`KDIP`qAROer+p0h-wPxIZ3X8-@TbTe-D zM|CIJ?^<=1{jWR7{=6FGe7#lma**@&E7hBxDdz*7LE3)|a=so`eRvmnzBB=3ei_L5 z`nl@WAfGSAr%3)IAm?kL>fWyMe5ohM@~?oLuVt!doF&hft^=9>ImqX&LDh54mgh_N zgUqknO`b0$fz%5?&eyf7cRNR(FQtRbF9j2k|FP;UZ^&=SvGg<{t<7d?^;s38^P{#qSQ{caZFRdVA~If8*~k=KKWMFyFcE{5zVzMS!AK z{|{w-{TrlgRs9sm`O|N&>~o_))|2pw>~oz!>RBM?O}^?IK<;x@s`vU-*RA_H=X^OX zCH*P+y+HcAM)kR>KdpMH>ibo%ZArg)K}vtsC#e2_>d&cOrusLk$JLVZDIjI2>XTG| zQ1#`izpnaT)!pY8Y1*D8&hs0)y`lRYe$DSUU)p&iNO3>M$y2+_f0X;r6F`oGxi1#M zhJBTT`~H92FaA7^KjXZs0(J}YB)<@}>ofAL9>`yy`Jg*L1^NDmC4U;|&i5gI&!dtb z0Nweskk2@SUktZA3&pMj=(a0_-TKEQzZ7)mmm$AI@86X>_wQWi`$4TMRiCf${vBoN z5$VTV(A|$oJ;z&rs9(=Kt=Hu@9X6Cb>L(DvPd04kqCDH0AH`3;`dO&Y=L((YbH;cS zGamKh!MIY~^CO^shU@Qw`9XKPVlO~EIxq60_(_EgW$q8sKlz~T$JPE!*s)zszw%iV zWq(l01wnWHxhS(-=XsGcFI|4uxcoZL$JXn-FO4wo%TZ>(`VB_$TMZjZqhk`E7j(zx zy>PrWPTx1oiSoW-25iiBr`D0@r3-%&zlEUNZw|^d()HwZ)|0E<1+bxX|5f~?gKj^i zuxY33F4b9gE z1vaMNB4=Nymj2HL-F|&2(@y6{YLxjg3pSLgI?r+=%(Ft+bbmzRO9v_L_{!AJAEzW9 z4}PDF@tA+VBnTT`lTk+Qu4T7p3P?Gjy4!Ek#WmZ_-^!ybY$$OQf_A%IF76}Kl(sk=lHcBkLmnt^1H;{2Bh7YAnj5?o*$U=Ascnf)qOWV%6^^?8_L1&q+e?5 zz8eqHe+!WQy&(P9YEai|aDKgVzHiySS*+FUctfl4SGXUP)xfIPGuA5oZx`zz{#759 z-}W9>C%pdusjtfXRp}J`wdxo-`+;lnv+^?W(Z8nRf*&j2ZFR5#Pqu%xk{`^QE3a4}|+aZ1^AfoA{psQckFz*qXn~(Hz$i zc!$&eZ54SA@98CV6zbTTW6bjN?w5Lxf?R)>Ar5-Z2PtMd)8Ol`cK)vI1S!W=H|_nV z{SLJUZF|*C`#jVBEwu-2d)3{?ry`W0c=b4E-ruZ1-jsT>FPimOy^VJ4)OtY5an()x z6x04~wFhl`)lGY!Y5$JegSNfuW}LHNe@c&s<~~t~^gVi>A8^j|UHf_&Y$yx$JKRE$ zHJN^buvxF?9i>suJCgd0ud(0on^Q_3J%0H>`Ze2`jxx@C7+EImoB~o#sO~;~WxML( zZ+TJj^?Q$%&i5Y1ecXJM8Fo^R7iRs%M*YLz)qVyk$5nUFmjKF8+SQ7D+>X6W^1JK# zV7hZY7-fB>s{Kc|%R1_FhpeN=Kt>V(Dbdzvrk3w9N6J3~avdH6S-v0kIZCvBEf?jv zujMb1@~?rE?^Tah?;5T5S?o95gAyNR5!<|8n(_n z8NN%$38WlXJzAXJ^zpV`zx$+~4Iulc_B@GmG)RdSX9mi%e>_i0`HMly6xF5PWbB*# z8z}snG_r5zpd9<9NcYWBWw|l{Ql{sM-$NkJThi{8_#Oh;!f!x|*&hY){a1gyr~Ls^ zj;n6kmzwtPt37Djt8UsKHtqMQJ!spjZrXeL8u5If_MmOAy1AdE!G6D9_XnNpe%HR_ zhYkDBxxVB(rIfjKWZmV1tikk~r)7e8M!H=67e(=3Tw#RkxD?n-T_k>T!AO35>StVx`6xr#qt|5t=eo?*&SJGI(RP+Q?X=&EsCoVs zfNi4g+joGJ#7+&ZPBU8KH~w4TH~yRBH!qsu*>V%BUO@JR*!~hn@6FmjAmv5X&32~3 z)@kR+52c+`K*|Z#P5VsKey`etw!P}n_Q_n0tKU?KYdy$)@=uT+eE-n#YlFX|vQnOr zuQBQy{*jIYNI9;$8DF_+|FPPGw!P}6eYIgf@)K3X6R z<+vw0&w6++o;pk7TM1HvAU#EE*I{i}!$nfACrHUw-Hg*SFx0M*pK1StloP5)iZc!6 z3Nc?8YZLT8#ShwX8S}?)_#a-W{Qy#qs~+jPClBQo%@F@5K}xjt7QvR|`0PTle;>5v zG0|)M?tf4D-GBQX&>8rfC|Q5~O%(fCb_IN~O+oZ~%MDU~C`h?Rb+iAhL81N|{vT~0 zNI9;$d!I@{8OnM+Uo8b$!foeMyZyM2LJ5MjGwYva*8jQI4^ob+ZrT?b_9LsrehNrA zp}J{bX4>ypd(gI5-Lwyy_Ft$yXxpo9+9zd%`fp@F?LpgKb<;lGv_GKsplz?ZX`gM{ zA5?qLwpZP>&o}MAQhU(0SKYKPHtdIgE%uW@%5l|A`+#9T@*DLJQckFD+Q(jD^v@x+ z2W@-RP5V^S{;=AEw!P}+`BWzC_v`)6V3hlvxv-%e)$1<{-}%s^>1PdWO6JM=PB}<% z&*yT-k3I*nB0RsSrXM`F;2JCkBl+2-9juJgsZ&fWdz8B()c zx|Un6*QrIIJua@e(p=>NTjYA$sxAG}1ayz5A7#er`E^c|^Xoj=P)gKKx#P!Gf05cP z*ZUVmpu4^b*zD2g6@e(vE3Bb4+t2&cluwDXZ!8Xu3@9AD>t8jt0aes{|8WIbq~cYze&U2@!vbQ~;%&u5TNe{pw< zeI&aw*loc5P1?1>btWZ}U66LT9=7dpKaUdaxSBLfj;sBi68p&@rBHRV-_l|GS3iHJ z{RUEws~#zyY?K>0Q~YlMDbeD|*LXhC1E&4= zY7g4>s=L=??C|k+en|saN97<(n0`}X=GK=u@R5$I@O#9<%58C#syW8(a8Ok3z4xR|}FVFBh{AZ0D zq#Re>jHAe~ANh;M0a8w=?vA4ZWw@U>$Fp2LE|utgjq(WhHLQ`iAEEOsJ<7PGz=qOC z+vn4HW{$59HtThKOQYOpnWcW(>G-BP^CZIcej#kfW1nSv-qHQGmM6yY;CJ^t_Qm(o=j!C0J^KbYG9e0p&Ty?V_(_z0}pI4Vgd0w3j8%lTm`()`LJ(_;< zVYB~1Ie!a+6!&~7RzH38J6j*<_7i~3QH{rna=$8ew8XPe<0*^~PbzGts-N5_?aEX? zd-U&v1@t+**{)pJ^wINDUzGFGHR`9Go|mRZI4>=S%~5^MVnvCkTKz27=PE_|TqUss z{@zm0=2nZvO@f|4qw@IDxSR(5So=4Ia{eW2Fkio=Ed<%8MXK|=>VLm=mYwz=kn?Wz z&a>?M(Pldf)DPcznb_cLdmYRMDK)>F487l0iZYaTZ=Yq`4+dHH&8ja3DP}!~QD(LJ zf5Y+LG5X(m@;oi=E7Es(^Yir_OTQg*(hH$GvgHGb{~$>DMfEew&$i>c6y!Re0J1-3 ztNtI5_vwF7y~l@V+wU1NZ&t!l=_P_9@qPoe#Aj}_6P0v2={OEU~|D4Qob)pSqL)LXH|bm z^WEPS6siAptEBuVAmym)?(g3!)c*Y+Wq#B~L3qgC_ zRewqI-SwrTEajXvQvOPiGF5fAeYV;sydd@$fRy2?NBa&YU(4OnMasWAjMsOvHCgnqWI~&R_ywKGJfH|0~kOV<~hFu=zCE1nRJkAk?CBkOn+#W%%gvS zjH?7>UO8yL_tXyG%k*r_bB17CAU3DIKgQmxV^?S$56E7X(@E;^I&~nOewfZWQ<2X1 zs=0?#a_*3N?*m!yDvIvJOn zK+0Uz-ThOl_M5eTPIsPh7`6lFO26C=k{vD(w^7xK>?(J~T zJ$cMu?X&N@r@?+hH;H#ENJ&3O^obzFy}tb@Luvbx*bM+F<5aijb%gnqhjJYMQawgn zC*(fTyqje{eFjnvsorR!%&!ihJ#XCiw=|BvdD70&V6=Htp>@0W7Z27v`;u#X?t|hd zAEcjmK=-_{R$?9hs_Ph}M0!q>0=o-(NdNQ&DT_h+U9I~2n(yvkAIehZye#Ecfs_)} z-ScRc+Sfmz@p$8+{vGr}*q*vb{5D7vzt@3`>o(P22HEcKK+dldn(mIXOzXXVllYqt zQkJV8X`KgAX7>__^9zvmMq1}d&qiM7LF0E}w=NbxAAt1J2majSl@33ff0OZgAEcb_ z?*wJT{^+IBo|7PDNH6IhKS+5TWIdmQ?4O{f*Y7Rm-2IdfpOoI4CI2RnGFNr?cowVu z9bf+acm`lwl`ek21u4DyO1vXM$~=(qKBl@mzS!p^zP7K4p8+6coa%|q>*9A+?c=EZ zTiB_v=X%UpAjb!;DfT~)&6HeC@3mCMWjM(CuLte@3g=^uN8ztw=fwK!`(kXLnd&p$ z@riXwpF9>*d`M?muG5tT;`bGhes_Y*d*YvZ{5PIQoZ>mPec=D}o;66rj64eSqH zF8%NmNa^2Cba%g%!PgGnBRxtx1}ZR>;_UI9gjT!mNqhf)fHmD0i^r^vj3Y77X3<)^)3Th?*>gT z1MTCm>vs*()c2`3CBJj2_~`@E-re7RwZG_)_P6mqX&&-erWE~g&$F5z;dc>>VE4u| zl3%q_*0p&aRH1(O%x$dp&t#{6BAn-0tI>}`B;Jl7B~x|xx=(>EWtp~bCrH_^y8ZXx zW;DTXuqEO*={#1`#rAbbc}!_t`#Qvj@@(V(X3hVfmbU}c|2%S=#JdONxO=9_cn<+N z-uHlbu+faOt%jfvW=bC&Esb3pdPZjk-Z_H5aIrhx2+tswg$ zp<6e*AFc=459>ho!zqyc;NGVS(f+|mzdT9i-Ay26tLmrwea$kIT{cw8Jr7cT2RWXJ z!$j`~vOObIchBP>d{C;kiJyAgrCd9Z{TgW>Nm?`B+Brt@KLjc5u9SLvfRxKXyS!_k zNJm-9x}B2$2}n7rdbI1|Y%SL{OUhjUQu08ycbV!{Alv(`>hAXDtDh-*#Lp8TWxeW= z&IgK7X3$MyKN_UusqXe4Q2z-ZXq+Hrxay}nABcT^y!FUEVqXffUB7{B&$+p>E^hKi12rsGS%;Emr46} zf|R6miT50kG6kgnJ5_i0Q?B}%Q!IW~fs_)}<+`Ef-&$IOGVkj7*0zj2-O%)jJ3U>nHs`bc%N{RQx|PuqXQX@8V)EY-Mf(RR)R zDQ|=9hySSFZ9wFHIIQKDX}fo7KYXcr&F2-N-+A=BC~eKhcZ_T^Nx9$-nWvLL$}H9Y z1Q}1lEXjBGZyNkj?$G|72hwk(>rOvxADA!WPyo_zr0dQ+*nM-q*j0nHYXW=DXS2VH zVArKu>gxqkBJCd)u)8Bw`f(med0Tb&{Ib?cdzNhw`<)K3)fY$GN9^upc zwI?LbuRy!q5!S^l*seNP>fHcRY9mhCx74^hMv1#n>p4{<q=i+>&sn`cW%4N+& zcVEvJYg^sdH~d>Xl*Q9!-aH4|>mb7QO~CQ-|1ftha8{0M|9^Cx=1?;=H8Y(|Cyi8A ziH2Pap^+w|qG6NiKqJYj9MX+{jqHTUm6UHARm&tW|W&-qPpg52{K#@`uxjz`^WDeqg5 zm}VmGjHwUg91lXzW7rVb8svDqePciK|G$7do{hUn{A`f^ zDD~&5zfk=(>f7sL1KKrBx0m_4z1ZJB%Y1f{v+_gf*H54sk0|G3xzMHQdelqTqlxN! z$IlNf?LyriZUJeJsW0baop3(Z5$9v6PKWgepN~}_Kigq{qs#R&~!IX<2WGJOxoZK?HT;@=B0zRT4=eukVM=7H32 z0U4jL`c3}6gZ^GUU)IH^K(?dTb+Rtn+gEZmez(%!cUHN-@AOS_`cCcc^cvp{^Si6l z0nbVvnBn@&WH$1#O_})Zh2{gfM)@%p$zp3xe%(*TCk)aiA0_kgDUj_7sJ|EFyo>KI z=_i6T@Ag@Ux@p%vBjqjwX=~Is&voG&M;-7iS7W=I7dFesdWE@AqHV9%-;Lb&);~2> z;+%4^jO$4t`{)PRr(4vIc0N(9WxB^9{@c%T8vZ5mAN;beOV;tgCg`WNl=jaDY4W>T zD&GCy0q@yw@3dQQ-m-75@i@;(pQ#I8DEYR4w0;vcULb8A$hfWo8PB~S=hH{LIluleF@rGLkPv~$(B=h<9n`^HQ8!$6uG-yZz_;!5a( zAB*nz4Wb(ZavZ$-wOXxzL|FH0{GEPk-BA_Z9VscY5Hxblq@{o`G*Ecf>WuHtSoO-*aoA-G_O@ za^ef6+zUb0J6rvyK(^~8^}X9`Nb4(GE9JZh(mqf>*8GZFDeW8+ka3#_vfg{uUk%di z@$(^1T`Q?)Cuq{691j#g_tGTMtpREK)c3Z(Slh8~o#^+1w6-6JpW$nR?>T4S9+7mX zJ=UDop_cv@SZnw$)+*#Jg_iN-J!HmopF^K<^WIbTuZ2?XW{}%$%QEp7gVb*axn2KT z{nR@oeF{i>5oDa+RsU;EH|xvPGM(iU-%kp!SjZ@4rpfz11LXqxxr* z$~rg^WPe@-*`ANo?|8fH-}-?}_inEZTE~`^3cz1+b2~Y zWqxKMPoL8zeGo{y9%Oxs)qhyiz5UDA`mTFb@-G8vuc`0V&sF{KRieKbq+PFmwD?yd z&$5xCe-5PW1KGX~x#AxVMvF(S*7xdblD-`@`PGkBUl@5h4ibG2kTw%!eK)Cpr>1-R zm;RE(fB5r~|6-7Kz53DW%R!#)8sA+S?-R9uv{+y=$o9Onhdpy?g zRHyx-w&BE3d@wH1%HOh3eq$>~UY5!0LA3l!QmSHLTwuYc#*F z>QMYf5uP?G`?z9F&j*)ZCUL9AO7j77Of>%7P5qo<{2R((y6xL}V!b!MSo;GruA+f$5lHrlx> zWc;oMO*z(iTRrmbXeQPO{$L(hKzVBMa$u z`{nODL0VJel@I+)-9OIL{pI^0`w>!q^cm8gIiM-eb3Q#6Wza5sU39mAw8zw!=cpQw z3oBK>Z@RWG%Jtb=XdYQ2{a6Xo?C}aCJxzbF>+k+v*Tj9g>8tR)kCUZ+e}c5TP7%Kb zqd#ZT!R=X4&@)=8W#=M}u-!gGrvZe>S=NU(W%;!CiDA#sO`Rc~5tZrazV_?OFrU>~$`rZF08<_jjWlT-WA4 zr~Jb_vlfN1zvezC`8K)U?E^>P{!m`uG}jw(uADkH@^_`USEbK6$WO}$Ifn{CmhT6- z)|G=SzZx{x(?OQaSy-%r^aZ zc)@h3uN-8I-vk-s-$BNB@MUryeGSMMzX&pp-+{cI8tcA?25sAa<$fUc!PcXA=aOzR zk3R-!y}HZ%o&&O-Z-Z=S#^G{3cm~LJz7DdT?Qnl1+v&aEC-XJ=ZH{#ozMW^{7mYXS z?{v#R+8^p4-cjOpHOMlSf^5$o^)ot2{Qd?q-Nb2pBCZ`II7wsMgj)Ms6>`4hq8&`n z+&kKoAI5J%90vz;ndK#ev^lrRaoppeDbJe6ew5Ky?}H!a-Un~iujto9E1-8RG)UUF z6Qm6pEd9y_X|qAL<57@t{siPU_ob$L=W{^I-uk?h+j6Cp(;YPJj&Yr_Uh~cTK>Bw- z$T<8{{jWfpy>2JJj_dF7Qtm3yq?_wi@i@ZyINYWF`ylO8^}XwR3F@J3bFb_6jQzZ9HMEakE^+=0WWD2NM*hyR3A(y+Cf6D6YiK_`A?5$I zO7=6CgG_&1{a4g)P~V=%m8iRQGwF9%kY?|HYLPzfV~P8%Ap73b?;T<2T?^@P<4!$p z%pNQAX*5VH0U5JZAY--EQMJ8#?;bC8ea zW#SnCo9_KbZ|VI-zk#&4Yi0ev6Fdz5gX;I4C+q*QAj`4uyC^~(qfBnc>760%9|_X# zRo{+(IrJ0TiOvtwqTP>FyalAiI0fi)M?zh+ z`{IJo{!l8q{UGBVZ5}pg8#%9N`8Z}^nK>ZGnqxRj%Ne8P%mj%CNncs~cydLAe1*<~Q>D^~wLkhVYt+H;645;(ek>zAmyC~(x#~2)bD838V~n=l91kG5I%K`v;1<2a|1|AnkoJQ zknOxj{RWWjY^CGmozI)JeG_y(Uj}mg%(`=BPA~y}#yUwK3MRszs{Y?WK8LYFeS7|9A?DNcxPHES zTz^D@bHvoHc=tjdeWL3hNPA2DAsc0T%>~)d??7$``_!LWC&zblL8jjeay~3q|9g=0 zq4_3B|0~G(aE1E2K+cDjpGx}aAm_vR>c0STKVPeUo6T}xS~rmOT?2AH+^+swkn=N_}(pbo~4=$PR z>Ntk3j(_Kv**?d}_Bkfe%3*o--x+J>Ba2ZkX{Ynsk@QKXyX|4j_;=F%du2%WcTBot zvBc{!khT}(y4L1y@q2?T>vE9uc_qkoZMFWr4&*%Ua*yba1?lIhzYt_hwt<|_zpCH< zUeO;9GDf$9oX-!d|FWik2{LBKERp#<5~M#FWV=>^jA49*%;)YP{R=>*F9x~Jtyh1i z`YrC0^bC;m{5kb|-7oX}1d#a)K*su6kn?+u`Uwxn{5}=rye%(LL7CTsL8cdh)ZYeje!rl8mxrVu-uE6=VjkO8 zR4L>70LXHlQ-7WM+tlB$e#b{dKM15gNBwiupQ`?~>X)ehp!(kZf33D>aafN#t>2l$ zx(|tUT|1!XR3VUa%)#;Y_gCw6gr`ZYuERYaV!OCpMi`;SpD8d$aa1)$e3IO(o*_LzHHF=p6d}Itt0O#(Om`7 z9#%i4JMT|u>%NC5i06O(?r$t{@96lPHpbarD94p|Pm<%z*FpB*d;QplJfl!P)1qBB zZr@(oaV$t%sQ$Ac``fC6q#p@#4$M{Gj(-8_aP)VW_U`X6nQ=HjO2T#I#DlIQ7i%B# z@f!=R5M(`mkmVPHjAtdtITippr$Qj-k%Mb!oJW};=Z||Gpx-?*pDqWv?%k;V8|rUV zzvI1<-VbDcyB}5Bwo3fY@~i&NlK4mDde7*cVA7pIJ`NG#7oWt=9cNg5hl!o7o z67c&=&H!mOAp5;m{kRh)z9T^P|9X)9UkcKuoh13a=P{YJh&^oUOOoEQ zM)bWv)2>Aap5jeb1CWLwMGGQW-oX(QEt5@bJKQa@vkoY(XPS?--6`}3gs z-gVcn?Y|&S+IuBPv&W?ZnuqkdSG9ZH%lcg*pnY+$Kd(-Za#n+;oc{4ne|*=j>)4Lr z4xyA_yFijZu`t1mOTFf+#&uU(0Ayc+Am?HTWZRvEG8Z#J&cz&%bFmQQTr37TmnuQd zy#N>whQI{SDLcy?LuP{9$L4_CmllFNRxAdS!Ag+(&H%`7w!3p1|LbghuAlka8!P*n z{pd!Jnv5639|+Q)rT(qzzpMV|>i2k2^v8kJU#tEd>VK%d9slHaWv&FUUF>Kf@%;m& z+3RdJbR#y%cCj1e_(yxbu@Jhnze+j1K-#71d*^ovw6vu6M1L$u8>jxE-kVUZZLj_x z{PxIx{BPtp9npW*UL*Z#J6G0)Q$Wtan?cUO8j$P3PLOl3@3nHAcrnO1_!!7J_$A0W zc*Hz84!jUdfd2r<^O*G@=V0>R!01B|JS#P=eZ-O+rUd!jG zqCbz6{=UrX9KBxaUZ?$D@1vi&P~yE5WPI0wtnVB3z5C4^lt)|9Qrf*8q(0huTLkTd zi$pgCH2Ku`uD9h{?ho&azT;Za9|N*o-t&|i)jzQ_a-2g*yFOX+m4h^UyyDj4`yrYh zjFRp{`aVrhPKnH4fbSi5-v5~BzI)8<=Zm3Z+cWQw{XCB~87m)r&f$EJW9kRF z#+HLzW2-@Kqd}0{Xc*)gn~ZtQZQTcQTg?X(Kzo0E`zpDvIP_Jyo;Vt$=63Zf)&D~M zpVdF+HPPpS)Gttfsrq*Oscyg{rUmq93Fmx>|e@2_G>H1ehv7G>}Re6*{^jV`;|FN_E&z;^o#f5 z#CUF~0)2b$W~u-C1yX;@67gf*FBH&tg!H$+5RPft-Z04aI@p#t4#^ux(sYvlU> zyCB>DnfiZ#?7uz#>$Q$T{6^nb*TG>REu~MQ)91>LPLHXnxQC(xem83GB&~1!oi6zU zU5|0jK;t~L=|0!({(bddWuAWk(z;wA^U4R(W`pcknffb1_U~8qn_nn?KFIzSf;8`T zm5p}Mp4Q{rPxN?qk9)k^8{adW+6Cv+%{WARzZ$f2pAlUt$a16oF1$(G=>9HT zj`J**>E55fxv=SJDd#(o<+MO~jITZZ&WHH@rMZmDe2^Ax|Ca?_T7j->Ang+Mz46b7 zmR9zT=wAeBAE@t*&s^0%@tw3c+WpIw(6E2*dl#HH@=TxD&mSI>{w3gf0&493)gs># zN7}Ihq{Vu#L|EJLUZtX zep}Zki;%`T{J8E&V?Qtbo9e9d_HyWU?3I510n(z4Uk!A9`$@Zw0ci`=_l{pk+qLy+ z(YJg?^u0jS@4oR)U)?A1KIWuFt->urau0LdNB{TtNv5&*r~f6=jzW<0`EHQ&xfbL) z@dwCt!8c9zM^ix_dsKj2x7UJPxA%eEAH~`a`LqxJH}^xR&e_;W){7BovVJTE*^g}? z`*BRV?0;?o*^iGwuHU^fWdAbxTssQb$wf;PEUKJy4@KcfVs0x1{ ziTlwwz88SBX!9rtUD|lj^#Wj&G~*4L z@dnL!gJ!(1*6{|-c!OrVLB`3!bpej|U@#txHSW2n)3%KRbi4-Yc!6fTKr>!P>v(}? zyg)NvJ{>R6j2Fmubiny8+ffLz9o}*CYyC^UjU2ZMq^*9?8n@@0`OLjC`1`MVJ-_p2 zD}Ah_*CYL!eX>3*1Zf#b_}=Yg+1Dk1jO&7W9X8r{XCwWZ(`5W^0%>*Xd&j#FTH4lC zqHp=C=zD>OS~p6NcjrveXI>%WJsxD7OF)kIDv)swgN$=;zl?VQ$T%+q8Rr1VIPV7I z!C2#6t?h-x*txxByf=Wf-hE`euLRkSH$k=|^#~d7sUX|&0?2vSqOXkic#!S*2gr8p z0@)7lcyH4BTYsbDX089u23bdadhEyb|K&2(S?hlmbkp?ys`>8yRZ*Vf&xda0P#K4D zAnghDz2i6+TH32Gh<-arYyRS)$FWk|{ogq!Sy&|X1VC)>qEk)Gjg~rh;tG3n1q~i>@*c#)E9nKR~u;7s&Q|$2+WX zo%U7aIHrGsm?uem+k-Uw`&KzfA7%cE`@>r|GwpgBqz#P|-}~LEBIIHFefqvXM~}~w zFO~Xxf^4UK-KiXTh8Jo3%se{y``|T5e`K4qGyZFB=TUrbWd|pHe0$uBpW?)=Z{g?f zk0EF$qx@rXB#sw=v~u-jz2W`)jqgf{+lV}OiheOjdqjQFAKV@v^pnsI_VYb$Pc&Tt zbUn6Tzh;D# zzZ0Zoo+^H{=e{%RCOP@vN%^Zmj&Jh!vHP0~{UoHD__;d%-WBCr(SB&D^W*v(t@R>l zM>a@1UHxeNu3$a8wH}Zr_u)l;lR5w`ZNj}$ehEmsSN&Munyc4*&G$+@vp{Ykt3k%0 z!!KHIm)7`wu_Jz8#Jy#>*4VJ|D*=V|2)Y2&HvqWyR$Wa>!lhOkaoKI z(Z;I~d2;@c`kn__kMn2K^^|BmBOjD{{sz)+Q$JRGsx{xrW|FUab6L->09kJUq{W(# zn~ATolhmM(;kt06(H?#^`pfl3wbhIh<*{s_Ju%NwE2|}{jN5m zKR>?de$0iI{n&Pn=o8NseGbU^9j!f;$Wz@>(tCE2_V_{5o+$6XsDkN=KLH+ANma|CxXzh&q3~{KJ`b$AttaZQb`670Mb?fV`&N)^8LO$|c{OAnh^rgCN`eo%+$@R*dp|JEh%^ zg4BmWTCDb0Y5R{lUFsbV(n{2q^&tc6Upm&mP6yV%Ao9_UNtS%eK_2J)4ssnGog(dh z5~SJ3Ck@E!9-rKy$0N%@+K@JKd}8Y}w^({jUk)05e55|t)@%B5(C8B)^?qBg>B~W* zPt@Zj&-2g~$U|%1PU4*o(!9r20o4tjF2_kDL5@qb@vEn{y~J}iNL>J=+3`r;YQ;m_ zw;ZGmNs8=WwyoFn<)G2G)&5!M6NS)UuE%}$@m>l3zRvx7ly#{Z=^rIZ`%g%cc1PR3 zHbHk6(mD5kb9GVHMd$NLP9Q;a$Dmxs;|7oxYd&Wo&t#;JD3E+JKw72x(b|)bJZHBR z{mURNR{3+a{5j`|ekn)`svoWVO5}M2$A|21{2`9xYPI~ur%3s$Kw4P+Xyu2I=ehk- zerKoY_NRX#@wq8a%3lG}Lh45=KL>ff)cwLJ)I*CEpCT=P+-NC(K1i!pKU(?a$TR3L z(ccf!VwGQ`!J&pfcH^5a4hpD81yyoDewpnkOSeaJHl zacBLT4-x+YEq~=0(Qg51$=aV-$799F$MP%P@BX>pde!g$?P)3HO>8CG$+Mu@!do{T z&nj(C@i@u^e|c}}Vl{k0%%f%?yYtar8g(Z;_J`On6@WIJCz#QZGL z_N^Q*`Yj+W`5f`1wXYg^&U#$ZZv$yd)PD_R`_`);t$mx2f0wRD=i~f`7Ofs<8|tal zdO+F|^@g0#)*+xz`|Xb&7W>3(}TNE?Fde2izTU zR;kBB&mTA*YJunO;}1M{AJ+C(>-DA8AloPJ!%5=(CgE10#&dx5ucaPmjg-HwOxiR3 z4r$*au&MauAU~}`oajnH9?yOTGCuurzR3D-18LFbO%clYNcS@*AkMLL<E(DWz9^_P(LXUP)L)q=E*>PK5Y;*^g@7uLYGMWkC0DQ*b?nx;l{Kk@cIDe=W#y z+6dC@?WGuHAJ|@W`&bUrh9pNGCs)~eOeBucH40 zr1>t;`55KAAb>nyYWbs5n=Zdz%Wr<6l-D1m6{>H?CwYezAMM|AkT#@~_BYCTMKB~W*Pmk1B+j>o34jO$%q<)jF*YxF} z(RYs2JM~t4G<`W}^j$j{;2gu)pV*M`FfU;=c{8Q?`@FmIrB*^mig0z!sq`b#K*0&R6x!&KEGW$q* zY5lYx)_H#}(ijuoM@-{;bXZpL-Et3EvOb^T1KIX`u+6vfdsa%HHcq#%4tmbbmyj>l zx%^sg@nR{r9AvqbAp1}aat#lH<~LiAZBItM{EaLV!()P;qeOoiNV{MCXz%0Lvr##<9!6|Qx3>J@%ywK2gN1fpmUJ)ENrje%lN(p9vEM} zpC$+CLwia+3qjfg>f3QBVmT*>ZUsoQxBGIW`!eM3!$7t>);y_!mUirJ(M<T;5Z4V7$Z9uFW8=Ui}%nq<`~3w%gmkVw6W)p#59iME|OwJzo1U4LmTu+K(X8 z)3hJ`-F`H2-*$ucr4sKoVB12t*ZDWyK68JPeoO|LwiVpyzxWujdq^9H###?*%dyxc_vNa!&?nGu2-RG7kSz zzYgShwCE)Io*?6Mmip5{uFFf*x5ujlZL7z8!RN8d|NV`YM=RrUV_+5eOWML!K>|F2U2MUee} zSN+2ulH=e3Ajjo$kjH~Js9y*2xNy7reI6cQjt`FqslOBCeR&V6zZK;1;x6^&eJw}g zeJxpdUrT1h`&u?3e!oG_vfTHgWZoz1gH84!ANO35d>;zwgN}@q&v(2W8&PuItrE9| zAnSSrWZXjP|E7NX1(MzuWE?M1zgYbW^`8b=_kNJ^>`)?pF398H`5@z112TT=G<`eB z`hNp?oPF1A;@5(V*T2*<95CJ z+d#(8-VW!Y{5svQ?6mhQS4Mv?Z>6@!eMZKo_vSUl;CT|CEg&uHe3=i!K-zSWeOUpr zy+49%XV1UN_>Ko@w}OntQ|fzv<0Hu>R!xWej~F$1Dfr-}%0D(tR$p%P&&?Ss?8nAltJA zWP5gN`VqfMoX!QAKicth5$e9LLHhL)$Z|5WTH%?fPEOKp`Thy-c`S!+Hquy5afP(A z9CYUv|IRr^tLiP|R|~Sd)IQR#fgp8uylPNx-EjH)PLO6FZ-$WWbkjISxjq&*aI&-P zBFX<8NZSXpT^$O=KM^$bdd@R_$Vqt2u<2D^+`h3u=2Z(#Su?Zpf3opDsKi91T@A;tx zwT?SY@ zLkCN~aiFQciT5{UBM&wCy6qO~w(AEuUK|IK`whmN?`wLet!%%E?PMJ}8RQtg0&;A- zCQG^<|3cK0mLu)y57OlK$oPZqgDcVY_%$Z^`WuRWf1a~7UE+|MG0^1i39{`^f{e>c z>VFQh&AZk2#;IE4G;N5q<2sP#L|X?pX?wiqkKXGFe6K0v6YKlO;U)SUIO57<10Tp^ z2X}46|2jt`%JIaxAg|*Usb8V~a`iW>zf=7_NuoaiWSQ5he~0?^I5>l_uAU_Q-3ij{ zbu|m=Yr4zdk33xCa?p7~$3Qx0-X zsRp^G1VN4$$I0JXj_ZcCkvN|XGOb+wW$J&WzTJ;nZC5qMeTl|@MU?o5q3fmbpA0gt zDZS&J-gquK6VD}g#dFE&crH0{xBNzsK6o-(Aa=tv(U*a=jUf9zph&jIQ$YHKAZ>>F zOV#gosn*vw5$99waXyuT^QmN~!=eLU%Qf#t$k93%`lXx?K$e?4OX@ijWQ=bG8RIuW z#`t%TF&;cyj<+ub8RJTjaoi4a{`Q-r^B?4O?1#Z5a4XmrOuce|d5_7NAm3wh8_4&V zyaw|9M6rH{D6(P&ne+B5(%<2$q#tD<`>_?|Tp94H^y4~^{Ro2WN3YkUA6J8%EAN8r zN7vV-A6J0v$7+zi9UM z?F?c&WLcHEJywIPGXR=>2DUGf`x(ZV=O^u&OZihlrriy49BM&o{scLn=CqK%+uK{* zG1%W@`(m9lK$>ai)V6rGKMC7Vq7y&cJjd(jaf=UnYI%O*@|gLO|2&YkNd1S@|3m%6 z>tx=10y6KH>K}K#_$gTlP8Qznn;zpmF9ljRkK>u&rT073?Gj}?7J#&e)nAb$ect|4~tPh?XF{_pAUk}XaBBP1x>g2Q{jrpYK5L z_+%qr-ElfTAWh!CnS$?7C*wQR?eH6U+XKIm7edcI<>>VUZodQ1mi#Axv;`pRKYFbA ze*x)FQ2$WlQi3{Y(?6DS9|394s{g_UDenW2ZSjsnwdU`eCHam4sk67QP0&33e)RY| z$4ULwdnJ7}$o8)XW5quUd4Bm>^l_^1tor^S<9|MQApVQw`RRP*+tEwf*R{8__bAY` z*E-*v3*Cg_^7k1a%|4E-M0#cy`FnrRJHD*5Ytl5ZR69mgDKo{q6j7HR&% z&t+U@gY3_ZV61U0N1n&^evTTD`u9NUw}2eSc;r7Yj(R|G{Sf}n;}ZUz$A^5Ti}ugYWc+GDj^A#O z`C4p|`!WWC)aQUap5%L5qJ1ByO55drL(sv#lI<$QH5FR9wu^sf`TQOZ+f}LU;@??M zK>cdaJ;%YH57^O20&>-_&+aA6%=<9FpX;AKUo7bM7PNYS|&ZhbVyGmRNQWWZ5B*^TW}yGeNEs zIUv_V_gYuK6sd10$iG*CTu1ErRH=3GUi%5SUdTSp0BPRsq!wCQ!Qnbi=KkFTyk{Za zX*IiBFSFb@xiWdqG;;CE_3I{lPh!|AMO|-$Nkdv>s%f z+FUK?vpFEg;3|-Dih12a%X@r{)ZgJvDR&CUa#w;Zx7Axx?s*`~eG)X~c4)?D63lM^ zFAm?)cWIXqR zO^s8PmUsHUq&+J^TJx8s+;JeweH>)D{{~s^8LwF7j*t9~Y7pge{vY^`svd{9+tcq@ zzi4fOvYzz?S&uzF4Jae+IB8dZkY*pRXP$`T^>q1rQ`d8Hp?h2F`CaRo^O5Wq?E3uB zP0;#gXnlwJ4q65B*w$x^w096ldlck+{~l!joU_Ew0BL>HzexQ<{k|GNeT-}MXL8&W z(DQEZ@2a1DAnj=Pq11C6$ac&G*^Zk*ma`J%xNcKF+I6#f)Oo`$+21S%X?EO_PeR;= zNqI9sns+&cA6J0v6L z=O)$d`BCP<5n8WZpOb_6r}g#M`n>l?WI@9?@;*9RrJjo{)p%?I8F#ZE#&zlB*$1vm z``zzdr?MB%joCtD%kgtBR`is;LsBg!k2yIBy{H*nAE<$rw)IZYw=9?O=nk6kh;jdUNb_yDT6A-+k$lbPik}72n)%a<9jerJqPS4{nrlo&u@Kt&{mR8KggXldL22LHge9(1$u`3-tQYO85Fvl;hk2 zZI65W=U`rNE*D~-(G2wKa|-;fFvpnR73LW8xd@IWpNrtJ7@vzUziHsQylWdA`JLlu zkmq%+4io=4kbbWEbJZ_Xf35mos-MxnCB9eF6YmniGYGgxkN1%jqupO=MK|@4IE*_& z;&vylRw6HA{(Hk-FLC*mVvZiK*lcN67i4J z-`BkJFLQ+CA8@baKL@1EQ9ssw!@0=Eb`|5AHp%;jZC2_tET%C0(=tx3^9}`Rr>S2H zvYi{%AKXT+|L1@#?@^HZrE2w~?JxY=mjCL!;o7hl=aZa69lw_Kpf5;&g8G-LzeIg| z94k<7+VMJ$AT3tB0@}u$81X7h%QN}ie?HkR<+lDt%Iyd;9u*+t^|<=YcF6XZ3^Lsh zGG5oK@7*5j(GJ=YJ@0(QJ@2&6ACpg=?A&pNlvfGT?0#n>{R2%8x#^zYRSKbDdqUWD zY3}>5d0nX)d|roQKg#hN8n5{kqfdNvq84weUQ4$Kjr$+V37W0>KChT$EzA` zTymnsa|KAVxA#p*AEDcOk-NR~ckDMi;(hYb?@4q{llbP~_bM8n4Qh(^wNUEro}}Xo z(!wC))MB#u$AFCA)gb%-Jjii+Tho10U#~-CVxF4qK(EUN^*2KPopGtwWt{)wRXIz=tovgA0Ommn?Hb<8ld zw0F-E{U;zTD_`c#aFF(QknLHl{^ua$?wt?mr%QRm^|42o#RoB>rGrY z_+0?nH+y6}8$iadCw~88{vja8erp2SK*?Ly-BC(Jx+C?+MZ$tNv8=<+!RV zj;qoS99MFKGuFKZY1`{!{zV&L7KhJ`j8&%EPvk#n*1@2 zs|ui{efw9@?FDJM7sx!i5Trc}vi~d9?|7k>>$xwtSj$V&>pREl^`0^A^`1jqZ>~aq zw%4BT^po{_2lIZDdY=brZ>#?s$nkIYyQF^$vc12m@4cTqh5gZW+Pm*l z)bpSU#IY1wmK(tF218< zU=sYB)!zoPe+}xlxk36@2(n*Ss{b6A2>&hhvu>2~CV^bfu2z2m$o72>GOoMTKl&z# z>j;qPcYp=nC zzFxmw@@)W_Z=3oJ>bG7f>E7+RUh_9UR?@xq+a#Yc8Lf1jfcyK6XaAUubk^q{&-1v6 zzI&g3vL4qI;#{8g+Lv5o_cI*|P@16j`JAjfo%`ghKg^antu z?@-?yN8;N-e72J7)q$125c2|Sf0nkl-1B?5`@1;5Uq|a4lJd_1Y17qz2xL1~s$cb` z)V~^Jd*Ap<+W8Ym-@Co#qkh_FdcVgG_kIuazSGA0)#s|N>&a5i5RjHJur)i`+QTKw!5Vij$`_nx)1*{&*&ej)chc={t@wI`#AVL_BqIV zV^=vpd;z4bRzKEzvx<<1Hf6b#TL*GJW<4e2e=W%VZv<(v-rG}-a#&Krds5C2kXEFA zwD(2TAkUx`qF(~iqUl1=?NZ(OPpdB4^Jb$bJN_r6ye~kudq7pw?e-xL+x>p6`V~Yy7&v*q;?~|FbUF7tT?V<=|ozdo7 zJ@n5#FZHLbl=5TE`{Xe)e-^J5{VI?aR^OgK+0eT4=SQ6{@mVr|?gnGErx5vOp&d-G zJ4Aa*v^{IqiGC+Y%hcab?entk2eOvh|uC-%s_RSMQu<^;gs5k5WD8 z)o0myO^@%ddeE!SxAmGHKS1@MS3lR*YkK@Z)q~VWdyiQq@|9OfJokf~cX?0hyo<69 z)l#qfi~XR{FKc=pg^_16%KhuxQqRpGtw#N5^E5qwvhxVaWxHEH-gNmn(6ao+?}&aC zNDHeUbN_&Rw3S$QSx>)bWIOyD$jGe)*}o&Pz0zWBC*@jy!TVCq4Iu4B_3e391MPwB zM8_rmXx4`7y&&5WEgm7{8}x#dzXYU3)5V>QxMBQQPHXJ%jLv+YBl7+9K4@uswA^Vg zO8;v>wy4cNrT>?Jv}p6E0A&)(|5=; zC+)C_`rHD4b(iChD&+eLjbgT-9`89gSD;@FpY08RTt}1j@80WSRd30D;4_f*X1p!u z1N}he8x8Wj;5GFpza#1IgFOD<3bHx5hw&J7d zrJ&LO5~^fNWR6r`m#MC#|-`d1~r6g2wRBK4J)ewL<}fwZ*O zBlWemUen7!qYp&t!Gw3obC#x;fwZ*Mk@_4%d+mZUXd#(6r zdKpMd!*=Q2etnjHrf#pLAT9OXNPU5=*Yr}*=--Rf7u$MGF9nVM{YZV4t=IHY(CF7j z>Vvjk(@R04Ul*xwu=KMuy$qzKeGsY7Tw=vj)5}1k|1eUYYw2fddMQXt4MytywqDaq zL8JdDQeR=|XK8vFNK4c8)Sk})OFvWB*HVy{x*@XsdP_e`)5}0w+9#3v{=S9^PR)-|^Ojl-Io?P)7Wo7PNx zTc2g=U(@u>AZ=>%NPWJo*YwSx(YJ`y&$acMz8N(7mXZ2OTd(PxL8EUKsjs#4Z)o~f zkT$J#q&{rxHGL~+^l_2;^bf3fYWh~t=-Wiot8VX!Hq@`f^ME znx=0CX;Tv;^);6M4Ncz)(xxRv>O;0()3<^~-!@Vo_n{RZP2UO{eY;4#&(>@DR?z5^ zBlQKgUemXNMxPR?FShlXz7;h3_L2H3Td(O`L8I>wsSjHE*ED@INSm4(sc*3Ln!Xt{ z`i_zM%wS_YU(@u>pwV}V)aP3IH#B`KNSl@xsrTD@P2UO{eR`z6!qUH{>6<~?)Qm`d zz|y~=>03eCw9b+G%D5>9t`7~&mGn^{ZG-yudR1%d&rm&R^y=ICu&p1ZdeG?AxAp05 ztoEF#deG?AxAi%ee$Z&q=Yh03^=*BTr5~85<%6^h>f8EqTR%qipwX*u>uYTNS*iz( zUVU31vi13@2aR5RTOSv1#pi6*gGR5ut@qjbv8o4+UVU3%VC%=J9yEIOZGEw&A2eR{ zc_6J$eOq5;=?9*p<%6^h>f8FDtv^@wpwX*u>l z+WM1J4;sDtw%%{+b5su+z52Gk!qN{qS@d}ztxkPgAF%bOs2((W^=*B$7eBX{rZ}UVU3%XzNc`J!tgm+xikqKX9bBAEa$i-_}=- zZ*2dV3q?O2r2VYEt*^E96IBlyz52F3Z0j#lJ!tgm+xql#to9VD9yEIOZGDcdpQL)w z=+(FNMYevj>OrGd-`1Dg`YEahjb43QUt{a1svb0Y^=*B~)?ci8(CF2-^>ODm#^>xy zM1MI*`&E5g@3ZyOR1X@x`nJBn))%QBGvL5P8om0qK66WBJO|~A zJ`beTsc-9ZZT;D*2aR5RTkp5^f5`aefkv;st*@~4f2tlddi8C6z}D|mJ!tgm+xmJ- zKXAY3M}f2r>f8F{tyX;SYZb>UPwtp=>eRRO*_M9bVH$tXl&`+6FSPZ|R1X@x`nJBr z);Cu@X!Ppa`f6L>LiM20t8eQ!+4`2M2aR5RTkm|{7@vWyRSz1y`nEpH*2k$HGqp41l5B^ufDCXwe*7$MV|-K>eRROVOyW1deG?A zxAo~?G{$pKTh)U`ufDC%vGwg#4;sDtw!X;H4@?&QD3G>6eOq5{=?Asf@kn5wX!Ppa`U+d0sd~`p)wlHlOFyWG zwjZR`sc-A+ZGBJGgGR5utxx{Sicc@qgGR5ut38om0qey*(_pnA~g)wlJPwtk@ML8DjS*4Ntlqg4+Yz52F3Z0mih2aR5R zTc7^570*Gc2aR5RTc2a=k5N5n^y=ICB1=DLi0Jb`TAli~zTDOyt9sDr)wlIEmVV%I z+8&U$L48{vvh_n%4;sDtwmxoqV|)f>YkNRio%*)kXXytXujPZZ4eHza0$YEA>OrGd z-_{q~`oE|iGrYcXX!Ppa`s5u}d`?$AX!Ppa`fOW2QuUzGt8eQIZT%Ul2aR5RTVG=9N2wk(di8C6 zwXHu>^`OzKZ|gVN`q8Qfjb43Q@6=oI$x}UO^y=ICEL%TD^`OzKZ|n0d{h+f%p9j+F z)X(t6I~j)^?IeX0LT!Sr1AL02xvyD1-$PP@{L^vsA&;9fJLZ{u&PRFXe#Fe|Jcqwz z`jYY-o&gq~EX-+}XYN1re?QthkHo+8xuoiDdFJ_F`g|@aoFjkF*Ys$F?10@+;xqLu z0oj9H>aV)ZXUhK=|$ zi^M+*GvnBJr|V%u zqsF}&aeq|fUasH%sCK`Lg19p7g&^ZzjOVS*i0+Xy>&jzf9DJMdOgw@CVKx5Feg{wv z$#0j~R(qYa>r;>xcfHSy^DQ9TJO1wy|Mx-GH>z0TPzlmM{s!$YNdJQyML+x|8JAZ; zKL6e6X7OJD*^csCWE>s^>DPjccgn5ePXIZtOBP5wszLU970CF005V@w@!X{GgzSJd z%$D-n%#r?PgS^l7MUefy`AVthcaZ&=ca`)v2-3gwYN@~VHRA6B*{;jyN_)Qt+27Nz z75{6H?F`J5{;mhP=1xRW0kh+z5k$H z_1Z4h_wb`q|8pR1jr#jR*5B^ zHpW?idfBdxZvE!FO-b_Irm>CRZQ7)H%JIHu+G$TnzB@pg_jyn!Ed6@*Sak5fMKEWKai@+`>y*!`W0 z^j~#c6Ww^kcz;8sw)@&DDd!fDwjSg>*`a>-Cnf&*z!DBL`aAZD=3Mxkuai707=4s{X*`(vK5BnztWCT240| z$J2BiC#vs#j=Ws;tF)aPw4E78w8S%^6XlsuRK>BbftI%kvVEDlPVjjNw$G>j+h`Zl zyFDfC8w@gi6v+9%MExrDH>!V_&Yz4Xo*xaNe*BzZtkd&S&peR!o%*q!8;#p7@x4Ij z^IVWt^_-3yu4|IscNlZUJd6UUuW$%1OsJn^K1)J8|nexOcL+!;Qa{>rMgimrpNoYgQS#4?+smPzHws}t+#Kb4pF1kLSL%BJM)UHDkoVH`*!*QWjW;}8lWS{B2`^bH# zTMo8y)}0TsZa=v1RjKdP*R`zm9+^Q;{CTnnw1d^--Y&ad>+(xXTBx=NRa03M*;HC zE__FHw}7p5l z=4oyJciR5_Am{N(8tIXhwmY1@xHXH2S^(VvYbox?@jGDGJk8_Z#@34 zloS7+lrs-B{XIMm&t!MRF;1!+$)7{In8?Q$2N`E=(RFm?*uu2*Mp2_k9E?& zSnFZ(@3QW$gpP6BqWWZ=M`r%(cY3m+-5%8Pns_d=5ITMQz^TW6g4X2~Y0r5e+czEL z_Pr2fkN2tn=qgE1z&gbBt{Z5^vwIt-)L#g){s%$UFUJ81{4SeWD=W1uXQ`C+;U;Ony$;kuGi|T5Yd%P`zlRXk zGW_~3)d1cZIPnXqKc!16JhPw3XZAy_{jCbkJ23i7`}1#;It#&fKNtOe(DdJ0hjXA` z@NfD1Qjq3-A6OAIoV(0h_;%g_u6G8R|KAJJMjs~r6(D2wn)(u#c)r8m#HC!@n5=Pm z?$gM))Iihv7im{lkY?V8-^BYcL&#&>3oWHR0g%?Vm9(oTNSg?9{3=0?-v*HLC$;q; zGhZ@6ns;4|8zA+p%hdjZw6;CO&p5iZ(``tmlZf{>$XS;hBm0nVwNc7HuWproy$>>8 z--2vU1IYHoW4zd&!*%?Q1I>Or$~YFF?AE_(yg-^gkBX5V_pQ#GUU7KOL<06RxQ>Y9 z+Jv#K%|50|`}Mba(LDfq=SvWpcYc?@Zvjm`QJ&*(fNpO)iN|5d5}&ak`#DYhWgz?e zoci84XAYD&|Bxl+bUaeZ83?jn8QpO_f%SyvAGy%F>+7q{Bs~Puj&3e~Q~PZ{^8fOU z^!unCG7gV{X1lhwmkQ_>X#bbG{qLRN^v1Q64l%xu7(gDjw^-+UB}m`&O2~ znnvTF&oKWP_gx^Z^LOI=K*r$=^)CV$@44#V0W#iCsQ)U+?Q)~~J3(%jEx(uYx_~^M z9-{szkk<#NsDCZU>x_%kuL5~}@D26rzy3wlZ2z$!uV0_3{v?psudh+R z4CM7|dz?xT|7m|n{`nv+1HYfA4M}!dJ>SgFZKxU=Uaxsy=fQKCYgx%%_f_g;r{eA1qk zKkIz$8SnHQ($VR(sC_s&)HawHi1)WCjLYY?kp*q1FJ=7C1Uc?&K<{>+58cS$Bz_lw zv}os%bD{gBg|z=mkTw|mAI`6lx*r;+`z7ysSE=nDp!=0`biXoF{b=>oBG1JMQr|3) z_8Q3gK34w=P50Ip*7|4T;^eG(;o5J0_zIVQdRG+B(fm1>DKU%xu22XX4)&1bfAngv2`p49NR@1%l z@*ywn@*|{O_kgr#)c3ZlK=q>$C-(E^CgN2L?J|wWa~hw0AlubJ=gr|U=1rB>lc)3M zDv)-E`q8e329akh_OG;yK{F24ezgJV@96fmrHSn;^BBzcwi1t7AZ<0scGs!DP1C*c z%tc<>x;~PBFGy>v@wAU8{Ls3`6G=FZV0(Qa?eFS)<6oiWkJkBm3uxv=l<$KCpdG36 zb)3%Ed(`)~yI#vp()oBSNE@fVcl}EqBK@2e)^*B!XCndEFdL7-v!OA4nlI-G{3Ze0 z8ida^uo~w%H*J*s?}27LjPYHTLMFBhK8h^GeFjH4ahnU+CQO;);j)O z-SOvp$)>i)H{(;#_GBmV`Nr>kRzv@Tt~3AEb!Tvr%!43EYpL^KfXzx+K1q^0y}<8*tpQ#du$KA0S6>rX07^d;m=`|_b@8TtAi$3p#0E(gbwjAcH^ zF=EWgYP_?a$0UB-z3uuu2C;ubZm~_q^>mQh%RwHuYy(?>mwheAEsH=NuXNZhf4>qm z^TFDF=c0WJbo`dOW_ybo)C;x4${+ryP~!9Cc-;(|79OPOl-|@t&si#`nEy z9BMTVh3GHMuired$v82ceJDmcS*~<-%zJaHjNjQEWqj`eIX|CN|6`D`P3k1a+ucCg zB#?E?0$KJ`AmjJC`mNFinK+&XGUn%j)ZGa(-=V&z9@ahv;^jP{Ff8A%2%%5RZ=W~N zx4*Ma-~ArK*=I|Aw}7-I>US9{{TvRme=|Ui=M5n9F9+G)P3k{1PWtyI$n@_)&XeZj z#a|DypWmtP-5%19n~GG&`9I9P33L=y*S1{@fdBzIjA3pj6D4XhM-dDl8WpgaBr0Gl zM57|M3>ujXAP{AWAQF*aWRS?9Q9z=CMiIeB)CdAm1{)9s1r6d5nf&g%_AV$Y-OaoH z^*;ai?X~1`=j?ONKKl$+b!zB}r(~SRf-J{*-y~7(zTBnrfxml%-^zCNHLqv<*6$~z z!jAc^-*I#!F6=jVy37S@-Rbw8tT*?8Z08ctIc_si)-AfvFi7_qoc`xq{{N$UN%+FC}pO-<(E|76Lrh5IF(*J`%`u8YEnED|NdLZ6-8qiZQ7`4dH`-s0`**pT-rE{y z?%=-*SE&B;yVVqax0>6uHO@ZSC*%1`ka7}adQ;uUX{-A>_VvF6WpCB~-)HrI znBNz7CurYmpR3U;$?|6Vt^z6RRG0fy)vgM?Wq0SA&!ds@v_ocKdX-2Tgm`<$ImAvG-96&oR`%a}08h zm4>{OwKs_WuFf)V`ho1P7ePv>`yV;Te?QWj-y->Yf|PXC?S5{v`B`m}#sQ?PQ{8S~ zY_pG^tnC6R8&tR3$8@?F=jbVF51RI>+wBu=_SK$Ie?ZDQ)$R7FcKfMn51RI>+wC)L z_R){3KOkj;>d|4of1Ho}w|9`Zt_PX(6v*|fbw}x^;UN2I1xT^iAF$P5ZG`#@Qr4+% zw~xHxV*IK-ruLv|ue#mdW4HIKJ!smiZnsai*+)OF@c=0sRJYrw+w7~2)bc^fI@Rs= zxiDiOs&+81)CFtW(`?@9u1i=M!oVn)a&8dVKNw z-$}^B_0@Amo@2It+i#R!H?08K-@(39>qp+M*U5N!38a*9RWMw*=i$OV51dm5nnsj0 zB1YrbpWNDb0{^AAOEa3n&aT_rkfm*iPSf~+lntr}^P_-%B&r`E#XJwt`=CdWUUQKC zJ;;3&SC?T%G1eW%p-&eX-_L`TQ0q_v@^BrxCrR=>15)x;k8TucG#c$P>J6)I)W-RB zrMDx@wcCe$l;pc4-*S+$NA>71-wDq^-be11d}Z#Dd{=_>+aAL_*j+fjJf-6Rq^wij zZeL`#AFKADX|KB7-nj8%`O)LFpFqk6)r0j@9P&NiUi>`Cp*v|wh1*!)tKM{GJzftUufs|1Gr)v50ZWa5DAf;IKVC82b&#Um8{{M3s z|MRW#yKDKNS-$GQ$`2sVLCi0ff1Txj!!kzsC2|ipva4-;jo0x7QZ}e=ACDfJ{o{{_ z{S=V0TXnmAvdzBQ1Rd`nWu5Aw&R^1zmr^c4{P%%np)UowPW}i|LiI;3@^iel>MHsB zgOm)_!#&Sdh`iQw8fGT^le|ODlV^ae|1*&Od$B}^ zxgHy4#4eS;-vBzxPe6Lo3tE1N`|3W}P~M*>c6&kA!|Mh&?i;)C48Hw$TQXp8J%i6@ z?N6Q~Ud-sb9AEdXe^Ej+8SVq+ISfk2EdskJXaTSR?s*gKWqB zsxJoFjsVEi0bz7wGFoJXSEz#yNcN^9XI2x zabw;Gxb(hw%;OSEmj6D+5&QLPkaAje*L-Q$l_1k^1lg`+)klDA-*nZpLC&jpRNoG= zy+>3(19Jba){9c!RUr58x~qN{$o<}ts%L<_KmDre8$jNlE>!(Tknh9%t9tDPt ztw8$Q73BTtfvP_WI`2;>A`U<4_&uxR*LiCW}QJxba)VY8IK9He}pda!ji33=M* ziG5d)G8<%lOI3eU)1CGCwZ806CI1$XazOQ9^<^Q?pITm-x5U0T$oht={upSEqxzTL z|1Qw_I&YQq6p%7e^-}v}YCrr{v0nzVo?w2tMh`RAW1VHaAL)8q?M<<74pOcKgZY(! zyp+LPBz-DKS**I#FQ3{UUnce~Fn&Y%l>yuK>&31sNSO_q{iFJun(pkMJgw(y9q$7` z$_Uk+eid1MX}nr23GJ6LW|%QX<1tC&^Cd{X4y*o~raS$LLte@`jZaG*H(ji8W8Md@ ze95~kUgVkky!gKyH2cAJ97{v`3XSJRkP@t)b6}UUPVzqvQa%Rh_a4;`Yr50#ZR+=| zZIXXINcmEAd7j|X``5+DGis{Xy$71>Scv=6F;7Tbo_tp9p9SgH29WELef>*>?Fy{t zjKfBdVqW)#xDTBQ`%OBpJ_9Lb-Nhua^|M0p#Ii+$t?$$tgN{5c@~ zenWNVaV}rmSutDk)dZQ(-o5~As=Y3McY~C0_njl3l-SX()=Y`>ogj}(6F{CvoC3>( z<7UZu#1fF_56x%G-=6`U#~BaGjn#2=gEg-H2ls!IZT|Gnmv%ILSK5&RGCohKz7%Bt z?gv@_3H^KP_at9e(DWN*d*-OV8)Um`zc1~%5~SU|pc&7&Dn=a6+hamJ@0qSXzV)lv z9|0+Ut3K{G@iQBwf7?OxcnGrm%EeM&0!aNlNdH=#6#aIP{tZ>V&F|vpZ6NKP<04o6 z*`VWMk2Nl8UHTqJq1qkS^NN<%y6!k$l&IaNPo%yhAf=qHJI?yuX)=cDzO3U7`@9X7 z)Ge+Zs96|YP~Bh6SJfMZOGQ49mjqk3p%~Y7rew=KHy6lQ@poDoD?Z0So%i5&&XG7) z$dovC0@+{dLB_4l^QGsxAN4$_<8Qn*{+d=cnvSk%G{Ri3*FPG2V=kl84%r*af_;~@ z(%#!Z%F7_fTb}Aafb{94>NP{GcLf@c{d#|8tOi^(V;kYyKg+v;Pw` zf9zt(=R7|8G(G+`$$t|_vEO&gfK73h{yoI+o#w&Dyx+D#${7n%=799?E7kwd^ib~= z6`>ryS2V0h%9#XG7Jw}0GyQwG`*p_Hi}&j)?2&RF1}WdE9_oG6IOL@a+9mnYK+3G$ zqTBb2ys)+QQ_sID`$hGaaP%9-GLZdaw@UR4ayZ!5G51RI>huV+Y zrtN6{z4)CDa(-+E8OI6%X;-NIsAA;5A9mf3N&ev=B}a9;pE2Vu#-Yqg^%JD5P~C2y zXtO`B>GfA>+(5=H*#2ND^1XUk{P_o@n8#P$&(B19xzpM%+rDAGy*@3!{%WlcboNug zW?yEFwg;rFP~G01$nm!JzoGV^X|KB7-ea>ruj%#QRDVFHKgo9c1(IGrOYK3YeY(xQ z%uDJIX!@gixchy%$baTriF3+#vYsym&Eq6!uKjyu91R31_VyLp>OZgb)nBOof=+)+ z?Dm>o|7EoYo%Zet7vp_i)9Wu%d(dg0WV0`mt?>XUD^$1p@3+~X*Yx^}wS3T7ewNL? z%qvkVa@t~+*n*F;-AJz}reFW03%t0Lots;$v!)h8a{cB*)INE%dobNYe zAP?7*aX(AGWgw+U^-%Z4^3<<{za`&Pkg`GbaQDTEkoWcy$#)Q>RQgBsVC#$V^f2Qs zjAyp1(mt`b?o%3nwKnd=f7X3UyKawt9LnG^;k?GV{xXd_$a3wrUbUrP=QX|lalnGV*j)|6c+r_VJjGbnASk%nBV}AZ3N>!PbLZp__J ziwlv@x^H!KviQ?risZiwEQ@j;26^0>3DT4EsxNs)(yL(qf!7(0K-M43Ki|P&Mvt%B znCX2$$`X)%Zcu%*raSjXGLV;YF0QSazvY!}O}z_f*5|Hd#C&|o`^=sSUb&viLtfe# zOXPaWH$GEV=Ei6c+Q~-o^z;==Nzietx#M(P}Y2w){DG7f0FWNgY1VbAlqE=sI;>a z$aX#kvYksow(|(c`z7^`wK4ZOI)Ks-c$Q>zHKPH(olytR#8sLrb)~7F4?H7&?gS~# zr?xfg9R;%9%^>4jb6Q)o-k~7tT??|_a?{(I^?E_>uY_w~4(j}Kx3sV29%!g zS#OnxrG58+tala2de4BYH|deKQm^fO)MC`dSX<8m@qKvKQM_5cZCHSP0&|Rl^IA&# zqWN4ce&4>xEsV0* zyGZ)#R@}!$pV;U zfadoBtCukWE{?ej6{1Xk_>xFl&;G+foyNE<5xOtYwNn) zRM+JZAnm89K1b7?>vXQxldZ?AEgh}BTg|MZsg_zHjoL6Oj7d(gK(H$}#qd89S zZK4MFHj(|?7bTk4JzI`-e&nHlF4b%Fmi&)`tV8B+{R{KA0Jiq|>pmj!88}<)hl7;M zJ)e-I`Idbu`SL)@d653p*eZG=$oVxHHRvtmfyLh9```X zMAe<+C=2#Hr#iGm{E1j9kBRqc|gJUhexx!<+?31dG{B{e)8zFHT1X3PT{gU&K zzLMAVBkt>$5&KqU#oj(X6OhjKTgRV5yc@#y7h{~B=&R$C&*5YLxB=Gm>T~gpUVo&I zbKR$T6EoB=ka+{h%W>d&MgAV8_NO7(MMeu>LDOTcp1f-l--8pWJ zpJd!NTPA+=04cAiez|!Vhx~T=Bv;BQ1SySQm-e&)DL#!d5c7vRckt=0B)&eP^ z)*mnG7Tv6Vx-4DBY(dEq&SZ&F-PUN((GYLe*!eiaoj&jgdJtybV;w3p?(E<9wQaD zwKs@eQ;;$OWILv)K1b7?<0w<>nb1(i(Q=UTf$Gk9<*WVK=cK-NR=gbRYQQSDsg?_x z<*II92O^IJUk4I#KFTqa`IUZK8*`dt$Om#wPX~FfkOT5up#bE$LIC7BlaX_WF{6W= zH<{nz!#gVV=U(zouz7Ci(fZT%o$E}Hv2!ohwFKlC_JXY653>GDkoD(*tiKRs{ly^b zcfk*yt8guPysh|A*iO#h4uDLn*k1eJwjL#`KZQ8&7^wX}9Hc}yuYz;j7_5nPu_o3r zs^h+?yvZ%+g6W#qlPPPDU)LtSyG!w|m-+^QluaPpx=ZzX@5sDu2~wQnB^TvWIyaDh zO#vxWRF`!m8s9{cYsCh*PN+WD^w5lTq5AjVIREB6vdT@juf6bZ=C{(GtsvW5_B&~3 zBFMg-3bJoEg6!KJy>dRD3bJos0ok{^LH1vjebS#jKz>KYT+f1Bx0YzT{~PDq zY`0ZzK-*nsxb)8?kn#;k|6(7N^X`Qp{k6Bkp6fVOZpQa`=?O# zaNpBRLY-YYOFupXvV8mc>__^7XXWp!LCWQhds)asS@*u=D*!2x8^!O2Af+Ejzo&!r z_XCjQ=@iI#{tHr^^Ql0~Ki63Lt7Q}EuP&hJfAh+iOSQ1?QWNvNhEaXT#kq78d1-UG z^AP8G33cx$(w;#eWf{nR$XERk$oACOBJJr0vOOa~wr2^*@$m*oakk6#i^T0*b8S}( zZ5L>^%N>0GBSG^$F;?tOfRxVTWW3G->DPXcalU%IjN7pw{VG!)?-w+?e82j%9%M1) zo6jU30g!UdeTLdy5(Vt5^8i5pN95S??30FvamV=ZJRJR`o^I*%^ z@I08p;~)FP_(b+&j92A2ln##TrS)@P4(G;o`?`v&1)>To7exB4cl(R9Jg=T3`}7>y zjr?p&qL$|a-@Z-CyQinbL9XYnx^O+02uJL5$v7^)dUU<1tJih$)^%Nw@3h1rPeoj} zv5hrBN|Nf%xOrhq$=30*MaRzpYy8AUVLvkTeovbEXB`jzZ<6hZIxOwI1!SL&1K9^} zf*enWL5`=EKgf9Uft+8yEReo$^J|Er<pK>%_)^X(jCgG;hVS>z;H6Z02$hh^IDDyuXWZX`Gj9cfYW&Y0s8Mgq) zxV24}~!I1~P8Wo)w|lIwDG zJq0OiRo@NL@5EOn{Q;2u{;BH6LAGOr?k9xXUoF-?^5DFdVtuP45jxBCf-K7qGA5Z| zn@%#GGC|Henb%ibnAdK{ypA~`^ST)4o|J)lyc}*FFT)&<5|P&u_j^)bJV;3c8Hbsw zzX#IiKSBC@C624~xxF4=dxG@Wxh|w?9fS3FITfTVRXyB3ekR-Ym-y4+Z}I0*kbbNH z>Bm8ke$*?GxP>b(ALUKlEaP-LNU8gYjMMu;mYWB%-18vIP1+*kG`dLzqsi#XxR+81 z`)(D?bK?O0g9M6u8Q0wmcX#e$d<({!P}y9w6uSQy|yFH6Z8p z_h7j7u+ZV}%`>#!ASGg^^z#6a{k$Bc-+zMiyT>f)=lLN0J_2$*YCl`nqp2YM-UZU{ zmUCo18Uu1Y+5*z=+L^K*rGWJNZP4_)X{6B<=YuY}&vD_HUjn~5hVpPsrxbvUZ{F|n zyGez5%(wQ(wtFSsKY{f7FV!3L(fMZ^SMJ}WY%h-aE9OZ0MvxM2zbwhhhwrRVtn*Q8 zf6US?(k30}Q*6gfJ+Jx>WIKLU{fg}}UIv4V`->p`UjkB`jm80_3;}6BO7*9$bjSWshUHfs^{cM>1)6>ZdA}kLdG=i+<^Kjc<6ngI1=Hm3 zt3itSUH%ZyAsZ)$8AH~J{lg$-14#e3t9}+_+#}Zok8d2xpq#5Gez&YI?dSrU{@L!g zdST1IS>wst?{@BU8JMFt+${YY?tCCk%L{N^LJDxar|*RzeGa^!_iv#W-X!Hc+@o~d zaSi*-wW-#?yUD z`e`7@_&o@qob3n@XAnUpIMd`PvLH5fIkoB}&ApMpG zvYu_ASx=Dfcc!C`I#-L|SAx#?=OVqXt}F4@x)S1dvI^DTV|h}}pCF~%TT=c&kTM@+ ze0GEM`;h+K*-s@}-liCxKOp72>e1$VTG9BnpUbEr_s7h0N%tRm9)P(|v5xo6Zj|~v zfQ+C0_?3h_b@liaZympaT*v!iH*k}*ZzxE~Qr+o)7Hlcmx}UWLq#RH^-25-lHgGSO zee%C?4R2PCf0iE*zmI{8L!j{wKsA)jP>j04FpVL8}$Aucd zN3{*ymt`CNH?FHuow0kAjE98L63+~f?KlH+T-`oK=EKV%+wlv?c653|=EDq-^IX%~oJV-eJ(*Bg{|7yB({N-sqgY|j8sUT&s>dx;g6sdimtE3+L{4oB)`Z`to zxB;YGZvQwAc_`oLc~AhPT=Rzb-wmWp1lex|AjjVyAp5P|n=<|qL5j0|UM+t@U5Wd0 zkn(}*_Wi{)*jDpuoP+${Ne1$t-^vVk*e|<2NeE|05)qW^Q z8Kt^;|7CPtqZxi9qcQHM*7*J6{fNjCiFJ;ybvct|%?rjx*GNB311T@4-uGHr#~uLb z-3T2KKzk_ONzyLbvG1spOebk?mBTfa=_J#w zzw;WOe;^fme%AD;bCQ1mNS{`K z99QqF9(i7lW8FZm|9674O9ScSERa6`0CIn#MD-s3%KpmTAk)W#w0|CCTMmQVxA

    ngYhC(Y zZmyO$bdto;zCIQr?Y`^u@3wu968ya`_CHx~JV=q>!L5q*CJOJxR52>(o|^j~@%NU= zVxI$2@>Guwao(7u`AlQ{^LoDIUk_5szAOD-7o^+;vi}!??ElsJ_fJ6j>0CekTK=X+ z62BuLrJU}YI^Q$RQu_r@YI_}VEYS2t8B*UjAjfC0eS)K~-L*mN4uX_6Xcz5o(f0Mz z_B#D`otAhuQonns-$PWl_g?~RQ?F4!LVZ6<%iF8x`)7ij?`Obfpq}p!x6b#&yw98m z`z~)w`)&g%*&y5Zw(7rt?61F7ceb-g{Ti(M2vb4IV%6=xr(m49c<zP(7>qvQLyHNImm{hih{&3}JF>HIlJ8>r)8I7qSg%QmEQOxk~U zjj<`jz6E1afae_d4w7+f&MQ1K;`~l|v6kV{>lx?0k93qldFdW0Cm!XQ^T5{5n6uco zm@9uD1X6-sM<>E=!49!o3Q~$xclKKz`Ji#6OK6<{E3sY0>d|u}L7a*n4Tsh7@3bLL}AlDJsJUN~Y z1zFEpko7qCI|3-5`yD0ABu)*Mi~l1*#ytyUJAP8#J{}^^$#`(1FVi||KiK-ogY*UZ z+|z37xu+o4p~=_@*k}GqHbDH4FBOaUDc|SL*dpjXbGm z07!WjWO|YSd4e2Np z;2vL;f!}ZTThC><{+01>{jQ{ciR{~^gN#)s$XI#stUddh-{m-er;M*T17&5XH3;b?MbNp^fGyHB!!&1MS5{J6k*O|D^ zp=9Dbo|2>VEBVZ&WoOn2on-oy5{c7iASL=A@w+8R83@w7^ELdsbF%)7 z0$E=HXvUGx3E&#B34TYh0j?9P%XOlk_p#G7emRpRKIB#Zk@|lEDQ8vB{9OE44lb`B&JM?X~TaGd@T8X1}U93OMPCD@(jp&H>v&`$adBFMC+-4>3b}RTK3@P5~ryk zWvS|y`z}qY=5Mu4@~;6YdsUD6O!}cIc)9pyqAc3D!o>GekF@s;$aaouT{^z`D5vgp zX?HwG33h!EfL#ji&#}(OLCVJ<`*e@$e`vaM9f~X~eUh#B>$d3qyTjJ~JM%kQ;nxEX z%4qPX)ZYrEJOZ-*bk)~_Z09c^$I%sk$$Y*Zq&x@G|I77Lvif`bN74^vK9+vE7G!=O z$a=@99&R3_qpWwjiJ!lK^lxbQ(*2MNyT50Me^J(b!MG?R4$q;tz;ozsJcnNM_Y3b^ znsdAmdFW4~u7%v|pzv8$)??}BAMwwa0x5qINcje2JC3Q|?IZDT2FUp3sJH$)QsD8P)yUWQq`5e#hu$~T|O8#LW_4y$EU8#DwxF?~kC$5n8 ztpXX3=CP&Y?uXq^Q>0yIL5duo8sqrX2*;;}I6l=Wb$rS~KKkT#yaQkzmn`xf0j}jd zPLbB%Sx?4FsrLntvJYhYidDa6mH2%>$o_aAqY|nNV*Y`VjNKai-Y(d zhxEpp?$LDn_aeMV=QSN=(of~hcx8i>*rTG$_40+^sgdJ3^1V7l;#>J%iMPGn9DBLH zYq_9V?kUmj_SHuAbtm>tiGv^Hx^Is|iQP~2D;uQ52Gq|6 z74c1sdicGi82sK+9mD#)C3j?SA1&Vs^;)IoAn|WHNWY3e`f=r8@oySP2^Wtft;-n) zD?V18jK_?&QeTC35|6$h>s<^|eg;{8+xAkwJsy74b75R)`?Enx?7{Hy$U7 zeIiIdgOzVo#(LFT(zk-)%8!FB<1}iu*e?Ppg{s@fr5Cmr#-)zKY>*OrsPy`iX1CY$ zY|yknT-rXzZm;RtplSa@Y5Q$2r~BRF*9MU5cH}+c*Igjx9nc)dA?9Ba>f!i(`E4oZ6OdA( zdbn}uS0AnO5X)D~NBc48o}NAruZLkHM69L={gSM1J$6wm9T z2OGcJkmo+1q;CZ&p~^4T^5^A?{YH>dth&7)V_X-*Orvh;XNwA*WXHfY-G zb+x_xRJ*-iXJ><^{U4>v&$QcXdNyd<|5@5T-)28i(-(r27JrF-uy_WL?;x%-*iW|% z2_MhMXc@0N*NXjFkm6Y+DCHC*q{wLe*H9Z?N?Mq7Ar`zo{JsULb z|0!*sYqOuI=?g(hi_@j;3vKq3G(8)n#GVoRaL0oZ|N#@l+ zkn2zmNU_JyUE^Z>CTe{PK}w6WrTtB^+iUtl(6rZm8+-YFoBbr+$H@jMvHzAXKg({f z>Di!ZZ$!vEx9ztS*zGkv8#L|9h<&Ja>L~J3cH+96#Z6PKUlF z`DcQZ0@W|sM}+MV-G}oB*{Aa%eZ+j(2TTVkq5RH(EoJCUQt#Iw*Ux4>#NSaMCDeMA zr+#-|F8POplpNKA&EF#A`5NUiPS@kSjAHL+qt?Z7G)d#04N_vuYCi-yZpI;>AL~BL zJp@ubIDRtjq0SGz$V2;Z=RPc_`F&FELXh*}7m(%NaKF^^63DoPic=cu;qiI%yHd_^ zkm7z%^kCP~Imi>h`40W-i+O3zJCG90ejD45>mAx30%`BLUF<{oRjht3T_O3lgQn>5 zE!4P)sV(ECTzAPg0%ZF?1X-^O$3KLHb{vr zS9%_2+U+$x8#L|9t9^*`n|$?a=mzm?CP*nz-R@VwR?kE&cOgh=5fQ$g$U4&gRj*1t z-++`z-Jb|HZ#>BJJo=OU`}bw~HCf9qw^HomL5ffHVB;qpdD5|;#qv*r?8h6ie?niqJ!BBREusf*xO}Ah_&9pQ3Axr=6dkJhQOR-->KWcQ8aWxdAKkGnBsBz`4 zD{<|m-{?<6o$*Mb*A-`B76oA}WgUlPxypfjF@uiT{&13#{b_wjieq8MLgB0IL z(WiqHXMEi05}$MLie1b1#I6g-_J@j367n(K>xfU&_7aalAmw4zp9dMA<*J8^j~`{< zSwY6Z43Pa_uA=n6eY|DCZow_$=W37=EN`R6xk%e{r9RZRCrR3W9HdZTq3oJ3_Vr$r{_F+P$2lN<`VUAS&w}(L)bmz(THcH0Bwkg^OZ*0djN2NJ<(>ms zZm)>;X1NPNv)mB#yhvjii0f_kgEh}v_mp~ugOstVuK`)#C#r`V$HwFo0Ys)1yWo-(K~_^=QvJ79?FEb#cnxB`9Sqh<2VQT zI6ez1TpFJ~F%qAdAZ4NIAAyX|F4e=uXB*1C;;_W$9+2_b39|p}^Sl^#3%ZKmt3gV* z_{2;}FM#AP^02^as!XK=pugxF_;l=vq_ z?*~$x@%JDPWx__WTMkk-s~#%;$;ijJ`W@@+q)rm=jUeSes-FbezDhSpdbshKjnm3c1KcxQ}8ffQ#yWS|VntdGQQJxJN9 zx_N$p@2xk$y8-s^?&l#N%eB6H?a?(bQPbwAmw9__3u&ru%LLpiMP1*<&U_nDGm6M^F-CD`}h(~-WUk)*E&O}}l| z7r98UtA4~=$4^`Ng-G|G)AJx(z7qU>fu5JFw$4lVJ%iEsp24sS@A8}1#_s2&z24?h z|9Fs+t@>J!?JrdQN08&ITnn+U2XdTsP`xL}arThvPlFNA7peX>$m^)DR6hdpJ&&?2 zrMwuB?|ZaY{dSP=g{P`M5v&aTW!1NW{6620s@J%po%vpPYmo6A4D$W)r&M1K^1FTZ z^(_f8sM}NQ<3UQe?-KZ7&$8|Bn}pKM!tl?mEmD5ur&4}Hka;$3m-v1SQlI>V#P>yz z`Ym5deD49NM|~ynb%WITJGpK=yXPuX1JCYpmqxxnkOdznqh8t+>$CFKcLAug5A8bp z%&xPK>^l3z(s|r&mLv6d1S!vg94FbT=WF_uCDNWob&~$KMJyKi$VHU404>5UoLtRkm&XefQd-_AdbsN{FY@1cP|oLOfULLNq0;*X zX|NmERmvLpt^zUK5Q?Lzozotkzr$Nf?4@kfHK+1NI?L4Krv!9Al2IZVy zPqbVw`MQA27pk9PW=X!U^}Ig5h4jPqAoJY^ay@!Vb^G~hBJ$G4`fj2Z^Q7^wdVLk- z{n}Kux6Yy6I!`&DZayLT)_{z+J&u{kH?W(=8KlVmK=AMH=WCm2m-DdXTMbf5K(;69 z5z&)C);AvH9M1zeUq93IgCN`JjCVlmn6N?8mxGkesypAykDM)I@=$-VkI?aWAIS2Z z>!=6zlof5XyS#UKd;YGu)qLn;GYCcS)S1c1xVQf^7FXknOg|Jssul zxl#N(4pKsmqg?gDYdgQD{o{3H9IXZ^@2P$eq)&gU9`628p_ZM8eP>F6?nm?6c`SqN zH2coh&J(qypUc*k{_O_acvKKKe>&IYRtz4N~3)Sx#jf|2VIkfYfi% zGoVqXuW^aUB8V%1xYlk{Go*&pWb8r3tJ^p6SpyGF+I60h&NOTS-plZ=BT zka6AuvYef&JL4Cp`KKp{Kl4E5v(HN}Y!>TvMV@tC(Xx`!=+gaaPZgZAoA0q}nQY&> zYBI0>0y*CsRhRSLc_7z;1}-@t?gsMwcQeSpw}_T}(TyYUJ+(SUwKBB~UK6nV9F*Ta zUi{n(QckOG_j?=c7U+5FYU{i;$oEo;VYhX>l(!S4RKxmU#=-GEdCXjicU7J5?REb5 zv*y3~`x~LZYn`b1%}Vf(ccIkN^ku0x1!R9crTS8k<8D95aeG4l?$LGRa_dAY>SH?! zD$AawuUPIC1aOYczuWg=sORZ7+N^zX4-43Z&ilApJZI(!Vyh%K2at$n(1y$7QC*X~lICm#rZ4+0TFSwQbgQ2fss3pIooYb%SdL z*8c`Nj>6nu31~Ui^+%x|-vS`pRtz%s*8NsqhfwG7+^8qzj|SP^7eS8mLe)Ffm+}4z zXs$c9{f)?Z7@vB)TWuZhZ0R1Puk9l34|l$m3_DAFPfMJJgOq%bG1;#AX^?HYAzl0# z3)1foKuYu^$=?Aqb;tNm*Sby=h+XZE#I7x9_D`coqY>9V$MY7s$j9_Tz5ej@kl!mF z-A~5DyC7w&>L)?^U8%pM+pjMQQI>UmQ7c*M?Fdq)sqP$4CF*zmPTH<8>zDfl@s-!1 z6t7;7TIX~2`)&KmN<7PzlXy-68P6X;`fp#4l2C44Jzm6H$BQuESMtMt`)u*om?PzN z1KEEQK#r%kK-PBzeblS4rzQJYuK6iOHx$IV;Ke#c@qyG6 z!CSAE_)P{`Una=7)w@RLm*abb2`G`O!zTReNUDoxcwcZA%>pmQQkBeh66W2fN+dOd5UfoyWzHN~2*X3!M z*0=iII@c1BmwtNjEi{(t)iV7c$BVi4f?s?q<=^+6?B|RDnZ8){wW{0aVG-&am?-TW z4pQvjbuwN|F;2zG-y`G1t|3SXxBnA|d}crD_a&_Bl00kQ68T5?G`=9^Ly-OTkLnTk ziT)tS_D=yRAA>CWa?j;>;REG{sgiFZ$nxI>S>6ed@oYLx=HF0|@d`D+)3m$?j!FHy zKuXJ>rQ9(f%iRL9+}giLx%Y!+xx7y_tUj(K>fu@<2H!QUb;<8?=4kny>dU;F15(zi z-noIyyS^aX@4T+xhWtDhJla?M%LFNBR1bE)q8NGp_(rY=>fw6aEZ6)_SS_QhN9JkF zf)rye%3+!tb7|34QvOPiQnr=$hwXTsh&&5!l)tYADfQwi;1r>T`TObI)#knARM=U+ zp`N%+o;z%?O7eL?%1x@*y9U3LT_*10cX@r~JUkC(IhiP@4LX-T7V3QW9+UFi$K>9$ zHBZb!@lVftq@Hmgl=C}CU&8H6MrNfLb?S;gw}Xt+W{~yT*B1}$ z2I_g;aO=D-$aP0D?6yvndUt}9YB)bL{cxUl!IsjiK+?y6l-a6Bw}`s*ntjKm-yO=; z{Noo({+S@x@Dz|BP4W>4ZKqk5_?g&pwd#oK!v7_y0;z z25qhV$-pc*mKEx;fa9daKG`=L3OeKNehKq0QT$&GQbK-L7`Bvp_ltc?kTMdapVL+U z7-T8o@9!ms5vS}W;2K*~_no#zc%YX6`|{S9-SQUF^sK8Ob;Q}=I! zotIwukHl#R$T;l=c}(tjTK9)->()_}yP=2pyB(y2d;ZI{FvWOlwAgO~DI>;+J|Cnw z0PkXDK zp`W|U)4Dy=biKlUBFi>(Ji0)})(tYY><1q6czr;fdsnJnd#Bug zdIDsgw^Wz!R@T38JSu`OA0z$vl@h-idK|h+k4yIT$9NgvCF>$~Q8!9E?dLafNbj!a zH+O)HZ@BXsFYLe6>#FbcI;+)PGEWjgO2pk#PCQ6)_J116pln(rc1J);)Einq_qqDl zH=5uap$6^&U-%BaPxpL~pMDnJcySz1xArMc*Oc*aLoFE(w}DK55@esvP`yuW*{^s6 zWV&;FY*RlU#`!ko3G2K&%ze~i&4KB(#M6EMK~_tx{vh^2Pxt9ixXjg zJWK4)f|OTZ5`7IwsjyJvcbVsLQc)JA%8k-ci>8!+UR*dHE7ZKb`ASiH@7=uhVg5 zdk(|BSjL5QeV(ZMq0ZmQE?6$ds{qKh7_Z%7&NVm4wj_dViw|U6?fZTft zkiW?9amxL};J>$>q<$r4NX$e1-nOBBxz(>kkZXVsq+jVE{mKF9SK>_Z%Lmf0bdY}K zfZWS6kH0^Pe?R{uzqj!($h0m;MehevpR4)`)qhm|jOy1P6Z<e7#Hc0>Z6Z;jE>!!;*9S!n$`wqx?`ZLIR+A>4dqq{(kp;;iu z&_^K0(4Qd3(3Q{1dNdg17O0y#YfS625QR#Ak{mB{@Lg?7zKfN0wpN_1yUjq(%eO$b`$N_5xKfS>gF&YEjF;oW zV<2_szElQ$;J(zfeiF~uK}x0mqF)QL{OPKPdmk`Q+mks}{4T(Iyv%D|_t~E>IgaaM zrd_dLuK(@<*gIJvh~uIcc^O;p19Hyqw>{gE+fd@(tC95EIFPn88%w_}2C07z za((z-_2}B=t=}B*nD?r+4i~PaDQ-MN#rPG^7k$NXiRZf@%i;6i)%#WnRPsmqDtarJ zW#niXhE>Ki-M7#(jC45<=J9A2j+ZR|6_DjsMY-&sR-m(gwxQg*-6U@DASK*&S~2WD zNEQ44fRqLg$vE?Xlt)0;yB1`<$Mx?W9+rHAL5i~)(@NpAAxe1nE!LH0j4XLFx~Jlu@d`qWUI~v2pfe z63V7D+9c^cK*~_nFLxg2*ZdoC9zr<}(vQTM;@3Ekae5PE91epKVBJ}A+`b*;aeErb zU za({~-{XqJ$6r>-gK%PH1$7ccR=lJY4Q0h+sDW9qCTt|+ozm+?RT@%pk7u&w5YZ<;r z)KmWM2PyXTAOY#UdrP_xG}A+Thu8;Omhb!?Pv99jC*d~060ksPBYipq~3-H_9dRdJ#w|R6W@DPV$iF`JbfTzd=ecyCT^2IU;r&K-12=zh1r6 z^B%@>X>X3cS8hG;vDqhn{Q*+S-Y0rI$adbOda(NAQ09GTKjXL+q}ab(<3&2h0Oe%u z2-B`=9gcFtSO79#uyWIoug_5__dSqe_Ve7ba(rjK_lv*w`nK8Y)AFm<)%w6t^%W!E zq(Z6hXV9!K$oGt6Uc)~7KC!F6U)vkv`#y=VWxwx?l6am4DW0mL2WxjK@^t-P%3ldm zLXE3TEx%kf?JtnxQ$1Mu`N-3Huav(Kq=YIzpyiLMEafi(DTS&BD?f4tzK8Oolz+XB z+fe0uU~9&whQ!za2D1`y*KSxyTc({*MJI z!QL+{gq;zPc8&x&PYOUvD1S=SpH9`qpJ5;+OZ8|zr!^YCB{uBR-x71@qAtjf_ej1D zgCt)nXpU!dzE|Zrba91%ys5=wW0L0EIYjJI@0EO+pqVeocg_6Bk28=D*IrsxdkrLDP>A>+@0dfAcOKPrGHEodNPZV;@NWuEY9F z5&tf{gXm`rT(74XW$%*qb_6LsR1emk1lV`|TIyQ~QbP5o54Ie?hbu_=Q5B{9MDSv} zN`H4M1NoTF?~0PvzC$9;!6`KlN&S;Rwr>YWX?|GRZI5pr%DNC=jc3(*8efp*+wF_& z_L^R`zS@Jd5B2>zW2KD4De!}Kr`4a^e-J+xfs}tho==2|TO7(^+?Ga5oVJ6e=sIBc z*9+SV?Nk4%Hc)@Ti~g35bDH{FbBD$guBF+iQB&#%d3S>yLcorS$to+Wis8{-}ZZ&Hfk)QtbW(?Dc8+ zRhwvi;Klk%|Gq)wYN>A&j?=XJ8RWR^bU^Bx2~v)M^uxTL6ykT_JSZ!Eu*7pLNSUL0 zxaU(ccHp}YqvSlQ6Uchjg7m|F-kJxyCl^ThGeJspTvhyT)s^_&syMuddj+25abNuX zBtMSBSl^0}k8Sg;leHu7z20Wt!pPpn$KOkNe}R;n1L8-2kTMCRKQE|W=AhU+_hXEm zQipX-Zv6(NXN_F%aes#G$;7kWEYFL-Q|=lm?R*5}b;VeaJty}iqK&$JOMe$HPV2Jn zOBCzATH$Ib+rT~!>vCz`#rQkRH1}~Hllm5etnW>bX>A{u`$G13dr?nEjdxEg-sXD( zq4(v}kcYDUHHlxf6%x;GAlv-}NZ(e1tp7O3`eSpY{(C@PN6i6wJ+~R;b<}CFGT8cc zxi6Ipa=-f(ko&N^LGHs=UD@7zj38@4h~M)-`h6JW^R9?srWe?WGuIX9GBIW$+)}~ zWGtTnIS)Ss8Ot)uWgd118LteG^YBBE>&H2e^YA*XPn?IL)`whew{_n6-z3~HZr&{Y zkqc5vK(=etC({1SAlqMai?n|z$o8)V+3s?mO1t}kZ1-y*+x-v7cK6&W?Op^*yDMX_ zFdBP>F65^XfcHEC$K<-?+kdi@>G4yfO^z9sRf@wWJXAISJTs`@6?L(SWx zTF$3mO1`#VNjXzMj)k2d}Yc3fjT(jB_>JRzzu z7br=NZ{De_bGb?;q1A&P(c?zxO^O?HCPme6Im%^9@LU zdkmL;T>>(XeI90@-VJ)(+^)yX=$27NOWaRsiu);za6g6bLR8&x@qO|<q5ZXR2T3cTl2@M#Hf8*Zi7R7{on_g?(E-0_(54QU&@v5x?cQlK&qyHnWE{o{>emI z@0X=qA4sv!n|!2ysprW7>pa<(KY;XVn%^BHf8=*5#`%||d{>bC9;6S^bU)~-2%F)34`G>3aT@39`-{kagyPtfK(ru`K}d7;n5O&n3D+ z9@`Q@9@~5%kMZdsk8L?1k8K4YkMRMJ$2KGH4)fUN2KlU0B3KLbfwjSOunw35)&&c| z7%%|V1C6)tFzN$tumP9|HUxcOBQPCo4Ca7Mzyi<>2EeAE@%9}?Gr$ct2NS^-pbu;b zrh`|2IbbYU0LFm<@Ji4?Jg)-$@x6>zpa*(97`VEZaW$CNw3l%W=*8c!1$~;HsQGvt zGV?=kOZ!YM4?267x+S}?UQ&8bl>Sbc)ZVP?X^?fz23c1&$hua89xwp521ieBZ`QR8 zYyOhPnfK=k)MviaYpxX_*9s4w!6*5x zA<9*2r9AgK@oOtc`?ueb_uJu>_36S>3-jn>lfz;*q?VI5D?He1R ze&7D6`dFaHN>`MuYsELob!Wlpi{D&jnRcDNQ&NsfeJ_KQHL81#iND=I=FRAaueD)YHvo{92}Rc~1j->LPXoNjRJ zY=M+h?;|PaT9D;D2-5$0o=SM1eU1@bCc~&)92uzKkMNaOUouce8#W#?;X|=M4pIhb zx#oG#u;zF#x*6Kz#(U8XFL^II4`r~PLd+40bzO4(CMoZJkh10j@oOhYIik9GeK@)* z?(aq!wc1rNDvT^^KEqU`E-jyDralAM-(ooJJ zPC7`^P{}tAWWIMnCjAHG_&pA?>xK*yy=;o4KLYaDKLMmqa{Z0((Bk`1webBY>pKeR z=VaWDsNKP|TL`kAcT_(FQe?bWX1|#Cj&n6%d^gE=H%NIzb^H2R2;1rRirpfRQZGKj zsNb%RQK?J~qpV-%L<#IBo2mE?%mA^UaHrVM1kH9h-ZOTe7yo;0kn}MiWuEHwuIBHo z*TwIw*TEd*w_2sHB;;dVEVJ19-oa#9fB2nMOFWCDTrbGDPf)!j>4neViyj^^M01}U|xivB*x zdcRWrFOdG#swU~q>wzqdQ}^4%Z|Cnk6li*%>Y84otWoKAxt=?!J_ercZ7l36?aKuz z_I`H#i}%9^OZq<0Oy_;0PikY|D)=*}3CLrYbrU6j0Z6I#w8Xa=NErgMojD-K|2H7V zf35Tm=6H956z6rFPwT1rj+EaXr1VzZd3}_j_HUHc@|r~&&4!i!{#qXF*l)!XWPRef zASJJf)UyYq*yB`$JhAsn`VAn(*Vh_koA;9 zd)S}$I2FULqPC}@)t;uI-%E=r^MLVP4H^IU)|B}&3uON|kJpK?<=;K!ded#gjd@3j z8Yb;Y1Q`$KxJX4l${$ykj(;Z7{?`0aDViSQ```ImPF{PdZy!iGr+Uo}QojeJpErYy z(@@o)0vWFtRbLHq9(<fhZMaSK z17Kz7XH<_(=wMze-VCz5ksz-bpI3bo$ZN-MRgbu?gLw^U@81Aou;Bs8za6C1yDAcE zq&}~*L%zaxytJE^EOuu= zO0ByzUx<2>HE+J!4ZU0PjRfgSbkj)e71qHw#A+GQznlJ=*XrrWM|pUo*c}8Z|ENA< zv-IyYkma=fMEdu3ka`Ko{&j5;eG|z3-KBb{?~muA-pQ;;m_-)Sm*f-ltT50c83Xko7lQCF9BiQokK!`gjnhp~jaW$JHU#&uRKKt7UwpgB({c zsQxC%{6|2JuU2bBp9xZ&>tdnCb!{I>54X;g!1lEmY42W;^QT|E((8=79M&11)Y}lG z*vDxS(mVE*^l6}(-Y^pP(5m8C9%WSO8xbhyFYDtTjUTp@_I|OS2vWjc=ONF*XT<&l zNO@?g=$RnJx&9VtJtsDZUG03aYYQ@-!M-DO6nVBpN<7jlshw@#&Q<;aqwXO2dpu~? z8{|7M39uVDPV9z)lq}Vqe)?cb`C^^e{|Qp6t=IZ5^IS=W<~K9ppN6v~|3HxI^GhK6 zbuY+qTYZj<%RV62zo{U{<+~uq_164B>K*WZsC)bPp3C?D|LJOmVRN~;e7T-dtrR0Pl`Nr=Y86_E zP0@QwS%vq6tU^NsK-T*b$nkIA7cE9z>@&}MKo0f_yN5_Ufxi3d)R4F? zuOW83K>8!=UlXV9ak;|d`WFq`hmc13x{ugby+-T@gN$1WXvU2-9uko6rMu+sD?y6A zPoIYLQmpF~f9DxFNPpyU$v+LG>;f6T!>Tt3Fm4KwmvV`Yn_G3!hP{L*#4$|{smG7PL_7u15y@%jQ^{u zd(VRut#7=J`xijU+n#yQHt_G>WFjy7CT^{qqXc`Oa(grJ%MH?>E1FCHE(JM0?R705 zxR28S*Pszj zW4uFIYnQyI6a#zHKHVqfGba@8UG1@X+Z3jrP$A2!;)327l&j#5B?{QWH8%pwEv3nS#ojw1{VZ*<9 z=6@>sd1Py8XR!BdU7?cC^BwmD#R2?`@|dk1e}#{9@bogOq!p5-N7vO3V6k-EteqcKu8B*FpNROLg!2@Zq&&EqqAVy%#`Atw(j- z1zBfek@x-f(%xS|)-$SuwAY>&NwAxx^J0cE7b4c_`W860a%|62Hqp6K|05drb9U^U10G&-s++nNPT9N1r*b*!O&YojR}e zf4o@QGop*MCmrOtSg(3JTql}wXB}6gQO~;jq@6oJiku(%-y=zYy+@LsmVDzt%6lN& zSEzdRXT+aakiI?+(w|u% zbY&)ZW~r1{XPJ~g5Trjzs=o{}R>dIwIjVo}h3gUHMN{ z8=|_u^N>Q6F?y2JHvy!41Tx>ZsvppF@8fov*8kgT$=`U51sLdHh;Eum8exUhnli-4wMSsMjwuK-S~E-;t?y8%B#? zCqaL9`D(XA%d3uc-`H9EPo=Qg9V6}XcYF;E!}+GB&jd}JtnnX%^hxT+Y>*Olc`bY! zqYa*GbK%?h%^bP%m%Z9V*nb2YmXm;UV~R`XW(>&jm5#r2d}V?h?>Qj5^{_NckCL zoX@HL-88K)$a-CbvN~QV`R)SQp07Z*$6l|?VK-@vls6lsRJN|V>WZIJ)=R$sfRv*k z>uLX?)YB7WzdQjlek)X$aZ$&ypP7h9nY7K*K1s#8$~N^j%50GhNRewVD6{>GkU4EA#5@V~0!+UV%S{?rM>n;9A;kt-2 z2&9j8{IXzo`(5()aUdnwcP$DucC_o0Ciw<{lvhBuIZyS2Alu&IF^Oj!NNM%B`r&oI zWiw7`a6M)!wQi8 zexQ2qGve<}Ak)3icVkfxrBgpC=Pr^k*me$=@^1$j2RrT=NUy2$tA%HN@%;0? zNWAyc6z}~saT*@K@O?7&X`ZK@)-?qEPk>H8;`HzIkrMHe_}2!c%m-;-3eulbsz+o= z`i&sVc@X40bE|&o%aVR2$iI8XrC8&V94~ecgDfZ5d6QFL`m6wJ9HmItyi#5B{GE?% zzf}A_4$_ZCm&v>w3{qbM`karTp6y+_XJ`9$q!rCoP{j9;qit3k%` zD9HLRnk{z2LAHOo>XofWX!p@pBMJ*{^!&bkV(!-(_0Qs`n+|Zjf?9b?X-xw4KsIA5esT(9%45dVrm9v^;GJ*und5$5}tkq*CO&iPx4vMKjp zFZE}Flzi3gc7{e^-0E>{py#+|)<56p%wu3n*`VXDP{-Y(xHU?_i{BUSt2fW0 z+$SFo@>#uCLEd)>bX}Wk`2sWN#h=B0H%PhW7x8NvNWZp#^sC0N;#Yr=>&4R`{rU`~ zUv-a)UpIr?&zuL+udhJ*)!;Yr%X_>RsXrA7Qhz<{T2JQ92%y`saX@FF~{J{3PYx0xu)}x0OAU%6MKMA^kiNWIsQp`unOEs$Q;o?FM3R&&wn5qrV=vhwE|M zyFK9zB|h8qczDKhJhZMeVqwGfgrncx=wFImPZH8=j*$4a08M(3`@tgm&o%HvUnvOd9hr2QF? zemvaJHy)9V(LWfMEPoM53HCd9aj>VY=iJfrJ1OK!obNGh14!wrZq zDpUQ=S0w)!kg{I&%Hoy+pC}`0OI(`Ok+{W!^yeXvamZBN`#FY8%|G%YZNFJhc)fPv z9f5ppcjo^8Z_l`wVjbcdQudNOZyt{O_B>YbdulvZI7sKQA`|nQ$FT6HFMJ1=$&^Ps ziGO!R%kuKqTY&f|cshj{5cAF$IIOIwF} zULIU5{!Ilb8$gbWBGvo9D(MqJ`mq7z`cb6%?KzUZ45VMbgFHS}eNFU9AltPZq@Tw? z_Ib6}MV|zkbdY`@133n&EfIYZ$n+f`+tK(9Ie+L3Qtt^e{chFgs{TI6F>_4yGpcu7 zD)vJ_)^|Hd83D3=qd>M}EJ%Ol_vV}6*{;TTKDLq5;JCT(XU=mIwa+}y=KW9bSR%1_}H}Ax=mD~UEd~+`B zuSI}Qek%46+r_>U$adZVvL4y@n~QzFIoO-YaO{1*B9!5IF8Remv9ACr_j}51&3!`` z^0)fOz9Em*<=TI7daUL%$x}X&au$P>-P^>Uvmm7&%BO$!cUD|YFWg`5)2D{<`%aK@ zP<7ir-m>r8SL{cCl*6jq_Nli0wQ3IhfJOug8Jxx8)$ku0O-7zfXVl7o;3i-QV|$@{n); zw^DD9Vl6kobLPdcy%*&jI4<^KC&WGuG~?X*PLLC2#V=m{0gXSZ`@4@3jeK!?q`cQa zws${B3G}_A1mvM#H=UAv6G2L@>UNycY`?Blzd*`C)&0dO2l?iGFXjIXQtWaI?Q*Zu zazV;L)ouGS%f4?nu^$0a4y!KT;qv{iRb(?+r$+4+e+odZqt*6Fylwy~f#Ma1{EXN1 zKPCT4kW#9;?Pm&X2bfgs^LE#Efs}))+xD53ecxDZ7f3m*x^16t+xJj=(AcYP+m~AQ zeR`@tAmyOywtZ-G%m1s@9yIo<%W>es`vNh@LwR_-#Ai9kacIt;hw-}vb)C9H<$Y<- zGjWN?Q>U{WS6%}tpQ>*AlWzOdOZ@>U2UWN2b8Y+HY7ZKF)ouGC%f9b5Vm|_;99G@m z_%27jX`e}Z_ka|C^V8L0j1%*P*v$hOmz|)okHYWj-B%ayUW7Rz^W`0ic-Xhm_2n_p z*qQ6s2*3Musj%l-lKJsqXZA%B&p$v)>x=cc?WdkB%f}RQqEqG5?(I4zxL%J&rUtB>FgONe)^*r zb`!play|tqf&6e+KUZ?xO3?Bfo)r6DASG3Gf90nk zPsDDq9}7|f`JbcZ-*QasCxetc)%}%Uh&*lfi~VCDB~bZgTK)m;m$1LYJ`QC2{goft zdW^GK{g0|7{&BE1$AdB{ZzV`6Ro!3tDabRSRO~+mDgNv-VfXG=Vpq#EFU|KpeUEGT zu%&d}A@-Rdk859n9M?@g*LphC!S^d#K|zQ1C4({;t+$p6W~9~|5V#yuiJ@8 z_Z(;Y#_75ZQVy#gXndq2FZ-|E?^6Cikdm&tzkbO@o;F{K{bL}-pIs5`<`s$E&tM?C za@g(H@_GcZbF~@cRMGKp2S^F_o?txeJ?{w`WBgO>miGngoRjwjZv@#7cY<8+#)CY6 z-lBSu>bLzZ?+ccIw0ppj>*FaP`z0!-rqcxPD$4cQh2L~dRUc^MdPVk~3+Bnba}0F; zo%_ljIi}@ZT1DD-4ao6v3rIiTRQ-L`52$`uRavjcgDlf~KdbON8Gnh7$oRFdm&%Z~ z?P(dmdqIlXuL<&ATIBaq-p8*=z9Nv)>UEh9SAdiULHhkV$hdt2GQOcpTeSfr6%gx>_ki#}Vcxe}Aoe$alowPF^j>QW@>25B zB;Q_;QsptxF9F$(1l1>lY{#pre+IH0zpLKtap~8dAmcg)Wjb-==Qivgb)3n z75m{JCE)u)uw}V9crV{j-v{-q)4^y8)_(?kEcLwuQnsl66Ug>f-Kyyz+q+HmiJwS& zXM?Q2$2Mv25Rm#gknL?!DEbzV?fqW$D7>@X5#M8Ndu24%3Du(f25#+aA#;HCRr2Ss70sh{0ljyTSiue7zBAssyXGpre-jyS5$Z-9; zwH~?lVLh59eYY0ujN*z}(%e;*D~ypK0Ww4D2seA^XXg8PyglD`G$FMlj-D7)_T z&7Z{lPicOTV#hNB>CfIPB1ZZ!ew)eIlq`hlF%4v}8?NKV_KLN7*jUdba8)W%? z5U2Cy`#Dc2)AGmPCFM;8>2EgZJq{vEF%B@!`1j!;CD?Omaj@?=Ny@zoWVv5~^wXY4 zDX^=l$G;Yy<6kAuduJjKWza|B&vPJU8_0TUZIOCfgY-8EWLz>;xBEXIWrZb4zF^-U zEY&($&tF)lSkF}>q@JN5%THJR1jzVL9x3r(0&+cXceniAZhz>0jI&wd=U$Lf+4I3M z$isH|yHCjcxdz`)aXfeDnsX2OD4M@MTP*wCfd+{n79a-|>|TyIC`( zeTzVfyw}hQ?=`dx_}!r*ZL3S)H%rC&0VM`H>*D(jB>x`&l9WFTq~w5X=XAV{gKAIjCYB%Ie%au&(8K{|BC&HKHfOU{XZvq8#ckiP!~(x3W& zOZv4S{dq`r@B4eMA7$Rn)^%Vj$aY3l^1fHR=7Xt`TVIy??g1%3f-I-!LhH9uy#L?r0rHLB4l+1a>i_#O@7{ zar*@1ym#&s{Q;2c@0XzWx)*)`<5G{Si#*3w^SyNc@At&Q-Xr0!NIP4AloXKhnymU; zAp7?y$a*hYr2c@ECqVl7p6a!-rMyc)ig$dIwC>&oVmBJ3OjkYP{O{aH`Td>y4CH73 zWd<0ZU8>7`e+;C|QvE%U?b@#TpCH@Sv4+@t_iLW|IbfQn9U=IBP#AyL=lnTOvHIe< zHcowA=8pZm;Gjn(ezQUEesd0Dy?#dGuot9w`wlQQI`{I*H*H`aOBOXp!_&%Z<-lKgkQEBPM)DN8}t|AFeigB%B) zS4;m~4N?+8j$RRs%!Ccg z^6cLf;QbYrS)}i=@b}9(wvs-O_gKrIKZa5O(vPxyIexiNFa2;(9>-3S`r(33KjJ|8 z!QUaLAN(D1;|FN`0C~;H{kzv56n{$oCD)fHK&D-hDtdpAx;-vS)xS8b4K;P&sfF%4 z{o{G6pT;=tG~UBN#f0dk)C)^F7G6H+VQqd>Mj3pDNFx_z*r(;B}?-W=b}Z;Cy#I=iaN^Fi?8(zW96zd_1QkbWFe zz2*Dj&)p#Xc@bn^yaQ5pfTq0xt`pL=oyHjdbo^E9=YW(iLDm;>RO-0}WIb6R>)8jg z-EDu9b|-^u_ezlM{sUy6cl%x1od%kA^EvuqO|Zr`a_Y%o7v^Nu^{GfWU^T%@JU-pp1 z<$I9h;g*LbF826z9maK!j?3Ym{m>xaDTs&t+l$4Y^&q9rt5S~(q}&U#zGbSfR{f~z z7mlZqevhZAsDtq+3UE9f7bfvq2~yUpei-C9aI4<4uEh6#kmY&rUu2;k%G6=vx1?YA zzHx#2;r)H%BK$Tk+sD0Xjx+v7F2`BkI$7gN@y&M5uOjFiXJsJASvb}tj6)>b1|F0DH>pXT|;vkizfK`TM?c8tnOf z<5f$<{uhw)H%LFPc|-L3K;vJ4=ZJGq&b8>M_MeMgUyyP;$a0?6zXyAcxDaJ{o+JL` zGb!hy9a7FhkoB8=bU)`iW!mnr?P3=VQWCWs`#FWkUoM=tl)Na|Yl>*mJQd$p651;@57FfgUo>T`pXS*v{g z&A08>sXb`y^VQ$T5GNAn$@abEQshhBBYy4#=}!dwrI_QJ{%&>XuVb7g4P;!~e#YSM z9IKR)kEEUokTPS7ub+vQ{r=C@PmnU}3t#(m+rC)sL1Vwi*FM*>FWD#Q6(D6siLZT; zZLjGSpt1kK*S_4c-#=T@-5_Pw9AA6aQ7b;0UI9{O%=NX8x9v5(0yOr|`P!%2_L^P+ z8v9IN`z*_TzoxrE%B*?5_63%GiKbV8lo|7V?T=XY`!(GSQf4jiwGaR8LVWgXx*Ih1 z&->cPTJ|NHUI9{Oyx?n}WZP?c1!(Mb9k9o9hGoBB*9A97nU&>Rex7AtqUjYNWyZ_C z_QkfnrdNQ*excag=atUyW1K#7Wqu}rlt9l{N5htK-B)6t19F`?0CHY;{94zU0ME%M zApgCvJMo9)Z*g4g6F{>L`*~h64SA-aT&C~wly5yxpM!MI`mkTy=LRXWUeWgYS(gft zFXu}sw@Q)t(HAu9Q-I&yE<+wl*S(VOWsv6=dqL)Fy-&({5M*2eJ(m`FOybb>FDYj@ zNXb;)-~L@3^5lIX_7U)#^$h_j{_Im=@A^jUr-8KJ3{nF5m8pKUJ0bZ7f|PXC1C5J( zGxyD znE3S`NI9aq?N_-~&wee}4N_+1`1h@hr3KOSHTSkTT;v-|{0*TJh9$H%OVa*4IAHw%2qw zXzbtjwNJ6^OEkR#q|DIseB1v_+df~)s{oDt2fpR!TlV`k-3?M^t@pJrwe2rX45dVS>vjs3?`zQ5<;Yp2=%-ZhTKBxRb zJW4dZ0;J6N%-25Jvfr=iZjdr-hp&BtZLjHW(AamwX}V6(D8Cm!b!HzbprN zDO+%U&vD+lMB+LQWZd5Y8TWG_B~ZKzQ4ZssS|R1U3{pN<-QTz?L!K&n{(lEZvHKThHQfyw z`>%cNOKp2icZ0@$x37I@g%ux7cZ0_M8?_H`9T0=O?5_|1l>RyhQX)@_Zudi?RZoeQ zTLDsLeCz91x^1uN6`-*%_O;Ko?e|D}1!(NQ^R+Ls?DuQB8>Gzo-q*g|vM$1Q<0bPuU0PQcL6C$st0>d zDhqi%?@5&pk$e{qm3cZAI`v#YQY@c~91Ml;;85V~9 z?>bJsq4KMGe8xP-mFz73BG#015H$AIb3%nkUtXn$`TGWtQrY`RWynK$FG}(ifRuX8 zdYJX5El5cK>F*4X?fDR7drpIlbhYMMpY=RTWSeB;i|70E_VX;&zn1$5f!;@o)4ZN< zv?bxaB(8s{`hL>&UrGL1Amb3_s^K)iJBbbOz3C9V8xsE|z7Ys}dp{}#WiGF#@c}9J z^8uMi_l%>B5n@*gQZ8#Cy8YZ=zWV5SUZ)iIu<2vY#+#jYk67))bMy_po}(|-yfHa9 zoAL{m>%C;;r40E=^8bBU+t<7re$%dn!|xfgZAGxL+ZNhZ`tfiL@$)Q5sq}dlBGynoqYw!|?RWE@w5jN>05?_YMCBXN8J zlxGzrjy2{=90!2mu$v7sj^6hR(-A+;xyVN1@6{k>x$4_N`rW;;&cBxYKH)#V|D205 zV!x65J9mQ|&-UCXLVBm_lD`*7vFClc`oOUukaEZ~?*qK|<7y}K?l08KxJG^J zTYo%klC}QHTED%Hq#~U@d)ARM+@p0i$$eMzoP^iAnptXZKabjcgV>MR=v#jQ>`%Mp z?_uX8PL-_-N07&sMI9v`B_R95)k((DT_DHNb0FvAc97#JELz6V0FdKo8p!#W4{{tG z138W^=`7=DEXes7Xr6_)|EE8nV_a zeFoC6@JZs=tswnc2y%Sy1?iXfxQ&HB9JjC66F;_sl(zLn?+4PKFI1P`hX{8X4Gk}= zR~lASyWqm}#YrfO{U4VhYkvaByh$L(R4T}}WP)r9pSxsRTp#N5mf#m#V@-Q5+9v%R zWsVnDoqCk62WN19sVLY(z9slLH$WvecH;xx$AIkjY>?~PE|ABEK;yGm(I90x$hiCratvKMP2%z}$hhQ#jEfuOdVlSc5|>#Z$)G9M%kM(iP*zqIyMrL(=qkMv|c-<*8@e6zOGX<|6Ow^kp|_||jk z&JQW8URu>W*IcS?p&#SAia$9Z+wnC>|Lb2V{$B^u|Cu2D-v)A=I#-iOAJ(pxiJ^un(&$}S&IRUbsD{%f)6ZBs9V^BWV{Tmue`C~!K7S+Aq ze@aw;j#d%-_EmK}x$wTKpZ6=%Vb3^wj_vk!5B*NX7^f`VBk#Ta33~TSF3LEp=No4| z=Nsnv$-v(cEmA*C;rQqJ);iumN*2iYtyKLWNPpV6B#uKsGu}YP@iUNd{1&7H>aTLG z_b03)Y)Ai@V*fPA`aT0$Pu-`ao}nP?c^+gv!JgN4MJGEi;yTlmqt~0)?UuON>q0#2 z4(obz*0bJRT-UjHVtc&r*ADOdwZ-ok;d?h_wM#>bLJB$ES8zOFO!Qlv$wZ$4cH~%|e~DOV}ji!1Eqo5#HxB;{$(Zy7&8hbCyW? zUxJj2-w;1WfsE&4AoDE+8Q0ya2a9h3e0d+|yKLvLAnPAh>>J-Buv=bT%HIG|{+r*4 z3h#U&zRi0{{)<7%SdjHjQT-i|^&bWq-!uC6n|e#W%HHpZ)w)_P6Z<@nQlfhO<51I8IW6m753qCOf3un?RPk1@tbr7eE5S zCrkAmAf>YLkfZVF{hHMCHb~j4dfnHh{EncBhxd7e=3f~i>4!l2r6Qq23dL4MyR1$k_F1p9f+KMkbp0_p!@)o*Sg zab5&6zVE932}r2`nZJ|vPi67W)cUg*Yra>doLfPba|UGnjdDZ}Hc#?V*0S$({DEft zeeWBmQrLCEc?-+$1yU;WGqj7usb#L@bKaDEmx3%O5u~3JR1fz1V=*Y}BU3BBbFf|f zJqXg@`k#rvtw65NT|utP@gUPjf;_%X0a>rTt|X$|?t0!m(6g?z4|Cez*97Mrjj^xX z$O+$d{%B^t%apF|`lE@o!wpjIXe#Y_5Tp! zo_9448$rqt-9Jy${d4d4TvN54>^sD-tsv!q>fY-@mfEj7rR##VuU>#O_PJ+Yo!`S> z`GNY~HWc3+uZ!P}55u=x%=f*_x%UyxG_75d!6L3g>o22dpw0-isOmy zAI%0SmF*wJB9AS@+ev#DgRFNC$a?Cwm;UMtvY)1d9Ovsmj_<#~n&2fJ65GECnftLHgBsg820S$Z@m^q+iEC`gQq3;@86<{aOq1 zdigX+zj{0@emw!wul1n6{i6){!|RCEb;Xa}AZ3W|CwY&DJoUfgxbJuSgFpb(a3^a*>R)RFLC;HON^0 z1ah1;yI98AV36bgX^`V=Bgk>~2gq^Op^J>OJ3x-JIUvW`W{~?b)h>~JnVw*M=ud#$ zhkqO7KKxOT?-8}Ww1;_*Xavajx}FF59?>4K3D_9>YfZsG*KcXsKmQy1UhJR$iF(mI z=g~Bohx&K*@?g80POF;J1A&~vl>2c|&u^{_t1;~E-4P-xE_Js7)1d!|08j$^T z3S>WZpDg|K7|4CaO(6TJ+7#)hc#!=x2V_6(0{OmI)2Y%=!$J1bYasjS0LXsw-ml0( z|8Sj|6fW({1}P_1Zx$i#91Aj@-s?^w@>42KRDOP12HS4y@9h>S^g z*6HzNhv#^5{(B()-(QYH9{Lv^;QIFHOX7c*ENNd)koL(S*Yzo?zYWr_64is9$E2Xn z+qOu1o&}k&+Q+`_$%Ne`UDsxN*0oC7ldtWG3DBMv3&sE8Amx75Ujo^lRjQYO^sC-0 zV(!aD9#-a{~tdXYvxz5?{1}Q-8nc8atx&E z@h}s|EygM}OO9VT&^ebAuy?{^dmePwU6w0#7eMD+E(N*fIveCYZ5PP790zhPCxKjZ z%U0=o+R!QhwTp!!bL z!+#X}8$kLx9*hD{=-(63Z!G5p&>Tmseg0g}7(u(2*O2kF0i@XPofpCGtE1BXBOv?q ztm-R%6a52_^113&YVmmqeET;BW7q8Eb;Q0x2khmw$6j8m3wsI)vZqk4z9cP@eKq^H z$XRZxzE{q4*3WMcbIjN}|4yA_hUpwLc0P_7{+(mS(RuIrmNCgOW7~7g*y$WIOeZtd zA3NRS7yE&BB<;u?rCo1J{GB@GwcZl{gCM0#ADQ=YAmuTTbLV4_>-ir2dpXE@L$8tJ zVqcK@BXM$k+z)b2UDa3gz997{Reuwt{RbfD`w`XuRK3HslAZ`MuA4!|wbpfVTx|tX z?+G$}0?6`S1{v=v*URzt7Lao^S@lUE)87VZzYFAXxN$$xdxPwcnIPxzLe<~b^ur+g zXUGk5d|nDte^>S6s<-Jc`3nX$1}dsc!?B z-gcnq(IE9pL5}|`LB_o&Xx2oKafs?x$BDkOgA<8w#9!EHsFqX}^Nru_bzPC{Y=<4o zvfo9g?!tGz?Y}3?9c0$&q9D^%~XR_4VJkoG@- zoFAuE&v;+@KL=#`RqJGa3<0VC1acmnQ$0Ul=EE-_)9Zd9^PvMs{W!>ZP`6pQckKK?7IO;$X{o)v?~qdIQ{_Scs~tt9$Ya-+BqJi*!5@F z_5Z2$gOro1+xB^u{gBgQKOUrxZIS!W+=RiuJ=k1*< zlg;zPOJ0z2c7R4+6y5eW8n&MP8&ak#o4#+qk04W{EOF4o1EAlGI z-}PR}zX;^G`T=A)ZAVG|2_VI8XB_gLkNa6|CrCN1x^16g+aFeY(AcYP+h^MLN7NoP z_Nv?V`L_MfY7ZKF)ouGy%YN`LVt+qKIjMS}@fq4p#^;tyiQ7?-;+iMAxvtaiWW>OB zYk~G-l<)6KB_e&=J(6z^NC{MLy4HI_>uE7x>=Qt)>;A@7F7gzmNc!cNmy`*hS(gJm zzh9*F-1WTVn*mbtRk!0<4qMMS82qco5u}_{J<#}db=UO*FpLsJp(~Xy6VB!-z?;P;6cf^8|3=i@Lw`dhJc(WvqAd1 z4W!udDL{Tte1;s=aS2jRt8UvLvF(3Td(hac?k^tUvB}P6tpAK-RC4fm#KM;GIH2ok z*h^v`2Qt5W_pUka6-W8~?p+e{(=O9$?@vNcZ?T z_?V7!kaALWyIl#E{g5(k7f3m+x^16k+aFhZ(AcYP+vnK!C)6G^_Nv?Vg|_`kwFiy8 z>Vf7@8S-+xEO<`hxB;Y;sUGZop2(ib=ildvT^(!kJpgh%ya{sttOt4A`5ff@YPUx8 z7?Aq=AU*B#p8WkYkmvFHK=x~(-#d!4>V~;<^IEZ=3sPPM>Bkz7e$;wj^d=zn>s0>` zH2#6CFVOGU6wZ|O3|Wojd@1qT0aE@@y=9Tihd7YsjRRTVbE#&@7D{B~p<(%T)7 z^v6NUGphTuPl5f!AI1JFka9qE`Q7HGxQE)r=XaYkkYQD-H- z_kxrUK#t$fRj=okada!l@$(|cIJ^Z?c7Uv-@i`ek$sotg6RH=2HKB+9E!V#{g4_oh z0n+z>gUtUtNS}WNdEJX&ATs(ur>EJ6y9Z?YbddI0Alvc_$m`y7s^3(lr`Zom0-63K zNc$p?*S}5BPt?;r{pIyMQ0OcfJGbnS_Sw(j#vpCyC;E45e>4$)zkRQ?V;o44`CQkD z!ux@Z@P1&(L-L!S>016alutig--&$;NIfFJ?{Vd7zNdc?yB9#pk0AT&wCX*6mHv7h zWPi;DDQ|$L{AShhyl(@i)^YKtNXy+=L*jA>q*MzL-TOXMx!O7?!H3i|UqRqJV~e)m(qN2+f3TNZ3%x2PWh-VZ9! z@>YB#cAtT!UaOyvz^19Ts|!dmzh64BA>MUrfWD4!8slDltz9+DZw-Y%o$S;*BIPs# zDdR!L<4M&&1i4OcQ{DS{lvtEO*;h^aqegY4~59yi7FGFUIkV<2KOm8YRGn^7H3nH~9`=LcxI^9e0f$s@>z)oOpSEwEaTz>kn42lMLkV9!$8)v z1Y~*jFP7umT_F8<1EkpVCJtpsYk%730V(+V?dU)D`#8|#GuNU2jBh6FI_doGs`EQV zb?^A*YdfasxL&H`e3NIK2l;)bQsfv5H%;`d;X<&IMQ zUm)Y_9j8R~YlN=PGeOE?)$RUEhwb3)Qm()E6LXRN!Kadb3^esw^R)=+llIBqXM>br z>s>kQ=l(AC3qi_ZknK9FdfYMTmw$td+p{3WyPd8%694R)6926rr9^dqag9fwLnx2! z_(RLRwoK~39i)r`O*_4ggQ;3y?@;Y;kTO;E2v;p9@}r2d`lWS?>J-#U4Na;U!}r(C zZ^|L>kXpk~h^pY_nw%204 zWBW}!{hZg7X?a5n#cma7#;>(LMrPvqZCxJ+de%qt`-zS5+mrr(>nRR-Z29=8lv@N+ zTKy*Ny#k~pf%Nlrko~t0WdAk6ddhxjtLv)wxJ}V|+9&qLXgsam~Z(-w!Nk= z1daWzzV_v|y{0b&js0!D_OAI>JT-kGXzXwIwU4*#r(GuL*&wA;jIVvFZLjIsps~N) z*FMX(*Ys@A*k9pmUtrl!)%1lRrF~al`y;l!rY{7I{guA<;R~$zX!=6X*k9#qA8Xrd z`a;mycN2U2c%B6N!8)IkbUxYX8AzX6D)TK9q}b_sNH5UzU7qyjHF56W7{9~O$f;AM zfm1zI&OM4@OSz?y%pcM@~wUC1f+Y`i)k94Y>?8ayT&Wh_dD@v$d?o$>i&*bWyq5dF7_XRJWhqH-~Q|)Ur2V+ z5iiE=1W5b7O*MW2?wiFS5B+L*x#a5wQc_h96qgj_V?6~kWDhV;S)?olDbo>O+Esvz z+f5B6PK!XwUm*Pq6t_(EZ_TAr&R&obuH(sGC-Y%@eq87{$Ob8$Vtwabsco<6*`Tr4 z<4_>KLSK})RqHN(bpa_!s@s0Wz}Dl}R6U+81S##W_Vp{#w%7E9pt0|z_5u1cUHy9E z67lN|kW#F=?N_c<&onJJ8>DpV?dw;OWj|HZ7lM@beSGc9E&FMjo()nuUE^!-dg(%( zrfGUMXzb&B?c*)`shYkJq_pqrYoBV_Pt){lkkSbc196<%@yW96r)v5_J~RYrf1R&= zfo-qp3qfPA=P7piM=bkkdft)^Qaat>TYh+!6(3E{2914xU;9|wUemKdV;?W}a{W>l z`&MC2$b8weO+vnTSU1eP1u22%K?ZEOeq48j*pCA#IjY<3&9nW{`m;ewryG6!FShM9 zJsULk1JwWK{*PPE%erni6TiLyxjwgUF6&JyND0)gXyj+R9_}jn7lD)_)$MjA!1nz7 zR=*a4l=e3Tj&mCFZH6C=^F=MxAL}@mW0gBi%gF{Qod){GtI)RB^lZ@B4^sO8>qZ&! zvb|qjCH|ZRDKXtd4-}`!g_7^;E@F2dNXb&&-}s6{o@r<=+kM#6?f`zJX!%R76#E^Z z5%tsVhfLUd`eB;3HyfmM8tfadeA`~rvq598*9ms{rMA6ZH)Mmx9@htKPq61QLSIRC z?uwLld;{`2t8J7V7as(999$1ls_A&O_uI;UPj<53mT?@>I@D>6`vJ{yKcN2nI;Gq( z;$D&Kn2h@ktHiD*?0MX6;>l-SU&h0>=HKE^3y>o3yZXPjOoe@T@2gEaTY!}NLHa#a z^)(>p*(s3qUe)Jn)6Tvi#rrxkOa0xKBjwh3P3&5MCZ3gC?-po&Q#k&)FI@7af|N}l z{oAFw6CwUx3DUnuLH0u~$m`wrK#I4YN3@<18B+dCkg{0y%D&$dUMBr={S}fw0W|qR z`nOv3!yx0=ysP*(2&8{^fD~`PVzu0TuSmHy7KvRe(8Mpu?@cBl@6@Zr?irA>52QcG zRlm5K_|qMvc-Nny^|#EHa{7Ukk*WvU|H#vP-~L<1XYF(uhxTEHCl)ujgDV4?9 z`9tDtjPcLJDDf*Dq+x`ajQQaGR40>plMH# z`)EbTd(|Cc{}{-4tOD6@`$5jX#&^p6yAkAiJO$(t_Fb?hcnIV^a@1W{n|cV14K>fqYKm3y|-pR2y-%c^5CxzIVB{7p6vT`%~Jv z9;DPhE$x^BvK^m;Y)8v-X~%ew?bryi9d-Ybc8mboj#VJ{-Q6JDkx(J+SOT&ge}Zhs zjc24Ci$J#H7|3>9dsf;pALKiQ_W6SAWU_N+hCJ6Izw_P5X*S>YcfR9cw||=0#ZB*N z;y4(jKa)W3d5{YGb-FI^@T|*x&lTU5X+5kd&Pkd$^)dfK%R)*$`$$>HLn&(}@jDAr zMl_fBJpxib02#-vs(Y_51zL_<*V_(rCEs8MhT6$KxT8{TOI`g`bkRz{JRl zze+n=9+iBlApO_^vb=`BiNB*j`dbXr--~}2Kc|B9b003cciRvc)_$~Q%_>IigxHf1w|NL8b=2(%V`AsJL)8%H#{~*Y?zX>wl z`#_Gnhy;muKalZ$4CJ_41#^y?RpehsYA%lPvGXvTFV*HI~2{`IlqR{}^`402qoR=pHt zJ&k%u`{O~DKMiF2=YSONc4un&?!{7mhgZd}4`{}@b^kOUw)~st8w8%;3&{LZejC0_ zzk|&0*|6^L|LF6o;LmUBb1^}Fzr9q;&(m)T6o70azpu=;@%ze*A-`|K@{91!0NYju zRxFe9=jQs(|Il*rJA5;~8{n4o79hpna{@82e+k!BZ0i!ezA9GTJAR3R##Bp&;8l2V|Q!gKYCDkZtZfO2%_C$a%ID>&$m8ADAkSMGjF$731d!(~vp}A=Yz2A#Rb@=@^RHa>8>UA7#CT@BMuhY-=R2!F z`t7PI^B@&uUlxFDS9qw5|0Iy@$pbk*tJUgd+H)Jo_PhzQJ!e6#8#mYPW!m#P$o8B9 z*`D}1z0CRKD2l z{zmn)ApIX+Ptu^+iq zk<`Bdq=a59ezyQA13>yc6QsW%fE-U-HGMD0{_`H+sanUr7bU%h9I4u9Avr2L6#eLvy8jBAj>TV zO}XZ~Yhn2ATAhD>cMWB--Ja)I3$RwPydsct^}BN2*=&vUS5*58zw^Oy6kd_+?1CN3 zaIn7g+9P%YKuU`0_VsEk^3-%Bo-II%zjY`Hc1`2Nt{q58RNcFuGGI&D_`2910x9QI zm-D~C=ihmn-(Zbxvs7R*^a+K zwqs}`S%;Q_Y)3iBb?BzXvJNc<*^b{q(~h>aowm5Q-(-G+vhdP+MPUWCQ)?xKnsY+u zjEv0$9gCUI%h*hUPTx~O_C-3#Hs*kAL(Ho;JF`~EI+G2uJ@2Xhz)IhBCtB-?!T7!X zoTQHfDRTS@{9WncgJm)(u|Ib_JXgf>MKKl9JeAkTi z{Dk8V?Z?!W@wOVIoCDdu0rh13y#ulxXF&F)zwhZ6!iUlv*;l;uHQ#Tk`{}({|xf`V4`$39#yyLX|jaj-bfs}Kq zd+*DpsC_T&i?SUPLHgnEdMy*SGaE^{^FT@oNc$72|E=lXe&uUD`<{{fHJ+9Htw7f6 z@Am{sk!QzL@#hE7*jf8}p>FI$>i)|>&;Co0ecc$?kBpT1?guIBK>EK!^|K(yeQ1=V zd$%JIWl%QGmU0e(lyj;FJ0D3$-UT1XIuWtnw>`N?uUS>fZ2?mJ9jA(5*T28m-2zfF zRQL9`T>WjiTFfaF^MGG5z3#;N8w8J~SXj?W1o$7e3c_2E~r zCK%}W5wGRH*hJ=SIY^0bD)aS2koDAwlzBT6WIgYKtfzXE96yGErXF+N5rKCV!<`0l zKhUi0saj9lS7n}d1I;+M##0t-mg{`p;F-^U_K6E%clZ*C=LwJ!t@GJC{ztUlmRTBq zkTO#BVCP@qe@pCXKl*OT_a;cc_koN{M3Th6AIP{o1~M+IK*oPR$hb7d^$w4#{XrgA z1NBF&*17C&@wc%f{V^J3`D;PeA6-TIB@N{IR0y)($g0vGDIn|32U%|oT(6sYy`Ec6 z()z-xNPX9XreFL#x0V6ht*ymwCrD}K68o+ohe6JGm8d0J2JrIJ1xq)b&k(0jqf zny+NO%-7lrWZZNFS64^kdi-Jg9L>}&ik<&Fj^53A1S%vY&{?JVuz2~t{Jr1Ki2B!cV<@Al=YAH83c z^wA(?s_Ne3p-Amdm#RP3ep@-x{#@eQ4p%j_qe9yOQv97C#lx<{<>JTXAZ04Zeq5mX zPLTb$Pj&D1q@oN;_ChIVD@Z9(J=phIvyivR>#{!G1hSqjAlGNRUkYH?N!!!Q(;l<$ zQP*j8Ul`u6J%3-+ykC0+_I+c-pFtp{NcGdId$%LJy0l}&%aU&!lTGF5f&c~q?Sjn?^&C#Ob=GfR(mi$F@S_x++_f9ds7Z%>di3#8wR zR4)bD->v(}`fxEw@oq-~%A)LBD&^H!CU&hrGrwAeI;|$waiZ=!f9x@1AWid`%=o8h ztIh|I(()70Zv^RAit5jU^lOdkpMo5ZKdF8e9RFZ{P|Lfnrj&mR7|1>o_A|A-pSAqc zLCVjE{l|L#(yq3Y-xUm0ekuLe^Ow%Y)PFFLeQ3=TXQGz(m6m@XNcl0apQ+{jtmU5$ zQhp-r+t(3)r-PIQs{4z7I_&$EiN9}xly$26v(JV7*IHiJFe(2!Fi?AoU|-`8DSs?T znWXwZ&u=fBYn3Ap%gbym&lIIjmUF*b-;#O?K*|@Yr>&56=P8i+qB>T`yE5TU$m*)* zeMMJjigPFI>pUjuk3S*#w}7;FO%~nzxEzmsloP**-@%S^sj&U#C0S?cWXbw69rQlV zWx=kKo`3Z6oPSu?dj&}EuJhq3kYc_Ig5RNQ%6I>V)+nu(TGib1KBE4u)$xB$=R>gH zMG3E!g5MdEcDDp6FRNaly7&4Vi#!y!o*#F3LGoP(GJf92nIyF@_H&%cK-xAv&g}IZ zXDT@_&C~Lp$MJ*p<>+zbcaZCP)f>d0J|Nfihd{=C8OU|K807kW5TtmwuUN~UvP{Zf z3Q{(yZaH7pQk5|K-KFa1l-H!(r66UK>UO(B!(`3$+?Th1=bm*Y;5o{tKGOBb75IAw zFzZW0><&91m{$`&8CBk>gwyF}Zy&y%7 zW9P3Q%y~pQY?B9w-NPUyS9R}x$klS)xnkepO|c&UnsLMRE68&_MVf!*za-!9Ajd`L zR2dH=K*n?)$nmfhWL*9N8J9~Y$bMN0$e1nx8JF)s#wFq*xt|sf^1SiiAn!xH5Ar)N4fe9QzK(q%k|E7ko7ln$#u{iknPzAa*SNkM)u#P zfNam_AluWjt?a{%2ieaXLAEEno!n0w1@b)jeUR;_)n4wW4F}ndcR;qIY6rQWHWXw# z?0Mj-o8o--p3c|v&nwqH|Ba-0q{nOezd+M|YyC?_dVgKVhkMrX0N>@xf-U9EIEmw0 zkP_Ng`nM%W838gbV^#MaUjPTRA{(;ioC$8}#Lr^T>_c$T|?6Shm92Icv6EbKprpDbsO`rGAN zX-{8}@(9TGtO7Z1KhVE>w<`%{QQX>&4tkvG<2g=Ma@^0*{H756^Sn#^$^j|AgB*8N z+lbyBq+bt!^eY?W_I42>2*Ax3&*)wUHR=c zb1vr8PjQ}jMAAQb)VCj^kv>VEKb-A({?N}pegf>8Hjw(;fs{nmz5P#vEybN7_8p!U z`#zxYzmjz+NAsIP@XwB$B!9hu64wNf@q89!JpThSo)sYHbFV?NK0OX{KEDfcJ|6+O zKC~Vz>(dC3^ZI3w^E%Kzf1#H@9et-oP zzq%e0zn%i=*B+4TW|yDDugReCt3z$41Fjny`T4!IGWa&~DLFo^pXJ-Xk>M%MY25E) z+`~@k`r~I`F%EVeT1dMt2Pv~bj^o!k^lKAZ4WL_Hi&Bwzs{dK%C_4&u)p64I^ zjMF06b?C0+6r@ZA>DL0)cY=)fKGnVbEmwa>=yRnrLCRv)1D&6{8pye<_wTFc;2BTW zmj_aQc}~tJug>(HkMSs@lU~R4@?6LGS#MKeSF^3Ovmr={SKYfkS+J!{nJ@NBLCPl8 zgWWeRK;A`opM_EaGL8*KO8ka_9M{i+oNq-S$8Df>@`(D;%`JYs4>Et%b5h=5kmYBC zEU)U{Qtx2Ul{f3a%U`xU8oG)S4Mda&mVl8~2kCMHMvE>*89 z()GHc6wfuW4VlpCa~}BT7P&r{{jqQVW}v*9)x?h$AjRK#eje;j>v?@OJ-)?)^u@b> zi?w~L^t^sINcmm$%GOt>k;Ktt!auVoO8x?n@jMA~{C0ap`YR1&TUUbYm)}9IuN@wh z_3nN!6#8o**Qswnvn~Z#Kcl_s{}boOZ0G2Xa-O~xq#rdp$$9#%AY;B1q#vh1`q3|1 z&eO9%9zTBt=|`W=a^61|G=5m;M+vB#bvc{m88BXdw!rnC8ApE3m(tX}6wj+s%D|c% z#eN0Ivg~WS9N5pQD*d(yr1&jqD8KKv8GeOE?)q~CF$i^wo z^+0U6g9K*sf3ko_Bu>p#Xd(EN@=*_3WAr2iIzwEqR9jA$wS zxC&%_Zjk*rsFn0%Hpu#Z0a>5-@g_yfAE*0}Z-Azs{2T`|VS6fC;#sA$w09^-`()K0 z22Fo?9S8HZp6nMSeJe;QQ9aQ5U#j`mekkjE$Ohl>5ZVOCF&z)XJ>$Wg?*@KOF$Q^T zIoMzPDg!C8@zSn=AY}%~_-+On-#QbIn@L8 zf4b)T1kVpKuGck_etr&Q+`k7YotjI(&j#7w#UTB&&jWH%*1(r^KdeJ7r{(Mac*iiN zP6CcMxb7>0U61F*?h%mfoe#3S0@b^|AnWl4knKJIa$JsjQT}ev*K(A1SdYJFJ;&c5 z&%wExrZ}xSN}MhNDNlfGZ>H+IK=wzgPLjS7WPH9--8=sAD3dbcd9j-bQkJM5(JU12 z>eh3@9+KdGWdF(igA02!Nt*wYxzf(4%WC48eU}qf zrI{mlKjgjf4A^~SN|t}N&Jp`>K(_NF$aq#mIgDpxkmLCxkm+$C=gr-q@xwY#&O_Pj z^gMqDNQrO--Zv?R{fJf)r?DVq8_0V0s{T-GN%xMk6D4uZ&Xn}6Af-fg`#UGmupMAh z@m|+N`L0PeNa^&5e&?h)zq=EK`$duXUR)E$^PX=4^0J+t?}FLi12ccu=e7^*7C-L% zM&{cJknK1NQttRx*27@mQ%OTzpRJK{Zg@}D&G{hvp#)^VT(nloeHf$!`kq;i#^=Nr zQr`VvN;w~bEGMi;${7oqa{L^}3QOGA6z85Dl7AaW3G_XmIN08c^ewS6Z;pZ# zR}arT^8Kz}3i6a8zV!E=_oe)I{tsj40UlM=^zj>7LQe=KK!8vaX$Ap}6j?w7X@({d z5SO9^1dJjWkznW%Q3I$T5)3_3G=M;)=+Y!oWC0aa#N|aK@*-ap(Ma?A|L@GgTqQZ=jWAc61bgidbLn-$~kdmdk?7Qx4 zM-K8VMLStfsm}tp!=vTTZzkpM04e#Z`)hwlb!q>wSjjgBq_|YK&XZW!-kK*mFET(% z^n}9S8%nU+YkCG~+P_rTKGkZk=^3DDpIq2J%WALb8K7zZvfBIU4>$6%-~VbN?XJ~S z+T90ayaPR_Q-Hi{dW)UWNAf)dvi}3k->Aq$qjj$I=MIqTX6Y|wT=xe#@0Nos=ORe) z*Kb`=7X7c=QvB!+Qc_j7_FEEcZ}pqTB?F{HPn0;B$3^`;w1u!gn;_-+tKX&dzuHFX z&jKl@R1Xw~Jmf8XT;ebjWE_rxoZmISmN<+88HY_E#oC_G8kY8`{}~`9`jx`tB+g>L zbeyDb0x2bQy|^lU938 z&j3yPR}0%4H7)Vc^bF9nPc3X8W3|`x4A8WnQrJG;YOm=TplLruFPWBlCu=>6KuW!7>ZhOio{PMkFV`ND@mjB)jMoIvobTp+ z=<>K9R1VKY-dcyvdqVlhd#b%0C2}(ouA4`wL)utNq&EMIfc#Ol`mAdyG-FZ`)7N^bC*^J*%*N z7mNL5OZKL7PqNx;`XbP@f32|nLW}(rP0s)+(X++=j`KU%k1Z~7Oa&>{^gN_{ zib?t(AjKN5&^ng(Yxx-1DBgi|3|iv@emK1>zt2y zmyJA8ho$`aAm`l~km9eNlUmO;-6z*;CG{kLW<5UkvExE#oZ)>9@wG z#&;1&sW(UCZJt*Y{%&_X@>2SomUiq0*^cm^B+kP@iof{|QJRtmP+p%jb0leCMb-zEy!|4Dy3L#a-TKK2u>|vY+(x zDvelrj3wGY|IYr}|0aBvp7Va0f)n3yxK+}Gn_Dg{EqX79im%RH3?iZ+g_Y>ZI z1karhVth00QID)M?||k!2D#2OIV0=N1d!ruor!9YXdFEy<+Re{ju}@yFX)2wGfzl- z0_}g2U`JoP{(1fN`cHq&bnK4~?vnbt?-u_Sg7o)ikp9Q+5q~FvJWuequUv>aDbr3$ zc~?P})9pJcXEDfi_aBhrZyj)<9IgZ7+RJ!Y3{u>xTgO8lY;TPR?avI55t@+P>F8K$zB;IR5=D!Xy{}bqMiZzZWt?kryWq_3EcMHeGh_S>` z(=$NRenDaT7^}UeXMm>tLbdmE-Vl$x91qR!mGLkLq@=5Eogc}t9p;@MK8}BxNUyE& znGI6>jl*26ch7xN??sRjrN?z&^EV%PHsCrU`>z_tKgD195%*}j9NI3BlCHY1=d2yb zlaK3rEPvQBDSrdVe)U&RqSmv$t<>`~NQuz%FkkIRN1kSSU2*|P@mGG1w;ipu9UvuL zb?Z3u!1mUB)qc+aDbep09ycKkE%ut80h;!U#NLS6rTL5eSbvS5D{`%Bul!g-ZHJ2&ix;5sAi_UrY=+Qo|) z#a|3D(s6z3Py9=5k!;jP0ao1_;{uey7*EmoWPp_D_cdOY``bxVvF|)2?X@1i7vk^d z%eFQBxDHYRU5|6Y{!$CEzY0=1w`^<1We`Z219BZY4)Qqglm6X)-yjcVQGRVJXsC;YtF-viRGM^qmK@_6^M>TiL( zud+_{-5?|Tlj>JM-Z!j}C*{R}A<#RiJ`m*d4#}#&36_GsR`nAgpD+7M^*X=G^TO>x zwtEc7=eS-|eKTl(UoH+Y7*RpuGzp{x`dw)!>~}sV_AQdcz6;3uc21D~I|@>t{F3zF zJdk?3Wa-B~Aa&#Awr0F4g4C-v4K|{1uO`&|Z6Dr+)caegbE@f?{5Q3`*e?Jnzk=+i z8>&b2ko2=XrT&(WNxhGP?7!h4>w5=ee_aIGPe#1x)j_6r2iadsK=#u{)emd>O_2Q+ z->a?JPs2g#uY%0K8DxK5Q+-fx@z?%-RW{m3*;7p8Ux(j8s^s%KNGD-C!7bx*Ey(uN zJu2hSIv!a$N3HJ*-*@+-EOil<6Ik6zr7mVmnaA>2GA+ zc zwznqUGrsd(bMsvh4{Rxst)#pdkn)A<_PB=36#KHH#J(j+>7)AHo+FFZ{EfRxJ}1a{ zE(1AUz6Cj6N_CTY+a2UQP6at{w}YIwzkwm3zvoO6v>uq4^2>YTZ`Vaq-Xf4v_I;`U zNs#rg2U-6Okp0zTvDBLZvfc}zS+5ySytj?-G*oPH`~A*T)XR8#zoo(VJE?o$^PKU8 z_^}P76x5xW9pYxk$0E22!2{+0IneFKT*t4K2_1 z+*qErtHu*jPA8BuO!YwR3QbEi8tj#J4FuVL$3c6$;$XMBjFi6vqy%c06ZRi975i-< zrS!eht|*W)2V{S3Qr+HPX()qoc$nB-0V(B%i|%i|&DMNFc8c9%kg`VgqafpZPW3?X zIf=5KSt;>(A7p&OR~3$r@f!La#~rq3G)M^)pBUIrt|IocLCOh`eqB_(X@rdLM3DWl z2Be$Li5Xc%D79pZXaiok+<^4(%!Zp z+q(v|kB3ayEzohk&O6QnyziL{`}i8-&mfSJ1+u+6R4)KoU*nq6UMI-)auG;51hU<~ zt8O1J`P%NCI_}TuJhKj zY)^An;rJ!OZdPfjZ!t&-v|mYw{qqgQJ_R(Tk?7GN#U76wZC8&WVmBV7ys5gs`Qy=i zwYN&XK_F$6>T^NHW2NeW;t}$CqOs~LiN_BhS^@H%*LYq3AL11?2j4Mx zQ2eO@Qg*BUtLpZ6bwM7=7~QA815!Tn?%U1x5&eH3H%ar4?;`m=1vzeh133=veN^W8 zD3J4fG01lN+kY+8@+K^hcI1Oxm)b0p^3y<;|24?+AAC>Bn+mdgfBoyya_8=qau0!& z?^Q3mPs*(an*ABzyeki7J+fNH`zs**xD49Y&(Jrpe(LdJo%eVV;QLK+uy0>g>hA$k z+^YYry1oCL$U|w{U-CT-QYNeJFCJ-{Z^(y|Z!t(&qxw;haXzPdp!uJTvVK`3@ubH$u|h3j8c6rXs(B<2Z~2B%Bp-u;?WJ{_}By5$t(3n1&O8dCz_5vXjG{X>3* zjo;dgnk(PhM6&VqZ&GfNOJd&>9+D4tj%(&j{7$fo8q7ap6K<%Fe!$eh#D*?I*hZdO)7qpZH7t3Gh6B=)6Q@ zjE={bLCPVJew|T0yo&T+Es$bgf8tOE<%arG|8cQ<2sGQ%5Z60{!VLQxIeZ?+iM+Il z#~zL11X*`dWBHwxSp3c&`^3|vhdH*gYxgk6PCWk3vE$TqhyEU463A=nNm@?i|2=BV z*ed<{0m$*W9_0Aj4zi3dL0-@K2juu$l_S^X4}-kE+x1hq4sYGZrNQt0rKEkQKuVx> zEF1Pc8;Jb?kg^tJTV1NJi}33gG{&g zccSL+@rw-%`I)ZM0nVF3-bpkT?hw1?JEi}eAp38T>P1nGx$n2Ezp=>IxwQB<2&4o$ z?@oaIkbA^_3`nWaQ1k~uiap+`$U|B06uWOg%4O99y(gQ6yr&)!`-%c|SspM)|fV}^^}J0N9~ z>Vev|5P2WpCGC10WV?#)F5E5`?Dp$8I`uz{qdeFTX(axP0V(;aS7|J|y&a(oq#eKM z^_ogU#jYu6&Kp11v*M7C>F(H`CcW1yf~X<9`x$P~On}{brDITyl9gvDr zZZnWF6{KGaR9~*?_WELwmr|pz$|M_znX5ZFInr` zIau93}%4e$E{ZEHI{jZ?==Vw4){^w}9>va784Epom1KTSOsXs{1^Lv7{AEx?q zpjnU2|Byuzr^90;{R&7a=RLo-edi=r?JsIv>tTQD&#wg7?$fv()i~DFaoAkPVLLzL zFjecRq2sQTj>Ey;acDV@%Yto7kDibCINx?7{n$^Eehy?DszzJh^VG3b06X>#rPCF$ ze*!e)X4x-9y^r%X?Uza3b;-whSr^#V*M4aRQl^58*8(!SuJ6?uVCvtZ$R*pKH3kK9|<_qwb4~>o~5d<2caqF%NnFIw9+Nqm#0( zF9+?%{m{jTn_i!pk5fTm&gsRj>V}#I+?z`#|x@M%iC{C-J!k^7u3E`@-=#3A@!ApB?{0 ze2fg7r?ip!Yk-tY)%UAzk53HpPjR`?es(rTTf*?d{0bc04&i^34D#%T*85j(oObqqbv{wga@cBVq}z z$KyPe{ksmN1Zsx^_O)w^eG`z9t@;Vo?d?cJ9!kbQ$+r)roL1f6cum)QXEsW{$W4;3 zAxM9Fft>eGs~#vGIVkJfLlTeDhb11+x`l)W;FQjVzi+X*%eg(0& zpRZ=A-Al!^{Q>U#xMBP5Hi_#&kn_Id_QG*3fL(BD@iP*n1iCH~m5J*jF=Ag0q&y3< zeW|Kn)%4o;XnD5deixKMDeIJST7r~5s+;xu`5liW}sJ+)t#Oew(G7 zX&`M*fb{EE)dP*gg($bgS&3I`kn!3C+Q*>_b|bW(CV`Yd@ydh!%?{#Esg7bl5Tsv8 zs-FVsZ_$UfJX^d%mukG86T6lmrKjrt#$_DxvD|#yapn0#QqDS%vQ70fApN?cdZ2hY zQTDe#>%2Xu^A@znD-Cw5HC{Ws@iO;GrSa|B+uw}IR$oKM_cVQS|J=jqx<|@?9%MVL z*C|iJenc5*$0U#v)~Kw}=*4DnXIPtzUxC_au#F5=+`gG?D!EK+0H< z?VqXoVUXjXbW=HB>j3h6ttUvauOBg5c9UUJZabW5M!K1qU`~JyV&)}uH zZ?)`aGm*wR(lKUU$(6Xz04e5u6CdAW&(%B*JqJ(Kb8wz>Q`YX6ayEmMt04W4LAmtX z+OPR2E4r+<8>9sKZcoJWM59SFv40Sx%mG>cQq{i!S8ZMXJx)~nmu^bCrh$x|eSJ??yT}kJw;xFV0v*3{kf(N(*f#+wyHw9p-R{3f>$#!( zkoq`|Q#yjCU)6j+ZxpgZ+I=Ql?B;Bce2YNl+Xd3!?^L(PAy)IB|3~6reMch!X?#b6 z60}U-%cucTR;%vod?FS3T(hPAdtaCOQ$UKp_j9t4XDHIQuaJB{gOrGsqKDN8F>1UR zir*nBZ&bo}!%A)}ZhmvYt^Pmrqu6Z%Dd$u-$Dg0~ISY{Yz0>OFPm-@cXvW*ed0Es- zyw{W_>BC-=c5MJDvW}N8^gXjK$iwoSCFPhG+ey~Qvp+~V6;Db2Iw0-3gY2*2s{49R zCkbWlN)h{plLObk&|ClZJL?ZWD)}D>e0U%S$@U6*xyN3N25@gU3f758l9 z2}+mrQ6R;a-AUN}j`_xN2Fy`AbNwhhKJf$LW;uJ#i2a`+rO1CoZwxXn536onA7YT# zyFT31^`P2vSszw_tlw%MZ?)I-YAe(pwA&|J?1NV7`U6r{tM04)naKD2MDhQ7kRo<> z{+?AX>|Xdv>{fu3jjH=v*YaWSctz|tfQ-w(AjOv-5m`9To-XziLDSApKR94Zng5O0 z?*%ExRKE_gzKY*Uy07{YQAV#+N#6!i{LPPa*fQR(d3Vl_x?fBFz940&>T^KWze06i z_2;0>AYJ!IffRrBd$hgbC#1fIK}v7c(?Hg@Ty@3MY8>INFFBZ0JZ`7hY z*TLf_C4aH+B!2~vc5Oh`-&b{i>p=p_rEJ1HW4;|`K#P9e{Oy6 z$b2`a0Cv5miQQI^;;(&CYovXBmWll&kdm#sFF(2<&(axUAFRh2f8{4>`O}t*{W_51 zQQcSh3z6sO6tRC`YGD6eTK?q^#6B`p?BhZ9yRY)|kf;4ylD-t;Q!y>?eVg zY}I|0ABQ}1;Wz95`!4=FwfwqE#lAa8Nmbof`Dw^A1>=_GpV#s0%Pt#sVH(GmK#IS1 zo>V{fERk|Af|MwYtMzzcth;@D30kG=KS)`vy1#i5gS_-R)^_~wjn zeo%bb<-%^4?iU))6+3JF`Ih=`YJJtR^mq(1e!h-_5$o|iB&@ege+>I!wl4#unD2qN z2*CrJZH;XFi~3-K`5w4cxBB2fS=>VeeW>jRDXUet+9s+k(}UKiJxE!ty4612YQI+P zLDOD!t9_2uex2HbroHM`dymzAz1oAOz3Nu`kdG|m`6IOlO?%bD0(>X>WW-3Ld(1=T zesdhiPTbOlMk8wv>2oWdR`<3_Fh@MOzhnt`?tb!skaBn zdZ&P_cQeT6Jbne)k{T->GM`)P1!5E!GeAE3_9@8c)_w!|{&?+`51GFM(hoG>7YF&C z_)f4q_GxA0pSSxMq~HI7^!u^0?M%Nv0O|Mtf&BfFcIDcce!m6M@1H>W-MD-^@!QY&dNTax zyh&es`+gC1SGqg{G529<$03mNz3M@oq&<~D+V2F}u7j%E&+9WaJ`4J2zx%kqnG2gA z8%h6O16i(h{Ny7&c(D9E5~Rp^IIe#U5540&JffPkE4!|&i&1!XgYx2|;_oVu@`>u5 zyGnZofvnf=zXRn_diB+ME%#9qk@nFL@yi8L0?nIr^(}U$_+(_rb0wZV@|;ON$T6Kg zS$_W_>E9lv&TC-azjJIjg5}(u^&M*_^Pt3iG7p-798b$Z&VxqHWghefIi8M#{CkTQ zl24uojJWkYU=DoTi1b5UrCoo3lzX}r?iUYiXKBAI_V$a9=e$FzqyMHz{&0}eQ+50G zr&!ohQVxmzN|3Tg^{|*SM$GUCqh8-C_+CO~Bm9qBS7*(=U;^^9AG4>(xQ_SqFy~+V zUWs{;Y$>lhNV`EG=jV2i@0_jmCl^baX#5Xf?~K+2yW%X$2=l=}h5dgM9N@_4_!9G>$jW0aUz#2kk% zl*@Ld>o|y?rsHwCjKdktq#r*ADTh^m<~|t*uYk&wyu%ovY&7ymG=tcf0gm?!n|bM+&VwK*Y{0h{FgaW>e~fU&VlTQ z^iiURJS+WE4WtwqE&cF1$o^ig`dN^2MfECUr2p!I^skxf@v8Ip1!|*Rp+T|uR=(x? zD`?XT+9s#ADHDBZl_dO~WwI^TKa=uneJ=Gs3ex{)RNv$hfA@iu4|j=u4oLs^s(wuM z-&L>LpeVlMU(qNQE3wYj{=BkD%IWZllw+OeCt>qZHL2g%_cx51BaLsXN_tz^alNtj ze+<%t2T8e+AVuys_%6#QqRSiAa|68-tWYko7DE&2a#--M?yj(97Bm+x^RA zluap{E9oskN*~qj>tCkY_wS{C2YBu}7q%mdil2)?`gathe-9TE|EzJzhkfu98W)fv z=V^t1MTW<$~&Ajby&p2RVj(^^*f-OfMyV?E%eo$FklgBE7S&w}W)O z^>x0K4!f1liQgMQ%1w~tGdxN3ejwYQ0kWPg`uDFu@vj)Z<5IyW`G>4?IoiG+dnJ85 zNSUv?y;}ben^oK$EF$bg{2lVgPLB^-E0)GTn3HdIZ}M zg}o-*kr^uM^ndC|yZ!_jU;gfVc<=K0Wj&?cC6hv&!SN-`atplWzAI~CK1e^@uS>ZG z_PA!bC3>3mBw=sM;+zlCzj{lg|DFQr-+Yku?+5AMHIVh+`+@A6p9i^bUI~^2zXN&xSUOYAAN}ns zlC=JrMWo+K6qSDK4bqP#Ame`lq#ySelk>o-AnX4MWPR0&%lY0MkoBGf=})~9a-KK_ zr2qDLwovQ8&|Al&ZCtpJ&T-+!IH2&i*XWl=$3;F!ze3S(EI(HJkK={@al9~I@%TGs zT?L8TXCTi}4ukZQ-(9Ufv`T&@Pq;hGRX(Ylvuu1B9K$#^^VElU^&$I@?lOj!$`}e= zCq6ilP9IW1*69N2L(~sFO+6Dj>*Cn@wY>Oo6Qm#IL&cBTVbXuraTQtz>*he2kApyp zb)OoC^t1otzSId@%A~iYoNSQs{263F*Lp|BTOW{ZnFX>f+d;PF|3La%_g(S#X^{Q@ z9>{(_4D!6c*aEp;(E;T3ikCp1_xl@%Y3dhDO!*7@R`&age~O=bLHb$oiugGkWWRp` z(ywBFiC=v|`mq{hebxS!c8mhqj%^_Opj3hQJpiP?>p@BY?rmajk-84=ziwZ z9s3#I@8ie7e%B=N>o7=}oFe*4kYYc7jYl5JZ(oXCr2}Hu6lC1}t@Fvq$8?9@7vl4~ z)Vd^|^$tG;BvDswvt&*ZQU z13JgDQ;!)*^JQM<&z5;IFRFehU%MD->>@Ls+as% z>^p$8@2`4TrJ_bje7nAgj)i<}*OQ$k&eK53Z>n3zK}0>w`vkEY1X8T?-huRC56j=P zLB=uA^LdG|_sXSb#QrKs={7>fp%bLM4Kjw`fE=%9^zQ|rS&wbskgjF#+$rhjKuXci z)V?OaS6BG^YB`$ko4PU%O4XBb69KZG4?y+gy7(!Ssh(!Q!7+Z$Ga{Uzt4T>C@nOUwr7b){60vP^Yrf5pN! z*eUIe1SxXfT?XgfcYaeKLCf9on%L)p6z6P>mo2`jYM*gL()WRsv#JNWPMw9kk!!?0 z9%L-0gKTdO$o{O1$T@Np2-#;$0XgrEg7m9)RoRb>1x>&FjK2c-#j%o9N!Bs%_x;lGoj=NzC&bUj1H`{p zAnkX7jN=j2`wSF+hk#7CuV+yWWE}PHFa7W=NISVsa_94*U0};J7k-zP!u5-Faojd5 zF8#L&G{>vud?E??I_vq~An*B}kL#QZVYgMUC+qffrKr+P%Bq&EaPKCSCQ8p`QB zNckHrL^@hu;OFf0xT_Z-uSZqGy!dV>U=xsCun9iC+_t`RwtExJTmk(qmHpG>~?Io=HqtFJ-M zi*oHm9|v+iSjS}|^6h_0%0C5C0_`8t)i>JRoF(~6rAfYlAjd_L>Kj3G9)k3zp&s7` z>G5uw>h^xf(K>E?CFR#YBIS1k%{ch@KCcIP+IE!sCV{Na+Rl)Mn16a)9^^eP2l!rM zEbLvgrM^QTrQ++-z8H|=1lhi2AnQ8@GT#5y^rCaT{@!^VDgk9v+PWqEX^=8ab^CZo zRr{@a+^}9Z%|crD8}dAXd{?I|etWhI?va%A1SiS2i`|+(2e*?()Uj{kOqu-KscqGVmI|JnYBqR1WCGl$k zNWbjk!lnLv-%aYXj*C2`y;nu*F^|u9_o7Pg!rvPWZ9LK_UQz5OR4%+e#36mwKxyY< zkm74xIAIq(UhJBKl-a7=$3+@!DTluh`zs(Ne81>-8yDG{zxYDQ*9K&qQ$dc0-5}%q z7sxm_d{5dn7-T=a2XZ_d1{wFDMH2UxAmcs~gg5{yV4u*oC zfnnfvumX7R;)jfIa12-xTme=Be+4Up^)ntas(}9XIVZJ!tNxLAG`uSHO$2#8;{Zsh zc1_wn24r~`K(@ctb!q=>knR5-R?H>TL z{p&%t7f*7S?d=1yy{kaB_aBh$?H<(5Z0}-_?X{0vqlxtY#CU0kdEIT9@9Stt7S@m~8`nOYc(?37& z31+H)-uDEvalV_@U-lPm5@i1|3S@Z=aXv%8+UR+Wy?=617G=TX8W-EXIbYM~=<#%g z9#5^;B_f)RG@?37e*RuWWQ$?ACphSi`;`vZ9790f(BtF*kn$5q|7yJ<`okdomU51w zoC9~1lZbLUU}D$%TI||`l>Q*gc}@RbwOL7{R^K=AJ7sSe<$}@-{7zX?F{j+4Oh*~_ zak4uHG&-EKjId0;$pGN0o?>f1rCYqh-PS&r+m$lqDV`5^B&53uh^fW24p zaes*IzOMI)x=fe$3<4>$L5}A`AjfSfjDPym6QnHF`S6A6_TxaR*7f99QqK&KvRrlZ zxhahIGB4b|d(T*BAs_v6ua)x^zNbPxsh-Tq;r(Qse+W{xs(uD!fBd8Rr;p2d%YKmg z?eoB`{x$T@gF60y@1p>=4H`;(27-*sagcGbt~*h&*l#~6?L7rjeBJ--0=sjQ#qM{I z(&1GpzduNM5v1StxF#VlrO81_?*~%Gs&1Y~;J0{d;N8Xu>=jGBP$IvWNA8g>MBdRK zNxn%SrS`|7HvuU#RhQ?Ds^NK~3O=7Va;YD$KO*s+)LHst4M@L#0NEc`R1XXAeZf4G z#XRYH4<{33-t3R$dR{hk#@emqcL#aQ<97!+H~8H_9`pF!K_2t?-NBL|zdOiues_@h z`Q1St^RuzeQ|EETD`lHVf7Ssx&L3zh^R5@jvY!H3_85?5zXI}jx)$W|bnv}$Je>jZ zcv>`8j_1#S<~T90J4PDb>%^hWq|LEd%h`6XFRi*te{=yULqW#EI?m#dxAS1J8w66U z>$4N-#~+cu2YN3v4R%L$oc*ZdZgr}Z`xQvBkH2i>p&Zunc16cugjH|zW zm~o%916fR26)NNQ{xH4&338r)1yZV2kn4>vgRE~KNPoh@hE@!aQgIw74*W<}BJ)SI4-9CQu)z6)WrQCBM<)-Rk^~xCahF8XK zj#k3HqM{Lc?Do@+JU&D;mwxNMQSuK0Der^knxT4KJdeaUy#!KHRKMH0=Fsy0+gsv1 zrjPW)`yk6Z1hSqpst5X>TO!KpURwN`2{O*xL5}a{Wn_F?=XE;lXAKa)7lV{Q^EU_f zwVxOJCLks91<^Z#6np$V+P>fRie06BV%HR8`vQ&6kQO72g60y3j204?gP<9gmJ*lK zAobGs%lxSYQnx=35{t4Z4^)--JPI;CJYJUXUD{)P#v=i?H6q0BUXXSfAmg|lgu;(qq-}dD-B`4=t64G1Nkn{y0%eTgNA<}0JlD{toDS@8HbHUy{QS48Fl$ckf z{5BvZ8DxCdfsF5Ykp0?llB5p;>Bkh+?QzaS9h4qlirsjS@}}y6;v9NE#&tW1V}?V= zHE6cm61OECUVbEv7VHF6f}=Vmh*!&l-pVNql0umYTYMfBYl{6 zpJ3icDvxJ}%NZp$%6{=A(odvFJkNrZ2H3CCxA7olis~7v+xx|MK>Fp415(arkaAr0 zK>LLl0=mcqNy)WIVocNyvvOMd&%0&L) zffA=kkizHQe0{e#SKDD4;lD@6Nxps{Wf{o2x2k>x$K4K zP|EHRyOtoOr|N;)n}xh-jir4CnW{s;e)kT>LB@%KL-&ofVb|46HSqht z^8R89ND2O2bgR9~YOm=jplRkg^42 zznS;7Uo4CF6U*S(UfL+}LJ{*jL7B+U`4}53&!CJLF7+=4DQi@>#x)mtym1|(aZCXz z!Fx5XykGC5zI^p}!BbMtA&~OD>i*gp(N_FSpDx!)yzeh%LZ^g(Bki9KvR}RdDGk1r z_WSE62g+qX^{FoYOadv{s{87vMC9rHq}WdfDf3kK=YKl#P%i%>ehxn`er*QnZ;3qd z*Wdf~Iokfz7`YDW{cg{+5#q-uAZ54e7eSU=EK$;}{pUehxB5@}D+Qzk@3YQ}szw$3 z26Sn>YgjA^`xmUoArDDA#=&2Xn+qVvSL{DT1VUXB&1}Xhix5gt2cDLg3iL^fjqy%pk-CsN0+K%vA zQcoL@lBBvXzY372&QP)M4^p01-Pd*EsCFX_&pC;AAB-QycPU7z8dnnUtBk;R0S6a) z|E&x1{fC`nk*osw9>EVF%c=U0JSWf)Toq19f~Q$W*xYhinr)n3z6K+`@)?EM|j@{pGj{^8tSYvfx(rzt31*8P;u+~?2U5PQ}tgFZCk@qy+CQ9JgeP{a{U>2vUma{?6Yx$wc0vuzMs*#>sOaWx49+aky_~yt7ux zDEEilUF5o&tL^ucm*ZRJR5`9~eOk)-6QqPZBl>+H+ud1pf5)ACluN1mgT(DkkokTB z8LwFMFU4PbB05NWw%3q)e+DTLHAVN=9tZNVpNxHXw&%Q4^3@(9<+KE8HwdI(&#Nx$ z=AH8+5oJ!n@tpP-K#DKBbl3%*6uVKNKf4^*9aXzl*yovcb^PD|OZsG_@yJ`^=PMxN zcNw&wzb}N{iNB>?7eTXJKi|D@!ItewJtA@PekXm``wsK(*Fj3D#iBO@8K+LF2YOyG z4`u(gT>NdcLi}A0+WigPJknV3kNCR|q*%{KB4m``ry{x(`ejjB35__~o&9&JCy5 zpN;o7C@zro=jX_Eu_)BXHW^yKQ|piN*1tgO2U&lT)}IcRg3jw_m-mSu?e@$4oqizG z-cfz6>elNtY3i4OzB_SE`x~U(aeWPTd-CM(e}atV-JX9si9D3ejU6Wc0omr*CJuAl zJqxnU%RnBlJs@LVrK!V=c~6k{D`$Xg^A3D*5q#rjy`q3+0{8$0fk3T`)H}&`2Z4CTiyu8mX zdl`%8_$mALihnmiO6h%~F9aE{RjN1tLi}zIn(+@X&*M?&<8R2kc^zbXi@sTS-Xz0r zfzI=FcbVsz8qYKDN&S(F94HmnwL$vR3#7kKs~%`x=c26pmx+JRg7oh!XrI^lum$Ak9t9Hi$Llk_6q^oU}3-l3#Xs&@(V`jH1Vl(9Q>UAy&u*=?JU z9I>I@%umJc*=_P2qt`(`kC&nPVby<9Jz~40Hv!ASZnWxCRClTVjp`NP2g|d@Ar|%b zzb5O#XpmxEKN67M{Ji{qEohEk^Sj%X@ZIf-c*Y|f-`%cYls$I)yW6SALpwgRMv0xG z=grVLUZ_)kY$5T>ZRs%eO7}~@HUufFL6-9!$b1bRka^x3q`nnodcQaaG{YDO^6%z- zpy5^UELCOPSE^`~|3jYd;d-8>zB%!}Eb|(8zK`_k-1|@`2W*$}=Yf<=)f?^*KjT2! z?gm+}TlGVqiJxacrYC(V@sy8V0BZumqwbzS27CrI)4JX!(l`8?Vuy`{XPAmu#B zc~P~G{5{a~Xi=Zueje@dUShuuq%_oW!=g$WQNwE)k$r1oTu0(uyxOgE@h-?8`65V@Fg@MJy5L0mXPWNzk)FnMT{qm`b-{AoIGg2bdb&5=_CESa z*qHTysq+R5GBCb&%bvpty(sk+y60IYd!BRFM621pU zX>?4+nFr+G{{YS7Vf~UujXU2njx8OJ`Y?Zt?c!S|%A$`+djBzLz4#W3eHDF+!rr?W zn2+bBcr4D((&wO%PT!m$kI9)c#Wx3hrVsJ$dYZnbBE1aLL9T5skZYF*EDsvFkD1R3 zM}d4c+5uJoogkkTP6aE1nP4T*1@c*856EYk4b&F_M1fU7?!!oaZ>&1V=YF3$DDkOy zNa9l;WPF}F+|IO}16G5+MD-J@=c(T7D@lI_WZ6qq-=g{z)k__b^hZIKH(2!y)ij^^VHlXMn7Cx9Zk;7Nh+bh2vy@U3W%%*B#4vjfdU1UnLG{ zAp3l=>fJ7g{uD@=pnBEne7_avc(I1j<;bIk2ZLAkoaK!=g`W#_b6h2(o*u1a-W_f2 zFv}a)M)c`zWnGDWNc5%cL|+ZkpG_d8>iwmSm=^Vo2&_}LpV%qtEP}DickDA!#{t+e zPrO^kulpZ;CsXzKH|2aH6yNILI8N8U^E*e(=cV@@PIrjRCDy<5OY!G2NC`S1`W%q+ zcaiEb2jzHiKgcp)JS4}9%^>H@7pngSa_&5ISkgZRX@Bf1+4ueeQXhUy_PNO*^)J7c z{q6~ndhj>0@2v?^w;z9U5f{qh8`7VjfE0hvRp-N=&sEo`Amu#{QpSR8=K|GtXu7}S zSi}xFjtw6u{JK0Z&<*7H*$48t&|r?FCxFzeHZE?|Y*7u*npZZwbHs!C zmm!VP@i!R{r$9=c>eh86WGD8IdLA-b&qJ*H$5^Ci{w(>|foxmA`^K;zjC}#^MuC*= zAjgAS^{K&<{vk*ybl(_dP*S>y-Aa(MM|FSSoygLB8x}~uiy-By>a`b&A1y)pXMfJX zt@%g%pR{)zNIUEGi~`s+T_gQto_FF|7yI`HqdpV=%VmjOiw~tA9|eoSA8Y)(z_!X& zsi!eWk@MNY@2e(hxot{||6M>zuIlzUE>!y)J;c6#PqFU^n(c}X{M{j!<~J+Bf9tAC z{!1YHGd5Dz!Dm5^;SWHz?>NYD8(c%yxz-@}3==@^8PCbf4e+SL>*!RQQ?yB&g{nH3!|Fi-*PUQW=FrV)q8ZPWB)=Iv? zAoD#3GT-HO`uwzIzY_!d{u+nT-Z*fa2lx(WJn~R>U>s6zg6zlpYDxQ^0qOT5koBJe zS$~x%8CTsvj;mKej_*w%$JGUpL*N1nfa2$yHv8&KLF%7Uk`?YH$eK?<7M${H%O^4QQ9{YECPKaSQISsinOmcNdH%Y z^uGY)yy!Mb{9gjn|KCCS-#$hBw~zNs^>@@|8SmD0G#6=QGUd8Qp!ZMnEp4v-zSv(_ zEZ0H)1?k5_8KU~0vZ4BL5{CV5z=pug6z)}kmG9u$nkX!WdBsH zD*e*~WdBS7IleZ7Y}c7St>$3-R>2A%+U&J|wWVV-mO8+YmI|1;0Zc*_MT z5u?SA`5@=ZS&;2%K1SLz4P<+cgB*u-$4Yy~fo#tnknIV7PTDaHWIHy2Y)8=~X-6NB z?N|fKjK z`v!o_e;#Bzuc&SvKOWREHc0GJL5hs;3PzO|3cp_+vU{Xabe_D|kuqQ23z-KpE=N`W zMRjXEvB+0N$7y39<1_*3;W|zq2I=?R?i-{ck5xv8J52Q>ko|iRWV@SIl>QwF7K6S5 zWdHsIa=g~AB>g)KWIM7zj@O?+t|v7x57^I7fb3^~<1WkQ&oj?RT=PNt;TR!)rGpd? zNIxD<6hGbuInI6tIlrD5DgJ&4(y!|v{d#Pa__YkAUw?q&S1DXS3&ZuZP+UL5?>x=B zeI3#b-&SXcKjoGp)7N_iUW7KNBqe{{~Vf zg^0c!q}bz`hCGxS-NmjGNExiUzj$UNAN|U--H++DT*{dPQWmMc3k-t(jp~8!ADu+m zzkDh2sD41=H6P^ovyL}oAJ!+mF4b7CO9hHg4D3(EiGLSC$_EdMz7{m4mFRbS|0*73 zvHh`@@nq^a=cYWnU&>hrQnsmn9%LMDsNOJF=IsEG`3wDSDC(iyd`A`QiviwxMTgv*~_@)=fVJ7ZHGp;UtlaS*ud#hZF^<>DkST}U8Z~0&d z7>aw^B|$f?F_hxpL9S<^xL3{fEEX&a#)Fh4yT$Lgy>eajS&+xsu*Ri~#<-sz*}GDH zxF^hA-c>fKjI*?PKRsW4&P1K2&s)UjbkOt}q|ezPeRhGxL1T{i?14_74fQz+q|dSH zbG-VT1k&epkUnRF^o`d^ypp|B{BQob_&)}u&D>q`yCJJU>gQCys`>+HcX|BXI$k5b zkTK)=>M>)1-cMWS<9?b0c9->j+I`;p@%2g>^>fFuwgx%gUIy8BTftJ`C9pKuxSB(^5sGZyWVc6Q(GKqI2C1huM=-& z3hc94{=OCD__MA{QMuT+>Gh0@dOgE>KH3H8({LV2*=Ri<4RF0933(`o>Np6Tm`S@^ zgIoum135pIgPb=fK>Ag>p3IAOAlo$#WV=>_Y|jrM+f$>y%&P>D^J5Xn`SA_Nbs)Tf z%#W@h=f|rc*8vw;0rYqMbD{eE&wbL5yPG>;4f__N*8nMFRQI=TxU`&aQzT!f$&&9K zFbMh2fs8}TS0xTJz+%w90U3w-sS=0rU@-K3AmdPJip1e*ka5@ya(yX2RpQVOWE@t4 zj6(s)b)wreiNg|*akvDUaWH?c$N%>;^0XbuV#@2ENPBWY%D1Xd+AQsw4RW4r0olHz zs_)n$?K}W7{V$O1Ex%Rt2SB!agzACzhoN8My8yVZ69oH%AnWP4wDA5g4t7=ae5A4W ze8l`+gD|58eg~^+-#dSk+6nv9A>z*kkkY%PwCi1vvP|_;su$W%qYTQg8jLBNw)_hq9 z1Kpp?gzcwT&l&$qU{Uay9EsUZm>bj@#O!hdUXq@0T&<*Mq@pNgMtLHaWaWPIOI{poG8zKjEzZtuSwt>>jb zwg2qT;c5D0ALm&ihwwa5Q7Jbbq*(hW7U`3VNP0R*v8E>={j(yH?glB=^i-r@`d9kj zFbbzwFNDOUfwAU#vd-{>vh zjNk3+OG&U{-0kO?={VnHKgHvj8P0fE2BN?^ zpaZN6I>CBiDp()P1RH=ZkkZp5{kI2XJVu>uXGDX6*6)QHd;9ZN>DwjtNr)w5p9!6@ zk6$dY55==#T+y_@50|pQ^(&Kdp>8y*z-9n#@@j5QjC2R z$k;nT#@-1s_8#QtxrhroV{aVL*n^C{fpo?`3S{gZ_&a0o1kKokjD04^*tmQK)wfuzi*C!zJd=1_M{-S#2lcL9fOdkWXj(5ODV8!nwJq2X?4%LsU9{Rnc z*9VzCT=kb#&r$ub>ScZq``RGwCxC3j60iwa_mrg10hxYKb&u+`ew6eUAk)XGo~HVK z)laEj{j}J}g0z25_35hbQT?RqRelot#vtvVRXtVpovI&I{b!KtjCFl->G*eG&$QsW zq^|=h*7KM=*tsvr-_QJ4?5=>6w2Pv@3sN?!ez)&Dg?=T+KQj~lyV_3H(R_!){L_N= zqEGE8$FCzG*TbJxk9b&)TlK&o{QVJ-?VHkB^3MXz_BJYuXAo)`(Zg#Rb@7~S73=S7 z#$&z0J|YgjocmVnYo3t&u^{tr0a<>o>T%zRACG`cp8#@=n5%ly_p(2q12X-~pJac2 z4WwS*Bj+b=LF)GF08Wj|^&1k`iZ``C8ig34K?e=Dlt5%es>)t`JV+TTb>j@PJxt5s{4As%Q!O9SUN=Vmm2Dz zxzG2&VqiCSnAlwfO*`}bhw_EKHyICGw%^fIuH$;&uO4|TH|{V$L0OP6p#}9wZ3nNeu^B9>x_LX;C=isBji}IB=h-5ehO4E%gl6awme6V&7;zasJ;A&PRUx`@sb-%Q$K@QTEXz!6GPcBFORk2FPRFS=IAZ zpYV#D$J_*I_xdC`pUD7aTm>7I@s4t^hu>o@8e2riRD}CZAIhhQeNT|`6v#M_1L?4ys-CD8lU>9)4e zK5vS&qxw|w^9hjc7z5JZJdp8BnkM=+usHOx)1@80{K`Q+XPn|!=OGSQ!!JvFJ=XSW z`zC^vVkdN5SnNZN-j2@@O-}(S!6ysb$6D+MYx+cxQtUg8r=RaXBp@&4@BfPb%`Q4j zy&Y)pw^U0#L$ur!kP`fTVZXAh_L`mon)W}ay`OpKM&6+?JUdVPC^O$-=5v5{zX~k% z4Aycdf|O#X3i}mx>~?$yYx+dcwEwZNeHW{}rcVS-`_qBjk%YW#$ELaB_bHGPs_pVM zo)#j{hT&pg%{$I5`xvXerl)|W{m*J2pnu|#-`+o2Sm!7|fM$DUNcQO1QQ+MDeP8_-_-GT+OP-yP$78R@9Qy4Oxa9?FP=Vm}F_gqi!(df1=V z#s0Jo_NS4zp996Ql>5_cBwv0r~W zss1!cm2&%ml(DLZnb#r1@g8CYyoVTu_YgykvKw!|hiH_M_L!OQ-{NW=P5&-}l-AWn zUjow4EvlD}>}dK~7i4^sLHe7n`kl{*l{8B9mTwit*y@`)R^qr2Wd6;np8**M<2gxh z46^<%s=o+QtbG%YvZLK%-v+d&CnNoX^OC*+r0{-P6wW6?&2Q)wb$a(bnXp}k^ijLS zJ_V%ARedWM1pT1ueRqq$NuW92EYB(AqO5;^(Z6fG=65ECN8mTaD;t&mD4mb5db+Ul zlKcO#_e$g}>DM+OC0_MOAnTv2`X?acm8*KgG#Nh+f%IoA$ay+V^;IC(&uywlzShCu zN)Zdv{&|q+^D|UG4~9U$uDaZZCx1h3*@F0#aYB`bQwg$9~mMfNW3C2gLpT9+TLWK>rsiYeY1y*hs_}UZq&2A>0cVidadI&9rmkpWqj-aDS@8j z$$|ZlF!6f~NV%eVWChXf>x4)Be`BKL+YC~UtIqer>b0oh^E>i9?+Gb4%9slKW94PO z4+-sP=6?-j{9Xu?^aQ&nFF($6ERUjyl9%~@jK736ptrTV)d$Lki=4}lz?)_zQY@8^$6 z{_7y6YFT_&X{fCKsYtJ~Lej1IvherE&dcA2fE3vW-uc}=H|#2XE_U~Tl(wo52id+C zR5$O-Vr}uh*UgoU$Djg~!FXij83)qwp3tj1ZMygGc6#3dccUDuytGBe*ZUylW7U5G z>EG|F58o>DFd3vD>p;f;Gu4~r$b9YuGW{6H`2V8%xKCw$m<2Mu;x<`dVnFJnL9SO* zRL=uTLcgJU)h5CCZOkh8ep+Q+!{i!DRCyWaFf}E2pp=(ANZJ$pq_iUvq{M-&ZyHzx z`a#uO43>2Jb)haOpOQFM(q99aKSTAcsvlJSoa*-VC`rqiwoS*2<@?7Ak@jOp{k!=+ zg;IBXbHRo5Fr6oLL5hsGJAY>^4|eGv%6MA_QjUOZr*-^>hGPBFalgaIxQ|2nrR7?W z`Q8t{bJ+LRcMg*{E}gKU1b-&=IYCO2>h|`hsr>`q_WNjOHf+9sO6J9HAmd!MVR6KQ z$E}JuZb_e?gxx&U#dOax8PEC3@v9{NYar9D?KZ+j86ytK-zR~TK=19v!2V`U>F-jt zr2qSaLC7~+^~E6Lo29ya9gjyDl(JK$oR%P^r|N;~Pe$IJwI$yGkg^(N{X0~@2(tbH z)$R3XYW+Q?Njc*|%A2Z(Me%uV%QJe%Za>eRi@d*uNWOnSO81gd{}7NeA7uR>sBW)6 z-&_BST0cm6Q+4}%i>M&+x_DUnsoq!8pZ4cW9covux%Q*&{$8S{zo7GK9>};^pJPgg zO^*he-!dO_@b_Ow%ik}9%y$E1JA=o_aVHey@g}Tc8KdFw@<#o><*+X;YgFi6F29VY zlsm+w-%C+HU~0PmK%fmxPG<*&EuNtlT^2k>yU8F=OYrY z9U#SeA0Za$#xnVPB*=MDyLb_!cne(HuG7&tf`3sTOfYIApH;Wd;RKX3VvCeB4K(MM zC2pxm?{UARTjQLCzrQ_5?3aL)EHDV%2(tZQd|nhWtc4hc^)8!_Un+2Wznkx-|0-Dn zrJRi*We3P|z5rRy_aNg~3gt3xks$T1s$1h$fO5|tl=7~F6mMKIYjrf9in<*at8R}= zR7I4tQSukvR5&hOkiN5}q+8>Xgug%BN$h)qlmsvc917koE(?)A;bF-?6r_v>nSTPv z{Ifx}e;den98&$N>ehI;P~O(vQr;nu;*CdssgB0R(zoMb)$Q@fLpfE}NdD%aIZn*= z{?6ZP4y}aq>rvuw1B`pKy*v-o=S<>|zIwIfZ!pN4eT zQptY^H1nI!RfXfZstP!^g&CD_o?Y^oJfEBmd#`*|U)HVfK}w?rvi>Q*?VQjmqLnu+F=1@4UO?eO$}=y4p8Qk#-IMgHZki z)t7-3S$9hr_-?UzJdf9WlQh0-G~U~N#5)|OvVvs6D1((fA};~VIC;C%I+`CF}$I1U9V6IA~X$nySH{qfb( zZ=*o^`4Pze%T>K*CUG2>^Bu45rT3d9UOgW6l-IK)zL!Bt$cLgg0NLJFs*eWQ z-pQ)}3bMU7RG+#=&S%~Q>6ZuO@%V=7gVyTx50L4Ob#gw_52RkTK{1@GR4_^$D`MV< z42h7jlif@F`W&R)yx!v18j$*TApNS-NAy&XVjmB&D37xIF5@9V?aED(er*LZ4v(uo z6{J}EH5GZz>vg&7-s^HzF&~EW{5Is)wZSadIaY|DPlJ?ks;>Z9&qmd&t(11ffNW=f zknw(6b$h(rD0?WM}rs^9(ihcd;qWP}tdf8CVzgp}0m^HphuwAY5X2<^%clPl)*6;s6F$^1*+vc{* z{RmyT`B$&xfAYnjg#l_hjV zvPyk^uh)4Tmz_IzUi1Cq`+fY5KRg|KAMfLRypQ+$e4jVhdE>C%WTJdaV7s}T_p&wK zi}KAMNqnDzlw#FGyb^B%ka;P)E>SjaB^oR1`EbW5Ezg_h+ zAjj`d)$QZwY9`}Xb(HvP2eSU{s=o`;|3|7{1S!==i@kmPqTr8mJ}`a`#}f&#=`&i^ ztz?kLJF`_^r@D0<(qW&tSMoF)q*Qi3mJ9oCO(ecPAmwS0{m4@NILLmsxJvTV8>DOi z&GE2(Poq%#wSJD29|kGsRk!ECXfAoU>RpMq2Wa}W9EV53hJTBzJ7}Omhcd76kKMsDv)b3W$Y^NTM&qm07z^N!t#Q7Qj zJ{zQ%&tHAq*l0VWk#RNd$7qfc8tk@jDu%JfwQlPWUd@jJie>9E;RiF8g&q>I{Vq`{8RP*D;+) zKXcDZf8PWtVZVyr6J*>ks=gCs+>sZgd?d*24{k$DUj(IVLh9VLDy zgN(;IU!zgpQRizvov&BA4xEHK^U>}{jpaISN|P99SeHS@yG!*`AmiCqK;Y0b!Po?}4XqGp}xM03;pIPUee5)q3CC(2T z$vB2ImT~L}GVZ5A#+#-3HZ4C0nsM8CdIRUD zX|QFRDS8dc`!9WF6=aNQ_&diw3*_AOf-Uct^ZUm^GhWMfl?{I#^?atEp3hYFJ+A`T z_v<0~NdcLk*Fm=Z4am0LJ!QKY3-UN7*mFRo+VAH|C6D31i{Eh|{jLY;*Z4#Hjs)4K zHK6I&_T6iDE6Mvix=wtr*K@4r3$d`NnJdgX=P(AOp3Ux1Vn)vfch1a^s^h}~?EV!fW?x;okLJSTr22%6((_PcB! z9R(Xo-gYV93sQo8cPv5e@2VqtzZayu4^{y`Q$0LP@*fFOW`Jh({~@e5iaY&QIK*<_33qG9hnERo_+iZHI9?-NdNx?X=l9- zVz`ryzXoW2tot$i{jJ;e@9t2XJA`3>Qm5QE72{w-X{L6OAoDdCh}D3)c&fswf#!2>%_x$xJ&$w0V!)i=3$%ar$P3!RCRlNY1-bI$HY(LS>mS~XrI^F zuq_>`aXI|nQGoK5TAmG>^)2IHit>(obiRTVr}^q`n{0d^F75vUQU=tOe%%RDCV{4Z z+d2`8x|At1rFO-7w(ga{ zmhlJPfqMCUNVDbogZnBuE)0}Ak^WaMmOQ=>QueBT5oG^rJuT%^LH2K<>hFQ<-zTbf zTO#|_0U+c07-atnRUfldu0K2kvfK~yevOc2qRaW1%lzgjuU)y?B^zT{9(4Xy#;_luriP&uOZ^1~MNTRJUJ0$b#>QDBn3=>VF5ae*Jqyp9<3dKULoXQg*9u z&sVSF%(ou%1TwzK zs+WN5U*j24-W}w6b&u+^L2l1)ss0Jb`%})V?s}xZxjo+iaz2a!d4I$r)n5mBf5ZXR z&w{m~H-A*@qd-0bcdzR6K|Tw&LG^tgpNacj^(Hg>o6p9@fNU=TNt! z8QtI2e@3?d_Mn-6klW`()jtKfeHN=8mLcm;E0FdJL2jQfs9pqe`#h_9#vyW( z_xu2J`$s{R?+p8iyKzcRpl_O>TT`z2sUlxL~_Ef@*?g6g-uI>3C6 zb`nVY*TK#x&r`iY)&TSQ*$yDf6G1-b`nc+cK|b&Lqw1Ys8(?&Uej`ZxOz>Lh@2K8w z^#FVu2*>>(%Xfm;LH|nixHSWe?$9TLEa!f&!{qi@|Jq^w!*@_F-_b1hSS4ZoI|zH) zrew%A7pK<*0>?Q4vOHiHAopbfdzPEqhSsOfeU-JGbKk0Su2Uz|EdDvCD{Ghg6l*#6 zApt!=wr@VCtzxx(+BlxGGtfWICEAnL_yXk}wA{`>IhloT2i?|J#v>1;)b1zi zRx6NlJxJU6U{&b(Adf4K=-*F+T(>&iAa*ez^}AJ10lAKCQ2kTYzg7J=kYhFMMp@4$ zfYfJ$YGOOWf_I@Rk8 zlyz<#$n|Zi>hnPQdr9?8s^^28Q&$g?^{xje-(9g%uQ$lKxeROzu2%gh z$aT)Idg#q!-xB0{H%aw5s;^Xi9mu(S3FNxx8Y=oQkn3Is*a>`D|NaTc_|Je`_dK_V z9)7E=d!s;>Zv{CX_T%*otUr`ZTl$-{9?#{WEaxjZF7$#F`*ks&)*s(a%2U89w6k5O z4ecoHoY(7Ykw?|e;X1PiwlQ7B-%OC(W7+SkW!HY=VfXZWiSIR#cKcL64l<7L1ybG? zqzqTx+Rrrj>3C4=`hgU=eo+tiEY-zt@nO6+WBzuO4O`|jaD3(u9Ea-nUIRL5mCd;_ z4$a;jVE*}9kbZ`OjB~u|OF{PIRn=>5ly#^%Nc)#Tt~>9l-n3&4BLctYG{WyWfoHJ` z5F@iqdyno5{Q9jLw=x=QD$4`+(@eip{I3A%->bSiUfS;t(taw)_!g+X6J-2fs^0o8 z>EHDr?d|ie6tPiOd|=IU9pt(EJ^k)Tv8(xnj7txYGE#Nx_{G9DQO9rg6~-?Gwu~z< zegOu?Yvm@1yUKggk0v1P9|PIXWvaggG7no+cN&LGv}GTMz<9W-%6Uy7|9drGr$Fv^ zt{Nll&IH-cQ>qt(jN^jpQFlw6u^{8L=i94!JaL75m#E$Nd6MtNAlrFU^@AYAns-+x z{JwZV>@R_4xx@8~DA+N!z_q*#d;`;}d#VjLyg3s8_aNoG>TNbie?1`UWP;4co2nlM znXeP7+pljVpzVn$XWa~)`?*Tye&cBI`z1)fRqhad0?7V9tomAzvRQR|p3~6|CFTlw z&Q-f3xK78I8ayp|y9uOj&2J%W*B+9;Zv!d8)+M8J`FYLxOn)i5E^(e)W#vcG&%Z%R zL$B!FLH2vF>W_fT%OchL?2vrl2GYONypKdI_IaPC>rG((2j)H7rmUMN{`P_#&x@+h zoh0qQ0J6QeLB{uq>WwB#{Ov$99^3DtafpR7{R-FbQq}IorIPPYK*|rQTgN2}wjI9| zyM7?WyncUBuHWaQe4_bR+=tLf;@So>?h~p%)mh?x4P@NG#?=pBEVr*yn?II%t#*r_ z9w6;TfNbYJ)$Q{%;u^_E!)+3G`Rnv$`_^c+dw!Ypa~EjFuX?>_r2e%a+qLE=33U@S zKeIJI!TOg0Th_PskGkiStPz~YltG_J|8hXeF4d2NjO#bm+wYP2(i^0oS3%CFO{zQ1 z*F3~vpRa+nA}jE`o!)oKwkgdL#eW}={u5Q-16GCpwdxT`5?^PK@yrA%&!}!6AD`xZ z(iO%hw2O>mk>V7JESCDz` zt9mlXex|DKl-D%)lPGcCaliQK53=4vs_zHs*Qa{dWNCL0$bQ)Kldb*UbcOsBsGVzx zZl@sIy+`$@LALw0>PJAzMb)kOD}}F*I|(r9UG<_GcQ%cAr#z zGsw91sDAA(nNKkw?RSGb9{XB#r##1^%|M=EYRWEM4^M!s@48p~rGT8T^Htvgvi(D< zH@HvYYX`FZsUYPk)$QYvqW#@#61;cKji$O{CszHE5G)n;didI{bK(kNcmg!d%qC>(?R;P z=OGHdC~H2Hc!RC032N78x%BTokn*JJ);y%cwxi~upXR}-AGx-EaLr_laoG14?2~w} z|6KYr9Aw!PkokIC^>tuX=y|F;&9g$Z!(Os}U_YK|_D`yQHO7I`Rma7i=X~u?wLqTD^YQZcOZs7xKSuJ{?rzDe zHGdHv>|Z{Uzi$I6PWMkl!){?qiThcQatvg==T)!MO3Ll`gCwCYnI{9w225SQUIx^?GF@mnnU7zArk{FMFW=YeL*2FeG;biKviqV#ufzR&Zs~6`kdg>8 zf3sD82W0%mLC%x2`geOiJ@7?YKVSSE1}SG%57ys!t@qp%>DT+9ye%3k3SQ(l<-us z?*&qZt8U+Zy=uQ@y~fwDs!@AH4G-sL3CcFb2JfG%N3!A8@^PSj9HUUacDMX}8%U|_ zIpze||5Z!ku2oy&9t&1My{W3d0ak_n6UcGAsDHQTAsxObXJ&}M#*c`b!+7PQ zPW2HIX9Q^PPa(<^Kb61F1}XOEqK%%iJ@Xm`C96QrKQ8T*dcAkaI_R{%MWXKL>Jr}s zkdgzk|GQNGLd)&_jYC~Z*Qru}G)Q?!b$gttYCjwCu%DX)aXHMtEZAOEL;SV{Dfg;w zk0W3Gey;6a&^Q`Sllu1g=U4kZ>olJZ;}X#e@8=jI<&mI$T%u9l`(ye0tsuoIze%tg zT~qT5QZ|Cj?;h0;X}P^$8K_GMpDy)#ft2B@TkpTigY8hW)G(TqNL(=>WvS{;_v8Ce zZ=v=x)1jZC|424wYCo3*`f0mf;eicho7!Cj**~Xz#KX3IsPyMLkTMsf{R-7z)pC12 z(zKoR+W*6vkF%=V=UcYgpVsxD<0l%I?LNl>wOgv&>1N$-_XoDy7JPqb1H3=9KCW52 z%xl(Mt4g)rr(x2c!yqLxT>5hZNSOmx1)oyg-Y<7=$=~OXik}N0rS448?Y~RJs{P2X zWt^vj6#MTSDQdSdQpyj4=D4^+aldpp?w1ZLcfWL|+Mm+>$FI8oXnU*FyB%adtosu$ z>a5)(acl$4ID+J>ME&1fPx>_)q-2AP>qFK5&~kg8Tv3vz^}1gLH09IYF{%) z;%W$*+p)v;o&ej|&_9-M0x8yhrlb6%_VZGppSF3FtL+VYO#1f-NLi-3eH|)P`$Ube zvhRc#*C!iq-X`Pl4ajjA87KFVS>ud^-N}6E$0d+b+54yBU_YUO#5)C~{HVICq3HH; zNJSk=*T;1nLCQm_o5xMqPF&N%{Iz|d1vR|#RxxffS*V-ZP>xRrH}5H#~w&vKj&`?Y)J@7q91Wye9GeUpvw2oLbQ~2KdnaC&qb_}Fg=Sw#1Pa-cYzXY1)t!o>tXE?w2 zp#b&|p}(}BrTzX4WL!Sg8#R;sj0KsW`$0+?$a?lXmBJ_GjOL~BKgGTqNPGKya`zMa zJ@0C~miZKmvODh5`4i;4FGcHr8ZUM~f@WNnd6Nm7j-Scj`+=0o=8YHj#oE6gwZHwE zOI~gVDGR`=;4`Y*^H8F3E!BQ+);#PFHCw!nFLY}scxK>{tX4q{#o)A zg}VG3pL?b7xmS*%7vG3vjP3)s8TZ^H>uVCoag_JZ)WiE{>Q;FFOoIC3bA6NoeZDVE z{Tc8_ADoXX#);omApiF4c)9P_Ixo}Vuj4+=KS;4YUzUsVT`%akI2<<@qWsQQGJht4 zl=Z6H^KRTI^J$7+k5~y(a#XMExxz@)z0^hQJzZtIr-97jdm#H)0`fXh*KTs3(PWVK z54{EQd4#hd?;i^GykVTi2NP57_*we(IY?>gmv*OsZ1+Qu?S}s%?IwV{ziAW5c59rI zcJBb$uK6C1$-KT=wiczLO|C_pBlhQf6F!mit35ieeg!G_oRRTb0&*^us^03XjQ67; z{n_7Bm8Jb#Hc`hj$Z=Ud?96y{ZSyUcIUD%4=LZv{{#PK|ZwY_Qhjm{0;Un>LiDNcM zaXLPaxJl*&%SX47d`|!=IUxP-QoVXx$@?&nc^?B(rh;aFZO2E^>if(BDR2CQ*mnbI zZ(r|{)PBf&8n0zL&OjOK6kz+J6yTe%jLip~efR5j=hEkDJs{@-zX3b(K7HR~``Si( z9H%rIQSm$DdFnq}{l|gypP>Fz)PDxZIi3sBKfl-Nnzn=;G-FAPUYk>5@^QWxqf$QPt_5Q)mM`T>==habxdU*bi!s~8T zz`%94o$Vx!-$9O}_4;iB>K3=J7-u^E{$YoTf6v9=yXyJ7eH;q|acKM*J0zY>dR^da zy)JM9WPJ917%|#^TR(F39HUJqi6<6h{SlzqA6p(H;fK~USUx|| zb7UXDab_O8nx|>qrJWrhw^M67(eUxm4-#)0NU`T72{x36`b&8lXpc8TV=?f1uUEIr zgAUte9_+eld(naREdBPOJVCdkX&}X(|Ik4a&$5nMZmI73r}9 znGdnBp^Wb(eo{dCv3?gK1vW!XD?E4qSWR<%EdnW%XNhjL&$QYGK9^l!~mI_h4|>kFDEkTUtjih0Vl*zeHt zVvv&fQbqehtG$*NgQoo|&8uZQFk-PC>HM7*Wd26NhT_q6Xh2{cvb{GaPVN4VlDs$_ zm#4zU{hb^SJp*!Fia|=#Am7=^LY;{y|FfE0Uuzcj#Oe-bsmT97qWkSH#T{*W)!Lj@Lm-q3TZkk47E$A!%nh$o~64irilk zj`O&(d)|{^-}*v2ss%I5Tw z`D=}i#w(u)nqCr%>%$^_KQMAlt7WWVllkMUmuqy070$I=XpNiW>B~?|+0i*ZpXaQz`@MA7P|oUp&$ywYpIq3qIwAS;fE0Va z3f0dmny*}kd>JF)2iJMbet=GXB4I<>{tqcH0GTiA{ELIlmU`xP;= ztY6zTt|E{!dA@U;(WpbItJfpkpi}!vYWIpBPvnC3yk=P1-=XalgOtPt74w>Bwb$}u z(6ra{T5JD&R(n0qEe1{dCoB379aWZ(9a>%tn)Zt-+IuYa+qJw1q)bk)XdiE}-=XEj zASLlBvA1sTX|R9j8yV*`kYXR_Y}iod>hV>E9$(q7;}xjgbX;%b_OLFUb29p%@*jF;rPXSB}e5jvmk{fyQv zfg9HYbM<=P&cO9Po4-i44eT${_R00`0zHpA4%+?4q0U^r&X^HoKa>g^N{)_~SI5h` zooB&jsA+|DT(_elkTQ9(ZdbN=^VRQM9jA;S1XG7JDr(0!{mWRkV+?+G}|cXxgu=XrExU*YYCJw13Vy@9C&R$#*JCTKrbITl_QxDfg*v%}b%he!I3?1X3nH?;M9QR^oU?*Z4(C$obqBkP__tG9R`RQNF9HoVT6^DQ>+! z9PGM_U*qZVy|nWh$m5Q4Ah*XDT>qs6Yd2z?v>RPr+Pxp7ysUb#cB4^`azd}O-hNiv zT@A9`^B^TyyGh!v8{enman;QrWsd6R_p4^qGJKt4jDpTFMtq%_Mr)K?b?e;8fIn_i zJ9M5DgOtR~it{~BZCSoU%ZouuqW*pntlvKEcaJY6->-no_s<~v9er5(?KB@k$0r** z^m<6=qrvSwuxni){uhIkV0ny(?L?HX_*3k+ffT>$PI086&bR7+=z-vIWW(+?lyiJ) z9}I3+0J{k&r`=w)3l?vw#=Gm1*q;U|?!QELir0NlvhghPO85Rx2BMtL9FsH4$Q+r;tHxKiL@tx9n6WBfqy2KdXu4TTgdayZM0)LZmJ(m6s zfK?HH8=uVI=^!OoT~~r^_lID|`u)F^`pZGi{}Ui35MS=KF-DfBEIzC5G!{|nKl-@% z-w4vLq3dVBujjfLqeJ&Hzg9h1>Il*MJ$t-s0mUY9)nqvk-f{b0{WhQ1+oZ`BaHPeI0S-EVndbJaxo zdl!&W*?qzBun*4``=%h}L6CWvr}`$aD)f(3x8I+drg44vr}+6Er2MVA)7WOC&hB@` z{s2g6wNcvb0a9)P&HmZ$Pb|>(mi|}DH-nV@s#|kg3S0W%{rk-##Lnrx`tCQAjpwhD z^6jA6uH`&C7UheQszYZ^O~uC*4G?l z#&Z~?oK@ZWT$vZPL(NjYuUFb_^_aAi1e*P^+=o>Hd;TqOFIC|CLe~2-3!4r!s==pu zy&d;dyGEGLiCq51fNQPzuzxcp?Mu1uCIh5=g1pmDclfjCH3~lVXkL#7^6GG(WdiJK zekAo9f|OX*?RiUwEoE4!yW?SrXE#V`oHEGV&h7>2cQZ)8)u#?J z{f-8C|EAOTj*RTG@!qfF`x{6ZJ4^EP1jz09g6b_Fm-rWe9ETi`?Ojk^u6LEak026l zQ2I?4`$s_fll@Zp=aA!IyGXa!6}tT%4YK{Fs^6}L56^lx34 zqftI{y!cxJQk>SsB-q`%TI{BRl${{+enj=EYoy#BcLwTGKKxC}zXvJRE{bl?Yo6M# zy;mrPW!bGq^wcB{QFVL=5w0XJG?>WUF}?%cM%}BhgU(izg~5FzOuD`&7sm>Ly+~H z_9q3fee^_(8CN=JZZ{6!X(@%>SI5P!1f*S6*xU2#emmJ1a;LO67Nj_Bhq18h_@vnN z04a~EZl5nHu%*oTN$lSMDce=I_diqZ6Z>oX=I<(H`Soh~k~_rT$DrA7hx?IAV0-UE zv6~8-?SiyFr22of+#a{<9f`a6l+>@TaktXAt^5Bd*d9No`E1YU2pSuWmREd^AOUu@ zipB0mkn3Us7y`bidNugrdTiaU(^0Rc_O}H{sqB3exv(F95YU>BIM~-5EpfB}DNgHLD(rgwQ|$VKlw~0E zuts&SmfQQArSX4wQtE#XQvOyw=>9?LC1QWge9i$a~P$nNBTtX1F}3>_1UU#Qr(*GX!sqX^KY!q zKkIX7Nht5pMdErGWIvqNjSScw(Rp@4=UJ;D+h3mcYl6VtDX{)VBT-HL5??lIIg6f z;g|QE`UeWL@V+QY<5jYr4+AN8tNuO6aXzp5oR{Ue>uHew&c7)dT-xEOg|6$eb@3)FY8xv7J z!YA>}0GYSfRIm1}^rt>Zf46{?yHvMt=P4TVijmr{Hux?&_9so2H}JcBbqm70wNq*( zgqr6NnXrBCfUKLJfowPCpv)I*zPzyOI7-^@2U03~4?qd*C(IH1DIn!X)m?M7ezOp4 zI}HqcGtu1sT<=P*=lme`-T*1PR1bE&Axi7j`c>lZ1Ts(7_!D4L^KS9m0;E)Sy&)a; zpFb=1UxSn`%Viw;gOu4I^YtFc@%8H8?ejWU<17AI{8jf${Z^nEXCpqpUUqy^sP?yN zyo*52FQ@&Ju@Ubd(DR7adLA(ir2Qh*S7^CCu1M6S%+WaB(73h-i7QU+S51((zXXHD zl?vNlYsIcVNLdcjey!@8wA>z7mbTOKPpLl$q>NYHdfb!`+jaG&+&bQV{C&v1QhzK+ zamruBCLG_rCw5ao%65=(9#Z{pEw{%Rjk=U6Rb)F~2~swxZr?7G)IRYxjmP0UCIdFL zzLV{-Bgpw>?N=VkYwCL4Lf311J3ejaVt;MNay=#VJv{&QMT{Az{61QCKeh*Dl$^a< zZmAcKvX5Por~M$M5M-W?gJzuVY8&nFuK26*{B!*g;eH&U6H~&=x2ir%b!#57;qUoL;_n@hQvd2uTqkK{G#^#|+r9c5ysV{uEMpOCPqEn zTWemuNs;?&-J2!fi{F#^llQ*NpMxOl+s8Fl?S~APb|!&lJC<=ufz1z%r60l8%S`oi zm)boBntm+T5xuZkn<#(Z22v_JUnqfn&Q`JiH%JNJCULX@DR+Y$=S0=*`Evv^RfeF5B)S)xLE@@oU}A;!w6n*U_VutfQ&0+x@=8a{#2Y zLY^3J56#yjAjf~6>h|%^(m2*vl{gQBl(VYa$1h*)PwV)#!#oW(ety`F)_hIS{N;eO z-=+E&T5gXkB2V(URP(o4^SM8ePlt6p8g-HyiT~B0efvs6d7^G#vjf{#+uA|DWuF0i z_rJwY7mzXoWc=x>e*!YUq1gVoj`jybz+t*Q+WVEK{pzaQ+i2b19#Y+&Z=c$CNs>4Q zf)uCow9pUm-VpqrzP4% zNU_f6G}Jk%dA}6MyTf(-Y}oC=I>q=8>3UT+Nc;sF#}r+sR)UnAz`E6e=a~)6^Gv>< zs1)`SQBL1Z?^r*6K-vvCDC2n@NZV&Y_U~2IkARf#RhMzFoxl8BfBVpH%i6y?!S7K7 zByEdqcW;1{O{yOU*{)yp_&hnkxesJqD?!e;HL6$GZy^TCiraNOc;1Zn$TppP`PmWk zxrh|CGmY_2Tr=tSeIR9y>MKCTldJk2%_UFCAmdpAGM*1qF9buNpH{tY3;7+SFG%}w zAm4AWSoOC+Uf1|g^`juKfB03e*K(lw-iNjz>kj~Hqx=rl9|8G&s;5-X2KhdSZK{6* z^1Tp0t6sO&K=V6PZ9w|#57tBZXw_$c{61B>>T5xMhia?pMPLKyXH^fsdZ77Ts@5R= zMT7kA(J0lYgZy^cBGumn`8}$Cs~+Xnak3l_WMXV;>iKeu!1?kOzH8~#xo7>JBI5~s z=fF<8U6#JX`$~TgW@oSWf2~{lgLE2y>F;<~*OKk22gv?!06BkmslK$fY)`L&EU#Hd zwx{MG^?4xY?@HC*1*=2ft@@y_LFW9u3#9#vAm?w6>NUa#ne(?9XqJO~Z%K~oKZBgV z)#^(5-5}@h!>Z?koWCEd-lED<%J;U?`hQ^tUt({ zziA-LjRu3v`P&Gj{v62fs;yJKOT$6t{EY@#z7yp9{Yv%tMuW`x`yj~jvmn2dR<*I{ zPk{VhWTxuPnhY|(m(~rWeJ;rFqkXLU;Hw6i--{drvivB>@22@x|98Y7^ZRN0L6-My zI>`J^S}aJtX}6k&8_)i^%x7?`B~*=*XLw7nJ1gQ@I8S7IZWBCT; zdik^JwZD?`>p;e~0OWf4yy_dZ{8XW=n^nFR`~D#3-9xHB19IN|TlI({iQB$Eac!0T z$(j+mPE~S!D+;z9T1$WL2HD?3Ap2!KE=Yjg5MAHK2G+Mm<*&=6YrB`mOZ>g>5x-8y z@42uY{kqsq04X`3x!tS&g_hfohYGcwzb;Ds_N7w)Mv&uRKQ1%2Nj_F3NcjYN*@zF5 zjkD{-{tu8c$I6~ET`oq>9HYX2V$^xs_@ z&;B;Tv%d}T>~8}j?4VqoU^{uR@BEhd`3Fc@0J5!2)fZ}h-q!rs`{~nuj=Lm&7J`&_ zRIl&wUeeI*(m(5aN!g|k&!wC>E7!xqf3A3a*MoXP#z;G3K}u!g8xQ+#OU1qqNLd83 ztyQWQfgE4gG8x|(kn#w~F<7O#z29l@P5JAL*tI_^^U*-j)CDQ_ z{^x7EpX+^R7xX@~y81hV_4g1zY*UZR?+3xwnTVZ|&!4^(yE?FE|E=R14V#*}-){j@ ztoLyyp?s+MSFCf>rJwE@V)rm;`ZJFc%6_NK&~{Huk@9K}X@4!(uk&Ct>0FF?d|BVT z561a@nm*V~^NZbpU*tZ7J3$_oTKf^Y3+pBJ2aIPGNU`2`;6eGJYvu1Hpc%J$-M$5` z+c(E``)0Uq-=y4i`*_r$_^|%d{xnGG@r;b`Vvytds_H+0JU;kS_0}0;e?4fnXWNd` z)c?!6zt{~@PN-hldvvq4F6~$CmU;ys=UvDr5?5c4@k|3lz%3w;>o0)JU*|n?93SjH z(E@Gbw@I?yOqwj)(I$}XRJ&KsXYT;n&RZbcxdgJE+wPO|)mK5DFIeYqDSY35wBkDB z{utNeMoYeqf|Sbg5DWXGABmmIEBzk`a$HhD#`O-!xO^bvYP3W89}6r6i?aFk^zWAAh7$b!PW`>?!NBij9cvpM_1*K4Bu255YO_h?+F^(q;UNZ4(| zc1iJr9FKPSG9K|D^RNUA0lgr{<5!S*i2PK>V=Tz=$NAg1hPM?K=!8qWL~RcJ!OA_&EtqY zlD7^MG+!X)SCD=OPLw?T3#8xgK>F>8^^|_+fy}FYenzX`MFT75BMD`#&s5Au2L8V1 zE?qZ4N@e-TgMGi9VwVCkj@LoPT?jHCVaONbz7b^H!SdkKct629#{Jw4_ej5=0_pEC zNNJrQc~}6ly?r44+WQ}xFL~`9=)Yxs^Pnt4k1JM#6zhH^9_5T7$e$Cmg;@9{JjF}qy4#(H1+Ap5})o>;xk3x)$hkSEA!>TxjB8t z!6*9_c+dKU-^Bm4i*nqu2xR%ksyA&{&8StyZB+Hh^}}qmcaHV@%6JX{Daoo^w}S%M z&K#@j4oI;c_mrZ1mq-5o1IXM|cHf`-Q{?wKv0DXFz5_X4rK)?LmwEC4$bPQ}L%?rA z_UpeO<(^D!&vx7si#90Z&Pn+~kg`Vg^1lO?-7l4bdW=5}V;dmr?S4z<-6fDxd!6Xd zf#$qc-TwWMO!ylL`;B@WdsvTayFVgvjRwv7syp3R?}d-XzsvD;49NLz9iI}EZ_)AD zr{h!E`JroXvawzBwil!{e?j8#fRte%+j&Lxb*djy{TGn=v7cW=!8heE&2#(n;x7iI zy?r}OQ2X9P)DATLI-Dn`!#3f9+)tPRhM=9*su!qk%}Xxqduv{9Eti-2M$5@AoKMy> z8e?0mwXwQ+K3NF+x+|sqW*}uW$nkko^^K~3qk1o$$M!rJpGh7*{6+kI4^pZH<{!^% zCtrp0f+jdGXk^qoS9ZND5_Oq_EWNJp%aFN9)?O>~E*_*zQ{4|T&c9Vp&z5!ZIgq~W zd5_ch77doT)_}Bgnt!RV-SVf*zwg1z^G}akvQWN9*Nqna#NRcb>CdvR=EH8Lp5HIg z^Ly($;zzkhk6-$MX8qQ|uSZ4flN>V-`&Ws55lFe_Wf`|<%`e488C9!`Iq#Oo0FFI&mx`Wj3R{b&1jL)`yhJG%&y+QkZFGyLSy1m~X zwZEv_akWbN9S_^zbv^6o(C;*qUmPoOh5ZluoelfpFN*ybkg^hFKYvjDoa)UrFV}0H z?BiXa{dif|tKGVOod~jim8$*o+V3@i^~-X6>E18fvlqt)6n;;OvH2I@X4Lye$KB1} zD=L2XE>`RM0^e8Bx&_$(bG`)j|ItO_XBo)-rF9)lfsaL_B|ob`igmloM0wUV@^`1- zpS&plexB6-1*F_KU-CN=q^txPPcg{$f78F$T_E-Bc`kuZ%3mc?-u_4N69bytRV#d# zWO-E&?{RT`QFeW3@N_Ak4pKf;y?&7IvqhmUhA@;-tq=WIR|n~Yd$ObjUd~*Q}u^Ir|m3P{oU}hl-~Fn@pYTA#Iw(^w3&LGkRASiB3RZT_9H z@b8SJ0DtH4AOBAO{5y3Y{?7AJKgjdIz;=QEn$qWx#Csdacpn4lcNxfd-v#OK6Oi%# z4ARfl=wEH{I*|H3s#~|ORP`JdNw7`(GC1iA+_#}ehP zx|Z``hu>|J)OX-_+Z3#w97hA+G@|dcr*zJO^z8-Bc>!`<1M{Ixn6&dO$Z>vC_3u^x zL-pR_Qf?jR48(BNB^#V$_3nLF=EKV%qBjR_5>O3lOMS+wTRsRs=_=e5Yel;%tJZBpG z(N|zTaBZS}9Oe>b+9}!2p8y#b_iOg&JhRnD;9U-GtSR)7(oTH%abC|{bMEB*DE{_> z^ydT3aR50E)_GC@zeDblxW|GN>pUq%c}6$+du88MbstJLn*1c~-U71ST_D@FwigS# zMcUpfZLfZ0m=THhaksM`3Ts zJZlEBdNz0S^>0-F9pw7np}p7-1i7wH zRs9)|#|7I|F9NwAuh~KD+k>^Ck5K&`koS#!t@=ff_bayRDE2pjyx;ag)vfcW5Pe^C zzu2t;DfO>#U#oFg#xQU{X~8ksKCJhDG7o|B|1Adm2lJPO`(>?CtoI{UX(scjG03>0 zLC&WUs#j?)^Qke&^2b50SI?-v9^`oLP`!T(xjs7@r2P?)s7z@YPtR&1G0QKXpX1qce~~O(}zKp{{nJ6tG5>Y3y}Apo>09?8@d0q zF-ZHBAn!kYOZ84|<^IzfK$g!1dH?is)th>1;k(f-am}}d(Ez{wV*O1C(R(-}G4|_V z%X;>EF9Uimj@y{OINQCP(cy9~i6T>eDw28E_ZyjaBS89H4sv{6Q~iNr+1}=ZEdLdx z|67j9c6JX)eJ#lCY^&~pK<;C{jYWZ+P0R_Y;_ZVBVU68m$z<8ctTiQ9bC)izAQ`qdGs72TKD5| zApLpu+Ihx$IX2AFbBO4g!_B$K{ri+7(#{5u{XPP69@Z}ueF4aIBKGxxUJmRZlBPMV@Udi>ZXxIg$Zkn{y45T~& za@^BYe-C6XE`S{0-g+MYte)5BsczptC21Su^gMkbNLizL{Z_TDzh@L!zo(voy1ibM z?czI-Qtu_v?eis1+i7-__;%kkCY zAoFt`WPYsU6%V^b>UUMZZ^v+>{ou$76LAEmyWPhJgeH|DA{fO$; zac~#nI4xP~wE!s+S3O+I=eLr}zOfYxTlx>|=luHoN8A%~J{-`UNWZ;0XdXby2G#e1 z?9VaP!#m3U?rMe-_MYR? z-`NU?8MnW#@W5m<-Y2Y(-s7q;#HlI>w5$a(oC$o|y*TlDE5$HzJ@ zC8&21*J&9?*mxb6O3r&-Und(0uZsPHASDlEUiYc~2gvsOWy$=Q3$opfAoKSfNNMt# z_~{E$D%;+p(C&TzmHxd1(tkrk{9F5z0K4Ak2m5ntx&AochnNogc^b!3jl;EC>h}iC zxNO^RF6vNP{w8*VK*}W5ueALZYW>gF%e?t7NEwwQ^Kl8taa#?tA76nX&}(cE-D!O_ zijs}Ds>?X+0hu53JLGuYJp5dZlhX}sD91oKr4P9D-E`k z#E-;(CP;ZxbtnJXsPpW#V*dw72{ujzurCvffVBo%$1t`Ug5o{XW-J-k%iM zvOgoIi~VenlB;_CR<-b+stDX8eU(uc*LuwJnFKlB$wb|nTczGjAZ4WLX&~c#QFVDo zamDZ2dEtX{zK8fp?kVfoR*>saSTFH&KS&8SE+yKJ{Kv)5FCeA;Y|-uCb8sD#c2o5J z_4%MV9ud6Hz3jV$QEHd*d5r0AHE7zI_l=vsv-oTH%Em51?Wcbr?fwB$+WcE|>pR@j zVLQ|;#qZf0<-P5vK+23w72o5YYqi(%Q=n=8o_;T&x$}2C3pK8oJ`zU`$o&2nq{Q{r z`RMRnJL5liFFMM(zSqV&KyjLPk+5s6>*HcDm|Yy~zP(-i4ILqN!NxTeww#}BpAq|8 zK}wqH6369d!R0p>)+rME6(Hp`)vfu@hu!7;YyM7wlo^{fpAPx(qh9Oo;(swn2^N2Z zPvVbxOza;7DOsvJ#UG72^Sxrf38d^$-D!PEf_*`}*blf%#xVn=IE_;V?01Y3`_7{) zk3Uc2-?UupkAf7}3elbX`%q^d{BpjWx`O}EZzVq`)L+=Y#D6r%`cD1zpib^cDQ}B@ zaC@8zQi6>`ytcF8S*iC9Nb#xe)Q>dO>3@gVuLCK;{Aa8GhAYLsA4o}2J=pqJfO?c_ zcS^lkAdja$1G#;+z__x1kAak6?U!o%G0%yg2SG}f>ehMhK5m)!I?qpmlo{{qytl1` zv8Y4I(f2=jL8tXHMeXY9y6V<-)!KfhwS8^x6iAt|MccPrKk~wU*nU}mt-n8(;O{p$ zyl={NBH8%R!9EIqKcnlo)lUNcUi@iA|LOR9%YePZI*^O<`nsQ;1yX{IPa$m0b!?i9 z&#fROO?9XFXMBg}od${hUXT*Ze{Y$A=1@TcjX`I3Gn5OkM^_F_Aqa=URK(14}KuWN9 zvo+r6xl;drkn*zX!Qw5@c1M0J^}YouwRVf{wErqaovaa3-T?bC#+Lw6g2m@PDft|k zA@yd1lw8$=#TScul$dX%-T{#EyXsE!J_U8^4-@-YASGB_nHtxEr^Wsqkm6H4SX^F> ztH%+kw*#d7sJc^JC8+Zn))CIn+Od_#Aj0_QOE4U5E4kT-1s4Ncl$~ zB^>J@=ToqD3bmaRk4n9;nNlwrG}~!wy-&Gux%-rjALSaWcWc?Zh_~rH{}rT!ejhmqZq5CbTd6kMf^Wc~5pH%KJ0U`9|KZms9ssUh*QbN?9Zg$UXb#g>Xp@tM!nOY zO1(aNrQRrz`LG_hCBbf}=@sXzdYpC&q|C^Z<2I{(hSgrnPl2ZW2YQ?rWP8d(T}rjC z630}K^I#{)dC*X=qXe4=KGf$tSTIBCzXMWys$1g>{mIfVjq4Ohnep$6{qk7twfq!l z+Hcib(w93RMqwUXhJ@ltaU$-q7K)J-q}n zkEcPld-HAL&uQKkz{i1qNc}#&#V%OBOEu1FbHu(2NJ&s#?jNamz0Q4F;(UIG)XN7c zU#af2|BOW)Z!fX$j`-M*G>{VP_#j2wS#gcjtI|dCFal)#HK1AFVcarN*VkR@-PS|w zUj`|`^5I1tbKGW0z1KlXq3YK8R|4C>c6C7K&l!+1bDPd5%YDDDGk9+0VY#mD1}XOI zTT!r~jNd2cH7OwbX}vz50Gs^}i60+GvHM9^KYxEFeq0WIa$ys#entfGQ>cET)z1jf z9*=Pr_w{SP5`y$A5;m0W+OGnKc;aBQOykK45>Kl7c}3&N4a8H)eku!f>hzcKTmW)E z^#xcBY(7BdQzFQI<$@IRJ>huns5#zi96mzs#|zxEn-6~<>=%D=UxRKJ%3e*Xve14N=;Kt??; zaV3D1gCOTg^Gs>i15&>i~{@~t7kMYnoq88ezT*_ z!4UJgh-lacB;zHqUjQSp?oTh^upB#|e|2~lN{L9*&?RVcKZDYz;Qoa(T zY*M}aeHLZUrDj-Sqy54t8J7=0${y7_T`%L*8)Sc906CA>s$Q?p5HsGEpqY=BHSjEC zopQf%6@zq&xw%mzScvu9mwU%H5s^jBZa!{b1kx0&zYbRD_Py!X)q@|~M;Am0_60`eW3 zfoCxAU*q%sgU!Fa5;NF*-{vNeHs@5YIZ*V$Am1l@x9TsdzCrb~s#hB%_5(oL->Ld@ zs=uweb=*=kk4E8bM&c8a|JfkLx{hSRZpCEzd)&QZ=QKaPu&bFPvH>k`;f zmg;=mtn>4b>gM+vu|~DU8g(_kE7WlL<-6+5waRr}*;++E4{n$CazM_7;~?ikyN_gj ziU+wqEdi^8d%zlCb?;zvF2sPG3-dtEg-<}vg^(SC&AHGQDCL#kgtM&cg=vfTcj%yjkF9T5fO8=q~eZz4||_?VSy@*OL2@ z+Srd+z6F3f>|@}0Fy808b(FNXA2j=KS!d&5UvrWCy#+|A?078|_VDf2<*?F*3Yey931o2C6|kmWN#iX4COK2hiA zWBl6IpHpOBEPhDlQ69)V{Rq-u)rXzuO+*ig^|Y>I?H5Y>PU}=OY=`7Ze@23oRjS*^ zJxTq3{vWZw08$$IM7QrpGt|EKW7==a_~xN(_%f-N08*^$u@B|Tv^>k9JhUhF!&>fh zDEFYeu9mw4h^h4 z3R}t)ohK_n$|lvX^gUvCud;2A^={oI_0vF((@v1vUC76>y$uFAPU#@WX)jm<{2Syr z_1i7`x9K3qDI4TC1=~Nx+S-4#u55Q_K*|mEWP4l+GLB-9^QEgx_Fr>A#_>7GI9k@1 z{Zb0Z`LYXS91R=D{zGj1+j2UtnUG_>U{p|RFcHk{(gzC2S}S;AoF!V^$E!m z@53O=hdn59CxX=FyshGUlQT6R`(h=}zk}>wots7P0-E(L+q)Na);=MB-v&}D`%YSk zCFkpNq}~T0rN#ys_vRpF9LT(OENI4KJO6V1L*`XiUC&1AdNy74VE2

    +|&M#@)$lpNLV{ft!mZy(XPY|rV& zp`7gm&Jo>*gS>0NrOz{U7e5U^#@i3%xDE%oee<}+{v2;=pbdTg$Iv#i=Ez#k=X&YG zdrIEVm5aY~?s83Ta-Fmn39`KrAZ;guY;P_|+jqbkpmlxCLc1LoNS^wElwi-}=WC47 zSc{nt4`QJ#xJBmA7Lc-A^%rlI?KT^vy*=-K_@kVBRN6fc($4DCgTseml04{PzNx$ME)&|K=cdd;as_k8;(+(r#Oj zcJ}=H)Gni=*sTWH&wU{Kc?=Ae*U;-9Fy8DS_3}X0I}WnmuOREyMSbR{A6Nr4^Mm)M z@H&A9^-n$^akY3*{9FT?aaz`wc-XC-Cx71tQmn@ZX(-RVNB+JIH0$&EXovSsWW$!S zAV%`G1*Gg&{pEp@*SA6XvFEiw>mQjR?VSM4_H64)DeU<7E3GRjZDn3(G!cKRK{NlL znSU@?{@s1FjVsLS479<0k#%0b*;v}k1I=**&2aGy1q z5^P?lXpDh*ZD1RtjO-@)T?A5Asy^jf$^YXZ^JmY0Cj3z@rbxThrfU8z^Ti9BR*U8D z9*|<6_a*A*{YKLNe2_Uh2eSVm$OHS|4Xg=9gFG%`Kb_ta32Fvzb}LIyAh<{{UDFGs-k@!_ca2k4^Z8j|0uN8QS;v~kbigZ?;9k*zU2#&k4_+E zHpp>*R`o+5xkm~i#_e(d$eF+ixO{wB{ zA#=6<;%j8QcY>6!RIlAd=EKz>+y5P8oHe^T&yPa&w@By5OQ0FIZTmF($#~^9mw0!A z%*Sbv{r(#aw%tXd?kCNpULnYORkdCtt=A3YIFAKufY$MgL;aIFewPB{7i7Ik)i@9J zkp9-}Dfwv(vR`LFw*RN<_U$E0>+ivKLOJBHz2w8@Y`Wyh2wdN_<;xEnwij5>GJ+f@ zxt^2#){R}Iy*QBZ%>tR%C19|;M%++-Jxd94oaD3Zr*l`zIjoj!XF?AZ3~ASGwMwsrCDPBK78i-0n7lTrYnFIse^zWd4r^xjqHEzTj1VO&ZF4 zSpZTFf%Mz9k*vdyg7o_-$nC0WW4W$i9lsLz>Wkmm&GxP^POfOlYf+@wp9E{bZ+xeU z;}iwklX_fuDR5lasQh=V64YO*9v?bgH%f=ik<~g*Af+eHN6mR{+g@|k-{(bAegUM^ z{YLFOhT%Q)!G9Mi)cU8lNWE@(GENggj?)Vu^H~5gpVdF8e4LE_lCKVbN&726$_bF; z)Z=gQ`y@!eUxW19>Ax1g4(~IIRKItJiog3o`db7tPV4p(2irv5-e>FfZaqFvMY(&d z_^IrAc^2$C)RK1Y2HDObka1hv%ZJ@sZEu^lccu49`BBFzk1Usb%>yatK=!Zi3TgNM z@%AQQQC0sR@HvCBqXU960*d=yNM@#HC@z4g6XMbi$|wZFID)%IR%VO-$jZz%+RPRU z&C1I9VWnyPEHW)KEiyB+vT3*d{d~{&+?hMW1^>_cKF@oe=QE#s&iS72*_V6nxp$mk zvX_9#RB8LO+J3h43W=jQzS7Rze;x#r*$pPW|9~lf@u}>e38s9`({`(IHv>A~@5<@^ z0!+qSF2(SFyqf)YfR(?+xKsnV3u;*|6HI2Mwg-<(+jTy^JH+w{AG7>9VCo;i<6@(h ze`}tOKc(q@Qg~*m7^w4+X_1dK_|HcAN&iwXnc#FyhYXnsI$c#@GHbLwI9=6Reu0s$ zRO|m=+oa{%b>Vh57EI|dmvaMT9>12|cYw*L{n1M6@93R@y!U>V{|iiJ^aI?!ri00> z08@L|3Z{1OC7Al@586LC|EZ%n|1lr2-t)m^CTe@|bGs}p|E(_9-WV^b9df#@zZ>92 zm`fgH{a1p?G-`Vo+6$TBbgkF%tk&)0dEH*#)pqrLU_39jdwkD}eeV(1BW(Bx?hhNm zWDaP1aDGl2`9b+p{q#n@RDOcSYx@{3r_H)t4(f6`ZIn|Ne80Jw^bA4R?ZY@dQ-^bU zZU6_jhXTko+|21X1}0-}FRS2x)vfIB1}p!d^>rO&NN)z#ykwkU%1;`;vrp|J^>N-K zEPy+;3tETMd}{0;jI#51o(~R%JOAIDI>Xl(<_=Zg+&uLEAr6YO?oR*u`W@`IQT#{2 z6yI;)FmSK7yq>-gO!g9OU!v_#XuG+5#8~wAWn4Z>!DO0SU-yPAndo&ap9m)Ni?#>1 zN2iwm?gN%jIKcAffK@#Pygv~5o%4kVOETWk{Qf{N({l~O9M=1AZF_P%NdZ&XN5NE& zTebbdUOeuP1C#%8F!lF;v^{v-s@3UVP{HYb1We(~<+leiZEj=tR4^H<`NOMqk^kuP zxSoo@w9hbK+c#?ac5OeY?SE_g@Ifqp37GDi9Q|A4`$}E$u06grh4&-q`x}YlO4YZf zD4uy`oUY6{oUUuZ!RgO{{A|5Xy;Sd0o7WG;@c*fh!;hGu!#DH&!y3qv`TB8|`vpv9 z>?R%`E(eoY^n}(EG+u1i;U^qr|0*zx!Ib`EU`oGN+npD1`@RZH{=x0LTI=uS z;dG1#lN`N&)7k<(1NOo#ocDB)>6-_Z2?`N5Otl+Y`sLy)T&d9WT@N zGHriM+h5l9-?hC>u6{mky6<0)_-591+>h(wfBh^@_t#*R?iS7wo`gKfH0nJi zFPO?k+|6^M9ZX|qot_gLz|;o3;83t#pCe2I(^%yM(^%&QQ(n_{@fipwn9eHHz@5&H z(f(2VFh0jnH=NIr?E;futBcs~0F!;Hwwv3TJx8Y-XDfQ$!1){wCKFtrLm*3LA;vW_ zFB;=p3+LSn5GM9%)|&z*GYd>*^D3Cy{eErtYX85qz5iyG-wamef0p~zRXTn5y~N=@ z1yek!FLOMXgQ*VIfvF!J08Oe}O3#KU09$1h;YM^-C7zjrT~@^Kp67Cf>wpWnL^ zO!+ttR{3aQ9dZbHSv-Zuhj+kazSQ;^Q#l`QFxBVBV9L)|+CFa@=j%GKs&9*NLX0mJ zdxmiRwse2q8*&d0X1SliRPWs{;Ci19rt(@14h4rmAC;rIUpNu|D?QKurRRA*ZxM%Q zb+I^`XBW|1{r@ww5b}nZ^CZ{bA~2bE!Bl@?PqDonnCw?+`=emW?>pKa+dE41#`m8S zn>pWBYl@5XS6ss7^%a=RzuF!>najI7nDl=Jrt)r`&-VUcDwiy65AN@KbUdFg;BZcc9vbbhsh^Ya&&jCo$z4*xs!`ffW|l?RPW zZzkX!Tcl_yjKB%||%igJ3eJwf$_*z0!2}zFFLEt_G8tr|pk}Dg8UN{oNdHXJ3F- z`2^MXbgi#_H0QfFnA&9?SoK5oziw@t{;!)3w zxdg4}&*(TNe8B!yU@~j8{cQD=I+5!+rwf<+3NV><+Wt0}()pRT2lw|Z9scohj`tO? zRsFfO+`1l|?@eIJ?|v}V!*Q@`pFO!AGQc$dG}n*UYkd$==DlvL_c)mJw&~7#yMamX z1TfX_wP4a)52iKJer>lQe)U`$O#Xb|myG+qMBja1J>uL7KQdoj!}(lR%K5$rtnzJI zFP?<_Z0tjk`%*9&^SEH2R4NLtX7{CF6+X53=iEaeZY3P6YoLY#PUbLWYqs#7bRk^t-VP2G0Gd!7*L1V!J)9* zzGV4KFtz(>+P(!$^Vu$K4?V%{y(5_PSAwY@tkU+q;3(LSYP+LXs7Neohj0DHiSYfc z+_WF!ME+(#hQepyJL$x!zw`e~80_}&9#g}gxsb%YO9RK34yOEEt?mB>Q~7_O?Q!pO zdGrL6UKg0kYmv5Z2b1|h+r##=y)&5PgWJW~6s56KHXHVUXsWe3)`5=_qbfJxt5 zVA6LKO!eG0k?VIXnCjI7rusag-6uF$?s71VV`X5f&t+h$$8}&@zi$Oo`IzUo#7nS$ zu$mlG%5V{eJ}+b{t71V zS*AgLKMG*;3oL&MOy*xOrT5|&*T(DQbHp6SptDiq_*DVEy;Ci51U^!%>f z9Rnk9CTb1NM6Jdgx=I+|DW&nE8amRcQNs-Wn)Pe|lZn*f)qWlRo3kVSH>b^y9Gc31 zlg{_@uXH#tnLQ_Ux|8vL+z)e}8z7sbe9_+ag{ge?1(VsP?cBZtzngmo;ePmq^-cSg z^*8rkf9hl&``+lt_4zHBOllI_S%2X7FtZS5Z58{!2_~~&+pXRkb3@*Fn$z<-n9AAy zeaq=uuhTUwk>e=>lUc9r&3&h&9^uHG_XEfGIGFm)88F40{UeXh8^L5$JykaSj>t*q zp>|ZO&-vc8kkj!Rn9TpQ-Td7Rd%mf@-VNjW0+ZRM?PmEQX8HHDJXpzVyIH=#EZ?Bz z!Af4+&GM_v^6zVTu#(qyvwWRNK6XFL4*-*SQQNKB+aZLz?hh{SQ(!X9wKp+^+grDk zajJZB!DOnn-AaFNgcwgkVraApit$%VS*1r@?rcT?<`CSNEU;p|*mk*fCHf^_R z&$S3A{^Im_z|^kl!DP((_n7q`(E7n-wrRUr-fNaWsO7;*Ufa#`iBnDK|4_?=mAtl_ z#e6d;nkd_B4d2P2UpBjWK_?^q=eK3_z=d-kn?FcgiazE*DCpmeX zipL42ei)k)E>bFEafZu||6FeC`_JV@gd?+VKFgIY;BeQ0Rk%c2@5N%hXIJYz8iT{9 zA$=Hs$p1Ysr7y*+#{&!bG|0QZVfoL%BtPKWmfPWUgrWSrlfdct8BC^kdz~%^okt5C zx2qB6I_RZzeRUT7o3#Fr4y>;~m`s7TH#a^uARL*HpE#byU|O%f1Ez5@`Df1GA~2ce z`q>#B|0)N^zXeR@OKmr|qtxl9cKUIc%3ohFnQhu`)$g+qZVTowDvu7o>H4uKH#g+w zqW(zkBVCW?_}81`Kdj>itN69uEMISy|3u4!mAtl_#y!}#Bc^uX9 zU?s2ZX89pz`A@YxSjlUADw6u-F~*U$0S)5OoY z9IpYB`B~e|^7UrUut=< zlGk>#e1Td1gq8;@d2Lt!=V6Rn9-F#m7b(*K&(LEn=IL-o=4>I4;D{F1Be_B6haA~u`rp62*kZ|3`#GBBCsXV`r? znA*X8U}|4pFqyDt**^hH?S<3jz?liYe^M)VeQx3q(sc`DC|#5uGHKs(x{UN0?vHA{ zUxO*WE_EE=elUd}vW3$#6-;IhnB13uDIGEq-$FonCFV!qxl6c6Opo`*HQL>LALaj_ zqLUT+S*Bj6e)SydiQL9|JA+AYY@cx4&vy`x{c&D)@9ll7o29tS8+Z`Q4Mbuipp9*o>(z4#m78&q&bfWgv4(%&WwA~-&Cieoko6k9~ z(rFbRPZEoFvi=*uWcYqD5%-I60r!h_2xHWFn*Pr``rlc~Q^v>%;^H?sf78HJZ_jFb z+g+^p5Sa4i7#tgde7zh^8NQ6{u7?k(y0F% ze&=4J9n-nF4#K`Q@Eo7o?}CoY5Jr{vpWKhqs+nguaJ9n0c+?xl z;d=AE`9kP3`YV+Q87eDE7nK#2i~AeyFXTsN=l@u5)ILscDwz7`_1fOb|XS&|v~Hp@Tz4(pMd!o{XR)K~WzYt};Tz4GI%+=}}HcSDOfv?bO++lUny{hgt7YFd0XmFzge=3xCVxwmrmy zdu8}19cB3!Kh^Rrq`wAXsLhcX_Bn@3KgQ)T8BF!&0+Zpi#~?3AKhoZ%wN11}KI-6a z|6-gdK6k0;0y(pt+q$DkTR((&soY3E=_WS*Yx)0bCpj`%$2pz9f@$Bc!1N>AD$ZeOWj(ql(oCayh?-LF2uF>3JU4;K{S=t=na77L#6xcODAv{RzCO$D+qPUxNs4d-xh5%TEuzU zG)B9l3S@*75i?MRL20N*9PR&Lz0wgW9B9)Hw0j5Iy#sx~k)F^Pn~HvfZzw0{Cu5#T zLYqj$_{V#NhgNbLQ@s@c7)R%DVIR~c;29_R^(K9kzT?=3sl+>5nD-pe>+mFa&Ci>}O{L<(e>p#n-Z+0& zoSjxLCD^8GN%sVEZn!x17P zkH585cMB1Q(n9HIj*WJ&w><;o+^G{p7{bm) zTQf$Wr7n+f!_W65)NhY>4_E+)0)JfPQ?Jy`ok40Rz#X3D>pzi_)%e%p3 z9Ot54$POaL8`T)mpq^0`grwQj|H{=MoG}l%PwM^l{ya`p5A!p{PyS{zYXa-v38udN zDVX~FjSsnMGsI9xlxsE=PwOfA(9qK6avQWDMf)SAxkrbOG1j(4lO98tm8K9s2Q1-D|wLNIgjJ)kFVb zt>2~lffM5kwI#9>8}Z^&4Cu&ur-R8nqU{I4)b7qp;&eQg%G%yyGOzUIbhIA8_S?>5xgWvg zZ#Dj<-dZYFbzr&8U@~J9S>6Svcz66f*dL6+H{`(iQ6dHNM@pW<+o3U`-aKw+)bRNDlpePo17gN>J`gLCD(#{J-cN0Z z`KfJYt^a{9|Zydg%ElnHZ*k_|otWh#l@`J#ku&zNtyZte52JdzWVUL?wkf(cDq9Ib03S zNT=vW12E>pqez6?z1yC2*E z{FZjV`>!k&|Lfq+a6bwr`LoqijjsQg6D+^vB&X+YFs0{3FzJcc*Oy@vHgUS6N zFr{ZFn9}o&c7Nr2PR|K2rAK;M-qAl)bi(steh$e0f4UuMSPU7`_d3dr%$$O3WuIJ_ zt?aTxr09^3Hi@~vgQuN0wvlK4mey;H&>MX_$2$g0hUL3peV2;$U1!X*$-ebn`0dL;{{oY742ZxQKi>3Q znr3evL#HFGu{QI*#q)E&OSwEA0#kW8`iG$`Q*j=+qu_s(<*?NVYmDzVBR^y|>T#Gj z`wmXWEHIgsU>dhN>3qjxZQ2>{rYB)tjr*v^2zR)8Cu@_=&waX{PF}(3u^R6hAe&gu z@mvHZ^C6hx`9-_;s9^V&%J2;Ij9xIcX;f$L>6n9TI{x}H=$o6jHk>v=uGuYfG2 zkJe>mKG5O50FznYLF+k>=JmdqckvFB#k^Y&U33nGbWPT6F5?92G`IkJ4>b0Yo!EOR z^OR5cJ%r_8a(^5g4sOu)-!-QVpPfAz@%dfnAU@B-edc@ z4OuGeVla){i}thqnh)6j0dN%DlRsqp&EQbjp99mH`b%w(`-uH-1XCKH1xJ8C*Y-At z*ncHB67C1Jz3azW>i&E1VfJ4OCbLW1t=iQ|lxcD$w}+8nGKay`j(^wgeX7{KrFLb% zqf}ge59_%TOorDhRG+Dq^*ID#{(v0SXKj++>s>TK9LVK%;h4bfq8v==X*JQ@PI@-G zJ}ZFU{Xu%&?@bUxb6D?fV2bm+@vQefFxeg0OX)eNceCkT1-(CNy{QS@K4`s1#^73< z`JuL9-!eh9joP${B0HSpxf*PP-=knMFMvt*p@?iHn;Ds{>QA<1dj*)%WmRu=NXrfL zxxAkMlNq&u>#Yz>;cf?$;d8(3FfYVmUWg4i*MA6lNVY4+yeB@@@*Qd1#eEm#nM}3E; zOWVuN9XU>5!`N0gQ;9% z&xsc2V4d0*>(riDr*{0&?#13nLu7rpTBmw-`e^M>=8C}_{z0$`ug>pUzweQFSE=}C zB+I)-X?gly2=-Ze;$GfrU7Ue1WTN_UxbMI!o_;Z+Us00ig|lkiuS8WP+Sw{|c5KQTB zDcmMgxHU-}E+YBt;Tp{0Qgyg4XAgJA6z+A%leq}xs?yoa{zmHETqd(Sv;1MOl2_}X z=I`^f5YE_tNE^s~yD@TtIP)U6lZ5TuP7c1r?d{oD*xq9Y`}4d^^Jgc^dD#v9$B=$X z%QB4V#IzowwnKJeBVJsJ_a0%re}c*6Jj(WJFtwwDU<$MCF&^(0JkIttPqExDVDjg5 zH9!BZN4kvlf-hZqe}mdO>7f0MIZtysc7Q4EC%}}BVVgOg1~-4y9LpUAlMbu? zT#vX{VICrVo55tpE@OEYnB4CIlWA$4bP{@IKEU$#fyr`hMy4 zDcoL8gUMVnmHY3AX}TTZIcYTZPjR-tz<7RI3pqzxr07~4A=*pq#nS12e3PPe8sD!D zL43w~zsAXWqb||XpNZ17%74W&i3^;ERQM9a3g z3VL6L9O*IYJPm6(swbl@(jJ%D{B|3cYvpP#=M7+ze;rKiAZ!iW6TvjDjjdt(LtvF& zm8MQeQ+vxa)gevB7;8trpfJW5OLmIOy#E(_jMK9kOtQ~`N#-z^($nP&wr7DUJ$=7q z`;B0dw`z}vkcJ()-F>dx-QwjO?jA6O+Y2Vs-1uM9dAQEVlB(}1d|yHCOw~OclG_XqA0AB>A6g}h|UXF z->a+DoJDB>xuVB)7(N5kE*Z?N`E3fnYe&`##AJBRi+kXX< zf8X6~-?WGA343`z;9{_P#-{BLfJr{~ZQc(U29AJzj<#Sk*3vk~}rU*>=u}WX+eWl{tg)ASth~=LIQ~LITDSf|d_vYrSEa)K9 zNyj@4Oy&k~bMd+nW;^ylNdHkVnfXWu#e0`d&n_^T=Hgwi#_>KwI#boAA*ZH$Zr+A=L+_r-CZvm6Zxt`Nm0;c@k114kD&U+(# zT`9{Q1d}PpdVun|TCWRU1(Tt5e{;`4ozOEwNnzjjGS*jeIft8Y1>0K+zt9w3Ud{5W zz+~nXoIQN4Dg1XjzN#xZ{H0fMczzCx=dU=Il9C^R=dgHhBb}ea%J^^*U(`m#<9|Kl z@th@ot=%o#go-w6!@TN#1W$r|=h^5v%vzkqBmX>;e|tJ()E0A8n}9P${Qccn{NJ5j zbcSC$eqPmplZtBJYxI>q3hVW+-8c4FG+ zA?^ctS|8_u$-V?kZSGNR->2E?dD+yZT&^WxnwJ~Eq{F_9*D=LlvX5KN`B@Am`zzom zut#BJRQeLfR|h72XTX%6TVG~7&zH%x_hUL$$M@?6 z(0N#;7T;xgf%PFbR!_1CccmtZo> zOF4b_gDHLcz+{?Rw>ovaGv=}UyP$wkXqb5s7$@4C~`W?C+qQ)%#?IY(C_c0P7)3 z9Gigix0Mkhp(qUJ%R@y%dTb-f(ioAvKU>@ie601J#`W(ed#uV|sEAAtRcWR$JwM16 zV*sxXGY{9xP4)=9*VPf}>gYi&x!V;O>3SYA_aDGq|JfwPGSntQ^NjlhyvH-BwP+iM z`-FtnNaxFFzuQG9m2*rh5i=-4#H5o=m%Dne$BuUv@czVBdaox$#L5>`z0h;xT1*tO zQ>5sGcgQ+!Unr^bJ`;4ydR$RcfeVU4r|qUzlNClC|~)d ze~b0TciG|t=q5e~xWr_SpmOopR9dLKuZG_pfM}c~J_GLnhz+|;K;2fN%!*oxg!~Yc zolPV(A}uMV`!;V;t18((BFdk z8u>^5f$z-#biEGj=tb{8^l0*2klL>uLb78d`cb^-xV60(BSM3{p5OJ9J?I==H_-#n zV**N9^$uM>h=bxGBWWB$-5TsT2lw(tZ(^)`L!`*p1kRMWqY#$jZKQrxOJ4~chQ^LUK%jhAaf-Ta;>&S+!&r2PR3n}PIl z`f8EB2a&!F0qLtJ-Cgl~6XRLeqHxg_?>}|LnASDDQ=_E+7r|tnp0xYe$j?8hM3zgrDF({8_iFZc*hCp!~E1J+qM#ID{UC>CB6}g zYkK!Eo%=PF^|5w2;#;82=iHW6dA|-lRQ|`n4$Lpb=$|;(o`5n*@Wi@V55K!;j6I_Z zbHqfTkD({phI{bVPOCTO!ipyZaCfx$9PTeh8ua>KPyL^1Qr_ct2#j$puXsx zr-VG7lc*dYn4KfG0X|uk4!q;3_1PeENpX(&4R}QB6D2vK3t-q|)jMdI+bhw>ihOgs z*GSLRWzY}2s>AcUSr`j~-_42-#XcAIy3lUo)9t?e*yrSkRKQn9Nj8zRHQut0el5=t zvcg}kvV)DzI$6rTJvT=j0DSdn(astwbHowgpiaA5uZ;4K-G9K(R)siGPKsk~BGwb> zRCz?3r}JkHey6X2dcIX#C|R5%DuM5e@`WznctY1|oJ4tHU8BZMk9w!AUd_39cU#T7 zYdd%o8r#*!y6tLYqVSG^F?d%jMRdkHik-1W?Tj-6{!y97p!Fm-fX6bP#3o}ddK1r~(KeIO_KkVTXq$t#=7>4Kg<785W_#h-8u;FzjHi6!dpLQ4 z`HW3MS~12XVT?&iS9Q=3Ti@2#cD?^aU#ZU#PD4MfS8yH_Z8D&|9DR|-LA^z?Of{Y7 zqmy}DPiK%9s;8v<8e7t!HMS&qi;YJe_RqlPq+?(d>Uy26^PoFzo#h&v|4mYsDS*t` z()-dISPuZc^mc~MY_z~zLB8@>us26M0L(VZgV$e9E7@Uh=ZG1APd1L;;l=yASYH_L&dRtD z5w{{LEt2B1Xb-Co=7{}(uRU1ETzDu)+zI$(tk)&=Mw@AO1Y`G6tbdF)rp8x{tr+_f zFc)Hc^^JWu9nKN&0*0*Y94$J(*%sy52IYzViM3E?Ue7sYd)lMNJHS}uncoAJ4vekn z!w!7s+krl8u2GeWG8}-&P#;!!HA&{5EeBAe7-ZhUIjx@A~K?`MPSuO)xux?}6baZrXjeCeW zIP+YLGtcavh6O42Ev)y_gZdV&opF9DaOD-1rq&Xe4-&BMFz%(4j^j<<$M&jqwwmu_ zAj|W;`W^ws$2j!cxc#*1qBMjG$HGWqFOI;s36ikxXf5muLque;O|*I)ZK#b+v`LRl zqq?TKZ~emY;tin97d)PPitErt<3%rRmo(mQjdVH&V0@8yb`bP_tr`cRNOou~I?OQc z08mD%9Ot4h&9dz8sVFZ;pD2tK<1sd8Sju=Y$gB5_MuFA6Bi_44UyD`qXavS9%%yq$ zd30XIc<~hQfzfU)`oj6;<3$E!jJYT_5^J#ZP*ol@r@Rlp!{l%DUv{h|`jpztmsJ%`eLg7zKw*;Xa$ zD4)L3V5|oN*Kq^t#)~0ixJ%_JBe->FS}v9?1u5u*SF9* zxePGY7GbQ#yWO4l`+fQTiqDrPqt7O<_4&EgJ8zYtxDQ4f%Ws7?6C!9PVtwtPFAn-p zw*D|qN3W@&C|F2nw z<`q+VZ~0-os0A)J`YqjCt;K!_vBze)E_?sS@#1r!rFbv-X}p*Xv?Oy6{P&(kCKmpk zO)@e8dq=3Vgsu8MRLwE4qkklzepsGXLVF(YVK-sukGdbgZVi>0qcx- zk?e0<`koCs^J(nF{nFal#@L|pYZH@;Z$9Mu=dom3Q+2?7ok=Iw1!^yZ!p6~CZ%B{c z-=j7|M%hu%WOww!I9^O~cESErvWRp?6ol*cS5N-^@H~7W*1W|?8}7jqaK<`VM&%1* zcRcPZgV$ziY+f6arsjr9ter5IBw_4HN{@F&sCy^eH(`u4-&daMoGX3+=AxYtOZqNM zr4&+)sdxsDeofEct=eEhmt1ir;A;zNOb!>3dH(g!iUIhZ&pEl`e%%g(%efMM51RZP z7sQAjMeS@o^5bkh2H9;rWTegC^SQ5P*mb=lZNYOZr!#P@w4awNk^tXW8Bga6P=2U? z-}!=ep`snis~yU#U3yzL=ih&CCTV@KwpE&=C)Nq5pLo=b|MWAbtAXmUcevv%W(_+8y-j8~ZF(*1jPj_&jhWk>UVhkA#S+PG>L^zJ$SLn8?~J3wbU z`gT=j=C=?u}I}II(`!xDAG9<0rEAc&ReCvh2X-)TjJR9l! z9>;u&{S}%|WsFV4ti?BS+O-z#iqRj?kLmjivJJ+U;!xgCq3?TQ9j4ZU>G1`@d)3sR zuUnQY?f~A?`ETjokmf_)zd(FwW9B}1@P=H`{l;8zQtMG`HjGQSkEWe^?1$l}76fXlTG>Ebd+c@OG? zGVkdt^HgM#*S1}-w(aCw+cr{|1l~ucx}m%|Qn8ls_`f1f_qD3t$WO)J7xDK&{M~t- zRKW4mUL?og8}au-{M~)=E5AOtS1;;=dA>K=bT6z8yW?AQ{;;vJ;UX66-B=Iq2O1*k z>3sxaExYl7Tv7BO#6lPRc^ zJYStuW9`dp<3BCe#`SdA07lIVB-@$Rhxk7iK8F;zm(apK6M~AT-_8|--pLhRb^b2L zwcBJ@XQV3e45=st?cT<9DQ^*>jjbAN^|}nP=h>xqr0D(gjUu&jCGLZ6688L6B7D%z z!oELOlmcZ-_+H9v=jR-DjG-7uF+ay|rCLG0BK5t+!&L84Qyi1yWz(C6gMzOnK8@4PEpGygfJ$<)MF^7IGPAr@>~Sg`5{-eXywwl1qd@b?>Hfdo1MK zR_W8<8gpCZm)gy$X3D}Fq@VhAtwp|!a&NHEkJ~umg?r-i=F2p1)d%CwxWI{7|_zH%1%fkYN#y%Ao-6R&}B>kDuyitJS5s91eYyZFu|G zh-XtX@$7-S7qIFRq@>Owp4<~n<7u>zTV)|#9{* zn9J$g*8IFedFUU*f76Dg>b^D$l}9)Py=QL2*tBk`XgC>$w$Jc_3FIceW~73h8g%W} zs0I_fxKAaB^BHz9Ayp#{OvnJ78g%W}s0I^iG-|rTx z>l&a|gRbi|>cI^fbls@o1rzKSFw($I4L7(}gRUC@F@!UW}qov!~ECF*fq z6O|$|U{8ZxM5p-Lg0Eb3d!RPq{ys{9+DJ9730{p1Z1gC~C9aI;9k$AVZ@7T&+RZwHozcLZgNkOc1#^7otJe zR0cKBO`z*kxDg68>cE8535*Odfy&ScCeU>Om{6@z3ntWSG=d3YBI4Je>r{<2aE1n5 zI{~)_UDp708g$*DVbr@9c7lBpBNa?Y)5ri5oEimSf}4Q$p@8dJjXH3>23cE5s z4KJ7=CNu0{LaIg@n2@1S04BIK>cE70jRr8GQNs%+2<*KQ>>8vFzjGLszwHwP=Gpgf(dl(23Kp)b&ZBG?$p6fXw>k631TXAYdFD# zY7O$M(`Wz_#5BfMtetiPp96mZ@%Jtj{ecW1A1DTv0e1sifZf1h;4~0&AJ$kvKVSqf z9q<6x0X4uwz*b-va0oaB*zR8{Is*NH;Xp2MHQ)iR2krzO2VMr=2TlTKfba(p4(JbD z4CDbb01vPd*Z^z;et|-vOZyAs*mdAQ!k2CaifA46Qg2p}Jr2do921YQR|0=@;JHlm(@ z2|yWe18^U(3D^eg1l|RX0H=Uo0o&t956}r101O9mfh&MHz;a+Ua38Q4cn#PG909yQ zt4%0Bpg%AK7!6DTW&sO;Rls^+6R;iF1AGen4#YpPRP+T#0apV{fqQ@#fOmmoz@I?; zlek|2E&`?jbAgq>J-`-VFK`6-0SJ8x@<3N09T)}V0W$y(umZRX*aYkWP6FXiLq9MS z$OWzjJiv{>df+MGP2dIxVHOam4J_XG97LEsc%+k!p| z^aF+imjJVXN?-+WAFu=X6cAgNid0}YFdgs!Hv#tn+kpQ8p98-Fkl( zxE{C@cno*}*aaL0z6bsR+P{D@2POiufCa!R-~nJ8@D^|wI1SidL_Gp&Ko(F0R0HdQ zCxIQnyFerG2N1suD2=|C~C0Jsf!2&e=83%m<70>1*$FQL4EG++`?4pakcfh|A- za18hX5HDj)0lEW&fh=G;Pz)>tRsr_|TY+7`A>dm;yn=8*cOV@Y4NL`!fVseO;C5gW z@Lym*&g3S5Xc?cVG}O7MKo{0E>Y&z{9{c zU^j3WI1T&*w0R9>0h|M509OOcff`^Vumd;@oB?9~i~b7?0wx0<;09nl@HDU!_z*Y= z`~}$SArA}!#sXIYmB1}PE$}SxCh#$E5@@v(Z5~JmMgxVwa^PNIJMa$hDc}WcuOrVu zPhbQv6(|L&f%QNgup2l6`~*b4u~c*h1_5J$slY5?K5!fGFz_7kCU6M&7Wfy4dvmGi z1q=tAKoPJUSPwi0ybF8{wAzI+14swP0apMOzzx7Xz|+7Rz+vEP;2)sfZj=u&7{~z% zfrY?-fQ`UQ!2f{bz+XW0Tj;YuUtl;e5x4@l23QKL0qz5y26h1N0mp!!fzUljACLxQ z0#kuf;0EA+;CWyl@Fnm!5Vv=!=mrb|#sE`+nE;*);XGQ1XeC4+8KaBsb7EyS& zHwN#i<9QkOgYkr0;GZh+etHLyh_8@$6iFf(U;FNaFKegb-)y>yZlb&BA$p2lc$U*g z^cDR?e=$IuBhJNH-GL%qoF@i}^Tl9s0iI!Ai2o)VCWecP#0YV*$PgpND3K{fi!oxX z7$>sueU%(BUgU}iVxpLY=jfM+JTY11iz#BNm?ox+OYvVxmy0XJmEtOKwI~pU_y)sF zQG_qH%o4Lju_zJOh*D7|=7@4pA>3jvzG*m5REjDwUn~#{#Ui|~y+mN95X;52qFP*s zcfYR}H;5a>N^z4|C2khCh+D;NVzpQ!{v&F{?f5pu9pX-Lmslt67VE`5VuQF>+$ZiA z4~Pdvt#}CkmGy{tR6Hg&ipRw!@q~C%JSCnMo5eHYS)85OBDRX>#5VD~ctN}Oj--_?VY4N@AiXZU) z@lWDs@r(FX{3gzb-|_vPKgD0-Z}E@7<2NbsDqIL2leU(jIP@2eKd*_zp{ZyYgGYdE zrCr9#IN46d%LLh8;_G1&|L7o-WU@?=op4$+Rd$hGWjEPf_K-bgFWFo6k$q)9*9U2~;J&Xbk0O3s%H6t-M3tDesc&U|tUA`gTl)L0^`Ig)x_sX~BJMw>WpL|!oCmZDZa=-jQ9*_s+hw>wNNPa92%TMGH zc~pKXKa-8}b9qdDA&<*1~vzsO(ZZ}N=% zUH&2elz+*;uT#}>u&2|>uKv{>uu{}>uc+0>u(!iJI8je zEzLI2mTo)GHpq6qZLsYE+YsA@wxPCRw&AvmY$I$J+cIn;ZKG_Nw$ZjRwz0Nxwz85L z3(L+aDl5aA9V4qME5??TRk}Qx6=hX(%12tbjarmlUgTQXg4Z;QP?Jj*yR3qcyOn&P z+c;Nco@-WMcy?TpkW; zL}qgGNzJ3W72ok7bi*R*)t|o6#0GGYWPkrobU6ZYg3tPt64IjsEpK*T!4o;gzp-&M$-udQ;f;g zBpckkA!s<6rJ4>uB8`HS5Cs-r;UU`PbbI@(IUnI0F$1R9Sh5q?`{ zkTp=&Z<{_LH!!evFoic4z!pv;xp`~(18hpKwz5SU{02{n!*Pq z4$F+-^!XY$vW4)*x<=&%)=E!FscTY|KYu1SQ#?~}%j795DOW>`4(oIC$?1C}<*)CH z)OC|c3)>h~X2;XxioRaD}3#4lxbHB}Zx z(8SAHSFr2olET>)<%MOzaTxBFu>^QFr*U%SBA%Cc(aPyFLMqSZLI%6%x@PGb_h*#c zEYs%mu+kFjmRB;nxQS}zXsO%pW2q?E5#2wySm9);*>JZ|;djEQRpub4l@t}ZObXcU_oqSD9GdNZf2=P`U3w&=`e3`?Kj7w>)97>ZOX+-! z!d>BP4;BnXLB(S2-y}TryIKk#c)!0sbwh4jL+aIW)ot zjTTM(EmQ}N8NLv{(ZM1&KEGzvSvUucAHHb(1BFFAe$VDKTDS*{CBAr!VZ$O8!^>Ki zg=>J5X;cZ&ZE_Ek4;XNezQ8dD4#C5Y&nZAp@ZbZf;PD4e!9$SGDL|KR)CtIe&ow~S zdbkM)Xf0x;C1}vG(h?*Rpv4%70>T-N0g{u8J=pro$0o9Av`1l>+ymsNc?wN45(LS? zBw?w}@938dRAgx3O{AhC-0c=l#nQFNH^N%`jIOAf!Apde{CUORvIM29C5h(!Thcye zVe{e4K3TYTrRAo&DK(Peb2Lk4&o0M=Ririusd^1zv%6W|lV6cnu>ixXS=i_3mvpi;XD@Woc z-mjU2e9nIDKIc4_8~6Nb%PL5Z_6ZE*w^fw+ha3)RxR_<8l@wJL`%_a}wD{DYK(la)Qglo5?BxkWvn&CqY*3O%#|N=(eoL_ejPF z?sxUemdwMp>!NX0-bj>o3Xr1SqsMxmn07PEVd|%~%+wN>zswP}$=NK8?KR61GrI?uSg>Dn z`uy%#1 z!enLQ9>_GBYP;XxRfyYjU&UrAYfy_dI|c>xTYWcUDnb5xF}60DSbT#>K#c^r`gI$j zeJ=bo#@t!`F6BkzT`sp8Bm5O$?cG#gkc+vqvkG!)A%S2+u=-0z z+^(49$SFuFu=TRKz;?@S=;^)!^11kR1xzn$+zMz-K9|4{J{t{TKJ{b?@Clk`{Nr6f z9D&Xj3VcpZRFuD?DVyJqpPUD14tfHm3e>m0@Fm;l;@3q3Y14U63HqD^rFj7oFsdnW zzq^$@nu))IndHemNIr1s$Fj;TQ0}q{-Xrwqm0V0Rm|bV8I|MDE>^}cI3|^zk3Qfyb zpG%-jg=v;oB5(+h$gG$%NADe}m`F&w1;_=ie@RNY1jq#UW0DH)$>fInIbW@6dw?G7 z83*{oZt|alhn(i|FwbSUSdLcK-c9v2aS1LLjzzf!$p+p$`CAG{9poDnHs}_BgRo+}k&%xeJ_4!?BQ#HRLU`SJ=6ubH5R8!8c7+F+gsv?u4Su)FIY}Inhs#w4- zrjB)=~6i5;*-IhF`vx}yjKZyHcR{Ok9=(n!hY8PSyL|}A>*zjAf(|K z6wqu9UXh!_2m6`B@j}`x%`Rq{CW|SvcoWa&LIzG($g4SI;JgLT;3b#e$*i9jRp#Wd zOMpyZ{gR?4^=o;bK$52W2eVG!62Tm`&(SPtp5@KLX7{G@0lfw3VCjH0fX}r_xw3GR z5@l!eV!)>Yjsa;1SQ3yFIhZ8^CVdD5%=_9NH1!9#nso(E=@1K?)ycthBu@2rlUsl$ zmNOS~@O=}7Y_jWMb_~!Le1~NS;;yTSoNrYS5PiThqDdJ4(x6EozgIJ%Fi!cW10!J^ zioBYJ3S2(;LIkcL4CjDFgxN7rZ{Siw$tfq(KAPFlBCy#>HQAu40>Mqr0n(=1J(4oU zZF5oj9D@Ryt@(vBFzWJ?ZliS>Zb5Q57h@%AI0r~u+;t31^gG~Z{N zb7^)r%Li9tz&dcUyNvgVInQJ>&dde6_%)J@&xRs0?ba$=z{=a_5*Wf~3(m5(`~0VQ zN^rI(U?J*v3X(D}MOnza7F906i&3*0gV8I@Nk!dyN zWve*=+%4tJ%UH9#c{yu#4^+}5wkFXu(Qj59(5$#kg}+Vj*07oN9^Nynxm?t%_ifni zSGWnd73}lN#W&zRsyi+>f(7uqBoFhN<|j38(7Z--wdP9ACo~(%lHX-Ly)_TjoTqt~ z=1R>gG_TQIt2tWpZp}wDpVIt~=6D@{SIy~~M`(6x-f@uA^@lExQ<@KG-mUpb%{7`A zYkon;=hpV8wZ2r8DVcQ5Ihto^Uaa{R&096UskuS(r<%Xj{HtdB`>ema=E0iBYM!dO zSo1>7w`g9c`AN-hYCfd-XU%c@Ii8-Hhiaax`5MhjHLumYN%L!(_iH|``A5x>AF%#J z&3!eG&^%G|Wtz)0FV(zC^LousYu>H-fac?x&u9)m!11=%++Xu3%@Z|WruiDpOEs_2 z{D9_dn%~xZSo2BEHr*~dYVNOju;x*k^EJ=XT&;P7<~^E?euY2K^j*@$44Z ztXw^KH-(>^<&vF3jI6|=vl&&DE-dRrzTui*GRGwjkZp1?-fqDY>0(}o_iK&yLz8fW z3|AHIZwf~Tb}1ONo(`b{-JHB?lAKB}A-Qr3XSlGd^CQ(S*JXZ%QNd#Tn7oN&a?eXw zFEHVqM_odh)9`+yt}AucXt6Gt(V6%do4%ej;~JE$5LZ$5$tg> zm7S@z6^CS(LnWSnFAi3M4VKAh#i}QWyIN0PP*ORwIKLvl*n^EMe22AlJ|2*il~v3X z;u*R|lJOk9$|as98AZ6=#)&0dwOMe{0MbEu9-&Z8nwwY{8taCW|`O!p>~$MfXo z^i<5G9T&8JAqJuhX5xUoDq!@@NaWFMzgJ)tg(Rp_V)&m#0}@|jxVsjMn2 zn^L|2y$Sypgx+1OhJ&Ip3un6AR7c1p4J2X-m3*__DU>qZuPM`%;SH_xU7k55vgc__g=Z|DH6yJ~6c5^+SOLG$t{GLcXX7E6cKe9*POik;Bvo$Ca;K&-WfzIA zCReUuIEpe;>zJHdGOv=hFT@ebxpO9+YkUKeq_|+lEEH~N zLNTDV;5gpcvZ{H-N}t#wscGbv%<$kDnb?i7udqnlXvh)Q1&&S1ZLM;fi0YvPOcM)Q zsqI!=}Yp02sMz(%ZBp=PhxZ5+TD=Vsqv06PyC%X^6AY9S0~jSxcv2XcTcUlb!y(8 z!H#RL?RThrW6ZrXW9^sCj?YM0^vIP*mMvcLpnKn}t125`=(c{^Q^)RGv-+XiFRUrJ zYj}OHTW>vj;y-zRKDOe^6GbbhU*7Mv@5i2cd2qoKFJ8B-__-SfoV)qFw9`+VYQOo> zE2GM4Yv!aM=;i*Y;h(8>N3+Mz{Wv#i@LPX|{`N-K)NSwHby3yZy{m`*_~8A2{yO%R z?SKBTanZj&|2pFH%y0hva>KqICkHev`*wkQ<)HdG9qsh<>W`u*=-k4#>FdH5-+1fZydr2Cp3Z zpMK*;-LgbnanY=u(~oDYm@@gw%u5~^meQk7&m&#D;=%soQm*PfYJy|%FU~{h{pa6% z@x7&&4eR+~Ldfm!90<$$?(WEcy;Ix#Q5$QY@M=T+o%i11=(aL1rOniHe|Ty9>0b)w zY(DdmyX>$1sr`<*E;@B$N757DM1>ZA|H3Q1K9U@RFFJh9zHVeq+%J@-w)-sP)Dyt=pM-4YSx_sN(&SR_Ab!?x$YID?2w^a_PyY7v&xi{WZbIXqZ%>8iXS}f2Ip)Ng zi9h~1DW~7j=yCVe@5}76Y{imw1)0}Q8Y?_!F5fx-@2HiHO25 z?0n~;FXn$(@YS>4Zl@BzJ9awd)yKR~))xIdZ)LCF-@Nz4-w}UrzxlPsMXP7;9$MY- z$)7hIymiNh8S9ok@Jii?JEAxLd-oQ5-Ls)FbD#RGU;4)4!9P7bXV$hIhnG}s54m#i z^V>3h+fs_}3O4}PVjTD!ay5$BH+?}!`s|3vujgMR{l`!(=O zc)kjcx~2I$KtF=#1(gn-U&Qkncy{s3LFcz2^PS+Ihs+M>;|O=~`@aSM#h^cha1-55f37IPkAl7n^yfhTD`Y<#&mZ7<59D8u-=Dzm%C0V+@566@hUd%id>v$d2EQ#q z=4(M!{NDuH0{v+`b?^`2`EmUHF6i$<{-1&V6zI?5?>E3JT+iZBc=73}$}fXH3HjUL z|6lz6FA@G*;J+Qey$1AO;kgO^X*?gn-}<0`0eS(y&*OOyp4Z^F--Yh`@jMRx1w7~Q z`^Vw=bI5)^!as(;{R4!51w1|#f?Hv*tcbsTBOa9}PvJLwZl&^Wgz=fP%8!8lQ^>pm z{3`gL2K{5u?}W^&KriEOZ@_OK0KJUx4}kv({Ox)0PvTK&TtWB`@pt9J{{z4MGWbKF zDjz-*&(Gpf>F(h7e}~^EK|dZk3h%FgU%_v$!}FyGKZ57C@Y@IR{2cht#-lpsZ@}|! z@O%%RzeHS9_exCvVbD(Q@{tF&ePCpTU`%OHbhQHkd{RZf% za-!sCLEjDf)%g8i;JJdZs`JV|wQ}|EK~>rNmv~h9`(Zo^`#;9>OW>b@{0{Wqfae~< z&*S&s0>6nzm7_nwZ*RtL%J2UP&o|=vC4^OdRJfjk%xl5_E}lQc-*EFx_>%j^{F-Kfv=|{9Wm&dZx;r z^4V{Lj^p<#_!b`JtG`6}-T3_$`2UPFKZvmMXBWTy&j^17_%%GL-BfnI6~C!+tJ3|~ zcy5CKb?E#mp3lYK|24vgLEnVG{XD3O_YL@)YO64nsJs=w{kqb_^F#PuwMCae-vz4t z)yDJX;MKTq74*Xht9I&}z#qkLXYi=<(@?*I{yBdCzd^qY&t1fQ6;##D4Lt9IjH;ii zeN%P(!}x7S#SQv<2rK3m@#=T*zXPG5r36psKDu3;r&C{|fLm$bKfmZvp*cJpU^m75^Ikb{x+aBK!&X z`zt|z3-q;k{w*Hm83Ok3c^Hs>;>V_`L(F;#I#7z#jwsZO~u9quLSGzkM@! zmCjAb-9Y%2pr3%}>+qZUn<^Lc_+6E+U%~G`0sdq7{WQVo$Q8*D< zr!ds?zby*Cg2Fo#{sam?{0An!Po(f86i(+Y6xNd$$XuiFCz1R*g+H0X&r=vTuIqnW z6n-UzU!bs>|EPbv6#hFVSb69VjXnQ8g~urTFokC+{3#T^M&VDT@N*RYGzx!^!mpz6 zhba8%6yBlmXHdBEM<)Hl6n-^@UrpghDEyfeK271zqVOVxKbykq6#g6vKTqM$rSOL+ z{CO1qD1|?t!Vmqiv1g3JM=AUo3fCz71r%PS@E20}y%at|;Y|v^mclPk_;nPn{0EcX z>nZ#Qg&(1CmBMeJ@GOPDh{D$>{KXW0FNNPo;SW;yODMce;Wtruhr%DF0{qZDW6yu2 z@EC>vFABev!vBfFH46U;g%>IOrxaeJ@SjomIST(dg*Pd@OW_Yun9M7Xq@EQ1KtCkq z_@(;yGJN~}ds+S@@qhH_yL7wP`_|9U^kWoWqwuR9HGf~H@ECcyg}hAg*Pc&qwt3)JWJshDBPp)M=88c;av)EQ23$8 z48AQ2k5PDs!f&PUE`^_>@Wbyjc-AOmK3hz?*y%er|hq3oL3O`KYAE)pbg@1;^M=AV4 z3fCz7q1@kJpm2}={!t3AQTSsNUZ?P@-$MSO@KFkHQMgLs9SYYdT=`C8|5Frxn8LFZ z9;5IYg^yBrox(K=Z%}xa!kZNCQTW3YUZe01h1V&(OW{ole~iLg6n^MS4Zdv(AEEFL zg^yBrm%>#FSJn-_(-eM~!m|_}qi~PHM=88U;TnaXqi~PHKSSX)3V)Eo>lEIm@CJoH zO5sfke~iN06n^NK!M8)x)$VG55?c#OhFDSVW|XDM8z@KY47QFxZZvlPBY;U0zG zOW_R)KS$v$3U5$&o5Igic!$E96yBxqhbUb6Zi8os!Vgn;m%?Kde)#X1{5VSCM<`sS zaFxO}3NKQ)N8$HUc%8z}Q+SiYn-t!n@CPZpP2pdo@D7E4lft_ceu2W3?=g7(gu)L~ z_%A3tM&ZAr@KFlC;>!%aDuo}WaE-#Rrf`qKk5G7x!ZiwSP=X9?`>? zfUEiZI)!&X*~q^SzpJ_4+AB?X^HU8?=AY}IX2KBB|9%JmSAW}~-;W+Pe^2Jq+Y~m^ zSU*DidT#h?BRBSWhN?9=T6@7oma(L5ws580w{693qL{)c+LvPM6Q{Z|uC=HrQ6^7kY>EZwg@mtImo zUjDm32VTw}f4(HYzMMZvPWb75^QUb6WWRqevv0rgm+6x&Nc6KoTrm^v}XU8s_nL2%OdhEi<>5~^Oot#XT_w|@cC6atQ zJ4x{0e9hQzU-|Ig{LN$U|NSrderz7BJeT~%P-UAMXa3zW6UK*foPYWFoIg_Fv8B`&3*F&q2ECNUP19z=1siA(%DZocBulA z783AkzcATzd?5HEM}p5d1^?kAKhD3uMgJ1BzvuOB?YH$WF!Z}9tjb5e?kb%`E-9A@ zRe!U26%PIT;NLd>;bda}J#SZ1p7Osx{94Mt*BN^BjfUps%EGl*n*7-L6hlvxDdhgH ze5L*+Kd)6j`ID2me)5~5%13`~$|Us0~2qfO`be8b^6TP-hTGn z`6p`cxG;V3$xAa&ef2v>A{##L<6q%4=jyEH>^ENj#@CQ_Kl%HH`LUlc^gTbi^H++i zzI#nmbq?lNKk$(cjF~?d{{No8Ha}H~{xhNcILZGKmy^8`bVDrh*}AB|GnpTUiiHo9GZLd-HE3A_XihZs|g*MVXMj5 zgR>!KOfT_@!DO9k`|URM^dCQ?`~O7zO~=PCU1_x1c-gPo>MqwW<0C}X<-vTlY9xH} z%lb{NdQ*M!E0Oid)y*qij-XGjj~Alx)>x@rGkFCtNfajf;=9&1rs;1C5)hx<<;Hw{ z4zEXB(Rt%Le&mTOS1?f-$LIX;T4;ZMLS<5YrfMbNi{H{aH8FkC(I}ChXt#Q`^HYwB zc8EalZMBm{MSQE6Bi2!3h-S#bE*iiM9=c~r0wpqa-#ih zYm}su_}f+)%HMfKL3+yHd9^ZJ%1-6)z33@_??q4hJFh6fr~NI_>vRY8W~aNduvqWo z!pQ2%;L2M=?O)aoWs*L7TAi!v_V>D$BGHhXdgHv_Q}6g^CV1qZJbvVi`g+$zJ2!)J zR#WAXyCiM*j~}U@=`LTcp0*lHUwp@ppciS))e&!X64uV)l7sr7-)IdGHo9pHA^qh6 z?gLo5ymF;97SmU$|A*qkTjnalAz};1*L}e8A-{$;FoYMe;hKj){#`nL1RsLLhx2gN z2R!pwHFZmxq2=+1Z7xe96#o^x{2j2qXl#l9uY^qod6mj=H9YPZV1SpD{-v zEQ=*|N3eV+#YY}nxO`{jhmFy3FQBJI$cI~x$}r*@G#7BSjGNs)`TA6|)9j-m2`GB? z&`Rlw6j1c)ox*iA19u4Qle?nCs;b_!)3LHg?#cRz{-EAzuGZ)E^*9b-kNhRo{?A=? z4e-c4IXA$q5U!a_xzLhHo2v_vCqDSl$R$Nr3Hs$!w{r#`q;1^PXsp-*=~O;H4%L6^i~ejBemk_77qDMGohM8#EU0^4 z8n{0~wXE4hp+wJ&H>;CJj(+KpqqXXhqvLpL;mnv%c`fv*25!@a%|PtoQhvQwbQAuwrYtU;j7P-RoIevvifQ#4xg3i zx#_0`V0=7ZVN2pk>xV)Ts<0*TSoVY~Y)L$>J%I{a5|7^=PlYXsr&wQeeoCrrNj$DS zslWINTM{2vUm5F$DNiL8R@R=lcppt0@YDJBsRXB5cR;7F%BF7Hj#^z|lJ%OF#N*nN z=D&%wq&>3xN!uRP89i`&@;zJ$F58}SFNQrT(mm$S`JCzl@mD_5A@au*Y^DH}#KV@K ze557uSpGU;O5uaGhmEwvF2aXV8=CJxbuH_cG(J7{%T?E5(hpS6A<}oN=N{9~SH~gJ zcdO$b)6ZAGA=1y+6sP)?#p9F*%O8bEOK@4`AzxD-h&_c!#rCi@#n@F650gK|Nd56( zp4(G*f1+y(t{2hDKy`BR$@;m=%lKq779gC}I)D7>_;wl}o%2mc<^Ff)qbKui`Vi?m zW0Mj+tGx{yP!i9iH67n$`ftJDL!;IMBPnDU}WG8CDrRTy#SYE%iHQ`5Dn3#!y) zD+_x`|7bcOdmF52ymVcAXHTeNsU{Gf^sNps=a7 z)6Y4?7mwO7KGAM0FI%0HPYxf$nbt>}YK!>z1HM{QB7giys$srNQCh$9@^%ie^+N4e zp27&#K33o>FPWSbtq9 z(-dh*_ouJobCdSSS@F5D%2K~Po#!;Cs*nOqw-0q98vD$fLCoSt`V`+D4y=XjGw0RH zj70L;p+{Jr9$C`{`{TceF9MlwZROm>eIbU#3mtMoJjTEaF3Q_+6#s(X-MikHDjkbf0bY9t)*fnr>+X-gNQRq&8ai zP|6-X3vYP@9{o$&9sTRQL3g3w=q+joa&qI%gWBx<9#HR-Z*wS`i(jL z0Vu|gT26f+D)jer&80*noSrE)8k^T%vP*q5P~|@c9yq37E#gY-Um0{K^vAhOlw5wD zKs5aZz97lh3(Ehw#~<_LEElf=Z9bqDPG27&QD6RAHeU`SGgw>~nhPuKMxRq-^(I;! zuMTJbG){Tq8(pbCwDa&kpM27vsFn~1-l+p%+CZoIFP?e##XncSw$!e#s?Rd_tL>$0 z$|%3w0*((imdy(vM$j)u@28olG&H}Q`W|AEqR9bXuC9*Dr^0?Y6t>pjdc6aG*HzpS zJXgAXg`Z;f$E$GTBaVxBjRpy{ni#8Z#Un%6QR2A`=vlJZto&Qu)rrRI{#rcnJ- z_0^>3)(U_A+xEG!bMkm$6-V&#W>=bDm;0@GG*?Nn_xf4ouhC0#Ij`kUPq{ItajDoQ zp<$aF)R$X0p0C~_n+MxjK#PFi&2Zbaj{NA|X&J47@uf!}Q;{I@PPbEEYF%s2?>|zL zQy6^j-@G@!1?yZ%Q|c?%D*y1-z!Kgh5oO~(v+MCU3+xdY;`+0zN5_r!1IV(Mjz>9v z7HS^V2)mUrh4%m7HG<1Ost>|!d~h{_vqxyi%QYe$Nf^eTpK5(T4W;z^Q}o*F1ABi8 z)haz#hJCE*v-X;Z-=0)HTd&9dQMx)kF`y56DP!%j z`OBX=wt{pnV#w&E#g`i^J)<>eqR=svrg!|vWWRyW#xGPasjCXw=et-`Z`TKng=G0S zp?-UhAF~2Sez;70 zKKnx6^5?fxPPARxU5+vS{GJ|MZ=)_uK7jJMtfDeavSyc^6=1R3LeGMuW#8u(B;qk-ztTEJv-fi(eiYc^Cixg?o;Q^S{<=l zQGD_!*XPcTV*wX!K9>BjyI7u6o_N&$p%aU*j(YSkzRIP)w{n_KKQ{s~ZH_2?!XNh7 z5b-5=1QD|KS+DvE++&R6%hkEF&Q^7~zmo`A`>d^dd2DQbJ9oB-SCD&w_&j(e5z6sO zVhh-3;Z2H5XdEN(hdNncjv@>Zp#bj?u?>e;l7j*Jig*PP2I5POq9k|)u?6sESA&SE zFJo6WE?@2TpSg_dNvbJh^+rkQ7{;D3Jh?r~`7SCm1{@R5xwBdRB>62V{=>u<1Q@id z*6&`s?#_S(^27B%rtigj_bW>sQ4egg)nkY12XnDyJ+VjL^uMl#*ax2Yis@T9;gR>H zFYbYb@g;bIWkBU96Q5h}mi3B=`G2m~4WsX?D1Lpj9@*W)gSO(U{XCq8 zzh)aG_4DZthx&86LBXXj-k)${Y9_pnzn;4??db#<)Y;9NHWIQUEIGI1`(J35bOUAA}+qY`v(QHxzrobhOT$B z(UDLG_ONZ3{08>T_$Ao@&>UxcK(qpR~7r5an$@>7PEGuffS-qsOYJiA`!ShhJPiauIUz z?Wuh1AxB@F^yN9qr9VXZbaIr7Zx7{z#$WZf*WaEmAN9AVO}zSZ+I#ckS#kLg#P zu?Iw4eh%Ru2N4(F9{iJ*_7f-a{yCAl2UlArLn~c{x%9>U$wkP;w*AKjs!0lExO4vsYZ6Gvj>IZ8rY>`6Ej-wB)dt z94W~Uk=d!cJUPO}zlZWcwO!s9DYtX!i-0jF^oOy4OMegev)VaC3(lp#C;WS`fJ=W5 z_{slhwVdP4!@W1=ZA|tRW7>1>(=g|?h_uDx@=xAg?F-x`=jDhOsXpy9;{-293|B^8 zOpliMQ&=tcQvqC$a`x=Ke#+NEUaa(cp-xgP_o{Psm>!DSA0O)B>e%{%Vb{x|t*?ysCwZ=Jgt#-?|!(SHUnSi92x`GqNG{YGaQFUc>t#zHwbNG6J2fM&9{M7+x_zJllkzLZbmI}9xq)SiPxTNaYi2TPc^$s%>nLD zuv>#beom%cP%gbp!HeTMLVW z3$2A*5-bi?SD(P$)9uD}Q{`PnR&TuBTWp{q#BDi)W>M3x2mj#JEVl7v%RTgpNd($y zYEMpf=D7;(w-0*y)va?4oYlN`p?L*Wp)=RCvV_%B??d<$w3PvWAwPOeov4)xCy#tk zSFfqJZmzWK>c*5elE1LxRvtE=fnV28$CN-mQ~VPv?RInE)%53=qo+nBg#-n9>djI0 zsZvK*peK+=KBTWIvf+bAD$0()h}JOTA-dTgcj{b1&@=92=qxIjWoU$;VF!TM-q=c{uaWrRYt*ET)PB+<>v_^gn6a- z7}@e@<})Hx`KeF5(irfUGp`rHax~(5$}}RZznt|45k5y_KI+X}j zZbd6zTOKTrW*togD8J+u6A@efl65{2qC_};iDU8Li$&i35fMI4d4%y6_pd}qi)wK( z^8WPgvxy*3ft2-UVV^(*ub>sTv976Imz<0EFvuWw&Ygw>}Q4=0Py**_Ek zb2Q>1N@fyJV)fNWy*@!=;Nyy}#w^ZMp|##vm(o@GubJtL20tU&`kcj2HQ zYo|J;g^wroaw)O$({mRV@CCItKFnsH2nxtAHkWYzDW|~8d!y&`>GX2D5P2w{rmrs# zno9*0)*jQf%jNaW=UL9M@v89^zKaz;y%R29ivevmT|K^@Xq{EZraWhW!g^;qIN7x9 zIiAG(=OT{P4wFv0@8nSm`n7vya1x)?SsqeP=f@K(0~}iPX@>LTLbKP#i5ZV#ST8x} zbxM64$Dq(=`j%Eq4~Y zX|Z|}?UlaAI9{GD@(K=*N87gtKch(PDc{eoEaBZ_9Fp^Z3)yMfDb*qjm;X3p*Tzv( zoX7Ge$mVCV{euCRuj;URCKdK%AFHQ2QjdkK{6xFi@l-8VUY!FpH>P?{0|v^6(o=2u z1imEnjMF8C%azhQ)oQlqT^-gw`jDbh^Bh0q%db)}=Lyxhz*@6Ehe3^-X0ZI{^wnDu zwl-_8#)r{}EgUMpIvuR}8C!E&CHb#BhELdBZuSe>LHpD#?*$F*Haa%-z??X4; zf29tFB2$-y4@}6u<6wBiJFyuv#1d& zudq)yPem;@o#MP!v>H`Z%Q7Oy%3BzpGyj(3bJRu|pJ!eyN9j?Hi#6EJ6xJQ&K>e!~ zF-mKoozVE4d9xg#qZZePY<+Z=&_vK2jku^x+Z!yO+4_nMoM$;EMu}woRaj>d!76CQ z_FEXAQ*q<~9ksX!S$xiVqzIa$5f_!9zGdsCB5;{_Tx6`j(sgPPoK!k4nm~V6SVtG( zDrk)?zTCRA2whGmHnw1YR#=Z0AuMRc#>m#U;`+Y`U{NhDLKa_spF)H#uM`(suzdRV zQ-m1RSB$SV{Tnd{JqBa_H|_4vilF6m;(IU9KV`Hi}R zE`@^emRdS5oWBsE^lHZSq5v<>BjwMFh|qfUVq#^>tM|N>6k+J3R=lzs>@TwYa1qE% zJf`;o?Pu;>fCyAhCoVEm2ifvzY)#MS4S_G!8EJghc?%IXOFky95`U>J84(=gUUvs4 zM$5tCN%p5jXcFO=o++tMiHTwl*$VM+vHnr}fa(ndk$)25csP;~M-Y#5o=ObN(Ta^Q zh>y+}h>;b}BOH7S5yVqCCniQ#(2VUjQTep2R!2+rg4R8fGGhMBpNkU%%qzz8X0W_w z=l8_OGL?9klCr5Ni%*{y6v4`!EIjx!D8iGRPt49uiog}s;`)vCS9Ww#hRYnpb&hw& z@Enha&bbbYtDrWb{>q(O6*(=Z6Bn7Ob*28x*(}28RJyDHj5OZty)+TTOgt_s)_>E< zdvG#1iF8~vf&MIcPfr9V5sr-}fX8}|Pz1@6kBN#eZ*%E;nle0@{7B-l-rE%6vE)Y* zkN|3 zRfiu~Z{&Ez5fNV14tvPb^02(H#ZM zLA?6@6*0oxZ7m01_mmfdc+}9#>}iWZWh$fKtpGmv{u>cKS7pTU<=@8_Azlsbx-y29a~G8Pe*@`Ir)mO`!VoPe{ur1&2*QB*Q<5gjlR9kYZ)0z z@2Riml|p)02D866tn;OKZ3y3Qp6_-pwU$>J?Md^&Pqjv1f2f%X3Y))qeO&~YNJ2Q$ zc+!HGtyWlBSZ)UuEU$K;e5L8@f=roF0!D;~9Hbq?7!`^~mB6W$*1TQVMe^>90xJ3+ zn}6y(m&YbgtXyu*O*EfvHTxI4R<`ry$LPIdr7`bQE7LpIz1nmVDzQ(^Cx($9@6S2n zW%k&R1NoKSCuPu^Tb76y-XmnB3r^zk>vl}9dZ;fv=M81`rg7h4vv`pkE3Z;W=Q8$2%lGvwDYby5AF z)%UgQfye^!bXR&jcvcU+QQoehS6`2R~=`=L_n6T9)l`hX|=x zGjqkkW6WxEpg!lVPRsA|o+W-*gvJ^ z**{($4zxdxxX4YdF88;8d_OFH-FUNegm`Tli$9&0h>)hzv3**OM-4%S!{iQH;`u6A zU(I|&1S~(1iHV5yS2lkd0#kfX@py9UR5DaKrP#GAF#a*;i_`h*5b#o+_~-)oXr3*? zRhW~YrF*ryl|En9xGRn1|&8dzUG_;C%3FI&$Rc`Xx<=c{0OboYxzm|T^(xO8O;)wjYv zx(H%HD>h2DJW|I-`z0c9u1aiV#)Cq9YTUdBjH5hX*ZbvW|5}91ELh|>ybrpCWc`(_ zr>On)A@JlkIe#()Ku0eoLKa{C zJedewUMVKBlJ-8`kTm=8B6vBS_~-)lFB=~ZxsT~njE9shpV}94uf;=M)FmI_2@NH#VWmSUi)>D~*-*pgM;;O!0+bd<}ECS`FZT z0$-Bvt7Dz60vrED9iuDE=5KmFk+jsOFZ~ht)AP#){i#(%uJlBH@Z&6nMg8;RM|P1v zMToq&5+zfV z!sW@1LgWKmA#Z04PZ*H?{6T%O&6OQ#b2MTjWO3mt*u`#t88u;P3GKQmU4eF^w%F}7 z2d%kU-%(-X*I(FkM8oAs-I0A>z5C)C#KxcAi9o~F>#icJccwG&X|VDW-EOX+T-okLPvq~$H3|@z2@aQm(@ePOUm1Y6~{sr|Akurq#mX?#hJmAjw2E+HIPVn zr$Vsl?G@JrpOt}fbYWSIy;4xDJtvHeEgLMKB%k+6S^W71!!Ms2oHA8qjP=j22QN^& zB9 za!h%R*timpvHnUb2>OL`bZkFz;AN4;V|pDCltKq};3yLBaODsAof|KSfaP>Xp$xMA z(&I9WvqZoW;rNJHJl1$v1j&+*iHgOevRut0L|_u(m`F^WV)3x^2oXS5J2qk#udXtB z-Xj8-iN{66;wj8iMX(B5anS|Z`*cJkJ__Mz#Kx8MXsrL#d`;xC+{7+o->fk4c!UR5 z+SBU>sZF!rLtfg|Dj-{VK->PwCO@?xW1 zzl=Stg=Y2AT>aWoyT01TT>$-Rd+A!WdI@5K`f_Wj*KXE(-TC?ww#!=T=gW=d)?D4J zn^o&GPeO39(XS8sjTY8h>oe8m!MxUQwA+{Wa zQ#YjIlPUakTAXbVj) zzL+(@*FW#E{qOeFmTjY5J%2vm6r4|ioF_J^fn54~s(*X1z?c4<+7(IG+pzD4jdd*^^vYwJsw^!zm~+rz@}@jZ!o&ba8_SWNYy@^Upc6! z_dkc!<7fEZh}iUtGtS}kt%@r@_!be zHC`1#wB$z#C5unFWcdBOk!VvA-zm!CW5@3zZ?f8>Nk(Ej3a zEH;~i6OFbyaKEg0_10CO-c2i+Q{Dbj11HTh4K{wvt1_uTyeFFNwu*M8-4MxZJ0@Fr zr$8SrPfTa+s5Lrjtt^{#H}-%%XPXO+ zx$6ZjK7Qc6)M&Tn^@~esGOT>|h3~8og#4=V|6HTL(CRFwkq71R*23Tky(Didu=bFD zS9*5rf&4kGH^NSJyK3t%gTTf=t%^F{1sV8Cb08g3Y0h70bg&Vfq{OCkrqf#)sKQ~R z4#clSXBvaK#WZSF4ft`Zd4)fHsioAOC)&*?E!uV&JmuoAR+pXorGlS+*s>I?w zfq6pTZPSAGpIPX1v72$S-^admVtoLw-tfQ&B&7ChKdbLkFZ8=Bo%!U|^$SFfYt%fxOm<^6lH+k5nAmNBdyXK;L=7%d;~NtsWq2ZVdFP~uzqF9 zZu3Y7SrT4L%UlK0_{GBtLtMe_lFJt3J|IyShi96MR z&)+kh`Q|l&-;kqr%fP0u%WQPyA1dXET|qY=wnEFM+o zv-KzuAXg<8BHLR5f2HeZB50{}Y*ehjRDVP3dm==Zd`wI{9&7zk2FOx~hls~x*1uPJ zGBAmBJS3(bv3TtDTM;B%As#9g53ScE>&qfYIh}Z@vNn&!=dOc`;JGTJfG*IUXY2MN zY?*jmT&%y+eFYJmR5~u2fPdV54;d)EM4aC$i8=ZU;7j*uM9@;{k@c6mk0b)+s>DWC z(tpvumk3yHk1S>hWZMgSUrq$dR*2^-7EiiwC<2p8$3s$5-t<_Zu&*fs=U0u5v;;5K z@w>9C+q7gXG;I0H_K8J4%EV(KDe;HBk1IlCE5yUZ`p1|z1d@0djAu&xWABHHP}vIc zu(AHp=O9EtoD&lV-M6y#>sD!qLT1Uw^G0BNnw>WhIVBU1i6(%@IS(U(e~#g;ec ze2WN=qcL)Luo#@3zY*baG)4}OJ|85);hZEIrS?pEw@`M#>7cC-)OT8I6M2ASW0fIM zf3Mcx<$L_8bZks)`=vI2a9&$h#uDM!XaeOe-657C%EaShV*O)p4vQ+0tq>2B508Dn zjD1p2a>I zy$hu7F)eth+siGEzM;|FEx13gz1-rIUVeG}$V;}7e^FW-u0B(HGfcJKU)g0^9L_%9 zn-Jph%`!eXgj?ob9^LHc>cp2vH)R*?zTDPaD%=Rm)#qUv8uwacJ$`t(Mym^u_tyfy zJbHL}^iY0#c&a%_?Hgtnfaw!8Q6|8>oE-*_gpl4mRWh=1hxc642Dy)2RZ&b46 zLldK*JbiC*IlYY{V88E%p46&Z>L&XZ2W2oGdmw|X_yRS z_0p5%t_myf9>R2$LU^X_!)s^}&Jwb@?R9lW@?Q+iZwOpl;UFpd;CmFt;xQEJI zrBFI_W-G72;z>^sxf-l|S|07(;>xe*_RwJY_1te8l*jwE$pI8|A8=ZuSo_oae~qYL zF1;5Z`GlJFy-%xo zR?Pl*ui%DT%5zWL!F){a(2?f*i7Qv_Hpy=fY_X3gT5+@T_@-&s9M`bW2Fh14|E*L4 zdKbE@b^@$DrhS}NUE-xy)6og$r#?qAjSnCT%Y&+46Ak++78N~T9@N1O+{0vJ2+F7V zl-JP7@ag3GN70s3PA5t6;CG=7wqU+w{kRBPCLR|RTV8YH3=ycDPF!RqrVkBuhRfDjtvhvIoYKGEh0Cn8-@XUpDR)AHJFsCzXzih8vgV=ZEE(@*1&lvHr=eZPhs6#1goGG7aiAsq3yQTA4SM4`Iwkkf9>UaJbINd=4wU2KW1%A zHmxGrn0`t6VAem*evPQaIU2FBv3PRpUn$DsbJp`k=p2n$*jPNt5|OM% zrP8r*BtByCq%)+m>gL|;xC(!RuA>nP7mG*j?}%X78$k!(cJuZNyd5&Fy9m2xcn7NNMAaay-Ug6+tPpJOut-JJmga`|BrXmKeq!(iSlbz#`K~vWyImbTYpknc;xhBq; zh`^9+%z9JmA36sk!jn5Q6UQ^s_D+N-ZRKM5h%INjMNkDOu}p%y@HvOTI)vNqIETKF z6l>RsD;HL*Gg+)$+M)^V$JVj=rcpzGF0e5e;N`7Mw>%ve0V}VL3@+;f+UEb&P`5I8!FGadLTlW>wwducaYw5 zF|z(M^;L$-soL?dD4(%-bd6CbNkx!S>DZ-^#p7-FMA*EVv2e2ZQV+iU3R?PTIjfCz@HA}C%XOlW?y|s(>9;aH?^Eg=hF2@uN|#G z|EiE!WuLW2)oY2IsehJaN&VBe1~%vOb&$0qt4~hOu=43{og>cVWAXj7BpccIji21e zL-isL)MO8156VG?*U3}Xo)oXz&&ox^%)J#4?Kr=p>X z(@`Jz;GfMWT|Yzs+-~^55oEql9E-;uzldPj3aR%G936|twC^G$xuMvBW3WBM;z`GU zB1oxpJkJvyVtiROwO9aUopdNT#V(nM`aXPLQ z0dX{9`z2{3SbWJiTm&r+Mp*$Wn z?~>thW@w{|rBL1=)}CX$H{E)+DFUXtC?y;p5$i8&9a#j)l8=ds z#iO$Pd}B%OA0-?UNlAHQ*V9GbVzpx<4*GA8?@!XQT$Emn#Z%bN5c#d3HM0In*Q-Ui zQt6S!W2S&2Fh(>sl9Kkr>{p2JnXuIN7(kWw%MZ8Bi4Sk7^L^IWKBXM9or`?9_-(Vkl6c^ z5j?`$pZWuvoFX8$LOibo@eBjS-rJ4fm(u#4X7`ZZ$u^avpkn=__Pa&p%-I+}a15;d z**?4oMJ67vuBbA`;>pG*XF6B9)j{Jjj$Bkr$hM?H8o#@n{DcDrBIO_N~dP1HzbWvOE)V6un7 zot-z+xk}pR+?oALnmiK^1{67Hteti~TXwSY?$>xzLs)sd;*xzIH%ow(Ps?8>tFp{5 zUpT*2Zcp|Gek#kyuLfpIZQ}+U&9gN8_CVfxVbl_5?1%hCRe_7egpJ>lw<}#(KC|2} zXDpT5t6NFc{)pOCZE~uT*mB@q1l2r4{P~dhgW5|ux?BT$@Yq;9b~_}(V=Kh-RSBLU zki^4a7dRG=-TsPD*$VNnv3PX#6rcEH)lL0!sBR+93E%9C&J@sj2xbHJSxJHO2@*H^f_#KGfkUp zN>8$}u_#O|9=kh~p>i~0VPo;6C1{W9`!t9jnf^4LZ;9$pDjmx&rS->}4~h_3@-Z>7 z}9ir{48G0_Ct13lR^^Jx(vOFkwd)<2egvgXZJh=(YQNA8(e2w3~kCpK|PW?8*- zsjd&X-0eOST7NZfbyjrQCy@{`Rgtxj`ZpR%$tfQ?`Em;FwoonBYzf@1abB_<~txJunoVC5D5 zY24qaZmp5ng%8{4lYEwJFrQ{pzjp`Cxk0XY@%fv5YbIw|nLk%LI+dw@cco_|D$&c* zd*brbFf^yi=AW(y%Q@*lxk<{kDyKy?K0mDT<5A=F3gyVvW^rZZ$WdVBPucnIsF;kW z|NHf`{Q)-?vqRwi<`z7Ed{`gI`!i<}tCx;bU6=ah3+wc*alq`?gMDc_`u%3P9?l3q zqd!RKs<7#pS-}j|!h$BNm!u=jw_-YuCYw%TnVa2AzNMH`rs|ZgKz>{Oo2ZwzJnMf{`tcX1prGRT$bv^cjoC8V`v;S@JPG#o{T9 z(?qBWS~0PyGRWe~#*-ponRr}8EFM+)Y2G9PWXZ=w#NwfOod`>D4j8S4VDV%Fgk;_+ zf>u8(J0%H}tiAIqRMFV|Ksw_D4L?uu=4IH*i?g+$2tr) z*3Cg0yb4F=C(R>cSGGTCYZu>N%Hk_YzmPI3Z_2l^+R|d>-BYxwL9D!cO0`^G-zt?E z!p56?9~>JrX`~^)>q#K3JX;EE{90bUp3)fDNwD(pxNQh4r{kS$;dXO<6vi?|ml0O4 z*666~b7bWS`*(IZ6txMqLYmNlk0n_A#=Ier#KVwQ_E34W>zxRdtq>0z>z`rYUrCDc zftN7bJF zveq!r-eY_%LS>J`BVY;pCmr{TpfFQ~2&gg-vG~;dM1;zj$Q(EppZ&*=%++z2Y#kJ~y1 znADNzqmPkz2kX;It!vHsqEPj*D*m%|5qdLz)Tt#o&e_`-beCEpvn}J0z~i|DxcFB( z{v7Ey8~EH-yd2@|rTh??9m)}3{MI^*x^2ptg0u4Wbj{LY<o6Y#_{nJg>! z#LA$J7enkd3{|#R`C4P4Io%vQ*>g2md5p>$c!wmj#FSiC{#>)a&{UUwxf-mzz88#+ zdb%d*gjl`Feq&XgLy`K6^Y=8)xAx%?%XdM4DE!GS zDOMt^UCMvw8vTV<$0~Ipf8))Z!4tYEvlW8zqkQ1q7t5MJ{HJw;ajJ_`Quaz68^7-K zvJY>#sRYs?mFE0~Mh6YJV_c}bpXu~g1}c+n^nrAg=uBfUx9BFp;xX+2tb^MJ*IlKM zUD;0TnL%?&u6Jgk)9p9sPxkv=QGV;!9&0#C?IywE!8)8>by+!#!)yasx#Tks^xe{= zab@Mxk7Xs2x*6c>oBbs!ONEW!`qYyp&d0CwPhZlMeYez7WYbair(0R>m&^7Al(gxG zBzjo?&Fs?m-HGdi)+;tRe*4TibNXJVl?W@Z>vsm6l}om$a&0~Buyd>vwWp-ultTS3*({T;~Wl6B|S^RXQ(gnoo zWhYh~1y(*CKZ+({sdS3qz-MA5^+u0xMOfUCa3mZCO`v?H<8TqCRC;9nW6cvph%EV- znArM5^B579{G2CZnPc&!^DGgfR63?_g6+FI4-|oNRbnG6Y42$MDFT+C+m2%SOXt(W zAhKrPkub6KN!9smzAppisEl~|OV=et&{FBxs91lg%1_f65h6=ICMFh-wXP$=W66&u z9&6o62FOx~hbZVDy)GsLV^&$MRkTrS@9cFu5hPn-1pSj+R}?|Y>BK{o%q{}+3wQlf z1kY6&1#|&?**dKVTP7YC7u#N_{zk7Oi{PZvanS_)oe7qhT59;qcP8J}nC zIBGp!gwIup?YRDq9E-=^w-Uj!72=gL7LVCi6CufM!A12DiznUp6G2L)<9Vi}{wMpAA~=a~ zY&3!TlkHE^zNrXUK`S;ww*0C6T@fT_Bly7U5^H~!(|i41QL=A!;F#S-nvaHx;@-gcWi$~ABMM$({Obnv(mhDfAKxN`_k@5aX&*X{lc#dZr zc->KcD#f$6`zNEdbu1p$9%T29i+tpUG8onr9~@#;qI2u_r8SBl3v_akzaB_GpM ztbYpUl0>KqS~0PO+Y9ynP~rTP2&C??3aYV@ni9(TGdu4k!kCH2#l_-Ljon`F*NoQM z2l}tQ+^-oCM`?SQ4S@LjNdbk0eNT<2)S^;%Lo1NANQ z-+u1bjPAuy`-nF-WOpQ?Emg9k;4>DF^FEfSJUSYqfGt?x((}S1Y^ii?T&%xR3-$L) zl6u0=-)fBk%3udY(SALJmrs`Ca|*0IxZ$kbY;+2{mDE(QdTM!3f6yp}pf!T>ry5JG zw)?ISD~~mwL2Itj9&fi6Iw~>0g{=OQ9lXzJ-VpS?qQvTHT=)tU-g&i=1?Ba}sch*$ z`+CNYgpEJBaNxp<^D-VQf1%bt*|y)nF^=@hr|;pAmVOh*8-rgT@5x|SD{CMFxarJ^ zlc_L`jaQxXa!snZX`IVm3z}L5|qR!gooSSI5N+G+l@rOE(;G`9_PcLJu_x)TI z-ahzKw=KA_%&IP|{6x2p1||0vR-k;T{372B^&YKie=G>BJ*s_|$eB$|OH$=xz;1nO zOLJatR$E%E9oc@0T`c%|r`rK5Vq;D~p4Ma4`lY4D+GDLBS>k;Bg_RjwE09mwLV%;d z+U3jw9F>4S()Ky0ZQhu4zwc&M%8-Av`enxVIaB=h7rxh)Cgzt%zkqkOpK;!dHjZZH zjWy$)xkdZ+S}GkOKP+}TxT0bX{iA4v=<81-temp>V0vE>lw3z00Y&N_zJ96kfe4K= zkT`HGtUqYnB7%?~;~Y2&fj`o5l?YKPoi^@~FtPqg#(g3T&;&Cyt z{;|i+B1E=AJWMQ}+_+u@DW?+;m7smd<{u(xnRr}OtiN*eBN3>aPF!ThXDq&C9w!2p z2**dn;<4tLB1o2eOjJA``(*&kgJqy{N->d@l)r2~q37!&csZT;=mPz5wyq$8mWjtj z#g|8W-9rRP)v)49Nu+UL(u1-1l64vpv_v?ruM{R0kIMaQ9Z7`BRf&%+h)=I~iD0=a zW20LB^tzl3kF$a|s(7sZClM-3K4!^d>yy1dCIVzD#6!g5q4ix6l>Az7#4^X?an_$j zs2q)W9!h#9Ls@*;dbtQ(CLR|Vizl~#ECQ9&iHoenUwS{d^{ng;=tMX^BGzBl{yV_A^@kGW*dYEV-@gC^(W)23!7;Gb(z&Tn5X#!yXk~U_NZ`?~CBs z3h`#ySZ0}-mCT0Cs3OtSc_a}pw8mV8V^EFSkHh6s|Y5))O@dIbEHt#Pbr1$2lJ@0_14KLuBd}i%Yj_8}^Tik3)4Xi_7nZG4jDh;C7KiKVZ6fz@78|dUPcttg~pmJy)*UXI5FcWUJGPQ+bG$H`QW@^PL#j_Pbb`w=yRbzkRKgWfN7f>UY*~A>+PI}Soz6oPQv%A!4t~#1*I@6MRx9kdq>`-63oF3q_TTb$PJ{H>*S$ErOE>$3_!qA80&K>x%%T(yw__ z{}k7WM97M2aWS&^u%0CXWUqTgXc>6>ll3zhibOiDHv;3&;=+vV6%vnLOpL6*unsBm zl)YX#Qsr%^xpi@;BLbG-cr#nS6}cr7k6F3`^@rA%MPTx4(UE);^bf6ni}2*v%104T zx;`&LluE}fZGrMeD*z%i`Mriw^bhTCi16h1LPil!I>W@KiU^dg5Unt6b=k6Q z7Gu}4${2n8)DaHZmF#5a6#VwA;ylRZZugl?*e{2Bea2S?UA*IlI|(!4kR9nb)DdTJ zB7Tihb;Lq>9shK*-JBZ?bv}U+}<|Cc|2*4{!;bEBOEFZX?HSY?~|Dyq16tQKh+M4`cbFBK5z`IzpeTsf?>(0rSHJe z1pJZqUm`TAbWAMadatj-NP08X(8!8gs9zo>e`VtUk;5|axE^EcQ{pKRnnXA*mSFkI z#ycWJnRr}Gtbfw+mONYRW0=&$PtJJei5dMaJS$Q;KD^ek1Z(DjfxlWIX7+ggW1Etg2M@Rt8NbLBF4HpZrkrz%@zG&CT-`qLT7`p_#nP2~VNz3N;&|0gPN`KbMN0e`LA>I@#6WYl=S*1F4B zHoe+Z-|F$Gv*{WCoM^Z3c?@egUTp8hextK|rQ2WfB#JC#)4hoA7pgCF%&Rv{=ReF`Q~2JpJ=ywDvmwrQ~Cj2*6x#6u3!r!pjlFGr<&cR z=AfT^ok{HHseX5*SK{oDzfnIMs(j*`zR6CQowgq@>I1Ij>n*AeM41Z56;Y}F(Dh3B z_=&6d#8l(D$$EbbZ2IHv-eLmfmsulnAX-&#%&$t>-#jg?v}}4PPud?(tPGZ$1Kt~)y@~#X zX0P3t3%HZPo9LhEphPY2U4No=wt2PL4gpY^j(`4qOzcR?<*C-S=6oG3^Rk@1oIcd+DS*yk2_ipK`KSJ&ZTiR|RYj`q?)nvy3v?%%lsyK5^v= zW=7-vL3-_uH(`H%LtoEhJRN&kx|cB6>GoMgHoXbeAr?(!<;{Fsw0Pj3n#WnjXYov$ zd9w%*$>wt_1|k*@&4WdFm^t%^;j!oELRhxSD0nN--{;p6LxUv_jz)Y>8HB9AoOMnSK1XBZ@ww}0b)_79zL>t=MQ;e|q*+L>+QSBm&N3Zva@OW2-M-ET2e=dTQ2#;`i)BUWoIV?g}REv*M z)IV#(oqc^dUPtYvgx7O^K#tm@93MN|-e~{Y=SJi}ZLQb{!}y$Y3UYvsT5N=NZ4LDw z_7NHpRHrc;6_l($C(`pZGH|K*s30?bWbx@y%8AA7JdX%wK`S=eFg~YZ$pJcQu@MUE zqjSDW1l7?P6_l($vvX@AaGCh1AS^K&9x1+9_Ampk7lLYLEt zjZKwE)_;Zbha!Xpt=Je@e8uyTB7jA;*a(IFL;gIc2yI>|K33MB)9Qn2dUzr@MVjRq z8z1)T=G8krC9$#kHQc<^>~~7k`TA$h&te&R(7>U`&t`Yl6TEad5N|2^s@TSS(nQgR?mDxn^k4?OvN8wZ+h;+ z!ev&C$2T2R3+OF2dQJBDC$FcD);9Ek_uwmCeEu{Bi-LDcSpDhlmBGpRh2}DIa9kAz z{A2Z#;}6&X2)&xZ>R-fbgMp-Zz2yD9fO5!g)j$MP*>sH#8ffPunQkQyr907XcEYc$ zsO;wRJ2`KEu7zf<Hrj#H_$B)0e7!m!Uu*W~ z&>CR_aRlwgasaPc;y;zXbIx9$ zwVJ`(hj=};Xb5YE>Uo%V9F+yE-uV2}xB=~Sqch)bvb`Rs-%>C8)YV&E`B>(>zZPGv zX6;fX`ebLmtcI}q`XaM)jX}S4EmYZAeN~nMimV>m@?KLXUUXi_52_qY_ZoBAt&>ih z#HKgiSxB$av@}?Gs+o-i{|h0!9=+$SU)f_44dF}P6E8_$l~wgmW=DBsY&;srUiI-_ zjvkt%hd&Fx_NNQI;zql-*7^0l@5cW*Gt31aO&jkllr?N%qb1K3V9=>qSm`%8 zO;%4g-<*~z+2&tB-+Ax+RKKyr8iAaH0=S9#m@limfYP9*s<8#*?WFTFgQ9#P# z*9a6M^+=#z$IGepTy^;fQ?~jR>trZ&a`<#H@c|cX2;Jinypb zDwtWk*}A3(WF|f;$V$p@Zv9mRGN&^NNLl|GThslgA@HR-BaP2m{}y4h4# z#`sT-gGKN%@liq-z?ZBOi_j&)@v*V>Ex+8u;H#XMrct)QSP^jJgIuT&$X5YcjC|Upd_F+U=eTt*t*^=>%vu`8<>S&A#Lf)V0 z{+0-wUODw{haG$wP5S;|{Z#vK&OW#ZWInaXHj4Ej^`5MpFXI6kHz9`?M8 z7$h4*eB>qL165w>oQD`Kb1q~g+aG;2M1;(Hh$I#!w!9|iRFZkIpd-i?g8i67gs5oRi3@Ih|2JDyyG+bm~h9Z+0$T z)&t|Y^!&aI9(UURpj#idd?xQ(h~Ol`@qNYOvEDloL9*oIqmq=rxy9xZ&PU=E85zDz z{w0CWdLKuG&ys&h;Paoa6+!i@js|MJK3eB_MJPiDfDgLW6x2uGxnmJdpW+Y>r=o_xp7exE=HSNuLgyxt>FKlAS|=vNm+$i14Q;&HY-=dISw&E7$0 z>Z5|(v{>c%(>^47*9QpWF<6{l>_v+nF zQ91R!1RAHU58_GRI~9RSrDJ=EFOSK4wDQVkYsAK7T9ZI~Y2LOKIm?KS1|rs9#z?WV zGV#&CRqn6cJ#8}2<&@%MW&Nke77IlK{6wMF)T7mS?$@CUmbIy8{ClVH) zo{}*jVKA$A0=FFDjefK(%|ZV<`=&jsuTJZ$I}KFL7{*?G-WGinbF&nio_a$d>%R*r zvU)1LQ>|uuzM!J32CH|WxvFBgbA?;wfxAlF8f_3VFa%dXNbKR@Wi(OC3JZ^nI#CU(stHzgmlioX4 z8uJs)XIss_U%gCUdDyF2V(*ES%dNRk!o0q2a&>O2Hx4{m74~ydUl~O0(+T7g^kCf5Pjkq*;CH zSHju>eP90)h>W!(>t_Pm0XwE~|KVQl6GhX;d{#W{cgpuxw=<2KC5QGG>9IwQ%_m(> z_EFBVd=5s!rtg&Z0&KpVDLsYO`)*ReuS##CJAXZBtw6tMYQVqxUZdrnxy>lcF;5)+ zd|F+e^xP$>6Quw7^>E*fIsc2w8l(eM#pFB7CmOO8}o|d?g0z(H#ZEL4UgQ4KY+#Z4^*a zXHiyu6T^pk+0s^uk2UB|8lQ_D$;<=dwXP-Yk2U`o7UQV&B0>M9>lI>jsYd*gY3g7Q zpJ)CjM(WWW1A;MTx z8x5REkI$CZ{CbTDZC)upRu*4yJxK&M7(;yICH;xd`aQ!Q6|{l&DO+7h*ZqWWyDPm> zY^h58OY4*(jLe$mLHC^s5nErg^-~d~Onh|8W)PpdZzjU%s*DCs)_;ZlJrTr$R&10k zK6jm71kP27jjW_Sag7zPLKf9V1E)b7Xm9NOT#+|zh0(#tmRDo0n*Uzx4uQ`oykzj{ zef1&WdH3OC^n=3kY486J0n=6+9bX3fM^j#%a|c5JcJxLGF{a|L32sm4nJ zpL_m64ANB_6{Ldlstg|rWqfRG`P6Nr2#l7DkEFyuG;t8#){{!d#>M)FmPSP$BH7qj zg5$BQn-W3F#76;@zu&&xn6Ee5?d}{*oUc}O0rmN_-CbzS)tmjk{@S{c^vX3m3xh>h z&?nbj8PvO1>i8Iy{&=g7&?i^NbtJ8&UKJKL^hY`qBTZFe?LB_va$^}5U%{t6FRxsw z)@PnPeq;`3Ve5l_qcvE@4+e1wZYXu|+dDj)8H^A3Rt5a4Ao_v3Dskyw2 zi!hh#$VPPnQ)RnXuG?u|w}s#lpWL9e)Xa(bQlDX5Qc_5gEDOcoTcP;79+&Sw{@zMwP9<>U=y+BF{r1$)CBg!`6VW3_k0#Pt z1@p(RJ^CQBlPL!}{s)nrO#DgxoMH;YRIYwfjWOBdWRgFBRQ$?(6~C`AJb?I(*V3x& zw>#0sm{AqpKZ+3>_ ze-PQp#GjNi>c{;3fNF=SXQ`%wfqZ-*J!mL?l_9E!_SH~n4;_f#l&{HQ%2%2#Og`&+ zk;c1+^0n^)i63v;Uhg+My|~q&rQYgX>H5bZm-INc-)~&6cbcp9wjPBhjkM3+dcD)_ z)cb=$tKPl*bQ7Iwc>Js4S2ncfGeKXxO0IcruGt&lEtE_&>r7wfUh+Ax_Hd>0J$Tl> zzE{}-y^m+(WWQ4RluG4`@TlL9g1(dZS6OX{6%YF1&!|*Bs(8@9eVBAV6S{b` z&7k*)-vvGVS?2dK&?(|;psU2Mf!-p16Z9_eJD`U?+vq+FdW`rg=mPOQ(3`|>fZic~ z8}vT$mCvbEUXMrT8|V!2v!FMKUkANS{1)gv;&(w0e=gY%Iz@a9bd~ru&|AcBg5D*5 z2lUYAk^P{@h_8Y!5Z?p6N&E)r9pbk^?-O77eAtgi+YdTJ{4D4V;@3fM6Tby|kN92C z!((JW=oIla&{g8sKyMMh33`|K9neFsA^Sm(5nlyeAif8BllTqLJH&5;-Y35D1+X8F zwjXqc_*u{!#IJ+iCVmU_9`U=Nhrf{Q2c06m2D(c88t5(JH$m?bzXN*c2-y#MjQA?( z0`Wc2o5XK`-XVS)^gi*G*TQ~0+J4X(;%7l`5Wfz3oA@ozd&KX89)2C!4?0DB4Rn?G zHPBncZ-U+>eh2i>>&br5W5icM7l`kH-Xwkl^bYacp!bQdJOcaiX!}8Dh@S<$LHs)C zZQ{2;?-9QXdiV`wKj;+kHPBV!*FbL(zX^Jm_#MzgUqtqU9wWXAx<679z6QEV{2J&j;x|F>62Aj_ z=u60c&|}0`K^KVcf!-v31N08@+o1P}ue=HNO_BgWe{73-liGyP${PLiU4B5nlscC4LR` z7V(>)cZuHtJ@lnyKj<;ytDp7-qL2nSh4tksT zEzoS=q=(mLGKd31A6Ey z$bQgc#8*KVi0^^kBz^<*4)NQd_ld83CG5we?FXG9eirlw@#~dUPWFQyBfbi{KztAMCh;4fcZlBxy-$3l3j6VB`$1=j zp9Q@^{5t4u;S=q=(mLGKd31A1tJ><2wYd=+$o_#Ws@ z;x|C=5Wfw2pZLlN*pEls4?08qEa(m5*FkR+zXf`a_+8M$lVm^W6!A6CRpQq`ZxO!< zdYAYe&_gH5e$ZpYS3wtu?}6SVegpIl@!O#HiLac3{dlzfpfkkJg5Ds09rQNwTcG!d z-vvE9MfQVE5nlscC4LR`7V(>)cZuHtJ#?Dv2R%l76?B349_UTtH$d+YzYThy_{tgB zk4M`NIz#*{=ndl6L2nbk1$vM8UC_gCBl|(8h_8XJ62As|i}+2@yTtE+9(p_34|O_BgWe{73-liGyP${9k^P`k#MeMq ziC+V~Mf@h{UE+5@51l9bL5~q%1zjM%2YQqE4bVHpZ-d?^zVZa@$D{2Bogsb}^akLGKe^c?$O9(e{JR z5I+lggZOpO+r)2y-Xne&^zc`c{h(9C*FaZ^Ujw~G{3hsK;&(s~y_4(*Jw|*Lbb%=$$ro&;%lI*#IJ$gB7PI}F7Z2{hi1us&|}0`K^KVcf!-v31N08@+o1P} zuQXsk9&JD94Dqv|H;7*cy-oZU=sn_hK@VRh`$4COuYs--zXp1X_)XBe#P5I}nj`x` zj}c!5T_C;(dXxAK&^yF$gWe~;G7tOlX!}8Dh@S<$LHs)CZQ{2;?-9QXdbmmUgH91& z16?J44fGcAo1k}z-vK>zh3p4CMtl`?f%qQiP2x8|?-0KYdY|~p0_?}5?FXG9eirlw z@#~)cZuHtJ=7)pL5~q%1zjM%2YQqE4bVHpZ-d?^zS4vJc(nbX zGsMq=-XMM*^fvKZp!bO11wH(=WIyN>@iov@;@3cL5x)s~m-rpfLw&Lz^ce9~&;{aq zpf`!%0KG%}Ht2ogE6cDSkG3ClhWJ^~8^o`J-X?wv^d9lMpoa%!Kj;+kHPBV!*FbL( zzX^Jm_#MzgD`Y?DG2*MB3&i(8ZxX)&dWZOJ(EG$!uEKsi+J4X(;%7l`5Wfz3oA@oz zd&KX89$qE;L8pkXfvyt226~J5P0+ieAbuV6Ht}1a_lVyGJ^b}#Kj;+k zHPBV!*FbL(zX^Jm_#Mzg?O_BgWe{73-liG zyP${vG1(6~MSKl(mH0K#Tf}dI-X(qq^w15mAM_aURnP_Ed!RRo-vGTs{5I%);w$fk z{dlzfpfkkJg5Ds09rQNwTcG!d-vvGVEo49F6!A6CRpQq`ZxO!S=q=(mLGKd31A6G&$$rpd#8*KVi0^^kBz^<*4)NQd_ld832kghA?FXG9eirlw z@#~d!C;LH<5nlyeAif8BllTqL zJH&5;-Y35DPhdYDZ9nJ?@w1>eh+hZ2P5c(qvk4}TZg4?0DB4Rn?GHPBncZ-U+> zeh2i>ca!~~$B3_jE)d@Xy-EBA=%w$eR6cg?YGn;{^?NIoN3MbgUHv}ncPk!ra1;C5 ziU(bN4*S}Q2VMPs>}x9?boB=+l~=EV2Oaz%&WI`=bnru!$~DD<4t}^&d0z3LgCD6> zUQj&f;72Q!>Hs|G>PDsVkg^AK@MD$ATNMvFcz>m`sCdxT4^%48DIRq7$19Z&DIRq2 z6R`g}c+kO5!hXer4sOAI#e)u>hy98NUHvK8uXxbapRQDT$_CKYe+n$mf(IS^46rC3 zboGA#7R7_E{w%O49(48RfJO13tDCU@>%fDq{ygkgJm~5#z<$Mp4*o~juXxbGFaCcl z-Fdj(XhFyEx9uqz_M%{LK?+uifHGn=xS&z1!42a^aF03?+@n@9Doa>2!)nxO00pCt z1Qj&uKyX2W4g^`_8U&F52Quto&9M7@)88NO^Z7pa>AB~ZbI!eU+n$+WziqtqeBQTU zH(>Sxo)`OZywq`BkD&3=3%M@anEfr+Wg9R39oJ#`rm?4P-=N6~ocU$`#YcJ{C8 zzjE8N7^p+c)Hycl7AN(L&VOh>dTJjNb&8d`#z8&erZ)e{e$KuhBXx|0y2MW1C z{V(muKpkSH&aqLqIH_lJ{#*OeQ~Q{xQ>@fA4(bs%wVBw@+4p0lj!dSkBK_PN?qfi9&uBf*Rh|o@5e|TW1%jwQ}?*2S9D*m z{TQf2%+xtH>J}&UjL!dRKYD5(6LpG}y2e30;-)rlU_WQykC8gYLS15~?r~AC=>DJf zW1vp)nl~D=@*BGpubGWGdmW9}yvdl*HeT~)zRq(RuXzjKCv9VLE zIAMI-c+JTZCbf;%oH}7@+j!04gc)sPa{2@>1R9fDoG@40#%r7tCbo^qRVPeo8Cy@U2+pbjxp=h&!QoYXTq zpQiojseMe;DOTzl2la@X+I%|uIs1N$)G-$75<7K|i+V-(j@plbI>bz!W20_yQqSnz zN&C@L`Jc}!`3&}R_Wc;CV=UAqcIqA%^@^^m{TQf2%+xtH>J}&UjLx04 zA3e2?i8{qfUE`o0aZ{VmWIt!$kC8gYLS15~?r~AC=zf;=W1tQ(Q|H*ITb$H0I-jlm z=&5~7)G1c#8VB`=o7#L1`#Jl5jMOm}>JmG3kBfRm_b%FxfjY!YU1RmRC(Kn(c(|$Y z@?B4u``gCLXHS@i*~ZIvJ7Jz?8>_pYFfX%>)#sfsH`~U`=T4Y=K9R=i^G}$E*v9G} zC(L!Wu{wXkywEmYzUK*ZlWnZN;DovJlW4qruM_5hw(;`4Pnc_M^WN z+Q&qlVx_KeP>;B&%~!CWv+u`99b=&`u~YZBs8@8q^2%*}yzo^#zdTkxUU&e{uWh{W z)jYpXrSZbo@ci1w3qH@UZM^WcJioTl`#PRq+vt5g&+l*0=w0ObwT&0Pf#=sYdf&+N zYa6|Q=a-JL;MnUbu~YZBs8@6!c;(le#Xucmrp~cZw>YV1biV1zZO@>m_AybXSgC6q z)FWKF@kiJiK~MZKc?AnnIM9b%@=u~D};sb_S)UHj2f`Jc}!3E9ut_hY1vu~3)Tse4@1E4tsI{TQf2%+xtH>J}&UjLvszKYD5(6LpG}y2e30 z;-)s=#eUAdA0u^)g}TH}-Q%KO(fw}i$3Puorp~cZw>YV1biPOX(Np`Fs8g)eH4f?# zH??^%`#Jl5jMOm}>JmG3kBfRmH`0C#)FEc-92<3ulX^zyA=;0g+Q&qlVx_KeP>;B& z&G)jOv+u`99b=&`u~YZBs8@8qPx~=YhnT5zY}74I>KUEy*M9WWJ|^lED|L;7dc;j_ zet`X)eLqI(7z=fYow~J%$=je~l`O>KUZ z{hWP2M(P*~b%~w2$3?xO`(xUVfjY!YonxbJaZ=CdT%-NyseMe;DOTzl2la@X+Wa{C zIs1N$)G-$75<7K|i+V-(q1umuI>bz!W20_yQqSll+K-;v$3&fCrLJ*MkGQGL!`RQ+ z_hY1vu~3)Tse4@1E4n|S{TQf2%+xtH>J}&UjLuJLKYD5(6LpG}y2e30;-)q~#eUAd zA0u^)g}TH}-Q%KO(fw)d$3Puorp~cZw>YV1bbdzr(Np`Fs8g)eH4f?#H?{d$_H*|A z7^!0{)FpQ69vAhB?$2pI2I>$qb&id?#YsJ*lWISDY9AAIij}&?K|SK8Hb2jP&b}Wb zb&Q3^DgqF&Mc1?|T`9b%@=u~D};sb_S4QTx$T`Jc}!xx{|Xz8@oX zjD@>KX_2h@0AE?C0$JF;d4^ zs7vhBJud1M-D|ZU19ga*I>$!c;-sF@`DN`#Pwiu(PO(zgIH*V5)aF;%&)N55q>iyr zm)NO$T+}PNzpDKhs6))uIX3DRC-scZBeWkqwU3E9#Y$b{pdN8kn@6&rv+u`99b=&` zu~YZBs8@6!rTrMFL(J4UHtH59^^DG=wI4mTkBK_PN?qfi9&uBfoc)}AKSt^p3w4Q| zy2nMmqWc)_$3Puorp~cZw>YV1bRMhy=&5~7)G1c#8VB`=o7y~%{hWP2M(P*~b%~w2 z$3?xO`*`igKpkSH&aqLqIH_lJeogz)Q~Q{xQ>@fA4(bs%wfS}SbN2lhsbehEC3fl_ z7xjv6q5T-BL(J4UHtH59^^DGS+K-;v$3&fCrLJ*MkGQGL6WGt$_hY1vu~3)Tse4@1 zE4okAehkzhX6hUpb&HdFM(0V|kDl7cM4e)#u5nP0xT(#P+0WVcW2BC;P?y-LdtB5j zx=+!54AdcJ>Kq$&i<5dr=c(F{p4!Jmonob~aZr!Asm*V&pR@1BNF8ILF0oVhxTsfj zOYO%%9b%@=u~D};sb_S4Q~S|V`Jc}!`7QQy_Wc;CV=UAqcIqA%^@{Fq zYd;3+5Hod-jk?82J)?73`_WVTn5a{%)HM$35jVB@9rknf{TQiZEYu}->K+&Mitg`f zKL+X$Gj)!Qy2VL7qf===dTJjNb&8d`#z8&erZ!JwKWE>MkvhggU1F#1aZ#`6K3)4U zP=}bQb8OTtPU;z*XJ|iqY9AAIij}&?K|SK8HowPy&b}Wbb&Q3^DgqF&MceeK6U z9b%@=u~D};sb_Sasr~4weN5CTR_YoD^@y9=Jd6FDeLqI(7z=fYow~$4DJxp)Rpg_qeE6bpJ^EF;It? zsdH@9El%ngoj=xo^wd5k>J%$=je~l`O>M4cKWE>MkvhggU1F#1aZ#`6{)zTupbjxp z=h&!QoYXTq&(?nQ)IKKa6f1R&gL=eGZ5sA-_Wc;CV=UAqcIqA%^@{Fuv>yX?h?zRa zM&071p3(VJ?MF}TW1>#6Qr9@BN8Hrr&)Cn|_hY1vu~3)Tse4@1E4qKK{TQf2%+xtH z>J}&UjLvhlA3e2?i8{qfUE`o0aZ{V;v7fW=$4DJxp)Rpg_qeE6bpJy8F;It?sdH@9 zEl%ngoxjw6^wd5k>J%$=je~l`O>J8CbN2lhsbehEC3fl_7xjwnUui!E>JT$^j*Ys- zNj;Ps+Q&qlVx_KeP>;B&&EK$}v+u`99b=&`u~YZBs8@7v(0&ZmA!h0v8+D75 zdPe8@+K-;v$3&fCrLJ*MkGQGL3)s)u_hY1vu~3)Tse4@1E4rQbW1tQ(Q|H*ITb$H0 zIxp0I^wd5k>J%$=je~l`O>O>`{hWP2M(P*~b%~w2$3?xO`*+%pfjY!YonxbJaZ=Cd z{Jr+0r}i;Xr&y_L9MmIjYV!~5=j{72QpZ@ROYGD=F6tHC7im8R>JT$^j*Ys-Nj;;B&%|Ef9v+u`99b=&`u~YZBs8@7*?Z-eJVy4cqQMWj$XLMey z{phKEOw=h>>KX_2h@0B{Gy6IFeta9}Iwvz{{^f)@+{oXFzyIOp3?5#>--+AC!%KOO z+y`hp47^9qHXdHad*p1R^RIlK57KyeIe&-#AsP>_IAPik(|C9#?}giFJiO|JS#6{9 zYW@!W-83FvbHbdxna0C-!i2W*@NeAqqcl4I&d!g~===veZR6oT`Mds)(|GtV{;uCP zI{(eDw~dF1&-n=&53l8Mu#JcR;qUn0OQZ8T-kb4B8V|4Mx@_a&e|ZnUr)WI9f%hBO zM(6){zk%T~MCXlcu#L{l2HWVoi4C^Vc{7`Bqw^LXs}nRjN8UqdH=y%Y-g{s_j)%8# zzqZj?c<+I2bZ+8tvyIN%d2fkrJiLR?d78$;@ z^wd5k>J%$=je~l`O>It`H0L?{evH&H7U~i^b&rdBMfc>D+n&Wh9b%@=u~D};sb_Rf zX+L^u9}{(omAb}3J>sS|2ljLJ{TQiZEYu}->K+&MitcIc$3Puorp~cZw>YV1bZ(*j z=&5~7)G1c#8VB`=o7y<+=h*!r23MUl^TRU};>BC?@ki5m@m42IYa1`#nqOlZFW%;) zIg`_P@wO*TZyPV(?xb05lpEM7#jTb-jq`A&EUi>UJ z*v5;W%?8_;aqP9{*r;2a)H6DtqsJLNwU3E9#Y$b{pdN8ko4fEhbN1H>M(P*~b%~w2 z$3?xO`?*(cdlmzAh?zRaM&071p3%9h_M@lvF;S;jscRh6BW`MQmi?T4KSt^p3w4Q| zy2nMmqI);($3Puorp~cZw>YV1bndSG=&5~7)G1c#8VB`=o7#LH`#Jl5jMOm}>JmG3 zkBfRm_nh`)pbjxp=h&!QoYXTqpRfJsseMe;DOTzl2la@X+T4TvoP9q=>KF@ki_Lky z?)VqwTfF|BC(YHbqw)GL;A_)1UVkrsjcvUC-Y3o3*VB0YeNLLtHeUaQ+?Q><{)_n9 zw~g1|m#?ok&^U4Io*A91b&cq$eN5CTR_YoD^@y9=d@YV1biPFU(Np`Fs8g)eH4f?#H?_IIe$KuhBXx|0y2MW1C z{Zj46KpkSH&aqLqIH_lJzD)bkQ~Q{xQ>@fA4(bs%wei@`+4p0lj>KX_2h@09xfc>0(KSt^p3w4Q|y2nMmqWjg_ zkAXVGOr2w+ZgEo2=zNX#qo?*UQKwj`YaG-gZffJRpR@1BNF8ILF0oVhxTsfjzgGJ( zP=}bQb8OTtPU;z*uhV|?)IKKa6f1R&gL=eGZN8rUoP9q=>KF@kiJiK~MZKbXQTs7a zhnT5zY}74I>KUDH(0=sPJ|^lED|L;7dc;j_zLEW$eLqI(7z=fYow~C{Wk5#KpkSH z&aqLqIH_lJ9;E%~seMe;DOTzl2la@X+I&0vIs1N$)G-$75<7K|i+V*j)P4-qA!h0v z8+D75dPe6vv>!dSkBK_PXR2!))FWJ{DZ(tZroA!h0v z8+D75dPe8FwI4mTkBK_PN?qfi9&uBf?_ob@-;a?x#zI|Ur|xl4ujoEl`!P_5n5lDY z)Gbcx8J$S`(Np`Fs8g)eH4f?#H??^P`#Jl5jMOm}>JmG3kBfRm_j|P;19ga*I>$!c z;-sF@`9AGOPwiu(PO(zgIH*V5)aLuy&)N55q>iyrm)NO$T+}PNKcM{>s6))uIX3DR zC-scZ4{ASpY9AAIij}&?K|SK8Hb2CE&b}Wbb&Q3^DgqF&McVeQ929b%@=u~D}; zsb_Rz?MF}TW1>#6Qr9@BN8HrrN7&EV_hY1vu~3)Tse4@1E4n|b{TQf2%+xtH>J}&U zjLwf~KYD5(6LpG}y2e30;-=#6Qr9@BN8HpVVLxYo{4r9;Sg1?v)IBch72StvKL+X$Gj)!Qy2VL7 zqw^EmkDl7cM4e)#u5nP0xT(!gvY)f>$4DJxp)Rpg_qeE6bbm_wF;It?sdH@9El%ng zouAfz^wd5k>J%$=je~l`O>KUL{hWP2M(P*~b%~w2$3?xO`?K1QfjY!YonxbJaZ=Cd z{G9fqr}i;Xr&y_L9MmIjYW|}G{P!5OA0u^)g}TH}-Q%KO(fxVt$3Puorp~cZw>YV1 zbbdkm(Np`Fs8g)eH4f?#H?{di_H*{fA0u^)g}TH}-Q%KO(Y>Vo7^p+c)Hycl7AN(L z&M#>{dTJjNb&8d`#z8&erZx{}KWE>MkvhggU1F#1aZ#`6X4;Q|I>bz!W20_yQqSmI ztNrMyeN5CTR_YoD^@y9={4)DF`+khnF&63)J9UqXdPVnFv>yX?h?zRaM&071p3(VL z?MF}TW1>#6Qr9@BN8Hrr5$xye`!Q0-Sg1?v)IBch72QW_KL+X$Gj)!Qy2VL7qw^^3 zM^EizqE4|=*Epz0+|=gL?C0$JF;d4^s7vhBJud1M-CX-IP=}bQb8OTtPU;z*$7nx# zY9AAIij}&?K|SK8HjiaLXWx&JI>tg>VyEtLQLpGePWv%XhnT5zY}74I>KUEKYd?Bw z9}{(omAb}3J>sS|zs7#fz8@oXjD@Kq$&i<5dr=PBBcp4!Jm zonob~aZr!Asm)W_&)N55q>iyrm)NO$T+}PNzoGpYs6))uIX3DRC-sa@sr~4weN5CT zR_YoD^@y9={3iQ3`+khnF&63)J9UqXdPVoQv>yX?h?zRaM&071p3(Vj?MF}TW1>#6 zQr9@BN8HrrGW$9EevH&H7U~i^b&rdBMfZ2K9|LuWnL5Wt-QuL4(fM8NM^EizqE4|= z*Epz0+|;IGKWE>MkvhggU1F#1aZ#`6K27^EP=}bQb8OTtPU;z*r)xiYY9AAIij}&? zK|SK8HqT%`XWx&JI>tg>VyEtLQLpI!p7vv)4lz^b*r;2a)H6E2ul?w$eN5CTR_YoD z^@y9=Jd^#LeLqI(7z=fYow~CyK+&MiteB3F~L9`Vy4cqQMWj$XLSBtj|qBe9}{(omAb}3J>sS|&*d@U?2idX z>KF@kiJiK~MZKc?JnhFo9b%@=u~D};sb_TlLi^EE`Jc}!`Ahb5_Wc;C zV=UAqcIqA%^@?t*{TQf2%+xtH>J}&UjLu(aKYD5(6LpG}y2e30;-)r#&3?|lA0u^) zg}TH}-Q%KO(fu3k$3Puorp~cZw>YV1bZ*do^wd5k>J%$=je~l`O>Lgfe$KuhBXx|0 zy2MW1CeS!94pbjxp=h&!QoYXTqo%W-r_AybXSgC6q)FW_Wc;CV=UAq zcIqA%^@{G_YCi_*5Hod-jk?82J)`q?+K-;v$3&fCrLJ*MkGQGL-?N{y@5e|TW1%jw zQ}?*2S9JeD`!P_5n5lDY)Gbcx8J!pDe(~Ht^4_zV?}2#!pH7;q_&#|xp6^eZ``gBI zFFt7=W*g7{^GWkG+j#C@PMVu-)Rf8~8^_TzZ&<-B+9Ei|5c1>dV}vop8t3D+s5<%!A`pY&;2L=jIbZa^Z&(l*~at#&Ca*dcz)v7+s5;+<+^O+ zx&Pt1Y~%UYaV@s--0Qg({#kQ1p8H?++s1QmV83lV_kVmIy8+L=k!!IZ$MZASve0<` zORD6yLc{acZYw~gmk_P>M1^Y3H7Z9M;e_S?qu zA7H<2JoiEF*KWXbAL4%PYZA|WnESPj=Qr-xHlDkg`?ZY`$9^5fSg1?v)IBch72S{M zYX<{$h?zRaM&071p3(W}mD`@d2dI5a)G1c#8egRzaZ{U*aV?zvYab(ZjD@)L; z{4N@^Tb(iww2j%VPnm0NWgcc5 zvpbwJPqU5Lr?KBQW}nV}+j!}Y?0*l9m+r)V+j!|S*l!y%m;JUeyEFT3I>tg>VyEtLQLpIU z<;rc(VxSH&Q|H*ITb$H0I-jfk=&5~7)G1c#8VB`=o7&u!{hWP2M(P*~b%~w2$3?xO zdsh1~P=}bQb8OTtPU;z*yJtg>VyEtLQLpHJ zp7vv)4lz^b*r;2a)H6Egv>!dSkBK_PN?qfi9&uBf&u2ep-;a?x#zI|Ur|xl4ujt-G z`!P_5n5lDY)Gbcx8J+XmkDl7cM4e)#u5nP0xT(!O+0WVcW2BC;P?y-LdtB5jx?iCE z7^p+c)Hycl7AN(L&b_oBJ++UCI>ky|sS|U(9~az8@oXjD@>KX_2h@0A6U_WQykC8gYLS15~?r~AC=zgj8W1tQ( zQ|H*ITb$H0I$x&!=&5~7)G1c#8VB`=o0@;|iuasrKSt^p3w4Q|y2nMmqI-Ys$3Puo zrp~cZw>YV1biQ2s(Np`Fs8g)eH4f?#H?{c+_H*{fA0u^)g}TH}-Q%KO(fvy8$3Puo zrp~cZw>YV1biPXa(Np`Fs8g)eH4f?(j}PGIllNz4#p74=^ObEpehoig*~X*K&sVl_ z`C5Ly`T&i~*YWd}Z9INGKVR9#$X@%Sy=?@HtHt=z9|JboMZYa5Rb;(l%8@!Ppy+jtDQU)y;64(|7T zG#G{Gy9b%@=u~D};sb_Q^ zqUQ@ewU3E9#Y$b{pdN8koA2fI#@SzQ7^!0{)FpQ69vAhB?)Paw2I>$qb&id?#YsJ* z^ZnY7p4!Jmonob~aZr!Asm%|tpR@1BNF8ILF0oVhxTw$k;3;$XA)Y&4KWFgp!#sDk z@euRe*~Y_<@Z8zP!;kXZeTc@xkMWwfjfZP^?b*h|kMr8IjfaQw+Ov&L!fWrtG&&FC zwPzchpWwA;8xKFpYtJ@1KgDa$Hab7eYmdGfBaXe^7z=fYow~KUD%)pLZN+Q&qlVx_KeP>;B&&Cl^1arWm3BXx|0y2MW1CO|>5bb%>cd z$41@aq@L0FdF@9}?PH=&u~OGKs7Kt?<`>w{+4p0lj#6Qr9@BN8Hrrm)OtQ_hY1vu~3)Tse4@1E4mNYehkzhX6hUp zb&HdFMkmvL^wd5k>J%$=je~l`O>M4aKWE>MkvhggU1F#1aZ#`6{<8LCpbjxp=h&!Q zoYXTqzoPxbz!W20_y zQqSl-Qv1Jc}!c@+CO`+khnF&63)J9UqXdPVoq+K+)c#7v!Iqi%6h z&*Kq$&i<5dr z=W*JPp4!Jmonob~aZr!Asmiyrm)NO$T+}PNzoz{ds6))uIX3DRC-scZ zuWLVgY9AAIij}&?K|SK8HU;}R`+khnF&63)J9UqXdPVm-?Z-eJVy4cqQMWj$XLO#R z{phKEOw=h>>KX_2h@09xk^P)~KSt^p3w4Q|y2nMmqWdK6$3Puorp~cZw>YV1be^pJ z=&5~7)G1c#8VB`=o7y~u{hWP2M(P*~b%~w2$3?xO`&8}6KpkSH&aqLqIH_lJenb1w zQ~Q{xQ>@fA4(bs%wJF)p+4p0ljsS|zs-Kmz8@oXjD@J}&UjLz?9KYD5( z6LpG}y2e30;-)sg%YM$jA0u^)g}TH}-Q%KO(XF%}19ga*I>$!c;-sF@d7Ad4r}i;X zr&y_L9MmIjYV&mVbN2lhsbehEC3fl_7xjwnGqfKAb%>cd$41@aq@L0FJ?%$N?PH=& zu~OGKs7Kt?=J(mp+4p0ljYV1bpBBL(Np`Fs8g)e zH4f?#H?{dA_H*|A7^!0{)FpQ69vAhB?jLJE2I>$qb&id?#YsJ*bG`PXr}i;Xr&y_L z9MmIjYV#-T=j{72QpZ@ROYGD=F6tHCXKOzO>JT$^j*Ys-Nj;;}Xg_*t9}{(omAb}3 zJ>sS|&tX4j-;a?x#zI|Ur|xl4uju}%_G6$9F;nN*s9T)WGdh2!{phKEOw=h>>KX_2 zh@0B{Ir};LevH&H7U~i^b&rdBMfbVdkAXVGOr2w+ZgEo2=sZvR(Np`Fs8g)eH4f?# zH?{c-_H*|A7^!0{)FpQ69vAhB?q6y@2I>$qb&id?#YsJ*(`r9@Y9AAIij}&?K|SK8 zHh;x_&b}Wbb&Q3^DgqF&McYwgEC9b%@=u~D};sb_TlM*GoI`Jc}! zxq>KX_2h@0AU z?C0$JF;d4^s7vhBJud1M-4|*<2I>$qb&id?#YsJ*^S9cMp4!Jmonob~aZr!AsmJc}!>DkZO z_hY1vu~3)Tse4@1E4nY%ehkzhX6hUpb&HdFM(3ZkA3e2?i8{qfUE`o0aZ{UrVLxZz zkC8gYLS15~?r~AC=-#OP7^p+c)Hycl7AN(L&P%i(J++UCI>ky|JmG3kBfRmchr6i)FEc-92<3ulX^zy-?Se+wU3E9#Y$b{pdN8kn}26NXWx&JI>tg> zVyEtLQLpI!hxTKj4lz^b*r;2a)H6E&sr~4weN5CTR_YoD^@y9={1^K<`+khnF&63) zJ9UqXdPVoYwI2g@h?zRaM&071p3#}KA3e2?i8{qfUE`o0aZ{VuvY)f>$4DJxp)Rpg z_qeE6bpJ>DF;It?sdH@9El%ngo!4nUdTJjNb&8d`#z8&erZ%rMkvhggU1F#1 zaZ#`6{;&39pbjxp=h&!QoYXTqZ_s}9)IKKa6f1R&gL=eGZT^q_oP9q=>KF@kiJiK~ zMZKc?M(xKy9b%@=u~D};sb_R%?MF}TW1>#6Qr9@BN8HrrP3-6F`!Q0-Sg1?v)IBch z72P*$KL+X$Gj)!Qy2VL7qw^N+M^EizqE4|=*Epz0+|=gCe$KuhBXx|0y2MW1C zeXI6kpbjxp=h&!QoYXTqZ_|GC)IKKa6f1R&gL=eGZ5H-(_Wc;CV=UAqcIqA%^@{FI z+K+)c#7v!Iqi%6h&*;2e`_WVTn5a{%)HM$35jVAY2m3kuevH&H7U~i^b&rdBMfaWB zkAXVGOr2w+ZgEo2=)6n&(Np`Fs8g)eH4f?#H??^;`#Jl5jMOm}>JmG3kBfRm_dVK= zfjY!YonxbJaZ=CdyjT0tQ~Q{xQ>@fA4(bs%wOQHE+4p0ljXWx&JI>tg>VyEtLQLpHJRQoYdhnT5z zY}74I>KUDnX+L^u9}{(omAb}3z2fq5-aB+N?-Rr26TElmBQ!3b;~2kGDRUYi;9ln*;w(3L2N&9{7J!(74?0V6OT&jmzy1 z=Ki+vc;;XpW*d)pV4K~5%cpT&_T#vGI@e_zmpgJ@wsE-=n?FJ0@iVxsZ9KYMmu)=W znQO6)%V%;ewsH9^uH}<7E}zY{*v8}Ma9g_pm%DIX_TzZ`T&~MD9`DL^*~a5puIp1Y zE_dU)Y~ylwuFEzqpU1V>#^X7z#Wo&4pKGy=$9r%s{9iIwJf3H>-GIk?a$WZ0c>Dsk z*~a6&_%*iicyF%DHXiT8b)BH`_=Q}TZ9IMv*J2xw_vKn_)#Wo(lm}@yn#~i@mvUXU@%Uw2mu)0#@%R9)#eOZ|@vG?rAIIa@a9y_X=yP4Rars)V%Qharj_b0G$FJwQPSbe2 z$hFwU<2P_Ew(7vK#RDO$(Mv$8X`fY~%4;xh~sy z{5G!3HXa|ub=k({+qo8p#wBFG{rtFm2m5LBod@#*&dq18H9bE3yZHQfxYpEo`MbGa z+j#kVxG&py`N7JmG3kBfRm z_Xn@s_ACbK5Hod-jk?82J)`qO+K-;v$3&fCrLJ*MkGQGL53`@M|FZ@ob&Q3^Dg zqF&LBwI2g@h?zRaM&071p3(Uc?MF}TW1>#6Qr9@BN8HrrN7>KW_hY1vu~3)Tse4@1 zE4n|X{TQf2%+xtH>J}&UjLtRMkDl7cM4e)#u5nP0xT(#Lv!Ao?$4DJxp)Rpg_qeE6 zbRT-KUEn%5Be}r}i;Xr&y_L9MmIjYV$DmbN2lhsbehEC3fl_ z7xjwnPiQ{|>JT$^j*Ys-Nj;;B&%}=qPv+u{Zac;Ul-`~*v zX>G$m9b%@=u~CmW{0!ftzW7=*;*CFhFzNkhyz%D_rnZeYrUx_H#^L7=#(W8lH~zxG zTx}bNUp$!DHV&5#rnHSW{?ftpw(-V?b6>Xc#*FX(_oZ>T_F!(fK;wsgeK8oAg&xymMx$V_74mr2AjW<4q{q}ls zcr5#Eiyrm)NO$T+}PNPt<-4 z)FEc-92<3ulX^zyN!pK|+Q&qlVx_KeP>;B&&6C;B+4p0ljYV1bbeF&(Np`Fs8g)eH4f?#H?{dK_H*|A7^!0{)FpQ69vAhB?r&>92I>$q zb&id?#YsJ*b6NY*Q~Q{xQ>@fA4(bs%wfPJT$^ zj*Ys-Nj;-eX+L^u9}{(omAc0po^~+pxAAi+c27T;**4zr48C7Ih{hX!kMCEu@rK{$ z`;~3%p2_!H+jzsX`1$kOY3%-hpFeG5SF^`9-tdRqmu^WN z+Q&qlVx_KeP>;B&&0q7n;_R<0jMOm}>JmG3kBfRm_iwZx19ga*I>$!c;-sF@xk3BU zQ~Q{xQ>@fA4(bs%wRt}KIs1N$)G-$75<7K|i+V-(1=^2+I>bz!W20_yQqSmg+K-;v z$3&fCrLJ*MkGQGL3)#=v_hY1vu~3)Tse4@1E4qKH{TQf2%+xtH>J}&UjLzR_KYD5( z6LpG}y2e30;-)r#&wkFnA0u^)g}TH}-Q%KO(ftSQ$3Puorp~cZw>YV1bY7(W=&5~7 z)G1c#8VB`=o7(&%`#Jl5jMOm}>JmG3kBfRm_n)*M19ga*I>$!c;-sF@>9rp{wU3E9 z#Y$b{pdN8kn-{a6v+u`99b=&`u~YZBs8@9VS^F_ihnT5zY}74I>KUDX(SG#QJ|^lE zD|L;7dc;j_Ze%}a-;a?x#zI|Ur|xl4ujszyu;2D92I>$qb&id?#YsJ*^U^D~J%gUw z$3&fCrLJ*MkGQGLz<$oYA0u^)g}TH}-Q%KO(S4crW1tQ(Q|H*ITb$H0I{&Ku=&5~7 z)G1c#8VB`=o7%jb{hWP2M(P*~b%~w2$3?xO`wH#HKpkSH&aqLqIH_lJUa9@)seMe; zDOTzl2la@X+PsSWoP9q=>KF@kiJiK~MZKc?YVF5B9b%@=u~D};sb_Rvqy6ZqeN5CT zR_YoD^@y9=jO^#^`!Q0-Sg1?v)IBch72SW+ehkzhX6hUpb&HdFM(5wPA3e2?i8{qf zUE`o0aZ{WBU_WQykC8gYLS15~?r~AC=>DhnW1tQ(Q|H*ITb$H0I{&5p=&5~7)G1c# z8VB`=o7((0`#Jl5jMOm}>JmG3kBfRmchY_g)FEc-92<3ulX^zywc3xK+Q&qlVx_Ke zP>;B&&Hu2Uv+u`99b=&`u~YZBs8@7fr~MeHL(J4UHtH59^^DHzwI4mTkBK_PN?qfF z|Cc}O_@ir0j0MMTF0oVhxTsfj-*DyE_~`u~KVv`bTH~YlMt;VAI*s1UpTpZm?@j!9 z{xfLw-prp1J(EW7E&REVZS;=(xsYx2-pZe=Jc~x}ZTvps4`}oje(zu#y_@(w#qZMS zz5QU$)HHhUI2hkHdhg`EY@_!s?#nh_csIYN_(K{myoW#A`C}Tr_wr{uw$WR;F5Bq6 zkKd2{360+S`SUT`=zW0CX*ZzvK|bfRY4kqCHrsgN!~CAbHhLR>m(kGZ-OS%**hcRo z{9T4^yzo)}EXy`}ALB8!jTb)7=X?&07e2w~w2c=&$>U}>p!X?$Ph>xio;ht^Ya6{2 zr_EJ=N~3r3v?>3LM(@;VQ$LqR?{M0Tw(-L0)8_uqqtUy?X~X}x!}xf?Ic*+h8@;Pe zo2S`E@0R=;`x?Ltw>oXEwvFDcPxE_C8WWCvU8Pv5YaG-gZfbLz)8;&9|JuPw9b=&` zu~YZBs8@7vd*!xgF;It?sdH@9El%ngo!ecx?HTmcJ|^lED|L;7dc;j_ZqI(sz8@oX zjD@J}&UjLsdjA3e2?i8{qfUE`o0aZ{U5V?Sr#kC8gY zLS15~?r~AC=zhBPW1tQ(Q|H*ITb$H0I(O85^wd5k>J%$=je~l`O>OSPe$KuhBXx|0 zy2a)*PMh@u*P0d^_q2&WNMmznKEBb|eCBBreuT#6v-q60vH5IX=O3l9`JB_{o*$#J zxeH%kwz2tKUjMeSxhuc^<1|hjyKP42tgaV5wU3E9#Y$b{pdN8ko4awnoc($+QpZ@R zOYGD=F6tHCyI;BOSq#)6X6hUpb&HdFM(6XiA3b%9g}TH}-Q%KO(LJa8#Xucmrp~cZ zw>YV1bUt7Ai=NuYM4e)#u5nP0xT(!Oc-%Pqky|$7eq0sy=bFD(RDmF4U(SjV{!X+9Ro{ zut*G*Rj%gnVO<-X>?x`#pBkc!qE)DIxso*HXpe|-)hep#o2=wwa?vWv@9~~}{{DE~ z?vLO8X7}^j*~{~BzNdk@z_HrAjs2N=e{87(?5bnzt8*NwD{RbZe{8CK?5HE`sWTj^ zOLX3@{n1r>*j9&_s8bxM3mmJ>JJ_G8_s5nxz^*#RzB*0A3N#@d+H2_ zYQA8Yr}#R9cX6G_WNk&oE_=+b3066FZXC>lilbYX=c4WW+$3?*7gUuF0*PUdS{wB*7gT! z<`UZ<;&|ph+f6QK_WA(5ie?_Ry$k1@sn0pK)B$$YG4|Ctj?@)4KCE+&O|_35b%Z^2 zhC_9U&aRW|&Y-LIu&oX;QKvXi7dTd%kFY;e?~g5YfL(QreRYl_b%l-Hv_Cf0K6ca* z_S6{;)g?L~)&A(JJ#4E(Ow=h3)CG>!=40&7)ca#g9bi`-V_%))NL^vW*Z$a4``A%O z*i&aXRF~*{T>GP|_OPuEF;S;DP!~8>n@_MmQ}2&0b%0%UjD2;EBXxz1PilW`s(tLJ zBkZX&9I8uncGv#ssy%G0Lrl~u4%7vX)n*U&XX^d2r4F#GjMeh!=buFr=|VTReRW0hnT2S9HN#eurOvD$o!{h4}yY^ek6s$=Y{a~!EFZ0xK3v8nd4 zqmHnr&TyzM(fPFYM_27(TODGePH~_vaI7}_u|HGqk1ch8U3H9ob&ex-g^m5SKQ`4q zcGMB})EN%dB|3rjM_27(TODGePH~_vaI7{5us>7pk1ch8U3H9ob&ex-g^dHXKQ`4q zcGMB})EN%dB|4wc{^+VbY^y^|)F}?s1&-C`v+U2*`(sNTU{@VuU!CJfU18&M+8>*0 zA3N#@d+H2_>JpuUv_HCP58LVx6LpFMb%A5GX|q35?~g5YfL(QreRYl_b%l+CwLdo1 zK6ca*_S6{;)g?Ng*Z%0LJ#4E(Ow=h3)CG>!<_ql4)ca#g9bi`-V_%))NL^v$5bcjm zwT~TjggteJLv@MHq1qo^wTEqWh>1GIfx5u4+8oCIOuaw0)B$$YG4|Ctj?@)44%hzJ zRQuRbN7z$mI8>MD9HITuReRW0hnT2S9Hsy%G0Lrl~u4%7vX)#fPnXX^d2r4F#GjjRptM;(14lz-uI8YZjR-0qkpQ-o9mO8+$I>x>_$C0|iMo0T& zQ|)6%9br$M;ZR+obFB79SM6b29b%$RaiA`6tTxB7KU43IEp>ohb&P#=jw5x2jpMaH zHq}0M)Dia784lGYIwxpf1 zV^i&8M;&2Lo#9YjqI0tLM_27(TODGePH~_vaI7|`us>7pk1ch8U3H9ob&ex-g^fu2 zV^i&8M;&2Lo#9YjqI0VDM_27(TODGePH~_vaI7|`u|HGqk1ch8U3H9ob&ex-g^km- zKQ`4qcGMB})EN%dB|2-gKe}oU+v*S#b&3OZfn&A#BKtG-{@79n*j2~aSLZlVSJ*g1 z`(sn>V@DlfPo3dVU82*~{^+VbY^y^|)F}?s1&-BbE&DU|{@79n*j2~aSLZlVSJ?QH z_Q$5$$BsI}o;t&!x#^gfwv5gDg;~2XGCf{c_dpRZ- zv5##`E@qz&jmZz#$2KNCeqUr8lS}x0k!?(V$nT46WAY=;?Xff_m$JWYOfKWx+Q#H^ ze#dn$orWa$LBX-xJ!#g!Om5@8oI+#rTkeZ(Om64=*d1`;4(^w|9Fu~d z715a7$>U`kle;)?wlTSz|K4gFlY97G<*76#_wu_++nD^0-%r}cg&{lJ#)bRX*)}G> z=W($+;KCm`SEtdK+|RkPjSCNOer#j%N6wFJT=*0B*IpMF{>=TgjRVHMClokVo09iE zrhebUmO8+$I>x>_$C0|i#$WW_f=#uL9d(2~b%sNAiO&B`t~-OS+QYUw#6+FqKwaQi zZT`ysOuaw0)B$$YG4|Ctj?@)49@PHWRQuRbN7z$mI8>MD{7w6#tM;(14lz-uI8YaO z#zQ>Tmmg@#-%97pPz5x4&^&zUQZGc)M?o#%{gbROZqMcT$i|KPpOHZFRU=krxG zI*;+3xtd1jah@}_(RqUB_BAvvs(9bCjm|$eFtgXvxadiqlk7Hw&Qtt%QhPZ%PqU|O zbe`dN__lG;zxY`{rg71j=bmkJp5?h`8=ZgiT>S}+&VP81wT;emyhqta=XqZH8I8_= zdF|Nyg)U>ykB4n_h>1GIfx5u4+We2_22(#bu%!;LtB$d+&T*u!u<^p=y0h3+``A%O z*i&aXRF~+Osru*6psV(hq5+b%0%UjD2;EBXxz1 z4YWTt)joFA5%$y>4%H<(Q`#S0wTEqWh>1GIfx5u4nj0}&G4=k~QU};o$JkfrI8s;G znAZN-RQuRbN7z$mI8>MDEY|+$sy%G0Lrl~u4%7vX)n*C%Gxh%1QU};o$JkfrI8s;G zSgQT8srIp>jJSrkiUW0lW3`!Kf2Q6aTj~J2>KOa#97pO3 z8!y-X*i`%2QAgNQXE;=s=xnI{(N%lcR)?6VQyi!Z9IMSn?9bHuV@n-iR~=(to#RMd zVPl2%$EMoHjyl4gI>Vv5L}z2|kFMIowmQT_o#H@U;8<;5!TwCWKep5XcGWTV)j5vT z6*d~$ADe0)JL(8~>I{eK5}i%7Ke}oU+v*S#b&3OZfn&9KCHph={@79n*j2~aSLb-l ztESA_TaM#@pOoDgd)*9&>Jpt-Yd3V&9=6pXCh8Oi>H^1VvnjhV^={Zw2iR4|*jMK` zQdih`&E&eX*i`%2QAgNQXE;=s=xnC_(N%lcR)?6VQyi!Z9IMT1*`KNR$Cf(4t~$oP zI>(W^!p5xj$EMoHjyl4gI>Vv5MCWzdA6>PFZFPu=I>mvyz_HqF&i+ijKep5XcGWTV z)j5vT6*gY4{jsU`v7?T#r_OMwF45US`=hJ&u&oX;QKvXi7dTd%E!m%`_s5nxz^*#R zzBH^1V{-F{6_er%sw$uT3 z)iL(fIgZp7Hr}ZHv8nd4qmHnr&TyzM(Rq{hM_27(TODGePH~_vaI7|OW`CwW|JYIo z*j2~aSLZlVSJ-%q_Q$5$$BsI}o;t&!xu!FrESH71W zY@@pa#}_oNeBYGuY@_@BDHGa8*PG&Z5;U&damp07(cNjvm^*1)`GF}jXB$`UJY@pg z=zfqr?GEUEXv)O)a&((hCby05swq?1Mt2v^+g&ueAD%LqZCttQl-cWU8r_d@xovcJ z)SJ+Yq*j2~aSLZlV zSJ>Ela@|>Ms(tLJBkZX&9I8un_L*FF23@s>ZFPu=I>mvyz_HqViv5}Tb%8B)fL(Qr zeRYl_b%l+6wLdo1K6ca*_S6{;)g?Ng*8b?KJ#4E(Ow=h3)CG>!Wiw~$4zR0^ zv9Hc?q^_{BzxKzb+Q*JM!k#+Ap}IsT(EjMEJ#4E(Ow=h3)CG>!<^c9*>iw~$4zR0^ zv9Hc?q^_`Wp!Ub6+Q*JM!k#+Ap}IupGuj_rwTEqWh>1GIfx5u4+I*J%nRIxf&Xn$;~ee9?s?5Q&xs!MbZ)&A(JJ#4E(Ow=h3)CG>!<}mhW>iw~$ z4zR0^v9Hc?q^_`Wxc0}U+Q*JM!k#+Ap}Iup2iw~$ z4zR0^v9Hc?q^_{BTKi*D?PEtBVNadmP+g*Pr1nQw?O|ITVxmrQpe}H%Hb=2PQ}2&0 zb%3v!=R3^o@y0{-_5ZFG<4c3w-Pdjj8) zY~#uk`CepiAKjDqUSu2Hllh)w8{Jd*zF`~Ph|hi7=$^_xucOgDjn8`9xbk$q&)7zH z4d0PoPvgoj^8H~88dsh{Z%L!u<@ZKHeMl$n1!jcvw0?ja`X z6bI@8$7*vv&l9G8o?uHIU{@VuU!CJfU18%plk3i6Q|)6%9br$M;ZR+o^WDjHXV6u9 z*j9&_s8bxM3mmJ>1? z*j9&_sB`RpkME_QIi7zfXNrF(hu27(#;Y&lHDVk47xNmijr||chtb&Y@ti-L#;Y&k z^Jpty=LB7~hi!F;i8{rBy1=p8T)|_?)Q>5))B$$YG4|Ctj?@)4uGIe6 zRQuRbN7z$mI8>MDT&4ZdReRW0hnT2S9H(78}>{o|e(r=<|MJ z8yna0eqtLNKjm?`g2u-6yg%5+#?N?vu#Jry__N!UG&X+D`=@POaU;(M+t~O8KkJ7y zHgbNJZEXCKpJf{xzv8{iHmGtZyPX>2m~vGB2@jJSrkiUW0lV>SOFhJW83XcGMB} z)EN%dB|5ige{|Izw$&jf>J$g+0>^6e8}?`F=Pv)&AI2``A%O z*i&aXRF~-7rv1@Xd)QWon5a`6s0$pc&2QPCsrSd0I>4?v#=bhok-Eah?b;ukY9Bl5 z2z%-bhw2iYJG4K#Y7g7$5EFHZ19gF8wJF%2srSd0I>4?v#=bhok-Eaho!TFpY9Bl5 z2z%-bhw2iYyR<*LY7g7$5EFHZ19gF8_3Yj3a1ZYZ|KK%^V;fiep4al@G&cUgKDM!OKi_R^Ed+ z)Q=su)B$$YG4|Ctj?@)49-3Tt7Mp4xJL(8~>I{eK5}ncHx-;miJ#4E(Ow=h3)CG>! z{A1E)E2iEbTj~J2>KOa#97pO38-LgS*i`%2QAgNQXE;=s=scqR(N%lcR)?6VQyi!Z z9IMSg*q^EQ$Cf(4t~$oPI>(W^!p5W8ADe0)JL(8~>I{eK5}n7iKe}oU+v*S#b&3OZ zfn&9Koc)=4e{87(?5bnzt8*NwD{MTW{jsU`v7?T#r_OMwF43v9Ke}oU+v*S#b&3OZ zfn&A#C;Kz?{@79n*j2~aSLZlVSJ-$``(sn>V@DlfPo3dVU83`p_D5IkVOt$yqE2z3 zE^w?iPqRN$?~g5YfL(QreRYl_b%l**v_Cf0K6ca*_S6{;)g?Or(*EeGJ#4E(Ow=h3 z)CG>!{KXHm6;tnzEp>ohb&P#=jw5x2jc2t#Hq}0M)Dia784lGYI{()G=&C(zt3yoG zDGt;Hj@9Nr?9bHuV@n-iR~=(to#RMdVdFXNk4?3Y9d(2~b%sNAiO%!dA6>PFZFPu= zI>mvyz_Hr=m;IS~e{87(?5bnzt8*NwD{TBv`(sn>V@DlfPo3dVU83`X_D5IkVOt$y zqE2z3E^w?i{H?F8n0kL~sRQh)W9+MQ9H}d8yl8UWS!}9(?5HE`sWTj^OLSg5x$X?Q zY7g7$5EFHZ19gF8wRs8qGxh%1QU};o$JkfrI8s;GSfu^2srIp>jbx9br$M;ZR+oGp+s6 zReRW0hnT2S9HKOa#97pO38%wl5Hq}0M)Dia784lGYI!m=b zx@r&G>JSrkiUW0lW3^ev{!G0;w$uT3)iL(fIgZp7HkNCDY^r_is3YvDGaRZ*bY80c z(N%lcR)?6VQyi!Z9IMUC*q^EQ$Cf(4t~$oPI>(W^!p4mD$EMoHjyl4gI>Vv5MCaw& zA6>PFZFPu=I>mvyz_HqF$o@>dKep5XcGWTV)j5vT6*e}~{@7Ie*ilE=Q)f6-m*}j} z{^+VbY^y^|)F}?s1&-BbWAJSrkiUW0lW3_oT`!n_a*ir}BRma#@=QvVV*w|G2V^i&8M;&2Lo#9Yj zqVpQKsSv3LCH0{@7Ie*ilE=Q)f6- zm*~uDe{|Izw$&jf>J$g+0>^6eI`(Jk{jsGEu&a)-ug-C#uCTGW_Q$5$$BsI}o;t&! zx^OwENR!qG=w$uT3)iL(fIgZp7Hn!IO*i`%2QAgNQ zXE;=s=)6(;qpS9?tqw6!r#Mg-I98iCu|HGqk1ch8U3H9ob&ex-g^f3Be{8CK?5HE` zsWTj^OLX3%{n1r>*j9&_s8bxM3mmJ>Htf&T`(sNTU{@VuU!CJfU18&`+8>*0A3N#@ zd+H2_>Jpu|X@7Lp9=6pXCh8Oi>H^1VGspf+y+5|p0e00f_SHF#)D4%H<(+iQPx)gHFhAtve+2kHXHYV$7kXX^d2r4F#Gj^!x@r&G>JSrkiUW0lW3_oN`!n_a*ir}BRma#@=QvVV*w{h)V^i&8 zM;&2Lo#9YjqVqoOk2|P6Y^y^|)F}?s1&-C`{p`=w`(sNTU{@VuU!CJfU17u1{@7Ie z*ilE=Q)f6-m+0)M{n1r>*j9&_s8bxM3mmJ>PVCRr`(sNTU{@VuU!CJfU18$`+8>*0 zA3N#@d+H2_>JpuuwLiLQ58LVx6LpFMb%A5G`5^l<_5RpW2iR4|*jMK`QdijckoL!> z+Q*JM!k#+Ap}It;sr}Jad)QWon5a`6s0$pc%_{b1>iw~$4zR0^v9Hc?q^_{Bi}uH+ z+Q*JM!k#+Ap}Iup!`dHRwTEqWh>1GIfx5u4+U&~yOuaw0)B$$YG4|Ctj?@)4KBE1x zsrIp>johb&P#=jw5x2jgM)6 zY^r_is3YvDGaRZ*bbRfPuG+)4I>bbs;y_*CSZzMe{!G0;w$uT3)iL(fIgZp7Ha?;K zv8nd4qmHnr&TyzM(fOqIM_27(TODGePH~_vaI7}Fvp-Ysk1ch8U3H9ob&ex-g^fM5 zKQ`4qcGMB})EN%dB|3X*e{|Izw$&jf>J$g+0>^6p4?N9QOuaw0)B$$YG4|Ctj?@)4 z_R{{?RQuRbN7z$mI8>MD?5+LLReRW0hnT2S9HL}y?9Ty)hQw$&jf>J$g+0>^6eY0eu{pEqo&1MI3}?5lGesVi*kH@WUC zHq}0M)Dia784lGYI{RyXbk!cV)gdP86bI@8$7&O>KU43IEp>ohb&P#=jw5x2jRUkl zHq}0M)Dia784lGYItOZhbk!cV)gdP86bI@8$7=H#_Gjw-v84{MtB$d+&T*u!u<=># zk4?3Y9d(2~b%sNAiO%P=Ke}oU+v*S#b&3OZfn&8fi2a#*e{87(?5bnzt8*NwD{Qp2 zKQ`4qcGMB})EN%dB{~Ode{|Izw$&jf>J$g+0>^6edG=@O{jsGEu&a)-ug-C#uCVb1 z?T<~hj~#V{J#~gdb&1X)+8tDoIlYq*V)GTlN|G~ZJa;ZF`Mj9J8K-1+s64XI_6os19r}EOl2>}PS-KBpP_Mntz&%K z*!dFY&^FG0nR9gzjq_(ZCgU?D!uhitQ`*M)uW!?rraM4jS5UEo-4F64R3)X!UNsRQh)W9+MQ9H}d8d~b5yS!}9(?5HE`sWTj^ zOLV@k{n1r>*j9&_s8bxM3mmJ>MeNVi`(sNTU{@VuU!CJfU18&5?T<~hj~#V{J#~gd zb&1Xov_HCP58LVx6LpFMb%A3w|1sBW#nk&_OC4ZW9b;de<49d$;}Y$UO|_35b%Z^2 zhC_9U&JVRex@r&G>JSrkiUW0lW3~Aa`!n_a*ir}BRma#@=QvVV*tk^tV^i&8M;&2L zo#9YjqH~${M_27(TODGePH~_vaI7|$vp-Ysk1ch8U3H9ob&ex-g^eF;e{8CK?5HE` zsWTj^OLTss{n1r>*j9&_s8bxM3mmIW#{NvbKep5XcGWTV)j5vT6*jKW{@7Ie*ilE= zQ)f6-m*`xn{n1r>*jC55<|^JNZ#}`pxaMj;%WUJCYxvx`jm9Yd%DW6BSan1F7j@ZUEKjS_2ej2+s@HzWO8vBerCpnJP6*hjZ`-@Grj~#V{ zJ#~gdb&1Z6y1(eEJ#4E(Ow=h3)CG>!<`+C(O#OIaOC4ZW9b;de<49d$BiH`eRQuRb zN7z$mI8>MD{8Ia)tM;(14lz-uI8YZjR-0e3KU43IEp>ohb&P#=jw5x2jhnPTHq}0M z)Dia784lGYI_tDQx@r&G>JSrkiUW0lW3{=N{h4}yY^ek6s$=Y{a~!EFZ2VgLV^i&8 zM;&2Lo#9YjqBGF`=&C(zt3yoGDGt;Hj@4#8`!n_a*ir}BRma#@=QvVV*tkXeV^i&8 zM;&2Lo#9YjqVpT=kFMIowmQT_o#H@U;8<;LWq+pLA6x1GyXqMG>KsSv3LCd+e{8CK z?5HE`sS8~9TfXnT_C!dHb?=7}*-JOm();13Aa?B;Raoyd# zcWqANx_kIeYa7?y%XiDy)41+;d_T91>xO*awvFrVihL~$85@kTt17tF!mT957Xrlp3B(dQ~bBuJi_Dn zsAE>H;oqFZ|1g)F9@ako826X9KFt)g^*>BWo5vmVCT8x7VeLb-M_V6d_M)v%G6&P< z3CFyHxq+W$^_bge>jlh%v~{zJ=MQb&f|=&J);BS;^c)__*!vjbvVU@2dIoo4>idqb zdy?DX@;N+&sgK9o)dl{Id6xTPoqdYOiJxoTkJ*F{@D|2iw?g-6o^K~}Id&L(d4yX$ z!(+hZb9ex=HP;RCRK}k37%x<3_)B$xZ~oWhm^u8uI>XuVGE0ZG3T(qb+_j@p0<9T z$!Y5mOkwXMUiG|V?%{R{OkUt|KZWNT9`@pC}$)Rf|=oV ztY28k4zx97-b-7LVRolu95HLzr`T@Vyy2bf#&gfZPuS-23O8^kJ%d}S=Wu7Wj|Zwl zTwv_$G{u|M1wN}b+fSRxoz2_C2p@icXc*Qg8po4Udc-lg4ebM+kVqK@%m z^~}4c`L}K+$9wo$b%;0Zz&ZUI=KTt-_DV%E{tLz#Q%5RYf-een0p zS}wQ#fjOTp@e!uJkGSuy(`Hk4vwoUcNn1a|>`aGvJX7B$KFaLH`L{mCgtYZ3CZf$p zrp*$@9&bI7xsSG<#8kBPbjEOejPY(fzR&X7!MA>lpSv;72fV?jH{!9z^b;KOiq*A0 z-kry5#cGpb+TwBKcw%xik3D19)%Y zavzs`hUXzaYX(2Zyrs+Q8o$Q)JU^|!V*=Xx5HnBDe0JLW=b&kG(VMvM?P>F=gSjrx zw*bGvtZ1yR%|1VEwxF%oG9GQcf!UYN@o}d3FQ1$E_CuykNn2gU{4cECfu5y3Je-Nf zyr1LchjKh^y^7%%`({`kc; zyiPfXF@EI?&dI-NoL|fP`SX1K;_JS`^JfG0$2-41=@NJP2KR->)EY8xp{*}Io985L z-H_Rfw!UeB9cb$=%!#zMt+viH3tS%I|1tLVtux=`v7@cuW1gk0S2D}qyt?+bZ*e?r zeUzD_txJ+gTN}(OE}z9;Fz4{Nr&{hQhT)$EA}{*(8yY3>U? zIkniV;j!Z%4K@c&FE+-0hT?8Z7MuHC%}0{Ss~;cV52Or1o-L^fE4|XYgG! zi%oVW``|Oo!5nX1zSvyD%zl;og6D6z*!X8~KJk9Wz8*{5b_KU%Uw1gW@nTc(da+)} z#9t0;e?_0qbIE!?lhGx<^c9n1tnXqT=6LHznCEF9PhjlrSZ`!jab4@3%)a(^aA{+5 zjP+wo%JJ3%nXBm#&tvTESpUq-aQ>}NGF#AQlf~u^=7#k=?zrWv7MnSq=X1E_rtI&~ zn7oEPc^##gZMN84!tvG{U%R;ej+*0Un{%5SKa0mRIeSKEUe9iPc32D$jeEItpoA6d%7kC^~ACG@lm$<|G zCzl5}?M;5x3?9kU$K&tSCBA>h$>kpIuMV)W)8x9d_$9_(H^%)wFu6Ry3mJQPhD&#z z^bCGU9pmll*$;AG7<+t$yL@QUJ|3YC@oVZBE4B5L&B^fr-lVRuwMv)cKwaQNyG-`1 zaB5eb2MigzgY{k};JIYIpP8pi^gc2<#(FUm@SbD6l$ob9Z0t5UW){2Z7{_Y!(Z&34 zs_JLqH`FQqN?qVFADiqJ;m-b~eO&SJNzdY1rau4pn7YE8zIbn5pS(}b;5(S@dH`VuEI%AKqUdsf$=Uacv%+m$_ zhp|7`?8j@LvG*&&A!9Eu@jd%b+Q;9hE8I2E<@g(Qg}WXwxxB)C4xDs=$1(Qz8`is+ zH9S|XGoM+^ziY~S2%gK>pPS+bKFfRGTHep`B<396e=__tV;{#7mw%4On$O=E+>VDYF!uL0<_kRk51pI`bJ${YJ##Fd zp*bFZ_@pCTdc@?I8SF52=Lo+LPHrc}Q&&$q#^@;aIg4ZPh@-jgSGbSZJBItkXJ3X_ zcX*%VGtnHo*sNsiW8vYvI>JjC`?E5R%?VtWsjrLk>Ikn^=lHbRoXGJ^eLT*qBfONU?-$;$E^+gd zCdbd=k?IJqR_FM%+MK-D?8MmH_wgI*6mMnh?HBl*+ML2ZOuY}zt0TNxo#WGL6LCCK zACL3u2(MP>__W%b%JEEnJf5JA@Hb4%YrnuRpT_fp?^H4VkMRu8fzub8!t7B|5-A?2h=65_~PVe&EoFr0MApWcq>z%2YmM#+6~WFr}#fL|3}2;&5S*M z4nM9A@OzBCUl~5BHfuTmjJ@2)Z!;m^4N|;EmzTKbmnO#q_?WuFqrNp^ia&Q-uVohTXS5veW$ZE5 zm;acb%lB35$CwqgkJmHy_H*3sCzJN@7IlGtXYB1*y^P!8bIN)$vx1Ir@fDNn&frPv z2&b>q<@jZFj2mAyxqKGSRj2q<#{MkpimN$>J*}T$&Y~myI%7XmGQ9D6zI%V4{qgpk z=fm%Ko#Oew;%9StiifV_n0q;gc)@y}Ki}hWyyG_hJj3M$zT$SiGhfN)J05fgeLu(J z2?ekHOL$E2%sY9`{GRWn_?O@D+~&`N74G-|-%lRmxq%n|nRC=*H{9T_9Dg6rEBr7s z`$LYwmpsUA^5>BmJe%42JodpAf1BK|SzJ)3xZ)vQjtlA(HyY`3JX@XOMi1+9JX@XO z%-<)MTTfTV_>xC-Id01w%j?v7B(sLLp3R&?r+5=%kFieugY!UJw_A0yk3 zPF^nsu6k_pe(2+Rb%CFHe6hLg23{BV6UP4jEyEYo<_Vs+jJ@2)3)Cq-uCDNX)#Mlt zzp9S$PwEoi`p?NRb9k~k!rRpaZuaElm{~kR9pa7Z95;PR$KXlo2>+-qafhe14}M3T z;`3_r44>nSy-!z_FK8N2{r?~jp$>lS6ygI^1)D`aY@5wO% z-pOpu`(BC3e|WFs_kJn1p5wbZzlRC1@jS=a-|gU#dH4yA$4mdqd;Ci{hOzHU z5suYn(GqhZV=vF};~Pvmz?2CF?2je034d;~&Q2}i->~J+=@>ApUdj7EZaTfhm|t+e z@PWlk%-r8N9^b!Ya+@ArpiXi1(j{gszZZ(|({)`;OdzrCgS%<5x(fTmbKN7{ zcYNK3ON__wm*(&arsDD(U%8QXz~j^r=FHsYd|seg!O!LQSJwR*d%ptwg*r!fdY#4nJvn9uKduh&yXqAG zqOS1mZ`9Al)6_BEsV;G|H|gi%kC~Lu!5mL{%M$Zw%6Y)AG0XTKWxa$+x!k&B8_qLr zeKT_#ZC%eiK%2Mnd}r)qYCTh3;FIdvxAD4W>SOR*Ov>-pQhb!jXzPx1+&*pn98=OE zu6aAJ4ZcIhc+op1o#BDo@qDn~E%6Q8^E{#F@V87#7x>7#CdXH}>0e)8WV zO8nsamehZq_3;{YiBs?AIl!N(t=lkjwAEvFrmcrE_89AeZFaWyn3Z&a|FV~JjP*6% z60E5@Efvm>{|*q+5*n1eaS`g40ZZM~I==>j+1 zX-WOxrUSfyc`u)LDgKwSw=?qr-g|cDvEa|zGx*^T^7DSoa~>~c(x0#cKJp|$Bg$~&cgvq%z!!P9-hMo^4Y}L`;uY%3+#Ut&kfw_ zNcMk#>*57R@$>lXOYvF8{yDdmZ>I<{sMm7v^EQ!spg)9>G{m$e3 z@L3$-=I3)?_D0#Gn6giTTKH*#Qr^l>2!uw~w#BoY&5s+&(V) z3D2JeZXch{cn#df?O(y|U&&+7?Ns>3tCyI!+|KRe%4=wQt}tipV`Tl)&v`+~Bd=?I2N>Xoe=%tvf5Gg+?GV>+Cw-A86|_%=5JMdS-^dUyEj;c#=V$N|#^=u_8Q#R~bqn9;@xM$!TQ~R(=Zc=e zXYb;6cwLyg?Q4kh^DyTPxBC|_c7e* zATT*cVG&tv@-a~tmi)~lEY=^S6?F0DT| zt#4;m@E&4ynXPFLf503XhqbrR$I{k&n6u~-S8YEz#(D&^l5=Q1o>@gl_{MiFtv@5? za9_s0jskr14(xCa_X`($OUotN^zImL4Tul&$b6TQIxxVFhL z{7xprMZ0kOJfCN<^WjNHSnayhZ1N(0pM&c@GTEWPpYFEQ+`#K4$G3iTso9?ETF+)y z(bnsjed!!;|JYLFU(9n7FY=d~jORdxXMBS5$$d%jtDoe&@mR!o^6s4fKd?V8+GDAC z_)>Pm1!k7dkrcOSa~>|^GYJ2EFvsv`So8U%=4;Ge9G~L>UznV$5Z9{S4&_`u!R2_mI>z5I_whO^aou5)oeO;B;Y-b1c>Y@tXWmO&?_zwq#Frew zIp;pk;Es%a?0h^*mq&QLF3<4=rs8oo;Zn0FV~>yUIp$ej3;cn|yq>YQIfu6}8ShI4 z9(^RwVIG$VZ#$an@_H|D)8jZl{I~d7JczNk8R9>g)SkEFmzq-<+cA14a6Hcw>z*g_ zvv>{!_})`^TzQZ6u*1~5;V;xVKBcxUkCvL4jV7uomcQ~6np{mzr(hNp23`HTp0 z#Q65Lb2`uKGkEUtSj^x9YnSrxU~@ik+b^*vkA=0vTuoc=X4c!s2$M6H8pEF#QXDW9 z?{C)eSxe3HwDlEV;r8u&7Z%Ja-b1V}UEn_QUN?h_zB##k1{(=G^LwXR%$fUmjI51w zIS;(o&EkKUXF0d#+e^)M%(5H9+P&#bY3nh}93A04=S^-Wz^%`p{H!^=_B%^W!0)$n zJm?CZ&p+e*;45zCb^BL#z&)9Y^J)FvueraxmaX?Qo6sdr4LJXNhFa&Di)d@iTt{24 zVpj3|vA%CTKZ~}0l9{IiJnNRp{fhBg#@?oN%inO$Y3q*61GJAvG4?jC|6|tB){SoE zv7=|P!`Q#88R6BozsUK-r^D_|A%R&i7a!Lp$7NhQDI$ z`7iNFb@0!n<__j+u3O;ypXBye^8SF|W9oB-PpZvRd`>ZT&pG^*I!6C#Uf0}?b>zT-!po4hAi_~PgFoWY&c0Y1yD+K%_n z|8fo(vpugb{0C!qtMJwToAfO1s`l}O|KBh0xxm=tQ{3My)!q znZua+Jm7!Tv(7U9>i#lgIHs6hW>zj^ZkyuxuHB9$H=dQ+l4x z@ry5AW*+_&&nw*d<;%<(F8A^0jQu>F*>IUTEnQ}|=00Y4>V?b9WgI{AeSR)eKWFep z+gzUG4i_ym=hGQ(^aJh-J&WfumHoN+XU6`nz`CTjjQ=*y-!;WenFr}vbbq*P@|_=# zVb*hbgqQzlnVF?C9ACEYgRJ${ChaBj_^{(-uDdeSC_c=^&Ed7&td%i4a>}J zpXGf3SO0?Zus{3b>wdM&WC6e5!xPrA&jDPHoBW#l#WAz^>h;Tv$1$^b#a&#N+stw6 zdzSHkpU!>1m&b^Sxqa& zuY>qI%-DKlnfWYj-S8jF%!#yhZ{{4@x<7LXZ9SOD=@5U)*xRvg`{*+B?7^#RAE#%y zFV^iIV^7-p9_GEYb!TRG+Q)Mldpp*R9%mmex8Ba2NLx34f_-S~tC>q^>lRE-&*6@Y zeSP`3;@_N4ZgUp*VC;LK^?GL2=T_I|^uDz9?&mpgZO$7OFJ5kr<#Ow3Q_D?7$9UM1 z<>pX2#H$$le9O^UI_Vkwq&mRQFJEr%vB%@=hLh`B?_=!uq7skWXwngWaK-Za@5T8T zY`om$T-UnpjqJc~@tc;LzcSk&y1Mr8H!n9k)7E2{fVQ5&oJhx5FgedL>mTj^o3?(l zx!gQVTmQ~XbG-ElW>dPt!&fag=hGoRtv0(XH>WZe+1tmLe|XY!xF=&jUjn>@Ig4Y= zuFK8FjD1{Y@qLUv#=|{yd4NZ&BmAa1#cR|#-m9Md$a2$S?Cl5mJ#~h!*loF4;PP4A zj5orta}HOjeLPql;uqB!-mETh z*(WBu&EQ)YyPJo5sAIfXo#D;u0v}a-pImPCW9Kd-Wv-% zY#+|!!#wBl|Mune^#rd4d|HwQfS74JFt=>xd_<2(=X?9VJWYyQr6Jbd)C z+~0q4UEJm%Uc--ZJf3p!ax?P}K40*UUs!JZN4QO#Ih5z+qkN9z{)h8^K?l~={Qq$~ z)|Vc&+^pp1&fwdQ<~@PS=kTkY<>n*YevI!rZaKe~;X5iW9KYOb&2A|sCvtANUnxGr z*!LfE(sJ`U#-4NQDW`BgpI%*iF1?0M@yn<29`Y2okNd1yZZa+p@a8YF1D6;0#xD1f zpF4;5Gxhr$KEv3*gJ(TpE$>mBAL|j!JRRcIXR<4|nd4JuvGX&$Z+vCBS@KoxKReIh zhrh<<{45{iv$>BPZ{28N^4^e{pDP3ahK_&)F34|0C+(Tln7TwdW*J&ykyJ72Q= z|Iu{k@p6yn|Hp4c#g|2SMy(k9}wm1XF_4 zI@A)i9jzrLVpLSrcI>hLp4ZI${&+uL@7%dQ_kG>hz090FEqA9Jv}dqNPJgZGtGJlrb*&4Bz22%PUPz62{OQeAn;#1=ST$Wm zvDOuw`tPPM;kdV&zJNX7ZoaN%aB~{}$ngzM=BM((XX!$|6AxY}4>=TY<#$@o;^tI% z)U!C1rtrZRXa--$V-~HN>JOVEeoQ643r~30`O<$0Kc^%by{&xY_@jXD5&6w0s$l|5!hz;~Tu=lU36kKKSFO z_7WdF=reip!OcIH&l%>0hf^D0#J#$j{RGeZ!dZCk_y*tpa@CaQgCoCMHI3zi1HM)h zKDa$y$ai4_H`PGiYhU(`EcMD$DuK(NIOL)}kJ^YPaW8vI2#HeQt ze_X3ant!u%v38HN)o=MXtR0?8RdWokwr-E~C?DKyefjXgeW;5M9!SZ&f`?It4<1Fs z_%d#^p?UFnEK%)Bdn`!hSLB1g#=qsCay`}T^+@CXthRW_#p)CL8An{9&VLbu-LJJb-jo}DLGy0muj`R6r^e@6al7k# zH16aM{G#R44bJY3J<@P%UB6t5R)wmo>4+_VQ@dfB}GDjx6t!vDQvzo9=KlV*OPf4u7l zV@=kMC;pTW`%{bY( zxXI2vQ|@wWfm1qqrrJx!!W$^|Lon?nA3nG;&F3>Xm0}MEZ=!kb+u)t_V%)uWz}`I@ z>sY|s!_U!MyG`@TI>{cQQ{*E3y7Rrh2CC+u&&=U5ke*hMq72Qw4&@BRtyO(i~f zI$gn6arvX=>`u$zk<|82`QT?XBlZR!_a}M8{g0a-BOiA~9{FJ_DsWX5QB5?HQ(3tk1JQ@?>$c*NB_-!b9OrLpr_RC zU-lS2_(IRLVumM%%oi1THtUPCRn!Oj_Xl z7IFCE|i>8FIt?3hWVr^MsAJ7-ddJFSc>?CROawd1tC zGpWrTRl=YCkV&Jprvo!-IMuv%(wRf;mSF?s&L-zEvyy%XsnMz^&c~7et6t#LMD~@0^ai{`F&@; zc*-&6%a`z#W1IQZagF~oucdOv)2Q+B0&Xzb+KDgV`zKlpFbvP znY8Sw`r&hU*y-lT7x5vQ$=7g$KYP~CGIZc|XJpcdAIv>CT^&}Kl=654Wx7vla510d zgJ07KKKKKT=F{1kv^q6D7REoHE1y*-HFym_jj!OK^X$b{Ci$MQOuFp+Ou8`I@dcXg zbBw_!E-;oHg3r(hKKKHS<~#8hYST~fsEf>n4^E`fd~h;N;7j<-CFaF<;x%RU*G~m+ zxQv&71)slMZYznw*RF6besuQnvn#FjX+EaI^{;B~r5s*-b#slX_}iJScD%Ud%Xs>= z^8Ae)aL?=P4R!9odnneoiv6x{KAXjr{$kIpILX%|Ja=m*t_m4My9>1u`U!Lj7OnTt&&IMn?gPykE#24`7XPWUPyyn@auiz%n%UR7k z@H&dIs`%PJGN~%JIv)0ddxtOLMK8*2`AMma&rrOE1_!>xt7mXmnjW>qPw5K23-9by z2mMqr^O`%Vn>t|a4Pz}UXZ&V?J+qv-{M)&ws8w*2x8(fu@eLmJb|$UD2Pe|{d8 z5lftrU-gNlkMtWk-~%7a-#XUtx=);)89twY-9ByBHiK_}rsir`$342t-Ja~gXK8fI z7kBzn4q`fR9wp<}@ba(J#aI>mjAGw*Vb8Cf-^dN$r;Pl&u*WxYK3F@>prV*E-c8f_ zDz5Wwvpt9ZplsxTJ1jM>IdVg0!pslWkq>@N8F{83y+%;%pECCQ#rci<1h-7R zyrp)J;bRmrHQaicUcPT#I~FP0gR`h{9`PA!6BFEE*P(Sa4rfukUU%XZyQ{PI3cf?pUdJ8xX!;K9zGu^C@c5Q5WABb$DJRc7 zUQAiOjO*^z%g-*T6;>$54gNLS`5Kq&+)-GD9;!6?Ul}_`T7i=w12Pk8Xvrxmhu(sen7J(8Qhg3w+`Iq54{@S!;{Bu z2R7%M#iyv+$2r1v57NJ}ayaQ=`$2mNKch|fE}VFX{mB>c8;btZp}o>-w8XQ)(+bvx z5B`;giLc>88mm3{85Q_o?(kk|3Lo5*F64vT(Di(9SDM3j;HF13*EEl>jPI5D_LUp1 zdt|RvH&*Zn>f(cEQ8zJV{E!-Jfqnm|4%&m?9n~w1;DgId=#|Ft8T^?pDn5%7DdLOxElrR^<^p#MMSC8nP}HY{izw^aI__~{v%LeS zw|p6QzrlSy#Gb*@jpntQ`QpkId!t?dxE)3R9k}Mr_M&lfcBPme z)Jl674!G6c=7Xbd^DH0Smqzmi?03y@Ht+T6M#{UgY&tz>%*QcewuX z;LcuYUbJI{mTC{K@K5Wm&)}Ifj4$Iy6nS>xh<`PG9&dTgc;-^Y<6m!{{Sr=n%O22Y z30HmJYs4^Xid+5HT-KBWUP-Zb75s*x|ICNI(g74-KMI~go5&$JhepSI@uUAaJ8P>6 z?)hVe2MakX>=D&5H@WFj(7@z&lx_z%7b1&fe6m_U#z2$?0 ze`wYuxDPFGu7k(XCwvi~q}Z#S_yxu9kqhqnqjeP%{3FffgBQ_!zKjo2j9bHPe`?;7 zd7SZ!*XFN}Ph~v&*XDbbGG4Z9@5a{|>o|D1-i>FoxPQ0a=_h>_@ZsfqrwQw;E&f80 zTl!7!wC9Sw{eD8{9Y3c|F$ltuU?H zioqg9Ot9AST{xgeGd}p+p1sq&jV3j?A>YXdH>EnC$GbAU{Vp>3k#!}#F3YxYhf_#955n0pD+u;#PDwJE+=EqF539o3tQkUd!^i z-f1pHdv+sxgc|!{OPMc-3a+BEEvpkFbCEPW+J~ z=gbzp)0s5fvt_)A#__>VX*?hNjHdEk_$$regGX%HJ6*vC$I~3Xh__MW<9DoV)!XOg z<$$kIj9bS|M>c&P4{7-VcH3Q@H<^?&*s+KCZfQ^A27B6P-V5dM7>a(1_(IEf;u;;z zadTMN%N`zST>J+`-GZa{wwJUA51=d`Jd|>L0Z*q9TTN>4kNem&d~hNi%LgaZG`@s4 z(kwo>|5*Ev4<16V@xk%5m@ne36rU#veonKE8(e;0wc>*-(~EotyJ*DL>W_=|Gk3m@ zyX`N3z5{=zxWm)9-f2gQz1o3SAJFs_EdHT+M+I*^(7JDHkKu|3nfrFe!pRiRmayLP z!6y#3-^A2#_#w@h93FY7IC*wqpMtaB-S_+9E;L_m!LhWEFJSv&z0-niCZ#OiM{V2c z6SqCWzS5q@uJO%0gWZm7u4x|EKFYevA%_zuG;=88X2J34*uyparRCEF>POL@!wSWk2A^%Ucj9^% z>3@6U;;j@hReXcu**bQ+xal*v1;xDbcmg$lpG@zxq}ASqdtcIwDd77p--W*`H`{YK zlj3953cgIW9Va!o{AFsw2Un&pKG=&gJ6UU-K#^M!7hJBd9jpsJcZIr%@5EEC^nd0R z-2W>5@WF$roA}@n)W#R_m#fW%Pcz-^*UN2`vw&w&#k0Z9Zg4O0!9!?1U&9|M@<}%u zvtl3YEFZk@X8p*yhM!aHrF4t?foAVw&)|D4--XNlr5TgMg|jI7!H!#v#TRhX+nsmM z=5g*_YBAb;@$)&x-pyXZTkh_irjMD_;NW|_9`L~}XfB_}n<%~xQo&p9ZT4Tq`|el& zUFD3WxxG_apTYMia_++O9uTj+jC~$-mc<8W(GWgZqg?cZ8_u)u`5f**QHKt^l}5`a zIO=b`(?NW298KX1xZ1<|+QYN>K6T$y4mkLcX3evBIK`eU;^;@^wy(9rDn)znl*i;S z)?D!Q$K}A+aePgE_p%4@LW=j^!B448Kf$H6J|FyrM)K)N?{g^Dy#x3DyZy7boN=e8 z^%*(fWzSk8Ialy!YV4EeoQ3(;aUb)-nUoPbtvNLb^BR9HC+2W@x~3_P3!Z)CutPliQiI5J%hLY#~k_KZ8V$j!tw7n@3$fz zx!9c*W8q3myeH!`c!v{b6O5OS3mo$M-U#rQ|-l>Z(;gd9j4=(?` z9QfenKgod)UPqmLa2D11DqguvpVW8%NeyoBn?5PW2REV7d>&8g-lwsjOZegc_bc{E zZ?4=YjT2MHDO>ePCBB58jO^3cZ(Ug2y7_Ey4#k}oTy~p2X}0*_8C2tgyKUPiE#!lT z(${?OYU(y_QiHeg!}uybo^Os-!(Fy(j@5x9x9`((o2ocxOrKQNUd2oqfa`4mhizl&hL}D_~2$2sKWvFHl9lPKTK-yfQ$O1 zv3&5hOXSH{aljSk&u4LiYs`Vq;r`bdmoMNXir<+QeBcH()E->tM*AV+aXiK61cDdS zC)$IzQ996AIJsh7_!6#kvwrvt{+;4$D8c=2vESq$>~*WU@WG8}B%jBvZfmY%9;Z=J zdvJr>{hJS-GTU7E;AK?hgZER74?awb`QUs?a_+<(@95LGZ-cwt*(Z$=6FiU#d;wp( zyHA=czK##wr_Sb5!_NE7oevhCu{ZeO8x(t{jw?PZXYIi?Xc`~9g35gGHk!i+cYaQO zd~hFH$QS1KNsFl4K|VKvZ$7WKd~nQ5ebNX%xHpaA^Dp;FXLrim>rNT3qR1!s1WiBK z*MD*JYtA4aJeO*G@O$dy)9aq2iavuSs`9~Y-sqE_=7TG|DNjDwlRn`yxc`Da=_fw- zmi{=z2bj$Iu);cq+}~gU`{6e1m+Qe-YoLF20V>uH4u6gUA!FShcV3sZ?it zDkC?(6DRiWo0c5u^%SS|>6<$KsGj&T#s2Tad;7{?OcnF}`lc~_0oU#C89s-5w;3zi z@g$1R=LB!2;o5_@(@4IKs|@PfxbrhOnqsUD96#7v$f1b;q^M^d*B;W0$zh!u?ReGD zrmx^m?M>f-HCn2l;0;+h9A)lUT)i0+ymSpQ#;xF+)aVo2*6f=mh|l9Biv3f<`&zz+ zTMTQ)=kXMZ{4;CyO*>M2y}p1OuhTbG^wWXAP?1l=`=)zn319lHxvtx+Lmdxa&$AP} zhrxeSBOe^HezX59w*Sr=h{@uY6#1tO`lgd9;!F5_%cl*sZ)EL#F0_Py+*lpH@%4KA z{U&|W0{!H1$Ia~rF&((l7V^}d!OtkZhM2arH>u-jHN*uJHL2s8TQ$ec;SMAF`Z+%H z#WyKF7h1>bx3*^SEdEIGY}!WO)L3^cZ>RlF=8h}wU_8EvFN|`&e15ePH`_@)wde6I ziuq=D?wf9*y7o?N8{KNh2`yj5c`aYV?z=Q&GWgA|&hRnTWw*ZR!7=`iui-wso3GDB z2k)T~+JleNn25n=_mCUki6cAA=UBPnlY2R9d}na)<{X1V_mRK$EZ#+te+}Or>#osW z$Nl$hwiofCmapNsgX|eG1w8a%^PI@zV-z2k)$oNw><#U8EFIdce;L~gt(xGgG&N%I z@Wa%ZFX6QmYf-_6TfT-X9Nv63hx?5;-xwE{P`sZB?s25GJ8n{ghw#Jr0&aa&UwVFf2i)#tIY$iMe5yUlSMm61_UKBJ8tmkk zY7c%)t9UkdTHo~Z>2l@^f3{vFYdzUHJ)>{>oMNmlY(KNPj#>PP>SEGa?oW#K&0~S$ zwJG>2Wu{DOa4|oO4}L)-_%vP46n9z&zD058)N%6J%{^AapUyF_h(FgnDDtUcn$h&Z z)hTkw;e_+-J@G{xaelL(Jg$C$_0yiiOR4eo6kOv%^F2X3o=nky3AemhU)uB7eo6Db z%Hl0l)n3K#DB`naucwzl6+9dK^PTQhK6nw8`7(Yur?0=2?ll@uxknvO zw(j@#O=GLgu?m>K&mPbo{Q7=t$LHquO{Y_h53cusear_((kBs*KZe(T`N6*FX^Q%H zVf#Z(pU0IRc1};#Cmu!-Q^X5fzKqY&a50^@!Xr(e#r<2pfLFJC1)rnnrxQPJ`7Z4H zXlq=kQ@_ z>`7emq&*zZrXg@a1o8->v&Die(6PHRd80Xett)d z{_#DE&wF>_I(_=38Q0tMxTs&hly2}Wjvml2P31dqw}Jiqj3|$f4epmpH>nSHQPeZo zKBQmc`+kF04ejS=aV9l*J)h@;w@`u4xA#jwuBLs4nq>R=et7;o^~c-Skn2_Q#5acZ zOA9V_Kd+_FoSd#PE)LkJUz&H0*G=4;B8MVgxUrnAX%#2_zF+D%U!8H}CQaXgM^b!_ zG+3e6&Q%{=L`(QOeoyiFz~G&mdj5h*4L-n+<%5sVc)o^DZq^*P6X$Q<^l3!Dv_3^X zIs9+Sr!CZ*qP>heY}qdjxk3&&YGiXR1*}oT1draj>5Djg+kUC4ZaJ(_oc-W;6!AVV zN!QazYg)yRsj)^lY`dn<;rNy>;&l|yR`7+E@5CQlK5gGGtw#})!-*|l#K)*{rts^Q zPdkXGMm&zE#v0*$Enma0Ti!QhrgbQOel~bGRjozv0eYIR;TIJ9Htp#Dsc?xo;%Ylt zUolzSonovGyqV(lJ@_&eFZMMWTu9UTI-aq!y=`7)>^s_;#p@%MT0Yp-@|j)wrQcEI z+DQ$*w_Cq7hYx;2PxD>)6UE$vL&sR(>n1fgoX_#WaWsk#9vuJXgR^M@AN(6lZNZslPsJ_~fD1gYU$_h32?f-0-kwJ&X7~#n)fb z;r-Hi6uyjS9ntKwjK%TJxPF3nQjAr_5B{h=7s>};IjY%bC+>Z;d&Ai&;5igu4=Uqc ze=r@1Lj6W%t1O{Zi+J=HmVgK6Z(@=%lB3!FBdo#Nhu`BtA) zy+w`qI_7URFFrVz8t)S@ds}PI;12Yfa}+$2mhi!g=qEn-9Ic|Zow(KQ&1ds??mcpo za~aRSx3#bEjJf^NH0xf*d#TN9NAPDF#s^0~V2*t7Nb2B&AJKR|*y}-K@xlHygAe|e zX7a%eX*Qq3gDLKT0>1iib5GW>*AwFHhb*pMQx|78hc7?bFLkrlo%rD2)!*K(;bG4- z>sG{vp3}dW8eTkK4q}44J#QcK!9!>+A3TDd=1Vy7AI+K+ao7vZJ&?maI-ON zwRs=r@Z^6s*QkVZUbD~4tBQ+gp+18vysjTUcp-Ijj)K=w8z1}&4d;XZd81z%!3V#m zv3zEMxxD2L<;(aw#qW^_4u0F7*B)G-7V-ITc!Ivm%-if0>biQVq z7nZ0fCOB+~fAhgj=n6iM6Dgi8;+vm1cURlDxaz0P_6%Gbb@aX{eeEnz5JI2d;i8gnZX??r_bQp zEA~(M7z;ODwSOw`d3>N}|Mc~3`oUc@axkwB{42%h0fH;`>Yt{I3GPcX`QTeEAN-=_ zgWY>KV}ggYd~j%=W_xg#mJc4(^1;VwPUM4&D89cacu(K{=~3;$52%w5{?zipmHNqF zdj?N#>z~H(!8HdOgAd+LQ}`H#IoBJ?_-&4G|N$aUORn;oE+WN-hgS*iJJ~;As_936g`5VhQ zKK8^#TUbZurH-G`L1KbG(|A5OdP{TRgZojL58h1`zKTy$JR7W2G5W+$Xa*nLZma(3 zdOo-(Rr%l*RO5rUQzu`=14lM%Siol~=G%$qZQb-`{GQ@WrEU7BeJE;Pz)PsEpWyGd zwT^sn_q_9CeS?QnmM`L3+co>l;aG~hF1XkB^5lbmpcnbzU#QLp|4Lu;!Buv!Pt+mU zhx+na98ZnhM)gm#sOVm;;&MCoPt*7e{%a@C-mY#qcIQ?+{$_MDw+!B}OVd|yo!y!- zIXtN43wUA6m+@(8)D63hY4w8#w|oKbZuvT{yu1A~+xN`i$26Z0eoc${;1BU{KJDQy zrN(Owj_T0=9o_@uKd5Xjo%jniV)k+tDSYq(8mXV)6EvC+enaE=U}kUeeDFY;!58s) zYRn6Nr06s4(?6|8;d6Lk%NOv1mapPR6rUdst~1uXq0iuUG>7lNzfhc!Dt<=MXBY0b zuX#F;1?;iE`j}%DH>Y^b%HuH<@kP9v;&c1K%sBT(%muTwKA*!QDCSbcdnul+;+W@CaVm|v%WEG#O3`OR@OZgxU*59IL}im%xPKcs2aCAiXw)_~98AvB5) z-bUm2;7fEY--&ZiYK~RIMHIg$Gx*@ia+7oLDe4yS_}f$5U3~B;%JRYKvotl$x+H}fgtQGaf>7x6-BQ=i~08pa3jEygYVIFKKLP3_%1A-A=lWSxapbR2g)tD9Sz|Nxa?WY+%mWe#kzFhkreOG zgMXunIs{*&xqR@SG@s8-cUGuz58yKAyL04_!HE?2f9{U{>3xd73($o--PsxoZ)^D~ zUNJ|^Lq0aa>G#P0LG{NeRq;>QOL+WT=j3r7`#oUaT9+)oNx7Q()c-&?{v!6V^OeOtv;=yfAU%=zT8>@t0w0s&kAWa`Mz}Icm8S_I1 zq$(f0YN&kp3Vz!@z|Z!n;c5fY7F6YfXVQE=_$n>ogN3a8A5|ZmK^Z<+qhWmTdy0O7 z+pj(#ZK6GRDUIcW1J)Rjj^%^f(lkDJ5|#N9en=HQxaOM1;DZm-YkctFVRGYxvuG(_ z#qZV{kh)uowDy3s-#P>Q4hcEqgTvK|ui^Xa4M?5#Ko`Egq50ge=J=nC_UO^H77>@oVc?q&RvuIJP41N<&lW7+3j_}xAOn(raUn(w{?(%0GxIE!*m zx_@xZ{p;7jFEgW_uo|w0sHYwtNkT9OHa>oyy{B#|}vIo|PM}HqrV%$K$;4=2gRS z$5|J77O-DY{}F?CP4R#7tm0ND^YYB&4W|r93p`uFw4q(ocMFF|A_UF5L3ZYA4S;u62ezKi|EC{mvSY zM*l-UIG1YAn-~6fx_!)d;q@aYTHM?PJ+{YCCH_3yx2TE2>FU2N_vO=|E&euVym*U}iif|D*W z7eD7!!qv)Za-MnN1d2Y3*z?k6dj`i*v={J8YP>(WY(P4VVyxis%k6*t2ggv6@4(5_ zxJ$8mMRVL5E~1!ky3!t|_;{^^FSL9o7O(Pb_S+FFF^vfMSky9DZ%{*&NQKXs-lY?ddxAKQ+Er1aG7f`UyToWB4vCUO%AmowkJSe!uiBQn^Cf(Yy8fphT((DBV=Xeccgq)Wts(mPuXV>m z)@}3m?DT^b%Kk^5SdV|dFNbJbuPu$>g9Vx)pJ0XNM?BVPbmWZL_2sNS!9vKh!3r&j zc&yX#h{x>j+R_B=!2;DI9xF6D;-igfkq>4!kVC}d;gr!{#QSK1K5LjZY)iAn1oPBg zd$2@H?wvyGa6WsUHQZQIgfKIPle zFq**!f28aA;C9=!rFndCCz{U($F$lz@K%bmS;b>^Fn{~7h!b~_zj2HBhR@)JG@TFbN;CQ3fI?fE!v{B_8XtUsI{6ybDPCKH zn;hof+JigNQoaL^r?_K-uN+YBYq^`g_)z|pC&i>`UG?2>v+R4YAvRM`H5<% zJ$TD;#`@k|aEqco`8V0zKZ*tZ7=j`vFEvBq8-ngVa~=X$u)!%{+5>YRi}K zsh01=-j_FHvUuZ_`dQA};ptb~Kg&-}C0uQ$IT|;MPtb7v*Ko*n_L4lac)|_ttcb_O zH##rf<&1Y#)S0j1$2Ys%qaEkoVxRLheB@U1{SA+6-L8LM)6C)0JM4e$>CU$F%w7J? zcjEbfHOCdq7w6vZj7LAX(L?gop2yC=xldLUk6jcs54Jzt+}l~)i{ks2f;Uo|_~0B` zpReLNkJ|Hm4$phcvwIj9Z>f29uo!&s@9wBUa=^u%*0G;C;g8tpF3M$?6&g2v|yC} z@mnfwqE@R6OuteJzv{sBUs}>vKKOZ$fqwTFk25m^oA*49?%nhqxU^5xr@jNz?0!vO z#eY)Nu#U_2Z~6?5qBsj3IKAb|_;ky6Vz&X!m<;aS@&&x5<*WGcY6DYlbv49)tTWKp zvdkCX+E9KQnlJuu^MPspF7n5zBg|2J3A=AGFjd57a3-~hui)@4{abtvtJIlQPt0vK zFcrlItF%P@gSnCF6Y+Qjm3r$3yKOx%%~)0cIE8Y3jEjqDL=XAk*lmoLaUSt$TCkG* zag%M0+tZ%JSya$o#lHE0zSeC&;B?BYY+vEmwA8qMNsjL!G)Mgx@j2@1rB7UEd;PB> zPdt}Kh%e)Zl$B=}?!1Gs#CPEBl*CtYg;DCsXYeR$6H~+Co%m7{+w?8d8G zgL@53d37t}HixO*5c9%UX)0gG;}5qUVrqE6cy(UWv-tgy=D4kS{c&Kr<|sAEsV#1C zv^wmjAFLkB50fWmi|Q{vSe|U$jf{)wq=Bg>KDd;Ii_cBPll>oGz!gs!nC7WT2LDDi zHK}1bRo&D)n5TJa9xTy>SW~P~rj7GJ~PoZ)%#8SJ1owF;Ig88_HT`PdJbIn$bYHrPQ$&j!DtrF=STV7irN z#@@y*D(Ewqo36I{3>K-b=D~hv+cUBM@fjMey%SG3M-8=?aIJIIUwaOVG(6^lRaz=0 z*hMqs8O+TP7yB0XJ^TJ=KyY_U!z;ql{wO4T43-!5)`s2G)aEI6N zgG=lg@m=`MW!iV}?BxT~O4k~9Ej7VGHxEqX^5%l;&Q{Nj<$zn>t0rUA3QrF2d&^5W z`>*D%&nhms-(J^e9lJkhy??Jy95GM*_mB_f{$_3V)FK)7X=7JMx{z1+f-bdqNEL=7XN~7iDx0$D- zx()L8A;jRt-3R#@ZRZQ`S!Iyd0ec(&+;fnhRW~l~*?Ul$p}hmYq1pOOeFmjlsjSZ` z?%Q`zYSUi8<@@n57Vb?8q8)FcTEye*wn3@8Iacw#p?uUFS6_2bnsB(e;BmCT-UtpF zHptHrPHwQscRN!4nARGUhV+@z;EnvO-cwQq_ZvPa4d=7J9h8@%#_QnKjgu@OU)VNP_IKJhJIIHEWxVYuJaN|NVK96U%d>OB$&NYv3 z@MZoWV+CKKBA*T$lun`I8RmsQgnvZ);o7P5L+$tjWxJ{W5ym;np147+ut-bzVCfh! zuZYJw&E|v4A7_u1#N(z#{$cgUBPXeY{)>3!6zjg6eTB=PtiBPCC!EHMFX0Dg4Dz`{ z^}&75v3AQ&Nd>&-Tw~p6-SOWutZ%1r@z#r+o%5_6o^YA{SV7GbNkCH!5p&8Cm z37@0*-Gjkx{$?$1o7~_o{1msQqu*ITMDdn|`{g}2A5xZd~TmuSbk zXtq68#UVe+ZMy#PtY3^P=Q6%b@!Hpk8~keA3q6Y$Q||9#@G~lYW}o05X|T_gx?AwT z?t|0l)7_JJOlEMJH_zU~83P7;uj*Nx-99*#ACen>Me&-RU2SlhM&+}tBQ6a8m|Ee; z>|lSh&fdW5DgPUL13#lS`FG(qtMlrd$BSv||BQu;XukM5j$A_yXNtk=!#`>-;ZIao zpS0%SbP(m1x99O5>Moxu{t{k3ekp9)gC@wQ18<~x;wxCEw5Mo{o_v?hEnf44;c_&RmHD}TIo$Pk~;^em2V*XKmf;;`(H zRJ+qyxOjErzHKa=wWhI_ipSR|?wLBSvGx$(V=o>j4Ih%Gx`#_RWBnn1Hbi}JW^PF8 zu5J~)d$S>aFS~y5v5|6n(0nnwjr{c!EN$EL!566UaYuegx^}xEY3W7!!Rtqx%N0Cc zzo%#Bn-{J)c1X&2z02ShR#eJT~ zw`lZA?o8bCUTbiP^MX%QwLc?&-0(i_pPMh5pD1?HtbHGKRn zG1jGqk1sT?^{wH)i}Z7`-0+)s_5ZZo>O<1Ol#l%JF)BSL9*4eXUh161)2Pk4DB;@g z8_PQ8aK;Bi(ukX^5&ri><95nti9Pv|{%487QUBA=>*j^?KK87=RKww)8tVZuIP){L z{Xl)NdzXB?7s}xOed$^K7x9&^)zj;5CvNzib@|$}c**zHF5W-m{S?2eD%kf2?cR3< z2ht{d7I&bC3C^PI!;>4lgWrU&;&MOAt*;#LNUHYNKc4ZEz3Mfzj9;~U^_L;(x?jyr zd<8E^L(>xR75v9CLsO~Wl+=koEIZV>cegAzG_BiBjP@MRvMa4qmq6~_;dJZUs*fN)?UW6%20nJLpx5Q zEK^iO5NEkhed2|y5A|}W4tUTSLsM3J z0e=~$eKm7mYiPQ09qsGt2e(<*yyTz9MeCc_25N$t4fH=$-7vqQ{)daf52zgT!Ygw_ z({MGc;Eo%~Uwa3BLreLz@z6AiYGOL@Kfl*cAKznx3r5HxYb>0ZZ1nm&i0(u`=wyN|YBTdFPY zb&Q&7FW@p0?H_f{;7e3c|4zK-eqFm3@iJJTN4e;)gvWv%V2EWSfCwb${6>DJh|6&!KC+%^%9 z3ocQgt;FDA<>uUr_(jX7ONXX2C~8v1UY9j}7B8V#uQLAH^6B!SY3`NHTGepM%%(5l zfNPp}X%-)9`5InxoxPWr8-9DeJh!taZy1{XeWU#Mk{fPTQQN)cj010RCOga#PyCCz zi7DX$x2o-7YJv~mW}ovl{FvfBQWp-sz3H=9y>n>eYsbMfr`aBS@@{q6(|X~h_o`Px zZg|*V^{>5%8{O{?JXAi|IoDe3As!14n(rZU!0+eDGv@L)b9|)fEBM%BO<%)zo@n|y zZeFt=w$&$IO*6MKE`CQ7w5KPBru`|Wy?|Fzyw9xQ>n&f$EuOMQJLw0nY559%O;LyR zcdrE$zKSb8-HgxR(Jf!Zrzv7Oao96WpTi?5#x3HlEnmeCTD}X{dbSyp!}BQeDdR^i z--V-|YxdcJvs%82A5iq)g=@`k^@Hb8qaXaJ<-2gy^R0exR?AoM18VexYyG3u51vPj ze(R;>!Ot));3W?|QT8yKv(L?h5-n zk7rV{re*A;4(-9rzr|<|K0rn7H9Ybyd&9aHu}Y)G1iL7sJ$U8YUK6!faL0xAr1lOh z(~=kqJE^-qEAO}i7ddOY+e_H~t~=piXA1A5(YqQK_pZB7{vZb1-*Ya^D~pS0g!np6 z`j38haR#yX`{p9Ph|`t~O^@3DCA{!c?apr*f9;ab_V)7^L({~s)pH;5_}Dk@Rr{od ztA6Kw%l_(s%Pe)ScH?oG?}w)Pfjo}?!Td*i7N7o6tqxE_Jm9D1y;Q)DTD}Y4`&n(} z--Yk};@lm?QO`rl6s zZr8ItRn@-(x68Eq+p|2*>eZey=3B*XecFAjrVe;;U-_t80q^doPyJN!=Kk%eyZozo z^8oqir;6PMw)-71p2hKll$*yduggV zRB_LB)Xl!?z~`yE_)gqqxE#cH;OCUYci|l zdj?;nf}HDk^Y7Zz{2h#o$8XS{#)(fGwx>QDtNG#Pg>$xS_jPzN`1h^ld4zoMy1aI; zI~AO;gK@<>IP)Bt>+}!ypUT}o<<;z$YZ@+DQLW7f! z^zV;PNF_Y>kL_v6|4#5Z$M&?_QRd5cV0MDqesn^Ezdu_3zdh0SMYN~&|0LJpYJw{t zW6k&s)~Rb9bH}fbwO%L6e`0%jo63A0zdp`*BTw+R(6v(+pDDJdjVabEkB7H>5pQhy z3jU+zJMklm_gBFkj+e7~2G5}Bd>L1mBnR)cGWY>qp*=gfJ#99nxn6nP?}Vl=;E5+T zeF?8RskNr~ABujuaO0^>pU2}Vem_+iM_gj(Y3JF z*s&7&r5aduv8@ps_E>PS?PgJT5nDh(>=8v#EKyOhM-)Y|L=;6V8&UUn?O7~~Jz~Qi zQ541Ud(VBIKfbTeVK~psnKNhRd6Ii?GS24_sF}y@myDXhVXw;3e(D+5{-5?$%^hEP zOP^1S3k|&dJ$qq2@#FrB_#D6=M}MP+KesRN;$QTCn>EF||JcQ6UW^Yle11drZsS7( z`}gVMwZ7Mwc**u%Lg^9yIPNc9!fU;)J07#M_SdaDZm~<3Fn76qiZAcl#ovgD2hZM} z&)RAg2M+5JChTk7aR#k)w7rb$@7cxYp1Ky#r_Lujm+*U<$tUd9B^*ul6U2}Iqx^B| z0r%Lui{GPh7U4sb`KNms_SmOOXxC2;r_wO(Ra|M`E}^A8gQrm8U(Qneh!&q@kKn=k znTvRe_zac!H*l-{jeD$f3~#5IW5kbLPt^XkvGCSQx`gH(_6~NP)g|OsGhe**IrcDl z#!a5@5*p*o7jLE(yNbWY_T$a>g)ZSp%4#p-6Ewu!>$v%gavQJ3)2LI7AK#>^_?x)n zOI^Z3`N`u=)OL#g@mI>n{$JKVRkRoJ37V|Ej+?*YTJ2dpl{)LEjQ^ui^4!GkjV>MM zVGesQ=n|HFY3|tlwJtuFV_e8#?>CJ5M{~#S3)y?H@$)zN+ovtO`|ZT8VV`%^l|7Qf zyWUIe8h-gfmvE1IYhnM76FY}zQBiy3)1Pz+$Fn25e5zjASv-NFPvnD(g6x1}~&s-af^hepkaiohSIsirKLERq^APRkJ>K#hT&@Yh=T+W8?w%r1-Z{krz_a zy*2Vy`kr0GE7r`0PVcEDJa?^Zm^sZ@IA-l^D7~vs{6{7mGTKY{KE?Z56E9sS8!DIB z*SO=lS>Hh;Hhh+flkG1YzFyX|vHJ^t9PJ;)jN{g4Z|w}hmp9P=>dqG2Vxz3TWwzFM zVrPABI6jo{$&It2agh5jUbu<==NT9Ox+$OW`p4dzWkcuXY88Ks_O{k>^K2NrMYf~1 z^LTD*SMa~7-Nde45}zE7N$oPu>T29>_CCJdUCjR-=jRdG@JNqrSooR!h1d4XhH2Bs z`F)IRc)U+GOt@S-zB52>59W`fw=~Bq)gJzw)6XI5b5J%+AIyJ|wZH?n%K98mbHNq2 zu@--D55?JkX76n7c>1>4(6+I&8n@eC4Lm33c)*U?kQHYU$Ly31^#&i@Z>Sj5UIDk* zO-|HU7Ehvh|0>~wsa?k{cQ=>E?R~t3CQmRgJaf-%7-3J9akG6AJBterG*%aL#IJ{o zXAA3#(~ro8+$-{iPySt>FMAHb3I9-s8|eqzk7kRlft^ROV{AB>;@{~?{tZj(%_owbV@HR9Y$agR`llA6$L37}Qea`t&_J zi&JRA^Xd(k)2Iuq-ErA)98LSxzQDJmy?uPnu`b8+dC}g->uJPfImA^@R5P2|n|SI; za`mD-;HM>Pw3%APzmApjL&t|APN(uHwSg_Fm)y%RcQPOM(8v;v7_F|bMl;9q#}-vx z8<{(W?b^t(RCH|_=f`&Upay2fnWKIp3)HTk$O=u<9@(J9+9NaLtxNRB0!@zoSfQ-@ zY-EEviy<;|s+xCijVwf443QNoiy^WR+g%&E?gaC4Z5BsT*|jCC(U6!EY*A5rWbQQQ zp8I%YiSpu!tkFX4kuAzSFOXUQ2xJX{& zxr+b1)_OUsOL)x;F44(1uho{(o86U#@Z0OT2)~n1B4}Dp#|7t9}=r#6F z&Ut+FE%u+CEqLVH;-ByN0e_{1XO9cvoora=J$dY9jyR~v-yHM!G?jj|UU<+4a(KV~ zahFBx>#Q&S=|gcI$sez!aJ_wpKT=bB_$V7@&}8dg!{HzE_iR?g)jkoAXQ2$vqf*Jb z;4z=NR{fN4gT;K*PZs}4HP1XHe3*h~sydGT%zpIDQ^HL?w~p2>i~pn${qbQcct)z@ zDqmPreP-|w8Wo?}a5^=H2%C*{ycn4+mU&9}$q<_DZ5@yf@ z^Qz(SZ>+U>74Z&Q7X9%D8fIL-yyEA^>Xm=wL~7T61-JfIJo1*uk7=5`wQ!py<`|z9 z@dD~(+zM{}o%yQmJbp}>xOZ@y@6FM;dAxw;Mt^*Rrs=1Ny_U+eyyb8#EwmTPIG@_I zH*nk!=B58K_WV)Z>OY4iTE;)JM#K0=4qxWq@>ax^f6{JV89aoF@?XR|s3s3J{M&Ld zSGD6>zuM17IZN@$-}wJ*-{Fa&YbXx!%z)3Wz`jLn*yj&jeP)Au6AoLctFu>q;!IlT ze6Hc9D|hu71!@DQ(1i2s5nN6)Jy(QPx`yLurss+hK2OV@(?9lIRiBeQd*F;ec9k13 zW6w3ZhW2~4<8JG^cCm5sn9g0ps9W7TaMBjWUB&A=oY8~5tJf5`M$fLHjeiD@r^QwA z;QRf%hE5y0=i-)Ib@e#|`p0wj?;7UbCja=#XxIMBy%n1iV zqpq6RK3RU$VFRldb@jV6_9>PwcD?qn{hQqIwpR)4=$5OmUN4`u)xOYds zMJ09?$b+eK z><9O`p=&5~_DqF$Q~otE<7zj`ZN*%0G!1)2-tc)EGR0b8-+-EVjwjW+`o0DJc*_IgT*G@2_{wbdUhX6K+hgMS$hePN>u1gJW^0Xq zds#kL@_d4q{f|9V-QweK%gKk%PyF(I{x_*H9R7iR){6IquHo55<~3g)u=b@IUfW!- z@`Kve9$5>hSUq=kM!oY5!`mA~32RrfGSiRv>2Xynj zgyP5H2X_nYYZ@0nKBQY%_LO*V*S~fPL;hnA;_cKnQ4Dz0VckM&BRRo7hqJG=M)(

    -=#h)vwSG-g2h?yL$$}%O@JwYm*9oPNSYu zOSsp0-NJ~o)Dqr9oxWGAxW@VVy+;o5?-ZXsA~TcpzlL@kMhn>myoI7qWZ{BtK37LO zPNre(3Z8$Vyq)Xbf#**)$33*;`4`FC5;mTHF*~Pb@S7>dI!Bzi|E1P+H+|y$m+8M{ zj<|M(J<#i*$ScL~{D~|~WjlW&OV@M@)0{t%m1%6}Pvj9d$Q%D6_P@EC?@?4g_~dlg zo~KrEzdOxgn11lRS@QXva}`glu?ML`{BSm(v&D%=&5_$(jfEdRV!gh$MtIabc7Oi( z)>GYlhK=(Cr?hwTU6JOFKffZsU%8Jox`kP9u=_dZ@#wF`cAs^}9;<0^x@hhYz?2mFEBGUNShzI*tDhIrqy zg=cKl-Dlyr@8IfNclX_|{P8uK>2-Y*Z{LQ$cxu@B&)t3Jr2cU-WeetoW4ARI@0pZw zk>K+!)){X;q7Q>ft^(O9_c1pPlbF6428>D|NB^~d`;c=xdM1+gAzjxTl(=e;BkXQ*df?-l** zJkEP)-NS7S*M4a%{L_N&K96C1$m1uk^S{Wt;5Ba=Yd>p&yT2=*ALSf>XtKTU5kBZ1 zMpN6x)*auX#r&JN*CN+0su9%HwHY%i#-hi;pg`US7l2@uwf;|2H-Eqns>f?_e%?`!C}0tX0GHf3uE9 zn>(KWySlnnPVoECBTVpKQ&^!#c$7xHq?Yis6?=pc7kO=qkFL@qWZJdkPpkFt9ZLLH z?-90LyGO|VA~rm2J@$6q3&Q3GJwoXRdk6EKd-$9@K6uK;Jwn-QhcZ62Nsmzcn_S_k zoA(IIJTsJWqim0`*fT>GM|A7qGhI&cyHY*Ev>rV|&3(Cw3w!kl?e5D>?A)hEnCrfr z#S#5_gsS^;5vL6>uKRKo7j7xGSNUV-!97Cua{lhOMYhM#IoVu1d*pEAapLs;PZkT~jT`T4SUy!h?rV{|Uo4MTYsU?5691w6vGa6!o@x(b z=R4(dgm&C{ro6ew6>!X5*7REa;H`JdgV&ff{O>Hb*O*N#+{@=_{#d_H9?ua!o_4=^ zx%ZWE+ggt>*}X51CqE>%x3uGfbH#i$e|+*Wxmu`B@X06T{VMHv+P{tAo><0h>*nH~ zn8&l9vexc#WqfizfA_dLPI}f@?r{~I*>0`xu}^W_3q3+7XF?gLz07tdRPm4n*1|os zh#S7qBeX4$2VC^O9--lEY~k!T&CS_Z$9Zqdzdc*WdGE^M{@QWg`)b#ot>e58*m2L| zo*#+|s zzU|>N6|Da!;H=cH z;s2=P{TW(wsBK)~M7C$D4Bmfo&rm2kw{ic|dK!~I zesgxuQ1?vL!pqNRd#0-33lz>5C$2uJr{CX*&wf3_-qi9eRKO|G_AFGv&KK(Q0`-G4 zCmU;TG2oDkdxqvxdlTEIu>a&a99Mk0XQ;O66NmoXGvwdUCr%vHD-7|TX9eev>J{dC z&$EHckL?x8;t8XBg?`8N3Qh6k@bKe%`P~+|!YL=P2fG$uIH_02PZB?_KDJkwyqB?X z?^AmD3?F0Rl<{owRPdft*`7IT_~L|KVVP&S27Y;(Yrl~nT;mM(0QtmE&h8ZoXURYQ zXQFX;;g5G*(93%{=8hL!%=YY8!4;b!zJqO3dwIXva|<@F?iIFTNA7WrfBPMS0?wySt_|1r3b#+=&#vL`6n~!~TxaeS z?E>DC+Ex4}wOhE;^@&d&$5Y4Oed8mk9d795Z&kz=e@1}&-zaa#i2=La)XU#^iW5Jf z#oAl=)6L>JUTn9>!>w|1f*j&8)Jb~@2Tr$MC%P72rU`r+*y}d7m~*(&?fN{)wRq?Z zF|dpHD9tQ6S8>Zbtjiev;9eB3E#T-b@6w{Ww&6Q3*=XQ_cb#&+<0cDy#+W6kfg z7tV37$HOVM7qOjMC#whiF>UvYJz*kE)?UHQYt|+BOeZ{@;`dXOamegmVWC{*@y7?% z;aF?*khPwp{@Hc>`@`0*Y>jXh#dWXamlR{jKhi54K(VfhI3~5rxZ>QzKZ94Mb`=*; zytauWA5Cism!x)>ryeN!ypQRKAVn(`z=cR3poD6q`i#8KT7N(&iEv;Yxu^eiQUBQ7bn-|@ueS=_6Gj2 zEV08+_7TN3%HamfllCm0N^xFgd^@$9xbLdHlX>BsH50pz_x0-C;a|gn+a`7n&)OyN zDdVKw6T5;N?48(Ie72C-4cz+R#LnaE!xOuScl;~uA74K%ZO2tkNbD?*q4+u5WxO_R zui z9DH)pp2zvA-M|A+N!p9JD79NSc3je4#udk>ed5X!l6htD>T?piivKAmb_3^3Ozb*d zeO~H=e{7wTWH8kEbPe3pczzv9mbi=F}fAs9K}R&MW+$;u)2> zwRgCZ;#yR(+w{cF;q26|3>_t`zWzXIOmhZuH)68CUzD7vpBIEIOp@!2N%(@ug7=rwl8{zmA)AtBJZId z>>BRyW$!STPadzQ#f!b>!k;PsnS0Pzy~AO&_$BvHoJW(j*Kw1tdxy%3r-m$^P7Up4 z{FLf9dEUUizHvURd1@%&-PHMWJ#6hY1*5( z-ICrulT*xiJ&pKE%=mL`|5?o6iJ3+$6*JDGAzz3Yf2Vkl2;cLe_W6A9ahm%*AKYYV zZ?Egk3s0x)A5QhNqTb<;KWKkhY&e>xt#PXNL3)R8DfeIF{-{qH#=nU3s8j3{|FX=U znk#0!oz{`l;b+zgi>LW^gnW^jX5^X|DBZVBg<*hpISpcmri_6*K-! zZG6J-Vy1#T6mcFk*>&s}+QQshT#FY|&bn0abLzZYZQ#fi+QJZPRKn+}A+`qgU$HH8 zTItk~!;5M0s;8!-c8kI>IYX_iNE#?9#1pXRSBP`$*yhSHY*$J zJGsI;sEu92uB(X6I_B_Vs_LhLpVO$-jEj4%Dz??tGu}&u}0Gx)($t>L_GFa7I&kL=Rn+OQ+|(V$D=k= zZ};m5r)+LMkC_WzxrO-c>uMJ@n>EI};>XRq%JVy}#Z9_tud;CrHPm*tyY?P!p{!=I zIED)B8usd`uUEv6U3_&Y7MUb#N5>ucQ0#fG^7#+t3p zagD9yv&jd~-_f|w8VhIqMf@|(3!mM|^|#qykvqHo4*lTkL+yn*)_0dSpRpiU_lkK} zG4Iyqdr{0C@7mqonWZ1xZVzLrnLHjtF`p%zxu^KA;e*faB`41q3xC>MoxG~gecHk; z`>NZws7}^G~#yS;=04tfc#`}C=Gd7p7B%) z*XtjrNBdea;E9K*?W^PpkN&ImGFEYfJ$R_|!B{!GgF5NIhP@7xPdU%wBQ(ui>e%D( zHs4>S9gn8?+)~2FX_>uN$1f<(tA&G)NPO~mBMnjiRs4bKYB(I(7WSb|?~5PLpm=Q= zU!#uaBJB6K#LnRbG)(cx?s0r$WtGMRh^V$ITrdqUck{ zFQ_AC-1HxboyFs*V~+S5eQ6&xarKdjPX@P7?K~cr+9jM#9sT1MX?qI~K1%)VSJMxui$J}COtUaRMA`29Z6Nh(MNR!g=FXH8{*fiB#4`|Uw9vgKa;LMBe)3q3vR;w(Xg{bPFr4k*i_|LS zX-K;|#4@$3;mCSyx9*YQ9RF75k$LK@HX_T^RKt;V8gVy&^uaJ8dk=riQ`6ZPS&sHK z{IO0Wp5c$-Tw}SvMCNINx{WMTL)}K!X_PvT3=`GQTl_H}?bp>FR%x2&;m9VnFSd4= zJ&(M8i7ZmPy&PGkQQ9M$RPwqYGJC$9Mt>|)!Sirrm6k<+Y|`B5kJ(A`@2rSCn>`u9v8 zIXc>Etb{cR<{sIi#owtP{Od)DPZ6us^!ypQi0a?)!Q932Af67ghy0|*utwR~C;m!t ztT07vG?#zm#Q1MM6>L!MdwUQwmsl4$j4V*u+#@U0Nqc02a^@15xl}yt$O2`4=8v-| zj$6YP6^#`+_%eO6^O2PIEFD>=h0Ej$J&=VmJ2Fr0<`p@SCd)$w8#Gftkv%KPSUJ2n zwJZ2>YPYa(MdA}#p|Uq=}|BkPZaL`oOULk%wmpVJQEBIfU8PDg)tL1#2Yq4~V+%~NvX0NsH+y^7Cq8krMSMB68@ScYNqZh|Pwg76e@oJy#VM&>#ctK4J%_VXyN*L|P1*~%Ahnw~a(dEU z!X>F4Zc|qj>n)G-spGi<54=6Gi?}GYTR3(`(q6_D??~(nUYXie>~?3;p2OLxUB{s_ zllB5GNbM$$y~{efx0Z3r-D>p)YmFby;%|Lhc*woh*uAxgFWu+daBpqk;rFWp_tqjF zQ_~)wZE)lR>fmZNJ~^9@dutspe^9N)=SFc>5_ftx+* zJaiUiu|ChWH}c16kJ)$bn^m0gxY({&hxo-4@>vrzE`5@}xrBdvol-X!uY=0C$$T~M z*)NL^P~QEnj?14m_XqetHjg7`(PO#`#;z6skgUmwqm`S>pVnEgbq4|9j*g&-}(1)A(bLZ{^LsFNcG^lV|t7JXV+5*PiPl&;8N) z_CITZ*ZjnPp?2J7xwGai@!&qc>fgPufGwJEm3d*~H|t@Jk!P;hCrtaqxcJe^eM0R; zK6u0`ef&+V*l^cX`}izs{opd17US>KC!9n@_xBQ({^(lqN4`%JUXy>^YqdV1Db51E zNt55yjz_KDCk%7%Zs6%_@VAf3xapdGLc4m-;$yT>4b<`Qwfcln>bZzvZ9eKbvPu>8 z9Jzglzk1H&+cZHvH}RTv#HpUExc$1Wch=?cZ5pATn|Q{0eSEg4JYaTxQiqXss;TG5 z!#CjLS*wW4sj8mChDe=_8@c^PVo=X{e485jY2q23jb$!n+;n5tsOKy`Mn&~pkK9Ba z)pO)>YQ}orlrIfa&yo4f_<79|`8JK<)5IgQ>?>T0xAkz%gX$J{+FC!0_~VUx@M+f% zPTJG@TGI;Nzqgn@%hm9~{jITQxjNo(fPOs7Rq=*{sc<36Gwo{t3 zpU|eBOStrSwt5aH^a*R6C=cIyZpV{O>JvKs!UxYR>Hjxl;i56-rM-pA$7=uCwI}!S zUBG?9CEmv?;`-zIgt`2)_!?DL@yv!-j5n|4V#D80?c+UQ*G@3*Y3kuuX{iS@#NT%b>RDB*$&tquPsRxhR}#gC0C>Ql^-oi3GIdB|Y? zGW$rJk)_LxB@dC+igsf~F1*6JxVDL%uX3%Jvv}lGYi+C|PP^K=h@pz_UL!W~H!(9! zJo<^;_c}Gezkusr&&M-Htf8^n`mDnQZ z)vO)6fg8>46Z-$oA2)h188?fWhpd+zc91=aJpzxTGudVQZjRi!Hay%X{Ey;y3%0O0 zm%kb-;h!H(`YhmQ)ZgcUXXf<@pHhcEKJr-NQ^#u`Pui=v;EANYg%7_Xrud!=Ufqy$ z`KjWwuO)T^cWfqh9%p=#*fqTQ_vG3tp1oP$j(*Cxa@W2c{bca6KPBxIe0Zy*y^d?{ zl=|QXLlZlTEAN`N#{JM7*!^x7k_b2w+e#IEDY2c-VE&4G!X$A2D_*d_dRWMYS- z`i85IPV6eKJSwp>cq$D$RsQiEs$OJY;||A)Uwa;JrtG=u9Dk!B>@d1-IG#q8?Q487 z+OBQjZpZcYeyTl)T~Fv6X6|6W<5MT>EC(%0|vNJaw}Cu**34B0dG}c+17&*-xLi#T2<>XYqkcjJ3bH z;~SUqIYpi?>l@a;yl*J|Mc(kZEBNoC9S^+HeAz|($5nkpeq-&p(bT?v9-vP=^cw4O zg!XIu`kSM^K5tmexbn2L9`LT~Y(d=3>Csbo1(B?s(a4;$&BFi`)B#g(vXG-ZSKAM>h7j zqi<;6UJUpH1Q{#p6)+Ps0!{>R+c(holQfA-OztS?^Hu1*FU3p>B8{Xp^H2Co=* z4>n#v#l!jFQpyf6ZliBF^1sG%jur7W8n&zX;@AcD&XID6chZoPtr7NoHCgK%PNjA^ ztm68wCGA<<{&np|dB$1P@m>Lz-VnnmbHoq+r`@`=@Hfg?ugD1togM7R2kBsTG8TC`eFDdT~Y2n~SiGLn1q3U>Z!N(}}U&j?cOnfr9YibwpM#?(}s`y&k-o({E zO0Lb|_Nkr6ODN+ks^FJY+guE|`^R$S+$i9EG|HJ-!?!8M(8T_q@OReb@NnwLCr(N2 z3O<(FbzJ?^G-muKWt}G_oSnAUal^&>JW;*j-W2;R;Q17DSiuFU-Nb&MCG9ypI<-sq zIMvl>9lxO1PYZi|p8Dh1)Gp(TG}oEdz~vPE!x#FeXy98H~_ZzY^Z8TactuJ)}nbC~-n7HF7rJ90Y3 z{%bgJiSs|B2Jj+^?G^kowOcs!yQIB<(^I>KEvoLT-f-ymsSj4D&`(aVL3w9RzOnIFti{Y0Ki9r0j;it+gYGe0_8oC%QyYWK_#S)t&pj{L(i^Rllq zSfIt~KXN*C%pKSGDX}wHpv9ggA}iGN{1DloWu6}*Ge4_&dpxp0)7X&}T4og;|Lxg>25zw@CEADo@qb@U<3J_A-ikyP?r5m~0m_IqTVI$NX2 z{wwtB=qHCIYPi=#)@ZSNR%DANc$SFFt=KQjbRUc?QQmnT`3%K)8kqS*KcA&3&sd;gVb%- zG-NIDV1ugc$joYTWM4-XsC}^bu|jhX;*Sk#dTxpAwR+Nj4lhsb3NE0$XRRi7Tf^Ku zm*#LRb<7vvqn!Il6T7X+$2}{DW2wUj=cjf9yRMavg=eL98Q)LsChoYlam(_6Wop|; z{a~H4;)(2%N&3lRk%s)se!(g&v@VfNTE>pduA}z&M2?}3*zmup-NftH>la3tV-*YQ z8@sQ(;cXkbc6T+2cWk8Hy|RX{b{1PV{o|b*8*6Xv*m)Cc;GECl?9{H~&`p!}0xn4H zCXU=JX)ocD)DD~X3lk~!Q^9q&NbD@G(xsp8<+Q%|5_NVCH)31X{$ZDJP*>~X87z-0 zbdwi$24AAgy8Q9d?ylWdJ>XeA>f+1tX?x3t#I-ZJi-)4#K~fQzUT zyM^}->KCSMr%zntPukUO20tesl;H1z`-P*oHtqrX$4&mM&YiJYe409sGhgh!tvwK* z!SK!PoF~rMCO*2o+&N?GIB-WXIAe2o$xil(Gq!@a=Gi^OfRF90<~(cF@yVg~tTVQb z#a)c+jE&6iD(3iF4ENiO-OIf2J1RI=!|wgU6Es==>v+~4=H=Wg$upXY8wn)npl;+fSaIs|_4o(7)ICCA{kZ@imOpqbb#1dUMwdg#ejuNl6@Vy@#V&i^TNUv=C!tKF?W@`InN_U-R#;!tRr@=s-I!}vD0+< zIn=nf%h?P*&WFg=?~qStLI!KpWJm6OC%<*{k6%!e-NGp|jct!tu-{#-Ri8P0ftEQR z8hG5@#^O`L)o1C~95eVhEp}Ga@$h@B&3bZ$%c<132H_);Td$)R*G6n5~J&IUHH1k{m`J{(#zcJ``~|4Pl4b`lp5VP8GL*kiWAck8e}n-fv?0 zA?*j~AG34BpdKP0qs4scSbSK1)qG@l#M-Ho$QvkQ?^iKD*SPM{k#AGhesAI#kID(3 zGG^ylBj-cpW3<@$P{-n9;^ZG09yed-L*xy#OwOyAe?qM4F!F6`*WSc4o)mLDD{#|) zs|oYXVx4Nvipaz3^5d*1;&N&_E5cLyr?Ru6irdduC-!(AKcl?!u!WVU?Ga~1WbPR; zJ1Zg^G-7WxfTd^ojZp)*`hVogUdv#OGVyG|z5mbJ+4}|jf+jmFS~#WM9*OVsV87>_ zMe(e_7icm629}=Jr~MU~c|m=9ofSEYii7o!g%|bdtcd)A>hY|=%1h#~A0zv{Y`*qX z4qu>Y;%wk?ugEjIgpd8#wVs{oc=4;Qx7RAT_3Pp>RvssPV7(5~jwgL+&Fs4p_V`FV zr|KU+q87V_w|^}D3F5?~KapE@3445My(aRg|{!}e>Q(y_jCSJtSR>Y!dR#A z$B!t-4qrOEzOo+tGq~y3=5-c-e2q%%CQkiE{O4I~Jh&xa7pn(sTcUlkKJg=(rq34s z@||28H+XZ)(|;7_1#*Smep3IZ>j#(qEYI=U<^94Rf3YrSiVZjW z)mlU!{D|giZ{e-K8B3fsJoNea)|4%r5|<{U!zW9ZsGE^#dEnBGGbY$e;9I(9O66c z_79aZAH01%{+F6N9=(2l-+`qz@XQUwz%Jt@8}<()RyZ|>Uh@`(p$ z`}<5y?YK@4<83A$+@Y<%&+L^$ym3H(zxS;ltPK*+SmWZJy*Y z$-LtI3&YNGuAU=vL&d39Ba6G3i}`kNSL150V0|}ns>#S@ySv`p!yc|3*57CUxE9Cl z>E9QbBi8nkTltUtYH#zE^A=|Jm1k?+!TtLCY$1Cb%ln(Jej;lH;uG0Cz_r#cGINkV zt$XCY2aADS!18eI);+Rzh%w|gviVm&u^upUsCBodk@>^K8S4;BhpR(t8d*I;yETez z94Qa%$XkkXzMpnHXQUc9!dO^5+Ia4LkwgBeU-!5?e*G`wZDhW9@Cp8JOFlT^BxA&T z6V4eU&Vqd6SEtDT-}vKaX^OmgW~<_~OU>sPHhz1VHMK_B%h^;{1DOi{E5sMq7vH(kwa$bl-hNg8j-OpN z@cpT-wXa*a#x=%eXR!aZ`r%)|G8y_;KNU(?fA))iQU3U_0$Kqemb%9*z?)M&f)L>Cx-XT ztG$0XkHTE_fcrlur~j2({E&v-Cl7e?^XmH^wShm;vXoxcHC~6Jh1cFpb=Gd@{==+X5K1S`1Q~B;B?pGgUg+t z>^jc+)js`?vG9T4l3e7d4S*H zF&6$|wE>~ionl*kK$y4Y0H5VxzH1E#duImt9d9xg)4;8I=qJX5yZ1D< zH7(%WUIYA{sr=*j6z39p^QUO%abjv$@CT}>rO+k@nyG$@_!=#KN^ID#PjYPz$EJ1} zKcVIv>x(<|9T1k;k9nL*o$b>qcIrp3%QGHL!Ff``PiTT#YT?2CU2CruaVo_)tN1-N z?XNI^4^{22B0fY5?XNnnKhU*tf8lWyuPx#2sa?Y*sU5Z)5cZ*>y;i_0sbehsl9t(P zEgYOn+VglHwX3%pt~6+X-%&Le+?C?B1-yeMtAQG>GFW}GGk6MR)N>ghiZ=f`uKy?N z=se8g!4%tz_#_RpkLvh++8(yDb`*W`cry*LU#j?8+TO&zTdQa1TMkdB)=kF6C#hpx z4BMEy{72>~XD>vSsmhM5)8yyGfZ@;b9M5pf(_H6vWSLs=tiw7Di)S^4A^!akf6P-Z z)&rI)JDWe&Y1pg$F>I^$9_EjEYIpWVmT8oFh^*5Ddm%Dxr#;pK=BZ5#k!32XhsZjW z)I((0-v2poBlA>?=Pf=$!`yf37QvP`+#_+y<~&eh1UlQq4UKjtYoHzLcFoy8yPRC9(zdNVc* zafU?Zsiwvv%hYsEM%JnLGJgy^t8M3GI*ciJOq&*RNhTBy$P z_q06>6F+6O7xCW|W2j@_J<~q1M2qDovPM`z4E?AFOWekrwWK zh&8fD3i!tn@@ZdW@Om0$UsR)gsC=pUDn4+y_|8Y^In+T5GM=mBA~ znPLlH)zA=fRH`0@?b%-(F^QB~`8gZ^=i>FV$e{bT7i zW3eL-yWMzk&*HH&-azo}0=cD5QYRv8C9D4*K%_$?LR(&t0^ zq{+sr-}#kE&<&lfm;J<0GFHJn?Duc9%Huqi4k|S1oM&KeZ9(h{bl-vLmNG zCw_5OapCiF#cpEH7sVOph{c!GbBq})FB?m2kw-Pu>J!Go^sSBU|$BzE;GKzEvmJ^2bxY)8{pEjxQ}$AMs4aH-40VXIB#k z{H)Hk=kTy!<-s{t#M6Igdu}P?pcM!Dn|*V{D^?yDvR9yJRW&__{cc8!DHx^FqJTOdf##Zs(O$PdzhIU-C>AJKfm3@VcDAQJd!_y3q&6||so>^A z5<82#Z=2W!?73ZH=kWC%61$0Wc1-L#&e$ojYxw#usSl3abzsN&U&1A+9d;WS22&h2 zkMk+sBN}+%?ulK*MXBAwv3n%#Wt>eN_bePbENL&`g4Ax}$UT$x5-v&Yu-Cvak>Xet zoKLZz1|GO~(q6iyqGm`c^{_~E+F5&Q*sXuOgSL%cRygT*5 z;rFCI_;D?t~bpJZ`ZlY0u*H)UM&+50myh_WU^U&*8XF6T6Ie zEKckiPWmjdD>&|p)CceQGWEeXzDn#S_G~3~4iEV@v5UBLNn(fZ)EmWhY+}zJQh!|e z$HdOyjAe;k!#93P{c+CEiCxFxza(}Mm;RdA;kSXI*YAm)!`amFS^$TJEj#Q2E=cVr zj$9#WFX58Z4l8aMCQ?W3;aVFcb_S2^vSmm7MLeckVwZ4EkHoIyzFQ@B0mpBh*kxRK zyTs1m>-ofP;wnSacHCx{#LnaEyQV%kX^+IN;J7^#yNtv4O6($Ty?0{g@!9^#m-?FJrrNYY-!NrxrZR`B7&6T6OAACcHq-0km)UBI5j z#LnRcBNID|la5L33cmiY#BSo8QHfp0PmWFO7QTL5>VqSXPvR-zlGF|-STE{WFI@M; z#LnXM)UM&+lals4&QI+I9#~4+i?}GYTR3)1(q6_D$0l|LuT1SKb~`y~&*ALUuH(>C zlJ){FNbM$$9GA40a7k*1@#3eB_;KA+6FZC3Q@e(PCnW88oS)haJn*!ny@*?%p5!Wz zub+|T4fm}ib^*syIRM6MN1}>>M8Q zSYj9Pg2xlPg5#b{>@p7jcj|)|)Keea;Mv5^;-&AT?fC8|iQUAHKTGTuj{7>X%lOqg zxsDvRaMF6Yj(u9e&ATUd7I*8N*ah5RVA_tmZ<)5^_*`O_@s2@>UBgL(6T5<2Z=KkA z++dr;&f>~L5<7!)woB|f4%j`hbGX5<)E|%8E3r%XdLgl!cw{M=OA&V)o3s~jv$M3X zHX&s3%L{X%-f4or6Ul{-uFi#FtFm#!>vDdk#|Q7AxtR(6E+ZGVxjq*bvhz5fGHXo; znHzH9N?OQn;+UIUy9R%padXb+W3llq>NvM?wObN9hi6c%+cLh8+6`Q{nzUzeG&S^D z!jEX!n&QMmrsu+B{TK1M+j1exrx|&B&hHS4ABz;$=7Uvgb8X~r@!#6Rj9kb^=_m3& zigDI(i#rlKi|0|1PX)iDW$bWgE<8geeKv5#nTdY}ho*J`54Q zJ-N`%&f;hH%3+)r_P#IaCy#H_%$Qp|<9=hsYcX5X&Oh?S2XdioT^g8s&|KJ&k36Iw zIjQ5lb6jIhYk1Sc^2V;>!bfs`H%9;1`B7^f*By_VmkW#6k#pSX3IEqwez5qYan}VS%~%q6FPVwyPaLb5zkm7K1JO3Sutxb z;+g+ZSL`xw`hU4FjZYTqRMZ}Mz;oi?kU!R+7Y{q~?ibVpyN3CfW_(Y28$ zP#e31-_Xp>^@&$E#Vm#@4q7ChEFYZtvE24{?I+r3ad&yZbr#FZX6A(t(d13VgByLO z_SjiGjYbXRkKcdkT4RN;tOLbdmGITnZsI0iTNnOW97(Y@N_YcB|0=$gwl^{Vjrhzx zaw2uy*YHcq>!*d=x03ceUP2?xv4RWI_9k}wHu1^f;S|Rz;*`{`;M)}YZ(_G4sXv}i z3w!Ak7o_b?9QK|0_OZTrCBEZ~YD?u=JXzc;wF_9G zPS!E<1Bx-XF!zJ?vhI;3nk+w&H46RIB(|bGKz=ayquQ`uk@r!f2OsRdOh4VU<84&1 z?loNLr(~=Qj!f+m)@ZVLB3slR>k4x}o1^?hmZ%o%Dv}!NDzZfx<3=8}Tn!kvgtcg^ zvB*}m#TmKZFXnH33z1anA`kcu#XK~z@M~g6&PeSVuKrsZKOUFbC44fq>$v9csSg$? zh%@pT%5LTSM89R+F_zsDE>G<$zO}-jFjF3ySXpt9??Mq9=KnA#6wIZ73#g-(aO6sf zUBc-Uy^h} zDc{w;TVqgof@zP4eVaz$Mu`XNAGq}zAVo*zY zykR4Dn{xw88xIO2tb63Ho14FNDc}z@WIHizF(`c0Wl(6>-ohzaa~Dqq`*j@@=El0k z7ou&B4J>sV6x!_B$kn?K3X{c_!C5pn)+FxTV^ApTr+{Bji`~LXPqwv-?AJ?Q=9t45 zDC^n=-r8nfvBq%kKHB3N;Rk&Oh2oa_!9suS?8v`wZC#f7c_RK{8}V!-9(?}Kd{~76Fy~}v!niVuEl%*qW`VM zi3jauZmuojAM)bipTP&I8OOq9JG)j4VW@F-8RYj2%^i!oiYH!+mEFwUxRLeUtr4Hd z)*jZ#xRGspn!j;#Slmm$d?NST$GB>sfa~r*C@hXOi7OpoE!0&8_Z>dS$BXd64G+<$ z9OiJVzYgknFROqXj8GG5K8xe2EdI!ORAEPMbm*XPJ3EWn!^|tjgR>47H@l9#jxbhi z$0^itFTfrDmF%fJ_B=MRb9l(;#4h3m$0c?Jk2yZEOE~VN#4h78W72k8du zVY2+#N0Il^D0U6Eyhv_$Fn4^Nim@LYGexdkTgJJUse#?(@bW=nw=3jon0|0Bm3NUt zJm4zV?qq%Oduql#J9SX_E48zW_}aCD{JhRs(*}jBD4thUd_J`sxW;vAZZ9I*SHCgMCvKnGd7MHW{_E8J|}w0KW*#OV}$YPck|!!3itP>SsZydkx#_&JS|=N9fVE7XkrV}qty z_sGoc_Jw#N3lw(ej}iBDGt%_sqnnfH$Xh6~9XD7Uu5aW4$6TkGB3RxYFHXD2M@%qu5@; zS5muy2hQSSjf%J^wOjbWJ=Q3%&hhg5oNF;}xbOXPDE|dqv*ubk$>2-0kbeU&eZYCn zr-FZY(0a*p2Df|2{arruxWXKJBwmXz(FFNy;Oh@N^X0IGYs}S8+!uJt!xw%swkNbrty-WyMg(!~bI) z#a6`S)Y)9Z|EXb`%&y{|?e;@F6YvY_WR5MI@|-^PQ^9|{z*ZY2T>VA1d1bK6>uP1` z7_V{U`3*VT+qjrrsNH-cS9?=!#ku2ywD3G?_Y*&Me}}C-hp$rOKy$?N-gWIk zV!%JW$47e}Kco`7g*}_r%eXn*`~zpHI?3Xii{#uHo52UErJp(;^`YFdOSs-g?!Wu+ z$HK?*pwGziC+5f}vi7MywMRA=%Q-tT^SOMwHgeb(YRtF=EPv@f8?VKqzm`w+T*7;o zs1xg6!+uNkW8HJOlsbOj@(1@Oiub|D>uHFbME*$ou)~k`^fI;g|18~iyxdd%$MK^_ zSv%^6C?mv1A2;nLH)TQ)ZH*qHjJnYWL5ebZh%zFGK6=z0(L$6FWkZxf5F$*p4b~db zLiqVT&;5S?ct2jBoP56Le9q^5KIc0r_ukkGIPq6|XV-A;-`H_4`1-PKojuaP$Cgj* zI)1rAVz+SZ6%#v)JyuEV9Imx$I*v!Jk=P|%Zmq=5;9YAcb`3B5TVhx6u?-Ttj@N9M z*j0RMqqZ>hVD;9$Exfpi@ez6iZ|~6-+SxU{>hEo#dbQl*;XT{@8#|xP+QQ|Vw}s(n zvGK4i+d}zL^Wea(JUdpNam}sUd~Z&B$1|u4yNpY3(-xYeoeSo2ZDCeX&T+xE=Be;+ zYYW}`_`M^H;|+b=Lj7>_uB@6L98`U?1S2T z-KBX3w}sm%%fE)J<;62j4dY=$+k73Ib+?m~?b|}nN#-Bc7B1MKEi62Z5AM37T(L{I z?Qrv4DW09%!s)x2=U8jurMuh9G5qoTe~9NGHmc3T}L4GG4%YQoDvrQoD3i zTX>c_-#hq2YG;ma3s+DaZ(z@VI7N$@`-B$4xDlT(!Xy7Hs%9XmUV4vgE=ZW%zZ&Uogi238&{G7SO zzkGsqPGmdNEZ#yDXII5;C;2_+o5c^PFj8M&kCO9pE;;;=GWOWSBTqK&TuOK&b?z5u zr*;FEq;@!^EgVnrU0K3usa?mFPff-%xL0ZyaU#VzEBInM-oPd4xc`{v-y@P|3wUE{ zSMi(FZeho1iBBGHPVFjwn%XVgP<;>u?xJ{dfRVhm-RliE$(;;eK|97&yX;^cI^ia(}yINM&Rb1yiaI`@Jz)A0tb zeoo?(#hYmH73vM=q~lG@mlL1J^HRHlGbqkk$M$nmAH0-$x(_QjgF1cio7B#n=dPkM zp9WUWPkbU9^m%+2VCDk%iTgjYKoj&))Wsbe87|gq){4y2Tm+#iutqKSSSQ(e_gD*algw3ezhQ}b zUd$gqqY>t8;r&-9bJnm$P4Ak>++?4;;-p= zxK=FG^ICbpGS&D*)@itTBExm+hfidlrW%jDjpBZ5*rHK!T|8t;GG4?g%`zU@q=oFr zORqP-cT)woy+KW~^LQ0?)&q9CF|o7w8)fA)+$2V7sqM(cx7gd!#&6X-RF&tolo>`wFeTvW$p?&cFe^WY?k_emAI-;>xmJe*=YC0vw_hpFxgivAVc z{ysHl&H~PPKuqy-9p3z)`So%YPx_a0(Z3~pyr%E;Y#mpcCT2aG!A&0FZ(lj=^Qdz< zO-^w2$IKZ&zu`WQv-N2aKc|-XTlnA;#`Q=IPoD0btvAc~<&*9Qz1hN(XV^>ZP2Bn! z`PZ8{e3VA%$2y+%tbK{CjQP5=){l|v%@k+sJG_%d>AM=P_oB7*S{6Te$@!YIiATQd z?Dba(x1FU1^j99Iydn?!tBSkLb{5|I1$_NA=NS774|+q7>#riN|E65&g)AJ3fC>7^C*^lJ`7&02?>_z&Y-3 zEj;EUu^#DJ%zteB67%D|O?#268s7RTTOO*|{L-AqSr?!D$~lUsj;sCG?};ai%e3rK zJQ-YNk@&@v!Ja?buXu8JDTM>YgO#7<`6@OJTC7KW=E>t1zqubSmj|4(RIiXbS3Fo) zx|g4kBA>Y1GQGmw^Vm3ry7H;w`xNUrvuv-h3q`wt7pHa=pH1yLew^A({M&Mge-_)8 zw}!P^YxD}guhlF0Gu_&~d@XCQFl(~4u;XvNd=D`(<2+id{+l?yYp>ALXY4X|TSuJg zKZ`S{uKw#da$Rew|00HNy?lRoXNOf9MQas2w`jP;M%4Tv3C zr-kZ2a^!}+!gRG-#3eMvnfii?a3dAee-%46lD8N?&ZA14AIEn$ryeh3w~alk2C`VE zpid)5Zo+?*`Edy~^g`%ierk6YRk35!UZJTM@;HyC=!GVZ|GWA1T^YOe>=jyiA&WDp zs~pyG{tt+-7uC|-;2jvzw{f8Xh#vd0@=4QFV z+x9Rno*Euj=oLnYr;I!7)ywyL7e9{N+qoMr;n;oT-FOAB-j98~*znK&ox3>0h+bj& z1LgBp`@(le%BOXkc-O&l#lMD!9nvdIz1y6)$)V2TTCw2*Do$Y+*)-xVapLsD<-y(? z`078^k2|D+?;U5q?zASpR&qv18OO<|nqTi!@%S^G%Xn*H-*KMx4$b3FXL?o*hqHQx zjV}=Y@z%vD7pq$}R>dw8ozWHcg6mynFDJ_M71bT~%@J_4eW%o0z%L z{PBD-e-m5%M2@-H9deyK8QJ9lITu?7^AE~{+K4PYWZu{d zc*nmyE6y7JUQ>V0H#}_3Y2tJ4k)s|FpR+Du^-*g$-%dWJ{+($9!xNsd_fAgtYcb@o z_@urNTV&-a=Pu^RcW1Dz+r&Me7VAhpxYx7tLz4@v~49&wNYFubC6y zdWX-)_B*Fn*z#RIbJ^Jaeeui^13o|3x{r$O1LyUj+IrWzc>g@(>>7^!NUhE@Cl38s z4SX#I9N%;vPpS<(`BOeG@yDT`JDbP&sWAtTPPQtxoqUwVh(3p~53=T_?- zM!hbdICRb4Vd^yT<92KJ4(+dq8Mp1)JLEsKF3wrEcj(%%7M{?px1Z}|95-6OcUbt8 zwQv>{#oxd+H?S7FfJPb> z^%MEQS19^4u)Qa}=X`P9&3cE*mu$R@@}J5xK26cTjz?}T)>x~U*}}7GHSz+Af0tFk zmA165TxD?8t$K%sTxGD=*77{Z{P-B<vbTUBl)38kgG)c2LYo9w)}}_-815JGGm5 zNIz$~Nd4gBG)ivkxO98spTWISyNHicHr6dJ-9PogGBxyjI;hF1)P-HRs1xyTi7uu@yX-msa?SjsWnrcam3)> zA-HFXIG5_Nr!YIDcUUZMktb8kTN&$AQlF8&sMpVj(aV^p3GUL!GIdq|k#%ahKO@6X z^M1o0^EB1{8Cj;L`!lj0$K9WiVLSQPJCS*+$2$|tG~7KIS*OCk_+!}Ke)VkR+0<1n zm9b9w7x`eXVb0}Q^WYzKiIZoT1!}_o=;c{ z>rrt|3_F>>B_7OE#hFHyqpeRP>rw8>$S~a6?#akJ4R=pQmMQDrh^$k1gMZ}C)_sIO z=BehMj4aa__he+9s?Ibr>|!48j>tSs5NG5gv{+8+75!ZFgg2na0R%8L!~5zJ@7RZr_i_!-*jMkU$ujoc&$znE;|lwW$2%*7pU}eZog-d1LfyaR ze6j67ca-})k4ufTFMH46utU|1nlIp>qWX+=j$a)nW_8}egO5;q?#v=ScceV1^Ey6x zl)F8CPQYJ}R+D-y{IhrXmS(B*7G5~Y*{Smi9&xOFsq+#pf4urv=NbIZ338;)TllY& z%&)dxc372Ii}eEvtyasMmKBeo(Aog`QKsDOuGBZuNC zVfH$E(F>8~DapMTxylXv^;!mxxykQ|xr9I7%zo8b+@k((RsUkHtFRy#?cR^YvE=O=_&P-!`YOR=LY7dslyMtQPJD}oi=l~=zZ8RKtGLg9 z?A@G2Ty3HF`DAfUw8hZG&A#&8@BCeT4j=tSobQVn=l@`j3;E#a#p3*4{P@iO$;CT- zBA4kCYM+@OPhP%{pP9u6Yb*2#b#X>EyBL?-$jnN8!U%hb%&%-*Y>}l^`h=pGBddS$ zjMyR@tMZFE!7iCT{@=7`F~3@$uu%RZORM(@i{&A*x<(&AQ^~rx&Dwp!^w@W}Qde`j z|1i9=HAMc&ezfb7s5T~BX<5vUO zPlyet4dye4Ki)pn9^F?pymb3Meuk15@QNMe$UR)aJ9iT2=X~(1U9GFXTKLKCo^>uw ze6Y|b%+hN$+-PrSF;9LlyRSXywaDN0v#;sm-@i{dbcElV;LjsC{eV7UlrwGM9S8R5 z{QK1!?mV(jXZ=+1;e+~wp6b7eM;{`0YP*8niq6+~89zVFnW@8Yc%LwuhCAyr-a_&J z+c)smqr|+{SU*d;Pgv_{>#j1^&yTk5G0u3YvHtF|PndJOIJ=AuO+5KT^M|p%$7r9h z&&l%kf8xi9r#RC;#DE)(Rs-TGVy|)HTyCttQ|c3r7;k*pv7v;0&T{rEnFp7hXr5Ka z`g`S=m~6;Us;rnt8DI z)y~3Nc^pmgb9)(^G|G5n_sPk44)376J=SnhIv%bu55;HmI6Ae<_#O?Hw z7_OIdIgHHH1a@SZy09ZZp_tnyW^XWOJa;To*||sFPNVqOutih(MCNXkPj+O9Ca@!G zG(7s_M>olXeKqmVo5iMn!YzHmw=~^&3s0kK@5xW>HGJoN&$64?{7@eCMdXC}a&0daJoXdoI*StSw!mK0Lje!|f{!_i zxXeO%7k>taFX&o`ubU${JYyb?znv4uy`ZmxKx+EA=6up;ngel4I{E@X{Ekl z$javGXMS8|6+Zp>;P-zq&j9nU+Be)p6O1?T^1t>CW4f}jl<6B5<~)nJ)%%9_cK*0v z4ZrRX17_DU|5nz*wbt$%My+jr{Qhr!LuC{GUHgXT*Xir$TZwbszG02^_!}?cTN`+O zQ#r>IHnf)>@{CJo<-y)Fc-uyO!>pcs@Z^o(;B_I5prn0l!^6$l8 zo@+R?kND%c;F$h>L(@EEyp3XC*KrZmoL6>$7^w5_5b(3qE_U<{H&9K?Ra|CZ;*-G_ zXzC!(4(b~Y8!Y~9 zRA*Gd?%OBN=J3wcuHkmWlJNq*L7|U&z$J0qzQPWD!A6h z@u^+L`zbzKi(@9+6`Q97d_L94<1V+0J{$gL|cR5pPfJ8qT8_e-pRZE%DFc_|z`r zYt%(eHgNUb6Q3;ZO7YnOPD;nC_-Sglu=USFyM^AD@vrxldwe z@#KB^udg2Psr~e_8mnV@|HLP9`w@vO(4a4r-iti(P;;uW64q$0y+^iamb)%8R}`BZM&3a=_el*mK1}@V99}>% z{t7mzgJ*knA5<5RngZ=`ku zS3l0XV>@x;2^8lk;hU-5z-^CD#`8EWwd=V13CVZ?U!>}e&Iq?SF&WR{m8o69!6)g3 z^L<{$|D|>dA1(C_)73*Ak3Tu-ixPfAo#%+RoRU0S#loqH9XXq#PXjL;ojhB?{Au3N z?%~J{PxotQoyFTJ_IM53&PeP$E;YuyTc|7CVVrpMS^;z8)vaEOe3YvCtB$kJR2$}R z;8|yjK_8WIkFs;sI|W?!JhiJYGPvsbYFl4q@U9EgiF&T#wHLDEeS*b{)uq~wTz`TZ z6HgX5y2S6P+Z?`ese5&E>*6JssTs9b!3!=IzZ$FIjupKSKMUbXlhnQ5&)`E>%g^8W z;A_{~V|iuxBH`p`hbN@2bgN>=Apt z=e+pj@iS_QvxQf`?^!X_aPPVDVE!U5^MU<(HiLgq*I{D*(49v{h9p@cg$JYPYauS(ssY&ri7QVMHb4HdI$)WMc+7D#EkOW5|OdE%chaN1J+Lcx2pj=L?}&)097 z2WKwd&%g6IM_hNMex1FL#r!J$LRX)?BTrwIj~XuHUYUMjR@^V%x_Uo9Us%22U2FF9 zvv-_ti0>0j}Ul`-u8@TJ{Vsp0_@PjS-g^ckQ{=K^VFR{ybRR44w9~+$5b^Kz7 z#BSkBJ0^Am&)PGw%ecor{d|3pIPo7zU1r<7aJ~niun)oEIxlK z|D)^$uO6*F3g*ETPZR$hd~gP}v+H>K>1=tZ;m|St!W8=|;KFg@+*6#m+V~`&S^S-b zk5Xf2_6twYVlgyuhqKh77z#L^;`x?wHpO>q16Mygv9ox1YL{?YYS(eib5b8Xp7Qcg z!fEMv9akyyiD!XFM%(-)oR->k%$}RhgB9v(kC88?;|*N)yu>Gid!=>}A5HB#E`5IL zgB=w2mB(t7IU_%%7()vOT+lB}R}XnSo8ovG>(pM9bIe_s%oACn3HB0MqufYmfh`)P z_9Al^>1A~iS)wt{DDr>NK8OzaZ1me}bOn6IqHfXJjpo%X4Il zvd%X$cZp}6Z)7P-T}9TYsIDSgG(s&!-hXMbuNt&rgj7Ox+WPf;-{(I z!tU25^XG8Y>*P>vWN^Lf-5Y8ki=W(}#++{xd*7@lolzdg-Xb1nRK{#oeTygZ+}q^b zxm0lbJIwD~ig@Oo@*w^)7VcJW>MC-#sh(8>1)TPvb1`QfU#;nvBb*C$L4G9A9m!cuR9BN15bTJOl3ZJ!kg^TY77r<$knOV!e!pF z?pb2Secx8ce2TctJ9_p^>*5Y`#IKeL_yc7;8{X{~zNM09TR8tcF?hCxXU%nopDpLu z>jU$g=ZtWx59RYjHIHAg}DM zRSNhxg_G@&EU~lrQ)-99?d#}dJclp+GqD?Z)G>)&!qbjV>@ps8VmgkGotoHn{9;^U zw{Yz<6FZALloPvv*PNHwRebsU#BSjH$%);>9@iyy4)>dq*hTDdQ#y`6-JaOt4tu{R zu`77g)Wj}fp9c~YY)xG)iyhF-zU`W9eNXc zJjuRM&EpJeu$7@?oxy)UujX&jk2rUxHEuRPp8TR- zGJhF&_;-7#Of=6defMg6C|+Y-ykT~Gm~g%O7Po!9Jxn*A#}BD-g?TW%X{z&ed!M_%}qb+42Y+~^ze-(WAeCv|=<#rsmbh8zAj8PDVWsa?Y_zBTXN_Jte& zFY(FY$JF_G50CuLxPMipb@vs1f)g&*5PyPAodMA4^;b5gsB-G55Pb9g~&SMVdMsl6t4|2g%+Q&PK( z_fyPI4L?uETX@hfiGLAqPwg5mO6{JJ^F6EC!D(lV2YW%f+jBL`H&OI{wr}_0=WRY6>G4f;T8qWgv4*f$( zuNARME&h>(rTTZCMP!A##CpaCEj(Y%;Py-N(MJWWP|IE-mszHN=*d5W1*(}pvO-hz za%6+L#M;Bmvi*I%7=J8K(6f;hDzhUS(bm6_ndPh%`xgt;)xIJtG(yitHfYM-{4uk9 z|M0oBA`3J@Y>^e3qBkQ~T|pkipTQGp?gKu*;hPj|vVlFiBz6w3OzjFTy<#$+!4Fcq zi94^9j2H0!)UM%QS5E!$QtEoA81TDvyoLL&lK2#{N(DZVYy2e{&*C|$UB-W|YCrn7 zgkS%a|3vo&UbtHSu=qCfV}5n#a-lm7f2Qmu?%p-TOvB}~iF>alClk~IPNKN?Dt2F6 z9@S?Kr=@lsM|U+Yhh;o_9c!qoGPZSdz86>vw_2Z%J2r=1HtZj!tAPwIzmakGb_QSQ z-akyeQp~v3ru{=v{paxV&BS@B__6;seAIj%e{Sm^+SPgJCAL1|tnkOP`di~7G2rDL z;!#%>+;fmTPPQ-Haku_qm3!0xUPOUi$6qM!w|IcD1J&D&=Erc5nC&t0FNYX^P|R35 z)cowo1B?9FRowot{{G*r`SAzJPxI{I&gTg8)Wm}?9Vz}t)F)PsR<{os$6o(bpO4xj zenw-=)55DqvH4f=@?-49oE2REIQ#vV9>>h_&e8mlJDk9uUBu;2O{`7*n5mP?ysm`nQmc`tH~t6a(d zVliN`V*GJ2VCAa*q4ltsu|BDP7&T4Kv30fBVm#RM8uJ>@Vd+})*jHrjI+ByfkFICm zu2ylCo5X*IwQ!$X>|b3K@wck=)SG|k54+u=ey(#C`1W1)b+u=4&OQ9EVdHK0Ig9Jf zkFP&v&im{O|2@OA{(iEF??0W`ExhSjcc6Hxc+_+57C9{85{iFzDAnbddfH11S9o5I z_!MUHrP4FTaiik*r<0>zUhn>f7sX9Y`{w-$88*ktXv-td* zjeEW#x9lQ@SJ^Y=0S~4EyN2JsX8sq<`MNdVaQ{4KT^#VHXV`h1`UivBqqN97svhQmLUFLnXXr|46`FfW}S^Hg=#k!70dtRw5xbdHg|KJsgO z$zz$On=`Ub#b^28>hqI1vsk2BJZr2{#rZ~lPo4Yv*m+Sy{>xaW#m+r4d?N1W#&&WB zJNnl#G|e^LIPOnzycox5;cWBcr_|*&=Z?7rd}gUhEYU1Jk#EIu&o=QNpC)zzf1@r> zn*TF3OmnSO!=*k?d@?vOwX4|uizNR!Je=a3C0vw_hcEkwttpP@a2myPtmAh7NzWAL zQ1K=Gjz2Dx3uh6&>K`tkS6IU7#riinG%V+qA zEsI;OHXuxWU2R~;>f%u|1?;-!06!O(51zM{*o;?j=-LB9HTvMee;W|ydbWsbb`|H_ z{BhHD#s983@yc!kLeqE!hpjgtOnAq$xYYUsLU|4!T)ct#%@Z~p5T5QnAmp4&9WUs? zC!Q((-gAKe7tLq00pW!$_{&=ZyKH5T=E+2EEuJ^ckL7LbOZ<_w+<-7j%#qD)J!3pF z)5|kri_G^Hzt|#6eLQQ<$ZB7H?8rtxe&&x1{rQPGi^B$p+1C*l@UgtJQ0H}AZu`W} z;9bKKyM{mQnAl+_xf-6>Is9qYbbPk~;hNnOyNY)e61#@`?w8m_{AvHxe+2&nQh&T~ zWMWsa$H9r6!~G6P>>~bjXkv%rfbcGL-UHa<=+qz2IyJG&cwK5&vFB*@@r$~`_fJ>n zD~=0IJn0PiVwZ68SUFiBZ+OZ${_HX?J$^u#^#L0Po#`xoX5+SJ5AbiAp2bB}{mxmO z<4nrVa;_S{N$2zb*qpf1h3a9xv%_~U)?X`+^I6$*RQr$*E`O}%=yhztC!o; z751>sINvL2K$uTm*tshQggqN{y*{Kws*+Y zVm2;!ryR0tcMS;lPSrD?vm@_StL$*!fN&HQRvqViQVa+eJz!t|)e8>}2>ls&efdTBlh@}IUm*gR9rzG@IxBTZsMfJb!S={1Tv9WXb-t+RdthMl( znfi`h#k*g0ju~^lWbRkQutYE8O0On)&fv(@F5(NR-M}MeCq5Ky_%)OcTM_x_wtgEUicHxw=e`;P`jdym~I<&s0>C;k^N2G{wJPDr1lL)!vEb!A~hZ+rm{o z@azS80Z*st&bN#!e`pWOjq~?x&Wk#06(>^6Lj`|N?J#dZ*p)gzgW;squHu~3ZesV3 z5}zE7Pwg_!PwghIIY05q;y$Te#QRgbhKo`=d~99nTo)&$b`@t+jJbi!evn+e%`ZtSHD6U(@RX$DU$GuX!i1(*<4Hu=h|D5b= zuM+y;8e~kEV7VmtL6q;9jX+#M@K5hKo`=d?hZ5F_*EK+L2p) zos8$OlG>3krgj6@{l@RPOS3qcx&*zC`~FuA|L%^(wZ3)N{lN#{qKfe*UiClg>5D4v z`<*+PPZ8H@S@-|={vZbLugI&Zi}zF& zn^e%Vk=Y-q>$px9*|YdWR;lJ)7TKiX-er;5pWJ&Z^T#6P<9iCL)M7_Asj|+vPVW7) z-}}qBP{hnHNz9RjsK1WuWQ9Fp>2dze&i<$(Cy|-Oe!cd%P8Qe;N8nxy)|E|a9 zSGM|(EKrw)e6SLK?VT0bpstI|iJ9N*#XBpqK;c*Z_yU#Ws)3m$?iuf|$n$ATMr@e> zJ&8Z^)YLBHcd6aN+#mAth0lsuqEV~5|FPHqrO#qH%KI+zJDMei7Uur6_IsYi5>=M* zEPh6d<*8viDtNix#TY$lTH$ zVT$)%WQlTXnG=zonr=KYvwTOG%Z_}C>SCzlu`8HIAC<6o zmyXcW9`m?>ihNpl)r$5O`wn+mNlg3;_!~9ZVdai+ALaF04G&zU!{3FgbKLT;a^!PS z4iBezr>nfhEa*lo0adz=DCqBBayy(+9{@AS}jMArJy^b)On)ZFKsHxlQH`WKJvE(U#C!tR@NgsJ*8hoAN^kM~pyKl!`* z(5Fp&xu??jbDdCSaK|h9mo^5CA#|%E*pTEzd zbzE+sed)&xzC|r-HSzet&cfN1@T(#6qaRy1IxoJj?FFwI>RCNl#V@u~4|=eLKW#7n zdN2%=j~&#HzANGyJ6YFw7Vo6#`mTm|?`&WCu7N!cIBh*iulYw zoT*x>WNmcKo=@UJK6U!VCi*mjb=#Mp4%(H&uy*s}QB>GC7Ca7Kr3p=I3p*06Y{{kykI zcpt@n3Fmf%%P;8Y{Cm#qgpM$S+MQz^M_wZ5_Ep3sRJX5iX-Bw`ih87q9TUYC>mTRQ zLOs&N@t3JLJyOPQmzz^=vp9qD?)EwsuP~?lL@uGM{Ddnz!oyV6BXt~E;V)N3TtbWW zNVrN2G|N3)#g0j0&?9-AM^*W3;`poON}ZH3JK5Rkk;pm~{^q=}c#WLvk;o;~&?Dhm z^V2LnQpNmreB>~49xc=(O&mYPoX)F^-LBWGdL)Z8sHkr1IPwP1+HVn;L|eav8_iEu z@3Ja(++zyW!zge7mr;OchQJ?A|i!-R9cj`FuR_Ca9is*~j!l-Y}k2g|I zoma8rHfN!C@;Hw&%gPUqzg=F;Q^sz0*ryuH;tX1>kLoz`PHX9-A}*nx?woL!`KjfO zs$$38{H>M8c{D~(HF5ksa^>91*lntL^i&pSP)Xg^@t^m~iMlP}%JCqfIkR>7lYZ`+`9PMm-g(gXy88I*zc!m5{oVIe8R>x zf99jdv-tb(=AW-t|L6!O{ApdiP{Lu$3=A1{RlrA=8|d$k^$|{8g}!u;;kthv7^bN6 zEFQG>K;P@e{8(9MU?{sABY){OFa+5RyoQcs z*W=iJ=22IXhwneI^Z)!;aO?=r*jE{Uj<&sr0|tiEsU**3{E-UkwsMd;50#Vn_bT{u zF|ix?(~*fCjv5%286FB7 z;Ay8Nb{Tt&N$eb+HZC2psYP{ymD`=~ za5={>DaUT%x_7Fr9n}?{d$;-?s3!5SscK?7adSG#HAikSKF&k{Qg0`G(hb= zG%&1FGyfnyxYRV~djK1kdQ_bp$REFdY+x9*tN9-v7@l}i-S46{o*Eb)o}u0jVn01F zocyfb+g+XDU!JorJA=2?WB<4Z@Z_1+Dwqc^ctMRFYF{|?C3c5raoc~Zw>`vw!)BRN z9twB^&0<&auvg`(zk3*unXRXGW8*fj$w_=S;rFlW$C38<#=!9WoAy3LoQ;9us<-s4 zoHTIHIqs~yeB%4>xkLJj;r)SOwGZrff9v9c55+&i9WrlVc|kH>2Zpv!`0Ocu zTuhn$%-<9UrHe-pce_fb9W7rT5bSN+V7<^S=C&*Jyd_Vx1NyMbXeb^bjhuHH)QEPg=Ey~Xf7 zAL{hM)fc5cI4!m7So%Sn{+&8j_{hCF^vSuwQm*`J)FJk)XQ&(2~W@!?Sx2JXu=TVHIiQSi^>*6V?UB>&Vb1%3g9S^?`4BJthvw%0Ib`?KO?H0EE zk@)2CIEwR>@XmC+hKo`={GU0gb56XIT8BAzT$GN7KL>_GsHWG7csoV^8ZJt0KWs2; zN1gNFq|~lrSSlHhJd+A~s*E$!@dmEGbmEi6!&AG2Gg7;bOD~i7WN@$4F5>N}UBgAG z9hMajb;g4?QPCYz#jmN=TP@+x&QGc;vI-(n&J+OtjAxw10zG1L1BVBF!F5bs%FYqr-J)1GORc#RNaS>yHh;J z0=__9)O-WCU&+4Q0|mU3I%@`7G|T-NnOoVu>^-tX?f=lrSfjc-GqOcxcV^^vtE6jT zg-Y@M#74B;pOKlr3<^`-pOFO`u4W=DRCB(O4XWzj$jqu@aA!sqsOZj&tWd+9*-7^B zcxPhful7HbKNh0&eq@EJ?###r)!mtqnGApD6`;Gj^>T)G-1*}l17a#1hMv|Wlo|M`pTtu!CM_^GQ5{y|N371kXTzNMVHYT^8D=22HoTxWgxR99L2Wdk`; zS7Af`G*w--@PApgsIFQ#e*>Qh}6as5r@ z)*YV35B@HGb=AbbZ#F2*jdg`XHXjs5sH;3~wT1ZARSwtRQf%rfi}R^uo+g&JmLGYJ zd~zGMx~k)^IcKD23T{ZFbf##2Og)0u`AL|N#8DdU#|V?JF4xS^c}7`+#cmBgY})oAfCw8c5@cu z$>L3WdA7HB_8t_*?_=+3sf^iuospV}oIzd9S;vw4@iAV+u)pzG4|pSG)l3yTM##Tf z%HurBssARH53rW}M|L|<4LiFm)@h+yiY$)gr{BR)KcVZDmuFcmX5VYXBWBhapF-w8LUxO4kHW4^HWQaEh;+G$cZO- zRxMR(bg;+~?+)4UNEtPQWST)m2K5^S|&h9ul#~*3dKdn1np3k)ID0#+n z&oa+Z=Eq@Yi~mS5V7D@#qxs+*s`GE+Rp&aF6PzjTd7fC!U&PhUx1Zzr<6D$7-o(il znBTKi+~-2`pD0e;=pu3Q$>HbJQw%M<^J4QHBPaOe1mh>EF?{_J@rbQ~7hI}N_*C%v ziF)SXsR6~{fQ7xZZv=RPhT{nf;$rkhhw)$xX>6fUlNR*zKh*qLJ07bV=~MKS1$0uFgu4BlCJ95u_j@>arKUNxs)DB$L=xkJ=* z4p(|ZF4S`ld%S5*b(_P<4d*M*4eb4P>|xL1qwmOzvuon8cb$=XE8wH=$rZbS+t0Oj ztQq|A1AAusM&=|cNzz;sL7CX~a zdke(o+{^g+r($+?E!^jG{?4w9J^mvepVM;K=j+7IV~_u)<9OQliCxCEen{*rF85Pn zXYi+=6FdAeC~Ueov2*z6Z`S&keJvRjUiw`W7x|K4%3!3K3)yrYs(D|BQCM`Of@IwR~#J5r#oL< zc_riQ41PeFGo1_Gw#wkpeyf~detf0h{f4Gs^t8^2kuaGwtO zzs_FpTgtOr_~jtuli9dni2Pr!Ci8>C!0p6vk$vH$?d9hRYYiJ59;XQxiW4{6!8yi1 zFW_`q=)CIKYe#2uE`Pk67TQ-0f2aD5_Pf*I&_>y7`QWeAZq6{=S``2MUd8;*VpB_z z8|)%Bb&|y!sA!%l_S@C?Xg>H5EsQbain|$iz8M@woqtBdNvU1Mm3L3ZGdMD}i}*Oz zoo^kN{zvMAd!=>}C#QB5!ye9EeMas|oonHpG(tXWajY;n4A&!(!>H2-8`LiUk(=&m zUGQ&A7rF}F8=bsl*nMV}JBObs>Dz}5Fj#(}%DG3@s472^Evh*8$lL*XOdcXjG{u~eHLAEnB3o2d8ix*v!TS0f{#c?}dLgn#bM<&+i`w;gWbP3D&Ly%$RdpU&i&E#2EgG)JBXfri z4qa~Hk0qL_uOn+zS67iOnxzgSb4BxC%pXfs)7O!2(BgQGc*S9IqOU91pjy0J@WjKD z@%&MP!(Wd!?|EtxACI;(t>cEH#NbS`c)&4YaHd79oM0Yj8rkba_l0xJ?Yy%1!)Uhi3a7bSsLLdK#PiQklg_Aun~pVSJR`heocq=p zRq^68-6_tfg7=^0esD%Lte>ri?-V~yI!6r7qKb3M&Pe{7c?l&hf_U8(!c+*7kQ{)<6(7k8Xr9W5%<6SRJ;-wr2R<>l^XCra zG5=&zC(Wnj_!)g+FP(hW{O;#0)}!s*BYVy?=U8!KgBGfd$m3pcF8aEJE5GO&b_Q!v z>Lha4mz+_o6Kqi<_BB>smN&H*nfte#$WP>K8t#s5U}+W~cS~gE6)~uj$or`ldl`3q z)w=4WfGrv>pOF)1tHYQd?Ejj1YhxW#&g?oIYHy;rX&YW-jVb9`?pE#F$J&PwUFy}Nj?(?bI<5R+S zKa-RD#e-A7Fi%Ym@tH5h_AmRz9t-XLLAk;%U(-Y4#Lxd{es$8qeZDuRnlIwBKd{w& zJ@QxicjuIF=+Z;{EH?Yasml)ubv0kZ(^ni48qTPU$7TH9$^3EtnnV1|JF(&Pb%unV z6U>RNb%%rraqpO2kB=Ni7S)S zKVH7EU)xs&59~R_&vdpI+;elbnlIvjEr*0zYA=t|wzihqu4CJ_Vq)jS0ng`d|eMlJP^FS6KE)4PWSj2`m>?MY?t&6MeJ0vWO^^AS@9}-IH zIgfW9FeH?{M`}2Gr1<5zfwK=1TRiK7hlJ%0v921(VUI(t74wWY6o-W2@?XWb50ex1 z*~EE=%cq>TaN!ZgomckAA>r7goR?=yIQ3}zau)f2ieZ!(%wNaHj&Xk0ZQxHQ$d&h6 zIB`fg>g2>O;bW&Jb{)SQo!Bj0`}D-l;$vr|K6uTT#IE9LV-vfK&z-6EzOgP=&mIy+ z{MTOaq;vhcB~IMt0(JJSz2iw2tA|C#v2clcU`M`0!#@=>?slnjoMRlvTxS0-$_bu) z1$(+Y<6#x`@R+r5-O1|nO?kLxNEmjVGyTM~n7MvPnDVy#fo;q#hW#coxx zv9tK_ZRVeEFSzF&a`>dW#ntW_5^C1UV)Jfsz9k+UdXHXU7x46Z)!WPF$3gcwBX%Cw ze9&62dKPzmNG-7oxZq#LUol=A5`K8hydSy)A0HAnenL*zIs9q57@FpJa)|Gf$>%BK zc;GW?j9tVLGx@*E#&ce@7j_vx`M3Q(E>7Iz73;DKxYTU^@5l*$`j+{hQ)9UK9R2>R z`El7M`*S{c?q_^HlPi3fVlCBiL29>fwa=6BEDlZW0-l`OWqgrly<{yce?iVG^1v_U zO8$%ZDvg?_25{;Bh89)I{uj2;b(cExW_!6o!Vu5Hnr>cf2r*+>ce2_^v5zymD|WVW%WyB zSgf}7OJtsku{W_y6ZB?eotpYFGW_bEwBP?{>Hg!a9P>YpUkFh+2q7FcHnbeXwuDnn zH8q2S?1nH1Q8*<;gM-jw?OB`E5)QH(!eL|k5_{0D5Dr4}V~1@C;UElJzRzp!`;YhI z^>(@L>;7Dy>vLWAJ=4sb$UJ4=)gMb#GiDe0mBy@L`2OHfw(lbI)bAPnu|!ktugDq| zMmqwZ=fa{K=obDdskKKL$;f7%|zgML(_9~lQr)ZLzne2T{Nb%aH}@eB2(va`Z3S%lHa4yKe_(*EWv+k!>`FkF3xP_loSG zxqM`H9sS(5i~M-)ZCIhHu8r)VS$t%+TR!x2ugEJX##zQX1?N@dX6w2>j)`qlit~zX zv@DK^9kd{hi94;Q-Mn)6!20>HQXN+D?(W8PzEv@^Vcuu6%L8uEBOj`2CW9YQvzlq( zSsRJZIa9=AHjy7SP{w%~_p**vT)3&6cm~yR>1OiywA$D_A1>NbeDNH^UvBGKHJryo zw|6h&7x1{9QVKjbmPsKSVEY;jnyI=WzY4MFxvUs5w6Jm?Oo{x8dnW z>Aze%)_?6@eB`6Qv0i))pEz1R<++C0W7RMpx#3uAE$11`9q-zYtvlX+f@}FI-qj{w z_E!~8JW)K}H;UNzBwn999&)l6z7P-g8fSgA7w{~Ke-EUD15S~b&$VN>Q?2PL_r*P^ z>u)S$Zi2kk#ehpDyYCC;g3afPZLw>ya*_XjUjA{)bTL@F63)Cby+;-S#wd(ZFt%1 z=JJ$y@XC*@g?i3@oDb7K5l>uq{ArajD4$Nz4b_y#__P2y|#!M15TZn<6J zv-t4#X&?MxhqMoFxntS~AKoeLgRMUs96Cl%3k7_P@`p_eHQc4|V1EO4n%{F79ImGE zKcD8aZ3c%eb{_0!NT!7>-bLAQ(|nH0;IQp3gZ(XH?RXWHf0A4LfkI(g2tOYjj-m1T zx8XN5;|T5j28T)1Tb~ksN`?Hi(7hp|*Y%6#!rY8Foo`|LG1^lNi1UP$2-bHwFT zJ$0JDbuc*WzqhqGX_}v-7#!ZAvTHkV%09-C+YB<2<`q*wjms`Av#_$#Vo;vgo z2U|PpKGE9YqmOK-K0{Oa zIvy}Wt`0ON-b=-Uv`01%4%q|bAD^P`d>vmMX}@f0oKemM>b|A9u66E@k#2m zr|S6N@y^T<=7r~E_g@T-%=Fv@yil^P?hFYa}U+HTQ~ zlTMW@zJ%jXv+h0J7r&UaKq{L&L-CJjKSgH3D$8P{qcc`@)qj~cQ{jQd=_7# z!mpaOPTwTtAco3*~!Jul(cvrqBA zCH*&$!%GK;buW{j-NlBNUM_~8n-~7ybZft>ad6ZX=B3UHcrL}dDq-&##_g0V-1oQc zyNz7oQCB--dz%;j_8RA8e`DgFzmxyH%pJGC&VBa~Kc4n`YqzKK1dlH}&vUNDXa69c zeZ`DVTyLBK;=%j>sBZVMj=2BKB%VCpllm%db3@Xe#j8_a!43bE)+&yo#c@yJqiK5$ zKTdrEkGV1F--cVvO2@?4Qs03${5ff_;Ix~}t6BWG@6Abj9-C&TZAjAyMtH5IUI0jIzFC6E3I`AucwB!uHaMDZ$r7lZ)vV| z408sDov8Yqy^pJ@qBk!QTU7J>|gCKdm)F{Q2ZOJWjtc8dJs<=zD~2;w*!BD zx3yDOZTKOLajyoBzGrY);XG`^nH2YO1y|8{XJ7*d-K)->V|koHu}=x-r@n@(Qy=Cz zD=5}s4kuGrf1IEC8uqzQ9yXItY@yh{fYT}VFXP*^(wW(T1MU}tvoVj?QiCt!V-&Bg zVUGurYcqI6>f7*<=$-8~T%ET2;MmYgb!S=uXVYAJzk;7ojG=*}ACzb3LmSSd*j~X^ zly$x}uYpn5LhbJXm7tK&BRr@e>u#WSeroGId?G|Sml!wnyG#ya0J zIF>rqWECK^6Nea?I0mGDt1qyVSvVV0Mu@RG*P;RJHFSD>TcyM`Z7RnhT%B z-&3slGS;a%zK2Bq%Y6@)A1u>cF-LCrOwvDt1QpUmZ`USMb;^Ae??}VvtIUBWP$SDHzLbX>LjvGg(m$m z^Srf)?-*F18TMLanWi`cBkNSOj**!q{-6C7S)lID`N%SroRg7tn(Lh*vgL(jUIi>u zoA-yvI<2(VB8R?cZ9MA>Sf;vjAadiEoIe@&!UFZoj#c{W0^hIPIgz0xh;@Bg<5`*Sg4ekIxRwykZ^WKEeX!`st5lYS?R$ zb(*1`BQvl1e`+|gKy%}sifxqHT7Rt5VtY0+vsAymjUP#E_FZI|O7YzQ>y)v-y7-zH z_R}8=wAh}CEK|)sjjTsMT7TT_^<*t_ctz^VSf^%ZPUP@6KzWbL@yvh-TK zI`w6&Q}Z}|F!yHK2d|@k>b#8ImivDNapGCDfG=W|1|I2b#7*8xuFYV9a`tItnW|!l ztjGV3_rhUs^I|UGzo>Sib{zhWH9Ax~mZ|D%vB+;J?yvB!JwXj$yG33`)uZ&mI`uo; zIJnurt$W)vpO;}BsBFy0O7y2XEAV~F8mED|4taBJ5)B+LPOL?pZeFx%_ycCW}XEt8YT zS12cM9k}C%;;}b#IEfb9BPD#2a@y;7>q_^IXEL7kk$X8yi}=aM^5g7kVB0F|HA4J& z<7eUwZMnJ7RN^7#J#_`M z(w@VasjuKZ->3cY?$lRt%O8^VEY3)M8GlN>FTlfD)b*}{OH<#0P5(>U3phXZHQfEj zq&?DZNvA| z_6AN~C+SndwYw!ggV(3Nf;+97wCC_sDtcx$@Y3~$_;oe4fjg}~BsA>z9DYG{?Vy8g@G$hRRT(04z8xQffMU9W!ZZagy z@chkUpUjZ3EYIW4n~KN#b`E#iY)DuczYl<0Zf<1P~|w{%1o%DLzlJS6}&T)dy$pET5jC z72N;l?&VpT$7%hH`73_cAz|TeuH8fYyAKK1_Lt}Qyui$!`iLQN(cbc4%sO5?U`S~8 z{4L=V1LgA@|7L-W{ndtd*T_MKxYtg`#}5vbpAEEQpTmcQ1>V`RIP1tE{+5W?u<0l{ z_iQcT>R*fBb1?iyeva11vo-RRW5v0fy^o`h7lZfJHtg1BeDA9n%%5cZt=$&~j}y-? zjEU7#jlZ}2<0Iqs&&fYdJj0ltp+%fHQEoj$i`eHZHRByMi}|x%?_QA~Q>_0+aY(pk zlJ@xCg}KQ?!a%he`8;LSQXMCpBaiB~h&`rgSCbjMmm1ctiY@032{kobz)xtZJ`F6N zC+F%pa`*G)L3<9Lr?PskqYI#Hh`Jh`goz55k$$luh7`Yd4c!}6m(3%K(m;`wn>$YJwia{j#-aL>ox z%e!9=hyFv{YPEn@JgGj_d>PMJWbSIUh~NIx+Qq&3FMDLMb=gyY?0nX>>NY&*+9hI8 zw`CmoqH(%%X;Csm&L#rvF|JL&*yLj^*&pFT=Odb8{;n>5>9x{ zT=Z$fUazYMeX`j94Qo2qwK!;*vs8N?S5w>Zu6=Vzm`~k{_8LCF+ZwPmnk>VT=2UU zuKl%m{yQX`^nn`CUc?JNw12gi@ZT$)gRX7h?H^e)bFbpmPpq~3mhtmd?lndqy!}&q zC-%Y3J~ziR-51~alK1Y>fnz%LKSbWJ-w*07BYtdKBZipI$p4wUyhYZ2w7z^~=T9U* zAq)+eTRm5d=;P{ucQkt2C);GI8Du8sVha_T4Y zx_(1L6JN&CuIAF?{4Or$M{AFKi^lUESl=z_6WM!r*T`Gs?lhAx;M4v6zn{(vb*%j& z=^xpBkD;MroXBlyKA($idy2)iO=BIk0(AnAx`Rw6Hj?M@kRX8qQqBl-+v`Ok9R$r_$qGv+|badt1+BLbNLdk z^}M`YsU0U$;axS4&rt_o$K94#S3ZYVQ|%r3$B${2_68pNf<7mH9IMKs7$RG&D@2-eM@>a>{7$!2Rn({S1cl7H3n(bM_H#@v=IfZA^Ud71v%S z20VYM_#ZM3p8J}bc#y}vURP)B#=*y^#@BG0H^uXWaqyp1;OltLay9dSTE*?(QlESl zuXuZCSWpo^PI}k)(~OT_P?Zn=9vYT($mhlSyf-xTecxPel{dVKI&aaAJO9U7bfI?q zD`ojA=2sZ!3UT67RH}&wPyE2W_zJdvXq-#TH*%$QTrkaNcB}1=?b}Dhi8oW3ui##* z?CZZ96A%1U4cx`!uRoK|Ij+U+KX>0*=7QIJVH`1+aq^eu%a`zguk@*E$04g-8*`2y zeJ##=jQP#b@b0(v<6o^E-q308d=3n^Mjn<=UV)cI`8Gz$Uo(+ zZx!GBQT;saUU+F}3JVrlJ1nf#6f#rAgCo~&3M-?>jl21OcZwO;Tem5Ux!HMz9Z~<} z*J}#zQ_=a*z+vk*h0%NgKj_}%_guuVK~vaa!zRCvU`*VyM^h-@Bv*LkMonSrd>(h$ zxGD7Gvv}(!O@3d}9Py@1Qz)tD3VuNazOZRi_!q65ZcXu$&6>j8Kl39 zhiU3H{1#09|hqQQ#x#PU77_O6N9K4h9XX=B?e%=(aj~WMG>nCp|9((UDo~PUwFQDQ-ruqHN zrqHdwKK4ik&!wvRFX6`&W6S)aDV({7YvaF7;3_Jp$p+rPXVRyNeRJ|~o0#z?iq}@K z`(EOiYkV9+)ya)_D<;=wr-`&V(>UnV|_ucf{NM-5EJ!N2_~nQslp?Js`0D&h)?KcC#dzaC({ z?2#%C7^IJR<#7g$HAi4r>Pz@KEp|qA;6bCz{Q_%^Q>ZIfxP)rX)7YerjS#IS)5LF=T8|QqZnHa zdmiQ-INzSa11PrV@meaYhcYgrc&|EcR!DpnPfC3eZ>D%{1>aBG8`$^oq<;>_rM`%d z(hO%;4S!7A!x831UGu^zsW0Jkw9NTd$IXsRW56>g_k^{^N2&8tW8#LRJ!_seFDyiP z-bLO)G0rMBDEl{i4Rc5F7s)>ssSx)&R;d=>C9pyDivF1UwHUmIL>8%R&qn@-dV7~> zVD2|fA%CkrSfr`;UF6Ex?%CA9+!*tU`wojVH|}?=Qh3sRu|fTu;gPwcoz)BU$0FsN z!;w|0@R1GbZr?@bj*$~J8Cj&pEd8-c-JR8u4eIc25ScsHye`)t=h6bcihaf=dCOuO zEwH~LE94iUyVw!`+j~M}_Bi*m*CN|!s=XFjp=Re~WCxA+o)DQmp1d1Gwo!wRtk6LF zF0zAq+jo&;POwHd=z|rSq0S?}q`1BgoiLTg%X0}kX{G+*M7gJu_lhp^&GuahzoNo) zeNNJcD&8w1OO%nf$XfI_sxb^F%Y*ld$UJrTtcfg9<_`U_Mjcn`kG;mFImBCO<#}Sp zT~A5cb6BLH9wMu>%sWP8gPOf#M4o)AT>Vxbe2U_H>p1i@_tK|;WvX}&iL6uJdq`wv zyd3_{zQD7n;60>>RqFJ<5!s0C=eif>PUp+&0gIHA!^kT2drW_9P}aVS%$;E^ykkUO zL@~A!ZZ{#FJ6@Rj5`LWe1|Bvs=~KX$Q{RE7o|&{4@gZuc?HX=>mU-G=Sv-ky?}`np zRO2HXw9?l*k-4+wgpVxJ)Yu=Ni$3NMw<{(-ix;N8gv(RkftO86`jqkG)Hkp&Icbl) zp5}U%Rq&^@J)F}NUZj$}R*#&b*2N!LJ6E0CJCXg)w_cBk6Dw1#X?%yo3od91v%LG2 zFw^dO^%HqL#WS;lJ6)9c9Bz5Bc{=y9xX~rXbk=3?-RPZl9r(nh*2`H}!~U160cTwf z@18DS&bKP=e}x*lSZ(9~DDQj=SGq6Fa;8=Aj2UXcc~!(Ezg4Twt2#Daqn^Dd6!80N z&C?kbe&-y%PMoo}@szUu&Y~jz;Sc)9yy2?r#o+vD;DdjZ2fl_c&$RC6iyz1S$sUPk z5l){aHfK>8d*9?<@|nf9oAq}VMOJ2u*;y3X?^bhn7Ugh{+jwVD4hP?E9Oq8~54=O1 z|1@{Z-s#+N7Detc$9g%7a`-7twJ#dD(_h@f*^hDt`EY{5V@0_=gAO$8)@b$2}xYd$tWbDI+K0Z=U1x zt@|xv#y$^=+j)}3>mSii&MSD=-`&qyQN=SC7(bpT_>2E@rtvxal)5`Z8aVYaG4myy zxlm4HP2z5k%Y*YIhmX=!=SdA;e!?24)eao@5AirpidcWro~)=1Y{<0tz!lHBud}^@)0fDPbG3~7zi2FD=JBzY?0NNE!}gc;xkQ}U_f=~hW5XHC z>5s0(75_Hh$Bl`z-m_1gT@_sYAMrnJ%n#HWRqdU~X&-90cS^YJN^9y~S*%fK+&kFz zk^OI9M~08po4pfRp&*{f13q!By_3hcXtBN15!+VjZ|_8I`>FfdJ6WvJ7<(tO?K3f0 zyU6glHIkpm3XO^T1rKPLqdk(xws`g7{+gH{i?jsDV z<==jZtWYEF7tDWczV=IG2Q7}zZY+Ic?)FGz_FFlPdjxA#vPUA1?G&>;(uO}!*>gF3 z=e?0Kd zzf`fM+py5d7w{8mj(Z2MS$9~-+81TqeLdIOJ2`xw#;eadPFR0fn5$0_dvw=s?_}^^ zs;KiSUa_?}Jd4Y?PG93crVoC;v-sol7nkp99M9hloVlC(zAU#mdiP;r!L#y@PxUv) zx7`=_-eXvpx?Ie7?4HJqeXv()t^u#j_Y1rKi$AK!+( zh7AiH@{_|ARN@;rXSjR4YF;>Qgxs2M5&Jd|^LtME<9pE?zkzc`8eg1MTsUf2$UGwt zIHiR*#}fX#Rm{fhz?p}rlh?$9;}5eg=3c@91^04o9`87OSm-C`RUCK3urS8>MQlHk zcWnuOH(G9AlxJ)@YM9R?l@sjt>tX(lO-^tTg_q<6XN?g9U%`1t%YR%uTzHH%b>BK( zd%Qlk8xuciQyb3b1};2V?Kz)oxZ+gnBd ztY755v9@ueOVoz^XRx{C9`ank8JD_;nki%LGIe77$j0TyiE(1~3gcL>$ikJ@NuS8l zRbo~Hk<}Tz8i?%pt$5rka=UBfGhT~@YmKFUWa)Rtk>|+Auj9?JhK=9*f7UlL`v>t^ z-^jxC=58G$OMkSEd}MW|HR2;XZV;z6jm+FAem?TUKl6VxCcbpDJ~cVP(<|2T619XU z++qHnJ8gL39QXCCDdEF^QO^s+hUeVvUY-{vyyRZ@o6F+`_o?C8JYM;L_?-V`-0DH` zIrFo)*L?YZSUuxGf45(*;_+wyXD-*-M|kO@?q$E%@Q{Vh6YJQ9KYv`Ec_+`|>ePoP zhJ{W3p(bPf;Gmj&#WMjneNua@f1LP~nAJcL2RxmOlgDn05}(2G|CDQaF5>pjr~&nm z#SbaoH?vq>Ju9cqlM42G-rV^dE?6SBd<~mlluy2hFTP}Ns)ss0SLemnfpcC?#;juZ zSFN{t$l$I^dHr)Z<2B=`pE7>-y1lG^8rZzdIQq9?-#62_;HJyfx?0NO7qmeAgtzp4 z+nUCC;dK;$AGVCIy(>R_2d>wV_zdp%UgGok#8>9)>xdd|^kdoww^(a<*R@$ZWu3$q z@!<7_hvt6mA&*Z}$N$V7f4~0lFn-(iP{vGmUVG%7)Vx-^XW8&Dc*Egg0bhvhG2G|G zwfii<;oYxh|u!^0UgcO8B328wG@ z!3}>VZ)>-Q4DL&@y@xI zj@oT_sPF~spnmcYdDia3!hKw8@IzP9LxPPlL^{M0Yhni0h9-lkHwX3Y-=;7f#%6+Uq zUixe6#g}p8F|Pel?cs9jREHhdag3O^w!XO5u}RJ|xL4})_;u>T*x{j_Dr&Wa`yQ9{ z&*Lk!z*=|UfhV|E{2nh}P0OrZ8K0t{uIhN^iRwA10jyIk<`!E|5|bPjaQrx9ZmbU; zeX46eG)MfL=E_3@*B!6_r{;whQmmO0ewF%g`tWee8S2E`tN7FexfM?x2TU}+n#tqb zGv&&CtGI$<{0;1TR^oFwIrSy{fM%(~1~#3oPpm^+M9aDxAG;NkYcqI6>f7*N)ZKom zW8X(UclLuwbv@Rie}hr z4cvQ5(kGAiQ)h4U#ct=ywROp06LpP)f1#rNQpNSo6OTI2;1tTMpAyceu6VH5`OXdJ zQWi&3Y;VJP)L}1FapS3Sy_r3ZP1JQSoSynJu6=?F#p2sPvFX6ou>!FG(()I@KJuU5zQ&L~T=cw8FR>zIolRg%hZYU zGqMmR{>U8raYu552Pr&>6}qhi7NU>eoS3`Fn6spFg{S!|$946nz07NPQI> z6vP>syH5V?ugD@b^O02=&qp?B1|OOGy*b2Z6Ba4UM}A3h4~Fvaa2Z8k#?Aha_$=O$ z`YP^yebS!CkN?Pf?lNmaszZAxiyzN&Z~LWzFW#j8cj^I;xmj%XNEs;S{RRv$K|T8%6`VvcIH4cq@NR`prJUH{LSU@kcf zPZ)C(wTCZ1B~CGP;F5o;RpZz3f@iF;aZ0%8Ip=CTb8z93WQ}UL$BT*2Vfm%RN1ptO zdu=0T?D4Aj;`=S$OT9fGtJt!X_e?BcgDPsZ7d%Zy`RWbj^U#C61$H|3Kr;3qW0S~u{TaTF{j6OPd%SNw ztX&50rCK~^@X!y9@0=;%s+IceAbu=-tWP|1aQ{!N9iPXMtHj(_JFfMqy4qRHxba0k{XZ9vadP;phMef1$1iBiF6!Zn;o+ZOs)4Mv##yV4Z=4F={k1&%TBe4RzL7WM zlyI+a&C9iUT=zTc=w3NI;CuJ|nRu|<5BA`W;=x5Ua3|yA+iT>CZ{WC}R@%iJ*?sE~p`W>A@ThG@ zgvHw1u)HmaKeE$i{Xfd@Uj#%o08CReP*w% zh*0nx&*PZ~=%eO~`1pawSLZd{DDS@OniuXr)cnSPkR+v&}{QH*oDqBf384v4*cqPJ9P`c~0VUQ$~bg z=O(^@!_Ko_)~JB1&o@r2)u|)GZ!eI~SfBWh3(eQh35RJTd`X;Ko5lOCF)z=!DxQ0N z;!F6KKc?;Y`pm?4;JJTF`{2%hPJ9lxxH<7z9Clmc3wT~7?T<&@p7=IgcTVCn_}|nw z@U_1r?Hzd1U**$tu!vu#-XHAXA5vvrxFA+KFo)JEKT^?{AWp-10c+IU-Xc%Df-Ae|7IO`HzpoCe?%C=x8e2=$2wLU`1Ai$ zw|pKSp?Gb0bVS(oF?*-Kd*SefuH_5(CyM#6W5?s_L3`w{pBT~gy`wgKg5o$e-0UAo zdlpZk*j~h?X?q9mRZH5-_zlJHL4_wrgx^r?--e55hI?h78WEm+T26kUPH^pi$*J}X z{y;Ie;Thvl*L%_85n;l!YFm2|zo%x`hUetwdFQ|$#=(nU^55D^xOLt5)-j8xy<$x5 zMSSR0dqMvi=9bdBlR_Tn5{m2Cfqgzo{GiCxNB)Bb8K;J8()P%KA1D1I zFQM3{gwLdYF|MR*Cr;{Ok53Zc6ZcGg4v$RzXsl3-Ir1%vvAvButV(MJkDyqG&7X}3 z4^qQi=Hn`g{a0hg#yjmr4IJKK_*&b>A9}S)Gg-xs*!&24m!z-^j~vCx;^5_pN^VSFwW@A2+Fs zn{*~)X7F;FsLym-z9yf;76%n75V*$Fh&2!i+*ta@Fl!rP2y+a^Z%2#z1zbQ zobY23=Q6zUC-G~ag-a;rD)L*3IqAfgLvyIZ>Jc;930ZU+2^jd zhbG)@gJjJ9xW$Ie{(kVJ&>LT;_>5bIxA#b|#h)nFSm@at7H=$0<3#SgNfLiMo|F;K zKJ8%~9<*6=Shk0=2!FYG(moK^-J&@(>(d=i+e-Vu_AnlA?%nM3@!G>|{DET3Yw+={ z#WO%{;3K<;bHDbm06X_-4&(KYT(*C+&ys8JV$%UhJdyhiGGF%^h@BMA@W?|COy*L+ z(}pyAClUibKeRc7eXTE!Y-$bz`BuDWSaWFNOZeb$vGMcq*%4xM-zE4)bK;lb(Ib;< z$KoZUnnPZn5Sjn%%(S_zP#vCJahbOU(!Hthf@{qyTs3=#_DhjYyFu=cP9_dHjw4)$!qlh2de!__U`c)pq$Y%k;UQ^kFRyx~t5 zs4G5P*c|qmW}ZXZ!vH+3UHtrby!j&a*{p`~rHhTz;`xi~l*~=c-SC%}8pm7);)Khr zW0TzCZI_Epdj(&e?yS(h6nkEg)Ij6`sUL(BQa=&Dp|0A-iB~55BVS4VQat*qB>!Xa zX^LmmBHVpO;``&&)JHB#ePs5xNuS7zQ(wY&Q{RCHU7hsFRx{Q;i|^4&>%Ib?zDaFZ(?xja&0c^T+$CGcdrs`oF?tH7- zR%89}Bg%|y53BI;+th=#uHpR^=c6&JcN8p_zw57z9l^V&gSs8xwPRA_c{|s zm@oe4Z|X$-tiXRgES@9f2k-g2IjV%gk#8ry760>&7|eYIPW!jHm~T6deNW!ZEArm|%7gWqhgW^6R`zcX zGw|e}v^#Ug;Y$?ju#OL|KQb&U*yDJ^CL_b*ymi4%Gb6j6hw&XfnQL6&zGi6 zM}{jYz8B5F7b!jq>bTKniSLbrQ{RMVroM;|ZtlKnU_S1>#mLZG9tPmKTaNU#tmiv^ zv(?BD>&zdEr){73@%RzN zYggeWS?$&+gM)V*>E~8li|6iS?)+5TYv+;vZj#vWf!#*>dj@I-chBiF)R~51KVxc- zTzY^Qv`6+EG_q^|Mz*Iu@)rlWM*keXcd+>NUx5SjN&m=eQy=-4!D7&VEnQdq;|rLCHRYDMt0S34*!t)nfOEM*Wk&=CVj@?xUp*6 zc@;VFII$Tg@^4hL$LHfA$LqrvaL5TG!`#K{96zN&?UQ}pmbyAo9qKa{U!eHBuH#lG zi@B{m^u|ArlQ(`gzI2NDj?o9#IZc1Q8~$>DIy zQe6K`{six1c)(e%MM z`Ej`OIpROo`HAaKk$*9C#}BDHzY>Gvc3u7jN5!W-39d?&#-E5>x+w{iR1ld~m@hf=KJ(RfknOZem+_K`6c;Q@2x zhaZH0zuR1n7Y|&L|VQZm%F@8hwzMZ(sBk6v@ z*$d=QoRMEXIx>vmSK|>2wVV4GJmzuhAQcTdiG%l#W5ove8HZ#Pv_$^ z6vtVNC%-r{O!s#@#^KA<$F)mw*h}i4Z^lz7_8*T=Q_tfjheh}~#qk}E;cyzL|7cu9 zc|LN_m))1o;U8!wKND9_95eF!SDZiE*We|ujtpz~68>$eyqqLv{DR^$cQu~@+ zT73Ntdxu|!y_O~M48YM8zb_FP-gGa0`rt34ci%j=Q>^*O1*xy$CCkOBe+gfv75q~C z`CCa0{qP8ib03Wh()P$p-xjkmr{h!a_YRH(2@k5GZuEc%6PGT5{hf{1Hjhlay)I%>kk>Waz!+R^i0~P;G@)aEq;~y%tr1-Rq^C-FPhKiaWF05+wqN!_476LGTd&HWSlIX zn)>m0f9k8aR%TRJuDanV6wibb)}oAA$E`LU<+HH8hu}Gzjq={%Ubx%lqq^Q<`r{~y zpC!?X(^B7#Pg7jGMYvY4QK8pq>KR|!f4n zBz_s5y4|QSck{_%JoeZ=@jbDU`pBjolJ>}#s2uN$!?L6N{eSC%Po;hlp0Hz*hbegb zPUfY5=4YeAMHK6*ggf??2j4gAi_cI^pT+p@E~ES#{p8Sro&Bu4@5x85y?fH$4X^!0 za&6@Lxx{zJsZr(_xhnOM*X@7M zI3V$J@T`N>u=bTW?%-s;k=qX*6~|-0iqg zJ`d2>T-f*cQK6a7+9P+Fl$?A0@NVj>&piBy#_+3f$>gMe!u|4D&tCO*B;sZTzj66oJ+H|JJ-(*jtWyQNY1Fp4K7S_*b_%ltcOwH0JO9D?;M#up`Vw}tH z>{}9F#EG}s%f8l|k89tS)J8Y#OR;}sQ|cr8Rgyk4u+JU#i+_uZ?0IJre=qFu7wux6 zj_=%UUrkVBc=SDT%a6tXQC~jXYhO^@Yc>4sePY&rEq?ug{r<{izsEZ&{P98a8R%Ud z?|Vo+>r=(`{w_|wJHG#z`|>OBgN5Ro=)Snt6N&GJQ~sfDwMU*%lV|5u=UxbId)K9ii!ZTJk$^gh2BH-9#1?}PuQC9dtjJD(E|KL_`HA$fKT#33(< z=S<(%!gcG(bFDk>@UnWy`15Z+b(l9 zY43w`sf~~P)tgDq2jP1Z-v?IUfaRV?naN#zo1d?Lx3|1|P<&@wg}c2oDooejA3va2 zt1I!icau6P<8$wsi#|)Rw9-E0Bk%ttX|Lj@U)fV<**kb3#ku71^wdwp8&W?DpG^HC zJa%<*ud#T{*W&r47-r-96l-+_-uR8PqH|K1g-=l&e-VC``UYB?tM?BA=U>$%^$MN4>W%a*P<7vfF56F(bYOZ_t3bnB$O7e3afB}{a$g}D9p zEnzyJ#mWK1N45@X>H7X~0oxC12|4Xu%(sMQK8F|3SbjS87%V1rJ`>j-+7bqexf|Y1 z@qK0<9^RDr(fD2Jdkt#|lPNymr{F88Uy7TJ(BC+{@QCKbkH(8Bu2%`~NqrRupU@K8 z^e^C+XPGbG8;>~Ke2Z!upQ0vy5q?T#zJV7P#mtv*?MW?N-?z!&L6p;;$M-3I&u|5v zaE^FRnH<`1`zc90S^N{VoiWwlCTIy4PHhPb#L$l0U!V`4#qk%)t-Tic0xi>C$4S## zLY1F_$6utsbGQvxU!oqw5IOvEvFX!{XH(2W5f7d2T73%m4aM5)#9OaOdyo|9TaOLa_()3Z>qF}U)-Mf93FZ{OY**iPo%zv=iS-T^*w>9_#MS_ zehoe}C-L*~z`K%hR{W(UT>aOimKM)dpZ6s5YRAp)HFq)h!fPpx6FGlgOIWBqat*~g z?0sKLIEDn; zv;XG4d=c-SpX}>-xZ%SsehzH=6|goppnK6PHzaGl3mLcjQZHauxz;wR$O z6wj+`@zcl6*EkJ)|A{m|*y}}gJ6Rs^h?iQz0Dd%1S*kAi$e&(o3BCF7dP}(Gjl^Gz zt?wp2@(hainuuF<$enxj#)~NCZ6;FI@Dg^I;$Bi_1St&g50N%jaT_^Tk=z;OF5> z6xXzl9jTApu940i$EQB>X^Q=q;i}X}u1S65USA}A24GX_TX7o2T(x7Bn#CO1>&s+a zA`hpSx6$}Fiv8!~SJCUg8u$82e|`X7K(qOFe2Z%Q+j#eCar5(V3C;R$QWu~6TAgTL zgu8!}+^avHN%3AqZ2C4m6Yvv??W=G>XVM<|1;sq9#x1`~d~ZC8;=RV;BNVS)fCGLo zPw%CJ@Xa+X{;flt*q~Uqkvsk`>E9QRO8pr8r|&+E(SI@CxmIh}ICJp4by`DS`&4|a zTWg5#$qVtbbz8#}?G5a|KJk(BH)!>DKb$SNoVw!2r#Ecv%K0MvAI+XWIfNdq;ZvF$ z$H6r{Tf3h1k-yxiHO$aH5T{aHuM#$BQS6W3Zqgd+e8{why*F(Q%lJI@-@G++@HzY| zt>o)CxtDnSd{-Tx+@dwC(!L0v+p;zEJl8uI?z45PpV5#*JelJ6pU2^(KCNN2_9=KP z#r6umNL{s!bGB;@t@_N^p*7q^ab4zO->kf8j~q&|y$O$^ct#)>`o_BpuSFU85v$8+~j`b@=X2PR{- zWAB6P1$`ptr#^Dl!D?80WGU~z`N(f6#@vbT4^GBhfiDe7d>!{2n&f97-a>O-Tft+R zl0IYc@?ou^s(m{CeR$$m;E^L*yS~O8jVCwTBl^_vJBr_bSc8*CsekQL@Y5DGdcHk{ z3l3=w-T261hpA`28IL={y7O)L4Nc)Y@wy}J9sib8#$S$3<~0yMr?{q_IQgh#E>m!? zU$=IBAA1%)L$S|d{5JKS`19W+?fr0@W6XD|wZ=`ywuXi8O%AbW@(UmDjMnvGe< z3r}ec-4C7|+VNhBnf%8Li%tJuC5;3F`Qc z$zd%1zG&^do0V}5#dAJ##X0tl@7qTXnv&E&JDd8E{nLj@f_x-*3&nSk0crz`~J{$Kf%hgeyDR}estzF+6nT^x`sQ-oTi-*rl z#vhFzr+yXgccVEPXCUTh*(3Uw@t{8^_sZiZsb7T?Zc^uBo`@gMHc!{C!o6;>?yenx zCsF)5YdU^@n{l-_uzw|4uRM;tLmsrZ;;VPco9FLReE%<=YrZC0g&WQ_M}2zYUKDdX z0QbE+d0r31G4s@-ua6=Rysx$E-`Sh-9qRhGAzVZ8+V1x|wkMv6`b*OYu7t=Wc#Az{Exhk;`miO=AVfli$r;IeIxH#l8iGC_jw_C z9?f`B-M(ZGx^{Hk+EMI35%Vu6>lk@A#q)C>E}{5Nm3c*fn&{fd2VOHiANc~!-L)O4;Qhp+}imWi7~i};`d;?y``q!wvPHo9!N2UJhoBXzmfN)zKY?Uq&@Q9_nq^u zorfEI(CW`DsRz7)O4s;04%hoI>7T(I#rPxtMWNl-CM!M1sV85-XDP>*Kem^t?BA&? z_yNuJ^+oLyo)%x~=Lc4`hFvK7JpPdemc47?&px$BHu5v`*yA(x(J60u0L|UP&urtB z(Qoeet#AR&*m6>+;d-BoL7xmBKw0g1ypk65(jQ-^u$A#~mxlhv$>Fio=sPL2;We~i zGyU;(%Dc9K>wh6XyBHty)Um1Yu}I7MP3mGL{y#plP8oe7!xxw)-KWK(W1ux1_#`|4DsjgG0hlihbJfcd4)RI3#>U;dj=q=ON*8s_-@3 zd?WpT^zSb?fpXUxA1l=Stn(i~rUi3~UCeHr_yS%)@m?i-j{3b(>|)p?@sT5`dS|hV zm!!Ugw@|#cf*(=g^MQsWRcPvV_>MQsWRUZ@s?$A5&Sv;KvJ|yROTk0$L5#{gFA9vU~@mV~bs@6U7w$xYf zBPv(*#~rpwd=^iqtougZmih{QM7{6PA9vU`@mV~bYPai;x23*{-%?6&f-P zSE2j$o$vep|wP_reJUUrMkf5NAtYgU$6Y8I>ZMUe^b5kuj&#{ zKbqIh(t720)pdN7d4#?3pXw4%cR5e)TjO`tb&MJFJQ`DVfhUcby>w?Gu+IWV+#D@F}yZ!t5@Ek&hXfeP2&GvT)lF(I>OhP-9N2Yp89dy zKHkr4dahpij@mhPl5;7u?e==*!|Du={RGeH1|A=0t0R1daeL~O|5ewH<9=q$IR|(r zlWwe6KBvy{)Z-^P!}(gq8`Lqr!<@FhUirl)+W|hzJbg#Ka=#O7*Kjton{zWhrOxs2 z6L~(8dgZz52%llRUvSR&U$t`*?{!ShyIH4`CbxSqt0-%y1+eZXY3^BD8?M` z;&`=>q1qU!jfuMamj)P2zuF&UMBajQP5CT%a!S_)qb( zU^8UJLkFwR1ApfhlvY1Abqf;Q^oK9^ie?_&K$YGnne@;+^UQw=;A8 z#CrlBeTr=tFK24JHjVeF6Wq>Z<~;_Lvlqd#NY#mkw* z9FO;?6Wq=`vXbNR=+kT`xSdJXu*aiMx9#HP%qFgz@g8-8+ZmsqYsRCSZM%56>3cXH z?@=fC6l1PWj_;`BGx)jB3?Ig4kIznWrZC(1JynQv8FPGucQO7A+pF>YnjPq$YdF~PQr?aVfgH?B~pIP7!0zD{YcJVPDgYNljwd_!I0M4#vJ z)b`42)DiYF!A0#(ihp4W+MCQh%$V<`#4|7Ce6DEce>cWw7{=^lT=W0CZIbg_#_ThE zg9*0tnGKJa!u#hx`P_wKY98<@;n8S8* zJigA%d4uEe)T!JLgB*`HFwPD>H{y%Tjc@Wf6OWz7@jQ-)Q<%k^Lx?vsXa9@i@kJ)( z&lY&>H)-}B&SoOMZiFkCP20FuIKUkCHpk-!Lmubfd@jXLFo(UxpT&@=bG$KT=CCg> z;Tl}Z_xl*v1Oq1T!eQU$ep}9Sjc2IqxQ>}T&|dkTn*VW|a~^Z{ zYVI*ys7`Pf^T?|9$`dZP?c*Zmw9W06&#H4A^BvA(W_#rnb%?8(cn$X$zM(F0;uU<) zGq}g_8g+ylnK*8*Jn%}}HJr})&$d_IrA}}cRs+uX!`f>YEXu4b0AH@=}RapD|a3v;6i4(8o zIIgS7+!&Pye&2Qtr!zq> z_XggjPH-1<=J;`_yC)j5ut&)2<=?-!@2LtM>7i}-%=4Yl(F?jNT1 zNA4fISsmk6Cin^W4<2!yZ5P{_g5!-V)F}@8A=jac=LOGD`?!cX?kUa_pH=5L=6c@u zc;7HiQHQviNx9FBZ>US0cmwCpeQvx)9pOeMzL*9dHv#E zHUD8C=RC&czBMjX$GDX_YzfyNkGRFQi|x$fySVYnb@9}l*5(|9~Uua z&*FKJV2mk1XT<#GPvYUam9q$ctQO+@Q{J%+I-R`HW$lrmo`xrur<6E7d6uyN}mnKhGmh zPzSh-DfoG3+@daU-2HqGe1_|TGu3rm$CSKp8275ZU-11hE4ZIe$Du?c*ZmX|A(zgSxPQ zI<8|}?pxz~YUe?oU#8$bG~TR^aVwK@{~M23Y1_qiCQdm|T%k^J*eaeE_Qo^RJ}zQv zync<(s&gFkOZK<$JmM5}h^v`|z3~loi4#*^FAI3T!fVtKZe%=uE*lSAZQI3mCgPz<=3(9gpX6HMGJlgR z@!rVs#%t6OZe(_Iyz#)tY}ar)lk>C5c$YfCUCiX)a-Mj?_fako#0by=Xd;0j4{VVxPmF0_*(cEX7UMF@!x@)3D&-_k_**%A2@Kz?G z6MU5!PUkQ1y}!t7vx~2bmog!p<2#JGKF(jb9~jdqzNjv6zfE@UO2p@iC^noBJQ%U@lw2^}$mIcu$~xoXwnl&sCKh>B+S5UG0tIU!LS# z$=-MgV~(%m6HG1Pd>SvFDTF>uP5+-!Eg%)5puzb-Y8J;>+p+M{d#M;K6_8`t#4S zT@08wLeDa17qdB){Pp z+~*(MpTFgK#2t(|zP4?Wb1}2&*Ia+x!1Z7jN_b&zQ$4al|{eYk0ca z$EoTN=c*%IqE2v)I>XKC0{5u%-MsIwdi6xXYB+@UUU#E{Mz zPg46hRUP77b%aaQ39eD+xI zQ`I5PRY$l)o!}aEhMUy|?om4j^7u^k_&8qe<5YEsbJYL9I>` z%GWok#|Bz1s4Wlm#nT(8b?2V>5y#Lv`Po!xC6l{3_JT)>!PV*CqJ zOzEf`G0JugPiM?AKF(!^AKd9g_!JZWPp10p%#~teU5bjCF9OE6@>Riig zo8M9SYjuVPeT4mE9hGOP1H79#ds|243+e(-Jgn7O{K3x3OVo8-!c^yj&!}_Ut9A}= zb-u!coP+Utb&Ri=<{XTNG}?CYN+$b9N9BF$6yIlRoP+U{BW(NlW9I3oqw-mGjz=HK zzOSQliaNw!GRN`w#y8X@e(oslpM5$juTjUik}=<7itE({o;aFwxVfY95_KIHFxBz+ zK9jHOs66Fp+dkgHL^pL*KB>;}NSDXl(NTGUI>ZN={FaW&*VH8*KE{46A8%pYCwNSJ zQk~eUUuc=EMag2RT7tc`#I73~>1?m`As#9FA&hf~PwesKP zJT4f+~4xO;A`pJ;B+mUGV-PZ?|5$6J_f+%v`})j1ydN!|k+Ix87`Z2>)n$ZAaz4pR!%Uixd-re zb%Jj)kL=f3`SFu&dw4Aq^Z3SJt1~?4)9iVC<5}te?`BFK-}r*Mz!Og~pAUFH#7oq5 ze4N?M^KN`w?VQT<#q8#JH(sxf@fBwBcAhUhAXgGeB%Y`5Fcbbu8;9GwbRUbGSQ8kCtk0P@f9Y#n)Ad%&amy` zl}!ED+*f#?I>q;y;5E(@Px-8EA8%p24|G;Osm}4p@myyf-*|yK#0Qyz$1%R9E^)*J zy&mx-wTE+=bWTU*!|D=8e9j*4;Usl{b+s{88&kD0R~t*UalFs#>sK9>v(*tUVXF6k z+`}Y)@2EU=qHP}+FwwBi%BR#h9{G8`#;sfjyg(h|JB)vKN99+}v~9dzony(EuUq>9 z*O)PFoTLu%CUuFmvvfRqY9F6x;u#&4M}5(@@$2dc5B(B<{<)6IE7ivP)G6jn^%}<= z>JqOzo9o-#QMq1i-0vK_ui^bn_V13$_tnNzTI}A(=b8G;oF^XjW!uKDt3!N;snt3w zzw#B^#_QEF9y5vib9YDO47Krob&6-Ua*gU8l?&9yr_?!Kd@hf(vZHdP+W5M<#Ongi zVGG|ou2&oPJJ0TGcrQ~9byV(98;|{}-Fx^16MVO$a>V(zjbBs;_$pI>u%q&%uh}+U zs;=Wc7w~;;?x>ukHr}9)@tCi3Zk&&ChT3?)I>q;y8#{Qt<0;>;9pK$e_DkMB@db5( zCr;-6FZg+fm#FLbI1}#S{S)6-I~TS(w=(sa9hIBa#zWie-o=NQctuC$9<}k*DR%GU z^Gxsx_Y59&k!|DG)givcc<**pj-P7VI9na#8phn)86Gr^bGVkD9e9?yj*m0ZZ}?vD zZME}F-eZ|L3we*l>(vQ9!`xCAYUZSq!<4pYzJSM)acBb=~%p)a_iPx)R ze1#c)P-o>K|7+XD8BBgvN9FzM9FMw~&lNmh#;>bGT*(xF<>x!Tt}b!>w|IWv=RFW- zt0Vj)b6F=puW{c?Y`b_RGbiQe1>UDl@xRQbA9YloajESPBgR}4<8#dNtfTV4Z`<~9 zDr1fb@j+%ApL2|_sZ0FqWqfY=J)bLZmO8>eGIRdPdE&m8+pgh7%+q|%G2X6D@J%L& z`D}?F|Bh`RZ(+(O`T2`as&hQ@3Z6%v7vlx$5Fccs1Nr%juc=G??3H|9i#Si5rH=6x zX4_Nz{KZ3N*mm(srv3}AC*G${@qH%P#Oo1HnQ7a{TbMaN<~;F9b%7^-m+Qm%8!u5u z_($du?nC3gb=x((h}q43XuMsW;G2xUi|d0QZ@2B?wM@)?X#BN0!-KBkzPgRq4xXhB za0X+Z(>g9t$M_19ba5T2R_9yzMB@(Fc;O>_8r`f;6= z7po)eXP!Q$vvQxSZP&1kSw6P2@>X?%gUoRs?W{be%eIGI%jp z!#1Y=Nvssp@Q9pU}z6yIX%m(J$j^JsONnX@mO?fCdD=IL+G=D%m!>fFZU>=XQrX^!_6 zwL0^eZ2wu6Yt;pg`w92y=jXnOdpO7Aw? z#%?C(@hjCiHr>wi{^8k`b+xgdiN89#vUZ1U<8)@*o1K+Q)hQ19DWBi&n^ieM9pEzN zumfgSZc!IFZZZ2W&90oOuH!mp@jkOE_o|&cxgVJ7en4Ms4AsU+ZA{e0Ol>UGMyJO< zrtv7Xi@w?zs*RD_xI~>`rZyI8qjQ%YA6>PvojI&;R^=*nj$`iTGtc{-mDAKAu4YdA z)vU^$>Jld|;c;rSE9a>r+{hf)I=gb@Qrj+$XUsM9ajH7Rx#|f2%uL?ZS^436Y?t_j zgrD6H%&PpMI>CQ4ryVrA^3%&~`*@q_mf4kmR+l*9XZ9Rwc#_(~`HZ)-vvRGvz&(sP zXXjq-c_zPqR^>uZ- z;iw0Ae!o4dvQ-`6GA7>AS-C}B;J99{;hnsP;7oNL*D<>{cUJCIJ1e-J%;LpdPh6;u zaVz62=&T(5plui1ne067TU@11ao9@k`x`qeC#Zc~#AK6ZRc=t{IA#_5|IDhKrVeqn z=~HG`?o^jJ@t2(Efn0x_r;czVb6hs7a%5_|hSQl%ht95Cs!nhhGx=+?E61+3?csc; z=;Qk1T6Kn_{*U`@HrF3p)d4PJ7QZ*Ea*MjaaSyRSo%b}HsjlNXras8^$GvLjS6qMQ zuzR`wxKJJAR%UU`^~ce_w(Vj&v+ZkKe_W+baoEG0|4+F7I6>{>BBuO0*B>{ia~$&< z-s4{7{>N$R5LYwa67GN8sV;HiBizp)GLn5d1J z+E}QK&g1qmjjr10tBs48vcI!(gF44CYj~_1xX*E#I>gmXZ7XC`0VS-DW1;4UV;i1#QQ zyUwoQVh^ra?4=q>jQrDi~oSFEmoHH&{r#S5Qe10gn zhjD^Bz&c~T7h|kWFjE^xJ;`gNhu0~#ssmicob~}ed*Bvzf#aTH@AEpvnd&;OW5V0G zCvmUZ`2*LA2_|z-;zD(dTTKtmsvP~aZ5P{3pEkR4l{&>?&+wk}1m7c0Q2V%uIs5y( zPH}@e$1(l9-v7hv6sM^}T+M9yCHD{RRF^pMS?)ugBjY@Egd3Th=g2tnkG5+#ovHWm za|)NL6WqlF)3^t4?0VZCPGZb+5#TarQ^L<6+@daV;s&0JZ}DD@^VAV;WQOyeX&m{S z?HW!u&3mSCsXD=34FBSC<=EV|hx3`@Vm?3PT6Kn_Hgav(cUHEl16;;=w~_XOhvwU3LK@Eu-XxIvxcm=}4^TE*)Nr>R3+%{;xG*B9`}4C8$8NIi;e69)&8}Rl&T!OAJdfMBp4h4ma2Yds8P^lHs0(xk?7d-h)yDB^ z9~Uvf3cg3&pf1pPS$`H?wb54_L$xtd$C#>(x!PE&jkQ!PPN z25RHanflCGm48>4IHJ&>#p%o@^LZ7QsuSGBoW|#2zGHL<9!(Ss-3@cZ!^np=HAAI>KL~& z@kTx`;po?FyV%Y|3;4W*tJEnDd!6UydESR{g4)MLOzp?K590=Pj${78J<8`R<1}@M zs~L~aSH_*{5+`osbKN4|hjE@d!i~&j7w{g4Be&ajaXeGKui^}K9oI3-|HXB{y=rHW z>%bhhg6n__)iG{mw()l{&d_PRVo2nB$GU+8C;hk=mH3jhWh5sEy7p`@CjY8~iN532Gk~G3hJ3PvQo3j${7KbMaGt z7T`2>h^rZwe`C|QQ(fZ3x7knNIl_7B2sbh}uI2M2j(o><4W~16y7+8{OVtVPViphZ zvlz$z$F_%4nd&~l)y(qSxleGXy2OdQxmP#wTEKbg2sbiM-^yzNN4{&jhSM4UMeY+^ zs!nhh;aJssV>lpWod?vwR&bd|Ba5|HgJYTp>o#L=z?8ox^5S*wEa2XTu_jKbH zb%EnPaIWL=_jKb-bsg6+<#k*i+^cr>IoCOl3C`jA;6inbTbbf5?tdKpLEA32n;yse z53W+DIBef@o#Ef-{Rbzi16;;z`vRXaaI3n+iTj<)KX>D^CC*pJxYhJYyzk+d{cU?V zpYiANa|+k0GaNPiTqit}_Ze(e2e^zWckp#_i@LyZ2e3bZzc1iSbsc}tEdF(8FUdwAAcdARAIFj#&-z6I7sUzITM7_NBapZ?= z*Kj%$@Ov2JQgwnEW3H#MP#c|^t`8oicF|WG7n%Pzzr!(ZQ0F*i6p#BZuQi;e4skV; zuI78eo$3-N{twq{58n&UQ%AUwDfr#2apb|aYdD?B_}#2=sXD=3OwR9SjblG-+r#x4tOo&LUn>`nChBip)PUaVLbkOTnC)5PI1`byzU<2y$&a;16;<0AL8%exK&-^ z#74f~N&IZW`RWvh9l>?JmiGjlp!RVQQ~x~ABW_UVIOa(1175SnY3dMHo8~oZ+^Mb| z#q+`>-P~iiRGr{1COns)FF1CzZ4c)&`EEYL<63owqmE{O>g>u^b%4v5;rwhhZdE%j zuV2PoPh&f?`)Yn(;A(Yk4Cls7=J!0trRoefGv?10IPRm|5B$!@I8zHwE9H}2tH#VzUr$9;nR8N9FJOm!XCF(JSAFz!`5$8oPR0l)V!E>y?3 zl{xz^elFvf<8Ax6h&k??+%vdQUE;(h_I!Rb&Qr&@k}=*&&m@21 zn&Uckj$=M~t`jfh{>SO+I<8|p{?26_=Gm^{bjIcHT*hVU6o-xD_4s36cQ`>E;MI)z zULxGc>^`6OIvn{a+b*`7ev8kyxJsSku#?YqPUCZwae~^%Ma=FIeEz`=>Kw;>n*En& zS58xhxSF}_Z~U$UcdDIJxF47~cXL1BLUn?>n8o|>9*bj7we8`2(-Zk!2d-6TIO;Pz z&L8+)2ezt1oXb?-J1$WtxQn@r-w_$do@U#}sf;;3#JTDS|I8f5?^=x?KHavDQyFu7 z9e>a4o-(WQgUz;GY-haNxwg1Uo#L=FxPLC>+TsMYkBgX)f7WB%pw4m3XStX7XFbMg z>JV2mx%s;T?o^jJaXfqTcL$uOj&LJ$8GrXTj+|h-h9@!Rd+~5SGnwB57}u&Z+{~C` z3LN)2{_Jo0{Tt3y*Kr*)`5Hd!;$F4m^IS9K%lw@S7ph}?lrfK);i!qc*6!f_2V2zv zE@Q%%cu&SH>H-h=y#2E^oX%vo@w&jJ>I8Q&+xYv4aqOA4J)F;M;_oBIwdxE3O^d;udv*tv$^JjA$b2i`05bysuU0uhRF~=CUGMoO7bHFj@*!FNf6YyEW zxK^Fvs21)?K1&!|)d4PJqIdb;af`aZabITt8Q%YKrn-*nOy9zL7w%O%U*R5LeE#{P zaiKcKzcV*J-dXvHNwz)wAv1@6mSp^cI>#}se4qd2d&g<&Ixb+U?;W=?^}YN|!O`d1 z_Him>jtOx!6aI$Jinvql1e_=1Kg@aJLUn?>O!Jx3IQBf-J}zQBK64s3s0$qTRo*}O zJ(zK(x{m9Z(Am*Y7Yaov9318YU9J|3`c!~ud$TZ5w@yBoXeQ6 z8{tMK`Con>;mFChU2JE9dw9>pRq7OnUC4FjpB)${sC`_-9LDdujT_WCj%njsCA??i zGhp3OM&BHJ~b&TQg$YsRJO1a~nv^4ZKd zcB*X;=QDGI_Fs<9X-z62?|_fXkRUXY;zlE$RZteUs0A{5{<`Q(eb(ruloi zaj%*i-8qjb=5t@+LUoK=nULRm7)MXH?P5Dq?&9+;u2QEs?0?yRlHW_<1htQgnEDU7 z{Jle@i~Xm#{y0w^;YMcn4P1X5d5P^BPB;B! zu0JkSC%B8b@f}_-IQCN89?m!YX+A&TT6J&**O~FI=jRJ$r{? z{x+{)+^cqGaGjaqC-d)g;X-wcTN#)0H;$fZ+r@Uq=lqSU)F}@8F4v96H%?IdxX3h* zZ``2HaZH_`oBSTeI87bmY9>C5>x?_qB~EPT9QeJHah^KDji&j%lX2u#wre<@nKO^S z*Wglhg1eZ>{GP`+w!^lE^OS+&>`&zHT-d4(aG7a7OBlDP3mi9#*B759 zj5E~W;+=kd=2MJyV$|Z>6p!b?}4w+nB(i$^7Du> z9pg%MitE({?om5)dB0`M@h*;6`#4n{;#_rvOVn}1<1^;Zrnp{R;2yOzpT}pa$NvG3 z&zSacsyf8E>Ij#pQ_R)IQf;hVXCKGtsg0A=Ax3IrqE0ba8%wou#1HkDc#_(~N$LP+ zsOz{uUE+xA?Vk;P#4(Kd9^;$2K8)$;$9!Lm=>*rPGu*5$aF5!Fxo(U(KEN637*lnI zo7Dw6i|p}6S8epw0oK*V1?m`6b&h+~wV#~poX(hY2yw1D!$R%d#`R&$G5PK1Iy)HC zC62hmb`4Kbr;E8y7;}tsC*LDu+Q(3BjMO=nYGbWOkBOc-z!~Z~E>OpqsxvIqC62hu zK2D4))j5{x=x**A#++MKHsp?cpSKfHTwyX6onx z?i0p5W{D$u^*HFM1FWl!vD&y&ono#wmTF^dg&q?uO`HHl}K0t~TyamsopH zkH3<~XR2%X5YIbPeP3Anm5xDA?PI7mMrvcCHfCyLp*HSO2M=@pjQLt_AMZJgX&lyzUs&E{<3GI8`0uTy=zr+L)=0 zh1%%kdVF-%9tLXT40RnBsGa9IAEr7V9Iy57;}HY)&z_9utBu#HZ^YGV$5SdpCYnZM;Tp{JGk=UTu6w{edm~{gp9~WAvHYbpBhP zc%}Bn#cJbAYGbK39`slHIL6O2llgC28J}l9c=5HBZ)xuo+|NvP58!EP<5acr1*Sgb zs>(OCH;&wD|E%$NwQ-`_I8AMwqc+~FHm*?{Utr8R8+T}L-2ZR(YaNZJtBrx$_-(bZ zk14Obw(@!HjXTuFk+16f@e^vJuQpCm8{5^!C2HftYU6Wi<2JQ%*x&8fGJaHTJcBXc zuaCWq`ER17*!Y@l7rWIl4ypMcL_6PM%<**`P#5^6f7pG9PpES|d7It)c&|FegSYEz z;dSa5-%>k+d@ZK>TKJN>z?L`cKEOV8hD~qUy@x&O1RHkPeGRWxN4Q;G;)OfyF(E#o z&awHQcJE`aI>pA)?p^Fw$2g>Rc5(hpb^bV@F0kcab{}A$I>V;7?B2s3b%G85w)+}( zsUsXzm)Q2UJto9{b&k#N*u9Uv>J%IQWA`q0t79BeJG(i5raFHdP#4(puH6UNr_Qix z$nHJtQ772&p5525OC8~$y2Q5k?J*(tt8;ALWA{Gxs#9#-Yxgd8t79BeJOAbUndd(;Uwe8BE&*rkqeP+el%KK7Up`_(x%f6(rI>{X}OxUb#2 z*sYFnNbT$wINxEa^Tz>ofi3&neSm%H44a1Ay@x&O1RD;p`x6dMn=dl$RaF%GGn4|D!Zb^bV@F0kbgyAQBWonh0V zcJE=2I>CmI*nJJV)DaG+Y2?cT>;b&8FRcJE@hI>sTja|GwlROgQa z>H=GiwEF=2)EPD%W%nNTs1s}$ZTB_oQb#zbF0t)sdrXM^>KvP0yZ5nIonqq{yLYi$ z9pjMN`6%blROgQa>H=GivHJk~)EPE?%rilwR1e@&s67+1L^`>n(RKnK6QpoC)mA*J?aD-PPF?PcBvyA zRF~Lxl07EGeszw`W9{C@UUiC%pR{`yyVWrcsU45=XR7nZ0d;{b{3TKs4lVX)ApDU`_(x%pJMku_Nr5CJk{=9>{iD(q;@{T`7_n|?`O{d$vhdt^98=CFDhF$6i2h}CEonem&v0t5I^Jnee$6j@cjpOa!#cp+s zLuzLN=g(BZy z$6j@cjbE^P7rWIl4ym29IDe)(e;iO3*z!fY53o<2VbhoF-oqYsf(>WeeGR+R5e}+L zY&*vu6JozQ$L1Eh_pw)79pRw5#J0d56JozQ$L90w-p5{bij7~jdl$RaF%GGn^ErQ}I)8j#UErBt zv-`+Jes=CDUzhRFF@d?yeGR+R5e}+L zY`erB6JozQ$L34z-p5{bijCj4dl$RaF%GGn%Q%0gI)5Bc7ua&S-3QpG&amk_cJE=2 zI>Cl3?7oIw>Ih#|m)LftJto8_)H$9!!|r{&SDoU)Gwt5RZgq@rsh#fz&c#f1{`kDQ zz%%Q1A7Gz4!=`q-_pnEuV8c~*U&AhSgoEl5+dAwqA@-|tZ0@vsAMaJC*f`7XUF=rJ zIHY!FbN!j>{Bb~CV9WRHKEOV8hD~$q-oqYsf(=*OeGR+R5e}+LZ0oYegxIgnvH2Ri z_pw)ofoIOM`vCjY88&_2?mg^LC)g0#eGR+R5e}+L zY@2V739(Cr(4>^CPI)5Bc7ua&W-3QpG&amkQyZ5k1 zonXU{?7oIw>IetbCAQsYj|s6~on!M&cJE`aI>p9ryLYi$9pjMNxta54s`JMIb%8Cn z*nNO~>I|C}*u956>I54W+II|E1vwIJF)Co4+Zud3pQb#zbF0t(ndrXM^>KvPYYWF_& zs#9!SZ1*m9t79BeJ9l#aOm+S^pf0eb$L<5{Q)k$8m)(2VqfW5lZo98xmpZ~hb%||D z>@gwst8;8#YWF_&s#9#d$L?M1R>wG`b`s8?sm>n<)CIOIv-<%1)EPGY%mfL-R zed-LG9rilwX=%z zXR7nZ0d;{bzqI=R`_vgWrFQROk2=AI)plRQE_H;1>Jr=j&mI$EzdFa}hwR?RUUiC% zzp{H5yVWrcshwYQ{!DfLIG`@DI|FyX!joWs1s~hZ}&CqQb#zbF0pNcJto9{b&k!?*}adw>J%Gu zyLYi$9pjMN*~s}b)%oLqy1I|Enw|ftJ)Co5H+3suDrH*h=U1Hk{_Lva+ z)j2l5X!kz$s#9$Ii`~1}t&VX>?QG)wnd)0lW9GN1b59%XVMG zE_H;1>Jr;tvB!kiug?fjMVXR7nZ0d;{bh200(r_Qix ztKECpqfW5lZ+2h9E_H;1>Jr;twa0|mug{Dmhw9W24>`^D!u-)!!*rkqeP+el%pgktUeszw`Z`i$$z3LPj-?V!d zyVWrcshu61KU1AQKCdpYWvAT-*r(30>7RD*VUIe&hSKh9*rkqeP+el%E_+Of{puW> z|7G_+_Nr5Ce9P`#>{iD(q;~$z`7_n|?`$Gl_r9`>jcZ1|7e*RV?+ z;h?(2w%zua5c}0RHot54KK80pY#g$C7rWIlzNL2Fofh`SoA7Gz4!=?l6-oqYsf(-}ReGNO*5e}+LY#U*Z39(@FyZ5k1onXVkc3;CT zb%cZJ65Bp(j|s6~on!MM`dZkh&hYp{^|kO$b%F1*LL>Kso$ z-0ppRK%L^@jdt(iP3jomRXazV=UmQI*9u=!7kJK*b|2uQ>I{!R%I-b9Q=Q-eqwT(i zSF0o3t}gMyqwO&vKBLa@bl2{Ed_bMz;bZLH#hcVIzN>aV%K0I{!R!R|f0Q=Q-eC)#}tuU1F6U0vdZC)r~{d`6w)>0|BQ z#|P9Y9{x$Yckw25j6-V2CKTw)+}(sUsXz zm)Q1cdrXM^>KvO-v3nnT)hRZfYWFU7t79BeJD=hFnd))9v2F z9(95Z&30eIE_H;1>Jr<|u*Zbhug>x0&)U6@z3LPj$J@P&-Rc;J)XoIXpQ+9t2h;_& ze9rCz>{DlWjBocI-l|S;pNV!~!!C7%gX$8`|GYgW#C~;-&1c%ZkG<*?8^2)pE_SP9 zd`s<|#rZSU`Qw1Pz?LuCeSm%H44b}W_a64B6Kpu!?rYekj&M+2V%s_Pm=OEbIX1W0 zy^p=>6dS*6_bzs;V;oXDU*Y_j>ils)U0};3yAQBWoncd}-Fw)hPO#xzyRTuFI>JG9 ziEV*BCd4PyIX0hX_dfQjQ*8XI-MiSWj`3Z!b3X4sOm+VFlDfcizGn9UKB~^}_zUdb z!#mXp9`JR$ui@3|2)C)=Xm;LyZ7+{b&7{yX!kDOq>k}jwbRD=Gu8Ry zOX>p8nPT?=KB~^}_>1h`!#mXp9x&DJYk0Lf!tLr3FPvtN3Go?qj;DXq?tOefo#Nr4 z-Me^`I>vX^&UDV7sm>o?QWtp6|Jr?kkE$~~{$jiL@J@At2Yk!!Yk0Lf!tLr3FTBJa z6JozQ$L34z-p5{bijCj4dl$RaF%GGn%eeoU>ils)U0}=Qb{}A$I>V;#*u956>I56E zu=^TzsUsXzm)LftJto9{b&kz5?B2&-b&3biw0jq?Q^z=@cD~E`Gu8RyfV#kzy4?rZ zr_Qjc-R?c?Q771NmEG5{OC8~$y2Q2)drXM^>KvOp?cT>;b&8F%?B2z0b&Nx5XEx{0 zROgQa>H=H7XZHd2sWWVvWA`5Rs1t0s+U{%ErH*h=U1D38Jto9{b&k!~*u9Uv>J%HV zwR;!4)iDmKow=MpQ=LB!s0(bFXZHd2sWWW)zTJD+qfW3Pvill#sUsXzm)JJn9us1} zI>+W8*u9Uv>J%HVvwIi2)iDmKogZ@kOm+S^pf0fGdbPn}`Y4R-Hgk2=AIAK85k zyVMa5s!MFU(H;|GzdFa}o9y1lUUiC%-FEL{w>rilwR1D)&s67+1L^`>Zn66S`_vgW zEwFnJd(;UwEVTO?cBvyARF`=EkL@ub_N#Mjj_uyZUUiC%i|pRTZgq@9YUd}MKU1AQ z4yX$}^H#eLuuq*~(`|O|VUIe&18%qb8eXlAaJ#z13-7SUg!qg)$J2jm_dY(LPVw-? zcJJa%>KNZuJ9qN_&s67+FR2SWr^oICd{mv`@psw1hj*$IJm7A-ui@3|2)Cjc zY`E9%YuKfZa8O-h+t2MWA@-|tY`)L#ee6}I*m%F)yV$Lc@h!FU3(lXZ&L0QV1-2}= z`vCjY88$s&_a64B6Kv?U`x)=Xm;qcJJc@>J$%OY4k}j zwX=%*hpEmVUs4x%&M)mgz(>^?Hl=p&VUIe&hShdo!!C7%gX$97{?8s0V!t}a=7;Rw z$6j@cjlZ&c7rWIl4ym1A^ZI3~^Tz>ofh`Z)eSm%H44Zyq_a64B6Kr_I?rYekj&M+2 z;`xu-V?yj#=h)n5_dfQjQ*3<9?p^Fw$2g>R9_Rd->ils)U0}-^yAQBWong~jyZ5k1 zonXUn?Y@Rx>IetbCAMYum=OEbIX17edmnq%DK`Gj?p?f29pjMNd4lt2s`JMIb%8Cv zxBCG5)EPECY4;xXs1s~>%I<5}rH*h=U1HlG>@gwst8;9A+U|YqRj1hajNQA~t&VX> z?eug0Om+S^pf0fGS-TIgPn}`YAMM`59(95Z>+QaVUFrx2)g`uVu*Zbhug?QG=ynd{3TKs4lVX z1$#`0{puW>U$lE4d(|m6{>AQH>{iD(q;@uO{!DfLIG`@DL3N33uh?Tk>{sX5yxH!3>{X}OxW(>W>{iD(q;~$w`7_n| z>{DmhwAJoC>`^D!@He}!VV63>L3N33ui9fm>{sX5{CB(eu~(g9<7;;BVz)ZRA+_^5 z=g(BjcY}ju1HSAJHIH)eMZO|SQV!t}a<~Qu#$6j@c zjc?k$i{0uNht$pv&Y!8y9|zP0w(PX~0Q=M#HvQA?J?v2@*ihPi4ZGA44ysFR+hval zv0t5I^S|ug$6j@cjc?h#i{0uNht$r$Ie(@)e;iO3*z&gB2iT|1u<0GU_pnEuV8egx zzJ^`u2nW?Aw(YjZgxIgnvH4xQ_pw)?R?;? z{IfQDOdSW*1-9&C_W|~)Gi>^x-Fw)hPOxELyRTuFI>JG9iEaDYV?yj#=h(cz-TT<9 zPO)*g-MiSWj&Vrs9KiWA)%C{#b%8Anb{}A$I>V*|?cT#4b%G5C*?kSW)DaGV;_v3n1D)Co2m zZ1*+nQb#zbF7f;i+haoPSLfJ#h~4|xt4^`;P`h`rTOH$&+W83Q&s67+1L^`>4zv3J z`_vgW9d7p?_NWtVXtetpcBvyARF~Lxggqw2eszw`N7}uQz3LPjkFt9gyVWrcsh!cB zKU1AQ4yX%kIoj?6>{Dmhjc{C_Om zb@b-=S-%7nB^n34@>7L4=?wxJ-uuzw{s8`HFdz0g+ zo-n$L?J>6M4tIC8-N(JU!lT-`8~5{V_v1l5V{&)fQ|#3P2KTT%#9G~;dr#XvEYu|~ z>J_tl*_#|k^@P#AZI7{4cep!kyN`Qyg-5j$aX;U7KOWRGCik&D#a=yNa9`U)tkn&= z_p{x@LS5pbUNO7By~%M@PZ&MG_841rhr8HzANT4Ck80ik9&26N44`< z?&sU?$AfytB(*)oUOiy&INL+4)eX9jx81`+UE-o%F}uOu!nJlXaXd-Z_9Q)~~hRyXLLwcW!)UE-o%G0W^tj-z_Q=&82H z*s43+J_v#9dYUkR}UCG)AkT+b%SnhyN89k#6`Vg_AGmo z#uI(xI>H&l2*&br8ZqR+c?H(5D z5*PJ~*$eDVj-z_Q=qB4^Y}Fm^ZnoXWy}H7q+Ib=O^KJLzK|N#gBHL5!)dL1EwmrmJ z-Jtst+dVAQB`)d}vzOYN97pwp(aUU)u~m1td%5jC?$s3@)y^xppKrS#59%3{SK6Lp zuO2XXmF*$c>IU6c+wNhZE^$$>n7zi{H&k-+a6-AZqR*$?H(5D5*PJ~*&FRmj-z_Q=uNiA*s43+z1emj_v#9d zYNzCWzU_WIsAo*xVtb0cdcfeVwue}&8+326-NQm%;-X$Ldz-z`vK-JrX--NQm%;-X$Ld$+yGaa2zj zy~p+#TXl!K_uB5`UR~i)?Yxis`L_G#zwIgZ>H&kw_7H1zgYE}x_pnfxxTsgm zK4@=p9Muy>x7r?KtL||3wYK}XS66scJ735BeB1qaP|uirz3nOX>H&jqusy_D-QacK zXuF56RF}A@SG?hZy~*)5^@LGvdyK8R!`(O8?&Drv;Zf~;Gxzgt_v1l5WAZJwr`W3p z48GO&5NmaV?zh?QVWBQ@QLmUa_9n+sJz@0iw#V42JKTMT?LO|+6&}^jhq#|_yB`ng z8I$j{J;h!B8?k?Ky<1Ok6 z?@&AKIU7*wtHBpOI*||W~05y@iz5@(XZJaW2^3P_v^O%xK~$rR6D=H z{e0W~cu>!n{HEKV`cj(!$i zQV)3QcH2X|pl>t~k951UUJpCuO$9PfQ z;mJR>-N*Cl3a_c1KjVJB?S8zXp7G3Vdy1FT1D^VG+e5sdZt%ok*zVyub%|HiE1vy` zy~**idcxCxX?u(p)g7MvE8BfMudeW#+WBkl=iBbbE9x1~{Eh7?UQ!Qu>Thii@q)TR z_p0q47U~ig^@`bIZ*m;f6Gne$dyK8R!`hJdswJTT+}OO|7UM<9Muy>&JEiQ zF}CUsPkxl`KAu-scunnm^bO8UeB1qaMLpx0>ugW)l6t^XA7gun7t{@&_*mOLJf|-4 zs(Qts|O4|-S!Y`b%XBpwtHBpOI*||W}jhiavaqYMxSYWjIFxE-DlbE<6d3iQSE#- z_w#MPe>|vXOg_i<6npi6!AaXgtkn&=JKH@h)Fm$J6|>K^H#v^#38T-mJ;qku;qLQo z_i?YT@ThjafcyEj`|+TjG5JEJ_suwl_JB>ItJe z*&bu7?r`@dw)=QqUEwvg^QHXx=iBbbE9x1~e3|VjUQ!Qu>dS2p@q)U+6JKGwhlRSt zMZIEn%HHHSswa#B+hc6i9qzu;b|3fZ3Xf{%tN8u%ZTI8t>KT)-wmrpOJz(%Pwue}& z8+7k%yN89k#6`Vg7TTK}NA-l!U2Ko>L+TE9ceUNey}H7q+PNF|^KJLzK|Nz~ciU6! z)dL3iusy_D-Jp9<+dVAQB`)d}vwPW_97pwp(YI#o) z=YibMx808i^^D1bY)`RQ4;Vby_7H1zgYH9Y_pnfxxTsgm9%^rL9Muy>53@bSR^8$5 z;kNs@S66scJCERgzU_WIsAo*h*q&mq9xzC353yD^=swbR4-0jPi+aWEQT8UsQ9WVw zXxn3K)gA60W4n)gb%jT@^H}cZ+wRAMdd4KRJ;h!V@&zL;f_7r>dfWcF253yD^=$^IR z!$Mu+qFyn}>`jiNdcx?bw#V42JKR0Zb|3fZ3Xf{%>DPq9}I7(CPV z5NmaVZf?7Wg}TH=y<+w(dz0g+o-lg0?J>6M4tF=&?&Drv;Zf~8hx_@q`|+TjF?p`- zDfa3CgXh^EVy$k_eZK7;7U~ig^@`aG>`jiNdcx=?+hc6i9qw+n-N(JU!lT-GA@}ob z_v1l5WAY-~Q|#3P1~0Zf#9G~;`x4tdEYu|~>J_t>+M66l^@P#OY>%;3ces1G?LO|+ z6&}^jE4ZI;yB`ng8IxDqo?@>aFnE>iA=c^!-B;W0;Vac8enh=u_8NPW<8A5*@Ag{T zWBic1!`Jk_AirE|O zO^%~_!st!5$JnYn+`ZX$ANT4Ck7}pne!lH~Jg8?(-eP--y?Vglt+t0)s~dE0vE9Q$ zUE-o%F?*Z6$#GOq7`@&07+ZCRyLZ^`<1Ok6k80!ne7)@{_UZwHZ?HYYTHT=gjkbGOs7qYbD`pq$O^%~_!l<@A##Y_o?wf4)aj&lM zsCK@Y`}wx}@t~eD`4-z#?9~GX-)eh^wYov~+idr+P?xxeGVy_-B_%7Q+tkn&=-)*~xg}TH=y<+w~_9n+s zJz?~{w#V42JKSBg-N(JU!lT-0xu0*l9}nsolkc-V#a=yN@cp)jSgRX!f53JR3w4Q$ zdd2Jq?M;rOdcx?3Y>%;3cev|p_i?YT@ThivnEUy*`|+TjG5HbOQ|#3P1|POP#9G~; z`=hpdSg1=})GKB`W^ZyF)e}ZPZhMTay2I;#!ge3`>I#o)=O?+JZ@V84>KT(uwx`&u z2Ml`KL#)*ex<6&RhlRStMZIG7)AlCEQ9WVwGq%Ursyp2MtnEJT)fFDq&d+f_-*!J9 z)H5c7?J4%^0fV2nJ;Ykwp!*B9dswJTT+}OOx7nKH&jawLQdI-JpBfb`J}6iHmy0Y_vByj_L`cU$Z^NR^8$5 z*KPN4udeW@c7B8V`L_GIU6Eu-(H#UE-o% zG5bS%ljEqKFuG!UjIFxE-NAMr_v#9dYUhu*pKrS#59%3{Kej!^UOiy&C$@)Js~dFx z)OHUGb%~35#q7`QO^%~_!f3WV##Y_o?$2%aaj&lMsCNE>`}wx}@t~eD`H1Z)_UZwH zzqCEXTHT=gSGIdts7qYbD`tOfZ*m;f6GneydyK8R!`$Fvc$<2{ z=)Y}`u~m1t`ybnV+^Z`*s-6Gke!lH~Jg8?({?GOld-Z^U^Mvhvh_$*w_oHn0uuzw{ zs8`HB+TP?iswa%DvpvRE-Qn(IZ1-`muJEXKKK2RD&3xPacu>!ne4Onm_UZwHkGDO< zTHT=g3ATG!s7qYbD`qF`O^%~_!pOBf##Y_o?h|eI@fLN3cc`6DdV+H!-*!LVuAVXZ zWZP5h)dL2fVta_Sx z|9sp1cu>!ne1`2Q_UZwH&$K6M4tKuoKJL{O9@WklaX;U7Ki;mMG5KQKQ~a=cz~D}{hgho{bic%Q4-0jPi+aWE zOYKdLqk6*V%WRLaRd;y(m)q{+E$RyIP&;42pMSpXemtmWOitOJVy_-B2y73rRyXK= zrR^RT>Jk_AirH7$n;b{=gwa>q9%HNSaQ8K~`?yzEcvL%g=J(IH-H!+Lj7eyFioJTk z;4Zd@SgRX!?`pe;g}TH=y<&DZdz0g+o-n$*?J>6M4tMvk-N(JU!lT-`C-?Jh_v1l5 zV{$LsQ|#3P2KTl-#9G~;d)jsn3w4Q$dc`cVH#v^#38VYi9%HNSaCcwZecY=nJgS}h zaX;U7KOWRGCik~}z~BMaA=c^!-Pm>y3w4Q$dd2L4_9n+sJz?}9+hc6i9qt}%yN`Qy zg-5mX5N_t%ZpMRp#^j;4r`W3p3?62Ch_$*w_u;mCSg1=})GKC>us1o5>ItJWw#V42 zJKQC<`?yzEcvL%&ioJTk;L)~+SgRX!A7i_Rg}TH=y<+xQdz0g+ zo-j&nkFiyExO<%KKJL{O9@Wm{xu0*l9}nsolN)SLu~!cmJi+!5YjuO}6K(gfP?xx< zSInMdZ*m;f6Gl(AJ;qku;qEE6`?yzEcvL%Qxu0*l9}nsolg#!Md-Z_9Q*95iRyXKA z&2|q9b%~35#q8m_5hd!n zyukJpd-Z_9O}2+vs~dE0w%x-*UE)X7E8g%zdz0gB>Iv`mBHLqZ)g7LEvF$#dS66sV z?Y!g(&P{yV{dh$^kny~*|v zFQ^+l@n+jSJf|-4s(QtI#o) zXU{)>`L_G`jiN zdcx@IZI7{4cewio+kM=tD?F;5Z{&Wy?S4F{XG|{Go?@>aFsN-0u~s+eev|DU7U~ig z^@`ay+nXFOt0z4DEw;yaQQhImZ?)aW^Xdw(shw}*&p+RGKVDJKc&4#E#Y^e|Pkp=X zAzn~7c;Y*3_wby$#H;ER&wj|>!`|dLswa$o)Akr!b%(p(vfanMy27K{nYf>CyB`ng z8I#|(J;h!I#o) z=MT7_Z@V84>KT(iv^~XMJz#Lf_7H1zgYLn04-0jPi+aWEkL*p3qk6*Vk8O{!Rd=}i z6We{J%zU_WIsAo+6%=Q#}^?<=_dx*8VLHEyX_pnfxxTsgm{=(kmII1U% zK4N=}t-8bAU)t{DUR~i)?fez@^KJLzK|N#g*S4qFs|O7J#`X|vb%XBT+U{YYE^$$> zm|e9uIgaWHqs8_ZTXl!Kzq8%PThtZap?3bB|ICwbyB`ng8IymoJ;h!ItKNwmrsH-Qo5BV!MyGs4G0Gojdsb^KJLzK|N#guePVy zs|O7J&Gry$b%XA|+wNhZE^$$>nEi*n$#GOqc=|tWkMW|q!;{x+_wl^C!fR^h$iM#K z+wR9J>KV`cm+dKDQV)3Qzikikg1W&I|6{v{=hP)$Rj+vVf9*|%V{y*Deyr}N* zr1Qk>HXqNcE4-$5KI)0iO?=z^ctt(qnUA(T#Y^e|PhDqwh_$*w_hW4Luuzw{s8`HB z*52eeswa#-&h{8vb%(o;x829Ry27K{`GhArH}h@x<3T-Ra>Di$Kdc@waBUBJk_AirFXGn;b{=gwZG49%HNSaQ7*;`*@4G!lT;xRPN{7?#F|A#>BHd#a=yN z@M*S(SgRX6@#(gEcurm7RrQKzueUcjURFn3kLT4DUQ;`t#h)L( z?S8zXp7G3Q+n(Yj^?;{7$Mz6wb%X9n+dVAQB`)d}vz@)kaa2zjeXi{>w(1UdpJ%&| zdv%3Jwe$J>{`t21@t~eD`2yQh?9~GXUub)XwYovqx81`+UE-o%G5aEWljEqKF#2NK zV{FwO?(Sr}k9&26N44`M+|Re&j|cUP$(P!mVy_-B_%ho=tkn&=Uv9gHg}TH=y<+wi z_9n+sJz;dp_841rhr7UbANT4Ck80;Dxu0*l9}nsoldrNp#a=yN@YS}5SgRX!zs7bC z3w4Q$dd2L{_9n+sJz*5u9%HNSaCaBmecY=nJgS|$azEd8KOWRGCU>(v#a=yNaCh57 ztkn&=_psf=LS5pbUNO6;y~%M@PZ-_H_841rhr4^*?&Drv;Zg0J=6=5IemtmWOd{J; z?9~GX_pv?1THT;~U)wz_)Fm$J6|?)!nJka(Od-Z_9gKQ76RyXKA*me&Kb%~35#q1&WCdW}dVf0YjWBic1!|NYryN`Qy zg?Ff(hdoTny~*)5^@Pz&ZI7{4ces0*?LO|+ z6&}^j%ekL#yB`ng8IxDoo?@>aFnFcyA>OKP(0!Hd9v12n7xjwStL;sWqk6*VHMYmt zsyp1h)^;EF>I#o)=XKoAx808i^^D0m+f(e-0|tfdA=c^!-PhahVWBQ@QLmW2!QSLJ zswa%zXnTyUy2IU@Z1-`muJ8`E^Jf13&$r!=x2tDNO50QXuzJ8dy~XwrZ&f#V-CJ$< zuuzw{s8`Hxu{Sx6>ItK_*&bu7?r`^Z+kM=tD?F;5ckuh?+wRAMddB3Pwx`&u2Mpe2 zdx*8VLHE4v9v12n7xjwS-rnRmswa%zZF`KZy2IUjZ1-`muJEXK-pl=b+x>V@&zQW= z_7r>dfWiB153yD^=vKCSSg1=})GKBmus1o5>ItI{+8$%8?r?Xj?LO|+6&}^j*K$AK zc0V4}GbUeWdy2h!z~Jj`5AjxYgV%k7?H(5D5*PJ~**Dso97pwp(FNOMY}Fm^YTJF> zt1CRJop0iPzU_WIsAo*R+4dBB^?<>**dAi7ZqWT!+dVAQB`)d}vv0FEIo_t8Flua% zu~m1t`*z!X+^Z`*s-5rPe!lH~Jg8?(K4g1}y?VeqeW&dq*6Ie`@3P&)LS5pbUNQS_ zdz0g+o-q0z+hc6i9qzu@b|3fZ3Xf{%BKPxc_v7vA8I#ub6npi6!S~r7Vy$k_{eIg$ zEYu|~>J_seus1o5>ItJCv^~aF-Qn(sZ1-`muJEXKI_~G&?#F|A#^i@>Pq9}I82pIs zA=c^!-4EODVWBQ@QLmW&sJ+Q?R8JWFnC&sP>JE25Zo7|rb%jT@^Ap_9x808i^^D0+ z+MZ&s9x%9Mdx*8VLASTv!$Mu+qFyokDSMOSsGczTY1?CL)gA7B#&#d~>I#o)=V!T} zZ@V84>KT)tvpvOLJzy}{9%8L-(EWMaJuK8EF6tGtU$8ehj_L`c+iZ`qRd=}iMcaMc zt1CRJonPX9zU_WIsAo)m+4dBB^?<>z*dAi7Zt%KawcW!)UE-o%F}rMUavaqYMx*U9 zw(1Udzh=9Sdv%3Jwe#!T&$r!=2lb4}Z`htxs7qYbD`u0u z$#GOq82z^GF}CUscfVu1k9&26N40Z1_w#M{<3T-R^1HUD*sBK&e$Vz0YjuO}@7wNS zp)PSzubBOTy~%M@PZ<57?J>6M4tG~<_i?YT@TlhBFgiE$ZTI6rJ!A4mwx`&u2Mqq$ z_7H1zgYKW$?qQ)WaZ#_B{i(glaa2zj{h94Cw(1Udv+X|a)fFDq&YyEX-*!J9)H5c3 zVS9?bdcfc#wue}&8+8BDb`J}6iHmy0?62%ij-z_Q=&x;$u~m1t`y1PR+^Z`*s-3^( ze!lH~Jg8?(uG*eruO2X1Y!9(kH|YMI?H(5D5*PJ~+27ln97pwp(LdN8W2^3P_m8&w zxK~$rR6GB~{e0W~cu>!nthT4vs|O7J+4c}?b%XA|*zRGWE^$$>nB8G-avaqYM*nJi zjIFxE-M`uH<6d3iQSJOY_w#M{<3T-R@*lRR*sBK&{?qmlYjuO}HQPNb)Fm$J6|k9&26N44`m+|Re&j|cUP$^Y7(Vy_-B_&?i2tkn&=&Xcx( z91jb1iHmy0?4#^Wj-z_Q=%a0qu~m1tyUunW_v#9dYUg8~a zF!(szL#)*ex*u=5hlRStMZIG73HBz(Q9WUF!uA+jb%#6Gb|3fZ3Xf{%6S<#nyB`ng z8Iw=4J;h!dfWc?j9%8L-(EUu?JuK8EF6tGt&$2f;j_L`c&$d0rR^8$5 zb8PoKT(SvOUFKJz(&~wue}&8+7kvyN89k#6`Vg z_9gZv$5B0D^rg1P*s43+eVOe(?$s3@)y|i5Ki_sg9@H}?UtxQSy?VgllIU7w zb`J}6iHmy0>?`d}j-z_Q=&Njxu~m1t`)b>L+^Z`*s-3Ule!lH~Jg8?(?reLCy?VeP zv^~UH-Jp9H+dVAQB`)d}v%A`x97pwp(cNs1u~m1tySwc^?$s3@)y_S*pKrS#59%3{ zd)l62uO2YCm+c|e>IU6=+wNhZE^$$>n4PvaIgaWHqsaCcTXl!K``GT|UR~i)?cA69 z`L_GH&lM+a6-AZqR*z?H(5D5*PJ~S!{1|9Muy>541hTR^8$5LALw2 zS66scI}hf5zU_WIsAo(bVtb0cdcfeJwue}&8+0FLyN89k#6`Vg_HcWXKT*V z_7r>dfWfnD53yD^=sw$a4-0jPi+aWEMthUvsGcx-j_onF>JE3$wcW?Py27K{c^>!k zZTI6rJ!A5G+f(e-0|qa!J;V#@22b2%yNBo0C09P_wl^C!fR^hRou_F-H%t)GoE?1?I~VT4|wV|wug8@-QbDW z+V0^wb%|HiE1rFwy~**idcxD^Y>)Axy2F!&?LMAYS9neByq^2{w)^pldd4$vusy{~ z>H$x^(e@B8s2e=-Cfhwcr!MiTdd0JEwl_ImR!?}kv^~a)>JCr7#daUht1G;wcHYYU zeB1qaMLpx0TWnA9l6t^XZ?iqb3+e_>yxn#Wnis$TKzJM2x4m(>%Vey8m*UQ~B@ z@?Ez3cwSxMHMMh|`}wx}@rruJGke=pyrdrR)VpmD@q)U+6YsIz!*l8quc}u(`(AsK z<7M@P(fhRHsGjij`)!Z$qPoMAmF+(6)fFDq&IkDW65saMg;&%wp825dDPB?!7~E=m zh_$*w_iJtUuuzw{s8`Is&ferWswa%T-u4(_he@$5B0D^qscH*s43+eV6S% z?$s3@)y{WwKi_sg9@H}?-(!1CEjj-z_QyM3SS zF@8wh;qLow_i?YT@ThivfcyEj`|+TjG5JB;Q|#3P20vtbh_$*wx3k^DLS5pbUNQS& zdz0g+o-q0m+hc6i9qvACyN`Qyg-5mXqukH8-H!+LjLDDLo?@>aF!*uXL#)*ex<6sN zhlRStMZIG7llCUZQ9WUF$@Umqb%(p&b|3fZ2Cw@m{VaT?y2M4jV)oPeSvaaEJpD8J zS$I+1;mM!X&%*QS3a_c1pX2Z0eB18|uc&7{GuWQuCG~)(e%|&FFQ^+l@e8(lcurm7 zRrQKzZ?iW!URF8`Z{dh$^ItJ?vpvRE-Qn)nZTImOb%jT@^BeqG<=gJZgL=l~ zH*HU`R}UEcmhBIU7(b`J}6iHmy08-Cl~SN-?&B@$3Xf{%FSws?yB`ng8IzCLo?@>aF!)Q`L#)*ex_@Q6hlRStMZIG7 z*Y+mIQ9WVwH@3&vsyp2Mt?fSU)fFDq&QR)UR@q)U+6L;9|;W>4QSJf+?{a1UF<7M@Pr~l3N7%!?jJo)do`*>bm;Wf4MAN>83 zZ@V9_sAoL$pSGuXNj>1HYqp1YLEYeqqwOA^QdfWfEO z9%8L-(EU`~JuK8EF6tFC&)(!Xswa#-&Gr~ub%(o8x829Ry27K{xt{y^w)^p*o-z3h z+f(e-1K#N~Z4dEQb%X9_+3sPXE^$$>n0>ar$#GOq7=4cIF}CUscPDN4aj&lMsOCT9 zKT*IwLQgNJz(&8wue}&8+1S4b`J}6iHmy0>Jk_A zirH7$n;b{=gwa>q9%HNSaQ8K~`?yzEcvL%g=6=5ae}9EXwG*=QZGT;OP|uj$#r70? z^?<=$Z4a?lH|XBYb`J}6iHmy0?C$m^$5B0DbPwBOY}Fm^?rFP^dv%3JwR11-=iBbb zgL=l~-nOUMs|O5D+a6-AZqSWv_pnfxxTsgm?qhFq9Muy>_q9F7R^8$5ezyC#S66t4 z+POdX^KJLzK|N#g0NYdS)dL2x?IG6c2HgkR?qQ)WaZ#_BJ;>hVII1U%9&CGzt-8bA zLu~hPudeW@b{@+8eB1qaP|uh=%=Q#}^?<>{Z4a?lH+bD6Z1=EGm$;}`%+A=G97pwp zQDS?Ht-8bABW?F_udeW@b{@t3eB1qayL!gt(YB}9s|O4oV|$3TxIU5> z+3sPXE^$$>m_6Cv9%`Vs7qYbD`wBIH#v^#38QD)9%HNSaF^Te<6d3iQSCg7`}wx}@t~eD zdA5EQj_L`c8}+mBL+TE%e~x|@?$s4uQ#;RnvU3yP_OtMcdd4%)vpvO2>H$wZ-}VqM zs2e=-0^2=2r!MiTdd0Ih*_#|Mt0z2tv+XfnRCjptg|_>6UR~ieweuqG=iBbbE9x1~ zyx8^>FR2GS^%C1dyr6FI#7k}W@SM8DtLhcczRcd_cv(H+>6hCc<3)9cCtqQ^kLT4D zUQ;`-aFnELQA=c^!-8b6qVWBQ@QLmW2 z$=>8Rswa%zY zEYu|~>J_uM+nXFm^@PzoY>%;3ces0}?LO|+6&}^jySSfkyB`ng8I$w2r`W3p4EDB% zSgRX!-)*~xg}TH=y<+wrdz0g+o-lf^?J>6M4tMXf-N(JU!lT-GKlk%(_v1l5V^Z0k zVy_-B_<-#pUQjo9;)Aw(curm7RrQKzZ?!i$URFD|r9v12n7xjwS&)AzBNA-l!&)ObitL||3bGG}qS66sc zI|KLgZTI6rJ!A6owx`&u2Mm6}_7H1zgYIp%d-zIqi62p~nEj%?$#GOq82ys%FknUA8^M3+e_>jJA7tPF>y0RP3`<9_w#M{<3T-R@>{m2*sBK&Cfh@-)eXA8 zZM%nsy2M4jV)i@sCdW}dVRXCgF}CUscfV`9k9&26N44{N{Q2SA?#F|A#^m>HPq9}I z82o|lA=c^!-9NP5!$Mu+qFyn(VsCOB)e}Ys+hc6i9q#_fb|3fZ3Xf{%kGY?3yB`ng z8IwP;J;h!ItJiw>`#I-Qn&pZ1-`muJEXK zKEnNc+x>XEddB20ZBMaR4;cKF?IG6c2Hn55-NQm%;-X&hhQF~lIgaWHqrbI1##Y_o z?yBuR?$s3@)y~5GeB1qaP|ukBo$V?1>H&klw>`vKJz($;+ObwQ=>DVa9v12n7xjwS zKiQicNA-l!YI}^Wy2IT++wS9DUExvf{0o0weA{0a9@H}?ci5g{uO2Y?SKC9Z)eXA; zX1j-ly2M4jV)pO$CdW}dVe}ui$JnYn-2JERKJL{O9@Wk@?&sU?$AfytJk_AirN3zn;b{=gwg-n9%HNSaQA<<`?yzEcvL&iQ=FUmw)^p* zo-z3-+f(e-0|p;$dx*8VLH9b_JuK8EF6tGtkFhs7j_L`ckF`CW)dL16Y!9(kH|V;ydswJTT+}OOpJ;D#9Muy>pJaQCt-8bA zC)@7hUR~i)?R*ON^KJLzK|N#gskW!ss|O4`+e56?4Z5FZyN89k#6`Vg_UZN}$5B0D zbiM5{w(1UdpJBU?dv%3Jwey+W&$r!=2lb4}XW5=&uO2Y?Y}-Su)eX9zW4niiy2M4j zVs_Hr{rx`}wx}@t~eD`Fz_`?9~GXUtoKPwYov~ z3vKtXP?xx z7w+fV?#F|A#^kQHr`W3p4DM!oh_$*w_wKfPSg1=})GKE9us1o5>ItKJ+8$%8?r?W6 z+kM=tD?F;5dvibEc0V4}GbX2PPq9}I7(}**SgRX!?_;}%g}TH=y<&D>dz0g+o-n$f z?J>6M4tMvr-N(JU!lT-G0Qd84_v1l5V-nk*Vy_-Bc%bbe*6Ie`2ifjnp)PSzub4g9 z-sCu{CyX9qdyK8R!`(w|_i?YT@Thhk#{GQT{diE%m^|F}6npi6!6R%Bu~s+ep0VA- zLS5pbUNKATO^%~_!swB<$JnYn+&#*6ANT4Ck80=9+|Re&j|cUP$zyC!u~!cmJl6IQ zYjuNeYP*Mpy2M4jV)i(DljEqKFnYZ0F}CUscQ@GX<6d3iQSCh8Db9_2+x>XEddB35 zwx`&u2MnHMdx*8VLHEhFdswJTT+}OOPq8;Sj_L`cv$n_Bsyp0ew)?nOS9nxAPv!T| zx808i^^D2WY)`RQ4;Vb%_7H1zgYGkI_pnfxxTsgmo@sA#9Muy>x$QBw>JE3$vfanM zy27K{c{ca+ZTI6rJ!5jC?J4%^0fXn*9%8L-(0#7$9v12n7xjwS^XyHIqk6*V`L@T{ zsyp1hKtBs>b%X9r`dRo&b%`HQubADepM{sz6P|vdeimL-cX;wew)=QqUEwvg^WvxQ z|I21?UWQlHGoE>g?I~VT4|wXOwug8@-QbCr+3w*vb%|HiE1rG1y~**idcxDMusz0$ z>JCr7(sm!ut1G;wc3#E(eB1x6@rruJGq1Ki#Y^e|Prb(W5HF}3Jn>rFJv^r_@v3^o zv#+x^IbK#zc>0{}FJCr7%XS~nt1G;w zcFuD@-*!J&2lb4}2W(HVR}UC`(Do2(b%WR4YP*Mpy2Ss--kHET za$WVhvH-FO4?$SUViQRKxgm+N0J3m`LK4t40mK%{O6~t!5rjn+n;-9>Z&YLVp*0Ky@Ep?dtD>8>(CI%4M;~;JvDA@L|=~ z3T2hU+$;E?>LEO_D)ubAUv(E=bw=z7c%Nz)Ua={Cl9w(_hIV1*we77x&@;b#2$lH)ipR(ZME>9!}t$(R1e|ePl`PY-=?|? z7k*0Y3D{8W!tmR~9)Ts*Ww@()40As%=j7qG>OM^UjM&q#sk#NDKP&batg5cTscP%z z@Snr@4|h}#;bL3tS=dqCg$wtKJpmi4T^R0&JpxOr%Wzlq80LOn&dI}V)qR-y1+k}L zQ*{eQe^Kl)SXEtvQ`Ocl;XjA*AMU6g!o^<}dlq(7ci}=;>^U! z^%&-URnE!7ZPk64db`-uu&KHQqrWEh7_6$U!KrHN*YTgj_z!nf58=yyL+n}DQQd_L zzbW~!)?`lnA#S58a7q8;4^@iqXU4v8A)^FoK zhw&fos2;+_-w}Hjc2sxa!taVb0UN4a82&x6M_@^H8Sbhc!(3m^$-`~ceVF=vv8Q2E zbqhxSK=9T}U52}= z$1wNDa!wv@tM0?pK>DZPEWsVsL%8@SV$Z^k>MmUP zQ?VytL$wRTeEc2sxa!n?$tfDP3y48L3K5m-`PhP$fAF!$GTP9AQn?!(mIh&>IP zs$1}xe=GJFtg5cTscLJ4{~X4DxTAUq7atOP7Isv3;j?$eo`7#v?ZWWii9HYBuDTCj z^!H*?}R+*Lh>xqp#!@^D*qAEw?T_B3p&Zo%lkiaiFas%vnn+WI&A=P>@m9o0j)`0rxR z!j9@LT=);MCtyRh3&Rt!M_@^H8Sbhc!`#DiP9AQn?!(kn>}l9k-Gb5o6nhL-RoCED zwe?>7=P>@m9o0j)_+Mhr!j9@LT=;LXCtyRh3&Z~-_6RJgF2h~bW0M3GR!=~yMj6PNDF<4bygHzSk)2_8{@m9o0j)_|am| z!j9@LTzH1q6R@G$h2f78djytLm*KAJG0gohIVTUdRrg`)W5u3^P1P+Jjfg!4tEy{o zs@nQE{O2(K!yVN_xcKp6&%%!CE?jt~*b}g!+J)gy5PJlcRF~nd>M_iHqMVb5+p7C8 z^+{q+!=~yMjDE7%W3Z~a2B)em8~-_s|8Ph35Wf6Mv1j4iRCnRCqhe3Mx2kqw_*29l zf%m8`!-rIl;kBPC=j7o7s{8QjPZN6@Zm4d-D?eTAF?g@)8hlu_^%>V%r#X!O@Ilo> zcp@hDEWBTJ7hd(5Vo$*PRJ-tsXNf%m?@?Wb52+r*Yo9IWHARJY)j zpC$GfyjOJ%KCIgMZ2adi{=)}V58;W=5qlQiueuAbiiOQ>sbH$#98>(CI%Fh#f4Bo4{1*6YZJFKd%!KrHNd6X*-b6s#p^$;#T zU+h`fQQd_L39%<&L$wRTFA#eKmQ?}R+*Lh>xvS-zJls~@ zhpCj<)3B+!1*2ai_86?HuED8l>l*y$F#f|G)kC=W60v7tM|Br2yj1K7*ih}l@E40c z0!ymPa98yh=F)Ob9&W4d!_>>fo`y};Eg1b0vBzLlbq!8cTQA3d4&y)EQ9XoM_iHrJR$8+p7C8 z^;Kd|!=~yMjAq3igH_cvI8|+ZHU4v$`ww?i58>k1h&>BCs=ILEYsH>`4b?6Tf1TJP zu%x;ScU6yJ?(5~8Jls~@hpAVKJq??xTQK?!VvoV9>KdG?wjBKDF#f|G)kC;=t=O}$ zqq++ha$--whH4jvUnBMiEU7NTUDacld##+4hufC-X|YFONp%_S zsvg7Kt#VEtZmaIY)NNuOQ>s z4f?y_hUyl)a!G#|yjOJ%KCIgMMq&UC^Sj`Ks)z8zonp_z`&D=0Rd>@j$+>Kc4lwN=D_4&y(3Q1uX= zxJT?+c)#i{ys9Mj1iVkR3$OTQu}9!Ns>|>p)nj<=o8_E5d_Z*{Ui~d%Ps0t>EqLX( ziaiGJRb7J*tG2!k|2d5Ra7XnJE|$ffg&oyhxbW>_Pr!z17lyw>>=9T}U52}=$1wL6 zIVTUdRrg`)JH?)cP1P+J{VuV`U{!SuPE}jqOMmTUh&=%t zs$CeqSL_j3QeB3-s>d)_m2>iNTXi3%zE|vN*i_wu(eD#`3|3Xw;8eBs{rJye{D(WL zhj8(Ki#-cFs=M&2|0DJUyic_Yuc(PV0`E~>h7YM8!)yPqoRfzSsP4n7|DV{?a6@$q zUintB$KbuHYw%&!)(=pAIE?>rNA(ac{-D^iu%o&Q7k)_W3D{8W!tf7^JpxOr%Wzlq z80PA7P9AQn?!(l5Vo$@S>K2SP#2$lH)ipR(ZT$%MpTqbMcT^AI;*W|w3p=X2aN)QVb#_O_n*V~ z4@m9o0j)*c5vfc2sxa!lu|0u%X(8;d5e-z>?}R+*Lh> zxh**-54TnKVd}it)3B+!1)~?l9)nfYH8@pmweX+A_z!nf58>iZiaiTEs=ILEr^KFs z4b?6TzfJ5BSW;bvyQ;@9_tSDt9&W4d!_?1+Jq??xTQK^wVvoV9>KdG?wtf!(IgI~s zNA(acw#A->9o1d9aKG3Su%X(8;f~lNu%x;ScU6yJ?&sy4Jls~@hpAr>dm1)Xw_x-a z#U6uI)ipR(ZT%Ada~S{Oj_M&?{AICcVMlcrE_B77fDP3y4F8JQBe0~p40lzJVeVJu zoIKoC-G`~Si#-jSs#`GnYhsVVs_Gh?s=9T}U52}=$1wMRoRfzSsP4n7x5b`@8>(CI%HI-u4Bo4{1|L>!{WkRvhw&di zsCo!b{EpbO@P5@@c-8NUJpu1i?ZPX5PwWwRkLogfNc9+A+n00l@B!6*nEHLOr(sid z3r7Dy>@iqXU4v8A);qZW9L9gRqk0Gz-zoMi?5OU-g+CN~0yb2;@M(V}_6RJgF2h~b zW0?D6IVTUdRrg_PAoetDs&2vPgJO@ts_Gh?sC---$f}ORCFoSM?a? z{$9?>!)?`lnED5?r(sid3r7D@>@iqXU4v8A)<5Athw&fos2;+_vDmY)qq++h{#on^ z*ih}l@V|&X0!ymPa98yh=H4UcECiWPts;d=w#(xfT z|KX16AzXZh*t4*sx(gRRM(hdLQ0>C-{}OuymQLFZwrr5Kvqq++hK0)jW*ih}l@F$8r0!ymPa98yh z<~~Wz$-`~ceVF=Wv8Q2EbqhvqvBzLlbq!8cTUX*ghw&fos2;+_sMxcxqq++hK1J*a z*ih}l@TZDB0!ymPa98yh<~~i%$-`~ceVF=mv8Q2Ebqhv6L+mkFRb7Kq)m9AuIgI~s zNA(acex}&7u%o&Q7oH{d1Z=2w;nSWi_6RJgF2h~bW0-r6oRf#!s{1hYSz=Gars@`q zezw?Su&TNS-=o_4oSb!%!}t&1p?U}x<6_Ukj_NL4xJv8^*ih}l@PgPQu%x;ScU6yJ z?sMgwJls~@hpEpKdm1)Xw_xKdG?ww}lR=P>@m9o0j)_JvDXJJQm7cP9E*b}g!+J)hy*dwr{x(s(!k74d=IVTUdRrg^kCH6FIs&2vP z7l}OvtEy{os@l2+|2d5Ra7XnJF1|$US=dqCg$pkgdjd98yDN4C_J%+io zoRf#!s{1hYGO?#&Q*{eQzeMaYSXEtvQ`OeX@t?!^4|h}#;o>XAo`oINUAXW{u_s_d zwF|>vD)tC0sV>7^)nl0ZGC3y?w^jFHDkJtZY^rX-=n1jMU{!SuPE}ir_|IYdhdZi= zaPiBvA@&F?sV>7^)nl0ZN;xMFw^jFH>Z`<_hE3Hi7|n`3 z2CJ%TaH`t+YW(Lg{=*&BL%8@gV$Z^k>MmUPTCpc!L$wRTUnlkmEU7NTUDacl`+7Mi z54TnKVd~XlPs66_7L0y_*kiD&x(27JEeHQOjQ?;)^$;#zEA}kxsP4jroY)hvq1uJv z*N8m=ORCFoSM?a?UMuJ1;kN2NOkF4TG;FGF!RYm3kHMMmTkLF@_GQ0>C-jbe|$lIk+tRXv8elX6ZTZmaIY)J{-}R-GvJUu_s_dwF|?i#U6nr)n&M=dJJ>7$~k$st-23W zw~0Lso2pwddb`+Tu&TNSr>d>j<3ES-AMU6g!o@qpo`oINUAXWDu_s_dwF|>bVvoR* z>N4C_J%+h&lymZMTXi3%?i70(HdVJ^^e(Z-U{!SuPE}iX<3ES-AMU6g!o@d=JqtUk zyKv!6Vo$(^Y8QsTN$e3=QeB3-s>d)_lymZMTXi3%?h$($HdVJ^v?TTztg5cTscP$+ z@t?!^4|h}#;o_Uco`oINUAXWqVo$(^Y8QsTRqPR1QeB3-s>d+*ZE{W?ZmaIYR9Wn4 z*i_wu(Qg-f3|3Xw;8eBs9r({-{D(WLhj8&NV$Z^k>MmUPPO&FoL$wRT-zD}4EU7NT zUDacl`))ZW54TnKVd{Ito`y};Ef}qcJqD|)YjCRCx)=XBjQ?;)^$;#r#h!&7)m^yo zy<$(mhH4jvzfbHDSW;bvyQ;@9_x*BC9&W4d!_@y4dm1)Xw_x=Dh&=|Ys%vnn+N$9{ zhw&fos2;+_|10(^?5OU-h5sk^1Z=2wVfd|LkHC`ZGTc=?hPfY*bMkOobswgFQ0!^g zRNaEn9};^ER#n&FRJHZP_|IYdhdZi=aIr4-EbOT6!iD?9o`4P2E(|xs9)Ts*Ww@() z40Ass=j7qG>OM^UsMyo6sk#NDKPL7Vtg5cTscP%T@t?!^4|h}#;o?t-JqtUkyKuo3 zdjd98yD+>g_6RJgF2h~bW0+f!bMkOobsxTHRqScFs=5WEXT%7Isv3;lf$5CtyRh3&Wn+Be0~p40lzJVQxdt$-`~ceVA&BJq??xTQIsQ z_86?HuED8l>m2@b82{mp>LFa*5_=YQRCnRRd9f#8L$wRT7sMWcCDmoPt9lG`EjcF- zw^jFH>LLGmjPm4VZJF2_z**_!p1bnM% z7lwaU>=9T}U52}=$1wMEa!wv@tM0>8TkL7rRNaEn`^6rERn;{(Rc&?fpTqbMcT^AI z;?Ijc3p=X2aN!rko`4P2E)4&o*dwr{x(s(!k74eYd+*>vB#W zZmaIY)NhDA4V$W4F#4NfkHM-=%sCbH6R;=9T}U52}=$1t}e=j7qG z>OM^UiP+Pysk#NDe=7DEtg5cTscP%b@Snr@4|h}#;o_f*JqtUkyKvzz#GZf+)h-MV z#U6nr)n&M=dJJ=aDd*(jw(34i{gv3$u&KHQqwf-X3|3Xw;8b<~-TWL5-~T>L{k8ra z*i_wu(ZA831FNcQaH`t+TkZpgxesth^$;$O#GZv6)m^yokk}Kjq1uJvU9m@CNp%_S zsvg7K-^n?7xUISmQ-3e^G;FGF!RSATJqD|)YjCRC`bYfdF#f|G)kC=WPh!u)j_NL4 z7>hjt8>(Fx{%5gAU`cfu?y4Tc+`q^M3GR!=~yMj6PNDF<4bygHzSk(_X_`HaTYr?x-HZ#ixrs3p=X2 zaN#4wo`4P2E)0L9*dwr{x(s(!k74ek{-}R-GvL!5PJePRJ$m-LMKkyx@hj8)Z#h!)ttM0<9o+V$Z_+Rd?Z4pDFePyic_YuXvW&Bk&&8W%!Wl zF}(KKa!wvTpt=vQeva7Fa6@$qUin#KkHLFY*Wkmdt=9T}U52}=$1wK-IVTUdRrg`)g96?+7hRF~nd>M_iHv7D2K+p7C8l@@y%HdVJ^^krg?!K&&SoT|3I1phgV z|8Ph35H7x4>{-}R-GvLU5PJePRJ$^Np%_Ssvg7Km&!SL_;%HOnEEoYr(sid z3q~_ykHM@gMG}9>T>%v1egNbr&vtx!4o1q1uJvSBX6WORCFoSM?a? zzCzB)!)?`lnEFbwr(sid3r4?6>@iqXU4v8ARu=y`jQ?;)^$;$8wb-+;qq++hzDDc` z*ih}l@Yjkx0!ymPa98yhUi)=&P98p>x(~1Zda8>(Fx&WSw&ORCFoSM?a?UL)t^;kN2NOubg@Y1mZV zg3;^59)nfYH8@pmUC;gJF#f|G)kC=WIT?&#h!&7)m^x7i`Wye zq1uJvg4iRlq`C}uRgYorw49TN+p7C8b*tFZu&KHQqqm7Y2CJ%TaH`t69sfCu|8Ph3 z5H7x6>{-}R-GvKxh&=%ts$CdD@gKfJ^$@=NZn0-!M|Br2yix24*ih}l@SDUQfhE;txT|^$bKfNA zzGo`y};Ef~E=>@iqXU4v8A3|RABHaTYr?x-HZ#cvjS7Isv3;li86o`4P2 zE)0K**dwr{x(wf?dJJ>lD(B?k1FHM*>TeT!8g8g=!7IyRkHLFY*Wkmdt#7CP;V}0f zKB#&KPke{iv+#b^U3k@7#GZinsdnKN-zoM8yhn8zKBRgKul+7LCl4P`-G^6yx7gEg zLv;&2^LxY|gKtq?gYQvoRVY6k#(($@)kFC5d&QoG9o1cURaNW>c%Nz)Uh%zRkHC9W zm*GRI$MD+klXD92?Hon&KfeZ_`u+NE;p;ix`NB6_Z-#H@_`c+uE&spBU!Jg@&+%~_ zpTXg9ts zoj<=5J_C+m3`RJH=rM15Y=<@~O;MwycWew+)z;TqujBu( zw7v#)!ul%fEBW&Y{{N+D|G!^+`ak`*g?AzAY1UKu{~o{C{HCo_P-23;DHOGtjTi>JSSs%r}eL3g6-deJ5 z;QV{=<_7+B%KQq)dX@D}{P|A(^NrSLaQ>_K(=AwUH~(^pf8+n=Tex#~^RMF8N$V=^ zzW-AX{$0#^A-~)A;<-k>02Q<5e@EH+JbuUCHN1k~br(O;{|!t0{L}o@JB)9yLf?qp z_wF8kj(??hLf_XLtef~-|6at@|E=7yyZFfo?)v`k ze>G>^i3j_?_eI>bq#iHi{1=<^vz+w?e$N~EnRoMy5B{t9e{&5p>z~3im;2^>IZ@m4USn>6@ z-*MMVp7q8%??~NsvT*A4H{A8y*PlLl=Ns;N!_9X;_v9O1pSt0$*FWz~FL+k$^*7vc z`sP!2-TmrQciwgS4R^fcSuc2A;#n{Km~bq1&E0pt@vgg1+;Q_8F7v0oNd6uF@~%@S z-+1TgyYDeSC&qu*+9(_-4*=h>|ejK$UnUsM_zU6O{Z>; z-R}SYCC|Fyt`m2>=?%A?y7O7FH=cgk$&;t<;@WP$;r6>uJ?o{{JU{r^2mf*K^JmUD z^xLm_{sCXFd46!w{PSy`zjr@hntfUJWv_U}iLd-J$5CeDQ%wc1|o zt@c+3tHagN>UedsYMlw4iJY;|#LmReB+ewyq|ao|WY0Kf@@EQXmd+H>p)>>#SvSzQv*5Yf4wd7iQEwh$gbJp@}g|(%% z;#zsFvQ}HGueod9T5GMn)?MqZ_16Y#!?n@ccx|#~t%uel>-KtVJ-(h;Pp+reGwa!P zXFb1OSYKK%u9w#<>$Uazy1VYJx7OS1-Sysje|@k%Tpz8E*C*@N+0fa@S^I44Z2WBE zZ1QaSZ02nCtaCPhws3aoZ1HUQY~^h2Z2hcz);rre+dkVp+dJDoJ2*Q$J32c)J2`84 zAuru<7U2DXf8F2&2qEStTpRRx9K%o&33cf>^1w% zL37v~HOI|K)7lJeMmFuu*k*h)v6^bLL{#@bQ(z)Wf^0~^n z+PV5U_nddGb*_D`d#-n`e{OJYcy4rVd~R~i+6rw&w(PCgR(vb5mE1~iWwx?g&Q^Y_ zu(h;R+$wKXwrX4TEqBY?YHhW*x?8=i{?=e?xHZ}uZ%wwW^P%&R^Y;1J`S|(7`Q-WZ z`ONw3dFOooeBu1k`QrKV`O5j)`TBYHym!8JzJ0!XzIVQVesF$xesq3(esbQr5V{b# zU|)z`h+jxtNM1-^$Xv)?a4zI86fP`XC|)REs9dOBs9$g|co$k1+84SPdKdZ^1{a1G zMi<5xCKssG-Pc$lKX7nEZp5|Sm>YK!ZqiM=88_=XZr&}pOK#CEyA`+Q)?L^2+?LyR zyKc|zy90OVj@+?3ajoUha%9a6Bh z3#&`3#ntj^Wwo|iUv*c#)fV+Y_qZlFt_hB7g8iDHbzBdOk0XNPh~UW{5p<91f#Z5$ za$FBQ+3SJ+aXoNc4;Fa^)aXoNc4;fBg%g5wN@WQ z%u1u#HAb?+=-~PySydF%6-Dp=N}_}7hTh**L$YS*wbt;!J1wh)WTnvY8X@;FUM)B| zUMKh%uM?~tuL-==n!wg;t*<-qem_=g0*lA%03XK{!Ig`w-Ax=?sau{|r`u+g?%*+4 zpd8dxo*=E=5;}z&1sw>d@t z9^SY88?51Ltv9m|)BFwyAF6v79PdGr|B%^(#ImkqUn|SH+`Ub#$aU5y`1uU>``Fv< z!%B!P7VHGW3F+%Be~-0Vuy07s?1f`xue08beRA3R=Qw6Z9Q$$D=cfONyW3n&TpKxO z<*ze)zdfG2m}J?xsK#zVONVy;;bt#gXFUV>d&*el>)0oZz3h(I<7g1{v8e3$a&GoPCNi>`_!$x4PG{pBsDVvG0+?o=4>)_c`K(q5Qtf+L2~_ofUeD z|9eC4<9;-k-i^jDNi}vvO3dtbR0#Gua*x>OXuv*24to*R*?%a)UPEd27?K>_2Xf~h z%evmYV;QppPm#TMJl9HJZ~Z;D=F+|B;brViCGVlfo>YTiFRIoDVSlLEeUxT*GU6h$ z*Rzivb;QihK-r7zOf|d9k(Ixm9sBs_7uh?=TDsoseV4wBovtz$*^6oh(S9S6Is#@1uzra0z-|L6b2Wh`5eC}Rvy_o0w;kXCZ@B_3X zo7KPG8gc6`_C9~O>;+~GueZ9Cjm+`>fgh6l2U_XZSx@Kr*-z%Z1hcQRe)+GgF*i5olYLWd=C+Cvva%!`Ksl(5&vqP!FZleQ#f6?;mtU5@#4!eZf>o#;XZ_71;xIbit~<&hqdp#D1q4_Bida zk7j(~~T)BkgE2!+x_B_LL2=Z)}CVVtZS0 zc7pAlk6*C*JRd)1NS;*|Q) znqPAK^4>ce=lvUb8B%NoDV^qWFj-Yeu2dWXvVC@A$KE%z1n%k}*Xu`{-3d<~g5G(;XKW8P4| zw2$yRPKhtfysLhxF9h{S$dvs84)*n`+}9d;9LQ;Q_2K?W-}d;L1>=WDZjx5EzIHoI`w*=gHm_v||L*??WLZFa_X zOud$5FYAeCGyYwl$?6Q)N!mV8uT3@`c6+wj!MRQi;@4?@-C?uCvR{8#vAp$O{CT46 zGwe|Z%|43^Pa(vP-UZL24v$mk_;oi~|a+`dd!;a&1b{QY=jFR*Miaez@a}g#RHhY8Dss9Fe?*y&SWYcEP?mDfH&EDIN z@qIE^-`o1k>c;=c1uHFO$!3phhkdQ<>|s5jT`F=F6Rx31%Vg6oO=y$qrada+wN1{` zp+pTROHSaigReGT4mOhNn;n#*f$_}=S|gi#+ctMLsb$HL_A#5cGThH3-n4@|IxsEd z#N5exP`ZnF)HbbTl6-5O`KR77fFps_PpII6UCrJJH#bzbMK4nh~5_OiBIxYkNaku zvM_rE#o!w1rlygn;a|hRl#RA|5;pbCp8s}GN+vUP&Lk+?15>KoL5X(ADi3Dro;DGc z_%G$At&x=zyq8JyP7Y@3qTotu@*Heas^vNyttlt^ZWi@P*jz)~#9emq9OP<}`W%v` zwENFt5L`(;DECR8Nj<1X+xmX`S5xObn3&R2H&;?LZ)b9*X0a(f{&SdUZ7Tlz1vhWn zC!6=O$XnUwolMTuFE({ck@|iTl%hS~ea~%u3T;z@iq!lQWm^rS|r{4|~4zvUr6FYk* zz9=wT%Oko7X>8Fmt#W}#bVR#c2wLWlMio{+e;|IY%)}Bs_VmwaloJY~XO9?S-|rq# zPlhPkk9+ogpN}O*rX9=BlJ$s(LK`+MmH%Aii4071pPXx_lBSK8az*_#6hHlP7#J`s#BAbFn zYVjaW8wIg_h;Kb)f;g?R7om-%9E6C^3dA`f`XU9>Q}WCG$V6iW<7Fsl1^iMkCElSO zXs>5XjTz#L9x+<~BwzFJN4CoNTK8OY|KgV@10#A+anmEI91&-V|Gh2$9k8`c9hfgj z++fBM?E`OZ+r(${Z>*KQ!TM?DIK+;>w(=N_81?49rjmV>-%jzzGP5(^OY!Euk}{?~ zoL#|`eDZxEC4YnUD*E4#SO4(w85@%NZe)6O1=^9G_CWobuJ?$&xzJ2su4n2#$F%)6 zC8@ocq)$;dJ&JY^EBduD_i%~#U)xEC7Jg##LB-`bS(eF4@jzVI)>gf(v3L7GPtI@G z2lN_}Gtr@~vEjhPBXtvr*mHdaN3&J7iKqsLvP1TKZ-Mym2CIe7MHAcl5s6>7O%6p= zj)|y>Gj((EKuqh`&~=S#9r~j6nO;xb^dlU4JHGG9pr>O8y@@uFi9OTPk@jz5dZvC% zGBJ5AT017&++g|vN$TS^KHEf5^&@?rnBIkBV)DsMM80?D>$EKc?talkffM2>|E}A# zD@EE9o4Z{!Js*cVZEsq`8>|8EN$>dkP(&!R^BO*ovqT<;??a7mu-^ML%GG7e$2tBY zRG(Vwa^~MGne1`p_}g&D--df4e;baki~hieUF`F|d>bxl#;58g`xZC7R?qYfGxQB5 zUdqrj?9KEH_hKYZ^R9khTY86nA8W6Nl`-Q!UXTOtnclYFKP&`2?)bq>e&j|IkNEw> zjOi(Q2lDtHBUdBS`|g=uV}Y!}h&WH8yphQlWViy)^tubCZ`;%CeTDwxXfAU+>wnMm z5DS6#A$qsI?;$e=Q81$rqb=Wek1+_}?;g4G8_nF}IDOiYn+ZnOMnruXlOqV}=$dDG z;8ylVD^GjVC(1hhHsI*cS3(QN-vyB(8AnzK)Z8a0Gw}Y z5o^02mf!re@;91%V{+~bpYvb$oS!8*zsj)3`&*%g$&ix@nM`Dlj9!SmS!E_`*3-VE zU$gYIZYi3~v19r=j_EhH$-mmOt>+~EQdS`7iO%C-)$mAP|KbLOQ@ym><^?KAM zaWh)qqrMAKlk`j;uRwhlH`&qNnT)Bad&Zy4%vh!LzuJd-kQ39Zap>1fHtd-ZC*QXo zW0ihgH`3b9(=mGg`>Za0w)r+|pWLuNi`oAgtN$%l|4Xc%Uk8?Nv?^Re{Ky)+VrCoo z*AUkl(c@Z1I{xZkk6$y&HC4<#j?ZL#J)LV%F!wj3nMuF(shH8@xMn3CdgfN`Ml+Xx zbS}eqYsj=Qqw^Vj^yB**E!X&1V2pKQ`i=8F-GPqnwHZ6G&0L7K$-ECV>po!2rf$aa zij3hU8L4TT`{?kLlO{JXn8~l#HJ59fvAbe0PGbkNNZP?j89m#U+(XBV3>4|p+T_*i zX1viMbKuZ6+eFoawW4MUil)CRz196ETh|dqzt=j@ajwCpW6IrNF5^GY{Ic(d%@b|= z`OfZ*d~4kw|18dob`?!NpdO4z7n#@6UQL>8zy!Y>JZsaJc1&;DrvGo#iym-~>XbF# z7u$?JB=LhE-oMeznJF+6rKhF4VoHQx5=Ojlag(vhm~xOgkg@TYJFr&@dO^tnpsGie8|My6F(O+&>CXzS=qdc4rR!HVzwE(_VXbV zG9pPczS`FD-y-j1hPbIm^x>Ck-aO_#+-Ut85T7e1R*IV$J|lhODrBGb>khfQ8EUkV z#!3}4A8ACql+l?zm6_VCpd%CUi;k^?%p9LkFlWP?sYMFG%niBom0(;T9^Cs8S8>w% z0dozRBWEh@T}i>rSL#u76ihkEXw(;{ob-+yXUWXW*oaeZCc&MoADRa+G4FuG{D-># z9z;%>aZ~?2s0Z()lm*+&1Ss-$PRv+(-DLKPl!1wNB$e{PIvYC1TQaE;4dgq)w4{xHva*=U>CXj9yr=lcqhi4~!2@O#SB^nBCwo z4kK6O%#5G5gF5pj7;6(my6y^OR`rs3e+T_phWoPVZU@| zw0w^?GBdSEVWuw-r#Dc+@7Xe4;9cA=$vuB2Qu<^t52;}0^Yjk%3PLlj;D|X=l{vpF z!7QZAT$%2f@vjggU%uZJ&kNqn%*^bU47Ff|o>=J6SXbe|d)cEWmeKnjqCKzpzGqLG zdO2k3KaYDJnwc*cr}eIA%YE4IxXuTR&)roon3v;w)eGhX#?8oK&(zQd?`XwDMSFME zuN|!XN$X5d#}!Oj$e5niXfCRV2jw86_c0UnX5+zpuF%|EuDF>+RMETW-@%D#IR~Z= zcC-$jn7X4rQ*R73FJ1TFw55|K2C_|kvG;!Y^+hshIqcOWbGeE--^H&j9BPT=Ogqum zx5=S}a5PSHv?fT>GSqceYMUIaZF2k*GX_z|lcJ14l%@RH7kS^?Ca&<`^gVCt_%op` zcQoP|%++Exb=ZXLc#(L+K60)>-PBul5K-EjzOQZ5e(l}80kKDtc@piJ*;jQl+rZhM zt5Q2@`u@J}MQYuNTh!dXP2JQsvm=t+!3ois?{AxI@Q+?E4fC;+-R| zpe6oiXmvd^BA?M&Vp3+?rhW5EtY1b3!F?~9Ho?F5^_i$|ufWr0+g#R* zwoMC{q@9SE)z}$R)B4XLLkruj_biYfLeii7(scy=+s;lP1ER5Md`x8Bdya*D z%K9ZDL>udw87}J!cx%8j z^`9vBHgc1>w>HnSZbl{jrMJ=Z29%qHSDhrx7I^ubwiAKW(nT1G_Bsj^+eu!i?Y+DtoP}G56S$DDM{8@zoxLM zE0Sl^#6VeEo;>yV5;b{^=jPIvYVq{CwCqFPjxnXq^87hW{`{qkcd<3!E&7RF;*v++ zuff^KQ!_1*52+m(Z5liVdz_7$V@i{?8QS!B28a<;CMa3^vucW_m3K7LQJky$iU)cn zMTt+cH<>()ZQhg#rL1WB*LKjSYR}c$16q4WW0MIrVV$?c;YrxM7dGvBo441dWp8iT zrWak;UX!iwz<{^ep`O`$m)kQDNHOrRF4+%a&6^IyAnhOvQq)*v64cf8nV6(_D2lR! zUf{&k+n(utL`*p;Q#$hw#_Ba=bdFW*@|3%8Dqj`yeX#=H9_6}uLM?rtMazu}~prd1c-)*EbQ9aYE%$P_g zqkYMq$*N^EgPplVtm&7?p6L;LL5wVIV`ye9FGG~v3+B*zrcaqME711+?FIQMKTaN9 zVh*i$AT!)EIl)5E>n!M6v=Kex44JBm$#we?Qe5Y*dNciEiIzga*kp(-l}B#&ChJeR z^`W3&Jkn^n5ac5=Wauj<(>Bt~cEv>fA)OQKnfo7S{J=ZVuOG~1hHTTrYMVOEp;oKU z<%9;B)2&nUCUtd-zgtUW%O?8FZ!MXzh3;0LTFyEjI-j7OFU(v|JjlECWZhI(>SMXK zf*HjO@q9d!myHM4B+thS^0OI}d-Jc#zotUamk9;)v^^6Q#;NH>ra#lu7`noYy8V(B zpL;4rBI*4%f}0*WW!c0Xvn^}!tY3c~Y+ZY2`-fUs+sqT5-3cd8ziNp(*Pk<7GqZ+0 z@6ork#f|cz*4B@~9*-7xe!OpfM(e>iJ4Pu_5X+`1>+>=9;W0pKD`d)1jDADH#JzbU za=%2CX>)2@Eqd==`V)TH8k!z*;%JKfLTz(rqWISz5Z_8Q^Ek~9UMCWO8TUlcCJf*$N zdt9S^|3J-7wO3=S@zn%9(KH#VEOp%yz3MXAzZ!jOm)N1po7Ja}J!Jf2yc#)UpNY-P zBG1qD)!GLl-7%T`gR!nN7wrzILC3^Rdr@w2y-eL-GkrJjh`4qyrj4IX9Exi%=k0r> zH_w}U>#U8?Mr6Ydb~$x4rrmqfTGWDF>h!&L%zBLX%ifP@<^8Iee)MDWZuMAcve&M} zc}FU|4{33DGfH=z0{_VuHgLQniwXfb*j~!~C z0ljo*KV!s3JEwv<+C`Hya!d|kvh0vWXp?2m|jRd z7}rbAt>8;)uVi4d%Kn{B9=gN6$2N6m-DE^32eU==NvP|n>TKgqCmuSafI<8$$<)a%Znyn69KUFp~G z6Xvd*vIbgDIzj(Go-DeJd^#NM_WqhCB9fiH3Y=cDi*<71xb_j~k_3)((af)Vfd zOi%J)B(UGw%DqmKF-w|uwmmbpRGiEF)y-(>UJF&A57RTfmJB(H5WS6xKZ9m`%KA|* zC3Iw);4+L}B}_YbfXgkIY<}!c0t-F*Bz_WL7G)t|86$dSq8Zj3jw8?P*Ul z6FqVg8J#aZB4)&?*v;0Psq;T@{Ss?6v>I8R@0~cS`9nPvZ?$!(moizk&V)X|U;Szk zb#=*@^e>sK&#Y$;na$b1ul*bUd0tNKJm1e5d1FfMd~YXBiO5o#^Cpk~ zNHz52F|VWNdq0;~Q`;YwI{_ADG>pw}ZVvhhep}KueTAeM(;Ecq*8LHHB>e?X>#_{J zvk)Urd-3*&vHgP91aX}qGtx|JA(+EcF!e!P_xkcobnTg$2?aBb+cWWXoLz+cI?OY* zSlqJEkY;x6F>|OHNEyz8K6{sUOHe)(^~CnV7zr zV@7`4w1`9<^v`Y%_V)0vp-yR;%=CzD9iJY|jP2KtxQ2uN+l)dMO|Ra+hKU)gt_N{N zeJ(FtH*KG7`oxn>M|6U_fe>Nwnh zIX6W!4rk9qL$>J=%e}UboF`N~l+CW2o_vzN{9tC3t3H>1Xq(>g(N{3=?|*s!{>$AT zXgR9S%m=CKXq`|3 z#t$@q;v5*)X-nCu-E0lH1pofmO}VjWW)4g=D>0afQSD&%jeVfJi|5XvCsGXFfTNyD z@yK#C(Kn*bJ25#Fq1ulajTbfJ!iBjvUoyj^T`hTU{1`Z? zIj{*mjoA|C%)R$@-ucO@!}A+3_E{jR$hO~ zaxpzK>n9#WkUecP3e>x!V5Vn}>+vJs0yQtOZ}(>N-Ol~?Vx;3*ev2{ExOczo`QF<> z->7Y_B57*e_Due+t##J^lW`8cL&YO%g0|@$B{i?-m%HR#F4C{f>IZ7$qOPDw@`QLQ z{hQ6aD%-RqZCY&qi8w)>Hd!v1vBo&jt*0%v-|7`+X640$wmZIVjc>M|!Pt6tZcUYS zE_5zpzI8g^TP*}LnjX(=)CXd$Wxu~SmU_y%#aep8ua&K=)M&R{^5rdR`z}wrPb)U0 z-!`Uxu^zFf(_8h+!(I&J1tYcIp*=$iW}G~vvom`${ke*n=RDF#s6yEp(X%`JW@cuh zxzNm9(~+!LirixQ*df}50kK4#m~*~9ae{ViGV@*zm?Lv=M&l?LJ?{nU)q01b(7kJ^ zn6ZDUY5Z#mnTXEQ>nL0_BF)TYd@H7o8ToZ(>=r8mLMARPxK`p8>n6%l;lpyb;?dTl z&&jk|UDta*M@Q%0*z_${{|W!T7FWvjNG|=(K2b6h&PNAn9qitK|$oI&~-eUPn=i+8fNyyAIA88BS(|JDyMhHiY5$?5T`)yf| z@n1jIs08~T6*ST)1ijD@F~nXw`U@vI`QgYZl2E|*xM;&+7R!^$Zr3>A8bDkw;fjP7W3_u#Ab44erDlOWZoZ5 zK4SOX@Q{(8KL_owDQT2y?;Y zTt+5i&(>lHklZ|#vib5z|q#1wMCP~kx zJyR#O=jx=%OiVa2b&{haS^o9-b<)ISIf@7J1NETYN(S>7;zzaxy~~JeGnBoaneCFH z&sp*NoJ0B%Je!aiZ|Mbl9K@N$(3=}y8PPh#X&*e3lMInptx(27b2AM0TZx{DX+36u zW_Uk(<_)o81uIP)6eEg#eCo#Dxjs3CA??nXnT*!loVqkw+^m_YIXkni{>0rSDN(S# z@3Q6{cy5dQ)uX8!FFo^Mv^?g0wN^qakrjI-_K53Fj_U6{QDVoqu0hFsh|g}%JcjF4 zj>oym#HBT&{-ekB<7N)kh?#X^A}wpm{`p#FDeG6G4mr)|yA z6*V4B&h%USwye&`h|R2px@p7w8oy3&#hz=s95brW4l>+DdM$Ra)^TFS7yNc>LLA-R z8xzSE%(!}z*4HL}c1#v-z-s9F%pAM6$%p!WPIQf9{Xpbgq@5a=R!Tfgni&>t+FK{c z?oRMGIhT)j%vg@YJi7twW!mK59dfz@{HyzSGG8$LlO*@CePEO&%E=w7IiM^>wn5obxkzU>0N1cw0P_GT?@0mweFl(rM{|7U7 zx2+M5WAe`PzuS+g~|scSFA(Y29D9WUE26YXH$<$&1CF?ZKC<)E#z z7kw`&r*6S|Ge|rxv%=@{9<72^xvci8a$tt|2dCXSZnL`dbo#vG!$a#SkLPA27)j4k zLp-_}bdRPV|46awBSoryd|x>tUq#lpThMv!nVFSeaota(XEIlXnb`;#owMx6{Fz`p zCeFNNFIfFmFW3C@)3vBAwdN8J3H)BZ7OfS-*Zk6_`XvV`Qhez}K1(SET zweQ#__wLM%>eYjh@w(X+A$chKf+eF0hZL9>G9s5)Fxk1D?zrJ;Cb6)$esEkc zbKm2pzv#`ZjVS2qh&VY#Pcxuxc(6S&eYUK;_kOJ24(21wM(TqjX1*L% z4_~@XNd~RTWNr+~-q`DZ3})t{*N>blJuz{8(M0x>BXg8~yBRV)QmxnWr_J{z_uhNI zW(&>i8aAS(&rm~GE?GxcW^#NPvsP)pruH-!9%ue!VQ!90#pIGJj97;b)nyqSv+7+& zo-#Bu{@x45vSw>`kn=AD8QJ*UY|A(`cZHfeWLl=)*2S-^C-rvuw22Y?>&kFl zJ-w<*umZe5UN*$FRLp2yh9@<8gf-v(m1KBUy~~faFcRb{46 zP|=t#>&v1^vvDP=*)M=Wb%?ao;NZ1(z+jyS+%elE zV-N$KW6?IFJZ;7tDrS~Q+^i@HnJBSmV#JEpu9XAz>!|71uo<1(;zxra6AO;E;>3bI z6Q_IroPzSLnj`Y-{N7CD=N(x2G$QVc&qd{#AfvKZhl-COeB7%?<8wWa4DD8r)?hZ$ z3(*JmW_FIQFkdz_GaEl-+JyP2u4h`Wf@X=V+O1~HEJF`t?t%nV?NWOmTxy=y z<(BKqn~U&dZqts(b1t3p`e2Xge2C3IvTn1SV4ttc-)rE5GoE{?wI|2%tn8C}x#PNn znHiS#U{<0tGw;I*MwOCg9>stWGJmwM%{&S}d%4%2wV8)dHzQ-V&hw`K8oAAU-`zg2 zR;(C|^!Yuly6I~rnN`!)zLvwBnt{&n_Vcmr1M?>aW`3xr`yKi*O~$P34w)J19__9l z&G_wZ#l$jkda?z2i9OBqNb4IqnA?ioX6AZ?Om@zXZbHlPx%{f%>K5kmJ(VL?xJ}MD zW=zuWjSmjZN1vFPK*gDr3wu4r_RI=~Vz6Sm$b2C3M%mk}yP01ZZzdS!OVfXU|3(Bp z+-k@6W52S8_2#!(w;$JukHhXGl@H@D*v9pX1})z1;emcvFX$m;&RI*hnY|5`sO`%1 z-)hWjaOuVE?aR_*e%pw=X^7n$;x5t?ek)hTvkjJbr)59v?X8Kb#{kp-Jn%la_j??qkHM`%;`;uE; z^5(}jTU^cl_@?FFW?8($7vFj9(awK8`Vh0} zWqK3$ypD`VNA$k*kp#1SQ$9j3y3an}Th}mZ$Rv^ZSNHgs1R$#_fh1k?1I_)vXcf{Wq z9mWWX~?Ii({YRy zX=(O3&Mz;q%VUilj$6y!EAfYwT6rVz1&p`xK99ef$zOG@J zZ}21->&x;@jU~qVYK-%>_?AYWZ)uGAjz)wXz7u>$BkSea*W1r-yX-97<*OM(cG|Mo zQ#iJf*hsUxR-P|pl=(u2%btf__7NU#_ zuU^DhHI!x+W}cOlW%e(0H(S)={mmiYv$5C(BF27&Y4+C6v-3mwT#ejvi@b85^*>{? zD|?Kcw9~Bk$+M4knc4m>D3raW)O`#bU}V*!;X#ApB)J-*HC4-i@Q*HH53$n91fl;`&UK2(RsZnyrP^ZfOj z^28X^+6)EXDw$siTQM=kUOSw)?0wN6&1$ZTujiON%6%FS_8hFl?bhvF>ib?(UhYUX zza)RVSs&rw*9dh?{)1k(Ji402TDslreGsBN#aVljVFqu3^(Pg2_a18|d#sZf9k+xZ zl$iW|X$h_J?Iw=@K-a-}zFSZ>-@9&^uU!xMPJv~d`t!rqDE#8zEBlzj#w)p?I_a$I4u7Cg2G}1ROo^*>@v zs)h8kvnjr0OW$J=gcG(n+$WZa^TKlU)T(i2*nrO3_jo~o3zJ~OT<~EY7%?B5SO`}9 z^}8FS|Im|Bzt`feH7n!0?=$~bzrT~4pm)VX52m@-?gfTReWIOu(uV|khQUr?#37dnXoEPYf=cKC zQ!v{&Xh9`DOTvThlSA#1V6&Ov^V(qXap3MXQUYu}4m@3ft`UKLkr0fW0R}DsNb2qL@JcNrIjef&EHg ze-au_4(sw@QMq~zq?xm+lta;PCEaQ$*< z9xr+YrqDE*P%*YpE;3kxi;kHbT{3D7a&*JE=zz)5_2Qw=rNE~zdGNOapJw925=#2B z!U^>GhAr5e6nc;W9VmeQD~Baav647w{%UA_C*WBo6kQFzbA}83rli*+fkjB@a}jJ( z4Rq$wcP2C7BLP+=qdzT7z&b*7`Q%Virtp&pHd4Yy0;r^N=p$|LYd#c_fIiYvQAk_VkYcE zn7|02_CwFZL*xy=ByS;A}{en*un&y(eg3q(>rBAI}4 zR_#!h$V(;oZnXqP2F3~{JXnf>IxC{*F-3nV4t=F+^pl+MZAKDwkJwFKsmUkkPdik? zeolx;32dm1*oZ@H)F4}fpyTCOlPy%cn7$8(3w17SvV;f-Ma3c?&-hf(F~UdYDk$H{ z)fi|B4wsHDiVB&_r{WSTNv1USY;gtWw}IFat>@R3idCYw^e zk^?_@$Q)InyhvQk2W})XoL~orL_w`U%0^!;9Soxe2&VRx64*}dP6ljb(-jpN|mrx=BzBk}gyFy^E0xF+C?xq99lr)M7u{#BN*d%(_nP4Ri$Vtk(@&Yl9O>9JY zi+APCajZnvh>*ctM6oJQ4kY7CxxhUoGG2(CGO!*Qp3{`baKZ9Lh+{V9lfjQX!~_G8 zAdw1CD=D0|ZNVo3b18Pnfb=}%e7&SjC|0 zrVw#YHpPz!C{0;I4lb0$NXNWF*jPl@Uv9P#r!$qID{1j#Cvi zpDxGw2^(6CV$_w;U?hz`l{lTX1*aAP)0H$+ivv?r!LB@bs2r!OrpPldKK^>{vAyW})xQdy;d#Y8Q!)T%Oyl4!hBXB7`t zVI%SsKpSdw>vd8{sa~fHjFQ0VZ(I|0JJFG(#%^H?+6ie6uAR*e)v(Q#c`4uZax= zmuE>@VoC-qrFPMbzHFectW*R{Qs?crzG2XHlH&4egb2cUeL1)j8}&&D7Fpe@$~3_4 z6b{Rqstlpttx}yMBE$#@-loo59$mAj7!lHFqXNsLRv}Y=)=-s1b3Fq0Ts8Bnbnx(o zEGNXd4AqB3Z$(P8Og_-L8tN>FR%hBcBZ@<1t--fY2%0nj#Z{C*w;Jdc@`J^L6xOI4Uk~00@=U=N>}1^(+Q_H zQlJ~9@X}#_2CZu3(0ER;J(Zc1#;XKV@j_P0!4Rq1Cr4cmqBWj2dXYkKcifXrifBxx zbY?ltRw>?2DP2BLLxIcxWyC@ZG9C>N1TsM#V{ zyNX!NltcwmHjU-c8O5eho39=# zrz;2_%!&tw%Y(&vt#DpQML94* z=^9H#F%M@x3e-KSS5b`$q_!oaluNS+s(U~&B+MuJ>SGd?Q{^ag6?rmLdLdTF#g$aR zd^xx}MvK*B#lQs~VwO$wRXL4ceC&jajA0=E6ci_rsP`dh;Y#JGo7&*2K~RE}rV%2p z73hQzQ2s)kZ!(%NLWOx{h-)DjtQ=9n!^xu(QNe|#W8hvF9=IzT`=FRB1G=BeGT2xq zV(4Q#+7kTlfB*b{VF95fw#j5N$YjefEuEjzywcvc(`d_-BwGgJt+7lE4UQhEqt&K& zdrhW!8wNQ_OSiX{21_H^k*UFw3?W^}POaWCAayh~7!p=CQ^X*xTKyi&I6l(ux9kSa zt@Y2Zrb$Bu_l){wJd`AxttFFLsbsQdq(qac!DOlm^rg!3HPBK8`7G3SI?+R%e$U&vEeZ@ zLn4WQ03IH9=dW_WmJ}vBap58R3LSL~K0AlC)5- zyJLVLoCx&y^b7C{^bcrRnHAYpy#rH0Y^-olzkc)P&9j>`J3JA>EWTVWU@xL*0$4V!_Z9DFo2&mbeYK-8jOoYi`;T@LgI=z zjKKAV+j<&wwYWQIbFzSxdxvzX>(~CzBk}L^y1xn>yCL<$?FR>D4&hYm64TDSxp{Qm z^AW5e%!@x|Ph7&%c}H$FUAA#ok;O;%D_H~2HM*`o_~fS0;m?Op#3wfAY`*I9w!^RU zcJ9|v3LaaO*RKmrpFaJw-rTAqZ@N94cA(gN(!67f+umsxdGw{$nR(OQw-p%NXneV@ z)BcZ(kK`7gwBX#ivG4Lj)vLQEt9JRVy^(coX;xdiqxUpA47D`BSG|6~?XY;;F9+=m zk3XvUWsO(k2)*Nxw@U0&-0SlmxeGsqi=+PhbL`0v6&re+vHDz%D)?QM6rB=&e|qtf zv^h)!sz%PDH{_x^+SXmVvrI`7k#R{y=KKMBY~KHQ(k9@QW`)xFT!1;*1(xp8o@K%^ zzEv9*YrMtSrTEUTg%!Wp`Yv~=swUf0KQ_?N_`+f#inT}s>a`K|x(%s`zeq#s4T7ah zYLi-8Ec}x}4x`@c%5o(Klg<)Hi9=fdCQpaPM1Je(e$Bzz9K#;&RAky=AnBl`jdX0& zrmcnss~6dm?9u$1)JQXHx?ptZY~i<8Y#kU#Dg=fG!*^)E{A0_Ww-t$lhG#UGIZyq` zCAd%2rE52r1g?nJ>yW;HyXyLx2A>syCZQ$!$NfIIcg59XV=Oh7_zc_p;6B&Wrru^` z@9C*^0rRg7z4h_x^g~k<&u)A6^w95Z&zx8@I>lwt$n9&c+v_|VX_sXJfGfe%q%lDt<9bEZs|HtRUpgz&X=Bdw7j|R z_8hKzXz(lZ(5H#*?QD-789dqCZ6iDNu*s0>oGqbUrk`5ZntmC-54Jp zx0^Wa@+XOH^IEVzU2d(;jfe0W{e=lJuYN;A(y|Kmk8T4CQnt%@Bty zZKDn&V!}fJk%Vu^%uqr2Z2XhMrUM)3)fVVAH997YV@{eX&{9{9+gb_2RVdURJQc-eUYT+-{v-Vz@*t_)#h&viri=PTB%Sa>J)knT3Y=%P8+vwN00)|)5iMU_|T3?G%4 zmGbnyCO_AT-IKd%{Jp5MA<1P{5#ysm&tKg6&SX=3%Em!m^vkLeE|0E0F+3|Tvxt8& z@LC7M`oVgUr_&Fvw|gZS?&-X6$I}NTHRCo;{@i$6XT|50oATVo5C3?k@5Iz4s^}n_ z6RM#f1OEs=GR-M;x8csL9<_y=k9gf3HBVk-rnm2t_o_befjd8s4-SqBTyEj1x?C@;gwX3Z)v9073vIrUrvFqTcJl(kFGB zaYIx4M_@IS8rPKts3HMXlKyF&e+gDUDn>L^#Wqg?s1lG-F7|(bbcR)~_uAA94&PA~%hB9_E5+&bnuDJ%G~5o|oM0)=&8)l`Bp9$) zrDx^8ZT#?0p^NW+9#JHG=r&1vz3pV^;hcTCTX<2=?n%FZ#Qg&13_wr+9 z?fxxwRW?q)<=NMIZCp3WRq5)mM^+V7b|&b{lvtBBVeYriN}n&+tT;BhwCig7@_W{U z7t|UHbka81Rt>I-v_0M<;;nZ`iLz&df5DuNvauXlo%@#|!8Vrs#QP7XJ8wGq?4{e| zT}Ez!nk-*Eam=;njfa>q z3eB8Bzd*UDKi{F*qLd%Qnf`wVXZkI0hJsH)mae{mKPXegwCENv>rM8eexj-0t@$VZ zUhaK4#J8B{A2Drac+B78+EKrO$%B56b!-=RJ;{V;HnsMk`LCBloi^!D-Nn6KAmSa3 zup8JrH;&N^>SetmF#mU;DnGv!Mc2-AgQ zr$)S(_xbd?nE97_EUF!lyy>oXM@P<{s8Wlgrq|nD`n>nv$;O={WFm&Kc<0V)I^R^Kg$S%#hX1h9AD94`LxomWf8?%8x}F{u3os_;_)`K zu)A|B`NR5+e6T8sKi$*WXqZ*r!N%2px^ruNnR|Sa?%r3rmKW8VSG%XIO6p(hu5~|Q zo11^?3fo(E=AN#2ztYm_g8UrcTJw+jql%kxjUuJOZ*c90!1Wc^N?+dOADr~Ik4A@2 zD_86ajBywqUH2`nX~{`_3Y%!M#UvTDL%Z~#sMoik#-&CPEZ`S7lRhnBc5yVA8o;|A zWcOw$VrrOlqL6Ji824;-NKjn6p9jyM{BJSvo56Hxq#~uc_<6Wbwx=;LrgjvAS*NtVVT9 z2d_TD=wvnXe$+?5_*aX19K2+tXuQ+=!lHfSmX224sn_!!aCY$*?E@PoKQ}Z|-aDmP zGS1@O#5Gz+I#;^56cNWx9j_YlMw$NrY3fc|(Kusd-b9-G{M`wU=r9l`U`rEkqEOI@ zW6x>D={R^f(7wNevx74v==N6Y^Y`HxVEq6uLwzl${v5)=o?}GUbe6Wh?$DT!*ofJY zA#+2T-)#HMn@xzQqi?_qpE2`977+?67(#HIIVPkrbx~dYc0r@&g~Wstv+ZK+qV1Yz z*3)N>3}_yt`IkX|i;!2$95>|InP_hp7GJd){rQbma^=3@zIWR7-8ZX<3~P){n5bo) zV6$mh>67t~w^mtS-+63H-Nq&JlUKCS_sspUJ>=lF`!R)|-k!|tQgo=}D+c+#VZ`fM zHxtuMrd2wf-1g?|68`+%{O8@bS;mbWvgy9@I?E-ES5seko(__yE*r@x?N@osx^l6v zNy5M{Lk`M!_8-n3<5tvr#P74LvVu3Lj2F4dhvDIrV+Es zKdqJ2hK<%_UXFi$$%((~vrWZ9$B=EdhJyNY(wk;3{tkMjKGp`0W0}^yV=uq%V4$cz zozm0N*fqFTwBU@+-Z!TnRA^oL5cjGXAy>dsOTR(LUaR?Emihkq{6qfq@=G5c`&5j) z*rAmi^)O!Xp}y9&&bQ%2#$YSUX=~S8wf`0&+lu~zkU!vjnure_ewvp?TEkEv6GSYF zO%7KhrW*-~`VC?-Nvb+F=}sVKmsW^5CnlT%%;>OayP4s!G;VrO*Xhb~AqSC8l7W%| zY4)wSqk3#;h#F;S;6w&c3D6Y(G~0_L|4JT*G|vz6`1N{pV+3>m-SuM8A8J}Zkh8hP zLL+DE1^opEXy_ELSpR5sA7b(vRnm@m=WcBuJ#ttm>tm|V-hT4=N12V*vF?HM+ZReZ zoHChk>%+Jd_xH>iV^h~h=4nHY#*UM@@Rw~Vf0VjlRL419J|}h-3bv;t^pG|V@(bcR zSB>p6uW!(=yC;t!18d(4ZfVb46FX^&)wDZgP;lo|j{P0>l)g5h}Vm}~v^89C^5610X8TD>xMEi%lH}&%(w{I~y!IQ4Ec1fFX zK6$RIsWlS_JuW*;9G=puIE3_m9M^>6H26roH{OR`~cs`24nA zmqxdc{|#kKp(ITrTetB>snN}o^dQ|OZW7nD!GDi#tz)z$L}`9Fs~MJn!r^2nfVUZ@ zm}&i5F8r@xu30EIDdhiSj6=d|CZjFDbYnW7c-e4v@X|l@qkMPPjb1aR?6^}O*7;MR zhQ&IeWyRSym~Q8z%}%)fX0E;NOONWp^n%`ObLHlpZM&I|wHS2m-cy~UkF8_NEEkw? zW_EuSFt)EB^Zp#|HlynHkG(gRaeB$S$d~M4bH`1uyBjpas%Yf3g^r^uzU-S5z%?B> zZkpkRG0cab>u-IW)9Ln${qMtdx{vJYF)rmB#hz`;=124l7x&^W zzq?@2Smz9BS7Cff)KDV(l76IS#;6Ok+pc>OymAohV0PBRuIEArbu75nv2%gn2>Ze} zN5e*3F6!z(+Mb+!JbHgz^41Aoh98>ItxLLIL+7Fa`5!ah-bo72$l#3QC$+OIUbyTGfz<&E%$ z(yE3O561DdrQ8R=+p^jrOyg;STW$5(os_Mk>zUw4F_ zYCZweVR6vxcU?5j&-1KL_msvxYcn(pyz6(i329y7aHzsc)?j4U6vk&)E5@A8Oexu2 z8D(Ix|Hg}pGgo&th&5S!ZBWwkpYLBNO}pWqXM99BAx=NUZiSZcwd0m2nFBhy-SO$* zFlUm0xzl5>Y@#1I=De<}=(qm&OPp^$xw!OR!RIvj!O(evy*!!SF!IoGy_b+E4M z?1kC+KF6;`y-a=b$#SG%!rUb;Z+XEp<2PQdJX7tQE4^hQ+2~~`c==Ao*t6)_lmlnC zAA1|u@Tixy^-4FxywTE5phEh6fu*-b}7VVvTivPV`j)0RwT zT7R{k7AKk65pNmNA+(bG2YX0N_IC}gR^c-d4eb`6YjX5jUbNLfthD^34ab1$L~-oN z0r<~>bO`<~R)Us4-*F;t-_ChMc}Eym$LSuxp$8+wX?o?BYGgs`gRtjCM;s_6e@!tb9$BIc7{xOg(vW z`T2PApsC4`mCLUFmbf@|Rbgf_FWSQ9WBKmCu;hH2^MP(ADAVWJ2*A% z)YRTj(^Ahx=66zhRxOTMl-uuWYJ4p>@v=;mfBDPO4_khp8E9NT{%K^OS?{?*x9oM+hTeTO<^_oY$#Z_H)GDJshi8#-RgJ5Y_~eueYot?e*q-&W;Or- literal 0 HcmV?d00001

    Lgd1-C2X?UU) zoc|kVdib)@&VPn&5#3sEu^pFN*(1`=bY0Mnbf#6~r3EY26s?DBYv@mBpA4v6!t^_7 zJtb*2txF{>HKE)+&{M~IY+AGIImh+K&_@ihORIOT zLmj1={jitN%QhjuU8wPPp(Z#B_4=zI)RvijkoxBJ4_V*b@v>=O51RqIFL}`=Xb&hG z{H<;o&fnk;`y6~NyJ*6A9{|>n~zx^ z%=OY6X45OQ*RXoq9mAy$p0wyKVtRwT^hVh95^Q>}+rpXR|1qfrn#oMsAzgj9A8XHGW_q&>*;x*=vpn3+ z(&wzgJtTW1GCPz7d4iYT7@OYiORXwAZ;PPI;ycfxr!2@f`g>S%kxg&LRTjNl*I6Rq zvRHn8#Vnt)AgjFeifwxP?PZ8FZF(-FY8Pg#%wFTFCG z-iwp1_V{kCRbO0bX4AXUq$e%NAI|Vpc9u=7)F$>fn;7movx)V#h_$xiAh}P%ilbrw z9Wy+k5Wiadn(_0e4o_H&UlV@)&>2h*0^Jvd6E{k60Zg6q;2hi$g^wN*PyS{Y&P-V^ zzh}zaZS0qatQa$KNJzkMe3(^~UOszj@->NPZRnlweex|h(mFgT&7Tv=O+nW?_Wn~6 zf|2|N(eiOabTREWNWd2W8FaKqFC1Wji(J0!dpZJqdleaftUOQo3_2g_Xa~ltCI+28 zw1rPd!tu?A_>-Ueac3w0nS1?v>pPSU){JrZuA=(qlxzEIQG5`I1BvJss;Zw8QW6rb z#Z?@yoQe}&TC~1vwd%SSt-7Vp4H;tElZPkx=k86;`H+so3E_h+91iouKjQ|nf$rC7i(h+ox6Q9X%&$XU_3*1J_;p(UlbK%)A9?vTJx%g! z<>_vIUEJ5=m%_Ni#P}WfHTa1*{F<|(RetruIXeg9*Q>kQ=9iMMch-6MCC?K#p$+W<#!_fgDW+M)TO@(8b{G#{+FW*LnB;Q7- zn|zyy6STI7AJZ+qDU5z5#_zzlHy(|{w;oTm%C}d40N>1i2jJiMuU!1w!}@HNt>Y=QD)CjG2d6N$n;67bbt0V7cfXRpi~9F&_^tYG)^g%&)UEGcK&Ng+ z-_7{`!2LIIhl`)y@nP8t;+h;Hj;eEV4MPN}ydyfRA!7S`UQzrr+~r`|`jbtT@encn z6iXBp#$QZ~-$4{d{ymN;>gd<4u*vsnM7xtTZMWQ%zUV~UCKJ23CCN8&Iq^jNFR+uz&{{r5%N{OVeEIP@PW!D8;L z_r2)kTwv7^+*x1z_*A6?FM8L@ysEyEdFP#EGLMzucPClQQyA$c#_zzq%@4<6UNSUe zE0S0D4NIOpzbnIaei~-<)6)v&b(q%ImvFyac_LY&x6;9L0lMgf#)d7MdHVX!3iAwz zO_)d}*VG`HPp9j6A`lInD1dt{`b0FpcpP1X%tKsbTUT}%U7<1S=KXXW-^kQZq`DZ? z)g9L7cNGg>qeMURp<|HPK{QD%5oPf-73_Fpy?{q3{|L}jzXoXLS14N>JhxgoZ5<~ z@~PZ(y$LTe$}f_}{~PB=HrSbp=lYv$xC$@0ay(w;_}76p8%`if_^R!j{w5m+;Wf^2 z8=lM@Pa(X>s6uh)IB$+QR*pYG_FOq`e2p1D(2?WmD#x3w9ACj}oZ}mg90zcY#Ud>x z$2a?#b)4_b@dlOS%NceZGgXdVtQ_h4DbDdtM~+#XW2yM(SZ^JRtsHxLb39q)Sm4NU zsLJu~ekNBxLbu}_-=Z9+a61NMjteW1D2Byky7LUPnzcZ1F?QQVW^CgCRm~oORk}7JTys5|M2qy!Ii9q9zw!%qL~}DgpSrkyKApjN^{9k|)wQ55Hvfe> zEzV~}gftv>;HK95lMqYT;O~l0KuS_VdT}a3AHsBm83?lw`Vndf3lZWT;*w&7B?wCq zR)qBBl^_w)Yl$#o#9YK^E9BIAf7cEPJ8_8^=H2R?4^;x(8S4uUnV63Ii}a4c>O5c4 z&h8;PJr=J8BcoHr{u6PFPY}0BTc-}cs~K90*uFFx4d{oE_PvX8iYy}STVQN}_IvQjikAd2o z+YSvaud)tI4ospWSRoCcn})m!W&1mB7*}nN3A$|fe{;h>fL8R5W&eDTrTy^7=wRZ< zslF`Qd-0T9BftjuO1Mj%27korEI`BuweI$oBii3*%fW+A9>Yk7i~lD2(F&T`3jU;> zxG9|yBBQg!jVEvu_(R64a_9s5&+7ZD$$t7aCS<(MtUp4PaU>ic%=!_Uv4)0Z@`3ax zFNv{L(%B@gJ)YQplskb~zKPr-s&Q$y;;7}^-q_r+GuuJ)OpE68a^3gfmMG5K^hA_OMjQESbh|DX#1ja*|M}_%LU>FKB)e^ z64K;t=6j{>uvMJ2oSOM*+03$=PluI}TvH`AZ@={z0IY zQ12f~0VeT&(gyg0!!Wm$7l=Z zU7bAc9i05dJ@0xtR3#3*#z@nm(KVyEp&;>jh>%zK9$3U<+$n!G=W7p1<0gXM$Rpe7 zM^pEhS4rIy6Opvl&3F=f?=6vTS+7KzvuvVY1 zV0{3NptlyHsyOH1CTilguP6(gwcQ1Edo23HKe>5z|NKY*GE%-G;B#E4sjw~M6u!pK|Hy4joxgUx3eY^iRu zIYn$ZhE-Q8nPqC|JaZ9*L|V*;La+*qEg@+w54n%)zw|^12pP-p9b2PY8tR3CQ&QO~ z>W;J&mz`iK7N-3;m<2BF37L9J@^J2U*vUIbIw+@Glr6n=iA~;4^^gyNe6=)(1}4}1 zhXhs5Z~BAU>Ow@tt~;3jH1Qy1ATLI}VkBLRD(4^4=2a66V`3J#=r_5T<>q3Bs63jv znC0MNukp|xl8bARgT=+3_c9j?PEcGN=BR6?RaX+U8&fPU+6k^|mQORQ$oB5B$}~M2 zbcllX2lNq?p*#R9A{ACdin1a)UfUgzEI=|$$aUt+=ct#vm@l_at+(I*_SF%wovZ&V ztbHcjZ|d`T(u%eHZ$F+)b;3ad>{Ut^eQ&1*bo$?R{Fz-{DQ@M`@pRKMupTYpQhF=b za<(t`v6bFFnb9WE1s9XDrlmoJ^*Ein0n-|B)_V!3$U^z7LfyI4Tc{pa$?;{R&t0ew zi+OPIXuOfCK>ZyB!cqZhzDeAOOFq3C&mZ4;0KIoWeJ7`p-|;kZVz<~P*?AA~W{X&N z?>ponsCvlb}U4BYL zD-_Qxb~lt%oc#kzaR&7~&B?n4aa7?i%0B#Kh;IyMwmrU#*_I8jin4?QtFnWGxZl;OypcY$nff~s}>O-o%-w1NvtY7`s@56(+)ij66w-k6IHg+<81vkNa?S9 z+$qZX>oXLE_18Z=g&NF-GWA!McxR!vP-$1h)nAh*n}w(ov{ks!-42 zwoWe8D63GIAD$tMM9h>SYwl^ycRiUSw33Xu10%k3oI(G3MBEvp2`%RgRZAavZI4d>WU6azXQ~ z9LYOt<~WXX)Wp;iy(WC;TTBxkzEU^iH?CsFe+$2YIV&krIS#XO+)m0^Uc0lMa=esB zvdNrdk$5(yj&B}q*6|*^>T2p6RF1cpIl{4iiOO*kF7Bi{mS3SJ3}#kSIja)!=tDny z*m=eAapwUUDw|X@8@SZ3RM}jvvT@D>{BcIb_Kk|z_MP871$dK2HmB=su0`6K0{qFQ zZ>PHHOV@=46UA?uDAp)29|Wl;>9}jOy{-!>KXLu>a^k4`@kexy6`W6Nxm(_N8+a0V zMmlO`|Jw<5&XW_%AHN?5F|GEan~9L_mJjyFPnLSm;g9!D?<{|Oiumd<=iKfsxg2te zH7hBFyjru8;i`x$dq8v0+%DkooOkR)ExT3DZ8nL|J5kF@Z@isAoR{8sp7Hdsl$xyK zTpu~(F{!g0{5VKUkyI_ZNi4AG+NmD8FMu(oGAU=hbvP)|Xm1S`J;KB{x{1W}@Z5Ga zrUkG|GGqfnl<4( zV~M&QH*-qVgIWwQ?e)0wn+-xt4Q#LB^_E;FU6v!j(NAWYJ*7mTa`t zcxB`I=`0(?=9*Q5_^gLovML{F6@R!Y{$21quteODwBpsjPB2TtekKz+|U8_BD z)`X;2$~7LD_bghMwDQ%T))FrUmS>}qFYu8HSQ>>AF3(Y0o%hB_aYj)!=CJupL zP9qo9)Z{)nV2Sj9^b4Tr@XsqA*L*L*hkQ)yKPi(SC0_n)A` z(V@AQ@blq!B7SN3 zoq}IFey8I{3rhX*%fRnUT3Eu8lC?4OaCir`SjrM9&F zbM1TEv0|3^=U>4+$hx1d^{kX+UyuvR>c-Z8ccmP*^E*$%u*VIY^8GR2ZAXLuq2~SM znqTpnYfU*v0=#^{!$FQ3DFCZXzzl2Hy%F`yw>sJv7TENUe8zHTn?}^ey6S16M}M zIqJ#DHDP4NbJR6=7i=!yk$y{>(_^}9@`0_LC5!@Kmpwf#_QwObN zn#Htxu2|iYIww)2E0jtK!c>Gl(l?fhSVkn2X&p4~B8tHwcadzCb(7mi<`XDsXHRY=ij8pRImwC%F4wa?Smq z&a5Mb&3zBuL=I^>;LNY@K{RO0uLXccwbN*!<-}XuoRbcj`={(@Pj*n3*k*MaM5iNS z$F~8hCMyp&YXVXK5qVLAc1$wIH*42Ye1D9iw|o4LRl8PDiLr&Fkh}hUY0UswmNUfS zZHR?;d|M{Rw@t!7-@GaIr1H@`wjZ5BZ9FLrI|vg4gSm(KA(?+$!96S^7|Fv2eQ>X! zhZPbX^so#XuE#E+B{b=orztlZ5y~!?qMDXm^Czidho$ZzQDy%nXWJXuvVH!?XCI4uh^^$ zTgI;$6&T2Hi8Maj5iM`Zfvf{qM^!DRE5~c8JQ&cHBMhv{hw@NkSh3iFnqys6z8cxN zJ*uBu6HTsJhjLg}@JRL9_)|$h^-cs%MCI*?!23UvM9YbQoj?-pmF{wy9E)eWY~paM48K%Aa}uFu*F(caL+Cjx&n{@5dkUHWhO! zu9qfRHq|`2N}EXns@AU{0f;{qQ%7xmKI@!soQodd9gMrr=kh#O?b%;;qnytQ*{I3{ zkK%iz)l?EO=SH`dlJnVPs^zHMzWK&+`?wX^SHbg*N8o=`GXmHCva9ED8NYy^fDLx% ze53R6Qjn!i+$6g1vD(p2u-Z{km*$t8waZ$@?k`KSXj)U+)jwE-?Nm2mxxdWmq_Fpw zbpb(Y;%eOfEDP~J*k9I;`NcSNO|SkN5DZy)O0Sd#EBQ4!_sn$EJJCZ!BAX?E>_DW$RD*qIFw;hq8F8;JRQTbK3fI z!3wvn|0w1S>Z>PrBFTjO=E*5+($*(_gVTq8LwfUW=uMZcA9iJ7+4=!HA2)_OA8G5m zy&2}-MgxSY;Sa?X)GT|BMc{4JAZ^Kh-Ew{N>;lZok&zYJ6U(%tTPpE&gg7QuAWe24h0yUv=8NbiHWrFx$nmN7raOrJ&1 zxwG(lRMei0^!eJ-M0SE(J0#cCQb{Ad$DX!B@t3(e_Z4ZrLEx%^z|)czP?y#zqz#M2 zsbb-^Zf?ps$zc~*bCNv2S)&GVZ3k1@Y=_$@Rhd()%0SY7p$*1p@tOM$AZc;j4+pWn zd)}^CVS7q$hS(&YyU|?Vr3FIg7P!bsRJf6Ho%{qADSak)If8MQ`!Xo)ospQ7IM*$= z{k&f-2eQOE)-C_2GVZ;9yS1jbL}s-~O#AsA^;#bYy1l07Tz0;bi&aE=0H3X;h#yM5 zh5Dx|RFS(-?^}ghi*|M``_;)E51T|7J_vK6@g7yEw|_DVMf%86PE{l;(gpn>mxy*? zQi)QO)=i#ZlFkKLh;oZ;oqqOoy1RLj10^5?R04!5pZ@;tMb5uCS|t5yz=JAF~bR)OBOf z*lceNb8539(gwvEF3~HIhL-8m)r|G{fN+9VwM#0VdVd(hHaXo>`f!S7#dWXbqMJ{V^e8>14>=`{k#v_JOnFt}BV7bJJ>p zL`>~Qi>_ZlyCSfv6ZjJ}-XULA zh8T!h0MExV#P&w`t+4bWS%9XHpY!ns<>OR|zr%c9`mUh<#>+Bp73Y2rA*BW1jVn5Y zB0LF!HymE@tMG*lJmD9cd^0W7cIvay2e%~FS*E;ptitX*zU)?^7<;S;| zFh6F^G>s>^7bUsIR`GvMC6?esdbSBN#HbQ4KNg(FDh%@KG@ZupX(uzLt3tf}z0Hh; zGTTkU_w50g0ikg6V;l69GhX|?JHGA1gVSe?pAggB`YdzQ;;DUGYo4(m-Et5zM2 zgeXHCdxck@{rxi5XN2a~XWbIw>$C0B<+DXRNo$<47eSwOlbLN1E#I`J&r*O9N1v_y z#L{POjNezEg_~ma+0Z$}&#mHzt4)2@Q|hx1~19_Y<0AAi%G}gcH5i!zja967BO6fB!g(BP1_5=O%6wK?3sr@=%&h1x;h&9gNa)ay_ z?REt{_<4L+P@ZKKTOab_E$9S*{>=qQ@09_i#|+ znE-v|B)=mk*9zP9E|58vQRr;%X5xSBe&=}h`Y<}z)5HEH7n4YC5|3Wx7~gDVzM!vE z=HzJN30~EuUS%HDSed(AYYn30+jc7RWL1Jg;m0sXw#71AtnckSurdcflAlZb$LFUe zgad^e0%H=^ZT63a{pr)Hhus>=O-RD3;$;X!#)YXNZQnY`s6I{^I!-I@Ljgo^&9 zcy!XIxJ`dG{3R%Ud+BffHb=7ONra02U-0OpPjQ?61qVt0ST6sQ2u=EUbkRrLrY}!x zX@B{5eb4289igKC3Lc&GDQ?rho9w*y(;up-_C=`ZcgLfXKE-YNgAb1W<}Qjq2u=Rr z(MkU=h}-nvgMK}T@=sFjJIrq1Gd=A~@$yqyKFe+*(QjMir{!{y&qGMvX#_&EyoaGX zQM^12eW@%X)OVvIb{O{`4VMzx{pWcoXQ|WjXr!MoZG-oex06u0%oD((>N)E9HkW9CgpsM`B{JevF?bwqKy zy$`a#Ey!m2GY~5Jm*UY$pW-(CgY0i}a#Z;dn&ro%lm7XL+w>2zzbzQ4%8$@2KOUX* zFGbv@e~|s{16BSP?ehQAQ+|ru^bfMX-KXf^WYfRaL!aUY)87tLEcr_Hw@*F&jp7H{ z-wuU;=|KJMw&7?A^tbB}I{Mq?h{o@47b3;(Z{I=>wr704DvujHgitkj0FTZFr?}nU zma&3uXMYPR{o2pguP1u+E5+^hK1g|5@D-0gGZ32cibrShFGbv@A5We}4DNhnEB3_; zXk0R1?nkKT-{xq4(iaquk*79D4j#cIk3&fMyE{U&yrjP=?v^JIYg>P>ge&Mk^7Q5~ zmZxVBI^^kLMB~fTJxH>7{y~4)`pGOf}N$*2Jayx zhP{E%q(=;+xSL@h);7cD!BrHWVb*x}sp8il|t}Yd#TZ zr@k73!pr#tLdCBm9rYuAQQX#7}M3GK4qR>El#zj^HW-kYj@o^iL&!>zW@J+AhtYG?n? zr)ZWF@KL<{6sq8vsNmGa?W*6q*gkTg`gK(O^)qDPkiWO79C7EfuTe=X z`D<_e*5ECw-+e?E^}8LRvwjpm==%K#|4D20GyO-AC(=@|w1I_=W>~yheXgGuI_^u$ zf@zJT!!KNc)Puntk-e+QG13U9g`C^gzBAhq9#y0|O ztWPF9h#STwMI@|SjXk@KSiI@Dvj^xr`-GyqZyPcS7$3=8N3BJ};QJTgCeV@V{in#& zhI5O-Q$p}b)kMpRjGAIJvyOB1M?-vTN)XY8G?bmBMedN#)h|{8 zlmd~K@sLqdfw<_6a%e_Pn9%jSbfac5p74#KQFFU|7$o_6!%Hq%X;VmykEk+Af*>u~ z!=$v3SV8Qx%f@uhiHvB@(Q|r0suDjufyETrG>XsXBqc1SyBs1U;dGnBN25_a>;;xx zplUt!4B87!enPSE&chQHWB>11xjyLaK4?7Ie~iQv7YySoFdY3RWPG~@StMYo&X*I( zAD$D*?!X($clG}g4O4xSz(&RIfgx9N5z2>j^T9_CEadlI$wFQ%In`}Bi}8P&m5?vk zWD0pGO%wf};p9^uQ_}eQ`BKWCGtnmlT}k=1>dhb|qru1omh#o_v6NH7htFA3 zeiWp9%cF{JPjr#RSg1t5)kF!J4@-?nBx`dLyGnscfnbot&{{&t+xV0~7JuOjs-cTX zDWH97Ci$qZcP*wSmB7f7B325Mh zuvW+WvG=(+5*cLUou$o-z=XbVO_gv@b zJ(~C}y+_)s{|fxide01$d+gO~tA@q&o7U~sp=k$cukO5R{YjuJDSt)1NoMK1Jcqq{*jC$KEm&zuIoYd6m~^M0i&*yRDm0&I zuWtUiON_m`iZ0BRo$jN5Q1MOE6l3@HF$c0&H*MkeHtp5FW^jAQw^xVtl)LQq^b1gLA^OeE90+-XBG@fUfx}z?RA^`s1fR8s4u&QV@kNBmmqRiPtDV zF##~0ekDotLjMTi_4MS4b@GP8jDYbCGy*toT%4sDw;(LTnFT{WE}KN>JZeT4&FBzC z73QX`g1t)N3JQnpDLX>b57DYOphfV;&OY?ny-YGUc>33pa+*%0iDdPKn@rmHeP4-w?!< zu825ZBs%XE)bsMOZFVEgEQw`CGa-}&!JZQArv?HYL0i4P$npK|MeD?N9NDwj6j@Rp zi9c#A2$94m@s_5K!RM6$K0a6KFM!#tzWNN zli(baOy}uH>3N%_=hfhlZ_2+WchcZc-yef(f9-T$q{kkV5Lopt=|R82Wt{bv^rVp+ z;l06V*C5?FpaiITeW9b}*NG2sR*%*2N&vw6X(P?nfBJiB{Xh~Nl{)o=09YUJp-HXg zr28n_)t;MkB~j@eotcyqp4k;mI~w%Sv?*W`KH{C}!!KPkMkEFG>=a}hNPaH6M>x>c z)z$&y>jM2cYU@>GjZtv9gw6~=$;ni zBR4#C5W*~kL-F(DHv+#L{6-e&Q;UN2Ba7uY1SAc>k^=paN@NqPmuK3WNu{~rM<{os zlEy?TjRz|A5o&87tfD}Fq>f|jIo80j%^Yk)P!M^kkplhH0{x04{LtMKA84i#ZeFuY zc%%gZfI0&c;Jrh}w6Pw*G6tqFP<|g0NxYbWJ_e>EK*jtCcylUBM7hc_vZdFT7)^39 z80BgKePl-RbGe~Fc;q0!vJ@;!!G>Z#V6J~EA%;id65re)!T;7A3`3r5Ck!N@30Ttfwcs{oNwajA^lL0k+*7E&Na%YxR_QNd+d=g}j`pt$ph zvq7VVII9xrQ6&q6v%keULaqo6X({U;G?L-J z7eV;e^#Tzz;9oa#n{f~yM(qNOc%v}}ak&PIGNl;)?AZ}Nf{N;~5Dl<)j0+Rx9rNX4?Qh`((n?QxxQpMr>(HkmMp_#c*!dK)tA)CXKG`83AJl@ z2{kE5HgeF!fsjE}GX;?U-Bj8o#A;2iq7DP#c?=}30!SSOz&|oja#ydS4kHbTCB&)l z82^UAhz{W~kme=ZK+7JDNI#kOu3U&PPo9!m3iZ#GXM{=ZL>HWmWJYcXBqe0-h0zC* znF)0_)8`M*OveEA)Gj$dp(oBn&ztGTj||$VL?0HlbsulZh1n6`;-6Tig>IAt4~GP#X828vM* zsh*q_G;Z>1MtKuiGI_QclUt15R7BYb=Rd{sqAhk@WUM(Ki3wB5zfM7O|7Y0rG76?>F=pJk7hK14e>&pHh0N5{3ZZU0@YkfDi}x=NO(wQqCZ3`7Ye!- zfmF~)A!VHteu&gFA(DiI^oK|X1Ci9BiAahXh*BX(5wPrwNZI6(m?f?-8qSdqA|` zDm=pQA`uHl7EvIsQZJC4sTb%`z3>l-c?XFaUZ6mngBM_INeT0sP>TqPqXQ`rWB$X& zmK3`fOo9TF0&%Lsl(HCuNl;)?AohRGG^L!zU=kFV6o|JJW;!BHw~93277-Mf6o^L^ zW>#EGf&!BQaf`y#;$jjMm=uWd3bQCKCP9Hof#|C+OX6Y@6qpo<4hpkEVZttk7f2eK ziwIVr|D6Ky-e;0WP=fcRRf4_HyctfvfJ-B?>kv~s#~l{Zb((p$RK1xSH9a4CFWbik zWPVaOKV8qy2j2~`~?P9NXB8g8i3h6nZq%-ht29llwFpGh68Ay5#K#hUdFp%^dfJF?v zkb$J<0Hl^fM!5_mJqI8)lZFv1`I#TcsYiBB#zk!9w%6Y>?kv-m`RbE+wv5ZC@;mv@ z>K^}ZwO6G7?Cw)wf3)R4yAKEPxQtEooc6X)uS~Oj&TIPrt9^Wr{a3foPiY5epI@%| z?d>yYpllzvzw*J4WK;cL@mCfvZ-~FX@!#RE9DLFN+HWWhjX59W_advJD+N8J~v}J;m2Q(Rr9$c2FMn}fH>&= z1J36LK6)_oIX)A>Va3p~FdM{xajt-TE{vv`&NfdzueZvUIjErlkM|C(yJk zeVQMEVPt%Z8g0NK6A0=}Ild#1I)Qc7V@S|kb=#SRoFCq^kKz`%@EoWn7+2B2C z*+dfk3?y>~z&ZqC|5KRk7<}Y(34FouFXg07hmW^wFfuU(e%Tc9+9A@S&&!&Mg}@Rd zVZxJ>HVqGhVd&?bV}j2y!9xf<)C3PT!NUlAt_eQZ1P>>$-vndc#I$MRlm{O(XNj2; zgR@aA_8n)cVwIXWr6$fy;NWWaQ57N?IOehAl9E2J7PTfs)Nvm1DrhW{+;Q0Qn(-=J zrv!zIl>%|-ds5~W)gfZLSg~pgJc0%Frzj8~H%dIXSo!XBY4*C$k8IW6-Pe~TWFuBD z!}$=9dATOdOBgXpVkIYJE3)nlm&dN6Q#ByQnahKpk-m-6 zBmZcWXyxRWjlM&SJ4DlOPFhX);!nQAK_XY4#3j#)>^P^2-X!9QFP0%9w zN#d4HvMc3g&_p+!P2PlHIC~&OJ@-rooynj~0u5r&AO`)BKxZ-NEC!uzF4*YV(g_jH z9*TLmA6fZD4`hX8IN{-$&o03Wp>XzeKp-dtL2n^Q86Xu5sbI()tf^GWDg&*Wo+P}Q z*o`FOx5TfeCr%>fBZ;`rN%X`?)D%dfw%{as;v{MqB-J9|Bzoc`Y9=Htx02|Ilc>?) zL0Caa5h=Ukw2smt&_p0~W1g03bQAZeBx)+5ZAZ7HX$~f&vixmKNV$Jb@a*W3qO7NL z5B+Z!==zZK6``rnu@F24W2)gF@b#c8PruxF=V7RR22zx8Cvdg!m=Z&I7Lx!=OJf8(!j zZIfPV0~hepj;^y#Vbb+j;G*tVA4s7PySgZtS|7m4QM}a)hEX6(>en27mJfTq{Mi3x z+c^Mg0G1#uMOcQg0^yt-R`)rq?h&K@ix{aK#7NN~Mp_0j(k+OQVnNx?e}gJpRf|}N zbv|~N4FfQw&nOPDQG|q5oLbr;{heMfNKo4C2?P@~1n$T{59$`X{FrmqSrkKza z6M7_|-A!nB6M7V&Jxpj16WSBdqfO}1CiECUQ%z{92|X6j<4ovrCiHkfdzsK)CbYMP zZ$V3Rwm3% zs{}_mZEhNkKS-wb=lAAHU2Z0mKp>d}!c3-TGnpg=$s{3WGCiBgQe=#U%PHAm2?mY& zps_%%Ck3(3hmyst&>&%0UdT+Y75R8cAk@kp*coi%2dOZLI~?rnVPYn>6FsVBh^3_7iGyKjGIz z1K+yJ6;|5(bsSc1i&4%%RIaiHqxB)$RS2k7P_w&iSnDgT@N^A0bzGnM%vHB>Q zk3|wUzD~U)*J4=aMofvYl>&>yg_^OfQL<}Q69T!W46YS;xrSYkW!-}MAwlfM#8;?_ zYx1Pcf+n%*t_Db1d9!@oLH(DfC}D#-t8P&L z3>(r|m$Q_xp)~ihO(ZbVPmfuR?39tjY6h;rO8~CoppJtE3L=TcjIxb^jT|&_ASj3= z4r7#N1`-d+vZ?=%ZP_Th#^jnk9=5T*|BBpG+O4$D>1dh)99ent_Sa|^^OU5_H-q~4 z6#P>0^I?1S3rGM?I->Y~+PSWe858!F_;CXWWDwiG&1L-y?apxUTa@p=ow|nHE#Tgw zjGR$6*Cx|YJNGE#Wbv3i%Gj{+vulI0XT!$9Z&1dDjV<4ic`HLSKd>jKMfbC9lM`9pdZVDQc;n)Dw zihoI?J>u9OLtp5F)^o>m2H5FNFBH-T0E02bMQm0|Wa1&>Y7Rx_Cg7f6Ey&-y8&$o1D8=u zUsKD#Qy3__n!ZN%u}I>P4CJo1rj9Xxsh53I_Befw>}rw3FB!-^ZcUTKoZu6cy>~+R zM)@6$CckGeNNHsI#R|LzWj6}bXM2O2+&z(B2!ukhNFiWK;zcM1Lb147A>hzPF9K|i z>{3y{2n#EzOkNzdE+{9t;v|JB*%X5*p}KUfh@UpdVlS+XOH)Ewd5NtGQ!+G$riAL% z6o|hm%(}QVB~-7bK+IN{+u~wMs4f>T#TbRzq%a*5V?)Ap*;L{*##0}dK$@ z^sUOfl=CgAE;;wd$oVjx{#*5~oJGXedWKzJg)otaq})F%Kw z(u5x!2-6t?Gr_J2DVhn_kCxEYwImlHq?v^DV?aiW+|BhKi-c^Zq#qR?>(iGsix}$sqj2)=jyvU0+2j+U$&5LhIk*CA793iabh-+Hydx&o%2fJ|PeukIFw3mTB0X z8N@fGW@?YLKzLjl%DzI9c@}@c^|RNJ1Xiu07`B=+@I(eSFmM|MRcjj&h-I%uNm+MG zAPghdujyd{xNNM-Wfm1(Wjdr`wIdht5?$# zlcWZx*Qmw$HG1OL5>?tERvJBV+M##?$s`0!lAf3(i4BrctR#BkB$6T|rCLe!#7QJn zNFu3Xg7m~mBx6WQx02|IlSt%{lwl>&6DN@b1|xT6QBp*1yAWGo^*g z(aqu?6gB3rpcf>U=!t2OoMC05j*_7Fac>oN%49}&cFv5_=0HOxK%paDJXR-dmqptY z@}Ux$oydkEp-||AS*b9a;$liDHl`5f1clig7gItZCxm&1!juw=qB;i&3Deh5AUYFX zJAA0Ej2Do6vWwn1$~9hSG2=zIYG^wQ7yj_NyYPP(&|Ba9VO^%q(-l=ZnD#WwoOMMLqBT}UDTa&>Nl0A^qD5$S4M4(Da z(g@@tPA}#33Ol`+(9U=_IRoe>no!bsQn#L|dHs5^1dJRTR_L)G@F(0~;8) zO#+QZ1Y+r{QVAyRdr`h77^7KYB!0ob76v9r?YBuZZT?ZojJ+FHGuCT*VG6DtbM1na z^HKjQ-U3_X<8SoRQ>3(H)?qxvXIik+efFAZASH}%1oeOhP$6?GkQENVZU~eDRG~n{ z;i^hB8MM8W2FF%cU4E7ju3C;{y^4e+T=lGcCP@iby&#|KZ0Bf=9aDiA~EvJ)$8N z)N2Z55GmqVF{50^C?yOmW#FF}Si!(b3ZS<%w1Z}hqZ6z~B+&pe#`j5XInvDkv7KW$bq8ehWq-VGt94BbcGSkAC^<~`}Az4Q=^cdXPXQo z6o?~LIf?NoCk0~vmsFG6(}>%EQ6P2@44xHYvqM|I4{iOvu`XytnE$dF#4pcFZM`5( zHiOHiCscx>#V8POn5eRGVo(VRR0_l+CTb;OR0dNGH-aX?g8Kawh?^Kuesf8TkJ(!( z^=~}?&ih@tGqt(CjLwv;IumWKL}$Xna(%YyO!>v(_H3o(os?lib|&em2^+FA$yMdB zAv=@YW*IiPGx2n!zFMG0+#L*R!LZRxRaAQ?>*d}_l}wEp=3SJ!kwHwWueLjr;R7UW z_z50K46c?Mi#ii%70RHRIul~WjB*O2P-g;=ngs71$w2B%022E(m|XiBlv3k8lkMG) zx1QPW-tYDFD!CN)e`UW{>8%aW6Y-rz==uNGzfTSBKdkNjlp&mU(F#QGkkNUS5c81!lI-b`2NuiNkdQtb`OQuN z+SQD!e{zl`GR;P&*@OVV=6_KY=25RjMzXI)65nSabx;5kxGQa7U=m^grZDgy z3`}L9kAe3wFr9(2XGap}GmttsUiUNRwG5a0LSFyYOj|QCR=_ga#PQ_~`rA zTMplek)=SMnP8grSW|+_3;v9eCE{t&!4BYp3a4v|5in&RSs@lOf*fOGa286j(B+bt zxLjgJ?jRY#hk=b^-L^03n^t^^*I3qHx{&EpyiQnnX~cJK7++`s1P6=g1x<*jATAJx zVOAjI``_P6cNj;cOgY9bSvt8n3N25G;;Uz5B_ef{a}1`0>hmZNbqaGEA|6aSNCKbb zL)gSU3acp=OEVTqs6LMZQK~ST<6=rEe@iV!D$E3GznC&gs6LMZ(Mw^b#Kn|QeI5nk zyMJ=MeQ_}*RG&wIXi%6LaWN%SpGSdsKwJFSeI5m3?>|s?O~1)n(x z?U+rApi{idc{f3P(On~VR#NfIwLHy$!iu++7t$}KZ&P-5hR+3(UQmpqRf5I_t?ycV z6N;r!(J44&OE5VPz41NLdnaHG5X*k>;k%Ak`IQzzXOQCt+HqsqS)sn41lRsT2W9*R zQU{B`I<>VYEa+3QMuCGeC<{JjWx9A~uN;*kwQ-p$q1cs3Onqnt3)BjQ$u?k!HZm)M0ipqBNAf$I((mX()S5Myo4{TlzDs zvz}SZv1J_8QV>b3Wz6LaT){wtfvXr;CxL4kWQ-31x>6$GWBnVFBBRp9rWP8@)HWtL zn4NYA4Q9kJ`i39lA5)~U3SVpMfvF7iF>o6L(;1k-z%>laVxXUak1$YUU?BsSFtCV$#SEOoz!CX4|K|3t_S#2koAbPmEK(6V;wV>2REDOPB2r2c zMK004Ga*z#{dymM@MB+3D*}Iik}Q&uS%~@(UB*!j(LzLZj^ZGq>x&V+k)tJumTHk< zS0PG@Aqc}Ms6SVUwn9K+hJeJ(JWS&JXW4;qj(mR}Nf|Jdl%32#k}?465Fn=%29mG= zxQ&7Po}jYMBk2LKiGg1*kfaB|W(K~&K$0E+6PV>MFfa)*08<$FcLt_1(8s{r7?{q$ z3c&e0~a%}BLkN) zu$FY%K#hTg4D80hA_f*Su;npX=@JH( zGVn77Rxq%Vfm;|DX5eB5u4dpe2G$}dh&;6%f!yQ+f6Xdf$Q=lm!vQnVhkfimadraP zk)!=i(*^o0h_zL88^5>$6k$h>_AI0l0+xhE7K)JyL5^XjCCU_vflw??RtTPjRH9G{ zgi_I&5S$}^$oLv3Nnpf(u#yDac$vB!hHW|GhwMEIyzQxA$bZU?ph-utdOapDQ>-04 z*e8G;JbSOBA%6x2V7#w(@VuZIJmd#4Il0_<8}m^xr>^ z3QP(_nZj(2i%C#mQXtM#m4Bq%T`5Tg`kaa>G-0+RxfrZ7w6ViFXX6o{Yy zqU19!W+h`%Ahs#Y#c?qS3Yrv%M-*nQ!Zh9g7+x0=3`PzG;%12#xr?j?*tHahf0x4= ziA+p_rH~|sZTo^OfjD!+(V3VViXi?vcEhRj_B>y^;LAk}esuoLb9+z2BuAduN)t&9 zH%#cqYWf8*=r2f#j6Fn5o+77+7yC5*;&lATnt$&h(vf*ti24zIjiVZ(WX-SPXc3~t zh(5v55=3FmC*IG|3Qd=01p+cF5GQDx@Fff6-TqN zp$uHcz*+{L%E09eT*1KZ3|z&)ItK24P*%Euf!ky-zma22jPh?r5e#f*;HwO5VPFE} z793o`z$A+452i5iUIwNz(8s`e3`}QW1_Ng@FpGhH22Nt2#=t@b<}t8{fyE3wlYu1+ zEM;JC239bzl7UGK3^Q;s1HXSja$*?+YbEf( z>9^G7;I5#FIPP3__14Yi{a=Ltk;K3EyLRG#huh3S|FZVd?}*#BfxoG}^#4g;i$xOK zQyw^!a?*VKB@t~4`LdbSj1eq}jxC07E59f@wh;DKeumgL1L_t}N#vKfXvd^Z4N)gc z@bZre&3k+>FE&2=u#j4B3HSd7+sp8Vo5SBLB*)^N0*X9KxyP* zFk;1_-%`=!=5?{IV}mSbsaUO^H1V{0Qf042RJOObJb6}mDrBCeD$f!bD^{^087ovV zO~(8xmL+2uD)!rIWysTPqDz}p9akX~yE@2f$#09r#~jHo65G|2s@VoaneB1wmu%I~ z%|%kg;<)Luf%#j`ZZcxXP5;rQwOo>XO-xbw`B(}jw4L9V-&BQMHH)*v1KZ@SjNICR!On36+p`` zjgBp$usAxlh{D3?SdBt|bZizC+b1?plV{(X;vWfZZ-;ze^R-$21Sq8FQc}AhYcxwK z5h~UsV~r}dO~x8jtWL&O$yme)BNU%T>!q}lIEw8mLUJb>RD>8K)~HA=MV{hFeua2g zJr#<3)Kj`xte%t*{UaZBiz`2UcA535M1Ikw75Gc_DV4Dj6{CVhmlmm5p^RxV7LgkQ zgpczxNC?GIDk5d@5EY>&5ysh2`%ZMB9+}FL#>dT_H=cT$QO- z#+IovQ7uHTX(avauZkgeHAI(YDUunIWV(v^WGq$1Qe-Si#S&zU>MlhAVRWfbu_hU7 zRI&Doc|?A~BQ{PY5jCWWh%T*UBKZ~3v890Kvqq1g4|lkNMcF6r+Rq$T4ZkXA3w7M~ zAE4U5YAp@0qUAg?I?>6baMK7(F&dYnOKFg%7!BPJ6cwYiZ#htql#^lu?7{Zld)AQwnE01t5~g! zEmN_@G8R^`N*SwAu~Hc;k+Fz89Zam7%7W#WNm&XpL&nlo%qL^1DwZN+Nh+2gWB)J3 z#jO=1PzrsxjO|c^uU_s_gY)uCiNW}PiIBZ*$H1SX(anhKJ2?J{iqBN(V}9ZEpH%vi z{fPU=Ymw<`kK!6mQs6j-v!3@L-Y2(`X-48(#}DJ{S#tB_9@c_)MbiDzXmZNfq~w%~ zQj=41KTbX}8_xybBp;cdntbGV#3z4~{9JxI_5w%4+3Dc|*hOQr;I>Jo&kwN}PfM1` z8a_YN3vkx-d9)aRjHZvktg7G`#8VLOgLn$!eb9yAqs$$E1vbo?3I^NEwGWYWYfbep&`|6;d&h_^&p zgI$m;SrFu}GDqcUry|NE3n5EG*-}9Wf`ue14d$<4UIszH$!u9PTE1K@*_V@+9>vwA zU|a}SGt^vWmao`TzSz04-}pDrmVH!5y5Iw5?8M^5nlZX4I*}-j&Jcq@ke;x=p#{os z@460UM?7CjB8Of5iyGk^Q^&^oX@pT9-(ZN*Fd3Kk%lJ^z0slb;n3(GwkR{Ar@zJFs zN~F3ypRP#dfE0a{f@SwO@OcE~@ zo7FPur5y~tMW4FprHHF7dZv85y*)0QRBb)wTjVZZy6B&+_}|kaZ1R70e8O$X%PJ}^ z^*_B1jTpUa75+jT(}{fv4Bn754VG zkX1gDW9PS7KJWXRt@p`tqxy9}sP`v*Z}NvMF?#>aH{0Tmoj>&V%T2EKN)dmUY_^x# zpXRnn&Ds9kUURJStWxC}(Iy4EJYIdBj%6CEPset?kNSN1(P;@FLtXAC@lW`RScRG` zv+9jl&e-|m{f|F(ynp7m=KE&LR2=C2yPWx7YqhM&iL3*?|BW;MTP;qSoM_n=TmIPj z$!Z$K#W?C`Fl{v2ONKkT-lDxOAKylfYVupH!wmy6jPrgvz276=`vdN1&-)}g;%$;* zZ~iae*{=5?IO6tr?_aa5J?|IG`p0{J>wWEcf4QuGy!Ri3^?6|a(ZDO-CaLw-e^G6F z-k1EpJ>L7@Jksv>$HjYpv|Ok-Q2WdF>k;q$ryp%k{*r%hldOB|Kj889yx&0lzdhdj zeV%O3`$D#Vy!W?0-JbU)|9ixH|G{V4^F9q!;%(}yG4=mfd)}vUNZcOp{pgzZywCNI z_x{!w+w(rDJJBQF`%kZJ&-*kGiMO}LssAEOnhxB5r2O3;@BKcnx95FQw_;qp_aEHS zp7%-JiXQRazvbQ7_v6@K7=2dDM%cOqOfVWPIXFo(-X%Sp_kvuS$Z9+dG9s5&Fhf!k zExP)}ip00?h`wy3Yg(ayXq}{=^4@Q!FPWI!3jK*_2Mm|X-~H|MC6k|iJwAVqc}LQ3 zY7c*6zb!Mc*|VmuyiY_+7X_39x}l$jL45YyAoe}_3uKVKG-ze~)71MX$a6VGmlz5c z+(S}eQLt@8dWs!SO?t9CFK+ghr^}PE-(KzJ|8g3b_HFdm;Ml+Y*8YI|e`Bci{fnzL55UhEG4DUVsr~%G{l_uy4|%=) z?-z;P4PI{S%WNkW>qD7g87^BMvZa9m)iR_|ZVOCv>CrzpY5R|-8{;VUqjH9G7YpT}w|#IV!p>keFS zjBV_nY$WGi&)2TNRr82mJ3?L^kEbx6@O>o6OvijVl9*MQBaMbaJoosqw|w@KzrHB5 zE-T2Xa$SX67J!!^Bf5;e>1#=_VccZrUr%trbQIq>w zgZLP0ZA&L@$hzctkD~seNa82goQ(Ik2aT@piGt65iW)7jUZ!bLERV#{8S>t>FXD4e zx$(6p-u)N9E6V5m%J1P??@{vm&SQ|;=Xtsidb^mPx?iT29kTPtnrL}9#gI~Xn{na^ zt%8X4gSO)+m{0@<#RrXxQi8@+skmy`7c^$$NTAOGe_AKrd}3pC@n*?uD=eo8hpLY zuMe+O_0D8|d0z*=*5dfrbZYQ1pVGP9QWUO-pVzGUYnfDYGP(=tV{|4r!@2TXL=v$9 z%TKwfIGc$o|Nk-f9ne)3UE85ViiR7|KtxKEASj{{L?R)20|ag`kuFsTML+?iB!V=7 zG~(p~iU=wSSP?|9AVH*ekbp|HA{Gu!K#{KbpFMlZIVTAu@B6)L{aNegw3%m@*|TR) zIdgpVwo9w=q|+D2`uFeeshN%wjEL1+&-Sy$lewL){nakX4<^>N+7LBZGJ+(01Wba$PgApZeGm?e)_0?G>#B>~lAItoYF$(#mz^D@3m zt%q;D7r=1LMbD&e^j&iT%(XmJ#Y9H0)fXB48_2+t3o)=^3!&!X+gG>Sm5O&-|85cj zAL+~XHSIxG@lNX+P*52Im?>$$2-)vGp@w|_4Ula^x9PxK+tcUdpRvgo_4g*X%a&RlDkCn$)t!0$`LCy@*J zTDXw?Rs#|hrJsr^)v0UAw2*+j$iZdgMfO{9H^GaLd5{|BEwYJjPe^7s@kM5{H9-;=z_YCIxvt)yy zIJ-C3AFrnPD9&W1c`Z!WpVPG+^=I24Mk$BNrt43Sdqn+7xO)A;#5h75E}w3nlKS^q z>npMPrTfmcK4P0jwe(uSfW3O{y74_>WUT**Cnk{WTfDOiZ9>_~d^y&o+f)(kvffxP z6q1$9Ms`n(GO~D_Nh7OzGbv>1T8zSw2sgum%501j7WB}CJYhkej9clcf9h^qqGJO| zUHh$tsceUy4BF)l+gKkGY4@}L8BE-uh^}nA9nW@IH!w$k_hOD-Z=yK*1ZP<00N*?| zG8ql|TZ6b!ABgi)xlk#Za5P#SBZoFT>E9IHth8*_M^UqmY51@=s}j?@tV?}}A`RT^ zuvXvUDB+Qki8`oa)3FV+@Q|bHixO@I@lH$esG4;bY4=-$?!U~{>{cY8RXU`kI3yVU zF;}y1LuECK@*gKeuT>X_{!NL2IgwOq1$$3a$lb#0?y_EiaUS0!+pD9uJc(5$=I`jk zL!8&QJngvlVw*@TJ~>2;VNtA??PE@4xR{Lz?sTy!uRckS+>Im&7~G;gW{<9cq(RVh zM2kS1hgt+$l_1XBS~cci`M)pi3$fpIkSE=bR2blb>Z9miUHTUh-*8(CtZUhiKnr_1 zA?V`GjI6jYF6x_mqHNX8FQWHi0Z4GWn^8E}Hz`@z#!jm?*3MAeL>m?5T2)3|54C=m zQjwC-dMYZrlFh`D9SI&ufgv;bz&pQ-0APv`iPobWS&66?>rsTz6E~7F)K_y*e`v(d z6@Csyz;s%8W-K2L8~7L-V<>nf!x3ijNljr!Xcu=`o!5wJ!~_#hEm<4XgLV zejkn?`=y|???Sd;=qLEO6W0t%`@N115lA&n7IFsfIj*tV(>(ebxf#ik*v$4M!k0{Docm(M83wpRn^T`?HZnx05RzQjsxN zd<%Ah#?9EtniYlGiK=l&A0FnYUq{EJIIdw&ot(S;w8f$?{;EYb^=yWsXG6Phqn2Gv z6z{QjIs_AVX)&2YyoJ+Y$EaxIu_u50Y1$zyF51g|l=utyNcsU7G)0W9G%g1VYIf=2|BoBLtB<_M;@q zJ&suTu~UR#!53&14OUJ=gbP%nlKy~|vON{K19)*52*~!+Q!E5Ngz@QSqCZ5_FCpBq zrr$^+43P-UB*H&FiBNdfk5@D64P@39oHeYEAl}Kk3e{aDAQq%P--GqmQc|s>_%594 zo*S9!7c#3)X8ry>W*E}1u(;fm%3X!FJ%FB(jot73~k9o+?{vcZ@Am@@VTl5#W3OZ|^%RK939#P>E1F`Mm* zBIIcx<*6$3bSy%i3Np{{ommI?wzcvEh3eqgW6ayfGEW!EgE}xtjIzOg1C5saQXTea z8XuP@ylXRSWGEv{o1lHkRh2(c5`I8to2;Ek@bB|mko$4e9T(9KGWX?2g{Zt6f^=Y4 zDe*{|Z6jyPqBVakaLCW12a+U-lIH?RyXUIAiRGM3d9UfYIKn87|2k-kAI_pOk_J!^ zx2|VjEaC@5!iXPSt$(eqT!g1O30+`!HZH=suS+!s>YwrD>}w*1ArDb#)}b(EJhj|q8*ppt=pXylPY8ZEO;*R9@FseK}|HJ90D7cJWq zne7IdZC=r`Jub8DZNn;AP_%4KWVSarTh>yU4bEUC>Ja$__J0MmlCOTkrO=1+Dt8cp z_#P8gW1^D$eG%u27~jPA#q|ehm|7(3hUw-UZkTNSYgf(OCB@nG2-|ykHd>n#hoQUj z^zF#S`C}~Z zE+ny7m5Lx%X_;rE%yUx_@{DTFs+cbGR4#%%Uv%I+J!GEnBIH^61v}8XGEdbaaS5oiSe6rdkp5)RlSG$~+O22kvj^Eb0CNjaD7FYQ(!wYGk}bP%Zo$y_Ews-p1uX zfBBq+Y%a43X9(h@RBIiGJ-wU^nl>{lu=D*RQL1d@Md1JKvGzupshY^d z?dQCT^h6BGWPP~56TD<^+z|7n)?KN`| znz>dmt$dudo4^h-jyQwK))giji0$1=wcqt0+-IV79&~V7(cV`W;~%^VJzbl8pwT9b zw2G!K(5h_#q~BOVvog8XW|0l=HtDP?B+cLA-f^AUW*TvbC%htwroImzU$GWThd``@Q!?m+Dwn0C`KIJkDj4|_gjNx%28rC*RB z@ZjaTDLps(@grxPY4(LyCnmf50Zw(z25dq8F@A+tpkEnB6<%;ff#teLt+%l4O~HbZ6;uc@Lq z+-yLPq+ znQbX&lV7N^i&%hzzFrDAhB7JtTIewDf979lJQo#qvYE)(v_$!Rv171%Jonsac8kBa z5DI9+QByz)Z?%xy`LVH7K80JZ2~w5#CQ7G}D#9bLeTUc_Q4YRpxTE-W+9XdzT}m0r(E znR}(otp>u_u8n_j+4UTmEnQ|?TZl_^WlNRWl4Lg3B3y&oBQjfMnQgbGc2&*Pk=cG~ z#+uR2Kl`fL%F1jDIGg-d9MuDrt$^;%FYj?FjG#={t_O%OFr7#p9-gEwaDj*TV(yuS z-!(j$=#TUI{O!7Vq(lDPv#5c zbNu&Vv89~j-W4SD5jJf;#YVfVr{{@z?k*4Ve0b2!YM#3?&cr--u66lvo>)FK^?=Yl zCc6_cOiyErW4*ky zr=+m?52lb>(#*r7%R2~N-VyMLV^o(nuEz%J&a`c|1s}HeTm1*=-J)!Z^o&Jh5aK4x zkl(W;GRV4a<;6Uddqyo$qGCfLdQPjq>OIRsHoX3_ND{GTUN5(o*R=d}We>FsVbflxa@lD;H%HX>fla8s@3cb0 zxW4bSZpRr|q-8kWkI}{{!7W~+EVv`SwPgk4%{s9zgR9Sj5-_)lt@_+rR#cyOAypx4 z$6WACO27hC$Ypm1l>Gs(K_)QYLE3h{TF{l^`}?^Ma7)pRb|}$&sss& zkC&L9C&Me&PbIab$FwA_1s;>NRXd|n)Zi4!D#e{L#pfqfiYsCzQ_@hCB2=b0&_J!2 z`&Og~OrV02g#J3iguaPZiI#C9(M^_#ew2wm)QP4eQKEm@JRqSV=-)y#1k2y68I+W9 z&XZn(j7xd_gO}I}<_nNr*0Zk)E9eu=UcWq+;@~UiaMKYuqg`Rek|vjzrn|KX}1?Os*&MZ>}H1P74j7ew?wY zH&$B674?HQly_ssoF2XcM*X$Ow##Y_+tn`o^SSM^Kd_bnU{AEz@k1tI{n3WuQ(GW`2(Dy;S7d@D zy!#?r=UPZ`$cE4_o89e~M@)^S=w~Pva}?6@9qo$N^JqWRe(UzJSnO&=;6K-5^S=n| z%Vl&#u~7tKqi|PjbO(ywtjD*_JKUf)V5@xQeEd>CxHFdYU$onDVPzRHksh0Oz^r&K*7vV8^W(LLA7>L z;S|hFuqF5_ixuAecUHJ9n8^`&cUfMTtF8$%N{W(?;a~9W#n8dg3AJ@2MmFyp(v(A1p(DO7gHwvdF{X$Dz{nMeTF(ete)|>TI%1 z|I5N-R!N1{YV@T^~CEP3Dl;( z4>FJV@46J{|D(kNBcsOG@&!6a`_i6k8#)|cis~Gl=x>GPnt-eIZ%|d-?qr*dom-6}XwnncmBGo@X?7@dCus>Sb7=DB>Mr{4@D<0s35-vuxEQ!=` z-p36mIW^KMX(c|E6<1qoWjh+FME~lwNRpJ1=Sk;RP^916eU{C=uE?~@8v2qj_pS}t z+)IQgbFYH41pkltLP&U$ADw82KW|&GKi}cWOe5lmcbW*E#QRb^?|?a52-lk7{htEx zVh-SasX*AvO)1MRYdmV)bf}ucm)&`L@-j}Ql=E*o`X`#Z<3|BLN~AO8Qqd zzO>vKcMst%DTmtdE}Yg1mr;c$V-Y7hZA;W#CMxx-LdxVsB9N9y_sc|o{Hzl7=0u^g zh7!43Wug^(F3G^LDJP1sB`Pfw-S>%#E~_9Bij16-D6-AOoNBwP|HVbNH-;6o>P1mx z??!QvJ%Sz!x8414mf-)R02QMNZfE?VZf|yaGS`75_&yq~%Il~VqTAoO#B|=K0svzy z(f&4*ENzFepv->cGOPA4$_x$gLzLY=)k_Dd#5+WW{nm=}N{RHfYa~*hl$3arOjNq0 z3Y5!MEN# zneQPzfIecNhbcZu!X}ZTJ?xi|w;8M#h?R&4WjP+slfqMrJ63Wtwv>EJ1P!YAN*ig1 z65Ke6{ri|hEE9DlDFjX?-#n0BdK*eFy^Rtty@?f)8;)kfgInLGP+PhO|G%_y#rak` zmw$+l%~wi!$YC;aVb;R-TBcaMtb${5*8idutTPv{2xr{`pCyI!5}`5qoNZIdUiMkT zmU5@GDL+qEK53gM!hP09JE)`P$*9K9MOaMvZ+?OEpON{m;PW@sqKa{^L_beTISQsz z0rm@ja}pVWcW}DE!VX#*Ip2KxmLSr zqOLWmPjxNVI$Vb9TCR10&Q2mSg?D_!gqgL#L+}wLI zHj=NP`j!t>*0)R3NX%TTTX|b6zZkJSRkzPXgULgHvbudM((kh_Emodp1}9oeLd!(; zg<0;ig8x-M>nTn|-c==&xxjUB67A$ zy2H|(U(~I{AWr19B})2>owg3v6NM6M(mynki8Ah2)$9>Y6k$sgArl4R?H#UW)CU9OQMN?K8!=B~_9+#JiB11B zuPxDM1L&=&eb(*!RidBB#rUVSwIzB#EJ7qIaZn}V(aLGbwnTIMOfFG-nwg9=R3@S} zH%lhkg8i68tDXW<6Kn|{kxXaGaiY`?NHE=&pp!&+=WkYGY6B#gXG_pj%t-CC-j*ht zig(_`=Xj_N^?K`w?Zqt&6c55c@dyk&>vte}ZLls4ruO|T{(ouxLH`|pm`1?Mkij#X zU{{T=`JKJAb)jPWWvatoPv^CNd7h*9`C_)FpifzXU+$wle=t}djlp|VeY{8L%dY6l zZik!gkU99X0Lp0mIy?;DsDm@ZDUy@z_Zn=?c%pP5-3R{7l^RPo^t86F2>n zf~eMJKQC@#cYfk5dxE&>pA^c^#7+NXy23MY(?2PKpNX6P$#jKh;--I66h9L;{gdem z&%{mtBriV`H~o|83eUt%|D?A3Ox*NOrYk%XH~o{6`I)%spG;SHCT{vC4drLzrhhVB z;hDTihySFg<`Ig2vN&W^YIs>4w-) z)fad^8I55AYG>sH|L%meQ8X@qy~>mP-caj}4{0CvZ>au6S!ed{LA45gljBYQtXT+isI%i@P58P0j=!FE{yy3x^w(@!0sPHx zEcolG`FneYQJwF9#^34>Z2GGx`O9CvaXB%pzt!1Ff2D2wEjaPN(q9cbf5W~J`s+jH zRiOO^)6N2cu$wiLy)as#?5|Y8O#XM}JARQ(e_wqq_&Z#X{;D<;tc{p;52N*MS$l%=kK`tN|lD6go4xz)#AZn2}PUA-T)XH%= z<%v7Q@%u4P)^c9CAR0%qvDV1J+UKECmJiNp{+uZa;xBcq9O&{|H+>}vuMrgx$0MIc zP9V(eFCwXl^#xi+(1W4yb)(?xVrg5PK-l6;E>N%a7kcXy!=>Cn{?2R7IJzhAcs0UD zp!NIs{n8M<7>oSHdIk^C?UCg&8&@=M&mXvu`!_`Jigo!Ky^gsO{og;@8Iu$fPk5=f zrkr|0Huhx79u)5L2YM@3OclH@;=;J+Z8{h5S7huQ3nm;FT@w)#)KM{9}(!lGWTrnl55>6$=bO_bFW@oKVeP-7*TNpYkc*b`f$+5dv6mpCtjQ+3I#41q1IsC6d%Z+c(r5T@Ino zoJi6jw2eg)gAn^-6RTc5H^}`h+S2%qQZ7k3nQr)lQ$N$n_2Q1!EJ-00CrEbwQ}k-< zA9+Wqm)cOt*_}IO*^BfLfR1^g>1$KVh+Phj*QVH2XfO|-sDuAfI}nfxslIl}BY20n zdw(PIC2S8LWVE?k`9=Crv@u#l8&W8onUr$C2n|~RG`G58=iRj}=EDXQj*g^47&QX;C&WwY)FwVsPq-hHH-p-?BDsYYCUn+2>$a` zWg6h>+Fs_`{$=_&Yl$iHm;2bNu6{BjF=B+mF{3c4XOesMl5sIGc4ZnXKAidf4~wD_eg z#V=*4Cc|&`#Z*S-tbFlHbq8zOmz+SXFZpw(D2Tt*k=mDZM5&_@-}IdJCHdkPpNL=L za%h(~F!tv-d z-%ti02(Bv5{}1DpcK=uL%D}nB_a|qCfYg95{KM@}Mh*Lq{mG`qTDe#8C+{6)f71AM zrCysq8NIQ{{=|bX))f%1EI>%&idSl5xdF#3E8)x7eJX#FJ@gv>M63Y89%NL(5ToVm z6UF<_#8b%2ThxWUQjtB&utCDJltq=MKT&n2M9#yh^$ht;)yqLBM` z)iXL8@AfPWj_I1~eCVvX0t-E(Iz&SDjFw}eLD4)*Ir1#!i2Fd;uwn2lcg+x}_PB>N@9kEn>I?lDy*Nki0yI5(K9@dMEQfG-`A?Ax{hiZNBfn2OZ%1jzldB)$sPSD&u?%X(Er@o zO8+*$ba>4*{8GJmf397->k95om8Z^{Qx#bUly|BQ&*=0{#|J?b6E~7Gtu2ylN$Z0DIW*9Uf!8SXVHVZKd@gzq7*h%M2>(s{CI(uH z`4umjR$Zdf;#o+UU1lkknu#?X8ef+jpA?<{W)Cs{<-z|%!T)?z%0fiQNOg%ImXk{n z>V_K;&W^#HC&Vd0gozm0x~2$;{`FXs2{k8pk8%gQ;Qbi$6-U}1bwzQ+3`dElQE|i` zL{~B8iP$wbPr0eVTD8116b=V#88I>gm4A@p60B>qDVv%RMzDsX3KeX@NCBgR&@at7r$arA*XHc!5cxfH}d#2HP z3{QFl{!hGgKb=oYh6#Jp%j19AF)wetKJnOET&8qQyHwhf(S{nwK=7+WU8?9o~$e6HT$lIvpW0onmqrMN#TRMLB3Mk^L~a>?sXIGX@~}&)rR)@Fs&49 z9%h7SpoxmbIrz@R5SLPh8@%}HS}6-((n=X>$2$x+%1ZGO*MZ;{+;}4mUPd>K*G=PP z&PD)Xhn%J%|E4E_;0N81V-4hCkA_^LZ7p-H3$m$(e3K!M4|YjC(LkO$r?vRDf!ykX zJPHRX1V7#$EWYN(%QSc%5$K5O8aY&zN~W0GvlYxM8n2`y9K`C|p%fE7wgKye!=La5 z4a6@8zw4j$2KB`6L;Q;A|Eh;TdU&1qCv?Q6P!TViA2trYppHhlyi5)eK`Hs+d-(a0* zeRADt7oPTHZNQZevs_{8XROKde3o9a$8c{DYECE)s^*-3(k04RLwb;irv>SOrsgV+XnlrBUp5d5ASZ=%6lWZX%(!E?C$1sbm`<8^l9Wg5I4A~+EI9U7ul<8UWkG+quj zA!Xcn*!4{n-57&6-QYPqMOlqEknxs3;nE*oLsoeHQ`!`~2G8O0a|SE@g)`m&H{MKx z7h~{F57zQJ-1|U{w-r`^@~Gm*d)43_|3mXP&)_-Sd$`6M#duo=y5yZ}@Ln@`Z4Dka zj5VgZ6$4Lf`t(&p@Hf(p_rAe9exr6{K?V;S!y3F%8t(u%KXu%A9~!*Z4BpZ~T7PZr zcy%?Nn1~Go@26#u_6{euR8!^qu)#|ceQ8&r6U4Bpx&wY=Df*5E~JJlXOc>F<&kJDw`M%XjGVSQ^l-t&1Jc zg7b8=e6!qm*v(quU2ph{(EMdiaJ4BjHKc6$TDT#ViBqPzo+uzWHvveFiVsc$p`sC@p5@xbWs`yuw<(>CJ|C zgI>h1%P?cqze{?KUwp{t^ZwRU239U#YEX8b}cOK73WRV-R1VVa!YL?$Ddc~r-1`gDQXQ+M*Je$D5yJXsA0o!aNyrih3(Vx(8M%e~wrZ#Embq zU8iJCau@p@j~lOs!Aq;4RWjS)Vb@?ILa4@jj`7y?ajB%1!E0#ndn_=)47(A~XFGAx@W4v9xUGg?C zcyAri<u;!C-YAVXm+^i|cF7xO@V=qBmNRgPNpxgPzClTm0@!^#+Z`Z##ZfpYaAgiQjVkcyzbe z{^#|}?0;(G;}~jugf@}zOj|>4DE$fipLlFO826-y;5_YEgc=zkX=r4mx+f!@!`cbG zTgX9v)p*SrFV>A0VpzP_ z;C*QD92Wne#`_Cyc;d0f_@8#Ef+y=Rd1W!s;Lj9px!*XicFS8IbLr(bBSbZ$mlx8t zo*ga0Hu}U6O+6ePPgL*@wHxo4!8=h_ms^S6s%Er|vfIJ48t-n#tLw%)W$@-0ypNJK z9=6jqZuAa~_anRI13g^wo;7%h2Cuil!{S4Ocd(a|cPisecH><%cvs43c`F(`Y{PBv zvNhg=j2G?3t7MGeE;D5DejhEb!%aP)@%})KMR{1=UGi2jc;El6jkK%A%bb9^ZD;X! z`f!ja;@22*rW>-Ffy_3L*BMB6xH>~a%HgDDZpd2=hOB2GryIx+13Ayd<*W1^B7zjHNTM4r%HVko z-YRW7nG0Natu=9d559a z_^z&!ns+~0plCW)l-5-!w}&=)hYM;+UpNxQw1AtAzq`2b-Z6Mj7`*WY4|{f-DtV5+ z9VGDN2+%ujyoCnu*&lTky4&DkKW~HguEvuiK%LxpOAOu}2Jgr2T3&4OZSWq|cya_N z*p2t8!8`ba=5MOOb94@_(|B?OXjx~M{#F>gJ4|r%puxlD;D$f(y(6JNIRf;!8*jD2 zJ6KYe?;qW?yx2J0;PvmO%0rF-g}L!I7`&t3YkA)=c-U0j;8oUmas+78qb_;38oXBw z-XjJt+>W=otKv_N0HwO|b{f0{gZFP&EiX1BH~c-L@#F|lZ8zT62Jhl`THX&09yTgB zc(-djIRdn|lS|(H25(yvT^?_Y)lGhc9d93fGf0%L90AI3<9%=Nj+*-Rh{1D2{+Sw2 zjsP`sMMjnzyy z-f@GMZAJ{Q(|Gxs)ES+X3T0!}%nfxSP#{8V4*KNzp6|0DO8 z{%)h%x7c?OxqGHPTavm+weUZ7cM#p^TY_$g+2ji~Jn0|eX4-|JH06@&$%x0w477S} z+PlhU?cKW7`=o@n^6+PMEv##=g>5@26FSdRE_v--cqA8&eo*VB^gLlgn?R}#< zD!pd%w&;fGcQj-oLw0mSZZeQLc^Y!>Gn&P=cD;7ecvoP4_20$6v=}pWC>!vd56zYkcZLO)_(xK*&k;*kQZE#4`@g^a%w%|68skf*~35%GmyLyzbU@o+bJ#s zrG(%!-H?`n%(is#U1tQp;^K0KhHS!+&D@YD4P@m#8gfTFEjaJoZ@Bbo$Rnr?D4tVE zF2TI7@xJATyxu^zGLSbJ$ht1b z`5ICN5pCU&p$77-Y4O(?yNq%{KB6II5b@8$F2TbLWbezm#5WIDZY49?1$p@qCHR|U zv4P-)Zpf+zvVwseVIXNCmEDLIC`i%c?dHa-Y4BE?+E~lrO?KgR(RhUg5&fqR%<=}U z#IM3+^lkC`6u&arhyn0hj9<|6-k=Wny^G&P{1W}%pt<;+!tcL`4?=$B_+W1<9UpuE zzvh|N2Qqll%i%ww08jc-=oXOx8ZO$S&Xe&s`+x^qyNd4)a*Esye$$MgmKmms&pF5Q zP?9RU_ZaVw1Q*`j2Cu!rdwQtGi?$cssYHd>nepCm<3$?0W+$|Ht$9RMRp*@1T#Y9- zXbJ>B;>K%c@cuMYlxx~3ynIuNi5imL6Ry7)`O_}k;K_QMd<#uOy*5lVgyAoEbwhZ- z=hBL3dRWU%>*?@d{?l43$#$(Ad{}8kI()oA*BO5+{z_&D+8HnAUhbywd4S7@!_G?N^t4Grnw;#4P-+D8Dt>0 zx*!7@QaZ4vZpd~9a-Qj81V5$9Cg1X^CK^&Yu%j(qfOgDjaQfhn?7KgH|TTxf?&7m7c$)&l#Jg}{M5Z+Q!$2z-%UtM zehcr%h)+KxY-zrhUQkdQ2P9;Vi17J?XO5JwXkbNo!;}7h#7pM>VOUrm=k@;(-KA;j znEsxpgWr9mT9DY*sqN$*k=_=8_;RR8XOe2;)tQI4S_21e$(v5|LqYV;4802RVlAx1 z4um`xe+Ld&^Bd@NGwl$N_bI)SRN0o|F_nT|O3LN!B=8dUb=YX>{P9xW2IsuzwvwIZzFZj|f)EpUQ z9c)xC$eVu7)8YquqazVZ=J94rwI=j#9q${BMg4=!whPwI3FU&WrLV`Ixw^jUvc8^4 za_I{@@`m-UEA>nfWA&d7pkw#&0kR93CIQ)P2L)+&=JE;W-W{s$_1 zreOgpThX{sl|4BgDs%ja{TO(kR8c>%Pbx-Y2Vyjl_Ie5ad&E`s*X4$k;OH)0QpZyz zE%C5jgK;?(pj+th;~}@>KyUS}?dMh^jqXB;`{R@nJ7Y(YT&wd(T8T2nGL_g(2H z1B9&5<20{RkDjGkk21v&mEwP($D>gN=p#i_0NL54&oAof(m=C29=q95b0f;OWcx{9CQ_cVDCzhUuj?{KKAioxKS$oqZ{ogDIJi*2-JXq5eHW~jLoViJUq>4d)dzP;{@g@73xq8>$1FC+tAqZ^ zc%wJY=U*vat3w<0m3Se4mq6KJ_4|;D>PBjs%mXT<9n>f>_E+FpzA7d}Os|OsHMTjV zP3^{V?gJ*6Y-|19{~)%o*~%q=q3k8xW-p;ulaJY6!V~f4t+bbCZu>VcjtliqP)YRfq>>7R zJt%p+Zq=T=IAJl(Y!(v%t`hyb1kMht!3Wx6%mZyP5}jU-wn>>@9Ts!ExeYT?V}2fn zv{dv57inPg)CrvW5Gp`;LcLa@;xkxj7fOt%D)PtW)Bzx&ytQI4iS@9(t>F5iDkGmp2gEU0|{0z;;J+b`6`U>-P&!INRiS4f$^e9vo4UA`CJ*TCkf z6IhgQ1j;u&U-^omNT_+k^8cuOslAl`9&assbL9SVI_6OC%V7(s;I$9rFXd{7xfYjh zOr^Z+0L1h8(W|d_o#eFCh(XwcI+#{(24ZtRs3pyxUhGP3$F=+QTF4~c6~v3u(ex@d zrZG|?y=XyK{ahFR5miyX#{7?0^t8yc-v$I1so`&N-P#IY;>qxX7bfsF5%6b-ZX5Pr zyDi}JSsm(=pf@}j&nR6WKx4Dkw%)XF?p8zB z8i}uJuwbu~IotIySQ6c{T)K+|srVMIK zZRntMo22xlq6E!vkd!|Al*LOa-C*tUl1oca#M9Pn^=8{ILio3i@~bivPfREKMWZjn z9jq|1KO5&0}w%8CxUk9La?F%N5WZ7C}3yG6m&Ux?bH;-6=t;qPd$ z*81{JD(mz}QE?Fel%@Em&R_rH0|~r~qIy_B5L77<8|hI-5eN0bUX&sZ^7%($^AoXY ztJi8e0nP=zcrR^aIDw?2&FpZL`xttmu>}7f?hxGb5JI;LeE!YsJ$cy=;u|g*{lKRV zBEDF{vYuU5KnOJkV!>g`5bD-e~#nZL^>*aPD5&cx$SL@ zYo5Ar#rUb%l%R6zC^qRdAfc7Sw-ZG*3%A^JjR*}|7J6!rblKd=;H>k$+j3Btf`sG8_V)Z~aF4Oy6%$;NAE@lFXe0wu8Bk_poj*p%br|yCj)wshOkALYTSff;kg}Cmw4U*{nn&=W_V|~1ABU+J(iU$A5d_;X`RUr&> z6AehBsWzfvlIXe*l%!2G(N}Clt1?m1>~`AimbAk;MU-B;cSss7i3Zt-){sOKHPKDF zDVu8}T8oK#@z83UPtrHEq*-pFzkJQ=^cJ^FY1vG#EVnz${#QK?cav<77DKK3=F3*u5iM4D=IYTR zUg$Q_Vu?m3T6||J8f*?1MIV;C1U!h+RgOEY!#D;v>aA@7-WrHTjk@Y^?XZr%svCCa zLuVW8$)Hw=eT&dv`fdsyAGTp{aA4~OezGCpOyMMu8dd0^%4PsltoO(Q)m9fZf-745 z_UN5=Dtuj`OxyH*@V9;kpDA~*48f-6)_^nmG@f5eQ=<(H1t2}nI zbjNS!!V4ZxsUUgWharvp@!M)Wwne%t`HC)P^T1gG_VE-UW&ZeWy~fnV`#yRua_H7P zbpl^yylfKyiM&twt#SPs7-+i;2uSbG7`lVz}zCK-0V2eIP z^7OckrvZ|ukKSaSuG*seX#CT(=Rxq9w(%eFjY={18t?yEH0zfV{WKK1EHZ!Lv|CR4 z*=1e46`#dBH*rk_8uhNaVQ+yQE-4_}lGO$G?zshYFbUh%S~(7NRc$@XpIvQhy=?p| zeabAlMP!eZ>nIG#%Z*FBl9v)37jt&(khruwaeDr_J}VYLW7c!wtk7uP4SS5xsqDQJ zG|*bUgg{a#c1SGii)j}s2GD(Jab?RMuRvo-^xUfYitq>V;WX%q;0M!bvtGu=q?;21 z(`ek28})vlv9KrJQl0>#Hu}3E%^{w1-|d@bP^A^$4RJoCiYvYwB6{qpv8e|0;D+_)xSTK0QGJ(4Hm24qYKEYBfE9K-OXJ!uu8x#{+f zGpUmKuL`6U6OhSjDtVS2e4dY8e!my9 zcS!JN8_ym5BqYx6mw!ArF6X;yWQ2Qp__iPV7HTNBY#Ox5!TAZ`ISlK28L>sqD@fya z7d1Xm%{BgCLzu~3!j$Tl zhbgJ?|Ax(AFI4@kFDn&bFJ=C5+Y3hj-66WOKi6-DjN%;qxd#W5wG=-3|1#ds(xd