From 42b5f4fbde85ecad71e0a2ea8503d9491b74f3fd Mon Sep 17 00:00:00 2001 From: haoranchen Date: Thu, 5 Mar 2026 18:06:31 +0800 Subject: [PATCH 01/18] docs: update TDengine client version in Linux install guide (#34687) --- docs/zh/08-operation/03-install.md | 16 ++++++++-------- .../14-reference/05-connector/_linux_install.mdx | 4 ++-- .../14-reference/05-connector/_macos_install.mdx | 2 +- .../05-connector/_windows_install.mdx | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/zh/08-operation/03-install.md b/docs/zh/08-operation/03-install.md index abef15e7b2b2..e58ec9c6b20a 100644 --- a/docs/zh/08-operation/03-install.md +++ b/docs/zh/08-operation/03-install.md @@ -41,10 +41,10 @@ TDengine TSDB 完整的软件包包括服务端(taosd)、应用驱动(taos 1. 从列表中下载获得 tar.gz 安装包: - + 2. 进入到安装包所在目录,使用 `tar` 解压安装包; ```bash - tar -zxvf tdengine-tsdb-oss-3.3.8.8-linux-x64.tar.gz + tar -zxvf tdengine-tsdb-oss-3.4.0.9-linux-x64.tar.gz ``` 3. 进入到安装包所在目录,先解压文件后,进入子目录,执行其中的 install.sh 安装脚本。 ```bash @@ -58,19 +58,19 @@ install.sh 安装脚本在执行过程中,会通过命令行交互界面询问 1. 从列表中下载获得 deb 安装包: - + 2. 进入到安装包所在目录,执行如下的安装命令: ```bash - sudo dpkg -i tdengine-tsdb-oss-3.3.8.8-linux-x64.deb + sudo dpkg -i tdengine-tsdb-oss-3.4.0.9-linux-x64.deb ``` 1. 从列表中下载获得 rpm 安装包: - + 2. 进入到安装包所在目录,执行如下的安装命令: ```bash - sudo rpm -ivh tdengine-tsdb-oss-3.3.8.8-linux-x64.rpm + sudo rpm -ivh tdengine-tsdb-oss-3.4.0.9-linux-x64.rpm ``` @@ -106,7 +106,7 @@ apt-get 方式只适用于 Debian 或 Ubuntu 系统。 1. 从列表中下载获得最新 Windows 安装程序: - + 2. 运行可执行程序来安装 TDengine。 :::note @@ -122,7 +122,7 @@ apt-get 方式只适用于 Debian 或 Ubuntu 系统。 1. 从列表中下载获得最新 macOS 安装包: - + 2. 运行可执行程序来安装 TDengine。如果安装被阻止,可以右键或者按 Ctrl 点击安装包,选择 `打开`。 diff --git a/docs/zh/14-reference/05-connector/_linux_install.mdx b/docs/zh/14-reference/05-connector/_linux_install.mdx index 61d06135e4b8..9782539ab9a7 100644 --- a/docs/zh/14-reference/05-connector/_linux_install.mdx +++ b/docs/zh/14-reference/05-connector/_linux_install.mdx @@ -2,11 +2,11 @@ import PkgListV37 from "/components/PkgListV37"; 1. 下载客户端安装包 - + 2. 解压缩软件包 - 将软件包放置在当前用户可读写的任意目录下,然后执行下面的命令:`tar -xzvf tdengine-tsdb-oss-client-3.3.8.8-linux-x64.tar.gz` + 将软件包放置在当前用户可读写的任意目录下,然后执行下面的命令:`tar -xzvf tdengine-tsdb-oss-client-3.4.0.9-linux-x64.tar.gz` 其中 VERSION 需要替换为实际版本的字符串。 3. 执行安装脚本 diff --git a/docs/zh/14-reference/05-connector/_macos_install.mdx b/docs/zh/14-reference/05-connector/_macos_install.mdx index de1f2f829e37..76d4579cac6e 100644 --- a/docs/zh/14-reference/05-connector/_macos_install.mdx +++ b/docs/zh/14-reference/05-connector/_macos_install.mdx @@ -2,7 +2,7 @@ import PkgListV37 from "/components/PkgListV37"; 1. 下载客户端安装包 - + 2. 执行安装程序,按提示选择默认值,完成安装。如果安装被阻止,可以右键或者按 Ctrl 点击安装包,选择 `打开`。 3. 配置 taos.cfg diff --git a/docs/zh/14-reference/05-connector/_windows_install.mdx b/docs/zh/14-reference/05-connector/_windows_install.mdx index 75c796cb4a5a..a5bfe91508ee 100644 --- a/docs/zh/14-reference/05-connector/_windows_install.mdx +++ b/docs/zh/14-reference/05-connector/_windows_install.mdx @@ -2,7 +2,7 @@ import PkgListV37 from "/components/PkgListV37"; 1. 下载客户端安装包 - + 2. 执行安装程序,按提示选择默认值,完成安装 3. 安装路径 From f4922f318f56aec1c8aee630b28974ebe2d6c90b Mon Sep 17 00:00:00 2001 From: Simon Guan Date: Thu, 5 Mar 2026 19:37:26 +0800 Subject: [PATCH 02/18] fix: compile error caused by invisible characters and chinese comments under the VS2022 environment (#34689) --- include/libs/new-stream/dataSink.h | 101 +++++---------------- source/libs/new-stream/src/dataSinkCache.c | 2 +- source/libs/new-stream/src/dataSinkFile.c | 8 +- source/libs/new-stream/src/dataSinkMgr.c | 6 +- 4 files changed, 30 insertions(+), 87 deletions(-) diff --git a/include/libs/new-stream/dataSink.h b/include/libs/new-stream/dataSink.h index 4fe80a764f95..07a58767dc19 100644 --- a/include/libs/new-stream/dataSink.h +++ b/include/libs/new-stream/dataSink.h @@ -12,34 +12,15 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ -// 一个 group 无法避免有多个数据块在同一个文件中 -// 需要有标记来记录已经 get 完成 但是没有开始 put 的 group, 这些是优先要淘汰的内存 -// 上述内存淘汰完之后,内存还不足,代表这需要淘汰正在写的和正在读的的内存块了。 - -// 1. 非 sliding, 读取后立即释放内存,一个单独 list 存放 buff 信息,每个 buff 10 M,当前 buff 写满开始下一个 -// buff,总大小超过则按时间升序将部分 buff 块写入文件,释放内存; 每次读取数据,会同时读取文件和 buff -// 中的数据,读取完成后会全部释放。内存和文件中数据会有一个 groupid 标签,目前非 sliding 模式同时只会存在一个 groupid -// 的数据,如果发现 有多个 groupid 数据在尝试同时写入,报错。 非 slidng -// 模式,内存中需保存管理信息(同时保存的group信息理论上只有一个): groupid,usedMemSize blocksInMem: address, capacity, -// size + (windows: startTime, endTime, dataLen) + dataBlock serialized data blocksInFile: offset, capacity, size -// 文件中保存信息:(windows: startTime, endTime, dataLen) + dataBlock serialized data -// 2. sliding 模式:每次写入数据,写入独立的内存段,内存不足时触发淘汰机制,将某些 group 的数据从内存淘汰,写入文件 -// 内存不足时,先淘汰占用内存最多并且当前不活跃的 group ,淘汰后内存仍不足时,淘汰当前 group -// 的数据(理论上同一时间只有一个活跃的 group ) 当前不活跃的 group: 定义为 getdata 完成,没有进行新一轮的 putdata 的 -// group 每个 task 首次需要写入文件时,计算要写入的 group data 的长度(考虑 +20% 做缓冲,最多 + 1M ),作为文件中每个 -// group block 的大小,后续写入的 group block 均使用改大小,当大小不足时,申请新的 block 淘汰内存时,linux 下使用 writev -// 来写入文件, 可以将分散的内存连续一次写入,其他平台不支持,可以先逐个写入内存后再写入文件,后续优化 从 group -// 读取数据时,文件/内存中可能均有数据,先读文件后读取内存; -// 每次读取数据后,检查使用内存情况,如果需要触发淘汰机制,在一个新线程中进行内存淘汰。读取数据时的内存淘汰触发条件要比写入时内存淘汰更敏感,设置一个略小的值(例如比写入时限制小 -// 10 M),尽量提前触发,避免在读取时需要阻塞读取进行释放 sliding 模式,内存中需保存的管理信息(多个 -// group):groupid,usedMemSize blocksInMem: address, capacity, size + (windows: startTime, endTime, dataLen) + -// dataBlock serialized data blocksInFile: groupOffset, dataStartOffset, dataLen, capacity(same in a task) -// 文件中保存信息:(windows: startTime, endTime, dataLen) + dataBlock serialized data -// 每个块写入的 window 保存:list, endtime, len +// Notes: +// - A group may map to multiple data blocks in one file. +// - Memory blocks are spilled to file when memory pressure is high. +// - For sliding mode, both in-memory and on-disk blocks may coexist and are read in order. #ifndef TDENGINE_DATA_SINK_H #define TDENGINE_DATA_SINK_H +#include #include #include "tarray.h" #include "tcommon.h" @@ -113,14 +94,14 @@ typedef struct SAlignBlocksInMem { int64_t capacity; int64_t dataLen; int32_t nWindow; - // void* address; // 后续地址存放的内容为 SSlidingWindowInMem 数组序列化后的内容 + // trailing bytes store serialized SSlidingWindowInMem items } SAlignBlocksInMem; typedef struct SBlocksInfoFile { int64_t groupOffset; // offset in file int64_t dataLen; int64_t capacity; // size in file - // SSlidingWindowInMem *windowDataInFile; // array SSlidingWindowInMem 实际数据,反序列化保存至文件 + // serialized SSlidingWindowInMem payload is stored in file at groupOffset } SBlocksInfoFile; typedef struct STaskDSMgr { @@ -143,7 +124,7 @@ typedef struct SSlidingTaskDSMgr { int64_t taskId; int64_t sessionId; // sessionId is used to distinguish different sessions in the same task int32_t tsSlotId; - int64_t capacity; // group 在文件中的每个 block 块大小 + int64_t capacity; // per-group block size in file SHashObj* pSlidingGrpList; // hash SDataSinkFileMgr* pFileMgr; } SSlidingTaskDSMgr; @@ -209,77 +190,39 @@ typedef struct SSlidingGrpMemList { } SSlidingGrpMemList; extern SSlidingGrpMemList g_slidigGrpMemList; -//----------------- ************************************** -----------------// -//----------------- 以下函数 DataSink 对外提供接口 -----------------// -//----------------- ************************************** -----------------// +// ----------------- External DataSink APIs ----------------- -// @brief 创建一个数据缓存 -// @param cleanMode 清理模式,具体含义如下: -// 1. 一行数据只会被读取一次,所以读取结束后可以立刻被清理 -// 2. 一行数据可能被读取多次,所以等到下次读取时,才清理时间范围之前的数据 +// Create a data sink cache. int32_t initStreamDataCache(int64_t streamId, int64_t taskId, int64_t sessionId, int32_t cleanMode, int32_t tsSlotId, void** ppCache); -// @brief 清理数据缓存,包括缓存的数据文件和内存 +// Destroy a data sink cache and associated resources. void destroyStreamDataCache(void* pCache); -// @brief 向数据缓存中添加数据 -// @param pCache 数据缓存,使用 StreamDataCacheInit 创建 -// @param wstart 当前数据集的起始时间戳 -// @param wend 当前数据集的结束时间戳 -// @param pBlock 数据块 -// @param startIndex 数据块的起始索引 -// @param endIndex 数据块的结束索引 -// @note -// 1. 起始索引和结束索引是数据块数据的索引范围,从0开始计数 -// 2. 可能会对同一个 {groupId, tableId, wstart} 进行多次调用,添加多个数据块,调用者保证这些数据是严格时间有序的 +// Append data to cache. int32_t putStreamDataCache(void* pCache, int64_t groupId, TSKEY wstart, TSKEY wend, SSDataBlock* pBlock, int32_t startIndex, int32_t endIndex); -// @brief 向数据缓存中添加数据 -// @note 和 putStreamDataCache 区别是: -// 1. 会移交 pBlock 的所有权 -// 2. 如果返回 success,pBlock 的内存释放由 Cache Sink 负责; -// 3. 如果返回 error,pBlock 的内存释放由调用者负责; +// Append data by transferring ownership of pBlock to cache on success. int32_t moveStreamDataCache(void* pCache, int64_t groupId, TSKEY wstart, TSKEY wend, SSDataBlock* pBlock); -// @brief 从数据缓存中读取数据 -// @param pCache 数据缓存,使用 StreamDataCacheInit 创建 -// @param groupId 数据的分组ID,实际上是 "__" 格式的字符串 -// @param start 读取数据的起始时间戳 -// @param end 读取数据的结束时间戳 -// @param pIter 迭代器,用于遍历数据块 -// @note -// 1. 没有数据时,把 pIter 置为 NULL -// 2. 符合筛选条件的数据可能包含多个数据块,由 pIter 负责迭代遍历 -// 3. 这里没有区分 tableId,后续对 pIter 遍历的结果应该是按照 tableId 有序,内部再以时间戳有序 -// 4. start, end 一定是对齐到数据集边界的,即 [start, end] 包含若干个数据集,但不会包含任意数据集的一部分 +// Get an iterator for reading cached blocks by group and time range. int32_t getStreamDataCache(void* pCache, int64_t groupId, TSKEY start, TSKEY end, void** pIter); -// @brief 遍历获取所有符合条件的数据块 -// @param pIter 迭代器,用于遍历数据块 -// @param ppBlock 用于指向结果数据块,调用者不会释放指向的内存 -// @note -// 1. 需要把 pIter 指向迭代器的下一位,如果没有数据了,返回 NULL +// Read next block from iterator. int32_t getNextStreamDataCache(void** pIter, SSDataBlock** ppBlock); -// @brief 清理数据缓存中的数据 -// @param pCache 数据缓存,使用 StreamDataCacheInit 创建 +// Clean cache data for a group. int32_t cleanStreamDataCache(void* pCache, int64_t groupId); -// @brief 取消对读取结果的遍历 -// @note -// 1. 调用者在使用 pIter 遍历数据时,可以用这个接口提前结束遍历,通常用于异常情况 -// 2. 取消数据遍历意味着读取操作结束,会触发底层 Cache Sink 的数据清理 +// Cancel iterator traversal early. void cancelStreamDataCacheIterate(void** pIter); -// @brief 释放 DataSink 相关所有资源 +// Destroy all DataSink manager resources. void destroyDataSinkMgr(); void setDataSinkMaxMemSize(int64_t maxMemSize); -//----------------- ************************************** -----------------// -//----------------- 以下函数 DataSink 内部调用,不提供于其他模块 -----------------// -//----------------- ************************************** -----------------// +// ----------------- Internal DataSink APIs ----------------- int32_t initDataSinkFileDir(); int32_t initStreamDataSink(); int32_t checkAndMoveMemCache(bool forWrite); @@ -300,12 +243,12 @@ int32_t buildAlignWindowInMemBlock(SAlignGrpMgr* pAlignGrpMgr, SSDataBlock* pBlo int32_t buildMoveAlignWindowInMem(SAlignGrpMgr* pAlignGrpMgr, SSDataBlock* pBlock, int32_t tsColSlotId, TSKEY wstart, TSKEY wend); -// @brief 读取数据从内存 +// Read data from in-memory cache. int32_t readDataFromMem(SResultIter* pResult, SSDataBlock** ppBlock, bool* finished); int32_t readDataFromFile(SResultIter* pResult, SSDataBlock** ppBlock, int32_t tsColSlotId); -// @brief 从内存查找下一组数据位置 -// return true: 需要继续查看文件, false: 不需要继续查看文件 +// Find next iterator position from memory cache. +// return true: continue to file side, false: no file-side iteration needed bool setNextIteratorFromMem(SResultIter** ppResult); bool setNextIteratorFromFile(SResultIter** ppResult); int32_t createDataResult(void** ppResult); diff --git a/source/libs/new-stream/src/dataSinkCache.c b/source/libs/new-stream/src/dataSinkCache.c index 6dd30f93a6e5..f757fb3221cb 100644 --- a/source/libs/new-stream/src/dataSinkCache.c +++ b/source/libs/new-stream/src/dataSinkCache.c @@ -231,7 +231,7 @@ bool setNextIteratorFromMem(SResultIter** ppResult) { return true; } } else { - // 在读取数据时已完成指针移动 + // pointer movement is completed while reading data SAlignGrpMgr* pAlignGrpMgr = (SAlignGrpMgr*)pResult->groupData; return pAlignGrpMgr->blocksInMem->size == 0; } diff --git a/source/libs/new-stream/src/dataSinkFile.c b/source/libs/new-stream/src/dataSinkFile.c index 977e70e05f5b..86332eaea5c0 100644 --- a/source/libs/new-stream/src/dataSinkFile.c +++ b/source/libs/new-stream/src/dataSinkFile.c @@ -186,7 +186,7 @@ bool setNextIteratorFromFile(SResultIter** ppResult) { return true; } } else { - // 在读取数据时已完成指针移动 + // pointer movement is completed while reading data SAlignGrpMgr* pAlignGrpMgr = (SAlignGrpMgr*)pResult->groupData; // todo return pAlignGrpMgr->blocksInMem->size == 0; @@ -265,7 +265,7 @@ static int32_t readFileDataToSlidingWindows(SResultIter* pResult, SSlidingGrpMgr } start += sizeof(SSlidingWindowInMem) + pWindowData->dataLen; if (start >= buf + pBlockInfo->dataLen) { - break; // 已经读取到数据末尾 + break; // end of current data buffer } } _exit: @@ -416,9 +416,9 @@ int32_t moveSlidingGrpMemCache(SSlidingTaskDSMgr* pSlidingTaskMgr, SSlidingGrpMg pSlidingGrp->groupId, moveWinCount, needSize, fileBlockInfo.groupOffset, fileBlockInfo.capacity, fileBlockInfo.dataLen); - if (false) { // 续写时, 可以不进行 taosLSeekFile, todo + if (false) { // append path may skip taosLSeekFile (todo) - } else { // 第一次写入 + } else { // first write int64_t ret = taosLSeekFile(pFileMgr->writeFilePtr, fileBlockInfo.groupOffset, SEEK_SET); if (ret < 0) { code = terrno; diff --git a/source/libs/new-stream/src/dataSinkMgr.c b/source/libs/new-stream/src/dataSinkMgr.c index fdc5bdc22dcf..c0f041ffc6a8 100644 --- a/source/libs/new-stream/src/dataSinkMgr.c +++ b/source/libs/new-stream/src/dataSinkMgr.c @@ -54,7 +54,7 @@ int32_t initStreamDataSink() { taosHashSetFreeFp(g_pDataSinkManager.dsStreamTaskList, destroySStreamDSTaskMgr); stInfo("data sink manager init success, max mem size: %" PRId64, tsStreamBufferSizeBytes); return TSDB_CODE_SUCCESS; -}; +} static bool isManagerReady() { if (g_pDataSinkManager.dsStreamTaskList != NULL) { @@ -246,7 +246,7 @@ static int32_t createSlidingTaskMgr(int64_t streamId, int64_t taskId, int64_t se return TSDB_CODE_SUCCESS; } -// @brief 初始化数据缓存 +// initialize data cache int32_t initStreamDataCache(int64_t streamId, int64_t taskId, int64_t sessionId, int32_t cleanMode, int32_t tsSlotId, void** ppCache) { int32_t code = 0; @@ -280,7 +280,7 @@ int32_t initStreamDataCache(int64_t streamId, int64_t taskId, int64_t sessionId, return code; } -// @brief 销毁数据缓存 +// destroy data cache void destroyStreamDataCache(void* pCache) { int32_t code = 0; if (pCache == NULL) { From 5569f0000b193870b772f3c0877d2082d5546286 Mon Sep 17 00:00:00 2001 From: Jinqing Kuang Date: Thu, 5 Mar 2026 21:06:57 +0800 Subject: [PATCH 03/18] feat: enable stream notify support on windows (#34688) --- cmake/external.cmake | 71 +++++++++++++++++++------ include/util/tcurl.h | 7 +-- source/common/CMakeLists.txt | 2 +- source/libs/new-stream/src/streamUtil.c | 14 ----- source/util/src/tcurl.c | 11 ---- 5 files changed, 60 insertions(+), 45 deletions(-) diff --git a/cmake/external.cmake b/cmake/external.cmake index 91d86206cf78..b61ce441b016 100644 --- a/cmake/external.cmake +++ b/cmake/external.cmake @@ -134,6 +134,13 @@ macro(INIT_EXT name) # { target_link_directories(${tgt} PUBLIC "${BREW_PREFIX}/lib") endif() endif() + + if(${TD_WINDOWS}) + if("z${name}" STREQUAL "zext_curl") + target_link_libraries(${tgt} PRIVATE crypt32 wldap32 normaliz secur32 bcrypt) + endif() + endif() + add_definitions(-D_${name}) endmacro() # } endmacro() # } @@ -867,21 +874,53 @@ if(NOT ${TD_WINDOWS}) # { endif(NOT ${TD_WINDOWS}) # } # libcurl -if(NOT ${TD_WINDOWS}) # { - if(${TD_LINUX}) - set(ext_curl_static libcurl.a) - set(_c_flags_list -fPIC) - elseif(${TD_DARWIN}) - set(ext_curl_static libcurl.a) - set(_c_flags_list) - endif() - INIT_EXT(ext_curl - INC_DIR include - LIB lib/${ext_curl_static} - # currently: tqStreamNotify.c uses curl_ws_send, but CURL4_OPENSSL exports curl_easy_send - # libcurl4-openssl-dev on ubuntu 22.04 is too old - # CHK_NAME CURL4_OPENSSL +if(${TD_LINUX}) + set(ext_curl_static libcurl.a) + set(_c_flags_list -fPIC) +elseif(${TD_DARWIN}) + set(ext_curl_static libcurl.a) + set(_c_flags_list) +elseif(${TD_WINDOWS}) + set(ext_curl_static libcurl$<$:-d>.lib) + set(_c_flags_list) +endif() + +INIT_EXT(ext_curl + INC_DIR include + LIB lib/${ext_curl_static} + # currently: tqStreamNotify.c uses curl_ws_send, but CURL4_OPENSSL exports curl_easy_send + # libcurl4-openssl-dev on ubuntu 22.04 is too old + # CHK_NAME CURL4_OPENSSL +) + +if(${TD_WINDOWS}) + # URL https://github.com/curl/curl/releases/download/curl-8_2_1/curl-8.2.1.tar.gz + # URL_HASH MD5=b25588a43556068be05e1624e0e74d41 + get_from_local_if_exists("https://github.com/curl/curl/releases/download/curl-8_2_1/curl-8.2.1.tar.gz") + ExternalProject_Add(ext_curl + URL ${_url} + URL_HASH MD5=b25588a43556068be05e1624e0e74d41 + PREFIX "${_base}" + CMAKE_ARGS -DCMAKE_BUILD_TYPE:STRING=${TD_CONFIG_NAME} + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:STRING=${_ins} + CMAKE_ARGS -DCMAKE_INSTALL_LIBDIR:PATH=lib + CMAKE_ARGS -DBUILD_SHARED_LIBS:BOOL=OFF + CMAKE_ARGS -DBUILD_TESTING:BOOL=OFF + CMAKE_ARGS -DBUILD_CURL_EXE:BOOL=OFF + CMAKE_ARGS -DENABLE_WEBSOCKETS:BOOL=ON + CMAKE_ARGS -DCURL_USE_SCHANNEL:BOOL=ON + CMAKE_ARGS -DCURL_USE_OPENSSL:BOOL=OFF + CMAKE_ARGS -DCURL_ZLIB:BOOL=OFF + CMAKE_ARGS -DCURL_DISABLE_LDAP:BOOL=ON + CMAKE_ARGS -DCURL_DISABLE_LDAPS:BOOL=ON + BUILD_COMMAND + COMMAND "${CMAKE_COMMAND}" --build . --config "${TD_CONFIG_NAME}" + INSTALL_COMMAND + COMMAND "${CMAKE_COMMAND}" --install . --config "${TD_CONFIG_NAME}" --prefix "${_ins}" + EXCLUDE_FROM_ALL TRUE + VERBATIM ) +else() string(JOIN " " _c_flags ${_c_flags_list}) # URL https://github.com/curl/curl/releases/download/curl-8_2_1/curl-8.2.1.tar.gz # URL_HASH MD5=b25588a43556068be05e1624e0e74d41 @@ -911,8 +950,8 @@ if(NOT ${TD_WINDOWS}) # { EXCLUDE_FROM_ALL TRUE VERBATIM ) - add_dependencies(build_externals ext_curl) # this is for github workflow in cache-miss step. -endif(NOT ${TD_WINDOWS}) # } +endif() +add_dependencies(build_externals ext_curl) # this is for github workflow in cache-miss step. # geos if(${BUILD_GEOS}) # { diff --git a/include/util/tcurl.h b/include/util/tcurl.h index 55c4d6987ff9..adeae5266342 100644 --- a/include/util/tcurl.h +++ b/include/util/tcurl.h @@ -19,7 +19,10 @@ #include "os.h" #include "taos.h" -#ifndef WINDOWS +#if defined(WINDOWS) +#define CURL_STATICLIB +#endif + #include "curl/curl.h" typedef struct SCurl { @@ -33,8 +36,6 @@ int32_t tcurlGetConnection(const char* url, SCURL** pConn); int32_t tcurlSend(SCURL* curl, const void* buffer, size_t buflen, size_t* sent, curl_off_t fragsize, unsigned int flags); -#endif - void closeThreadNotificationConn(); #endif diff --git a/source/common/CMakeLists.txt b/source/common/CMakeLists.txt index 47b3238cdb78..970f745b2408 100644 --- a/source/common/CMakeLists.txt +++ b/source/common/CMakeLists.txt @@ -83,7 +83,7 @@ if(${TD_WINDOWS}) PUBLIC crypt INTERFACE api ) - + DEP_ext_curl(common) else() target_link_libraries( common diff --git a/source/libs/new-stream/src/streamUtil.c b/source/libs/new-stream/src/streamUtil.c index 4bf78caf6fd7..43acf3a0be38 100755 --- a/source/libs/new-stream/src/streamUtil.c +++ b/source/libs/new-stream/src/streamUtil.c @@ -23,10 +23,6 @@ #include "decimal.h" #include "cmdnodes.h" -#ifndef WINDOWS -#include "curl/curl.h" -#endif - int32_t streamGetThreadIdx(int32_t threadNum, int64_t streamGId) { return threadNum ? (streamGId % threadNum) : 0; } int32_t stmAddFetchStreamGid(void) { @@ -766,8 +762,6 @@ static int32_t streamAppendNotifyContent(int32_t triggerType, int64_t groupId, c return code; } -#ifndef WINDOWS - #define STREAM_EVENT_NOTIFY_RETRY_MS 50 // 50 ms int32_t streamSendNotifyContent(SStreamTask* pTask, const char* streamName, const char* tableName, int32_t triggerType, @@ -884,14 +878,6 @@ int32_t streamSendNotifyContent(SStreamTask* pTask, const char* streamName, cons } return code; } -#else -int32_t streamSendNotifyContent(SStreamTask* pTask, const char* streamName, const char* tableName, int32_t triggerType, - int64_t groupId, const SArray* pNotifyAddrUrls, int32_t errorHandle, - const SSTriggerCalcParam* pParams, int32_t nParam) { - ST_TASK_ELOG("stream notify events is not supported on windows, streamName:%s", streamName); - return TSDB_CODE_NOT_SUPPORTTED_IN_WINDOWS; -} -#endif int32_t readStreamDataCache(int64_t streamId, int64_t taskId, int64_t sessionId, int64_t groupId, TSKEY start, TSKEY end, void*** pppIter) { diff --git a/source/util/src/tcurl.c b/source/util/src/tcurl.c index 2a2d9373ec11..664bfecaab26 100644 --- a/source/util/src/tcurl.c +++ b/source/util/src/tcurl.c @@ -21,10 +21,6 @@ #include "tcurl.h" #include "tutil.h" -#ifndef WINDOWS - -#include "curl/curl.h" - static threadlocal SHashObj* tNotificationConnHash = NULL; // key: url, value: CURL* static threadlocal bool tInitialized = false; @@ -206,10 +202,3 @@ void closeThreadNotificationConn() { tNotificationConnHash = NULL; tInitialized = false; } - -#else -void closeThreadNotificationConn() { - // no-op on Windows -} - -#endif From 24933fd38b7766b63ffed10126cc2b41ee771618 Mon Sep 17 00:00:00 2001 From: zyyang Date: Fri, 6 Mar 2026 14:15:25 +0800 Subject: [PATCH 04/18] docs(pspace): taosx pspace docs #6653327869 Close https://project.feishu.cn/taosdata_td/feature/detail/6653327869 --- docs/en/06-advanced/05-data-in/22-pspace.md | 101 ++++++++++++++++++ docs/en/assets/pspace-02.png | Bin 0 -> 21095 bytes docs/en/assets/pspace-03.png | Bin 0 -> 33029 bytes docs/en/assets/pspace-04.png | Bin 0 -> 119528 bytes docs/en/assets/pspace-05.png | Bin 0 -> 135932 bytes docs/en/assets/pspace-06.png | Bin 0 -> 20243 bytes docs/en/assets/pspace-07.png | Bin 0 -> 28372 bytes docs/zh/06-advanced/05-data-in/22-pspace.mdx | 101 ++++++++++++++++++ .../06-advanced/05-data-in/pic/pspace-02.png | Bin 0 -> 24256 bytes .../06-advanced/05-data-in/pic/pspace-03.png | Bin 0 -> 31821 bytes .../06-advanced/05-data-in/pic/pspace-04.png | Bin 0 -> 124149 bytes .../06-advanced/05-data-in/pic/pspace-05.png | Bin 0 -> 143385 bytes .../06-advanced/05-data-in/pic/pspace-06.png | Bin 0 -> 20081 bytes .../06-advanced/05-data-in/pic/pspace-07.png | Bin 0 -> 23831 bytes 14 files changed, 202 insertions(+) create mode 100644 docs/en/06-advanced/05-data-in/22-pspace.md create mode 100644 docs/en/assets/pspace-02.png create mode 100644 docs/en/assets/pspace-03.png create mode 100644 docs/en/assets/pspace-04.png create mode 100644 docs/en/assets/pspace-05.png create mode 100644 docs/en/assets/pspace-06.png create mode 100644 docs/en/assets/pspace-07.png create mode 100644 docs/zh/06-advanced/05-data-in/22-pspace.mdx create mode 100644 docs/zh/06-advanced/05-data-in/pic/pspace-02.png create mode 100644 docs/zh/06-advanced/05-data-in/pic/pspace-03.png create mode 100644 docs/zh/06-advanced/05-data-in/pic/pspace-04.png create mode 100644 docs/zh/06-advanced/05-data-in/pic/pspace-05.png create mode 100644 docs/zh/06-advanced/05-data-in/pic/pspace-06.png create mode 100644 docs/zh/06-advanced/05-data-in/pic/pspace-07.png diff --git a/docs/en/06-advanced/05-data-in/22-pspace.md b/docs/en/06-advanced/05-data-in/22-pspace.md new file mode 100644 index 000000000000..12710b10cb70 --- /dev/null +++ b/docs/en/06-advanced/05-data-in/22-pspace.md @@ -0,0 +1,101 @@ +--- +title: "pSpace" +sidebar_label: "pSpace" +--- + +This section describes how to create data migration/data synchronization tasks through the Explorer UI to migrate/synchronize data from pSpace to the current TDengine TSDB cluster. + +## Feature Overview + +TDengine TSDB can efficiently read data from pSpace and write it to TDengine TSDB for historical data migration or real-time data synchronization. + +## Create a Task + +### 1. Add a New Data Source + +On the Data In page, click **+ Add Data Source** to enter the Add Data Source page. + +![pspace-en-01.png](../../assets/Common-en00-EnterDataSourcePage.png) + +### 2. Configure Basic Information + +In **Name**, enter a task name, for example: "test_pspace". + +In the **Type** drop-down list, select **pSpace**. + +**Proxy** is optional. If needed, select a proxy from the drop-down list, or click **+ Create New Proxy** on the right first. + +In the **Target Database** drop-down list, select a target database, or click **+ Create Database** on the right first. + +![pspace-en-02.png](../../assets/pspace-02.png) + +### 3. Configure Connection and Authentication Information + +In the **Connection Configuration** section, fill in **Server Address** and **Server Port**. + +In the **Authentication** section, fill in **Username** and **Password**. + +Click **Connectivity Check** to verify whether the data source is available. + +![pspace-en-03.png](../../assets/pspace-03.png) + +### 4. Configure Data Points + +#### 4.1. Select Data Points + +In **Data Points**, configure the following items: + +1. **Root Node (root)**: The root node to start traversal from. Enter the LongName of the root node. For example: `\Beijing\Chaoyang\Wangjing` means traversal starts from `\Beijing\Chaoyang\Wangjing` and proceeds downward. By default, traversal starts from the root node. +2. **Data Point Name (point_name_pattern)**: Supports filtering by the LongName of data points. For example: `\Beijing\Chaoyang\Wangjing\temperature-*` means all data points under `\Beijing\Chaoyang\Wangjing` whose names start with "temperature-". +3. **Super Table Name (super_table_expression)**: Specifies the super table name for writing data points. Supports the `{type}` placeholder. Example: `pspace_{type}`. +4. **Table Name (child_table_expression)**: Specifies the subtable name for writing data points. Supports the `{point_id}` placeholder. Example: `t_{point_id}`. +5. **Timestamp Column (table_primary_key)**: Selects the source of the primary timestamp in the target table. Available values are `original_ts`, `request_ts`, and `received_ts`. +6. **Timestamp Column Name (table_primary_key_alias)**: Specifies the timestamp column name in the target table. Default is `ts`. +7. **Value Column Name (value_col)**: Specifies the column name for collected values in the target table. Default is `val`. +8. **Value Transform (value_transform)**: Applies an expression transform to values before writing. Example: `(val-32)/1.8`. +9. **Quality Column Name (quality_col)**: Specifies the data quality column name in the target table. Default is `quality`. +10. **Custom Tags (custom_tags)**: Configures tag mappings written to subtables. Supports static values and dynamic extraction from point attributes (for example, `{LongName}`). + +After configuring **Root Node** and **Data Point Name**, click **View Data Point List** to view matching data points, then continue configuring the remaining mapping rules. + +![pspace-en-04.png](../../assets/pspace-04.png) + +#### 4.2. Upload CSV Configuration File + +In **Upload CSV Configuration File**, click **Download Data Points**, select the required **Root Node** and **Data Point Name**, and a CSV configuration file will be generated and downloaded locally. Modify the generated CSV file as needed and upload it again. + +![pspace-en-05.png](../../assets/pspace-05.png) + +### 5. Configure Collection + +In the **Collection Configuration** section, fill in collection-related parameters. + +pSpace supports three collection modes: Historical Query, Real-time Subscription, and Query Sync. + +- Historical Query: Batch query historical data within a time range. The task ends after the query completes. +- Real-time Subscription: Subscribes to real-time changes of data points and keeps running until canceled. +- Query Sync: Completes historical data migration first, then continuously polls new data at a fixed interval. + +#### 5.1. Historical Query + +Select **Historical Query** mode and configure: Start Time, End Time, and Query Window. + +![pspace-en-06.png](../../assets/pspace-06.png) + +#### 5.2. Real-time Subscription + +Select **Real-time Subscription** mode. No additional parameters are required. + +#### 5.3. Query Sync + +Select **Query Sync** mode and configure: Start Time, Query Window, Out-of-order Tolerance, and Query Interval. + +![pspace-en-07.png](../../assets/pspace-07.png) + +### 6. Configure Advanced Options + +In the **Advanced Options** section, configure other parameters as needed. + +### 7. Complete Creation + +Click **Submit** to complete task creation. After submitting, return to the **Data In** page to view the task status. diff --git a/docs/en/assets/pspace-02.png b/docs/en/assets/pspace-02.png new file mode 100644 index 0000000000000000000000000000000000000000..c58206c270831085f198df1b1068930014ba6f50 GIT binary patch literal 21095 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 ZJjCgQGwo_0TN8ftxNr`QEHt`y|398QKWhL0 literal 0 HcmV?d00001 diff --git a/docs/en/assets/pspace-03.png b/docs/en/assets/pspace-03.png new file mode 100644 index 0000000000000000000000000000000000000000..2c4c9766ec1f75b1bb01a7e331c870bcd82ad042 GIT binary patch literal 33029 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]v$8O@?Ujvxdr#SfKtyY!Z-wFRG;f=UTuO6&6moIl9T3 zKhci=!Vogr=vIAqHD3-6heAV$x$CHnlEzFa(hiq_XtJl5863MPJR!DvBRi8v8y)nS zt?7f`izefvSw_dx*48wBuib4JH}SpaW1(}j0Wr6s6|mIAj+y2wJpX=2l(KTSOh1Qw9N2GJ%U2UY=uf(oXhsa-Gyv}{e zVn^bp@7S(fgh!RRc@JP)KLD4Fl^;g{c|Hnfu`V1|XafZCNl-vMyIGb@Y&qZ!^SrtV z^)r$gtcz#_T!!f)=*`AQUJA@wY9}MZVPRp5ZQm;#y?*uUl{Q_?`RVzuB)jdMDdz*B z9Y|UX6Bw9^mf!-HW`Z5Q#1(@n`N#F+F(FlC60nl(sJV|(y_7y~PKh3O&+kngdJeM2 zF!h7;ieJ4P?OBF6FNe-k`EPkGa=Ztb|01Steb-eS!ZT9IF`}Tw-AAMeJOGgVVa9r> zH<0$D*#U`4FTBJ{>1v&fm=VwnIWPn5%d1p7JbRV=M$PP>U0E->M{)M~U6Y|QiH#?% z*A9TwzIS3Te;w;_uk^T6(?z*zHAkp4L94^&z+$-S(aE!ACPL{L0Q%3zv2GSmuFQ%m zoIKSBR+H?kV1Y*tucgJDm*cW-wq&oAZJfbY%^X}By0#SdA0wGiT6)#H)1&52j9r_F z1F<6CYP{RrF#q{@ew&W9^sYez%%L8^&|R({_@rxhu)d*W834-vC+K(0e9l1~4oz`8 zi?h_O7o)`V)f!kwm5`M1-`Mx@1I*nI7y}E(7eL@`cdp!Nzvwmsj`h)_{bZ?3QRk~pa7Sim%#@K{|{ zBjasKOdI>=CRSsdN5ZvkM1p>=jkw2me zr||ER+#L|M2CH>KxaFjs>0w=SKkiIRG6@dL zAz*{p;Q`A$hh9cvr150aHNAVfP(N&>+mbiTdhb0tNZsO0vM$Y+{&u zF@GW3!OM;&%V4Fk(K@~8CnXP9YPXQfmTtGp;aQD8&tOCI%OP}Gea7xk@f%N%Er zeWiBR^QB}4)hk!IoR+M3mt!rs%vol>pP@OG76Ec*KU9(m9M~_g?!%6pJGJ|j-NUtF z1Sbjz*Xk>1FoEJ2`hbwEie>5g79P_oRrb0qnNn?ckA(rgUvR1Fp23oD;%_fo3cvpu zVl7_3d5>dT+n_o~>kqL7f?2YHcRiNXp#-b}2@x4%rswW(Srs4>rmn7T=7d{hI#Cs@ zL^suFydPh=9VDW^s-5C>aXR(w8vt=3qVT{#UIH?&0O;@tYt!W=k+zIX=-%vy5APZ7 z$-y4`H=!)7%%|HkqL~UL=U0CQdt*A6i=rub#1L;S7 zVzVk@yn_otk2jLLjK=B{^eK0qi?*Ii9mGZE?;-nrwY)swAgCjW_@&M67k%W-#`?-d zM+Z})gTp{Y156M|+RLRony;~2Pw_WpF9$Jon$`NibJTInp@NB667IO$qjW5eeL*ue z^{4R7b6DS79b0(A1)}_}-x*rU@vkk<@ZG$@cXc|mJWreNc4k>})l}tp)_uk#e0S<= zS=~Lb8Mfokn#l$;w8+8q`nuKpGSr~rizD$=?_y3RzO(USH+{v<7aMgh^8|sxacp@s zoMHPgq*<61$4$fHK`SR&&T`tm;8lvnvq8p--Gw&zi@g5`!++N|^>Zf;tkSD;ClyGn zrYl^$4DUBm{Jom|7#qd6+rV^8;Jva{^TlPWRr7rPeha{S`Tl}{ZTlAira$Gjgrj4X zgB$i2A0E8!Kzp(&NSwKSo)#LK2p1!5tao>h#Dm%qhuf^L0eCd2^3Y;*z8h!H!! zu5Z3Iej@gkctQ|he@)?RtoLV9fVU<)Q=kPwK2VnOz;-bCwmq=jfYaC4B#{A_v_b7Z zpdp{gr>?{Dks~?SFtw&X0Bg>ro2p3wWpBK~l!|lYb#=>v!4x2o0U!s2oqK|CYo!#_ z6l5UxLF5e`Ei-xT_a0G4eLJm2Ta0YTUxW^hBZSGC?$ATKQaJBe!4cw_=<8$bVmprY zQq*Sm!?|&zdH+0_FN$Lg=hx}@e|hB!Dlb&15_;nfu& ze#*BAh1QIb)H&|9Htr6k^MY`&YrK@G6ySHCDhSa4L`tt2`vEdr=irc{dw1b0XQlP> zXf!+wF#mqO1>6MK3+qXWY8qM!pp4VpvV0*c%CsJO#j7hXAx6D-}2$NM@zwXCFPGJMeu zfZq@$Q`+SwN55}R$oL&$1{`*ecNG+w?a?u;b_d?~pSycrl{g|JuS-Zs0=f_2(4}>? z^U^2@h~y6$7;hJ-fD#BbBzscFR3}2xDA15hV(;>^;+8YCuBr$Mg?k`&h0caCMO-nCByN>01 z`f-UuyHL**ZM%8`3LzQB^ljFQfCvi3Knd!sBWIdYX1UJV!|& z9K_G#u=6Tf0$@yeEbM;(!W!8!Dcm;TWaxKv0tiHx`T7jtmjR%aR2;lINi-S15h0%8Aipg zf{BK2iYKGi*9&*&%RR0>GH%;y*C@RyQS}q2NPBv=j0j zX|PK7oE5NepVz(Rx}L@(>O|iguhkYZa+FV{~@)h z!OOr8da&@SFjS3FiYukjb3#1EFgs{>q=1TAmrNK~frH7-N7oHMN zP1iIjcAZWEoJ>FVt9})c*Rcgtu3w>~KLEaG8Q|Xa$FnDbCm+i9IFd*i?4TFzK_L7* zNLWK_9>!|pRM&_d`~o^VMSMUvsav%=^_;FD{bo zCvo_8E&F#Y-SOY;I0-Un)S9AIm#zL7N`LwSO3Lc0BqOtz+E)7cbKsLlw*YMt5DYL1 z48a;#=|0Z++ZKM)vs!LhEKqR_&6DT8trNN)7XYvDy6F=I=yY$4l~;43j1vt|1{0}M zT?zbm3qJ-veWAbO!;Q6m&9sQg`NR@pZw$ViFL)a?YXf-n?QL;EpOt!?)?rkbD16G{ zgkv{}Y4xJQII)D)JAzkTdx{Xsg=05Ivk#EnuWVKV>^6%5jsAG$Sjt@5SX2{ z)|G8p8Lblc!6mO4hGt`PE2dq*+1IV_W(Bh|z38NXuvJ*q{4#laS8gC&|FQp%=VF(P z@%2&HqKw7kyeE`JQrP7bmb+EXmi=|mgFii)lqMxPzoEccR%V+j_fw9RZ{`{LhTu;x z`%<0aF%#z>;a)z6Bc_6PC;EPEsUxdTkdSO;d6w+Ar&s-~@S>ukCU-*sH@aoI&@1Pi zAwM#g^VH#Cg-VV7F+0%^d;#-~uWt?#ci$A z9`ODNAZ%k>t3}&x_xT>^n()PLZ$*0D^T5+hv*^_c+<-{BZsAId>+u_P^I9ZB)96Ia z{GZ~JBm;?G6;kC|7-?1GewkG9CPw4=y#mJu()FpV3PyTqAUI7BR({poEK-owsuebT zp^t%lfD>4xelw_7zK$JLfjl~jzldKy(p{Duee)CXABMoLj?iO6tpN(~HQM{Og)TCL z1rAm2XO*yhmP|eQ`k#brc&`m20Df#%V~iN>bJU^n8p+IpPmHfgLp4}P#%v}4$5eas zS`b|%l&2Ccr|?~=n2=JN?bd_$M$W6hUhE;DkI*9h6Rqlakej#*0k zd%pVq9l%le^ux|W!x3Qr(R=oA@4veRq^Y?Jq!><(Z$E@o5QGBt)MEyl2?K!}j}YfK z?W;tJ|Gq%u%g847b5mq7aCq1!;=-W^ha$iwXnBJkF1F#~CM|>+*zuyR;@|ZV+urDv zP99fnz2prSGbmNlOxOSWB*q@S(f~*rko5)%m!f7*C`5l|bPwAB;9l6bXdU0L0%Qle z=#P0*zB~XD_Hb~F7>plcUt9RXPXr(DDX zN4Aj=aD-U9vg4r^lWOq#9%Vq)$iJXIra89m!#5_4mmd&<;IdrgU^{{UKT&R{eE8tS8B5dH8C}t`K$P^zK=YaE93UP_J;YF*LFb=^har$M zSXTKDv&Va83Jp7KAVaC|?kzq02&_Q0Ho~~KMz8j*=7a3;9v@=^2FS2$kcZc3EpFL3 z_*9Udzt@)KaO*H`Dh5b6Vks|lNVfMVctPZr*HF?v&}gWA(r&h%;!05oTRE>*OlV|( zXkg6{o3s!QzLhnPHl$+vqs`5rMg<4F&5D^_{F!NbZ*}99vWWY8Zg|XKdM?(@K7Q_@ z3Y$S`Qr zuSR>GVIotD&ExKqF%t_(0JCQ0+q<}DAFxqwb9LM z6=A(EJvPca^Tfr_Sz*{&v==UeMrMAFbqIcjBhTlHOW3Ta1T-h-TX!Ez^TAw4c{k21 zudbcS8cum>tM+l}+k&x9O!*#R#Uo!7%jGP7;p3*pD9iOuj10vM~>q(K7}8W!n&@Cx(1P-R2=17!a7G^u!3go{O;_^ z-#hd5Fd7)$=-Qemej4cem>;ZtBbuy4H`&0ZK)ZkwJ)JF>P_exq!TbHfc75D=JiFKt zR*`*vwK^p$h0$adl_f!j&s%RG%>-g}FSawl^EJLAp>U@Ob|f=r9*`ia#h>>!=|Ktn-x4BYQAhU~EXaIYhzAuhr%fXvpM6t33l!z8Th zaU3x9GGJRE-_phR1qkU%63FD?;KD5&CkbZOza=TpJJzzPwD<{JpZG z&RY@5e3KDqyd0WucQ+|ta;MfEb?B*;MA;1eJfCHn`d!~x>$Fx*>}M1-g89e$N2W!D zW8Vj9EWgT~YNx(a0Q0yMB^qj9OPnT-+GBwlFQj-a3uYrKxs!#dw@eD9OQN7lw=NJ& z5Q(6o2;@^L`}{*Y5Jp8$U$q-%7}aT|KN>FjKm}p5{84w*dDu4QwL?2;^V6Wmxmh5* zCn^wUzUYrMVS0a!-c(89&!ceuI$9a3D6e{Omn;SGWN&r|>Sv`^AQxGdDoXHBWQ&A? z-IPrJNH{V@giBvRXqG={YfBi?Y{hJ#9xK<9!lJW1wYp8QGv7tCXFtVXjXW{TubV)wVE9BeI9iCVy}R z6FOKt-56ELIszFQ#Yy%MV|~BayVdk!>TqW2*eJxFV;8A692~1GG=`B_3meZi)XTkE z@b&$@l^lKCIkLOvkrExI)nt+x0<94x2Pu2RnBnYx$fS6di_t~ksS%Ae_wKD>17P&= z+^zQ;PkT0<_moB&Zdb2h$-@V9ASVZ-Eqx5VWe(hsQFd6bEPd5YdHnm?!p2JjBBHj= zl-HqxiZT!&J-R28nDuA#^!O2Vu zgPkrsg_-ox!vI-h~r zPGQx}RGn#3;kbr{nOR|Bx`RWmgOb+R_!l>Nx*9nMBIt>MpY;1Pz?rW9;=}iV>A|bj z{9+h{;A=_2Qm;`7(iJLnPm`nUAc@5uvM7(oaF`99tZP-{ss|4LZ| zeoC>2PY_(i{)um&g#BX?ZjitGYcKuz@W1jP%MZ^G4j#$VDqr|gvBagNKECg>cikIK zyvZr(6L*~?GoU>`v*q%JS&!P!#%1(0ITFVHEZ)CeXxF5&E`r6yRU|pTyk>wKvu+Y` zV-+t3x?5N%y!QLSs?rfL=jhciV5+JfU}ng5qmpH(^p5=@mGx5nIT6qO50xO~;D!5^ z2vAT1?dSVibw9n{vD*AVR_gykH|7*2!tCp^6(0il2tsWxC>R0Cd()ZzA-GK18a89o z2a0}!9Zbn@*;;0%2HdN4LmdT91us#lINo~9eA$?6w+EvfI9e=jvzQ89 zeMd)0u1-uOCJi+W0~{3Y=v5}Q?r4w#T+n5l&~N<7Ar%IKRYgk1EpSp9I> z)XAw@9BZz)yHnS*vc_tDu5HeJd8+H-r#EC(il2y+V5M_gd%F~BREL=FN?~Tik8DDf zr`%VSqbJHRN%FTeq|Wj*DHlQVox8%N{+oz%MZgJM9;@tV^HEe}ts~sM-4Ah_nd+#0 zN_4*{T8`z4pZL#bhfa?uR=To-Y+O$ke7}vRMtI50a(ONe_yqCciOvkXlb$CW4Tstu zORAXjc+$N7kUqxY;1qvhNv2Ap368&8o}Wt&xs}#-Bn}!jap+wS`2l<+JxkJ{MdAp7 zWE-!~%s@rZO|D#H5x_vw-<=1%_FI&BoYt>T<@J@P1cD9uzgrn-npYB1FwXYJ!R(5z z)O4vCQgf62hsWLIT}&_mTLBpjwWaydRUeRcqZY{tD7m2&NGtrB#$uPc&@WKv2RAd0 zcrm_F4Q77FYfs{JYIE8FC@bTp>;nS>STsRSF=9YE z<7H3N%`-b&+nab!McSyoPR*+CSmA7ff=qiM!NI3)`yrCz;@tQ)Kf0DNHs*_+ijyJs zD;uRu+B|MG^^E6w^48htvFSw_nVCS4su{jFiQv`zT|oPO)!rpuN)NZ_nXdP>9Sx^NQ}`OsmyR|1i;tr#-RfTNcJ?~r0f}3 z;lQ$TGkvFWbLzX8=E&1*ed)OQop!4tpUHI8a7{xQzQIRq=WguVsvgHOesh1uJGASD zQN2^&4yjp|JGq=)?=c8qdN;>YXt~`aNt3=8pV(1&?#I|bX7=P`8O7S^MwsIaI%Hy* zt}QSPpkGe~kd2w1YU;NFziSa09$xC%Mh$iii?7;SpRdr^CHnA`YPMNdPOil~B{tUS zXmqpn>sNB04-&mS0IOjs#p9VP+_isbXmQYD1_uQRWN2W7gNp-_S5Y|&N%B(HPz%Br z04U|R6{dwE$9WDP?)QT8;h0s#)1(k3I!hB;&Nn63Ggc0^F2QbXn@RORzz9|F#i2be z5el5RxkxE@o@n|sSf>zbGDRjj0HLDHTyu5fVOfqhYMv;zOUNRw5~yE3uGz+ITKz}^ zPU~ofXa$G|)FzCV8ZOTz#W&A&q)cTgW#RK*O+@1DH%!&DD-HwGgQxfux&M4~3MsM~ zMpyQ-C|R#_gi~c zJylOt1wVa!>UF&<7~32}5L3?wTi8RlspDm56AS|9i}4hWx0yWa%XeUhmISzMIDVe< z`4*Y5v9WM)Jef|y!-J#X=qT$hd>4mIz*WnX>GC|!$C9&FbCgLbtCxNA=UlN+(nZOe z=kj#X7snK&7snme+I&t}+lPCJE>7ERRpvydT3!onI%USPln}erv-6OI$LQ!=TU#Xa z|KvVj*RIDtFBvy3Ght))k%}2gy*t|$(x)qPsdv@?NN-x>GC`qby89)>DPa1lTnqAz zd+dpVqbEz`^8kjg(-VT6S4p2x2BnmceXC7-TI!s9EeWU=R)T-IMpAjPvZaL?BP;W( z7^36Ss*)%1djbAyNE0)r;m zBmD1bp5g+(j|7OeO#Qf~4ylVHJU(`W{*b3j**UvaVU2@v%eBNkLx1;ZIX-9$x>r+K z?Lx!I%ehpB@0PS#up+a%v$P&g$w-~Xta@XBjP;S1kEFC6BW<=YQyBMc=+g~F6e;Jx zp91AX9bG(r9#fon`4m#)u`_oFt0EZ*v|^B{#NKt}AUDGE{Jmdap@eC{a%U|%B95bbeQ$^Qj>RixjjUYPKEU>eM-~f5Q{JX+Q#v>&v4y6xN@NXdrST%A~4+V zdi<03JDXIYP%hko$x{T$V_2&Yd;Yu)Pl_CQRNS|N(LMTz(QlcIGxc^$&oZteI*8(@`3f!_Sm{o(n zIeJake`o#_ioF7BW4=0QichOH3O9M>Xss*?1^1D@@RJ<-yAc{^q_FGDYiOT3d_aWyOsF1fkd@2cdodr>rqL7S}NUz@e1TrlTU zOi){gYGGZ>hX5CyLn+ZjRxdpJRM#mnK(2HB*H3!3qEl)mlpG*KgtO?{IOCRY8qh>H-u9Hj=VooNK3pySfoHl{A5^_SpVYE7nO9Aa`D zd~%%OpOf&;P<`A%c<09MlOJkgE5Ab{A_%=S>SFvYE%V)uR~^?6$MZKgV;JxGVY?md zcpaw*QJ9&T=@}UGLI%$y$M93qS|P>+e&T31*3APqRh5y+w{v~tAuxGApx4+#K;Y2t zNZfkXt%IEuN8#jH5Lf*8gHCr>w0PgFaogWu7vna&a*qX&zPn9w9M+UgL^`i5w(>z2 znM!Dq3M<92Nq)_F*4TFoML-uf#ygs1l?&xbuvv0hEz@^O*=E-cuFlh|o(_!c@U}}2 z>>8(xL~nBdV`?y!E^#JiwVWtbRaGea@fJ%@?q63I zM_zR>&$plJl9Kc;hz2PzMK^|WM6zVb;zsX&{;+Va8#lT!a@m4BJz5#|4e{{sz#zGu zVB$Ixf#f~!`;XqB`oyAW80qLDQps*D z|KCPGhSvin4P6Exd?X4<^e(cfw|AZQ9-Z>5nb>&hNhFtNryAVu$$!lCYTh8Uf6et> z|4*n$?gij#yb|D6|Xx%H(** z6~GvMHw%jhp3*;10w#l}^+5acN>Llvv%cSkKp@T0G1Tjn(3#&QVr@mN!;9Ig^*6#QBONH9; ztEO`U8Te{e<4!iCbM(HVK&4nrW-iREGT;qe^;e>l0`f1VmH8tIP26TBx%_3MXC0sO za~P;fUTJd)nQzSt|%FI(-)kKQiD_Le6pa>l|AT8V|l;e@1? z$j@SVlxe>?WwequA4?f#F}I5+BBFI)C2;AzsiTBB186{%*8gJbE>Z+;xTdNv<_yKN z{RdQja_#Dje%ilP?JWL~1?TMIY${Z$qqEm;lU&QYZlh4=(KlXdF}vS)4m2vP$;Kz( zFW&_VCS7`83iz8|78g=x-naw1K)SH_$zu$XRr{9Q*Xl04=oZ0k z4)4H5!3!K3F7(IXbkt~nbt}Jjt`Fk0I%ZL$v#3~qTf2;`KIl^glu07lFxT7pleP5Y zL*)V;8E7K8fb)wN!!TIeii;aJm0(9-2a|2|*fnzDuwpVtl!_H%KDTguy~~u$qz?fW z=d86lj*RETD&hR_Q{fGI;*t!eeYrGW`6+?$vUob6teIzm+L{-mR$tE{Zd zwFen)U52buQr(h-x3=)3`(NT22nb{Sp)vWqH{`eLvTF;T32T9vK<&d6Ufj-dN|x#M zxTju1vnCVWg&?dt?#9!G}{qsplF$~@zlKHS&o!b? z@C?kSJ$12l-L7g7o096aCi%TKZ%SgbteRnBLw~J@4l`MJO3kOQ6NY70we`lnj)?&o zZqGYSsOt%eK(x<#o`|%zP9c%lS-pw8RwFYFCn{P<*RAuYoWU&VBu^l`xP(1 z^XH{m&%DTP`YVKHp?qgov}neDI-xZoUi2e0_gic`QS176@KglkHr1aQyT@y#(lOGb zdKfK-r>+h<`Gb`Q2rnh@87r_&I5uHk14@Bu3#&CQL1AgIFg zga@MW+C_fyjvVBCVW&etyl7j{)nV$1$AQ)XbsyX87G-70%QU&zofm1$S@r!j2ojvu zDVdwgtU7$uE3o;AoLW8*M`1it{8VLOsZZtB)Xntb#ok+U;sXfP(r4k+*E(QfYP6_n z(!6o}d@-ViZ^Pj!_*ohf&$bz{^#~|P1MH`lTLrDc>p&1!QD=2YajLq3!E4RU$ z-Ne@t5e+HWIIV51VWgb?YZjwrZo6C6_q~KD#2;R0J>1J-i$E0?XT zD>kqxiRqdf#T@CTA$c>s@CH5{ZN$+h|H4_9#ub};9@ExsS-Abflh~l@p{6cG(mmXY z3Gekd4i4t__&0xR8pCHlH^%#8J45|fJv9mu@{NY#P(v#t)uN4iMFcc7;>{K%?=4GL z=hI-yCXdQim)C`%!wi5|Ktf_++~0au;wuT}{Ygzz);f7F?FFCyK9vX$ zn^iO0K3?XTXBy`IWw}4y$^7+8@GDWk`Tj6YiydQVNodz=t zG|)H?C2oxqexaUMl!26)B^}{p)1guycqfRmq){CQ??3{qX=jhV$>w~>40a4S($K9d;P_dXlo_0%mjv`Tg?B zT`noWF#a3H0XsME*vTe&VkEs$W~E!^UqeMf+5)6u!5}T6xz-+ie|xGXAZx>bP2q1e z4^cdxV5MR5>XDDE95}kG*4^l8sPdB)smlUiPQL5zydhG@O0$LZm z2xj`E9q|(4`lNOI{QkI%he9N1YNot2Lz0g+XC7e2Jg*x`9q$ZsVs3q@9Vh{;r-$b? zEbuUpbdUhTHj*jK9I*MznFMWMn&P9wN2e!TU}rQ%Ds~?CWNY6Pt&TT&h5@wnXB}S zo`Tnl2F@~2-_{lHj6s2QG3sc7iOETRRPzd9 zv{|{vL(K>Ygm8{*_qQ63Qo>!tFyTnJWPwYZcH@$*7O7S8>8?zHYAh9_ZD|#2k1*B^ z+W!&;V2*rg`LG<7_pWgT_&jqZ^f33TN#$bW`yO-{mnD)VTcq8Zhw^Zp-T z0DRPgTQ&757W%)%00_kQzFNw+cYl?Y;Vel6fweUizqL=DiOec$(w?d(mv{8F9rEOH zj5gk)0Gq%6e@6js3~%+z#x)8m=f3=7v;nPq>mRs!#pufLcK+iSaY*Kiv_GK-(>uf= zzRfw1xAS||k{LDs{bR|D`1S>20tzWmhqPWX$I?Ihb}a$D^pj%F;=!4(=pd6LKe-$e zGt9s7pD*qt(<6|H?F%a7t)c#3h1uZwS_N(I{zO5XqjQFd!3VF{*_ha6!nsK+GcsJv zaxezR{~2Fno@Cx|OiUL8V{b@87@Zf^H&9OeZ|BxlqdzMPltGwA0WA{~?%&RUjAV!} zl{KhR6DFL>z!(irNPx5dOXxu&7x!)9`BMV}NPS0TZIBmD9HM%QZ$v7JVY$$^B;-c9nb?s&9D;M z7eFd{t|DbyB<`PSeY*ME9{vYj{%0Ya{{(q0#51hCQ;ARu`lhsmiT5X7(r7oo#DsxW z>R7%)B>A2%EVZOL+eBJMi?L^21i9d0;Y^)DW z7p8J3yqsG4B2<~Nby?@YF^LyzUa#pO#F7)GzIZTp<;sH;=t1;7EWma_I3D>v6nQ8~ z>=rlt()rGvQ@OVw)V3Qq>G9faWhVG957Ju4V!MdAR;sA$5`n8Ail<(e6LN-4E?9pp z;%6^21#;mQ3!OL8|B`zdX(p@NGg~G!DA__XfSTjE{{ccTPUKPWy4;HrV!lS>>Xm?^Zpi)>KKVqttYv$xjGOwunqXonhgpsE)Up`UiVzy#gBZRVG@Hn<9)#)v;3Su z`q{?zj>TJ0zj?iaL}{lj_G5Ma@8ilHAH=>h1Bf2Hx;Q8bewf4R#C7o5gOsPYp?#zM85N%By}~fk$}){4(1<4O7CDSI9Jyuyg{Nqt?L^sqV8E6ji zs%sulhuFc^m~&kk8Lyy0sxP1Rr!566{M0(*Kh}L%dTw7Fuqi;k7jV?kz$Z^JLH zUT8Jg<=RzCepfI#7wgV$*Ux7!!7f&x_aMSSW5*>T^nY*ZB2|Naz|FVF5EN58%#3_7`VHXt;Zz%;-X#mo85tm zuX*!{F}YyG!SWlLg-w6|`FW|W%~NSd!`DAjntuyoLG78XNUK46s%q(x2 zJ(OF-Q3zGGSv1`CWW}nX?3qidMN^>9dcZa_af0mLYj@wSGY?!+4j8 zcJOeGnmSDo1kUPuf~1De&brKhzG51FNgcf%)UiF;oGQYXAk~lNC%Y`TkN^}2<|9TB z_AM%%SLDFq2|ydRTv)Td-ZNx|%-fD9RAu247a^URF5xR>1Mb6pFxWv)1e$<&zogM*m~+uFj|kB3G&+s4qL@{*;?wUB@g zt&VG#1@B9Uim;+O=Dqq@tr31h2C@2BE_;YgrIQ5W#Gxz{nm2}7oRpvqclvNEx_{h!kjesW7V3VNx5AmIkD z)6A9`8=dX1AP}Y=aXRque>HDNj$<{G+%{KS<5-;Yz9I5`cx+bo`l4&i z3=HH~8Yb3#FCf%UKEDz2yT7q#5dUcGCT3LNcVO;gZ-3{TLOp|BoI8zqSpUcYYbsG~ zMC7;-j(S}!aBgngEbq*uM1P|*P`T1>h=}~;UsGOX)j#!(D8+71@^i;GdYh+Hq0Iej z{;iOtP-739Di0D8da#=X-BEQBksrXxMbFY|rKv$QIx;Z3zM3;t;AQk|`G|>5;iiIF z>E-<6-Z9zGFJD^}Lt?lsA!+n1qN=LMiM}uLd7t>oD_=mS7l{0)6ZcKfxmoFoaD--Oh!H&*+rEn{iT6=4g=DA|e8@8>Hq=6rJXWvvL)bs=M zMW=v_N=XgnaS6Wbesx0+;k!yjD*Z|qbV$8Q+T1+N^OR#blr|{0Fd9arPhU5WZ!}ZP z)F=_#uRVZLqa@c+>HVXYxI)1Y`H#M`zzo3u-As zDHhDN=D_`&`A3%W(8OgIpG3evv7HHE8w>mVuH;F?JTfu- zJI?IB0ZyLkUl!~`9i5h_rk*eQ(S8Y@rm8A>aph$tV+@WQGB5z?_YH_nSl;isO^o%+ zoz4Qr2=WKJMppz~Yo)tRh!-jSE5(FIW4<})&omg9@L$0nJvGlOeqS&cky@5wlY}^v ze8?wQ>nT8DPX18>-X`3^!ZS7a`1WBkB~)efJ}W|b|GHIjx=nhKEvb&`GOg0S{$rN8 znjqrOsTzIb<=0D1V?(yVu6pnZ?zbqI{u($^mwZw>{+Mz95j_RP{?_%fY5va@MXZq+ zt0nh4yS3xO-yb6>|FtZiKMDXxj&Sq5!6U_w;SNL5m#1G@%PIf0_++xuPrsIC)1Q$| zz9)LDUeg|#N}5BrZ?0gQi+ln3|+(>EbeAg4f8lzvU!UZauii z>06ckvm2nIGd5W}P$6A__~a>WQn@d^nEEiV^LjL3U|JSq%xLZrn>vg-&g zFGIfFD5%UZz8{^(>#%0F&rHuZX~>4qsyEuGoVgMf`&y@hYJ@QBXw=xNx9+dYA#>fV z^54#sJ7g;66zbF#%D*zN?{4-Z0zd4w`}|0~4d|U+3YA(W$L^<)+}YplzlnOrez>_j zBHVw<7gV=Fs52e%n55ojA+ut`^UD2NYx&_Ql~g?ii+*-&mWhZD6e==93L0!6cIpot z@3qNmzPNXe-rJK%_01P+5y2|B;dM-=Rqot*^>q@(MIl^YN|Fsmj zYpq8rq>7UY3iNC?Dz{3i^m}`Hf~yd~;W_5iHaR}Nw6a1-NI1$?oI7;WqFcyiHDCAR z^NUm(InrZ`nf!lZKcBLAdr!ie*!(+Q+le%DLeMJze#T-u7GEJ`Vrcxde;;26r$157 z7)QZYva8x@_5>SaeJEqaX_nc9w^dXJ$fcW-jsU*;=^L3{Y>dZb1jeSBzt-$iJS&TpVv|EWE+?JVkGqRD;I3_QaSZf~ z7dFH3O{vYd%$uGrVj(@-yzimlzaC;d7O>ebmjHP_?wtch+HQwyU=+dXc809#Doun0 z_?TE^o`+*L#_hnFDdOi79TP)~7YJ??MkaK2_Or|`UU<}i_O z#||=J%5E`oeftUcky-MS20v^WH>QjqnL5?Z0WNhwF2Fsm?sp}s8AK7V(uhK1)6>N3j%2~O_0rqLbdWuG#)gKy2{&ki zQ6+O>y~Cq#pyFXk&)5y$8&KRR!0IC7<5l;x6_m9uJEu?+PU|Cd*$c=s-Kf}DwWDj6 z#G`qt*`kXjE_Ji<-@oQkn}0@08i7YaV<&WgjY0hSmHm>OMevEM*L)ODN*@=)_4$P_ zjvg#$cwI8=!sIlRsBAe=(9RJ&hoD$@-91M_e0*(xFLW~xze9IHFZR%Heq)AS`M z5NdXEXZIkmYX{SvN#V}WFO%3Tm;{xHT;|CvM>$uMY+x)mVi;Zrp0@k`5zUtQ1tC>? zd&l+mb3KT`_8NPv!u0_bTf2h?epp=PcNx!JAKB5yo$P`^o1l_RR8=r$PFoy!r$GUz zhnPgSlf1yqddAzQ-GIa9`O|PY-6T7Aev2~gV1*LS*en(%V1Jt38ADC@<2-DDBB7Es zrQY-20}?D=r^%neqrl|9dU)R!^GVU541y|#=V%LvkXZJoLG zO`Sp6jn)srGlb0q7Oa;k$;-dKh?D~}bUpU;0C|?fx?Vt8WS31)z3Uen9O1yfcvhre znr;?BpR8kf#IdpfhnDZR51)M7hRs~AY^o1xCnj}wb-5mqIWKmUq{8awme))5Tjg}! zk1%oY2?)frLz!r4^^RrUy+hg_5#!(!5{hewde+_i?&y&ECKeLB!A!?Qe$jU-;ujkH zn4}+UW;;R%+_pe9Au4L92)2V->9yKiLhJ^K!qwFo2)bwbLj93Q{>gG{s>&)9idjC2 zeukKgb7est4bA6((B16m4Gbg;Yaz^sI_4;Xy~28p^M>Pdzo_L6Da59;u^!HnmD$-c ziRmc5!qX_=T(>=(G?=~Es>0NF<0DVuI%{6D7`g0OIS`qB2HH6Vm`*b{FrJ@Je&;MO zLB%<4oriF2cyc_VWTQOLU!;nbB=cBWZwGK{dE;Ol$K%>OS+dF3A18VOVF8bDg{JCOcIKLe z{p!!!d@;SA?Pw0Gqx%S>quW8u2WwQi8wnT)EWmRITP*IPGat|fz)?WFvoyC|Z#Fn` z=?)(H?C1@shFGm-ozd=b`kIp8U3@INgop_4SXqe=b22kiA6idfO<(pSGbryiVQerc zRPp7@&$E99|S6aZ4L(qIuzA|r*K-RRiZbowcokOp&W?M42avjzN;01yl-lG#ud zPA$$w^#Qg|l{My0f8C_No`_ruk6L8yt;OY#nimp5sCxg3E#S;akZaD}TDW!8*Nc)l zKU-x9^%JNJr*F=OTS6U0q6r|!GfB2;3H6aCpgkhJ9gaEUvU86nKpgyZlYg`9)3EAl zKIt>J1scb-8O^N0Bp$auiTS+?U!f?;Xo;oTn~9B=d)%J$cxBb*y}UF55AE>0qoN*y z>vp$l?Rm9zl7}SbOY|0&18ugaj$$KQ7CdcBZRUo|*fcBGK$0p3l?qx)Lc+?+y|L4F zf=u_THW_d&l0Qe9+U}dPG@LiRIQw1JAk~bN?Kfw4eiM+jj6_~tpESK(KI%#tIjt~F z?>7zRdS7--2nH=7VRm|~4Q|llCK0V;9*JJz(wzd{PTDxx^CkhA{^o2sSwHCPR-igr zD&q$v2iR-0N+#SA`~wt%?D<9z-ScK!W1E}Le}moi%+t-|)-e1@da$k%C7c09mwV4zQt_kX%M#omA=tb)WajI-RBXnv9Gq*S)Pm*=w z+YSXY|23DcLKf>{r&H_cO3NXE>%eWl`cA{u z_2}q+<=?;eq>EJCg&{a-6=tmrrT#|mRdjSbkEhNwtE~BWd7nf`s+{#;o}Hcfg^{Cr zd+F)uAdu+&5~5w<2gkGEv|yTclS@8*JJz9RY;3H8wzK+MUS_wxer5y^oa}ErS#gM* zLg`+;3XhI4GFfu3-=&Atq$EOmBMArzC&$K=^Rp~sKiEkHF=^{22zsp7F3dRE+U73{ zPfOLvLFXoq3W%0t2=?|KNgqrA(j6+P_Bp}i!I`@#;)}m^d#ek_v8|0GXHM_yJ7N&C zmQ76+ObkxVSxDDZRQ4);Qxfm95!UG{2(vc$O=&2?#Ra^EwW@NzhCHh`-a-KyC53GA zuPQm%f=X`!m&Nwz=7*L!JrR*GQUPmgv;H#iszH-JRlBK?0u5GXx*6+cPEd2SbfC1a zi3~2PO99J_D4X{IbjH`^x+=<%d>x0%(jMXGM{4LBA8mp`fgQJ_bq6ke>lp+t#V^Qr zEBTF%pxCy0j`PJFHnvQU_mRKRg93lJ3^aKQbCZTjEcw=HB~tmGh>0dAlQU|f^~H0n z>@Q_Mq6j`Yv9Lx~0_ygs=Kh8zjr*s#{a`cII&29;`3tYZyx%-G9WC4{S)f^Q=RdG^ zceiUW?hy~@UUJ+bwKO#>T$g*CK7b1S5rKT@s;f3wu_sLq1kbEHxzyFi4cbFe*p1>lCs@*(vB-EKk)1%zzqUPn z{rQc2^MWdJnmU3_o$0`8Qpb`xvfF~h1#{>3dWBG}TlI-+fwMme2`&oOr z8g&^VAm^5Pw4l1HYl4oAEz(7eY7Pbb@f+}UqOFk2@rmxl5#D< zk3RjKO#Ku$G0KQsi4dJ|lU5MtUY>kVwz|D61}&*t_%cyW4Ke;6Q5N)-=u$h6IjINx ztV$nNWpOcvs`1+4d)^yK&R@)xEwiz|Z;NW{eV;ELBE>sk^0wi+^0PlvvJe&CV^mVZ zYxkCC3%$>#YaG``D!Rw*R>XtdH(ELeRnSm|su@NZ%8Y7+CXgC;o?NLFS?K_8P;#cP z?;F~IP(ddxm(_rCZ!W%_VDh-oVhE#`Z`E1VQT{grM9q`_)nXh$!7yW1WJ;p@>aU2i zgB4G17YGg}F>7$IKCXfRGYT{=0n8szS$+LpcJ2e*Q3HMdj@H)J>Tt8v^#R1-Bn&QF zxd$yB5HD*i8Q%nrJ&+vKn|@0|h41$UkqC-f1cG=33yX-`>zdHZa>A8ndmCG-p_u?BYlwPJM^DtUgn$6Qxf=lo!nIBwX0Y2uezCl=vkiNFc=05zcG2pBgA|ILro4hdKx8qT|hIYwT&e@=9V; zBg!DnJCxC$j@wfRDJU2XhczC+;GaxVN3=IH&oL5>qn@i6DVK%U_#RqfKKljhAD#6? znC{V(8NZyCn*o+rpY|8PmFFtH85xQ_T+wIf^@%(l=E>|{ zKqpD_9279Iu;eIEW|8rc%WxW5Ss7WI*=(M6#(ZXkLU0CCXn28>Yl07hQ~3fLiX15u@9EXlthCN!{|zoBmLRq|H7Em=n)c8w3jTMP zL}NmrZrDuS&3&|r?diNM<@l6vXIM{mMD#Yf$C9~?jRc!61zeh%nYn1p-Z&q&qciJ% zF#WTr9?q_ZOh~ZMn$lKNBXr_YgMix1sII!4tcJ@a79{g3DoS$7AG85<*}%8GwZFfgqFP|}(rl<+Ta$Vz7<3hC@*V;nhme;c zBiEM+V65^9Bfvh4mQGiAW?NqK&_q~Ud?(Rsc z5MmY-a{eQQ)Jsw_GS?%|tvu17X@Mz#V_NMqa}TTKkkh^@q*x|H*%5Pde5wWNqW}tV zSa`ii14Wk=8HX3K3bjx25E-q-si|#ly@>)&!(rVT6&U%s%b@$)me3QN>lNzA@?727 znH}VXARFkt8r_jsGP*tOmMNR0)%*#ewOy6@+6`bbqD!cv8q=L#7qNslS}9TG90_ER=f1&ALZEf}(ENPAAd8@|vlVb{UG!1IT$c-K}bi z>}6E>7yfxxuA2Dk;S0 z*_*)ejs1LS^r(`PGc**7!HZeQ^$S zm$&g@bo={NSxB?;vE^_s6`P!W z1|}W`1;vhog;#vT?{1qNBn&9$tWk^3lgNNL)#%1)F$>6#~ z!K00$SmeltgImef#?|>uK&=#%T1L@b(5pN1C{ie~9^hB#;_z7B&Bhf0QyfjSBq778 zdDE97|7^9LQR$~I0Uqz{q}658VCao}s<6V;G$<6mKV}@J`$|_g1)sh?g=JwuiAD}L zqSo(%E2!R-XiR^($E-W{rW&BQn1Z_`ZZ0fji@w;HGLkh7u7HyG5F4(k!EkQ-`J_Q9 z5nfzTQBeM1c{Q1woI*NI7z(7Av+%~}Z0Wigo2Edgu5YGqyB5}XrT@b1k8KBRaeD* ztgmBEM2=L5h|`wa?h5Vh+t!8St-+wH)9D=N+K?1kKCc;2GJXnHe-^5Kx!;XO##c@Q zar9Ab4>Wgv81RZ}sVP-NJX0EO3Yhw@+~Xo5;=<$LaHGWM@ba&TJWhfy_H9W}JXw~^m9zC$b{rI)fpZ`) zicx1@;GpU7cu(i}>ghr+olbbJpd?1g*!4#1EX#@MQXmC}88Z4^`OTXaIU&%x+G&=I z%Y8Kgde|2J7UW12sUO%mpJG9XfkUtb`&w-+1rP86g+=`Gb?U5v(Kgx4b+S5BFo2Rh z9TA#w^BMrI0m?KM12H1U2EZ+};k{)F9<}7!JNMu+O8IBAi<{FO!`Io0|4PBu6fv*h zWfYhm_&H#>Dy8bk8QY8>v}K_a4H`N3b=uh4vv-Q^@BaYia+@wY5nZ%K)*!3Fvp85v zC>9n!dC@=@2eFK~Mto3Nncju@7iK0VS~@yg8=JyR5^Qfc^W-TGmyf8Zi;JQhwiDCI zBOW_3<4gns(Yaugo2HsKI7kr)g}9~by)-g1Vud5;zf)FdB+*3k`nSq$PN}G1LVqac zfJSLD+uu_YBIi75@g<#{xQydBzdJSoi_J)EQq4=gd6n5mI3fbRwl=3wqGqTf9jcil z39Bmk`ST~gS-oGarV1=BK6{wV5RWkSHIb}}2ATsYKIa$s`y2IF%*>#-r04w0$11c8 zbaeFedEDrKr_ZD1oGN_lUeb|?_c|U=?8Frcmps_ow8Tt_dMo0q{yq*iTZsT|M|*mD zendzz#bychgtMC~@5z0Bga8#!4=`cZ;K1o=p^J%uEIc9ys4S>8cU|C?2~wfbem|gu z;lxp&N>=J!8rj_pMbns}1hZSCW-iDXME*p$G^8q2c6hCdqicXxz8mq}vnG>m@n z*8KY~aQ$!EywO-;51|^u3NErnTnDUe=kpdEL-8X$J!?;@^}B2pjd_91bJcFungRKA zg|_C4rqtQi{I?urq}KZIf5k}Xa=w0h*#-_K^=x#@K! WHLOc#UjswBBOxjaEfoIn<-Y;RV@!zv literal 0 HcmV?d00001 diff --git a/docs/en/assets/pspace-04.png b/docs/en/assets/pspace-04.png new file mode 100644 index 0000000000000000000000000000000000000000..a25ad0b15c8705d7ebc8501b04c43247ca396876 GIT binary patch literal 119528 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

lHz%xVkcm{+%NrL5>*=yz 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

P}^Ch5PvxyYmwJRABDlN28Xyou;WSL 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 literal 0 HcmV?d00001 diff --git a/docs/en/assets/pspace-05.png b/docs/en/assets/pspace-05.png new file mode 100644 index 0000000000000000000000000000000000000000..7187a8c4b1447df3bbc9501a38924ab96c7c6522 GIT binary patch literal 135932 zcmce8cQjnx`>!`W1kn>Uy6By#34;(NdMDAN_c}--Vgx}%8KVTzTl6|3qL(4MQKO7D zj52zgd*c26*8T6UyYBtnYmMd1Df{gG?5BL5Ci11G3NaxqAprpavFdY>4gtXp69R&3 zDR-^`XZlNso&kUEx<5DeA|N25`1|`0L2B9q0)j^bs-S0j{%M=DeqhS6ONpKBL!@gj z2W*aFSaD6v`^Mwp8_$#;ds6YzFu{G{r#Opp^WRRlsqU|9e7}2R{chY#a)mqJkDLQ5 zVOv`#*6zk%kY5PRj&LEnUD$pow94K$0Li)9|1b&VoM#ZNoS>OMf+1GU>9G;6;Rj{} z{J0BPSE1-hU|malCt#8Ym#TZkO7z0C8jdx}Gwe;l4UDJqc)5SQ0VkcLFNRR?2=K@1H-_@;8V_z1FaVK`7jM?t*lqSzd zD*|H{k4Z~M)te2N7qR{4Ccy{MNF?{WxAwC~UO9Eoi^ty71R5F&Ro=h4etzKIKyPSR zVNg8b=#v!gyb_YNVwYG|b*Jv`KYwrdX-Ne``ub9fNfbwS(v5UfKwo>Z#NWSAxO#eL zq7&^2V#zWoeLYthqnuz--ZgXg>dK!xX=xt<;Th|XtT5hEa+&j=ORvroToN9G5t{j| zEVUMHe{c+O9_q&rhIEEpXxYg$&S?_e`>LmTmh_(hHqX8S?*9uRr&bZS%i%;7K z&w{c4PXBGrGy2A??>aEcY{YcU)h%zO^V<@*`h&4*!C`YNMHiS;!V~jeLwVQYnPyXJ zGH#QDXWmizT5u2eH=~38_dg@@{C&{(#i9NC%f%?=oRbMAa?JyM3?X`?S-JhWlj6ZHr#U<|V{9_sM1!ePv&-c_aJ2y%)xx-dj4Sz zXZ*z>9%ZL>V8C^+`(J8(&S^8m#}4k>Sp<(mc*o}InH+h1+T+aO&(-;b2ZP6*V?5I(I!J=!Pq zfbSSBh*TVgw=}a1No|sI$$a|Ek zZ`s~@*LlnIOAlEsRgi9Hklazdd_)^dHYU92sD+=ue6+sNeO3KHwWSDhkAg3#y`0XJ z{Aw$)Z?S1=%(zD3i%-A0bOjw#nxaIGx(iR|V<$w4lkk?Bfq7|db_ZJSPm<^Mr?WPA zCMaFDRtr_GLmb9B30Jl@kW`>*|2bsyP=O#@dI<&LB7aLMz=V`tyAX?Z7y_Kwl15)`v>8V)-ac_RTPe)w(eT^F&U)LbT%f2WS zuC2*@CEp5R{<1vU>2#Bur7?8`jCUxklb+Z4*_9A_oE)NVNlYet_-kxmy}`uVlYH*E zA5$~6P<1&G8H4P|@ugunrq+;Td%L&fQ>6FhevEs3+(?PA9KL*JQRg7H7Mu#%8Ev!l*}UO%Coe!Kof-eAW^FyAE17p2d#;2)IGuK zlAciv6=_fvOBj+5QQ%x3e(JO%O9(H*90Z0n_*JJsQcL&rjpE`0ghJ{;T+5V6b7{|} zyAn9bJt5u3?NFiC1V|Z8f%ABlA%p_QQkx8c=sB{I*{(j0beIvm>$Mcuo;Y%HcqP4W z#Y;?TQXwHm@ZP;fPH+3|mo7OAO~kg3-)Kl(#GK5Vnb(8#49i)we>{DC=0~;6`9Q9F ztN(<9rP1wsMBVN35(OvoS7S-NVO@@B!ZsH_H1mRfw52ez8HhNlhc?DFh(ST7rH@mo6>&?WT*>M2m8Hn%>pf z$$+@b-2r*QguHpV3r~nH2W|j<>Adae-0b}(1}Rane=qG zdu&mJUM$%OtF&}f$}HUF!;e#^n?1T&CM|a`q<5P_pYI$j*BSZjfEdVR>mI#2ckfAI zc1_ZDq0W=f)YRh`5f@(%hToJhG(I3_&vawS-udi(0E&o;bih}b z@X0WioUZ$3bTN|TX?IORKnr2u#KJ-yH5dALbJfz;UO;@eelwru#(Cw7ya`l2G@`X~ z%+?mZbE%Du&>ZK?7w5z-2D4_8_+SagzPX|(LrR3j`*1ICieNR()9vt3M61~;?ZiALsIRQ1jlq4N$fftqE z`U1vHz}flJHl*O0H1p)spZdgJSoAQ8%v_|Sv&4u4Nnq%O@v(slc<5-zuI_rj>fE3J z;o4%^)hqveE-ZHXs>VM1#OO2G8jl0qeVeJ~UC1vB=3m)5$iWr^vZ0jM=EzrvJcFwh zF5@2-&~xwBDN4k+qw{s>vVSRE&Yk0+NIE}5vZ1wB*Ys(+t5Ii^W|<+aF*?$y1E_fF)MF0z>xqYd@+_>E=Cta`EX-Y zqBeg|(W0WU$Uwe6w#qiujVNZoo4E?r6-7ffwr64g3oHD@-*0EWdZ+tKh~mE#_;x?y>fq-yW|Du6YnTH4 z)kp-l!zKUKbtHuU8IGQE@n6&-$@PCW(1t~--&m1Y_*GLHXkvP!FQ&dz;g3}Cr6eckKG&tFVV^2nwqov zE!86Sd$>Jvm00RX&}@yC^gyO`{se~N^bnp9R1aSN^7Ikpa};L(S75bbVs zziDLCSzD|;mLqcc_eQE!&h8t1#x4-vBFC9+LS+{@!&5%zPsu#?||n3N(! zjMrSB1TTJo!KP&&M2MG}s(^4b0*8l(N%{uZxeDvHshUCf@#1V*vMh9ceWJ`_tAT6S z?a$BdHHV5SoOwx`i>#zuhCwlVc7jT55+#)^!sc$385gAmvR}sQbpLmI`!mG|@*&jn z@(8D<|MOh+9}9c_I2t}-n7Y{5SiqAfsx5d6Gb2eStXW?Mjexlt$VW^pUn_00$|*VY z)wg08>>z9V)c!WGp0&7vc4q!$C(#G|-*b(-vX+;+O8fK-^fplqx^tuLEAH>Z6oFL< zMzlTVd5miGSUQfR&|;7;8*`BPKCC*Dck|XwvY}O`P#O1~KWUqrA3xrTHtxk}vQ*_u_&H|EiWjDA0QYDq<4TIfitZJ3qndJSIy_Ok$j>D@T-l7PueHD1mj* z8BU8}avgfNbJE3hgdJH8^sQAZJP$2LGNSALYmWr z=H;%6qGDK7vD4z(Q1IyiD@zrsIrIpdhM9=D6;=$JE@|)z1_zr;3}vKCdzG16dr87s zSnT?tZB`YKf~+!Eyjx2TH_yqnXU^dB_Q$%AHB2IpzM5^7Ld9Ymsr>-phfS27<*UCA zWHbo9sA-=Kp0kc68;X>_?C$LcABNLJD=z^f6A=;i+j+fu`8&*Ob?@f;T3^@vAzn=e z=_F|UklW9ruH3j8@lg)p?_q2VwXG8$%t7J? zyhXR>;id-0Jyum=VPW=2z`fgrtnKeEt2qrdls^`+J3c+BaZoKaXmY}g?+xov zM~V4Q3if#>^nCUH^K?9sM>(ujl`U1+#iYETfB_~h#8(BZ<~A{-jNPvfwHwwI9Ad;UWe6}tBQuMEUS$F`>7O==uV?hUQ2ts<)fXwQa3Dk@mWWx!B^R$yR2 z@a1mT#jShw8R?~QeJ9sizpjtuSXr4&WHnds*QHA*B9Zj`b$$xJE=Xm5FN#c+uz6Wn zEiUq#*S`{`y&e{}Dtq`q_ar)sCP6DhPh6r&m2H8Hth6Nr%gESIRAJO_RZ(JEQ}81W zq8vllWmgrshEPp7zkZF^@-9h48|5LQAaVa3Bsza z^`)*e;s^I9n(CSh*GG4k`q4w<#B`K|N{a>B0QmvEElPV&sO-JMLu(I5bhfTS=P{qAtvq!5AXk$H{W^Nwou$sgN=$GKLBPL0IcUA47 zl>^MyW^<`>Rh~g%D%B@|%dg)i#Y(?=s$`5>$qeOS5r=JUE`EV#ga9wHYfg*E=k!vY z8V_*BH9OT{LQe}D8w0y{7Cd%$fw@kLyV~$WbT!lWa5%arcF_u1ll!>A4Ff+e7vmO0 zb-iSkWlL+@$J}(lqO7N&3+)GN%o-^lQi(Zk8c|2pI8BR(wFH)o(i5d7}L!X74k6*4j6mUi#iusmIqE4(#Or%4~C4lXClr1(NoSd0p zEewTl)%v-?;xi!RDlshCUw$d9lmhXc2S9*^Ux0IUw89$v?hzMTdn5R4dfr)_N!s)K z{M&!7-y$vh(gPTlF7P1V)agIismfenC5vAlvvx)oa`9M)m;qc(kUkEbV`kag#p!Y< zKIYW=c(9=adSgFGu8nUEBgM}4nTaFQWTz+QGau^eSr`~N`UH6^%p(%=wK%g2CMSK0 z4K3l|fZsn}gO)ks1#<##5i^{k?K9I~Xu1YRbx+=mb*^t(dzKFRbIH2&61MacF0CR%V-xT%Up=+YQ>m%?Vg_uEp;8OPizCq z(ACvd-OcE^gM)`Q85!Ef9(N3eYZ{uE(NmHS|Nbr57#bR5Vy^d6&~c`IfmMY(9Upy*gSpp$mQNZ`SbIO$Zizs1ekHD{mVOd ziC~9+!a&Pxv4=68#~(h_Uw!6+&l>CNjka4aV{Kc%umfuZgx@e^ ze<-mpd5N4{M^{JE3`^0Mw0m;?npNfU7%6dZaIkfzLqVq0)j`b7(-fE5=!G$$jzTYC zq#b7@R}5!TfA>VTp$)z!3b_HQs+UyW#-hro9oeq8?ZPg0G`1%Z>36TG?kl;puv5LtY@6dZAp$pCQbw;Ih(W)@mu@G+p;fi1GK zUnP3;ChPTUg{(N^js^E-FnA#M`>38ifWv)?p^G3vn_M>%*=_Wsni;`7^E#lo;ef@cJGeFwPMJpDoMHZ0;YO?i% zK)e1FB|UX@UxOsgVkA67w%M>ewWtV#LILQ~S-h*gLny)3Tq;yfo-;y~NZs$5skB@1 zkcoBW{Sia=)AmTfWJ^SX7O|HzQ33{ElkF`VJkfjTs5fr_1EeK;M6WyC89*=IzY-w8 z!@uG#sZMQmdjA#)gQFN_iatT1IaLi-~w0 z9d02BZzkOK4)vusp2RbnJZB^4AQIZL)V3%aaqLr5lcXm}2#0WS@M8f+%I)aj!_pF- z;}pX`M2s+nijGdyr8xc?Ln2Wf?C8-#K(p%iUvF#TPCsD~pba0qN=M zqnDPf@8*&X4FT$SQYPQ!VJQBBwd*so5qvT=RtyY1E#VUAKGzI@TUfY;a!#%X#9>^K zlq_B$s~h2o{+S`$Zgqei$uGTLgTuc|IX+fAJ2L#5WYU#Y8}e3rXvi1}wG25lHuCoe zv=-kMDZnkipQOhsUfd#)30dxjj^wwovWPk!Kq{ zl;A)0*ANo$QujFs3YM3;ZTxYU?0=q-Gm$h5vXxEaiT4&>~6RM;^`lb_^-)H!hRnmrKLrZr>rU_^;s%faN{v{`L-!l z-|9|tnnItx4So7EIDtdRD@yDfMKg3NQ|mJqqs&_40JdW$OYW+2U5+z7yH0%TI+;f) z;z3do<4oQ5UhWJ2va*oNOYpm&E1T1YEfLht7y-uQ7a+iZIS3j}K#j}rxTdM>1_)$! zA$+?Io(T86JlSV5CKbaK~CKW7O{ST!*x7gs!o1TBcrl2s6k?VQ+~RvlPGPFl2Sv%-(y&E0tG$2I;fxOH8@kQUsi@Ap|GrWe73Fa za=@+6S=`V-Pf(Uwz3k2%!Xhq#`Nr36fPY}}k@w@r2-Daar(niusqJ^Ittew-VjrJ= zzB8qpHvxb}!J)OXdjjacB;~U5QmQ$r@JAzAdPXn*EUc@7YQ)5n;?mL+(Mgy}6tQ>Y07wP$ZYB<6OfXUw&@1%y68CeueBB3K1(q4JnKi@s1;TPqh93N3m zf1&#NRP<8P8`5EA+}W?!V-s<>74S@r%{pqHohOb|9R8{SDb-bm_ z`}n_!`v(QBuAFa~e4!7teh#BIIbj^eJcNV(W){MPYu~UsT zd5wW9ilnN!I>t&jqdFXAS%G}p9AJ7U&#=XXWdr@)uR4pAx;hzOsGS0SDW_(JvoMSl zJKbefk<_wJPNteWJpAQLF%(Lstqp$n&Cq5!d{mE=l$1XigIVob@N_CFhN_O4&CblQ zeffUMkOvU%_#DL$OBB~1H zHlFzZ?ikZw#Li_%+L+(A^}-1_je|f+F^uwvyrNzk;eeB4BN|tGc0R!9zif7zs3oTR z$i}gjXY%yS=P^mci(EkF4}5$8i&A~h#)>Rl zMH!Gz%LedCFS^gl-X3r#Fs+8cx9>@&ezg&Y1%NNFi`bhq8nEQ#l-t?bnl-lDRsGeM zi>i6Po&)C{QROx^lq+ae8JWeiePaNY)s>!ne={-TX zn~TER6jIYnP@@8Q-Qa^@Eq1C1ZESj|MH1n$PIThugE zN}cV3ZZy2cm2YMn!_E$cs8Yn8lB%MJ$WSu@(rwHUeZ+T(XU{O@{k1q6ew!o#vq~FG zXH1gm7m(GibriL6tz$6bEE_p&)tr}FzWG%vc5B*id$RRIV+3RHR|tm|EKiRMz-Vb2 znsyaNfP>|9gaJQN{hR3u*d^J5*^qR%O=0gR~wty1)IfelUCd_TkENlY@!Q%MtL5o% ztjGlX0q*6!eIl9^gc;x|I;_3yyD(7>d-r6v-`WUTC|4peUl$~S`=!c8D+QLsof|l9 zIfqh5QO!3UUCuT^&5`NyEgh1|F!`tAFj<$xGIFE;ss$J?xd=LRHfu_HqEfYjWMzp_ zv;B?X3-kFKJDiHuH=TZzs5Yft*|r}D*DS6<95g=?aO+w@h6b%X^dlt&3{g~ZvF#Y= zHe4cbrXIlKy|7d>GxO;HhQWTv;LV+dXKf#atQ!HHxTfH^F)}FchS%D>m#Ef(cHboB z))kikOf&U_BM_kYHWB3jS}?WT!p`i8no>swpu*bM9~g+`vnbKw4giNlLHSaoyz0$h5)3GN^V@dy z$&;vt(s%BMJa2TX6c)f3HlHnfaaeJ2kr8iFa-H8WvNBTpiWqz=+MIUH?)6{)f)uO&wy@Nj);@s%WrvjyHOpS9dj3Esj5T{}*2112Wo>x^QEb-61 zF-x|*&KWAwtMJl|*+X#6Sc(h!9}KBgzTEf}VO_fGFm()SoF-#vK+Oc>O>HG*KNUFs zvd+Q&%xgMc#O0E}G?UlnZ}@+WexSG0FC){tSs;uDzsdHlQP;vc-QH z;s6-Vz5706rj}h*a_k@w+wRg#`5ml(i2*`xfKS_+m9;hBJ`ix8*=ARD{r&r9H+bgX zNG-wT-l${DbGFUaR?oj*2?&lj?0(QIr(7Ms{ePKR_-{*5{C^q9kA-KE9MFv+k$>ik8E zYhlj{d`y)S<6FA1wDRi>T)ggiFiUC0HzOBe7^{Mkb;NTPg*1r6_E4kOx<;j=dHMbP z$ve9r$goQ2)cM#kc9O5r57r#v5lnT4;u3V0{w%)(7pBrHr=(`zqe2iFG8lB%fOtj= zZ>HdIPH37}9at)gN&PF@mHv> z4;m!<%UP2XP|1DNr$jmlSMn&Oi_-&X-}7SuI&s&zY9S7e#@j_I!0}X-{dR3B%(R?a zpxmelYtO{wMoJo6RJ3t=dP>D(ScVTU_xJZV4HAK>qp8peSwDEX;7wn-ms*#6KsF2! zm7a;WV<$9dw_eMW%nHrB7ELyke}Wv#)IM)lZDN~PN0KpXZiniEMH@2OUWea&lHM@s zy{s2(lai2p8~SYhgil!VVem@3>=nBlv)3<+G|c6%c*Fa7#8RA2 z;Y_`UuCsIhN6Yallrzh)gQyH+IRngBSyffl+&n$~nj2#GbZsaHX@@Hu$;Z#*gLYwV zEvCDud>5(}&xYHF+tx+19ZL$PUj(}Su*E=X{c;t(^Gg07GHAbzU<##L+t6~Lz~j)7 z(4|RdYO+Ex4#wCH^bZyVr2r*vR0HSM8_i6R`|easg+SwULNYWF3fVe6Lusk>te|S1cJ0#RRaC}ZES6Y zUK}z>{_t4J+uU?wW^N^w+4)HkMI$5@fF7GrP*hCDUo>QAXCKKQ?^K-Nw9@6$)6!;U zW@MbkOIDNd=EY-W=jTz>U8N-@GtIV`o&?T|i|e;Y*6>qK<-XOk*p!Pdj4xwBfcux# z&RKmiA1Q&y_;B`TZKqAO`~fE>I2xzkUT!gZ@nXyOeLPw>gX%q?yUx>x`i5f;G0I-g zzl~H8UAx6zF9>s<(S=JC=H+S9ka0U=%Cfd4k|>5$$`2~N^(&0qS1X+8?tzw9S$~)v zN#At?hXeaycA}^{y#DcK6*z?*5MQ7|3aDu)J=)&*mB@3?vQz-S8Djw&{Vs@|u|%_@ zCq~y(u0baf=g)O4%!+{Gn=<|x75meE*oI4s?PkfTuVP0B&mNQfC+2KU%NB9Fl%Sj$ zcc9Y1IsxI!lN=?awnFzTy7liE{&I+oy;_hQo}Ibjp0$$`MK$#%kdF3d}b+My=|5{H9$6k z50cKedXT2Ijg5`!nc^{hOHg%XzsL_=OXS)L+jDo}L3Nr2~JzgY_X7Qe=gCMYvUg=Hu98LPA2ufaUnf$;lWx2_Y(1 z53`)1<6lt%Xf(QIueVRcPF>Bxek@Yp%F9m1 zA|EPYWI-0W++gRC?#2L2cI-?i@7(0wC&)OqK$I3a$ln|grCq4bxs8nDQJr>m%_NdDwFCz68mzP67B@*R*}N1Sg1hEafv%YUP%MfPk{BaBa91vLOgrByL64bA32hJ4d-z(p5u4BRKeC^l^gyK*~_$N+S;bqr{$cV;Q zNuw`c#*MT~aYrjmQu* zq)8Y~mSVq(*h2~)wR|foGAY!frlh_<^y9UnvPPq@s-Pc@St950Y3^rXelf`v;X zk#>oOZz7+UORN*GoZbos6?9*|;){<%_8-0SDovJlLz}|ORv!DETX-$1x4ppk1TSr8 zQIO9@I-L3sey#3Q%-_gNSqfSMr56*`xjDlUSR|t)V+VK70!%xI@B{4Gxv{6kqjmHZ zKlHpd&8)2xG9ISnkIc%H`kGwr5x6x*!CAZydC)nSUvKsTbRAEx<6yb?DiWQeI=eON zZKzlDdgZ#!9BquA-h0%>-#uv5<>Z{=$Sx=-n6L=)Io*E~D~oWSzr3EK55ERhR*dP?H62pkz+$_;{f^?%A+D6_Bsct4It{s5bDpQZA zdwO~*o4pK5j`t^KTU@4VFEa69d)x}2{KawD(^pN`zvl}bP3w)%>>1mPnXr&YI)4zA z8}tnv!e{_hd~FRC25dG$M3HM_u|)i~y={u13>}M*p%`r!+R}JPTAFLZ_3&%rnO*$F zzbBy~kN6eN2RwJtkr@J)(th(yKI-(eqg_f|%k)y(ewNum8l|pt-b`n=QzgcnFd5v& zHNKq}78Z=ni+eB+hv|14`gFbU@8=M~{4aY+IXB# zc;7glJI=d#On4299jGG#==P_)29X7&3IN3D$&^gbw!zwxch_(QS zfz61O{<%t@=`N;F&&%_0>M(-s2c#0fwchS8#iGh9s*)TDC!-C@EQI?t9;M*N#Zbum z3)2BU#yqLdI=$q*MI>j-0=fX$X>n^cht?!&{Cc3Fm zCcdG#UA>ub5)h%zyW)H*oPo@4wmPVkC_~LCn(|qPCTa{Vu&_v_kJm3VTZ+SS$Grzd z{X*p4r%KI+9Rv4uz(iM%&xhh?*{o2F%Pl)%kydee=;+v)nSjspvKaNKcbHc3TKW_PL3SHx=(RZGCEXei z7q5P1OG!b|7*=L-uOeR@(D%igIQON`4_H(+UD9fJMK~1FLX?IEh)t{HR75!ZEf7Wi zxRLWG32=q$>3g5_!E)1{6qLZ$5_p>f-Udp&QVo?M8^re_i9gu!_{Zyh=Nkg>{a7j< zgADo5cMusF8EOHO=b*^QHfw8ZfcX0E?mNpp2?#uP8o+a_U727tkX404JA_Pqp&W6# zXNf;ON)>aOC^4pc@BqldJSrTuo~pjBGcr7f|D#x8RDHSXvlXovMa@@ITs~jxa< zs@^dda#l)hYve3WW}HW4KRdPXI(UY3E;Mv7Ll%XaNC}iXnyK2|^WDyX?%%!^5_GtOJJ~VDJI7m9*{ENuhU!2>h>4&u%u`m8= zCB(@*z%Hvh*BGdC*RL&fN&d8KS>fZk!pF3L2bldx3%ja@M&(T3!eJfHQ&9O(n46|6 z88z4b5tTu==m_UzA2V-K4B|00ObOKA1GdV*-=3#L?0PVg#b|g7zz?V&!T7wU^(9Dc z4pObhUK}3ID~8S(Ks^zKSwlOcVElII<5k~{OJR(csB6miAN_7iWxWC++_tG61EN6; zu75Z3w|2?Y)UCqmwqOPz7u4KrRy=m|#<7UsiqV66A3uE}%zD`!om2ID9muH=t8?gT zXq1}dkkkf-kSPL5u^44PKR-;kTCNT+wO{oY$C}2^Y_))Ee@B>Q-1e&3vE(tj9(i8hN(LrwA04tLIS> zP9ieEn6Ft9DYjyb1eVV*uRUnfRp*@d59=?&{E&7l>X_Azx{Tvi&Av&u>d#WJGJi}$Gc=(&({i+87kUr2+O67ME0aV0mjI1r zWo6pjiQap2%;GQxN=h3qs^mUm5)xPV%$M*KWH8tnpFTY{rtG~AqPDVod54sAyZxhh zEDw34f}%oWWgV8C@(1ht>9ic^y1Ikxax~J;IN}LoG8MH$4(W$3+nXmSgp*~rJ(27b z)g5Ery#r@x>ZG$lL8(PDw!=!>o$kP`*w(eF7hy>{v3F7exu1Vdj$D~9f~+CP(&@EP z1OG;T%qPYQDgRhlJ8?aXyGU9O%t2EXe$gBg8LU9N8x8UkM#rwHfBYMGdn;X-5QhGf zkvjy{b4+MYoK9S@2vzkp$up%z+6b>EJE+@vL0VpN)pIKA{dKdRnl_3WkzkD#CT0{SrI+uoj8Xx{WAo#zo`2BASr+u0pBJQ<4kkzGdNDjwyA*S`; zHaTDP#xiWcF@g#MSrzKjqH< zbMbW%hokMZ(=YT` z9ki2OzVEl|?a_BV)fdMltvSNwXPQ#^cZ{7Mko_p6TyZP-QQO} z!orQec=Ys)@W#1oO1*~Lw@N}Fil?biTQ1R3ZML-dE3w|Q7~^dxa^k<&6e9U|E(B}L z44)M_p#5?2&%knb)9(QlD|B=Lk&))*T}_$j4wa_$i*@I*{DQ+6NexKTesb z(*W6t1n=u3fKDtXtq7$LkuQ43S{MsXccPlN4cYwbeJZPp`I-*(2cQe~USsbguAg`nUX{IX^ZfuPArSj41F;1(kQW4r{Rk^ZlI{G zpyEwVmW0S<&)|Im)p>s!mQOL1w`CtzZapyNPEnS{a88uG}!$s)~AVs@G=POGHzf^PnG15){&-ScY5oTFmer6qZILZ{NBc@ zxb-J3O;?=Lwz&k<6*Xh`4}9(%%h_O9#+|3R!#LUH(v{IWQb-JJ8JV_O32rTmv9ws5 zV`Q1Ch!39Q^LkyCN>KZ=$~9_v`Z&{XYA@VQFP=CJly$#tHmG|MQgXT;&aChcPf;>gQL@7+ z+qSKMZHAPgy!YD=5ODAZ#GHg(J;`12k2mJhrk|DyP4T+RYW08$4~g!2e~M~Enm?6- zLm_PB7T@M$WT@9Tf7pmzt+2icn_SS88obN8&PGpyNhl{Q zTP+;0?~bJ}XPD7a0MU!{Nar`y6SYla>6VOjil%B+IEu$zW?82J7W&y@ICW(~f40sd z=d%3d`<$E-(^V=fjjH$ND>BQu|L!6}Q6ET;{|a75?aT>Tu>=MOlxwx{9f!CGkp-xo zgoX-_&c;kn+B^dKvc?SlVF`2zC{LWHLR<{_kVJ@qA!o}K8KAF{{TIiDjj=#yko;%2 zK~AeG<0Q386bKY6w>Hl;u|28VV6By#Kw;l$Gyg2uTzcZF*p}co{69TbL4KzvvAIO6 z^C5fHC745wb%cw3Jb>&?(xV_tyerj4xx*>mQVH!f$R861@1}0SVMMWA@Laaow#D5> z;ZVkP;?dvVajx@%4F@naOE9_a;8hfV|660Da-p85L{P-k6R9#jUh0zo6v+b?W>dCm z369dzYZ-NNRf&&LiE6_BW{&pMSN7I%s zghal*JvB$_%nmO!%Y=C+*Ig&BM*qnSTvVf9OA16>27V?FW&l#UBM0=h8z-mj?_B+w z{_RpHdG~MLyD_+B%;)qgkw!TChU+}e(#YtC?&4Dkw>Nz%tyjZ6Ju13t8Jl68YO4Dx zfe9I8och;zKAm{|zhg%KA9h#$Pq^{FY||n|qJ;me7T}8P|BYa1HcRqr#w^&L@&P|7+O?nWVY-VT+>Z3v?}WyoVVy|xNPCK z^5q;xj5eRw(oeqx4m!}ZXC1!h7FE)PwU~$|@0t_fB;YV$nl`F8fFgxh%fF!HoXUOs zoOz@QcGe+PR|BLeFOUN0o9x`V!)przFyR5O9z_Iq%&xp8P3B-6U5uR}jjQ*EwH(7h zzEFuegf_l!)x&u_#sz6-a;#IEe|sAjs%+%TRXiq(8$X~{L7nS2$Ia(*6-cC%o4I|C zp{%o)KhXHt0#BU{3|M?xXP9)$FPFCT;k^~}+eHoZf7{Yk3|x08a|NQcf>I!bL9V&=15mNch={d6!X**wx0{tY-ped5$V>VbI6Q1O=Q0{PGvD=PtNPGDS=;QA_008n z|7`L2!K%P~L+)FYdO&zl+@pLnk=u#l<^JxlOOVZNt#RVD;GE)x--UrJsluH(2Lrc{ zd_ufa>khuS+%6il<@$K!cX9AaLnED^c>oPPxdi@yLU+G`npuOE?1sE=0Vqd=FL>$n zyU;M8Ep94tOGse%l%BEPYP|IQ?%VZ_mL)Jq>0Lq`ZkZK$vM@#NnUr5|jAHYt2cn7R zD8^nPrOt|TfWiw5ZJBYKVsw>B z=mB%rXy*zKq;8H$jN8tB?p@UJ0i~=lg%S}Gky{|f&rzhgRh&Uv=kUBDWjgBR{X<;V zJH&fxjib2pGlFp^z`2vpW$X#V#Wg{o{gzat!J{x(PIq@IB7p8lPXPQo0-~8GcJZSjyGR+c zFc4(ZI9L*ykv}L=I%l@K;>9eqz>?6@ypP0?Wo1ufl5k|tYmK_i>DKIRb(c>hp9Jh0 zJC6^I9B6ndF24FJK6Th9Z{S{ePP;kVYMw;;f$*Lez4izy^@*-kC$+)+zV!4b74hOy zPYo{h0?(bph8!%8b;MyB#qtmimYDJVrNdrUPE&)WHE3teG!Im<<+$!oRnbj>9AFOYp0>5-;_|OBmqjz+#8?S@p~^Mod)_V=yC==~3XcYW6aPF4Jf!XLe3q8M zr!|-)lKjhs_-n6#0bR_>nM&KNxFxi(r5xD9Zu5D0kfB7)lj-{wzIM=>+!nJslW|f`>otE*~^02d}F|h6W5?(&& zh+%Ftk)IHsSlc)gB!MNi4)bX1ocu~~m+$_gyQ&oaHCjAsY6N^$Z<$HmQlv50%7gd~jJ|rBuNDi9$FeG}L%_&Z)d+Vk%_3Sbtem zD(`sHos_^~^!K#DbZBL=W*A!aFvt269`_oimuL4<)QN|X;2d1P@C>YFm}FL_*&+oh z8d!(LgZK6b2-MX^{|9?-8CB)iwS8|y!Jq`BL+Nhm66u!i?iT4*1O%j| zOS(bWgv18v?(XjHhIirrx~}ou_j^Ad-Y@U-<#8|^LtrEOJl8qboWFUjW5RCB`ccmx zU)W>O|FYSQyXr@M>=tOrmQbvtej_wJu5)1LXh6&}&PWh540L$-&ml>K@!%H`b6?98 zz8v#rM@EvdonF}5Zk_cmbGB2`mslg-NW=3K#>7jao4Cfw zS9EtG=xnlQw!o`n+puG^$q8X|7N4%otU4C!G#d(;`7rpksWWtN> zu*E77cl!1mYVlIM<64wfwZzzd(m_#VfMqz`t4b_fk#lXoIrw=MO-X{wwm@PBbZnM( zdn8`NyuQex$V1`wwCS9^Q0a6VD+-3J*0 zb*s?z;J%@tz~qL+r^sbjB~_lY$?A|_UVg)KzOz|xmoBKbgSbnz(&qFGtlKuF;By!~ zYoU|(p5p?phgHxK22ZGutgn8A{WYV-Sc&~zFTM_hiCkH`n<(W66)q+rq_XhSZEH6X zBs|9KK7g-iwIZrNi;D&4q@hC6$;J`&bRF(bO>`fk?5WeK-1TqhK4u_9FQoJx4PQ~R z!n^em{AoVj$&E)4nJ;-e>C7xOtLx3TSGV$zrw6NE2O>G_{jJd$%G|^KclYy%;ctaf ziT9-%cweU|eBhR{-f+N^cnnckvYK}(;cxKp=(aFLRo$O480<0pKjwyJ!MP?4GS@&i}9=)uqT2wk2L;*DFAf zl&qE&jbUr!%vkVJ5mP2>h^<1-@9KCfp`|~QGg6p$mMh?nNHn8yAa|*?%93`ABDQsw zLuSxrNs6!u{xbDmj)|+SFJa34R}NIQO>ba3vDI=o$?KZc7V_;`)zz-9#%bAYuqv-G zMi7smp;2y^G<&EH!B46wY;P13`SJtE9PwFs<$1?VU43vCxMoHyqu%#ZVc)k7T)q$E z3b95PjI+S~`SsMTJLx-n=4XA^V8J8lpk?B@qc>F>1Do|<+%cw1#kRfYUWf;k!ucFN zYfWxq&Xcw-zj*qvTIAC94axa7(V_%;2-@@&A+MwJkOayq4C?M{eS+K$BaY#f9Wex4 ztL{1kNVEv!3nF*ViFWF}oXPmRuC8WZ2Bl}UP2x)7D`4!#l21f6G&`DbL`*a`#=P@S zdn$%V0m&U@`w6rF+uxgfT_Ex8yR^WopMHm3;8iF z?QkXzr{|%-#h*t;Y~CR6TxPgc@9@hoG}M#B;eD#B08I2CvDiSxLbU2ioWHya}1M@kmK`G~OM+tUU8;(k0ZN6Kn-qjgs0+f&S71(CP(`e6w}6MFiF zjl)w8KUjST^~}K-PB6@FY6R{@a}k!mW|l7T)s1}rY-DMXrFNl<(vDDK9eRXxaUVSv zePG4%uMoNW7bnZvE&O}+PmFGxJAOw58ihK2|0Z9MSe?-?uskzI?rB?9LjJ64)dGEs zi3$%w7g~OJ^vf(L`3)@*Aw(GCd{u@<(RNNdL&5UP&1IIdWZ6Q?K)IGo6J&@~Ct@WW z=lJWni_2HRZ!6vg3S0ssK}JK3d$mu8r-F(V%t!FVL#lW_ng1-)Q5Ywi`)!fpprNh9 znkJu59fU<_vsr19jb36KeRCz(OMvofrJeLmfhc?wIypq`Fr^2Yp=1H^VS~^zoJt27 zhBK<3Lk@pPa;yxL{j#^z{Epd(Wc{9`Xg1;An%VjS$y)KUub z>y=}#-GbqAhDm)W|1^%EtF_)_6nE2>EDeW8a9KIu;8p#}ytTzNz;C;M&9`4*987$Y^2d?c#5 z_je8O*rICP*`pwkWbst~yv3TI^+Sd*7CNHTHIUxL5mmzBaJw3#K_aoHBhxFKq^W=4 z4Y6+}lCzH?aU%=exDcQ??tGEY8lwCDE3#{Z*n9Tv+boT;i5Qzhtl4aI0T0=y5L0jn zdUfEqoARzdz?uy&yjE$FDIU$*hV~QWmysMVC8CO4>W;ImTVj{B4!- z*_B``njUz-oWrhUZ_iE{7(#dE;Npezy$pk=+ppa{cqiZ0&%BH{l6Mn;Sg9ZHcEx-( zv&4$>Iz3}bm81X8bo)tkcZjEzWVbs2kGjU*J+3>;V`g$bX$#TEv6~R`XFLiSq6!tu z$r;tzBQQl=E90zf_)yLoix9aajiRvm40Y`z=g6j%uZk88_e>2;EL+|}g-ioe@?|Q) z*4$N6uvRgDH1nTDdFF_*Oz89g_vom=u37(M$h)wf(fH&Pu1vn}u>|nIdj(Rl#MxSl z(94wzfKA-j+YweX**l#)`#SE(L0{mGv5nUX{T%iGiDJenXH`Y)47{7uLJ6pe<1(_8;hKcX>JqUf)K?)QLW*Z_ zKbD!&v&^!nl1=XO%+;<37t8c>e!whBQ;sCC%;6bk;qP+0m$+Cc=u5RZ$H7I1BA$+Qw)>4KwitoHK;&KQiN+bzW!dC#@^K#nF-MMVLsmA`R6b?^ZI%Cc zCRhCB6i<#FU5=gf^-)(NRWsxA=~+Yi;9CeAi|&S*n?UtdzwYtT`C8<={0;F$%gN^P zvVi-O&<3b4ebhTCnev8cjv9TxEMFx8tlR#E)BEA}FWw%*GF@dKE1)`@!dQ+2GGA4Z zg3bn2wISe+x_j-*aVLZAu-F)NUtsoJ*S7yfQu{Rsa_a$Z9m!TVllXt)Yo@7F!OS`zP1U`Wd_=oIZ2d*cxn!q--wYmNDmDhb(YAg?Hs84U zdHYysUJnmx>vXy!cmDJ|ng8tV(XhL{>da`=AmNS=1yytljMF~ppMXe~# zPlWhnl~(>u_`n1ECIi{Le;@vCdmmh~SrL<@!i6y%DGe1=~*#hNkmNq z$NT*%Nn;E4;OvmXyY=DFrJ!eJn#rqdcsMv8s4y*TohzRNcn3>+TrCLrt_2)WkXgW{ z)05AiK$=O&14N)pAKa*^e&B_OX57BR$&wuAc)fm1)xLj-B0!fXJC_yfs_&i)(*<;TaD#@_B*R=HUJ8|LQpM~6}*3Ws^ zpX2hiU@_+TPf@MJ@sOVetV(9J4Ts#y7bX1q^-q>E-w^RKVp(zeaP<>4Ob0U=;TXvY z@osKlldTLtj)-A>S}pwp)94U?v?Ax(6?<5~?%N@=g|(9f>kVmr=1p0rD_^l1LS02T zvZ!~Y&AN|$(=T0kg?Z0>7wk9S_~ooVVQSF~wQJup^;3g@Ld2so|=@UIG|6NUOg`tIhW^ebl zc71FiT!75F9Tf#etkKW*FUZdx(ydREirngZ?c#YuOjJ9HB;Yeo-<*&NQgo}A!{L=Z zZhLru!RKy&>v8`5+E=uM3?_nqeYW=l4$9vzzxldGg%t4c+J_&B>Hq$pSEX@1Z~oWU z2MGKY|MhjV&?dWozW#*#A!#VWh#DGgFDCmWO9`cvw_mYjckXJCKNewKz01 zF+RRxbTkSBLzR_<%zzm(GCl$f0{EPY>6I1a2i~B?37A+poID&;vzx#{+K**CKR@M*7%`F1wY9ZzI(whY!pUT}zSgVW9U+pU z_trC2n(s-N{ELVCc=e9SgnHKdX4keJXjU7n6VC|WNp(*~QR+@tbob7B#xO`CAtPyV zx;t4p{HQChfKFcxNukKfLVn6q^`-I`A(O??jkVEh-oV2*Ox3EU$=@6$JD&tCEG!&M z6>HbnIypO~@Y;XvU9{sQ$P)UX2~OB=^9a!77yedDlNS~hQIBl?7?E284z)2y^e*yh z;2wYa^j_%w`sH;Zw_u*q-u;mjD*4`k!tjYKHX&it-QDjN;iIzG z9I6yid?pF=zI90iLFws+21KmMwNHh%t0I`7fEX2)(lyS2K@$HwWhJCtQxe{-~ZKDTUNJw!aInAH?DxJCR=EB+XvXH}>WYM5c-EALs1g;=+tUVr%7=;j@P6ccCy@fAqr}NJ zDP@sRkRU#_IqNaI(_C5%kd@hLMc4fl2aB%GN!ML}WdCLHTTf5iO(1hxb_hB;Je<8* zatca!K&ATau9`7ecLz;XSJ#C1DM_6#;Bh9p*ea;m+G;&Kgz@pQS5_`YL_q$m*;VdM z42}#y@MIjMrTccL!BQV39#tT_%=5xntZ)4D` zMu(6Y9M<>qV}yj1awRESj(zP-MTO8r(~$Bd6YQ++-rkHA(XnfCZQECiaGl^!T!QT6+4f z{@8D=l}=9jFJA(~iv7F8uo~C9bwpz6ZX?LSVhZ1Os<+qAhKB5XiPZPJZn=ue~74|t?hkNH{rRNQzSmu?_f3XIQD2Q)MRBD{mXf_|UB&j;W=LFo9tz8rg7Swq$q8l9D%}L2zkhl7 z$AYEDHy*KTgxn$iUJk^vpUzy0%7Q6h;P0=-4+hX;+k*pxrKDxYYR4uzI--NI{cdmR z*m>wk3`VCaR&I}$3{+83cdZ|)yaCju0CgURy_L?iv@~VQaSD3PvGL(gr%NJ3TvQ#s zj?T_itDpnP?8cw1ZL*cO)Nhp0$o?*%nJ zK6?gYjsrKJ^=j9*Cog_H_mj+1%2RT~{q1r_2ceUZ0+A#>mch}{VS{J^8x0NXB^)Gp zd1)ys60$Hdm{HW*yLh}#Nk$&>{W}4louHFU?Z>9c3xz5|blI@^=% zCyx=M1R2=hyrCw40$CXzCX?A5`Qc(;R$uAVIh3Wt&ktTBb9x$M#6!V9*Etyv+(U}A za9M_{t#S)KIenB6msBVijb+r5r^1AUdmR~Be)=@hvKxVoTfV7cb2r9Zk22t z;5v48$6Q`qjHoCZn;M%B*Tu)<;$Z%WOXB6?a^2b(%*&&OpvlPwwHmM*W0zOX_4F7q z$5VI5PESo?t*uhOdJf~wDOPJ-vjf3lNTt}}lQX5nTaLG_Ev@uwzkiifaV*bpRcOH2 z=zDv6i+=z5wXmoCLdrs7nag`kT31faN=V4cqfVTR+wp{o>+Yn~kX}XxJU8GHVqjog zH(W^;sYD@YsVGFo{b1|wFR7}%&Tcdunw@mL?RpiI9+RDYR8+VZ9b=(czep--@!6v~ zywaXLP%xi{=F1n~*zD{fv+_?la5?NI_DT$e0EdW3R$BJ#_`HOQmb5WZn6BP& z8R2sLA!$n^9zbQ~X5;1E+1VkeFnbAkjPRuM)pH0{NB8l`+1$~P6a=kQuQ4{&V@OT4 z%I?r$SKXq*ZF#NNhKR_>OT$)9uBwq_turw2XE>VTxHi-aCQfEyZUH{hsc2qPnN0@0 z0xKPYhEMFhxHFkj%)m&T8q+2kEosb2+ao}go0Vs7W@h%mif&U8PbZy;Bi4XPXC9W= zsMkVH;dQkbK>p+j|M8kRs-4rvXGkc;1$lwrg6!>`VkEO*v$KJnotfKM1XxZ71toZU zjK76RaM7M)L`EvaFj8u>S=;uE$h>&=q989n=zGu*3igJZ=X*UDIhe&-umm+HKAqd(YidF`y|*xv)8{5&K-Kb2VQBF7S}Hg=HZxOA zK|uxqrgL6UU1~kWiyCD`7V*xNcL|gJOIL z$Q7ACeGHhy{V^h=8t!(WgM%Lw!*CLt)iLqix33&+iHV2k!0BsVSX~FNGzV(faC_+K z>B&YV7VGE-1+|T>wMy%D6v(&0;OmoS)Zn9IT_!bmLp2#U*MTATpW@{vcj&0ik#r6J z)&ktf8K@a$C<`83+@#*@n1VRQznV^z^p% zx0MwkGInY>t$IIVf4E#;%+S&To6N9E2|-P%V96|QE>omI8)<6WO+mB9*o_L7B@e#}_3BDWR`?=<4>X|YmKQNauG|Go)~;(DZFLEe&W%mON1LNq88N?M8r zc^u$>c6w%Ujyj^#+BzEDXmoaVvN8KK!G+e)j)$5U-@m!JdK#5_iv;Ni zk9ERJDJaz;ghfk1%?yMolJKj9gcqiL-zX_12(su48Jf4gsn8fJnDYYGDN70L(9w~pRwBr)RR`;Q?h)8*8!sdA6zU~6q{{xvlsrKLtQzKuo} zweRpk+RpEihbbs2>ZfXBPi_d3lMucNHNScp8X7vq*iix8mXl@2`#hkf721)JWn|=8 z>4kLLQx*PGQ@_cjAg{^T%Jb6RrO7)uJ29|K2rs5>#58%RiL4njJ3a@A;cQ0tH%2aOuTF-+9{5E@U40fANw^Y<~Zru6Xo;%1r}u|;C)a8eN!86r%?i# z5&%|}dtDeqbZ;#x$jRRtslAx@IBadX_#Fj>W<+5GqQVIlDQv1V-l|{k1-U5~_Ws%{ z8lW)fBt?M4$1o-E z4h_G>lPPQ@qkZ9eeTDMWZ%RR0RvPE*>?!(6_+9bOBKo$$h@Lcsj@1;_42CHoIKf&$ z!O9oJM0h0TWom_pbLEtY*3EFpe3_gtUtopvK}IZ2I}VuQLoejP&Po+@b-M2*CRC`A zJnw*qPdHjx(02x^5*Jnxtn%`3zfJT~wKuW&HcEOwY6HX!J#T&FL4>1-k}RO5C1$T; zU?_&c_`nm|@+SEaoNuScSM9#UPBQ-)gtl(A?=gKM&{)Ixp zW~QyBP2V6Q>5HbiPb$Tr-|3A$%O;}?m&P+#T$R(lcegMr$JW^YS-jmnjTP;o)Ek*K~mO^0#_FD$x<IOP!tNrYWT> zLLY*$98-9lfo%eaOH&#eZtiX!*V#nOAi(LdSQZrU!C<%W@YPy-3kyGgW{IT9YbD1c zm~@yqeiac`nyqyPV8-?CF3Zo4CC?$vSm0S!EaGg~2~jShPE+JPSxqcycREsm4-R%9 z%g``3otB#R2WDpe;`3vfH~RYE+5`Z#;%LHKix7(ABjYl~28FzvqbNDxGMqB|doXf| z6l}O=F+D1rm;_jrSJmq_CMG)4a+IDg?tOgLt86Kux?|Q;4&#`HSXil`#4FjEaa~$y+*So%{ITusi&?Qq zJf=K4-nSDy%%2+@lUa4w6YI>gkIa`mrONmKT+03VnuEt304pooTkU*q=Y`Q^o-ktG zIM+*-_?}9eVG5X9huu-!A`d7eKwZyKtV8}H3P(DdeZ7x?fhB%tClJF(PmCu<$nCNU zTE>Ql9M$S(vn^W(bczn?0kE(KKklaQ+<8hZ_WX;y_p*0oxVW_-3>2HO!P9V z)}WhO=Y9eK*^EKJ#X4ufN#mODV~>0r)e;gCVxvCY47>?S2X|;nL$mYn;oa>lyklwV z)MMeWo$nioCo@?~PkZ?ikQcy8k_icsC|H62Pig(!4JlS^xO`l!^I1#a{QbGNK&^gr zJO*W73hy(>F*aRpQ8Bv)O~z;`xXsxuOJz$-z=0PbD!$GN_t_os-*nDXcmFes<1>1x zyQmFqP;5X11@-i51qal06*4AJXePzI#i&i zj0!BKr@aV&dj=U1S%h+3zs1R-B_C3TYa>PUXTF_AxO4_7IK)+zrOcxrm8dX}Ha8LP zF7g!eFwf3`Q}{q+}Mbcq(FrZWO@WFI7~)itv;q z(Jxb*nrrx3aSCpt!0l!KE+GM#L1{%u$f~M&VL?Gbu@2OWuXC3}*Mpgh>oRfv{_Z7< zl>;hFOiHW-3)md2w0s?W$Caf(9oy|1#wMY_%Vo}KXS(%Lu>frF8i}-rD`WxPZ>N;# z@ z1g(cA6(uL<<-V^Kh$A}27>$$89xVBD%7lZY*kIdX#L^IOYfU^cI=nr^jPo6_c%2<- zx17k;DK!PrWZI0$VQcCS8 zRruWAB>zw35{}pK=h6q>f5P_D>;78c$ORR)hMz|KI9c}moYyKjy zjvCe;{5>>#*bL7HgfVkkRsa6f`;{_YY(81X*AMH(Qy^0TH>^GWwA23KN<94B@;6bd zc9jVKv>g6_ZYh{>5LgrzSmu{-Tn)m8h5&n~bWHmfQ1{~g2c-M&cds7p6w(b&Of2gz z>GPQkCg9`IbafH!&Vbw*Fm|!}^5V!ZUr;_T1d^SafgHBj#7MklX@55;duk{H7dz0c zrZ!q~HA)ig?>mNr7@kEE5farq+}*@r>yj}hZfyf!J*rnhy7ku#sr|9ttERF^7h%rx z#-)>Cu4$kg?>ai74s7Xe2SyCbBp)0_M6?V@5}TQ$lyqcKL_Q2MGrR3~XATXelK?|M z9{20^p56DQnPzLsbG012Y~`TNS48wUSQh~9o-htBt-TVj>uF&5>nHRQ_tmLc>{xVa zB0f4EcmMqS2;9G6dP{o)7-d6G52`8t`ubxT>~5fq*KA5(iK?&qf;|UANP_J(q1#dKZ575neEc+S&9mNxZiBfJq9^j z7NY*iFqpUAYe*8WeP%&M^HiIOLK-9l0kRZJN8Qoe+t;N5vzay2>6mI;`-i5RgueVY z3Ag1ZxOza{aq+HYbktLZZr0-r=qSltUPFUFUQ-5w7R6^01f%Jp}WiaFI^X2UWv zD$Q0ZdybC_N{WzCkY|4xOZ_(}Zw7U^Jz510w0>H9%i9Gi1-;`x3KH=zebcE>0+!eI zyyn~SdMB6Ld8Vc}F<({KEe4GibWXcE?_Ia? z;ik@W$RdwT`<`B3vEhY)MCt`&gO#PJ^V!9r(`UhqL66_2{Yw)Q#W(2*+!U9O>7bpYk9z6fltn;&rng3Q20G})INH7 z0Sr{rZZ?gc_j};rAn3@xLUMI=847R;Y>-T`b#r$Q!RITv)D9sb+-nw^uD(9mH?fJ{ z(pT44Ae*CXYv05KmeaMDt-CAsQwYrlP;6l_OIE9L_K?a?51}&6n-yB&l&km}X$G?4i<`@55)!1O zq++N9fXP5!r>0PNgE%z?1{W&C|A=f_K9+j^!dM|sS5Qz*_%V=h1qaJXvP4-Qu4Jmw zQ9zev3AlhO2YO^Am{el}_-t6U!=1-kmXw>m|6lIg`s4}l^#!Ggef3SpXZYskW`Ohn z&jDzJjA&Sfor?3~YPFjtOM#!SXwVFBZY>7NJV0%u6(q2N%z{O2q&_JsN^8x0@q2;z zwJF%N|Ir`Nqhp9oblpT(4~|Yu)>i(oxVRagl)%lxGIZ-Al`kqP3VeT}V(Fo!l?>o% zwzNU;Ia*o*JsoG~^A+Q63QEc_Vs4O>oXYaLUf4OCni@Gc0L*LtvD6^jY`s5eb9*yT zM*Ley7fw3keEt)V{ze@g8})q)$Yp5$~;;XPA)Exm_F0cJRJf( z75d&@cp?3xGGl&zeh?!;?oEcoQ|Em@Fd%;uNe&#~zf@L61)y5m=1FEfg7^WeS0&(J zP8b{hQz5Tog#*T`<^`;cu0Of*qE~GURgx=w1hq2oMmRk>+}zt?(~>vM=bYo`hlGE; z^DuVhGA9C0CPWzjV;6!nvQe3QQ_W!za-g2`sGs8h- zWo1o5-@x+#P$rtgWIatl>>jlFrqBUJMLuM95oZWl-0wYuZM1cV?Ek8ykb1dz-v_&8{mbn7%V?tZ%l~ z+R7Skp(&mf)A#UdZx#uG6wt(BQ~^3_s)KlreI509(BlK0IEbFUbkAHEzgzCfsXXTC zRido|=Brm2$D8x_a|~#p(TlyZ>gwih>$*t}`KI=3p<9mMysiNY>|j3fap6CHlzDJL zz?_+gUx<(gaDU-puek#Fs?{IH*FWpCO&pAj0L2bOuC$up!^RN@)o@#z*UjDauC=w% zSQf+o#D8Uwk%w6(3j}WSY6B1$)Is5LIUIE#ROG# zTI0Lp_PUx+IYr6Z2KGl{`whC9+Jr>7<`N&l)B?~%XV9&4S>752$%w}EL<>1tOG~?D zKZ}QSVPO%6&D_q~;ya>(xfCLFbnMl&q0N)zT4(6Q4rnLRVlzmGhQa&fO|cF4y?n^3 z?yNz@C(QkGtx96y$OZD6y>t?La|KRt;^q<nGKHUiTuso*77pw=YFyQ~*pHQ7%S3uxMOwN=NVx&`ZVr>C~J%|8KB9X(s zd*s@EOQ%AA5dni!qIrdT1@SSDFRZQA%u|x>Hk#4|zR`rqNk{=Ubf$)uQfulTtF^Ea z`N$)3m1s6cl=eqP0RFBB*c=tIRmFZLR#D{#<{31Au31-5P?@cfM3!RHomU3-s;2sX zN2*#w#-^rXUl1WrQIL1HccbOx&K(^8!KP1zTTJ z=At1w5$@*BmWGx*6C2a(sLnP~u})u7%;%u`DGwu4Co{=r?=AmV)W&}Rp;(2jl&rBx zRVyU4!Szx>>Ed+n=8U#7rE`WQNNP5?pKWCy%LB@}vDR2t^rSpi5wzHT?!pakIPj;I zd?+}Lf;H?+5zZl1xeet73^jf#Gf^|6YTUlY7e3Qr#h(=rNvZ3(24jNw zwRR?zm;V(zIw3JmDd~DM^CkB#y12Pc@^B)dBIEWa%3fu5NP;F#;SwgowW6i%i`x&H z---cVZ*HX3W=oznv#4t|`>3|!fJe_sN5@HL6(V$4A}3H(R7|lLKG<$#Z?FWaF1SC# z-Q9zo=7LmY_=dTo772}6^m#J>Y+Q!m5~yoxMoB2%#52|*N4zAn&m;;F9iAT-t6!#U zPz8p(GW9;#sTy&#Py^&pOglzk|{frKE(Mo-UKT+@z?)FVtr4{|_TuxxO=x z2mRT|R+DY=>9HZ9P)fqF&+&ukif}#*wz~76-BQ~;0ctpnB4FH%L;)?xAbmp}=-?C( z5Wr=^G3>4e09~g+@A2`lj+=u^+^73&iS${JArQBv2vI=s>**~6zSfAwk8}Ts?*`4<8Hiqj?oFT z`G4oHWROpepFrXYy09y&upxyIQ4m$n|4a!#B&Js!?3yp&J4Dr*=5$!wL5>9ZGuFa* znZ)H)msVL>Q^o?AY}r)HR9jo$96zw9-};N;Nw3d`Hyw6oxQ?}EW;#$b;Dyr2+Ytl& z1~*R(5mDJW*k)+yd%HU?84TM)Z?}i#dQ*weu|#u*Q9W-REfp0(=GSnx$M^B#mrfbj z=7EA{#RXV2ui0%`SOWRPgN~rD&Q{bx`n!Y0R!`|Ns4hTJrR#O{Ox=T+0Db5U+Dx^p z;=q*K(SiQ%{wP&+7mV1`0d(M{f^2ovgoULPhi9j&+-quWwW^O!v31RsxtqrN`nskP zMwAS-XF*Qdac$J5Vd&{8r>ZKUudgi=a)znO!BL^19T&^N%x`0DU8Iml)7@Rm%^ga} zsYioP6TNlO=nHrfNY6p$gB}h#FbbHCCx1S#`TK7L1p)0<=A@be!z^!{Kv{iuc1_t4 z7_N8Sa09yJAcJvfZ1RiIYC_6reTMWbLLw{ReAm*_h6wHXC!1NoW<4CdzIGijzlm@H zj1?r!qrup%QBf-$BEi_SD@PassLoFxgNww$%G%lgJTbpFDUkzOtnJ<-^tUqPTQ#wC z=osz}PS5QN4fTnyK%S3}UmTvDG`BWO6l9cy%Xc`tn?QmCv>ta`SyI@2DdhN0v9GYB zlEQ+8(F27u1~+u1_GPtT6`}ha~ z20CzSJ98|xG1L)7O9>-%7P*4EVStttbB0fi#Rt?w5gG3e>- zXC`0^HK&_AG^fRNbpWi_s87%?#p&c!OvKF+ODk&1UY zs8lX4lzfR@sz0tu$~d07-*0<&uG(iQbh5_PWGK-nOJ-dXE4>9u5TF`Juj9?Q<^a8X zTm)M{$hwy|i_Qmv{d!(o8X`eyQj%7VT!!-U`tJ|JkP|s9oeATT;ua1sQ7ab2NU)$> z1TbP*&`h zJy+Rlri1~$C%^qnI9!+94e!^)4rpP5)`ozCsF#NU20HM}x?4Va+8RIF{`K95!@xi+ z(agWhKtKn|ss3+)ZHlZ>8NuBO@BdlgHD3Rtdll$?jyBDAdCn!JK!8lSaD1^hx4XH; z;?V%aG8{bDfx3GUGP2TIy&d7-TEmirB;LIX5IitjPpFX!0|V609Gt^~`9<%^|E&cO zhDKZr_l(dNmE`5+sZ}{B)lQBztY*^Ub^_Q3!&{+Ttr7(?b z%EF?otjhc@ATRP#8p+5C{}095$l;rvZAT?y^AKR-bU8lT&E6Y=_x!H_Ow&*3W4D=HBF1?NxxZQPHIM&Z*S}^5?C5~N$^#5K*v|xJJ7ZJ%G9m5jC0a0UHj*X% zV|I6{nT1>;3fGMNxj#kkmZJ*J*> zNpHIUP%P+=`o!96%UUNmAB`gZ8t;2hFJ~AUKz#bw1!T)gcBe#|(pcNWj$P{3*{vTz z5Pabv|63vI8`YD86Rm2eB84=-kcx^6d0kgJ0FE(SS}Lb*xLZqvFtM=xh>eN@FfSlB zHl%1b>NiH%_O+D@Xm>Q#)&06WPEE1P%`Ph|tta|NAr2;D6xoS`#c_UW-mVV>!I4=~ zov%fOjf}=BEP)mj0!Yoj8QB|9%dR&0t!0Ceq2`8`wdUJEE#YKz?*-}T?xgPN_dXBv zRw@`(S1lPE9n1eA2}F`kvo$^odiFKKbo>V;-pHuPA6@I>e*bP+F@l{a(bM1Pl$#>TD%p53nQ+eAr#ASf!o1=20Bm2pXx^mv@T$?=+8FIi!pG0ZbCM6{c+->WwGpY@Y3^0*L++3YEm@?srLOJ;OJoiTO=JssxLa-9U_3E*J zUmgHR)$tHLOG_yo3yGE`&s0weJbWNcDHtn!mMAdalRP-&{}@x`BPYQuo4dQ4m6bIZ zd((+FFhAk-jhw4}+y;R3HVvZbP=_1Y>Q%Pz|_0U~Wy(pjNe=zLAR> zBLN_2^>HZ-FN3KO484q2So`@9At0j}8t#^w{(5&<)d2R|kicLbr-RpF-O72Rpvnbp zCNjF6No4#EX3>KFUooAHzVPsF$hMLsKrHwDR|)74O-xTW92|86aVZviU1>xFEjHux z>uYr@CpF=g{0d7)0eWh>I`?aK2m$D|j`r?GC-X?OftEd>RG=3OSSvDOFF&|m8CVQf zg(U!~prD{6>UtawReypPdgI$EEdhS1Fhod(>)v04IdP<1V81^TAJa)dK&V=xnKORT zPb46V*Bsz}Mi&~QU1`4x6rZavuz_+UsPW+NaPqe!?KA%nexAQESPnX=!81aQW(H;v zDm`?886_m%c%uR(QBDrblmhc#6m8q|`QBVnNl{2hnD^SGX--a#93dY_W)o`+o;(l( zpoo;X3RQmf>Rn?acn=_bsUFUWmL%tbr4^$9mXHOe4T97XC?sIOOFqTQ+9p)vHxmVW zWkJSr%VKjTqdS;AQ-IC5MM#&NfG#J?{%?Jvogh^m5PV9ccCVV~)Cj8xIyyT&Fy(Zh zs>=hp87S2y{l3s8C{RaRR9sDuWGcifJ%>p831uneE73sYJ61sgUR-PgB$UkY(ixNR zJ^(*CJ3EPrinUXa{lI!iK-=@O{cE^Qv17kxl2vGUUN$}P6Vl)6Q|kaRREvz;`>Om` z12F`QY5cNbmeH&Wv|JSYIvImV$S9G{BNi3FFu!}XsJ9nnuypJ|*si)?7$p`8@XJhF z2q1spfl!{UMT7u~4zf!3?;dUmJzY`%6Dot~tk_>h zz$5wx1OOOydviR2D-ezW0UY(KOI>g^;PD?=hQ64t!fnlpk(Ethx3do<%PKkX_u#Kectq?Rc%$3bm z5$*^1Wlk93_V(r*W}LA8`_6tZP+~2kV+dSdEQ2=s?EVN)WCaNRVxtf7aJ4nGbZ2E% zB*8i^DnyTp;*;@!!GMsEMeXBa4{lJSi|4rw_#eUMvl&1fgNb?3lc=g7FUX7oggm_l zrRYEuc)1iDv8dl|JH_jLU&N!s9>w=_5aDan*UZcxtKAa&T2-WXPr+0#aH`=s1oYoQ zN(@jk_=NN|!?i?Sequ=I-aMG$m{Mt>tZ!31xJ8;{W~tu&YY~K|)x*oo zO(3!DI)qldG0nlD5{Cr3FJ0 z7imfo0U;szyi-(|hll5;1NSDH`}M`ssVN6JviTCAMXh+t0T02|+}PVe3i-xVG5AR2 z!<3Hwza@-T|410&{{VeoK>=-WE6F}$fIpC1sCx~UlbU3giAiSe>Rex4f}!^1PzBb2u=Fi=0Ib9qvp zw>4Z~%*y+}@H-;{>1{aV5-0|Q<=?VF=f~0%!yA4-B(tPxLIOj`8RMn10q6CRH*?9X z&7r*XZC|x_<&8wNpYHsb8qaGoJ7S0hNr!gJvBj1{M_wqW3m; zX*y};u1qsA)@#q%jwdlfLLWiiQ%<%c1(b7T_TL;*Ik)+M6e{w^4{~a15Uth6i{Flb z15@e-E^5xEl!3$@QtSbs#1OrsXnqZTx0*#X$jwe{Lm?Htb#4JIBQ-T6^<RxpR-ZUNdP#;MveW!ax&~ z4|pUPbhzA&=s-<~&vW;gzELa1aR}In zLqwtH8DUt$BJ`Tok#!hom_HnM69#<&Cjj~)PAvwY(zpS2cXv+C+w*;&93>iZgO4+j zZ zj9_o8H5eSyn=cUrzat9~pILr8 z-mhN%A&3Mro_09ru31eib`E1^SE+t}DxAH(*R@_^Y6 zApsbu`t|nqq0I<-65!Op5;58X;W3fKCdBx(2&Q7RhqhDFP^Vqe`>zp~Qkr~b(I~iTc6JVQ)HLaeO7dnKKh!*yr`|%IK0~EM z{3e{f)g_rFG)Rs1^zow*(c__l5(~N1m`)H=A%bk|WAd5>3VA}NvSj`U2%$Uk#5e>= zWgeFUe?Z;jM8Pvy{ky!Pa&3JD?2yj4N5->?Kn{E8ix{P-2zp?eiHSgr)~l3ynQo3x zq;5Q-rn}E-s{;;E0>-!(0k$D=H8m%dv9yu~oeGl>jf~DZ4{%`Sw%vVylW2Kq4FLig z+TidGAhs`n7PH2AA7I4en_Hj$=10UrI;fNaI9LbHLecg(P&_TRh^ul` z)g&Z<+Ui?J2Z*BJDrF#|6l%dVD57R>ymykFU6jTvHqMn~KJ3Gs;T}DEB@g#O8kqDl zO|)^MRKE8}=50Tesb7KZ->qKrQ`%e>`=(-G*MKV|#P(TGXh=MRVdTY7?s+k;`Bl%g zVPe#BJeL^hGdPs(^Fu^#Xg|MY3Cu~|v;-z68wz$EFS&^L6e1jSblg`J@`u2*3j9gI z>Rv^0b#Vjg+`VFk9TepsF(hA&6sSurzqGI4mxQAcFat5X%udxCmyi7^-^?oyLY0&A?Zt14!$f`Kuu)VsB%1;j zFv4Aeg|jNQY)M?=aPBBe-VX-FEf<=$um)DM|A)7?jHUmX%i#R)&N&c3+ zzQn;kBfu}6n%>OJsICpW<>^zzc$0G5nDfo@+1gt8{{7=oh2Ooo`Spx@MVKY%_Tt9LtvqQjZyO^69h>Ryc$mx@&dijfLF7D# z>V9`*WX$R0_|52;kdWZy*|fU}eH8~)h)h^$s9yt&b+f4R`V!~pyH~5uFl@{g&>sB$ zy~Fi%)Y!U(s_&786?i4k>lP#?KH+n-)YM$soVbhju(izk>00k&nvFHHN>B8%Wqq?F zR7CkN#((bv3Ealv;Y9bkT3fI0ElE~OP^?c~Z3{%gUb6{&s{$de-uC^N7fBG{Vpt>L z{tEkBKMm{yyjdU8PE#Hc#;RtAcecM9Sgi2!F5c{R z)|W}>0pZ;)_0N-~v-cV_`H7Vml8&ciTa|ixW_-`UHoNl)J`42Ynjv2$d zl<4)eE3Rg|+l~}8{+yK$P0h#0-`w3dEM4pnNegV2IswnwbtTrK77>l0k)3S}kVYy| z&iY92(X~z{p+TFOk)m7B7@~U%Mk>~m$$(b}{R>R)8YR7R@ zYu^*@Lo_0^rn)wx2xn4f^+*eiJ2yYJh;tlo8-)lJzn39-pj}tj6D9q0iIoS1IH(b~ z_LSWxMY$~MB{_3QOX88IxfTV?Pdv#C5n|}{*{_Lsw$FcSGaWd(fch_L zHqmSk;vRrNn-?Jeli_(IR%hPQ^TltaM)kj0r|@)rS|9shp{bPst@1H*` zVVi@s`tO(h+y99d6jbd}l5%qkQ+=IvG>yfQBr)AYM#n&=-O*xbYD&ikZt_q%_wQX# zdLtsDMn>|PMj&Z4Rr;i~6b6F$mDnj1f{^9Z(J49kR~Wg~9`qgSYby$lyewsgFg`9j zQ{|NW@5lL|^QqEVLBc;krQA|yDm{CaZ)lhWHQudAaFp_r*^pn4FomqB%}^q)V;w>Qp}^87cuJJyYr zxVd>oXz8D(W~B@t&ia919TE<3dwZF>;`nyg)XGcB9PJ$@N*oWC&D@Nl-BW)2ZfsmE zjS0vM3`9dl!cui$51T_HJ0)Ltq~OFas<3v4oP-8SHa&GHC4R=(uu2J;9jgQvIWa zLs`neA0p5X1-YCojIU>iQD4l4NE|-oX~spw;0INP95eHRl@-8iQN<>8RkEWkAYxspyf%qOM-Has>wq!;hi0jrH}z>dUf#OcOPUF3*Aj8ziKKq$I;o z>L(Nwyo`){=O?ffRlUgBntlm~;?X^Sd>oK2=Z$c;6bA=nfJ%1jza?ctLrY7_og5v4 zUxRlXZsCK2JtISXkW@@mnyD#?iq2Fzg@l9v9<>${BA2NeAT?QKkx-iZK2!4K^knb2 z0vbuRiZfFs(YC^8a;|%4Q%dskk32r3AQMZ=Rl`CFX9a52(+2J>4ld4%jchlSTtgYa zRsl1+>vm2a)zR76zW(hEOc72FA8O04s4dKSfrxr|G*xD6;%w}1q!Ii*T1-voX8gNH z*km5RsHiacp^rycqXlie{1_b9-6{LJ&dFFo=G&lVIp%{RylDQa&mH{;STBi>f&G@RQcl> zLu>f=5Kekz78ZVfx(R4?&78?-naykMM8(X@GhDTG=ar;xA4HnpaQ_6JugVSYM1{7z zg~mcFA;J0MBQ7>u6-_eEV$0kT26`wuR?D{lr=8-ktWSJBQ%^}7a<6jIKQ5_9KaZKY zyu7S{ARynbt+QWxZXl=n;vhTNXt02VwWAf>frn0NE(fCvZFK?yu&F!DK?n|qM>iBa zwz`Y$`z#?1yWq1qTYZV+=Sgd8BmJ$UL_WK()WLrJx&4=}r4VLz{SQ@_mmza=L-~2o zKtYdNTx_@cEL)v^NIT*0Vs)&LqwM5e_V|9Ks>JQawc>V;OKRemm=TWTz zaZwS${Fe#?Ebq3$0+{TR*U&P8uZH~q8<2J?3Mx=cx8c%FUr^;UDL5%b$tDQDd5eSS zxuBWLPbY+^QfhDUBb%O*mzR>x)X;FXb|l|kC_pv=6BoCsvFYsYZRi`KPiF3#k;El_ z!%pJ2SeShsz1Z%H1(Si+?qdNQXhi*NN7_b~5)3n)9qDqYuR^;zS`vGU1_$B6fB**2 zwWw5DBawasS>w{4RhG)y%4)5u6tqI%0)ss`A%PsAf7t0f-axU^G(K-hQ!SV|Xvm_N zi9?zwn`%h?Ohs84i`{tIoFihX3tYdivlOr%V)gY6gu0%x1O|%oS?L-YQuC6Ma!^pv zv)lQG%F9aL&$V1g8%R%LX2v&wVxAETKEO(9DwMwh?(T@BC@6k1>2guZmzqowJr)*F zdYMNRa>WQHM8w2oI&J@`%G<=59V8^+=Jh0^f6KlU%mmw1=p9cFs7?tLsdcI z;{t>9D3cOBJiYBixHcE&F>szih+Ckqum5L)DeJc6F(5 z4gDGzxR)%^$AbLle)&5Sg_+qM!_wNCLXGESqZpnF#CXuie#=zac^#kh*uCaU zXFJ|}j^TkJ$iLXw*ud6=NE#vLg@Jqz?d?Q02`P4!QaVwR}b{ttT;*ZJl5MudbO?*<$EXxPp&6NE;L zZP&|e+^%N*cE8>S+722|Sj%sDqs_49YN@%FJ_5s*7(33~ao;~y_Nf1c4F~fjC&$zm z!gada$T5)Jb~ek!D4BsR%f31+?w!@F@bR#)v_-pzW}1;5;(%6iX0O})Hf~L4e}Ag4FMyAOi;I2+2H8Yh9@)$aG!YI< z$)3EUjp{~vR2axml5WR&OzG&Eb!jtEU9bL|v9X~^Nhfxe3%i^ZL@!^oPjV0iR=VH1 ztWHXLJh|UHG!cN&T55}`MzXvmgqS*Dh~_QeafSa|GdG9cBj`o9Vd3!vC;yw&cl(Ej zhAae0{2%q=IHcQqT9C5QB7BDu#INip)ua?gdIr5PY9sb-?a=oRa^-2(QAjjwjuR}L~ zgc~Al)(&7d4b{=n1F=2W9LUQhq0WQ)GP(L{vS9$O294o{VwUHf6FdQ|JNrAJSg>bo zZ5vbS?RiPh7x4PM0;O)eW1Wnc@u-EZg+}fO0Nah581E-;^2X6)OwX#jqzxG2_$|!O zO3F$yaq&Qt2~rOL#1yoS`81x%`XD2pIytp$e#w19gM)I$UsCb&)2GSJP1wrP1pgNC z+w1wtn;3p3WO|^h0&t?+$46;o1jNb^D$=w>?g8T;qZ*i~l-QmsA+!r~68uLC;2z&& zxN{YeIOdC&MpAX6tLr%0)6!DYV*!FajuQXqMhe410@7DvsQ6;P-aYB(L)K*uc<)ue z;aEA@H%8c08$3{ZY7p$(H|!sz!~6wbVrOH0gO-+dXZ6dwCj~`?1Nto5jAF7ipB_<@0hnxL8_39@1u}QU@w(?%EI`)!N2pBQZ)AB3mdpj&iq#gitJ|ueR?d^rg*}^`1+Q2Uv&#I%cDx~pmJHsah z6=7apUM>CcPP_)y<%tC3R)nJy{jTOJFZ($<3T4?k8i4+3w_;fNV$5u8t*1G2CF8$G z#h@nf?io57!Z$Va?*K6%#z)Czv-J-|Jgx8!mjij+qRH5{@GYPLsY3}etb3*x=9qa{ zJZ{0#DxKU1+FCYm*s~tQefi+W!^BiOx3i5y;GBau>Bh&%`!Y5glBB_Mjdc8P(2SqCJN+(fS|5$X9qEUM(7zQhiu3PBF@37AwAJtwod_H zCVwu|_BmJ1=*>`vSzEv2=9p%93vP*-6$42gg3-t*8?FiZAmWDdEyuF*on6eq$?4xW zR5xmb;-c=^lN0=a&koWH~;o5>jNm!zalst%7iC=yfSN%`1^nz|%t?gKDVKR0vh z7bd?$u^G7sxKYZuxfKeGbU>d4>bX*OGqTD_P$BTK+v%Hc^SK_CPv_*E9c?DX@RaI| zu| z67zJY3`_t!OV+b?ko}O?-whg-=g*%*>JLY6Mr!;&-uA(J0Fy!f2y9NsNGKr%#pE8) zM}jl)PSDVB_w?dQ%Yr#Lnp%p*B*b;}bh8xme`WoGr#rG@(8I#k<~5@4=9Gkpu!XsG zV(t^iHWneXdA-t-veD6zg{8&35#y>C=39p*lp&=)x3Y7!lu2=f1cioVWx(J`mWUPS zQDt*xTPPUfw1$&Q^%Yo=wESEbC;49S*w=`X&@p2DvC;r`8TI6A;o6nFA#U`e1fABJk)OgSfhS?_s+@b z8GHW#YySYia)2rL_;A1(m|Jt&XnjD_wH7o=j&FJE9x@WA`SQELBvFNMIt>Fgw>8=d z$)TRfO+t*EMEXhJQ#M2hW70&IlT7&haYzvT6~d2pFP_}+r_#%r{Z4@7YdSG zNRUh|NxYbHtaOFy138QNMfQ-Wo-Pho5XJ8(f#$dd=x<(?^i;IBYUA(_pCvolZ$}`* z8S*n&5)=};oU^MYw`8+-;G=&f+t~Hkc7Xovt^?zs|4GWgYH&O$yjx_znICZW(4sZ! zF~8B%z0DurqQf4tN(Rv}z;INBH~wtTZFe{jbj7)pO7EfBsmlNdagy}cjrq<1!UG!{ z60j#zhl(Wh0F@CrhDz{5GX6J}(lp=Le}Nb))&G3*4-4wf&aE{ywxw0v9vGu#R!e|v zPHMeS*E5qi^c3{=1_0Q0eNsFG-GSO`${}h6Wv1Tm&~v+BK%KJeQ4qhrK?@sK*M|;W zDHj91_@9zGj|&P|!uA+X`6*eoc>e;7oX(`mVj)ZYkmx7n`6yBv7axXZjEic$UzA_0 za3tqLxhj37hWISHRc^+zbieA0#VwZYZP)>C^OGL)|2fKYF@-F3P9n@BO~X~94TWCj zzCJ)07<|B#CSRyqC{67$DtV)eyhcMKsO_VLr3I;*2GXDZIK9-sgwXc4_<$eqMA10q z{F#n*{p#=hdnE#Y{@L|Q$sf4?4DY&r!3z0*;Dy%RG6C9vfJ||579=R7K)-z8c(L2U z&^@L0EzWE=`D<-$Rc!2n6U&3=Dk^qXmc&|KEIP_$Fx@mGkz#3-HA%Ac2jSA<;;xmI zj^tC9JZ^R~-cV|WMzN2n@>SIGXoziYH#OM@hK7a)3DmNw>D}JR6#Co~^77uAsyyR( zrNrZh6Z_dWH&-EIol$pqa9mkR;RKIanG$hNUh|eRTC1o?8O8lm774*F38NH8Hd1T4 zn26GdmbED$aVrBWM}7o^NVXA!~&X@-S`1vFC$ zE!Yc7=;)|3S8_fL0}mcpSy=@=vx;QWB$k%ZD0DmBX^Oiza=Y5@UMfs5 z8UuZH^|hXi20|#?#aA?teVRuXAf#28>`Dn zc(pV9Ht63G<3TAe!FO2#nJd#_V3of9Gd~Sw)_Ip+oXbuNRehWdI`Q>Ch8A4=V@G1v zFR$&xrOZ!vUKWKde8@RZ@)3WW_|irWXp-=6cvM&qu%RZ#*%_bA%CeO7qhGWA!-B%5B-|WlhG5JO$Md8-+;Pl)eDQ7^y#(ls# zFw~c7UWyuUea{@ua4z;eahOdTW^!4XrPSTmoASs8y#GgB5(dPj{Nv9c29dTycX zcuHofcKg-SFfA5F^~ps+))9OE?|mnHC=E6FygXg&8=Jf!n1UReZ^7?_QEi@j6+em{ zcE`Exbdm?-j!ca7mPqj4C&p_+~B z2P37%;2Mz@91X}VSeCwcWM8Yf?zX}D@g2u=&XKV`DH+wt!QSgGyW5WuOyq2IrhO>% zGz+Byw{B?$KQV4V28O|TqIL9?oy4VnX|JP2+t5;yG`zf|l+>d$juWa*AOUG*(t}ll zNIpUvkHlEg2Dn_^0wC;KgPCejJqD`mO+%dPvcsQ&Z$SbNb*?BcW9jF?F0ZEPUORF!I$tnBHk>;ne_mo+nYXyJ@ z@?Qa;+HHVtRgBW=%#U8Rv-uI7U_(7@rEvMP0|VKbU!@P|>gn2wP+a#lZEFj1sxyiJ zh+ZBJRc8f$HZ(B}>ufitrLnEpmo(RZ!mn?x{)n5|3d*S#O$Vp5b(e!jehsw>0Lwm@ zUs@|rggzgj_)HVyd$ErJ0Doyy=xo{vrmLpS2@s+q#<%S3fP&|^{?#o)sO&}}A|_N+ z6ayN;+n{Hd2GLVEG+dOwGD{sSEhQge1KQ#L*%u$5nAhr@gN@t5VrT1WKUp$3CGF=d zNM4`2)*obK%*2zz{=BgfbK3gMn5{fJd5K?9k>Ap?R6axc2?%A-DlW@n+;7<~Y)zFX zOF!XIHU+oON3RtN8!IeCPdF&jnHlJ50TI(_Xn3krtjTD4t)k{=F3bVMYPd|R>4lry z=}I4BJOCqLn4fap4;IXU0gNVd$^{Ge7Crax>G=_=rJG_r(64 z%EhHO$$fNMT)&;wDZp>7ENoonnlbal7b-?CG0@N$FlT%3ROT>p~yKT_PMM$3l-n7nbk1?gH{O%nk z4qP=z*>g9msL{<&HKqS=s5(h!&9I{R>}Vvx$vDJ;sPuxE5)-qr0eb>0p;FB3+|MwO zi;c&;oY<)aSbc>#caX;dGBUtFiV(80u~E77`y&)QTBIv!O4-%co62%}R3QzYmGgD? zicApW0ed83bJ|MJUOhM^R8TO<%!IoEvKG3YW#a{rfq(@%-h8HrfK1vGR6mOl5)wk@ zFXG943zHQi!`(jy^p9`W1gezZ{N&yeF}GM`ur~Pf>?jo36Vh^vRLUVja66kaR02_A zKpM5ZZfI&Mu~R8BlEv`ga!9SXFh5^l*)xXQOj`#s3h7OWDqSudt)xN}lXeexdRDCG zBUv}K{aMxX>KGm9T~{p5b>hqj#_I@eNY@5}S(#nsrbYa}af!xn4O%R>iaqGlX}>)ahIS ztuokHZ#;=N})=^oUmk&`{{nVjAsRcDfMa1%+AC751h#+#YG@DpmS#>y>QQq;XHf9V188Pf{@Lhk|y6fNf**0o2e@Pb{zWp z`#41xN#RwOV^b*^LquV`k?(vffAriI7|6s=@3-HNh>Bs2E%?IRgiy^zEuyTPF|;zy z!*fW?~ap zZ)d4)2`r%8Mv1%=%*Ywo*M$x$nH_h~@j%BfNIVjU-1dNGh&Finz|l-iZC1ocs;_%` zI;&rLP(nzPF1)QUN8ikZwUYv9sKcV7W>zCGG&q)(ZLbqu1Ma|%Kd-FNg!D$mjhHBQ z3!OyB6PKnAk(8{ht>b?D@Q8S$3tH9_yDeBXKf|I$Od!JT(5qf7DWjku{607;N@>;$ zRWfydJXOlFl!(-NtMegTF^l74&wM?|e5jSn@R4|fM?%8qH0!}n*YqhA2Y2uI9F}jo za3^-EWKpu*+}x282WI}}rY?G&Hk=9(ufAuYt$j^FL4kpdnQA1tmPv^TbLT64_Dz96 zRZLXFDW!I9_zXKYJQJAw0BLg$WzXGv`0!x^S#V;di^YTawXH5(L;%=!<~pM}7@?)7 zW9;dgg50(|kSz~(qKU4}t%c|5pnw1h*1H#KYT&Ae0EGVjemH8R_r9{?*a6^3e?&ue zle7RJ0Xou}7xzLXef!jS-CV7$t=9q{A`!CP+dr77a2$BF(BAG3IU9#&SJ(YY6b`>n zgJve6xZ1*?(defh*zd=VO(}JE^agi1?&@5fE)fzbKz@aDadY!QFzByzbF1*4Xw$boB2ZKLF{5 zI|W!Lj>ZonCm!3<;se7xVgQe}YcrW_tZ&DGLU;HvTgv#=$vU&Un*o&sfwt#TIG7oI z3E2aKg0Ql0q;TPDq2h&qT2+ngMMb-(Txl(wFhFTCzPz}p`d;yK!pn9>t($4FeB`tn z8b(IoWEFEhZ*OnkF{>U}v1X}#CsWyid7ISwa(@NT*3fjhrursO`KHQHYmKDr``cWT zNd!1y(O>zeilbQAJ^{%mL`8+*9-OBm+Dx9DTbkR`GQ!DA3ORi$U9I2;X8C+7*AZ!0 zZ676cxX{KGL-+J?!@xkH7!BQ18kWuQd&sW`M1d5WD0cz8%L;0NfPfC*DcjxdvZ2@a_ad~-R>dFdE6GiUM4$!>7bm+8&`N*U<^F^%lbj1B>LIV0@V$-OnvravS9D+*ik_1oW-GqTF(r@K~P%!QL6m;MBoxI^DBc#m>U&Pms*YZ5O0FRS)8K{CB#Tzq+c zod}O;TwaX?6JL0b$-vmSy`|;pHOYpJhn*;yj(UH6yfSL>DgDNT=z-K5ef`ctqm9hW z_qn;iS6`?8eQGLqI7kyrFfcO`KnxD|1y!EJWC7C9E|6XX3$X7iT3=NK1fa^IE&g81 zE_bk>4ySXOm|!WM+ZPHXX0^}MubIP_7cG@vpIvpF?k4qk2m9_6#N8K^*jE>`pJerZ zy-%gLS^Mk0 ze=R6<1x9D?$M<(n#oW|L{5n*jWzx-uuw<{hcTu%LfDH^wHIE~>U>d0?U7-bpVDJ(- zM$_HKJTUZwB+~KZ_>qV5!~}D1FT&~RJpxvKeI4!j!*EqH>;Y-HVm97MqJ=2qG|G;; z@42~*yVNO3p$`s&n+=F!Vs5#Ax@TH%w%#l)Cwu>AmTw^M;X?SUj>vUwe*u4g(U&&# z;wvJ4pTCPO1}6xCVgu}@?0I>KeSLq+B)vR&SPU)J24`&iAsD*6*fbz0pa)Sv>Y$Mv zF{%#s%g+*Tes}aWb#=`fyNh&v2Y?gER@zz%A$j)kgw zNFhoho>IT5Z>H9*&)+vL*69hwh%UqFcTNN0|C5kZMnPe2b2@IuBvcxM9YF1JfgS{> zGtcCB4`%VENwD{G3ZXgdFY#t!kX~Pm;6owPW8LB~6@!?Y)yoUS`0dbV)z59$U&;)4 zbwqVM?P1CVu3_`Y*YgZA>E-Q* zj0|HgawoT+Txylb*|GD#0mN_aS_J{swKO$0bfWWTqRj89vF-0*NsPnK>xS;0o?-GE z7LGnTY@g`M&nsZLdYh%p%dYK}N$)fLV zjE>%SbkTox+qC8B*xP>> zEFKnSKpSNNE9jH?-DROlJnuRS3mewqMeQ$MZ3~*-M0VQJUWPY9qv6>HWMJ;S&8wz{ z*G&x_$(91pb8hE>fOJVwzWriY4Zm*~pXxY=`3k_^j^FV3+26$ti1jV^k?h{zXl&GVG>G!J_PAi? zGvQxgoFw33Z`kSUH~$bvonO#cz&jGXqQ-trj|tlKxG1O7vn>b_hH~yFWVYQ?kMH3nhnx8 z&fg0#kT5%aZDNRg=Tq6;jb=7uw<+zxDDaysXw~?!5|J~Z$nh4UL z>G7|gJrD84kPP|t$UYS!YcO=7A#r)4d9iczIlqrUYcw2GazQXkt!D1M!93J%Llz&F zSS2Uod%@KBTxt5fUm9 zfY>Dd-IMx`Z187h7Y`lvya^&r3xa_>fCU6oNxTZ}nJ{g%bui{LmQ1eG%}4b|zA_m9 zw2V4%gBqq#WO7>e3b=Y2@HBv-DFYQyzV!BY7^`r`ikCuyqS3poT?rVfE%s3wH3Mg0p#Ix#RRr!Q$P3&Ejm9rl%}xEucJlq=yrgLz&mTE;}chm zsk3pry+-(t%uX)NloKCiQfgqj*7vxU=Qry3g(NbammFZ*CbM#R!R@SVMX zfBTV%Bp!2m>=PRP6e+S?JL~$M^F}nnfY=V{hnu9(@NjrLsL@6+zmhCe)6)yTyyX2U zKC@lqAd&rZ^>I#huESVS$5_#|?V7`>2>67ak&|4OXL~lL_d;5*6%_{u`==9(&Kw;Z zn;OmEP~(RrpnJE;G%t(_Z5iq?;X90k=?cDlF-+0%`}wnwr=cP|{EoCP3-Xvv z&)gzFH3~Z_9k5moU;zYO5wIXvJLOaOM>=>sPh@=>f_r)juS5C1Rm{2_?CLnjHUjzr z)#WB1>l!e zM~cMb-;H;))I>;eJ^;P7V&>sXnNR>2E60ihu=H6X-JB0X-Cq2@R>P`6RBkEHWc~1W zz*mf|S)Op<3GsP*c!IJZ_Vn^BbF6r6|1^4SXeYvd-pPW;QB*3VIC~55<++3|i)qA< z6=TH!)R2=y?nxtkShR}Djs`0*^^`&Fy(`vy&U*pZ<@g(@E?HmG_H|DU*@21$*LGbV z6W?GPE6}MYWnd-<$Gnb=Z2Kti9vVKgmmnvE7F7PxPkii;_@1D2>t4oV8nT~7Wv37! z0Ycjc*NRs)Eo%fVfLMSMJ2IUD4PF+8-(v^?efe_V%kWn;P@uqvCB|?a)CN98PGUM* z6tCEdYfbD(HNAD6PRhmfwal&B-My~+_YLs zMpk?@hIUU|`_=Atykch6iGJzS_q?z7&yn{gH^%NE+`3!$J;9l}d6AKe%dnS2ptdg4 z(rRnGtYN`YPfrg_50KQ0T2?Z>ZH|&qx11@A8OukBf@EN*Ujl1Iadvh|%9{jPa^j$0 zA&kk0EJt5Og@|zz2D3s7ij(7bW4=U>k4@0x_-+?r?Xe2??Tw9%K?I{kiSn~&=`er~ z;)%cEs{X)iY)@+fnT?{N!pxzjhK9wE^j*;eJ!Tp2Gux0x!N!Jx!rUrVn(Kl=_<^KR zCx-BVt6X-#<~M5qrW&%8hQ=l)dM2x8lbtfe`3FS5`8B|FtClD>PY=(T4M93n(_@)a zEdyEI)p3gQ!}U`0!*w~x)xbc8R8tEc+JWV{nU#@uN=_TQ3!oFeDGyjF0%1EQIiD+-N1QH(XU3ZSGJ6t0C)g3 zxc%ax$Mr^5*B8>DX=7*8!95Wj8`*1ENa@~#PQqykbIGo6W#qZ6=T2hB{Pz%w_^y6D zQggfVDk}rJHa;l{@a5d)c6A0a*^H9lP*3*Gs@>BygqN&ib{mnQB5fifB7S~=OiPQk zw>H07PX=^pZsCAEkVu%%;eOn1J1*j3^&tVHCa8c}SlM8CV~A*HH5$rtmaYL`x?DYt=r^Q0k)*aecE{kpxACy~W8v@gx&|;z!}hf>bH8nx#i4$0xa*MB3I*lKJV9 zxqgt-v*YTSZcSrgkw_4I@M|cEjPON&fvc!Ud~H;70xc~7Ngy<|N`4DU%Bv4Ih~~)) z3jCF-tCVS~zQuOJlr)~_0RoDk_=9{Cij9o~a&pS9bv>qt>x&v36JtAjJ4~-DVNYyn zDHs9U%8HK5g;|5*?#%qAdDlLZlSzGJ9NjAv?dwBO8#tp4xmL38B$sVXQ`?w`Pe?a|C^) zKQAQ}Edor{AyJz$lFL#LalPnZ-?2&Cy-d$xiMhg}LA%J<5+dy&OuqN)?qd5VM6tlR z{k^*8lqWzXyiL~19RUT4{VIu~wts*)7YB{#lhwbvqn5ZIjKVb&<>2YBzS@gRC8OWD zWM<|o{3V+XL2fPeFx)svvd7KF8bq*=T{vFkn}QyKZ^%ku`JpD6#4S4d>;1Uz`qAi} zBFTLb(QeNkAmc=dv$C?k_!G#6^7+Fvf{#mgynpt3hylH_((b?WO)#u28)=blMsj8S84*mKDqv?U1e#M%??s z-U-*7F1&mnU8Hy45(T=9itxr`DEF#fs4Hv3(m${#6&fsp7n#QH%TEWW)PBHdbkA+A zA6!=c0e}3H(GJxuu(BKEUC@o@h#%gE0$%xN(_}{b5N8Aw8zA~ufiTj80lm1B{B-2GzmRd+geX#QTBd~%=5rQ6k35w2Q&@(eB3H5x=?g_+3B+Z`q^@qn{28yjA1#(M4{g5qweh0;|($*(6S^-jvxVYR3XBj zdU4H{k(YO2TD@F3T>vpYliSYKXO#0uOMC++pC6k z;r@Id7|}V#eS3jbbXnb49ip}OUM{7QIx zu(vZkl(5+?_|lA%h9o>wjYE&~_Io^9nQ$2+zdJt(6+t~*?&9W*PhDjSBQ_365G#iuIqi2Oucsx zE!OVKtsB!LA6vBH8h{s?tsx5ghP^TmU*n zAoZO&NAwFxBG3xCwx=$5|2GSU7kPpYbyehOO#9@QeVOwHR0Jk2aIF4-hG#@l}VPE5|br)aC$bdLhoWLrUjQR=2 z18kbt)Oi$OD}b=oW6eL3Dvy^UbAA%IR`GtQb)GEo^M$9}T#J;eaZO z`q{JQt|5a$Xb{0@2{W4U<|+TXt_1<<8zkwY-~yEj^^BM^&q?zC&eo@)Diuwy0bA~Q zv?>1ft)hZbw!~Z2LPyp^5>suR!onh0YmEq_0MwqHT~+)Rrv{ld1jMRRGD&@g&nqj@ ziMZ-Da}n+$KrS0#elVOiVyci2=<<=cMb_ z$6K~&X!0{vuC5R^4kF|7qYY*S1t9y57CRcf5HbZJcffXi^Z^Euv9Uc^{9u;RLjoeu zQ+T|7Wjv94i_bBq`U+C`;NmKy_(5bIf8zhr3sGVf4g9?s&(HE{tg8Mi8es+<9qfn}kjtSrp80Uj%`48+H$htrXIe3g`hXnG)#0DQ5p zlY}5{pvO`EjCcn97n#Srl@(JejQ-Pbk^BlU#`V}QDJ*{IQ@mfl0+%|N=K`YG$vvFU z&n1aVmG*bDeSLFta+={Cvxi_NxP*i_oNQFmL`iChV-Xf!j^h{n!!$?k6HiVm2K-8> zd`Q|4?$7t>Q3M1z?u;A^)AQ?MVf93>{&!{(xIkT5WkJQ!y1_wco4+3)M?^%-O}VD` zt>n~>DJmssX~|_O2*@ZbXj+(vi@!5BhYI)}!knd`mtX=T15c=k&0;<1I&*=TaJ{@_ z4Gjf_B?lMXMSDbQYU;6v2Vn3OJlP=);&p)u#K!yuk z2Ybv%f2~vZTt#*!vHx>JS^C8@U{k6u@_qG2&B@K_Zby3)QF$AE?BsA>|)0+_kjl85S0^ zu>qn5*Wun;TtvWRAVbv6EL$}j-Ooq3SJoHe&yAm z$yr+RE%ci|8al*>LN$dJE_zOIs(<;A0Mi04&c{jB+K12vf;{80v=o*JtQ7#An)6pL zV~H&(Vf}$t{tANWnj0EC&z2P+w&<3F11OB=W&{8wgiKRsl|N=SG7pdmO+XA~S8|-= z+3~9kMbD!V=psK## zGlNu(d8fZ_w>4`p3!Wq5oCz2FO-Z;hjjxSQ^{JljN714#jMi#P5ZZxOc+)iRRyS=h zxF%+<)Wdy`A@kF+L>Vqk_~B-Q9A#sp{mp+)o&uzX82{F{ezFIXl!c8e&1rs{gS&kH z=xF7@as82vD1|Xv)2F7r-5p?o$#%bWwofa;nS^8k*gymjCpuanl0m*3vzOp2IeYdw zP?#WSa=EwwRt;LbYlUk7<>OokmpJ+6DdL%c4+SG&bD%*jQ8s<|=8XW%JXl{3+vq`Q zCF=W&REC>EE`dN@T}LVh(b8bg;3D9(4u8u> zOaB!cZwL`d0ubL0JqRXqtfW3&e`-@yO#ie0-vXohpEeukFknRACS&=%f`hg1RUpMV zI{Kr5nof_AqgR6!!z?4aIxMuIFvpy#RDk2l3W#uEqNJMHRtzC~)zxBDpf`F8k}+@@ znHiwP2k;B{oUS-df%5`KlLC>{_BWzy>&s8t+t&2W&{0tY5FvyjtgAysjC-hWKt@LO z5=0!WT^+9xRlp~+Mqlj=&N0w;u`v8rXYdayWkzzZQU8N>-cRsl4Lt`7xfLx9pe>33 z-NW#ik5f95_uZ5IVQQ3^DB=2+nuj#7oRgETKdK?I7>@)OWcxjag~RCzPYPLClgQo+ zDUFR_QSCckd~SYYMg3Oaz`)E*?Mt{E_);fF9YJnbb{9Qoir*_O@7VdWx!DJl`A{Gc zj*Pr=%$oslj4`5JYRYYDa�l-CbHuy%KSPhSY%ZCGiskMmYJ?jI3T5z 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%0DMEp15cz4^vX2NZx`=W}bT% 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

_!qNZD9GCpm^B3cXiFQfYc@ahi~uLA46t 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 literal 0 HcmV?d00001 diff --git a/docs/en/assets/pspace-06.png b/docs/en/assets/pspace-06.png new file mode 100644 index 0000000000000000000000000000000000000000..22b133e1923d52baafc344d0481c1b89cc24b31a GIT binary patch literal 20243 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 l!=+O+I%;GgWu^WL{D?;i)f8i@b^ literal 0 HcmV?d00001 diff --git a/docs/en/assets/pspace-07.png b/docs/en/assets/pspace-07.png new file mode 100644 index 0000000000000000000000000000000000000000..b212cbc4f9b03a22f6372c1eafe1e107cf46bb23 GIT binary patch literal 28372 zcmdSBcT`i+*EWc~gAoO#YLpJ4_ofh}gLEkYK?uD!=?Wr&P(*r{-a$Y@2?3E_L$9It z7J6^r1>fJh=8tc_nOWzf75D_nVfYI8b;m|Z)1H9f9`VJ$D+ICePYDQ~6G%hfsD6rH9dp*{bw0bb z;mjj_`^sNkZv_4GfPibZYWew&eOjYtE2X6?Bf4Ig;FVoh40^9%rLwFvKNW)04j{f2 z;ElNbl}51rp}LgV-g-zOsY)aQJW`cNM2(ph6q(rPofO{M;;d%Q?Uw;Y0sIgK3U}T3 z_x3*9Eco)BjROwv6x~7MQ~QA{wjGXaFsLY1yK?yzj-Ds3W9pZS5F`n^VB@+>Y~Yxv zXUL=NQ0bJ~-Mp}U=nnC#(=X}HzkYeS^Hbnvp121$!)iZFZhjI=R&id+`UvS+d0=U& z71}IK?@+1Me=#it1Usw=1+ZL8XD5<7*H1d#yuy$`o0##%Rpx0s{xX!*RSBz32ufvcd4QWhAB#I}$q~x}W z|K$~v`vDzrK|$om$ZzW{cI5kJ=h#jvSBpH-oRCP!Bz;T7&epngMIU zcN0T~hNw@j8(v3jI$(Tuhh7LbAAeDjTYVHlhS5<{g-lXH=Gz03-Q>?sJ~S`UEX>fw zxz3NMlkII~7yZ#1-Dg5H>LZzM|Js)9+t=Ayc8e<6?xP?yKQS@=nWXYDtVpiglgZ8O zap{qlr~1h<=bL@`D0Xdp(%RB$yZ?RSiNB2h<~(??Nyh;qn~;#{6lzm*tXQ6;QHB*M z*79$t#5cORsEem&*F`=fh8fE_V8#cI)GsWAfZ)Vxhn>`NNKF>XDniv|M9&eMH&LMS zDwD^Q3$FO=y!NLxCn zqm(zbu;93P#Q!8}DQD$A%@Zxh(TFoJrnaY`?4eSHn1*tJ< zA!tHwcQk5iN%F*E8@ZZ4^iCeSeoo^c7I+VokJBk}v|h{b*u{#hwo%xe3+sAm&0`Ie z95MRCN%o4F+%>=Y3W<_#UJiWc7A@iF&P;0rlb24#R?|YF8|u8EKk5uz(jWsB@*E7a zE564C{cVGy^Q!}cHSQR1ebOiy*2*ziPnMU+AGbh#^F_2iUW;mTWXY#3idM<(BUZ}L zk%zXC9`9E5z;4}WAS;Tl`w9jd+}tu+C> z(7I-iY?p>~)5St0B)>Zv?f&kaJmw2RXsobPaBFLpSSi0}NIb4o<{HRoAv@_2y<&-H^n;Lw18*x%%G5|ZCzy?jy}WK|rLT9c|oJqX*_ zo7PY-)oV2;e=>#BkLvT4g_0!VKGR-Ua>=7pIQc+P!w|`qczC8qeWjjAG zurm6agwE4iB|hx4JXC9~pDY^x+%$yyvh_cfDce~Um(yo=(ZhR(5IT@YMMkk&uWixl z2QNCX45rIq^lug67O}%{c)uA9*o&GD+{)5*;I?h)C8SdU-i=Ky(+HoE0 ztOC{g@(N2<{$P~q@0v4<$#B~q>sPo`h9C~!@r@VLbqqnRH^nUik(q)a2;A7G(%qvV zx0MB~&3@#jKRtVe(tK+Yn+yj$P4=z&O0V_&1gHEw?c5xRnUE2V#vT*ZzAs{zvx!V% z3Qp%y42~G!dP>_+9!PnGi7%b4LR%^ zIur4ZA3QZRgPR{U3=kW~G3Jg+2HChA`+k61#Dx(Ht{JTOt`49xo4@%6D065bWlPs? zw!w(U8Ut+@n9Z>@dHhNJu8jGbN~0p~i0x+m&H@PT`}6J!WWE~rnklKaEYnC+la$ZN zbt?!iz|7-K5zncCxk|1J9#$N_%|i2}@`kfpWrdC3b)=lSKwS5aALH(OV)u#`t-bC( zqg;}M-k=%zjm)?G2&?nJe;EG_t|FdVI}tabPstxPECbc)jPM!VC86bD2cjroWW5R4yzmc&+5LuG zni!l{34u?o345IMV&CrP*QqU9N@JZfMc3S~zt{d3NG(?FyX2ey#ajYrierktCdYq! zhQO2e`+tSV?iZw&SAR|whx}Iz^3(ZejlqN!w=YLcL1_oNe8VU3-_Yg1+MQhd-`~)f z34~*DH=tDp+0awgOGHD<$jE5*>l^tCY-eX@Yh{Hc+5K;`b$)Siv3LZ$uq`HxE+%QP z;|Rym(*uDU;sSdv$9fbzy1*4uyUe(*ym{jRnYo!D>fC9<75tRH7=2AEHjdQ@9vsJ~G&$SX#xv?zxl>|% zdhM#t7;d#}bi$3=VK5IP8xwQ&%X1-cigi?Z24|*1X<6B=>o;KA_A9m7v$M%{es0GH z50zT|i75z;`=Z%T-!Wed@U`_WJLw$Un0g2^I@+`_?y_A~g?aMiiC@?c&%>om$t3rl zrol2l;u2Qf_NcZPi|4kshrQ;7cYOa=lXx-pscU3rq}>k*SoVM{2cKg0!@`N_(v(fl z=TgXxOSM!~l*@G>VaP2OGWeJIf$RP6dSnid+&6%S;C+8T8JzT|=FJDG^Eg4xDinQ{RJPxLYhK8~^jn8(* zoWnBYo(Xyi^#*;9h{^6XgN@;672|lAIerXBCq!^FgTb6H>kN2+sSw^-Or;=fGApGT z!k~Zs{A0mUA(g%lJeNBbrLS=jUgmM$)=^2SaPJswurs%AxlbRw~dE+|VoL4{K!Oz)jrluR* zzkEiR<>Yvdl_~aj{UN!m1+i&7z zIjXJ=vnp2M0IvH>S}#%>9w{CdG2IYV-lJcLi~dg zggjgq{wfDkV_Vz%%(%cspXOJG4YxjkvhltU$% zsElu{5ATNr#yhTK+V}pRoP3ikU8tU0W-;`$->fN+dVOlC#h@qy8~=>zS&N*a z+29gladoLTn}I=he7xOxA0z0@vHjjb%Q8-j1>52uC&d4pKC8H@>NUiewzApY&Y&rz z#;ubAqg!KC_l;13gN}scao{svhyX3^46XvOhr^?zM#Y32^<3W5Eu=zbiKqw*H#ZX} zr^RAdOK(Qe`@970vRJu{?_FI}p`lPNCtUev7%iwfxFe30lq5LN{~0m4wvu|}FDpvU zzbyKvNAvUZcfx2NJRlNvIFJE;w_gtT^OHRJZK?xt#s*V5mX^9=Jja&%Wzy~3b#!JCAex4TxWW7td{pfRwmiL( zjO1i}19$i4$=a9&ET?pFMx`ruZ;iIZW$U+TwWsHjF*YM3jjiEf_s{R&mpF|dDaC1x z4Gg@6UM{K(zo&cOVmC-hDW8QUGnjgPx9}3xzb@QKugR(|2u8S{oCsL#Z*6AhXBS~8 z+3jY9x936KT~l>~X9uY#J?TZnw9O?Y6? z+GuH;D4R|94;tv>XOyRPgL(@K^NoR&=7Jnt%-St%k#tW!ckUYg<7&Jyv=jDNEPqwtULG*fdXMtZhqL2Z$&`@8#eV5%gq7s42E znit8*d;0~wOF4{8z|c7PzaJvDJhhdpb;e;OVVUy8{ta^HKWa@3BOwSXZpOI-+iX>{ z<4>f*CpOLBUs&)6((>#fLqr%^AXGwz2oE)5Z2acVmg}csj`@!hmHOf^OG}t#el^Ae z@P3C!hoI1s5_`ZU$D(+OO6(UD%b&9r!ZNkbnnXDoey@zM#*2#16`(s41sdQbQKI`4 zde5UDQhR;aw{nz4{%J9FuvqQ(xpmFQdv!hBG_wuK;g;DE-{QcCLZL{UWt=ZtgOxsJ3b29$1xr71aCTa^`NU{{m#nMF!4cW-U~w=c6DD z(?ytkGBjM!=`&J6`M(B?odQxOE-lQpLi*6=Y;|~6+|Nn^=O^fGK($uv&{&F_|wzbWl-gKgx ziCaSr6xwZ)m!A)8N&TD89(8-{Pk40@r2!Mi!sZfzxa#B0*w*G|b(up=y6!TNO248Y z%*?2)tlK*}ay?G(DHlpy<3=`c#L10uH#1)V<*2sO{L_wN@_b|R3SMRo<>mRv#8@pY zWo0d8yZPCcOg;Cak7#C+?HYJVjOj#VVV?TR&sv|g5c!dsb7go&eM7?_HiY$Ictp5E zL723R6&^3g;Seg*U{Hk2&22F(h9MDrV~Pz$?9YOr^(BHoI^dj+y22U9aE<);-6K8I zQ%eln8y^f57i1qd&$&6RKIG#+ymh_20?kVwK}q;QME{t+jm_B+_K{aqB(+-#iXw_^ zxZrqlfgawkdf5#2jY-7l7{-m&S10mZLNM3tkQGRIo8b)?7kS1A%bV_=R#vk1+s)BW zN7-p4B!EB+1+0gY>^{nqD7SwknOh_YOM1IiR<^0Bfn6KeIhZPp8~y9Ck>%xi9|`yhQwe6tAblw+h=X~SkLEJ7+UI&5IXjU%t3hQ~=IT&YFB%>AF)%WTn@K57jy%ANMRm-^)P(KvJsJ zL3$f75=JIQfYJ#wgrsF^=MS*YG&<7vR3|`KN3xV1_w_GPERNaZWN`nOlofyvE9!*` z^3vJNtcoJ;pU&}P;G%61@}3#~II=7xq`^R1UfR^sw8+{9 zunxfVHeX7%%E+KBaYF^Y4Lb*NaS7Te_x-~Ki5oY99y}=R?`I}K9*T@50Kp6Rh%SUu zMOB?jz-Dsc2~z+vV3p|MUEkf^U0?xk*d2bsxLJ;3qMKGJM0GW^SHKZ6Fc=XXt!`_3 z9y9C2FW24J2qpkz0+_L6cs0m;kYs)iCZ(vzZ=2Fawz>|Ro}LD_x%+|5fbTuu!^0Jg zLU_qA<-j1mKog#*Sgli#l_e!B-_g;DN&ttogzxTdty=i#vW7~v!?zm(0|SbSgUkmU zG?jta6)`s_NkqlW$}$%E{k!KLb5t9pfW=e4y5V1Nd41jS^!E0b($aFJFw`IBn$0$> zs2+r#z8$M~xK`G#^*FUDn49eWot1%zi12tB1(6@&^+KVM4F0?b!!VWdVs z`pc5M63dMhoo`+G!yR2}`_MS_v5#!z#-}QkmKNat3#{ESc1olu+)zS(kJoNz@uMHn z`bec(X7510ZFK#L=jhk(GQ(N2ls6{+P#Ed5n=sfYaR}E72$S*SqfAaE!2=Dv{0NC2E z3;^BR^2O759b5xFAiNhRVh@K|t_=i{0||lmEuut$kBt#vIyn=S+%mdXLu5szy@x4z zR-RYd;r3{S!5$oLPWNK1KCk>O*2-s8E0LQYDcgQ<)2Fz4d=QKEoR(~vYa1ngl<0cq z!t3lTuN_z4kiM-cL{->UST&aKHZayN|Mn%PcWzX4bu7NxvMjq_K}>(acsE*(mIP^p z)TIrRo){mmPyp_H_iEXNP|nYdH%1N~mc8KD=ro+yZ>Cm;avGL}1GKNZ$hKByFOaCz zo)3sFD#U56F^4(~Wm#J<*i;A$Rb(lUY%gWfgH38#mZ~Y3FbRbcqY6%#IYVlf} zuHk1$+?xL4&r_POVpH6*%K&exV2%+gZ<`*raB>dK*e8{szi=?0eAim1K%47Ge7ixA4CnxkMUfE6Gci_Jmu8qg%=&Hg1HGMZ!+Zx)Ox^)9^qj{MV| zfbQa88n^tJd(qHma^U?M&NosdDOl%vaHko~&f|;0;FbWQmOO?D`0(N~g8wDAz#EA? zI%J4uDocEiK9;M|O%W8e;IH|Xuy;ok!{{a|9v)8H8zcXe@vzP*p(j>5}Aiu(p)i;EFhI=Wu=3-T~+=@djI`9KTnb@^_1+<)<`bvesaQcELm><^7=wk)oGLH zIgnTE%@9qDueu(mH1vxK#-OCi5U6S0l%6?uKq6 zRd1%QJW0jYUzX8*`6RN1Ifj+>t4BYOa+;d+r^hjajZc`GJH|vv8$zfaiMrkfWpl3q z4}vj*U?GV;6`35ByB=>A067MbQTZuO>4;L|rwGr)5ll)z)WeS#)DWuft=y`StC_O_r2;|Fz- zGo*G*T76nzGIp+wn1;>TGb*U6=4d(hlDiq4-LHd+YWeu!lvw<#&>EH{*X+PsLg9pvrA>z>2fiDdz>ri`6g^xFH@*v!rb*%H=(mo)r2w~9Y<_U8-J%Pfsj$LE#`c0e z2(fzX8_oRq3CS>eIu$2^9PLil78lAC%1v)6_>+dSO~hJ;!*d4p6A-y-0otJBqFP_az1Wdo!QMn z8d|@B)Qs|!7f{vGnxB~w29`5yns#WSd0+ITd1iC`94jb96*A1>anz@w>+!Kar?e1r zw3WUZ|FuI~&*e~2S63JM+v>EjF=Jlzd;$sW8_3W+ZgX|)-Fsa< z@BaPUzqIm!fkL81*JraIYh>>nii*_zu5!ax2i}WWKiOWVAf(E3e1scebhqcwk$@?sOv7f1A6W>uEaa z&tXSZqCKPc)hYNw)!8_Np3`#tDn=C*qgu}D1=LnnsI8f@^Sl61diNrG36anXB3 zR#jC>igGQ*M8V+TzyLRQnF&{{b&Ym%w+WSwgV)ga7qJs(9hQ~=M#%a2HmKMa47Q7q zxkW@+p`#-QH7l(|p%ila+0l>H)Y8+_+gCzFPfrZg)p1`pi;6z>_H<@u8b4H$@HH63 zW6=9W0Se;((E_Y~EE-Z!xN2=(_D@mz($wjyg?{14bfb+f+SosZa)k7McH zG6~~D8K#9wJRxLMJ0Ya=jv~35`5wEe`8QLScIQf(oN6rUiVtm#A&(2k9FOWWs1J-Z z7(pxvf@h)=de7D~d82vo!fpB`UZ0#};*iY-Mb&4UDDUEt)xS9)@zZ@8w>+&2M<$#!s)B-=7h|iEZc0QFU}Z_oyq4^VWL!CGNr%Kt4+% z#d9fHzdpyOz%a*OCwcmZhM-V99wzsF6unLW@;KV`gFt>5g+N^PLRj&`XfI`4#1p~l z<9S*5uJ>wueAUTSf9TeZiXwbr_UPb1=(H~krn_=}wj(CjE(JDI%LOKWW%mf5lar?! z9uc7!%eA>Qr^ptuI)d3Z7)bACPpuTHPA~1ZK-DV-pxp-AJKaV{Mi9;Yr8A%SiDL57 z()vueoHX9LNEjKVPk-^fH{X#U4oy!tTIlJSnVCT}H%M&l*I;UQSSuI%?adN9rb08mEHlu0AX9NN~HVreUSY6d6E6zQJ-EtTo7|6V7+A+smge=_!3p) z#ftq{^j?l$nI}7l)*hP0N-QRXd*x2GZ=l=o&BJ)~cg-P57Vp#Ztxc!WxBE?!8S>9Y zRVHF;qE-%+eC$~@XwqkAbqiuetfKu^`dg;^cje(oqm!(Myrdvd(QsZxZ>m52zTFeh z6SY22H_r5Bj8B8u6+ipAuok9l+LW&6*dH=R(&;_&U~tOFx5$Ci7UqH$63&JTw$k z7gJW}NAxl!CubQSyuZC0(Sj?p7&|+R(&H3X-TNx`0`yE^jv9_9jv8I7NmkX+AXX|6 zvYu1SRX_Wklb? z_KxwIJ16nGYZVMEuJRVY-@%g3pRU9SYkSF09GM?YyEQ@*1QVs--Av6^=;wIV?A93$ z8nigsykWZliFB`Fh(S;#oX7bSJ2G;ETqr@ub}VP6=Ut#0g=Az(C1)+$ z$f!A%zI$cpSo7S!_QP{953=EY05ULeV{;F`)x6Z3v5G5|Ozn;rj1qzGm>gemyO@dl z>B)zH4Gj$1t_ zngm|$y!MaC1EB&{aFvcy+1iK3>EVyAR-%7KS$G)vgflIc%ae8SH7;a<$oEoEva$Zc zK(d5HL|Ug9*e)u-JiH_QuG;%w8h$)6#ME)3?4Ir43CS&^pFyds9{stWvhpyj7?~sa zbsr`Bz)F#sgo*FdJ0&GsNBN+n!opJsD^bW+fJ|6R{Z7{7C!~N}$4v@!A32OW&gFa| zo7w9))alUh`0?YnAqa5F-@k3p**O=Z+8>=woTnNgtZojQDZbQa`@N^P9yjAA41 zgzoXiygX9(^o$tlAc77Yrk~svIczfsefP@~8zXK!J6Kg8hwU8R*z9E$9k4z6np75! z;IM16)b6pD@uzQAY`h=#G6i|#2?~SCq&jp%vtL^~5rSEI3G9;&XFLhIy{#?4yJt3` zl$pLfNw~ZC!_R*)>HKIv5p&E5F{Gsyt?(50)-5#Vs4JT&Y;R+I55!1?TqF|RIP)2U z!L%|lme|{EZ=pS}+TBvlzUNmb5*4YdtmU-05ek6Rm^FQIF<H39=LArkwWfmawtx@ZN}s02EJ9zuB4)msLw0(tk1GyvpmS zeYm)I3usaFaL1m|PuRH=1FaXbSz0Wbp-DH=My=5^p||#pq!vHW(bX18-wF#!0yx;V z^6xHqoxyuS<&~9$cPQh-9i-?V5#Fnjz?uLWsn4U-CBo60U3Xga3(;2;qRvIL3D)}xl%xf`Pw%yv(KUPx@~1GIIJ;HI zEGH!=DLsGrtqa*i?adh5!KD1|y!GgzaZ>;2z zm+(Q-zR2w6C#6tO3~5O;zi46gNsq>ady~*Z|E8JKrG|wV<6oVL+}m4oZAtD&H$V+d zO%dVY9J!{}W2n@8`MNyBMtg6YpbkCXr>;0JkJIBPOkTRB--f5x*UL_ToqEdHW*6eIs!Vjbe zSCua`ZhnuRffC)P_n9a{BW#gPx4!e%M)aQZzU+C4s|UbhDc3Lk9Uy^>V6 z8J6jvm6dlEq*xZi5*ebWCuH#}_a-MQ5k4h@WZRxCTWd9nvOG|dLkUiZ~W;6gns1|3>)$kp0BI46MvjIpVCk(8F89U zqDmNlLCXHcdhg3;B}D-3VJ zNu)sF*^cm1tzB1-1+^NtpWP;XmX_nXx|EN6`^_xhWw+ColWv<~VA-E*c@zFl7^cM}xA}#KMA$OkP9; zrU)^J7jks%7;&Vo+Ak<9R3!2PsE*Gc4ZOdvUIqp7&t?vr}x{HvCEWscavXTaa zn(J4^t=ZHDa;|z9qKxzRZUrgm!3L-28H@GuJ2Mpem#3K@->r-$93M(i;z8Xwth|GE z{rm`5QLw)rGGk(9Hd1BeHs8RU+FcIsZzZ?LudK|-Ksoit>RmlK9e3Rhic@_F?14XO zyg!guyRHuH<>ipFdk44|Z-h@}x8+}u+!bIg_%Op_zho7KR>i^Q2x?@3(2hOde3sj9 zrtN(EHeMtw_F&}=D{Eor%s$W*!A%?iAo?ix`Sm{U&*wNc3WrS}BB5V4S4tvzFM3*= zk1UY9MG$;H`9fu2rTsr6y1t}-ERq_vqFTJHXik1J8SUWRa)-`>Z5(DKWr;Gm9ymO? z=*mW%Fq12Ynq_T!saaxjG4cKEaYt;cuq0WR`2}laL)U|f+ov!+fXmO#Al;8~%>+V& zPbQsI{x7Jn!WHN-#n=B3Pt78?^eHGWx+D1iM$Yp8Okjh5O-jJFv2*j|#}cjFej|&_JRRb&+UIwUFS;jleho3BtZaemp72;Jdmvw*FQpDS>KVGWzLvu_VnMf6HKCd z_ZKS3P?nsTnfFA`%C{lNhDw9B&6k;TaHKEdK*-AE`=FPecKs?#wkqm(Y14h8)lo;Z zAgn*dWy?AjEkyHY^c3v{@mLa#YbR-IR7?y-Bpf*{nYS`1TZ|+ns-!)?NMt}$XR`Bw zE1BlCpPMhdUtxwht6~U{uwB!-6fxnhd$dSIj%cZad>cpR3S=mpg z5{j6ieS(eW(|I*Z8ZkK7S2na)Fz#|>CviHDOn=H7>(B?xmfBHdE;<`vne~WM$nx-d;2DAo%$s1w#O6}Cwto9X}P$@ zIKi^ID`u90pbE6VphXP;Tz3Zp$&5;d4O|X=I-omS#m{sg3kz$RciWbK3kdslByu<{ z_9E#xF#^_JrGm^uOm>L#$ZMu>D~ZXE}uhobR<$7=;Pwd&Q;{bPx7A4tx7=ruwnb!AaHgrT7Z6%xAaDXHvv@jWMY_G}_*ZXE4DZU?21JWFg$^&3sggq+g0UN=2Q zPg_e}+tU0wVM*4r^116tZ4Wk_tj)TsHkVL}>NMG^O}g;AYBW4}c)`;LDtvvh~M#8>?TpPGp- zT?)VOd>&fPwPrM_p=g^IyaJV{bwv3BFuzSBqE4zfZB-TBv5m&e(W_Ns)Cr>c%5wCe zAaan96?CJnFwd|^lWE)~kpGj^_kH2b(DoIce9xs7Q7YLEw-509B@GruRn_i$Y2D&{ z7CgOTe!a(m*qO5pJO`16G1zru?g_wdl<-o)Z=Rjb%~;+rDm7AT{Z4>Y8&w2#4_dR{ z+1q}e0w~HO?9R5#728qPjG0ok?FLneI+l3Jny}z)0ytq7YEA+68M7!%=`SiWY&8!*6!qD!k6- zvnWuXwwkgGnxaJaO?FQA&$QmH*b)QWq_*zk%je?a^>WuTe$vkfwzCHfqlQAVnV555 zrf5(lJt2Q0dI>1Lse*f!cL04Qwm0H%X6412%~Rqp(WVjr?-C(9LcQCH=sDQ6>8$NR5~X2lZBy;VV1S4!f?UMnA)@Aw6I}$me|CmZbv?k?|SDV ziuT=OAJy0Sb{pwNjT;|O3pAtClr;;LYqsk12>mXq3}5Si122%iryM;HGT7R>rlurn zh(bYAK#2e<@pV-4r;dw0rdVHqO7{|O_^m|g%+iF#cb2=e7kaxeJ-Vyw;vQ+K&@O3HA2)(b+f**z`dFd~v!Vl7 z1fyftUU|b&ZfjQu@i5o*BBUT8oJ}RhN>%R6ciaUQcD%DcUfycD(X7G;n<*4=XRGyCT; zS%6;M23T(_!}1@ARm1aviIpR7O~9N<=Q@aTNPb&Op?f(B-B5YXn z{#NB>#jpGY??DhCD5gk|diBoS;lJTV>07$xT@^0@Kz%H^fM+y)SNc1vbdmd_{c>VW z<^hsY)SG^=z2lPo%hQ7s@Ml5q&)9n#+a?z3yjfZ|D@iVfw0JL6>fz)r)WE2B?^wl|S71CZ;qukEbQ^zghY4VnpRifMZo(<11ZQlpu`rnE1U& zK)qj_^UWvIZv0&TJPbKa+KE`oL^>JEK{w{FnUZcZE}b!HD;Sf&7_-`0a$JvUTL29Z z!Y&}k-(>a|0XSArctn%=HqmB9gX7*RP~!x3_f!-q>EDY942P*Ee2@NS!u7n^-cIy< zdL`;?=VUQj=^E_bPOG-{xoo~VF(|HMZ+DlHlGARW{aL%77cj)no-GoNIqI~JJ@y9u zZr*a`AkPdT-v6!#C-ByBkh`sR+9JB8B0jpTaZ29eBUJiq(r3>>bt4^qEqiCnOJnp!+>~4?wRXpNyu0 zbO~JZD=J*P40^g#Tdu)w>m+@<8BtQQ4b&3>xiaZv63a2v%Uz2R(X%t!xFFL=V4z*1 z6^qJWyboi zwnKj$&+lZrFm+F!g)H>l#-F_ChLVq(%rcnwRs8Iy5lzOliS3=O8bShIf0M&?@;f)W z%>mMs(0;lp_eai(HbDOQ2;n1Gm`TiMfBm_)we`2S67fziY*<+-^#{V&EC^Co{;fqq z)8#Ihj9Ul+oKF!-`eA$6VZ6S(`~9qVLGF$8*p`HCE-DGaSokspJ@Yb2>oHcp#9wOA z>cI54rT1CG%~aFbjo0ZimgoEwd@&ed2J!wpk~=qS*^{xtTxx$7tZ>deEa=tq$gwA6 zixN;lLOs41-GiZ%I{<8hI`HJantDAVzTc=2P$BS@^?zE(T@In9aX=ZbpXJH&V?|0% znv&Fs99V2T+^aD7MD8$`gfOP_)$PJPN+}&SYb$Y|N#k9K4%z0hPa3mFJ;qNLrdyM2Eq!80e#p!)*{?Ca+R@T5p22 zxZLi8=1A1oHvy`HqZ#Y7)SQ!L%B)7e>-rKD!AJ&BJcXXW)$&cLsg})ow1Ef<+-eYe z>abh;(s)ZJ-gidQ_pt^&z&l!K;5_L+&dtwgC3yaAepmF}Yc}v?jnx?x>W5BKO_syF z|4ZRSPgACvEaX!C-NkK3M>kvS+2op;p1aeVegvE7F^e3%fi7zTIoj0gDCo3)QUJ%h zFpd>Dv^m%at{Jy6_74c0v>9@7xdH9#88P4@qmvInTX$jv60F9Kf;gO=G2=EHU7-2N zBUdAZ0$fv*+t1u@x#2QuK%H=VPsb%$Ihza-0C>mF0pJXvgwZZ^b_tKu7c5E7DM(-F z9evOUxVf)a&l(kz07K20N6}4a+0XuVZ#-a{fcp6zVUA{*0T?~6)ndFIhMfmQ7h+Hb z(g4KbID-=92nG2QIjH7gfaH8&8$$s&g+27mEyW5B>A=JFgV3>pJDWg_k^Piknt^}9 zT1KIxl7ds{S5}^ga3=GsKif!NYIunz;GX->tyr@2=z#N&zirnw3FA)d&}}#!DDcg0 zNZFI{ejvG$r{F(82Q_srgp2Z6d!xqQrCQLYAYCHbeIauUX^*;}*G!zq8Y_f)$EehQ zs0^{Fpa+BGWcWeBwJdc7yU!*D@4u8;gNJzBk-jbZAIt zpS%r=K`3NAu^U=FVArP{*|Cd~qDeXVL6#d~clR*`k6^PT4;WXIEs@&2#5%7rLQCq% zFm&FkF_r976>~-duGG;~gzn2D;rQ?lcmQxy@1L=1B~yK;f%bPMck zNxohG6sbC}@*rdNFC)0pe0l>wG1+R`y7@gz55k(9n5hVkd~^$)?JBpNQR(TslgTf& zQC6%>taRYi7A}{qS6~4*ND!hkQI_b=9VdHxjCz=jEc;>8fce*V0GQ%U(X$JUk`sdh zyM}O-JQk>y_KNpxFYN}I(TbfM)^)T~=PR&2-ard_cJ|SiG}wt`%H^A~G8U4HGN!dT zQW{8Jk7J1}W;F6N9qW2XO@d7EyZKPbQ`%C!+Pe-;^kA=YKEH@xqfS>MC;)+j0p*zr zg>+i5Vp*>9@*G|aTAHH{Hu#~apri)Zt$6pR#;cJYt~_vv;{eC@Fpx_4-e5Dg=X|u6 zRFY)=wMBx!45fg?0KNwI6Nr3Ys`1e9MA(47Am=?3o6p9)3$Pa;L3Y{aCqS+_n&fWo8~^kTw5ewc3y*l%jR{Ld3t71Dd;kk1>Shfr0#!Ezy&ZxYWHhf9uE85fLGlU1 zv{zYy@XvyFcTJ{fNc~3(;1Y#=-`t*DY}viI1AXO4@~9g~ZxQt3x`_;h6zuJyLs%c| z418WA9t$D8doWd7O{rA^ByHcL2VT$`k*bB<-mfWWz4Cl>&O!2j$;1L;?9$f@p8KkPTg}0){Up6 zo}2Sb$3m3`9S(lSBj61Z4?!hdR{6!H+e_7n%3wzN?A`6v{;Vgwq!)^{Ls=sh7J<-r ze|D}qHX0_w{8%5tmKc6i2q3?DUu$9=CV`hjlD{NE!x;)cEhaMQMdztAZU4n;%Rrx1 z%%OaG|CPtyLaV8iV{&JqTFF|eXfODE745eQE^!$i%Lf~sOU#VSpXn1^RJ##uH9$6n zB24L&?Z5KcIaXV%xEPY%Z#m3gVY;+{sj8Z$Rd^2Ob>;=<E%A1F=hk*t)f@*<|njTU)COF8;3S? zNN3!iotUpTU4gV~^=d=s%NS*Uwk0U4*5uKK3v?Fp1Q1s^uoq6J?>~Yokl|@Tb5R4W zIt@s8&=NktJ|no9L3uW604K_sf!3u?{!IF4QZwh>BVhTNR%9f;9wlNKUV`D8zAKN| z>lGO z6KcS=Ij(i~3KAKyX#<&l@eN{2MW$(6{(JDoRiW@ACqR4F5OT*{edYI>#?3^`QGK4G zI%O*)Pp5S4u|57;i9s|S$kCHlT!PgzG7fu<5`N)~;nj%+SI;8ILkNk4 zl2m9TF3(=yFyPd4(PRc2IE$7m&`)0E)Lvd?HLA%crYm<8o&8U5mz`_#)P3NBHM7)w z*H(aXXtapxm19w^2jNBf=n%tzuUD;OkSvtI0xseu>sewrAurf1d(Rx;yA=R+n{NM+ zy~O0FR64|5Js(I*CIwCo>dMB}w)XdrmywDqD-n3Sl@8weOs^X_@WX!x{PNqx4>F+U z^5M^~JoQ|ee&(>^v_pyiLo+dONcP5LDt!QRsb-vY@&tJBPed&@hGIhBpCsbg5O zhI$uw`W;y~c#D8K$hO-3x7&4vCzC5nN2fJZYe~n8(j{7LJ0QpL2Ap?XZZqmL70xQ4 z%}h+NW64`k!dCMEXtzo6SK9Bqswx8j4-hc}kPIImH!gxB+!&-L_)|N)@bhe$wRqDm zN{GW4*JnGWS19NzlDX=xFud6OX1$6pX_)Ep#<%N^$63&#cMqNNxu=;)a)%8x(Z|05 z7IhNe&5J(KUE%<-yV~C)up!qfvl0h1Fo0U_cpk^uRSKZE*EK8qI`td7-#rhOujR+? z$+`H>c_E2$kMG>-v^?ZaK!{xxGFGU6PfAeEKYlnk3LJ!~o4S8lQLtgcrRdb#fCS}( zFfF+^kHwN4MiCj>8>Avb=hb9VD@E&fuKCY)1`n3=o|R6 z5ngWll!H47=T}bTX{BG^mW~D~1-7cHLa!vN=BH{oYp*#DtvG&K8yg-!bsZcxaies` z1I0UN<_{>3teoJF#e6mVX(8e z3m2=%JvW&%PVTZfC^1e2@(Iru#Mp8`+G ze@;*v|EFBi`JWTi@&A2-TJS$7sGa^(Df{2o(5GMs!JkbzxU5I&_y;zAAiG_pGbrk6 z>xI!z3SQ*8Pw6jaEvB8s(I`P@e(GhE9UmkZa?3Mux|k7smvGD8;e`#a{?oYX{;YyL zm7_M$1)1OrkO`~HvqP7eW~?u5B~RNAsSD3z#C%ra}7D4Rb9AFm2u44 z^{kKC9L?=|1>+{Tsnu`MKhct#vfJ2PW#>km_spd#$gFIOV&~GQf4M#_3IFNZRkhNv z`WY|0zO|DxCZCQrNVKn`!ZY<@gB(?CBRsn{^CuyKAm6-iAeJjJ-SM+4X`8|E@j9QB zXIJOuR-|T^jqdsx-DNDqR+J78jbvqJva=~2;@fFUfi84K#Ss4NEqqxF4Z5bZhpAAu>2;VdUZ8g@U|Vi`m`c!QdAteK1}x1yE+^>?cwlgRKwm% zYentFc`5&-Zo48TLAH46ssXSLaGgiG&EpK#nLi{;flE=givq z<}iu=Ra}6%`}PmX`hC(=<&~AR*(Hv=++oCtuMUP864%Ws0d<|8d`57^$H$MC67I3c zX8-N**S<@1$mroUHd4$+@>P2Vo|*Y5fws=jkJw5TaMT zA=RHPOsQfgr4p7kGu~K-9sJQ4nC0VX_BxrnUl8ZD&VnOc_34ceLai}*W=)6u8SL(@ zldh7%*+=u~Wh%Yy@&0fSTA|gwwIP1(ZdAwqbmtJ6?|dc=U{77(o#u0Xx_B}pfe%h! z`<%c-H*tO*Cj5`oT&;&wZN_h$B^P>TMqd^%HBb0KhwvAsn?o>xhe9okfyhS!qjvKv zvub0l_p+e9uY+q_st6@S1__7y(RTtJVpAyYI(88NVhF8^siy%mibH%xEJ&(v#Xs>-gU<6<|Ju zSy7E}x6$p7c8H&)eB~NGi0ztSVCwm2a3vmdYawgf+uFcdPyGj>RpQjXX;b={*M$cV z0;X<|!;+?%UZt+@m08?-Zf#_tF}6mAu^(jgk6258R^T#?f{PiJb**F0mJNGC?|%iT(+`ah3PI zpP*31`CimkS+(h*@7de8J57=mi5*;dR=*OwIMQDdkL*XL)2kq<@8(zDed#Z?o#^M1 zOx#4o7WJG>t{E=V=J=C(`u}rk2py?EIVblk0;#-^A96eG!|v=9G!pl$~p%S0@o79tkhv#^N`^d~qtx-mQ?iob~xFiVr0f?(aA7Ga06uLqeWjw=HdL zy0{Bi)9emSFcXNFeA;o85dek4l0`r3(gx=9~6ibnN@P8W;jq3l|p ztLbANLWHQte9VW}81%uDE#VD~1qDrTi`9e*>mkF_Q%`)I2DrH7J$oDMWmsRgSX8u2 z3=(PxHK@W}DU+q5rOUl_orf+&_WgvU!Ks+|RXR(Imv9Kl_zM z%~kiwK{oDY_rgYsSZCRFDK^C;6ZEr94aq@0@^pm3w12?h+*~Wqr7ik5$=n`}FT7Q> zd#Y+V$++>tM4p-Hfg#g!YXY+xE44LZOIQs0a%8l4J-YCB7%&W0(S30W8eC6=&`!Wj z`ef!fKG^n$8r0KY3F$C_Ku+`F!U12A`#qjd8hEzrPEe>B!#x$xw#NP7FAfe-jBt|x ztE=l}n9epQTl}v(9 zh^O?2S6`xyjN5KSlT()9n~A)a4Sd+zgfqxEej5jhVs6B({Av*TwSpW2w-1TE?f-|4T-c`r&q%o`Naxo0~1 zPR1j%AS10@-i|uxtDxl6KDcjasBBNVq*V%L95CuY^TO_N^d%x`;?y8e&AaAo6$V9RKVM(U2uOs{5ob-$LOVO8q3=t->+x;_|MaQ6JHG8?}gQk{8c{LzC`bXuaa^o43$;4#X$3{ zM+8gn^lviX+ zUOj6^C(q%iG|Yf8vNtuYM5v_IoR8F9(JMcMA@gvfzGP-o)XL78YUbqf2OWL23e?hT zn4kzDJ9Q-AL?hjbEp0?%e5^_Zf;%22<-duYax1UZt;B_PZ6H;LTtZ-fSm>R5UacKi zpPx00>TZN2&2*qWzZUd9P?&~$j<9o&qU*fa!Jr6roIDIjwXuF~*;sC*P#TmG@Rjq72UWm%iG5EZDs)wgT0*rI);-5;rBTGF0kb-tLOWD21S5cyn` zkU$SA%ED)t4Lye$^YS^(6yxc}m_(`}KuApYKpsj5`jdcwNOET7cj1q^6ICIqw|9=K zz=_YEi3uFxyrX~2omcy5x<*FUMI_PvnPbBtJYzeFtNxT56#kEC3N9m117nPlFCrOV zgLjYh$g`>oa@wOON7WDq4H-uc%{2nkbQA$U&mG_T3GstGDqRSl7oiSAxcGBIyD#IW z78>W!p5|$BQdQL8F8u3o&6fb$Hxa!?OqhlAQ0_S^qiH}sNc5+P-Wkv6JQlR zZ9nn5222rPb8|)|rmwfWgZ0?*vXv*U@PLZoFIyjGGN;Q@0_ld#pvTm^yPP!Q(+}-` zL?WTI)UvW)@m*bx2G#->i9#PI2HC3~8N*0G8{L&W;u47)YY!l0UE@jbmXI;soY0Wi%hAzSU|~PlT%&O1&qA)^%5O3 zXWS1OusV4?-JLo-KFR4ppA!aFoh36i8AJqr&de0%uXj$vEs~QNL32j5L9Ig?m1bKK z5pvXgmKooRi>H1wQc*E52|xB&E7#a6jN>IpK>b-9oPt7a>S`8##TxO!DckJ|e{ z#^W54jjY8Ov%GS5oWUh|2<+ibfklzgLmEMg_T3hUQPUgk`R|PJG=z?rD?ZwByFaf` zO(-o9ZABGeL1w{gJF}-z5XlM8l{Z_q=(xMgsA@MxJ}_ADY~YV{7WcQ>!~TMn8!WF( zyE2P$m5+uhe=t`ZZnlQra77`>&1gHtSXul}7=JziYW9WQrf*sjUVRXtIZ|pf6Bif7 zLi?KD>uJgMo*g+jMxz~e3zKUFeN^DNGzU9m*tG5j#A(j!>x!p`u~}A_)#e-DP0LNu5qz}G%lrupjlpi4?haPo$*HMKDb-neto?K&zG8EO zW)JWafzL+jqYAkmsI(j2)}Te_d~#q5<4s(|o<(;p!b0xxJGH?>3$ELS7L5Uk4!|6$ zNkTp6GngxJYknSb=Q;x4WG8v%z5(3Du@@O?o38=`0+Jo=B4yP){;cezrIqPH&H9_J z@_&EhbyoDUeme22F+OZ8$p~$D{sdIzoFLaRzvIqLT+NKmlN>D<_eG|)1s7y1itD}rA$fe8a5q~45fn}gZFG-*vO6r^(YR3m-* zC;45LH0JZ-qn+HSzuTgrPR|lO2GWo#t?b_kX8Jn4nSm}7p_HH+UlsfS zsyjYBF}~`98*R;rUZp~nv+MqpXvt68AF9WVI6Q8ResXH+=nP$ycI|1n6x0WAXb04? z%NwGTlr(hphiLxHj$kU();Bb?D=IxbaSh&Gbgb%1c3ai$TUkROpwd!V!Pq;2+dHTUdM}`?B93k!u=FcK3p^Elye{DnW6~Rw8IL&i z`5}xKZWB;V(cJ$t5_HAr0S7b>0y(=jH$1yQK{ESCWI08mPln{m{rbC8L*YTQuK#I% zke~in!ASDIV}UI^;!kYJNwC&OvsXx-n*s8i^%mpQ`k@s-o|A%I)eV`qa(e;T%FIvi zpWfcCfx6ctgBilJVeKTZKO0%U@{~?0kY9TCvmYSC4bMMujW&(};4%|iTd!i6W#tIy z2!clSgGoGrBrp!b;^*XYYJh?+e6fNOw$ zqUo2DYsIIV4~M7MsKeFPIu9)FW!=1B(7^U_57!LWcVn!ypH+X6Qyl|;bP)c;Fp`?; zS?SiM`<2J5%OhF$z2^EK53u=8@6YamImIUR{BLXSOB-=r8<^{s%8QPpIqG&&8WlM2Ku_)0;k$ryC#^uWzLx0<)z z33Zue1@#hKT;jY&#aPMm6yQSdB2RE#jn#Hxo86TSi}ssXcGcB2jqf=VZUT7B8#iv< zyOKT%>P%Dn*Q|y7kmD0^)A!HX+G_xJhOnnra#CNA;Qrx&9HJv4DxxQd?vZ;Y6Wx&$ zhm<8pMI}^N9>jx_eQd1<@0Kr)7EvWcRg{;-Ay?`x)MCWWQqrxyTB&PlUH5)HpVqCdi9yaRD`j$P=exCL1be5Sd|+vzM9~1b?M{A%Iss7%J-PqN(@KMGCe`KOJ$0Ft-prm@`lhcX{$7hN7b30!Dg-9p)5~1U89bN9(JvJCQ zd@jOErr`3S2t{x3FfN`VvG(pWg~tvwCQIMM@!R6*e#gc5@d$_WU#m?3C*`ExJ+C3G zWby%7|MQMdZ!EmL5Ng-79C&USIa;!TTsFbRCCb1+1oX_rCI)MzYAP)B$OF)XBoW?k z4q!cY_qgjzg&9S>zxFK?aS;!J3aV23M*#C#y+;}zbS*S~TqiGD9vPM(YUYZ{0(`|0 zyU}lk%J1IC{``q#N4p0zT#HLUVc}kZ<=qm*dL8U)Ov$Y!Ak1TYu|`0n%uW3IgqEfz6xBt`t#^k;FdiA7kRWV5nHZJ8 z9)bMgf7|JoBC$0$XUK!oL=yiPczD-Vqg=p&oR-Ly#Me2kssk&@L zcZ!^r_-1N&pg70S*s-WG+tYr{FOLz4oo%D_(=NE@rk6lNLZ#nwt+ZOne>b-tVw9&UB+p{1eGwa7=FwQz;z&g{(K;GdMssie}E zNo%Uf@R^x*)5RKvBW?)X6kb#RXK!fIT`C4~3I07L&0%dwwRe^KVlKrX-K)3e*?bQg z%mwH|Y>4g~=!Xw87urJ(_V>lySAP18VA#`!X{BAtTzg)k-(r-ErMzFg>RI}OS&x=H zGvBD%1FPrG?Kl)2Uwx~)NS=ooT3j^5O(&y#a>_NA|0=XLhuJR_T7s~QZO66Wz2)Ym z!pHTa|0@bsJzPeBZ#S}+(tRg;|#AQVJbXm*>u z+!sIly}YPVt(m?Gkhb~uoD09?2+4eSEVEY5^e|1(N1yUyM)}gvz-_&I5tSUg3!cn4G$W~XTF(;Kug*e^Ph3|!+lh1n7%`>U5*wmJ<-eskfx3aP#4qp}C z!5JDLe0p9257PiYd0Xo%&;5vpQmNYt9x^h%o{eW!PNsd3wBNsr2jaAMc8WyZHrUcC zX1tpxYSIV1w(14)qCE~*vy6??0#+~;M7Rk5TK`K_ao_po@gf5p<_R}lx);?kI5_BB zRmp1PI9bfj$ddLeTxF}iVm#HZf&10l6=dz1qQ^0+N$TY&{aD6e6)@7IpiVNdKTQC^ zJbBjI6FNqeBFwa8u`Nr>k{)x5-}*;dt*Vx)%0z~6piEQziRtMjd8(JiKqd!ZFTOW; zr{l#KS56Q^M{UcZJz#HJos2@`aCp4h_B%U>C4U9p-9%mn^Re%JetBfzIPgg!iHkPc z$JnfwfLJb%D#Ku6jKaL88T}^EC%}|}#S9AS@9qG>S{59UNF(dA1J3}t**U1KxzJ>( zT%|5jPk#cV1x~Mc`vem4GnM9rmcoYy?2N}=j-e!Tlm~+(Vs{8zCku;?j)r|h`RtT% z55o^zt7Bql%VectmLY9DuZ$^V)^`E1kmaDg6q<$R_$b89pi!t8Cuzb zFy}JEqC$2Bk%vOWQLm6Y7qUXveR-dVitf5vg)A#;6}c(ViVLI_A+?Dhs0Abur7z&2 zkGol3T|eX3>V)XK^%lz={8b<3azCbVj*k{K))|g`YF#wIa|ZRB6!8T|8;O9WVGyks zVU0`Y9TB9j4a6M3n-3~urQ>{!BY5;^8pyX#cPHLwl_++{gzhgwtNQUv_R+xdn13E2zlM28$8yF>QI6~RN51t3kwTFjNfdjSmk{}wj_CiQn`W4UZ-Ht zzfgo>PFTUW5BEf(bYr5`ge+GCIe!AN~O7@hi5t6lX_6lVpPHbAQNfk+vT z&688Jc?zNLhLvw6JkF3_Y{AyNu@ckXvu*efW_Rl9q&mpc)+nQZuqun}waG@*jf%$) z8i*|&YM5(RMB@umQtZFtmXcy-?*K!V`LFQxb*43XI%=}3AYXs~p7>{Vd%TWu`Ds!> zp{^y|IOywWefoUl?{F2CF+<+}322)1e#<>cE=0!+6jN)k!9@Y(aE$+i5|&*}^_F3rM#WJgTqdg*ZvY2KfAx(82lv9E{v*wzk|Ur02*x( zVBWegF#5a<(Y`}(_Zu{4Q00z)DOAgKn zt_@z^{vC&?$O>ECgY)=%16vD@Pbq~fMn?m3ybf(9OOI1Y!4?AXH^;^@{#c?oMB8-_aETwt@xnOf6!V4?4lVtAEOHFv)xGid{$e&NA4Zq(Wro%sq!0T@MY zs`YB-5Z{}QCX0mvw|4CS5D>5a{5#h}E#21XE*3p0-LU+@F#l*~n*UaFH(JDX4!%$i zFb5*R>~wH694L*Zz+q|Sd_wa^sb-qyd#j%nG2?{>iwg!sD9V3C<<Q8hXF%@tpBb0Mi-N0Tb3{0H@kAp*kniPnUZPL(uQru zJw794uN`yLPL4qzy9KQMi&+48JX)*q`aaL3*K)(OBg zl62YHl#p?E^s@#!J`@|+PTeHPGNZ7kg%#ry6GN6EXf$_?G>Fq=@MqXaK2RT^;_Wyb z4j+|;qH2Jc5u?w#*6rK3Rdc@Se=j#?i^_zF!yXV<_+_=F#!Tf*95=`J>LfeJ5B27id=76;toh(>rWP+3IK43>~?Sn zodh$)JY2Uu@``MfOge^Xos){p^XNCQ&H=zqOjH9<{(suscy;qBFh_%L=8iig8LL=6 zOjr*Zo3GVwt*&~`m#m_1w1PQCR>`I8*ENBAN!i!Ec_oq^8mrnTI(mC zJ2WT_5D4+b-fDY?l*HaK$w?VayfHA*MF6HeltA31gm*#7b}VkPxX4J_;B@24dI^Nt z$33O*pf?)%_3+`3LVqJ`O+Rholmln;lS;ewB#wzzUlD&u`4`Sd&k+fz+uNJZd=Bpd z{yngz`0NjiI7n8ti*iHFZEZx+hP|WKZrhz5l8NW0Z)iccH8{S%Cae0Q1%N_eWA87V zqW;2K5YX@DK9mB$SAG5CddI$%?G#b34}Xuar*tE1b7h99dk|c3e_KdwbC-MM|Na_D zA}O%+1#fp!;@&k9x2ykAG1`xse=3VmROu?7of@TZc!UFX69LBZAA zM+>|kqu$-sjha@@vWoN|2N(<>L{XkRSc8&GvZa13+((TF_Km{tP0t;9M`i!jv@QooI;H4+3=R=I}ewJUH;SnXfR7T{_gmA{$42I>g7)a zqxPpF5@L7 zuPR~zJ5=2l7Ish!x^#2kuk9PSX_|SsxUK<>%e`qGWth5r5V*@EUd`$|1>bRX6Ae?}Bx`D_1KQ;hx7CC7gc`R|l{cw$rq&-E|__g^)o Nyv%D@fz-Rt{{v)KIS>E< literal 0 HcmV?d00001 diff --git a/docs/zh/06-advanced/05-data-in/22-pspace.mdx b/docs/zh/06-advanced/05-data-in/22-pspace.mdx new file mode 100644 index 000000000000..20c7aa888e67 --- /dev/null +++ b/docs/zh/06-advanced/05-data-in/22-pspace.mdx @@ -0,0 +1,101 @@ +--- +title: "pSpace" +sidebar_label: "pSpace" +--- + +本节讲述如何通过 Explorer 界面创建数据迁移/数据同步任务,从 pSpace 迁移/同步数据到当前 TDengine TSDB 集群。 + +## 功能概述 + +TDengine TSDB 可以高效地从 pSpace 读取数据并将其写入 TDengine TSDB,以实现历史数据迁移或实时数据同步。 + +## 创建任务 + +### 1. 新增数据源 + +在数据写入页面中,点击 **+新增数据源** 按钮,进入新增数据源页面。 + +![pspace-01.png](pic/Common-zh00-EnterDataSourcePage.png) + +### 2. 配置基本信息 + +在 **名称** 中输入任务名称,如:“test_pspace”。 + +在 **类型** 下拉列表中选择 **pSpace**。 + +**代理** 是非必填项,如果需要,可以在下拉框中选择指定的代理,也可以先点击右侧的 **+创建新的代理** 按钮。 + +在 **目标数据库** 下拉列表中选择一个目标数据库,也可以先点击右侧的 **+创建数据库** 按钮。 + +![pspace-02.png](pic/pspace-02.png) + +### 3. 配置连接和认证信息 + +在 **连接配置** 区域填写 **Server 地址** 和 **Server 端口**。 + +在 **认证** 区域填写 **用户名** 和 **密码**。 + +点击 **连通性检查** 按钮,检查数据源是否可用。 + +![pspace-03.png](pic/pspace-03.png) + +### 4. 配置数据点 + +#### 4.1. 选择数据点位 + +在 **数据点位** 中,用户需要填写以下配置项: + +1. **根节点(root)**:开始遍历的根节点,填写根节点的 LongName。例如:`\北京\朝阳\望京`,表示从 `\北京\朝阳\望京` 节点开始,向下遍历。默认从根节点开始遍历。 +2. **数据点名称(point_name_pattern)**:支持根据数据点的 LongName 过滤。例如:`\北京\朝阳\望京\气温-*`,表示 `\北京\朝阳\望京` 下所有以“气温-”开头的数据点。 +3. **超级表名称(super_table_expression)**:指定点位写入的超级表名称,支持 `{type}` 占位符。例如:`pspace_{type}`。 +4. **表名称(child_table_expression)**:指定点位写入的子表名称,支持 `{point_id}` 占位符。例如:`t_{point_id}`。 +5. **时间戳列(table_primary_key)**:选择目标表主时间戳来源,可选 `original_ts`、`request_ts`、`received_ts`。 +6. **时间戳列名称(table_primary_key_alias)**:指定目标表时间戳列名称,默认 `ts`。 +7. **值列名称(value_col)**:指定目标表中采集值的列名,默认 `val`。 +8. **值变换(value_transform)**:对写入值执行表达式变换。例如:`(val-32)/1.8`。 +9. **数据质量列名称(quality_col)**:指定目标表中数据质量列名称,默认 `quality`。 +10. **自定义标签(custom_tags)**:配置写入子表的标签映射,支持静态值和点位属性动态提取(如 `{LongName}`)。 + +配置 **根节点** 和 **数据点名称** 后,可以点击 **查看数据点列表** 按钮,查看符合条件的点位,再继续配置其余映射规则。 + +![pspace-04.png](pic/pspace-04.png) + +#### 4.2. 上传 CSV 配置文件 + +在 **上传 CSV 配置文件**中,点击 **下载数据点位**,选择需要的 **根节点**、**数据点名称**,这会生成一个 CSV 配置文件并下载到本地。修改生成的 CSV 配置文件,并重新上传。 + +![pspace-05.png](pic/pspace-05.png) + +### 5. 配置采集 + +在 **采集配置** 区域填写采集任务相关的配置参数。 + +pSpace 支持三种采集模式:历史查询、实时订阅、查询同步。 + +- 历史查询:按时间范围批量查询历史数据,查询完成后任务结束。 +- 实时订阅:订阅数据点的实时变化,持续运行直到取消。 +- 查询同步:先完成历史数据的迁移,再以固定间隔轮询新数据,持续运行。 + +#### 5.1. 历史查询 + +选择 **历史查询** 模式,需要配置:开始时间、结束时间、查询窗口。 + +![pspace-06.png](pic/pspace-06.png) + +#### 5.2. 实时订阅 + +选择 **实时订阅** 模式,没有额外配置项。 + +#### 5.3. 查询同步 + +选择 **查询同步** 模式,需要配置:开始时间、查询窗口、乱序、查询间隔。 + +![pspace-07.png](pic/pspace-07.png) + +### 6. 配置高级选项 + +在 **高级选项** 区域根据需要配置其他相关参数。 + +### 7. 创建完成 + +点击 **提交** 按钮,完成创建任务。提交任务后,回到**数据写入**页面可以查看任务状态。 diff --git a/docs/zh/06-advanced/05-data-in/pic/pspace-02.png b/docs/zh/06-advanced/05-data-in/pic/pspace-02.png new file mode 100644 index 0000000000000000000000000000000000000000..2fb4bf4080f03506553a9866a6997119eb2eebc3 GIT binary patch literal 24256 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 XggN*0-eSk!gddo=tQbO6*Xw@(HB&lS literal 0 HcmV?d00001 diff --git a/docs/zh/06-advanced/05-data-in/pic/pspace-03.png b/docs/zh/06-advanced/05-data-in/pic/pspace-03.png new file mode 100644 index 0000000000000000000000000000000000000000..01e1f21854f9e2349b7063934c9ab52677f8da9f GIT binary patch literal 31821 zcmbTd2UJsAw>FH&V;3|kpdg?@L8*%LDiWGB=@1|&y>|#bDk4qbU;!xsr9*@u5PFD$ z^j;$+ARq(?AyPts5coIx-uvJ8es|pQjgJwMjO@MEUTv1=nRCWG(p6_Z&2gHEiHTWL z17g6$^f!!&>B!fUe*wQti!7!BAE&%D%zc@d&RjhFKf;ujahZwf8j~hO*(fk$g#ZsU zGTv`nqjcLjh}}!|`|Gy2X5lHU25atZ8)c!#ltt+0(tST+R83V&?3n=N^ZNQ}h1bA3 z7oZwWFLi_U_))tmerEDYxO@4mh$)p-9a=qMduMom_V?;Y z(=MM4_oyy_ejFtk`^lPIIef5_h@Y&L@Wtgzs!wcX4;%MHnV^i{atsu5Gs_6P6|1j? z&Mbd>ZI3#W2-o!ZNJrV%iqNb*4lE2hq?8s$a*iIh>91L?=yV#VM;X9VuvE)7$s{$* zH{u&9C0Y3oru{W%9=KwEda1Q^%Ut2@J?9K6?z!#7o>Hf3H?%dFC%7S3DVeGb1>M~t zjYBx9SIe-!w!WqbpXEHiKGB+8d{fGrHK=9Li@LoV6|lfMyuZL_>{Pbj1+N>KdvZ7f z@e|Y-wZzGRg(=6a$+hiL)67>4hoIG$IyYT*`f#j!dlt&}5)m+Zv!j9wY=8Mv^Mt{} zM9h{=TJU+UrGp(#tMS(N+_e=t;YoC)UV^-r1*uv|as8K-`}4o{npCLRx?@H#YUeAJ zy!ke@(pW78Lyzc8>8h5dto4QPtc{WSHLy=lSP?$KQ)VrjZ5rKv@EGQxka-Ch+5LMT zJNiUVpE*-XvY%(6MD!J4Jl*S7%af0_tUAJ`c`nW)Xw(5?()LoWddkzu2Q)`(M|<{~ z>b$ost309e@7V})7U59SN3!c~HJ%hX4q}TE2}1$hKhBq!y%ZqA6tGLOAT^?Ez9 zru#*)L>GCA%Xz*^3?029x7aS|yT{XAcnkemL4|(#K+l>~e!FGsTUW^Ro~fl-*>u#I zatNegs6mqSt860zXa3stE@?ru>ta$mf2Bb>b~Zbjl1!ZPwe427c7VxNwah}{uF`3_ zc6;s}m@Tj6GtMIqO?t`36yh=9@m?$_U-8b{Ue<6#aj^XS%f((|s+Gr0XV<0ooYg^C zMbH)BxvI{Ji)~ef0kvIo7Ik22h>!!aq`SgTwGoFifebfkra%@Me&E5IqYY*SOVhl+ zHashW{Z5tfzLhL>s%v!*c~;BfzL zwBAoH5#}RkCHkA~TYPO5&TFeZu+Ck%Eh<1Y64dVVk^J>rfoABsh#1WEzr77dX8H~H zJBfcnXy9vd(46C#YI$$1ju&yf0)0^J@iWI?__;Z*3# zj)KX~cs??Me&U4L-l&HFD9HrW3iU*$nM?_f8u%a4cPeXi ze^msPP>+0#)RH|k1-&fBzDdiQxj8S@a=h7Jm~e|)8`j9wR<2vA6f;$n8rOsy#+H=d zkekN%*@wq@H7^X8Z-g9g-0=>M^HLeHya6U%h{NAxGYuDC#H^db(3G!^2Z0M;x0+8} zop@!58hQU}#C4gv(s;Pu89FX%*Ce=*gXyF9I7+4spk_a(%JMclKMN0&tMp(fujWle zOW5aI#3lTexlrA@4<*NN+yu4pGmNapEL-Q`OjsCXpH_TS^5AoiAb4by%YMPgshFR) zqxVVsp}muKz3S<-sGaes+TU^P9-2bBk?AP|{2=p+BEOE5$CwBM;STlIj3G>NnJ`#Eq^Z6|W| zlN+)6-o;|DIxx{@i+wa39rBJ$v9Phu&AOBjMjUEdAsiS zwwyVAIukfAJbK&rt%y}U=AOd};ZGpBpNG<}7>adnWIG38P zA*b*CY8cIbE!OvH> zq-HLyz2O0^QH2H5?=~2)`dD%iGtc5_KQkTc>L@wVu6sC|wDi^(wZku7Ca5d%mmeHj z7^ZB{;rsdc!}q6uG};64-wxmPKaSm>OZTIHx4ibp=R5zW)yaXwv%&P@Pctw$T!(Pv zLyU~oYLiVmVbyIp0l4@6)<7L$jdM#TN$z)g>& zVrMJf$qnAyu+47be4p_CQItbT*>^T>wo7&rZ{mPEdexvMeC;kQ=gtTSRY_D9sV!gd zGAW-xn#2_qg#Z(Idi*m~o7tL2S^R--TOcr}FJq zIteZ5pEFi8ukmQE3X>ptK2+EqS-%lAWL2_Pt%K->RenX?Dk!f29?qnjbsWN*Mft|> zd-`FV`_^tX;3>xgY)8_BCKOfhR{9=5%aOvR|?SWB*ERxHwd)Tuop;X7fp z=kw{79u(Ž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 P=PvzL0aPsU;q(6ho}bMa literal 0 HcmV?d00001 diff --git a/docs/zh/06-advanced/05-data-in/pic/pspace-04.png b/docs/zh/06-advanced/05-data-in/pic/pspace-04.png new file mode 100644 index 0000000000000000000000000000000000000000..d40305676db2595657ee0e855a401a79ce2ee5b5 GIT binary patch literal 124149 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

ubeF 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%0AEkXUl^oOrmM(f3xzhWJ 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 VPATWXu<`Z%lJDeT#iAd-{vTMPY+V2V literal 0 HcmV?d00001 diff --git a/docs/zh/06-advanced/05-data-in/pic/pspace-05.png b/docs/zh/06-advanced/05-data-in/pic/pspace-05.png new file mode 100644 index 0000000000000000000000000000000000000000..f32ffd4ff9608d0d146b1dc138da474b3fdcfb99 GIT binary patch literal 143385 zcmc$`cQjn__b!|+A;Cm~s4)alqj!Q)qW8{3@4fdVfVriSXXNxA#6lgjL*iTH#>b7nI3q(Phi%iz1H3#sHpa&-$xSkl>TPg$|K9Cu66~&4VI_5STh{paOOF@h zw|6&M7E;7BIO6-BYh&NPyRc|0pI6v=#dY^fDZzuU_drkY&UgJkwzNUG|LeL5+xUaK zH+&I5dCGmS(8w*HmV~I=<`q+qy;L;MO7XTFJPJnpPn(=iyJt334j-ZgSp*fGQQ6x# zNvwAta>aa@asi5=%TO~#I^cci!xKW4>=M;_~*Xs*~syQN8gsiE2k(+&~(Eyx_>LZ7lJUE;&>r^lbo#2 zgT9ma4YB&{CuhS?x3;~Ow5qJ7yEw~n^so$Snr~QcSH(J3m>pMYhV*Rulb-*lSqU_6 zzJ{f!GeDugxqbz~5XKGs-$NF#&yFted@{~AH#b+_&HB_PdDl7Vw*K`grnp%?P4WP< z#xv|b0ioP5NwPw1ziAn+J8VHqFlIQ{<2GYUm_Nk(IL|MJQjLwUMOtf<7&mxZ8q|_# zT{zqWdEbcckNC}nCFK!~O3&97^~nw#{M9nqYuNj!=|0xRLK`zZT2^Frl$eHkSHFcd z;!+Z3AA1yA*i(|v;&rBGrWkLt{f)f>6+TCO*M9U#JNR$W=(O$l>a&ZaoG0~<(INY5 z7OW22X($)lVOjfS2ul>6OXhW7*frz$F76 z)uV@&hEtN02m`>PRO172c$QMVXVq|Ma~6>Ry_jt&?$D^exej(lF;~1yEK3D3(cL2Y zo#o^Es9dAlC4VMHy9&Z?|KmKu%3|Avs(E;^BwNI+|aR;BScP8c~;Z=Q1{WfXEN&o2})W!3a*fZV#x=hza^ zxO64(t^|jQ)hJo+aIF8L-6|yT^1Fs;HKGDv_!E?<7mQK6s<#T6Ubr4CPHy6vHZD4D ziTCeSY6+1m>V3`5g`knUE!CjmgNfIYR65LD!m3pfuym1kV2VIktS_M)+8ypSY5bg#pcd#|3Zz8O8V!KoAMWYA<+2c zIJcbfLG8`e7SEN6LUn5N)(aEw(7OC-jl5C3h(P-0Da7bzAA}0z2$Q5+$Bj_vE@cj- z#tNUYv$m+pGbJ!ZsnUDt7IKo~Pz35vi}5CLLthh*ls+;$`Rd?TrY|h-;nEmY zxU{2j?2_AK^}d8vrQnAZqTKoMOOPp&3c7Rup|_aGeM*qM_UVg%4(i@y9lrc`yh9%1 zSTWD~<9-uF%??(0Qr@g{rNR261ExKrhn_w1P$jQMI@|vB^bHC3FybYBJ~7K#$-#KM z1|E{^Tp6M3(8^ln*KDch_|JIw)GL=xh%UY1O&|7EI{HWJCkdzaGh*_!3=fJ2ux^)_ zJr&B{z7tK3)ttynUWu#`4ceR(>zF7wmV*{oCwl|S6G>j;=A3Z5NnvyDz+nK|NFBLK zA>O}PsWyPxMu=NVNvf3*fET%npZVM*u-=GQ^;jv65p@mtaCe^!hODaE`oJ7Uny6Lw{#-4%cPft} zXUtM2_4=nY#H2z@)l%nL%*gF$?K>#xzkzCjwk2=~%}dJs*c&w;FN~MJT4W6S2nKbH z#0(Z6ryf>zMX<%Z;W>k}Z?GKnKO>n`ZgSBcy7uZ1*AB)`&C@!z`8DAeZ+Kr2?6RI% zlJmAYd8I0m!{4~R^d3v1Z!}%Tm%+-QpPkA1xeA1^O*Jh>P(R@YWkuek3r#^7sb76u z4h6W5G8HD(OZJRdhp7TJV^#)pWUNE3`sWK+PQO(ASz;z>%M;jUv|+hCpi&1vZWARB zn+JZAgXU4EpQuO6<2WGbhaY3W7Ls0ng!pG&GW*ot4qf58U?$Dxp}uC^N-7#E(7w>y ze}M7+VD8=2IFid01ABk#*wWMg@h9r=Ba2ZDwJazKv9dmNXGX7_i!@ItK}Fa0{lL%^ zYo4s&$qW1Df|C-lQepY8a7?|Nt!Z|qnOFsKZdMNV31ZA#$(T${;T+3b)Nj+J{8<>j z$aT`!kTM|X|FUl@Yh_b{acU&M66SSZVJ;-JbM}i%j-Hv=p(V>PIINh#L=Hoa6-473 zh1Ybf?a)~|jRtr5PiojF)9gakjrr5uC&^AsaTMwP6%Qm%W90ShY7B|rz&k&+tl%nY z{H~qao=-fFNeQ-H-x6>g-kDtuKb4nJJKNl4z_%BSC--7X^EgR~gx2MS)8_pp1$vHCal7oG+uIK-YN{RyZANnu~w2V>@akkw(M&s40C<9<(lWr9pyxk4Mx2V;4% zkk#dO)lou%lI|F(x)YNN&w9)O9YrlfZ4ZfC)>?hNM}_2}U425v4++Q!%?0vc{i<{* z?Z~Uz|MsaQJmZbD>wgE1| z5ib%Wsa`tZkLtLO>%M$M>?MZEX2GN6e0yC z;+VXS7q)?@7zihb z-dx7ZhbHbHthN}cV~&j_!g9rp?P57bUv8QxD;L-5l#C^OyMkyX*Fjz5Qp#Rv?p$#g zYh_PQGjd4pt@nAZtbNg{%F7-n+@(><|3UCFKXv<{cZC%muBt)6T?Y6=O&$x6!V^(~P24#fcj>(@9 zGDxM3`X>hqUAIyyc7^D8W#8?{NSI0U#i3%_!mWyeLb_w@kqZf(a)B&hF|!Pqw2Akw z#y+l;70REonoKdensk$z&_SLkkFy!+a*VTR zOXqd?`KUL%-pQJ#Lf}(~|E%uCr?cz`HXFQ%k{Vd32ITZ)UdexWai313^7JO4gtBh7 z6K9OaM^P98qA&nkyk;m<@PVxJW*kB=ciKC(_sAjg+En#7XLKoM; zn^Qe3H6J}st&BIS!^XE9{m`{dYkyQp7F8C?4pG~aM4@^9 zP@;cB)dFoPd2x2tgSS+x(`l8xwu3d9Zb5#<_Nypt@%=`e+U79pPT^ekkF%g4w~OwC zL)@)-%C+5w@=0Wvl`e;`?NX^vao2!qi}=qzZ6AR`=;PXR7RZ?gyj^H?C%>KB@lhsu+X}iE(F^J#2Do z^q6THE?K}jKgN~O{)OD<;z?zGt{-TbZ%ORXapb6)%*S2ckzJCL>xT2hG4eq02iP-A zT}5U4_RReer~|@FBB-0EMC>i_c;DumAwj-}i$fCM)VavFI@-F1hv)dydXhhz-G*~JS9I4fS0X)c^*=uQH&pi$#+IK_#n`F) zj_0dc7Zz~M2!@)jeyoXjILEH#sAkis^5^XARWMm{>)GhN34QWFVDxlJ+zp1>YUY#P z9B#jA#`JF;)b7^bY~=YmUUTW>vOQ8)q-4xa$Vhe^uoMCN+=C?7QdcEL&^ZhHq-W!F z=BX0rG)Cy@8a{m%-N43`>&vx)7Z+_=gRiPe9Hp!pvi{iBYULv&mEo!T?auC?`noqi z^CmEY>b7IJ5nl#XRJJx`ZGQ#3(C8+sPb#RTRS!@_IZUx6RcVKyU0n5d-c^P;yiLz! zcTOFU6TPgp5mLzK`qcp*n5pm+)JY(9%??iPHvN!bIric`V)C$*9P^Z*WI?ae#}kBB zYT0ly-!b!Ur$g6{g*U+$HXq1RgVXECjbMXxAq|u_HRl;-j3L*Xww>e2-b*+X9f+MG?Cdhpd7vy~Im{yiU)y z$xGR|DC2LD-^#H(QGnT{v*Xb@NbHexePtBmuQz{-8h^k7PM!B&uKZ1NZhHkMeqY5k zvOO7yWJn;G%~owY^Xx_qK0o`MTF%>0GW+?1rIX41)RBs)6(POTt)ZSE7yu-zy}$kJ zG19Edn*7wMeN>`W!#0Xv;SY1;r{>q#U2S=nK8PQ1H9cq6-c^9={l^d7yZ4u&Q!8t+ zhER}0lWKWa8*e0iaMH2C0EjfL8n!5b-m>O`3ptN%;R+Q&I5M{^BRblh9E z;By)L%2iPP)!kEzL1vnd?jYQ~3+XmIlmEOm?CpPr$)v*nb(8Pg(>qgs&*jm7N7hfl zxOY!af*^12PD&|ZAMZ{+OW=OJJ8Aj<_CXQN@{fkMocvKJh|}kDn=BDUJvB9DU0FyV za-Wfz-g4S~A&gW!BLa5X&yv_LE0msDd!eB->&qW?TweYi5tlj}b3L);TrV(FZO)MZ z-T7&^CUxAOI3B0Yq$eXKa}|mqUJJ^?!QrI}?uNU`~!CgUwJ_c+SKQ9^T7BW{$J7sq_5~XzkkwsiM&2dMD7+N4vzUd@I2m*fjs+BM=`eRZzPeDoo6VPQc>XD5a=2eVC#uFhvC=QVp?s6YPc-~N1S z;OCU;sI)!UTy1Ys{gnzWQbF!7EKKw4xnP2-!h$H$jiEl~iPnSx?v6uXFkLrdrrJJZ zPomUz4$+M(P1SUBllT6;NZJQls#Tm>&VLKxg3rwWw7EQ0p}w**bsJ+!m~EOWC~$e| zu7q*R*wE1E_s#EQe}N`F{o8|h8T^?l%YjBuh!fxY_X3Qeu-VzUnVGBT8V~zvc6BbU z9Rx7FQ`pRttno7N8tV${H)pesMPSM|0l=DIa&R{m>zI9vm8oQ|@8k2y-ady(chaWD zW;Qp!urlH+9rFu z08&Ar&xzS#p}3**YsYRk_wNsek<#O0S__HfjAhR?S$mta$HO-DOsK;VRh-r4Giq;f zb9c7sdJ$Dbp-~~yiu!5rz`*qUUb7F}ynJ!52r2|flaqj!tk_d-$JeZP_k^zW01|}wh z=ICF@y&$v6?ub?j3W$o5iqq#ovY8v^!DQ_MC42XV{NCObdwYn}-mx)3-R$|$y??9s z9&)z_^1CuRnm&%nd2fia+EU%+@8U4(#6f+cd%P&M`^Y!M(BA&_>(_xeBp(v{)tRCA znEq&&UAvRRMXX08*fc_1>UkxlrvYFZa}&>!8ieRzEMn1&`eP{CpGN z2s{wh`h)9E%*DF<3%{OnTGZa;oGbVQ41iayPqMca^lU@Dn?(Qj%>Jox= zTXEXzH8)uYVq5V?NoDPRDxd0WYs;w2G`iiNOZ2^Q-@iibHtE*8hFi^PDMO(u3U-tf z6!dH-{_mB&yu7De`Pw_HcP58^Pb>@$GElqH64E2lR%J=cJbeOnRxJ`m6V~W zfKe#umfWFL0KUg(P=a)uJeuPlPN`A-rrm1PZRn`_b zW$mYDTc)AL3>Ea8=Z}|J-`dmF)3Yhl;BRc4QjV0QQfJZ~wqPeEZas*$``5t#ijPkk4h-YYk-`t#zq!nqE zr8;cQ)~#ySY>!z4sqmU@{)KItftA!$Nd@hGS7t)qz7nsp5pcUW6yM<7-O9l$)~R#Y ziqy+tdlQ;wJ$*{f?{>XC<|XJmIU-NaWA_EIR&L0Omm^!Cny2P{drg0`{_Oi7<*u+Z za()e_IABTyJ-0`HXjZ@^sUk`Pi}H%~Y8>9d`M*dsZS@1D=2Me1eZI4$D^7U(&cylt zEYEGSs~f-GpEX1rv)=RPn3$WhC}fc~268u^E)L$kmgsXcWyR@wFea_2>b%qWB28h^ zwB_E6BOlNK53T8wD4K)G26td;Q~A6T5Nr7s7O-5cJO;-1WjEP1s_NR(khQEVtx)ka z1r3JS<#aH3`2=Nk%9 zd2%vkbirrGO@a~6@b3L5aD)>qG=_(_cW!o-Q~At_r`rfHX}i%vu|uCf5QSE8aG1O9 zj~0x{PVD6Z4bk^Fwf>c-p{=Z}qJTS-6#^s_s^qJbwsx0?&AKf7!Bh+~CL{d@Wgnim z*{G|krSQ5GR#ziybXJOpx!m~4JOhI^f$cuT!V-zm6Xm>oxD*_W>C$b32zVjf+WLaP zjNQR%efK}igbQQJ(~Z?#e)G=f;NZP!XB5|hPDnTo=CdGJSQsONjEv-Dg&{`UhZH@% zM)Y}&ocOXG_lW6$5sjv`Uh|EbfdMc(qHS&7*H@EOEP8^1d^J|@nHZiw#jN*0mBRzO zzV}2;y+-kI*)q{H0sv>kf}PD|(8bY}23#cWdD0mw4uUb`$|MQuGT;M7?E1lj^@f|v zH7o+1Rfmv{$jE3FU0qTle3QLC?1rmagU2&&XUE1aEa4pnJnp-MprDTBr-|hlMTQ37 z!HOB$_Q#uwGjY^W@0WUCgQrVf_Jr2^%(p_VS3B~QYpf>iI0SDjyc#~zT8&g&r`~_~ zNY;Q5F*CtMPbsRaF7aFxk|UqQ?Y;a69b1s74G$wFJ`=(xn5g8}%5dhONJ}$>dPTr2 zEG#Ca9-36t>2`&^#0VTi#D%AFM=&yeW=Sjpb^o5&*jP^>XY4R(oC$sO=>*uO<%UXuirkj>+}iWK>FqP%4xjqc@)bV-c`pC&r61y25e7VV_NvrkGgYGtmw2I01&;{QY~h>t23A zkt*#gt9aIoq1-VuUg!Nj7yPG>tY&#V4&Q=E`J7qFLhemQL`Aj9ogZU8t#w2rzq!s+qS@hg4b}Eq`fgG3^X9mhJ&5T3cIZRybDFh}>>M?~L3>N`Ttb zNqi=$!!&_J@jUqY8vw(BlNwnfWiB1T#1qA3pl+9emvLQ&(m#`fLg3yzv3)~BGhGsI zUzPj4+#RZwUFR-4=}#iN+BW7U$y2d#KOGWyj6wlEcgMm~clEgM^fbR$Dx_l=uwAC6 z8(5};$B!TEND&vwP1MUK&V2erDIO{Xca)&Q&&kSMU0 zzX6a|BpzOr&HSnzca%xrXTku|4mvu9(_^HXimIZjs=MYJbXK4QguB})Cydn630Sg* z?1ZfQ^NmqSv)Q_Q%;e-`;pzoSuV26F*41tF_9F7G6wk1?vFW7z=ZWqWbbx4uxF+g# zwUm~(x1}I_oVJ{sXS=W$aE%3*wI51pfC=9H6W)M6uhS`pfa?+ywpVr#`;qSFOvGOw zJ@~3XRi7F)Ql!r8;5`Ck0L)UN)ei$pKJmdODcP)sr;z}*fmHzK0Zz=WbkXXTWx*LxO}>#Os~*lZHOiGSeeu zK9TbviZ~ zG*Kx$?!#hCzCOpR0Jf`OG^yYL(*-BD6QX`cKbF>o4$28tBwrBVzIuiGs@Pk&8K5hgqp_iJV<6SnZjdZO!)vMUjbG~r z`%5RV#Y9;~ZV$K^LBOQb^oC@Uf@H#-2L~yR3|5ZyKa{ zuGeUxnxEMYL7vmMeJIm~yTC$?U4bV2wW!*~69cyWq^2rh4yUWEXZH7IrgH4&>%0?5 zu?X3%G<2=^0BH0Q?rTtar z=}&St)%jnQ(*9bo58!+YO@#BISIIFj0vU-pU%h_C&*xI8K(#$vqzw>C|9mjJcRc{$ z>SO2&VgS}>lY&y*&b>i=skFFwpguVwR!v2tJD?9V$nSV^dG=yw{8Q$za9g0MiP5H0 zeQ$7Z(ymp2z6|xq)=JmN$nX>FH_Q85b%2T5OXL&~a(75{*@H>ujFc%q(tM^~A}C~x z3EG=#BE4hYTIPYwf;;-+2bqwbsxqacQ>CuHkWo7fuq|t3@%6?_iVGNr!zKZ27?Pirfma`Tke7|`s zsOV~+4~R8B+u4=)TvNU5>7kSuNaj`5Qew5}`}O7b?|bP)Sq=c>RnmNo3~CD;*`Hmq z<3^ny@O2yQey`cy-Ub-8(!lc07{?qru_~K>m&2noW7C}~^BLrysS5m%EC3yHl|Y3` zO$UL1ARz@O5V2;*U7_b0>Rsn^ww>JuVhGTmzg+Ya58Y2mDPhu3fI^|Fic9ND6!;-i zE_o``l@((v3*K%vB-rRmHNd4`Z>s_p1e75T*ha^?*`Se}Q~~#6fYzAO)C7Dc?$bwP zDJjZOpZKCLrn)AM0M7;RAMrBOK`KOmPbp3TNXOl81*D0bF|S?&AV92|?rmUOJc}nX zJJn|zz-3pi^X3a>hHgfgAv!m0!&x5514gW<3lwN5|Dd@>gTc9~YW$^37dAN(=edz# zUpyX-jb8J7o^;%O(SQ%nS2j1@E&$LG39ly#?Ie$7;z*S73&b(?JO6dGa=tqm;kKvs zQQ>cPsxN1v3}B5Gg=MYDp$hjJa%^nx*0mG2oO&tsi|ki`aVt2j~~U{-Brc>eLw%!0Kcbye}p{i z@9AAWcKeFs1E!&-sto=S&BLpvrqWG9I;CazuA^gndb$(_IP1iSl=*CHZR|j0W!<77 zvqFFTAL547$$Zu`HMh3VUA(l3tz$<=QSB-NGSV*w5<8t<-}T z1s^+n{kV8)HpE#mm6RBTXP}(W@RnIVXUxORorjmF%+Q86v{RVc^7ZSE*mi*X0&Kbo z&Gh?%d?$~_y&@($+C_&t08Kn^%goOF9^fBD_DIYnEg`O^X3AvX{Nc1O#NySqOZ7Z-doZcO{|FZB%-lRHV4nLT7`JlzxcG|vDrL;wYt z*F_P?qY>j#TrVW&zNqkb@~9XxD!VqNU`-@PN#HNr5rWG#a`h}(2^qstG>cp(*7MAx zHw^{t3lgiFfBT@{#sEQCw2U*X8FtNGF?D>B!kRq4yz%bJcK(hzy>R5;&(WtesX)c> zII89+j1{Oqe*8p>A+~1TBd4}@^Qx|5#&vghBb) z#X`X7aZtx%2-{o<7s@Nl_u3m%S1;BX%W~X!jJ4oq)3@0ZMdN+aUv93PQ)xL--4n6G zWj%d$_5JAmd)I8))S=yHP`HQYTU>UFAK~H9Di2v1nIDo@AJ||JF!NyGd&@cboxvoY znJj67>Z7<9#B8i=mjG^{PQO)`p+~M}0QOkw_=M@dyxJ3$muC(+UB(&|LhrK4xDjH(|!-sT6_g2CRWhqZk;29-MDuZT~`ND(NS_( zTokU>zV*2#Atg;D^V%MLzof4}9+xARD(Jd@WmvrCPe3!>v^!jPlE6_gxfdB3$!0o$ z+?*F+=3-{%3Wt6B=4UfsUuAoH-&aVeT0TdPG?CQc@;0xq_vf!dOl;g+PeXgLm=xG6 zsfTe089lqWy+zuUYc0v{-m#=+z2vAI7HtN7;Yc6dq_zhg5T{LVAO*+mLWq9i0A7%L$G~g;NU2Sbk0eQdH!wW3U zh6}7R4J+^Wt`XWbuKTlMkcUr@sn@+EGrEGeS6Dm9vJ44+f!idC=mmXr8Y?*AqHtnA zSDm^lH+h{mpl25(LEk;EW2J0MzdsHZf=0Mf>$R@2 zw%#n$b6Lvis(i-?nOpm2xRI~KI$90NtyF5ZhMGIkW6ZQYxeTU@={zNImLmgXQjW*8 z>-A#g|l8oS*{)u24sItfnORxR(+l&y%hvp`IQ!&`L00A_`V zK(w)=K|@%S0=8Lz1lcFTr6U^*mXa#azL5rjdPr(VQco_eUGD@FHxIPualP!316YjG+XSS3s9BAiz9#*pa3`)3bSTf+Me^^l~V-)uvja zST%7Ty-f!9MtN|68qdcXH&T#EC+YGPrb^0|Iv?0tE|2BvFWdd|m#*j1|GXRTq|0g* z9dLD7#o1bsg5<2crj7#gy}b5m!3g6g$Y{KX3P2iXlR2sf*IZenc#ieTc2Zdc0{rQN zwQ)Q}^SUru9WdxF?cK5vcTFr zJpfEhRtP~XlWw&;V*F%d;H9F&@!kmmQ*=yBh4*)np_Dn#X@LA|^7d3$M{z-!<2k(p z6lj%bUs*VNo0)B9eu~PLOB9DR2@3v8eDk_)^=+IO8W=F?Hk9tp9B^7sdu=WIuddF} zs~73j+6f0D_t@CjgixmykFnNWcmIBc6*`VJp?y%Mx15Z0a^aF55Lbf&xtMZ^4_MrfwAbbIyjV?fEXw>)~9)FztA z<9^n9V^HDmaJ=oiH>_f@l60Q7|@^K1#!+BEUClIFK1&tDM2%TYe=7;^8|2mXEs4=!Hj!N#myFhXkSP8y}fytJ$YG z;Fr%7IsR2OEZSy025lnuW=?KUyzoZH4dfjBe6}{i%=^4E6taUr91&RO#J>sc+~afc zI-hd@Z_mNiQw6VY{1Fw_Uy4`%xXCG~Z6ji}B7+XmG5PRXD)+=UcW zCMrO{^w0J|R=0-S_T#0p@(T;8(sy^Qu-jh6MdK>!>5;{?QGm-dUcG#2u-EXp)yw5? z&-i+OV*h%8`Dg7K>%pF$vL@AkL|)f`8j!>$yS8d`)@^dwo8}1W&$^U=81O^NJIz=%SDCzaN(m8W9;@#_uj4G{<{ph-8Lq8R*tz1($`$Bd z7$f^O8Y#b#V|P5?+%LDXz6rv@e{20UAvgEMM6U-JJjag*jB$4UE-0N zN6~b5Q^8om@n0E|am{+m z>r4gAy(7P^NDEs)impM}UB1Js2B%5iSva@lkO-8#P3O`>+7fSl{-6cxo>2a4rU+EL z0PsNofDg{QllmJ2dqF{5&6gI>wC6vTOxzwGyp{+j3*mFJ>m4hV-TodQG+Qn-CCgAJ@;cY|DI!lUQ!BNsU0meM%wTdk2U8Ur=z~VjLj@f- zw+m%T@gJmooJ>snr&}X}f=xN{so2<aoS5MEUd6j1*1J?)cL`FAiTDV^U*@K&ghM0Ss45zxfdbN)h8oB4??S0{u z0--xXB25+q09N;SO{jEa9lu7lqBk8xjft9vs?T!0fn|Sy?Xjcm)Et) z3sv4>pih`xTB=Y~Yzt72AqPjPrjpDkm`|~zV7C!8p+A<=G#|E^RkJ_sVhP};qXvnW z(U5iuuybSHR9ij#Fs_k2!9~6iZPtOJ@AXeLZbV!B{Y}OMVR!g4v$iwV#Y~qiwBdZ^ z6_fF!i#k3V(3k?6vCYZprNb>LOGBAxr=!HsR3>B99M0HSp<$&G^PA^EoBi?kqYkpY zYuVB8@IM6J$&`zZ^IklEtJ{EfWdzoSCpregj)N<=rnUhIs@6iITjQmVzNmejJthC7 zvC6;wbjWoWNXJL>?j3N*r||boD=8_JJ5AMK5%dvYeh1PXN_nDkas!bi_yDCc9}@$N zJEYPbp%w(;H#s$PA;pG2-9YX||LA)Tc8G!NHQQ5ia9CfSnxE)-a?r6V(Z%GBo%vzB zFcK1>i@8Lj5o^bA*AeLLMuRb;$(S53Iy$LPg)Yc!ZaNj4G&tl3>=&zXIlyvVPB)m8 zfa&NW=gjK=&~R2O10kcozdwLSg1Br!ihyamqmg=Q`AG-E%Z{w zg0$~mn+*8!G*m%-L*iySYdKKfot21@BR_!0jT+GIJ--ZOtcT|Px~p>Y6>AoHpj+#9 z)ObE0C-rWnE8I}K7twn#`$@q2vTv5BEjj-P35sQ{Qu2Xa&8t2?8km1TpW`sCuP>+9KS8)yMHYI!TGoXJTJ zMAP;D{+tt7N>Lav@~yB01iXpjlW>x zH@ytp$SKGHbKSY+0e-C6?UBo+XUUVZolComHM#owQVr9Y{(6^OO_BR6yX_^#EVvO$ zXSKXr)|8~xUIhI%#6M#7l_Q^=I=PQzKff!hxU#Nfc(8SLS=%N7+guF-EQK{5rWhjD zXJunY8ltGExG|6{1jy)A=*l`@7dUPVRM5i;3+3lf`!mMgXyhmP!Jks^JdwMN&h+nT zXf~?UH!d$Oe#vCx2wu@LGpE7?FBUUWeY9pazh-6`8*|yt5efMu>6PF-dxqMF8(X0f zY^IuMs(0^v>n;kmMzWFHbN?b-J@g6@vu%lH#YV&Bb`o&C@whkX(nA&?I1;>*}V^+?)JWlrlHXHGAUPWRc`=VIfN$m8FO7J`91=FASn1);@J)c~ohQoGyw-8IRns zB2oF281U4(LJg$hO_^ixIrK#({_Y(cf*vh@dWs@|k_mV)(9t>U)u%pq2zW)Z{v`)i zHnukb@u*`V14F*C2}>>iK=t>p_HAr{=w8o7bZsq1{Q1Fn5k35RT>C&WD>7X0@~8LK z{=OVUZ(eVuD-`YC#=M(56k9Ztl#~oa7jjA5JkHzEP2T9fUq|6w3m)i@K_NU$|Fg3* zlsh04T|a#TCgOGKP7}2^HqH{dsf`sd5f&C!QF(>_F)A;F)}f1$N#v~3%b-YaPYkLs z8F-F^BjiN8pY?_fzw!2FSAE^<`iv{p=Q3z7W?o7vIE1f{373wR*6rY04B`Y#74R8J zuuJ6LNRI0Pjs2}QLyaW-;G(UA&5Gh{rOX*n=|p_ybsKX4M@d#>_62RL(RQJ zI6%$^tE&tvN{%|o?upH|jc%$gz(*hoB- zTTrlc6(z>?HZCqGxiMW*uAr(B6WrT7l({jAHx$-pY&FL1qLegcM3MgYqdnRzeoy%2 z!RY#Hi$3a*DUsdGIw0x_lv7P^%KS^**EF9lkN*e*6>QSDc+x+81=Km>ZDhIZZL%Bx zAVBNfd4W<{4u33yBtggZjBvplB>W(857j>*4S@Jik~0SQZ~$Vh z*N8Q~aH*?6gDMjCPWUU%M0P5ltIy3hpb*aO@b^Y)>SxY)^+KKapLW+kNN?CBcs}S} z!t(s&+7)qwy8PxBi2Z_?w-S2$)hfmxpnc@!!;yQ_q`a?k)Fuul>p}#6i==&~{Ocb= z;OO8WsBzkqare?;Y9{eD9`B3y!@$w1b5J!gF##Y{iZ?R;8jbUVjIBPSpEq@Rc^NRS zGkVb~bUpq5UhmR>|9*Sv_!9SZ%=U_$D!WBtu0?j4cctja)Akis%FAA$z$aBcSF@h; zU@<5-LCdgWY;`io5iyTbrIB0M+p@x9gEKx{2z_bJseLT%#M?NvpiK+nz*bC*z24XY zjHo}OkoD_L=7Cbk5N(C1L-abv#mM4t+(rTPmZ{B8g%%W0 zAP8Aqc}H{`jaGg*JE=njR1LW?ZpOFT2puprx>T%B_a|^cpOK7f-;m3{{O6@_e13@! z2D&$_bjhFY&xJ6inXnT{OG#N+sCf9zTd^iGnt0gd0%4#eRb*{#o7eqj>5TyZD+Eg&r_v+#qpoypo z(O{61liMH8LTs^_zETYal4Ruq=j7b9_(1{Kq#_X0!IYhm94>9{{mHTwU?G?el8K3R z1aaYco^P)$FQ+TzG3hn18?@WG#Qz00?9S-63BB2^&=GMnizNz98i?50?q?1?u^1J$ z{a`DoAef$d<;%|{Q@~~`sKHs97{ZZe&7(m^N*DGtW>!kIV(jT7erh_IZK@SIiy!gl ziSgUxDiGLYM?{T1R5Ls*O#f^1HO zIzxmiR7&FCNVY79BK}LV-U6M5dfE&9yL#_q$p0O&`~NHce(4%nES42~yB^qT{xM~|5u=G>+3V%KWXv;w4?v|zW|6-Z|u8H-n*qFeEgp@ z$Nz|u|9^L`fySpDpy~V3(j{|B5oTgz@1#O4J}mf%C>gr* zWA+m7Up*_VI%Fr0aM0(US+#ypBXCkHMKJGLe^J4|6l9lp9tXa?B4P?(vXAGO3BKJ0 z{u=`DDuv2(KhT9|iQKq9X9}-#tl1wFypz%1L!V_LC_Z1~+>OPRP(ZNV-P!+Rox(Ak zEYzY5_hcj5duO~gFH{`31HoY7@C9;CC{f+o4z8FRp1 z3VL5P9)}-dJTkB3cN9V75~ieQ_S+38*ETdQNDv78`}UK}_jcU@W!kgB7mm03hW2nX z40-id-xZI$0b2~R6n?}S7fTcs_37=~h{<2ECV9o{=bJ}egNt)K!dpCN=&+dEt`uHB z_oM9wR}%~-501??+k1ST7~Wm5_v?)&%f$5lajL>(~-psPB{I60V3sB z<@gPsl^rN49KJo`yBni>w`_oe>RdHa)**pgYg7g6torglXyl`zrIV3?WCXfj#lDJ; z(7kOfN6Wvkv!0XMUT#M)4`*$Ry4uh?+Ak;9=2E54iZCV`IfPV}v0%$#>lB5_KOf5v zg%%CmF0C9YAN7)AAU5RAED6?rtGqEZG-~AIbL4)WDuIuc!S&180}FJvzss=bNZ4uc zA#%#C+s>hD93xbkztPpH#v@%@7ykpz?#qF5tgK*A+S?2YeX%3T*) zeC4sgKR+LSHdOezv~WuewrTdc%1OQPOYIN41^jvi^Q|G~F%nli;1g^UIai-qSwEkg zyl+y_Z(=|g5K0bNJz$K6)twRH!KD|9nIP>S@WJ_tZ(fLFo`QCsuiqn2(=r4c!Ly$H z??$gdMY<$;Lka8NN#@tJs;Lr(wS9<#%nIfX@cvcY1K6fdnoFM@j$ru9NXv?2c1n!e z-pq!^E<{lG@2(8}yH#-mwd~P)8^A)wC+;PP2htA?-#9;z7g;*E`Mh&gGt|ZpgUz{l zVQw$XxobdqK$;AF5)0Slp68?lV=?DAS2Ct1n~i=?l^$c!(HYnV5lN2{M*aF#ZZn-w z?VW1sD_@;i6g2g#)?#-~!$1^rzxCUfw~gnlqxu0`Y_97!H{7i8_lRVjDhAs&u8(6T z7)|#Z9VtpCuI&a;^BzLXX{i&ghLiXMwH01_vE_MZa*r+%u>sq>dlTeh!>azns|WNi z4|$m6zU6xq?X?0XXCPshpQ)3g86x&HDBL+ZxbDpqrllXW2nY9cp@>IW_qn(WVje&C z9UER!mVusB=U>ObyGdIV>h*ioVWMfkdKAZqCvf%(gsGXlpObX4+A(n7d;Ia5)H;3_Jsabzam-R+x)z`J$SjTau;8J;(F)a|Dx`z z!lG`wci-0lMCon`L6K6rl@0*~q(i#9hf)cpQ94Ju8-@mHknS9Mh#9(@{owci&i1uW z_Q~E}9B|3N{N{ct7Wpx9Y-7nA!bWrVSf6igs542v_f~nH>efBKS@eUtF9(xv zFNU2ezSR}(ET%SU<;(d;-_UTXoVkB1uh>6w%M0;!)0S9WSuKlf?}uhoO0(Nlh;BtT z-=K`WspbHJrFNUGXuylP%5z$%dZC$kY{tO3a$UEMQQeBv%1?a3_2eYM)tmAy#-pRM z5VB_}!W{v)%Uj*+``tOdm>K=WtIrj)oc|*Ua~5&bd^w&Q(Qp6EKU!@;Rz!$;eN;3c z4D*Ku#g^#!`DsaFykOh%_wtC%4IVr(OLFJ?e+)+dnHWl^A!ATX+{oPE+!da;t*@@1 zl*ysM6Vpk4pcw9T5z$5OkBiDrs`&hOV}ASQ(;QoleamlB9-zTQ!hIlWtR}_2rIaF3pu|W?Yi}wI@P!`ETjnKfjx&2Wh?pQsTMsVk`S-l*YFi z@HUZ>5;5lGkKVe-3)4zWm|$SRJa=RM5tH$#a`RIL45rblMcnIgd7Tli#(mar^R%8X)(JdHG=WGOpvdPVCY-e*LNjdV>-~qXfZiee0_nZLExqIH*e3Y>4 zx3@hfj70+tra_b7z)(zH_7e5&uND{TbVSDer}gi){z?dMW3_|E=P~kA(EflTc0(m9 zxXny}=WaEaeJp=;edaNs-_j5}@uC-m-Zfw>KQNwj>|ZSOUB z_b+J8nkEQlN~-hq(K^jouRRk#ncv4J`216cXF}M}t}>p2Tq^gy!%bmfOckqdY1MIQ z1m7@w$Dq5mjUVTvG0F%Wm5aMQ3A6u&T3Yd5UH76%qu(4nr2eMlHWW5#draizYd*I* zW@|S{bL+$K_rRUGEtldPZ}U8!BnpkwnX!L=Akq<=uPzZ1#N`O|LMzo^4|tX zj?n+Xl)pLt+c(+P-4^~P`O^IU-(T6|^ytPjAJLHJJmiq?yQVQRor;&agkCcL{b^vy zH_9)mn#lfm&CFl431mQWhP~wEyq5j%K72ZZbniZ-^B?0v-nirzW$Ikp<6Qc_d6#+3 zK5-U^7UaA0_^%x&ZKC%1Z);~n!2dv=|J{@Qw~_Pz`1t?dzNni%;!Sn$c*F%^+rPGd zOP+s=?|0L`H>foo3<{U_j=lUaS$KK4j>Q<*sO=X;QvVWF1S<-}Z-ggY{BH3P}* zhb0vD=8kYs31?SW2*YM$n4KK5)^s3Bu5TB_o6n@3DcBd@50%Jb&_vO+*K~*o|o}TZZKT2KbBmO49Q|+9&dPGJo5a_Mz%I8?6V ziKXf+(h}O=?#aS`^6!YGrrUheBI$P&bkAN93v6f{{lrt@kE>47ayA_P$cTz&UcH%J zpb@dDA9M4m0`XWFs*4@ynkEe7Z)hL*v1ufNz5$R*tz)G_BKt_F&0S~xw_!7ByTp|$l4XnU&XPLA7Wni znNAFUp`m6zUu^tgcU7xZ%&~pR72I2Us2Tfguu)}ahxzO%B5mS+teS=IsX z%YMedtllq8bWuN2MEkQEqz>bJd9F})Oa74^74X5FUQY;_Sa+BgBELhgDYZ44g+HQq z+7qc*GS;qvKHDxfJ-r|9g=bTLw`V_T>%U;UU{i0rZ0dCF-7GQMOxaT7P`5p5I*Znq zn@CBeqrn+IKcYt8OworAFDdIQExnii8<&x`(g)q$p4|rh>j=?+X_36qusED>sssAG zNr>pw2nXH!hEH|%6$B;fJ$y2?{*i9CYTB9^nsvW9t^I2%y2d7KpZd2;OwkC#ed<+( z+13X3Lzu^Gwl8XBi|=EA-NZC)!r5 zdt3+s6Svt;2`o9OZug%p(M852WLR5|_s6f!vGV3|_l3$15UfxZ!ryD9WGVFzg)@qE zpOJohIEt2fvEW7FA*5*75VZ|*G=hHD9rt;ZHEaJwzIjEP`O$O;+2_n(k~?T#z9l@q zwAvjJR?c29ED<2*d-x%x#r*tuA^#CAlSqD|#%o$=Ta*3^|1I@=m3yW{`0?7B6f`OfEE&bFCH+y779}JTg;ofSFDX zeFE>Dt0Sp??d|`cc6s|-YS{N+mCM2#=!Mb=h|!iMoqpdgYYFJ;Ng zn?!r~eZhTT(Diaz(^gukTEBa%OzIcdcv|D7qg_N~Dc-Uh?}N>w*v1?I#b<7|?h|(J zq8sNwO6Rp${h=+8wgnWmPSa)q`suh3m zs|>0}ctG!(r%qGaS%-?qgsI(img%(|bmRStzkagDF2eF@^6|bf&rB+A`DqgD-$pW+ zC54MAr{JeJ(3*tcMpo-nsdSN7t4Z?9~Meth5gIb1wb{SQSqXQu{2)aM)e3d%2bZE3vT z<2X~GhlDxSL=JnOC{GHqqtCdaE0C>^v2YT`7I?09zM**qCl!{1tj?Z*0Ox1PQ9LOR zvuggR_WZeaSi|Jew@JT+bNOQ$eVm)o?79o$#_2x2o*nqvS6`!$fnK=hZ&@g1IATF>T%!2NN9{7)xY!~7$^{}|cNXilnu8mX)*6mSd5oGYFz!0Yn%!->W% zJNp8|ajV_PmyOT{&Te1q-11-(Q&`;Y?@I0P5AQD|A=Bx%e6QtxHCKPfbv&2a?RlI+ z9yUEKyEh2$uiV#Pc>F`oBLyBPuX)gAR!<-%A*T4N1TNi7rKy@06lDKBq*Aoj<%ou7 zyhv*cBy`PO-$JMREKl?Tp_hKo)w!TSuB)?BcdBS!Q|_ICzHI?Dch~m(vfiz(wP8+j^6^C-By^NXfIzH9 zN3rj@glhNv#%6SRCRF?GqSB7CF$3Isav$;#+o_JKv-59s6c(X6J zOUd-+?=;lBXqMn+ykLU=tIDj9d1|=8;ihg=qaR?YQYoRde(r&69LalICwa!yZ+9BY{(kKryfDY zOzh5hVlW!Z-j{WpTm9Ci%`*$FC||nUi@VP>Xl=?A;Z!b?QZN=;U%>JD-QCgwQJ3oG z(3Y=(ztm?0^l~X?t zp3m0P4mPVdnZvs35PG}5!%t%lq|RpX#H7M-wL>a~2kLyUY>kms^TArIw3)@Syu3Zf z-3i!0V-#8)iEE%+!M5uP<-T_g35NNSE+N>AHCvZ(LjtxxCIUu+F>samcvuU=uR}_} z*qC>eI&;}^{IL>ta^T;vZqE-apH}tUx`>vyv|*R0X~1A=hRtBpM;N3mCnqVlO1xxP zQ%_^*dUGK5jpzrB$QtREEq*q7|H2JlCev0@^t8{OB1PKFh_Gu5s(XX1mu!kGNxLHS zEgjYdqSF)4V-C2;4||m^AD&I&i6w7&1R%&~yvH&)hP7r*IZ;cDkuGy&EzcmoPpjwK z{N_6^yW*#-|$VkhBWfaXkH+u#=ot7tST%q}_FzUzb2CU(xp-{;R?kZ`PrRel9on zy@g8B(zP!S#@XC9jRfTx%xLh{bcr5jJnwiwFG8nRJsji87V}R>-~0x~rFIAM_Eb~% zOeQaies^5-qwR%}hWU_qeD*B?dNaJOWi-XJ*m*K7@K~ae3p<_fxxA!z8#G?#s@1h)by=OY5#m`wO4BWa67p|EE0`1W!`C9ZK3bM zdH^SU;nwUr%~xu6+P|mHRM#gc5%;xA`e8?5YN&O9pYW}O94~GAsBS!$!FM;Bzv$>m zP+Pg1r#@m(JcF}iN9b=(2yCSWNA*z9hz8fPC|OmCkp4h&Vr`Dm9J zrmctFLsU_A0C(2x^K3{DuxdSbLt48>ax(@6&CHqGOs3S&$y+6Ya7E? z)#*|dD{V4L>i_osT<})5;wXjQygKT?%`48G2n})hM2b(&GGE&1hOm0(N|y?1f^iMG zv@FRhLFBW&ZIn9q{%TVH8)K-$Q~yG^#>pAWX-=H`&7dd+m%!n-X6n3AZMEhP<>ujC zFAKcQxdZ+PY^NvK0)pwuIk$9x4D}!F_&W#wDgG=Xuu}#R>@S#^I6CUJWaQBvM#a8}62w z`iGqH&AwMlCzeIi*0ehVSMrmdD|B0%4o7J6$dBjC(>wl=iHy4Diz#~L+RrR;)ZhLp z$(1#IfAY%NTHB;?Vp2uMGgi)u3p2|D>E0#nRsHu<)x7x+=k(cNbt%s7Z>`8bXAuGa z(^=K_|1FL5|ImXU~ z9Hr`ByOGB@lMwlk@ak;f|FxI_SHB%W8=DY_APZ<+8tMy1w#4#ARWB{99`rW$@=bS314*IPZ>>(DR!NzFftedXMXi zvmkQ-s6Y`>l! z4-Mr=;t3BAKf%VnKcMGz2~#ZaUhZMqj1``(2EU=0#6LR2$Szn9%MR>XcXM%m(!_(K zH2C4i514i+TH8R8HWr$=i^;RNt`I8DPS=uYYY~sFsdT2)+~Ptm(kB7u4~ZwrFA~fS z4iD0$Bf`mrA;0%~<>bHz^1ix)dG7~kWs#SvTiV^uXxm{;nZHi3w6e@+en~||RYaky zqnnbPQliu3<@COF|L6eX*q?X;gAMKN)g_Wk+U>T#P{E)*udPM%YnjOj;`RA&EkGeC zY)?&1orony#g^{byW!x}=|mfN00gbB_a5i;y)l&b^ zu!w3K9c9(A@!=02)H)H4vszkTr9$^`o@CZXV@kqLojz#G_ZH3RT&M_^TB&PW6>QJv zOcrH8uaEq2G-9jZRVM)?5AMBHQdc*A_fA(q0jkVzaA5qG(vSEJ$farZ5_~Zo_}t0v zoJBpnE|JgsB07_y?rKh+J*dM_tUI8>jN9@!I43oIHezex_IYu?8dTYWg2~X(hyscH zsRRxG9$ap_df-kk6`t9v&ZbW+&j7xitMIN*Nr6Xpacvx5y6seAeb8a!KGM0idKtNI+4bmM1VXYjYSORn+t|ma)77 zWp1}?Zb#!ak4G;(15_w_Dy?RDLORNq`g!fv5kTLl69`E0H@100Nvot+(PyHlJe z4UXrpX)}w8!c3;^n$H7qUwhtok*k#G)*6;+-1GArw{%f(sY!Sv1*F?{|H{Z zzE64K`2;jqh&RLjO(Z7=8V<*h#{7~&c$;6_lDj*^)z#VA)wvttIAQ4EmTe#?4JW=qsos^{T}H+_yA}f>=B9bURfAB9qM2!Y@ql8GYTYTS zB(6wH62swe@BQ)dM|HK4o5;S(O0ZC&XyTTRj^Z{Ts=H@404WifBrH1{9+WhcGi~NLG1y zgV#)7!uIQg4#WMU6VPKFp(Im!^B_PhO_ez-AriM7F{-pV#2pCgjC$81M18>JmZ19) z7lG5pff>-++tt+%Z)}38JtuU9Rp%s&-Xc50?l(n8MX6{yI2d_fUtm$}IGke8@|KtX zk&{dHSb8|DtIYe?$VYyo`4UdW_lYM7=&E4QemmVZA`Ki|r@%tP{&v{E)E3&)zH-QW zb1^w_qAhYgcCrG!Ixd+ox&8I4rE52)cQ8d@oGr?sX72az-&qA}j~?8MH39zzR0l0g zNu`-`vR1G2I2!d3yH7*UFK(5QgzhTfe{rj)x=BC$|#SSbA3|e&8UF;{A>HQLPc;2v+ql3Db zs3_5~LVW57UhWq`qtKnqlam$3cir_KP9xDT@bjF(${xLcCMijOd5A;1s-}n?(IuZO zBFxS20fc32SXm9rraJn=c8cI}9!IZ*327dduYkTI(dA z6OLd=H137ygzrK z95J9`vpWMLhu+WrYXp`}Z+`y1Nbb1hGv&PPJH_3JaLJHqug%tgz&e48dN(_) zBmr-TgMq<77zKC$@HsZ~^616IElRLWI7n074|<}cBOGhy9zA*lJ2#dAP6lAmu2gri z=Y;bOKEluW?v!@KVXKGd5v+P%7wth?1?mL&1OV^=*ds0#euRTj3d<|W8#b@Ps;UCI zdNrj(>`&h?;3MD-9y?=s4g^ep5RPnd+CUtOkg~z}-0??B%GkV5x05WxPj1lB`Fm)5 z_?6Yp+?2zLWq$rWzpra-I?t_a?sVLYot-Tl%HA`S(>OQPN)3?1gJgS0=A1s5<3?_ z>&g%kbnCvs{wh|E=j9a@t{s#!^>Mf(a5xnaK?Sg2yuMfaQ~N8M81G_DimpGf^zv|X znR6xni}$^%)EE~ieF^L+CP4w$&GNFKq<}&QrtlOOs5ma!1DP?G21BSA?M{UF-45?T z7ipz`)jlQ(2Az}iLx||;-WM;N&!JE+vGp%QAGPia&~tx$N{BBuqoobx&@6pvKIrR1 z7k;f&bMYLw3pL-kbNGy8?nf~W%bsAlxFm^QJm+}+T!1Im6%SOCGj1<;{A_KNRmoP3 zjf=o|R6Dz{0)%_aoO?t$O3zM!vTO4%Up1WLtq^uCbT=Ss0L14;Ok(6dY6FoS zbsp~t7IIO!kYKRr8-)~N-y3pr(u#KmYALC7;cy!qYCJ0V$Xs$l>drPQDIvBK0VX49 z7|brpX(cw~bQzYFvRDPRy=vtG%~qYyK_hTb#Ph$MH?O zCX2Y9jUy&?w^QyxVKXM;-HXX)f4bqCn^tq+WF771xyYXs7Z-!8Fn4-9SujzY^>_WdBW^`U9TZPlr5v>y~;-u?dEVsUUHW+ubaYJCl#QGNKX%hD*H?;T=>W$ z2KAc_?x#F4qP9c}n6_pVkCFZUJ>1pNp{LOyqp7&K zsdxusx+Y)J$ViCkeSIw-65L8pUqz0ECGW=h>_uL2_8R!;Ky_@t+~mFhIyi}-6o~4z zroKLnE-0)g50jb@Wqy}4I*g&Jr@XwhX>si?si`TcNv4ZU#cg?x9KSyxV%G8%78{#^ zj*Tl8Tdeb zD=idbyFEE`5bI9Ql80Z&Tf4crLfqYP#k7)=5RUv*2Ta5v8PXAVdd$h^hv<~~1r;he zfO2Og{G?+tKj+h zMnTu1VZ$RLae<-HpM7)ia; zp^R%Yc(jC@KDt?>Q!K+^X=_<7vM--C64rcDAePQLCb+piwHZyfKQ{K0_Ah-d?B!;VBSY<4+M9ky>{k#}}wYZB0qF5{&HcYe6}- zmnHKW8*_5ZT8gx-puVX)i9igs06e?POK$#Ytz!dlX~Pv2@6T_yafB)sq`WdyG}Y2F z)tV{vIE=>ZKtvO!y?L*tV}0F`O{?;h5Y}r9r0PL4dUZs^>g8s)+VJ*le^?lRj2+|0 zsiI)$;XnV>ut%Ki{uyjKORuOnY$|Ea-YualtuAYtzrGZ2^%=_TmZ6St`!txEe{hgK zTO9#HAq{;c41R~z?pTGS{Fg5gaQL>34Jf6JeU1?kyzE#DRI!#$DQP=7`g$^?0gXk2 zPmbI~xB$hvmP4hT1z=Xe8tRpZIxV+<&RL~BJ~^_!zB>GKaNwV(A}%Jb0>oJx?4aAd zZ(bBhsc5|41MwsXPE?Lg4%{11nwt7H^K-MaNzk}zC)5Ob<3ML18ej!{*9ZJOPePwy zVPRmVSLBl;k=E#!({gB64*W*9QAGTSqRhUt8sn-6n38zQcpMEN~y)BXn27q z+p?P6YF`GJm?@mH3`U3<;Cw>ztqm_&LhJ{SN%y?G==Aj+84D{=|HwQZJYG=5E}E4R z##JgAK`s3BMt88UAvM8bJDc8rDyX9X>d~pl!b2AJ^`_G_@O9)`IN+D03!~5-{1$}2QdJwJ#Z?>;AA%kgt&ma6uxOE005g5 zD-e7-K0X00Km9+oP6s=-S}Kb3aGTfUWKo+TK$W{tb7dJx4kQdj$Nb9x&n8^qBYbez zeet{Pz})i-(0p#&{Qo_=S{;HN`PJyf#OGIZYOVL@OR@G+2{SDR&?orTzWKCdTH9K7YwC zVPEeI1LuR4xc4Wb*P_uM0IQ1EujPV+vl$q}llb<(pgpasg2fUN3B!zo>T}k=!0W5M zF7n=%?4nRA%!GzP#=j3C+E!NJIID>Jbr0--u;FO`IE!eBEm`>Tyo*Mm0S^=uWdDXzl$q8upmo(r0xW3GJmqd(5)o6CIGN zfCKz|JXv6s200RC;TEe`((H1`C>##hmX?+;xaq3TF%J$*`%`+?4|U;l8=mSwj5GN0 z<8`3WH4^jE&FdUd^-?`s5vr*Fcy@Grd=9XL9%!>_=`nR6$aO_U5acqN4YdijDSlv;QuCh})``s!$opSajE z0lqB>;nrN;afklR$mC!|V2@tyoa>ukG7RNd33p~;k3hH;qY?;+YHCwN3_^u{fwJB2 zs?gBr3N!X({x%Yf&W?{EG^Xi;myk-s#OpZ|!^#)*y-OesR>_=ja@cQQ90S&*zm0x(O+n!2P;b}z z(0n6sDP=}Lg02Q=&o%D-d8uy)hn%eTfKb|}%!1&WD%GEP>h4TMJX!aVvJ}ouMoo&h zwhGM7va(PBy7W2<)?v7b+yXwc&eQ!29gP{{S)>#RGsm+DQvE}gf6yX61|QFg>=j23 z8>)Cs`h+Me>j?h(N!wiapLCb%A}rvAQc_Yjjq&r9@<3?km*X1$jgu|vfVICLkXBk@*}x;h+uGWCLu@y9kd{_9VN{%fJOz3A$!&CDU#H5r$pFBb2(S5UwRXOmbyn1r}PO|%( zq8JLf0b~}JK78QvVkW|D)KdysN$6h#JTSWUALC(U`@gPFP!pf;aFQ=d&uQu_= zTa3KC!pz%7$Mb{5P5>|@A3i*q2^A+hAdFK{PNbml-ID{hT8T>VB%`_8H`@pu`{)ni z)ZG5&XmeuC6omvCI&1a6wD@|5uS8eTb5SPpNV-1SU)hc#;4r?AuOD*xfynhr6kfA*tTSxl@k{e-B9O{ zVUq+rAV?R1@dJuff(jp%}U}QIUw9D=(-iaX(ksEf=;u&y>J~qNOR_?4A9*W%4Q{5 zgKq!egnDQTVww#?v1|QvILDJwwkUoeKF=?Bdz5i4aqQwkUUgx+AYU*ZOGq4^#POy0 z~5d!)gu`0_0-o7CJWUr=jCizf-_k=ngd`(RrNxwTo(A~Q)%LM z4cD;u3>QI6%E!m>CKvgF;W_$yFNlIcUN0z$DP(JF$04^sz4!^)mm>jPTUQvg`4*(w z0p*19-4AILbfccCvg)sMsXhcsT1LAQ8kTloObZ4r5Gpqel0YuLsjgtTe8ZG-dbVN~ zPUGh6Naqipl1-=bdoRMZvYPXW(`M_#8B?HDSoww3js_Y7RA1DI9M79l1b1CyM}S)9 zPkdB9ScQ=0EAYhp4Q?ea89-PVb*%4uJpTKo*H#%&(Y-upV~pAaX;(l%I0Ldmq|8tf zL>JdyCksmRa9u5(K7?bxsgsp_2(;N(_5yfRhfoY1P?&aK%*V7zO`--E)XR?E}~}ExdrkHimA6} zE2q;Tcj)=mN@wH21uAcSFpiLz94in+LYk)_BcrOW8XpSgTD``O6ZC2I2g@x0<`3Mt zVPH)%)e1=1b(skyE_ zol1$IzKbkONCev3$hmiL1Ko^Lg4!0A=vO*#c9(KgX{C5w9PPJ#)AvTP=BYw%PgfV# zW>>mm(ZxsgMBRQthyDpDH3$&)m}{CINy~N`aCcsm718~u~~ap$Gp4gft)t; zL>vHqbb}cC8v&1{s-(yHB1Uvfs-BJppXpr9-CP9XkO=6)!FYj1s{!fS(f&#p7M5w? zU9NX4hzS4}4BFXhYk)fmMJ+}EaP2TGQ_P8~f;sXfgINOu@tjNm{PtCHiFK!L&jL;z zs@Z&F8|MwifBXw=zRJtNpe>)6SmiW>)YS*jeK1rWIo*kS^9i)`M;x4%nq8he3?XrI zb9n)V4M`ldM=9;V%jlo;)nwPrfMGQ4-9P+sK|XVSqO-iPu0)A84iML5Sb?A8Nl|aX zU>7X3w)=2jGmCH)mk{mhA4D&pA^|()yfKqQJqht3a3W6afZNDb#>uUS; zE5EN*f*d$7cDchK)j%g$53a9TY}_cz_2xI4a41JwenUfbwK@V4)UcHZm?J0d-I!pYqoW&FqJ>yqlj_P(xjdP5O?dYlUs6hXP`73e z-R|IgG)I!hJ3fklKw4621Q9C`W*{H7a=j>dmplI*N$tb$-&rRBh}0B@65Bbx znznXPj-g+ZR%6J2XTeHqWz{)s&zwC17%t4p%7VXAROaROe`^8EaNsV+w>OFT`ML4& zAkOuKKu&gNvL-h%Xu(}$Gao}H<}-7)y;G3;DU$`lnhlpakoK06k|q#aW>QS%azP5S zX%{Kyjav#FYy+hS%m6wADz z)e4^ZKR|m39139XM_!TyNq}6L%=Wg$pz=wTm8;=?Wddh_*izPGk`4FTWC~u)$C#~B zVTn9OXy4lS9gd#2aroaMSygp4uwqIwG8-t=Y^_aFhv6&ouuIo%_8EnhPE9Jzoxb^M^}U@%R)`i-3>c}hdyL%_^pkuENyJTJIM&fNl8lW%)^Qr zDxKeye0}rWYbPrXgBA|}H!zQgm6=@BLU|+iLsmxzNSGaEisq&lhQ3Nj)oq^d8jPUk z6y-gAYbR#m@Jjz_=`OTS9D^US_scIM19;VFi&5;I=~4K&OEs!2<&$_0nlNtK8(eZ? zm~lt&;ero}hLq1{tuJph$L`{CVTDQI&tSieg(aAhbieb##N@cm^_3F|3CTx&ePqC6 zE?q#;ar1Hy|7*u~{iCO2+yw+;pE;3LGmJ?{dvK1vo$i2)JQ!mG5SMdCf&tRX(mdVC z(UsbfVQQnM2AC~v-zF1DN$?7grvOQ4klO-ZLezG~8dFEp6-8MXcO>1Q-c_b7)c2sL z-)i!!xR_KRm^XPjS}O&{4uGtmxs}EK-hrj9buyR7!4ba`25s8XQryod&${|qlh=)k z)jmM@b!7;3bnf9X!3W_TH5+Wwep3AWB?`F(YEAqj5e4dI`i*thz3jf{1^UAdRxG{q zN+jv5G@{J_UWI81uimnNZTx5N7jO;f-h!t$FRL`@X#I21kMDipy2TX(MH9t(wIefg zEV!7DXeTZl!E`Ahk>;#Ci#HF-*VstZ)qyLWoxP+lZZ66S=vp~HQfmAj8h(R^ms_0O z2@}$q=?L+bLnN-JW(a@6&pQI__D`ahfmd5XNnbS9o32mZD%mg*1J2V_r|z!U1&=5u zCUszCKNWJK2~_k!H3E=z2TAxH9b=c{tY|_>yAm)>K-f;t6ml_jb_NU>t{BYc<{T_J z*jOCC8od%49h{ky^(pvx6^PJ7I_MS;6&O{(V>koflvhw>lUtHQB`7ZS3rv`+Tiir+ zkYIp#X894Ap95IMCZ#-<7c49<*^2XXbBl_75XX~LlvIys=>ZWT4aPu4l-Q}OlN9m3 zSJUxAPQ9v2Rd(uy6Ge`qzVUv5;C3i=DsV@N>xrGcR*&<~yZnXX8 zYG{5!?c)bLkR8P(R0Z{9v$KLe%k5U`#qs^7C@PTDCtO?iJO}n&c>r2XZMo-m^%kT@ z0m-k=`xXE6bO+*U zbJX92n_NLsGeJ4c-o;5?=3OOqLv5MEWh|?olI5iSkM#To9b+?ITG}OuTC5BMWc{=` zXIAujuWhr!R8w9OC&(^JfR8df!Jx1J_+gM#29*UwtB5Q{rntE1q1U6ZW-%e^2-iei zK2KQguiq`h!(Ef=&+&(c9b)UR{(#{LGfB?t4LZfD%qBDqhyBdXW6x1KPZPhZiCiB6 z-gcnY!3ZGa`#$o!(%SMN8gymEKVH6I&Szuy^_nh6Xa4!Ox>yaYJO~kR#kk1(g)Lo& zQ|Zu?91PW1djHJKczJnS^t=}PuK(tr6o{U>w%~k!nCX+K;f?iO-&^&LDIukWq!K8N z_eD-b$1yiI%oAm02`GD1e!(u@7mz&Qr&N4*`?)MX7}FE|8%Vl-Rs3mDSmJAXeF2Eo zzlBgwSi1YUH;!wkr?JDs-_lFriZL=WXyCZ8a#o~QshL10q7Z!_VyCdXZfL{C<|_zc$1q8hmxHgXxUjzh zLF1Okz)4x3b}})zpP$WLrto~BmjdJT77x!s@zL87P|G#geD(VJrB8{@&f?;8LQH~e zMKInHIFJ02f+RkV1Hcej<>w#R&O1B04mA0s3{VVjI)iNl%nRVN!TdmgaaW|n-$8{h z(V^ZHDAXfbGo=)Kj0ZYwZZn0NT&p^=O6&XXIT17qduvJeMF6~LU$Pf!0JTR}Kp@$# z3jFE5{()>Pq?HxOY61-1#39<8oo@-yn3+kWz^KoPdkl+%h6P%e<8A!#72>#PMFoAL| zTj|6TYd3T-Gc(h5sp>HnSP*Shu(aDnA|cOM6`m4;5K2c*_CtXx=X(F+h|qUR3h)Y} zE->eog~fAeOB0kxfg;zdnvypd7B;p`sR^=X?V7`Sd|Hc3=$>|f=;hZbRx2tl%CoSt z09+rt7Obz%4df`S*NvyM3#o?#({6g@N!ABqKNV!2;@*ol zwGMT#t2vzynPbp~naINGxJIsSY6cGpr%7eD;KsGkwxzzg+RQWGV*fM*Xyj0 zm2*`=B`tbhUg;EMYgIPhXL&4d^`-h^_Y9Z7_3z;f#@$#ConBs^Z(z<%3ksE#9Ivs6 z5N$`kBeq(fZ%n|U&V)BUMxQJ$C}s>#mY@^f4|@a96{zE##-Xm{;%=cU`8@b-_Yu|V z{-WoX?{C}Gi}e)VxwC7>x}NTUd2&BU^gd~5dhb^^CnP1&@IeSqJU?_Jx9>#4FetIvlQ+t}j#P=Rq~*D88(Vi8ym+2>+L`+!0zQ$+a-na zi@XwHgN8kL0%^2&j^-82hE*iZ&QLXJPi^_uTE1jR+v(S= zJ4vLyKcVD%Q>lG;dW8l;_&d|aBM!xyjY38KE(iEuSqPv zqy_uJ>UnKLBO;p5=RFVExJjSbe=a|+C`!Vp#i4=0Dz9!9ZgmUB4M}-U5fNY*)vGNt zXRI!cPzkz^F){suXnqkTyK|ovXyZmVj?A_ju%GES{-L1`4-GctAO)7VGy*e7!qIJg zXR6w5-mTWP5@wp21;)&53p-;-xyfZ60DkW-5>rg|XKe?0@fWJdwamDy!7O|8laTKkwUFbO-6oX+Rgl94MY#1R+fFXP zVpj}KQDTRZMKi~M6-4bejE;;&NB!8p5Zu+!)GkoXXBRnN1+zT>VGi{<8U`4r>d_-m zBh;f_vLoo+-L*jT&(O$}Mr0BgTjgWB{UM3iiDR_*rwk&vHiDWLf=oRjDgLBK!bR-f|SeQuSPZf z*X9;gGtIZBzU=lbX}^hH@-RKqZFcM!@3*h>Ln)FIeA7e~8 z?JW{i!#;!X^7i+eBR$mzZ*d>IjfC3Biv6<4I|8dA7Ihm&0r0g z45dZVd9sgv=2*waZxs7*Y`VK)N}w@URYvw*QNfew60r~b5MW}Rfm;9%^r2peg1%|s!sn`Z~AEd`KO5HELc==UjNt1hsD2rZ`V!_d*k9Q&WL@p^x^dz8>-MOvx`!YDNrd>XOSJNw zJ*~U?Iy%Oi(KC5|4UUeCISLDtxinnAeOpIfo{w#a!As@FpN%EW#CL_2HB_|JU7g<( z;^Q@Gu3;dR-bclC{;2Rek6?VQyz-h7ZqB=syxco?MClj_u3UlB<~)TKK|;DGD@{84 zHx%hfhg8*3763(EPfN3}uE@c|z9Gc*liv~i3Ui09>QAxbWoYMjKym)&9ye?Bwl^i& z{lP&177WWXze@2jeez%=54_ygnwyuW$;;bdEEv&0F=Bx-^>Ftf+;)YNK8#HBr}?7y zfgr!GE?~<)i!D|LYrDD@S|w(!Nn>I*JU7vj7WVeTBOhyg09=Mt7BW&B-dgT{?t^y`EV7bA-)Ua1Gb@fr- zwP@1oN374+|IC#>OaUaNOiP##^Y`AqT68SCI}Qmgg=Bgk?dQy|AHM&1^9HO0R}%Sp z6Qjh^ICAr5N@-E6Yil#P85#53YYtKjP)E6dW+T`));dH7TsFY=RGw!**rbemlt&bO{zCn{d57_uEM?x%r}c`CZT zKGQeQx5dGlms`p2jSBoSJPfkrPqno`)e3doSz4HXxx<>lO-`$)CmxuR&(_qAgM9p&+tt?FJK2<0`}wt8 zmhu-Bc$P3Y826iY!^K$%EknH6gX7;JZkn3c#Ae`?xtJ}EzQ&vxj%$M1d@q<;nPKK{ zdBT;7uI_FMe5}wW1bObYPZ4NP__kG_!}ENrjlK4?SSq91d;Tr#oR-7G?i_WPFV0_H z&L19e8Iw?184Y<6@JcSL!FfGt%OFX}3+faX+wqV6OJfHx0$U+l1$n6Ee*B}cFq*>{6*K&l?C-CX=34@)Sj6|bfq{KYk3MFv zT4j@jKRm7Av2qxlE4s4w_@9&Yyoyv5vzf!%+Udg=J5FxC2;Cae7!vwz7A;`{4r`En%Aj@cDJv zgv9q1NtmyrIEarf>wazxXkNu8gfi=9Y)2_&SWaSMNl2#|ofk=kx0j@W0caZUM_oqZ zVxGZGham7Tn~{+P=zvL~CJ1}{jaJ6;@}D^E$nD%`3`#OO~`T&kn_pMJ7d2ArVcpDZrRfuNF_PujuWr=fy z{b~qIo{^T8W->D~jP&g_E7pLUy724b^w#V|a6?8k>J9 z|N7R*3J;my+bb(89Ud8b-r(t`bH@{!s(CI78J!%Q`O5gN|2($5ChOCb>1`RXG9*# znwU5mr5B`5jqa_$I;b0~Fqp?eK9Zo~fc=Q)T;rp!gJlSjomYpr=wjXs+!Hn5C*l$D%BWz~OOa+tunCvHluS)VJ@wJ!wZ;uVM>x26jHww}W%86dOii2B^BI)Z z$15MvN6j?aDi#$%@l2DKS4a_e8O}=!=Tp7_F~xULJ0Aq^OQb2uCkx}9pifjgUuknN zBtheMID^43r%Up}y1Fl_k|ffbz7mo<GtvqmTT`%nYvLfPhQLL&m6) z;o)4I%YJKTpdC8+t3*`?O&_M``P&~q&L{Qs> zKvkX2V=1GiqvI-I36f?|d)sRabAR*u_Y5oO{~h#@WLaoTrq0Vl=gzptpLbjOScRH> z-h>%WTuub@2MinKH_p&e!=O2z%Y}SG2Ya!>zLqB*@>=z}l=${+g`J z@YonCUj)3PIem@Z{EwQNE>%?}E`+w!IZlZTli~CPK9z7TEt`;(^WLdD03|;<*_=Zh zi<-5kCwv(}6|JUbraiViJX|#*5g4dHjk}SYn3y=VJ#VjQF5W_x>iKj0N1=B=PCP>1;2uF9N*dhsBz!N<;{7fGD%pudK30p;Ju1F%ya3Rcvf0`K zJR~mhWQmi-)wvPF)rD(gYH<(Z?cIL?M90gvu4rIjE-t>jHg;`xwtRm--`196u~I=J zDYe0&Go~ti;O0LcP{WH5I&@8KZPe2f`$P6ajk<~&kCkv5P_wr_Fz|}pTOBsR9O(+Z zl2~VT;eB}A38#LrhBe9*RYadvC5D-B9-1gl4GTW;eY|n49dTOKtUHF*=@-oK78uHhC*F-%Jy`|pLqB!u= zd&ow5@Y=T6MbCH`c$_Az$BVm$_}K4RO?D9%RTk$008#R}Z-Fg2J|%@u?L%+Z7gc5` zTL6Fua$HkW^M2QXmPSmNths9?OsgI$HsO$KbrR?`>HMN%X<%y$Wsin9rnStS*baDY zGe7XG39t!FE4i4zRu^w4?kvKqEl3i!@{Dk=sSd=#0{HrXTIldY?4^IY>7!_kQ=&IE zP*o7&V%oncZ>_E#1>3xp)kFF+p8IIXAD)DW22tubyn3o%#&`#|6A4Li!_Z~q<>dj) zCQi?($wK@W5Cgv4;ib#L{#II_`L%1;YA5xQdmge~6SpnImu%c@?F z7u&jmqwsycN>dX-ehXJA{k45w?q3RY1y(3%_OOpk&o_hvLIY{n&20ki3l&cN8jpFW zl>JMe;~4`n_S2`IXc^(6aD5JLj)~QG4v7_Zv2VV?vG0$8p@RDj>VBz=w~S0P%q?aS zLqkJj{Ux?2tazE$l@tdl zG-oUG*$uX=8FrRL?LoJJFUN`g}R{2D7OBj=b7 z3GV!#5cXy@8*qH8&d&ohY;XK#`o|BC3R|cnxEWYjZrv|S&+G2%SjrgED{-;^0?jAI zKxrc`sS$^SQjQAa5?~gX=ycDg0>YQFl8p(dh22j^%f5r(x|qwg(Sv~c1{QG~aqx6d zQ}fUFo%7&EL{+npPb{IeKa=)PBSC$)?DfNFMcJU7z4*iJK&7%c^Eg;zd~CwT%&x(r zlN35QUZ>YIuDCnf(6hioP48nc+yeKM+H+mqxL7l&)hZ3YrN2V&`1NZrS@3Z)O8s>p z)FrQyr~wm)ntOa0HuvPkEFB@WaKek71z5NxMjLuTBeQdRd$Mvet8p~4RR3=0D>qrC zB1o>e*o~9Z(J|>g;%0{-uuvvRNIVhFZz&kClf0Pdc9?h<3T%#>)Eo%38n@pakH*>>teA$&ZdtnH(Ii zrDrhS*xs#il7mIxfxTr?vZilo@Xt9-o=f0^w4@e#X)D)mDaq)kF zODNYRad=pxy`gP`y4D}X*_%`S=~M0JxwV5SpJO@323k0={L^Q-X&!h!4wnqT3N#Q- zPA;TV98DJd6dYWIA0N`GR95>BX?oxmZ+8d2bkT?jbX<8_pcCP9$h~!E4BUaUt&MJN%T+c{OU&URTA`n zivgT%>PP=$-(XGqe*@ZHI03;zKuB<25`q5D-qO_i-=SFsr55_g>rocAwghHwUS7rV z@cybUieF4y~%u1k;d{|m3cfLS;e5oCz{dAW=IaFGjp86fPnsjW}K%F192UL45Qe|87|Nx2+o&|Ji6Wn~o; z*3CZBQ~M9d=sEeM&uXy6ZWzg;vb4HSd8OzJ$Ym@or5YEn-G#agh8To+yZ&2Vi}t;L z{m?M-&m+s_^IK1+t-YO{jdW>P-j5cJ1j#4qj|_9<<^u6DHac?ko2?ORSQsfODaWh# z-Ce+G9UUH>Er@;GY=1@>wtwTkYKBUngt&~HjP-D>+hh`Kb55A&jbBnx5mXWr6VqGT z2A^Mc{bcuqE(5VFPJpe>IvkBie15fZ|z;*Jd$DTPv{^C4P_z3rKF+>aARR*9ia~2(%Qkg`M<-fv~yef zpW>^I*3VArygU&k)#tQGA}??W@MstcrD!#1FDz{E{rSbInV~WRaj=n9%}Jx5+v5+) zX1xikURv~$(vqBfe9x~Ei!tmwLm=&M0skhB2b^giI)h0Fg8ap9{L7SZez-V{xX{=Q z%N(zj%uwR9nZQN9z!XiEdt=2gPj8|IEWnW1;#yY+{3A4HaOuMp7pbVYV?8s-TJ(&B zn3e#6v;sJxn$psw6?Hddn5Cs1xw!$9%l^d_6t0!G-%R#ASN7Sac72klkPw#;OKc|} z)9tGi?$y=M^GO_e`ZqNe7Sl&Qlik~6&QQvN69H?atLw|d!i)B+Tt^g?_ugh@!XMTX zbg?yc*SZ-CUVl;MJ2?0RaB9MhWa8}&=%IIKEO)#N^3Y2*EIuB33SK_G)c6!rM}Ao6 z(IzH9^8xM!A{|gx^-lR{G1qy|;|8G=?~p(xV_BvpbpL+)tbu?oD3svK$ji%4eF%oU zhDEfr^|JHO)AP`O%E|$M4vmmAe$P*e&>#zov${IL{ne3j$3BG$>xBDZ9T7Tt^giH9Lxn9&9(`-JF>LEKN5#83IFK&3Dxi zI0+>8=r{V1;ARx(t|}U&9Tb}|>3PQ+m^?AY!@>QzvPU2%w>j1R;~g}0e|srj1|iS* zRJzEjPoEk1xVdlKY47SGIy3hW7SFJhbkW)m0B_Dn0l6o;s`yflwVjpV+qYI}@c*N~0-?m_vq{el;ke0x$&|>L{T^(v zqGR5=h4{wyCZQoZb*_r(YVcDezO@o}cf8%+2E0vXf922It|(cUSW#&yh*cO#FCTg` zhFmA7#?NslpcS2*7`bfP`vFjmE;t^(fB8aJf0EC^N7kwi#|dhNpC1}EkSzvbW7h}@ zI#4r3KEu=T1Em5Q?Z$MG5zq;YA%L-OHeNWNH#vA}G2d1KIv`Bl&m~nVO=z#|>AzQC z7^x5c>zjX}=ucbk!8`Z%hXP!!iaAs(%ZDgbQwfcVe#+#!Z4@hS@>!^G`q`H%UANhj<@?^>tem6;;mn~&1fvL>rAc1~T7ik~rnLvCk# z-!?Y~oPi7k)-Pqc;wvWUtGR{cKzajhS@;J^ODhNJ=T+`6y=-huEbhwaT)&2Ka%pY2 z#^vbk^+FuElqW}3Pau>bH8ok5hg*Aiy7A!?Ny#UY!79uFG^Owc@d`evFfZW;Ixw;M zHx(-2aA6OjjI@|#>%6r2d9jef!a|(Oc-;9(H{W&4MJp=uhhH-&nbdFOkV#Vj)yUr7 zZl#AS3-tvEWx@po9(0HK0A@GWBEDMf`kO9ZW`BR{rYTKQQfq)1y^o6ZD!hEI3JAG% zeDd$pe@WUvYHn(Zh3JFAC&_hw%?uHcn65HJlb_*LzR2h7~e({Ke|hGdJpwzt+JxQk7o-P%q(Qt$s@z zSOTUoILvOe_!8;V#r{kXxP^h^~+u64<{rf0QZJK@_CdK zO6a;2Ai|(#K@gM27|6$(bR*w3kJ$;A#RZvq_v^?F;$U?3Tz=3BEYkT<*T1;EI=b89 zPJT_>WgVKrx`_$+BEdC@FW9IKqmr#AzB)cW4r9J&3_P&0K_}Zj>vcR6WPf#_%i4D8 z>pv~bEQxR+8X|J`=N5f{SX%8)6E<|XK)y5P@ckO({WVBj0ykYDGycB~L~POF&39sK z*hriZi~MMvHZ$pg)617G&XZN%XFzFiB+I0=hqg1pFeWnndqGWIRrNz+meO4VRg9*A2^zV$_;?3vo0-z+=N98zzBc+i2eEc@_PQzO6oBGCezbrY1BST8Q={oUswnq98Ag2 zKcAc&>Phxr!;l3<9XTsX8JNp4=ha3B9s0;$s_GZ6OFsd3wxt$vW7Rf&QIfE{%%f$a zV$BkX&JDO(leal};O&b|e-&n7r_)2iDX#-)jC=C)!H!svWi~nXpS~fJ)f-1V-tG$m zG!n>5!0ZI9AsFAvq)a5!(GYw8nY)7O_o4SMKVsfwt zfL0>^P>RL)Sh*|=glLux9wL^%U$0ubQ)xLbA1|$lgQ4F|T!3BCkVhq`aMcenfF-!B zju;sjD5~kK{$5yEUe{CAv(+i5{k_G)!fHU4nbai{ci8EHhKA_5@2O&hOMm-)a`!Ic zOXIOW+!Jocm=IS8Wt*;7i(!#ky5E`ot5^PbFC6*0DT1lgVs-0Wum1nwOYX1{gi|vY zG|}({SW|6oZclmnfP^Bhfw4JGd9r^h8Xq5D!+ht=Cn%>u2K2cq4b2(xpJrNP(k7=? z`Kq!LUX3PbJ5loztjl%BtyF_Dj6?n0+`?W!Yx8*@qP00p`6BcmEv+n;)>g;sT{f<1 zi_!lJLYn>yLIxc`>4?}LHD99Q_1H*zY@h8PbpNIK z>$X2uSXo%rpFTyc-HHBwoRF}*y$!fZQffJ~r#tw)5Z~r;oxtd5fB(l25VsYp_bNpH z5DhVhn7_{NpL$4lhnN_-G;^~qH}2Dkc#7VB5&?~%a5s?~QTXh0?_&$F%vFz6!XaX( zr#4s{f7{T(L=#{DEKycQK>U3qbNLyG=FH4c4t2qt%;gNXbx)61I?34JIA0Zg(NZav zot7!V&pS9VBI#uMAABhU@Fl}BKwMv=qfslwtt@FiS5}ToqyqEnZQ|=>BpN@>3uQzf zh!9W}c2B&?%Uf&Tw0~-q)4Temr8_K)g^CLB&fl-lf$9^gC%&4Lru-A^yQ+8-Ru z5_P?p?+n@A_O5j0bXZZt2sbk`2CS*V`@*Br2|hn%`abk6!rTkLTNF-Z6)34-VQj+Y zC;ykYp)5$Qb7}qk>ZZ5reb;4To>XvhzXGE;e7 zPV}ioWytZ#RPe+=|M0@iR*e+#bqxVYIOuenovLrrMzjGF>%AL5HcgL@3JeMY`o)0i z$*>)6IKvjVN=$Tzaq(FYp(q#SRx?1=sDImu?ME`X8dh_zIhDd5^WK8+N zkDH7km$ZeWh5u?;=DFRhzxriauf~rc%4A= zLvgT?7$2YPw!%6yJRA|rc64}bJ5hB_t?*4&CIm8gNQXG27q}_j`H;?DkE2}{O+pG% zo*)VF#-ein$B#EAs>@z3_Pi@B4E^;B_8PGIv3efeK*AO0hMKDMqu^4c0c*6aY^luG;j2nEGs3=FCY z+uIV+U-G`fxZf6qpntn+I}!`U)DhJBV~xmJxIGa)`VL8Zs=%4>Y0XRZ^_SO>hsxMFcSBvS&ZvA%kN4sOcEX$hv`l`xEK^)b3-wsr-{lvl7qb?taw9m?hMLxMEqOpS>A@Wd`him5lS+$%fB9?{(Y&9Y*f+AOmvb zA=mvq4%Tjcj%j{5V_Q3$`!+);r+@iM+Uq2Z zOG%;lBVG7K&p_m~cU+YNPD(I5gRCiHEK{$5EJS?gyx*KB>qP@Zm6;i{^u{1xyeDJg5lN2iGJE!GaT z%@G@rXDa60w}cQ^f#mSGK1nXw(pHpm@Kx}O zUfku|`vBZNX?=?Ha_rRZ;!({5E}qZ*OK&uRs}fD!oSGGR2~b)5ju(x0TI#_gN?PjN z>@OUWzm}Zf{eXBWYWHsBom=-``sJB?&IBk@WQ9|xNAw`a@5Tk?7wOW8{C#KQ;5j<- z!%BQ$67#Aa*q*rqR3P5Q!A!J!unR~~T+NqHpI@&mEw#>{H|v_0jfVJKoLnopgo$N4 zTwBF2+E7t*a@ffZFb@Vo`#B>ZFbF#+AWWpb@LZg%{t&&*VI0nDd=>cY1D{Adxy`^R zmGKkU*l4AW!s5|#D>CFEb0mZ(@C^>qdTl)c34^*iGYJ$!aA3klH|~5=Rpo?*O6Y(9 z@6EQ46*V6PLnM?L@r-K63oZCIHJ%{jwD9@CYQE7;)bu(bCjLm4SJvMnGVgy63gR9dZhA zf@CUP99aGNyLXC5?==nN6;pib*^4r;cr8HtAQooPa>lYirlSwXgng?%JU;`rrEM z(A*-7RtN%N1s^=HSQL8uDIvb8VL0Uc(f4Pvw^Jx{H7j}!#{_sdV9k^Y@D94NR}?&_ zo8L*KqLNR3fLee#kuqz`cCsCjYp)}~oaG8&fyVUoxjRw&d+jF5XO3V^q zBd`^rA*pBc>|;#E|22N<@GNp9YOX;kE z;t^}R=Tl+Y6@cw?2p=u0g0YTT4y3QZ=KA&XhihwS)t{Z8v?$>QY%i}qxuH|%)Zxl& zabQ~}bt#K8nQf;DBO0>5r$k1rE6oioE;EUtP&UKXj(B(iVG@}NfJ2MjqNh$y?(XU; z)v|Gy!W|nVUHI_kTLdmHi$y8GX@?k@{gz>L3ji1&Qc)9;h%-ik!A74P`VEUy%;S|_ z(V%N!9B^JAt8hEn$G&@a)7h!K!fvd{UxqOPFMvF79$J?qU|SXfb72)=N6;~ug6<|F zqTrpioz0rL)h*Kz>K^FX36R6KRWG!qyLVx?@P~ua3^GoP2J@5osN!WN%Z-8@zJroQ zTlIR8WwgU8W{9S=!{apQ*p3re2{*d_qXkI#T3igz9|Hj}9+DguQfbL&;N*#?@_G(( z9raW%)AvjaEL~mWI`pI%$R|T117SxqZEYXBjZB-dP{;MriU^ss&l6R%b1-z9L=Su> zprv$&i1MNQ>kA8TOjDSGPzC>jrLlnlkHixc*6UfHiF%c%I~I(M$rmL@%d7y;Lwx<) zB6{^gO%DH!ggDCLMyGI3W4%C11%+Y;xfXjl_0*D!FS4Y+MgbS!oI*p6oZtsAI zvpfFGwJ}}w4hdv}_pq^ngEhG`Ao>NI=O7#c_WpPFU3$!8Chz-1a}O#QZYr3%S6@lA zIki#ARsq!kV3A5`hp9Bm*#I$TJbA)tHI$H;$o|dXR7@&^>nMosm6%xQ1%AA**&`A% zoXy@0wLB1Ja$uBNU7Ul|i!sV=rHwB3=rA`tEc(qisLW3Y=|C=PD!L-@>^5-|4juN# z;@YH@87Q;OUl5Z9@4BCXc6{0THLAQ!7^Hx$tSvlRYqd8OhDKIx2_AY>2R_#0o3YQ&_qC&yEDS6pbz(ZU92i6PWVU)i zh63tX&SbfQAs>*PYrlVwAUWyj>TRvfT%bo!^*)>lDX7P#a|3<&ZNq`DZhQj@+S>d5 zgHPdZIJb6sdIO!d-C&;@uFBFHmjUMJ*oq1`yrmeVWTe0r7@Pz^0X(z3++4X7k+4}; zX9=wE*-eM(GeMV2=pvp(A`dtn_I}>3)3bZTh*I|LwGF1vtO|fQ1O>wqV0aol7ec|C z)yk@kAfT)O>L#lvsmPFvskIFZMbi`VRc^{T18OnRXb7<5fcoUcbpe~7pT!htkS8l^ zyS|S2KBC?5mcnJ3&^!E%2V(Ayjt*_n^Jl9B{Ywkp?=MpkUsIQO63=js+CTrR0)nyu zMCgFW>Fxhfgy@8}LFdWuW&kLLD7;fk@96#x?+QpW0lpoj@gJ}|z-Kbu|9Ws?p(mW+ zkfPP$6c#JoSLNm9OmfLwBKW{IMiI6Dxq00CFuh+J7{KJDw|KaK^^Q=>i5b!di@()w zs4xBUrKHYlD(x|J{p=|sS5jHPy#q!S?ZgDQ%BM-+up5aP8a~q?ul?F^(QrY=mK-C+ ziGOQZixZzaJUO&;1k8SEnVGwNx3K)TMynhF$S_p=FReYs7I&Y5HXf*CNU_Y8@FfcS z$mT4%P8QAeLcIG^cQ!ITO&6kvp4-{kn2ZcNxj0Spug`ACpAP1jUJMsMNOEkr5dNz# z^7ff|1?_w70warADj(}N?7L9p5waIFcpc6FgfeMuk8>gQXYaT`^aAGEszMP2Z~)Z8 z*pPx*RwC$ndN>e5#_n^n21_;0qjXY4WT^gPGO$~(#C8I7Bp6n&VU>S*c;jlwp1YUB zBfn&Sj8m$55;LCm*?AKa;E5KN*3O(N@E)Z+1@O#(oR?R?Qt9Bu;_*wa_}Z5z`yLf` z*MhIYSQrvgFb@Vo8&`a_PA@g(Jy#>Z80!n`^#{|BG)N9t*?lgDy!o@f`k}ikPFurz ztg4?K)b<>_0txVExrJpj6)JTiyq*$V>t$TY$)US`9pVU~d!K+X8n54~YC7Y;etcA7 zURzzOSR1{ho!ykm19@rQZ=Ky?>A>o2z1te5iqo%j_pcT`q{HxA-t%6=qFH%J<0LcD$V&P;$Ef>~Td4nO8sS66@f-F+~Lfy^13LWa(@Fdh(Q#>)iC zYgf_IQifrvWp3fR&xydz6nA@i$u^Hb>-hI=epcn=1Umc- z`glM}LBK5DVf-jAiVHqr@=c4#cy2@fv}A9 ztUW)NKQWN;O80@@DN!!w@BFlKHI7+6`)TQV1?*j&_fpox8jXweX-0ppo!y0*B<`+m zO$o#BHbBA*d>LM8!|m~UZ{3_e{+ddN+t#zQd#LbEGVohn8sdv$l4}h9E3ovO|9*dE z5Dfvvm^!wI628+4b7ep4`!e7!l;WeW4_aSW%jE!dJ--I@RIlB> zCZo0mRzGlLfY120^=K(Gqv`rjP7xn1fiqF6A#(&lVO;e4zcN9&4-%PAiaw1fspLCz zJGb3;dYLg%RdSP)lS`l)p8pLdCiia2-;d?YIDW2=-;8`FS>pn{Hp+CEPg%)H3lP)I z0QP#0$zQ+?9-72k^@%onB~YHg zdF)uBtfj)kOay)qjse>iv!gFmc?69Ar5|2XK5sEq#I5amR31mfz2u`FV8Q?>Fn;>#lvZI5Q37DIl3D7Ocvt5&&=2i<;=(*P6i5? z?|uL{t$+c|>%?YuL1}Mb0AeCLJw0{C$1QVm>`pgPU=@Cx-Zwo{=e$0yoN~XjbzvB^ ze-@vT-*bY1?bO8QBErY|OWytU5&2M_La*MG8|h{P@^jPEKgNe)asqVlp82bDzl&{# z@*%DM>-P3vYKPDX=7jLEsb?$fQVe`X9bY*#i^cJq#d8tIR^z+fKe=4@-3EI74TeEd3Vmy^+04Si0_=vy7-;|nK_lNHZ!K*E zlo7+%4PZxDEqDx-sRacgi!?*Wwiu64UOsjtHRC^;vX-97b4Vp;%g=YopYj!*eEQt8 zD7|bC{O>3Xj5a-QigRz!)RESiUJ2iwIKqo~eKRObpve#f-6 zYig?BEFNct`Uo z%zLPKH` z*WYU(Y3cW*f)S8Zr%q3zgs}<8hwx#b#0Tw)HzO9=P|0xd@i9eq08u{pvrn_)&?hy&|%k`(y1w$Z?coi!3;vXZOv#wAi zMDipjC8yR~^KGQ2w`qgHWXP~FAzw>jDSmj9cT2QEuCHHUMlf_LqbNwvd&xfoke zG(N~63O^-DWRa1PfUjF^aIofJ&GChU9|gEE-Y7Cnz{$JGG&R`62FmE7KE>J0i|ZyP zz;&HO&<6O-)<5v6&#CkBTNjRaoS_h^Ez$k0u-N_N?7)PJ!gKo=ocss^V6br8Ag|%x zG9A0_@$|)6gW1I0)wT2ibF7mS$apDV8^4_Bh#;+PuMuD1S)+5*Q8+d$J;_nCvy3-? zfNlm@i)%Q*)rH=E#_&EbS=ZH=q3`&TS|Cw>;1QMq2EsBPvb38N&L=OQr{v{$UJKV+ zyjbMh+pVDQczhao#XdnU3wlDRPaZrFgsueo3)l5l1|VSO=Qo|ZY6^gSgs=8L=2Y+> zub{Lt|GBA^u8cfrKV~oqGEjh~xl^ zrbvB#&HhGjtzRM**X{xjR=%Jf%R zq?^n!2f0y75D;GFSOuoTf%$n}YLKiDBII;b{YDx$)|dKJ(`b=4{N9Yj_0j%im1f4}%=kze(TDu0eoze>p>X zaBxt3@da8cd*qv7BAjr}XTR=%xr_fHDbm zmCnH)FsYbT(>IDH*`T;$ z3z`vSrIED4`Y-x}XgJv3hKJ?lg*zthG;|-v&;aF&NU5-bmQ^n1O^@_BtRSsoPMAMZPj&ZgucfVOn;5JqMr5 ziV@abH_8g{Q-|5XJUDqtL!$RDMg%tw8N+L5BHj*6%!S{}ujJF=r0KW%lZGW0j`_Yu zdOc73*meA4(0h0GWqP0Mt=qSSxVX$|V=S({ za07_0cR&Hd%L@)!Ya$(0mUQYngf+&>Chdv zzvrGQ?UAYX90%nga9&9G*gyq@DsgX81L`w|}{-jThn;ska7WK(x_h3Ka zlGQ6BwSa=seY5777uhPzZh3i^x$eFZ=PS_5(AJ=Koef)3I}Dlq zP4eO>9h>lQe}A&Rp1tnzgs^bM>M+{;e!}sCgfHj38va z$%!?WelcI~{YlL1vnxR3p=IvD?Rk18{q}7Pi#91GZBJRLwT(3k^Bvb&vIZhT{CCOD zPzEP;FuQKva6<)#jg@;Hbud9gexKV~SyoQ$p2BmV3rK{$lXGye_r#J1x5{%s<(WG{ zY|WvCnHN^n$iPUIYXY{YgYtt4yO8Q?&_Qf0FT})sP}%*X=&GX98b$>-f-?aDw}7G$ z8B9?$?$kJZy7N=;Z1L1qj9E(hUW$<0#X-YVxz*6r#j*NUBf>+^teVg_Icmujub*p!JbZ4) z?$!~j7l|`CaF4j@5r@N@CVdSKay>jUVyUkV*&pt|6b4S6?ExQq{A&`{wy_}>+jM?& zznGW=%Z=&j-^&6*JeaZjSIf%<1O$7Z|4pDsClq}>239cO6a1TSB0^Q}M)QXkJd-2+ zHSj3n>b54x?S6MeLC&c9hZupHN_+mKZ(CdHJ*jkmRuWmI_}%=H)r)K=LNS8^v4R4d z?Qz5ny=`qpEE0YM8e_tmd^KAMHS<;WBwZaG)-VcaU?6?ph?y~4DecB-&yi>Sh-S#E zSM3#qcij)|k1gdM8*U|shQgvKU5R{v zD8aB6-0dAy`X{jI@6!sI+t^HiyO2$RE%x!_OwdFAY>R-v_}{}Cd208*r1);vk0C;p55lnCj3AE7nr_%s~QL+33{HIO^ z^8@u)yF9rPfqB|qF%p#Q{wn*LRB)=+9$jR!qqAL`Io{x2yjOiaq~yc5xqG;03Q0Qo zxswI#f zaWI7p64#}W%-CW7O!t@Fu-RxVmalP9U7v(N zSl_td6phQ`i;7}% z<71tc%^pn5()wsYN}6N5DN+(04Gpj`LRWu9W+D8@Zs8mJL7=tnd}2a!ysXha25u>- z+9T40ZVNm#E$k_x*rfYd7y^>skbVT!$@GL6M$cR~JDFfO?}Wro57xDDa0cAhG@2haQ$Gpf;!febA1rX*<$OYMEprSNS%(GhTerbWzGvF3 z#D;eMoOXXl2GI$i2scBK#HPx3I!^W=y{~|2My5TcCp;*;r`nl?l4pXS89Sy3aLYYS z4|NqeVYV}c?7`l5>tOm8o&$;}Evd^42L;Wb=#7G;)DQU|AQ?UhQHP1fnfF6qB+k;G zk+8U}KkEmh&=J9;QVc14d(&=v&8=iCQ1=u?1AvBAg#lw-*+4%`Pw*yLXwc z=GJJ}R-V!^z@0?De>hd@dNkQ3Q6uOvv(lHClM}rBo0EeJ{65!PEvl{r?cloIWiWm- zld|mgjG(#v{mF(o5Z_ANnm;Qte8;3d=COc=_|@4;ZL_0OE`b~^&d}8pE-6;-u=+7Q zeI5d*>UeFbHpWUIE}?$2*QA68J=njp62-z|TOIs$o;Q=GXohJ>TDPWZHx@T)ehq>P zOPwWjAwSL_yBBa(^j`FJIOYb8j z#(DHTw;AIWI@iNHa=p*44~*ZwAR(|xAM&buM|bLJQ8iFJ26uUu+#0-<2QC*;t>Gy4 z_EF-CmY2t^>SsrpnctGHPS?A+9R!HxEBGGUw$8ZNCtVJ>vM*2ng*6t`6jt6pi)w0e z%ALgMmv)_?VVU8@3wjEQM>NK#DS`2OCUnN_!>iSwP;cMLIZ`X%9th`q&VrN@m*sZS zgj`MIr^eSiOn`@rL>A{FTOBZNYz!wNk#zT+omQ|k!kITlK>@}CzW488@uG^l4I+FA z4FuDA80?K7`}#m;(bMOGhCCNd9}0bhgJTobCS!IvW%*3A{iulV`FU_~hL0V1Gh(l$$9@6*9{jX>n6lmYV|l`H&yuazHnythaAQLL(p zat)qk1MJn%1aimk%b*dOEjmV{&Cj2p(u9qK-psfnA=-Yki^wUEWT1U;@;Y1>gk~kY zuB6aO{^B86`-fNEE-q;BJ_KiHOHipML~PGY@xp1x=&bD5pnY0d&%8I%Q;6^8Y;J1J zmyo(#8;~X_ue6|SSA@A8RyIjYOg)^Z)GY7*45CPuwI2*A$RF6*^Rl#!o1PtZ$8A2q z#wI4^OSu2SOHXeBHY&J&f61Rce-2Kq*;3go-9+lGYu_Si#xUHYureR3Wii{6v7P z=H=C{x5@2fC2|j{Zm!CtQhxvLDlRRIk7)1D*MztaPU|(iQC}=X0jwzcbc*;(%gd8B z>zlJTy7`=AV(5l*Zr{PY*o~3~FXG(DNYi3x8qNt=h-GW9YC)0RJv-6ap<~POx-*t3 zEZh!+pkwjCQzoQ3y;i^wZWze8j;0wXZ!^B?UlX?Meoh~L8<-GLTMB2ZOq)_ zX)+&3`H;bXTxu>sp**vspe7@u`L4072-Z%ZpdSip+nJduy1Gu)xc+E=eb+eh8Asxx zvI-T0CTVQk@loC7VCrz=G7kmUXOT?XiizGpG;UW{ma~^|PG7Cs`YyKya~vV=(ZRk| zxf<+uFz|*-iw5c0atMF-{1t&Mg#0lyRQ-IDn>PB#ppgNKnLokk*hG#()|#m)n9yL? z1U-IP{?;t}bahgU17uv66YuiyKSnNc4s^^A!Ci_j5Ypqb~hHYkacXq^xEE{WRRZLZipWuqG9~WI7UbG4CNQFK3(e z|3iakpsxp$kB^3Q*p0R&D_}UZcLL`*NPc})D`%#P#?_5}mL)ebR{8#)WXYD()5^6q z|5KMPtzXt8{zSex%5}-xrtZ*}#E%ycM&?1IkdD?QO>};r`BBux!PVt7D1AA1wFnP) zQm)ig*$%VeJ zGi=<U$fF~STtfpKwsSJ4BXZosWdCQA4%imV;brk;5xjE!Bg&N+0x>njHar>H8!>s zwU=RMq-wjjF9ix?xL*ebmVNq+NTS4=e0(6yh$~6zITsftKKj}k;7TgF7A8hU#%9oC zo%7Y#sp=7oZw*5VHqzaKi&50k(#gL*1U5n3-g3U*$E0A zLpN@XIUm-CNebgb6BF>79MnG)99p$|sq^eSG%V!T^%sn3X@L!JZX@n}-L~K0N9L-0 zMHf*tWF3*GdUWZrVh}Pk;f1WHs|#!e6nzP5lVtj6$7y6f?wPs#BqJ&HbHuFJ>IIUQ zlXkD+!ZebJ12WQ1)U14v02OFFTJHDtr$A`QLy3r0Gf{0?qf|zk@$`FG7xk z_Fws>f-9n-LX0U9?SYe0X$4>$l+CKPxjaXY&63T6io#v2MrMSknb}_pgKzD6 z4c3Wm6HspIP+70lCN8a*Jvi_N-`+tXIvVF%Gab)vS-Wk285}7s0oWNRD^4mZ;Lcij z2|Ii!(hWrFTk^K{j?d{4%jRCzS^K+=)7>L+{8F$56AkC{Zz*#nF)lWsK%VV<-%?9U z0u7CAVscdUi;-#Rzf%?V!PVSkRwQtGQGLN_9Fr%T)t{%avAO1w*Z=R&dTtqT`Juzy z)B?g4fyOP;$F_H%z5ihwJlsl=5QGVwBCOl|1&IVNa}@xrX=!TRqi0xl{-BY6b=Vbe zXrPLRS8TE|)^L7)H*NdZ14~eYAP}2+2H;Zn7ZDCbMb$k1Tz7JAOVVl`)vouvkAXgf zu#|(*Lf>Y$sYw_L2}N>Ya(Pe+u$M%e-qFvWYd?M*l5q;9_gz|d(#os8c{BG@A29Ts z1@CH}yRoLm`ufkIP8A+kSl>H8VJ|MtYU`U{G{j17Bbi%>!1LrYp_UGXa>UkAw_B~B z9)NC@EkIXazqzP*U#%S5AV!=rBb07kiR1;TGmwVIV`8oggqY-~^J)ee zWeqq3WtJ_Vlc&VV&_;tc((W|dCF=$P5NcjtUKUc~DDn2^{zbv)KJC8aT)7Sfb!04r zaqno7gdUkuAUwsh{^AGSA?2~Mw|y)HPzV^SwH(=RBSVH8vpO5w(AWe?LY$GpStgnL z*8!7m-0&oxQA+G4DypAKIp6&K0c2(j7bO{7KOp#>3^;V9t251l4aFp|4c!KHGJF5t zna9)hbVLlHZ!#R8KL`0ODk35z#LeT7{^UED;~~yyPf|9z0O3GJa>ELM-9+vOmDt*~$@G z1PqWo#WPNK=fkCIuJ~d*ldhVh#;dEc*8#Rub@+>haXa4QHh?{EVi+2&C;B@+)NAd3 z5H3ADgda)dLBqJ_vG>k^q>s8yB?@)b*an+3XB zgeT-a+#6#dXYxDFdQKs?K%f{ z6b9L5Hj)O5;Y{qKB zh?P;j;v?Ua*^#l)i@8b105NguBn|#_G&_FoaqoJoqkXr%BuC^IFM7=YKVk?AML`@N zpVYs0f6jo3DMx!yu|US+->if1v=sPdo7AjR6wo|ZIyCgI?(#)cyBRLp=Y-D<6ch*q z?6aXrf=zSHzA;)tROzZp5%P4b#GxbVBm_s*4A}TMke8SG^i`US0u}YUr+AP3Z$QIq z2`AsAf^|@kOd<#-=^5!Ke(Iur;xapND^YP@KebnMJPK7UE#OQHJ3O2K3Aet!x%0*g zr_H>JGbk-lqgvlu&(6v*voz&CUrO+uG6p{*38Uf*PGv=Pb@jK}oy!UB%id#SUjndh zkIH8c5379`ic}$U_8!775pl5K$2=;`f~b;<+B8oFyM6Ey3c1=cizuW zt~GGD!E8M}+Xy0GnU0U*l)iV+8kxU1TV`fL9|O1RSyg=ez2~E-9>*^smoK5QA|dhy z3p7}4jnz$$4-dBtDX{TbG%-i@jSNH9(f0Q47g@ZW9o`0d{AD{`>NHt7g4q(^i@%<>=OIGhrvYv}!T zM!$rg&FZ)%SdFH9P-i!jRLfw@xxTjm8)yi?0?i+a56;7Ty5CNWElsPUBCSs^j?xMx zjo-d?H{Zz8ygDV*U@Wu5!oqwO*9BP;3z!d<%HOB=#YHDi4NRIhF{|=j!MSh7>Kz+f zOj0}`JrLu<3z(j8)#$a!(TG(x)3=5*jxXP1W#kzYkQJHj2Hi$@E;smr)aEsvf|9DL zX^BdW29{_F-knzfma8c9=HtPeqf7X$)s1@Nu(^z^?yE?)2;vn%AQie?V5SVGu? z%=bU@mUWVe*>Q0QgdLin-s2XStLwdPfMYlR1SGtg0-lgTg3uD9$G5j93T;`XkTJDo zVU=+C6g&Kt(Ff;>YBK>Kxq+@z#h=7L(*z)ZthrfSy>W_S>YRb9Vrp8 zx;w(6T;gC3FiGRY1n?P8EGLdfMacknTeWj}Z?W0&!gOZdgq0ZL*UG}fh0>Iuwwh;0 zL|hySNwuj&+ivYydI3LiE$`7dX=;Le3?HGFHxR@5YOp+2X?VD|WG`9))kA;)JQ;z2 z*qs8s5gdf)ag*@zCx8Edao~RUUFOsv5c6*AIK-{v{b+R8%H ztc_RH0FvS`s7GLA=Bjak+qdf-l&azp;Nw0Nz!GEsV3vavn~)F} z{}vVvXg~PR{^q{RY;!OwhXB4_Y&_ilfx+mc_>+3FOT++ROD&LfaZqV*#ZF0Y)_r;a z3JahM>AHH@<0UMU_`2ghp7Wn>zZCjy{5?0L&j>bbc)irIR@0f=7rpC1m(V@6yOaPG zo;j*zpCMAs^$_DOhF(S{jKgNrH3^CFQklAhB1yQCIRDIs=d4aA6f*f@zVi_GNiZSb zv51e+lKbaRaxy7f!b4c<^-gS@(3V!Q?{rfoPx9~p-V6dMlCjdVk`okUu_qrV{+dC6 zMCy|_zPY*jPo98cOQsJQ%Ckf;9+P0e(gR5itFSjt={$inA;zmfa&NW<;s|ukTHqhl9hNK_udQQ(9}}4gZ>Pk*0A^_2oap( za(79_)Hm1NJB@s7b(Ss7pOh^4g7XB>tHzD#^PO;50rjFN8+zWuvH>X1UJf2&2Ex3) zXAi6&aOIYkWS}5sfQInTRVCwhk<(B)9aVF--w9Txy zlNLGSGaUAKXc-6UO=qZ@mDv1lb^|BmtgW+K`m4mk-3hrH;CqUkorQYOIA7$rfNlda zZs%Rd*DVwK^lWg9BTP|V?vH|EVkO(1=kL@{+8kkWL$B$~A#~ru$juvBO?ziX^!Q%u; zuCTrh$Ukd(#%~oPX|0ih^#8mQy*qkNF!7KWH4~U%i^^ z&j{*_S+%dMgW&0+)msEG9_;UUHO!9Joi8r#E!Ukd+#_iPVr|HLOfM$BUhDkRpFjVe zL&%vluU%pY#97u(iclK-K-OlJK4;R)00=P25w6564()U_jj0tVW^RA z)l8p@WXZjU&;^8Nna9Z+#INYR5#qCQ<9+aAS zsh}W!we>P1QnS+^bFtxz8?Bd_MTUgL1qpoYdrKV3#>!#zJbq>+MksA$bX=5Cve}(QaME1RV@<5iXi- z{<08lBuEt+RvhdH2YD$X0X)d7B<^5<-?0)i&_Dm!W(lEjdL4JyV7f`0ooym?m!P=5 zgYxiu*X@?;PFhlj^T*2zb1R65o9oLxwuz1GxQaUxu;|%b$A2dQV!yn&u&}tGq@vv1 z(kdF&wbum#iAZ@~O^-vO!iTt|n;cPNddW)TBWB|zbbw+LhvJhE{}^7SP3E~CIE!x) z9nWpkGe8oqNXIb#vR>r&#${yo=9`-94+ zeg_i=qoZ#$UMS6Ms_^Ef2B<~9RTAGJL?CEG**GO53Q7wLOAC$h(O^g-UR#T!$0tcD z82Jm+3=mmT+0E98W*aQ1H*0DTp73Wgj3F5!-{ZPGAJ6~Fs&H0hFMCWa1%(+vb}qRA z@eWoUShms*`m%kR4IX@(n0TbCtK0i=&CfX^>Ty&%GX{$eq1}XLnf3ga8LcciB*e<< znm0vn$PCBS^e{m}#P#uOZN>B62Hb3ILHB?+T}WKe@=RxmSB%FY#QXCHqFIbA&6}-B zL=dWg`>AVaL>vjEzlG`GBBF|F;1M35^Esi#gG}Ej)T2$DJPtc_bRp!QrG=|&f8F+H zZcKpU5MU#CS;dN^qxk!F)uDjx=ESl#9xyWo@K^OJ|AvX-=_gTVX9NQMmhL45c1{~V za{&|wjEvEmnY+iuva_+3I?T5av8)%XP|!a>fb8TJV{G=|>S<+F0y0vU)<~u8^8Pzn zMm5iI7&W@I$Q`R5EN{tbcL8n(yc}+E1j5j8 z8RBjTX~H_^Bcpi$0AknY6U~s-y>~C0j&2}NgBM0gVJQ10CVTKkt+E(;JvycNfPf_> zWyx+}#xOND!DTDkKRUv>K?yu0&9sN~!j5LK(RiMEkBR-in8#HxkaXA^##r&?nT^8` z!WxW<3b~UZ6}|})`|*GO!nX6~4mt=^6b-5OpJJC5gXc+=Ob)Sf$1yOk8 z6IjUMmKNs&st5B#zoeLi2Fcw<)sY`@Nr{M9u{w)ySMUHWWN7f1 zrFS@Uz@)v>Djl)c{^g_uv5sc1Yj{Tq(>=sQ$=m z57h3nw*I-Z11g?|AtRUILCN?JHxNsYb3|I30fB^OE@BiURX(!2pX<)n=={_ywq~@T z>+RL_$@CHlCFPTP&wDTiJ8HUv8jwC(9GrM?Tr$Wb2XYw>$ilrsZw(D4R0R-W+~_G3|Eg40NIy zMFddfIoz0N7`_@JKp#Mov8t*eeIn9YyZ$hf+M?CVtx1bA*Y8b{i`{KdW8h z4flR=`^r~P=E|(txq$rC**FWT-jvDrIPQ ze`H@Ds59W{xK%@X>ksaq!9Js6@KTmp(bl{sXXZxvZH^V(Y$d_M$98K#eR6VKMFqxW z)BqQ*T!k#T=VJF}^-{@RL6w%>0>ox6K6wHHj`GT?GB$R)1)G)2yWRG%Uw0|ELQ0EF zI4ekv7S3lk*15~xk`xQPc_UfkXk}$>|B#f}`^_0_We<~*mYI-dIWGI4bHW_LiFu#+ z)oVc*>yJ<3kXl4Z4Y(-~33uPUO?&izRU3WdoVCJwjLf&!0Cm*>nLri~*o|18!xT_oZeuYG@T-#n=e%rIbZEERPzyAN#MYkuW+MO9-8gS8SPv9!?djj5>%)E6 zac}j9h$^%+u7h2D3U4xm7EGxur;ocwkQmYNtIraq2@MM|+-^YhJLnFs$^JiyVEG20 z2WHn#8zayq^cn5%>?Q21*hR^G4-AGTN(@nL4rB_m#0p3zO4M(&4D z8l0&UyK&kY8s-$QPEuqv%q>i8>>Swcd9~4vH}r^=eK&P-Li-O|@Cl}1>|#vlGxN>c zNY>DRu>b{&6fUu@WGs@AEiWEuL)+=cr~5n(W!yGUVo%nVD;wd3sE7r+93S zJo`y@ZdSlavW$Z6z?&-_hf{9n9xnDN`Ew=EesEM4CjTjYxl8caU$E*0Mq@1;Dh4`D zE7wto?)ZHyx69h|MuD*FsXmCpWM^jud3%O>jftUUj}|kCp*A5O*nOR0S9$vV!TsR& zg&il^AU$xH6qJA)l4YP@3V^PV`}&3kxZ})>%`CSuvGSdEk-5G#)_UfVgUe&CzJ4hS zMPzwqEaQy~df`^@qhV#WwMPJFIv7v|G>%s5qS`&1v#J1pUX}B~nt%) zze>BsrMK{dzWgI8pTot4kz%w!zjNZ_vKhlKEoRm|(}(J4MkeCeYAYg@+@296t_ zv=bAPW*uI-yMr3`?CwJtzhE)${|*V%jIn?#w4;YNw3H?MBv&u9PLB#kpPqUThcc|q zNnMaTS>vFdou%-+&v8=W@sTZ5$@Sm3eGl*p$R5IUxw!k0mWiCXmtJGe&V7=EgOj_J ziqh_m-yT28zavX{3XCijl@+kOOeK>(MS8-hN=5WAmzF8uSt_`O9i$~6HTvOcm#zv6 zi%!?M##(()Dm9TW6GJAj1%x-kLi z^gq-feSWsH0~CS3Zvey{HQ1Cw4eI53{+r+rf!H2aa(7y*0w7QUH(#UrI{;VpBP0a) z_wT*aP+5b}i~BBiT<)tM?!&VR=F6{rMpJxz>PbnqiFpy7@cv9+U2FxD^3gNVjB*A$ z!J!ha&id8{Y+e(^?%bRj@qmrAPQO1}YYv9}jq}fjn1~4Q!DHiNW@ct#$s9L^Ma5ML z8#=~Lr;@n+u*d-M2NB6f#r{MObjW60{S=P9pL$R7RdT`No}nE}x^bR_Zhdzd-+o5DFxt z&et=RlV-{vS~AedI5DqsAj0qm6b5P`e$qLl3(U-{aPZbLQ1Z}zAo&v8IbXAvtqG79 z7&RCvjhjDw&AQP6eWbB@YMfbexY;EFASRi*n7L`xhpcE}Y;Ll)zLBIslhPCZT8!iJ za2%Rq4_tImUK>3|MNjKn^-YS7D%$fnANHs*;=YLb9}0+b0tW9O$kfo&_Y)P#8?RO# z>9=90Tc3z$*~TWh^KyV5z{s1T;Se`CeE8RyQ>41ZeD^HZbfTI;+VbUXi0x zQ*&7SUlkBgC(ul=-~u*M2*O1hjwPB^R{8wGprJow=k;sI_MAv7DyaY$5eSBU=c?9# zNA+uoem7L{xg=SfZB7bvM}gW=y7ou|!VgG1G^^a=TjwFU4ROngIwlY^I0WMkX6{pl z+^2N9g`*1yT)?V8stGi)4XIGbZH&8A6oC;tSQv@#w*cXW*S+WQCN}-;&3;ZCAfShr zp=m%xI3H7~+hr--G&tns*FN%37jS(0BoDIyM_7Qb-(+_e2_-`XdX-4}ARi5l*H#rn zN{`m_bX^^V9OZO{thP$c@0-9Z!zNRIRulQLL8lPzb!{pGI9&nUpnL0PwD=2_Eo21P zomd`5#@~M8ul<0{lB((bzf(0o=F{U~2GQr#yFo!k;1@kR7_Lb^G^2V9QKskvVko?rn*Lw>Yh(Mgc?HNUm;Z{0SPfvtcs#x9 zD={=RgwI`K6+yITc_XS_Zhw3BqkgBs-s`hI3R0545ZZ$O!JP_p*YK{3r$c@fu7-!t z&6^7mq)eV}Izj*_cP`)4mRh)X&!BS&cXiI|26&8nTU&EV9;~gwqcB6Ogv?8U<0tee zruNmpEN|38bf7@5x9R401nBLcvbcGuL|6i~k-0{y)!9Y-!9RP$^)-&$`SCwUU9V#t zp(Ih#|Dti>m*XJM|MAy5|Nn8m{~t)^KtpJ|l!+-Z9E)eXpN=l0A7r3SX`@v}g zL<}7+Ra!f|> z;CL{A-c@e>a-?7AFVM)~8I-1tE}A5u+}c#%9T)!wwRQABWlT!Eh5_0(_Vz!C``LLz zCal0)^>pz(hLbWJI{xx?bVh}S-y?AF7&F!Re0%QMB`5jX->zzB+b|51l2d~Yd7pX# zsjl+(?w~GlS%M7(48%G|u<9&KdT;~MQ{+Ab5QHREl(G(NAhy->$bg{%We2dKq8yOJ z6b~Dj=MJs~m_$TP1Wu{>OmH+EO=iVtgoR=u#Z5oY`YI<*v7D?zb&48l)Pka~oS+(Czfy{j-qZIb%JTr-oyjcWr;TpTlTXnDJ@ zG-v=+mA0LDR8_%31gYkjEYpzGke`_e2o-{vmGx6X(!=}rUg9m15w;l=%{qXUGquzq zt*p#R3-OKh&#-hz__{p|LQ(DeJ4XSlAS!_H#@$2z`P|3|uZ$>_t1HT9P-4o`b#`L9)F{6PiSuBe;NLl_f#YMR-y8Jdej36Q!OeHV zKX{Kf3=M%MN|c%!;rTs1JuUBdOizHvRrYXhQSncT-<46xQ_xPTYic=NGw#s`40)eX zSGlw8Ua9#*p|ooe(NMhA05C(Q+1WlXUjiv%xK&ue94|q3wJKfo5c4*=YMnkhr(fqH ze49*n?mE~w+(JxLxw|?U8J*HiJi;qwec?>678moGYhDu6tWwehr6m>4PUWsHznz|4 z^ZjALwhq?M;w8kP*ROY?_q#&&IX;6oLyulza#{4!$)D)hPhiL0ny4CvWtXE2`p_h3 z)hlhDRQ%fQ@4uU7Wu=vReHx!x+~B3e2Thn-m0gf{8Ug_ws}MNx53#66^ewISJ-p{u zYtS$Z@=4GT!s8C)%I!P1ug7|8@H*NB3yWaf>^Vg)LH7e+PHWHBPP*u=n)mIyi?+)t zX`{g(R6c(`e8{!1G<##KQk0U*VV4q*Af6td(^kR7<-zOo$8a-LUsX->S`IRy!+fOc z&Wq3*{ULwly_S=c3vwe9TDqW~U?P*~AF6-!o0yXn5}fyzfQwW%b1)PYwNi?M(E7O}QNP_QW2>vX>yHVKFgz*S5J3dfymFaE^AjpY&6=@>hA;VL z>?{l$pw2{io{f%5;0F`NxH&F`xQIK5t5yC1ivk>l7HE&%E)z1PYC@<4$+53YG=k7r z8KbA#+eRuZ$tKJ#%z$SYG%nfZH-l0zI7R_j29q=(6DMnfpl-+zdMmH7xxRIU`zjTd zN2;jTG1D4c!;Bgv4~b^SN3{tLEpfbH=b(@i2 zrE;|LJRC~u8d7%O3oLKy6;g<3=0T0A|-&9pp{6$~Y$6F#iaT=kJML<(iL}d*43{>jO`pe5_S**_UBD>LM<2B=YthiMG z9{@M|Dk%wcD{u>3_pmW3R~A=gqnCEAth9mV8EWoTGH}76a34QZL^VF~T&*T(zPw#e zB|5RItc;y|fBVv1CnPy3vQMx-RPAz;8+tzTeTCB8PWwceFM#LMdIwPoO3JE0zoD6! zP~yIpP$RK61q{?Gt{-sRa>sDBbeu*~UZ?G^<#A$#B_)#{3xT74_E5qoB~9&cEiFO_ zDCsSnb|<9#^B|i~75X$Te#`i_Ia1ULRAFfg*y~|qLRV7Mt-9i2un)!f3pvm=V7Kk02e@j39j)DOLDu zu!Na^daT8tN786(#mHRuC0}skVpwP>Y{0)D#ST0ZAhcpPpT2t)_W!II2|8wlRS{RS z+5;2Da*BQlY&Seru_7Cl(3bIGz`$$l*ZwqH)?F;^^-Q~+ncs~?5C0q@GM8`_ju&NI z8TJQ+vhiUMLijE7+u_k+Wn~rUhJZ(gT@jQq7>$7QmBFCPl*r57I~`7h0dPOH7)7_Q z+UETF`qHMxn_)vlyn`F$8v%{4#l&eDpNc6}etLGMbUrNvX-`nhO?Tf5Y>))4&ESGNl*iM6 zNUHuncH5!sT}uk>PR_2t)+J<}1!d)f(F@vqr)iAqN1GRcVF$t)0?@z9|9}&c_D`jw zq9Q<#aAO&Kt~z>LBY&ggf6e?xMfv1Ou2Nb==a!zH)7k0R7%U($$)7vQioob5qiD-S zhaNULo5ETxHitD15+`WXwE*@3^YAENrOLrtEit`lFHYE7dn9UZ4$RE(oP!#`UIE|{ zK<2@y21GE-#Fc(1#gG^I<7YuZL`WDZw=?b?Hfd7+Yv+7$pcwqrObnn)xmK#Tj1xU1 zm8!6+ukW+A)1w5wccy^3HtAv5JdBKvEU?`~(cTYebY9a^25l%>IO8gK=K=eg^Vuemu#*z!chJ23t8@sZxY7ZvddfCAvfpLE9D zAZcaBV0#502nQUnHKDt^X<;ewIOCGux1R}RmlM}F)_ycy|A>{R`Zf9Y+`J(pRuPP- zkT9F_i8s^kWx7422+w~?&R4MSXexo{a&`6ZoKB3A2<|J~7{&uE49bMfUSrmwKQb+W z+9iX7fG=C64onU{i53I&B^Cf0yTy(K#eCc!A3La}SMc!*!tu*1^ITN4I)8Vm;Sq|7 zxyu+LiMGRs0&xw|aT$d>BkfUFIC#jR-gtLV9s#|ToPE8y3o7KQuP<(3zIashjFYqC z=~GBA0EUf$Fa!km2t>5F-v>L|=nwN8X+dKZ9{kQ+sqjFyj}oo1%_gi@SUs9>INIld zV>-NNprTVYra=f~!%Cf}QH{m|9#s)x(K5Cd(R}aC99{$5smH2ua_Rc?Y_i;D5yhaE z-E4BL&L|Rg-Dcb61sl##Dd`$FqE^Tq1TGvYxY=cW-s9 z+^X#yVX@JldRO-qsgZ(EZ-t1=11O)8<$U}ITDw;dPGNr$PahqFkbfXDV1=Vfw>C5D z>KOanuGd0EW#e4U#DCIc1cp~Yrdin8%i#Gnm?$rV2W*5GP9Ip9SOF=K0D#$4OhC|) zg#n--haj@JE^1n`nsL01VCLhih5pywvt1@FeVd;(>FFvN-c=wVKzK$3qLp{f+PrLR zoMnq`b%py5j1C~jfuBf%HC_U~8~OY9WmGiEj0cWKMnXT~6{$dXFHYl(ZRe8Jrk>v4 zsk-U<_S*<-Y&^R^Q_24nk-vDs3Y;UTm7=1ez&i}86$tuETiZW4!n%!R`8}Wd!xOW$ zt{iMv;V(ezJ+T}SsP+W+NoyC77f|Dg8yr+GuKfCTLgOenbxA5}-|v4H$u%fcf{8RP zt~Hz#^3dR&ihASp-@=<;?}*pd0X~+l-uu0?M-JA>=z0aiSc3!BG@mY@c z3S{aV6IEq(Wo2*4w^hmufWq?V`vMtBY<~vt^SON=FoFATC63T36NZn1QL|7H7FG_i zG?_2Dx%FCb9S+1sbj};O-Cx3tYBc^BpJj z>rWB~J>WD%55ZZQZDy7OUlzi#S_tVB@=LXtceke5b>fn0F1*r3Z+iuZT&rBt_{RIz zJuc7c+GQi){sf0d*RIhEVvgXg`7Nvf3l2HW84d$*NvR+_?ddHrkh0RG%CkfAbXUwti%v zQMK~{E#g;01ClrsyvML3LwplZZH+oRa9AY?p|Tu_sMfx|;Hq{K7@$R%Q!mLrGlw;YGs2rbI4MOCNZ<40$=BF!-SddCEOMo5W za9{$aHxfDl!J4n%pBjU_2i@o50!nnt1_mz9FW9$6p0Pf?i-sW~Ce8)5l0fr8l*BCz zbWAL`O_#^VHLIK=8zK9VR+Z1=VyPR>g}v2=srmV!dw^tuijmZwn`CX@yVLm&scfdB=Lj4@1BPFC0-Qeje0 ze%JFLw$*0~y?!z$2fTF#K{7k#uv{|nT{>B-sR2BFjoI$=dFTHUC3}xnbaCofm*7Fy zeU(*}l7!h!0Mmbn2;kOiIglVW$8mWweR<3A`T~F@Z?R;U?{Y8YrjPd!Z|=&?Yh5;6 z0N=Nu-(Fk4T;^d7n}=gM1<-8*IAXa9FEKMS%gO}v!^48S*t|#>*9)F2;a0mxqphVAeLxR>?SB^f(s<^_dwyC}coJ z0^x{Bu19y))>66SH3bl?3{9$)#=(bq-uL z2sJdc$zxz*v{7HqUZP&<1TGJawGe-Rk~=}e2X(K4L9pSb05~AP`uAXxd5rwMrP$Fb z?$Yfp=3NawkIQbysYlX9;F5v3xrWuE1JzPU*nRNefsH2EYe|yYQ$Eb>U7e8WB=jub z8wa_h7IQ?vlmD!(F0Uv^T6w?aptO9IB_N1}mFeNe2Hu@!)7ge=&oUO&k!dlBfSr#B>C!%a-0_n)BqR^VRaL2@I~>xOx!4@i z!o%e#+Pi-P8gN(Tr|`&_ih}Ii+UDlQdiLi;lD}Jy4%W&)&6KYT*OZmvk)UTgYoBjr zkd%aj8>l{Cg_Ek+*(}1fQLZqMd~cDLIV?ox!OxYXp#jvj?A+qU#_Zytl4gqiI(|=o ze|O`}nD*tpdmlf-Nuv4UB1&8z;JN;2I*6nsU0Q@DmhvXyBq>Ez`2#Q+Hgxc_J$l6U zNIUtWM8Ea!(-AygHx8<3sh)_W_}l7@K0-oZOiZ&y(i5WUT-ge+X+y^d2hDLph=@R% z09HJB_ZptHo-(KgdgLsc4haZyZB6kWk7(WUY1iwBv%x#u-gh(K(pVukWhOMDw7tug zV9u@|3%cbtK@_wZO=y~YVj6=63Nz%^5+EEwpCk7vMqEU6_ECvS?w}D23^G)#VCk?e zSKF28*LyB_U)5e8FtWN?&gMgBuBBV?#ro~q0N*p90-!Q1SF@0R)f^4M_a~cG^lam) z!^855V1Kc;cPuI>@RSFLj8V1Z$NtVd)Ow-J)LuDn1RU2Yrh|DqPqCV38;|9B} zt_e?(mC^V3)c&W~zv!GHc<1=Es3*{_fpI^yZ0hqRA7nTvKA|>!@wp4lI4IcTL zoE%vEUkM7H9BsW+l?37$r*YTT7BD`D7|90x=at9d6n9>b+w@h6ofx?*^KJ< z&0A<7y{vqK?hnPBYD(SRsjOjs8H=KIr}qhmjf_pa$pe3Dl~+`y_b5M#O~8{vY#FvM zP*xiEnVSJl1C5rV1|4hIfx_s29t)7;hJL@mTUsW#j|U=Y%F?~g>GNA|PZ?;51u<9P zGGDG}BVk~K)baDzp|kSxVhTnyhTwp|QGZ}S7?;MZkHSw4nlw2hqy3)Nr z+^*cwyuBM67(K4sxf32nMUWGcQeg*ymK7&RxXu$1DFd`>`uv!eTjVDlW=j_xV z7pWNANI~J3K(W(1mCyos_K0i&|gk50b2WSEF1630t`m5ccPJ>BHW zq|Y(zbf1zwC#mt#yQd1af1MwVjEz4&kizbIH|ZbX5A6nm z_(N(mZp;{4V^suwMuOO%irt(AHKslk7k7Nbr3mu9y9*8({mp3)c5ZG6HP)h!<67q7F<|!;I={MwY0eM~4TK6_!jk zE>N@ysldX;szgA%&ZeCmvpcPq9#O#P?c5F^Hd<7B1F;CVno4$u2jJ3Twr z@?A_8W7zO-e2rLCtE&Z_5Wy$I1JM7Q{cME&d}il3Xvf-aU>6Hx9}6SrDa~q%al{;? zXg%FojuUGVu4(la5(2WzI7wr z8fU8A-roguOCbC=(!NWLN`_GJQwUQ8tYybAPJ*iP+S*9|96`_gl_cg#Xlca9ZvMNt zLBbS~y<0Bzz1Tq#mqD|aA3owWC^p%OwcyH`w=X?*G z90R`%1lg}0tg8|e7ZZo-*~q3VG~V)oU-Jjr7j1+$k& zaGI15FJRNbGNP6WrHY?d{x;$>{Gg?CJv`nK@VJ7ts8{4cywJ|>4p2_oC8ghTR8aEx z^UECF%*Q|qD07zJ5|U+BWSPy6p;+%Z|U zy4)R91Un|g3wnM-$6R?AQT2CaL6{sDwq!5#g&l)0u@@5GD6E2t z?u^;$Nv!Z#9~w&H4&L3T*G-UiM4>^{GU%!r(k5AOe8xp>tyrG4Bok#c0K-jNQvd7M=^kZb~dtetq2=~(5oIiZHXTHW| zr-3q*5P37`>42{o<>iadmi^B3Ii4J`joKx}dYjXhdE0E6U%n#mcYo>YLlHs1{Pn+B zd+%^8`~QDj$POWdxJZ(Dg{CpU+IuBu9dh~S}F9sub+hUdAZjDTdXDL8dpn7|OUM)R6L)1x6 zj-A~?ePZ{%TxL{M`wLG5R#bb6nP{+=Df?O*!G_N)tF7mM5qz;e? zeVR8z2=KPccFiXBR8^^dU&`#KPm&IsUb9*TXdMfg1f0veDzaEzPsPYzDh%ydNU z1qV-z6j6q>zMs+A{n-<=V=WX`0mD^7^w3p6mBE|I1~*D{=J1;|0@Rkzvgl%XBE(nM zH!fD#!uyTI_xv!(hbi%-a79u3@nsmKwsaox4Cd$ak54EUs2hRRQOitUR=%k7`=Ck?i>wsLJTt^3f-ofE2?o1L$AFT@fI?I{raQPQ^eyMYgg&oJU zP;vM~R(W_FK!Z|WO4fiegQ%F6T;H!>iq5VAHRaJO%Z_JzD_-~Ieg?7-n-qHJAR=+m ztK$ItnL3;G8!0ar;V|cD;grjH_DLQ~oGyPTa@tIBnGMgc`MkVv^0%;dp8WgROVHxN z7!u2HUpYEfQbKZRss5L{(K+_qMuASfs-dFYWUkIluZoQ>86Fw@f-KyHu@Qj^tSlf+M{~Uh!^Np9Eco-S917)j zoRwm7DtIPa7Z;ge1-WI2gx5TDr#ytk`j;`s#Ro}TW|yC#`Sn9x6+>cY7q_&&RvKFGBIi4 z;gkqX5pX)+`IB$6gij^(yKg@F)-6br&nUl#Xv1c_P|nWs#GLI7q0}o@0koi_9c6&G zwh__19w#dO*_bCK?lK8Qc_ZX z2}io)@zHx+f0W3{KKI=lDo{`XVz0+g2WWxB_bbgFY=SquO4_EJpUZ7>5-?z!v1iV8 zS~-L3ZkvL~dwUr!hu;hgRQgxaF6;)^Mj$^uTTSh=A}j~bKZ(ezsbEP{vV&FLsNBBU zH-C2tRKm-%f1-h(KZF!p)JmC} zjm!CcJxfc1&sL*VRkR#x?=wnmVAmZ$gHsLc+O}!bzO$;h6^P2pY6f;~*-!F~PdQEK zcWo2;QUyG3U`XE2F_KF;Iy$|J{j@fP8kqolwVm4fSzoyZ12a3@#_BSNserSY$!?>k z|1~nKb=0K|E2yMg5|X`0n2BVn!EM5~Nu}K4&N4p%wP1qXhQ`6r7agxWRnYIVvoWF+ zX=}-aRix64Ta!~$0AU+PPQybH0>&W-;?b#-D3Hkfq)*o`;vr1l8%G$l!p*JowXv4b zUe0Jq#KQx8_a~43xsAKvHulWj%N0R6X^%D?)&O$xv@`kzSJK-R@yKCBY926lUB!pG`%I&M46b9N1u~|RxoC@q>jZI7t+`zZyqw*-Vm>M4+*FlzXKN=gG@aF0{ zcCtO(0FEx^&f~x9>);-Oo2p8Ik)9=Z=(mQd+Uok+guMC}r99FGRhl`?F~~O-`z?Uf z`DWOR!NZy5hpiT3=<52rv-2~8y(qbPtk{KTxy+0_csQFu)|6RKmuGlrXk-{_^(=?^ zm?4%W!K*FI1zbM{28f)5YQvCs1`7jYr9e?(*c$*q5O@1)LlHadr0*LWuL%h=(q~3> zl>aK2(XQkVel4Mq+!#5ivaAjlmmlHdMde_D$0)NMZTct;H{<*m~J!cjPgblj6#JE733R^@maqh8DUw7A) zOPQ9oih%lTE=sODNQC8#DSm5MscmijO+}g6c(olHSuTQ|K=5Jivn`hk)Ba8t#Lmw`6J^kkzEtRa+2^F= z!B~xc1ouX@eb3a?lmT^0jIVD@c6JnvN3d2v^Q=F;0%hWjz`;1GUjqZyW@f=7gBgP> zI4MHOmw3A57qe$hu%0pkN&qJS91x2i91QiokS-G4c=>ln5% z$@%>qNG|o=&Z{_$I1V=@**F-9!-f%YBqflpwM^IR_30B>7~;e=JX5h579KtbK`Q6) z@jdMCpQ?xOA<#R(SsR<07!=I$tHJp?-P1QupYl>!xF_=!RaE5ExH!H2EWCjZUx?8xD;6P zeg#j~1mWUnH8_`Z-TTvD=R#RwCQ5>?kjJ%jvj5t2f6^p z9~I$uv*@f0uEwFEUsrKTx2r8h-d7Y^QYKEe8p6y(6(?h}s|V7_u#KtfPkb*tJ?kbX z5jY+*?GY0rg`P}hfItln7wq&Bk*Q-P26X*!gi*{AotB83eYNo<{r_&Qi7dhco#v14C)6d zdI~&@pYA|V!SSdu`J3>epm!7GcMs8B(A9>?cYA>mi3j@suj*>)dU{tom;d~+Wy55NTg_!R zeIiURA2spA{1K5-AopzM9FGH(t))NYg;cnVtQV`Fudf;fC1}s!fx@o&jRpE1K>k_-{8d)w6iGY`4@~n>w zm1AP>-pi4qAAoJyb5coFjVU>a#rYsVqb^w@}3%OxA{BIzUk#>>PJq zE7S}hTXTS`jSnha1zj-s%OL}#n_q*Yi}t6f;bTuWwu(=M7UGDlgZ&rN^^@NRtgX!c zPX7H1^vKE4Nr6U`;Rc`Fvn>C+*N`ut2ma72R}(b-h^LtGko`7?Y0h!84=y(z26rn>pHBf3MowltS3DUb|~et=g@TaNKrcIL6E@bb}EF-gE5YBT?B< z4K|+TeK=x9Cf1*;%en;CQ~%{ltt@z{}db5Z9cB~7_^>J zN3(8=MaDI5OANkrc*M4zoP3PWp%my{p1!_Aa8>TPR@4e$f+U&|2j61fckhXcr*!>! zazdiRjYt+E9KidQ-P1ppl|lE?;N?-6Pi8&}Sk;v>;=fRlif{|Q$m;JFyaCpOmtP`k zV^t;7tO!4ljC0>s5d#(7mSe3`-j^x}2zE{m4g72+z`Xk_@AUND+ITs3u?m#JAkTv2 zgsh6+M7<==@Wb-v-iWFWq&6O7|Crd)WoDtt-&aUs3mxH0U`EgVbDI-KCHL*cWZAQn_a zzs5P`czV>rK>wb$PgLmA&b&a!Q6)oZe*5SNjqA@Je}*C21nD}L5k|eRAmjhzc`WM_ zhQHpryuv&cQC-(944}+$QI!shE`rf|dv0iLSkP@RH=}NHs)_a?-g9Ta`D4PhD zD8L{_hizNP<3urM2rjce_e+;8G2l3--M4>$P>6cE=6-|}01rWI14j$9&9ZEVTbML^ z_72{9FCgP4;Muc!PWNo-thc!Z=K7^jPZ=-92e`JJva*TpC#{@`a!Z;yP5?5yraeH? zyvIKYG54bHPc(}L#MJKi%Pwd%q}1wNAFpvgS?>R!60D;0erIm3^~Cw{;~K%uI=@=t zMm&?$iwy^c$I5w%I_X5&8TyXm;vhL`XPdX?eR};m63=62VtQEd^-zPe9Z(&}>jrYl zBl(sWXp*5b*yu3L1Fl>8NljLb~q0#VBGHuD&9n?vFrraNd6vNmkcD+Tx> z?77%P>r)RfPz`5GOTOV_;|2wWVh|DaFB^lY0{T_z^xJg2XJO%1ceskr%llGT=(Mdj zT=6?HGqdGQm)7goRh2b0PL4mP{=OYz8v0Rc1W)SJ29MU@4>b$NHn3hjjL0p|GXdp> z4$`MRfu6uzvI7{r|&uPo0865@J zs*oOEXvFNm?qGM$`BK)X#6wm)r3KPK1!ijn7Nxu)hLwAB+g9${)A?D5>Pih;Jq%QG z7i%ksPOTtgSpG$7^o|3i0Kqp9Tc585d@d3A!*uONIX^Nlyo&EGonF*V`!JjDFs= zsqiP1co^$u%eMSjUcnM~iz>*x(qKh{=4{63&e>12U)%q@>vmArkVlYUHFm^pzA75Y z@VJ0Z!lSdl+xkLbn4;lIU(7!j`RN{+E1z6Kv@sQN0BPm6fN}ZwOAy}A{!)AmXx*pF zM}m*`mp3#+B=jM_YpNF8eNv-#pZeO7fEK9FOGZZ~HP8OWcW_@aD7&-ikf)TZ(jjiB ze;G>PaoJ1lNC}#*m7Ez9XT$m)lNI95s zO*$B0%eEBkD@mtY2(`7Ux^f^|9GrC!@0Ei68L;tZ4EL9&`L2HLtqmwG4gKyQ*0bW( zkT+h=zl@fV{Z_2f!K^g%uCk#Y`^;GDV{Aq7nC0Z(pT+w8$r~2-_B!vj0G~l%=~a}~ z=H~}%SAXoA2lxiSz4M!rmhR`(pKFsu=vVFdQ9V&+-+gV`TDv^FL}1N*D~B&^LnFXz zb;8xtiQ|<9(S(pv8Qd*1{T{`DKm%X0Xe5!wExga@5zpz-NhltH_amT4R~9lMmJR_b z`J?L?qzixStg9Hb@xp@lwsyowL7GzM<_78ISNqH}Y3XM#+*~)cv@JLDg_n3djzA39 zUgzO47{dzLUm&U)`i)9C+kJit#uVTxae#$bVE+A$+elfNjHlwcQ6CIVQI~Lf$hz%d zA9X`i=I7j_W#tB_j-S-jlx1TB-%(ay>h9?&5LS)c&UF`w!si_Z_wi*6$4~a*a9+86 z`w_bqJ;Oade!jZ(-r6PznSh4{ND{w)wZg#i@~4lCj*c!USl|0aGTDk@c6PQhC@R!Y zT6f0_@kw3v0$HgZD6CLbSP-pC39E6_hst-{F$tV?*G@AX}8Xqay9 z!u{KpqJQZmW^Tk0Rutbdw70>NR^c z1_b_)v$5f{-y{tU{(Ux!8FlIV!3Rh=OV@J>-`PK3l;S<$+N8OKGfzx>NxF2PBv4oP z%wR|3(hcw3ya4)m4A|7)WW@A~)|m#t{9PZ9b99HSYb`0m3$J z5t5*DLw0Uy%4JulG$wA5yI$jZVBS}OedOCfYo zqlOE9x6=c#9&wZ6{vAvknHV3ZKHqx6PLmqk-TnLY@Q1!WAv(~R=9A^bUTLeHop4v` z=g88w-6INk))ljVxbJy4G$a5YzMi7dJwm92MXomTA+vO(J`LFw_3sW^lz(pC(w{|V{-ecFMroKHkIM%Vb z>5+5lWjNLuJy-m&I^+hZBUWr{r>0sK48V*fKrKv12-Ui(s_NdXHI=_1hs?Kt)gNW% z9j{I*ZOzW!j+jQ8&+oesInF?I10Vkc6CFk$NF05X%tlTDUGBu8!S5}hpJ^1LeAhIO zeS{NrZou?^)`U5;Tiz85LaK<0&L5lgPwFdeHnqx{!`=2j=K$r zvU7gS&$m;Unwkds{P?b3a$M(o1EcH;JCb0p_2gM|CY&?7Z4P@j(Uwcj2+^Ie04cMfFUoNP$dF%9K5-A2?G+p znOWIeIl-+$PBaIeBKJsP{3;DC^;f&;>3aX>1q+W@JVe4v<|wgJQdTk&2KXZ!OFeVfL(Z zcQp%^&X_!!^@A`NQ9^@0gU;+6m+I=qer-6fxgME3N{C$QJ9cv;L@!oTbId)8bZzye zq#%dWkjAx;@xfL9`0_rWbMSqBKwzD9{rK@_sorhy)hlQLXl%TNgDycHBO{AXfY+V1 zp^kvvg<$jdGZ|S~tztdrx2q-=g+&bw1$6+YcsMSFCf5mqt}4A{32-eBlwdAzUv!}- zgbN!hCZ?8`vWL)^yax-tjAR?=DS_bx!WV+zB{E(z5(;$n_#mVT<)JeQ9%SY)wFqk_8>yUm%#*CGGo??{V zcBTpy6{*sz*F!^NKmY=NRZy6pl#~<er3A+RH5tx&m=p;;&h))8<<<%!%cjpzvAVujHFQq->pfqR{K zaNu)iXUqINsHgmz0o^YL$;w0`TVy4D`grgy_&}d^3nF zR=`6@h}#}QrjxZi)>engDY@b4c50NSA*rm6k$uUU7yR1GMZ%SCHK}coWupxt3dL4d7~~fEr5@WWIgQz7 z`cPefGbQX4IrO_*w-^L6rlxO$k$>kFzX@^@$6dg^Z{*|z%XYjNHa6~a^#T>dDh$Y0)~Yu83_bYS6~oy3g3_IT3gqQ{J1B}^8=kJ z8YI83)PXl9ldLFKCAocEQo;eGz(Khwhua1sRR@O zp5Xw3HahGd?88$P(78viUrS_INi)Hv_$WdgAmS0T-<2>WuwR}w@K{ce5|ZrA9IV6q zDL$p7`TDiy>*!k7*y;7Ii&9X~Ga`uu&IrTpHQ7L94=rH;bi;FM7Y)7L z{9TJJ8lF*FnpkrRf-usjPigOp{~aE-=YD)w@Qzp7hpgvN%%=Mf5C{qy&O3M9{?Xcb zwvP5pPWCkG4?pR8!!g4c8X(S7q;ZX>>|6HYo>6M@`C=ltlpr$_Q(cSSWq9nzJ;A&4 zeW@PQ#AG9r{j?EMxm;>`)*N&E_73*-jLcC|^g6#-=$LTwD~gLBI)%(5mhaz~_y;#nShgY8~P-&<(+G)Wi-+t7#lJRsA;sToXfw|)X07@ z&oA0s-@wPi$IuUfBd}Rm#GiuiaDN1}sBp3u zY1YeB6vKSs9~b})2Ot}Of3(lH!@i6ZhN#pY!LK!?+OQ|RU5fZtPngadH3~DN2rrcs zlay)|krx7%TPU}_>)8V($KLtdb4z`qrI3dW@miiFkSYgMo$wqrEj&0twM<9caIM?Kq`0x z1FfMUb!GXe`kPXgVs>VB2@~`6=H@)p;o8Cix0f%A59JJ=zBza;9P3%-%}$+L7z&i5+3O)$W!`YKoTftKE|H@4$T?5rI0}vm+@b0gCS- zk+OMyd*<2F?$vb(%@gnYMvS>&8v%>33X4{?z;!;qrfc;@4IaS$mPl~%8i4~U9Q217%?GBwjc0lLUY4t5_FLQJA7mx<;ADx`~ zJr%D#O+I7ZEnD!3a@nM=W@(veM8WraqJhwoBT)G5WugD1q8KDtZy@Q{)F?+O4*(J* z`HVL(DWGt8^X82%=}XB~FR)?ctCWAv&uxd&N=R`MryCm`1$5FAm!6s?R+=8T6*TGE z>I4c1vVQaOWzz8Qz;`jIf&*mrU;O;rw{Klag@5O)aZ`mLMP6#eMC2CYT11^g?Z2Sj z?)Gkt$l%~0Av#~TiX|32sKkk|*FB+9g4wV$nHFpqR(wev0oVpf!7`uTsi~oQd+U+| zx*Qr1CdoY&8F9^)9qMhXKfje`x{g$CytA}Yqv2M2&?R$<3`SZ8hTr?IUaquMOzZD!A6F6!?Q1tr;S3C zM)){eb!Ba-&BDaW%I;pI6v*5V%+UTR1(X6Wm293oFE4-Ro01>J#Srs^rhVL{tWB#e z_u_ewf9S^g#=+i>w0eUUBcTCw;}DS!_s)htAYo=^jv~%wVTBG}=-NCNm}-P(3>?VS_U3P%Jp-Dq-xwXO56CzqUZQ~kYhWM_ zHUVZPL1lRFHk&1zUm?y zjRdIWGWx@xE)cCW#;1Xn2*bO{^^Lx!CK%(O4aHfa6*Tx@SjH}Pgn(Y)4eKv1Xmxc* zN=xd6Z5G=xX%KU*Fjgrt4Ylf*2-0_WO-%@E&7kV+E{AqFWo|ZZjgFtJSGXta;48EyK&V#`0=yYxTvzxMF z+D+nMEEwQ<{=6eQr?fX!vgnzVbTx2$AVfA+Aul2FYi89h57g8BB+qzeX12hgYV!n5 zA&fGD>0xrxNp(%CfFo?T@G11^B9gtEQ@k+&SOVpyRJMG&(Vix}Io!WSOdnAI5ein# zE9o*k(yy6r23?*M!GreG^}{Pq6EoiN`MIdBF2b=yNYHI)ygcnXYVk#6CVgk(4Wh6% z4+!#{p%v)yfs}6qr2SXcEIwT<_OurP`cVD>6-%TTTOL zOhCm4m}~ZsG4zXz3N~6r_&4iadqsI151Zuj=Mx(D9qim~`PWJkS^fUvdZw?4eZ+Jt zzCnkTm%Z`R9D*Bo5PF;GuWI-D7RX&v_xUwJGpos&_xLl9sRw)JJ?|P=k)gHL?7|*s zkC9%*(owe=6lXLDVYN`Ftn7u|oGr=|!7X*$`C{(@VVwC`@sm&Tkj6pJ=6sjg6fA`) zLPE=-PjUt|LHNN)O3G~b1%dke6fjKt=UoFIKgzO=bWKq5-EN3aPZp=^|1o6e>PqF6 zR-Z!c-Slp$^+sj@eowG7eUZvTIzo+$i_=57lrm0Axt9OAlhnGsw>)UmvYz)d>w4?b zPKlX`q1I%*3GZ7f`vw^D;(Vn}C7JC@#N|TK#LPCN*YVyBnX%^0kBI?%e;Zc{^E0d> zy%_T1wRSED!ICF8#+#6?m%{~jTn^cOKiDC_;otALkKsMLb2!Z&8UUjP;KoQi-0P@- zFXA=3)z$fH{Z4`sL(ud6u(ASFA92@zQIag^hktYicjCbZUDMMGKN>N@z5UBG0+snj z1GT{wn2A2{Z0c;(xxgv?wtU>T$zQ!h98xWB-~(}SN7xOtuJ1qpjMB4mFk1Sc0?wK0 z$B#idh8Be#$&<^KAjT$Xjqy=B3+w=~%>i=K0O!u2!bf^u*5~I!NX3PysAp4?pr+>Q zT<5klw*8=;oe@UX^he1lPBSozJO*MVa^ZZt$ioeKh{t~Yf?ouf^B}d=ls{QIi*0KI zfw;ST-N~u8UMN|1X?|^DWYA{o{4hQjl^ndt8uZfB_2)&(e=p8w!U@ahu?5&Sox`{- zr}6O~eXZo>j+q#?7rws)P;Mgzn(-7YdDLISjfms++ZT|4CK_<;j=7NH``6f8R~;N2 zFc6@I|A4kon$7lYbB1^CyIgFV%3Q?c`)+9G#u6`}yPzy=A7j z;gyy^#{O2TR;9v(7=9q@IrLFhx_JFZJl%h-K8?HaiyRkc7cv2-$dm{xm?EM3nvhC{E~3)h{6&#=O=Y!$pa4uNthaA3 zYtzSe!4TyW+$A-hG1df` z4`0J$f(gGF_p{9AUAT)gyxq|z^q{{JUwu)>~{rUNXMfqUx6G6OJl)0jOgHwC|HDNp<{6Kw^BqS8ZidT-9jA3ulz_Im<;T#i?jqniK?I;xw7FodT%d_-#vY;uJ4tvrNlm#O zEY7fp`&Xl^WI^D1|GkmL^nd&lVoV3i`zHb0+t-9HlfA^iR9T{~E=mKSzze!4=+g7h z(UEj{OfI=l_AQ}Cr02#BP!z+-lqU}^*0&}m9k#Zvu9p|H@#0v-@HU12H2_1v>0+%X zFBN`R8>oemOYA5o@JFjOzNAQLAo)D@*0jBo zpjCB?g?$tJd>|*0P$EqyFyQBhvW3jOVTe2zbw~0t19NaM+InJKVk^i;UhlIlBy+n^|a8?Ob$3wFiq_*+uASUr_ui6TuUG&a_XK>V8sq*q#K` zO06Hk4QD~dM;M*7XT+Mv4tlhGiwg^x;5Ug}vj))@AYD<)`6xlgw})y#nCxUotoun@ z714nEK@`A7PrteU?FPx_%SC<~S!w(e5*ic~7!Ysj`^rdps zYfmV4VTP(=x`EQIz7ysP*mnB@a3hn=86iJPbdllp2#73#Zxghb?|*!ZW}X=Rn-fND z{`8hT4=CP~&W`43dQ**fcrtEHE~|P&e01vKA|z4)__~)Qwwz}o=_7{7+TGd#2a-j~ zZMujTa(5k4Cx4rPql?qZbD0XS8PZc0uM7Xf8@Qu`ni;*j?WHHm3W_ui4v?+Km3d~) z6ud|V(A8Af@TRp8er0IBOSh_Bhstla7jtMiEvsH3n==AHsccq1Xqjn^A? znGqQ z!%h^}*p?uR8PnETR#r1MwoWA*H-;D2-u-;0)I#Ftby0bU@Mvi8kY+kR=wcUTYiVgg z_Y`Tba@Q72ndj{j60?ig8_q_3S4Z^y@1LLccC{yFJ}~ym(F#( zW|wJ~qT0&JoSMfrm+n#5)RY|@$`YP3MIg!X$|lVoa`y5I@M7W5Zp=pTy|UL+;-Yxb zG~XsTISCyd;fo*t57Pw(4PD9V=2{mxC=tka@B2Vby|Q3^Rb;`zx%BK!{2KK&tvbhR zI~!C+7@uJfu8g`}yi6%>}OF;HzlAE?vXlsh_XL*hMe=1@Of%lg8{GMp=4 zNh|0k#?sr@_4s(ZO=l1D_Z%3>fg;y=GBq&7UN=AKM8)PVr+Sb z1au_8qc8jW3DKcv8pVO4I2eL~-*Bi(7#hBI;{hf` zHnuz@z!RVT{q*Hauoeuy$$Bg~4-n?rR{hkJyyD(ai_N#MW!>%F zwTa1s?MsOxJEG0Dw&D!&KW5*F6Xk{U*zazkSYD+4{0Vy-45B8n;3 zR(~xSgy)#~S zce3`L$z%}(-qvyBbqeAD33RVF%t~<|-e+ejcsCISce09Ng$3uk?61Cg>SJI{6lV;i zHPBmp$oS=JNYsesKkMgQJY<=Yn}UvniaMaB)ShbggP#>`P1F(xTno@}fqQ&wSwk0H z-V8 z{6dWF1Cr*i?2wSMLnAB%%GXiqU}nI=OS3;qf9aIO3f9K)bw&$OJLYSn``6|Oia^!VrJuys-jUoK8 z9|~(hyS>PR)LcD@eR)#=7O(4cCAou!wW+u=m6m0 zt8sCr=5^ldPkvlcq`A9y5c*sSrH8TDIJOd9Fr!O-^QHYXz37%yH?-ML?Gvr%f?a$G68QIa<;~G9|kJEdaqjv^?8#6 zM7M~Esc&OjQ}lV9uE(rToO^rmPfXnY_KmHu5JJ3MsrvxWPLKtK=_7tyJdW%XVW;or zrf4S$g!bTkKI>@qOV(g}CtX^k1tMZ<>YK%OOR`%f1uU%5va+OtF2ns(vKjrM$^2R2 zUAViupb5G%^AdR~e^KP)eD(k(St-a>g3JI@UqR$)fXst6N<#3c0(Be3^0T6(F$S*^ zu)9Lt7%6&~-4|U7Awtxo9CVQ~49XurGTsV&khk~LiEm3VT%OenO>o+BRhY214y!?W~ zjfOGI>R!ldi=#mWf8_G|{OK#A7yle(KhIudOYH9)Y(PYaz9$Gp(kzjm%8PG?wVl?D zHD6<4VZEZx)Cx$8Cn2y$N7gxt74q@`JOj48`tjl3fe@Tojp*@4IKLd`fO-YNxK#Di zBu3<&RTxGYBBjDMC&7t`@%g@i*)3arN!Y#|-l>#Y-GwxiXRXP&LSaj*ixQ2#{Oi1%vkTPW+5ur2&+tf>^z$cTPdxML z055~{5eQa=yfP38dpDr~O5Y4`c@|@UDwtQ^1%u=byisW9 z=MbzzusH>ZBLeWQ!Neqz@00zldR$x?BO$k_LA$3b7I<;+F{LCB!~4)YXakAKrJ?Nr za66x#aQ_-sU||7$FVMVjGlFssoJlGw5H=Jik6>hH>vcIIG#_l(r+#U|B|uH!I&;Nj zS@2&u*_>}-nZ(fFe?qvo*Pr1L!`#rAqpxJ>#tk|KK%SOMdLhU{iY_ET9I@W=ePF=g zdm$+1l!pL`l1ZtYJlYHfZ22w#sbQ!q`XwU&O-B@F(ZE1o9-_n2SV4UN;x2dro1gin>w8AJ$UMX!1>xXS*HjA~uUqzS zpaUvCP9*ZU0*lqIhoV5~6k=lX6&V|6Ve^S>C=sW@B;L1svA>2zDn+W=r?ZG z&Y+BmQCPs9W@My&sHnn4htbAz^L(NLKtkYXUVlOn4X^Wl0^gEC0h`m0K#1)yK2FzQ ztH@MnI=$Tl2m|y9!tZI=mY@G9CN3!{E(yqd(7zZDO)p%wO*u)HTV>;V{JQsnFx@*h z-MeX&OJ5()f;aSz!{gBP7Rm`Lq8y{clv0-lmtH}mP4`ptafX`Sp4JB&xAYrZZ|3G%|X!_9Gkid`^ z?)+LWV8}SO6FYhkRo>@g?R@g9Bg#d~`GF(;3#fBBTaS`c7#!HD60~_47dtXB2zi5B z4~U;uSXNY&dp@Z4z>pB9^AUp(dPt8zayF-pJikXIV~J){M!Dx4em4}GG#BfbkFO*k z0Gb@SJ?Q#p5I)jC3&12kzlgDC2!GakY)k(6;X@&dR3*=%yzzli^6q)o&n<5??d-ZE z@4W^2&=Nl-anO0CM(G&K%^*>h8qh!e%z|7ehRlJVTkl-iLd>iq#p%ZlMsygcbZiY; zuF{SA{V^~FLG)8s*F-V4un?yb{6`4;x#d->r^}eq#Vb9cO0^ zOUFLRnxH9_=jW8ZVv3;8&eU<@!2MK{(cIS8_sPtB=k`%g4>V35ahbaQnQn8GIGTU| z!7`kAr{Vby?ioMT+|~p^i%5(g@*&1*)Z;PR=Ic@lUi?^CRQ)U$|^9=SpM+ zHr~ejLqNljlf{}j>MM`XDOQQYiyj;VQ2~O)zR*GB5$Em@nRa;lLcwGE_hYL_-w$Hp zL{%nhO0KPok{)Mw4f8G-uVgxSXt&NtOK`91W~jY$^iVy;-=T}@QQb=iAz)m>TXTzE zjRtqxrsYG6NtpD%4CgmpKBpwY`EmE|Xya;w&^upDECaTgk!#1=ACxj?E6UJ)K8%jq zr8hMVXJ`B8GP-t1qKirg20~s8nQ@;?hk;jp{k`q&UEcJolJ%WICp8AbtFQe}Wsc_= z?#}$+{D1xc|7zz%-_LRNEij`di2UbM5@IbVqyL{@aKPhY$>U;R1jUI8F6Pm~ z!kLN=gSWYP5J;4lm!A~b0j&iozf>X0dZDESiX*h;fYbZQV`&0T3!bp2{sm5qDzx9 zNTdq<@V$Rl_f(j}XRcdsjApf|&V^VZ&qHTM|JfW_T6MafI6V#)j@mCRuxWxl9-bNa z6)_~Y0x&SWodo>U%hlEkersr{kjKkN5Q=9gP1m{$a?zo(un~?e7`%9W>*942TmJGv za$2|!Q^>bC%KyBZPTyI?N>xb&latX=X*n1$)HC7|^hzMhVLvs<+6gl?H6{KTf-q&^ z5z0LdB=0D+$mZ3jh|}GpXAr8h8T&ajWg*&Mnf08k{`u2q&m`3+!nhy1{*CJ}sCJ$e z6IcB8ZL;Pjx{0Yt9t-nx)hcT#Mq6+M#eCdz9Jw;FW#{Cuk_O#+T2P9>63doPN>1jZ z>J3&{`EKal>R>rZK~1r`@>iS?0a$!<4<^Kx`jt@V>>bNiDPYX|I4r0 z1?6^XY&;ZrSYFUS|I;5Nk*zIrH9VFHG7P0-X55MJHGY^$5PlFrAd`|*SYjaVjsOcq zlJNoC;gwudJ`52tAXx$ILm<$`Mi{o2 z842;j38rKclHv&Q@pOV9L4d>|$;3zO=g89RpQl;!U!#A&N69Yb^g?*m3(Yp7gves9 zJ)Ri%#lSQXE>i(qDK^#3&_)na2HV$)9KMwobhpPPB$=6*X~ZUnSR&b?wIG67gdTtI zP@nl3{Xpao*Z;Z;rEEY$*N{c3yjV(+{C)WtXM#;;HrZ?k1?=N zwPM3W11+t(M4@N|s`r$lWAz#2)t}>rNHixJ$$7)$C90#0k(d$58^>WvH~vah4P-s@ zE9+o-Op5D%A{nY7V6)hHynBjIo$t2S{KO<3@Wh}uqJ6PIoy;ZdOKFJ# zF)^DNw~rW<(};N@SOt@NW(fmY9u`*?er<02Df`4Z%}1`oVCGPG^ByA> zrzcZar+|PUtZoUEluZ;-ps^7U;O6#4_y+~yB0WK7A;#7>{?$_=hjZDsI_lN^)G)Pz zD@mwhIcV$YB1ZGM5@kj$MJ+9zo?#!EBgylXO!eK|Ol>&p1wBO^kC$K8#?H@Qp0IBf z&VAw}-#k00V2FCKIbKfti7-D?J`Wt_s2ib>H$9p*;=RwsKiSvEZa4I~aYpCsVutX= zO%DmURn2Q0TpXRplb#kRtQZkMn5I_FT|%sqj*iPJJpMZZUQiH)hDM~ZirH{^t`VAW zGa?tk6Dv-qYYML8^Y3D=i9PJKgmnf124?xC1wBJUuLby}Gy37ju6g`;tgtY$_~FlB zDSGGABV>H{G?j3nQl2%NrnByntOEf7x~M<>K+BOMbozD%^-$c|-BpxHd(2~5ZOtq4D8DGr#Qd#VZ1NpSvK&RGBFH=2{ySD7d=@SP zXGo56OiXrx){A8IO%H|I?Twnz&Cfg5+==I9FA$Vazf;4{kAJbqGfG$^*d(BZ3^U5` z(AO&YTv8HOS^3o;>+ACTn#VL{_A*9S?Cdz|>QXs4l#V62{0W3X&i{$&((dL|Z2$r*UIrt9r&3A=7jTb- zZj7pD_lUOJ+abszO5s(Vt7|sH{T@Rbu>F{6B*C>2BHMPFpRdF`^&H7Sn!(7Qp?L9% z1WUKiGq%x^DSCBv6~~p#5yH5U*e;Gv*V;ZRWjHB9TEk5c+(QyP)XZH(H+!w2u+s?Q zP>c3vJ(rc0?E~<3a(pt8=c%_hWRnuyAW;4?4d zyalVFI-K){rME{}8#8v31!m}><^Z;sd3#oe7YX#6ngRk0bPAV>s z;NpSkE{yA_=%W80ZEqP>)%y00A}uW4=DDYOCj}R+hsCg8usf`q`--Q%TRqkE*Uj_jX@qB~$^fEJ2!_tC2`y1dFHD4*#M&pNUmK=Gj4ZS+( zrQtq(hLuor&_bf$AQIkFDPcad9OkEkB;wij=B8Rs=_TU6E~ElkUdG zTCV4*Qo53ob=m3Lw?D_e|LFXy;`a}7a9eVO-vr&B<2$mnF+CQX0jCQ`kA=<#Qg=0? zDkA%yw0#^a>)&t%Dp)iM9v)GXCK3d-25{V1grj*9!ub|1|Io?VSw>p!XYLQ3l&_nO z7Hv=Ub+k2z?~!}2b>AnFIH@^QJa{3*m+&RUKvg~V(--u8e+W$ok)Z8P58(@ECYFT@ z4KonDkY^qx*1=|JG(ySGAjZBX&e_tkSA%iNlh9b|6kb@FsjujDZ;~bai17WT~7!4+V3LhmiZ>d~u=N10_JD_P{hI4qr`St6U zM~{q6?0ys$GO<<^7vgwbMJbWqzpJXQL7$q)@4AS2s&;dJb3Kz1XV573ai!uFHrDN2 zrY9SA4v2)LaQ_p@kPraP!YPYNYmrK-b4$(G*dcXIxcLmiyoc+1p{>I+3?j>O&*AJeTtblyCl~v zpv%eX$jKhp(S6}5n0BU|tHu;Tzq(b<6HxF~fQKcPMZfNAgAqh@>2_P>OQQTO45 zBg3INXMogiJ6A5ZC7CB-+`}V=wT^S;71NE>O8F|co(h_7jYF{efK?e>;b*63#bcYl zhBb_kJLn(h+zX4%(-f#-?HJW+IND$)i5p5tXrfhq@#<-EgS4z-A$Z-he=xnVd8$k5r!QYVefcGF-+rnXg(CfOu8A?ByH3>DuTF_Zgn-VX<5SW5_v2EL zMe+k!64ULNMK7j(c52a5?mV<@LLW2{#YClv`tTE!zCKlx^12l!DKXDBMjm3SsH&^G zp0GHk$IH_bNgOykiv-oD(WJG_RJ#EK8|}yr)g~w|qHwQ5AgdiTa6R}WeW$D=Uk$zy7pM}=_%Yob6dC_9J?&x}b$RvJGz9gB zWZ{ZeFDcYETP+KliXdH-y#$|4(u+h-e za7IC1b@h@peTW$bRP@Z`X0sVB<~%jQY-n}n*;tv|#^Ir>zk>s8R-xipxcG*p_LOZs zJ;tW~{{FLqdx!hT3h{l{mzG7La_NH8D2?yKBJP1&LJxu0jRTv`SyPDpHgHGL+)tm8 z;fBf`Ls1g}CW^1`13{{=jQM`$0t6zhuAWH0<&_|{Cs5^#Co~h+l|1vcR3|@qYwKBTEO9uLX|4t*3#>Rd{Lg}Vi35*F z%++$OsfqC)KN5d18CY3?WZ4;thD-JjM+_0yy#h2S0lh{>2~?!>bH-_l0WELRXyzkZ zBEf$5FE9Jq-M$LRIaqipPw=FeVqr`)Izdwr@3ts4 z$dUb;|5h?xsm9l*HS2G%Vf}(A=&^{f?tA3UN8iDUJ--|DUM4)e*cq8P98EOpR)CQR zO+8*U$3qm(02uF~(caFGBSB9^@59pqt@6&MfrDWEYCD#Wp`m+SjftexsVOO~+>At6 zabqRpgS_fJEJUmvW@l2%S)fjOOYeK%zn(_ii5Kj zj~!$un36ta&~9SJ&oDpdbeV%7c5!~k)7=j$V+|`F0^~ifR9u$&sWGCNKQ^} zc>I!%u(ZOC@9Jm-{7h>J2@GM#0#c(hiZq0pKed$gwZUb`_xySCGpXd~5jsksO$YnJ8xZ~ybr3qDGzxh;NfZ2kizxNx~lm0HtH*VVyPN42_v;>BiD zJZifI1Dq&9jo(cWyM@#Pxf$Q1Ay{(f*4DP?;A6w7EYUf5k);B010YYFCnN+~?s&P! zrCeNjP$&k2!QD*H*BE+{#~*!vLpFB#<%=%{{`Gf047odL{E@O*z1ZZeD?B{abBESM z5-uzTlUILb!#To=P(KNvp*03T|1nYH0xrDUK8FkjXTxi*F$)W!Z#6fvv=YZjknl9=Y!Y=@1iL@)zAJ-xCmEg*Xo zdLq+_u}^VK7Z$2+-J;;BfaL`{M=_Iuj5B1xRVV#B!&5gGmvHTpZ<+b800-tq!#^m{ zZ^GdED4S)DPxZ5__g7&o#(zUh`>3z?=^^0?`NeFS+?N)U23<^=^;X^un?Gx=BEn5g zxR@dYW)M;e6)Qw)NL07eXgV!iOh1?6p)MVkIeYQ@_K+#v-ck^4i0myeZDlm*iuq)} zwDfFn_*47hA8L!~gVcdX=|Z0DpxRkdoqEPdIqR(cMsK=n2dDi)cG&}(E_BmxnK>A47$3xQoLS> zD4p>mhaQebi`1Lzi%f@_fU(E=TU+r`XtF;5#M{-?VKa@LTRa@bpdO{36sDnJe0J{= zP*U*OjM4||^|s{hfPoWkIBfh1Vaxz&I8W8VKzc`_A5I-Q!dsbSs%a;b{E**guUC6c zDpu5HQ=W3US$di!JJLP=G#xmEF0)86mcra08JwheFYX59nY+-mRZa565v`-PR&ch?9WmM;NR?G5Qct> zPh7XM#a`aC>wGZ&f${L<5TNP2&dy&uW1KhY|2fi$;J!xv@j$l4#7N=oyWk^t50a^> zyRcAyO=0=%9VbF#q&kvkVF8e!-N$-&H#du78EQeW9)eNhbo#knOkCW^8 zCrzMQc|OHucU`K}z!J@31IiD$KHefXK%uUN zx!H&J;_xw~jcS623sF_I*$`wzRhXVFSvc_2h3nSF$6D_kvy$LZVKuT>3(Gx|V|*ej zjaF=6yW|%Tm|`G>aXj`R zpx_+*;=%gsuy;Q)1uu6>w;qB@ixsZM*=Y<6^nGV%*!ILY)Csu~85OIJ9S$Qi5qJc5gakdB&hP%jm{P%4~ zRKBY@Hq7{(nLA3qkFbO{L0ym|P~Ha>3BBX3noP6yAX&unew7Qv^~Pg-SXd?&u&ps> z?!+{VPGKR!q>#KP_TK=UpeS4t%||DY9F>v&zzF#jTn{}RaF7KNqAAEN*P&p%VU^~4 z{tD#yU!sKIao56Wxjj=CK_e|xrc#HW9(`{iBqT;3ZqLc)vT?K2P4XSRmjYx)V<0kZ^yz&1 z3oTLM`hcd8Co(dyHJ-}LV;K6ziqltA`~o@?5FSQrYj~sKuID5UKN=6c3mtdDXJeM4 z4G%i3pX`=ar!ny7E5-LLx360LG&%?D9Ha^ZSizj(>V~RK&Q5#Bd$5ADJ2~+m>-6Z*@+S;NxT6#I5`>W z2_sl5Y8fCM!@If~pIQK&J{4^Vi;c*c@7UYbbJV052D06xq#pXa!E)O+wkUWM!FtIP zLK{uG&hR&MYyBK1Rq%olMoVY)3*D?fESgS$3eF(>GHACDZ)CblgZb%~*HPG^>rnRx zd5#VTu%R{J*Cdh>lAX`(_&acs6^Fx0hx7O`jKTd@%q>fY3ol>F$}0T(27@&G;BuF* zQZzy*qR{1NzdtiP?kfsQ3LodAnESZsmu$lEct;T)Gmlgm&PEDiiS7lobIBcH9RH2x znRYzc9X-7~XbcEQi;6l^1pgi~GD^kH*n(sB_=j@afTVEAoP(q!>S+W*kdF_1x-;>T zISA)XQU*b#sHE_Ur9q~l+?dA!$#3qNqkrWGOU?C_sfm+{j0~g@!&WFwr(&l!dA^d8 zsl))veUQgRc6LH05G1qATutq46A`)Iunl8(^MtVm^^Z?po=-R|P)mv07Z~KAAmCxJ zEGAB{xP>q5y85ex^^aU;KOQBY2}c6`Hx)}_Y~hp7FPiS5bTgcPdoL>uFQq7Vo-I=? zA>W8f3`o`D=rj|NPFU!f@UQeGD2w&20RnG|(!aEQZL@xn_(Mh-e6 zpn(8*fXG9#)F?>osk>Nz67sZSYrK3kK{6E+h6k~9IKl!%MdN#4{n^MOylpX*#_(gn z2E?W|SC5UJ{}DfMaR#JID|t0|V5)y^VP%EQ6W^sB>AxA)(Qg^`=uMl&z>64BIb73- zc>PCbI{aOv-|1WkD1v(6DtkIFpv|x-hLUt#wPr(2r*;EA<;{|bXxdQAT^TJ z=OmMBa1d#No|d1CQ@*Wv9_=^viisW*w4&Gf`DxMjm5I%D&W%=le%~^Hg%+WJzr44r z2y^FtQX-+M>MJT+U0Yib5hTpy|Jl;d#ypwm38bffbr=+hvOgOdpZp5uP%--VfYR;n z?}QPBN|4O|?lAK(c154QqzpkWksY9{*sA`(SX z?*AWQ8UO#$nrDV0(6X|4%KHl}$gjwth8q^Eq*y4Fi+bN8+=X^62U*y_qwm@>$;iMu zwmj2i#RY2gV7-E`DG(YvThVU>?;=luo)d$jh@z#Xy!nz|2zWRO3%(Z_&J2%_j|^~* z{Nof?>aK=Oio5-L08-2l@bD`eW0f^FNC5^rAR-u96re0vuC5+%_ptcf)b_AbPgb`% z*r%+tzaA;Ty&W8mxRm%aF*Njd^t~alN&NhRIDUibntkP&&R%4fRzC`F`bqBXa!vo1 zP&U-R`d)MSn5x;1JE$$fP+L{q{DvW4;|V{j3+0W0ae5KrhP|NY+L{G5Z^-5=N#0PH z!_4qsmFwLHzrOcd73kOSW~z--xJxtmIPOsW;{7wC>3VUT!Ln(&eQ)bb-Ip@T^7g(e zzrCX6;{cKOA3|@1Ta;=uMZ-J-6+K#+QC$M3mxtYQAPE0lVEn+fyh2xr%YIFz2vUF+ zRaIZ+<|1YvU3IDGL+}U%V5OMEsXu;(LFUSX0WkB|$9rvk;6kr8yFF~AN4sWat6S}43U55jw_1#=JE>pe9o^g{2<$XL`v7eMQH96HpOI!3zjj6n> zl9!H)NHl7|(EpW7+2J!=jc+*~9>C9R~|lxwsfC zQW|;c9Nh1=f-}CW(E@6V9U0cB@w>8;w^Zvi2&nGkVU1*sYG6N#mN$83b{iXkAb2X1 z0_-#-C<%{m?iQN@7*-?#vZN;NqzZf7mX`*9CMJgZqvJpAccfmMW#;_7|G~rWLU;E9 z5|T5UnmA=15nN~P@4p+@@mT;E75Jl0`o|#6yMucFZa6tKoCyjRq3cspvaqmt)ut%q zu!O`m(VE2sx#il%#_ywA4%F1B zqT9qoV0upKqY#Y(D;cD;J{=wzPTaJMH2kIc)(~S+dnq?w#5rM8!(h6A#1Qpn$3d@( zmVy*12_U`dlN~_s0C$GKQ6hZa7^a8Ya~WxtyD)3u54IgimB&IuvhC zR_uU4A+9e4^y;Z%>9DvOM@Qr7s#tT;hX>QV?>7=5Xol-qEQ=Nsl6{EXS|e{Z5O(O# z*oQP8#2NDW8$9Dg(EtwY-*Q*|+lDKVRrmtOcC*{$3ai&8d6vdt!<_`Rl}a*Sa=y8GxEmmR&W1(|XS`>T z>Xu+~s29nG#PFC7y@Y5dL{XG9ZOdaixet*KF~w*J@1TZ;hTHxqM0jru!!iY@&~)nT z{Cr@BmAbVx%{GEQ>7R&NL>ZD973Jk23iQmW3V6h4oTYR^DbjR-%3F2Q24u-pM1&@P zHduXbo=2Ywvv>eMt)v^Sjm!}CPD*?eMmd~&am4qYpEP2#*d4>K0Y-MRfA|-jkU_o* z5P0F`{sgGd9E#5R<^{B0WSW>jQdlk*nbyO&t|~oyXswj*`a5qDAsJ+-s;sjP?~!wr zMxL9#J2wvv($Af>O}mzeLx{UY$H1^OGwQUDvcI%S0!AoD(=zxOEr%q zmXDvyizeVK17o@PYk$<}vBb1Aw~WaKiPJunRVZM30@x@>eWK@#eS*Nw*?<277@mWW z8-fRN{$WEcCh1X>H%-1|4pWUglx%-Sat7Ak+RE#K`FN%MO@jAH!6-O`?$6%1^rli=nKnqGp^Ji-!pZ=*fnd)Gc)< zKFgth!%cj8Y|TOett9h7_!Rc%7mrilPzOW#2XAWk8AM7&cVGs_e~^T8zom^j=%_H6 zS2U}i9*TrQLYf+zS~4@?NMR-+*=v`EU7OoVEN1{VSA<<5CIYX$v{RKmV0*G=t#b}e zIT425G^I)~d_XgMaeqJgNP+%y|LdhpsSYz|9WO6)YinRX)T#~2;XKXB+puH{*wxA( zW=vpy`uu7|a7~a|2@_fn?6@y1mFD*Z)wPTD^roR*x%KYR)9w~lS}1RHW;F!N6c{*N zX;ZL1Y3rPK7MlW!wYIi)o|p(rRL#o)ElnN<0#e*}QcFv+Uszt*TEhVecR_;K{Wxi$ zf=f$XU@K%@$1)W1BC?|5i(`TGyypmCfk2vB!%bLC2~c0J?HaSPvckdOe{~KYmSW9~ z&?x((r%#!||CnTIu`O6!%0o z4gmpyf%`Z=P4|ut;3I_~7*PT`pw-AV3(0WbrOg_p<>BJu0CkKK-fL3)x#y!63XGiI zy5!vNL9pj)w+UBUW@LnHJfd5%C$98ZXNa5c_V=sb&fM0_9l=;iYU%!B%3#c{l zhezNoBaz+~*_%?MaL$+S(@7(mGw~ zRbE(qF`HLN_CXR=bp8uV)?X`BRpFi(~uO%}Oh2>P7RI16OtANF-zIy%70;+uxqQXPp{a1^f z{g1+v1?RT5wyVp_UH69xVqj%{ii=yPx82+)4dF`zXcU*FN7xz+@GenfRR_0sICcfnxP~M?@)mYWvPDkjDOJUewa*{0-|>ID5yygy6%3Tv zfbb0;Bj4+u^CO_&;qH_S0_{=ZRFQGV&w0!AKVWsKQBmc_D3w2ws;U46 z3Lo2q()rgD+)2fjpgWV4YM4C-ngBBKV^md>$jIOUt4r;Z7N7WAUkP?3h|qy6_uWbg zN;QBA)aq(hgEpFYkGWY2e*HcNc{L9#dMAp)Q#Ee3YIe+lH1qxapfy39kK2NJCcMR& zlZRw7*~{Nd5ga_FuTP)J4k6Rmvsm71Xu)qM!CShqRUY31 z&$nav(~z1nzU9OxGIjSsM9E7tXCtH8U(dbUKcZJ)q6QwdvEbK`0u3=)FOneljz-!< zCQOZ1xu=_1zpe%l&hD`a6EP;V2g`qpi`(Pl?`M6INjC~I0}R??*tFEK$QuASSAI%W zM`fZR8?L>sFK2ytIMjkZp02J$6aQ4qWFc?g(bLhVobPveSJ>AAr8lc&Z*LD!G6;E2 z&++ha0nOFTAAX%-tZ8X({!>5vY0A|yIVisJ1w7^_qB<6#$Bi}`^P_38)+g{=vXZ6& z8xQ>gZeiI*$9Odu^>P&v>}s?Rs`tTRYvp4T>mGJ3>!Ob+tfp1B7wF9|sp+&&R*`ARhbi z0Y?s5&T?g`qXVe0e?uyJ0%+|-49EM2iO*kLV2BbBCV;T9<0G<|-RYvDf1_=|w2)9C zg}`y9cTccFPFGilD8bvUb*$ksd(y`YHjLxOEe0-7Fgr;D&L5b1PVL`bT}$B}d| zfX^VaA#G%B(uv*S&3dOyO>p5=`pNC6Dtk)e(X$c6rMbE!`tb*adA(?C3<>4Ec1!@1 zt4me0RICSWLS#}5a;kl<1>aj$Ivp_uNKbmK{t>=Dt}vqNvyg628^Om!HIlP*bydsj z2NtjhordZ@c;_9BOH*5QD|X4_R}I0F{yVwa_X`Pa0cYu4z0xh99v%#!z9WAQ+lSF77UCZ z6d~OLssJSfKTg;)s>}q!@Cgm7N>~KQFBTgzg-^CB&}-{5zR`g$ro*qStJ_omk;}w5bi@BS{a*^~P z$T%(8K!F3&9C$CafBW#obl82*t9Cp;+;Bj=I`9|!GXXua;8F`l4rs9}$SZ)yTOTfn zS|U~yQzezTAlg{y87%73nf)BY1(bI}0i^D6chgT!;A0@t=vfBolSXOB+bqIFdHV1% z9KjI~n*l=-_xN#)^tX58;~;dX1#v|adD)#ty}!L$)yH#J7XVKD3wbawfRo49%?JvA2io6Mm%YQmT^$X&v%%FK^$*rHqroE-+kivU97D%XvYop01!bdYG?>? z`!6n55W+VUd8oU)*H@#bp55q4;XE_m_#Zs}9Y0C(Ub5ypGj{j2(Q5IZ`jpGWmYD?iJo{Fl$EW$V z_BqrmAUVZ@)j*-cEc~}Nd4b{YxBfQ&CcdY{!D7nVI={^?+-alVqop669HueosH!hD zo3Y5s+1bA8srAv$SE=<`Y}YjONmtHeRQuuUx(eFRVo351^f?*QjPyu`n?fkRkqU&O z(b6>@8^i(9g8QxHAbxT86Z$i|RmHu5x;lFRpel5gWB)AAe)sNr+MtLL`oI0gI6(K3 zT?gvyzMK8Hh$Nl`O8bBN;puLBaM5ms{hVH{qi7-Mo#q=Y{^cA-cJ(0Kd#pGD)Ly{3 z=N~P6&hjWHs|ED6`vZz#eVbccRMXZ86aLsl^^$>rSyo1;+G#;B&W0lan1C!(Q)qr< z2!rz_>!%iw?}_W{yY#mLX|R0~!yE02wemH5w8@@?{jjhodS(-gReJwlMea%s8!P^| z^TDA(adD~Y-&J$^mY!ug`FCSNcW{-6S}HEkyjv{yH?-7lZoj7gM=6s!9LKANUS3^= zpko9h-(qE!I9m8+UHm9eswar!0mtvggJ|YmjApvS9K~mnOmDSNGu&(I=?^^ zBuRk#w|52Rb4^2kO5PWT{Jt)xrmf@UaNR+=8BbfJYVP2@wY7gLh0CyDgB&n`z*90{ zjsQkSSoz7y$%qt+t3=5kbW8Y%iNTbS)PvpwN*Ce>dFwVXvO$c`t&_%bY?9V275Gos z&5qXh7HDQ33O^1Jr>7S3`wAlDZ&_DY1Bx4Yc_=|altOV;sEw}f=ppb@U^W4$h6X)5 zFS7~Yg9f8XR%TbvFUyeBM@^l^3)k9Ze}fVE8mJp#tbjGkjDwF$&_|Cp!O}3~FL@j! zSzZB{{-$Snb5l><;3Fba!kCL}$(hgZO5hRWUR%=uxPQYeSMDQqGsMC) z1WpetpOSmn23||Cpf(v4@>084y%Q^`OGuqs?4Iw-`=mauYinl7#U)_<`MupZ z^LwN?lBT}U)i`~#-*tkGo&5Fd-_jC2%VfIxT25NRSJS^DWU_|UH8IdICNSy}KQ8}A z3y^fB%51g|f_;bSN@ZR3a@yzm;0}4hycqoMypMiDkP28PHnROp))x@|Bh-!lrs9zt z{Q$6;!26h%>lBZZe{Vr<224jGZ_CCZGBg|;4_97B-p#la9%!hdTsGxN)!uB8JoLoS zC<`lC>p6PzH;La zicXDz!oJO($Kfp|H*biqS+4q=x-EW6m7Mf})va9S(S7o2?}O|fdSQS6ZYJ=R11?CD zVFsbaIOq%O!Pq4oFF~yqb+7&FeL^gfQ!bKVnOwMCA61s1{=4%%OcR7*XpFzj#m|A< zSV3oMdJx&HFXVwIN{}E&Tx!+zCK0hMx^LC!bWFQaE8-yyaql}G9M-;`USl_t=`G+(x{T6_4DysIG^9_ z?KwF(ILIA@zYqIyW=xldTR&)RZHF2x^Ja^OmhkC1dg|w&|05kMFZ`~?(@L=xh+#2^;pS;?Z`bPsB!5GRhUN`HRQxCBtIm5>a?8zTOpE()?Dn}4gQw=t zMzJv+e-MN;7|-nVz3>rhj8Zynk)lRJM}u8$VI%*kl9z}5Gyu(7WG~d@ih8pNq?p&xM~u(qcyadUf{yxbHxVw~P|h;JGm6fpLD`+H7)D zF9M_g*1SaFn7_mKmi@h5Q$Qk2n13ojJSXJ000anm5GRSYTOniy)5WM*3|TEW!PqxwSDhL&eMi_ELXX z2DETd2s~2iEFyd-tDuZa#l}WmTN^?IVS7w3_}F0dR!Xu!S`h(rV0ep8Y(i*X$=3F2 zy?_Fw(!c2=j>kFGK=i-JSR@q;D%k5)-`iF;SrmikOQo2;l?tUgFL2+2DR9hFU z(B%N!&?&cUw>1IHOV1;?+0$amn(T1G#E8z=DI!0K|`@R9ZO$#xY-kNU6~e$glzxvzeM2yl!CsdY8H! zYA#q-pBLHs$v8|Y8aw-3HYRY=XWr@ZZPA*oMnzs|*bULhtPW8t0%I~R=kU}0_=;IwUe2l)D|FX*_QGP0oe#-v_zQD!72IJtO0``4(QutiL6 z-S6Ls91PT}f|;`0wvan=t1eKN$G$r??6$LKukXcEExj+F2Z4ukIol6CnUSKbnne<} zEIj?`M;X2@{Gg8x6!1_hZWNF4?J=k+KQVqTJ9K3u@H=WmLk@VuSP0`v!8O^&qa%LG zQ%ty$!qG8c9sM)aAI%|!nggzy_FcBHjI;%-|B^KRD{FuFb#)sL*uE8`79HnD;fblhwRB%y)^z-=EX#@0Y_|JUUY)8NR){RU425*I$lwoy4H!k@(KS$%yiQy@iIjraK z4H~?b)|S1-Cb&zWEiYb6PuswrI{{`@aoRf!*~rty-~@qfi+Bu~zA0hllp(AHq>Ge! zNlmf+dWNjA(hxDZu$=D|NJ$XWdf77OQmB`%!VsT0zp>(hC@NxO?VB#T1?Xm5*56tT zJUt-~`;Cv3pgbG;lqLJhVvWyjpY9YkM99_Jr0WG<>g z|H!mgS8NkJ90loF@MPbfZWvyd2=d)m4TZ&@gq$}d*A>bTM5F#iGun6<TjT|Qo{5Q#DXglKR$(fZBUUDCdf$;K%SY~*x2>;H3*5S z;#do{5mb5M2buqnZ$)oe?C;BMpy_=|OqQI&k<^_%WRtYMu|f4b>|;c7Lc(julY*u$ zPro+2m=3eMJms)Z9d-Xp+4oaW0E+)T{i`2&PZ(JgWEC;sHuq1&i|$%Vlh!d*#3!{z zMx%m^I2#K%-kXy|Ku0O^2-XQe>N6C|Y-j2MC-tJlKI|0#2htt_Nc-hK&7qTr6oEJs zanQ@d50a+fM7bx?MEh_;M+a;&r)3gD-8glpjPGE6wDk6tS68>w)3a4o1$G-0d6JS+ zD3%o`lZOp3b^_m}iI-DW3Cakta#2kq6zK?Gt<&J&4n7VJMS?XmtEI&fapm5W zE&qMUtFS0agr??dE<`qtm1L^YX=}b^F!l+M^TlZ{QMi+1{c{^TieP{?DFI6`obso= zl+89vl~u9CB(je_0n$-emEJIiJ0JW;B5`bCds~P@aB^sxiujJQp=zn4He8f2pxZi>a3~Wen@*>C%Y^UcM@8U>^{~v* z$!ZjfUFMe+H#5_ek{S!b000O48Wu6P&)Dx`vep8zq@W;YH&Ht=HKotb4IygFcdB2k zNr+3pA85$y>*eeI3+hQgR1%eQwT*D%TD0~Kdn8M!s-i@M77%E?wpLI3_xq4W-Vj`x zvWifSNgSS)TQ@y0;NqsCp=GvsV(2T8*>3^Jzl~y@V1AtT0%uHC$p=O`}xOBvwqqpStQRNBm$T_L)J5x?ATARC}Vtn>5Uul#6b z73mEPpUcWB-@XL~hbHU@l0?XP96r{|YyKAbsj;!zE)BD}%ZnG#7XmOk==u0cwLr-k z|2Euy1`0i(u537hoI5y)0@5LV`&`%PWa$*!41v)IQdYpj?6Emzn~Ap#Qh>oY!;%$0 zS$1fiYVAoPF(Lgd?3t#K`>|#Z{a5Qi*9N#{K4u54Fj?68n%zPX8D!GntWuPbZ|QunFZQC=@xkkZsLzREw=r(wL1qC59hiv&uIi20 z44(T<#x{W&ik1K~QvcllfrGy3t5^E+J<}){yW4GWY3iH2U;`E7;8>Ue_UkzQGoNyu zS{4BT`?bFp6|nxcfC{G|8-21+A;+}(w|iN+6ACh^g2Hua?7Ur?axPR&(!XwkPFlg_ z!|rZK$cjmg0rey}5dV(+)J}*FaHy&W?FS=3=fQe-o6muc26e4)<;<~rQpXD*v_;7t z6Bj-s8G;Wilnk3Ii<1;25~u;$r=jtFV+MQoFZhZ7oeS#!yB0ZLyF!7RPg~uw)%NM+j?>czHWOL|X1;f~Cb115eN4 z^P||MC7L&M@ogxog;YLALtU1=lL%jO)JHqh27+gOU7iXWJ!-JGCl!%y$WpxLm+HR_Np>-&arj(PJ7V;4=uKlUKj)r8x z&BLw$+J68OEs1Rk2|;IE+}uMWAU6U%5K62$mG-UO zl9JFs*mPmbgYL&?o_%~i z!9B-E2Pl~u2XEr04<;%Mt3BDlYwXAlz-Rp9&-N^9@Um!b&W|oPMnpf%$X13GcvA4k z*|krXn7f)SHm(iS-xi@GyzmC0h%NXzL&cE;kvlt+pwf5C?XWo%2vg7=wy&-Nk2DMr z5&)()N9)aF?9PyQQzrHR8g|%KuA6c$_wx!NnD9>5M;8+g{Mn3eMFgw>8*}h`U1iH_ z#RF>pi$)rvBu_j4`FuTg+_eT*XRa57p;F4@<}{?o3$h27x9v+m$z=JRUd&8TH(PPd zBh10~RCag>7E#d3?uXs82w%D=M7X=V|N3Lq;<3G2HV!GhRdVn8s?oN^!Ex<)Jb?Ze zNu2>;ffhTKN~fmamcLfzsK|4F$4YH^{)-v^=Kse>j(OY4cH*)To65id-0f%kh5is$ z&&kQzxn}(?CPp5o6($H}6%Iiz@yvnZ-(-|N*C1p<_+C1}f(*cZ(N1ytuP<`+3r{1e z9C^?Feo(Pq2(*Prki1-NX#VISl`@m--k+QMl#v09Nlo@YL7%z-^e4BJe4}Fyf9P`M zRVC+s)EEpA2_MgJckkOm%@Z>Sjk-}mbcIz_1J<*t660ID8ul(eOk51~L4oP7}5QPb1v1pGw4 zJTC6&?D>G_hDcq4Wd63DZIbXGBJgjzpahYrQVE)m$-E6tE=l$GKBK((%w4NL{$tDz z7AE7lxzR+!ADTY&h>sFSsZo~q8j)Y*6So}6#GyLO_wy0_;eHBy+v<1HyXQJ}WMu zo6<7eJX~=mt{hNe{XbdC&hvgw0atJCO?d4?L6JcSI>>&i`_EE=_L-CP1Dvm?)Hdj( zH>Wq7$sT${Qa7h7=ad)}wGV4GWAQRZbwAXSM})GoXA8bexxTnQ`s^bg`EpP^=zAJ% z#{00~Y45lNyfw#qLtzPU`jnXGb1Ep1?Oekm&Y%B@@`cM?oodX+t$-FCjaNQl`s zlTyI`h$SWQ@Nm9;eQs-Qe$*MBaRQGL)A;^kNT(dYERWiRQ(C@&K? z@x&sMGGpwc;9y|87{aK|ny6<3?S17VA`v&Ln^)2=Wyr`W)$`P##dTGRx?z}Qbwl>0 z%>Leix7&tBldclcbGJ+0uneW?cYbyr+Y=)r19#y-_37_T7K(6tgT}`f9{2QNv@`(v zBz?(A$6L^;CMhZThf>VJ<75e&}(MCLp(xs~Z$x@u-JF@Fy&`=H%3GR{EH_e`9Z$DAO^jR8k_(aa*O*zsqi&JT-V&+K3%Cu6ONma zwvVEHZ+9Pdf!!0ku?ZKW=kbpozAq|&6@{UEvhd&H{rxl#8Ub-A5 zw8-D{p#6>ub~p$?FKg>46{q|OFYP@a(EfpOOmW5^0RqYA3FMI)dC#v~NZ@_&>fETR zUvVzonNB|bJ1`~!U5s%=#Ek}PjP@axBC(Yg)%zFz z`uUx~tO2=c?Wj_Vd3DFb(UC1xhk}xfLR{HZr&O2WRiZQRyJ?-3UVxdh`M`m~k*k)a z(vVFHiWs#YbAw9ILUs=eTqjoLY}qoo6l4@%C0xR3-lr8he8F`2R+uBjObq1nYZeyI z3R=)fl=_IOFcU&j%qWc;zrK@!fu|e}cYqQD5s+B#uBzmq`8q$?H)l&ynyo`U^L|pkRz*+)7K? ztK0aKec76j?NV0$>s)a~78mKy*)F8UKI3M0a&>P-#4ebym)-K)OsTCJS*DP^{iBN4 z!h$2Wtl+m!->5SbA3jKp)UMps(IJ(izbpYG1cY@(iUBr}9;O3 z56Z@IgkPi_bA!8_S zXuWM&m61)KCll5e;=}`-8A-h z@%BPS4xD+wDudl@YYi=KLf6-&&37U`a>UF1DrOfPT61lA{raG(NuKX3$>%&083zv! z@<_{-S>PWpeN-it%h-5$pkKOk{QNBYlH-6ppEZ69YQcm}`N2KU?d}dYLm#6d0*SQ% zeI-yQU&v*?*);R){DM`#s)Xk8%7awI%Fzg9a^FJY;p7lo?!(8z_5H%=3F`-U2Xs$C z`C>E6OS(^BUWEUvDgzOziHQwA4Z)|Z^^zdn^h64@Us#R?Y7 z8RF;V!^OozCX!G-j6vKa&y3qxo5w=r6^H+I##>Y*5fHhnlb9B>#%g0Q z(i?AWZ4~5&=@G+<^3tXP5YeeIxfzQ$Z!Tr4G4PL1#A2aEcKMDDA8&_HgQMXwqo*&_ z`HY`lKI7DbQY;1*<`3^fZy~jtbAX7OMw&d5q{Jv7IO`D-l2Dpht{B0hcFEq%Em4AC z!lDSR-On@QWW@K(JLkadqY8X{j;r{4$-7kdf`@pKjP#gUSQ$Z*Fbu-htSsfa z_KbeE_-=UNr@wC@b%urg=pI-e=3^I{Rx_l& zL)l}*k;)}pJ2eIB+)R7<#{Q_R-7K7#SHH92rJNg2@60392>l>aLFOnx~a#N#v^W^YXj9 zx&O7|Vl_0}B>XC8d*>}g4tALJuYMOxA1yI$gJETSV*JZbtp{znGyuCo4VpfEEZl8hqLq~mr~nfx zx#kpJcI4F<9>xrWyPQbk4l3N2Jb(WJ1Pgj6q|m|1KW|8c#WOP}v*|b0=;JnA`F-9; z7qb%uxNlB*KYey|nZOARddVy6ScM=dvn405Rrw@C=b4W-h}=L=R_*Bo@7s%4uYhbx zR*)UsL;8;vAl17ghwhQ+66taEdr6o1B!^umjePx$xvhMUg|k%u)I-f`D{MH%NDb)Vh4%@7wzSwYfYv zo{dMG%ADgKV_au4w)pd3_21;YOqhFr3DBuX;ozF;&#%;|2+qHQ;(JF!wf1h#a9>lP zjyhjhc#e!r9b8pid3=1b_|#&e)c=P;mm!O~`-SdTo8`&Mk|JwE1L$jsPly)`$_LPB zTE_&Rgmh>Ej11u?q+3%`0+PegimQuXT$^kpMiU|(>-7%uH}IP$Sc1A>mfBQ z>u}HX^vp0e!sfgs0H{rD1%)87J90Qh?=vZ>5)^GjL$;pjZAfbhU4Ww*f+)7riwqRywzJA>0xT1uHZ(-j37#0Vz(1i0kPN zy=v*=Y9tkh_1q5h0G@P^ZIh5JxG8NdwjmJlGBGY2QEHh(W|dUUS1}?KPf*G(zTd(O zR8Uiq$QXtIjb#>sp78Ky{>Zi#MfFBaP3U6q{rXkqgbCw8yv%H!xiU-)m4)<1itJo0 zEU#Y0e~Cg`+L~=n6`_DnCts1KHNDw=07(UcE@#srybwv3E2opq!%&^k z==nl+=@z1-wEPaj13a@I#WF_Bny)So-(1LG+4oAd4uNlCWZtVv;;edZTozcXuTYNhld zdTD8?ke;6GazFg7t*y-tGY^{q^^L$Fo^|N`%CHZEuy?AdtNo)KwAb|S!>UzHX-0WZ z{tKoDHi+c-*xv56Gew0P#5CnV8XIE5rtZAU&dR}YPX`{5YF3sH0Yd8B+_dKARi(D@ zR;HjR0*n_Gdk?|s{I{Yod1luC9t3c43=JE~zX*`RKu1-pwVIJRuXWqkQ#PgwPS^JO zYYGG4;&OL0pA!@q#LZ38#CGz*R9b;z$4hT%q64}jd;7z}dT0Bd9uVv+D9D4cC%>!v zomA$Fz;e%1D|=~a6I(5L6|g$v%d8ANroAl;P+`r$*sy>48Vouh@h;G)kLh2=U0w|j zX`_3Z0bcdC?pWbv0W&En7Xt%J$CsgE+^|1rlX2s+c=LsKM@weHiIC{L)8M+DU}N%8 zDx-~2wTy}75ucE=F%_|_{Fg6r=pRHV2na~E%60v<1q6)TxIDP1j8|VzRsDGWE?UZw z{^h%YF>#6r&`#7oAa!wZrPr)w+5i1QoGSa>=2)vi^Z8b}sC3MCRZ*Cvg*B6f7^=&v z;KlA#kb#k69i;te0SJV10#L!xVZjQAfEQCilUtJ|dNwtpNo}jD+B@@U9 ze0I`SLY(l>nXX@0m>6$!e!Cv7G}c)XMN7Rb_!0H(8E)i@$WCxH63DCoLk%9B+TLEd zBo~;u&rlR;-sO*ck^D9xeZR;O+}HEMfSjAah=PYfgP}1!E%Pd==D9Q{ahQDW`$XL+ zspml=@=#8kl_e*6jU!-+#SJqVkM~MXz4zH2Bb0llP+YsTuR|W3P93~h=mQm?=e-j zRmzTo2Hnp3&Iw4HKb`*|yZL2l)nvapdJh7xQ@gJKXZgwSJcSF{9v_5s<^vqvSa4uazOBT($_20L-;)e;$;s>sxCZe7$4=XvjHPj@q@6H+5V zB~t%4S~&`}EfWn7fq73t1BWosFF^?WaDTjysL+duLusxCjKzTMXZ3 zua!WumD<`ujrx;r?;E1#z>RY6%R8i7?n@YPe%axWC+l`mKu1S!X<>ORpCy+I0g+^$ zw*L-2C>MH|lU1FqLO2FyV`V54;}csI@RXGi2pnGo0$L|LJw4q_>s(zv zp#;!FMB2lLn03**wovGb!nefs=SCr~~BV`0k5A`m74 ziz_<|Yg-~2gGE|(Yy)#-1lax?4zNY%c6M5m@a8GySE9(v%V9kvp^s1c!{;KWAy=Z? zjk_=)2R|vqS~vOnzI^;xH9nrf$_glcvuHCFY8lWoL8Z9>`L712-l$g9sLum)!wRZe z5WS_pxTKp9ZDu5*Yy0bY3T@|+GgzbK1xKRfk$Ze zv5k&s@_Bph{_uxCV!ybx_^8>z)b#COoBiq>%-4c+(;A;GcYvzASwzKZYv)?d`3pIu&{(-m|X~<5#Fn{e+J^LkfB4YZf%uJocOo5-+TR?f$lyu?L$s=w@&S9!<7u?S-jnf)sooj=sg#)y)#I-?EoLgwxTCw5 zVUUKc&FC)6GqJ@WY-#1fmVBuc5-a<|0Uw?1_Sg171xmSK=3gYG`YM=>3_C$1oLm|V z(C>6_)-AuZ$jZS031Rd6IkK4h!1(ysRK4qk)41V?k~06F!-dR&05t#Aer^1RrA!oh za^y9i<7zBMXli%@V~MgMgYWfJbp{s+A}udni0)CLT0O2-Sw+R4$_kWw_iiEBHjc`Z zTat(o0>9HmA&wJ)MS#t^&G-D@;7-=Bjg*j-goIF0Rqe&m1&>p+7di&3*n1%tGhM^X z>UVf~zd-`1o{)G)NC+Mxh}5o7vjl~o_rEVW9f^-YL7g)Et1AmXEUj=uLl<6?Xw1x% zzBPl-N6dn~LQ>A04a{*W70WVwNLH{GIT=dg={P^g=FaHA0N9Ys277qMn zP!=898y$tSFrQW)((NPQlTMv9a~rXS-cBSQ_F3XtrqCc5E~%f~V)zD^)>qEEUEkyd zDDDS-fOCH-mLVYAd;Ri!BEO*E+t0xX0@+Wu{rumM@b{UU#*^W)b8(qjT4ESJhGM=- zu?*#htj{HW$Le~*K>OtjdiMked0KHc6$=+(UJ8$=huzLJ0TBrtfr>OZah0FszZT@@ z`Z}Vj;y-+=pgJ)*^oW>na%KXGC0ocMt-0 zdg%d~%YGj}qVeBc{w68|b9aNMCrD=&G@6U*CZP#qqRlWy{hRy?hgal;BrhAdVB8)X zh7${|@B%K)3W)FRmQ!$>1LbKO#lzDd{v|ooPoHKyxH+N%{&{8^JbeHH*p_ng&~$z5 zCB+MQfzt(e_nVg7!EcW`owYqmVU@dp$wl&|O>xqfsBi2{YSORValKKE+r{}VITinj=*;NvTbG57txWe8K#4JvVUYavJqlD=` z?;XvX0_$(Xq1ktD-?frf>6@uX_)NQ>!tP~k-D9(!o!fLhztD=Sqy&IWc(y#vetikF z({N2q-9n(&YGe=he!E5u3D)CDR7U^zOcKL0>Bkzb>akT4*Yj{1m90X=`1O5Jx~ETT zoMYI^q5CON-$GAbNdx_LLkq=Ij8JBy4%bLZtT%TVX?_2H9d{+aiyaTV--K^|)3y6)11?g1r zoSi=>(&7feW%lgujN}IA?r5}Dp1QS%e%XJcrIt%%cm)b3F~Z+^A>O^Q5-B9 z0bYbfTRWWnpy`S|UWT3d<@WZD5=}Hf6YZ3g14EyLzFwZqIL8^jee1=?M{+mvzGe^X zE@f8J_ynW?t=me+!2Mr9P@0od;;YZY{2GdR@A%L6?>9$(>g$78N8M>_ZF9S~(L42rp04a|XEIJ7atUSe zj;jJX6&6^K<7;cIb*)t}q+E5;@_Sqzf0X-ppIw!J0N&M-7qkiiLbjWel_@(`CSNAU zW;8!XX2kYYr+ThzZzh&(Je-*s_%5LRhGUCuQmr=QX)7HrEt5l&E<2RpT|`kJxAJp- z6dEL(m}qZ@d)4k-9WW1H>ncKCzuBtePfw7pH)?eSbCHV2c zZ&oJGn({_oX#Y@i6?kZ}S)^IQU0G7rLPQ20L=i@{Z?P5tuR-H=yo^%{2jk0Eu9WJV z3Bkd22?@5PaWL4?YZZ)|%qR4f$U(gMLaDZnj*ZFM#*5b7KR-pDvb!IKk(BeW+yY{u z?GVqGnl&epxxm6=9+ekq@|P}UEmt8f>rzU9@NSd3w&u*_(CudAf18elr76Sw@Xh(3 zPB4DLbSzCvTdGpf;_8+u%Zo-S3O5_f=2I;Q&lBcrre-Xz$XP3No*PlW0}-b#*dB2x zT+7iCyMv?`-@x7z;}Sio=)su-pEEuYkubA=uTdfdU0`ImD6EKkwdl;=p<-4f#7I<4 zr`}lH!KAl`3~E4NCS4jvV`AX4`DQyLJ_qiC1ne%szU!}&nDrw-!=2bGMs{rZn8({o zQqWg6dlL>$`=)G*$M*B8M6J_iShV*p`I0)=N$LIOhXXY~-xW+l`F8Wo-o>U+$^H5B z=LXl8wH9~;sc|)K>qGh(3+ubv?_NYhcbkfYqwA}w@v~g#YyqX_gMUjKMnGIv+680g z_e2DwAKV*D_EO)Zyw~#ICMK>xX<4${kG>9Uz63QI-$h?C;ON540@=eeeZPSBVYiq? zU;1ujy*p1HEtR3C|Fsf7E0*u7^}!zbdUopURV$g!Wm$SU_$Bvpaz4i4zp>tBrFsL_ zx5|AN;DzB%OURY;Su#`7xG&C*lXP|#zMcv#B=^X`Cqn&5SR8GS|D+a~h`SzQjFV+g z>6+L8fBuSwXEaxYaCzvgnh*arTT8n0V$AI`|gfLoZ*SDU3OOVj|plIB#Yj33VB zwWX!tfd8Io&7w*ddJ=J}Mn~u`jh`dS!Ny6A8zdw1YB*Q`E^ru?FWr2B!T3Odh4{|T zi7)v1V37jhQ=O{q;?Pqu$V6ynb_?-U7cILHAP|k2X~1QaiqtutVO8wAFf|lckF~Vi zmdZoFtB?CKOz7)(;!OxkpbUAA8&s5?X*peYEavw2vV@5wI0g^zjr;E2UP)zWs0ITx zQ+x^z@s}-yK8li;Q2-fWV@K*FF=8wXVEK3cG{=0R?!4WS|ACb4C9j30X0_=s_N)8P z$jQ&>4=zQ?O_q?9kF!E`%#8!nsjF)V!cO6BMIfefc?;mWZNv5P);lp2zhB>mKE}nt z`wwE5gDGp!{u`yr_Z!GEG4lbbLt5>^%;wQmXS;N(?_T~B8>05Iclj}eY9qrV(FsY@ zf9C~%W@NRpvsc{~EQO9WPClF>!n7p&Ga?K- znsRy*lM#(E^$3`91b>*q4F%lL&_AZ7fG-hV7j)ILC#Gw3;joEiHG~IDzF#&ymeus;-(GpWw|!c@`fBjxt&U zmYUR`qkUF_E;Z*-3Fc}*b}U$o3}AufKtxPjIVN_O&&EfHQd>fXXKz%!goB-hC4I=m zforB?&Ks`ygv?($|G;e?N=>#up%0F$C~9Z`0sp15v+>>oJ;GP_#5=|wkbT&}LLkVX zl>&iSn4ix)T#cv01=q<{VRhR3aB>M(TibV{$kUm3`CsVk8ZIwyCnqGye3fIjn%UT1 z&5kt&bn6N8+w2j&DT}JDNyn9+LDH-JWGQ{DEYHZPbI7T(>&u5{hRd6a`@6c#DCbDa z%k8$+U}Z4B=wq*|xM!ImAKuuHf13sS}thB0cU_KT644Wug?@KspJ;YhB&?qHX~??`ch%uuel7ujqEH2hgnj=@InbeU_1>ymB$y&L<+V zfhQeDl*rut%0KHZwP4z7O~8B*K0ow+Jbz3EHJ~hs$JMD-#)-7p!=(_AqVgS)*oF!s1PRQ{(UiCHt@HGE$c&p?j zK59|WMCSn&(@$PrlxJpQ^BLGY{8S&GdFOUGFy;|F&#>^l9^YDA+O__Y?0M5i!j;Sr z*$HWPJUqP2iSs};Ob(*#M9{yWR*8ZDL^H-`lx}YB9gLb>6gUtlZGNYj!Np>GOD!R> zTUrY029BEQQ9C3^W4ZfB9HAgxi_iFLUPD8A1)JBpJQ+W~iSDQS*7&fC)N^qceftJ( zUI;ALp*?!zYhxmjJ?tv0{3VMRv!jQOn-(oCr#3*;%jslbejeD1KXLH{iE)2c|A2oA zeA~5^0qp!F+uOhw9cpOqF7Vaw;9(6YYHLTuuI?|%Yr7lONYrWYnq|=cGKNLON%T^bo*N6 z;s_p7j4+gda7!K#u$)g!bQy@G|Og2R@c8NKGz1c0sc&HJesKk1J6-a zZNCUKD&q7HF={*6I82{Un#XA^Zt8bbpxk~A0VsV*oC}K^sEv2}`&z520xd0FE@Y@< zH{$UY?WYE3y$=66y5x-wgBm0RWcPH8%{-Zzue?{#NlPFWMeH6D=i@r0m*pvIAFCiKYRDf`7h#M3$ND@W6}52Kubv#0Iu zy7c#hSo|W*+S^NDuXQBiNcp?N4GN}%9I`4%4>n;19OZ-{#@)5y+?S(hc4wjkVQ zBS--HIALRii`=gFLC}jp1trBlJL~cGt6`bZBeaPe{BJvj(*o3q!U4(e>FFiA2+9kc zs!D!ko6f}HykBN$e;Krj47w_({YP)eQtR@7Tqt*1%4$m4QLP9l?CnKKzaO439D5&P zGJy?`1kirD&T&Fj720_Hx=K|&y6zxgRwx~zsCi&4s1k=QYyN&+cOx%EOR=;%ruZFA;NlC8wcY6AkwL!^z}FMjRqag%vq;S#8-ze7Gf=HlY+pz2vE zqhxyaExn+ClV2O43Qq@@4EfxU7&>qZG`Q>#!yWZ>&qvISHU7S6TN}`RxXa6rmzN_X zz6Csdcr#(@6SBL!RPHiSHk6)T5rPN9aeemcq_Var>hRM?LBIP}AuO*)Pn|IUV(hhK zr2OU>ppI*k!|MH)KPh+a0V|M(XSeElSn?Vrf3)}wmuFo?PEJM6uiaawj!4t6LHM;^}L^o2z@QXZZ&76@{rXqC5N#U2M(z z+}k{FtkL+YYtMHI)j>|Q9?Mwo?n0+o`)Ig`*yF--Vc;|H{=bt<9*VHMI#0_rWx%#I z35$#QBINGy-2HM;yF;bYYKF!?i2NFx<8$=pC}_e8h&V>Ar=j(XWq8^0t*ry%zp$elTr3K5o0^KMa0gA`gtb(%OWht0lR+70@Sxv@aY=*rK1Y1WZM_?xY-tsd< zz$KfGI@rk2NG}_n{Bq7MUq}Qc;?r>yMUIwg)0lh&%BZj>yo`aYE=5`m(6RB=@|5nQ zC-5k?&U9Mg}SCUa;n5M;UmGFhzn za~>!0klo-=fgGqs6Tq@P&i;xSR0Vm;B6jiUli$~_sDniEs9!`Z-gQ9-7>pW$ef*Ms zI0gy`%_=AN+&ygadm;%}dVkYIp(cl-Apfrx06AXhhgo?=$zG5d)*ODy(SPn?XYH)g z#L@DSU%?|e6?V1=4J2JPZjZSvU^UIuSQ60%T8EK9g_CNf7w>-|$_s3&BE#ftm^JXP7d&43aE{B!gDdrezNsdIUG zV`EiWS#~|dvxtg_GpaUS9zEdy6w(Ge!oV4Z-R>wo;7p3t1(p_oqv9jTqdSlJR1dp{ zMrOTkP6`{X8(t}R0~m2e{{Yp_4lK}v;e2&534}O=sHgs(=eyp`b&mOv2?rZ^XhlVG zaU&e}=}P&{ubj3jIp%&gO&eD z5aA25B|J7C?RkJ^Zf#y4ld$0zsg88pw>Xtdqi5(TaO^t&=;KPM$8|OfT`wL?eujv7 zGH>t2`Wz%A#ygB6NYEE^vwpE#y**oadcU^AZhiU{aBPv-ajKxl9FL_qa&hdA>EIf@ z964BSz9A{o`Jur5#Ahu?pg-c!xKC!W$;PjgoDSWdhL>K%^GeEPgV3Yh-Mbj%YoxJg zBi!IRh>M!)Tdjwjxr0Qt!kBIY6uMNIj*ezz}0NIvtJ1x<#(kZ`u98%#SbKLkx2#-?U0jjZ@0u|m?< zeEuz2*g?U)nbyh$XVuWOMI1(^5HlT)-sTSINC`uYCav`_(E{L8gmIyS=ds-@KXSRl zJNI6)C-Pnd-wjTG;L7t)8tznI8_QE&J25$m+q^Aa97THI;)IC_C=ZBNGKCg47JRjZ z2p^)}yLZo2F)y&116|pi4K=`S^0(JRwtpLIO6HLYU6xqp#`aE?z0LP;suF-K*9Qjf zXM8B54vxXaWk7krkudp0<3IXT6Jwni^o7a_&ib03FTS>=E^_2d%Qo|7>j1xiC2+0f z=5YF7kSzhxoBZy_AtDg=3`smKU1nM6ApC4V2aOF1<|F$V8J>U9Vf}qxsNtQ>%D^Ic zIXQv)E&SbDzpSfdP-tkcjCwgr3SNJH6N;7*783OGiLsu2dE#PwS@xVUl6GZHe+4fP z%r>DZ?e0jo0Prae#(RGIA^auqs|Pt*Hd`*w>q;IgTFQ`_pnp*&$p`NE%D12V&$nD2 z<7VwTyy5 zKtU=ibS~-pF(&k#oNVUizHy6{%9N6nlFwBf)&hZwth8kO@<~CD%&ncaTGwsD>m$5X z)r8ST^=eW!_C;a%&uqP;d5k*9RNyORXEg=0QYsT{@%zwudEw?}6hs#-0auF=vttc; zF|2Q;MVL@zI2RBO&e!hX;1V7L!a&~iZ>F>xJq;~uc}8LHo-*u8AWvgm{tExf>SN67 zCRhs~xOidfc;#^9)IS01t}{l3xMC7O*(>ys5E!y@4Hz!4E&Y)T`Au5DfG09?-%3^5u;Co{qV+G$=%A zA>v%K1`F{yH4^wmxL?3vct==hi-h=SXT!o8FEkWdd4aMF?``)L4g@G^{WS(S%>6qd za92fQda;dpe;?rk%~?a~6kPtkCTwtf=+l9pklt^A0G-|sSO<_r9C-SmkPJ%T2OX~zX*1R*ghZP=J1Hka<7+uGG;Ojlu9Wf#W-5ZM6f5)t^J9pQ($A=u zp;+J8>gn%uauE@lxR~=8j%s~N6OBLsNEz8Fg@zVepmJ*o?%c2N zdaxC=HR&THN`~`-QG3xhZ_kjB1f0WRe{erk%zWw4a(i2IX2yPJdVOa@4WHot5;@Aj zNOtPRjESLTqh4>q--HAV^{Ob`$D$qWllY3m#n^nY?zB(+Wk$z7f-2P__;z3r2r()2 z^>7*0vp@`@M(@Fac6gAEM-Olrh+LwBd!Kn@!{H&p#^rYS_n4mBxkUk9gPRq5&}8;% z?J0XAhV~N79pHFK@=1tG7*%|??oij(9Yc^cs;J$s!?Z&Ex;Fq^wH&`k8iD$hnWl}6 z`7$&-bJaO_gGqZG;(djN*vq~-C!_P59gxl()X>n-nkYj)L5AW-2vic(CQFhWSUYko zZra%1M58i0EiVi6x-5-|c<6L7LFWCN;#cBsQ%C^L>S}Ck6rFmdnXU*D?%DQgsy-ot zCEmi+u+nx@3AAtcevHO|$sZ48LbaVsCuj${i;_!Tqy2xx&2JoyE8o3?EMvH1L`dwA zlBz?GG@>Llv{+iQ0DW=2&NZJi-S?sE?t%V3~p(Mfm<+9m4l-lTvp#cdaeWA?~qiXBwUa zg)d(KAwaXUJ0ayU0pYPZs+g>#R7){UX=o@s34=qwe_C74H0Xx#j-M0`L zNg{cQ)JzYlX()}dV!kK1VH>hcK>B#;9;8ZS%AbRf!);%=NHZkWa0N;clojzQ>)o#Y z&YvFww<#k{YmiQe#Y-{Nt5dEQ0=rlH zcX?gpvWE#|HTL>PhNidp-|hY*5uIMF_L0meihuju4R_A;rA0VUkUTv>V~XPEP*FYC z=!#v0lLYj-Hney<0xkE#xZf@@@yg#X3RM)Y3|)?!d;H*30F7qhr%&nx1Uo4yu(<1qDNb{yFRj$2Zr-#mzT>Z|VE~ zSF5M#pfUZ=LGc|R&2v`c9(p>=g%9&b(y`!kC{@5#7&fF;cDp$LG5qi=)6&MfQVFCt zzzaj6dRa-CUu#8VBsMYc6962d%8mck|7`4F3TGuNt~DNmYIJ@;?vic|_G|E^>$U~o z9e*JeH$h8^(UPgPNT^~bmbS(aA=j-vZxlo(rdlU z8QG|ij-9<&dnzm_o2j_yt|*d^jHsxteER~24yy^pW~kXg%7+<=|6_yepI@-@`jdES z4JKF`zElCp@ATSpPJfSUw*!}%kdI0*q4uw zj?a;ibQ*CZJAdLfx1^^-QJJfT739mH53W0GKOnQ3tiq6vl*(+n2;|pjwhL&}E7Yjo zISRtI4Z*wj;XTiv{km+onK@h-eES@wxB2wUE`9T zAtTMtapxew`1a{zm{-Jvw;LEQqN3wXjjS+NDPkEl*0y(m*p4<~Lx?WOn@j3G>F7ZZ zYbxOt?Pz17W>C|kB(L&o!6qdG1qYX4LQZ*1PMzp6-aTQs$U7_JRq6dOH}$;- zCL|TSyFs7APB73#*b<7u!hrbujfQv9xc@<|@cR6ZWUk0Rr|JVn#!R8Nafyi$F;zgu z_UE$w=n<3q43!c!O1^j?Kg0|Rqa7_0eX9s|ZF!Zrv!!sdtK(vuGC#)Et%8E4loSBl zU?AD6nVupb04g5Xhc3gi-+v4gup@adPP-om)4q5C*F#Vm0+d(B&27IsbBKnbQfFuA ztUR_2lDwWCNc$R}oOs2>J=bKrwCBFdTg>9k@J+i;gd%dGYgy*IYjjE{0Ud*&w>Lys z9w}ztK?vb7uvM3&vEq*vYcT7Ta{%}GPZJ*YDabbiZItjW4ha!SXjq87qqDQ4b1J(h zLI9{+P)cQ2b3`4692~&8tglIugjQEq+s2^vX(k}`9VZueNPD{(4GjWusG;!%8@sTe zu+h^~SHi}GIyhY=)BNExCQcO)A66R#MORiT#)bM1=_am{_oJmeosI)4LtjIJ3jfF3t+3 zY98L*@z{PzWo%4s7#j9ThlU(Uu;hc=Q(jL!y_TV_4JWbo8kI|USd|pswXv|&d0ugS zB7YQAwKEwY`L#TDMBm()GR1wEg@wiK;_CDk0(8d7@D{o#;y8iIM$g3se-3-L!OIhR z-csbVTU`-K$nrry`+nR~2-o2$erq8@z2$N?z(}6fSXkIlgFk2jZjqm~F_0_zCrX}y zpPNW@&@f*~&@m^ukry|#Q*RwZvJ_(70gp}O$YoOl_k{k_r!Z)MWM|;fhgUB#8Xc~A zlzvY*@2;%=0r(q5eEm`A46k^XpWFT!dOKhGDSr} zIqgd@<-SMmNB*H-I(xW3_0^$>s7R)K@=7mU<@SB$%1d?3EDC98{a2{YRxrjGoI%wY ziwEZ=YmwHB^IlqG#!`u#%ff0ZY-phPN=izG7~S3JhV#Q*1#$jsm$14JRm#Wk_vjK3 z{2Nw6LqTn&Nb?vIyH!ZnSiGZZroQy0632sZfYSjsgflB!v*Bz|`$mc~^02(zRbwak zr8yM+N}-~KprOK! zQ$gJZHUNvI{dveAftvW!ljF7u0RUp*H}>KzEqFQt&9fMe`Ju9nK=*g@N zBBS=JZ^v>IwA}iU``@`^Q;3{k2K6{^=pM}^mf>w}udCMCWqRw(pK@k)`R(ncH}F{5 zvsOs8oPqT14@Z-82W>NN-pOk^R)TC(KDQt@XJE6ihmLN3YhZA~ z6==@Q0tl&v%K=DHg`af&{Oz#0GXtQ#m6gRM|3ed{_rk(<@pSBbO%*vNU^nGoh5)!d zynn{c;Fa0txw)y$t;KZZJ~l31qd|(eDW9}7klcY84uSZ;np)~N4p6!LOTC66Ob7=H z2go1$#KbWx@Y|?h;W_~sm@9HSmKE5(O!*gVX)R>lo?9wwe#n=jN}Ye6CI3)4?4p%x zWa4D{9G}AXidhiic6;q78tm@{2!U4S^=rwXu+RW56GpPsoSK@W?pQD?b^kKy4kH1{ z@j%7ONhp!9zrVxXRz`B2wuF}|Z(&4qz-+Gp(=J}*m%S%%OH1KU+7JaG9-3j|6U#$G z@t!{ew@yi$W~kVm@D4HYuUFp%y!m05xAfXC_FmxT2BVH}Yo2X{1cavQnu7d|lbO%T z!eY98X+f0y6Xf5xhpP>PQG$!bPg`x}&}G;2k{O{hW?uZ`Gq5;cfbH?)z^s!)=p~ zJ(st*SvFH%_dd?b%7#N79O~ciUH%;}ecm1O+WZ|#wu6lj(-Yh~hyqJX=BL;-NHw72 z4Sv(DR0vM1pTDd2=-KtkVGVg+UV%ut_}e$dm>4}#V|{b;pGJ4o)j>;P4NX64!hCll zgL;2~h5$B~l401LPP1^MVW@&F@U-FD4a(qy)A_u-z&o%v1gt>rQpcRzsb+&JUEVOS ziP^ye^sSw>n&=2$0l=B+xxVeyCFOtr znNfxW-~OIyy+hi1nzOXf3Q$P2ysEZ3QJsyh<-2!a%8*MHriduXDl_cBlyTCOY^bkqWW?UF;SX_}Fb5&a*62z|+m}~{Vr)Hmi{trg6-3{oO79?f zZC=}+B_3T|y#~`|<7^++4mhU(9l{ZPK+J`7PXv#n8YtV8tM%-dtgMn3OF0wqhVuKV z)uaeGHBJH_0JmZj2LRqzxm<|VlT)*IvQ=&L;$_pkkAc?R=xhxIchfEDrA@PKy%>CL zU6tljE)97HcJM>wim-68lsPO*<@}hfb3c8c?RlJ5%IvhS2U_Um?Ot=smpH!j^+Aq# zW}$=$r^BWuC4u3#N9c~pQ^frcorGC+Lu&XUanqk zy96$8JH5p`$IT;=f7Ot%0q6JvA_&Lrd_^QG=k#2?BNzz8jF}d(A03pHFVJSiMuNiU zE+UEFUMy1)_-#1QbQJt9w=8Pf+9ukT!G_@b{BuImr}VY6vl?7M4Gm3wTzZg8oKaap6f%hwYTBB6OLeGp4n~Xn_fG0?# z>}R}`(B4!$92A>*c?g8;;Yy*`@?(U6sjjY}>I8Ha^wQI_4iDGY*XgV;{Qp=6Qyp&K zq`O{I$brf~I33tkP_evcWWv=2t#(Po!frZ%WOp-?`^T_-7h@TE8=b>JMb*}>HZ}e! z?9+6kWA|uZA3uA{+@u-=46ki%?W|8s%%<3%76k;fwPZ@yb92GbJ--bq?$c{e0N1L+ zNZZH)8C2w=Qp4{PVZ3}PgNqhiA{C$~K&}F=O$|y~dYU2i=PgfhgVIDHHW52Yq7=J5>%Gxl-QIPpZfzzHUWWoCuIm3$MG`lWDsAz5sV6n z!JzM(Oh~wZwEdlO|-Tf{wYY%u`VGm@AscS@TnprG;LPvSl(dAiZ!#1W~=AEKpfkS(l`YG-lzy zgQ%&iFaPvukEk6B34H6EY>HYM=;j+Q4iFPHmQ(9wUNw+494ZTzA;|FimPSs==cVRv z?P5d4I{dNC&e3_ytn$unU;m7!e&qjTh*!U`N+l{B+E6ovbaP}q=$iAg0zfh%DjL`YwD*PG)G5_wtVu7IYClnbFa+SO8Pu(W?#(kBrQYu0SRA-+5oL!VmfGVBu3k>TI$X z&mR6Uh&{;wANNffxeIr2I>bacj*Ng74N}M#AD;lOOpcHg5mZcBq~AN*hn>4J`kfro zBh0ItlRloJAXe|ocu5JATfPXtX^xL5D8ClkFqA6PDiB)yWr{ir*vd*YkY_aXAf&XPyebH z5=|zHuA7U+>LJG6)`Oawh_7D(l%Aj?q4*hwBRh_H}Ui{mWXC4qr+`kNYOVCd2DV&_FiRAZo&+B`|bt>A5 zO&lGr={wugBa7vI$R(F_D{(Lj{-FCOjV3XHkd*jSSWs!o$t57}K`Iu;*4CXy3W2Kr zzH8g-PLB2&TwDUW_J@0E1fj1(L+9Ud?gQtN9M)?@c6DhVAf#(;{ci}ddk)tVDCHQN zCMLmN+E`#tl=~`2-Nf&X+j3*TGSSHGoF-`Gk>(?xTd`=9lN?Nr!g9}3isHo!YLlfy zyxLmB?OD&W$Txb*1t7J~mQ7O8F()D+f@f4Tdsw)&6~1ncPn)xi4BpeLpGBwzZ+7g>a7*n^&kowX)?H!{B(_a7(~%RyZKK49aXH zs9(Gs8JW4VMLyH^p(?&DnJEuh@oQ^mHT)H&rOef-0iq&NxVV#(lV83}#}v?grjMc5 zzMcRThP87wsGMFKK5uPVjJ~=cKo{Ezew_U#$;ZJUtkUr^?;Si8lvCX?jEoG_Ir&Ah zQqsd_Yybfp>CXeNycTO zw%18~Cn>{ooNtYV7#0;?w{FqDe*OEEi-!kDL8FY=PL5A7G0?{+ru~Cr;Lw&S&u&AQ0k1u9K@~u#lHnv+gJ=4mc7d^dV zLP;s$boY(qvr%?-h+lQGbqsiD>0+>K_J}!^fn)TS_^&=1SxPBEX);(SE!hSdlg!}g}FswcIel&xt zvtXt^cb%+}mzQ#vy;9re;PS;}S^9#)ETT?(X-gF=u-v+{E7N>#Ygfh+kuKWCdebqi|2@ zEq~YS^DC8vv6&7BCFhnkopkrF@&IGxowD}% zwL5xilBR|d)$?1a3UUB}Lq-jiy2RE-KDgdq_f>t=UeTrmR?J|d4rHot} z##qVBe%_mg&Iqh%155p-wLibRmd@`YmC(_1tE+3yOs5fkd9Zvkb>=ZRjz5mcZfy82 zCMM-#Z=NJ;rb?@%WgGsV83`5 zFYx`Ix*EB1UQr%u$NuwSt%1or8g6&@L}WCI^mHrDW`;j{ z95Mj3CU)2L-yNc6QR^6-%Sli2D57qN_pieU)XBDnJfA~*x@-Fspv!NV+= zF=&zfItfts(b=Nn>Oe?^hr|+*Bs)%GmX8m$c-MbNbrRdIwqv+#=Kj&B6}np6T&;Fo z?SneXJZZuFL1Hc!rl+jnrJT@V(!m$QL^dBQ4y+(M!*90BRLajBUWbDY_9n}EXYG0i zNy=!yhe$SRH3R%ius=6E<01BIG{&I;6)n2kRrkfok8SYQg2t=&45h3;>6R_^Gq$6) zWbT`*es6}5U_S$CmR}k?uUr?q8C7Fq*5l)C%y)KnLZ+ujpHWd68{n)gFR!k^xwCii zE-K~`lJ1abte6NLCI%<~A@lMi@^0qO--?{g5NP1dD2Qc`qR7~M%@x?Xe|&m#vNo6# zhi{X2DJaKG9i|R$G>O{?!S2P z+wT=1n}3|d&GQ9|ogM55w|1S?YDzK+A&|s}PL%0+1nm7SAscIdDm=L`&8nREyf>nx zay?Av_)IXWGBZCu(#O~zO%qX7QIXqzPCoj%ju=Ff0d5i(NuBI9ZMv=9W3f&*O)hpr zFoJYW)Iu-uGn~8;v;9BMD!qKBj`m>_`&QdMIZ2q{kkd>?)7at_rw79E;T-1Muf-py zh>4348@-+B5KUh`L~}_?f1Cf(tkORt18xqM?;caXwX(8Oe-Tu!2<;_n3sMOm;&0zz zHk_u&e_h*Hqwa)T_Qq}BtnB>!?0mG9DhRr_S=IG-F=z?TuXndJG!(Rgi2>(RSc@#a zw|{o|d%W7Z1aX362PZvFQV3nwk{@bcl6>~)P$jFQEv5T8YY^JOfmwc@Q`14$^48X` zH4~R&Xb+7M6Z!l=ks*?V+ry>by!h>NdK}<@v2S;2phw4>vH}4%RWF?=$?dDRVFbdH+KeT6q5~HK4W@KPATj#}VF~LFfTG^c2xjY*DBO*Odmi;w}X>Y4Bw@|YkUZibaaHg zJ=z-Q-QLqVMFA`mS3290jtZ z`-~$#56XK72m7^F`$*U<#kkVHvIm&~@rr_j(}_@nB?|7{Wo6}LbAJ2xBslHa0&lcp zM#>ZfPAkbM>MqYoVg+$Wca1$M8PlMnpT4Br%>dvqH@Dc|-uM2I+Gi@|xDr7tS}Ib?IP zRscP)$74xo?tWbKNyB!V4wFib>Y#|MaO6G6)dYWH6(#FGTLvIc-LqRWev@-Fl!KX) z5?Ndfwlv^u*y`0#e|}E=%r^Ab${w}%m)T4I8;O=%_jHR80^~SSoXbN5Shs~aIX4g1 zlbZd2j)ygG9~5`gWMTreD?|6cqxqnY>WJyQ zq*sJp;#-6nE+!iXt|M)F?Kii`sZ3`!+CqH0XWieA!oF9u(RaNRHDWQHG_@?1XtK?O zn3#SfAB$(yF&-YAU_duEA0J=+@FAo#@=jVBJP@O(=QayUBr}NuO1hZedPxNiWN0HeE@+5Cbe5i#v?-M49@tP^- z*g(7#SJ?AcCDhT;kSxHMyfwd#!t%V*Lc<*yqY;_BN9ZIC#VzYKGaO-r12MQwH7cE{ z;bdfg9FJd*9_$`YgR7SWi7yeIYR=F+iGa}qy;{fTtRywxEpFVM6yeg5$+Ny1hKJ(~ zmMyCB*Z(|D)iPxIRQXu_!iIXFb!Om2x;)#ZYbzXw-IJ5`eekWy@#i+<<_26$s1R;i z2*^Yz*TV?GO%Q8RIo>%o_ML}6gGvHgEO?eOoqP1%+(74P?OdgA8_s|eR+8^gBf3m3 z`SGWyHX6i!LhHY5d-9`v8d9s7?;DylCUhz|jxMCBX1&#`duy$65PhE{X>)l#Jp5}J zhX~Dy0n{&7-2^A0uv4+;=qyHw6VeEP=%M5w!0xjL79!L+!}tc>hg`z*~N_?hC|ukAf~#l4TM^O zxZYqygOD%3n?(7TwH7d2Y=ebaNFBKJRLl1vlwfcnU?0>aC(Tp zIekZ5%Svc4v-o(X+2&!z8oUiJWlUw+B~cJH3FmvFHVVlP>5sY zM|=WU&03JOsaQr3h$1bF5|v`4c$|w(@L{f9wtpTvrA`PaXpsbSY~KNe_W1=n)C2z3MaF<4qgVe?-u>_Z3l}}_rd8pu{cvYW+jMd8RaBt zD&#?Llyesu(d~h$>2jb?Wj{0NAp3daZ;;r@>aSa4gM&bL9?%ITjjUNva3o=2l=1P~ zm6aL)*lM_K6xPweY2RG?YL+nh9C*j^l# zG2_#EVPrJ5KF*iI10__1YonFkHMn!3Ky+1IN!i^^MbwELr{OU-*i`rC^a7hRhHOERdD&>g_Z~zQLf(b9z8IzhGBZUht|efz495 zx`HY|DpMCPn-Y{`x+ORhm}g%ptT`6>1&cX2+r^o2<}&i$4)*<)BWcPxJ@mX~kW}ZE z;A60Lt#teNE;TiG1-SM`%S#cZY-!Lt@K8f;fwbD;uqmIi#K)5P`V(RhskE=G#9LTU z`BXlPyC#8W0w+Lmd?LfAP!Eq#5A;z1L1KCl$E_j3DF*3G5Rp`e(_|IDPG!o-=uA_g zce^l;n=fXv~xRW_Ln*HTV zN}^j&VVUc?!L&Mj!rwI+2m?{u?CM|1DGOv3jd`O%wV_D|zGSIW$Gd;Wibe9izF%9f zoDi1F1lN)weeNTL8y^&cyHmkxq`I}KH7q$5Jsu|dYDWUJ|D>N0kemdkw8T@V zTkOvyWjisL40$+KX8z2tnN_M0s>j<3agw zX$%d`&hCzWbwIBrYFB~i=wSIdO~BXim?}{*F($t79{u1_<|JD5W1OSz?&2&in_fc_ z+=Ha#D;?he`H=Sy>g7S#6Lm{4FqoyJ`eZQrH8&T3`oqXjU-FQt@tUQ$Zlxgr7lA(p zOU*48=N(Uul<(+#)*uL_C^=sE^Tsi}KP!v+DsR2<;p+L{=?}ZzLz{JOR=-`)j<7I< zgddEksWqSe#vc}gFS zl(Ye!d)zFX85M`Hx8Yg;2uU-;{GDe_|7>y5!{u;hJhi0cBHT_^sm=z4rP`FHYj0z8 zTY{vMu4mfEtRyuv)A4uzleB==;w5Vk6a)X6!4x{6=VsA7+jVV?=!20!asy=JNPPGJ zDZcU(`U(kmw2O+Y^L2QZ_YugiP?x5{lU{%7dC5iwEq!X)gxDX(&O6NS^UqI+Iz2Mf_a4(`W4MIEpUdes4|CT!68$b@(5@$Y_}NR z*i`Buc|PbHzSj}pFNMHy9?pPv#NyAO!){Gq2Z1(uVW3NXbAA|lmtSve^wkddrhzw?HI1M<>ReV-JJ zTq2};;&pI*sgxVA5#rz>QM)_@+9Egme|IdoI68%3j^zr`W_aVr(us0Y=fTJV*@cK3 zbrt538Rg|}kI)J#$4vRaOEtaEbjQYq(7CqKu8G#MTaB3|baV8Jm)BGRovuxB`#3CK zYOATJ1V@(hiPAQ5huOc)%*)HlEh#HZHlVU)U>6t{XJut&YGSzu>Jtl=uqsCp_u?N23Jc?UXJn4wM@Rpl@bsyp z>Y!(pNTs~7$_qy#XgavsIv+qthMD;YsT3;yh9EbAr<^Gt%{o-3s9ssvy5)%K8uRGR z^!Ixrl4mc^3KbOywbQBh*AeK?1Wr4=@nPylEJGGZ7@9DPU&N2M@#7q3b4&nUC=7g* zuURxkdJD?j|ApjJEstW3wO}MM=Z{glKOIu+hu?+BA-%4YC}g$Xp9TV7D1*mctu~$p zRE-Va(z4nCbYkfd5StztcR@HtaZuJH3NKwh+1Q9~iozBmqrUwP^b{*)OwmUsWs8iEqrV$PT%&$vqol zBQHf0k%f5=XfV+DG4P3wQ9T0=6UsD{;HS+^`a-%dwXz40Sus>~mCdzg{l(^ay^w&Jx|rQ3ml@o4pB_ z-jRUPL)s2)$L{0}K{z$?9@zg}o?Th5-Ru^u3=D)cuZ1pzRE-TvO3C36qN5&-6Z?J2 z%*j4kYzwJ9Jq-JSgU@2q-k-)$0BZ+F$ES}|h91VPUY!89s_FhvxaAPMf+nv&{2fw< zXpHf_Ilo0Ey__M~ir|XO88#&y=vS3nh`^_uQ_HvA-E!C9*u@bfXarl&b@`Vw`oi_< zQ;tSrD*6a{c}=TreK+xyo_JdNNJRza^z_i;^`hlvkD8j8FL>p?{0MAmX?nf7o&)>s z`P7GzvB9DJ9jM6)dkcA1FV>rFVi{O<-7TWtc(ko>>TOO|zEFQfsK!a;dtYqb`O*?N zh<;?vwhtFK^~=UOs`w`W=no$*bwp?j3t#K&J9gNl31|u5vt7www6Pvl zQ$uWeXNn?8uLUPYn)EKboi4^6bmgAH9;XOPDPF6fjqa1N`w>Zb%u+C==AZK6MXqMm*?)Y|Fhio zyLKEgV`t}((Q}iuaI~i<5J^y)x_mVjb_d*!)7EP+Z?TC>Cw=+!rOJM#Kh0*zNIf6y zlmX(y!oZBa;rRt059*Yx!E6g8JyOci#B|@*NmW?^MG6ch879V{0^eHcTiMGlDsoR^ z*p-IEy21P{OkS^wY*$ctTXkqk=ZWBEy<+R^rZ-K%MpA0W?N39&&m2NUfOUODl%&|O z`PZ*sfRO8smRTrRTLVUs%d)tDYW)7)eOJRu2#QB>R5^Z6e4nO1;4L@RAlp#* z6T>2fgvx;4!=3FbHy$aeN9tzW=P?7-$5geAG`9$n_w#R?%JVB%Kt}>XZp*(`0bj8I=W=R01fA1Yq)R~d|Z3d1vt-;nYPqi^U2R9_(n`f#!PcSpy<_BP8p z0eROvFLktxQM+*+B^elqmc5yF-JYnV=hDT9PvFDV7#~F-j29;>Z8iq)5;TJ2LHqW# zFCW5`-pMh7>31-{%%p%@1(gpV?2e}=&{&u9@muBQ-HeZ8sOdhNfOo!v& z$E?n+{%%=93DMO#?^74Y*>Q7BcC{BGiuF>xK0go7(IC0FSS6X2oeeL@pXq_W zJX>1+X{D$@83-TjR7mZd>8|4~41_*3;Kq@XYJ06gSy|m%apLQQ9SA-iED-|3LlQJt zJ_evq80@(^g{47b=cE%SONSrrkElnSoE%%kOJPn6M$yd|UK}xm4_q z1PO5V(1AaUkN@tLRPK;ePU#`|CN~cxCO_Aeec4zG`A*~h&q_~8r~e4UuJ z7i|YO!PRE8KTUx09LWSkFyeemE-U+1qMD`5l%DE-Zq~c7F;#sC$19M0V=>@Q#HG#> zCUKJigahsEvILF!dX=G3F{`MhC3-SG?U^v$g2WUmRD}%FH9u)zUwSiFk2Au^r+yeI zDTut=IEwfgR5#zz9_}1O7cT2LFIE}(62o?e4d|f(Z0nt>jqHgBg@Py5bMqUqK*G^y zZS``ho-OU#)_u|WQ3DPZtm5>lNk3<1c0x%%VN=skxmUVZ$qRTbV0(Lc+1qW$#AwCD zEZaJ(AlWq6?mfK!f|bNQ*R0*xvZsUbWo!MpD-bYU1s8e5Vhlkbeay?rUR__o4f3BT z`f%!f-=qhuN|*Ey@a zx*DuKSV=etiF-Bb&OxIPnR-Ik1d{%XOD#Z8BDN9XKEZ)bKIEy@)SXU$aF9y&kV;v9 zzYqaXv2%6RpNa{9ev0!LF`KEnD69I`_8S`;&j-Frm&!GpzvW`*8b5k)%^Yg-DvS!G@MQ~Fsrj2HH3Dk74D0efc zs2uzpgQ@|1G*BuBt|Np+%+zgip*F`wwn!vg^~j#YUNIXVGlO~r?_(3*J0D5XhD_lb zP-^)cZJn29yc!yRoYwg%!kl)Fw((7Rf~jell4oZl78amQfji!-m2AfC%J)RIQ@giZ ziQ@Oj@TSkV8jmkhm#1oDve`6N&0DT!Mhmb-;I&#I8MST%wVETfstvBn|D2{3hS)i= zqus>hVinKo#m&cOW*~(E2C3V$-g!<`?SUV#LeJR9{R2frgr9p7D$+fW`r413Dbh=D z5=0GAFFAdpZ;9A(=dsSZ`1{a281ymOAb72;h|#D6d`DE!FF-cS!6 zU8A^GXy51qnWtstWj$1Jgq3YVfkspZkR%3>)fOlS9%J2VY-ng{Vc`}MvOeCa44C+7 zLhl9!qE=!#8kYhZj6H0KWeSs1=u%X#yO@Ifg@(0cB1<_bEIU~!Fm@nU0MMCN(1Ow+D%qy2@+wg+>sFaVrvKE0UXpw=KHqw%6Bf zKH}r+YjT=WQflrQ$sz2p8XjBi0tOl?$rWygTxRm^Vm8JIQ&25oU}5)Ovovn7gay%3 zE!Mg+xEM}4wEM8T{rshxnywa-38&}_7I~Q6$3^1}%}a+IuE@rYH=q>l@vK0PyhuntCk*6ZjY_sbJD3#v(o%U0= z^IawUfYamUedqe+%#;+=#B8LJ7aXXgvyC@&9Ss5-PMEMfB|s9%xh?k%nsYhkmsePD z<_5r6T|_{jkD~_D)C^e_5$1`i@Qobl-`YwFCZS?WPUNt*n*^b!l1YY6GLGM;Wsv0B zAM=V16JH#0zV?)HDKtP6hG(LJh1pQ9etz7RS9BJ zlx5m_H7WN^@Ko_CY1KLe#)wfDAV;bD`DlB7exF^v#Y>W8>m6-|0Tss*I{RvaGHPaq z1iCqOUm|E1GMAUhadBq|!I)9ZVFw{8*WsU&1lmBL=N-4{pSipJ79}S)m17hJg#X^g zgm7;OhG+fOaosuj4f>0)Mo0J^C6MqyFdG)u>&wW$9~Go(FD^a(-XVk0R^3l0}IR z4#8iapi#88MyCCd2tU7wsQi~?6k~`y+y3@$SSKQ>QA10!o*`$*R36FLjpI)Q?XW4| z@3C?5{5O-z+H125`%grlf(&ET)EuRujS>R#KTjxbWZJp&iJo`q?Jld%*A@?@O%iD7H%%=QEnZen^Fm_*xSledgBUn6 z@@A1`40ux9W7(DOx_*l;^6qDhId9h=D@!A*T0r$cvQ#ndFop!d!J+v4P$E`tr}(X= z={W5DeFw`aM3KfYEs_77aXsgDrZZz5CdM4zV0l@lMv(lAOy1)TcE(@4sm(1S!bKV# z>j=UFU?5Fu{OrZ1zcgOKuLasTv^$~iHl9qAVT6hqsVMFSzDgbXXE6Kivzk~j7%Iss ze4f$AVQaM=l@>D$5IqeQ8Dehe?4}Kj+uMbOA1v$sB9yctszXiZjc$|2lbk++y?u%F z=yr9vG?hG6m6X6zt#xHLal*z4QPD073>H{wsa2GI#Yr<&fE&`bvORLi&0LC*lno_84Z*w$SzTH@Z>Bbfm0khAaE2SWX=f>tWH?+V~u2U=lluE>a7Ryxi7Ba3NS+yB0SB5#4DiRCVB3I#zr^KV|MM@OrpaV5CI9)dm*ju{6%X55PSa*+1}RQtrBzB~ zkdm3fEjaH$(hBhXrRe27$dBKh@0sn$0BXk^JK2JQcAoYT(iYj|M+o(hn1#8|nOlfJD7}#zXlMckIYmlN`6>uYxoWy9=+VoM;c^QwodXDTubz);9=>#p$Z!Hmi%w}TV;R11| zKN@BRv!K-QV0hHKvht_t9Z-1rHL0lqt>Bd>Yi4#oLE%=UprC+#Svfu?x{44) zR69}r`)iGij0r8Z|J+)irmw?&4r;PTi|BCPUnb>z{tPWINbkJr(b#^4f{dJ)*o8|F zvC?0BM~M{U8YztkYK+Oy%1Yu&WG5jmp@kXpcg1Tz%rM!9Gpo&hSheS76FC1o5J&Ob zwl*JS=G5~@0|QAhk_T2EVK#7gC3J$69D0U~Ar>Y8vB&P84|g}Bg4~YrAs|CZzJ!n8 z>GUL&o#+bH+p3>AGOV`N_O3C4UjKQ-FJJqd9j=SAjS*^VMqf{f*lsDEQV(u+BlIgE z`FTK&_Y^20oM786tgeP_dC}y0(m8jJPGl{A5t;bj>%Kq(t??pFE zrKgWU#S1z|c=XlO)L8U@#466HeF&zP-Ep+g41mt7{VLGg!})r|`=rLA$6)2ULd-5O z$XWsG7&mUjg0knm%N}b%7Vc1|)IZl*6`tTHCfouRldH1}{J%y7`M4i#h}&)@0g;Ns zc>8`B=xbkQ(--Ix65+N_l;FAvg>s(mnSo2<^Bl?^vaXidcgw}6_OMV1xVGiOJVe|> zO4`Gf*ng|U#iYJe%68=Oo#aPJDr~@shDM8C0#;K~XKj762A?&$ib}whEe$CR?We@6 zSCD=8xnpo}ba{5xU~>kI9`-+vySqUNNKsiOw&3z_(Y$zlX3a+O&qw;`Y&B|F<=^-H zG|ltBFRK6F|0f=X1OqwFKM#;7JD_B#=(qm+8GkZ?C4wMThX0-y=-atTLrAL#xxeOm zSpWWtqIRJ8_x8rjSIypcZY=n~^Unc;zD?G*MktpS(_MCU5%I%`orIg{5c2ZSWS=TN J$(Pjk_#gG~8)X0h literal 0 HcmV?d00001 diff --git a/docs/zh/06-advanced/05-data-in/pic/pspace-06.png b/docs/zh/06-advanced/05-data-in/pic/pspace-06.png new file mode 100644 index 0000000000000000000000000000000000000000..07ceab999f431d831510208dcd5243433167d4ab GIT binary patch literal 20081 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 literal 0 HcmV?d00001 diff --git a/docs/zh/06-advanced/05-data-in/pic/pspace-07.png b/docs/zh/06-advanced/05-data-in/pic/pspace-07.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e5af6903d4d6786d8ff07a86ea29a72f935f64 GIT binary patch literal 23831 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 Date: Fri, 6 Mar 2026 15:17:23 +0800 Subject: [PATCH 05/18] feat(taosdump): delete the contents related to RESTful (#34667) * feat(taosdump): delete the contents related to RESTful * feat(taosdump): delete parameter parsing related to RESTful * feat(cli): delete the contents related to RESTful --- docs/en/14-reference/02-tools/07-taos-cli.md | 5 ++--- docs/en/14-reference/02-tools/09-taosdump.md | 1 - docs/zh/14-reference/02-tools/07-taos-cli.md | 7 +++---- docs/zh/14-reference/02-tools/09-taosdump.md | 1 - tools/taos-tools/src/taosdump.c | 4 ---- 5 files changed, 5 insertions(+), 13 deletions(-) diff --git a/docs/en/14-reference/02-tools/07-taos-cli.md b/docs/en/14-reference/02-tools/07-taos-cli.md index c3a9e6c1bc48..7ee45448f35d 100644 --- a/docs/en/14-reference/02-tools/07-taos-cli.md +++ b/docs/en/14-reference/02-tools/07-taos-cli.md @@ -46,7 +46,7 @@ You can change the behavior of the TDengine CLI by configuring command line para - If the `-p` parameter is not followed by a password string, the user will be prompted to enter the password, e.g., `taos -u root -p`. - If the `-p` parameter is directly followed by a password string, that password will be used for connection, e.g., `taos -u root -ptaosdata`. - -?, --help: Prints out all command line parameters. -- -s COMMAND: SQL command executed in non-interactive mode. +- -s COMMAND: SQL command executed in non-interactive mode. Use the `-s` parameter to execute SQL non interactively, and exit after execution. This mode is suitable for use in automated scripts. For example, connect to the server h1.taos.com with the following command, and execute the SQL specified by `-s`: @@ -54,7 +54,7 @@ You can change the behavior of the TDengine CLI by configuring command line para taos -h my-server -s "use db; show tables;" ``` -- -c CONFIGDIR: Specify the configuration file directory. +- -c CONFIGDIR: Specify the configuration file directory. In Linux, the default is `/etc/tao`. The default name of the configuration file in this directory is `taos.cfg`. Use the `-c` parameter to change the location where the `taosc` client loads the configuration file. For client configuration parameters, refer to [Client Configuration](../../components/taosc). The following command specifies the `taos.cfg` configuration file under `/root/cfg/` loaded by the `taosc` client. @@ -80,7 +80,6 @@ You can change the behavior of the TDengine CLI by configuring command line para - If the `-q` parameter is not followed by a token string, the user will be prompted to enter the token, e.g., `taos -u root -q`. - If the `-q` parameter is directly followed by a token string, that token will be used for connection, e.g., `taos -u root -q`. - -r: Convert time columns to unsigned 64-bit integer type output (i.e., uint64_t in C language). -- -R: Connect to the server using RESTful mode. - -t: Test the startup status of the server, status same as -k. - -w DISPLAYWIDTH: Client column display width. - -z TIMEZONE: Specifies the timezone, default is the local timezone. diff --git a/docs/en/14-reference/02-tools/09-taosdump.md b/docs/en/14-reference/02-tools/09-taosdump.md index 414a701d020c..5148b652cf68 100644 --- a/docs/en/14-reference/02-tools/09-taosdump.md +++ b/docs/en/14-reference/02-tools/09-taosdump.md @@ -91,7 +91,6 @@ Usage: taosdump [OPTION...] dbname [tbname ...] -C, --cloud=CLOUD_DSN Alias for the -X/--dsn option. -k, --retry-count=VALUE Set the number of retry attempts for connection or query failures. - -R, --restful Use RESTful interface to connect server. -t, --timeout=SECONDS The timeout seconds for websocket to interact. -X, --dsn=DSN The dsn to connect the cloud service. -z, --retry-sleep-ms=VALUE Sleep interval between retries, in milliseconds. diff --git a/docs/zh/14-reference/02-tools/07-taos-cli.md b/docs/zh/14-reference/02-tools/07-taos-cli.md index 09a600dcb218..f7bdd8010ef9 100644 --- a/docs/zh/14-reference/02-tools/07-taos-cli.md +++ b/docs/zh/14-reference/02-tools/07-taos-cli.md @@ -48,7 +48,7 @@ taos> quit - -?, --help:打印出所有命令行参数。 - -s COMMAND:以非交互模式执行的 SQL 命令。 - 使用 `-s` 参数可进行非交互式执行 SQL,执行完成后退出,此模式适合在自动化脚本中使用。 + 使用 `-s` 参数可进行非交互式执行 SQL,执行完成后退出,此模式适合在自动化脚本中使用。 如以下命令连接到服务器 h1.taos.com, 执行 -s 指定的 SQL: ```bash @@ -58,7 +58,7 @@ taos> quit - -c CONFIGDIR:指定配置文件目录。 Linux 环境下默认为 `/etc/taos`,该目录下的配置文件默认名称为 `taos.cfg`。 - 使用 `-c` 参数改变 `taosc` 客户端加载配置文件的位置,客户端配置参数参考 [客户端配置](../../components/taosc)。 + 使用 `-c` 参数改变 `taosc` 客户端加载配置文件的位置,客户端配置参数参考 [客户端配置](../../components/taosc)。 以下命令指定了 `taosc` 客户端加载 `/root/cfg/` 下的 `taos.cfg` 配置文件。 ```bash @@ -84,7 +84,6 @@ taos> quit - 如果 `-q` 参数后面不跟 Token 字符串,则会提示用户输入 Token,如:`taos -u root -q`。 - 如果 `-q` 参数后面直接跟 Token 字符串,则使用该 Token 进行连接,如:`taos -u root -q`。 - -r:将时间列转化为无符号 64 位整数类型输出 (即 C 语言中 uint64_t)。 -- -R:使用 RESTful 模式连接服务端。 - -t:测试服务端启动状态,状态同 -k。 - -w DISPLAYWIDTH:客户端列显示宽度。 - -z TIMEZONE:指定时区,默认为本地时区。 @@ -119,7 +118,7 @@ taos> source ; ### 设置字符列显示宽度 -可以在 TDengine TSDB CLI 里使用如下命令调整字符串类型字段列显示宽度,默认显示宽度为 30 个字符。 +可以在 TDengine TSDB CLI 里使用如下命令调整字符串类型字段列显示宽度,默认显示宽度为 30 个字符。 以下命令设置了显示宽度为 120 个字符: ```sql diff --git a/docs/zh/14-reference/02-tools/09-taosdump.md b/docs/zh/14-reference/02-tools/09-taosdump.md index 8bc3f9796f74..5865d54a5bd8 100644 --- a/docs/zh/14-reference/02-tools/09-taosdump.md +++ b/docs/zh/14-reference/02-tools/09-taosdump.md @@ -89,7 +89,6 @@ Usage: taosdump [OPTION...] dbname [tbname ...] -C, --cloud=CLOUD_DSN Alias for the -X/--dsn option. -k, --retry-count=VALUE Set the number of retry attempts for connection or query failures. - -R, --restful Use RESTful interface to connect server. -t, --timeout=SECONDS The timeout seconds for websocket to interact. -X, --dsn=DSN The dsn to connect the cloud service. -z, --retry-sleep-ms=VALUE Sleep interval between retries, in milliseconds. diff --git a/tools/taos-tools/src/taosdump.c b/tools/taos-tools/src/taosdump.c index 92749ec1366a..87664bd981cb 100644 --- a/tools/taos-tools/src/taosdump.c +++ b/tools/taos-tools/src/taosdump.c @@ -152,7 +152,6 @@ static struct argp_option options[] = { {"inspect", 'I', 0, 0, "inspect avro file content and print on screen.", 10}, {"no-escape", 'n', 0, 0, "No escape char '`'. Default is using it.", 10}, - {"restful", 'R', 0, 0, "Use RESTful interface to connect server.", 11}, {"cloud", 'C', "CLOUD_DSN", 0, OLD_DSN_DESC, 11}, {"timeout", 't', "SECONDS", 0, "The timeout seconds for " "websocket to interact."}, @@ -863,9 +862,6 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state) { } g_args.thread_num = atoi((const char *)arg); break; - case 'R': - warnPrint("%s\n", "'-R' is not supported, ignore this options."); - break; case 'C': case 'X': if (arg) { From df0e294c7a1f05707b6e72926ef5dec0811dadb4 Mon Sep 17 00:00:00 2001 From: Jinqing Kuang Date: Fri, 6 Mar 2026 15:58:28 +0800 Subject: [PATCH 06/18] fix: reclaim paged buffer temp file space on clear (#34664) --- source/util/src/tpagedbuf.c | 43 ++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/source/util/src/tpagedbuf.c b/source/util/src/tpagedbuf.c index 6f7d73962591..865b1e2990df 100644 --- a/source/util/src/tpagedbuf.c +++ b/source/util/src/tpagedbuf.c @@ -67,6 +67,13 @@ static int32_t createDiskFile(SDiskbasedBuf* pBuf) { return terrno; } + int64_t realSize = -1; + if (taosFStatFile(pBuf->pFile, &realSize, NULL) != TSDB_CODE_SUCCESS) { + realSize = -1; + } + uDebug("paged buffer file opened, path:%s, realSize:%" PRId64 ", nextPos:%" PRIu64 ", fileSize:%" PRIu64 ", %s", + pBuf->path, realSize, pBuf->nextPos, pBuf->fileSize, pBuf->id); + return TSDB_CODE_SUCCESS; } @@ -625,7 +632,8 @@ void destroyDiskbasedBuf(SDiskbasedBuf* pBuf) { int32_t code = taosCloseFile(&pBuf->pFile); if (TSDB_CODE_SUCCESS != code) { - uDebug("WARNING tPage failed to close file when destroy disk basebuf: %s", pBuf->path); + uError("failed to close paged buffer file when destroying, path:%s, closeCode:%d, err:%s, %s", pBuf->path, code, + tstrerror(code), pBuf->id); } } else { uDebug("Paged buffer closed, total:%.2f Kb, no file created, %s", pBuf->totalBufSize / 1024.0, pBuf->id); @@ -756,6 +764,22 @@ void dBufPrintStatis(const SDiskbasedBuf* pBuf) { } void clearDiskbasedBuf(SDiskbasedBuf* pBuf) { + if (pBuf == NULL) { + return; + } + + int64_t realSizeBefore = -1; + if (pBuf->pFile != NULL && taosFStatFile(pBuf->pFile, &realSizeBefore, NULL) != TSDB_CODE_SUCCESS) { + realSizeBefore = -1; + } + + const SDiskbasedBufStatis* ps = &pBuf->statis; + uDebug( + "clear paged buffer begin, pages:%d, inMemPages:%d, fileSize:%" PRIu64 ", nextPos:%" PRIu64 + ", realSize:%" PRId64 ", get/release:%d/%d, flush/load:%d/%d, %s", + pBuf->numOfPages, listNEles(pBuf->lruList), pBuf->fileSize, pBuf->nextPos, realSizeBefore, ps->getPages, + ps->releasePages, ps->flushPages, ps->loadPages, pBuf->id); + size_t n = taosArrayGetSize(pBuf->pIdList); for (int32_t i = 0; i < n; ++i) { SPageInfo* pi = taosArrayGetP(pBuf->pIdList, i); @@ -777,4 +801,21 @@ void clearDiskbasedBuf(SDiskbasedBuf* pBuf) { pBuf->totalBufSize = 0; pBuf->allocateId = -1; pBuf->fileSize = 0; + pBuf->nextPos = 0; + + if (pBuf->pFile != NULL) { + int32_t code = taosFtruncateFile(pBuf->pFile, 0); + if (code != TSDB_CODE_SUCCESS) { + uWarn("failed to truncate paged buffer file, path:%s, code:%s, %s", pBuf->path, tstrerror(code), pBuf->id); + } + } + + int64_t realSizeAfter = -1; + if (pBuf->pFile != NULL && taosFStatFile(pBuf->pFile, &realSizeAfter, NULL) != TSDB_CODE_SUCCESS) { + realSizeAfter = -1; + } + + uDebug("clear paged buffer end, pages:%d, inMemPages:%d, fileSize:%" PRIu64 ", nextPos:%" PRIu64 + ", realSize:%" PRId64 ", %s", + pBuf->numOfPages, listNEles(pBuf->lruList), pBuf->fileSize, pBuf->nextPos, realSizeAfter, pBuf->id); } From 9727457fb25d8eebcfd226cd64f153729266ad45 Mon Sep 17 00:00:00 2001 From: dongming chen Date: Fri, 6 Mar 2026 16:02:02 +0800 Subject: [PATCH 07/18] fix/6858855394-add-log-for-timer-stop (#34692) --- source/dnode/vnode/src/vnd/vnodeSync.c | 6 +++--- source/libs/sync/src/syncMain.c | 8 ++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/source/dnode/vnode/src/vnd/vnodeSync.c b/source/dnode/vnode/src/vnd/vnodeSync.c index f6a459289941..caa5ee215226 100644 --- a/source/dnode/vnode/src/vnd/vnodeSync.c +++ b/source/dnode/vnode/src/vnd/vnodeSync.c @@ -875,7 +875,7 @@ int32_t vnodeSetElectBaseline(SVnode* pVnode, int32_t ms){ } void vnodeSyncPreClose(SVnode *pVnode) { - vInfo("vgId:%d, sync pre close", pVnode->config.vgId); + vInfo("vgId:%d, vnode sync pre close", pVnode->config.vgId); int32_t code = syncLeaderTransfer(pVnode->sync); if (code) { vError("vgId:%d, failed to transfer leader since %s", pVnode->config.vgId, tstrerror(code)); @@ -894,12 +894,12 @@ void vnodeSyncPreClose(SVnode *pVnode) { } void vnodeSyncPostClose(SVnode *pVnode) { - vInfo("vgId:%d, sync post close", pVnode->config.vgId); + vInfo("vgId:%d, vnode sync post close", pVnode->config.vgId); syncPostStop(pVnode->sync); } void vnodeSyncClose(SVnode *pVnode) { - vInfo("vgId:%d, close sync", pVnode->config.vgId); + vInfo("vgId:%d, vnode close sync", pVnode->config.vgId); syncStop(pVnode->sync); } diff --git a/source/libs/sync/src/syncMain.c b/source/libs/sync/src/syncMain.c index b9553f57c0f7..9017d437a85c 100644 --- a/source/libs/sync/src/syncMain.c +++ b/source/libs/sync/src/syncMain.c @@ -1684,7 +1684,7 @@ void syncHbTimerDataFree(SSyncHbTimerData* pData) { taosMemoryFree(pData); } void syncNodeClose(SSyncNode* pSyncNode) { int32_t code = 0; if (pSyncNode == NULL) return; - sNInfo(pSyncNode, "sync close, node:%p", pSyncNode); + sNInfo(pSyncNode, "sync node close, node:%p", pSyncNode); syncRespCleanRsp(pSyncNode->pSyncRespMgr); @@ -1774,7 +1774,11 @@ int32_t syncNodeStopPingTimer(SSyncNode* pSyncNode) { int32_t code = 0; (void)atomic_add_fetch_64(&pSyncNode->pingTimerLogicClockUser, 1); bool stop = taosTmrStop(pSyncNode->pPingTimer); - sDebug("vgId:%d, stop ping timer, stop:%d", pSyncNode->vgId, stop); + if (!stop) { + sWarn("vgId:%d, failed to stop ping timer, maybe it's already stopped, stop:%d", pSyncNode->vgId, stop); + } else { + sDebug("vgId:%d, stop ping timer, stop:%d", pSyncNode->vgId, stop); + } pSyncNode->pPingTimer = NULL; return code; } From 45c08267914be6304be156418df321e057d663f0 Mon Sep 17 00:00:00 2001 From: Kaili Xu Date: Fri, 6 Mar 2026 16:04:33 +0800 Subject: [PATCH 08/18] fix: privilege, error prompt and memory leak (#34675) --- include/libs/nodes/querynodes.h | 3 +- include/util/tpriv.h | 2 +- source/client/src/clientHb.c | 2 +- source/common/src/tpriv.c | 7 ++- source/dnode/mnode/impl/src/mndConsumer.c | 1 + source/dnode/mnode/impl/src/mndDb.c | 2 + source/libs/catalog/src/catalog.c | 3 +- source/libs/catalog/src/ctgCache.c | 63 +++++++++++-------- source/libs/nodes/src/nodesCloneFuncs.c | 1 + source/libs/nodes/src/nodesUtilFuncs.c | 20 ++++-- source/libs/parser/inc/sql.y | 2 + source/libs/parser/src/parAuthenticator.c | 1 + source/libs/parser/src/parInsertSql.c | 8 +++ source/libs/parser/src/parTranslater.c | 11 +++- .../24-Users/test_user_privilege_sysinfo.py | 12 ++-- test/cases/25-Privileges/test_priv_control.py | 2 +- test/cases/25-Privileges/test_priv_rbac.py | 59 ++++++++++++++++- 17 files changed, 147 insertions(+), 52 deletions(-) diff --git a/include/libs/nodes/querynodes.h b/include/libs/nodes/querynodes.h index 8b7149224052..6789d29e7012 100644 --- a/include/libs/nodes/querynodes.h +++ b/include/libs/nodes/querynodes.h @@ -102,7 +102,8 @@ typedef struct SColumnNode { uint8_t flags; struct { uint8_t hasMask : 1; - uint8_t reserve : 7; + uint8_t appendByPrivCond : 1; + uint8_t reserve : 6; }; }; char refDbName[TSDB_DB_NAME_LEN]; diff --git a/include/util/tpriv.h b/include/util/tpriv.h index 477a640875d7..16942f80fdb6 100644 --- a/include/util/tpriv.h +++ b/include/util/tpriv.h @@ -52,7 +52,7 @@ extern "C" { #define TSDB_WORD_VARIABLES "variables" #define TSDB_WORD_INFORMATION "information" -#define PRIV_INFO_TABLE_VERSION 3 +#define PRIV_INFO_TABLE_VERSION 4 // N.B. increase this version for any update of privInfoTable typedef enum { PRIV_TYPE_UNKNOWN = -1, // ==================== Common Privilege ==================== diff --git a/source/client/src/clientHb.c b/source/client/src/clientHb.c index 8a9f6d49257b..1074c13e03f6 100644 --- a/source/client/src/clientHb.c +++ b/source/client/src/clientHb.c @@ -69,7 +69,7 @@ static int32_t hbProcessUserAuthInfoRsp(void *value, int32_t valueLen, struct SC (void)atomic_val_compare_exchange_8(&pAppHbMgr->connHbFlag, 1, 2); _return: - taosArrayDestroy(batchRsp.pArray); + tFreeSUserAuthBatchRsp(&batchRsp); return code; } diff --git a/source/common/src/tpriv.c b/source/common/src/tpriv.c index 7adb090f1eb9..6095dbc68289 100644 --- a/source/common/src/tpriv.c +++ b/source/common/src/tpriv.c @@ -37,6 +37,7 @@ static const SPrivObjInfo __privObjInfo[] = { */ #define SYS_ADMIN_BASIC_ROLES (T_ROLE_SYSDBA | T_ROLE_SYSSEC | T_ROLE_SYSAUDIT) +#define SYS_ADMIN_CORE_ROLES (T_ROLE_SYSDBA | T_ROLE_SYSSEC) #define SYS_ADMIN_INFO1_ROLES (SYS_ADMIN_BASIC_ROLES | T_ROLE_SYSINFO_1) #define SYS_ADMIN_INFO_ROLES (SYS_ADMIN_BASIC_ROLES | T_ROLE_SYSINFO_0 | T_ROLE_SYSINFO_1) #define SYS_ADMIN_EXT_ROLES (T_ROLE_SYSINFO_0 | T_ROLE_SYSINFO_1 | T_ROLE_SYSAUDIT_LOG) @@ -82,8 +83,8 @@ static SPrivInfo privInfoTable[] = { {PRIV_USER_SET_AUDIT, PRIV_CATEGORY_SYSTEM, 0, 0, T_ROLE_SYSDBA | T_ROLE_SYSAUDIT, 0, "", "SET USER AUDIT INFORMATION"}, {PRIV_USER_SET_BASIC, PRIV_CATEGORY_SYSTEM, 0, 0, T_ROLE_SYSDBA, 0, "", "SET USER BASIC INFORMATION"}, - {PRIV_USER_UNLOCK, PRIV_CATEGORY_SYSTEM, 0, 0, T_ROLE_SYSDBA, 0, "", "UNLOCK USER"}, - {PRIV_USER_LOCK, PRIV_CATEGORY_SYSTEM, 0, 0, T_ROLE_SYSDBA, 0, "", "LOCK USER"}, + {PRIV_USER_UNLOCK, PRIV_CATEGORY_SYSTEM, 0, 0, SYS_ADMIN_CORE_ROLES, 0, "", "UNLOCK USER"}, + {PRIV_USER_LOCK, PRIV_CATEGORY_SYSTEM, 0, 0, SYS_ADMIN_CORE_ROLES, 0, "", "LOCK USER"}, {PRIV_USER_SHOW, PRIV_CATEGORY_SYSTEM, 0, 0, SYS_ADMIN_INFO1_ROLES, 0, "", "SHOW USERS"}, {PRIV_USER_ALTER, PRIV_CATEGORY_SYSTEM, 0, 0, SYS_ADMIN_INFO_ROLES, 0, "", "ALTER USER"}, {PRIV_USER_SHOW_SECURITY, PRIV_CATEGORY_SYSTEM, 0, 0, SYS_ADMIN_BASIC_ROLES, 0, "", "SHOW USERS SECURITY INFORMATION"}, @@ -91,6 +92,8 @@ static SPrivInfo privInfoTable[] = { // Role Management {PRIV_ROLE_CREATE, PRIV_CATEGORY_SYSTEM, 0, 0, T_ROLE_SYSDBA, 0, "", "CREATE ROLE"}, {PRIV_ROLE_DROP, PRIV_CATEGORY_SYSTEM, 0, 0, T_ROLE_SYSDBA, 0, "", "DROP ROLE"}, + {PRIV_ROLE_UNLOCK, PRIV_CATEGORY_SYSTEM, 0, 0, SYS_ADMIN_CORE_ROLES, 0, "", "UNLOCK ROLE"}, + {PRIV_ROLE_LOCK, PRIV_CATEGORY_SYSTEM, 0, 0, SYS_ADMIN_CORE_ROLES, 0, "", "LOCK ROLE"}, {PRIV_ROLE_SHOW, PRIV_CATEGORY_SYSTEM, 0, 0, SYS_ADMIN_INFO1_ROLES, 0, "", "SHOW ROLES"}, // Token Privileges diff --git a/source/dnode/mnode/impl/src/mndConsumer.c b/source/dnode/mnode/impl/src/mndConsumer.c index bb1dc324cf84..a471402a12c4 100644 --- a/source/dnode/mnode/impl/src/mndConsumer.c +++ b/source/dnode/mnode/impl/src/mndConsumer.c @@ -1193,6 +1193,7 @@ static int32_t mndRetrieveConsumer(SRpcMsg *pReq, SShowObj *pShow, SSDataBlock * END: sdbRelease(pSdb, pConsumer); sdbCancelFetch(pSdb, pShow->pIter); + mndReleaseUser(pMnode, pOperUser); if (code != 0) { mError("show consumer failed, code:%d", code); return code; diff --git a/source/dnode/mnode/impl/src/mndDb.c b/source/dnode/mnode/impl/src/mndDb.c index 4387764c5fa8..4abc365db78e 100644 --- a/source/dnode/mnode/impl/src/mndDb.c +++ b/source/dnode/mnode/impl/src/mndDb.c @@ -3126,6 +3126,8 @@ static void mndDumpDbInfoData(SMnode *pMnode, SSDataBlock *pBlock, SDbObj *pDb, TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, precVstr, false), &lino, _OVER); } else if (i == 15) { TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, statusVstr, false), &lino, _OVER); + } else if (i == 28) { + TAOS_CHECK_GOTO(colDataSetVal(pColInfo, rows, (const char *)&pDb->cfg.keepTimeOffset, false), &lino, _OVER); } else { colDataSetNULL(pColInfo, rows); } diff --git a/source/libs/catalog/src/catalog.c b/source/libs/catalog/src/catalog.c index e244df276476..518fab8e28fe 100644 --- a/source/libs/catalog/src/catalog.c +++ b/source/libs/catalog/src/catalog.c @@ -1863,7 +1863,8 @@ static int32_t ctgGetUserAuth(SCatalog* pCtg, SRequestConnInfo* pConn, const cha } /** - * @brief shallow copy + * @brief shallow copy, only applicable to use non-pointer fields, while pointer fields may become invalid after return, + * caller should make deep copy if needed later. */ int32_t catalogGetUserAuth(SCatalog* pCtg, SRequestConnInfo* pConn, const char* user, SGetUserAuthRsp* pRes) { CTG_API_ENTER(); diff --git a/source/libs/catalog/src/ctgCache.c b/source/libs/catalog/src/ctgCache.c index 7a5969a5720a..3d5109d01160 100644 --- a/source/libs/catalog/src/ctgCache.c +++ b/source/libs/catalog/src/ctgCache.c @@ -972,7 +972,7 @@ void ctgDequeue(SCtgCacheOperation **op) { *op = node->op; } -int32_t ctgEnqueue(SCatalog *pCtg, SCtgCacheOperation *operation) { +int32_t ctgEnqueue(SCatalog *pCtg, SCtgCacheOperation *operation, bool *enqueued) { int32_t code = TSDB_CODE_SUCCESS; SCtgQNode *node = taosMemoryCalloc(1, sizeof(SCtgQNode)); if (NULL == node) { @@ -994,8 +994,7 @@ int32_t ctgEnqueue(SCatalog *pCtg, SCtgCacheOperation *operation) { CTG_RET(code); } } - - + CTG_LOCK(CTG_WRITE, &gCtgMgmt.queue.qlock); if (gCtgMgmt.queue.stopQueue) { @@ -1010,6 +1009,9 @@ int32_t ctgEnqueue(SCatalog *pCtg, SCtgCacheOperation *operation) { gCtgMgmt.queue.stopQueue = operation->stopQueue; CTG_UNLOCK(CTG_WRITE, &gCtgMgmt.queue.qlock); + if (enqueued) { + *enqueued = true; // the ownership of operation is transferred to queue + } ctgDebug("%sync action [%s] added into queue", syncOp ? "S": "As", opName); @@ -1071,7 +1073,7 @@ int32_t ctgDropDbCacheEnqueue(SCatalog *pCtg, const char *dbFName, int64_t dbId) op->data = msg; - CTG_ERR_JRET(ctgEnqueue(pCtg, op)); + CTG_ERR_JRET(ctgEnqueue(pCtg, op, NULL)); return TSDB_CODE_SUCCESS; @@ -1108,7 +1110,7 @@ int32_t ctgDropDbVgroupEnqueue(SCatalog *pCtg, const char *dbFName, bool syncOp) op->data = msg; - CTG_ERR_JRET(ctgEnqueue(pCtg, op)); + CTG_ERR_JRET(ctgEnqueue(pCtg, op, NULL)); return TSDB_CODE_SUCCESS; @@ -1148,7 +1150,7 @@ int32_t ctgDropStbMetaEnqueue(SCatalog *pCtg, const char *dbFName, int64_t dbId, op->data = msg; - CTG_ERR_JRET(ctgEnqueue(pCtg, op)); + CTG_ERR_JRET(ctgEnqueue(pCtg, op, NULL)); return TSDB_CODE_SUCCESS; @@ -1182,7 +1184,7 @@ int32_t ctgDropTbMetaEnqueue(SCatalog *pCtg, const char *dbFName, int64_t dbId, op->data = msg; - CTG_ERR_JRET(ctgEnqueue(pCtg, op)); + CTG_ERR_JRET(ctgEnqueue(pCtg, op, NULL)); return TSDB_CODE_SUCCESS; @@ -1230,7 +1232,7 @@ int32_t ctgUpdateVgroupEnqueue(SCatalog *pCtg, const char *dbFName, int64_t dbId op->data = msg; - CTG_ERR_JRET(ctgEnqueue(pCtg, op)); + CTG_ERR_JRET(ctgEnqueue(pCtg, op, NULL)); return TSDB_CODE_SUCCESS; @@ -1272,7 +1274,7 @@ int32_t ctgUpdateDbCfgEnqueue(SCatalog *pCtg, const char *dbFName, int64_t dbId, op->data = msg; - CTG_ERR_JRET(ctgEnqueue(pCtg, op)); + CTG_ERR_JRET(ctgEnqueue(pCtg, op, NULL)); return TSDB_CODE_SUCCESS; @@ -1312,7 +1314,7 @@ int32_t ctgUpdateTbMetaEnqueue(SCatalog *pCtg, STableMetaOutput *output, bool sy op->data = msg; - CTG_ERR_JRET(ctgEnqueue(pCtg, op)); + CTG_ERR_JRET(ctgEnqueue(pCtg, op, NULL)); return TSDB_CODE_SUCCESS; @@ -1351,7 +1353,7 @@ int32_t ctgUpdateVgEpsetEnqueue(SCatalog *pCtg, char *dbFName, int32_t vgId, SEp op->data = msg; - CTG_ERR_JRET(ctgEnqueue(pCtg, op)); + CTG_ERR_JRET(ctgEnqueue(pCtg, op, NULL)); return TSDB_CODE_SUCCESS; @@ -1362,10 +1364,11 @@ int32_t ctgUpdateVgEpsetEnqueue(SCatalog *pCtg, char *dbFName, int32_t vgId, SEp int32_t ctgUpdateUserEnqueue(SCatalog *pCtg, SGetUserAuthRsp *pAuth, bool syncOp) { int32_t code = 0; + bool enqueued = false; SCtgCacheOperation *op = taosMemoryCalloc(1, sizeof(SCtgCacheOperation)); if (NULL == op) { ctgError("malloc %d failed", (int32_t)sizeof(SCtgCacheOperation)); - CTG_ERR_RET(terrno); + CTG_ERR_JRET(terrno); } op->opId = CTG_OP_UPDATE_USER; @@ -1383,13 +1386,21 @@ int32_t ctgUpdateUserEnqueue(SCatalog *pCtg, SGetUserAuthRsp *pAuth, bool syncOp op->data = msg; - CTG_ERR_JRET(ctgEnqueue(pCtg, op)); - - return TSDB_CODE_SUCCESS; + code = ctgEnqueue(pCtg, op, &enqueued); + // Clear source pointers to transfer ownership after successful enqueue + if (enqueued) { + pAuth->objPrivs = NULL; + pAuth->selectTbs = NULL; + pAuth->insertTbs = NULL; + pAuth->deleteTbs = NULL; + pAuth->tokens = NULL; + pAuth->ownedDbs = NULL; + } _return: - - tFreeSGetUserAuthRsp(pAuth); + if (!enqueued) { + tFreeSGetUserAuthRsp(pAuth); + } CTG_RET(code); } @@ -1417,7 +1428,7 @@ int32_t ctgUpdateTbIndexEnqueue(SCatalog *pCtg, STableIndex **pIndex, bool syncO op->data = msg; - CTG_ERR_JRET(ctgEnqueue(pCtg, op)); + CTG_ERR_JRET(ctgEnqueue(pCtg, op, NULL)); *pIndex = NULL; return TSDB_CODE_SUCCESS; @@ -1454,7 +1465,7 @@ int32_t ctgDropTbIndexEnqueue(SCatalog *pCtg, SName *pName, bool syncOp) { op->data = msg; - CTG_ERR_JRET(ctgEnqueue(pCtg, op)); + CTG_ERR_JRET(ctgEnqueue(pCtg, op, NULL)); return TSDB_CODE_SUCCESS; @@ -1488,7 +1499,7 @@ int32_t ctgClearCacheEnqueue(SCatalog *pCtg, bool clearMeta, bool freeCtg, bool msg->freeCtg = freeCtg; op->data = msg; - CTG_ERR_JRET(ctgEnqueue(pCtg, op)); + CTG_ERR_JRET(ctgEnqueue(pCtg, op, NULL)); return TSDB_CODE_SUCCESS; @@ -1526,7 +1537,7 @@ int32_t ctgUpdateViewMetaEnqueue(SCatalog *pCtg, SViewMetaRsp *pRsp, bool syncOp op->data = msg; - CTG_ERR_RET(ctgEnqueue(pCtg, op)); + CTG_ERR_RET(ctgEnqueue(pCtg, op, NULL)); return TSDB_CODE_SUCCESS; @@ -1567,7 +1578,7 @@ int32_t ctgDropViewMetaEnqueue(SCatalog *pCtg, const char *dbFName, uint64_t dbI op->data = msg; - CTG_ERR_JRET(ctgEnqueue(pCtg, op)); + CTG_ERR_JRET(ctgEnqueue(pCtg, op, NULL)); return TSDB_CODE_SUCCESS; @@ -1601,7 +1612,7 @@ int32_t ctgUpdateTbTSMAEnqueue(SCatalog *pCtg, STSMACache **pTsma, int32_t tsmaV op->data = msg; - CTG_ERR_JRET(ctgEnqueue(pCtg, op)); + CTG_ERR_JRET(ctgEnqueue(pCtg, op, NULL)); *pTsma = NULL; return TSDB_CODE_SUCCESS; @@ -1638,7 +1649,7 @@ int32_t ctgDropTbTSMAEnqueue(SCatalog* pCtg, const STSMACache* pTsma, bool sync tstrncpy(msg->tsmaName, pTsma->name, TSDB_TABLE_NAME_LEN); op->data = msg; - CTG_ERR_JRET(ctgEnqueue(pCtg, op)); + CTG_ERR_JRET(ctgEnqueue(pCtg, op, NULL)); return TSDB_CODE_SUCCESS; @@ -1721,7 +1732,7 @@ int32_t ctgDropTSMAForTbEnqueue(SCatalog *pCtg, SName *pName, bool syncOp) { CTG_ERR_JRET(code); - CTG_ERR_JRET(ctgEnqueue(pCtg, pOp)); + CTG_ERR_JRET(ctgEnqueue(pCtg, pOp, NULL)); return TSDB_CODE_SUCCESS; @@ -1767,7 +1778,7 @@ int32_t ctgUpdateDbTsmaVersionEnqueue(SCatalog* pCtg, int32_t tsmaVersion, const op->data = msg; - CTG_ERR_JRET(ctgEnqueue(pCtg, op)); + CTG_ERR_JRET(ctgEnqueue(pCtg, op, NULL)); return TSDB_CODE_SUCCESS; diff --git a/source/libs/nodes/src/nodesCloneFuncs.c b/source/libs/nodes/src/nodesCloneFuncs.c index 316af87c03d1..602dc8d1867c 100644 --- a/source/libs/nodes/src/nodesCloneFuncs.c +++ b/source/libs/nodes/src/nodesCloneFuncs.c @@ -135,6 +135,7 @@ static int32_t columnNodeCopy(const SColumnNode* pSrc, SColumnNode* pDst) { COPY_SCALAR_FIELD(resIdx); COPY_SCALAR_FIELD(hasDep); COPY_SCALAR_FIELD(hasRef); + COPY_SCALAR_FIELD(flags); COPY_CHAR_ARRAY_FIELD(refDbName); COPY_CHAR_ARRAY_FIELD(refTableName); COPY_CHAR_ARRAY_FIELD(refColName); diff --git a/source/libs/nodes/src/nodesUtilFuncs.c b/source/libs/nodes/src/nodesUtilFuncs.c index b2851af9aa83..605f75cb24ef 100644 --- a/source/libs/nodes/src/nodesUtilFuncs.c +++ b/source/libs/nodes/src/nodesUtilFuncs.c @@ -3317,15 +3317,23 @@ static EDealRes doCollect(SCollectColumnsCxt* pCxt, SColumnNode* pCol, SNode* pN } SNode** pNodeFound = taosHashGet(pCxt->pColHash, name, len); if (pNodeFound == NULL) { - pCxt->errCode = taosHashPut(pCxt->pColHash, name, len, &pNode, POINTER_BYTES); + SNode* pNew = NULL; + pCxt->errCode = nodesCloneNode(pNode, &pNew); if (TSDB_CODE_SUCCESS == pCxt->errCode) { - SNode* pNew = NULL; - pCxt->errCode = nodesCloneNode(pNode, &pNew); - if (TSDB_CODE_SUCCESS == pCxt->errCode) { - pCxt->errCode = nodesListStrictAppend(pCxt->pCols, pNew); - } + pCxt->errCode = nodesListStrictAppend(pCxt->pCols, pNew); + } + if (TSDB_CODE_SUCCESS == pCxt->errCode) { + // Store cloned node pointer in hash so we can update its flags later + pCxt->errCode = taosHashPut(pCxt->pColHash, name, len, &pNew, POINTER_BYTES); + } else { + nodesDestroyNode(pNew); } return (TSDB_CODE_SUCCESS == pCxt->errCode ? DEAL_RES_IGNORE_CHILD : DEAL_RES_ERROR); + } else if (0 == pCol->appendByPrivCond) { + SColumnNode* pExistCol = (SColumnNode*)(*pNodeFound); + if (pExistCol->appendByPrivCond == 1) { + pExistCol->appendByPrivCond = 0; + } } return DEAL_RES_CONTINUE; } diff --git a/source/libs/parser/inc/sql.y b/source/libs/parser/inc/sql.y index 920c050d519f..dad60fbe8b2c 100755 --- a/source/libs/parser/inc/sql.y +++ b/source/libs/parser/inc/sql.y @@ -539,6 +539,8 @@ priv_type(A) ::= ALTER PASS. priv_type(A) ::= CREATE ROLE. { A = PRIV_SET_TYPE(PRIV_ROLE_CREATE); } priv_type(A) ::= DROP ROLE. { A = PRIV_SET_TYPE(PRIV_ROLE_DROP); } +priv_type(A) ::= UNLOCK ROLE. { A = PRIV_SET_TYPE(PRIV_ROLE_UNLOCK); } +priv_type(A) ::= LOCK ROLE. { A = PRIV_SET_TYPE(PRIV_ROLE_LOCK); } priv_type(A) ::= SHOW ROLES. { A = PRIV_SET_TYPE(PRIV_ROLE_SHOW); } priv_type(A) ::= CREATE USER. { A = PRIV_SET_TYPE(PRIV_USER_CREATE); } diff --git a/source/libs/parser/src/parAuthenticator.c b/source/libs/parser/src/parAuthenticator.c index 7d3b1409cc55..df9405e7d6f2 100644 --- a/source/libs/parser/src/parAuthenticator.c +++ b/source/libs/parser/src/parAuthenticator.c @@ -233,6 +233,7 @@ EDealRes rewriteAuthTable(SNode* pNode, void* pContext) { SAuthRewriteCxt* pCxt = (SAuthRewriteCxt*)pContext; tstrncpy(pCol->tableName, pCxt->pTarget->tableName, TSDB_TABLE_NAME_LEN); tstrncpy(pCol->tableAlias, pCxt->pTarget->tableAlias, TSDB_TABLE_NAME_LEN); + pCol->appendByPrivCond = 1; } return DEAL_RES_CONTINUE; diff --git a/source/libs/parser/src/parInsertSql.c b/source/libs/parser/src/parInsertSql.c index a2f6daf17976..88ae44b2e00d 100644 --- a/source/libs/parser/src/parInsertSql.c +++ b/source/libs/parser/src/parInsertSql.c @@ -4488,6 +4488,14 @@ static void clearCatalogReq(SCatalogReq* pCatalogReq) { static int32_t setVnodeModifOpStmt(SInsertParseContext* pCxt, SCatalogReq* pCatalogReq, const SMetaData* pMetaData, SVnodeModifyOpStmt* pStmt) { clearCatalogReq(pCatalogReq); + if (pStmt->pPrivCols) { + taosArrayDestroy(pStmt->pPrivCols); + pStmt->pPrivCols = NULL; + } + if (pStmt->pTagCond) { + nodesDestroyNode(pStmt->pTagCond); + pStmt->pTagCond = NULL; + } int32_t code = checkAuthFromMetaData(pCxt, pMetaData, pStmt); diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index 5d58b159a2a0..56e2464c6cec 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -1791,8 +1791,10 @@ static int32_t findAndSetRealTableColumn(STranslateContext* pCxt, SColumnNode** int32_t nums = pMeta->tableInfo.numOfTags + pMeta->tableInfo.numOfColumns; for (int32_t i = 0; i < nums; ++i) { - if (0 == strcmp(pCol->colName, pMeta->schema[i].name) && - !invisibleColumn(true, pMeta->tableType, pMeta->schema[i].flags)) { // pCxt->pParseCxt->enableSysInfo, only control the output columns + if (0 == strcmp(pCol->colName, pMeta->schema[i].name)) { + if (invisibleColumn(pCxt->pParseCxt->enableSysInfo, pMeta->tableType, pMeta->schema[i].flags)) { + return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_COL_PERMISSION_DENIED, pCol->colName); + } SSchemaExt* pSchemaExt = pMeta->schemaExt ? (i >= pMeta->tableInfo.numOfColumns ? NULL : (pMeta->schemaExt + i)) : NULL; setColumnInfoBySchema((SRealTableNode*)pTable, pMeta->schema + i, (i - pMeta->tableInfo.numOfColumns), pCol, @@ -7170,6 +7172,9 @@ static int32_t translateCheckPrivCols(STranslateContext* pCxt, SSelectStmt* pSel FOREACH(pNode, pRetrievedCols) { if (QUERY_NODE_COLUMN == nodeType(pNode)) { SColumnNode* pCol = (SColumnNode*)pNode; + if (pCol->appendByPrivCond) { + continue; + } SColIdNameKV colIdNameKV = {.colId = pCol->colId}; snprintf(colIdNameKV.colName, TSDB_COL_NAME_LEN, "%s", pCol->colName); STableCols* pTblCols = tSimpleHashGet(pTblColHash, (const void*)&pCol->tableId, sizeof(pCol->tableId)); @@ -17679,7 +17684,7 @@ static int32_t fillPrivSetRowCols(STranslateContext* pCxt, SArray** ppReqCols, S return code; } - int32_t columnNum = pTableMeta->tableInfo.numOfColumns; + int32_t columnNum = pTableMeta->tableInfo.numOfColumns + pTableMeta->tableInfo.numOfTags; const SSchema* pSchemaCols = pTableMeta->schema; SNode* pNode = NULL; SColumnNode* pCol = NULL; diff --git a/test/cases/24-Users/test_user_privilege_sysinfo.py b/test/cases/24-Users/test_user_privilege_sysinfo.py index 5e5a34984dd8..15afbc1943b9 100644 --- a/test/cases/24-Users/test_user_privilege_sysinfo.py +++ b/test/cases/24-Users/test_user_privilege_sysinfo.py @@ -96,8 +96,7 @@ def do_user_privilege_sysinfo(self): tdSql.error(f"use db") tdSql.error(f"alter database db replica 1;") tdSql.error(f"alter database db keep 21") - tdSql.execute(f"show db.vgroups") - tdSql.checkRows(0) + tdSql.error(f"show db.vgroups") tdSql.error(f"create table db.stb1 (ts timestamp, i int) tags (t int)") tdSql.error(f"create table db.ctb1 using db.stb1 tags (1)") @@ -138,16 +137,12 @@ def loop_check_sysinfo_0(): tdSql.error(f"show qnodes") tdSql.error(f"show mnodes") tdLog.info(f"=============== check show of sysinfo 0 - sleep") - tdSql.execute(f"show db.vgroups") - tdSql.checkRows(0) + tdSql.error(f"show db.vgroups") tdSql.error(f"show db.stables") tdSql.error(f"show db.tables") tdSql.error(f"show indexes from stb from db") tdSql.query(f" show databases") - tdSql.query(f"show d2.vgroups") - tdSql.checkRows(2) - tdSql.checkData(0, 0, 'leader') # sysinfo0 can only see columns with sysinfo false - tdSql.checkData(1, 0, 'leader') + tdSql.error(f"show d2.vgroups") tdSql.query(f" show d2.stables") tdSql.query(f" show d2.tables") tdSql.query(f" show indexes from stb2 from d2") @@ -204,6 +199,7 @@ def loop_check_sysinfo_0(): tdSql.error(f"select * from information_schema.ins_vgroups") tdSql.query(f"select * from information_schema.ins_configs") tdSql.error(f"select * from information_schema.ins_dnode_variables") + tdSql.error(f"select `precision`, `keep` from information_schema.ins_databases", expectErrInfo="Permission denied for column: keep", fullMatched=False) tdLog.info(f"=============== check performance_schema of sysinfo 0") tdSql.execute(f"use performance_schema;") diff --git a/test/cases/25-Privileges/test_priv_control.py b/test/cases/25-Privileges/test_priv_control.py index 694f2825f06e..90c5adda5d3c 100644 --- a/test/cases/25-Privileges/test_priv_control.py +++ b/test/cases/25-Privileges/test_priv_control.py @@ -1469,7 +1469,7 @@ def do_column_row_combined_privilege(self): self.query_expect_rows(f"SELECT temperature, humidity FROM {db_name}.st1", 1) # Only ct1 ''' self.exec_sql_failed(f"SELECT status FROM {db_name}.st1", TSDB_CODE_PAR_COL_PERMISSION_DENIED) # Column not authorized - self.exec_sql_failed(f"SELECT temperature FROM {db_name}.ct2", TSDB_CODE_PAR_COL_PERMISSION_DENIED) # Row not authorized + self.query_expect_rows(f"SELECT temperature FROM {db_name}.ct2", 0) # Row not authorized, reuse super table privilege # Test 2: Column INSERT with row condition self.login() diff --git a/test/cases/25-Privileges/test_priv_rbac.py b/test/cases/25-Privileges/test_priv_rbac.py index 5fd5ff7c3e7b..2c8b5fa74dd0 100644 --- a/test/cases/25-Privileges/test_priv_rbac.py +++ b/test/cases/25-Privileges/test_priv_rbac.py @@ -1,5 +1,6 @@ from new_test_framework.utils import tdLog, tdSql, tdDnodes, etool, TDSetSql from new_test_framework.utils.sqlset import TDSetSql +from taos.tmq import Consumer from itertools import product import os import time @@ -48,6 +49,7 @@ def do_basic_user_privileges(self): tdSql.execute("grant create table on database d0 to u1") tdSql.execute("grant use database on database d0 to u1") tdSql.execute("grant use on database d0 to u1") + tdSql.execute("grant lock role,unlock role,lock user,unlock user to u1") tdSql.execute("grant select(c0,c1),insert(ts,c0),delete on table d0.stb0 with t1=0 and ts=0 to u1") def do_basic_role_privileges(self): @@ -67,9 +69,61 @@ def do_basic_role_privileges(self): tdSql.execute("revoke all on table d0.stb0 from r1") tdSql.execute("grant select(c0,c1),insert(ts,c0),delete on table d0.stb0 with t1=0 and ts=0 to r1") + def do_check_column_privileges(self): + """Test column privileges""" + + tdSql.execute(f"create user u_col_2 pass '{self.test_pass}'") + tdSql.execute(f"grant use on database d0 to u_col_2") + tdSql.execute(f"grant select(c0),insert(ts,c0) on table d0.stb0 with t1=0 to u_col_2") + tdSql.connect("u_col_2", self.test_pass) + tdSql.error("select * from d0.stb0 where t1=0", expectErrInfo="Permission denied for column: ts", fullMatched=False) + tdSql.error("select c0,c1 from d0.stb0", expectErrInfo="Permission denied for column: c1", fullMatched=False) + tdSql.error("select c0,t1 from d0.stb0", expectErrInfo="Permission denied for column: t1", fullMatched=False) + tdSql.error("select c0 from d0.stb0 where t1=0 and ts=0", expectErrInfo="Permission denied for column: ts", fullMatched=False) + tdSql.error("select c0,t1 from d0.ctb0", expectErrInfo="Permission denied for column: t1", fullMatched=False) + tdSql.query("select c0 from d0.stb0") + tdSql.checkRows(2) + tdSql.query("select c0 from d0.ctb0") + tdSql.checkRows(2) + tdSql.error("select c1 from d0.stb0 where t1=0", expectErrInfo="Permission denied for column: c1", fullMatched=False) + for i in range(10): + tdSql.execute("insert into d0.ctb0 (ts,c0) values(now+%ds,%d)" % (i, i)) + tdSql.error("insert into d0.ctb0 (ts,c1) values(now+%ds,%d)" % (i, i), expectErrInfo="Permission denied for column: c1", fullMatched=False) + + def subscribe_topic(self, user, password, group_id, topic_name): + attr = { + 'group.id': group_id, + 'td.connect.user': user, + 'td.connect.pass': password, + 'auto.offset.reset': 'earliest' + } + consumer = Consumer(attr) + consumer.subscribe([topic_name]) + + def do_check_topic_privileges(self): + """Test topic privileges""" + tdSql.connect("root", "taosdata") + tdSql.execute(f"create user u_topic pass '{self.test_pass}'") + tdSql.execute(f"create user u_consumer pass '{self.test_pass}'") + tdSql.execute(f"grant use on database d0 to u_topic") + tdSql.execute(f"grant create topic on database d0 to u_topic") + tdSql.execute(f"grant select on d0.stb0 to u_topic") + tdSql.connect("u_topic", self.test_pass) + time.sleep(5) # wait for privileges to take effect + tdSql.query("select * from d0.stb0") + tdSql.execute(f"create topic topic1 as select * from d0.stb0") + tdSql.error(f"create topic topic2 as select * from d0.stb1", expectErrInfo="Permission denied", fullMatched=False) + self.subscribe_topic("u_topic", self.test_pass, "g1", "topic1") + tdSql.connect("root", "taosdata") + tdSql.execute(f"grant use on database d0 to u_consumer") + tdSql.execute(f"grant subscribe on topic d0.topic1 to u_consumer") + tdSql.connect("u_consumer", self.test_pass) + time.sleep(5) # wait for privileges to take effect + self.subscribe_topic("u_consumer", self.test_pass, "g1", "topic1") + def do_check_role_privileges(self): """Test role privileges""" - + tdSql.connect("root", "taosdata") tdSql.execute(f"create user ur1 pass '{self.test_pass}'") tdSql.execute(f"grant role `SYSDBA` to ur1") tdSql.error("grant role `SYSSEC` to ur1", expectErrInfo=f"Conflicts with existing role", fullMatched=False) @@ -146,9 +200,10 @@ def test_priv_basic(self): # self.do_check_db_privileges() # self.do_check_table_privileges() # self.do_check_row_privileges() - # self.do_check_column_privileges() + self.do_check_column_privileges() # self.do_check_grant_privileges() # self.do_check_view_privileges() + self.do_check_topic_privileges() # self.do_check_audit_privileges() # self.do_check_user_privileges() self.do_check_role_privileges() From f726e44765ac14ca6c64cdc62571e0acab4b617b Mon Sep 17 00:00:00 2001 From: haoranchen Date: Fri, 6 Mar 2026 16:48:29 +0800 Subject: [PATCH 09/18] =?UTF-8?q?test=EF=BC=9Aadd=20installation=20instruc?= =?UTF-8?q?tions=20for=20screen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add installation instructions for 'screen' package. --- test/README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/README.md b/test/README.md index 065972d3a9d8..a7795a907169 100644 --- a/test/README.md +++ b/test/README.md @@ -45,6 +45,13 @@ cd test pip3 install -r requirements.txt ``` +- Install screen + +```bash +ubuntu: apt-get install screen +centos: yum install screen +``` + - Building (Optional) Tests can be run against TDengine either by installation or by build. When building TDengine, please make sure the building options `-DBUILD_TOOLS=true -DBUILD_TEST=true -DBUILD_CONTRIB=true` has been used: From 6b583e94b8b621e1eabd2b82491228066aa0c04a Mon Sep 17 00:00:00 2001 From: chenhaoran Date: Fri, 6 Mar 2026 16:59:19 +0800 Subject: [PATCH 10/18] fix: correct formatting and improve clarity in README.md --- test/README.md | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/test/README.md b/test/README.md index a7795a907169..d7fba552b978 100644 --- a/test/README.md +++ b/test/README.md @@ -2,10 +2,10 @@ 1. [Introduction](#1-introduction) 1. [Prerequisites](#2-prerequisites) -1. [Project Structure](#3-Project-Structure) -1. [Run Test Cases](#4-Run-Test-Cases) -1. [Add New Case](#5-Add-New-Case) -1. [Add New Case to CI](#6-Add-New-Case-to-CI) +1. [Project Structure](#3-project-structure) +1. [Run Test Cases](#4-run-test-cases) +1. [Add New Case](#5-add-new-case) +1. [Add New Case to CI](#6-add-new-case-to-ci) 1. [Workflows](#7-workflows) 1. [Test Report](#8-test-report) @@ -26,6 +26,7 @@ This is the new end-to-end testing framework for TDengine. It offers several adv 6. **Integration with Github Action**: Including workflow to run the test cases in the new test framework, workflow to validate the docstring of test cases and workflow to publish case docs to Github Pages. > [!NOTE] +> > - The commands and scripts below are verified on Linux (Ubuntu 18.04/20.04/22.04). > - [taos-connector-python](https://github.com/taosdata/taos-connector-python) is used by tests written in Python, which requires Python 3.8+. @@ -34,8 +35,8 @@ This is the new end-to-end testing framework for TDengine. It offers several adv - Install Python3 ```bash -apt install python3 -apt install python3-pip +apt install python3 -y +apt install python3-pip -y ``` - Install Python dependencies @@ -48,8 +49,7 @@ pip3 install -r requirements.txt - Install screen ```bash -ubuntu: apt-get install screen -centos: yum install screen +apt install screen -y ``` - Building (Optional) @@ -65,7 +65,8 @@ make && make install # 3. Project Structure Outline the main directories and their purposes: -``` + +```text test/ │ ├── cases/ # cases directory @@ -103,7 +104,8 @@ pytest [options] [test_file_path] ``` Notes: -- options: described below + +- options: described below - test_file_path: optional, if provided, only the test case in the file or path will be run; if not provided, all test cases (files start with test_) will be run ## 4.3 Run tests by command line arguments @@ -148,9 +150,10 @@ Options: ## 4.4 Run tests by configuration file -- `--yaml_file `: TDengine deploy configuration yaml file (default directory is `env`, no need to specify the `env` path) +- `--yaml_file `: TDengine deploy configuration yaml file (default directory is `env`, no need to specify the `env` path) **Mutually Exclusive Options**: + - The `--yaml_file` option is mutually exclusive with the following options: - `-N` - `-R` @@ -163,6 +166,7 @@ Options: ## 4.5 Common Options Some useful pytest common options: + - `-s`: disable output capturing - `--log-level`: set log level - `--alluredir`: generate allure report directory @@ -197,6 +201,7 @@ pytest --clean --only_deploy To run test cases in batch: Run with default test list file: + ```bash ./start_run_test_list.sh #run with default test list file(test_list.txt) ./start_run_test_list.sh path/to/case_list_file #run with custom test list file @@ -205,11 +210,13 @@ Run with default test list file: For the format of the test list file, please refer to `test_list.txt`. To stop the test execution: + ```bash ./stop_run_test_list.sh #the script will stop after completing the current test case. ``` Batch test results can be found in the `test_logs` directory: + - `test_logs/case_result.txt`: Case execution results - `test_logs/run_tests.log`: All cases outputs - `test_logs/xxx.log`: Failed case outputs @@ -255,15 +262,19 @@ To add a new test case to the CI pipeline, include the case run command in the ` Every time new code is submitted, the corresponding GitHub workflows are triggered as follows: ## 7.1 CI Test + A CI test is triggered whenever a pull request (PR) is submitted. ## 7.2 Docstring Check + A Docstring check is triggered for any PR submitted to the `test/cases` directory, ensuring the completeness of the case descriptions. ## 7.3 Cases Doc Publish + A cases documentation publish is triggered when a PR is merged into the `test/cases` directory, updating the case description documentation page. Note: + - Please referto [Deploy Case Docs](https://github.com/taosdata/TDengine/actions/workflows/deploy-case-docs.yml) for details. - Published cases doc can be found at [TDengine Case List](https://taosdata.github.io/TDengine/main/). From ba52205debdaa0fcd596ac741e1b4b9a9263d10d Mon Sep 17 00:00:00 2001 From: WANG Xu Date: Fri, 6 Mar 2026 17:15:56 +0800 Subject: [PATCH 11/18] docs: docker mirror in faq Signed-off-by: WANG Xu --- docs/zh/04-get-started/_03-docker.md | 3 ++- docs/zh/27-train-faq/01-faq.md | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/zh/04-get-started/_03-docker.md b/docs/zh/04-get-started/_03-docker.md index 8abb6ff7c4e3..a2bb21755105 100644 --- a/docs/zh/04-get-started/_03-docker.md +++ b/docs/zh/04-get-started/_03-docker.md @@ -62,4 +62,5 @@ docker exec -it Date: Sat, 7 Mar 2026 17:53:17 +0800 Subject: [PATCH 12/18] feat: add SSH timeout options for remote commands (#34704) * feat: add SSH timeout options for remote commands * refactor: remove timeout from SSH and SCP commands for local execution * feat: add timeout handling for remote SSH commands --- test/ci/run.sh | 110 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 72 insertions(+), 38 deletions(-) diff --git a/test/ci/run.sh b/test/ci/run.sh index c2e8f0d6c554..083a19badd80 100755 --- a/test/ci/run.sh +++ b/test/ci/run.sh @@ -32,6 +32,7 @@ while getopts "m:t:b:l:o:w:eh" opt; do ;; o) timeout_param="-o $OPTARG" + timeout_val=$OPTARG ;; w) web_server=$OPTARG @@ -141,21 +142,73 @@ function is_local_host() { return 1 } +function get_timeout_val() { + echo "${timeout_val:-1260}" +} + +function get_local_workdir() { + local i=0 + while [ $i -lt ${#hosts[*]} ]; do + if is_local_host "${hosts[i]}"; then + echo "${workdirs[i]}" + return 0 + fi + i=$((i + 1)) + done + return 1 +} + function get_remote_ssh_command() { local index=$1 + local cmd_timeout + cmd_timeout=$(get_timeout_val) if [ -z "${passwords[index]}" ]; then - echo "ssh -o StrictHostKeyChecking=no ${usernames[index]}@${hosts[index]}" + echo "timeout ${cmd_timeout} ssh -o StrictHostKeyChecking=no -o ServerAliveInterval=60 -o ServerAliveCountMax=3 ${usernames[index]}@${hosts[index]}" else - echo "sshpass -p ${passwords[index]} ssh -o StrictHostKeyChecking=no ${usernames[index]}@${hosts[index]}" + echo "timeout ${cmd_timeout} sshpass -p ${passwords[index]} ssh -o StrictHostKeyChecking=no -o ServerAliveInterval=60 -o ServerAliveCountMax=3 ${usernames[index]}@${hosts[index]}" fi } function get_remote_scp_command() { local index=$1 if [ -z "${passwords[index]}" ]; then - echo "scp -o StrictHostKeyChecking=no -r ${usernames[index]}@${hosts[index]}" + echo "scp -o StrictHostKeyChecking=no -r" + else + echo "sshpass -p ${passwords[index]} scp -o StrictHostKeyChecking=no -r" + fi +} + +function save_build_artifacts() { + local build_dir=$1 + local case_info=$2 + local local_work_dir + local local_build_dir + local local_unit_test_log_dir + + local_work_dir=$(get_local_workdir) + if [ -z "$local_work_dir" ]; then + return 0 + fi + + local_build_dir="${local_work_dir}/${DEBUGPATH}/build" + local_unit_test_log_dir="${local_work_dir}/${DEBUGPATH}/Testing/Temporary/" + + if [ ! -d "$local_build_dir" ]; then + return 0 + fi + + mkdir -p "$build_dir" >/dev/null 2>&1 || true + if [[ "$case_info" == *"UnitTest/test.sh"* ]]; then + cp -rf "${local_build_dir}/"* "$build_dir/" >/dev/null 2>&1 || true else - echo "sshpass -p ${passwords[index]} scp -o StrictHostKeyChecking=no -r ${usernames[index]}@${hosts[index]}" + ( + cd "$local_build_dir" || exit 1 + find . -type f ! -path "./bin/*est*" -exec cp --parents {} "$build_dir/" \; + ) >/dev/null 2>&1 || true + fi + + if [ -d "$local_unit_test_log_dir" ] && [ -n "$(ls -A "$local_unit_test_log_dir" 2>/dev/null)" ]; then + cp -rf "${local_unit_test_log_dir}"* "$build_dir/" >/dev/null 2>&1 || true fi } @@ -174,7 +227,7 @@ function transfer_debug_dirs() { i=$((i + 1)) done - cd "$local_work_dir" + cd "$local_work_dir" || return 1 rm -rf debug.tar.gz tar -czf debug.tar.gz \ debugSan/build/bin/taos* \ @@ -206,11 +259,8 @@ function transfer_debug_dirs() { bash -c "${remote_cmd} rm -rf '${workdirs[index]}/debugSan'" bash -c "${remote_cmd} rm -rf '${workdirs[index]}/debugNoSan'" # transfer debug.tar.gz to remote - if [ -n "${passwords[index]}" ]; then - sshpass -p "${passwords[index]}" scp -o StrictHostKeyChecking=no -r debug.tar.gz "${usernames[index]}@${hosts[index]}:${workdirs[index]}/debug.tar.gz" - else - scp -o StrictHostKeyChecking=no -r debug.tar.gz "${usernames[index]}@${hosts[index]}:${workdirs[index]}/debug.tar.gz" - fi + scp_prefix=$(get_remote_scp_command "$index") + timeout "$(get_timeout_val)" $scp_prefix debug.tar.gz "${usernames[index]}@${hosts[index]}:${workdirs[index]}/debug.tar.gz" # untar debug.tar.gz to remote bash -c "${remote_cmd} \"tar -xzf '${workdirs[index]}/debug.tar.gz' -C '${workdirs[index]}' && rm -rf '${workdirs[index]}/debug.tar.gz'\"" fi @@ -355,8 +405,10 @@ function run_thread() { real_start_time=$(date +%s) # echo "cmd:${cmd}" if ! is_local_host "${hosts[index]}"; then + # 远程:cmd 已包含 timeout ssh,直接执行 $cmd >>"$case_log_file" 2>&1 else + # 本地:用 bash -c 执行以正确处理引号 bash -c "$cmd" >>"$case_log_file" 2>&1 fi ret=$? @@ -409,15 +461,13 @@ function run_thread() { echo "${hosts[index]} total time: ${total_time}s" >>"$case_log_file" # echo "$thread_no ${line} DONE" - local scpcmd="" + local scp_prefix="" local allure_report_results="${workdirs[index]}/tmp/thread_volume/$thread_no/allure-results" if ! is_local_host "${hosts[index]}"; then - scpcmd=$(get_remote_scp_command "$index") - cmd="$scpcmd:${allure_report_results}/* $log_dir/allure-results/" - bash -c "$cmd" >/dev/null 2>&1 || true + scp_prefix=$(get_remote_scp_command "$index") + timeout "$(get_timeout_val)" $scp_prefix "${usernames[index]}@${hosts[index]}:${allure_report_results}/*" "$log_dir/allure-results/" >/dev/null 2>&1 || true else - cmd="cp -rf ${allure_report_results}/* $log_dir/allure-results/" - bash -c "$cmd" >/dev/null 2>&1 || true + cp -rf ${allure_report_results}/* "$log_dir/allure-results/" >/dev/null 2>&1 || true fi echo "Save allure report results to $log_dir/allure-results/ from ${allure_report_results} with cmd: $cmd" if [ $ret -eq 0 ]; then @@ -433,11 +483,10 @@ function run_thread() { if [ "$(ls -A ${remote_coredump_dir} 2>/dev/null)" ]; then mkdir -p "${log_dir}"/"${case_file}".coredump if ! is_local_host "${hosts[index]}"; then - cmd="$scpcmd:${remote_coredump_dir}/* $log_dir/${case_file}.coredump/" + timeout "$(get_timeout_val)" $scp_prefix "${usernames[index]}@${hosts[index]}:${remote_coredump_dir}/*" "$log_dir/${case_file}.coredump/" >/dev/null 2>&1 || true else - cmd="cp -rf ${remote_coredump_dir}/* $log_dir/${case_file}.coredump/" + cp -rf ${remote_coredump_dir}/* "$log_dir/${case_file}.coredump/" >/dev/null 2>&1 || true fi - bash -c "$cmd" >/dev/null 2>&1 || true fi echo -e "$case_index \e[34m DONE <<<<< \e[0m ${case_info} \e[34m[${total_time}s]\e[0m \e[31m failed\e[0m" @@ -455,20 +504,7 @@ function run_thread() { echo -e "\e[34m corefiles: $corefile \e[0m" fi local build_dir=$log_dir/build_${hosts[index]} - local remote_build_dir="${workdirs[index]}/${DEBUGPATH}/build" - local remote_unit_test_log_dir="${workdirs[index]}/${DEBUGPATH}/Testing/Temporary/" - - if is_local_host "${hosts[index]}"; then - mkdir "$build_dir" >/dev/null - cmd="cp -rf ${remote_build_dir}/* ${build_dir}/" - echo "$cmd" - bash -c "$cmd" >/dev/null 2>&1 || true - if [ -d "${remote_unit_test_log_dir}" ] && [ "$(ls -A "${remote_unit_test_log_dir}" 2>/dev/null)" ]; then - cmd="cp -rf ${remote_unit_test_log_dir}/* ${build_dir}/" - echo "$cmd" - bash -c "$cmd" >/dev/null 2>&1 || true - fi - fi + save_build_artifacts "$build_dir" "$case_info" local remote_sim_dir="${workdirs[index]}/tmp/thread_volume/$thread_no" if ! is_local_host "${hosts[index]}"; then cmd="$runcase_script \"cd $remote_sim_dir; tar -czf sim.tar.gz sim\"" @@ -480,12 +516,10 @@ function run_thread() { local remote_sim_tar="${workdirs[index]}/tmp/thread_volume/$thread_no/sim.tar.gz" local remote_case_sql_file="${workdirs[index]}/tmp/thread_volume/$thread_no/${case_sql_file}" if ! is_local_host "${hosts[index]}"; then - cmd="$scpcmd:${remote_sim_tar} $log_dir/${case_file}.sim.tar.gz" - echo "scp sim.tar.gz cmd: $cmd" - bash -c "$cmd" >/dev/null 2>&1 || true + timeout "$(get_timeout_val)" $scp_prefix "${usernames[index]}@${hosts[index]}:${remote_sim_tar}" "$log_dir/${case_file}.sim.tar.gz" >/dev/null 2>&1 || true + echo "scp sim.tar.gz done" if [ "$(ls -A "$remote_case_sql_file" 2>/dev/null)" ];then - cmd="$scpcmd:${remote_case_sql_file} $log_dir/${case_file}.sql" - bash -c "$cmd" >/dev/null 2>&1 || true + timeout "$(get_timeout_val)" $scp_prefix "${usernames[index]}@${hosts[index]}:${remote_case_sql_file}" "$log_dir/${case_file}.sql" >/dev/null 2>&1 || true fi else cmd="cp -f ${remote_sim_tar} $log_dir/${case_file}.sim.tar.gz" From 5a0249fd6f1e98313fb1afd9e94dcfba84b182e7 Mon Sep 17 00:00:00 2001 From: guozhenwei <2227465945@qq.com> Date: Sat, 7 Mar 2026 22:46:57 +0800 Subject: [PATCH 13/18] docs: update interface description for connect method in Python connector (#34697) --- docs/en/14-reference/05-connector/30-python.md | 2 +- docs/zh/14-reference/05-connector/30-python.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/14-reference/05-connector/30-python.md b/docs/en/14-reference/05-connector/30-python.md index 3cf2a6e785a4..8e9405a9226d 100644 --- a/docs/en/14-reference/05-connector/30-python.md +++ b/docs/en/14-reference/05-connector/30-python.md @@ -445,7 +445,7 @@ The interface for binding parameters of the standard Stmt. #### Establishing Connection - `def connect(*args, **kwargs):` - - **Interface Description**: Establish a connection to taosAdapter. + - **Interface Description**: Creates and returns a database connection object. - **Parameter Description**: - `kwargs`: Provided in the form of a Python dictionary, can be used to set - `user`: Username for the database diff --git a/docs/zh/14-reference/05-connector/30-python.mdx b/docs/zh/14-reference/05-connector/30-python.mdx index 975dc108d46f..20ff44cdf13c 100644 --- a/docs/zh/14-reference/05-connector/30-python.mdx +++ b/docs/zh/14-reference/05-connector/30-python.mdx @@ -445,7 +445,7 @@ TaosResult 对象可以通过循环遍历获取查询到的数据。 #### 建立连接 - `def connect(*args, **kwargs):` - - **接口说明**:建立 taosAdapter 连接。 + - **接口说明**:创建并返回数据库连接对象。 - **参数说明**: - `kwargs`:以 Python 字典的形式提供,可用于设置 - `user`:数据库的用户名 From 5cab74d393ff08b20262f8fe79990d61dd94523f Mon Sep 17 00:00:00 2001 From: haoranchen Date: Sun, 8 Mar 2026 13:17:49 +0800 Subject: [PATCH 14/18] fix: refactor file handling in TDCom class for improved readability (#34680) * fix: refactor file handling in TDCom class for improved readability * fix: enhance process cleanup in clean_taos_process to avoid terminating Jenkins agents * fix: remove redundant safe_rmtree function implementation * fix: add signal handling for graceful termination of subprocesses in run_win_cases * fix: declare exit_flag as global in process_pytest_file function * fix: refactor file handling in TDCom class for improved readability * fix: refactor file handling in TDCom class for improved readability * fix: improve code formatting and readability in TDCom class * fix: update exclusion list for Windows CI compatibility and improve cleanup process * test: add test_cases.task * feat: add Windows CI pipeline * fix: reduce wait time in process_pytest_file function * fix: update Windows pipeline for Python 3.8 support and improve path handling * test: delete test task * fix: enhance pytest command parsing with format validation and error logging --- packaging/delete_ref_lock.py | 178 +++++++++++------ test/ci/cases.task | 2 +- test/ci/run_win_cases.py | 248 +++++++++++++++++------- test/ci/win.pipline | 158 +++++++++++++++ test/ci/win_ignore_cases | 160 +++------------ test/new_test_framework/utils/common.py | 11 +- 6 files changed, 485 insertions(+), 272 deletions(-) create mode 100644 test/ci/win.pipline diff --git a/packaging/delete_ref_lock.py b/packaging/delete_ref_lock.py index 7200246a8a92..e4cd742a6500 100644 --- a/packaging/delete_ref_lock.py +++ b/packaging/delete_ref_lock.py @@ -1,80 +1,142 @@ import subprocess import re +import os +from typing import Optional +from abc import ABC, abstractmethod -def git_fetch(): - result = subprocess.run(['git', 'fetch'], capture_output=True, text=True) - return result -def git_prune(): - # git remote prune origin - print("git remote prune origin") - result = subprocess.run(['git', 'remote', 'prune', 'origin'], capture_output=True, text=True) - return result - -def parse_branch_name_type1(error_output): +class RefLockErrorHandler(ABC): + """抽象基类,定义处理接口""" + + @abstractmethod + def match(self, error_output: str) -> bool: + pass + + @abstractmethod + def parse_branch(self, error_output: str) -> Optional[str]: + pass + + def handle(self, error_output: str): + branch = self.parse_branch(error_output) + if branch: + print(f"Detected error, attempting to delete ref for branch: {branch}") + self.delete_ref(branch) + else: + print("Error parsing branch name.") + + def delete_ref(self, branch_name: str): + try: + subprocess.run(["git", "update-ref", "-d", branch_name], check=True) + except subprocess.CalledProcessError as e: + print(f"git update-ref failed: {e}") + lock_files = [f".git/{branch_name}.lock", f".git/logs/{branch_name}.lock"] + for lock_file in lock_files: + if os.path.exists(lock_file): + try: + os.remove(lock_file) + print(f"Removed lock file: {lock_file}") + except Exception as ex: + print(f"Failed to remove lock file {lock_file}: {ex}") + # retry + try: + subprocess.run(["git", "update-ref", "-d", branch_name], check=True) + except subprocess.CalledProcessError as e2: + print(f"Still failed to delete ref after removing lock: {e2}") + + +class Type1Handler(RefLockErrorHandler): # error: cannot lock ref 'refs/remotes/origin/fix/3.0/TD-32817': is at 7af5 but expected eaba # match the branch name before ‘is at’ with a regular expression - match = re.search(r"error: cannot lock ref '(refs/remotes/origin/[^']+)': is at", error_output) - if match: - return match.group(1) - return None + def match(self, error_output: str) -> bool: + return "is at" in error_output and "but expected" in error_output + + def parse_branch(self, error_output: str) -> str: + # 匹配 cannot lock ref 部分,兼容中英文 + match = re.search( + r"cannot lock ref '(refs/remotes/origin/[^']+)': is at", error_output + ) + return match.group(1) if match else None -def parse_branch_name_type2(error_output): + +class Type2Handler(RefLockErrorHandler): # match the branch name before ‘exists; cannot create’ with a regular expression - match = re.search(r"'(refs/remotes/origin/[^']+)' exists;", error_output) - if match: - return match.group(1) - return None + def match(self, error_output: str) -> bool: + return "exists; cannot create" in error_output + + def parse_branch(self, error_output: str) -> str: + match = re.search(r"'(refs/remotes/origin/[^']+)' exists;", error_output) + return match.group(1) if match else None -# parse branch name from error output of git remote prune origin -def parse_branch_name_type3(error_output): + +class Type3Handler(RefLockErrorHandler): # match the branch name before the first single quote before 'Unable to' with a regular expression # git error: could not delete references: cannot lock ref 'refs/remotes/origin/test/3.0/TS-4893': Unable to create 'D:/workspace/main/TDinternal/community/.git/refs/remotes/origin/test/3.0/TS-4893.lock': File exists - match = re.search(r"references: cannot lock ref '(refs/remotes/origin/[^']+)': Unable to", error_output) - if match: - return match.group(1) - return None + def match(self, error_output: str) -> bool: + return "Unable to create" in error_output and "File exists" in error_output + + def parse_branch(self, error_output: str) -> str: + match = re.search( + r"(?:error|references): cannot lock ref '(refs/remotes/origin/[^']+)': Unable to", + error_output, + ) + return match.group(1) if match else None + + +class RefLockErrorHandlerFactory: + """工厂类,返回合适的处理器""" + handlers = [Type1Handler(), Type2Handler(), Type3Handler()] + + @classmethod + def get_handler(cls, error_output: str): + for handler in cls.handlers: + if handler.match(error_output): + return handler + return None -# execute git update-ref -d to delete the ref -def git_update_ref(branch_name): - if branch_name: - subprocess.run(['git', 'update-ref', '-d', f'{branch_name}'], check=True) -# parse error type and execute corresponding repair operation def handle_error(error_output): - error_types = [ - ("is at", "but expected", parse_branch_name_type1, "type 1"), - ("exists; cannot create", None, parse_branch_name_type2, "type 2"), - ("Unable to create", "File exists", parse_branch_name_type3, "type 3") - ] - - for error_type in error_types: - if error_type[0] in error_output and (error_type[1] is None or error_type[1] in error_output): - branch_name = error_type[2](error_output) - if branch_name: - print(f"Detected error {error_type[3]}, attempting to delete ref for branch: {branch_name}") - git_update_ref(branch_name) - else: - print(f"Error parsing branch name for {error_type[3]}.") - break + handler = RefLockErrorHandlerFactory.get_handler(error_output) + if handler: + handler.handle(error_output) + else: + print("No handler found for this error.") + + +def git_fetch(): + print("Running: git fetch") + result = subprocess.run(["git", "fetch"], capture_output=True, text=True) + if result.returncode != 0: + print("git fetch failed:") + print(result.stderr) + else: + print("git fetch successful.") + return result + + +def git_prune(): + print("Running: git remote prune origin") + result = subprocess.run( + ["git", "remote", "prune", "origin"], capture_output=True, text=True + ) + if result.returncode != 0: + print("git remote prune origin failed:") + print(result.stderr) + else: + print("git remote prune origin successful.") + return result + def main(): fetch_result = git_fetch() - if fetch_result.returncode != 0: - error_output = fetch_result.stderr - handle_error(error_output) - else: - print("Git fetch successful.") + if fetch_result.returncode != 0: + handle_error(fetch_result.stderr) + return prune_result = git_prune() - print(prune_result.returncode) - if prune_result.returncode != 0: - error_output = prune_result.stderr - print(error_output) - handle_error(error_output) - else: - print("Git prune successful.") + if prune_result.returncode != 0: + handle_error(prune_result.stderr) + if __name__ == "__main__": - main() \ No newline at end of file + main() diff --git a/test/ci/cases.task b/test/ci/cases.task index e37c5f0b5c71..538f3dbab09a 100644 --- a/test/ci/cases.task +++ b/test/ci/cases.task @@ -1003,7 +1003,7 @@ ,,y,.,./ci/pytest.sh pytest cases/81-Tools/02-Taos/test_tool_taos_shell_error.py ,,y,.,./ci/pytest.sh pytest cases/81-Tools/02-Taos/test_tool_taos_shell_net_chk.py ## 03-Benchmark -,,n,pytest cases/81-Tools/03-Benchmark/test_benchmark_basic.py +,,n,.,pytest cases/81-Tools/03-Benchmark/test_benchmark_basic.py ,,y,.,./ci/pytest.sh pytest cases/81-Tools/03-Benchmark/test_benchmark_bugs.py -B ,,y,.,./ci/pytest.sh pytest cases/81-Tools/03-Benchmark/test_benchmark_commandline.py ,,y,.,./ci/pytest.sh pytest cases/81-Tools/03-Benchmark/test_benchmark_conn_mode.py -B diff --git a/test/ci/run_win_cases.py b/test/ci/run_win_cases.py index 2622ac63be49..30327002567c 100644 --- a/test/ci/run_win_cases.py +++ b/test/ci/run_win_cases.py @@ -7,6 +7,7 @@ import psutil import sys import zipfile +import signal from datetime import datetime logging.basicConfig(level=logging.INFO, @@ -14,6 +15,23 @@ datefmt='%Y-%m-%d %H:%M:%S') logger = logging.getLogger(__name__) failed_cases = 0 # 全局变量,记录失败用例数量 +exit_flag = False # 全局退出标志 +current_process = None # 当前运行的子进程 + +def signal_handler(signum, frame): + """处理 Ctrl+C 信号""" + global exit_flag, current_process + logger.info("接收到中断信号,正在退出...") + exit_flag = True + # 终止当前子进程 + if current_process is not None: + try: + current_process.terminate() + except: + pass + +# 注册信号处理 +signal.signal(signal.SIGINT, signal_handler) def get_git_commit_id(): try: @@ -55,12 +73,25 @@ def clean_taos_process(keywords=None): :param keywords: List[str],用于匹配进程命令行的关键字列表。如果为 None,则默认匹配 'taos'。 """ if keywords is None: - keywords = ['taos'] # 默认关键字为 'taos' + keywords = ["taos", "taosd", "taosadapter", "taoskeeper", "taos-explorer", "taosx", "tmq_sim", "taosdump", "taosBenchmark" ] + + current_pid = os.getpid() for proc in psutil.process_iter(['pid', 'name', 'cmdline']): try: - # 检查进程命令行是否包含指定关键字 - if proc.info['cmdline'] and any(keyword in ' '.join(proc.info['cmdline']) for keyword in keywords): + if proc.info["pid"] == current_pid: + continue + + cmdline_parts = proc.info.get("cmdline") or [] + cmdline = " ".join(cmdline_parts).lower() + proc_name = (proc.info.get("name") or "").lower() + + # 跳过 Jenkins agent,避免断开 remoting channel 导致当前用例被系统回收 + if "agent.jar" in cmdline or "jenkins" in cmdline: + continue + + # 清理 taos 相关进程,同时避免误杀 Jenkins/agent + if any(keyword in proc_name for keyword in keywords) or proc_name.startswith("taos"): logger.debug(f"Found matching process: {proc.info}") proc.terminate() # 优雅终止进程 try: @@ -84,13 +115,17 @@ def zip_dir(dir_path, zip_path): rel_path = os.path.relpath(abs_path, dir_path) zipf.write(abs_path, rel_path) -def safe_rmtree(path, retries=5, delay=1): +def safe_rmtree(path, retries=10, delay=2): """ 安全删除目录,支持重试机制。 :param path: 要删除的目录路径。 :param retries: 重试次数。 :param delay: 每次重试之间的延迟时间(秒)。 """ + import sys + # Windows 上进程终止后句柄可能未立即释放,先等待一下 + if sys.platform == "win32": + time.sleep(1) for i in range(retries): try: if os.path.exists(path): @@ -101,29 +136,9 @@ def safe_rmtree(path, retries=5, delay=1): time.sleep(delay) raise Exception(f"Failed to remove {path} after {retries} retries.") -def safe_rmtree(path, retries=5, delay=1): - """ - 安全删除目录,支持重试机制。 - - :param path: 要删除的目录路径。 - :param retries: 重试次数。 - :param delay: 每次重试之间的延迟时间(秒)。 - """ - for i in range(retries): - try: - if os.path.exists(path): - shutil.rmtree(path) - break - except Exception as e: - logger.warning(f"Retry {i + 1}/{retries}: Failed to remove {path}. Error: {e}") - time.sleep(delay) - else: - raise Exception(f"Failed to remove {path} after {retries} retries.") - - def process_pytest_file(input_file, log_path="C:\\CI_logs", exclusion_file=os.path.join(os.path.dirname(__file__), "win_ignore_cases")): - global failed_cases # 声明使用全局变量 + global failed_cases, exit_flag # 声明使用全局变量 # 初始化统计变量 total_cases = 0 success_cases = 0 @@ -144,25 +159,55 @@ def process_pytest_file(input_file, log_path="C:\\CI_logs", shutil.rmtree(log_dir) os.makedirs(log_dir, exist_ok=True) + # 定义清理函数(失败时抛出异常,终止测试) + def cleanup_environment(phase=""): + """清理进程和目录,失败则抛出异常终止测试""" + logger.info(f"Cleaning up environment ({phase})...") + + # 1. 结束残留进程 + clean_taos_process() + + # 2. 等待句柄释放 + time.sleep(1) + + # 3. 删除 sim 目录,失败则终止 + if os.path.exists(work_dir): + try: + shutil.rmtree(work_dir) + logger.info(f"Removed {work_dir}") + except Exception as e: + logger.error(f"CRITICAL: Failed to remove {work_dir}: {e}") + raise RuntimeError(f"Cleanup failed: cannot remove work_dir") from e + with open(input_file, 'r', encoding="utf-8", errors="ignore") as f: for line in f: line = line.strip() - # 跳过空行和注释行 if not line or line.startswith('#'): continue - # 解析pytest命令 + # 解析 pytest 命令 - 格式: priority,rerunTimes,sanitizer(y/n),path,command + # 检查格式: 第三列是 y/n,第五列决定使用 ./ci/pytest.sh 还是 pytest + parts = line.split(',') + if len(parts) < 5: + logger.error(f"格式错误: 列数不足(应有5列,实际{len(parts)}列): {line}") + continue + + sanitizer = parts[2].strip() # 第三列: y 或 n + if sanitizer not in ('y', 'n'): + logger.error(f"格式错误: 第三列必须是 y 或 n, 实际为 '{sanitizer}': {line}") + continue + + # 根据原逻辑解析 if "ci/pytest.sh " in line: pytest_cmd = line.split("ci/pytest.sh ")[1] else: pytest_cmd = line.split(",,n,.,")[1] - # 确保是pytest命令 if not pytest_cmd.startswith("pytest"): logger.warning(f"异常pytest命令: {pytest_cmd}") continue - case_base_name = pytest_cmd.split(" ")[1] # 获取用例无参数名称用于与排除用例列表比对 + case_base_name = pytest_cmd.split(" ")[1] if case_base_name and len(exclusion_list) > 0 and case_base_name in exclusion_list: skipped_cases += 1 logger.info(f"Case {case_base_name} not support runnning on Windows. Skip test.") @@ -171,65 +216,130 @@ def process_pytest_file(input_file, log_path="C:\\CI_logs", rf.write(result_str) continue - case_name = pytest_cmd.split("/")[-1].replace(" ", "_") # 获取用例名称 + case_name = pytest_cmd.split("/")[-1].replace(" ", "_") total_cases += 1 log_file = os.path.join(log_dir, f"{case_name}.log") logger.info(f"Running case {pytest_cmd}") case_start = time.time() + return_code = None + # ========== 用例前清理(失败则终止) ========== try: - # 清理环境,kill残留进程,删除sim目录 - clean_taos_process() - if os.path.exists(work_dir): - safe_rmtree(work_dir) - # 执行pytest命令,设置超时为300秒(5分钟) - with open(log_file, 'w') as log: - process = subprocess.Popen( - pytest_cmd, + cleanup_environment("pre-case") + except RuntimeError as e: + logger.error(f"Pre-case cleanup failed, stopping test suite: {e}") + result_str = f"ERROR\t{pytest_cmd}\t\t\t0.00s\tPre-case cleanup failed: {e}\n" + with open(result_file, "a", encoding="utf-8") as rf: + rf.write(result_str) + break # 清理失败,终止整个测试 + + # ========== 执行用例 ========== + try: + if exit_flag: + logger.info("检测到退出标志,终止测试") + break + + global current_process + pytest_cmd_clean = f"{pytest_cmd} --clean" + + with open(log_file, 'w', buffering=1) as log: + current_process = subprocess.Popen( + pytest_cmd_clean, shell=True, stdout=log, stderr=subprocess.STDOUT, text=True ) - try: - return_code = process.wait(timeout=3000) - except subprocess.TimeoutExpired: - process.kill() + # 轮询等待 + waited = 0 + while waited < 1200: + ret = current_process.poll() + if ret is not None: + return_code = ret + break + if exit_flag: + logger.info("测试被中断") + current_process.kill() + current_process.wait() + sys.exit(130) + time.sleep(0.5) + waited += 0.5 + else: + # 超时 + current_process.kill() return_code = -1 logger.info(f"Case {pytest_cmd} running timeout, killed process.") + current_process = None + + # 确保日志刷盘 + if os.path.exists(log_file): + with open(log_file, 'a') as f: + f.flush() + try: + os.fsync(f.fileno()) + except: + pass + + except KeyboardInterrupt: + exit_flag = True + if current_process: + current_process.kill() + sys.exit(130) + except Exception as e: + return_code = -2 # 执行异常 + logger.error(f"Case execution error: {e}") - case_end = time.time() - execution_time = case_end - case_start - - if return_code == 0: - success_cases += 1 - os.remove(log_file) - logger.info(f"Case {pytest_cmd}: Success. Time cost: {execution_time:.2f}s") - result_str = f"SUCCESS\t{pytest_cmd}\t\t\t{execution_time:.2f}s\n" + # ========== 用例后清理(失败则终止) ========== + try: + cleanup_environment("post-case") + except RuntimeError as e: + logger.error(f"Post-case cleanup failed, stopping test suite: {e}") + # 记录当前用例结果(如果执行过) + if return_code is not None: + if return_code == 0: + result_str = f"SUCCESS\t{pytest_cmd}\t\t\t{time.time() - case_start:.2f}s\n" + else: + result_str = f"FAILED\t{pytest_cmd}\t\t\t{time.time() - case_start:.2f}s\n" else: - failed_cases += 1 - failed_case_list.append(pytest_cmd) - logger.info(f"Case {pytest_cmd} Failed. Time cost: {execution_time:.2f}s") - result_str = f"FAILED\t{pytest_cmd}\t\t\t{execution_time:.2f}s\n" - - except Exception as e: - case_end = time.time() - execution_time = case_end - case_start + result_str = f"ERROR\t{pytest_cmd}\t\t\t{time.time() - case_start:.2f}s\tExecution error\n" + with open(result_file, "a", encoding="utf-8") as rf: + rf.write(result_str) + break # 清理失败,终止整个测试 + + # ========== 记录用例结果 ========== + case_end = time.time() + execution_time = case_end - case_start + + if return_code == 0: + success_cases += 1 + os.remove(log_file) + logger.info(f"Case {pytest_cmd}: Success. Time cost: {execution_time:.2f}s") + result_str = f"SUCCESS\t{pytest_cmd}\t\t\t{execution_time:.2f}s\n" + elif return_code == -1: + failed_cases += 1 + failed_case_list.append(pytest_cmd) + logger.info(f"Case {pytest_cmd} Failed (timeout). Time cost: {execution_time:.2f}s") + result_str = f"FAILED\t{pytest_cmd}\t\t\t{execution_time:.2f}s\ttimeout\n" + elif return_code == -2: + failed_cases += 1 + failed_case_list.append(pytest_cmd) + logger.info(f"Case {pytest_cmd} Exception. Time cost: {execution_time:.2f}s") + result_str = f"ERROR\t{pytest_cmd}\t\t\t{execution_time:.2f}s\texecution error\n" + else: failed_cases += 1 failed_case_list.append(pytest_cmd) - logger.info(f"Case {total_cases} Exception: {str(e)}. Time cost: {execution_time:.2f}s") - result_str = f"ERROR\t{pytest_cmd}\t\t\t{execution_time:.2f}s\t{str(e)}\n" - # 每条用例执行完都写入结果文件 + logger.info(f"Case {pytest_cmd} Failed. Time cost: {execution_time:.2f}s") + result_str = f"FAILED\t{pytest_cmd}\t\t\t{execution_time:.2f}s\n" + with open(result_file, "a", encoding="utf-8") as rf: rf.write(result_str) - # 计算总执行时间 + # ========== 收尾 ========== end_time = time.time() total_execution_time = end_time - start_time - # 输出统计信息 logger.info("All cases run finished:") logger.info(f"Total cost time: {total_execution_time:.2f}s") logger.info(f"Total cases: {total_cases}") @@ -242,8 +352,12 @@ def process_pytest_file(input_file, log_path="C:\\CI_logs", logger.info(cmd) with open(result_file, "a", encoding="utf-8") as rf: - rf.write( - f"\nAll cases run finished:\nTotal cost time: {total_execution_time:.2f}s\nTotal cases: {total_cases}\nSuccess cases: {success_cases}\nFailed cases: {failed_cases}\nWindows skip cases: {skipped_cases}\n") + rf.write(f"\nAll cases run finished:\n") + rf.write(f"Total cost time: {total_execution_time:.2f}s\n") + rf.write(f"Total cases: {total_cases}\n") + rf.write(f"Success cases: {success_cases}\n") + rf.write(f"Failed cases: {failed_cases}\n") + rf.write(f"Windows skip cases: {skipped_cases}\n") if failed_cases > 0: rf.write("\nFailed cases list:\n") for cmd in failed_case_list: @@ -255,10 +369,6 @@ def process_pytest_file(input_file, log_path="C:\\CI_logs", shutil.move(f"{log_prefix}.zip", os.path.join(log_path, f"{log_prefix}.zip")) shutil.move(result_file, os.path.join(log_path, result_file)) - # 如果没有失败用例,删除日志目录 - # if failed_cases == 0 and os.path.exists(log_dir): - # shutil.rmtree(log_dir) - if __name__ == "__main__": import sys diff --git a/test/ci/win.pipline b/test/ci/win.pipline new file mode 100644 index 000000000000..f3be15af71bf --- /dev/null +++ b/test/ci/win.pipline @@ -0,0 +1,158 @@ +def pre_test_win(){ + bat ''' + hostname + ipconfig + set + date /t + time /t + taskkill /f /t /im python.exe + taskkill /f /t /im bash.exe + taskkill /f /t /im taosd.exe + rd /s /Q %WIN_INTERNAL_ROOT%\\debug || echo "no debug folder" + echo "clean environment done" + exit 0 + ''' + bat ''' + cd %WIN_INTERNAL_ROOT% + git config --global --add safe.directory %WIN_INTERNAL_ROOT% + git reset --hard + git remote prune origin + git fetch || git fetch + ''' + bat ''' + cd %WIN_COMMUNITY_ROOT% + git config --global --add safe.directory %WIN_COMMUNITY_ROOT% + git reset --hard + git remote prune origin + git fetch || git fetch + ''' + bat ''' + cd %WIN_INTERNAL_ROOT% + git checkout %BRANCH_NAME% + git remote prune origin + git clean -f + ''' + bat ''' + cd %WIN_COMMUNITY_ROOT% + git checkout %BRANCH_NAME% + git remote prune origin + git clean -f + ''' + bat ''' + cd %WIN_INTERNAL_ROOT% + git pull origin %BRANCH_NAME% + ''' + bat ''' + cd %WIN_COMMUNITY_ROOT% + git pull origin %BRANCH_NAME% + ''' + bat ''' + cd %WIN_INTERNAL_ROOT% + git branch + git log -5 + ''' + bat ''' + cd %WIN_COMMUNITY_ROOT% + git branch + git log -5 + ''' +} +def pre_test_build_win(skip_build=false) { + if (skip_build) { + echo "SKIP_BUILD is set to true, skipping build stage" + // 检查必要的二进制文件是否存在(使用双引号确保路径正确) + bat """ + if not exist "${WIN_INTERNAL_ROOT}\\debug\\build\\bin\\taosd.exe" ( + echo ERROR: taosd.exe not found in ${WIN_INTERNAL_ROOT}\\debug\\build\\bin\\ + echo Please ensure binaries exist or disable SKIP_BUILD + exit 1 + ) + echo Using existing build in ${WIN_INTERNAL_ROOT}\\debug\\ + """ + // 仍然需要安装 Python 依赖和复制 DLL + bat """ + cd ${WIN_TEST_ROOT} + python3 -m pip install --upgrade pip + python3 -m pip uninstall taospy -y + python3 -m pip install taospy + xcopy /e/y/i/f ${WIN_INTERNAL_ROOT}\\debug\\build\\bin\\taos.dll C:\\Windows\\System32 || echo "taos.dll already exists" + xcopy /e/y/i/f ${WIN_INTERNAL_ROOT}\\debug\\build\\bin\\taosnative.dll C:\\Windows\\System32 || echo "taosnative.dll already exists" + """ + return 1 + } + + bat ''' + echo "building ..." + time /t + cd %WIN_INTERNAL_ROOT% + mkdir debug + cd debug + rm -rf %WIN_INTERNAL_ROOT%/debug/* + time /t + call "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\Build\\vcvarsall.bat" x64 + echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> cmake .. -G "NMake Makefiles JOM" -DBUILD_TEST=true -DBUILD_TOOLS=true -DBUILD_HTTP=internal " + time /t + cmake .. -G "NMake Makefiles JOM" -DBUILD_TEST=true -DBUILD_TOOLS=true -DBUILD_HTTP=internal || exit 7 + echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> jom -j 10 " + time /t + jom -j 10 || exit 8 + jom install || exit 8 + time /t + ''' + bat ''' + cd %WIN_TEST_ROOT% + python3 -m pip install --upgrade pip + python3 -m pip uninstall taospy -y + python3 -m pip install taospy + xcopy /e/y/i/f %WIN_INTERNAL_ROOT%\\debug\\build\\bin\\taos.dll C:\\Windows\\System32 + xcopy /e/y/i/f %WIN_INTERNAL_ROOT%\\debug\\build\\bin\\taosnative.dll C:\\Windows\\System32 + ''' + return 1 +} +def run_win_test_python() { + bat ''' + echo "windows test ..." + ls -l C:\\Windows\\System32\\taos.dll + ''' + bat ''' + time /t + cd %WIN_TEST_ROOT% + echo "python testing ..." + python3 ci\\run_win_cases.py ci\\cases.task + time /t + ''' +} +pipeline { + agent none + stages { + stage('run test') { + parallel { + stage('windows test') { + agent {label " u1-83 "} + environment{ + // 支持通过参数指定路径,默认使用 D:\TDinternal + // 如果 Jenkins 在子目录 checkout,请设置 WIN_INTERNAL_ROOT_PARAM 参数 + WIN_INTERNAL_ROOT="${params.WIN_INTERNAL_ROOT_PARAM ?: 'D:\\TDinternal'}" + WIN_COMMUNITY_ROOT="${params.WIN_INTERNAL_ROOT_PARAM ? params.WIN_INTERNAL_ROOT_PARAM + '\\community' : 'D:\\TDinternal\\community'}" + WIN_TEST_ROOT="${params.WIN_INTERNAL_ROOT_PARAM ? params.WIN_INTERNAL_ROOT_PARAM + '\\community\\test' : 'D:\\TDinternal\\community\\test'}" + WIN_SYSTEM_TEST_ROOT="${params.WIN_INTERNAL_ROOT_PARAM ? params.WIN_INTERNAL_ROOT_PARAM + '\\community\\test' : 'D:\\TDinternal\\community\\test'}" + BRANCH_NAME="${params.TEST_BRANCH}" + } + steps { + timeout(time: 4800, unit: 'MINUTES') { + script { + pre_test_win() + // 根据 SKIP_BUILD 参数决定是否跳过编译 + def skipBuild = params.SKIP_BUILD ?: false + pre_test_build_win(skipBuild) + catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') { + run_win_test_python() + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/test/ci/win_ignore_cases b/test/ci/win_ignore_cases index 2120d5686d40..4c9309f874a6 100644 --- a/test/ci/win_ignore_cases +++ b/test/ci/win_ignore_cases @@ -1,143 +1,29 @@ -cases/22-Show/test_show_table_distributed_null.py -cases/uncatalog/army/alter/test_alter_config.py -cases/uncatalog/army/cluster/test_snapshot.py -cases/uncatalog/army/cmdline/test_taos_cli.py -# TD-37673 -cases/22-Functions/01-Scalar/test_scalar_all.py -cases/uncatalog/army/query/function/test_function.py -# TD-37674 -cases/22-Functions/02-Aggregate/test_agg_all.py -cases/uncatalog/army/query/function/test_interval_diff_tz.py -cases/12-DataCompression/test_compress_alter_table.py -cases/uncatalog/army/storage/test_compress_basic.py -cases/uncatalog/army/tools/benchmark/basic/test_stmt_insert_alltypes_same_min_max.py -cases/uncatalog/army/tools/benchmark/basic/test_stmt_sample_csv_json_subtable.py -cases/uncatalog/army/tools/benchmark/basic/test_stmt_sample_csv_json.py -# TD-37683 -cases/uncatalog/army/tools/benchmark/basic/test_insert_tag_order_sml.py -cases/uncatalog/army/tools/benchmark/basic/test_insert_tag_order_sql.py -cases/uncatalog/army/tools/benchmark/basic/test_insert_tag_order_stmt.py -cases/uncatalog/army/tools/benchmark/basic/test_insert_tag_order_stmt2.py -cases/uncatalog/army/tools/benchmark/basic/test_telnet_tcp.py -cases/uncatalog/army/tools/taosdump/native/test_taosdump_test_loose_mode.py -cases/uncatalog/army/tools/taosdump/native/test_taosdump_commandline.py -cases/uncatalog/system-test/0-others/test_mounts.py - # udf not supported in Windows CI -cases/uncatalog/system-test/0-others/test_udf_test.py -cases/uncatalog/system-test/0-others/test_udf_create.py -cases/uncatalog/system-test/0-others/test_udf_restart_taosd.py -cases/uncatalog/system-test/0-others/test_udf_cfg1.py -cases/uncatalog/system-test/0-others/test_udf_cfg2.py +cases/12-UDFs/test_udf_test.py +cases/12-UDFs/test_udf_create.py +cases/12-UDFs/test_udf_restart_taosd.py +cases/12-UDFs/test_udf_cfg1.py +cases/12-UDFs/test_udf_cfg2.py cases/uncatalog/system-test/0-others/test_udfpy_main.py cases/uncatalog/system-test/7-tmq/test_tmqUdf.py cases/uncatalog/system-test/7-tmq/test_tmqUdf_multCtb_snapshot0.py cases/uncatalog/system-test/7-tmq/test_tmqUdf_multCtb_snapshot1.py -# Stream not supported in Windows CI -cases/18-StreamProcessing/01-Snode/test_snode_mgmt_basic.py -cases/18-StreamProcessing/01-Snode/test_snode_mgmt_replica3.py -cases/18-StreamProcessing/01-Snode/test_snode_mgmt_replicas.py -cases/18-StreamProcessing/01-Snode/test_snode_params_alter_value.py -cases/18-StreamProcessing/01-Snode/test_snode_params_check_default.py -cases/18-StreamProcessing/01-Snode/test_snode_params_check_maxvalue.py -cases/18-StreamProcessing/01-Snode/test_snode_params_check_minvalue.py -cases/18-StreamProcessing/01-Snode/test_snode_privileges_recalc.py -cases/18-StreamProcessing/01-Snode/test_snode_privileges_stream.py -cases/18-StreamProcessing/01-Snode/test_snode_privileges_systable.py -cases/18-StreamProcessing/01-Snode/test_snode_privileges_twodb.py -cases/18-StreamProcessing/02-Stream/test_stream_check_name.py -cases/18-StreamProcessing/02-Stream/test_stream_long_name.py -cases/18-StreamProcessing/02-Stream/test_stream_no_snode.py -cases/18-StreamProcessing/02-Stream/test_stream_same_name.py -cases/18-StreamProcessing/03-TriggerMode/test_count_new.py -cases/18-StreamProcessing/03-TriggerMode/test_count.py -cases/18-StreamProcessing/03-TriggerMode/test_event_new.py -cases/18-StreamProcessing/03-TriggerMode/test_event.py -cases/18-StreamProcessing/03-TriggerMode/test_fill_history.py -cases/18-StreamProcessing/03-TriggerMode/test_period_1.py -cases/18-StreamProcessing/03-TriggerMode/test_sliding.py -cases/18-StreamProcessing/03-TriggerMode/test_state_new.py -cases/18-StreamProcessing/03-TriggerMode/test_state_disorder_update_new.py -cases/18-StreamProcessing/03-TriggerMode/test_state_window_close.py -cases/18-StreamProcessing/03-TriggerMode/test_state.py -cases/18-StreamProcessing/04-Options/test_abnormal_data_table.py -cases/18-StreamProcessing/04-Options/test_abnormal_data_vtable.py -cases/18-StreamProcessing/04-Options/test_meta_change_table.py -cases/18-StreamProcessing/04-Options/test_meta_change_vtable.py -cases/18-StreamProcessing/04-Options/test_options_abnormal.py -cases/18-StreamProcessing/04-Options/test_options_basic.py -cases/18-StreamProcessing/04-Options/test_options_ns.py -cases/18-StreamProcessing/04-Options/test_options_us.py -cases/18-StreamProcessing/04-Options/test_options_vtable.py -cases/18-StreamProcessing/05-Notify/test_notify.py -cases/18-StreamProcessing/06-ResultSaved/test_result_saved_comprehensive.py -cases/18-StreamProcessing/07-SubQuery/test_subquery_basic.py -cases/18-StreamProcessing/07-SubQuery/test_subquery_count_1.py -cases/18-StreamProcessing/07-SubQuery/test_subquery_count_2.py -cases/18-StreamProcessing/07-SubQuery/test_subquery_event.py -cases/18-StreamProcessing/07-SubQuery/test_subquery_sliding.py -cases/18-StreamProcessing/07-SubQuery/test_subquery_session.py -cases/18-StreamProcessing/07-SubQuery/test_subquery_state.py -cases/18-StreamProcessing/07-SubQuery/test_subquery_usage_restrict.py -cases/18-StreamProcessing/07-SubQuery/test_subquery_vtable_change.py -cases/18-StreamProcessing/08-Recalc/test_recalc_combined_options.py -cases/18-StreamProcessing/08-Recalc/test_recalc_delete_recalc.py -cases/18-StreamProcessing/08-Recalc/test_recalc_expired_time.py -cases/18-StreamProcessing/08-Recalc/test_recalc_ignore_disorder.py -cases/18-StreamProcessing/08-Recalc/test_recalc_manual_basic.py -cases/18-StreamProcessing/08-Recalc/test_recalc_manual_with_options.py -cases/18-StreamProcessing/08-Recalc/test_recalc_watermark.py -cases/18-StreamProcessing/20-UseCase/test_idmp_manager.py -cases/18-StreamProcessing/20-UseCase/test_idmp_meters.py -cases/18-StreamProcessing/20-UseCase/test_idmp_public.py -cases/18-StreamProcessing/20-UseCase/test_idmp_pv.py -cases/18-StreamProcessing/20-UseCase/test_idmp_tobacco.py -cases/18-StreamProcessing/20-UseCase/test_idmp_vehicle.py -cases/18-StreamProcessing/20-UseCase/test_idmp_yuxi.py -cases/18-StreamProcessing/20-UseCase/test_nevados.py -cases/18-StreamProcessing/20-UseCase/test_three_gorges_case4.py -cases/18-StreamProcessing/20-UseCase/test_three_gorges_case5.py -cases/18-StreamProcessing/20-UseCase/test_three_gorges_phase1.py -cases/18-StreamProcessing/20-UseCase/test_three_gorges_second_case1.py -cases/18-StreamProcessing/20-UseCase/test_three_gorges_second_case2.py -cases/18-StreamProcessing/20-UseCase/test_three_gorges_second_case3.py -cases/18-StreamProcessing/20-UseCase/test_three_gorges_second_case4.py -cases/18-StreamProcessing/20-UseCase/test_three_gorges_second_case6.py -cases/18-StreamProcessing/20-UseCase/test_three_gorges_second_case17.py -cases/18-StreamProcessing/20-UseCase/test_three_gorges_second_case18.py -cases/18-StreamProcessing/20-UseCase/test_three_gorges_second_case19.py -cases/18-StreamProcessing/20-UseCase/test_three_gorges_second_case19_bug1.py -cases/18-StreamProcessing/20-UseCase/test_three_gorges_second_case22.py -cases/18-StreamProcessing/20-UseCase/test_yuxi_TS_7152.py -cases/18-StreamProcessing/23-Compatibility/test_compatibility_cross_version.py -cases/18-StreamProcessing/30-OldPyCases/test_oldcase_at_once.py -cases/18-StreamProcessing/30-OldPyCases/test_oldcase_backquote_check.py -cases/18-StreamProcessing/30-OldPyCases/test_oldcase_checkpoint_info.py -cases/18-StreamProcessing/30-OldPyCases/test_oldcase_drop.py -cases/18-StreamProcessing/30-OldPyCases/test_oldcase_empty_identifier.py -cases/18-StreamProcessing/30-OldPyCases/test_oldcase_math_func.py -cases/18-StreamProcessing/30-OldPyCases/test_oldcase_snode_restart_with_checkpoint.py -cases/18-StreamProcessing/30-OldPyCases/test_oldcase_state_window.py -cases/18-StreamProcessing/30-OldPyCases/test_oldcase_stream_basic.py -cases/18-StreamProcessing/30-OldPyCases/test_oldcase_stream_multi_agg.py -cases/18-StreamProcessing/30-OldPyCases/test_oldcase_string_func.py -cases/18-StreamProcessing/30-OldPyCases/test_oldcase_taosdShell.py -cases/18-StreamProcessing/30-OldPyCases/test_oldcase_window_true_for.py -cases/18-StreamProcessing/31-OldTsimCases/test_oldcase_basic1.py -cases/18-StreamProcessing/31-OldTsimCases/test_oldcase_basic2.py -cases/18-StreamProcessing/31-OldTsimCases/test_oldcase_check.py -cases/18-StreamProcessing/31-OldTsimCases/test_oldcase_checkpoint.py -cases/18-StreamProcessing/31-OldTsimCases/test_oldcase_concat.py -cases/18-StreamProcessing/31-OldTsimCases/test_oldcase_continuewindowclose.py -cases/18-StreamProcessing/31-OldTsimCases/test_oldcase_state.py -cases/18-StreamProcessing/31-OldTsimCases/test_oldcase_twa.py -cases/18-StreamProcessing/23-Compatibility/test_compatibility_rolling_upgrade_all.py -cases/18-StreamProcessing/23-Compatibility/test_compatibility_backward_forward.py -cases/18-StreamProcessing/23-Compatibility/test_compatibility_rolling_upgrade.py -cases/uncatalog/system-test/7-tmq/test_tmq_td37436.py # MQTT bnode not supported in Windows CI -cases/40-DataSubscription/03-MQTT/test_mqtt_smoking.py -cases/40-DataSubscription/03-MQTT/test_mqtt_bnodes.py -cases/40-DataSubscription/03-MQTT/test_mqtt_qos.py -cases/40-DataSubscription/03-MQTT/test_mqtt_special.py -cases/40-DataSubscription/03-MQTT/test_mqtt_rb.py +cases/17-DataSubscription/03-MQTT/test_mqtt_smoking.py +cases/17-DataSubscription/03-MQTT/test_mqtt_bnodes.py +cases/17-DataSubscription/03-MQTT/test_mqtt_qos.py +cases/17-DataSubscription/03-MQTT/test_mqtt_special.py +cases/17-DataSubscription/03-MQTT/test_mqtt_rb.py + +# Unit Test +82-UnitTest/test.sh + +#docs Test +83-DocTest/c.sh +83-DocTest/python.sh +83-DocTest/node.sh +83-DocTest/csharp.sh +83-DocTest/jdbc.sh +83-DocTest/rust.sh +83-DocTest/go.sh +83-DocTest/test_R.sh \ No newline at end of file diff --git a/test/new_test_framework/utils/common.py b/test/new_test_framework/utils/common.py index 56dc017ae168..1223dcc2c3e0 100644 --- a/test/new_test_framework/utils/common.py +++ b/test/new_test_framework/utils/common.py @@ -2974,7 +2974,7 @@ def generate_query_result_file(self, test_case, idx, sql): # print(f"taosCmd:{taosCmd}, currentPath:{os.getcwd()}") os.system(taosCmd) return self.query_result_file - + def run_sql(self, sql, db): tdsql = self.newTdSql() if db: @@ -2994,14 +2994,11 @@ def execute_query_file(self, inputfile, max_workers=8): tdLog.info(f"Executing query file: {inputfile}") - with open(inputfile, 'r') as f: + with open(inputfile, "r") as f: lines = [line.strip() for line in f if line.strip()] # 假设第一行是 use 语句 - db = lines[0].split()[1].rstrip(';') - sql_lines = [ - line.replace('\\G', '').rstrip(';') + ';' - for line in lines[1:] - ] + db = lines[0].split()[1].rstrip(";") + sql_lines = [line.replace("\\G", "").rstrip(";") + ";" for line in lines[1:]] with concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) as executor: executor.map(lambda sql: self.run_sql(sql, db), sql_lines) From 34cda8affe1d9937ec4dfa7610232fc5f04ac77b Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sun, 8 Mar 2026 14:59:17 +0800 Subject: [PATCH 15/18] Add weekly repository report GitHub Agentic Workflow (#34709) * Initial plan * Add weekly report GitHub Agentic Workflow Co-authored-by: feici02 <5568663+feici02@users.noreply.github.com> * chore: fix review comments and re-compile [skip ci] Signed-off-by: WANG Xu --------- Signed-off-by: WANG Xu Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: feici02 <5568663+feici02@users.noreply.github.com> Co-authored-by: WANG Xu --- .github/workflows/weekly-report.lock.yml | 1083 ++++++++++++++++++++++ .github/workflows/weekly-report.md | 249 +++++ 2 files changed, 1332 insertions(+) create mode 100644 .github/workflows/weekly-report.lock.yml create mode 100644 .github/workflows/weekly-report.md diff --git a/.github/workflows/weekly-report.lock.yml b/.github/workflows/weekly-report.lock.yml new file mode 100644 index 000000000000..2cac0bdb9e37 --- /dev/null +++ b/.github/workflows/weekly-report.lock.yml @@ -0,0 +1,1083 @@ +# +# ___ _ _ +# / _ \ | | (_) +# | |_| | __ _ ___ _ __ | |_ _ ___ +# | _ |/ _` |/ _ \ '_ \| __| |/ __| +# | | | | (_| | __/ | | | |_| | (__ +# \_| |_/\__, |\___|_| |_|\__|_|\___| +# __/ | +# _ _ |___/ +# | | | | / _| | +# | | | | ___ _ __ _ __| |_| | _____ ____ +# | |/\| |/ _ \ '__| |/ /| _| |/ _ \ \ /\ / / ___| +# \ /\ / (_) | | | | ( | | | | (_) \ V V /\__ \ +# \/ \/ \___/|_| |_|\_\|_| |_|\___/ \_/\_/ |___/ +# +# This file was automatically generated by gh-aw (v0.56.0). DO NOT EDIT. +# +# To update this file, edit the corresponding .md file and run: +# gh aw compile +# Not all edits will cause changes to this file. +# +# For more information: https://github.github.com/gh-aw/introduction/overview/ +# +# Generates a weekly read-only report covering PRs, Issues, and Branch Hygiene for the previous calendar week (Asia/Shanghai time) and posts it to GitHub Discussions. +# +# gh-aw-metadata: {"schema_version":"v2","frontmatter_hash":"ccab0d1c5ce8e55c0bb40e8abde7085c10496c0963cef44d3ea33aa12d851191","compiler_version":"v0.56.0","strict":true} + +name: "Weekly Repository Report" +"on": + schedule: + - cron: "0 22 * * 0" + workflow_dispatch: + +permissions: {} + +concurrency: + group: "gh-aw-${{ github.workflow }}" + +run-name: "Weekly Repository Report" + +jobs: + activation: + runs-on: ubuntu-slim + permissions: + contents: read + outputs: + comment_id: "" + comment_repo: "" + model: ${{ steps.generate_aw_info.outputs.model }} + secret_verification_result: ${{ steps.validate-secret.outputs.verification_result }} + steps: + - name: Setup Scripts + uses: github/gh-aw/actions/setup@046e81c42fe2a9d91f47596660fcc69f48f5c70a # v0.56.0 + with: + destination: /opt/gh-aw/actions + - name: Generate agentic run info + id: generate_aw_info + env: + GH_AW_INFO_ENGINE_ID: "copilot" + GH_AW_INFO_ENGINE_NAME: "GitHub Copilot CLI" + GH_AW_INFO_MODEL: ${{ vars.GH_AW_MODEL_AGENT_COPILOT || '' }} + GH_AW_INFO_VERSION: "" + GH_AW_INFO_AGENT_VERSION: "latest" + GH_AW_INFO_CLI_VERSION: "v0.56.0" + GH_AW_INFO_WORKFLOW_NAME: "Weekly Repository Report" + GH_AW_INFO_EXPERIMENTAL: "false" + GH_AW_INFO_SUPPORTS_TOOLS_ALLOWLIST: "true" + GH_AW_INFO_STAGED: "false" + GH_AW_INFO_ALLOWED_DOMAINS: '["defaults"]' + GH_AW_INFO_FIREWALL_ENABLED: "true" + GH_AW_INFO_AWF_VERSION: "v0.23.0" + GH_AW_INFO_AWMG_VERSION: "" + GH_AW_INFO_FIREWALL_TYPE: "squid" + GH_AW_COMPILED_STRICT: "true" + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { main } = require('/opt/gh-aw/actions/generate_aw_info.cjs'); + await main(core, context); + - name: Validate COPILOT_GITHUB_TOKEN secret + id: validate-secret + run: /opt/gh-aw/actions/validate_multi_secret.sh COPILOT_GITHUB_TOKEN 'GitHub Copilot CLI' https://github.github.com/gh-aw/reference/engines/#github-copilot-default + env: + COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }} + - name: Checkout .github and .agents folders + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + sparse-checkout: | + .github + .agents + sparse-checkout-cone-mode: true + fetch-depth: 1 + persist-credentials: false + - name: Check workflow file timestamps + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + env: + GH_AW_WORKFLOW_FILE: "weekly-report.lock.yml" + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { main } = require('/opt/gh-aw/actions/check_workflow_timestamp_api.cjs'); + await main(); + - name: Create prompt with built-in context + env: + GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_SAFE_OUTPUTS: ${{ env.GH_AW_SAFE_OUTPUTS }} + GH_AW_GITHUB_ACTOR: ${{ github.actor }} + GH_AW_GITHUB_EVENT_COMMENT_ID: ${{ github.event.comment.id }} + GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: ${{ github.event.discussion.number }} + GH_AW_GITHUB_EVENT_ISSUE_NUMBER: ${{ github.event.issue.number }} + GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }} + GH_AW_GITHUB_REPOSITORY: ${{ github.repository }} + GH_AW_GITHUB_RUN_ID: ${{ github.run_id }} + GH_AW_GITHUB_WORKSPACE: ${{ github.workspace }} + run: | + bash /opt/gh-aw/actions/create_prompt_first.sh + { + cat << 'GH_AW_PROMPT_EOF' + + GH_AW_PROMPT_EOF + cat "/opt/gh-aw/prompts/xpia.md" + cat "/opt/gh-aw/prompts/temp_folder_prompt.md" + cat "/opt/gh-aw/prompts/markdown.md" + cat "/opt/gh-aw/prompts/safe_outputs_prompt.md" + cat << 'GH_AW_PROMPT_EOF' + + Tools: create_discussion, missing_tool, missing_data, noop + + + The following GitHub context information is available for this workflow: + {{#if __GH_AW_GITHUB_ACTOR__ }} + - **actor**: __GH_AW_GITHUB_ACTOR__ + {{/if}} + {{#if __GH_AW_GITHUB_REPOSITORY__ }} + - **repository**: __GH_AW_GITHUB_REPOSITORY__ + {{/if}} + {{#if __GH_AW_GITHUB_WORKSPACE__ }} + - **workspace**: __GH_AW_GITHUB_WORKSPACE__ + {{/if}} + {{#if __GH_AW_GITHUB_EVENT_ISSUE_NUMBER__ }} + - **issue-number**: #__GH_AW_GITHUB_EVENT_ISSUE_NUMBER__ + {{/if}} + {{#if __GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER__ }} + - **discussion-number**: #__GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER__ + {{/if}} + {{#if __GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER__ }} + - **pull-request-number**: #__GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER__ + {{/if}} + {{#if __GH_AW_GITHUB_EVENT_COMMENT_ID__ }} + - **comment-id**: __GH_AW_GITHUB_EVENT_COMMENT_ID__ + {{/if}} + {{#if __GH_AW_GITHUB_RUN_ID__ }} + - **workflow-run-id**: __GH_AW_GITHUB_RUN_ID__ + {{/if}} + + + GH_AW_PROMPT_EOF + cat << 'GH_AW_PROMPT_EOF' + + GH_AW_PROMPT_EOF + cat << 'GH_AW_PROMPT_EOF' + {{#runtime-import .github/workflows/weekly-report.md}} + GH_AW_PROMPT_EOF + } > "$GH_AW_PROMPT" + - name: Interpolate variables and render templates + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + env: + GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { main } = require('/opt/gh-aw/actions/interpolate_prompt.cjs'); + await main(); + - name: Substitute placeholders + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + env: + GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_GITHUB_ACTOR: ${{ github.actor }} + GH_AW_GITHUB_EVENT_COMMENT_ID: ${{ github.event.comment.id }} + GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: ${{ github.event.discussion.number }} + GH_AW_GITHUB_EVENT_ISSUE_NUMBER: ${{ github.event.issue.number }} + GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }} + GH_AW_GITHUB_REPOSITORY: ${{ github.repository }} + GH_AW_GITHUB_RUN_ID: ${{ github.run_id }} + GH_AW_GITHUB_WORKSPACE: ${{ github.workspace }} + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + + const substitutePlaceholders = require('/opt/gh-aw/actions/substitute_placeholders.cjs'); + + // Call the substitution function + return await substitutePlaceholders({ + file: process.env.GH_AW_PROMPT, + substitutions: { + GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR, + GH_AW_GITHUB_EVENT_COMMENT_ID: process.env.GH_AW_GITHUB_EVENT_COMMENT_ID, + GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: process.env.GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER, + GH_AW_GITHUB_EVENT_ISSUE_NUMBER: process.env.GH_AW_GITHUB_EVENT_ISSUE_NUMBER, + GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER: process.env.GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER, + GH_AW_GITHUB_REPOSITORY: process.env.GH_AW_GITHUB_REPOSITORY, + GH_AW_GITHUB_RUN_ID: process.env.GH_AW_GITHUB_RUN_ID, + GH_AW_GITHUB_WORKSPACE: process.env.GH_AW_GITHUB_WORKSPACE + } + }); + - name: Validate prompt placeholders + env: + GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + run: bash /opt/gh-aw/actions/validate_prompt_placeholders.sh + - name: Print prompt + env: + GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + run: bash /opt/gh-aw/actions/print_prompt_summary.sh + - name: Upload activation artifact + if: success() + uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7 + with: + name: activation + path: | + /tmp/gh-aw/aw_info.json + /tmp/gh-aw/aw-prompts/prompt.txt + retention-days: 1 + + agent: + needs: activation + runs-on: ubuntu-latest + permissions: + contents: read + discussions: read + issues: read + pull-requests: read + concurrency: + group: "gh-aw-copilot-${{ github.workflow }}" + env: + DEFAULT_BRANCH: ${{ github.event.repository.default_branch }} + GH_AW_ASSETS_ALLOWED_EXTS: "" + GH_AW_ASSETS_BRANCH: "" + GH_AW_ASSETS_MAX_SIZE_KB: 0 + GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs + GH_AW_SAFE_OUTPUTS: /opt/gh-aw/safeoutputs/outputs.jsonl + GH_AW_SAFE_OUTPUTS_CONFIG_PATH: /opt/gh-aw/safeoutputs/config.json + GH_AW_SAFE_OUTPUTS_TOOLS_PATH: /opt/gh-aw/safeoutputs/tools.json + GH_AW_WORKFLOW_ID_SANITIZED: weeklyreport + outputs: + checkout_pr_success: ${{ steps.checkout-pr.outputs.checkout_pr_success || 'true' }} + detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} + detection_success: ${{ steps.detection_conclusion.outputs.success }} + has_patch: ${{ steps.collect_output.outputs.has_patch }} + inference_access_error: ${{ steps.detect-inference-error.outputs.inference_access_error || 'false' }} + model: ${{ needs.activation.outputs.model }} + output: ${{ steps.collect_output.outputs.output }} + output_types: ${{ steps.collect_output.outputs.output_types }} + steps: + - name: Setup Scripts + uses: github/gh-aw/actions/setup@046e81c42fe2a9d91f47596660fcc69f48f5c70a # v0.56.0 + with: + destination: /opt/gh-aw/actions + - name: Checkout repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + - name: Create gh-aw temp directory + run: bash /opt/gh-aw/actions/create_gh_aw_tmp_dir.sh + - name: Configure Git credentials + env: + REPO_NAME: ${{ github.repository }} + SERVER_URL: ${{ github.server_url }} + run: | + git config --global user.email "github-actions[bot]@users.noreply.github.com" + git config --global user.name "github-actions[bot]" + git config --global am.keepcr true + # Re-authenticate git with GitHub token + SERVER_URL_STRIPPED="${SERVER_URL#https://}" + git remote set-url origin "https://x-access-token:${{ github.token }}@${SERVER_URL_STRIPPED}/${REPO_NAME}.git" + echo "Git configured with standard GitHub Actions identity" + - name: Checkout PR branch + id: checkout-pr + if: | + (github.event.pull_request) || (github.event.issue.pull_request) + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + env: + GH_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + with: + github-token: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { main } = require('/opt/gh-aw/actions/checkout_pr_branch.cjs'); + await main(); + - name: Install GitHub Copilot CLI + run: /opt/gh-aw/actions/install_copilot_cli.sh latest + - name: Install awf binary + run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.23.0 + - name: Download container images + run: bash /opt/gh-aw/actions/download_docker_images.sh ghcr.io/github/gh-aw-firewall/agent:0.23.0 ghcr.io/github/gh-aw-firewall/api-proxy:0.23.0 ghcr.io/github/gh-aw-firewall/squid:0.23.0 ghcr.io/github/gh-aw-mcpg:v0.1.8 node:lts-alpine + - name: Write Safe Outputs Config + run: | + mkdir -p /opt/gh-aw/safeoutputs + mkdir -p /tmp/gh-aw/safeoutputs + mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs + cat > /opt/gh-aw/safeoutputs/config.json << 'GH_AW_SAFE_OUTPUTS_CONFIG_EOF' + {"create_discussion":{"expires":168,"max":1},"missing_data":{},"missing_tool":{},"noop":{"max":1}} + GH_AW_SAFE_OUTPUTS_CONFIG_EOF + cat > /opt/gh-aw/safeoutputs/tools.json << 'GH_AW_SAFE_OUTPUTS_TOOLS_EOF' + [ + { + "description": "Create a GitHub discussion for announcements, Q\u0026A, reports, status updates, or community conversations. Use this for content that benefits from threaded replies, doesn't require task tracking, or serves as documentation. For actionable work items that need assignment and status tracking, use create_issue instead. CONSTRAINTS: Maximum 1 discussion(s) can be created.", + "inputSchema": { + "additionalProperties": false, + "properties": { + "body": { + "description": "Discussion content in Markdown. Do NOT repeat the title as a heading since it already appears as the discussion's h1. Include all relevant context, findings, or questions.", + "type": "string" + }, + "category": { + "description": "Discussion category by name (e.g., 'General'), slug (e.g., 'general'), or ID. If omitted, uses the first available category. Category must exist in the repository.", + "type": "string" + }, + "integrity": { + "description": "Trustworthiness level of the message source (e.g., \"low\", \"medium\", \"high\").", + "type": "string" + }, + "secrecy": { + "description": "Confidentiality level of the message content (e.g., \"public\", \"internal\", \"private\").", + "type": "string" + }, + "title": { + "description": "Concise discussion title summarizing the topic. The title appears as the main heading, so keep it brief and descriptive.", + "type": "string" + } + }, + "required": [ + "title", + "body" + ], + "type": "object" + }, + "name": "create_discussion" + }, + { + "description": "Report that a tool or capability needed to complete the task is not available, or share any information you deem important about missing functionality or limitations. Use this when you cannot accomplish what was requested because the required functionality is missing or access is restricted.", + "inputSchema": { + "additionalProperties": false, + "properties": { + "alternatives": { + "description": "Any workarounds, manual steps, or alternative approaches the user could take (max 256 characters).", + "type": "string" + }, + "integrity": { + "description": "Trustworthiness level of the message source (e.g., \"low\", \"medium\", \"high\").", + "type": "string" + }, + "reason": { + "description": "Explanation of why this tool is needed or what information you want to share about the limitation (max 256 characters).", + "type": "string" + }, + "secrecy": { + "description": "Confidentiality level of the message content (e.g., \"public\", \"internal\", \"private\").", + "type": "string" + }, + "tool": { + "description": "Optional: Name or description of the missing tool or capability (max 128 characters). Be specific about what functionality is needed.", + "type": "string" + } + }, + "required": [ + "reason" + ], + "type": "object" + }, + "name": "missing_tool" + }, + { + "description": "Log a transparency message when no significant actions are needed. Use this to confirm workflow completion and provide visibility when analysis is complete but no changes or outputs are required (e.g., 'No issues found', 'All checks passed'). This ensures the workflow produces human-visible output even when no other actions are taken.", + "inputSchema": { + "additionalProperties": false, + "properties": { + "integrity": { + "description": "Trustworthiness level of the message source (e.g., \"low\", \"medium\", \"high\").", + "type": "string" + }, + "message": { + "description": "Status or completion message to log. Should explain what was analyzed and the outcome (e.g., 'Code review complete - no issues found', 'Analysis complete - all tests passing').", + "type": "string" + }, + "secrecy": { + "description": "Confidentiality level of the message content (e.g., \"public\", \"internal\", \"private\").", + "type": "string" + } + }, + "required": [ + "message" + ], + "type": "object" + }, + "name": "noop" + }, + { + "description": "Report that data or information needed to complete the task is not available. Use this when you cannot accomplish what was requested because required data, context, or information is missing.", + "inputSchema": { + "additionalProperties": false, + "properties": { + "alternatives": { + "description": "Any workarounds, manual steps, or alternative approaches the user could take (max 256 characters).", + "type": "string" + }, + "context": { + "description": "Additional context about the missing data or where it should come from (max 256 characters).", + "type": "string" + }, + "data_type": { + "description": "Type or description of the missing data or information (max 128 characters). Be specific about what data is needed.", + "type": "string" + }, + "integrity": { + "description": "Trustworthiness level of the message source (e.g., \"low\", \"medium\", \"high\").", + "type": "string" + }, + "reason": { + "description": "Explanation of why this data is needed to complete the task (max 256 characters).", + "type": "string" + }, + "secrecy": { + "description": "Confidentiality level of the message content (e.g., \"public\", \"internal\", \"private\").", + "type": "string" + } + }, + "required": [], + "type": "object" + }, + "name": "missing_data" + } + ] + GH_AW_SAFE_OUTPUTS_TOOLS_EOF + cat > /opt/gh-aw/safeoutputs/validation.json << 'GH_AW_SAFE_OUTPUTS_VALIDATION_EOF' + { + "create_discussion": { + "defaultMax": 1, + "fields": { + "body": { + "required": true, + "type": "string", + "sanitize": true, + "maxLength": 65000 + }, + "category": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, + "repo": { + "type": "string", + "maxLength": 256 + }, + "title": { + "required": true, + "type": "string", + "sanitize": true, + "maxLength": 128 + } + } + }, + "missing_data": { + "defaultMax": 20, + "fields": { + "alternatives": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, + "context": { + "type": "string", + "sanitize": true, + "maxLength": 256 + }, + "data_type": { + "type": "string", + "sanitize": true, + "maxLength": 128 + }, + "reason": { + "type": "string", + "sanitize": true, + "maxLength": 256 + } + } + }, + "missing_tool": { + "defaultMax": 20, + "fields": { + "alternatives": { + "type": "string", + "sanitize": true, + "maxLength": 512 + }, + "reason": { + "required": true, + "type": "string", + "sanitize": true, + "maxLength": 256 + }, + "tool": { + "type": "string", + "sanitize": true, + "maxLength": 128 + } + } + }, + "noop": { + "defaultMax": 1, + "fields": { + "message": { + "required": true, + "type": "string", + "sanitize": true, + "maxLength": 65000 + } + } + } + } + GH_AW_SAFE_OUTPUTS_VALIDATION_EOF + - name: Generate Safe Outputs MCP Server Config + id: safe-outputs-config + run: | + # Generate a secure random API key (360 bits of entropy, 40+ chars) + # Mask immediately to prevent timing vulnerabilities + API_KEY=$(openssl rand -base64 45 | tr -d '/+=') + echo "::add-mask::${API_KEY}" + + PORT=3001 + + # Set outputs for next steps + { + echo "safe_outputs_api_key=${API_KEY}" + echo "safe_outputs_port=${PORT}" + } >> "$GITHUB_OUTPUT" + + echo "Safe Outputs MCP server will run on port ${PORT}" + + - name: Start Safe Outputs MCP HTTP Server + id: safe-outputs-start + env: + DEBUG: '*' + GH_AW_SAFE_OUTPUTS_PORT: ${{ steps.safe-outputs-config.outputs.safe_outputs_port }} + GH_AW_SAFE_OUTPUTS_API_KEY: ${{ steps.safe-outputs-config.outputs.safe_outputs_api_key }} + GH_AW_SAFE_OUTPUTS_TOOLS_PATH: /opt/gh-aw/safeoutputs/tools.json + GH_AW_SAFE_OUTPUTS_CONFIG_PATH: /opt/gh-aw/safeoutputs/config.json + GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs + run: | + # Environment variables are set above to prevent template injection + export DEBUG + export GH_AW_SAFE_OUTPUTS_PORT + export GH_AW_SAFE_OUTPUTS_API_KEY + export GH_AW_SAFE_OUTPUTS_TOOLS_PATH + export GH_AW_SAFE_OUTPUTS_CONFIG_PATH + export GH_AW_MCP_LOG_DIR + + bash /opt/gh-aw/actions/start_safe_outputs_server.sh + + - name: Start MCP Gateway + id: start-mcp-gateway + env: + GH_AW_SAFE_OUTPUTS: ${{ env.GH_AW_SAFE_OUTPUTS }} + GH_AW_SAFE_OUTPUTS_API_KEY: ${{ steps.safe-outputs-start.outputs.api_key }} + GH_AW_SAFE_OUTPUTS_PORT: ${{ steps.safe-outputs-start.outputs.port }} + GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + run: | + set -eo pipefail + mkdir -p /tmp/gh-aw/mcp-config + + # Export gateway environment variables for MCP config and gateway script + export MCP_GATEWAY_PORT="80" + export MCP_GATEWAY_DOMAIN="host.docker.internal" + MCP_GATEWAY_API_KEY=$(openssl rand -base64 45 | tr -d '/+=') + echo "::add-mask::${MCP_GATEWAY_API_KEY}" + export MCP_GATEWAY_API_KEY + export MCP_GATEWAY_PAYLOAD_DIR="/tmp/gh-aw/mcp-payloads" + mkdir -p "${MCP_GATEWAY_PAYLOAD_DIR}" + export MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD="524288" + export DEBUG="*" + + export GH_AW_ENGINE="copilot" + export GITHUB_PERSONAL_ACCESS_TOKEN="$GITHUB_MCP_SERVER_TOKEN" + export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host -v /var/run/docker.sock:/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_PERSONAL_ACCESS_TOKEN -e GITHUB_MCP_LOCKDOWN -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GH_AW_SAFE_OUTPUTS_PORT -e GH_AW_SAFE_OUTPUTS_API_KEY -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw ghcr.io/github/gh-aw-mcpg:v0.1.8' + + mkdir -p /home/runner/.copilot + cat << GH_AW_MCP_CONFIG_EOF | bash /opt/gh-aw/actions/start_mcp_gateway.sh + { + "mcpServers": { + "github": { + "type": "http", + "url": "https://api.githubcopilot.com/mcp/", + "headers": { + "Authorization": "Bearer \${GITHUB_PERSONAL_ACCESS_TOKEN}", + "X-MCP-Readonly": "true", + "X-MCP-Toolsets": "context,repos,issues,pull_requests" + }, + "env": { + "GITHUB_PERSONAL_ACCESS_TOKEN": "\${GITHUB_MCP_SERVER_TOKEN}" + } + }, + "safeoutputs": { + "type": "http", + "url": "http://host.docker.internal:$GH_AW_SAFE_OUTPUTS_PORT", + "headers": { + "Authorization": "\${GH_AW_SAFE_OUTPUTS_API_KEY}" + } + } + }, + "gateway": { + "port": $MCP_GATEWAY_PORT, + "domain": "${MCP_GATEWAY_DOMAIN}", + "apiKey": "${MCP_GATEWAY_API_KEY}", + "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" + } + } + GH_AW_MCP_CONFIG_EOF + - name: Download activation artifact + uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8 + with: + name: activation + path: /tmp/gh-aw + - name: Clean git credentials + run: bash /opt/gh-aw/actions/clean_git_credentials.sh + - name: Execute GitHub Copilot CLI + id: agentic_execution + # Copilot CLI tool arguments (sorted): + timeout-minutes: 20 + run: | + set -o pipefail + touch /tmp/gh-aw/agent-step-summary.md + # shellcheck disable=SC1003 + sudo -E awf --env-all --container-workdir "${GITHUB_WORKSPACE}" --allow-domains "api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,api.snapcraft.io,archive.ubuntu.com,azure.archive.ubuntu.com,crl.geotrust.com,crl.globalsign.com,crl.identrust.com,crl.sectigo.com,crl.thawte.com,crl.usertrust.com,crl.verisign.com,crl3.digicert.com,crl4.digicert.com,crls.ssl.com,github.com,host.docker.internal,json-schema.org,json.schemastore.org,keyserver.ubuntu.com,ocsp.digicert.com,ocsp.geotrust.com,ocsp.globalsign.com,ocsp.identrust.com,ocsp.sectigo.com,ocsp.ssl.com,ocsp.thawte.com,ocsp.usertrust.com,ocsp.verisign.com,packagecloud.io,packages.cloud.google.com,packages.microsoft.com,ppa.launchpad.net,raw.githubusercontent.com,registry.npmjs.org,s.symcb.com,s.symcd.com,security.ubuntu.com,telemetry.enterprise.githubcopilot.com,ts-crl.ws.symantec.com,ts-ocsp.ws.symantec.com" --log-level info --proxy-logs-dir /tmp/gh-aw/sandbox/firewall/logs --enable-host-access --image-tag 0.23.0 --skip-pull --enable-api-proxy \ + -- /bin/bash -c '/usr/local/bin/copilot --add-dir /tmp/gh-aw/ --log-level all --log-dir /tmp/gh-aw/sandbox/agent/logs/ --add-dir "${GITHUB_WORKSPACE}" --disable-builtin-mcps --allow-all-tools --allow-all-paths --prompt "$(cat /tmp/gh-aw/aw-prompts/prompt.txt)"' 2>&1 | tee -a /tmp/gh-aw/agent-stdio.log + env: + COPILOT_AGENT_RUNNER_TYPE: STANDALONE + COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }} + COPILOT_MODEL: ${{ vars.GH_AW_MODEL_AGENT_COPILOT || '' }} + GH_AW_MCP_CONFIG: /home/runner/.copilot/mcp-config.json + GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GH_AW_SAFE_OUTPUTS: ${{ env.GH_AW_SAFE_OUTPUTS }} + GITHUB_API_URL: ${{ github.api_url }} + GITHUB_HEAD_REF: ${{ github.head_ref }} + GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + GITHUB_REF_NAME: ${{ github.ref_name }} + GITHUB_SERVER_URL: ${{ github.server_url }} + GITHUB_STEP_SUMMARY: /tmp/gh-aw/agent-step-summary.md + GITHUB_WORKSPACE: ${{ github.workspace }} + XDG_CONFIG_HOME: /home/runner + - name: Detect inference access error + id: detect-inference-error + if: always() + continue-on-error: true + run: bash /opt/gh-aw/actions/detect_inference_access_error.sh + - name: Configure Git credentials + env: + REPO_NAME: ${{ github.repository }} + SERVER_URL: ${{ github.server_url }} + run: | + git config --global user.email "github-actions[bot]@users.noreply.github.com" + git config --global user.name "github-actions[bot]" + git config --global am.keepcr true + # Re-authenticate git with GitHub token + SERVER_URL_STRIPPED="${SERVER_URL#https://}" + git remote set-url origin "https://x-access-token:${{ github.token }}@${SERVER_URL_STRIPPED}/${REPO_NAME}.git" + echo "Git configured with standard GitHub Actions identity" + - name: Copy Copilot session state files to logs + if: always() + continue-on-error: true + run: | + # Copy Copilot session state files to logs folder for artifact collection + # This ensures they are in /tmp/gh-aw/ where secret redaction can scan them + SESSION_STATE_DIR="$HOME/.copilot/session-state" + LOGS_DIR="/tmp/gh-aw/sandbox/agent/logs" + + if [ -d "$SESSION_STATE_DIR" ]; then + echo "Copying Copilot session state files from $SESSION_STATE_DIR to $LOGS_DIR" + mkdir -p "$LOGS_DIR" + cp -v "$SESSION_STATE_DIR"/*.jsonl "$LOGS_DIR/" 2>/dev/null || true + echo "Session state files copied successfully" + else + echo "No session-state directory found at $SESSION_STATE_DIR" + fi + - name: Stop MCP Gateway + if: always() + continue-on-error: true + env: + MCP_GATEWAY_PORT: ${{ steps.start-mcp-gateway.outputs.gateway-port }} + MCP_GATEWAY_API_KEY: ${{ steps.start-mcp-gateway.outputs.gateway-api-key }} + GATEWAY_PID: ${{ steps.start-mcp-gateway.outputs.gateway-pid }} + run: | + bash /opt/gh-aw/actions/stop_mcp_gateway.sh "$GATEWAY_PID" + - name: Redact secrets in logs + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { main } = require('/opt/gh-aw/actions/redact_secrets.cjs'); + await main(); + env: + GH_AW_SECRET_NAMES: 'COPILOT_GITHUB_TOKEN,GH_AW_GITHUB_MCP_SERVER_TOKEN,GH_AW_GITHUB_TOKEN,GITHUB_TOKEN' + SECRET_COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }} + SECRET_GH_AW_GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN }} + SECRET_GH_AW_GITHUB_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN }} + SECRET_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Append agent step summary + if: always() + run: bash /opt/gh-aw/actions/append_agent_step_summary.sh + - name: Upload Safe Outputs + if: always() + uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7 + with: + name: safe-output + path: ${{ env.GH_AW_SAFE_OUTPUTS }} + if-no-files-found: warn + - name: Ingest agent output + id: collect_output + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + env: + GH_AW_SAFE_OUTPUTS: ${{ env.GH_AW_SAFE_OUTPUTS }} + GH_AW_ALLOWED_DOMAINS: "api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,api.snapcraft.io,archive.ubuntu.com,azure.archive.ubuntu.com,crl.geotrust.com,crl.globalsign.com,crl.identrust.com,crl.sectigo.com,crl.thawte.com,crl.usertrust.com,crl.verisign.com,crl3.digicert.com,crl4.digicert.com,crls.ssl.com,github.com,host.docker.internal,json-schema.org,json.schemastore.org,keyserver.ubuntu.com,ocsp.digicert.com,ocsp.geotrust.com,ocsp.globalsign.com,ocsp.identrust.com,ocsp.sectigo.com,ocsp.ssl.com,ocsp.thawte.com,ocsp.usertrust.com,ocsp.verisign.com,packagecloud.io,packages.cloud.google.com,packages.microsoft.com,ppa.launchpad.net,raw.githubusercontent.com,registry.npmjs.org,s.symcb.com,s.symcd.com,security.ubuntu.com,telemetry.enterprise.githubcopilot.com,ts-crl.ws.symantec.com,ts-ocsp.ws.symantec.com" + GITHUB_SERVER_URL: ${{ github.server_url }} + GITHUB_API_URL: ${{ github.api_url }} + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { main } = require('/opt/gh-aw/actions/collect_ndjson_output.cjs'); + await main(); + - name: Upload sanitized agent output + if: always() && env.GH_AW_AGENT_OUTPUT + uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7 + with: + name: agent-output + path: ${{ env.GH_AW_AGENT_OUTPUT }} + if-no-files-found: warn + - name: Upload engine output files + uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7 + with: + name: agent_outputs + path: | + /tmp/gh-aw/sandbox/agent/logs/ + /tmp/gh-aw/redacted-urls.log + if-no-files-found: ignore + - name: Parse agent logs for step summary + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + env: + GH_AW_AGENT_OUTPUT: /tmp/gh-aw/sandbox/agent/logs/ + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { main } = require('/opt/gh-aw/actions/parse_copilot_log.cjs'); + await main(); + - name: Parse MCP Gateway logs for step summary + if: always() + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { main } = require('/opt/gh-aw/actions/parse_mcp_gateway_log.cjs'); + await main(); + - name: Print firewall logs + if: always() + continue-on-error: true + env: + AWF_LOGS_DIR: /tmp/gh-aw/sandbox/firewall/logs + run: | + # Fix permissions on firewall logs so they can be uploaded as artifacts + # AWF runs with sudo, creating files owned by root + sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true + # Only run awf logs summary if awf command exists (it may not be installed if workflow failed before install step) + if command -v awf &> /dev/null; then + awf logs summary | tee -a "$GITHUB_STEP_SUMMARY" + else + echo 'AWF binary not installed, skipping firewall log summary' + fi + - name: Upload agent artifacts + if: always() + continue-on-error: true + uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7 + with: + name: agent-artifacts + path: | + /tmp/gh-aw/aw-prompts/prompt.txt + /tmp/gh-aw/mcp-logs/ + /tmp/gh-aw/sandbox/firewall/logs/ + /tmp/gh-aw/agent-stdio.log + /tmp/gh-aw/agent/ + if-no-files-found: ignore + # --- Threat Detection (inline) --- + - name: Check if detection needed + id: detection_guard + if: always() + env: + OUTPUT_TYPES: ${{ steps.collect_output.outputs.output_types }} + HAS_PATCH: ${{ steps.collect_output.outputs.has_patch }} + run: | + if [[ -n "$OUTPUT_TYPES" || "$HAS_PATCH" == "true" ]]; then + echo "run_detection=true" >> "$GITHUB_OUTPUT" + echo "Detection will run: output_types=$OUTPUT_TYPES, has_patch=$HAS_PATCH" + else + echo "run_detection=false" >> "$GITHUB_OUTPUT" + echo "Detection skipped: no agent outputs or patches to analyze" + fi + - name: Clear MCP configuration for detection + if: always() && steps.detection_guard.outputs.run_detection == 'true' + run: | + rm -f /tmp/gh-aw/mcp-config/mcp-servers.json + rm -f /home/runner/.copilot/mcp-config.json + rm -f "$GITHUB_WORKSPACE/.gemini/settings.json" + - name: Prepare threat detection files + if: always() && steps.detection_guard.outputs.run_detection == 'true' + run: | + mkdir -p /tmp/gh-aw/threat-detection/aw-prompts + cp /tmp/gh-aw/aw-prompts/prompt.txt /tmp/gh-aw/threat-detection/aw-prompts/prompt.txt 2>/dev/null || true + cp /tmp/gh-aw/agent_output.json /tmp/gh-aw/threat-detection/agent_output.json 2>/dev/null || true + for f in /tmp/gh-aw/aw-*.patch; do + [ -f "$f" ] && cp "$f" /tmp/gh-aw/threat-detection/ 2>/dev/null || true + done + echo "Prepared threat detection files:" + ls -la /tmp/gh-aw/threat-detection/ 2>/dev/null || true + - name: Setup threat detection + if: always() && steps.detection_guard.outputs.run_detection == 'true' + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + env: + WORKFLOW_NAME: "Weekly Repository Report" + WORKFLOW_DESCRIPTION: "Generates a weekly read-only report covering PRs, Issues, and Branch Hygiene for the previous calendar week (Asia/Shanghai time) and posts it to GitHub Discussions." + HAS_PATCH: ${{ steps.collect_output.outputs.has_patch }} + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { main } = require('/opt/gh-aw/actions/setup_threat_detection.cjs'); + await main(); + - name: Ensure threat-detection directory and log + if: always() && steps.detection_guard.outputs.run_detection == 'true' + run: | + mkdir -p /tmp/gh-aw/threat-detection + touch /tmp/gh-aw/threat-detection/detection.log + - name: Execute GitHub Copilot CLI + if: always() && steps.detection_guard.outputs.run_detection == 'true' + id: detection_agentic_execution + # Copilot CLI tool arguments (sorted): + # --allow-tool shell(cat) + # --allow-tool shell(grep) + # --allow-tool shell(head) + # --allow-tool shell(jq) + # --allow-tool shell(ls) + # --allow-tool shell(tail) + # --allow-tool shell(wc) + timeout-minutes: 20 + run: | + set -o pipefail + touch /tmp/gh-aw/agent-step-summary.md + # shellcheck disable=SC1003 + sudo -E awf --env-all --container-workdir "${GITHUB_WORKSPACE}" --allow-domains "api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,github.com,host.docker.internal,raw.githubusercontent.com,registry.npmjs.org,telemetry.enterprise.githubcopilot.com" --log-level info --proxy-logs-dir /tmp/gh-aw/sandbox/firewall/logs --enable-host-access --image-tag 0.23.0 --skip-pull --enable-api-proxy \ + -- /bin/bash -c '/usr/local/bin/copilot --add-dir /tmp/gh-aw/ --log-level all --log-dir /tmp/gh-aw/sandbox/agent/logs/ --add-dir "${GITHUB_WORKSPACE}" --disable-builtin-mcps --allow-tool '\''shell(cat)'\'' --allow-tool '\''shell(grep)'\'' --allow-tool '\''shell(head)'\'' --allow-tool '\''shell(jq)'\'' --allow-tool '\''shell(ls)'\'' --allow-tool '\''shell(tail)'\'' --allow-tool '\''shell(wc)'\'' --prompt "$(cat /tmp/gh-aw/aw-prompts/prompt.txt)"' 2>&1 | tee -a /tmp/gh-aw/threat-detection/detection.log + env: + COPILOT_AGENT_RUNNER_TYPE: STANDALONE + COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }} + COPILOT_MODEL: ${{ vars.GH_AW_MODEL_DETECTION_COPILOT || '' }} + GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt + GITHUB_API_URL: ${{ github.api_url }} + GITHUB_HEAD_REF: ${{ github.head_ref }} + GITHUB_REF_NAME: ${{ github.ref_name }} + GITHUB_SERVER_URL: ${{ github.server_url }} + GITHUB_STEP_SUMMARY: /tmp/gh-aw/agent-step-summary.md + GITHUB_WORKSPACE: ${{ github.workspace }} + XDG_CONFIG_HOME: /home/runner + - name: Parse threat detection results + id: parse_detection_results + if: always() && steps.detection_guard.outputs.run_detection == 'true' + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + with: + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { main } = require('/opt/gh-aw/actions/parse_threat_detection_results.cjs'); + await main(); + - name: Upload threat detection log + if: always() && steps.detection_guard.outputs.run_detection == 'true' + uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7 + with: + name: threat-detection.log + path: /tmp/gh-aw/threat-detection/detection.log + if-no-files-found: ignore + - name: Set detection conclusion + id: detection_conclusion + if: always() + env: + RUN_DETECTION: ${{ steps.detection_guard.outputs.run_detection }} + DETECTION_SUCCESS: ${{ steps.parse_detection_results.outputs.success }} + run: | + if [[ "$RUN_DETECTION" != "true" ]]; then + echo "conclusion=skipped" >> "$GITHUB_OUTPUT" + echo "success=true" >> "$GITHUB_OUTPUT" + echo "Detection was not needed, marking as skipped" + elif [[ "$DETECTION_SUCCESS" == "true" ]]; then + echo "conclusion=success" >> "$GITHUB_OUTPUT" + echo "success=true" >> "$GITHUB_OUTPUT" + echo "Detection passed successfully" + else + echo "conclusion=failure" >> "$GITHUB_OUTPUT" + echo "success=false" >> "$GITHUB_OUTPUT" + echo "Detection found issues" + fi + + conclusion: + needs: + - activation + - agent + - safe_outputs + if: (always()) && (needs.agent.result != 'skipped') + runs-on: ubuntu-slim + permissions: + contents: read + discussions: write + issues: write + concurrency: + group: "gh-aw-conclusion-weekly-report" + cancel-in-progress: false + outputs: + noop_message: ${{ steps.noop.outputs.noop_message }} + tools_reported: ${{ steps.missing_tool.outputs.tools_reported }} + total_count: ${{ steps.missing_tool.outputs.total_count }} + steps: + - name: Setup Scripts + uses: github/gh-aw/actions/setup@046e81c42fe2a9d91f47596660fcc69f48f5c70a # v0.56.0 + with: + destination: /opt/gh-aw/actions + - name: Download agent output artifact + id: download-agent-output + continue-on-error: true + uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8 + with: + name: agent-output + path: /tmp/gh-aw/safeoutputs/ + - name: Setup agent output environment variable + if: steps.download-agent-output.outcome == 'success' + run: | + mkdir -p /tmp/gh-aw/safeoutputs/ + find "/tmp/gh-aw/safeoutputs/" -type f -print + echo "GH_AW_AGENT_OUTPUT=/tmp/gh-aw/safeoutputs/agent_output.json" >> "$GITHUB_ENV" + - name: Process No-Op Messages + id: noop + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + env: + GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }} + GH_AW_NOOP_MAX: "1" + GH_AW_WORKFLOW_NAME: "Weekly Repository Report" + with: + github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { main } = require('/opt/gh-aw/actions/noop.cjs'); + await main(); + - name: Record Missing Tool + id: missing_tool + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + env: + GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }} + GH_AW_WORKFLOW_NAME: "Weekly Repository Report" + with: + github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { main } = require('/opt/gh-aw/actions/missing_tool.cjs'); + await main(); + - name: Handle Agent Failure + id: handle_agent_failure + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + env: + GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }} + GH_AW_WORKFLOW_NAME: "Weekly Repository Report" + GH_AW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }} + GH_AW_WORKFLOW_ID: "weekly-report" + GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.activation.outputs.secret_verification_result }} + GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }} + GH_AW_INFERENCE_ACCESS_ERROR: ${{ needs.agent.outputs.inference_access_error }} + GH_AW_CREATE_DISCUSSION_ERRORS: ${{ needs.safe_outputs.outputs.create_discussion_errors }} + GH_AW_CREATE_DISCUSSION_ERROR_COUNT: ${{ needs.safe_outputs.outputs.create_discussion_error_count }} + GH_AW_GROUP_REPORTS: "false" + GH_AW_TIMEOUT_MINUTES: "20" + with: + github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { main } = require('/opt/gh-aw/actions/handle_agent_failure.cjs'); + await main(); + - name: Handle No-Op Message + id: handle_noop_message + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + env: + GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }} + GH_AW_WORKFLOW_NAME: "Weekly Repository Report" + GH_AW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }} + GH_AW_NOOP_MESSAGE: ${{ steps.noop.outputs.noop_message }} + GH_AW_NOOP_REPORT_AS_ISSUE: "true" + with: + github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { main } = require('/opt/gh-aw/actions/handle_noop_message.cjs'); + await main(); + + safe_outputs: + needs: agent + if: ((!cancelled()) && (needs.agent.result != 'skipped')) && (needs.agent.outputs.detection_success == 'true') + runs-on: ubuntu-slim + permissions: + contents: read + discussions: write + issues: write + timeout-minutes: 15 + env: + GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/weekly-report" + GH_AW_ENGINE_ID: "copilot" + GH_AW_WORKFLOW_ID: "weekly-report" + GH_AW_WORKFLOW_NAME: "Weekly Repository Report" + outputs: + code_push_failure_count: ${{ steps.process_safe_outputs.outputs.code_push_failure_count }} + code_push_failure_errors: ${{ steps.process_safe_outputs.outputs.code_push_failure_errors }} + create_discussion_error_count: ${{ steps.process_safe_outputs.outputs.create_discussion_error_count }} + create_discussion_errors: ${{ steps.process_safe_outputs.outputs.create_discussion_errors }} + process_safe_outputs_processed_count: ${{ steps.process_safe_outputs.outputs.processed_count }} + process_safe_outputs_temporary_id_map: ${{ steps.process_safe_outputs.outputs.temporary_id_map }} + steps: + - name: Setup Scripts + uses: github/gh-aw/actions/setup@046e81c42fe2a9d91f47596660fcc69f48f5c70a # v0.56.0 + with: + destination: /opt/gh-aw/actions + - name: Download agent output artifact + id: download-agent-output + continue-on-error: true + uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8 + with: + name: agent-output + path: /tmp/gh-aw/safeoutputs/ + - name: Setup agent output environment variable + if: steps.download-agent-output.outcome == 'success' + run: | + mkdir -p /tmp/gh-aw/safeoutputs/ + find "/tmp/gh-aw/safeoutputs/" -type f -print + echo "GH_AW_AGENT_OUTPUT=/tmp/gh-aw/safeoutputs/agent_output.json" >> "$GITHUB_ENV" + - name: Process Safe Outputs + id: process_safe_outputs + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8 + env: + GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }} + GH_AW_ALLOWED_DOMAINS: "api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,api.snapcraft.io,archive.ubuntu.com,azure.archive.ubuntu.com,crl.geotrust.com,crl.globalsign.com,crl.identrust.com,crl.sectigo.com,crl.thawte.com,crl.usertrust.com,crl.verisign.com,crl3.digicert.com,crl4.digicert.com,crls.ssl.com,github.com,host.docker.internal,json-schema.org,json.schemastore.org,keyserver.ubuntu.com,ocsp.digicert.com,ocsp.geotrust.com,ocsp.globalsign.com,ocsp.identrust.com,ocsp.sectigo.com,ocsp.ssl.com,ocsp.thawte.com,ocsp.usertrust.com,ocsp.verisign.com,packagecloud.io,packages.cloud.google.com,packages.microsoft.com,ppa.launchpad.net,raw.githubusercontent.com,registry.npmjs.org,s.symcb.com,s.symcd.com,security.ubuntu.com,telemetry.enterprise.githubcopilot.com,ts-crl.ws.symantec.com,ts-ocsp.ws.symantec.com" + GITHUB_SERVER_URL: ${{ github.server_url }} + GITHUB_API_URL: ${{ github.api_url }} + GH_AW_SAFE_OUTPUTS_HANDLER_CONFIG: "{\"create_discussion\":{\"expires\":168,\"fallback_to_issue\":true,\"max\":1},\"missing_data\":{},\"missing_tool\":{}}" + with: + github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} + script: | + const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs'); + setupGlobals(core, github, context, exec, io); + const { main } = require('/opt/gh-aw/actions/safe_output_handler_manager.cjs'); + await main(); + - name: Upload safe output items manifest + if: always() + uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7 + with: + name: safe-output-items + path: /tmp/safe-output-items.jsonl + if-no-files-found: warn + diff --git a/.github/workflows/weekly-report.md b/.github/workflows/weekly-report.md new file mode 100644 index 000000000000..ee7ad595a089 --- /dev/null +++ b/.github/workflows/weekly-report.md @@ -0,0 +1,249 @@ +--- +name: Weekly Repository Report +description: > + Generates a weekly read-only report covering PRs, Issues, and Branch Hygiene + for the previous calendar week (Asia/Shanghai time) and posts it to GitHub Discussions. +on: + schedule: + - cron: "0 22 * * 0" +permissions: + contents: read + pull-requests: read + issues: read + discussions: read +tools: + github: + mode: remote + toolsets: [default, repos, issues, pull_requests] + lockdown: false +safe-outputs: + create-discussion: + max: 1 +--- + +# Weekly Repository Report Generator + +You are a read-only reporting agent. Your ONLY write operation is posting a single GitHub Discussion with the weekly report. You must NOT create, update, comment on, label, assign, close, reopen, merge, or otherwise modify Pull Requests, Issues, or Branches. + +## Task + +Generate a comprehensive weekly report for the **taosdata/TDengine** repository covering the **previous calendar week in Asia/Shanghai (UTC+8) time**. + +### Date Calculation + +The reporting window is: + +- Start: Last Monday 00:00:00 Asia/Shanghai (i.e., the Monday that started 7 days before today) +- End: Last Sunday 23:59:59 Asia/Shanghai + +To calculate the exact UTC date range for API queries: + +- Asia/Shanghai is UTC+8 +- Start UTC = Last Monday 00:00:00 +08:00 = Last Sunday 16:00:00 UTC (the day before) +- End UTC = Last Sunday 23:59:59 +08:00 = Last Sunday 15:59:59 UTC + +Use bash to compute the ISO 8601 date boundaries in UTC for use in API queries: + +```bash +# Compute Asia/Shanghai previous-week boundaries in UTC +python3 -c " +from datetime import datetime, timedelta, timezone + +UTC8 = timezone(timedelta(hours=8)) +now_cst = datetime.now(UTC8) +# Monday of current week in CST +current_monday_cst = now_cst - timedelta(days=now_cst.weekday()) +current_monday_cst = current_monday_cst.replace(hour=0, minute=0, second=0, microsecond=0) +# Previous week +start_cst = current_monday_cst - timedelta(weeks=1) +end_cst = current_monday_cst - timedelta(seconds=1) + +start_utc = start_cst.astimezone(timezone.utc) +end_utc = end_cst.astimezone(timezone.utc) + +start_display = start_cst.strftime('%Y-%m-%d') +end_display = end_cst.strftime('%Y-%m-%d') + +print(f'START_UTC={start_utc.strftime(\"%Y-%m-%dT%H:%M:%SZ\")}') +print(f'END_UTC={end_utc.strftime(\"%Y-%m-%dT%H:%M:%SZ\")}') +print(f'WEEK_START_DISPLAY={start_display}') +print(f'WEEK_END_DISPLAY={end_display}') +" +``` + +### Data Collection Steps + +Using GitHub tools, collect the following data. For each query, handle errors gracefully — if a request fails, note the failure and continue with partial data. + +#### 1. Pull Requests + +Query PRs in `taosdata/TDengine` that were created, merged, closed, or still open within the reporting window: + +- **Opened** during the window: `repo:taosdata/TDengine is:pr created:START..END` +- **Merged** during the window: `repo:taosdata/TDengine is:pr is:merged merged:START..END` +- **Closed without merge** (terminated) during the window: `repo:taosdata/TDengine is:pr is:closed is:unmerged closed:START..END` +- **Still open** as of now: From the PRs opened during the window (`created:START..END`), select those whose state is still `open` as of END + +For each PR, collect: + +- Number, title, author (login) +- State (open / merged / closed) +- Created date, merged date or closed date +- HTML URL +- Head branch name (source branch) + +#### 2. Issues + +Query issues in `taosdata/TDengine` within the reporting window: + +- **Created** during the window: `repo:taosdata/TDengine is:issue created:START..END` +- **Closed** during the window: `repo:taosdata/TDengine is:issue is:closed closed:START..END` +- **Still open** created during window: filter from created list where state is open + +For each issue, collect: + +- Number, title, author (login) +- State (open / closed) +- Created date, closed date (if applicable) +- Labels, milestone +- HTML URL + +#### 3. Branch Hygiene + +- **Branches list**: Retrieve all branches in `taosdata/TDengine` (use pagination as needed). Exclude any branch matching `release/*` — do not list, count, or mention them. +- For **leftover branches**: Cross-reference branches that still exist with PRs that were **closed without merge** during the window. If the PR's head branch still exists in the repository, flag it. +- For **stale branches**: Identify non-`release/*` branches with no commits for ≥ 90 days. + +### Report Format + +After collecting data, compose the report in English using the following structure. Use markdown headings, bullet lists, and tables where appropriate. All dates should be displayed in Asia/Shanghai (CST) time in the format `YYYY-MM-DD`. + +--- + +**Title**: `Weekly Report (WEEK_START_DISPLAY ~ WEEK_END_DISPLAY)` + +--- + +```markdown +# Weekly Report (WEEK_START_DISPLAY ~ WEEK_END_DISPLAY) + +## 1. Highlights + +> _Top-level summary of the week._ + +- **Merged PRs**: X PRs merged (highlight the most significant by title if any stand out) +- **New Issues**: Y issues opened; Z closed +- **Risks / Blockers**: Note any PRs with "blocker", "critical", or "bug" labels still open; note if key PRs have been open with no activity for > 5 days +- **Branch Hygiene Warning**: N leftover branch(es) from terminated PRs detected (see Section 4) + +--- + +## 2. Pull Requests + +### Summary + +| Category | Count | +|---|---| +| Opened | X | +| Merged | X | +| Closed without merge | X | +| Still open | X | + +### Opened PRs + +| # | Title | Author | Status | Created | Closed/Merged | Branch | Link | +|---|---|---|---|---|---|---|---| +| ... | ... | ... | ... | ... | ... | ... | ... | + +### Merged PRs + +_(Same table columns as above)_ + +### Closed without Merge (Terminated) + +_(Same table columns as above)_ + +### Still Open + +_(Same table columns as above — include PRs from the window still open)_ + +--- + +## 3. Issues + +### Summary + +| Category | Count | +|---|---| +| Created | X | +| Closed | X | +| Still open | X | + +### Created + +| # | Title | Author | Status | Created | Closed | Labels | Milestone | Link | +|---|---|---|---|---|---|---|---|---| +| ... | ... | ... | ... | ... | ... | ... | ... | ... | + +### Closed + +_(Same table columns as above)_ + +--- + +## 4. Branch Hygiene + +> ⚠️ This section is read-only reporting. **No cleanup actions are triggered or recommended as automated steps.** +> Branches matching `release/*` are excluded from all subsections below. + +### 4A. Leftover Branches from Terminated PRs ⚠️ Critical + +Branches that still exist in the repository but whose PR was closed without merge: + +| PR | PR Title | Branch | Last Commit | Warning | +|---|---|---|---|---| +| #N | ... | branch-name | YYYY-MM-DD | ⚠️ Uncleaned branch — recommend maintainer review | + +_(If none: "✅ No leftover branches from terminated PRs detected.")_ + +### 4B. New Branches + +_(List branches created during the reporting window if creation time is reliably available. +If not reliably determinable from the API, state: "Branch creation timestamps are not directly available via the GitHub Branches API; this subsection is skipped.")_ + +### 4C. Stale / Inactive Branches (Suggested Review) + +> This is a best-effort inventory. No automated deletion is triggered. + +Branches with no commit activity for ≥ 90 days (excluding `release/*`): + +| Branch | Last Commit Date | Days Inactive | +|---|---|---| +| ... | ... | ... | + +_(If none: "✅ No stale branches detected beyond the 90-day threshold.")_ + +--- + +## 5. Errors / Missing Data + +_(List any API call failures, rate-limit hits, or data that could not be fetched. If all data was retrieved successfully, write "✅ All data retrieved successfully.")_ +``` + +--- + +### Posting the Report + +After composing the report: + +1. Set the discussion title to: `Weekly Report (WEEK_START_DISPLAY ~ WEEK_END_DISPLAY)` +2. Post the report as a new GitHub Discussion in the repository using the `create-discussion` safe output. +3. Use the **"General"** category for the discussion (or the closest available category; do not create a new category — use whichever category exists that is most appropriate for announcements or general updates). + +### Strict Read-Only Constraints + +- Do **NOT** comment on, edit, close, label, assign, reopen, or merge any PR or Issue. +- Do **NOT** create, rename, or delete any branch. +- Do **NOT** create any new Issue. +- The only write operation you may perform is posting exactly one GitHub Discussion. +- If you encounter any limitation or error, document it in the "Errors / Missing Data" section and still post the discussion with partial data. From e0360472377193fdfcc6d00dfc89d217d4495330 Mon Sep 17 00:00:00 2001 From: Jinqing Kuang Date: Mon, 9 Mar 2026 09:12:57 +0800 Subject: [PATCH 16/18] fix: align stream trigger expr column capacity with block capacity (#34703) --- .../libs/new-stream/src/streamTriggerTask.c | 46 +++++++++++++++---- 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/source/libs/new-stream/src/streamTriggerTask.c b/source/libs/new-stream/src/streamTriggerTask.c index 7d524c584cbe..11b7bce64971 100644 --- a/source/libs/new-stream/src/streamTriggerTask.c +++ b/source/libs/new-stream/src/streamTriggerTask.c @@ -2967,10 +2967,10 @@ static int32_t stRealtimeContextCalcExpr(SSTriggerRealtimeContext *pContext, SSD pResCol->info.precision = 0; int32_t nrows = blockDataGetNumOfRows(pDataBlock); - code = colInfoDataEnsureCapacity(pResCol, nrows, false); + code = colInfoDataEnsureCapacity(pResCol, pDataBlock->info.capacity, false); QUERY_CHECK_CODE(code, lino, _end); - TAOS_MEMSET(pResCol->nullbitmap, 0, BitmapLen(nrows)); - TAOS_MEMSET(pResCol->pData, 0, nrows); + TAOS_MEMSET(pResCol->nullbitmap, 0, BitmapLen(pDataBlock->info.capacity)); + TAOS_MEMSET(pResCol->pData, 0, pDataBlock->info.capacity); uint8_t idx = 1; SNode *pNode = NULL; @@ -3006,9 +3006,24 @@ static int32_t stRealtimeContextCalcExpr(SSTriggerRealtimeContext *pContext, SSD pResCol->info.scale = pType->scale; pResCol->info.precision = pType->precision; - SScalarParam output = {.columnData = pResCol}; + if (pTmpCol == NULL) { + pTmpCol = taosMemoryCalloc(1, sizeof(SColumnInfoData)); + QUERY_CHECK_NULL(pTmpCol, code, lino, _end, terrno); + } + pTmpCol->info.type = pType->type; + pTmpCol->info.bytes = pType->bytes; + pTmpCol->info.scale = pType->scale; + pTmpCol->info.precision = pType->precision; + + SScalarParam output = {.columnData = pTmpCol}; code = scalarCalculate(pExpr, pList, &output, NULL); QUERY_CHECK_CODE(code, lino, _end); + int32_t nrows = blockDataGetNumOfRows(pDataBlock); + QUERY_CHECK_CONDITION(output.numOfRows == nrows, code, lino, _end, TSDB_CODE_INTERNAL_ERROR); + code = colInfoDataEnsureCapacity(pResCol, pDataBlock->info.capacity, false); + QUERY_CHECK_CODE(code, lino, _end); + code = colDataAssign(pResCol, pTmpCol, nrows, NULL); + QUERY_CHECK_CODE(code, lino, _end); } _end: @@ -5931,10 +5946,10 @@ static int32_t stHistoryContextCalcExpr(SSTriggerHistoryContext *pContext, SSDat pResCol->info.precision = 0; int32_t nrows = blockDataGetNumOfRows(pDataBlock); - code = colInfoDataEnsureCapacity(pResCol, nrows, false); + code = colInfoDataEnsureCapacity(pResCol, pDataBlock->info.capacity, false); QUERY_CHECK_CODE(code, lino, _end); - TAOS_MEMSET(pResCol->nullbitmap, 0, BitmapLen(nrows)); - TAOS_MEMSET(pResCol->pData, 0, nrows); + TAOS_MEMSET(pResCol->nullbitmap, 0, BitmapLen(pDataBlock->info.capacity)); + TAOS_MEMSET(pResCol->pData, 0, pDataBlock->info.capacity); uint8_t idx = 1; SNode *pNode = NULL; @@ -5970,9 +5985,24 @@ static int32_t stHistoryContextCalcExpr(SSTriggerHistoryContext *pContext, SSDat pResCol->info.scale = pType->scale; pResCol->info.precision = pType->precision; - SScalarParam output = {.columnData = pResCol}; + if (pTmpCol == NULL) { + pTmpCol = taosMemoryCalloc(1, sizeof(SColumnInfoData)); + QUERY_CHECK_NULL(pTmpCol, code, lino, _end, terrno); + } + pTmpCol->info.type = pType->type; + pTmpCol->info.bytes = pType->bytes; + pTmpCol->info.scale = pType->scale; + pTmpCol->info.precision = pType->precision; + + SScalarParam output = {.columnData = pTmpCol}; code = scalarCalculate(pExpr, pList, &output, NULL); QUERY_CHECK_CODE(code, lino, _end); + int32_t nrows = blockDataGetNumOfRows(pDataBlock); + QUERY_CHECK_CONDITION(output.numOfRows == nrows, code, lino, _end, TSDB_CODE_INTERNAL_ERROR); + code = colInfoDataEnsureCapacity(pResCol, pDataBlock->info.capacity, false); + QUERY_CHECK_CODE(code, lino, _end); + code = colDataAssign(pResCol, pTmpCol, nrows, NULL); + QUERY_CHECK_CODE(code, lino, _end); } _end: From 4837c277f9a3d4254b294129af4ca7f2f7fcdb1f Mon Sep 17 00:00:00 2001 From: Yihao Deng Date: Mon, 9 Mar 2026 09:16:06 +0800 Subject: [PATCH 17/18] fix tag file crash (#34607) --- source/libs/index/src/indexFilter.c | 12 +++++ .../15-TagIndices/test_index_tag_basic.py | 49 ++++++++++++++++++- test/ci/cases.task | 1 + 3 files changed, 61 insertions(+), 1 deletion(-) diff --git a/source/libs/index/src/indexFilter.c b/source/libs/index/src/indexFilter.c index 3ec2222b8938..dfd2cc67e8e7 100644 --- a/source/libs/index/src/indexFilter.c +++ b/source/libs/index/src/indexFilter.c @@ -435,9 +435,16 @@ static int32_t sifInitOperParams(SIFParam **params, SOperatorNode *node, SIFCtx indexError("invalid operation node, left: %p, rigth: %p", node->pLeft, node->pRight); SIF_ERR_RET(TSDB_CODE_QRY_INVALID_INPUT); } + + if (nParam == 2 && node->pRight != NULL && (nodeType(node->pRight)) != QUERY_NODE_VALUE) { + indexError("right node should be value, node:%p, type:%d", node->pRight, nodeType(node->pRight)); + SIF_ERR_RET(TSDB_CODE_QRY_INVALID_INPUT); + } + if (node->opType == OP_TYPE_JSON_GET_VALUE) { return code; } + if ((node->pLeft != NULL && nodeType(node->pLeft) == QUERY_NODE_COLUMN) && (node->pRight != NULL && nodeType(node->pRight) == QUERY_NODE_VALUE)) { SColumnNode *cn = (SColumnNode *)(node->pLeft); @@ -721,6 +728,11 @@ static int8_t sifShouldUseIndexBasedOnType(SIFParam *left, SIFParam *right) { // not compress if (left->colValType == TSDB_DATA_TYPE_FLOAT) return 0; + // Column-to-column comparison cannot use index filter (e.g., tag1=tag2) + // right->condValue is NULL when right operand is a column reference, not a value + if (right->condValue == NULL) return 0; + + if (left->colValType == TSDB_DATA_TYPE_GEOMETRY || right->colValType == TSDB_DATA_TYPE_GEOMETRY || left->colValType == TSDB_DATA_TYPE_JSON || right->colValType == TSDB_DATA_TYPE_JSON) { return 0; diff --git a/test/cases/15-TagIndices/test_index_tag_basic.py b/test/cases/15-TagIndices/test_index_tag_basic.py index 97316b82de86..7521458c2c4a 100644 --- a/test/cases/15-TagIndices/test_index_tag_basic.py +++ b/test/cases/15-TagIndices/test_index_tag_basic.py @@ -233,7 +233,7 @@ def longname_idx(self, stbname): # ------------------- 2 ---------------- # def prepareData(self): - self.dbname = 'db' + self.dbname = 'db_ts4403' self.stbname = 'st' # db tdSql.execute("create database {};".format(self.dbname)) @@ -284,6 +284,51 @@ def do_ts4403(self): # add index for multiple tags(TD-28078) tdSql.error("create index tt on {} (t2, t3);".format(self.stbname)) tdLog.debug("Verify add index for multiple tags successfully") + + def do_tag_column_comparison(self): + """Test that tag-to-tag comparison does not crash taosd + + Bug: When executing query like 'select * from st where tag1=tag2', + the index filter sifSetFltParam would crash because right->condValue is NULL. + The fix skips the index filter for column-to-column comparisons, + allowing the query to execute via fallback path without crash. + """ + tdSql.execute("create database if not exists test_tag_col;") + tdSql.execute("use test_tag_col;") + tdSql.execute("create stable st(ts timestamp, val int) tags(tag1 int, tag2 int);") + tdSql.execute("create table ct1 using st tags(1, 2);") + tdSql.execute("create table ct2 using st tags(3, 3);") + tdSql.execute("create table ct3 using st tags(5, 6);") + tdSql.execute("insert into ct1 values(now, 1);") + tdSql.execute("insert into ct2 values(now, 2);") + tdSql.execute("insert into ct3 values(now, 3);") + + # tag1=tag2 should work without crash (fallback to non-index filter path) + tdSql.query("select * from st where tag1=tag2;") + tdSql.checkRows(1) # ct2 where tag1=3, tag2=3 + tdLog.info("tag1=tag2 query works correctly (no crash)") + + # tag1tag2 should also work + tdSql.query("select * from st where tag1>tag2;") + tdSql.checkRows(0) # no matching rows + tdLog.info("tag1>tag2 query works correctly (no crash)") + # Normal tag=value queries should still work + tdSql.query("select * from st where tag1=1;") + tdSql.checkRows(1) + tdLog.info("tag1=1 query works correctly") + + tdSql.query("select * from st where tag2=3;") + tdSql.checkRows(1) + tdLog.info("tag2=3 query works correctly") + + # Cleanup + tdSql.execute("drop database test_tag_col;") + tdLog.info("Tag-to-tag comparison test passed") # @@ -304,6 +349,7 @@ def test_index_tag_basic(self): 8. Drop all tag indexes 9. Attempt to create tag index with excessively long name and verify error 10. bug TS-4403: Create/drop tag index on supertable and verify behavior + 11. Verify tag-to-tag comparison does not crash taosd Since: v3.0.0.0 @@ -334,6 +380,7 @@ def test_index_tag_basic(self): self.longname_idx(stable) self.do_ts4403() + self.do_tag_column_comparison() diff --git a/test/ci/cases.task b/test/ci/cases.task index 538f3dbab09a..ae441cd2226c 100644 --- a/test/ci/cases.task +++ b/test/ci/cases.task @@ -534,6 +534,7 @@ ,,y,.,./ci/pytest.sh pytest cases/15-TagIndices/test_index_create_drop.py ,,y,.,./ci/pytest.sh pytest cases/15-TagIndices/test_index_overflow.py ,,y,.,./ci/pytest.sh pytest cases/15-TagIndices/test_index_perf.py +,,y,.,./ci/pytest.sh pytest cases/15-TagIndices/test_index_tag_basic.py # 16-Views ,,y,.,./ci/pytest.sh pytest cases/16-Views/test_view_basic.py From ca2c419ed450f3fed1e81f020802da4736e303c0 Mon Sep 17 00:00:00 2001 From: Pan Wei <72057773+dapan1121@users.noreply.github.com> Date: Mon, 9 Mar 2026 13:41:41 +0800 Subject: [PATCH 18/18] fix: fix return code handling issue (#34713) --- source/libs/executor/src/groupcacheoperator.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/source/libs/executor/src/groupcacheoperator.c b/source/libs/executor/src/groupcacheoperator.c index 49ef2a6a4345..5e117b7d0279 100644 --- a/source/libs/executor/src/groupcacheoperator.c +++ b/source/libs/executor/src/groupcacheoperator.c @@ -1524,6 +1524,7 @@ static void resetGroupCacheBlockCache(SGcBlkCacheInfo* pCache) { } static int32_t resetGroupCacheDownstreamCtx(SOperatorInfo* pOper) { + int32_t code = 0, lino = 0; SGroupCacheOperatorInfo* pInfo = pOper->info; if (NULL == pInfo->pDownstreams) { return TSDB_CODE_SUCCESS; @@ -1539,7 +1540,7 @@ static int32_t resetGroupCacheDownstreamCtx(SOperatorInfo* pOper) { int32_t defaultVg = 0; SGcVgroupCtx vgCtx = {0}; initGcVgroupCtx(pOper, &vgCtx, pCtx->id, defaultVg, NULL); - tSimpleHashPut(pCtx->pVgTbHash, &defaultVg, sizeof(defaultVg), &vgCtx, sizeof(vgCtx)); + TAOS_CHECK_EXIT(tSimpleHashPut(pCtx->pVgTbHash, &defaultVg, sizeof(defaultVg), &vgCtx, sizeof(vgCtx))); } taosArrayClearEx(pCtx->pFreeBlock, freeGcBlockInList); @@ -1555,7 +1556,13 @@ static int32_t resetGroupCacheDownstreamCtx(SOperatorInfo* pOper) { pCtx->fetchDone = false; } - return TSDB_CODE_SUCCESS; +_exit: + + if (code) { + qError("%s failed at line %d since %s", __func__, lino, tstrerror(code)); + } + + return code; } static int32_t resetGroupCacheOperState(SOperatorInfo* pOper) { @@ -1568,7 +1575,7 @@ static int32_t resetGroupCacheOperState(SOperatorInfo* pOper) { taosHashClear(pInfo->pGrpHash); - resetGroupCacheDownstreamCtx(pOper); + TAOS_CHECK_EXIT(resetGroupCacheDownstreamCtx(pOper)); memset(pInfo->execInfo.pDownstreamBlkNum, 0, pOper->numOfDownstream * sizeof(int64_t));